%global appLoc serverName; %let compiled_apploc=/30.SASApps/3030.Projects/303001.DataController/build2/DataController; %let serverName=SASApp; %let appLoc=%sysfunc(coalescec(&appLoc,&compiled_apploc)); %let sasjs_clickmeservice=clickme; %let syscc=0; options ps=max nonotes nosgen nomprint nomlogic nosource2 nosource noquotelenmax; /* user supplied build vars */ /* user supplied build vars end */ /* system macro dependencies for build process */ %macro mf_getattrn( libds ,attr )/*/STORE SOURCE*/; %local dsid rc; %let dsid=%sysfunc(open(&libds,is)); %if &dsid = 0 %then %do; %put %str(WARN)ING: Cannot open %trim(&libds), system message below; %put %sysfunc(sysmsg()); -1 %end; %else %do; %sysfunc(attrn(&dsid,&attr)) %let rc=%sysfunc(close(&dsid)); %end; %mend mf_getattrn; %macro mf_nobs(libds )/*/STORE SOURCE*/; %mf_getattrn(&libds,NLOBS) %mend mf_nobs; %macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1) )/*/STORE SOURCE*/; %if not(%eval(%unquote(&iftrue))) %then %return; %put NOTE: /// mf_abort macro executing //; %if %length(&mac)>0 %then %put NOTE- called by &mac; %put NOTE - &msg; %abort; %mend mf_abort; /** @endcond */ %macro mf_verifymacvars( verifyVars /* list of macro variable NAMES */ ,makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */ ,mAbort=SOFT )/*/STORE SOURCE*/; %local verifyIterator verifyVar abortmsg; %do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( ))); %let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( )); %if not %symexist(&verifyvar) %then %do; %let abortmsg= Variable &verifyVar is MISSING; %goto exit_err; %end; %if %length(%trim(&&&verifyVar))=0 %then %do; %let abortmsg= Variable &verifyVar is EMPTY; %goto exit_err; %end; %if &makeupcase=YES %then %do; %let &verifyVar=%upcase(&&&verifyvar); %end; %end; %goto exit_success; %exit_err: %put &abortmsg; %mf_abort(iftrue=(&mabort ne SOFT), mac=mf_verifymacvars, msg=%str(&abortmsg) ) 0 %return; %exit_success: 1 %mend mf_verifymacvars; %macro mm_getDirectories( path= ,outds=work.mm_getDirectories ,mDebug=0 )/*/STORE SOURCE*/; %local mD; %if &mDebug=1 %then %let mD=; %else %let mD=%str(*); %&mD.put Executing mm_getDirectories.sas; %&mD.put _local_; data &outds (keep=directoryuri name directoryname directorydesc ); length directoryuri name directoryname directorydesc $256; call missing(of _all_); __i+1; %if %length(&path)=0 %then %do; do while (metadata_getnobj("omsobj:Directory?@Id contains '.'",__i,directoryuri)>0); %end; %else %do; do while( metadata_getnobj("omsobj:Directory?@DirectoryName='&path'",__i,directoryuri) >0 ); %end; __rc1=metadata_getattr(directoryuri, "Name", name); __rc2=metadata_getattr(directoryuri, "DirectoryName", directoryname); __rc3=metadata_getattr(directoryuri, "Desc", directorydesc); &mD.putlog (_all_) (=); drop __:; __i+1; if sum(of __rc1-__rc3)=0 then output; end; run; %mend mm_getDirectories; %macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767); %local rc fname; %if &prefix=0 %then %do; %let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl)); %if &rc %then %put %sysfunc(sysmsg()); &fname %end; %else %do; %local x len; %let len=%eval(8-%length(&prefix)); %let x=0; %do x=0 %to &maxtries; %let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len); %if %sysfunc(fileref(&fname)) > 0 %then %do; %let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl)); %if &rc %then %put %sysfunc(sysmsg()); &fname %return; %end; %end; %put unable to find available fileref after &maxtries attempts; %end; %mend mf_getuniquefileref; %macro mm_updatestpsourcecode(stp= ,stpcode= ,minify=NO ,mdebug=0 ); /* first, check if STP exists */ %local tsuri; %let tsuri=stopifempty ; data _null_; format type uri tsuri value $200.; call missing (of _all_); path="&stp.(StoredProcess)"; /* first, find the STP ID */ if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do; /* get sourcecode */ cnt=1; do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0); rc=metadata_getattr(tsuri,"Name",value); %if &mdebug=1 %then %do; put tsuri= value=; %end; if value="SourceCode" then do; /* found it! */ rc=metadata_getattr(tsuri,"Id",value); call symputx('tsuri',value,'l'); stop; end; cnt+1; end; end; else put (_all_)(=); run; %if &tsuri=stopifempty %then %do; %put %str(WARN)ING: &stp.(StoredProcess) not found!; %return; %end; %if %length(&stpcode)<2 %then %do; %put %str(WARN)ING: No SAS code supplied!!; %return; %end; %local frefin frefout; %let frefin=%mf_getuniquefileref(); %let frefout=%mf_getuniquefileref(); /* write header XML */ data _null_; file &frefin; put "$METAREPOSITORY ','>'); outstr=tranwrd(outstr,"'",'''); outstr=tranwrd(outstr,'"','"'); outstr=tranwrd(outstr,'0A'x,' '); outstr=tranwrd(outstr,'0D'x,' '); outstr=tranwrd(outstr,'$','$'); %if &minify=YES %then %do; outstr=cats(outstr); if outstr ne ''; if not (outstr=:'/*' and subpad(left(reverse(outstr)),1,2)='/*'); %end; outstr=trim(outstr); put outstr ' '; run; %end; data _null_; file &frefin mod; put "'>SAS268435456 "; run; proc metadata in= &frefin out=&frefout; run; %if &mdebug=1 %then %do; /* write the response to the log for debugging */ data _null_; infile &frefout lrecl=32767; input; put _infile_; run; %end; %else %do; filename &frefin clear; filename &frefout clear; %end; %mend mm_updatestpsourcecode; %macro mm_getrepos( outds=work.mm_getrepos )/*/STORE SOURCE*/; * use a temporary fileref to hold the response; filename response temp; /* get list of libraries */ proc metadata in= "1" out=response; run; /* write the response to the log for debugging */ /* data _null_; infile response lrecl=1048576; input; put _infile_; run; */ /* create an XML map to read the response */ filename sxlemap temp; data _null_; file sxlemap; put ''; put "/GetRepositories/Repositories/Repository"; put ""; put ''; put "/GetRepositories/Repositories/Repository/@Id"; put ""; put "characterstring200"; put ''; put ''; put "/GetRepositories/Repositories/Repository/@Name"; put ""; put "characterstring200"; put ''; put ''; put "/GetRepositories/Repositories/Repository/@Desc"; put ""; put "characterstring200"; put ''; put ''; put ""; put "/GetRepositories/Repositories/Repository/@DefaultNS"; put "characterstring200"; put ''; put ''; put ""; put "/GetRepositories/Repositories/Repository/@RepositoryType"; put "characterstring20"; put ''; put ''; put ""; put "/GetRepositories/Repositories/Repository/@RepositoryFormat"; put "characterstring10"; put ''; put ''; put ""; put "/GetRepositories/Repositories/Repository/@Access"; put "characterstring16"; put ''; put ''; put ""; put "/GetRepositories/Repositories/Repository/@CurrentAccess"; put "characterstring16"; put ''; put ''; put ""; put "/GetRepositories/Repositories/Repository/@PauseState"; put "characterstring16"; put ''; put ''; put "/GetRepositories/Repositories/Repository/@Path"; put ""; put "characterstring256"; put ''; put ''; put "/GetRepositories/Repositories/Repository/@Engine"; put ""; put "characterstring8"; put ''; put ''; put "/GetRepositories/Repositories/Repository/@Options"; put ""; put "characterstring32"; put ''; put ''; put ""; put "/GetRepositories/Repositories/Repository/@MetadataCreated"; put "characterstring24"; put ''; put ''; put ""; put "/GetRepositories/Repositories/Repository/@MetadataUpdated"; put "characterstring24"; put ''; put '
'; run; libname _XML_ xml xmlfileref=response xmlmap=sxlemap; proc sort data= _XML_.SASRepos out=&outds; by name; run; /* clear references */ filename sxlemap clear; filename response clear; libname _XML_ clear; %mend mm_getrepos; %macro mm_getservercontexts( outds=work.mm_getrepos )/*/STORE SOURCE*/; %local repo repocnt x; %let repo=%sysfunc(getoption(metarepository)); /* first get list of available repos */ %mm_getrepos(outds=work.repos) %let repocnt=0; data _null_; set repos; where repositorytype in('CUSTOM','FOUNDATION'); keep id name ; call symputx(cats('repo',_n_),name,'l'); call symputx('repocnt',_n_,'l'); run; filename __mc1 temp; filename __mc2 temp; data &outds; length serveruri servername $200; call missing (of _all_); stop; run; %do x=1 %to &repocnt; options metarepository=&&repo&x; proc metadata in= "$METAREPOSITORY ServerContextSAS 0" out=__mc1; run; /* data _null_; infile __mc1 lrecl=1048576; input; put _infile_; run; */ data _null_; file __mc2; put ''; put "/GetMetadataObjects/Objects/ServerContext"; put ""; put ''; put "/GetMetadataObjects/Objects/ServerContext/@Id"; put ""; put "characterstring200"; put ''; put ''; put "/GetMetadataObjects/Objects/ServerContext/@Name"; put ""; put "characterstring200"; put ''; put '
'; run; libname __mc3 xml xmlfileref=__mc1 xmlmap=__mc2; proc append base=&outds data=__mc3.SASContexts;run; libname __mc3 clear; %end; options metarepository=&repo; filename __mc1 clear; filename __mc2 clear; %mend mm_getservercontexts; %macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1) , errds=work.mp_abort_errds , mode=REGULAR )/*/STORE SOURCE*/; %global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode; %local fref fid i; %if not(%eval(%unquote(&iftrue))) %then %return; %put NOTE: /// mp_abort macro executing //; %if %length(&mac)>0 %then %put NOTE- called by &mac; %put NOTE - &msg; %if %symexist(_SYSINCLUDEFILEDEVICE) /* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */ and %superq(SYSPROCESSNAME) ne %str(Compute Server) %then %do; %if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do; data &errds; iftrue='1=1'; length mac $100 msg $5000; mac=symget('mac'); msg=symget('msg'); run; data _null_; abort cancel FILE; run; %return; %end; %end; /* Web App Context */ %if %symexist(_PROGRAM) or %superq(SYSPROCESSNAME) = %str(Compute Server) or &mode=INCLUDE %then %do; options obs=max replace mprint; %if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do; options nosyntaxcheck; %end; %if &mode=INCLUDE %then %do; %if %sysfunc(exist(&errds))=1 %then %do; data _null_; set &errds; call symputx('iftrue',iftrue,'l'); call symputx('mac',mac,'l'); call symputx('msg',msg,'l'); putlog (_all_)(=); run; %if (&iftrue)=0 %then %return; %end; %else %do; %put &sysmacroname: No include errors found; %return; %end; %end; /* extract log errs / warns, if exist */ %local logloc logline; %global logmsg; /* capture global messages */ %if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG; %else %let logloc=%qsysfunc(getoption(LOG)); proc printto log=log;run; %let logline=0; %if %length(&logloc)>0 %then %do; data _null_; infile &logloc lrecl=5000; input; putlog _infile_; i=1; retain logonce 0; if ( _infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR" ) and logonce=0 then do; call symputx('logline',_n_); logonce+1; end; run; /* capture log including lines BEFORE the err */ %if &logline>0 %then %do; data _null_; infile &logloc lrecl=5000; input; i=1; stoploop=0; if _n_ ge &logline-15 and stoploop=0 then do until (i>22); call symputx('logmsg',catx('\n',symget('logmsg'),_infile_)); input; i+1; stoploop=1; end; if stoploop=1 then stop; run; %end; %end; %if %symexist(SYS_JES_JOB_URI) %then %do; /* setup webout for Viya */ options nobomfile; %if "X&SYS_JES_JOB_URI.X"="XX" %then %do; filename _webout temp lrecl=999999 mod; %end; %else %do; filename _webout filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json" lrecl=999999 mod; %end; %end; %else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do; options nobomfile; /* set up http header for SASjs Server */ %let fid=%sysfunc(fopen(&fref,A)); %if &fid=0 %then %do; %put %str(ERR)OR: %sysfunc(sysmsg()); %return; %end; %let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json))); %let rc=%sysfunc(fwrite(&fid)); %let rc=%sysfunc(fclose(&fid)); %let rc=%sysfunc(filename(&fref)); %end; /* send response in SASjs JSON format */ data _null_; file _webout mod lrecl=32000 encoding='utf-8'; length msg syswarningtext syserrortext $32767 mode $10 ; sasdatetime=datetime(); msg=symget('msg'); %if &logline>0 %then %do; msg=cats(msg,'\n\nLog Extract:\n',symget('logmsg')); %end; /* escape the escapes */ msg=tranwrd(msg,'\','\\'); /* escape the quotes */ msg=tranwrd(msg,'"','\"'); /* ditch the CRLFs as chrome complains */ msg=compress(msg,,'kw'); /* quote without quoting the quotes (which are escaped instead) */ msg=cats('"',msg,'"'); if symexist('_debug') then debug=quote(trim(symget('_debug'))); else debug='""'; if symget('sasjsprocessmode')='Stored Program' then mode='SASJS'; if mode ne 'SASJS' then put '>>weboutBEGIN<<'; put '{"SYSDATE" : "' "&SYSDATE" '"'; put ',"SYSTIME" : "' "&SYSTIME" '"'; put ',"sasjsAbort" : [{'; put ' "MSG":' msg ; put ' ,"MAC": "' "&mac" '"}]'; put ",""SYSUSERID"" : ""&sysuserid"" "; put ',"_DEBUG":' debug ; if symexist('_metauser') then do; _METAUSER=quote(trim(symget('_METAUSER'))); put ",""_METAUSER"": " _METAUSER; _METAPERSON=quote(trim(symget('_METAPERSON'))); put ',"_METAPERSON": ' _METAPERSON; end; if symexist('SYS_JES_JOB_URI') then do; SYS_JES_JOB_URI=quote(trim(symget('SYS_JES_JOB_URI'))); put ',"SYS_JES_JOB_URI": ' SYS_JES_JOB_URI; end; _PROGRAM=quote(trim(resolve(symget('_PROGRAM')))); put ',"_PROGRAM" : ' _PROGRAM ; put ",""SYSCC"" : ""&syscc"" "; syserrortext=cats('"',tranwrd(symget('syserrortext'),'"','\"'),'"'); put ",""SYSERRORTEXT"" : " syserrortext; put ",""SYSHOSTNAME"" : ""&syshostname"" "; put ",""SYSJOBID"" : ""&sysjobid"" "; put ",""SYSSCPL"" : ""&sysscpl"" "; put ",""SYSSITE"" : ""&syssite"" "; sysvlong=quote(trim(symget('sysvlong'))); put ',"SYSVLONG" : ' sysvlong; syswarningtext=cats('"',tranwrd(symget('syswarningtext'),'"','\"'),'"'); put ",""SYSWARNINGTEXT"" : " syswarningtext; put ',"END_DTTM" : "' "%sysfunc(datetime(),E8601DT26.6)" '" '; put "}" ; if mode ne 'SASJS' then put '>>weboutEND<<'; run; %put _all_; %if "&sysprocessmode " = "SAS Stored Process Server " %then %do; data _null_; putlog 'stpsrvset program err and syscc'; rc=stpsrvset('program error', 0); call symputx("syscc",0,"g"); run; %if &sysscp=WIN and 1=0 /* deprecating this logic until we figure out a consistent abort */ and "%substr(%str(&sysvlong ),1,8)"="9.04.01M" and "%substr(%str(&sysvlong ),9,1)">"5" %then %do; /* skip approach (below) does not work in windows m6+ envs */ endsas; %end; %else %do; /** * endsas kills 9.4m3 deployments by orphaning multibridges. * Abort variants are ungraceful (non zero return code) * This approach lets SAS run silently until the end :-) * Caution - fails when called within a %include within a macro * Use mp_include() to handle this. */ filename skip temp; data _null_; file skip; put '%macro skip();'; comment '%mend skip; -> fix lint '; put '%macro skippy();'; comment '%mend skippy; -> fix lint '; run; %inc skip; %end; %end; %else %if "&sysprocessmode " = "SAS Compute Server " %then %do; /* endsas kills the session making it harder to fetch results */ data _null_; syswarningtext=symget('syswarningtext'); syserrortext=symget('syserrortext'); abort_msg=symget('msg'); syscc=symget('syscc'); sysuserid=symget('sysuserid'); iftrue=symget('iftrue'); put (_all_)(/=); call symputx('syscc',0); abort cancel nolist; run; %end; %else %do; %abort cancel; %end; %end; %else %do; %put _all_; %abort cancel; %end; %mend mp_abort; /** @endcond */ %macro mf_isblank(param )/*/STORE SOURCE*/; %sysevalf(%superq(param)=,boolean) %mend mf_isblank; %macro mp_dropmembers( list /* space separated list of datasets / views */ ,libref=WORK /* can only drop from a single library at a time */ ,iftrue=%str(1=1) )/*/STORE SOURCE*/; %if not(%eval(%unquote(&iftrue))) %then %return; %if %mf_isblank(&list) %then %do; %put NOTE: nothing to drop!; %return; %end; proc datasets lib=&libref nolist; delete &list; delete &list /mtype=view; run; %mend mp_dropmembers; %macro mm_createstp( stpname=Macro People STP ,stpdesc=This stp was created automatically by the mm_createstp macro ,filename=mm_createstp.sas ,directory=SASEnvironment/SASCode ,tree=/User Folders/sasdemo ,package=false ,streaming=true ,outds=work.mm_createstp ,mDebug=0 ,server=SASApp ,stptype=1 ,minify=NO ,frefin=mm_in ,frefout=mm_out )/*/STORE SOURCE*/; %local mD; %if &mDebug=1 %then %let mD=; %else %let mD=%str(*); %&mD.put Executing mm_CreateSTP.sas; %&mD.put _local_; %mp_abort( iftrue=(%mf_verifymacvars(stpname filename directory tree)=0) ,mac=&sysmacroname ,msg=%str(Empty inputs: stpname filename directory tree) ) %mp_dropmembers(%scan(&outds,2,.)) /** * check tree exists */ data _null_; length type uri $256; rc=metadata_pathobj("","&tree","Folder",type,uri); call symputx('foldertype',type,'l'); call symputx('treeuri',uri,'l'); run; %if &foldertype ne Tree %then %do; %put %str(WARN)ING: Tree &tree does not exist!; %return; %end; /** * Check STP does not exist already */ %local cmtype; data _null_; length type uri $256; rc=metadata_pathobj("","&tree/&stpname",'StoredProcess',type,uri); call symputx('cmtype',type,'l'); call symputx('stpuri',uri,'l'); run; %if &cmtype = ClassifierMap %then %do; %put %str(WARN)ING: Stored Process &stpname already exists in &tree!; %return; %end; /** * Check that the physical file exists */ %if %sysfunc(fileexist(&directory/&filename)) ne 1 %then %do; %put %str(WARN)ING: FILE *&directory/&filename* NOT FOUND!; %return; %end; %if &stptype=1 %then %do; /* type 1 STP - where code is stored on filesystem */ %if %sysevalf(&sysver lt 9.2) %then %do; %put %str(WARN)ING: Version 9.2 or later required; %return; %end; /* check directory object (where 9.2 source code reference is stored) */ data _null_; length id $20 dirtype $256; rc=metadata_resolve("&directory",dirtype,id); call symputx('checkdirtype',dirtype,'l'); run; %if &checkdirtype ne Directory %then %do; %mm_getdirectories(path=&directory,outds=&outds ,mDebug=&mDebug) %if %mf_nobs(&outds)=0 or %sysfunc(exist(&outds))=0 %then %do; %put %str(WARN)ING: The directory object does not exist for &directory; %return; %end; %end; %else %do; data &outds; directoryuri="&directory"; run; %end; data &outds (keep=stpuri prompturi fileuri texturi); length stpuri prompturi fileuri texturi serveruri $256 ; if _n_=1 then call missing (of _all_); set &outds; /* final checks on uris */ length id $20 type $256; __rc=metadata_resolve("&treeuri",type,id); if type ne 'Tree' then do; putlog "%str(WARN)ING: Invalid tree URI: &treeuri"; stopme=1; end; __rc=metadata_resolve(directoryuri,type,id); if type ne 'Directory' then do; putlog "%str(WARN)ING: Invalid directory URI: " directoryuri; stopme=1; end; /* get server info */ __rc=metadata_resolve("&server",type,serveruri); if type ne 'LogicalServer' then do; __rc=metadata_getnobj("omsobj:LogicalServer?@Name='&server'",1,serveruri); if serveruri='' then do; putlog "%str(WARN)ING: Invalid server: &server"; stopme=1; end; end; if stopme=1 then do; putlog (_all_)(=); stop; end; /* create empty prompt */ rc1=METADATA_NEWOBJ('PromptGroup',prompturi,'Parameters'); rc2=METADATA_SETATTR(prompturi, 'UsageVersion', '1000000'); rc3=METADATA_SETATTR(prompturi, 'GroupType','2'); rc4=METADATA_SETATTR(prompturi, 'Name','Parameters'); rc5=METADATA_SETATTR(prompturi, 'PublicType','Embedded:PromptGroup'); GroupInfo= ""; rc6 = METADATA_SETATTR(prompturi, 'GroupInfo',groupinfo); if sum(of rc1-rc6) ne 0 then do; putlog "%str(WARN)ING: Issue creating prompt."; if prompturi ne . then do; putlog ' Removing orphan: ' prompturi; rc = METADATA_DELOBJ(prompturi); put rc=; end; stop; end; /* create a file uri */ rc7=METADATA_NEWOBJ('File',fileuri,'SP Source File'); rc8=METADATA_SETATTR(fileuri, 'FileName',"&filename"); rc9=METADATA_SETATTR(fileuri, 'IsARelativeName','1'); rc10=METADATA_SETASSN(fileuri, 'Directories','MODIFY',directoryuri); if sum(of rc7-rc10) ne 0 then do; putlog "%str(WARN)ING: Issue creating file."; if fileuri ne . then do; putlog ' Removing orphans:' prompturi fileuri; rc = METADATA_DELOBJ(prompturi); rc = METADATA_DELOBJ(fileuri); put (_all_)(=); end; stop; end; /* create a TextStore object */ rc11= METADATA_NEWOBJ('TextStore',texturi,'Stored Process'); rc12= METADATA_SETATTR(texturi, 'TextRole','StoredProcessConfiguration'); rc13= METADATA_SETATTR(texturi, 'TextType','XML'); storedtext='' !!"" !!""; rc14= METADATA_SETATTR(texturi, 'StoredText',storedtext); if sum(of rc11-rc14) ne 0 then do; putlog "%str(WARN)ING: Issue creating TextStore."; if texturi ne . then do; putlog ' Removing orphans: ' prompturi fileuri texturi; rc = METADATA_DELOBJ(prompturi); rc = METADATA_DELOBJ(fileuri); rc = METADATA_DELOBJ(texturi); put (_all_)(=); end; stop; end; /* create meta obj */ rc15= METADATA_NEWOBJ('ClassifierMap',stpuri,"&stpname"); rc16= METADATA_SETASSN(stpuri, 'Trees','MODIFY',treeuri); rc17= METADATA_SETASSN(stpuri, 'ComputeLocations','MODIFY',serveruri); rc18= METADATA_SETASSN(stpuri, 'SourceCode','MODIFY',fileuri); rc19= METADATA_SETASSN(stpuri, 'Prompts','MODIFY',prompturi); rc20= METADATA_SETASSN(stpuri, 'Notes','MODIFY',texturi); rc21= METADATA_SETATTR(stpuri, 'PublicType', 'StoredProcess'); rc22= METADATA_SETATTR(stpuri, 'TransformRole', 'StoredProcess'); rc23= METADATA_SETATTR(stpuri, 'UsageVersion', '1000000'); rc24= METADATA_SETATTR(stpuri, 'Desc', "&stpdesc"); /* tidy up if err */ if sum(of rc15-rc24) ne 0 then do; putlog "%str(WARN)ING: Issue creating STP."; if stpuri ne . then do; putlog ' Removing orphans: ' prompturi fileuri texturi stpuri; rc = METADATA_DELOBJ(prompturi); rc = METADATA_DELOBJ(fileuri); rc = METADATA_DELOBJ(texturi); rc = METADATA_DELOBJ(stpuri); put (_all_)(=); end; end; else do; fullpath=cats('_program=',treepath,"/&stpname"); putlog "NOTE: Stored Process Created!"; putlog "NOTE- "; putlog "NOTE-"; putlog "NOTE-" fullpath; putlog "NOTE- "; putlog "NOTE-"; end; output; stop; run; %end; %else %if &stptype=2 %then %do; /* type 2 stp - code is stored in metadata */ %if %sysevalf(&sysver lt 9.3) %then %do; %put %str(WARN)ING: SAS version 9.3 or later required to create type2 STPs; %return; %end; /* check we have the correct ServerContext */ %mm_getservercontexts(outds=contexts) %local serveruri; %let serveruri=NOTFOUND; data _null_; set contexts; where upcase(servername)="%upcase(&server)"; call symputx('serveruri',serveruri); run; %if &serveruri=NOTFOUND %then %do; %put %str(WARN)ING: ServerContext *&server* not found!; %return; %end; /** * First, create a Hello World type 2 stored process */ filename &frefin temp; data _null_; file &frefin; treeuri=quote(symget('treeuri')); serveruri=quote(symget('serveruri')); stpdesc=quote(symget('stpdesc')); stpname=quote(symget('stpname')); put "$METAREPOSITORY "/ ''/ " "/ " "/ " "/ " "/ ' '/ ' ' / " "/ " "/ ' '/ " "/ ""/ "SAS"/ "268435456"; run; filename &frefout temp; proc metadata in= &frefin out=&frefout ; run; %if &mdebug=1 %then %do; /* write the response to the log for debugging */ data _null_; infile &frefout lrecl=1048576; input; put _infile_; run; %end; /** * Next, add the source code */ %mm_updatestpsourcecode(stp=&tree/&stpname ,stpcode="&directory/&filename" ,mdebug=&mdebug ,minify=&minify) %end; %else %do; %put %str(WARN)ING: STPTYPE=*&stptype* not recognised!; %end; %mend mm_createstp; %macro mf_getuser( )/*/STORE SOURCE*/; %local user; %if %symexist(_sasjs_username) %then %let user=&_sasjs_username; %else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do; %let user=&SYS_COMPUTE_SESSION_OWNER; %end; %else %if %symexist(_metaperson) %then %do; %if %length(&_metaperson)=0 %then %let user=&sysuserid; /* sometimes SAS will add @domain extension - remove for consistency */ /* but be sure to quote in case of usernames with commas */ %else %let user=%unquote(%scan(%quote(&_metaperson),1,@)); %end; %else %let user=&sysuserid; %quote(&user) %mend mf_getuser; %macro mm_createfolder(path=,mDebug=0); %put &sysmacroname: execution started for &path; %local dbg errorcheck; %if &mDebug=0 %then %let dbg=*; %local parentFolderObjId child errorcheck paths; %let paths=0; %let errorcheck=1; %if &syscc ge 4 %then %do; %put SYSCC=&syscc - this macro requires a clean session; %return; %end; data _null_; length objId parentId objType parent child $200 folderPath $1000; call missing (of _all_); folderPath = "%trim(&path)"; * remove any trailing slash ; if ( substr(folderPath,length(folderPath),1) = '/' ) then folderPath=substr(folderPath,1,length(folderPath)-1); * name must not be blank; if ( folderPath = '' ) then do; put "%str(ERR)OR: &sysmacroname PATH parameter value must be non-blank"; end; * must have a starting slash ; if ( substr(folderPath,1,1) ne '/' ) then do; put "%str(ERR)OR: &sysmacroname PATH param value must have starting slash"; stop; end; * check if folder already exists ; rc=metadata_pathobj('',cats(folderPath,"(Folder)"),"",objType,objId); if rc ge 1 then do; put "NOTE: Folder " folderPath " already exists!"; stop; end; * do not create a root (one level) folder ; if countc(folderPath,'/')=1 then do; put "%str(ERR)OR: &sysmacroname will not create a new ROOT folder"; stop; end; * check that root folder exists ; root=cats('/',scan(folderpath,1,'/'),"(Folder)"); if metadata_pathobj('',root,"",objType,parentId)<1 then do; put "%str(ERR)OR: " root " does not exist!"; stop; end; * check that parent folder exists ; child=scan(folderPath,-1,'/'); parent=substr(folderpath,1,length(folderpath)-length(child)-1); rc=metadata_pathobj('',cats(parent,"(Folder)"),"",objType,parentId); if rc<1 then do; putlog 'The following folders will be created:'; /* folder does not exist - so start from top and work down */ length newpath $1000; paths=0; do x=2 to countw(folderpath,'/'); newpath=''; do i=1 to x; newpath=cats(newpath,'/',scan(folderpath,i,'/')); end; rc=metadata_pathobj('',cats(newpath,"(Folder)"),"",objType,parentId); if rc<1 then do; paths+1; call symputx(cats('path',paths),newpath); putlog newpath; end; call symputx('paths',paths); end; end; else putlog "parent " parent " exists"; call symputx('parentFolderObjId',parentId,'l'); call symputx('child',child,'l'); call symputx('errorcheck',0,'l'); &dbg put (_all_)(=); run; %if &errorcheck=1 or &syscc ge 4 %then %return; %if &paths>0 %then %do x=1 %to &paths; %put executing recursive call for &&path&x; %mm_createfolder(path=&&path&x) %end; %else %do; filename __newdir temp; options noquotelenmax; %local inmeta; %put creating: &path; %let inmeta=$METAREPOSITORY SAS268435456 ; proc metadata in="&inmeta" out=__newdir verbose; run ; /* check it was successful */ data _null_; length objId parentId objType parent child $200 ; call missing (of _all_); rc=metadata_pathobj('',cats("&path","(Folder)"),"",objType,objId); if rc ge 1 then do; putlog "SUCCCESS! &path created."; end; else do; putlog "%str(ERR)OR: unsuccessful attempt to create &path"; call symputx('syscc',8); end; run; /* write the response to the log for debugging */ %if &mDebug ne 0 %then %do; data _null_; infile __newdir lrecl=32767; input; put _infile_; run; %end; filename __newdir clear; %end; %put &sysmacroname: execution finished for &path; %mend mm_createfolder; %macro mm_deletestp( target= )/*/STORE SOURCE*/; /** * Check STP does exist */ %local cmtype; data _null_; length type uri $256; rc=metadata_pathobj("","&target",'StoredProcess',type,uri); call symputx('cmtype',type,'l'); call symputx('stpuri',uri,'l'); run; %if &cmtype ne ClassifierMap %then %do; %put NOTE: No Stored Process found at ⌖ %return; %end; filename __in temp lrecl=10000; filename __out temp lrecl=10000; data _null_ ; file __in ; put ""; put "SAS268436480"; put ""; run ; proc metadata in=__in out=__out verbose;run; /* list the result */ data _null_;infile __out; input; list; run; filename __in clear; filename __out clear; /** * Check deletion */ %local isgone; data _null_; length type uri $256; call missing (of _all_); rc=metadata_pathobj("","&target",'Note',type,uri); call symputx('isgone',type,'l'); run; %if &isgone = ClassifierMap %then %do; %put %str(ERR)OR: STP not deleted from ⌖ %let syscc=4; %return; %end; %mend mm_deletestp; /* system macro dependencies for build process end*/ /* system macros for build process */ %macro mm_createwebservice(path= ,name=initService ,precode= ,code=ft15f001 ,desc=This stp was created automagically by the mm_createwebservice macro ,mDebug=0 ,server=SASApp ,replace=YES ,adapter=sasjs )/*/STORE SOURCE*/; %if &syscc ge 4 %then %do; %put &=syscc - &sysmacroname will not execute in this state; %return; %end; %local mD; %if &mDebug=1 %then %let mD=; %else %let mD=%str(*); %&mD.put Executing mm_createwebservice.sas; %&mD.put _local_; * remove any trailing slash ; %if "%substr(&path,%length(&path),1)" = "/" %then %let path=%substr(&path,1,%length(&path)-1); /** * Add webout macro * These put statements are auto generated - to change the macro, change the * source (mm_webout) and run `build.py` */ filename sasjs temp; data _null_; file sasjs lrecl=3000 ; put "/* Created on %sysfunc(datetime(),datetime19.) by %mf_getuser() */"; /* WEBOUT BEGIN */ put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y '; put ' ,engine=DATASTEP '; put ' ,missing=NULL '; put ' ,showmeta=N '; put ' ,maxobs=MAX '; put ')/*/STORE SOURCE*/; '; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval '; put ' tmpds1 tmpds2 tmpds3 tmpds4; '; put '%let numcols=0; '; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;); '; put ' '; put '%if &action=OPEN %then %do; '; put ' options nobomfile; '; put ' data _null_;file &jref encoding=''utf-8'' lrecl=200; '; put ' put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"''; '; put ' run; '; put '%end; '; put '%else %if (&action=ARR or &action=OBJ) %then %do; '; put ' /* force variable names to always be uppercase in the JSON */ '; put ' options validvarname=upcase; '; put ' /* To avoid issues with _webout on EBI - such as encoding diffs and truncation '; put ' (https://support.sas.com/kb/49/325.html) we use temporary files */ '; put ' filename _sjs1 temp lrecl=200 ; '; put ' data _null_; file _sjs1 encoding=''utf-8''; '; put ' put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":"; '; put ' run; '; put ' /* now write to _webout 1 char at a time */ '; put ' data _null_; '; put ' infile _sjs1 lrecl=1 recfm=n; '; put ' file &jref mod lrecl=1 recfm=n; '; put ' input sourcechar $char1. @@; '; put ' format sourcechar hex2.; '; put ' put sourcechar char1. @@; '; put ' run; '; put ' filename _sjs1 clear; '; put ' '; put ' /* grab col defs */ '; put ' proc contents noprint data=&ds '; put ' out=_data_(keep=name type length format formatl formatd varnum label); '; put ' run; '; put ' %let colinfo=%scan(&syslast,2,.); '; put ' proc sort data=&colinfo; '; put ' by varnum; '; put ' run; '; put ' /* move meta to mac vars */ '; put ' data &colinfo; '; put ' if _n_=1 then call symputx(''numcols'',nobs,''l''); '; put ' set &colinfo end=last nobs=nobs; '; put ' name=upcase(name); '; put ' /* fix formats */ '; put ' if type=2 or type=6 then do; '; put ' typelong=''char''; '; put ' length fmt $49.; '; put ' if format='''' then fmt=cats(''$'',length,''.''); '; put ' else if formatl=0 then fmt=cats(format,''.''); '; put ' else fmt=cats(format,formatl,''.''); '; put ' end; '; put ' else do; '; put ' typelong=''num''; '; put ' if format='''' then fmt=''best.''; '; put ' else if formatl=0 then fmt=cats(format,''.''); '; put ' else if formatd=0 then fmt=cats(format,formatl,''.''); '; put ' else fmt=cats(format,formatl,''.'',formatd); '; put ' end; '; put ' /* 32 char unique name */ '; put ' newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27); '; put ' '; put ' call symputx(cats(''name'',_n_),name,''l''); '; put ' call symputx(cats(''newname'',_n_),newname,''l''); '; put ' call symputx(cats(''length'',_n_),length,''l''); '; put ' call symputx(cats(''fmt'',_n_),fmt,''l''); '; put ' call symputx(cats(''type'',_n_),type,''l''); '; put ' call symputx(cats(''typelong'',_n_),typelong,''l''); '; put ' call symputx(cats(''label'',_n_),coalescec(label,name),''l''); '; put ' /* overwritten when fmt=Y and a custom format exists in catalog */ '; put ' if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l''); '; put ' else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l''); '; put ' run; '; put ' '; put ' %let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32); '; put ' proc sql; '; put ' select count(*) into: lastobs from &ds; '; put ' %if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs)); '; put ' '; put ' %if &engine=PROCJSON %then %do; '; put ' %if &missing=STRING %then %do; '; put ' %put &sysmacroname: Special Missings not supported in proc json.; '; put ' %put &sysmacroname: Switching to DATASTEP engine; '; put ' %goto datastep; '; put ' %end; '; put ' data &tempds; '; put ' set &ds; '; put ' &stmt_obs; '; put ' %if &fmt=N %then format _numeric_ best32.;; '; put ' /* PRETTY is necessary to avoid line truncation in large files */ '; put ' filename _sjs2 temp lrecl=131068 encoding=''utf-8''; '; put ' proc json out=_sjs2 pretty '; put ' %if &action=ARR %then nokeys ; '; put ' ;export &tempds / nosastags fmtnumeric; '; put ' run; '; put ' /* send back to webout */ '; put ' data _null_; '; put ' infile _sjs2 lrecl=1 recfm=n; '; put ' file &jref mod lrecl=1 recfm=n; '; put ' input sourcechar $char1. @@; '; put ' format sourcechar hex2.; '; put ' put sourcechar char1. @@; '; put ' run; '; put ' filename _sjs2 clear; '; put ' %end; '; put ' %else %if &engine=DATASTEP %then %do; '; put ' %datastep: '; put ' %if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1 '; put ' %then %do; '; put ' %put &sysmacroname: &ds NOT FOUND!!!; '; put ' %return; '; put ' %end; '; put ' '; put ' %if &fmt=Y %then %do; '; put ' /** '; put ' * Extract format definitions '; put ' * First, by getting library locations from dictionary.formats '; put ' * Then, by exporting the width using proc format '; put ' * Cannot use maxw from sashelp.vformat as not always populated '; put ' * Cannot use fmtinfo() as not supported in all flavours '; put ' */ '; put ' %let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32); '; put ' %let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32); '; put ' %let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32); '; put ' %let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32); '; put ' proc sql noprint; '; put ' create table &tmpds1 as '; put ' select cats(libname,''.'',memname) as FMTCAT, '; put ' FMTNAME '; put ' from dictionary.formats '; put ' where fmttype=''F'' and libname is not null '; put ' and fmtname in (select format from &colinfo where format is not null) '; put ' order by 1; '; put ' create table &tmpds2( '; put ' FMTNAME char(32), '; put ' LENGTH num '; put ' ); '; put ' %local catlist cat fmtlist i; '; put ' select distinct fmtcat into: catlist separated by '' '' from &tmpds1; '; put ' %do i=1 %to %sysfunc(countw(&catlist,%str( ))); '; put ' %let cat=%scan(&catlist,&i,%str( )); '; put ' proc sql; '; put ' select distinct fmtname into: fmtlist separated by '' '' '; put ' from &tmpds1 where fmtcat="&cat"; '; put ' proc format lib=&cat cntlout=&tmpds3(keep=fmtname length); '; put ' select &fmtlist; '; put ' run; '; put ' proc sql; '; put ' insert into &tmpds2 select distinct fmtname,length from &tmpds3; '; put ' %end; '; put ' '; put ' proc sql; '; put ' create table &tmpds4 as '; put ' select a.*, b.length as MAXW '; put ' from &colinfo a '; put ' left join &tmpds2 b '; put ' on cats(a.format)=cats(upcase(b.fmtname)) '; put ' order by a.varnum; '; put ' data _null_; '; put ' set &tmpds4; '; put ' if not missing(maxw); '; put ' call symputx( '; put ' cats(''fmtlen'',_n_), '; put ' /* vars need extra padding due to JSON escaping of special chars */ '; put ' min(32767,ceil((max(length,maxw)+10)*1.5)) '; put ' ,''l'' '; put ' ); '; put ' run; '; put ' '; put ' /* configure varlenchk - as we are explicitly shortening the variables */ '; put ' %let optval=%sysfunc(getoption(varlenchk)); '; put ' options varlenchk=NOWARN; '; put ' data _data_(compress=char); '; put ' /* shorten the new vars */ '; put ' length '; put ' %do i=1 %to &numcols; '; put ' &&name&i $&&fmtlen&i '; put ' %end; '; put ' ; '; put ' /* rename on entry */ '; put ' set &ds(rename=( '; put ' %do i=1 %to &numcols; '; put ' &&name&i=&&newname&i '; put ' %end; '; put ' )); '; put ' &stmt_obs; '; put ' '; put ' drop '; put ' %do i=1 %to &numcols; '; put ' &&newname&i '; put ' %end; '; put ' ; '; put ' %do i=1 %to &numcols; '; put ' %if &&typelong&i=num %then %do; '; put ' &&name&i=cats(put(&&newname&i,&&fmt&i)); '; put ' %end; '; put ' %else %do; '; put ' &&name&i=put(&&newname&i,&&fmt&i); '; put ' %end; '; put ' %end; '; put ' if _error_ then do; '; put ' call symputx(''syscc'',1012); '; put ' stop; '; put ' end; '; put ' run; '; put ' %let fmtds=&syslast; '; put ' options varlenchk=&optval; '; put ' %end; '; put ' '; put ' proc format; /* credit yabwon for special null removal */ '; put ' value bart (default=40) '; put ' %if &missing=NULL %then %do; '; put ' ._ - .z = null '; put ' %end; '; put ' %else %do; '; put ' ._ = [quote()] '; put ' . = null '; put ' .a - .z = [quote()] '; put ' %end; '; put ' other = [best.]; '; put ' '; put ' data &tempds; '; put ' attrib _all_ label=''''; '; put ' %do i=1 %to &numcols; '; put ' %if &&typelong&i=char or &fmt=Y %then %do; '; put ' length &&name&i $&&fmtlen&i...; '; put ' format &&name&i $&&fmtlen&i...; '; put ' %end; '; put ' %end; '; put ' %if &fmt=Y %then %do; '; put ' set &fmtds; '; put ' %end; '; put ' %else %do; '; put ' set &ds; '; put ' %end; '; put ' &stmt_obs; '; put ' format _numeric_ bart.; '; put ' %do i=1 %to &numcols; '; put ' %if &&typelong&i=char or &fmt=Y %then %do; '; put ' if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do; '; put ' &&name&i=''"''!!trim( '; put ' prxchange(''s/"/\\"/'',-1, /* double quote */ '; put ' prxchange(''s/\x0A/\n/'',-1, /* new line */ '; put ' prxchange(''s/\x0D/\r/'',-1, /* carriage return */ '; put ' prxchange(''s/\x09/\\t/'',-1, /* tab */ '; put ' prxchange(''s/\x00/\\u0000/'',-1, /* NUL */ '; put ' prxchange(''s/\x0E/\\u000E/'',-1, /* SS */ '; put ' prxchange(''s/\x0F/\\u000F/'',-1, /* SF */ '; put ' prxchange(''s/\x01/\\u0001/'',-1, /* SOH */ '; put ' prxchange(''s/\x02/\\u0002/'',-1, /* STX */ '; put ' prxchange(''s/\x10/\\u0010/'',-1, /* DLE */ '; put ' prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */ '; put ' prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */ '; put ' prxchange(''s/\\/\\\\/'',-1,&&name&i) '; put ' )))))))))))))!!''"''; '; put ' end; '; put ' else &&name&i=quote(cats(&&name&i)); '; put ' %end; '; put ' %end; '; put ' run; '; put ' '; put ' filename _sjs3 temp lrecl=131068 ; '; put ' data _null_; '; put ' file _sjs3 encoding=''utf-8''; '; put ' if _n_=1 then put "["; '; put ' set &tempds; '; put ' if _n_>1 then put "," @; put '; put ' %if &action=ARR %then "[" ; %else "{" ; '; put ' %do i=1 %to &numcols; '; put ' %if &i>1 %then "," ; '; put ' %if &action=OBJ %then """&&name&i"":" ; '; put ' "&&name&i"n /* name literal for reserved variable names */ '; put ' %end; '; put ' %if &action=ARR %then "]" ; %else "}" ; ; '; put ' '; put ' /* close out the table */ '; put ' data _null_; '; put ' file _sjs3 mod encoding=''utf-8''; '; put ' put '']''; '; put ' run; '; put ' data _null_; '; put ' infile _sjs3 lrecl=1 recfm=n; '; put ' file &jref mod lrecl=1 recfm=n; '; put ' input sourcechar $char1. @@; '; put ' format sourcechar hex2.; '; put ' put sourcechar char1. @@; '; put ' run; '; put ' filename _sjs3 clear; '; put ' %end; '; put ' '; put ' proc sql; '; put ' drop table &colinfo, &tempds; '; put ' '; put ' %if %substr(&showmeta,1,1)=Y %then %do; '; put ' filename _sjs4 temp lrecl=131068 encoding=''utf-8''; '; put ' data _null_; '; put ' file _sjs4; '; put ' length label $350; '; put ' put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{"; '; put ' do i=1 to &numcols; '; put ' name=quote(trim(symget(cats(''name'',i)))); '; put ' format=quote(trim(symget(cats(''fmt'',i)))); '; put ' label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i))))); '; put ' length=quote(trim(symget(cats(''length'',i)))); '; put ' type=quote(trim(symget(cats(''typelong'',i)))); '; put ' if i>1 then put "," @@; '; put ' put name '':{"format":'' format '',"label":'' label '; put ' '',"length":'' length '',"type":'' type ''}''; '; put ' end; '; put ' put ''}}''; '; put ' run; '; put ' /* send back to webout */ '; put ' data _null_; '; put ' infile _sjs4 lrecl=1 recfm=n; '; put ' file &jref mod lrecl=1 recfm=n; '; put ' input sourcechar $char1. @@; '; put ' format sourcechar hex2.; '; put ' put sourcechar char1. @@; '; put ' run; '; put ' filename _sjs4 clear; '; put ' %end; '; put '%end; '; put ' '; put '%else %if &action=CLOSE %then %do; '; put ' data _null_; file &jref encoding=''utf-8'' mod ; '; put ' put "}"; '; put ' run; '; put '%end; '; put '%mend mp_jsonout; '; put ' '; put '%macro mf_getuser( '; put ')/*/STORE SOURCE*/; '; put ' %local user; '; put ' '; put ' %if %symexist(_sasjs_username) %then %let user=&_sasjs_username; '; put ' %else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do; '; put ' %let user=&SYS_COMPUTE_SESSION_OWNER; '; put ' %end; '; put ' %else %if %symexist(_metaperson) %then %do; '; put ' %if %length(&_metaperson)=0 %then %let user=&sysuserid; '; put ' /* sometimes SAS will add @domain extension - remove for consistency */ '; put ' /* but be sure to quote in case of usernames with commas */ '; put ' %else %let user=%unquote(%scan(%quote(&_metaperson),1,@)); '; put ' %end; '; put ' %else %let user=&sysuserid; '; put ' '; put ' %quote(&user) '; put ' '; put '%mend mf_getuser; '; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL '; put ' ,showmeta=N,maxobs=MAX,workobs=0 '; put '); '; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug '; put ' sasjs_tables; '; put '%local i tempds jsonengine; '; put ' '; put '/* see https://github.com/sasjs/core/issues/41 */ '; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON; '; put '%else %let jsonengine=DATASTEP; '; put ' '; put ' '; put '%if &action=FETCH %then %do; '; put ' %if %str(&_debug) ge 131 %then %do; '; put ' options mprint notes mprintnest; '; put ' %end; '; put ' %let _webin_file_count=%eval(&_webin_file_count+0); '; put ' /* now read in the data */ '; put ' %do i=1 %to &_webin_file_count; '; put ' %if &_webin_file_count=1 %then %do; '; put ' %let _webin_fileref1=&_webin_fileref; '; put ' %let _webin_name1=&_webin_name; '; put ' %end; '; put ' data _null_; '; put ' infile &&_webin_fileref&i termstr=crlf; '; put ' input; '; put ' call symputx(''input_statement'',_infile_); '; put ' putlog "&&_webin_name&i input statement: " _infile_; '; put ' stop; '; put ' data &&_webin_name&i; '; put ' infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8''; '; put ' input &input_statement; '; put ' %if %str(&_debug) ge 131 %then %do; '; put ' if _n_<20 then putlog _infile_; '; put ' %end; '; put ' run; '; put ' %let sasjs_tables=&sasjs_tables &&_webin_name&i; '; put ' %end; '; put '%end; '; put ' '; put '%else %if &action=OPEN %then %do; '; put ' /* fix encoding */ '; put ' OPTIONS NOBOMFILE; '; put ' '; put ' /** '; put ' * check xengine type to avoid the below err message: '; put ' * > Function is only valid for filerefs using the CACHE access method. '; put ' */ '; put ' data _null_; '; put ' set sashelp.vextfl(where=(fileref="_WEBOUT")); '; put ' if xengine=''STREAM'' then do; '; put ' rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8"); '; put ' end; '; put ' run; '; put ' '; put ' /* setup json */ '; put ' data _null_;file &fref encoding=''utf-8''; '; put ' %if %str(&_debug) ge 131 %then %do; '; put ' put ''>>weboutBEGIN<<''; '; put ' %end; '; put ' put ''{"SYSDATE" : "'' "&SYSDATE" ''"''; '; put ' put '',"SYSTIME" : "'' "&SYSTIME" ''"''; '; put ' run; '; put ' '; put '%end; '; put ' '; put '%else %if &action=ARR or &action=OBJ %then %do; '; put ' %mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref '; put ' ,engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs '; put ' ) '; put '%end; '; put '%else %if &action=CLOSE %then %do; '; put ' /* To avoid issues with _webout on EBI we use a temporary file */ '; put ' filename _sjsref temp lrecl=131068; '; put ' %if %str(&workobs) > 0 %then %do; '; put ' /* if debug mode, send back first XX records of each work table also */ '; put ' data;run;%let tempds=%scan(&syslast,2,.); '; put ' ods output Members=&tempds; '; put ' proc datasets library=WORK memtype=data; '; put ' %local wtcnt;%let wtcnt=0; '; put ' data _null_; '; put ' set &tempds; '; put ' if not (upcase(name) =:"DATA"); /* ignore temp datasets */ '; put ' i+1; '; put ' call symputx(cats(''wt'',i),name,''l''); '; put ' call symputx(''wtcnt'',i,''l''); '; put ' data _null_; file _sjsref mod encoding=''utf-8''; '; put ' put ",""WORK"":{"; '; put ' %do i=1 %to &wtcnt; '; put ' %let wt=&&wt&i; '; put ' data _null_; file _sjsref mod encoding=''utf-8''; '; put ' dsid=open("WORK.&wt",''is''); '; put ' nlobs=attrn(dsid,''NLOBS''); '; put ' nvars=attrn(dsid,''NVARS''); '; put ' rc=close(dsid); '; put ' if &i>1 then put '',''@; '; put ' put " ""&wt"" : {"; '; put ' put ''"nlobs":'' nlobs; '; put ' put '',"nvars":'' nvars; '; put ' %mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10 '; put ' ,maxobs=&workobs '; put ' ) '; put ' data _null_; file _sjsref mod encoding=''utf-8''; '; put ' put "}"; '; put ' %end; '; put ' data _null_; file _sjsref mod encoding=''utf-8''; '; put ' put "}"; '; put ' run; '; put ' %end; '; put ' /* close off json */ '; put ' data _null_;file _sjsref mod encoding=''utf-8''; '; put ' length SYSPROCESSNAME syserrortext syswarningtext autoexec $512; '; put ' put ",""_DEBUG"" : ""&_debug"" "; '; put ' _METAUSER=quote(trim(symget(''_METAUSER''))); '; put ' put ",""_METAUSER"": " _METAUSER; '; put ' _METAPERSON=quote(trim(symget(''_METAPERSON''))); '; put ' put '',"_METAPERSON": '' _METAPERSON; '; put ' _PROGRAM=quote(trim(resolve(symget(''_PROGRAM'')))); '; put ' put '',"_PROGRAM" : '' _PROGRAM ; '; put ' autoexec=quote(urlencode(trim(getoption(''autoexec'')))); '; put ' put '',"AUTOEXEC" : '' autoexec; '; put ' put ",""MF_GETUSER"" : ""%mf_getuser()"" "; '; put ' put ",""SYSCC"" : ""&syscc"" "; '; put ' put ",""SYSENCODING"" : ""&sysencoding"" "; '; put ' syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"''); '; put ' put '',"SYSERRORTEXT" : '' syserrortext; '; put ' put ",""SYSHOSTNAME"" : ""&syshostname"" "; '; put ' put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" "; '; put ' put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" "; '; put ' SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME))); '; put ' put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME; '; put ' put ",""SYSJOBID"" : ""&sysjobid"" "; '; put ' put ",""SYSSCPL"" : ""&sysscpl"" "; '; put ' put ",""SYSSITE"" : ""&syssite"" "; '; put ' put ",""SYSUSERID"" : ""&sysuserid"" "; '; put ' sysvlong=quote(trim(symget(''sysvlong''))); '; put ' put '',"SYSVLONG" : '' sysvlong; '; put ' syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"''); '; put ' put '',"SYSWARNINGTEXT" : '' syswarningtext; '; put ' put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" ''; '; put ' length memsize $32; '; put ' memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)"; '; put ' memsize=quote(cats(memsize)); '; put ' put '',"MEMSIZE" : '' memsize; '; put ' put "}" @; '; put ' %if %str(&_debug) ge 131 %then %do; '; put ' put ''>>weboutEND<<''; '; put ' %end; '; put ' run; '; put ' /* now write to _webout 1 char at a time */ '; put ' data _null_; '; put ' infile _sjsref lrecl=1 recfm=n; '; put ' file &fref mod lrecl=1 recfm=n; '; put ' input sourcechar $char1. @@; '; put ' format sourcechar hex2.; '; put ' put sourcechar char1. @@; '; put ' run; '; put ' filename _sjsref clear; '; put ' '; put '%end; '; put ' '; put '%mend mm_webout; '; /* WEBOUT END */ put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO);'; put ' %mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt,missing=&missing'; put ' ,showmeta=&showmeta'; put ' )'; put '%mend;'; run; /* add precode and code */ %local work tmpfile; %let work=%sysfunc(pathname(work)); %let tmpfile=__mm_createwebservice.temp; %local x fref freflist mod; %let freflist= &adapter &precode &code ; %do x=1 %to %sysfunc(countw(&freflist)); %if &x>1 %then %let mod=mod; %let fref=%scan(&freflist,&x); %&mD.put &sysmacroname: adding &fref; data _null_; file "&work/&tmpfile" lrecl=3000 &mod; infile &fref; input; put _infile_; run; %end; /* create the metadata folder if not already there */ %mm_createfolder(path=&path) %if &syscc ge 4 %then %return; %if %upcase(&replace)=YES %then %do; %mm_deletestp(target=&path/&name) %end; /* create the web service */ %mm_createstp(stpname=&name ,filename=&tmpfile ,directory=&work ,tree=&path ,stpdesc=&desc ,mDebug=&mdebug ,server=&server ,stptype=2) /* find the web app url */ %local url; %let url=localhost/SASStoredProcess; data _null_; length url $128; rc=METADATA_GETURI("Stored Process Web App",url); if rc=0 then call symputx('url',url,'l'); run; %put &sysmacroname: STP &name successfully created in &path; %put Check it out here:; %put ;%put ;%put ; %put &url?_PROGRAM=&path/&name; %put ;%put ;%put ; %mend mm_createwebservice; /* system macros for build process end */ * BuildInit start; /** @file @brief Initialise build program for SAS 9 DC

SAS Macros

**/ options nomprint; %global _metaperson _url dcpath; /* set webout if not running in STP mode */ data _null_; if "&sysprocessmode" ne "SAS Stored Process Server" then do; call execute('filename _webout temp;'); end; run; * BuildInit end; %let path=services; %let service=clickme; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put '''';'; put 'put '' '';'; put 'put '' Data Controller for SAS®'';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '''';'; put 'run;'; put '%sasjsout(HTML)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/admin; %let service=configurator; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief provides the web service to create the control tables'; put '@details'; put '

SAS Macros

'; put '@li dc_getusergroups.sas'; put '@li mf_getuser.sas'; put '@li mf_getapploc.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%let root=%mf_getapploc();'; put '/* create web page */'; put 'data _null_;'; put 'file _webout;'; put 'infile datalines ;'; put 'input;'; put 'put _infile_;'; put 'datalines4;'; put ''; put ''; put ''; put ''; put 'Data Controller'; put ''; put ''; put ''; put ''; put ''; put '
'; put '
'; put ''; put 'Data Controller'; put '
'; put '
'; put '
'; put '
'; put '
'; put '
'; put ''; put '
'; put '
'; put 'Terms and Conditions'; put '
'; put '
'; put '
'; put '

Due to the way the Demo version is compiled (in an easy-to-deploy but'; put 'inefficient-to-run format), it should not be deployed to production servers.'; put 'Before proceeding with configuration, please confirm that you have read,'; put 'understood, and agreed to the'; put 'Data Controller for SAS© Evaluation Agreement.'; put '

'; put '
'; put '
'; put '>'; put ''; put '
'; put '
'; put '
'; put ''; put ''; put '
'; put '
'; put '
'; put ''; put ''; put ';;;;'; put 'run;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=exportconfig; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_ds2cards(base_ds, tgt_ds='; put ',cards_file="%sysfunc(pathname(work))/cardgen.sas"'; put ',maxobs=max'; put ',random_sample=NO'; put ',showlog=YES'; put ',outencoding='; put ',append=NO'; put ')/*/STORE SOURCE*/;'; put '%local i setds nvars;'; put '%if not %sysfunc(exist(&base_ds)) %then %do;'; put '%put %str(WARN)ING: &base_ds does not exist;'; put '%return;'; put '%end;'; put '%if %index(&base_ds,.)=0 %then %let base_ds=WORK.&base_ds;'; put '%if (&tgt_ds = ) %then %let tgt_ds=&base_ds;'; put '%if %index(&tgt_ds,.)=0 %then %let tgt_ds=WORK.%scan(&base_ds,2,.);'; put '%if ("&outencoding" ne "") %then %let outencoding=encoding="&outencoding";'; put '%if ("&append" = "" or "&append" = "NO") %then %let append=;'; put '%else %let append=mod;'; put '/* get varcount */'; put '%let nvars=0;'; put 'proc sql noprint;'; put 'select count(*) into: nvars from dictionary.columns'; put 'where upcase(libname)="%scan(%upcase(&base_ds),1)"'; put 'and upcase(memname)="%scan(%upcase(&base_ds),2)";'; put '%if &nvars=0 %then %do;'; put '%put %str(WARN)ING: Dataset &base_ds has no variables, will not be converted.;'; put '%return;'; put '%end;'; put '/* get indexes */'; put 'proc sort'; put 'data=sashelp.vindex('; put 'where=(upcase(libname)="%scan(%upcase(&base_ds),1)"'; put 'and upcase(memname)="%scan(%upcase(&base_ds),2)")'; put ')'; put 'out=_data_;'; put 'by indxname indxpos;'; put 'run;'; put '%local indexes;'; put 'data _null_;'; put 'set &syslast end=last;'; put 'if _n_=1 then call symputx(''indexes'',''(index=('',''l'');'; put 'by indxname indxpos;'; put 'length vars $32767 nom uni $8;'; put 'retain vars;'; put 'if first.indxname then do;'; put 'idxcnt+1;'; put 'nom='''';'; put 'uni='''';'; put 'vars=name;'; put 'end;'; put 'else vars=catx('' '',vars,name);'; put 'if last.indxname then do;'; put 'if nomiss=''yes'' then nom=''/nomiss'';'; put 'if unique=''yes'' then uni=''/unique'';'; put 'call symputx(''indexes'''; put ',catx('' '',symget(''indexes''),indxname,''=('',vars,'')'',nom,uni)'; put ',''l'');'; put 'end;'; put 'if last then call symputx(''indexes'',cats(symget(''indexes''),''))''),''l'');'; put 'run;'; put 'data;run;'; put '%let setds=&syslast;'; put 'proc sql'; put '%if %datatyp(&maxobs)=NUMERIC %then %do;'; put 'outobs=&maxobs;'; put '%end;'; put ';'; put 'create table &setds as select * from &base_ds'; put '%if &random_sample=YES %then %do;'; put 'order by ranuni(42)'; put '%end;'; put ';'; put 'reset outobs=max;'; put 'create table datalines1 as'; put 'select name,type,length,varnum,format,label from dictionary.columns'; put 'where upcase(libname)="%upcase(%scan(&base_ds,1))"'; put 'and upcase(memname)="%upcase(%scan(&base_ds,2))";'; put '/**'; put 'Due to long decimals cannot use best. format'; put 'So - use bestd. format and then use character functions to strip trailing'; put 'zeros, if NOT an integer or missing!! Cannot use int() as it upsets'; put 'note2err when there are missings.'; put 'resolved code = ifc( mod(coalesce(VARIABLE,0),1)=0'; put ',put(VARIABLE,best32.)'; put ',substrn(put(VARIABLE,bestd32.),1'; put ',findc(put(VARIABLE,bestd32.),''0'',''TBK'')));'; put '**/'; put 'data datalines_2;'; put 'format dataline $32000.;'; put 'set datalines1 (where=(upcase(name) not in'; put '(''PROCESSED_DTTM'',''VALID_FROM_DTTM'',''VALID_TO_DTTM'')));'; put 'if type=''num'' then dataline='; put 'cats(''ifc(mod(coalesce('',name,'',0),1)=0'; put ',put('',name,'',best32.-l)'; put ',substrn(put('',name,'',bestd32.-l),1'; put ',findc(put('',name,'',bestd32.-l),"0","TBK")))'');'; put '/**'; put '* binary data must be converted, to store in text format. It is identified'; put '* by the presence of the $HEX keyword in the format.'; put '*/'; put 'else if upcase(format)=:''$HEX'' then'; put 'dataline=cats(''put(trim('',name,''),'',format,'')'');'; put '/**'; put '* There is no easy way to store line breaks in a cards file.'; put '* To discuss this, use: https://github.com/sasjs/core/issues/80'; put '* Removing all nonprintables with kw (keep writeable)'; put '*/'; put 'else dataline=cats(''compress('',name,'', ,"kw")'');'; put 'run;'; put 'proc sql noprint;'; put 'select dataline into: datalines separated by '','' from datalines_2;'; put '%local'; put 'process_dttm_flg'; put 'valid_from_dttm_flg'; put 'valid_to_dttm_flg'; put ';'; put '%let process_dttm_flg = N;'; put '%let valid_from_dttm_flg = N;'; put '%let valid_to_dttm_flg = N;'; put 'data _null_;'; put 'set datalines1 ;'; put '/* build attrib statement */'; put 'if type=''char'' then type2=''$'';'; put 'if strip(format) ne '''' then format2=cats(''format='',format);'; put 'if strip(label) ne '''' then label2=cats(''label='',quote(trim(label)));'; put 'str1=catx('' '',(put(name,$33.)||''length='')'; put ',put(cats(type2,length),$7.)||format2,label2);'; put '/* Build input statement */'; put 'if upcase(format)=:''$HEX'' then type3='':''!!format;'; put 'else if type=''char'' then type3='':$char.'';'; put 'str2=put(name,$33.)||type3;'; put 'if(upcase(name) = "PROCESSED_DTTM") then'; put 'call symputx("process_dttm_flg", "Y", "L");'; put 'if(upcase(name) = "VALID_FROM_DTTM") then'; put 'call symputx("valid_from_dttm_flg", "Y", "L");'; put 'if(upcase(name) = "VALID_TO_DTTM") then'; put 'call symputx("valid_to_dttm_flg", "Y", "L");'; put 'call symputx(cats("attrib_stmt_", put(_N_, 8.)), str1, "L");'; put 'call symputx(cats("input_stmt_", put(_N_, 8.))'; put ', ifc(upcase(name) not in'; put '(''PROCESSED_DTTM'',''VALID_FROM_DTTM'',''VALID_TO_DTTM''), str2, ""), "L");'; put 'run;'; put 'data _null_;'; put 'file &cards_file. &outencoding lrecl=32767 termstr=nl &append;'; put 'length __attrib $32767;'; put 'if _n_=1 then do;'; put 'put ''/**'';'; put 'put '' @file'';'; put 'put " @brief Datalines for %upcase(%scan(&base_ds,2)) dataset";'; put 'put " @details Generated by %nrstr(%%)mp_ds2cards()";'; put 'put " Source: https://github.com/sasjs/core";'; put 'put '' @cond '';'; put 'put ''**/'';'; put 'put "data &tgt_ds &indexes;";'; put 'put "attrib ";'; put '%do i = 1 %to &nvars;'; put '__attrib=symget("attrib_stmt_&i");'; put 'put __attrib;'; put '%end;'; put 'put ";";'; put '%if &process_dttm_flg. eq Y %then %do;'; put 'put ''retain PROCESSED_DTTM %sysfunc(datetime());'';'; put '%end;'; put '%if &valid_from_dttm_flg. eq Y %then %do;'; put 'put ''retain VALID_FROM_DTTM &low_date;'';'; put '%end;'; put '%if &valid_to_dttm_flg. eq Y %then %do;'; put 'put ''retain VALID_TO_DTTM &high_date;'';'; put '%end;'; put 'if __nobs=0 then do;'; put 'put ''call missing(of _all_);/* avoid uninitialised notes */'';'; put 'put ''stop;'';'; put 'put ''run;'';'; put 'end;'; put 'else do;'; put 'put "infile cards dsd;";'; put 'put "input ";'; put '%do i = 1 %to &nvars.;'; put '%if(%length(&&input_stmt_&i..)) %then'; put 'put " &&input_stmt_&i..";'; put ';'; put '%end;'; put 'put ";";'; put 'put ''missing a b c d e f g h i j k l m n o p q r s t u v w x y z _;'';'; put 'put "datalines4;";'; put 'end;'; put 'end;'; put 'set &setds end=__lastobs nobs=__nobs;'; put '/* remove all formats for write purposes - some have long underlying decimals */'; put 'format _numeric_ best30.29;'; put 'length __dataline $32767;'; put '__dataline=catq(''cqtmb'',&datalines);'; put 'put __dataline;'; put 'if __lastobs then do;'; put 'put '';;;;'';'; put 'put ''run;'';'; put 'put ''/** @endcond **/'';'; put 'stop;'; put 'end;'; put 'run;'; put 'proc sql;'; put 'drop table &setds;'; put 'quit;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &cards_file lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '%put NOTE: CARDS FILE SAVED IN:;'; put '%put NOTE-;%put NOTE-;'; put '%put NOTE- %sysfunc(dequote(&cards_file.));'; put '%put NOTE-;%put NOTE-;'; put '%mend mp_ds2cards;'; put '/** @endcond **/'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mfs_httpheader(header_name'; put ',header_value'; put ')/*/STORE SOURCE*/;'; put '%global sasjs_stpsrv_header_loc;'; put '%local fref fid i;'; put '%if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc)) ne 0 %then %do;'; put '%put &=fref &=sasjs_stpsrv_header_loc;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(&header_name): %str(&header_value)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%mend mfs_httpheader;'; put '%macro mp_streamfile('; put 'contenttype=TEXT'; put ',inloc='; put ',inref=0'; put ',iftrue=%str(1=1)'; put ',outname='; put ',outref=_webout'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let contentype=%upcase(&contenttype);'; put '%let outref=%upcase(&outref);'; put '%local platform; %let platform=%mf_getplatform();'; put '/**'; put '* check engine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put '%local streamweb;'; put '%let streamweb=0;'; put 'data _null_;'; put 'set sashelp.vextfl(where=(upcase(fileref)="&outref"));'; put 'if xengine=''STREAM'' then call symputx(''streamweb'',1,''l'');'; put 'run;'; put '%if &contentype=CSV %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/csv'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/csv'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/csv)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=EXCEL %then %do;'; put '/* suitable for XLS format */'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/vnd.ms-excel'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype=''application/vnd.ms-excel'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/vnd.ms-excel)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=GIF or &contentype=JPEG or &contentype=PNG %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"image/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="image/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,image/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=HTML or &contenttype=MARKDOWN %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"text/%lowcase(&contenttype)");'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json"'; put 'contenttype="text/%lowcase(&contenttype)"'; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,text/%lowcase(&contenttype))'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=TEXT %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/text'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/text'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/text)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=WOFF or &contentype=WOFF2 or &contentype=TTF %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"font/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="font/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,font/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=XLSX %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'','; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype='; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type'; put ',application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; put ')'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=ZIP %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/zip'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.zip'''; put 'contenttype=''application/zip'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/zip)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Content Type &contenttype NOT SUPPORTED by &sysmacroname!;'; put '%end;'; put '%if &inref ne 0 %then %do;'; put '%mp_binarycopy(inref=&inref,outref=&outref)'; put '%end;'; put '%else %do;'; put '%mp_binarycopy(inloc="&inloc",outref=&outref)'; put '%end;'; put '%mend mp_streamfile;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Downloads zip file of DC customer configurations'; put '@details Zip contains several excel files, containing the customer specific'; put '(non-DC) configurations. Useful when migrating to a new instance of'; put 'Data Controller.'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mf_nobs.sas'; put '@li mp_ds2cards.sas'; put '@li mp_abort.sas'; put '@li mp_binarycopy.sas'; put '@li mp_streamfile.sas'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%let work=%sysfunc(pathname(work));'; put '/* excel does not work in all envs */'; put '%let mime=application/vnd.ms-excel;'; put '%let dbms=EXCEL;'; put '%let mime=application/csv;'; put '%let dbms=CSV;'; put '%let ext=csv;'; put '%macro conditional_export(ds);'; put '%if %mf_nobs(&ds)>0 %then %do;'; put 'PROC EXPORT DATA= &ds OUTFILE= "&work/&ds..&ext"'; put 'DBMS=&dbms REPLACE;'; put 'RUN;'; put 'ods package(ProdOutput) add file="&work/&ds..&ext" mimetype="&mime";'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%nrstr(syscc=&syscc after &ds prep)'; put ')'; put '%mend conditional_export;'; put 'ods package(ProdOutput) open nopf;'; put 'data MPE_ALERTS;'; put 'set &mpelib..MPE_ALERTS;'; put 'where &dc_dttmtfmt. le tx_to;'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_ALERTS)'; put 'data MPE_COLUMN_LEVEL_SECURITY;'; put 'set &mpelib..MPE_COLUMN_LEVEL_SECURITY;'; put 'where &dc_dttmtfmt. le tx_to;'; put 'where also CLS_LIBREF ne "&mpelib";'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_COLUMN_LEVEL_SECURITY)'; put 'data MPE_CONFIG;'; put 'set &mpelib..MPE_CONFIG;'; put 'where &dc_dttmtfmt. le tx_to;'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_CONFIG)'; put 'data MPE_DATADICTIONARY;'; put 'set &mpelib..MPE_DATADICTIONARY;'; put 'where &dc_dttmtfmt. le tx_to;'; put 'drop tx_: ;'; put 'if DD_SOURCE=:"&mpelib" then do;'; put '/* nothing */'; put 'end;'; put 'else output;'; put 'run;'; put '%conditional_export(MPE_DATADICTIONARY)'; put 'data MPE_EMAILS;'; put 'set &mpelib..MPE_EMAILS;'; put 'where &dc_dttmtfmt. le tx_to;'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_EMAILS)'; put 'data MPE_EXCEL_CONFIG;'; put 'set &mpelib..MPE_EXCEL_CONFIG;'; put 'where &dc_dttmtfmt. le tx_to;'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_EXCEL_CONFIG)'; put 'data MPE_GROUPS;'; put 'set &mpelib..MPE_GROUPS;'; put 'where &dc_dttmtfmt. le tx_to;'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_GROUPS)'; put 'data MPE_ROW_LEVEL_SECURITY;'; put 'set &mpelib..MPE_ROW_LEVEL_SECURITY;'; put 'where &dc_dttmtfmt. le tx_to;'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_ROW_LEVEL_SECURITY)'; put 'data MPE_SECURITY;'; put 'set &mpelib..MPE_SECURITY;'; put 'where &dc_dttmtfmt. le TX_TO;'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_SECURITY)'; put 'data MPE_SELECTBOX;'; put 'set &mpelib..MPE_SELECTBOX;'; put 'where &dc_dttmtfmt. le ver_to_dttm;'; put 'where also select_lib ne "&mpelib";'; put 'drop ver_: selectbox_rk;'; put 'run;'; put '%conditional_export(MPE_SELECTBOX)'; put 'data MPE_TABLES;'; put 'set &mpelib..MPE_TABLES;'; put 'where &dc_dttmtfmt. le TX_TO;'; put 'where also LIBREF ne "&mpelib";'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_TABLES)'; put 'data MPE_VALIDATIONS;'; put 'set &mpelib..MPE_VALIDATIONS;'; put 'where &dc_dttmtfmt. le TX_TO;'; put 'where also BASE_LIB ne "&mpelib";'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_VALIDATIONS)'; put '/* finish up zip file */'; put 'ods package(ProdOutput) publish archive properties'; put '(archive_name="DCBACKUP.zip" archive_path="&work");'; put 'ods package(ProdOutput) close;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%nrstr(syscc=&syscc after zip prep)'; put ')'; put '/* now serve zip file to client */'; put '%mp_streamfile(contenttype=ZIP'; put ',inloc=%str(&work/DCBACKUP.zip)'; put ',outname=DCBACKUP.zip'; put ')'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=exportdb; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_existfileref(fref'; put ')/*/STORE SOURCE*/;'; put '%local rc;'; put '%let rc=%sysfunc(fileref(&fref));'; put '%if &rc=0 %then %do;'; put '1'; put '%end;'; put '%else %if &rc<0 %then %do;'; put '%put &sysmacroname: Fileref &fref exists but the underlying file does not;'; put '1'; put '%end;'; put '%else %do;'; put '0'; put '%end;'; put '%mend mf_existfileref;'; put '%macro mf_getvarcount(libds,typefilter=A'; put ')/*/STORE SOURCE*/;'; put '%local dsid nvars rc outcnt x;'; put '%let dsid=%sysfunc(open(&libds));'; put '%let nvars=.;'; put '%let outcnt=0;'; put '%let typefilter=%upcase(&typefilter);'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &typefilter=A %then %let outcnt=&nvars;'; put '%else %if &nvars>0 %then %do x=1 %to &nvars;'; put '/* increment based on variable type */'; put '%if %sysfunc(vartype(&dsid,&x))=&typefilter %then %do;'; put '%let outcnt=%eval(&outcnt+1);'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put unable to open &libds (rc=&dsid);'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '&outcnt'; put '%mend mf_getvarcount;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mp_getconstraints(lib=WORK'; put ',ds='; put ',outds=mp_getconstraints'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '/**'; put '* Cater for environments where sashelp.vcncolu is not available'; put '*/'; put '%if %sysfunc(exist(sashelp.vcncolu,view))=0 %then %do;'; put 'proc sql;'; put 'create table &outds('; put 'libref char(8)'; put ',TABLE_NAME char(32)'; put ',constraint_type char(8) label=''Constraint Type'''; put ',constraint_name char(32) label=''Constraint Name'''; put ',column_name char(32) label=''Column'''; put ',constraint_order num'; put ');'; put '%return;'; put '%end;'; put '/**'; put '* Neither dictionary tables nor sashelp provides a constraint order column,'; put '* however they DO arrive in the correct order. So, create the col.'; put '**/'; put '%local vw;'; put '%let vw=%mf_getuniquename(prefix=mp_getconstraints_vw_);'; put 'data &vw /view=&vw;'; put 'set sashelp.vcncolu;'; put 'where table_catalog="&lib";'; put '/* use retain approach to reset the constraint order with each constraint */'; put 'length tmp $1000;'; put 'retain tmp;'; put 'drop tmp;'; put 'if tmp ne catx(''|'',table_catalog,table_name,constraint_name) then do;'; put 'constraint_order=1;'; put 'end;'; put 'else constraint_order+1;'; put 'tmp=catx(''|'',table_catalog, table_name,constraint_name);'; put 'run;'; put '/* must use SQL as proc datasets does not support length changes */'; put 'proc sql noprint;'; put 'create table &outds as'; put 'select upcase(a.TABLE_CATALOG) as libref'; put ',upcase(a.TABLE_NAME) as TABLE_NAME'; put ',a.constraint_type'; put ',a.constraint_name'; put ',b.column_name'; put ',b.constraint_order'; put 'from dictionary.TABLE_CONSTRAINTS a'; put 'left join &vw b'; put 'on upcase(a.TABLE_CATALOG)=upcase(b.TABLE_CATALOG)'; put 'and upcase(a.TABLE_NAME)=upcase(b.TABLE_NAME)'; put 'and a.constraint_name=b.constraint_name'; put '/**'; put '* We cannot apply this clause to the underlying dictionary table. See:'; put '* https://communities.sas.com/t5/SAS-Programming/Unexpected-Where-Clause-behaviour-in-dictionary-TABLE/m-p/771554#M244867'; put '* cannot use`where calculated libref="&lib"` either as it will STILL execute'; put '* all the underlying constraint queries, causing exception errors in some'; put '* cases: https://github.com/sasjs/core/issues/283'; put '*/'; put 'where a.TABLE_CATALOG="&lib"'; put '%if "&ds" ne "" %then %do;'; put 'and upcase(a.TABLE_NAME)="&ds"'; put 'and upcase(b.TABLE_NAME)="&ds"'; put '%end;'; put 'order by libref, table_name, constraint_name, constraint_order'; put ';'; put '/* tidy up */'; put '%mp_dropmembers('; put '&vw,'; put 'iftrue=(&mdebug=0)'; put ')'; put '%mend mp_getconstraints;'; put '%macro mp_getddl(libref,ds,fref=getddl,flavour=SAS,showlog=NO,schema='; put ',applydttm=NO'; put ')/*/STORE SOURCE*/;'; put '/* check fileref is assigned */'; put '%if %mf_existfileref(&fref)=0 %then %do;'; put 'filename &fref temp ;'; put '%end;'; put '%if %length(&libref)=0 %then %let libref=WORK;'; put '%let flavour=%upcase(&flavour);'; put 'proc sql noprint;'; put 'create table _data_ as'; put 'select * from dictionary.tables'; put 'where upcase(libname)="%upcase(&libref)"'; put 'and memtype=''DATA'' /* views not currently supported */'; put '%if %length(&ds)>0 %then %do;'; put 'and upcase(memname)="%upcase(&ds)"'; put '%end;'; put ';'; put '%local tabinfo; %let tabinfo=&syslast;'; put 'create table _data_ as'; put 'select * from dictionary.columns'; put 'where upcase(libname)="%upcase(&libref)"'; put '%if %length(&ds)>0 %then %do;'; put 'and upcase(memname)="%upcase(&ds)"'; put '%end;'; put ';'; put '%local colinfo; %let colinfo=&syslast;'; put '%local dsnlist;'; put 'select distinct upcase(memname) into: dsnlist'; put 'separated by '' '''; put 'from &syslast'; put ';'; put 'create table _data_ as'; put 'select * from dictionary.indexes'; put 'where upcase(libname)="%upcase(&libref)"'; put '%if %length(&ds)>0 %then %do;'; put 'and upcase(memname)="%upcase(&ds)"'; put '%end;'; put 'order by idxusage, indxname, indxpos'; put ';'; put '%local idxinfo; %let idxinfo=&syslast;'; put '/* Extract all Primary Key and Unique data constraints */'; put '%mp_getconstraints(lib=%upcase(&libref),ds=%upcase(&ds),outds=_data_)'; put '%local colconst; %let colconst=&syslast;'; put '%macro addConst();'; put '%global constraints_used;'; put 'data _null_;'; put 'length ctype $11 constraint_name_orig $256 constraints_used $5000;'; put 'set &colconst('; put 'where=(table_name="&curds" and constraint_type in (''PRIMARY'',''UNIQUE''))'; put ') end=last;'; put 'file &fref mod;'; put 'by constraint_type constraint_name;'; put 'retain constraints_used;'; put 'constraint_name_orig=constraint_name;'; put 'if upcase(strip(constraint_type)) = ''PRIMARY'' then ctype=''PRIMARY KEY'';'; put 'else ctype=strip(constraint_type);'; put '%if &flavour=TSQL %then %do;'; put 'column_name=catt(''['',column_name,'']'');'; put 'constraint_name=catt(''['',constraint_name,'']'');'; put '%end;'; put '%else %if &flavour=PGSQL %then %do;'; put 'column_name=catt(''"'',column_name,''"'');'; put 'constraint_name=catt(''"'',constraint_name,''"'');'; put '%end;'; put 'if first.constraint_name then do;'; put 'constraints_used = catx('' '', constraints_used, constraint_name_orig);'; put 'put " ,CONSTRAINT " constraint_name ctype "(" ;'; put 'put '' '' column_name;'; put 'end;'; put 'else put '' ,'' column_name;'; put 'if last.constraint_name then do;'; put 'put " )";'; put 'call symput(''constraints_used'',strip(constraints_used));'; put 'end;'; put 'run;'; put '%put &=constraints_used;'; put '%mend addConst;'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* DDL generated by &sysuserid on %sysfunc(datetime(),datetime19.) */";'; put 'run;'; put '%local x curds;'; put '%if &flavour=SAS %then %do;'; put '%do x=1 %to %sysfunc(countw(&dsnlist));'; put '%let curds=%scan(&dsnlist,&x);'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* SAS Flavour DDL for %upcase(&libref).&curds */";'; put 'put "proc sql;";'; put 'run;'; put 'data _null_;'; put 'file &fref mod;'; put 'length lab $1024 typ $20;'; put 'set &colinfo (where=(upcase(memname)="&curds")) end=last;'; put 'if _n_=1 then do;'; put 'if memtype=''DATA'' then do;'; put 'put "create table &libref..&curds(";'; put 'end;'; put 'else do;'; put '/* just a placeholder - we filter out views at the top */'; put 'put "create view &libref..&curds(";'; put 'end;'; put 'put " "@@;'; put 'end;'; put 'else put " ,"@@;'; put 'if length(format)>1 then fmt=" format="!!cats(format);'; put 'if length(label)>1 then'; put 'lab=" label="!!cats("''",tranwrd(label,"''","''''"),"''");'; put 'if notnull=''yes'' then notnul='' not null'';'; put 'if type=''char'' then typ=cats(''char('',length,'')'');'; put 'else if length ne 8 then typ=''num length=''!!cats(length);'; put 'else typ=''num'';'; put 'put name typ fmt notnul lab;'; put 'run;'; put '/* Extra step for data constraints */'; put '%addConst()'; put 'data _null_;'; put 'file &fref mod;'; put 'put '');'';'; put 'run;'; put '/* Create Unique Indexes, but only if they were not already defined within'; put 'the Constraints section. */'; put 'data _null_;'; put '*length ds $128;'; put 'set &idxinfo('; put 'where=('; put 'memname="&curds"'; put 'and unique=''yes'''; put 'and indxname not in ('; put '%sysfunc(tranwrd("&constraints_used",%str( ),%str(",")))'; put ')'; put ')'; put ');'; put 'file &fref mod;'; put 'by idxusage indxname;'; put '/* ds=cats(libname,''.'',memname); */'; put 'if first.indxname then do;'; put 'put ''CREATE UNIQUE INDEX '' indxname "ON &libref..&curds (" ;'; put 'put '' '' name ;'; put 'end;'; put 'else put '' ,'' name ;'; put '*else put '' ,'' name ;'; put 'if last.indxname then do;'; put 'put '');'';'; put 'end;'; put 'run;'; put '/*'; put 'ods output IntegrityConstraints=ic;'; put 'proc contents data=testali out2=info;'; put 'run;'; put '*/'; put '%end;'; put '%end;'; put '%else %if &flavour=TSQL %then %do;'; put '/* if schema does not exist, set to be same as libref */'; put '%local schemaactual;'; put 'proc sql noprint;'; put 'select sysvalue into: schemaactual'; put 'from dictionary.libnames'; put 'where upcase(libname)="&libref" and engine=''SQLSVR'';'; put '%let schema=%sysfunc(coalescec(&schemaactual,&schema,&libref));'; put '%do x=1 %to %sysfunc(countw(&dsnlist));'; put '%let curds=%scan(&dsnlist,&x);'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* TSQL Flavour DDL for &schema..&curds */";'; put 'data _null_;'; put 'file &fref mod;'; put 'set &colinfo (where=(upcase(memname)="&curds")) end=last;'; put 'if _n_=1 then do;'; put 'if memtype=''DATA'' then do;'; put 'put "create table [&schema].[&curds](";'; put 'end;'; put 'else do;'; put '/* just a placeholder - we filter out views at the top */'; put 'put "create view [&schema].[&curds](";'; put 'end;'; put 'put " "@@;'; put 'end;'; put 'else put " ,"@@;'; put 'format=upcase(format);'; put 'if 1=0 then; /* dummy if */'; put '%if &applydttm=YES %then %do;'; put 'else if format=:''DATETIME'' then fmt=''[datetime2](7) '';'; put '%end;'; put 'else if type=''num'' then fmt=''[decimal](18,2)'';'; put 'else if length le 8000 then fmt=''[varchar](''!!cats(length)!!'')'';'; put 'else fmt=cats(''[varchar](max)'');'; put 'if notnull=''yes'' then notnul='' NOT NULL'';'; put 'put "[" name +(-1) "]" fmt notnul;'; put 'run;'; put '/* Extra step for data constraints */'; put '%addConst()'; put '/* Create Unique Indexes, but only if they were not already defined within'; put 'the Constraints section. */'; put 'data _null_;'; put '*length ds $128;'; put 'set &idxinfo('; put 'where=('; put 'memname="&curds"'; put 'and unique=''yes'''; put 'and indxname not in ('; put '%sysfunc(tranwrd("&constraints_used",%str( ),%str(",")))'; put ')'; put ')'; put ');'; put 'file &fref mod;'; put 'by idxusage indxname;'; put '*ds=cats(libname,''.'',memname);'; put 'if first.indxname then do;'; put '/* add nonclustered in case of multiple unique indexes */'; put 'put '' ,index ['' indxname +(-1) ''] UNIQUE NONCLUSTERED ('';'; put 'put '' ['' name +(-1) '']'';'; put 'end;'; put 'else put '' ,['' name +(-1) '']'';'; put 'if last.indxname then do;'; put 'put '' )'';'; put 'end;'; put 'run;'; put 'data _null_;'; put 'file &fref mod;'; put 'put '')'';'; put 'put ''GO'';'; put 'run;'; put '/* add extended properties for labels */'; put 'data _null_;'; put 'file &fref mod;'; put 'length nm $64 lab $1024;'; put 'set &colinfo (where=(upcase(memname)="&curds" and label ne '''')) end=last;'; put 'nm=cats("N''",tranwrd(name,"''","''''"),"''");'; put 'lab=cats("N''",tranwrd(label,"''","''''"),"''");'; put 'put '' '';'; put 'put "EXEC sys.sp_addextendedproperty ";'; put 'put " @name=N''MS_Description'',@value=" lab ;'; put 'put " ,@level0type=N''SCHEMA'',@level0name=N''&schema'' ";'; put 'put " ,@level1type=N''TABLE'',@level1name=N''&curds''";'; put 'put " ,@level2type=N''COLUMN'',@level2name=" nm ;'; put 'if last then put ''GO'';'; put 'run;'; put '%end;'; put '%end;'; put '%else %if &flavour=PGSQL %then %do;'; put '/* if schema does not exist, set to be same as libref */'; put '%local schemaactual;'; put 'proc sql noprint;'; put 'select sysvalue into: schemaactual'; put 'from dictionary.libnames'; put 'where upcase(libname)="&libref" and engine=''POSTGRES'';'; put '%let schema=%sysfunc(coalescec(&schemaactual,&schema,&libref));'; put 'data _null_;'; put 'file &fref mod;'; put 'put "CREATE SCHEMA &schema;";'; put '%do x=1 %to %sysfunc(countw(&dsnlist));'; put '%let curds=%scan(&dsnlist,&x);'; put '%local curdsvarcount;'; put '%let curdsvarcount=%mf_getvarcount(&libref..&curds);'; put '%if &curdsvarcount>1600 %then %do;'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* &libref..&curds contains &curdsvarcount vars */";'; put 'put "/* Postgres cannot create tables with over 1600 vars */";'; put 'put "/* No DDL will be generated for this table";'; put 'run;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* Postgres Flavour DDL for &schema..&curds */";'; put 'data _null_;'; put 'file &fref mod;'; put 'set &colinfo (where=(upcase(memname)="&curds")) end=last;'; put 'length fmt $32;'; put 'if _n_=1 then do;'; put 'if memtype=''DATA'' then do;'; put 'put "CREATE TABLE &schema..&curds (";'; put 'end;'; put 'else do;'; put '/* just a placeholder - we filter out views at the top */'; put 'put "CREATE VIEW &schema..&curds (";'; put 'end;'; put 'put " "@@;'; put 'end;'; put 'else put " ,"@@;'; put 'format=upcase(format);'; put 'if 1=0 then; /* dummy if */'; put '%if &applydttm=YES %then %do;'; put 'else if format=:''DATETIME'' then fmt='' TIMESTAMP '';'; put '%end;'; put 'else if type=''num'' then fmt='' DOUBLE PRECISION'';'; put 'else fmt=''VARCHAR(''!!cats(length)!!'')'';'; put 'if notnull=''yes'' then notnul='' NOT NULL'';'; put '/* quote column names in case they represent reserved words */'; put 'name2=quote(trim(name));'; put 'put name2 fmt notnul;'; put 'run;'; put '/* Extra step for data constraints */'; put '%addConst()'; put 'data _null_;'; put 'file &fref mod;'; put 'put '');'';'; put 'run;'; put '/* Create Unique Indexes, but only if they were not already defined within'; put 'the Constraints section. */'; put 'data _null_;'; put '*length ds $128;'; put 'set &idxinfo('; put 'where=('; put 'memname="&curds"'; put 'and unique=''yes'''; put 'and indxname not in ('; put '%sysfunc(tranwrd("&constraints_used",%str( ),%str(",")))'; put ')'; put ')'; put ');'; put 'file &fref mod;'; put 'by idxusage indxname;'; put 'if first.indxname then do;'; put 'put ''CREATE UNIQUE INDEX "'' indxname +(-1) ''" '' "ON &schema..&curds(";'; put 'put '' "'' name +(-1) ''"'' ;'; put 'end;'; put 'else put '' ,"'' name +(-1) ''"'';'; put 'if last.indxname then do;'; put 'put '');'';'; put 'end;'; put 'run;'; put '%end;'; put '%end;'; put '%end;'; put '%if %upcase(&showlog)=YES %then %do;'; put 'options ps=max;'; put 'data _null_;'; put 'infile &fref;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%end;'; put '%mend mp_getddl;'; put '%macro mf_getVarFormat(libds /* two level ds name */'; put ', var /* variable name from which to return the format */'; put ', force=0'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vformat rc vlen vtype;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable format */'; put '%if(&vnum > 0) %then %let vformat=%sysfunc(varfmt(&dsid, &vnum));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let rc = %sysfunc(close(&dsid));'; put '%return;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* supply a default if no format available */'; put '%if %length(&vformat)<2 & &force=1 %then %do;'; put '%let vlen = %sysfunc(varlen(&dsid, &vnum));'; put '%let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%if &vtype=C %then %let vformat=$&vlen..;'; put '%else %let vformat=best.;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable format */'; put '&vformat'; put '%mend mf_getVarFormat;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mp_ds2inserts(ds, outref=0,schema=0,outds=0,flavour=SAS,maxobs=max'; put ',applydttm=YES'; put ')/*/STORE SOURCE*/;'; put '%if not %sysfunc(exist(&ds)) %then %do;'; put '%put %str(WAR)NING: &ds does not exist;'; put '%return;'; put '%end;'; put '%if not %sysfunc(exist(&ds)) %then %do;'; put '%put %str(WAR)NING: &ds does not exist;'; put '%return;'; put '%end;'; put '%if %index(&ds,.)=0 %then %let ds=WORK.&ds;'; put '%let flavour=%upcase(&flavour);'; put '%if &flavour ne SAS and &flavour ne PGSQL %then %do;'; put '%put %str(WAR)NING: &flavour is not supported;'; put '%return;'; put '%end;'; put '%if &outref=0 %then %do;'; put '%put %str(WAR)NING: Please provide a fileref;'; put '%return;'; put '%end;'; put '%if %mf_existfileref(&outref)=0 %then %do;'; put 'filename &outref temp lrecl=66000;'; put '%end;'; put '%if &schema=0 %then %let schema=;'; put '%else %let schema=&schema..;'; put '%if &outds=0 %then %let outds=%scan(&ds,2,.);'; put '%local nobs;'; put 'proc sql noprint;'; put 'select count(*) into: nobs TRIMMED from &ds;'; put '%if &nobs=0 %then %do;'; put 'data _null_;'; put 'file &outref mod;'; put 'put "/* No rows found in &ds */";'; put 'run;'; put '%end;'; put '%local vars;'; put '%let vars=%mf_getvarcount(&ds);'; put '%if &vars=0 %then %do;'; put 'data _null_;'; put 'file &outref mod;'; put 'put "/* No columns found in &schema.&ds */";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &vars>1600 and &flavour=PGSQL %then %do;'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* &schema.&ds contains &vars vars */";'; put 'put "/* Postgres cannot handle tables with over 1600 vars */";'; put 'put "/* No inserts will be generated for this table */";'; put 'run;'; put '%return;'; put '%end;'; put '%local varlist varlistcomma;'; put '%let varlist=%mf_getvarlist(&ds);'; put '%let varlistcomma=%mf_getvarlist(&ds,dlm=%str(,),quote=double);'; put '/* next, export data */'; put 'data _null_;'; put 'file &outref mod ;'; put 'if _n_=1 then put "/* &schema.&outds (&nobs rows, &vars columns) */";'; put 'set &ds;'; put '%if &maxobs ne max %then %do;'; put 'if _n_>&maxobs then stop;'; put '%end;'; put 'length _____str $32767;'; put 'call missing(_____str);'; put 'format _numeric_ best.;'; put 'format _character_ ;'; put '%local i comma var vtype vfmt;'; put '%do i=1 %to %sysfunc(countw(&varlist));'; put '%let var=%scan(&varlist,&i);'; put '%let vtype=%mf_getvartype(&ds,&var);'; put '%let vfmt=%upcase(%mf_getvarformat(&ds,&var,force=1));'; put '%if &i=1 %then %do;'; put '%if &flavour=SAS %then %do;'; put 'put "insert into &schema.&outds set ";'; put 'put " &var="@;'; put '%end;'; put '%else %if &flavour=PGSQL %then %do;'; put '_____str=cats('; put '"INSERT INTO &schema.&outds ("'; put ',symget(''varlistcomma'')'; put ',") VALUES ("'; put ');'; put 'put _____str;'; put 'put " "@;'; put '%end;'; put '%end;'; put '%else %do;'; put '%if &flavour=SAS %then %do;'; put 'put " ,&var="@;'; put '%end;'; put '%else %if &flavour=PGSQL %then %do;'; put 'put " ,"@;'; put '%end;'; put '%end;'; put '%if &vtype=N %then %do;'; put '%if &flavour=SAS %then %do;'; put 'put &var;'; put '%end;'; put '%else %if &flavour=PGSQL %then %do;'; put 'if missing(&var) then put ''NULL'';'; put '%if &applydttm=YES and "%substr(&vfmt.xxxxxxxx,1,8)"="DATETIME"'; put '%then %do;'; put 'else put "TIMESTAMP ''" &var E8601DT25.6 "''";'; put '%end;'; put '%else %do;'; put 'else put &var;'; put '%end;'; put '%end;'; put '%end;'; put '%else %do;'; put '_____str="''"!!trim(tranwrd(&var,"''","''''"))!!"''";'; put 'put _____str;'; put '%end;'; put '%end;'; put '%if &flavour=SAS %then %do;'; put 'put '';'';'; put '%end;'; put '%else %if &flavour=PGSQL %then %do;'; put 'put '');'';'; put '%end;'; put 'if _n_=&nobs then put /;'; put 'run;'; put '%mend mp_ds2inserts;'; put '%macro mp_lib2inserts(lib'; put ',flavour=SAS'; put ',outref=0'; put ',schema=0'; put ',maxobs=max'; put ',applydttm=YES'; put ')/*/STORE SOURCE*/;'; put '/* Find the tables */'; put '%local x ds memlist;'; put 'proc sql noprint;'; put 'select distinct lowcase(memname)'; put 'into: memlist'; put 'separated by '' '''; put 'from dictionary.tables'; put 'where upcase(libname)="%upcase(&lib)"'; put 'and memtype=''DATA''; /* exclude views */'; put '%let flavour=%upcase(&flavour);'; put '%if &flavour ne SAS and &flavour ne PGSQL %then %do;'; put '%put %str(WAR)NING: &flavour is not supported;'; put '%return;'; put '%end;'; put '/* create the inserts */'; put '%do x=1 %to %sysfunc(countw(&memlist));'; put '%let ds=%scan(&memlist,&x);'; put '%mp_ds2inserts(&lib..&ds'; put ',outref=&outref'; put ',schema=&schema'; put ',outds=&ds'; put ',flavour=&flavour'; put ',maxobs=&maxobs'; put ',applydttm=&applydttm'; put ')'; put '%end;'; put '%mend mp_lib2inserts;'; put '%macro mfs_httpheader(header_name'; put ',header_value'; put ')/*/STORE SOURCE*/;'; put '%global sasjs_stpsrv_header_loc;'; put '%local fref fid i;'; put '%if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc)) ne 0 %then %do;'; put '%put &=fref &=sasjs_stpsrv_header_loc;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(&header_name): %str(&header_value)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%mend mfs_httpheader;'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mp_streamfile('; put 'contenttype=TEXT'; put ',inloc='; put ',inref=0'; put ',iftrue=%str(1=1)'; put ',outname='; put ',outref=_webout'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let contentype=%upcase(&contenttype);'; put '%let outref=%upcase(&outref);'; put '%local platform; %let platform=%mf_getplatform();'; put '/**'; put '* check engine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put '%local streamweb;'; put '%let streamweb=0;'; put 'data _null_;'; put 'set sashelp.vextfl(where=(upcase(fileref)="&outref"));'; put 'if xengine=''STREAM'' then call symputx(''streamweb'',1,''l'');'; put 'run;'; put '%if &contentype=CSV %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/csv'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/csv'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/csv)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=EXCEL %then %do;'; put '/* suitable for XLS format */'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/vnd.ms-excel'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype=''application/vnd.ms-excel'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/vnd.ms-excel)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=GIF or &contentype=JPEG or &contentype=PNG %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"image/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="image/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,image/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=HTML or &contenttype=MARKDOWN %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"text/%lowcase(&contenttype)");'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json"'; put 'contenttype="text/%lowcase(&contenttype)"'; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,text/%lowcase(&contenttype))'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=TEXT %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/text'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/text'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/text)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=WOFF or &contentype=WOFF2 or &contentype=TTF %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"font/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="font/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,font/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=XLSX %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'','; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype='; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type'; put ',application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; put ')'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=ZIP %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/zip'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.zip'''; put 'contenttype=''application/zip'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/zip)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Content Type &contenttype NOT SUPPORTED by &sysmacroname!;'; put '%end;'; put '%if &inref ne 0 %then %do;'; put '%mp_binarycopy(inref=&inref,outref=&outref)'; put '%end;'; put '%else %do;'; put '%mp_binarycopy(inloc="&inloc",outref=&outref)'; put '%end;'; put '%mend mp_streamfile;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Exports the data controller library in DB specific DDL'; put '@details If user is in the administrator group, they can call this'; put 'service directly adding the following URL params:'; put '@li &flavour= (only PGSQL supported at this time)'; put '@li &schema= (optional, if target schema is needed)'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mp_abort.sas'; put '@li mp_getddl.sas'; put '@li mp_lib2inserts.sas'; put '@li mp_streamfile.sas'; put '@li mpe_getgroups.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%global flavour schema;'; put '/* if no flavour is specified, default to SAS */'; put '%let flavour=%sysfunc(coalescec(&flavour,SAS));'; put '/* if no schema var provided, DC Libref is used */'; put '%let schema=%sysfunc(coalescec(&schema,&dc_libref));'; put '/* check user is in admin group */'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.usergroups)'; put 'data work.admins;'; put 'set work.usergroups;'; put 'put (_all_)(=);'; put 'run;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into:cnt'; put 'from usergroups'; put 'where groupname="&mpeadmins";'; put '%put &=cnt;'; put '%mp_abort(iftrue= (&cnt=0)'; put ',mac=&_program'; put ',msg=%str(The &DC_LIBREF library can only be exported by &mpeadmins members)'; put ')'; put '%mp_getddl(&DC_LIBREF'; put ',flavour=&flavour'; put ',schema=&schema'; put ',applydttm=YES'; put ',fref=tmpref'; put ')'; put '%mp_lib2inserts(&DC_LIBREF,flavour=&flavour,schema=&schema, outref=tmpref)'; put '%mp_streamfile(contenttype=TEXT'; put ',inref=tmpref'; put ',outname=&dc_libref..ddl'; put ')'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=makedata; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mf_increment(macro_name,incr=1);'; put '/* iterate the value */'; put '%let ¯o_name=%eval(&&¯o_name+&incr);'; put '/* return the value */'; put '&&¯o_name'; put '%mend mf_increment;'; put '%macro mpe_makedata(lib=,mpeadmins=,path=);'; put '%if &syscc ne 0 %then %do;'; put '%put syscc=&syscc exiting &sysmacroname;'; put '%return;'; put '%end;'; put 'proc sql;'; put 'insert into &lib..mpe_alerts set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',alert_event=''*ALL*'''; put ',alert_lib=''*ALL*'''; put ',alert_ds=''*ALL*'''; put ',alert_user="&sysuserid";'; put 'insert into &lib..mpe_column_level_security set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',CLS_SCOPE=''EDIT'''; put ',CLS_GROUP=''AllUsers'''; put ',CLS_LIBREF="&lib"'; put ',CLS_TABLE=''MPE_LOCKANYTABLE'''; put ',CLS_VARIABLE_NM=''LOCK_STATUS_CD'''; put ',CLS_ACTIVE=1'; put ',CLS_HIDE=0;'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_EMAIL_ALERTS"'; put ',var_value=''NO'''; put ',var_active=1'; put ',var_desc=''YES or NO to enable email alerts. Note - this requires email '''; put '!!''options to be preconfigured! They can be configured in the '''; put '!!''settings stp if needed.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_VIEWLIB_CHECK"'; put ',var_value=''NO'''; put ',var_active=1'; put ',var_desc='; put '''Set to YES to enable library validity checking in viewLibs service.'''; put '!!'' Note: this can make the service very slow if there are lots of '''; put '!!''external libraries. If enabled, this removes empty libraries from '''; put '!!''the viewer library dropdown. To switch off, set to NO.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_MACROS"'; put ',var_value=cats(symget(''path''),"/dc_macros")'; put ',var_active=1'; put ',var_desc=''Location of underlying macros - EUC feature.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_MAXOBS_WEBEDIT"'; put ',var_value="100"'; put ',var_active=1'; put ',var_desc=''This sets the maximum number of observations that can be loaded'''; put '!!'' into the browser for editing in the EDIT screen. A higher number'''; put '!!'' will require a decent browser (ie, not IE) and more memory on the'''; put '!!'' client side.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_RESTRICT_VIEWER"'; put ',var_value="NO"'; put ',var_active=1'; put ',var_desc=''YES will restrict the list of libraries and tables in VIEWER to'''; put '!!'' those explicitly set to VIEW in the MPE_SECURITY table. Default=NO.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_RESTRICT_EDITRECORD"'; put ',var_value="NO"'; put ',var_active=1'; put ',var_desc=''Setting YES will prevent the EDIT RECORD dialog appearing in the'''; put '!!'' EDIT screen by removing the "Edit Row" option in the right click menu'''; put '!!'', and the "ADD RECORD" button in the bottom left. Default=NO.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC_CATALOG"'; put ',var_name="DC_IGNORELIBS"'; put ',var_value="|MAPSSAS|MAPS|"'; put ',var_active=1'; put ',var_desc=''Pipe seperated list of librefs (uppercase) to be ignored when'''; put '!!'' running the Data Catalog refresh process. This can enable a clean'''; put '!!'' run when invalid librefs are returned by the mpe_refreshlibs macro.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_LOCALE"'; put ',var_value="SYSTEM"'; put ',var_active=1'; put ',var_desc=''Set to a locale (such as en_gb or en_be) to override the system'''; put '!!'' value (which can be driven from the browser settings). This is '''; put '!!''useful when importing ambiguous dates from CSV or Excel (eg 1/2/20 vs '''; put '!!''2/1/20) as DC uses the anydtdtm informats for import. Default=SYSTEM.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BULKLOAD"'; put ',var_value="YES"'; put ',var_active=0'; put ',var_desc=''Set to YES to enable BULKLOAD=YES in redshift'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BL_BUCKET"'; put ',var_value="''your-aws-bucket/Exchange''"'; put ',var_active=0'; put ',var_desc=''Set to the (quoted) value of the AWS bucket to'''; put '!!'' use for s3 uploads in redshift'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BL_AWS_CREDENTIALS_FILE"'; put ',var_value="''/path/to/your/aws/s3/.credentials''"'; put ',var_active=0'; put ',var_desc=''Set to the (quoted) value of the AWS creds file'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BL_REGION"'; put ',var_value="''eu-west-1''"'; put ',var_active=0'; put ',var_desc=''Set to the (quoted) AWS region in use'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BL_COMPRESS"'; put ',var_value="YES"'; put ',var_active=0'; put ',var_desc=''Set to YES to perform compression ahead of the COPY command'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BL_USE_SSL"'; put ',var_value="YES"'; put ',var_active=0'; put ',var_desc=''Set to YES to use SSL encryption'';'; put '%if &syssite=70221618 %then %do;'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_ACTIVATION_KEY"'; put ',var_value="MIIGtwIBADANBgkqhkiG9w0BAQEFAASCBqEwggadAgEAAoIBcQDgvQiMeOR3AMX4I1hypexG7pEQp7anG7nhvUeiLvcW3O5rHqQ2CNYAgHa41zjE5b6o1M6"'; put '!!"pgTUfg7/F37XwqFNaaRalvZ+hM7jv5LAn/dsGFu/TkInvnu4O6ti4JOgE1/KPD7ikcOLzSa7aph+yel5JCbMbyn1MXLHlKG88uIQq7K8xuJife3tHAdC3m1I4YHOgkxh"'; put '!!"6OhZxv7janJwM6h/VORoVEYXQCtgaItpFjyn1b5USlk48YB8iqSPEO/KZdYeO6jiOIpA17Ryk7g989RR70qVH2JZKjvyl/FCGN2Bz8eR6+ZSQ5cRcZRE3CujFaM5sO6C"'; put '!!"qVfJ9q1pqriTkrz7XedHlNKwl6BgJlk0GgsqYpp82qhVj8jrXjXb1iLITGpHokYQ74b0Qsu7GkdPwAA+64SqzWvE23zc1+iKjMWZIjQMIy4Pj55Z1ZI9Gv1qfatrdOcq"'; put '!!"/gXU1hRTI9IiNTlO9UpI4hs7ea9YlEAfIUt25GwIDAQABAoIBcGMoFGMCHe9BmJdEZQxkl8yuCrQ6AzVU3t0yKa5toVhljw4VPWeX22/qPjeMwf/hzA7qoeoY14r5kr3"'; put '!!"n1/sAEZLE5hingwxZaUHy+SQT9bSInzUNw0ZFrYxIYulQY0xryRoE2jc3lXK5MlxHSpnxMrNwA6YB3+m2xkiw3+9/C9Vyi1PZOgG3tiscqm2wKoU0TR/udrDK+0chy5o"'; put '!!"s2g86p2Po51CfZBZoCnPxp7NkGKOxISlLxuYNlP5etKLeIshMd9Bq0Atab+J6dhznCniADAReYFssER4WHBwdmxVsRE9U0bH4uhOCXDUwhhOL5X82gW9TA9TPZk4bdoh"'; put '!!"dgthMoKccYcth/hxPglJTngguoVGsu2XDuvmPPXtl/CRfFrtrWJWUHm408i+jt7+j7DfwtiCZsjKhDDlWJbeAYT+Ex3MtN5GZK8z6V+uUNQi7spDaNBIPTWXmiPwhIF/"'; put '!!"fCOuY4FiUemB+RFJOnWofJqyMR9yRAoG5APeffJHX5N5XPJTXwwYoD7ZUHh8evgjQzrXDE/k8J0Z1K1G5zIzheZmwCWSt2KlcjNd94tu7CE0wljqxrE8P7VPQk3bcWZF"'; put '!!"xC2BAuw4WYgnx2MNLC5PEKmbbNRlT10MnhzLjnYM/V7DMV4nu3XIHlybLDZDZm84hVbV58xDqxheLRVnK7r+Cip4KywuT5GsQ6Da8MKC0z7I2LgOAozvRA/hp1ILgv4q"'; put '!!"mPhpNXXRGAcSPwT8yy+bd9DECgbkA6FdbcwoUUMkgqjdKrNNWgrRmTmUUMbFDnwxpI7hEAN9kKeBju2G7/A8BK8IPZeiDDsiqWZ8UKKN4/rAXLoZnjDAygLdFGqcLPMq"'; put '!!"Dt8WOsp2tbEGyAujpKP+f9K158r70BIreNJ46iuoS+S3O2CziUJV1e2LPEl9sb7neAyDpxp8+LTuuLSuA3+htIGMbvZ8bgmC26a4AFt7bkHB/NY0mstx7D3pM9nTxIid"'; put '!!"SNOjWHIAqPLia0FArCwKBuQDflMt/S/ZEo3P52M8osedt84m3A6UGhLL//wH72kqEHatdgWumELghAoeYtjeYxA4PTIUXbUrTl3ktydsREApz0TI08kSVRALHh+rdj2w"'; put '!!"6Gnpj61CqvUaj1G2fTspgwkIautYv+XOOGRM5Ycnk+eGKj3DSRwmdFxAyacgEkFcITyHxL4Bevtm2VXx8Ga721S82rLkjgd6+xJjLZMz+Z300QSo2egO4ht4wFYa6Q7O"'; put '!!"47SvJim39KI8hAoG5AKqFKr30oNJlus6ShADxnqWRByD0OGz8H5gEgMnRfD9ztMyzPh8RbOlijcZyx+BQVJeuGLBr+1yUFcI+tNTVmfueiAJF/7a+8JVuQFvI56EZ7mT"'; put '!!"sllxiWnVXnyrxgvXwxaDr1oehtW+sub4dq5im4HaqKq4i570hQbGCJXoAVvMKfpSuH3hRXGV47VZ+xqZVttfqaXR52uDuMRECL6q67LMK9Fp4tTGQxET/vOrOFA6Y1eb"'; put '!!"4yc6nd98CgbkAtZOgSsazcIWxTXxqgMFXa+G6YXDeqm6nqOiaR+rH4H1i1Vzl08966vfOM0kRWPB1OrvQKGxg8uYNfSo8ZqprPrUdUnA1BesJjQV0kj3KWW7i/Ir4R90"'; put '!!"8NKEjyMn/+Vbi0i2ac1nSEm+2SydOonxSZixNzW2VevUuT5d4/i3UZo5fNXeCiBEzzJNw6MjYBxmMgcGWJvxMckpsGHGdQAj+hPkub8mHOZfaSmHfnxBvAFUdhLOasRj"'; put '!!"deQ=="'; put ',var_active=1;'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_name="DC_LICENCE_KEY"'; put ',var_scope="DC"'; put ',var_value="PEvKnV0EcmlJVrrx8JpXOc+/va+ksMzvkJBp05iVRtyl6xgFxhMAi+w4/7mHi4P2STbwV61mG2BGpBlO6qteDfZTmoROjRekcLw8wWxBMzghFwGvO93"'; put '!!"taapBmpyXm3cv26iAc9Yq8yiXhOX7ZO7+7PXIoH9rqCT5ILrIY0vqVYnwx+AyjUI7FMsfAwKApCaTVXOca5My3att5yCg2fz+MQhCZbEK1tbubk9kAlaJJtlYzSj"'; put '!!"J8ADuMR74rpGofk8YGOTegOjUGI+ENhkHW+ooh9fmNTkIilOBuNQ0irBvd49weejCDRtnX9/Twt8wv6r6QyYT31F5yuI2/G0NoHrjeWHjl5riD/q2NnC+aTXWVnV"'; put '!!"QP+0+e1H0ohUZd9bAw0BE7bFWpcriYovIsu6VlhzpdqFRnUZ0ULw9CesQa6X2qIazT9V9jxfM1Of53kwIxKrb1LTEMcvxKtTh1jEW4nfvwBs4UJ1W7+5u0j1FfY3"'; put '!!"FUtU="'; put ',var_active=1;'; put '%end;'; put '%else %if &syssite=70253615 %then %do;'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_LICENCE_KEY"'; put ',var_value=''4bfbZtsFbfGuqbZhJdAD8p8EbNmuxiaLaxMdTZPTJreRcfd0CYarXQoxCr3BMt6aWJjwFMvwG/7IXB6'''; put '!!''nxT9X0HH4dvgykgzKmSCY5q2lwENoNrUhk'''; put '!!''sF/iSvFuwKVuccW6NFKNahQhRBpfFBps6YrUzHG62yPrCzYDM0SFtS3EdeE6gijnhv4SGt+s77xutjitgdruRBg'''; put '!!''Zyt3bzCWs0yNgt/KqLClVOktgJ3/FV8Im0v'''; put '!!''nAhkUq0CwgQ698LO150RLF6j40E9md2WpNKuJeXKSl9+ejR+aln+COvS5iUVBX8UBVv5eviOOzu8hBI80HmMt'''; put ',var_active=1'; put ',var_desc=''Licence Key Placeholder for Data Controller Full Version'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_ACTIVATION_KEY"'; put ',var_value=''MIIEcAIBADANBgkqhkiG9w0BAQEFAASCBFowggRWAgEAAoHxAOlGX2CSHJjb4isZWpcXWwjrVcQrgs'''; put '!!''I6rAb7vN3c0TILF5+/Jmq2FcO02NUtYP7ai2puTv9PMvMKz3bxocvgIHiajAu1ZyK/r6IIcdgHbH'''; put '!!''xeTXv82JhTT4PlP+4NXCK1oKgthSyt1jhz0wzD9YeGEkB5Mn4IRH+6WWzrVJIG+dm4wnUpi9ia3Px9ktPoNLFA'''; put '!!''GBZopcTf7NM6O1WDQ5oaZG6r7y9G8jZWrgzTWyEiFpGytg3MCGJv7oW7YDk+2i/DKIuSZz6gc/BSSo'''; put '!!''ZcQZDKToAU+gFQZqnimWGhtv6szjNrfjCJ23b++wlvQ1C6bJE47wIDAQABAoHwciGwq36BSFaYfu6+MFtIe'''; put '!!''oItqbeCF8Z+AUKsYr5Vic78hXeP87jXyDNUvWQg50AE4xNKSka1Dk11OOQ6/ZVQPcGbkGT2K32ukC/ih0'''; put '!!''gGj4jSDz4juM9WAZmp4C4gLIlBq9btp/D7dQ5SLZY4rFBv4KSLjDc+UGHazLmFQgikMC+CBukDrZ7IvpjreII'''; put '!!''zVil18IyGnxuD22pFyY4pLG9nvrIsLhKAYaOQnRS29n34o6ZQ/tqCWJo3FaCCsXAa7zX9OEHh4lZNj5'''; put '!!''XdzN/LexaAmki9ObfXtX4W2wcMrFPX0Rt0QDznDF/a4uGS9WpHPKCxAnkA9l9P+ZJwM0hin8+B5cOuyMga5N'''; put '!!''DjMXI1vt2cpGzWUmtnFJcCNDX0nAHddWhmTXoKlCCyo1RzPHiWdO8LRhlnojptxcmhW1LfJLcn278NxD'''; put '!!''h1dFxQB0j/o7w4Js2ih3HjwD0GpVLXPPr0O1GORodb0OuZ3hXCTDFRAnkA8mQI4OLTW+VI9c1OSi5JNmXrl+jRPC'''; put '!!''BTPgjomGMAKCEvfLHfDjNQ/gN8asNo2uscgqWvGLEM83jxkpFhJ/lbcg02utPhVe4jOo+XSY3UEE'''; put '!!''wq8oGpx1k9QgbrCfRivoDZpRk+SrqQmO4PHKnHTAdLVgDQnvbISjY/AnkAoZXblx0jN49HF/d6A572+Lq9'''; put '!!''YMtb5uc4NsmUXgb//ihxAAEWsfWdS+CxRbrGNhRP8d0MLLFLryKL03+gjkZFQRI/QtS+Xm4Y6jSyEJ7awZ'''; put '!!''Ih/sI4vr5y5Amjble6PElHDaM4w590iYsyOeGAheNrJbgQP6dXuq8xAnkAi9duz9/NNO1ZZIZoLp/5mSq/'''; put '!!''+0pUvK2hmN6m4pPrWTucHAK6v4SXq5TzSN0oN3UBY9aW6FXtNOKH7Jl3Rgq02V4KP0tSa7MSHA0PqV3sBO'''; put '!!''MMvBBWlS5FCzzWiU23UlUgPAIOUCrGlZRyn4TL+G8U5a9erPePolEdAnkAltgzR4wcAzwf0HGc2sOXDrdk'''; put '!!''drjpEGPQONR72IGcC9rxLPTNFFW3xmLVy19oOikVluGTR7Pn5CmROxfXx5zT7fZHQXOM4uxA5soGs9jkQo'''; put '!!''lVw/KnvUZLLiiDKG4X/FTCyEPGnZPs131ZkGhhr6EirtwkHyG2zbly'''; put ',var_active=1'; put ',var_desc=''Activation Key Placeholder for Data Controller Full Version'';'; put '%end;'; put '%else %do;'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_LICENCE_KEY"'; put ',var_value='' '''; put ',var_active=1'; put ',var_desc=''Licence Key'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_ACTIVATION_KEY"'; put ',var_value='' '''; put ',var_active=1'; put ',var_desc=''Activation Key'';'; put '%end;'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''LIBRARY'''; put ',DD_SOURCE="&lib"'; put ',DD_SHORTDESC="Data Controller Control Tables"'; put ',DD_LONGDESC="# The Data Controller Library"'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''TABLE'''; put ',DD_SOURCE="&lib..MPE_TABLES"'; put ',DD_SHORTDESC="Configuration of new tables for Data Controller"'; put ',DD_LONGDESC="# MPE_TABLES - adding new tabels to Data Controller"'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''COLUMN'''; put ',DD_SOURCE="&lib..MPE_TABLES.DSN"'; put ',DD_SHORTDESC="Dataset Name to be edited"'; put ',DD_LONGDESC="_DSN_ - must be UPCASE"'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''DIRECTORY'''; put ',DD_SOURCE="/some/directory"'; put ',DD_SHORTDESC="Directory for some purpose"'; put ',DD_LONGDESC="This directory is great. It''s great directory.'; put 'It trumps all other directories."'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''TABLE'''; put ',DD_SOURCE="&lib"'; put ',DD_SHORTDESC="Transaction table for capturing Data Controller users"'; put ',DD_LONGDESC="After a user accepts the Data Controller EULA they are "'; put '!!"registered as a user in this table."'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''COLUMN'''; put ',DD_SOURCE="&lib..MPE_CONFIG.VAR_ACTIVE"'; put ',DD_SHORTDESC="Set to 1 to make an option active"'; put ',DD_LONGDESC="This value is used as a filter by data controller whenever "'; put '!!"querying for option settings."'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/**'; put '* MPE_GROUPS'; put '*/'; put 'insert into &lib..mpe_groups set'; put 'tx_from=0'; put ',group_name="dc-admin"'; put ',group_desc="Custom Group for Data Controller Purposes"'; put ',user_name="allbow"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_groups set'; put 'tx_from=0'; put ',group_name="dc-admin"'; put ',group_desc="Custom Group for Data Controller Purposes"'; put ',user_name="dctestuser1"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_groups set'; put 'tx_from=0'; put ',group_name="dc-admin"'; put ',group_desc="Custom Group for Data Controller Purposes"'; put ',user_name="mihmed"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_groups set'; put 'tx_from=0'; put ',group_name="sec-sas9-prd-ext-sasplatform-300115datacontroller"'; put ',group_desc="Custom Group for Data Controller Purposes"'; put ',user_name="DCTest"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/**'; put '* MPE_ROW_LEVEL_SECURITY'; put '*/'; put 'insert into &lib..mpe_row_level_security set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',RLS_RK=1'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''sec-sas9-prd-int-sasplatform-300114sasjs'''; put ',RLS_LIBREF="&lib."'; put ',RLS_TABLE="MPE_GROUPS"'; put ',RLS_GROUP_LOGIC=''AND'''; put ',RLS_SUBGROUP_LOGIC=''OR'''; put ',RLS_SUBGROUP_ID=0'; put ',RLS_VARIABLE_NM=''GROUP_NAME'''; put ',RLS_OPERATOR_NM=''NE'''; put ',RLS_RAW_VALUE="''-1''"'; put ',RLS_ACTIVE=1;'; put 'insert into &lib..mpe_row_level_security set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',RLS_RK=2'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''sec-sas9-prd-int-sasplatform-300114sasjs'''; put ',RLS_LIBREF="&lib"'; put ',RLS_TABLE="MPE_ROW_LEVEL_SECURITY"'; put ',RLS_GROUP_LOGIC=''AND'''; put ',RLS_SUBGROUP_LOGIC=''OR'''; put ',RLS_SUBGROUP_ID=0'; put ',RLS_VARIABLE_NM=''RLS_RK'''; put ',RLS_OPERATOR_NM=''>'''; put ',RLS_RAW_VALUE=''0'''; put ',RLS_ACTIVE=1;'; put 'insert into &lib..mpe_row_level_security set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',RLS_RK=3'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''DC Demo Group'''; put ',RLS_LIBREF="&lib"'; put ',RLS_TABLE="MPE_SECURITY"'; put ',RLS_GROUP_LOGIC=''AND'''; put ',RLS_SUBGROUP_LOGIC=''OR'''; put ',RLS_SUBGROUP_ID=0'; put ',RLS_VARIABLE_NM=''ACCESS_LEVEL'''; put ',RLS_OPERATOR_NM=''NE'''; put ',RLS_RAW_VALUE="''N/A''"'; put ',RLS_ACTIVE=1;'; put '/**'; put '* MPE_SECURITY'; put '*/'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="APPROVE"'; put ',sas_group="sec-sas9-prd-int-sasplatform-300114sasjs"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="EDIT"'; put ',sas_group="sec-sas9-prd-int-sasplatform-300114sasjs"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="APPROVE"'; put ',sas_group="sec-sas9-prd-ext-sasplatform-300114sasjs"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="EDIT"'; put ',sas_group="sec-sas9-prd-ext-sasplatform-300114sasjs"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="EDIT"'; put ',sas_group="dc-admin"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="APPROVE"'; put ',sas_group="dc-admin"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/* mpe_selectbox */'; put '%let rk=1;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=&rk'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_LOCKANYTABLE"'; put ',base_column="LOCK_STATUS_CD"'; put ',selectbox_value=''LOCKED'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_LOCKANYTABLE"'; put ',base_column="LOCK_STATUS_CD"'; put ',selectbox_value=''UNLOCKED'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="ACCESS_LEVEL"'; put ',selectbox_value=''EDIT'''; put ',selectbox_order=0'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="ACCESS_LEVEL"'; put ',selectbox_value=''APPROVE'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="ACCESS_LEVEL"'; put ',selectbox_value=''VIEW'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="ACCESS_LEVEL"'; put ',selectbox_value=''SIGNOFF'''; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_TABLES"'; put ',base_column="LOADTYPE"'; put ',selectbox_value=''UPDATE'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_TABLES"'; put ',base_column="LOADTYPE"'; put ',selectbox_value=''REPLACE'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_TABLES"'; put ',base_column="LOADTYPE"'; put ',selectbox_value=''TXTEMPORAL'''; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_TABLES"'; put ',base_column="LOADTYPE"'; put ',selectbox_value=''BITEMPORAL'''; put ',selectbox_order=4'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_TABLES"'; put ',base_column="LOADTYPE"'; put ',selectbox_value=''FORMAT_CAT'''; put ',selectbox_order=5'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ALERTS"'; put ',base_column="ALERT_EVENT"'; put ',selectbox_value=''*ALL*'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ALERTS"'; put ',base_column="ALERT_EVENT"'; put ',selectbox_value=''SUBMITTED'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ALERTS"'; put ',base_column="ALERT_EVENT"'; put ',selectbox_value=''APPROVED'''; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ALERTS"'; put ',base_column="ALERT_EVENT"'; put ',selectbox_value=''REJECTED'''; put ',selectbox_order=4'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_X_TEST"'; put ',base_column="SOME_DROPDOWN"'; put ',selectbox_value=''Option 1'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_X_TEST"'; put ',base_column="SOME_DROPDOWN"'; put ',selectbox_value=''Option 2'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_X_TEST"'; put ',base_column="SOME_DROPDOWN"'; put ',selectbox_value=''Option 3'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_X_TEST"'; put ',base_column="SOME_DROPDOWN"'; put ',selectbox_value="This is a long option. This option is very long. "'; put '!!"It is optional, though."'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="CASE"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="MINVAL"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="MAXVAL"'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="HARDSELECT"'; put ',selectbox_order=4'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="SOFTSELECT"'; put ',selectbox_order=5'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="NOTNULL"'; put ',selectbox_order=6'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="DSN"'; put ',selectbox_value="SOME_DATASET"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="DSN"'; put ',selectbox_value="EXAMPLE"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_DATADICTIONARY"'; put ',base_column="DD_TYPE"'; put ',selectbox_value="COLUMN"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_DATADICTIONARY"'; put ',base_column="DD_TYPE"'; put ',selectbox_value="TABLE"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_DATADICTIONARY"'; put ',base_column="DD_TYPE"'; put ',selectbox_value="LIBRARY"'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_DATADICTIONARY"'; put ',base_column="DD_TYPE"'; put ',selectbox_value="CATALOG"'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_DATADICTIONARY"'; put ',base_column="DD_TYPE"'; put ',selectbox_value="FORMAT"'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="LIBREF"'; put ',selectbox_value=''*ALL*'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="ACCESS_LEVEL"'; put ',selectbox_value=''AUDIT'''; put ',selectbox_order=4'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="HARDSELECT_HOOK"'; put ',selectbox_order=7'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="SOFTSELECT_HOOK"'; put ',selectbox_order=7'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_SCOPE"'; put ',selectbox_value="ALL"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_SCOPE"'; put ',selectbox_value="EDIT"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_SCOPE"'; put ',selectbox_value="VIEW"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_GROUP_LOGIC"'; put ',selectbox_value="AND"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_GROUP_LOGIC"'; put ',selectbox_value="OR"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_SUBGROUP_LOGIC"'; put ',selectbox_value="AND"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_SUBGROUP_LOGIC"'; put ',selectbox_value="OR"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="="'; put ',selectbox_order=0'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value=">"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="<"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="<="'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value=">="'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="BETWEEN"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="IN"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="NOT IN"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="NE"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="CONTAINS"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_EXCEL_CONFIG"'; put ',base_column="XL_RULE"'; put ',selectbox_value="FORMULA"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_ACTIVE"'; put ',selectbox_value="1"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_ACTIVE"'; put ',selectbox_value="0"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_ACTIVE"'; put ',selectbox_value="1"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_ACTIVE"'; put ',selectbox_value="0"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_SCOPE"'; put ',selectbox_value="EDIT"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_SCOPE"'; put ',selectbox_value="VIEW"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_SCOPE"'; put ',selectbox_value="ALL"'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_HIDE"'; put ',selectbox_value="0"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_HIDE"'; put ',selectbox_value="1"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put '/**'; put '* MPE_TABLES'; put '*/'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_COLUMN_LEVEL_SECURITY'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',buskey=''CLS_SCOPE CLS_GROUP CLS_LIBREF CLS_TABLE CLS_VARIABLE_NM'''; put ',notes=''Docs: https://docs.datacontroller.io/column-level-security'''; put ',post_edit_hook=''services/hooks/mpe_column_level_security_postedit'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_LOCKANYTABLE'''; put ',num_of_approvals_required=1'; put ',loadtype=''UPDATE'''; put ',buskey=''LOCK_LIB LOCK_DS'''; put ',notes=''This table may be edited when a process failed and left a lock'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_TABLES'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''LIBREF DSN'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',notes=''This entry allows the MP Editor to edit itself!'''; put ',post_edit_hook=''services/hooks/mpe_tables_postedit'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_SECURITY'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''LIBREF DSN ACCESS_LEVEL SAS_GROUP'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',notes=''Shows which metadata groups can edit which tables'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_SELECTBOX'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''SELECTBOX_RK'''; put ',var_txfrom=''VER_FROM_DTTM'''; put ',var_txto=''VER_TO_DTTM'''; put ',notes=''Can configure dropdowns for the front end'''; put ',rk_underlying=''SELECT_LIB SELECT_DS BASE_COLUMN SELECTBOX_VALUE'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_X_TEST'''; put ',num_of_approvals_required=1'; put ',loadtype=''UPDATE'''; put ',buskey=''PRIMARY_KEY_FIELD'''; put ',notes=''Test table for controller'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_EMAILS'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''USER_NAME'''; put ',notes=''Primary Emails Table (backup is metadata)'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_CONFIG'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''VAR_SCOPE VAR_NAME'''; put ',notes=''Configuration variables for Data Controller'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_ALERTS'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''ALERT_EVENT ALERT_LIB ALERT_DS ALERT_USER'''; put ',notes=''Configuration for alert email events'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_GROUPS'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''GROUP_NAME USER_NAME'''; put ',notes=''Configuration for additional groups within Data Controller'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_VALIDATIONS'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''BASE_LIB BASE_DS BASE_COL RULE_TYPE'''; put ',notes=''Configuration of data quality rules in Editor component'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',post_edit_hook=''services/hooks/mpe_validations_postedit'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_DATADICTIONARY'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''DD_TYPE DD_SOURCE'''; put ',notes=''Configuration of data dictionary'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_EXCEL_CONFIG'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''XL_LIBREF XL_TABLE XL_COLUMN'''; put ',notes=''Configuration of the excel import rules'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_ROW_LEVEL_SECURITY'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''RLS_RK'''; put ',notes=''Configuration of Row Level Security'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',rk_underlying=''RLS_SCOPE RLS_GROUP RLS_LIBREF RLS_TABLE RLS_GROUP_LOGIC '''; put '!!''RLS_SUBGROUP_LOGIC RLS_SUBGROUP_ID RLS_VARIABLE_NM RLS_OPERATOR_NM '''; put '!!''RLS_RAW_VALUE '''; put ',post_edit_hook=''services/hooks/mpe_row_level_security_postedit'''; put ';'; put '/* mpe_validations */'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_SCOPE"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_LIBREF"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_LIBREF"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_all"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_TABLE"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_TABLE"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/tables_all"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_VARIABLE_NM"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_VARIABLE_NM"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_ACTIVE"'; put ',rule_type=''MAXVAL'''; put ',rule_value=''1'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_HIDE"'; put ',rule_type=''MAXVAL'''; put ',rule_value=''1'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_GROUP"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/sas_groups"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ALERTS"'; put ',base_col="ALERT_LIB"'; put ',rule_type=''HARDSELECT_HOOK'''; put ',rule_value="services/validations/mpe_alerts.alert_lib"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="LIBREF"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="DSN"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="LIBREF"'; put ',rule_type=''NOTNULL'''; put ',rule_value='' '''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="DSN"'; put ',rule_type=''NOTNULL'''; put ',rule_value='' '''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="NUM_OF_APPROVALS_REQUIRED"'; put ',rule_type=''MINVAL'''; put ',rule_value=''1'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="BUSKEY"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="BUSKEY"'; put ',rule_type=''NOTNULL'''; put ',rule_value=" "'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_TXFROM"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_TXTO"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_BUSFROM"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_BUSTO"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_PROCESSED"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SECURITY"'; put ',base_col="LIBREF"'; put ',rule_type=''HARDSELECT'''; put ',rule_value="&lib..MPE_TABLES.LIBREF"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SECURITY"'; put ',base_col="DSN"'; put ',rule_type=''SOFTSELECT'''; put ',rule_value="&lib..MPE_TABLES.DSN"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SECURITY"'; put ',base_col="SAS_GROUP"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/sas_groups"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_VALIDATIONS"'; put ',base_col="BASE_LIB"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_VALIDATIONS"'; put ',base_col="BASE_DS"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/tables_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_VALIDATIONS"'; put ',base_col="BASE_COL"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_VALIDATIONS"'; put ',base_col="RULE_ACTIVE"'; put ',rule_type=''MINVAL'''; put ',rule_value="0"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_VALIDATIONS"'; put ',base_col="RULE_ACTIVE"'; put ',rule_type=''MAXVAL'''; put ',rule_value="1"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_EXCEL_CONFIG"'; put ',base_col="XL_LIBREF"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_EXCEL_CONFIG"'; put ',base_col="XL_TABLE"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/tables_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_EXCEL_CONFIG"'; put ',base_col="XL_COLUMN"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="LIBREF"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_all"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="DSN"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/mpe_tables.dsn"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_TXFROM"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_TXTO"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_BUSFROM"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_BUSTO"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_PROCESSED"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SELECTBOX"'; put ',base_col="SELECT_LIB"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SELECTBOX"'; put ',base_col="SELECT_DS"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/tables_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SELECTBOX"'; put ',base_col="BASE_COLUMN"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_col="RLS_GROUP"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/sas_groups"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_col="RLS_LIBREF"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_all"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_col="RLS_TABLE"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/tables_all"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_col="RLS_SUBGROUP_ID"'; put ',rule_type=''MINVAL'''; put ',rule_value=''0'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_col="RLS_VARIABLE_NM"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_X_TEST"'; put ',base_col="SOME_NUM"'; put ',rule_type=''HARDSELECT_HOOK'''; put ',rule_value="services/validations/mpe_x_test.some_num"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_EXCEL_CONFIG"'; put ',base_col="XL_ACTIVE"'; put ',rule_type=''MINVAL'''; put ',rule_value=''0'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_EXCEL_CONFIG"'; put ',base_col="XL_ACTIVE"'; put ',rule_type=''MAXVAL'''; put ',rule_value=''1'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/**'; put '* MPE_X_TEST'; put '*/'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=0'; put ',some_char=''this is dummy data'''; put ',some_dropdown=''Option 1'''; put ',some_num=42'; put ',some_date=42'; put ',some_datetime=42'; put ',some_time=42'; put ',some_shortnum=3'; put ',some_bestnum=44;'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=1'; put ',some_char=''more dummy data'''; put ',some_dropdown=''Option 2'''; put ',some_num=42'; put ',some_date=42'; put ',some_datetime=42'; put ',some_time=422'; put ',some_shortnum=3'; put ',some_bestnum=44;'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=2'; put ',some_char=''even more dummy data'''; put ',some_dropdown=''Option 3'''; put ',some_num=42'; put ',some_date=42'; put ',some_datetime=42'; put ',some_time=142'; put ',some_shortnum=3'; put ',some_bestnum=44;'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=3'; put ',some_char=repeat(''It was a dark and stormy night. The wind was blowing'''; put '!!'' a gale! The captain said to his mate - mate, tell us a tale. And'''; put '!!'' this, is the tale he told: '',3)'; put ',some_dropdown=''Option 2'''; put ',some_num=1613.001'; put ',some_date=423'; put ',some_datetime=423'; put ',some_time=44'; put ',some_shortnum=3'; put ',some_bestnum=44;'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=4'; put ',some_char=''if you can fill the unforgiving minute'''; put ',some_dropdown=''Option 1'''; put ',some_num=1613.001123456'; put ',some_date=4231'; put ',some_datetime=423123123'; put ',some_time=412'; put ',some_shortnum=3'; put ',some_bestnum=44;'; put '%do x=10 %to 500;'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=10&x'; put ',some_char="&x bottles of beer on the wall"'; put ',some_dropdown=''Option 1'''; put ',some_num=ranuni(0)'; put ',some_date=round(ranuni(0)*1000,1)'; put ',some_datetime=round(ranuni(0)*50000,1)'; put ',some_time=round(ranuni(0)*100,1)'; put ',some_shortnum=round(ranuni(0)*100,1)'; put ',some_bestnum=round(ranuni(0)*100,1);'; put '%end;'; put '%mend mpe_makedata;'; put '/** @cond */'; put '%macro mf_existfeature(feature'; put ')/*/STORE SOURCE*/;'; put '%let feature=%upcase(&feature);'; put '%local platform;'; put '%let platform=%mf_getplatform();'; put '%if &feature= %then %do;'; put '%put No feature was requested for detection;'; put '%end;'; put '%else %if &feature=COLCONSTRAINTS %then %do;'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=PROCLUA %then %do;'; put '/* https://blogs.sas.com/content/sasdummy/2015/08/03/using-lua-within-your-sas-programs */'; put '%if &platform=SASVIYA %then 1;'; put '%else %if "&sysver"="9.2" or "&sysver"="9.3" %then 0;'; put '%else %if "&SYSVLONG" < "9.04.01M3" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=DBMS_MEMTYPE %then %do;'; put '/* does dbms_memtype exist in dictionary.tables? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=EXPORTXLS %then %do;'; put '/* is it possible to PROC EXPORT an excel file? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 1;'; put '%else %if %sysfunc(sysprod(SAS/ACCESS Interface to PC Files)) = 1 %then 1;'; put '%else 0;'; put '%end;'; put '%else %do;'; put '-1'; put '%put &sysmacroname: &feature not found;'; put '%end;'; put '%mend mf_existfeature;'; put '/** @endcond */'; put '%macro mpe_makedatamodel(lib=);'; put '%if &syscc ne 0 %then %do;'; put '%put syscc=&syscc exiting &sysmacroname;'; put '%return;'; put '%end;'; put '%local notnull;'; put '%if %mf_existfeature(COLCONSTRAINTS)=1 %then %let notnull=not null;'; put '%put &=notnull;'; put 'proc sql;'; put 'create table &lib..mpe_alerts('; put 'tx_from num format=datetime19.3,'; put 'alert_event char(20),'; put 'alert_lib char(8),'; put 'alert_ds char(32),'; put 'alert_user char(100) ,'; put 'tx_to num ¬null format=datetime19.3'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_alerts;'; put 'index create'; put 'pk_mpealerts=(tx_from alert_event alert_lib alert_ds alert_user)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_audit('; put 'load_ref char(36) label=''unique load reference'','; put 'libref char(8) label=''Library Reference (8 chars)'','; put 'dsn char(32) label=''Dataset Name (32 chars)'','; put 'key_hash char(32) label='; put '''MD5 Hash of primary key values (pipe seperated)'','; put 'tgtvar_nm char(32) label=''Target variable name (32 chars)'','; put 'move_type char(1) label=''Either (A)ppended, (D)eleted or (M)odified'','; put 'processed_dttm num format=E8601DT26.6 label=''Processed at timestamp'','; put 'is_pk num label=''Is Primary Key Field? (1/0)'','; put 'is_diff num label='; put '''Did value change? (1/0/-1). Always -1 for appends and deletes.'','; put 'tgtvar_type char(1) label=''Either (C)haracter or (N)umeric'','; put 'oldval_num num format=best32. label=''Old (numeric) value'','; put 'newval_num num format=best32. label=''New (numeric) value'','; put 'oldval_char char(32765) label=''Old (character) value'','; put 'newval_char char(32765) label=''New (character) value'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_audit;'; put 'index create'; put 'pk_mpe_audit=(load_ref libref dsn key_hash tgtvar_nm)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_column_level_security('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'CLS_SCOPE char(4) ¬null,'; put 'CLS_GROUP char(64) ¬null,'; put 'CLS_LIBREF char(8) ¬null,'; put 'CLS_TABLE char(32) ¬null,'; put 'CLS_VARIABLE_NM char(32) ¬null,'; put 'CLS_ACTIVE num ¬null,'; put 'CLS_HIDE num'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_column_level_security;'; put 'index create'; put 'pk_mpe_column_level_security='; put '(tx_to CLS_SCOPE CLS_GROUP CLS_LIBREF CLS_TABLE CLS_VARIABLE_NM)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_config('; put 'tx_from num ¬null format=datetime19.3'; put ',tx_to num ¬null format=datetime19.3'; put ',var_scope varchar(10) ¬null'; put ',var_name varchar(32) ¬null'; put ',var_value varchar(5000)'; put ',var_active num'; put ',var_desc varchar(300)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_config;'; put 'index create'; put 'pk_mpe_config=(tx_to var_scope var_name)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datacatalog_libs('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'libref char(8) label=''Library Ref'','; put 'engine char(32) label=''Library Engine'','; put 'libname char(256) format=$256. label=''Library Name'','; put 'paths char(8192) label=''Library Paths'','; put 'perms char(500) label=''Library Permissions (if BASE)'','; put 'owners char(500) label=''Library Owners (if BASE)'','; put 'schemas char(500) label=''Library Schemas (if DB)'','; put 'libid char(17) label=''LibraryId'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datacatalog_libs;'; put 'index create'; put 'pk_mpe_datacatalog_libs=(libref tx_to)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datacatalog_TABS('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'libref char(8) label=''Library Name'','; put 'dsn char(64) label=''Member Name'','; put 'memtype char(8) label=''Member Type'','; put 'dbms_memtype char(32) label=''DBMS Member Type'','; put 'memlabel char(512) label=''Data Set Label'','; put 'typemem char(8) label=''Data Set Type'','; put 'nvar num label=''Number of Variables'','; put 'compress char(8) label=''Compression Routine'','; put 'pk_fields char(512)'; put 'label=''Primary Key Fields (identified by being in a constraint that is both Unique and Not Null)'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datacatalog_TABS;'; put 'index create'; put 'pk_mpe_datacatalog_TABS=(libref dsn tx_to)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datacatalog_vars('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'libref char(8) label=''Library Name'','; put 'dsn char(64) label=''Table Name'','; put 'name char(64) label=''Column Name'','; put 'memtype char(8) label=''Member Type'','; put 'type char(16) label=''Column Type'','; put 'length num label=''Column Length'','; put 'varnum num label=''Column Number in Table'','; put 'label char(512) label=''Column Label'','; put 'format char(49) label=''Column Format'','; put 'idxusage char(9) label=''Column Index Type'','; put 'notnull char(3) label=''Not NULL?'','; put 'pk_ind num label=''Primary Key Indicator (1=Primary Key field)'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datacatalog_vars;'; put 'index create'; put 'pk_mpe_datacatalog_vars=(libref dsn name tx_to)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datastatus_libs('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'libref char(8) label=''Library Name'','; put 'libsize num format=SIZEKMG. label=''Size of library'','; put 'table_cnt num label=''Number of Tables'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datastatus_libs;'; put 'index create'; put 'pk_mpe_datastatus_libs=(libref tx_to)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datastatus_tabs('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'libref char(8) label=''Library Name'','; put 'dsn char(64) label=''Member Name'','; put 'filesize num format=SIZEKMG. label=''Size of file'','; put 'crdate num format=DATETIME. informat=DATETIME. label=''Date Created'','; put 'modate num format=DATETIME. informat=DATETIME. label=''Date Modified'','; put 'nobs num label=''Number of Physical (Actual, inc. deleted) Observations'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datastatus_tabs;'; put 'index create'; put 'pk_mpe_datastatus_tabs=(libref dsn tx_to)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datadictionary'; put '('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'DD_TYPE char(16),'; put 'DD_SOURCE char(1024),'; put 'DD_SHORTDESC char(256),'; put 'DD_LONGDESC char(32767),'; put 'DD_OWNER char(128),'; put 'DD_RESPONSIBLE char(128),'; put 'DD_SENSITIVITY char(64)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datadictionary;'; put 'index create'; put 'pk_mpe_datadictionary=(tx_to dd_type dd_source)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_dataloads('; put 'libref varchar(8) ¬null,'; put 'dsn varchar(32) ¬null,'; put 'etlsource varchar(100) ¬null,'; put 'loadtype varchar(20) ¬null,'; put 'changed_records int,'; put 'new_records int,'; put 'deleted_records int,'; put 'duration num,'; put 'user_nm varchar(50) ¬null,'; put 'processed_dttm num format=datetime19.3,'; put 'mac_ver varchar(5)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_dataloads;'; put 'index create'; put 'pk_mpe_dataloads=(processed_dttm libref dsn etlsource)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_emails('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'user_name char(50) ¬null,'; put 'user_displayname char(100),'; put 'user_email char(100) ¬null'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_emails;'; put 'index create'; put 'pk_mpe_emails=(tx_to user_name)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_excel_config('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'xl_libref char(8),'; put 'xl_table char(32),'; put 'xl_column char(32),'; put 'xl_rule char(32),'; put 'xl_active num'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_excel_config;'; put 'index create'; put 'pk_mpe_excel_config=(tx_to xl_libref xl_table xl_column)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_filteranytable('; put 'filter_rk num ¬null,'; put 'filter_hash char(32) ¬null,'; put 'filter_table char(41) ¬null,'; put 'processed_dttm num ¬null format=datetime19.'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_filteranytable;'; put 'index create filter_rk /nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_filtersource('; put 'filter_hash char(32) ¬null,'; put 'filter_line num ¬null,'; put 'group_logic char(3) ¬null,'; put 'subgroup_logic char(3) ¬null,'; put 'subgroup_id num ¬null,'; put 'variable_nm varchar(32) ¬null,'; put 'operator_nm varchar(12) ¬null,'; put 'raw_value varchar(4000) ¬null,'; put 'processed_dttm num ¬null format=datetime19.'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_filtersource;'; put 'index create'; put 'pk_mpe_filtersource=(filter_hash filter_line)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_groups('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'group_name char(100) ¬null,'; put 'user_name char(50) ¬null,'; put 'group_desc char(256)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_groups;'; put 'index create'; put 'pk_mpe_groups=(tx_to group_name user_name)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_lineage_cols'; put '('; put 'col_id char(32),'; put 'direction char(1),'; put 'sourcecoluri char(256),'; put 'map_type char(256),'; put 'map_transform char(256),'; put 'jobname char(256),'; put 'sourcetablename char(256),'; put 'sourcecolname char(256),'; put 'targettablename char(256),'; put 'targetcolname char(256),'; put 'targetcoluri char(256),'; put 'Derived_Rule char(500),'; put 'level int,'; put 'modified_dttm num format=datetime19.3,'; put 'modified_by char(64)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_lineage_cols;'; put 'index create'; put 'pk_mpe_lineage_cols=(col_id direction sourcecoluri targetcoluri map_type map_transform)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..MPE_LINEAGE_TABS'; put '('; put 'tx_from num ¬null format=datetime19.3,'; put 'jobid char(17),'; put 'srctableid char(17),'; put 'tgttableid char(17),'; put 'jobname char(128),'; put 'srctabletype char(16),'; put 'srctablename char(64),'; put 'srclibref char(8),'; put 'tgttabletype char(16),'; put 'tgttablename char(64),'; put 'tgtlibref char(8),'; put 'tx_to num ¬null format=datetime19.3'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_lineage_tabs;'; put 'index create'; put 'pk_mpe_lineage_tabs=(tx_to jobid srctableid tgttableid)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_loads('; put 'csv_dir char(255),'; put 'user_nm char(50) ,'; put 'status char(15) ,'; put 'duration num ,'; put 'processed_dttm num format=datetime19.3,'; put 'reason_txt char(2048) ,'; put 'approvals char(64)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_loads;'; put 'index create csv_dir /nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_lockanytable('; put 'lock_lib varchar(8) ¬null ,'; put 'lock_ds varchar(32) ¬null,'; put 'lock_status_cd varchar(10) ¬null,'; put 'lock_user_nm varchar(100) ¬null ,'; put 'lock_ref varchar(200),'; put 'lock_pid varchar(10),'; put 'lock_start_dttm num format=E8601DT26.6,'; put 'lock_end_dttm num format=E8601DT26.6'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_lockanytable;'; put 'index create'; put 'pk_mpe_lockanytable=(lock_lib lock_ds)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_maxkeyvalues('; put 'keytable varchar(41) label=''Base table in libref.dataset format'','; put 'keycolumn char(32) format=$32.'; put 'label=''The Surrogate / Retained key field containing the key values.'','; put 'max_key num label='; put '''Integer value representing current max RK or SK value in the KEYTABLE'','; put 'processed_dttm num format=E8601DT26.6'; put 'label=''Datetime this value was last updated'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_maxkeyvalues;'; put 'index create keytable /nomiss unique;'; put 'quit;'; put '/* no PK defined as it is a transaction table */'; put 'proc sql;'; put 'create table &lib..mpe_requests('; put 'request_dttm num ¬null format=datetime19.,'; put 'request_user char(64) ¬null,'; put 'request_service char(64) ¬null,'; put 'request_params char(128)'; put ');'; put 'proc sql;'; put 'create table &lib..mpe_review('; put 'table_id varchar(32) ¬null,'; put 'reviewed_by_nm varchar(100) ¬null,'; put 'base_table varchar(41) ¬null,'; put 'review_status_id varchar(10) ¬null,'; put 'reviewed_on_dttm num ¬null format=datetime19.3,'; put 'review_reason_txt varchar(400)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_review;'; put 'index create'; put 'pk_mpe_review=(table_id reviewed_by_nm)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_row_level_security('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'RLS_RK num ¬null,'; put 'RLS_SCOPE char(8) ¬null,'; put 'RLS_GROUP char(128) ¬null,'; put 'RLS_LIBREF char(8) ¬null,'; put 'RLS_TABLE char(32) ¬null,'; put 'RLS_GROUP_LOGIC char(3) ¬null,'; put 'RLS_SUBGROUP_LOGIC char(3) ¬null,'; put 'RLS_SUBGROUP_ID num ¬null,'; put 'RLS_VARIABLE_NM varchar(32) ¬null,'; put 'RLS_OPERATOR_NM varchar(12) ¬null,'; put 'RLS_RAW_VALUE varchar(4000) ¬null,'; put 'RLS_ACTIVE num ¬null'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_row_level_security;'; put 'index create'; put 'pk_mpe_row_level_security=(tx_to RLS_RK)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_security('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'libref char(8) ¬null,'; put 'dsn char(32) ¬null,'; put 'access_level char(10) ¬null,'; put 'sas_group char(100) ¬null'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_security;'; put 'index create'; put 'pk_mpe_security=(tx_to libref dsn access_level sas_group)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_selectbox('; put 'ver_from_dttm num ¬null format=datetime19.3,/* timestamp for versioning*/'; put 'ver_to_dttm num ¬null format=datetime19.3, /* timestamp for versioning */'; put 'selectbox_rk num ¬null, /* surrogate key */'; put 'select_lib varchar(17) ¬null, /* libref (big enough for uri)*/'; put 'select_ds varchar(32) ¬null,'; put 'base_column varchar(36) ¬null, /* variable name against which to apply selectbox */'; put 'selectbox_value varchar(500) ¬null, /* selectbox value */'; put 'selectbox_order num , /* optional ordering (1 comes before 2) */'; put 'selectbox_type varchar(32) /* column type (blank for default, else'; put 'sas or js to indicate relevant system functions)*/'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_selectbox;'; put 'index create'; put 'pk_mpe_selectbox=(ver_to_dttm selectbox_rk)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_signoffs('; put 'tech_from_dttm num ¬null format=datetime19.3,'; put 'tech_to_dttm num ¬null format=datetime19.3,'; put 'signoff_table varchar(50) ¬null,'; put 'signoff_section_rk num ¬null,'; put 'signoff_version_rk num ¬null,'; put 'signoff_name varchar(100) ¬null'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_signoffs;'; put 'index create'; put 'pk_mpe_signoffs=(tech_to_dttm signoff_table signoff_section_rk)'; put '/nomiss unique;'; put 'quit;'; put '/* mpe_submit */'; put 'proc sql;'; put 'create table &lib..mpe_submit('; put 'table_id varchar(32) ¬null,'; put 'submit_status_cd varchar(10) ¬null,'; put 'base_lib char(8) ¬null,'; put 'base_ds char(32) ¬null,'; put 'submitted_by_nm varchar(100) ¬null,'; put 'submitted_on_dttm date ¬null format=datetime19.3,'; put 'submitted_reason_txt varchar(400),'; put 'input_obs num,'; put 'input_vars num,'; put 'num_of_approvals_required num ¬null ,'; put 'num_of_approvals_remaining num ¬null ,'; put 'reviewed_by_nm char(100),'; put 'reviewed_on_dttm num'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_submit;'; put 'index create table_id /nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_tables('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'libref char(8) ¬null,'; put 'dsn char(32) ¬null,'; put 'num_of_approvals_required int,'; put 'loadtype char(12) ,'; put 'buskey char(1000) ,'; put 'var_txfrom char(32) ,'; put 'var_txto char(32) ,'; put 'var_busfrom char(32) ,'; put 'var_busto char(32) ,'; put 'var_processed char(32) ,'; put 'close_vars varchar(500),'; put 'pre_edit_hook char(200),'; put 'post_edit_hook char(200),'; put 'pre_approve_hook char(200) ,'; put 'post_approve_hook char(200) ,'; put 'signoff_cols varchar(500),'; put 'signoff_hook varchar(200),'; put 'notes char(1000) ,'; put 'rk_underlying char(1000) ,'; put 'audit_libds char(41)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_tables;'; put 'index create'; put 'pk_mpe_tables=(tx_to libref dsn)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_users('; put 'user_id char(50) ¬null,'; put 'last_seen_dt num ¬null format=date9.,'; put 'registered_dt num ¬null format=date9.'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_users;'; put 'index create user_id /nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..MPE_VALIDATIONS'; put '('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'BASE_LIB varchar(8),'; put 'BASE_DS varchar(32),'; put 'BASE_COL varchar(32),'; put 'RULE_TYPE varchar(32),'; put 'RULE_VALUE varchar(128),'; put 'RULE_ACTIVE num ,'; put 'TX_TO num ¬null format=datetime19.3'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_validations;'; put 'index create'; put 'pk_mpe_validations=(tx_from base_lib base_ds base_col rule_type)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_x_test('; put 'primary_key_field num ¬null,'; put 'some_char char(32767) ,'; put 'some_dropdown char(128),'; put 'some_num num ,'; put 'some_date num format=date9.,'; put 'some_datetime num format=datetime19. informat=ANYDTDTM19.,'; put 'some_time num format=time8.,'; put 'some_shortnum num length=4,'; put 'some_bestnum num format=best.'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_x_test;'; put 'index create primary_key_field /nomiss unique;'; put 'quit;'; put '%mend mpe_makedatamodel;'; put '%macro mf_mkdir(dir'; put ')/*/STORE SOURCE*/;'; put '%local lastchar child parent;'; put '%let lastchar = %substr(&dir, %length(&dir));'; put '%if (%bquote(&lastchar) eq %str(:)) %then %do;'; put '/* Cannot create drive mappings */'; put '%return;'; put '%end;'; put '%if (%bquote(&lastchar)=%str(/)) or (%bquote(&lastchar)=%str(\)) %then %do;'; put '/* last char is a slash */'; put '%if (%length(&dir) eq 1) %then %do;'; put '/* one single slash - root location is assumed to exist */'; put '%return;'; put '%end;'; put '%else %do;'; put '/* strip last slash */'; put '%let dir = %substr(&dir, 1, %length(&dir)-1);'; put '%end;'; put '%end;'; put '%if (%sysfunc(fileexist(%bquote(&dir))) = 0) %then %do;'; put '/* directory does not exist so prepare to create */'; put '/* first get the childmost directory */'; put '%let child = %scan(&dir, -1, %str(/\:));'; put '/*'; put 'If child name = path name then there are no parents to create. Else'; put 'they must be recursively scanned.'; put '*/'; put '%if (%length(&dir) gt %length(&child)) %then %do;'; put '%let parent = %substr(&dir, 1, %length(&dir)-%length(&child));'; put '%mf_mkdir(&parent)'; put '%end;'; put '/*'; put 'Now create the directory. Complain loudly of any errs.'; put '*/'; put '%let dname = %sysfunc(dcreate(&child, &parent));'; put '%if (%bquote(&dname) eq ) %then %do;'; put '%put %str(ERR)OR: could not create &parent + &child;'; put '%abort cancel;'; put '%end;'; put '%else %do;'; put '%put Directory created: &dir;'; put '%end;'; put '%end;'; put '/* exit quietly if directory did exist.*/'; put '%mend mf_mkdir;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mm_createdocument('; put 'tree=/User Folders/sasdemo'; put ',name=myNote'; put ',desc=Created by &sysmacroname'; put ',textrole='; put ',frefin=mm_in'; put ',frefout=mm_out'; put ',mDebug=1'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%mp_abort(iftrue= (%mf_verifymacvars(tree name)=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Empty inputs: tree name)'; put ')'; put '/**'; put '* check tree exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree","Folder",type,uri);'; put 'call symputx(''type'',type,''l'');'; put 'call symputx(''treeuri'',uri,''l'');'; put 'run;'; put '%mp_abort('; put 'iftrue= (&type ne Tree)'; put ',mac=mm_createdocument.sas'; put ',msg=Tree &tree does not exist!'; put ')'; put '/**'; put '* Check object does not exist already'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree/&name","Note",type,uri);'; put 'call symputx(''type'',type,''l'');'; put 'call symputx(''docuri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &type = Document %then %do;'; put '%put Document &name already exists in &tree!;'; put '%return;'; put '%end;'; put '/**'; put '* Now we can create the document'; put '*/'; put 'filename &frefin temp;'; put '/* write header XML */'; put 'data _null_;'; put 'file &frefin;'; put 'name=quote("&name");'; put 'desc=quote("&desc");'; put 'textrole=quote("&textrole");'; put 'treeuri=quote("&treeuri");'; put 'put "$METAREPOSITORY"/'; put '''"/'; put '" "/'; put ''' '' /'; put '''''/'; put '/*URI="Document for public note" */'; put '""/'; put '"SAS"/'; put '"268435456";'; put 'run;'; put 'filename &frefout temp;'; put 'proc metadata in= &frefin out=&frefout verbose;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '%mend mm_createdocument;'; put '%macro mm_createfolder(path=,mDebug=0);'; put '%put &sysmacroname: execution started for &path;'; put '%local dbg errorcheck;'; put '%if &mDebug=0 %then %let dbg=*;'; put '%local parentFolderObjId child errorcheck paths;'; put '%let paths=0;'; put '%let errorcheck=1;'; put '%if &syscc ge 4 %then %do;'; put '%put SYSCC=&syscc - this macro requires a clean session;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'length objId parentId objType parent child $200'; put 'folderPath $1000;'; put 'call missing (of _all_);'; put 'folderPath = "%trim(&path)";'; put '* remove any trailing slash ;'; put 'if ( substr(folderPath,length(folderPath),1) = ''/'' ) then'; put 'folderPath=substr(folderPath,1,length(folderPath)-1);'; put '* name must not be blank;'; put 'if ( folderPath = '''' ) then do;'; put 'put "%str(ERR)OR: &sysmacroname PATH parameter value must be non-blank";'; put 'end;'; put '* must have a starting slash ;'; put 'if ( substr(folderPath,1,1) ne ''/'' ) then do;'; put 'put "%str(ERR)OR: &sysmacroname PATH param value must have starting slash";'; put 'stop;'; put 'end;'; put '* check if folder already exists ;'; put 'rc=metadata_pathobj('''',cats(folderPath,"(Folder)"),"",objType,objId);'; put 'if rc ge 1 then do;'; put 'put "NOTE: Folder " folderPath " already exists!";'; put 'stop;'; put 'end;'; put '* do not create a root (one level) folder ;'; put 'if countc(folderPath,''/'')=1 then do;'; put 'put "%str(ERR)OR: &sysmacroname will not create a new ROOT folder";'; put 'stop;'; put 'end;'; put '* check that root folder exists ;'; put 'root=cats(''/'',scan(folderpath,1,''/''),"(Folder)");'; put 'if metadata_pathobj('''',root,"",objType,parentId)<1 then do;'; put 'put "%str(ERR)OR: " root " does not exist!";'; put 'stop;'; put 'end;'; put '* check that parent folder exists ;'; put 'child=scan(folderPath,-1,''/'');'; put 'parent=substr(folderpath,1,length(folderpath)-length(child)-1);'; put 'rc=metadata_pathobj('''',cats(parent,"(Folder)"),"",objType,parentId);'; put 'if rc<1 then do;'; put 'putlog ''The following folders will be created:'';'; put '/* folder does not exist - so start from top and work down */'; put 'length newpath $1000;'; put 'paths=0;'; put 'do x=2 to countw(folderpath,''/'');'; put 'newpath='''';'; put 'do i=1 to x;'; put 'newpath=cats(newpath,''/'',scan(folderpath,i,''/''));'; put 'end;'; put 'rc=metadata_pathobj('''',cats(newpath,"(Folder)"),"",objType,parentId);'; put 'if rc<1 then do;'; put 'paths+1;'; put 'call symputx(cats(''path'',paths),newpath);'; put 'putlog newpath;'; put 'end;'; put 'call symputx(''paths'',paths);'; put 'end;'; put 'end;'; put 'else putlog "parent " parent " exists";'; put 'call symputx(''parentFolderObjId'',parentId,''l'');'; put 'call symputx(''child'',child,''l'');'; put 'call symputx(''errorcheck'',0,''l'');'; put '&dbg put (_all_)(=);'; put 'run;'; put '%if &errorcheck=1 or &syscc ge 4 %then %return;'; put '%if &paths>0 %then %do x=1 %to &paths;'; put '%put executing recursive call for &&path&x;'; put '%mm_createfolder(path=&&path&x)'; put '%end;'; put '%else %do;'; put 'filename __newdir temp;'; put 'options noquotelenmax;'; put '%local inmeta;'; put '%put creating: &path;'; put '%let inmeta=$METAREPOSITORY'; put ''; put 'SAS268435456'; put ';'; put 'proc metadata in="&inmeta" out=__newdir verbose;'; put 'run ;'; put '/* check it was successful */'; put 'data _null_;'; put 'length objId parentId objType parent child $200 ;'; put 'call missing (of _all_);'; put 'rc=metadata_pathobj('''',cats("&path","(Folder)"),"",objType,objId);'; put 'if rc ge 1 then do;'; put 'putlog "SUCCCESS! &path created.";'; put 'end;'; put 'else do;'; put 'putlog "%str(ERR)OR: unsuccessful attempt to create &path";'; put 'call symputx(''syscc'',8);'; put 'end;'; put 'run;'; put '/* write the response to the log for debugging */'; put '%if &mDebug ne 0 %then %do;'; put 'data _null_;'; put 'infile __newdir lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put 'filename __newdir clear;'; put '%end;'; put '%put &sysmacroname: execution finished for &path;'; put '%mend mm_createfolder;'; put '%macro mm_createlibrary('; put 'libname=My New Library'; put ',libref=mynewlib'; put ',libdesc=Created automatically using the mm_createlibrary macro'; put ',engine=BASE'; put ',tree=/User Folders/sasdemo'; put ',servercontext=SASApp'; put ',directory=/tmp/somelib'; put ',IsPreassigned=0'; put ',mDebug=0'; put ',frefin=mm_in'; put ',frefout=mm_out'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%let libref=%upcase(&libref);'; put '/**'; put '* Check Library does not exist already with this libname'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:SASLibrary?@Name=''&libname''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''liburi'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype = SASLibrary %then %do;'; put '%put %str(WARN)ING: Library (&liburi) already exists with libname (&libname);'; put '%return;'; put '%end;'; put '/**'; put '* Check Library does not exist already with this libref'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:SASLibrary?@Libref=''&libref''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''liburi'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype = SASLibrary %then %do;'; put '%put %str(WARN)ING: Library (&liburi) already exists with libref (&libref) ;'; put '%return;'; put '%end;'; put '/**'; put '* Attempt to create tree'; put '*/'; put '%mm_createfolder(path=&tree)'; put '/**'; put '* check tree exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree","Folder",type,uri);'; put 'call symputx(''foldertype'',type,''l'');'; put 'call symputx(''treeuri'',uri,''l'');'; put 'run;'; put '%if &foldertype ne Tree %then %do;'; put '%put %str(WARN)ING: Tree &tree does not exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Create filerefs for proc metadata call'; put '*/'; put 'filename &frefin temp;'; put 'filename &frefout temp;'; put '%mp_abort(iftrue= ('; put '&engine=BASE & %mf_verifymacvars(libname libref engine servercontext tree)=0'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Empty inputs: libname libref engine servercontext tree)'; put ')'; put '%if &engine=BASE %then %do;'; put '/**'; put '* Check that the ServerContext exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:ServerContext?@Name=''&ServerContext''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''serveruri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype ne ServerContext %then %do;'; put '%put %str(ERR)OR: ServerContext (&ServerContext) does not exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Get prototype info'; put '*/'; put 'data _null_;'; put 'length type uri str $256;'; put 'str="omsobj:Prototype?@Name=''Library.SAS.Prototype.Name.xmlKey.txt''";'; put 'rc=metadata_resolve(str,type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''prototypeuri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype ne Prototype %then %do;'; put '%put %str(ERR)OR: Prototype Library.SAS.Prototype.Name.xmlKey.txt not found;'; put '%return;'; put '%end;'; put '/**'; put '* Check that Physical location exists'; put '*/'; put '%if %sysfunc(fileexist(&directory))=0 %then %do;'; put '%put %str(ERR)OR: Physical directory (&directory) does not appear to exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Check that Directory Object exists in metadata'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:Directory?@DirectoryRole=''LibraryPath''"'; put '!!" and @DirectoryName=''&directory''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''directoryuri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype ne Directory %then %do;'; put '%put NOTE: Directory object does not exist for (&directory) location;'; put '%put NOTE: It will now be created;'; put 'data _null_;'; put 'file &frefin;'; put 'directory=quote(symget(''directory''));'; put 'put "$METAREPOSITORY "/'; put '''''/'; put '"SAS"/'; put '"268435456";'; put 'run;'; put 'proc metadata in= &frefin out=&frefout %if &mdebug=1 %then verbose;;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input; put _infile_;'; put 'run;'; put '%end;'; put '%put NOTE: Checking to ensure directory (&directory) object was created;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:Directory?@DirectoryRole=''LibraryPath''"'; put '!!" and @DirectoryName=''&directory''",type,uri);'; put 'call symputx(''checktype2'',type,''l'');'; put 'call symputx(''directoryuri'',uri,''l'');'; put '%if &mdebug=1 %then putlog (_all_)(=);;'; put 'run;'; put '%if &checktype2 ne Directory %then %do;'; put '%put %str(ERR)OR: Directory (&directory) object was NOT created!;'; put '%return;'; put '%end;'; put '%else %put NOTE: Directory (&directoryuri) successfully created!;'; put '%end;'; put '/**'; put '* check SAS version'; put '*/'; put '%if %sysevalf(&sysver lt 9.3) %then %do;'; put '%put %str(WARN)ING: Version 9.3 or later required;'; put '%return;'; put '%end;'; put '/**'; put '* Prepare the XML and create the library'; put '*/'; put 'data _null_;'; put 'file &frefin;'; put 'treeuri=quote(symget(''treeuri''));'; put 'serveruri=quote(symget(''serveruri''));'; put 'directoryuri=quote(symget(''directoryuri''));'; put 'libname=quote(symget(''libname''));'; put 'libref=quote(symget(''libref''));'; put 'IsPreassigned=quote(symget(''IsPreassigned''));'; put 'prototypeuri=quote(symget(''prototypeuri''));'; put '/* escape description so it can be stored as XML */'; put 'libdesc=tranwrd(symget(''libdesc''),''&'',''&'');'; put 'libdesc=tranwrd(libdesc,''<'',''<'');'; put 'libdesc=tranwrd(libdesc,''>'',''>'');'; put 'libdesc=tranwrd(libdesc,"''",''''');'; put 'libdesc=tranwrd(libdesc,''"'',''"'');'; put 'libdesc=tranwrd(libdesc,''0A''x,'' '');'; put 'libdesc=tranwrd(libdesc,''0D''x,'' '');'; put 'libdesc=tranwrd(libdesc,''$'',''$'');'; put 'libdesc=quote(trim(libdesc));'; put 'put "$METAREPOSITORY "/'; put '''''/'; put ''' ''/'; put ''' "/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put '" "/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put '''SAS''/'; put '''268435456'';'; put 'run;'; put 'proc metadata in= &frefin out=&frefout %if &mdebug=1 %then verbose ;;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input;put _infile_;'; put 'run;'; put '%end;'; put '%put NOTE: Checking to ensure library (&libname) was created;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree/&libname","Library",type,uri);'; put 'call symputx(''libtype'',type,''l'');'; put 'call symputx(''liburi'',uri,''l'');'; put '%if &mdebug=1 %then putlog (_all_)(=);;'; put 'run;'; put '%if &libtype ne SASLibrary %then %do;'; put '%put %str(ERR)OR: Could not find (&libname) at (&tree)!!;'; put '%return;'; put '%end;'; put '%else %put NOTE: Library (&libname) successfully created in (&tree)!;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Other library engine types are not yet supported!!;'; put '%end;'; put '/**'; put '* Wrap up'; put '*/'; put '%if &mdebug ne 1 %then %do;'; put 'filename &frefin clear;'; put 'filename &frefout clear;'; put '%end;'; put '%mend mm_createlibrary;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mm_getDirectories('; put 'path='; put ',outds=work.mm_getDirectories'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getDirectories.sas;'; put '%&mD.put _local_;'; put 'data &outds (keep=directoryuri name directoryname directorydesc );'; put 'length directoryuri name directoryname directorydesc $256;'; put 'call missing(of _all_);'; put '__i+1;'; put '%if %length(&path)=0 %then %do;'; put 'do while'; put '(metadata_getnobj("omsobj:Directory?@Id contains ''.''",__i,directoryuri)>0);'; put '%end; %else %do;'; put 'do while('; put 'metadata_getnobj("omsobj:Directory?@DirectoryName=''&path''",__i,directoryuri)'; put '>0'; put ');'; put '%end;'; put '__rc1=metadata_getattr(directoryuri, "Name", name);'; put '__rc2=metadata_getattr(directoryuri, "DirectoryName", directoryname);'; put '__rc3=metadata_getattr(directoryuri, "Desc", directorydesc);'; put '&mD.putlog (_all_) (=);'; put 'drop __:;'; put '__i+1;'; put 'if sum(of __rc1-__rc3)=0 then output;'; put 'end;'; put 'run;'; put '%mend mm_getDirectories;'; put '%macro mm_updatestpsourcecode(stp='; put ',stpcode='; put ',minify=NO'; put ',mdebug=0'; put ');'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&stp.(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '%if &mdebug=1 %then %do;'; put 'put tsuri= value=;'; put '%end;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%if &tsuri=stopifempty %then %do;'; put '%put %str(WARN)ING: &stp.(StoredProcess) not found!;'; put '%return;'; put '%end;'; put '%if %length(&stpcode)<2 %then %do;'; put '%put %str(WARN)ING: No SAS code supplied!!;'; put '%return;'; put '%end;'; put '%local frefin frefout;'; put '%let frefin=%mf_getuniquefileref();'; put '%let frefout=%mf_getuniquefileref();'; put '/* write header XML */'; put 'data _null_;'; put 'file &frefin;'; put 'put "$METAREPOSITORY'; put '2 %then %do;'; put 'data _null_;'; put 'file &frefin lrecl=32767 mod;'; put 'infile &stpcode lrecl=32767;'; put 'length outstr $32767;'; put 'input outstr ;'; put '/* escape code so it can be stored as XML */'; put 'outstr=tranwrd(_infile_,''&'',''&'');'; put 'outstr=tranwrd(outstr,''<'',''<'');'; put 'outstr=tranwrd(outstr,''>'',''>'');'; put 'outstr=tranwrd(outstr,"''",''''');'; put 'outstr=tranwrd(outstr,''"'',''"'');'; put 'outstr=tranwrd(outstr,''0A''x,'' '');'; put 'outstr=tranwrd(outstr,''0D''x,'' '');'; put 'outstr=tranwrd(outstr,''$'',''$'');'; put '%if &minify=YES %then %do;'; put 'outstr=cats(outstr);'; put 'if outstr ne '''';'; put 'if not (outstr=:''/*'' and subpad(left(reverse(outstr)),1,2)=''/*'');'; put '%end;'; put 'outstr=trim(outstr);'; put 'put outstr '' '';'; put 'run;'; put '%end;'; put 'data _null_;'; put 'file &frefin mod;'; put 'put "''>SAS268435456'; put '";'; put 'run;'; put 'proc metadata in= &frefin out=&frefout;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile &frefout lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '%else %do;'; put 'filename &frefin clear;'; put 'filename &frefout clear;'; put '%end;'; put '%mend mm_updatestpsourcecode;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro mm_getservercontexts('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* first get list of available repos */'; put '%mm_getrepos(outds=work.repos)'; put '%let repocnt=0;'; put 'data _null_;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'');'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put 'filename __mc1 temp;'; put 'filename __mc2 temp;'; put 'data &outds;'; put 'length serveruri servername $200;'; put 'call missing (of _all_);'; put 'stop;'; put 'run;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'proc metadata in='; put '"$METAREPOSITORY'; put 'ServerContextSAS'; put '0"'; put 'out=__mc1;'; put 'run;'; put '/*'; put 'data _null_;'; put 'infile __mc1 lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put 'data _null_;'; put 'file __mc2;'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/ServerContext";'; put 'put "";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/ServerContext/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/ServerContext/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname __mc3 xml xmlfileref=__mc1 xmlmap=__mc2;'; put 'proc append base=&outds data=__mc3.SASContexts;run;'; put 'libname __mc3 clear;'; put '%end;'; put 'options metarepository=&repo;'; put 'filename __mc1 clear;'; put 'filename __mc2 clear;'; put '%mend mm_getservercontexts;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mm_createstp('; put 'stpname=Macro People STP'; put ',stpdesc=This stp was created automatically by the mm_createstp macro'; put ',filename=mm_createstp.sas'; put ',directory=SASEnvironment/SASCode'; put ',tree=/User Folders/sasdemo'; put ',package=false'; put ',streaming=true'; put ',outds=work.mm_createstp'; put ',mDebug=0'; put ',server=SASApp'; put ',stptype=1'; put ',minify=NO'; put ',frefin=mm_in'; put ',frefout=mm_out'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_CreateSTP.sas;'; put '%&mD.put _local_;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(stpname filename directory tree)=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Empty inputs: stpname filename directory tree)'; put ')'; put '%mp_dropmembers(%scan(&outds,2,.))'; put '/**'; put '* check tree exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree","Folder",type,uri);'; put 'call symputx(''foldertype'',type,''l'');'; put 'call symputx(''treeuri'',uri,''l'');'; put 'run;'; put '%if &foldertype ne Tree %then %do;'; put '%put %str(WARN)ING: Tree &tree does not exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Check STP does not exist already'; put '*/'; put '%local cmtype;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree/&stpname",''StoredProcess'',type,uri);'; put 'call symputx(''cmtype'',type,''l'');'; put 'call symputx(''stpuri'',uri,''l'');'; put 'run;'; put '%if &cmtype = ClassifierMap %then %do;'; put '%put %str(WARN)ING: Stored Process &stpname already exists in &tree!;'; put '%return;'; put '%end;'; put '/**'; put '* Check that the physical file exists'; put '*/'; put '%if %sysfunc(fileexist(&directory/&filename)) ne 1 %then %do;'; put '%put %str(WARN)ING: FILE *&directory/&filename* NOT FOUND!;'; put '%return;'; put '%end;'; put '%if &stptype=1 %then %do;'; put '/* type 1 STP - where code is stored on filesystem */'; put '%if %sysevalf(&sysver lt 9.2) %then %do;'; put '%put %str(WARN)ING: Version 9.2 or later required;'; put '%return;'; put '%end;'; put '/* check directory object (where 9.2 source code reference is stored) */'; put 'data _null_;'; put 'length id $20 dirtype $256;'; put 'rc=metadata_resolve("&directory",dirtype,id);'; put 'call symputx(''checkdirtype'',dirtype,''l'');'; put 'run;'; put '%if &checkdirtype ne Directory %then %do;'; put '%mm_getdirectories(path=&directory,outds=&outds ,mDebug=&mDebug)'; put '%if %mf_nobs(&outds)=0 or %sysfunc(exist(&outds))=0 %then %do;'; put '%put %str(WARN)ING: The directory object does not exist for &directory;'; put '%return;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data &outds;'; put 'directoryuri="&directory";'; put 'run;'; put '%end;'; put 'data &outds (keep=stpuri prompturi fileuri texturi);'; put 'length stpuri prompturi fileuri texturi serveruri $256 ;'; put 'if _n_=1 then call missing (of _all_);'; put 'set &outds;'; put '/* final checks on uris */'; put 'length id $20 type $256;'; put '__rc=metadata_resolve("&treeuri",type,id);'; put 'if type ne ''Tree'' then do;'; put 'putlog "%str(WARN)ING: Invalid tree URI: &treeuri";'; put 'stopme=1;'; put 'end;'; put '__rc=metadata_resolve(directoryuri,type,id);'; put 'if type ne ''Directory'' then do;'; put 'putlog "%str(WARN)ING: Invalid directory URI: " directoryuri;'; put 'stopme=1;'; put 'end;'; put '/* get server info */'; put '__rc=metadata_resolve("&server",type,serveruri);'; put 'if type ne ''LogicalServer'' then do;'; put '__rc=metadata_getnobj("omsobj:LogicalServer?@Name=''&server''",1,serveruri);'; put 'if serveruri='''' then do;'; put 'putlog "%str(WARN)ING: Invalid server: &server";'; put 'stopme=1;'; put 'end;'; put 'end;'; put 'if stopme=1 then do;'; put 'putlog (_all_)(=);'; put 'stop;'; put 'end;'; put '/* create empty prompt */'; put 'rc1=METADATA_NEWOBJ(''PromptGroup'',prompturi,''Parameters'');'; put 'rc2=METADATA_SETATTR(prompturi, ''UsageVersion'', ''1000000'');'; put 'rc3=METADATA_SETATTR(prompturi, ''GroupType'',''2'');'; put 'rc4=METADATA_SETATTR(prompturi, ''Name'',''Parameters'');'; put 'rc5=METADATA_SETATTR(prompturi, ''PublicType'',''Embedded:PromptGroup'');'; put 'GroupInfo='; put '"";'; put 'rc6 = METADATA_SETATTR(prompturi, ''GroupInfo'',groupinfo);'; put 'if sum(of rc1-rc6) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating prompt.";'; put 'if prompturi ne . then do;'; put 'putlog '' Removing orphan: '' prompturi;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'put rc=;'; put 'end;'; put 'stop;'; put 'end;'; put '/* create a file uri */'; put 'rc7=METADATA_NEWOBJ(''File'',fileuri,''SP Source File'');'; put 'rc8=METADATA_SETATTR(fileuri, ''FileName'',"&filename");'; put 'rc9=METADATA_SETATTR(fileuri, ''IsARelativeName'',''1'');'; put 'rc10=METADATA_SETASSN(fileuri, ''Directories'',''MODIFY'',directoryuri);'; put 'if sum(of rc7-rc10) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating file.";'; put 'if fileuri ne . then do;'; put 'putlog '' Removing orphans:'' prompturi fileuri;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'rc = METADATA_DELOBJ(fileuri);'; put 'put (_all_)(=);'; put 'end;'; put 'stop;'; put 'end;'; put '/* create a TextStore object */'; put 'rc11= METADATA_NEWOBJ(''TextStore'',texturi,''Stored Process'');'; put 'rc12= METADATA_SETATTR(texturi, ''TextRole'',''StoredProcessConfiguration'');'; put 'rc13= METADATA_SETATTR(texturi, ''TextType'',''XML'');'; put 'storedtext='''''; put '!!""'; put '!!"";'; put 'rc14= METADATA_SETATTR(texturi, ''StoredText'',storedtext);'; put 'if sum(of rc11-rc14) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating TextStore.";'; put 'if texturi ne . then do;'; put 'putlog '' Removing orphans: '' prompturi fileuri texturi;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'rc = METADATA_DELOBJ(fileuri);'; put 'rc = METADATA_DELOBJ(texturi);'; put 'put (_all_)(=);'; put 'end;'; put 'stop;'; put 'end;'; put '/* create meta obj */'; put 'rc15= METADATA_NEWOBJ(''ClassifierMap'',stpuri,"&stpname");'; put 'rc16= METADATA_SETASSN(stpuri, ''Trees'',''MODIFY'',treeuri);'; put 'rc17= METADATA_SETASSN(stpuri, ''ComputeLocations'',''MODIFY'',serveruri);'; put 'rc18= METADATA_SETASSN(stpuri, ''SourceCode'',''MODIFY'',fileuri);'; put 'rc19= METADATA_SETASSN(stpuri, ''Prompts'',''MODIFY'',prompturi);'; put 'rc20= METADATA_SETASSN(stpuri, ''Notes'',''MODIFY'',texturi);'; put 'rc21= METADATA_SETATTR(stpuri, ''PublicType'', ''StoredProcess'');'; put 'rc22= METADATA_SETATTR(stpuri, ''TransformRole'', ''StoredProcess'');'; put 'rc23= METADATA_SETATTR(stpuri, ''UsageVersion'', ''1000000'');'; put 'rc24= METADATA_SETATTR(stpuri, ''Desc'', "&stpdesc");'; put '/* tidy up if err */'; put 'if sum(of rc15-rc24) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating STP.";'; put 'if stpuri ne . then do;'; put 'putlog '' Removing orphans: '' prompturi fileuri texturi stpuri;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'rc = METADATA_DELOBJ(fileuri);'; put 'rc = METADATA_DELOBJ(texturi);'; put 'rc = METADATA_DELOBJ(stpuri);'; put 'put (_all_)(=);'; put 'end;'; put 'end;'; put 'else do;'; put 'fullpath=cats(''_program='',treepath,"/&stpname");'; put 'putlog "NOTE: Stored Process Created!";'; put 'putlog "NOTE- "; putlog "NOTE-"; putlog "NOTE-" fullpath;'; put 'putlog "NOTE- "; putlog "NOTE-";'; put 'end;'; put 'output;'; put 'stop;'; put 'run;'; put '%end;'; put '%else %if &stptype=2 %then %do;'; put '/* type 2 stp - code is stored in metadata */'; put '%if %sysevalf(&sysver lt 9.3) %then %do;'; put '%put %str(WARN)ING: SAS version 9.3 or later required to create type2 STPs;'; put '%return;'; put '%end;'; put '/* check we have the correct ServerContext */'; put '%mm_getservercontexts(outds=contexts)'; put '%local serveruri; %let serveruri=NOTFOUND;'; put 'data _null_;'; put 'set contexts;'; put 'where upcase(servername)="%upcase(&server)";'; put 'call symputx(''serveruri'',serveruri);'; put 'run;'; put '%if &serveruri=NOTFOUND %then %do;'; put '%put %str(WARN)ING: ServerContext *&server* not found!;'; put '%return;'; put '%end;'; put '/**'; put '* First, create a Hello World type 2 stored process'; put '*/'; put 'filename &frefin temp;'; put 'data _null_;'; put 'file &frefin;'; put 'treeuri=quote(symget(''treeuri''));'; put 'serveruri=quote(symget(''serveruri''));'; put 'stpdesc=quote(symget(''stpdesc''));'; put 'stpname=quote(symget(''stpname''));'; put 'put "$METAREPOSITORY "/'; put '''''/'; put '" "/'; put '" "/'; put '" "/'; put '" "/'; put ''' ''/'; put ''' '' /'; put '" "/'; put '" "/'; put ''' ''/'; put '" "/'; put '""/'; put '"SAS"/'; put '"268435456";'; put 'run;'; put 'filename &frefout temp;'; put 'proc metadata in= &frefin out=&frefout ;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '/**'; put '* Next, add the source code'; put '*/'; put '%mm_updatestpsourcecode(stp=&tree/&stpname'; put ',stpcode="&directory/&filename"'; put ',mdebug=&mdebug'; put ',minify=&minify)'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: STPTYPE=*&stptype* not recognised!;'; put '%end;'; put '%mend mm_createstp;'; put '%macro mm_deletedocument('; put 'target='; put ')/*/STORE SOURCE*/;'; put '/**'; put '* Check document exist'; put '*/'; put '%local type;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&target",''Note'',type,uri);'; put 'call symputx(''type'',type,''l'');'; put 'call symputx(''stpuri'',uri,''l'');'; put 'run;'; put '%if &type ne Document %then %do;'; put '%put %str(WARN)ING: No Document found at ⌖'; put '%return;'; put '%end;'; put 'filename __in temp lrecl=10000;'; put 'filename __out temp lrecl=10000;'; put 'data _null_ ;'; put 'file __in ;'; put 'put "";'; put 'put "SAS268436480";'; put 'put "";'; put 'run ;'; put 'proc metadata in=__in out=__out verbose;run;'; put '/* list the result */'; put 'data _null_;infile __out; input; list; run;'; put 'filename __in clear;'; put 'filename __out clear;'; put '/**'; put '* Check deletion'; put '*/'; put '%local isgone;'; put 'data _null_;'; put 'length type uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_pathobj("","&target",''Note'',type,uri);'; put 'call symputx(''isgone'',type,''l'');'; put 'run;'; put '%if &isgone = Document %then %do;'; put '%put %str(ERR)OR: Document not deleted from ⌖'; put '%let syscc=4;'; put '%return;'; put '%end;'; put '%mend mm_deletedocument;'; put '%macro mm_deletestp('; put 'target='; put ')/*/STORE SOURCE*/;'; put '/**'; put '* Check STP does exist'; put '*/'; put '%local cmtype;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&target",''StoredProcess'',type,uri);'; put 'call symputx(''cmtype'',type,''l'');'; put 'call symputx(''stpuri'',uri,''l'');'; put 'run;'; put '%if &cmtype ne ClassifierMap %then %do;'; put '%put NOTE: No Stored Process found at ⌖'; put '%return;'; put '%end;'; put 'filename __in temp lrecl=10000;'; put 'filename __out temp lrecl=10000;'; put 'data _null_ ;'; put 'file __in ;'; put 'put "";'; put 'put "SAS268436480";'; put 'put "";'; put 'run ;'; put 'proc metadata in=__in out=__out verbose;run;'; put '/* list the result */'; put 'data _null_;infile __out; input; list; run;'; put 'filename __in clear;'; put 'filename __out clear;'; put '/**'; put '* Check deletion'; put '*/'; put '%local isgone;'; put 'data _null_;'; put 'length type uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_pathobj("","&target",''Note'',type,uri);'; put 'call symputx(''isgone'',type,''l'');'; put 'run;'; put '%if &isgone = ClassifierMap %then %do;'; put '%put %str(ERR)OR: STP not deleted from ⌖'; put '%let syscc=4;'; put '%return;'; put '%end;'; put '%mend mm_deletestp;'; put '%macro mm_getstpinfo(pgm'; put ',outds=work.mm_getstpinfo'; put ',mDebug=0'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put 'data &outds;'; put 'length type stp_uri tsuri servercontext value $200'; put 'StoredProcessConfiguration $1000 sourcecode_first32k $32767;'; put 'keep path stp_uri sourcecode_first32k StoredProcessConfiguration'; put 'servercontext;'; put 'call missing (of _all_);'; put 'path="&pgm(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,stp_uri)>0 then do;'; put '/* get attributes */'; put 'cnt=1;'; put 'do while (metadata_getnasn(stp_uri,"Notes",cnt,tsuri)>0);'; put 'rc1=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put 'rc2=metadata_getattr(tsuri,"StoredText",sourcecode_first32k);'; put 'end;'; put 'else if value="Stored Process" then do;'; put 'rc3=metadata_getattr(tsuri,"StoredText",StoredProcessConfiguration);'; put 'end;'; put 'cnt+1;'; put 'end;'; put '/* get context (should only be one) */'; put 'rc4=metadata_getnasn(stp_uri,"ComputeLocations",1,tsuri);'; put 'rc5=metadata_getattr(tsuri,"Name",servercontext);'; put 'end;'; put 'else do;'; put 'put "%str(ERR)OR: could not find " path;'; put 'put (_all_)(=);'; put 'end;'; put '&md.put (_all_)(=);'; put 'run;'; put '%mend mm_getstpinfo ;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief service for creating the configuration tables in DEMO mode.'; put '@details'; put 'STP for creating the configuration tables in DEMO mode.'; put 'It also adds the STAGING directory as subdirectory to the BASE'; put 'library location.'; put 'Note - the CURLIB var is added during the build process.'; put '@warning This STP self destructs! It will delete itself after a successful run'; put 'to avoid being executed twice (and overwriting actual data)'; put '

SAS Macros

'; put '@li mf_getapploc.sas'; put '@li mf_getuser.sas'; put '@li mf_mkdir.sas'; put '@li mm_createdocument.sas'; put '@li mm_createlibrary.sas'; put '@li mm_createstp.sas'; put '@li mm_deletedocument.sas'; put '@li mm_deletestp.sas'; put '@li mm_getstpcode.sas'; put '@li mm_getstpinfo.sas'; put '@li mp_abort.sas'; put '@li mp_init.sas'; put '@li mpe_makedata.sas'; put '@li mpe_makedatamodel.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mp_init()'; put '%global admin repo path; /* URL params from configurator */'; put '%let repo=%sysfunc(coalescec(&repo,Foundation));'; put '%let admin=%sysfunc(coalescec(&admin,dc-admin));'; put '%let dcpath=%sysfunc(coalescec(&path,NOTFOUND));'; put '%mp_abort(iftrue= ("&dcpath" = "NOTFOUND")'; put ',mac=&_program'; put ',msg=%str(PATH variable was not provided)'; put ')'; put '%let root=%mf_getapploc();'; put '%let work=%sysfunc(pathname(work));'; put '%let dc_libref=%upcase(DC%substr(%sysevalf(%sysfunc(datetime())/60),3,6));'; put '%let DC_LIBNAME=Data Controller(&dc_libref);'; put '%let dcpath=&dcpath/&dc_libref;'; put '%put _all_;'; put '%mf_mkdir(&dcpath/dc_staging)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Unable to create &dcpath using &sysuserid)'; put ')'; put '/* check we have the admin rights to update the items in the Admin folder */'; put '%mm_createdocument(tree=&root/services/admin,name=permTest)'; put '%mm_deletedocument(target=&root/services/admin/permTest)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(User &_metaperson does not have WriteMetadata on metadata folder:'; put '&root )'; put ')'; put '/* check we have physical permissions to the DCLIB folder */'; put 'data _null_;'; put 'putlog "dcpath=&dcpath/permTest.txt";'; put 'putlog "sysuserid=&sysuserid";'; put 'data _null_;'; put 'file "&dcpath/permTest.txt";'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(User &sysuserid does not have WRITE permissions on physical'; put 'directory: &dcpath )'; put ')'; put 'filename delfile "&dcpath/permTest.txt";'; put 'data _null_;'; put 'rc=fdelete(''delfile'');'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(User &sysuserid could create (but not delete) &dcpath/permTest.txt )'; put ')'; put '/* get the server context from the current STP */'; put '%mm_getstpinfo(&_program,outds=work.stpinfo)'; put 'data _null_;'; put 'set work.stpinfo;'; put 'call symputx(''serverContext'',serverContext);'; put 'run;'; put '/* create the library */'; put '%mm_createlibrary('; put 'libname=&DC_LIBNAME'; put ',libref=&dc_libref'; put ',libdesc=Data Controller for SAS configuration tables'; put ',engine=BASE'; put ',tree=&root/data'; put ',servercontext=&serverContext'; put ',directory=&dcpath'; put ',mDebug=1'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=buildtermsas9'; put ',msg=%str(Unable to create &dc_libref library)'; put ')'; put '/* assign the library */'; put 'libname &dc_libref "&dcpath";'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=buildtermsas9'; put ',msg=%str(Unable to assign the &dc_libref library)'; put ')'; put '/* make the tables */'; put '/* SASAdministrators */'; put '%mpe_makedatamodel(lib=&dc_libref)'; put '%mpe_makedata(lib=&DC_LIBREF,mpeadmins=&admin,path=%str(&dcpath))'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem creating tables in &DC_LIBREF library\n'; put 'SYSERRORTEXT=&SYSERRORTEXT \n'; put 'SYSWARNINGTEXT=&SYSWARNINGTEXT)'; put ')'; put '/* register tables in metadata */'; put 'proc metalib;'; put 'omr (library="&DC_LIBNAME");'; put 'folder="&root/data";'; put 'update_rule=(delete);'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem registering metadata for tables in &DC_LIBREF library \n'; put 'os user=&sysuserid \n'; put 'metaperson=%mf_getuser() \n'; put 'SYSERRORTEXT=&SYSERRORTEXT \n'; put 'SYSWARNINGTEXT=&SYSWARNINGTEXT'; put ')'; put ')'; put '/* finally, update the app component. The user will need WM perms for this. */'; put 'data _null_;'; put 'file "&work/settings.sas" mod ;'; put 'put '' '';'; put 'put ''%global DC_LIBREF DC_LIBNAME DC_LIBLOC DC_STAGING_AREA DC_ADMIN_GROUP'';'; put 'put '' DC_REPO_USERS DC_DTTMTFMT DC_MACROS;'';'; put 'put '' '';'; put 'put ''/* This metadata library (libref) contains control datasets for DC */'';'; put 'put ''/* If a different libref must be used, configure it below */'';'; put 'put ''%let DC_LIBREF='' "&DC_LIBREF;";'; put 'put ''%let DC_LIBNAME='' "&DC_LIBNAME;";'; put 'put ''%let DC_LIBLOC='' "&dcpath;";'; put 'put '' '';'; put 'put ''libname &DC_LIBREF "&dc_libloc";'';'; put 'put '' '';'; put 'put ''/* This metadata group has unrestricted access to Data Controller */'';'; put 'put ''%let dc_admin_group='' "&admin;";'; put 'put '' '';'; put 'put ''/* This repository is used to query for users and groups */'';'; put 'put ''%let dc_repo_users='' "&repo;";'; put 'put '' '';'; put 'put ''/* This physical location is used for staging data and audit history */'';'; put 'put ''%let dc_staging_area=&dc_libloc/dc_staging;'';'; put 'put '' '';'; put 'put ''data _null_;'';'; put 'put '' set &DC_LIBREF..mpe_config(where=('';'; put 'put '' var_scope="DC" '';'; put 'put '' and &dc_dttmtfmt. lt tx_to'';'; put 'put '' and var_active=1'';'; put 'put " ));";'; put 'put " call symputx(var_name,var_value,''G'');";'; put 'put '' putlog var_name "=" var_value;'';'; put 'put "run;";'; put 'put '' '';'; put 'put ''/* to override any DC macros with client versions, place them below */'';'; put 'put ''options insert=(sasautos=("&dc_macros"));'';'; put 'run;'; put '/*'; put 'put ''data _null_;'';'; put 'put '' length lib_uri up_uri path $256;'';'; put 'put '' call missing (of _all_);'';'; put 'put '' rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''''&dc_libref''''",1,lib_uri);'';'; put 'put '' rc=metadata_getnasn(lib_uri,"UsingPackages",1,up_uri);'';'; put 'put '' rc=metadata_getattr(up_uri,"DirectoryName",path);'';'; put 'put '' call symputx("dc_libloc",path);'';'; put 'put ''run;'';'; put '*/'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=syscc=&syscc when preparing data_controller_settings)'; put ')'; put '%mm_createstp(stpname=Data_Controller_Settings'; put ',filename=settings.sas'; put ',directory=&work'; put ',tree=&root/services/public'; put ',Server=&serverContext'; put ',stptype=2'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str('; put 'Problem updating the dc_staging area in'; put '&root/services/public/DataController Settings \n'; put 'SYSERRORTEXT=&SYSERRORTEXT \n'; put 'SYSWARNINGTEXT=&SYSWARNINGTEXT'; put ')'; put ')'; put 'data _null_;'; put 'file _webout;'; put 'put ''

Data Controller Config

'';'; put 'put ''

The following items have been successfully configured:

'';'; put 'put "";'; put 'put "

Next Steps:

";'; put 'put "
  1. Populate ";'; put 'put "Table Lineage
  2. ";'; put 'put "
  3. Populate";'; put 'put "Data Catalog
  4. ";'; put 'put "
  5. Now, ";'; put 'put "hereLaunch!
";'; put 'run;'; put '/* We ran successfully, now remove configurator and makedata STPs */'; put '%mm_deletestp(target=&root/services/admin/configurator)'; put '%mm_deletestp(target=&_program)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=makelib; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mm_createfolder(path=,mDebug=0);'; put '%put &sysmacroname: execution started for &path;'; put '%local dbg errorcheck;'; put '%if &mDebug=0 %then %let dbg=*;'; put '%local parentFolderObjId child errorcheck paths;'; put '%let paths=0;'; put '%let errorcheck=1;'; put '%if &syscc ge 4 %then %do;'; put '%put SYSCC=&syscc - this macro requires a clean session;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'length objId parentId objType parent child $200'; put 'folderPath $1000;'; put 'call missing (of _all_);'; put 'folderPath = "%trim(&path)";'; put '* remove any trailing slash ;'; put 'if ( substr(folderPath,length(folderPath),1) = ''/'' ) then'; put 'folderPath=substr(folderPath,1,length(folderPath)-1);'; put '* name must not be blank;'; put 'if ( folderPath = '''' ) then do;'; put 'put "%str(ERR)OR: &sysmacroname PATH parameter value must be non-blank";'; put 'end;'; put '* must have a starting slash ;'; put 'if ( substr(folderPath,1,1) ne ''/'' ) then do;'; put 'put "%str(ERR)OR: &sysmacroname PATH param value must have starting slash";'; put 'stop;'; put 'end;'; put '* check if folder already exists ;'; put 'rc=metadata_pathobj('''',cats(folderPath,"(Folder)"),"",objType,objId);'; put 'if rc ge 1 then do;'; put 'put "NOTE: Folder " folderPath " already exists!";'; put 'stop;'; put 'end;'; put '* do not create a root (one level) folder ;'; put 'if countc(folderPath,''/'')=1 then do;'; put 'put "%str(ERR)OR: &sysmacroname will not create a new ROOT folder";'; put 'stop;'; put 'end;'; put '* check that root folder exists ;'; put 'root=cats(''/'',scan(folderpath,1,''/''),"(Folder)");'; put 'if metadata_pathobj('''',root,"",objType,parentId)<1 then do;'; put 'put "%str(ERR)OR: " root " does not exist!";'; put 'stop;'; put 'end;'; put '* check that parent folder exists ;'; put 'child=scan(folderPath,-1,''/'');'; put 'parent=substr(folderpath,1,length(folderpath)-length(child)-1);'; put 'rc=metadata_pathobj('''',cats(parent,"(Folder)"),"",objType,parentId);'; put 'if rc<1 then do;'; put 'putlog ''The following folders will be created:'';'; put '/* folder does not exist - so start from top and work down */'; put 'length newpath $1000;'; put 'paths=0;'; put 'do x=2 to countw(folderpath,''/'');'; put 'newpath='''';'; put 'do i=1 to x;'; put 'newpath=cats(newpath,''/'',scan(folderpath,i,''/''));'; put 'end;'; put 'rc=metadata_pathobj('''',cats(newpath,"(Folder)"),"",objType,parentId);'; put 'if rc<1 then do;'; put 'paths+1;'; put 'call symputx(cats(''path'',paths),newpath);'; put 'putlog newpath;'; put 'end;'; put 'call symputx(''paths'',paths);'; put 'end;'; put 'end;'; put 'else putlog "parent " parent " exists";'; put 'call symputx(''parentFolderObjId'',parentId,''l'');'; put 'call symputx(''child'',child,''l'');'; put 'call symputx(''errorcheck'',0,''l'');'; put '&dbg put (_all_)(=);'; put 'run;'; put '%if &errorcheck=1 or &syscc ge 4 %then %return;'; put '%if &paths>0 %then %do x=1 %to &paths;'; put '%put executing recursive call for &&path&x;'; put '%mm_createfolder(path=&&path&x)'; put '%end;'; put '%else %do;'; put 'filename __newdir temp;'; put 'options noquotelenmax;'; put '%local inmeta;'; put '%put creating: &path;'; put '%let inmeta=$METAREPOSITORY'; put ''; put 'SAS268435456'; put ';'; put 'proc metadata in="&inmeta" out=__newdir verbose;'; put 'run ;'; put '/* check it was successful */'; put 'data _null_;'; put 'length objId parentId objType parent child $200 ;'; put 'call missing (of _all_);'; put 'rc=metadata_pathobj('''',cats("&path","(Folder)"),"",objType,objId);'; put 'if rc ge 1 then do;'; put 'putlog "SUCCCESS! &path created.";'; put 'end;'; put 'else do;'; put 'putlog "%str(ERR)OR: unsuccessful attempt to create &path";'; put 'call symputx(''syscc'',8);'; put 'end;'; put 'run;'; put '/* write the response to the log for debugging */'; put '%if &mDebug ne 0 %then %do;'; put 'data _null_;'; put 'infile __newdir lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put 'filename __newdir clear;'; put '%end;'; put '%put &sysmacroname: execution finished for &path;'; put '%mend mm_createfolder;'; put '%macro mm_createlibrary('; put 'libname=My New Library'; put ',libref=mynewlib'; put ',libdesc=Created automatically using the mm_createlibrary macro'; put ',engine=BASE'; put ',tree=/User Folders/sasdemo'; put ',servercontext=SASApp'; put ',directory=/tmp/somelib'; put ',IsPreassigned=0'; put ',mDebug=0'; put ',frefin=mm_in'; put ',frefout=mm_out'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%let libref=%upcase(&libref);'; put '/**'; put '* Check Library does not exist already with this libname'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:SASLibrary?@Name=''&libname''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''liburi'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype = SASLibrary %then %do;'; put '%put %str(WARN)ING: Library (&liburi) already exists with libname (&libname);'; put '%return;'; put '%end;'; put '/**'; put '* Check Library does not exist already with this libref'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:SASLibrary?@Libref=''&libref''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''liburi'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype = SASLibrary %then %do;'; put '%put %str(WARN)ING: Library (&liburi) already exists with libref (&libref) ;'; put '%return;'; put '%end;'; put '/**'; put '* Attempt to create tree'; put '*/'; put '%mm_createfolder(path=&tree)'; put '/**'; put '* check tree exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree","Folder",type,uri);'; put 'call symputx(''foldertype'',type,''l'');'; put 'call symputx(''treeuri'',uri,''l'');'; put 'run;'; put '%if &foldertype ne Tree %then %do;'; put '%put %str(WARN)ING: Tree &tree does not exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Create filerefs for proc metadata call'; put '*/'; put 'filename &frefin temp;'; put 'filename &frefout temp;'; put '%mp_abort(iftrue= ('; put '&engine=BASE & %mf_verifymacvars(libname libref engine servercontext tree)=0'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Empty inputs: libname libref engine servercontext tree)'; put ')'; put '%if &engine=BASE %then %do;'; put '/**'; put '* Check that the ServerContext exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:ServerContext?@Name=''&ServerContext''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''serveruri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype ne ServerContext %then %do;'; put '%put %str(ERR)OR: ServerContext (&ServerContext) does not exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Get prototype info'; put '*/'; put 'data _null_;'; put 'length type uri str $256;'; put 'str="omsobj:Prototype?@Name=''Library.SAS.Prototype.Name.xmlKey.txt''";'; put 'rc=metadata_resolve(str,type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''prototypeuri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype ne Prototype %then %do;'; put '%put %str(ERR)OR: Prototype Library.SAS.Prototype.Name.xmlKey.txt not found;'; put '%return;'; put '%end;'; put '/**'; put '* Check that Physical location exists'; put '*/'; put '%if %sysfunc(fileexist(&directory))=0 %then %do;'; put '%put %str(ERR)OR: Physical directory (&directory) does not appear to exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Check that Directory Object exists in metadata'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:Directory?@DirectoryRole=''LibraryPath''"'; put '!!" and @DirectoryName=''&directory''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''directoryuri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype ne Directory %then %do;'; put '%put NOTE: Directory object does not exist for (&directory) location;'; put '%put NOTE: It will now be created;'; put 'data _null_;'; put 'file &frefin;'; put 'directory=quote(symget(''directory''));'; put 'put "$METAREPOSITORY "/'; put '''''/'; put '"SAS"/'; put '"268435456";'; put 'run;'; put 'proc metadata in= &frefin out=&frefout %if &mdebug=1 %then verbose;;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input; put _infile_;'; put 'run;'; put '%end;'; put '%put NOTE: Checking to ensure directory (&directory) object was created;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:Directory?@DirectoryRole=''LibraryPath''"'; put '!!" and @DirectoryName=''&directory''",type,uri);'; put 'call symputx(''checktype2'',type,''l'');'; put 'call symputx(''directoryuri'',uri,''l'');'; put '%if &mdebug=1 %then putlog (_all_)(=);;'; put 'run;'; put '%if &checktype2 ne Directory %then %do;'; put '%put %str(ERR)OR: Directory (&directory) object was NOT created!;'; put '%return;'; put '%end;'; put '%else %put NOTE: Directory (&directoryuri) successfully created!;'; put '%end;'; put '/**'; put '* check SAS version'; put '*/'; put '%if %sysevalf(&sysver lt 9.3) %then %do;'; put '%put %str(WARN)ING: Version 9.3 or later required;'; put '%return;'; put '%end;'; put '/**'; put '* Prepare the XML and create the library'; put '*/'; put 'data _null_;'; put 'file &frefin;'; put 'treeuri=quote(symget(''treeuri''));'; put 'serveruri=quote(symget(''serveruri''));'; put 'directoryuri=quote(symget(''directoryuri''));'; put 'libname=quote(symget(''libname''));'; put 'libref=quote(symget(''libref''));'; put 'IsPreassigned=quote(symget(''IsPreassigned''));'; put 'prototypeuri=quote(symget(''prototypeuri''));'; put '/* escape description so it can be stored as XML */'; put 'libdesc=tranwrd(symget(''libdesc''),''&'',''&'');'; put 'libdesc=tranwrd(libdesc,''<'',''<'');'; put 'libdesc=tranwrd(libdesc,''>'',''>'');'; put 'libdesc=tranwrd(libdesc,"''",''''');'; put 'libdesc=tranwrd(libdesc,''"'',''"'');'; put 'libdesc=tranwrd(libdesc,''0A''x,'' '');'; put 'libdesc=tranwrd(libdesc,''0D''x,'' '');'; put 'libdesc=tranwrd(libdesc,''$'',''$'');'; put 'libdesc=quote(trim(libdesc));'; put 'put "$METAREPOSITORY "/'; put '''''/'; put ''' ''/'; put ''' "/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put '" "/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put '''SAS''/'; put '''268435456'';'; put 'run;'; put 'proc metadata in= &frefin out=&frefout %if &mdebug=1 %then verbose ;;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input;put _infile_;'; put 'run;'; put '%end;'; put '%put NOTE: Checking to ensure library (&libname) was created;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree/&libname","Library",type,uri);'; put 'call symputx(''libtype'',type,''l'');'; put 'call symputx(''liburi'',uri,''l'');'; put '%if &mdebug=1 %then putlog (_all_)(=);;'; put 'run;'; put '%if &libtype ne SASLibrary %then %do;'; put '%put %str(ERR)OR: Could not find (&libname) at (&tree)!!;'; put '%return;'; put '%end;'; put '%else %put NOTE: Library (&libname) successfully created in (&tree)!;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Other library engine types are not yet supported!!;'; put '%end;'; put '/**'; put '* Wrap up'; put '*/'; put '%if &mdebug ne 1 %then %do;'; put 'filename &frefin clear;'; put 'filename &frefout clear;'; put '%end;'; put '%mend mm_createlibrary;'; put '%macro mm_createdocument('; put 'tree=/User Folders/sasdemo'; put ',name=myNote'; put ',desc=Created by &sysmacroname'; put ',textrole='; put ',frefin=mm_in'; put ',frefout=mm_out'; put ',mDebug=1'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%mp_abort(iftrue= (%mf_verifymacvars(tree name)=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Empty inputs: tree name)'; put ')'; put '/**'; put '* check tree exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree","Folder",type,uri);'; put 'call symputx(''type'',type,''l'');'; put 'call symputx(''treeuri'',uri,''l'');'; put 'run;'; put '%mp_abort('; put 'iftrue= (&type ne Tree)'; put ',mac=mm_createdocument.sas'; put ',msg=Tree &tree does not exist!'; put ')'; put '/**'; put '* Check object does not exist already'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree/&name","Note",type,uri);'; put 'call symputx(''type'',type,''l'');'; put 'call symputx(''docuri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &type = Document %then %do;'; put '%put Document &name already exists in &tree!;'; put '%return;'; put '%end;'; put '/**'; put '* Now we can create the document'; put '*/'; put 'filename &frefin temp;'; put '/* write header XML */'; put 'data _null_;'; put 'file &frefin;'; put 'name=quote("&name");'; put 'desc=quote("&desc");'; put 'textrole=quote("&textrole");'; put 'treeuri=quote("&treeuri");'; put 'put "$METAREPOSITORY"/'; put '''"/'; put '" "/'; put ''' '' /'; put '''''/'; put '/*URI="Document for public note" */'; put '""/'; put '"SAS"/'; put '"268435456";'; put 'run;'; put 'filename &frefout temp;'; put 'proc metadata in= &frefin out=&frefout verbose;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '%mend mm_createdocument;'; put '%macro mm_deletedocument('; put 'target='; put ')/*/STORE SOURCE*/;'; put '/**'; put '* Check document exist'; put '*/'; put '%local type;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&target",''Note'',type,uri);'; put 'call symputx(''type'',type,''l'');'; put 'call symputx(''stpuri'',uri,''l'');'; put 'run;'; put '%if &type ne Document %then %do;'; put '%put %str(WARN)ING: No Document found at ⌖'; put '%return;'; put '%end;'; put 'filename __in temp lrecl=10000;'; put 'filename __out temp lrecl=10000;'; put 'data _null_ ;'; put 'file __in ;'; put 'put "";'; put 'put "SAS268436480";'; put 'put "";'; put 'run ;'; put 'proc metadata in=__in out=__out verbose;run;'; put '/* list the result */'; put 'data _null_;infile __out; input; list; run;'; put 'filename __in clear;'; put 'filename __out clear;'; put '/**'; put '* Check deletion'; put '*/'; put '%local isgone;'; put 'data _null_;'; put 'length type uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_pathobj("","&target",''Note'',type,uri);'; put 'call symputx(''isgone'',type,''l'');'; put 'run;'; put '%if &isgone = Document %then %do;'; put '%put %str(ERR)OR: Document not deleted from ⌖'; put '%let syscc=4;'; put '%return;'; put '%end;'; put '%mend mm_deletedocument;'; put '%macro mm_deletestp('; put 'target='; put ')/*/STORE SOURCE*/;'; put '/**'; put '* Check STP does exist'; put '*/'; put '%local cmtype;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&target",''StoredProcess'',type,uri);'; put 'call symputx(''cmtype'',type,''l'');'; put 'call symputx(''stpuri'',uri,''l'');'; put 'run;'; put '%if &cmtype ne ClassifierMap %then %do;'; put '%put NOTE: No Stored Process found at ⌖'; put '%return;'; put '%end;'; put 'filename __in temp lrecl=10000;'; put 'filename __out temp lrecl=10000;'; put 'data _null_ ;'; put 'file __in ;'; put 'put "";'; put 'put "SAS268436480";'; put 'put "";'; put 'run ;'; put 'proc metadata in=__in out=__out verbose;run;'; put '/* list the result */'; put 'data _null_;infile __out; input; list; run;'; put 'filename __in clear;'; put 'filename __out clear;'; put '/**'; put '* Check deletion'; put '*/'; put '%local isgone;'; put 'data _null_;'; put 'length type uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_pathobj("","&target",''Note'',type,uri);'; put 'call symputx(''isgone'',type,''l'');'; put 'run;'; put '%if &isgone = ClassifierMap %then %do;'; put '%put %str(ERR)OR: STP not deleted from ⌖'; put '%let syscc=4;'; put '%return;'; put '%end;'; put '%mend mm_deletestp;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mm_getDirectories('; put 'path='; put ',outds=work.mm_getDirectories'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getDirectories.sas;'; put '%&mD.put _local_;'; put 'data &outds (keep=directoryuri name directoryname directorydesc );'; put 'length directoryuri name directoryname directorydesc $256;'; put 'call missing(of _all_);'; put '__i+1;'; put '%if %length(&path)=0 %then %do;'; put 'do while'; put '(metadata_getnobj("omsobj:Directory?@Id contains ''.''",__i,directoryuri)>0);'; put '%end; %else %do;'; put 'do while('; put 'metadata_getnobj("omsobj:Directory?@DirectoryName=''&path''",__i,directoryuri)'; put '>0'; put ');'; put '%end;'; put '__rc1=metadata_getattr(directoryuri, "Name", name);'; put '__rc2=metadata_getattr(directoryuri, "DirectoryName", directoryname);'; put '__rc3=metadata_getattr(directoryuri, "Desc", directorydesc);'; put '&mD.putlog (_all_) (=);'; put 'drop __:;'; put '__i+1;'; put 'if sum(of __rc1-__rc3)=0 then output;'; put 'end;'; put 'run;'; put '%mend mm_getDirectories;'; put '%macro mm_updatestpsourcecode(stp='; put ',stpcode='; put ',minify=NO'; put ',mdebug=0'; put ');'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&stp.(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '%if &mdebug=1 %then %do;'; put 'put tsuri= value=;'; put '%end;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%if &tsuri=stopifempty %then %do;'; put '%put %str(WARN)ING: &stp.(StoredProcess) not found!;'; put '%return;'; put '%end;'; put '%if %length(&stpcode)<2 %then %do;'; put '%put %str(WARN)ING: No SAS code supplied!!;'; put '%return;'; put '%end;'; put '%local frefin frefout;'; put '%let frefin=%mf_getuniquefileref();'; put '%let frefout=%mf_getuniquefileref();'; put '/* write header XML */'; put 'data _null_;'; put 'file &frefin;'; put 'put "$METAREPOSITORY'; put '2 %then %do;'; put 'data _null_;'; put 'file &frefin lrecl=32767 mod;'; put 'infile &stpcode lrecl=32767;'; put 'length outstr $32767;'; put 'input outstr ;'; put '/* escape code so it can be stored as XML */'; put 'outstr=tranwrd(_infile_,''&'',''&'');'; put 'outstr=tranwrd(outstr,''<'',''<'');'; put 'outstr=tranwrd(outstr,''>'',''>'');'; put 'outstr=tranwrd(outstr,"''",''''');'; put 'outstr=tranwrd(outstr,''"'',''"'');'; put 'outstr=tranwrd(outstr,''0A''x,'' '');'; put 'outstr=tranwrd(outstr,''0D''x,'' '');'; put 'outstr=tranwrd(outstr,''$'',''$'');'; put '%if &minify=YES %then %do;'; put 'outstr=cats(outstr);'; put 'if outstr ne '''';'; put 'if not (outstr=:''/*'' and subpad(left(reverse(outstr)),1,2)=''/*'');'; put '%end;'; put 'outstr=trim(outstr);'; put 'put outstr '' '';'; put 'run;'; put '%end;'; put 'data _null_;'; put 'file &frefin mod;'; put 'put "''>SAS268435456'; put '";'; put 'run;'; put 'proc metadata in= &frefin out=&frefout;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile &frefout lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '%else %do;'; put 'filename &frefin clear;'; put 'filename &frefout clear;'; put '%end;'; put '%mend mm_updatestpsourcecode;'; put '%macro mm_getservercontexts('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* first get list of available repos */'; put '%mm_getrepos(outds=work.repos)'; put '%let repocnt=0;'; put 'data _null_;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'');'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put 'filename __mc1 temp;'; put 'filename __mc2 temp;'; put 'data &outds;'; put 'length serveruri servername $200;'; put 'call missing (of _all_);'; put 'stop;'; put 'run;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'proc metadata in='; put '"$METAREPOSITORY'; put 'ServerContextSAS'; put '0"'; put 'out=__mc1;'; put 'run;'; put '/*'; put 'data _null_;'; put 'infile __mc1 lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put 'data _null_;'; put 'file __mc2;'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/ServerContext";'; put 'put "";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/ServerContext/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/ServerContext/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname __mc3 xml xmlfileref=__mc1 xmlmap=__mc2;'; put 'proc append base=&outds data=__mc3.SASContexts;run;'; put 'libname __mc3 clear;'; put '%end;'; put 'options metarepository=&repo;'; put 'filename __mc1 clear;'; put 'filename __mc2 clear;'; put '%mend mm_getservercontexts;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mm_createstp('; put 'stpname=Macro People STP'; put ',stpdesc=This stp was created automatically by the mm_createstp macro'; put ',filename=mm_createstp.sas'; put ',directory=SASEnvironment/SASCode'; put ',tree=/User Folders/sasdemo'; put ',package=false'; put ',streaming=true'; put ',outds=work.mm_createstp'; put ',mDebug=0'; put ',server=SASApp'; put ',stptype=1'; put ',minify=NO'; put ',frefin=mm_in'; put ',frefout=mm_out'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_CreateSTP.sas;'; put '%&mD.put _local_;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(stpname filename directory tree)=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Empty inputs: stpname filename directory tree)'; put ')'; put '%mp_dropmembers(%scan(&outds,2,.))'; put '/**'; put '* check tree exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree","Folder",type,uri);'; put 'call symputx(''foldertype'',type,''l'');'; put 'call symputx(''treeuri'',uri,''l'');'; put 'run;'; put '%if &foldertype ne Tree %then %do;'; put '%put %str(WARN)ING: Tree &tree does not exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Check STP does not exist already'; put '*/'; put '%local cmtype;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree/&stpname",''StoredProcess'',type,uri);'; put 'call symputx(''cmtype'',type,''l'');'; put 'call symputx(''stpuri'',uri,''l'');'; put 'run;'; put '%if &cmtype = ClassifierMap %then %do;'; put '%put %str(WARN)ING: Stored Process &stpname already exists in &tree!;'; put '%return;'; put '%end;'; put '/**'; put '* Check that the physical file exists'; put '*/'; put '%if %sysfunc(fileexist(&directory/&filename)) ne 1 %then %do;'; put '%put %str(WARN)ING: FILE *&directory/&filename* NOT FOUND!;'; put '%return;'; put '%end;'; put '%if &stptype=1 %then %do;'; put '/* type 1 STP - where code is stored on filesystem */'; put '%if %sysevalf(&sysver lt 9.2) %then %do;'; put '%put %str(WARN)ING: Version 9.2 or later required;'; put '%return;'; put '%end;'; put '/* check directory object (where 9.2 source code reference is stored) */'; put 'data _null_;'; put 'length id $20 dirtype $256;'; put 'rc=metadata_resolve("&directory",dirtype,id);'; put 'call symputx(''checkdirtype'',dirtype,''l'');'; put 'run;'; put '%if &checkdirtype ne Directory %then %do;'; put '%mm_getdirectories(path=&directory,outds=&outds ,mDebug=&mDebug)'; put '%if %mf_nobs(&outds)=0 or %sysfunc(exist(&outds))=0 %then %do;'; put '%put %str(WARN)ING: The directory object does not exist for &directory;'; put '%return;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data &outds;'; put 'directoryuri="&directory";'; put 'run;'; put '%end;'; put 'data &outds (keep=stpuri prompturi fileuri texturi);'; put 'length stpuri prompturi fileuri texturi serveruri $256 ;'; put 'if _n_=1 then call missing (of _all_);'; put 'set &outds;'; put '/* final checks on uris */'; put 'length id $20 type $256;'; put '__rc=metadata_resolve("&treeuri",type,id);'; put 'if type ne ''Tree'' then do;'; put 'putlog "%str(WARN)ING: Invalid tree URI: &treeuri";'; put 'stopme=1;'; put 'end;'; put '__rc=metadata_resolve(directoryuri,type,id);'; put 'if type ne ''Directory'' then do;'; put 'putlog "%str(WARN)ING: Invalid directory URI: " directoryuri;'; put 'stopme=1;'; put 'end;'; put '/* get server info */'; put '__rc=metadata_resolve("&server",type,serveruri);'; put 'if type ne ''LogicalServer'' then do;'; put '__rc=metadata_getnobj("omsobj:LogicalServer?@Name=''&server''",1,serveruri);'; put 'if serveruri='''' then do;'; put 'putlog "%str(WARN)ING: Invalid server: &server";'; put 'stopme=1;'; put 'end;'; put 'end;'; put 'if stopme=1 then do;'; put 'putlog (_all_)(=);'; put 'stop;'; put 'end;'; put '/* create empty prompt */'; put 'rc1=METADATA_NEWOBJ(''PromptGroup'',prompturi,''Parameters'');'; put 'rc2=METADATA_SETATTR(prompturi, ''UsageVersion'', ''1000000'');'; put 'rc3=METADATA_SETATTR(prompturi, ''GroupType'',''2'');'; put 'rc4=METADATA_SETATTR(prompturi, ''Name'',''Parameters'');'; put 'rc5=METADATA_SETATTR(prompturi, ''PublicType'',''Embedded:PromptGroup'');'; put 'GroupInfo='; put '"";'; put 'rc6 = METADATA_SETATTR(prompturi, ''GroupInfo'',groupinfo);'; put 'if sum(of rc1-rc6) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating prompt.";'; put 'if prompturi ne . then do;'; put 'putlog '' Removing orphan: '' prompturi;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'put rc=;'; put 'end;'; put 'stop;'; put 'end;'; put '/* create a file uri */'; put 'rc7=METADATA_NEWOBJ(''File'',fileuri,''SP Source File'');'; put 'rc8=METADATA_SETATTR(fileuri, ''FileName'',"&filename");'; put 'rc9=METADATA_SETATTR(fileuri, ''IsARelativeName'',''1'');'; put 'rc10=METADATA_SETASSN(fileuri, ''Directories'',''MODIFY'',directoryuri);'; put 'if sum(of rc7-rc10) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating file.";'; put 'if fileuri ne . then do;'; put 'putlog '' Removing orphans:'' prompturi fileuri;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'rc = METADATA_DELOBJ(fileuri);'; put 'put (_all_)(=);'; put 'end;'; put 'stop;'; put 'end;'; put '/* create a TextStore object */'; put 'rc11= METADATA_NEWOBJ(''TextStore'',texturi,''Stored Process'');'; put 'rc12= METADATA_SETATTR(texturi, ''TextRole'',''StoredProcessConfiguration'');'; put 'rc13= METADATA_SETATTR(texturi, ''TextType'',''XML'');'; put 'storedtext='''''; put '!!""'; put '!!"";'; put 'rc14= METADATA_SETATTR(texturi, ''StoredText'',storedtext);'; put 'if sum(of rc11-rc14) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating TextStore.";'; put 'if texturi ne . then do;'; put 'putlog '' Removing orphans: '' prompturi fileuri texturi;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'rc = METADATA_DELOBJ(fileuri);'; put 'rc = METADATA_DELOBJ(texturi);'; put 'put (_all_)(=);'; put 'end;'; put 'stop;'; put 'end;'; put '/* create meta obj */'; put 'rc15= METADATA_NEWOBJ(''ClassifierMap'',stpuri,"&stpname");'; put 'rc16= METADATA_SETASSN(stpuri, ''Trees'',''MODIFY'',treeuri);'; put 'rc17= METADATA_SETASSN(stpuri, ''ComputeLocations'',''MODIFY'',serveruri);'; put 'rc18= METADATA_SETASSN(stpuri, ''SourceCode'',''MODIFY'',fileuri);'; put 'rc19= METADATA_SETASSN(stpuri, ''Prompts'',''MODIFY'',prompturi);'; put 'rc20= METADATA_SETASSN(stpuri, ''Notes'',''MODIFY'',texturi);'; put 'rc21= METADATA_SETATTR(stpuri, ''PublicType'', ''StoredProcess'');'; put 'rc22= METADATA_SETATTR(stpuri, ''TransformRole'', ''StoredProcess'');'; put 'rc23= METADATA_SETATTR(stpuri, ''UsageVersion'', ''1000000'');'; put 'rc24= METADATA_SETATTR(stpuri, ''Desc'', "&stpdesc");'; put '/* tidy up if err */'; put 'if sum(of rc15-rc24) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating STP.";'; put 'if stpuri ne . then do;'; put 'putlog '' Removing orphans: '' prompturi fileuri texturi stpuri;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'rc = METADATA_DELOBJ(fileuri);'; put 'rc = METADATA_DELOBJ(texturi);'; put 'rc = METADATA_DELOBJ(stpuri);'; put 'put (_all_)(=);'; put 'end;'; put 'end;'; put 'else do;'; put 'fullpath=cats(''_program='',treepath,"/&stpname");'; put 'putlog "NOTE: Stored Process Created!";'; put 'putlog "NOTE- "; putlog "NOTE-"; putlog "NOTE-" fullpath;'; put 'putlog "NOTE- "; putlog "NOTE-";'; put 'end;'; put 'output;'; put 'stop;'; put 'run;'; put '%end;'; put '%else %if &stptype=2 %then %do;'; put '/* type 2 stp - code is stored in metadata */'; put '%if %sysevalf(&sysver lt 9.3) %then %do;'; put '%put %str(WARN)ING: SAS version 9.3 or later required to create type2 STPs;'; put '%return;'; put '%end;'; put '/* check we have the correct ServerContext */'; put '%mm_getservercontexts(outds=contexts)'; put '%local serveruri; %let serveruri=NOTFOUND;'; put 'data _null_;'; put 'set contexts;'; put 'where upcase(servername)="%upcase(&server)";'; put 'call symputx(''serveruri'',serveruri);'; put 'run;'; put '%if &serveruri=NOTFOUND %then %do;'; put '%put %str(WARN)ING: ServerContext *&server* not found!;'; put '%return;'; put '%end;'; put '/**'; put '* First, create a Hello World type 2 stored process'; put '*/'; put 'filename &frefin temp;'; put 'data _null_;'; put 'file &frefin;'; put 'treeuri=quote(symget(''treeuri''));'; put 'serveruri=quote(symget(''serveruri''));'; put 'stpdesc=quote(symget(''stpdesc''));'; put 'stpname=quote(symget(''stpname''));'; put 'put "$METAREPOSITORY "/'; put '''''/'; put '" "/'; put '" "/'; put '" "/'; put '" "/'; put ''' ''/'; put ''' '' /'; put '" "/'; put '" "/'; put ''' ''/'; put '" "/'; put '""/'; put '"SAS"/'; put '"268435456";'; put 'run;'; put 'filename &frefout temp;'; put 'proc metadata in= &frefin out=&frefout ;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '/**'; put '* Next, add the source code'; put '*/'; put '%mm_updatestpsourcecode(stp=&tree/&stpname'; put ',stpcode="&directory/&filename"'; put ',mdebug=&mdebug'; put ',minify=&minify)'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: STPTYPE=*&stptype* not recognised!;'; put '%end;'; put '%mend mm_createstp;'; put '%macro mf_mkdir(dir'; put ')/*/STORE SOURCE*/;'; put '%local lastchar child parent;'; put '%let lastchar = %substr(&dir, %length(&dir));'; put '%if (%bquote(&lastchar) eq %str(:)) %then %do;'; put '/* Cannot create drive mappings */'; put '%return;'; put '%end;'; put '%if (%bquote(&lastchar)=%str(/)) or (%bquote(&lastchar)=%str(\)) %then %do;'; put '/* last char is a slash */'; put '%if (%length(&dir) eq 1) %then %do;'; put '/* one single slash - root location is assumed to exist */'; put '%return;'; put '%end;'; put '%else %do;'; put '/* strip last slash */'; put '%let dir = %substr(&dir, 1, %length(&dir)-1);'; put '%end;'; put '%end;'; put '%if (%sysfunc(fileexist(%bquote(&dir))) = 0) %then %do;'; put '/* directory does not exist so prepare to create */'; put '/* first get the childmost directory */'; put '%let child = %scan(&dir, -1, %str(/\:));'; put '/*'; put 'If child name = path name then there are no parents to create. Else'; put 'they must be recursively scanned.'; put '*/'; put '%if (%length(&dir) gt %length(&child)) %then %do;'; put '%let parent = %substr(&dir, 1, %length(&dir)-%length(&child));'; put '%mf_mkdir(&parent)'; put '%end;'; put '/*'; put 'Now create the directory. Complain loudly of any errs.'; put '*/'; put '%let dname = %sysfunc(dcreate(&child, &parent));'; put '%if (%bquote(&dname) eq ) %then %do;'; put '%put %str(ERR)OR: could not create &parent + &child;'; put '%abort cancel;'; put '%end;'; put '%else %do;'; put '%put Directory created: &dir;'; put '%end;'; put '%end;'; put '/* exit quietly if directory did exist.*/'; put '%mend mf_mkdir;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Create a demo (base engine) library'; put '@details'; put 'Creates the library'; put '@warning This STP self destructs! It will delete itself after a successful run'; put 'to avoid being executed twice (and overwriting actual data)'; put '

SAS Macros

'; put '@li mm_createlibrary.sas'; put '@li mm_createdocument.sas'; put '@li mm_deletedocument.sas'; put '@li mp_abort.sas'; put '@li dc_assignlib.sas'; put '@li mm_deletestp.sas'; put '@li mm_createstp.sas'; put '@li mf_mkdir.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%global dcpath;'; put '%let dclib=%upcase(DC%substr(%sysevalf(%sysfunc(datetime())/60),3,6));'; put '%let dclibname=Data Controller(&dclib);'; put '%let work=%sysfunc(pathname(work));'; put '%let dcpath=&dcpath/&dclib;'; put '%mf_mkdir(&dcpath)'; put '%mf_mkdir(&work)'; put '%put &=dcpath;'; put '/* check we have physical permissions to the DCLIB folder */'; put 'data _null_;'; put 'file "&dcpath/permTest.txt";'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(User &sysuserid does not have WRITE permissions on physical'; put 'directory: &dcpath )'; put ')'; put 'filename delfile "&dcpath/permTest.txt";'; put 'data _null_;'; put 'rc=fdelete(''delfile'');'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(User &sysuserid could create (but not delete) &dcpath/permTest.txt )'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Unable to write to &dcpath)'; put ')'; put 'data _null_;'; put 'pgm="&_program";'; put 'rootlen=length(trim(pgm))-length("/services/admin/makelib");'; put 'root=substr(pgm,1,rootlen);'; put 'putlog root=;'; put 'call symputx(''deploy_dir'',root);'; put 'run;'; put 'options noquotelenmax ps=max;'; put '/* check we have the admin rights to update the items in the Admin folder */'; put '%mm_createdocument(tree=&deploy_dir/services/admin,name=permTest)'; put '%mm_deletedocument(target=&deploy_dir/services/admin/permTest)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(User &_metaperson does not have WriteMetadata on SAS folder:'; put '&deploy_dir )'; put ')'; put '/**'; put '* Create library and load data'; put '*/'; put '%let mpelibname=Data Controller (&dclib);'; put '%mm_createlibrary('; put 'libname=&mpelibname'; put ',libref=&dclib'; put ',libdesc=Configuration tables for the MacroPeople Data Controller application'; put ',engine=BASE'; put ',tree=&deploy_dir/data'; put ',servercontext=SASApp'; put ',directory=&dcpath'; put ',mDebug=1)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Unable to create &dclib library)'; put ')'; put '/* get direct libref */'; put '%dc_assignlib(READ,&dclib)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Unable to assign &dclib library)'; put ')'; put '/* create an initial settings service (this will be overwritten in the'; put 'data update step)'; put '*/'; put '%let temploc=&work/temp.txt;'; put 'data _null_;'; put 'file "&temploc" ;'; put 'put ''/* Data Controller Precode */'' / / ;'; put 'put '' '';'; put 'put ''options noquotelenmax ps=max;'';'; put 'put ''%global DC_LIBREF DC_LIBNAME;'';'; put 'put '' '';'; put 'put ''/* This metadata library (libref) contains control datasets for DC */'';'; put 'put ''/* If a different libref must be used, configure it below */'';'; put 'put ''%let DC_LIBREF='' "&dclib;";'; put 'put ''%let DC_LIBNAME='' "&mpelibname;";'; put 'put '' '';'; put 'put ''/* get physical path for direct libname - needed to track requests */'';'; put 'put ''data _null_;'';'; put 'put '' length lib_uri up_uri path $256;'';'; put 'put '' call missing (of _all_);'';'; put 'put '' rc=metadata_getnobj("omsobj:SASLibrary?@Libref=''''&dc_libref''''",1,lib_uri);'';'; put 'put '' rc=metadata_getnasn(lib_uri,"UsingPackages",1,up_uri);'';'; put 'put '' rc=metadata_getattr(up_uri,"DirectoryName",path);'';'; put 'put '' call symputx("dc_libloc",path);'';'; put 'put ''run;'';'; put 'put ''libname &DC_LIBREF "&dc_libloc";'';'; put 'put '' '';'; put 'run;'; put '%mm_deletestp(target=&deploy_dir/services/public/Data_Controller_Settings)'; put '%mm_createstp(stpname=Data_Controller_Settings'; put ',filename=temp.txt'; put ',directory=&work'; put ',tree=&deploy_dir/services/public'; put ',Server=SASApp'; put ',stptype=2'; put ',mdebug=1'; put ',stpdesc=Data Controller Configuration'; put ',minify=NO)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Issue creating settings stp)'; put ')'; put 'data _null_;'; put 'file _webout;'; put 'put "

Library &dclib successfully assigned

";'; put 'run;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=refreshcatalog; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 or %length(&var)=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_inc)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status;'; put 'proc sql noprint;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro bitemporal_closeouts('; put 'tech_from=tx_from_dttm'; put ',tech_to = tx_to_dttm /* Technical TO datetime variable.'; put 'Req''d on BASE table only. */'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE /* Name of STAGING table. */'; put ',PK= name sex /* Business key, space separated. */'; put '/* Should INCLUDE BUS_FROM field if relevant. */'; put ',NOW=DEFINE'; put ',FILTER= /* supply a filter to limit the update */'; put ',outdest= /* supply an unquoted filepath/filename.ext to get'; put 'a text file containing the update statements */'; put ',loadtype='; put ',loadtarget=YES /* if <> YES will return without changing anything */'; put ');'; put '%put ENTERING &sysmacroname;'; put '%local x var start;'; put '%let start=%sysfunc(datetime());'; put '%dc_assignlib(WRITE,&base_lib)'; put '%dc_assignlib(WRITE,&append_lib)'; put '%if &now=DEFINE %then %let now=&dc_dttmtfmt.;'; put '%put &=now;'; put '/**'; put '* perform basic checks'; put '*/'; put '/* do tables exist? */'; put '%if not %sysfunc(exist(&base_lib..&base_dsn)) %then %do;'; put '%mp_abort(msg=&base_lib..&base_dsn does not exist)'; put '%end;'; put '%else %if %sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 %then %do;'; put '%mp_abort(msg=&append_lib..&append_dsn does not exist)'; put '%end;'; put '/* do TX columns exist? */'; put '%if &loadtype ne UPDATE %then %do;'; put '%if not %mf_existvar(&base_lib..&base_dsn,&tech_from) %then %do;'; put '%mp_abort(msg=&tech_from does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&base_lib..&base_dsn,&tech_to) %then %do;'; put '%mp_abort(msg=&tech_to does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%end;'; put '/* do PK columns exist? */'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if not %mf_existvar(&base_lib..&base_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&append_lib..&append_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &append_lib..&append_dsn)'; put '%end;'; put '%end;'; put '/* check uniqueness */'; put 'proc sort data=&append_lib..&append_dsn'; put 'out=___closeout1 noduprecs dupout=___closeout1a;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(___closeout1a,NLOBS)>0 %then'; put '%put NOTE: dups on (&PK) in (&append_lib..&append_dsn);'; put '/* is &NOW value within a tolerance? Should not allow renegade closeouts.. */'; put '%local gap;'; put '%let gap=0;'; put 'data _null_;'; put 'now=&now;'; put 'gap=intck(''HOURS'',now,datetime());'; put 'call symputx(''gap'',gap,''l'');'; put 'run;'; put '%mf_abort('; put 'iftrue=(&gap > 24),'; put 'msg=NOW variable (&now) is not within a 24hr tolerance'; put ')'; put '/* have any warnings / errs occurred thus far? If so, abort */'; put '%mf_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/**'; put '* Create closeout statements. These are sent as individual SQL statements'; put '* to ensure pass-through utilisation. The update_cnt variable monitors'; put '* how many records were actually updated on the target table.'; put '*/'; put '%local update_cnt;'; put '%let update_cnt=0;'; put 'filename tmp temp;'; put 'data _null_;'; put 'set ___closeout1;'; put 'file tmp;'; put 'if _n_=1 then put ''proc sql noprint;'' ;'; put 'length string $32767.;'; put '%if &loadtype=UPDATE %then %do;'; put 'put "delete from &base_lib..&base_dsn where 1";'; put '%end;'; put '%else %do;'; put 'now=symget(''now'');'; put 'put "update &base_lib..&base_dsn set &tech_to= " now @;'; put '%if %mf_existvar(&base_lib..&base_dsn,PROCESSED_DTTM) %then %do;'; put 'put " ,PROCESSED_DTTM=" now @;'; put '%end;'; put 'put " where " now " lt &tech_to ";'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if %mf_getvartype(&base_lib..&base_dsn,&var)=C %then %do;'; put '/* use single quotes to avoid ampersand resolution in data */'; put 'string=" & &var=''"!!trim(prxchange("s/''/''''/",-1,&var))!!"''";'; put '%end;'; put '%else %do;'; put 'string=cats(" & &var=",&var);'; put '%end;'; put 'put string;'; put '%end;'; put 'put "&filter ;";'; put 'put ''%let update_cnt=%eval(&update_cnt+&sqlobs);%put update_cnt=&update_cnt;'';'; put 'run;'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%if &loadtarget ne YES %then %return;'; put '/* ensure we have a lock */'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn'; put ',ref=bitemporal_closeouts'; put ',ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'options source2;'; put '%inc tmp;'; put 'filename tmp clear;'; put '/**'; put '* Update audit tracker'; put '*/'; put '%local newobs; %let newobs=%mf_getattrn(work.___closeout1,NLOBS);'; put '%local user; %let user=%mf_getuser();'; put 'proc sql;'; put 'insert into &mpelib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&append_lib..&append_dsn contained &newobs records"'; put ',LOADTYPE="CLOSEOUT"'; put ',DELETED_RECORDS=&update_cnt'; put ',NEW_RECORDS=0'; put ',DURATION=%sysfunc(datetime())-&start'; put ',USER_NM="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%mend bitemporal_closeouts;'; put '%macro mf_getschema(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum rc schema;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=''Schema/Owner'''; put ')),i));'; put '%if (&dsid ^= 0) %then %do;'; put '%let vnum=%sysfunc(varnum(&dsid,SYSVALUE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let schema=%sysfunc(getvarc(&dsid,&vnum));'; put '%put &libref. schema is &schema.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '&schema'; put '%mend mf_getschema;'; put '/** @endcond */'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_retainedkey('; put 'base_lib=WORK'; put ',base_dsn=BASETABLE'; put ',append_lib=WORK'; put ',append_dsn=APPENDTABLE'; put ',retained_key=DEFAULT_RK'; put ',business_key= PK1 PK2'; put ',check_uniqueness=NO'; put ',maxkeytable=0'; put ',locktable=0'; put ',outds=WORK.APPEND'; put ',filter_str='; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local base_libds app_libds key_field check maxkey idx_pk newkey_cnt iserr'; put 'msg x tempds1 tempds2 comma_pk appnobs checknobs dropvar tempvar idx_val;'; put '%let base_libds=%upcase(&base_lib..&base_dsn);'; put '%let app_libds=%upcase(&append_lib..&append_dsn);'; put '%let tempds1=%mf_getuniquename();'; put '%let tempds2=%mf_getuniquename();'; put '%let comma_pk=%mf_getquotedstr(in_str=%str(&business_key),dlm=%str(,),quote=);'; put '%let outds=%sysfunc(ifc(%index(&outds,.)=0,work.&outds,&outds));'; put '/* validation checks */'; put '%let iserr=0;'; put '%if &syscc>0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(SYSCC=&syscc on macro entry);'; put '%end;'; put '%else %if %sysfunc(exist(&base_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Base LIBDS (&base_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if %sysfunc(exist(&app_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Append LIBDS (&app_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&maxkeytable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Maxkeytable (&maxkeytable) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&locktable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Locktable (&locktable) expected but NOT FOUND);'; put '%end;'; put '%else %if %length(&business_key)=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Business key (&business_key) expected but NOT FOUND);'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&business_key));'; put '/* check business key values exist */'; put '%let key_field=%scan(&business_key,&x,%str( ));'; put '%if not %mf_existvar(&app_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &app_libds!;'; put '%goto err;'; put '%end;'; put '%else %if not %mf_existvar(&base_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &base_libds!;'; put '%goto err;'; put '%end;'; put '%end;'; put '%err:'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue=(&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put 'proc sql noprint;'; put 'select sum(max(&retained_key),0) into: maxkey from &base_libds;'; put '/**'; put '* get base table RK and bus field values for lookup'; put '*/'; put 'proc sql noprint;'; put 'create table &tempds1 as'; put 'select distinct &comma_pk,&retained_key'; put 'from &base_libds &filter_str'; put 'order by &comma_pk,&retained_key;'; put '%if &check_uniqueness=YES %then %do;'; put 'select count(*) into:checknobs'; put 'from (select distinct &comma_pk from &app_libds);'; put 'select count(*) into: appnobs from &app_libds; /* might be view */'; put '%if &checknobs ne &appnobs %then %do;'; put '%let msg=Source table &app_libds is not unique on (&business_key);'; put '%let iserr=1;'; put '%end;'; put '%end;'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue= (&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put '%if %mf_existvar(&app_libds,&retained_key)'; put '%then %let dropvar=(drop=&retained_key);'; put '/* prepare interim table with retained key populated for matching keys */'; put 'proc sql noprint;'; put 'create table &tempds2 as'; put 'select b.&retained_key, a.*'; put 'from &app_libds &dropvar a'; put 'left join &tempds1 b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&business_key));'; put '%let idx_val=%scan(&business_key,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by &retained_key;'; put '/* identify the number of entries without retained keys (new records) */'; put 'select count(*) into: newkey_cnt'; put 'from &tempds2'; put 'where missing(&retained_key);'; put 'quit;'; put '/**'; put '* Update maxkey table if link provided'; put '*/'; put '%if &maxkeytable ne 0 %then %do;'; put 'proc sql noprint;'; put 'select count(*) into: check from &maxkeytable'; put 'where upcase(keytable)="&base_libds";'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with mp_retainedkey'; put ',ctl_ds=&locktable'; put ')'; put 'proc sql;'; put '%if &check=0 %then %do;'; put 'insert into &maxkeytable'; put 'set keytable="&base_libds"'; put ',keycolumn="&retained_key"'; put ',max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put 'where keytable="&base_libds";'; put '%end;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with maxkey=%eval(&maxkey+&newkey_cnt)'; put ',ctl_ds=&locktable'; put ')'; put '%end;'; put '/* fill in the missing retained key values */'; put '%let tempvar=%mf_getuniquename();'; put 'data &outds(drop=&tempvar);'; put 'retain &tempvar %eval(&maxkey+1);'; put 'set &tempds2;'; put 'if &retained_key =. then &retained_key=&tempvar;'; put '&tempvar=&tempvar+1;'; put 'run;'; put '%mend mp_retainedkey;'; put '/** @cond */'; put '%macro mp_storediffs(libds'; put ',origds'; put ',key'; put ',delds=0'; put ',appds=0'; put ',modds=0'; put ',outds=work.mp_storediffs'; put ',loadref=0'; put ',processed_dttm=0'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '/* set up unique and temporary vars */'; put '%local ds1 ds2 ds3 ds4 hashkey inds_auto inds_keep dslist vlist;'; put '%let ds1=%upcase(work.%mf_getuniquename(prefix=mpsd_ds1));'; put '%let ds2=%upcase(work.%mf_getuniquename(prefix=mpsd_ds2));'; put '%let ds3=%upcase(work.%mf_getuniquename(prefix=mpsd_ds3));'; put '%let ds4=%upcase(work.%mf_getuniquename(prefix=mpsd_ds4));'; put '%let hashkey=%upcase(%mf_getuniquename(prefix=mpsd_hashkey));'; put '%let inds_auto=%upcase(%mf_getuniquename(prefix=mpsd_inds_auto));'; put '%let inds_keep=%upcase(%mf_getuniquename(prefix=mpsd_inds_keep));'; put '%let dslist=&origds;'; put '%if &delds ne 0 %then %do;'; put '%let delds=%upcase(&delds);'; put '%if %scan(&delds,-1,.)=&delds %then %let delds=WORK.&delds;'; put '%let dslist=&dslist &delds;'; put '%end;'; put '%if &appds ne 0 %then %do;'; put '%let appds=%upcase(&appds);'; put '%if %scan(&appds,-1,.)=&appds %then %let appds=WORK.&appds;'; put '%let dslist=&dslist &appds;'; put '%end;'; put '%if &modds ne 0 %then %do;'; put '%let modds=%upcase(&modds);'; put '%if %scan(&modds,-1,.)=&modds %then %let modds=WORK.&modds;'; put '%let dslist=&dslist &modds;'; put '%end;'; put '%let origds=%upcase(&origds);'; put '%if %scan(&origds,-1,.)=&origds %then %let origds=WORK.&origds;'; put '%let key=%upcase(&key);'; put '/* hash the key and append all the tables (marking the source) */'; put 'data &ds1;'; put 'set &dslist indsname=&inds_auto;'; put '&hashkey=put(md5(catx(''|'',%mf_getquotedstr(&key,quote=N))),$hex32.);'; put '&inds_keep=upcase(&inds_auto);'; put 'proc sort;'; put 'by &inds_keep &hashkey;'; put 'run;'; put '/* transpose numeric & char vars */'; put 'proc transpose data=&ds1'; put 'out=&ds2(rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_num));'; put 'by &inds_keep &hashkey;'; put 'var _numeric_;'; put 'run;'; put 'proc transpose data=&ds1'; put 'out=&ds3('; put 'rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_char)'; put 'where=(tgtvar_nm not in ("&hashkey","&inds_keep"))'; put ');'; put 'by &inds_keep &hashkey;'; put 'var _character_;'; put 'run;'; put '%if %index(&libds,-)>0 and %scan(&libds,2,-)=FC %then %do;'; put '/* this is a format catalog - cannot query cols directly */'; put '%let vlist="FMTNAME","START","END","LABEL","MIN","MAX","DEFAULT","LENGTH"'; put ',"FUZZ","PREFIX","MULT","FILL","NOEDIT","TYPE","SEXCL","EEXCL","HLO"'; put ',"DECSEP","DIG3SEP","DATATYPE","LANGUAGE";'; put '%end;'; put '%else %let vlist=%mf_getvarlist(&libds,dlm=%str(,),quote=DOUBLE);'; put 'data &ds4;'; put 'length &inds_keep $41 tgtvar_nm $32 _label_ $256;'; put 'if _n_=1 then call missing(_label_);'; put 'drop _label_;'; put 'set &ds2 &ds3 indsname=&inds_auto;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%upcase(&vlist));'; put 'if upcase(&inds_auto)="&ds2" then tgtvar_type=''N'';'; put 'else if upcase(&inds_auto)="&ds3" then tgtvar_type=''C'';'; put 'else do;'; put 'putlog "%str(ERR)OR: unidentified vartype input!" &inds_auto;'; put 'call symputx(''syscc'',98);'; put 'end;'; put 'if &inds_keep="&appds" then move_type=''A'';'; put 'else if &inds_keep="&delds" then move_type=''D'';'; put 'else if &inds_keep="&modds" then move_type=''M'';'; put 'else if &inds_keep="&origds" then move_type=''O'';'; put 'else do;'; put 'putlog "%str(ERR)OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%else %do;'; put '/* not an actual load, so avoid updating the max key table in next step. */'; put '%let rk_update_maxkeytable=NO;'; put '%end;'; put '%if %length(&RK_UNDERLYING)>0 %then %do;'; put '%mp_retainedkey('; put 'base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=&append_lib'; put ',append_dsn=&append_dsn'; put ',retained_key=&pk'; put ',business_key=&rk_underlying'; put ',check_uniqueness=&CHECK_UNIQUENESS'; put ',outds=work.append'; put '%if &rk_update_maxkeytable=NO %then %do;'; put ',maxkeytable=0'; put '%end;'; put '%else %do;'; put ',maxkeytable=&dclib..&RK_MAXKEYTABLE'; put '%end;'; put ',locktable=&dclib..mpe_lockanytable'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',filter_str=%str( (where=( &now < &tech_to)) )'; put '%end;'; put ')'; put '%end;'; put '%else %do;'; put 'proc sql;'; put 'create view work.append as select * from &append_lib..&append_dsn;'; put '%end;'; put '/**'; put '* generate md5 for append table'; put '*/'; put '/* it is possible the source dataset has additional (unwanted) columns.'; put 'Drop if specified; */'; put '%if %length(&keepvars)>0 %then %do;'; put '/* remove tech dates from keepvars as they are generated later */'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_from ),%str( )));'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_to ),%str( )));'; put '%let keepvars=(keep=&keepvars &bus_from &bus_to &processed &md5_col);'; put '%end;'; put '/* CAS varchar types cause append issues here, so perform autoconvert'; put 'by creating empty local table first */'; put 'data;'; put 'set &base_lib..&base_dsn &drop_tx_dates_noobs;'; put 'run;'; put '%local emptybasetable; %let emptybasetable=&syslast;'; put 'data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put '/* apply formats for bitemporal vars but not tx dates which are added later */'; put '%if %length(&keepvars)>0 and &loadtype=BITEMPORAL %then %do;'; put 'format &bus_from &bus_from_fmt;'; put 'format &bus_to &bus_to_fmt;'; put '%end;'; put 'set &emptybasetable /* base table reqd in case append has fewer cols */'; put 'work.append &drop_tx_dates;'; put '%if %length(%str(&bus_from_override))>0 %then %do;'; put '&bus_from= %unquote(&bus_from_override) ;'; put '%end;'; put '%if %length(%str(&bus_to_override))>0 %then %do;'; put '&bus_to= %unquote(&bus_to_override) ;'; put '%end;'; put 'length &md5_col $32;'; put '&md5_col=put(md5(&stripcols),hex32.);'; put '%if %length(&processed)>0 %then %do;'; put 'format &processed &processed_fmt;'; put '&processed=&now;'; put '%end;'; put '/**'; put '* If a delete column exists then create the delete dataset'; put '*/'; put '%if %mf_existvar(&append_lib..&append_dsn, &delete_col) %then %do;'; put 'drop &delete_col;'; put 'if upcase(&delete_col) = "YES" then output &outds_del ;'; put 'else output work.bitemp0_append ;'; put 'run;'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=%scan(&outds_del,-1,.)'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put 'output work.bitemp0_append;'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc gt 0 at line 494)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%if %length(&close_vars)>0 %then %do;'; put '/**'; put '* need to close out records that are not provided'; put '*/'; put 'proc sql;'; put 'create table bitemp1_closevars1 as'; put 'select distinct a.%mf_getquotedstr(in_str=&pk,dlm=%str(,a.),quote=)'; put 'from &base_lib..&base_dsn a'; put 'inner join work.bitemp0_append b'; put 'on 1=1'; put '/* join on closevars key */'; put '%do idx_pk=1 %to %sysfunc(countw(&close_vars));'; put '%let idx_val=%scan(&close_vars,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* filter base on tech dates if necessary */'; put '%if &loadtype=TXTEMPORAL %then %do;'; put 'where a.&tech_from <=&now and &now < a.&tech_to'; put '%end;'; put ';'; put 'create table bitemp1_closevars2 as'; put 'select distinct a.*'; put 'from bitemp1_closevars1 a'; put 'left join work.bitemp0_append b'; put 'on 1=1'; put '/* join on primary key */'; put '%do idx_pk=1 %to %sysfunc(countw(&pk));'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* identify removed records by null value in a field in PK but not close_vars'; put '*/'; put 'where b.%scan('; put '%mf_wordsInStr1ButNotStr2(Str1=&pk,Str2=&close_vars),1,%str( )'; put ') IS NULL'; put ';'; put '%if %mf_getattrn(bitemp1_closevars2,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=bitemp1_closevars2'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '/* return if nothing to load (was just deletes) */'; put '%if %mf_getattrn(work.bitemp0_append,NLOBS)=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- No updates - just deletes!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&base_lib,ds=&base_dsn,'; put 'ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%let user=%mf_getUser();'; put '/* no emails yet'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);*/'; put '%end;'; put '%return;'; put '%end;'; put '/**'; put '* If applying manual overrides to business dates, then the input table MUST'; put '* be unique on the PK. Check, and if not - abort.'; put '*/'; put '%local msg;'; put '%if %length(&bus_from_override.&bus_to_override)>0 or &CHECK_UNIQUENESS=YES'; put '%then %do;'; put 'proc sort data=work.bitemp0_append out=work.bitemp0_check nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.bitemp0_check,NLOBS)'; put 'ne %mf_getattrn(work.bitemp0_append,NLOBS)'; put '%then %do;'; put '%let msg=INPUT table &append_lib..&append_dsn is not unique on PK (&pk);'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%put syscc=&syscc;'; put '%if &syscc>0 %then %do;'; put '%let msg=Bitemporal transform / job aborted due to SYSCC=&SYSCC status;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg);'; put '%end;'; put '/* final check - abort if a lock has appeared on the target table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%goto end_of_macro;'; put '%end;'; put '/* perform join inside query as per'; put 'http://stackoverflow.com/questions/24629793/update-with-a-proc-sql */'; put 'exists( select 1 from &baselib_schema.&innertable where'; put '/* loop PK join */'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put '&base_dsn..&idx_val=&innertable..&idx_val and'; put '%end;'; put '%if &loadtype=BITEMPORAL %then %do;'; put '&base_dsn..&bus_from >= &innertable..&bus_from'; put 'and &base_dsn..&bus_to <= &innertable..&bus_to and'; put '%end;'; put '/* close the statement */'; put '1=1);'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put ') by myAlias;'; put 'execute (drop table &baselib_schema.&innertable) by myAlias;'; put '%end;'; put '%end;'; put 'quit;'; put 'data _null_;'; put 'putlog "&sysmacroname: Closeout complete";'; put 'run;'; put '/**'; put '* Append the new / updated records'; put '*/'; put '%if &engine_type=CAS %then %do;'; put '/* get varchar variables ready for casting */'; put '%local vcfmt vcrename vcassign vcdrop;'; put 'data _null_;'; put 'set work.bitemp_cols(where=(type=6)) end=last;'; put 'length vcrename vcassign vcdrop vcfmt $32767 rancol $32;'; put 'retain vcrename vcassign vcdrop vcfmt;'; put 'if _n_=1 then vcrename=''(rename=('';'; put 'rancol=resolve(''%mf_getuniquename()'');'; put 'vcfmt=trim(vcfmt)!!''length ''!!cats(name)!!'' varchar(*);'';'; put 'vcrename=trim(vcrename)!!'' ''!!cats(name,''='',rancol);'; put 'vcassign=cats(vcassign,name,''='',rancol,'';'');'; put 'vcdrop=cats(vcdrop,''drop ''!!rancol,'';'');'; put 'if last then do;'; put 'vcrename=cats(vcrename,''))'');'; put 'call symputx(''vcfmt'',vcfmt);'; put 'call symputx(''vcrename'',vcrename);'; put 'call symputx(''vcassign'',vcassign);'; put 'call symputx(''vcdrop'',vcdrop);'; put 'end;'; put 'run;'; put '/* prepare a temp cas table with varchars casted */'; put '%let tmp=%mf_getuniquename();'; put 'data casuser.&tmp ;'; put '&vcfmt'; put 'set work.bitemp6_unique &vcrename;'; put '&vcassign'; put '&vcdrop'; put 'run;'; put '/* load the table with varchars applied*/'; put 'data &base_lib..&base_dsn (append=yes )/sessref=dcsession ;'; put 'set casuser.&tmp;'; put 'run;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&tmp;'; put '/* this code will not work as regular tables do not have varchars */'; put '/*'; put 'proc casutil;'; put 'load data=work.bitemp6_unique'; put 'outcaslib="&base_lib" casout="&base_dsn" append ;'; put 'quit;'; put '*/'; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put 'proc append base=&base_lib..&base_dsn'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=bitemp6_unique force nowarn;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&base_lib..&base_dsn data=bitemp6_unique force nowarn; run;'; put '%end;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '/* final check on syscc */'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=&_program'; put ',msg=%str(!!Upload NOT successful!! Failed on actual update / append stage..)'; put ')'; put '%if &outds_audit ne 0 and &LOADTARGET=YES %then %do;'; put 'data work.vw_outds_orig /view=work.vw_outds_orig;'; put 'set work.bitemp0_base (drop=&md5_col);'; put 'where ___TMP___NEW_FLG=0;'; put 'drop ___TMP___NEW_FLG;'; put 'run;'; put '/* update the AUDIT table */'; put '%if %mf_existds(&outds_audit) %then %do;'; put 'options mprint;'; put '%mp_storediffs(&base_lib..&base_dsn'; put ',work.vw_outds_orig'; put ',&pk'; put ',delds=&outds_del'; put ',modds=&outds_mod'; put ',appds=&outds_add'; put ',outds=work.mp_storediffs'; put ',processed_dttm=&now'; put ',loadref=%superq(etlsource)'; put ')'; put 'data _null_;'; put 'set work.mp_storediffs;'; put 'putlog load_ref= libref= dsn= key_hash= tgtvar_nm=;'; put 'run;'; put 'proc append base=&outds_audit data=work.mp_storediffs;'; put 'run;'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Problem in audit stage (&outds_audit))'; put ')'; put '%let user=%mf_getUser();'; put '/**'; put 'Notify as appropriate EMAILS DISABLED'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);'; put '*/'; put '/* monitor BiTemporal usage */'; put '%if &log=1 %then %do;'; put '%put syscc=&syscc;'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'insert into &dclib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&ETLSOURCE"'; put ',LOADTYPE="&loadtype"'; put ',CHANGED_RECORDS=%mf_getattrn(&lastds,NLOBS)'; put ',NEW_RECORDS=%mf_getattrn(&outds_add,NLOBS)'; put ',DELETED_RECORDS=%mf_getattrn(&outds_del,NLOBS)'; put ',DURATION=&dur'; put ',MAC_VER="v&ver"'; put ',user_nm="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%put syscc=&syscc;'; put '%end;'; put '%end_of_macro:'; put '%mend bitemporal_dataloader;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '%macro mpe_refreshlibs();'; put '%dc_getlibs(outds=work.mm_getLibs)'; put 'proc sort data=mm_getlibs;'; put 'by libraryref libraryname;'; put 'run;'; put 'data libs0;'; put 'set mm_getlibs;'; put 'by libraryref;'; put 'if "%mf_getplatform()"="SASMETA" then do;'; put '/* note - invalid libraries can result in exception errors. If this happens,'; put 'configure the dc_viewlib_check variable to NO in Data Controller Settings */'; put 'rc=libname(libraryref,,''meta'',cats(''library="'',libraryname,''";''));'; put 'drop rc;'; put 'if rc ne 0 then do;'; put 'putlog "NOTE: Library " libraryname " does not exist!!";'; put 'putlog (_all_) (=);'; put 'delete;'; put 'end;'; put 'end;'; put 'if not first.libraryref then delete;'; put 'run;'; put 'proc sql;'; put 'create table libs1 as'; put 'select distinct libname'; put ',engine'; put ',path'; put ',level'; put ',sysname'; put ',sysvalue'; put 'from dictionary.libnames'; put 'order by libname, level,engine,path;'; put 'data libs2;'; put 'set libs1;'; put 'length tran $1024;'; put 'if missing(sysname) then sysname=''Missing'';'; put 'select(sysname);'; put 'when(''Access Permission'') tran=''Permissions'';'; put 'when(''Owner Name'') tran=''Owner'';'; put 'when(''Schema/Owner'') tran=''schema'';'; put 'otherwise tran=sysname;'; put 'end;'; put 'run;'; put 'proc transpose data=libs2 out=libs3;'; put 'by libname level engine path;'; put 'var sysvalue;'; put 'id tran;'; put 'run;'; put 'data libs4(rename=(libname=libref));'; put 'length paths $8192 perms owners schemas $500 permissions owner schema $1024;'; put 'if _n_=1 then call missing (of _all_);'; put 'set libs3;'; put 'by libname;'; put 'if engine=''V9'' then engine=''BASE'';'; put 'if first.libname then do;'; put 'retain paths perms owners schemas;'; put 'paths=''(''!!quote(trim(path));'; put 'perms=permissions;'; put 'owners=owner;'; put 'schemas=schema;'; put 'end;'; put 'else do;'; put 'paths=trim(paths)!!'' ''!!quote(trim(path));'; put 'perms=trim(perms)!!'',''!!trim(permissions);'; put 'owners=trim(owners)!!'',''!!trim(owner);'; put 'schemas=trim(schemas)!!'' ''!!trim(schema);'; put 'end;'; put 'if last.libname then do;'; put 'paths=trim(paths)!!'')'';'; put 'schemas=cats(schemas);'; put 'output;'; put 'end;'; put 'keep libname engine paths perms owners schemas;'; put 'run;'; put 'proc sql;'; put 'create table libs5 as'; put 'select a.libref'; put ',coalescec(b.engine,a.engine) as engine length=32'; put ',b.libraryname as libname'; put ',a.paths'; put ',a.perms'; put ',a.owners'; put ',a.schemas'; put ',b.libraryid as libid'; put 'from libs4 a'; put 'left join libs0 b'; put 'on upcase(a.libref)=upcase(b.libraryref)'; put 'where libref not in (''SASWORK'',''WORK'',''SASUSER'',''CASUSER'',''TEMP'',''STPSAMP'''; put ',''MAPSGFK'');'; put '%bitemporal_dataloader(base_lib=&dc_libref'; put ',base_dsn=MPE_DATACATALOG_LIBS'; put ',append_dsn=libs5'; put ',PK=LIBREF'; put ',etlsource=&_program'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&dc_libref'; put ')'; put '%mend mpe_refreshlibs;'; put '/** @cond */'; put '%macro mf_existfeature(feature'; put ')/*/STORE SOURCE*/;'; put '%let feature=%upcase(&feature);'; put '%local platform;'; put '%let platform=%mf_getplatform();'; put '%if &feature= %then %do;'; put '%put No feature was requested for detection;'; put '%end;'; put '%else %if &feature=COLCONSTRAINTS %then %do;'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=PROCLUA %then %do;'; put '/* https://blogs.sas.com/content/sasdummy/2015/08/03/using-lua-within-your-sas-programs */'; put '%if &platform=SASVIYA %then 1;'; put '%else %if "&sysver"="9.2" or "&sysver"="9.3" %then 0;'; put '%else %if "&SYSVLONG" < "9.04.01M3" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=DBMS_MEMTYPE %then %do;'; put '/* does dbms_memtype exist in dictionary.tables? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=EXPORTXLS %then %do;'; put '/* is it possible to PROC EXPORT an excel file? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 1;'; put '%else %if %sysfunc(sysprod(SAS/ACCESS Interface to PC Files)) = 1 %then 1;'; put '%else 0;'; put '%end;'; put '%else %do;'; put '-1'; put '%put &sysmacroname: &feature not found;'; put '%end;'; put '%mend mf_existfeature;'; put '/** @endcond */'; put '%macro mp_getconstraints(lib=WORK'; put ',ds='; put ',outds=mp_getconstraints'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '/**'; put '* Cater for environments where sashelp.vcncolu is not available'; put '*/'; put '%if %sysfunc(exist(sashelp.vcncolu,view))=0 %then %do;'; put 'proc sql;'; put 'create table &outds('; put 'libref char(8)'; put ',TABLE_NAME char(32)'; put ',constraint_type char(8) label=''Constraint Type'''; put ',constraint_name char(32) label=''Constraint Name'''; put ',column_name char(32) label=''Column'''; put ',constraint_order num'; put ');'; put '%return;'; put '%end;'; put '/**'; put '* Neither dictionary tables nor sashelp provides a constraint order column,'; put '* however they DO arrive in the correct order. So, create the col.'; put '**/'; put '%local vw;'; put '%let vw=%mf_getuniquename(prefix=mp_getconstraints_vw_);'; put 'data &vw /view=&vw;'; put 'set sashelp.vcncolu;'; put 'where table_catalog="&lib";'; put '/* use retain approach to reset the constraint order with each constraint */'; put 'length tmp $1000;'; put 'retain tmp;'; put 'drop tmp;'; put 'if tmp ne catx(''|'',table_catalog,table_name,constraint_name) then do;'; put 'constraint_order=1;'; put 'end;'; put 'else constraint_order+1;'; put 'tmp=catx(''|'',table_catalog, table_name,constraint_name);'; put 'run;'; put '/* must use SQL as proc datasets does not support length changes */'; put 'proc sql noprint;'; put 'create table &outds as'; put 'select upcase(a.TABLE_CATALOG) as libref'; put ',upcase(a.TABLE_NAME) as TABLE_NAME'; put ',a.constraint_type'; put ',a.constraint_name'; put ',b.column_name'; put ',b.constraint_order'; put 'from dictionary.TABLE_CONSTRAINTS a'; put 'left join &vw b'; put 'on upcase(a.TABLE_CATALOG)=upcase(b.TABLE_CATALOG)'; put 'and upcase(a.TABLE_NAME)=upcase(b.TABLE_NAME)'; put 'and a.constraint_name=b.constraint_name'; put '/**'; put '* We cannot apply this clause to the underlying dictionary table. See:'; put '* https://communities.sas.com/t5/SAS-Programming/Unexpected-Where-Clause-behaviour-in-dictionary-TABLE/m-p/771554#M244867'; put '* cannot use`where calculated libref="&lib"` either as it will STILL execute'; put '* all the underlying constraint queries, causing exception errors in some'; put '* cases: https://github.com/sasjs/core/issues/283'; put '*/'; put 'where a.TABLE_CATALOG="&lib"'; put '%if "&ds" ne "" %then %do;'; put 'and upcase(a.TABLE_NAME)="&ds"'; put 'and upcase(b.TABLE_NAME)="&ds"'; put '%end;'; put 'order by libref, table_name, constraint_name, constraint_order'; put ';'; put '/* tidy up */'; put '%mp_dropmembers('; put '&vw,'; put 'iftrue=(&mdebug=0)'; put ')'; put '%mend mp_getconstraints;'; put '%macro mpe_refreshtables(lib,ds=#all);'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%local engine; %let engine=%mf_getengine(&lib);'; put '%local schema; %let schema=%mf_getschema(&lib);'; put '%put running &sysmacroname &lib(&engine &schema) for &ds;'; put 'proc sql;'; put 'create table cols as'; put 'select libname as libref'; put ',upcase(memname) as dsn'; put ',memtype'; put ',upcase(name) as name'; put ',type'; put ',length'; put ',varnum'; put ',label'; put ',format'; put ',idxusage'; put ',notnull'; put 'from dictionary.columns'; put 'where upcase(libname)="&lib"'; put '%if &ds ne #ALL %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put ';'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc afer &lib cols extraction)'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc afer &lib indexes extraction)'; put ')'; put '%if &engine=SQLSVR %then %do;'; put 'proc sql;'; put 'connect using &lib;'; put 'create table work.indexes as'; put 'select * from connection to &lib('; put 'select'; put 's.name as SchemaName,'; put 't.name as memname,'; put 'tc.name as name,'; put 'ic.key_ordinal as KeyOrderNr'; put 'from'; put 'sys.schemas s'; put 'inner join sys.tables t on s.schema_id=t.schema_id'; put 'inner join sys.indexes i on t.object_id=i.object_id'; put 'inner join sys.index_columns ic on i.object_id=ic.object_id'; put 'and i.index_id=ic.index_id'; put 'inner join sys.columns tc on ic.object_id=tc.object_id'; put 'and ic.column_id=tc.column_id'; put 'where i.is_primary_key=1'; put 'and s.name=%str(%'')&schema%str(%'')'; put 'order by t.name, ic.key_ordinal ;'; put ');disconnect from &lib;'; put 'create table finalcols as'; put 'select a.*'; put ',case when b.name is not null then 1 else 0 end as pk_ind'; put 'from work.cols a'; put 'left join work.indexes b'; put 'on a.dsn=b.memname'; put 'and upcase(a.name)=upcase(b.name)'; put 'order by libref,dsn;'; put '%end;'; put '%else %do;'; put '%local dsn;'; put '%if &ds = #ALL %then %let dsn=;'; put '%mp_getconstraints(lib=&lib.,ds=&dsn,outds=work.constraints)'; put '/* extract cols that are clearly primary keys */'; put 'proc sql;'; put 'create table work.pk4sure as'; put 'select libref'; put ',table_name'; put ',constraint_name'; put ',constraint_order'; put ',column_name as name'; put 'from work.constraints'; put 'where constraint_type=''PRIMARY'''; put 'order by 1,2,3,4;'; put '/* extract unique constraints where every col is also NOT NULL */'; put 'proc sql;'; put 'create table work.sum as'; put 'select a.libref'; put ',a.table_name'; put ',a.constraint_name'; put ',count(a.column_name) as unq_cnt'; put ',count(b.column_name) as nul_cnt'; put 'from work.constraints(where=(constraint_type =''UNIQUE'')) a'; put 'left join work.constraints(where=(constraint_type =''NOT NULL'')) b'; put 'on a.libref=b.libref'; put 'and a.table_name=b.table_name'; put 'and a.column_name=b.column_name'; put 'group by 1,2,3'; put 'having unq_cnt=nul_cnt;'; put '/* extract cols from the relevant unique constraints */'; put 'create table work.pkdefault as'; put 'select a.libref'; put ',a.table_name'; put ',a.constraint_name'; put ',b.constraint_order'; put ',b.column_name as name'; put 'from work.sum a'; put 'left join work.constraints(where=(constraint_type =''UNIQUE'')) b'; put 'on a.libref=b.libref'; put 'and a.table_name=b.table_name'; put 'and a.constraint_name=b.constraint_name'; put 'order by 1,2,3,4;'; put '/* extract cols from the relevant unique INDEXES */'; put 'create table work.pkfromindex as'; put 'select libname as libref'; put ',memname as table_name'; put ',indxname as constraint_name'; put ',indxpos as constraint_order'; put ',name'; put 'from dictionary.indexes'; put 'where nomiss=''yes'' and unique=''yes'' and upcase(libname)="&lib"'; put '%if &ds ne #ALL %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put 'order by 1,2,3,4;'; put '/* create one table */'; put 'data work.finalpks;'; put 'set pkdefault pk4sure pkfromindex;'; put 'pk_ind=1;'; put '/* if there are multiple unique constraints, take the first */'; put 'by libref table_name constraint_name;'; put 'retain keepme;'; put 'if first.table_name then keepme=1;'; put 'if first.constraint_name and not first.table_name then keepme=0;'; put 'if keepme=1;'; put 'run;'; put '/* join back to starting table */'; put 'proc sql;'; put 'create table finalcols as'; put 'select a.*'; put ',b.constraint_order'; put ',case when b.pk_ind=1 then 1 else 0 end as pk_ind'; put 'from work.cols a'; put 'left join work.finalpks b'; put 'on a.libref=b.libref'; put 'and a.dsn=b.table_name'; put 'and upcase(a.name)=upcase(b.name)'; put 'order by libref,dsn,constraint_order;'; put '%end;'; put '/* load columns */'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datacatalog_vars'; put ',append_dsn=finalcols'; put ',PK=LIBREF DSN NAME'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put '%if &ds ne #ALL %then %do;'; put ',close_vars=LIBREF DSN'; put '%end;'; put ',dclib=&mpelib'; put ')'; put '/* prepare tables */'; put 'proc sql;'; put 'create table work.tabs as select'; put 'libname as libref'; put ',upcase(memname) as dsn'; put ',memtype'; put '%if %mf_existfeature(DBMS_MEMTYPE)=1 %then %do;'; put ',dbms_memtype'; put '%end;'; put '%else %do;'; put ',''n/a'' as dbms_memtype format=$32.'; put '%end;'; put ',typemem'; put ',memlabel'; put ',nvar'; put ',compress'; put 'from dictionary.tables'; put 'where upcase(libname)="&lib"'; put '%if &ds ne #ALL %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put ';'; put 'data tabs2;'; put 'set finalcols;'; put 'length pk_fields $512;'; put 'retain pk_fields;'; put 'by libref dsn;'; put 'if first.dsn then pk_fields='''';'; put 'if pk_ind=1 then pk_fields=catx('' '',pk_fields,name);'; put 'if last.dsn then output;'; put 'run;'; put 'proc sql;'; put 'create table work.finaltabs as'; put 'select a.libref'; put ',a.dsn'; put ',a.memtype'; put ',a.dbms_memtype'; put ',a.typemem'; put ',a.memlabel'; put ',a.nvar'; put ',a.compress'; put ',b.pk_fields'; put 'from work.tabs a'; put 'left join work.tabs2 b'; put 'on a.libref=b.libref'; put 'and a.dsn=b.dsn;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datacatalog_tabs'; put ',append_dsn=finaltabs'; put ',PK=LIBREF DSN'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&mpelib'; put '%if &ds ne #ALL %then %do;'; put ',close_vars=LIBREF'; put '%end;'; put ')'; put '/* prepare table frequently changing attributes */'; put 'proc sql;'; put '%if &engine=SQLSVR %then %do;'; put 'connect using &lib;'; put 'create table work.attrs as select * from connection to &lib('; put 'SELECT SCHEMA_NAME(schema_id) as ''schema'', name, create_date, modify_date'; put 'FROM sys.tables ;'; put ');'; put 'create table work.nobs as select * from connection to &lib('; put 'SELECT SCHEMA_NAME(A.schema_id) AS ''schema'''; put ',A.Name, AVG(B.rows) AS ''RowCount'''; put 'FROM sys.objects A'; put 'INNER JOIN sys.partitions B ON A.object_id = B.object_id'; put 'WHERE A.type = ''U'''; put 'GROUP BY A.schema_id, A.Name'; put ');'; put 'disconnect from &lib;'; put 'create table statustabs as select'; put 'a.libref'; put ',a.dsn'; put ',b.create_date as crdate'; put ',b.modify_date as modate'; put ',. as filesize'; put ',c.RowCount as nobs'; put 'from work.tabs a'; put 'left join work.attrs(where=(schema="&schema")) b'; put 'on upcase(a.dsn)=upcase(b.name)'; put 'left join work.nobs(where=(schema="&schema")) c'; put 'on upcase(a.dsn)=upcase(c.name);'; put '%end;'; put '%else %do;'; put 'create table statustabs as select'; put 'libname as libref'; put ',upcase(memname) as dsn'; put ',crdate'; put ',modate'; put ',filesize'; put ',nobs'; put 'from dictionary.tables'; put 'where upcase(libname)="&lib"'; put '%if &ds ne #ALL %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put ';'; put '%end;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datastatus_tabs'; put ',append_dsn=statustabs'; put ',PK=LIBREF DSN'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&mpelib'; put '%if &ds ne #ALL %then %do;'; put ',close_vars=LIBREF'; put '%end;'; put ')'; put '%if &ds = #ALL %then %do;'; put 'proc sql;'; put 'create table statuslibs as select'; put 'libref'; put ',sum(filesize) as libsize'; put ',count(*) as table_cnt'; put 'from statustabs'; put 'group by 1;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datastatus_libs'; put ',append_dsn=statuslibs'; put ',PK=LIBREF'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&mpelib'; put ')'; put '%end;'; put '%mend mpe_refreshtables;'; put '%macro dc_refreshcatalog(libref);'; put '/* take current repository */'; put '%local repo repocnt xx;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'put (_all_)(=);'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'');'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put &sysmacroname #&libref#;'; put '%if #&libref# ne ## %then %do;'; put '%put &sysmacroname: assigning specific libref, &libref;'; put '%dc_assignlib(WRITE,&libref) /* write just in order to assign direct lib */'; put '%mpe_refreshlibs()'; put '%mpe_refreshtables(&libref)'; put '%end;'; put '%else %do xx=1 %to &repocnt;'; put 'options metarepository=&&repo&xx;'; put '%mpe_refreshlibs()'; put '/* get libs to be ignored */'; put '%local ignorelist;'; put 'proc sql noprint;'; put 'select var_value into: ignorelist'; put 'from &mpelib..MPE_CONFIG'; put 'where var_scope=''DC_CATALOG'''; put 'and var_name="DC_IGNORELIBS"'; put 'and &dc_dttmtfmt. < TX_TO'; put 'and var_active=1;'; put '/* get all libs */'; put '%let libcnt=0;'; put 'data libraries;'; put 'set &mpelib..mpe_datacatalog_libs;'; put 'where &dc_dttmtfmt. le TX_TO;'; put 'if index("&ignorelist",''|''!!upcase(trim(libref))!!''|'')=0;'; put 'i+1;'; put 'call symputx(cats(''lib'',i),libref);'; put 'call symputx(''libcnt'',i);'; put 'run;'; put '%local i;'; put '%do i=1 %to &libcnt;'; put '%dc_assignlib(WRITE,&&lib&i)'; put '%mpe_refreshtables(&&lib&i)'; put '%end;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_refreshcatalog;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file refreshcatalog.sas'; put '@brief Refreshes the library data catalog'; put '@details A library may be passed in a LIBREF url param.'; put '

SAS Macros

'; put '@li mpeinit.sas'; put '@li dc_refreshcatalog.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%global libref;'; put '%mpeinit()'; put '%dc_refreshcatalog(&libref)'; put 'data _null_;'; put 'file _webout;'; put 'put ''

Catalog Refresh Complete

'';'; put 'run;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=refreshlibs; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 or %length(&var)=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_inc)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status;'; put 'proc sql noprint;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro bitemporal_closeouts('; put 'tech_from=tx_from_dttm'; put ',tech_to = tx_to_dttm /* Technical TO datetime variable.'; put 'Req''d on BASE table only. */'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE /* Name of STAGING table. */'; put ',PK= name sex /* Business key, space separated. */'; put '/* Should INCLUDE BUS_FROM field if relevant. */'; put ',NOW=DEFINE'; put ',FILTER= /* supply a filter to limit the update */'; put ',outdest= /* supply an unquoted filepath/filename.ext to get'; put 'a text file containing the update statements */'; put ',loadtype='; put ',loadtarget=YES /* if <> YES will return without changing anything */'; put ');'; put '%put ENTERING &sysmacroname;'; put '%local x var start;'; put '%let start=%sysfunc(datetime());'; put '%dc_assignlib(WRITE,&base_lib)'; put '%dc_assignlib(WRITE,&append_lib)'; put '%if &now=DEFINE %then %let now=&dc_dttmtfmt.;'; put '%put &=now;'; put '/**'; put '* perform basic checks'; put '*/'; put '/* do tables exist? */'; put '%if not %sysfunc(exist(&base_lib..&base_dsn)) %then %do;'; put '%mp_abort(msg=&base_lib..&base_dsn does not exist)'; put '%end;'; put '%else %if %sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 %then %do;'; put '%mp_abort(msg=&append_lib..&append_dsn does not exist)'; put '%end;'; put '/* do TX columns exist? */'; put '%if &loadtype ne UPDATE %then %do;'; put '%if not %mf_existvar(&base_lib..&base_dsn,&tech_from) %then %do;'; put '%mp_abort(msg=&tech_from does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&base_lib..&base_dsn,&tech_to) %then %do;'; put '%mp_abort(msg=&tech_to does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%end;'; put '/* do PK columns exist? */'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if not %mf_existvar(&base_lib..&base_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&append_lib..&append_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &append_lib..&append_dsn)'; put '%end;'; put '%end;'; put '/* check uniqueness */'; put 'proc sort data=&append_lib..&append_dsn'; put 'out=___closeout1 noduprecs dupout=___closeout1a;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(___closeout1a,NLOBS)>0 %then'; put '%put NOTE: dups on (&PK) in (&append_lib..&append_dsn);'; put '/* is &NOW value within a tolerance? Should not allow renegade closeouts.. */'; put '%local gap;'; put '%let gap=0;'; put 'data _null_;'; put 'now=&now;'; put 'gap=intck(''HOURS'',now,datetime());'; put 'call symputx(''gap'',gap,''l'');'; put 'run;'; put '%mf_abort('; put 'iftrue=(&gap > 24),'; put 'msg=NOW variable (&now) is not within a 24hr tolerance'; put ')'; put '/* have any warnings / errs occurred thus far? If so, abort */'; put '%mf_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/**'; put '* Create closeout statements. These are sent as individual SQL statements'; put '* to ensure pass-through utilisation. The update_cnt variable monitors'; put '* how many records were actually updated on the target table.'; put '*/'; put '%local update_cnt;'; put '%let update_cnt=0;'; put 'filename tmp temp;'; put 'data _null_;'; put 'set ___closeout1;'; put 'file tmp;'; put 'if _n_=1 then put ''proc sql noprint;'' ;'; put 'length string $32767.;'; put '%if &loadtype=UPDATE %then %do;'; put 'put "delete from &base_lib..&base_dsn where 1";'; put '%end;'; put '%else %do;'; put 'now=symget(''now'');'; put 'put "update &base_lib..&base_dsn set &tech_to= " now @;'; put '%if %mf_existvar(&base_lib..&base_dsn,PROCESSED_DTTM) %then %do;'; put 'put " ,PROCESSED_DTTM=" now @;'; put '%end;'; put 'put " where " now " lt &tech_to ";'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if %mf_getvartype(&base_lib..&base_dsn,&var)=C %then %do;'; put '/* use single quotes to avoid ampersand resolution in data */'; put 'string=" & &var=''"!!trim(prxchange("s/''/''''/",-1,&var))!!"''";'; put '%end;'; put '%else %do;'; put 'string=cats(" & &var=",&var);'; put '%end;'; put 'put string;'; put '%end;'; put 'put "&filter ;";'; put 'put ''%let update_cnt=%eval(&update_cnt+&sqlobs);%put update_cnt=&update_cnt;'';'; put 'run;'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%if &loadtarget ne YES %then %return;'; put '/* ensure we have a lock */'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn'; put ',ref=bitemporal_closeouts'; put ',ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'options source2;'; put '%inc tmp;'; put 'filename tmp clear;'; put '/**'; put '* Update audit tracker'; put '*/'; put '%local newobs; %let newobs=%mf_getattrn(work.___closeout1,NLOBS);'; put '%local user; %let user=%mf_getuser();'; put 'proc sql;'; put 'insert into &mpelib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&append_lib..&append_dsn contained &newobs records"'; put ',LOADTYPE="CLOSEOUT"'; put ',DELETED_RECORDS=&update_cnt'; put ',NEW_RECORDS=0'; put ',DURATION=%sysfunc(datetime())-&start'; put ',USER_NM="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%mend bitemporal_closeouts;'; put '%macro mf_getschema(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum rc schema;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=''Schema/Owner'''; put ')),i));'; put '%if (&dsid ^= 0) %then %do;'; put '%let vnum=%sysfunc(varnum(&dsid,SYSVALUE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let schema=%sysfunc(getvarc(&dsid,&vnum));'; put '%put &libref. schema is &schema.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '&schema'; put '%mend mf_getschema;'; put '/** @endcond */'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_retainedkey('; put 'base_lib=WORK'; put ',base_dsn=BASETABLE'; put ',append_lib=WORK'; put ',append_dsn=APPENDTABLE'; put ',retained_key=DEFAULT_RK'; put ',business_key= PK1 PK2'; put ',check_uniqueness=NO'; put ',maxkeytable=0'; put ',locktable=0'; put ',outds=WORK.APPEND'; put ',filter_str='; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local base_libds app_libds key_field check maxkey idx_pk newkey_cnt iserr'; put 'msg x tempds1 tempds2 comma_pk appnobs checknobs dropvar tempvar idx_val;'; put '%let base_libds=%upcase(&base_lib..&base_dsn);'; put '%let app_libds=%upcase(&append_lib..&append_dsn);'; put '%let tempds1=%mf_getuniquename();'; put '%let tempds2=%mf_getuniquename();'; put '%let comma_pk=%mf_getquotedstr(in_str=%str(&business_key),dlm=%str(,),quote=);'; put '%let outds=%sysfunc(ifc(%index(&outds,.)=0,work.&outds,&outds));'; put '/* validation checks */'; put '%let iserr=0;'; put '%if &syscc>0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(SYSCC=&syscc on macro entry);'; put '%end;'; put '%else %if %sysfunc(exist(&base_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Base LIBDS (&base_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if %sysfunc(exist(&app_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Append LIBDS (&app_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&maxkeytable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Maxkeytable (&maxkeytable) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&locktable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Locktable (&locktable) expected but NOT FOUND);'; put '%end;'; put '%else %if %length(&business_key)=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Business key (&business_key) expected but NOT FOUND);'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&business_key));'; put '/* check business key values exist */'; put '%let key_field=%scan(&business_key,&x,%str( ));'; put '%if not %mf_existvar(&app_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &app_libds!;'; put '%goto err;'; put '%end;'; put '%else %if not %mf_existvar(&base_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &base_libds!;'; put '%goto err;'; put '%end;'; put '%end;'; put '%err:'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue=(&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put 'proc sql noprint;'; put 'select sum(max(&retained_key),0) into: maxkey from &base_libds;'; put '/**'; put '* get base table RK and bus field values for lookup'; put '*/'; put 'proc sql noprint;'; put 'create table &tempds1 as'; put 'select distinct &comma_pk,&retained_key'; put 'from &base_libds &filter_str'; put 'order by &comma_pk,&retained_key;'; put '%if &check_uniqueness=YES %then %do;'; put 'select count(*) into:checknobs'; put 'from (select distinct &comma_pk from &app_libds);'; put 'select count(*) into: appnobs from &app_libds; /* might be view */'; put '%if &checknobs ne &appnobs %then %do;'; put '%let msg=Source table &app_libds is not unique on (&business_key);'; put '%let iserr=1;'; put '%end;'; put '%end;'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue= (&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put '%if %mf_existvar(&app_libds,&retained_key)'; put '%then %let dropvar=(drop=&retained_key);'; put '/* prepare interim table with retained key populated for matching keys */'; put 'proc sql noprint;'; put 'create table &tempds2 as'; put 'select b.&retained_key, a.*'; put 'from &app_libds &dropvar a'; put 'left join &tempds1 b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&business_key));'; put '%let idx_val=%scan(&business_key,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by &retained_key;'; put '/* identify the number of entries without retained keys (new records) */'; put 'select count(*) into: newkey_cnt'; put 'from &tempds2'; put 'where missing(&retained_key);'; put 'quit;'; put '/**'; put '* Update maxkey table if link provided'; put '*/'; put '%if &maxkeytable ne 0 %then %do;'; put 'proc sql noprint;'; put 'select count(*) into: check from &maxkeytable'; put 'where upcase(keytable)="&base_libds";'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with mp_retainedkey'; put ',ctl_ds=&locktable'; put ')'; put 'proc sql;'; put '%if &check=0 %then %do;'; put 'insert into &maxkeytable'; put 'set keytable="&base_libds"'; put ',keycolumn="&retained_key"'; put ',max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put 'where keytable="&base_libds";'; put '%end;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with maxkey=%eval(&maxkey+&newkey_cnt)'; put ',ctl_ds=&locktable'; put ')'; put '%end;'; put '/* fill in the missing retained key values */'; put '%let tempvar=%mf_getuniquename();'; put 'data &outds(drop=&tempvar);'; put 'retain &tempvar %eval(&maxkey+1);'; put 'set &tempds2;'; put 'if &retained_key =. then &retained_key=&tempvar;'; put '&tempvar=&tempvar+1;'; put 'run;'; put '%mend mp_retainedkey;'; put '/** @cond */'; put '%macro mp_storediffs(libds'; put ',origds'; put ',key'; put ',delds=0'; put ',appds=0'; put ',modds=0'; put ',outds=work.mp_storediffs'; put ',loadref=0'; put ',processed_dttm=0'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '/* set up unique and temporary vars */'; put '%local ds1 ds2 ds3 ds4 hashkey inds_auto inds_keep dslist vlist;'; put '%let ds1=%upcase(work.%mf_getuniquename(prefix=mpsd_ds1));'; put '%let ds2=%upcase(work.%mf_getuniquename(prefix=mpsd_ds2));'; put '%let ds3=%upcase(work.%mf_getuniquename(prefix=mpsd_ds3));'; put '%let ds4=%upcase(work.%mf_getuniquename(prefix=mpsd_ds4));'; put '%let hashkey=%upcase(%mf_getuniquename(prefix=mpsd_hashkey));'; put '%let inds_auto=%upcase(%mf_getuniquename(prefix=mpsd_inds_auto));'; put '%let inds_keep=%upcase(%mf_getuniquename(prefix=mpsd_inds_keep));'; put '%let dslist=&origds;'; put '%if &delds ne 0 %then %do;'; put '%let delds=%upcase(&delds);'; put '%if %scan(&delds,-1,.)=&delds %then %let delds=WORK.&delds;'; put '%let dslist=&dslist &delds;'; put '%end;'; put '%if &appds ne 0 %then %do;'; put '%let appds=%upcase(&appds);'; put '%if %scan(&appds,-1,.)=&appds %then %let appds=WORK.&appds;'; put '%let dslist=&dslist &appds;'; put '%end;'; put '%if &modds ne 0 %then %do;'; put '%let modds=%upcase(&modds);'; put '%if %scan(&modds,-1,.)=&modds %then %let modds=WORK.&modds;'; put '%let dslist=&dslist &modds;'; put '%end;'; put '%let origds=%upcase(&origds);'; put '%if %scan(&origds,-1,.)=&origds %then %let origds=WORK.&origds;'; put '%let key=%upcase(&key);'; put '/* hash the key and append all the tables (marking the source) */'; put 'data &ds1;'; put 'set &dslist indsname=&inds_auto;'; put '&hashkey=put(md5(catx(''|'',%mf_getquotedstr(&key,quote=N))),$hex32.);'; put '&inds_keep=upcase(&inds_auto);'; put 'proc sort;'; put 'by &inds_keep &hashkey;'; put 'run;'; put '/* transpose numeric & char vars */'; put 'proc transpose data=&ds1'; put 'out=&ds2(rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_num));'; put 'by &inds_keep &hashkey;'; put 'var _numeric_;'; put 'run;'; put 'proc transpose data=&ds1'; put 'out=&ds3('; put 'rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_char)'; put 'where=(tgtvar_nm not in ("&hashkey","&inds_keep"))'; put ');'; put 'by &inds_keep &hashkey;'; put 'var _character_;'; put 'run;'; put '%if %index(&libds,-)>0 and %scan(&libds,2,-)=FC %then %do;'; put '/* this is a format catalog - cannot query cols directly */'; put '%let vlist="FMTNAME","START","END","LABEL","MIN","MAX","DEFAULT","LENGTH"'; put ',"FUZZ","PREFIX","MULT","FILL","NOEDIT","TYPE","SEXCL","EEXCL","HLO"'; put ',"DECSEP","DIG3SEP","DATATYPE","LANGUAGE";'; put '%end;'; put '%else %let vlist=%mf_getvarlist(&libds,dlm=%str(,),quote=DOUBLE);'; put 'data &ds4;'; put 'length &inds_keep $41 tgtvar_nm $32 _label_ $256;'; put 'if _n_=1 then call missing(_label_);'; put 'drop _label_;'; put 'set &ds2 &ds3 indsname=&inds_auto;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%upcase(&vlist));'; put 'if upcase(&inds_auto)="&ds2" then tgtvar_type=''N'';'; put 'else if upcase(&inds_auto)="&ds3" then tgtvar_type=''C'';'; put 'else do;'; put 'putlog "%str(ERR)OR: unidentified vartype input!" &inds_auto;'; put 'call symputx(''syscc'',98);'; put 'end;'; put 'if &inds_keep="&appds" then move_type=''A'';'; put 'else if &inds_keep="&delds" then move_type=''D'';'; put 'else if &inds_keep="&modds" then move_type=''M'';'; put 'else if &inds_keep="&origds" then move_type=''O'';'; put 'else do;'; put 'putlog "%str(ERR)OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%else %do;'; put '/* not an actual load, so avoid updating the max key table in next step. */'; put '%let rk_update_maxkeytable=NO;'; put '%end;'; put '%if %length(&RK_UNDERLYING)>0 %then %do;'; put '%mp_retainedkey('; put 'base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=&append_lib'; put ',append_dsn=&append_dsn'; put ',retained_key=&pk'; put ',business_key=&rk_underlying'; put ',check_uniqueness=&CHECK_UNIQUENESS'; put ',outds=work.append'; put '%if &rk_update_maxkeytable=NO %then %do;'; put ',maxkeytable=0'; put '%end;'; put '%else %do;'; put ',maxkeytable=&dclib..&RK_MAXKEYTABLE'; put '%end;'; put ',locktable=&dclib..mpe_lockanytable'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',filter_str=%str( (where=( &now < &tech_to)) )'; put '%end;'; put ')'; put '%end;'; put '%else %do;'; put 'proc sql;'; put 'create view work.append as select * from &append_lib..&append_dsn;'; put '%end;'; put '/**'; put '* generate md5 for append table'; put '*/'; put '/* it is possible the source dataset has additional (unwanted) columns.'; put 'Drop if specified; */'; put '%if %length(&keepvars)>0 %then %do;'; put '/* remove tech dates from keepvars as they are generated later */'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_from ),%str( )));'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_to ),%str( )));'; put '%let keepvars=(keep=&keepvars &bus_from &bus_to &processed &md5_col);'; put '%end;'; put '/* CAS varchar types cause append issues here, so perform autoconvert'; put 'by creating empty local table first */'; put 'data;'; put 'set &base_lib..&base_dsn &drop_tx_dates_noobs;'; put 'run;'; put '%local emptybasetable; %let emptybasetable=&syslast;'; put 'data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put '/* apply formats for bitemporal vars but not tx dates which are added later */'; put '%if %length(&keepvars)>0 and &loadtype=BITEMPORAL %then %do;'; put 'format &bus_from &bus_from_fmt;'; put 'format &bus_to &bus_to_fmt;'; put '%end;'; put 'set &emptybasetable /* base table reqd in case append has fewer cols */'; put 'work.append &drop_tx_dates;'; put '%if %length(%str(&bus_from_override))>0 %then %do;'; put '&bus_from= %unquote(&bus_from_override) ;'; put '%end;'; put '%if %length(%str(&bus_to_override))>0 %then %do;'; put '&bus_to= %unquote(&bus_to_override) ;'; put '%end;'; put 'length &md5_col $32;'; put '&md5_col=put(md5(&stripcols),hex32.);'; put '%if %length(&processed)>0 %then %do;'; put 'format &processed &processed_fmt;'; put '&processed=&now;'; put '%end;'; put '/**'; put '* If a delete column exists then create the delete dataset'; put '*/'; put '%if %mf_existvar(&append_lib..&append_dsn, &delete_col) %then %do;'; put 'drop &delete_col;'; put 'if upcase(&delete_col) = "YES" then output &outds_del ;'; put 'else output work.bitemp0_append ;'; put 'run;'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=%scan(&outds_del,-1,.)'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put 'output work.bitemp0_append;'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc gt 0 at line 494)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%if %length(&close_vars)>0 %then %do;'; put '/**'; put '* need to close out records that are not provided'; put '*/'; put 'proc sql;'; put 'create table bitemp1_closevars1 as'; put 'select distinct a.%mf_getquotedstr(in_str=&pk,dlm=%str(,a.),quote=)'; put 'from &base_lib..&base_dsn a'; put 'inner join work.bitemp0_append b'; put 'on 1=1'; put '/* join on closevars key */'; put '%do idx_pk=1 %to %sysfunc(countw(&close_vars));'; put '%let idx_val=%scan(&close_vars,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* filter base on tech dates if necessary */'; put '%if &loadtype=TXTEMPORAL %then %do;'; put 'where a.&tech_from <=&now and &now < a.&tech_to'; put '%end;'; put ';'; put 'create table bitemp1_closevars2 as'; put 'select distinct a.*'; put 'from bitemp1_closevars1 a'; put 'left join work.bitemp0_append b'; put 'on 1=1'; put '/* join on primary key */'; put '%do idx_pk=1 %to %sysfunc(countw(&pk));'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* identify removed records by null value in a field in PK but not close_vars'; put '*/'; put 'where b.%scan('; put '%mf_wordsInStr1ButNotStr2(Str1=&pk,Str2=&close_vars),1,%str( )'; put ') IS NULL'; put ';'; put '%if %mf_getattrn(bitemp1_closevars2,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=bitemp1_closevars2'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '/* return if nothing to load (was just deletes) */'; put '%if %mf_getattrn(work.bitemp0_append,NLOBS)=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- No updates - just deletes!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&base_lib,ds=&base_dsn,'; put 'ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%let user=%mf_getUser();'; put '/* no emails yet'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);*/'; put '%end;'; put '%return;'; put '%end;'; put '/**'; put '* If applying manual overrides to business dates, then the input table MUST'; put '* be unique on the PK. Check, and if not - abort.'; put '*/'; put '%local msg;'; put '%if %length(&bus_from_override.&bus_to_override)>0 or &CHECK_UNIQUENESS=YES'; put '%then %do;'; put 'proc sort data=work.bitemp0_append out=work.bitemp0_check nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.bitemp0_check,NLOBS)'; put 'ne %mf_getattrn(work.bitemp0_append,NLOBS)'; put '%then %do;'; put '%let msg=INPUT table &append_lib..&append_dsn is not unique on PK (&pk);'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%put syscc=&syscc;'; put '%if &syscc>0 %then %do;'; put '%let msg=Bitemporal transform / job aborted due to SYSCC=&SYSCC status;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg);'; put '%end;'; put '/* final check - abort if a lock has appeared on the target table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%goto end_of_macro;'; put '%end;'; put '/* perform join inside query as per'; put 'http://stackoverflow.com/questions/24629793/update-with-a-proc-sql */'; put 'exists( select 1 from &baselib_schema.&innertable where'; put '/* loop PK join */'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put '&base_dsn..&idx_val=&innertable..&idx_val and'; put '%end;'; put '%if &loadtype=BITEMPORAL %then %do;'; put '&base_dsn..&bus_from >= &innertable..&bus_from'; put 'and &base_dsn..&bus_to <= &innertable..&bus_to and'; put '%end;'; put '/* close the statement */'; put '1=1);'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put ') by myAlias;'; put 'execute (drop table &baselib_schema.&innertable) by myAlias;'; put '%end;'; put '%end;'; put 'quit;'; put 'data _null_;'; put 'putlog "&sysmacroname: Closeout complete";'; put 'run;'; put '/**'; put '* Append the new / updated records'; put '*/'; put '%if &engine_type=CAS %then %do;'; put '/* get varchar variables ready for casting */'; put '%local vcfmt vcrename vcassign vcdrop;'; put 'data _null_;'; put 'set work.bitemp_cols(where=(type=6)) end=last;'; put 'length vcrename vcassign vcdrop vcfmt $32767 rancol $32;'; put 'retain vcrename vcassign vcdrop vcfmt;'; put 'if _n_=1 then vcrename=''(rename=('';'; put 'rancol=resolve(''%mf_getuniquename()'');'; put 'vcfmt=trim(vcfmt)!!''length ''!!cats(name)!!'' varchar(*);'';'; put 'vcrename=trim(vcrename)!!'' ''!!cats(name,''='',rancol);'; put 'vcassign=cats(vcassign,name,''='',rancol,'';'');'; put 'vcdrop=cats(vcdrop,''drop ''!!rancol,'';'');'; put 'if last then do;'; put 'vcrename=cats(vcrename,''))'');'; put 'call symputx(''vcfmt'',vcfmt);'; put 'call symputx(''vcrename'',vcrename);'; put 'call symputx(''vcassign'',vcassign);'; put 'call symputx(''vcdrop'',vcdrop);'; put 'end;'; put 'run;'; put '/* prepare a temp cas table with varchars casted */'; put '%let tmp=%mf_getuniquename();'; put 'data casuser.&tmp ;'; put '&vcfmt'; put 'set work.bitemp6_unique &vcrename;'; put '&vcassign'; put '&vcdrop'; put 'run;'; put '/* load the table with varchars applied*/'; put 'data &base_lib..&base_dsn (append=yes )/sessref=dcsession ;'; put 'set casuser.&tmp;'; put 'run;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&tmp;'; put '/* this code will not work as regular tables do not have varchars */'; put '/*'; put 'proc casutil;'; put 'load data=work.bitemp6_unique'; put 'outcaslib="&base_lib" casout="&base_dsn" append ;'; put 'quit;'; put '*/'; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put 'proc append base=&base_lib..&base_dsn'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=bitemp6_unique force nowarn;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&base_lib..&base_dsn data=bitemp6_unique force nowarn; run;'; put '%end;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '/* final check on syscc */'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=&_program'; put ',msg=%str(!!Upload NOT successful!! Failed on actual update / append stage..)'; put ')'; put '%if &outds_audit ne 0 and &LOADTARGET=YES %then %do;'; put 'data work.vw_outds_orig /view=work.vw_outds_orig;'; put 'set work.bitemp0_base (drop=&md5_col);'; put 'where ___TMP___NEW_FLG=0;'; put 'drop ___TMP___NEW_FLG;'; put 'run;'; put '/* update the AUDIT table */'; put '%if %mf_existds(&outds_audit) %then %do;'; put 'options mprint;'; put '%mp_storediffs(&base_lib..&base_dsn'; put ',work.vw_outds_orig'; put ',&pk'; put ',delds=&outds_del'; put ',modds=&outds_mod'; put ',appds=&outds_add'; put ',outds=work.mp_storediffs'; put ',processed_dttm=&now'; put ',loadref=%superq(etlsource)'; put ')'; put 'data _null_;'; put 'set work.mp_storediffs;'; put 'putlog load_ref= libref= dsn= key_hash= tgtvar_nm=;'; put 'run;'; put 'proc append base=&outds_audit data=work.mp_storediffs;'; put 'run;'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Problem in audit stage (&outds_audit))'; put ')'; put '%let user=%mf_getUser();'; put '/**'; put 'Notify as appropriate EMAILS DISABLED'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);'; put '*/'; put '/* monitor BiTemporal usage */'; put '%if &log=1 %then %do;'; put '%put syscc=&syscc;'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'insert into &dclib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&ETLSOURCE"'; put ',LOADTYPE="&loadtype"'; put ',CHANGED_RECORDS=%mf_getattrn(&lastds,NLOBS)'; put ',NEW_RECORDS=%mf_getattrn(&outds_add,NLOBS)'; put ',DELETED_RECORDS=%mf_getattrn(&outds_del,NLOBS)'; put ',DURATION=&dur'; put ',MAC_VER="v&ver"'; put ',user_nm="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%put syscc=&syscc;'; put '%end;'; put '%end_of_macro:'; put '%mend bitemporal_dataloader;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '%macro mpe_refreshlibs();'; put '%dc_getlibs(outds=work.mm_getLibs)'; put 'proc sort data=mm_getlibs;'; put 'by libraryref libraryname;'; put 'run;'; put 'data libs0;'; put 'set mm_getlibs;'; put 'by libraryref;'; put 'if "%mf_getplatform()"="SASMETA" then do;'; put '/* note - invalid libraries can result in exception errors. If this happens,'; put 'configure the dc_viewlib_check variable to NO in Data Controller Settings */'; put 'rc=libname(libraryref,,''meta'',cats(''library="'',libraryname,''";''));'; put 'drop rc;'; put 'if rc ne 0 then do;'; put 'putlog "NOTE: Library " libraryname " does not exist!!";'; put 'putlog (_all_) (=);'; put 'delete;'; put 'end;'; put 'end;'; put 'if not first.libraryref then delete;'; put 'run;'; put 'proc sql;'; put 'create table libs1 as'; put 'select distinct libname'; put ',engine'; put ',path'; put ',level'; put ',sysname'; put ',sysvalue'; put 'from dictionary.libnames'; put 'order by libname, level,engine,path;'; put 'data libs2;'; put 'set libs1;'; put 'length tran $1024;'; put 'if missing(sysname) then sysname=''Missing'';'; put 'select(sysname);'; put 'when(''Access Permission'') tran=''Permissions'';'; put 'when(''Owner Name'') tran=''Owner'';'; put 'when(''Schema/Owner'') tran=''schema'';'; put 'otherwise tran=sysname;'; put 'end;'; put 'run;'; put 'proc transpose data=libs2 out=libs3;'; put 'by libname level engine path;'; put 'var sysvalue;'; put 'id tran;'; put 'run;'; put 'data libs4(rename=(libname=libref));'; put 'length paths $8192 perms owners schemas $500 permissions owner schema $1024;'; put 'if _n_=1 then call missing (of _all_);'; put 'set libs3;'; put 'by libname;'; put 'if engine=''V9'' then engine=''BASE'';'; put 'if first.libname then do;'; put 'retain paths perms owners schemas;'; put 'paths=''(''!!quote(trim(path));'; put 'perms=permissions;'; put 'owners=owner;'; put 'schemas=schema;'; put 'end;'; put 'else do;'; put 'paths=trim(paths)!!'' ''!!quote(trim(path));'; put 'perms=trim(perms)!!'',''!!trim(permissions);'; put 'owners=trim(owners)!!'',''!!trim(owner);'; put 'schemas=trim(schemas)!!'' ''!!trim(schema);'; put 'end;'; put 'if last.libname then do;'; put 'paths=trim(paths)!!'')'';'; put 'schemas=cats(schemas);'; put 'output;'; put 'end;'; put 'keep libname engine paths perms owners schemas;'; put 'run;'; put 'proc sql;'; put 'create table libs5 as'; put 'select a.libref'; put ',coalescec(b.engine,a.engine) as engine length=32'; put ',b.libraryname as libname'; put ',a.paths'; put ',a.perms'; put ',a.owners'; put ',a.schemas'; put ',b.libraryid as libid'; put 'from libs4 a'; put 'left join libs0 b'; put 'on upcase(a.libref)=upcase(b.libraryref)'; put 'where libref not in (''SASWORK'',''WORK'',''SASUSER'',''CASUSER'',''TEMP'',''STPSAMP'''; put ',''MAPSGFK'');'; put '%bitemporal_dataloader(base_lib=&dc_libref'; put ',base_dsn=MPE_DATACATALOG_LIBS'; put ',append_dsn=libs5'; put ',PK=LIBREF'; put ',etlsource=&_program'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&dc_libref'; put ')'; put '%mend mpe_refreshlibs;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file refreshlibs.sas'; put '@brief Refreshes the library data catalog'; put '@details'; put '

SAS Macros

'; put '@li mpeinit.sas'; put '@li mpe_refreshlibs.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%mpe_refreshlibs()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=refreshtablelineage; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 or %length(&var)=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_inc)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status;'; put 'proc sql noprint;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro bitemporal_closeouts('; put 'tech_from=tx_from_dttm'; put ',tech_to = tx_to_dttm /* Technical TO datetime variable.'; put 'Req''d on BASE table only. */'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE /* Name of STAGING table. */'; put ',PK= name sex /* Business key, space separated. */'; put '/* Should INCLUDE BUS_FROM field if relevant. */'; put ',NOW=DEFINE'; put ',FILTER= /* supply a filter to limit the update */'; put ',outdest= /* supply an unquoted filepath/filename.ext to get'; put 'a text file containing the update statements */'; put ',loadtype='; put ',loadtarget=YES /* if <> YES will return without changing anything */'; put ');'; put '%put ENTERING &sysmacroname;'; put '%local x var start;'; put '%let start=%sysfunc(datetime());'; put '%dc_assignlib(WRITE,&base_lib)'; put '%dc_assignlib(WRITE,&append_lib)'; put '%if &now=DEFINE %then %let now=&dc_dttmtfmt.;'; put '%put &=now;'; put '/**'; put '* perform basic checks'; put '*/'; put '/* do tables exist? */'; put '%if not %sysfunc(exist(&base_lib..&base_dsn)) %then %do;'; put '%mp_abort(msg=&base_lib..&base_dsn does not exist)'; put '%end;'; put '%else %if %sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 %then %do;'; put '%mp_abort(msg=&append_lib..&append_dsn does not exist)'; put '%end;'; put '/* do TX columns exist? */'; put '%if &loadtype ne UPDATE %then %do;'; put '%if not %mf_existvar(&base_lib..&base_dsn,&tech_from) %then %do;'; put '%mp_abort(msg=&tech_from does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&base_lib..&base_dsn,&tech_to) %then %do;'; put '%mp_abort(msg=&tech_to does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%end;'; put '/* do PK columns exist? */'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if not %mf_existvar(&base_lib..&base_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&append_lib..&append_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &append_lib..&append_dsn)'; put '%end;'; put '%end;'; put '/* check uniqueness */'; put 'proc sort data=&append_lib..&append_dsn'; put 'out=___closeout1 noduprecs dupout=___closeout1a;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(___closeout1a,NLOBS)>0 %then'; put '%put NOTE: dups on (&PK) in (&append_lib..&append_dsn);'; put '/* is &NOW value within a tolerance? Should not allow renegade closeouts.. */'; put '%local gap;'; put '%let gap=0;'; put 'data _null_;'; put 'now=&now;'; put 'gap=intck(''HOURS'',now,datetime());'; put 'call symputx(''gap'',gap,''l'');'; put 'run;'; put '%mf_abort('; put 'iftrue=(&gap > 24),'; put 'msg=NOW variable (&now) is not within a 24hr tolerance'; put ')'; put '/* have any warnings / errs occurred thus far? If so, abort */'; put '%mf_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/**'; put '* Create closeout statements. These are sent as individual SQL statements'; put '* to ensure pass-through utilisation. The update_cnt variable monitors'; put '* how many records were actually updated on the target table.'; put '*/'; put '%local update_cnt;'; put '%let update_cnt=0;'; put 'filename tmp temp;'; put 'data _null_;'; put 'set ___closeout1;'; put 'file tmp;'; put 'if _n_=1 then put ''proc sql noprint;'' ;'; put 'length string $32767.;'; put '%if &loadtype=UPDATE %then %do;'; put 'put "delete from &base_lib..&base_dsn where 1";'; put '%end;'; put '%else %do;'; put 'now=symget(''now'');'; put 'put "update &base_lib..&base_dsn set &tech_to= " now @;'; put '%if %mf_existvar(&base_lib..&base_dsn,PROCESSED_DTTM) %then %do;'; put 'put " ,PROCESSED_DTTM=" now @;'; put '%end;'; put 'put " where " now " lt &tech_to ";'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if %mf_getvartype(&base_lib..&base_dsn,&var)=C %then %do;'; put '/* use single quotes to avoid ampersand resolution in data */'; put 'string=" & &var=''"!!trim(prxchange("s/''/''''/",-1,&var))!!"''";'; put '%end;'; put '%else %do;'; put 'string=cats(" & &var=",&var);'; put '%end;'; put 'put string;'; put '%end;'; put 'put "&filter ;";'; put 'put ''%let update_cnt=%eval(&update_cnt+&sqlobs);%put update_cnt=&update_cnt;'';'; put 'run;'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%if &loadtarget ne YES %then %return;'; put '/* ensure we have a lock */'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn'; put ',ref=bitemporal_closeouts'; put ',ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'options source2;'; put '%inc tmp;'; put 'filename tmp clear;'; put '/**'; put '* Update audit tracker'; put '*/'; put '%local newobs; %let newobs=%mf_getattrn(work.___closeout1,NLOBS);'; put '%local user; %let user=%mf_getuser();'; put 'proc sql;'; put 'insert into &mpelib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&append_lib..&append_dsn contained &newobs records"'; put ',LOADTYPE="CLOSEOUT"'; put ',DELETED_RECORDS=&update_cnt'; put ',NEW_RECORDS=0'; put ',DURATION=%sysfunc(datetime())-&start'; put ',USER_NM="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%mend bitemporal_closeouts;'; put '%macro mf_getschema(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum rc schema;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=''Schema/Owner'''; put ')),i));'; put '%if (&dsid ^= 0) %then %do;'; put '%let vnum=%sysfunc(varnum(&dsid,SYSVALUE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let schema=%sysfunc(getvarc(&dsid,&vnum));'; put '%put &libref. schema is &schema.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '&schema'; put '%mend mf_getschema;'; put '/** @endcond */'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_retainedkey('; put 'base_lib=WORK'; put ',base_dsn=BASETABLE'; put ',append_lib=WORK'; put ',append_dsn=APPENDTABLE'; put ',retained_key=DEFAULT_RK'; put ',business_key= PK1 PK2'; put ',check_uniqueness=NO'; put ',maxkeytable=0'; put ',locktable=0'; put ',outds=WORK.APPEND'; put ',filter_str='; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local base_libds app_libds key_field check maxkey idx_pk newkey_cnt iserr'; put 'msg x tempds1 tempds2 comma_pk appnobs checknobs dropvar tempvar idx_val;'; put '%let base_libds=%upcase(&base_lib..&base_dsn);'; put '%let app_libds=%upcase(&append_lib..&append_dsn);'; put '%let tempds1=%mf_getuniquename();'; put '%let tempds2=%mf_getuniquename();'; put '%let comma_pk=%mf_getquotedstr(in_str=%str(&business_key),dlm=%str(,),quote=);'; put '%let outds=%sysfunc(ifc(%index(&outds,.)=0,work.&outds,&outds));'; put '/* validation checks */'; put '%let iserr=0;'; put '%if &syscc>0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(SYSCC=&syscc on macro entry);'; put '%end;'; put '%else %if %sysfunc(exist(&base_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Base LIBDS (&base_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if %sysfunc(exist(&app_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Append LIBDS (&app_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&maxkeytable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Maxkeytable (&maxkeytable) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&locktable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Locktable (&locktable) expected but NOT FOUND);'; put '%end;'; put '%else %if %length(&business_key)=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Business key (&business_key) expected but NOT FOUND);'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&business_key));'; put '/* check business key values exist */'; put '%let key_field=%scan(&business_key,&x,%str( ));'; put '%if not %mf_existvar(&app_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &app_libds!;'; put '%goto err;'; put '%end;'; put '%else %if not %mf_existvar(&base_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &base_libds!;'; put '%goto err;'; put '%end;'; put '%end;'; put '%err:'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue=(&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put 'proc sql noprint;'; put 'select sum(max(&retained_key),0) into: maxkey from &base_libds;'; put '/**'; put '* get base table RK and bus field values for lookup'; put '*/'; put 'proc sql noprint;'; put 'create table &tempds1 as'; put 'select distinct &comma_pk,&retained_key'; put 'from &base_libds &filter_str'; put 'order by &comma_pk,&retained_key;'; put '%if &check_uniqueness=YES %then %do;'; put 'select count(*) into:checknobs'; put 'from (select distinct &comma_pk from &app_libds);'; put 'select count(*) into: appnobs from &app_libds; /* might be view */'; put '%if &checknobs ne &appnobs %then %do;'; put '%let msg=Source table &app_libds is not unique on (&business_key);'; put '%let iserr=1;'; put '%end;'; put '%end;'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue= (&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put '%if %mf_existvar(&app_libds,&retained_key)'; put '%then %let dropvar=(drop=&retained_key);'; put '/* prepare interim table with retained key populated for matching keys */'; put 'proc sql noprint;'; put 'create table &tempds2 as'; put 'select b.&retained_key, a.*'; put 'from &app_libds &dropvar a'; put 'left join &tempds1 b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&business_key));'; put '%let idx_val=%scan(&business_key,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by &retained_key;'; put '/* identify the number of entries without retained keys (new records) */'; put 'select count(*) into: newkey_cnt'; put 'from &tempds2'; put 'where missing(&retained_key);'; put 'quit;'; put '/**'; put '* Update maxkey table if link provided'; put '*/'; put '%if &maxkeytable ne 0 %then %do;'; put 'proc sql noprint;'; put 'select count(*) into: check from &maxkeytable'; put 'where upcase(keytable)="&base_libds";'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with mp_retainedkey'; put ',ctl_ds=&locktable'; put ')'; put 'proc sql;'; put '%if &check=0 %then %do;'; put 'insert into &maxkeytable'; put 'set keytable="&base_libds"'; put ',keycolumn="&retained_key"'; put ',max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put 'where keytable="&base_libds";'; put '%end;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with maxkey=%eval(&maxkey+&newkey_cnt)'; put ',ctl_ds=&locktable'; put ')'; put '%end;'; put '/* fill in the missing retained key values */'; put '%let tempvar=%mf_getuniquename();'; put 'data &outds(drop=&tempvar);'; put 'retain &tempvar %eval(&maxkey+1);'; put 'set &tempds2;'; put 'if &retained_key =. then &retained_key=&tempvar;'; put '&tempvar=&tempvar+1;'; put 'run;'; put '%mend mp_retainedkey;'; put '/** @cond */'; put '%macro mp_storediffs(libds'; put ',origds'; put ',key'; put ',delds=0'; put ',appds=0'; put ',modds=0'; put ',outds=work.mp_storediffs'; put ',loadref=0'; put ',processed_dttm=0'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '/* set up unique and temporary vars */'; put '%local ds1 ds2 ds3 ds4 hashkey inds_auto inds_keep dslist vlist;'; put '%let ds1=%upcase(work.%mf_getuniquename(prefix=mpsd_ds1));'; put '%let ds2=%upcase(work.%mf_getuniquename(prefix=mpsd_ds2));'; put '%let ds3=%upcase(work.%mf_getuniquename(prefix=mpsd_ds3));'; put '%let ds4=%upcase(work.%mf_getuniquename(prefix=mpsd_ds4));'; put '%let hashkey=%upcase(%mf_getuniquename(prefix=mpsd_hashkey));'; put '%let inds_auto=%upcase(%mf_getuniquename(prefix=mpsd_inds_auto));'; put '%let inds_keep=%upcase(%mf_getuniquename(prefix=mpsd_inds_keep));'; put '%let dslist=&origds;'; put '%if &delds ne 0 %then %do;'; put '%let delds=%upcase(&delds);'; put '%if %scan(&delds,-1,.)=&delds %then %let delds=WORK.&delds;'; put '%let dslist=&dslist &delds;'; put '%end;'; put '%if &appds ne 0 %then %do;'; put '%let appds=%upcase(&appds);'; put '%if %scan(&appds,-1,.)=&appds %then %let appds=WORK.&appds;'; put '%let dslist=&dslist &appds;'; put '%end;'; put '%if &modds ne 0 %then %do;'; put '%let modds=%upcase(&modds);'; put '%if %scan(&modds,-1,.)=&modds %then %let modds=WORK.&modds;'; put '%let dslist=&dslist &modds;'; put '%end;'; put '%let origds=%upcase(&origds);'; put '%if %scan(&origds,-1,.)=&origds %then %let origds=WORK.&origds;'; put '%let key=%upcase(&key);'; put '/* hash the key and append all the tables (marking the source) */'; put 'data &ds1;'; put 'set &dslist indsname=&inds_auto;'; put '&hashkey=put(md5(catx(''|'',%mf_getquotedstr(&key,quote=N))),$hex32.);'; put '&inds_keep=upcase(&inds_auto);'; put 'proc sort;'; put 'by &inds_keep &hashkey;'; put 'run;'; put '/* transpose numeric & char vars */'; put 'proc transpose data=&ds1'; put 'out=&ds2(rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_num));'; put 'by &inds_keep &hashkey;'; put 'var _numeric_;'; put 'run;'; put 'proc transpose data=&ds1'; put 'out=&ds3('; put 'rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_char)'; put 'where=(tgtvar_nm not in ("&hashkey","&inds_keep"))'; put ');'; put 'by &inds_keep &hashkey;'; put 'var _character_;'; put 'run;'; put '%if %index(&libds,-)>0 and %scan(&libds,2,-)=FC %then %do;'; put '/* this is a format catalog - cannot query cols directly */'; put '%let vlist="FMTNAME","START","END","LABEL","MIN","MAX","DEFAULT","LENGTH"'; put ',"FUZZ","PREFIX","MULT","FILL","NOEDIT","TYPE","SEXCL","EEXCL","HLO"'; put ',"DECSEP","DIG3SEP","DATATYPE","LANGUAGE";'; put '%end;'; put '%else %let vlist=%mf_getvarlist(&libds,dlm=%str(,),quote=DOUBLE);'; put 'data &ds4;'; put 'length &inds_keep $41 tgtvar_nm $32 _label_ $256;'; put 'if _n_=1 then call missing(_label_);'; put 'drop _label_;'; put 'set &ds2 &ds3 indsname=&inds_auto;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%upcase(&vlist));'; put 'if upcase(&inds_auto)="&ds2" then tgtvar_type=''N'';'; put 'else if upcase(&inds_auto)="&ds3" then tgtvar_type=''C'';'; put 'else do;'; put 'putlog "%str(ERR)OR: unidentified vartype input!" &inds_auto;'; put 'call symputx(''syscc'',98);'; put 'end;'; put 'if &inds_keep="&appds" then move_type=''A'';'; put 'else if &inds_keep="&delds" then move_type=''D'';'; put 'else if &inds_keep="&modds" then move_type=''M'';'; put 'else if &inds_keep="&origds" then move_type=''O'';'; put 'else do;'; put 'putlog "%str(ERR)OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%else %do;'; put '/* not an actual load, so avoid updating the max key table in next step. */'; put '%let rk_update_maxkeytable=NO;'; put '%end;'; put '%if %length(&RK_UNDERLYING)>0 %then %do;'; put '%mp_retainedkey('; put 'base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=&append_lib'; put ',append_dsn=&append_dsn'; put ',retained_key=&pk'; put ',business_key=&rk_underlying'; put ',check_uniqueness=&CHECK_UNIQUENESS'; put ',outds=work.append'; put '%if &rk_update_maxkeytable=NO %then %do;'; put ',maxkeytable=0'; put '%end;'; put '%else %do;'; put ',maxkeytable=&dclib..&RK_MAXKEYTABLE'; put '%end;'; put ',locktable=&dclib..mpe_lockanytable'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',filter_str=%str( (where=( &now < &tech_to)) )'; put '%end;'; put ')'; put '%end;'; put '%else %do;'; put 'proc sql;'; put 'create view work.append as select * from &append_lib..&append_dsn;'; put '%end;'; put '/**'; put '* generate md5 for append table'; put '*/'; put '/* it is possible the source dataset has additional (unwanted) columns.'; put 'Drop if specified; */'; put '%if %length(&keepvars)>0 %then %do;'; put '/* remove tech dates from keepvars as they are generated later */'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_from ),%str( )));'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_to ),%str( )));'; put '%let keepvars=(keep=&keepvars &bus_from &bus_to &processed &md5_col);'; put '%end;'; put '/* CAS varchar types cause append issues here, so perform autoconvert'; put 'by creating empty local table first */'; put 'data;'; put 'set &base_lib..&base_dsn &drop_tx_dates_noobs;'; put 'run;'; put '%local emptybasetable; %let emptybasetable=&syslast;'; put 'data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put '/* apply formats for bitemporal vars but not tx dates which are added later */'; put '%if %length(&keepvars)>0 and &loadtype=BITEMPORAL %then %do;'; put 'format &bus_from &bus_from_fmt;'; put 'format &bus_to &bus_to_fmt;'; put '%end;'; put 'set &emptybasetable /* base table reqd in case append has fewer cols */'; put 'work.append &drop_tx_dates;'; put '%if %length(%str(&bus_from_override))>0 %then %do;'; put '&bus_from= %unquote(&bus_from_override) ;'; put '%end;'; put '%if %length(%str(&bus_to_override))>0 %then %do;'; put '&bus_to= %unquote(&bus_to_override) ;'; put '%end;'; put 'length &md5_col $32;'; put '&md5_col=put(md5(&stripcols),hex32.);'; put '%if %length(&processed)>0 %then %do;'; put 'format &processed &processed_fmt;'; put '&processed=&now;'; put '%end;'; put '/**'; put '* If a delete column exists then create the delete dataset'; put '*/'; put '%if %mf_existvar(&append_lib..&append_dsn, &delete_col) %then %do;'; put 'drop &delete_col;'; put 'if upcase(&delete_col) = "YES" then output &outds_del ;'; put 'else output work.bitemp0_append ;'; put 'run;'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=%scan(&outds_del,-1,.)'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put 'output work.bitemp0_append;'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc gt 0 at line 494)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%if %length(&close_vars)>0 %then %do;'; put '/**'; put '* need to close out records that are not provided'; put '*/'; put 'proc sql;'; put 'create table bitemp1_closevars1 as'; put 'select distinct a.%mf_getquotedstr(in_str=&pk,dlm=%str(,a.),quote=)'; put 'from &base_lib..&base_dsn a'; put 'inner join work.bitemp0_append b'; put 'on 1=1'; put '/* join on closevars key */'; put '%do idx_pk=1 %to %sysfunc(countw(&close_vars));'; put '%let idx_val=%scan(&close_vars,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* filter base on tech dates if necessary */'; put '%if &loadtype=TXTEMPORAL %then %do;'; put 'where a.&tech_from <=&now and &now < a.&tech_to'; put '%end;'; put ';'; put 'create table bitemp1_closevars2 as'; put 'select distinct a.*'; put 'from bitemp1_closevars1 a'; put 'left join work.bitemp0_append b'; put 'on 1=1'; put '/* join on primary key */'; put '%do idx_pk=1 %to %sysfunc(countw(&pk));'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* identify removed records by null value in a field in PK but not close_vars'; put '*/'; put 'where b.%scan('; put '%mf_wordsInStr1ButNotStr2(Str1=&pk,Str2=&close_vars),1,%str( )'; put ') IS NULL'; put ';'; put '%if %mf_getattrn(bitemp1_closevars2,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=bitemp1_closevars2'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '/* return if nothing to load (was just deletes) */'; put '%if %mf_getattrn(work.bitemp0_append,NLOBS)=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- No updates - just deletes!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&base_lib,ds=&base_dsn,'; put 'ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%let user=%mf_getUser();'; put '/* no emails yet'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);*/'; put '%end;'; put '%return;'; put '%end;'; put '/**'; put '* If applying manual overrides to business dates, then the input table MUST'; put '* be unique on the PK. Check, and if not - abort.'; put '*/'; put '%local msg;'; put '%if %length(&bus_from_override.&bus_to_override)>0 or &CHECK_UNIQUENESS=YES'; put '%then %do;'; put 'proc sort data=work.bitemp0_append out=work.bitemp0_check nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.bitemp0_check,NLOBS)'; put 'ne %mf_getattrn(work.bitemp0_append,NLOBS)'; put '%then %do;'; put '%let msg=INPUT table &append_lib..&append_dsn is not unique on PK (&pk);'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%put syscc=&syscc;'; put '%if &syscc>0 %then %do;'; put '%let msg=Bitemporal transform / job aborted due to SYSCC=&SYSCC status;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg);'; put '%end;'; put '/* final check - abort if a lock has appeared on the target table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%goto end_of_macro;'; put '%end;'; put '/* perform join inside query as per'; put 'http://stackoverflow.com/questions/24629793/update-with-a-proc-sql */'; put 'exists( select 1 from &baselib_schema.&innertable where'; put '/* loop PK join */'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put '&base_dsn..&idx_val=&innertable..&idx_val and'; put '%end;'; put '%if &loadtype=BITEMPORAL %then %do;'; put '&base_dsn..&bus_from >= &innertable..&bus_from'; put 'and &base_dsn..&bus_to <= &innertable..&bus_to and'; put '%end;'; put '/* close the statement */'; put '1=1);'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put ') by myAlias;'; put 'execute (drop table &baselib_schema.&innertable) by myAlias;'; put '%end;'; put '%end;'; put 'quit;'; put 'data _null_;'; put 'putlog "&sysmacroname: Closeout complete";'; put 'run;'; put '/**'; put '* Append the new / updated records'; put '*/'; put '%if &engine_type=CAS %then %do;'; put '/* get varchar variables ready for casting */'; put '%local vcfmt vcrename vcassign vcdrop;'; put 'data _null_;'; put 'set work.bitemp_cols(where=(type=6)) end=last;'; put 'length vcrename vcassign vcdrop vcfmt $32767 rancol $32;'; put 'retain vcrename vcassign vcdrop vcfmt;'; put 'if _n_=1 then vcrename=''(rename=('';'; put 'rancol=resolve(''%mf_getuniquename()'');'; put 'vcfmt=trim(vcfmt)!!''length ''!!cats(name)!!'' varchar(*);'';'; put 'vcrename=trim(vcrename)!!'' ''!!cats(name,''='',rancol);'; put 'vcassign=cats(vcassign,name,''='',rancol,'';'');'; put 'vcdrop=cats(vcdrop,''drop ''!!rancol,'';'');'; put 'if last then do;'; put 'vcrename=cats(vcrename,''))'');'; put 'call symputx(''vcfmt'',vcfmt);'; put 'call symputx(''vcrename'',vcrename);'; put 'call symputx(''vcassign'',vcassign);'; put 'call symputx(''vcdrop'',vcdrop);'; put 'end;'; put 'run;'; put '/* prepare a temp cas table with varchars casted */'; put '%let tmp=%mf_getuniquename();'; put 'data casuser.&tmp ;'; put '&vcfmt'; put 'set work.bitemp6_unique &vcrename;'; put '&vcassign'; put '&vcdrop'; put 'run;'; put '/* load the table with varchars applied*/'; put 'data &base_lib..&base_dsn (append=yes )/sessref=dcsession ;'; put 'set casuser.&tmp;'; put 'run;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&tmp;'; put '/* this code will not work as regular tables do not have varchars */'; put '/*'; put 'proc casutil;'; put 'load data=work.bitemp6_unique'; put 'outcaslib="&base_lib" casout="&base_dsn" append ;'; put 'quit;'; put '*/'; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put 'proc append base=&base_lib..&base_dsn'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=bitemp6_unique force nowarn;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&base_lib..&base_dsn data=bitemp6_unique force nowarn; run;'; put '%end;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '/* final check on syscc */'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=&_program'; put ',msg=%str(!!Upload NOT successful!! Failed on actual update / append stage..)'; put ')'; put '%if &outds_audit ne 0 and &LOADTARGET=YES %then %do;'; put 'data work.vw_outds_orig /view=work.vw_outds_orig;'; put 'set work.bitemp0_base (drop=&md5_col);'; put 'where ___TMP___NEW_FLG=0;'; put 'drop ___TMP___NEW_FLG;'; put 'run;'; put '/* update the AUDIT table */'; put '%if %mf_existds(&outds_audit) %then %do;'; put 'options mprint;'; put '%mp_storediffs(&base_lib..&base_dsn'; put ',work.vw_outds_orig'; put ',&pk'; put ',delds=&outds_del'; put ',modds=&outds_mod'; put ',appds=&outds_add'; put ',outds=work.mp_storediffs'; put ',processed_dttm=&now'; put ',loadref=%superq(etlsource)'; put ')'; put 'data _null_;'; put 'set work.mp_storediffs;'; put 'putlog load_ref= libref= dsn= key_hash= tgtvar_nm=;'; put 'run;'; put 'proc append base=&outds_audit data=work.mp_storediffs;'; put 'run;'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Problem in audit stage (&outds_audit))'; put ')'; put '%let user=%mf_getUser();'; put '/**'; put 'Notify as appropriate EMAILS DISABLED'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);'; put '*/'; put '/* monitor BiTemporal usage */'; put '%if &log=1 %then %do;'; put '%put syscc=&syscc;'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'insert into &dclib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&ETLSOURCE"'; put ',LOADTYPE="&loadtype"'; put ',CHANGED_RECORDS=%mf_getattrn(&lastds,NLOBS)'; put ',NEW_RECORDS=%mf_getattrn(&outds_add,NLOBS)'; put ',DELETED_RECORDS=%mf_getattrn(&outds_del,NLOBS)'; put ',DURATION=&dur'; put ',MAC_VER="v&ver"'; put ',user_nm="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%put syscc=&syscc;'; put '%end;'; put '%end_of_macro:'; put '%mend bitemporal_dataloader;'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file refreshtablelineage.sas'; put '@brief updates the table level lineage'; put '@details extracts all sources/targets from every job'; put '

SAS Macros

'; put '@li mpeinit.sas'; put '@li bitemporal_dataloader.sas'; put '@li mp_binarycopy.sas'; put '@li mf_getuniquefileref.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '/* get list of libraries */'; put '%let fileref1=%mf_getuniquefileref();'; put 'filename &fileref1 temp;'; put 'proc metadata in='; put '"$METAREPOSITORY'; put 'JobSAS'; put ''; put '8452'; put ''; put ''; put ''; put ''; put ''; put ''; put ''; put ''; put ''; put ''; put ''; put ''; put ''; put '"'; put 'out=&fileref1'; put ';'; put 'run;'; put '/* create an XML map and extract dependencies from response */'; put '%macro getTables(type=);'; put '%local x;'; put '%do x=1 %to 2;'; put '%local dir;'; put '%if &x=1 %then %let dir=Source;'; put '%else %let dir=Target;'; put '%local y;'; put '%do y=1 %to 3;'; put '%local maptype;'; put '%if &y=1 %then %let maptype=ClassifierMap;'; put '%else %if &y=2 %then %let maptype=Select;'; put '%else %if &y=3 %then %let maptype=Join;'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "";'; put 'put "";'; put 'put "/GetMetadataObjects/Objects/Job/JobActivities/TransformationActivi"@;'; put 'put "ty/Steps/TransformationStep/Transformations/&maptype/Classifier"@;'; put 'put "&dir.s/&type";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Job/@Id";'; put 'put "characterstring17";'; put 'put '''';'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Job/@Name";'; put 'put "characterstring128";'; put 'put '''';'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Job/JobActivities"@;'; put 'put "/TransformationActivity/@Id";'; put 'put "characterstring17";'; put 'put '''';'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Job/JobActivities"@;'; put 'put "/TransformationActivity/Steps/TransformationStep/@Id";'; put 'put "characterstring17";'; put 'put '''';'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Job/JobActivities"@;'; put 'put "/TransformationActivity/Steps/TransformationStep/Transformations"@;'; put 'put "/&maptype/@Id";'; put 'put "characterstring17";'; put 'put '''';'; put 'put "";'; put 'put "/GetMetadataObjects/Objects/Job/JobActivities"@;'; put 'put "/TransformationActivity/Steps/TransformationStep/Transformations/"@;'; put 'put "&maptype/Classifier&dir.s/&type/@Id";'; put 'put "characterstring17";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=&fileref1 xmlmap=sxlemap;'; put 'data work.&dir.&type/view=work.&dir.&type;'; put 'set _xml_.&dir.&type;'; put 'length tabletype maptype $16 tabledirection $1;'; put 'jobname=upcase(jobname);'; put 'tabletype="&type";'; put 'maptype="&maptype";'; put 'if "&dir"="Source" then tabledirection="R";'; put 'else tabledirection=''F'';'; put 'run;'; put 'proc append base=work.alldata data=work.&dir.&type;'; put 'run;'; put 'libname _XML_ clear;'; put '%end;'; put '%end;'; put '%mend getTables;'; put '/* list of types:'; put 'https://support.sas.com/documentation/cdl/en/omamodref/63903/HTML/default/viewer.htm#classifiermap.htm'; put '*/'; put '%getTables(type=PhysicalTable)'; put '%getTables(type=ExternalTable)'; put '%getTables(type=QueryTable)'; put '%getTables(type=RelationalTable)'; put '%getTables(type=Report)'; put '%getTables(type=Cube)'; put '%getTables(type=DataTable)'; put '/* remove dups and get tables */'; put 'proc sort data=work.alldata(keep=jobid jobname tableid tabletype tabledirection)'; put 'out=work.sorted nodupkey;'; put 'by _all_;'; put 'run;'; put 'proc sort data=work.sorted(keep=tableid) out=work.tables nodupkey;'; put 'by tableid;'; put 'run;'; put '/* this bit is slow due to lookups but given the different table types'; put 'it was the easiest approach */'; put 'data work.tables2;'; put 'length tablename liburi puri $64 libref schemaname $8 ;'; put 'if _n_=1 then call missing(tablename, liburi, puri, libref, schemaname);'; put 'set work.tables;'; put 'drop rc liburi;'; put 'if metadata_getnasn(tableid,"TablePackage",1,liburi)>0 then do;'; put 'rc= metadata_getattr(liburi, "SchemaName", SchemaName);'; put 'if ^missing(SchemaName) then do;'; put 'if metadata_getnasn(liburi,"UsedByPackages",1,puri)>0 then do;'; put 'rc=metadata_getattr(puri,"Libref",libref);'; put 'end;'; put 'end;'; put 'else rc=metadata_getattr(liburi,"Libref",libref);'; put 'libref=upcase(libref);'; put 'end;'; put 'rc=metadata_getattr(tableid,"Name",tablename);'; put 'tablename=upcase(tablename);'; put 'run;'; put 'proc sql;'; put 'create table work.augmented as'; put 'select a.*'; put ',b.tablename'; put ',b.libref'; put 'from work.sorted a'; put 'left join work.tables2 b'; put 'on a.tableid=b.tableid;'; put 'create table work.mpe_lineage_tabs as'; put 'select distinct'; put 'coalesce(a.jobid,b.jobid) as jobid,'; put 'coalesce(a.jobname,b.jobname) as jobname,'; put 'coalesce(a.tableid,"N/A") as srctableid,'; put 'a.tabletype as srctabletype,'; put 'a.tablename as srctablename,'; put 'coalesce(a.libref,''nolib'') as srclibref,'; put 'coalesce(b.tableid,"N/A") as tgttableid,'; put 'b.tabletype as tgttabletype,'; put 'b.tablename as tgttablename,'; put 'coalesce(b.libref,''nolib'') as tgtlibref'; put 'from work.augmented(where=(tabledirection=''R'')) a'; put 'full join work.augmented(where=(tabledirection=''F'')) b'; put 'on a.jobid=b.jobid'; put ';'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=MPE_LINEAGE_TABS'; put ',append_dsn=MPE_LINEAGE_TABS'; put ',PK=jobid srctableid tgttableid'; put ',etlsource=&_program'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&mpelib'; put ')'; put '%mp_binarycopy(inref=&fileref1, outref=_webout)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=registerkey; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 or %length(&var)=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_inc)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status;'; put 'proc sql noprint;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro bitemporal_closeouts('; put 'tech_from=tx_from_dttm'; put ',tech_to = tx_to_dttm /* Technical TO datetime variable.'; put 'Req''d on BASE table only. */'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE /* Name of STAGING table. */'; put ',PK= name sex /* Business key, space separated. */'; put '/* Should INCLUDE BUS_FROM field if relevant. */'; put ',NOW=DEFINE'; put ',FILTER= /* supply a filter to limit the update */'; put ',outdest= /* supply an unquoted filepath/filename.ext to get'; put 'a text file containing the update statements */'; put ',loadtype='; put ',loadtarget=YES /* if <> YES will return without changing anything */'; put ');'; put '%put ENTERING &sysmacroname;'; put '%local x var start;'; put '%let start=%sysfunc(datetime());'; put '%dc_assignlib(WRITE,&base_lib)'; put '%dc_assignlib(WRITE,&append_lib)'; put '%if &now=DEFINE %then %let now=&dc_dttmtfmt.;'; put '%put &=now;'; put '/**'; put '* perform basic checks'; put '*/'; put '/* do tables exist? */'; put '%if not %sysfunc(exist(&base_lib..&base_dsn)) %then %do;'; put '%mp_abort(msg=&base_lib..&base_dsn does not exist)'; put '%end;'; put '%else %if %sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 %then %do;'; put '%mp_abort(msg=&append_lib..&append_dsn does not exist)'; put '%end;'; put '/* do TX columns exist? */'; put '%if &loadtype ne UPDATE %then %do;'; put '%if not %mf_existvar(&base_lib..&base_dsn,&tech_from) %then %do;'; put '%mp_abort(msg=&tech_from does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&base_lib..&base_dsn,&tech_to) %then %do;'; put '%mp_abort(msg=&tech_to does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%end;'; put '/* do PK columns exist? */'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if not %mf_existvar(&base_lib..&base_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&append_lib..&append_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &append_lib..&append_dsn)'; put '%end;'; put '%end;'; put '/* check uniqueness */'; put 'proc sort data=&append_lib..&append_dsn'; put 'out=___closeout1 noduprecs dupout=___closeout1a;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(___closeout1a,NLOBS)>0 %then'; put '%put NOTE: dups on (&PK) in (&append_lib..&append_dsn);'; put '/* is &NOW value within a tolerance? Should not allow renegade closeouts.. */'; put '%local gap;'; put '%let gap=0;'; put 'data _null_;'; put 'now=&now;'; put 'gap=intck(''HOURS'',now,datetime());'; put 'call symputx(''gap'',gap,''l'');'; put 'run;'; put '%mf_abort('; put 'iftrue=(&gap > 24),'; put 'msg=NOW variable (&now) is not within a 24hr tolerance'; put ')'; put '/* have any warnings / errs occurred thus far? If so, abort */'; put '%mf_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/**'; put '* Create closeout statements. These are sent as individual SQL statements'; put '* to ensure pass-through utilisation. The update_cnt variable monitors'; put '* how many records were actually updated on the target table.'; put '*/'; put '%local update_cnt;'; put '%let update_cnt=0;'; put 'filename tmp temp;'; put 'data _null_;'; put 'set ___closeout1;'; put 'file tmp;'; put 'if _n_=1 then put ''proc sql noprint;'' ;'; put 'length string $32767.;'; put '%if &loadtype=UPDATE %then %do;'; put 'put "delete from &base_lib..&base_dsn where 1";'; put '%end;'; put '%else %do;'; put 'now=symget(''now'');'; put 'put "update &base_lib..&base_dsn set &tech_to= " now @;'; put '%if %mf_existvar(&base_lib..&base_dsn,PROCESSED_DTTM) %then %do;'; put 'put " ,PROCESSED_DTTM=" now @;'; put '%end;'; put 'put " where " now " lt &tech_to ";'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if %mf_getvartype(&base_lib..&base_dsn,&var)=C %then %do;'; put '/* use single quotes to avoid ampersand resolution in data */'; put 'string=" & &var=''"!!trim(prxchange("s/''/''''/",-1,&var))!!"''";'; put '%end;'; put '%else %do;'; put 'string=cats(" & &var=",&var);'; put '%end;'; put 'put string;'; put '%end;'; put 'put "&filter ;";'; put 'put ''%let update_cnt=%eval(&update_cnt+&sqlobs);%put update_cnt=&update_cnt;'';'; put 'run;'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%if &loadtarget ne YES %then %return;'; put '/* ensure we have a lock */'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn'; put ',ref=bitemporal_closeouts'; put ',ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'options source2;'; put '%inc tmp;'; put 'filename tmp clear;'; put '/**'; put '* Update audit tracker'; put '*/'; put '%local newobs; %let newobs=%mf_getattrn(work.___closeout1,NLOBS);'; put '%local user; %let user=%mf_getuser();'; put 'proc sql;'; put 'insert into &mpelib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&append_lib..&append_dsn contained &newobs records"'; put ',LOADTYPE="CLOSEOUT"'; put ',DELETED_RECORDS=&update_cnt'; put ',NEW_RECORDS=0'; put ',DURATION=%sysfunc(datetime())-&start'; put ',USER_NM="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%mend bitemporal_closeouts;'; put '%macro mf_getschema(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum rc schema;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=''Schema/Owner'''; put ')),i));'; put '%if (&dsid ^= 0) %then %do;'; put '%let vnum=%sysfunc(varnum(&dsid,SYSVALUE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let schema=%sysfunc(getvarc(&dsid,&vnum));'; put '%put &libref. schema is &schema.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '&schema'; put '%mend mf_getschema;'; put '/** @endcond */'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_retainedkey('; put 'base_lib=WORK'; put ',base_dsn=BASETABLE'; put ',append_lib=WORK'; put ',append_dsn=APPENDTABLE'; put ',retained_key=DEFAULT_RK'; put ',business_key= PK1 PK2'; put ',check_uniqueness=NO'; put ',maxkeytable=0'; put ',locktable=0'; put ',outds=WORK.APPEND'; put ',filter_str='; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local base_libds app_libds key_field check maxkey idx_pk newkey_cnt iserr'; put 'msg x tempds1 tempds2 comma_pk appnobs checknobs dropvar tempvar idx_val;'; put '%let base_libds=%upcase(&base_lib..&base_dsn);'; put '%let app_libds=%upcase(&append_lib..&append_dsn);'; put '%let tempds1=%mf_getuniquename();'; put '%let tempds2=%mf_getuniquename();'; put '%let comma_pk=%mf_getquotedstr(in_str=%str(&business_key),dlm=%str(,),quote=);'; put '%let outds=%sysfunc(ifc(%index(&outds,.)=0,work.&outds,&outds));'; put '/* validation checks */'; put '%let iserr=0;'; put '%if &syscc>0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(SYSCC=&syscc on macro entry);'; put '%end;'; put '%else %if %sysfunc(exist(&base_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Base LIBDS (&base_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if %sysfunc(exist(&app_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Append LIBDS (&app_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&maxkeytable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Maxkeytable (&maxkeytable) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&locktable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Locktable (&locktable) expected but NOT FOUND);'; put '%end;'; put '%else %if %length(&business_key)=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Business key (&business_key) expected but NOT FOUND);'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&business_key));'; put '/* check business key values exist */'; put '%let key_field=%scan(&business_key,&x,%str( ));'; put '%if not %mf_existvar(&app_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &app_libds!;'; put '%goto err;'; put '%end;'; put '%else %if not %mf_existvar(&base_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &base_libds!;'; put '%goto err;'; put '%end;'; put '%end;'; put '%err:'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue=(&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put 'proc sql noprint;'; put 'select sum(max(&retained_key),0) into: maxkey from &base_libds;'; put '/**'; put '* get base table RK and bus field values for lookup'; put '*/'; put 'proc sql noprint;'; put 'create table &tempds1 as'; put 'select distinct &comma_pk,&retained_key'; put 'from &base_libds &filter_str'; put 'order by &comma_pk,&retained_key;'; put '%if &check_uniqueness=YES %then %do;'; put 'select count(*) into:checknobs'; put 'from (select distinct &comma_pk from &app_libds);'; put 'select count(*) into: appnobs from &app_libds; /* might be view */'; put '%if &checknobs ne &appnobs %then %do;'; put '%let msg=Source table &app_libds is not unique on (&business_key);'; put '%let iserr=1;'; put '%end;'; put '%end;'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue= (&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put '%if %mf_existvar(&app_libds,&retained_key)'; put '%then %let dropvar=(drop=&retained_key);'; put '/* prepare interim table with retained key populated for matching keys */'; put 'proc sql noprint;'; put 'create table &tempds2 as'; put 'select b.&retained_key, a.*'; put 'from &app_libds &dropvar a'; put 'left join &tempds1 b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&business_key));'; put '%let idx_val=%scan(&business_key,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by &retained_key;'; put '/* identify the number of entries without retained keys (new records) */'; put 'select count(*) into: newkey_cnt'; put 'from &tempds2'; put 'where missing(&retained_key);'; put 'quit;'; put '/**'; put '* Update maxkey table if link provided'; put '*/'; put '%if &maxkeytable ne 0 %then %do;'; put 'proc sql noprint;'; put 'select count(*) into: check from &maxkeytable'; put 'where upcase(keytable)="&base_libds";'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with mp_retainedkey'; put ',ctl_ds=&locktable'; put ')'; put 'proc sql;'; put '%if &check=0 %then %do;'; put 'insert into &maxkeytable'; put 'set keytable="&base_libds"'; put ',keycolumn="&retained_key"'; put ',max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put 'where keytable="&base_libds";'; put '%end;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with maxkey=%eval(&maxkey+&newkey_cnt)'; put ',ctl_ds=&locktable'; put ')'; put '%end;'; put '/* fill in the missing retained key values */'; put '%let tempvar=%mf_getuniquename();'; put 'data &outds(drop=&tempvar);'; put 'retain &tempvar %eval(&maxkey+1);'; put 'set &tempds2;'; put 'if &retained_key =. then &retained_key=&tempvar;'; put '&tempvar=&tempvar+1;'; put 'run;'; put '%mend mp_retainedkey;'; put '/** @cond */'; put '%macro mp_storediffs(libds'; put ',origds'; put ',key'; put ',delds=0'; put ',appds=0'; put ',modds=0'; put ',outds=work.mp_storediffs'; put ',loadref=0'; put ',processed_dttm=0'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '/* set up unique and temporary vars */'; put '%local ds1 ds2 ds3 ds4 hashkey inds_auto inds_keep dslist vlist;'; put '%let ds1=%upcase(work.%mf_getuniquename(prefix=mpsd_ds1));'; put '%let ds2=%upcase(work.%mf_getuniquename(prefix=mpsd_ds2));'; put '%let ds3=%upcase(work.%mf_getuniquename(prefix=mpsd_ds3));'; put '%let ds4=%upcase(work.%mf_getuniquename(prefix=mpsd_ds4));'; put '%let hashkey=%upcase(%mf_getuniquename(prefix=mpsd_hashkey));'; put '%let inds_auto=%upcase(%mf_getuniquename(prefix=mpsd_inds_auto));'; put '%let inds_keep=%upcase(%mf_getuniquename(prefix=mpsd_inds_keep));'; put '%let dslist=&origds;'; put '%if &delds ne 0 %then %do;'; put '%let delds=%upcase(&delds);'; put '%if %scan(&delds,-1,.)=&delds %then %let delds=WORK.&delds;'; put '%let dslist=&dslist &delds;'; put '%end;'; put '%if &appds ne 0 %then %do;'; put '%let appds=%upcase(&appds);'; put '%if %scan(&appds,-1,.)=&appds %then %let appds=WORK.&appds;'; put '%let dslist=&dslist &appds;'; put '%end;'; put '%if &modds ne 0 %then %do;'; put '%let modds=%upcase(&modds);'; put '%if %scan(&modds,-1,.)=&modds %then %let modds=WORK.&modds;'; put '%let dslist=&dslist &modds;'; put '%end;'; put '%let origds=%upcase(&origds);'; put '%if %scan(&origds,-1,.)=&origds %then %let origds=WORK.&origds;'; put '%let key=%upcase(&key);'; put '/* hash the key and append all the tables (marking the source) */'; put 'data &ds1;'; put 'set &dslist indsname=&inds_auto;'; put '&hashkey=put(md5(catx(''|'',%mf_getquotedstr(&key,quote=N))),$hex32.);'; put '&inds_keep=upcase(&inds_auto);'; put 'proc sort;'; put 'by &inds_keep &hashkey;'; put 'run;'; put '/* transpose numeric & char vars */'; put 'proc transpose data=&ds1'; put 'out=&ds2(rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_num));'; put 'by &inds_keep &hashkey;'; put 'var _numeric_;'; put 'run;'; put 'proc transpose data=&ds1'; put 'out=&ds3('; put 'rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_char)'; put 'where=(tgtvar_nm not in ("&hashkey","&inds_keep"))'; put ');'; put 'by &inds_keep &hashkey;'; put 'var _character_;'; put 'run;'; put '%if %index(&libds,-)>0 and %scan(&libds,2,-)=FC %then %do;'; put '/* this is a format catalog - cannot query cols directly */'; put '%let vlist="FMTNAME","START","END","LABEL","MIN","MAX","DEFAULT","LENGTH"'; put ',"FUZZ","PREFIX","MULT","FILL","NOEDIT","TYPE","SEXCL","EEXCL","HLO"'; put ',"DECSEP","DIG3SEP","DATATYPE","LANGUAGE";'; put '%end;'; put '%else %let vlist=%mf_getvarlist(&libds,dlm=%str(,),quote=DOUBLE);'; put 'data &ds4;'; put 'length &inds_keep $41 tgtvar_nm $32 _label_ $256;'; put 'if _n_=1 then call missing(_label_);'; put 'drop _label_;'; put 'set &ds2 &ds3 indsname=&inds_auto;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%upcase(&vlist));'; put 'if upcase(&inds_auto)="&ds2" then tgtvar_type=''N'';'; put 'else if upcase(&inds_auto)="&ds3" then tgtvar_type=''C'';'; put 'else do;'; put 'putlog "%str(ERR)OR: unidentified vartype input!" &inds_auto;'; put 'call symputx(''syscc'',98);'; put 'end;'; put 'if &inds_keep="&appds" then move_type=''A'';'; put 'else if &inds_keep="&delds" then move_type=''D'';'; put 'else if &inds_keep="&modds" then move_type=''M'';'; put 'else if &inds_keep="&origds" then move_type=''O'';'; put 'else do;'; put 'putlog "%str(ERR)OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%else %do;'; put '/* not an actual load, so avoid updating the max key table in next step. */'; put '%let rk_update_maxkeytable=NO;'; put '%end;'; put '%if %length(&RK_UNDERLYING)>0 %then %do;'; put '%mp_retainedkey('; put 'base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=&append_lib'; put ',append_dsn=&append_dsn'; put ',retained_key=&pk'; put ',business_key=&rk_underlying'; put ',check_uniqueness=&CHECK_UNIQUENESS'; put ',outds=work.append'; put '%if &rk_update_maxkeytable=NO %then %do;'; put ',maxkeytable=0'; put '%end;'; put '%else %do;'; put ',maxkeytable=&dclib..&RK_MAXKEYTABLE'; put '%end;'; put ',locktable=&dclib..mpe_lockanytable'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',filter_str=%str( (where=( &now < &tech_to)) )'; put '%end;'; put ')'; put '%end;'; put '%else %do;'; put 'proc sql;'; put 'create view work.append as select * from &append_lib..&append_dsn;'; put '%end;'; put '/**'; put '* generate md5 for append table'; put '*/'; put '/* it is possible the source dataset has additional (unwanted) columns.'; put 'Drop if specified; */'; put '%if %length(&keepvars)>0 %then %do;'; put '/* remove tech dates from keepvars as they are generated later */'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_from ),%str( )));'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_to ),%str( )));'; put '%let keepvars=(keep=&keepvars &bus_from &bus_to &processed &md5_col);'; put '%end;'; put '/* CAS varchar types cause append issues here, so perform autoconvert'; put 'by creating empty local table first */'; put 'data;'; put 'set &base_lib..&base_dsn &drop_tx_dates_noobs;'; put 'run;'; put '%local emptybasetable; %let emptybasetable=&syslast;'; put 'data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put '/* apply formats for bitemporal vars but not tx dates which are added later */'; put '%if %length(&keepvars)>0 and &loadtype=BITEMPORAL %then %do;'; put 'format &bus_from &bus_from_fmt;'; put 'format &bus_to &bus_to_fmt;'; put '%end;'; put 'set &emptybasetable /* base table reqd in case append has fewer cols */'; put 'work.append &drop_tx_dates;'; put '%if %length(%str(&bus_from_override))>0 %then %do;'; put '&bus_from= %unquote(&bus_from_override) ;'; put '%end;'; put '%if %length(%str(&bus_to_override))>0 %then %do;'; put '&bus_to= %unquote(&bus_to_override) ;'; put '%end;'; put 'length &md5_col $32;'; put '&md5_col=put(md5(&stripcols),hex32.);'; put '%if %length(&processed)>0 %then %do;'; put 'format &processed &processed_fmt;'; put '&processed=&now;'; put '%end;'; put '/**'; put '* If a delete column exists then create the delete dataset'; put '*/'; put '%if %mf_existvar(&append_lib..&append_dsn, &delete_col) %then %do;'; put 'drop &delete_col;'; put 'if upcase(&delete_col) = "YES" then output &outds_del ;'; put 'else output work.bitemp0_append ;'; put 'run;'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=%scan(&outds_del,-1,.)'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put 'output work.bitemp0_append;'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc gt 0 at line 494)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%if %length(&close_vars)>0 %then %do;'; put '/**'; put '* need to close out records that are not provided'; put '*/'; put 'proc sql;'; put 'create table bitemp1_closevars1 as'; put 'select distinct a.%mf_getquotedstr(in_str=&pk,dlm=%str(,a.),quote=)'; put 'from &base_lib..&base_dsn a'; put 'inner join work.bitemp0_append b'; put 'on 1=1'; put '/* join on closevars key */'; put '%do idx_pk=1 %to %sysfunc(countw(&close_vars));'; put '%let idx_val=%scan(&close_vars,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* filter base on tech dates if necessary */'; put '%if &loadtype=TXTEMPORAL %then %do;'; put 'where a.&tech_from <=&now and &now < a.&tech_to'; put '%end;'; put ';'; put 'create table bitemp1_closevars2 as'; put 'select distinct a.*'; put 'from bitemp1_closevars1 a'; put 'left join work.bitemp0_append b'; put 'on 1=1'; put '/* join on primary key */'; put '%do idx_pk=1 %to %sysfunc(countw(&pk));'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* identify removed records by null value in a field in PK but not close_vars'; put '*/'; put 'where b.%scan('; put '%mf_wordsInStr1ButNotStr2(Str1=&pk,Str2=&close_vars),1,%str( )'; put ') IS NULL'; put ';'; put '%if %mf_getattrn(bitemp1_closevars2,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=bitemp1_closevars2'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '/* return if nothing to load (was just deletes) */'; put '%if %mf_getattrn(work.bitemp0_append,NLOBS)=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- No updates - just deletes!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&base_lib,ds=&base_dsn,'; put 'ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%let user=%mf_getUser();'; put '/* no emails yet'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);*/'; put '%end;'; put '%return;'; put '%end;'; put '/**'; put '* If applying manual overrides to business dates, then the input table MUST'; put '* be unique on the PK. Check, and if not - abort.'; put '*/'; put '%local msg;'; put '%if %length(&bus_from_override.&bus_to_override)>0 or &CHECK_UNIQUENESS=YES'; put '%then %do;'; put 'proc sort data=work.bitemp0_append out=work.bitemp0_check nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.bitemp0_check,NLOBS)'; put 'ne %mf_getattrn(work.bitemp0_append,NLOBS)'; put '%then %do;'; put '%let msg=INPUT table &append_lib..&append_dsn is not unique on PK (&pk);'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%put syscc=&syscc;'; put '%if &syscc>0 %then %do;'; put '%let msg=Bitemporal transform / job aborted due to SYSCC=&SYSCC status;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg);'; put '%end;'; put '/* final check - abort if a lock has appeared on the target table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%goto end_of_macro;'; put '%end;'; put '/* perform join inside query as per'; put 'http://stackoverflow.com/questions/24629793/update-with-a-proc-sql */'; put 'exists( select 1 from &baselib_schema.&innertable where'; put '/* loop PK join */'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put '&base_dsn..&idx_val=&innertable..&idx_val and'; put '%end;'; put '%if &loadtype=BITEMPORAL %then %do;'; put '&base_dsn..&bus_from >= &innertable..&bus_from'; put 'and &base_dsn..&bus_to <= &innertable..&bus_to and'; put '%end;'; put '/* close the statement */'; put '1=1);'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put ') by myAlias;'; put 'execute (drop table &baselib_schema.&innertable) by myAlias;'; put '%end;'; put '%end;'; put 'quit;'; put 'data _null_;'; put 'putlog "&sysmacroname: Closeout complete";'; put 'run;'; put '/**'; put '* Append the new / updated records'; put '*/'; put '%if &engine_type=CAS %then %do;'; put '/* get varchar variables ready for casting */'; put '%local vcfmt vcrename vcassign vcdrop;'; put 'data _null_;'; put 'set work.bitemp_cols(where=(type=6)) end=last;'; put 'length vcrename vcassign vcdrop vcfmt $32767 rancol $32;'; put 'retain vcrename vcassign vcdrop vcfmt;'; put 'if _n_=1 then vcrename=''(rename=('';'; put 'rancol=resolve(''%mf_getuniquename()'');'; put 'vcfmt=trim(vcfmt)!!''length ''!!cats(name)!!'' varchar(*);'';'; put 'vcrename=trim(vcrename)!!'' ''!!cats(name,''='',rancol);'; put 'vcassign=cats(vcassign,name,''='',rancol,'';'');'; put 'vcdrop=cats(vcdrop,''drop ''!!rancol,'';'');'; put 'if last then do;'; put 'vcrename=cats(vcrename,''))'');'; put 'call symputx(''vcfmt'',vcfmt);'; put 'call symputx(''vcrename'',vcrename);'; put 'call symputx(''vcassign'',vcassign);'; put 'call symputx(''vcdrop'',vcdrop);'; put 'end;'; put 'run;'; put '/* prepare a temp cas table with varchars casted */'; put '%let tmp=%mf_getuniquename();'; put 'data casuser.&tmp ;'; put '&vcfmt'; put 'set work.bitemp6_unique &vcrename;'; put '&vcassign'; put '&vcdrop'; put 'run;'; put '/* load the table with varchars applied*/'; put 'data &base_lib..&base_dsn (append=yes )/sessref=dcsession ;'; put 'set casuser.&tmp;'; put 'run;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&tmp;'; put '/* this code will not work as regular tables do not have varchars */'; put '/*'; put 'proc casutil;'; put 'load data=work.bitemp6_unique'; put 'outcaslib="&base_lib" casout="&base_dsn" append ;'; put 'quit;'; put '*/'; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put 'proc append base=&base_lib..&base_dsn'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=bitemp6_unique force nowarn;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&base_lib..&base_dsn data=bitemp6_unique force nowarn; run;'; put '%end;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '/* final check on syscc */'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=&_program'; put ',msg=%str(!!Upload NOT successful!! Failed on actual update / append stage..)'; put ')'; put '%if &outds_audit ne 0 and &LOADTARGET=YES %then %do;'; put 'data work.vw_outds_orig /view=work.vw_outds_orig;'; put 'set work.bitemp0_base (drop=&md5_col);'; put 'where ___TMP___NEW_FLG=0;'; put 'drop ___TMP___NEW_FLG;'; put 'run;'; put '/* update the AUDIT table */'; put '%if %mf_existds(&outds_audit) %then %do;'; put 'options mprint;'; put '%mp_storediffs(&base_lib..&base_dsn'; put ',work.vw_outds_orig'; put ',&pk'; put ',delds=&outds_del'; put ',modds=&outds_mod'; put ',appds=&outds_add'; put ',outds=work.mp_storediffs'; put ',processed_dttm=&now'; put ',loadref=%superq(etlsource)'; put ')'; put 'data _null_;'; put 'set work.mp_storediffs;'; put 'putlog load_ref= libref= dsn= key_hash= tgtvar_nm=;'; put 'run;'; put 'proc append base=&outds_audit data=work.mp_storediffs;'; put 'run;'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Problem in audit stage (&outds_audit))'; put ')'; put '%let user=%mf_getUser();'; put '/**'; put 'Notify as appropriate EMAILS DISABLED'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);'; put '*/'; put '/* monitor BiTemporal usage */'; put '%if &log=1 %then %do;'; put '%put syscc=&syscc;'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'insert into &dclib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&ETLSOURCE"'; put ',LOADTYPE="&loadtype"'; put ',CHANGED_RECORDS=%mf_getattrn(&lastds,NLOBS)'; put ',NEW_RECORDS=%mf_getattrn(&outds_add,NLOBS)'; put ',DELETED_RECORDS=%mf_getattrn(&outds_del,NLOBS)'; put ',DURATION=&dur'; put ',MAC_VER="v&ver"'; put ',user_nm="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%put syscc=&syscc;'; put '%end;'; put '%end_of_macro:'; put '%mend bitemporal_dataloader;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Register a new licence key'; put '@details'; put '

SAS Macros

'; put '@li mpeinit.sas'; put '@li bitemporal_dataloader.sas'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '@li mpe_getgroups.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '@test'; put 'echo ''{"keyupload":[{"activation_key":"slfdjasfda;dslf","licence_key":"asdfasdlfkajsfdas"}]}''>in.json'; put 'sasjs request admin/registerkey -d in.json'; put '**/'; put '%mpeinit()'; put '/* determine users group membership */'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.groups)'; put '%global admin_check;'; put 'proc sql;'; put 'select count(*) into: admin_check'; put 'from groups where groupname="&mpeadmins";'; put '%mp_abort(iftrue= (&admin_check = 0)'; put ',mac=%str(&_program)'; put ',msg=%str(Only members of &mpeadmins may register a key)'; put ')'; put '%global licencekey activation_key;'; put 'data _null_;'; put 'set work.keyupload;'; put 'call symputx(''activation_key'',activation_key);'; put 'call symputx(''licencekey'',licence_key);'; put 'call symputx(''activlen'',length(activation_key));'; put 'call symputx(''liclen'',length(licence_key));'; put 'run;'; put '%mp_abort(iftrue= (&activlen< 10)'; put ',mac=%str(&_program)'; put ',msg=%str(Invalid activation_key)'; put ')'; put '%mp_abort(iftrue= (&liclen < 10)'; put ',mac=%str(&_program)'; put ',msg=%str(Invalid licencekey)'; put ')'; put 'data work.loadme;'; put 'if 0 then set &mpelib..mpe_config;'; put 'VAR_SCOPE=''DC'';'; put 'VAR_NAME=''DC_ACTIVATION_KEY'';'; put 'VAR_VALUE=symget(''activation_key'');'; put 'VAR_ACTIVE=1;'; put 'output;'; put 'VAR_NAME=''DC_LICENCE_KEY'';'; put 'VAR_VALUE=symget(''licencekey'');'; put 'VAR_ACTIVE=1;'; put 'output;'; put 'keep VAR_: ;'; put 'run;'; put '%bitemporal_dataloader('; put 'tech_from=tx_from'; put ',tech_to = tx_to'; put ',base_lib=&mpelib'; put ',base_dsn=mpe_config'; put ',append_lib=WORK'; put ',append_dsn=loadme'; put ',PK= VAR_SCOPE VAR_NAME'; put ',ETLSOURCE=%str(&_program STP)'; put ',LOADTYPE=TXTEMPORAL'; put ',dclib=&mpelib'; put ')'; put 'data work.return;'; put 'msg=''SUCCESS'';'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,return)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/approvers; %let service=getapprovals; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getapprovals.sas'; put '@brief Returns a list of staged data items that need to be approved'; put '@details'; put '

SAS Macros

'; put '@li mpe_getgroups.sas'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '/* determine users group membership */'; put '%let user=%mf_getuser();'; put '%mpe_getgroups(user=&user,outds=work.groups)'; put 'PROC FORMAT;'; put 'picture yymmddhhmmss other=''%0Y-%0m-%0d %0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put 'proc sql noprint;'; put 'create table out1 (rename=(SUBMITTED_ON_DTTM1=SUBMITTED_ON_DTTM)) as'; put 'select table_id'; put ',submit_status_cd as REVIEW_STATUS_ID'; put ',SUBMITTED_BY_NM'; put ',cats(base_lib,''.'',base_ds) as base_table'; put ',put(submitted_on_dttm,yymmddhhmmss.) as SUBMITTED_ON_DTTM1'; put ',submitted_on_dttm as SUBMITTED_ON_DTTM2'; put ',submitted_reason_txt'; put ',num_of_approvals_required'; put ',num_of_approvals_remaining'; put ',base_lib as libref'; put ',base_ds as dsn'; put 'from &mpelib..mpe_submit (where=(submit_status_cd=''SUBMITTED''))'; put '/* filter out any submits for which approval is already made */'; put 'where table_id not in ('; put 'select table_id from &mpelib..mpe_review where submitted_by_nm="&user"'; put ');'; put '%macro getapprovals();'; put '%local admin_check;'; put 'select count(*) into: admin_check'; put 'from groups'; put 'where groupname="&mpeadmins"'; put 'or groupname in ('; put 'select sas_group from &mpelib..mpe_security'; put 'where libref=''*ALL*'''; put 'and &dc_dttmtfmt. lt tx_to'; put 'and access_level in (''APPROVE'')'; put ');'; put '%if &admin_check >0 %then %do;'; put 'create table fromSAS as'; put 'select distinct * from out1'; put 'order by SUBMITTED_ON_DTTM2 desc;'; put '%end;'; put '%else %do;'; put 'create table fromSAS as'; put 'select distinct a.*'; put 'from out1 a'; put 'inner join &mpelib..mpe_security b'; put 'on a.libref=b.libref'; put 'and (a.dsn=b.dsn or b.dsn=''*ALL*'')'; put 'and &dc_dttmtfmt. lt b.tx_to'; put 'and b.ACCESS_LEVEL =''APPROVE'''; put 'and b.SAS_GROUP in (select groupname from work.groups)'; put 'order by SUBMITTED_ON_DTTM2 desc;'; put '%end;'; put '%mend getapprovals;'; put '%getapprovals()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,fromSAS)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=gethistory; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Returns the list of previously approved / rejected items.'; put '@details Is filtered according to the groups in MPE_SECURITY.'; put '

SAS Macros

'; put '@li mpe_getvars.sas'; put '@li mpe_getgroups.sas'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%let hist=40;'; put '/* load parameters */'; put '%mpe_getvars(BrowserParams, BrowserParams)'; put '/* determine users group membership */'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.usergroups)'; put 'PROC FORMAT;'; put 'picture yymmddhhmmss other=''%0Y-%0m-%0d %0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '/* check to see if the user is an admin, or has *ALL* access rights */'; put '%let authcheck=0;'; put 'proc sql noprint;'; put 'create table work.authcheck'; put 'as select *'; put 'from usergroups'; put 'where upcase(groupname)="%upcase(&mpeadmins)"'; put 'or upcase(groupname) in ('; put 'select upcase(sas_group) from &mpelib..mpe_security'; put 'where libref=''*ALL*'' and &dc_dttmtfmt. lt tx_to'; put ');'; put 'select count(*) into: authcheck from &syslast;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after auth check)'; put ')'; put '/* now get the previous &hist records from mpe_submit */'; put 'proc sql;'; put 'create view work.submits as'; put 'select a.TABLE_ID'; put ',cats(a.base_lib,''.'',a.base_ds) as base_table'; put ',put(a.SUBMITTED_ON_DTTM,yymmddhhmmss.) as submitted'; put ',a.submitted_reason_txt'; put ',a.submitted_by_nm as submitter'; put ',put(a.REVIEWED_ON_DTTM,yymmddhhmmss.) as REVIEWED'; put ',a.submit_status_cd as status'; put ',a.reviewed_on_dttm'; put ',a.reviewed_by_nm as approver'; put 'from &mpelib..mpe_submit(where=(submit_status_cd ne ''SUBMITTED'')) a'; put '%macro gethistory();'; put '%if &authcheck=0 %then %do;'; put '/* filter for allowed items */'; put 'left join &mpelib..mpe_security(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on a.base_lib=b.libref'; put 'and (a.base_ds=b.dsn or b.dsn=''*ALL*'')'; put 'where upcase(b.SAS_GROUP) in (select upcase(groupname) from work.usergroups)'; put 'and b.access_level in (''VIEW'',''AUDIT'',''EDIT'',''APPROVE'')'; put '%end;'; put '%mend gethistory;'; put '%gethistory()'; put 'order by a.submitted_on_dttm desc;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after fetching submits)'; put ')'; put 'data work.fromsas;'; put 'set work.submits;'; put 'if _n_>&hist then stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,fromSAS)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=rejection; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mpe_alerts(alert_event='; put ', alert_lib='; put ', alert_ds='; put ', dsid='; put ');'; put '/* exit if not configured */'; put '%global DC_EMAIL_ALERTS;'; put '%if &DC_EMAIL_ALERTS ne YES %then %do;'; put '%put DCNOTE: Email alerts are not configured;'; put '%put DCNOTE: (dc_email_alerts=&dc_email_alerts in &mpelib..mpe_config);'; put '%return;'; put '%end;'; put '%let alert_event=%upcase(&alert_event);'; put '%let alert_lib=%upcase(&alert_lib);'; put '%let alert_ds=%upcase(&alert_ds);'; put '%let from_user=%mf_getuser();'; put '/* get users TO which the email should be sent */'; put 'proc sql noprint;'; put 'create table users as select distinct a.alert_user,'; put 'b.user_displayname,'; put 'b.user_email'; put 'from &mpelib..mpe_alerts'; put '(where=(&dc_dttmtfmt. lt tx_to)) a'; put 'left join &mpelib..mpe_emails'; put '(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on upcase(trim(a.alert_user))=upcase(trim(b.user_name))'; put 'where a.alert_event in ("&alert_event","*ALL*")'; put 'and a.alert_lib in ("&alert_lib","*ALL*")'; put 'and a.alert_ds in ("&alert_ds","*ALL*");'; put '%local isThere;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere>0 %then %do;'; put 'insert into &syslast set alert_user="&from_user";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data emails;'; put 'set users;'; put 'length emailuri uri text $256; call missing(emailuri,uri); drop emailuri uri;'; put '/* get displayname */'; put 'text=cats("omsobj:Person?@Name=''",alert_user,"''");'; put 'if metadata_getnobj(text,1,uri)<=0 then do;'; put 'putlog "DCWARN: &from_user not found";'; put 'return;'; put 'end;'; put 'else if user_displayname = '''' then do;'; put 'if metadata_getattr(uri,''DisplayName'',user_displayname)<0 then do;'; put 'putlog ''DCWARN: strange err, no displayname attribute of user URI'';'; put 'end;'; put 'end;'; put 'if index(user_email,''@'') then return;'; put '/* get email from metadata if not in input table */'; put 'if metadata_getnasn(uri,"EmailAddresses",1,emailuri)<=0 then do;'; put 'putlog "DCWARN: " alert_user " has no emails in MPE_EMAILS or metadata!";'; put 'if metadata_getattr(emailuri,"Address",user_email)<0 then do;'; put 'putlog ''DCWARN: Unexpected error! Valid emailURI but no email. Weird.'';'; put 'end;'; put 'end;'; put '/* only keep valid emails */'; put 'if index(user_email,''@'') ;'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select user_email into: emails separated by ''" "'' from emails;'; put '/* exit if nobody to email */'; put '%if %mf_getattrn(emails,NLOBS)=0 %then %do;'; put '%put NOTE: No alerts configured (mpe_alerts.sas);'; put '%return;'; put '%end;'; put '/* display email options */'; put 'data _null_;'; put 'set sashelp.voption(where=(group=''EMAIL''));'; put 'put optname ''='' setting;'; put 'run;'; put 'filename __out email ("&emails")'; put 'subject="Table &alert_lib..&alert_ds has been &alert_event";'; put '%local SUBMITTED_TXT;'; put '%if &alert_event=SUBMITTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_submit;'; put 'where table_id="&dsid" and submit_status_cd=''SUBMITTED'';'; put 'call symputx(''SUBMITTED_TXT'',submitted_reason_txt,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been proposed by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''SUBMITTED_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=APPROVED %then %do;'; put '/* there is no approval message */'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been approved by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=REJECTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_review;'; put 'where table_id="&dsid" and review_status_id=''REJECTED'';'; put 'call symputx(''REVIEW_REASON_TXT'',REVIEW_REASON_TXT,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been rejected by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''REVIEW_REASON_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put 'filename __out clear;'; put '%mend mpe_alerts ;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro removecolsfromwork(col);'; put '/* only an issue if debug mode enabled */'; put '%global _debug;'; put '%if &_debug ge 131 %then %do;'; put '%let col=%upcase(&col);'; put '%local memlist;'; put 'proc sql noprint;'; put 'select distinct memname into: memlist'; put 'separated by '' '''; put 'from dictionary.columns'; put 'where libname=''WORK'' and upcase(name)="&col";'; put '%if %mf_isblank(&memlist) %then %return;'; put '%mp_dropmembers(list=&memlist)'; put '%end;'; put '%mend removecolsfromwork;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_inc)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status;'; put 'proc sql noprint;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Removes a staged data package from approval screen'; put '@details'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mf_getvarlist.sas'; put '@li mf_verifymacvars.sas'; put '@li mp_abort.sas'; put '@li mp_lockanytable.sas'; put '@li mpe_accesscheck.sas'; put '@li mpe_alerts.sas'; put '@li mpe_getvars.sas'; put '@li removecolsfromwork.sas'; put '

Service Outputs

'; put '
fromsas
'; put '@li TABLE_ID'; put '@li SUBMITTED_REASON_TXT'; put '@li RESPONSE'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%global STP_ACTION TABLE STP_REASON;'; put '%mpeinit()'; put '%mpe_getvars(BrowserParams, BrowserParams)'; put 'PROC FORMAT;'; put 'picture yymmddhhmmss other=''%0Y-%0m-%0d %0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '/* get current status and base table */'; put 'data _null_;'; put 'set &mpelib..mpe_submit(where=(TABLE_ID="&TABLE"));'; put 'call symputx(''BASE_TABLE'',cats(base_lib,''.'',base_ds));'; put 'call symputx(''submit_status_cd'',submit_status_cd);'; put 'run;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: base_table)'; put ')'; put '%mp_abort('; put 'iftrue=(%quote(&submit_status_cd)=%quote(REJECTED))'; put ',mac=&_program'; put ',msg=%str(&table is already rejected!)'; put ')'; put '%mp_abort(iftrue= (&syscc ge 4)'; put ',mac=&_program'; put ',msg=%str(Issue on setup)'; put ')'; put '/**'; put '* determine if user is authorised to reject table'; put '*/'; put '%let user=%mf_getuser();'; put '%global authcheck; %let authcheck=0;'; put '%mpe_accesscheck(&base_table,outds=authAPP,user=&user,access_level=APPROVE)'; put '%let authcheck=%mf_getattrn(work.authAPP,NLOBS);'; put '%mp_abort(iftrue= (&authcheck=0)'; put ',mac=&_program..sas'; put ',msg=%str(User &user does not have APPROVE rights on &base_table and is not'; put 'in the &mpeadmins group)'; put ')'; put '/* update the control table to show table as rejected (and why) */'; put '%let now=%sysfunc(datetime());'; put 'data work.reject;'; put 'if 0 then set &mpelib..mpe_review;'; put 'TABLE_ID="&table";'; put 'BASE_TABLE="&base_table";'; put 'REVIEW_STATUS_ID="REJECTED";'; put 'REVIEWED_BY_NM="&user";'; put 'REVIEWED_ON_DTTM=&now;'; put 'REVIEW_REASON_TXT=symget(''STP_REASON'');'; put 'run;'; put '%mp_lockanytable(LOCK,'; put 'lib=&mpelib,ds=mpe_review,ref=%str(&table rejection),'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'proc append base=&mpelib..mpe_review data=work.reject;'; put 'run;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&mpelib,ds=mpe_review,'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put '%mp_lockanytable(LOCK,'; put 'lib=&mpelib,ds=mpe_submit,ref=%str(&table rejection),'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'proc sql;'; put 'update &mpelib..mpe_submit'; put 'set submit_status_cd=''REJECTED'','; put 'num_of_approvals_remaining=0,'; put 'reviewed_by_nm="&user",'; put 'reviewed_on_dttm=&now'; put 'where table_id="&table";'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&mpelib,ds=mpe_submit,'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc AFTER update...)'; put ')'; put '%mpe_alerts(alert_event=REJECTED'; put ', alert_lib=%scan(&BASE_TABLE,1,.)'; put ', alert_ds=%scan(&BASE_TABLE,2,.)'; put ', dsid=&TABLE'; put ')'; put 'data fromSAS;'; put 'RESPONSE=''SUCCESS!'';'; put 'set REJECT;'; put 'run;'; put '%removecolsfromwork(___TMP___MD5)'; put '%webout(OPEN)'; put '%webout(OBJ,fromSAS)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/auditors; %let service=getauditfile; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mp_dirlist(path=%sysfunc(pathname(work))'; put ', fref=0'; put ', outds=work.mp_dirlist'; put ', getattrs=NO'; put ', showparent=NO'; put ', maxdepth=0'; put ', level=0 /* The level of recursion to perform. For internal use only. */'; put ')/*/STORE SOURCE*/;'; put '%let getattrs=%upcase(&getattrs)XX;'; put '/* temp table */'; put '%local out_ds;'; put 'data;run;'; put '%let out_ds=%str(&syslast);'; put '/* drop main (top) table if it exists */'; put '%if &level=0 %then %do;'; put '%mp_dropmembers(%scan(&outds,-1,.), libref=WORK)'; put '%end;'; put 'data &out_ds(compress=no'; put 'keep=file_or_folder filepath filename ext msg directory level'; put ');'; put 'length directory filepath $500 fref fref2 $8 file_or_folder $6 filename $80'; put 'ext $20 msg $200 foption $16;'; put 'if _n_=1 then call missing(of _all_);'; put 'retain level &level;'; put '%if &fref=0 %then %do;'; put 'rc = filename(fref, "&path");'; put '%end;'; put '%else %do;'; put 'fref="&fref";'; put 'rc=0;'; put '%end;'; put 'if rc = 0 then do;'; put 'did = dopen(fref);'; put 'if did=0 then do;'; put 'putlog "NOTE: This directory is empty, or does not exist - &path";'; put 'msg=sysmsg();'; put 'put msg;'; put 'put _all_;'; put 'stop;'; put 'end;'; put '/* attribute is OS-dependent - could be "Directory" or "Directory Name" */'; put 'numopts=doptnum(did);'; put 'do i=1 to numopts;'; put 'foption=doptname(did,i);'; put 'if foption=:''Directory'' then i=numopts;'; put 'end;'; put 'directory=dinfo(did,foption);'; put 'rc = filename(fref);'; put 'end;'; put 'else do;'; put 'msg=sysmsg();'; put 'put _all_;'; put 'stop;'; put 'end;'; put 'dnum = dnum(did);'; put 'do i = 1 to dnum;'; put 'filename = dread(did, i);'; put 'filepath=cats(directory,''/'',filename);'; put 'rc = filename(fref2,filepath);'; put 'midd=dopen(fref2);'; put 'dmsg=sysmsg();'; put 'if did > 0 then file_or_folder=''folder'';'; put 'rc=dclose(midd);'; put 'midf=fopen(fref2);'; put 'fmsg=sysmsg();'; put 'if midf > 0 then file_or_folder=''file'';'; put 'rc=fclose(midf);'; put 'if index(fmsg,''File is in use'') or index(dmsg,''is not a directory'')'; put 'then file_or_folder=''file'';'; put 'else if index(fmsg,''Insufficient authorization'') then file_or_folder=''file'';'; put 'else if file_or_folder='''' then file_or_folder=''locked'';'; put 'if file_or_folder=''file'' then do;'; put 'ext = prxchange(''s/.*\.{1,1}(.*)/$1/'', 1, filename);'; put 'if filename = ext then ext = '' '';'; put 'end;'; put 'else do;'; put 'ext='''';'; put 'file_or_folder=''folder'';'; put 'end;'; put 'output;'; put 'end;'; put 'rc = dclose(did);'; put '%if &showparent=YES and &level=0 %then %do;'; put 'filepath=directory;'; put 'file_or_folder=''folder'';'; put 'ext='''';'; put 'filename=scan(directory,-1,''/\'');'; put 'msg='''';'; put 'level=&level;'; put 'output;'; put '%end;'; put 'stop;'; put 'run;'; put '%if %substr(&getattrs,1,1)=Y %then %do;'; put 'data &out_ds;'; put 'set &out_ds;'; put 'length infoname infoval $60 fref $8;'; put 'if _n_=1 then call missing(fref);'; put 'rc=filename(fref,filepath);'; put 'drop rc infoname fid i close fref;'; put 'if file_or_folder=''file'' then do;'; put 'fid=fopen(fref);'; put 'if fid le 0 then do;'; put 'msg=sysmsg();'; put 'putlog "Could not open file:" filepath fid= ;'; put 'sasname=''_MCNOTVALID_'';'; put 'output;'; put 'end;'; put 'else do i=1 to foptnum(fid);'; put 'infoname=foptname(fid,i);'; put 'infoval=finfo(fid,infoname);'; put 'sasname=compress(infoname, ''_'', ''adik'');'; put 'if anydigit(sasname)=1 then sasname=substr(sasname,anyalpha(sasname));'; put 'if upcase(sasname) ne ''FILENAME'' then output;'; put 'end;'; put 'close=fclose(fid);'; put 'end;'; put 'else do;'; put 'fid=dopen(fref);'; put 'if fid le 0 then do;'; put 'msg=sysmsg();'; put 'putlog "Could not open folder:" filepath fid= ;'; put 'sasname=''_MCNOTVALID_'';'; put 'output;'; put 'end;'; put 'else do i=1 to doptnum(fid);'; put 'infoname=doptname(fid,i);'; put 'infoval=dinfo(fid,infoname);'; put 'sasname=compress(infoname, ''_'', ''adik'');'; put 'if anydigit(sasname)=1 then sasname=substr(sasname,anyalpha(sasname));'; put 'if upcase(sasname) ne ''FILENAME'' then output;'; put 'end;'; put 'close=dclose(fid);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by filepath sasname;'; put 'proc transpose data=&out_ds out=&out_ds(drop=_:);'; put 'id sasname;'; put 'var infoval;'; put 'by filepath file_or_folder filename ext ;'; put 'run;'; put '%end;'; put 'data &out_ds;'; put 'set &out_ds(where=(filepath ne ''''));'; put 'run;'; put '/**'; put '* The above transpose can mean that some updates create additional columns.'; put '* This necessitates the occasional use of datastep over proc append.'; put '*/'; put '%if %mf_existds(&outds) %then %do;'; put '%local basevars appvars newvars;'; put '%let basevars=%mf_getvarlist(&outds);'; put '%let appvars=%mf_getvarlist(&out_ds);'; put '%let newvars=%length(%mf_wordsinstr1butnotstr2(Str1=&appvars,Str2=&basevars));'; put '%if &newvars>0 %then %do;'; put 'data &outds;'; put 'set &outds &out_ds;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&outds data=&out_ds force nowarn;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do;'; put 'proc append base=&outds data=&out_ds;'; put 'run;'; put '%end;'; put '/* recursive call */'; put '%if &maxdepth>&level or &maxdepth=MAX %then %do;'; put 'data _null_;'; put 'set &out_ds;'; put 'where file_or_folder=''folder'';'; put '%if &showparent=YES and &level=0 %then %do;'; put 'if filepath ne directory;'; put '%end;'; put 'length code $10000;'; put 'code=cats(''%nrstr(%mp_dirlist(path='',filepath,",outds=&outds"'; put ',",getattrs=&getattrs,level=%eval(&level+1),maxdepth=&maxdepth))");'; put 'put code=;'; put 'call execute(code);'; put 'run;'; put '%end;'; put '/* tidy up */'; put 'proc sql;'; put 'drop table &out_ds;'; put '%mend mp_dirlist;'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mfs_httpheader(header_name'; put ',header_value'; put ')/*/STORE SOURCE*/;'; put '%global sasjs_stpsrv_header_loc;'; put '%local fref fid i;'; put '%if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc)) ne 0 %then %do;'; put '%put &=fref &=sasjs_stpsrv_header_loc;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(&header_name): %str(&header_value)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%mend mfs_httpheader;'; put '%macro mp_streamfile('; put 'contenttype=TEXT'; put ',inloc='; put ',inref=0'; put ',iftrue=%str(1=1)'; put ',outname='; put ',outref=_webout'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let contentype=%upcase(&contenttype);'; put '%let outref=%upcase(&outref);'; put '%local platform; %let platform=%mf_getplatform();'; put '/**'; put '* check engine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put '%local streamweb;'; put '%let streamweb=0;'; put 'data _null_;'; put 'set sashelp.vextfl(where=(upcase(fileref)="&outref"));'; put 'if xengine=''STREAM'' then call symputx(''streamweb'',1,''l'');'; put 'run;'; put '%if &contentype=CSV %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/csv'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/csv'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/csv)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=EXCEL %then %do;'; put '/* suitable for XLS format */'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/vnd.ms-excel'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype=''application/vnd.ms-excel'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/vnd.ms-excel)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=GIF or &contentype=JPEG or &contentype=PNG %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"image/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="image/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,image/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=HTML or &contenttype=MARKDOWN %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"text/%lowcase(&contenttype)");'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json"'; put 'contenttype="text/%lowcase(&contenttype)"'; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,text/%lowcase(&contenttype))'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=TEXT %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/text'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/text'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/text)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=WOFF or &contentype=WOFF2 or &contentype=TTF %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"font/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="font/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,font/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=XLSX %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'','; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype='; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type'; put ',application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; put ')'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=ZIP %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/zip'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.zip'''; put 'contenttype=''application/zip'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/zip)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Content Type &contenttype NOT SUPPORTED by &sysmacroname!;'; put '%end;'; put '%if &inref ne 0 %then %do;'; put '%mp_binarycopy(inref=&inref,outref=&outref)'; put '%end;'; put '%else %do;'; put '%mp_binarycopy(inloc="&inloc",outref=&outref)'; put '%end;'; put '%mend mp_streamfile;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getauditfile.sas'; put '@brief Downloads a zip file containing audit info.'; put '@details The staging location from the &mpelocapprovals location'; put 'is zipped and returned as a file download. A user can only request the'; put 'audit pack if they have EDIT or APPROVE rights on the target table.'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mf_verifymacvars.sas'; put '@li mpe_accesscheck.sas'; put '@li mp_abort.sas'; put '@li mp_dirlist.sas'; put '@li mp_binarycopy.sas'; put '@li mf_getattrn.sas'; put '@li mp_streamfile.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put 'options mprint;'; put '/* security checks */'; put '%let user=%mf_getuser();'; put 'proc sql noprint;'; put 'select cats(base_lib,''.'',base_ds) into: libds'; put 'from &mpelib..mpe_submit'; put 'where table_id="&table";'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(libds table)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: libds table)'; put ')'; put '%mpe_accesscheck(&libds,outds=authEDIT,user=&user,access_level=EDIT);'; put '%mpe_accesscheck(&libds,outds=authAPP,user=&user,access_level=APPROVE);'; put '%mp_abort('; put 'iftrue=('; put '%mf_getattrn(work.authEDIT,NLOBS)=0 & %mf_getattrn(work.authAPP,NLOBS)=0'; put ')'; put ',mac=mpestp_audit'; put ',msg=%str(&user not authorised to download audit data for &table)'; put ')'; put 'ods package(ProdOutput) open nopf;'; put 'options notes source2 mprint;'; put '%let table=%unquote(&table);'; put '%mp_dirlist(outds=dirs, path=&mpelocapprovals/&TABLE);'; put 'data _null_;'; put 'set dirs;'; put 'retain str1'; put '"ods package(ProdOutput) add file=''&mpelocapprovals/&TABLE/";'; put 'retain str2 "'' mimetype=''text/plain'' path=''contents/'';";'; put 'call execute(cats(str1,filename,str2));'; put 'run;'; put '%let archive_path=%sysfunc(pathname(work));'; put 'ods package(ProdOutput) publish archive properties'; put '(archive_name= "&table..zip" archive_path="&archive_path");'; put 'ods package(ProdOutput) close;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%nrstr(syscc=&syscc)'; put ')'; put '/* now serve zip file to client */'; put '%mp_streamfile(contenttype=ZIP'; put ',inloc=%str(&archive_path/&table..zip)'; put ',outname=&table..zip'; put ')'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getdiffs; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mfs_httpheader(header_name'; put ',header_value'; put ')/*/STORE SOURCE*/;'; put '%global sasjs_stpsrv_header_loc;'; put '%local fref fid i;'; put '%if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc)) ne 0 %then %do;'; put '%put &=fref &=sasjs_stpsrv_header_loc;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(&header_name): %str(&header_value)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%mend mfs_httpheader;'; put '%macro mp_streamfile('; put 'contenttype=TEXT'; put ',inloc='; put ',inref=0'; put ',iftrue=%str(1=1)'; put ',outname='; put ',outref=_webout'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let contentype=%upcase(&contenttype);'; put '%let outref=%upcase(&outref);'; put '%local platform; %let platform=%mf_getplatform();'; put '/**'; put '* check engine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put '%local streamweb;'; put '%let streamweb=0;'; put 'data _null_;'; put 'set sashelp.vextfl(where=(upcase(fileref)="&outref"));'; put 'if xengine=''STREAM'' then call symputx(''streamweb'',1,''l'');'; put 'run;'; put '%if &contentype=CSV %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/csv'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/csv'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/csv)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=EXCEL %then %do;'; put '/* suitable for XLS format */'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/vnd.ms-excel'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype=''application/vnd.ms-excel'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/vnd.ms-excel)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=GIF or &contentype=JPEG or &contentype=PNG %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"image/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="image/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,image/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=HTML or &contenttype=MARKDOWN %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"text/%lowcase(&contenttype)");'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json"'; put 'contenttype="text/%lowcase(&contenttype)"'; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,text/%lowcase(&contenttype))'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=TEXT %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/text'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/text'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/text)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=WOFF or &contentype=WOFF2 or &contentype=TTF %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"font/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="font/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,font/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=XLSX %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'','; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype='; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type'; put ',application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; put ')'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=ZIP %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/zip'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.zip'''; put 'contenttype=''application/zip'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/zip)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Content Type &contenttype NOT SUPPORTED by &sysmacroname!;'; put '%end;'; put '%if &inref ne 0 %then %do;'; put '%mp_binarycopy(inref=&inref,outref=&outref)'; put '%end;'; put '%else %do;'; put '%mp_binarycopy(inloc="&inloc",outref=&outref)'; put '%end;'; put '%mend mp_streamfile;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getdiffs.sas'; put '@brief Retrieves the diff file for viewing'; put '@details'; put '

SAS Macros

'; put '@li mpe_getvars.sas'; put '@li mpe_accesscheck.sas'; put '@li mf_getattrn.sas'; put '@li mp_abort.sas'; put '@li mp_binarycopy.sas'; put '@li mp_streamfile.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%mpe_getvars(BrowserParams, BrowserParams);'; put '/* security checks */'; put '%let user=%mf_getuser();'; put '%mpe_accesscheck(&libds,outds=authEDIT,user=&user,access_level=EDIT)'; put '%mpe_accesscheck(&libds,outds=authAPP,user=&user,access_level=APPROVE)'; put '%macro mpestp_diffs();'; put '%if %mf_getattrn(work.authEDIT,NLOBS)=0 & %mf_getattrn(work.authAPP,NLOBS)=0'; put '%then %do;'; put '%mp_abort(msg=%str('; put '&user not authorised to download diffs data for &stp_table)'; put ',mac=mpestp_diffs.sas);'; put '%return;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '/* stream diffs csv to client */'; put '%mp_streamfile(contenttype=EXCEL'; put ',inloc=%str(&mpelocapprovals/&TABLE/&STP_DIFFS_CSV)'; put ',outname=&STP_DIFFS_CSV'; put ')'; put '%mend mpestp_diffs;'; put '%mpestp_diffs()'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getstagetable; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvalue(libds,variable,filter=1'; put ')/*/STORE SOURCE*/;'; put '%if %mf_getattrn(&libds,NLOBS)>0 %then %do;'; put '%local dsid rc &variable;'; put '%let dsid=%sysfunc(open(&libds(where=(&filter))));'; put '%syscall set(dsid);'; put '%let rc = %sysfunc(fetch(&dsid));'; put '%let rc = %sysfunc(close(&dsid));'; put '%trim(&&&variable)'; put '%end;'; put '%mend mf_getvalue;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getstagetable.sas'; put '@brief Retrieves the actual table that is being sent for update'; put '@details'; put '

SAS Macros

'; put '@li mf_getvalue.sas'; put '@li mp_abort.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%let table_id=%mf_getvalue(work.iwant,table_id);'; put 'libname loc "&mpelocapprovals/&table_id";'; put 'data stagetable;'; put 'set loc.&table_id;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,stagetable,missing=STRING)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=postdata; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 or %length(&var)=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_inc)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status;'; put 'proc sql noprint;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro bitemporal_closeouts('; put 'tech_from=tx_from_dttm'; put ',tech_to = tx_to_dttm /* Technical TO datetime variable.'; put 'Req''d on BASE table only. */'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE /* Name of STAGING table. */'; put ',PK= name sex /* Business key, space separated. */'; put '/* Should INCLUDE BUS_FROM field if relevant. */'; put ',NOW=DEFINE'; put ',FILTER= /* supply a filter to limit the update */'; put ',outdest= /* supply an unquoted filepath/filename.ext to get'; put 'a text file containing the update statements */'; put ',loadtype='; put ',loadtarget=YES /* if <> YES will return without changing anything */'; put ');'; put '%put ENTERING &sysmacroname;'; put '%local x var start;'; put '%let start=%sysfunc(datetime());'; put '%dc_assignlib(WRITE,&base_lib)'; put '%dc_assignlib(WRITE,&append_lib)'; put '%if &now=DEFINE %then %let now=&dc_dttmtfmt.;'; put '%put &=now;'; put '/**'; put '* perform basic checks'; put '*/'; put '/* do tables exist? */'; put '%if not %sysfunc(exist(&base_lib..&base_dsn)) %then %do;'; put '%mp_abort(msg=&base_lib..&base_dsn does not exist)'; put '%end;'; put '%else %if %sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 %then %do;'; put '%mp_abort(msg=&append_lib..&append_dsn does not exist)'; put '%end;'; put '/* do TX columns exist? */'; put '%if &loadtype ne UPDATE %then %do;'; put '%if not %mf_existvar(&base_lib..&base_dsn,&tech_from) %then %do;'; put '%mp_abort(msg=&tech_from does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&base_lib..&base_dsn,&tech_to) %then %do;'; put '%mp_abort(msg=&tech_to does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%end;'; put '/* do PK columns exist? */'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if not %mf_existvar(&base_lib..&base_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&append_lib..&append_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &append_lib..&append_dsn)'; put '%end;'; put '%end;'; put '/* check uniqueness */'; put 'proc sort data=&append_lib..&append_dsn'; put 'out=___closeout1 noduprecs dupout=___closeout1a;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(___closeout1a,NLOBS)>0 %then'; put '%put NOTE: dups on (&PK) in (&append_lib..&append_dsn);'; put '/* is &NOW value within a tolerance? Should not allow renegade closeouts.. */'; put '%local gap;'; put '%let gap=0;'; put 'data _null_;'; put 'now=&now;'; put 'gap=intck(''HOURS'',now,datetime());'; put 'call symputx(''gap'',gap,''l'');'; put 'run;'; put '%mf_abort('; put 'iftrue=(&gap > 24),'; put 'msg=NOW variable (&now) is not within a 24hr tolerance'; put ')'; put '/* have any warnings / errs occurred thus far? If so, abort */'; put '%mf_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/**'; put '* Create closeout statements. These are sent as individual SQL statements'; put '* to ensure pass-through utilisation. The update_cnt variable monitors'; put '* how many records were actually updated on the target table.'; put '*/'; put '%local update_cnt;'; put '%let update_cnt=0;'; put 'filename tmp temp;'; put 'data _null_;'; put 'set ___closeout1;'; put 'file tmp;'; put 'if _n_=1 then put ''proc sql noprint;'' ;'; put 'length string $32767.;'; put '%if &loadtype=UPDATE %then %do;'; put 'put "delete from &base_lib..&base_dsn where 1";'; put '%end;'; put '%else %do;'; put 'now=symget(''now'');'; put 'put "update &base_lib..&base_dsn set &tech_to= " now @;'; put '%if %mf_existvar(&base_lib..&base_dsn,PROCESSED_DTTM) %then %do;'; put 'put " ,PROCESSED_DTTM=" now @;'; put '%end;'; put 'put " where " now " lt &tech_to ";'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if %mf_getvartype(&base_lib..&base_dsn,&var)=C %then %do;'; put '/* use single quotes to avoid ampersand resolution in data */'; put 'string=" & &var=''"!!trim(prxchange("s/''/''''/",-1,&var))!!"''";'; put '%end;'; put '%else %do;'; put 'string=cats(" & &var=",&var);'; put '%end;'; put 'put string;'; put '%end;'; put 'put "&filter ;";'; put 'put ''%let update_cnt=%eval(&update_cnt+&sqlobs);%put update_cnt=&update_cnt;'';'; put 'run;'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%if &loadtarget ne YES %then %return;'; put '/* ensure we have a lock */'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn'; put ',ref=bitemporal_closeouts'; put ',ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'options source2;'; put '%inc tmp;'; put 'filename tmp clear;'; put '/**'; put '* Update audit tracker'; put '*/'; put '%local newobs; %let newobs=%mf_getattrn(work.___closeout1,NLOBS);'; put '%local user; %let user=%mf_getuser();'; put 'proc sql;'; put 'insert into &mpelib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&append_lib..&append_dsn contained &newobs records"'; put ',LOADTYPE="CLOSEOUT"'; put ',DELETED_RECORDS=&update_cnt'; put ',NEW_RECORDS=0'; put ',DURATION=%sysfunc(datetime())-&start'; put ',USER_NM="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%mend bitemporal_closeouts;'; put '%macro mf_getschema(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum rc schema;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=''Schema/Owner'''; put ')),i));'; put '%if (&dsid ^= 0) %then %do;'; put '%let vnum=%sysfunc(varnum(&dsid,SYSVALUE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let schema=%sysfunc(getvarc(&dsid,&vnum));'; put '%put &libref. schema is &schema.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '&schema'; put '%mend mf_getschema;'; put '/** @endcond */'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_retainedkey('; put 'base_lib=WORK'; put ',base_dsn=BASETABLE'; put ',append_lib=WORK'; put ',append_dsn=APPENDTABLE'; put ',retained_key=DEFAULT_RK'; put ',business_key= PK1 PK2'; put ',check_uniqueness=NO'; put ',maxkeytable=0'; put ',locktable=0'; put ',outds=WORK.APPEND'; put ',filter_str='; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local base_libds app_libds key_field check maxkey idx_pk newkey_cnt iserr'; put 'msg x tempds1 tempds2 comma_pk appnobs checknobs dropvar tempvar idx_val;'; put '%let base_libds=%upcase(&base_lib..&base_dsn);'; put '%let app_libds=%upcase(&append_lib..&append_dsn);'; put '%let tempds1=%mf_getuniquename();'; put '%let tempds2=%mf_getuniquename();'; put '%let comma_pk=%mf_getquotedstr(in_str=%str(&business_key),dlm=%str(,),quote=);'; put '%let outds=%sysfunc(ifc(%index(&outds,.)=0,work.&outds,&outds));'; put '/* validation checks */'; put '%let iserr=0;'; put '%if &syscc>0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(SYSCC=&syscc on macro entry);'; put '%end;'; put '%else %if %sysfunc(exist(&base_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Base LIBDS (&base_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if %sysfunc(exist(&app_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Append LIBDS (&app_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&maxkeytable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Maxkeytable (&maxkeytable) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&locktable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Locktable (&locktable) expected but NOT FOUND);'; put '%end;'; put '%else %if %length(&business_key)=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Business key (&business_key) expected but NOT FOUND);'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&business_key));'; put '/* check business key values exist */'; put '%let key_field=%scan(&business_key,&x,%str( ));'; put '%if not %mf_existvar(&app_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &app_libds!;'; put '%goto err;'; put '%end;'; put '%else %if not %mf_existvar(&base_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &base_libds!;'; put '%goto err;'; put '%end;'; put '%end;'; put '%err:'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue=(&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put 'proc sql noprint;'; put 'select sum(max(&retained_key),0) into: maxkey from &base_libds;'; put '/**'; put '* get base table RK and bus field values for lookup'; put '*/'; put 'proc sql noprint;'; put 'create table &tempds1 as'; put 'select distinct &comma_pk,&retained_key'; put 'from &base_libds &filter_str'; put 'order by &comma_pk,&retained_key;'; put '%if &check_uniqueness=YES %then %do;'; put 'select count(*) into:checknobs'; put 'from (select distinct &comma_pk from &app_libds);'; put 'select count(*) into: appnobs from &app_libds; /* might be view */'; put '%if &checknobs ne &appnobs %then %do;'; put '%let msg=Source table &app_libds is not unique on (&business_key);'; put '%let iserr=1;'; put '%end;'; put '%end;'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue= (&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put '%if %mf_existvar(&app_libds,&retained_key)'; put '%then %let dropvar=(drop=&retained_key);'; put '/* prepare interim table with retained key populated for matching keys */'; put 'proc sql noprint;'; put 'create table &tempds2 as'; put 'select b.&retained_key, a.*'; put 'from &app_libds &dropvar a'; put 'left join &tempds1 b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&business_key));'; put '%let idx_val=%scan(&business_key,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by &retained_key;'; put '/* identify the number of entries without retained keys (new records) */'; put 'select count(*) into: newkey_cnt'; put 'from &tempds2'; put 'where missing(&retained_key);'; put 'quit;'; put '/**'; put '* Update maxkey table if link provided'; put '*/'; put '%if &maxkeytable ne 0 %then %do;'; put 'proc sql noprint;'; put 'select count(*) into: check from &maxkeytable'; put 'where upcase(keytable)="&base_libds";'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with mp_retainedkey'; put ',ctl_ds=&locktable'; put ')'; put 'proc sql;'; put '%if &check=0 %then %do;'; put 'insert into &maxkeytable'; put 'set keytable="&base_libds"'; put ',keycolumn="&retained_key"'; put ',max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put 'where keytable="&base_libds";'; put '%end;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with maxkey=%eval(&maxkey+&newkey_cnt)'; put ',ctl_ds=&locktable'; put ')'; put '%end;'; put '/* fill in the missing retained key values */'; put '%let tempvar=%mf_getuniquename();'; put 'data &outds(drop=&tempvar);'; put 'retain &tempvar %eval(&maxkey+1);'; put 'set &tempds2;'; put 'if &retained_key =. then &retained_key=&tempvar;'; put '&tempvar=&tempvar+1;'; put 'run;'; put '%mend mp_retainedkey;'; put '/** @cond */'; put '%macro mp_storediffs(libds'; put ',origds'; put ',key'; put ',delds=0'; put ',appds=0'; put ',modds=0'; put ',outds=work.mp_storediffs'; put ',loadref=0'; put ',processed_dttm=0'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '/* set up unique and temporary vars */'; put '%local ds1 ds2 ds3 ds4 hashkey inds_auto inds_keep dslist vlist;'; put '%let ds1=%upcase(work.%mf_getuniquename(prefix=mpsd_ds1));'; put '%let ds2=%upcase(work.%mf_getuniquename(prefix=mpsd_ds2));'; put '%let ds3=%upcase(work.%mf_getuniquename(prefix=mpsd_ds3));'; put '%let ds4=%upcase(work.%mf_getuniquename(prefix=mpsd_ds4));'; put '%let hashkey=%upcase(%mf_getuniquename(prefix=mpsd_hashkey));'; put '%let inds_auto=%upcase(%mf_getuniquename(prefix=mpsd_inds_auto));'; put '%let inds_keep=%upcase(%mf_getuniquename(prefix=mpsd_inds_keep));'; put '%let dslist=&origds;'; put '%if &delds ne 0 %then %do;'; put '%let delds=%upcase(&delds);'; put '%if %scan(&delds,-1,.)=&delds %then %let delds=WORK.&delds;'; put '%let dslist=&dslist &delds;'; put '%end;'; put '%if &appds ne 0 %then %do;'; put '%let appds=%upcase(&appds);'; put '%if %scan(&appds,-1,.)=&appds %then %let appds=WORK.&appds;'; put '%let dslist=&dslist &appds;'; put '%end;'; put '%if &modds ne 0 %then %do;'; put '%let modds=%upcase(&modds);'; put '%if %scan(&modds,-1,.)=&modds %then %let modds=WORK.&modds;'; put '%let dslist=&dslist &modds;'; put '%end;'; put '%let origds=%upcase(&origds);'; put '%if %scan(&origds,-1,.)=&origds %then %let origds=WORK.&origds;'; put '%let key=%upcase(&key);'; put '/* hash the key and append all the tables (marking the source) */'; put 'data &ds1;'; put 'set &dslist indsname=&inds_auto;'; put '&hashkey=put(md5(catx(''|'',%mf_getquotedstr(&key,quote=N))),$hex32.);'; put '&inds_keep=upcase(&inds_auto);'; put 'proc sort;'; put 'by &inds_keep &hashkey;'; put 'run;'; put '/* transpose numeric & char vars */'; put 'proc transpose data=&ds1'; put 'out=&ds2(rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_num));'; put 'by &inds_keep &hashkey;'; put 'var _numeric_;'; put 'run;'; put 'proc transpose data=&ds1'; put 'out=&ds3('; put 'rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_char)'; put 'where=(tgtvar_nm not in ("&hashkey","&inds_keep"))'; put ');'; put 'by &inds_keep &hashkey;'; put 'var _character_;'; put 'run;'; put '%if %index(&libds,-)>0 and %scan(&libds,2,-)=FC %then %do;'; put '/* this is a format catalog - cannot query cols directly */'; put '%let vlist="FMTNAME","START","END","LABEL","MIN","MAX","DEFAULT","LENGTH"'; put ',"FUZZ","PREFIX","MULT","FILL","NOEDIT","TYPE","SEXCL","EEXCL","HLO"'; put ',"DECSEP","DIG3SEP","DATATYPE","LANGUAGE";'; put '%end;'; put '%else %let vlist=%mf_getvarlist(&libds,dlm=%str(,),quote=DOUBLE);'; put 'data &ds4;'; put 'length &inds_keep $41 tgtvar_nm $32 _label_ $256;'; put 'if _n_=1 then call missing(_label_);'; put 'drop _label_;'; put 'set &ds2 &ds3 indsname=&inds_auto;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%upcase(&vlist));'; put 'if upcase(&inds_auto)="&ds2" then tgtvar_type=''N'';'; put 'else if upcase(&inds_auto)="&ds3" then tgtvar_type=''C'';'; put 'else do;'; put 'putlog "%str(ERR)OR: unidentified vartype input!" &inds_auto;'; put 'call symputx(''syscc'',98);'; put 'end;'; put 'if &inds_keep="&appds" then move_type=''A'';'; put 'else if &inds_keep="&delds" then move_type=''D'';'; put 'else if &inds_keep="&modds" then move_type=''M'';'; put 'else if &inds_keep="&origds" then move_type=''O'';'; put 'else do;'; put 'putlog "%str(ERR)OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%else %do;'; put '/* not an actual load, so avoid updating the max key table in next step. */'; put '%let rk_update_maxkeytable=NO;'; put '%end;'; put '%if %length(&RK_UNDERLYING)>0 %then %do;'; put '%mp_retainedkey('; put 'base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=&append_lib'; put ',append_dsn=&append_dsn'; put ',retained_key=&pk'; put ',business_key=&rk_underlying'; put ',check_uniqueness=&CHECK_UNIQUENESS'; put ',outds=work.append'; put '%if &rk_update_maxkeytable=NO %then %do;'; put ',maxkeytable=0'; put '%end;'; put '%else %do;'; put ',maxkeytable=&dclib..&RK_MAXKEYTABLE'; put '%end;'; put ',locktable=&dclib..mpe_lockanytable'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',filter_str=%str( (where=( &now < &tech_to)) )'; put '%end;'; put ')'; put '%end;'; put '%else %do;'; put 'proc sql;'; put 'create view work.append as select * from &append_lib..&append_dsn;'; put '%end;'; put '/**'; put '* generate md5 for append table'; put '*/'; put '/* it is possible the source dataset has additional (unwanted) columns.'; put 'Drop if specified; */'; put '%if %length(&keepvars)>0 %then %do;'; put '/* remove tech dates from keepvars as they are generated later */'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_from ),%str( )));'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_to ),%str( )));'; put '%let keepvars=(keep=&keepvars &bus_from &bus_to &processed &md5_col);'; put '%end;'; put '/* CAS varchar types cause append issues here, so perform autoconvert'; put 'by creating empty local table first */'; put 'data;'; put 'set &base_lib..&base_dsn &drop_tx_dates_noobs;'; put 'run;'; put '%local emptybasetable; %let emptybasetable=&syslast;'; put 'data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put '/* apply formats for bitemporal vars but not tx dates which are added later */'; put '%if %length(&keepvars)>0 and &loadtype=BITEMPORAL %then %do;'; put 'format &bus_from &bus_from_fmt;'; put 'format &bus_to &bus_to_fmt;'; put '%end;'; put 'set &emptybasetable /* base table reqd in case append has fewer cols */'; put 'work.append &drop_tx_dates;'; put '%if %length(%str(&bus_from_override))>0 %then %do;'; put '&bus_from= %unquote(&bus_from_override) ;'; put '%end;'; put '%if %length(%str(&bus_to_override))>0 %then %do;'; put '&bus_to= %unquote(&bus_to_override) ;'; put '%end;'; put 'length &md5_col $32;'; put '&md5_col=put(md5(&stripcols),hex32.);'; put '%if %length(&processed)>0 %then %do;'; put 'format &processed &processed_fmt;'; put '&processed=&now;'; put '%end;'; put '/**'; put '* If a delete column exists then create the delete dataset'; put '*/'; put '%if %mf_existvar(&append_lib..&append_dsn, &delete_col) %then %do;'; put 'drop &delete_col;'; put 'if upcase(&delete_col) = "YES" then output &outds_del ;'; put 'else output work.bitemp0_append ;'; put 'run;'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=%scan(&outds_del,-1,.)'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put 'output work.bitemp0_append;'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc gt 0 at line 494)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%if %length(&close_vars)>0 %then %do;'; put '/**'; put '* need to close out records that are not provided'; put '*/'; put 'proc sql;'; put 'create table bitemp1_closevars1 as'; put 'select distinct a.%mf_getquotedstr(in_str=&pk,dlm=%str(,a.),quote=)'; put 'from &base_lib..&base_dsn a'; put 'inner join work.bitemp0_append b'; put 'on 1=1'; put '/* join on closevars key */'; put '%do idx_pk=1 %to %sysfunc(countw(&close_vars));'; put '%let idx_val=%scan(&close_vars,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* filter base on tech dates if necessary */'; put '%if &loadtype=TXTEMPORAL %then %do;'; put 'where a.&tech_from <=&now and &now < a.&tech_to'; put '%end;'; put ';'; put 'create table bitemp1_closevars2 as'; put 'select distinct a.*'; put 'from bitemp1_closevars1 a'; put 'left join work.bitemp0_append b'; put 'on 1=1'; put '/* join on primary key */'; put '%do idx_pk=1 %to %sysfunc(countw(&pk));'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* identify removed records by null value in a field in PK but not close_vars'; put '*/'; put 'where b.%scan('; put '%mf_wordsInStr1ButNotStr2(Str1=&pk,Str2=&close_vars),1,%str( )'; put ') IS NULL'; put ';'; put '%if %mf_getattrn(bitemp1_closevars2,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=bitemp1_closevars2'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '/* return if nothing to load (was just deletes) */'; put '%if %mf_getattrn(work.bitemp0_append,NLOBS)=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- No updates - just deletes!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&base_lib,ds=&base_dsn,'; put 'ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%let user=%mf_getUser();'; put '/* no emails yet'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);*/'; put '%end;'; put '%return;'; put '%end;'; put '/**'; put '* If applying manual overrides to business dates, then the input table MUST'; put '* be unique on the PK. Check, and if not - abort.'; put '*/'; put '%local msg;'; put '%if %length(&bus_from_override.&bus_to_override)>0 or &CHECK_UNIQUENESS=YES'; put '%then %do;'; put 'proc sort data=work.bitemp0_append out=work.bitemp0_check nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.bitemp0_check,NLOBS)'; put 'ne %mf_getattrn(work.bitemp0_append,NLOBS)'; put '%then %do;'; put '%let msg=INPUT table &append_lib..&append_dsn is not unique on PK (&pk);'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%put syscc=&syscc;'; put '%if &syscc>0 %then %do;'; put '%let msg=Bitemporal transform / job aborted due to SYSCC=&SYSCC status;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg);'; put '%end;'; put '/* final check - abort if a lock has appeared on the target table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%goto end_of_macro;'; put '%end;'; put '/* perform join inside query as per'; put 'http://stackoverflow.com/questions/24629793/update-with-a-proc-sql */'; put 'exists( select 1 from &baselib_schema.&innertable where'; put '/* loop PK join */'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put '&base_dsn..&idx_val=&innertable..&idx_val and'; put '%end;'; put '%if &loadtype=BITEMPORAL %then %do;'; put '&base_dsn..&bus_from >= &innertable..&bus_from'; put 'and &base_dsn..&bus_to <= &innertable..&bus_to and'; put '%end;'; put '/* close the statement */'; put '1=1);'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put ') by myAlias;'; put 'execute (drop table &baselib_schema.&innertable) by myAlias;'; put '%end;'; put '%end;'; put 'quit;'; put 'data _null_;'; put 'putlog "&sysmacroname: Closeout complete";'; put 'run;'; put '/**'; put '* Append the new / updated records'; put '*/'; put '%if &engine_type=CAS %then %do;'; put '/* get varchar variables ready for casting */'; put '%local vcfmt vcrename vcassign vcdrop;'; put 'data _null_;'; put 'set work.bitemp_cols(where=(type=6)) end=last;'; put 'length vcrename vcassign vcdrop vcfmt $32767 rancol $32;'; put 'retain vcrename vcassign vcdrop vcfmt;'; put 'if _n_=1 then vcrename=''(rename=('';'; put 'rancol=resolve(''%mf_getuniquename()'');'; put 'vcfmt=trim(vcfmt)!!''length ''!!cats(name)!!'' varchar(*);'';'; put 'vcrename=trim(vcrename)!!'' ''!!cats(name,''='',rancol);'; put 'vcassign=cats(vcassign,name,''='',rancol,'';'');'; put 'vcdrop=cats(vcdrop,''drop ''!!rancol,'';'');'; put 'if last then do;'; put 'vcrename=cats(vcrename,''))'');'; put 'call symputx(''vcfmt'',vcfmt);'; put 'call symputx(''vcrename'',vcrename);'; put 'call symputx(''vcassign'',vcassign);'; put 'call symputx(''vcdrop'',vcdrop);'; put 'end;'; put 'run;'; put '/* prepare a temp cas table with varchars casted */'; put '%let tmp=%mf_getuniquename();'; put 'data casuser.&tmp ;'; put '&vcfmt'; put 'set work.bitemp6_unique &vcrename;'; put '&vcassign'; put '&vcdrop'; put 'run;'; put '/* load the table with varchars applied*/'; put 'data &base_lib..&base_dsn (append=yes )/sessref=dcsession ;'; put 'set casuser.&tmp;'; put 'run;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&tmp;'; put '/* this code will not work as regular tables do not have varchars */'; put '/*'; put 'proc casutil;'; put 'load data=work.bitemp6_unique'; put 'outcaslib="&base_lib" casout="&base_dsn" append ;'; put 'quit;'; put '*/'; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put 'proc append base=&base_lib..&base_dsn'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=bitemp6_unique force nowarn;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&base_lib..&base_dsn data=bitemp6_unique force nowarn; run;'; put '%end;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '/* final check on syscc */'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=&_program'; put ',msg=%str(!!Upload NOT successful!! Failed on actual update / append stage..)'; put ')'; put '%if &outds_audit ne 0 and &LOADTARGET=YES %then %do;'; put 'data work.vw_outds_orig /view=work.vw_outds_orig;'; put 'set work.bitemp0_base (drop=&md5_col);'; put 'where ___TMP___NEW_FLG=0;'; put 'drop ___TMP___NEW_FLG;'; put 'run;'; put '/* update the AUDIT table */'; put '%if %mf_existds(&outds_audit) %then %do;'; put 'options mprint;'; put '%mp_storediffs(&base_lib..&base_dsn'; put ',work.vw_outds_orig'; put ',&pk'; put ',delds=&outds_del'; put ',modds=&outds_mod'; put ',appds=&outds_add'; put ',outds=work.mp_storediffs'; put ',processed_dttm=&now'; put ',loadref=%superq(etlsource)'; put ')'; put 'data _null_;'; put 'set work.mp_storediffs;'; put 'putlog load_ref= libref= dsn= key_hash= tgtvar_nm=;'; put 'run;'; put 'proc append base=&outds_audit data=work.mp_storediffs;'; put 'run;'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Problem in audit stage (&outds_audit))'; put ')'; put '%let user=%mf_getUser();'; put '/**'; put 'Notify as appropriate EMAILS DISABLED'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);'; put '*/'; put '/* monitor BiTemporal usage */'; put '%if &log=1 %then %do;'; put '%put syscc=&syscc;'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'insert into &dclib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&ETLSOURCE"'; put ',LOADTYPE="&loadtype"'; put ',CHANGED_RECORDS=%mf_getattrn(&lastds,NLOBS)'; put ',NEW_RECORDS=%mf_getattrn(&outds_add,NLOBS)'; put ',DELETED_RECORDS=%mf_getattrn(&outds_del,NLOBS)'; put ',DURATION=&dur'; put ',MAC_VER="v&ver"'; put ',user_nm="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%put syscc=&syscc;'; put '%end;'; put '%end_of_macro:'; put '%mend bitemporal_dataloader;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mpe_alerts(alert_event='; put ', alert_lib='; put ', alert_ds='; put ', dsid='; put ');'; put '/* exit if not configured */'; put '%global DC_EMAIL_ALERTS;'; put '%if &DC_EMAIL_ALERTS ne YES %then %do;'; put '%put DCNOTE: Email alerts are not configured;'; put '%put DCNOTE: (dc_email_alerts=&dc_email_alerts in &mpelib..mpe_config);'; put '%return;'; put '%end;'; put '%let alert_event=%upcase(&alert_event);'; put '%let alert_lib=%upcase(&alert_lib);'; put '%let alert_ds=%upcase(&alert_ds);'; put '%let from_user=%mf_getuser();'; put '/* get users TO which the email should be sent */'; put 'proc sql noprint;'; put 'create table users as select distinct a.alert_user,'; put 'b.user_displayname,'; put 'b.user_email'; put 'from &mpelib..mpe_alerts'; put '(where=(&dc_dttmtfmt. lt tx_to)) a'; put 'left join &mpelib..mpe_emails'; put '(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on upcase(trim(a.alert_user))=upcase(trim(b.user_name))'; put 'where a.alert_event in ("&alert_event","*ALL*")'; put 'and a.alert_lib in ("&alert_lib","*ALL*")'; put 'and a.alert_ds in ("&alert_ds","*ALL*");'; put '%local isThere;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere>0 %then %do;'; put 'insert into &syslast set alert_user="&from_user";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data emails;'; put 'set users;'; put 'length emailuri uri text $256; call missing(emailuri,uri); drop emailuri uri;'; put '/* get displayname */'; put 'text=cats("omsobj:Person?@Name=''",alert_user,"''");'; put 'if metadata_getnobj(text,1,uri)<=0 then do;'; put 'putlog "DCWARN: &from_user not found";'; put 'return;'; put 'end;'; put 'else if user_displayname = '''' then do;'; put 'if metadata_getattr(uri,''DisplayName'',user_displayname)<0 then do;'; put 'putlog ''DCWARN: strange err, no displayname attribute of user URI'';'; put 'end;'; put 'end;'; put 'if index(user_email,''@'') then return;'; put '/* get email from metadata if not in input table */'; put 'if metadata_getnasn(uri,"EmailAddresses",1,emailuri)<=0 then do;'; put 'putlog "DCWARN: " alert_user " has no emails in MPE_EMAILS or metadata!";'; put 'if metadata_getattr(emailuri,"Address",user_email)<0 then do;'; put 'putlog ''DCWARN: Unexpected error! Valid emailURI but no email. Weird.'';'; put 'end;'; put 'end;'; put '/* only keep valid emails */'; put 'if index(user_email,''@'') ;'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select user_email into: emails separated by ''" "'' from emails;'; put '/* exit if nobody to email */'; put '%if %mf_getattrn(emails,NLOBS)=0 %then %do;'; put '%put NOTE: No alerts configured (mpe_alerts.sas);'; put '%return;'; put '%end;'; put '/* display email options */'; put 'data _null_;'; put 'set sashelp.voption(where=(group=''EMAIL''));'; put 'put optname ''='' setting;'; put 'run;'; put 'filename __out email ("&emails")'; put 'subject="Table &alert_lib..&alert_ds has been &alert_event";'; put '%local SUBMITTED_TXT;'; put '%if &alert_event=SUBMITTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_submit;'; put 'where table_id="&dsid" and submit_status_cd=''SUBMITTED'';'; put 'call symputx(''SUBMITTED_TXT'',submitted_reason_txt,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been proposed by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''SUBMITTED_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=APPROVED %then %do;'; put '/* there is no approval message */'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been approved by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=REJECTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_review;'; put 'where table_id="&dsid" and review_status_id=''REJECTED'';'; put 'call symputx(''REVIEW_REASON_TXT'',REVIEW_REASON_TXT,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been rejected by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''REVIEW_REASON_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put 'filename __out clear;'; put '%mend mpe_alerts ;'; put '%macro dc_getservicecode(loc=,outref=);'; put '%mm_getstpcode(tree=&loc'; put ',outref=&outref'; put ')'; put '%mend dc_getservicecode;'; put '%macro mp_include(fileref'; put ',prefix=_'; put ',opts=SOURCE2'; put ',errds=work.mp_abort_errds'; put ')/*/STORE SOURCE*/;'; put '/* prepare precode */'; put '%local tempref;'; put '%let tempref=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &tempref;'; put 'set sashelp.vextfl(where=(fileref="%upcase(&fileref)"));'; put 'put ''%let _SYSINCLUDEFILEDEVICE='' xengine '';'';'; put 'name=scan(xpath,-1,''/\'');'; put 'put ''%let _SYSINCLUDEFILENAME='' name '';'';'; put 'path=subpad(xpath,1,length(xpath)-length(name)-1);'; put 'put ''%let _SYSINCLUDEFILEDIR='' path '';'';'; put 'put ''%let _SYSINCLUDEFILEFILEREF='' "&fileref;";'; put 'run;'; put '/* prepare the errds */'; put 'data &errds;'; put 'length msg mac $1000;'; put 'call missing(msg,mac);'; put 'iftrue=''1=0'';'; put 'run;'; put '/* include the include */'; put '%inc &tempref &fileref/&opts;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=%str(&_SYSINCLUDEFILEDIR/&_SYSINCLUDEFILENAME)'; put ',msg=%str(syscc=&syscc after executing &_SYSINCLUDEFILENAME)'; put ')'; put 'filename &tempref clear;'; put '%mend mp_include;'; put '%macro mpe_runhook(hookvar);'; put '%local pgmloc pgmtype;'; put '%let pgmtype=0;'; put '%put &sysmacroname: &=hookvar;'; put '%if %length(&&&hookvar)>0 %then %do;'; put '%put &sysmacroname: Executing &&&hookvar;'; put 'data _null_;'; put 'rule_value=symget("&hookvar");'; put 'if scan(upcase(rule_value),-1,''.'')=''SAS'' then do;'; put 'call symputx(''pgmtype'',''PGM'');'; put 'call symputx(''pgmloc'',rule_value);'; put 'end;'; put 'else do;'; put 'apploc="%mf_getapploc()";'; put 'if substr(rule_value,1,1) ne ''/'''; put 'then rule_value=cats(apploc,''/'',rule_value);'; put 'call symputx(''pgmloc'',rule_value);'; put 'call symputx(''pgmtype'',''JOB'');'; put 'end;'; put 'run;'; put '%if &pgmtype=PGM %then %do;'; put 'filename sascode "&pgmloc";'; put '%end;'; put '%else %do;'; put '%dc_getservicecode(loc=&pgmloc'; put ',outref=sascode'; put ')'; put '%end;'; put '/* the below script will need to modify work.STAGING_DS */'; put '%local x; %let x=; /* legacy feature */'; put '%mp_include(sascode)'; put '%end;'; put '%mend mpe_runhook;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'FMTNAME char(32) label=''Format name'''; put '/*'; put 'to accommodate larger START values, mp_loadformat.sas will need the'; put 'SQL dependency removed (proc sql needs to accommodate 3 index values in'; put 'a 32767 ibufsize limit)'; put '*/'; put ',START char(10000) label=''Starting value for format'''; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',TYPE char(1) label=''Type of format'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%mend mddl_sas_cntlout;'; put '%macro mp_cntlout('; put 'iftrue=(1=1)'; put ',libcat='; put ',cntlout=work.fmtextract'; put ',fmtlist=0'; put ')/*/STORE SOURCE*/;'; put '%local ddlds cntlds i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let ddlds=%mf_getuniquename();'; put '%let cntlds=%mf_getuniquename();'; put '%mddl_sas_cntlout(libds=&ddlds)'; put '%if %index(&libcat,-)>0 and %scan(&libcat,2,-)=FC %then %do;'; put '%let libcat=%scan(&libcat,1,-);'; put '%end;'; put 'proc format lib=&libcat cntlout=&cntlds;'; put '%if "&fmtlist" ne "0" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'if type="N" then do;'; put 'start=cats(start);'; put 'end=cats(end);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by fmtname start;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; put '%macro mp_loadformat(libcat,libds'; put ',loadtarget=NO'; put ',auditlibds=0'; put ',locklibds=0'; put ',delete_col=_____DELETE__THIS__RECORD_____'; put ',outds_add=0'; put ',outds_del=0'; put ',outds_mod=0'; put ',mdebug=0'; put ');'; put '/* set up local macro variables and temporary tables (with a prefix) */'; put '%local err msg prefix dslist i var fmtlist ibufsize;'; put '%let dslist=base_fmts template inlibds ds1 stagedata storediffs;'; put '%if &outds_add=0 %then %let dslist=&dslist outds_add;'; put '%if &outds_del=0 %then %let dslist=&dslist outds_del;'; put '%if &outds_mod=0 %then %let dslist=&dslist outds_mod;'; put '%let prefix=%substr(%mf_getuniquename(),1,21);'; put '%do i=1 %to %sysfunc(countw(&dslist));'; put '%let var=%scan(&dslist,&i);'; put '%local &var;'; put '%let &var=%upcase(&prefix._&var);'; put '%end;'; put '/*'; put 'format values can be up to 32767 wide. SQL joins on such a wide column can'; put 'cause buffer issues. Update ibufsize and reset at the end.'; put '*/'; put '%let ibufsize=%sysfunc(getoption(ibufsize));'; put 'options ibufsize=32767 ;'; put '/* in DC, format catalogs maybe specified in the libds with a -FC extension */'; put '%let libcat=%scan(&libcat,1,-);'; put '/* perform input validations */'; put '%let err=0;'; put '%let msg=0;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'value=upcase(value);'; put 'if &mdebug=0 then put name ''='' value;'; put 'if name=:''LOAD'' and value not in (''YES'',''NO'') then do;'; put 'call symputx(''msg'',"invalid value for "!!name!!":"!!value);'; put 'call symputx(''err'',1);'; put 'stop;'; put 'end;'; put 'else if name=''LIBCAT'' then do;'; put 'if exist(value,''CATALOG'') le 0 then do;'; put 'call symputx(''msg'',"Unable to open catalog: "!!value);'; put 'call symputx(''err'',1);'; put 'stop;'; put 'end;'; put 'end;'; put 'else if name=''LIBDS'' then do;'; put 'if exist(value) le 0 then do;'; put 'call symputx(''msg'',"Unable to open staging table: "!!value);'; put 'call symputx(''err'',1);'; put 'stop;'; put 'end;'; put 'end;'; put 'else if (name=:''OUTDS'' or name in (''DELETE_COL'',''LOCKLIBDS'',''AUDITLIBDS''))'; put 'and missing(value) then do;'; put 'call symputx(''msg'',"missing value in var: "!!name);'; put 'call symputx(''err'',1);'; put 'stop;'; put 'end;'; put 'run;'; put '%mp_abort('; put 'iftrue=(&err ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(&msg)'; put ')'; put '/**'; put '* First, extract only relevant formats from the catalog'; put '*/'; put 'proc sql noprint;'; put 'select distinct upcase(fmtname) into: fmtlist separated by '' '' from &libds;'; put '%mp_cntlout(libcat=&libcat,fmtlist=&fmtlist,cntlout=&base_fmts)'; put '/**'; put '* Ensure input table and base_formats have consistent lengths and types'; put '*/'; put '%mddl_sas_cntlout(libds=&template)'; put 'data &inlibds;'; put 'length &delete_col $3;'; put 'if 0 then set &template;'; put 'set &libds;'; put 'if &delete_col='''' then &delete_col=''No'';'; put 'fmtname=upcase(fmtname);'; put 'if missing(type) then do;'; put 'if substr(fmtname,1,1)=''$'' then type=''C'';'; put 'else type=''N'';'; put 'end;'; put 'if type=''N'' then do;'; put 'start=cats(start);'; put 'end=cats(end);'; put 'end;'; put 'run;'; put '/**'; put '* Identify new records'; put '*/'; put 'proc sql;'; put 'create table &outds_add(drop=&delete_col) as'; put 'select a.*'; put 'from &inlibds a'; put 'left join &base_fmts b'; put 'on a.fmtname=b.fmtname'; put 'and a.start=b.start'; put 'where b.fmtname is null'; put 'and upcase(a.&delete_col) ne "YES"'; put 'order by fmtname, start;;'; put '/**'; put '* Identify deleted records'; put '*/'; put 'create table &outds_del(drop=&delete_col) as'; put 'select a.*'; put 'from &inlibds a'; put 'inner join &base_fmts b'; put 'on a.fmtname=b.fmtname'; put 'and a.start=b.start'; put 'where upcase(a.&delete_col)="YES"'; put 'order by fmtname, start;'; put '/**'; put '* Identify modified records'; put '*/'; put 'create table &outds_mod (drop=&delete_col) as'; put 'select a.*'; put 'from &inlibds a'; put 'inner join &base_fmts b'; put 'on a.fmtname=b.fmtname'; put 'and a.start=b.start'; put 'where upcase(a.&delete_col) ne "YES"'; put 'order by fmtname, start;'; put 'options ibufsize=&ibufsize;'; put '%mp_abort('; put 'iftrue=(&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(SYSCC=&syscc prior to load prep)'; put ')'; put '%if &loadtarget=YES %then %do;'; put 'data &ds1;'; put 'merge &base_fmts(in=base)'; put '&outds_mod(in=mod)'; put '&outds_add(in=add)'; put '&outds_del(in=del);'; put 'if not del and not mod;'; put 'by fmtname start;'; put 'run;'; put 'data &stagedata;'; put 'set &ds1 &outds_mod;'; put 'run;'; put 'proc sort;'; put 'by fmtname start;'; put 'run;'; put '%end;'; put '/* mp abort needs to run outside of conditional blocks */'; put '%mp_abort('; put 'iftrue=(&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(SYSCC=&syscc prior to actual load)'; put ')'; put '%if &loadtarget=YES %then %do;'; put '%if %mf_nobs(&stagedata)=0 %then %do;'; put '%put There are no changes to load in &libcat!;'; put '%return;'; put '%end;'; put '%if &locklibds ne 0 %then %do;'; put '/* prevent parallel updates */'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&libcat,1,.)'; put ',ds=%scan(&libcat,2,.)-FC'; put ',ref=MP_LOADFORMAT commencing format load'; put ',ctl_ds=&locklibds'; put ')'; put '%end;'; put '/* do the actual load */'; put 'proc format lib=&libcat cntlin=&stagedata;'; put 'run;'; put '%if &locklibds ne 0 %then %do;'; put '/* unlock the table */'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&libcat,1,.)'; put ',ds=%scan(&libcat,2,.)-FC'; put ',ref=MP_LOADFORMAT completed format load'; put ',ctl_ds=&locklibds'; put ')'; put '%end;'; put '/* track the changes */'; put '%if &auditlibds ne 0 %then %do;'; put '%if &locklibds ne 0 %then %do;'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&auditlibds,1,.)'; put ',ds=%scan(&auditlibds,2,.)'; put ',ref=MP_LOADFORMAT commencing audit table load'; put ',ctl_ds=&locklibds'; put ')'; put '%end;'; put '%mp_storediffs(&libcat-FC'; put ',&base_fmts'; put ',FMTNAME START'; put ',delds=&outds_del'; put ',modds=&outds_mod'; put ',appds=&outds_add'; put ',outds=&storediffs'; put ',mdebug=&mdebug'; put ')'; put 'proc append base=&auditlibds data=&storediffs;'; put 'run;'; put '%if &locklibds ne 0 %then %do;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&auditlibds,1,.)'; put ',ds=%scan(&auditlibds,2,.)'; put ',ref=MP_LOADFORMAT commencing audit table load'; put ',ctl_ds=&locklibds'; put ')'; put '%end;'; put '%end;'; put '%end;'; put '%mp_abort('; put 'iftrue=(&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(SYSCC=&syscc after load)'; put ')'; put '%if &mdebug=0 %then %do;'; put 'proc datasets lib=work;'; put 'delete &prefix:;'; put 'run;'; put '%put &sysmacroname exit vars:;'; put '%put _local_;'; put '%end;'; put '%mend mp_loadformat;'; put '%macro mpe_targetloader(libds= /* library.dataset to LOAD (target) */'; put ',now= %sysfunc(datetime()) /* static processed timestamp */'; put ',etlsource= /* process from whence the data came */'; put ',STAGING_DS= STAGING_DS /* name of staging (work) dataset which should'; put 'be appended into the target. */'; put ',LOADTARGET=NO /* set to yes to actually load the target */'; put ',CLOSE_VARS= /* provide close vars to override defaults */'; put ',dclib=NOTPROVIDED'; put ',mdebug=0'; put ',dc_dttmtfmt=E8601DT26.6'; put ');'; put '%local lib ds nobs;'; put '/**'; put '* if a format catalog (suffix "-FC") we assume the catalog has already been'; put '* created by the calling program with a libds of work.fmtextract'; put '*/'; put '%let orig_lib=%upcase(%scan(&libds,1,.));'; put '%let orig_ds=%upcase(%scan(&libds,2,.));'; put '%let orig_libds=&libds;'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%let lib=WORK;'; put '%let ds=FMTEXTRACT;'; put '%let libds=&lib..&ds;'; put '%end;'; put '%else %do;'; put '%let lib=&orig_lib;'; put '%let ds=&orig_ds;'; put '%end;'; put '%mp_abort(iftrue= (&dclib=NOTPROVIDED)'; put ',mac=&sysmacroname'; put ',msg=%str(dclib=NOTPROVIDED)'; put ')'; put '/* get table attributes */'; put '%let nobs=0;'; put 'data work.sumo_config;'; put 'set &mpelib..mpe_tables;'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and libref="&orig_lib"'; put 'and dsn="&orig_ds";'; put 'call symputx(''LOADTYPE'',loadtype,''l'');'; put 'call symputx(''BUSKEY'',buskey,''l'');'; put 'call symputx(''VAR_TXFROM'',var_txfrom,''l'');'; put 'call symputx(''VAR_TXTO'',var_txto,''l'');'; put 'call symputx(''VAR_BUSFROM'',var_busfrom,''l'');'; put 'call symputx(''VAR_BUSTO'',var_busto,''l'');'; put 'call symputx(''VAR_PROCESSED'',VAR_PROCESSED,''l'');'; put 'call symputx(''RK_UNDERLYING'',RK_UNDERLYING,''l'');'; put '%if %length(&CLOSE_VARS)=0 %then %do;'; put 'call symputx(''CLOSE_VARS'',CLOSE_VARS,''l'');'; put '%end;'; put 'call symputx(''nobs'',_n_,''l'');'; put 'if missing(AUDIT_LIBDS) then AUDIT_LIBDS="&dclib..MPE_AUDIT";'; put 'call symputx(''AUDIT_LIBDS'',AUDIT_LIBDS,''l'');'; put 'put (_all_)(=);'; put 'run;'; put '/* check if table is actually configured to load */'; put '%if &nobs ne 1 %then %do;'; put 'proc sql;'; put 'insert into &mpelib..mpe_loads'; put 'set USER_NM="%mf_getuser()"'; put ',STATUS=''FAILED (BAD DS)'''; put ',CSV_DIR=symget(''ETLSOURCE'')'; put ',PROCESSED_DTTM=&now;'; put '%end;'; put '%mp_abort(iftrue= (&nobs=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Table not registered in &mpelib..mpe_tables)'; put ')'; put '%mp_abort(iftrue= (&nobs>1)'; put ',mac=&sysmacroname'; put ',msg=%str(Something is very wrong with the PK in &mpelib..mpe_tables)'; put ')'; put '%if &LOADTYPE=TXTEMPORAL %then %do;'; put '%bitemporal_dataloader(bus_from=,bus_to= /* explicitly empty*/'; put ',tech_from=&VAR_TXFROM'; put ',tech_to = &VAR_TXTO'; put ',base_lib=&lib'; put ',base_dsn=&ds'; put ',append_lib=WORK'; put ',append_dsn=&STAGING_DS'; put ',high_date=''31DEC9999:23:59:59''dt'; put ',PK= &buskey'; put ',ETLSOURCE=&ETLSOURCE'; put ',LOADTYPE=&loadtype'; put ',RK_UNDERLYING=&RK_UNDERLYING'; put ',LOADTARGET=&LOADTARGET'; put ',RK_UPDATE_MAXKEYTABLE=&LOADTARGET'; put ',CLOSE_VARS=&CLOSE_VARS'; put ',processed=&VAR_PROCESSED'; put ',dclib=&dclib'; put ',outds_audit=&AUDIT_LIBDS'; put ')'; put '%end;'; put '%else %if &loadtype=REPLACE %then %do;'; put '%if &LOADTARGET=YES %then %do;'; put '%mp_lockanytable(LOCK,lib=&lib,ds=&ds,ref=%str(&etlsource),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put 'data WORK.&STAGING_DS;'; put 'set WORK.&STAGING_DS;'; put '%if %mf_existvar(&libds,&VAR_PROCESSED) %then %do;'; put '&VAR_PROCESSED = &now;'; put '%end;'; put 'drop _____DELETE__THIS__RECORD_____;'; put 'run;'; put 'proc sql; delete * from &libds;'; put 'proc append base=&libds data=WORK.&STAGING_DS force nowarn;run;'; put '%mp_lockanytable(UNLOCK,lib=&lib,ds=&ds,ctl_ds=&dclib..mpe_lockanytable)'; put '%end;'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '%bitemporal_dataloader(bus_from=,bus_to='; put ',tech_from= ,tech_to = /* explicitly empty*/'; put ',base_lib=&lib'; put ',base_dsn=&ds'; put ',append_lib=WORK'; put ',append_dsn=&STAGING_DS'; put ',high_date=''31DEC9999:23:59:59''dt'; put ',PK= &buskey'; put ',ETLSOURCE=%superq(etlsource)'; put ',LOADTYPE=UPDATE'; put ',RK_UNDERLYING=&RK_UNDERLYING'; put ',LOADTARGET=&LOADTARGET'; put ',RK_UPDATE_MAXKEYTABLE=&LOADTARGET'; put ',processed=&VAR_PROCESSED'; put ',dclib=&dclib'; put ',outds_audit=&AUDIT_LIBDS'; put ')'; put '%end;'; put '%else %if &loadtype=FORMAT_CAT %then %do;'; put '/**'; put '* run mp_formatload'; put '* inputs:'; put '* - LOADTARGET'; put '* - CATALOG'; put '* - STAGEDATA'; put '* - LOADAUDIT'; put '* outputs:'; put '* work.outds_add'; put '* work.outds_del'; put '* work.outds_mod'; put '*/'; put '%mp_loadformat(&orig_libds'; put ',&staging_ds'; put ',loadtarget=&LOADTARGET'; put ',auditlibds=&AUDIT_LIBDS'; put ',locklibds=&dclib..mpe_lockanytable'; put ',delete_col=_____DELETE__THIS__RECORD_____'; put ',outds_add=outds_add'; put ',outds_del=outds_del'; put ',outds_mod=outds_mod'; put ',mdebug=&mdebug'; put ')'; put '%end;'; put '%else %if &loadtype=BITEMPORAL %then %do;'; put '%bitemporal_dataloader(bus_from=&VAR_BUSFROM,bus_to=&VAR_BUSTO'; put ',tech_from=&VAR_TXFROM'; put ',tech_to = &VAR_TXTO'; put ',base_lib=&lib'; put ',base_dsn=&ds'; put ',append_lib=WORK'; put ',append_dsn=&STAGING_DS'; put ',high_date=''31DEC9999:23:59:59''dt'; put ',PK= &buskey'; put ',ETLSOURCE=%superq(etlsource)'; put ',LOADTYPE=BITEMPORAL'; put ',RK_UNDERLYING=&RK_UNDERLYING'; put ',LOADTARGET=&LOADTARGET'; put ',RK_UPDATE_MAXKEYTABLE=&LOADTARGET'; put ',CLOSE_VARS=&CLOSE_VARS'; put ',processed=&VAR_PROCESSED'; put ',dclib=&dclib'; put ',outds_audit=&AUDIT_LIBDS'; put ')'; put '%end;'; put '%else %do;'; put '%put WARNING: LOADTYPE &LOADTYPE not supported;'; put '%let syscc=4;'; put '%mp_abort(msg=LOADTYPE &LOADTYPE not supported,mac=mpe_targetloader.sas)'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc exiting MPE_TARGETLOADER macro)'; put ')'; put '%mend mpe_targetloader;'; put '%macro removecolsfromwork(col);'; put '/* only an issue if debug mode enabled */'; put '%global _debug;'; put '%if &_debug ge 131 %then %do;'; put '%let col=%upcase(&col);'; put '%local memlist;'; put 'proc sql noprint;'; put 'select distinct memname into: memlist'; put 'separated by '' '''; put 'from dictionary.columns'; put 'where libname=''WORK'' and upcase(name)="&col";'; put '%if %mf_isblank(&memlist) %then %return;'; put '%mp_dropmembers(list=&memlist)'; put '%end;'; put '%mend removecolsfromwork;'; put '%macro mf_getuniquelibref(prefix=mclib,maxtries=1000);'; put '%local x;'; put '%if ( %length(&prefix) gt 7 ) %then %do;'; put '%put %str(ERR)OR: The prefix parameter cannot exceed 7 characters.;'; put '0'; put '%return;'; put '%end;'; put '%else %if (%sysfunc(NVALID(&prefix,v7))=0) %then %do;'; put '%put %str(ERR)OR: Invalid prefix (&prefix);'; put '0'; put '%return;'; put '%end;'; put '/* Set maxtries equal to ''10 to the power of [# unused characters] - 1'' */'; put '%let maxtries=%eval(10**(8-%length(&prefix))-1);'; put '%do x = 0 %to &maxtries;'; put '%if %sysfunc(libref(&prefix&x)) ne 0 %then %do;'; put '&prefix&x'; put '%return;'; put '%end;'; put '%let x = %eval(&x + 1);'; put '%end;'; put '%put %str(ERR)OR: No usable libref in range &prefix.0-&maxtries;'; put '%put %str(ERR)OR- Try reducing the prefix or deleting some libraries!;'; put '0'; put '%mend mf_getuniquelibref;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file postdata.sas'; put '@brief Either returns the file diffs or actually loads the data to target'; put '@details Before loading the target, a check is made against the time the'; put 'target was last updated (backend) and the time the DIFF was generated'; put '(frontend). If the target was updated whilst the DIFF was on the screen,'; put 'then the provided diff may have been incorrect and so a new DIFF should be'; put 'generated and approved before load.'; put 'Only 100 rows (of each DIFF type) are displayed on the DIFF screen.'; put '

Service Inputs

'; put '
SASCONTROLTABLE
'; put '|ACTION:$char10.|TABLE:$char32.|DIFFTIME:$char29.|'; put '|---|---|---|'; put '|SHOW_DIFFS|DC20220208T142124517_124703_1184|"Tue, 08 Feb 2022 14:23:05 GMT"|'; put '

SAS Macros

'; put '@li bitemporal_dataloader.sas'; put '@li dc_assignlib.sas'; put '@li mf_existds.sas'; put '@li mf_existvar.sas'; put '@li mf_getattrn.sas'; put '@li mf_getengine.sas'; put '@li mf_getquotedstr.sas'; put '@li mf_getuniquelibref.sas'; put '@li mf_getuser.sas'; put '@li mf_getvarlist.sas'; put '@li mf_nobs.sas'; put '@li mf_verifymacvars.sas'; put '@li mp_abort.sas'; put '@li mp_cntlout.sas'; put '@li mp_lockanytable.sas'; put '@li mpe_accesscheck.sas'; put '@li mpe_alerts.sas'; put '@li mpe_runhook.sas'; put '@li mpe_targetloader.sas'; put '@li removecolsfromwork.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '/* this could be a config setting if required */'; put '%let maxdiff=100;'; put '%mpeinit()'; put '/* load parameters */'; put 'data _null_;'; put 'set work.sascontroltable;'; put 'call symputx(''ACTION'',ACTION);'; put 'call symputx(''TABLE'',TABLE);'; put '/* DIFFTIME is when the DIFF was generated on the frontend */'; put 'call symputx(''DIFFTIME'',DIFFTIME);'; put 'run;'; put '%global action is_err err_msg;'; put '%let is_err=0;'; put '%let user=%mf_getuser();'; put '%let sastime=%sysfunc(datetime());'; put 'data sastime;'; put 'dt_sastime=&sastime;'; put 'run;'; put 'PROC FORMAT;'; put 'picture yymmddhhmmss other=''%0Y-%0m-%0d %0H:%0M:%0S'' (datatype=datetime);'; put 'picture flatdate other=''%0Y%0m%0d_%0H%0M%0S'' (datatype=datetime);'; put 'RUN;'; put '/* SHOW_DIFFS works by getting the temp tables from the bitemporal loader */'; put '/* so we share much of the logic from the actual load process */'; put '%let isfmtcat=0;'; put 'data APPROVE1;'; put 'set &mpelib..mpe_submit;'; put 'where TABLE_ID="&TABLE";'; put '/* fetch mpe_submit data */'; put 'libds=cats(base_lib,''.'',base_ds);'; put 'REVIEWED_ON=put(reviewed_on_dttm,datetime19.);'; put 'call symputx(''REVIEW_STATUS_ID'',submit_status_cd,''l'');'; put 'call symputx(''NUM_OF_APPROVALS_REQUIRED'',NUM_OF_APPROVALS_REQUIRED);'; put 'call symputx(''num_of_approvals_remaining'',num_of_approvals_remaining);'; put '/* other stuff that''s useful to do in data step */'; put 'call symputx(''orig_libds'',libds);'; put 'call symputx(''libds'',libds);'; put 'if substr(cats(reverse(libds)),1,3)=:''CF-'' then do;'; put 'libds=scan(libds,1,''-'');'; put 'putlog "Format Catalog Captured";'; put 'call symputx(''isfmtcat'',1);'; put 'libds=''work.fmtextract'';'; put 'call symputx(''libds'',libds);'; put 'end;'; put 'putlog (_all_)(=);'; put '/* convert provided string DIFFTIME back to a numeric SAS datetime */'; put 'if "&action" ne "SHOW_DIFFS" then do;'; put 'call symputx(''DIFFTIME'',input(symget(''DIFFTIME''),anydtdtm18.));'; put 'end;'; put 'length difftime $32;'; put 'DIFFTIME=put(&sastime,datetime19.2);'; put 'run;'; put '%mp_cntlout('; put 'iftrue=(&isfmtcat=1)'; put ',libcat=&orig_libds'; put ',fmtlist=0'; put ',cntlout=work.fmtextract'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(difftime orig_libds libds table)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: difftime orig_libds libds table)'; put ')'; put '/* security checks */'; put '%mpe_accesscheck(&orig_libds,outds=authEDIT,user=&user,access_level=EDIT)'; put '%mpe_accesscheck(&orig_libds,outds=authAPP,user=&user,access_level=APPROVE)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc Before entering postdata macro)'; put ')'; put '%mp_abort('; put 'iftrue=('; put '%mf_getattrn(work.authEDIT,NLOBS)=0 & %mf_getattrn(work.authAPP,NLOBS)=0'; put ')'; put ',mac=&_program'; put ',msg=%str(&user not authorised to view approval screen for &orig_libds)'; put ')'; put '%macro quickmacro(inds,outds);'; put 'data &outds ;'; put '%if %length(&VAR_BUSFROM)>0 %then %do;'; put 'format &VAR_BUSFROM &VAR_BUSTO yymmddhhmmss.;'; put '%end;'; put 'if 0 then set &emptybasetable;'; put 'set &inds;'; put '%if %mf_existvar(&libds,&var_txfrom) %then %do;'; put 'drop &var_txfrom &var_txto;'; put '%end;'; put '%if %mf_existvar(&inds,_____DELETE__THIS__RECORD_____) %then %do;'; put 'drop _____DELETE__THIS__RECORD_____;'; put '%end;'; put '%if %mf_existvar(&inds,&VAR_PROCESSED) %then %do;'; put 'drop &VAR_PROCESSED;'; put '%end;'; put 'run;'; put '%mend quickmacro;'; put '%macro postdata();'; put '%if %quote(&REVIEW_STATUS_ID)=%quote(REJECTED)'; put 'or %quote(&REVIEW_STATUS_ID)=%quote(APPROVED) %then'; put '%do;'; put 'data params; set approve1; run;'; put '%webout(OPEN)'; put '%webout(OBJ,PARAMS)'; put '%webout(CLOSE)'; put '%return;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%if &action=APPROVE_TABLE %then %do;'; put '/* check user is authorised to approve table */'; put '/* user could be an editor but not an approver */'; put '%mp_abort(iftrue= (%mf_getattrn(work.authAPP,NLOBS)=0)'; put ',mac=&_program'; put ',msg=%str(&user may not APPROVE changes)'; put ')'; put '/* see if this user has already submitted an approval */'; put '%let prev_upload_check=1;'; put 'proc sql;'; put 'select count(*) into: prev_upload_check from &mpelib..mpe_review'; put 'where TABLE_ID="&TABLE" and REVIEWED_BY_NM="&user"'; put 'and REVIEW_STATUS_ID ne "SUBMITTED";'; put '%let authcheck=%mf_getattrn(work.authAPP,NLOBS);'; put '%if &authcheck=0 or &prev_upload_check=1 %then %do;'; put '%put WARNING: authcheck=&authcheck prev_upload_check=&prev_upload_check;'; put 'data apPARAMS;'; put 'AUTHORISED=&authcheck;'; put 'PREV_UPLOAD_CHECK=&prev_upload_check;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,apPARAMS);'; put '%webout(CLOSE)'; put '%return;'; put '%end;'; put '/* now check if table has been updated since DIFF screen shown */'; put '%local fmt_tm usernm last_load etlsource;'; put '%let last_load=0;'; put 'proc sql noprint;'; put 'select max(processed_dttm) format=16.2 into: last_load'; put 'from &mpelib..mpe_dataloads'; put 'where libref="%scan(&orig_libds,1,.)" and dsn="%scan(&orig_libds,2,.)";'; put 'select processed_dttm format=datetime19., user_nm, etlsource'; put 'into: fmt_tm, :usernm, :etlsource'; put 'from &mpelib..mpe_dataloads'; put 'where libref="%scan(&orig_libds,1,.)" and dsn="%scan(&orig_libds,2,.)"'; put 'and processed_dttm=&last_load;'; put '%put TIMECHECK: &last_load>&difftime;'; put '%if %sysevalf(&last_load>&difftime,boolean)=1 %then %do;'; put '%let is_err=1;'; put '%let err_msg=&orig_libds was updated in batch %trim(&etlsource'; put ') by %trim(&usernm) on &fmt_tm - please refresh the page!!;'; put '%return;'; put '%end;'; put '%if &syscc ne 0 %then %do;'; put '%let is_err=1;'; put '%let err_msg=syscc=&syscc before logchange;'; put '%return;'; put '%end;'; put '/* upload about to commence so ensure logs */'; put 'options notes mprint source2;'; put '%local oldloc;'; put '%if %symexist(SYSPRINTTOLOG) %then %let oldloc=&SYSPRINTTOLOG;'; put '%else %let oldloc=%qsysfunc(getoption(LOG));'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto'; put 'log="&mpelocapprovals/&TABLE/approval.log";'; put 'run;'; put 'data _null_;'; put 'if _n_=1 then do;'; put 'length oldloc $1000;'; put 'oldloc=symget(''oldloc'');'; put 'putlog "****** redirected:" oldloc " *****";'; put 'end;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc printto'; put 'log="&mpelocapprovals/&TABLE/approval.log";'; put 'run;'; put '%end;'; put '%if &syscc ne 0 %then %do;'; put '%let is_err=1;'; put '%let err_msg=syscc=&syscc after logchange;'; put '%return;'; put '%end;'; put '%end;'; put '/**'; put '* upload the actual table'; put '*/'; put '%local libref ds;'; put '%let libref=%scan(&orig_libds,1,.);'; put '%let ds=%scan(&orig_libds,2,.);'; put 'proc sql noprint;'; put 'select PRE_APPROVE_HOOK, POST_APPROVE_HOOK, LOADTYPE, var_txfrom, var_txto'; put ',BUSKEY, VAR_BUSFROM, VAR_BUSTO'; put ',AUDIT_LIBDS, NOTES, coalesce(NUM_OF_APPROVALS_REQUIRED,1)'; put ',VAR_PROCESSED'; put 'into: PRE_APPROVE_HOOK, :POST_APPROVE_HOOK, :LOADTYPE,:var_txfrom,:var_txto'; put ',:BUSKEY,:VAR_BUSFROM,:VAR_BUSTO'; put ',:AUDIT_LIBDS, :TABLE_DESC, :NUM_OF_APPROVALS_REQUIRED_TOT'; put ',:VAR_PROCESSED'; put 'from &mpelib..mpe_tables'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and libref="&libref"'; put 'and dsn="&ds";'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(mpelocapprovals orig_libds)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: mpelocapprovals orig_libds)'; put ')'; put '/* get dataset from approvals location */'; put '%let tmplib=%mf_getuniquelibref();'; put 'libname &tmplib "&mpelocapprovals/&TABLE";'; put 'data STAGING_DS;'; put 'set &tmplib..&TABLE;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc before preapprove)'; put ')'; put '%dc_assignlib(WRITE,&libref)'; put '/* run pre-approve hook if approving */'; put '%mpe_runhook(PRE_APPROVE_HOOK)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc after preapprove)'; put ')'; put '%if &num_of_approvals_remaining>1 and &action=APPROVE_TABLE %then %do;'; put '/* append to mpe_review table */'; put '%let apprno=%eval(&num_of_approvals_required-&num_of_approvals_remaining+1);'; put 'data work.append_review;'; put 'if 0 then set &mpelib..mpe_review;'; put 'TABLE_ID="&TABLE";'; put 'BASE_TABLE="&orig_libds";'; put 'REVIEW_STATUS_ID="APPROVED";'; put 'REVIEWED_BY_NM="&user";'; put 'REVIEWED_ON_DTTM=&sastime;'; put 'REVIEW_REASON_TXT="APPROVAL &apprno of &num_of_approvals_required";'; put 'output;'; put 'stop;'; put 'run;'; put '%mp_lockanytable(LOCK,'; put 'lib=&mpelib,ds=mpe_review,ref=%str(&table Approval),'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'proc append base=&mpelib..mpe_review data=work.append_review;'; put 'run;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&mpelib,ds=mpe_review,'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put '/* update mpe_submit table */'; put '%mp_lockanytable(LOCK,'; put 'lib=&mpelib,ds=mpe_submit,ref=%str(&table Approval),'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'proc sql;'; put 'update &mpelib..mpe_submit'; put 'set num_of_approvals_remaining=&num_of_approvals_remaining-1,'; put 'reviewed_by_nm="&user",'; put 'reviewed_on_dttm=&sastime'; put 'where table_id="&table";'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&mpelib,ds=mpe_submit,'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'data apReqd;'; put 'AUTHORISED=1;'; put 'ALREADY_UPDATED=0;'; put 'ALREADY_UPDATED_DTTM=.;'; put 'set approve1; /* js will test for NUM_OF_APPROVALS_REQUIRED */'; put 'run;'; put '%removecolsfromwork(___TMP___MD5)'; put '%webout(OPEN)'; put '%webout(OBJ,apReqd);'; put '%webout(CLOSE)'; put '%return;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc entering TARGETLOADER)'; put ')'; put '%mpe_targetloader(libds=&orig_libds'; put ',now= &sastime'; put ',etlsource=&TABLE'; put ',STAGING_DS=STAGING_DS'; put ',dclib=&mpelib'; put '%if &action=APPROVE_TABLE %then %do;'; put ',LOADTARGET=YES'; put '%end;'; put '%else %do;'; put ',LOADTARGET=NO'; put '%end;'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%if %mf_getattrn(STAGING_DS,NLOBS)=0 %then %do;'; put '/* empty dataset! */'; put 'data out;'; put 'set STAGING_DS;'; put 'run;'; put '%return;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc entering SHOWDIFFS)'; put ')'; put '%if &action=SHOW_DIFFS %then %do;'; put '/**'; put '* Now prepare the SHOW DIFFS (approve) screen'; put '*/'; put '/*To create the CURRENT diffs, we compare with the ACTUAL data. But first'; put 'need to find out what version TIME to query it for.. */'; put 'proc sql noprint;'; put 'select max(processed_dttm)-1 format=datetime19. into: tstamp'; put 'from &mpelib..mpe_dataloads'; put 'where libref="&libref" and dsn="&ds" and ETLSOURCE="&TABLE";'; put 'quit;'; put '%if &tstamp=. %then %let tstamp=%sysfunc(datetime(),datetime19.);'; put '/**'; put '* now create the DIFFS dataset'; put '* If using a database, then utilise pass through!'; put '* Create a temporary table inside the database for joins..'; put '*/'; put 'options mprint;'; put '%let engine_type=%mf_getEngine(%scan(&libds,1,.));'; put '%put &libds engine type = &engine_type;'; put '%local inner_table ;'; put '%if &engine_type=OLEDB %then %do;'; put '/* generate a unique ID for the temporary table */'; put 'data _null_;'; put 'call symputx(''UNIQUE_REF'''; put ',cats(round(datetime(),1)'; put ',''_'''; put ',round(ranuni(0)*100000,1)'; put ')'; put ',''l'''; put ');'; put 'run;'; put '%let inner_table=&libref.."##DIFF_&UNIQUE_REF"n;'; put 'proc sql;'; put 'create table &inner_table as'; put 'select * from work.outds_mod;'; put '%end;'; put '%else %let inner_table=work.outds_mod;'; put 'proc sql;'; put 'create view work.originals2 as'; put 'select b.*'; put 'from &inner_table a'; put 'inner join &libds'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '(where=("&tstamp"dt < &VAR_TXTO))'; put '%end;'; put 'b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&buskey));'; put '%let idx_val=%scan(&buskey,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by %mf_getquotedstr(in_str=&buskey,dlm=%str(,),quote=)'; put ';'; put 'create view bitemp5c_updates2 as'; put 'select * from work.outds_mod'; put 'order by %mf_getquotedstr(in_str=&buskey,dlm=%str(,),quote=)'; put ';'; put 'data; set &libds;stop;run;'; put '%let emptybasetable=&syslast;'; put 'options varlenchk=nowarn; /* for small numerics (<8) */'; put '%quickmacro(work.outds_del,deleted)'; put '%quickmacro(work.outds_add,new)'; put '%quickmacro(bitemp5c_updates2,updates)'; put '%quickmacro(originals2,originals)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc in quickmacro)'; put ')'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=work.updates'; put 'out=cols (keep=name type length varnum format);'; put 'run;'; put 'proc sort data=cols out=cols(drop=varnum); by varnum;run;'; put 'data cols; set cols; name=upcase(name);run;'; put '%let tempDIFFS_CSV=tempDiffs_%trim('; put '%sysfunc(datetime(),flatdate.)).csv;'; put '/**'; put '* Store temp tables so we have a record of diffs'; put '* do not change this libname or table name as it is used in some'; put '* post approve hooks'; put '*/'; put 'data TEMPDIFFS (compress=no) /* for realistic file size */;'; put 'length _____status $10;'; put 'set work.deleted (in=_____del)'; put 'work.new(in=_____new)'; put 'work.updates (in=_____upd)'; put 'work.originals2 (in=_____orig);'; put 'if _____del then _____status=''DELETED '';'; put 'else if _____new then _____status=''NEW'';'; put 'else if _____upd then _____status=''UPDATED'';'; put 'else if _____orig then _____status=''ORIGINAL'';'; put 'run;'; put 'proc export data=TEMPDIFFS dbms=csv replace'; put 'outfile="&mpelocapprovals/&TABLE/&tempDIFFS_CSV" ;'; put 'run;'; put 'proc sql noprint;'; put 'select filesize format=sizekmg10.1, filesize as filesize_raw'; put 'into: filesize,:filesize_raw'; put 'from dictionary.tables'; put 'where libname=''WORK'' and memtype=''DATA'' and memname=''TEMPDIFFS'';'; put 'data params;'; put 'set approve1;'; put 'DIFFS_CSV="&tempDIFFS_CSV";'; put 'FILESIZE="&filesize";'; put 'FILESIZE_RAW=&filesize_raw;'; put 'if %mf_nobs(work.originals)>&maxdiff'; put 'or %mf_nobs(work.new)>&maxdiff'; put 'or %mf_nobs(work.deleted)>&maxdiff'; put 'or %mf_nobs(work.updates)>&maxdiff'; put 'then TRUNCATED="YES";'; put 'else TRUNCATED="NO";'; put 'NUM_ADDED=%mf_getattrn(work.new,NLOBS);'; put 'NUM_DELETED=%mf_getattrn(work.deleted,NLOBS);'; put 'NUM_UPDATED=%mf_getattrn(work.updates,NLOBS);'; put 'SUBMITTED_ON=put(submitted_on_dttm,datetime19.);'; put '%if %mf_getattrn(work.authAPP,NLOBS)>0 %then %do;'; put 'ISAPPROVER=''YES'';'; put '%end;'; put '%else %do;'; put 'ISAPPROVER=''NO'';'; put '%end;'; put 'run;'; put '/*'; put '* The PRE_APPROVE_HOOK may have applied custom formats to the staged table.'; put '* To ensure consistency in the DIFF screen, we should apply the same formats'; put '* to the base table. Limit rows at the same time.'; put '*/'; put 'data work.originals;'; put 'if 0 then set deleted new updates;'; put 'set work.originals;'; put 'if _n_>&maxdiff then stop;'; put 'run;'; put '/* get additional submits against the same base table */'; put 'proc sort data=&mpelib..mpe_submit(where=('; put 'submit_status_cd=''SUBMITTED'''; put 'and cats(base_lib,''.'',base_ds)="&orig_libds"'; put 'and table_id ne "&TABLE"'; put ')) out=submits;'; put 'by descending submitted_on_dttm;'; put 'run;'; put '/* filter last 10 */'; put 'data submits;'; put 'set submits;'; put 'if _n_>10 then stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc SHOWDIFFS prior to streamout)'; put ')'; put '%removecolsfromwork(___TMP___MD5)'; put '%webout(OPEN)'; put '%webout(OBJ,params)'; put '%webout(OBJ,cols)'; put '%webout(OBJ,submits)'; put '%webout(OBJ,deleted,fmt=N,missing=STRING,maxobs=&maxdiff)'; put '%webout(OBJ,new,fmt=N,missing=STRING,maxobs=&maxdiff)'; put '%webout(OBJ,updates,fmt=N,missing=STRING,maxobs=&maxdiff)'; put '%webout(OBJ,ORIGINALS,fmt=N,missing=STRING)'; put '/* need same for formatted view */'; put '%webout(OBJ,deleted,dslabel=fmt_deleted,fmt=Y,missing=STRING,maxobs=&maxdiff)'; put '%webout(OBJ,new,dslabel=fmt_new,fmt=Y,missing=STRING,maxobs=&maxdiff)'; put '%webout(OBJ,updates,dslabel=fmt_updates,fmt=Y,missing=STRING,maxobs=&maxdiff)'; put '%webout(OBJ,originals,dslabel=fmt_ORIGINALS,fmt=Y,missing=STRING)'; put '%webout(CLOSE)'; put '%if &engine_type=OLEDB %then %do;'; put 'proc sql; /* needs to be dropped AFTER view execution */'; put 'drop table &inner_table;'; put '%end;'; put '%return;'; put '%end;'; put '%if &action=APPROVE_TABLE %then %do;'; put '%approve:'; put '/**'; put '* store temp tables so we have a record of diffs'; put '* do not change this libname or table name as it is used in some'; put '* post approve hooks'; put '* for REPLACE loads, temp tables not made, so make them'; put '*/'; put '%if &LOADTYPE=REPLACE %then %do;'; put 'data work.outds_add; run;'; put 'data work.outds_mod; run;'; put '%end;'; put 'libname approve "&mpelocapprovals/&TABLE";'; put 'data; set &libds;stop;run;'; put '%let emptybasetable=&syslast;'; put 'data approve.ActualDiffs;'; put 'length _____STATUS_____ $10;'; put 'if 0 then set &emptybasetable;'; put 'set work.outds_del (in=_____del)'; put 'work.outds_add (in=_____new)'; put 'work.outds_mod (in=_____upd);'; put 'if _____del then _____STATUS_____=''DELETED'';'; put 'else if _____new then _____STATUS_____=''NEW'';'; put 'else if _____upd then _____STATUS_____=''UPDATED'';'; put '%if %mf_existvar(&libds,&var_txfrom) %then %do;'; put 'drop &var_txfrom &var_txto;'; put '%end;'; put '%if %mf_existvar(&libds,&VAR_PROCESSED) %then %do;'; put 'drop &VAR_PROCESSED;'; put '%end;'; put 'run;'; put 'proc export data=approve.ActualDiffs'; put 'outfile="&mpelocapprovals/&TABLE/ActualDiffs.csv"'; put 'dbms=csv'; put 'replace;'; put 'run;'; put '/* update the control table to show table as approved */'; put '/* append to mpe_review table */'; put '%let apprno=%eval(&num_of_approvals_required-&num_of_approvals_remaining+1);'; put 'data work.append_review;'; put 'if 0 then set &mpelib..mpe_review;'; put 'TABLE_ID="&TABLE";'; put 'BASE_TABLE="&orig_libds";'; put 'REVIEW_STATUS_ID="APPROVED";'; put 'REVIEWED_BY_NM="&user";'; put 'REVIEWED_ON_DTTM=&sastime;'; put 'REVIEW_REASON_TXT="APPROVAL &apprno of &num_of_approvals_required";'; put 'output;'; put 'stop;'; put 'run;'; put '%mp_lockanytable(LOCK,'; put 'lib=&mpelib,ds=mpe_review,ref=%str(&table Approval),'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'proc append base=&mpelib..mpe_review data=work.append_review;'; put 'run;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&mpelib,ds=mpe_review,'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put '/* update mpe_submit table */'; put '%mp_lockanytable(LOCK,'; put 'lib=&mpelib,ds=mpe_submit,ref=%str(&table Approval in auditors/postdata),'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'proc sql;'; put 'update &mpelib..mpe_submit'; put 'set submit_status_cd=''APPROVED'','; put 'num_of_approvals_remaining=&num_of_approvals_remaining-1,'; put 'reviewed_by_nm="&user",'; put 'reviewed_on_dttm=&sastime'; put 'where table_id="&table";'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&mpelib,ds=mpe_submit,'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put '/* run post-approve hook */'; put '%mpe_runhook(POST_APPROVE_HOOK)'; put 'data apPARAMS;'; put 'AUTHORISED=1;'; put 'ALREADY_UPDATED=0;'; put 'ALREADY_UPDATED_DTTM=.;'; put 'DIFFTIME="&difftime";'; put 'if &syscc=0 then RESPONSE=''SUCCESS!'';'; put 'else response="SYSCC=&syscc.";'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program 582'; put ',msg=%superq(msg)'; put ')'; put '%mpe_alerts(alert_event=APPROVED'; put ', alert_lib=&libref'; put ', alert_ds=&ds'; put ', dsid=&TABLE'; put ')'; put '%removecolsfromwork(___TMP___MD5)'; put '%webout(OPEN)'; put '%webout(OBJ,apPARAMS)'; put '%webout(CLOSE)'; put '%return;'; put '%end;'; put '%mend postdata;'; put '%postdata()'; put '%mp_abort(mode=INCLUDE)'; put '%mp_abort(iftrue= (&is_err=1)'; put ',mac=&_program'; put ',msg=%superq(err_msg)'; put ')'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/editors; %let service=getdata; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mpe_columnlevelsecurity(tgtlib,tgtds,inds'; put ',mode=VIEW'; put ',groupds=work.groups'; put ',clsds=work.clsview'; put ',outds=CLSVIEW'; put ',outmeta=work.cls_rules'; put ');'; put '%local col_list is_admin;'; put '/* filter for the appropriate rules */'; put 'proc sql;'; put 'create table &outmeta as'; put 'select CLS_VARIABLE_NM,'; put 'min(case when CLS_HIDE=1 then 1 else 0 end) as CLS_HIDE'; put 'from &clsds'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and CLS_SCOPE in ("&mode",''ALL'')'; put 'and CLS_ACTIVE=1'; put '%if &mode=VIEW %then %do;'; put 'and CLS_HIDE ne 1'; put '%end;'; put 'and upcase(CLS_GROUP) in (select upcase(groupname) from &groupds)'; put 'and CLS_LIBREF="%upcase(&tgtlib)"'; put 'and CLS_TABLE="%upcase(&tgtds)"'; put 'group by CLS_VARIABLE_NM;'; put '%let is_admin=0;'; put 'proc sql;'; put 'select count(*) into: is_admin from &groupds where groupname="&MPEADMINS";'; put '%put &sysmacroname: &=is_admin;'; put '%if %mf_nobs(work.cls_rules) = 0 or &is_admin>0 %then %do;'; put '%put &sysmacroname: no CLS rules to apply;'; put '%put &=is_admin;'; put '/* copy using append for speed */'; put 'data &outds;'; put 'set &inds;'; put 'stop;'; put 'run;'; put 'proc append base=&outds data=&inds;'; put 'run;'; put '/* ensure CLS_RULES is empty in case of admin */'; put 'data &outmeta;'; put 'set &outmeta;'; put 'stop;'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &mode=VIEW %then %do;'; put '/* just send back the relevant columns */'; put '%let col_list=0;'; put 'proc sql noprint;'; put 'select CLS_VARIABLE_NM into: col_list separated by '' '' from &outmeta'; put 'where CLS_HIDE=0;'; put '%if &col_list=0 %then %do;'; put '/*'; put 'We have columns that are set to CLS_HIDE=1 but we do not have any to'; put 'explicitly show. Therefore we assume all columns are to be shown except'; put 'those that are explicitly hidden.'; put '*/'; put 'proc sql noprint;'; put 'select CLS_VARIABLE_NM into: col_list separated by '' '' from &outmeta'; put 'where CLS_HIDE=1;'; put 'data &outds;'; put 'set &inds;'; put 'drop &col_list;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds;'; put 'set &inds;'; put 'keep &col_list;'; put 'run;'; put '%end;'; put '%end;'; put '%else %if &mode=EDIT %then %do;'; put '/*'; put 'In this case we pass all columns and the frontend will filter out the'; put 'ones that are not allowed to be edited.'; put '*/'; put 'data &outds;'; put 'set &inds;'; put 'stop;'; put 'run;'; put 'proc append base=&outds data=&inds;'; put 'run;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: invalid mode - &mode!;'; put '%abort;'; put '%end;'; put '%mend mpe_columnlevelsecurity;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mpe_getlabels(type,source,outds=mpe_getlabels);'; put '%local tmpds;'; put '%if &type=COLUMNS %then %do;'; put '%let tmpds=%mf_getuniquename();'; put 'proc contents noprint data=&source'; put 'out=&tmpds(keep=name memlabel label);'; put 'run;'; put 'proc sql ;'; put 'create table &outds as'; put 'select upcase(a.name) as name'; put ',a.memlabel'; put ',coalesce(b.dd_shortdesc,a.label) as desc'; put ',b.dd_longdesc as longdesc'; put 'from &tmpds a'; put 'left join &mpelib..mpe_datadictionary'; put '(where=(&dc_dttmtfmt. < tx_to'; put 'and dd_source ? %upcase("&source")'; put 'and dd_type=''COLUMN'')) b'; put 'on scan(b.dd_source,-1,''.'')=upcase(a.name);'; put '%end;'; put '%mend mpe_getlabels;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_filtergenerate(inds,outref=filter);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put 'filename &outref temp;'; put '%if %mf_nobs(&inds)=0 %then %do;'; put '/* ensure we have a default filter */'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc sort data=&inds;'; put 'by SUBGROUP_ID;'; put 'run;'; put 'data _null_;'; put 'file &outref lrecl=32800;'; put 'set &inds end=last;'; put 'by SUBGROUP_ID;'; put 'if _n_=1 then put ''(('';'; put 'else if first.SUBGROUP_ID then put +1 GROUP_LOGIC ''('';'; put 'else put +2 SUBGROUP_LOGIC;'; put 'put +4 VARIABLE_NM OPERATOR_NM RAW_VALUE;'; put 'if last.SUBGROUP_ID then put '')''@;'; put 'if last then put '')'';'; put 'run;'; put '%end;'; put '%mend mp_filtergenerate;'; put '%macro mpe_filtermaster(mode,libds,'; put 'dclib=,'; put 'filter_rk=-1,'; put 'outref=0,'; put 'outds=work.query'; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%let mode=%upcase(&mode);'; put '%let libds=%upcase(&libds);'; put '%mp_abort(iftrue= ('; put '&mode ne EDIT and &mode ne VIEW and &mode ne DLOAD and &mode ne ULOAD'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid MODE: &mode)'; put ')'; put '%mp_abort(iftrue= (&outref = 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Please provide a fileref!)'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc)'; put ')'; put 'filename &outref temp;'; put '/* ensure outputs exist */'; put 'data _null_;'; put 'file &outref;'; put 'put '' '';'; put 'run;'; put 'data &outds;'; put 'set &dclib..mpe_filtersource;'; put 'stop;'; put 'run;'; put '/**'; put '* Deal with FILTER_RK first'; put '*/'; put '%if &filter_rk gt 0 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''( ''@@;'; put 'set &dclib..mpe_filteranytable(where=(filter_rk=&filter_rk));'; put 'call symputx(''filter_hash'',filter_hash,''l'');'; put 'run;'; put 'proc sort data=&dclib..mpe_filtersource(where=(filter_hash="&filter_hash"))'; put 'out=&outds(drop=filter_hash filter_line processed_dttm);'; put 'by filter_line;'; put 'run;'; put '%mp_filtergenerate(&outds,outref=&outref)'; put '%end;'; put '/* Now filter for current records if the MODE is EDIT or DLOAD */'; put '%local varfrom varto;'; put '%let varfrom=0;'; put 'proc sql;'; put 'select coalescec(var_txfrom,''0''), var_txto into: varfrom,:varto'; put 'from &dclib..MPE_TABLES'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and libref="%scan(&libds,1,.)" and dsn="%scan(&libds,2,.)";'; put '%put &=varfrom;'; put '%put &=varto;'; put '/**'; put '* Check if the date variables were mentioned in the query'; put '* This is a trigger for serving a historical view instead of current'; put '* we skip this part when checking an ULOAD as there are no date vars'; put '*/'; put '%if &varfrom ne 0 and (&mode=EDIT or &mode=DLOAD) %then %do;'; put '%local validityvars;'; put 'proc sql;'; put 'select count(*) into: validityvars'; put 'from &outds'; put 'where variable_nm in ("&varfrom","&varto");'; put '%if &validityvars=0 %then %do;'; put 'data _null_;'; put 'file &outref mod;'; put 'length filter_text $32767;'; put 'varfrom=symget(''varfrom'');'; put 'varto=symget(''varto'');'; put 'filter_text=catx('' '','; put '''("%sysfunc(datetime(),'',"%mf_fmtdttm()",'')"dt <'',varto,'')'''; put ');'; put 'if &filter_rk > 0 then put ''AND '' filter_text;'; put 'else put filter_text;'; put 'run;'; put '%end;'; put '%end;'; put '/**'; put '* Now do Row Level Security based on the MPE_ROW_LEVEL_SECURITY table'; put '*/'; put '/* first determine users group membership */'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.groups)'; put '%local admin_check;'; put 'proc sql;'; put 'select count(*) into: admin_check'; put 'from work.groups'; put 'where groupname="&mpeadmins";'; put '%put &sysmacroname: &=admin_check &=mpeadmins;'; put '%if &admin_check=0 %then %do;'; put '%local scopeval;'; put '%if &mode=DLOAD %then %let scopeval=VIEW;'; put '%if &mode=ULOAD %then %let scopeval=EDIT;'; put '%else %let scopeval=&mode;'; put '/* extract relevant rows */'; put '%local rlsds;'; put '%let rlsds=%mf_getuniquename();'; put 'proc sql;'; put 'create table work.&rlsds as'; put 'select rls_group,'; put 'rls_group_logic as group_logic,'; put 'rls_subgroup_logic as subgroup_logic,'; put 'rls_subgroup_id as subgroup_id,'; put 'rls_variable_nm as variable_nm,'; put 'rls_operator_nm as operator_nm,'; put 'rls_raw_value as raw_value'; put 'from &mpelib..mpe_row_level_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and rls_scope in ("&scopeval",''ALL'')'; put 'and upcase(rls_group) in (select upcase(groupname) from work.groups)'; put 'and rls_libref="%scan(&libds,1,.)"'; put 'and rls_table="%scan(&libds,2,.)"'; put 'and rls_active=1'; put 'order by rls_group,rls_subgroup_id;'; put '%if &sqlobs>0 %then %do;'; put '/* check if we currently have filter or not */'; put 'data ;'; put 'infile &outref end=eof;'; put 'input;'; put 'if _n_=1 and eof and cats(_infile_)='''' then newfilter=1;'; put 'output;'; put 'stop;'; put 'run;'; put 'data _null_;'; put 'set &syslast;'; put 'file &outref mod;'; put 'if newfilter=1 then put ''('';'; put 'else put ''AND ('';'; put 'run;'; put '/* loop through and apply filters for each group membership */'; put '%local fref ds;'; put '%let fref=%mf_getuniquefileref();'; put '%let ds=%mf_getuniquename();'; put 'proc sql noprint;'; put 'select distinct rls_group into : group1 -'; put 'from work.&rlsds;'; put '%do i=1 %to &sqlobs;'; put 'data work.&ds;'; put 'set work.&rlsds;'; put 'where rls_group="&&group&i";'; put 'drop rls_group;'; put 'run;'; put '%mp_filtergenerate(&ds,outref=&fref)'; put 'data _null_;'; put 'infile &fref;'; put 'file &outref mod;'; put 'input;'; put 'if &i>1 and _n_=1 then put '' OR '';'; put 'put _infile_;'; put 'run;'; put '%end;'; put 'data _null_;'; put 'file &outref mod;'; put 'put '')'';'; put 'run;'; put '%end; /* &sqlobs>0 */'; put '%else %do;'; put '%put &sysmacroname: no matching groups;'; put 'data _null_;'; put 'set work.groups;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname'; put ',msg=%str(Row Level Security Generation Error)'; put ')'; put '%end; /* &admin_check=0 */'; put '%put leaving &sysmacroname with the following query:;'; put '%local empty;'; put '%let empty=0;'; put 'data _null_;'; put 'infile &outref end=eof;'; put 'input;'; put 'putlog _infile_;'; put 'if _n_=1 and eof and cats(_infile_)='''' then do;'; put 'put ''1=1'';'; put 'call symputx(''empty'',1,''l'');'; put 'end;'; put 'run;'; put '%if &empty=1 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%mend mpe_filtermaster;'; put '%macro dc_getservicecode(loc=,outref=);'; put '%mm_getstpcode(tree=&loc'; put ',outref=&outref'; put ')'; put '%mend dc_getservicecode;'; put '%macro mp_include(fileref'; put ',prefix=_'; put ',opts=SOURCE2'; put ',errds=work.mp_abort_errds'; put ')/*/STORE SOURCE*/;'; put '/* prepare precode */'; put '%local tempref;'; put '%let tempref=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &tempref;'; put 'set sashelp.vextfl(where=(fileref="%upcase(&fileref)"));'; put 'put ''%let _SYSINCLUDEFILEDEVICE='' xengine '';'';'; put 'name=scan(xpath,-1,''/\'');'; put 'put ''%let _SYSINCLUDEFILENAME='' name '';'';'; put 'path=subpad(xpath,1,length(xpath)-length(name)-1);'; put 'put ''%let _SYSINCLUDEFILEDIR='' path '';'';'; put 'put ''%let _SYSINCLUDEFILEFILEREF='' "&fileref;";'; put 'run;'; put '/* prepare the errds */'; put 'data &errds;'; put 'length msg mac $1000;'; put 'call missing(msg,mac);'; put 'iftrue=''1=0'';'; put 'run;'; put '/* include the include */'; put '%inc &tempref &fileref/&opts;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=%str(&_SYSINCLUDEFILEDIR/&_SYSINCLUDEFILENAME)'; put ',msg=%str(syscc=&syscc after executing &_SYSINCLUDEFILENAME)'; put ')'; put 'filename &tempref clear;'; put '%mend mp_include;'; put '%macro mpe_runhook(hookvar);'; put '%local pgmloc pgmtype;'; put '%let pgmtype=0;'; put '%put &sysmacroname: &=hookvar;'; put '%if %length(&&&hookvar)>0 %then %do;'; put '%put &sysmacroname: Executing &&&hookvar;'; put 'data _null_;'; put 'rule_value=symget("&hookvar");'; put 'if scan(upcase(rule_value),-1,''.'')=''SAS'' then do;'; put 'call symputx(''pgmtype'',''PGM'');'; put 'call symputx(''pgmloc'',rule_value);'; put 'end;'; put 'else do;'; put 'apploc="%mf_getapploc()";'; put 'if substr(rule_value,1,1) ne ''/'''; put 'then rule_value=cats(apploc,''/'',rule_value);'; put 'call symputx(''pgmloc'',rule_value);'; put 'call symputx(''pgmtype'',''JOB'');'; put 'end;'; put 'run;'; put '%if &pgmtype=PGM %then %do;'; put 'filename sascode "&pgmloc";'; put '%end;'; put '%else %do;'; put '%dc_getservicecode(loc=&pgmloc'; put ',outref=sascode'; put ')'; put '%end;'; put '/* the below script will need to modify work.STAGING_DS */'; put '%local x; %let x=; /* legacy feature */'; put '%mp_include(sascode)'; put '%end;'; put '%mend mpe_runhook;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mm_getgroupmembers('; put 'group /* metadata group for which to bring back members */'; put ',outds=work.mm_getgroupmembers /* output dataset to contain the results */'; put ',emails=NO /* set to yes to bring back emails also */'; put ',id=NO /* set to yes if passing an ID rather than group name */'; put ')/*/STORE SOURCE*/;'; put 'data &outds ;'; put 'attrib uriGrp uriMem GroupId GroupName Group_or_Role MemberName MemberType'; put 'euri email length=$64'; put 'GroupDesc length=$256'; put 'rcGrp rcMem rc i j length=3;'; put 'call missing (of _all_);'; put 'drop uriGrp uriMem rcGrp rcMem rc i j arc ;'; put 'i=1;'; put '* Grab the URI for the first Group ;'; put '%if &id=NO %then %do;'; put 'rcGrp=metadata_getnobj("omsobj:IdentityGroup?@Name=''&group''",i,uriGrp);'; put '%end;'; put '%else %do;'; put 'rcGrp=metadata_getnobj("omsobj:IdentityGroup?@Id=''&group''",i,uriGrp);'; put '%end;'; put '* If Group found, enter do loop ;'; put 'if rcGrp>0 then do;'; put 'call missing (rcMem,uriMem,GroupId,GroupName,Group_or_Role'; put ',MemberName,MemberType);'; put '* get group info ;'; put 'rc = metadata_getattr(uriGrp,"Id",GroupId);'; put 'rc = metadata_getattr(uriGrp,"Name",GroupName);'; put 'rc = metadata_getattr(uriGrp,"PublicType",Group_or_Role);'; put 'rc = metadata_getattr(uriGrp,"Desc",GroupDesc);'; put 'j=1;'; put 'do while (metadata_getnasn(uriGrp,"MemberIdentities",j,uriMem) > 0);'; put 'call missing (MemberName, MemberType, email);'; put 'rc = metadata_getattr(uriMem,"Name",MemberName);'; put 'rc = metadata_getattr(uriMem,"PublicType",MemberType);'; put 'if membertype=''User'' and "&emails"=''YES'' then do;'; put 'if metadata_getnasn(uriMem,"EmailAddresses",1,euri)>0 then do;'; put 'arc=metadata_getattr(euri,"Address",email);'; put 'end;'; put 'end;'; put 'output;'; put 'j+1;'; put 'end;'; put 'end;'; put 'run;'; put '%mend mm_getgroupmembers;'; put '%macro dc_getgroupmembers(group,outds=dc_getgroupmembers);'; put '%mm_getgroupmembers(&group,outds=&outds)'; put '%mend dc_getgroupmembers;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 or %length(&var)=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'FMTNAME char(32) label=''Format name'''; put '/*'; put 'to accommodate larger START values, mp_loadformat.sas will need the'; put 'SQL dependency removed (proc sql needs to accommodate 3 index values in'; put 'a 32767 ibufsize limit)'; put '*/'; put ',START char(10000) label=''Starting value for format'''; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',TYPE char(1) label=''Type of format'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%mend mddl_sas_cntlout;'; put '%macro mp_cntlout('; put 'iftrue=(1=1)'; put ',libcat='; put ',cntlout=work.fmtextract'; put ',fmtlist=0'; put ')/*/STORE SOURCE*/;'; put '%local ddlds cntlds i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let ddlds=%mf_getuniquename();'; put '%let cntlds=%mf_getuniquename();'; put '%mddl_sas_cntlout(libds=&ddlds)'; put '%if %index(&libcat,-)>0 and %scan(&libcat,2,-)=FC %then %do;'; put '%let libcat=%scan(&libcat,1,-);'; put '%end;'; put 'proc format lib=&libcat cntlout=&cntlds;'; put '%if "&fmtlist" ne "0" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'if type="N" then do;'; put 'start=cats(start);'; put 'end=cats(end);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by fmtname start;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; put '%macro mp_dsmeta(libds,outds=work.dsmeta);'; put '%local ds1 ds2;'; put 'data;run; %let ds1=&syslast;'; put 'data;run; %let ds2=&syslast;'; put '/* setup the ODS capture */'; put 'ods output attributes=&ds1 enginehost=&ds2;'; put '/* export the metadata */'; put 'proc contents data=&libds;'; put 'run;'; put '/* load it into a single table */'; put 'data &outds (keep=ods_table name value);'; put 'length ods_table $10 name label2 label1 label $100'; put 'value cvalue cvalue1 cvalue2 $1000'; put 'nvalue nvalue1 nvalue2 8;'; put 'if _n_=1 then call missing (of _all_);'; put '* putlog (_all_)(=);'; put 'set &ds1 (in=atrs) &ds2 (in=eng);'; put 'if atrs then do;'; put 'ods_table=''ATTRIBUTES'';'; put 'name=coalescec(label1,label);'; put 'value=coalescec(cvalue1,cvalue,put(coalesce(nvalue1,nvalue),best.));'; put 'output;'; put 'if label2 ne '''' then do;'; put 'name=label2;'; put 'value=coalescec(cvalue2,put(nvalue2,best.));'; put 'output;'; put 'end;'; put 'end;'; put 'else if eng then do;'; put 'ods_table=''ENGINEHOST'';'; put 'name=coalescec(label1,label);'; put 'value=coalescec(cvalue1,cvalue,put(coalesce(nvalue1,nvalue),best.));'; put 'output;'; put 'end;'; put 'run;'; put 'proc sql;'; put 'drop table &ds1, &ds2;'; put '%mend mp_dsmeta;'; put '%macro mp_getcols(ds, outds=work.cols);'; put '%local dropds;'; put 'proc contents noprint data=&ds'; put 'out=_data_ (keep=name type length label varnum format:);'; put 'run;'; put '%let dropds=&syslast;'; put 'data &outds(keep=name type length varnum format label ddtype fmtname);'; put 'set &dropds(rename=(format=fmtname type=type2));'; put 'name=upcase(name);'; put 'if type2=2 then do;'; put 'length format $49.;'; put 'if fmtname='''' then format=cats(''$'',length,''.'');'; put 'else if formatl=0 then format=cats(fmtname,''.'');'; put 'else format=cats(fmtname,formatl,''.'');'; put 'type=''C'';'; put 'ddtype=''CHARACTER'';'; put 'end;'; put 'else do;'; put 'if fmtname='''' then format=cats(length,''.'');'; put 'else if formatl=0 then format=cats(fmtname,''.'');'; put 'else if formatd=0 then format=cats(fmtname,formatl,''.'');'; put 'else format=cats(fmtname,formatl,''.'',formatd);'; put 'type=''N'';'; put 'if format=:''DATETIME'' or format=:''E8601DT'' then ddtype=''DATETIME'';'; put 'else if format=:''DATE'' or format=:''DDMMYY'' or format=:''MMDDYY'''; put 'or format=:''YYMMDD'' or format=:''E8601DA'' or format=:''B8601DA'''; put 'or format=:''MONYY'''; put 'then ddtype=''DATE'';'; put 'else if format=:''TIME'' then ddtype=''TIME'';'; put 'else ddtype=''NUMERIC'';'; put 'end;'; put 'if label='''' then label=name;'; put 'run;'; put 'proc sql;'; put 'drop table &dropds;'; put '%mend mp_getcols;'; put '%macro mcf_init(func'; put ')/*/STORE SOURCE*/;'; put '%if not (%symexist(SASJS_PREFIX)) %then %do;'; put '%global SASJS_PREFIX;'; put '%let SASJS_PREFIX=SASJS;'; put '%end;'; put '%let func=%upcase(&func);'; put '/* the / character is just a seperator */'; put '%global &sasjs_prefix._FUNCTIONS;'; put '%if %index(&&&sasjs_prefix._FUNCTIONS,&func/)>0 %then %do;'; put '1'; put '%return;'; put '%end;'; put '%else %do;'; put '%let &sasjs_prefix._FUNCTIONS=&&&sasjs_prefix._FUNCTIONS &func/;'; put '0'; put '%end;'; put '%mend mcf_init;'; put '%macro mcf_length(wrap=NO'; put ',insert_cmplib=DEPRECATED'; put ',lib=WORK'; put ',cat=SASJS'; put ',pkg=UTILS'; put ')/*/STORE SOURCE*/;'; put '%local i var cmpval found;'; put '%if %mcf_init(mcf_length)=1 %then %return;'; put '%if &wrap=YES %then %do;'; put 'proc fcmp outlib=&lib..&cat..&pkg;'; put '%end;'; put 'function mcf_length(var);'; put 'if var=. then len=0;'; put 'else if missing(var) or trunc(var,3)=var then len=3;'; put 'else if trunc(var,4)=var then len=4;'; put 'else if trunc(var,5)=var then len=5;'; put 'else if trunc(var,6)=var then len=6;'; put 'else if trunc(var,7)=var then len=7;'; put 'else len=8;'; put 'return(len);'; put 'endsub;'; put '%if &wrap=YES %then %do;'; put 'quit;'; put '%end;'; put '/* insert the CMPLIB if not already there */'; put '%let cmpval=%sysfunc(getoption(cmplib));'; put '%let found=0;'; put '%do i=1 %to %sysfunc(countw(&cmpval,%str( %(%))));'; put '%let var=%scan(&cmpval,&i,%str( %(%)));'; put '%if &var=&lib..&cat %then %let found=1;'; put '%end;'; put '%if &found=0 %then %do;'; put 'options insert=(CMPLIB=(&lib..&cat));'; put '%end;'; put '%mend mcf_length;'; put '%macro mf_getvarcount(libds,typefilter=A'; put ')/*/STORE SOURCE*/;'; put '%local dsid nvars rc outcnt x;'; put '%let dsid=%sysfunc(open(&libds));'; put '%let nvars=.;'; put '%let outcnt=0;'; put '%let typefilter=%upcase(&typefilter);'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &typefilter=A %then %let outcnt=&nvars;'; put '%else %if &nvars>0 %then %do x=1 %to &nvars;'; put '/* increment based on variable type */'; put '%if %sysfunc(vartype(&dsid,&x))=&typefilter %then %do;'; put '%let outcnt=%eval(&outcnt+1);'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put unable to open &libds (rc=&dsid);'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '&outcnt'; put '%mend mf_getvarcount;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getVarFormat(libds /* two level ds name */'; put ', var /* variable name from which to return the format */'; put ', force=0'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vformat rc vlen vtype;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable format */'; put '%if(&vnum > 0) %then %let vformat=%sysfunc(varfmt(&dsid, &vnum));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let rc = %sysfunc(close(&dsid));'; put '%return;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* supply a default if no format available */'; put '%if %length(&vformat)<2 & &force=1 %then %do;'; put '%let vlen = %sysfunc(varlen(&dsid, &vnum));'; put '%let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%if &vtype=C %then %let vformat=$&vlen..;'; put '%else %let vformat=best.;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable format */'; put '&vformat'; put '%mend mf_getVarFormat;'; put '%macro mp_getmaxvarlengths('; put 'libds'; put ',num2char=NO'; put ',outds=work.mp_getmaxvarlengths'; put ')/*/STORE SOURCE*/;'; put '%local vars prefix x var fmt srcds;'; put '%let vars=%mf_getvarlist(libds=&libds);'; put '%let prefix=%substr(%mf_getuniquename(),1,25);'; put '%let num2char=%upcase(&num2char);'; put '%if &num2char=NO %then %do;'; put '/* compile length function for numeric fields */'; put '%mcf_length(wrap=YES, insert_cmplib=YES)'; put '%end;'; put '%if &num2char=NO'; put 'and ("%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5")'; put 'and %mf_getvarcount(&libds,typefilter=N) gt 0'; put '%then %do;'; put '/* custom functions not supported in summary operations */'; put '%let srcds=%mf_getuniquename();'; put 'data &srcds/view=&srcds;'; put 'set &libds;'; put '%do x=1 %to %sysfunc(countw(&vars,%str( )));'; put '%let var=%scan(&vars,&x);'; put '%if %mf_getvartype(&libds,&var)=N %then %do;'; put '&prefix.&x=mcf_length(&var);'; put '%end;'; put '%end;'; put 'run;'; put '%end;'; put '%else %let srcds=&libds;'; put 'proc sql;'; put 'create table &outds (rename=('; put '%do x=1 %to %sysfunc(countw(&vars,%str( )));'; put '&prefix.&x=%scan(&vars,&x)'; put '%end;'; put '))'; put 'as select'; put '%do x=1 %to %sysfunc(countw(&vars,%str( )));'; put '%let var=%scan(&vars,&x);'; put '%if &x>1 %then ,;'; put '%if %mf_getvartype(&libds,&var)=C %then %do;'; put 'max(lengthn(&var)) as &prefix.&x'; put '%end;'; put '%else %if &num2char=YES %then %do;'; put '%let fmt=%mf_getvarformat(&libds,&var);'; put '%put fmt=&fmt;'; put '%if %str(&fmt)=%str() %then %do;'; put 'max(lengthn(cats(&var))) as &prefix.&x'; put '%end;'; put '%else %do;'; put 'max(lengthn(put(&var,&fmt))) as &prefix.&x'; put '%end;'; put '%end;'; put '%else %do;'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then %do;'; put 'max(&prefix.&x) as &prefix.&x'; put '%end;'; put '%else %do;'; put 'max(mcf_length(&var)) as &prefix.&x'; put '%end;'; put '%end;'; put '%end;'; put 'from &srcds;'; put 'proc transpose data=&outds'; put 'out=&outds(rename=(_name_=NAME COL1=MAXLEN));'; put 'run;'; put '%mend mp_getmaxvarlengths;'; put '%macro mp_validatecol(incol,rule,outcol);'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename();'; put '%if &rule=ISINT %then %do;'; put '&outcol=0;'; put 'if not missing(&incol) then do;'; put '&tempcol=input(&incol,?? best32.);'; put 'if not missing(&tempcol) then if mod(&tempcol,1)=0 then &outcol=1;'; put 'end;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=ISNUM %then %do;'; put '/*'; put 'credit SØREN LASSEN'; put 'https://sasmacro.blogspot.com/2009/06/welcome-isnum-macro.html'; put '*/'; put '&tempcol=input(&incol,?? best32.);'; put 'if missing(&tempcol) then &outcol=0;'; put 'else &outcol=1;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=LIBDS %then %do;'; put '/* match libref.dataset */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}\.[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for LIBDS";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%else %if &rule=FORMAT %then %do;'; put '/* match valid format - regex could probably be improved */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z\$]\w{0,31}\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for FORMAT";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%mend mp_validatecol;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getdata.sas'; put '@brief Returns a dataset to the editor front end'; put '@details'; put '

Service Inputs

'; put '
SASCONTROLTABLE
'; put '|LIBDS:$41.|FILTER_RK:$5.|'; put '|---|---|'; put '|DC258467.MPE_X_TEST|-1|'; put '

Service Outputs

'; put '
sasdata
'; put '
sasparams
'; put 'Contains info on the request. One row is returned.'; put '* CLS_FLG - set to 0 if there are no CLS rules (everything should be editable)'; put 'else set to 1 (CLS rules exist)'; put '
approvers
'; put '
dqrules
'; put '
dqdata
'; put '
cols
'; put 'Contains column level attributes.'; put '@li NAME - column name'; put '@li VARNUM - variable position. Source: https://core.sasjs.io/mp__getcols_8sas.html'; put '@li LABEL - variable label. Source: https://core.sasjs.io/mp__getcols_8sas.html'; put '@li FMTNAME - derived format name. Source: https://core.sasjs.io/mp__getcols_8sas.html'; put '@li DDTYPE - derived dropdown type. Source: https://core.sasjs.io/mp__getcols_8sas.html'; put '@li CLS_RULE - values include:'; put '- EDIT - the column is editable'; put '- READ - the column should be readonly'; put '- HIDE - the column should be hidden'; put '@li memlabel'; put '@li desc- augmented with MPE_DATADICTIONARY if exists, else label'; put '@li longdesc - from MPE_DATADICTIONARY'; put '
maxvarlengths
'; put '
xl_rules
'; put '
query
'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li dc_getgroupmembers.sas'; put '@li mf_existvar.sas'; put '@li mf_getattrn.sas'; put '@li mf_getvarlist.sas'; put '@li mf_existds.sas'; put '@li mf_getquotedstr.sas'; put '@li mf_getuser.sas'; put '@li mf_nobs.sas'; put '@li mf_verifymacvars.sas'; put '@li mf_wordsinstr1butnotstr2.sas'; put '@li mp_abort.sas'; put '@li mp_cntlout.sas'; put '@li mp_dsmeta.sas'; put '@li mp_getcols.sas'; put '@li mp_getmaxvarlengths.sas'; put '@li mp_validatecol.sas'; put '@li mpe_accesscheck.sas'; put '@li mpe_columnlevelsecurity.sas'; put '@li mpe_getlabels.sas'; put '@li mpe_filtermaster.sas'; put '@li mpe_runhook.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '/**'; put '* Validate inputs'; put '*/'; put 'data work.intest;'; put 'length filter_rk 8;'; put 'set work.SASCONTROLTABLE;'; put '/* validate filter_rk */'; put 'if filter_rk le 0 then filter_rk=-1;'; put 'call symputx(''orig_libds'',upcase(libds));'; put 'is_fmt=0;'; put 'if substr(cats(reverse(libds)),1,3)=:''CF-'' then do;'; put 'libds=scan(libds,1,''-'');'; put 'putlog "Format Catalog Captured";'; put 'is_fmt=1;'; put 'libds=''work.fmtextract'';'; put 'call symputx(''libds'',libds);'; put 'end;'; put 'call symputx(''is_fmt'',is_fmt);'; put 'putlog (_all_)(=);'; put '/* validate libds */'; put '%mp_validatecol(LIBDS,LIBDS,is_libds)'; put 'if is_libds=0 then do;'; put 'putlog ''ERR'' ''OR: Invalid libds:'' libds;'; put 'stop;'; put 'end;'; put 'else do;'; put 'call symputx(''filter_rk'',filter_rk);'; put 'call symputx(''libds'',libds);'; put 'end;'; put 'output;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (%mf_nobs(work.intest)=0)'; put ',mac=&_program'; put ',msg=%str(Some err with service inputs)'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(libds filter_rk)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: libds filter_rk)'; put ')'; put '/* export format catalog */'; put '%mp_cntlout('; put 'iftrue=(&is_fmt=1)'; put ',libcat=&orig_libds'; put ',fmtlist=0'; put ',cntlout=work.fmtextract'; put ')'; put '/* stream back meta info, further calls will return col metadata and actual data'; put '*/'; put '%let libref=%upcase(%scan(&libds,1,.));'; put '%let dsn=%upcase(%scan(&libds,2,.));'; put '%dc_assignlib(WRITE,&libref)'; put '/**'; put '* First check user has access permission to edit the table'; put '*/'; put '%put checking access;'; put '%let user=%mf_getuser();'; put '%mpe_accesscheck(&orig_libds,outds=mw_auth,user=&user,access_level=EDIT)'; put '%mp_abort(iftrue= (%mf_getattrn(work.mw_auth,NLOBS)=0)'; put ',mac=mpestp_getdata.sas'; put ',msg=&user is not authorised to edit &orig_libds %trim('; put ')in the &mpelib..MPE_SECURITY table'; put ')'; put '%mp_abort(iftrue= ( %mf_existds(libds=&libds) ne 1)'; put ',mac=mpestp_getdata.sas'; put ',msg=dataset &libds does not exist!!'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc at line 60 )'; put ')'; put '%global loadtype var_txfrom var_txto var_processed filter_text pk coltype'; put 'sortpk;'; put '%put getting table attributes;'; put 'proc sql noprint;'; put 'select upcase(loadtype)'; put ',var_txfrom,var_txto'; put ',var_busfrom,var_busto'; put ',var_processed,rk_underlying,buskey'; put ',coalesce(rk_underlying,buskey)'; put ',pre_edit_hook'; put ',case when missing(rk_underlying) then buskey else rk_underlying end'; put 'into: loadtype,:var_txfrom,:var_txto'; put ',:var_busfrom ,:var_busto'; put ',:var_processed,:rk_underlying,:buskey, :sortPK, :pre_edit_hook,:pk'; put 'from &mpelib..mpe_tables'; put 'where &dc_dttmtfmt. lt TX_TO'; put 'and upcase(dsn)="%scan(&orig_libds,2,.)"'; put 'and upcase(libref)="%scan(&orig_libds,1,.)";'; put '%put preparing filter query:;'; put '%mpe_filtermaster(EDIT,&orig_libds,'; put 'dclib=&mpelib,'; put 'filter_rk=&filter_rk,'; put 'outref=filtref,'; put 'outds=work.query'; put ')'; put '%macro mpestp_getdata();'; put '%if not %symexist(DC_MAXOBS_WEBEDIT) %then %do;'; put '%put NOTE:;%put NOTE- DC_MAXOBS_WEBEDIT not found!;'; put '%put NOTE- Please add to &mpelib..MPE_CONFIG table;'; put '%put NOTE-;%put NOTE-;'; put '%global DC_MAXOBS_WEBEDIT;'; put '%let DC_MAXOBS_WEBEDIT=500;'; put '%end;'; put '/* for tables which use RKs/SKs then we just expose the business key to'; put 'users - this lets uploads be sent to multiple environments (with'; put 'potentially different RK/SK values for the same business key).'; put 'Note that the config table has the RK column in the buskey field in'; put 'this scenario. */'; put '%if %length(&rk_underlying)>0 %then %let drop_rk=&buskey;'; put '%else %let drop_rk=;'; put '/* always remove the PROCESSED_DTTM column, if it exists */'; put '%if %length(&var_processed)=0 %then %do;'; put '%if %mf_existvar(&libds,PROCESSED_DTTM)>0 %then'; put '%let var_processed=PROCESSED_DTTM;'; put '%end;'; put '/**'; put '* Now get the slice of the actual table'; put '*/'; put 'options obs=10000;'; put '%if &loadtype=BITEMPORAL %then %do;'; put 'data out (drop=&var_txfrom &var_txto &var_processed &drop_rk );'; put '_____DELETE__THIS__RECORD_____="No";'; put 'set &libds;'; put 'where %inc filtref;;'; put 'run;'; put 'proc sort data=out;'; put 'by &pk &var_busfrom;'; put 'run;'; put 'data out;'; put 'set out;'; put 'by &pk &var_busfrom;'; put 'if last.%scan(&pk,-1);'; put 'run;'; put '%end;'; put '%else %do;'; put 'data out (drop=&var_txfrom &var_txto &var_processed &drop_rk);'; put '_____DELETE__THIS__RECORD_____="No";'; put 'set &libds;'; put 'where %inc filtref;;'; put 'run;'; put '%end;'; put 'options obs=max;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Issue with filtering (line 165) )'; put ')'; put 'options obs=&DC_MAXOBS_WEBEDIT;'; put '%let sortpk=%sysfunc(coalescec(&sortpk &var_busfrom,_ALL_));'; put 'proc sort data=work.out; by &sortPK; run;'; put 'options obs=max;'; put '%mpe_runhook(PRE_EDIT_HOOK)'; put '%let obscnt=%mf_getattrn(work.out,NLOBS);'; put '%mp_abort(iftrue=(&obscnt>&DC_MAXOBS_WEBEDIT)'; put ',mac=&_program'; put ',msg=Table is too big (&obscnt rows) - please filter and try again!'; put ')'; put '/* order delete var and pk fields at start of table */'; put '%let sourcevars=%mf_wordsInStr1ButNotStr2('; put 'Str1=%mf_getvarlist(work.out)'; put ',Str2= _____DELETE__THIS__RECORD_____ &pk'; put ');'; put '%put sourcevars=&sourcevars;'; put 'data outdata;'; put '/* delete & pk fields come first */'; put 'attrib _____DELETE__THIS__RECORD_____ &pk label='''';'; put '/* keep remaining variable order */'; put '%if %length(&sourcevars)>0 %then %do;'; put 'attrib &sourcevars label='''';'; put '%end;'; put '_____DELETE__THIS__RECORD_____="No ";'; put '%if %mf_nobs(work.out)=0 %then %do;'; put '/* send empty row if empty table to help with hot rendering */'; put 'output;'; put '%end;'; put 'set work.out ;'; put 'run;'; put '/* get list of variables and their formats */'; put 'proc contents noprint data=outdata'; put 'out=vars(keep=name type length varnum format: label);'; put 'run;'; put 'proc sort;'; put 'by varnum;'; put 'run;'; put 'data vars3(keep=name type length format label pk varnum ctrloptions formatd);'; put 'set vars(rename=(format=format2 type=type2));'; put 'name=upcase(name);'; put '/* not interested in transaction or processing dates'; put '(append table must be supplied without them) */'; put 'if name not in ("&VAR_TXFROM","&VAR_TXTO","&VAR_PROCESSED");'; put 'if type2=2 or type2=6 then do;'; put 'length format $49.;'; put 'if format2='''' then format=cats(''$'',length,''.'');'; put 'else format=cats(format2,formatl,''.'');'; put 'type=''char'';'; put 'end;'; put 'else do;'; put 'if format2='''' then format=cats(length,''.'');'; put 'else if upcase(format2)=''DATETIME'' and formatl=0 then format=''DATETIME.'';'; put 'else format=cats(format2,formatl,''.'',formatd);'; put 'type=''num'';'; put 'end;'; put 'if name in ('''',%upcase(%mf_getQuotedStr(&pk,dlm=%str(,),quote=S)))'; put 'then PK=''YES'';'; put 'length ctrlOptions $500;'; put 'if name="_____DELETE__THIS__RECORD_____" then ctrlOptions=''["No","Yes"]'';'; put 'else ctrlOptions='''';'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc at 242 (vars3 step) in &_program \n'; put '%superq(syserrortext)'; put ')'; put ')'; put '%global jsdttmvars jsdtvars jstmvars;'; put 'data _null_;'; put 'set vars3 end=last;'; put 'if _n_>1 then comma='','';'; put 'length coltype $500.;'; put 'format=upcase(format);'; put 'coltype=cats(comma,''{"data":"'',name,''"'');'; put 'if ctrlOptions ne '''' then'; put 'colType=cats(coltype,'',"type":"dropdown","source":'',ctrlOptions,"}");'; put 'else if type=''num'' then do;'; put 'if format=:''DATETIME'' or format=:''E8601DT'' then do;'; put 'colType=cats(coltype'; put ','',"type":"date","dateFormat":"YYYY-MM-DD HH:mm:ss"'''; put ','',"correctFormat":"true"}'');'; put '/* build var list to reformat datetimes in javascript format */'; put 'call symput(''jsdttmvars'',symget(''jsdttmvars'')!!'' ''!!name);'; put 'end;'; put 'else if format=:''DATE'' or format=:''DDMMYY'' or format=:''MMDDYY'''; put 'or format=:''YYMMDD'' or format=:''E8601DA'' or format=:''B8601DA'''; put 'or format=:''MONYY'''; put 'then do;'; put '/* see bottom of file for more date formats!! */'; put '/* also when updating, update stagedata.sas and mp_getcols.sas'; put 'and mpe_loader.sas */'; put 'colType=cats(coltype,'',"type":"date","dateFormat":"YYYY-MM-DD"'''; put '/*colType=cats(coltype,'',"type":"date","dateFormat":"MM/DD/YYYY"''*/'; put ','',"correctFormat":"true"}'');'; put '/* build var list to reformat as javascript dates */'; put 'call symput(''jsdtvars'',symget(''jsdtvars'')!!'' ''!!name);'; put 'end;'; put 'else if format=:''TIME'' or format=:''HHMM'' then do;'; put 'colType=cats(coltype,'',"type":"time","timeFormat":"HH:mm:ss"'''; put ','',"correctFormat":"true"}'');'; put '/* build var list to reformat as javascript times */'; put 'call symput(''jstmvars'',symget(''jstmvars'')!!'' ''!!name);'; put 'end;'; put 'else do;'; put '/* is standard numeric but need to ascertain precision */'; put 'retain base ''000000000000000000'';'; put 'if formatd>0 then numFormat=cats(''.'',substr(base,1,formatd));'; put 'colType=cats(coltype,'',"type":"numeric","format":"0'',numFormat,''"}'');'; put 'end;'; put 'end;'; put 'else colType=cats(coltype,''}'');'; put 'length concatcoltype $32767;'; put 'retain concatcoltype;'; put 'concatcoltype=cats(concatcoltype,coltype);'; put 'if last then call symputx(''colType'',strip(concatcoltype),''g'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc at 283 (null step) in &_program)'; put ')'; put 'PROC FORMAT;'; put 'picture yymmddThhmmss (default=28) other=''%0Y-%0m-%0d %0H:%0M:%0s'''; put '(datatype=datetime);'; put 'picture JSyymmdd other=''%0Y-%0m-%0d'' (datatype=date);'; put 'picture JShhmmss (default=16) other=''%0H:%0M:%0s'' (datatype=time);'; put 'RUN;'; put '/* before we send the data, need to rebuild all date & datetime vars as char*/'; put '%let finalvars=%mf_getvarlist(work.outdata);'; put 'data sasdata;'; put '/* set formats & col order ahead of rename+import */'; put 'informat &finalvars ;'; put '/* read dataset and rename date / datetime vars as necessary */'; put 'set outdata'; put '%if %length(&jsdttmvars&jsdtvars&jstmvars)>0 %then %do;'; put '(rename=('; put '%local dtvarnum dtvar tmvar;'; put '/* temp datetime vars end in _____ */'; put '%do dtvarnum=1 %to %sysfunc(countw(&jsdttmvars,%str( )));'; put '%let dtvar=%scan(&jsdttmvars ,&dtvarnum);'; put '&dtvar=_____&dtvarnum._____'; put '%end;'; put '/* temp date vars do not end in _____ */'; put '%do dtvarnum=1 %to %sysfunc(countw(&jsdtvars,%str( )));'; put '%let dtvar=%scan( &jsdtvars,&dtvarnum);'; put '&dtvar=_____&dtvarnum'; put '%end;'; put '/* temp time vars end in ___tm */'; put '%do tmvarnum=1 %to %sysfunc(countw(&jstmvars,%str( )));'; put '%let tmvar=%scan( &jstmvars,&tmvarnum);'; put '&tmvar=_____&tmvarnum.___tm'; put '%end;'; put '))'; put '%end;'; put ';'; put '%if %length(&jsdttmvars)>0 %then %do ;'; put '%do dtvarnum=1 %to %sysfunc(countw(&jsdttmvars,%str( )));'; put '%let dtvar=%scan(&jsdttmvars,&dtvarnum);'; put '&dtvar=cats(put(_____&dtvarnum._____,yymmddThhmmss28.));'; put 'if &dtvar="ERROR" then call missing(&dtvar);'; put 'drop _____&dtvarnum._____;'; put '%end;'; put '%end;'; put '%if %length(&jsdtvars)>0 %then %do;'; put '%do dtvarnum=1 %to %sysfunc(countw(&jsdtvars,%str( )));'; put '%let dtvar=%scan(&jsdtvars,&dtvarnum);'; put '&dtvar=cats(put(_____&dtvarnum,JSyymmdd.));'; put 'if &dtvar="ERROR" then call missing(&dtvar);'; put 'drop _____&dtvarnum;'; put '%end;'; put '%end;'; put '%if %length(&jstmvars)>0 %then %do;'; put '%do tmvarnum=1 %to %sysfunc(countw(&jstmvars,%str( )));'; put '%let tmvar=%scan(&jstmvars,&tmvarnum);'; put '&tmvar=cats(put(_____&tmvarnum.___tm,JShhmmss14.));'; put 'if &tmvar="ERROR" then call missing(&tmvar);'; put 'drop _____&tmvarnum.___tm;'; put '%end;'; put '%end;'; put 'output;'; put 'run;'; put '/* get the relevant approvers for the drop down */'; put '%put getting approvers;'; put '%local sas_groups sas_i sas_group;'; put 'proc sql noprint;'; put 'select distinct sas_Group into: sas_groups separated by "|"'; put 'from &mpelib..mpe_security'; put 'where libref="%scan(&orig_libds,1,.)"'; put 'and dsn="%scan(&orig_libds,2,.)"'; put 'and access_level=''APPROVE'''; put 'and &dc_dttmtfmt. lt TX_TO;'; put '%if %length(&sas_groups)=0 %then %do;'; put '%dc_getgroupmembers(&dc_admin_group,outds=work.access1)'; put '%end;'; put '%else %do sas_i=1 %to %sysfunc(countw(&sas_groups,%str(|)));'; put '%let sas_group=%scan(&sas_Groups,&sas_i,%str(|));'; put '%dc_getgroupmembers(&sas_group,outds=work.temp&sas_i)'; put 'proc append base=work.access1 data=work.temp&sas_i;run;'; put '%end;'; put '%mend mpestp_getdata;'; put '%mpestp_getdata()'; put '%mp_abort(mode=INCLUDE)'; put '/* extract column level security rules */'; put '%mpe_columnlevelsecurity(%scan(&libds,1,.),%scan(&libds,2,.),work.sasdata'; put ',mode=EDIT'; put ',clsds=&mpelib..mpe_column_level_security'; put ',groupds=work.groups /* was created in mpe_filtermaster */'; put ',outds=work.sasdata1'; put ',outmeta=work.cls_rules'; put ')'; put '/* get labels */'; put '%mpe_getlabels(COLUMNS,sasdata1,outds=spec)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc extracting spec info)'; put ')'; put '/* extract col info */'; put '%mp_getcols(&libds, outds=cols1)'; put '/* join with cls rules */'; put 'proc sql;'; put 'create table work.cols as'; put 'select a.NAME'; put ',a.VARNUM'; put ',a.LABEL'; put ',a.FMTNAME'; put ',a.DDTYPE'; put ',case b.cls_hide'; put 'when 1 then ''HIDE'''; put 'when 0 then ''EDIT'''; put 'else ''READ'' end as CLS_RULE'; put ',c.memlabel'; put ',c.desc'; put ',c.longdesc'; put 'from work.cols1 a'; put 'left join work.cls_rules b'; put 'on a.NAME=b.CLS_VARIABLE_NM'; put 'left join work.spec c'; put 'on a.NAME=c.NAME;'; put 'proc sql;'; put 'create table approvers as select distinct membername as personname'; put ',membername as email, membername as userid'; put 'from work.access1;'; put '/*'; put 'create table access3 as select b.userid,b.email'; put 'from access2 a'; put ',support.users b'; put 'where a.personname=b.userid'; put 'and a.personname ne "%mf_getuser()"'; put 'and %sysfunc(datetime()) lt b.tx_to_dttm'; put 'order by 1;'; put '*/'; put 'data _null_;'; put 'infile filtref end=eof;'; put 'input;'; put 'length filter_text $32767;'; put 'retain filter_text;'; put 'filter_text=catx('' '',filter_text,_infile_);'; put 'if eof then do;'; put 'if cats(filter_text)=''1=1'' then filter_text='''';'; put 'call symputx(''filter_text'',filter_text);'; put 'end;'; put 'run;'; put '%put params;'; put 'data sasparams;'; put 'length colHeaders $20000 filter_text $32767;'; put 'colHeaders=cats(upcase("%mf_getvarlist(sasdata1,dlm=%str(,))"));'; put 'pkCnt=countw("&pk");'; put 'pk="&pk";'; put 'dtvars=compbl("&jsdtvars");'; put 'dttmvars=compbl("&jsdttmvars");'; put 'tmvars=compbl("&jstmvars");'; put 'length coltype $32000;'; put 'coltype=symget(''coltype'');'; put 'loadtype=symget(''loadtype'');'; put 'if trim(symget(''rk_underlying'')) ne '''' then rk_flag=1;'; put 'else rk_flag=0;'; put 'filter_text=symget(''filter_text'');'; put 'if %mf_nobs(work.cls_rules)=0 then cls_flag=0;'; put 'else cls_flag=1;'; put 'put (_all_)(=);'; put 'run;'; put '/* Extract validation DQ Rules */'; put 'proc sort data=&mpelib..mpe_validations'; put '(where=(&dc_dttmtfmt. le TX_TO'; put 'and BASE_LIB="%scan(&orig_libds,1,.)" and BASE_DS="%scan(&orig_libds,2,.)"'; put 'and rule_active=1))'; put 'out=dqrules (keep=base_col rule_type rule_value);'; put 'by base_col rule_type rule_value;'; put 'run;'; put '/* merge with NOTNULL constraints in the physical table */'; put 'proc sql;'; put 'create table _data_ as'; put 'select * from dqrules'; put 'union'; put 'select upcase(name) as base_col'; put ',''NOTNULL'' as rule_type'; put ','''' as rule_value'; put 'from dictionary.columns'; put 'where upcase(libname)="%scan(&orig_libds,1,.)"'; put 'and upcase(memname)="%scan(&orig_libds,2,.)"'; put 'and upcase(name) in (select name from vars3)'; put 'and notnull=''yes'''; put 'order by 1,2,3;'; put 'data dqrules;'; put 'set &syslast;'; put 'by base_col rule_type rule_value;'; put 'if last.rule_type;'; put 'if rule_type in (''HARDSELECT'',''SOFTSELECT'') and countw(rule_value)=3 then'; put 'do;'; put 'retain x 0; x+1;'; put 'call symputx(cats(''source'',x),rule_value);'; put '%let sourcecnt=0;'; put 'call symputx(''sourcecnt'',x);'; put 'call symputx(cats(''base_col'',x),base_col);'; put 'end;'; put 'run;'; put 'proc sql;'; put 'create table dqdata as'; put 'select distinct base_column as base_col length=32'; put ',upcase(base_column) as rule_value length=74 /* deprecated */'; put ',selectbox_value as rule_data length=1000'; put ',selectbox_order'; put 'from &mpelib..mpe_selectbox'; put 'where &dc_dttmtfmt. lt ver_to_dttm'; put 'and select_lib="%scan(&orig_libds,1,.)"'; put 'and select_ds="%scan(&orig_libds,2,.)";'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc during DQ rule validation)'; put ')'; put '/* extract selectbox data */'; put '%macro dq_selects();'; put '%local x source lib ds col;'; put '%do x=1 %to &sourcecnt;'; put '%let source=&&source&x;'; put '%let lib=%scan(&source,1,.);'; put '%let ds=%scan(&source,2,.);'; put '%let col=%scan(&source,3,.);'; put '%put &=source;'; put '%put &=lib;'; put '%dc_assignlib(READ,&lib)'; put 'proc sql;'; put 'create table dqdata&x as'; put 'select distinct "&&base_col&x" as base_col length=32'; put ',"&source" as rule_value length=74'; put ',cats(&col) as rule_data length=1000'; put ',0 as selectbox_order'; put 'from &lib..&ds'; put 'order by 1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc when selecting &&base_col&x from &orig_libds)'; put ')'; put 'proc append base=dqdata data=dqdata&x;run;'; put 'proc sql; drop table dqdata&x;'; put '%end;'; put '%mend dq_selects;'; put '%dq_selects()'; put 'proc sort data=dqdata;'; put 'by base_col selectbox_order;'; put 'run;'; put '%mp_getmaxvarlengths(work.sasdata1,outds=maxvarlengths)'; put 'data maxvarlengths;'; put 'set maxvarlengths;'; put 'if name=''_____DELETE__THIS__RECORD_____'' then mAXLEN=3;'; put 'run;'; put 'data xl_rules;'; put 'set &mpelib..mpe_excel_config;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(xl_libref)="%scan(&orig_libds,1,.)";'; put 'where also upcase(xl_table)="%scan(&orig_libds,2,.)";'; put 'where also xl_active=1;'; put 'keep xl_column xl_rule;'; put 'run;'; put '%mp_dsmeta(&libds, outds=dsmeta)'; put '/* send to the client */'; put '%webout(OPEN)'; put '%webout(OBJ,approvers)'; put '%webout(OBJ,cols)'; put '%webout(OBJ,dqdata)'; put '%webout(OBJ,dqrules)'; put '%webout(OBJ,dsmeta)'; put '%webout(OBJ,maxvarlengths)'; put '%webout(OBJ,query)'; put '%webout(OBJ,sasdata1,fmt=N,missing=STRING,showmeta=YES,dslabel=sasdata)'; put '%webout(OBJ,sasparams)'; put '%webout(OBJ,xl_rules)'; put '%webout(CLOSE)'; put '/*'; put '$N8601Bw'; put '$N8601BAw'; put '$N8601Ew'; put '$N8601EAw'; put '$N8601EHw'; put '$N8601EXw'; put '$N8601Hw'; put '$N8601Xw'; put 'B8601DAw'; put 'B8601DNw'; put 'B8601DTw'; put 'B8601DZw'; put 'B8601LZw'; put 'B8601TMw'; put 'B8601TZw'; put 'DATEw'; put 'DATEAMPMw'; put 'DATETIMEw'; put 'DAYw'; put 'DDMMYYw'; put 'DDMMYYxw'; put 'DOWNAMEw'; put 'DTDATEw'; put 'DTMONYYw'; put 'DTWKDATXw'; put 'DTYEARw'; put 'DTYYQCw'; put 'E8601DAw'; put 'E8601DNw'; put 'E8601DTw'; put 'E8601DZw'; put 'E8601LZw'; put 'E8601TMw'; put 'E8601TZw'; put 'HHMMw'; put 'HOURw'; put 'JULDAYw'; put 'JULIANw'; put 'MMDDYYw'; put 'MMDDYYxw'; put 'MMSSw'; put 'MMYYw'; put 'MMYYxw'; put 'MONNAMEw'; put 'MONTHw'; put 'MONYYw'; put 'PDJULGw'; put 'PDJULIw'; put 'QTRw'; put 'QTRRw'; put 'TIMEw'; put 'TIMEAMPMw'; put 'TODw'; put 'WEEKDATEw'; put 'WEEKDATXw'; put 'WEEKDAYw'; put 'WEEKUw'; put 'WEEKVw'; put 'WEEKWw'; put 'WORDDATEw'; put 'WORDDATXw'; put 'YEARw'; put 'YYMMw'; put 'YYMMxw'; put 'YYMMDDw'; put 'YYMMDDxw'; put 'YYMONw'; put 'YYQw'; put 'YYQxw'; put 'YYQRw'; put 'YYQRxw'; put '$N8601BAw'; put '$N8601Ew'; put '$N8601EAw'; put '$N8601EHw'; put '$N8601EXw'; put '$N8601Hw'; put '$N8601Xw'; put 'B8601DAw'; put 'B8601DNw'; put 'B8601DTw'; put 'B8601DZw'; put 'B8601LZw'; put 'B8601TMw'; put 'B8601TZw'; put 'E8601DAw'; put 'E8601DNw'; put 'E8601DTw'; put 'E8601DZw'; put 'E8601LZw'; put 'E8601TMw'; put 'E8601TZw'; put '*/'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getdynamiccolvals; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro dc_getservicecode(loc=,outref=);'; put '%mm_getstpcode(tree=&loc'; put ',outref=&outref'; put ')'; put '%mend dc_getservicecode;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_include(fileref'; put ',prefix=_'; put ',opts=SOURCE2'; put ',errds=work.mp_abort_errds'; put ')/*/STORE SOURCE*/;'; put '/* prepare precode */'; put '%local tempref;'; put '%let tempref=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &tempref;'; put 'set sashelp.vextfl(where=(fileref="%upcase(&fileref)"));'; put 'put ''%let _SYSINCLUDEFILEDEVICE='' xengine '';'';'; put 'name=scan(xpath,-1,''/\'');'; put 'put ''%let _SYSINCLUDEFILENAME='' name '';'';'; put 'path=subpad(xpath,1,length(xpath)-length(name)-1);'; put 'put ''%let _SYSINCLUDEFILEDIR='' path '';'';'; put 'put ''%let _SYSINCLUDEFILEFILEREF='' "&fileref;";'; put 'run;'; put '/* prepare the errds */'; put 'data &errds;'; put 'length msg mac $1000;'; put 'call missing(msg,mac);'; put 'iftrue=''1=0'';'; put 'run;'; put '/* include the include */'; put '%inc &tempref &fileref/&opts;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=%str(&_SYSINCLUDEFILEDIR/&_SYSINCLUDEFILENAME)'; put ',msg=%str(syscc=&syscc after executing &_SYSINCLUDEFILENAME)'; put ')'; put 'filename &tempref clear;'; put '%mend mp_include;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mp_validatecol(incol,rule,outcol);'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename();'; put '%if &rule=ISINT %then %do;'; put '&outcol=0;'; put 'if not missing(&incol) then do;'; put '&tempcol=input(&incol,?? best32.);'; put 'if not missing(&tempcol) then if mod(&tempcol,1)=0 then &outcol=1;'; put 'end;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=ISNUM %then %do;'; put '/*'; put 'credit SØREN LASSEN'; put 'https://sasmacro.blogspot.com/2009/06/welcome-isnum-macro.html'; put '*/'; put '&tempcol=input(&incol,?? best32.);'; put 'if missing(&tempcol) then &outcol=0;'; put 'else &outcol=1;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=LIBDS %then %do;'; put '/* match libref.dataset */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}\.[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for LIBDS";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%else %if &rule=FORMAT %then %do;'; put '/* match valid format - regex could probably be improved */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z\$]\w{0,31}\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for FORMAT";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%mend mp_validatecol;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getdynamiccolvals.sas'; put '@brief Provide dynamic list of values according to a SAS program or service'; put '@details Configuration is made in the MPE_VALIDATIONS table, the dropdown'; put 'can be either a SOFTSELECT_HOOK or HARDSELECT_HOOK.'; put 'Results are sent in ARRAY format for efficiency.'; put '

Service Inputs

'; put '
SASCONTROLTABLE
'; put '|LIBDS:$41.|VARIABLE_NM:$32.|'; put '|---|---|'; put '|DC258467.MPE_SECURITY|SAS_GROUP|'; put '
SOURCE_ROW
'; put 'This contains the raw values from the source table.'; put '

Service Outputs

'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5||'; put '|1|DISCOUNT_RT|"40%"|N|0.4||'; put '|1|DISCOUNT_RT|"30%"|N|0.3||'; put '|1|CURRENCY_SYMBOL|"GBP"|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|"RSD"|C||"RSD"|'; put '|2|DISCOUNT_RT|"50%"|N|0.5||'; put '|2|DISCOUNT_RT|"40%"|N|0.4||'; put '|2|CURRENCY_SYMBOL|"EUR"|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|"HKD"|C||"HKD"|'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li dc_getservicecode.sas'; put '@li mf_nobs.sas'; put '@li mp_abort.sas'; put '@li mp_include.sas'; put '@li mp_validatecol.sas'; put '@li mf_getapploc.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '/**'; put '* Validate inputs'; put '*/'; put '%let err_msg=;'; put 'data work.intest;'; put 'set work.SASCONTROLTABLE;'; put '/* validate libds */'; put '%mp_validatecol(LIBDS,LIBDS,is_libds)'; put '/* validate varname */'; put 'is_name=nvalid(variable_nm,''v7'');'; put 'putlog (_all_)(=);'; put 'if is_libds ne 1 then do;'; put 'msg=''ERR''!!''OR: Invalid libds:''!!libds;'; put 'call symputx(''err_msg'',msg);'; put 'stop;'; put 'end;'; put 'else if is_name ne 1 then do;'; put 'msg=''ERR''!!''OR: Invalid name:''!!variable_nm;'; put 'call symputx(''err_msg'',msg);'; put 'stop;'; put 'end;'; put 'else do;'; put 'call symputx(''variable_nm'',variable_nm);'; put 'call symputx(''libds'',libds);'; put 'end;'; put 'output;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc after reading work.sascontroltable)'; put ')'; put '%mp_abort(iftrue= (%mf_nobs(work.intest)=0)'; put ',mac=&_program'; put ',msg=%str(&err_msg)'; put ')'; put '%dc_assignlib(READ,%scan(&libds,1,.))'; put '/* ensure that work.dynamic_extended_values exists */'; put 'data work.dynamic_extended_values;'; put 'run;'; put '/**'; put '* Get the code to execute'; put '*/'; put 'data work.codetest;'; put 'set &mpelib..MPE_VALIDATIONS;'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and base_lib="%scan(&libds,1,.)"'; put 'and base_ds="%scan(&libds,2,.)"'; put 'and base_col="&variable_nm"'; put 'and RULE_TYPE in (''HARDSELECT_HOOK'',''SOFTSELECT_HOOK'')'; put 'and RULE_ACTIVE=1;'; put 'putlog (_all_)(=);'; put 'if length(rule_value)>1 then do;'; put 'call symputx(''pgmloc'',rule_value);'; put 'if scan(upcase(rule_value),-1,''.'')=''SAS'' then do;'; put 'call symputx(''pgmtype'',''PGM'');'; put 'call symputx(''pgmloc'',rule_value);'; put 'end;'; put 'else do;'; put 'apploc="%mf_getapploc()";'; put 'if substr(rule_value,1,1) ne ''/'''; put 'then rule_value=cats(apploc,''/'',rule_value);'; put 'call symputx(''pgmloc'',rule_value);'; put 'call symputx(''pgmtype'',''JOB'');'; put 'end;'; put 'output;'; put 'stop;'; put 'end;'; put 'else stop;'; put 'run;'; put '%mp_abort(iftrue= (%mf_nobs(work.codetest)=0)'; put ',mac=&_program'; put ',msg=%str(Hook not found in &mpelib..mpe_validations for &libds..&variable_nm)'; put ')'; put '%macro getdynamiccolvals();'; put '%if &pgmtype=PGM %then %do;'; put 'filename sascode "&pgmloc";'; put '%end;'; put '%else %do;'; put '%dc_getservicecode(loc=&pgmloc'; put ',outref=sascode'; put ')'; put '%end;'; put '%mend getdynamiccolvals;'; put '%getdynamiccolvals()'; put '/* execute the dynamic code */'; put '%mp_include(sascode)'; put '%mp_abort(mode=INCLUDE)'; put '/* ensure that the DISPLAY_INDEX variable exists */'; put 'data work.dynamic_values;'; put 'length DISPLAY_INDEX 8 DISPLAY_VALUE $32767;'; put 'if _n_=1 then call missing(of _all_);'; put 'set work.dynamic_values;'; put 'display_index=coalesce(display_index,_n_);'; put 'keep DISPLAY_INDEX DISPLAY_VALUE RAW_VALUE;'; put 'run;'; put '/* ensure that work.dynamic_extended_values exists with correct types */'; put 'data work.dynamic_extended_values;'; put 'length DISPLAY_INDEX 8 EXTRA_COL_NAME $32 DISPLAY_VALUE $5000 DISPLAY_TYPE $1'; put 'RAW_VALUE_NUM 8 RAW_VALUE_CHAR $5000 FORCED_VALUE 8;'; put 'if _n_=1 then call missing(of _all_);'; put 'set work.dynamic_extended_values;'; put 'run;'; put '%webout(OPEN)'; put '%webout(ARR,dynamic_values,fmt=N)'; put '%webout(ARR,dynamic_extended_values,fmt=N)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getlog; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mp_dirlist(path=%sysfunc(pathname(work))'; put ', fref=0'; put ', outds=work.mp_dirlist'; put ', getattrs=NO'; put ', showparent=NO'; put ', maxdepth=0'; put ', level=0 /* The level of recursion to perform. For internal use only. */'; put ')/*/STORE SOURCE*/;'; put '%let getattrs=%upcase(&getattrs)XX;'; put '/* temp table */'; put '%local out_ds;'; put 'data;run;'; put '%let out_ds=%str(&syslast);'; put '/* drop main (top) table if it exists */'; put '%if &level=0 %then %do;'; put '%mp_dropmembers(%scan(&outds,-1,.), libref=WORK)'; put '%end;'; put 'data &out_ds(compress=no'; put 'keep=file_or_folder filepath filename ext msg directory level'; put ');'; put 'length directory filepath $500 fref fref2 $8 file_or_folder $6 filename $80'; put 'ext $20 msg $200 foption $16;'; put 'if _n_=1 then call missing(of _all_);'; put 'retain level &level;'; put '%if &fref=0 %then %do;'; put 'rc = filename(fref, "&path");'; put '%end;'; put '%else %do;'; put 'fref="&fref";'; put 'rc=0;'; put '%end;'; put 'if rc = 0 then do;'; put 'did = dopen(fref);'; put 'if did=0 then do;'; put 'putlog "NOTE: This directory is empty, or does not exist - &path";'; put 'msg=sysmsg();'; put 'put msg;'; put 'put _all_;'; put 'stop;'; put 'end;'; put '/* attribute is OS-dependent - could be "Directory" or "Directory Name" */'; put 'numopts=doptnum(did);'; put 'do i=1 to numopts;'; put 'foption=doptname(did,i);'; put 'if foption=:''Directory'' then i=numopts;'; put 'end;'; put 'directory=dinfo(did,foption);'; put 'rc = filename(fref);'; put 'end;'; put 'else do;'; put 'msg=sysmsg();'; put 'put _all_;'; put 'stop;'; put 'end;'; put 'dnum = dnum(did);'; put 'do i = 1 to dnum;'; put 'filename = dread(did, i);'; put 'filepath=cats(directory,''/'',filename);'; put 'rc = filename(fref2,filepath);'; put 'midd=dopen(fref2);'; put 'dmsg=sysmsg();'; put 'if did > 0 then file_or_folder=''folder'';'; put 'rc=dclose(midd);'; put 'midf=fopen(fref2);'; put 'fmsg=sysmsg();'; put 'if midf > 0 then file_or_folder=''file'';'; put 'rc=fclose(midf);'; put 'if index(fmsg,''File is in use'') or index(dmsg,''is not a directory'')'; put 'then file_or_folder=''file'';'; put 'else if index(fmsg,''Insufficient authorization'') then file_or_folder=''file'';'; put 'else if file_or_folder='''' then file_or_folder=''locked'';'; put 'if file_or_folder=''file'' then do;'; put 'ext = prxchange(''s/.*\.{1,1}(.*)/$1/'', 1, filename);'; put 'if filename = ext then ext = '' '';'; put 'end;'; put 'else do;'; put 'ext='''';'; put 'file_or_folder=''folder'';'; put 'end;'; put 'output;'; put 'end;'; put 'rc = dclose(did);'; put '%if &showparent=YES and &level=0 %then %do;'; put 'filepath=directory;'; put 'file_or_folder=''folder'';'; put 'ext='''';'; put 'filename=scan(directory,-1,''/\'');'; put 'msg='''';'; put 'level=&level;'; put 'output;'; put '%end;'; put 'stop;'; put 'run;'; put '%if %substr(&getattrs,1,1)=Y %then %do;'; put 'data &out_ds;'; put 'set &out_ds;'; put 'length infoname infoval $60 fref $8;'; put 'if _n_=1 then call missing(fref);'; put 'rc=filename(fref,filepath);'; put 'drop rc infoname fid i close fref;'; put 'if file_or_folder=''file'' then do;'; put 'fid=fopen(fref);'; put 'if fid le 0 then do;'; put 'msg=sysmsg();'; put 'putlog "Could not open file:" filepath fid= ;'; put 'sasname=''_MCNOTVALID_'';'; put 'output;'; put 'end;'; put 'else do i=1 to foptnum(fid);'; put 'infoname=foptname(fid,i);'; put 'infoval=finfo(fid,infoname);'; put 'sasname=compress(infoname, ''_'', ''adik'');'; put 'if anydigit(sasname)=1 then sasname=substr(sasname,anyalpha(sasname));'; put 'if upcase(sasname) ne ''FILENAME'' then output;'; put 'end;'; put 'close=fclose(fid);'; put 'end;'; put 'else do;'; put 'fid=dopen(fref);'; put 'if fid le 0 then do;'; put 'msg=sysmsg();'; put 'putlog "Could not open folder:" filepath fid= ;'; put 'sasname=''_MCNOTVALID_'';'; put 'output;'; put 'end;'; put 'else do i=1 to doptnum(fid);'; put 'infoname=doptname(fid,i);'; put 'infoval=dinfo(fid,infoname);'; put 'sasname=compress(infoname, ''_'', ''adik'');'; put 'if anydigit(sasname)=1 then sasname=substr(sasname,anyalpha(sasname));'; put 'if upcase(sasname) ne ''FILENAME'' then output;'; put 'end;'; put 'close=dclose(fid);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by filepath sasname;'; put 'proc transpose data=&out_ds out=&out_ds(drop=_:);'; put 'id sasname;'; put 'var infoval;'; put 'by filepath file_or_folder filename ext ;'; put 'run;'; put '%end;'; put 'data &out_ds;'; put 'set &out_ds(where=(filepath ne ''''));'; put 'run;'; put '/**'; put '* The above transpose can mean that some updates create additional columns.'; put '* This necessitates the occasional use of datastep over proc append.'; put '*/'; put '%if %mf_existds(&outds) %then %do;'; put '%local basevars appvars newvars;'; put '%let basevars=%mf_getvarlist(&outds);'; put '%let appvars=%mf_getvarlist(&out_ds);'; put '%let newvars=%length(%mf_wordsinstr1butnotstr2(Str1=&appvars,Str2=&basevars));'; put '%if &newvars>0 %then %do;'; put 'data &outds;'; put 'set &outds &out_ds;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&outds data=&out_ds force nowarn;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do;'; put 'proc append base=&outds data=&out_ds;'; put 'run;'; put '%end;'; put '/* recursive call */'; put '%if &maxdepth>&level or &maxdepth=MAX %then %do;'; put 'data _null_;'; put 'set &out_ds;'; put 'where file_or_folder=''folder'';'; put '%if &showparent=YES and &level=0 %then %do;'; put 'if filepath ne directory;'; put '%end;'; put 'length code $10000;'; put 'code=cats(''%nrstr(%mp_dirlist(path='',filepath,",outds=&outds"'; put ',",getattrs=&getattrs,level=%eval(&level+1),maxdepth=&maxdepth))");'; put 'put code=;'; put 'call execute(code);'; put 'run;'; put '%end;'; put '/* tidy up */'; put 'proc sql;'; put 'drop table &out_ds;'; put '%mend mp_dirlist;'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mfs_httpheader(header_name'; put ',header_value'; put ')/*/STORE SOURCE*/;'; put '%global sasjs_stpsrv_header_loc;'; put '%local fref fid i;'; put '%if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc)) ne 0 %then %do;'; put '%put &=fref &=sasjs_stpsrv_header_loc;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(&header_name): %str(&header_value)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%mend mfs_httpheader;'; put '%macro mp_streamfile('; put 'contenttype=TEXT'; put ',inloc='; put ',inref=0'; put ',iftrue=%str(1=1)'; put ',outname='; put ',outref=_webout'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let contentype=%upcase(&contenttype);'; put '%let outref=%upcase(&outref);'; put '%local platform; %let platform=%mf_getplatform();'; put '/**'; put '* check engine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put '%local streamweb;'; put '%let streamweb=0;'; put 'data _null_;'; put 'set sashelp.vextfl(where=(upcase(fileref)="&outref"));'; put 'if xengine=''STREAM'' then call symputx(''streamweb'',1,''l'');'; put 'run;'; put '%if &contentype=CSV %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/csv'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/csv'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/csv)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=EXCEL %then %do;'; put '/* suitable for XLS format */'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/vnd.ms-excel'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype=''application/vnd.ms-excel'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/vnd.ms-excel)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=GIF or &contentype=JPEG or &contentype=PNG %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"image/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="image/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,image/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=HTML or &contenttype=MARKDOWN %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"text/%lowcase(&contenttype)");'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json"'; put 'contenttype="text/%lowcase(&contenttype)"'; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,text/%lowcase(&contenttype))'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=TEXT %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/text'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/text'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/text)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=WOFF or &contentype=WOFF2 or &contentype=TTF %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"font/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="font/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,font/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=XLSX %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'','; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype='; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type'; put ',application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; put ')'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=ZIP %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/zip'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.zip'''; put 'contenttype=''application/zip'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/zip)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Content Type &contenttype NOT SUPPORTED by &sysmacroname!;'; put '%end;'; put '%if &inref ne 0 %then %do;'; put '%mp_binarycopy(inref=&inref,outref=&outref)'; put '%end;'; put '%else %do;'; put '%mp_binarycopy(inloc="&inloc",outref=&outref)'; put '%end;'; put '%mend mp_streamfile;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getlog.sas'; put '@brief Downloads the submission, useful if there is an error'; put '@details'; put '

SAS Macros

'; put '@li mf_verifymacvars.sas'; put '@li mf_getuser.sas'; put '@li mp_abort.sas'; put '@li mp_dirlist.sas'; put '@li mp_binarycopy.sas'; put '@li mp_streamfile.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(table)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: table)'; put ')'; put '/* security checks */'; put '%let user=%mf_getuser();'; put '%let check_access=0;'; put 'proc sql noprint;'; put 'select count(*) into: check_access from &mpelib..mpe_loads'; put 'where csv_dir="&table" and user_nm="&user";'; put '%mp_abort(iftrue= (&check_access=0 )'; put ',msg=%str(&user not authorised to download audit data for &table)'; put ',mac=mpestp_getlog.sas'; put ')'; put 'ods package(ProdOutput) open nopf;'; put 'options notes source2 mprint;'; put '%mp_dirlist(outds=dirs, path=&mpelocapprovals/&TABLE)'; put 'data _null_;'; put 'set dirs;'; put 'if scan(filename,-1,''.'') not in (''sas7bdat'',''wpd'');'; put 'retain str1'; put '"ods package(ProdOutput) add file=''&mpelocapprovals/&TABLE/";'; put 'retain str2 "'' mimetype=''text/plain'' path=''contents/'';";'; put 'call execute(cats(str1,filename,str2));'; put 'run;'; put '%let archive_path=%sysfunc(pathname(work));'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put 'ods package(ProdOutput) publish archive properties'; put '(archive_name= "&table..zip" archive_path="&archive_path");'; put 'ods package(ProdOutput) close;'; put '/* now serve zip file to client */'; put '%mp_streamfile(contenttype=ZIP'; put ',inloc=%str(&archive_path/&table..zip)'; put ',outname=&table..zip'; put ')'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getsubmits; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getsubmits.sas'; put '@brief Returns a list of staged data items that need to be approved'; put '@details'; put '

SAS Macros

'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '@li mpeinit.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put 'PROC FORMAT;'; put 'picture yymmddhhmmss other=''%0Y-%0m-%0d %0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put 'proc sql noprint;'; put 'create table work.fromsas (rename=(SUBMITTED_ON=SUBMITTED_ON_DTTM)) as'; put 'select table_id'; put ',cats(base_lib,''.'',base_ds) as base_table'; put ',input_vars'; put ',input_obs'; put ',submitted_by_nm'; put ',submitted_reason_txt'; put ',''DEPRECATED'' as approve_group'; put ',submit_status_cd as review_status_id'; put ',reviewed_by_nm'; put ',reviewed_on_dttm'; put ',cats(put(SUBMITTED_ON_DTTM,yymmddhhmmss.)) as SUBMITTED_ON'; put 'from &mpelib..mpe_submit'; put 'where submitted_by_nm="%mf_getuser()" and submit_status_cd=''SUBMITTED'''; put 'order by submitted_on_dttm desc;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,fromSAS)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=loadfile; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mpe_alerts(alert_event='; put ', alert_lib='; put ', alert_ds='; put ', dsid='; put ');'; put '/* exit if not configured */'; put '%global DC_EMAIL_ALERTS;'; put '%if &DC_EMAIL_ALERTS ne YES %then %do;'; put '%put DCNOTE: Email alerts are not configured;'; put '%put DCNOTE: (dc_email_alerts=&dc_email_alerts in &mpelib..mpe_config);'; put '%return;'; put '%end;'; put '%let alert_event=%upcase(&alert_event);'; put '%let alert_lib=%upcase(&alert_lib);'; put '%let alert_ds=%upcase(&alert_ds);'; put '%let from_user=%mf_getuser();'; put '/* get users TO which the email should be sent */'; put 'proc sql noprint;'; put 'create table users as select distinct a.alert_user,'; put 'b.user_displayname,'; put 'b.user_email'; put 'from &mpelib..mpe_alerts'; put '(where=(&dc_dttmtfmt. lt tx_to)) a'; put 'left join &mpelib..mpe_emails'; put '(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on upcase(trim(a.alert_user))=upcase(trim(b.user_name))'; put 'where a.alert_event in ("&alert_event","*ALL*")'; put 'and a.alert_lib in ("&alert_lib","*ALL*")'; put 'and a.alert_ds in ("&alert_ds","*ALL*");'; put '%local isThere;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere>0 %then %do;'; put 'insert into &syslast set alert_user="&from_user";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data emails;'; put 'set users;'; put 'length emailuri uri text $256; call missing(emailuri,uri); drop emailuri uri;'; put '/* get displayname */'; put 'text=cats("omsobj:Person?@Name=''",alert_user,"''");'; put 'if metadata_getnobj(text,1,uri)<=0 then do;'; put 'putlog "DCWARN: &from_user not found";'; put 'return;'; put 'end;'; put 'else if user_displayname = '''' then do;'; put 'if metadata_getattr(uri,''DisplayName'',user_displayname)<0 then do;'; put 'putlog ''DCWARN: strange err, no displayname attribute of user URI'';'; put 'end;'; put 'end;'; put 'if index(user_email,''@'') then return;'; put '/* get email from metadata if not in input table */'; put 'if metadata_getnasn(uri,"EmailAddresses",1,emailuri)<=0 then do;'; put 'putlog "DCWARN: " alert_user " has no emails in MPE_EMAILS or metadata!";'; put 'if metadata_getattr(emailuri,"Address",user_email)<0 then do;'; put 'putlog ''DCWARN: Unexpected error! Valid emailURI but no email. Weird.'';'; put 'end;'; put 'end;'; put '/* only keep valid emails */'; put 'if index(user_email,''@'') ;'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select user_email into: emails separated by ''" "'' from emails;'; put '/* exit if nobody to email */'; put '%if %mf_getattrn(emails,NLOBS)=0 %then %do;'; put '%put NOTE: No alerts configured (mpe_alerts.sas);'; put '%return;'; put '%end;'; put '/* display email options */'; put 'data _null_;'; put 'set sashelp.voption(where=(group=''EMAIL''));'; put 'put optname ''='' setting;'; put 'run;'; put 'filename __out email ("&emails")'; put 'subject="Table &alert_lib..&alert_ds has been &alert_event";'; put '%local SUBMITTED_TXT;'; put '%if &alert_event=SUBMITTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_submit;'; put 'where table_id="&dsid" and submit_status_cd=''SUBMITTED'';'; put 'call symputx(''SUBMITTED_TXT'',submitted_reason_txt,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been proposed by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''SUBMITTED_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=APPROVED %then %do;'; put '/* there is no approval message */'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been approved by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=REJECTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_review;'; put 'where table_id="&dsid" and review_status_id=''REJECTED'';'; put 'call symputx(''REVIEW_REASON_TXT'',REVIEW_REASON_TXT,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been rejected by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''REVIEW_REASON_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put 'filename __out clear;'; put '%mend mpe_alerts ;'; put '%macro mpe_loadfail('; put 'status=FAILED - &syscc'; put ',now=%sysfunc(datetime())'; put ',approvals='; put ',mperef='; put ',reason_txt='; put ',mac=mpe_loadfail.sas'; put ',dc_dttmtfmt=E8601DT26.6'; put ');'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'update &mpelib..mpe_loads'; put 'set STATUS=symget(''status'')'; put ', duration=&dur'; put ', processed_dttm=&dc_dttmtfmt.'; put ', approvals = symget(''approvals'')'; put ', reason_txt= symget(''reason_txt'')'; put 'where CSV_DIR="&mperef";'; put '%let syscc=666;'; put '%mp_abort(msg=%superq(status)\n%superq(reason_txt),mac=&mac)'; put '%mend mpe_loadfail;'; put '%macro dc_getservicecode(loc=,outref=);'; put '%mm_getstpcode(tree=&loc'; put ',outref=&outref'; put ')'; put '%mend dc_getservicecode;'; put '%macro mp_include(fileref'; put ',prefix=_'; put ',opts=SOURCE2'; put ',errds=work.mp_abort_errds'; put ')/*/STORE SOURCE*/;'; put '/* prepare precode */'; put '%local tempref;'; put '%let tempref=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &tempref;'; put 'set sashelp.vextfl(where=(fileref="%upcase(&fileref)"));'; put 'put ''%let _SYSINCLUDEFILEDEVICE='' xengine '';'';'; put 'name=scan(xpath,-1,''/\'');'; put 'put ''%let _SYSINCLUDEFILENAME='' name '';'';'; put 'path=subpad(xpath,1,length(xpath)-length(name)-1);'; put 'put ''%let _SYSINCLUDEFILEDIR='' path '';'';'; put 'put ''%let _SYSINCLUDEFILEFILEREF='' "&fileref;";'; put 'run;'; put '/* prepare the errds */'; put 'data &errds;'; put 'length msg mac $1000;'; put 'call missing(msg,mac);'; put 'iftrue=''1=0'';'; put 'run;'; put '/* include the include */'; put '%inc &tempref &fileref/&opts;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=%str(&_SYSINCLUDEFILEDIR/&_SYSINCLUDEFILENAME)'; put ',msg=%str(syscc=&syscc after executing &_SYSINCLUDEFILENAME)'; put ')'; put 'filename &tempref clear;'; put '%mend mp_include;'; put '%macro mpe_runhook(hookvar);'; put '%local pgmloc pgmtype;'; put '%let pgmtype=0;'; put '%put &sysmacroname: &=hookvar;'; put '%if %length(&&&hookvar)>0 %then %do;'; put '%put &sysmacroname: Executing &&&hookvar;'; put 'data _null_;'; put 'rule_value=symget("&hookvar");'; put 'if scan(upcase(rule_value),-1,''.'')=''SAS'' then do;'; put 'call symputx(''pgmtype'',''PGM'');'; put 'call symputx(''pgmloc'',rule_value);'; put 'end;'; put 'else do;'; put 'apploc="%mf_getapploc()";'; put 'if substr(rule_value,1,1) ne ''/'''; put 'then rule_value=cats(apploc,''/'',rule_value);'; put 'call symputx(''pgmloc'',rule_value);'; put 'call symputx(''pgmtype'',''JOB'');'; put 'end;'; put 'run;'; put '%if &pgmtype=PGM %then %do;'; put 'filename sascode "&pgmloc";'; put '%end;'; put '%else %do;'; put '%dc_getservicecode(loc=&pgmloc'; put ',outref=sascode'; put ')'; put '%end;'; put '/* the below script will need to modify work.STAGING_DS */'; put '%local x; %let x=; /* legacy feature */'; put '%mp_include(sascode)'; put '%end;'; put '%mend mpe_runhook;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_mkdir(dir'; put ')/*/STORE SOURCE*/;'; put '%local lastchar child parent;'; put '%let lastchar = %substr(&dir, %length(&dir));'; put '%if (%bquote(&lastchar) eq %str(:)) %then %do;'; put '/* Cannot create drive mappings */'; put '%return;'; put '%end;'; put '%if (%bquote(&lastchar)=%str(/)) or (%bquote(&lastchar)=%str(\)) %then %do;'; put '/* last char is a slash */'; put '%if (%length(&dir) eq 1) %then %do;'; put '/* one single slash - root location is assumed to exist */'; put '%return;'; put '%end;'; put '%else %do;'; put '/* strip last slash */'; put '%let dir = %substr(&dir, 1, %length(&dir)-1);'; put '%end;'; put '%end;'; put '%if (%sysfunc(fileexist(%bquote(&dir))) = 0) %then %do;'; put '/* directory does not exist so prepare to create */'; put '/* first get the childmost directory */'; put '%let child = %scan(&dir, -1, %str(/\:));'; put '/*'; put 'If child name = path name then there are no parents to create. Else'; put 'they must be recursively scanned.'; put '*/'; put '%if (%length(&dir) gt %length(&child)) %then %do;'; put '%let parent = %substr(&dir, 1, %length(&dir)-%length(&child));'; put '%mf_mkdir(&parent)'; put '%end;'; put '/*'; put 'Now create the directory. Complain loudly of any errs.'; put '*/'; put '%let dname = %sysfunc(dcreate(&child, &parent));'; put '%if (%bquote(&dname) eq ) %then %do;'; put '%put %str(ERR)OR: could not create &parent + &child;'; put '%abort cancel;'; put '%end;'; put '%else %do;'; put '%put Directory created: &dir;'; put '%end;'; put '%end;'; put '/* exit quietly if directory did exist.*/'; put '%mend mf_mkdir;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'FMTNAME char(32) label=''Format name'''; put '/*'; put 'to accommodate larger START values, mp_loadformat.sas will need the'; put 'SQL dependency removed (proc sql needs to accommodate 3 index values in'; put 'a 32767 ibufsize limit)'; put '*/'; put ',START char(10000) label=''Starting value for format'''; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',TYPE char(1) label=''Type of format'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%mend mddl_sas_cntlout;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mp_cntlout('; put 'iftrue=(1=1)'; put ',libcat='; put ',cntlout=work.fmtextract'; put ',fmtlist=0'; put ')/*/STORE SOURCE*/;'; put '%local ddlds cntlds i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let ddlds=%mf_getuniquename();'; put '%let cntlds=%mf_getuniquename();'; put '%mddl_sas_cntlout(libds=&ddlds)'; put '%if %index(&libcat,-)>0 and %scan(&libcat,2,-)=FC %then %do;'; put '%let libcat=%scan(&libcat,1,-);'; put '%end;'; put 'proc format lib=&libcat cntlout=&cntlds;'; put '%if "&fmtlist" ne "0" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'if type="N" then do;'; put 'start=cats(start);'; put 'end=cats(end);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by fmtname start;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mp_dirlist(path=%sysfunc(pathname(work))'; put ', fref=0'; put ', outds=work.mp_dirlist'; put ', getattrs=NO'; put ', showparent=NO'; put ', maxdepth=0'; put ', level=0 /* The level of recursion to perform. For internal use only. */'; put ')/*/STORE SOURCE*/;'; put '%let getattrs=%upcase(&getattrs)XX;'; put '/* temp table */'; put '%local out_ds;'; put 'data;run;'; put '%let out_ds=%str(&syslast);'; put '/* drop main (top) table if it exists */'; put '%if &level=0 %then %do;'; put '%mp_dropmembers(%scan(&outds,-1,.), libref=WORK)'; put '%end;'; put 'data &out_ds(compress=no'; put 'keep=file_or_folder filepath filename ext msg directory level'; put ');'; put 'length directory filepath $500 fref fref2 $8 file_or_folder $6 filename $80'; put 'ext $20 msg $200 foption $16;'; put 'if _n_=1 then call missing(of _all_);'; put 'retain level &level;'; put '%if &fref=0 %then %do;'; put 'rc = filename(fref, "&path");'; put '%end;'; put '%else %do;'; put 'fref="&fref";'; put 'rc=0;'; put '%end;'; put 'if rc = 0 then do;'; put 'did = dopen(fref);'; put 'if did=0 then do;'; put 'putlog "NOTE: This directory is empty, or does not exist - &path";'; put 'msg=sysmsg();'; put 'put msg;'; put 'put _all_;'; put 'stop;'; put 'end;'; put '/* attribute is OS-dependent - could be "Directory" or "Directory Name" */'; put 'numopts=doptnum(did);'; put 'do i=1 to numopts;'; put 'foption=doptname(did,i);'; put 'if foption=:''Directory'' then i=numopts;'; put 'end;'; put 'directory=dinfo(did,foption);'; put 'rc = filename(fref);'; put 'end;'; put 'else do;'; put 'msg=sysmsg();'; put 'put _all_;'; put 'stop;'; put 'end;'; put 'dnum = dnum(did);'; put 'do i = 1 to dnum;'; put 'filename = dread(did, i);'; put 'filepath=cats(directory,''/'',filename);'; put 'rc = filename(fref2,filepath);'; put 'midd=dopen(fref2);'; put 'dmsg=sysmsg();'; put 'if did > 0 then file_or_folder=''folder'';'; put 'rc=dclose(midd);'; put 'midf=fopen(fref2);'; put 'fmsg=sysmsg();'; put 'if midf > 0 then file_or_folder=''file'';'; put 'rc=fclose(midf);'; put 'if index(fmsg,''File is in use'') or index(dmsg,''is not a directory'')'; put 'then file_or_folder=''file'';'; put 'else if index(fmsg,''Insufficient authorization'') then file_or_folder=''file'';'; put 'else if file_or_folder='''' then file_or_folder=''locked'';'; put 'if file_or_folder=''file'' then do;'; put 'ext = prxchange(''s/.*\.{1,1}(.*)/$1/'', 1, filename);'; put 'if filename = ext then ext = '' '';'; put 'end;'; put 'else do;'; put 'ext='''';'; put 'file_or_folder=''folder'';'; put 'end;'; put 'output;'; put 'end;'; put 'rc = dclose(did);'; put '%if &showparent=YES and &level=0 %then %do;'; put 'filepath=directory;'; put 'file_or_folder=''folder'';'; put 'ext='''';'; put 'filename=scan(directory,-1,''/\'');'; put 'msg='''';'; put 'level=&level;'; put 'output;'; put '%end;'; put 'stop;'; put 'run;'; put '%if %substr(&getattrs,1,1)=Y %then %do;'; put 'data &out_ds;'; put 'set &out_ds;'; put 'length infoname infoval $60 fref $8;'; put 'if _n_=1 then call missing(fref);'; put 'rc=filename(fref,filepath);'; put 'drop rc infoname fid i close fref;'; put 'if file_or_folder=''file'' then do;'; put 'fid=fopen(fref);'; put 'if fid le 0 then do;'; put 'msg=sysmsg();'; put 'putlog "Could not open file:" filepath fid= ;'; put 'sasname=''_MCNOTVALID_'';'; put 'output;'; put 'end;'; put 'else do i=1 to foptnum(fid);'; put 'infoname=foptname(fid,i);'; put 'infoval=finfo(fid,infoname);'; put 'sasname=compress(infoname, ''_'', ''adik'');'; put 'if anydigit(sasname)=1 then sasname=substr(sasname,anyalpha(sasname));'; put 'if upcase(sasname) ne ''FILENAME'' then output;'; put 'end;'; put 'close=fclose(fid);'; put 'end;'; put 'else do;'; put 'fid=dopen(fref);'; put 'if fid le 0 then do;'; put 'msg=sysmsg();'; put 'putlog "Could not open folder:" filepath fid= ;'; put 'sasname=''_MCNOTVALID_'';'; put 'output;'; put 'end;'; put 'else do i=1 to doptnum(fid);'; put 'infoname=doptname(fid,i);'; put 'infoval=dinfo(fid,infoname);'; put 'sasname=compress(infoname, ''_'', ''adik'');'; put 'if anydigit(sasname)=1 then sasname=substr(sasname,anyalpha(sasname));'; put 'if upcase(sasname) ne ''FILENAME'' then output;'; put 'end;'; put 'close=dclose(fid);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by filepath sasname;'; put 'proc transpose data=&out_ds out=&out_ds(drop=_:);'; put 'id sasname;'; put 'var infoval;'; put 'by filepath file_or_folder filename ext ;'; put 'run;'; put '%end;'; put 'data &out_ds;'; put 'set &out_ds(where=(filepath ne ''''));'; put 'run;'; put '/**'; put '* The above transpose can mean that some updates create additional columns.'; put '* This necessitates the occasional use of datastep over proc append.'; put '*/'; put '%if %mf_existds(&outds) %then %do;'; put '%local basevars appvars newvars;'; put '%let basevars=%mf_getvarlist(&outds);'; put '%let appvars=%mf_getvarlist(&out_ds);'; put '%let newvars=%length(%mf_wordsinstr1butnotstr2(Str1=&appvars,Str2=&basevars));'; put '%if &newvars>0 %then %do;'; put 'data &outds;'; put 'set &outds &out_ds;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&outds data=&out_ds force nowarn;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do;'; put 'proc append base=&outds data=&out_ds;'; put 'run;'; put '%end;'; put '/* recursive call */'; put '%if &maxdepth>&level or &maxdepth=MAX %then %do;'; put 'data _null_;'; put 'set &out_ds;'; put 'where file_or_folder=''folder'';'; put '%if &showparent=YES and &level=0 %then %do;'; put 'if filepath ne directory;'; put '%end;'; put 'length code $10000;'; put 'code=cats(''%nrstr(%mp_dirlist(path='',filepath,",outds=&outds"'; put ',",getattrs=&getattrs,level=%eval(&level+1),maxdepth=&maxdepth))");'; put 'put code=;'; put 'call execute(code);'; put 'run;'; put '%end;'; put '/* tidy up */'; put 'proc sql;'; put 'drop table &out_ds;'; put '%mend mp_dirlist;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_inc)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status;'; put 'proc sql noprint;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro mpe_loader('; put 'mperef= /* name of subfolder containing the staged data */'; put ',mDebug=0 /* set to 1 for development or debugging */'; put ',submitted_reason_txt= /* populates column of same name in sumo_approvals*/'; put ',approver= /* allows a userid to be provided for direct approval email */'; put ',url= /* optional - url for debugging */'; put ',dlm=%str(,)'; put ',termstr=crlf'; put ',dc_dttmtfmt=E8601DT26.6'; put ');'; put '%put entered mpe_loader from &=_program;'; put '%put &=url;'; put '%put &=termstr;'; put '%put &=dlm;'; put '/* determine full path to CSV directory */'; put '%local now;'; put '%let now=&dc_dttmtfmt;'; put '%put &=now;'; put '/**'; put '* get full path to package (only subdirectory passed through)'; put '*/'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(mperef mpelocapprovals)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing: mperef mpelocapprovals)'; put ')'; put '%let csv_dir=%trim(&mpelocapprovals/&mperef);'; put '/* exit if package has already been uploaded */'; put '%local check;'; put 'proc sql noprint;'; put 'select count(*) into: check'; put 'from &mpelib..mpe_loads'; put 'where csv_dir="&mperef";'; put '%if &check %then %do;'; put '%mp_abort(msg=Folder &mperef already has an entry in &mpelib..mpe_loads'; put ',mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put '/* get CSV directory contents */'; put '%mp_dirlist(path=&csv_dir,outds=WORK.getfiles)'; put 'data WORK.csvs;'; put 'set WORK.getfiles;'; put 'if upcase(scan(filename,3,''.''))=''CSV'' then do;'; put 'lib=upcase(scan(filename,1,''.''));'; put 'ds=upcase(scan(filename,2,''.''));'; put 'output;'; put 'end;'; put 'run;'; put '/* get table attributes */'; put 'proc sql noprint;'; put 'create table WORK.sumo_tables as'; put 'select a.filename, b.*'; put 'from WORK.csvs a'; put 'left join &mpelib..mpe_tables b'; put 'on a.lib=b.libref'; put 'and a.ds=b.dsn'; put 'where b.tx_from le &now'; put 'and &now lt b.tx_to;'; put '/* define user as meta user if available */'; put '%local user;'; put '%let user=%mf_getuser();'; put '/* check if there is actually a table to load */'; put '%if %mf_getattrn(WORK.sumo_tables,NLOBS)=0 %then %do;'; put '%let msg=Table not registered in &mpelib..mpe_tables;'; put '%mpe_loadfail('; put 'status=&msg'; put ',now=&now'; put ',mperef=&mperef'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%mp_abort(msg=&msg,mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put 'proc sql;'; put 'insert into &mpelib..mpe_loads'; put 'set USER_NM="&user"'; put ',STATUS=''IN PROGRESS'''; put ',CSV_dir="&mperef"'; put ',PROCESSED_DTTM=&now;'; put '/* import CSV */'; put '%let droplist=;'; put '%let attrib=;'; put '%let droplist=;'; put '%let libref=;'; put '%let DS=;'; put '/* get table info */'; put 'data _null_;'; put 'set sumo_tables;'; put 'libds=upcase(cats(libref,''.'',dsn));'; put 'call symputx(''orig_libds'',libds);'; put 'is_fmt=0;'; put 'if substr(cats(reverse(dsn)),1,3)=:''CF-'' then do;'; put 'libds=scan(libds,1,''-'');'; put 'putlog "Format Catalog Captured";'; put 'libds=''work.fmtextract'';'; put 'is_fmt=1;'; put 'end;'; put 'call symputx(''is_fmt'',is_fmt);'; put 'call symputx(''libds'',libds);'; put 'call symputx(''FNAME'',filename);'; put 'call symputx(''LIBREF'',libref);'; put 'call symputx(''DS'',dsn);'; put 'call symputx(''LOADTYPE'',loadtype);'; put 'call symputx(''BUSKEY'',buskey);'; put 'call symputx(''VAR_TXFROM'',var_txfrom);'; put 'call symputx(''VAR_TXTO'',var_txto);'; put 'call symputx(''VAR_BUSFROM'',var_busfrom);'; put 'call symputx(''VAR_BUSTO'',var_busto);'; put 'call symputx(''VAR_PROCESSED'',var_processed);'; put 'call symputx(''RK_UNDERLYING'',RK_UNDERLYING);'; put 'call symputx(''POST_EDIT_HOOK'',POST_EDIT_HOOK);'; put 'call symputx(''NOTES'',NOTES);'; put 'call symputx(''PK'',coalescec(RK_UNDERLYING,buskey));'; put 'call symputx(''NUM_OF_APPROVALS_REQUIRED'',NUM_OF_APPROVALS_REQUIRED,''l'');'; put 'put (_all_)(=);'; put 'stop;'; put 'run;'; put '%if %length(&ds)=0 %then %do;'; put '%let msg=%str(ERR)OR: Unable to extract record from &mpelib..mpe_tables;'; put '%mpe_loadfail('; put 'status=FAILED'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%quote(&msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%mp_abort(msg=&msg,mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put '/* export format catalog */'; put '%mp_cntlout('; put 'iftrue=(&is_fmt=1)'; put ',libcat=&orig_libds'; put ',fmtlist=0'; put ',cntlout=work.fmtextract'; put ')'; put '/* user must have EDIT access to load a table */'; put '%mpe_accesscheck(&orig_libds'; put ',outds=work.sumo_access'; put ',user=&user'; put ',access_level=EDIT )'; put '%put exiting accesscheck;'; put '%if %mf_getattrn(work.sumo_access,NLOBS)=0 %then %do;'; put '%let msg=%str(ERR)OR: User is not authorised to edit &orig_libds!;'; put '%mpe_loadfail('; put 'status=UNAUTHORISED'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%quote(&msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%mp_abort(msg=&msg,mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put '%put now importing: "&csv_dir/&fname" termstr=&termstr;'; put '/* get the variables from the CSV */'; put 'data vars_csv1(index=(idxname=(varnum name)) drop=infile);'; put 'infile "&csv_dir/&fname" lrecl=32767 dsd termstr=&termstr encoding=''utf-8'';'; put 'input;'; put 'length infile $32767;'; put 'infile=compress(_infile_,''"'',);'; put 'infile=compress(infile,"''",);'; put 'format name $32.;'; put 'putlog ''received vars: '' infile;'; put 'call symputx(''received_vars'',infile,''l'');'; put 'do varnum=1 to countw(infile,"&dlm");'; put '/* keep writeable chars */'; put 'name=compress(upcase(scan(infile,varnum)),,''kw'');'; put 'if name ne "_____DELETE__THIS__RECORD_____" then output;'; put 'end;'; put 'stop;'; put 'run;'; put '%put received_vars = &received_vars;'; put '%dc_assignlib(WRITE,&libref)'; put '/* get list of variables and their formats */'; put 'proc contents noprint data=&libds'; put 'out=vars(keep=name type length varnum format:);'; put 'run;'; put 'data vars(keep=name type length varnum format);'; put 'set vars(rename=(format=format2 type=type2));'; put 'name=upcase(name);'; put 'format2=upcase(format2);'; put '/* not interested in transaction or processing dates'; put '(append table must be supplied without them) */'; put 'if name not in ("&VAR_TXFROM","&VAR_TXTO","&VAR_PROCESSED"'; put ',"_____DELETE__THIS__RECORD_____");'; put 'if type2 in (2,6) then do;'; put 'length format $49.;'; put 'if format2='''' then format=cats(''$'',length,''.'');'; put 'else format=cats(format2,max(formatl,length),''.'');'; put 'type=''char'';'; put 'end;'; put 'else do;'; put 'if format2='''' then format=cats(length,''.'');'; put 'else if format2=:''DATETIME'' then do;'; put 'format=''DATETIME19.'';'; put 'end;'; put 'else if format2=:''DATE'' or format2=:''DDMMYY'''; put 'or format2=:''MMDDYY'' or format2=:''YYMMDD'''; put 'or format2=:''E8601DA'' or format2=:''B8601DA'''; put 'then do;'; put 'format=''DATE9.'';'; put 'end;'; put 'else if format2=''BEST'' & formatl=0 then format=cats(''BEST'',length,''.'');'; put '/*'; put 'else if format2=:''DATETIME'' or format2=:''DATE'' or format2=:''DDMMYY'''; put 'or format2=:''MMDDYY'' or format2=:''YYMMDD'' then do;'; put '*date or datetime format so use original ;'; put 'dsid=open("&libref..&ds");'; put 'vnum=varnum(dsid,name);'; put 'format=varfmt(dsid,vnum);'; put 'dsid=close(dsid);'; put 'end;'; put '*/'; put 'else do;'; put 'if formatl=0 then formatl=length;'; put 'format=cats(format2,formatl,''.'',formatd);'; put 'end;'; put 'type=''num'';'; put 'end;'; put 'put (_all_)(=);'; put 'run;'; put '/* build attrib statement */'; put 'data vars_attrib;'; put 'length attrib_statement $32767 type2 $20;'; put 'set vars end=lastobs;'; put 'retain attrib_statement;'; put 'if type=''char'' then type2=''$'';'; put 'str1=catx('' '',name,''length='',cats(type2,length));'; put 'attrib_statement=trim(attrib_statement)!!'' ''!!trim(str1);'; put 'if lastobs then call symputx(''ATTRIB'',attrib_statement,''L'');'; put 'run;'; put '/* build input statement - first get vars in right order'; put 'and join with target formats*/'; put 'proc sql noprint;'; put 'create table vars_csv2 as'; put 'select b.*'; put 'from vars_csv1 a'; put 'left join vars_attrib b'; put 'on a.name=b.name'; put 'order by a.varnum;'; put '/* make sure that the variables we are importing, actually'; put 'exist on the target table */'; put '/** edit - extra variables are now simply ignored'; put '%local very_bad_vars;'; put 'select name into: very_bad_vars separated by '' '''; put 'from vars_csv1'; put 'where name not in (select name from vars)'; put 'and name ne "_____DELETE__THIS__RECORD_____";'; put '%if %length(&very_bad_vars) > 0 %then %do;'; put '%let msg=%str(WARNING: The following vars are not defined in %trim('; put ')&libref..&ds, yet they exist in &csv_dir/&ds..csv: &very_bad_vars);'; put '%mpe_loadfail('; put 'status=FAILED'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%quote(&msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '**/'; put '/* now build input statement */'; put 'data final_check;'; put 'set vars_csv2 end=lastobs;'; put 'length input_statement $32767 type2 $20 droplist $32767;'; put 'retain input_statement droplist;'; put '/* Build input statement - CATCH EXCEPTIONS HERE!*/'; put 'if name in (''QUOTE_DTTM'') then do;'; put 'name=cats(name,''2'');'; put 'droplist=catx('' '',trim(droplist),name);'; put 'type2=''$20.'';/* converted below */'; put 'end;'; put 'else if type=''char'' then type2=cats(''$CHAR'', length,''.'');'; put 'else if format=''DATE9.'' then type2=''ANYDTDTE.'';'; put 'else if format=''DATETIME19.'' then type2=''ANYDTDTM.'';'; put 'else if format=:''TIME'' then type2=''ANYDTTME.'';'; put 'else if name='''' then do;/* additional vars in input data */'; put 'name=''_____DELETE__THIS__VARIABLE_____'';'; put 'droplist=catx('' '',trim(droplist),''_____DELETE__THIS__VARIABLE_____'');'; put 'type2=''$1.'';'; put 'end;'; put 'else type2=''best32.'';'; put '* else type2=cats(length,''.'');'; put 'input_statement=catx('' '',input_statement,name,'':'',type2);'; put 'if lastobs then do;'; put 'call symputx(''INPUT'', input_statement,''L'');'; put 'if trim(droplist) ne '''' then'; put 'call symputx(''droplist'',"drop "!!droplist!!'';'',''l'');'; put 'end;'; put 'run;'; put '%let mpeloadstop=0;'; put 'data work.STAGING_DS;'; put '&droplist;'; put 'infile "&csv_dir/&fname" dsd dlm="&dlm" lrecl=32767'; put 'firstobs=2 missover termstr=&termstr encoding=''utf-8'';'; put 'attrib &attrib ;'; put 'if _n_=1 then call missing (of _all_);'; put 'missing a b c d e f g h i j k l m n o p q r s t u v w x y z _;'; put 'input'; put '%if %scan(%quote(&received_vars),1)=_____DELETE__THIS__RECORD_____ %then %do;'; put '_____DELETE__THIS__RECORD_____: $3.'; put '%end;'; put '&input;'; put '%if %index(%quote(&attrib.),UNLIKELY_VAR ) %then %do;'; put '/*UNLIKELY_VAR=input(UNLIKELY_VAR2,ANYDTDTM21.);*/'; put '/* SPECIAL LOGIC FOR SPECIAL VARS */'; put '%end;'; put 'if _error_ ne 0 then do;'; put 'putlog _infile_;'; put 'call symputx(''mpeloadstop'',_n_);'; put 'stop;'; put 'end;'; put '/* remove all blank rows */'; put 'if compress(cats(of _all_),''.'')='' '' then delete;'; put 'run;'; put '%if &mpeloadstop>0 %then %do;'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put '%put redirecting log output to capture return message;'; put '%put currentloc=&logloc;'; put 'filename tmp temp;'; put 'proc printto log=tmp;run;'; put 'data _null_;'; put '&droplist;'; put 'infile "&csv_dir/&fname" dsd dlm="&dlm" lrecl=32767 firstobs=2'; put 'missover termstr=&termstr;'; put 'attrib &attrib ;'; put 'input'; put '%if %scan(%quote(&received_vars),1)=_____DELETE__THIS__RECORD_____'; put '%then %do;'; put '_____DELETE__THIS__RECORD_____: $3.'; put '%end;'; put '&input;'; put 'if _error_ then stop;'; put 'run;'; put '/* get log back */'; put 'proc printto log=&logloc;run;'; put 'data _null_; infile tmp; input; putlog _infile_;run;'; put '/* scan log for invalid data warning */'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'length msg1 msg2 msg3 msg4 msg5 msg url $32767;'; put 'if index(_infile_,''NOTE: Invalid data for'') then do;'; put 'msg1=_infile_;'; put 'input;'; put 'msg2=_infile_;'; put 'input;'; put 'msg3=_infile_;'; put 'input;'; put 'msg4=_infile_;'; put 'input;'; put 'msg5=_infile_;'; put 'url=symget(''url'');'; put 'msg=catx(''\n'',msg1,msg2,msg3,msg4,msg5,''\n'',url);'; put 'call symputx(''msg'',msg);'; put 'stop;'; put 'end;'; put 'run;'; put '%mpe_loadfail('; put 'status=FAILED'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%superq(msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '/* check that the table is unique on PK */'; put 'proc sort data=work.STAGING_DS dupout=work.MPE_DUPS (keep=&pk) nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.MPE_DUPS,NLOBS)>0 %then %do;'; put '%local duplist;'; put 'data _null_;'; put 'set work.mpe_dups;'; put '%do i=1 %to %sysfunc(countw(&pk));'; put '%let iWord=%scan(&pk,&i);'; put 'call symputx(''duplist'',symget(''duplist'')!!'; put '" &iWord="!!trim(&iWord));'; put '%end;'; put 'run;'; put '%let msg=This upload contains duplicates on the Primary Key columns %trim('; put ')(&pk) \n Please remove the duplicates and try again. %trim('; put ')\n &duplist \n ;'; put '%mp_abort(msg=%superq(msg),mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put '%if &syscc gt 4 %then %do;'; put '%let msg=SYSCC=&syscc prior to post edit hook (%superq(syserrortext));'; put '%mpe_loadfail('; put 'status=FAILED - &syscc'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%superq(msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '%mpe_runhook(POST_EDIT_HOOK)'; put '/* stop if err */'; put '%if &syscc gt 4 %then %do;'; put '%let msg=ERR in post edit hook (&post_edit_hook);'; put '%mpe_loadfail('; put 'status=FAILED - &syscc'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%quote(&msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '/**'; put '* send to approve process'; put '*/'; put '/* create a dataset key (datetime plus 3 digit random number plus PID) */'; put '/* send dataset to approvals subfolder with same name as subfolder */'; put 'libname approval "&mpelocapprovals/&mperef";'; put 'data approval.&mperef;'; put 'set work.staging_ds;'; put 'run;'; put 'proc export data=approval.&mperef'; put 'outfile="&mpelocapprovals/&mperef/&mperef..csv"'; put 'dbms=csv'; put 'replace;'; put 'run;'; put '/* update the control dataset with relevant info */'; put 'data append_app;'; put 'if 0 then set &mpelib..mpe_submit;/* get formats */'; put 'call missing (of _all_);'; put 'TABLE_ID="&mperef";'; put 'submit_status_cd=''SUBMITTED'';'; put 'submitted_by_nm="%mf_getuser()";'; put 'base_lib="&libref";'; put 'base_ds="&ds";'; put 'submitted_on_dttm=&now;'; put 'submitted_reason_txt=symget(''submitted_reason_txt'');'; put 'input_vars=%mf_getattrn(approval.&mperef,NVARS);'; put 'input_obs=%mf_getattrn(approval.&mperef,NLOBS);'; put 'num_of_approvals_required=&NUM_OF_APPROVALS_REQUIRED;'; put 'num_of_approvals_remaining=&NUM_OF_APPROVALS_REQUIRED;'; put 'reviewed_by_nm='''';'; put 'reviewed_on_dttm=.;'; put 'run;'; put '%mp_lockanytable(LOCK,lib=&mpelib,ds=mpe_submit,'; put 'ref=%str(&mperef update in &_program),'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'proc append base= &mpelib..mpe_submit data=append_app;'; put 'run;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&mpelib,ds=mpe_submit,'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put '/* send email to REVIEW members */'; put '%put sending mpe_alerts;'; put '%mpe_alerts(alert_event=SUBMITTED'; put ', alert_lib=&libref'; put ', alert_ds=&ds'; put ', dsid=&mperef'; put ')'; put '/* DISABLE EMAIL FOR NOW'; put '%let b2=REASON: %quote(&submitted_reason_txt);'; put '%local URLNOTES;'; put '%if %length(¬es)>0 %then %let URLNOTES=%quote(%sysfunc(urlencode(¬es)));'; put '%let b3=%str(Click to review / approve: )%trim('; put ')%str(http://&_srvname:&_srvport&_url?_PROGRAM=/Web/approvals&)%trim('; put ')TABLEID=&dsid%str(&)BASETABLE=&libref..&ds%str(&)NOTES=&URLNOTES;'; put '%let b4=%str(Reference ID: &mperef);'; put '*/'; put '%put mpe_loader finishing up with syscc=&syscc;'; put '%if &syscc le 4 %then %do;'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'putlog ''Updating mpe_loads with the following query:'';'; put 'putlog "update &mpelib..mpe_loads set STATUS=''SUCCESS''";'; put 'putlog " , duration=" dur;'; put 'putlog " , processed_dttm=" now;'; put 'putlog " , approvals = ''&libref..&ds''";'; put 'putlog " where CSV_DIR=''&mperef'';";'; put 'run;'; put 'proc sql;'; put 'update &mpelib..mpe_loads set STATUS=''SUCCESS'''; put ', duration=&dur'; put ', processed_dttm=&now'; put ', approvals = "&libref..&ds"'; put 'where CSV_DIR="&mperef";'; put '%end;'; put '%else %do;'; put '%mpe_loadfail('; put 'status="FAILED - &syscc"'; put ',now=&now'; put ',approvals=&libref..&ds'; put ',mperef=&mperef'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '%mend mpe_loader;'; put '%macro mp_cleancsv(in=NOTPROVIDED,out=NOTPROVIDED,qchar=''22''x);'; put '%if "&in"="NOTPROVIDED" or "&out"="NOTPROVIDED" %then %do;'; put '%put %str(ERR)OR: Please provide valid input (&in) & output (&out) locations;'; put '%return;'; put '%end;'; put '/* presence of a period(.) indicates a physical location */'; put '%if %index(&in,.) %then %let in="&in";'; put '%if %index(&out,.) %then %let out="&out";'; put '/**'; put '* convert all cr and crlf within quotes to lf'; put '* convert all other cr or lf to crlf'; put '*/'; put 'data _null_;'; put 'infile &in recfm=n ;'; put 'file &out recfm=n;'; put 'retain isq iscrlf 0 qchar &qchar;'; put 'input inchar $char1. ;'; put 'if inchar=qchar then isq = mod(isq+1,2);'; put 'if isq then do;'; put '/* inside a quote change cr and crlf to lf */'; put 'if inchar=''0D''x then do;'; put 'put ''0A''x;'; put 'input inchar $char1.;'; put 'if inchar ne ''0A''x then do;'; put 'put inchar $char1.;'; put 'if inchar=qchar then isq = mod(isq+1,2);'; put 'end;'; put 'end;'; put 'else put inchar $char1.;'; put 'end;'; put 'else do;'; put '/* outside a quote, change cr and lf to crlf */'; put 'if inchar=''0D''x then do;'; put 'crblank:'; put 'put ''0D0A''x;'; put 'input inchar $char1.;'; put 'if inchar=''0D''x then do;'; put '/* multiple CR indicates CR formatted file with blank lines */'; put 'goto crblank;'; put 'end;'; put 'else if inchar ne ''0A''x then do;'; put 'put inchar $char1.;'; put 'if inchar=qchar then isq = mod(isq+1,2);'; put 'end;'; put 'end;'; put 'else if inchar=''0A''x then put ''0D0A''x;'; put 'else put inchar $char1.;'; put 'end;'; put 'run;'; put '%mend mp_cleancsv;'; put '/** @endcond */'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file loadfile.sas'; put '@brief Loads a file'; put '@details'; put '

SAS Macros

'; put '@li mddl_sas_cntlout.sas'; put '@li mp_abort.sas'; put '@li mf_getplatform.sas'; put '@li mf_getuser.sas'; put '@li mf_getvarlist.sas'; put '@li mf_mkdir.sas'; put '@li mf_verifymacvars.sas'; put '@li mf_wordsinstr1butnotstr2.sas'; put '@li dc_assignlib.sas'; put '@li mpe_getgroups.sas'; put '@li mp_lockfilecheck.sas'; put '@li mpe_loader.sas'; put '@li mp_cleancsv.sas'; put '@li mp_binarycopy.sas'; put '@li mpeinit.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%global table dlm;'; put '%mpeinit(fetch=NO)'; put '%global _WEBIN_FILENAME1 _WEBIN_FILENAME2'; put '_WEBIN_FILEREF _WEBIN_FILEREF1 _WEBIN_FILEREF2;'; put '%macro load();'; put '%if %mf_getplatform()=SASVIYA %then %do;'; put '%global _webin_fileuri _webin_fileuri1 _webin_fileuri2;'; put '%let _webin_fileuri1=%sysfunc(coalescec(&_webin_fileuri1,&_webin_fileuri));'; put '%if "&_webin_fileuri1" ne "" %then %do;'; put '%put &=_webin_fileuri1;'; put 'filename sjfref1 filesrvc "&_webin_fileuri1";'; put '%let _WEBIN_FILEREF1=sjfref1;'; put '%end;'; put '%if "&_webin_fileuri2" ne "" %then %do;'; put '%put &=_webin_fileuri2;'; put 'filename sjfref2 filesrvc "&_webin_fileuri2";'; put '%let _WEBIN_FILEREF2=sjfref2;'; put '%end;'; put '%end;'; put '%mend load;'; put '%load()'; put '%let _WEBIN_FILENAME1=%sysfunc(coalescec(&_WEBIN_FILENAME1,&_WEBIN_FILENAME));'; put '%let _WEBIN_FILEREF1=%sysfunc(coalescec(&_WEBIN_FILEREF1,&_WEBIN_FILEREF));'; put '%let abort=0;'; put '/* we do not know if the excel file will be first or second fileref */'; put 'data _null_;'; put 'ext1=upcase(scan(symget(''_WEBIN_FILENAME1''),-1,''.''));'; put 'ext2=upcase(scan(symget(''_WEBIN_FILENAME2''),-1,''.''));'; put 'if ext1=''CSV'' then do;'; put 'csvname=symget(''_WEBIN_FILENAME1'');'; put 'csvref=symget(''_WEBIN_FILEREF1'');'; put 'xlsname=symget(''_WEBIN_FILENAME2'');'; put 'xlsref=symget(''_WEBIN_FILEREF2'');'; put 'end;'; put 'else if ext2=''CSV'' then do;'; put 'csvname=symget(''_WEBIN_FILENAME2'');'; put 'csvref=symget(''_WEBIN_FILEREF2'');'; put 'xlsname=symget(''_WEBIN_FILENAME1'');'; put 'xlsref=symget(''_WEBIN_FILEREF1'');'; put 'end;'; put 'else call symputx(''abort'',1);'; put 'call symputx(''csvname'',csvname);'; put 'call symputx(''csvref'',csvref);'; put 'call symputx(''xlsname'',xlsname);'; put 'call symputx(''xlsref'',coalescec(xlsref,''0''));'; put 'run;'; put '%mp_abort(iftrue= (&abort=1)'; put ',mac=&_program'; put ',msg=%str(File "&csvname" or "&xlsname" must be a CSV!'; put '(Comma separated with .csv extension))'; put ')'; put '%let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(table)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: table)'; put ')'; put '%let table=%upcase(%trim(&table));'; put '/* load parameters */'; put 'data _null_;'; put 'libds=upcase(symget(''table''));'; put 'call symputx(''orig_libds'',libds);'; put 'call symputx(''orig_lib'',scan(libds,1,''.''));'; put 'call symputx(''orig_ds'',scan(libds,2,''.''));'; put 'is_fmt=0;'; put 'if substr(cats(reverse(libds)),1,3)=:''CF-'' then do;'; put 'libds=scan(libds,1,''-'');'; put 'putlog "Format Catalog Captured";'; put 'libds=''work.fmtextract'';'; put 'call symputx(''libds'',libds);'; put 'call execute(''%mddl_sas_cntlout(libds=work.fmtextract)'');'; put 'is_fmt=1;'; put 'end;'; put 'else call symputx(''libds'',libds);'; put 'call symputx(''is_fmt'',is_fmt);'; put 'putlog (_all_)(=);'; put 'run;'; put '/* check that the user has the requisite access */'; put '%mpe_getgroups(user=&user,outds=groups)'; put 'proc sql;'; put 'create table accesscheck as'; put 'select * from groups'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="EDIT"'; put 'and ('; put '(libref="&orig_lib" and dsn="&orig_ds")'; put 'or (libref="&orig_lib" and dsn="*ALL*")'; put 'or (libref="*ALL*" and dsn="*ALL*")'; put 'or (libref="*ALL*" and dsn="&orig_ds")'; put '));'; put '%let nobs=;'; put 'select count(*) into: nobs from &syslast;'; put '%mp_abort(iftrue= (&nobs=0)'; put ',mac=&sysmacroname'; put ',msg=%str(&user not authorised to load &orig_libds per &mpelib..mpe_security)'; put ')'; put '%dc_assignlib(WRITE,&orig_lib)'; put '%mp_abort(iftrue= (&syscc ge 4)'; put ',mac=loadfile'; put ',msg=%str(Issue assigning library &orig_lib)'; put ')'; put '%global txfrom txto processed;'; put 'data _null_;'; put 'set &mpelib..MPE_TABLES;'; put 'where libref="&orig_lib" and dsn="&orig_ds";'; put 'call symputx(''txfrom'',var_txfrom);'; put 'call symputx(''txto'',var_txto);'; put 'call symputx(''processed'',var_processed);'; put 'run;'; put '%mp_lockfilecheck(libds=&orig_libds)'; put 'data compare;'; put 'set &libds(drop=&txfrom &txto &processed);'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc line 80)'; put ')'; put '/* get line terminator, assume it''s the first cr, lf, or crlf */'; put 'data _null_;'; put 'length text $32767 term $4;'; put 'call missing (of _all_);'; put 'fid=fopen("&csvref",''I'',32767,''b'');'; put 'rc=fread(fid);'; put 'rc2=fget(fid,text,32767);'; put 'cr=find(text,''0D''x );'; put 'lf=find(text,''0A''x );'; put 'crlf=find(text,''0D0A''x);'; put 'rc=fclose(fid);'; put 'if crlf>0 & cr0 & crlf0 & cr>0 & lf0 then term=''LF'';'; put 'else term=''CR'';'; put 'call symputx(''termstr'',term);'; put 'run;'; put 'data _null_;'; put 'infile &csvref lrecl=32000 dsd termstr=&termstr;'; put 'input;'; put 'length incols_unsorted $32000 dlm $1;'; put 'incols_unsorted=compress(upcase(_infile_),"''"!!''"'');'; put '/* dlm has length 1 so will be the first non alpha / digit char */'; put '/* expectation is that there will not be any crazy characters in first col! */'; put 'dlm=compress(incols_unsorted,''_ '',''ad'');'; put 'incols_unsorted=compress(incols_unsorted,dlm!!''_'',''kado'');'; put 'incols_unsorted=tranwrd(incols_unsorted,dlm,'' '');'; put 'call symputx(''incols_unsorted'',incols_unsorted);'; put 'call symputx(''dlm'',dlm);'; put 'putlog incols_unsorted=;'; put 'putlog dlm=;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc line 99)'; put ')'; put '%let basecols=%upcase(%mf_getvarlist(work.compare,dlm=%str( )));'; put '%let missing_cols=%trim('; put '%mf_wordsInStr1ButNotStr2('; put 'Str1=&basecols'; put ',Str2=&incols_unsorted'; put '));'; put '%let msg='; put 'Expected cols: &basecols'; put '
Received cols: &incols_unsorted'; put '
Missing cols: &missing_cols'; put ';'; put '%mp_abort(iftrue= (%length(%trim(&missing_cols)) > 1 or &syscc ne 0)'; put ',mac=mpestp_loadfile.sas'; put ',msg=%superq(msg)'; put ')'; put '%let msg=0;'; put 'PROC FORMAT;'; put 'picture yymmddhhmmss other=''%0Y%0m%0d_%0H%0M%0S'' (datatype=datetime);'; put 'RUN;'; put '/* create a dataset key (datetime plus 6 digit random number plus PID) */'; put '%let mperef=DC%left(%sysfunc(datetime(),B8601DT19.3))_%substr('; put '%sysfunc(ranuni(0)),3,6)_%substr(%str(&sysjobid ),1,4);'; put '/* Create package folder and redirect the log */'; put '%let dir=&mpelocapprovals/&mperef;'; put '%mf_mkdir(&dir)'; put '/* clean embedded line breaks and force CRLF line endings */'; put '%mp_cleancsv(in=&csvref, out=&dir/&orig_libds..csv)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(issue in mp_cleancsv)'; put ')'; put '%put; %put; %put log is being redirected;'; put '%let url=_program=%substr(&_program'; put ',1,%length(&_program)-8)getlog%nrstr(&)table=&mperef;'; put '%put to retrieve, visit this url:; %put;%put;'; put '%put &url;'; put '%put;'; put '/* proc printto log="&dir/weblog.txt";run; */'; put 'libname approve "&dir";'; put 'options mprint;'; put '%put &=mperef;'; put '%put &=termstr;'; put '%put &=dlm;'; put '%mpe_loader(mperef=&mperef'; put ',submitted_reason_txt=%quote(File upload: %superq(csvname))'; put ',dlm=%superq(dlm)'; put ',url=%superq(url)'; put ',termstr=CRLF'; put ',dc_dttmtfmt=&dc_dttmtfmt'; put ')'; put '%mp_abort(mode=INCLUDE)'; put '%mp_abort('; put 'iftrue= (%sysfunc(fileexist(%sysfunc(pathname(work))/mf_abort.error)) ne 0)'; put ',mac=&_program'; put ',msg=%nrstr(Problem occurred in &sysmacroname (mf_abort.error file found))'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=mpestp_loadfile.sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put 'filename outref "&dir/BKP_&xlsname";'; put '%mp_binarycopy(iftrue=("&xlsref" ne "0"),inref=&xlsref,outref=outref)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc when backing up source file &xlsname)'; put ')'; put 'data sasparams;'; put 'STATUS=''SUCCESS'';'; put 'DSID="&mperef";'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,sasparams)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=stagedata; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mpe_alerts(alert_event='; put ', alert_lib='; put ', alert_ds='; put ', dsid='; put ');'; put '/* exit if not configured */'; put '%global DC_EMAIL_ALERTS;'; put '%if &DC_EMAIL_ALERTS ne YES %then %do;'; put '%put DCNOTE: Email alerts are not configured;'; put '%put DCNOTE: (dc_email_alerts=&dc_email_alerts in &mpelib..mpe_config);'; put '%return;'; put '%end;'; put '%let alert_event=%upcase(&alert_event);'; put '%let alert_lib=%upcase(&alert_lib);'; put '%let alert_ds=%upcase(&alert_ds);'; put '%let from_user=%mf_getuser();'; put '/* get users TO which the email should be sent */'; put 'proc sql noprint;'; put 'create table users as select distinct a.alert_user,'; put 'b.user_displayname,'; put 'b.user_email'; put 'from &mpelib..mpe_alerts'; put '(where=(&dc_dttmtfmt. lt tx_to)) a'; put 'left join &mpelib..mpe_emails'; put '(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on upcase(trim(a.alert_user))=upcase(trim(b.user_name))'; put 'where a.alert_event in ("&alert_event","*ALL*")'; put 'and a.alert_lib in ("&alert_lib","*ALL*")'; put 'and a.alert_ds in ("&alert_ds","*ALL*");'; put '%local isThere;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere>0 %then %do;'; put 'insert into &syslast set alert_user="&from_user";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data emails;'; put 'set users;'; put 'length emailuri uri text $256; call missing(emailuri,uri); drop emailuri uri;'; put '/* get displayname */'; put 'text=cats("omsobj:Person?@Name=''",alert_user,"''");'; put 'if metadata_getnobj(text,1,uri)<=0 then do;'; put 'putlog "DCWARN: &from_user not found";'; put 'return;'; put 'end;'; put 'else if user_displayname = '''' then do;'; put 'if metadata_getattr(uri,''DisplayName'',user_displayname)<0 then do;'; put 'putlog ''DCWARN: strange err, no displayname attribute of user URI'';'; put 'end;'; put 'end;'; put 'if index(user_email,''@'') then return;'; put '/* get email from metadata if not in input table */'; put 'if metadata_getnasn(uri,"EmailAddresses",1,emailuri)<=0 then do;'; put 'putlog "DCWARN: " alert_user " has no emails in MPE_EMAILS or metadata!";'; put 'if metadata_getattr(emailuri,"Address",user_email)<0 then do;'; put 'putlog ''DCWARN: Unexpected error! Valid emailURI but no email. Weird.'';'; put 'end;'; put 'end;'; put '/* only keep valid emails */'; put 'if index(user_email,''@'') ;'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select user_email into: emails separated by ''" "'' from emails;'; put '/* exit if nobody to email */'; put '%if %mf_getattrn(emails,NLOBS)=0 %then %do;'; put '%put NOTE: No alerts configured (mpe_alerts.sas);'; put '%return;'; put '%end;'; put '/* display email options */'; put 'data _null_;'; put 'set sashelp.voption(where=(group=''EMAIL''));'; put 'put optname ''='' setting;'; put 'run;'; put 'filename __out email ("&emails")'; put 'subject="Table &alert_lib..&alert_ds has been &alert_event";'; put '%local SUBMITTED_TXT;'; put '%if &alert_event=SUBMITTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_submit;'; put 'where table_id="&dsid" and submit_status_cd=''SUBMITTED'';'; put 'call symputx(''SUBMITTED_TXT'',submitted_reason_txt,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been proposed by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''SUBMITTED_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=APPROVED %then %do;'; put '/* there is no approval message */'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been approved by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=REJECTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_review;'; put 'where table_id="&dsid" and review_status_id=''REJECTED'';'; put 'call symputx(''REVIEW_REASON_TXT'',REVIEW_REASON_TXT,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been rejected by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''REVIEW_REASON_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put 'filename __out clear;'; put '%mend mpe_alerts ;'; put '%macro mpe_loadfail('; put 'status=FAILED - &syscc'; put ',now=%sysfunc(datetime())'; put ',approvals='; put ',mperef='; put ',reason_txt='; put ',mac=mpe_loadfail.sas'; put ',dc_dttmtfmt=E8601DT26.6'; put ');'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'update &mpelib..mpe_loads'; put 'set STATUS=symget(''status'')'; put ', duration=&dur'; put ', processed_dttm=&dc_dttmtfmt.'; put ', approvals = symget(''approvals'')'; put ', reason_txt= symget(''reason_txt'')'; put 'where CSV_DIR="&mperef";'; put '%let syscc=666;'; put '%mp_abort(msg=%superq(status)\n%superq(reason_txt),mac=&mac)'; put '%mend mpe_loadfail;'; put '%macro dc_getservicecode(loc=,outref=);'; put '%mm_getstpcode(tree=&loc'; put ',outref=&outref'; put ')'; put '%mend dc_getservicecode;'; put '%macro mp_include(fileref'; put ',prefix=_'; put ',opts=SOURCE2'; put ',errds=work.mp_abort_errds'; put ')/*/STORE SOURCE*/;'; put '/* prepare precode */'; put '%local tempref;'; put '%let tempref=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &tempref;'; put 'set sashelp.vextfl(where=(fileref="%upcase(&fileref)"));'; put 'put ''%let _SYSINCLUDEFILEDEVICE='' xengine '';'';'; put 'name=scan(xpath,-1,''/\'');'; put 'put ''%let _SYSINCLUDEFILENAME='' name '';'';'; put 'path=subpad(xpath,1,length(xpath)-length(name)-1);'; put 'put ''%let _SYSINCLUDEFILEDIR='' path '';'';'; put 'put ''%let _SYSINCLUDEFILEFILEREF='' "&fileref;";'; put 'run;'; put '/* prepare the errds */'; put 'data &errds;'; put 'length msg mac $1000;'; put 'call missing(msg,mac);'; put 'iftrue=''1=0'';'; put 'run;'; put '/* include the include */'; put '%inc &tempref &fileref/&opts;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=%str(&_SYSINCLUDEFILEDIR/&_SYSINCLUDEFILENAME)'; put ',msg=%str(syscc=&syscc after executing &_SYSINCLUDEFILENAME)'; put ')'; put 'filename &tempref clear;'; put '%mend mp_include;'; put '%macro mpe_runhook(hookvar);'; put '%local pgmloc pgmtype;'; put '%let pgmtype=0;'; put '%put &sysmacroname: &=hookvar;'; put '%if %length(&&&hookvar)>0 %then %do;'; put '%put &sysmacroname: Executing &&&hookvar;'; put 'data _null_;'; put 'rule_value=symget("&hookvar");'; put 'if scan(upcase(rule_value),-1,''.'')=''SAS'' then do;'; put 'call symputx(''pgmtype'',''PGM'');'; put 'call symputx(''pgmloc'',rule_value);'; put 'end;'; put 'else do;'; put 'apploc="%mf_getapploc()";'; put 'if substr(rule_value,1,1) ne ''/'''; put 'then rule_value=cats(apploc,''/'',rule_value);'; put 'call symputx(''pgmloc'',rule_value);'; put 'call symputx(''pgmtype'',''JOB'');'; put 'end;'; put 'run;'; put '%if &pgmtype=PGM %then %do;'; put 'filename sascode "&pgmloc";'; put '%end;'; put '%else %do;'; put '%dc_getservicecode(loc=&pgmloc'; put ',outref=sascode'; put ')'; put '%end;'; put '/* the below script will need to modify work.STAGING_DS */'; put '%local x; %let x=; /* legacy feature */'; put '%mp_include(sascode)'; put '%end;'; put '%mend mpe_runhook;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_mkdir(dir'; put ')/*/STORE SOURCE*/;'; put '%local lastchar child parent;'; put '%let lastchar = %substr(&dir, %length(&dir));'; put '%if (%bquote(&lastchar) eq %str(:)) %then %do;'; put '/* Cannot create drive mappings */'; put '%return;'; put '%end;'; put '%if (%bquote(&lastchar)=%str(/)) or (%bquote(&lastchar)=%str(\)) %then %do;'; put '/* last char is a slash */'; put '%if (%length(&dir) eq 1) %then %do;'; put '/* one single slash - root location is assumed to exist */'; put '%return;'; put '%end;'; put '%else %do;'; put '/* strip last slash */'; put '%let dir = %substr(&dir, 1, %length(&dir)-1);'; put '%end;'; put '%end;'; put '%if (%sysfunc(fileexist(%bquote(&dir))) = 0) %then %do;'; put '/* directory does not exist so prepare to create */'; put '/* first get the childmost directory */'; put '%let child = %scan(&dir, -1, %str(/\:));'; put '/*'; put 'If child name = path name then there are no parents to create. Else'; put 'they must be recursively scanned.'; put '*/'; put '%if (%length(&dir) gt %length(&child)) %then %do;'; put '%let parent = %substr(&dir, 1, %length(&dir)-%length(&child));'; put '%mf_mkdir(&parent)'; put '%end;'; put '/*'; put 'Now create the directory. Complain loudly of any errs.'; put '*/'; put '%let dname = %sysfunc(dcreate(&child, &parent));'; put '%if (%bquote(&dname) eq ) %then %do;'; put '%put %str(ERR)OR: could not create &parent + &child;'; put '%abort cancel;'; put '%end;'; put '%else %do;'; put '%put Directory created: &dir;'; put '%end;'; put '%end;'; put '/* exit quietly if directory did exist.*/'; put '%mend mf_mkdir;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'FMTNAME char(32) label=''Format name'''; put '/*'; put 'to accommodate larger START values, mp_loadformat.sas will need the'; put 'SQL dependency removed (proc sql needs to accommodate 3 index values in'; put 'a 32767 ibufsize limit)'; put '*/'; put ',START char(10000) label=''Starting value for format'''; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',TYPE char(1) label=''Type of format'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%mend mddl_sas_cntlout;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mp_cntlout('; put 'iftrue=(1=1)'; put ',libcat='; put ',cntlout=work.fmtextract'; put ',fmtlist=0'; put ')/*/STORE SOURCE*/;'; put '%local ddlds cntlds i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let ddlds=%mf_getuniquename();'; put '%let cntlds=%mf_getuniquename();'; put '%mddl_sas_cntlout(libds=&ddlds)'; put '%if %index(&libcat,-)>0 and %scan(&libcat,2,-)=FC %then %do;'; put '%let libcat=%scan(&libcat,1,-);'; put '%end;'; put 'proc format lib=&libcat cntlout=&cntlds;'; put '%if "&fmtlist" ne "0" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'if type="N" then do;'; put 'start=cats(start);'; put 'end=cats(end);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by fmtname start;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mp_dirlist(path=%sysfunc(pathname(work))'; put ', fref=0'; put ', outds=work.mp_dirlist'; put ', getattrs=NO'; put ', showparent=NO'; put ', maxdepth=0'; put ', level=0 /* The level of recursion to perform. For internal use only. */'; put ')/*/STORE SOURCE*/;'; put '%let getattrs=%upcase(&getattrs)XX;'; put '/* temp table */'; put '%local out_ds;'; put 'data;run;'; put '%let out_ds=%str(&syslast);'; put '/* drop main (top) table if it exists */'; put '%if &level=0 %then %do;'; put '%mp_dropmembers(%scan(&outds,-1,.), libref=WORK)'; put '%end;'; put 'data &out_ds(compress=no'; put 'keep=file_or_folder filepath filename ext msg directory level'; put ');'; put 'length directory filepath $500 fref fref2 $8 file_or_folder $6 filename $80'; put 'ext $20 msg $200 foption $16;'; put 'if _n_=1 then call missing(of _all_);'; put 'retain level &level;'; put '%if &fref=0 %then %do;'; put 'rc = filename(fref, "&path");'; put '%end;'; put '%else %do;'; put 'fref="&fref";'; put 'rc=0;'; put '%end;'; put 'if rc = 0 then do;'; put 'did = dopen(fref);'; put 'if did=0 then do;'; put 'putlog "NOTE: This directory is empty, or does not exist - &path";'; put 'msg=sysmsg();'; put 'put msg;'; put 'put _all_;'; put 'stop;'; put 'end;'; put '/* attribute is OS-dependent - could be "Directory" or "Directory Name" */'; put 'numopts=doptnum(did);'; put 'do i=1 to numopts;'; put 'foption=doptname(did,i);'; put 'if foption=:''Directory'' then i=numopts;'; put 'end;'; put 'directory=dinfo(did,foption);'; put 'rc = filename(fref);'; put 'end;'; put 'else do;'; put 'msg=sysmsg();'; put 'put _all_;'; put 'stop;'; put 'end;'; put 'dnum = dnum(did);'; put 'do i = 1 to dnum;'; put 'filename = dread(did, i);'; put 'filepath=cats(directory,''/'',filename);'; put 'rc = filename(fref2,filepath);'; put 'midd=dopen(fref2);'; put 'dmsg=sysmsg();'; put 'if did > 0 then file_or_folder=''folder'';'; put 'rc=dclose(midd);'; put 'midf=fopen(fref2);'; put 'fmsg=sysmsg();'; put 'if midf > 0 then file_or_folder=''file'';'; put 'rc=fclose(midf);'; put 'if index(fmsg,''File is in use'') or index(dmsg,''is not a directory'')'; put 'then file_or_folder=''file'';'; put 'else if index(fmsg,''Insufficient authorization'') then file_or_folder=''file'';'; put 'else if file_or_folder='''' then file_or_folder=''locked'';'; put 'if file_or_folder=''file'' then do;'; put 'ext = prxchange(''s/.*\.{1,1}(.*)/$1/'', 1, filename);'; put 'if filename = ext then ext = '' '';'; put 'end;'; put 'else do;'; put 'ext='''';'; put 'file_or_folder=''folder'';'; put 'end;'; put 'output;'; put 'end;'; put 'rc = dclose(did);'; put '%if &showparent=YES and &level=0 %then %do;'; put 'filepath=directory;'; put 'file_or_folder=''folder'';'; put 'ext='''';'; put 'filename=scan(directory,-1,''/\'');'; put 'msg='''';'; put 'level=&level;'; put 'output;'; put '%end;'; put 'stop;'; put 'run;'; put '%if %substr(&getattrs,1,1)=Y %then %do;'; put 'data &out_ds;'; put 'set &out_ds;'; put 'length infoname infoval $60 fref $8;'; put 'if _n_=1 then call missing(fref);'; put 'rc=filename(fref,filepath);'; put 'drop rc infoname fid i close fref;'; put 'if file_or_folder=''file'' then do;'; put 'fid=fopen(fref);'; put 'if fid le 0 then do;'; put 'msg=sysmsg();'; put 'putlog "Could not open file:" filepath fid= ;'; put 'sasname=''_MCNOTVALID_'';'; put 'output;'; put 'end;'; put 'else do i=1 to foptnum(fid);'; put 'infoname=foptname(fid,i);'; put 'infoval=finfo(fid,infoname);'; put 'sasname=compress(infoname, ''_'', ''adik'');'; put 'if anydigit(sasname)=1 then sasname=substr(sasname,anyalpha(sasname));'; put 'if upcase(sasname) ne ''FILENAME'' then output;'; put 'end;'; put 'close=fclose(fid);'; put 'end;'; put 'else do;'; put 'fid=dopen(fref);'; put 'if fid le 0 then do;'; put 'msg=sysmsg();'; put 'putlog "Could not open folder:" filepath fid= ;'; put 'sasname=''_MCNOTVALID_'';'; put 'output;'; put 'end;'; put 'else do i=1 to doptnum(fid);'; put 'infoname=doptname(fid,i);'; put 'infoval=dinfo(fid,infoname);'; put 'sasname=compress(infoname, ''_'', ''adik'');'; put 'if anydigit(sasname)=1 then sasname=substr(sasname,anyalpha(sasname));'; put 'if upcase(sasname) ne ''FILENAME'' then output;'; put 'end;'; put 'close=dclose(fid);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by filepath sasname;'; put 'proc transpose data=&out_ds out=&out_ds(drop=_:);'; put 'id sasname;'; put 'var infoval;'; put 'by filepath file_or_folder filename ext ;'; put 'run;'; put '%end;'; put 'data &out_ds;'; put 'set &out_ds(where=(filepath ne ''''));'; put 'run;'; put '/**'; put '* The above transpose can mean that some updates create additional columns.'; put '* This necessitates the occasional use of datastep over proc append.'; put '*/'; put '%if %mf_existds(&outds) %then %do;'; put '%local basevars appvars newvars;'; put '%let basevars=%mf_getvarlist(&outds);'; put '%let appvars=%mf_getvarlist(&out_ds);'; put '%let newvars=%length(%mf_wordsinstr1butnotstr2(Str1=&appvars,Str2=&basevars));'; put '%if &newvars>0 %then %do;'; put 'data &outds;'; put 'set &outds &out_ds;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&outds data=&out_ds force nowarn;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do;'; put 'proc append base=&outds data=&out_ds;'; put 'run;'; put '%end;'; put '/* recursive call */'; put '%if &maxdepth>&level or &maxdepth=MAX %then %do;'; put 'data _null_;'; put 'set &out_ds;'; put 'where file_or_folder=''folder'';'; put '%if &showparent=YES and &level=0 %then %do;'; put 'if filepath ne directory;'; put '%end;'; put 'length code $10000;'; put 'code=cats(''%nrstr(%mp_dirlist(path='',filepath,",outds=&outds"'; put ',",getattrs=&getattrs,level=%eval(&level+1),maxdepth=&maxdepth))");'; put 'put code=;'; put 'call execute(code);'; put 'run;'; put '%end;'; put '/* tidy up */'; put 'proc sql;'; put 'drop table &out_ds;'; put '%mend mp_dirlist;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_inc)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status;'; put 'proc sql noprint;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro mpe_loader('; put 'mperef= /* name of subfolder containing the staged data */'; put ',mDebug=0 /* set to 1 for development or debugging */'; put ',submitted_reason_txt= /* populates column of same name in sumo_approvals*/'; put ',approver= /* allows a userid to be provided for direct approval email */'; put ',url= /* optional - url for debugging */'; put ',dlm=%str(,)'; put ',termstr=crlf'; put ',dc_dttmtfmt=E8601DT26.6'; put ');'; put '%put entered mpe_loader from &=_program;'; put '%put &=url;'; put '%put &=termstr;'; put '%put &=dlm;'; put '/* determine full path to CSV directory */'; put '%local now;'; put '%let now=&dc_dttmtfmt;'; put '%put &=now;'; put '/**'; put '* get full path to package (only subdirectory passed through)'; put '*/'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(mperef mpelocapprovals)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing: mperef mpelocapprovals)'; put ')'; put '%let csv_dir=%trim(&mpelocapprovals/&mperef);'; put '/* exit if package has already been uploaded */'; put '%local check;'; put 'proc sql noprint;'; put 'select count(*) into: check'; put 'from &mpelib..mpe_loads'; put 'where csv_dir="&mperef";'; put '%if &check %then %do;'; put '%mp_abort(msg=Folder &mperef already has an entry in &mpelib..mpe_loads'; put ',mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put '/* get CSV directory contents */'; put '%mp_dirlist(path=&csv_dir,outds=WORK.getfiles)'; put 'data WORK.csvs;'; put 'set WORK.getfiles;'; put 'if upcase(scan(filename,3,''.''))=''CSV'' then do;'; put 'lib=upcase(scan(filename,1,''.''));'; put 'ds=upcase(scan(filename,2,''.''));'; put 'output;'; put 'end;'; put 'run;'; put '/* get table attributes */'; put 'proc sql noprint;'; put 'create table WORK.sumo_tables as'; put 'select a.filename, b.*'; put 'from WORK.csvs a'; put 'left join &mpelib..mpe_tables b'; put 'on a.lib=b.libref'; put 'and a.ds=b.dsn'; put 'where b.tx_from le &now'; put 'and &now lt b.tx_to;'; put '/* define user as meta user if available */'; put '%local user;'; put '%let user=%mf_getuser();'; put '/* check if there is actually a table to load */'; put '%if %mf_getattrn(WORK.sumo_tables,NLOBS)=0 %then %do;'; put '%let msg=Table not registered in &mpelib..mpe_tables;'; put '%mpe_loadfail('; put 'status=&msg'; put ',now=&now'; put ',mperef=&mperef'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%mp_abort(msg=&msg,mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put 'proc sql;'; put 'insert into &mpelib..mpe_loads'; put 'set USER_NM="&user"'; put ',STATUS=''IN PROGRESS'''; put ',CSV_dir="&mperef"'; put ',PROCESSED_DTTM=&now;'; put '/* import CSV */'; put '%let droplist=;'; put '%let attrib=;'; put '%let droplist=;'; put '%let libref=;'; put '%let DS=;'; put '/* get table info */'; put 'data _null_;'; put 'set sumo_tables;'; put 'libds=upcase(cats(libref,''.'',dsn));'; put 'call symputx(''orig_libds'',libds);'; put 'is_fmt=0;'; put 'if substr(cats(reverse(dsn)),1,3)=:''CF-'' then do;'; put 'libds=scan(libds,1,''-'');'; put 'putlog "Format Catalog Captured";'; put 'libds=''work.fmtextract'';'; put 'is_fmt=1;'; put 'end;'; put 'call symputx(''is_fmt'',is_fmt);'; put 'call symputx(''libds'',libds);'; put 'call symputx(''FNAME'',filename);'; put 'call symputx(''LIBREF'',libref);'; put 'call symputx(''DS'',dsn);'; put 'call symputx(''LOADTYPE'',loadtype);'; put 'call symputx(''BUSKEY'',buskey);'; put 'call symputx(''VAR_TXFROM'',var_txfrom);'; put 'call symputx(''VAR_TXTO'',var_txto);'; put 'call symputx(''VAR_BUSFROM'',var_busfrom);'; put 'call symputx(''VAR_BUSTO'',var_busto);'; put 'call symputx(''VAR_PROCESSED'',var_processed);'; put 'call symputx(''RK_UNDERLYING'',RK_UNDERLYING);'; put 'call symputx(''POST_EDIT_HOOK'',POST_EDIT_HOOK);'; put 'call symputx(''NOTES'',NOTES);'; put 'call symputx(''PK'',coalescec(RK_UNDERLYING,buskey));'; put 'call symputx(''NUM_OF_APPROVALS_REQUIRED'',NUM_OF_APPROVALS_REQUIRED,''l'');'; put 'put (_all_)(=);'; put 'stop;'; put 'run;'; put '%if %length(&ds)=0 %then %do;'; put '%let msg=%str(ERR)OR: Unable to extract record from &mpelib..mpe_tables;'; put '%mpe_loadfail('; put 'status=FAILED'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%quote(&msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%mp_abort(msg=&msg,mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put '/* export format catalog */'; put '%mp_cntlout('; put 'iftrue=(&is_fmt=1)'; put ',libcat=&orig_libds'; put ',fmtlist=0'; put ',cntlout=work.fmtextract'; put ')'; put '/* user must have EDIT access to load a table */'; put '%mpe_accesscheck(&orig_libds'; put ',outds=work.sumo_access'; put ',user=&user'; put ',access_level=EDIT )'; put '%put exiting accesscheck;'; put '%if %mf_getattrn(work.sumo_access,NLOBS)=0 %then %do;'; put '%let msg=%str(ERR)OR: User is not authorised to edit &orig_libds!;'; put '%mpe_loadfail('; put 'status=UNAUTHORISED'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%quote(&msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%mp_abort(msg=&msg,mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put '%put now importing: "&csv_dir/&fname" termstr=&termstr;'; put '/* get the variables from the CSV */'; put 'data vars_csv1(index=(idxname=(varnum name)) drop=infile);'; put 'infile "&csv_dir/&fname" lrecl=32767 dsd termstr=&termstr encoding=''utf-8'';'; put 'input;'; put 'length infile $32767;'; put 'infile=compress(_infile_,''"'',);'; put 'infile=compress(infile,"''",);'; put 'format name $32.;'; put 'putlog ''received vars: '' infile;'; put 'call symputx(''received_vars'',infile,''l'');'; put 'do varnum=1 to countw(infile,"&dlm");'; put '/* keep writeable chars */'; put 'name=compress(upcase(scan(infile,varnum)),,''kw'');'; put 'if name ne "_____DELETE__THIS__RECORD_____" then output;'; put 'end;'; put 'stop;'; put 'run;'; put '%put received_vars = &received_vars;'; put '%dc_assignlib(WRITE,&libref)'; put '/* get list of variables and their formats */'; put 'proc contents noprint data=&libds'; put 'out=vars(keep=name type length varnum format:);'; put 'run;'; put 'data vars(keep=name type length varnum format);'; put 'set vars(rename=(format=format2 type=type2));'; put 'name=upcase(name);'; put 'format2=upcase(format2);'; put '/* not interested in transaction or processing dates'; put '(append table must be supplied without them) */'; put 'if name not in ("&VAR_TXFROM","&VAR_TXTO","&VAR_PROCESSED"'; put ',"_____DELETE__THIS__RECORD_____");'; put 'if type2 in (2,6) then do;'; put 'length format $49.;'; put 'if format2='''' then format=cats(''$'',length,''.'');'; put 'else format=cats(format2,max(formatl,length),''.'');'; put 'type=''char'';'; put 'end;'; put 'else do;'; put 'if format2='''' then format=cats(length,''.'');'; put 'else if format2=:''DATETIME'' then do;'; put 'format=''DATETIME19.'';'; put 'end;'; put 'else if format2=:''DATE'' or format2=:''DDMMYY'''; put 'or format2=:''MMDDYY'' or format2=:''YYMMDD'''; put 'or format2=:''E8601DA'' or format2=:''B8601DA'''; put 'then do;'; put 'format=''DATE9.'';'; put 'end;'; put 'else if format2=''BEST'' & formatl=0 then format=cats(''BEST'',length,''.'');'; put '/*'; put 'else if format2=:''DATETIME'' or format2=:''DATE'' or format2=:''DDMMYY'''; put 'or format2=:''MMDDYY'' or format2=:''YYMMDD'' then do;'; put '*date or datetime format so use original ;'; put 'dsid=open("&libref..&ds");'; put 'vnum=varnum(dsid,name);'; put 'format=varfmt(dsid,vnum);'; put 'dsid=close(dsid);'; put 'end;'; put '*/'; put 'else do;'; put 'if formatl=0 then formatl=length;'; put 'format=cats(format2,formatl,''.'',formatd);'; put 'end;'; put 'type=''num'';'; put 'end;'; put 'put (_all_)(=);'; put 'run;'; put '/* build attrib statement */'; put 'data vars_attrib;'; put 'length attrib_statement $32767 type2 $20;'; put 'set vars end=lastobs;'; put 'retain attrib_statement;'; put 'if type=''char'' then type2=''$'';'; put 'str1=catx('' '',name,''length='',cats(type2,length));'; put 'attrib_statement=trim(attrib_statement)!!'' ''!!trim(str1);'; put 'if lastobs then call symputx(''ATTRIB'',attrib_statement,''L'');'; put 'run;'; put '/* build input statement - first get vars in right order'; put 'and join with target formats*/'; put 'proc sql noprint;'; put 'create table vars_csv2 as'; put 'select b.*'; put 'from vars_csv1 a'; put 'left join vars_attrib b'; put 'on a.name=b.name'; put 'order by a.varnum;'; put '/* make sure that the variables we are importing, actually'; put 'exist on the target table */'; put '/** edit - extra variables are now simply ignored'; put '%local very_bad_vars;'; put 'select name into: very_bad_vars separated by '' '''; put 'from vars_csv1'; put 'where name not in (select name from vars)'; put 'and name ne "_____DELETE__THIS__RECORD_____";'; put '%if %length(&very_bad_vars) > 0 %then %do;'; put '%let msg=%str(WARNING: The following vars are not defined in %trim('; put ')&libref..&ds, yet they exist in &csv_dir/&ds..csv: &very_bad_vars);'; put '%mpe_loadfail('; put 'status=FAILED'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%quote(&msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '**/'; put '/* now build input statement */'; put 'data final_check;'; put 'set vars_csv2 end=lastobs;'; put 'length input_statement $32767 type2 $20 droplist $32767;'; put 'retain input_statement droplist;'; put '/* Build input statement - CATCH EXCEPTIONS HERE!*/'; put 'if name in (''QUOTE_DTTM'') then do;'; put 'name=cats(name,''2'');'; put 'droplist=catx('' '',trim(droplist),name);'; put 'type2=''$20.'';/* converted below */'; put 'end;'; put 'else if type=''char'' then type2=cats(''$CHAR'', length,''.'');'; put 'else if format=''DATE9.'' then type2=''ANYDTDTE.'';'; put 'else if format=''DATETIME19.'' then type2=''ANYDTDTM.'';'; put 'else if format=:''TIME'' then type2=''ANYDTTME.'';'; put 'else if name='''' then do;/* additional vars in input data */'; put 'name=''_____DELETE__THIS__VARIABLE_____'';'; put 'droplist=catx('' '',trim(droplist),''_____DELETE__THIS__VARIABLE_____'');'; put 'type2=''$1.'';'; put 'end;'; put 'else type2=''best32.'';'; put '* else type2=cats(length,''.'');'; put 'input_statement=catx('' '',input_statement,name,'':'',type2);'; put 'if lastobs then do;'; put 'call symputx(''INPUT'', input_statement,''L'');'; put 'if trim(droplist) ne '''' then'; put 'call symputx(''droplist'',"drop "!!droplist!!'';'',''l'');'; put 'end;'; put 'run;'; put '%let mpeloadstop=0;'; put 'data work.STAGING_DS;'; put '&droplist;'; put 'infile "&csv_dir/&fname" dsd dlm="&dlm" lrecl=32767'; put 'firstobs=2 missover termstr=&termstr encoding=''utf-8'';'; put 'attrib &attrib ;'; put 'if _n_=1 then call missing (of _all_);'; put 'missing a b c d e f g h i j k l m n o p q r s t u v w x y z _;'; put 'input'; put '%if %scan(%quote(&received_vars),1)=_____DELETE__THIS__RECORD_____ %then %do;'; put '_____DELETE__THIS__RECORD_____: $3.'; put '%end;'; put '&input;'; put '%if %index(%quote(&attrib.),UNLIKELY_VAR ) %then %do;'; put '/*UNLIKELY_VAR=input(UNLIKELY_VAR2,ANYDTDTM21.);*/'; put '/* SPECIAL LOGIC FOR SPECIAL VARS */'; put '%end;'; put 'if _error_ ne 0 then do;'; put 'putlog _infile_;'; put 'call symputx(''mpeloadstop'',_n_);'; put 'stop;'; put 'end;'; put '/* remove all blank rows */'; put 'if compress(cats(of _all_),''.'')='' '' then delete;'; put 'run;'; put '%if &mpeloadstop>0 %then %do;'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put '%put redirecting log output to capture return message;'; put '%put currentloc=&logloc;'; put 'filename tmp temp;'; put 'proc printto log=tmp;run;'; put 'data _null_;'; put '&droplist;'; put 'infile "&csv_dir/&fname" dsd dlm="&dlm" lrecl=32767 firstobs=2'; put 'missover termstr=&termstr;'; put 'attrib &attrib ;'; put 'input'; put '%if %scan(%quote(&received_vars),1)=_____DELETE__THIS__RECORD_____'; put '%then %do;'; put '_____DELETE__THIS__RECORD_____: $3.'; put '%end;'; put '&input;'; put 'if _error_ then stop;'; put 'run;'; put '/* get log back */'; put 'proc printto log=&logloc;run;'; put 'data _null_; infile tmp; input; putlog _infile_;run;'; put '/* scan log for invalid data warning */'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'length msg1 msg2 msg3 msg4 msg5 msg url $32767;'; put 'if index(_infile_,''NOTE: Invalid data for'') then do;'; put 'msg1=_infile_;'; put 'input;'; put 'msg2=_infile_;'; put 'input;'; put 'msg3=_infile_;'; put 'input;'; put 'msg4=_infile_;'; put 'input;'; put 'msg5=_infile_;'; put 'url=symget(''url'');'; put 'msg=catx(''\n'',msg1,msg2,msg3,msg4,msg5,''\n'',url);'; put 'call symputx(''msg'',msg);'; put 'stop;'; put 'end;'; put 'run;'; put '%mpe_loadfail('; put 'status=FAILED'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%superq(msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '/* check that the table is unique on PK */'; put 'proc sort data=work.STAGING_DS dupout=work.MPE_DUPS (keep=&pk) nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.MPE_DUPS,NLOBS)>0 %then %do;'; put '%local duplist;'; put 'data _null_;'; put 'set work.mpe_dups;'; put '%do i=1 %to %sysfunc(countw(&pk));'; put '%let iWord=%scan(&pk,&i);'; put 'call symputx(''duplist'',symget(''duplist'')!!'; put '" &iWord="!!trim(&iWord));'; put '%end;'; put 'run;'; put '%let msg=This upload contains duplicates on the Primary Key columns %trim('; put ')(&pk) \n Please remove the duplicates and try again. %trim('; put ')\n &duplist \n ;'; put '%mp_abort(msg=%superq(msg),mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put '%if &syscc gt 4 %then %do;'; put '%let msg=SYSCC=&syscc prior to post edit hook (%superq(syserrortext));'; put '%mpe_loadfail('; put 'status=FAILED - &syscc'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%superq(msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '%mpe_runhook(POST_EDIT_HOOK)'; put '/* stop if err */'; put '%if &syscc gt 4 %then %do;'; put '%let msg=ERR in post edit hook (&post_edit_hook);'; put '%mpe_loadfail('; put 'status=FAILED - &syscc'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%quote(&msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '/**'; put '* send to approve process'; put '*/'; put '/* create a dataset key (datetime plus 3 digit random number plus PID) */'; put '/* send dataset to approvals subfolder with same name as subfolder */'; put 'libname approval "&mpelocapprovals/&mperef";'; put 'data approval.&mperef;'; put 'set work.staging_ds;'; put 'run;'; put 'proc export data=approval.&mperef'; put 'outfile="&mpelocapprovals/&mperef/&mperef..csv"'; put 'dbms=csv'; put 'replace;'; put 'run;'; put '/* update the control dataset with relevant info */'; put 'data append_app;'; put 'if 0 then set &mpelib..mpe_submit;/* get formats */'; put 'call missing (of _all_);'; put 'TABLE_ID="&mperef";'; put 'submit_status_cd=''SUBMITTED'';'; put 'submitted_by_nm="%mf_getuser()";'; put 'base_lib="&libref";'; put 'base_ds="&ds";'; put 'submitted_on_dttm=&now;'; put 'submitted_reason_txt=symget(''submitted_reason_txt'');'; put 'input_vars=%mf_getattrn(approval.&mperef,NVARS);'; put 'input_obs=%mf_getattrn(approval.&mperef,NLOBS);'; put 'num_of_approvals_required=&NUM_OF_APPROVALS_REQUIRED;'; put 'num_of_approvals_remaining=&NUM_OF_APPROVALS_REQUIRED;'; put 'reviewed_by_nm='''';'; put 'reviewed_on_dttm=.;'; put 'run;'; put '%mp_lockanytable(LOCK,lib=&mpelib,ds=mpe_submit,'; put 'ref=%str(&mperef update in &_program),'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'proc append base= &mpelib..mpe_submit data=append_app;'; put 'run;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&mpelib,ds=mpe_submit,'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put '/* send email to REVIEW members */'; put '%put sending mpe_alerts;'; put '%mpe_alerts(alert_event=SUBMITTED'; put ', alert_lib=&libref'; put ', alert_ds=&ds'; put ', dsid=&mperef'; put ')'; put '/* DISABLE EMAIL FOR NOW'; put '%let b2=REASON: %quote(&submitted_reason_txt);'; put '%local URLNOTES;'; put '%if %length(¬es)>0 %then %let URLNOTES=%quote(%sysfunc(urlencode(¬es)));'; put '%let b3=%str(Click to review / approve: )%trim('; put ')%str(http://&_srvname:&_srvport&_url?_PROGRAM=/Web/approvals&)%trim('; put ')TABLEID=&dsid%str(&)BASETABLE=&libref..&ds%str(&)NOTES=&URLNOTES;'; put '%let b4=%str(Reference ID: &mperef);'; put '*/'; put '%put mpe_loader finishing up with syscc=&syscc;'; put '%if &syscc le 4 %then %do;'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'putlog ''Updating mpe_loads with the following query:'';'; put 'putlog "update &mpelib..mpe_loads set STATUS=''SUCCESS''";'; put 'putlog " , duration=" dur;'; put 'putlog " , processed_dttm=" now;'; put 'putlog " , approvals = ''&libref..&ds''";'; put 'putlog " where CSV_DIR=''&mperef'';";'; put 'run;'; put 'proc sql;'; put 'update &mpelib..mpe_loads set STATUS=''SUCCESS'''; put ', duration=&dur'; put ', processed_dttm=&now'; put ', approvals = "&libref..&ds"'; put 'where CSV_DIR="&mperef";'; put '%end;'; put '%else %do;'; put '%mpe_loadfail('; put 'status="FAILED - &syscc"'; put ',now=&now'; put ',approvals=&libref..&ds'; put ',mperef=&mperef'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '%mend mpe_loader;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_filtergenerate(inds,outref=filter);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put 'filename &outref temp;'; put '%if %mf_nobs(&inds)=0 %then %do;'; put '/* ensure we have a default filter */'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc sort data=&inds;'; put 'by SUBGROUP_ID;'; put 'run;'; put 'data _null_;'; put 'file &outref lrecl=32800;'; put 'set &inds end=last;'; put 'by SUBGROUP_ID;'; put 'if _n_=1 then put ''(('';'; put 'else if first.SUBGROUP_ID then put +1 GROUP_LOGIC ''('';'; put 'else put +2 SUBGROUP_LOGIC;'; put 'put +4 VARIABLE_NM OPERATOR_NM RAW_VALUE;'; put 'if last.SUBGROUP_ID then put '')''@;'; put 'if last then put '')'';'; put 'run;'; put '%end;'; put '%mend mp_filtergenerate;'; put '%macro mpe_filtermaster(mode,libds,'; put 'dclib=,'; put 'filter_rk=-1,'; put 'outref=0,'; put 'outds=work.query'; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%let mode=%upcase(&mode);'; put '%let libds=%upcase(&libds);'; put '%mp_abort(iftrue= ('; put '&mode ne EDIT and &mode ne VIEW and &mode ne DLOAD and &mode ne ULOAD'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid MODE: &mode)'; put ')'; put '%mp_abort(iftrue= (&outref = 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Please provide a fileref!)'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc)'; put ')'; put 'filename &outref temp;'; put '/* ensure outputs exist */'; put 'data _null_;'; put 'file &outref;'; put 'put '' '';'; put 'run;'; put 'data &outds;'; put 'set &dclib..mpe_filtersource;'; put 'stop;'; put 'run;'; put '/**'; put '* Deal with FILTER_RK first'; put '*/'; put '%if &filter_rk gt 0 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''( ''@@;'; put 'set &dclib..mpe_filteranytable(where=(filter_rk=&filter_rk));'; put 'call symputx(''filter_hash'',filter_hash,''l'');'; put 'run;'; put 'proc sort data=&dclib..mpe_filtersource(where=(filter_hash="&filter_hash"))'; put 'out=&outds(drop=filter_hash filter_line processed_dttm);'; put 'by filter_line;'; put 'run;'; put '%mp_filtergenerate(&outds,outref=&outref)'; put '%end;'; put '/* Now filter for current records if the MODE is EDIT or DLOAD */'; put '%local varfrom varto;'; put '%let varfrom=0;'; put 'proc sql;'; put 'select coalescec(var_txfrom,''0''), var_txto into: varfrom,:varto'; put 'from &dclib..MPE_TABLES'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and libref="%scan(&libds,1,.)" and dsn="%scan(&libds,2,.)";'; put '%put &=varfrom;'; put '%put &=varto;'; put '/**'; put '* Check if the date variables were mentioned in the query'; put '* This is a trigger for serving a historical view instead of current'; put '* we skip this part when checking an ULOAD as there are no date vars'; put '*/'; put '%if &varfrom ne 0 and (&mode=EDIT or &mode=DLOAD) %then %do;'; put '%local validityvars;'; put 'proc sql;'; put 'select count(*) into: validityvars'; put 'from &outds'; put 'where variable_nm in ("&varfrom","&varto");'; put '%if &validityvars=0 %then %do;'; put 'data _null_;'; put 'file &outref mod;'; put 'length filter_text $32767;'; put 'varfrom=symget(''varfrom'');'; put 'varto=symget(''varto'');'; put 'filter_text=catx('' '','; put '''("%sysfunc(datetime(),'',"%mf_fmtdttm()",'')"dt <'',varto,'')'''; put ');'; put 'if &filter_rk > 0 then put ''AND '' filter_text;'; put 'else put filter_text;'; put 'run;'; put '%end;'; put '%end;'; put '/**'; put '* Now do Row Level Security based on the MPE_ROW_LEVEL_SECURITY table'; put '*/'; put '/* first determine users group membership */'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.groups)'; put '%local admin_check;'; put 'proc sql;'; put 'select count(*) into: admin_check'; put 'from work.groups'; put 'where groupname="&mpeadmins";'; put '%put &sysmacroname: &=admin_check &=mpeadmins;'; put '%if &admin_check=0 %then %do;'; put '%local scopeval;'; put '%if &mode=DLOAD %then %let scopeval=VIEW;'; put '%if &mode=ULOAD %then %let scopeval=EDIT;'; put '%else %let scopeval=&mode;'; put '/* extract relevant rows */'; put '%local rlsds;'; put '%let rlsds=%mf_getuniquename();'; put 'proc sql;'; put 'create table work.&rlsds as'; put 'select rls_group,'; put 'rls_group_logic as group_logic,'; put 'rls_subgroup_logic as subgroup_logic,'; put 'rls_subgroup_id as subgroup_id,'; put 'rls_variable_nm as variable_nm,'; put 'rls_operator_nm as operator_nm,'; put 'rls_raw_value as raw_value'; put 'from &mpelib..mpe_row_level_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and rls_scope in ("&scopeval",''ALL'')'; put 'and upcase(rls_group) in (select upcase(groupname) from work.groups)'; put 'and rls_libref="%scan(&libds,1,.)"'; put 'and rls_table="%scan(&libds,2,.)"'; put 'and rls_active=1'; put 'order by rls_group,rls_subgroup_id;'; put '%if &sqlobs>0 %then %do;'; put '/* check if we currently have filter or not */'; put 'data ;'; put 'infile &outref end=eof;'; put 'input;'; put 'if _n_=1 and eof and cats(_infile_)='''' then newfilter=1;'; put 'output;'; put 'stop;'; put 'run;'; put 'data _null_;'; put 'set &syslast;'; put 'file &outref mod;'; put 'if newfilter=1 then put ''('';'; put 'else put ''AND ('';'; put 'run;'; put '/* loop through and apply filters for each group membership */'; put '%local fref ds;'; put '%let fref=%mf_getuniquefileref();'; put '%let ds=%mf_getuniquename();'; put 'proc sql noprint;'; put 'select distinct rls_group into : group1 -'; put 'from work.&rlsds;'; put '%do i=1 %to &sqlobs;'; put 'data work.&ds;'; put 'set work.&rlsds;'; put 'where rls_group="&&group&i";'; put 'drop rls_group;'; put 'run;'; put '%mp_filtergenerate(&ds,outref=&fref)'; put 'data _null_;'; put 'infile &fref;'; put 'file &outref mod;'; put 'input;'; put 'if &i>1 and _n_=1 then put '' OR '';'; put 'put _infile_;'; put 'run;'; put '%end;'; put 'data _null_;'; put 'file &outref mod;'; put 'put '')'';'; put 'run;'; put '%end; /* &sqlobs>0 */'; put '%else %do;'; put '%put &sysmacroname: no matching groups;'; put 'data _null_;'; put 'set work.groups;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname'; put ',msg=%str(Row Level Security Generation Error)'; put ')'; put '%end; /* &admin_check=0 */'; put '%put leaving &sysmacroname with the following query:;'; put '%local empty;'; put '%let empty=0;'; put 'data _null_;'; put 'infile &outref end=eof;'; put 'input;'; put 'putlog _infile_;'; put 'if _n_=1 and eof and cats(_infile_)='''' then do;'; put 'put ''1=1'';'; put 'call symputx(''empty'',1,''l'');'; put 'end;'; put 'run;'; put '%if &empty=1 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%mend mpe_filtermaster;'; put '%macro removecolsfromwork(col);'; put '/* only an issue if debug mode enabled */'; put '%global _debug;'; put '%if &_debug ge 131 %then %do;'; put '%let col=%upcase(&col);'; put '%local memlist;'; put 'proc sql noprint;'; put 'select distinct memname into: memlist'; put 'separated by '' '''; put 'from dictionary.columns'; put 'where libname=''WORK'' and upcase(name)="&col";'; put '%if %mf_isblank(&memlist) %then %return;'; put '%mp_dropmembers(list=&memlist)'; put '%end;'; put '%mend removecolsfromwork;'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mcf_init(func'; put ')/*/STORE SOURCE*/;'; put '%if not (%symexist(SASJS_PREFIX)) %then %do;'; put '%global SASJS_PREFIX;'; put '%let SASJS_PREFIX=SASJS;'; put '%end;'; put '%let func=%upcase(&func);'; put '/* the / character is just a seperator */'; put '%global &sasjs_prefix._FUNCTIONS;'; put '%if %index(&&&sasjs_prefix._FUNCTIONS,&func/)>0 %then %do;'; put '1'; put '%return;'; put '%end;'; put '%else %do;'; put '%let &sasjs_prefix._FUNCTIONS=&&&sasjs_prefix._FUNCTIONS &func/;'; put '0'; put '%end;'; put '%mend mcf_init;'; put '%macro mcf_getfmttype(wrap=NO'; put ',insert_cmplib=DEPRECATED'; put ',lib=WORK'; put ',cat=SASJS'; put ',pkg=UTILS'; put ')/*/STORE SOURCE*/;'; put '%local i var cmpval found;'; put '%if %mcf_init(mcf_getfmttype)=1 %then %return;'; put '%if &wrap=YES %then %do;'; put 'proc fcmp outlib=&lib..&cat..&pkg;'; put '%end;'; put 'function mcf_getfmttype(fmtnm $) $8;'; put 'if substr(fmtnm,1,1)=''$'' then return(''CHAR'');'; put 'else do;'; put '/* extract NAME */'; put 'length fmt $32;'; put 'fmt=scan(fmtnm,1,''.'');'; put 'do while ('; put 'substr(fmt,length(fmt),1) in (''1'',''2'',''3'',''4'',''5'',''6'',''7'',''8'',''9'',''0'')'; put ');'; put 'if length(fmt)=1 then fmt=''W'';'; put 'else fmt=substr(fmt,1,length(fmt)-1);'; put 'end;'; put '/* apply lookups */'; put 'if cats(fmt) in (''DATETIME'',''B8601DN'',''B8601DN'',''B8601DT'',''B8601DT'''; put ',''B8601DZ'',''B8601DZ'',''DATEAMPM'',''DTDATE'',''DTMONYY'',''DTWKDATX'',''DTYEAR'''; put ',''DTYYQC'',''E8601DN'',''E8601DN'',''E8601DT'',''E8601DT'',''E8601DZ'',''E8601DZ'')'; put 'then return(''DATETIME'');'; put 'else if fmt in (''DATE'',''YYMMDD'',''B8601DA'',''B8601DA'',''DAY'',''DDMMYY'''; put ',''DDMMYYB'',''DDMMYYC'',''DDMMYYD'',''DDMMYYN'',''DDMMYYP'',''DDMMYYS'',''DDMMYYx'''; put ',''DOWNAME'',''E8601DA'',''E8601DA'',''JULDAY'',''JULIAN'',''MMDDYY'',''MMDDYYB'''; put ',''MMDDYYC'',''MMDDYYD'',''MMDDYYN'',''MMDDYYP'',''MMDDYYS'',''MMDDYYx'',''MMYY'''; put ',''MMYYC'',''MMYYD'',''MMYYN'',''MMYYP'',''MMYYS'',''MMYYx'',''MONNAME'',''MONTH'''; put ',''MONYY'',''PDJULG'',''PDJULI'',''QTR'',''QTRR'',''WEEKDATE'',''WEEKDATX'',''WEEKDAY'''; put ',''WEEKU'',''WEEKV'',''WEEKW'',''WORDDATE'',''WORDDATX'',''YEAR'',''YYMM'',''YYMMC'''; put ',''YYMMD'',''YYMMDDB'',''YYMMDDC'',''YYMMDDD'',''YYMMDDN'',''YYMMDDP'',''YYMMDDS'''; put ',''YYMMDDx'',''YYMMN'',''YYMMP'',''YYMMS'',''YYMMx'',''YYMON'',''YYQ'',''YYQC'',''YYQD'''; put ',''YYQN'',''YYQP'',''YYQR'',''YYQRC'',''YYQRD'',''YYQRN'',''YYQRP'',''YYQRS'',''YYQRx'''; put ',''YYQS'',''YYQx'',''YYQZ'') then return(''DATE'');'; put 'else if fmt in (''TIME'',''B8601LZ'',''B8601LZ'',''B8601TM'',''B8601TM'',''B8601TZ'''; put ',''B8601TZ'',''E8601LZ'',''E8601LZ'',''E8601TM'',''E8601TM'',''E8601TZ'',''E8601TZ'''; put ',''HHMM'',''HOUR'',''MMSS'',''TIMEAMPM'',''TOD'') then return(''TIME'');'; put 'else return(''NUM'');'; put 'end;'; put 'endsub;'; put '%if &wrap=YES %then %do;'; put 'quit;'; put '%end;'; put '/* insert the CMPLIB if not already there */'; put '%let cmpval=%sysfunc(getoption(cmplib));'; put '%let found=0;'; put '%do i=1 %to %sysfunc(countw(&cmpval,%str( %(%))));'; put '%let var=%scan(&cmpval,&i,%str( %(%)));'; put '%if &var=&lib..&cat %then %let found=1;'; put '%end;'; put '%if &found=0 %then %do;'; put 'options insert=(CMPLIB=(&lib..&cat));'; put '%end;'; put '%mend mcf_getfmttype;'; put '%macro mf_getVarFormat(libds /* two level ds name */'; put ', var /* variable name from which to return the format */'; put ', force=0'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vformat rc vlen vtype;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable format */'; put '%if(&vnum > 0) %then %let vformat=%sysfunc(varfmt(&dsid, &vnum));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let rc = %sysfunc(close(&dsid));'; put '%return;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* supply a default if no format available */'; put '%if %length(&vformat)<2 & &force=1 %then %do;'; put '%let vlen = %sysfunc(varlen(&dsid, &vnum));'; put '%let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%if &vtype=C %then %let vformat=$&vlen..;'; put '%else %let vformat=best.;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable format */'; put '&vformat'; put '%mend mf_getVarFormat;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mp_ds2csv(ds'; put ',dlm=COMMA'; put ',outref=0'; put ',outfile='; put ',outencoding=0'; put ',headerformat=LABEL'; put ',termstr=CRLF'; put ')/*/STORE SOURCE*/;'; put '%local outloc delim i varlist var vcnt vat dsv vcom vmiss fmttype vfmt;'; put '%if not %sysfunc(exist(&ds)) %then %do;'; put '%put %str(WARN)ING: &ds does not exist;'; put '%return;'; put '%end;'; put '%if %index(&ds,.)=0 %then %let ds=WORK.&ds;'; put '%if &outencoding=0 %then %let outencoding=;'; put '%else %let outencoding=encoding=&outencoding;'; put '%if &outref=0 %then %let outloc=&outfile;'; put '%else %let outloc=&outref;'; put '%if &headerformat=SASJS %then %do;'; put '%let delim=",";'; put '%let termstr=CRLF;'; put '%mcf_getfmttype(wrap=YES)'; put '%end;'; put '%else %if &dlm=COMMA %then %let delim=",";'; put '%else %let delim=";";'; put '/* credit to mjsq - https://stackoverflow.com/a/55642267 */'; put '/* first get headers */'; put 'data _null_;'; put 'file &outloc &outencoding lrecl=32767 termstr=&termstr;'; put 'length header $ 2000 varnm vfmt $32 dlm $1 fmttype $8;'; put 'call missing(of _all_);'; put 'dsid=open("&ds.","i");'; put 'num=attrn(dsid,"nvars");'; put 'dlm=&delim;'; put 'do i=1 to num;'; put 'varnm=upcase(varname(dsid,i));'; put 'if i=num then dlm='''';'; put '%if &headerformat=NAME %then %do;'; put 'header=cats(varnm,dlm);'; put '%end;'; put '%else %if &headerformat=LABEL %then %do;'; put 'header = cats(coalescec(varlabel(dsid,i),varnm),dlm);'; put '%end;'; put '%else %if &headerformat=SASJS %then %do;'; put 'if vartype(dsid,i)=''C'' then header=cats(varnm,'':$char'',varlen(dsid,i),''.'');'; put 'else do;'; put 'vfmt=coalescec(varfmt(dsid,i),''0'');'; put 'fmttype=mcf_getfmttype(vfmt);'; put 'if fmttype=''DATE'' then header=cats(varnm,'':date9.'');'; put 'else if fmttype=''DATETIME'' then header=cats(varnm,'':E8601DT26.6'');'; put 'else if fmttype=''TIME'' then header=cats(varnm,'':TIME12.'');'; put 'else header=cats(varnm,'':best.'');'; put 'end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Invalid headerformat value (&headerformat);'; put '%return;'; put '%end;'; put 'put header @;'; put 'end;'; put 'rc=close(dsid);'; put 'run;'; put '%let varlist=%mf_getvarlist(&ds);'; put '%let vcnt=%sysfunc(countw(&varlist));'; put '/**'; put '* The $quote modifier (without a width) will take the length from the variable'; put '* and increase by two. However this will lead to truncation where the value'; put '* contains double quotes (which are doubled up). To get around this, scan the'; put '* data to see the max number of double quotes, so that the appropriate width'; put '* can be applied in the subsequent step.'; put '*/'; put 'data _null_;'; put 'set &ds end=last;'; put '%do i=1 %to &vcnt;'; put '%let var=%scan(&varlist,&i);'; put '%if %mf_getvartype(&ds,&var)=C %then %do;'; put '%let dsv1=%mf_getuniquename(prefix=csvcol1_);'; put '%let dsv2=%mf_getuniquename(prefix=csvcol2_);'; put 'retain &dsv1 0;'; put '&dsv2=length(&var)+countc(&var,''"'');'; put 'if &dsv2>&dsv1 then &dsv1=&dsv2;'; put 'if last then call symputx('; put '"vlen&i"'; put '/* should be no shorter than varlen, and no longer than 32767 */'; put ',cats(''$quote'',min(&dsv1+2,32767),''.'')'; put ',''l'''; put ');'; put '%end;'; put '%end;'; put '%let vat=@;'; put '%let vcom=&delim;'; put '%let vmiss=%mf_getuniquename(prefix=csvcol3_);'; put '/* next, export data */'; put 'data _null_;'; put 'set &ds.;'; put 'file &outloc mod dlm=&delim dsd &outencoding lrecl=32767 termstr=&termstr;'; put 'if _n_=1 then &vmiss='' '';'; put '%do i=1 %to &vcnt;'; put '%let var=%scan(&varlist,&i);'; put '%if &i=&vcnt %then %do;'; put '%let vat=;'; put '%let vcom=;'; put '%end;'; put '%if %mf_getvartype(&ds,&var)=N %then %do;'; put '%if &headerformat = SASJS %then %do;'; put '%let vcom=&delim;'; put '%let fmttype=%sysfunc(mcf_getfmttype(%mf_getvarformat(&ds,&var)0));'; put '%if &fmttype=DATE %then %let vfmt=DATE9.;'; put '%else %if &fmttype=DATETIME %then %let vfmt=E8601DT26.6;'; put '%else %if &fmttype=TIME %then %let vfmt=TIME12.;'; put '%else %do;'; put '%let vfmt=;'; put '%let vcom=;'; put '%end;'; put '%end;'; put '%else %let vcom=;'; put '/* must use period - in order to work in both 9.4 and Viya 3.5 */'; put 'if missing(&var) and &var ne %sysfunc(getoption(MISSING)) then do;'; put '&vmiss=cats(''.'',&var);'; put 'put &vmiss &vat;'; put 'end;'; put 'else put &var &vfmt &vcom &vat;'; put '%end;'; put '%else %do;'; put '%if &i ne &vcnt %then %let vcom=&delim;'; put 'put &var &&vlen&i &vcom &vat;'; put '%end;'; put '%end;'; put 'run;'; put '%mend mp_ds2csv;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Sends a changeset to staging area'; put '@details This is the service that is called when submitting a new edit.'; put '

Service Inputs

'; put '
jsdata
'; put 'This is the staged data table, plus an _____DELETE__THIS__RECORD_____ column'; put '
SASControlTable
'; put '|ACTION:$char4.|MESSAGE:$char1.|LIBDS:$char19.|'; put '|---|---|---|'; put '|LOAD|User-Provided message|LIBREF.DATASET_NAME|'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mf_nobs.sas'; put '@li dc_assignlib.sas'; put '@li mf_verifymacvars.sas'; put '@li mf_mkdir.sas'; put '@li mf_getuniquefileref.sas'; put '@li mpe_loader.sas'; put '@li mpe_filtermaster.sas'; put '@li mp_abort.sas'; put '@li mp_binarycopy.sas'; put '@li mp_cntlout.sas'; put '@li mp_ds2csv.sas'; put '@li mf_getplatform.sas'; put '@li removecolsfromwork.sas'; put '@li mpeinit.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%global approver; %let approver=;'; put '%global libref; %let libref=;'; put '%global dsn; %let dsn=;'; put '%global user; %let user=;'; put '%let user=%mf_getuser();'; put '/* load parameters */'; put 'data _null_;'; put 'set work.sascontroltable;'; put 'call symputx(''action'',action);'; put 'call symputx(''message'',message);'; put 'libds=upcase(libds);'; put 'call symputx(''orig_libds'',libds);'; put 'is_fmt=0;'; put 'if substr(cats(reverse(libds)),1,3)=:''CF-'' then do;'; put 'libds=scan(libds,1,''-'');'; put 'putlog "Format Catalog Captured";'; put 'libds=''work.fmtextract'';'; put 'call symputx(''libds'',libds);'; put 'is_fmt=1;'; put 'end;'; put 'else call symputx(''libds'',libds);'; put 'call symputx(''is_fmt'',is_fmt);'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_cntlout('; put 'iftrue=(&is_fmt=1)'; put ',libcat=&orig_libds'; put ',fmtlist=0'; put ',cntlout=work.fmtextract'; put ')'; put '/* stream back meta info, further jquery calls will return col metadata and'; put 'actual data */'; put '%let libref=%upcase(%scan(&libds,1,.));'; put '%let dsn=%upcase(%scan(&libds,2,.));'; put '%dc_assignlib(WRITE,&libref)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc - unable to assign library &libref)'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(mpelocapprovals libds)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: mpelocapprovals libds)'; put ')'; put '%put Verify that the upload does not violate Row Level Security checks:;'; put '%mpe_filtermaster(ULOAD,&libds,'; put 'dclib=&mpelib,'; put 'outref=filtref,'; put 'outds=work.query'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc during filtering process)'; put ')'; put '/* prepare inverse query */'; put '%let tempref=%mf_getuniquefileref();'; put 'data _null_;'; put 'infile filtref end=eof;'; put 'file &tempref;'; put 'if _n_=1 then put ''where not('';'; put 'input;'; put 'put _infile_;'; put 'if eof then put '')'';'; put 'run;'; put '/* apply the query */'; put 'data work.badrecords;'; put 'set work.jsdata;'; put '%inc &tempref/source2;;'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (%mf_nobs(work.badrecords)>0)'; put ',mac=&_program'; put ',msg=%str('; put 'Security Problem - %mf_nobs(work.badrecords) unauthorised records submitted'; put ')'; put ')'; put 'PROC FORMAT;'; put 'picture yymmddhhmmss other=''%0Y%0m%0d_%0H%0M%0S'' (datatype=datetime);'; put 'RUN;'; put '/**'; put '* Create package folder and redirect the log'; put '*/'; put '/* create a dataset key (datetime plus 6 digit random number plus PID) */'; put '%let mperef=DC%left(%sysfunc(datetime(),B8601DT19.3))_%substr('; put '%sysfunc(ranuni(0)),3,6)_%substr(%str(&sysjobid ),1,4);'; put '/* get web url */'; put '%global url;'; put '%let url=localhost/SASStoredProcess;'; put '%let platform=%mf_getplatform();'; put '%put &=platform;'; put 'data _null_;'; put 'length url $128;'; put '%macro stagedata();'; put '%if &platform=SASVIYA %then %do;'; put 'if symexist(''_baseurl'') then do;'; put 'url=symget(''_baseurl'');'; put 'if subpad(url,length(url)-9,9)=''SASStudio'''; put 'then url=substr(url,1,length(url)-11);'; put 'else url="&systcpiphostname/SASJobExecution";'; put 'end;'; put 'else url="&systcpiphostname/SASJobExecution";'; put '%end;'; put '%else %if &platform=SASMETA %then %do;'; put 'rc=METADATA_GETURI("Stored Process Web App",url);'; put '%end;'; put '%mend stagedata;'; put '%stagedata()'; put 'call symputx(''url'',url);'; put 'putlog url=;'; put 'run;'; put '/* Create package folder */'; put '%let dir=&mpelocapprovals/&mperef;'; put '%mf_mkdir(&dir)'; put '/* redirect the log */'; put '%put; %put; %put log is being redirected;'; put '%put to retrieve, visit this url:; %put;%put;'; put '%let url=&url?_program=%substr(&_program'; put ',1,%length(&_program)-9)getlog%str(&)table=&mperef;'; put '%put &url;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to log redirection)'; put ')'; put 'proc printto log="&dir/weblog.txt";run;'; put 'options notes mprint;'; put 'libname approve "&dir";'; put '/* take copy of webin file */'; put 'data _null_;'; put 'if symexist(''_WEBIN_FILEREF1'')'; put 'then ref=symget(''_WEBIN_FILEREF1'');'; put 'else if symexist(''sasjs_tables'') then do;'; put 'rc=filename(''ref'',"%sysfunc(pathname(work))/&dsn.csv");'; put 'ref=''ref'';'; put 'end;'; put 'else ref=''indata1'';'; put 'call symputx(''ref'',ref);'; put 'putlog ref=;'; put 'run;'; put '%mp_binarycopy(inref=&ref, outloc="&dir/_WEBIN_FILEREF1.txt")'; put '/* take copy of macvars */'; put 'data _null_;'; put 'file "&dir/macvars.sas";'; put 'set sashelp.vmacro;'; put 'where scope=''GLOBAL'';'; put 'put ''%let '' name ''='' value '';'';'; put 'run;'; put 'data approve.jsdset;'; put 'length _____DELETE__THIS__RECORD_____ $3;'; put 'set jsdata;'; put 'run;'; put '/**'; put '* mf_getvarXXX functions will fail if the target is locked - so take a copy'; put '* and reference that (this will also explicitly throw the lock situation)'; put '*/'; put '%let dscopy=work.dscopy;'; put 'data &dscopy;'; put 'set &libds;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Issue getting lock on &libds)'; put ')'; put '%mp_ds2csv(approve.jsdset'; put ',dlm=COMMA'; put ',outfile="&dir/&orig_libds..csv"'; put ',outencoding="UTF-8"'; put ',headerformat=NAME'; put ',termstr=CRLF'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc when writing the CSV)'; put ')'; put '%mpe_loader(mperef=&mperef'; put ',submitted_reason_txt=%superq(message)'; put ',approver=%quote(%trim(&approver))'; put ',url=%superq(url)'; put ',dc_dttmtfmt=&dc_dttmtfmt'; put ')'; put '%mp_abort(mode=INCLUDE)'; put '%mp_abort('; put 'iftrue=(%sysfunc(fileexist(%sysfunc(pathname(work))/mf_abort.error))=1)'; put ',mac=&_program..sas'; put ',msg=%str(mf_abort.error=1)'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '/* send relevant SUCCESS values */'; put 'data sasparams;'; put 'STATUS=''SUCCESS'';'; put 'DSID="&mperef";'; put 'url="&url";'; put 'run;'; put '%removecolsfromwork(___TMP___MD5)'; put '%webout(OPEN)'; put '%webout(OBJ,sasparams)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/hooks; %let service=mpe_column_level_security_postedit; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Post Edit Hook script for the MPE_COLUMN_LEVEL_SECURITY table'; put '@details Post edit hooks provide additional backend validation for user'; put 'provided data. The incoming dataset is named `work.staging_ds` and is'; put 'provided in mpe_loader.sas.'; put 'Available macro variables:'; put '@li DC_LIBREF - The DC control library'; put '@li LIBREF - The library of the dataset being edited (is assigned)'; put '@li DS - The dataset being edited'; put 'This validation checks the incoming column_level_security settings to ensure'; put 'each individual filter is valid'; put '**/'; put '/* check scope values and ensure uppercasing */'; put '%let errflag=0;'; put '%let errmsg=;'; put 'data work.staging_ds;'; put 'set work.staging_ds;'; put 'cls_scope=upcase(cls_scope);'; put 'CLS_LIBREF=upcase(CLS_LIBREF);'; put 'cls_table=upcase(CLS_TABLE);'; put 'CLS_VARIABLE_NM=upcase(CLS_VARIABLE_NM);'; put 'if cls_scope not in (''ALL'',''VIEW'',''EDIT'') then do;'; put 'call symputx(''errflag'',1);'; put 'call symputx(''errmsg'',"Invalid scope: "!!cls_scope);'; put 'stop;'; put 'end;'; put 'if cls_hide<1 then cls_hide=0;'; put 'else cls_hide=1;'; put 'if CLS_ACTIVE<1 then CLS_ACTIVE=0;'; put 'else CLS_ACTIVE=1;'; put 'run;'; put '%mp_abort(iftrue=(&errflag=1)'; put ',mac=mpe_column_level_security_postedit'; put ',msg=%superq(errmsg)'; put ')'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=mpe_row_level_security_postedit; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_filtergenerate(inds,outref=filter);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put 'filename &outref temp;'; put '%if %mf_nobs(&inds)=0 %then %do;'; put '/* ensure we have a default filter */'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc sort data=&inds;'; put 'by SUBGROUP_ID;'; put 'run;'; put 'data _null_;'; put 'file &outref lrecl=32800;'; put 'set &inds end=last;'; put 'by SUBGROUP_ID;'; put 'if _n_=1 then put ''(('';'; put 'else if first.SUBGROUP_ID then put +1 GROUP_LOGIC ''('';'; put 'else put +2 SUBGROUP_LOGIC;'; put 'put +4 VARIABLE_NM OPERATOR_NM RAW_VALUE;'; put 'if last.SUBGROUP_ID then put '')''@;'; put 'if last then put '')'';'; put 'run;'; put '%end;'; put '%mend mp_filtergenerate;'; put '%macro mp_filtervalidate(inref,targetds,abort=YES,outds=work.mp_filtervalidate);'; put '%mp_abort(iftrue= (&syscc ne 0 or &syserr ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc / syserr=&syserr - on macro entry)'; put ')'; put '%local fref1;'; put '%let fref1=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &fref1;'; put 'infile &inref end=eof;'; put 'if _n_=1 then do;'; put 'put "proc sql;";'; put 'put "validate select * from &targetds";'; put 'put "where " ;'; put 'end;'; put 'input;'; put 'put _infile_;'; put 'putlog _infile_;'; put 'if eof then put ";quit;";'; put 'run;'; put '%inc &fref1;'; put 'data &outds;'; put 'if &sqlrc or &syscc or &syserr then do;'; put 'REASON_CD=''VALIDATION_ERR''!!''OR: ''!!'; put 'coalescec(symget(''SYSERRORTEXT''),symget(''SYSWARNINGTEXT''));'; put 'output;'; put 'end;'; put 'else stop;'; put 'run;'; put 'filename &fref1 clear;'; put '%if %mf_nobs(&outds)>0 %then %do;'; put '%if &abort=YES %then %do;'; put 'data _null_;'; put 'set &outds;'; put 'call symputx(''REASON_CD'',reason_cd,''l'');'; put 'stop;'; put 'run;'; put '%mp_abort('; put 'mac=&sysmacroname,'; put 'msg=%str(Filter validation issues.)'; put ')'; put '%end;'; put '%let syscc=1008;'; put '%end;'; put '%mend mp_filtervalidate;'; put '%macro mp_filtercheck(inds,targetds=,outds=work.badrecords,abort=YES);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put '/* Validate input column */'; put '%local vtype;'; put '%let vtype=%mf_getvartype(&inds,RAW_VALUE);'; put '%mp_abort(iftrue=(&abort=YES and &vtype ne C),'; put 'mac=&sysmacroname,'; put 'msg=%str(%str(ERR)OR: RAW_VALUE must be character)'; put ')'; put '%if &vtype ne C %then %do;'; put '%put &sysmacroname: RAW_VALUE must be character;'; put '%let syscc=42;'; put '%return;'; put '%end;'; put '/**'; put '* Sanitise the values based on valid value lists, then strip out'; put '* quotes, commas, periods and spaces.'; put '* Only numeric values should remain'; put '*/'; put '%local reason_cd nobs;'; put '%let nobs=0;'; put 'data &outds;'; put '/*length GROUP_LOGIC SUBGROUP_LOGIC $3 SUBGROUP_ID 8 VARIABLE_NM $32'; put 'OPERATOR_NM $10 RAW_VALUE $4000;*/'; put 'set &inds;'; put 'length reason_cd $4032 vtype $1 vnum dsid 8 tmp $4000;'; put 'drop tmp;'; put '/* quick check to ensure column exists */'; put 'if upcase(VARIABLE_NM) not in'; put '(%upcase(%mf_getvarlist(&targetds,dlm=%str(,),quote=SINGLE)))'; put 'then do;'; put 'REASON_CD="Variable "!!cats(variable_nm)!!" not in &targetds";'; put 'putlog REASON_CD= VARIABLE_NM=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'return;'; put 'end;'; put '/* need to open the dataset to get the column type */'; put 'dsid=open("&targetds","i");'; put 'if dsid>0 then do;'; put 'vnum=varnum(dsid,VARIABLE_NM);'; put 'if vnum<1 then do;'; put '/* should not happen as was also tested for above */'; put 'REASON_CD=cats("Variable (",VARIABLE_NM,") not found in &targetds");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'return;'; put 'end;'; put '/* now we can get the type */'; put 'else vtype=vartype(dsid,vnum);'; put 'end;'; put '/* closed list checks */'; put 'if GROUP_LOGIC not in (''AND'',''OR'') then do;'; put 'REASON_CD=''GROUP_LOGIC should be AND/OR, not:''!!cats(GROUP_LOGIC);'; put 'putlog REASON_CD= GROUP_LOGIC=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if SUBGROUP_LOGIC not in (''AND'',''OR'') then do;'; put 'REASON_CD=''SUBGROUP_LOGIC should be AND/OR, not:''!!cats(SUBGROUP_LOGIC);'; put 'putlog REASON_CD= SUBGROUP_LOGIC=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if mod(SUBGROUP_ID,1) ne 0 then do;'; put 'REASON_CD=''SUBGROUP_ID should be integer, not ''!!cats(subgroup_id);'; put 'putlog REASON_CD= SUBGROUP_ID=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if OPERATOR_NM not in'; put '(''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'',''BETWEEN'',''IN'',''NOT IN'',''CONTAINS'')'; put 'then do;'; put 'REASON_CD=''Invalid OPERATOR_NM: ''!!cats(OPERATOR_NM);'; put 'putlog REASON_CD= OPERATOR_NM=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put '/* special missing logic */'; put 'if vtype=''N'''; put 'and OPERATOR_NM in (''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'')'; put 'and cats(upcase(raw_value)) in ('; put '''.'',''.A'',''.B'',''.C'',''.D'',''.E'',''.F'',''.G'',''.H'',''.I'',''.J'',''.K'',''.L'',''.M'',''.N'''; put '''.N'',''.O'',''.P'',''.Q'',''.R'',''.S'',''.T'',''.U'',''.V'',''.W'',''.X'',''.Y'',''.Z'',''._'''; put ')'; put 'then do;'; put '/* valid numeric - exit data step loop */'; put 'return;'; put 'end;'; put '/* special logic */'; put 'if OPERATOR_NM in (''IN'',''NOT IN'',''BETWEEN'') then do;'; put 'if OPERATOR_NM=''BETWEEN'' then raw_value1=tranwrd(raw_value,'' AND '','','');'; put 'else do;'; put 'if substr(raw_value,1,1) ne ''('''; put 'or substr(cats(reverse(raw_value)),1,1) ne '')'''; put 'then do;'; put 'REASON_CD=''Missing start/end bracket in RAW_VALUE'';'; put 'putlog REASON_CD= OPERATOR_NM= raw_value= raw_value1= ;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'else raw_value1=substr(raw_value,2,max(length(raw_value)-2,0));'; put 'end;'; put '/* we now have a comma seperated list of values */'; put 'if vtype=''N'' then do i=1 to countc(raw_value1, '','')+1;'; put 'tmp=scan(raw_value1,i,'','');'; put 'if cats(tmp) ne ''.'' and input(tmp, ?? 8.) eq . then do;'; put 'REASON_CD=''Non Numeric value provided'';'; put 'putlog REASON_CD= OPERATOR_NM= raw_value= raw_value1= ;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'return;'; put 'end;'; put 'end;'; put 'else raw_value1=raw_value;'; put '/* remove nested literals eg '''' */'; put 'raw_value1=tranwrd(raw_value1,"''''",'''');'; put '/* now match string literals (always single quotes) */'; put 'raw_value2=raw_value1;'; put 'regex = prxparse("s/(\'').*?(\'')//");'; put 'call prxchange(regex,-1,raw_value2);'; put '/* remove commas and periods*/'; put 'raw_value3=compress(raw_value2,'',.'');'; put '/* output records that contain values other than digits and spaces */'; put 'if notdigit(compress(raw_value3,'' ''))>0 then do;'; put 'putlog raw_value3= $hex32.;'; put 'REASON_CD=cats(''Invalid RAW_VALUE:'',raw_value);'; put 'putlog REASON_CD= raw_value= raw_value1= raw_value2= raw_value3=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'set &outds end=last;'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue=(&abort=YES and &nobs>0),'; put 'mac=&sysmacroname,'; put 'msg=%str(Data issue: %superq(reason_cd))'; put ')'; put '%if &nobs>0 %then %do;'; put '%let syscc=1008;'; put '%return;'; put '%end;'; put '/**'; put '* syntax checking passed but it does not mean the filter is valid'; put '* for that we can run a proc sql validate query'; put '*/'; put '%local fref1;'; put '%let fref1=%mf_getuniquefileref();'; put '%mp_filtergenerate(&inds,outref=&fref1)'; put '/* this macro will also set syscc to 1008 if any issues found */'; put '%mp_filtervalidate(&fref1,&targetds,outds=&outds,abort=&abort)'; put '%mend mp_filtercheck;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Post Edit Hook script for the MPE_ROW_LEVEL_SECURITY table'; put '@details Post edit hooks provide additional backend validation for user'; put 'provided data. The incoming dataset is named `work.staging_ds` and is'; put 'provided in mpe_loader.sas.'; put 'Available macro variables:'; put '@li DC_LIBREF - The DC control library'; put '@li LIBREF - The library of the dataset being edited (is assigned)'; put '@li DS - The dataset being edited'; put 'This validation checks the incoming row_level_security settings to ensure'; put 'each individual filter is'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li mp_filtercheck.sas'; put '

Related Macros

'; put '@li mpe_loader.sas'; put '**/'; put '/* ignore scope and group for validation */'; put 'proc sql;'; put 'create table work.batches as'; put 'select distinct upcase(rls_libref) as rls_libref,'; put 'upcase(rls_table) as rls_table,'; put 'rls_group_logic as group_logic,'; put 'rls_subgroup_logic as subgroup_logic,'; put 'rls_subgroup_id as subgroup_id,'; put 'rls_variable_nm as variable_nm,'; put 'rls_operator_nm as operator_nm,'; put 'rls_raw_value as raw_value'; put 'from work.staging_ds'; put 'where rls_active=1'; put 'order by rls_libref, rls_table;'; put '%let cnt=0;'; put 'data _null_;'; put 'set work.batches;'; put 'by rls_libref rls_table;'; put 'putlog (_all_)(=);'; put 'if last.rls_table then do;'; put 'x+1;'; put 'call symputx(cats(''libds'',x),cats(rls_libref,''.'',rls_table));'; put 'call symputx(''cnt'',x);'; put 'end;'; put 'run;'; put '%macro quickloop();'; put '%do i=1 %to &cnt;'; put 'data work.inds&i;'; put 'set work.batches;'; put 'if cats(rls_libref,''.'',rls_table)="&&libds&i";'; put 'keep group_logic subgroup_logic subgroup_id variable_nm operator_nm'; put 'raw_value;'; put 'run;'; put '%dc_assignlib(READ,%scan(&&libds&i,1,.))'; put '%mp_filtercheck(work.inds&i'; put ',targetds=&&libds&i'; put ',outds=work.badrecords'; put ',abort=YES'; put ')'; put '%end;'; put '%mend quickloop;'; put '%quickloop()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=mpe_tables_postedit; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Post Edit Hook script for the MPE_TABLES table'; put '@details Post edit hooks provide additional backend validation for user'; put 'provided data. The incoming dataset is named `work.staging_ds` and is'; put 'provided in mpe_loader.sas.'; put 'Available macro variables:'; put '@li DC_LIBREF - The DC control library'; put '@li LIBREF - The library of the dataset being edited (is assigned)'; put '@li DS - The dataset being edited'; put 'This validation checks MPE_TABLES to ensure modified / added records are'; put 'valid. If a non-default AUDIT_LIBDS is being used, there is also a check'; put 'to ensure that this table already exists.'; put '**/'; put '%let errmsg=;'; put '%let errflag=0;'; put '/* ensure uppercasing */'; put 'data work.staging_ds;'; put 'set work.staging_ds;'; put 'LIBREF=upcase(LIBREF);'; put 'DSN=upcase(DSN);'; put 'loadtype=upcase(loadtype);'; put 'buskey=upcase(buskey);'; put 'var_txfrom=upcase(var_txfrom);'; put 'var_txto=upcase(var_txto);'; put 'var_busfrom=upcase(var_busfrom);'; put 'var_busto=upcase(var_busto);'; put 'var_processed=upcase(var_processed);'; put 'close_vars=upcase(close_vars);'; put 'audit_libds=upcase(audit_libds);'; put '/* check for valid loadtype */'; put 'if LOADTYPE not in (''UPDATE'',''TXTEMPORAL'',''FORMAT_CAT'',''BITEMPORAL'',''REPLACE'')'; put 'then do;'; put 'call symputx(''errmsg'',"Invalid LOADTYPE: "!!LOADTYPE);'; put 'call symputx(''errflag'',1);'; put 'end;'; put '/* force correct BUSKEY when loading format catalogs */'; put 'if LOADTYPE=''FORMAT_CAT'' then BUSKEY=''FMTNAME START'';'; put 'run;'; put '%mp_abort(iftrue=(&errflag=1)'; put ',mac=mpe_tables_postedit'; put ',msg=%superq(errmsg)'; put ')'; put '/* get distinct list of audit libs */'; put 'proc sql;'; put 'create table work.liblist as'; put 'select distinct audit_libds'; put 'from work.staging_ds'; put 'where audit_libds not in ('''',''0'', "&dc_libref..MPE_AUDIT")'; put 'and upcase(_____DELETE__THIS__RECORD_____) ne "YES";'; put '/* assign the libs */'; put 'data _null_;'; put 'set work.liblist;'; put 'call symputx(cats(''lib'',_n_),audit_libds);'; put 'libref=scan(audit_libds,1,''.'');'; put 'call execute(''%dc_assignlib(WRITE,''!!libref!!'')'');'; put 'run;'; put '/* check the audit tables exist */'; put 'data _null_;'; put 'set work.liblist;'; put 'if exist(audit_libds,"DATA")=0 then do;'; put 'call symputx(''errmsg'','; put '"Audit Table "!!audit_libds!!" does not exist, or could not be assigned."'; put ');'; put 'call symputx(''errflag'',1);'; put 'end;'; put 'run;'; put '%mp_abort(iftrue=(&errflag=1)'; put ',mac=mpe_tables_postedit'; put ',msg=%superq(errmsg)'; put ')'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=mpe_validations_postedit; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Post Edit Hook script for the MPE_VALIDATIONS table'; put '@details Post edit hooks provide additional backend validation for user'; put 'provided data. The incoming dataset is named `work.staging_ds` and is'; put 'provided in mpe_loader.sas.'; put 'Available macro variables:'; put '@li DC_LIBREF - The DC control library'; put '@li LIBREF - The library of the dataset being edited (is assigned)'; put '@li DS - The dataset being edited'; put 'This validation checks the incoming mpe_validations settings to ensure'; put 'there are no columns that have both HARDSELECT_HOOK and SOFTSELECT_HOOK.'; put '

SAS Macros

'; put '@li mf_nobs.sas'; put '

Related Macros

'; put '@li mpe_loader.sas'; put '**/'; put '/** check to avoid a colum having both HARDSELECT_HOOK and SOFTSELECT_HOOK */'; put '/* need to merge with base table in the case of a single row being added */'; put '%global src_list1 src_list2;'; put '%let src_list1='''';'; put 'proc sql noprint;'; put 'create table work.check1 as'; put 'select quote(catx(''.'',base_lib,base_ds,base_col)) as source'; put ',rule_type'; put 'from work.staging_ds'; put 'where rule_type in (''SOFTSELECT_HOOK'',''HARDSELECT_HOOK'')'; put 'and upcase(_____DELETE__THIS__RECORD_____) ne "YES";'; put 'select distinct cats(source) into: src_list1 separated by '','''; put 'from work.check1;'; put 'create table work.check2 as'; put 'select quote(catx(''.'',base_lib,base_ds,base_col)) as source'; put ',rule_type'; put 'from &DC_LIBREF..MPE_VALIDATIONS'; put 'where rule_type in (''SOFTSELECT_HOOK'',''HARDSELECT_HOOK'')'; put 'and &dc_dttmtfmt. lt tx_to'; put 'and catx(''.'',base_lib,base_ds,base_col) in (&src_list1);'; put 'create table work.check3 as'; put 'select * from work.check1'; put 'union'; put 'select * from work.check2;'; put 'create table work.validation_checker as'; put 'select source'; put ',count(*) as cnt'; put 'from work.check3'; put 'group by 1'; put 'having cnt>1;'; put 'select distinct source into: src_list2 from work.validation_checker;'; put 'data _null_;'; put 'set work.validation_checker;'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (%mf_nobs(work.validation_checker)>0)'; put ',mac=mpe_validations_postedit'; put ',msg=%str(The following vars have duplicate HOOKS: &src_list2)'; put ')'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/lineage; %let service=fetchlineage; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 or %length(&var)=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_inc)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status;'; put 'proc sql noprint;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro bitemporal_closeouts('; put 'tech_from=tx_from_dttm'; put ',tech_to = tx_to_dttm /* Technical TO datetime variable.'; put 'Req''d on BASE table only. */'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE /* Name of STAGING table. */'; put ',PK= name sex /* Business key, space separated. */'; put '/* Should INCLUDE BUS_FROM field if relevant. */'; put ',NOW=DEFINE'; put ',FILTER= /* supply a filter to limit the update */'; put ',outdest= /* supply an unquoted filepath/filename.ext to get'; put 'a text file containing the update statements */'; put ',loadtype='; put ',loadtarget=YES /* if <> YES will return without changing anything */'; put ');'; put '%put ENTERING &sysmacroname;'; put '%local x var start;'; put '%let start=%sysfunc(datetime());'; put '%dc_assignlib(WRITE,&base_lib)'; put '%dc_assignlib(WRITE,&append_lib)'; put '%if &now=DEFINE %then %let now=&dc_dttmtfmt.;'; put '%put &=now;'; put '/**'; put '* perform basic checks'; put '*/'; put '/* do tables exist? */'; put '%if not %sysfunc(exist(&base_lib..&base_dsn)) %then %do;'; put '%mp_abort(msg=&base_lib..&base_dsn does not exist)'; put '%end;'; put '%else %if %sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 %then %do;'; put '%mp_abort(msg=&append_lib..&append_dsn does not exist)'; put '%end;'; put '/* do TX columns exist? */'; put '%if &loadtype ne UPDATE %then %do;'; put '%if not %mf_existvar(&base_lib..&base_dsn,&tech_from) %then %do;'; put '%mp_abort(msg=&tech_from does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&base_lib..&base_dsn,&tech_to) %then %do;'; put '%mp_abort(msg=&tech_to does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%end;'; put '/* do PK columns exist? */'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if not %mf_existvar(&base_lib..&base_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&append_lib..&append_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &append_lib..&append_dsn)'; put '%end;'; put '%end;'; put '/* check uniqueness */'; put 'proc sort data=&append_lib..&append_dsn'; put 'out=___closeout1 noduprecs dupout=___closeout1a;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(___closeout1a,NLOBS)>0 %then'; put '%put NOTE: dups on (&PK) in (&append_lib..&append_dsn);'; put '/* is &NOW value within a tolerance? Should not allow renegade closeouts.. */'; put '%local gap;'; put '%let gap=0;'; put 'data _null_;'; put 'now=&now;'; put 'gap=intck(''HOURS'',now,datetime());'; put 'call symputx(''gap'',gap,''l'');'; put 'run;'; put '%mf_abort('; put 'iftrue=(&gap > 24),'; put 'msg=NOW variable (&now) is not within a 24hr tolerance'; put ')'; put '/* have any warnings / errs occurred thus far? If so, abort */'; put '%mf_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/**'; put '* Create closeout statements. These are sent as individual SQL statements'; put '* to ensure pass-through utilisation. The update_cnt variable monitors'; put '* how many records were actually updated on the target table.'; put '*/'; put '%local update_cnt;'; put '%let update_cnt=0;'; put 'filename tmp temp;'; put 'data _null_;'; put 'set ___closeout1;'; put 'file tmp;'; put 'if _n_=1 then put ''proc sql noprint;'' ;'; put 'length string $32767.;'; put '%if &loadtype=UPDATE %then %do;'; put 'put "delete from &base_lib..&base_dsn where 1";'; put '%end;'; put '%else %do;'; put 'now=symget(''now'');'; put 'put "update &base_lib..&base_dsn set &tech_to= " now @;'; put '%if %mf_existvar(&base_lib..&base_dsn,PROCESSED_DTTM) %then %do;'; put 'put " ,PROCESSED_DTTM=" now @;'; put '%end;'; put 'put " where " now " lt &tech_to ";'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if %mf_getvartype(&base_lib..&base_dsn,&var)=C %then %do;'; put '/* use single quotes to avoid ampersand resolution in data */'; put 'string=" & &var=''"!!trim(prxchange("s/''/''''/",-1,&var))!!"''";'; put '%end;'; put '%else %do;'; put 'string=cats(" & &var=",&var);'; put '%end;'; put 'put string;'; put '%end;'; put 'put "&filter ;";'; put 'put ''%let update_cnt=%eval(&update_cnt+&sqlobs);%put update_cnt=&update_cnt;'';'; put 'run;'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%if &loadtarget ne YES %then %return;'; put '/* ensure we have a lock */'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn'; put ',ref=bitemporal_closeouts'; put ',ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'options source2;'; put '%inc tmp;'; put 'filename tmp clear;'; put '/**'; put '* Update audit tracker'; put '*/'; put '%local newobs; %let newobs=%mf_getattrn(work.___closeout1,NLOBS);'; put '%local user; %let user=%mf_getuser();'; put 'proc sql;'; put 'insert into &mpelib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&append_lib..&append_dsn contained &newobs records"'; put ',LOADTYPE="CLOSEOUT"'; put ',DELETED_RECORDS=&update_cnt'; put ',NEW_RECORDS=0'; put ',DURATION=%sysfunc(datetime())-&start'; put ',USER_NM="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%mend bitemporal_closeouts;'; put '%macro mf_getschema(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum rc schema;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=''Schema/Owner'''; put ')),i));'; put '%if (&dsid ^= 0) %then %do;'; put '%let vnum=%sysfunc(varnum(&dsid,SYSVALUE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let schema=%sysfunc(getvarc(&dsid,&vnum));'; put '%put &libref. schema is &schema.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '&schema'; put '%mend mf_getschema;'; put '/** @endcond */'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_retainedkey('; put 'base_lib=WORK'; put ',base_dsn=BASETABLE'; put ',append_lib=WORK'; put ',append_dsn=APPENDTABLE'; put ',retained_key=DEFAULT_RK'; put ',business_key= PK1 PK2'; put ',check_uniqueness=NO'; put ',maxkeytable=0'; put ',locktable=0'; put ',outds=WORK.APPEND'; put ',filter_str='; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local base_libds app_libds key_field check maxkey idx_pk newkey_cnt iserr'; put 'msg x tempds1 tempds2 comma_pk appnobs checknobs dropvar tempvar idx_val;'; put '%let base_libds=%upcase(&base_lib..&base_dsn);'; put '%let app_libds=%upcase(&append_lib..&append_dsn);'; put '%let tempds1=%mf_getuniquename();'; put '%let tempds2=%mf_getuniquename();'; put '%let comma_pk=%mf_getquotedstr(in_str=%str(&business_key),dlm=%str(,),quote=);'; put '%let outds=%sysfunc(ifc(%index(&outds,.)=0,work.&outds,&outds));'; put '/* validation checks */'; put '%let iserr=0;'; put '%if &syscc>0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(SYSCC=&syscc on macro entry);'; put '%end;'; put '%else %if %sysfunc(exist(&base_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Base LIBDS (&base_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if %sysfunc(exist(&app_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Append LIBDS (&app_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&maxkeytable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Maxkeytable (&maxkeytable) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&locktable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Locktable (&locktable) expected but NOT FOUND);'; put '%end;'; put '%else %if %length(&business_key)=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Business key (&business_key) expected but NOT FOUND);'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&business_key));'; put '/* check business key values exist */'; put '%let key_field=%scan(&business_key,&x,%str( ));'; put '%if not %mf_existvar(&app_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &app_libds!;'; put '%goto err;'; put '%end;'; put '%else %if not %mf_existvar(&base_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &base_libds!;'; put '%goto err;'; put '%end;'; put '%end;'; put '%err:'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue=(&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put 'proc sql noprint;'; put 'select sum(max(&retained_key),0) into: maxkey from &base_libds;'; put '/**'; put '* get base table RK and bus field values for lookup'; put '*/'; put 'proc sql noprint;'; put 'create table &tempds1 as'; put 'select distinct &comma_pk,&retained_key'; put 'from &base_libds &filter_str'; put 'order by &comma_pk,&retained_key;'; put '%if &check_uniqueness=YES %then %do;'; put 'select count(*) into:checknobs'; put 'from (select distinct &comma_pk from &app_libds);'; put 'select count(*) into: appnobs from &app_libds; /* might be view */'; put '%if &checknobs ne &appnobs %then %do;'; put '%let msg=Source table &app_libds is not unique on (&business_key);'; put '%let iserr=1;'; put '%end;'; put '%end;'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue= (&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put '%if %mf_existvar(&app_libds,&retained_key)'; put '%then %let dropvar=(drop=&retained_key);'; put '/* prepare interim table with retained key populated for matching keys */'; put 'proc sql noprint;'; put 'create table &tempds2 as'; put 'select b.&retained_key, a.*'; put 'from &app_libds &dropvar a'; put 'left join &tempds1 b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&business_key));'; put '%let idx_val=%scan(&business_key,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by &retained_key;'; put '/* identify the number of entries without retained keys (new records) */'; put 'select count(*) into: newkey_cnt'; put 'from &tempds2'; put 'where missing(&retained_key);'; put 'quit;'; put '/**'; put '* Update maxkey table if link provided'; put '*/'; put '%if &maxkeytable ne 0 %then %do;'; put 'proc sql noprint;'; put 'select count(*) into: check from &maxkeytable'; put 'where upcase(keytable)="&base_libds";'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with mp_retainedkey'; put ',ctl_ds=&locktable'; put ')'; put 'proc sql;'; put '%if &check=0 %then %do;'; put 'insert into &maxkeytable'; put 'set keytable="&base_libds"'; put ',keycolumn="&retained_key"'; put ',max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put 'where keytable="&base_libds";'; put '%end;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with maxkey=%eval(&maxkey+&newkey_cnt)'; put ',ctl_ds=&locktable'; put ')'; put '%end;'; put '/* fill in the missing retained key values */'; put '%let tempvar=%mf_getuniquename();'; put 'data &outds(drop=&tempvar);'; put 'retain &tempvar %eval(&maxkey+1);'; put 'set &tempds2;'; put 'if &retained_key =. then &retained_key=&tempvar;'; put '&tempvar=&tempvar+1;'; put 'run;'; put '%mend mp_retainedkey;'; put '/** @cond */'; put '%macro mp_storediffs(libds'; put ',origds'; put ',key'; put ',delds=0'; put ',appds=0'; put ',modds=0'; put ',outds=work.mp_storediffs'; put ',loadref=0'; put ',processed_dttm=0'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '/* set up unique and temporary vars */'; put '%local ds1 ds2 ds3 ds4 hashkey inds_auto inds_keep dslist vlist;'; put '%let ds1=%upcase(work.%mf_getuniquename(prefix=mpsd_ds1));'; put '%let ds2=%upcase(work.%mf_getuniquename(prefix=mpsd_ds2));'; put '%let ds3=%upcase(work.%mf_getuniquename(prefix=mpsd_ds3));'; put '%let ds4=%upcase(work.%mf_getuniquename(prefix=mpsd_ds4));'; put '%let hashkey=%upcase(%mf_getuniquename(prefix=mpsd_hashkey));'; put '%let inds_auto=%upcase(%mf_getuniquename(prefix=mpsd_inds_auto));'; put '%let inds_keep=%upcase(%mf_getuniquename(prefix=mpsd_inds_keep));'; put '%let dslist=&origds;'; put '%if &delds ne 0 %then %do;'; put '%let delds=%upcase(&delds);'; put '%if %scan(&delds,-1,.)=&delds %then %let delds=WORK.&delds;'; put '%let dslist=&dslist &delds;'; put '%end;'; put '%if &appds ne 0 %then %do;'; put '%let appds=%upcase(&appds);'; put '%if %scan(&appds,-1,.)=&appds %then %let appds=WORK.&appds;'; put '%let dslist=&dslist &appds;'; put '%end;'; put '%if &modds ne 0 %then %do;'; put '%let modds=%upcase(&modds);'; put '%if %scan(&modds,-1,.)=&modds %then %let modds=WORK.&modds;'; put '%let dslist=&dslist &modds;'; put '%end;'; put '%let origds=%upcase(&origds);'; put '%if %scan(&origds,-1,.)=&origds %then %let origds=WORK.&origds;'; put '%let key=%upcase(&key);'; put '/* hash the key and append all the tables (marking the source) */'; put 'data &ds1;'; put 'set &dslist indsname=&inds_auto;'; put '&hashkey=put(md5(catx(''|'',%mf_getquotedstr(&key,quote=N))),$hex32.);'; put '&inds_keep=upcase(&inds_auto);'; put 'proc sort;'; put 'by &inds_keep &hashkey;'; put 'run;'; put '/* transpose numeric & char vars */'; put 'proc transpose data=&ds1'; put 'out=&ds2(rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_num));'; put 'by &inds_keep &hashkey;'; put 'var _numeric_;'; put 'run;'; put 'proc transpose data=&ds1'; put 'out=&ds3('; put 'rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_char)'; put 'where=(tgtvar_nm not in ("&hashkey","&inds_keep"))'; put ');'; put 'by &inds_keep &hashkey;'; put 'var _character_;'; put 'run;'; put '%if %index(&libds,-)>0 and %scan(&libds,2,-)=FC %then %do;'; put '/* this is a format catalog - cannot query cols directly */'; put '%let vlist="FMTNAME","START","END","LABEL","MIN","MAX","DEFAULT","LENGTH"'; put ',"FUZZ","PREFIX","MULT","FILL","NOEDIT","TYPE","SEXCL","EEXCL","HLO"'; put ',"DECSEP","DIG3SEP","DATATYPE","LANGUAGE";'; put '%end;'; put '%else %let vlist=%mf_getvarlist(&libds,dlm=%str(,),quote=DOUBLE);'; put 'data &ds4;'; put 'length &inds_keep $41 tgtvar_nm $32 _label_ $256;'; put 'if _n_=1 then call missing(_label_);'; put 'drop _label_;'; put 'set &ds2 &ds3 indsname=&inds_auto;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%upcase(&vlist));'; put 'if upcase(&inds_auto)="&ds2" then tgtvar_type=''N'';'; put 'else if upcase(&inds_auto)="&ds3" then tgtvar_type=''C'';'; put 'else do;'; put 'putlog "%str(ERR)OR: unidentified vartype input!" &inds_auto;'; put 'call symputx(''syscc'',98);'; put 'end;'; put 'if &inds_keep="&appds" then move_type=''A'';'; put 'else if &inds_keep="&delds" then move_type=''D'';'; put 'else if &inds_keep="&modds" then move_type=''M'';'; put 'else if &inds_keep="&origds" then move_type=''O'';'; put 'else do;'; put 'putlog "%str(ERR)OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%else %do;'; put '/* not an actual load, so avoid updating the max key table in next step. */'; put '%let rk_update_maxkeytable=NO;'; put '%end;'; put '%if %length(&RK_UNDERLYING)>0 %then %do;'; put '%mp_retainedkey('; put 'base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=&append_lib'; put ',append_dsn=&append_dsn'; put ',retained_key=&pk'; put ',business_key=&rk_underlying'; put ',check_uniqueness=&CHECK_UNIQUENESS'; put ',outds=work.append'; put '%if &rk_update_maxkeytable=NO %then %do;'; put ',maxkeytable=0'; put '%end;'; put '%else %do;'; put ',maxkeytable=&dclib..&RK_MAXKEYTABLE'; put '%end;'; put ',locktable=&dclib..mpe_lockanytable'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',filter_str=%str( (where=( &now < &tech_to)) )'; put '%end;'; put ')'; put '%end;'; put '%else %do;'; put 'proc sql;'; put 'create view work.append as select * from &append_lib..&append_dsn;'; put '%end;'; put '/**'; put '* generate md5 for append table'; put '*/'; put '/* it is possible the source dataset has additional (unwanted) columns.'; put 'Drop if specified; */'; put '%if %length(&keepvars)>0 %then %do;'; put '/* remove tech dates from keepvars as they are generated later */'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_from ),%str( )));'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_to ),%str( )));'; put '%let keepvars=(keep=&keepvars &bus_from &bus_to &processed &md5_col);'; put '%end;'; put '/* CAS varchar types cause append issues here, so perform autoconvert'; put 'by creating empty local table first */'; put 'data;'; put 'set &base_lib..&base_dsn &drop_tx_dates_noobs;'; put 'run;'; put '%local emptybasetable; %let emptybasetable=&syslast;'; put 'data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put '/* apply formats for bitemporal vars but not tx dates which are added later */'; put '%if %length(&keepvars)>0 and &loadtype=BITEMPORAL %then %do;'; put 'format &bus_from &bus_from_fmt;'; put 'format &bus_to &bus_to_fmt;'; put '%end;'; put 'set &emptybasetable /* base table reqd in case append has fewer cols */'; put 'work.append &drop_tx_dates;'; put '%if %length(%str(&bus_from_override))>0 %then %do;'; put '&bus_from= %unquote(&bus_from_override) ;'; put '%end;'; put '%if %length(%str(&bus_to_override))>0 %then %do;'; put '&bus_to= %unquote(&bus_to_override) ;'; put '%end;'; put 'length &md5_col $32;'; put '&md5_col=put(md5(&stripcols),hex32.);'; put '%if %length(&processed)>0 %then %do;'; put 'format &processed &processed_fmt;'; put '&processed=&now;'; put '%end;'; put '/**'; put '* If a delete column exists then create the delete dataset'; put '*/'; put '%if %mf_existvar(&append_lib..&append_dsn, &delete_col) %then %do;'; put 'drop &delete_col;'; put 'if upcase(&delete_col) = "YES" then output &outds_del ;'; put 'else output work.bitemp0_append ;'; put 'run;'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=%scan(&outds_del,-1,.)'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put 'output work.bitemp0_append;'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc gt 0 at line 494)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%if %length(&close_vars)>0 %then %do;'; put '/**'; put '* need to close out records that are not provided'; put '*/'; put 'proc sql;'; put 'create table bitemp1_closevars1 as'; put 'select distinct a.%mf_getquotedstr(in_str=&pk,dlm=%str(,a.),quote=)'; put 'from &base_lib..&base_dsn a'; put 'inner join work.bitemp0_append b'; put 'on 1=1'; put '/* join on closevars key */'; put '%do idx_pk=1 %to %sysfunc(countw(&close_vars));'; put '%let idx_val=%scan(&close_vars,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* filter base on tech dates if necessary */'; put '%if &loadtype=TXTEMPORAL %then %do;'; put 'where a.&tech_from <=&now and &now < a.&tech_to'; put '%end;'; put ';'; put 'create table bitemp1_closevars2 as'; put 'select distinct a.*'; put 'from bitemp1_closevars1 a'; put 'left join work.bitemp0_append b'; put 'on 1=1'; put '/* join on primary key */'; put '%do idx_pk=1 %to %sysfunc(countw(&pk));'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* identify removed records by null value in a field in PK but not close_vars'; put '*/'; put 'where b.%scan('; put '%mf_wordsInStr1ButNotStr2(Str1=&pk,Str2=&close_vars),1,%str( )'; put ') IS NULL'; put ';'; put '%if %mf_getattrn(bitemp1_closevars2,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=bitemp1_closevars2'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '/* return if nothing to load (was just deletes) */'; put '%if %mf_getattrn(work.bitemp0_append,NLOBS)=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- No updates - just deletes!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&base_lib,ds=&base_dsn,'; put 'ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%let user=%mf_getUser();'; put '/* no emails yet'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);*/'; put '%end;'; put '%return;'; put '%end;'; put '/**'; put '* If applying manual overrides to business dates, then the input table MUST'; put '* be unique on the PK. Check, and if not - abort.'; put '*/'; put '%local msg;'; put '%if %length(&bus_from_override.&bus_to_override)>0 or &CHECK_UNIQUENESS=YES'; put '%then %do;'; put 'proc sort data=work.bitemp0_append out=work.bitemp0_check nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.bitemp0_check,NLOBS)'; put 'ne %mf_getattrn(work.bitemp0_append,NLOBS)'; put '%then %do;'; put '%let msg=INPUT table &append_lib..&append_dsn is not unique on PK (&pk);'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%put syscc=&syscc;'; put '%if &syscc>0 %then %do;'; put '%let msg=Bitemporal transform / job aborted due to SYSCC=&SYSCC status;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg);'; put '%end;'; put '/* final check - abort if a lock has appeared on the target table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%goto end_of_macro;'; put '%end;'; put '/* perform join inside query as per'; put 'http://stackoverflow.com/questions/24629793/update-with-a-proc-sql */'; put 'exists( select 1 from &baselib_schema.&innertable where'; put '/* loop PK join */'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put '&base_dsn..&idx_val=&innertable..&idx_val and'; put '%end;'; put '%if &loadtype=BITEMPORAL %then %do;'; put '&base_dsn..&bus_from >= &innertable..&bus_from'; put 'and &base_dsn..&bus_to <= &innertable..&bus_to and'; put '%end;'; put '/* close the statement */'; put '1=1);'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put ') by myAlias;'; put 'execute (drop table &baselib_schema.&innertable) by myAlias;'; put '%end;'; put '%end;'; put 'quit;'; put 'data _null_;'; put 'putlog "&sysmacroname: Closeout complete";'; put 'run;'; put '/**'; put '* Append the new / updated records'; put '*/'; put '%if &engine_type=CAS %then %do;'; put '/* get varchar variables ready for casting */'; put '%local vcfmt vcrename vcassign vcdrop;'; put 'data _null_;'; put 'set work.bitemp_cols(where=(type=6)) end=last;'; put 'length vcrename vcassign vcdrop vcfmt $32767 rancol $32;'; put 'retain vcrename vcassign vcdrop vcfmt;'; put 'if _n_=1 then vcrename=''(rename=('';'; put 'rancol=resolve(''%mf_getuniquename()'');'; put 'vcfmt=trim(vcfmt)!!''length ''!!cats(name)!!'' varchar(*);'';'; put 'vcrename=trim(vcrename)!!'' ''!!cats(name,''='',rancol);'; put 'vcassign=cats(vcassign,name,''='',rancol,'';'');'; put 'vcdrop=cats(vcdrop,''drop ''!!rancol,'';'');'; put 'if last then do;'; put 'vcrename=cats(vcrename,''))'');'; put 'call symputx(''vcfmt'',vcfmt);'; put 'call symputx(''vcrename'',vcrename);'; put 'call symputx(''vcassign'',vcassign);'; put 'call symputx(''vcdrop'',vcdrop);'; put 'end;'; put 'run;'; put '/* prepare a temp cas table with varchars casted */'; put '%let tmp=%mf_getuniquename();'; put 'data casuser.&tmp ;'; put '&vcfmt'; put 'set work.bitemp6_unique &vcrename;'; put '&vcassign'; put '&vcdrop'; put 'run;'; put '/* load the table with varchars applied*/'; put 'data &base_lib..&base_dsn (append=yes )/sessref=dcsession ;'; put 'set casuser.&tmp;'; put 'run;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&tmp;'; put '/* this code will not work as regular tables do not have varchars */'; put '/*'; put 'proc casutil;'; put 'load data=work.bitemp6_unique'; put 'outcaslib="&base_lib" casout="&base_dsn" append ;'; put 'quit;'; put '*/'; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put 'proc append base=&base_lib..&base_dsn'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=bitemp6_unique force nowarn;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&base_lib..&base_dsn data=bitemp6_unique force nowarn; run;'; put '%end;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '/* final check on syscc */'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=&_program'; put ',msg=%str(!!Upload NOT successful!! Failed on actual update / append stage..)'; put ')'; put '%if &outds_audit ne 0 and &LOADTARGET=YES %then %do;'; put 'data work.vw_outds_orig /view=work.vw_outds_orig;'; put 'set work.bitemp0_base (drop=&md5_col);'; put 'where ___TMP___NEW_FLG=0;'; put 'drop ___TMP___NEW_FLG;'; put 'run;'; put '/* update the AUDIT table */'; put '%if %mf_existds(&outds_audit) %then %do;'; put 'options mprint;'; put '%mp_storediffs(&base_lib..&base_dsn'; put ',work.vw_outds_orig'; put ',&pk'; put ',delds=&outds_del'; put ',modds=&outds_mod'; put ',appds=&outds_add'; put ',outds=work.mp_storediffs'; put ',processed_dttm=&now'; put ',loadref=%superq(etlsource)'; put ')'; put 'data _null_;'; put 'set work.mp_storediffs;'; put 'putlog load_ref= libref= dsn= key_hash= tgtvar_nm=;'; put 'run;'; put 'proc append base=&outds_audit data=work.mp_storediffs;'; put 'run;'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Problem in audit stage (&outds_audit))'; put ')'; put '%let user=%mf_getUser();'; put '/**'; put 'Notify as appropriate EMAILS DISABLED'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);'; put '*/'; put '/* monitor BiTemporal usage */'; put '%if &log=1 %then %do;'; put '%put syscc=&syscc;'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'insert into &dclib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&ETLSOURCE"'; put ',LOADTYPE="&loadtype"'; put ',CHANGED_RECORDS=%mf_getattrn(&lastds,NLOBS)'; put ',NEW_RECORDS=%mf_getattrn(&outds_add,NLOBS)'; put ',DELETED_RECORDS=%mf_getattrn(&outds_del,NLOBS)'; put ',DURATION=&dur'; put ',MAC_VER="v&ver"'; put ',user_nm="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%put syscc=&syscc;'; put '%end;'; put '%end_of_macro:'; put '%mend bitemporal_dataloader;'; put '%macro meta_mapper('; put 'baseds=work.allmap /* base table to contain metamapping (two level) */'; put ', stageds=col_meta /* temp table to append to base*/'; put ', metaid=OMSOBJ:Column\A5HOSDWY.BF00LWQT'; put ', direction=REVERSE /* either REVERSE or FORWARDS */'; put ', level=0 /* system var - show level of nesting */'; put ', job= /* system var - avoid looping same source */'; put ', levelcheck=50 /* system var - avoid going too deep down the rabbit hole */'; put ', append=NO /* system var - when YES means appending within nested loop */'; put ');'; put '%if &level>&levelcheck %then %return;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%if &direction=REVERSE %then %do;'; put '%let start=Target;'; put '%let finish=Source;'; put '%end;'; put '%else %do;'; put '%let start=Source;'; put '%let finish=Target;'; put '%end;'; put '%if &append=NO %then %do;'; put 'proc datasets lib=work;'; put 'delete %scan(&baseds,2,.);'; put 'quit;'; put '%let index_statement=(index=(HASH/unique));'; put '%end;'; put '%else %let index_statement=;'; put 'data &stageds &index_statement ;'; put 'length HASH $32'; put 'jobname sourcetablename sourcecolname sourcecoluri'; put 'map_type map_transform targettablename targetcolname targetcoluri'; put 'uri targettableuri tfmuri sourcetableuri scuri tpuri tmpuri mturi $256'; put 'Derived_Rule $500 Marker_ID Name_ID N_Name LibRef engine sourcePublicType'; put 'targetPublicType $64;'; put 'keep HASH jobname sourcetablename sourcecolname sourcecoluri'; put 'map_type map_transform'; put 'targettablename targetcolname targetcoluri Derived_Rule level;'; put '/* proc transpose logic only */'; put 'length sourceshorttablename sourcemembertype sourcelocation'; put 'assoc assocuri name sturi foundrefuri foundfinishuri'; put 'targetshorttablename targetlocation targetmembertype trafoName $256'; put 'sourceshorttableuri sourceshortcoluri checkrdm targetshorttableuri'; put 'targetshortcoluri selected_direction $17'; put 'lturi _location $200;'; put 'call missing (of _all_);'; put '&start.coluri="&METAID";'; put 'level=&level;'; put '/* first get table associated with the column */'; put 'if metadata_getnasn(&start.coluri,''Table'',1,&start.tableuri)=0 then do;'; put 'putlog "ERR" "OR: Table not found";'; put 'stop;'; put 'end;'; put 'rc=metadata_getattr(&start.tableuri,"Name",&start.tablename);'; put 'rc=metadata_getattr(&start.coluri,"Name",&start.colname);'; put 'rc=metadata_getattr(&start.tableuri,''PublicType'',&start.PublicType);'; put 'if (metadata_getnasn(&start.tableuri, "TablePackage",1, tpuri)>0) then'; put 'do;'; put 'rc=metadata_getattr(tpuri,"Libref",LibRef);'; put 'rc=metadata_getattr(tpuri,"Engine",engine);'; put 'if missing(libref) then do;'; put 'rc=metadata_getnasn(tpuri, "UsedByPackages",1, tmpuri);'; put 'rc=metadata_getattr(tmpuri,"Libref",LibRef);'; put 'rc=metadata_getattr(tmpuri,"Engine",engine);'; put 'end;'; put '&start.tablename=cats('; put 'upcase(LibRef),''-'',upcase(engine),''.'',&start.tablename'; put ');'; put 'end;'; put 'else if (&start.PublicType="ExternalFile") then do;'; put 'rc=metadata_getnasn(&start.tableuri, "OwningFile",1, tmpuri);'; put 'rc=metadata_getnasn(tmpuri, "FileRefs",1, tmpuri);'; put 'rc=metadata_getnasn(tmpuri, "FileRefLocations",1, tmpuri);'; put 'rc=metadata_getattr(tmpuri,''FileName'',&start.tablename);'; put 'end;'; put 'else &start.tablename = ''work. ''||trim(lowcase(&start.tablename));'; put '/* now loop the Source / TargetFeatureMaps */'; put 'tfm=1;'; put 'do while(metadata_getnasn(&start.coluri,"&start.FeatureMaps",tfm,tfmuri)>0);'; put 'call missing(derived_rule);'; put 'rc=metadata_getattr(tfmuri,''TransformRole'',map_type);'; put '/* get job and step name */'; put 'if (metadata_getnasn(tfmuri,''AssociatedClassifierMap'',1,tmpuri)<1) then'; put 'do;'; put 'rc=metadata_getnasn(tfmuri,"&finish.Transformations",1,tmpuri);'; put 'rc=metadata_getnasn(tmpuri,''AssociatedClassifierMap'',1,tmpuri);'; put 'end ;'; put 'rc=metadata_getnasn(tmpuri,''Steps'',1,tmpuri);'; put 'rc=metadata_getattr(tmpuri,''Name'',map_transform);'; put 'rc=metadata_getnasn(tmpuri,''Activities'',1,tmpuri);'; put 'rc=metadata_getnasn(tmpuri,''Jobs'',1,tmpuri);'; put 'rc=metadata_getattr(tmpuri,''Name'',jobname);'; put 'if Map_Type = ''DERIVED'' then do;'; put 'if(metadata_getnasn(tfmuri,"SourceCode",1, scuri)>0) then do;'; put '/* standard */'; put 'mturi=tfmuri;'; put 'end;'; put 'else do;'; put '/* some SQL joins store transform rules elsewhere */'; put 'rc=metadata_getnasn(tfmuri,"Feature&start.s",1, tmpuri);'; put 'if (metadata_getnasn(tmpuri,"Variables",1, tmpuri)>0)'; put 'then rc=metadata_getnasn(tmpuri,"OwningTransformation",1, mturi);'; put 'else rc=metadata_getnasn(tfmuri,"Transformation&start.s",1, mturi);'; put 'rc=metadata_getnasn(mturi,"SourceCode",1, scuri);'; put 'end;'; put 'rc=metadata_getattr(scuri,"StoredText",Derived_Rule);'; put 'Derived_Rule = compress(Derived_Rule,''0A''x);'; put '/* loop to generate derived rule (swap ref numbers for col descs) */'; put 'sv=1;'; put 'do while(metadata_getnasn(mturi,"SubstitutionVariables",sv,tmpuri)>0);'; put 'rc=metadata_getattr(tmpuri,"Marker",Marker_ID);'; put 'rc=metadata_getattr(tmpuri,"Name",Name_ID);'; put 'N_Name = compress(scan(Name_ID,2,''-''));'; put 'Derived_Rule=tranwrd('; put 'Derived_Rule,compress(Marker_ID),compress(N_Name)'; put ');'; put 'sv+1;'; put 'end;'; put 'end;'; put '/* get source col attributes */'; put 'fs=1;'; put 'do while(metadata_getnasn(tfmuri,"Feature&finish.s",fs,&finish.coluri)>0);'; put 'rc=metadata_getattr(&finish.coluri,''Name'',&finish.colname);'; put 'rc=metadata_getnasn(&finish.coluri,''Table'',1,&finish.tableuri);'; put 'rc=metadata_getattr(&finish.tableuri,''Name'',&finish.tablename);'; put 'rc=metadata_getattr(&finish.tableuri,''PublicType'',&finish.PublicType);'; put 'if (metadata_getnasn(&finish.tableuri,"TablePackage",1,tpuri)>0) then'; put 'do;'; put 'rc=metadata_getattr(tpuri,"Libref",LibRef);'; put 'rc=metadata_getattr(tpuri,"Engine",engine);'; put 'if missing(libref) then do;'; put 'rc=metadata_getnasn(tpuri, "UsedByPackages",1, tmpuri);'; put 'rc=metadata_getattr(tmpuri,"Libref",LibRef);'; put 'rc=metadata_getattr(tmpuri,"Engine",engine);'; put 'end;'; put '&finish.tablename=cats('; put 'upcase(LibRef),''-'',upcase(engine),''.'',&finish.tablename'; put ');'; put 'end;'; put 'else if (&finish.PublicType="ExternalFile") then do;'; put 'rc=metadata_getnasn(&finish.tableuri, "OwningFile",1, tmpuri);'; put 'rc=metadata_getnasn(tmpuri, "FileRefs",1, tmpuri);'; put 'rc=metadata_getnasn(tmpuri, "FileRefLocations",1, tmpuri);'; put 'rc=metadata_getattr(tmpuri,''FileName'',&finish.tablename);'; put 'end;'; put 'else &finish.tablename=compress(''work.''||lowcase(&finish.tablename));'; put '/* do a lookup to see if this record has been loaded before,'; put 'IF base table exists */'; put 'hash=put(md5('; put 'cats(jobname,sourcecoluri,map_type,map_transform,targetcoluri)'; put '),$hex32.);'; put '%if %sysfunc(exist(&baseds)) %then %do;'; put 'set &baseds(keep=hash) key=hash/unique;'; put 'if _iorc_ ne 0 then do;'; put '/* hash did not exist, hence this is a new record */'; put 'output;'; put '_error_=0;'; put 'end;'; put '%end;'; put '%else %do;'; put 'output;'; put '%end;'; put 'fs+1;'; put 'end;'; put 'tfm+1;'; put 'end;'; put '/* No finish URI found - so proceed to see if this is due to transpose */'; put 'if missing(&finish.coluri)'; put 'and (metadata_getnasn(&start.tableuri,"&start.ClassifierMaps",1,tmpuri)>0)'; put 'then do;'; put 'length trafoname $256;'; put 'call missing(trafoName);'; put 'rc=metadata_getattr(tmpuri,''Name'',trafoName);'; put '/* get &finsh.tablename and jobname */'; put 'rc=metadata_getnasn(tmpuri,"Classifier&finish.s",1,&finish.tableuri);'; put 'rc=metadata_getattr(&finish.tableuri,''Name'',&finish.tablename);'; put '&finish.shorttablename=&finish.tablename;'; put 'rc=metadata_getnasn(tmpuri,''Steps'',1,tmpuri);'; put 'rc=metadata_getnasn(tmpuri,''Activities'',1,tmpuri);'; put 'rc=metadata_getnasn(tmpuri,''Jobs'',1,tmpuri);'; put 'rc=metadata_getattr(tmpuri,''Name'',jobname);'; put 'rc1=1;n1=1;'; put 'do while(rc1>0);'; put 'rc1=metadata_getnasl(&finish.tableuri,n1,assoc);'; put 'if (assoc="Columns") then do;'; put 'rc2=1;n2=1;'; put 'do while(rc2>0 and missing(foundfinishuri));'; put '/* Walk through all column associations: SpecSourceTransformations*/'; put 'rc2=metadata_getnasn(&finish.tableuri,trim(assoc),n2,assocuri);'; put '/* REVERSE */'; put '%if ("&direction." = "REVERSE") %then %do;'; put 'if metadata_getnasn(assocuri,"SpecSourceTransformations",1,sturi)>0'; put 'then do;'; put 'rc=metadata_getattr(sturi,"Name",name);'; put '/* SAS Transpose: varColumns */'; put 'if (name ="varColumns") then do;'; put 'foundfinishuri = "true"; /* do a while exit */'; put 'put "scource colname name=" name;'; put 'put "scource colname uri=" assocuri;'; put '&finish.coluri=assocuri;'; put '&finish.shortcoluri=substr('; put '&finish.coluri,find(&finish.coluri, ''\'')+1'; put ');'; put 'rc=metadata_getattr(&finish.coluri,''Name'',&finish.colname);'; put 'rc=metadata_getnasn(&finish.coluri,''Table'',1,&finish.tableuri);'; put 'rc=metadata_getattr(&finish.tableuri,''Name'',&finish.tablename);'; put '&finish.shorttablename=&finish.tablename;'; put 'map_type = "ONETOONE";'; put '/* get MemberType */'; put 'rc=metadata_getattr('; put '&finish.tableuri,"MemberType",&finish.membertype'; put ');'; put '&finish.shorttableuri = substr('; put '&finish.tableuri,find(&finish.tableuri, ''\'')+1'; put ');'; put 'rc=metadata_getattr('; put '&finish.shorttableuri,"PublicType",&finish.publictype'; put ');'; put 'if metadata_getnasn('; put '&finish.shorttableuri,"TablePackage",1,tpuri'; put ')>0'; put 'then do;'; put '/* init LibRef to overwrite previous for &start!!! */'; put 'call missing (LibRef);'; put 'rc=metadata_getattr(tpuri,"Libref",LibRef);'; put 'rc=metadata_getattr(tpuri,"Engine",engine);'; put 'if missing(libref) then do;'; put 'rc=metadata_getnasn(tpuri, "UsedByPackages",1, tmpuri);'; put 'rc=metadata_getattr(tmpuri,"Libref",LibRef);'; put 'rc=metadata_getattr(tmpuri,"Engine",engine);'; put 'end;'; put '&finish.shorttablename=&finish.tablename;'; put '&finish.tablename=cats('; put 'upcase(LibRef),''-'',upcase(engine),''.'',&finish.tablename'; put ');'; put 'end;'; put '/* get SAS Folder location of the table */'; put 'if &finish.publictype eq "Table" then do;'; put 'lturi=&finish.shorttableuri;'; put 'rc=metadata_getnasn(lturi,"Trees",1,lturi);'; put 'rc=metadata_getattr(lturi,"Name",&finish.location);'; put 'tree=1;'; put 'do while (tree>0);'; put 'tree=metadata_getnasn(lturi,"ParentTree",1,lturi);'; put 'if tree > 0 then do;'; put 'rc=metadata_getattr(lturi,"Name",_location);'; put '&finish.location=catx(''/'',_location,&finish.location);'; put 'end;'; put 'end;'; put '&finish.location = ''/''||&finish.location;'; put 'end;'; put 'map_transform = trafoName;'; put 'derived_rule = "Transpose vertical";'; put '/* do a lookup to see if this record has been loaded before,'; put 'IF base table exists */'; put 'hash=put(md5('; put 'cats(jobname,sourcecoluri,map_type,map_transform,targetcoluri)'; put '),$hex32.);'; put '%if %sysfunc(exist(&baseds)) %then %do;'; put 'set &baseds(keep=hash) key=hash/unique;'; put 'if _iorc_ ne 0 then do;'; put '/* hash did not exist, hence this is a new record */'; put 'output;'; put '_error_=0;'; put 'end;'; put '%end;'; put '%else %do;'; put 'output;'; put '%end;'; put 'end; /* (name = "_VALUE_COLUMN") */'; put 'end; /* (metadata_getnasn(assocuri2,"Spec&finish.xxx",1,sturi)>0) */'; put '%end; /* &direction = "REVERSE" */'; put '/* FORWARDS: if TargetFeatureMaps not available: -> target! */'; put '%if ("&direction." = "FORWARDS") %then %do;'; put 'if (metadata_getnasn(assocuri,"TargetFeatureMaps",1,sfuri)<0)'; put 'then do;'; put 'rc=metadata_getattr(assocuri,"Name",name);'; put 'if not missing(assocuri) then do;'; put 'put "target colname name=" name;'; put 'put "target colname uri=" assocuri;'; put '&finish.coluri=assocuri;'; put '&finish.shortcoluri=substr('; put '&finish.coluri,find(&finish.coluri, ''\'')+1'; put ');'; put 'rc=metadata_getattr(&finish.coluri,''Name'',&finish.colname);'; put 'rc=metadata_getnasn(&finish.coluri,''Table'',1,&finish.tableuri);'; put 'rc=metadata_getattr(&finish.tableuri,''Name'',&finish.tablename);'; put '&finish.shorttablename=&finish.tablename;'; put 'map_type = "ONETOMANY";'; put '/* get MemberType */'; put 'rc=metadata_getattr('; put '&finish.tableuri,"MemberType",&finish.membertype'; put ');'; put '&finish.shorttableuri = substr('; put '&finish.tableuri,find(&finish.tableuri, ''\'')+1'; put ');'; put 'rc=metadata_getattr('; put '&finish.shorttableuri,"PublicType",&finish.publictype'; put ');'; put 'if metadata_getnasn('; put '&finish.shorttableuri,"TablePackage",1,tpuri'; put ')>0'; put 'then do;'; put '/* init LibRef to overwrite previous for &start!!! */'; put 'call missing (LibRef);'; put 'rc=metadata_getattr(tpuri,"Libref",LibRef);'; put 'rc=metadata_getattr(tpuri,"Engine",engine);'; put 'if missing(libref) then do;'; put 'rc=metadata_getnasn(tpuri, "UsedByPackages",1, tmpuri);'; put 'rc=metadata_getattr(tmpuri,"Libref",LibRef);'; put 'rc=metadata_getattr(tmpuri,"Engine",engine);'; put 'end;'; put '&finish.shorttablename=&finish.tablename;'; put '&finish.tablename=cats('; put 'upcase(LibRef),''-'',upcase(engine),''.'',&finish.tablename'; put ');'; put 'end;'; put '/* get table''s SAS Folder location */'; put 'if &finish.publictype eq "Table" then do;'; put 'lturi=&finish.shorttableuri;'; put 'rc=metadata_getnasn(lturi,"Trees",1,lturi);'; put 'rc=metadata_getattr(lturi,"Name",&finish.location);'; put 'tree=1;'; put 'do while (tree>0);'; put 'tree=metadata_getnasn(lturi,"ParentTree",1,lturi);'; put 'if tree > 0 then do;'; put 'rc=metadata_getattr(lturi,"Name",_location);'; put '&finish.location=catx(''/'',_location,&finish.location);'; put 'end;'; put 'end;'; put '&finish.location = ''/''||&finish.location;'; put 'end;'; put 'map_transform = trafoName;'; put 'derived_rule = "Transpose horizontal";'; put '/* do a lookup to see if this record has been loaded before,'; put 'IF base table exists */'; put 'hash=put(md5('; put 'cats(jobname,sourcecoluri,map_type,map_transform,targetcoluri)'; put '),$hex32.);'; put '%if %sysfunc(exist(&baseds)) %then %do;'; put 'set &baseds(keep=hash) key=hash/unique;'; put 'if _iorc_ ne 0 then do;'; put '/* hash did not exist, hence this is a new record */'; put 'output;'; put '_error_=0;'; put 'end;'; put '%end;'; put '%else %do;'; put 'output;'; put '%end;'; put 'end;'; put 'end;'; put '%end; /* (&direction = "FORWARDS" */'; put 'call missing(assocuri);'; put 'n2+1;'; put 'end; /* while(rc1>0) */'; put 'end; /* (assoc="Columns") */'; put 'call missing(assoc);'; put 'n1+1;'; put 'end; /* while(rc1>0) */'; put 'end; /* missing(&finish.coluri) */'; put '/* ################# end mapping for Transpose flat ################# */'; put 'stop;'; put 'run;'; put 'proc append base=&baseds data=&stageds;'; put 'run;'; put 'data _null_;'; put 'set &stageds;'; put 'call execute(''%meta_mapper(metaid=''!!&finish.coluri'; put '!!",baseds=&baseds"'; put '!!",direction=&direction"'; put '!!",level=%eval(&level+1)"'; put '!!",levelcheck=&levelcheck"'; put '!!",job="!!jobname'; put '!!",append=YES)");'; put 'run;'; put '%mend meta_mapper;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief fetch the metadata and server as dotlang'; put 'Some nice ideas for formatting are available here:'; put 'https://renenyffenegger.ch/notes/tools/Graphviz/examples/index'; put '

SAS Macros

'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '@li bitemporal_dataloader.sas'; put '@li meta_mapper.sas'; put '@version 9.4'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%global column_id direction refresh;'; put '/* enable col id and direction to be passed as url params */'; put '%let exist=%sysfunc(exist(work.SASControlTable));'; put '%let inds=%sysfunc(ifc(&exist=1,SASControlTable,_null_));'; put '%let max_depth=50;'; put '%put &=inds;'; put 'data _null_;'; put 'length max_depth 8;'; put 'set &inds;'; put 'call symputx(''column_id'',coluri);'; put 'call symputx(''direction'',direction);'; put 'call symputx(''refresh'',refresh);'; put 'if max_depth>0 then call symputx(''max_depth'',max_depth);'; put 'putlog (_all_)(=);'; put 'run;'; put '%put &=max_depth;'; put 'data info;'; put 'length coluri colname taburi tabname liburi libref $256;'; put 'call missing(of _all_);'; put 'if metadata_getattr("&column_id","Name",colname)<0 then do;'; put 'putlog "Col &column_id not found";'; put 'call symputx(''syscc'',''1234'');'; put 'stop;'; put 'end;'; put 'rc=metadata_getnasn("&column_id","Table",1,taburi);'; put 'rc=metadata_getattr(taburi,"Name",tabname);'; put 'rc=metadata_getnasn(taburi,"TablePackage",1,liburi);'; put 'rc=metadata_getattr(liburi,"Libref",libref);'; put 'call symputx(''lib'',libref);'; put 'call symputx(''tab'',tabname);'; put 'call symputx(''col'',colname);'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%macro launcher();'; put '/* check whether a lineage run already taken place */'; put 'proc sql noprint;'; put 'create table existing_data as'; put 'select * from &mpelib..mpe_lineage_cols'; put 'where col_id="&column_id"'; put 'and direction="%substr(&direction,1,1)";'; put '/* no data, so make some, and append it */'; put '%if &sqlobs=0 or &refresh=1 %then %do;'; put '%meta_mapper(metaid=&column_id'; put ', direction=&direction /* either REVERSE or FORWARDS */'; put ', baseds=work.allmap'; put ', levelcheck=%eval(&max_depth-1)'; put ')'; put 'data append;'; put 'length col_id $32 direction $1 modified_by $64;'; put 'retain col_id "&column_id";'; put 'retain direction "%substr(&direction,1,1)";'; put '%global modified_by modified_dttm;'; put '%let modified_dttm=%sysfunc(datetime());'; put 'retain modified_dttm &modified_dttm;'; put 'retain modified_by "%mf_getuser()";'; put '%let modified_by=%mf_getuser();'; put 'set allmap;'; put 'drop hash;'; put 'run;'; put 'proc sort data=append out=appendme nodupkey;'; put 'by col_id direction sourcecoluri targetcoluri map_type map_transform;'; put 'run;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_lineage_cols'; put ',append_dsn=appendme'; put ',PK=col_id direction sourcecoluri targetcoluri map_type map_transform'; put ',etlsource=&_program'; put ',loadtype=UPDATE'; put ',close_vars=col_id direction'; put ',dclib=&mpelib'; put ')'; put '%end;'; put '%else %do;'; put '/* data exists, so use it */'; put 'data work.allmap(drop=modified_by modified_dttm);'; put 'set existing_data(drop=col_id direction );'; put 'if _n_=1 then do;'; put 'call symputx(''modified_by'',modified_by,''g'');'; put 'call symputx(''modified_dttm'',modified_dttm,''g'');'; put 'end;'; put 'run;'; put '%end;'; put '%mend launcher;'; put '%launcher()'; put '/* generate graphviz */'; put 'filename tmp "%sysfunc(pathname(work))\GraphViz%sysfunc(datetime()).txt"'; put 'lrecl=10000 encoding=''utf-8'';'; put 'options noquotelenmax;'; put '%macro fcmpconditional();'; put '%if &sysver=9.3 and &sysscp=WIN %then %do;'; put '/* nothing - as the FCMP function causes an exception err in this case */'; put '%end;'; put '%else %do;'; put '/* prepare quick func to enable word wrapping of transformations */'; put 'options cmplib=work.funcs;'; put 'proc fcmp outlib=work.funcs.macrocore;'; put 'function wordwrap(str $,cols,splitchar $) $;'; put 'length outstr $32767 curstr $5000;'; put 'base=0;'; put 'put str=;'; put 'do i=1 to countw(str,'' '','' '');'; put 'curstr=scan(str,i,'' '');'; put 'outstr=trim(outstr)!!'' ''!!curstr;'; put 'base=base+length(curstr)+1;'; put 'if base>cols then do;'; put 'outstr=cats(outstr,splitchar);'; put 'base=0;'; put 'end;'; put 'end;'; put 'return (outstr);'; put 'endsub;'; put 'run;'; put '%end;'; put '%mend fcmpconditional;'; put '%fcmpconditional()'; put '/* prepare label with metadata */'; put 'proc sql;'; put 'create table jobs as select distinct jobname as job from work.allmap ;'; put 'create table cols as select distinct upcase(scan(cat,1,''.-'')) as tmplib'; put ',cats(calculated tmplib,''.'',upcase(scan(cat,2,''.''))) as tmptab'; put ',cats(calculated tmptab,''.'',upcase(col)) as col'; put 'from (select sourcetablename as cat, sourcecolname as col from work.allmap'; put 'union select targettablename as cat, targetcolname as col from work.allmap )'; put 'having findc(tmplib,''/\'')=0 and tmplib ne ''WORK'';'; put 'create table files as select distinct file'; put 'from (select sourcetablename as file from work.allmap'; put 'where findc(sourcetablename,''/\'')>0'; put 'union select targettablename as file from work.allmap'; put 'where findc(targettablename,''/\'')>0'; put ') ;'; put 'create table libs as select distinct tmplib as lib from cols;'; put 'create table tabs as select distinct tmptab as tab from cols;'; put 'data _null_;'; put 'file tmp;'; put 'put ''digraph G {'; put 'concentrate=true;'; put 'node [style=filled,shape=plain];'; put 'labelloc = "t";'; put ''';'; put 'label= "label=<'; put ''; put ''; put ''; put ''; put ''; put ''; put '
&direction Lineage for &col
Library:
&libGenerated by:&modified_by
Table:&tabGenerated on:'; put '%sysfunc(round(&modified_dttm,2),datetime19.)
>";'; put 'put label;'; put 'if "FORWARD"="&direction" then call symputx(''dirdesc'',''Impacted'');'; put 'else call symputx(''dirdesc'',''Source'');'; put '/* close out if there is no lineage */'; put 'if nobs=0 then put ''x [label="No lineage found" shape=Mdiamond]}'';'; put 'set work.allmap nobs=nobs;'; put 'stop;'; put 'run;'; put 'data graphviz1;'; put 'file tmp mod;'; put 'length line arrow $1000 stab ttab slib tlib $100 sbox tbox tooltip $500;'; put 'if _n_=1 then call missing(line, sbox, tbox, tooltip);'; put 'set work.allmap ;'; put 'sourceid=sourcecoluri;'; put 'targetid=targetcoluri;'; put 'if index(sourcetablename,'':'') then do;'; put 'slib='''';'; put 'stab=sourcetablename;'; put 'end;'; put 'else if map_transform=''File Reader'' then do;'; put 'stab=scan(sourcetablename,-1,''/\'');'; put 'slib=subpad(sourcetablename,1,length(sourcetablename)-length(stab));'; put 'end;'; put 'else do;'; put 'slib=scan(sourcetablename,1,''.'');'; put 'stab=scan(sourcetablename,2,''.'');'; put 'end;'; put 'if index(targettablename,'':'') then do;'; put 'tlib='''';'; put 'ttab=targettablename;'; put 'end;'; put 'else if map_transform=''File Reader'' then do;'; put 'ttab=scan(targettablename,-1,''/\'');'; put 'tlib=subpad(targettablename,1,length(targettablename)-length(ttab));'; put 'end;'; put 'else do;'; put 'tlib=scan(targettablename,1,''.'');'; put 'ttab=scan(targettablename,2,''.'');'; put 'end;'; put 'if trim(derived_rule) ne '''' then do;'; put 'derived_rule=tranwrd(derived_rule,''"'',''\"'');'; put '%macro quick();'; put '%if "&sysver"="9.3" and "&sysscp"="WIN" %then %do;'; put 'arrow=cats(''[color=Red, fontcolor=Red, penwidth="3", arrowsize="2",'''; put ',''label=">>'',map_transform,''<<\n'',derived_rule,''"]'');'; put '%end;'; put '%else %do;'; put 'arrow=cats(''[color=Red, fontcolor=Red, penwidth="3", arrowsize="2",'''; put ',''label=">>'',map_transform,''<<\n'',wordwrap(derived_rule,24,''\n''),''"]'');'; put '%end;'; put '%mend quick; %quick()'; put 'end;'; put 'else arrow=cats(''[ label="'',map_transform,''"]'');'; put 'source=quote(strip(sourceid));'; put 'target=quote(strip(targetid));'; put 'put '' '' source '' -> '' target arrow;'; put 'run;'; put 'data graphviz2 (keep=id tab lib col tooltip map_transform);'; put 'set graphviz1 (rename=(source=id stab=tab slib=lib sourcecolname=col ))'; put 'graphviz1 (rename=(target=id ttab=tab tlib=lib targetcolname=col ));'; put 'if upcase(lib)=:''WORK'' then tooltip=cats('',tooltip="Job:'',jobname,''"'');'; put 'else tooltip='''';'; put 'run;'; put 'proc sort data=graphviz2 out=graphviz3 noduprec; by _all_; run;'; put 'data _null_;'; put 'length shape $100 ;'; put 'set graphviz3 end=last;'; put 'file tmp mod;'; put 'tab=tranwrd(tab,''\'',''\\'');'; put 'if upcase(lib)=:''WORK'' then do;'; put 'lib=''WORK'';'; put 'put id ''[label=<
Table'' tab'; put '''
Column'' col'; put '''
> ,fillcolor=lightgrey, shape=" " '' tooltip '']'';'; put 'end;'; put 'else if map_transform=''File Reader'' then do;'; put 'put id ''[label="Location: '' lib ''\nFile:'' tab ''\nColumn: '' col'; put '''",shape=parallelogram, fillcolor="#00b300"'' tooltip '']'';'; put 'end;'; put 'else do;'; put 'engine=scan(lib,2,''-'');'; put 'lib=scan(lib,1,''-'');'; put 'if engine=''BASE'' then fillcolour=''lightyellow '';'; put 'else fillcolour=''lightblue'';'; put 'shape='' shape=cylinder, fillcolor= ''!!fillcolour;'; put 'put id ''[label=<
Library'' lib'; put '''
Table'' tab'; put '''
Column'' col'; put '''
> ,'' shape tooltip '']'';'; put 'end;'; put 'run;'; put 'data _null_;'; put 'file tmp mod;'; put '/* close out if records exist */'; put 'set work.allmap;'; put 'put ''}'';'; put 'stop;'; put 'run;'; put 'data flatdata;'; put 'length type $8 item $256;'; put 'keep type item;'; put 'set cols(in=cols) tabs(in=tabs) files(in=files) libs(in=libs) jobs(in=jobs);'; put 'if cols then do;'; put 'type=''Column'';'; put 'item=col;'; put 'end;'; put 'else if tabs then do;'; put 'type=''Table'';'; put 'item=tab;'; put 'end;'; put 'else if files then do;'; put 'type=''File'';'; put 'item=file;'; put 'end;'; put 'else if libs then do;'; put 'type=''Library'';'; put 'item=lib;'; put 'end;'; put 'else if jobs then do;'; put 'type=''Job'';'; put 'item=job;'; put 'end;'; put 'run;'; put 'data fromSAS;'; put 'infile tmp end=last;'; put 'file tmp;'; put 'input ;'; put 'string=_infile_;'; put 'put string;'; put 'run;'; put 'filename tmp clear;'; put '/* get list of IDs so frontend can make a clickable list */'; put 'proc sql;'; put 'create table ids as select distinct id from graphviz3;'; put '%webout(OPEN)'; put '%webout(OBJ,fromSAS)'; put '%webout(OBJ,ids,dslabel=clickableIDS)'; put '%webout(OBJ,info)'; put '%webout(OBJ,flatdata)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=fetchtablelineage; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief fetch Table Lineage for SAS 9'; put 'Some nice ideas for formatting are available here:'; put 'https://renenyffenegger.ch/notes/tools/Graphviz/examples/index'; put '

SAS Macros

'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%global table_id direction graphOrientation;'; put '/* enable table id and direction to be passed as url params */'; put '%let exist=%sysfunc(exist(work.SASControlTable));'; put '%let inds=%sysfunc(ifc(&exist=1,SASControlTable,_null_));'; put '%put &=inds;'; put '%let max_depth=50;'; put 'data _null_;'; put 'length max_depth $ 8;'; put 'set &inds;'; put 'call symputx(''table_id'',table_id);'; put 'call symputx(''direction'',direction);'; put 'call symputx(''graphOrientation'',''LR'');'; put 'if max_depth>''0'' then call symputx(''max_depth'',max_depth);'; put 'putlog (_all_)(=);'; put 'run;'; put '%put &=max_depth;'; put '%mp_abort(iftrue= (&table_id=undefined)'; put ',mac=&_program'; put ',msg=%str(Table_id UNDEFINED provided from frontend)'; put ')'; put 'data work.info;'; put 'length tableid tablename liburi $64 libref $8;'; put 'drop rc;'; put 'tableid="&table_id";'; put 'call missing(liburi);'; put 'rc=metadata_getattr(tableid,"Name",tablename);'; put 'if metadata_getnasn(tableid,"TablePackage",1,liburi)>0 then do;'; put 'rc=metadata_getattr(liburi,"Libref",libref);'; put 'libref=upcase(libref);'; put 'end;'; put 'tablename=upcase(tablename);'; put 'if missing(libref) then libref=''nolib'';'; put 'call symputx(''libds'',cats(libref,''.'',tablename));'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%let src=%sysfunc(ifc(&direction=REVERSE,src,tgt));'; put '%let tgt=%sysfunc(ifc(&direction=REVERSE,tgt,src));'; put 'data work.sourcetable/view=work.sourcetable;'; put 'set &mpelib..MPE_LINEAGE_TABS;'; put 'where &dc_dttmtfmt. lt tx_to ;'; put 'drop tx_from tx_to;'; put 'run;'; put '%macro recursivejoin(iter=0'; put ',maxiter=&max_depth /* avoid infinite loop */'; put ');'; put '%if &iter=0 %then %do;'; put 'data work.baseds ;'; put 'retain level 0;'; put 'set work.sourcetable;'; put 'where &tgt.tableid="&table_id";'; put 'run;'; put '%let iter=1;'; put 'proc sql;'; put '%end;'; put '%else %if &iter>&maxiter %then %return;'; put 'create table work.appendds as'; put 'select distinct &iter as level'; put ',b.*'; put 'from work.baseds a'; put 'left join work.sourcetable b'; put 'on a.&src.tableid=b.&tgt.tableid'; put 'where a.level=%eval(&iter.-1)'; put 'and b.&src.tableid is not null'; put 'and a.&src.tableid is not null'; put 'and a.&src.tableid ne ''N/A'';'; put '%let obs=&sqlobs;'; put 'insert into work.baseds select * from work.appendds;'; put '%if &obs %then %do;'; put '%recursivejoin(iter=%eval(&iter.+1) )'; put '%end;'; put '%mend recursivejoin;'; put '%recursivejoin()'; put 'proc sql;'; put 'create table work.final as'; put 'select distinct *'; put 'from work.baseds(drop=level)'; put 'where jobid is not null;'; put '/* generate graphviz */'; put 'filename tmp "%sysfunc(pathname(work))\GraphViz%sysfunc(datetime()).txt"'; put 'lrecl=10000 encoding=''utf-8'';'; put '/* prepare label with metadata */'; put 'proc sql;'; put 'create table work.jobs as'; put 'select distinct jobid'; put ', jobname'; put ',quote(cats(jobid))||'' [label=''||quote(cats(jobname))||''];'' as line'; put 'from work.final;'; put 'create table work.tables as'; put 'select distinct &src.tableid as tableid'; put ',&src.tablename as tablename'; put ',&src.libref as libref'; put 'from work.final'; put 'where &src.tableid ne ''N/A'''; put 'union select'; put '&tgt.tableid as tableid'; put ',&tgt.tablename as tablename'; put ',&tgt.libref as libref'; put 'from work.final'; put 'where &tgt.tableid ne ''N/A'''; put 'order by libref, tablename;'; put 'create table idlookup as'; put 'select tableid as metaid'; put ',''TABLE'' as metatype'; put ',cats(libref,''.'',tablename) as metaname'; put 'from work.tables'; put 'union'; put 'select jobid as metaid'; put ',''JOB'' as metatype'; put ',jobname as metaname'; put 'from work.jobs'; put 'order by metaid;'; put 'data CRAYONS;'; put 'length attribute value $8;'; put 'infile datalines4 dsd;'; put 'input attribute value;'; put 'call symput(cats(''col'',_n_),quote(trim(value)));'; put 'datalines;'; put 'red,#e6194b'; put 'green,#3cb44b'; put 'blue,#4363d8'; put 'orange,#f58231'; put 'purple,#911eb4'; put 'cyan,#46f0f0'; put 'magenta,#f032e6'; put 'lime,#bcf60c'; put 'pink,#fabebe'; put 'teal,#008080'; put 'lavender,#e6beff'; put 'brown,#9a6324'; put 'beige,#fffac8'; put 'maroon,#800000'; put 'mint,#aaffc3'; put 'olive,#808000'; put 'apricot,#ffd8b1'; put 'navy,#000075'; put 'gray,#808080'; put 'black,#00000'; put 'yellow,#ffe119'; put 'white,#ffffff'; put ';;;;'; put 'run;'; put 'proc sort data=work.tables out=work.libs nodupkey;'; put 'by libref;'; put 'run;'; put 'data work.alllibs;'; put 'set work.libs end=last;'; put 'length line $1000. ;'; put 'crayon=symget(cats(''col'',_n_));'; put 'call symputx(libref,crayon);'; put 'if _n_=1 then do;'; put 'line=''subgraph cluster_libs { label="Libraries";'';output;'; put 'end;'; put 'line=cats(libref)!!'' [label=''||quote(cats(libref))||''; style="filled"; color='''; put '||cats(crayon)||'', shape = Mrecord, fontcolor=white]'';output;'; put 'if last then do;'; put 'line=''}'';output;'; put 'end;'; put 'run;'; put 'data alltables;'; put 'length line $1000. ;'; put 'set work.tables;'; put 'crayon=symget(libref);'; put 'line=quote(cats(tableid))||'' [label="''||cats(tablename)'; put '!!''", color=''!!cats(crayon)'; put '!!'', shape=cylinder,style=filled,fontcolor=white];'';'; put 'output;'; put 'run;'; put 'proc sort'; put 'data=final(keep=&src.tableid jobid &src.libref) out=&src.relations nodupkey;'; put 'by &src.tableid jobid;'; put 'proc sort'; put 'data=final(keep=&tgt.tableid jobid &tgt.libref) out=&tgt.relations nodupkey;'; put 'by jobid &tgt.tableid;'; put 'run;'; put 'data srcrelations;'; put 'set srcrelations;'; put 'length line $1000;'; put 'where srctableid ne ''N/A'';'; put 'line=cats('; put '''"'',cats(srctableid),''" -> "'',jobid,''" [color='',symget(srclibref),''];'''; put ');'; put 'data tgtrelations;'; put 'set tgtrelations;'; put 'where tgttableid ne ''N/A'';'; put 'length line $1000;'; put 'line=cats('; put '''"'',cats(jobid),''" -> "'',tgttableid,''" [color='',symget(tgtlibref),''];'''; put ');'; put 'run;'; put 'data finalfinal;'; put 'set work.alllibs(keep=line) work.alltables (keep=line) work.jobs(keep=line)'; put 'work.&src.relations(keep=line) work.&tgt.relations(keep=line) end=last;'; put 'if _N_ = 1 then do;'; put 'firstline=line;'; put 'line=''strict digraph "''!!"&libds"!!''" {''; output;'; put 'line="rankdir=&graphOrientation; nodesep=0.5; node [shape = octagon];";output;'; put 'line=firstline;'; put 'end;'; put 'output;'; put 'if last then do;'; put 'line=''}'';'; put 'output;'; put 'end;'; put 'drop firstline;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,finalfinal)'; put '%webout(OBJ,info)'; put '%webout(OBJ,final,dslabel=flatdata)'; put '%webout(OBJ,idlookup)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getmetacols; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getcols('; put 'tableuri='; put ',outds=work.mm_getcols'; put ')/*/STORE SOURCE*/;'; put 'data &outds;'; put 'keep col: SAS:;'; put 'length assoc uri coluri colname coldesc SASColumnType SASFormat SASInformat'; put 'SASPrecision SASColumnLength $256;'; put 'call missing (of _all_);'; put 'uri=symget(''tableuri'');'; put 'n=1;'; put 'do while (metadata_getnasn(uri,''Columns'',n,coluri)>0);'; put 'rc3=metadata_getattr(coluri,"Name",colname);'; put 'rc3=metadata_getattr(coluri,"Desc",coldesc);'; put 'rc4=metadata_getattr(coluri,"SASColumnType",SASColumnType);'; put 'rc5=metadata_getattr(coluri,"SASFormat",SASFormat);'; put 'rc6=metadata_getattr(coluri,"SASInformat",SASInformat);'; put 'rc7=metadata_getattr(coluri,"SASPrecision",SASPrecision);'; put 'rc8=metadata_getattr(coluri,"SASColumnLength",SASColumnLength);'; put 'output;'; put 'call missing(colname,coldesc,SASColumnType,SASFormat,SASInformat'; put ',SASPrecision,SASColumnLength);'; put 'n+1;'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by colname;'; put 'run;'; put '%mend mm_getcols;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getmetacols.sas'; put '@brief List the cols as defined in metadata'; put '@details Provide a table uri and get list of columns'; put '

SAS Macros

'; put '@li mm_getcols.sas'; put '@li mp_abort.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%global tableuri;'; put '%let exist=%sysfunc(exist(work.SASControlTable));'; put '%let inds=%sysfunc(ifc(&exist=1,SASControlTable,_null_));'; put '%put &=inds;'; put 'data _null_;'; put 'set &inds;'; put 'call symputx(''tableuri'',scan(tableuri,-1,''\''));'; put 'run;'; put '%put &=tableuri;'; put '/* load parameters */'; put '%mm_getcols(tableuri=&tableuri,outds=metacols)'; put 'data out;'; put 'set metacols;'; put 'keep col:;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,out,dslabel=metacols)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getmetatables; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_gettables('; put 'uri='; put ',outds=work.mm_gettables'; put ',getauth=YES'; put ')/*/STORE SOURCE*/;'; put 'data &outds;'; put 'length uri serveruri conn_uri domainuri libname ServerContext AuthDomain'; put 'path_schema usingpkguri type tableuri $256 id $17'; put 'libdesc $200 libref engine $8 IsDBMSLibname IsPreassigned $1'; put 'tablename $50 /* metadata table names can be longer than $32 */'; put ';'; put 'keep libname libdesc libref engine ServerContext path_schema AuthDomain'; put 'tableuri tablename IsPreassigned IsDBMSLibname id;'; put 'call missing (of _all_);'; put 'uri=symget(''uri'');'; put 'rc= metadata_getattr(uri, "Name", libname);'; put 'if rc <0 then do;'; put 'put ''The library is not defined in this metadata repository.'';'; put 'stop;'; put 'end;'; put 'rc= metadata_getattr(uri, "Desc", libdesc);'; put 'rc= metadata_getattr(uri, "Libref", libref);'; put 'rc= metadata_getattr(uri, "Engine", engine);'; put 'rc= metadata_getattr(uri, "IsDBMSLibname", IsDBMSLibname);'; put 'rc= metadata_getattr(uri, "IsPreassigned", IsPreassigned);'; put 'rc= metadata_getattr(uri, "Id", Id);'; put '/*** Get associated ServerContext ***/'; put 'rc= metadata_getnasn(uri, "DeployedComponents", 1, serveruri);'; put 'if rc > 0 then rc2= metadata_getattr(serveruri, "Name", ServerContext);'; put 'else ServerContext='''';'; put '/*** If the library is a DBMS library, get the Authentication Domain'; put 'associated with the DBMS connection credentials ***/'; put 'if IsDBMSLibname="1" and "&getauth"=''YES'' then do;'; put 'rc= metadata_getnasn(uri, "LibraryConnection", 1, conn_uri);'; put 'if rc>0 then do;'; put 'rc2= metadata_getnasn(conn_uri, "Domain", 1, domainuri);'; put 'if rc2>0 then rc3= metadata_getattr(domainuri, "Name", AuthDomain);'; put 'end;'; put 'end;'; put '/*** Get the path/database schema for this library ***/'; put 'rc=metadata_getnasn(uri, "UsingPackages", 1, usingpkguri);'; put 'if rc>0 then do;'; put 'rc=metadata_resolve(usingpkguri,type,id);'; put 'if type=''Directory'' then'; put 'rc=metadata_getattr(usingpkguri, "DirectoryName", path_schema);'; put 'else if type=''DatabaseSchema'' then'; put 'rc=metadata_getattr(usingpkguri, "Name", path_schema);'; put 'else path_schema="unknown";'; put 'end;'; put '/*** Get the tables associated with this library ***/'; put '/*** If DBMS, tables are associated with DatabaseSchema ***/'; put 'if type=''DatabaseSchema'' then do;'; put 't=1;'; put 'ntab=metadata_getnasn(usingpkguri, "Tables", t, tableuri);'; put 'if ntab>0 then do t=1 to ntab;'; put 'tableuri='''';'; put 'tablename='''';'; put 'ntab=metadata_getnasn(usingpkguri, "Tables", t, tableuri);'; put 'tabrc= metadata_getattr(tableuri, "Name", tablename);'; put 'output;'; put 'end;'; put 'else put ''Library '' libname '' has no tables registered'';'; put 'end;'; put 'else if type in (''Directory'',''SASLibrary'') then do;'; put 't=1;'; put 'ntab=metadata_getnasn(uri, "Tables", t, tableuri);'; put 'if ntab>0 then do t=1 to ntab;'; put 'tableuri='''';'; put 'tablename='''';'; put 'ntab=metadata_getnasn(uri, "Tables", t, tableuri);'; put 'tabrc= metadata_getattr(tableuri, "Name", tablename);'; put 'output;'; put 'end;'; put 'else put ''Library '' libname '' has no tables registered'';'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by tablename tableuri;'; put 'run;'; put '%mend mm_gettables;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getmetatables.sas'; put '@brief List the tables as defined in metadata'; put '@details Provide a library uri and get list of tables'; put '

SAS Macros

'; put '@li mm_gettables.sas'; put '@li mp_abort.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%global liburi;'; put '%let exist=%sysfunc(exist(work.SASControlTable));'; put '%let inds=%sysfunc(ifc(&exist=1,SASControlTable,_null_));'; put '%put &=inds;'; put 'data _null_;'; put 'set &inds;'; put 'call symputx(''liburi'',liburi);'; put 'run;'; put '/* load parameters */'; put '%mm_gettables(uri=&liburi,outds=metatables,getauth=NO)'; put 'data out;'; put 'set metatables;'; put 'keep table:;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,metatables)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/metanav; %let service=metadetails; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro mm_getdetails(uri'; put ',outattrs=work.attributes'; put ',outassocs=work.associations'; put ')/*/STORE SOURCE*/;'; put 'data &outassocs;'; put 'keep assoc assocuri name;'; put 'length assoc assocuri name $256;'; put 'call missing(of _all_);'; put 'rc1=1;n1=1;'; put 'do while(rc1>0);'; put '/* Walk through all possible associations of this object. */'; put 'rc1=metadata_getnasl("&uri",n1,assoc);'; put 'rc2=1;n2=1;'; put 'do while(rc2>0);'; put '/* Walk through all the associations on this machine object. */'; put 'rc2=metadata_getnasn("&uri",trim(assoc),n2,assocuri);'; put 'if (rc2>0) then do;'; put 'rc3=metadata_getattr(assocuri,"Name",name);'; put 'output;'; put 'end;'; put 'call missing(name,assocuri);'; put 'n2+1;'; put 'end;'; put 'n1+1;'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by assoc name;'; put 'run;'; put 'data &outattrs;'; put 'keep type name value;'; put 'length type $4 name $256 value $32767;'; put 'rc1=1;n1=1;type=''Prop'';name='''';value='''';'; put 'do while(rc1>0);'; put 'rc1=metadata_getnprp("&uri",n1,name,value);'; put 'if rc1>0 then output;'; put 'n1+1;'; put 'end;'; put 'rc1=1;n1=1;type=''Attr'';'; put 'do while(rc1>0);'; put 'rc1=metadata_getnatr("&uri",n1,name,value);'; put 'if rc1>0 then output;'; put 'n1+1;'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by type name;'; put 'run;'; put '%mend mm_getdetails;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file metadetails.sas'; put '@brief Retrieves metadata attributes and associations for a particular object'; put '@details'; put '

SAS Macros

'; put '@li mm_getdetails.sas'; put '@li mpe_getvars.sas'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%mpe_getvars(SASControlTable, SASControlTable)'; put '%mm_getdetails(&objecturi'; put ',outattrs=work.attributes'; put ',outassocs=work.associations'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,attributes)'; put '%webout(OBJ,associations)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=metaobjects; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro mm_getobjects('; put 'type=SASLibrary'; put ',outds=work.mm_getobjects'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"$METAREPOSITORY'; put '&typeSAS'; put '0"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/&type";'; put 'put "";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/&type/@Id";'; put 'put "characterstring200";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/&type/@Name";'; put 'put "characterstring200";'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASObjects out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getobjects;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file metaobjects.sas'; put '@brief Retrieves list of objects for a particular metadata type'; put '@details'; put '

SAS Macros

'; put '@li mm_getobjects.sas'; put '@li mpe_getvars.sas'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%mpe_getvars(SASControlTable, SASControlTable)'; put 'options metarepository=&repo;'; put '%mm_getobjects('; put 'type=&metatype'; put ',outds=work.objects'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,objects)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=metarepos; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file metarepos.sas'; put '@brief Retrieves list of metadata types'; put '@details'; put '

SAS Macros

'; put '@li mm_getrepos.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%mm_getrepos(outds=work.repos)'; put 'data outrepos;'; put 'set repos;'; put 'if repositorytype in (''CUSTOM'',''FOUNDATION'');'; put 'keep id name description;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,outrepos)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=metatypes; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_gettypes('; put 'outds=work.mm_gettypes'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put ''; put 'SAS'; put ''; put '2048'; put ''; put ''; put '$METAREPOSITORY'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put ''//GetTypes/Types/Type'';'; put 'put ''64'';'; put 'put ''//GetTypes/Types/Type/@Id'';'; put 'put ''256'';'; put 'put ''//GetTypes/Types/Type/@Desc'';'; put 'put '''';'; put 'put ''//GetTypes/Types/Type/@HasSubtypes'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.sastypes out=&outds;'; put 'by id;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_gettypes;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file metatypes.sas'; put '@brief Retrieves list of metadata types'; put '@details'; put '

SAS Macros

'; put '@li mm_gettypes.sas'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%mm_gettypes(outds=work.types)'; put '%webout(OPEN)'; put '%webout(OBJ,types)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/public; %let service=getchangeinfo; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getchangeinfo.sas'; put '@brief Returns the details for an approval diff'; put '@details'; put '

SAS Macros

'; put '@li mf_getengine.sas'; put '@li dc_assignlib.sas'; put '@li mp_abort.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%let table=;'; put 'data _null_;'; put 'set SASControlTable;'; put 'call symputx(''table'',table);'; put 'run;'; put '%dc_assignlib(WRITE,%scan(&table,1,.))'; put '%let max_ver_dttm=0;'; put 'data APPROVE1;'; put 'set &mpelib..mpe_submit'; put '(rename=(SUBMITTED_ON_DTTM=submitted_on REVIEWED_ON_DTTM=REVIEWED_ON));'; put 'where TABLE_ID="&TABLE";'; put 'TABLE_NM=cats(base_lib,''.'',base_ds);'; put 'BASE_TABLE=table_nm;'; put 'call symputx(''base_lib'',base_lib);'; put 'REVIEWED_ON_DTTM=put(reviewed_on,datetime19.);'; put 'SUBMITTED_ON_DTTM=put(submitted_on,datetime19.);'; put 'run;'; put 'data jsParams;'; put 'set approve1;'; put 'LIB_ENGINE="%mf_getEngine(&base_lib)";'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,jsParams)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getcols; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvalue(libds,variable,filter=1'; put ')/*/STORE SOURCE*/;'; put '%if %mf_getattrn(&libds,NLOBS)>0 %then %do;'; put '%local dsid rc &variable;'; put '%let dsid=%sysfunc(open(&libds(where=(&filter))));'; put '%syscall set(dsid);'; put '%let rc = %sysfunc(fetch(&dsid));'; put '%let rc = %sysfunc(close(&dsid));'; put '%trim(&&&variable)'; put '%end;'; put '%mend mf_getvalue;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getcols.sas'; put '@brief Retrieves column info to enable population of dropdowns'; put '@details'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li mf_getvalue.sas'; put '@li mp_abort.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%let ds=%mf_getvalue(work.iwant,libds);'; put '%dc_assignlib(READ,%scan(&ds,1,.))'; put 'proc contents noprint data=&ds'; put 'out=droplist1 (keep=name type length label varnum format:);'; put 'run;'; put 'data cols(keep=name type length varnum format label);'; put 'set droplist1(rename=(format=format2 type=type2));'; put 'name=upcase(name);'; put 'if type2=2 then do;'; put 'length format $49.;'; put 'if format2='''' then format=cats(''$'',length,''.'');'; put 'else if formatl=0 then format=cats(format2,''.'');'; put 'else format=cats(format2,formatl,''.'');'; put 'type=''C'';'; put 'ddtype=''CHARACTER'';'; put 'end;'; put 'else do;'; put 'if format2='''' then format=cats(length,''.'');'; put 'else if formatl=0 then format=cats(format2,''.'');'; put 'else if formatd=0 then format=cats(format2,formatl,''.'');'; put 'else format=cats(format2,formatl,''.'',formatd);'; put 'type=''N'';'; put 'if format=:''DATETIME'' then ddtype=''DATETIME'';'; put 'else if format=:''DATE'' then ddtype=''DATE'';'; put 'else if format=:''TIME'' then ddtype=''TIME'';'; put 'else ddtype=''NUMERIC'';'; put 'end;'; put 'if label='''' then label=name;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,cols)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getcolvals; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvalue(libds,variable,filter=1'; put ')/*/STORE SOURCE*/;'; put '%if %mf_getattrn(&libds,NLOBS)>0 %then %do;'; put '%local dsid rc &variable;'; put '%let dsid=%sysfunc(open(&libds(where=(&filter))));'; put '%syscall set(dsid);'; put '%let rc = %sysfunc(fetch(&dsid));'; put '%let rc = %sysfunc(close(&dsid));'; put '%trim(&&&variable)'; put '%end;'; put '%mend mf_getvalue;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_getVarFormat(libds /* two level ds name */'; put ', var /* variable name from which to return the format */'; put ', force=0'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vformat rc vlen vtype;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable format */'; put '%if(&vnum > 0) %then %let vformat=%sysfunc(varfmt(&dsid, &vnum));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let rc = %sysfunc(close(&dsid));'; put '%return;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* supply a default if no format available */'; put '%if %length(&vformat)<2 & &force=1 %then %do;'; put '%let vlen = %sysfunc(varlen(&dsid, &vnum));'; put '%let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%if &vtype=C %then %let vformat=$&vlen..;'; put '%else %let vformat=best.;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable format */'; put '&vformat'; put '%mend mf_getVarFormat;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'FMTNAME char(32) label=''Format name'''; put '/*'; put 'to accommodate larger START values, mp_loadformat.sas will need the'; put 'SQL dependency removed (proc sql needs to accommodate 3 index values in'; put 'a 32767 ibufsize limit)'; put '*/'; put ',START char(10000) label=''Starting value for format'''; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',TYPE char(1) label=''Type of format'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%mend mddl_sas_cntlout;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mp_cntlout('; put 'iftrue=(1=1)'; put ',libcat='; put ',cntlout=work.fmtextract'; put ',fmtlist=0'; put ')/*/STORE SOURCE*/;'; put '%local ddlds cntlds i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let ddlds=%mf_getuniquename();'; put '%let cntlds=%mf_getuniquename();'; put '%mddl_sas_cntlout(libds=&ddlds)'; put '%if %index(&libcat,-)>0 and %scan(&libcat,2,-)=FC %then %do;'; put '%let libcat=%scan(&libcat,1,-);'; put '%end;'; put 'proc format lib=&libcat cntlout=&cntlds;'; put '%if "&fmtlist" ne "0" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'if type="N" then do;'; put 'start=cats(start);'; put 'end=cats(end);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by fmtname start;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_filtergenerate(inds,outref=filter);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put 'filename &outref temp;'; put '%if %mf_nobs(&inds)=0 %then %do;'; put '/* ensure we have a default filter */'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc sort data=&inds;'; put 'by SUBGROUP_ID;'; put 'run;'; put 'data _null_;'; put 'file &outref lrecl=32800;'; put 'set &inds end=last;'; put 'by SUBGROUP_ID;'; put 'if _n_=1 then put ''(('';'; put 'else if first.SUBGROUP_ID then put +1 GROUP_LOGIC ''('';'; put 'else put +2 SUBGROUP_LOGIC;'; put 'put +4 VARIABLE_NM OPERATOR_NM RAW_VALUE;'; put 'if last.SUBGROUP_ID then put '')''@;'; put 'if last then put '')'';'; put 'run;'; put '%end;'; put '%mend mp_filtergenerate;'; put '%macro mp_filtervalidate(inref,targetds,abort=YES,outds=work.mp_filtervalidate);'; put '%mp_abort(iftrue= (&syscc ne 0 or &syserr ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc / syserr=&syserr - on macro entry)'; put ')'; put '%local fref1;'; put '%let fref1=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &fref1;'; put 'infile &inref end=eof;'; put 'if _n_=1 then do;'; put 'put "proc sql;";'; put 'put "validate select * from &targetds";'; put 'put "where " ;'; put 'end;'; put 'input;'; put 'put _infile_;'; put 'putlog _infile_;'; put 'if eof then put ";quit;";'; put 'run;'; put '%inc &fref1;'; put 'data &outds;'; put 'if &sqlrc or &syscc or &syserr then do;'; put 'REASON_CD=''VALIDATION_ERR''!!''OR: ''!!'; put 'coalescec(symget(''SYSERRORTEXT''),symget(''SYSWARNINGTEXT''));'; put 'output;'; put 'end;'; put 'else stop;'; put 'run;'; put 'filename &fref1 clear;'; put '%if %mf_nobs(&outds)>0 %then %do;'; put '%if &abort=YES %then %do;'; put 'data _null_;'; put 'set &outds;'; put 'call symputx(''REASON_CD'',reason_cd,''l'');'; put 'stop;'; put 'run;'; put '%mp_abort('; put 'mac=&sysmacroname,'; put 'msg=%str(Filter validation issues.)'; put ')'; put '%end;'; put '%let syscc=1008;'; put '%end;'; put '%mend mp_filtervalidate;'; put '%macro mp_filtercheck(inds,targetds=,outds=work.badrecords,abort=YES);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put '/* Validate input column */'; put '%local vtype;'; put '%let vtype=%mf_getvartype(&inds,RAW_VALUE);'; put '%mp_abort(iftrue=(&abort=YES and &vtype ne C),'; put 'mac=&sysmacroname,'; put 'msg=%str(%str(ERR)OR: RAW_VALUE must be character)'; put ')'; put '%if &vtype ne C %then %do;'; put '%put &sysmacroname: RAW_VALUE must be character;'; put '%let syscc=42;'; put '%return;'; put '%end;'; put '/**'; put '* Sanitise the values based on valid value lists, then strip out'; put '* quotes, commas, periods and spaces.'; put '* Only numeric values should remain'; put '*/'; put '%local reason_cd nobs;'; put '%let nobs=0;'; put 'data &outds;'; put '/*length GROUP_LOGIC SUBGROUP_LOGIC $3 SUBGROUP_ID 8 VARIABLE_NM $32'; put 'OPERATOR_NM $10 RAW_VALUE $4000;*/'; put 'set &inds;'; put 'length reason_cd $4032 vtype $1 vnum dsid 8 tmp $4000;'; put 'drop tmp;'; put '/* quick check to ensure column exists */'; put 'if upcase(VARIABLE_NM) not in'; put '(%upcase(%mf_getvarlist(&targetds,dlm=%str(,),quote=SINGLE)))'; put 'then do;'; put 'REASON_CD="Variable "!!cats(variable_nm)!!" not in &targetds";'; put 'putlog REASON_CD= VARIABLE_NM=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'return;'; put 'end;'; put '/* need to open the dataset to get the column type */'; put 'dsid=open("&targetds","i");'; put 'if dsid>0 then do;'; put 'vnum=varnum(dsid,VARIABLE_NM);'; put 'if vnum<1 then do;'; put '/* should not happen as was also tested for above */'; put 'REASON_CD=cats("Variable (",VARIABLE_NM,") not found in &targetds");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'return;'; put 'end;'; put '/* now we can get the type */'; put 'else vtype=vartype(dsid,vnum);'; put 'end;'; put '/* closed list checks */'; put 'if GROUP_LOGIC not in (''AND'',''OR'') then do;'; put 'REASON_CD=''GROUP_LOGIC should be AND/OR, not:''!!cats(GROUP_LOGIC);'; put 'putlog REASON_CD= GROUP_LOGIC=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if SUBGROUP_LOGIC not in (''AND'',''OR'') then do;'; put 'REASON_CD=''SUBGROUP_LOGIC should be AND/OR, not:''!!cats(SUBGROUP_LOGIC);'; put 'putlog REASON_CD= SUBGROUP_LOGIC=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if mod(SUBGROUP_ID,1) ne 0 then do;'; put 'REASON_CD=''SUBGROUP_ID should be integer, not ''!!cats(subgroup_id);'; put 'putlog REASON_CD= SUBGROUP_ID=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if OPERATOR_NM not in'; put '(''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'',''BETWEEN'',''IN'',''NOT IN'',''CONTAINS'')'; put 'then do;'; put 'REASON_CD=''Invalid OPERATOR_NM: ''!!cats(OPERATOR_NM);'; put 'putlog REASON_CD= OPERATOR_NM=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put '/* special missing logic */'; put 'if vtype=''N'''; put 'and OPERATOR_NM in (''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'')'; put 'and cats(upcase(raw_value)) in ('; put '''.'',''.A'',''.B'',''.C'',''.D'',''.E'',''.F'',''.G'',''.H'',''.I'',''.J'',''.K'',''.L'',''.M'',''.N'''; put '''.N'',''.O'',''.P'',''.Q'',''.R'',''.S'',''.T'',''.U'',''.V'',''.W'',''.X'',''.Y'',''.Z'',''._'''; put ')'; put 'then do;'; put '/* valid numeric - exit data step loop */'; put 'return;'; put 'end;'; put '/* special logic */'; put 'if OPERATOR_NM in (''IN'',''NOT IN'',''BETWEEN'') then do;'; put 'if OPERATOR_NM=''BETWEEN'' then raw_value1=tranwrd(raw_value,'' AND '','','');'; put 'else do;'; put 'if substr(raw_value,1,1) ne ''('''; put 'or substr(cats(reverse(raw_value)),1,1) ne '')'''; put 'then do;'; put 'REASON_CD=''Missing start/end bracket in RAW_VALUE'';'; put 'putlog REASON_CD= OPERATOR_NM= raw_value= raw_value1= ;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'else raw_value1=substr(raw_value,2,max(length(raw_value)-2,0));'; put 'end;'; put '/* we now have a comma seperated list of values */'; put 'if vtype=''N'' then do i=1 to countc(raw_value1, '','')+1;'; put 'tmp=scan(raw_value1,i,'','');'; put 'if cats(tmp) ne ''.'' and input(tmp, ?? 8.) eq . then do;'; put 'REASON_CD=''Non Numeric value provided'';'; put 'putlog REASON_CD= OPERATOR_NM= raw_value= raw_value1= ;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'return;'; put 'end;'; put 'end;'; put 'else raw_value1=raw_value;'; put '/* remove nested literals eg '''' */'; put 'raw_value1=tranwrd(raw_value1,"''''",'''');'; put '/* now match string literals (always single quotes) */'; put 'raw_value2=raw_value1;'; put 'regex = prxparse("s/(\'').*?(\'')//");'; put 'call prxchange(regex,-1,raw_value2);'; put '/* remove commas and periods*/'; put 'raw_value3=compress(raw_value2,'',.'');'; put '/* output records that contain values other than digits and spaces */'; put 'if notdigit(compress(raw_value3,'' ''))>0 then do;'; put 'putlog raw_value3= $hex32.;'; put 'REASON_CD=cats(''Invalid RAW_VALUE:'',raw_value);'; put 'putlog REASON_CD= raw_value= raw_value1= raw_value2= raw_value3=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'set &outds end=last;'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue=(&abort=YES and &nobs>0),'; put 'mac=&sysmacroname,'; put 'msg=%str(Data issue: %superq(reason_cd))'; put ')'; put '%if &nobs>0 %then %do;'; put '%let syscc=1008;'; put '%return;'; put '%end;'; put '/**'; put '* syntax checking passed but it does not mean the filter is valid'; put '* for that we can run a proc sql validate query'; put '*/'; put '%local fref1;'; put '%let fref1=%mf_getuniquefileref();'; put '%mp_filtergenerate(&inds,outref=&fref1)'; put '/* this macro will also set syscc to 1008 if any issues found */'; put '%mp_filtervalidate(&fref1,&targetds,outds=&outds,abort=&abort)'; put '%mend mp_filtercheck;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Retrieves column info to enable population of dropdowns'; put '@details An optional filterquery may be provided, if so then it is validated'; put 'and then used to filter the subsequent results.'; put '

Service Inputs

'; put '
IWANT
'; put '|libds:$19.|col:$9.|'; put '|---|---|'; put '|DC258467.MPE_X_TEST|SOME_TIME|'; put '
FILTERQUERY
'; put '|GROUP_LOGIC:$3|SUBGROUP_LOGIC:$3|SUBGROUP_ID:8.|VARIABLE_NM:$32|OPERATOR_NM:$10|RAW_VALUE:$32767|'; put '|---|---|---|---|---|---|'; put '|AND|AND|1|SOME_BESTNUM|>|1|'; put '|AND|AND|1|SOME_TIME|=|77333|'; put '

Service Outputs

'; put '
VALS
'; put 'The type of this column actually depends on the underlying column type, so it can change'; put '|FORMATTED|UNFORMATTED|'; put '|---|---|'; put '|$44.00|44|'; put '
META
'; put '|COLUMN:$32.|SASFORMAT:$32.|'; put '|---|---|'; put '|COL_NAME|DOLLAR8.2|'; put '

SAS Macros

'; put '@li mf_existds.sas'; put '@li mf_getvalue.sas'; put '@li mf_verifymacvars.sas'; put '@li dc_assignlib.sas'; put '@li mf_getvarformat.sas'; put '@li mp_abort.sas'; put '@li mp_cntlout.sas'; put '@li mp_filtercheck.sas'; put '@li mp_filtergenerate.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '/* input table may or may not exist */'; put 'data work.initvars;'; put 'length GROUP_LOGIC $3 SUBGROUP_LOGIC $3 SUBGROUP_ID 8 VARIABLE_NM $32'; put 'OPERATOR_NM $10 RAW_VALUE $32767;'; put 'call missing(of _all_);'; put 'stop;'; put 'data work.filterquery;'; put 'set %sysfunc(ifc('; put '%mf_existds(work.filterquery)=1'; put ',work.filterquery'; put ',work.initvars'; put '));'; put 'run;'; put '/* print data for debugging */'; put 'data _null_;'; put 'set work.iwant;'; put 'put (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set work.filterquery;'; put 'put (_all_)(=);'; put 'run;'; put '%let libds=%mf_getvalue(work.iwant,libds);'; put '%let col2=%mf_getvalue(work.iwant,col);'; put '%let is_fmt=0;'; put '%put &=libds;'; put '%put &=col2;'; put '%mp_abort(iftrue= (%mf_verifymacvars(libds col2)=0)'; put ',mac=&_program..sas'; put ',msg=%str(Missing inputs from iwant. Libds=&libds col=&col2 )'; put ')'; put '%dc_assignlib(WRITE,%scan(&libds,1,.))'; put 'data _null_;'; put 'set work.iwant;'; put '/* check if the request is for a format catalog */'; put 'call symputx(''orig_libds'',libds);'; put 'is_fmt=0;'; put 'if substr(cats(reverse(libds)),1,3)=:''CF-'' then do;'; put 'libds=scan(libds,1,''-'');'; put 'putlog "Format Catalog Captured";'; put 'call symputx(''libds'',''work.fmtextract'');'; put 'is_fmt=1;'; put 'end;'; put 'call symputx(''is_fmt'',is_fmt);'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_cntlout('; put 'iftrue=(&is_fmt=1)'; put ',libcat=&orig_libds'; put ',fmtlist=0'; put ',cntlout=work.fmtextract'; put ')'; put '/**'; put '* Validate the filter query'; put '*/'; put '%mp_filtercheck(work.filterquery,targetds=&libds,abort=YES)'; put '/**'; put '* Prepare the query'; put '*/'; put '%mp_filtergenerate(work.filterquery,outref=myfilter)'; put '/* cannot %inc in a sql where clause, only data step, so - use a view */'; put 'data work.vw_vals/view=work.vw_vals;'; put 'set &libds;'; put 'where %inc myfilter;;'; put 'run;'; put 'options obs=2000;/* restrict num of output values */'; put 'proc sql;'; put 'create table vals as select distinct'; put 'put(&col2,%mf_getVarFormat(&libds,&col2,force=1)) as formatted,'; put '&col2 as unformatted'; put 'from work.vw_vals;'; put 'options obs=max;'; put 'data vals;'; put '/* ensure empty value if table is empty, for dropdowns */'; put 'if nobs=0 then output;'; put 'set vals nobs=nobs;'; put 'format unformatted ;'; put 'output;'; put 'run;'; put 'data meta;'; put 'column="&col2";'; put 'sasformat="%mf_getVarFormat(&libds,&col2)";'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,vals,missing=STRING,showmeta=YES)'; put '%webout(OBJ,meta)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getddl; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'FMTNAME char(32) label=''Format name'''; put '/*'; put 'to accommodate larger START values, mp_loadformat.sas will need the'; put 'SQL dependency removed (proc sql needs to accommodate 3 index values in'; put 'a 32767 ibufsize limit)'; put '*/'; put ',START char(10000) label=''Starting value for format'''; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',TYPE char(1) label=''Type of format'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%mend mddl_sas_cntlout;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_existfileref(fref'; put ')/*/STORE SOURCE*/;'; put '%local rc;'; put '%let rc=%sysfunc(fileref(&fref));'; put '%if &rc=0 %then %do;'; put '1'; put '%end;'; put '%else %if &rc<0 %then %do;'; put '%put &sysmacroname: Fileref &fref exists but the underlying file does not;'; put '1'; put '%end;'; put '%else %do;'; put '0'; put '%end;'; put '%mend mf_existfileref;'; put '%macro mf_getvarcount(libds,typefilter=A'; put ')/*/STORE SOURCE*/;'; put '%local dsid nvars rc outcnt x;'; put '%let dsid=%sysfunc(open(&libds));'; put '%let nvars=.;'; put '%let outcnt=0;'; put '%let typefilter=%upcase(&typefilter);'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &typefilter=A %then %let outcnt=&nvars;'; put '%else %if &nvars>0 %then %do x=1 %to &nvars;'; put '/* increment based on variable type */'; put '%if %sysfunc(vartype(&dsid,&x))=&typefilter %then %do;'; put '%let outcnt=%eval(&outcnt+1);'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put unable to open &libds (rc=&dsid);'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '&outcnt'; put '%mend mf_getvarcount;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mp_getconstraints(lib=WORK'; put ',ds='; put ',outds=mp_getconstraints'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '/**'; put '* Cater for environments where sashelp.vcncolu is not available'; put '*/'; put '%if %sysfunc(exist(sashelp.vcncolu,view))=0 %then %do;'; put 'proc sql;'; put 'create table &outds('; put 'libref char(8)'; put ',TABLE_NAME char(32)'; put ',constraint_type char(8) label=''Constraint Type'''; put ',constraint_name char(32) label=''Constraint Name'''; put ',column_name char(32) label=''Column'''; put ',constraint_order num'; put ');'; put '%return;'; put '%end;'; put '/**'; put '* Neither dictionary tables nor sashelp provides a constraint order column,'; put '* however they DO arrive in the correct order. So, create the col.'; put '**/'; put '%local vw;'; put '%let vw=%mf_getuniquename(prefix=mp_getconstraints_vw_);'; put 'data &vw /view=&vw;'; put 'set sashelp.vcncolu;'; put 'where table_catalog="&lib";'; put '/* use retain approach to reset the constraint order with each constraint */'; put 'length tmp $1000;'; put 'retain tmp;'; put 'drop tmp;'; put 'if tmp ne catx(''|'',table_catalog,table_name,constraint_name) then do;'; put 'constraint_order=1;'; put 'end;'; put 'else constraint_order+1;'; put 'tmp=catx(''|'',table_catalog, table_name,constraint_name);'; put 'run;'; put '/* must use SQL as proc datasets does not support length changes */'; put 'proc sql noprint;'; put 'create table &outds as'; put 'select upcase(a.TABLE_CATALOG) as libref'; put ',upcase(a.TABLE_NAME) as TABLE_NAME'; put ',a.constraint_type'; put ',a.constraint_name'; put ',b.column_name'; put ',b.constraint_order'; put 'from dictionary.TABLE_CONSTRAINTS a'; put 'left join &vw b'; put 'on upcase(a.TABLE_CATALOG)=upcase(b.TABLE_CATALOG)'; put 'and upcase(a.TABLE_NAME)=upcase(b.TABLE_NAME)'; put 'and a.constraint_name=b.constraint_name'; put '/**'; put '* We cannot apply this clause to the underlying dictionary table. See:'; put '* https://communities.sas.com/t5/SAS-Programming/Unexpected-Where-Clause-behaviour-in-dictionary-TABLE/m-p/771554#M244867'; put '* cannot use`where calculated libref="&lib"` either as it will STILL execute'; put '* all the underlying constraint queries, causing exception errors in some'; put '* cases: https://github.com/sasjs/core/issues/283'; put '*/'; put 'where a.TABLE_CATALOG="&lib"'; put '%if "&ds" ne "" %then %do;'; put 'and upcase(a.TABLE_NAME)="&ds"'; put 'and upcase(b.TABLE_NAME)="&ds"'; put '%end;'; put 'order by libref, table_name, constraint_name, constraint_order'; put ';'; put '/* tidy up */'; put '%mp_dropmembers('; put '&vw,'; put 'iftrue=(&mdebug=0)'; put ')'; put '%mend mp_getconstraints;'; put '%macro mp_getddl(libref,ds,fref=getddl,flavour=SAS,showlog=NO,schema='; put ',applydttm=NO'; put ')/*/STORE SOURCE*/;'; put '/* check fileref is assigned */'; put '%if %mf_existfileref(&fref)=0 %then %do;'; put 'filename &fref temp ;'; put '%end;'; put '%if %length(&libref)=0 %then %let libref=WORK;'; put '%let flavour=%upcase(&flavour);'; put 'proc sql noprint;'; put 'create table _data_ as'; put 'select * from dictionary.tables'; put 'where upcase(libname)="%upcase(&libref)"'; put 'and memtype=''DATA'' /* views not currently supported */'; put '%if %length(&ds)>0 %then %do;'; put 'and upcase(memname)="%upcase(&ds)"'; put '%end;'; put ';'; put '%local tabinfo; %let tabinfo=&syslast;'; put 'create table _data_ as'; put 'select * from dictionary.columns'; put 'where upcase(libname)="%upcase(&libref)"'; put '%if %length(&ds)>0 %then %do;'; put 'and upcase(memname)="%upcase(&ds)"'; put '%end;'; put ';'; put '%local colinfo; %let colinfo=&syslast;'; put '%local dsnlist;'; put 'select distinct upcase(memname) into: dsnlist'; put 'separated by '' '''; put 'from &syslast'; put ';'; put 'create table _data_ as'; put 'select * from dictionary.indexes'; put 'where upcase(libname)="%upcase(&libref)"'; put '%if %length(&ds)>0 %then %do;'; put 'and upcase(memname)="%upcase(&ds)"'; put '%end;'; put 'order by idxusage, indxname, indxpos'; put ';'; put '%local idxinfo; %let idxinfo=&syslast;'; put '/* Extract all Primary Key and Unique data constraints */'; put '%mp_getconstraints(lib=%upcase(&libref),ds=%upcase(&ds),outds=_data_)'; put '%local colconst; %let colconst=&syslast;'; put '%macro addConst();'; put '%global constraints_used;'; put 'data _null_;'; put 'length ctype $11 constraint_name_orig $256 constraints_used $5000;'; put 'set &colconst('; put 'where=(table_name="&curds" and constraint_type in (''PRIMARY'',''UNIQUE''))'; put ') end=last;'; put 'file &fref mod;'; put 'by constraint_type constraint_name;'; put 'retain constraints_used;'; put 'constraint_name_orig=constraint_name;'; put 'if upcase(strip(constraint_type)) = ''PRIMARY'' then ctype=''PRIMARY KEY'';'; put 'else ctype=strip(constraint_type);'; put '%if &flavour=TSQL %then %do;'; put 'column_name=catt(''['',column_name,'']'');'; put 'constraint_name=catt(''['',constraint_name,'']'');'; put '%end;'; put '%else %if &flavour=PGSQL %then %do;'; put 'column_name=catt(''"'',column_name,''"'');'; put 'constraint_name=catt(''"'',constraint_name,''"'');'; put '%end;'; put 'if first.constraint_name then do;'; put 'constraints_used = catx('' '', constraints_used, constraint_name_orig);'; put 'put " ,CONSTRAINT " constraint_name ctype "(" ;'; put 'put '' '' column_name;'; put 'end;'; put 'else put '' ,'' column_name;'; put 'if last.constraint_name then do;'; put 'put " )";'; put 'call symput(''constraints_used'',strip(constraints_used));'; put 'end;'; put 'run;'; put '%put &=constraints_used;'; put '%mend addConst;'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* DDL generated by &sysuserid on %sysfunc(datetime(),datetime19.) */";'; put 'run;'; put '%local x curds;'; put '%if &flavour=SAS %then %do;'; put '%do x=1 %to %sysfunc(countw(&dsnlist));'; put '%let curds=%scan(&dsnlist,&x);'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* SAS Flavour DDL for %upcase(&libref).&curds */";'; put 'put "proc sql;";'; put 'run;'; put 'data _null_;'; put 'file &fref mod;'; put 'length lab $1024 typ $20;'; put 'set &colinfo (where=(upcase(memname)="&curds")) end=last;'; put 'if _n_=1 then do;'; put 'if memtype=''DATA'' then do;'; put 'put "create table &libref..&curds(";'; put 'end;'; put 'else do;'; put '/* just a placeholder - we filter out views at the top */'; put 'put "create view &libref..&curds(";'; put 'end;'; put 'put " "@@;'; put 'end;'; put 'else put " ,"@@;'; put 'if length(format)>1 then fmt=" format="!!cats(format);'; put 'if length(label)>1 then'; put 'lab=" label="!!cats("''",tranwrd(label,"''","''''"),"''");'; put 'if notnull=''yes'' then notnul='' not null'';'; put 'if type=''char'' then typ=cats(''char('',length,'')'');'; put 'else if length ne 8 then typ=''num length=''!!cats(length);'; put 'else typ=''num'';'; put 'put name typ fmt notnul lab;'; put 'run;'; put '/* Extra step for data constraints */'; put '%addConst()'; put 'data _null_;'; put 'file &fref mod;'; put 'put '');'';'; put 'run;'; put '/* Create Unique Indexes, but only if they were not already defined within'; put 'the Constraints section. */'; put 'data _null_;'; put '*length ds $128;'; put 'set &idxinfo('; put 'where=('; put 'memname="&curds"'; put 'and unique=''yes'''; put 'and indxname not in ('; put '%sysfunc(tranwrd("&constraints_used",%str( ),%str(",")))'; put ')'; put ')'; put ');'; put 'file &fref mod;'; put 'by idxusage indxname;'; put '/* ds=cats(libname,''.'',memname); */'; put 'if first.indxname then do;'; put 'put ''CREATE UNIQUE INDEX '' indxname "ON &libref..&curds (" ;'; put 'put '' '' name ;'; put 'end;'; put 'else put '' ,'' name ;'; put '*else put '' ,'' name ;'; put 'if last.indxname then do;'; put 'put '');'';'; put 'end;'; put 'run;'; put '/*'; put 'ods output IntegrityConstraints=ic;'; put 'proc contents data=testali out2=info;'; put 'run;'; put '*/'; put '%end;'; put '%end;'; put '%else %if &flavour=TSQL %then %do;'; put '/* if schema does not exist, set to be same as libref */'; put '%local schemaactual;'; put 'proc sql noprint;'; put 'select sysvalue into: schemaactual'; put 'from dictionary.libnames'; put 'where upcase(libname)="&libref" and engine=''SQLSVR'';'; put '%let schema=%sysfunc(coalescec(&schemaactual,&schema,&libref));'; put '%do x=1 %to %sysfunc(countw(&dsnlist));'; put '%let curds=%scan(&dsnlist,&x);'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* TSQL Flavour DDL for &schema..&curds */";'; put 'data _null_;'; put 'file &fref mod;'; put 'set &colinfo (where=(upcase(memname)="&curds")) end=last;'; put 'if _n_=1 then do;'; put 'if memtype=''DATA'' then do;'; put 'put "create table [&schema].[&curds](";'; put 'end;'; put 'else do;'; put '/* just a placeholder - we filter out views at the top */'; put 'put "create view [&schema].[&curds](";'; put 'end;'; put 'put " "@@;'; put 'end;'; put 'else put " ,"@@;'; put 'format=upcase(format);'; put 'if 1=0 then; /* dummy if */'; put '%if &applydttm=YES %then %do;'; put 'else if format=:''DATETIME'' then fmt=''[datetime2](7) '';'; put '%end;'; put 'else if type=''num'' then fmt=''[decimal](18,2)'';'; put 'else if length le 8000 then fmt=''[varchar](''!!cats(length)!!'')'';'; put 'else fmt=cats(''[varchar](max)'');'; put 'if notnull=''yes'' then notnul='' NOT NULL'';'; put 'put "[" name +(-1) "]" fmt notnul;'; put 'run;'; put '/* Extra step for data constraints */'; put '%addConst()'; put '/* Create Unique Indexes, but only if they were not already defined within'; put 'the Constraints section. */'; put 'data _null_;'; put '*length ds $128;'; put 'set &idxinfo('; put 'where=('; put 'memname="&curds"'; put 'and unique=''yes'''; put 'and indxname not in ('; put '%sysfunc(tranwrd("&constraints_used",%str( ),%str(",")))'; put ')'; put ')'; put ');'; put 'file &fref mod;'; put 'by idxusage indxname;'; put '*ds=cats(libname,''.'',memname);'; put 'if first.indxname then do;'; put '/* add nonclustered in case of multiple unique indexes */'; put 'put '' ,index ['' indxname +(-1) ''] UNIQUE NONCLUSTERED ('';'; put 'put '' ['' name +(-1) '']'';'; put 'end;'; put 'else put '' ,['' name +(-1) '']'';'; put 'if last.indxname then do;'; put 'put '' )'';'; put 'end;'; put 'run;'; put 'data _null_;'; put 'file &fref mod;'; put 'put '')'';'; put 'put ''GO'';'; put 'run;'; put '/* add extended properties for labels */'; put 'data _null_;'; put 'file &fref mod;'; put 'length nm $64 lab $1024;'; put 'set &colinfo (where=(upcase(memname)="&curds" and label ne '''')) end=last;'; put 'nm=cats("N''",tranwrd(name,"''","''''"),"''");'; put 'lab=cats("N''",tranwrd(label,"''","''''"),"''");'; put 'put '' '';'; put 'put "EXEC sys.sp_addextendedproperty ";'; put 'put " @name=N''MS_Description'',@value=" lab ;'; put 'put " ,@level0type=N''SCHEMA'',@level0name=N''&schema'' ";'; put 'put " ,@level1type=N''TABLE'',@level1name=N''&curds''";'; put 'put " ,@level2type=N''COLUMN'',@level2name=" nm ;'; put 'if last then put ''GO'';'; put 'run;'; put '%end;'; put '%end;'; put '%else %if &flavour=PGSQL %then %do;'; put '/* if schema does not exist, set to be same as libref */'; put '%local schemaactual;'; put 'proc sql noprint;'; put 'select sysvalue into: schemaactual'; put 'from dictionary.libnames'; put 'where upcase(libname)="&libref" and engine=''POSTGRES'';'; put '%let schema=%sysfunc(coalescec(&schemaactual,&schema,&libref));'; put 'data _null_;'; put 'file &fref mod;'; put 'put "CREATE SCHEMA &schema;";'; put '%do x=1 %to %sysfunc(countw(&dsnlist));'; put '%let curds=%scan(&dsnlist,&x);'; put '%local curdsvarcount;'; put '%let curdsvarcount=%mf_getvarcount(&libref..&curds);'; put '%if &curdsvarcount>1600 %then %do;'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* &libref..&curds contains &curdsvarcount vars */";'; put 'put "/* Postgres cannot create tables with over 1600 vars */";'; put 'put "/* No DDL will be generated for this table";'; put 'run;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* Postgres Flavour DDL for &schema..&curds */";'; put 'data _null_;'; put 'file &fref mod;'; put 'set &colinfo (where=(upcase(memname)="&curds")) end=last;'; put 'length fmt $32;'; put 'if _n_=1 then do;'; put 'if memtype=''DATA'' then do;'; put 'put "CREATE TABLE &schema..&curds (";'; put 'end;'; put 'else do;'; put '/* just a placeholder - we filter out views at the top */'; put 'put "CREATE VIEW &schema..&curds (";'; put 'end;'; put 'put " "@@;'; put 'end;'; put 'else put " ,"@@;'; put 'format=upcase(format);'; put 'if 1=0 then; /* dummy if */'; put '%if &applydttm=YES %then %do;'; put 'else if format=:''DATETIME'' then fmt='' TIMESTAMP '';'; put '%end;'; put 'else if type=''num'' then fmt='' DOUBLE PRECISION'';'; put 'else fmt=''VARCHAR(''!!cats(length)!!'')'';'; put 'if notnull=''yes'' then notnul='' NOT NULL'';'; put '/* quote column names in case they represent reserved words */'; put 'name2=quote(trim(name));'; put 'put name2 fmt notnul;'; put 'run;'; put '/* Extra step for data constraints */'; put '%addConst()'; put 'data _null_;'; put 'file &fref mod;'; put 'put '');'';'; put 'run;'; put '/* Create Unique Indexes, but only if they were not already defined within'; put 'the Constraints section. */'; put 'data _null_;'; put '*length ds $128;'; put 'set &idxinfo('; put 'where=('; put 'memname="&curds"'; put 'and unique=''yes'''; put 'and indxname not in ('; put '%sysfunc(tranwrd("&constraints_used",%str( ),%str(",")))'; put ')'; put ')'; put ');'; put 'file &fref mod;'; put 'by idxusage indxname;'; put 'if first.indxname then do;'; put 'put ''CREATE UNIQUE INDEX "'' indxname +(-1) ''" '' "ON &schema..&curds(";'; put 'put '' "'' name +(-1) ''"'' ;'; put 'end;'; put 'else put '' ,"'' name +(-1) ''"'';'; put 'if last.indxname then do;'; put 'put '');'';'; put 'end;'; put 'run;'; put '%end;'; put '%end;'; put '%end;'; put '%if %upcase(&showlog)=YES %then %do;'; put 'options ps=max;'; put 'data _null_;'; put 'infile &fref;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%end;'; put '%mend mp_getddl;'; put '%macro mfs_httpheader(header_name'; put ',header_value'; put ')/*/STORE SOURCE*/;'; put '%global sasjs_stpsrv_header_loc;'; put '%local fref fid i;'; put '%if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc)) ne 0 %then %do;'; put '%put &=fref &=sasjs_stpsrv_header_loc;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(&header_name): %str(&header_value)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%mend mfs_httpheader;'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mp_streamfile('; put 'contenttype=TEXT'; put ',inloc='; put ',inref=0'; put ',iftrue=%str(1=1)'; put ',outname='; put ',outref=_webout'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let contentype=%upcase(&contenttype);'; put '%let outref=%upcase(&outref);'; put '%local platform; %let platform=%mf_getplatform();'; put '/**'; put '* check engine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put '%local streamweb;'; put '%let streamweb=0;'; put 'data _null_;'; put 'set sashelp.vextfl(where=(upcase(fileref)="&outref"));'; put 'if xengine=''STREAM'' then call symputx(''streamweb'',1,''l'');'; put 'run;'; put '%if &contentype=CSV %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/csv'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/csv'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/csv)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=EXCEL %then %do;'; put '/* suitable for XLS format */'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/vnd.ms-excel'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype=''application/vnd.ms-excel'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/vnd.ms-excel)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=GIF or &contentype=JPEG or &contentype=PNG %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"image/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="image/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,image/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=HTML or &contenttype=MARKDOWN %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"text/%lowcase(&contenttype)");'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json"'; put 'contenttype="text/%lowcase(&contenttype)"'; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,text/%lowcase(&contenttype))'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=TEXT %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/text'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/text'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/text)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=WOFF or &contentype=WOFF2 or &contentype=TTF %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"font/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="font/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,font/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=XLSX %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'','; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype='; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type'; put ',application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; put ')'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=ZIP %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/zip'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.zip'''; put 'contenttype=''application/zip'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/zip)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Content Type &contenttype NOT SUPPORTED by &sysmacroname!;'; put '%end;'; put '%if &inref ne 0 %then %do;'; put '%mp_binarycopy(inref=&inref,outref=&outref)'; put '%end;'; put '%else %do;'; put '%mp_binarycopy(inloc="&inloc",outref=&outref)'; put '%end;'; put '%mend mp_streamfile;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Download DDL for a table or entire library in a particular flavour.'; put '@details'; put '

SAS Macros

'; put '@li mddl_sas_cntlout.sas'; put '@li dc_assignlib.sas'; put '@li mf_existds.sas'; put '@li mp_abort.sas'; put '@li mp_getddl.sas'; put '@li mp_streamfile.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%global libref ds flavour;'; put '%let flavour=%sysfunc(coalescec(&flavour,SAS));'; put '%mpeinit()'; put '%dc_assignlib(READ,&libref)'; put 'data _null_;'; put '/* check if the request is for a format catalog */'; put 'ds=symget(''ds'');'; put 'if subpad(cats(reverse(ds)),1,3)=:''CF-'' then do;'; put 'ds=scan(ds,1,''-'');'; put 'libds=cats(symget(''libref''),''.'',ds);'; put 'putlog "Format Catalog Captured";'; put 'call execute(''%mddl_sas_cntlout(libds=work.fmtextract)'');'; put 'call symputx(''libref'',''work'');'; put 'call symputx(''ds'',''fmtextract'');'; put 'end;'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue=("exist&ds" ne "exist" and %mf_existds(libds=&libref..&ds)<1)'; put ',mac=&_program'; put ',msg=%str(Dataset &libref..&ds was not found)'; put ')'; put '%let tmploc=%sysfunc(pathname(work))/temp.txt;'; put 'filename tmp "&tmploc";'; put '%mp_getddl(&libref,&ds,flavour=&flavour, fref=tmp, applydttm=YES)'; put '%mp_streamfile(contenttype=TEXT'; put ',inloc=%str(&tmploc)'; put ',outname=&libref._&ds..ddl'; put ')'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getgroups; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getgroups(outds=mm_getlibs);'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getgroups(outds=&outds,repo=foundation)'; put '%do x=1 %to &repocnt;'; put '%mm_getgroups(outds=&outds.a, repo=&&repo&x)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'proc sort data=&outds noduprec;'; put 'by groupname;'; put 'run;'; put '%mend dc_getgroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getgroups.sas'; put '@brief List all SAS Groups'; put '@details Gets a list of all SAS Groups. Runs without mpeinit() so that it'; put 'can be available to the sasjs/server configurator'; put '

SAS Macros

'; put '@li dc_getgroups.sas'; put '

Data Outputs

'; put '
groups
'; put '|NAME:$32.|DESCRIPTION:$64.|GROUPID:best.|'; put '|---|---|---|'; put '|`SomeGroup `|`A group `|`1`|'; put '|`Another Group`|`this is a different group`|`2`|'; put '|`admin`|`Administrators `|`3`|'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%dc_getgroups(outds=groups)'; put '%webout(OPEN)'; put '%webout(OBJ,groups)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getrawdata; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_filtergenerate(inds,outref=filter);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put 'filename &outref temp;'; put '%if %mf_nobs(&inds)=0 %then %do;'; put '/* ensure we have a default filter */'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc sort data=&inds;'; put 'by SUBGROUP_ID;'; put 'run;'; put 'data _null_;'; put 'file &outref lrecl=32800;'; put 'set &inds end=last;'; put 'by SUBGROUP_ID;'; put 'if _n_=1 then put ''(('';'; put 'else if first.SUBGROUP_ID then put +1 GROUP_LOGIC ''('';'; put 'else put +2 SUBGROUP_LOGIC;'; put 'put +4 VARIABLE_NM OPERATOR_NM RAW_VALUE;'; put 'if last.SUBGROUP_ID then put '')''@;'; put 'if last then put '')'';'; put 'run;'; put '%end;'; put '%mend mp_filtergenerate;'; put '%macro mpe_filtermaster(mode,libds,'; put 'dclib=,'; put 'filter_rk=-1,'; put 'outref=0,'; put 'outds=work.query'; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%let mode=%upcase(&mode);'; put '%let libds=%upcase(&libds);'; put '%mp_abort(iftrue= ('; put '&mode ne EDIT and &mode ne VIEW and &mode ne DLOAD and &mode ne ULOAD'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid MODE: &mode)'; put ')'; put '%mp_abort(iftrue= (&outref = 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Please provide a fileref!)'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc)'; put ')'; put 'filename &outref temp;'; put '/* ensure outputs exist */'; put 'data _null_;'; put 'file &outref;'; put 'put '' '';'; put 'run;'; put 'data &outds;'; put 'set &dclib..mpe_filtersource;'; put 'stop;'; put 'run;'; put '/**'; put '* Deal with FILTER_RK first'; put '*/'; put '%if &filter_rk gt 0 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''( ''@@;'; put 'set &dclib..mpe_filteranytable(where=(filter_rk=&filter_rk));'; put 'call symputx(''filter_hash'',filter_hash,''l'');'; put 'run;'; put 'proc sort data=&dclib..mpe_filtersource(where=(filter_hash="&filter_hash"))'; put 'out=&outds(drop=filter_hash filter_line processed_dttm);'; put 'by filter_line;'; put 'run;'; put '%mp_filtergenerate(&outds,outref=&outref)'; put '%end;'; put '/* Now filter for current records if the MODE is EDIT or DLOAD */'; put '%local varfrom varto;'; put '%let varfrom=0;'; put 'proc sql;'; put 'select coalescec(var_txfrom,''0''), var_txto into: varfrom,:varto'; put 'from &dclib..MPE_TABLES'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and libref="%scan(&libds,1,.)" and dsn="%scan(&libds,2,.)";'; put '%put &=varfrom;'; put '%put &=varto;'; put '/**'; put '* Check if the date variables were mentioned in the query'; put '* This is a trigger for serving a historical view instead of current'; put '* we skip this part when checking an ULOAD as there are no date vars'; put '*/'; put '%if &varfrom ne 0 and (&mode=EDIT or &mode=DLOAD) %then %do;'; put '%local validityvars;'; put 'proc sql;'; put 'select count(*) into: validityvars'; put 'from &outds'; put 'where variable_nm in ("&varfrom","&varto");'; put '%if &validityvars=0 %then %do;'; put 'data _null_;'; put 'file &outref mod;'; put 'length filter_text $32767;'; put 'varfrom=symget(''varfrom'');'; put 'varto=symget(''varto'');'; put 'filter_text=catx('' '','; put '''("%sysfunc(datetime(),'',"%mf_fmtdttm()",'')"dt <'',varto,'')'''; put ');'; put 'if &filter_rk > 0 then put ''AND '' filter_text;'; put 'else put filter_text;'; put 'run;'; put '%end;'; put '%end;'; put '/**'; put '* Now do Row Level Security based on the MPE_ROW_LEVEL_SECURITY table'; put '*/'; put '/* first determine users group membership */'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.groups)'; put '%local admin_check;'; put 'proc sql;'; put 'select count(*) into: admin_check'; put 'from work.groups'; put 'where groupname="&mpeadmins";'; put '%put &sysmacroname: &=admin_check &=mpeadmins;'; put '%if &admin_check=0 %then %do;'; put '%local scopeval;'; put '%if &mode=DLOAD %then %let scopeval=VIEW;'; put '%if &mode=ULOAD %then %let scopeval=EDIT;'; put '%else %let scopeval=&mode;'; put '/* extract relevant rows */'; put '%local rlsds;'; put '%let rlsds=%mf_getuniquename();'; put 'proc sql;'; put 'create table work.&rlsds as'; put 'select rls_group,'; put 'rls_group_logic as group_logic,'; put 'rls_subgroup_logic as subgroup_logic,'; put 'rls_subgroup_id as subgroup_id,'; put 'rls_variable_nm as variable_nm,'; put 'rls_operator_nm as operator_nm,'; put 'rls_raw_value as raw_value'; put 'from &mpelib..mpe_row_level_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and rls_scope in ("&scopeval",''ALL'')'; put 'and upcase(rls_group) in (select upcase(groupname) from work.groups)'; put 'and rls_libref="%scan(&libds,1,.)"'; put 'and rls_table="%scan(&libds,2,.)"'; put 'and rls_active=1'; put 'order by rls_group,rls_subgroup_id;'; put '%if &sqlobs>0 %then %do;'; put '/* check if we currently have filter or not */'; put 'data ;'; put 'infile &outref end=eof;'; put 'input;'; put 'if _n_=1 and eof and cats(_infile_)='''' then newfilter=1;'; put 'output;'; put 'stop;'; put 'run;'; put 'data _null_;'; put 'set &syslast;'; put 'file &outref mod;'; put 'if newfilter=1 then put ''('';'; put 'else put ''AND ('';'; put 'run;'; put '/* loop through and apply filters for each group membership */'; put '%local fref ds;'; put '%let fref=%mf_getuniquefileref();'; put '%let ds=%mf_getuniquename();'; put 'proc sql noprint;'; put 'select distinct rls_group into : group1 -'; put 'from work.&rlsds;'; put '%do i=1 %to &sqlobs;'; put 'data work.&ds;'; put 'set work.&rlsds;'; put 'where rls_group="&&group&i";'; put 'drop rls_group;'; put 'run;'; put '%mp_filtergenerate(&ds,outref=&fref)'; put 'data _null_;'; put 'infile &fref;'; put 'file &outref mod;'; put 'input;'; put 'if &i>1 and _n_=1 then put '' OR '';'; put 'put _infile_;'; put 'run;'; put '%end;'; put 'data _null_;'; put 'file &outref mod;'; put 'put '')'';'; put 'run;'; put '%end; /* &sqlobs>0 */'; put '%else %do;'; put '%put &sysmacroname: no matching groups;'; put 'data _null_;'; put 'set work.groups;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname'; put ',msg=%str(Row Level Security Generation Error)'; put ')'; put '%end; /* &admin_check=0 */'; put '%put leaving &sysmacroname with the following query:;'; put '%local empty;'; put '%let empty=0;'; put 'data _null_;'; put 'infile &outref end=eof;'; put 'input;'; put 'putlog _infile_;'; put 'if _n_=1 and eof and cats(_infile_)='''' then do;'; put 'put ''1=1'';'; put 'call symputx(''empty'',1,''l'');'; put 'end;'; put 'run;'; put '%if &empty=1 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%mend mpe_filtermaster;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '/** @cond */'; put '%macro mf_existfeature(feature'; put ')/*/STORE SOURCE*/;'; put '%let feature=%upcase(&feature);'; put '%local platform;'; put '%let platform=%mf_getplatform();'; put '%if &feature= %then %do;'; put '%put No feature was requested for detection;'; put '%end;'; put '%else %if &feature=COLCONSTRAINTS %then %do;'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=PROCLUA %then %do;'; put '/* https://blogs.sas.com/content/sasdummy/2015/08/03/using-lua-within-your-sas-programs */'; put '%if &platform=SASVIYA %then 1;'; put '%else %if "&sysver"="9.2" or "&sysver"="9.3" %then 0;'; put '%else %if "&SYSVLONG" < "9.04.01M3" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=DBMS_MEMTYPE %then %do;'; put '/* does dbms_memtype exist in dictionary.tables? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=EXPORTXLS %then %do;'; put '/* is it possible to PROC EXPORT an excel file? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 1;'; put '%else %if %sysfunc(sysprod(SAS/ACCESS Interface to PC Files)) = 1 %then 1;'; put '%else 0;'; put '%end;'; put '%else %do;'; put '-1'; put '%put &sysmacroname: &feature not found;'; put '%end;'; put '%mend mf_existfeature;'; put '/** @endcond */'; put '%macro mp_ds2cards(base_ds, tgt_ds='; put ',cards_file="%sysfunc(pathname(work))/cardgen.sas"'; put ',maxobs=max'; put ',random_sample=NO'; put ',showlog=YES'; put ',outencoding='; put ',append=NO'; put ')/*/STORE SOURCE*/;'; put '%local i setds nvars;'; put '%if not %sysfunc(exist(&base_ds)) %then %do;'; put '%put %str(WARN)ING: &base_ds does not exist;'; put '%return;'; put '%end;'; put '%if %index(&base_ds,.)=0 %then %let base_ds=WORK.&base_ds;'; put '%if (&tgt_ds = ) %then %let tgt_ds=&base_ds;'; put '%if %index(&tgt_ds,.)=0 %then %let tgt_ds=WORK.%scan(&base_ds,2,.);'; put '%if ("&outencoding" ne "") %then %let outencoding=encoding="&outencoding";'; put '%if ("&append" = "" or "&append" = "NO") %then %let append=;'; put '%else %let append=mod;'; put '/* get varcount */'; put '%let nvars=0;'; put 'proc sql noprint;'; put 'select count(*) into: nvars from dictionary.columns'; put 'where upcase(libname)="%scan(%upcase(&base_ds),1)"'; put 'and upcase(memname)="%scan(%upcase(&base_ds),2)";'; put '%if &nvars=0 %then %do;'; put '%put %str(WARN)ING: Dataset &base_ds has no variables, will not be converted.;'; put '%return;'; put '%end;'; put '/* get indexes */'; put 'proc sort'; put 'data=sashelp.vindex('; put 'where=(upcase(libname)="%scan(%upcase(&base_ds),1)"'; put 'and upcase(memname)="%scan(%upcase(&base_ds),2)")'; put ')'; put 'out=_data_;'; put 'by indxname indxpos;'; put 'run;'; put '%local indexes;'; put 'data _null_;'; put 'set &syslast end=last;'; put 'if _n_=1 then call symputx(''indexes'',''(index=('',''l'');'; put 'by indxname indxpos;'; put 'length vars $32767 nom uni $8;'; put 'retain vars;'; put 'if first.indxname then do;'; put 'idxcnt+1;'; put 'nom='''';'; put 'uni='''';'; put 'vars=name;'; put 'end;'; put 'else vars=catx('' '',vars,name);'; put 'if last.indxname then do;'; put 'if nomiss=''yes'' then nom=''/nomiss'';'; put 'if unique=''yes'' then uni=''/unique'';'; put 'call symputx(''indexes'''; put ',catx('' '',symget(''indexes''),indxname,''=('',vars,'')'',nom,uni)'; put ',''l'');'; put 'end;'; put 'if last then call symputx(''indexes'',cats(symget(''indexes''),''))''),''l'');'; put 'run;'; put 'data;run;'; put '%let setds=&syslast;'; put 'proc sql'; put '%if %datatyp(&maxobs)=NUMERIC %then %do;'; put 'outobs=&maxobs;'; put '%end;'; put ';'; put 'create table &setds as select * from &base_ds'; put '%if &random_sample=YES %then %do;'; put 'order by ranuni(42)'; put '%end;'; put ';'; put 'reset outobs=max;'; put 'create table datalines1 as'; put 'select name,type,length,varnum,format,label from dictionary.columns'; put 'where upcase(libname)="%upcase(%scan(&base_ds,1))"'; put 'and upcase(memname)="%upcase(%scan(&base_ds,2))";'; put '/**'; put 'Due to long decimals cannot use best. format'; put 'So - use bestd. format and then use character functions to strip trailing'; put 'zeros, if NOT an integer or missing!! Cannot use int() as it upsets'; put 'note2err when there are missings.'; put 'resolved code = ifc( mod(coalesce(VARIABLE,0),1)=0'; put ',put(VARIABLE,best32.)'; put ',substrn(put(VARIABLE,bestd32.),1'; put ',findc(put(VARIABLE,bestd32.),''0'',''TBK'')));'; put '**/'; put 'data datalines_2;'; put 'format dataline $32000.;'; put 'set datalines1 (where=(upcase(name) not in'; put '(''PROCESSED_DTTM'',''VALID_FROM_DTTM'',''VALID_TO_DTTM'')));'; put 'if type=''num'' then dataline='; put 'cats(''ifc(mod(coalesce('',name,'',0),1)=0'; put ',put('',name,'',best32.-l)'; put ',substrn(put('',name,'',bestd32.-l),1'; put ',findc(put('',name,'',bestd32.-l),"0","TBK")))'');'; put '/**'; put '* binary data must be converted, to store in text format. It is identified'; put '* by the presence of the $HEX keyword in the format.'; put '*/'; put 'else if upcase(format)=:''$HEX'' then'; put 'dataline=cats(''put(trim('',name,''),'',format,'')'');'; put '/**'; put '* There is no easy way to store line breaks in a cards file.'; put '* To discuss this, use: https://github.com/sasjs/core/issues/80'; put '* Removing all nonprintables with kw (keep writeable)'; put '*/'; put 'else dataline=cats(''compress('',name,'', ,"kw")'');'; put 'run;'; put 'proc sql noprint;'; put 'select dataline into: datalines separated by '','' from datalines_2;'; put '%local'; put 'process_dttm_flg'; put 'valid_from_dttm_flg'; put 'valid_to_dttm_flg'; put ';'; put '%let process_dttm_flg = N;'; put '%let valid_from_dttm_flg = N;'; put '%let valid_to_dttm_flg = N;'; put 'data _null_;'; put 'set datalines1 ;'; put '/* build attrib statement */'; put 'if type=''char'' then type2=''$'';'; put 'if strip(format) ne '''' then format2=cats(''format='',format);'; put 'if strip(label) ne '''' then label2=cats(''label='',quote(trim(label)));'; put 'str1=catx('' '',(put(name,$33.)||''length='')'; put ',put(cats(type2,length),$7.)||format2,label2);'; put '/* Build input statement */'; put 'if upcase(format)=:''$HEX'' then type3='':''!!format;'; put 'else if type=''char'' then type3='':$char.'';'; put 'str2=put(name,$33.)||type3;'; put 'if(upcase(name) = "PROCESSED_DTTM") then'; put 'call symputx("process_dttm_flg", "Y", "L");'; put 'if(upcase(name) = "VALID_FROM_DTTM") then'; put 'call symputx("valid_from_dttm_flg", "Y", "L");'; put 'if(upcase(name) = "VALID_TO_DTTM") then'; put 'call symputx("valid_to_dttm_flg", "Y", "L");'; put 'call symputx(cats("attrib_stmt_", put(_N_, 8.)), str1, "L");'; put 'call symputx(cats("input_stmt_", put(_N_, 8.))'; put ', ifc(upcase(name) not in'; put '(''PROCESSED_DTTM'',''VALID_FROM_DTTM'',''VALID_TO_DTTM''), str2, ""), "L");'; put 'run;'; put 'data _null_;'; put 'file &cards_file. &outencoding lrecl=32767 termstr=nl &append;'; put 'length __attrib $32767;'; put 'if _n_=1 then do;'; put 'put ''/**'';'; put 'put '' @file'';'; put 'put " @brief Datalines for %upcase(%scan(&base_ds,2)) dataset";'; put 'put " @details Generated by %nrstr(%%)mp_ds2cards()";'; put 'put " Source: https://github.com/sasjs/core";'; put 'put '' @cond '';'; put 'put ''**/'';'; put 'put "data &tgt_ds &indexes;";'; put 'put "attrib ";'; put '%do i = 1 %to &nvars;'; put '__attrib=symget("attrib_stmt_&i");'; put 'put __attrib;'; put '%end;'; put 'put ";";'; put '%if &process_dttm_flg. eq Y %then %do;'; put 'put ''retain PROCESSED_DTTM %sysfunc(datetime());'';'; put '%end;'; put '%if &valid_from_dttm_flg. eq Y %then %do;'; put 'put ''retain VALID_FROM_DTTM &low_date;'';'; put '%end;'; put '%if &valid_to_dttm_flg. eq Y %then %do;'; put 'put ''retain VALID_TO_DTTM &high_date;'';'; put '%end;'; put 'if __nobs=0 then do;'; put 'put ''call missing(of _all_);/* avoid uninitialised notes */'';'; put 'put ''stop;'';'; put 'put ''run;'';'; put 'end;'; put 'else do;'; put 'put "infile cards dsd;";'; put 'put "input ";'; put '%do i = 1 %to &nvars.;'; put '%if(%length(&&input_stmt_&i..)) %then'; put 'put " &&input_stmt_&i..";'; put ';'; put '%end;'; put 'put ";";'; put 'put ''missing a b c d e f g h i j k l m n o p q r s t u v w x y z _;'';'; put 'put "datalines4;";'; put 'end;'; put 'end;'; put 'set &setds end=__lastobs nobs=__nobs;'; put '/* remove all formats for write purposes - some have long underlying decimals */'; put 'format _numeric_ best30.29;'; put 'length __dataline $32767;'; put '__dataline=catq(''cqtmb'',&datalines);'; put 'put __dataline;'; put 'if __lastobs then do;'; put 'put '';;;;'';'; put 'put ''run;'';'; put 'put ''/** @endcond **/'';'; put 'stop;'; put 'end;'; put 'run;'; put 'proc sql;'; put 'drop table &setds;'; put 'quit;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &cards_file lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '%put NOTE: CARDS FILE SAVED IN:;'; put '%put NOTE-;%put NOTE-;'; put '%put NOTE- %sysfunc(dequote(&cards_file.));'; put '%put NOTE-;%put NOTE-;'; put '%mend mp_ds2cards;'; put '/** @endcond **/'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'FMTNAME char(32) label=''Format name'''; put '/*'; put 'to accommodate larger START values, mp_loadformat.sas will need the'; put 'SQL dependency removed (proc sql needs to accommodate 3 index values in'; put 'a 32767 ibufsize limit)'; put '*/'; put ',START char(10000) label=''Starting value for format'''; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',TYPE char(1) label=''Type of format'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%mend mddl_sas_cntlout;'; put '%macro mp_cntlout('; put 'iftrue=(1=1)'; put ',libcat='; put ',cntlout=work.fmtextract'; put ',fmtlist=0'; put ')/*/STORE SOURCE*/;'; put '%local ddlds cntlds i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let ddlds=%mf_getuniquename();'; put '%let cntlds=%mf_getuniquename();'; put '%mddl_sas_cntlout(libds=&ddlds)'; put '%if %index(&libcat,-)>0 and %scan(&libcat,2,-)=FC %then %do;'; put '%let libcat=%scan(&libcat,1,-);'; put '%end;'; put 'proc format lib=&libcat cntlout=&cntlds;'; put '%if "&fmtlist" ne "0" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'if type="N" then do;'; put 'start=cats(start);'; put 'end=cats(end);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by fmtname start;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; put '%macro mfs_httpheader(header_name'; put ',header_value'; put ')/*/STORE SOURCE*/;'; put '%global sasjs_stpsrv_header_loc;'; put '%local fref fid i;'; put '%if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc)) ne 0 %then %do;'; put '%put &=fref &=sasjs_stpsrv_header_loc;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(&header_name): %str(&header_value)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%mend mfs_httpheader;'; put '%macro mp_streamfile('; put 'contenttype=TEXT'; put ',inloc='; put ',inref=0'; put ',iftrue=%str(1=1)'; put ',outname='; put ',outref=_webout'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let contentype=%upcase(&contenttype);'; put '%let outref=%upcase(&outref);'; put '%local platform; %let platform=%mf_getplatform();'; put '/**'; put '* check engine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put '%local streamweb;'; put '%let streamweb=0;'; put 'data _null_;'; put 'set sashelp.vextfl(where=(upcase(fileref)="&outref"));'; put 'if xengine=''STREAM'' then call symputx(''streamweb'',1,''l'');'; put 'run;'; put '%if &contentype=CSV %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/csv'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/csv'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/csv)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=EXCEL %then %do;'; put '/* suitable for XLS format */'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/vnd.ms-excel'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype=''application/vnd.ms-excel'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/vnd.ms-excel)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=GIF or &contentype=JPEG or &contentype=PNG %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"image/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="image/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,image/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=HTML or &contenttype=MARKDOWN %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"text/%lowcase(&contenttype)");'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json"'; put 'contenttype="text/%lowcase(&contenttype)"'; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,text/%lowcase(&contenttype))'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=TEXT %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/text'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/text'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/text)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=WOFF or &contentype=WOFF2 or &contentype=TTF %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"font/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="font/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,font/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=XLSX %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'','; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype='; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type'; put ',application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; put ')'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=ZIP %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/zip'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.zip'''; put 'contenttype=''application/zip'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/zip)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Content Type &contenttype NOT SUPPORTED by &sysmacroname!;'; put '%end;'; put '%if &inref ne 0 %then %do;'; put '%mp_binarycopy(inref=&inref,outref=&outref)'; put '%end;'; put '%else %do;'; put '%mp_binarycopy(inloc="&inloc",outref=&outref)'; put '%end;'; put '%mend mp_streamfile;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Downloads data in a variety of formats'; put '@details To enable direct download, this service runs in a dedicated stream'; put 'as a GET request using URL parameters as inputs.'; put 'The inputs are:'; put '@li table - the libds of the table to be downloaded'; put '@li type - either SAS, CSV, EXCEL, MARKDOWN, WEBCSV or WEBTAB'; put '@li filter - the filter RK if used'; put '

SAS Macros

'; put '@li mf_verifymacvars.sas'; put '@li mf_getuser.sas'; put '@li mf_existfeature.sas'; put '@li dc_assignlib.sas'; put '@li mp_ds2cards.sas'; put '@li mp_abort.sas'; put '@li mp_binarycopy.sas'; put '@li mp_cntlout.sas'; put '@li mp_streamfile.sas'; put '@li mpe_filtermaster.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%global table type filter ds format is_fmt txfrom txto;'; put '%mpeinit()'; put '%let user=%mf_getuser();'; put '%let is_fmt=0;'; put '%mp_abort(iftrue= (%mf_verifymacvars(type table)=0)'; put ',mac=&_program..sas'; put ',msg=%str(Invalid inputs: type table)'; put ')'; put '%let libds=%upcase(&table); /* actual source */'; put '%let table=%upcase(&table); /* used as label for fmt catalogs */'; put '%let lib=%scan(&table,1,.);'; put '%let ds=%scan(&table,2,.);'; put '%dc_assignlib(READ,&lib)'; put 'data _null_;'; put 'set &mpelib..MPE_TABLES;'; put 'where upcase(libref)="&lib" and upcase(dsn)="&ds";'; put '/* if a TXTEMPORAL table then filter as such */'; put 'call symputx(''txfrom'',var_txfrom);'; put 'call symputx(''txto'',var_txto);'; put 'ds=symget(''ds'');'; put 'is_fmt=0;'; put 'if subpad(cats(reverse(ds)),1,3)=:''CF-'' then do;'; put 'ds=scan(ds,1,''-'');'; put 'table=cats("&lib..",ds);'; put 'putlog "Format Catalog Captured";'; put 'is_fmt=1;'; put 'call symputx(''libds'',''work.fmtextract'');'; put 'call symputx(''table'',table);'; put 'end;'; put 'call symputx(''is_fmt'',is_fmt);'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_cntlout('; put 'iftrue=(&is_fmt=1)'; put ',libcat=&table'; put ',fmtlist=0'; put ',cntlout=work.fmtextract'; put ')'; put '%put preparing query;'; put '%mpe_filtermaster(DLOAD,&libds,'; put 'dclib=&mpelib,'; put 'filter_rk=&filter,'; put 'outref=filtref,'; put 'outds=work.query'; put ')'; put '%put printing generated filterquery:;'; put 'data _null_;'; put 'infile filtref;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put 'options obs=200000;/* stop limit */'; put 'data staged(drop=&txfrom &txto);'; put 'set &libds;'; put 'where %inc filtref;;'; put 'run;'; put 'options obs=max;'; put 'options validvarname=upcase;'; put '%macro mpestp_getrawdata();'; put '%local outfile;'; put '%if &type=SAS %then %do;'; put '%let outfile=%sysfunc(pathname(work))/&table..sas;'; put '%mp_ds2cards(base_ds=staged'; put ', tgt_ds=&table'; put ', cards_file= "&outfile"'; put ', maxobs=100000)'; put '%let ext=sas;'; put '%let mimetype=text;'; put '%end;'; put '%else %if &type=CSV or (&type=EXCEL and %mf_existfeature(EXPORTXLS) ne 1)'; put '/* cannot proc export excel if PC Files is not licensed */'; put '%then %do;'; put '%let outfile=%sysfunc(pathname(work))/&table..csv;'; put 'PROC EXPORT DATA= staged'; put 'OUTFILE= "&outfile"'; put 'DBMS=csv REPLACE;'; put 'RUN;'; put '%let ext=csv;'; put '%let mimetype=csv;'; put '%end;'; put '%else %if &type=EXCEL %then %do;'; put '%let ext=xlsx;'; put '%let outfile=%sysfunc(pathname(work))/&table..&ext;'; put 'PROC EXPORT DATA= staged'; put 'OUTFILE= "&outfile"'; put 'DBMS=xlsx ;'; put 'RUN;'; put '%let mimetype=XLSX;'; put '%end;'; put '%else %if &type=MARKDOWN %then %do;'; put '%let ext=md;'; put '%let outfile=%sysfunc(pathname(work))/&table..&ext;'; put 'filename mdref "&outfile" lrecl=32767;'; put '%mp_ds2md(staged,outref=mdref,showlog=NO)'; put '%let mimetype=MARKDOWN;'; put '%end;'; put '%else %if &type=WEBCSV %then %do;'; put 'PROC EXPORT DATA= staged'; put 'OUTFILE= _webout'; put 'DBMS=csv REPLACE;'; put 'RUN;'; put '/* don''t set headers */'; put '%return;'; put '%end;'; put '%else %if &type=WEBTAB %then %do;'; put 'PROC EXPORT DATA= staged'; put 'OUTFILE= _webout'; put 'DBMS=tab REPLACE;'; put 'RUN;'; put '/* don''t set headers */'; put '%return;'; put '%end;'; put '%else %do;'; put '%mp_abort(msg=type &type not supported,mac=mpestp_getrawdata.sas);'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%mp_streamfile(contenttype=&mimetype'; put ',inloc=%str(&outfile)'; put ',outname=&table..&ext'; put ')'; put '%mend mpestp_getrawdata;'; put '%mpestp_getrawdata()'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=refreshlibinfo; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 or %length(&var)=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_inc)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status;'; put 'proc sql noprint;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro bitemporal_closeouts('; put 'tech_from=tx_from_dttm'; put ',tech_to = tx_to_dttm /* Technical TO datetime variable.'; put 'Req''d on BASE table only. */'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE /* Name of STAGING table. */'; put ',PK= name sex /* Business key, space separated. */'; put '/* Should INCLUDE BUS_FROM field if relevant. */'; put ',NOW=DEFINE'; put ',FILTER= /* supply a filter to limit the update */'; put ',outdest= /* supply an unquoted filepath/filename.ext to get'; put 'a text file containing the update statements */'; put ',loadtype='; put ',loadtarget=YES /* if <> YES will return without changing anything */'; put ');'; put '%put ENTERING &sysmacroname;'; put '%local x var start;'; put '%let start=%sysfunc(datetime());'; put '%dc_assignlib(WRITE,&base_lib)'; put '%dc_assignlib(WRITE,&append_lib)'; put '%if &now=DEFINE %then %let now=&dc_dttmtfmt.;'; put '%put &=now;'; put '/**'; put '* perform basic checks'; put '*/'; put '/* do tables exist? */'; put '%if not %sysfunc(exist(&base_lib..&base_dsn)) %then %do;'; put '%mp_abort(msg=&base_lib..&base_dsn does not exist)'; put '%end;'; put '%else %if %sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 %then %do;'; put '%mp_abort(msg=&append_lib..&append_dsn does not exist)'; put '%end;'; put '/* do TX columns exist? */'; put '%if &loadtype ne UPDATE %then %do;'; put '%if not %mf_existvar(&base_lib..&base_dsn,&tech_from) %then %do;'; put '%mp_abort(msg=&tech_from does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&base_lib..&base_dsn,&tech_to) %then %do;'; put '%mp_abort(msg=&tech_to does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%end;'; put '/* do PK columns exist? */'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if not %mf_existvar(&base_lib..&base_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&append_lib..&append_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &append_lib..&append_dsn)'; put '%end;'; put '%end;'; put '/* check uniqueness */'; put 'proc sort data=&append_lib..&append_dsn'; put 'out=___closeout1 noduprecs dupout=___closeout1a;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(___closeout1a,NLOBS)>0 %then'; put '%put NOTE: dups on (&PK) in (&append_lib..&append_dsn);'; put '/* is &NOW value within a tolerance? Should not allow renegade closeouts.. */'; put '%local gap;'; put '%let gap=0;'; put 'data _null_;'; put 'now=&now;'; put 'gap=intck(''HOURS'',now,datetime());'; put 'call symputx(''gap'',gap,''l'');'; put 'run;'; put '%mf_abort('; put 'iftrue=(&gap > 24),'; put 'msg=NOW variable (&now) is not within a 24hr tolerance'; put ')'; put '/* have any warnings / errs occurred thus far? If so, abort */'; put '%mf_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/**'; put '* Create closeout statements. These are sent as individual SQL statements'; put '* to ensure pass-through utilisation. The update_cnt variable monitors'; put '* how many records were actually updated on the target table.'; put '*/'; put '%local update_cnt;'; put '%let update_cnt=0;'; put 'filename tmp temp;'; put 'data _null_;'; put 'set ___closeout1;'; put 'file tmp;'; put 'if _n_=1 then put ''proc sql noprint;'' ;'; put 'length string $32767.;'; put '%if &loadtype=UPDATE %then %do;'; put 'put "delete from &base_lib..&base_dsn where 1";'; put '%end;'; put '%else %do;'; put 'now=symget(''now'');'; put 'put "update &base_lib..&base_dsn set &tech_to= " now @;'; put '%if %mf_existvar(&base_lib..&base_dsn,PROCESSED_DTTM) %then %do;'; put 'put " ,PROCESSED_DTTM=" now @;'; put '%end;'; put 'put " where " now " lt &tech_to ";'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if %mf_getvartype(&base_lib..&base_dsn,&var)=C %then %do;'; put '/* use single quotes to avoid ampersand resolution in data */'; put 'string=" & &var=''"!!trim(prxchange("s/''/''''/",-1,&var))!!"''";'; put '%end;'; put '%else %do;'; put 'string=cats(" & &var=",&var);'; put '%end;'; put 'put string;'; put '%end;'; put 'put "&filter ;";'; put 'put ''%let update_cnt=%eval(&update_cnt+&sqlobs);%put update_cnt=&update_cnt;'';'; put 'run;'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%if &loadtarget ne YES %then %return;'; put '/* ensure we have a lock */'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn'; put ',ref=bitemporal_closeouts'; put ',ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'options source2;'; put '%inc tmp;'; put 'filename tmp clear;'; put '/**'; put '* Update audit tracker'; put '*/'; put '%local newobs; %let newobs=%mf_getattrn(work.___closeout1,NLOBS);'; put '%local user; %let user=%mf_getuser();'; put 'proc sql;'; put 'insert into &mpelib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&append_lib..&append_dsn contained &newobs records"'; put ',LOADTYPE="CLOSEOUT"'; put ',DELETED_RECORDS=&update_cnt'; put ',NEW_RECORDS=0'; put ',DURATION=%sysfunc(datetime())-&start'; put ',USER_NM="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%mend bitemporal_closeouts;'; put '%macro mf_getschema(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum rc schema;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=''Schema/Owner'''; put ')),i));'; put '%if (&dsid ^= 0) %then %do;'; put '%let vnum=%sysfunc(varnum(&dsid,SYSVALUE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let schema=%sysfunc(getvarc(&dsid,&vnum));'; put '%put &libref. schema is &schema.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '&schema'; put '%mend mf_getschema;'; put '/** @endcond */'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_retainedkey('; put 'base_lib=WORK'; put ',base_dsn=BASETABLE'; put ',append_lib=WORK'; put ',append_dsn=APPENDTABLE'; put ',retained_key=DEFAULT_RK'; put ',business_key= PK1 PK2'; put ',check_uniqueness=NO'; put ',maxkeytable=0'; put ',locktable=0'; put ',outds=WORK.APPEND'; put ',filter_str='; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local base_libds app_libds key_field check maxkey idx_pk newkey_cnt iserr'; put 'msg x tempds1 tempds2 comma_pk appnobs checknobs dropvar tempvar idx_val;'; put '%let base_libds=%upcase(&base_lib..&base_dsn);'; put '%let app_libds=%upcase(&append_lib..&append_dsn);'; put '%let tempds1=%mf_getuniquename();'; put '%let tempds2=%mf_getuniquename();'; put '%let comma_pk=%mf_getquotedstr(in_str=%str(&business_key),dlm=%str(,),quote=);'; put '%let outds=%sysfunc(ifc(%index(&outds,.)=0,work.&outds,&outds));'; put '/* validation checks */'; put '%let iserr=0;'; put '%if &syscc>0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(SYSCC=&syscc on macro entry);'; put '%end;'; put '%else %if %sysfunc(exist(&base_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Base LIBDS (&base_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if %sysfunc(exist(&app_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Append LIBDS (&app_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&maxkeytable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Maxkeytable (&maxkeytable) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&locktable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Locktable (&locktable) expected but NOT FOUND);'; put '%end;'; put '%else %if %length(&business_key)=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Business key (&business_key) expected but NOT FOUND);'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&business_key));'; put '/* check business key values exist */'; put '%let key_field=%scan(&business_key,&x,%str( ));'; put '%if not %mf_existvar(&app_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &app_libds!;'; put '%goto err;'; put '%end;'; put '%else %if not %mf_existvar(&base_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &base_libds!;'; put '%goto err;'; put '%end;'; put '%end;'; put '%err:'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue=(&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put 'proc sql noprint;'; put 'select sum(max(&retained_key),0) into: maxkey from &base_libds;'; put '/**'; put '* get base table RK and bus field values for lookup'; put '*/'; put 'proc sql noprint;'; put 'create table &tempds1 as'; put 'select distinct &comma_pk,&retained_key'; put 'from &base_libds &filter_str'; put 'order by &comma_pk,&retained_key;'; put '%if &check_uniqueness=YES %then %do;'; put 'select count(*) into:checknobs'; put 'from (select distinct &comma_pk from &app_libds);'; put 'select count(*) into: appnobs from &app_libds; /* might be view */'; put '%if &checknobs ne &appnobs %then %do;'; put '%let msg=Source table &app_libds is not unique on (&business_key);'; put '%let iserr=1;'; put '%end;'; put '%end;'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue= (&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put '%if %mf_existvar(&app_libds,&retained_key)'; put '%then %let dropvar=(drop=&retained_key);'; put '/* prepare interim table with retained key populated for matching keys */'; put 'proc sql noprint;'; put 'create table &tempds2 as'; put 'select b.&retained_key, a.*'; put 'from &app_libds &dropvar a'; put 'left join &tempds1 b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&business_key));'; put '%let idx_val=%scan(&business_key,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by &retained_key;'; put '/* identify the number of entries without retained keys (new records) */'; put 'select count(*) into: newkey_cnt'; put 'from &tempds2'; put 'where missing(&retained_key);'; put 'quit;'; put '/**'; put '* Update maxkey table if link provided'; put '*/'; put '%if &maxkeytable ne 0 %then %do;'; put 'proc sql noprint;'; put 'select count(*) into: check from &maxkeytable'; put 'where upcase(keytable)="&base_libds";'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with mp_retainedkey'; put ',ctl_ds=&locktable'; put ')'; put 'proc sql;'; put '%if &check=0 %then %do;'; put 'insert into &maxkeytable'; put 'set keytable="&base_libds"'; put ',keycolumn="&retained_key"'; put ',max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put 'where keytable="&base_libds";'; put '%end;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with maxkey=%eval(&maxkey+&newkey_cnt)'; put ',ctl_ds=&locktable'; put ')'; put '%end;'; put '/* fill in the missing retained key values */'; put '%let tempvar=%mf_getuniquename();'; put 'data &outds(drop=&tempvar);'; put 'retain &tempvar %eval(&maxkey+1);'; put 'set &tempds2;'; put 'if &retained_key =. then &retained_key=&tempvar;'; put '&tempvar=&tempvar+1;'; put 'run;'; put '%mend mp_retainedkey;'; put '/** @cond */'; put '%macro mp_storediffs(libds'; put ',origds'; put ',key'; put ',delds=0'; put ',appds=0'; put ',modds=0'; put ',outds=work.mp_storediffs'; put ',loadref=0'; put ',processed_dttm=0'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '/* set up unique and temporary vars */'; put '%local ds1 ds2 ds3 ds4 hashkey inds_auto inds_keep dslist vlist;'; put '%let ds1=%upcase(work.%mf_getuniquename(prefix=mpsd_ds1));'; put '%let ds2=%upcase(work.%mf_getuniquename(prefix=mpsd_ds2));'; put '%let ds3=%upcase(work.%mf_getuniquename(prefix=mpsd_ds3));'; put '%let ds4=%upcase(work.%mf_getuniquename(prefix=mpsd_ds4));'; put '%let hashkey=%upcase(%mf_getuniquename(prefix=mpsd_hashkey));'; put '%let inds_auto=%upcase(%mf_getuniquename(prefix=mpsd_inds_auto));'; put '%let inds_keep=%upcase(%mf_getuniquename(prefix=mpsd_inds_keep));'; put '%let dslist=&origds;'; put '%if &delds ne 0 %then %do;'; put '%let delds=%upcase(&delds);'; put '%if %scan(&delds,-1,.)=&delds %then %let delds=WORK.&delds;'; put '%let dslist=&dslist &delds;'; put '%end;'; put '%if &appds ne 0 %then %do;'; put '%let appds=%upcase(&appds);'; put '%if %scan(&appds,-1,.)=&appds %then %let appds=WORK.&appds;'; put '%let dslist=&dslist &appds;'; put '%end;'; put '%if &modds ne 0 %then %do;'; put '%let modds=%upcase(&modds);'; put '%if %scan(&modds,-1,.)=&modds %then %let modds=WORK.&modds;'; put '%let dslist=&dslist &modds;'; put '%end;'; put '%let origds=%upcase(&origds);'; put '%if %scan(&origds,-1,.)=&origds %then %let origds=WORK.&origds;'; put '%let key=%upcase(&key);'; put '/* hash the key and append all the tables (marking the source) */'; put 'data &ds1;'; put 'set &dslist indsname=&inds_auto;'; put '&hashkey=put(md5(catx(''|'',%mf_getquotedstr(&key,quote=N))),$hex32.);'; put '&inds_keep=upcase(&inds_auto);'; put 'proc sort;'; put 'by &inds_keep &hashkey;'; put 'run;'; put '/* transpose numeric & char vars */'; put 'proc transpose data=&ds1'; put 'out=&ds2(rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_num));'; put 'by &inds_keep &hashkey;'; put 'var _numeric_;'; put 'run;'; put 'proc transpose data=&ds1'; put 'out=&ds3('; put 'rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_char)'; put 'where=(tgtvar_nm not in ("&hashkey","&inds_keep"))'; put ');'; put 'by &inds_keep &hashkey;'; put 'var _character_;'; put 'run;'; put '%if %index(&libds,-)>0 and %scan(&libds,2,-)=FC %then %do;'; put '/* this is a format catalog - cannot query cols directly */'; put '%let vlist="FMTNAME","START","END","LABEL","MIN","MAX","DEFAULT","LENGTH"'; put ',"FUZZ","PREFIX","MULT","FILL","NOEDIT","TYPE","SEXCL","EEXCL","HLO"'; put ',"DECSEP","DIG3SEP","DATATYPE","LANGUAGE";'; put '%end;'; put '%else %let vlist=%mf_getvarlist(&libds,dlm=%str(,),quote=DOUBLE);'; put 'data &ds4;'; put 'length &inds_keep $41 tgtvar_nm $32 _label_ $256;'; put 'if _n_=1 then call missing(_label_);'; put 'drop _label_;'; put 'set &ds2 &ds3 indsname=&inds_auto;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%upcase(&vlist));'; put 'if upcase(&inds_auto)="&ds2" then tgtvar_type=''N'';'; put 'else if upcase(&inds_auto)="&ds3" then tgtvar_type=''C'';'; put 'else do;'; put 'putlog "%str(ERR)OR: unidentified vartype input!" &inds_auto;'; put 'call symputx(''syscc'',98);'; put 'end;'; put 'if &inds_keep="&appds" then move_type=''A'';'; put 'else if &inds_keep="&delds" then move_type=''D'';'; put 'else if &inds_keep="&modds" then move_type=''M'';'; put 'else if &inds_keep="&origds" then move_type=''O'';'; put 'else do;'; put 'putlog "%str(ERR)OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%else %do;'; put '/* not an actual load, so avoid updating the max key table in next step. */'; put '%let rk_update_maxkeytable=NO;'; put '%end;'; put '%if %length(&RK_UNDERLYING)>0 %then %do;'; put '%mp_retainedkey('; put 'base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=&append_lib'; put ',append_dsn=&append_dsn'; put ',retained_key=&pk'; put ',business_key=&rk_underlying'; put ',check_uniqueness=&CHECK_UNIQUENESS'; put ',outds=work.append'; put '%if &rk_update_maxkeytable=NO %then %do;'; put ',maxkeytable=0'; put '%end;'; put '%else %do;'; put ',maxkeytable=&dclib..&RK_MAXKEYTABLE'; put '%end;'; put ',locktable=&dclib..mpe_lockanytable'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',filter_str=%str( (where=( &now < &tech_to)) )'; put '%end;'; put ')'; put '%end;'; put '%else %do;'; put 'proc sql;'; put 'create view work.append as select * from &append_lib..&append_dsn;'; put '%end;'; put '/**'; put '* generate md5 for append table'; put '*/'; put '/* it is possible the source dataset has additional (unwanted) columns.'; put 'Drop if specified; */'; put '%if %length(&keepvars)>0 %then %do;'; put '/* remove tech dates from keepvars as they are generated later */'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_from ),%str( )));'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_to ),%str( )));'; put '%let keepvars=(keep=&keepvars &bus_from &bus_to &processed &md5_col);'; put '%end;'; put '/* CAS varchar types cause append issues here, so perform autoconvert'; put 'by creating empty local table first */'; put 'data;'; put 'set &base_lib..&base_dsn &drop_tx_dates_noobs;'; put 'run;'; put '%local emptybasetable; %let emptybasetable=&syslast;'; put 'data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put '/* apply formats for bitemporal vars but not tx dates which are added later */'; put '%if %length(&keepvars)>0 and &loadtype=BITEMPORAL %then %do;'; put 'format &bus_from &bus_from_fmt;'; put 'format &bus_to &bus_to_fmt;'; put '%end;'; put 'set &emptybasetable /* base table reqd in case append has fewer cols */'; put 'work.append &drop_tx_dates;'; put '%if %length(%str(&bus_from_override))>0 %then %do;'; put '&bus_from= %unquote(&bus_from_override) ;'; put '%end;'; put '%if %length(%str(&bus_to_override))>0 %then %do;'; put '&bus_to= %unquote(&bus_to_override) ;'; put '%end;'; put 'length &md5_col $32;'; put '&md5_col=put(md5(&stripcols),hex32.);'; put '%if %length(&processed)>0 %then %do;'; put 'format &processed &processed_fmt;'; put '&processed=&now;'; put '%end;'; put '/**'; put '* If a delete column exists then create the delete dataset'; put '*/'; put '%if %mf_existvar(&append_lib..&append_dsn, &delete_col) %then %do;'; put 'drop &delete_col;'; put 'if upcase(&delete_col) = "YES" then output &outds_del ;'; put 'else output work.bitemp0_append ;'; put 'run;'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=%scan(&outds_del,-1,.)'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put 'output work.bitemp0_append;'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc gt 0 at line 494)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%if %length(&close_vars)>0 %then %do;'; put '/**'; put '* need to close out records that are not provided'; put '*/'; put 'proc sql;'; put 'create table bitemp1_closevars1 as'; put 'select distinct a.%mf_getquotedstr(in_str=&pk,dlm=%str(,a.),quote=)'; put 'from &base_lib..&base_dsn a'; put 'inner join work.bitemp0_append b'; put 'on 1=1'; put '/* join on closevars key */'; put '%do idx_pk=1 %to %sysfunc(countw(&close_vars));'; put '%let idx_val=%scan(&close_vars,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* filter base on tech dates if necessary */'; put '%if &loadtype=TXTEMPORAL %then %do;'; put 'where a.&tech_from <=&now and &now < a.&tech_to'; put '%end;'; put ';'; put 'create table bitemp1_closevars2 as'; put 'select distinct a.*'; put 'from bitemp1_closevars1 a'; put 'left join work.bitemp0_append b'; put 'on 1=1'; put '/* join on primary key */'; put '%do idx_pk=1 %to %sysfunc(countw(&pk));'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* identify removed records by null value in a field in PK but not close_vars'; put '*/'; put 'where b.%scan('; put '%mf_wordsInStr1ButNotStr2(Str1=&pk,Str2=&close_vars),1,%str( )'; put ') IS NULL'; put ';'; put '%if %mf_getattrn(bitemp1_closevars2,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=bitemp1_closevars2'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '/* return if nothing to load (was just deletes) */'; put '%if %mf_getattrn(work.bitemp0_append,NLOBS)=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- No updates - just deletes!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&base_lib,ds=&base_dsn,'; put 'ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%let user=%mf_getUser();'; put '/* no emails yet'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);*/'; put '%end;'; put '%return;'; put '%end;'; put '/**'; put '* If applying manual overrides to business dates, then the input table MUST'; put '* be unique on the PK. Check, and if not - abort.'; put '*/'; put '%local msg;'; put '%if %length(&bus_from_override.&bus_to_override)>0 or &CHECK_UNIQUENESS=YES'; put '%then %do;'; put 'proc sort data=work.bitemp0_append out=work.bitemp0_check nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.bitemp0_check,NLOBS)'; put 'ne %mf_getattrn(work.bitemp0_append,NLOBS)'; put '%then %do;'; put '%let msg=INPUT table &append_lib..&append_dsn is not unique on PK (&pk);'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%put syscc=&syscc;'; put '%if &syscc>0 %then %do;'; put '%let msg=Bitemporal transform / job aborted due to SYSCC=&SYSCC status;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg);'; put '%end;'; put '/* final check - abort if a lock has appeared on the target table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%goto end_of_macro;'; put '%end;'; put '/* perform join inside query as per'; put 'http://stackoverflow.com/questions/24629793/update-with-a-proc-sql */'; put 'exists( select 1 from &baselib_schema.&innertable where'; put '/* loop PK join */'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put '&base_dsn..&idx_val=&innertable..&idx_val and'; put '%end;'; put '%if &loadtype=BITEMPORAL %then %do;'; put '&base_dsn..&bus_from >= &innertable..&bus_from'; put 'and &base_dsn..&bus_to <= &innertable..&bus_to and'; put '%end;'; put '/* close the statement */'; put '1=1);'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put ') by myAlias;'; put 'execute (drop table &baselib_schema.&innertable) by myAlias;'; put '%end;'; put '%end;'; put 'quit;'; put 'data _null_;'; put 'putlog "&sysmacroname: Closeout complete";'; put 'run;'; put '/**'; put '* Append the new / updated records'; put '*/'; put '%if &engine_type=CAS %then %do;'; put '/* get varchar variables ready for casting */'; put '%local vcfmt vcrename vcassign vcdrop;'; put 'data _null_;'; put 'set work.bitemp_cols(where=(type=6)) end=last;'; put 'length vcrename vcassign vcdrop vcfmt $32767 rancol $32;'; put 'retain vcrename vcassign vcdrop vcfmt;'; put 'if _n_=1 then vcrename=''(rename=('';'; put 'rancol=resolve(''%mf_getuniquename()'');'; put 'vcfmt=trim(vcfmt)!!''length ''!!cats(name)!!'' varchar(*);'';'; put 'vcrename=trim(vcrename)!!'' ''!!cats(name,''='',rancol);'; put 'vcassign=cats(vcassign,name,''='',rancol,'';'');'; put 'vcdrop=cats(vcdrop,''drop ''!!rancol,'';'');'; put 'if last then do;'; put 'vcrename=cats(vcrename,''))'');'; put 'call symputx(''vcfmt'',vcfmt);'; put 'call symputx(''vcrename'',vcrename);'; put 'call symputx(''vcassign'',vcassign);'; put 'call symputx(''vcdrop'',vcdrop);'; put 'end;'; put 'run;'; put '/* prepare a temp cas table with varchars casted */'; put '%let tmp=%mf_getuniquename();'; put 'data casuser.&tmp ;'; put '&vcfmt'; put 'set work.bitemp6_unique &vcrename;'; put '&vcassign'; put '&vcdrop'; put 'run;'; put '/* load the table with varchars applied*/'; put 'data &base_lib..&base_dsn (append=yes )/sessref=dcsession ;'; put 'set casuser.&tmp;'; put 'run;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&tmp;'; put '/* this code will not work as regular tables do not have varchars */'; put '/*'; put 'proc casutil;'; put 'load data=work.bitemp6_unique'; put 'outcaslib="&base_lib" casout="&base_dsn" append ;'; put 'quit;'; put '*/'; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put 'proc append base=&base_lib..&base_dsn'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=bitemp6_unique force nowarn;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&base_lib..&base_dsn data=bitemp6_unique force nowarn; run;'; put '%end;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '/* final check on syscc */'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=&_program'; put ',msg=%str(!!Upload NOT successful!! Failed on actual update / append stage..)'; put ')'; put '%if &outds_audit ne 0 and &LOADTARGET=YES %then %do;'; put 'data work.vw_outds_orig /view=work.vw_outds_orig;'; put 'set work.bitemp0_base (drop=&md5_col);'; put 'where ___TMP___NEW_FLG=0;'; put 'drop ___TMP___NEW_FLG;'; put 'run;'; put '/* update the AUDIT table */'; put '%if %mf_existds(&outds_audit) %then %do;'; put 'options mprint;'; put '%mp_storediffs(&base_lib..&base_dsn'; put ',work.vw_outds_orig'; put ',&pk'; put ',delds=&outds_del'; put ',modds=&outds_mod'; put ',appds=&outds_add'; put ',outds=work.mp_storediffs'; put ',processed_dttm=&now'; put ',loadref=%superq(etlsource)'; put ')'; put 'data _null_;'; put 'set work.mp_storediffs;'; put 'putlog load_ref= libref= dsn= key_hash= tgtvar_nm=;'; put 'run;'; put 'proc append base=&outds_audit data=work.mp_storediffs;'; put 'run;'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Problem in audit stage (&outds_audit))'; put ')'; put '%let user=%mf_getUser();'; put '/**'; put 'Notify as appropriate EMAILS DISABLED'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);'; put '*/'; put '/* monitor BiTemporal usage */'; put '%if &log=1 %then %do;'; put '%put syscc=&syscc;'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'insert into &dclib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&ETLSOURCE"'; put ',LOADTYPE="&loadtype"'; put ',CHANGED_RECORDS=%mf_getattrn(&lastds,NLOBS)'; put ',NEW_RECORDS=%mf_getattrn(&outds_add,NLOBS)'; put ',DELETED_RECORDS=%mf_getattrn(&outds_del,NLOBS)'; put ',DURATION=&dur'; put ',MAC_VER="v&ver"'; put ',user_nm="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%put syscc=&syscc;'; put '%end;'; put '%end_of_macro:'; put '%mend bitemporal_dataloader;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '%macro mpe_refreshlibs();'; put '%dc_getlibs(outds=work.mm_getLibs)'; put 'proc sort data=mm_getlibs;'; put 'by libraryref libraryname;'; put 'run;'; put 'data libs0;'; put 'set mm_getlibs;'; put 'by libraryref;'; put 'if "%mf_getplatform()"="SASMETA" then do;'; put '/* note - invalid libraries can result in exception errors. If this happens,'; put 'configure the dc_viewlib_check variable to NO in Data Controller Settings */'; put 'rc=libname(libraryref,,''meta'',cats(''library="'',libraryname,''";''));'; put 'drop rc;'; put 'if rc ne 0 then do;'; put 'putlog "NOTE: Library " libraryname " does not exist!!";'; put 'putlog (_all_) (=);'; put 'delete;'; put 'end;'; put 'end;'; put 'if not first.libraryref then delete;'; put 'run;'; put 'proc sql;'; put 'create table libs1 as'; put 'select distinct libname'; put ',engine'; put ',path'; put ',level'; put ',sysname'; put ',sysvalue'; put 'from dictionary.libnames'; put 'order by libname, level,engine,path;'; put 'data libs2;'; put 'set libs1;'; put 'length tran $1024;'; put 'if missing(sysname) then sysname=''Missing'';'; put 'select(sysname);'; put 'when(''Access Permission'') tran=''Permissions'';'; put 'when(''Owner Name'') tran=''Owner'';'; put 'when(''Schema/Owner'') tran=''schema'';'; put 'otherwise tran=sysname;'; put 'end;'; put 'run;'; put 'proc transpose data=libs2 out=libs3;'; put 'by libname level engine path;'; put 'var sysvalue;'; put 'id tran;'; put 'run;'; put 'data libs4(rename=(libname=libref));'; put 'length paths $8192 perms owners schemas $500 permissions owner schema $1024;'; put 'if _n_=1 then call missing (of _all_);'; put 'set libs3;'; put 'by libname;'; put 'if engine=''V9'' then engine=''BASE'';'; put 'if first.libname then do;'; put 'retain paths perms owners schemas;'; put 'paths=''(''!!quote(trim(path));'; put 'perms=permissions;'; put 'owners=owner;'; put 'schemas=schema;'; put 'end;'; put 'else do;'; put 'paths=trim(paths)!!'' ''!!quote(trim(path));'; put 'perms=trim(perms)!!'',''!!trim(permissions);'; put 'owners=trim(owners)!!'',''!!trim(owner);'; put 'schemas=trim(schemas)!!'' ''!!trim(schema);'; put 'end;'; put 'if last.libname then do;'; put 'paths=trim(paths)!!'')'';'; put 'schemas=cats(schemas);'; put 'output;'; put 'end;'; put 'keep libname engine paths perms owners schemas;'; put 'run;'; put 'proc sql;'; put 'create table libs5 as'; put 'select a.libref'; put ',coalescec(b.engine,a.engine) as engine length=32'; put ',b.libraryname as libname'; put ',a.paths'; put ',a.perms'; put ',a.owners'; put ',a.schemas'; put ',b.libraryid as libid'; put 'from libs4 a'; put 'left join libs0 b'; put 'on upcase(a.libref)=upcase(b.libraryref)'; put 'where libref not in (''SASWORK'',''WORK'',''SASUSER'',''CASUSER'',''TEMP'',''STPSAMP'''; put ',''MAPSGFK'');'; put '%bitemporal_dataloader(base_lib=&dc_libref'; put ',base_dsn=MPE_DATACATALOG_LIBS'; put ',append_dsn=libs5'; put ',PK=LIBREF'; put ',etlsource=&_program'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&dc_libref'; put ')'; put '%mend mpe_refreshlibs;'; put '/** @cond */'; put '%macro mf_existfeature(feature'; put ')/*/STORE SOURCE*/;'; put '%let feature=%upcase(&feature);'; put '%local platform;'; put '%let platform=%mf_getplatform();'; put '%if &feature= %then %do;'; put '%put No feature was requested for detection;'; put '%end;'; put '%else %if &feature=COLCONSTRAINTS %then %do;'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=PROCLUA %then %do;'; put '/* https://blogs.sas.com/content/sasdummy/2015/08/03/using-lua-within-your-sas-programs */'; put '%if &platform=SASVIYA %then 1;'; put '%else %if "&sysver"="9.2" or "&sysver"="9.3" %then 0;'; put '%else %if "&SYSVLONG" < "9.04.01M3" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=DBMS_MEMTYPE %then %do;'; put '/* does dbms_memtype exist in dictionary.tables? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=EXPORTXLS %then %do;'; put '/* is it possible to PROC EXPORT an excel file? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 1;'; put '%else %if %sysfunc(sysprod(SAS/ACCESS Interface to PC Files)) = 1 %then 1;'; put '%else 0;'; put '%end;'; put '%else %do;'; put '-1'; put '%put &sysmacroname: &feature not found;'; put '%end;'; put '%mend mf_existfeature;'; put '/** @endcond */'; put '%macro mp_getconstraints(lib=WORK'; put ',ds='; put ',outds=mp_getconstraints'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '/**'; put '* Cater for environments where sashelp.vcncolu is not available'; put '*/'; put '%if %sysfunc(exist(sashelp.vcncolu,view))=0 %then %do;'; put 'proc sql;'; put 'create table &outds('; put 'libref char(8)'; put ',TABLE_NAME char(32)'; put ',constraint_type char(8) label=''Constraint Type'''; put ',constraint_name char(32) label=''Constraint Name'''; put ',column_name char(32) label=''Column'''; put ',constraint_order num'; put ');'; put '%return;'; put '%end;'; put '/**'; put '* Neither dictionary tables nor sashelp provides a constraint order column,'; put '* however they DO arrive in the correct order. So, create the col.'; put '**/'; put '%local vw;'; put '%let vw=%mf_getuniquename(prefix=mp_getconstraints_vw_);'; put 'data &vw /view=&vw;'; put 'set sashelp.vcncolu;'; put 'where table_catalog="&lib";'; put '/* use retain approach to reset the constraint order with each constraint */'; put 'length tmp $1000;'; put 'retain tmp;'; put 'drop tmp;'; put 'if tmp ne catx(''|'',table_catalog,table_name,constraint_name) then do;'; put 'constraint_order=1;'; put 'end;'; put 'else constraint_order+1;'; put 'tmp=catx(''|'',table_catalog, table_name,constraint_name);'; put 'run;'; put '/* must use SQL as proc datasets does not support length changes */'; put 'proc sql noprint;'; put 'create table &outds as'; put 'select upcase(a.TABLE_CATALOG) as libref'; put ',upcase(a.TABLE_NAME) as TABLE_NAME'; put ',a.constraint_type'; put ',a.constraint_name'; put ',b.column_name'; put ',b.constraint_order'; put 'from dictionary.TABLE_CONSTRAINTS a'; put 'left join &vw b'; put 'on upcase(a.TABLE_CATALOG)=upcase(b.TABLE_CATALOG)'; put 'and upcase(a.TABLE_NAME)=upcase(b.TABLE_NAME)'; put 'and a.constraint_name=b.constraint_name'; put '/**'; put '* We cannot apply this clause to the underlying dictionary table. See:'; put '* https://communities.sas.com/t5/SAS-Programming/Unexpected-Where-Clause-behaviour-in-dictionary-TABLE/m-p/771554#M244867'; put '* cannot use`where calculated libref="&lib"` either as it will STILL execute'; put '* all the underlying constraint queries, causing exception errors in some'; put '* cases: https://github.com/sasjs/core/issues/283'; put '*/'; put 'where a.TABLE_CATALOG="&lib"'; put '%if "&ds" ne "" %then %do;'; put 'and upcase(a.TABLE_NAME)="&ds"'; put 'and upcase(b.TABLE_NAME)="&ds"'; put '%end;'; put 'order by libref, table_name, constraint_name, constraint_order'; put ';'; put '/* tidy up */'; put '%mp_dropmembers('; put '&vw,'; put 'iftrue=(&mdebug=0)'; put ')'; put '%mend mp_getconstraints;'; put '%macro mpe_refreshtables(lib,ds=#all);'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%local engine; %let engine=%mf_getengine(&lib);'; put '%local schema; %let schema=%mf_getschema(&lib);'; put '%put running &sysmacroname &lib(&engine &schema) for &ds;'; put 'proc sql;'; put 'create table cols as'; put 'select libname as libref'; put ',upcase(memname) as dsn'; put ',memtype'; put ',upcase(name) as name'; put ',type'; put ',length'; put ',varnum'; put ',label'; put ',format'; put ',idxusage'; put ',notnull'; put 'from dictionary.columns'; put 'where upcase(libname)="&lib"'; put '%if &ds ne #ALL %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put ';'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc afer &lib cols extraction)'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc afer &lib indexes extraction)'; put ')'; put '%if &engine=SQLSVR %then %do;'; put 'proc sql;'; put 'connect using &lib;'; put 'create table work.indexes as'; put 'select * from connection to &lib('; put 'select'; put 's.name as SchemaName,'; put 't.name as memname,'; put 'tc.name as name,'; put 'ic.key_ordinal as KeyOrderNr'; put 'from'; put 'sys.schemas s'; put 'inner join sys.tables t on s.schema_id=t.schema_id'; put 'inner join sys.indexes i on t.object_id=i.object_id'; put 'inner join sys.index_columns ic on i.object_id=ic.object_id'; put 'and i.index_id=ic.index_id'; put 'inner join sys.columns tc on ic.object_id=tc.object_id'; put 'and ic.column_id=tc.column_id'; put 'where i.is_primary_key=1'; put 'and s.name=%str(%'')&schema%str(%'')'; put 'order by t.name, ic.key_ordinal ;'; put ');disconnect from &lib;'; put 'create table finalcols as'; put 'select a.*'; put ',case when b.name is not null then 1 else 0 end as pk_ind'; put 'from work.cols a'; put 'left join work.indexes b'; put 'on a.dsn=b.memname'; put 'and upcase(a.name)=upcase(b.name)'; put 'order by libref,dsn;'; put '%end;'; put '%else %do;'; put '%local dsn;'; put '%if &ds = #ALL %then %let dsn=;'; put '%mp_getconstraints(lib=&lib.,ds=&dsn,outds=work.constraints)'; put '/* extract cols that are clearly primary keys */'; put 'proc sql;'; put 'create table work.pk4sure as'; put 'select libref'; put ',table_name'; put ',constraint_name'; put ',constraint_order'; put ',column_name as name'; put 'from work.constraints'; put 'where constraint_type=''PRIMARY'''; put 'order by 1,2,3,4;'; put '/* extract unique constraints where every col is also NOT NULL */'; put 'proc sql;'; put 'create table work.sum as'; put 'select a.libref'; put ',a.table_name'; put ',a.constraint_name'; put ',count(a.column_name) as unq_cnt'; put ',count(b.column_name) as nul_cnt'; put 'from work.constraints(where=(constraint_type =''UNIQUE'')) a'; put 'left join work.constraints(where=(constraint_type =''NOT NULL'')) b'; put 'on a.libref=b.libref'; put 'and a.table_name=b.table_name'; put 'and a.column_name=b.column_name'; put 'group by 1,2,3'; put 'having unq_cnt=nul_cnt;'; put '/* extract cols from the relevant unique constraints */'; put 'create table work.pkdefault as'; put 'select a.libref'; put ',a.table_name'; put ',a.constraint_name'; put ',b.constraint_order'; put ',b.column_name as name'; put 'from work.sum a'; put 'left join work.constraints(where=(constraint_type =''UNIQUE'')) b'; put 'on a.libref=b.libref'; put 'and a.table_name=b.table_name'; put 'and a.constraint_name=b.constraint_name'; put 'order by 1,2,3,4;'; put '/* extract cols from the relevant unique INDEXES */'; put 'create table work.pkfromindex as'; put 'select libname as libref'; put ',memname as table_name'; put ',indxname as constraint_name'; put ',indxpos as constraint_order'; put ',name'; put 'from dictionary.indexes'; put 'where nomiss=''yes'' and unique=''yes'' and upcase(libname)="&lib"'; put '%if &ds ne #ALL %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put 'order by 1,2,3,4;'; put '/* create one table */'; put 'data work.finalpks;'; put 'set pkdefault pk4sure pkfromindex;'; put 'pk_ind=1;'; put '/* if there are multiple unique constraints, take the first */'; put 'by libref table_name constraint_name;'; put 'retain keepme;'; put 'if first.table_name then keepme=1;'; put 'if first.constraint_name and not first.table_name then keepme=0;'; put 'if keepme=1;'; put 'run;'; put '/* join back to starting table */'; put 'proc sql;'; put 'create table finalcols as'; put 'select a.*'; put ',b.constraint_order'; put ',case when b.pk_ind=1 then 1 else 0 end as pk_ind'; put 'from work.cols a'; put 'left join work.finalpks b'; put 'on a.libref=b.libref'; put 'and a.dsn=b.table_name'; put 'and upcase(a.name)=upcase(b.name)'; put 'order by libref,dsn,constraint_order;'; put '%end;'; put '/* load columns */'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datacatalog_vars'; put ',append_dsn=finalcols'; put ',PK=LIBREF DSN NAME'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put '%if &ds ne #ALL %then %do;'; put ',close_vars=LIBREF DSN'; put '%end;'; put ',dclib=&mpelib'; put ')'; put '/* prepare tables */'; put 'proc sql;'; put 'create table work.tabs as select'; put 'libname as libref'; put ',upcase(memname) as dsn'; put ',memtype'; put '%if %mf_existfeature(DBMS_MEMTYPE)=1 %then %do;'; put ',dbms_memtype'; put '%end;'; put '%else %do;'; put ',''n/a'' as dbms_memtype format=$32.'; put '%end;'; put ',typemem'; put ',memlabel'; put ',nvar'; put ',compress'; put 'from dictionary.tables'; put 'where upcase(libname)="&lib"'; put '%if &ds ne #ALL %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put ';'; put 'data tabs2;'; put 'set finalcols;'; put 'length pk_fields $512;'; put 'retain pk_fields;'; put 'by libref dsn;'; put 'if first.dsn then pk_fields='''';'; put 'if pk_ind=1 then pk_fields=catx('' '',pk_fields,name);'; put 'if last.dsn then output;'; put 'run;'; put 'proc sql;'; put 'create table work.finaltabs as'; put 'select a.libref'; put ',a.dsn'; put ',a.memtype'; put ',a.dbms_memtype'; put ',a.typemem'; put ',a.memlabel'; put ',a.nvar'; put ',a.compress'; put ',b.pk_fields'; put 'from work.tabs a'; put 'left join work.tabs2 b'; put 'on a.libref=b.libref'; put 'and a.dsn=b.dsn;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datacatalog_tabs'; put ',append_dsn=finaltabs'; put ',PK=LIBREF DSN'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&mpelib'; put '%if &ds ne #ALL %then %do;'; put ',close_vars=LIBREF'; put '%end;'; put ')'; put '/* prepare table frequently changing attributes */'; put 'proc sql;'; put '%if &engine=SQLSVR %then %do;'; put 'connect using &lib;'; put 'create table work.attrs as select * from connection to &lib('; put 'SELECT SCHEMA_NAME(schema_id) as ''schema'', name, create_date, modify_date'; put 'FROM sys.tables ;'; put ');'; put 'create table work.nobs as select * from connection to &lib('; put 'SELECT SCHEMA_NAME(A.schema_id) AS ''schema'''; put ',A.Name, AVG(B.rows) AS ''RowCount'''; put 'FROM sys.objects A'; put 'INNER JOIN sys.partitions B ON A.object_id = B.object_id'; put 'WHERE A.type = ''U'''; put 'GROUP BY A.schema_id, A.Name'; put ');'; put 'disconnect from &lib;'; put 'create table statustabs as select'; put 'a.libref'; put ',a.dsn'; put ',b.create_date as crdate'; put ',b.modify_date as modate'; put ',. as filesize'; put ',c.RowCount as nobs'; put 'from work.tabs a'; put 'left join work.attrs(where=(schema="&schema")) b'; put 'on upcase(a.dsn)=upcase(b.name)'; put 'left join work.nobs(where=(schema="&schema")) c'; put 'on upcase(a.dsn)=upcase(c.name);'; put '%end;'; put '%else %do;'; put 'create table statustabs as select'; put 'libname as libref'; put ',upcase(memname) as dsn'; put ',crdate'; put ',modate'; put ',filesize'; put ',nobs'; put 'from dictionary.tables'; put 'where upcase(libname)="&lib"'; put '%if &ds ne #ALL %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put ';'; put '%end;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datastatus_tabs'; put ',append_dsn=statustabs'; put ',PK=LIBREF DSN'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&mpelib'; put '%if &ds ne #ALL %then %do;'; put ',close_vars=LIBREF'; put '%end;'; put ')'; put '%if &ds = #ALL %then %do;'; put 'proc sql;'; put 'create table statuslibs as select'; put 'libref'; put ',sum(filesize) as libsize'; put ',count(*) as table_cnt'; put 'from statustabs'; put 'group by 1;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datastatus_libs'; put ',append_dsn=statuslibs'; put ',PK=LIBREF'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&mpelib'; put ')'; put '%end;'; put '%mend mpe_refreshtables;'; put '%macro dc_refreshcatalog(libref);'; put '/* take current repository */'; put '%local repo repocnt xx;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'put (_all_)(=);'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'');'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put &sysmacroname #&libref#;'; put '%if #&libref# ne ## %then %do;'; put '%put &sysmacroname: assigning specific libref, &libref;'; put '%dc_assignlib(WRITE,&libref) /* write just in order to assign direct lib */'; put '%mpe_refreshlibs()'; put '%mpe_refreshtables(&libref)'; put '%end;'; put '%else %do xx=1 %to &repocnt;'; put 'options metarepository=&&repo&xx;'; put '%mpe_refreshlibs()'; put '/* get libs to be ignored */'; put '%local ignorelist;'; put 'proc sql noprint;'; put 'select var_value into: ignorelist'; put 'from &mpelib..MPE_CONFIG'; put 'where var_scope=''DC_CATALOG'''; put 'and var_name="DC_IGNORELIBS"'; put 'and &dc_dttmtfmt. < TX_TO'; put 'and var_active=1;'; put '/* get all libs */'; put '%let libcnt=0;'; put 'data libraries;'; put 'set &mpelib..mpe_datacatalog_libs;'; put 'where &dc_dttmtfmt. le TX_TO;'; put 'if index("&ignorelist",''|''!!upcase(trim(libref))!!''|'')=0;'; put 'i+1;'; put 'call symputx(cats(''lib'',i),libref);'; put 'call symputx(''libcnt'',i);'; put 'run;'; put '%local i;'; put '%do i=1 %to &libcnt;'; put '%dc_assignlib(WRITE,&&lib&i)'; put '%mpe_refreshtables(&&lib&i)'; put '%end;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_refreshcatalog;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file refreshlibinfo.sas'; put '@brief Refresh the Data Catalog for a particular library'; put '@details When showing library info in the VIEW menu, the data is taken from'; put 'the Data Catalog tables. These may be empty or outdated, and so this service'; put 'allows end users to run a refresh of the data.'; put '

Service Inputs

'; put '
lib2refresh
'; put 'Should contain the libref to be refreshed.'; put '|libref:$8.|'; put '|---|'; put '|SOMELIB|'; put '

Service Outputs

'; put '
libinfo
'; put '|engine $|libname $|paths $|perms $|owners $|schemas $ |libid $|libsize $|table_cnt |'; put '|---|---|---|---|---|---|---|---|---|'; put '|V9|SOMELIB|"some/path"|rwxrwxr-x|sassrv|` `|` `|636MB|33|'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li dc_refreshcatalog.sas'; put '@li mp_abort.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%webout(FETCH)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',msg=%str(syscc=&syscc Problem on startup)'; put ')'; put '%let libref=;'; put 'data _null_;'; put 'set work.lib2refresh;'; put 'call symputx(''libref'',libref);'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',msg=%str(syscc=&syscc Problem with inputs - was lib2refresh object sent?)'; put ')'; put '%dc_assignlib(WRITE,&libref)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',msg=%str(syscc=&syscc after lib assignment)'; put ')'; put '%dc_refreshcatalog(&libref)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',msg=%str(syscc=&syscc Problem when running the catalog refresh)'; put ')'; put '/* get libinfo */'; put 'proc sql;'; put 'create table work.libinfo as'; put 'select a.engine,'; put 'a.libname,'; put 'a.paths,'; put 'a.perms,'; put 'a.owners,'; put 'a.schemas,'; put 'a.libid,'; put 'b.libsize,'; put 'b.table_cnt'; put 'from &mpelib..mpe_datacatalog_libs(where=(&dc_dttmtfmt. lt tx_to)) a'; put 'inner join &mpelib..mpe_datastatus_libs(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on a.libref=b.libref'; put 'where a.libref="&libref";'; put '%webout(OPEN)'; put '%webout(OBJ,libinfo)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=registeruser; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file registeruser.sas'; put '@brief Registers a new user in Data Controller'; put '@details New users are logged after accepting EULA terms.'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mp_abort.sas'; put '@li mpeinit.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%let userid=%mf_getuser();'; put '/* confirm the user is not registered */'; put '%let isRegistered=0;'; put 'proc sql noprint;'; put 'select count(*) into: isregistered'; put 'from &mpelib..mpe_users'; put 'where user_id="&userid";'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem accessing &mpelib..mpe_users table)'; put ')'; put '%mp_abort(iftrue= (&isregistered > 0)'; put ',mac=&_program..sas'; put ',msg=%str(User &userid is already registered on &mpelib..mpe_users!)'; put ')'; put 'data work.append;'; put 'if 0 then set &mpelib..mpe_users;'; put 'user_id=symget(''userid'');'; put 'registered_dt=today();'; put 'last_seen_dt=today();'; put 'run;'; put 'proc append base=&mpelib..mpe_users data=work.append;'; put '%let isRegistered=0;'; put 'proc sql noprint;'; put 'select count(*) into: isregistered'; put 'from &mpelib..mpe_users'; put 'where user_id="&userid";'; put '%mp_abort(iftrue= (&syscc ne 0 or &isregistered ne 1)'; put ',mac=&_program..sas'; put ',msg=%str(Problem appending to &mpelib..mpe_users table)'; put ')'; put 'data work.return;'; put 'msg=''SUCCESS'';'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,return)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=startupservice; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file startupservice.sas'; put '@brief List the libraries and tables the mp-editor user can access'; put '@details If user is in a control group (&mpeadmins, configured in mpeinit.sas)'; put 'then they have access to all libraries / tables. Otherwise a join is made'; put 'to the &mpelib..mp_editor_access table.'; put 'This service is also callable from EUCs - just add EUCDLM= parameter.'; put 'EUCDLM values: TAB or CSV'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mpe_getgroups.sas'; put '@li mp_abort.sas'; put '@li mpeinit.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Issue on startup in startupService)'; put ')'; put '%let userid=%mf_getuser();'; put '%put userid is &userid;'; put '%mpe_getgroups(user=&userid,outds=groups)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Issue with Groups syscc=&syscc for user &userid)'; put ')'; put '/* check if user is registered or not */'; put '%let isRegistered=0;'; put 'proc sql noprint;'; put 'select count(*) into: isregistered'; put 'from &mpelib..mpe_users'; put 'where user_id="&userid";'; put '/* get number of registered users */'; put '%let registerCount=0;'; put 'select count(*) into: registercount'; put 'from &mpelib..mpe_users'; put 'where last_seen_dt>%sysfunc(today())-365;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem accessing &mpelib..mpe_users table)'; put ')'; put '%global dc_restrict_editrecord;'; put 'data work.globvars;'; put 'dclib="&mpelib";'; put 'sas9lineage_enabled=1;'; put 'isregistered=&isregistered;'; put 'registercount=®isterCount;'; put 'dc_admin_group="&mpeadmins";'; put '/* fetched from mpe_config in dc_getsettings */'; put 'licence_key="&dc_licence_key";'; put 'activation_key="&dc_activation_key";'; put 'dc_restrict_editrecord="&dc_restrict_editrecord";'; put 'run;'; put '%macro mstp_mpeditorstartup();'; put 'data _null_;'; put 'putlog "entering &sysmacroname";'; put 'run;'; put 'proc sql noprint;'; put '/* update last seen, if seen */'; put '%if &isregistered>0 %then %do;'; put 'update &mpelib..mpe_users'; put 'set last_seen_dt=%sysfunc(today())'; put 'where user_id="&userid";'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem updating &mpelib..mpe_users table)'; put ')'; put '%local admin_check all_cnt;'; put 'select count(*) into: admin_check'; put 'from groups'; put 'where groupname="&mpeadmins";'; put 'select count(*) into: all_cnt'; put 'from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and ACCESS_LEVEL in (''EDIT'')'; put 'and libref=''*ALL*'''; put 'and SAS_GROUP in (select groupname from groups);'; put '%if &admin_check >0 or &all_cnt>0 %then %do;'; put 'create table sasDatasets as'; put 'select distinct libref, dsn'; put 'from &mpelib..mpe_tables'; put 'where &dc_dttmtfmt. lt tx_to'; put 'order by 1;'; put '%end;'; put '%else %do;'; put 'create table sasDatasets as'; put 'select distinct a.libref,a.dsn'; put 'from &mpelib..mpe_tables a'; put 'left join &mpelib..mpe_security b'; put 'on a.libref=b.libref'; put 'and a.dsn=b.dsn'; put 'where &dc_dttmtfmt. lt a.tx_to'; put 'and &dc_dttmtfmt. lt b.tx_to'; put 'and b.ACCESS_LEVEL in (''EDIT'')'; put 'and b.SAS_GROUP in (select groupname from groups)'; put 'order by 1;'; put '%end;'; put '%mend mstp_mpeditorstartup;'; put '%mstp_mpeditorstartup()'; put 'create table saslibs as'; put 'select distinct libref'; put 'from &syslast;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(issue with security validation)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,sasDatasets)'; put '%webout(OBJ,saslibs)'; put '%webout(OBJ,globvars)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=validatefilter; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro removecolsfromwork(col);'; put '/* only an issue if debug mode enabled */'; put '%global _debug;'; put '%if &_debug ge 131 %then %do;'; put '%let col=%upcase(&col);'; put '%local memlist;'; put 'proc sql noprint;'; put 'select distinct memname into: memlist'; put 'separated by '' '''; put 'from dictionary.columns'; put 'where libname=''WORK'' and upcase(name)="&col";'; put '%if %mf_isblank(&memlist) %then %return;'; put '%mp_dropmembers(list=&memlist)'; put '%end;'; put '%mend removecolsfromwork;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvalue(libds,variable,filter=1'; put ')/*/STORE SOURCE*/;'; put '%if %mf_getattrn(&libds,NLOBS)>0 %then %do;'; put '%local dsid rc &variable;'; put '%let dsid=%sysfunc(open(&libds(where=(&filter))));'; put '%syscall set(dsid);'; put '%let rc = %sysfunc(fetch(&dsid));'; put '%let rc = %sysfunc(close(&dsid));'; put '%trim(&&&variable)'; put '%end;'; put '%mend mf_getvalue;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'FMTNAME char(32) label=''Format name'''; put '/*'; put 'to accommodate larger START values, mp_loadformat.sas will need the'; put 'SQL dependency removed (proc sql needs to accommodate 3 index values in'; put 'a 32767 ibufsize limit)'; put '*/'; put ',START char(10000) label=''Starting value for format'''; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',TYPE char(1) label=''Type of format'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%mend mddl_sas_cntlout;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_islibds(libds'; put ')/*/STORE SOURCE*/;'; put '%local regex;'; put '%let regex=%sysfunc(prxparse(%str(/^[_a-z]\w{0,7}\.[_a-z]\w{0,31}$/i)));'; put '%sysfunc(prxmatch(®ex,&libds))'; put '%mend mf_islibds;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mp_filtergenerate(inds,outref=filter);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put 'filename &outref temp;'; put '%if %mf_nobs(&inds)=0 %then %do;'; put '/* ensure we have a default filter */'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc sort data=&inds;'; put 'by SUBGROUP_ID;'; put 'run;'; put 'data _null_;'; put 'file &outref lrecl=32800;'; put 'set &inds end=last;'; put 'by SUBGROUP_ID;'; put 'if _n_=1 then put ''(('';'; put 'else if first.SUBGROUP_ID then put +1 GROUP_LOGIC ''('';'; put 'else put +2 SUBGROUP_LOGIC;'; put 'put +4 VARIABLE_NM OPERATOR_NM RAW_VALUE;'; put 'if last.SUBGROUP_ID then put '')''@;'; put 'if last then put '')'';'; put 'run;'; put '%end;'; put '%mend mp_filtergenerate;'; put '%macro mp_filtervalidate(inref,targetds,abort=YES,outds=work.mp_filtervalidate);'; put '%mp_abort(iftrue= (&syscc ne 0 or &syserr ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc / syserr=&syserr - on macro entry)'; put ')'; put '%local fref1;'; put '%let fref1=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &fref1;'; put 'infile &inref end=eof;'; put 'if _n_=1 then do;'; put 'put "proc sql;";'; put 'put "validate select * from &targetds";'; put 'put "where " ;'; put 'end;'; put 'input;'; put 'put _infile_;'; put 'putlog _infile_;'; put 'if eof then put ";quit;";'; put 'run;'; put '%inc &fref1;'; put 'data &outds;'; put 'if &sqlrc or &syscc or &syserr then do;'; put 'REASON_CD=''VALIDATION_ERR''!!''OR: ''!!'; put 'coalescec(symget(''SYSERRORTEXT''),symget(''SYSWARNINGTEXT''));'; put 'output;'; put 'end;'; put 'else stop;'; put 'run;'; put 'filename &fref1 clear;'; put '%if %mf_nobs(&outds)>0 %then %do;'; put '%if &abort=YES %then %do;'; put 'data _null_;'; put 'set &outds;'; put 'call symputx(''REASON_CD'',reason_cd,''l'');'; put 'stop;'; put 'run;'; put '%mp_abort('; put 'mac=&sysmacroname,'; put 'msg=%str(Filter validation issues.)'; put ')'; put '%end;'; put '%let syscc=1008;'; put '%end;'; put '%mend mp_filtervalidate;'; put '%macro mp_filtercheck(inds,targetds=,outds=work.badrecords,abort=YES);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put '/* Validate input column */'; put '%local vtype;'; put '%let vtype=%mf_getvartype(&inds,RAW_VALUE);'; put '%mp_abort(iftrue=(&abort=YES and &vtype ne C),'; put 'mac=&sysmacroname,'; put 'msg=%str(%str(ERR)OR: RAW_VALUE must be character)'; put ')'; put '%if &vtype ne C %then %do;'; put '%put &sysmacroname: RAW_VALUE must be character;'; put '%let syscc=42;'; put '%return;'; put '%end;'; put '/**'; put '* Sanitise the values based on valid value lists, then strip out'; put '* quotes, commas, periods and spaces.'; put '* Only numeric values should remain'; put '*/'; put '%local reason_cd nobs;'; put '%let nobs=0;'; put 'data &outds;'; put '/*length GROUP_LOGIC SUBGROUP_LOGIC $3 SUBGROUP_ID 8 VARIABLE_NM $32'; put 'OPERATOR_NM $10 RAW_VALUE $4000;*/'; put 'set &inds;'; put 'length reason_cd $4032 vtype $1 vnum dsid 8 tmp $4000;'; put 'drop tmp;'; put '/* quick check to ensure column exists */'; put 'if upcase(VARIABLE_NM) not in'; put '(%upcase(%mf_getvarlist(&targetds,dlm=%str(,),quote=SINGLE)))'; put 'then do;'; put 'REASON_CD="Variable "!!cats(variable_nm)!!" not in &targetds";'; put 'putlog REASON_CD= VARIABLE_NM=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'return;'; put 'end;'; put '/* need to open the dataset to get the column type */'; put 'dsid=open("&targetds","i");'; put 'if dsid>0 then do;'; put 'vnum=varnum(dsid,VARIABLE_NM);'; put 'if vnum<1 then do;'; put '/* should not happen as was also tested for above */'; put 'REASON_CD=cats("Variable (",VARIABLE_NM,") not found in &targetds");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'return;'; put 'end;'; put '/* now we can get the type */'; put 'else vtype=vartype(dsid,vnum);'; put 'end;'; put '/* closed list checks */'; put 'if GROUP_LOGIC not in (''AND'',''OR'') then do;'; put 'REASON_CD=''GROUP_LOGIC should be AND/OR, not:''!!cats(GROUP_LOGIC);'; put 'putlog REASON_CD= GROUP_LOGIC=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if SUBGROUP_LOGIC not in (''AND'',''OR'') then do;'; put 'REASON_CD=''SUBGROUP_LOGIC should be AND/OR, not:''!!cats(SUBGROUP_LOGIC);'; put 'putlog REASON_CD= SUBGROUP_LOGIC=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if mod(SUBGROUP_ID,1) ne 0 then do;'; put 'REASON_CD=''SUBGROUP_ID should be integer, not ''!!cats(subgroup_id);'; put 'putlog REASON_CD= SUBGROUP_ID=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if OPERATOR_NM not in'; put '(''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'',''BETWEEN'',''IN'',''NOT IN'',''CONTAINS'')'; put 'then do;'; put 'REASON_CD=''Invalid OPERATOR_NM: ''!!cats(OPERATOR_NM);'; put 'putlog REASON_CD= OPERATOR_NM=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put '/* special missing logic */'; put 'if vtype=''N'''; put 'and OPERATOR_NM in (''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'')'; put 'and cats(upcase(raw_value)) in ('; put '''.'',''.A'',''.B'',''.C'',''.D'',''.E'',''.F'',''.G'',''.H'',''.I'',''.J'',''.K'',''.L'',''.M'',''.N'''; put '''.N'',''.O'',''.P'',''.Q'',''.R'',''.S'',''.T'',''.U'',''.V'',''.W'',''.X'',''.Y'',''.Z'',''._'''; put ')'; put 'then do;'; put '/* valid numeric - exit data step loop */'; put 'return;'; put 'end;'; put '/* special logic */'; put 'if OPERATOR_NM in (''IN'',''NOT IN'',''BETWEEN'') then do;'; put 'if OPERATOR_NM=''BETWEEN'' then raw_value1=tranwrd(raw_value,'' AND '','','');'; put 'else do;'; put 'if substr(raw_value,1,1) ne ''('''; put 'or substr(cats(reverse(raw_value)),1,1) ne '')'''; put 'then do;'; put 'REASON_CD=''Missing start/end bracket in RAW_VALUE'';'; put 'putlog REASON_CD= OPERATOR_NM= raw_value= raw_value1= ;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'else raw_value1=substr(raw_value,2,max(length(raw_value)-2,0));'; put 'end;'; put '/* we now have a comma seperated list of values */'; put 'if vtype=''N'' then do i=1 to countc(raw_value1, '','')+1;'; put 'tmp=scan(raw_value1,i,'','');'; put 'if cats(tmp) ne ''.'' and input(tmp, ?? 8.) eq . then do;'; put 'REASON_CD=''Non Numeric value provided'';'; put 'putlog REASON_CD= OPERATOR_NM= raw_value= raw_value1= ;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'return;'; put 'end;'; put 'end;'; put 'else raw_value1=raw_value;'; put '/* remove nested literals eg '''' */'; put 'raw_value1=tranwrd(raw_value1,"''''",'''');'; put '/* now match string literals (always single quotes) */'; put 'raw_value2=raw_value1;'; put 'regex = prxparse("s/(\'').*?(\'')//");'; put 'call prxchange(regex,-1,raw_value2);'; put '/* remove commas and periods*/'; put 'raw_value3=compress(raw_value2,'',.'');'; put '/* output records that contain values other than digits and spaces */'; put 'if notdigit(compress(raw_value3,'' ''))>0 then do;'; put 'putlog raw_value3= $hex32.;'; put 'REASON_CD=cats(''Invalid RAW_VALUE:'',raw_value);'; put 'putlog REASON_CD= raw_value= raw_value1= raw_value2= raw_value3=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'set &outds end=last;'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue=(&abort=YES and &nobs>0),'; put 'mac=&sysmacroname,'; put 'msg=%str(Data issue: %superq(reason_cd))'; put ')'; put '%if &nobs>0 %then %do;'; put '%let syscc=1008;'; put '%return;'; put '%end;'; put '/**'; put '* syntax checking passed but it does not mean the filter is valid'; put '* for that we can run a proc sql validate query'; put '*/'; put '%local fref1;'; put '%let fref1=%mf_getuniquefileref();'; put '%mp_filtergenerate(&inds,outref=&fref1)'; put '/* this macro will also set syscc to 1008 if any issues found */'; put '%mp_filtervalidate(&fref1,&targetds,outds=&outds,abort=&abort)'; put '%mend mp_filtercheck;'; put '%macro mp_md5(cvars=,nvars=);'; put '%local i var sep;'; put 'put(md5('; put '%do i=1 %to %sysfunc(countw(&cvars));'; put '%let var=%scan(&cvars,&i,%str( ));'; put '&sep put(md5(trim(&var)),$hex32.)'; put '%let sep=!!;'; put '%end;'; put '%do i=1 %to %sysfunc(countw(&nvars));'; put '%let var=%scan(&nvars,&i,%str( ));'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put '&sep put(md5(trim(put(ifn(missing(&var),&var,&var*1),binary64.))),$hex32.)'; put '%let sep=!!;'; put '%end;'; put '),$hex32.)'; put '%mend mp_md5;'; put '%macro mp_hashdataset('; put 'libds,'; put 'outds=work._data_,'; put 'salt=,'; put 'iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local keyvar /* roll up the md5 */'; put 'prevkeyvar /* retain prev record md5 */'; put 'lastvar /* last var in input ds */'; put 'cvars nvars;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '/* avoid naming conflict for hash key vars */'; put '%let keyvar=%mf_getuniquename();'; put '%let prevkeyvar=%mf_getuniquename();'; put '%let lastvar=%mf_getuniquename();'; put '%if %mf_getattrn(&libds,NLOBS)=0 %then %do;'; put 'data &outds;'; put 'length hashkey $32;'; put 'hashkey=put(md5("&salt"),$hex32.);'; put 'output;'; put 'stop;'; put 'run;'; put '%put &sysmacroname: Dataset &libds is empty, or is not a dataset;'; put '%put &sysmacroname: hashkey of &outds is based on salt (&salt) only;'; put '%end;'; put '%else %if %mf_getattrn(&libds,NLOBS)<0 %then %do;'; put '%put %str(ERR)OR: Dataset &libds is not a dataset;'; put '%end;'; put '%else %do;'; put 'data &outds(rename=(&keyvar=hashkey) keep=&keyvar)'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put 'length &prevkeyvar &keyvar $32;'; put 'retain &prevkeyvar;'; put 'if _n_=1 then &prevkeyvar=put(md5("&salt"),$hex32.);'; put 'set &libds end=&lastvar;'; put '/* hash should include previous row */'; put '&keyvar=%mp_md5('; put 'cvars=%mf_getvarlist(&libds,typefilter=C) &prevkeyvar,'; put 'nvars=%mf_getvarlist(&libds,typefilter=N)'; put ');'; put '&prevkeyvar=&keyvar;'; put 'if &lastvar then output;'; put 'run;'; put '%end;'; put '%mend mp_hashdataset;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 or %length(&var)=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_inc)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status;'; put 'proc sql noprint;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro mp_retainedkey('; put 'base_lib=WORK'; put ',base_dsn=BASETABLE'; put ',append_lib=WORK'; put ',append_dsn=APPENDTABLE'; put ',retained_key=DEFAULT_RK'; put ',business_key= PK1 PK2'; put ',check_uniqueness=NO'; put ',maxkeytable=0'; put ',locktable=0'; put ',outds=WORK.APPEND'; put ',filter_str='; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local base_libds app_libds key_field check maxkey idx_pk newkey_cnt iserr'; put 'msg x tempds1 tempds2 comma_pk appnobs checknobs dropvar tempvar idx_val;'; put '%let base_libds=%upcase(&base_lib..&base_dsn);'; put '%let app_libds=%upcase(&append_lib..&append_dsn);'; put '%let tempds1=%mf_getuniquename();'; put '%let tempds2=%mf_getuniquename();'; put '%let comma_pk=%mf_getquotedstr(in_str=%str(&business_key),dlm=%str(,),quote=);'; put '%let outds=%sysfunc(ifc(%index(&outds,.)=0,work.&outds,&outds));'; put '/* validation checks */'; put '%let iserr=0;'; put '%if &syscc>0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(SYSCC=&syscc on macro entry);'; put '%end;'; put '%else %if %sysfunc(exist(&base_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Base LIBDS (&base_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if %sysfunc(exist(&app_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Append LIBDS (&app_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&maxkeytable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Maxkeytable (&maxkeytable) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&locktable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Locktable (&locktable) expected but NOT FOUND);'; put '%end;'; put '%else %if %length(&business_key)=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Business key (&business_key) expected but NOT FOUND);'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&business_key));'; put '/* check business key values exist */'; put '%let key_field=%scan(&business_key,&x,%str( ));'; put '%if not %mf_existvar(&app_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &app_libds!;'; put '%goto err;'; put '%end;'; put '%else %if not %mf_existvar(&base_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &base_libds!;'; put '%goto err;'; put '%end;'; put '%end;'; put '%err:'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue=(&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put 'proc sql noprint;'; put 'select sum(max(&retained_key),0) into: maxkey from &base_libds;'; put '/**'; put '* get base table RK and bus field values for lookup'; put '*/'; put 'proc sql noprint;'; put 'create table &tempds1 as'; put 'select distinct &comma_pk,&retained_key'; put 'from &base_libds &filter_str'; put 'order by &comma_pk,&retained_key;'; put '%if &check_uniqueness=YES %then %do;'; put 'select count(*) into:checknobs'; put 'from (select distinct &comma_pk from &app_libds);'; put 'select count(*) into: appnobs from &app_libds; /* might be view */'; put '%if &checknobs ne &appnobs %then %do;'; put '%let msg=Source table &app_libds is not unique on (&business_key);'; put '%let iserr=1;'; put '%end;'; put '%end;'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue= (&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put '%if %mf_existvar(&app_libds,&retained_key)'; put '%then %let dropvar=(drop=&retained_key);'; put '/* prepare interim table with retained key populated for matching keys */'; put 'proc sql noprint;'; put 'create table &tempds2 as'; put 'select b.&retained_key, a.*'; put 'from &app_libds &dropvar a'; put 'left join &tempds1 b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&business_key));'; put '%let idx_val=%scan(&business_key,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by &retained_key;'; put '/* identify the number of entries without retained keys (new records) */'; put 'select count(*) into: newkey_cnt'; put 'from &tempds2'; put 'where missing(&retained_key);'; put 'quit;'; put '/**'; put '* Update maxkey table if link provided'; put '*/'; put '%if &maxkeytable ne 0 %then %do;'; put 'proc sql noprint;'; put 'select count(*) into: check from &maxkeytable'; put 'where upcase(keytable)="&base_libds";'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with mp_retainedkey'; put ',ctl_ds=&locktable'; put ')'; put 'proc sql;'; put '%if &check=0 %then %do;'; put 'insert into &maxkeytable'; put 'set keytable="&base_libds"'; put ',keycolumn="&retained_key"'; put ',max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put 'where keytable="&base_libds";'; put '%end;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with maxkey=%eval(&maxkey+&newkey_cnt)'; put ',ctl_ds=&locktable'; put ')'; put '%end;'; put '/* fill in the missing retained key values */'; put '%let tempvar=%mf_getuniquename();'; put 'data &outds(drop=&tempvar);'; put 'retain &tempvar %eval(&maxkey+1);'; put 'set &tempds2;'; put 'if &retained_key =. then &retained_key=&tempvar;'; put '&tempvar=&tempvar+1;'; put 'run;'; put '%mend mp_retainedkey;'; put '%macro mp_filterstore(libds=,'; put 'queryds=work.filterquery,'; put 'filter_summary=PERM.FILTER_SUMMARY,'; put 'filter_detail=PERM.FILTER_DETAIL,'; put 'lock_table=PERM.LOCK_TABLE,'; put 'maxkeytable=PERM.MAXKEYTABLE,'; put 'outresult=work.result,'; put 'outquery=work.query,'; put 'mdebug=1'; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local ds0 ds1 ds2 ds3 ds4 filter_hash orig_libds;'; put '%let libds=%upcase(&libds);'; put '%let orig_libds=&libds;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=mp_filterstore'; put ',msg=%str(syscc=&syscc on macro entry)'; put ')'; put '%mp_abort(iftrue= (%mf_islibds(&filter_summary)=0)'; put ',mac=mp_filterstore'; put ',msg=%str(Invalid filter_summary value: &filter_summary)'; put ')'; put '%mp_abort(iftrue= (%mf_islibds(&filter_detail)=0)'; put ',mac=mp_filterstore'; put ',msg=%str(Invalid filter_detail value: &filter_detail)'; put ')'; put '%mp_abort(iftrue= (%mf_islibds(&lock_table)=0)'; put ',mac=mp_filterstore'; put ',msg=%str(Invalid lock_table value: &lock_table)'; put ')'; put '/**'; put '* validate query'; put '* use format catalog export, if a format'; put '*/'; put '%if "%substr(&libds,%length(&libds)-2,3)"="-FC" %then %do;'; put '%let libds=%scan(&libds,1,-); /* chop off -FC extension */'; put '%let ds0=%mf_getuniquename(prefix=fmtds_);'; put '%let libds=&ds0;'; put '/*'; put 'There is no need to export the entire format catalog here - the validations'; put 'are done against the data model, not the data values. So we can simply'; put 'hardcode the structure based on the cntlout dataset.'; put '*/'; put '%mddl_sas_cntlout(libds=&ds0)'; put '%end;'; put '%mp_filtercheck(&queryds,targetds=&libds,abort=YES)'; put '/* hash the result */'; put '%let ds1=%mf_getuniquename(prefix=hashds);'; put '%mp_hashdataset(&queryds,outds=&ds1,salt=&orig_libds)'; put '%let filter_hash=%upcase(%mf_getvalue(&ds1,hashkey));'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'putlog "filter_hash=&filter_hash";'; put 'set &ds1;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '/* check if data already exists for this hash */'; put 'data &outresult;'; put 'set &filter_summary;'; put 'where filter_hash="&filter_hash";'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=mp_filterstore'; put ',msg=%str(syscc=&syscc after hash check)'; put ')'; put '%mp_abort(iftrue= ("&filter_hash "=" ")'; put ',mac=mp_filterstore'; put ',msg=%str(problem with filter_hash generation)'; put ')'; put '%if %mf_nobs(&outresult)=0 %then %do;'; put '/* first update summary table */'; put '%let ds3=%mf_getuniquename(prefix=filtersum);'; put 'data work.&ds3;'; put 'if 0 then set &filter_summary;'; put 'filter_table="&orig_libds";'; put 'filter_hash="&filter_hash";'; put 'PROCESSED_DTTM=%sysfunc(datetime());'; put 'output;'; put 'stop;'; put 'run;'; put '%mp_lockanytable(LOCK,'; put 'lib=%scan(&filter_summary,1,.)'; put ',ds=%scan(&filter_summary,2,.)'; put ',ref=MP_FILTERSTORE summary update - &filter_hash'; put ',ctl_ds=&lock_table'; put ')'; put '%let ds4=%mf_getuniquename(prefix=filtersumappend);'; put '%mp_retainedkey('; put 'base_lib=%scan(&filter_summary,1,.)'; put ',base_dsn=%scan(&filter_summary,2,.)'; put ',append_lib=work'; put ',append_dsn=&ds3'; put ',retained_key=filter_rk'; put ',business_key=filter_hash'; put ',maxkeytable=&maxkeytable'; put ',locktable=&lock_table'; put ',outds=work.&ds4'; put ')'; put 'proc append base=&filter_summary data=&ds4;'; put 'run;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=%scan(&filter_summary,1,.)'; put ',ds=%scan(&filter_summary,2,.)'; put ',ref=MP_FILTERSTORE summary update - &filter_hash'; put ',ctl_ds=&lock_table'; put ')'; put '%if &syscc ne 0 %then %do;'; put 'data _null_;'; put 'set &ds4;'; put 'putlog (_all_)(=);'; put 'run;'; put '%goto err;'; put '%end;'; put 'data &outresult;'; put 'set &filter_summary;'; put 'where filter_hash="&filter_hash";'; put 'run;'; put '/* Next, update detail table */'; put '%let ds2=%mf_getuniquename(prefix=filterdetail);'; put 'data &ds2;'; put 'if 0 then set &filter_detail;'; put 'set &queryds;'; put 'format filter_hash $hex32. filter_line 8.;'; put 'filter_hash="&filter_hash";'; put 'filter_line=_n_;'; put 'PROCESSED_DTTM=%sysfunc(datetime());'; put 'run;'; put '%mp_lockanytable(LOCK,'; put 'lib=%scan(&filter_detail,1,.)'; put ',ds=%scan(&filter_detail,2,.)'; put ',ref=MP_FILTERSTORE update - &filter_hash'; put ',ctl_ds=&lock_table'; put ')'; put 'proc append base=&filter_detail data=&ds2;'; put 'run;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=%scan(&filter_detail,1,.)'; put ',ds=%scan(&filter_detail,2,.)'; put ',ref=MP_FILTERSTORE detail update &filter_hash'; put ',ctl_ds=&lock_table'; put ')'; put '%if &syscc ne 0 %then %do;'; put 'data _null_;'; put 'set &ds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%goto err;'; put '%end;'; put '%end;'; put 'proc sort data=&filter_detail(where=(filter_hash="&filter_hash")) out=&outquery;'; put 'by filter_line;'; put 'run;'; put '%err:'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=mp_filterstore'; put ',msg=%str(syscc=&syscc on macro exit)'; put ')'; put '%mend mp_filterstore;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Validates a filter clause before it gets hashified, returns the RK'; put '@details Used to generate a FILTER_RK from an input query dataset.'; put 'Raw values are stored in dc.mpe_filtersource and the meta values are stored'; put 'in dc.mpe_filteranytable'; put '

Service Inputs

'; put '
IWANT
'; put '|FILTER_TABLE:$41.|'; put '|---|'; put '|DC258467.MPE_X_TEST|'; put '
FILTERQUERY
'; put '|GROUP_LOGIC:$3|SUBGROUP_LOGIC:$3|SUBGROUP_ID:8.|VARIABLE_NM:$32|OPERATOR_NM:$10|RAW_VALUE:$32767|'; put '|---|---|---|---|---|---|'; put '|AND|AND|1|SOME_BESTNUM|>|1|'; put '|AND|AND|1|SOME_TIME|=|77333|'; put '

Service Outputs

'; put '
result
'; put '@li FILTER_HASH'; put '@li FILTER_RK'; put '@li FILTER_TABLE'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li mf_getvalue.sas'; put '@li mp_filterstore.sas'; put '@li removecolsfromwork.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%let ds=%upcase(%mf_getvalue(work.iwant,filter_table));'; put '%dc_assignlib(WRITE,%scan(&ds,1,.))'; put '%mp_filterstore('; put 'libds=&ds,'; put 'queryds=work.filterquery,'; put 'filter_summary=&dc_libref..mpe_filteranytable,'; put 'filter_detail=&dc_libref..mpe_filtersource,'; put 'lock_table=&dc_libref..mpe_lockanytable,'; put 'maxkeytable=&dc_libref..mpe_maxkeyvalues,'; put 'outresult=work.result,'; put 'outquery=work.query, /* not used */'; put 'mdebug=1'; put ')'; put '%removecolsfromwork(___TMP___MD5)'; put 'proc sql;'; put 'alter table work.result drop PROCESSED_DTTM;'; put '%webout(OPEN)'; put '%webout(OBJ,result)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=viewdata; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mpe_columnlevelsecurity(tgtlib,tgtds,inds'; put ',mode=VIEW'; put ',groupds=work.groups'; put ',clsds=work.clsview'; put ',outds=CLSVIEW'; put ',outmeta=work.cls_rules'; put ');'; put '%local col_list is_admin;'; put '/* filter for the appropriate rules */'; put 'proc sql;'; put 'create table &outmeta as'; put 'select CLS_VARIABLE_NM,'; put 'min(case when CLS_HIDE=1 then 1 else 0 end) as CLS_HIDE'; put 'from &clsds'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and CLS_SCOPE in ("&mode",''ALL'')'; put 'and CLS_ACTIVE=1'; put '%if &mode=VIEW %then %do;'; put 'and CLS_HIDE ne 1'; put '%end;'; put 'and upcase(CLS_GROUP) in (select upcase(groupname) from &groupds)'; put 'and CLS_LIBREF="%upcase(&tgtlib)"'; put 'and CLS_TABLE="%upcase(&tgtds)"'; put 'group by CLS_VARIABLE_NM;'; put '%let is_admin=0;'; put 'proc sql;'; put 'select count(*) into: is_admin from &groupds where groupname="&MPEADMINS";'; put '%put &sysmacroname: &=is_admin;'; put '%if %mf_nobs(work.cls_rules) = 0 or &is_admin>0 %then %do;'; put '%put &sysmacroname: no CLS rules to apply;'; put '%put &=is_admin;'; put '/* copy using append for speed */'; put 'data &outds;'; put 'set &inds;'; put 'stop;'; put 'run;'; put 'proc append base=&outds data=&inds;'; put 'run;'; put '/* ensure CLS_RULES is empty in case of admin */'; put 'data &outmeta;'; put 'set &outmeta;'; put 'stop;'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &mode=VIEW %then %do;'; put '/* just send back the relevant columns */'; put '%let col_list=0;'; put 'proc sql noprint;'; put 'select CLS_VARIABLE_NM into: col_list separated by '' '' from &outmeta'; put 'where CLS_HIDE=0;'; put '%if &col_list=0 %then %do;'; put '/*'; put 'We have columns that are set to CLS_HIDE=1 but we do not have any to'; put 'explicitly show. Therefore we assume all columns are to be shown except'; put 'those that are explicitly hidden.'; put '*/'; put 'proc sql noprint;'; put 'select CLS_VARIABLE_NM into: col_list separated by '' '' from &outmeta'; put 'where CLS_HIDE=1;'; put 'data &outds;'; put 'set &inds;'; put 'drop &col_list;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds;'; put 'set &inds;'; put 'keep &col_list;'; put 'run;'; put '%end;'; put '%end;'; put '%else %if &mode=EDIT %then %do;'; put '/*'; put 'In this case we pass all columns and the frontend will filter out the'; put 'ones that are not allowed to be edited.'; put '*/'; put 'data &outds;'; put 'set &inds;'; put 'stop;'; put 'run;'; put 'proc append base=&outds data=&inds;'; put 'run;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: invalid mode - &mode!;'; put '%abort;'; put '%end;'; put '%mend mpe_columnlevelsecurity;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_filtergenerate(inds,outref=filter);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put 'filename &outref temp;'; put '%if %mf_nobs(&inds)=0 %then %do;'; put '/* ensure we have a default filter */'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc sort data=&inds;'; put 'by SUBGROUP_ID;'; put 'run;'; put 'data _null_;'; put 'file &outref lrecl=32800;'; put 'set &inds end=last;'; put 'by SUBGROUP_ID;'; put 'if _n_=1 then put ''(('';'; put 'else if first.SUBGROUP_ID then put +1 GROUP_LOGIC ''('';'; put 'else put +2 SUBGROUP_LOGIC;'; put 'put +4 VARIABLE_NM OPERATOR_NM RAW_VALUE;'; put 'if last.SUBGROUP_ID then put '')''@;'; put 'if last then put '')'';'; put 'run;'; put '%end;'; put '%mend mp_filtergenerate;'; put '%macro mpe_filtermaster(mode,libds,'; put 'dclib=,'; put 'filter_rk=-1,'; put 'outref=0,'; put 'outds=work.query'; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%let mode=%upcase(&mode);'; put '%let libds=%upcase(&libds);'; put '%mp_abort(iftrue= ('; put '&mode ne EDIT and &mode ne VIEW and &mode ne DLOAD and &mode ne ULOAD'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid MODE: &mode)'; put ')'; put '%mp_abort(iftrue= (&outref = 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Please provide a fileref!)'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc)'; put ')'; put 'filename &outref temp;'; put '/* ensure outputs exist */'; put 'data _null_;'; put 'file &outref;'; put 'put '' '';'; put 'run;'; put 'data &outds;'; put 'set &dclib..mpe_filtersource;'; put 'stop;'; put 'run;'; put '/**'; put '* Deal with FILTER_RK first'; put '*/'; put '%if &filter_rk gt 0 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''( ''@@;'; put 'set &dclib..mpe_filteranytable(where=(filter_rk=&filter_rk));'; put 'call symputx(''filter_hash'',filter_hash,''l'');'; put 'run;'; put 'proc sort data=&dclib..mpe_filtersource(where=(filter_hash="&filter_hash"))'; put 'out=&outds(drop=filter_hash filter_line processed_dttm);'; put 'by filter_line;'; put 'run;'; put '%mp_filtergenerate(&outds,outref=&outref)'; put '%end;'; put '/* Now filter for current records if the MODE is EDIT or DLOAD */'; put '%local varfrom varto;'; put '%let varfrom=0;'; put 'proc sql;'; put 'select coalescec(var_txfrom,''0''), var_txto into: varfrom,:varto'; put 'from &dclib..MPE_TABLES'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and libref="%scan(&libds,1,.)" and dsn="%scan(&libds,2,.)";'; put '%put &=varfrom;'; put '%put &=varto;'; put '/**'; put '* Check if the date variables were mentioned in the query'; put '* This is a trigger for serving a historical view instead of current'; put '* we skip this part when checking an ULOAD as there are no date vars'; put '*/'; put '%if &varfrom ne 0 and (&mode=EDIT or &mode=DLOAD) %then %do;'; put '%local validityvars;'; put 'proc sql;'; put 'select count(*) into: validityvars'; put 'from &outds'; put 'where variable_nm in ("&varfrom","&varto");'; put '%if &validityvars=0 %then %do;'; put 'data _null_;'; put 'file &outref mod;'; put 'length filter_text $32767;'; put 'varfrom=symget(''varfrom'');'; put 'varto=symget(''varto'');'; put 'filter_text=catx('' '','; put '''("%sysfunc(datetime(),'',"%mf_fmtdttm()",'')"dt <'',varto,'')'''; put ');'; put 'if &filter_rk > 0 then put ''AND '' filter_text;'; put 'else put filter_text;'; put 'run;'; put '%end;'; put '%end;'; put '/**'; put '* Now do Row Level Security based on the MPE_ROW_LEVEL_SECURITY table'; put '*/'; put '/* first determine users group membership */'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.groups)'; put '%local admin_check;'; put 'proc sql;'; put 'select count(*) into: admin_check'; put 'from work.groups'; put 'where groupname="&mpeadmins";'; put '%put &sysmacroname: &=admin_check &=mpeadmins;'; put '%if &admin_check=0 %then %do;'; put '%local scopeval;'; put '%if &mode=DLOAD %then %let scopeval=VIEW;'; put '%if &mode=ULOAD %then %let scopeval=EDIT;'; put '%else %let scopeval=&mode;'; put '/* extract relevant rows */'; put '%local rlsds;'; put '%let rlsds=%mf_getuniquename();'; put 'proc sql;'; put 'create table work.&rlsds as'; put 'select rls_group,'; put 'rls_group_logic as group_logic,'; put 'rls_subgroup_logic as subgroup_logic,'; put 'rls_subgroup_id as subgroup_id,'; put 'rls_variable_nm as variable_nm,'; put 'rls_operator_nm as operator_nm,'; put 'rls_raw_value as raw_value'; put 'from &mpelib..mpe_row_level_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and rls_scope in ("&scopeval",''ALL'')'; put 'and upcase(rls_group) in (select upcase(groupname) from work.groups)'; put 'and rls_libref="%scan(&libds,1,.)"'; put 'and rls_table="%scan(&libds,2,.)"'; put 'and rls_active=1'; put 'order by rls_group,rls_subgroup_id;'; put '%if &sqlobs>0 %then %do;'; put '/* check if we currently have filter or not */'; put 'data ;'; put 'infile &outref end=eof;'; put 'input;'; put 'if _n_=1 and eof and cats(_infile_)='''' then newfilter=1;'; put 'output;'; put 'stop;'; put 'run;'; put 'data _null_;'; put 'set &syslast;'; put 'file &outref mod;'; put 'if newfilter=1 then put ''('';'; put 'else put ''AND ('';'; put 'run;'; put '/* loop through and apply filters for each group membership */'; put '%local fref ds;'; put '%let fref=%mf_getuniquefileref();'; put '%let ds=%mf_getuniquename();'; put 'proc sql noprint;'; put 'select distinct rls_group into : group1 -'; put 'from work.&rlsds;'; put '%do i=1 %to &sqlobs;'; put 'data work.&ds;'; put 'set work.&rlsds;'; put 'where rls_group="&&group&i";'; put 'drop rls_group;'; put 'run;'; put '%mp_filtergenerate(&ds,outref=&fref)'; put 'data _null_;'; put 'infile &fref;'; put 'file &outref mod;'; put 'input;'; put 'if &i>1 and _n_=1 then put '' OR '';'; put 'put _infile_;'; put 'run;'; put '%end;'; put 'data _null_;'; put 'file &outref mod;'; put 'put '')'';'; put 'run;'; put '%end; /* &sqlobs>0 */'; put '%else %do;'; put '%put &sysmacroname: no matching groups;'; put 'data _null_;'; put 'set work.groups;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname'; put ',msg=%str(Row Level Security Generation Error)'; put ')'; put '%end; /* &admin_check=0 */'; put '%put leaving &sysmacroname with the following query:;'; put '%local empty;'; put '%let empty=0;'; put 'data _null_;'; put 'infile &outref end=eof;'; put 'input;'; put 'putlog _infile_;'; put 'if _n_=1 and eof and cats(_infile_)='''' then do;'; put 'put ''1=1'';'; put 'call symputx(''empty'',1,''l'');'; put 'end;'; put 'run;'; put '%if &empty=1 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%mend mpe_filtermaster;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro mm_gettables('; put 'uri='; put ',outds=work.mm_gettables'; put ',getauth=YES'; put ')/*/STORE SOURCE*/;'; put 'data &outds;'; put 'length uri serveruri conn_uri domainuri libname ServerContext AuthDomain'; put 'path_schema usingpkguri type tableuri $256 id $17'; put 'libdesc $200 libref engine $8 IsDBMSLibname IsPreassigned $1'; put 'tablename $50 /* metadata table names can be longer than $32 */'; put ';'; put 'keep libname libdesc libref engine ServerContext path_schema AuthDomain'; put 'tableuri tablename IsPreassigned IsDBMSLibname id;'; put 'call missing (of _all_);'; put 'uri=symget(''uri'');'; put 'rc= metadata_getattr(uri, "Name", libname);'; put 'if rc <0 then do;'; put 'put ''The library is not defined in this metadata repository.'';'; put 'stop;'; put 'end;'; put 'rc= metadata_getattr(uri, "Desc", libdesc);'; put 'rc= metadata_getattr(uri, "Libref", libref);'; put 'rc= metadata_getattr(uri, "Engine", engine);'; put 'rc= metadata_getattr(uri, "IsDBMSLibname", IsDBMSLibname);'; put 'rc= metadata_getattr(uri, "IsPreassigned", IsPreassigned);'; put 'rc= metadata_getattr(uri, "Id", Id);'; put '/*** Get associated ServerContext ***/'; put 'rc= metadata_getnasn(uri, "DeployedComponents", 1, serveruri);'; put 'if rc > 0 then rc2= metadata_getattr(serveruri, "Name", ServerContext);'; put 'else ServerContext='''';'; put '/*** If the library is a DBMS library, get the Authentication Domain'; put 'associated with the DBMS connection credentials ***/'; put 'if IsDBMSLibname="1" and "&getauth"=''YES'' then do;'; put 'rc= metadata_getnasn(uri, "LibraryConnection", 1, conn_uri);'; put 'if rc>0 then do;'; put 'rc2= metadata_getnasn(conn_uri, "Domain", 1, domainuri);'; put 'if rc2>0 then rc3= metadata_getattr(domainuri, "Name", AuthDomain);'; put 'end;'; put 'end;'; put '/*** Get the path/database schema for this library ***/'; put 'rc=metadata_getnasn(uri, "UsingPackages", 1, usingpkguri);'; put 'if rc>0 then do;'; put 'rc=metadata_resolve(usingpkguri,type,id);'; put 'if type=''Directory'' then'; put 'rc=metadata_getattr(usingpkguri, "DirectoryName", path_schema);'; put 'else if type=''DatabaseSchema'' then'; put 'rc=metadata_getattr(usingpkguri, "Name", path_schema);'; put 'else path_schema="unknown";'; put 'end;'; put '/*** Get the tables associated with this library ***/'; put '/*** If DBMS, tables are associated with DatabaseSchema ***/'; put 'if type=''DatabaseSchema'' then do;'; put 't=1;'; put 'ntab=metadata_getnasn(usingpkguri, "Tables", t, tableuri);'; put 'if ntab>0 then do t=1 to ntab;'; put 'tableuri='''';'; put 'tablename='''';'; put 'ntab=metadata_getnasn(usingpkguri, "Tables", t, tableuri);'; put 'tabrc= metadata_getattr(tableuri, "Name", tablename);'; put 'output;'; put 'end;'; put 'else put ''Library '' libname '' has no tables registered'';'; put 'end;'; put 'else if type in (''Directory'',''SASLibrary'') then do;'; put 't=1;'; put 'ntab=metadata_getnasn(uri, "Tables", t, tableuri);'; put 'if ntab>0 then do t=1 to ntab;'; put 'tableuri='''';'; put 'tablename='''';'; put 'ntab=metadata_getnasn(uri, "Tables", t, tableuri);'; put 'tabrc= metadata_getattr(tableuri, "Name", tablename);'; put 'output;'; put 'end;'; put 'else put ''Library '' libname '' has no tables registered'';'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by tablename tableuri;'; put 'run;'; put '%mend mm_gettables;'; put '%macro mm_getcols('; put 'tableuri='; put ',outds=work.mm_getcols'; put ')/*/STORE SOURCE*/;'; put 'data &outds;'; put 'keep col: SAS:;'; put 'length assoc uri coluri colname coldesc SASColumnType SASFormat SASInformat'; put 'SASPrecision SASColumnLength $256;'; put 'call missing (of _all_);'; put 'uri=symget(''tableuri'');'; put 'n=1;'; put 'do while (metadata_getnasn(uri,''Columns'',n,coluri)>0);'; put 'rc3=metadata_getattr(coluri,"Name",colname);'; put 'rc3=metadata_getattr(coluri,"Desc",coldesc);'; put 'rc4=metadata_getattr(coluri,"SASColumnType",SASColumnType);'; put 'rc5=metadata_getattr(coluri,"SASFormat",SASFormat);'; put 'rc6=metadata_getattr(coluri,"SASInformat",SASInformat);'; put 'rc7=metadata_getattr(coluri,"SASPrecision",SASPrecision);'; put 'rc8=metadata_getattr(coluri,"SASColumnLength",SASColumnLength);'; put 'output;'; put 'call missing(colname,coldesc,SASColumnType,SASFormat,SASInformat'; put ',SASPrecision,SASColumnLength);'; put 'n+1;'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by colname;'; put 'run;'; put '%mend mm_getcols;'; put '%macro mm_createdataset(libds=,tableuri=,outds=work.mm_createdataset,mDebug=0);'; put '%local dbg errorcheck tempds1 tempds2 tempds3;'; put '%if &mDebug=0 %then %let dbg=*;'; put '%let errorcheck=1;'; put '%if %index(&libds,.)>0 %then %do;'; put '/* get lib uri */'; put 'data;run;%let tempds1=&syslast;'; put '%mm_getlibs(outds=&tempds1)'; put 'data _null_;'; put 'set &tempds1;'; put 'if upcase(libraryref)="%upcase(%scan(&libds,1,.))";'; put 'call symputx(''liburi'',LibraryId,''l'');'; put 'run;'; put '/* get ds uri */'; put 'data;run;%let tempds2=&syslast;'; put '%mm_gettables(uri=&liburi,outds=&tempds2)'; put 'data _null_;'; put 'set &tempds2;'; put 'where upcase(tablename)="%upcase(%scan(&libds,2,.))";'; put '&dbg putlog tableuri=;'; put 'call symputx(''tableuri'',tableuri);'; put 'run;'; put '%end;'; put 'data;run;'; put '%let tempds3=&syslast;'; put '%mm_getcols(tableuri=&tableuri,outds=&tempds3)'; put '%if %mf_nobs(&tempds3)=0 %then %do;'; put '%put &libds (&tableuri) has no columns defined!!;'; put 'data &outds;'; put 'run;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'set &tempds3 end=last;'; put 'if _n_=1 then call execute(''data &outds;'');'; put 'length attrib $32767;'; put 'if SAScolumntype=''C'' then type=''$'';'; put 'attrib=''attrib ''!!cats(colname)!!'' length=''!!cats(type,SASColumnLength,''.'');'; put 'if not missing(sasformat) then fmt='' format=''!!cats(sasformat);'; put 'if not missing(sasinformat) then infmt='' informat=''!!cats(sasinformat);'; put 'if not missing(coldesc) then desc='' label=''!!quote(cats(coldesc));'; put 'attrib=trim(attrib)!!fmt!!infmt!!desc!!'';'';'; put 'call execute(attrib);'; put 'if last then call execute(''call missing(of _all_);stop;run;'');'; put 'run;'; put '%mend mm_createdataset;'; put '%macro dc_createdataset(libds=mm_getlibs,outds=viewdata);'; put '%mm_createdataset(libds=&libds,outds=viewdata)'; put '%mend dc_createdataset;'; put '%macro mm_gettableid('; put 'libref='; put ',ds='; put ',outds=work.mm_gettableid'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put 'data &outds;'; put 'length uri usingpkguri id type tableuri tablename tmpuri $256;'; put 'call missing(of _all_);'; put 'keep tableuri tablename;'; put 'n=1;'; put 'rc=0;'; put 'if metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",n,uri)<1 then do;'; put 'put "Library &libref not found";'; put 'stop;'; put 'end;'; put '&mD.putlog "uri is " uri;'; put 'if metadata_getnasn(uri, "UsingPackages", 1, usingpkguri)>0 then do;'; put 'rc=metadata_resolve(usingpkguri,type,id);'; put '&mD.putlog "Type is " type;'; put 'end;'; put 'if type=''DatabaseSchema'' then tmpuri=usingpkguri;'; put 'else tmpuri=uri;'; put 't=1;'; put 'do while(metadata_getnasn(tmpuri, "Tables", t, tableuri)>0);'; put 't+1;'; put 'rc= metadata_getattr(tableuri, "Name", tablename);'; put '&mD.putlog "Table is " tablename;'; put 'if upcase(tablename)="%upcase(&ds)" then do;'; put 'output;'; put 'end;'; put 'end;'; put 'run;'; put '%mend mm_gettableid;'; put '%macro dc_gettableid(libref='; put ',ds='; put ',outds=);'; put '%mm_gettableid(libref=&libref,ds=&ds,outds=&outds)'; put '%if %mf_nobs(&outds)=0 %then %do;'; put 'data &outds;'; put 'tableuri='''';'; put 'tablename="&ds";'; put 'run;'; put '%end;'; put '%mend dc_gettableid;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getvarcount(libds,typefilter=A'; put ')/*/STORE SOURCE*/;'; put '%local dsid nvars rc outcnt x;'; put '%let dsid=%sysfunc(open(&libds));'; put '%let nvars=.;'; put '%let outcnt=0;'; put '%let typefilter=%upcase(&typefilter);'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &typefilter=A %then %let outcnt=&nvars;'; put '%else %if &nvars>0 %then %do x=1 %to &nvars;'; put '/* increment based on variable type */'; put '%if %sysfunc(vartype(&dsid,&x))=&typefilter %then %do;'; put '%let outcnt=%eval(&outcnt+1);'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put unable to open &libds (rc=&dsid);'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '&outcnt'; put '%mend mf_getvarcount;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'FMTNAME char(32) label=''Format name'''; put '/*'; put 'to accommodate larger START values, mp_loadformat.sas will need the'; put 'SQL dependency removed (proc sql needs to accommodate 3 index values in'; put 'a 32767 ibufsize limit)'; put '*/'; put ',START char(10000) label=''Starting value for format'''; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',TYPE char(1) label=''Type of format'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%mend mddl_sas_cntlout;'; put '%macro mp_cntlout('; put 'iftrue=(1=1)'; put ',libcat='; put ',cntlout=work.fmtextract'; put ',fmtlist=0'; put ')/*/STORE SOURCE*/;'; put '%local ddlds cntlds i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let ddlds=%mf_getuniquename();'; put '%let cntlds=%mf_getuniquename();'; put '%mddl_sas_cntlout(libds=&ddlds)'; put '%if %index(&libcat,-)>0 and %scan(&libcat,2,-)=FC %then %do;'; put '%let libcat=%scan(&libcat,1,-);'; put '%end;'; put 'proc format lib=&libcat cntlout=&cntlds;'; put '%if "&fmtlist" ne "0" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'if type="N" then do;'; put 'start=cats(start);'; put 'end=cats(end);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by fmtname start;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; put '%macro mp_dsmeta(libds,outds=work.dsmeta);'; put '%local ds1 ds2;'; put 'data;run; %let ds1=&syslast;'; put 'data;run; %let ds2=&syslast;'; put '/* setup the ODS capture */'; put 'ods output attributes=&ds1 enginehost=&ds2;'; put '/* export the metadata */'; put 'proc contents data=&libds;'; put 'run;'; put '/* load it into a single table */'; put 'data &outds (keep=ods_table name value);'; put 'length ods_table $10 name label2 label1 label $100'; put 'value cvalue cvalue1 cvalue2 $1000'; put 'nvalue nvalue1 nvalue2 8;'; put 'if _n_=1 then call missing (of _all_);'; put '* putlog (_all_)(=);'; put 'set &ds1 (in=atrs) &ds2 (in=eng);'; put 'if atrs then do;'; put 'ods_table=''ATTRIBUTES'';'; put 'name=coalescec(label1,label);'; put 'value=coalescec(cvalue1,cvalue,put(coalesce(nvalue1,nvalue),best.));'; put 'output;'; put 'if label2 ne '''' then do;'; put 'name=label2;'; put 'value=coalescec(cvalue2,put(nvalue2,best.));'; put 'output;'; put 'end;'; put 'end;'; put 'else if eng then do;'; put 'ods_table=''ENGINEHOST'';'; put 'name=coalescec(label1,label);'; put 'value=coalescec(cvalue1,cvalue,put(coalesce(nvalue1,nvalue),best.));'; put 'output;'; put 'end;'; put 'run;'; put 'proc sql;'; put 'drop table &ds1, &ds2;'; put '%mend mp_dsmeta;'; put '%macro mp_getcols(ds, outds=work.cols);'; put '%local dropds;'; put 'proc contents noprint data=&ds'; put 'out=_data_ (keep=name type length label varnum format:);'; put 'run;'; put '%let dropds=&syslast;'; put 'data &outds(keep=name type length varnum format label ddtype fmtname);'; put 'set &dropds(rename=(format=fmtname type=type2));'; put 'name=upcase(name);'; put 'if type2=2 then do;'; put 'length format $49.;'; put 'if fmtname='''' then format=cats(''$'',length,''.'');'; put 'else if formatl=0 then format=cats(fmtname,''.'');'; put 'else format=cats(fmtname,formatl,''.'');'; put 'type=''C'';'; put 'ddtype=''CHARACTER'';'; put 'end;'; put 'else do;'; put 'if fmtname='''' then format=cats(length,''.'');'; put 'else if formatl=0 then format=cats(fmtname,''.'');'; put 'else if formatd=0 then format=cats(fmtname,formatl,''.'');'; put 'else format=cats(fmtname,formatl,''.'',formatd);'; put 'type=''N'';'; put 'if format=:''DATETIME'' or format=:''E8601DT'' then ddtype=''DATETIME'';'; put 'else if format=:''DATE'' or format=:''DDMMYY'' or format=:''MMDDYY'''; put 'or format=:''YYMMDD'' or format=:''E8601DA'' or format=:''B8601DA'''; put 'or format=:''MONYY'''; put 'then ddtype=''DATE'';'; put 'else if format=:''TIME'' then ddtype=''TIME'';'; put 'else ddtype=''NUMERIC'';'; put 'end;'; put 'if label='''' then label=name;'; put 'run;'; put 'proc sql;'; put 'drop table &dropds;'; put '%mend mp_getcols;'; put '/** @cond */'; put '%macro mf_existfeature(feature'; put ')/*/STORE SOURCE*/;'; put '%let feature=%upcase(&feature);'; put '%local platform;'; put '%let platform=%mf_getplatform();'; put '%if &feature= %then %do;'; put '%put No feature was requested for detection;'; put '%end;'; put '%else %if &feature=COLCONSTRAINTS %then %do;'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=PROCLUA %then %do;'; put '/* https://blogs.sas.com/content/sasdummy/2015/08/03/using-lua-within-your-sas-programs */'; put '%if &platform=SASVIYA %then 1;'; put '%else %if "&sysver"="9.2" or "&sysver"="9.3" %then 0;'; put '%else %if "&SYSVLONG" < "9.04.01M3" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=DBMS_MEMTYPE %then %do;'; put '/* does dbms_memtype exist in dictionary.tables? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=EXPORTXLS %then %do;'; put '/* is it possible to PROC EXPORT an excel file? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 1;'; put '%else %if %sysfunc(sysprod(SAS/ACCESS Interface to PC Files)) = 1 %then 1;'; put '%else 0;'; put '%end;'; put '%else %do;'; put '-1'; put '%put &sysmacroname: &feature not found;'; put '%end;'; put '%mend mf_existfeature;'; put '/** @endcond */'; put '%macro mf_getschema(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum rc schema;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=''Schema/Owner'''; put ')),i));'; put '%if (&dsid ^= 0) %then %do;'; put '%let vnum=%sysfunc(varnum(&dsid,SYSVALUE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let schema=%sysfunc(getvarc(&dsid,&vnum));'; put '%put &libref. schema is &schema.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '&schema'; put '%mend mf_getschema;'; put '/** @endcond */'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mp_getconstraints(lib=WORK'; put ',ds='; put ',outds=mp_getconstraints'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '/**'; put '* Cater for environments where sashelp.vcncolu is not available'; put '*/'; put '%if %sysfunc(exist(sashelp.vcncolu,view))=0 %then %do;'; put 'proc sql;'; put 'create table &outds('; put 'libref char(8)'; put ',TABLE_NAME char(32)'; put ',constraint_type char(8) label=''Constraint Type'''; put ',constraint_name char(32) label=''Constraint Name'''; put ',column_name char(32) label=''Column'''; put ',constraint_order num'; put ');'; put '%return;'; put '%end;'; put '/**'; put '* Neither dictionary tables nor sashelp provides a constraint order column,'; put '* however they DO arrive in the correct order. So, create the col.'; put '**/'; put '%local vw;'; put '%let vw=%mf_getuniquename(prefix=mp_getconstraints_vw_);'; put 'data &vw /view=&vw;'; put 'set sashelp.vcncolu;'; put 'where table_catalog="&lib";'; put '/* use retain approach to reset the constraint order with each constraint */'; put 'length tmp $1000;'; put 'retain tmp;'; put 'drop tmp;'; put 'if tmp ne catx(''|'',table_catalog,table_name,constraint_name) then do;'; put 'constraint_order=1;'; put 'end;'; put 'else constraint_order+1;'; put 'tmp=catx(''|'',table_catalog, table_name,constraint_name);'; put 'run;'; put '/* must use SQL as proc datasets does not support length changes */'; put 'proc sql noprint;'; put 'create table &outds as'; put 'select upcase(a.TABLE_CATALOG) as libref'; put ',upcase(a.TABLE_NAME) as TABLE_NAME'; put ',a.constraint_type'; put ',a.constraint_name'; put ',b.column_name'; put ',b.constraint_order'; put 'from dictionary.TABLE_CONSTRAINTS a'; put 'left join &vw b'; put 'on upcase(a.TABLE_CATALOG)=upcase(b.TABLE_CATALOG)'; put 'and upcase(a.TABLE_NAME)=upcase(b.TABLE_NAME)'; put 'and a.constraint_name=b.constraint_name'; put '/**'; put '* We cannot apply this clause to the underlying dictionary table. See:'; put '* https://communities.sas.com/t5/SAS-Programming/Unexpected-Where-Clause-behaviour-in-dictionary-TABLE/m-p/771554#M244867'; put '* cannot use`where calculated libref="&lib"` either as it will STILL execute'; put '* all the underlying constraint queries, causing exception errors in some'; put '* cases: https://github.com/sasjs/core/issues/283'; put '*/'; put 'where a.TABLE_CATALOG="&lib"'; put '%if "&ds" ne "" %then %do;'; put 'and upcase(a.TABLE_NAME)="&ds"'; put 'and upcase(b.TABLE_NAME)="&ds"'; put '%end;'; put 'order by libref, table_name, constraint_name, constraint_order'; put ';'; put '/* tidy up */'; put '%mp_dropmembers('; put '&vw,'; put 'iftrue=(&mdebug=0)'; put ')'; put '%mend mp_getconstraints;'; put '%macro mp_getpk('; put 'lib,'; put 'ds=0,'; put 'outds=work.mp_getpk,'; put 'mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%local engine schema ds1 ds2 ds3 dsn tabs1 tabs2 sum pk4sure pkdefault finalpks'; put 'pkfromindex;'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let engine=%mf_getengine(&lib);'; put '%let schema=%mf_getschema(&lib);'; put '%let ds1=%mf_getuniquename(prefix=getpk_ds1);'; put '%let ds2=%mf_getuniquename(prefix=getpk_ds2);'; put '%let ds3=%mf_getuniquename(prefix=getpk_ds3);'; put '%let tabs1=%mf_getuniquename(prefix=getpk_tabs1);'; put '%let tabs2=%mf_getuniquename(prefix=getpk_tabs2);'; put '%let sum=%mf_getuniquename(prefix=getpk_sum);'; put '%let pk4sure=%mf_getuniquename(prefix=getpk_pk4sure);'; put '%let pkdefault=%mf_getuniquename(prefix=getpk_pkdefault);'; put '%let pkfromindex=%mf_getuniquename(prefix=getpk_pkfromindex);'; put '%let finalpks=%mf_getuniquename(prefix=getpk_finalpks);'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put 'proc sql;'; put 'create table &ds1 as'; put 'select libname as libref'; put ',upcase(memname) as dsn'; put ',memtype'; put ',upcase(name) as name'; put ',type'; put ',length'; put ',varnum'; put ',label'; put ',format'; put ',idxusage'; put ',notnull'; put 'from dictionary.columns'; put 'where upcase(libname)="&lib"'; put '%if &ds ne 0 %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put ';'; put '%if &engine=SQLSVR %then %do;'; put 'proc sql;'; put 'connect using &lib;'; put 'create table work.&ds2 as'; put 'select * from connection to &lib('; put 'select'; put 's.name as SchemaName,'; put 't.name as memname,'; put 'tc.name as name,'; put 'ic.key_ordinal as KeyOrderNr'; put 'from'; put 'sys.schemas s'; put 'inner join sys.tables t on s.schema_id=t.schema_id'; put 'inner join sys.indexes i on t.object_id=i.object_id'; put 'inner join sys.index_columns ic on i.object_id=ic.object_id'; put 'and i.index_id=ic.index_id'; put 'inner join sys.columns tc on ic.object_id=tc.object_id'; put 'and ic.column_id=tc.column_id'; put 'where i.is_primary_key=1'; put 'and s.name=%str(%'')&schema%str(%'')'; put 'order by t.name, ic.key_ordinal ;'; put ');disconnect from &lib;'; put 'create table &ds3 as'; put 'select a.*'; put ',case when b.name is not null then 1 else 0 end as pk_ind'; put 'from work.&ds1 a'; put 'left join work.&ds2 b'; put 'on a.dsn=b.memname'; put 'and upcase(a.name)=upcase(b.name)'; put 'order by libref,dsn;'; put '%end;'; put '%else %do;'; put '%if &ds = 0 %then %let dsn=;'; put '/* get all constraints, in constraint order*/'; put '%mp_getconstraints(lib=&lib,ds=&dsn,outds=work.&ds2)'; put '/* extract cols that are clearly primary keys */'; put 'proc sql;'; put 'create table &pk4sure as'; put 'select libref'; put ',table_name'; put ',constraint_name'; put ',constraint_order'; put ',column_name as name'; put 'from work.&ds2'; put 'where constraint_type=''PRIMARY'''; put 'order by 1,2,3,4;'; put '/* extract unique constraints where every col is also NOT NULL */'; put 'proc sql;'; put 'create table &sum as'; put 'select a.libref'; put ',a.table_name'; put ',a.constraint_name'; put ',count(a.column_name) as unq_cnt'; put ',count(b.column_name) as nul_cnt'; put 'from work.&ds2(where=(constraint_type =''UNIQUE'')) a'; put 'left join work.&ds2(where=(constraint_type =''NOT NULL'')) b'; put 'on a.libref=b.libref'; put 'and a.table_name=b.table_name'; put 'and a.column_name=b.column_name'; put 'group by 1,2,3'; put 'having unq_cnt=nul_cnt;'; put '/* extract cols from the relevant unique constraints */'; put 'create table &pkdefault as'; put 'select a.libref'; put ',a.table_name'; put ',a.constraint_name'; put ',b.constraint_order'; put ',b.column_name as name'; put 'from &sum a'; put 'left join &ds2(where=(constraint_type =''UNIQUE'')) b'; put 'on a.libref=b.libref'; put 'and a.table_name=b.table_name'; put 'and a.constraint_name=b.constraint_name'; put 'order by 1,2,3,4;'; put '/* extract cols from the relevant unique INDEXES */'; put 'create table &pkfromindex as'; put 'select libname as libref'; put ',memname as table_name'; put ',indxname as constraint_name'; put ',indxpos as constraint_order'; put ',name'; put 'from dictionary.indexes'; put 'where nomiss=''yes'' and unique=''yes'' and upcase(libname)="&lib"'; put '%if &ds ne 0 %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put 'order by 1,2,3,4;'; put '/* create one table */'; put 'data &finalpks;'; put 'set &pkdefault &pk4sure &pkfromindex;'; put 'pk_ind=1;'; put '/* if there are multiple unique constraints, take the first */'; put 'by libref table_name constraint_name;'; put 'retain keepme;'; put 'if first.table_name then keepme=1;'; put 'if first.constraint_name and not first.table_name then keepme=0;'; put 'if keepme=1;'; put 'run;'; put '/* join back to starting table */'; put 'proc sql;'; put 'create table &ds3 as'; put 'select a.*'; put ',b.constraint_order'; put ',case when b.pk_ind=1 then 1 else 0 end as pk_ind'; put 'from work.&ds1 a'; put 'left join work.&finalpks b'; put 'on a.libref=b.libref'; put 'and a.dsn=b.table_name'; put 'and upcase(a.name)=upcase(b.name)'; put 'order by libref,dsn,constraint_order;'; put '%end;'; put '/* prepare tables */'; put 'proc sql;'; put 'create table work.&tabs1 as select'; put 'libname as libref'; put ',upcase(memname) as dsn'; put ',memtype'; put '%if %mf_existfeature(DBMS_MEMTYPE)=1 %then %do;'; put ',dbms_memtype'; put '%end;'; put '%else %do;'; put ',''n/a'' as dbms_memtype format=$32.'; put '%end;'; put ',typemem'; put ',memlabel'; put ',nvar'; put ',compress'; put 'from dictionary.tables'; put 'where upcase(libname)="&lib"'; put '%if &ds ne 0 %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put ';'; put 'data &tabs2;'; put 'set &ds3;'; put 'length pk_fields $512;'; put 'retain pk_fields;'; put 'by libref dsn constraint_order;'; put 'if first.dsn then pk_fields='''';'; put 'if pk_ind=1 then pk_fields=catx('' '',pk_fields,name);'; put 'if last.dsn then output;'; put 'run;'; put 'proc sql;'; put 'create table &outds as'; put 'select a.libref'; put ',a.dsn'; put ',a.memtype'; put ',a.dbms_memtype'; put ',a.typemem'; put ',a.memlabel'; put ',a.nvar'; put ',a.compress'; put ',b.pk_fields'; put 'from work.&tabs1 a'; put 'left join work.&tabs2 b'; put 'on a.libref=b.libref'; put 'and a.dsn=b.dsn;'; put '/* tidy up */'; put '%mp_dropmembers('; put '&ds1 &ds2 &ds3 &dsn &tabs1 &tabs2 &sum &pk4sure &pkdefault &finalpks,'; put 'iftrue=(&mdebug=0)'; put ')'; put '%mend mp_getpk;'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_mkdir(dir'; put ')/*/STORE SOURCE*/;'; put '%local lastchar child parent;'; put '%let lastchar = %substr(&dir, %length(&dir));'; put '%if (%bquote(&lastchar) eq %str(:)) %then %do;'; put '/* Cannot create drive mappings */'; put '%return;'; put '%end;'; put '%if (%bquote(&lastchar)=%str(/)) or (%bquote(&lastchar)=%str(\)) %then %do;'; put '/* last char is a slash */'; put '%if (%length(&dir) eq 1) %then %do;'; put '/* one single slash - root location is assumed to exist */'; put '%return;'; put '%end;'; put '%else %do;'; put '/* strip last slash */'; put '%let dir = %substr(&dir, 1, %length(&dir)-1);'; put '%end;'; put '%end;'; put '%if (%sysfunc(fileexist(%bquote(&dir))) = 0) %then %do;'; put '/* directory does not exist so prepare to create */'; put '/* first get the childmost directory */'; put '%let child = %scan(&dir, -1, %str(/\:));'; put '/*'; put 'If child name = path name then there are no parents to create. Else'; put 'they must be recursively scanned.'; put '*/'; put '%if (%length(&dir) gt %length(&child)) %then %do;'; put '%let parent = %substr(&dir, 1, %length(&dir)-%length(&child));'; put '%mf_mkdir(&parent)'; put '%end;'; put '/*'; put 'Now create the directory. Complain loudly of any errs.'; put '*/'; put '%let dname = %sysfunc(dcreate(&child, &parent));'; put '%if (%bquote(&dname) eq ) %then %do;'; put '%put %str(ERR)OR: could not create &parent + &child;'; put '%abort cancel;'; put '%end;'; put '%else %do;'; put '%put Directory created: &dir;'; put '%end;'; put '%end;'; put '/* exit quietly if directory did exist.*/'; put '%mend mf_mkdir;'; put '%macro mp_searchdata(lib='; put ',ds='; put ',string= /* the query will use a contains (?) operator */'; put ',numval= /* numeric must match exactly */'; put ',outloc=0'; put ',outlib=MPSEARCH'; put ',outobs=-1'; put ',filter_text=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local table_list table table_num table colnum col start_tm check_tm vars type'; put 'coltype;'; put '%put process began at %sysfunc(datetime(),datetime19.);'; put '%if &syscc ge 4 %then %do;'; put '%put %str(WAR)NING: SYSCC=&syscc on macro entry;'; put '%return;'; put '%end;'; put '%if &string = %then %let type=N;'; put '%else %let type=C;'; put '%if "&outloc"="0" %then %do;'; put '%let outloc=%sysfunc(pathname(work))/%mf_getuniquename();'; put '%end;'; put '%mf_mkdir(&outloc)'; put 'libname &outlib "&outloc";'; put '/* get the list of tables in the library */'; put 'proc sql noprint;'; put 'select distinct memname into: table_list separated by '' '''; put 'from dictionary.tables'; put 'where upcase(libname)="%upcase(&lib)"'; put '%if &ds ne %then %do;'; put 'and upcase(memname)=%upcase("&ds")'; put '%end;'; put ';'; put '/* check that we have something to check */'; put '%if %length(&table_list)=0 %then %put library &lib contains no tables!;'; put '/* loop through each table */'; put '%else %do table_num=1 %to %sysfunc(countw(&table_list,%str( )));'; put '%let table=%scan(&table_list,&table_num,%str( ));'; put '%let vars=%mf_getvarlist(&lib..&table);'; put '%if %length(&vars)=0 %then %do;'; put '%put NO COLUMNS IN &lib..&table! This will be skipped.;'; put '%end;'; put '%else %do;'; put '%let check_tm=%sysfunc(datetime());'; put '/* prep input */'; put 'data &outlib..&table;'; put 'set &lib..&table;'; put 'where %unquote(&filter_text) and ( 0'; put '/* loop through columns */'; put '%do colnum=1 %to %sysfunc(countw(&vars,%str( )));'; put '%let col=%scan(&vars,&colnum,%str( ));'; put '%let coltype=%mf_getvartype(&lib..&table,&col);'; put '%if &type=C and &coltype=C %then %do;'; put '/* if a char column, see if it contains the string */'; put 'or ("&col"n ? "&string")'; put '%end;'; put '%else %if &type=N and &coltype=N %then %do;'; put '/* if numeric match exactly */'; put 'or ("&col"n = &numval)'; put '%end;'; put '%end;'; put ');'; put '%if &outobs>-1 %then %do;'; put 'if _n_ > &outobs then stop;'; put '%end;'; put 'run;'; put '%put Search query for &table took'; put '%sysevalf(%sysfunc(datetime())-&check_tm) seconds;'; put '%if &syscc ne 0 %then %do;'; put '%put %str(ERR)ROR: SYSCC=&syscc when processing &lib..&table;'; put '%return;'; put '%end;'; put '%if %mf_nobs(&outlib..&table)=0 %then %do;'; put 'proc sql;'; put 'drop table &outlib..&table;'; put '%end;'; put '%end;'; put '%end;'; put '%put process finished at %sysfunc(datetime(),datetime19.);'; put '%mend mp_searchdata;'; put '%macro mp_validatecol(incol,rule,outcol);'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename();'; put '%if &rule=ISINT %then %do;'; put '&outcol=0;'; put 'if not missing(&incol) then do;'; put '&tempcol=input(&incol,?? best32.);'; put 'if not missing(&tempcol) then if mod(&tempcol,1)=0 then &outcol=1;'; put 'end;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=ISNUM %then %do;'; put '/*'; put 'credit SØREN LASSEN'; put 'https://sasmacro.blogspot.com/2009/06/welcome-isnum-macro.html'; put '*/'; put '&tempcol=input(&incol,?? best32.);'; put 'if missing(&tempcol) then &outcol=0;'; put 'else &outcol=1;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=LIBDS %then %do;'; put '/* match libref.dataset */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}\.[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for LIBDS";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%else %if &rule=FORMAT %then %do;'; put '/* match valid format - regex could probably be improved */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z\$]\w{0,31}\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for FORMAT";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%mend mp_validatecol;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file viewdata.sas'; put '@brief Provide the raw view of the data'; put '@details Pass a LIBDS and FILTER_RK to return a dataset for viewing.'; put 'VIEW datasets include all columns / rows (unlike EDIT, which are filtered'; put 'for current records and don''t include the SCD2 etc cols).'; put '

Service Inputs

'; put '
SASCONTROLTABLE
'; put '|LIBDS:$41.|FILTER_RK:$5.|SEARCHTYPE:$4|SEARCHVAL:$1000'; put '|---|---|---|---'; put '|DC258467.MPE_X_TEST|-1|CHAR|Some String|'; put '

Service Outputs

'; put '
cols
'; put '@li DDTYPE'; put '@li FORMAT'; put '@li LABEL'; put '@li LENGTH'; put '@li NAME'; put '@li TYPE'; put '@li VARNUM'; put '
sasparams
'; put '@li FILTER_TEXT'; put '@li NOBS'; put '@li PK_FIELDS - string seperated list of primary key fields, if they exist'; put '@li TABLENAME'; put '@li TABLEURI'; put '@li VARS'; put '
viewdata
'; put 'The raw data from the target table.'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li dc_createdataset.sas'; put '@li dc_gettableid.sas'; put '@li mf_existds.sas'; put '@li mf_getvarcount.sas'; put '@li mf_nobs.sas'; put '@li mf_verifymacvars.sas'; put '@li mp_abort.sas'; put '@li mp_cntlout.sas'; put '@li mp_dsmeta.sas'; put '@li mp_getcols.sas'; put '@li mp_getpk.sas'; put '@li mp_jsonout.sas'; put '@li mp_searchdata.sas'; put '@li mp_validatecol.sas'; put '@li mpe_columnlevelsecurity.sas'; put '@li mpe_filtermaster.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '/* configure macvars */'; put '%global LIBDS FILTER_RK SEARCHVAL SEARCHTYPE FMT_IND;'; put '%let maxrows=250;'; put '/* avoid code injection */'; put '%let FMT_IND=0;'; put '%let SEARCHTYPE=;'; put '%let SEARCHVAL=;'; put '%let FILTER_RK=;'; put '%let LIBDS=;'; put '/**'; put '* Validate inputs'; put '*/'; put 'data work.intest;'; put 'length libds $41 filter_rk 8. searchval $100 searchtype $4;'; put 'set work.SASCONTROLTABLE;'; put '/* validate filter_rk */'; put 'if filter_rk le 0 then filter_rk=-1;'; put '/* check if the request is for a format catalog */'; put 'if substr(cats(reverse(libds)),1,3)=:''CF-'' then do;'; put 'libds=scan(libds,1,''-'');'; put 'putlog "Format Catalog Captured";'; put 'call symputx(''fmt_ind'',1);'; put 'end;'; put 'putlog (_all_)(=);'; put '/* validate libds */'; put '%mp_validatecol(LIBDS,LIBDS,is_libds)'; put 'if searchtype in (''CHAR'',''NUM'') then do;'; put 'searchval=tranwrd(searchval,''%'','''');'; put 'searchval=tranwrd(searchval,''&'','''');'; put 'searchval=tranwrd(searchval,'';'','''');'; put 'searchval=tranwrd(searchval,''"'','''');'; put 'call symputx(''searchtype'',searchtype);'; put 'call symputx(''searchval'',searchval);'; put 'end;'; put 'else if searchtype not in ('''',''NONE'') then do;'; put 'putlog ''ERR'' ''OR: Invalid searchtype:'' searchtype;'; put 'stop;'; put 'end;'; put 'if is_libds=0 then do;'; put 'putlog ''ERR'' ''OR: Invalid libds:'' libds;'; put 'stop;'; put 'end;'; put 'else do;'; put 'call symputx(''filter_rk'',filter_rk);'; put 'call symputx(''libds'',libds);'; put 'end;'; put 'output;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (%mf_verifymacvars(libds filter_rk fmt_ind)=0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem with macro inputs)'; put ')'; put '%mp_abort(iftrue= (%mf_nobs(work.intest)=0)'; put ',mac=&_program'; put ',msg=%str(Some err with service inputs)'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '/**'; put '* assign the Library'; put '*/'; put '%dc_assignlib(READ,%scan(&LIBDS,1,.))'; put '/* abort if looking for a format and the catalog doesn''t exist */'; put '%mp_abort(iftrue= (&fmt_ind=1 and %sysfunc(exist(&libds,CATALOG))=0)'; put ',mac=&_program..sas'; put ',msg=%str(Catalog &libds does not exist!)'; put ')'; put '/**'; put 'check if dataset can actually be opened - as library may exist but it may not'; put 'be possible to assign, and even if it can, the physical table may not exist'; put '**/'; put 'data _null_;'; put 'if &fmt_ind=0 then do;'; put 'dsid=open("&libds");'; put 'rc=close(dsid);'; put 'end;'; put 'else dsid=42;'; put 'call symputx(''existds'',dsid,''l'');'; put 'putlog ''dataset exists check:'' dsid;'; put 'run;'; put '/**'; put '* get the data'; put '*/'; put '%global dsobs;'; put '%let dsobs=0;'; put '%macro x();'; put '%if &existds>0 %then %do;'; put '%if &fmt_ind=1 %then %do;'; put '/* export format and point the libds to the output table from here on */'; put '%mp_cntlout('; put 'libcat=&libds'; put ',fmtlist=0'; put ',cntlout=work.fmtextract'; put ')'; put '%let libds=WORK.FMTEXTRACT;'; put '%end;'; put 'proc sql noprint;'; put 'select count(*) into: dsobs from &libds;'; put '%put preparing query;'; put '%mpe_filtermaster(VIEW,&libds,'; put 'dclib=&mpelib,'; put 'filter_rk=&filter_rk,'; put 'outref=filtref,'; put 'outds=work.query'; put ')'; put '%put printing generated filterquery:;'; put 'data _null_;'; put 'infile filtref;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%if &searchtype=NONE or "%trim(&searchtype) " = " " %then %do;'; put '/* get row count */'; put 'filename rows temp;'; put 'data _null_;'; put 'file rows;'; put 'infile filtref end=eof;'; put 'input;'; put 'if _n_=1 then do;'; put 'put ''proc sql;'';'; put 'put "select count(*) into: dsobs from &libds where";'; put 'end;'; put 'put _infile_;'; put 'if eof then put '';'';'; put 'run;'; put 'data _null_;'; put 'infile rows;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%inc rows;'; put '/* send actual data, filtered and row-capped */'; put 'data work.viewdata;'; put 'set &libds;'; put 'where %inc filtref;;'; put 'if _n_>&maxrows then stop;'; put 'run;'; put '%if %mf_nobs(work.viewdata)=0 %then %do;'; put 'data work.viewdata;'; put '/* send empty row if empty table to help with hot rendering */'; put 'output;'; put 'set work.viewdata;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data work.vwsearch/view=work.vwsearch;'; put 'set &libds;'; put 'where %inc filtref;;'; put 'run;'; put '%if %upcase(&searchtype)=CHAR %then %do;'; put '%mp_searchdata(lib=work'; put ',ds=vwsearch'; put ',string=%superq(searchval)'; put ',outobs=&maxrows'; put ')'; put '%end;'; put '%else %if %upcase(&searchtype)=NUM %then %do;'; put '%mp_searchdata(lib=work'; put ',ds=vwsearch'; put ',numval=%superq(searchval)'; put ',outobs=&maxrows'; put ')'; put '%end;'; put '%if %mf_existds(libds=MPSEARCH.vwsearch) %then %do;'; put '%let dsobs=%mf_nobs(MPSEARCH.vwsearch);'; put 'data viewdata;'; put 'set MPSEARCH.vwsearch;'; put 'if _n_<&maxrows;'; put 'run;'; put '%end;'; put '%else %do;'; put '%let dsobs=0;'; put 'data viewdata;'; put 'set &libds;'; put 'stop;'; put 'run;'; put '%end;'; put '%end;'; put '%end;'; put '%else %do;'; put '/* physical table is not accessible so create from metatadata definition */'; put '%dc_createdataset(libds=&libds,outds=viewdata)'; put 'data viewData;'; put 'output;'; put 'set viewdata;'; put 'run;'; put '/* ensure filtref and work.query exist to avoid downstream issues */'; put 'filename filtref temp;'; put 'data work.query;'; put 'file filtref;'; put 'x=0;'; put 'put x;'; put 'run;'; put '%end;'; put '%mend x; %x()'; put '/* apply column level security */'; put '%mpe_columnlevelsecurity(%scan(&libds,1,.),%scan(&libds,2,.),work.viewdata'; put ',mode=VIEW'; put ',clsds=&mpelib..mpe_column_level_security'; put ',groupds=work.groups /* was created in mpe_filtermaster */'; put ',outds=work.viewdata2'; put ',outmeta=work.cls_rules'; put ')'; put '/* get table uri (if sas 9) to enable linking direct to lineage */'; put '%dc_gettableid(libref=%scan(&libds,1,.)'; put ',ds=%scan(&libds,2,.)'; put ',outds=work.parambase'; put ')'; put 'data _null_;'; put 'infile filtref end=eof;'; put 'input;'; put 'length filter_text $32767;'; put 'retain filter_text;'; put 'filter_text=catx('' '',filter_text,_infile_);'; put 'if eof then do;'; put 'if cats(filter_text)=''1=1'' then filter_text='''';'; put 'call symputx(''filter_text'',filter_text);'; put 'end;'; put 'run;'; put '%mp_getpk(%scan(&libds,1,.), ds=%scan(&libds,2,.), outds=work.pk_fields)'; put '%let pk_fields=;'; put 'data _null_;'; put 'set work.pk_fields;'; put 'call symputx(''pk_fields'',pk_fields);'; put 'run;'; put 'data work.sasparams;'; put 'set work.parambase;'; put 'format FILTER_TEXT $32767.;'; put 'FILTER_TEXT=symget(''FILTER_TEXT'');'; put 'length PK_FIELDS $512;'; put 'PK_FIELDS=symget(''PK_FIELDS'');'; put 'nobs=&dsobs;'; put 'vars=%mf_getvarcount(viewdata);'; put 'maxrows=&maxrows;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%mp_getcols(&libds, outds=cols)'; put '%mp_dsmeta(&libds, outds=dsmeta)'; put '%webout(OPEN)'; put '%webout(OBJ,cls_rules)'; put '%webout(OBJ,cols)'; put '%webout(OBJ,dsmeta)'; put '%webout(OBJ,query)'; put '%webout(OBJ,sasparams)'; put '%webout(OBJ,viewData2,fmt=Y,showmeta=YES,dslabel=viewdata)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=viewlibarray; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file viewlibarray.sas'; put '@brief List the libraries for view access'; put '@details'; put '

SAS Macros

'; put '@li dc_getlibs.sas'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '@li mpe_getgroups.sas'; put '@li mm_webout.sas'; put '@li mf_existds.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%let keepvars=libraryref libraryname;'; put 'data _null_;'; put 'length keepvars $32;'; put 'set %sysfunc(ifc(%mf_existds(iwant),iwant,_null_));'; put 'call symputx(''keepvars'',keepvars);'; put 'run;'; put '/**'; put '* get full list of libraries'; put '*/'; put '%dc_getlibs(outds=work.mm_getLibs)'; put '/* get security groups */'; put '%mpe_getgroups(user=%mf_getuser(),outds=groups)'; put '/* get security settings */'; put 'data sec;'; put 'set &mpelib..mpe_security;'; put 'where &dc_dttmtfmt. lt tx_to and ACCESS_LEVEL=''VIEW'';'; put 'run;'; put '/* check for any matching groups */'; put 'proc sql noprint;'; put 'create table matches as'; put 'select * from sec'; put 'where upcase(sas_group) in (select upcase(groupname) from groups);'; put 'select count(*) into: securitygroupscount from matches;'; put 'select count(*) into: ALL_CNT from matches where libref=''*ALL*'';'; put '%put securitygroupscount=&securitygroupscount;'; put '%put ALL_CNT=&ALL_CNT;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%macro mpestp_viewlibs();'; put '%if not %symexist(DC_RESTRICT_VIEWER) %then %let DC_RESTRICT_VIEWER=NO;'; put '/* scenario 1 - user is in admin group, hence can view all libraries */'; put 'proc sql noprint;'; put 'select count(*) into: scenario1 from groups where groupname="&mpeadmins";'; put '%if &scenario1>0 %then %do;'; put '%put user in admin group (scenario1=&scenario1);'; put '%return;'; put '%end;'; put '/* scenario 2 - viewer unrestricted and no groups listed */'; put '%if &DC_RESTRICT_VIEWER=NO and &securitygroupscount=0 %then %do;'; put '%put DC_RESTRICT_VIEWER=&DC_RESTRICT_VIEWER;'; put '%put securitygroupscount=&securitygroupscount;'; put '%return;'; put '%end;'; put '/* scenario 3 - an *ALL* libref is listed */'; put '%if &all_cnt>0 %then %do;'; put '%put all_cnt=&all_cnt;'; put '%return;'; put '%end;'; put '/* scenario 4 - specific librefs listed */'; put '%if &securitygroupscount>0 %then %do;'; put '%put scenario 4;'; put '%put securitygroupscount=&securitygroupscount;'; put 'proc sql;'; put 'delete from mm_getLibs'; put 'where upcase(libraryref) not in (select upcase(libref) from matches);'; put '%return;'; put '%end;'; put '/* viewer restricted and no groups listed */'; put '%if &DC_RESTRICT_VIEWER=YES and &securitygroupscount=0 %then %do;'; put '%put DC_RESTRICT_VIEWER=&DC_RESTRICT_VIEWER;'; put '%put securitygroupscount=&securitygroupscount;'; put 'data mm_getlibs;'; put 'set mm_getlibs;'; put 'stop;'; put 'run;'; put '%return;'; put '%end;'; put '%mp_abort(iftrue= (1=1)'; put ',mac=&_program..sas'; put ',msg=%str(unhandled security logic error!)'; put ')'; put '%mend mpestp_viewlibs;'; put '%mpestp_viewlibs()'; put '%global dc_viewlib_check;'; put '/**'; put '* deal with invalid and duplicate library definitions'; put '*/'; put 'proc sort data=mm_getlibs;'; put 'by libraryref libraryname;'; put 'run;'; put 'data mm_getlibs;'; put 'set mm_getlibs;'; put 'by libraryref;'; put 'if symget(''dc_viewlib_check'')=''YES'' then do;'; put '/* note - invalid libraries can result in exception errors. If this happens,'; put 'configure the dc_viewlib_check variable to NO in Data Controller Settings'; put '*/'; put 'rc=libname(libraryref,,''meta'',cats(''library="'',libraryname,''";''));'; put 'drop rc;'; put 'if rc ne 0 then do;'; put 'putlog "NOTE: Library " libraryname " does not exist!!";'; put 'putlog (_all_) (=);'; put 'delete;'; put 'end;'; put 'end;'; put 'if not first.libraryref then delete;'; put 'run;'; put 'proc sort data=mm_getlibs (keep=&keepvars);'; put 'by libraryname;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR, mm_getLibs)'; put '%mm_webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=viewlibs; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file viewlibs.sas'; put '@brief List the libraries for view access'; put '@details'; put '

SAS Macros

'; put '@li dc_getlibs.sas'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '@li mpe_getgroups.sas'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '/**'; put '* get full list of libraries'; put '*/'; put '%dc_getlibs(outds=work.mm_getLibs)'; put '/* get security groups */'; put '%mpe_getgroups(user=%mf_getuser(),outds=groups)'; put '/* get security settings */'; put 'data sec;'; put 'set &mpelib..mpe_security;'; put 'where &dc_dttmtfmt.lt tx_to and ACCESS_LEVEL=''VIEW'';'; put 'run;'; put '/* check for any matching groups */'; put 'proc sql noprint;'; put 'create table matches as'; put 'select * from sec'; put 'where upcase(sas_group) in (select upcase(groupname) from groups);'; put 'select count(*) into: securitygroupscount from matches;'; put 'select count(*) into: ALL_CNT from matches where libref=''*ALL*'';'; put '%put securitygroupscount=&securitygroupscount;'; put '%put ALL_CNT=&ALL_CNT;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%macro mpestp_viewlibs();'; put '%if not %symexist(DC_RESTRICT_VIEWER) %then %let DC_RESTRICT_VIEWER=NO;'; put '/* scenario 1 - user is in admin group, hence can view all libraries */'; put 'proc sql noprint;'; put 'select count(*) into: scenario1 from groups where groupname="&mpeadmins";'; put '%if &scenario1>0 %then %do;'; put '%put user in admin group (scenario1=&scenario1);'; put '%return;'; put '%end;'; put '/* scenario 2 - viewer unrestricted and no groups listed */'; put '%if &DC_RESTRICT_VIEWER=NO and &securitygroupscount=0 %then %do;'; put '%put DC_RESTRICT_VIEWER=&DC_RESTRICT_VIEWER;'; put '%put securitygroupscount=&securitygroupscount;'; put '%return;'; put '%end;'; put '/* scenario 3 - an *ALL* libref is listed */'; put '%if &all_cnt>0 %then %do;'; put '%put all_cnt=&all_cnt;'; put '%return;'; put '%end;'; put '/* scenario 4 - specific librefs listed */'; put '%if &securitygroupscount>0 %then %do;'; put '%put scenario 4;'; put '%put securitygroupscount=&securitygroupscount;'; put 'proc sql;'; put 'delete from mm_getLibs'; put 'where upcase(libraryref) not in (select upcase(libref) from matches);'; put '%return;'; put '%end;'; put '/* viewer restricted and no groups listed */'; put '%if &DC_RESTRICT_VIEWER=YES and &securitygroupscount=0 %then %do;'; put '%put DC_RESTRICT_VIEWER=&DC_RESTRICT_VIEWER;'; put '%put securitygroupscount=&securitygroupscount;'; put 'data mm_getlibs;'; put 'set mm_getlibs;'; put 'stop;'; put 'run;'; put '%return;'; put '%end;'; put '%mp_abort(iftrue= (1=1)'; put ',mac=&_program..sas'; put ',msg=%str(unhandled security logic err!)'; put ')'; put '%mend mpestp_viewlibs;'; put '%mpestp_viewlibs()'; put '%global dc_viewlib_check;'; put '/**'; put '* deal with invalid and duplicate library definitions'; put '*/'; put 'proc sort data=mm_getlibs;'; put 'by libraryref libraryname;'; put 'run;'; put 'data mm_getlibs;'; put 'set mm_getlibs;'; put 'by libraryref;'; put 'if symget(''dc_viewlib_check'')=''YES'' then do;'; put '/* note - invalid libraries can result in exception errors. If this happens,'; put 'configure the dc_viewlib_check variable to NO in Data Controller Settings'; put '*/'; put 'rc=libname(libraryref,,''meta'',cats(''library="'',libraryname,''";''));'; put 'drop rc;'; put 'if rc ne 0 then do;'; put 'putlog "NOTE: Library " libraryname " does not exist!!";'; put 'putlog (_all_) (=);'; put 'delete;'; put 'end;'; put 'end;'; put 'if not first.libraryref then delete;'; put 'run;'; put 'proc sort data=mm_getlibs out=saslibs;'; put 'by libraryname;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,saslibs)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=viewtables; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file viewtables.sas'; put '@brief List the tables and format catalogs the user can view'; put '@details Provide a library and get list of tables and catalogs. Also return'; put 'the libinfo details.'; put '

Service Inputs

'; put '
SASControlTable
'; put 'Just one input - MPLIB (the libref to get tables and info for)'; put '|MPLIB:$char8.|'; put '|---|'; put '|SOMELIB|'; put '

Service Outputs

'; put '
work.mptables
'; put '|MEMNAME:$char32.|'; put '|---|'; put '|DS1|'; put '|DS2|'; put '|DS3|'; put 'etc'; put '
work.libinfo
'; put 'If attributes are empty, they don''t need to be shown on screen.'; put '|engine $|libname $|paths $|perms $|owners $|schemas $ |libid $|libsize $|table_cnt |'; put '|---|---|---|---|---|---|---|---|---|'; put '|V9|SOMELIB|"some/path"|rwxrwxr-x|sassrv|` `|` `|636MB|33|'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li mf_getuser.sas'; put '@li mpe_getgroups.sas'; put '@li mpe_getvars.sas'; put '@li mpeinit.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%global MPLIB;'; put '/* load parameters */'; put '%mpe_getvars(SASControlTable, SASControlTable)'; put '/**'; put '* assign the Library'; put '*/'; put '%put &=MPLIB;'; put '%dc_assignlib(READ,&MPLIB)'; put '%mp_abort(iftrue= (&syscc ne 0 )'; put ',mac=&_program..sas'; put ',msg=%str(Unable to assign &mplib library)'; put ')'; put '/**'; put '* get the tables'; put '*/'; put 'data members; /* empty table */'; put 'name='''';'; put 'memtype='''';'; put 'run;'; put 'ods output Members=Members;'; put 'proc datasets library=&mplib ;'; put 'quit;'; put '/* cannot avoid the proc datasets warn!ng for an empty lib */'; put '/* nolist means no output and nowarn has no effect */'; put '%put &=syscc;'; put 'data _null_;'; put 'if "&syscc" ne "0" then do;'; put 'putlog "Library &mplib is empty, setting syscc to zero";'; put 'call symputx(''syscc'',0);'; put 'end;'; put 'run;'; put '%put &=syscc;'; put 'proc sql;'; put 'create table work.mptables as'; put 'select distinct case when memtype=''CATALOG'' then cats(name,''-FC'')'; put 'else name end as memname'; put 'from members;'; put '/* get security groups */'; put '%mpe_getgroups(user=%mf_getuser(),outds=groups)'; put '/* get security settings */'; put 'data sec;'; put 'set &mpelib..mpe_security;'; put 'where &dc_dttmtfmt. lt tx_to and ACCESS_LEVEL=''VIEW'';'; put 'where also libref in (''*ALL*'',"%upcase(&mplib)");'; put 'run;'; put '/* check for any matching groups */'; put 'proc sql noprint;'; put 'create table matches as'; put 'select * from sec'; put 'where upcase(sas_group) in (select upcase(groupname) from groups);'; put 'select count(*) into: securitygroupscount from matches;'; put 'select count(*) into: ALL_CNT from matches'; put 'where libref=''*ALL*'''; put 'or (libref="&mplib" and dsn=''*ALL*'');'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%macro mpestp_viewtables();'; put '%if not %symexist(DC_RESTRICT_VIEWER) %then %let DC_RESTRICT_VIEWER=NO;'; put '/* scenario 1 - user is in admin group, hence can view all libraries */'; put 'proc sql noprint;'; put 'select count(*) into: scenario1 from groups where groupname="&mpeadmins";'; put '%if &scenario1>0 %then %return;'; put '/* scenario 2 - viewer unrestricted and no groups listed */'; put '%if &DC_RESTRICT_VIEWER=NO and &securitygroupscount=0 %then %return;'; put '/* scenario 3 - an *ALL* libref or DSN is listed */'; put '%if &all_cnt>0 %then %return;'; put '/* scenario 4 - specific tables listed */'; put '%if &securitygroupscount>0 %then %do;'; put 'proc sql;'; put 'delete from mptables'; put 'where upcase(memname) not in (select upcase(dsn) from sec);'; put '%return;'; put '%end;'; put '/* viewer restricted and no groups listed */'; put '%if &DC_RESTRICT_VIEWER=YES and &securitygroupscount=0 %then %do;'; put 'data mptables;'; put 'set mptables;'; put 'stop;'; put 'run;'; put '%return;'; put '%end;'; put '%mp_abort(iftrue= (1=1)'; put ',mac=&_program..sas'; put ',msg=%str(unhandled security logic error!)'; put ')'; put '%mend mpestp_viewtables;'; put '%mpestp_viewtables()'; put '/* get libinfo */'; put 'proc sql;'; put 'create table work.libinfo as'; put 'select a.engine,'; put 'a.libname,'; put 'a.paths,'; put 'a.perms,'; put 'a.owners,'; put 'a.schemas,'; put 'a.libid,'; put 'coalesce(b.libsize,0) as libsize,'; put 'coalesce(b.table_cnt,0) as table_cnt'; put 'from &mpelib..mpe_datacatalog_libs(where=(&dc_dttmtfmt. lt tx_to)) a'; put 'left join &mpelib..mpe_datastatus_libs(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on a.libref=b.libref'; put 'where a.libref="&MPLIB";'; put '%webout(OPEN)'; put '%webout(OBJ,mptables)'; put '%webout(OBJ,libinfo)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/usernav; %let service=usergroupsbymember; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getusers('; put 'outds=work.mm_getusers,'; put 'user=0'; put ')/*/STORE SOURCE*/;'; put 'filename response temp;'; put '%if %superq(user)=0 %then %do;'; put 'proc metadata in= '''; put '$METAREPOSITORY'; put 'Person'; put 'SAS'; put '0'; put ''; put ''; put ''; put ''; put ''; put ''''; put 'out=response;'; put 'run;'; put '%end;'; put '%else %do;'; put 'filename inref temp;'; put 'data _null_;'; put 'file inref;'; put 'put "";'; put 'put "$METAREPOSITORY";'; put 'put "Person";'; put 'put "SAS";'; put 'put "";'; put 'put "128";'; put 'put "";'; put 'put "";'; put 'put '''';'; put 'put "";'; put 'length string $10000;'; put 'string=cats('''');'; put 'put string;'; put 'put "";'; put 'put "";'; put 'run;'; put 'proc metadata in=inref out=response;'; put 'run;'; put '%end;'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Person";'; put 'put "";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Person/@Id";'; put 'put "characterstring32";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Person/@Name";'; put 'put "characterstring256";'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASObjects out=&outds;'; put 'by name;'; put 'run;'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getusers;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file usergroupsbymember.sas'; put '@brief List the groups a member is in'; put '@details Runs without \%mpeinit() - this enables the dropdown to be populated'; put 'during configuration, when the settings service does not yet exist.'; put '

SAS Macros

'; put '@li mp_abort.sas'; put '@li mm_getusers.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%macro x();'; put '%if %sysfunc(exist(work.iwant)) ne 1 %then %do;'; put '/* macro called by configurator - grab the URI of calling user */'; put '%mm_getusers(user=&_metaperson, outds=work.iwant)'; put '%end;'; put '%mend x;'; put '%x()'; put 'data groups'; put 'roles(rename=(groupuri=roleuri groupname=rolename groupdesc=roledesc)) ;'; put 'length uri groupuri groupname groupdesc publictype str $256;'; put 'call missing(of _all_);'; put 'set iwant;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "WARNING: No groups found for ";'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri, "PublicType", PublicType);'; put 'a+1;'; put 'if PublicType = ''Role'' then output roles;'; put 'else output groups;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'keep groupuri groupname groupdesc;'; put 'if _n_=1 then delete; /* no content so don''t send empty row */'; put 'run;'; put 'data emails;'; put 'keep email type;'; put 'length emailuri email type uri str $256;'; put 'call missing(of _all_);'; put 'set iwant;'; put '/* credit'; put 'https://seleritysas.com/data-step-view-of-email-addresses-in-sas-metadata'; put '*/'; put 'emailrc=1;email_count=1;'; put 'do while(emailrc>0);'; put '/* Get Email from Person */'; put 'emailrc=metadata_getnasn(uri,"EmailAddresses",email_count,emailuri);'; put 'arc=1;'; put 'if (emailrc>0) then do;'; put 'arc=metadata_getattr(emailuri,"Address",email);'; put 'arc=metadata_getattr(emailuri,"EmailType",type);'; put 'end;'; put 'if (arc=0) then output emails;'; put 'email_count=email_count+1;'; put 'end;'; put 'run;'; put 'data logins;'; put 'length domain userid loginuri domainuri uri $256;'; put 'keep domain userid;'; put 'call missing(of _all_);'; put 'set iwant;'; put 'login_count=1;'; put 'do while(metadata_getnasn(uri,"Logins",login_count,loginuri)>0);'; put 'rc=metadata_getattr(loginuri,"UserID",userid);'; put 'rc=metadata_getnasn(loginuri,"Domain",1,domainuri);'; put 'rc=metadata_getattr(domainuri,"Name",domain);'; put 'output;'; put 'login_count+1;'; put 'end;'; put 'run;'; put 'data info;'; put 'length uri name displayname metadatacreated metadataupdated $256;'; put 'keep name displayname metadatacreated metadataupdated;'; put 'call missing(of _all_);'; put 'set iwant;'; put 'rc=metadata_getattr(uri,"Name",name);'; put 'rc=metadata_getattr(uri,"DisplayName",displayname);'; put 'rc=metadata_getattr(uri,"MetadataCreated",MetadataCreated);'; put 'rc=metadata_getattr(uri,"MetadataUpdated",MetadataUpdated);'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,emails)'; put '%webout(OBJ,groups)'; put '%webout(OBJ,roles)'; put '%webout(OBJ,logins)'; put '%webout(OBJ,info)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=usermembers; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getusers('; put 'outds=work.mm_getusers,'; put 'user=0'; put ')/*/STORE SOURCE*/;'; put 'filename response temp;'; put '%if %superq(user)=0 %then %do;'; put 'proc metadata in= '''; put '$METAREPOSITORY'; put 'Person'; put 'SAS'; put '0'; put ''; put ''; put ''; put ''; put ''; put ''''; put 'out=response;'; put 'run;'; put '%end;'; put '%else %do;'; put 'filename inref temp;'; put 'data _null_;'; put 'file inref;'; put 'put "";'; put 'put "$METAREPOSITORY";'; put 'put "Person";'; put 'put "SAS";'; put 'put "";'; put 'put "128";'; put 'put "";'; put 'put "";'; put 'put '''';'; put 'put "";'; put 'length string $10000;'; put 'string=cats('''');'; put 'put string;'; put 'put "";'; put 'put "";'; put 'run;'; put 'proc metadata in=inref out=response;'; put 'run;'; put '%end;'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Person";'; put 'put "";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Person/@Id";'; put 'put "characterstring32";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Person/@Name";'; put 'put "characterstring256";'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASObjects out=&outds;'; put 'by name;'; put 'run;'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getusers;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getusers(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getusers(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getusers(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getusers;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file usermembers.sas'; put '@brief List all SAS users'; put '@details Gets a list of all SAS users'; put '

SAS Macros

'; put '@li dc_getusers.sas'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%dc_getusers(outds=users)'; put '%webout(OPEN)'; put '%webout(OBJ,users)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=usermembersbygroup; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file usermembersbygroup.sas'; put '@brief List the members of a group'; put '

SAS Macros

'; put '@li mp_abort.sas'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put 'data sasMembers ;'; put 'attrib uriGrp uriMem GroupId GroupName Group_or_Role MemberName MemberType'; put 'MemberUpdated membercreated emailuri length=$64'; put 'GroupDesc email length=$256'; put 'rcGrp rcMem rc i j length=3;'; put 'call missing (of _all_);'; put 'drop uriGrp rcGrp rcMem rc i j;'; put 'set iwant;'; put 'i=1;'; put '* Grab the URI for the first Group ;'; put 'rcGrp=metadata_getnobj(groupid,i,uriGrp);'; put '* If Group found, enter do loop ;'; put 'if rcGrp>0 then do;'; put 'call missing (rcMem,uriMem,GroupId,GroupName,Group_or_Role'; put ',MemberName,MemberType);'; put '* get group info ;'; put 'rc = metadata_getattr(uriGrp,"Id",GroupId);'; put 'rc = metadata_getattr(uriGrp,"Name",GroupName);'; put 'rc = metadata_getattr(uriGrp,"PublicType",Group_or_Role);'; put 'rc = metadata_getattr(uriGrp,"Desc",GroupDesc);'; put 'j=1;'; put 'do while (metadata_getnasn(uriGrp,"MemberIdentities",j,uriMem) > 0);'; put 'call missing (MemberName,MemberType);'; put 'rc = metadata_getattr(uriMem,"Name",MemberName);'; put 'rc = metadata_getattr(uriMem,"PublicType",MemberType);'; put 'rc=metadata_getattr(uriMem, "MetadataCreated", MemberCreated);'; put 'rc=metadata_getattr(uriMem, "MetadataUpdated", MemberUpdated);'; put 'emailrc=metadata_getnasn(uriMem,"EmailAddresses",1,emailuri);'; put 'if (emailrc>0) then rc=metadata_getattr(emailuri,"Address",email);'; put 'output;'; put 'j+1;'; put 'call missing(email,emailuri);'; put 'end;'; put 'end;'; put 'if _n_=1 then delete;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,sasMembers)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=usermembersbyrole; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file usermembersbyrole.sas'; put '@brief List the members of a role'; put '

SAS Macros

'; put '@li mp_abort.sas'; put '@li mpeinit.sas'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put 'data sasMembers sasgroups;'; put 'attrib uriGrp uriMem roleId roleName Group_or_Role MemberName MemberType'; put 'MemberUpdated membercreated emailuri length=$64'; put 'roleDesc email length=$256'; put 'rcGrp rcMem rc i j length=3;'; put 'call missing (of _all_);'; put 'set iwant;'; put 'i=1;'; put '* Grab the URI for the first Group ;'; put 'rcGrp=metadata_getnobj(roleid,i,uriGrp);'; put '* If Group found, enter do loop ;'; put 'if rcGrp>0 then do;'; put 'call missing (rcMem,uriMem,roleId,roleName,Group_or_Role'; put ',MemberName,MemberType,roleDesc);'; put '* get group info ;'; put 'rc = metadata_getattr(uriGrp,"Id",roleId);'; put 'rc = metadata_getattr(uriGrp,"Name",roleName);'; put 'rc = metadata_getattr(uriGrp,"PublicType",Group_or_Role);'; put 'rc = metadata_getattr(uriGrp,"Desc",roleDesc);'; put 'j=1;'; put 'if Group_or_Role=''Role'' then do while'; put '(metadata_getnasn(uriGrp,"MemberIdentities",j,uriMem) > 0);'; put 'call missing (MemberName,MemberType);'; put 'call missing(email,emailuri);'; put 'rc = metadata_getattr(uriMem,"Name",MemberName);'; put 'rc = metadata_getattr(uriMem,"PublicType",MemberType);'; put 'rc=metadata_getattr(uriMem, "MetadataCreated", MemberCreated);'; put 'rc=metadata_getattr(uriMem, "MetadataUpdated", MemberUpdated);'; put 'emailrc=metadata_getnasn(uriMem,"EmailAddresses",1,emailuri);'; put 'if (emailrc>0) then rc=metadata_getattr(emailuri,"Address",email);'; put 'if membertype=''UserGroup'' then output sasgroups;'; put 'else output sasmembers;'; put 'j+1;'; put 'end;'; put 'end;'; put 'if _n_=1 then delete; /* no roles so don''t send empty row */'; put 'keep uriMem membertype membername MemberCreated MemberUpdated email;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,sasGroups)'; put '%webout(OBJ,sasMembers)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=userroles; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getroles('; put 'outds=work.mm_getroles'; put ')/*/STORE SOURCE*/;'; put 'filename response temp;'; put 'options noquotelenmax;'; put 'proc metadata in= ''$METAREPOSITORY'; put 'IdentityGroupSAS388'; put ''; put ''; put ''; put ''; put ''''; put 'out=response;'; put 'run;'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/IdentityGroup";'; put 'put "";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/IdentityGroup/@Id";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/IdentityGroup/@Name";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/IdentityGroup/@Desc";'; put 'put "";'; put 'put "characterstring500";'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.roles out=&outds;'; put 'by rolename;'; put 'run;'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getroles;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getroles(outds=mm_getroles);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getroles(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getroles(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getroles;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file userroles.sas'; put '@brief List all SAS Roles'; put '@details Gets a list of all SAS Roles'; put '

SAS Macros

'; put '@li dc_getroles.sas'; put '@li mpeinit.sas'; put '@author 4GL Apps Ltd. Data Controller is free for up to 5 users and may be'; put 'downloaded from here: https://4gl.uk/dcdeploy'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%dc_getroles(outds=roles)'; put '%webout(OPEN)'; put '%webout(OBJ,roles)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/validations; %let service=columns_in_libds; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mp_validatecol(incol,rule,outcol);'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename();'; put '%if &rule=ISINT %then %do;'; put '&outcol=0;'; put 'if not missing(&incol) then do;'; put '&tempcol=input(&incol,?? best32.);'; put 'if not missing(&tempcol) then if mod(&tempcol,1)=0 then &outcol=1;'; put 'end;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=ISNUM %then %do;'; put '/*'; put 'credit SØREN LASSEN'; put 'https://sasmacro.blogspot.com/2009/06/welcome-isnum-macro.html'; put '*/'; put '&tempcol=input(&incol,?? best32.);'; put 'if missing(&tempcol) then &outcol=0;'; put 'else &outcol=1;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=LIBDS %then %do;'; put '/* match libref.dataset */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}\.[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for LIBDS";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%else %if &rule=FORMAT %then %do;'; put '/* match valid format - regex could probably be improved */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z\$]\w{0,31}\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for FORMAT";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%mend mp_validatecol;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Generic validator for table columns'; put '@details The input table is simply one row from the target table in table'; put 'called "work.source_row".'; put 'Available macro variables:'; put '@li MPELIB - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Inputs

'; put '
work.sourcerow
'; put 'Has source table structure.'; put '

Service Outputs

'; put 'The values provided below are generic samples - we encourage you to replace'; put 'these with realistic values in your own deployments.'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5||'; put '|1|DISCOUNT_RT|"40%"|N|0.4||'; put '|1|DISCOUNT_RT|"30%"|N|0.3||'; put '|1|CURRENCY_SYMBOL|"GBP"|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|"RSD"|C||"RSD"|'; put '|2|DISCOUNT_RT|"50%"|N|0.5||'; put '|2|DISCOUNT_RT|"40%"|N|0.4||'; put '|2|CURRENCY_SYMBOL|"EUR"|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|"HKD"|C||"HKD"|'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li mf_getuniquename.sas'; put '@li mp_abort.sas'; put '@li mp_validatecol.sas'; put '**/'; put '/* send back the raw and formatted values */'; put '%let tgtlibds=0;'; put '%let varlibds=%mf_getuniquename();'; put '%let vartgtlibds=%mf_getuniquename();'; put '%let var_is_libds=%mf_getuniquename();'; put 'data _null_;'; put 'length xl_libref base_lib select_lib rls_libref cls_libref libref $8'; put 'xl_table base_ds select_ds rls_table cls_table dsn $32;'; put 'if _n_=1 then call missing(of _all_);'; put 'set work.source_row;'; put '&varlibds=symget(''libds'');'; put 'if &varlibds="&mpelib..MPE_EXCEL_CONFIG"'; put 'then &vartgtlibds=cats(xl_libref,''.'',xl_table);'; put 'else if &varlibds="&mpelib..MPE_VALIDATIONS"'; put 'then &vartgtlibds=cats(BASE_LIB,''.'',BASE_DS);'; put 'else if &varlibds="&mpelib..MPE_SELECTBOX"'; put 'then &vartgtlibds=cats(select_lib,''.'',select_ds);'; put 'else if &varlibds="&mpelib..MPE_ROW_LEVEL_SECURITY"'; put 'then &vartgtlibds=cats(RLS_LIBREF,''.'',RLS_TABLE);'; put 'else if &varlibds="&mpelib..MPE_COLUMN_LEVEL_SECURITY"'; put 'then &vartgtlibds=cats(CLS_LIBREF,''.'',CLS_TABLE);'; put 'else if &varlibds="&mpelib..MPE_TABLES"'; put 'then &vartgtlibds=cats(LIBREF,''.'',DSN);'; put '/* validate libds */'; put '%mp_validatecol(&vartgtlibds,LIBDS,&var_is_libds)'; put 'if &var_is_libds=1 then call symputx(''tgtlibds'',&vartgtlibds);'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= ("&tgtlibds" ="0" )'; put ',mac=&_program..sas'; put ',msg=%str(Unable to extract libds vars from &libds inputs for &variable_nm)'; put ')'; put '%dc_assignlib(READ,%scan(&tgtlibds,1,.))'; put 'proc contents noprint data=&tgtlibds'; put 'out=work.DYNAMIC_VALUES (keep=name rename=(name=display_value) );'; put 'run;'; put 'data work.DYNAMIC_VALUES;'; put 'set work.DYNAMIC_VALUES;'; put 'raw_value=upcase(display_value);'; put 'format raw_value;'; put 'run;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=libraries_all; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Generic validator for libraries'; put '@details The input table is simply one row from the target table in table'; put 'called "work.source_row".'; put 'Available macro variables:'; put '@li MPELIB - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Outputs

'; put 'The values provided below are generic samples - we encourage you to replace'; put 'these with realistic values in your own deployments.'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5||'; put '|1|DISCOUNT_RT|"40%"|N|0.4||'; put '|1|DISCOUNT_RT|"30%"|N|0.3||'; put '|1|CURRENCY_SYMBOL|"GBP"|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|"RSD"|C||"RSD"|'; put '|2|DISCOUNT_RT|"50%"|N|0.5||'; put '|2|DISCOUNT_RT|"40%"|N|0.4||'; put '|2|CURRENCY_SYMBOL|"EUR"|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|"HKD"|C||"HKD"|'; put '

SAS Macros

'; put '@li dc_getlibs.sas'; put '**/'; put '/**'; put '* get full list of libraries'; put '*/'; put '%dc_getlibs(outds=work.mm_getLibs)'; put 'proc sql;'; put 'create table work.DYNAMIC_VALUES as'; put 'select distinct libraryname as display_value,'; put 'upcase(libraryref) as raw_value'; put 'from work.mm_getLibs'; put 'order by 1;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=libraries_editable; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Generic validator for editable libraries'; put '@details The input table is simply one row from the target table in table'; put 'called "work.source_row".'; put 'Available macro variables:'; put '@li MPELIB - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Outputs

'; put 'The values provided below are generic samples - we encourage you to replace'; put 'these with realistic values in your own deployments.'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5||'; put '|1|DISCOUNT_RT|"40%"|N|0.4||'; put '|1|DISCOUNT_RT|"30%"|N|0.3||'; put '|1|CURRENCY_SYMBOL|"GBP"|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|"RSD"|C||"RSD"|'; put '|2|DISCOUNT_RT|"50%"|N|0.5||'; put '|2|DISCOUNT_RT|"40%"|N|0.4||'; put '|2|CURRENCY_SYMBOL|"EUR"|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|"HKD"|C||"HKD"|'; put '**/'; put '/* send back the raw and formatted values */'; put 'proc sql;'; put 'create table work.DYNAMIC_VALUES as'; put 'select distinct libref as display_value,'; put 'upcase(libref) as raw_value'; put 'from &mpelib..mpe_tables'; put 'where &dc_dttmtfmt. < tx_to'; put 'order by 1;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=mpe_alerts.alert_lib; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief fetch extended values for alert_lib'; put '@details Fetches libraries from mpe_tables, creates extended values for'; put 'alert_ds, and marks "*ALL*" as the forced (default) value.'; put 'Available macro variables:'; put '@li DC_LIBREF - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Outputs

'; put 'Output should be a single table called "work.dynamic_values" in the format'; put 'below. display_value should always be character, raw_value is unformatted'; put 'character/numeric.'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put 'The FORCED_VALUE column can be used to force an extended value to be selected'; put 'by default when a particular value is chosen.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|FORCED_VALUE|'; put '|---|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5||.|'; put '|1|DISCOUNT_RT|"40%"|N|0.4||0|'; put '|1|DISCOUNT_RT|"30%"|N|0.3||1|'; put '|1|CURRENCY_SYMBOL|"GBP"|C||"GBP"|.|'; put '|1|CURRENCY_SYMBOL|"RSD"|C||"RSD"|.|'; put '|2|DISCOUNT_RT|"50%"|N|0.5||.|'; put '|2|DISCOUNT_RT|"40%"|N|0.4||1|'; put '|2|CURRENCY_SYMBOL|"EUR"|C||"EUR"|.|'; put '|2|CURRENCY_SYMBOL|"HKD"|C||"HKD"|1|'; put '

SAS Macros

'; put '@li dc_getlibs.sas'; put '**/'; put '%mp_abort(iftrue= ("%upcase(&libds)" ne "&DC_LIBREF..MPE_ALERTS" )'; put ',mac=&_program'; put ',msg=%str('; put 'Invalid validation, expected MPE_ALERTS.ALERT_LIB, got %superq(libds)'; put ')'; put ')'; put 'proc sql;'; put 'create table work.source as'; put 'select libref,dsn'; put 'from &DC_LIBREF..MPE_TABLES'; put 'where tx_to > &dc_dttmtfmt.'; put 'order by 1,2;'; put 'data work.DYNAMIC_VALUES (keep=display_index raw_value display_value);'; put 'set work.source end=last;'; put 'by libref;'; put 'if last.libref then do;'; put 'display_index+1;'; put 'raw_value=libref;'; put 'display_value=libref;'; put 'output;'; put 'end;'; put 'if last then do;'; put 'display_index+1;'; put 'raw_value=''*ALL*'';'; put 'display_value=''*ALL*'';'; put 'output;'; put 'end;'; put 'run;'; put 'data work.dynamic_extended_values(keep=display_index extra_col_name display_type'; put 'display_value RAW_VALUE_CHAR raw_value_num forced_value);'; put 'set work.source end=last;'; put 'by libref dsn;'; put 'retain extra_col_name ''ALERT_DS'';'; put 'retain display_type ''C'';'; put 'retain raw_value_num .;'; put 'raw_value_char=dsn;'; put 'display_value=dsn;'; put 'forced_value=0;'; put 'if first.libref then display_index+1;'; put 'if last.libref then do;'; put 'display_value=''*ALL*'';'; put 'raw_value_char=''*ALL*'';'; put 'forced_value=1;'; put 'output;'; put 'end;'; put 'else output;'; put 'run;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=mpe_tables.dsn; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief fetch extended values for DSN'; put '@details Fetches datasets in a library, and ALSO fetches a list of numeric'; put 'vars for each dataset for use in adjacent columns (such as VAR_PROCESSED,'; put 'TX_TO etc).'; put 'Available macro variables:'; put '@li MPELIB - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Outputs

'; put 'Output should be a single table called "work.dynamic_values" in the format'; put 'below. display_value should always be character, raw_value is unformatted'; put 'character/numeric.'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put 'The FORCED_VALUE column can be used to force an extended value to be selected'; put 'by default when a particular value is chosen.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|FORCED_VALUE|'; put '|---|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5||.|'; put '|1|DISCOUNT_RT|"40%"|N|0.4||0|'; put '|1|DISCOUNT_RT|"30%"|N|0.3||1|'; put '|1|CURRENCY_SYMBOL|"GBP"|C||"GBP"|.|'; put '|1|CURRENCY_SYMBOL|"RSD"|C||"RSD"|.|'; put '|2|DISCOUNT_RT|"50%"|N|0.5||.|'; put '|2|DISCOUNT_RT|"40%"|N|0.4||1|'; put '|2|CURRENCY_SYMBOL|"EUR"|C||"EUR"|.|'; put '|2|CURRENCY_SYMBOL|"HKD"|C||"HKD"|1|'; put '

SAS Macros

'; put '@li dc_getlibs.sas'; put '**/'; put '/* send back the raw and formatted values */'; put '%let tgtlib=0;'; put '%let varlibds=%mf_getuniquename();'; put '%let vartgtlib=%mf_getuniquename();'; put '%let var_is_lib=%mf_getuniquename();'; put 'data _null_;'; put 'length &varlibds $41 &vartgtlib $8;'; put 'set work.source_row;'; put '&varlibds=upcase(symget(''libds''));'; put 'if &varlibds="&mpelib..MPE_TABLES" then &vartgtlib=LIBREF;'; put 'else putlog "something unexpected happened";'; put '/* validate name */'; put 'if nvalid(&vartgtlib,''v7'') then call symputx(''tgtlib'',&vartgtlib);'; put 'call symputx(''vartgtlib'',&vartgtlib);'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= ("&tgtlib" ="0" )'; put ',mac=&_program..sas'; put ',msg=%str(Invalid library - %superq(vartgtlib))'; put ',errds=work.dc_error_response'; put ')'; put '%dc_assignlib(READ,&tgtlib)'; put 'proc sql;'; put 'create table work.source as'; put 'select upcase(memname) as memname'; put ',upcase(name) as name'; put ',type'; put 'from dictionary.columns'; put 'where libname="&TGTLIB"'; put 'and memtype=''DATA'';'; put 'create table work.members as'; put 'select distinct memname as display_value'; put 'from work.source;'; put 'data work.DYNAMIC_VALUES;'; put 'set work.members;'; put 'raw_value=display_value;'; put 'display_index=_n_;'; put 'run;'; put 'proc sql;'; put 'create table work.dynamic_extended_values as'; put 'select a.display_index'; put ',b.name as display_value'; put ',"C" as display_type'; put ',b.name as RAW_VALUE_CHAR'; put ',. as RAW_VALUE_NUM'; put 'from work.dynamic_values a'; put 'left join work.source b'; put 'on a.display_value=b.memname'; put 'where b.type=''num'';'; put 'data work.dynamic_extended_values;'; put 'set work.DYNAMIC_EXTENDED_VALUES;'; put 'extra_col_name=''VAR_PROCESSED'';output;'; put 'extra_col_name=''VAR_TXFROM'';output;'; put 'extra_col_name=''VAR_TXTO'';output;'; put 'extra_col_name=''VAR_BUSFROM'';output;'; put 'extra_col_name=''VAR_BUSTO'';output;'; put 'run;'; put '/* set some force flags */'; put 'data work.dynamic_extended_values;'; put 'set work.DYNAMIC_EXTENDED_VALUES;'; put 'forced_value=0;'; put 'if extra_col_name=''VAR_TXFROM'' & raw_value_char=''TX_FROM'' then forced_value=1;'; put 'if extra_col_name=''VAR_TXTO'' & raw_value_char=''TX_TO'' then forced_value=1;'; put 'run;'; put 'proc sort;'; put 'by extra_col_name display_index;'; put 'run;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=mpe_x_test.some_num; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Generic validator for libraries'; put '@details The input table is simply one row from the target table in table'; put 'called "work.source_row".'; put 'Available macro variables:'; put '@li DC_LIBREF - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Outputs

'; put 'Output should be a single table called "work.dynamic_values" in the format'; put 'below. display_value should always be character, raw_value is unformatted'; put 'character/numeric.'; put '|DISPLAY_VALUE:$|RAW_VALUE:??|'; put '|---|---|'; put '|$44.00|44|'; put '

SAS Macros

'; put '@li dc_getlibs.sas'; put '**/'; put 'proc sql;'; put 'create table work.DYNAMIC_VALUES as'; put 'select distinct cats(some_num) as display_value,'; put 'some_num as raw_value'; put 'from &libds'; put 'order by 1;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=sas_groups; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getgroups(outds=mm_getlibs);'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getgroups(outds=&outds,repo=foundation)'; put '%do x=1 %to &repocnt;'; put '%mm_getgroups(outds=&outds.a, repo=&&repo&x)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'proc sort data=&outds noduprec;'; put 'by groupname;'; put 'run;'; put '%mend dc_getgroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief validating the mpe_security.sas_group column'; put '@details The input table is simply one row from the target table in table'; put 'called "work.source_row".'; put 'Available macro variables:'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Outputs

'; put 'The values provided below are generic samples - we encourage you to replace'; put 'these with realistic values in your own deployments.'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5||'; put '|1|DISCOUNT_RT|"40%"|N|0.4||'; put '|1|DISCOUNT_RT|"30%"|N|0.3||'; put '|1|CURRENCY_SYMBOL|"GBP"|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|"RSD"|C||"RSD"|'; put '|2|DISCOUNT_RT|"50%"|N|0.5||'; put '|2|DISCOUNT_RT|"40%"|N|0.4||'; put '|2|CURRENCY_SYMBOL|"EUR"|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|"HKD"|C||"HKD"|'; put '

SAS Macros

'; put '@li dc_getgroups.sas'; put '**/'; put '%dc_getgroups(outds=groups)'; put 'proc sql;'; put 'create table work.DYNAMIC_VALUES as'; put 'select distinct groupname as display_value,'; put 'groupname as raw_value'; put 'from work.groups'; put 'order by 1;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=tables_all; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Generic validator for tables in a library'; put '@details The input table is simply one row from the target table in table'; put 'called "work.source_row".'; put 'Available macro variables:'; put '@li MPELIB - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Outputs

'; put 'The values provided below are generic samples - we encourage you to replace'; put 'these with realistic values in your own deployments.'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5||'; put '|1|DISCOUNT_RT|"40%"|N|0.4||'; put '|1|DISCOUNT_RT|"30%"|N|0.3||'; put '|1|CURRENCY_SYMBOL|"GBP"|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|"RSD"|C||"RSD"|'; put '|2|DISCOUNT_RT|"50%"|N|0.5||'; put '|2|DISCOUNT_RT|"40%"|N|0.4||'; put '|2|CURRENCY_SYMBOL|"EUR"|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|"HKD"|C||"HKD"|'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '**/'; put '/* send back the raw and formatted values */'; put '%let tgtlib=0;'; put '%let varlibds=%mf_getuniquename();'; put '%let vartgtlib=%mf_getuniquename();'; put '%let var_is_lib=%mf_getuniquename();'; put 'data _null_;'; put 'length &varlibds $41 &vartgtlib $8 libref $8 rls_libref $8;'; put 'if _n_=1 then call missing(of _all_);'; put 'set work.source_row;'; put '&varlibds=upcase(symget(''libds''));'; put 'if &varlibds="&mpelib..MPE_TABLES" then &vartgtlib=LIBREF;'; put 'else if &varlibds="&mpelib..MPE_ROW_LEVEL_SECURITY"'; put 'then &vartgtlib=RLS_LIBREF;'; put 'else if &varlibds="&mpelib..MPE_COLUMN_LEVEL_SECURITY"'; put 'then &vartgtlib=CLS_LIBREF;'; put '/* validate name */'; put 'if nvalid(&vartgtlib,''v7'') then call symputx(''tgtlib'',&vartgtlib);'; put 'call symputx(''vartgtlib'',&vartgtlib);'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= ("&tgtlib" ="0" )'; put ',mac=&_program..sas'; put ',msg=%str(Invalid library - %superq(vartgtlib))'; put ',errds=work.dc_error_response'; put ')'; put '%dc_assignlib(READ,&tgtlib)'; put 'data members; /* empty table */'; put 'name='' '';'; put 'run;'; put 'ods output Members=Members;'; put 'proc datasets library=&tgtlib ;'; put 'run;'; put '/* send back the raw and formatted values */'; put 'proc sql;'; put 'create table work.DYNAMIC_VALUES as'; put 'select distinct name as display_value,'; put 'upcase(name) as raw_value'; put 'from work.members'; put 'where MemType=''DATA'''; put 'order by 1;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=tables_editable; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(''"'',tranwrd(symget(''syserrortext''),''"'',''\"''),''"'');'; put 'put ",""SYSERRORTEXT"" : " syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(''"'',tranwrd(symget(''syswarningtext''),''"'',''\"''),''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Generic validator for editable libraries'; put '@details The input table is simply one row from the target table in table'; put 'called "work.source_row".'; put 'Available macro variables:'; put '@li MPELIB - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Inputs

'; put '
work.source_row
'; put '|libref:$8|'; put '|somelib|'; put '

Service Outputs

'; put 'The values provided below are generic samples - we encourage you to replace'; put 'these with realistic values in your own deployments.'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5|` `|'; put '|1|DISCOUNT_RT|"40%"|N|0.4|` `|'; put '|1|DISCOUNT_RT|"30%"|N|0.3|` `|'; put '|1|CURRENCY_SYMBOL|"GBP"|C|` `|"GBP"|'; put '|1|CURRENCY_SYMBOL|"RSD"|C|` `|"RSD"|'; put '|2|DISCOUNT_RT|"50%"|N|0.5|` `|'; put '|2|DISCOUNT_RT|"40%"|N|0.4|` `|'; put '|2|CURRENCY_SYMBOL|"EUR"|C|` `|"EUR"|'; put '|2|CURRENCY_SYMBOL|"HKD"|C|` `|"HKD"|'; put '**/'; put '/* send back the raw and formatted values */'; put 'data _null_;'; put 'var=symget(''variable_nm'');'; put 'libds=symget(''libds'');'; put 'if libds="&mpelib..MPE_EXCEL_CONFIG" and var=''XL_TABLE'' then do;'; put 'call symputx(''srccol'',''XL_LIBREF'');'; put 'end;'; put 'else call symputx(''srccol'',''libref'');'; put 'run;'; put 'proc sql;'; put 'create table work.DYNAMIC_VALUES as'; put 'select distinct dsn as display_value,'; put 'upcase(dsn) as raw_value'; put 'from &mpelib..mpe_tables'; put '(where=(&dc_dttmtfmt. < tx_to))'; put 'where libref in (select &srccol from work.source_row)'; put 'order by 1;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/web9; %let service=index-html; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5EYXRhIENvbnRyb2xsZXIgZm9yIFNBU8KuPC90aXRsZT4KICAgIDwhLS0gPGJhc2UgaHJlZj0iLyI+IC0tPgoKICAgIDwhLS0gbWV0YSB0YWdzIC0tPgogICAgPG1l''@;'; put 'put ''dGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkNhcHR1cmUsIFJldmlldywgYW5kIEFwcHJvdmUiLz4KICAgIDxtZXRhIGl0ZW1wcm9wPSJuYW1lIiBjb250ZW50PSJEYXRhIENvbnRyb2xsZXIgZm9yIFNBU8KuIi8+CiAgICA8bWV0YSBpdGVtcHJvcD0iZGVzY3JpcHRpb24iIGNvbnRl''@;'; put 'put ''bnQ9IkNhcHR1cmUsIFJldmlldywgYW5kIEFwcHJvdmUiLz4KICAgIDxtZXRhIGl0ZW1wcm9wPSJpbWFnZSIgY29udGVudD0iaHR0cHM6Ly9kb2NzLmRhdGFjb250cm9sbGVyLmlvL2ltZy9kY19iZ19Bc3NldC01QDJ4LnBuZyIvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVu''@;'; put 'put ''dD0iaHR0cDovL2RlbW8uZGF0YWNvbnRyb2xsZXIuaW8iLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJ3ZWJzaXRlIi8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IkRhdGEgQ29udHJvbGxlciBmb3IgU0FTwq4iLz4KICAgIDxtZXRhIHBy''@;'; put 'put ''b3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iQ2FwdHVyZSwgUmV2aWV3LCBhbmQgQXBwcm92ZSIvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL2RvY3MuZGF0YWNvbnRyb2xsZXIuaW8vaW1nL2RjX2JnX0Fzc2V0LTVAMngucG5nIi8+CiAg''@;'; put 'put ''ICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmNhcmQiIGNvbnRlbnQ9InN1bW1hcnlfbGFyZ2VfaW1hZ2UiLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6dGl0bGUiIGNvbnRlbnQ9IkRhdGEgQ29udHJvbGxlciBmb3IgU0FTwq4iLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6ZGVzY3JpcHRpb24i''@;'; put 'put ''IGNvbnRlbnQ9IkNhcHR1cmUsIFJldmlldywgYW5kIEFwcHJvdmUiLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vZG9jcy5kYXRhY29udHJvbGxlci5pby9pbWcvZGNfYmdfQXNzZXQtNUAyeC5wbmciLz4KCiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9y''@;'; put 'put ''dCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiLz4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSIvPgogICAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9ImltYWdlcy9m''@;'; put 'put ''YXZpY29uLmljbyIvPgogIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGVzLjU1OTA3ZmM3NTFlMDc1NTguY3NzIj48L2hlYWQ+CgogIDwhLS0KICAgICMjIFNBU0pTIEFkYXB0ZXIgY29uZmlnIGRldGFpbHMgIyMKCiAgICAqIGFwcExvYzogVGhlIGxvY2F0aW9uIGluIG1ldGFk''@;'; put 'put ''YXRhIG9yIFNBUyBkcml2ZSB3aGVyZSBEQyB3aWxsIGJlIGRlcGxveWVkCiAgICAqIHNlcnZlclR5cGU6IGVpdGhlciBTQVM5LCBTQVNWSVlBIG9yIFNBU0pTCiAgICAqIGxvZ2luTWVjaGFuaXNtOiBVc2UgJ0RlZmF1bHQnIGZvciByZWd1bGFyICh1c2VyL3Bhc3MpIGxvZ2lucywgb3IgJ1Jl''@;'; put 'put ''ZGlyZWN0ZWQnIGZvciAyRkEvU1NPCiAgICAqIGRlYnVnOiBXaGV0aGVyIHRvIGVuYWJsZSBkZWJ1ZyBvbiBzdGFydHVwCgogICAgIyMgVml5YSBvbmx5IHNldHRpbmdzICMjCiAgICAqIGFkbWluR3JvdXA6IFRoaXMgZ3JvdXAgd2lsbCBoYXZlIHVucmVzdHJpY3RlZCBhY2Nlc3MgKFZpeWEg''@;'; put 'put ''T25seSkKICAgICogZGNQYXRoOiBUaGUgcGh5c2ljYWwgbG9jYXRpb24gaW4gd2hpY2ggdG8gZGVwbG95IHRoZSBzdGFnaW5nIGFyZWEgKFZpeWEgb25seSkKICAgICogdXNlQ29tcHV0ZUFwaTogQ29ubmVjdGlvbiBtZXRob2QgKFZpeWEgb25seSkKICAgICogY29udGV4dE5hbWU6IENvbXB1''@;'; put 'put ''dGUgQ29udGV4dCAoVml5YSBvbmx5KQoKICAtLT4KCiAgPGJvZHkgY2xhc3M9Im0tMCI+CiAgICA8bXktYXBwIHNlcnZlcnVybD0iaHR0cDovL2xvY2FsaG9zdDo1MDAwIiBhcHBsb2M9Ii9QdWJsaWMvYXBwL2RjIiBzZXJ2ZXJ0eXBlPSJTQVM5IiBsb2dpbm1lY2hhbmlzbT0iRGVmYXVsdCIg''@;'; put 'put ''ZGVidWc9ImZhbHNlIiB1c2Vjb21wdXRlYXBpPSJ0cnVlIiBjb250ZXh0bmFtZT0iU0FTIEpvYiBFeGVjdXRpb24gY29tcHV0ZSBjb250ZXh0IiBhZG1pbmdyb3VwPSJzZWMtc2FzOS1wcmQtaW50LXNhc3BsYXRmb3JtLTMwMDExNHNhc2pzIiBkY3BhdGg9Ii90bXAvZGMiIGhvdGxpY2VuY2Vr''@;'; put 'put ''ZXk9Im5vbi1jb21tZXJjaWFsLWFuZC1ldmFsdWF0aW9uIj48L215LWFwcD4KICA8c2NyaXB0IHNyYz0icnVudGltZS42MWU3NzFiNDcyZWNiNTg4LmpzIiB0eXBlPSJtb2R1bGUiPjwvc2NyaXB0PjxzY3JpcHQgc3JjPSJzY3JpcHRzLjdjYjFlOTRlMmZmYWQwY2QuanMiIGRlZmVyPjwvc2Ny''@;'; put 'put ''aXB0PjxzY3JpcHQgc3JjPSJtYWluLjA4Y2ZlMDk2ODQwZTkxZDQuanMiIHR5cGU9Im1vZHVsZSI+PC9zY3JpcHQ+PC9ib2R5Pgo8L2h0bWw+Cg=='';'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=main.08cfe096840e91d4-js; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''dmFyIEpBdD1PYmplY3QuZGVmaW5lUHJvcGVydHksWEF0PU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLEtBdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyxWTGU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scywkQXQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxx''@;'; put 'put ''QXQ9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSx4TT1NYXRoLnBvdyxqTGU9KFhlLEplLEwpPT5KZSBpbiBYZT9KQXQoWGUsSmUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkx9KTpYZVtKZV09TCxtcz0oWGUsSmUpPT57Zm9y''@;'; put 'put ''KHZhciBMIGluIEplfHwoSmU9e30pKSRBdC5jYWxsKEplLEwpJiZqTGUoWGUsTCxKZVtMXSk7aWYoVkxlKWZvcih2YXIgTCBvZiBWTGUoSmUpKXFBdC5jYWxsKEplLEwpJiZqTGUoWGUsTCxKZVtMXSk7cmV0dXJuIFhlfSxHej0oWGUsSmUpPT5YQXQoWGUsS0F0KEplKSk7KHNlbGYud2VicGFj''@;'; put 'put ''a0NodW5rZGF0YWNvbnRyb2xsZXI9c2VsZi53ZWJwYWNrQ2h1bmtkYXRhY29udHJvbGxlcnx8W10pLnB1c2goW1sxNzldLHs1Njc3MTpmdW5jdGlvbihYZSl7WGUuZXhwb3J0cz1mdW5jdGlvbihKZSl7dmFyIEw9e307ZnVuY3Rpb24gbWUoQil7aWYoTFtCXSlyZXR1cm4gTFtCXS5leHBvcnRz''@;'; put 'put ''O3ZhciBFPUxbQl09e2k6QixsOiExLGV4cG9ydHM6e319O3JldHVybiBKZVtCXS5jYWxsKEUuZXhwb3J0cyxFLEUuZXhwb3J0cyxtZSksRS5sPSEwLEUuZXhwb3J0c31yZXR1cm4gbWUubT1KZSxtZS5jPUwsbWUuZD1mdW5jdGlvbihCLEUsRWUpe21lLm8oQixFKXx8T2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KEIsRSx7ZW51bWVyYWJsZTohMCxnZXQ6RWV9KX0sbWUucj1mdW5jdGlvbihCKXsidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoQixTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxtZS50PWZ1bmN0aW9uKEIsRSl7aWYoMSZFJiYoQj1tZShCKSksOCZFfHw0JkUmJiJvYmplY3QiPT10eXBlb2YgQiYmQiYmQi5fX2VzTW9kdWxlKXJldHVybiBCO3ZhciBFZT1PYmplY3QuY3JlYXRlKG51bGwp''@;'; put 'put ''O2lmKG1lLnIoRWUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFZSwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsdmFsdWU6Qn0pLDImRSYmInN0cmluZyIhPXR5cGVvZiBCKWZvcih2YXIgVSBpbiBCKW1lLmQoRWUsVSxmdW5jdGlvbihRKXtyZXR1cm4gQltRXX0uYmluZChudWxsLFUpKTtyZXR1''@;'; put 'put ''cm4gRWV9LG1lLm49ZnVuY3Rpb24oQil7dmFyIEU9QiYmQi5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIEIuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gQn07cmV0dXJuIG1lLmQoRSwiYSIsRSksRX0sbWUubz1mdW5jdGlvbihCLEUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhh''@;'; put 'put ''c093blByb3BlcnR5LmNhbGwoQixFKX0sbWUucD0iIixtZShtZS5zPSIuL3Byb2plY3RzL2ljb25zL3NyYy9pbmRleC50cyIpfSh7Ii4vcHJvamVjdHMvaWNvbnMvc3JjL2Nsci1pY29ucy1hcGkudHMiOmZ1bmN0aW9uKEplLEwsbWUpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoTCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTC5DbGFyaXR5SWNvbnNBcGk9dm9pZCAwO3ZhciBCPW1lKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zaGFwZS10ZW1wbGF0ZS1vYnNlcnZlci50cyIpLEU9e30sRWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBVKCl7fXJldHVybiBPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoVSwiaW5zdGFuY2UiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVS5zaW5nbGVJbnN0YW5jZXx8KFUuc2luZ2xlSW5zdGFuY2U9bmV3IFUpLFUuc2luZ2xlSW5zdGFuY2V9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksVS5wcm90b3R5cGUudmFsaWRh''@;'; put 'put ''dGVOYW1lPWZ1bmN0aW9uKFEpe2lmKDA9PT1RLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlNoYXBlIG5hbWUgb3IgYWxpYXMgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmchIik7aWYoL1xzLy50ZXN0KFEpKXRocm93IG5ldyBFcnJvcigiU2hhcGUgbmFtZSBvciBhbGlhcyBtdXN0IG5vdCBj''@;'; put 'put ''b250YWluIGFueSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMhIik7cmV0dXJuITB9LFUucHJvdG90eXBlLm5vcm1hbGl6ZVNoYXBlTmFtZT1mdW5jdGlvbihRKXtyZXR1cm4gUS50b0xvd2VyQ2FzZSgpfSxVLnByb3RvdHlwZS5zZXRJY29uVGVtcGxhdGU9ZnVuY3Rpb24oUSxqKXt2YXIgcmU9ai50''@;'; put 'put ''cmltKCk7dGhpcy52YWxpZGF0ZU5hbWUoUSkmJihRPXRoaXMubm9ybWFsaXplU2hhcGVOYW1lKFEpLEVbUV0mJmRlbGV0ZSBFW1FdLEVbUV09cmUsQi5TaGFwZVRlbXBsYXRlT2JzZXJ2ZXIuaW5zdGFuY2UuZW1pdENoYW5nZXMoUSxyZSkpfSxVLnByb3RvdHlwZS5zZXRJY29uQWxpYXNlcz1m''@;'; put 'put ''dW5jdGlvbihRLGoscmUpe2Zvcih2YXIgYWU9MCxZPXJlO2FlPFkubGVuZ3RoO2FlKyspe3ZhciBXPVlbYWVdO3RoaXMudmFsaWRhdGVOYW1lKFcpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoUSxXLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUVtqXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFi''@;'; put 'put ''bGU6ITB9KX19LFUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihRKXtpZigib2JqZWN0IiE9dHlwZW9mIFEpdGhyb3cgbmV3IEVycm9yKCdUaGUgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QgbGl0ZXJhbCBwYXNzZWQgaW4gdGhlIGZvbGxvd2luZyBwYXR0ZXJuOlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IHsgInNoYXBlLW5hbWUiOiAic2hhcGUtdGVtcGxhdGUiIH0nKTtmb3IodmFyIGogaW4gUSlRLmhhc093blByb3BlcnR5KGopJiZ0aGlzLnNldEljb25UZW1wbGF0ZShqLFFbal0pfSxVLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oUSl7cmV0dXJuISFFW3RoaXMubm9ybWFsaXplU2hhcGVOYW1l''@;'; put 'put ''KFEpXX0sVS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKFEpe2lmKCFRKXJldHVybiBFO2lmKCJzdHJpbmciIT10eXBlb2YgUSl0aHJvdyBuZXcgVHlwZUVycm9yKCJPbmx5IHN0cmluZyBhcmd1bWVudCBpcyBhbGxvd2VkIGluIHRoaXMgbWV0aG9kLiIpO3JldHVybiBFW3RoaXMubm9ybWFsaXpl''@;'; put 'put ''U2hhcGVOYW1lKFEpXX0sVS5wcm90b3R5cGUuYWxpYXM9ZnVuY3Rpb24oUSl7aWYoIm9iamVjdCIhPXR5cGVvZiBRKXRocm93IG5ldyBFcnJvcignVGhlIGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0IGxpdGVyYWwgcGFzc2VkIGluIHRoZSBmb2xsb3dpbmcgcGF0dGVybjpcbiAgICAgICAg''@;'; put 'put ''ICAgICAgICB7ICJzaGFwZS1uYW1lIjogWyJhbGlhcy1uYW1lIiwgLi4uXSB9Jyk7Zm9yKHZhciBqIGluIFEpaWYoUS5oYXNPd25Qcm9wZXJ0eShqKSl7aWYoIUUuaGFzT3duUHJvcGVydHkoaikpdGhyb3cgbmV3IEVycm9yKCdBbiBpY29uICInK2orIlwiIHlvdSBhcmUgdHJ5aW5nIHRvIHNl''@;'; put 'put ''dCBhbGlhc2VzIHRvIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIENsYXJpdHkgSWNvbnMgc2V0cyEiKTt0aGlzLnNldEljb25BbGlhc2VzKEUsaixRW2pdKX19LFV9KCk7TC5DbGFyaXR5SWNvbnNBcGk9RWV9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9jbHItaWNvbnMtZWxlbWVudC50cyI6ZnVuY3Rp''@;'; put 'put ''b24oSmUsTCxtZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShMLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMLkNsYXJpdHlJY29uRWxlbWVudD12b2lkIDA7dmFyIEI9bWUoIi4vcHJvamVjdHMvaWNvbnMvc3JjL2Nsci1pY29ucy1hcGkudHMiKSxFPW1lKCIuL3Byb2pl''@;'; put 'put ''Y3RzL2ljb25zL3NyYy91dGlscy9zaGFwZS10ZW1wbGF0ZS1vYnNlcnZlci50cyIpLEVlPTAsVT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7VS5jbGFzc05hbWU9ImlzLW9mZi1zY3JlZW4iO3ZhciBRPWZ1bmN0aW9uKCl7cmV0dXJuIEhUTUxFbGVtZW50LmFwcGx5KHRoaXMsYXJn''@;'; put 'put ''dW1lbnRzKX07ZnVuY3Rpb24gaigpe3ZhciByZT1RLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gcmUuY2xySWNvblVuaXFJZD0iX2Nscl9pY29uXyIrRWUsRWUrKyxyZX0ib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJihRPWZ1bmN0aW9uKCl7cmV0dXJuIFJlZmxlY3QuY29uc3RydWN0''@;'; put 'put ''KEhUTUxFbGVtZW50LGFyZ3VtZW50cyx0aGlzLmNvbnN0cnVjdG9yKX0pLEwuQ2xhcml0eUljb25FbGVtZW50PWosai5vYnNlcnZlZEF0dHJpYnV0ZXM9WyJzaGFwZSIsInNpemUiLCJ0aXRsZSJdLChqLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSx7Y29u''@;'; put 'put ''c3RydWN0b3I6e2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpqfX0pKS5jb25zdHJ1Y3Rvcj1qLGoucHJvdG90eXBlLl9hcHBlbmRDdXN0b21UaXRsZT1mdW5jdGlvbigpe3ZhciByZT1VLmNsb25lTm9kZSghMSk7cmUuaWQ9dGhpcy5jbHJJY29uVW5pcUlkLHJlLnRleHRDb250''@;'; put 'put ''ZW50PXRoaXMuY3VycmVudFRpdGxlQXR0clZhbCx0aGlzLmFwcGVuZENoaWxkKHJlKX0sai5wcm90b3R5cGUuX3NldEljb25TaXplPWZ1bmN0aW9uKHJlKXshTnVtYmVyKHJlKXx8TnVtYmVyKHJlKTwwPyh0aGlzLnN0eWxlLndpZHRoPW51bGwsdGhpcy5zdHlsZS5oZWlnaHQ9bnVsbCk6KHRo''@;'; put 'put ''aXMuc3R5bGUud2lkdGg9cmUrInB4Iix0aGlzLnN0eWxlLmhlaWdodD1yZSsicHgiKX0sai5wcm90b3R5cGUuX25vcm1hbGl6ZVNoYXBlPWZ1bmN0aW9uKHJlKXtyZXR1cm4gcmUuc3BsaXQoL1xzLylbMF0udG9Mb3dlckNhc2UoKX0sai5wcm90b3R5cGUuY29ubmVjdGVkQ2FsbGJhY2s9ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgcmU9dGhpcztpZih0aGlzLmdldEF0dHJpYnV0ZSgicm9sZSIpfHx0aGlzLnNldEF0dHJpYnV0ZSgicm9sZSIsIm5vbmUiKSx0aGlzLmhhc0F0dHJpYnV0ZSgic2l6ZSIpKXt2YXIgYWU9dGhpcy5nZXRBdHRyaWJ1dGUoInNpemUiKTt0aGlzLmN1cnJlbnRTaXplQXR0clZh''@;'; put 'put ''bCE9PWFlJiYodGhpcy5jdXJyZW50U2l6ZUF0dHJWYWw9YWUsdGhpcy5fc2V0SWNvblNpemUoYWUpKX1pZih0aGlzLmhhc0F0dHJpYnV0ZSgic2hhcGUiKSl7dmFyIFk9dGhpcy5fbm9ybWFsaXplU2hhcGUodGhpcy5nZXRBdHRyaWJ1dGUoInNoYXBlIikpO2lmKHRoaXMuX3NoYXBlVGVtcGxh''@;'; put 'put ''dGVTdWJzY3JpcHRpb249RS5TaGFwZVRlbXBsYXRlT2JzZXJ2ZXIuaW5zdGFuY2Uuc3Vic2NyaWJlVG8oWSxmdW5jdGlvbih0ZSl7cmUuX2luamVjdFRlbXBsYXRlKHRlKX0pLHRoaXMuY3VycmVudFNoYXBlQXR0clZhbD1ZLCFCLkNsYXJpdHlJY29uc0FwaS5pbnN0YW5jZS5oYXModGhpcy5j''@;'; put 'put ''dXJyZW50U2hhcGVBdHRyVmFsKSlyZXR1cm4gdm9pZCB0aGlzLl9pbmplY3RFcnJvclRlbXBsYXRlKCk7dmFyIFc9Qi5DbGFyaXR5SWNvbnNBcGkuaW5zdGFuY2UuZ2V0KHRoaXMuY3VycmVudFNoYXBlQXR0clZhbCk7aWYoVz09PXRoaXMuY3VycmVudFNoYXBlVGVtcGxhdGUpcmV0dXJuO3Ro''@;'; put 'put ''aXMuY3VycmVudFNoYXBlVGVtcGxhdGU9V31pZih0aGlzLmhhc0F0dHJpYnV0ZSgidGl0bGUiKSl7dmFyIE49dGhpcy5nZXRBdHRyaWJ1dGUoInRpdGxlIik7aWYodGhpcy5jdXJyZW50VGl0bGVBdHRyVmFsIT09TiYmKHRoaXMuY3VycmVudFRpdGxlQXR0clZhbD1OKSwhdGhpcy5jdXJyZW50''@;'; put 'put ''U2hhcGVBdHRyVmFsKXJldHVybn10aGlzLl9pbmplY3RUZW1wbGF0ZSgpfSxqLnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s9ZnVuY3Rpb24ocmUsYWUsWSl7dmFyIFc9dGhpcztpZigic2l6ZSI9PT1yZSYmdGhpcy5fc2V0SWNvblNpemUoWSksInNoYXBlIj09PXJlKXtpZih0''@;'; put 'put ''aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWw9dGhpcy5fbm9ybWFsaXplU2hhcGUoWSksdGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbiYmKHRoaXMuX3NoYXBlVGVtcGxhdGVTdWJzY3JpcHRpb24oKSx0aGlzLl9zaGFwZVRlbXBsYXRlU3Vic2NyaXB0aW9uPUUuU2hhcGVUZW1wbGF0ZU9i''@;'; put 'put ''c2VydmVyLmluc3RhbmNlLnN1YnNjcmliZVRvKHRoaXMuY3VycmVudFNoYXBlQXR0clZhbCxmdW5jdGlvbihOKXtXLl9pbmplY3RUZW1wbGF0ZShOKX0pKSwhQi5DbGFyaXR5SWNvbnNBcGkuaW5zdGFuY2UuaGFzKHRoaXMuY3VycmVudFNoYXBlQXR0clZhbCkpcmV0dXJuIHZvaWQgdGhpcy5f''@;'; put 'put ''aW5qZWN0RXJyb3JUZW1wbGF0ZSgpO3RoaXMuY3VycmVudFNoYXBlVGVtcGxhdGU9Qi5DbGFyaXR5SWNvbnNBcGkuaW5zdGFuY2UuZ2V0KHRoaXMuY3VycmVudFNoYXBlQXR0clZhbCl9InRpdGxlIj09PXJlJiYodGhpcy5jdXJyZW50VGl0bGVBdHRyVmFsPVksIXRoaXMuY3VycmVudFNoYXBl''@;'; put 'put ''QXR0clZhbCl8fHRoaXMuX2luamVjdFRlbXBsYXRlKCl9LGoucHJvdG90eXBlLmRpc2Nvbm5lY3RlZENhbGxiYWNrPWZ1bmN0aW9uKCl7dGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbiYmdGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbigpfSxqLnByb3RvdHlwZS5fc2V0QXJp''@;'; put 'put ''YUxhYmVsbGVkQnk9ZnVuY3Rpb24oKXt2YXIgcmU9dGhpcy5nZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIpLFk9dGhpcy5xdWVyeVNlbGVjdG9yKCJzdmciKXx8dGhpcztyZT9yZSYmcmUuaW5kZXhPZih0aGlzLmNsckljb25VbmlxSWQpPDAmJlkuc2V0QXR0cmlidXRlKCJhcmlhLWxh''@;'; put 'put ''YmVsbGVkYnkiLHJlKyIgIit0aGlzLmNsckljb25VbmlxSWQpOlkuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsbGVkYnkiLHRoaXMuY2xySWNvblVuaXFJZCl9LGoucHJvdG90eXBlLl9pbmplY3RUZW1wbGF0ZT1mdW5jdGlvbihyZSl7cmUmJnJlIT09dGhpcy5jdXJyZW50U2hhcGVUZW1wbGF0''@;'; put 'put ''ZSYmKHRoaXMuY3VycmVudFNoYXBlVGVtcGxhdGU9cmUpLHRoaXMuaW5uZXJIVE1MPXRoaXMuY3VycmVudFNoYXBlVGVtcGxhdGUsdGhpcy5jdXJyZW50VGl0bGVBdHRyVmFsJiYodGhpcy5fc2V0QXJpYUxhYmVsbGVkQnkoKSx0aGlzLl9hcHBlbmRDdXN0b21UaXRsZSgpKX0sai5wcm90b3R5''@;'; put 'put ''cGUuX2luamVjdEVycm9yVGVtcGxhdGU9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRTaGFwZVRlbXBsYXRlPUIuQ2xhcml0eUljb25zQXBpLmluc3RhbmNlLmdldCgiZXJyb3IiKSx0aGlzLl9pbmplY3RUZW1wbGF0ZSgpfX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL2luZGV4LnRzIjpmdW5jdGlv''@;'; put 'put ''bihKZSxMLG1lKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEwuQ2xhcml0eUljb25zPXZvaWQgMDt2YXIgQj1tZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvY2xyLWljb25zLWFwaS50cyIpLEU9bWUoIi4vcHJvamVjdHMvaWNv''@;'; put 'put ''bnMvc3JjL2Nsci1pY29ucy1lbGVtZW50LnRzIiksRWU9bWUoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBlcy50cyIpLFU9Qi5DbGFyaXR5SWNvbnNBcGkuaW5zdGFuY2U7TC5DbGFyaXR5SWNvbnM9VSxVLmFkZChFZS5Db3JlU2hhcGVzKSwidW5kZWZpbmVkIiE9dHlw''@;'; put 'put ''ZW9mIHdpbmRvdyYmKHdpbmRvdy5oYXNPd25Qcm9wZXJ0eSgiQ2xhcml0eUljb25zIil8fCh3aW5kb3cuQ2xhcml0eUljb25zPVUpLGN1c3RvbUVsZW1lbnRzLmdldCgiY2xyLWljb24iKXx8Y3VzdG9tRWxlbWVudHMuZGVmaW5lKCJjbHItaWNvbiIsRS5DbGFyaXR5SWNvbkVsZW1lbnQpKX0s''@;'; put 'put ''Ii4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBlcy50cyI6ZnVuY3Rpb24oSmUsTCxtZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShMLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMLkNvcmVTaGFwZXM9TC5DbHJTaGFwZUFycm93PUwuQ2xyU2hhcGVT''@;'; put 'put ''dGVwRm9yd2FyZDI9TC5DbHJTaGFwZUV5ZUhpZGU9TC5DbHJTaGFwZUV5ZT1MLkNsclNoYXBlRXZlbnQ9TC5DbHJTaGFwZUNhbGVuZGFyPUwuQ2xyU2hhcGVBbmdsZURvdWJsZT1MLkNsclNoYXBlVmlld0NvbHVtbnM9TC5DbHJTaGFwZVNlYXJjaD1MLkNsclNoYXBlVm1CdWc9TC5DbHJTaGFw''@;'; put 'put ''ZUZpbHRlckdyaWRDaXJjbGU9TC5DbHJTaGFwZUZpbHRlckdyaWQ9TC5DbHJTaGFwZUVsbGlwc2lzVmVydGljYWw9TC5DbHJTaGFwZUVsbGlwc2lzSG9yaXpvbnRhbD1MLkNsclNoYXBlQ2xvdWQ9TC5DbHJTaGFwZUltYWdlPUwuQ2xyU2hhcGVCZWxsPUwuQ2xyU2hhcGVGb2xkZXJPcGVuPUwu''@;'; put 'put ''Q2xyU2hhcGVGb2xkZXI9TC5DbHJTaGFwZUFuZ2xlPUwuQ2xyU2hhcGVVc2VyPUwuQ2xyU2hhcGVCYXJzPUwuQ2xyU2hhcGVIZWxwSW5mbz1MLkNsclNoYXBlV2FybmluZ1N0YW5kYXJkPUwuQ2xyU2hhcGVFcnJvclN0YW5kYXJkPUwuQ2xyU2hhcGVTdWNjZXNzU3RhbmRhcmQ9TC5DbHJTaGFw''@;'; put 'put ''ZUluZm9TdGFuZGFyZD1MLkNsclNoYXBlSW5mb0NpcmNsZT1MLkNsclNoYXBlQ2hlY2tDaXJjbGU9TC5DbHJTaGFwZUV4Y2xhbWF0aW9uQ2lyY2xlPUwuQ2xyU2hhcGVFeGNsYW1hdGlvblRyaWFuZ2xlPUwuQ2xyU2hhcGVUaW1lcz1MLkNsclNoYXBlQ2hlY2s9TC5DbHJTaGFwZUNvZz1MLkNs''@;'; put 'put ''clNoYXBlSG9tZT1MLkNsclNoYXBlVW5rbm93blN0YXR1cz12b2lkIDA7dmFyIEI9bWUoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIiksRT1tZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKTtMLkNsclNo''@;'; put 'put ''YXBlVW5rbm93blN0YXR1cz0oMCxFLmNsckljb25TVkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTcuNTgiIGN5PSIyNi4yMyIgcj0iMS40Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNC43LDEzYTUuMTgsNS4xOCwwLDAsMC0yLjE2LTMuNTYsNy4yNiw3LjI2LDAsMCwwLTUuNzEtMS4wOUExMS4zNCwxMS4zNCwwLDAsMCwxMiwxMC40NCwxLDEsMCwxLDAsMTMuMjYsMTJhOS4zMiw5LjMyLDAsMCwxLDMuOTQtMS43Miw1LjI5LDUuMjks''@;'; put 'put ''MCwwLDEsNC4xNi43NCwzLjIxLDMuMjEsMCwwLDEsMS4zNSwyLjE5Yy4zMywyLjY5LTMuMTksMy43NS01LjMyLDQuMTRsLS44Mi4xNXY0LjM2YTEsMSwwLDAsMCwyLDBWMTkuMTdDMjQuNjEsMTcuNzksMjQuODgsMTQuNDEsMjQuNywxM1oiLz4nKSxMLkNsclNoYXBlSG9tZT0oMCxFLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLjcxLDE3LjI5bC0xNS0xNWExLDEsMCwwLDAtMS40MSwwbC0xNSwxNWExLDEsMCwwLDAsMS40MSwxLjQxTDE4LDQuNDEsMzIuMjksMTguNzFhMSwxLDAsMCwwLDEuNDEtMS40MVoi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI4LDMyaC01VjIySDEzVjMySDhWMThMNiwyMFYzMmEyLDIsMCwwLDAsMiwyaDdWMjRoNlYzNGg3YTIsMiwwLDAsMCwyLTJWMTkuNzZsLTItMloiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzMsMTlhMSwxLDAsMCwxLS43MS0uMjlMMTgsNC40MSwzLjcxLDE4LjcxYTEsMSwwLDAsMS0xLjQxLTEuNDFsMTUtMTVhMSwxLDAsMCwxLDEuNDEsMGwxNSwxNUExLDEsMCwwLDEsMzMs''@;'; put 'put ''MTlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTE4LDcuNzksNiwxOS44M1YzMmEyLDIsMCwwLDAsMiwyaDdWMjRoNlYzNGg3YTIsMiwwLDAsMCwyLTJWMTkuNzZaIi8+JyksTC5DbHJTaGFwZUNvZz0oMCxFLmNs''@;'; put 'put ''ckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LjEsMTFjLTMuOSwwLTcsMy4xLTcsN3MzLjEsNyw3LDdjMy45LDAsNy0zLjEsNy03UzIyLDExLDE4LjEsMTF6IE0xOC4xLDIzYy0yLjgsMC01LTIuMi01LTVzMi4yLTUsNS01''@;'; put 'put ''YzIuOCwwLDUsMi4yLDUsNVMyMC45LDIzLDE4LjEsMjN6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMi44LDE0LjdMMzAsMTMuOGwtMC42LTEuNWwxLjQtMi42YzAuMy0wLjYsMC4yLTEuNC0wLjMtMS45''@;'; put 'put ''bC0yLjQtMi40Yy0wLjUtMC41LTEuMy0wLjYtMS45LTAuM2wtMi42LDEuNGwtMS41LTAuNmwtMC45LTIuOEMyMSwyLjUsMjAuNCwyLDE5LjcsMmgtMy40Yy0wLjcsMC0xLjMsMC41LTEuNCwxLjJMMTQsNmMtMC42LDAuMS0xLjEsMC4zLTEuNiwwLjZMOS44LDUuMkM5LjIsNC45LDguNCw1LDcu''@;'; put 'put ''OSw1LjVMNS41LDcuOUM1LDguNCw0LjksOS4yLDUuMiw5LjhsMS4zLDIuNWMtMC4yLDAuNS0wLjQsMS4xLTAuNiwxLjZsLTIuOCwwLjlDMi41LDE1LDIsMTUuNiwyLDE2LjN2My40YzAsMC43LDAuNSwxLjMsMS4yLDEuNUw2LDIyLjFsMC42LDEuNWwtMS40LDIuNmMtMC4zLDAuNi0wLjIsMS40''@;'; put 'put ''LDAuMywxLjlsMi40LDIuNGMwLjUsMC41LDEuMywwLjYsMS45LDAuM2wyLjYtMS40bDEuNSwwLjZsMC45LDIuOWMwLjIsMC42LDAuOCwxLjEsMS41LDEuMWgzLjRjMC43LDAsMS4zLTAuNSwxLjUtMS4xbDAuOS0yLjlsMS41LTAuNmwyLjYsMS40YzAuNiwwLjMsMS40LDAuMiwxLjktMC4zbDIu''@;'; put 'put ''NC0yLjRjMC41LTAuNSwwLjYtMS4zLDAuMy0xLjlsLTEuNC0yLjZsMC42LTEuNWwyLjktMC45YzAuNi0wLjIsMS4xLTAuOCwxLjEtMS41di0zLjRDMzQsMTUuNiwzMy41LDE0LjksMzIuOCwxNC43eiBNMzIsMTkuNGwtMy42LDEuMUwyOC4zLDIxYy0wLjMsMC43LTAuNiwxLjQtMC45LDIuMWwt''@;'; put 'put ''MC4zLDAuNWwxLjgsMy4zbC0yLDJsLTMuMy0xLjhsLTAuNSwwLjNjLTAuNywwLjQtMS40LDAuNy0yLjEsMC45bC0wLjUsMC4xTDE5LjQsMzJoLTIuOGwtMS4xLTMuNkwxNSwyOC4zYy0wLjctMC4zLTEuNC0wLjYtMi4xLTAuOWwtMC41LTAuM2wtMy4zLDEuOGwtMi0ybDEuOC0zLjNsLTAuMy0w''@;'; put 'put ''LjVjLTAuNC0wLjctMC43LTEuNC0wLjktMi4xbC0wLjEtMC41TDQsMTkuNHYtMi44bDMuNC0xbDAuMi0wLjVjMC4yLTAuOCwwLjUtMS41LDAuOS0yLjJsMC4zLTAuNUw3LjEsOS4xbDItMmwzLjIsMS44bDAuNS0wLjNjMC43LTAuNCwxLjQtMC43LDIuMi0wLjlsMC41LTAuMkwxNi42LDRoMi44''@;'; put 'put ''bDEuMSwzLjVMMjEsNy43YzAuNywwLjIsMS40LDAuNSwyLjEsMC45bDAuNSwwLjNsMy4zLTEuOGwyLDJsLTEuOCwzLjNsMC4zLDAuNWMwLjQsMC43LDAuNywxLjQsMC45LDIuMWwwLjEsMC41bDMuNiwxLjFWMTkuNHoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMS4xLDE4YzAsMy45LDMuMSw3LDcsN2MzLjksMCw3LTMuMSw3LTdzLTMuMS03LTctN0MxNC4yLDExLDExLjEsMTQuMSwxMS4xLDE4eiBNMjMuMSwxOGMwLDIuOC0yLjIsNS01LDVjLTIuOCwwLTUtMi4yLTUt''@;'; put 'put ''NXMyLjItNSw1LTVDMjAuOSwxMywyMy4xLDE1LjIsMjMuMSwxOHoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMi44LDE0LjdMMzAsMTMuOGwtMC4xLTAuM2MtMC44LDAtMS42''@;'; put 'put ''LTAuMi0yLjQtMC40YzAuMywwLjYsMC42LDEuMywwLjgsMS45bDAuMSwwLjVsMy42LDEuMXYyLjhsLTMuNiwxLjFMMjguMywyMWMtMC4zLDAuNy0wLjYsMS40LTAuOSwyLjFsLTAuMywwLjVsMS44LDMuM2wtMiwybC0zLjMtMS44bC0wLjUsMC4zYy0wLjcsMC40LTEuNCwwLjctMi4xLDAuOWwt''@;'; put 'put ''MC41LDAuMUwxOS40LDMyaC0yLjhsLTEuMS0zLjZMMTUsMjguM2MtMC43LTAuMy0xLjQtMC42LTIuMS0wLjlsLTAuNS0wLjNsLTMuMywxLjhsLTItMmwxLjgtMy4zbC0wLjMtMC41Yy0wLjQtMC43LTAuNy0xLjQtMC45LTIuMWwtMC4xLTAuNUw0LDE5LjR2LTIuOGwzLjQtMWwwLjItMC41YzAu''@;'; put 'put ''Mi0wLjgsMC41LTEuNSwwLjktMi4ybDAuMy0wLjVMNy4xLDkuMWwyLTJsMy4yLDEuOGwwLjUtMC4zYzAuNy0wLjQsMS40LTAuNywyLjItMC45bDAuNS0wLjJMMTYuNiw0aDIuOGwxLjEsMy41TDIxLDcuN2MwLjcsMC4yLDEuMywwLjUsMS45LDAuOGMtMC4zLTAuOC0wLjQtMS42LTAuNC0yLjVs''@;'; put 'put ''LTAuNC0wLjJsLTAuOS0yLjhDMjEsMi41LDIwLjQsMiwxOS43LDJoLTMuNGMtMC43LDAtMS4zLDAuNS0xLjQsMS4yTDE0LDZjLTAuNiwwLjEtMS4xLDAuMy0xLjYsMC42TDkuOCw1LjJDOS4yLDQuOSw4LjQsNSw3LjksNS41TDUuNSw3LjlDNSw4LjQsNC45LDkuMiw1LjIsOS44bDEuMywyLjVj''@;'; put 'put ''LTAuMiwwLjUtMC40LDEuMS0wLjYsMS42bC0yLjgsMC45QzIuNSwxNSwyLDE1LjYsMiwxNi4zdjMuNGMwLDAuNywwLjUsMS4zLDEuMiwxLjVMNiwyMi4xbDAuNiwxLjVsLTEuNCwyLjZjLTAuMywwLjYtMC4yLDEuNCwwLjMsMS45bDIuNCwyLjRjMC41LDAuNSwxLjMsMC42LDEuOSwwLjNsMi42''@;'; put 'put ''LTEuNGwxLjUsMC42bDAuOSwyLjljMC4yLDAuNiwwLjgsMS4xLDEuNSwxLjFoMy40YzAuNywwLDEuMy0wLjUsMS41LTEuMWwwLjktMi45bDEuNS0wLjZsMi42LDEuNGMwLjYsMC4zLDEuNCwwLjIsMS45LTAuM2wyLjQtMi40YzAuNS0wLjUsMC42LTEuMywwLjMtMS45bC0xLjQtMi42bDAuNi0x''@;'; put 'put ''LjVsMi45LTAuOWMwLjYtMC4yLDEuMS0wLjgsMS4xLTEuNXYtMy40QzM0LDE1LjYsMzMuNSwxNC45LDMyLjgsMTQuN3oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRn''@;'; put 'put ''ZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNywxNS40aC01LjN2MC4xbDMuNiwxLjF2Mi44bC0zLjYsMS4xTDI4LjMsMjFjLTAu''@;'; put 'put ''MywwLjctMC42LDEuNC0wLjksMi4xbC0wLjMsMC41bDEuOCwzLjNsLTIsMmwtMy4zLTEuOGwtMC41LDAuM2MtMC43LDAuNC0xLjQsMC43LTIuMSwwLjlsLTAuNSwwLjFMMTkuNCwzMmgtMi44bC0xLjEtMy42TDE1LDI4LjNjLTAuNy0wLjMtMS40LTAuNi0yLjEtMC45bC0wLjUtMC4zbC0zLjMs''@;'; put 'put ''MS44bC0yLTJsMS44LTMuM2wtMC4zLTAuNWMtMC40LTAuNy0wLjctMS40LTAuOS0yLjFsLTAuMS0wLjVMNCwxOS40di0yLjhsMy40LTFsMC4yLTAuNWMwLjItMC44LDAuNS0xLjUsMC45LTIuMmwwLjMtMC41TDcuMSw5LjFsMi0ybDMuMiwxLjhsMC41LTAuM2MwLjctMC40LDEuNC0wLjcsMi4y''@;'; put 'put ''LTAuOWwwLjUtMC4yTDE2LjYsNGgyLjhsMS4xLDMuNGwxLjQtMi4zbC0wLjYtMkMyMSwyLjQsMjAuNCwyLDE5LjcsMmgtMy40Yy0wLjcsMC0xLjMsMC41LTEuNCwxLjJMMTQsNmMtMC42LDAuMS0xLjEsMC4zLTEuNiwwLjZMOS44LDUuMkM5LjIsNC45LDguNCw1LDcuOSw1LjVMNS41LDcuOUM1''@;'; put 'put ''LDguNCw0LjksOS4yLDUuMiw5LjhsMS4zLDIuNWMtMC4yLDAuNS0wLjQsMS4xLTAuNiwxLjZsLTIuOCwwLjlDMi41LDE1LDIsMTUuNiwyLDE2LjN2My40YzAsMC43LDAuNSwxLjMsMS4yLDEuNUw2LDIyLjFsMC42LDEuNWwtMS40LDIuNmMtMC4zLDAuNi0wLjIsMS40LDAuMywxLjlsMi40LDIu''@;'; put 'put ''NGMwLjUsMC41LDEuMywwLjYsMS45LDAuM2wyLjYtMS40bDEuNSwwLjZsMC45LDIuOWMwLjIsMC42LDAuOCwxLjEsMS41LDEuMWgzLjRjMC43LDAsMS4zLTAuNSwxLjUtMS4xbDAuOS0yLjlsMS41LTAuNmwyLjYsMS40YzAuNiwwLjMsMS40LDAuMiwxLjktMC4zbDIuNC0yLjRjMC41LTAuNSww''@;'; put 'put ''LjYtMS4zLDAuMy0xLjlsLTEuNC0yLjZsMC42LTEuNWwyLjktMC45YzAuNi0wLjIsMS4xLTAuOCwxLjEtMS41di0zLjRDMzQsMTYsMzMuOSwxNS43LDMzLjcsMTUuNHoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMi0tYWxlcnRlZCIgZD0iTTE4LjEsMjNjLTIuOCwwLTUtMi4yLTUtNXMyLjItNSw1LTVjMC4yLDAsMC41LDAsMC43LDAuMWMtMC4yLTAuNi0wLjMtMS4zLTAuMi0yaC0wLjVjLTMuOSwwLTcsMy4xLTcsN2MwLDMuOSwzLjEsNyw3LDdjMy45LDAsNy0zLjEsNy03YzAtMC45LTAuMi0x''@;'; put 'put ''LjgtMC41LTIuNmgtMi4yYzAuNSwwLjgsMC43LDEuNiwwLjcsMi41QzIzLjEsMjAuOCwyMC45LDIzLDE4LjEsMjN6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQi''@;'; put 'put ''IGQ9Ik0yNi45LDEuMUwyMS4xLDExYy0wLjQsMC42LTAuMiwxLjQsMC4zLDEuOGMwLjIsMC4yLDAuNSwwLjIsMC44LDAuMmgxMS41YzAuNywwLDEuMy0wLjUsMS4zLTEuMmMwLTAuMy0wLjEtMC41LTAuMi0wLjhsLTUuNy05LjljLTAuNC0wLjYtMS4xLTAuOC0xLjgtMC41QzI3LjEsMC44LDI3''@;'; put 'put ''LDEsMjYuOSwxLjF6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLjU3LDE1LjcybC0zLjM1LTFhMTEuNjUsMTEuNjUsMCwwLDAtLjk1LTIuMzNsMS42NC0zLjA3YS42MS42MSwwLDAsMC0uMTEtLjcyTDI3LjQx''@;'; put 'put ''LDYuMmEuNjEuNjEsMCwwLDAtLjcyLS4xMUwyMy42NCw3LjcyYTExLjYyLDExLjYyLDAsMCwwLTIuMzYtMWwtMS0zLjMxQS42MS42MSwwLDAsMCwxOS42OSwzSDE2LjMxYS42MS42MSwwLDAsMC0uNTguNDNsLTEsMy4zYTExLjYzLDExLjYzLDAsMCwwLTIuMzgsMWwtMy0xLjYyYS42MS42MSww''@;'; put 'put ''LDAsMC0uNzIuMTFMNi4yLDguNTlhLjYxLjYxLDAsMCwwLS4xMS43MmwxLjYyLDNhMTEuNjMsMTEuNjMsMCwwLDAtMSwyLjM3bC0zLjMxLDFhLjYxLjYxLDAsMCwwLS40My41OHYzLjM4YS42MS42MSwwLDAsMCwuNDMuNThsMy4zMywxYTExLjYyLDExLjYyLDAsMCwwLDEsMi4zM0w2LjA5LDI2''@;'; put 'put ''LjY5YS42MS42MSwwLDAsMCwuMTEuNzJMOC41OSwyOS44YS42MS42MSwwLDAsMCwuNzIuMTFsMy4wOS0xLjY1YTExLjY1LDExLjY1LDAsMCwwLDIuMy45NGwxLDMuMzdhLjYxLjYxLDAsMCwwLC41OC40M2gzLjM4YS42MS42MSwwLDAsMCwuNTgtLjQzbDEtMy4zOGExMS42MywxMS42MywwLDAs''@;'; put 'put ''MCwyLjI4LS45NGwzLjExLDEuNjZhLjYxLjYxLDAsMCwwLC43Mi0uMTFsMi4zOS0yLjM5YS42MS42MSwwLDAsMCwuMTEtLjcybC0xLjY2LTMuMWExMS42MywxMS42MywwLDAsMCwuOTUtMi4yOWwzLjM3LTFhLjYxLjYxLDAsMCwwLC40My0uNThWMTYuMzFBLjYxLjYxLDAsMCwwLDMyLjU3LDE1''@;'; put 'put ''LjcyWk0xOCwyMy41QTUuNSw1LjUsMCwxLDEsMjMuNSwxOCw1LjUsNS41LDAsMCwxLDE4LDIzLjVaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMi41NywxNS43MmwtMy4zNS0xYTEy''@;'; put 'put ''LjEyLDEyLjEyLDAsMCwwLS40Ny0xLjMyLDcuNDksNy40OSwwLDAsMS02LjE0LTYuMTYsMTEuODIsMTEuODIsMCwwLDAtMS4zMy0uNDhsLTEtMy4zMUEuNjEuNjEsMCwwLDAsMTkuNjksM0gxNi4zMWEuNjEuNjEsMCwwLDAtLjU4LjQzbC0xLDMuM2ExMS42MywxMS42MywwLDAsMC0yLjM4LDFs''@;'; put 'put ''LTMtMS42MmEuNjEuNjEsMCwwLDAtLjcyLjExTDYuMiw4LjU5YS42MS42MSwwLDAsMC0uMTEuNzJsMS42MiwzYTExLjYzLDExLjYzLDAsMCwwLTEsMi4zN2wtMy4zMSwxYS42MS42MSwwLDAsMC0uNDMuNTh2My4zOGEuNjEuNjEsMCwwLDAsLjQzLjU4bDMuMzMsMWExMS42MiwxMS42MiwwLDAs''@;'; put 'put ''MCwxLDIuMzNMNi4wOSwyNi42OWEuNjEuNjEsMCwwLDAsLjExLjcyTDguNTksMjkuOGEuNjEuNjEsMCwwLDAsLjcyLjExbDMuMDktMS42NWExMS42NSwxMS42NSwwLDAsMCwyLjMuOTRsMSwzLjM3YS42MS42MSwwLDAsMCwuNTguNDNoMy4zOGEuNjEuNjEsMCwwLDAsLjU4LS40M2wxLTMuMzhh''@;'; put 'put ''MTEuNjMsMTEuNjMsMCwwLDAsMi4yOC0uOTRsMy4xMSwxLjY2YS42MS42MSwwLDAsMCwuNzItLjExbDIuMzktMi4zOWEuNjEuNjEsMCwwLDAsLjExLS43MmwtMS42Ni0zLjFhMTEuNjMsMTEuNjMsMCwwLDAsLjk1LTIuMjlsMy4zNy0xYS42MS42MSwwLDAsMCwuNDMtLjU4VjE2LjMxQS42MS42''@;'; put 'put ''MSwwLDAsMCwzMi41NywxNS43MlpNMTgsMjMuNUE1LjUsNS41LDAsMSwxLDIzLjUsMTgsNS41LDUuNSwwLDAsMSwxOCwyMy41WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFk''@;'; put 'put ''Z2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzIuNTcsMTUuNzIsMzEuNSwxNS40SDIyLjg1QTUuNSw1LjUsMCwxLDEsMTgsMTIuNWE1LjUz''@;'; put 'put ''LDUuNTMsMCwwLDEsLjY1LDBBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsMi4wOS0zLjYyLS44Ni0yLjgzQS42MS42MSwwLDAsMCwxOS42OSwzSDE2LjMxYS42MS42MSwwLDAsMC0uNTguNDNsLTEsMy4zYTExLjYzLDExLjYzLDAsMCwwLTIuMzgsMWwtMy0xLjYyYS42MS42MSwwLDAsMC0uNzIu''@;'; put 'put ''MTFMNi4yLDguNTlhLjYxLjYxLDAsMCwwLS4xMS43MmwxLjYyLDNhMTEuNjMsMTEuNjMsMCwwLDAtMSwyLjM3bC0zLjMxLDFhLjYxLjYxLDAsMCwwLS40My41OHYzLjM4YS42MS42MSwwLDAsMCwuNDMuNThsMy4zMywxYTExLjYyLDExLjYyLDAsMCwwLDEsMi4zM0w2LjA5LDI2LjY5YS42MS42''@;'; put 'put ''MSwwLDAsMCwuMTEuNzJMOC41OSwyOS44YS42MS42MSwwLDAsMCwuNzIuMTFsMy4wOS0xLjY1YTExLjY1LDExLjY1LDAsMCwwLDIuMy45NGwxLDMuMzdhLjYxLjYxLDAsMCwwLC41OC40M2gzLjM4YS42MS42MSwwLDAsMCwuNTgtLjQzbDEtMy4zOGExMS42MywxMS42MywwLDAsMCwyLjI4LS45''@;'; put 'put ''NGwzLjExLDEuNjZhLjYxLjYxLDAsMCwwLC43Mi0uMTFsMi4zOS0yLjM5YS42MS42MSwwLDAsMCwuMTEtLjcybC0xLjY2LTMuMWExMS42MywxMS42MywwLDAsMCwuOTUtMi4yOWwzLjM3LTFhLjYxLjYxLDAsMCwwLC40My0uNThWMTYuMzFBLjYxLjYxLDAsMCwwLDMyLjU3LDE1LjcyWiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQu''@;'; put 'put ''NzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxMLkNsclNoYXBlQ2hlY2s9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xMy43MiwyNy42OSwzLjI5LDE3LjI3YTEsMSww''@;'; put 'put ''LDAsMSwxLjQxLTEuNDFsOSw5TDMxLjI5LDcuMjlhMSwxLDAsMCwxLDEuNDEsMS40MVoiLz4nKSxMLkNsclNoYXBlVGltZXM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOS40MSwxOGw4LjI5LTguMjlhMSwx''@;'; put 'put ''LDAsMCwwLTEuNDEtMS40MUwxOCwxNi41OSw5LjcxLDguMjlBMSwxLDAsMCwwLDguMjksOS43MUwxNi41OSwxOCw4LjI5LDI2LjI5YTEsMSwwLDEsMCwxLjQxLDEuNDFMMTgsMTkuNDFsOC4yOSw4LjI5YTEsMSwwLDAsMCwxLjQxLTEuNDFaIi8+JyksTC5DbHJTaGFwZUV4Y2xhbWF0aW9uVHJp''@;'; put 'put ''YW5nbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyMS4zMmExLjMsMS4zLDAsMCwwLDEuMy0xLjNWMTRhMS4zLDEuMywwLDEsMC0yLjYsMHY2QTEuMywxLjMsMCwwLDAsMTgsMjEuMzJaIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgY3g9IjE3Ljk1IiBjeT0iMjQuMjciIHI9IjEuNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJN''@;'; put 'put ''MzAuMzMsMjUuNTQsMjAuNTksNy42YTMsMywwLDAsMC01LjI3LDBMNS41NywyNS41NEEzLDMsMCwwLDAsOC4yMSwzMEgyNy42OWEzLDMsMCwwLDAsMi42NC00LjQzWm0tMS43OCwxLjk0YTEsMSwwLDAsMS0uODYuNDlIOC4yMWExLDEsMCwwLDEtLjg4LTEuNDhMMTcuMDcsOC41NWExLDEsMCww''@;'; put 'put ''LDEsMS43NiwwbDkuNzQsMTcuOTRBMSwxLDAsMCwxLDI4LjU1LDI3LjQ4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMC4zMywyNS41NCwyMC41OSw3LjZhMywzLDAsMCwwLTUuMjcsMEw1LjU3LDI1LjU0QTMs''@;'; put 'put ''MywwLDAsMCw4LjIxLDMwSDI3LjY5YTMsMywwLDAsMCwyLjY0LTQuNDNaTTE2LjQ2LDEyLjc0YTEuNDksMS40OSwwLDAsMSwzLDB2Ni44OWExLjQ5LDEuNDksMCwxLDEtMywwWk0xOCwyNi4yNWExLjcyLDEuNzIsMCwxLDEsMS43Mi0xLjcyQTEuNzIsMS43MiwwLDAsMSwxOCwyNi4yNVoiLz4n''@;'; put 'put ''KSxMLkNsclNoYXBlRXhjbGFtYXRpb25DaXJjbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgs''@;'; put 'put ''MTAsMTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyMC4wN2ExLjMsMS4zLDAsMCwxLTEuMy0xLjN2LTZhMS4zLDEuMywwLDEsMSwyLjYsMHY2QTEuMywxLjMsMCwwLDEsMTgs''@;'; put 'put ''MjAuMDdaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgY3g9IjE3Ljk1IiBjeT0iMjMuMDIiIHI9IjEuNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabS0xLjQ5LDZhMS40OSwxLjQ5LDAsMCwxLDMsMHY2Ljg5YTEuNDksMS40OSwwLDEsMS0zLDBaTTE4LDI1LjVhMS43MiwxLjcyLDAsMSwxLDEuNzItMS43MkExLjcyLDEuNzIsMCwwLDEsMTgsMjUuNVoi''@;'; put 'put ''Lz4nKSxMLkNsclNoYXBlQ2hlY2tDaXJjbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAs''@;'; put 'put ''MTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xNi4zNCwyMy43NGwtNS01YTEsMSwwLDAsMSwxLjQxLTEuNDFsMy41OSwzLjU5LDYuNzgtNi43OGExLDEsMCwwLDEsMS40MSwxLjQx''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMCwxOEExMiwxMiwwLDEsMSwxOCw2LDEyLDEyLDAsMCwxLDMwLDE4Wm0tNC43Ny0yLjE2YTEuNCwxLjQsMCwwLDAtMi0ybC02Ljc3LDYuNzdMMTMsMTcuMTZhMS40''@;'; put 'put ''LDEuNCwwLDAsMC0yLDJsNS40NSw1LjQ1WiIvPicpLEwuQ2xyU2hhcGVJbmZvQ2lyY2xlPSgwLEUuY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiICBjeD0iMTcuOTMiIGN5PSIxMS45IiByPSIxLjQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgIGQ9Ik0yMSwyM0gxOVYxNUgxNmExLDEsMCwwLDAsMCwyaDF2NkgxNWExLDEsMCwxLDAsMCwyaDZhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptLTIsNS4xNWEyLDIsMCwxLDEsMiwyQTIsMiwwLDAsMSwxNS45LDExLjE1Wk0yMywyNGExLDEsMCwwLDEtMSwxSDE1YTEsMSwwLDEsMSwwLTJoMlYxN0gxNmExLDEsMCwwLDEsMC0y''@;'; put 'put ''aDR2OGgyQTEsMSwwLDAsMSwyMywyNFoiLz4nKSxMLkNsclNoYXBlSW5mb1N0YW5kYXJkPSgwLEUuY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4PSIxNy45NyIgY3k9IjEwLjQ1IiByPSIxLjQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTIxLDI1SDE5VjE0LjFIMTZhMSwxLDAsMCwwLDAsMmgxVjI1SDE1YTEsMSwwLDAsMCwwLDJoNmExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMi4xYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDE4LDIuMVptLS4xLDUuMjhhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMTcuOSw3LjM4Wm0zLjYsMjEuMjVoLTdhMS40LDEuNCwwLDEsMSwwLTIuOGgyLjF2LTkuMkgxNWExLjQsMS40''@;'; put 'put ''LDAsMSwxLDAtMi44aDQuNHYxMmgyLjFhMS40LDEuNCwwLDEsMSwwLDIuOFoiLz4nKSxMLkNsclNoYXBlU3VjY2Vzc1N0YW5kYXJkPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwz''@;'; put 'put ''NCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjgsMTIuMWExLDEsMCwwLDAtMS40MSwwTDE1''@;'; put 'put ''LjQ5LDIzLjE1bC02LTZBMSwxLDAsMCwwLDgsMTguNTNMMTUuNDksMjYsMjgsMTMuNTJBMSwxLDAsMCwwLDI4LDEyLjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYs''@;'; put 'put ''MTYsMCwwLDAsMTgsMlpNMjguNDUsMTIuNjMsMTUuMzEsMjUuNzYsNy41NSwxOGExLjQsMS40LDAsMCwxLDItMmw1Ljc4LDUuNzhMMjYuNDcsMTAuNjVhMS40LDEuNCwwLDEsMSwyLDJaIi8+JyksTC5DbHJTaGFwZUVycm9yU3RhbmRhcmQ9KDAsRS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjE4IiBjeT0iMjYuMDYiIHI9IjEuMzMiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDIyLjYxYTEsMSwwLDAsMS0xLTF2LTEy''@;'; put 'put ''YTEsMSwwLDEsMSwyLDB2MTJBMSwxLDAsMCwxLDE4LDIyLjYxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQs''@;'; put 'put ''MCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMi4xYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDE4LDIuMVpNMTYuNiw4LjhhMS40LDEuNCwwLDAs''@;'; put 'put ''MSwyLjgsMHYxMmExLjQsMS40LDAsMCwxLTIuOCwwWk0xOCwyOC42YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDE4LDI4LjZaIi8+JyksTC5DbHJTaGFwZVdhcm5pbmdTdGFuZGFyZD0oMCxFLmNsckljb25TVkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTgiIGN5PSIyNi4wNiIgcj0iMS4zMyIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjIuNjFhMSwxLDAsMCwxLTEtMXYtMTJhMSwxLDAsMSwxLDIsMHYxMkEx''@;'; put 'put ''LDEsMCwwLDEsMTgsMjIuNjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xNS4wNjIwNzgyLDEuNjgxMTk2IEMxNS42Mjk4ODE5LDAuNjQ5MjY2MzU1IDE2LjcxMDkwOTEsMC4wMTAyMjE5Mzk2IDE3Ljg4''@;'; put 'put ''NSwwLjAxMDIyMTkzOTYgQzE5LjA1OTA5MDksMC4wMTAyMjE5Mzk2IDIwLjE0MDExODEsMC42NDkyNjYzNTUgMjAuNzA4NjQzMywxLjY4MjUyMTI5IEwzNC41OTg2NDQsMjcuMjQyNTIyNSBDMzUuMTQwNzc0NiwyOC4yNDAxMzk3IDM1LjExNzQzNDUsMjkuNDQ5NTM3MyAzNC41MzcyMTYxLDMw''@;'; put 'put ''LjQyNTQ5NDMgQzMzLjk1Njk5NzcsMzEuNDAxNDUxNCAzMi45MDU2NzEsMzEuOTk5Njk4NCAzMS43NywzMiBMNC4wMjIzOTMyMywzMS45OTk3NDkyIEMyLjg3NDA5MDA5LDMyLjAyNTQ2OTkgMS43OTkwMjg0MywzMS40Mzc1NzUzIDEuMjAxMDYzMzUsMzAuNDU2OTEyNiBDMC42MDMwOTgyNjUs''@;'; put 'put ''MjkuNDc2MjQ5OSAwLjU3Mjc3Nzg5OSwyOC4yNTEzMTc5IDEuMTIyMDc4MTgsMjcuMjQxMTk2IEwxNS4wNjIwNzgyLDEuNjgxMTk2IFogTTIuODc4NTA3NjcsMjguMTk3NzI4MiBDMi42NzA2MDk2NiwyOC41ODAwMzc2IDIuNjgyMDk3NSwyOS4wNDQxNDIzIDIuOTA4NjU1NywyOS40MTU2OTc3''@;'; put 'put ''IEMzLjEzNTIxMzksMjkuNzg3MjUzMiAzLjU0MjUzNTQsMzAuMDA5OTk1OSA0LDMwIEwzMS43Njk3MzQ0LDMwIEMzMi4xOTk5MTkxLDI5Ljk5OTg4NTggMzIuNTk4MjQ3OCwyOS43NzMyMjA4IDMyLjgxODA4MjEsMjkuNDAzNDQ4MiBDMzMuMDM3OTE2NCwyOS4wMzM2NzU3IDMzLjA0Njc1OTUs''@;'; put 'put ''MjguNTc1NDU2NyAzMi44NDEzNTY3LDI4LjE5NzQ3ODcgTDE4Ljk1Mzg3MzksMi42NDIwODE5NSBDMTguNzM5NDIzNiwyLjI1MjM0NDM2IDE4LjMyOTg0MTksMi4wMTAyMjE5NCAxNy44ODUsMi4wMTAyMjE5NCBDMTcuNDQwNjg4OSwyLjAxMDIyMTk0IDE3LjAzMTU1MzgsMi4yNTE3NjY5MiAx''@;'; put 'put ''Ni44MTY4OTQ2LDIuNjQwNjg3NTMgTDIuODc4NTA3NjcsMjguMTk3NzI4MiBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTM0LjYsMjkuMjEsMjAuNzEsMy42NWEzLjIyLDMuMjIsMCwwLDAtNS42NiwwTDEuMTcs''@;'; put 'put ''MjkuMjFBMy4yMiwzLjIyLDAsMCwwLDQsMzRIMzEuNzdhMy4yMiwzLjIyLDAsMCwwLDIuODMtNC43NVpNMTYuNiwxMGExLjQsMS40LDAsMCwxLDIuOCwwdjEyYTEuNCwxLjQsMCwwLDEtMi44LDBaTTE4LDI5Ljg1YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDE4LDI5Ljg1''@;'; put 'put ''WiIvPicpLEwuQ2xyU2hhcGVIZWxwSW5mbz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUuMzksMjUuNDVhMSwxLDAsMCwwLTEuMzguMjljLTEuNDEsMi4xNi00LDQuODEtNi4zMSw1LjdzLTQuMTIuNTctNC44NCwwYy0uMzEtLjI3LTEuMTItMS0uNDMtMy40OS40Ni0xLjY2LDMuMzIt''@;'; put 'put ''OS40OCw0LTExLjM4bC0yLjE4LjI4Yy0uNjksMS44Ni0zLjI5LDguODQtMy43NiwxMC41OC0uNjgsMi40OS0uMzQsNC4zLDEuMDksNS41NkE1LjU5LDUuNTksMCwwLDAsMTUsMzRhOS41Myw5LjUzLDAsMCwwLDMuNDUtLjdjMi43OS0xLjA5LDUuNzItNC4xMiw3LjI2LTYuNDdBMSwxLDAsMCww''@;'; put 'put ''LDI1LjM5LDI1LjQ1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuMywxMWE0LjUsNC41LDAsMSwwLTQuNS00LjVBNC41LDQuNSwwLDAsMCwxOS4zLDExWm0wLTdhMi41LDIuNSwwLDEsMS0yLjUsMi41QTIu''@;'; put 'put ''NSwyLjUsMCwwLDEsMTkuMyw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuODEsMTVjLjA2LDAsNi4yNy0uODIsNy43My0xLC42NS0uMSwxLjE0LDAsMS4zLjE1cy4yMS44LS4wNywxLjY4Yy0uNjEsMS44''@;'; put 'put ''Ni0zLjY5LDExLTQuNTksMTMuNzFhOCw4LDAsMCwwLDEuMjktLjM4LDcuMzIsNy4zMiwwLDAsMCwxLjE1LS42QzE5Ljg1LDI1LDIyLjE1LDE4LjEsMjIuNjcsMTYuNTJzLjM5LTIuNzgtLjMtMy42YTMuMTYsMy4xNiwwLDAsMC0zLjA4LS44M2MtMS40My4xNS03LjQ3Ljk0LTcuNzMsMWExLDEs''@;'; put 'put ''MCwwLDAsLjI2LDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjIwLjc1IiBjeT0iNiIgcj0iNCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0yNC44NCwyNi4yM2ExLDEsMCwwLDAtMS40LjI5LDE2LjYsMTYuNiwwLDAsMS0zLjUxLDMuNzdjLS4zMy4yNS0xLjU2LDEuMi0yLjA4LDEtLjM2LS4xMS0uMTUtLjgyLS4wOC0xLjEybC41My0xLjU3Yy4yMi0uNjQsNC4wNS0xMiw0LjQ3LTEzLjMuNjItMS45LjM1LTMuNzctMi40OC0z''@;'; put 'put ''LjMyLS43Ny4wOC04LjU4LDEuMDktOC43MiwxLjFhMSwxLDAsMCwwLC4xMywyczMtLjM5LDMuMzMtLjQyYS44OC44OCwwLDAsMSwuODUuNDQsMi40NywyLjQ3LDAsMCwxLS4wNywxLjcxYy0uMjYsMS00LjM3LDEyLjU4LTQuNSwxMy4yNWEyLjc4LDIuNzgsMCwwLDAsMS4xOCwzLDUsNSwwLDAs''@;'; put 'put ''MCwzLjA4LjgzaDBhOC41Myw4LjUzLDAsMCwwLDMuMDktLjYyYzIuNDktMSw1LjA5LTMuNjYsNi40Ni01Ljc1QTEsMSwwLDAsMCwyNC44NCwyNi4yM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZUJhcnM9KDAsRS5jbHJJY29uU1ZHKSgn''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiwyOUg0YTEsMSwwLDAsMSwwLTJIMzJhMSwxLDAsMCwxLDAsMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0i''@;'; put 'put ''TTMyLDE5SDRhMSwxLDAsMCwxLDAtMkgzMmExLDEsMCwwLDEsMCwyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMzIsOUg0QTEsMSwwLDAsMSw0LDdIMzJhMSwxLDAsMCwxLDAsMloiLz4nKSxMLkNsclNo''@;'; put 'put ''YXBlVXNlcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMTdhNyw3LDAsMSwwLTctN0E3LDcsMCwwLDAsMTgsMTdaTTE4LDVhNSw1LDAsMSwxLTUsNUE1LDUsMCwwLDEsMTgsNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTMwLjQ3LDI0LjM3YTE3LjE2LDE3LjE2LDAsMCwwLTI0LjkzLDBBMiwyLDAsMCwwLDUsMjUuNzRWMzFhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAsMi0yVjI1Ljc0QTIsMiwwLDAsMCwzMC40NywyNC4zN1pNMjksMzFIN1YyNS43M2ExNS4xNywxNS4xNywwLDAsMSwy''@;'; put 'put ''MiwwaDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC40NywyNC4zN2ExNy4xNiwxNy4xNiwwLDAsMC0yNC45MywwQTIsMiwwLDAsMCw1LDI1Ljc0VjMxYTIsMiwwLDAsMCwyLDJIMjlhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlYyNS43NEEyLDIsMCwwLDAsMzAuNDcsMjQuMzdaTTI5LDMxSDdWMjUuNzNhMTUuMTcsMTUuMTcsMCwwLDEsMjIsMGgwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTdh''@;'; put 'put ''Nyw3LDAsMCwwLDQuNDUtMS42aC0uMjJBMy42OCwzLjY4LDAsMCwxLDIwLDE0LjZhNSw1LDAsMSwxLDEuMjQtOC40MmwxLTEuNzZBNyw3LDAsMSwwLDE4LDE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNDcsMjQuMzdhMTcuMTYsMTcuMTYsMCwwLDAtMjQuOTMsMEEyLDIsMCwwLDAsNSwyNS43NFYzMWEyLDIsMCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjUuNzRBMiwy''@;'; put 'put ''LDAsMCwwLDMwLjQ3LDI0LjM3Wk0yOSwzMUg3VjI1LjczYTE1LjE3LDE1LjE3LDAsMCwxLDIyLDBoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwwLDAsNi44''@;'; put 'put ''NS01LjU2LDcuNCw3LjQsMCwwLDEtMi4yNC02LjY5QTcsNywwLDEsMCwxOCwxN1pNMTgsNWE1LDUsMCwxLDEtNSw1QTUsNSwwLDAsMSwxOCw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNs''@;'; put 'put ''ZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjYxLDI0LjUyYTE3LjE2LDE3LjE2LDAsMCwwLTI1LjIyLDAsMS41MSwx''@;'; put 'put ''LjUxLDAsMCwwLS4zOSwxdjZBMS41LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41di02QTEuNTEsMS41MSwwLDAsMCwzMC42MSwyNC41MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIx''@;'; put 'put ''OCIgY3k9IjEwIiByPSI3IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjYxLDI0LjUyYTE3LjE2LDE3LjE2LDAsMCwwLTI1LjIyLDAsMS41MSwxLjUxLDAsMCwwLS4zOSwxdjZBMS41LDEuNSwwLDAsMCw2LjUsMzNo''@;'; put 'put ''MjNBMS41LDEuNSwwLDAsMCwzMSwzMS41di02QTEuNTEsMS41MSwwLDAsMCwzMC42MSwyNC41MloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTdhNyw3LDAsMCwwLDQuNDUtMS42''@;'; put 'put ''aC0uMjJBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsMy4xNi01LjQ3QTcsNywwLDEsMCwxOCwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4''@;'; put 'put ''LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC42MSwyNC41MmExNy4xNiwxNy4xNiwwLDAsMC0yNS4yMiwwLDEuNTEsMS41MSwwLDAsMC0uMzksMXY2QTEuNSwxLjUsMCwwLDAsNi41LDMzaDIzQTEuNSwxLjUsMCwwLDAsMzEsMzEuNXYtNkExLjUxLDEuNTEsMCwwLDAsMzAuNjEsMjQuNTJaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwwLDAsNi44NS01LjU2LDcuNCw3LjQsMCwwLDEtMi4yNC02LjY5QTcsNywwLDEsMCwxOCwxN1oiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksTC5DbHJTaGFw''@;'; put 'put ''ZUFuZ2xlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjkuNTIsMjIuNTIsMTgsMTAuNiw2LjQ4LDIyLjUyYTEuNywxLjcsMCwwLDAsMi40NSwyLjM2TDE4LDE1LjQ5bDkuMDgsOS4zOWExLjcsMS43LDAsMCww''@;'; put 'put ''LDIuNDUtMi4zNloiLz4nKSxMLkNsclNoYXBlRm9sZGVyPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEy''@;'; put 'put ''LDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDMwLDlabTAsMjBINlYxM2g3LjMxYTIsMiwwLDAsMCwyLTJINlY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFIMzBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzAsMTMuNVYyOUg2VjEzaDcuMzFhMiwyLDAsMCwwLDItMkg2VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWg4LjUxYTcuNSw3LjUsMCwwLDEtMS4yOS0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCww''@;'; put 'put ''LDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzAsMTUuNFYyOUg2VjEzaDcuMzFhMiwyLDAsMCww''@;'; put 'put ''LDItMkg2VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWgyLjczQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE1''@;'; put 'put ''LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEu''@;'; put 'put ''MjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1''@;'; put 'put ''SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDMwLDlaTTYsMTFWN2g2LjQ5bDIuNzIsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1h''@;'; put 'put ''bGVydGVkIiBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwxOS41Niw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxNS40Wk02LDExVjdoNi40OWwyLjcyLDRa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAs''@;'; put 'put ''MCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIzLjEzLDlI''@;'; put 'put ''MTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41Wk02LDExVjdoNi40OWwyLjcyLDRaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLEwuQ2xyU2hhcGVGb2xkZXJPcGVuPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xIiBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcxLDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxSDMyYTIsMiwwLDAsMC0yLTJIMTYuNDJM''@;'; put 'put ''MTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCwwLDAsMzUuMzIsMTMuNzRaTTI5LjU1LDI5SDYuOWwzLjg4LTEzLjgxYS42Ni42''@;'; put 'put ''NiwwLDAsMSwuMzgtLjI0SDMzLjQ5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTM1LjMyLDEzLjc0QTEuNzEsMS43MSwwLDAsMCwzMy44NywxM0gxMS4xN2EyLjU5LDIuNTks''@;'; put 'put ''MCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWg4LjUyYTcuNDksNy40OSwwLDAsMS0xLjI5LTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3''@;'; put 'put ''LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCwwLDAsMzUuMzIsMTMuNzRaTTI5LjU1LDI5SDYuOWwzLjg4LTEzLjgxYS42Ni42NiwwLDAsMSwuMzgtLjI0SDMzLjQ5WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0''@;'; put 'put ''ZWQiIGQ9Ik0zMy42OCwxNS40aC0uM0wyOS41NSwyOUg2LjlsMy44OC0xMy44MWEuNjYuNjYsMCwwLDEsLjM4LS4yNGg5LjQyQTMuNjcsMy42NywwLDAsMSwxOSwxMy41NmEzLjYzLDMuNjMsMCwwLDEtLjI2LS41NkgxMS4xN2EyLjU5LDIuNTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCww''@;'; put 'put ''LC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWgyLjczQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAu''@;'; put 'put ''MzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMWExLjY4LDEuNjgsMCwwLDAsLjA3LS4zMkEzLjY3LDMuNjcsMCwwLDEsMzMuNjgsMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNS4zMiwxMy43NEExLjcxLDEuNzEsMCwwLDAsMzMuODcsMTNIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFIMzJh''@;'; put 'put ''MiwyLDAsMCwwLTItMkgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xQTEuNjQsMS42NCwwLDAsMCwzNS4zMiwxMy43NFoiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTksMTMuNTZhMy42MywzLjYzLDAsMCwxLS4yNi0uNTZIMTEuMTdhMi41OSwyLjU5LDAsMCww''@;'; put 'put ''LTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoMi43M0EzLjY2LDMuNjYsMCwwLDEsMTksOS44OUwxOS41Niw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcs''@;'; put 'put ''MS4zNywwLDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFhMS42OCwxLjY4LDAsMCwwLC4wNy0uMzJBMy42NywzLjY3LDAsMCwxLDMzLjY4LDE1LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcxLDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2''@;'; put 'put ''LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDguNTJhNy40OSw3LjQ5LDAsMCwxLTEuMzEtMkgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4x''@;'; put 'put ''OS0xNS4xQTEuNjQsMS42NCwwLDAsMCwzNS4zMiwxMy43NFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksTC5DbHJTaGFw''@;'; put 'put ''ZUJlbGw9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMi41MSwyNy44M0ExNC40LDE0LjQsMCwwLDEsMzAsMjQuOWExMi42MywxMi42MywwLDAsMS0xLjM1LTQuODFWMTUuMTVBMTAuODEsMTAuODEsMCwwLDAs''@;'; put 'put ''MTkuMjEsNC40VjMuMTFhMS4zMywxLjMzLDAsMSwwLTIuNjcsMFY0LjQyQTEwLjgxLDEwLjgxLDAsMCwwLDcuMjEsMTUuMTV2NC45NEExMi42MywxMi42MywwLDAsMSw1Ljg2LDI0LjlhMTQuNCwxNC40LDAsMCwxLTIuNDcsMi45MywxLDEsMCwwLDAtLjM0Ljc1djEuMzZhMSwxLDAsMCwwLDEs''@;'; put 'put ''MWgyNy44YTEsMSwwLDAsMCwxLTFWMjguNThBMSwxLDAsMCwwLDMyLjUxLDI3LjgzWk01LjEzLDI4Ljk0YTE2LjE3LDE2LjE3LDAsMCwwLDIuNDQtMywxNC4yNCwxNC4yNCwwLDAsMCwxLjY1LTUuODVWMTUuMTVhOC43NCw4Ljc0LDAsMSwxLDE3LjQ3LDB2NC45NGExNC4yNCwxNC4yNCwwLDAs''@;'; put 'put ''MCwxLjY1LDUuODUsMTYuMTcsMTYuMTcsMCwwLDAsMi40NCwzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMzQuMjhBMi42NywyLjY3LDAsMCwwLDIwLjU4LDMySDE1LjMyQTIuNjcsMi42NywwLDAs''@;'; put 'put ''MCwxOCwzNC4yOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xOCwzNC4yOEEyLjY3LDIuNjcsMCwwLDAsMjAuNTgsMzJIMTUuMzJBMi42NywyLjY3LDAsMCwwLDE4LDM0LjI4''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMyLjUxLDI3LjgzQTE0LjQsMTQuNCwwLDAsMSwzMCwyNC45YTEyLjYzLDEyLjYzLDAsMCwxLTEuMzUtNC44MVYxNS4xNWExMC45''@;'; put 'put ''MiwxMC45MiwwLDAsMC0uMTYtMS43OSw3LjQ0LDcuNDQsMCwwLDEtMi4yNC0uODQsOC44OSw4Ljg5LDAsMCwxLC40LDIuNjR2NC45NGExNC4yNCwxNC4yNCwwLDAsMCwxLjY1LDUuODUsMTYuMTcsMTYuMTcsMCwwLDAsMi40NCwzSDUuMTNhMTYuMTcsMTYuMTcsMCwwLDAsMi40NC0zLDE0LjI0''@;'; put 'put ''LDE0LjI0LDAsMCwwLDEuNjUtNS44NVYxNS4xNUE4LjgsOC44LDAsMCwxLDE4LDYuMzFhOC42MSw4LjYxLDAsMCwxLDQuNzYsMS40NEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2YzAtLjIxLDAtLjQyLDAtLjYzYTEwLjU4LDEwLjU4LDAsMCwwLTMuMzItMVYzLjExYTEuMzMsMS4zMywwLDEsMC0y''@;'; put 'put ''LjY3LDBWNC40MkExMC44MSwxMC44MSwwLDAsMCw3LjIxLDE1LjE1djQuOTRBMTIuNjMsMTIuNjMsMCwwLDEsNS44NiwyNC45YTE0LjQsMTQuNCwwLDAsMS0yLjQ3LDIuOTMsMSwxLDAsMCwwLS4zNC43NXYxLjM2YTEsMSwwLDAsMCwxLDFoMjcuOGExLDEsMCwwLDAsMS0xVjI4LjU4QTEsMSww''@;'; put 'put ''LDAsMCwzMi41MSwyNy44M1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi44NSwyOC4xM2wtLjM0LS4zQTE0LjM3LDE0LjM3LDAsMCwxLDMwLDI0LjlhMTIuNjMsMTIuNjMsMCwwLDEtMS4zNS00LjgxVjE1LjE1QTEwLjgxLDEwLjgxLDAsMCwwLDE5LjIxLDQuNFYzLjExYTEuMzMsMS4zMyww''@;'; put 'put ''LDEsMC0yLjY3LDBWNC40MkExMC44MSwxMC44MSwwLDAsMCw3LjIxLDE1LjE1djQuOTRBMTIuNjMsMTIuNjMsMCwwLDEsNS44NiwyNC45YTE0LjQsMTQuNCwwLDAsMS0yLjQ3LDIuOTNsLS4zNC4zdjIuODJIMzIuODVaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTE1LjMyLDMyYTIuNjUsMi42NSwwLDAsMCw1LjI1LDBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xOCwzNC4yOEEyLjY3LDIuNjcs''@;'; put 'put ''MCwwLDAsMjAuNTgsMzJIMTUuMzJBMi42NywyLjY3LDAsMCwwLDE4LDM0LjI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzIuODUsMjguMTNsLS4zNC0uM0ExNC4zNywxNC4zNyww''@;'; put 'put ''LDAsMSwzMCwyNC45YTEyLjYzLDEyLjYzLDAsMCwxLTEuMzUtNC44MVYxNS4xNWExMC45MiwxMC45MiwwLDAsMC0uMTYtMS43OUE3LjUsNy41LDAsMCwxLDIyLjUsNmMwLS4yMSwwLS40MiwwLS42M2ExMC41NywxMC41NywwLDAsMC0zLjMyLTFWMy4xMWExLjMzLDEuMzMsMCwxLDAtMi42Nyww''@;'; put 'put ''VjQuNDJBMTAuODEsMTAuODEsMCwwLDAsNy4yMSwxNS4xNXY0Ljk0QTEyLjYzLDEyLjYzLDAsMCwxLDUuODYsMjQuOWExNC40LDE0LjQsMCwwLDEtMi40NywyLjkzbC0uMzQuM3YyLjgySDMyLjg1WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxMLkNsclNoYXBlSW1hZ2U9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlY2QTIsMiwwLDAsMCwzMiw0Wk00LDMwVjZIMzJWMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTguOTIsMTRhMywzLDAsMSwwLTMtM0EzLDMsMCwwLDAsOC45MiwxNFptMC00LjZBMS42LDEuNiwwLDEsMSw3''@;'; put 'put ''LjMzLDExLDEuNiwxLjYsMCwwLDEsOC45Miw5LjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi43OCwxNS4zN2wtNS40LDUuNC00LTRhMSwxLDAsMCwwLTEuNDEsMEw1LjkyLDIyLjl2Mi44M2w2Ljc5LTYu''@;'; put 'put ''NzlMMTYsMjIuMThsLTMuNzUsMy43NUgxNWw4LjQ1LTguNDVMMzAsMjRWMjEuMThsLTUuODEtNS44MUExLDEsMCwwLDAsMjIuNzgsMTUuMzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjkzLDExYTMsMyww''@;'; put 'put ''LDEsMC0zLDNBMywzLDAsMCwwLDExLjkzLDExWm0tNC42LDBhMS42LDEuNiwwLDEsMSwxLjYsMS42QTEuNiwxLjYsMCwwLDEsNy4zMywxMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTE3LjM4LDIwLjc3bC00LTRhMSwxLDAsMCwwLTEuNDEsMEw1LjkyLDIyLjl2Mi44M2w2Ljc5LTYuNzlMMTYsMjIuMThsLTMuNzUsMy43NUgxNWw4LjQ1LTguNDVMMzAsMjRWMjEuMThsLTUuODEtNS44MWExLDEsMCwwLDAtMS40MSwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJWMzBINFY2SDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40NSw3LjQ1LDAs''@;'; put 'put ''MCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMiw0Wk04LjkyLDhhMywzLDAsMSwxLTMsM0EzLDMsMCwwLDEsOC45Miw4Wk02LDI3''@;'; put 'put ''VjIyLjlsNi02LjA4YTEsMSwwLDAsMSwxLjQxLDBMMTYsMTkuMzUsOC4zMiwyN1ptMjQsMEgxMS4xNWw2LjIzLTYuMjMsNS40LTUuNGExLDEsMCwwLDEsMS40MSwwTDMwLDIxLjE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTMwLDEzLjVBNy40OCw3LjQ4LDAsMCwxLDIyLjc4LDRINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNOC45Miw4YTMsMywwLDEsMS0zLDNBMywzLDAsMCwxLDguOTIsOFpNNiwyN1YyMi45''@;'; put 'put ''bDYtNi4wOGExLDEsMCwwLDEsMS40MSwwTDE2LDE5LjM1LDguMzIsMjdabTI0LDBIMTEuMTVsNi4yMy02LjIzLDUuNC01LjRhMSwxLDAsMCwxLDEuNDEsMEwzMCwyMS4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+JyksTC5DbHJTaGFwZUNsb3VkPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcuMTQsMzNIMTAuNjJDNS42NywzMywxLDI4LjE5LDEsMjMuMWExMCwxMCwwLDAsMSw4LTkuNzUsMTAuMTksMTAuMTksMCwwLDEsMjAuMzMsMS4wNkExMC4wNywxMC4wNywwLDAsMSwyOSwxNi42NmE4LjI5LDguMjksMCwwLDEsNiw4QzM1LDI5''@;'; put 'put ''LjEsMzEuMzMsMzMsMjcuMTQsMzNaTTE5LjA5LDYuMjNhOC4yNCw4LjI0LDAsMCwwLTguMTksOGwwLC44Ny0uODYuMUE3Ljk0LDcuOTQsMCwwLDAsMywyMy4xYzAsNCwzLjc3LDcuOSw3LjYyLDcuOUgyNy4xNEMzMC4yMSwzMSwzMywyOCwzMywyNC42NWE2LjMxLDYuMzEsMCwwLDAtNS4zNy02''@;'; put 'put ''LjI2bC0xLjE4LS4xOC4zOS0xLjEzQTguMTgsOC4xOCwwLDAsMCwxOS4wOSw2LjIzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTI5LDE2LjY2YTEwLjA3LDEwLjA3LDAsMCww''@;'; put 'put ''LC4yNS0yLjI0YzAtLjMzLDAtLjY1LDAtMWE3LjQ1LDcuNDUsMCwwLDEtMi4xLS41NCw4LDgsMCwwLDEtLjMsNC4xNmwtLjM5LDEuMTMsMS4xOC4xOGE2LjMxLDYuMzEsMCwwLDEsNS4zNyw2LjI2QzMyLjk1LDI4LDMwLjE2LDMxLDI3LjA5LDMxSDEwLjU3Yy0zLjg0LDAtNy42Mi0zLjkxLTcu''@;'; put 'put ''NjItNy45YTcuOTQsNy45NCwwLDAsMSw3LTcuODlsLjg2LS4xLDAtLjg3YTguMjQsOC4yNCwwLDAsMSw4LjE5LThBOC4xMyw4LjEzLDAsMCwxLDIyLjU4LDdhNy41Myw3LjUzLDAsMCwxLS4wOC0xLDcuNTEsNy41MSwwLDAsMSwuMDktMS4xMkExMC4xMywxMC4xMywwLDAsMCwxOSw0LjIzLDEw''@;'; put 'put ''LjI2LDEwLjI2LDAsMCwwLDguOTEsMTMuMzZhMTAsMTAsMCwwLDAtOCw5Ljc1YzAsNS4wOSw0LjY3LDkuOSw5LjYyLDkuOUgyNy4wOWM0LjE5LDAsNy44Ni0zLjksNy44Ni04LjM1QTguMjksOC4yOSwwLDAsMCwyOSwxNi42NloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVy''@;'; put 'put ''dGVkIiBkPSJNMjksMTYuNjZhMTAuMTQsMTAuMTQsMCwwLDAsLjItMS4zaC0yYTguMjgsOC4yOCwwLDAsMS0uMzcsMS43MmwtLjM5LDEuMTMsMS4xOC4xOGE2LjMxLDYuMzEsMCwwLDEsNS4zNyw2LjI2QzMyLjk1LDI4LDMwLjE2LDMxLDI3LjA5LDMxSDEwLjU3Yy0zLjg0LDAtNy42Mi0zLjkx''@;'; put 'put ''LTcuNjItNy45YTcuOTQsNy45NCwwLDAsMSw3LTcuODlsLjg2LS4xLDAtLjg3QTguMTYsOC4xNiwwLDAsMSwyMSw2LjQ3bDEtMS44QTEwLjE5LDEwLjE5LDAsMCwwLDguOTEsMTMuMzZhMTAsMTAsMCwwLDAtOCw5Ljc1YzAsNS4wOSw0LjY3LDkuOSw5LjYyLDkuOUgyNy4wOWM0LjE5LDAsNy44''@;'; put 'put ''Ni0zLjksNy44Ni04LjM1QTguMjksOC4yOSwwLDAsMCwyOSwxNi42NloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFB''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0y''@;'; put 'put ''OSwxNi42NmExMC4wNywxMC4wNywwLDAsMCwuMjUtMi4yNEExMC4xOSwxMC4xOSwwLDAsMCw4LjkxLDEzLjM2LDEwLDEwLDAsMCwwLDEsMjMuMUMxLDI4LjE5LDUuNjIsMzMsMTAuNTcsMzNIMjcuMDlDMzEuMjgsMzMsMzUsMjkuMSwzNSwyNC42NUE4LjI5LDguMjksMCwwLDAsMjksMTYuNjZa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yOSwxNi42NmExMC4wNywxMC4wNywwLDAsMCwuMjUtMi4yNGMwLS4zMywwLS42NSwwLTFhNy40NCw3LjQ0LDAsMCwxLTYuNi04LjU4QTEw''@;'; put 'put ''LjEzLDEwLjEzLDAsMCwwLDE5LDQuMjMsMTAuMjYsMTAuMjYsMCwwLDAsOC45MSwxMy4zNiwxMCwxMCwwLDAsMCwxLDIzLjFDMSwyOC4xOSw1LjYyLDMzLDEwLjU3LDMzSDI3LjA5QzMxLjI4LDMzLDM1LDI5LjEsMzUsMjQuNjVBOC4yOSw4LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjksMTYuNjZhMTAuMTUsMTAuMTUsMCwwLDAsLjItMS4yNmgtN0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OWwzLTUuMjFBMTAuMTksMTAuMTksMCwwLDAsOC45MSwxMy4zNiwxMCwxMCwwLDAsMCwxLDIzLjFDMSwyOC4xOSw1LjYyLDMzLDEwLjU3''@;'; put 'put ''LDMzSDI3LjA5QzMxLjI4LDMzLDM1LDI5LjEsMzUsMjQuNjVBOC4yOSw4LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44''@;'; put 'put ''NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxMLkNsclNoYXBlRWxsaXBzaXNIb3Jpem9udGFsPSgwLEUuY2xySWNvblNWRykoJzxj''@;'; put 'put ''aXJjbGUgY3g9IjMxLjEiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSI0LjkiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMxLjEiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJj''@;'; put 'put ''bGUgY3g9IjQuOSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxMLkNsclNoYXBlRWxsaXBzaXNWZXJ0aWNhbD0oMCxFLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIxOCIgY3k9IjQuOSIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjMxLjEiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjQuOSIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4''@;'; put 'put ''IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMzEuMSIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksTC5DbHJTaGFwZUZpbHRlckdyaWQ9KDAsRS5jbHJJ''@;'; put 'put ''Y29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNSwyNS44NmwyLDFWMjAuMjdhMSwxLDAsMCwwLS4yOS0uN0wxMC4yMywxM0gyNS43OWwtNi40Nyw2LjU3YTEsMSwwLDAsMC0uMjkuN0wxOSwyOGwyLDFWMjAuNjhMMjcuNTgsMTRB''@;'; put 'put ''MS40NiwxLjQ2LDAsMCwwLDI4LDEzVjEyYTEsMSwwLDAsMC0xLTFIOWExLDEsMCwwLDAtMSwxdjFhMS40NiwxLjQ2LDAsMCwwLC40MiwxTDE1LDIwLjY4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik04LDExdjEu''@;'; put 'put ''MTJhLjUuNSwwLDAsMCwuMTUuMzVsNy4yOCw3LjM2YS41LjUsMCwwLDEsLjE1LjM1djYuODlhLjUuNSwwLDAsMCwuMjguNDVsMy45NSwxLjQxYS41LjUsMCwwLDAsLjcyLS40NWwwLTguMzlhLjU0LjU0LDAsMCwxLC4xOC0uMzVsNy4xMi03LjI1YS41LjUsMCwwLDAsLjE1LS4zNVYxMVoiLz4n''@;'; put 'put ''KSxMLkNsclNoYXBlRmlsdGVyR3JpZENpcmNsZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDI1Ljg2bDIsMVYyMC4yN2ExLDEsMCwwLDAtLjI5LS43TDEwLjIzLDEzSDI1Ljc5bC02LjQ3LDYuNTdhMSwx''@;'; put 'put ''LDAsMCwwLS4yOS43TDE5LDI4bDIsMVYyMC42OEwyNy41OCwxNEExLjQ2LDEuNDYsMCwwLDAsMjgsMTNWMTJhMSwxLDAsMCwwLTEtMUg5YTEsMSwwLDAsMC0xLDF2MWExLjQ2LDEuNDYsMCwwLDAsLjQyLDFMMTUsMjAuNjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0yIiBkPSJNOCwxMXYxLjEyYS41LjUsMCwwLDAsLjE1LjM1bDcuMjgsNy4zNmEuNS41LDAsMCwxLC4xNS4zNXY2Ljg5YS41LjUsMCwwLDAsLjI4LjQ1bDMuOTUsMS40MWEuNS41LDAsMCwwLC43Mi0uNDVsMC04LjM5YS41NC41NCwwLDAsMSwuMTgtLjM1bDcuMTItNy4yNWEuNS41LDAsMCww''@;'; put 'put ''LC4xNS0uMzVWMTFaIi8+JyksTC5DbHJTaGFwZVZtQnVnPSgwLEUuY2xySWNvblNWRykoJzxyZWN0IHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjMiIGZpbGw9IiNmZmZmZmYiIG9wYWNpdHk9IjAuMTUiIHN0eWxlPSJpc29sYXRpb246aXNvbGF0ZSIvPjxwYXRoIGQ9Ik0zLjc5LDE0Ljgz''@;'; put 'put ''YTEuMDksMS4wOSwwLDAsMC0xLjQ3LS41NiwxLjA5LDEuMDksMCwwLDAtLjU0LDEuNDlsMi40Nyw1LjRjLjM5Ljg1LjgsMS4yOSwxLjU3LDEuMjlTNywyMiw3LjM5LDIxLjE2bDIuMTctNC43N2EuMzMuMzMsMCwwLDEsLjMxLS4yLjM1LjM1LDAsMCwxLC4zNS4zNXY0LjYxYTEuMTUsMS4xNSww''@;'; put 'put ''LDAsMCwxLjE0LDEuMywxLjE3LDEuMTcsMCwwLDAsMS4xNy0xLjNWMTcuMzhhMS4xNSwxLjE1LDAsMCwxLDEuMjItMS4yLDEuMTMsMS4xMywwLDAsMSwxLjE4LDEuMnYzLjc3YTEuMTcsMS4xNywwLDEsMCwyLjMyLDBWMTcuMzhhMS4xNSwxLjE1LDAsMCwxLDEuMjItMS4yLDEuMTMsMS4xMyww''@;'; put 'put ''LDAsMSwxLjE4LDEuMnYzLjc3YTEuMTYsMS4xNiwwLDEsMCwyLjMxLDBWMTYuODZhMi42OSwyLjY5LDAsMCwwLTIuNzgtMi42OSwzLjU3LDMuNTcsMCwwLDAtMi40NywxLjA1LDIuNzUsMi43NSwwLDAsMC0yLjM4LTEuMDVBMy45MywzLjkzLDAsMCwwLDEyLDE1LjIyYTIuODIsMi44MiwwLDAs''@;'; put 'put ''MC0yLjA4LTEuMDVBMi41NSwyLjU1LDAsMCwwLDcuNCwxNS44OUw1LjgyLDE5LjYzbC0yLTQuOCIgZmlsbD0iI2ZmZmZmZiIvPjxwYXRoIGQ9Ik0zMywxNC4xOEExLjE0LDEuMTQsMCwwLDAsMzEuOSwxNWwtMS4xOSwzLjczTDI5LjUsMTUuMDVhMS4xOCwxLjE4LDAsMCwwLTEuMTUtLjg3aC0u''@;'; put 'put ''MWExLjIsMS4yLDAsMCwwLTEuMTUuODdsLTEuMTksMy43MS0xLjE4LTMuNzFhMS4xNSwxLjE1LDAsMCwwLTEuMTEtLjg3LDEuMDgsMS4wOCwwLDAsMC0xLjEyLDEuMDcsMS42OCwxLjY4LDAsMCwwLC4xLjU0bDIsNS43YTEuMjcsMS4yNywwLDAsMCwxLjI3LDEsMS4yNCwxLjI0LDAsMCwwLDEu''@;'; put 'put ''Mi0uOTNsMS4yLTMuNjQsMS4yLDMuNjRhMS4yNSwxLjI1LDAsMCwwLDEuMjYuOTNBMS4yNywxLjI3LDAsMCwwLDMyLDIxLjVMMzQsMTUuNzNhMS43NywxLjc3LDAsMCwwLC4wOC0uNDhBMS4wNywxLjA3LDAsMCwwLDMzLDE0LjE4WiIgZmlsbD0iI2ZmZmZmZiIvPicpLEwuQ2xyU2hhcGVTZWFy''@;'; put 'put ''Y2g9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNi4zMyw1LjA1QTEwLjk1LDEwLjk1LDAsMSwxLDUuMzksMTYsMTEsMTEsMCwwLDEsMTYuMzMsNS4wNW0wLTIuMDVhMTMsMTMsMCwxLDAsMTMsMTMsMTMsMTMs''@;'; put 'put ''MCwwLDAtMTMtMTNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zNSwzMy4yOWwtNy4zNy03LjQyLTEuNDIsMS40MSw3LjM3LDcuNDJBMSwxLDAsMSwwLDM1LDMzLjI5WiIvPicpLEwuQ2xyU2hhcGVWaWV3''@;'; put 'put ''Q29sdW1ucz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLDVINUEyLDIsMCwwLDAsMyw3VjI5YTIsMiwwLDAsMCwyLDJIMzFhMiwyLDAsMCwwLDItMlY3QTIsMiwwLDAsMCwzMSw1Wk0xMywyOUg1VjdoOFpt''@;'; put 'put ''MTAsMEgxNVY3aDhaIi8+JyksTC5DbHJTaGFwZUFuZ2xlRG91YmxlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjksMTkuNDFhMSwxLDAsMCwxLS43MS0uMjlMMTgsOC44Myw3LjcxLDE5LjEyYTEsMSwwLDAs''@;'; put 'put ''MS0xLjQxLTEuNDFMMTgsNiwyOS43MSwxNy43MUExLDEsMCwwLDEsMjksMTkuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yOSwzMC40MWExLDEsMCwwLDEtLjcxLS4yOUwxOCwxOS44Myw3LjcxLDMw''@;'; put 'put ''LjEyYTEsMSwwLDAsMS0xLjQxLTEuNDFMMTgsMTcsMjkuNzEsMjguNzFBMSwxLDAsMCwxLDI5LDMwLjQxWiIvPicpLEwuQ2xyU2hhcGVDYWxlbmRhcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLjI1LDZI''@;'; put 'put ''MjlWOGgzVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCwwLDMyLjI1LDZaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHg9IjgiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIi''@;'; put 'put ''IGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIyMCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtNSIgeD0iMjYiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIHg9IjgiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIHg9IjE0IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiB4PSIy''@;'; put 'put ''MCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgeD0iMjYiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIiB4PSI4IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMSIgeD0iMTQiIHk9IjI0IiB3aWR0aD0iMiIg''@;'; put 'put ''aGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEyIiB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMTMiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlB''@;'; put 'put ''MSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNSIgZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAsMCwwLDI2LDEwWiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNiIgeD0iMTMiIHk9IjYiIHdpZHRoPSIxMCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFk''@;'; put 'put ''Z2VkIiBkPSJNMzIsMTMuMjJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''ICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgeD0iOCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zLS1iYWRnZWQiIHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgeD0iMjAiIHk9IjE0IiB3aWR0aD0iMiIg''@;'; put 'put ''aGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiB4PSIyNiIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiIHg9IjgiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2Vk''@;'; put 'put ''IiB4PSIxNCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1iYWRnZWQiIHg9IjIwIiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWJhZGdlZCIgeD0iMjYiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMTAtLWJhZGdlZCIgeD0iOCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMS0tYmFkZ2VkIiB4PSIxNCIgeT0iMjQiIHdp''@;'; put 'put ''ZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMi0tYmFkZ2VkIiB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMy0tYmFkZ2VkIiB4PSIyNiIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xNC0tYmFkZ2VkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTUtLWJhZGdlZCIgZD0iTTIy''@;'; put 'put ''LjUsNkgxM1Y4aDkuNzhBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE2LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMzJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUs''@;'; put 'put ''MzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9IjgiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiB4PSI4IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIiB4PSIxNCIg''@;'; put 'put ''eT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIgeD0iMjAiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWFsZXJ0ZWQiIHg9IjI2IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC04LS1hbGVydGVkIiB4PSI4IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC05LS1hbGVydGVkIiB4PSIxNCIgeT0iMjQiIHdpZHRo''@;'; put 'put ''PSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTAtLWFsZXJ0ZWQiIHg9IjIwIiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMS0tYWxlcnRlZCIgeD0iMjYiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEyLS1hbGVydGVkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+PHBvbHlnb24gcG9pbnRzPSIyMS4yOSA2IDEzIDYgMTMgOCAyMC4xNCA4IDIxLjI5IDYiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgs''@;'; put 'put ''MCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuMjUsNmgtNFY5YTIuMiwyLjIsMCwxLDEtNC40LDBWNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCww''@;'; put 'put ''LDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNlpNMTAsMjZIOFYyNGgyWm0wLTVIOFYxOWgyWm0wLTVIOFYxNGgyWm02LDEwSDE0VjI0aDJabTAtNUgxNFYxOWgy''@;'; put 'put ''Wm0wLTVIMTRWMTRoMlptNiwxMEgyMFYyNGgyWm0wLTVIMjBWMTloMlptMC01SDIwVjE0aDJabTYsMTBIMjZWMjRoMlptMC01SDI2VjE5aDJabTAtNUgyNlYxNGgyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0x''@;'; put 'put ''MCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMjYsMTBhMSwxLDAsMCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEs''@;'; put 'put ''MCwwLDAsMjYsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMwLDEzLjVBNy41LDcuNSwwLDAsMSwyMi41LDZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEu''@;'; put 'put ''NzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41Wk0xMCwyNkg4VjI0aDJabTAtNUg4VjE5aDJabTAtNUg4VjE0aDJabTYsMTBIMTRWMjRoMlptMC01SDE0VjE5aDJabTAtNUgxNFYxNGgyWm02LDEw''@;'; put 'put ''SDIwVjI0aDJabTAtNUgyMFYxOWgyWm0wLTVIMjBWMTRoMlptNiwxMEgyNlYyNGgyWm0wLTVIMjZWMTloMlptMC01SDI2VjE0aDJaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1i''@;'; put 'put ''YWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5LDZIMTIu''@;'; put 'put ''MlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4Wk0xMCwyNkg4VjI0aDJabTAtNUg4VjE5aDJabTAtNUg4VjE0aDJabTYsMTBIMTRW''@;'; put 'put ''MjRoMlptMC01SDE0VjE5aDJabTAtNUgxNFYxNGgyWm02LDEwSDIwVjI0aDJabTAtNUgyMFYxOWgyWm02LDVIMjZWMjRoMlptMC01SDI2VjE5aDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRl''@;'; put 'put ''ZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44''@;'; put 'put ''NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxMLkNsclNoYXBlRXZlbnQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNi4xNywyNS44NiwxMC44MSwyMC41YTEsMSwwLDAsMSwxLjQxLTEuNDFMMTYuMTcsMjNsOC42NC04LjY0YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMi4yNSw2SDI5VjhoM1YzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwz''@;'; put 'put ''Mi4yNSw2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0yNiwxMGExLDEsMCwwLDAsMS0xVjNhMSwxLDAsMCwwLTIsMFY5QTEsMSwwLDAsMCwyNiwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NSIgeD0iMTMiIHk9IjYiIHdpZHRoPSIxMCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTAuODEsMjAuNWw1LjM2LDUuMzZMMjYuMjIsMTUuODFhMSwxLDAs''@;'; put 'put ''MCwwLTEuNDEtMS40MUwxNi4xNywyM2wtMy45NC0zLjk0YTEsMSwwLDAsMC0xLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYz''@;'; put 'put ''QTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzIsMTMuMjJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwy''@;'; put 'put ''LDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTQtLWJhZGdlZCIgZD0iTTIyLjUsNkgxM1Y4aDkuNzhBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9''@;'; put 'put ''IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+''@;'; put 'put ''XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xMC44MSwyMC41bDUuMzYsNS4zNkwyNi4yMiwxNS44MWExLDEsMCwwLDAsLjIzLS40MUgyMy44TDE2LjE3LDIzbC0zLjk0LTMuOTRh''@;'; put 'put ''MSwxLDAsMCwwLTEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgcG9pbnRzPSIyMS4yOSA2IDEzIDYgMTMgOCAyMC4xNCA4IDIxLjI5IDYiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMzJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjgu''@;'; put 'put ''NUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4y''@;'; put 'put ''OCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTAsMTBhMSwx''@;'; put 'put ''LDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAsMCwwLDI2''@;'; put 'put ''LDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0zMi4yNSw2aC00VjlhMi4yLDIuMiwwLDAsMS00LjQsMFY2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYz''@;'; put 'put ''MC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2Wk0yNS45NCwxNi41OGwtOS42Nyw5LjY3TDExLDIwLjk0QTEuMzYsMS4zNiwwLDAsMSwxMi45LDE5bDMuMzgsMy4zOEwyNCwxNC42NmEx''@;'; put 'put ''LjM2LDEuMzYsMCwxLDEsMS45MywxLjkzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwx''@;'; put 'put ''MFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgyNi4zYTEuMzQsMS4zNCwwLDAsMS0uMzYsMS4xOGwtOS42Nyw5LjY3TDExLDIwLjk0QTEuMzYsMS4zNiwwLDAs''@;'; put 'put ''MSwxMi45LDE5bDMuMzgsMy4zOCw3LTdoLTFBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjEuMjksNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAs''@;'; put 'put ''MzQsMzAuMTlWMTUuMzhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTAsMTBhMSwxLDAsMCww''@;'; put 'put ''LDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMCwxMy41QTcuNSw3LjUsMCwwLDEsMjIuNSw2SDEyLjJWOUEyLjIs''@;'; put 'put ''Mi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzAsMTMuNVptLTQuMDYsMy4wOC05LjY3LDkuNjdMMTEsMjAuOTRB''@;'; put 'put ''MS4zNiwxLjM2LDAsMCwxLDEyLjksMTlsMy4zOCwzLjM4TDI0LDE0LjY2YTEuMzYsMS4zNiwwLDEsMSwxLjkzLDEuOTNaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIg''@;'; put 'put ''Y3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLEwuQ2xyU2hhcGVFeWU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjYyLDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0xMFM1LjM0LDExLjMsMiwxNy41M0wxLjcyLDE4bC4yNi40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44Miwx''@;'; put 'put ''MHMxMi40Ni0zLjcyLDE1LjgyLTEwbC4yNi0uNDhaTTE3LjgsMjYuNDNDMTIuMTcsMjYuNDMsNywyMy4yOSw0LDE4YzMtNS4yOSw4LjE3LTguNDMsMTMuOC04LjQzUzI4LjU0LDEyLjcyLDMxLjU5LDE4QzI4LjU0LDIzLjI5LDIzLjQyLDI2LjQzLDE3LjgsMjYuNDNaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjA5LDExLjE3QTYuODYsNi44NiwwLDEsMCwyNSwxOCw2Ljg2LDYuODYsMCwwLDAsMTguMDksMTEuMTdabTAsMTEuNzJBNC44Niw0Ljg2LDAsMSwxLDIzLDE4LDQuODcsNC44NywwLDAsMSwx''@;'; put 'put ''OC4wOSwyMi44OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjIsMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1LjgyLTEwUzUuMzQsMTEuMywyLDE3LjUzTDEuNzIsMThsLjI2LjQ4YzMuMzcsNi4yMyw5''@;'; put 'put ''LjI4LDEwLDE1LjgyLDEwczEyLjQ2LTMuNzIsMTUuODItMTBsLjI2LS40OFpNMTcuOCwyNi40M0MxMi4xNywyNi40Myw3LDIzLjI5LDQsMThjMy01LjI5LDguMTctOC40MywxMy44LTguNDNTMjguNTQsMTIuNzIsMzEuNTksMThDMjguNTQsMjMuMjksMjMuNDIsMjYuNDMsMTcuOCwyNi40M1oi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4LjA5IiBjeT0iMTguMDMiIHI9IjYuODYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz4nKSxMLkNsclNoYXBlRXllSGlkZT0oMCxFLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMjUuMTksMjAuNEE2Ljc4LDYuNzgsMCwwLDAsMjUuNjIsMThhNi44Niw2Ljg2LDAsMCwwLTYuODYtNi44Niw2Ljc5LDYuNzksMCwwLDAtMi4zNy40M0wxOCwxMy4yM2E0Ljc4LDQuNzgsMCwwLDEsLjc0LS4wNkE0Ljg3LDQuODcsMCwwLDEsMjMuNjIsMThhNC43''@;'; put 'put ''OSw0Ljc5LDAsMCwxLS4wNi43NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQuMjksMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1LjgyLTEwYTE2LjgyLDE2LjgyLDAsMCwwLTUuMjQuODVMMTQuODQsMTBh''@;'; put 'put ''MTQuNzgsMTQuNzgsMCwwLDEsMy42My0uNDdjNS42MywwLDEwLjc1LDMuMTQsMTMuOCw4LjQzYTE3Ljc1LDE3Ljc1LDAsMCwxLTQuMzcsNS4xbDEuNDIsMS40MmExOS45MywxOS45MywwLDAsMCw1LTZsLjI2LS40OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0y''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNC44Nyw1Ljc4bDQuNDYsNC40NmExOS41MiwxOS41MiwwLDAsMC02LjY5LDcuMjlMMi4zOCwxOGwuMjYuNDhjMy4zNyw2LjIzLDkuMjgsMTAsMTUuODIsMTBhMTYuOTMsMTYuOTMsMCwwLDAsNy4zNy0xLjY5bDUsNSwxLjc1LTEuNS0yNi0yNlpt''@;'; put 'put ''OS43NSw5Ljc1LDYuNjUsNi42NWE0LjgxLDQuODEsMCwwLDEtMi41LjcyQTQuODcsNC44NywwLDAsMSwxMy45LDE4LDQuODEsNC44MSwwLDAsMSwxNC42MiwxNS41M1ptLTEuNDUtMS40NWE2Ljg1LDYuODUsMCwwLDAsOS41NSw5LjU1bDEuNiwxLjZhMTQuOTEsMTQuOTEsMCwwLDEtNS44Niwx''@;'; put 'put ''LjJjLTUuNjMsMC0xMC43NS0zLjE0LTEzLjgtOC40M2ExNy4yOSwxNy4yOSwwLDAsMSw2LjEyLTYuM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguMzcsMTEuMTdBNi43OSw2Ljc5LDAsMCwwLDE2LDExLjZs''@;'; put 'put ''OC44LDguOEE2Ljc4LDYuNzgsMCwwLDAsMjUuMjMsMTgsNi44Niw2Ljg2LDAsMCwwLDE4LjM3LDExLjE3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTM0LjI5LDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0x''@;'; put 'put ''MGExNi44MiwxNi44MiwwLDAsMC01LjI0Ljg1TDE0Ljg0LDEwYTE0Ljc4LDE0Ljc4LDAsMCwxLDMuNjMtLjQ3YzUuNjMsMCwxMC43NSwzLjE0LDEzLjgsOC40M2ExNy43NSwxNy43NSwwLDAsMS00LjM3LDUuMWwxLjQyLDEuNDJhMTkuOTMsMTkuOTMsMCwwLDAsNS02bC4yNi0uNDhaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNC44Nyw1Ljc4bDQuNDYsNC40NmExOS41MiwxOS41MiwwLDAsMC02LjY5LDcuMjlMMi4zOCwxOGwuMjYuNDhjMy4zNyw2LjIzLDkuMjgsMTAsMTUuODIsMTBhMTYuOTMsMTYuOTMsMCww''@;'; put 'put ''LDAsNy4zNy0xLjY5bDUsNSwxLjc1LTEuNS0yNi0yNlptOC4zLDguM2E2Ljg1LDYuODUsMCwwLDAsOS41NSw5LjU1bDEuNiwxLjZhMTQuOTEsMTQuOTEsMCwwLDEtNS44NiwxLjJjLTUuNjMsMC0xMC43NS0zLjE0LTEzLjgtOC40M2ExNy4yOSwxNy4yOSwwLDAsMSw2LjEyLTYuM1oiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz4nKSxMLkNsclNoYXBlU3RlcEZvcndhcmQyPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik03LjA4LDYuNTJhMS42OCwxLjY4LDAsMCwwLDAsMi40TDE2LjUxLDE4LDcuMTIsMjcuMDhhMS43LDEuNywwLDAsMCwyLjM2LDIuNDRo''@;'; put 'put ''MEwyMS40LDE4LDkuNDgsNi40N0ExLjY5LDEuNjksMCwwLDAsNy4wOCw2LjUyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI2LjQ5LDVhMS43LDEuNywwLDAsMC0xLjcsMS43VjI5LjNhMS43LDEuNywwLDAsMCwzLjQsMFY2LjdBMS43''@;'; put 'put ''LDEuNywwLDAsMCwyNi40OSw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZUFycm93PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNy42NiwxNS42MSwxOCw2LDguMzQsMTUuNjFBMSwxLDAsMSwwLDkuNzUsMTdMMTcsOS44''@;'; put 'put ''MVYyOC45NGExLDEsMCwxLDAsMiwwVjkuODFMMjYuMjUsMTdhMSwxLDAsMCwwLDEuNDEtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+JyksTC5Db3JlU2hhcGVzPXsidW5rbm93bi1zdGF0dXMiOkwuQ2xyU2hhcGVVbmtub3duU3RhdHVzLGhvbWU6''@;'; put 'put ''TC5DbHJTaGFwZUhvbWUsY29nOkwuQ2xyU2hhcGVDb2csY2hlY2s6TC5DbHJTaGFwZUNoZWNrLHRpbWVzOkwuQ2xyU2hhcGVUaW1lcywiZXhjbGFtYXRpb24tdHJpYW5nbGUiOkwuQ2xyU2hhcGVFeGNsYW1hdGlvblRyaWFuZ2xlLCJleGNsYW1hdGlvbi1jaXJjbGUiOkwuQ2xyU2hhcGVFeGNs''@;'; put 'put ''YW1hdGlvbkNpcmNsZSwiY2hlY2stY2lyY2xlIjpMLkNsclNoYXBlQ2hlY2tDaXJjbGUsImluZm8tY2lyY2xlIjpMLkNsclNoYXBlSW5mb0NpcmNsZSwiaW5mby1zdGFuZGFyZCI6TC5DbHJTaGFwZUluZm9TdGFuZGFyZCwic3VjY2Vzcy1zdGFuZGFyZCI6TC5DbHJTaGFwZVN1Y2Nlc3NTdGFu''@;'; put 'put ''ZGFyZCwiZXJyb3Itc3RhbmRhcmQiOkwuQ2xyU2hhcGVFcnJvclN0YW5kYXJkLCJ3YXJuaW5nLXN0YW5kYXJkIjpMLkNsclNoYXBlV2FybmluZ1N0YW5kYXJkLCJoZWxwLWluZm8iOkwuQ2xyU2hhcGVIZWxwSW5mbyxiYXJzOkwuQ2xyU2hhcGVCYXJzLHVzZXI6TC5DbHJTaGFwZVVzZXIsYW5n''@;'; put 'put ''bGU6TC5DbHJTaGFwZUFuZ2xlLGZvbGRlcjpMLkNsclNoYXBlRm9sZGVyLCJmb2xkZXItb3BlbiI6TC5DbHJTaGFwZUZvbGRlck9wZW4sYmVsbDpMLkNsclNoYXBlQmVsbCxpbWFnZTpMLkNsclNoYXBlSW1hZ2UsY2xvdWQ6TC5DbHJTaGFwZUNsb3VkLCJlbGxpcHNpcy1ob3Jpem9udGFsIjpM''@;'; put 'put ''LkNsclNoYXBlRWxsaXBzaXNIb3Jpem9udGFsLCJlbGxpcHNpcy12ZXJ0aWNhbCI6TC5DbHJTaGFwZUVsbGlwc2lzVmVydGljYWwsImZpbHRlci1ncmlkIjpMLkNsclNoYXBlRmlsdGVyR3JpZCwiZmlsdGVyLWdyaWQtY2lyY2xlIjpMLkNsclNoYXBlRmlsdGVyR3JpZENpcmNsZSwidm0tYnVn''@;'; put 'put ''IjpMLkNsclNoYXBlVm1CdWcsc2VhcmNoOkwuQ2xyU2hhcGVTZWFyY2gsInZpZXctY29sdW1ucyI6TC5DbHJTaGFwZVZpZXdDb2x1bW5zLCJhbmdsZS1kb3VibGUiOkwuQ2xyU2hhcGVBbmdsZURvdWJsZSxjYWxlbmRhcjpMLkNsclNoYXBlQ2FsZW5kYXIsZXZlbnQ6TC5DbHJTaGFwZUV2ZW50''@;'; put 'put ''LGV5ZTpMLkNsclNoYXBlRXllLCJleWUtaGlkZSI6TC5DbHJTaGFwZUV5ZUhpZGUsInN0ZXAtZm9yd2FyZC0yIjpMLkNsclNoYXBlU3RlcEZvcndhcmQyLGFycm93OkwuQ2xyU2hhcGVBcnJvd30sT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuQ29yZVNoYXBlcywiaG91c2UiLCgwLEIuZGVzY3Jp''@;'; put 'put ''cHRvckNvbmZpZykoTC5Db3JlU2hhcGVzLmhvbWUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJzZXR0aW5ncyIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMuY29nKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuQ29yZVNoYXBlcywic3VjY2VzcyIs''@;'; put 'put ''KDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMuY2hlY2spKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJjbG9zZSIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMudGltZXMpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVz''@;'; put 'put ''LCJ3YXJuaW5nIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuQ29yZVNoYXBlc1siZXhjbGFtYXRpb24tdHJpYW5nbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkNvcmVTaGFwZXMsImVycm9yIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuQ29yZVNoYXBlc1siZXhjbGFtYXRpb24t''@;'; put 'put ''Y2lyY2xlIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJpbmZvIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuQ29yZVNoYXBlc1siaW5mby1jaXJjbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkNvcmVTaGFwZXMsIm1lbnUiLCgwLEIuZGVzY3JpcHRvckNv''@;'; put 'put ''bmZpZykoTC5Db3JlU2hhcGVzLmJhcnMpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJhdmF0YXIiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Db3JlU2hhcGVzLnVzZXIpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJjYXJldCIsKDAsQi5kZXNj''@;'; put 'put ''cmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMuYW5nbGUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJkaXJlY3RvcnkiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Db3JlU2hhcGVzLmZvbGRlcikpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkNvcmVTaGFwZXMsIm5v''@;'; put 'put ''dGlmaWNhdGlvbiIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMuYmVsbCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkNvcmVTaGFwZXMsImNvbGxhcHNlIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuQ29yZVNoYXBlc1siYW5nbGUtZG91YmxlIl0pKX0sIi4vcHJvamVj''@;'; put 'put ''dHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIjpmdW5jdGlvbihKZSxMLG1lKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEwuZGVzY3JpcHRvckNvbmZpZz12b2lkIDAsTC5kZXNjcmlwdG9yQ29uZmln''@;'; put 'put ''PWZ1bmN0aW9uIEIoRSl7cmV0dXJue2VudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwLHZhbHVlOkV9fX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3NoYXBlLXRlbXBsYXRlLW9ic2VydmVyLnRzIjpmdW5jdGlvbihKZSxMLG1lKXsidXNlIHN0cmljdCI7T2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KEwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEwuU2hhcGVUZW1wbGF0ZU9ic2VydmVyPUwuY2hhbmdlSGFuZGxlckNhbGxiYWNrcz12b2lkIDAsTC5jaGFuZ2VIYW5kbGVyQ2FsbGJhY2tzPXt9O3ZhciBCPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gRSgpe3RoaXMu''@;'; put 'put ''Y2FsbGJhY2tzPUwuY2hhbmdlSGFuZGxlckNhbGxiYWNrc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KEUsImluc3RhbmNlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEUuc2luZ2xlSW5zdGFuY2V8fChFLnNpbmdsZUluc3RhbmNlPW5ldyBFKSxFLnNpbmdsZUluc3RhbmNlfSxlbnVt''@;'; put 'put ''ZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLEUucHJvdG90eXBlLnN1YnNjcmliZVRvPWZ1bmN0aW9uKEVlLFUpe3ZhciBRPXRoaXM7cmV0dXJuIHRoaXMuY2FsbGJhY2tzW0VlXT8tMT09PXRoaXMuY2FsbGJhY2tzW0VlXS5pbmRleE9mKFUpJiZ0aGlzLmNhbGxiYWNrc1tFZV0ucHVzaChV''@;'; put 'put ''KTp0aGlzLmNhbGxiYWNrc1tFZV09W1VdLGZ1bmN0aW9uKCl7dmFyIGo9US5jYWxsYmFja3NbRWVdLmluZGV4T2YoVSk7US5jYWxsYmFja3NbRWVdLnNwbGljZShqLDEpLDA9PT1RLmNhbGxiYWNrc1tFZV0ubGVuZ3RoJiZkZWxldGUgUS5jYWxsYmFja3NbRWVdfX0sRS5wcm90b3R5cGUuZW1p''@;'; put 'put ''dENoYW5nZXM9ZnVuY3Rpb24oRWUsVSl7dGhpcy5jYWxsYmFja3NbRWVdJiZ0aGlzLmNhbGxiYWNrc1tFZV0ubWFwKGZ1bmN0aW9uKFEpe1EoVSl9KX0sRX0oKTtMLlNoYXBlVGVtcGxhdGVPYnNlcnZlcj1CfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3Iu''@;'; put 'put ''dHMiOmZ1bmN0aW9uKEplLEwsbWUpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTC5jbHJJY29uU1ZHPXZvaWQgMDtMLmNsckljb25TVkc9ZnVuY3Rpb24gVShRKXt2YXIgaj0iIjtyZXR1cm4gUS5pbmRleE9mKCItLWJhZGdl''@;'; put 'put ''ZCIpPi0xJiYoais9ImNhbi1iYWRnZSAiKSxRLmluZGV4T2YoIi0tYWxlcnRlZCIpPi0xJiYoais9ImNhbi1hbGVydCAiKSxRLmluZGV4T2YoImNsci1pLXNvbGlkIik+LTEmJihqKz0iaGFzLXNvbGlkICIpLChqPyc8c3ZnIHZlcnNpb249IjEuMSIgY2xhc3M9IicraisnIiB2aWV3Qm94PSIw''@;'; put 'put ''IDAgMzYgMzYiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiXG4gICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgZm9jdXNhYmxlPSJmYWxzZSIgcm9sZT0iaW1nIj4nOic8c3Zn''@;'; put 'put ''IHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDM2IDM2IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IlxuICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGZvY3VzYWJsZT0i''@;'; put 'put ''ZmFsc2UiIHJvbGU9ImltZyI+JykrUSsiPC9zdmc+In19fSl9LDkzODc3OmZ1bmN0aW9uKFhlKXtYZS5leHBvcnRzPWZ1bmN0aW9uKEplKXt2YXIgTD17fTtmdW5jdGlvbiBtZShCKXtpZihMW0JdKXJldHVybiBMW0JdLmV4cG9ydHM7dmFyIEU9TFtCXT17aTpCLGw6ITEsZXhwb3J0czp7fX07''@;'; put 'put ''cmV0dXJuIEplW0JdLmNhbGwoRS5leHBvcnRzLEUsRS5leHBvcnRzLG1lKSxFLmw9ITAsRS5leHBvcnRzfXJldHVybiBtZS5tPUplLG1lLmM9TCxtZS5kPWZ1bmN0aW9uKEIsRSxFZSl7bWUubyhCLEUpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoQixFLHtlbnVtZXJhYmxlOiEwLGdldDpFZX0p''@;'; put 'put ''fSxtZS5yPWZ1bmN0aW9uKEIpeyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIs''@;'; put 'put ''e3ZhbHVlOiEwfSl9LG1lLnQ9ZnVuY3Rpb24oQixFKXtpZigxJkUmJihCPW1lKEIpKSw4JkV8fDQmRSYmIm9iamVjdCI9PXR5cGVvZiBCJiZCJiZCLl9fZXNNb2R1bGUpcmV0dXJuIEI7dmFyIEVlPU9iamVjdC5jcmVhdGUobnVsbCk7aWYobWUucihFZSksT2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KEVlLCJkZWZhdWx0Iix7ZW51bWVyYWJsZTohMCx2YWx1ZTpCfSksMiZFJiYic3RyaW5nIiE9dHlwZW9mIEIpZm9yKHZhciBVIGluIEIpbWUuZChFZSxVLGZ1bmN0aW9uKFEpe3JldHVybiBCW1FdfS5iaW5kKG51bGwsVSkpO3JldHVybiBFZX0sbWUubj1mdW5jdGlvbihCKXt2YXIgRT1CJiZC''@;'; put 'put ''Ll9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gQi5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBCfTtyZXR1cm4gbWUuZChFLCJhIixFKSxFfSxtZS5vPWZ1bmN0aW9uKEIsRSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChCLEUpfSxtZS5wPSIiLG1l''@;'; put 'put ''KG1lLnM9Ii4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9hbGwtc2hhcGVzLnRzIil9KHsiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2FsbC1zaGFwZXMudHMiOmZ1bmN0aW9uKEplLEwsbWUpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTCwiX19lc01vZHVsZSIs''@;'; put 'put ''e3ZhbHVlOiEwfSksTC5BbGxTaGFwZXM9dm9pZCAwO3ZhciBCPW1lKCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY2hhcnQtc2hhcGVzLnRzIiksRT1tZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NvbW1lcmNlLXNoYXBlcy50cyIpLEVlPW1lKCIuL3Byb2plY3RzL2ljb25z''@;'; put 'put ''L3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMiKSxVPW1lKCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvZXNzZW50aWFsLXNoYXBlcy50cyIpLFE9bWUoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9tZWRpYS1zaGFwZXMudHMiKSxqPW1lKCIuL3Byb2plY3RzL2ljb25zL3NyYy9z''@;'; put 'put ''aGFwZXMvc29jaWFsLXNoYXBlcy50cyIpLHJlPW1lKCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdGVjaG5vbG9neS1zaGFwZXMudHMiKSxhZT1tZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3RleHQtZWRpdC1zaGFwZXMudHMiKSxZPW1lKCIuL3Byb2plY3RzL2ljb25zL3Ny''@;'; put 'put ''Yy9zaGFwZXMvdHJhdmVsLXNoYXBlcy50cyIpLFc9W0VlLkNvcmVTaGFwZXMsRS5Db21tZXJjZVNoYXBlcyxVLkVzc2VudGlhbFNoYXBlcyxRLk1lZGlhU2hhcGVzLGouU29jaWFsU2hhcGVzLHJlLlRlY2hub2xvZ3lTaGFwZXMsWS5UcmF2ZWxTaGFwZXMsQi5DaGFydFNoYXBlcyxhZS5UZXh0''@;'; put 'put ''RWRpdFNoYXBlc10sTj17fTtMLkFsbFNoYXBlcz1OO2Zvcih2YXIgdGU9MCxLPVc7dGU8Sy5sZW5ndGg7dGUrKyl7dmFyIEo9S1t0ZV07Zm9yKHZhciBzZSBpbiBKKUouaGFzT3duUHJvcGVydHkoc2UpJiYoTltzZV09SltzZV0pfSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cu''@;'; put 'put ''aGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChOKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jaGFydC1zaGFwZXMudHMiOmZ1bmN0aW9uKEplLEwsbWUpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTCwiX19l''@;'; put 'put ''c01vZHVsZSIse3ZhbHVlOiEwfSksTC5DaGFydFNoYXBlcz1MLkNsclNoYXBlQmVsbEN1cnZlPUwuQ2xyU2hhcGVUaWNrQ2hhcnQ9TC5DbHJTaGFwZVNjYXR0ZXJQbG90PUwuQ2xyU2hhcGVQaWVDaGFydD1MLkNsclNoYXBlTGluZUNoYXJ0PUwuQ2xyU2hhcGVIZWF0TWFwPUwuQ2xyU2hhcGVH''@;'; put 'put ''cmlkQ2hhcnQ9TC5DbHJTaGFwZUN1cnZlQ2hhcnQ9TC5DbHJTaGFwZUNsb3VkQ2hhcnQ9TC5DbHJTaGFwZUJ1YmJsZUNoYXJ0PUwuQ2xyU2hhcGVCb3hQbG90PUwuQ2xyU2hhcGVCYXJDaGFydD1MLkNsclNoYXBlQXhpc0NoYXJ0PXZvaWQgMDt2YXIgQj1tZSgiLi9wcm9qZWN0cy9pY29ucy9z''@;'; put 'put ''cmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiKSxFPW1lKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpO0wuQ2xyU2hhcGVBeGlzQ2hhcnQ9KDAsRS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1IDUgMzIgNSBaIE0gNCAyOSBMIDQg''@;'; put 'put ''NyBMIDMyIDcgTCAzMiAyOSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNIDYuMDA3IDI2LjczMSBMIDI3LjczIDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAyNS4xNyBDIDI4LjMgMjQuOTIgMjguMDMgMjQu''@;'; put 'put ''NzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAyNC43MzYgTCA4LjAxIDExLjAxIEMgOC4wMSAxMC4yMyA3LjE3IDkuNzUgNi41IDEwLjE0IEMgNi4xOSAxMC4zMSA2IDEwLjY1IDYgMTEuMDEgTCA2LjAwNyAyNi43MzEgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44OTYgMzQgNyBaIE0gNi4wMDcgMjYuNzMxIEwg''@;'; put 'put ''MjcuNzMgMjYuNzMgQyAyOC40OSAyNi42NyAyOC45MSAyNS44IDI4LjQ3IDI1LjE3IEMgMjguMyAyNC45MiAyOC4wMyAyNC43NiAyNy43MyAyNC43NCBMIDguMDAxIDI0LjczNiBMIDguMDEgMTEuMDEgQyA4LjAxIDEwLjIzIDcuMTcgOS43NSA2LjUgMTAuMTQgQyA2LjE5IDEwLjMxIDYgMTAu''@;'; put 'put ''NjUgNiAxMS4wMSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBD''@;'; put 'put ''IDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEz''@;'; put 'put ''LjAyNiAzMiAxMy4yMiBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTSA2LjAwNyAyNi43MzEgTCAyNy43MyAyNi43MyBDIDI4LjQ5IDI2LjY3IDI4LjkxIDI1LjggMjguNDcgMjUuMTcgQyAyOC4zIDI0''@;'; put 'put ''LjkyIDI4LjAzIDI0Ljc2IDI3LjczIDI0Ljc0IEwgOC4wMDEgMjQuNzM2IEwgOC4wMSAxMS4wMSBDIDguMDEgMTAuMjMgNy4xNyA5Ljc1IDYuNSAxMC4xNCBDIDYuMTkgMTAuMzEgNiAxMC42NSA2IDExLjAxIEwgNi4wMDcgMjYuNzMxIFoiLz5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzQgMTIuMzQgTCAzNCAyOSBD''@;'; put 'put ''IDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMi41NyA1IEMgMjEuOTY5IDkuMjMzIDI1LjA1IDEzLjEgMjkuMzEgMTMuNDYgTCAzMC4zMiAxMy40OCBDIDMxLjYyNiAxMy40Mjkg''@;'; put 'put ''MzIuODk1IDEzLjAzNiAzNCAxMi4zNCBaIE0gNi4wMDcgMjYuNzMxIEwgMjcuNzMgMjYuNzMgQyAyOC40OSAyNi42NyAyOC45MSAyNS44IDI4LjQ3IDI1LjE3IEMgMjguMyAyNC45MiAyOC4wMyAyNC43NiAyNy43MyAyNC43NCBMIDguMDAxIDI0LjczNiBMIDguMDEgMTEuMDEgQyA4LjAxIDEw''@;'; put 'put ''LjIzIDcuMTcgOS43NSA2LjUgMTAuMTQgQyA2LjE5IDEwLjMxIDYgMTAuNjUgNiAxMS4wMSBaIi8+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwg''@;'; put 'put ''MjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNIDYuMDA3IDI2LjczMSBMIDI3Ljcz''@;'; put 'put ''IDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAyNS4xNyBDIDI4LjMgMjQuOTIgMjguMDMgMjQuNzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAyNC43MzYgTCA4LjAxIDExLjAxIEMgOC4wMSAxMC4yMyA3LjE3IDkuNzUgNi41IDEwLjE0IEMgNi4xOSAxMC4zMSA2IDEwLjY1IDYg''@;'; put 'put ''MTEuMDEgTCA2LjAwNyAyNi43MzEgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQg''@;'; put 'put ''MTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4w''@;'; put 'put ''MDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIg''@;'; put 'put ''MzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMS45NTggNSBMIDE3LjYyNSAxMi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAx''@;'; put 'put ''OS4yNyAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDYuMDA3IDI2LjczMSBMIDI3LjczIDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAyNS4xNyBDIDI4LjMgMjQuOTIgMjguMDMgMjQuNzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAyNC43MzYgTCA4LjAxIDExLjAxIEMgOC4wMSAx''@;'; put 'put ''MC4yMyA3LjE3IDkuNzUgNi41IDEwLjE0IEMgNi4xOSAxMC4zMSA2IDEwLjY1IDYgMTEuMDEgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAx''@;'; put 'put ''MS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDEx''@;'; put 'put ''LjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPicpLEwuQ2xyU2hhcGVCYXJDaGFydD0oMCxFLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiw1SDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIsNVpNNCwyOVY3SDMyVjI5WiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTAgTCAxMyAxMCBMIDEzIDI2IEwgMTEuNCAyNiBM''@;'; put 'put ''IDExLjQgMTEuNiBMIDguNiAxMS42IEwgOC42IDI2IEwgNyAyNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE1IDE5IEwgMjEgMTkgTCAyMSAyNiBMIDE5LjQgMjYgTCAxOS40IDIwLjYgTCAxNi42IDIwLjYgTCAx''@;'; put 'put ''Ni42IDI2IEwgMTUgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMyAxNiBMIDI5IDE2IEwgMjkgMjYgTCAyNy40IDI2IEwgMjcuNCAxNy42IEwgMjQuNiAxNy42IEwgMjQuNiAyNiBMIDIzIDI2IFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEw''@;'; put 'put ''NSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NSAzNCA3IFogTSA3IDI2IEwgMTMgMjYgTCAxMyAxMCBMIDcgMTAgWiBNIDE1IDI2IEwgMjEgMjYgTCAyMSAxOSBMIDE1IDE5IFogTSAyMyAyNiBMIDI5IDI2IEwgMjkgMTYgTCAyMyAx''@;'; put 'put ''NiBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIy''@;'; put 'put ''LjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAy''@;'; put 'put ''NiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gNyAxMCBMIDEzIDEwIEwgMTMgMjYgTCAxMS40IDI2IEwgMTEuNCAxMS42IEwgOC42IDExLjYgTCA4LjYgMjYgTCA3IDI2IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdl''@;'; put 'put ''ZCI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE1IDE5IEwgMjEgMTkgTCAyMSAyNiBMIDE5LjQgMjYgTCAxOS40IDIwLjYgTCAxNi42IDIwLjYgTCAxNi42IDI2IEwgMTUgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIj48L3Bh''@;'; put 'put ''dGg+XG4gIDxwYXRoIGQ9Ik0gMjMgMTYgTCAyOSAxNiBMIDI5IDI2IEwgMjcuNCAyNiBMIDI3LjQgMTcuNiBMIDI0LjYgMTcuNiBMIDI0LjYgMjYgTCAyMyAyNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiPjwvcGF0aD5cbiAg''@;'; put 'put ''PGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEt''@;'; put 'put ''LWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40''@;'; put 'put ''NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI1IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSA3IDI2IEwgMTMgMjYgTCAxMyAxMCBMIDcgMTAgWiBNIDE1IDI2IEwgMjEgMjYgTCAyMSAxOSBMIDE1IDE5IFogTSAyMyAyNiBMIDI5IDI2IEwgMjkgMTYgTCAyMyAxNiBaIj48L3BhdGg+''@;'; put 'put ''XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUu''@;'; put 'put ''MzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDEwIEwgMTMgMTAgTCAxMyAyNiBMIDExLjQgMjYgTCAxMS40IDExLjYgTCA4LjYgMTEuNiBMIDguNiAyNiBMIDcgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTIt''@;'; put 'put ''LWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxNSAxOSBMIDIxIDE5IEwgMjEgMjYgTCAxOS40IDI2IEwgMTkuNCAyMC42IEwgMTYuNiAyMC42IEwgMTYuNiAyNiBMIDE1IDI2IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVy''@;'; put 'put ''dGVkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjMgMTYgTCAyOSAxNiBMIDI5IDI2IEwgMjcuNCAyNiBMIDI3LjQgMTcuNiBMIDI0LjYgMTcuNiBMIDI0LjYgMjYgTCAyMyAyNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCI+''@;'; put 'put ''PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4w''@;'; put 'put ''MDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQg''@;'; put 'put ''QyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMg''@;'; put 'put ''Mi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDE3LjYyNSAxMi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcg''@;'; put 'put ''TCAzNCAxNS4zNTcgWiBNIDcgMjYgTCAxMyAyNiBMIDEzIDEwIEwgNyAxMCBaIE0gMTUgMjYgTCAyMSAyNiBMIDIxIDE5IEwgMTUgMTkgWiBNIDIzIDI2IEwgMjkgMjYgTCAyOSAxNiBMIDIzIDE2IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4''@;'; put 'put ''NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD4nKSxM''@;'; put 'put ''LkNsclNoYXBlQm94UGxvdD0oMCxFLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiw1SDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIsNVpN''@;'; put 'put ''NCwyOVY3SDMyVjI5WiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTIgTCAxNyAxMiBMIDE3IDI2IEwgNyAyNiBMIDcgMTIgWiBNIDguNiAyNC40IEwgMTUuNCAyNC40IEwgMTUuNCAxOC44IEwgOC42IDE4LjggTCA4LjYgMjQuNCBaIE0gMTUuNCAxMy42IEwgOC42IDEzLjYgTCA4LjYgMTcu''@;'; put 'put ''MiBMIDE1LjQgMTcuMiBMIDE1LjQgMTMuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE5IDI0IEwgMjkgMjQgTCAyOSAxMCBMIDE5IDEwIEwgMTkgMjQgWiBNIDIwLjYgMTEuNiBMIDI3LjQgMTEuNiBMIDI3LjQg''@;'; put 'put ''MTcuMiBMIDIwLjYgMTcuMiBMIDIwLjYgMTEuNiBaIE0gMjcuNCAyMi40IEwgMjAuNiAyMi40IEwgMjAuNiAxOC44IEwgMjcuNCAxOC44IEwgMjcuNCAyMi40IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NSAzNCA3''@;'; put 'put ''IFogTSA3IDI2IEwgMTcgMjYgTCAxNyAxMiBMIDcgMTIgWiBNIDkgMTkgTCAxNSAxOSBMIDE1IDI0IEwgOSAyNCBaIE0gMTUgMTcgTCA5IDE3IEwgOSAxNCBMIDE1IDE0IFogTSAxOSAyNCBMIDI5IDI0IEwgMjkgMTAgTCAxOSAxMCBaIE0gMjEgMTIgTCAyNyAxMiBMIDI3IDE3IEwgMjEgMTcg''@;'; put 'put ''WiBNIDI3IDIyIEwgMjEgMjIgTCAyMSAxOSBMIDI3IDE5IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIyIEwgMzIgMjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUy''@;'; put 'put ''NCA2LjY2OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMzMSAyMi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQg''@;'; put 'put ''MTIuMzQgQyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDEyIEwgMTcgMTIgTCAxNyAyNiBMIDcgMjYgTCA3IDEyIFogTSA4LjYgMjQuNCBMIDE1LjQgMjQuNCBMIDE1LjQgMTguOCBMIDguNiAxOC44IEwgOC42IDI0LjQgWiBN''@;'; put 'put ''IDE1LjQgMTMuNiBMIDguNiAxMy42IEwgOC42IDE3LjIgTCAxNS40IDE3LjIgTCAxNS40IDEzLjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTkgMTAgTCAyMy43MjggMTAgQyAyNC4x''@;'; put 'put ''MDUgMTAuNTk2IDI0LjU2NCAxMS4xMzUgMjUuMDkgMTEuNiBMIDIwLjYgMTEuNiBMIDIwLjYgMTcuMiBMIDI3LjQgMTcuMiBMIDI3LjQgMTIuOTg3IEMgMjcuOTA5IDEzLjE3NyAyOC40NDUgMTMuMzEzIDI5IDEzLjM4NyBMIDI5IDI0IEwgMTkgMjQgWiBNIDI3LjQgMTguOCBMIDIwLjYgMTgu''@;'; put 'put ''OCBMIDIwLjYgMjIuNCBMIDI3LjQgMjIuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEg''@;'; put 'put ''QyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIyLjU3IDUgQyAyMi4zMTIgNi44MTcgMjIuNzMyIDguNTY2IDIzLjYzMyAxMCBMIDE5IDEwIEwgMTkgMjQgTCAyOSAyNCBMIDI5IDEzLjQyNyBDIDI5LjEwMyAxMy40NCAyOS4yMDYgMTMuNDUx''@;'; put 'put ''IDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjUgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDcgMjYgTCAxNyAyNiBMIDE3IDEyIEwgNyAxMiBaIE0gOSAxOSBMIDE1IDE5IEwgMTUgMjQgTCA5IDI0IFogTSAxNSAxNyBMIDkgMTcgTCA5IDE0IEwgMTUgMTQgWiBN''@;'; put 'put ''IDIxIDEyIEwgMjUuNDcyIDEyIEMgMjUuOTQgMTIuMzUyIDI2LjQ1MiAxMi42NSAyNyAxMi44ODUgTCAyNyAxNyBMIDIxIDE3IFogTSAyNyAyMiBMIDIxIDIyIEwgMjEgMTkgTCAyNyAxOSBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEg''@;'; put 'put ''MzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDEyIEwg''@;'; put 'put ''MTcgMTIgTCAxNyAyNiBMIDcgMjYgTCA3IDEyIFogTSA4LjYgMjQuNCBMIDE1LjQgMjQuNCBMIDE1LjQgMTguOCBMIDguNiAxOC44IEwgOC42IDI0LjQgWiBNIDE1LjQgMTMuNiBMIDguNiAxMy42IEwgOC42IDE3LjIgTCAxNS40IDE3LjIgTCAxNS40IDEzLjYgWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOSAyNCBMIDE5IDI0IEwgMTkgMTUuMzQ1IEMgMTkuMDIxIDE1LjM0OCAyMC42IDE1LjM2IDIwLjYgMTUuMzYgTCAyMC42IDE3LjIgTCAyNy40IDE3LjIgTCAyNy40IDE1''@;'; put 'put ''LjM2IEwgMjkgMTUuMzU3IEwgMjkgMjQgWiBNIDI3LjQgMTguOCBMIDIwLjYgMTguOCBMIDIwLjYgMjIuNCBMIDI3LjQgMjIuNCBMIDI3LjQgMTguOCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMu''@;'; put 'put ''MDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAy''@;'; put 'put ''Ny4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4x''@;'; put 'put ''MDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDE5LjAyOCAxMCBMIDE5IDEwIEwgMTkgMTAuMDQ4IEwgMTcuNjI1IDEyLjM5NSBDIDE2LjgwNyAxMy41ODMgMTcuNTcxIDE1LjE5NyAxOSAxNS4zNDUgTCAxOSAyNCBMIDI5IDI0IEwgMjkgMTUuMzU3IEwg''@;'; put 'put ''MzQgMTUuMzU3IFogTSA3IDI2IEwgMTcgMjYgTCAxNyAxMiBMIDcgMTIgWiBNIDkgMTkgTCAxNSAxOSBMIDE1IDI0IEwgOSAyNCBaIE0gMTUgMTcgTCA5IDE3IEwgOSAxNCBMIDE1IDE0IFogTSAyNyAxNyBMIDIxIDE3IEwgMjEgMTUuMzU3IEwgMjcgMTUuMzU3IFogTSAyNyAyMiBMIDIxIDIy''@;'; put 'put ''IEwgMjEgMTkgTCAyNyAxOSBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEy''@;'; put 'put ''LjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0''@;'; put 'put ''IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksTC5DbHJTaGFwZUJ1YmJsZUNoYXJ0PSgwLEUuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0i''@;'; put 'put ''TSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkg''@;'; put 'put ''WiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDI5IDE4IEMgMjkgMTkuNjU3IDI3LjY1NyAyMSAyNiAyMSBDIDI0LjM0MyAyMSAyMyAxOS42NTcgMjMgMTggQyAyMyAxNi4zNDMgMjQuMzQzIDE1IDI2IDE1IEMgMjcuNjU3IDE1IDI5IDE2LjM0MyAyOSAxOCBaIE0gMjYgMTYuNiBDIDI1LjIyNyAx''@;'; put 'put ''Ni42IDI0LjYgMTcuMjI3IDI0LjYgMTggQyAyNC42IDE4Ljc3MyAyNS4yMjcgMTkuNCAyNiAxOS40IEMgMjYuNzczIDE5LjQgMjcuNCAxOC43NzMgMjcuNCAxOCBDIDI3LjQgMTcuMjI3IDI2Ljc3MyAxNi42IDI2IDE2LjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTIiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTUgMTQgQyAxNSAxNi4yMDkgMTMuMjA5IDE4IDExIDE4IEMgOC43OTEgMTggNyAxNi4yMDkgNyAxNCBDIDcgMTEuNzkxIDguNzkxIDEwIDExIDEwIEMgMTMuMjA5IDEwIDE1IDExLjc5MSAxNSAxNCBaIE0gMTEgMTEuNiBDIDku''@;'; put 'put ''Njc1IDExLjYgOC42IDEyLjY3NSA4LjYgMTQgQyA4LjYgMTUuMzI1IDkuNjc1IDE2LjQgMTEgMTYuNCBDIDEyLjMyNSAxNi40IDEzLjQgMTUuMzI1IDEzLjQgMTQgQyAxMy40IDEyLjY3NSAxMi4zMjUgMTEuNiAxMSAxMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0zIiByeD0iMyI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDIxIDIzIEMgMjEgMjQuNjU3IDE5LjY1NyAyNiAxOCAyNiBDIDE2LjM0MyAyNiAxNSAyNC42NTcgMTUgMjMgQyAxNSAyMS4zNDMgMTYuMzQzIDIwIDE4IDIwIEMgMTkuNjU3IDIwIDIxIDIxLjM0MyAyMSAyMyBaIE0gMTggMjEu''@;'; put 'put ''NiBDIDE3LjIyNyAyMS42IDE2LjYgMjIuMjI3IDE2LjYgMjMgQyAxNi42IDIzLjc3MyAxNy4yMjcgMjQuNCAxOCAyNC40IEMgMTguNzczIDI0LjQgMTkuNCAyMy43NzMgMTkuNCAyMyBDIDE5LjQgMjIuMjI3IDE4Ljc3MyAyMS42IDE4IDIxLjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTQiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3''@;'; put 'put ''IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NiAzNCA3IFogTSAxMSAxMCBDIDguNzkxIDEwIDcgMTEuNzkxIDcgMTQgQyA3IDE2LjIwOSA4Ljc5MSAxOCAxMSAxOCBDIDEzLjIwOSAxOCAxNSAxNi4yMDkgMTUgMTQgQyAxNSAxMS43OTEgMTMuMjA5IDEw''@;'; put 'put ''IDExIDEwIFogTSAyNiAxNSBDIDI0LjM0MyAxNSAyMyAxNi4zNDMgMjMgMTggQyAyMyAxOS42NTcgMjQuMzQzIDIxIDI2IDIxIEMgMjcuNjU3IDIxIDI5IDE5LjY1NyAyOSAxOCBDIDI5IDE2LjM0MyAyNy42NTcgMTUgMjYgMTUgWiBNIDE4IDIwIEMgMTYuMzQzIDIwIDE1IDIxLjM0MyAxNSAy''@;'; put 'put ''MyBDIDE1IDI0LjY1NyAxNi4zNDMgMjYgMTggMjYgQyAxOS42NTcgMjYgMjEgMjQuNjU3IDIxIDIzIEMgMjEgMjEuMzQzIDE5LjY1NyAyMCAxOCAyMCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIg''@;'; put 'put ''ZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44''@;'; put 'put ''OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjkgMTggQyAyOSAxOS42NTcgMjcuNjU3IDIxIDI2IDIxIEMgMjQuMzQzIDIx''@;'; put 'put ''IDIzIDE5LjY1NyAyMyAxOCBDIDIzIDE2LjM0MyAyNC4zNDMgMTUgMjYgMTUgQyAyNy42NTcgMTUgMjkgMTYuMzQzIDI5IDE4IFogTSAyNiAxNi42IEMgMjUuMjI3IDE2LjYgMjQuNiAxNy4yMjcgMjQuNiAxOCBDIDI0LjYgMTguNzczIDI1LjIyNyAxOS40IDI2IDE5LjQgQyAyNi43NzMgMTku''@;'; put 'put ''NCAyNy40IDE4Ljc3MyAyNy40IDE4IEMgMjcuNCAxNy4yMjcgMjYuNzczIDE2LjYgMjYgMTYuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTUgMTQgQyAxNSAxNi4yMDkg''@;'; put 'put ''MTMuMjA5IDE4IDExIDE4IEMgOC43OTEgMTggNyAxNi4yMDkgNyAxNCBDIDcgMTEuNzkxIDguNzkxIDEwIDExIDEwIEMgMTMuMjA5IDEwIDE1IDExLjc5MSAxNSAxNCBaIE0gMTEgMTEuNiBDIDkuNjc1IDExLjYgOC42IDEyLjY3NSA4LjYgMTQgQyA4LjYgMTUuMzI1IDkuNjc1IDE2LjQgMTEg''@;'; put 'put ''MTYuNCBDIDEyLjMyNSAxNi40IDEzLjQgMTUuMzI1IDEzLjQgMTQgQyAxMy40IDEyLjY3NSAxMi4zMjUgMTEuNiAxMSAxMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgcng9IjMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAy''@;'; put 'put ''MSAyMyBDIDIxIDI0LjY1NyAxOS42NTcgMjYgMTggMjYgQyAxNi4zNDMgMjYgMTUgMjQuNjU3IDE1IDIzIEMgMTUgMjEuMzQzIDE2LjM0MyAyMCAxOCAyMCBDIDE5LjY1NyAyMCAyMSAyMS4zNDMgMjEgMjMgWiBNIDE4IDIxLjYgQyAxNy4yMjcgMjEuNiAxNi42IDIyLjIyNyAxNi42IDIzIEMg''@;'; put 'put ''MTYuNiAyMy43NzMgMTcuMjI3IDI0LjQgMTggMjQuNCBDIDE4Ljc3MyAyNC40IDE5LjQgMjMuNzczIDE5LjQgMjMgQyAxOS40IDIyLjIyNyAxOC43NzMgMjEuNiAxOCAyMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgcng9''@;'; put 'put ''IjMiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUg''@;'; put 'put ''MTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSAxMSAxMCBDIDguNzkxIDEwIDcgMTEuNzkxIDcgMTQgQyA3IDE2LjIwOSA4Ljc5MSAxOCAxMSAxOCBDIDEzLjIwOSAxOCAxNSAxNi4yMDkgMTUgMTQgQyAxNSAx''@;'; put 'put ''MS43OTEgMTMuMjA5IDEwIDExIDEwIFogTSAyNiAxNSBDIDI0LjM0MyAxNSAyMyAxNi4zNDMgMjMgMTggQyAyMyAxOS42NTcgMjQuMzQzIDIxIDI2IDIxIEMgMjcuNjU3IDIxIDI5IDE5LjY1NyAyOSAxOCBDIDI5IDE2LjM0MyAyNy42NTcgMTUgMjYgMTUgWiBNIDE4IDIwIEMgMTYuMzQzIDIw''@;'; put 'put ''IDE1IDIxLjM0MyAxNSAyMyBDIDE1IDI0LjY1NyAxNi4zNDMgMjYgMTggMjYgQyAxOS42NTcgMjYgMjEgMjQuNjU3IDIxIDIzIEMgMjEgMjEuMzQzIDE5LjY1NyAyMCAxOCAyMCBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEg''@;'; put 'put ''TCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOSAxOCBDIDI5IDE5''@;'; put 'put ''LjY1NyAyNy42NTcgMjEgMjYgMjEgQyAyNC4zNDMgMjEgMjMgMTkuNjU3IDIzIDE4IEMgMjMgMTYuMzQzIDI0LjM0MyAxNSAyNiAxNSBDIDI3LjY1NyAxNSAyOSAxNi4zNDMgMjkgMTggWiBNIDI2IDE2LjYgQyAyNS4yMjcgMTYuNiAyNC42IDE3LjIyNyAyNC42IDE4IEMgMjQuNiAxOC43NzMg''@;'; put 'put ''MjUuMjI3IDE5LjQgMjYgMTkuNCBDIDI2Ljc3MyAxOS40IDI3LjQgMTguNzczIDI3LjQgMTggQyAyNy40IDE3LjIyNyAyNi43NzMgMTYuNiAyNiAxNi42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiByeD0iMyI+PC9wYXRo''@;'; put 'put ''PlxuICA8cGF0aCBkPSJNIDE1IDE0IEMgMTUgMTYuMjA5IDEzLjIwOSAxOCAxMSAxOCBDIDguNzkxIDE4IDcgMTYuMjA5IDcgMTQgQyA3IDExLjc5MSA4Ljc5MSAxMCAxMSAxMCBDIDEzLjIwOSAxMCAxNSAxMS43OTEgMTUgMTQgWiBNIDExIDExLjYgQyA5LjY3NSAxMS42IDguNiAxMi42NzUg''@;'; put 'put ''OC42IDE0IEMgOC42IDE1LjMyNSA5LjY3NSAxNi40IDExIDE2LjQgQyAxMi4zMjUgMTYuNCAxMy40IDE1LjMyNSAxMy40IDE0IEMgMTMuNCAxMi42NzUgMTIuMzI1IDExLjYgMTEgMTEuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxl''@;'; put 'put ''cnRlZCIgcng9IjMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMSAyMyBDIDIxIDI0LjY1NyAxOS42NTcgMjYgMTggMjYgQyAxNi4zNDMgMjYgMTUgMjQuNjU3IDE1IDIzIEMgMTUgMjEuMzQzIDE2LjM0MyAyMCAxOCAyMCBDIDE5LjY1NyAyMCAyMSAyMS4zNDMgMjEgMjMgWiBNIDE4IDIxLjYg''@;'; put 'put ''QyAxNy4yMjcgMjEuNiAxNi42IDIyLjIyNyAxNi42IDIzIEMgMTYuNiAyMy43NzMgMTcuMjI3IDI0LjQgMTggMjQuNCBDIDE4Ljc3MyAyNC40IDE5LjQgMjMuNzczIDE5LjQgMjMgQyAxOS40IDIyLjIyNyAxOC43NzMgMjEuNiAxOCAyMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiByeD0iMyI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0''@;'; put 'put ''IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEg''@;'; put 'put ''MzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAz''@;'; put 'put ''NCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMS45NTggNSBMIDE3LjYyNSAxMi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBD''@;'; put 'put ''IDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAyNC41NzkgMTUuMzU3IEMgMjMuNjM5IDE1Ljg2MyAyMyAxNi44NTcgMjMgMTggQyAyMyAxOS42NTcgMjQuMzQzIDIxIDI2IDIxIEMgMjcuNjU3IDIxIDI5IDE5LjY1NyAyOSAxOCBDIDI5IDE2Ljg1NyAyOC4zNjEg''@;'; put 'put ''MTUuODYzIDI3LjQyMSAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDExIDEwIEMgOC43OTEgMTAgNyAxMS43OTEgNyAxNCBDIDcgMTYuMjA5IDguNzkxIDE4IDExIDE4IEMgMTMuMjA5IDE4IDE1IDE2LjIwOSAxNSAxNCBDIDE1IDExLjc5MSAxMy4yMDkgMTAgMTEgMTAgWiBNIDE4IDIwIEMgMTYu''@;'; put 'put ''MzQzIDIwIDE1IDIxLjM0MyAxNSAyMyBDIDE1IDI0LjY1NyAxNi4zNDMgMjYgMTggMjYgQyAxOS42NTcgMjYgMjEgMjQuNjU3IDIxIDIzIEMgMjEgMjEuMzQzIDE5LjY1NyAyMCAxOCAyMCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMu''@;'; put 'put ''MDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksTC5DbHJT''@;'; put 'put ''aGFwZUNsb3VkQ2hhcnQ9KDAsRS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsNUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjdBMiwyLDAsMCwwLDMyLDVaTTQs''@;'; put 'put ''MjlWN0gzMlYyOVoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMC45NzEgMTEuMjQzIEMgMjMuMzE0IDEzLjU4NiAyMi4zNjQgMTguMzM1IDE4Ljg0OSAyMS44NDkgQyAxNS4zMzQgMjUuMzY0IDEwLjU4NiAyNi4zMTQgOC4yNDMgMjMuOTcgQyA1Ljg5OSAyMS42MjcgNi44NDkgMTYuODc4IDEw''@;'; put 'put ''LjM2NCAxMy4zNjQgQyAxMy44NzkgOS44NDkgMTguNjI4IDguOSAyMC45NzEgMTEuMjQzIFogTSAxMS42MzYgMTQuNjM3IEMgOC44MjQgMTcuNDQ5IDcuODc1IDIxLjA1OCA5LjUxNSAyMi42OTggQyAxMS4xNTUgMjQuMzM4IDE0Ljc2NCAyMy4zODkgMTcuNTc2IDIwLjU3NyBDIDIwLjM4OCAx''@;'; put 'put ''Ny43NjUgMjEuMzM4IDE0LjE1NiAxOS42OTcgMTIuNTE2IEMgMTguMDU3IDEwLjg3NiAxNC40NDggMTEuODI1IDExLjYzNiAxNC42MzcgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOCAyMiBDIDI4IDIzLjY1NyAy''@;'; put 'put ''Ni42NTcgMjUgMjUgMjUgQyAyMy4zNDMgMjUgMjIgMjMuNjU3IDIyIDIyIEMgMjIgMjAuMzQzIDIzLjM0MyAxOSAyNSAxOSBDIDI2LjY1NyAxOSAyOCAyMC4zNDMgMjggMjIgWiBNIDI1IDIwLjYgQyAyNC4yMjcgMjAuNiAyMy42IDIxLjIyNyAyMy42IDIyIEMgMjMuNiAyMi43NzMgMjQuMjI3''@;'; put 'put ''IDIzLjQgMjUgMjMuNCBDIDI1Ljc3MyAyMy40IDI2LjQgMjIuNzczIDI2LjQgMjIgQyAyNi40IDIxLjIyNyAyNS43NzMgMjAuNiAyNSAyMC42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSI3Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NSAzNCA3IFog''@;'; put 'put ''TSAxMC4zNjQgMTMuMzY0IEMgNi44NDkgMTYuODc4IDUuODk5IDIxLjYyNyA4LjI0MyAyMy45NyBDIDEwLjU4NiAyNi4zMTQgMTUuMzM0IDI1LjM2NCAxOC44NDkgMjEuODQ5IEMgMjIuMzY0IDE4LjMzNSAyMy4zMTQgMTMuNTg2IDIwLjk3MSAxMS4yNDMgQyAxOC42MjggOC45IDEzLjg3OSA5''@;'; put 'put ''Ljg0OSAxMC4zNjQgMTMuMzY0IFogTSAyNSAxOSBDIDIzLjM0MyAxOSAyMiAyMC4zNDMgMjIgMjIgQyAyMiAyMy42NTcgMjMuMzQzIDI1IDI1IDI1IEMgMjYuNjU3IDI1IDI4IDIzLjY1NyAyOCAyMiBDIDI4IDIwLjM0MyAyNi42NTcgMTkgMjUgMTkgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIy''@;'; put 'put ''LjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiI+PC9wYXRoPlxuICA8''@;'; put 'put ''cGF0aCBkPSJNIDIwLjk3MSAxMS4yNDMgQyAyMy4zMTQgMTMuNTg2IDIyLjM2NCAxOC4zMzUgMTguODQ5IDIxLjg0OSBDIDE1LjMzNCAyNS4zNjQgMTAuNTg2IDI2LjMxNCA4LjI0MyAyMy45NyBDIDUuODk5IDIxLjYyNyA2Ljg0OSAxNi44NzggMTAuMzY0IDEzLjM2NCBDIDEzLjg3OSA5Ljg0''@;'; put 'put ''OSAxOC42MjggOC45IDIwLjk3MSAxMS4yNDMgWiBNIDExLjYzNiAxNC42MzcgQyA4LjgyNCAxNy40NDkgNy44NzUgMjEuMDU4IDkuNTE1IDIyLjY5OCBDIDExLjE1NSAyNC4zMzggMTQuNzY0IDIzLjM4OSAxNy41NzYgMjAuNTc3IEMgMjAuMzg4IDE3Ljc2NSAyMS4zMzggMTQuMTU2IDE5LjY5''@;'; put 'put ''NyAxMi41MTYgQyAxOC4wNTcgMTAuODc2IDE0LjQ0OCAxMS44MjUgMTEuNjM2IDE0LjYzNyBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOCAyMiBDIDI4IDIzLjY1NyAyNi42NTcgMjUg''@;'; put 'put ''MjUgMjUgQyAyMy4zNDMgMjUgMjIgMjMuNjU3IDIyIDIyIEMgMjIgMjAuMzQzIDIzLjM0MyAxOSAyNSAxOSBDIDI2LjY1NyAxOSAyOCAyMC4zNDMgMjggMjIgWiBNIDI1IDIwLjYgQyAyNC4yMjYgMjAuNiAyMy42IDIxLjIyNiAyMy42IDIyIEMgMjMuNiAyMi43NzMgMjQuMjI2IDIzLjQgMjUg''@;'; put 'put ''MjMuNCBDIDI1Ljc3MyAyMy40IDI2LjQgMjIuNzczIDI2LjQgMjIgQyAyNi40IDIxLjIyNiAyNS43NzMgMjAuNiAyNSAyMC42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgeD0iNyI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJN''@;'; put 'put ''IDM0IDEyLjM0IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjIuNTcgNSBDIDIxLjk2OSA5LjIzMyAyNS4wNSAxMy4xIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMu''@;'; put 'put ''NDggQyAzMS42MjUgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDEwLjM2NCAxMy4zNjQgQyA2Ljg0OSAxNi44NzggNS44OTkgMjEuNjI3IDguMjQzIDIzLjk3IEMgMTAuNTg2IDI2LjMxNCAxNS4zMzQgMjUuMzY0IDE4Ljg0OSAyMS44NDkgQyAyMi4zNjQgMTguMzM1IDIzLjMx''@;'; put 'put ''NCAxMy41ODYgMjAuOTcxIDExLjI0MyBDIDE4LjYyOCA4LjkgMTMuODc5IDkuODQ5IDEwLjM2NCAxMy4zNjQgWiBNIDI1IDE5IEMgMjMuMzQzIDE5IDIyIDIwLjM0MyAyMiAyMiBDIDIyIDIzLjY1NyAyMy4zNDMgMjUgMjUgMjUgQyAyNi42NTcgMjUgMjggMjMuNjU3IDI4IDIyIEMgMjggMjAu''@;'; put 'put ''MzQzIDI2LjY1NyAxOSAyNSAxOSBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3''@;'; put 'put ''IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxOC44NDkgMjEuODQ5IEMgMTUuMzM0IDI1LjM2NCAxMC41ODYgMjYuMzE0IDguMjQzIDIzLjk3IEMgNS44OTkgMjEuNjI3IDYuODQ5IDE2Ljg3OCAxMC4zNjQgMTMu''@;'; put 'put ''MzY0IEMgMTMuMDQ5IDEwLjY3OSAxNi40NTMgOS40OTIgMTguOTU2IDEwLjEyNCBMIDE4LjAwOCAxMS43NDEgQyAxNi4xOCAxMS41MTggMTMuNjk1IDEyLjU3OCAxMS42MzYgMTQuNjM3IEMgOC44MjQgMTcuNDQ5IDcuODc1IDIxLjA1OCA5LjUxNSAyMi42OTggQyAxMS4xNTUgMjQuMzM4IDE0''@;'; put 'put ''Ljc2NCAyMy4zODkgMTcuNTc2IDIwLjU3NyBDIDE5LjIyOCAxOC45MjUgMjAuMjM3IDE2Ljk5OCAyMC40NTYgMTUuMzU3IEwgMjIuMjIgMTUuMzU3IEMgMjIuMDA2IDE3LjQ3NyAyMC44MzggMTkuODYxIDE4Ljg0OSAyMS44NDkgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOCAyMiBDIDI4IDIzLjY1NyAyNi42NTcgMjUgMjUgMjUgQyAyMy4zNDMgMjUgMjIgMjMuNjU3IDIyIDIyIEMgMjIgMjAuMzQzIDIzLjM0MyAxOSAyNSAxOSBDIDI2LjY1NyAxOSAyOCAyMC4zNDMgMjgg''@;'; put 'put ''MjIgWiBNIDI1IDIwLjYgQyAyNC4yMjYgMjAuNiAyMy42IDIxLjIyNiAyMy42IDIyIEMgMjMuNiAyMi43NzMgMjQuMjI2IDIzLjQgMjUgMjMuNCBDIDI1Ljc3MyAyMy40IDI2LjQgMjIuNzczIDI2LjQgMjIgQyAyNi40IDIxLjIyNiAyNS43NzMgMjAuNiAyNSAyMC42IFoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiB4PSI3Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBM''@;'; put 'put ''IDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMg''@;'; put 'put ''MzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1h''@;'; put 'put ''bGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMTguOTU2IDEwLjEyNCBDIDE2LjQ1MyA5LjQ5MiAxMy4wNDkgMTAuNjc5IDEw''@;'; put 'put ''LjM2NCAxMy4zNjQgQyA2Ljg0OSAxNi44NzggNS44OTkgMjEuNjI3IDguMjQzIDIzLjk3IEMgMTAuNTg2IDI2LjMxNCAxNS4zMzQgMjUuMzY0IDE4Ljg0OSAyMS44NDkgQyAyMC44MzggMTkuODYxIDIyLjAwNiAxNy40NzcgMjIuMjIgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSAyNSAxOSBDIDIz''@;'; put 'put ''LjM0MyAxOSAyMiAyMC4zNDMgMjIgMjIgQyAyMiAyMy42NTcgMjMuMzQzIDI1IDI1IDI1IEMgMjYuNjU3IDI1IDI4IDIzLjY1NyAyOCAyMiBDIDI4IDIwLjM0MyAyNi42NTcgMTkgMjUgMTkgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEz''@;'; put 'put ''LjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLEwuQ2xy''@;'; put 'put ''U2hhcGVDdXJ2ZUNoYXJ0PSgwLEUuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEg''@;'; put 'put ''QyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTEuOCBDIDYuNTU4IDExLjggNi4yIDExLjQ0MiA2LjIgMTEgQyA2LjIgMTAuNTU4''@;'; put 'put ''IDYuNTU4IDEwLjIgNyAxMC4yIEwgMTMgMTAuMiBDIDE1LjQwNCAxMC4yIDE2LjM2OCAxMS45MDcgMTcuNjUzIDE2LjQ3OCBDIDE3LjY5NSAxNi42MjggMTcuNzQ0IDE2LjgwMyAxNy44MzUgMTcuMTI5IEMgMTcuOTA5IDE3LjM5MiAxNy45NjQgMTcuNTg4IDE4LjAxOSAxNy43OCBDIDE5LjMz''@;'; put 'put ''MiAyMi4zNzUgMjAuNTQ5IDI0LjIgMjMgMjQuMiBMIDI5IDI0LjIgQyAyOS40NDIgMjQuMiAyOS44IDI0LjU1OCAyOS44IDI1IEMgMjkuOCAyNS40NDIgMjkuNDQyIDI1LjggMjkgMjUuOCBMIDIzIDI1LjggQyAxOS41MzUgMjUuOCAxNy45ODEgMjMuNDY5IDE2LjQ4MSAxOC4yMiBDIDE2LjQy''@;'; put 'put ''NSAxOC4wMjUgMTYuMzY5IDE3LjgyNiAxNi4yOTUgMTcuNTYgQyAxNi4yMDMgMTcuMjM0IDE2LjE1NCAxNy4wNiAxNi4xMTMgMTYuOTExIEMgMTUuMDQzIDEzLjEwNSAxNC4zMDUgMTEuOCAxMyAxMS44IEwgNyAxMS44IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQg''@;'; put 'put ''NSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NiAzNCA3IFogTSAxMyAxMiBDIDE0LjgxNyAxMiAxNS42NzQgMTMuNDk5IDE3LjAzOSAxOC4yNzUgQyAxNy44MTMgMjAuOTg0IDE4LjIwMSAyMi4xMTggMTguODgyIDIzLjMwOSBDIDE5Ljg3IDI1LjAzOCAyMS4yMDUgMjYgMjMgMjYgTCAyOSAy''@;'; put 'put ''NiBDIDI5LjU1MiAyNiAzMCAyNS41NTIgMzAgMjUgQyAzMCAyNC40NDggMjkuNTUyIDI0IDI5IDI0IEwgMjMgMjQgQyAyMS4xODMgMjQgMjAuMzI2IDIyLjUwMSAxOC45NjIgMTcuNzI1IEMgMTguMTg4IDE1LjAxNiAxNy43OTkgMTMuODgyIDE3LjExOCAxMi42OTEgQyAxNi4xMyAxMC45NjIg''@;'; put 'put ''MTQuNzk1IDEwIDEzIDEwIEwgNyAxMCBDIDYuNDQ4IDEwIDYgMTAuNDQ4IDYgMTEgQyA2IDExLjU1MiA2LjQ0OCAxMiA3IDEyIFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIy''@;'; put 'put ''IEwgMzIgMjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUyNCA2LjY2OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMzMSAyMi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwg''@;'; put 'put ''MzIgMzEgQyAzMy4xMDQgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQgMTIuMzQgQyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDExLjggQyA2LjU1OCAxMS44IDYuMiAxMS40NDIgNi4yIDExIEMgNi4yIDEwLjU1OCA2LjU1OCAx''@;'; put 'put ''MC4yIDcgMTAuMiBMIDEzIDEwLjIgQyAxNS40MDQgMTAuMiAxNi4zNjggMTEuOTA3IDE3LjY1MyAxNi40NzggQyAxNy42OTUgMTYuNjI4IDE3Ljc0NCAxNi44MDMgMTcuODM1IDE3LjEyOSBDIDE3LjkwOSAxNy4zOTIgMTcuOTY0IDE3LjU4OCAxOC4wMTkgMTcuNzggQyAxOS4zMzIgMjIuMzc1''@;'; put 'put ''IDIwLjU0OSAyNC4yIDIzIDI0LjIgTCAyOSAyNC4yIEMgMjkuNDQyIDI0LjIgMjkuOCAyNC41NTggMjkuOCAyNSBDIDI5LjggMjUuNDQyIDI5LjQ0MiAyNS44IDI5IDI1LjggTCAyMyAyNS44IEMgMTkuNTM1IDI1LjggMTcuOTgxIDIzLjQ2OSAxNi40ODEgMTguMjIgQyAxNi40MjUgMTguMDI1''@;'; put 'put ''IDE2LjM2OSAxNy44MjYgMTYuMjk1IDE3LjU2IEMgMTYuMjAzIDE3LjIzNCAxNi4xNTQgMTcuMDYgMTYuMTEzIDE2LjkxMSBDIDE1LjA0MyAxMy4xMDUgMTQuMzA1IDExLjggMTMgMTEuOCBMIDcgMTEuOCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4y''@;'; put 'put ''MzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSAxMyAxMiBDIDE0LjgxNyAxMiAxNS42NzQgMTMuNDk5IDE3LjAzOSAxOC4yNzUgQyAxNy44MTMgMjAuOTg0IDE4LjIwMSAyMi4xMTggMTguODgy''@;'; put 'put ''IDIzLjMwOSBDIDE5Ljg3IDI1LjAzOCAyMS4yMDUgMjYgMjMgMjYgTCAyOSAyNiBDIDI5LjU1MiAyNiAzMCAyNS41NTIgMzAgMjUgQyAzMCAyNC40NDggMjkuNTUyIDI0IDI5IDI0IEwgMjMgMjQgQyAyMS4xODMgMjQgMjAuMzI2IDIyLjUwMSAxOC45NjIgMTcuNzI1IEMgMTguMTg4IDE1LjAx''@;'; put 'put ''NiAxNy43OTkgMTMuODgyIDE3LjExOCAxMi42OTEgQyAxNi4xMyAxMC45NjIgMTQuNzk1IDEwIDEzIDEwIEwgNyAxMCBDIDYuNDQ4IDEwIDYgMTAuNDQ4IDYgMTEgQyA2IDExLjU1MiA2LjQ0OCAxMiA3IDEyIFoiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1''@;'; put 'put ''IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMjAuNzg2IDcgTCA0IDcgTCA0IDI5IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiI+PC9wYXRoPlxuICA8cGF0aCBk''@;'; put 'put ''PSJNIDcgMTEuOCBDIDYuNTU4IDExLjggNi4yIDExLjQ0MiA2LjIgMTEgQyA2LjIgMTAuNTU4IDYuNTU4IDEwLjIgNyAxMC4yIEwgMTMgMTAuMiBDIDE1LjQwNCAxMC4yIDE2LjM2OCAxMS45MDcgMTcuNjUzIDE2LjQ3OCBDIDE3LjY5NSAxNi42MjggMTcuNzQ0IDE2LjgwMyAxNy44MzUgMTcu''@;'; put 'put ''MTI5IEMgMTcuOTA5IDE3LjM5MiAxNy45NjQgMTcuNTg4IDE4LjAxOSAxNy43OCBDIDE5LjMzMiAyMi4zNzUgMjAuNTQ5IDI0LjIgMjMgMjQuMiBMIDI5IDI0LjIgQyAyOS40NDIgMjQuMiAyOS44IDI0LjU1OCAyOS44IDI1IEMgMjkuOCAyNS40NDIgMjkuNDQyIDI1LjggMjkgMjUuOCBMIDIz''@;'; put 'put ''IDI1LjggQyAxOS41MzUgMjUuOCAxNy45ODEgMjMuNDY5IDE2LjQ4MSAxOC4yMiBDIDE2LjQyNSAxOC4wMjUgMTYuMzY5IDE3LjgyNiAxNi4yOTUgMTcuNTYgQyAxNi4yMDMgMTcuMjM0IDE2LjE1NCAxNy4wNiAxNi4xMTMgMTYuOTExIEMgMTUuMDQzIDEzLjEwNSAxNC4zMDUgMTEuOCAxMyAx''@;'; put 'put ''MS44IEwgNyAxMS44IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0''@;'; put 'put ''IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDEx''@;'; put 'put ''Ljk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIxLjk1OCA1IEwgMTcuNjI1IDEyLjM5NSBDIDE3LjQ3NiAx''@;'; put 'put ''Mi42MTIgMTcuMzc5IDEyLjg0MyAxNy4zMyAxMy4wNzcgQyAxNy4yNjIgMTIuOTQ4IDE3LjE5MiAxMi44MiAxNy4xMTggMTIuNjkxIEMgMTYuMTMgMTAuOTYyIDE0Ljc5NSAxMCAxMyAxMCBMIDcgMTAgQyA2LjQ0OCAxMCA2IDEwLjQ0OCA2IDExIEMgNiAxMS41NTIgNi40NDggMTIgNyAxMiBM''@;'; put 'put ''IDEzIDEyIEMgMTQuODE3IDEyIDE1LjY3NCAxMy40OTkgMTcuMDM5IDE4LjI3NSBDIDE3LjgxMyAyMC45ODQgMTguMjAxIDIyLjExOCAxOC44ODIgMjMuMzA5IEMgMTkuODcgMjUuMDM4IDIxLjIwNSAyNiAyMyAyNiBMIDI5IDI2IEMgMjkuNTUyIDI2IDMwIDI1LjU1MiAzMCAyNSBDIDMwIDI0''@;'; put 'put ''LjQ0OCAyOS41NTIgMjQgMjkgMjQgTCAyMyAyNCBDIDIxLjE4MyAyNCAyMC4zMjYgMjIuNTAxIDE4Ljk2MiAxNy43MjUgQyAxOC42NCAxNi41OTggMTguMzg1IDE1Ljc0NCAxOC4xNDcgMTUuMDQ0IEMgMTguNDA3IDE1LjIxNSAxOC43MTcgMTUuMzI2IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQg''@;'; put 'put ''MTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEu''@;'; put 'put ''MDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4w''@;'; put 'put ''ODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD4nKSxMLkNsclNoYXBlR3JpZENoYXJ0PSgwLEUuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDE3SDRhMiwyLDAsMCwxLTItMlY4QTIsMiwwLDAsMSw0LDZIMTVhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwxNSwxN1pNNCw4djdIMTVWOFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTIiIGQ9Ik0zMiwxN0gyMWEyLDIsMCwwLDEtMi0yVjhhMiwyLDAsMCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDE3Wk0yMSw4djdIMzJWOFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xNSwzMEg0YTIs''@;'; put 'put ''MiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDMwWk00LDIxdjdIMTVWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzIsMzBIMjFhMiwyLDAsMCwxLTItMlYyMWEy''@;'; put 'put ''LDIsMCwwLDEsMi0ySDMyYTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMzIsMzBaTTIxLDIxdjdIMzJWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMTUgMTcgTCA0IDE3IEMgMi44OTUgMTcgMiAxNi4xMDUgMiAxNSBMIDIgOCBD''@;'; put 'put ''IDIgNi44OTUgMi44OTUgNiA0IDYgTCAxNSA2IEMgMTYuMTA1IDYgMTcgNi44OTUgMTcgOCBMIDE3IDE1IEMgMTcgMTYuMTA1IDE2LjEwNSAxNyAxNSAxNyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0gMzIgMTcgTCAyMSAxNyBDIDE5''@;'; put 'put ''Ljg5NSAxNyAxOSAxNi4xMDUgMTkgMTUgTCAxOSA4IEMgMTkgNi44OTUgMTkuODk1IDYgMjEgNiBMIDMyIDYgQyAzMy4xMDUgNiAzNCA2Ljg5NSAzNCA4IEwgMzQgMTUgQyAzNCAxNi4xMDUgMzMuMTA1IDE3IDMyIDE3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMyIgZD0iTSAxNSAzMCBMIDQgMzAgQyAyLjg5NSAzMCAyIDI5LjEwNSAyIDI4IEwgMiAyMSBDIDIgMTkuODk1IDIuODk1IDE5IDQgMTkgTCAxNSAxOSBDIDE2LjEwNSAxOSAxNyAxOS44OTUgMTcgMjEgTCAxNyAyOCBDIDE3IDI5LjEwNSAxNi4xMDUgMzAgMTUgMzAgWiIvPlxu''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiBkPSJNIDMyIDMwIEwgMjEgMzAgQyAxOS44OTUgMzAgMTkgMjkuMTA1IDE5IDI4IEwgMTkgMjEgQyAxOSAxOS44OTUgMTkuODk1IDE5IDIxIDE5IEwgMzIgMTkgQyAzMy4xMDUgMTkgMzQgMTkuODk1IDM0IDIx''@;'; put 'put ''IEwgMzQgMjggQyAzNCAyOS4xMDUgMzMuMTA1IDMwIDMyIDMwIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS1hbGVydGVkIiBkPSJNMTUsMTdINGEyLDIsMCwwLDEtMi0yVjhBMiwyLDAsMCwxLDQsNkgxNWEyLDIsMCwwLDEs''@;'; put 'put ''MiwydjdBMiwyLDAsMCwxLDE1LDE3Wk00LDh2N0gxNVY4WiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLWFsZXJ0ZWQiIGQ9Ik0gMzIgMTcgTCAyMSAxNyBDIDIwLjAxNCAxNyAxOS4xOTUgMTYuMjg3IDE5LjAzIDE1LjM0OCBD''@;'; put 'put ''IDE5LjA0MSAxNS4zNDkgMTkuMDUzIDE1LjM1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzMuOTY4IDE1LjM1NyBDIDMzLjggMTYuMjkyIDMyLjk4MyAxNyAzMiAxNyBaIE0gMTkgOCBDIDE5IDYuODk1IDE5Ljg5NSA2IDIxIDYg''@;'; put 'put ''TCAyMS4zNzIgNiBMIDE5IDEwLjA0OCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtYWxlcnRlZCIgZD0iTTE1LDMwSDRhMiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEsMi0ySDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCww''@;'; put 'put ''LDEsMTUsMzBaTTQsMjF2N0gxNVYyMVoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC1hbGVydGVkIiBkPSJNMzIsMzBIMjFhMiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEsMi0ySDMyYTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCww''@;'; put 'put ''LDEsMzIsMzBaTTIxLDIxdjdIMzJWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjEx''@;'; put 'put ''NCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDEx''@;'; put 'put ''LjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDE1IDE3IEwgNCAxNyBDIDIuODk1IDE3IDIgMTYu''@;'; put 'put ''MTA1IDIgMTUgTCAyIDggQyAyIDYuODk1IDIuODk1IDYgNCA2IEwgMTUgNiBDIDE2LjEwNSA2IDE3IDYuODk1IDE3IDggTCAxNyAxNSBDIDE3IDE2LjEwNSAxNi4xMDUgMTcgMTUgMTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0y''@;'; put 'put ''LS1hbGVydGVkIiBkPSJNIDMyIDE3IEwgMjEgMTcgQyAyMC4wMTQgMTcgMTkuMTk1IDE2LjI4NyAxOS4wMyAxNS4zNDggQyAxOS4wNDEgMTUuMzQ5IDE5LjA1MyAxNS4zNSAxOS4wNjQgMTUuMzUxIEMgMTkuMTM0IDE1LjM1NyAxOS4yMDEgMTUuMzU5IDE5LjI3IDE1LjM1NyBMIDMzLjk2OCAx''@;'; put 'put ''NS4zNTcgQyAzMy44IDE2LjI5MiAzMi45ODMgMTcgMzIgMTcgWiBNIDE5IDggQyAxOSA2Ljg5NSAxOS44OTUgNiAyMSA2IEwgMjEuMzcyIDYgTCAxOSAxMC4wNDggWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiBk''@;'; put 'put ''PSJNIDE1IDMwIEwgNCAzMCBDIDIuODk1IDMwIDIgMjkuMTA1IDIgMjggTCAyIDIxIEMgMiAxOS44OTUgMi44OTUgMTkgNCAxOSBMIDE1IDE5IEMgMTYuMTA1IDE5IDE3IDE5Ljg5NSAxNyAyMSBMIDE3IDI4IEMgMTcgMjkuMTA1IDE2LjEwNSAzMCAxNSAzMCBaIi8+XG4gIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQiIGQ9Ik0gMzIgMzAgTCAyMSAzMCBDIDE5Ljg5NSAzMCAxOSAyOS4xMDUgMTkgMjggTCAxOSAyMSBDIDE5IDE5Ljg5NSAxOS44OTUgMTkgMjEgMTkgTCAzMiAxOSBDIDMzLjEwNSAxOSAzNCAxOS44OTUg''@;'; put 'put ''MzQgMjEgTCAzNCAyOCBDIDM0IDI5LjEwNSAzMy4xMDUgMzAgMzIgMzAgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41''@;'; put 'put ''NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAx''@;'; put 'put ''MS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xNSwxN0g0YTIsMiww''@;'; put 'put ''LDAsMS0yLTJWOEEyLDIsMCwwLDEsNCw2SDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMTdaTTQsOHY3SDE1VjhaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTSAzMiAxNyBMIDIxIDE3IEMg''@;'; put 'put ''MTkuODk1IDE3IDE5IDE2LjEwNSAxOSAxNSBMIDE5IDggQyAxOSA2Ljg5NSAxOS44OTUgNiAyMSA2IEwgMjIuNTkgNiBDIDIyLjU5IDYuMDE5IDIyLjU5IDYuMDM3IDIyLjU5IDYuMDU2IEMgMjIuNTkgNi43MjkgMjIuNjggNy4zODEgMjIuODQ4IDggTCAyMSA4IEwgMjEgMTUgTCAzMiAxNSBM''@;'; put 'put ''IDMyIDEzLjE3NSBDIDMyLjcxNyAxMi45NzIgMzMuMzg5IDEyLjY2NCAzNCAxMi4yNjkgTCAzNCAxNSBDIDM0IDE2LjEwNSAzMy4xMDUgMTcgMzIgMTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0x''@;'; put 'put ''NSwzMEg0YTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDMwWk00LDIxdjdIMTVWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgZD0iTTMy''@;'; put 'put ''LDMwSDIxYTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDMwWk0yMSwyMXY3SDMyVjIxWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAxNSAxNyBMIDQgMTcgQyAyLjg5NSAxNyAyIDE2LjEwNSAyIDE1IEwgMiA4IEMgMiA2Ljg5NSAyLjg5NSA2IDQg''@;'; put 'put ''NiBMIDE1IDYgQyAxNi4xMDUgNiAxNyA2Ljg5NSAxNyA4IEwgMTcgMTUgQyAxNyAxNi4xMDUgMTYuMTA1IDE3IDE1IDE3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0gMzIgMTcgTCAyMSAxNyBDIDE5Ljg5''@;'; put 'put ''NSAxNyAxOSAxNi4xMDUgMTkgMTUgTCAxOSA4IEMgMTkgNi44OTUgMTkuODk1IDYgMjEgNiBMIDIyLjU5IDYgQyAyMi41OSA2LjAxOSAyMi41OSA2LjAzNyAyMi41OSA2LjA1NiBDIDIyLjU5IDEwLjE0MSAyNS45MDEgMTMuNDUyIDI5Ljk4NiAxMy40NTIgQyAzMS40NjYgMTMuNDUyIDMyLjg0''@;'; put 'put ''NCAxMy4wMTggMzQgMTIuMjY5IEwgMzQgMTUgQyAzNCAxNi4xMDUgMzMuMTA1IDE3IDMyIDE3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0gMTUgMzAgTCA0IDMwIEMgMi44OTUgMzAgMiAyOS4xMDUgMiAy''@;'; put 'put ''OCBMIDIgMjEgQyAyIDE5Ljg5NSAyLjg5NSAxOSA0IDE5IEwgMTUgMTkgQyAxNi4xMDUgMTkgMTcgMTkuODk1IDE3IDIxIEwgMTcgMjggQyAxNyAyOS4xMDUgMTYuMTA1IDMwIDE1IDMwIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00''@;'; put 'put ''LS1iYWRnZWQiIGQ9Ik0gMzIgMzAgTCAyMSAzMCBDIDE5Ljg5NSAzMCAxOSAyOS4xMDUgMTkgMjggTCAxOSAyMSBDIDE5IDE5Ljg5NSAxOS44OTUgMTkgMjEgMTkgTCAzMiAxOSBDIDMzLjEwNSAxOSAzNCAxOS44OTUgMzQgMjEgTCAzNCAyOCBDIDM0IDI5LjEwNSAzMy4xMDUgMzAgMzIgMzAg''@;'; put 'put ''WiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksTC5DbHJTaGFwZUhlYXRNYXA9KDAsRS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1IDUg''@;'; put 'put ''MzIgNSBaIE0gNCAyOSBMIDQgNyBMIDMyIDcgTCAzMiAyOSBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gOCAxMCBMIDI4IDEwIEwgMjggMjYgTCA4IDI2IFogTSA5LjYgMjQgTCAxNC4xIDI0IEwgMTQuMSAxOC44IEwgOS42IDE4LjggWiBNIDE0LjEgMTEuNiBMIDkuNiAxMS42IEwgOS42IDE3''@;'; put 'put ''LjIgTCAxNC4xIDE3LjIgWiBNIDI2IDI0IEwgMjYgMTguOCBMIDIxLjkgMTguOCBMIDIxLjkgMjQgWiBNIDI2IDExLjYgTCAyMS45IDExLjYgTCAyMS45IDE3LjIgTCAyNiAxNy4yIFogTSAxNS43IDExLjYgTCAxNS43IDE3LjIgTCAyMC4zIDE3LjIgTCAyMC4zIDExLjYgWiBNIDE1LjcgMjQg''@;'; put 'put ''TCAyMC4zIDI0IEwgMjAuMyAxOC44IEwgMTUuNyAxOC44IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAx''@;'; put 'put ''My4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAz''@;'; put 'put ''MSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gOCAxMCBMIDIzLjcyOCAxMCBDIDI0LjEwNSAxMC41OTYgMjQuNTY0IDExLjEzNSAyNS4wOSAx''@;'; put 'put ''MS42IEwgMjEuOSAxMS42IEwgMjEuOSAxNy4yIEwgMjYgMTcuMiBMIDI2IDEyLjI4NyBDIDI2LjYxMSAxMi42NzkgMjcuMjg0IDEyLjk4MyAyOCAxMy4xODIgTCAyOCAyNiBMIDggMjYgWiBNIDkuNiAyNCBMIDE0LjEgMjQgTCAxNC4xIDE4LjggTCA5LjYgMTguOCBaIE0gMTQuMSAxMS42IEwg''@;'; put 'put ''OS42IDExLjYgTCA5LjYgMTcuMiBMIDE0LjEgMTcuMiBaIE0gMjYgMjQgTCAyNiAxOC44IEwgMjEuOSAxOC44IEwgMjEuOSAyNCBaIE0gMTUuNyAxMS42IEwgMTUuNyAxNy4yIEwgMjAuMyAxNy4yIEwgMjAuMyAxMS42IFogTSAxNS43IDI0IEwgMjAuMyAyNCBMIDIwLjMgMTguOCBMIDE1Ljcg''@;'; put 'put ''MTguOCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAi''@;'; put 'put ''IGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkg''@;'; put 'put ''TCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gOCAxMCBMIDE5LjAyOCAxMCBMIDE4LjA5MSAxMS42IEwgMTUuNyAxMS42IEwg''@;'; put 'put ''MTUuNyAxNy4yIEwgMjAuMyAxNy4yIEwgMjAuMyAxNS4zNTcgTCAyMS45IDE1LjM1NyBMIDIxLjkgMTcuMiBMIDI2IDE3LjIgTCAyNiAxNS4zNTcgTCAyOCAxNS4zNTcgTCAyOCAyNiBMIDggMjYgWiBNIDkuNiAyNCBMIDE0LjEgMjQgTCAxNC4xIDE4LjggTCA5LjYgMTguOCBaIE0gMTQuMSAx''@;'; put 'put ''MS42IEwgOS42IDExLjYgTCA5LjYgMTcuMiBMIDE0LjEgMTcuMiBaIE0gMjYgMjQgTCAyNiAxOC44IEwgMjEuOSAxOC44IEwgMjEuOSAyNCBaIE0gMTUuNyAyNCBMIDIwLjMgMjQgTCAyMC4zIDE4LjggTCAxNS43IDE4LjggWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTIyLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4''@;'; put 'put ''IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQu''@;'; put 'put ''Nzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEg''@;'; put 'put ''MzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44OTYgMzQgNyBaIE0gOCAyNiBMIDI4IDI2IEwgMjggMTAgTCA4IDEwIFogTSAxMCAxOSBMIDE0IDE5IEwgMTQgMjQgTCAxMCAyNCBa''@;'; put 'put ''IE0gMjIgMjQgTCAyMiAxOSBMIDI2IDE5IEwgMjYgMjQgWiBNIDIwIDE5IEwgMjAgMjQgTCAxNiAyNCBMIDE2IDE5IFogTSAyNiAxNyBMIDIyIDE3IEwgMjIgMTIgTCAyNiAxMiBaIE0gMjAgMTIgTCAyMCAxNyBMIDE2IDE3IEwgMTYgMTIgWiBNIDE0IDEyIEwgMTQgMTcgTCAxMCAxNyBMIDEw''@;'; put 'put ''IDEyIFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzQgMTIuMzQgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIg''@;'; put 'put ''NyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMi41NyA1IEMgMjIuMzEyIDYuODE3IDIyLjczMiA4LjU2NiAyMy42MzMgMTAgTCA4IDEwIEwgOCAyNiBMIDI4IDI2IEwgMjggMTMuMjMyIEMgMjguNDIxIDEzLjM0NSAyOC44NTkgMTMuNDIyIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAz''@;'; put 'put ''MS42MjYgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDEwIDE5IEwgMTQgMTkgTCAxNCAyNCBMIDEwIDI0IFogTSAyMiAyNCBMIDIyIDE5IEwgMjYgMTkgTCAyNiAyNCBaIE0gMjAgMTkgTCAyMCAyNCBMIDE2IDI0IEwgMTYgMTkgWiBNIDI2IDE3IEwgMjIgMTcgTCAyMiAxMiBM''@;'; put 'put ''IDI1LjU4NCAxMiBDIDI1LjcxOSAxMi4xIDI1Ljg1OCAxMi4xOTYgMjYgMTIuMjg3IFogTSAyMCAxMiBMIDIwIDE3IEwgMTYgMTcgTCAxNiAxMiBaIE0gMTQgMTIgTCAxNCAxNyBMIDEwIDE3IEwgMTAgMTIgWiI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMjItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMu''@;'; put 'put ''MTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxOS4wMjggMTAgTCA4IDEwIEwgOCAyNiBMIDI4IDI2IEwgMjggMTUuMzU3IEwgMzQgMTUuMzU3IFogTSAxMCAxOSBMIDE0IDE5IEwgMTQg''@;'; put 'put ''MjQgTCAxMCAyNCBaIE0gMjIgMjQgTCAyMiAxOSBMIDI2IDE5IEwgMjYgMjQgWiBNIDIwIDE5IEwgMjAgMjQgTCAxNiAyNCBMIDE2IDE5IFogTSAyNiAxNyBMIDIyIDE3IEwgMjIgMTUuMzU3IEwgMjYgMTUuMzU3IFogTSAyMCAxNyBMIDE2IDE3IEwgMTYgMTIgTCAxNy44NTYgMTIgTCAxNy42''@;'; put 'put ''MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMjAgMTUuMzU3IFogTSAxNCAxMiBMIDE0IDE3IEwgMTAgMTcgTCAxMCAxMiBaIj48L3BhdGg+XG4gIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTIyLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIu''@;'; put 'put ''MTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAw''@;'; put 'put ''LjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLEwuQ2xyU2hhcGVMaW5lQ2hhcnQ9KDAsRS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAy''@;'; put 'put ''OSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1IDUgMzIgNSBaIE0gNCAyOSBMIDQgNyBMIDMyIDcgTCAzMiAyOSBaIj48L3BhdGg+XG4gIDxwb2x5Z29uIHBvaW50cz0iMTUuNjIgMTUu''@;'; put 'put ''MjIyIDkuNjAyIDIzLjk2OCA1LjU1IDIwLjM4NCA2LjYxIDE5LjE4NiA5LjMwOCAyMS41NzIgMTUuNjM0IDEyLjM4IDIyLjM4NCAyMi4zOTUgMjkuMTM4IDEzLjQ3IDMwLjQxNCAxNC40MzYgMjIuMzA4IDI1LjE0NSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIi''@;'; put 'put ''PjwvcG9seWdvbj5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTYgNSAyIDUuODk2IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NiAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5''@;'; put 'put ''IEwgMzQgNyBDIDM0IDUuODk2IDMzLjEwNSA1IDMyIDUgWiBNIDIyLjU2IDI1Ljk0IEwgMTUuNDYgMTUuMzYgTCA5LjEyIDI0LjY0IEwgNC42MiAyMC42NCBMIDYgMTkuMDUgTCA4LjcgMjEuNDQgTCAxNS40NiAxMS41NiBMIDIyLjY1IDIyLjI3IEwgMjkuNjUgMTMgTCAzMS4zNSAxNC4yOCBa''@;'; put 'put ''Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUw''@;'; put 'put ''MSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAz''@;'; put 'put ''MiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwb2x5Z29uIHBvaW50cz0iMTUuNjIgMTUuMjIyIDkuNjAyIDIzLjk2OCA1LjU1IDIwLjM4NCA2LjYxIDE5LjE4NiA5LjMwOCAyMS41NzIgMTUuNjM0IDEyLjM4IDIyLjM4NCAyMi4zOTUgMjkuMTM4IDEzLjQ3IDMwLjQxNCAxNC40MzYgMjIuMzA4IDI1''@;'; put 'put ''LjE0NSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BvbHlnb24+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAi''@;'; put 'put ''IGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzAuMzIgMTMuNDggTCAzMS4zOCAxNC4yOCBMIDIyLjU2IDI1Ljk0IEwgMTUuNDYgMTUuMzYgTCA5LjEyIDI0LjY0IEwgNC42''@;'; put 'put ''MiAyMC42NCBMIDYgMTkuMDUgTCA4LjcgMjEuNDQgTCAxNS40NiAxMS41NiBMIDIyLjY1IDIyLjI3IEwgMjkuMzEgMTMuNDYgQyAyNS4wNSAxMy4xIDIxLjk2OSA5LjIzMyAyMi41NyA1IEwgNCA1IEMgMi44OTYgNSAyIDUuODk2IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NiAzMSA0IDMx''@;'; put 'put ''IEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgMTIuMzQgQyAzMi44OTUgMTMuMDM2IDMxLjYyNiAxMy40MjkgMzAuMzIgMTMuNDggWiI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIu''@;'; put 'put ''ODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTUuNjIgMTUuMjIyIEwgOS42MDIgMjMu''@;'; put 'put ''OTY4IEwgNS41NSAyMC4zODQgTCA2LjYxIDE5LjE4NiBMIDkuMzA4IDIxLjU3MiBMIDE1LjYzNCAxMi4zOCBMIDIyLjM4NCAyMi4zOTUgTCAyNy43MTcgMTUuMzQ4IEwgMjkuNzI0IDE1LjM0OCBMIDIyLjMwOCAyNS4xNDUgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTgg''@;'; put 'put ''MjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43''@;'; put 'put ''ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUg''@;'; put 'put ''MzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5''@;'; put 'put ''LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMjcuNDUyIDE1LjM1NyBMIDIyLjM4IDIyLjA2IEwgMTUuNjMgMTIgTCA5LjI4IDIxLjI4IEwgNi43NSAxOS4wNCBMIDUuNDIgMjAuNTMgTCA5LjY1IDI0LjI4IEwgMTUuNjEgMTUuNTYgTCAyMi4yOCAyNS41IEwgMjkuOTU5IDE1LjM1NyBMIDM0''@;'; put 'put ''IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4w''@;'; put 'put ''OTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0''@;'; put 'put ''IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksTC5DbHJTaGFwZVBpZUNoYXJ0PSgwLEUuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1''@;'; put 'put ''IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiI+PC9wYXRoPlxu''@;'; put 'put ''ICA8cGF0aCBkPSJNIDE3IDI3IEMgMTIuNTgyIDI3IDkgMjMuNDE4IDkgMTkgQyA5IDE0LjU4MiAxMi41ODIgMTEgMTcgMTEgTCAxNyAxOSBMIDI1IDE5IEMgMjUgMjMuNDE4IDIxLjQxOCAyNyAxNyAyNyBaIE0gMjMuMjQ3IDIwLjQgTCAxNS40IDIwLjQgTCAxNS40IDEyLjgwMiBDIDEyLjY0''@;'; put 'put ''IDEzLjUxMyAxMC42MDEgMTYuMDE4IDEwLjYgMTkgQyAxMC42IDIyLjUzNSAxMy40NjUgMjUuNCAxNyAyNS40IEMgMjAuMDU0IDI1LjQwMSAyMi42MDggMjMuMjYxIDIzLjI0NyAyMC40IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIj48L3BhdGg+XG4gIDxw''@;'; put 'put ''YXRoIGQ9Ik0gMTkgOSBDIDIzLjQxOCA5IDI3IDEyLjU4MiAyNyAxNyBMIDE5IDE3IFogTSAyNS4xOTggMTUuNCBDIDI0LjYyIDEzLjE1IDIyLjg0OSAxMS4zOCAyMC42IDEwLjgwMSBMIDIwLjYgMTUuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyI+PC9w''@;'; put 'put ''YXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgQyAzMiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDMyIDUgQyAzMy4xMDUg''@;'; put 'put ''NSAzNCA1Ljg5NiAzNCA3IFogTSAyNSAxOSBMIDE3IDE5IEwgMTcgMTEgQyAxMi41ODIgMTEgOSAxNC41ODIgOSAxOSBDIDkgMjMuNDE4IDEyLjU4MiAyNyAxNyAyNyBDIDIxLjQxOCAyNyAyNSAyMy40MTggMjUgMTkgWiBNIDE5IDE3IEwgMjcgMTcgQyAyNyAxMi41ODIgMjMuNDE4IDkgMTkg''@;'; put 'put ''OSBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIy''@;'; put 'put ''LjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAy''@;'; put 'put ''NiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTcgMjcgQyAxMi41ODIgMjcgOSAyMy40MTggOSAxOSBDIDkgMTQuNTgyIDEyLjU4MiAxMSAxNyAxMSBMIDE3IDE5IEwgMjUgMTkgQyAyNSAyMy40MTggMjEuNDE4IDI3IDE3IDI3IFogTSAyMy4yNDcgMjAuNCBMIDE1LjQgMjAu''@;'; put 'put ''NCBMIDE1LjQgMTIuODAyIEMgMTIuNjQgMTMuNTEzIDEwLjYwMSAxNi4wMTggMTAuNiAxOSBDIDEwLjYgMjIuNTM1IDEzLjQ2NSAyNS40IDE3IDI1LjQgQyAyMC4wNTQgMjUuNDAxIDIyLjYwOCAyMy4yNjEgMjMuMjQ3IDIwLjQgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTkgOSBDIDIzLjQxOCA5IDI3IDEyLjU4MiAyNyAxNyBMIDE5IDE3IFogTSAyNS4xOTggMTUuNCBDIDI0LjYyIDEzLjE1IDIyLjg0OSAxMS4zOCAyMC42IDEwLjgwMSBMIDIwLjYgMTUuNCBaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwv''@;'; put 'put ''Y2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1''@;'; put 'put ''Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSAyNSAxOSBMIDE3IDE5IEwgMTcgMTEgQyAxMi41ODIgMTEgOSAxNC41ODIg''@;'; put 'put ''OSAxOSBDIDkgMjMuNDE4IDEyLjU4MiAyNyAxNyAyNyBDIDIxLjQxOCAyNyAyNSAyMy40MTggMjUgMTkgWiBNIDE5IDE3IEwgMjcgMTcgQyAyNyAxMi41ODIgMjMuNDE4IDkgMTkgOSBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIg''@;'; put 'put ''MzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxNyAyNyBDIDEy''@;'; put 'put ''LjU4MiAyNyA5IDIzLjQxOCA5IDE5IEMgOSAxNC41ODIgMTIuNTgyIDExIDE3IDExIEwgMTcgMTkgTCAyNSAxOSBDIDI1IDIzLjQxOCAyMS40MTggMjcgMTcgMjcgWiBNIDIzLjI0NyAyMC40IEwgMTUuNCAyMC40IEwgMTUuNCAxMi44MDIgQyAxMi42NCAxMy41MTMgMTAuNjAxIDE2LjAxOCAx''@;'; put 'put ''MC42IDE5IEMgMTAuNiAyMi41MzUgMTMuNDY1IDI1LjQgMTcgMjUuNCBDIDIwLjA1NCAyNS40MDEgMjIuNjA4IDIzLjI2MSAyMy4yNDcgMjAuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0aCBk''@;'; put 'put ''PSJNIDI3IDE3IEwgMTkgMTcgTCAxOSAxNS4zNDUgQyAxOS4wMjEgMTUuMzQ4IDE5LjA0MyAxNS4zNDkgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAyNi44MzEgMTUuMzU3IEMgMjYuOTQyIDE1Ljg4NyAyNyAxNi40MzcgMjcgMTcg''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0''@;'; put 'put ''IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAx''@;'; put 'put ''MS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuODA3IDEzLjU4MyAxNy41NzEg''@;'; put 'put ''MTUuMTk3IDE5IDE1LjM0NSBMIDE5IDE3IEwgMjcgMTcgQyAyNyAxNi40MzcgMjYuOTQyIDE1Ljg4NyAyNi44MzEgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSAyNSAxOSBMIDE3IDE5IEwgMTcgMTEgQyAxMi41ODIgMTEgOSAxNC41ODIgOSAxOSBDIDkgMjMuNDE4IDEyLjU4MiAyNyAxNyAyNyBD''@;'; put 'put ''IDIxLjQxOCAyNyAyNSAyMy40MTggMjUgMTkgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4''@;'; put 'put ''IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQu''@;'; put 'put ''Nzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLEwuQ2xyU2hhcGVTY2F0dGVyUGxvdD0oMCxFLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEiIGQ9Ik0gMzIgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDUgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNSAzNCAyOSBMIDM0IDcgQyAzNCA1Ljg5NSAzMy4xMDUgNSAzMiA1IFogTSA0IDI5IEwgNCA3IEwgMzIg''@;'; put 'put ''NyBMIDMyIDI5IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0gOS4xMDEgMTUuOCBDIDkuNDEzIDE2LjExMSA5LjkxOSAxNi4xMTEgMTAuMjMxIDE1LjggTCAxMS4zOTEgMTQuNjQgTCAxMi41NTEgMTUuOCBDIDEyLjk2NCAxNi4y''@;'; put 'put ''NTYgMTMuNzE3IDE2LjA5NCAxMy45MDUgMTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5MSAxMi4zOCBDIDE0LjE0NyAxMS45NjYgMTMuOTg1IDExLjIxNCAxMy4zOTkgMTEuMDI1IEMgMTMuMSAxMC45MjkgMTIu''@;'; put 'put ''NzcyIDExLjAxNyAxMi41NjEgMTEuMjUgTCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4wNjUgMTAuOTI2IDguODc3IDExLjUxMiBDIDguNzggMTEuODExIDguODY4IDEyLjEzOSA5LjEwMSAxMi4zNSBMIDEwLjI2MSAxMy41NCBMIDkuMTAxIDE0LjY3IEMg''@;'; put 'put ''OC43ODkgMTQuOTgyIDguNzg5IDE1LjQ4NyA5LjEwMSAxNS44IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0gMTUuMTc2IDI1LjUzNiBDIDE1LjQ4OCAyNS44NDcgMTUuOTk0IDI1Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcuNDY2''@;'; put 'put ''IDI0LjM3NiBMIDE4LjYyNiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44MyAxOS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42MTcgMTkuNzU2IDI0LjQwNiBMIDE4LjYwNiAyMy4yNzYgTCAxOS43NjYgMjIuMTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4wNiAy''@;'; put 'put ''MC45NSAxOS40NzQgMjAuNzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4LjYzNiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1NiBDIDE1Ljg5MiAyMC40OTkgMTUuMTQgMjAuNjYyIDE0Ljk1MiAyMS4yNDggQyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAyMS44''@;'; put 'put ''NzUgMTUuMTc2IDIyLjA4NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMgMTQuODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTSAyMi45MTIgMjAu''@;'; put 'put ''MzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAuNjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcuNzI1IDE5LjQyNCAyNy40OTIgMTkuMjEz''@;'; put 'put ''IEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYgMjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMw''@;'; put 'put ''NiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEzIEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAuMzQzIFoiLz5cbiAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzNCA3IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMzIgNSBDIDMzLjEwNSA1IDM0IDUuODk2''@;'; put 'put ''IDM0IDcgWiBNIDkuMTAxIDE1LjggQyA5LjQxMyAxNi4xMTEgOS45MTkgMTYuMTExIDEwLjIzMSAxNS44IEwgMTEuMzkxIDE0LjY0IEwgMTIuNTUxIDE1LjggQyAxMi45NjQgMTYuMjU2IDEzLjcxNyAxNi4wOTQgMTMuOTA1IDE1LjUwNyBDIDE0LjAwMiAxNS4yMDggMTMuOTE0IDE0Ljg4MSAx''@;'; put 'put ''My42ODEgMTQuNjcgTCAxMi41MzEgMTMuNTQgTCAxMy42OTEgMTIuMzggQyAxNC4xNDcgMTEuOTY2IDEzLjk4NSAxMS4yMTQgMTMuMzk5IDExLjAyNSBDIDEzLjEgMTAuOTI5IDEyLjc3MiAxMS4wMTcgMTIuNTYxIDExLjI1IEwgMTEuNDAxIDEyLjQxIEwgMTAuMjMxIDExLjIyIEMgOS44MTcg''@;'; put 'put ''MTAuNzYzIDkuMDY1IDEwLjkyNiA4Ljg3NyAxMS41MTIgQyA4Ljc4IDExLjgxMSA4Ljg2OCAxMi4xMzkgOS4xMDEgMTIuMzUgTCAxMC4yNjEgMTMuNTQgTCA5LjEwMSAxNC42NyBDIDguNzg5IDE0Ljk4MiA4Ljc4OSAxNS40ODcgOS4xMDEgMTUuOCBaIE0gMTUuMTc2IDI1LjUzNiBDIDE1LjQ4''@;'; put 'put ''OCAyNS44NDcgMTUuOTk0IDI1Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcuNDY2IDI0LjM3NiBMIDE4LjYyNiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44MyAxOS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42MTcgMTkuNzU2IDI0LjQwNiBMIDE4LjYwNiAy''@;'; put 'put ''My4yNzYgTCAxOS43NjYgMjIuMTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4wNiAyMC45NSAxOS40NzQgMjAuNzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4LjYzNiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1NiBDIDE1Ljg5MiAyMC40OTkgMTUuMTQgMjAu''@;'; put 'put ''NjYyIDE0Ljk1MiAyMS4yNDggQyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAyMS44NzUgMTUuMTc2IDIyLjA4NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMgMTQuODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYgWiBNIDIyLjkxMiAyMC4zNDMgQyAyMy4yMjQg''@;'; put 'put ''MjAuNjU0IDIzLjczIDIwLjY1NCAyNC4wNDIgMjAuMzQzIEwgMjUuMjAyIDE5LjE4MyBMIDI2LjM2MiAyMC4zNDMgQyAyNi43NzUgMjAuNzk5IDI3LjUyOCAyMC42MzcgMjcuNzE2IDIwLjA1IEMgMjcuODEzIDE5Ljc1MSAyNy43MjUgMTkuNDI0IDI3LjQ5MiAxOS4yMTMgTCAyNi4zNDIgMTgu''@;'; put 'put ''MDgzIEwgMjcuNTAyIDE2LjkyMyBDIDI3Ljk1OCAxNi41MDkgMjcuNzk2IDE1Ljc1NyAyNy4yMSAxNS41NjggQyAyNi45MTEgMTUuNDcyIDI2LjU4MyAxNS41NiAyNi4zNzIgMTUuNzkzIEwgMjUuMjEyIDE2Ljk1MyBMIDI0LjA0MiAxNS43NjMgQyAyMy42MjggMTUuMzA2IDIyLjg3NiAxNS40''@;'; put 'put ''NjkgMjIuNjg4IDE2LjA1NSBDIDIyLjU5MSAxNi4zNTQgMjIuNjc5IDE2LjY4MiAyMi45MTIgMTYuODkzIEwgMjQuMDcyIDE4LjA4MyBMIDIyLjkxMiAxOS4yMTMgQyAyMi42IDE5LjUyNSAyMi42IDIwLjAzIDIyLjkxMiAyMC4zNDMgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUgQyAy''@;'; put 'put ''Ljg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNCAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0gOS4xMDEgMTUuOCBDIDkuNDEzIDE2LjExMSA5LjkxOSAxNi4xMTEgMTAuMjMxIDE1LjggTCAxMS4zOTEgMTQuNjQgTCAxMi41NTEgMTUuOCBDIDEyLjk2NCAxNi4yNTYgMTMuNzE3IDE2LjA5NCAxMy45MDUg''@;'; put 'put ''MTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5MSAxMi4zOCBDIDE0LjE0NyAxMS45NjYgMTMuOTg1IDExLjIxNCAxMy4zOTkgMTEuMDI1IEMgMTMuMSAxMC45MjkgMTIuNzcyIDExLjAxNyAxMi41NjEgMTEuMjUg''@;'; put 'put ''TCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4wNjUgMTAuOTI2IDguODc3IDExLjUxMiBDIDguNzggMTEuODExIDguODY4IDEyLjEzOSA5LjEwMSAxMi4zNSBMIDEwLjI2MSAxMy41NCBMIDkuMTAxIDE0LjY3IEMgOC43ODkgMTQuOTgyIDguNzg5IDE1LjQ4''@;'; put 'put ''NyA5LjEwMSAxNS44IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNIDE1LjE3NiAyNS41MzYgQyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYuMzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4zNzYg''@;'; put 'put ''TCAxOC42MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTkuOTggMjUuMjQzIEMgMjAuMDc3IDI0Ljk0NCAxOS45ODkgMjQuNjE3IDE5Ljc1NiAyNC40MDYgTCAxOC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIwLjIyMiAyMS43MDIgMjAuMDYgMjAuOTUgMTku''@;'; put 'put ''NDc0IDIwLjc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYgMjAuOTg2IEwgMTcuNDc2IDIyLjE0NiBMIDE2LjMwNiAyMC45NTYgQyAxNS44OTIgMjAuNDk5IDE1LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1LjE3''@;'; put 'put ''NiAyMi4wODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2NCAyNC43MTggMTQuODY0IDI1LjIyMyAxNS4xNzYgMjUuNTM2IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiBkPSJNIDIy''@;'; put 'put ''LjkxMiAyMC4zNDMgQyAyMy4yMjQgMjAuNjU0IDIzLjczIDIwLjY1NCAyNC4wNDIgMjAuMzQzIEwgMjUuMjAyIDE5LjE4MyBMIDI2LjM2MiAyMC4zNDMgQyAyNi43NzUgMjAuNzk5IDI3LjUyOCAyMC42MzcgMjcuNzE2IDIwLjA1IEMgMjcuODEzIDE5Ljc1MSAyNy43MjUgMTkuNDI0IDI3LjQ5''@;'; put 'put ''MiAxOS4yMTMgTCAyNi4zNDIgMTguMDgzIEwgMjcuNTAyIDE2LjkyMyBDIDI3Ljk1OCAxNi41MDkgMjcuNzk2IDE1Ljc1NyAyNy4yMSAxNS41NjggQyAyNi45MTEgMTUuNDcyIDI2LjU4MyAxNS41NiAyNi4zNzIgMTUuNzkzIEwgMjUuMjEyIDE2Ljk1MyBMIDI0LjA0MiAxNS43NjMgQyAyMy42''@;'; put 'put ''MjggMTUuMzA2IDIyLjg3NiAxNS40NjkgMjIuNjg4IDE2LjA1NSBDIDIyLjU5MSAxNi4zNTQgMjIuNjc5IDE2LjY4MiAyMi45MTIgMTYuODkzIEwgMjQuMDcyIDE4LjA4MyBMIDIyLjkxMiAxOS4yMTMgQyAyMi42IDE5LjUyNSAyMi42IDIwLjAzIDIyLjkxMiAyMC4zNDMgWiIvPlxuICA8Y2ly''@;'; put 'put ''Y2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0i''@;'; put 'put ''TSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEz''@;'; put 'put ''LjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSA5LjEwMSAxNS44IEMgOS40MTMgMTYuMTExIDkuOTE5IDE2LjExMSAxMC4yMzEgMTUuOCBMIDExLjM5MSAxNC42NCBMIDEyLjU1MSAxNS44IEMgMTIuOTY0IDE2LjI1NiAxMy43MTcgMTYuMDk0IDEzLjkwNSAx''@;'; put 'put ''NS41MDcgQyAxNC4wMDIgMTUuMjA4IDEzLjkxNCAxNC44ODEgMTMuNjgxIDE0LjY3IEwgMTIuNTMxIDEzLjU0IEwgMTMuNjkxIDEyLjM4IEMgMTQuMTQ3IDExLjk2NiAxMy45ODUgMTEuMjE0IDEzLjM5OSAxMS4wMjUgQyAxMy4xIDEwLjkyOSAxMi43NzIgMTEuMDE3IDEyLjU2MSAxMS4yNSBM''@;'; put 'put ''IDExLjQwMSAxMi40MSBMIDEwLjIzMSAxMS4yMiBDIDkuODE3IDEwLjc2MyA5LjA2NSAxMC45MjYgOC44NzcgMTEuNTEyIEMgOC43OCAxMS44MTEgOC44NjggMTIuMTM5IDkuMTAxIDEyLjM1IEwgMTAuMjYxIDEzLjU0IEwgOS4xMDEgMTQuNjcgQyA4Ljc4OSAxNC45ODIgOC43ODkgMTUuNDg3''@;'; put 'put ''IDkuMTAxIDE1LjggWiBNIDE1LjE3NiAyNS41MzYgQyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYuMzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4zNzYgTCAxOC42MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTkuOTggMjUuMjQzIEMgMjAuMDc3IDI0Ljk0NCAx''@;'; put 'put ''OS45ODkgMjQuNjE3IDE5Ljc1NiAyNC40MDYgTCAxOC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIwLjIyMiAyMS43MDIgMjAuMDYgMjAuOTUgMTkuNDc0IDIwLjc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYgMjAuOTg2IEwgMTcuNDc2IDIyLjE0NiBMIDE2''@;'; put 'put ''LjMwNiAyMC45NTYgQyAxNS44OTIgMjAuNDk5IDE1LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1LjE3NiAyMi4wODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2NCAyNC43MTggMTQuODY0IDI1LjIyMyAxNS4x''@;'; put 'put ''NzYgMjUuNTM2IFogTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAuNjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcu''@;'; put 'put ''NzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYgMjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4w''@;'; put 'put ''NDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEzIEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAu''@;'; put 'put ''MzQzIFoiLz5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUu''@;'; put 'put ''MzU3IEwgMzQgMTUuMzU3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0gOS4xMDEgMTUuOCBDIDkuNDEzIDE2LjExMSA5LjkxOSAxNi4xMTEgMTAuMjMxIDE1LjggTCAxMS4zOTEgMTQuNjQgTCAx''@;'; put 'put ''Mi41NTEgMTUuOCBDIDEyLjk2NCAxNi4yNTYgMTMuNzE3IDE2LjA5NCAxMy45MDUgMTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5MSAxMi4zOCBDIDE0LjE0NyAxMS45NjYgMTMuOTg1IDExLjIxNCAxMy4zOTkg''@;'; put 'put ''MTEuMDI1IEMgMTMuMSAxMC45MjkgMTIuNzcyIDExLjAxNyAxMi41NjEgMTEuMjUgTCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4wNjUgMTAuOTI2IDguODc3IDExLjUxMiBDIDguNzggMTEuODExIDguODY4IDEyLjEzOSA5LjEwMSAxMi4zNSBMIDEwLjI2''@;'; put 'put ''MSAxMy41NCBMIDkuMTAxIDE0LjY3IEMgOC43ODkgMTQuOTgyIDguNzg5IDE1LjQ4NyA5LjEwMSAxNS44IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0gMTUuMTc2IDI1LjUzNiBDIDE1LjQ4OCAy''@;'; put 'put ''NS44NDcgMTUuOTk0IDI1Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcuNDY2IDI0LjM3NiBMIDE4LjYyNiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44MyAxOS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42MTcgMTkuNzU2IDI0LjQwNiBMIDE4LjYwNiAyMy4y''@;'; put 'put ''NzYgTCAxOS43NjYgMjIuMTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4wNiAyMC45NSAxOS40NzQgMjAuNzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4LjYzNiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1NiBDIDE1Ljg5MiAyMC40OTkgMTUuMTQgMjAuNjYy''@;'; put 'put ''IDE0Ljk1MiAyMS4yNDggQyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAyMS44NzUgMTUuMTc2IDIyLjA4NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMgMTQuODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAu''@;'; put 'put ''NjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcuNzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYg''@;'; put 'put ''MjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEz''@;'; put 'put ''IEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAuMzQzIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIw''@;'; put 'put ''LjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0Ljgx''@;'; put 'put ''IDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAz''@;'; put 'put ''MC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUu''@;'; put 'put ''MzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSA5LjEwMSAxNS44IEMgOS40MTMgMTYuMTExIDkuOTE5IDE2LjExMSAxMC4yMzEgMTUuOCBMIDExLjM5MSAxNC42NCBMIDEyLjU1MSAxNS44IEMgMTIuOTY0IDE2LjI1NiAxMy43MTcgMTYuMDk0IDEzLjkwNSAx''@;'; put 'put ''NS41MDcgQyAxNC4wMDIgMTUuMjA4IDEzLjkxNCAxNC44ODEgMTMuNjgxIDE0LjY3IEwgMTIuNTMxIDEzLjU0IEwgMTMuNjkxIDEyLjM4IEMgMTQuMTQ3IDExLjk2NiAxMy45ODUgMTEuMjE0IDEzLjM5OSAxMS4wMjUgQyAxMy4xIDEwLjkyOSAxMi43NzIgMTEuMDE3IDEyLjU2MSAxMS4yNSBM''@;'; put 'put ''IDExLjQwMSAxMi40MSBMIDEwLjIzMSAxMS4yMiBDIDkuODE3IDEwLjc2MyA5LjA2NSAxMC45MjYgOC44NzcgMTEuNTEyIEMgOC43OCAxMS44MTEgOC44NjggMTIuMTM5IDkuMTAxIDEyLjM1IEwgMTAuMjYxIDEzLjU0IEwgOS4xMDEgMTQuNjcgQyA4Ljc4OSAxNC45ODIgOC43ODkgMTUuNDg3''@;'; put 'put ''IDkuMTAxIDE1LjggWiBNIDE1LjE3NiAyNS41MzYgQyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYuMzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4zNzYgTCAxOC42MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTkuOTggMjUuMjQzIEMgMjAuMDc3IDI0Ljk0NCAx''@;'; put 'put ''OS45ODkgMjQuNjE3IDE5Ljc1NiAyNC40MDYgTCAxOC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIwLjIyMiAyMS43MDIgMjAuMDYgMjAuOTUgMTkuNDc0IDIwLjc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYgMjAuOTg2IEwgMTcuNDc2IDIyLjE0NiBMIDE2''@;'; put 'put ''LjMwNiAyMC45NTYgQyAxNS44OTIgMjAuNDk5IDE1LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1LjE3NiAyMi4wODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2NCAyNC43MTggMTQuODY0IDI1LjIyMyAxNS4x''@;'; put 'put ''NzYgMjUuNTM2IFogTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAuNjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcu''@;'; put 'put ''NzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYgMjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4w''@;'; put 'put ''NDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEzIEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAu''@;'; put 'put ''MzQzIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEg''@;'; put 'put ''QyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAy''@;'; put 'put ''OC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz5cbiAgPHJlY3Qgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiBmaWxsLW9wYWNpdHk9IjAiLz4nKSxMLkNsclNoYXBlVGlja0NoYXJ0PSgwLEUuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQg''@;'; put 'put ''MjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTSA2IDI1IEwgOCAyNSBMIDggMjIgTCAxMCAyMiBMIDEwIDI1IEwgMTMgMjUgTCAxMyAyMiBMIDE1IDIyIEwgMTUgMjUgTCAxOCAyNSBMIDE4''@;'; put 'put ''IDIyIEwgMjAgMjIgTCAyMCAyNSBMIDIzIDI1IEwgMjMgMjIgTCAyNSAyMiBMIDI1IDI1IEwgMjcuNzIzIDI1IEMgMjguMDIzIDI1LjAyIDI4LjI5MyAyNS4xOCAyOC40NjMgMjUuNDMgQyAyOC45MDMgMjYuMDYgMjguNDgzIDI2LjkzIDI3LjcyMyAyNi45OSBMIDYgMjYuOTkxIFoiLz5cbiAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzNCA3IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMzIgNSBDIDMzLjEw''@;'; put 'put ''NSA1IDM0IDUuODk2IDM0IDcgWiBNIDYgMjYuOTkxIEwgMjcuNzIzIDI2Ljk5IEMgMjguNDgzIDI2LjkzIDI4LjkwMyAyNi4wNiAyOC40NjMgMjUuNDMgQyAyOC4yOTMgMjUuMTggMjguMDIzIDI1LjAyIDI3LjcyMyAyNSBMIDI1IDI1IEwgMjUgMjIgTCAyMyAyMiBMIDIzIDI1IEwgMjAgMjUg''@;'; put 'put ''TCAyMCAyMiBMIDE4IDIyIEwgMTggMjUgTCAxNSAyNSBMIDE1IDIyIEwgMTMgMjIgTCAxMyAyNSBMIDEwIDI1IEwgMTAgMjIgTCA4IDIyIEwgOCAyNSBMIDYgMjUgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQi''@;'; put 'put ''IGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIu''@;'; put 'put ''ODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNCAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRn''@;'; put 'put ''ZWQiIGQ9Ik0gNiAyNSBMIDggMjUgTCA4IDIyIEwgMTAgMjIgTCAxMCAyNSBMIDEzIDI1IEwgMTMgMjIgTCAxNSAyMiBMIDE1IDI1IEwgMTggMjUgTCAxOCAyMiBMIDIwIDIyIEwgMjAgMjUgTCAyMyAyNSBMIDIzIDIyIEwgMjUgMjIgTCAyNSAyNSBMIDI3LjcyMyAyNSBDIDI4LjAyMyAyNS4w''@;'; put 'put ''MiAyOC4yOTMgMjUuMTggMjguNDYzIDI1LjQzIEMgMjguOTAzIDI2LjA2IDI4LjQ4MyAyNi45MyAyNy43MjMgMjYuOTkgTCA2IDI2Ljk5MSBaIi8+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdl''@;'; put 'put ''IiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDM0IDEyLjM0IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1''@;'; put 'put ''IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjIuNTcgNSBDIDIxLjk2OSA5LjIzMyAyNS4wNSAxMy4xIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjYgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDYgMjYuOTkxIEwgMjcuNzIzIDI2Ljk5IEMg''@;'; put 'put ''MjguNDgzIDI2LjkzIDI4LjkwMyAyNi4wNiAyOC40NjMgMjUuNDMgQyAyOC4yOTMgMjUuMTggMjguMDIzIDI1LjAyIDI3LjcyMyAyNSBMIDI1IDI1IEwgMjUgMjIgTCAyMyAyMiBMIDIzIDI1IEwgMjAgMjUgTCAyMCAyMiBMIDE4IDIyIEwgMTggMjUgTCAxNSAyNSBMIDE1IDIyIEwgMTMgMjIg''@;'; put 'put ''TCAxMyAyNSBMIDEwIDI1IEwgMTAgMjIgTCA4IDIyIEwgOCAyNSBMIDYgMjUgWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1''@;'; put 'put ''IEwgMjAuNzg2IDcgTCA0IDcgTCA0IDI5IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTSA2IDI1IEwgOCAyNSBMIDggMjIgTCAxMCAyMiBM''@;'; put 'put ''IDEwIDI1IEwgMTMgMjUgTCAxMyAyMiBMIDE1IDIyIEwgMTUgMjUgTCAxOCAyNSBMIDE4IDIyIEwgMjAgMjIgTCAyMCAyNSBMIDIzIDI1IEwgMjMgMjIgTCAyNSAyMiBMIDI1IDI1IEwgMjcuNzIzIDI1IEMgMjguMDIzIDI1LjAyIDI4LjI5MyAyNS4xOCAyOC40NjMgMjUuNDMgQyAyOC45MDMg''@;'; put 'put ''MjYuMDYgMjguNDgzIDI2LjkzIDI3LjcyMyAyNi45OSBMIDYgMjYuOTkxIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBD''@;'; put 'put ''IDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0''@;'; put 'put ''LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAz''@;'; put 'put ''NCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQg''@;'; put 'put ''MTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSA2IDI2Ljk5MSBMIDI3LjcyMyAyNi45OSBDIDI4LjQ4MyAyNi45MyAyOC45MDMgMjYuMDYgMjguNDYzIDI1LjQzIEMgMjguMjkzIDI1LjE4IDI4LjAyMyAyNS4wMiAyNy43MjMgMjUgTCAyNSAyNSBMIDI1''@;'; put 'put ''IDIyIEwgMjMgMjIgTCAyMyAyNSBMIDIwIDI1IEwgMjAgMjIgTCAxOCAyMiBMIDE4IDI1IEwgMTUgMjUgTCAxNSAyMiBMIDEzIDIyIEwgMTMgMjUgTCAxMCAyNSBMIDEwIDIyIEwgOCAyMiBMIDggMjUgTCA2IDI1IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMz''@;'; put 'put ''LjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz4nKSxMLkNs''@;'; put 'put ''clNoYXBlQmVsbEN1cnZlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywyOUgzQTEsMSwwLDEsMSwzLDI3SDMzQTEsMSwwLDEsMSwzMywyOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMywyNWgtLjYyYTguMTEsOC4xMSww''@;'; put 'put ''LDAsMS04LTYuNjdDMjMuNjIsMTQuNDQsMjEuODksNy45NCwxOCw3Ljk0cy01LjY5LDYuNTEtNi4zOCwxMC4zOWE4LjExLDguMTEsMCwwLDEtOCw2LjY1SDNhMSwxLDAsMSwxLDAtMmguNkE2LjExLDYuMTEsMCwwLDAsOS42LDE4YzEuNDEtNy44OCw0LjMtMTIsOC4zNS0xMnM2LjkzLDQuMTYs''@;'; put 'put ''OC4zMywxMmE2LjExLDYuMTEsMCwwLDAsNiw1SDMzYTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxMLkNoYXJ0U2hhcGVzPXsiYXhpcy1jaGFydCI6TC5DbHJTaGFwZUF4aXNDaGFydCwiYmFyLWNoYXJ0IjpMLkNsclNoYXBl''@;'; put 'put ''QmFyQ2hhcnQsImJ1YmJsZS1jaGFydCI6TC5DbHJTaGFwZUJ1YmJsZUNoYXJ0LCJjbG91ZC1jaGFydCI6TC5DbHJTaGFwZUNsb3VkQ2hhcnQsImN1cnZlLWNoYXJ0IjpMLkNsclNoYXBlQ3VydmVDaGFydCwiZ3JpZC1jaGFydCI6TC5DbHJTaGFwZUdyaWRDaGFydCwibGluZS1jaGFydCI6TC5D''@;'; put 'put ''bHJTaGFwZUxpbmVDaGFydCwicGllLWNoYXJ0IjpMLkNsclNoYXBlUGllQ2hhcnQsInRpY2stY2hhcnQiOkwuQ2xyU2hhcGVUaWNrQ2hhcnQsInNjYXR0ZXItcGxvdCI6TC5DbHJTaGFwZVNjYXR0ZXJQbG90LCJib3gtcGxvdCI6TC5DbHJTaGFwZUJveFBsb3QsImhlYXQtbWFwIjpMLkNsclNo''@;'; put 'put ''YXBlSGVhdE1hcCwiYmVsbC1jdXJ2ZSI6TC5DbHJTaGFwZUJlbGxDdXJ2ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuQ2hhcnRTaGFwZXMsImFuYWx5dGljcyIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNoYXJ0U2hhcGVzWyJsaW5lLWNoYXJ0Il0pKSwidW5kZWZpbmVkIiE9dHlwZW9m''@;'; put 'put ''IHdpbmRvdyYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoTC5DaGFydFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29tbWVyY2Utc2hhcGVzLnRzIjpmdW5jdGlvbihKZSxMLG1lKXsidXNlIHN0cmlj''@;'; put 'put ''dCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEwuQ29tbWVyY2VTaGFwZXM9TC5DbHJTaGFwZUZhY3Rvcnk9TC5DbHJTaGFwZUVtcGxveWVlPUwuQ2xyU2hhcGVFbXBsb3llZUdyb3VwPUwuQ2xyU2hhcGVSdWJsZT1MLkNsclNoYXBlUGVzbz1MLkNs''@;'; put 'put ''clNoYXBlQ29pbkJhZz1MLkNsclNoYXBlQml0Y29pbj1MLkNsclNoYXBlWWVuPUwuQ2xyU2hhcGVXb249TC5DbHJTaGFwZVJ1cGVlPUwuQ2xyU2hhcGVQb3VuZD1MLkNsclNoYXBlRUNoZWNrPUwuQ2xyU2hhcGVEb2xsYXJCaWxsPUwuQ2xyU2hhcGVCYW5rPUwuQ2xyU2hhcGVDcmVkaXRDYXJk''@;'; put 'put ''PUwuQ2xyU2hhcGVEb2xsYXI9TC5DbHJTaGFwZUV1cm89TC5DbHJTaGFwZVN0b3JlPUwuQ2xyU2hhcGVXYWxsZXQ9TC5DbHJTaGFwZVNob3BwaW5nQ2FydD1MLkNsclNoYXBlUGlnZ3lCYW5rPUwuQ2xyU2hhcGVTaG9wcGluZ0JhZz1MLkNsclNoYXBlQ2FsY3VsYXRvcj12b2lkIDA7dmFyIEI9''@;'; put 'put ''bWUoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIiksRT1tZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKTtMLkNsclNoYXBlQ2FsY3VsYXRvcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWk04LDMyVjRIMjhWMzJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTEyLDhIMjUuNjdWNkgxMWExLDEsMCwwLDAtMSwxdjQuNjdoMloiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBwb2ludHM9IjEyIDE2IDEwIDE2IDEwIDE4IDE0IDE4''@;'; put 'put ''IDE0IDE0IDEyIDE0IDEyIDE2Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgcG9pbnRzPSIyNCAxNiAyMiAxNiAyMiAxOCAyNiAxOCAyNiAxNCAyNCAxNCAyNCAxNiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHBvaW50cz0iMTggMTYgMTYgMTYgMTYgMTggMjAgMTggMjAgMTQgMTggMTQgMTggMTYiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiBwb2ludHM9''@;'; put 'put ''IjEyIDIyIDEwIDIyIDEwIDI0IDE0IDI0IDE0IDIwIDEyIDIwIDEyIDIyIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgcG9pbnRzPSIyNCAyMiAyMiAyMiAyMiAyNCAyNiAyNCAyNiAyMCAyNCAyMCAyNCAyMiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIHBvaW50cz0iMTggMjIgMTYgMjIgMTYgMjQgMjAgMjQgMjAgMjAgMTggMjAgMTggMjIiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC05IiBwb2ludHM9IjEyIDI4IDEwIDI4IDEwIDMwIDE0IDMwIDE0IDI2IDEyIDI2IDEyIDI4Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiIHBvaW50cz0iMjQgMjggMjIgMjggMjIgMzAgMjYg''@;'; put 'put ''MzAgMjYgMjYgMjQgMjYgMjQgMjgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMSIgcG9pbnRzPSIxOCAyOCAxNiAyOCAxNiAzMCAyMCAzMCAyMCAyNiAxOCAyNiAxOCAyOCIvPlxuICAgICAgICAgICAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWk0xMiwyOEgxMFYyNmgyWm0wLTZIMTBWMjBoMlptMC02SDEwVjE0aDJabTcsMTJIMTdWMjZo''@;'; put 'put ''MlptMC02SDE3VjIwaDJabTAtNkgxN1YxNGgyWm03LDEySDI0VjI2aDJabTAtNkgyNFYyMGgyWm0wLTZIMjRWMTRoMlptMC03SDEwVjVIMjZaIi8+JyksTC5DbHJTaGFwZVNob3BwaW5nQmFnPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIiBkPSJNMjUsMTJWOS4wNWE3LDcsMCwxLDAtMTQsMHY3YTEsMSwwLDAsMCwyLDBWMTRoOFYxMkgxM1Y5LjA1YTUsNSwwLDEsMSwxMCwwVjE2YTEsMSwwLDEsMCwyLDBWMTRoNVYzMkg2VjE0SDlWMTJINFYzMi4wOUExLjkxLDEuOTEsMCwwLDAsNS45MSwzNEgzMC4wOUExLjkx''@;'; put 'put ''LDEuOTEsMCwwLDAsMzIsMzIuMDlWMTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTMsOS4yMmE1LDUsMCwxLDEsMTAsMFYxMmgyVjkuMjJhNyw3LDAsMSwwLTE0LDBWMTJoMloiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yNSwxMnYzLjFhMSwxLDAsMSwxLTIsMFYxMkgxM3YzLjFhMSwxLDAsMCwxLTIsMFYxMkg0VjMyYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMloiLz4nKSxMLkNsclNoYXBlUGlnZ3lCYW5rPSgwLEUu''@;'; put 'put ''Y2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTkuNzIsMTAuNDdhMTEuNjUsMTEuNjUsMCwwLDAtNi4zMS41MkEuOC44LDAsMSwwLDE0LDEyLjQ4LDEwLjExLDEwLjExLDAsMCwxLDE5LjQ0LDEyYS44LjgsMCwxLDAsLjI4''@;'; put 'put ''LTEuNTdaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBjeD0iMjUuMzgiIGN5PSIxNi43MSIgcj0iMS4zNiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTMiIGQ9Ik0zNS41MSwxOC42M2ExLDEsMCwwLDAtLjg0LS40NCwzLjQyLDMuNDIsMCwwLDEtMi4wOS0xLjEyLDE3LjM1LDE3LjM1LDAsMCwxLTIuNjMtMy43OGwyLjg4LTQuNUExLjg5LDEuODksMCwwLDAsMzMsN2ExLjc3LDEuNzcsMCwwLDAtMS4zMy0xLDEwLjEyLDEwLjEyLDAsMCwwLTUu''@;'; put 'put ''MzkuNzUsMTIuNzIsMTIuNzIsMCwwLDAtMi43MiwxLjYzLDE2Ljk0LDE2Ljk0LDAsMCwwLTUuMTYtMS4zOUMxMS4zMSw2LjMsNC44MywxMC45LDQsMTdINGEyLjU2LDIuNTYsMCwwLDEtMS4zOC0xLjUzLDEuODEsMS44MSwwLDAsMSwuMTQtMS40LDEuMTksMS4xOSwwLDAsMSwuNDMtLjQzLDEu''@;'; put 'put ''MDgsMS4wOCwwLDAsMC0xLjEyLTEuODVBMy4zMSwzLjMxLDAsMCwwLC45MSwxM2E0LDQsMCwwLDAtLjMzLDMuMDhBNC43Niw0Ljc2LDAsMCwwLDMsMTguOTVsLjkyLjQ2YTE3LjU4LDE3LjU4LDAsMCwwLDEuODIsN2wuMTcuMzhBMjMsMjMsMCwwLDAsOS4yLDMxLjg4YTEsMSwwLDAsMCwuNzUu''@;'; put 'put ''MzRoNC41MmExLDEsMCwwLDAsLjkyLTEuMzhMMTUsMjkuOTRsMS4xOC4xM2EyMC4zMywyMC4zMywwLDAsMCw0LDBjLjM3LjYuNzcsMS4yLDEuMjEsMS43OWExLDEsMCwwLDAsLjguNDFoNC4zNGExLDEsMCwwLDAsLjkyLTEuMzljLS4xNy0uNC0uMzQtLjgzLS40Ny0xLjItLjE4LS41My0uMzIt''@;'; put 'put ''MS0uNDMtMS40NUExMy4xOCwxMy4xOCwwLDAsMCwyOS41NiwyNmExMi41LDEyLjUsMCwwLDAsMywwLDEsMSwwLDAsMCwuNzgtLjYybDIuMjYtNS44MUExLDEsMCwwLDAsMzUuNTEsMTguNjNabS0zLjc4LDUuNDRhMTEuMzcsMTEuMzcsMCwwLDEtMi4zNS0uMTFoMGE4LjIsOC4yLDAsMCwxLTIu''@;'; put 'put ''NTMtLjg3LDEsMSwwLDAsMC0uOTMsMS43NywxMS43MiwxMS43MiwwLDAsMCwxLjI5LjU4LDgsOCwwLDAsMS0xLjgsMS4xNmwtMS4wNi40OHMuNDksMi4xOS44MiwzLjE2SDIyLjc5Yy0uMjQtLjM0LTEuNDUtMi4zNi0xLjQ1LTIuMzZsLS42Ny4wOWExOC41MywxOC41MywwLDAsMS00LjI1LjEy''@;'; put 'put ''Yy0uNjYtLjA2LTEuNzYtLjItMi42Mi0uMzVsLTEuNTUtLjI3cy42MywyLjQzLjc1LDIuNzR2MEgxMC40MkEyMC41NywyMC41NywwLDAsMSw3Ljc2LDI2bC0uMTgtLjM5QTE0LjYyLDE0LjYyLDAsMCwxLDYsMTcuNDhjLjU0LTUuMTksNi4xMi05LjExLDEyLjE5LTguNTRhMTUuNDcsMTUuNDcs''@;'; put 'put ''MCwwLDEsNS4wOCwxLjQ4bC42Mi4yOS41LS40N0ExMC4yOSwxMC4yOSwwLDAsMSwyNyw4LjU0YTguMjUsOC4yNSwwLDAsMSw0LS42NWwtMy4zOCw1LjI5LjI1LjVoMGEyMS4xNiwyMS4xNiwwLDAsMCwzLjMxLDQuODQsNi40OSw2LjQ5LDAsMCwwLDIuMTQsMS4zOVoiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNSwxOC44N0E1LjgzLDUuODMsMCwwLDEsMzMsMTcuNjFhMjEuNjMsMjEuNjMsMCwwLDEtMy4yOS00Ljg0bDMuMzktNS4yOWEuOS45LDAsMCwwLS41NC0xLjM4LDkuNjcsOS42NywwLDAsMC01LjEzLjcy''@;'; put 'put ''LDEyLDEyLDAsMCwwLTMuMTMsMkExNy4zNywxNy4zNywwLDAsMCwxOC42LDcuMTVDMTEuOCw2LjUyLDUuMjcsMTAuOSw0LjU0LDE3bC0uMTQtLjA3QTIuNzYsMi43NiwwLDAsMSwyLjksMTUuMjlhMiwyLDAsMCwxLC4xNS0xLjU1LDEuMzIsMS4zMiwwLDAsMSwuNDctLjQ4LDEuMDgsMS4wOCww''@;'; put 'put ''LDEsMC0xLjEyLTEuODUsMy40NSwzLjQ1LDAsMCwwLTEuMjMsMS4yNUE0LjE2LDQuMTYsMCwwLDAsLjg0LDE1LjlhNSw1LDAsMCwwLDIuNTcsM2wxLC41NGExOC42MiwxOC42MiwwLDAsMCwyLDcuMywyMywyMywwLDAsMCwzLDQuNzksMSwxLDAsMCwwLC44LjM4aDMuNjFhLjUyLjUyLDAsMCww''@;'; put 'put ''LC40LS43NUwxNCwzMC4zOGExMSwxMSwwLDAsMS0uMzMtMS4xOGMuOTEuMTYsMi4wOC4zMSwyLjg3LjM4YTIwLjA3LDIwLjA3LDAsMCwwLDMuMTIsMGMuMzkuNy43OSwxLjMzLDEuMTUsMS44NWEuOTMuOTMsMCwwLDAsLjc3LjQxaDMuMTFhLjY1LjY1LDAsMCwwLC42MS0uODVjLS4yMy0uNzQt''@;'; put 'put ''LjUzLTEuNzUtLjcxLTIuMzdhMTUuOSwxNS45LDAsMCwwLDMuNzUtMS43NmMuMTYtLjExLjMyLS4yNi40OC0uMzlhMTMuNzcsMTMuNzcsMCwwLDEtMi40Mi0xLC44LjgsMCwwLDEsLjc0LTEuNDIsMTEuNjQsMTEuNjQsMCwwLDAsMy4xOCwxLjEsMTMuMzEsMTMuMzEsMCwwLDAsMi42OC4xMiwx''@;'; put 'put ''LDEsMCwwLDAsLjktLjY2bDEuNzMtNC40NEExLDEsMCwwLDAsMzUsMTguODdaTTEzLjc5LDExLjU5YS44Ni44NiwwLDAsMS0uMy4wNS44NS44NSwwLDAsMS0uMy0xLjY0LDEyLjQxLDEyLjQxLDAsMCwxLDYuNjktLjU1Ljg1Ljg1LDAsMSwxLS4zLDEuNjdBMTAuNzUsMTAuNzUsMCwwLDAsMTMu''@;'; put 'put ''NzksMTEuNTlabTEyLjUyLDYuMTJhMS40NCwxLjQ0LDAsMSwxLDEuNDQtMS40NEExLjQ0LDEuNDQsMCwwLDEsMjYuMzIsMTcuNzJaIi8+JyksTC5DbHJTaGFwZVNob3BwaW5nQ2FydD0oMCxFLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIxMy4zMyIgY3k9IjI5Ljc1IiByPSIyLjI1IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI3IiBjeT0iMjkuNzUiIHI9IjIuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjA4''@;'; put 'put ''LDUuMzdBMSwxLDAsMCwwLDMyLjMxLDVIMTEuNDlsLjY1LDJIMzFMMjguMzMsMTloLTE1TDguNzYsNC41M2ExLDEsMCwwLDAtLjY2LS42NUw0LDIuNjJhMSwxLDAsMSwwLS41OSwxLjkyTDcsNS42NGw0LjU5LDE0LjVMOS45NSwyMS40OGwtLjEzLjEzQTIuNjYsMi42NiwwLDAsMCw5Ljc0LDI1''@;'; put 'put ''LDIuNzUsMi43NSwwLDAsMCwxMiwyNkgyOC42OWExLDEsMCwwLDAsMC0ySDExLjg0YS42Ny42NywwLDAsMS0uNTYtMWwyLjQxLTJIMjkuMTNhMSwxLDAsMCwwLDEtLjc4bDMuMTctMTRBMSwxLDAsMCwwLDMzLjA4LDUuMzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEzLjMzIiBjeT0iMjkuNzUiIHI9IjIuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjciIGN5PSIyOS43NSIg''@;'; put 'put ''cj0iMi4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjIwLjcxIDcgMjEuODcgNSAxMS40OSA1IDEyLjE0IDcgMjAuNzEgNyIgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuMTUsMTUuNCwyOC4zMywxOWgtMTVMOC43Niw0LjUzYTEsMSwwLDAsMC0uNjYtLjY1TDQsMi42MmExLDEsMCwxLDAtLjU5LDEuOTJMNyw1LjY0bDQuNTksMTQuNUw5Ljk1''@;'; put 'put ''LDIxLjQ4bC0uMTMuMTNBMi42NiwyLjY2LDAsMCwwLDkuNzQsMjUsMi43NSwyLjc1LDAsMCwwLDEyLDI2SDI4LjY5YTEsMSwwLDAsMCwwLTJIMTEuODRhLjY3LjY3LDAsMCwxLS41Ni0xbDIuNDEtMkgyOS4xM2ExLDEsMCwwLDAsMS0uNzhsMS4wOS00LjgyWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4''@;'; put 'put ''LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMy4zMyIgY3k9IjI5Ljc1IiByPSIyLjI1IiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNyIgY3k9IjI5Ljc1IiByPSIyLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMjIuNTcsN2E3LjUyLDcuNTIsMCwwLDEtLjA3LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xSDExLjQ5bC42NSwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTMwLDEzLjVsLS40MiwwTDI4LjMzLDE5aC0xNUw4Ljc2LDQuNTNhMSwxLDAsMCwwLS42Ni0uNjVMNCwyLjYyYTEsMSwwLDEsMC0uNTksMS45Mkw3LDUuNjRsNC41OSwxNC41TDkuOTUsMjEuNDhsLS4xMy4xM0EyLjY2LDIuNjYsMCwwLDAsOS43NCwyNSwyLjc1LDIuNzUsMCwwLDAsMTIsMjZI''@;'; put 'put ''MjguNjlhMSwxLDAsMCwwLDAtMkgxMS44NGEuNjcuNjcsMCwwLDEtLjU2LTFsMi40MS0ySDI5LjEzYTEsMSwwLDAsMCwxLS43OGwxLjU3LTYuOTFBNy41MSw3LjUxLDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRn''@;'; put 'put ''ZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMy41IiBjeT0iMjkuNSIg''@;'; put 'put ''cj0iMi41IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjYuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0z''@;'; put 'put ''My4xLDYuMzlBMSwxLDAsMCwwLDMyLjMxLDZIOS4yMUw4Ljc2LDQuNTdhMSwxLDAsMCwwLS42Ni0uNjVMNCwyLjY2YTEsMSwwLDEsMC0uNTksMS45Mkw3LDUuNjhsNC41OCwxNC40N0w5Ljk1LDIxLjQ5bC0uMTMuMTNBMi42NiwyLjY2LDAsMCwwLDkuNzQsMjUsMi43NSwyLjc1LDAsMCwwLDEy''@;'; put 'put ''LDI2SDI4LjY5YTEsMSwwLDAsMCwwLTJIMTEuODRhLjY3LjY3LDAsMCwxLS41Ni0xbDIuNDEtMkgyOS4xMmExLDEsMCwwLDAsMS0uNzZsMy4yLTEzQTEsMSwwLDAsMCwzMy4xLDYuMzlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNp''@;'; put 'put ''cmNsZSBjeD0iMTMuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI2LjUiIGN5PSIyOS41IiByPSIyLjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDkuMjFMOC43Niw0LjU3YTEsMSwwLDAsMC0uNjYtLjY1TDQsMi42NmExLDEsMCwxLDAtLjU5LDEuOTJMNyw1''@;'; put 'put ''LjY4bDQuNTgsMTQuNDdMOS45NSwyMS40OWwtLjEzLjEzQTIuNjYsMi42NiwwLDAsMCw5Ljc0LDI1LDIuNzUsMi43NSwwLDAsMCwxMiwyNkgyOC42OWExLDEsMCwwLDAsMC0ySDExLjg0YS42Ny42NywwLDAsMS0uNTYtMWwyLjQxLTJIMjkuMTJhMSwxLDAsMCwwLDEtLjc2bDEuMTktNC44NFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2''@;'; put 'put ''LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEzLjUiIGN5PSIyOS41IiByPSIyLjUiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjYuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIyLjUsNkg5LjIxTDguNzYsNC41N2ExLDEsMCwwLDAtLjY2LS42NUw0LDIuNjZhMSwxLDAsMSwwLS41OSwxLjkyTDcsNS42OGw0LjU4LDE0LjQ3TDkuOTUsMjEuNDlsLS4xMy4xM0EyLjY2LDIuNjYsMCwwLDAsOS43NCwyNSwy''@;'; put 'put ''Ljc1LDIuNzUsMCwwLDAsMTIsMjZIMjguNjlhMSwxLDAsMCwwLDAtMkgxMS44NGEuNjcuNjcsMCwwLDEtLjU2LTFsMi40MS0ySDI5LjEyYTEsMSwwLDAsMCwxLS43NmwxLjcxLTdBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLEwuQ2xyU2hhcGVXYWxsZXQ9KDAsRS5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiwxNUgzMVY5YTEsMSwwLDAsMC0xLTFINmExLDEsMCwwLDEtMS0uODJWNi44MkExLDEsMCwwLDEsNiw2SDI5LjU4YTEsMSwwLDAsMCwwLTJINkEzLDMsMCwwLDAsMyw3YTMuMDgsMy4w''@;'; put 'put ''OCwwLDAsMCwwLC4zNlYyNy45M0E0LjEsNC4xLDAsMCwwLDcuMTMsMzJIMzBhMSwxLDAsMCwwLDEtMVYyNWgxYTEsMSwwLDAsMCwxLTFWMTZBMSwxLDAsMCwwLDMyLDE1Wk0yOSwzMEg3LjEzQTIuMTEsMi4xMSwwLDAsMSw1LDI3LjkzVjkuODhBMy4xMSwzLjExLDAsMCwwLDYsMTBIMjl2NUgy''@;'; put 'put ''MmE1LDUsMCwwLDAsMCwxMGg3Wm0yLTdIMjJhMywzLDAsMCwxLDAtNkgzMVoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGN4PSIyMy4wMSIgY3k9IjIwIiByPSIxLjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi45NCwxNEgzMVY5YTEsMSwwLDAsMC0xLTFINkExLDEsMCwwLDEsNSw3SDVWN0ExLDEsMCwwLDEsNiw2SDI5LjZhMSwxLDAsMSwwLDAtMkg2QTIuOTQsMi45NCwwLDAsMCwzLDYuODh2MjFBNC4xMyw0LjEzLDAsMCwwLDcu''@;'; put 'put ''MTUsMzJIMzBhMSwxLDAsMCwwLDEtMVYyNmgxLjk0YS45My45MywwLDAsMCwxLS45MXYtMTBBMS4wOCwxLjA4LDAsMCwwLDMyLjk0LDE0Wk0zMiwyNGwtOC41OCwwYTMuODcsMy44NywwLDAsMS0zLjczLTQsMy44NywzLjg3LDAsMCwxLDMuNzMtNEwzMiwxNloiLz5cbiAgICAgICAgICAgIDxj''@;'; put 'put ''aXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgY3g9IjI0LjA0IiBjeT0iMTkuOTIiIHI9IjEuNSIvPicpLEwuQ2xyU2hhcGVTdG9yZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0i''@;'; put 'put ''TTI4LDMwSDE2VjIySDE0djhIOFYyMkg2djhhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjIySDI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMy43OSwxMy4yNywyOS43MSw1LjExQTIsMiwwLDAs''@;'; put 'put ''MCwyNy45Miw0SDguMDhBMiwyLDAsMCwwLDYuMjksNS4xMUwyLjIxLDEzLjI3YTIsMiwwLDAsMC0uMjEuOXYzLjA4YTIsMiwwLDAsMCwuNDYsMS4yOEE0LjY3LDQuNjcsMCwwLDAsNiwyMC4xM2E0LjcyLDQuNzIsMCwwLDAsMy0xLjA3LDQuNzMsNC43MywwLDAsMCw2LDAsNC43Myw0LjczLDAs''@;'; put 'put ''MCwwLDYsMCw0LjczLDQuNzMsMCwwLDAsNiwwLDQuNzIsNC43MiwwLDAsMCw2LjUzLS41MkEyLDIsMCwwLDAsMzQsMTcuMjZWMTQuMTdBMiwyLDAsMCwwLDMzLjc5LDEzLjI3Wk0zMCwxOC4xM0EyLjY4LDIuNjgsMCwwLDEsMjcuODIsMTdMMjcsMTUuODgsMjYuMTksMTdhMi43MSwyLjcxLDAs''@;'; put 'put ''MCwxLTQuMzcsMEwyMSwxNS44OCwyMC4xOSwxN2EyLjcxLDIuNzEsMCwwLDEtNC4zNywwTDE1LDE1Ljg4LDE0LjE5LDE3YTIuNzEsMi43MSwwLDAsMS00LjM3LDBMOSwxNS44OCw4LjE4LDE3QTIuNjgsMi42OCwwLDAsMSw2LDE4LjEzYTIuNjQsMi42NCwwLDAsMS0yLS44OFYxNC4xN0w4LjA4''@;'; put 'put ''LDZIMjcuOTJMMzIsMTQuMTZ2LjY3bDAsMi4zOUEyLjY3LDIuNjcsMCwwLDEsMzAsMTguMTNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjgsMzBIMTZWMjJIMTR2OEg4VjIySDZ2OGEyLDIsMCwwLDAsMiwySDI4YTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWMjJIMjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzMuNzksMTMuMjcsMjkuNzEsNS4xMUEyLDIsMCwwLDAsMjcuOTIsNEg4LjA4QTIsMiwwLDAsMCw2LjI5LDUuMTFMMi4yMSwxMy4yN2EyLDIs''@;'; put 'put ''MCwwLDAtLjIxLjl2My4wOGEyLDIsMCwwLDAsLjQ2LDEuMjhBNC42Nyw0LjY3LDAsMCwwLDYsMjAuMTNhNC43Miw0LjcyLDAsMCwwLDMtMS4wNyw0LjczLDQuNzMsMCwwLDAsNiwwLDQuNzMsNC43MywwLDAsMCw2LDAsNC43Myw0LjczLDAsMCwwLDYsMCw0LjcyLDQuNzIsMCwwLDAsNi41My0u''@;'; put 'put ''NTJBMiwyLDAsMCwwLDM0LDE3LjI2VjE0LjE3QTIsMiwwLDAsMCwzMy43OSwxMy4yN1pNMTUsMTQuNHYxLjUyTDE0LjE4LDE3YTIuNzEsMi43MSwwLDAsMS00LjM3LDBMOSwxNS44OFYxNC40TDExLjU5LDZIMTZabTEyLDEuNDhMMjYuMTksMTdhMi43MSwyLjcxLDAsMCwxLTQuMzcsMEwyMSwx''@;'; put 'put ''NS44OGwwLDBWMTQuNEwyMCw2aDQuNDVMMjcsMTQuNFoiLz4nKSxMLkNsclNoYXBlRXVybz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLjQ4LDI4LjQ5YTEsMSwwLDAsMC0xLjM4LS4zMkExMiwxMiwwLDAs''@;'; put 'put ''MSwxMi40NSwyMkgyNC4xNmExLDEsMCwwLDAsMC0ySDExLjkzYTExLjE2LDExLjE2LDAsMCwxLDAtNEgyNC4xNmExLDEsMCwwLDAsMC0ySDEyLjQ1QTEyLDEyLDAsMCwxLDMwLjA2LDcuOGExLDEsMCwwLDAsMS4wNi0xLjdBMTQsMTQsMCwwLDAsMTAuMzQsMTRIMy41NGExLDEsMCwxLDAsMCwy''@;'; put 'put ''SDkuOTFhMTQsMTQsMCwwLDAtLjE2LDIsMTQsMTQsMCwwLDAsLjE2LDJIMy41NGExLDEsMCwxLDAsMCwyaDYuOGExNCwxNCwwLDAsMCwyMC44Myw3Ljg3QTEsMSwwLDAsMCwzMS40OCwyOC40OVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTcuNDIsMjUuMTZBMTAuODgsMTAuODgsMCwwLDEsOS4yMywyMUg1Ljg0YTEsMSwwLDAsMSwwLTJoM2MwLS4zNS0uMDUtLjcxLS4wNS0xLjA3czAtLjYzLDAtLjkzaC0zYTEsMSwwLDAsMSwwLTJIOS4x''@;'; put 'put ''OUExMC44NiwxMC44NiwwLDAsMSwyNS4zOCw4LjY5YTEuMjUsMS4yNSwwLDAsMS0xLjMyLDIuMTJBOC4zNiw4LjM2LDAsMCwwLDExLjgyLDE1aDkuMzZhMSwxLDAsMCwxLDAsMkgxMS4zM2E3LjcyLDcuNzIsMCwwLDAsMCwyaDkuODJhMSwxLDAsMCwxLDAsMkgxMS44N2E4LjM2LDguMzYsMCww''@;'; put 'put ''LDAsMTIuMjIsNCwxLjI1LDEuMjUsMCwxLDEsMS4zMywyLjEyWiIvPicpLEwuQ2xyU2hhcGVEb2xsYXI9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNiwyMS4xNWE2LjkxLDYuOTEsMCwwLDAtNC4zOC0zLjMy''@;'; put 'put ''QTI2LDI2LDAsMCwwLDE5LDE3LjE5VjguMTJBMTAuMDUsMTAuMDUsMCwwLDEsMjMuODYsMTBhMSwxLDAsMCwwLDEuMzMtMS41QTExLjc1LDExLjc1LDAsMCwwLDE5LDYuMVYzYTEsMSwwLDAsMC0yLDBWNmMtNC40LjEtNi44MywyLjI5LTcuNTcsNC4xOEE1LjU2LDUuNTYsMCwwLDAsMTEuNjYs''@;'; put 'put ''MTcsMTMuMiwxMy4yLDAsMCwwLDE3LDE4Ljg0VjI4YTEyLjMsMTIuMywwLDAsMS03LjE0LTIuNzRBMSwxLDAsMSwwLDguNDksMjYuNywxNC4wOSwxNC4wOSwwLDAsMCwxNywzMHYzYTEsMSwwLDAsMCwyLDBWMzBjMi44Mi0uMTksNi4wNy0xLjA5LDcuMy00Ljc2QTUuMzMsNS4zMywwLDAsMCwy''@;'; put 'put ''NiwyMS4xNVpNMTIuNzksMTUuMzJhMy41NywzLjU3LDAsMCwxLTEuNDktNC4zOUMxMS40MSwxMC42MywxMi41Myw4LjEyLDE3LDh2OC44QTEwLjcsMTAuNywwLDAsMSwxMi43OSwxNS4zMlpNMjQuNCwyNC41NmMtLjcyLDIuMTQtMi4zMiwzLjE3LTUuNCwzLjRWMTkuMjNjLjY0LjE0LDEuMy4z''@;'; put 'put ''LDIsLjUxYTUsNSwwLDAsMSwzLjE5LDIuMzJBMy4zNCwzLjM0LDAsMCwxLDI0LjQsMjQuNTZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIlxuICAgICAgICAgICAgICAgIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2''@;'; put 'put ''LDAsMCwwLDE4LDJabTcuNjUsMjEuNTljLTEsMy0zLjYxLDMuODQtNS45LDR2MmExLjI1LDEuMjUsMCwwLDEtMi41LDBWMjcuNTlBMTEuNDcsMTEuNDcsMCwwLDEsMTEsMjVhMS4yNSwxLjI1LDAsMSwxLDEuNzEtMS44Myw5LjExLDkuMTEsMCwwLDAsNC41NSwxLjk0VjE4LjgzYTkuNjMsOS42''@;'; put 'put ''MywwLDAsMS0zLjczLTEuNDEsNC44LDQuOCwwLDAsMS0xLjkxLTUuODRjLjU5LTEuNTEsMi40Mi0zLjIzLDUuNjQtMy41MVY2LjI1YTEuMjUsMS4yNSwwLDAsMSwyLjUsMFY4LjExYTkuNjcsOS42NywwLDAsMSw0LjksMkExLjI1LDEuMjUsMCwwLDEsMjMsMTEuOTVhNy4xNCw3LjE0LDAsMCww''@;'; put 'put ''LTMuMjQtMS4zMXY2LjEzYy42LjEzLDEuMjQuMjcsMS45MS40OGE1Ljg1LDUuODUsMCwwLDEsMy42OSwyLjgyQTQuNjQsNC42NCwwLDAsMSwyNS42NSwyMy41OVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yMC45Miwx''@;'; put 'put ''OS42NGMtLjQtLjEyLS43OS0uMjItMS4xNy0uM3Y1Ljc2YzItLjIsMy4wNy0uOSwzLjUzLTIuM2EyLjE1LDIuMTUsMCwwLDAtLjE1LTEuNThBMy40OSwzLjQ5LDAsMCwwLDIwLjkyLDE5LjY0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMyIgZD0iTTEzLjk0LDEyLjQ4YTIuMzEsMi4zMSwwLDAsMCwxLDIuODcsNi41Myw2LjUzLDAsMCwwLDIuMzIuOTJWMTAuNTVDMTUuMTYsMTAuOCwxNC4xOSwxMS44NCwxMy45NCwxMi40OFoiLz4nKSxMLkNsclNoYXBlQ3JlZGl0Q2FyZD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJN''@;'; put 'put ''MzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZabTAsMiwwLDEySDRMNCw4Wk00LDI4VjI0SDMydjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxy''@;'; put 'put ''ZWN0IHg9IjciIHk9IjMiIHdpZHRoPSIyMiIgaGVpZ2h0PSIzMCIgcng9IjAuOTYiIHJ5PSIwLjk2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNikgcm90YXRlKDkwKSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZabTAsMThINFYyMEgzMloiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZUJhbms9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMuNSwxMy41NiwxOCw1LjIzbDE0LjUsOC4zM2ExLDEsMCwwLDAsMS0xLjczTDE4LDIuOTIsMi41LDExLjgzYTEsMSwwLDEsMCwxLDEuNzNaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMjZhMSwxLDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMC0ySDI4VjE3LjYzSDI2VjI1SDE5VjE3LjYzSDE3VjI1SDEwVjE3LjYzSDhWMjVINUExLDEsMCwwLDAsNCwyNloiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI1LjAyIiB5PSIxNCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMs''@;'; put 'put ''MjlIM2ExLDEsMCwwLDAsMCwySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjE1LDExLjU4aDMuMjFMMTguNjUsNy43MmEuOC44LDAsMCwwLS44LDBsLTYuNzIsMy44NmgzLjIx''@;'; put 'put ''bDMuOS0yLjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDI2YTEsMSwwLDAsMCwxLDFIMzFhMSwxLDAsMCwwLDAtMkgyOFYxNy42M0gyNlYyNUgxOVYxNy42M0gxN1YyNUgxMFYxNy42M0g4VjI1SDVBMSwx''@;'; put 'put ''LDAsMCwwLDQsMjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjUuMDIiIHk9IjE0IiB3aWR0aD0iMjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMjlIM2ExLDEsMCwwLDAsMCwySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0yMi4xNSwxMS41OGgzLjIxTDE4LjY1LDcuNzJhLjguOCwwLDAsMC0uOCwwbC02LjcyLDMuODZoMy4yMWwzLjktMi4yNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTIyLjUsNmMwLS4xNiwwLS4zMiwwLS40OEwxOCwyLjkyLDIuNSwxMS44M2ExLDEsMCwxLDAsMSwxLjczTDE4LDUuMjMsMjIuNzcsOEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTQsMTMuMjRsLjU2LjMyYTEsMSwwLDAsMCwxLjQ0LTEuMTlBNy40NSw3LjQ1LDAsMCwxLDMxLjk0LDEzLjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMjZhMSwxLDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMC0ySDI4VjE3''@;'; put 'put ''LjYzSDI2VjI1SDE5VjE3LjYzSDE3VjI1SDEwVjE3LjYzSDhWMjVINUExLDEsMCwwLDAsNCwyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMjlIM2ExLDEsMCwwLDAsMCwy''@;'; put 'put ''SDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjUsMTVBMy41MSwzLjUxLDAsMCwxLDIwLDE0SDV2MkgzMVYxNVoiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuNDYsOS43NGwuNjgtMS4xNy0xLjQ5LS44NWEuOC44LDAsMCwwLS44LDBsLTYuNzIsMy44NmgzLjIxbDMuOS0yLjI0LDEuMS42M0MxOS4zOSw5Ljg5LDE5LjQyLDku''@;'; put 'put ''ODEsMTkuNDYsOS43NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMDUsNS4yNSwxOCwyLjkyLDIuNSwxMS44M2ExLDEsMCwxLDAsMSwxLjczTDE4LDUuMjMsMjEuMDUsN1oi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5''@;'; put 'put ''LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMuNSwxMy41Niw1LDEyLjY4VjE2SDMxVjEyLjcx''@;'; put 'put ''bDEuNDguODVhMSwxLDAsMCwwLDEtMS43M0wxOCwyLjkyLDIuNSwxMS44M2ExLDEsMCwxLDAsMSwxLjczWk0xNy44NSw3LjExYS44LjgsMCwwLDEsLjgsMEwyNS4zNywxMUgyMi4xNWwtMy45LTIuMjRMMTQuMzUsMTFIMTEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuODUsMjdIMzJ2LS44NUExLjE1LDEuMTUsMCwwLDAsMzAuODUsMjVIMjhWMTcuNjNIMjRWMjVIMjBWMTcuNjNIMTZWMjVIMTJWMTcuNjNIOFYyNUg1LjE1QTEuMTUsMS4xNSwwLDAsMCw0LDI2LjE1VjI3SDMuMTVBMS4xNSwxLjE1LDAs''@;'; put 'put ''MCwwLDIsMjguMTVWMzFIMzRWMjguMTVBMS4xNSwxLjE1LDAsMCwwLDMyLjg1LDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjg1LDI3SDMydi0uODVBMS4xNSwxLjE1LDAsMCwwLDMwLjg1LDI1SDI4VjE3LjYz''@;'; put 'put ''SDI0VjI1SDIwVjE3LjYzSDE2VjI1SDEyVjE3LjYzSDhWMjVINS4xNUExLjE1LDEuMTUsMCwwLDAsNCwyNi4xNVYyN0gzLjE1QTEuMTUsMS4xNSwwLDAsMCwyLDI4LjE1VjMxSDM0VjI4LjE1QTEuMTUsMS4xNSwwLDAsMCwzMi44NSwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjQ3LDcuNDcsMCwwLDEsMjQuMzksMTFIMjIuMTVsLTMuOS0yLjI0TDE0LjM1LDExSDExLjE0bDYuNzItMy44NmEuOC44LDAsMCwxLC44LDBsNSwyLjg3QTcuNDUsNy40NSwwLDAsMSwy''@;'; put 'put ''Mi41LDZjMC0uMTYsMC0uMzIsMC0uNDhMMTgsMi45MiwyLjUsMTEuODNhMSwxLDAsMSwwLDEsMS43M0w1LDEyLjY4VjE2SDMxVjEzLjQyQTcuNTMsNy41MywwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45NCwxMy4yNGwuNTYuMzJhMSwxLDAsMCwwLDEuNDQtMS4xOUE3LjQ1LDcuNDUsMCwwLDEsMzEuOTQsMTMuMjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNs''@;'; put 'put ''ZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi44NSwyN0gzMnYtLjg1QTEuMTUsMS4xNSwwLDAsMCwzMC44NSwyNUgyOFYxNy42''@;'; put 'put ''M0gyNFYyNUgyMFYxNy42M0gxNlYyNUgxMlYxNy42M0g4VjI1SDUuMTVBMS4xNSwxLjE1LDAsMCwwLDQsMjYuMTVWMjdIMy4xNUExLjE1LDEuMTUsMCwwLDAsMiwyOC4xNVYzMUgzNFYyOC4xNUExLjE1LDEuMTUsMCwwLDAsMzIuODUsMjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSwxNWEzLjUxLDMuNTEsMCwwLDEtMy01LjI2bC4xNC0uMjQtMS4zNS0uNzhMMTQuMzUsMTFIMTEuMTRsNi43Mi0zLjg2YS44LjgsMCwwLDEsLjgsMGwxLjc1LDEsMS42NS0yLjg2TDE4LDIu''@;'; put 'put ''OTIsMi41LDExLjgzYTEsMSwwLDEsMCwxLDEuNzNMNSwxMi42OFYxNkgzMVYxNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAs''@;'; put 'put ''MCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz4nKSxMLkNsclNoYXBl''@;'; put 'put ''RG9sbGFyQmlsbD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDhINGEyLDIsMCwwLDAtMiwyVjI2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMEEyLDIsMCwwLDAsMzIsOFptMCw2YTQuMjUs''@;'; put 'put ''NC4yNSwwLDAsMS0zLjktNEgzMlptMCwxLjYydjQuODNBNS44Nyw1Ljg3LDAsMCwwLDI2LjQ5LDI2aC0xN0E1Ljg3LDUuODcsMCwwLDAsNCwyMC40NFYxNS42QTUuODcsNS44NywwLDAsMCw5LjUxLDEwaDE3QTUuODcsNS44NywwLDAsMCwzMiwxNS42Wk03LjksMTBBNC4yNSw0LjI1LDAsMCwx''@;'; put 'put ''LDQsMTRWMTBaTTQsMjIuMDZBNC4yNSw0LjI1LDAsMCwxLDcuOSwyNkg0Wk0yOC4xLDI2QTQuMjUsNC4yNSwwLDAsMSwzMiwyMi4wNlYyNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMTAuODVjLTMuNDcs''@;'; put 'put ''MC02LjMsMy4yMS02LjMsNy4xNXMyLjgzLDcuMTUsNi4zLDcuMTUsNi4zLTMuMjEsNi4zLTcuMTVTMjEuNDcsMTAuODUsMTgsMTAuODVabTAsMTIuNjljLTIuNTksMC00LjctMi40OS00LjctNS41NXMyLjExLTUuNTUsNC43LTUuNTUsNC43LDIuNDksNC43LDUuNTVTMjAuNTksMjMuNTUsMTgs''@;'; put 'put ''MjMuNTVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIsOEg0YTIsMiwwLDAsMC0yLDJWMjZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEwQTIsMiwwLDAsMCwzMiw4Wk00LDI2VjIxLjE1QTUuMTgsNS4x''@;'; put 'put ''OCwwLDAsMSw4Ljc5LDI2Wk00LDE0Ljg1VjEwSDguNzlBNS4xOCw1LjE4LDAsMCwxLDQsMTQuODVaTTE4LDI1LjE1Yy0zLjQ3LDAtNi4zLTMuMjEtNi4zLTcuMTVzMi44My03LjE1LDYuMy03LjE1LDYuMywzLjIxLDYuMyw3LjE1UzIxLjQ3LDI1LjE1LDE4LDI1LjE1Wk0zMiwyNkgyNy4yNUE1''@;'; put 'put ''LjE4LDUuMTgsMCwwLDEsMzIsMjEuMTVabTAtMTEuMTVBNS4xOCw1LjE4LDAsMCwxLDI3LjI1LDEwSDMyWiIvPlxuICAgICAgICAgICAgPGVsbGlwc2UgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgY3g9IjE4IiBjeT0iMTgiIHJ4PSI0IiByeT0iNC43MiIvPicpLEwu''@;'; put 'put ''Q2xyU2hhcGVFQ2hlY2s9KDAsRS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjE2IiB5PSIxNiIgd2lkdGg9IjE1IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0yIiB4PSIyMCIgeT0iMjEiIHdpZHRoPSIxMSIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTM0LDhIMTIuOTNhOC4zNSw4LjM1LDAsMCwxLC43OSwySDMzVjI2SDNWMTku''@;'; put 'put ''OWE3LjgzLDcuODMsMCwwLDEtMi0xLjM0VjI3YTEsMSwwLDAsMCwxLDFIMzRhMSwxLDAsMCwwLDEtMVY5QTEsMSwwLDAsMCwzNCw4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik02LjU3LDE4LjY4YTYuMTcsNi4x''@;'; put 'put ''NywwLDAsMCw0LjMyLTEuNTksMS4yLDEuMiwwLDAsMCwuMzYtLjg0LDEuMDgsMS4wOCwwLDAsMC0xLjA5LTEuMTEsMSwxLDAsMCwwLS43MS4yNSw0LjMyLDQuMzIsMCwwLDEtMi44NCwxLDMuMzUsMy4zNSwwLDAsMS0zLjQ2LTNoNy41M0ExLjI5LDEuMjksMCwwLDAsMTIsMTIuMDYsNS42OCw1''@;'; put 'put ''LjY4LDAsMCwwLDYuMjcsNi4xNCw2LDYsMCwwLDAsLjQsMTIuNHYwQTYsNiwwLDAsMCw2LjU3LDE4LjY4Wk02LjI1LDguMzljMS44MiwwLDIuODcsMS4zOSwzLDMuMTZIMy4xM0MzLjM4LDkuNjksNC41Niw4LjM5LDYuMjUsOC4zOVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNCw4SDEyLjkxYTguNjEsOC42MSwwLDAsMSwxLjIsNC4zOSw4LDgsMCwwLDEtNy43OCw4LjI3QTcuNTEsNy41MSwwLDAsMSwxLDE4LjQxVjI3YTEsMSwwLDAsMCwxLDFIMzRhMSwxLDAsMCwwLDEtMVY5QTEsMSwwLDAsMCwzNCw4Wk0z''@;'; put 'put ''MSwyM0gyMFYyMUgzMVptMC01SDE2VjE2SDMxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTYuNTcsMTguNjhBNiw2LDAsMCwxLC40LDEyLjQ0djBBNiw2LDAsMCwxLDYuMjcsNi4xNCw1LjY4LDUuNjgsMCwwLDEsMTIs''@;'; put 'put ''MTIuMDZhMS4yOSwxLjI5LDAsMCwxLTEuMywxLjMySDMuMTVhMy4zNSwzLjM1LDAsMCwwLDMuNDYsMyw0LjMyLDQuMzIsMCwwLDAsMi44NC0xLDEsMSwwLDAsMSwuNzEtLjI1LDEuMDgsMS4wOCwwLDAsMSwxLjA5LDEuMTEsMS4yLDEuMiwwLDAsMS0uMzYuODRBNi4xNyw2LjE3LDAsMCwxLDYu''@;'; put 'put ''NTcsMTguNjhaTTkuMywxMS41NWMtLjE4LTEuNzctMS4yMy0zLjE2LTMtMy4xNnMtMi44NywxLjMtMy4xMiwzLjE2WiIvPicpLEwuQ2xyU2hhcGVQb3VuZD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3Ljks''@;'; put 'put ''MzBIMTMuNEE4LjQ1LDguNDUsMCwwLDAsMTUsMjQuNjVWMjFoNC4zMWExLDEsMCwwLDAsMC0ySDE1VjExLjMxQTUuMjQsNS4yNCwwLDAsMSwyMC4yMSw2LDUuMTksNS4xOSwwLDAsMSwyNCw3LjczYTEsMSwwLDAsMCwxLjQ4LTEuMzVBNy4xOSw3LjE5LDAsMCwwLDEzLDExLjMxVjE5SDguNzJh''@;'; put 'put ''MSwxLDAsMSwwLDAsMkgxM3YzLjY1QzEzLDI5LjM4LDEwLjEyLDMwLDEwLDMwYTEsMSwwLDAsMCwuMTcsMkgyNy45YTEsMSwwLDEsMCwwLTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwz''@;'; put 'put ''NCwxOCwxNiwxNiwwLDAsMCwxOCwyWm02LjUsMjUuOTJIMTEuNzRhMS4yNSwxLjI1LDAsMCwxLS4yMi0yLjQ4Yy4xNSwwLDEuNzItLjQ5LDEuNzItMy41NFYxOWgtMi41YTEsMSwwLDAsMSwwLTJoMi41VjExLjg4YTUuODUsNS44NSwwLDAsMSw1LjcyLTYsNS42Myw1LjYzLDAsMCwxLDQuMjEs''@;'; put 'put ''MS45NEExLjI1LDEuMjUsMCwxLDEsMjEuMyw5LjUxLDMuMDgsMy4wOCwwLDAsMCwxOSw4LjQyYTMuMzUsMy4zNSwwLDAsMC0zLjIyLDMuNDZWMTdoM2ExLDEsMCwwLDEsMCwyaC0zdjIuOUE3LjY1LDcuNjUsMCwwLDEsMTUsMjUuNDJIMjQuNWExLjI1LDEuMjUsMCwwLDEsMCwyLjVaIi8+Jyks''@;'; put 'put ''TC5DbHJTaGFwZVJ1cGVlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjgsOEgyNC4xNEE3LjUyLDcuNTIsMCwwLDAsMjIuNiw2SDI4YTEsMSwwLDAsMCwwLTJIMTBhMSwxLDAsMCwwLDAsMmg3LjU1YTUuNDIs''@;'; put 'put ''NS40MiwwLDAsMSw0LjIsMkgxMGExLDEsMCwwLDAsMCwySDIyLjc5QTUuNTQsNS41NCwwLDAsMSwyMywxMS41MSw1LjQ4LDUuNDgsMCwwLDEsMTcuNTUsMTdIMTEuMTRhMSwxLDAsMCwwLS43NSwxLjY2TDIyLjA2LDMyYTEsMSwwLDEsMCwxLjUtMS4zMkwxMy4zNSwxOWg0LjIxYTcuNTEsNy41''@;'; put 'put ''MSwwLDAsMCw3LjMtOUgyOGExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptNS44OCw5SDI2YTEsMSwwLDAsMSwwLDJIMjQu''@;'; put 'put ''MjZjMCwuMDYsMCwuMTIsMCwuMTlhNi4wOSw2LjA5LDAsMCwxLTYsNi4yaC0ybDYuODIsOC4wNmExLjI1LDEuMjUsMCwwLDEtMS45MSwxLjYyTDEyLjYzLDE4Ljk0YTEuMjUsMS4yNSwwLDAsMSwxLTIuMDZoNC43MWEzLjU5LDMuNTksMCwwLDAsMy40OC0zLjY5YzAtLjA3LDAtLjEzLDAtLjJo''@;'; put 'put ''LTlhMSwxLDAsMCwxLDAtMmg4LjMyYTMuNDEsMy40MSwwLDAsMC0yLjc4LTEuNUgxMi43NWExLjI1LDEuMjUsMCwwLDEsMC0yLjVIMjZhMSwxLDAsMCwxLDAsMkgyMi42OEE2LjIzLDYuMjMsMCwwLDEsMjMuODgsMTFaIi8+JyksTC5DbHJTaGFwZVdvbj0oMCxFLmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLDE4SDI4Ljc1bC41LTJIMzNhMSwxLDAsMCwwLDAtMkgyOS43NGwyLjE3LTguNzZBMSwxLDAsMCwwLDMwLDQuNzZMMjcuNjgsMTRIMjEuMzFMMTksNC43NmExLDEsMCwwLDAtMS45NCwwTDE0Ljc5LDE0''@;'; put 'put ''SDguNDJMNi4xMyw0Ljc2YTEsMSwwLDAsMC0xLjk0LjQ4TDYuMzYsMTRIM2ExLDEsMCwwLDAsMCwySDYuODVsLjUsMkgzYTEsMSwwLDAsMCwwLDJINy44NGwyLjc5LDExLjI0YTEsMSwwLDAsMCwxLjk0LDBMMTUuMzYsMjBoNS4zOGwyLjc5LDExLjI0YTEsMSwwLDAsMCwxLjk0LDBMMjguMjUs''@;'; put 'put ''MjBIMzNhMSwxLDAsMCwwLDAtMlptLTUuODItMi0uNSwySDIyLjNsLS41LTJaTTE4LDkuMTYsMTkuMjUsMTRoLTIuNFpNOC45MSwxNmg1LjM4bC0uNSwySDkuNDFaTTExLjYsMjYuODQsOS45MSwyMEgxMy4zWk0xNS44NSwxOGwuNS0yaDMuMzlsLjUsMlptOC42NCw4Ljg0TDIyLjgsMjBoMy4z''@;'; put 'put ''OVoiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIHBvaW50cz0iMTcuNzQgMTYgMTcuMjIgMTggMTguODUgMTggMTguMzIgMTYgMTcuNzQgMTYiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTIiIHBvaW50cz0iMTEuOTQgMTggMTQuNjMgMTggMTUuMTYgMTYgMTEuNDEgMTYgMTEuOTQgMTgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIHBvaW50cz0iMTMuMjkgMjMuMSAxNC4xIDIwIDEy''@;'; put 'put ''LjQ3IDIwIDEzLjI5IDIzLjEiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIHBvaW50cz0iMjEuNDQgMTggMjQuMTMgMTggMjQuNjYgMTYgMjAuOTEgMTYgMjEuNDQgMTgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIHBvaW50cz0iMjIuNzggMjMuMSAyMy42IDIwIDIxLjk3IDIwIDIyLjc4IDIzLjEiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTYiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0''@;'; put 'put ''LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTI5LDIwSDI2LjE5TDI0LDI4LjMyYTEuMjUsMS4yNSwwLDAsMS0yLjQyLDBMMTkuMzgsMjBIMTYuNjlsLTIuMTksOC4zMmExLjI1LDEuMjUsMCwwLDEtMi40MiwwTDkuODgsMjBIN2ExLDEsMCwwLDEsMC0ySDkuMzVsLS41My0ySDdhMSwxLDAsMCwxLDAt''@;'; put 'put ''Mkg4LjNsLTEtMy42OGExLjI1LDEuMjUsMCwwLDEsMi40Mi0uNjRMMTAuODgsMTRoNC44bDEuMTQtNC4zMmExLjI1LDEuMjUsMCwwLDEsMi40MiwwTDIwLjM4LDE0aDQuOGwxLjE0LTQuMzJhMS4yNSwxLjI1LDAsMCwxLDIuNDIuNjRsLTEsMy42OEgyOWExLDEsMCwwLDEsMCwySDI3LjI0bC0u''@;'; put 'put ''NTMsMkgyOWExLDEsMCwwLDEsMCwyWiIvPicpLEwuQ2xyU2hhcGVZZW49KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOS4zNCw0LjU1YTEsMSwwLDEsMC0xLjY3LTEuMUwxOCwxOC4yMyw4LjMzLDMuNDVhMSwx''@;'; put 'put ''LDAsMCwwLTEuNjcsMS4xTDE3LDIwLjM1VjIyLjJIMTJhLjguOCwwLDAsMCwwLDEuNmg1djIuNEgxMmEuOC44LDAsMCwwLDAsMS42aDVWMzJhMSwxLDAsMCwwLDIsMFYyNy44aDVhLjguOCwwLDAsMCwwLTEuNkgxOVYyMy44aDVhLjguOCwwLDAsMCwwLTEuNkgxOVYyMC4zNVoiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTguMDcsNy45MUwxOS43NCwyMEgyMmExLDEsMCwwLDEsMCwySDE5LjI1djJIMjJhMSwxLDAsMCwxLDAsMkgxOS4yNXYy''@;'; put 'put ''Ljc1YTEuMjUsMS4yNSwwLDAsMS0yLjUsMFYyNkgxNGExLDEsMCwxLDEsMC0yaDIuNzVWMjJIMTRhMSwxLDAsMSwxLDAtMmgyLjI2TDkuOTMsOS45MWExLjI1LDEuMjUsMCwxLDEsMi4xMi0xLjMzTDE4LDE4LjA4bDUuOTUtOS40OWExLjI1LDEuMjUsMCwxLDEsMi4xMiwxLjMzWiIvPicpLEwu''@;'; put 'put ''Q2xyU2hhcGVCaXRjb2luPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNC4xMSwxNi44OEE1LjQ5LDUuNDksMCwwLDAsMjEsN1Y0YTEsMSwwLDAsMC0yLDBWN0gxNlY0YTEsMSwwLDAsMC0yLDBWN0gxMWExLDEsMCwwLDAtMSwxVjI4YTEsMSwwLDAsMCwxLDFoM3YzYTEsMSwwLDAsMCwy''@;'; put 'put ''LDBWMjloM3YzYTEsMSwwLDAsMCwyLDBWMjloLjA4QTYuMDcsNi4wNywwLDAsMCwyNywyMi44MXYtLjYyQTYuMjUsNi4yNSwwLDAsMCwyNC4xMSwxNi44OFpNMTIsOWg4LjY5YTMuNTksMy41OSwwLDAsMSwzLjQzLDIuMzZBMy41MSwzLjUxLDAsMCwxLDIwLjc5LDE2SDEyWk0yNSwyMi44MUE0''@;'; put 'put ''LjA4LDQuMDgsMCwwLDEsMjEuMDYsMjdIMTJWMThoOS4wNkE0LjA4LDQuMDgsMCwwLDEsMjUsMjIuMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMS4xOCwxOC40N0gxNC41djZoNi42OGEyLjcsMi43LDAs''@;'; put 'put ''MCwwLDIuNjMtMi43N3YtLjQ4QTIuNzEsMi43MSwwLDAsMCwyMS4xOCwxOC40N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMsMTMuNzVhMi4yNCwyLjI0LDAsMCwwLTIuMjMtMi4yNUgxNC41VjE2aDYuM0EyLjIy''@;'; put 'put ''LDIuMjIsMCwwLDAsMjMsMTMuNzVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptOC4zMSwxOS43M0E1LjIyLDUuMjIsMCwwLDEsMjEuMTgsMjdI''@;'; put 'put ''MjF2MS45YTEsMSwwLDAsMS0yLDBWMjdIMTd2MS45YTEsMSwwLDAsMS0yLDBWMjdIMTMuMjVBMS4yNSwxLjI1LDAsMCwxLDEyLDI1Ljc1VjE3LjIzaDB2LTdBMS4yNSwxLjI1LDAsMCwxLDEzLjI1LDlIMTVWNy4wN2ExLDEsMCwwLDEsMiwwVjloMlY3LjA3YTEsMSwwLDAsMSwyLDBWOWE0Ljcy''@;'; put 'put ''LDQuNzIsMCwwLDEsMy4yLDgsNS4zMSw1LjMxLDAsMCwxLDIuMTEsNC4yNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksTC5DbHJTaGFwZUNvaW5CYWc9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIxLjYsMjlhMSwxLDAsMCwwLTEtMWgtNmExLDEs''@;'; put 'put ''MCwwLDAsMCwyaDZBMSwxLDAsMCwwLDIxLjYsMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjIuNTQsMjRoLTZhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMiIgLz48cGF0aCBkPSJNMjIsMzJIMTZhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzIuNywzMmgtN2ExLDEsMCwwLDAsMCwyaDdhMSwxLDAsMCwwLDAtMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMy43LDI4aC03YTEsMSwwLDAsMCwwLDJoN2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMzLjc0LDI2YTI4LDI4LDAs''@;'; put 'put ''MCwwLTIuODItMTAuMTJBMjAuMjQsMjAuMjQsMCwwLDAsMjQuNiw4LjcxTDI3LDMuNDJhMSwxLDAsMCwwLS4wNy0xQTEsMSwwLDAsMCwyNi4xMywySDkuOGExLDEsMCwwLDAtLjkxLDEuNDJsMi40NSw1LjMxYTIwLjMzLDIwLjMzLDAsMCwwLTYuMjgsNy4xNWMtMi4xNSw0LTIuODIsOC44OS0z''@;'; put 'put ''LDEyLjI4YTMuNiwzLjYsMCwwLDAsMSwyLjcxQTMuNzksMy43OSwwLDAsMCw1LjgsMzEuOTRIMTJWMzBINS43MmExLjY4LDEuNjgsMCwwLDEtMS4yMS0uNTIsMS42MiwxLjYyLDAsMCwxLS40NS0xLjIzYy4xNC0yLjYxLjY5LTcuNTgsMi43Ni0xMS40NUExOCwxOCwwLDAsMSwxMy4wOCwxMGgx''@;'; put 'put ''YTMwLjgxLDMwLjgxLDAsMCwwLTEuODcsMi45MiwyMi43OCwyMi43OCwwLDAsMC0xLjQ3LDMuMzRsMS4zNy45MmEyNCwyNCwwLDAsMSwxLjQ5LTMuNDdBMjkuMSwyOS4xLDAsMCwxLDE2LjA1LDEwaDFhMjEuNDUsMjEuNDUsMCwwLDEsMS40MSw1LDIyLjU0LDIyLjU0LDAsMCwxLC4zMiwzLjg2''@;'; put 'put ''bDEuNTgtMS4xMWEyNC4xNSwyNC4xNSwwLDAsMC0uMzItM0EyNC44MiwyNC44MiwwLDAsMCwxOC43NiwxMGguNzhsLjkxLTJIMTMuMjFMMTEuMzYsNEgyNC41N2wtMi41LDUuNDdhOS45Myw5LjkzLDAsMCwxLDEuMjMuNzgsMTguNjMsMTguNjMsMCwwLDEsNS44Niw2LjU3QTI2LjU5LDI2LjU5''@;'; put 'put ''LDAsMCwxLDMxLjczLDI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgPHBhdGggZD0iTTI0Ljg5LDI2aDcuODZjLS42Ni04LjcxLTQuNDEtMTQuMTItOS4yMi0xNy4zMkwyNS43MiwzLjlhMSwxLDAsMCwwLS45MS0xLjRIMTEuMWExLDEsMCww''@;'; put 'put ''LDAtLjkxLDEuNGwxLjIsMi42SDIxLjUxbC0uOSwySDE4Ljc2QTI0LjksMjQuOSwwLDAsMSwyMCwxMy4xOWEyNC40OSwyNC40OSwwLDAsMSwuMzIsM2wtMS41OCwxLjExYTIyLjU0LDIyLjU0LDAsMCwwLS4zMi0zLjg2QTIxLjc0LDIxLjc0LDAsMCwwLDE3LDguNWgtMWEyOC4yMiwyOC4yMiww''@;'; put 'put ''LDAsMC0yLjQ4LDMuNywyMy45MSwyMy45MSwwLDAsMC0xLjQ5LDMuNDZsLTEuMzctLjkxYTIyLjc4LDIyLjc4LDAsMCwxLDEuNDctMy4zNEEzMC44MSwzMC44MSwwLDAsMSwxNC4wNSw4LjVIMTIuM2wuMDguMTdDNy4wOCwxMi4yLDMuMDUsMTguNCwzLjA1LDI4Ljc1QTEuNjUsMS42NSwwLDAs''@;'; put 'put ''MCw0LjYxLDMwLjVoOEEyLjY3LDIuNjcsMCwwLDEsMTQuMjEsMjZhMi42NywyLjY3LDAsMCwxLS4zNy0xLjM0LDIuNywyLjcsMCwwLDEsMi43LTIuN2g2YTIuNywyLjcsMCwwLDEsMi43LDIuN0EyLjYzLDIuNjMsMCwwLDEsMjQuODksMjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMS42LDI4LjVhMSwxLDAsMCwwLTEtMWgtNmExLDEsMCwwLDAsMCwyaDZBMSwxLDAsMCwwLDIxLjYsMjguNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTIyLjU0LDIzLjVoLTZhMSwxLDAsMCwwLDAs''@;'; put 'put ''Mmg2YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMiwzMS41SDE2YTEsMSwwLDAsMCwwLDJoNmExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz48cGF0aCBkPSJN''@;'; put 'put ''MzIuNywzMS41aC03YTEsMSwwLDAsMCwwLDJoN2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgLz48cGF0aCBkPSJNMzMuNywyNy41aC03YTEsMSwwLDAsMCwwLDJoN2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtNiIgLz4nKSxMLkNsclNoYXBlUGVzbz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEsMTMuMkgyNy44OUE2LjgxLDYuODEsMCwwLDAsMjgsMTJhNy44NSw3Ljg1LDAsMCwwLS4xLTEuMTloMi45M2EuOC44LDAsMCwwLDAtMS42SDI3LjQ2QTguNDQsOC40NCwwLDAs''@;'; put 'put ''MCwxOS41Nyw0SDExYTEsMSwwLDAsMC0xLDFWOS4ySDdhLjguOCwwLDAsMCwwLDEuNmgzdjIuNEg3YS44LjgsMCwwLDAsMCwxLjZoM1YzMWExLDEsMCwwLDAsMiwwVjIwaDcuNTdhOC40NSw4LjQ1LDAsMCwwLDcuODktNS4ySDMxYS44LjgsMCwwLDAsMC0xLjZaTTEyLDZoNy41N2E2LjUxLDYu''@;'; put 'put ''NTEsMCwwLDEsNS42OCwzLjJIMTJabTAsNC44SDI1Ljg3YTUuNiw1LjYsMCwwLDEsMCwyLjRIMTJaTTE5LjU3LDE4SDEyVjE0LjhIMjUuMjVBNi41MSw2LjUxLDAsMCwxLDE5LjU3LDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE0''@;'; put 'put ''LjE4LDEzLjhWMTZoOS40NWE1LjI2LDUuMjYsMCwwLDAsLjA4LS44OSw0LjcyLDQuNzIsMCwwLDAtLjItMS4zMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE0LjE4LDE5LjdoNS4xOWE0LjI4LDQuMjgsMCwwLDAsMy41LTEuOUgxNC4xOFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTE5LjM3LDEwLjUxSDE0LjE4VjEyaDguMzdBNC4yMSw0LjIxLDAsMCwwLDE5LjM3LDEwLjUxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz48cGF0aCBkPSJNMTcuNjcs''@;'; put 'put ''MmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxNy42NywyWm0xMC41LDE1LjhIMjUuN2E2Ljg3LDYuODcsMCwwLDEtNi4zMyw0LjRIMTQuMTh2Ni41NGExLjI1LDEuMjUsMCwxLDEtMi41LDBWMTcuOEg4Ljc2YS45LjksMCwxLDEsMC0xLjhoMi45MlYxMy44SDguNzZhLjkuOSwwLDEs''@;'; put 'put ''MSwwLTEuOGgyLjkyVjkuMjZBMS4yNSwxLjI1LDAsMCwxLDEyLjkzLDhoNi40NGE2Ljg0LDYuODQsMCwwLDEsNi4xNSw0aDIuNjVhLjkuOSwwLDAsMSwwLDEuOEgyNi4wOWE2LjkxLDYuOTEsMCwwLDEsLjEyLDEuMyw2LjgsNi44LDAsMCwxLS4wNi45aDJhLjkuOSwwLDAsMSwwLDEuOFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+JyksTC5DbHJTaGFwZVJ1YmxlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMC41NywyMEE4LjIzLDguMjMsMCwwLDAsMjksMTJhOC4yMyw4LjIzLDAsMCwwLTguNDMtOEgxMmExLDEsMCwwLDAtMSwxVjE4SDlhMSwx''@;'; put 'put ''LDAsMCwwLDAsMmgydjJIOWExLDEsMCwwLDAsMCwyaDJ2N2ExLDEsMCwwLDAsMiwwVjI0aDlhMSwxLDAsMCwwLDAtMkgxM1YyMFpNMTMsNmg3LjU3QTYuMjQsNi4yNCwwLDAsMSwyNywxMmE2LjIzLDYuMjMsMCwwLDEtNi40Myw2SDEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIwLjc1LDkuMjVIMTV2OC44MWg1Ljc5YTQuNjYsNC42NiwwLDAsMCw0Ljg2LTQuNEE0LjY1LDQuNjUsMCwwLDAsMjAuNzUsOS4yNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDJBMTYsMTYs''@;'; put 'put ''MCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMi43NSwxOC41NkgxNVYyMmg4LjI5YTEsMSwwLDAsMSwwLDJIMTV2NWExLjI1LDEuMjUsMCwwLDEtMi41LDBWMjRIMTEuMjVhMSwxLDAsMCwxLDAtMmgxLjIxVjIwLjU2SDExLjI1YTEuMjUsMS4yNSwwLDAsMSwwLTIuNWgxLjIxVjhhMS4y''@;'; put 'put ''NSwxLjI1LDAsMCwxLDEuMjUtMS4yNWg3YTcuMTQsNy4xNCwwLDAsMSw3LjM2LDYuOUE3LjE1LDcuMTUsMCwwLDEsMjAuNzUsMjAuNTZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVFbXBsb3llZUdyb3VwPSgwLEUuY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGQ9Ik0xOC40MiwxNi4zMWE1LjcsNS43LDAsMSwxLDUuNzYtNS43QTUuNzQsNS43NCwwLDAsMSwxOC40MiwxNi4zMVptMC05LjRhMy43LDMuNywwLDEsMCwzLjc2LDMuN0EzLjc0LDMuNzQsMCwwLDAsMTguNDIsNi45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xOC40MiwxNi4zMWE1LjcsNS43LDAsMSwxLDUuNzYtNS43QTUuNzQsNS43NCwwLDAsMSwxOC40MiwxNi4zMVptMC05LjRhMy43LDMuNywwLDEsMCwzLjc2LDMuN0EzLjc0LDMuNzQsMCwwLDAsMTguNDIsNi45MVoiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMS45MSwxNy42NWEyMC42LDIwLjYsMCwwLDAtMTMsMkExLjc3LDEuNzcsMCwwLDAsOCwyMS4yNXYzLjU2YTEsMSwwLDAsMCwyLDBWMjEuMzhhMTguOTIsMTguOTIsMCwwLDEsMTItMS42OFoiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0zMywyMkgyNi4zVjIwLjUyYTEsMSwwLDAsMC0yLDBWMjJIMTdhMSwxLDAsMCwwLTEsMVYzM2ExLDEsMCwwLDAsMSwxSDMzYTEsMSwwLDAsMCwxLTFWMjNBMSwxLDAsMCwwLDMzLDIyWk0zMiwzMkgxOFYyNGg2LjN2''@;'; put 'put ''LjQxYTEsMSwwLDAsMCwyLDBWMjRIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cmVjdCB4PSIyMS44MSIgeT0iMjcuNDIiIHdpZHRoPSI1Ljk2IiBoZWlnaHQ9IjEuNCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTUiLz5cbiAgPHBhdGggZD0iTTEwLjg0LDEyLjI0YTE4LDE4LDAsMCwwLTcuOTUsMkExLjY3LDEuNjcsMCwwLDAsMiwxNS43MXYzLjFhMSwxLDAsMCwwLDIsMHYtMi45YTE2LDE2LDAsMCwxLDcuNTgtMS42N0E3LjI4LDcuMjgsMCwwLDEsMTAuODQsMTIuMjRaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPlxuICA8cGF0aCBkPSJNMzMuMTEsMTQuMjNhMTcuOCwxNy44LDAsMCwwLTcuMTItMiw3LjQ2LDcuNDYsMCwwLDEtLjczLDJBMTUuODksMTUuODksMCwwLDEsMzIsMTUuOTF2Mi45YTEsMSwwLDEsMCwyLDB2LTMuMUExLjY3LDEuNjcsMCwwLDAs''@;'; put 'put ''MzMuMTEsMTQuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuICA8cGF0aCBkPSJNMTAuNjYsMTAuNjFjMC0uMjMsMC0uNDUsMC0uNjdhMy4wNywzLjA3LDAsMCwxLC41NC02LjExLDMuMTUsMy4xNSwwLDAsMSwyLjIuODksOC4xNiw4LjE2LDAsMCwx''@;'; put 'put ''LDEuNy0xLjA4LDUuMTMsNS4xMywwLDAsMC05LDMuMjcsNS4xLDUuMSwwLDAsMCw0LjcsNUE3LjQyLDcuNDIsMCwwLDEsMTAuNjYsMTAuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIvPlxuICA8cGF0aCBkPSJNMjQuNzcsMS44M2E1LjE3LDUuMTcsMCww''@;'; put 'put ''LDAtMy42OSwxLjU1LDcuODcsNy44NywwLDAsMSwxLjksMSwzLjE0LDMuMTQsMCwwLDEsNC45MywyLjUyLDMuMDksMy4wOSwwLDAsMS0xLjc5LDIuNzcsNy4xNCw3LjE0LDAsMCwxLC4wNi45Myw3Ljg4LDcuODgsMCwwLDEtLjEsMS4yLDUuMSw1LjEsMCwwLDAsMy44My00LjlBNS4xMiw1LjEy''@;'; put 'put ''LDAsMCwwLDI0Ljc3LDEuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIvPlxuICBcbiAgPGVsbGlwc2UgY3g9IjE4IiBjeT0iMTEuMjgiIHJ4PSI0Ljc2IiByeT0iNC43IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxw''@;'; put 'put ''YXRoIGQ9Ik0xMC43OCwxMS43NWMuMTYsMCwuMzIsMCwuNDgsMCwwLS4xNSwwLS4yOCwwLS40M2E2LjcsNi43LDAsMCwxLDMuNzUtNiw0LjYyLDQuNjIsMCwxLDAtNC4yMSw2LjQ2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjQuNzYs''@;'; put 'put ''MTEuMjhjMCwuMTUsMCwuMjgsMCwuNDMuMTYsMCwuMzIsMCwuNDgsMEE0LjU4LDQuNTgsMCwxLDAsMjEsNS4yOSw2LjcsNi43LDAsMCwxLDI0Ljc2LDExLjI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMjIuMjksMTYuNDVhMjEuNDUs''@;'; put 'put ''MjEuNDUsMCwwLDEsNS43MSwyLDIuNzEsMi43MSwwLDAsMSwuNjguNTNIMzRWMTUuNTZhLjcyLjcyLDAsMCwwLS4zOC0uNjQsMTgsMTgsMCwwLDAtOC40LTIuMDVsLS42NiwwQTYuNjYsNi42NiwwLDAsMSwyMi4yOSwxNi40NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTQiLz5cbiAgPHBhdGggZD0iTTYuNTMsMjAuOTJBMi43NiwyLjc2LDAsMCwxLDgsMTguNDdhMjEuNDUsMjEuNDUsMCwwLDEsNS43MS0yLDYuNjYsNi42NiwwLDAsMS0yLjI3LTMuNTVsLS42NiwwYTE4LDE4LDAsMCwwLTguNCwyLjA1LjcyLjcyLDAsMCwwLS4zOC42NFYyMkg2LjUzWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIvPlxuICA8cmVjdCB4PSIyMS40NiIgeT0iMjYuNjkiIHdpZHRoPSI1Ljk2IiBoZWlnaHQ9IjEuNCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNiIvPlxuICA8cGF0aCBkPSJNMzIuODEsMjEuMjZIMjUuOTR2''@;'; put 'put ''LTFhMSwxLDAsMCwwLTIsMHYxSDIyVjE4LjQzQTIwLjE3LDIwLjE3LDAsMCwwLDE4LDE4YTE5LjI3LDE5LjI3LDAsMCwwLTkuMDYsMi4yMi43Ni43NiwwLDAsMC0uNDEuNjh2NS42MWg3LjExdjYuMDlhMSwxLDAsMCwwLDEsMUgzMi44MWExLDEsMCwwLDAsMS0xVjIyLjI2QTEsMSwwLDAsMCwz''@;'; put 'put ''Mi44MSwyMS4yNlptLTEsMTAuMzZIMTcuNjRWMjMuMjZoNi4zdi45MWExLDEsMCwwLDAsMiwwdi0uOTFoNS44N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTciLz4nKSxMLkNsclNoYXBlRW1wbG95ZWU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE2LjQzLDE2''@;'; put 'put ''LjY5YTcsNywwLDEsMSw3LTdBNyw3LDAsMCwxLDE2LjQzLDE2LjY5Wm0wLTExLjkyYTUsNSwwLDEsMCw1LDVBNSw1LDAsMCwwLDE2LjQzLDQuNzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMjIsMTcuOUEyNS40MSwyNS40MSww''@;'; put 'put ''LDAsMCw1Ljg4LDE5LjU3YTQuMDYsNC4wNiwwLDAsMC0yLjMxLDMuNjhWMjkuMmExLDEsMCwxLDAsMiwwVjIzLjI1YTIsMiwwLDAsMSwxLjE2LTEuODYsMjIuOTEsMjIuOTEsMCwwLDEsOS43LTIuMTEsMjMuNTgsMjMuNTgsMCwwLDEsNS41Ny42NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxyZWN0IHg9IjIyLjE0IiB5PSIyNy40MSIgd2lkdGg9IjYuMTQiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMzMuMTcsMjEuNDdIMjh2Mmg0LjE3djguMzdIMThW''@;'; put 'put ''MjMuNDdoNi4zdi40MmExLDEsMCwwLDAsMiwwVjIwYTEsMSwwLDAsMC0yLDB2MS40N0gxN2ExLDEsMCwwLDAtMSwxVjMyLjg0YTEsMSwwLDAsMCwxLDFIMzMuMTdhMSwxLDAsMCwwLDEtMVYyMi40N0ExLDEsMCwwLDAsMzMuMTcsMjEuNDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtNCIvPlxuICBcbiAgPGNpcmNsZSBjeD0iMTYuODYiIGN5PSI5LjczIiByPSI2LjQ2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxyZWN0IHg9IjIxIiB5PSIyOCIgd2lkdGg9IjciIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0xNSwzMHYzYTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEtMVYyM2ExLDEsMCwwLDAtMS0xSDI2VjIwLjUzYTEsMSwwLDAsMC0yLDBWMjJIMjJWMTguNDJBMzIuMTIsMzIuMTIsMCwwLDAsMTYuODYsMThhMjYsMjYsMCww''@;'; put 'put ''LDAtMTEsMi4zOSwzLjI4LDMuMjgsMCwwLDAtMS44OCwzVjMwWm0xNywySDE3VjI0aDd2LjQyYTEsMSwwLDAsMCwyLDBWMjRoNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz4nKSxMLkNsclNoYXBlRmFjdG9yeT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJN''@;'; put 'put ''MzMuNDcsNy4zN2ExLDEsMCwwLDAtMSwuMDZMMjMsMTMuNzdWOC4yNmExLDEsMCwwLDAtMS42NC0uNzdMMTMuNDgsMTRIMTBWNC42MmExLDEsMCwwLDAtLjc4LTFsLTQtLjlhMSwxLDAsMCwwLS44NS4yQTEsMSwwLDAsMCw0LDMuNzNWMTRIM2ExLDEsMCwwLDAtMSwxVjMxYTEsMSwwLDAsMCwx''@;'; put 'put ''LDFIMzNhMSwxLDAsMCwwLDEtMVY4LjI2QTEsMSwwLDAsMCwzMy40Nyw3LjM3Wk02LDVsMiwuNDRWMTRINlpNMzIsMzBINFYxNmg5LjgzYTEsMSwwLDAsMCwuNjQtLjIzTDIxLDEwLjM3djUuMjhhMSwxLDAsMCwwLDEuNTYuODNMMzIsMTAuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cmVjdCB4PSI2IiB5PSIxNy45OSIgd2lkdGg9IjgiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHJlY3QgeD0iNiIgeT0iMjEuOTkiIHdpZHRoPSI4IiBoZWlnaHQ9IjIiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxyZWN0IHg9IjYiIHk9IjI1Ljk5IiB3aWR0aD0iOCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cmVjdCB4PSIxOSIgeT0iMTguOTkiIHdpZHRoPSIyIiBo''@;'; put 'put ''ZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxyZWN0IHg9IjE5IiB5PSIyNC45OSIgd2lkdGg9IjIiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cbiAgPHJlY3QgeD0iMjMiIHk9''@;'; put 'put ''IjE4Ljk5IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuICA8cmVjdCB4PSIyMyIgeT0iMjQuOTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+''@;'; put 'put ''XG4gIDxyZWN0IHg9IjI3IiB5PSIxOC45OSIgd2lkdGg9IjIiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiLz5cbiAgPHJlY3QgeD0iMjciIHk9IjI0Ljk5IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMTAiLz5cbiAgXG4gIDxwYXRoIGQ9Ik0zMi40NSw4LjQ0LDIyLDE1LjNWOS41MWExLDEsMCwwLDAtMS42My0uNzhMMTQuMDcsMTRIMTBWNC4wNkw0LDIuNzFWMTRIMlYzMWExLDEsMCwwLDAsMSwxSDMzYTEsMSwwLDAsMCwxLTFWOS4yN0ExLDEsMCwwLDAsMzIuNDUs''@;'; put 'put ''OC40NFpNMTQsMjlINlYyN2g4Wm0wLTRINlYyM2g4Wm0wLTRINlYxOWg4Wm04LDhIMjBWMjZoMlptMC02SDIwVjIwaDJabTQsNkgyNFYyNmgyWm0wLTZIMjRWMjBoMlptNCw2SDI4VjI2aDJabTAtNkgyOFYyMGgyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicp''@;'; put 'put ''LEwuQ29tbWVyY2VTaGFwZXM9e2NhbGN1bGF0b3I6TC5DbHJTaGFwZUNhbGN1bGF0b3IsInBpZ2d5LWJhbmsiOkwuQ2xyU2hhcGVQaWdneUJhbmssInNob3BwaW5nLWJhZyI6TC5DbHJTaGFwZVNob3BwaW5nQmFnLCJzaG9wcGluZy1jYXJ0IjpMLkNsclNoYXBlU2hvcHBpbmdDYXJ0LHdhbGxl''@;'; put 'put ''dDpMLkNsclNoYXBlV2FsbGV0LHN0b3JlOkwuQ2xyU2hhcGVTdG9yZSxldXJvOkwuQ2xyU2hhcGVFdXJvLGRvbGxhcjpMLkNsclNoYXBlRG9sbGFyLHBlc286TC5DbHJTaGFwZVBlc28sImNyZWRpdC1jYXJkIjpMLkNsclNoYXBlQ3JlZGl0Q2FyZCxiYW5rOkwuQ2xyU2hhcGVCYW5rLCJkb2xs''@;'; put 'put ''YXItYmlsbCI6TC5DbHJTaGFwZURvbGxhckJpbGwsImUtY2hlY2siOkwuQ2xyU2hhcGVFQ2hlY2sscG91bmQ6TC5DbHJTaGFwZVBvdW5kLHJ1cGVlOkwuQ2xyU2hhcGVSdXBlZSx3b246TC5DbHJTaGFwZVdvbix5ZW46TC5DbHJTaGFwZVllbixiaXRjb2luOkwuQ2xyU2hhcGVCaXRjb2luLHJ1''@;'; put 'put ''YmxlOkwuQ2xyU2hhcGVSdWJsZSwiY29pbi1iYWciOkwuQ2xyU2hhcGVDb2luQmFnLCJlbXBsb3llZS1ncm91cCI6TC5DbHJTaGFwZUVtcGxveWVlR3JvdXAsZW1wbG95ZWU6TC5DbHJTaGFwZUVtcGxveWVlLGZhY3Rvcnk6TC5DbHJTaGFwZUZhY3Rvcnl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShMLkNvbW1lcmNlU2hhcGVzLCJzYXZpbmdzIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuQ29tbWVyY2VTaGFwZXNbInBpZ2d5LWJhbmsiXSkpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0''@;'; put 'put ''eUljb25zLmFkZChMLkNvbW1lcmNlU2hhcGVzKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBlcy50cyI6ZnVuY3Rpb24oSmUsTCxtZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShMLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMLkNvcmVTaGFw''@;'; put 'put ''ZXM9TC5DbHJTaGFwZUFycm93PUwuQ2xyU2hhcGVTdGVwRm9yd2FyZDI9TC5DbHJTaGFwZUV5ZUhpZGU9TC5DbHJTaGFwZUV5ZT1MLkNsclNoYXBlRXZlbnQ9TC5DbHJTaGFwZUNhbGVuZGFyPUwuQ2xyU2hhcGVBbmdsZURvdWJsZT1MLkNsclNoYXBlVmlld0NvbHVtbnM9TC5DbHJTaGFwZVNl''@;'; put 'put ''YXJjaD1MLkNsclNoYXBlVm1CdWc9TC5DbHJTaGFwZUZpbHRlckdyaWRDaXJjbGU9TC5DbHJTaGFwZUZpbHRlckdyaWQ9TC5DbHJTaGFwZUVsbGlwc2lzVmVydGljYWw9TC5DbHJTaGFwZUVsbGlwc2lzSG9yaXpvbnRhbD1MLkNsclNoYXBlQ2xvdWQ9TC5DbHJTaGFwZUltYWdlPUwuQ2xyU2hh''@;'; put 'put ''cGVCZWxsPUwuQ2xyU2hhcGVGb2xkZXJPcGVuPUwuQ2xyU2hhcGVGb2xkZXI9TC5DbHJTaGFwZUFuZ2xlPUwuQ2xyU2hhcGVVc2VyPUwuQ2xyU2hhcGVCYXJzPUwuQ2xyU2hhcGVIZWxwSW5mbz1MLkNsclNoYXBlV2FybmluZ1N0YW5kYXJkPUwuQ2xyU2hhcGVFcnJvclN0YW5kYXJkPUwuQ2xy''@;'; put 'put ''U2hhcGVTdWNjZXNzU3RhbmRhcmQ9TC5DbHJTaGFwZUluZm9TdGFuZGFyZD1MLkNsclNoYXBlSW5mb0NpcmNsZT1MLkNsclNoYXBlQ2hlY2tDaXJjbGU9TC5DbHJTaGFwZUV4Y2xhbWF0aW9uQ2lyY2xlPUwuQ2xyU2hhcGVFeGNsYW1hdGlvblRyaWFuZ2xlPUwuQ2xyU2hhcGVUaW1lcz1MLkNs''@;'; put 'put ''clNoYXBlQ2hlY2s9TC5DbHJTaGFwZUNvZz1MLkNsclNoYXBlSG9tZT1MLkNsclNoYXBlVW5rbm93blN0YXR1cz12b2lkIDA7dmFyIEI9bWUoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIiksRT1tZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMv''@;'; put 'put ''c3ZnLXRhZy1nZW5lcmF0b3IudHMiKTtMLkNsclNoYXBlVW5rbm93blN0YXR1cz0oMCxFLmNsckljb25TVkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTcuNTgiIGN5PSIyNi4yMyIgcj0iMS40Ii8+XG4gICAgICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNC43LDEzYTUuMTgsNS4xOCwwLDAsMC0yLjE2LTMuNTYsNy4yNiw3LjI2LDAsMCwwLTUuNzEtMS4wOUExMS4zNCwxMS4zNCwwLDAsMCwxMiwxMC40NCwxLDEsMCwxLDAsMTMuMjYsMTJhOS4zMiw5''@;'; put 'put ''LjMyLDAsMCwxLDMuOTQtMS43Miw1LjI5LDUuMjksMCwwLDEsNC4xNi43NCwzLjIxLDMuMjEsMCwwLDEsMS4zNSwyLjE5Yy4zMywyLjY5LTMuMTksMy43NS01LjMyLDQuMTRsLS44Mi4xNXY0LjM2YTEsMSwwLDAsMCwyLDBWMTkuMTdDMjQuNjEsMTcuNzksMjQuODgsMTQuNDEsMjQuNywxM1oi''@;'; put 'put ''Lz4nKSxMLkNsclNoYXBlSG9tZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLjcxLDE3LjI5bC0xNS0xNWExLDEsMCwwLDAtMS40MSwwbC0xNSwxNWExLDEsMCwwLDAsMS40MSwxLjQxTDE4LDQuNDEsMzIu''@;'; put 'put ''MjksMTguNzFhMSwxLDAsMCwwLDEuNDEtMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI4LDMyaC01VjIySDEzVjMySDhWMThMNiwyMFYzMmEyLDIsMCwwLDAsMiwyaDdWMjRoNlYzNGg3YTIsMiww''@;'; put 'put ''LDAsMCwyLTJWMTkuNzZsLTItMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzMsMTlhMSwxLDAsMCwxLS43MS0uMjlMMTgsNC40MSwzLjcxLDE4LjcxYTEsMSwwLDAsMS0xLjQxLTEuNDFsMTUtMTVhMSwxLDAs''@;'; put 'put ''MCwxLDEuNDEsMGwxNSwxNUExLDEsMCwwLDEsMzMsMTlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTE4LDcuNzksNiwxOS44M1YzMmEyLDIsMCwwLDAsMiwyaDdWMjRoNlYzNGg3YTIsMiwwLDAsMCwyLTJWMTku''@;'; put 'put ''NzZaIi8+JyksTC5DbHJTaGFwZUNvZz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LjEsMTFjLTMuOSwwLTcsMy4xLTcsN3MzLjEsNyw3LDdjMy45LDAsNy0zLjEsNy03UzIyLDExLDE4LjEsMTF6IE0xOC4x''@;'; put 'put ''LDIzYy0yLjgsMC01LTIuMi01LTVzMi4yLTUsNS01YzIuOCwwLDUsMi4yLDUsNVMyMC45LDIzLDE4LjEsMjN6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMi44LDE0LjdMMzAsMTMuOGwtMC42LTEuNWwx''@;'; put 'put ''LjQtMi42YzAuMy0wLjYsMC4yLTEuNC0wLjMtMS45bC0yLjQtMi40Yy0wLjUtMC41LTEuMy0wLjYtMS45LTAuM2wtMi42LDEuNGwtMS41LTAuNmwtMC45LTIuOEMyMSwyLjUsMjAuNCwyLDE5LjcsMmgtMy40Yy0wLjcsMC0xLjMsMC41LTEuNCwxLjJMMTQsNmMtMC42LDAuMS0xLjEsMC4zLTEu''@;'; put 'put ''NiwwLjZMOS44LDUuMkM5LjIsNC45LDguNCw1LDcuOSw1LjVMNS41LDcuOUM1LDguNCw0LjksOS4yLDUuMiw5LjhsMS4zLDIuNWMtMC4yLDAuNS0wLjQsMS4xLTAuNiwxLjZsLTIuOCwwLjlDMi41LDE1LDIsMTUuNiwyLDE2LjN2My40YzAsMC43LDAuNSwxLjMsMS4yLDEuNUw2LDIyLjFsMC42''@;'; put 'put ''LDEuNWwtMS40LDIuNmMtMC4zLDAuNi0wLjIsMS40LDAuMywxLjlsMi40LDIuNGMwLjUsMC41LDEuMywwLjYsMS45LDAuM2wyLjYtMS40bDEuNSwwLjZsMC45LDIuOWMwLjIsMC42LDAuOCwxLjEsMS41LDEuMWgzLjRjMC43LDAsMS4zLTAuNSwxLjUtMS4xbDAuOS0yLjlsMS41LTAuNmwyLjYs''@;'; put 'put ''MS40YzAuNiwwLjMsMS40LDAuMiwxLjktMC4zbDIuNC0yLjRjMC41LTAuNSwwLjYtMS4zLDAuMy0xLjlsLTEuNC0yLjZsMC42LTEuNWwyLjktMC45YzAuNi0wLjIsMS4xLTAuOCwxLjEtMS41di0zLjRDMzQsMTUuNiwzMy41LDE0LjksMzIuOCwxNC43eiBNMzIsMTkuNGwtMy42LDEuMUwyOC4z''@;'; put 'put ''LDIxYy0wLjMsMC43LTAuNiwxLjQtMC45LDIuMWwtMC4zLDAuNWwxLjgsMy4zbC0yLDJsLTMuMy0xLjhsLTAuNSwwLjNjLTAuNywwLjQtMS40LDAuNy0yLjEsMC45bC0wLjUsMC4xTDE5LjQsMzJoLTIuOGwtMS4xLTMuNkwxNSwyOC4zYy0wLjctMC4zLTEuNC0wLjYtMi4xLTAuOWwtMC41LTAu''@;'; put 'put ''M2wtMy4zLDEuOGwtMi0ybDEuOC0zLjNsLTAuMy0wLjVjLTAuNC0wLjctMC43LTEuNC0wLjktMi4xbC0wLjEtMC41TDQsMTkuNHYtMi44bDMuNC0xbDAuMi0wLjVjMC4yLTAuOCwwLjUtMS41LDAuOS0yLjJsMC4zLTAuNUw3LjEsOS4xbDItMmwzLjIsMS44bDAuNS0wLjNjMC43LTAuNCwxLjQt''@;'; put 'put ''MC43LDIuMi0wLjlsMC41LTAuMkwxNi42LDRoMi44bDEuMSwzLjVMMjEsNy43YzAuNywwLjIsMS40LDAuNSwyLjEsMC45bDAuNSwwLjNsMy4zLTEuOGwyLDJsLTEuOCwzLjNsMC4zLDAuNWMwLjQsMC43LDAuNywxLjQsMC45LDIuMWwwLjEsMC41bDMuNiwxLjFWMTkuNHoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMS4xLDE4YzAsMy45LDMuMSw3LDcsN2MzLjksMCw3LTMuMSw3LTdzLTMuMS03LTctN0MxNC4yLDExLDExLjEsMTQuMSwxMS4xLDE4eiBNMjMuMSwxOGMw''@;'; put 'put ''LDIuOC0yLjIsNS01LDVjLTIuOCwwLTUtMi4yLTUtNXMyLjItNSw1LTVDMjAuOSwxMywyMy4xLDE1LjIsMjMuMSwxOHoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMi44LDE0''@;'; put 'put ''LjdMMzAsMTMuOGwtMC4xLTAuM2MtMC44LDAtMS42LTAuMi0yLjQtMC40YzAuMywwLjYsMC42LDEuMywwLjgsMS45bDAuMSwwLjVsMy42LDEuMXYyLjhsLTMuNiwxLjFMMjguMywyMWMtMC4zLDAuNy0wLjYsMS40LTAuOSwyLjFsLTAuMywwLjVsMS44LDMuM2wtMiwybC0zLjMtMS44bC0wLjUs''@;'; put 'put ''MC4zYy0wLjcsMC40LTEuNCwwLjctMi4xLDAuOWwtMC41LDAuMUwxOS40LDMyaC0yLjhsLTEuMS0zLjZMMTUsMjguM2MtMC43LTAuMy0xLjQtMC42LTIuMS0wLjlsLTAuNS0wLjNsLTMuMywxLjhsLTItMmwxLjgtMy4zbC0wLjMtMC41Yy0wLjQtMC43LTAuNy0xLjQtMC45LTIuMWwtMC4xLTAu''@;'; put 'put ''NUw0LDE5LjR2LTIuOGwzLjQtMWwwLjItMC41YzAuMi0wLjgsMC41LTEuNSwwLjktMi4ybDAuMy0wLjVMNy4xLDkuMWwyLTJsMy4yLDEuOGwwLjUtMC4zYzAuNy0wLjQsMS40LTAuNywyLjItMC45bDAuNS0wLjJMMTYuNiw0aDIuOGwxLjEsMy41TDIxLDcuN2MwLjcsMC4yLDEuMywwLjUsMS45''@;'; put 'put ''LDAuOGMtMC4zLTAuOC0wLjQtMS42LTAuNC0yLjVsLTAuNC0wLjJsLTAuOS0yLjhDMjEsMi41LDIwLjQsMiwxOS43LDJoLTMuNGMtMC43LDAtMS4zLDAuNS0xLjQsMS4yTDE0LDZjLTAuNiwwLjEtMS4xLDAuMy0xLjYsMC42TDkuOCw1LjJDOS4yLDQuOSw4LjQsNSw3LjksNS41TDUuNSw3LjlD''@;'; put 'put ''NSw4LjQsNC45LDkuMiw1LjIsOS44bDEuMywyLjVjLTAuMiwwLjUtMC40LDEuMS0wLjYsMS42bC0yLjgsMC45QzIuNSwxNSwyLDE1LjYsMiwxNi4zdjMuNGMwLDAuNywwLjUsMS4zLDEuMiwxLjVMNiwyMi4xbDAuNiwxLjVsLTEuNCwyLjZjLTAuMywwLjYtMC4yLDEuNCwwLjMsMS45bDIuNCwy''@;'; put 'put ''LjRjMC41LDAuNSwxLjMsMC42LDEuOSwwLjNsMi42LTEuNGwxLjUsMC42bDAuOSwyLjljMC4yLDAuNiwwLjgsMS4xLDEuNSwxLjFoMy40YzAuNywwLDEuMy0wLjUsMS41LTEuMWwwLjktMi45bDEuNS0wLjZsMi42LDEuNGMwLjYsMC4zLDEuNCwwLjIsMS45LTAuM2wyLjQtMi40YzAuNS0wLjUs''@;'; put 'put ''MC42LTEuMywwLjMtMS45bC0xLjQtMi42bDAuNi0xLjVsMi45LTAuOWMwLjYtMC4yLDEuMS0wLjgsMS4xLTEuNXYtMy40QzM0LDE1LjYsMzMuNSwxNC45LDMyLjgsMTQuN3oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNywxNS40aC01LjN2MC4xbDMu''@;'; put 'put ''NiwxLjF2Mi44bC0zLjYsMS4xTDI4LjMsMjFjLTAuMywwLjctMC42LDEuNC0wLjksMi4xbC0wLjMsMC41bDEuOCwzLjNsLTIsMmwtMy4zLTEuOGwtMC41LDAuM2MtMC43LDAuNC0xLjQsMC43LTIuMSwwLjlsLTAuNSwwLjFMMTkuNCwzMmgtMi44bC0xLjEtMy42TDE1LDI4LjNjLTAuNy0wLjMt''@;'; put 'put ''MS40LTAuNi0yLjEtMC45bC0wLjUtMC4zbC0zLjMsMS44bC0yLTJsMS44LTMuM2wtMC4zLTAuNWMtMC40LTAuNy0wLjctMS40LTAuOS0yLjFsLTAuMS0wLjVMNCwxOS40di0yLjhsMy40LTFsMC4yLTAuNWMwLjItMC44LDAuNS0xLjUsMC45LTIuMmwwLjMtMC41TDcuMSw5LjFsMi0ybDMuMiwx''@;'; put 'put ''LjhsMC41LTAuM2MwLjctMC40LDEuNC0wLjcsMi4yLTAuOWwwLjUtMC4yTDE2LjYsNGgyLjhsMS4xLDMuNGwxLjQtMi4zbC0wLjYtMkMyMSwyLjQsMjAuNCwyLDE5LjcsMmgtMy40Yy0wLjcsMC0xLjMsMC41LTEuNCwxLjJMMTQsNmMtMC42LDAuMS0xLjEsMC4zLTEuNiwwLjZMOS44LDUuMkM5''@;'; put 'put ''LjIsNC45LDguNCw1LDcuOSw1LjVMNS41LDcuOUM1LDguNCw0LjksOS4yLDUuMiw5LjhsMS4zLDIuNWMtMC4yLDAuNS0wLjQsMS4xLTAuNiwxLjZsLTIuOCwwLjlDMi41LDE1LDIsMTUuNiwyLDE2LjN2My40YzAsMC43LDAuNSwxLjMsMS4yLDEuNUw2LDIyLjFsMC42LDEuNWwtMS40LDIuNmMt''@;'; put 'put ''MC4zLDAuNi0wLjIsMS40LDAuMywxLjlsMi40LDIuNGMwLjUsMC41LDEuMywwLjYsMS45LDAuM2wyLjYtMS40bDEuNSwwLjZsMC45LDIuOWMwLjIsMC42LDAuOCwxLjEsMS41LDEuMWgzLjRjMC43LDAsMS4zLTAuNSwxLjUtMS4xbDAuOS0yLjlsMS41LTAuNmwyLjYsMS40YzAuNiwwLjMsMS40''@;'; put 'put ''LDAuMiwxLjktMC4zbDIuNC0yLjRjMC41LTAuNSwwLjYtMS4zLDAuMy0xLjlsLTEuNC0yLjZsMC42LTEuNWwyLjktMC45YzAuNi0wLjIsMS4xLTAuOCwxLjEtMS41di0zLjRDMzQsMTYsMzMuOSwxNS43LDMzLjcsMTUuNHoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTE4LjEsMjNjLTIuOCwwLTUtMi4yLTUtNXMyLjItNSw1LTVjMC4yLDAsMC41LDAsMC43LDAuMWMtMC4yLTAuNi0wLjMtMS4zLTAuMi0yaC0wLjVjLTMuOSwwLTcsMy4xLTcsN2MwLDMuOSwzLjEsNyw3''@;'; put 'put ''LDdjMy45LDAsNy0zLjEsNy03YzAtMC45LTAuMi0xLjgtMC41LTIuNmgtMi4yYzAuNSwwLjgsMC43LDEuNiwwLjcsMi41QzIzLjEsMjAuOCwyMC45LDIzLDE4LjEsMjN6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi45LDEuMUwyMS4xLDExYy0wLjQsMC42LTAuMiwxLjQsMC4zLDEuOGMwLjIsMC4yLDAuNSwwLjIsMC44LDAuMmgxMS41YzAuNywwLDEuMy0wLjUsMS4zLTEuMmMwLTAuMy0wLjEtMC41LTAuMi0wLjhsLTUuNy05LjljLTAuNC0w''@;'; put 'put ''LjYtMS4xLTAuOC0xLjgtMC41QzI3LjEsMC44LDI3LDEsMjYuOSwxLjF6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLjU3LDE1LjcybC0zLjM1LTFhMTEuNjUsMTEuNjUsMCwwLDAtLjk1LTIuMzNsMS42NC0z''@;'; put 'put ''LjA3YS42MS42MSwwLDAsMC0uMTEtLjcyTDI3LjQxLDYuMmEuNjEuNjEsMCwwLDAtLjcyLS4xMUwyMy42NCw3LjcyYTExLjYyLDExLjYyLDAsMCwwLTIuMzYtMWwtMS0zLjMxQS42MS42MSwwLDAsMCwxOS42OSwzSDE2LjMxYS42MS42MSwwLDAsMC0uNTguNDNsLTEsMy4zYTExLjYzLDExLjYz''@;'; put 'put ''LDAsMCwwLTIuMzgsMWwtMy0xLjYyYS42MS42MSwwLDAsMC0uNzIuMTFMNi4yLDguNTlhLjYxLjYxLDAsMCwwLS4xMS43MmwxLjYyLDNhMTEuNjMsMTEuNjMsMCwwLDAtMSwyLjM3bC0zLjMxLDFhLjYxLjYxLDAsMCwwLS40My41OHYzLjM4YS42MS42MSwwLDAsMCwuNDMuNThsMy4zMywxYTEx''@;'; put 'put ''LjYyLDExLjYyLDAsMCwwLDEsMi4zM0w2LjA5LDI2LjY5YS42MS42MSwwLDAsMCwuMTEuNzJMOC41OSwyOS44YS42MS42MSwwLDAsMCwuNzIuMTFsMy4wOS0xLjY1YTExLjY1LDExLjY1LDAsMCwwLDIuMy45NGwxLDMuMzdhLjYxLjYxLDAsMCwwLC41OC40M2gzLjM4YS42MS42MSwwLDAsMCwu''@;'; put 'put ''NTgtLjQzbDEtMy4zOGExMS42MywxMS42MywwLDAsMCwyLjI4LS45NGwzLjExLDEuNjZhLjYxLjYxLDAsMCwwLC43Mi0uMTFsMi4zOS0yLjM5YS42MS42MSwwLDAsMCwuMTEtLjcybC0xLjY2LTMuMWExMS42MywxMS42MywwLDAsMCwuOTUtMi4yOWwzLjM3LTFhLjYxLjYxLDAsMCwwLC40My0u''@;'; put 'put ''NThWMTYuMzFBLjYxLjYxLDAsMCwwLDMyLjU3LDE1LjcyWk0xOCwyMy41QTUuNSw1LjUsMCwxLDEsMjMuNSwxOCw1LjUsNS41LDAsMCwxLDE4LDIzLjVaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRn''@;'; put 'put ''ZWQiIGQ9Ik0zMi41NywxNS43MmwtMy4zNS0xYTEyLjEyLDEyLjEyLDAsMCwwLS40Ny0xLjMyLDcuNDksNy40OSwwLDAsMS02LjE0LTYuMTYsMTEuODIsMTEuODIsMCwwLDAtMS4zMy0uNDhsLTEtMy4zMUEuNjEuNjEsMCwwLDAsMTkuNjksM0gxNi4zMWEuNjEuNjEsMCwwLDAtLjU4LjQzbC0x''@;'; put 'put ''LDMuM2ExMS42MywxMS42MywwLDAsMC0yLjM4LDFsLTMtMS42MmEuNjEuNjEsMCwwLDAtLjcyLjExTDYuMiw4LjU5YS42MS42MSwwLDAsMC0uMTEuNzJsMS42MiwzYTExLjYzLDExLjYzLDAsMCwwLTEsMi4zN2wtMy4zMSwxYS42MS42MSwwLDAsMC0uNDMuNTh2My4zOGEuNjEuNjEsMCwwLDAs''@;'; put 'put ''LjQzLjU4bDMuMzMsMWExMS42MiwxMS42MiwwLDAsMCwxLDIuMzNMNi4wOSwyNi42OWEuNjEuNjEsMCwwLDAsLjExLjcyTDguNTksMjkuOGEuNjEuNjEsMCwwLDAsLjcyLjExbDMuMDktMS42NWExMS42NSwxMS42NSwwLDAsMCwyLjMuOTRsMSwzLjM3YS42MS42MSwwLDAsMCwuNTguNDNoMy4z''@;'; put 'put ''OGEuNjEuNjEsMCwwLDAsLjU4LS40M2wxLTMuMzhhMTEuNjMsMTEuNjMsMCwwLDAsMi4yOC0uOTRsMy4xMSwxLjY2YS42MS42MSwwLDAsMCwuNzItLjExbDIuMzktMi4zOWEuNjEuNjEsMCwwLDAsLjExLS43MmwtMS42Ni0zLjFhMTEuNjMsMTEuNjMsMCwwLDAsLjk1LTIuMjlsMy4zNy0xYS42''@;'; put 'put ''MS42MSwwLDAsMCwuNDMtLjU4VjE2LjMxQS42MS42MSwwLDAsMCwzMi41NywxNS43MlpNMTgsMjMuNUE1LjUsNS41LDAsMSwxLDIzLjUsMTgsNS41LDUuNSwwLDAsMSwxOCwyMy41WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzIuNTcsMTUuNzIsMzEuNSwxNS40SDIy''@;'; put 'put ''Ljg1QTUuNSw1LjUsMCwxLDEsMTgsMTIuNWE1LjUzLDUuNTMsMCwwLDEsLjY1LDBBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsMi4wOS0zLjYyLS44Ni0yLjgzQS42MS42MSwwLDAsMCwxOS42OSwzSDE2LjMxYS42MS42MSwwLDAsMC0uNTguNDNsLTEsMy4zYTExLjYzLDExLjYzLDAsMCwwLTIu''@;'; put 'put ''MzgsMWwtMy0xLjYyYS42MS42MSwwLDAsMC0uNzIuMTFMNi4yLDguNTlhLjYxLjYxLDAsMCwwLS4xMS43MmwxLjYyLDNhMTEuNjMsMTEuNjMsMCwwLDAtMSwyLjM3bC0zLjMxLDFhLjYxLjYxLDAsMCwwLS40My41OHYzLjM4YS42MS42MSwwLDAsMCwuNDMuNThsMy4zMywxYTExLjYyLDExLjYy''@;'; put 'put ''LDAsMCwwLDEsMi4zM0w2LjA5LDI2LjY5YS42MS42MSwwLDAsMCwuMTEuNzJMOC41OSwyOS44YS42MS42MSwwLDAsMCwuNzIuMTFsMy4wOS0xLjY1YTExLjY1LDExLjY1LDAsMCwwLDIuMy45NGwxLDMuMzdhLjYxLjYxLDAsMCwwLC41OC40M2gzLjM4YS42MS42MSwwLDAsMCwuNTgtLjQzbDEt''@;'; put 'put ''My4zOGExMS42MywxMS42MywwLDAsMCwyLjI4LS45NGwzLjExLDEuNjZhLjYxLjYxLDAsMCwwLC43Mi0uMTFsMi4zOS0yLjM5YS42MS42MSwwLDAsMCwuMTEtLjcybC0xLjY2LTMuMWExMS42MywxMS42MywwLDAsMCwuOTUtMi4yOWwzLjM3LTFhLjYxLjYxLDAsMCwwLC40My0uNThWMTYuMzFB''@;'; put 'put ''LjYxLjYxLDAsMCwwLDMyLjU3LDE1LjcyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4y''@;'; put 'put ''MywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxMLkNsclNoYXBlQ2hlY2s9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9''@;'; put 'put ''Ik0xMy43MiwyNy42OSwzLjI5LDE3LjI3YTEsMSwwLDAsMSwxLjQxLTEuNDFsOSw5TDMxLjI5LDcuMjlhMSwxLDAsMCwxLDEuNDEsMS40MVoiLz4nKSxMLkNsclNoYXBlVGltZXM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEiIGQ9Ik0xOS40MSwxOGw4LjI5LTguMjlhMSwxLDAsMCwwLTEuNDEtMS40MUwxOCwxNi41OSw5LjcxLDguMjlBMSwxLDAsMCwwLDguMjksOS43MUwxNi41OSwxOCw4LjI5LDI2LjI5YTEsMSwwLDEsMCwxLjQxLDEuNDFMMTgsMTkuNDFsOC4yOSw4LjI5YTEsMSwwLDAsMCwxLjQxLTEuNDFa''@;'; put 'put ''Ii8+JyksTC5DbHJTaGFwZUV4Y2xhbWF0aW9uVHJpYW5nbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyMS4zMmExLjMsMS4zLDAsMCwwLDEuMy0xLjNWMTRhMS4zLDEuMywwLDEsMC0yLjYsMHY2QTEu''@;'; put 'put ''MywxLjMsMCwwLDAsMTgsMjEuMzJaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgY3g9IjE3Ljk1IiBjeT0iMjQuMjciIHI9IjEuNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMzAuMzMsMjUuNTQsMjAuNTksNy42YTMsMywwLDAsMC01LjI3LDBMNS41NywyNS41NEEzLDMsMCwwLDAsOC4yMSwzMEgyNy42OWEzLDMsMCwwLDAsMi42NC00LjQzWm0tMS43OCwxLjk0YTEsMSwwLDAsMS0uODYuNDlIOC4yMWExLDEsMCww''@;'; put 'put ''LDEtLjg4LTEuNDhMMTcuMDcsOC41NWExLDEsMCwwLDEsMS43NiwwbDkuNzQsMTcuOTRBMSwxLDAsMCwxLDI4LjU1LDI3LjQ4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMC4zMywyNS41NCwyMC41OSw3LjZh''@;'; put 'put ''MywzLDAsMCwwLTUuMjcsMEw1LjU3LDI1LjU0QTMsMywwLDAsMCw4LjIxLDMwSDI3LjY5YTMsMywwLDAsMCwyLjY0LTQuNDNaTTE2LjQ2LDEyLjc0YTEuNDksMS40OSwwLDAsMSwzLDB2Ni44OWExLjQ5LDEuNDksMCwxLDEtMywwWk0xOCwyNi4yNWExLjcyLDEuNzIsMCwxLDEsMS43Mi0xLjcy''@;'; put 'put ''QTEuNzIsMS43MiwwLDAsMSwxOCwyNi4yNVoiLz4nKSxMLkNsclNoYXBlRXhjbGFtYXRpb25DaXJjbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCww''@;'; put 'put ''LDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyMC4wN2ExLjMsMS4zLDAsMCwxLTEuMy0xLjN2LTZhMS4zLDEuMyww''@;'; put 'put ''LDEsMSwyLjYsMHY2QTEuMywxLjMsMCwwLDEsMTgsMjAuMDdaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgY3g9IjE3Ljk1IiBjeT0iMjMuMDIiIHI9IjEuNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabS0xLjQ5LDZhMS40OSwxLjQ5LDAsMCwxLDMsMHY2Ljg5YTEuNDksMS40OSwwLDEsMS0zLDBaTTE4LDI1LjVhMS43MiwxLjcyLDAsMSwxLDEuNzIt''@;'; put 'put ''MS43MkExLjcyLDEuNzIsMCwwLDEsMTgsMjUuNVoiLz4nKSxMLkNsclNoYXBlQ2hlY2tDaXJjbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4''@;'; put 'put ''LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xNi4zNCwyMy43NGwtNS01YTEsMSwwLDAsMSwxLjQxLTEuNDFsMy41OSwzLjU5''@;'; put 'put ''LDYuNzgtNi43OGExLDEsMCwwLDEsMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMCwxOEExMiwxMiwwLDEsMSwxOCw2LDEyLDEyLDAsMCwxLDMwLDE4Wm0tNC43Ny0yLjE2YTEuNCwxLjQsMCww''@;'; put 'put ''LDAtMi0ybC02Ljc3LDYuNzdMMTMsMTcuMTZhMS40LDEuNCwwLDAsMC0yLDJsNS40NSw1LjQ1WiIvPicpLEwuQ2xyU2hhcGVJbmZvQ2lyY2xlPSgwLEUuY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiICBjeD0iMTcuOTMiIGN5''@;'; put 'put ''PSIxMS45IiByPSIxLjQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgIGQ9Ik0yMSwyM0gxOVYxNUgxNmExLDEsMCwwLDAsMCwyaDF2NkgxNWExLDEsMCwxLDAsMCwyaDZhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptLTIsNS4xNWEyLDIsMCwxLDEsMiwyQTIsMiwwLDAsMSwxNS45LDExLjE1Wk0yMywyNGExLDEsMCwwLDEtMSwxSDE1YTEsMSww''@;'; put 'put ''LDEsMSwwLTJoMlYxN0gxNmExLDEsMCwwLDEsMC0yaDR2OGgyQTEsMSwwLDAsMSwyMywyNFoiLz4nKSxMLkNsclNoYXBlSW5mb1N0YW5kYXJkPSgwLEUuY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4PSIxNy45NyIgY3k9''@;'; put 'put ''IjEwLjQ1IiByPSIxLjQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTIxLDI1SDE5VjE0LjFIMTZhMSwxLDAsMCwwLDAsMmgxVjI1SDE1YTEsMSwwLDAsMCwwLDJoNmExLDEsMCwwLDAsMC0yWiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMi4xYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDE4LDIuMVptLS4xLDUuMjhhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMTcuOSw3LjM4Wm0zLjYsMjEuMjVoLTdhMS40LDEuNCww''@;'; put 'put ''LDEsMSwwLTIuOGgyLjF2LTkuMkgxNWExLjQsMS40LDAsMSwxLDAtMi44aDQuNHYxMmgyLjFhMS40LDEuNCwwLDEsMSwwLDIuOFoiLz4nKSxMLkNsclNoYXBlU3VjY2Vzc1N0YW5kYXJkPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBk''@;'; put 'put ''PSJNMjgsMTIuMWExLDEsMCwwLDAtMS40MSwwTDE1LjQ5LDIzLjE1bC02LTZBMSwxLDAsMCwwLDgsMTguNTNMMTUuNDksMjYsMjgsMTMuNTJBMSwxLDAsMCwwLDI4LDEyLjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIg''@;'; put 'put ''ZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNMjguNDUsMTIuNjMsMTUuMzEsMjUuNzYsNy41NSwxOGExLjQsMS40LDAsMCwxLDItMmw1Ljc4LDUuNzhMMjYuNDcsMTAuNjVhMS40LDEuNCwwLDEsMSwyLDJaIi8+JyksTC5DbHJTaGFwZUVycm9yU3RhbmRhcmQ9''@;'; put 'put ''KDAsRS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjE4IiBjeT0iMjYuMDYiIHI9IjEuMzMiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIg''@;'; put 'put ''ZD0iTTE4LDIyLjYxYTEsMSwwLDAsMS0xLTF2LTEyYTEsMSwwLDEsMSwyLDB2MTJBMSwxLDAsMCwxLDE4LDIyLjYxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgs''@;'; put 'put ''MTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMi4xYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCww''@;'; put 'put ''LDE4LDIuMVpNMTYuNiw4LjhhMS40LDEuNCwwLDAsMSwyLjgsMHYxMmExLjQsMS40LDAsMCwxLTIuOCwwWk0xOCwyOC42YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDE4LDI4LjZaIi8+JyksTC5DbHJTaGFwZVdhcm5pbmdTdGFuZGFyZD0oMCxFLmNsckljb25TVkcpKCc8''@;'; put 'put ''Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTgiIGN5PSIyNi4wNiIgcj0iMS4zMyIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjIuNjFhMSwxLDAs''@;'; put 'put ''MCwxLTEtMXYtMTJhMSwxLDAsMSwxLDIsMHYxMkExLDEsMCwwLDEsMTgsMjIuNjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xNS4wNjIwNzgyLDEuNjgxMTk2IEMxNS42Mjk4ODE5LDAuNjQ5MjY2MzU1''@;'; put 'put ''IDE2LjcxMDkwOTEsMC4wMTAyMjE5Mzk2IDE3Ljg4NSwwLjAxMDIyMTkzOTYgQzE5LjA1OTA5MDksMC4wMTAyMjE5Mzk2IDIwLjE0MDExODEsMC42NDkyNjYzNTUgMjAuNzA4NjQzMywxLjY4MjUyMTI5IEwzNC41OTg2NDQsMjcuMjQyNTIyNSBDMzUuMTQwNzc0NiwyOC4yNDAxMzk3IDM1LjEx''@;'; put 'put ''NzQzNDUsMjkuNDQ5NTM3MyAzNC41MzcyMTYxLDMwLjQyNTQ5NDMgQzMzLjk1Njk5NzcsMzEuNDAxNDUxNCAzMi45MDU2NzEsMzEuOTk5Njk4NCAzMS43NywzMiBMNC4wMjIzOTMyMywzMS45OTk3NDkyIEMyLjg3NDA5MDA5LDMyLjAyNTQ2OTkgMS43OTkwMjg0MywzMS40Mzc1NzUzIDEuMjAx''@;'; put 'put ''MDYzMzUsMzAuNDU2OTEyNiBDMC42MDMwOTgyNjUsMjkuNDc2MjQ5OSAwLjU3Mjc3Nzg5OSwyOC4yNTEzMTc5IDEuMTIyMDc4MTgsMjcuMjQxMTk2IEwxNS4wNjIwNzgyLDEuNjgxMTk2IFogTTIuODc4NTA3NjcsMjguMTk3NzI4MiBDMi42NzA2MDk2NiwyOC41ODAwMzc2IDIuNjgyMDk3NSwy''@;'; put 'put ''OS4wNDQxNDIzIDIuOTA4NjU1NywyOS40MTU2OTc3IEMzLjEzNTIxMzksMjkuNzg3MjUzMiAzLjU0MjUzNTQsMzAuMDA5OTk1OSA0LDMwIEwzMS43Njk3MzQ0LDMwIEMzMi4xOTk5MTkxLDI5Ljk5OTg4NTggMzIuNTk4MjQ3OCwyOS43NzMyMjA4IDMyLjgxODA4MjEsMjkuNDAzNDQ4MiBDMzMu''@;'; put 'put ''MDM3OTE2NCwyOS4wMzM2NzU3IDMzLjA0Njc1OTUsMjguNTc1NDU2NyAzMi44NDEzNTY3LDI4LjE5NzQ3ODcgTDE4Ljk1Mzg3MzksMi42NDIwODE5NSBDMTguNzM5NDIzNiwyLjI1MjM0NDM2IDE4LjMyOTg0MTksMi4wMTAyMjE5NCAxNy44ODUsMi4wMTAyMjE5NCBDMTcuNDQwNjg4OSwyLjAx''@;'; put 'put ''MDIyMTk0IDE3LjAzMTU1MzgsMi4yNTE3NjY5MiAxNi44MTY4OTQ2LDIuNjQwNjg3NTMgTDIuODc4NTA3NjcsMjguMTk3NzI4MiBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTM0LjYsMjkuMjEsMjAuNzEsMy42''@;'; put 'put ''NWEzLjIyLDMuMjIsMCwwLDAtNS42NiwwTDEuMTcsMjkuMjFBMy4yMiwzLjIyLDAsMCwwLDQsMzRIMzEuNzdhMy4yMiwzLjIyLDAsMCwwLDIuODMtNC43NVpNMTYuNiwxMGExLjQsMS40LDAsMCwxLDIuOCwwdjEyYTEuNCwxLjQsMCwwLDEtMi44LDBaTTE4LDI5Ljg1YTEuOCwxLjgsMCwxLDEs''@;'; put 'put ''MS44LTEuOEExLjgsMS44LDAsMCwxLDE4LDI5Ljg1WiIvPicpLEwuQ2xyU2hhcGVIZWxwSW5mbz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUuMzksMjUuNDVhMSwxLDAsMCwwLTEuMzguMjljLTEuNDEsMi4xNi00LDQuODEtNi4zMSw1LjdzLTQuMTIuNTctNC44NCwwYy0uMzEtLjI3''@;'; put 'put ''LTEuMTItMS0uNDMtMy40OS40Ni0xLjY2LDMuMzItOS40OCw0LTExLjM4bC0yLjE4LjI4Yy0uNjksMS44Ni0zLjI5LDguODQtMy43NiwxMC41OC0uNjgsMi40OS0uMzQsNC4zLDEuMDksNS41NkE1LjU5LDUuNTksMCwwLDAsMTUsMzRhOS41Myw5LjUzLDAsMCwwLDMuNDUtLjdjMi43OS0xLjA5''@;'; put 'put ''LDUuNzItNC4xMiw3LjI2LTYuNDdBMSwxLDAsMCwwLDI1LjM5LDI1LjQ1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuMywxMWE0LjUsNC41LDAsMSwwLTQuNS00LjVBNC41LDQuNSwwLDAsMCwxOS4zLDEx''@;'; put 'put ''Wm0wLTdhMi41LDIuNSwwLDEsMS0yLjUsMi41QTIuNSwyLjUsMCwwLDEsMTkuMyw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuODEsMTVjLjA2LDAsNi4yNy0uODIsNy43My0xLC42NS0uMSwxLjE0LDAs''@;'; put 'put ''MS4zLjE1cy4yMS44LS4wNywxLjY4Yy0uNjEsMS44Ni0zLjY5LDExLTQuNTksMTMuNzFhOCw4LDAsMCwwLDEuMjktLjM4LDcuMzIsNy4zMiwwLDAsMCwxLjE1LS42QzE5Ljg1LDI1LDIyLjE1LDE4LjEsMjIuNjcsMTYuNTJzLjM5LTIuNzgtLjMtMy42YTMuMTYsMy4xNiwwLDAsMC0zLjA4LS44''@;'; put 'put ''M2MtMS40My4xNS03LjQ3Ljk0LTcuNzMsMWExLDEsMCwwLDAsLjI2LDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjIwLjc1IiBjeT0iNiIgcj0iNCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC44NCwyNi4yM2ExLDEsMCwwLDAtMS40LjI5LDE2LjYsMTYuNiwwLDAsMS0zLjUxLDMuNzdjLS4zMy4yNS0xLjU2LDEuMi0yLjA4LDEtLjM2LS4xMS0uMTUtLjgyLS4wOC0xLjEybC41My0xLjU3Yy4yMi0uNjQsNC4wNS0xMiw0''@;'; put 'put ''LjQ3LTEzLjMuNjItMS45LjM1LTMuNzctMi40OC0zLjMyLS43Ny4wOC04LjU4LDEuMDktOC43MiwxLjFhMSwxLDAsMCwwLC4xMywyczMtLjM5LDMuMzMtLjQyYS44OC44OCwwLDAsMSwuODUuNDQsMi40NywyLjQ3LDAsMCwxLS4wNywxLjcxYy0uMjYsMS00LjM3LDEyLjU4LTQuNSwxMy4yNWEy''@;'; put 'put ''Ljc4LDIuNzgsMCwwLDAsMS4xOCwzLDUsNSwwLDAsMCwzLjA4LjgzaDBhOC41Myw4LjUzLDAsMCwwLDMuMDktLjYyYzIuNDktMSw1LjA5LTMuNjYsNi40Ni01Ljc1QTEsMSwwLDAsMCwyNC44NCwyNi4yM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5D''@;'; put 'put ''bHJTaGFwZUJhcnM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiwyOUg0YTEsMSwwLDAsMSwwLTJIMzJhMSwxLDAsMCwxLDAsMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMyLDE5SDRhMSwxLDAsMCwxLDAtMkgzMmExLDEsMCwwLDEsMCwyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMzIsOUg0QTEsMSwwLDAsMSw0LDdI''@;'; put 'put ''MzJhMSwxLDAsMCwxLDAsMloiLz4nKSxMLkNsclNoYXBlVXNlcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMTdhNyw3LDAsMSwwLTctN0E3LDcsMCwwLDAsMTgsMTdaTTE4LDVhNSw1LDAsMSwxLTUsNUE1LDUsMCwwLDEsMTgsNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjQ3LDI0LjM3YTE3LjE2LDE3LjE2LDAsMCwwLTI0LjkzLDBBMiwyLDAsMCwwLDUsMjUuNzRWMzFhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAsMi0yVjI1Ljc0QTIsMiwwLDAsMCwzMC40NywyNC4zN1pNMjks''@;'; put 'put ''MzFIN1YyNS43M2ExNS4xNywxNS4xNywwLDAsMSwyMiwwaDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC40NywyNC4zN2ExNy4xNiwxNy4xNiwwLDAsMC0yNC45MywwQTIsMiwwLDAsMCw1LDI1Ljc0VjMx''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMjlhMiwyLDAsMCwwLDItMlYyNS43NEEyLDIsMCwwLDAsMzAuNDcsMjQuMzdaTTI5LDMxSDdWMjUuNzNhMTUuMTcsMTUuMTcsMCwwLDEsMjIsMGgwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTdhNyw3LDAsMCwwLDQuNDUtMS42aC0uMjJBMy42OCwzLjY4LDAsMCwxLDIwLDE0LjZhNSw1LDAsMSwxLDEuMjQtOC40MmwxLTEuNzZBNyw3LDAsMSwwLDE4LDE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNDcsMjQuMzdhMTcuMTYsMTcuMTYsMCwwLDAtMjQuOTMsMEEyLDIsMCwwLDAsNSwyNS43NFYzMWEyLDIsMCwwLDAs''@;'; put 'put ''MiwySDI5YTIsMiwwLDAsMCwyLTJWMjUuNzRBMiwyLDAsMCwwLDMwLjQ3LDI0LjM3Wk0yOSwzMUg3VjI1LjczYTE1LjE3LDE1LjE3LDAsMCwxLDIyLDBoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwwLDAsNi44NS01LjU2LDcuNCw3LjQsMCwwLDEtMi4yNC02LjY5QTcsNywwLDEsMCwxOCwxN1pNMTgsNWE1LDUsMCwxLDEtNSw1QTUsNSwwLDAsMSwxOCw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0t''@;'; put 'put ''YmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjYxLDI0LjUyYTE3''@;'; put 'put ''LjE2LDE3LjE2LDAsMCwwLTI1LjIyLDAsMS41MSwxLjUxLDAsMCwwLS4zOSwxdjZBMS41LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41di02QTEuNTEsMS41MSwwLDAsMCwzMC42MSwyNC41MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjEwIiByPSI3IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjYxLDI0LjUyYTE3LjE2LDE3LjE2LDAsMCwwLTI1LjIyLDAsMS41MSwxLjUxLDAsMCww''@;'; put 'put ''LS4zOSwxdjZBMS41LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41di02QTEuNTEsMS41MSwwLDAsMCwzMC42MSwyNC41MloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMTgsMTdhNyw3LDAsMCwwLDQuNDUtMS42aC0uMjJBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsMy4xNi01LjQ3QTcsNywwLDEsMCwxOCwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC42MSwyNC41MmExNy4xNiwxNy4xNiwwLDAsMC0yNS4yMiwwLDEuNTEsMS41MSwwLDAsMC0uMzksMXY2QTEuNSwxLjUsMCwwLDAsNi41LDMzaDIzQTEuNSwxLjUsMCwwLDAsMzEsMzEuNXYtNkEx''@;'; put 'put ''LjUxLDEuNTEsMCwwLDAsMzAuNjEsMjQuNTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwwLDAsNi44NS01LjU2LDcuNCw3LjQsMCwwLDEtMi4yNC02LjY5QTcsNyww''@;'; put 'put ''LDEsMCwxOCwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktYmFkZ2UiIC8+JyksTC5DbHJTaGFwZUFuZ2xlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjkuNTIsMjIuNTIsMTgsMTAuNiw2LjQ4LDIyLjUyYTEuNywxLjcsMCwwLDAsMi40NSwyLjM2TDE4''@;'; put 'put ''LDE1LjQ5bDkuMDgsOS4zOWExLjcsMS43LDAsMCwwLDIuNDUtMi4zNloiLz4nKSxMLkNsclNoYXBlRm9sZGVyPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAs''@;'; put 'put ''MCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDMwLDlabTAsMjBINlYxM2g3LjMxYTIsMiwwLDAsMCwyLTJINlY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFIMzBaIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzAsMTMuNVYyOUg2VjEzaDcuMzFhMiwyLDAsMCwwLDItMkg2VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWg4LjUxYTcuNSw3LjUsMCwwLDEtMS4y''@;'; put 'put ''OS0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJN''@;'; put 'put ''MzAsMTUuNFYyOUg2VjEzaDcuMzFhMiwyLDAsMCwwLDItMkg2VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWgyLjczQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwy''@;'; put 'put ''LDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE1LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4y''@;'; put 'put ''OCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAsOUgxNi40''@;'; put 'put ''MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDMwLDlaTTYsMTFWN2g2LjQ5bDIuNzIsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwxOS41Niw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCww''@;'; put 'put ''LDItMlYxNS40Wk02LDExVjdoNi40OWwyLjcyLDRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCww''@;'; put 'put ''LDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJN''@;'; put 'put ''MzAsMTMuNUE3LjUsNy41LDAsMCwxLDIzLjEzLDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41Wk02LDExVjdoNi40OWwyLjcyLDRa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLEwuQ2xyU2hhcGVGb2xkZXJPcGVuPSgwLEUuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcxLDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAs''@;'; put 'put ''LjgxLjQxSDMyYTIsMiwwLDAsMC0yLTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCwwLDAsMzUuMzIsMTMuNzRa''@;'; put 'put ''TTI5LjU1LDI5SDYuOWwzLjg4LTEzLjgxYS42Ni42NiwwLDAsMSwuMzgtLjI0SDMzLjQ5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTM1LjMyLDEzLjc0QTEuNzEsMS43MSww''@;'; put 'put ''LDAsMCwzMy44NywxM0gxMS4xN2EyLjU5LDIuNTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWg4LjUyYTcuNDksNy40OSwwLDAsMS0xLjI5LTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2''@;'; put 'put ''QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCwwLDAsMzUuMzIsMTMuNzRaTTI5LjU1LDI5SDYuOWwzLjg4LTEzLjgxYS42Ni42NiwwLDAsMSwuMzgtLjI0SDMzLjQ5WiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40aC0uM0wyOS41NSwyOUg2LjlsMy44OC0xMy44MWEuNjYuNjYsMCwwLDEsLjM4LS4yNGg5LjQyQTMuNjcsMy42NywwLDAsMSwxOSwxMy41NmEzLjYzLDMuNjMsMCwwLDEtLjI2LS41NkgxMS4xN2EyLjU5LDIu''@;'; put 'put ''NTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWgyLjczQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjku''@;'; put 'put ''NjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMWExLjY4LDEuNjgsMCwwLDAsLjA3LS4zMkEzLjY3LDMuNjcsMCwwLDEsMzMuNjgsMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNS4zMiwxMy43NEExLjcxLDEuNzEsMCwwLDAsMzMuODcsMTNIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDls''@;'; put 'put ''Mi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFIMzJhMiwyLDAsMCwwLTItMkgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xQTEuNjQsMS42''@;'; put 'put ''NCwwLDAsMCwzNS4zMiwxMy43NFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTksMTMuNTZhMy42MywzLjYzLDAsMCwx''@;'; put 'put ''LS4yNi0uNTZIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoMi43M0EzLjY2LDMuNjYsMCwwLDEsMTksOS44OUwxOS41Niw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5''@;'; put 'put ''LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcsMS4zNywwLDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFhMS42OCwxLjY4LDAsMCwwLC4wNy0uMzJBMy42NywzLjY3LDAsMCwxLDMzLjY4LDE1LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCww''@;'; put 'put ''LDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcxLDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1''@;'; put 'put ''LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDguNTJhNy40OSw3LjQ5LDAsMCwxLTEuMzEtMkgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40''@;'; put 'put ''MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xQTEuNjQsMS42NCwwLDAsMCwzNS4zMiwxMy43NFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0i''@;'; put 'put ''MzAiIGN5PSI2IiByPSI1Ii8+JyksTC5DbHJTaGFwZUJlbGw9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMi41MSwyNy44M0ExNC40LDE0LjQsMCwwLDEsMzAsMjQuOWExMi42MywxMi42MywwLDAsMS0xLjM1''@;'; put 'put ''LTQuODFWMTUuMTVBMTAuODEsMTAuODEsMCwwLDAsMTkuMjEsNC40VjMuMTFhMS4zMywxLjMzLDAsMSwwLTIuNjcsMFY0LjQyQTEwLjgxLDEwLjgxLDAsMCwwLDcuMjEsMTUuMTV2NC45NEExMi42MywxMi42MywwLDAsMSw1Ljg2LDI0LjlhMTQuNCwxNC40LDAsMCwxLTIuNDcsMi45MywxLDEs''@;'; put 'put ''MCwwLDAtLjM0Ljc1djEuMzZhMSwxLDAsMCwwLDEsMWgyNy44YTEsMSwwLDAsMCwxLTFWMjguNThBMSwxLDAsMCwwLDMyLjUxLDI3LjgzWk01LjEzLDI4Ljk0YTE2LjE3LDE2LjE3LDAsMCwwLDIuNDQtMywxNC4yNCwxNC4yNCwwLDAsMCwxLjY1LTUuODVWMTUuMTVhOC43NCw4Ljc0LDAsMSwx''@;'; put 'put ''LDE3LjQ3LDB2NC45NGExNC4yNCwxNC4yNCwwLDAsMCwxLjY1LDUuODUsMTYuMTcsMTYuMTcsMCwwLDAsMi40NCwzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMzQuMjhBMi42NywyLjY3LDAsMCww''@;'; put 'put ''LDIwLjU4LDMySDE1LjMyQTIuNjcsMi42NywwLDAsMCwxOCwzNC4yOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xOCwzNC4yOEEyLjY3LDIuNjcsMCwwLDAsMjAuNTgsMzJI''@;'; put 'put ''MTUuMzJBMi42NywyLjY3LDAsMCwwLDE4LDM0LjI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMyLjUxLDI3LjgzQTE0LjQsMTQuNCwwLDAsMSwzMCwyNC45YTEyLjYzLDEy''@;'; put 'put ''LjYzLDAsMCwxLTEuMzUtNC44MVYxNS4xNWExMC45MiwxMC45MiwwLDAsMC0uMTYtMS43OSw3LjQ0LDcuNDQsMCwwLDEtMi4yNC0uODQsOC44OSw4Ljg5LDAsMCwxLC40LDIuNjR2NC45NGExNC4yNCwxNC4yNCwwLDAsMCwxLjY1LDUuODUsMTYuMTcsMTYuMTcsMCwwLDAsMi40NCwzSDUuMTNh''@;'; put 'put ''MTYuMTcsMTYuMTcsMCwwLDAsMi40NC0zLDE0LjI0LDE0LjI0LDAsMCwwLDEuNjUtNS44NVYxNS4xNUE4LjgsOC44LDAsMCwxLDE4LDYuMzFhOC42MSw4LjYxLDAsMCwxLDQuNzYsMS40NEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2YzAtLjIxLDAtLjQyLDAtLjYzYTEwLjU4LDEwLjU4LDAsMCww''@;'; put 'put ''LTMuMzItMVYzLjExYTEuMzMsMS4zMywwLDEsMC0yLjY3LDBWNC40MkExMC44MSwxMC44MSwwLDAsMCw3LjIxLDE1LjE1djQuOTRBMTIuNjMsMTIuNjMsMCwwLDEsNS44NiwyNC45YTE0LjQsMTQuNCwwLDAsMS0yLjQ3LDIuOTMsMSwxLDAsMCwwLS4zNC43NXYxLjM2YTEsMSwwLDAsMCwxLDFo''@;'; put 'put ''MjcuOGExLDEsMCwwLDAsMS0xVjI4LjU4QTEsMSwwLDAsMCwzMi41MSwyNy44M1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0i''@;'; put 'put ''NSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi44NSwyOC4xM2wtLjM0LS4zQTE0LjM3LDE0LjM3LDAsMCwxLDMwLDI0LjlhMTIuNjMsMTIuNjMsMCwwLDEtMS4zNS00LjgxVjE1LjE1QTEwLjgxLDEwLjgxLDAs''@;'; put 'put ''MCwwLDE5LjIxLDQuNFYzLjExYTEuMzMsMS4zMywwLDEsMC0yLjY3LDBWNC40MkExMC44MSwxMC44MSwwLDAsMCw3LjIxLDE1LjE1djQuOTRBMTIuNjMsMTIuNjMsMCwwLDEsNS44NiwyNC45YTE0LjQsMTQuNCwwLDAsMS0yLjQ3LDIuOTNsLS4zNC4zdjIuODJIMzIuODVaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTE1LjMyLDMyYTIuNjUsMi42NSwwLDAsMCw1LjI1LDBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1i''@;'; put 'put ''YWRnZWQiIGQ9Ik0xOCwzNC4yOEEyLjY3LDIuNjcsMCwwLDAsMjAuNTgsMzJIMTUuMzJBMi42NywyLjY3LDAsMCwwLDE4LDM0LjI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzIu''@;'; put 'put ''ODUsMjguMTNsLS4zNC0uM0ExNC4zNywxNC4zNywwLDAsMSwzMCwyNC45YTEyLjYzLDEyLjYzLDAsMCwxLTEuMzUtNC44MVYxNS4xNWExMC45MiwxMC45MiwwLDAsMC0uMTYtMS43OUE3LjUsNy41LDAsMCwxLDIyLjUsNmMwLS4yMSwwLS40MiwwLS42M2ExMC41NywxMC41NywwLDAsMC0zLjMy''@;'; put 'put ''LTFWMy4xMWExLjMzLDEuMzMsMCwxLDAtMi42NywwVjQuNDJBMTAuODEsMTAuODEsMCwwLDAsNy4yMSwxNS4xNXY0Ljk0QTEyLjYzLDEyLjYzLDAsMCwxLDUuODYsMjQuOWExNC40LDE0LjQsMCwwLDEtMi40NywyLjkzbC0uMzQuM3YyLjgySDMyLjg1WiIvPlxuICAgICAgICAgICAgICAgIDxj''@;'; put 'put ''aXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxMLkNsclNoYXBlSW1hZ2U9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2VjMw''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMiw0Wk00LDMwVjZIMzJWMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTguOTIsMTRhMywzLDAsMSwwLTMtM0EzLDMsMCwwLDAs''@;'; put 'put ''OC45MiwxNFptMC00LjZBMS42LDEuNiwwLDEsMSw3LjMzLDExLDEuNiwxLjYsMCwwLDEsOC45Miw5LjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi43OCwxNS4zN2wtNS40LDUuNC00LTRhMSwxLDAsMCww''@;'; put 'put ''LTEuNDEsMEw1LjkyLDIyLjl2Mi44M2w2Ljc5LTYuNzlMMTYsMjIuMThsLTMuNzUsMy43NUgxNWw4LjQ1LTguNDVMMzAsMjRWMjEuMThsLTUuODEtNS44MUExLDEsMCwwLDAsMjIuNzgsMTUuMzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTExLjkzLDExYTMsMywwLDEsMC0zLDNBMywzLDAsMCwwLDExLjkzLDExWm0tNC42LDBhMS42LDEuNiwwLDEsMSwxLjYsMS42QTEuNiwxLjYsMCwwLDEsNy4zMywxMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJh''@;'; put 'put ''ZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LjM4LDIwLjc3bC00LTRhMSwxLDAsMCwwLTEuNDEsMEw1LjkyLDIyLjl2Mi44M2w2Ljc5LTYuNzlMMTYsMjIuMThsLTMuNzUsMy43NUgxNWw4LjQ1LTguNDVMMzAsMjRWMjEuMThsLTUuODEtNS44MWExLDEsMCwwLDAtMS40MSwwWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJWMzBINFY2SDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMiw0Wk04LjkyLDhhMywzLDAs''@;'; put 'put ''MSwxLTMsM0EzLDMsMCwwLDEsOC45Miw4Wk02LDI3VjIyLjlsNi02LjA4YTEsMSwwLDAsMSwxLjQxLDBMMTYsMTkuMzUsOC4zMiwyN1ptMjQsMEgxMS4xNWw2LjIzLTYuMjMsNS40LTUuNGExLDEsMCwwLDEsMS40MSwwTDMwLDIxLjE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVBNy40OCw3LjQ4LDAsMCwxLDIyLjc4LDRINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNOC45Miw4YTMsMywwLDEsMS0z''@;'; put 'put ''LDNBMywzLDAsMCwxLDguOTIsOFpNNiwyN1YyMi45bDYtNi4wOGExLDEsMCwwLDEsMS40MSwwTDE2LDE5LjM1LDguMzIsMjdabTI0LDBIMTEuMTVsNi4yMy02LjIzLDUuNC01LjRhMSwxLDAsMCwxLDEuNDEsMEwzMCwyMS4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+JyksTC5DbHJTaGFwZUNsb3VkPSgwLEUuY2xySWNvblNW''@;'; put 'put ''RykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcuMTQsMzNIMTAuNjJDNS42NywzMywxLDI4LjE5LDEsMjMuMWExMCwxMCwwLDAsMSw4LTkuNzUsMTAuMTksMTAuMTksMCwwLDEsMjAuMzMsMS4wNkExMC4wNywxMC4wNywwLDAsMSwyOSwx''@;'; put 'put ''Ni42NmE4LjI5LDguMjksMCwwLDEsNiw4QzM1LDI5LjEsMzEuMzMsMzMsMjcuMTQsMzNaTTE5LjA5LDYuMjNhOC4yNCw4LjI0LDAsMCwwLTguMTksOGwwLC44Ny0uODYuMUE3Ljk0LDcuOTQsMCwwLDAsMywyMy4xYzAsNCwzLjc3LDcuOSw3LjYyLDcuOUgyNy4xNEMzMC4yMSwzMSwzMywyOCwz''@;'; put 'put ''MywyNC42NWE2LjMxLDYuMzEsMCwwLDAtNS4zNy02LjI2bC0xLjE4LS4xOC4zOS0xLjEzQTguMTgsOC4xOCwwLDAsMCwxOS4wOSw2LjIzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIg''@;'; put 'put ''ZD0iTTI5LDE2LjY2YTEwLjA3LDEwLjA3LDAsMCwwLC4yNS0yLjI0YzAtLjMzLDAtLjY1LDAtMWE3LjQ1LDcuNDUsMCwwLDEtMi4xLS41NCw4LDgsMCwwLDEtLjMsNC4xNmwtLjM5LDEuMTMsMS4xOC4xOGE2LjMxLDYuMzEsMCwwLDEsNS4zNyw2LjI2QzMyLjk1LDI4LDMwLjE2LDMxLDI3LjA5''@;'; put 'put ''LDMxSDEwLjU3Yy0zLjg0LDAtNy42Mi0zLjkxLTcuNjItNy45YTcuOTQsNy45NCwwLDAsMSw3LTcuODlsLjg2LS4xLDAtLjg3YTguMjQsOC4yNCwwLDAsMSw4LjE5LThBOC4xMyw4LjEzLDAsMCwxLDIyLjU4LDdhNy41Myw3LjUzLDAsMCwxLS4wOC0xLDcuNTEsNy41MSwwLDAsMSwuMDktMS4x''@;'; put 'put ''MkExMC4xMywxMC4xMywwLDAsMCwxOSw0LjIzLDEwLjI2LDEwLjI2LDAsMCwwLDguOTEsMTMuMzZhMTAsMTAsMCwwLDAtOCw5Ljc1YzAsNS4wOSw0LjY3LDkuOSw5LjYyLDkuOUgyNy4wOWM0LjE5LDAsNy44Ni0zLjksNy44Ni04LjM1QTguMjksOC4yOSwwLDAsMCwyOSwxNi42NloiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjksMTYuNjZhMTAuMTQsMTAuMTQsMCwwLDAsLjItMS4zaC0yYTguMjgsOC4yOCwwLDAsMS0uMzcsMS43MmwtLjM5LDEuMTMsMS4xOC4xOGE2LjMxLDYuMzEsMCwwLDEsNS4zNyw2LjI2QzMyLjk1LDI4LDMwLjE2LDMxLDI3''@;'; put 'put ''LjA5LDMxSDEwLjU3Yy0zLjg0LDAtNy42Mi0zLjkxLTcuNjItNy45YTcuOTQsNy45NCwwLDAsMSw3LTcuODlsLjg2LS4xLDAtLjg3QTguMTYsOC4xNiwwLDAsMSwyMSw2LjQ3bDEtMS44QTEwLjE5LDEwLjE5LDAsMCwwLDguOTEsMTMuMzZhMTAsMTAsMCwwLDAtOCw5Ljc1YzAsNS4wOSw0LjY3''@;'; put 'put ''LDkuOSw5LjYyLDkuOUgyNy4wOWM0LjE5LDAsNy44Ni0zLjksNy44Ni04LjM1QTguMjksOC4yOSwwLDAsMCwyOSwxNi42NloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1h''@;'; put 'put ''bGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yOSwxNi42NmExMC4wNywxMC4wNywwLDAsMCwuMjUtMi4yNEExMC4xOSwxMC4xOSwwLDAsMCw4LjkxLDEzLjM2LDEwLDEwLDAsMCwwLDEsMjMuMUMxLDI4LjE5LDUuNjIsMzMsMTAuNTcsMzNIMjcuMDlDMzEuMjgsMzMsMzUsMjkuMSwzNSwy''@;'; put 'put ''NC42NUE4LjI5LDguMjksMCwwLDAsMjksMTYuNjZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yOSwxNi42NmExMC4wNywxMC4wNywwLDAsMCwuMjUtMi4yNGMwLS4zMywwLS42NSww''@;'; put 'put ''LTFhNy40NCw3LjQ0LDAsMCwxLTYuNi04LjU4QTEwLjEzLDEwLjEzLDAsMCwwLDE5LDQuMjMsMTAuMjYsMTAuMjYsMCwwLDAsOC45MSwxMy4zNiwxMCwxMCwwLDAsMCwxLDIzLjFDMSwyOC4xOSw1LjYyLDMzLDEwLjU3LDMzSDI3LjA5QzMxLjI4LDMzLDM1LDI5LjEsMzUsMjQuNjVBOC4yOSw4''@;'; put 'put ''LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjksMTYuNjZhMTAuMTUsMTAuMTUsMCwwLDAsLjItMS4yNmgtN0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OWwzLTUuMjFBMTAuMTksMTAuMTksMCwwLDAsOC45MSwxMy4zNiwxMCwxMCwwLDAs''@;'; put 'put ''MCwxLDIzLjFDMSwyOC4xOSw1LjYyLDMzLDEwLjU3LDMzSDI3LjA5QzMxLjI4LDMzLDM1LDI5LjEsMzUsMjQuNjVBOC4yOSw4LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTIt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxMLkNsclNoYXBlRWxsaXBzaXNI''@;'; put 'put ''b3Jpem9udGFsPSgwLEUuY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjMxLjEiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSI0LjkiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMxLjEiIGN5PSIxOCIg''@;'; put 'put ''cj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTIt''@;'; put 'put ''LWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjQuOSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxMLkNsclNoYXBlRWxsaXBzaXNWZXJ0aWNhbD0oMCxFLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIxOCIgY3k9IjQuOSIgcj0iMi45IiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjMxLjEiIHI9''@;'; put 'put ''IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjQuOSIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMzEuMSIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+Jyks''@;'; put 'put ''TC5DbHJTaGFwZUZpbHRlckdyaWQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNSwyNS44NmwyLDFWMjAuMjdhMSwxLDAsMCwwLS4yOS0uN0wxMC4yMywxM0gyNS43OWwtNi40Nyw2LjU3YTEsMSwwLDAsMC0u''@;'; put 'put ''MjkuN0wxOSwyOGwyLDFWMjAuNjhMMjcuNTgsMTRBMS40NiwxLjQ2LDAsMCwwLDI4LDEzVjEyYTEsMSwwLDAsMC0xLTFIOWExLDEsMCwwLDAtMSwxdjFhMS40NiwxLjQ2LDAsMCwwLC40MiwxTDE1LDIwLjY4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik04LDExdjEuMTJhLjUuNSwwLDAsMCwuMTUuMzVsNy4yOCw3LjM2YS41LjUsMCwwLDEsLjE1LjM1djYuODlhLjUuNSwwLDAsMCwuMjguNDVsMy45NSwxLjQxYS41LjUsMCwwLDAsLjcyLS40NWwwLTguMzlhLjU0LjU0LDAsMCwxLC4xOC0uMzVsNy4xMi03''@;'; put 'put ''LjI1YS41LjUsMCwwLDAsLjE1LS4zNVYxMVoiLz4nKSxMLkNsclNoYXBlRmlsdGVyR3JpZENpcmNsZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDI1Ljg2bDIsMVYyMC4yN2ExLDEsMCwwLDAtLjI5LS43''@;'; put 'put ''TDEwLjIzLDEzSDI1Ljc5bC02LjQ3LDYuNTdhMSwxLDAsMCwwLS4yOS43TDE5LDI4bDIsMVYyMC42OEwyNy41OCwxNEExLjQ2LDEuNDYsMCwwLDAsMjgsMTNWMTJhMSwxLDAsMCwwLTEtMUg5YTEsMSwwLDAsMC0xLDF2MWExLjQ2LDEuNDYsMCwwLDAsLjQyLDFMMTUsMjAuNjhaIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNOCwxMXYxLjEyYS41LjUsMCwwLDAsLjE1LjM1bDcuMjgsNy4zNmEuNS41LDAsMCwxLC4xNS4zNXY2Ljg5YS41LjUsMCwwLDAsLjI4LjQ1bDMuOTUsMS40MWEuNS41LDAsMCwwLC43Mi0uNDVsMC04LjM5YS41NC41NCwwLDAs''@;'; put 'put ''MSwuMTgtLjM1bDcuMTItNy4yNWEuNS41LDAsMCwwLC4xNS0uMzVWMTFaIi8+JyksTC5DbHJTaGFwZVZtQnVnPSgwLEUuY2xySWNvblNWRykoJzxyZWN0IHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjMiIGZpbGw9IiNmZmZmZmYiIG9wYWNpdHk9IjAuMTUiIHN0eWxlPSJpc29sYXRpb246''@;'; put 'put ''aXNvbGF0ZSIvPjxwYXRoIGQ9Ik0zLjc5LDE0LjgzYTEuMDksMS4wOSwwLDAsMC0xLjQ3LS41NiwxLjA5LDEuMDksMCwwLDAtLjU0LDEuNDlsMi40Nyw1LjRjLjM5Ljg1LjgsMS4yOSwxLjU3LDEuMjlTNywyMiw3LjM5LDIxLjE2bDIuMTctNC43N2EuMzMuMzMsMCwwLDEsLjMxLS4yLjM1LjM1''@;'; put 'put ''LDAsMCwxLC4zNS4zNXY0LjYxYTEuMTUsMS4xNSwwLDAsMCwxLjE0LDEuMywxLjE3LDEuMTcsMCwwLDAsMS4xNy0xLjNWMTcuMzhhMS4xNSwxLjE1LDAsMCwxLDEuMjItMS4yLDEuMTMsMS4xMywwLDAsMSwxLjE4LDEuMnYzLjc3YTEuMTcsMS4xNywwLDEsMCwyLjMyLDBWMTcuMzhhMS4xNSwx''@;'; put 'put ''LjE1LDAsMCwxLDEuMjItMS4yLDEuMTMsMS4xMywwLDAsMSwxLjE4LDEuMnYzLjc3YTEuMTYsMS4xNiwwLDEsMCwyLjMxLDBWMTYuODZhMi42OSwyLjY5LDAsMCwwLTIuNzgtMi42OSwzLjU3LDMuNTcsMCwwLDAtMi40NywxLjA1LDIuNzUsMi43NSwwLDAsMC0yLjM4LTEuMDVBMy45MywzLjkz''@;'; put 'put ''LDAsMCwwLDEyLDE1LjIyYTIuODIsMi44MiwwLDAsMC0yLjA4LTEuMDVBMi41NSwyLjU1LDAsMCwwLDcuNCwxNS44OUw1LjgyLDE5LjYzbC0yLTQuOCIgZmlsbD0iI2ZmZmZmZiIvPjxwYXRoIGQ9Ik0zMywxNC4xOEExLjE0LDEuMTQsMCwwLDAsMzEuOSwxNWwtMS4xOSwzLjczTDI5LjUsMTUu''@;'; put 'put ''MDVhMS4xOCwxLjE4LDAsMCwwLTEuMTUtLjg3aC0uMWExLjIsMS4yLDAsMCwwLTEuMTUuODdsLTEuMTksMy43MS0xLjE4LTMuNzFhMS4xNSwxLjE1LDAsMCwwLTEuMTEtLjg3LDEuMDgsMS4wOCwwLDAsMC0xLjEyLDEuMDcsMS42OCwxLjY4LDAsMCwwLC4xLjU0bDIsNS43YTEuMjcsMS4yNyww''@;'; put 'put ''LDAsMCwxLjI3LDEsMS4yNCwxLjI0LDAsMCwwLDEuMi0uOTNsMS4yLTMuNjQsMS4yLDMuNjRhMS4yNSwxLjI1LDAsMCwwLDEuMjYuOTNBMS4yNywxLjI3LDAsMCwwLDMyLDIxLjVMMzQsMTUuNzNhMS43NywxLjc3LDAsMCwwLC4wOC0uNDhBMS4wNywxLjA3LDAsMCwwLDMzLDE0LjE4WiIgZmls''@;'; put 'put ''bD0iI2ZmZmZmZiIvPicpLEwuQ2xyU2hhcGVTZWFyY2g9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNi4zMyw1LjA1QTEwLjk1LDEwLjk1LDAsMSwxLDUuMzksMTYsMTEsMTEsMCwwLDEsMTYuMzMsNS4wNW0w''@;'; put 'put ''LTIuMDVhMTMsMTMsMCwxLDAsMTMsMTMsMTMsMTMsMCwwLDAtMTMtMTNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zNSwzMy4yOWwtNy4zNy03LjQyLTEuNDIsMS40MSw3LjM3LDcuNDJBMSwxLDAsMSww''@;'; put 'put ''LDM1LDMzLjI5WiIvPicpLEwuQ2xyU2hhcGVWaWV3Q29sdW1ucz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLDVINUEyLDIsMCwwLDAsMyw3VjI5YTIsMiwwLDAsMCwyLDJIMzFhMiwyLDAsMCwwLDItMlY3''@;'; put 'put ''QTIsMiwwLDAsMCwzMSw1Wk0xMywyOUg1VjdoOFptMTAsMEgxNVY3aDhaIi8+JyksTC5DbHJTaGFwZUFuZ2xlRG91YmxlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjksMTkuNDFhMSwxLDAsMCwxLS43MS0u''@;'; put 'put ''MjlMMTgsOC44Myw3LjcxLDE5LjEyYTEsMSwwLDAsMS0xLjQxLTEuNDFMMTgsNiwyOS43MSwxNy43MUExLDEsMCwwLDEsMjksMTkuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yOSwzMC40MWExLDEs''@;'; put 'put ''MCwwLDEtLjcxLS4yOUwxOCwxOS44Myw3LjcxLDMwLjEyYTEsMSwwLDAsMS0xLjQxLTEuNDFMMTgsMTcsMjkuNzEsMjguNzFBMSwxLDAsMCwxLDI5LDMwLjQxWiIvPicpLEwuQ2xyU2hhcGVDYWxlbmRhcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLjI1LDZIMjlWOGgzVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCwwLDMyLjI1LDZa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHg9IjgiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTMiIHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIyMCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8''@;'; put 'put ''cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgeD0iMjYiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIHg9IjgiIHk9IjE5IiB3''@;'; put 'put ''aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIHg9IjE0IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiB4PSIyMCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgeD0iMjYiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+''@;'; put 'put ''XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIiB4PSI4IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xMSIgeD0iMTQiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEyIiB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8''@;'; put 'put ''cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTMiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNCIgZD0iTTEwLDEwYTEs''@;'; put 'put ''MSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNSIgZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAs''@;'; put 'put ''MCwwLDI2LDEwWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNiIgeD0iMTMiIHk9IjYiIHdpZHRoPSIxMCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzIsMTMuMjJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAs''@;'; put 'put ''MCwxLDMyLDEzLjIyWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgeD0iOCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJh''@;'; put 'put ''ZGdlZCIgeD0iMjAiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiB4PSIyNiIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiIHg9IjgiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIiB4PSIxNCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1iYWRnZWQiIHg9IjIwIiB5PSIxOSIg''@;'; put 'put ''d2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWJhZGdlZCIgeD0iMjYiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3Qg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTAtLWJhZGdlZCIgeD0iOCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xMS0tYmFkZ2VkIiB4PSIxNCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMi0tYmFkZ2VkIiB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9''@;'; put 'put ''IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMy0tYmFkZ2VkIiB4PSIyNiIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNC0tYmFkZ2VkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMTUtLWJhZGdlZCIgZD0iTTIyLjUsNkgxM1Y4aDkuNzhBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE2LS1iYWRnZWQgY2xyLWktYmFk''@;'; put 'put ''Z2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMzJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcu''@;'; put 'put ''ODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9IjgiIHk9''@;'; put 'put ''IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiB4PSI4IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC01LS1hbGVydGVkIiB4PSIxNCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIgeD0iMjAiIHk9IjE5IiB3aWR0aD0i''@;'; put 'put ''MiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWFsZXJ0ZWQiIHg9IjI2IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC04LS1hbGVydGVkIiB4PSI4IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC05''@;'; put 'put ''LS1hbGVydGVkIiB4PSIxNCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTAtLWFsZXJ0ZWQiIHg9IjIwIiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0i''@;'; put 'put ''MiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMS0tYWxlcnRlZCIgeD0iMjYiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEyLS1hbGVydGVkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+PHBvbHlnb24gcG9pbnRzPSIyMS4yOSA2IDEzIDYgMTMgOCAyMC4xNCA4IDIxLjI5IDYiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAs''@;'; put 'put ''MzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuMjUsNmgtNFY5YTIuMiwyLjIsMCwxLDEtNC40LDBWNkgxMi4yVjlBMi4yLDIu''@;'; put 'put ''MiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNlpNMTAsMjZIOFYyNGgyWm0wLTVIOFYxOWgyWm0wLTVIOFYx''@;'; put 'put ''NGgyWm02LDEwSDE0VjI0aDJabTAtNUgxNFYxOWgyWm0wLTVIMTRWMTRoMlptNiwxMEgyMFYyNGgyWm0wLTVIMjBWMTloMlptMC01SDIwVjE0aDJabTYsMTBIMjZWMjRoMlptMC01SDI2VjE5aDJabTAtNUgyNlYxNGgyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMjYsMTBhMSwxLDAs''@;'; put 'put ''MCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAsMjYsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5''@;'; put 'put ''QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMwLDEzLjVBNy41LDcuNSwwLDAsMSwyMi41LDZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEEx''@;'; put 'put ''Ljc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41Wk0xMCwyNkg4VjI0aDJabTAtNUg4VjE5aDJabTAtNUg4VjE0aDJabTYsMTBIMTRWMjRoMlpt''@;'; put 'put ''MC01SDE0VjE5aDJabTAtNUgxNFYxNGgyWm02LDEwSDIwVjI0aDJabTAtNUgyMFYxOWgyWm0wLTVIMjBWMTRoMlptNiwxMEgyNlYyNGgyWm0wLTVIMjZWMTloMlptMC01SDI2VjE0aDJaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMuNjgs''@;'; put 'put ''My42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5LDZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4Wk0xMCwyNkg4VjI0aDJabTAt''@;'; put 'put ''NUg4VjE5aDJabTAtNUg4VjE0aDJabTYsMTBIMTRWMjRoMlptMC01SDE0VjE5aDJabTAtNUgxNFYxNGgyWm02LDEwSDIwVjI0aDJabTAtNUgyMFYxOWgyWm02LDVIMjZWMjRoMlptMC01SDI2VjE5aDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxMLkNsclNoYXBlRXZlbnQ9KDAs''@;'; put 'put ''RS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNi4xNywyNS44NiwxMC44MSwyMC41YTEsMSwwLDAsMSwxLjQxLTEuNDFMMTYuMTcsMjNsOC42NC04LjY0YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMi4yNSw2SDI5VjhoM1YzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwz''@;'; put 'put ''NCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0yNiwxMGExLDEsMCwwLDAsMS0xVjNhMSwxLDAsMCwwLTIsMFY5QTEsMSwwLDAsMCwyNiwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgeD0iMTMiIHk9IjYiIHdpZHRoPSIxMCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTAuODEsMjAu''@;'; put 'put ''NWw1LjM2LDUuMzZMMjYuMjIsMTUuODFhMSwxLDAsMCwwLTEuNDEtMS40MUwxNi4xNywyM2wtMy45NC0zLjk0YTEsMSwwLDAsMC0xLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFk''@;'; put 'put ''Z2VkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzIsMTMuMjJWMzBI''@;'; put 'put ''NFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgZD0iTTIyLjUsNkgxM1Y4aDkuNzhBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSww''@;'; put 'put ''LDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xMC44MSwyMC41bDUuMzYsNS4zNkwyNi4yMiwxNS44MWExLDEsMCwwLDAsLjIz''@;'; put 'put ''LS40MUgyMy44TDE2LjE3LDIzbC0zLjk0LTMuOTRhMSwxLDAsMCwwLTEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgcG9pbnRzPSIyMS4yOSA2IDEzIDYgMTMg''@;'; put 'put ''OCAyMC4xNCA4IDIxLjI5IDYiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMzJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAu''@;'; put 'put ''MTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9''@;'; put 'put ''Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0xIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFW''@;'; put 'put ''M2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAsMCwwLDI2LDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0zMi4yNSw2aC00VjlhMi4yLDIuMiwwLDAsMS00LjQsMFY2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5''@;'; put 'put ''VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2Wk0yNS45NCwxNi41OGwtOS42Nyw5LjY3TDExLDIwLjk0QTEuMzYsMS4zNiwwLDAs''@;'; put 'put ''MSwxMi45LDE5bDMuMzgsMy4zOEwyNCwxNC42NmExLjM2LDEuMzYsMCwxLDEsMS45MywxLjkzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNB''@;'; put 'put ''MSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgyNi4zYTEuMzQsMS4zNCwwLDAsMS0uMzYsMS4xOGwtOS42''@;'; put 'put ''Nyw5LjY3TDExLDIwLjk0QTEuMzYsMS4zNiwwLDAsMSwxMi45LDE5bDMuMzgsMy4zOCw3LTdoLTFBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjEuMjksNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCww''@;'; put 'put ''LDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFB''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MS0tYmFkZ2VkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMCwxMy41QTcu''@;'; put 'put ''NSw3LjUsMCwwLDEsMjIuNSw2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzAsMTMuNVpt''@;'; put 'put ''LTQuMDYsMy4wOC05LjY3LDkuNjdMMTEsMjAuOTRBMS4zNiwxLjM2LDAsMCwxLDEyLjksMTlsMy4zOCwzLjM4TDI0LDE0LjY2YTEuMzYsMS4zNiwwLDEsMSwxLjkzLDEuOTNaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLEwuQ2xyU2hhcGVFeWU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjYyLDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0xMFM1LjM0LDExLjMsMiwxNy41M0wxLjcyLDE4bC4y''@;'; put 'put ''Ni40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMHMxMi40Ni0zLjcyLDE1LjgyLTEwbC4yNi0uNDhaTTE3LjgsMjYuNDNDMTIuMTcsMjYuNDMsNywyMy4yOSw0LDE4YzMtNS4yOSw4LjE3LTguNDMsMTMuOC04LjQzUzI4LjU0LDEyLjcyLDMxLjU5LDE4QzI4LjU0LDIzLjI5LDIzLjQyLDI2''@;'; put 'put ''LjQzLDE3LjgsMjYuNDNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjA5LDExLjE3QTYuODYsNi44NiwwLDEsMCwyNSwxOCw2Ljg2LDYuODYsMCwwLDAsMTguMDksMTEuMTdabTAsMTEuNzJBNC44Niw0Ljg2''@;'; put 'put ''LDAsMSwxLDIzLDE4LDQuODcsNC44NywwLDAsMSwxOC4wOSwyMi44OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjIsMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1LjgyLTEwUzUuMzQsMTEuMywyLDE3''@;'; put 'put ''LjUzTDEuNzIsMThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4LDEwLDE1LjgyLDEwczEyLjQ2LTMuNzIsMTUuODItMTBsLjI2LS40OFpNMTcuOCwyNi40M0MxMi4xNywyNi40Myw3LDIzLjI5LDQsMThjMy01LjI5LDguMTctOC40MywxMy44LTguNDNTMjguNTQsMTIuNzIsMzEuNTksMThDMjguNTQs''@;'; put 'put ''MjMuMjksMjMuNDIsMjYuNDMsMTcuOCwyNi40M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4LjA5IiBjeT0iMTguMDMiIHI9IjYuODYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz4n''@;'; put 'put ''KSxMLkNsclNoYXBlRXllSGlkZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUuMTksMjAuNEE2Ljc4LDYuNzgsMCwwLDAsMjUuNjIsMThhNi44Niw2Ljg2LDAsMCwwLTYuODYtNi44Niw2Ljc5LDYuNzksMCwwLDAtMi4zNy40M0wxOCwxMy4yM2E0Ljc4LDQuNzgsMCwwLDEsLjc0LS4w''@;'; put 'put ''NkE0Ljg3LDQuODcsMCwwLDEsMjMuNjIsMThhNC43OSw0Ljc5LDAsMCwxLS4wNi43NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQuMjksMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1LjgyLTEwYTE2Ljgy''@;'; put 'put ''LDE2LjgyLDAsMCwwLTUuMjQuODVMMTQuODQsMTBhMTQuNzgsMTQuNzgsMCwwLDEsMy42My0uNDdjNS42MywwLDEwLjc1LDMuMTQsMTMuOCw4LjQzYTE3Ljc1LDE3Ljc1LDAsMCwxLTQuMzcsNS4xbDEuNDIsMS40MmExOS45MywxOS45MywwLDAsMCw1LTZsLjI2LS40OFoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNC44Nyw1Ljc4bDQuNDYsNC40NmExOS41MiwxOS41MiwwLDAsMC02LjY5LDcuMjlMMi4zOCwxOGwuMjYuNDhjMy4zNyw2LjIzLDkuMjgsMTAsMTUuODIsMTBhMTYuOTMsMTYuOTMsMCwwLDAs''@;'; put 'put ''Ny4zNy0xLjY5bDUsNSwxLjc1LTEuNS0yNi0yNlptOS43NSw5Ljc1LDYuNjUsNi42NWE0LjgxLDQuODEsMCwwLDEtMi41LjcyQTQuODcsNC44NywwLDAsMSwxMy45LDE4LDQuODEsNC44MSwwLDAsMSwxNC42MiwxNS41M1ptLTEuNDUtMS40NWE2Ljg1LDYuODUsMCwwLDAsOS41NSw5LjU1bDEu''@;'; put 'put ''NiwxLjZhMTQuOTEsMTQuOTEsMCwwLDEtNS44NiwxLjJjLTUuNjMsMC0xMC43NS0zLjE0LTEzLjgtOC40M2ExNy4yOSwxNy4yOSwwLDAsMSw2LjEyLTYuM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguMzcs''@;'; put 'put ''MTEuMTdBNi43OSw2Ljc5LDAsMCwwLDE2LDExLjZsOC44LDguOEE2Ljc4LDYuNzgsMCwwLDAsMjUuMjMsMTgsNi44Niw2Ljg2LDAsMCwwLDE4LjM3LDExLjE3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTM0LjI5LDE3''@;'; put 'put ''LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0xMGExNi44MiwxNi44MiwwLDAsMC01LjI0Ljg1TDE0Ljg0LDEwYTE0Ljc4LDE0Ljc4LDAsMCwxLDMuNjMtLjQ3YzUuNjMsMCwxMC43NSwzLjE0LDEzLjgsOC40M2ExNy43NSwxNy43NSwwLDAsMS00LjM3LDUuMWwxLjQyLDEuNDJhMTkuOTMs''@;'; put 'put ''MTkuOTMsMCwwLDAsNS02bC4yNi0uNDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNC44Nyw1Ljc4bDQuNDYsNC40NmExOS41MiwxOS41MiwwLDAsMC02LjY5LDcuMjlMMi4zOCwxOGwuMjYuNDhjMy4zNyw2LjIzLDku''@;'; put 'put ''MjgsMTAsMTUuODIsMTBhMTYuOTMsMTYuOTMsMCwwLDAsNy4zNy0xLjY5bDUsNSwxLjc1LTEuNS0yNi0yNlptOC4zLDguM2E2Ljg1LDYuODUsMCwwLDAsOS41NSw5LjU1bDEuNiwxLjZhMTQuOTEsMTQuOTEsMCwwLDEtNS44NiwxLjJjLTUuNjMsMC0xMC43NS0zLjE0LTEzLjgtOC40M2ExNy4y''@;'; put 'put ''OSwxNy4yOSwwLDAsMSw2LjEyLTYuM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz4nKSxMLkNsclNoYXBlU3RlcEZvcndhcmQyPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik03LjA4LDYuNTJhMS42OCwxLjY4LDAsMCwwLDAsMi40TDE2LjUxLDE4LDcuMTIs''@;'; put 'put ''MjcuMDhhMS43LDEuNywwLDAsMCwyLjM2LDIuNDRoMEwyMS40LDE4LDkuNDgsNi40N0ExLjY5LDEuNjksMCwwLDAsNy4wOCw2LjUyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI2LjQ5LDVhMS43LDEuNywwLDAsMC0xLjcsMS43VjI5''@;'; put 'put ''LjNhMS43LDEuNywwLDAsMCwzLjQsMFY2LjdBMS43LDEuNywwLDAsMCwyNi40OSw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZUFycm93PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNy42NiwxNS42MSwxOCw2LDguMzQs''@;'; put 'put ''MTUuNjFBMSwxLDAsMSwwLDkuNzUsMTdMMTcsOS44MVYyOC45NGExLDEsMCwxLDAsMiwwVjkuODFMMjYuMjUsMTdhMSwxLDAsMCwwLDEuNDEtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+JyksTC5Db3JlU2hhcGVzPXsidW5rbm93bi1zdGF0dXMi''@;'; put 'put ''OkwuQ2xyU2hhcGVVbmtub3duU3RhdHVzLGhvbWU6TC5DbHJTaGFwZUhvbWUsY29nOkwuQ2xyU2hhcGVDb2csY2hlY2s6TC5DbHJTaGFwZUNoZWNrLHRpbWVzOkwuQ2xyU2hhcGVUaW1lcywiZXhjbGFtYXRpb24tdHJpYW5nbGUiOkwuQ2xyU2hhcGVFeGNsYW1hdGlvblRyaWFuZ2xlLCJleGNs''@;'; put 'put ''YW1hdGlvbi1jaXJjbGUiOkwuQ2xyU2hhcGVFeGNsYW1hdGlvbkNpcmNsZSwiY2hlY2stY2lyY2xlIjpMLkNsclNoYXBlQ2hlY2tDaXJjbGUsImluZm8tY2lyY2xlIjpMLkNsclNoYXBlSW5mb0NpcmNsZSwiaW5mby1zdGFuZGFyZCI6TC5DbHJTaGFwZUluZm9TdGFuZGFyZCwic3VjY2Vzcy1z''@;'; put 'put ''dGFuZGFyZCI6TC5DbHJTaGFwZVN1Y2Nlc3NTdGFuZGFyZCwiZXJyb3Itc3RhbmRhcmQiOkwuQ2xyU2hhcGVFcnJvclN0YW5kYXJkLCJ3YXJuaW5nLXN0YW5kYXJkIjpMLkNsclNoYXBlV2FybmluZ1N0YW5kYXJkLCJoZWxwLWluZm8iOkwuQ2xyU2hhcGVIZWxwSW5mbyxiYXJzOkwuQ2xyU2hh''@;'; put 'put ''cGVCYXJzLHVzZXI6TC5DbHJTaGFwZVVzZXIsYW5nbGU6TC5DbHJTaGFwZUFuZ2xlLGZvbGRlcjpMLkNsclNoYXBlRm9sZGVyLCJmb2xkZXItb3BlbiI6TC5DbHJTaGFwZUZvbGRlck9wZW4sYmVsbDpMLkNsclNoYXBlQmVsbCxpbWFnZTpMLkNsclNoYXBlSW1hZ2UsY2xvdWQ6TC5DbHJTaGFw''@;'; put 'put ''ZUNsb3VkLCJlbGxpcHNpcy1ob3Jpem9udGFsIjpMLkNsclNoYXBlRWxsaXBzaXNIb3Jpem9udGFsLCJlbGxpcHNpcy12ZXJ0aWNhbCI6TC5DbHJTaGFwZUVsbGlwc2lzVmVydGljYWwsImZpbHRlci1ncmlkIjpMLkNsclNoYXBlRmlsdGVyR3JpZCwiZmlsdGVyLWdyaWQtY2lyY2xlIjpMLkNs''@;'; put 'put ''clNoYXBlRmlsdGVyR3JpZENpcmNsZSwidm0tYnVnIjpMLkNsclNoYXBlVm1CdWcsc2VhcmNoOkwuQ2xyU2hhcGVTZWFyY2gsInZpZXctY29sdW1ucyI6TC5DbHJTaGFwZVZpZXdDb2x1bW5zLCJhbmdsZS1kb3VibGUiOkwuQ2xyU2hhcGVBbmdsZURvdWJsZSxjYWxlbmRhcjpMLkNsclNoYXBl''@;'; put 'put ''Q2FsZW5kYXIsZXZlbnQ6TC5DbHJTaGFwZUV2ZW50LGV5ZTpMLkNsclNoYXBlRXllLCJleWUtaGlkZSI6TC5DbHJTaGFwZUV5ZUhpZGUsInN0ZXAtZm9yd2FyZC0yIjpMLkNsclNoYXBlU3RlcEZvcndhcmQyLGFycm93OkwuQ2xyU2hhcGVBcnJvd30sT2JqZWN0LmRlZmluZVByb3BlcnR5KEwu''@;'; put 'put ''Q29yZVNoYXBlcywiaG91c2UiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Db3JlU2hhcGVzLmhvbWUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJzZXR0aW5ncyIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMuY29nKSksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KEwuQ29yZVNoYXBlcywic3VjY2VzcyIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMuY2hlY2spKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJjbG9zZSIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMudGltZXMpKSxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJ3YXJuaW5nIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuQ29yZVNoYXBlc1siZXhjbGFtYXRpb24tdHJpYW5nbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkNvcmVTaGFwZXMsImVycm9yIiwoMCxCLmRlc2NyaXB0b3JDb25m''@;'; put 'put ''aWcpKEwuQ29yZVNoYXBlc1siZXhjbGFtYXRpb24tY2lyY2xlIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJpbmZvIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuQ29yZVNoYXBlc1siaW5mby1jaXJjbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkNvcmVT''@;'; put 'put ''aGFwZXMsIm1lbnUiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Db3JlU2hhcGVzLmJhcnMpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJhdmF0YXIiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Db3JlU2hhcGVzLnVzZXIpKSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''TC5Db3JlU2hhcGVzLCJjYXJldCIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMuYW5nbGUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Db3JlU2hhcGVzLCJkaXJlY3RvcnkiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Db3JlU2hhcGVzLmZvbGRlcikpLE9iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShMLkNvcmVTaGFwZXMsIm5vdGlmaWNhdGlvbiIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkNvcmVTaGFwZXMuYmVsbCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkNvcmVTaGFwZXMsImNvbGxhcHNlIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuQ29yZVNoYXBl''@;'; put 'put ''c1siYW5nbGUtZG91YmxlIl0pKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9lc3NlbnRpYWwtc2hhcGVzLnRzIjpmdW5jdGlvbihKZSxMLG1lKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEwuQ2xyU2hhcGVMb2dv''@;'; put 'put ''dXQ9TC5DbHJTaGFwZUxvZ2luPUwuQ2xyU2hhcGVIZWxwPUwuQ2xyU2hhcGVDb3B5PUwuQ2xyU2hhcGVDaGlsZEFycm93PUwuQ2xyU2hhcGVDaXJjbGVBcnJvdz1MLkNsclNoYXBlQWxhcm1DbG9jaz1MLkNsclNoYXBlQ2xvY2s9TC5DbHJTaGFwZUhpc3Rvcnk9TC5DbHJTaGFwZVRhZ3M9TC5D''@;'; put 'put ''bHJTaGFwZVRhZz1MLkNsclNoYXBlVHJhc2g9TC5DbHJTaGFwZVRpbWVzQ2lyY2xlPUwuQ2xyU2hhcGVCYW49TC5DbHJTaGFwZVBsdXNDaXJjbGU9TC5DbHJTaGFwZU1pbnVzQ2lyY2xlPUwuQ2xyU2hhcGVNaW51cz1MLkNsclNoYXBlUGx1cz1MLkNsclNoYXBlRmlsZT1MLkNsclNoYXBlUGlu''@;'; put 'put ''PUwuQ2xyU2hhcGVGaWx0ZXI9TC5DbHJTaGFwZVBvcE91dD1MLkNsclNoYXBlVXNlcnM9TC5DbHJTaGFwZVVubG9jaz1MLkNsclNoYXBlTG9jaz1MLkNsclNoYXBlVXBsb2FkPUwuQ2xyU2hhcGVEb3dubG9hZD1MLkNsclNoYXBlTGlnaHRidWxiPUwuQ2xyU2hhcGVWaWV3Q2FyZHM9TC5DbHJT''@;'; put 'put ''aGFwZVZpZXdMaXN0PUwuQ2xyU2hhcGVTeW5jPUwuQ2xyU2hhcGVSZWZyZXNoPUwuQ2xyU2hhcGVOb3RlPUwuQ2xyU2hhcGVQZW5jaWw9TC5DbHJTaGFwZVRoZXJtb21ldGVyPUwuQ2xyU2hhcGVCdWc9TC5DbHJTaGFwZVNjaXNzb3JzPUwuQ2xyU2hhcGVBc3Rlcmlzaz1MLkNsclNoYXBlQm9v''@;'; put 'put ''az1MLkNsclNoYXBlT2JqZWN0cz1MLkNsclNoYXBlUmVzaXplPUwuQ2xyU2hhcGVDdXJzb3JIYW5kQ2xpY2s9TC5DbHJTaGFwZUN1cnNvckhhbmQ9TC5DbHJTaGFwZUN1cnNvckFycm93PUwuQ2xyU2hhcGVHcmlkVmlldz1MLkNsclNoYXBlQnViYmxlRXhjbGFtYXRpb249TC5DbHJTaGFwZU5l''@;'; put 'put ''dz1MLkNsclNoYXBlQWxhcm1PZmY9TC5DbHJTaGFwZVBpbmJvYXJkPUwuQ2xyU2hhcGVBZGRUZXh0PXZvaWQgMCxMLkNsclNoYXBlQ2xvbmU9TC5DbHJTaGFwZUN1cnNvck1vdmU9TC5DbHJTaGFwZVdhbmQ9TC5DbHJTaGFwZVN1bj1MLkNsclNoYXBlTW9vbj1MLkNsclNoYXBlRmlsdGVyMj1M''@;'; put 'put ''LkNsclNoYXBlRHJhZ0hhbmRsZT1MLkNsclNoYXBlQ29weVRvQ2xpcGJvYXJkPUwuQ2xyU2hhcGVDb2xvclBpY2tlcj1MLkNsclNoYXBlQnJpZWZjYXNlPUwuQ2xyU2hhcGVFeHBhbmRDYXJkPUwuQ2xyU2hhcGVDb2xsYXBzZUNhcmQ9TC5DbHJTaGFwZVNvcnRCeT1MLkNsclNoYXBlQWNjZXNz''@;'; put 'put ''aWJpbGl0eTI9TC5DbHJTaGFwZUFjY2Vzc2liaWxpdHkxPUwuQ2xyU2hhcGVTaHJpbms9TC5DbHJTaGFwZVBhcGVyY2xpcD1MLkNsclNoYXBlRmlsZUdyb3VwPUwuQ2xyU2hhcGVSZXBlYXQ9TC5DbHJTaGFwZUlkQmFkZ2U9TC5DbHJTaGFwZUJhbGFuY2U9TC5DbHJTaGFwZU9yZ2FuaXphdGlv''@;'; put 'put ''bj1MLkNsclNoYXBlTm9BY2Nlc3M9TC5DbHJTaGFwZUhvdXJnbGFzcz1MLkNsclNoYXBlRmxhbWU9TC5DbHJTaGFwZVRhcmdldD1MLkNsclNoYXBlQnVsbHNleWU9TC5DbHJTaGFwZVdyZW5jaD1MLkNsclNoYXBlQm9sdD1MLkNsclNoYXBlTGlicmFyeT1MLkNsclNoYXBlS2V5PUwuQ2xyU2hh''@;'; put 'put ''cGVab29tT3V0PUwuQ2xyU2hhcGVab29tSW49TC5DbHJTaGFwZVdpbmRvd1Jlc3RvcmU9TC5DbHJTaGFwZVdpbmRvd01pbj1MLkNsclNoYXBlV2luZG93TWF4PUwuQ2xyU2hhcGVXaW5kb3dDbG9zZT1MLkNsclNoYXBlVG9vbHM9TC5DbHJTaGFwZVN3aXRjaD1MLkNsclNoYXBlVHdvV2F5QXJy''@;'; put 'put ''b3dzPUwuQ2xyU2hhcGVGaWxlU2V0dGluZ3M9TC5DbHJTaGFwZVNjcm9sbD1MLkNsclNoYXBlVW5kbz1MLkNsclNoYXBlUmVkbz1MLkNsclNoYXBlTGlzdD1MLkNsclNoYXBlRmlyZXdhbGw9TC5DbHJTaGFwZUNsaXBib2FyZD1MLkNsclNoYXBlU2xpZGVyPUwuQ2xyU2hhcGVXb3JsZD1MLkNs''@;'; put 'put ''clNoYXBlUHJpbnRlcj12b2lkIDAsTC5Fc3NlbnRpYWxTaGFwZXM9TC5DbHJTaGFwZUNvbG9yUGFsZXR0ZT1MLkNsclNoYXBlRmlyc3RBaWQ9TC5DbHJTaGFwZUJldGE9TC5DbHJTaGFwZURvdENpcmNsZT1MLkNsclNoYXBlQ2lyY2xlPUwuQ2xyU2hhcGVDcm9zc2hhaXJzPUwuQ2xyU2hhcGVW''@;'; put 'put ''b2x1bWU9TC5DbHJTaGFwZVRhYmxlPUwuQ2xyU2hhcGVTbm93Zmxha2U9TC5DbHJTaGFwZUZ1ZWw9TC5DbHJTaGFwZUZvcm09TC5DbHJTaGFwZUZpc2g9TC5DbHJTaGFwZVRyZWU9TC5DbHJTaGFwZVJlY3ljbGU9TC5DbHJTaGFwZUZpbHRlck9mZj1MLkNsclNoYXBlRmlsZVppcD1MLkNsclNo''@;'; put 'put ''YXBlQ3Vyc29ySGFuZE9wZW49TC5DbHJTaGFwZUN1cnNvckhhbmRHcmFiPUwuQ2xyU2hhcGVUcmVlVmlldz1MLkNsclNoYXBlUG9ydHJhaXQ9TC5DbHJTaGFwZVBhc3RlPUwuQ2xyU2hhcGVMYW5kc2NhcGU9TC5DbHJTaGFwZUVyYXNlcj1MLkNsclNoYXBlRHJhZ0hhbmRsZUNvcm5lcj1MLkNs''@;'; put 'put ''clNoYXBlRGV0YWlscz12b2lkIDA7dmFyIEI9bWUoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIiksRT1tZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKSxFZT1tZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMv''@;'; put 'put ''c2hhcGVzL2NvcmUtc2hhcGVzLnRzIik7TC5DbHJTaGFwZUFkZFRleHQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMSwyMUgxM2ExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTEyLDE2YTEsMSwwLDAsMCwxLDFIMzFhMSwxLDAsMCwwLDAtMkgxM0ExLDEsMCwwLDAsMTIsMTZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMyIgZD0iTTI3LDI3SDEzYTEsMSwwLDAsMCwwLDJIMjdhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMTUuODksOWExLDEsMCwwLDAtMS0xSDEwVjMuMjFhMSwxLDAs''@;'; put 'put ''MCwwLTIsMFY4SDIuODlhMSwxLDAsMCwwLDAsMkg4djUuMjFhMSwxLDAsMCwwLDIsMFYxMGg0Ljg5QTEsMSwwLDAsMCwxNS44OSw5WiIvPicpLEwuQ2xyU2hhcGVQaW5ib2FyZD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgZD0iTTMwLDMwLDYsMzAsNiw2SDIyVjRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxNEgzMFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzMuNTcsOS4zM2wt''@;'; put 'put ''Ny03YTEsMSwwLDAsMC0xLjQxLDEuNDFsNyw3YTEsMSwwLDEsMCwxLjQxLTEuNDFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTIyLjEsMTEuMTlsLjcuNUwyNi40Niw4LDI1LDYuNTYsMjIuNTEsOS4xM2MtMi0u''@;'; put 'put ''ODctNC4zNS4xNC01LjkyLDEuNjhsLS43Mi43MSwzLjU0LDMuNTQtMy42NywzLjY3LDEuNDEsMS40MSwzLjY3LTMuNjdMMjQuMzcsMjBsLjcxLS43MmMxLjU0LTEuNTcsMi41NS0zLjkyLDEuNjgtNS45M2wyLjU0LTIuNTdMMjcuODgsOS4zOCwyNC4yMSwxMy4xbC40OS42OWMuNzYsMSwuMjUs''@;'; put 'put ''Mi4zNy0uNDEsMy4zM0wxOC43NywxMS42QzE5Ljg0LDEwLjg2LDIxLjE1LDEwLjUsMjIuMSwxMS4xOVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMCwzMCw2LDMwLDYsNkgyMlY0SDZBMiwyLDAsMCwwLDQsNlYzMGEy''@;'; put 'put ''LDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTRIMzBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzMuNTcsOS4zM2wtNy03YTEsMSwwLDAsMC0xLjQxLDEuNDFsMS4zOCwxLjM4LTQsNGMtMi0uODctNC4zNS4x''@;'; put 'put ''NC01LjkyLDEuNjhsLS43Mi43MSwzLjU0LDMuNTQtMy42NywzLjY3LDEuNDEsMS40MSwzLjY3LTMuNjdMMjQuMzcsMjBsLjcxLS43MmMxLjU0LTEuNTcsMi41NS0zLjkxLDEuNjgtNS45Mmw0LTQsMS4zOCwxLjM4YTEsMSwwLDEsMCwxLjQxLTEuNDFaIi8+JyksTC5DbHJTaGFwZUFsYXJtT2Zm''@;'; put 'put ''PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEuNDcsMy44NGE1Ljc4LDUuNzgsMCwwLDAtNy4zNy0uNjMsMTYuMDgsMTYuMDgsMCwwLDEsOC4yLDcuNjVBNS43Myw1LjczLDAsMCwwLDMxLjQ3LDMuODRaIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI1LjMzLDIxLjU0YS45LjksMCwwLDAtLjQxLTEuMmwtMy4yLTEuNTZMMjQuODksMjJBLjg5Ljg5LDAsMCwwLDI1LjMzLDIxLjU0WiIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOCw4LjZhLjkuOSwwLDAsMC0uOS45djQuNmwxLjgsMS44MVY5LjVBLjkuOSwwLDAsMCwxOCw4LjZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNCIgZD0iTTExLjQyLDMuNDNhNS44LDUuOCwwLDAsMC01LjgxLS44MUw4LjMsNS4zMkExNiwxNiwwLDAsMSwxMS40MiwzLjQzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIGQ9Ik0xOCw0YTEzLjkxLDEzLjkxLDAs''@;'; put 'put ''MCwwLTguMywyLjc1bDEuNDIsMS40M0ExMiwxMiwwLDAsMSwyNy44MiwyNC45bDEuNDIsMS40M0ExNCwxNCwwLDAsMCwxOCw0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIGQ9Ik0xLjU2LDQuMjEsMi43Myw1LjM4YTUu''@;'; put 'put ''Nyw1LjcsMCwwLDAsLjY3LDYuMUExNS43OCwxNS43OCwwLDAsMSw1LjQ2LDguMTJMNi44OCw5LjU1QTEzLjk0LDEzLjk0LDAsMCwwLDguMTEsMjcuODhMNS41NiwzMC40M0ExLDEsMCwxLDAsNywzMS44NGwyLjY2LTIuNjZhMTMuODksMTMuODksMCwwLDAsMTYuOCwwbDQuMTQsNC4xNUwzMiwz''@;'; put 'put ''MS45LDMsMi44Wk0yNSwyNy43MkExMS44OSwxMS44OSwwLDAsMSwxOCwzMCwxMiwxMiwwLDAsMSw2LDE4YTExLjg5LDExLjg5LDAsMCwxLDIuMjktN1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMS40NywzLjg0YTUu''@;'; put 'put ''NzgsNS43OCwwLDAsMC03LjM3LS42MywxNi4wOCwxNi4wOCwwLDAsMSw4LjIsNy42NUE1LjczLDUuNzMsMCwwLDAsMzEuNDcsMy44NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xMS40MiwzLjQzYTUuOCw1LjgsMCww''@;'; put 'put ''LDAtNS43Ny0uODJMOC4zMyw1LjNBMTYsMTYsMCwwLDEsMTEuNDIsMy40M1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0yNC45MiwyMS45NGw0LjM0LDQuMzZBMTQsMTQsMCwwLDAsOS43NSw2LjczTDE3LDE0VjkuNjlh''@;'; put 'put ''MSwxLDAsMCwxLDIsMFYxNmwyLjMzLDIuMzRMMjUsMjAuMWExLDEsMCwwLDEsLjQ3LDEuMzNBMSwxLDAsMCwxLDI0LjkyLDIxLjk0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgZD0iTTEuNjEsNC4yMSwyLjczLDUuMzRhNS43''@;'; put 'put ''Myw1LjczLDAsMCwwLC42Nyw2LjE1QTE1Ljg4LDE1Ljg4LDAsMCwxLDUuNDgsOC4xTDYuOTEsOS41MkExMy45NCwxMy45NCwwLDAsMCw4LjExLDI3Ljg4TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjg5LDEzLjg5LDAsMCwwLDE2LjgzLDBsNC4xNiw0LjE3TDMy''@;'; put 'put ''LDMxLjksMywyLjhaIi8+JyksTC5DbHJTaGFwZU5ldz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM0LjU5LDIzbC00LjA4LTUsNC00LjlhMS44MiwxLjgyLDAsMCwwLC4yMy0xLjk0QTEuOTMsMS45MywwLDAs''@;'; put 'put ''MCwzMi45NCwxMGgtMzFBMS45MSwxLjkxLDAsMCwwLDAsMTEuODhWMjQuMTNBMS45MSwxLjkxLDAsMCwwLDEuOTQsMjZIMzMuMDVhMS45MywxLjkzLDAsMCwwLDEuNzctMS4wOUExLjgyLDEuODIsMCwwLDAsMzQuNTksMjNaTTIsMjRWMTJIMzIuNzhsLTQuODQsNS45M0wzMi44NSwyNFoiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwb2x5Z29uICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgcG9pbnRzPSI5LjM5IDE5LjM1IDYuMTMgMTUgNSAxNSA1IDIxLjE4IDYuMTMgMjEuMTggNi4xMyAxNi44NCA5LjM5IDIxLjE4IDEwLjUxIDIxLjE4IDEwLjUxIDE1IDkuMzkg''@;'; put 'put ''MTUgOS4zOSAxOS4zNSIvPlxuICAgICAgICAgICAgPHBvbHlnb24gIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBwb2ludHM9IjEyLjE4IDIxLjE4IDE2Ljg0IDIxLjE4IDE2Ljg0IDIwLjE2IDEzLjMxIDIwLjE2IDEzLjMxIDE4LjU1IDE2LjUgMTguNTUgMTYu''@;'; put 'put ''NSAxNy41MiAxMy4zMSAxNy41MiAxMy4zMSAxNi4wMyAxNi44NCAxNi4wMyAxNi44NCAxNSAxMi4xOCAxNSAxMi4xOCAyMS4xOCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBwb2ludHM9IjI0LjUyIDE5LjQzIDIz''@;'; put 'put ''LjA2IDE1IDIxLjg0IDE1IDIwLjM3IDE5LjQzIDE5LjA1IDE1IDE3LjgyIDE1IDE5Ljc4IDIxLjE4IDIwLjg5IDIxLjE4IDIyLjQ1IDE2LjU5IDI0IDIxLjE4IDI1LjEzIDIxLjE4IDI3LjA4IDE1IDI1Ljg1IDE1IDI0LjUyIDE5LjQzIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzQuMTEsMjQuNDlsLTMuOTItNi42MiwzLjg4LTYuMzVBMSwxLDAsMCwwLDMzLjIyLDEwSDJhMiwyLDAsMCwwLTIsMlYyNGEyLDIsMCwwLDAsMiwySDMzLjI1QTEsMSwwLDAsMCwzNC4xMSwyNC40OVptLTIzLjYtMy4zMUg5LjM5TDYu''@;'; put 'put ''MTMsMTYuODR2NC4zNUg1VjE1SDYuMTNsMy4yNyw0LjM1VjE1aDEuMTJaTTE2Ljg0LDE2SDEzLjMxdjEuNDloMy4ydjFoLTMuMnYxLjYxaDMuNTN2MUgxMi4xOFYxNWg0LjY1Wm04LjI5LDUuMTZIMjRsLTEuNTUtNC41OUwyMC45LDIxLjE4SDE5Ljc4bC0yLTYuMThIMTlsMS4zMiw0LjQzTDIx''@;'; put 'put ''Ljg0LDE1aDEuMjJsMS40Niw0LjQzTDI1Ljg1LDE1aDEuMjNaIi8+JyksTC5DbHJTaGFwZUJ1YmJsZUV4Y2xhbWF0aW9uPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMi41Yy04LjgyLDAtMTYsNi4yOC0x''@;'; put 'put ''NiwxNHM3LjE4LDE0LDE2LDE0YTE4LDE4LDAsMCwwLDQuODgtLjY4bDUuNTMsMy41MmExLDEsMCwwLDAsMS41NC0uODRsMC02LjczYTEzLDEzLDAsMCwwLDQtOS4yN0MzNCw4Ljc4LDI2LjgyLDIuNSwxOCwyLjVaTTI4LjI5LDI0LjYxYTEsMSwwLDAsMC0uMzIuNzNsMCw1LjM0LTQuMzgtMi43''@;'; put 'put ''OWExLDEsMCwwLDAtLjgzLS4xMUExNiwxNiwwLDAsMSwxOCwyOC41Yy03LjcyLDAtMTQtNS4zOC0xNC0xMnM2LjI4LTEyLDE0LTEyLDE0LDUuMzgsMTQsMTJBMTEuMDgsMTEuMDgsMCwwLDEsMjguMjksMjQuNjFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDIwLjYzYTEsMSwwLDAsMCwxLTFWOC40OGExLDEsMCwxLDAtMiwwVjE5LjYxQTEsMSwwLDAsMCwxOCwyMC42M1oiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGN4PSIx''@;'; put 'put ''OCIgY3k9IjI0LjA0IiByPSIxLjMzIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMi41Yy04LjgyLDAtMTYsNi4yOC0xNiwxNHM3LjE4LDE0LDE2LDE0YTE4LDE4LDAsMCwwLDQuODgtLjY4bDUuNTMsMy41MmExLDEs''@;'; put 'put ''MCwwLDAsMS41NC0uODRsMC02LjczYTEzLDEzLDAsMCwwLDQtOS4yN0MzNCw4Ljc4LDI2LjgyLDIuNSwxOCwyLjVaTTE2LjkzLDkuMTNhMS40MSwxLjQxLDAsMSwxLDIuODEsMFYxOC45YTEuNDEsMS40MSwwLDEsMS0yLjgxLDBabTEuNDEsMTcuMzVhMS44NywxLjg3LDAsMSwxLDEuODctMS44''@;'; put 'put ''N0ExLjg3LDEuODcsMCwwLDEsMTguMzQsMjYuNDdaIi8+JyksTC5DbHJTaGFwZUdyaWRWaWV3PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTQsNEg2QTIsMiwwLDAsMCw0LDZ2OGEyLDIsMCwwLDAsMiwyaDhh''@;'; put 'put ''MiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwxNCw0Wk02LDE0VjZoOHY4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMCw0SDIyYTIsMiwwLDAsMC0yLDJ2OGEyLDIsMCwwLDAsMiwyaDhhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlY2QTIsMiwwLDAsMCwzMCw0Wk0yMiwxNFY2aDh2OFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTQsMjBINmEyLDIsMCwwLDAtMiwydjhhMiwyLDAsMCwwLDIsMmg4YTIsMiwwLDAsMCwyLTJWMjJBMiwyLDAs''@;'; put 'put ''MCwwLDE0LDIwWk02LDMwVjIyaDh2OFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzAsMjBIMjJhMiwyLDAsMCwwLTIsMnY4YTIsMiwwLDAsMCwyLDJoOGEyLDIsMCwwLDAsMi0yVjIyQTIsMiwwLDAsMCwzMCwy''@;'; put 'put ''MFpNMjIsMzBWMjJoOHY4WiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgeD0iNCIgeT0iNCIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiByeD0iMiIgcnk9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTIiIHg9IjIwIiB5PSI0IiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHJ4PSIyIiByeT0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgeD0iNCIgeT0iMjAiIHdpZHRoPSIxMiIgaGVpZ2h0PSIx''@;'; put 'put ''MiIgcng9IjIiIHJ5PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiB4PSIyMCIgeT0iMjAiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgcng9IjIiIHJ5PSIyIi8+JyksTC5DbHJTaGFwZUN1cnNvckFycm93PSgwLEUuY2xySWNv''@;'; put 'put ''blNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTQuNTgsMzIuMzFhMSwxLDAsMCwxLS45NC0uNjVMNCw1LjY1QTEsMSwwLDAsMSw1LjI1LDQuMzdsMjYsOS42OGExLDEsMCwwLDEtLjA1LDEuODlsLTguMzYsMi41Nyw4LjMsOC4zYTEs''@;'; put 'put ''MSwwLDAsMSwwLDEuNDFsLTMuMjYsMy4yNmExLDEsMCwwLDEtLjcxLjI5aDBhMSwxLDAsMCwxLS43MS0uMjlsLTguMzMtOC4zMy0yLjYsOC40NWExLDEsMCwwLDEtLjkzLjcxWm0zLjA5LTEyYTEsMSwwLDAsMSwuNzEuMjlsOC43OSw4Ljc5TDI5LDI3LjUxbC04Ljc2LTguNzZhMSwxLDAsMCwx''@;'; put 'put ''LC40MS0xLjY2bDcuMTMtMi4yTDYuNiw3bDcuODksMjEuMkwxNi43MSwyMWExLDEsMCwwLDEsLjcxLS42OFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yOSwxMi4zNiwzLjg4LDNBMSwxLDAsMCwwLDIuNTksNC4yOEwx''@;'; put 'put ''MiwyOS40NGExLDEsMCwwLDAsMS44OS0uMDVsMi42OS04Ljc1LDkuMTIsOC45YTEsMSwwLDAsMCwxLjQxLDBsMi4zNS0yLjM1YTEsMSwwLDAsMCwwLTEuNDFsLTkuMDktOC44NkwyOSwxNC4yNUExLDEsMCwwLDAsMjksMTIuMzZaIi8+JyksTC5DbHJTaGFwZUN1cnNvckhhbmQ9KDAsRS5jbHJJ''@;'; put 'put ''Y29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMC43NCwxNS4xOWExMy42NiwxMy42NiwwLDAsMC02Ljg3LTMuODNBMjYsMjYsMCwwLDAsMTgsMTAuNThWNS4yOEEzLjQsMy40LDAsMCwwLDE0LjUsMiwzLjQsMy40LDAsMCwwLDEx''@;'; put 'put ''LDUuMjh2MTBMOS40LDEzLjdhMy43NywzLjc3LDAsMCwwLTUuMjgsMEEzLjY3LDMuNjcsMCwwLDAsMywxNi4zM2EzLjYsMy42LDAsMCwwLDEsMi41Nmw0LjY2LDUuNTJhMTEuNTMsMTEuNTMsMCwwLDAsMS40Myw0LDEwLjEyLDEwLjEyLDAsMCwwLDIsMi41NHYxLjkyYTEuMDcsMS4wNywwLDAs''@;'; put 'put ''MCwxLDEuMDhIMjdhMS4wNywxLjA3LDAsMCwwLDEtMS4wOHYtMi43YTEyLjgxLDEyLjgxLDAsMCwwLDMtOC4zNnYtNkExLDEsMCwwLDAsMzAuNzQsMTUuMTlaTTI5LDIxLjg2YTEwLjcyLDEwLjcyLDAsMCwxLTIuNiw3LjI2LDEuMTEsMS4xMSwwLDAsMC0uNC43MlYzMkgxNC4xNFYzMC41MmEx''@;'; put 'put ''LDEsMCwwLDAtLjQ0LS44Myw3LjI2LDcuMjYsMCwwLDEtMS44Mi0yLjIzLDkuMTQsOS4xNCwwLDAsMS0xLjItMy41MiwxLDEsMCwwLDAtLjIzLS41OUw1LjUzLDE3LjUzYTEuNywxLjcsMCwwLDEsMC0yLjQyLDEuNzYsMS43NiwwLDAsMSwyLjQ3LDBsMywzdjMuMTRsMi0xVjUuMjhBMS40Miwx''@;'; put 'put ''LjQyLDAsMCwxLDE0LjUsNCwxLjQyLDEuNDIsMCwwLDEsMTYsNS4yOHYxMS44bDIsLjQzVjEyLjU5YTI0LjI3LDI0LjI3LDAsMCwxLDIuNTEuMThWMThsMS42LjM1VjEzYy40MS4wOC44My4xNywxLjI2LjI4YTE0Ljg4LDE0Ljg4LDAsMCwxLDEuNTMuNDl2NS4xNWwxLjYuMzVWMTQuNUExMS4w''@;'; put 'put ''NiwxMS4wNiwwLDAsMSwyOSwxNi4yM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yOC42OSwxNC4zM3Y0LjgzbC0yLS40M1YxMy4yNGExNi4xOSwxNi4xOSwwLDAsMC0yLjMzLS44NHY1LjgybC0yLS40M1YxMmMtMS4x''@;'; put 'put ''LS4xOC0yLjE4LS4zLTMuMDgtLjM2djUuNTFsLTItLjQzVjExLjQ4aDBWNC4zNGEyLjUzLDIuNTMsMCwwLDAtMi42LTIuNDMsMi41MywyLjUzLDAsMCwwLTIuNiwyLjQzVjE3LjI3aDB2Mi41OWwtMiwxVjE1LjZMNy43NSwxMy4yMWEyLjgzLDIuODMsMCwwLDAtNCwwLDIuOTMsMi45MywwLDAs''@;'; put 'put ''MCwwLDQuMDlsNiw3LjFhMTAuODIsMTAuODIsMCwwLDAsMS4zOSw0LjIyLDguNDIsOC40MiwwLDAsMCwyLjIxLDIuNzN2Mi41NkgyNy43OVYzMC42MmExMi41NCwxMi41NCwwLDAsMCwzLTguNXYtNkExMCwxMCwwLDAsMCwyOC42OSwxNC4zM1oiLz4nKSxMLkNsclNoYXBlQ3Vyc29ySGFuZENs''@;'; put 'put ''aWNrPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAuNCwxNy42Yy0xLjgtMS45LTQuMi0zLjItNi43LTMuN2MtMS4xLTAuMy0yLjItMC41LTMuMy0wLjZjMi44LTMuMywyLjMtOC4zLTEtMTEuMXMtOC4zLTIu''@;'; put 'put ''My0xMS4xLDFzLTIuMyw4LjMsMSwxMS4xXG4gICAgICAgICAgICAgICAgICAgIGMwLjYsMC41LDEuMiwwLjksMS44LDEuMXYyLjJsLTEuNi0xLjVjLTEuNC0xLjQtMy43LTEuNC01LjIsMGMtMS40LDEuNC0xLjUsMy42LTAuMSw1bDQuNiw1LjRjMC4yLDEuNCwwLjcsMi43LDEuNCwzLjlcbiAg''@;'; put 'put ''ICAgICAgICAgICAgICAgICAgYzAuNSwwLjksMS4yLDEuOCwxLjksMi41djEuOWMwLDAuNiwwLjQsMSwxLDFoMTMuNmMwLjUsMCwxLTAuNSwxLTF2LTIuNmMxLjktMi4zLDIuOS01LjIsMi45LTguMXYtNS44XG4gICAgICAgICAgICAgICAgICAgIEMzMC43LDE3LjksMzAuNiwxNy43LDMwLjQs''@;'; put 'put ''MTcuNnogTTguNCw4LjJjMC0zLjMsMi43LTUuOSw2LTUuOGMzLjMsMCw1LjksMi43LDUuOCw2YzAsMS44LTAuOCwzLjQtMi4yLDQuNVY3LjlcbiAgICAgICAgICAgICAgICAgICAgYy0wLjEtMS44LTEuNi0zLjItMy40LTMuMmMtMS44LTAuMS0zLjQsMS40LTMuNCwzLjJ2NS4yQzkuNSwxMi4x''@;'; put 'put ''LDguNSwxMC4yLDguNCw4LjJMOC40LDguMnogTTI4LjcsMjRjMC4xLDIuNi0wLjgsNS4xLTIuNSw3LjFcbiAgICAgICAgICAgICAgICAgICAgYy0wLjIsMC4yLTAuNCwwLjQtMC40LDAuN3YyLjFIMTQuMnYtMS40YzAtMC4zLTAuMi0wLjYtMC40LTAuOGMtMC43LTAuNi0xLjMtMS4zLTEuOC0y''@;'; put 'put ''LjJjLTAuNi0xLTEtMi4yLTEuMi0zLjRcbiAgICAgICAgICAgICAgICAgICAgYzAtMC4yLTAuMS0wLjQtMC4yLTAuNmwtNC44LTUuN2MtMC4zLTAuMy0wLjUtMC43LTAuNS0xLjJjMC0wLjQsMC4yLTAuOSwwLjUtMS4yYzAuNy0wLjYsMS43LTAuNiwyLjQsMGwyLjksMi45djNsMS45LTFWNy45''@;'; put 'put ''XG4gICAgICAgICAgICAgICAgICAgIGMwLjEtMC43LDAuNy0xLjMsMS41LTEuMmMwLjcsMCwxLjQsMC41LDEuNCwxLjJ2MTEuNWwyLDAuNHYtNC42YzAuMS0wLjEsMC4yLTAuMSwwLjMtMC4yYzAuNywwLDEuNCwwLjEsMi4xLDAuMnY1LjFsMS42LDAuM3YtNS4yXG4gICAgICAgICAgICAgICAg''@;'; put 'put ''ICAgIGwxLjIsMC4zYzAuNSwwLjEsMSwwLjMsMS41LDAuNXY1bDEuNiwwLjN2LTQuNmMwLjksMC40LDEuNywxLDIuNCwxLjdMMjguNywyNHoiLz4nKSxMLkNsclNoYXBlUmVzaXplPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIiBkPSJNMTksNGExLDEsMCwwLDAsMCwyaDkuNTlsLTkuMjUsOS4yNWExLDEsMCwxLDAsMS40MSwxLjQxTDMwLDcuNDFWMTdhMSwxLDAsMCwwLDIsMFY0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik00LDE5''@;'; put 'put ''YTEsMSwwLDAsMSwyLDB2OS41OWw5LjI1LTkuMjVhMSwxLDAsMSwxLDEuNDEsMS40MUw3LjQxLDMwSDE3YTEsMSwwLDAsMSwwLDJINFoiLz4nKSxMLkNsclNoYXBlT2JqZWN0cz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgZD0iTTE2LjA4LDE0LjlhMTAuNDEsMTAuNDEsMCwwLDEsMS44Ny0uNzFsLTQtMTAuNzdhMiwyLDAsMCwwLTMuNzUsMEwyLDI1LjI2QTIsMiwwLDAsMCwzLjkyLDI4aDYuOTRhMTAsMTAsMCwwLDEtLjUyLTJIMy45MkwxMi4wNiw0LjEyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMiw5SDIyYTIsMiwwLDAsMC0yLDJ2Mi44NWMuMjMsMCwuNDYsMCwuNjksMEExMC41MSwxMC41MSwwLDAsMSwyMiwxMy45VjExSDMyVjIxSDMwLjY1YTEwLjQyLDEwLjQyLDAsMCwxLC40NSwySDMyYTIsMiwwLDAsMCwy''@;'; put 'put ''LTJWMTFBMiwyLDAsMCwwLDMyLDlaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTIwLjY5LDE1LjgxYTguNSw4LjUsMCwxLDAsOC41LDguNUE4LjUxLDguNTEsMCwwLDAsMjAuNjksMTUuODFabTAsMTVhNi41LDYu''@;'; put 'put ''NSwwLDEsMSw2LjUtNi41QTYuNTEsNi41MSwwLDAsMSwyMC42OSwzMC44MVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xMC42NSwyNC40NGE5LjUxLDkuNTEsMCwwLDEsNy4wNi05LjE3TDEzLDNhMSwxLDAsMCwwLTEu''@;'; put 'put ''ODcsMEwyLjA3LDI2LjU2QTEsMSwwLDAsMCwzLDI3LjkyaDguMzJBOS40NCw5LjQ0LDAsMCwxLDEwLjY1LDI0LjQ0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMyLDEwSDIwYTEsMSwwLDAsMC0xLDF2NGE5LjQzLDku''@;'; put 'put ''NDMsMCwwLDEsMTAuNjMsOUgzMmExLDEsMCwwLDAsMS0xVjExQTEsMSwwLDAsMCwzMiwxMFoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgY3g9IjIwLjE1IiBjeT0iMjQuNDQiIHI9IjcuNSIvPicpLEwuQ2xyU2hhcGVCb29r''@;'; put 'put ''PSgwLEUuY2xySWNvblNWRykoJzxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSIxMCIgeT0iNS4yIiB3aWR0aD0iMTgiIGhlaWdodD0iMS41NSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTIiIGQ9Ik0yOSw4SDkuODZBMS44OSwxLjg5LDAsMCwxLDgsNiwyLDIsMCwwLDEsOS44Niw0SDI5YTEsMSwwLDAsMCwwLTJIOS44NkE0LDQsMCwwLDAsNiw2YTQuMTQsNC4xNCwwLDAsMCwwLC40OSwxLDEsMCwwLDAsMCwuMjRWMzBhNCw0LDAsMCwwLDMuODYsNEgyOWExLDEsMCwwLDAs''@;'; put 'put ''MS0xVjkuMjVzMC0uMDYsMC0uMDksMC0uMDYsMC0uMDlBMS4wNywxLjA3LDAsMCwwLDI5LDhaTTI4LDMySDkuODZBMiwyLDAsMCwxLDgsMzBWOS41NUEzLjYzLDMuNjMsMCwwLDAsOS44NiwxMEgyOFoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTEiIHg9IjEwIiB5PSI1LjIiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxLjU1Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjksOEg5Ljg2QTEuODksMS44OSwwLDAsMSw4LDYsMiwyLDAsMCwxLDkuODYsNEgyOWEx''@;'; put 'put ''LDEsMCwxLDAsMC0ySDkuODZBNCw0LDAsMCwwLDYsNmE0LjE0LDQuMTQsMCwwLDAsMCwuNDksMSwxLDAsMCwwLDAsLjI0VjMwYTQsNCwwLDAsMCwzLjg2LDRIMjlhMSwxLDAsMCwwLDEtMVY5LjI1czAtLjA2LDAtLjA5LDAtLjA2LDAtLjA5QTEuMDcsMS4wNywwLDAsMCwyOSw4WiIvPicpLEwu''@;'; put 'put ''Q2xyU2hhcGVBc3Rlcmlzaz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI4Ljg5LDIwLjkxbC01LTIuOTEsNC44Ny0yLjg2YTMuMTEsMy4xMSwwLDAsMCwxLjE0LTEuMDgsMywzLDAsMCwwLTQuMDktNC4xNUwy''@;'; put 'put ''MSwxMi43NlY3YTMsMywwLDAsMC02LDB2NS43NkwxMC4xNSw5LjkxYTMsMywwLDEsMC0zLDUuMThsNSwyLjkxTDcuMiwyMC44NmEzLjExLDMuMTEsMCwwLDAtMS4xNCwxLjA4LDMsMywwLDAsMCw0LjA5LDQuMTRMMTUsMjMuMjRWMjguOWEzLDMsMCwwLDAsMiwyLjk0QTMsMywwLDAsMCwyMSwy''@;'; put 'put ''OVYyMy4yNGw0Ljg1LDIuODVhMywzLDAsMSwwLDMtNS4xOFpNMjguMjQsMjRhMSwxLDAsMCwxLTEuMzcuMzZMMTksMTkuNzVWMjlhMSwxLDAsMCwxLTIsMFYxOS43NUw5LjEzLDI0LjM2YTEsMSwwLDAsMS0xLTEuNzJMMTYsMThsLTcuOS00LjY0YTEsMSwwLDEsMSwxLTEuNzJMMTcsMTYuMjVW''@;'; put 'put ''N2ExLDEsMCwwLDEsMiwwdjkuMjVsNy44Ny00LjYyYTEsMSwwLDAsMSwxLDEuNzJMMjAsMThsNy45LDQuNjRBMSwxLDAsMCwxLDI4LjI0LDI0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI4Ljg5LDIwLjkxbC01LTIu''@;'; put 'put ''OTEsNC44Ny0yLjg2YTMuMTEsMy4xMSwwLDAsMCwxLjE0LTEuMDgsMywzLDAsMCwwLTQuMDktNC4xNUwyMSwxMi43NlY3YTMsMywwLDAsMC02LDB2NS43NkwxMC4xNSw5LjkxYTMsMywwLDEsMC0zLDUuMThsNSwyLjkxTDcuMiwyMC44NmEzLjExLDMuMTEsMCwwLDAtMS4xNCwxLjA4LDMsMyww''@;'; put 'put ''LDAsMCw0LjA5LDQuMTRMMTUsMjMuMjRWMjguOWEzLDMsMCwwLDAsMiwyLjk0QTMsMywwLDAsMCwyMSwyOVYyMy4yNGw0Ljg1LDIuODVhMywzLDAsMSwwLDMtNS4xOFoiLz4nKSxMLkNsclNoYXBlU2Npc3NvcnM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTEiXG4gICAgICAgICAgICBkPSJNMjQuMDYsMTguMThsOS42MS04Ljc3YTEsMSwwLDAsMC0uMDktMS41NWwtMi4yNC0xLjZhMy41NywzLjU3LDAsMCwwLTQuMjguMTJMMTUuODgsMTUuM2wtMy4yNi0yLjUyYTUuNDUsNS40NSwwLDEsMC0xLDEuNzdsMi42Miwy''@;'; put 'put ''TDEwLDIwYTUuNDgsNS40OCwwLDEsMCwxLjU5LDEuMjlMMjguMyw3Ljk0YTEuNTcsMS41NywwLDAsMSwxLjg4LS4wNWwxLjIzLjg4TDIxLjEsMTguMTlsMTAuMzEsOS40LTEuMjMuODhhMS41NywxLjU3LDAsMCwxLTEuODgtLjA1bC05LjgxLTcuODVMMTcsMjEuOTNsMTAuMDYsOGEzLjU3LDMu''@;'; put 'put ''NTcsMCwwLDAsNC4yOS4xMmwyLjI0LTEuNmExLDEsMCwwLDAsLjA5LTEuNTVaTTcuNDUsMTQuNTRhMy40NiwzLjQ2LDAsMSwxLDMuNDUtMy40NkEzLjQ2LDMuNDYsMCwwLDEsNy40NSwxNC41NFptMCwxMy43MkEzLjQ2LDMuNDYsMCwxLDEsMTAuOSwyNC44LDMuNDYsMy40NiwwLDAsMSw3LjQ1''@;'; put 'put ''LDI4LjI2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMzLjgxLDguMTMsMzEuNjMsNi40OGExLjkyLDEuOTIsMCwwLDAtMi4zNiwwTDEwLDIyLjA2YTUuNDYsNS40NiwwLDEsMCwyLDEuODFsMy45LTMuMTJMMjkuMjcs''@;'; put 'put ''MzEuNTJhMS45MiwxLjkyLDAsMCwwLDIuMzYsMGwyLjE4LTEuNjRMMjAuOTQsMTlaTTcuNDUsMjkuNzVhMi44NiwyLjg2LDAsMSwxLDIuODYtMi44NkEyLjg3LDIuODcsMCwwLDEsNy40NSwyOS43NVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTIiIGQ9Ik0xNC4zLDE1LjI0LDEyLDEzLjM4YTUuNDYsNS40NiwwLDEsMC0yLDEuODFMMTIuMTYsMTdabS02Ljg1LTJhMi44NiwyLjg2LDAsMSwxLDIuODYtMi44NkEyLjg2LDIuODYsMCwwLDEsNy40NSwxMy4yM1oiLz4nKSxMLkNsclNoYXBlQnVnPSgwLEUuY2xySWNvblNWRyko''@;'; put 'put ''JzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4PSIyMy41NiIgY3k9IjE3Ljc0IiByPSIxLjk1Ii8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBjeD0iMjIuNDIiIGN5PSIy''@;'; put 'put ''NS44OCIgcj0iMS41OCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgY3g9IjEyLjg2IiBjeT0iMTcuNzQiIHI9IjEuOTUiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQiIGN4PSIxMy45OSIgY3k9IjI1Ljg4IiByPSIxLjU4Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgZD0iTTMwLjgzLDIwSDI5YTE5LjI5LDE5LjI5LDAsMCwwLTEuMTgtNS43M2wxLjQ2LS43OWExLDEs''@;'; put 'put ''MCwwLDAtLjk1LTEuNzZsLTMsMS42NEExNy42NSwxNy42NSwwLDAsMSwyNywyMC43MkMyNywyNywyMy44LDMxLjIzLDE4LjgsMzEuNjJWMTVIMTcuMlYzMS42MkMxMi4yMiwzMS4yMSw5LDI3LDksMjAuNzJhMTcuNzQsMTcuNzQsMCwwLDEsMS43My03LjM0TDcuNywxMS43MmExLDEsMCwwLDAt''@;'; put 'put ''Ljk1LDEuNzZsMS41LjhBMTkuMzgsMTkuMzgsMCwwLDAsNy4wNywyMEg1LjE3YTEsMSwwLDAsMCwwLDJINy4xYTE0LjYyLDE0LjYyLDAsMCwwLDEuNjYsNi4xN0w2Ljg3LDI5LjQ5QTEsMSwwLDEsMCw4LDMxLjEybDEuODQtMS4yOUExMC4zOCwxMC4zOCwwLDAsMCwxOCwzMy42NmExMC4zOCwx''@;'; put 'put ''MC4zOCwwLDAsMCw4LjE0LTMuODFMMjgsMzEuMTJhMSwxLDAsMSwwLDEuMTUtMS42NGwtMS44Ni0xLjNBMTQuNjEsMTQuNjEsMCwwLDAsMjguOTQsMjJoMS44OWExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTYiIGQ9Ik0xMS41MSw1LjM2YTEuNjcsMS42NywwLDAsMCwxLjA3LS41MUEzLjIxLDMuMjEsMCwwLDEsMTMuNzYsNmExNi4zOCwxNi4zOCwwLDAsMC0yLjY1LDIuODksMiwyLDAsMCwwLDEuNjEsMy4xOUgyMy4zMkEyLDIsMCwwLDAsMjUuMSwxMWEyLDIsMCwwLDAtLjE3LTIuMUExNi4z''@;'; put 'put ''NCwxNi4zNCwwLDAsMCwyMi4yNSw2YTMuMjEsMy4yMSwwLDAsMSwxLjE3LTEuMTFBMS42OCwxLjY4LDAsMSwwLDIzLDMuMjcsNC43Nyw0Ljc3LDAsMCwwLDIxLDVhNS44MSw1LjgxLDAsMCwwLTIuOTMtMSw1LjgzLDUuODMsMCwwLDAtMywxQTQuNzcsNC43NywwLDAsMCwxMywzLjI3YTEuNjgs''@;'; put 'put ''MS42OCwwLDEsMC0xLjQ5LDIuMDlaTTE4LDYuMDdjMS40NSwwLDMuNTMsMS41Nyw1LjMxLDRoMGwtMTAuNiwwQzE0LjQ5LDcuNjMsMTYuNTYsNi4wNywxOCw2LjA3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLjgz''@;'; put 'put ''LDIwSDI5YTE5LjI5LDE5LjI5LDAsMCwwLTEuMTgtNS43M2wxLjQ2LS43OWExLDEsMCwwLDAtLjk1LTEuNzZsLTMsMS4yOEgxMC43OEw3LjcsMTEuNzJhMSwxLDAsMCwwLS45NSwxLjc2bDEuNS44QTE5LjM4LDE5LjM4LDAsMCwwLDcuMDcsMjBINS4xN2ExLDEsMCwwLDAsMCwySDcuMWExNC42''@;'; put 'put ''MiwxNC42MiwwLDAsMCwxLjY2LDYuMTdMNi44NywyOS40OUExLDEsMCwxLDAsOCwzMS4xMmwxLjg0LTEuMjlBMTAuMjksMTAuMjksMCwwLDAsMTcsMzMuNlYxNWgyVjMzLjZhMTAuMjksMTAuMjksMCwwLDAsNy4xNi0zLjc1TDI4LDMxLjEyYTEsMSwwLDEsMCwxLjE1LTEuNjRsLTEuODYtMS4z''@;'; put 'put ''QTE0LjYxLDE0LjYxLDAsMCwwLDI4Ljk0LDIyaDEuODlhMSwxLDAsMCwwLDAtMlpNMTAuOTEsMTcuNzRhMS45NSwxLjk1LDAsMSwxLDEuOTUsMS45NUExLjk1LDEuOTUsMCwwLDEsMTAuOTEsMTcuNzRaTTE0LDI3LjQ2YTEuNTgsMS41OCwwLDEsMSwxLjU4LTEuNThBMS41OCwxLjU4LDAsMCwx''@;'; put 'put ''LDE0LDI3LjQ2Wm04LjQzLDBBMS41OCwxLjU4LDAsMSwxLDI0LDI1Ljg4LDEuNTgsMS41OCwwLDAsMSwyMi40MiwyNy40NlptMS4xMy03Ljc3YTEuOTUsMS45NSwwLDEsMSwxLjk1LTEuOTVBMS45NSwxLjk1LDAsMCwxLDIzLjU2LDE5LjY5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTExLjIzLDUuMjZhMS42NywxLjY3LDAsMCwwLC41NC0uMzIsNS45LDUuOSwwLDAsMSwuODkuNTgsNy40NCw3LjQ0LDAsMCwxLC45NS45NEExOC40OCwxOC40OCwwLDAsMCwxMC43OSw5LjdjLS40LjU3LjA5LDEuMjguODYsMS4y''@;'; put 'put ''OEgyNC40NGMuNzcsMCwxLjI2LS43MS44Ni0xLjI4YTE4LjM4LDE4LjM4LDAsMCwwLTIuODgtMy4yOCw3LjI4LDcuMjgsMCwwLDEsLjkxLS45LDUuOSw1LjksMCwwLDEsLjg5LS41OCwxLjY5LDEuNjksMCwxLDAtLjU2LTEuNTEsNy40OSw3LjQ5LDAsMCwwLTEuMzIuODMsOS4wNiw5LjA2LDAs''@;'; put 'put ''MCwwLTEuMTksMS4xOEE1Ljg1LDUuODUsMCwwLDAsMTgsNC4zYTUuOTEsNS45MSwwLDAsMC0zLjE3LDEuMTksOS4yLDkuMiwwLDAsMC0xLjIyLTEuMjEsNy40OSw3LjQ5LDAsMCwwLTEuMzItLjgzLDEuNjgsMS42OCwwLDEsMC0xLjExLDEuODNaIi8+JyksTC5DbHJTaGFwZVRoZXJtb21ldGVy''@;'; put 'put ''PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTksMjMuMTdWMTEuNDZIMTdWMjMuMmEzLDMsMCwxLDAsMiwwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTIiIGQ9Ik0yNiwxNWExLDEsMCwwLDAsMC0ySDIzLjkyVjExSDI2YTEsMSwwLDAsMCwwLTJIMjMuOTJWOGE2LDYsMCwwLDAtMTIsMFYyMC44MWE4LDgsMCwxLDAsMTItLjJWMTlIMjZhMSwxLDAsMCwwLDAtMkgyMy45MlYxNVpNMjQsMjZhNiw2LDAsMSwxLTEwLjM2LTQuMTJsLjI3''@;'; put 'put ''LS4yOVY4YTQsNCwwLDAsMSw4LDBWMjEuNDRsLjMuMjlBNiw2LDAsMCwxLDI0LDI2WiIvPicpLEwuQ2xyU2hhcGVQZW5jaWw9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMy44Nyw4LjMyLDI4LDIuNDJhMi4w''@;'; put 'put ''NywyLjA3LDAsMCwwLTIuOTIsMEw0LjI3LDIzLjJsLTEuOSw4LjJhMi4wNiwyLjA2LDAsMCwwLDIsMi41LDIuMTQsMi4xNCwwLDAsMCwuNDMsMEwxMy4wOSwzMiwzMy44NywxMS4yNEEyLjA3LDIuMDcsMCwwLDAsMzMuODcsOC4zMlpNMTIuMDksMzAuMiw0LjMyLDMxLjgzbDEuNzctNy42Mkwy''@;'; put 'put ''MS42Niw4LjdsNiw2Wk0yOSwxMy4yNWwtNi02LDMuNDgtMy40Niw1LjksNloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNNC4yMiwyMy4ybC0xLjksOC4yYTIuMDYsMi4wNiwwLDAsMCwyLDIuNSwyLjE0LDIuMTQs''@;'; put 'put ''MCwwLDAsLjQzLDBMMTMsMzIsMjguODQsMTYuMjIsMjAsNy40WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMy44Miw4LjMybC01LjktNS45YTIuMDcsMi4wNywwLDAsMC0yLjkyLDBMMjEuNzIsNS43bDguODMs''@;'; put 'put ''OC44MywzLjI4LTMuMjhBMi4wNywyLjA3LDAsMCwwLDMzLjgyLDguMzJaIi8+JyksTC5DbHJTaGFwZU5vdGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI4LDMwSDZWOEgxOS4yMmwyLTJINkEyLDIsMCwwLDAsNCw4VjMwYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxNWwt''@;'; put 'put ''MiwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNTMsNS44NCwzMC4xNiwyLjQ3YTEuNjEsMS42MSwwLDAsMC0yLjI4LDBMMTQuMTcsMTYuMjZsLTEuMTEsNC44MUExLjYxLDEuNjEsMCwwLDAsMTQuNjMs''@;'; put 'put ''MjMsMS42OSwxLjY5LDAsMCwwLDE1LDIzbDQuODUtMS4wN0wzMy41Myw4LjEyQTEuNjEsMS42MSwwLDAsMCwzMy41Myw1Ljg0Wk0xOC44MSwyMC4wOGwtMy42Ni44MUwxNiwxNy4yNiwyNi4zMiw2Ljg3bDIuODIsMi44MlpNMzAuMjcsOC41NiwyNy40NSw1Ljc0LDI5LDQuMTYsMzEuODQsN1oi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLDYuNCwyOS4zLDIuN2ExLjcxLDEuNzEsMCwwLDAtMi4zNiwwTDIzLjY1LDZINkEyLDIsMCwwLDAsNCw4VjMwYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlYxMS43NmwzLTNBMS42NywxLjY3LDAsMCwwLDMzLDYuNFpNMTguODMsMjAuMTNsLTQuMTkuOTMsMS00LjE1LDkuNTUtOS41NywzLjIzLDMuMjNaTTI5LjUsOS40MywyNi4yNyw2LjJsMS44NS0xLjg1LDMuMjMsMy4yM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''IC8+JyksTC5DbHJTaGFwZVJlZnJlc2g9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yMi40LDExLjY1YTEuMDksMS4wOSwwLDAsMCwxLjA5LDEuMDlIMzQuNDNWMS44MWExLjA5LDEuMDksMCwxLDAtMi4xOSww''@;'; put 'put ''VjguOTVhMTYuNDEsMTYuNDEsMCwxLDAsMS40NywxNS44NiwxLjEyLDEuMTIsMCwwLDAtMi4wNS0uOSwxNC4xOCwxNC4xOCwwLDEsMS0xLjA1LTEzLjM2SDIzLjVBMS4wOSwxLjA5LDAsMCwwLDIyLjQsMTEuNjVaIi8+JyksTC5DbHJTaGFwZVN5bmM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMi44NCwxNS43MmExLDEsMCwxLDAtMiwuMjlBMTMuMTUsMTMuMTUsMCwwLDEsMzEsMTcuOTQsMTMsMTMsMCwwLDEsOC43LDI3aDUuMzZhMSwxLDAsMCwwLDAtMmgtOXY5YTEsMSwwLDEsMCwyLDBWMjguMkEx''@;'; put 'put ''NSwxNSwwLDAsMCwzMi44NCwxNS43MloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMwLjA2LDFBMS4wNSwxLjA1LDAsMCwwLDI5LDJWNy44M0ExNC45NCwxNC45NCwwLDAsMCwzLDE3Ljk0YTE1LjE2LDE1''@;'; put 'put ''LjE2LDAsMCwwLC4yLDIuNDgsMSwxLDAsMCwwLDEsLjg0aC4xNmExLDEsMCwwLDAsLjgyLTEuMTVBMTMuMjMsMTMuMjMsMCwwLDEsNSwxNy45NGExMywxMywwLDAsMSwxMy0xM0ExMi44NywxMi44NywwLDAsMSwyNy40NCw5SDIyLjA2YTEsMSwwLDAsMCwwLDJIMzFWMkExLDEsMCwwLDAsMzAu''@;'; put 'put ''MDYsMVoiLz4nKSxMLkNsclNoYXBlVmlld0xpc3Q9KDAsRS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjIiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTcsMTBIMzFhMSwxLDAsMCwwLDAtMkg3YTEsMSwwLDAsMCwwLDJaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjIiIHk9IjE0IiB3aWR0aD0i''@;'; put 'put ''MiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0zMSwxNEg3YTEsMSwwLDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgeD0iMiIgeT0iMjAiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgZD0iTTMxLDIwSDdhMSwxLDAsMCwwLDAsMkgzMWExLDEs''@;'; put 'put ''MCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiB4PSIyIiB5PSIyNiIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC04IiBkPSJNMzEsMjZIN2ExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+JyksTC5DbHJTaGFwZVZpZXdDYXJkcz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDE3SDRh''@;'; put 'put ''MiwyLDAsMCwxLTItMlY4QTIsMiwwLDAsMSw0LDZIMTVhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwxNSwxN1pNNCw4djdIMTVWOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMyLDE3SDIxYTIsMiww''@;'; put 'put ''LDAsMS0yLTJWOGEyLDIsMCwwLDEsMi0ySDMyYTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMzIsMTdaTTIxLDh2N0gzMlY4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTUsMzBINGEyLDIsMCwwLDEt''@;'; put 'put ''Mi0yVjIxYTIsMiwwLDAsMSwyLTJIMTVhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwxNSwzMFpNNCwyMXY3SDE1VjIxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzIsMzBIMjFhMiwyLDAsMCwxLTIt''@;'; put 'put ''MlYyMWEyLDIsMCwwLDEsMi0ySDMyYTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMzIsMzBaTTIxLDIxdjdIMzJWMjFaIi8+JyksTC5DbHJTaGFwZUxpZ2h0YnVsYj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMi4yNWExMSwxMSwwLDAsMC0xMSwxMSwxMC42OCwxMC42OCwwLDAs''@;'; put 'put ''MCwxLDQuNjMsMTYuMzYsMTYuMzYsMCwwLDAsMS4xMiwxLjc4LDE3LDE3LDAsMCwxLDIsMy40NywxNi4xOSwxNi4xOSwwLDAsMSwuNTksNGgyQTE4LjE3LDE4LjE3LDAsMCwwLDEzLDIyLjQ0YTE4LjQ2LDE4LjQ2LDAsMCwwLTIuMjItMy45MiwxNS43OSwxNS43OSwwLDAsMS0xLTEuNTRBOC42''@;'; put 'put ''NCw4LjY0LDAsMCwxLDksMTMuMjNhOSw5LDAsMCwxLDE4LjA3LDBBOC42NCw4LjY0LDAsMCwxLDI2LjIxLDE3YTE1Ljc5LDE1Ljc5LDAsMCwxLTEsMS41NEExOC40NiwxOC40NiwwLDAsMCwyMywyMi40NGExOC4xNywxOC4xNywwLDAsMC0uNzEsNC43MWgyYTE2LjE5LDE2LjE5LDAsMCwxLC41''@;'; put 'put ''OS00LDE3LDE3LDAsMCwxLDItMy40N0ExNi4zMSwxNi4zMSwwLDAsMCwyOCwxNy44NmExMC42OCwxMC42OCwwLDAsMCwxLTQuNjNBMTEsMTEsMCwwLDAsMTgsMi4yNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MTguNjMsMTUuNTFhLjguOCwwLDAsMC0xLjEzLDBsLTMsMywyLjg2LDMuMTN2NS41NEgxOVYyMWwtMi4yNC0yLjQ1LDEuODktMS44OUEuOC44LDAsMCwwLDE4LjYzLDE1LjUxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0yMy44NiwyOS4xNUgxMi4xMWEuOC44LDAsMSwwLDAsMS42SDIzLjg2YS44LjgsMCwwLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDMyLjE1SDE0YS44LjgsMCwxLDAsMCwxLjZIMjJh''@;'; put 'put ''LjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcuMzIsMTAuODlsLTIuNzMsMi43M2EuOC44LDAsMCwwLDEuMTMsMS4xM0wxOC40NSwxMmEuOC44LDAsMSwwLTEuMTMtMS4xM1oiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksMjcuMTVWMjFsLTIuMjQtMi40NSwxLjg5LTEuODlhLjguOCwwLDAsMC0xLjEzLTEuMTNsLTMsMywyLjg2LDMuMTN2NS41NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjg2LDI5LjE1SDEyLjExYS44LjgsMCwxLDAsMCwxLjZIMjMuODZhLjguOCwwLDAsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDMyLjE1SDE0YS44LjgsMCwxLDAsMCwxLjZIMjJhLjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTE1LjcyLDE0Ljc1LDE4LjQ1LDEyYS44LjgsMCwxLDAtMS4xMy0xLjEzbC0yLjczLDIuNzNhLjguOCwwLDAsMCwxLjEzLDEuMTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0yNywxMi44OGMwLC4xMiwwLC4yMywwLC4zNUE4LjY0LDguNjQsMCwwLDEsMjYuMjEsMTdhMTUuNzksMTUuNzksMCwwLDEtMSwxLjU0QTE4LjQ2LDE4LjQ2LDAsMCwwLDIzLDIyLjQ0YTE4LjE3LDE4LjE3LDAsMCwwLS43MSw0LjcxaDJhMTYuMTksMTYuMTksMCwwLDEsLjU5LTQsMTcs''@;'; put 'put ''MTcsMCwwLDEsMi0zLjQ3QTE2LjMxLDE2LjMxLDAsMCwwLDI4LDE3Ljg2YTEwLjYzLDEwLjYzLDAsMCwwLDEtNC40M0E3LjQ1LDcuNDUsMCwwLDEsMjcsMTIuODhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0xMy43MSwyNy4xNUExOC4xNywxOC4xNywwLDAsMCwxMywyMi40NGExOC40NiwxOC40NiwwLDAsMC0yLjIyLTMuOTIsMTUuNzksMTUuNzksMCwwLDEtMS0xLjU0QTguNjQsOC42NCwwLDAsMSw5LDEzLjIzLDksOSwwLDAsMSwyMi41Myw1LjQ3YTcuNDUsNy40NSwwLDAs''@;'; put 'put ''MSwuNDMtMiwxMSwxMSwwLDAsMC0xNiw5LjgsMTAuNjgsMTAuNjgsMCwwLDAsMSw0LjYzLDE2LjM2LDE2LjM2LDAsMCwwLDEuMTIsMS43OCwxNywxNywwLDAsMSwyLDMuNDcsMTYuMTksMTYuMTksMCwwLDEsLjU5LDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC02LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuODYs''@;'; put 'put ''MjkuMTVIMTIuMTFhLjguOCwwLDEsMCwwLDEuNkgyMy44NmEuOC44LDAsMCwwLDAtMS42WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDMyLjE1SDE0YS44LjgsMCwxLDAsMCwxLjZIMjJhLjguOCwwLDEsMCwwLTEu''@;'; put 'put ''NloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyLjI1YTExLDExLDAsMCwwLTExLDExLDEwLjY4LDEwLjY4LDAsMCwwLDEsNC42MywxNi4zNiwxNi4zNiwwLDAsMCwxLjEyLDEuNzgsMTcsMTcsMCwwLDEsMiwzLjQ3''@;'; put 'put ''LDE2LjE5LDE2LjE5LDAsMCwxLC41OSw0aDUuNjlWMjEuNjFsLTIuODYtMy4xMywzLTNhLjguOCwwLDAsMSwxLjEzLDEuMTNsLTEuODksMS44OUwxOSwyMXY2LjE3SDI0LjNhMTYuMTksMTYuMTksMCwwLDEsLjU5LTQsMTcsMTcsMCwwLDEsMi0zLjQ3QTE2LjMxLDE2LjMxLDAsMCwwLDI4LDE3''@;'; put 'put ''Ljg2YTEwLjY4LDEwLjY4LDAsMCwwLDEtNC42M0ExMSwxMSwwLDAsMCwxOCwyLjI1Wk0xOC40NSwxMmwtMi43MywyLjczYS44LjgsMCwxLDEtMS4xMy0xLjEzbDIuNzMtMi43M0EuOC44LDAsMSwxLDE4LjQ1LDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTIzLjg2LDI5LjE1SDEyLjExYS44LjgsMCwxLDAsMCwxLjZIMjMuODZhLjguOCwwLDAsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIs''@;'; put 'put ''MzIuMTVIMTRhLjguOCwwLDEsMCwwLDEuNkgyMmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41LDZBNy40Nyw3LjQ3LDAsMCwxLDIzLDMuNDRhMTEsMTEs''@;'; put 'put ''MCwwLDAtMTYsOS44LDEwLjY4LDEwLjY4LDAsMCwwLDEsNC42MywxNi4zNiwxNi4zNiwwLDAsMCwxLjEyLDEuNzgsMTcsMTcsMCwwLDEsMiwzLjQ3LDE2LjE5LDE2LjE5LDAsMCwxLC41OSw0aDUuNjlWMjEuNjFsLTIuODYtMy4xMywzLTNhLjguOCwwLDAsMSwxLjEzLDEuMTNsLTEuODksMS44''@;'; put 'put ''OUwxOSwyMXY2LjE3SDI0LjNhMTYuMTksMTYuMTksMCwwLDEsLjU5LTQsMTcsMTcsMCwwLDEsMi0zLjQ3QTE2LjMxLDE2LjMxLDAsMCwwLDI4LDE3Ljg2YTEwLjYzLDEwLjYzLDAsMCwwLDEtNC40M0E3LjUsNy41LDAsMCwxLDIyLjUsNlptLTQsNi0yLjczLDIuNzNhLjguOCwwLDEsMS0xLjEz''@;'; put 'put ''LTEuMTNsMi43My0yLjczQS44LjgsMCwxLDEsMTguNDUsMTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLEwuQ2xyU2hhcGVEb3dubG9hZD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLDMxSDVhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCww''@;'; put 'put ''LDAsMC0yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjkuNDgsMjguNjEsMTguODdhMSwxLDAsMCwwLTEuNDEtMS40MUwxOSwyNS42NVY1YTEsMSwwLDAsMC0yLDBWMjUuNjVMOC44MSwxNy40NmEx''@;'; put 'put ''LDEsMCwxLDAtMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTMxLDMxSDVhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTE4LDI5LjQ4LDI4LjYxLDE4Ljg3YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTksMjUuNjVWNWExLDEsMCwwLDAtMiwwVjI1LjY1TDguODEsMTcuNDZhMSwxLDAsMSww''@;'; put 'put ''LTEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzEsMzFINWExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xOCwyOS40OCwyOC42MSwxOC44N2ExLDEsMCwwLDAtMS40MS0xLjQxTDE5LDI1LjY1VjVhMSwxLDAsMCwwLTIsMFYyNS42NUw4LjgxLDE3LjQ2YTEsMSwwLDEsMC0xLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCww''@;'; put 'put ''LDAsMjYuODUsMS4xNFoiLz4nKSxMLkNsclNoYXBlVXBsb2FkPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEsMzFINWExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik04LjgxLDE1LDE3LDYuODNWMjcuNDhhMSwxLDAsMCwwLDIsMFY2LjgzTDI3LjE5LDE1YTEsMSwwLDAsMCwxLjQxLTEuNDFMMTgsMyw3LjM5LDEzLjYxQTEsMSwwLDEsMCw4LjgxLDE1WiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzEsMzFINWMtMC42LDAtMSwwLjQtMSwxczAuNCwxLDEsMWgyNmMwLjYsMCwxLTAuNCwxLTFTMzEuNiwzMSwzMSwzMXoiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTguOCwxNUwxNyw2Ljh2MjAuNmMwLDAuNiwwLjQsMSwxLDFzMS0wLjQsMS0xVjYuOEwyMC4xLDhsMS0xLjhMMTgsM0w3LjQsMTMuNkM3LDE0LDYu''@;'; put 'put ''OSwxNC42LDcuMiwxNXMxLDAuNSwxLjQsMC4xQzguNywxNS4xLDguOCwxNS4xLDguOCwxNXoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2LjksMS4x''@;'; put 'put ''TDIxLjEsMTFjLTAuNCwwLjYtMC4yLDEuNCwwLjMsMS44YzAuMiwwLjIsMC41LDAuMiwwLjgsMC4yaDExLjVjMC43LDAsMS4zLTAuNSwxLjMtMS4yYzAtMC4zLTAuMS0wLjUtMC4yLTAuOGwtNS43LTkuOWMtMC40LTAuNi0xLjEtMC44LTEuOC0wLjVDMjcuMSwwLjgsMjcsMSwyNi45LDEuMXoi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMSwzMUg1YTEsMSwwLDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik04LjgxLDE1LDE3LDYuODNWMjcuNDhhMSwxLDAsMCwwLDIsMFY2LjgzTDI3LjE5LDE1YTEsMSwwLDAsMCwxLjQxLTEuNDFMMTgsMyw3LjM5LDEzLjYxQTEsMSwwLDEsMCw4LjgxLDE1WiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksTC5DbHJTaGFwZUxvY2s9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOC4wOSwyMC41OUEyLjQxLDIuNDEsMCwwLDAsMTcsMjUuMTRWMjhoMlYyNS4yM2EyLjQxLDIuNDEsMCwwLDAtLjkxLTQuNjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIiIGQ9Ik0yNiwxNVYxMC43MmE4LjIsOC4yLDAsMCwwLTgtOC4zNiw4LjIsOC4yLDAsMCwwLTgsOC4zNlYxNUg3VjMyYTIsMiwwLDAsMCwyLDJIMjdhMiwyLDAsMCwwLDItMlYxNVpNMTIsMTAuNzJhNi4yLDYuMiwwLDAsMSw2LTYuMzYsNi4yLDYuMiwwLDAsMSw2LDYu''@;'; put 'put ''MzZWMTVIMTJaTTksMzJWMTdIMjdWMzJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI2LDE1VjEwLjcyYTguMiw4LjIsMCwwLDAtOC04LjM2LDguMiw4LjIsMCwwLDAtOCw4LjM2VjE1SDdWMzJhMiwyLDAsMCww''@;'; put 'put ''LDIsMkgyN2EyLDIsMCwwLDAsMi0yVjE1Wk0xOSwyNS4yM1YyOEgxN1YyNS4xNGEyLjQsMi40LDAsMSwxLDIsLjA5Wk0yNCwxNUgxMlYxMC43MmE2LjIsNi4yLDAsMCwxLDYtNi4zNiw2LjIsNi4yLDAsMCwxLDYsNi4zNloiLz4nKSxMLkNsclNoYXBlVW5sb2NrPSgwLEUuY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTIsMjUuMTRWMjhoMlYyNS4yM2EyLjQyLDIuNDIsMCwxLDAtMi0uMDlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIi''@;'; put 'put ''IGQ9Ik0yNiwyYTguMiw4LjIsMCwwLDAtOCw4LjM2VjE1SDJWMzJhMiwyLDAsMCwwLDIsMkgyMmEyLDIsMCwwLDAsMi0yVjE1SDIwVjEwLjM2QTYuMiw2LjIsMCwwLDEsMjYsNGE2LjIsNi4yLDAsMCwxLDYsNi4zNnY2LjgzYTEsMSwwLDAsMCwyLDBWMTAuMzZBOC4yLDguMiwwLDAsMCwyNiwy''@;'; put 'put ''Wk0yMiwxN1YzMkg0VjE3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNiwyYTguMiw4LjIsMCwwLDAtOCw4LjM2VjE1SDJWMzJhMiwyLDAsMCwwLDIsMkgyMmEyLDIsMCwwLDAsMi0yVjE1SDIwVjEwLjM2QTYu''@;'; put 'put ''Miw2LjIsMCwwLDEsMjYsNGE2LjIsNi4yLDAsMCwxLDYsNi4zNnY2LjgzYTEsMSwwLDAsMCwyLDBWMTAuMzZBOC4yLDguMiwwLDAsMCwyNiwyWk0xNCwyNS4yM1YyOEgxMlYyNS4xNGEyLjQsMi40LDAsMSwxLDIsLjA5WiIvPicpLEwuQ2xyU2hhcGVVc2Vycz0oMCxFLmNsckljb25TVkcpKCc8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE3LjksMTcuM2MyLjcsMCw0LjgtMi4yLDQuOC00LjljMC0yLjctMi4yLTQuOC00LjktNC44Yy0yLjcsMC00LjgsMi4yLTQuOCw0LjhDMTMsMTUuMSwxNS4yLDE3LjMsMTcuOSwxNy4zeiBNMTcuOCw5''@;'; put 'put ''LjZDMTcuOSw5LjYsMTcuOSw5LjYsMTcuOCw5LjZjMS42LDAsMi45LDEuMywyLjksMi45cy0xLjMsMi44LTIuOSwyLjhjLTEuNiwwLTIuOC0xLjMtMi44LTIuOEMxNSwxMC45LDE2LjMsOS42LDE3LjgsOS42eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIuNywxNi43Yy0xLjktMS43LTQuNC0yLjYtNy0yLjVjLTAuMywwLTAuNSwwLTAuOCwwYy0wLjIsMC44LTAuNSwxLjUtMC45LDIuMWMwLjYtMC4xLDEuMS0wLjEsMS43LTAuMWMxLjktMC4xLDMuOCwwLjUsNS4zLDEuNlYyNWgydi04TDMyLjcs''@;'; put 'put ''MTYuN3oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTIzLjQsNy44YzAuNS0xLjIsMS45LTEuOCwzLjItMS4zYzEuMiwwLjUsMS44LDEuOSwxLjMsMy4yYy0wLjQsMC45LTEuMywxLjUtMi4yLDEuNWMtMC4y''@;'; put 'put ''LDAtMC41LDAtMC43LTAuMWMwLjEsMC41LDAuMSwxLDAuMSwxLjRjMCwwLjIsMCwwLjQsMCwwLjZjMC4yLDAsMC40LDAuMSwwLjYsMC4xYzIuNSwwLDQuNS0yLDQuNS00LjRjMC0yLjUtMi00LjUtNC40LTQuNWMtMS42LDAtMywwLjgtMy44LDIuMkMyMi41LDYuOCwyMyw3LjIsMjMuNCw3Ljh6''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0xMiwxNi40Yy0wLjQtMC42LTAuNy0xLjMtMC45LTIuMWMtMC4zLDAtMC41LDAtMC44LDBjLTIuNi0wLjEtNS4xLDAuOC03LDIuNEwzLDE3djhoMnYtNy4yYzEu''@;'; put 'put ''Ni0xLjEsMy40LTEuNyw1LjMtMS42QzEwLjksMTYuMiwxMS41LDE2LjMsMTIsMTYuNHoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgZD0iTTEwLjMsMTMuMWMwLjIsMCwwLjQsMCwwLjYtMC4xYzAtMC4yLDAtMC40''@;'; put 'put ''LDAtMC42YzAtMC41LDAtMSwwLjEtMS40Yy0wLjIsMC4xLTAuNSwwLjEtMC43LDAuMWMtMS4zLDAtMi40LTEuMS0yLjQtMi40YzAtMS4zLDEuMS0yLjQsMi40LTIuNGMxLDAsMS45LDAuNiwyLjMsMS41YzAuNC0wLjUsMS0xLDEuNS0xLjRjLTEuMy0yLjEtNC0yLjgtNi4xLTEuNWMtMi4xLDEu''@;'; put 'put ''My0yLjgsNC0xLjUsNi4xQzcuMywxMi4zLDguNywxMy4xLDEwLjMsMTMuMXoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgZD0iTTI2LjEsMjIuN2wtMC4yLTAuM2MtMi0yLjItNC44LTMuNS03LjgtMy40Yy0zLTAu''@;'; put 'put ''MS01LjksMS4yLTcuOSwzLjRMMTAsMjIuN3Y3LjZjMCwwLjksMC43LDEuNywxLjcsMS43YzAsMCwwLDAsMCwwaDEyLjhjMC45LDAsMS43LTAuOCwxLjctMS43YzAsMCwwLDAsMCwwVjIyLjd6IE0yNC4xLDMwSDEydi02LjZjMS42LTEuNiwzLjgtMi40LDYuMS0yLjRjMi4yLTAuMSw0LjQsMC44''@;'; put 'put ''LDYsMi40VjMweiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTEuMDksMTQuNTdjLjEsMCwuMiwwLC4zMSwwYTYuNDMsNi40MywwLDAsMSwuMDktMiwyLjA5LDIuMDksMCwx''@;'; put 'put ''LDEsMS40Ny0zLDYuNTgsNi41OCwwLDAsMSwxLjU1LTEuMzEsNC4wOSw0LjA5LDAsMSwwLTMuNDIsNi4zM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTEzLDE4LjE0YTYu''@;'; put 'put ''NTMsNi41MywwLDAsMS0xLjI4LTIuMmwtLjYzLDBhOC42Nyw4LjY3LDAsMCwwLTYuNDMsMi41MmwtLjI0LjI4djdoMlYxOS41MWE3LDcsMCwwLDEsNC42Ny0xLjZBOC4wOSw4LjA5LDAsMCwxLDEzLDE4LjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiBkPSJNMzEuMzUsMTguNDJBOC41OSw4LjU5LDAsMCwwLDI1LDE1LjkxYy0uMzIsMC0uNiwwLS45LjA2YTYuNTMsNi41MywwLDAsMS0xLjM1LDIuMjVBNy45LDcuOSwwLDAsMSwyNSwxNy45MWE2Ljk0LDYuOTQsMCwwLDEs''@;'; put 'put ''NC42NCwxLjU4djYuMjdoMlYxOC43WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMTguMSwxOS43M0E5LjY5LDkuNjksMCwwLDAsMTEsMjIuNDdsLS4yNS4yOHY3LjMzYTEu''@;'; put 'put ''NTcsMS41NywwLDAsMCwxLjYxLDEuNTRIMjMuODNhMS41NywxLjU3LDAsMCwwLDEuNjEtMS41NFYyMi43M2wtLjI1LS4yOEE5LjU4LDkuNTgsMCwwLDAsMTguMSwxOS43M1ptNS4zMyw5Ljg4SDEyLjczVjIzLjU1YTguMDgsOC4wOCwwLDAsMSw1LjM3LTEuODIsOCw4LDAsMCwxLDUuMzMsMS44''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIiBkPSJNMjAuMjgsMTQuMjdhMi40NiwyLjQ2LDAsMSwxLTIuNDItMi44OSwyLjQ0LDIuNDQsMCwwLDEsMSwuMjQsMy42NywzLjY3LDAs''@;'; put 'put ''MCwxLC40My0yLDQuNDEsNC40MSwwLDAsMC0xLjQ4LS4yN0E0LjQ3LDQuNDcsMCwxLDAsMjIuMTQsMTUsMy42OSwzLjY5LDAsMCwxLDIwLjI4LDE0LjI3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjcuMTguOGwtNS43Miw5LjkxYTEuMjgsMS4yOCwwLDAsMCwxLjEsMS45MUgzNGExLjI4LDEuMjgsMCwwLDAsMS4xLTEuOTFMMjkuMzkuOEExLjI4LDEuMjgsMCwwLDAsMjcuMTguOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMS4wOSwxNC41N2MuMSwwLC4yLDAsLjMxLDBhNi40Myw2LjQzLDAsMCwxLC4wOS0yLDIuMDksMi4wOSwwLDEsMSwxLjQ3LTMsNi41OCw2LjU4LDAsMCwxLDEuNTUtMS4zMSw0LjA5LDQuMDks''@;'; put 'put ''MCwxLDAtMy40Miw2LjMzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTEzLDE4LjE0YTYuNTMsNi41MywwLDAsMS0xLjI4LTIuMmwtLjYzLDBhOC42Nyw4LjY3LDAsMCwwLTYu''@;'; put 'put ''NDMsMi41MmwtLjI0LjI4djdoMlYxOS41MWE3LDcsMCwwLDEsNC42Ny0xLjZBOC4wOSw4LjA5LDAsMCwxLDEzLDE4LjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgZD0iTTMxLjM1''@;'; put 'put ''LDE4LjQyQTguNTksOC41OSwwLDAsMCwyNSwxNS45MWMtLjMyLDAtLjYsMC0uOS4wNmE2LjUzLDYuNTMsMCwwLDEtMS4zNSwyLjI1QTcuOSw3LjksMCwwLDEsMjUsMTcuOTFhNi45NCw2Ljk0LDAsMCwxLDQuNjQsMS41OHY2LjI3aDJWMTguN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9Ik0xNy44NiwxOC4zYTQuNDcsNC40NywwLDEsMC00LjQ3LTQuNDdBNC40Nyw0LjQ3LDAsMCwwLDE3Ljg2LDE4LjNabTAtNi45M2EyLjQ3LDIuNDcsMCwxLDEtMi40NywyLjQ3QTIuNDcs''@;'; put 'put ''Mi40NywwLDAsMSwxNy44NiwxMS4zN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiIGQ9Ik0xOC4xLDE5LjczQTkuNjksOS42OSwwLDAsMCwxMSwyMi40N2wtLjI1LjI4djcuMzNhMS41''@;'; put 'put ''NywxLjU3LDAsMCwwLDEuNjEsMS41NEgyMy44M2ExLjU3LDEuNTcsMCwwLDAsMS42MS0xLjU0VjIyLjczbC0uMjUtLjI4QTkuNTgsOS41OCwwLDAsMCwxOC4xLDE5LjczWm01LjMzLDkuODhIMTIuNzNWMjMuNTVhOC4wOCw4LjA4LDAsMCwxLDUuMzctMS44Miw4LDgsMCwwLDEsNS4zMywxLjha''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiBkPSJNMjYuMzcsMTJhMiwyLDAsMCwxLTIuMDkuNDIsNi41Myw2LjUzLDAsMCwxLC4xNSwxLjM4LDYuNTksNi41OSwwLDAsMSwwLC42OCw0''@;'; put 'put ''LDQsMCwwLDAsLjU3LjA2LDQuMDgsNC4wOCwwLDAsMCwzLjMtMS43QTcuNDUsNy40NSwwLDAsMSwyNi4zNywxMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiIGQ9Ik0yMi45NSw2Ljkz''@;'; put 'put ''YTQuMTYsNC4xNiwwLDAsMC0xLjQ3LDEuNDRBNi41OSw2LjU5LDAsMCwxLDIzLDkuNzdhMi4xLDIuMSwwLDAsMSwuNTktLjgzQTcuNDQsNy40NCwwLDAsMSwyMi45NSw2LjkzWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtOC0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAuMzMiIGN5PSI1LjY3IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTEyLDE2LjE0cS0uNDMsMC0uODcsMGE4LjY3LDguNjcsMCww''@;'; put 'put ''LDAtNi40MywyLjUybC0uMjQuMjh2OC4yOEg4LjU0di00LjdsLjU1LS42Mi4yNS0uMjlhMTEsMTEsMCwwLDEsNC43MS0yLjg2QTYuNTksNi41OSwwLDAsMSwxMiwxNi4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBk''@;'; put 'put ''PSJNMzEuMzQsMTguNjNhOC42Nyw4LjY3LDAsMCwwLTYuNDMtMi41MiwxMC40NywxMC40NywwLDAsMC0xLjA5LjA2LDYuNTksNi41OSwwLDAsMS0yLDIuNDUsMTAuOTEsMTAuOTEsMCwwLDEsNSwzbC4yNS4yOC41NC42MnY0LjcxaDMuOTRWMTguOTFaIi8+XG4gICAgICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTExLjEsMTQuMTljLjExLDAsLjIsMCwuMzEsMGE2LjQ1LDYuNDUsMCwwLDEsMy4xMS02LjI5LDQuMDksNC4wOSwwLDEsMC0zLjQyLDYuMzNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgZD0iTTI0LjQzLDEzLjQ0YTYuNTQsNi41NCwwLDAsMSwwLC42OSw0LjA5LDQuMDksMCwwLDAsLjU4LjA1aC4xOUE0LjA5LDQuMDksMCwxLDAsMjEuNDcsOCw2LjUzLDYuNTMsMCwwLDEsMjQuNDMsMTMuNDRaIi8+XG4gICAgICAgICAgICAgICAg''@;'; put 'put ''PGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01IiBjeD0iMTcuODciIGN5PSIxMy40NSIgcj0iNC40NyIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTYiIGQ9Ik0xOC4xMSwyMC4zQTkuNjksOS42''@;'; put 'put ''OSwwLDAsMCwxMSwyM2wtLjI1LjI4djYuMzNhMS41NywxLjU3LDAsMCwwLDEuNiwxLjU0SDIzLjg0YTEuNTcsMS41NywwLDAsMCwxLjYtMS41NFYyMy4zTDI1LjIsMjNBOS41OCw5LjU4LDAsMCwwLDE4LjExLDIwLjNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTEyLDE2LjE0cS0uNDMsMC0uODcsMGE4LjY3LDguNjcsMCwwLDAtNi40MywyLjUybC0uMjQuMjh2OC4yOEg4LjU0di00LjdsLjU1LS42Mi4yNS0uMjlhMTEsMTEsMCwwLDEsNC43MS0yLjg2QTYuNTksNi41OSww''@;'; put 'put ''LDAsMSwxMiwxNi4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJNMzEuMzQsMTguNjNhOC42Nyw4LjY3LDAsMCwwLTYuNDMtMi41MiwxMC40NywxMC40NywwLDAsMC0xLjA5LjA2''@;'; put 'put ''LDYuNTksNi41OSwwLDAsMS0yLDIuNDUsMTAuOTEsMTAuOTEsMCwwLDEsNSwzbC4yNS4yOC41NC42MnY0LjcxaDMuOTRWMTguOTFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIgZD0iTTEx''@;'; put 'put ''LjEsMTQuMTljLjExLDAsLjIsMCwuMzEsMGE2LjQ1LDYuNDUsMCwwLDEsMy4xMS02LjI5LDQuMDksNC4wOSwwLDEsMC0zLjQyLDYuMzNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCIgZD0i''@;'; put 'put ''TTE4LjExLDIwLjNBOS42OSw5LjY5LDAsMCwwLDExLDIzbC0uMjUuMjh2Ni4zM2ExLjU3LDEuNTcsMCwwLDAsMS42LDEuNTRIMjMuODRhMS41NywxLjU3LDAsMCwwLDEuNi0xLjU0VjIzLjNMMjUuMiwyM0E5LjU4LDkuNTgsMCwwLDAsMTguMTEsMjAuM1oiLz5cbiAgICAgICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC01LS1hbGVydGVkIiBkPSJNMTcuODcsMTcuOTJhNC40Niw0LjQ2LDAsMCwwLDQtMi41NEEzLjY3LDMuNjcsMCwwLDEsMTksOS44OWwuMzUtLjYxQTQuNDIsNC40MiwwLDAsMCwxNy44Nyw5YTQuNDcsNC40''@;'; put 'put ''NywwLDEsMCwwLDguOTNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTIsMTYuMTRxLS40Myww''@;'; put 'put ''LS44NywwYTguNjcsOC42NywwLDAsMC02LjQzLDIuNTJsLS4yNC4yOHY4LjI4SDguNTR2LTQuN2wuNTUtLjYyLjI1LS4yOWExMSwxMSwwLDAsMSw0LjcxLTIuODZBNi41OCw2LjU4LDAsMCwxLDEyLDE2LjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzEuMzQsMTguNjNhOC42Nyw4LjY3LDAsMCwwLTYuNDMtMi41MiwxMC40NywxMC40NywwLDAsMC0xLjA5LjA2LDYuNTksNi41OSwwLDAsMS0yLDIuNDUsMTAuOTEsMTAuOTEsMCwwLDEsNSwzbC4yNS4yOC41NC42MnY0Ljcx''@;'; put 'put ''aDMuOTRWMTguOTFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0xMS4xLDE0LjE5Yy4xMSwwLC4yLDAsLjMxLDBhNi40NSw2LjQ1LDAsMCwxLDMuMTEtNi4yOSw0LjA5LDQuMDksMCwx''@;'; put 'put ''LDAtMy40Miw2LjMzWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQiIGN4PSIxNy44NyIgY3k9IjEzLjQ1IiByPSI0LjQ3Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC01LS1iYWRnZWQiIGQ9Ik0xOC4xMSwyMC4zQTkuNjksOS42OSwwLDAsMCwxMSwyM2wtLjI1LjI4djYuMzNhMS41NywxLjU3LDAsMCwwLDEuNiwxLjU0SDIzLjg0YTEuNTcsMS41NywwLDAsMCwxLjYtMS41NFYyMy4zTDI1LjIsMjNBOS41''@;'; put 'put ''OCw5LjU4LDAsMCwwLDE4LjExLDIwLjNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC02LS1iYWRnZWQiIGQ9Ik0yNC40MywxMy40NGE2LjU0LDYuNTQsMCwwLDEsMCwuNjksNC4wOSw0LjA5LDAsMCwwLC41OC4w''@;'; put 'put ''NWguMTlhNC4wNSw0LjA1LDAsMCwwLDIuNTItMSw3LjUsNy41LDAsMCwxLTUuMTQtNi4zMkE0LjEzLDQuMTMsMCwwLDAsMjEuNDcsOCw2LjUzLDYuNTMsMCwwLDEsMjQuNDMsMTMuNDRaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTctLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLEwuQ2xyU2hhcGVQb3BPdXQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNywzM0g1YTIsMiwwLDAs''@;'; put 'put ''MS0yLTJWOUEyLDIsMCwwLDEsNSw3SDE1VjlINVYzMUgyN1YyMWgyVjMxQTIsMiwwLDAsMSwyNywzM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDNhMSwxLDAsMCwwLDAsMkgyOS41OUwxNS43NCwx''@;'; put 'put ''OC44NWExLDEsMCwxLDAsMS40MSwxLjQxTDMxLDYuNDFWMThhMSwxLDAsMCwwLDIsMFYzWiIvPicpLEwuQ2xyU2hhcGVGaWx0ZXI9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMyw0SDNBMSwxLDAsMCwwLDIs''@;'; put 'put ''NVY2LjY3YTEuNzksMS43OSwwLDAsMCwuNTMsMS4yN0wxNCwxOS41OHYxMC4ybDIsLjc2VjE5YTEsMSwwLDAsMC0uMjktLjcxTDQsNi41OVY2SDMydi42MUwyMC4zMywxOC4yOUExLDEsMCwwLDAsMjAsMTlsMCwxMy4yMUwyMiwzM1YxOS41TDMzLjQ3LDhBMS44MSwxLjgxLDAsMCwwLDM0LDYu''@;'; put 'put ''N1Y1QTEsMSwwLDAsMCwzMyw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yMiwzM1YxOS41TDMzLjQ3LDhBMS44MSwxLjgxLDAsMCwwLDM0LDYuN1Y1YTEsMSwwLDAsMC0xLTFIM0ExLDEsMCwwLDAsMiw1VjYu''@;'; put 'put ''NjdhMS43OSwxLjc5LDAsMCwwLC41MywxLjI3TDE0LDE5LjU4djEwLjJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD0iTTMzLjQ4LDRoLTMxQS41Mi41MiwwLDAsMCwyLDQuNTJWNi4yNGExLjMzLDEuMzMsMCwwLDAsLjM5Ljk1bDEyLDEydjEwbDcuMjUsMy42MVYxOS4xN2wxMi0xMkEx''@;'; put 'put ''LjM1LDEuMzUsMCwwLDAsMzQsNi4yNlY0LjUyQS41Mi41MiwwLDAsMCwzMy40OCw0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlUGluPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIiBkPSJNMzMsMTYuNTlhMSwxLDAsMCwxLS43MS0uMjlMMTkuNywzLjcxYTEsMSwwLDAsMSwxLjQxLTEuNDFMMzMuNzEsMTQuODlBMSwxLDAsMCwxLDMzLDE2LjU5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yIiBkPSJNMjguNTIsMTUuNTZsLTEuNDEtMS40MS03LjIsNy4yYTEsMSwwLDAsMC0uMjUsMSw5LDksMCwwLDEtMS41Myw4LjA5TDUuNTgsMTcuODdhOSw5LDAsMCwxLDguMDktMS41MywxLDEsMCwwLDAsMS0uMjVsNy4yLTcuMkwyMC40NCw3LjQ4bC02Ljc5LDYuNzlBMTAuOTQsMTAu''@;'; put 'put ''OTQsMCwwLDAsMy40MSwxNy4xMWExLDEsMCwwLDAsMCwxLjQybDYuMzMsNi4zM0wyLjI5LDMyLjI5YTEsMSwwLDEsMCwxLjQxLDEuNDFsNy40NC03LjQ0LDYuMzMsNi4zM2ExLDEsMCwwLDAsLjcxLjI5aDBhMSwxLDAsMCwwLC43MS0uMywxMSwxMSwwLDAsMCwyLjg0LTEwLjI0WiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMywxNi43MWExLDEsMCwwLDEtLjcxLS4yOUwxOS43LDMuODJhMSwxLDAsMCwxLDEuNDEtMS40MUwzMy43MSwxNUExLDEsMCwwLDEsMzMsMTYuNzFaIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTIwLjQ0LDcuNTlsLTYuNzksNi43OUExMC45NCwxMC45NCwwLDAsMCwzLjQxLDE3LjIyYTEsMSwwLDAsMCwwLDEuNDJMOS43MywyNSwyLjI5LDMyLjQxYTEsMSwwLDEsMCwxLjQxLDEuNDFsNy40NC03''@;'; put 'put ''LjQ0LDYuMzMsNi4zM2ExLDEsMCwwLDAsLjcxLjI5aDBhMSwxLDAsMCwwLC43MS0uMywxMSwxMSwwLDAsMCwyLjg0LTEwLjI0bDYuNzktNi43OVoiLz4nKSxMLkNsclNoYXBlRmlsZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMSIgZD0iTTIxLjg5LDRINy44M0ExLjg4LDEuODgsMCwwLDAsNiw1LjkxVjMwLjA5QTEuODgsMS44OCwwLDAsMCw3LjgzLDMySDI4LjE3QTEuODgsMS44OCwwLDAsMCwzMCwzMC4wOVYxMS45MlptLS4zLDIuNDksNiw1LjloLTZaTTgsMzBWNkgyMHY4aDhWMzBaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMjEuNTksMTIuMzlWNi40OWwxLjA3LDFhNy4zMSw3LjMxLDAsMCwxLDAtMi44MkwyMS44OSw0SDcuODNBMS44OCwxLjg4LDAsMCwwLDYsNS45MVYzMC4wOUEx''@;'; put 'put ''Ljg4LDEuODgsMCwwLDAsNy44MywzMkgyOC4xN0ExLjg4LDEuODgsMCwwLDAsMzAsMzAuMDlWMTMuNWE3LjQ1LDcuNDUsMCwwLDEtMy45MS0xLjExWk0yOCwzMEg4VjZIMjB2OGg4WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yOCwxNS40VjMwSDhWNkgy''@;'; put 'put ''MFY4LjI1bDIuMjUtMy45TDIxLjg5LDRINy44M0ExLjg4LDEuODgsMCwwLDAsNiw1LjkxVjMwLjA5QTEuODgsMS44OCwwLDAsMCw3LjgzLDMySDI4LjE3QTEuODgsMS44OCwwLDAsMCwzMCwzMC4wOVYxNS40WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1''@;'; put 'put ''LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTIxLjg5LDRINy44M0ExLjg4LDEuODgsMCwwLDAsNiw1LjkxVjMwLjA5QTEuODgsMS44OCwwLDAsMCw3LjgzLDMySDI4LjE3QTEuODgsMS44OCwwLDAsMCwz''@;'; put 'put ''MCwzMC4wOVYxMS45MlpNMjEsMTNWNS44NEwyOC4zLDEzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMjcuMjUsMTNIMjFWNS44NGwxLjY0LDEuNmE3LjI1LDcuMjUsMCwwLDEsMC0y''@;'; put 'put ''Ljc0TDIxLjg5LDRINy44M0ExLjg4LDEuODgsMCwwLDAsNiw1LjkxVjMwLjA5QTEuODgsMS44OCwwLDAsMCw3LjgzLDMySDI4LjE3QTEuODgsMS44OCwwLDAsMCwzMCwzMC4wOVYxMy41QTcuNDcsNy40NywwLDAsMSwyNy4yNSwxM1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIg''@;'; put 'put ''ZD0iTTIyLjIsMTUuNGMtMiwwLTMuNy0xLjYtMy43LTMuNmMwLTAuNywwLjItMS4zLDAuNS0xLjlsMy4yLTUuNUwyMS45LDRINy44QzYuOCw0LDYsNC45LDYsNS45djI0LjJjMCwxLDAuOCwxLjksMS44LDEuOWgyMC4zYzEsMCwxLjgtMC45LDEuOC0xLjlWMTUuNEgyMi4yeiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi45LDEuMUwyMS4xLDExYy0wLjQsMC42LTAuMiwxLjQsMC4zLDEuOGMwLjIsMC4yLDAuNSwwLjIsMC44LDAuMmgxMS41YzAuNyww''@;'; put 'put ''LDEuMy0wLjUsMS4zLTEuMmMwLTAuMy0wLjEtMC41LTAuMi0wLjhsLTUuNy05LjljLTAuNC0wLjYtMS4xLTAuOC0xLjgtMC41QzI3LjEsMC44LDI3LDEsMjYuOSwxLjF6Ii8+JyksTC5DbHJTaGFwZVBsdXM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMCwxN0gxOVY2YTEsMSwwLDEsMC0yLDBWMTdINmExLDEsMCwwLDAtMSwxLC45MS45MSwwLDAsMCwxLC45NEgxN1YzMGExLDEsMCwxLDAsMiwwVjE5SDMwYTEsMSwwLDAsMCwxLTFBMSwxLDAsMCwwLDMwLDE3WiIvPicpLEwuQ2xyU2hhcGVNaW51cz0o''@;'; put 'put ''MCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYsMTdIMTBhMSwxLDAsMCwwLDAsMkgyNmExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZU1pbnVzQ2lyY2xlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9''@;'; put 'put ''Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNCwxN0gxMmEx''@;'; put 'put ''LDEsMCwwLDAsMCwySDI0YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTYsMTcuNUgxMmExLjUsMS41LDAsMCwx''@;'; put 'put ''LDAtM0gyNGExLjUsMS41LDAsMCwxLDAsM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZVBsdXNDaXJjbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI2LjE3LDE3SDE5VjkuODNhMSwxLDAsMCwwLTIsMFYxN0g5LjgzYTEsMSww''@;'; put 'put ''LDAsMCwwLDJIMTd2Ny4xN2ExLDEsMCwwLDAsMiwwVjE5aDcuMTdhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0w''@;'; put 'put ''LDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNCwxOEExNiwxNiwwLDEsMSwxOCwyLDE2LDE2LDAsMCwxLDM0LDE4Wm0tOC40MS0xLjVIMTku''@;'; put 'put ''NVYxMC40MWExLjUsMS41LDAsMCwwLTMsMFYxNi41SDEwLjQxYTEuNSwxLjUsMCwwLDAsMCwzSDE2LjV2Ni4wOWExLjUsMS41LDAsMCwwLDMsMFYxOS41aDYuMDlhMS41LDEuNSwwLDAsMCwwLTNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksTC5DbHJTaGFw''@;'; put 'put ''ZUJhbj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNNCwxOEExMy45MywxMy45MywwLDAsMSw3LjQzLDguODVMMjcuMTUsMjguNTdBMTQs''@;'; put 'put ''MTQsMCwwLDEsNCwxOFptMjQuNTcsOS4xNUw4Ljg1LDcuNDNBMTQsMTQsMCwwLDEsMjguNTcsMjcuMTVaIi8+JyksTC5DbHJTaGFwZVRpbWVzQ2lyY2xlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTkuNjEs''@;'; put 'put ''MThsNC44Ni00Ljg2YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTguMiwxNi41NGwtNC44OS00Ljg5YTEsMSwwLDAsMC0xLjQxLDEuNDFMMTYuNzgsMTgsMTIsMjIuNzJhMSwxLDAsMSwwLDEuNDEsMS40MWw0Ljc3LTQuNzcsNC43NCw0Ljc0YTEsMSwwLDAsMCwxLjQxLTEuNDFaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpNMTgsNEExNCwxNCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwxOCw0WiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTgsMjIuMWExLjQsMS40LDAsMCwxLTIsMmwtNi02TDEyLDI2LjEyYTEuNCwxLjQsMCwxLDEtMi0yTDE2LDE4LjA4LDkuODMsMTEu''@;'; put 'put ''ODZhMS40LDEuNCwwLDEsMSwyLTJMMTgsMTYuMWw2LjE3LTYuMTdhMS40LDEuNCwwLDEsMSwyLDJMMjAsMTguMDhaIi8+JyksTC5DbHJTaGFwZVRyYXNoPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcuMTQs''@;'; put 'put ''MzRIOC44NkEyLjkzLDIuOTMsMCwwLDEsNiwzMVYxMS4yM0g4VjMxYS45My45MywwLDAsMCwuODYsMUgyNy4xNEEuOTMuOTMsMCwwLDAsMjgsMzFWMTEuMjNoMlYzMUEyLjkzLDIuOTMsMCwwLDEsMjcuMTQsMzRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMC43OCw5SDVBMSwxLDAsMCwxLDUsN0gzMC43OGExLDEsMCwwLDEsMCwyWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIyMSIgeT0iMTMiIHdpZHRoPSIy''@;'; put 'put ''IiBoZWlnaHQ9IjE1Ii8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjEzIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMTUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtNSIgZD0iTTIzLDUuODZIMjEuMVY0SDE0LjlWNS44NkgxM1Y0YTIsMiwwLDAsMSwxLjktMmg2LjJBMiwyLDAsMCwxLDIzLDRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTYsOVYz''@;'; put 'put ''MWEyLjkzLDIuOTMsMCwwLDAsMi44NiwzSDI3LjA5QTIuOTMsMi45MywwLDAsMCwzMCwzMVY5Wm05LDIwSDEzVjE0aDJabTgsMEgyMVYxNGgyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMC43Myw1SDIzVjRB''@;'; put 'put ''MiwyLDAsMCwwLDIxLDJoLTYuMkEyLDIsMCwwLDAsMTMsNFY1SDVBMSwxLDAsMSwwLDUsN0gzMC43M2ExLDEsMCwwLDAsMC0yWiIvPicpLEwuQ2xyU2hhcGVUYWc9KDAsRS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjeD0iMTAuNTIiIGN5PSIxMC41MiIgcj0iMS40MyIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45MywxOS4yLDE3LjMzLDQuNkEyLDIsMCwwLDAsMTUuOTIsNEw2LDRBMiwyLDAsMCwwLDQsNmwwLDkuOTJhMiwyLDAsMCwwLC41OSwxLjQxbDE0LjYsMTQuNmEyLDIsMCwwLDAsMi44MywwbDku''@;'; put 'put ''OS05LjlBMiwyLDAsMCwwLDMxLjkzLDE5LjJaTTIwLjYyLDMwLjUyLDYsMTUuOTFWNmg5LjkybDE0LjYsMTQuNjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTAuNTIiIGN5PSIxMC41MiIgcj0iMS40MyIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45MywxOS4ybC0zLjgtMy44SDI1LjMxbDUuMjIsNS4yMi05LjksOS45TDYsMTUuOTFWNmg5LjkybDMuNDEsMy40MSwxLTEuNzgtMy0z''@;'; put 'put ''QTIsMiwwLDAsMCwxNS45Miw0TDYsNEEyLDIsMCwwLDAsNCw2bDAsOS45MmEyLDIsMCwwLDAsLjU5LDEuNDFsMTQuNiwxNC42YTIsMiwwLDAsMCwyLjgzLDBsOS45LTkuOUEyLDIsMCwwLDAsMzEuOTMsMTkuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTAuNTIiIGN5PSIxMC41MiIgcj0iMS40MyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTMsMTkuMiwxNy4zMyw0LjZBMiwyLDAsMCwwLDE1LjkyLDRMNiw0QTIsMiwwLDAsMCw0LDZsMCw5LjkyYTIsMiwwLDAsMCwuNTksMS40MWwxNC42LDE0LjZhMiwyLDAsMCwwLDIuODMsMGw5LjktOS45QTIsMiwwLDAs''@;'; put 'put ''MCwzMS45MywxOS4yWk0yMC42MiwzMC41Miw2LDE1LjkxVjZoOS45MmwxNC42LDE0LjYyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjkzLDE5LjIsMTcuMzMsNC42QTIsMiwwLDAsMCwxNS45Miw0TDYsNEEyLDIsMCwwLDAsNCw2bDAsOS45MmEyLDIsMCwwLDAsLjU5''@;'; put 'put ''LDEuNDFsMTQuNiwxNC42YTIsMiwwLDAsMCwyLjgzLDBsOS45LTkuOUEyLDIsMCwwLDAsMzEuOTMsMTkuMlpNOS42NSwxMS4zMWExLjY2LDEuNjYsMCwxLDEsMS42Ni0xLjY2QTEuNjYsMS42NiwwLDAsMSw5LjY1LDExLjMxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjQ2LDE1LjczSDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSwxMC4yMmwxLjQzLTIuNDdMMTcuMzMsNC42QTIsMiwwLDAsMCwxNS45Miw0TDYsNEEyLDIsMCwwLDAsNCw2bDAsOS45MmEyLDIsMCwwLDAsLjU5LDEuNDFsMTQuNiwxNC42YTIs''@;'; put 'put ''MiwwLDAsMCwyLjgzLDBsOS45LTkuOWEyLDIsMCwwLDAsMC0yLjgzWk05LjY1LDExLjMxYTEuNjYsMS42NiwwLDEsMSwxLjY2LTEuNjZBMS42NiwxLjY2LDAsMCwxLDkuNjUsMTEuMzFaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS40N2wtNS43Miw5LjkxYTEuMjgsMS4yOCwwLDAsMCwxLjEsMS45MUgzMy42OGExLjI4LDEuMjgsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS40N0ExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS40N1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45MywxOS4yLDE3LjMzLDQuNkEyLDIsMCwwLDAsMTUuOTIsNEw2LDRBMiwyLDAsMCwwLDQsNmwwLDkuOTJhMiwyLDAsMCwwLC41OSwxLjQxbDE0LjYsMTQuNmEy''@;'; put 'put ''LDIsMCwwLDAsMi44MywwbDkuOS05LjlBMiwyLDAsMCwwLDMxLjkzLDE5LjJaTTkuNjUsMTEuMzFhMS42NiwxLjY2LDAsMSwxLDEuNjYtMS42NkExLjY2LDEuNjYsMCwwLDEsOS42NSwxMS4zMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2Vk''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYuMzMiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+JyksTC5DbHJTaGFwZVRhZ3M9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMz''@;'; put 'put ''LjE2LDE5LjEzLDE5LjU4LDUuNTVBMS45MiwxLjkyLDAsMCwwLDE4LjIxLDVIMTYuMTJMMzEuNzUsMjAuNDUsMjEuMjIsMzEuMDdhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFhMS45MywxLjkzLDAsMCwwLDAtMi43M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSI3LjgxIiBjeT0iMTEuMTQiIHI9IjEuMzMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuNzgsMTkuMTcsMTQuMiw1LjU4QTEuOTIsMS45Miww''@;'; put 'put ''LDAsMCwxMi44Myw1SDMuNjFBMS45MywxLjkzLDAsMCwwLDEuNjgsNi45M3Y5LjIyYTEuOTIsMS45MiwwLDAsMCwuNTcsMS4zNkwxNS44NCwzMS4xYTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxQTEuOTMsMS45MywwLDAsMCwyNy43OCwxOS4xN1pNMTcuMjYsMjkuNjksMy42OSwx''@;'; put 'put ''Ni4xNVY3aDkuMUwyNi4zNywyMC40OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSI3LjgxIiBjeT0iMTEuMTQiIHI9IjEuMzMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3Ljc4LDE5LjE3LDE0LjIsNS41OEExLjkyLDEuOTIsMCwwLDAsMTIuODMsNUgzLjYxQTEuOTMsMS45MywwLDAsMCwxLjY4LDYuOTN2OS4yMmExLjkyLDEuOTIsMCwwLDAsLjU3LDEuMzZMMTUuODQsMzEuMWExLjkzLDEu''@;'; put 'put ''OTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMUExLjkzLDEuOTMsMCwwLDAsMjcuNzgsMTkuMTdaTTE3LjI2LDI5LjY5LDMuNjksMTYuMTVWN2g5LjFMMjYuMzcsMjAuNDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0zMy4xNiwxOS4xMywxOS41OCw1LjU1QTEuOTIsMS45MiwwLDAsMCwxOC4yMSw1SDE2LjEyTDMxLjc1LDIwLjQ1LDIxLjIyLDMxLjA3YTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxYTEuOTMsMS45MywwLDAsMCwwLTIuNzNaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8Y2lyY2xlIGN4PSI3LjgxIiBjeT0iMTEuMTQiIHI9IjEuMzMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuNzgsMTkuMTcsMjQsMTUuNEgyMi4yM0EzLjY1''@;'; put 'put ''LDMuNjUsMCwwLDEsMjEsMTUuMTlsNS4zMyw1LjI5LTkuMTEsOS4yMUwzLjY5LDE2LjE1VjdoOS4xbDYsNS45NGEzLjY4LDMuNjgsMCwwLDEsLjEtMi42OUwxNC4yLDUuNThBMS45MiwxLjkyLDAsMCwwLDEyLjgzLDVIMy42MUExLjkzLDEuOTMsMCwwLDAsMS42OCw2LjkzdjkuMjJhMS45Miwx''@;'; put 'put ''LjkyLDAsMCwwLC41NywxLjM2TDE1Ljg0LDMxLjFhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFBMS45MywxLjkzLDAsMCwwLDI3Ljc4LDE5LjE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0yMC44Myw2LjgsMTkuNTgsNS41NUExLjkyLDEuOTIsMCwwLDAsMTguMjEsNUgxNi4xMkwxOS43OSw4LjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMz''@;'; put 'put ''LjE2LDE5LjEzLDI5LjQzLDE1LjRIMjYuNjVsNS4xLDVMMjEuMjIsMzEuMDdhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFhMS45MywxLjkzLDAsMCwwLDAtMi43M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjE2LDE5LjEzLDE5LjU4LDUuNTVBMS45MiwxLjkyLDAsMCwwLDE4LjIxLDVIMTYuMTJMMzEuNzUsMjAuNDUsMjEuMjIsMzEuMDdhMS45MywxLjkzLDAsMCww''@;'; put 'put ''LDIuNzMsMGw5LjIxLTkuMjFhMS45MywxLjkzLDAsMCwwLDAtMi43M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy43OCwxOS4xNywxNC4yLDUuNThBMS45MiwxLjkyLDAsMCwwLDEyLjgzLDVIMy42MUExLjkzLDEu''@;'; put 'put ''OTMsMCwwLDAsMS42OCw2LjkzdjkuMjJhMS45MiwxLjkyLDAsMCwwLC41NywxLjM2TDE1Ljg0LDMxLjFhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFBMS45MywxLjkzLDAsMCwwLDI3Ljc4LDE5LjE3Wk02LjY3LDExLjcyQTEuNzMsMS43MywwLDEsMSw4LjQsMTAsMS43MywxLjcz''@;'; put 'put ''LDAsMCwxLDYuNjcsMTEuNzJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuNzgsMTkuMTcsMTQuMiw1LjU4QTEuOTIsMS45MiwwLDAsMCwxMi44Myw1SDMuNjFBMS45MywxLjkzLDAsMCwwLDEuNjgsNi45M3Y5LjIy''@;'; put 'put ''YTEuOTIsMS45MiwwLDAsMCwuNTcsMS4zNkwxNS44NCwzMS4xYTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxQTEuOTMsMS45MywwLDAsMCwyNy43OCwxOS4xN1pNNi42NywxMS43MkExLjczLDEuNzMsMCwxLDEsOC40LDEwLDEuNzMsMS43MywwLDAsMSw2LjY3LDExLjcyWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xNiwxOS4xMywxOS41OCw1LjU1QTEuOTIsMS45MiwwLDAsMCwxOC4yMSw1SDE2LjEyTDMxLjc1LDIwLjQ1LDIxLjIyLDMxLjA3YTEuOTMsMS45Myww''@;'; put 'put ''LDAsMCwyLjczLDBsOS4yMS05LjIxYTEuOTMsMS45MywwLDAsMCwwLTIuNzNaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIwLjgzLDYuOCwxOS41OCw1LjU1QTEuOTIsMS45MiwwLDAsMCwxOC4yMSw1SDE2LjEyTDE5Ljc5LDguNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xNiwxOS4xMywyOS40MywxNS40SDI2LjY1bDUuMSw1TDIxLjIyLDMxLjA3YTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxYTEuOTMsMS45MywwLDAsMCwwLTIuNzNaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuNzgsMTkuMTcsMjQsMTUuNEgyMi4yM2EzLjY3LDMuNjcsMCwwLDEtMy4zNi01LjE1TDE0LjIsNS41OEExLjkyLDEuOTIsMCwwLDAsMTIuODMsNUgzLjYx''@;'; put 'put ''QTEuOTMsMS45MywwLDAsMCwxLjY4LDYuOTN2OS4yMmExLjkyLDEuOTIsMCwwLDAsLjU3LDEuMzZMMTUuODQsMzEuMWExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMUExLjkzLDEuOTMsMCwwLDAsMjcuNzgsMTkuMTdaTTYuNjcsMTEuNzJBMS43MywxLjczLDAsMSwxLDguNCwxMCwx''@;'; put 'put ''LjczLDEuNzMsMCwwLDEsNi42NywxMS43MloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4''@;'; put 'put ''LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz4nKSxMLkNsclNoYXBlSGlzdG9yeT0oMCxFLmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNMTgsOS44M2ExLDEsMCwwLDAtMSwxdjguNzJsNS45LDRBMSwxLDAsMCwwLDI0LDIxLjg4bC01LTMuMzlWMTAuODNBMSwxLDAsMCwwLDE4LDkuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTE4LDJBMTYuMDksMTYuMDksMCwwLDAsNCwxMC4yNlY1LjJhMSwxLDAsMCwwLTIsMFYxNGg4LjhhMSwxLDAsMCwwLDAtMkg1LjM1QTE0LDE0LDAsMSwxLDguNTgsMjguMzVhMSwxLDAsMCwwLTEuMzUsMS40OEExNiwxNiwwLDEsMCwxOCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiLz4nKSxMLkNsclNoYXBlQ2xvY2s9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguOTIsMTguNFYxMC43NWExLDEsMCwwLDAtMiwwdjguNzJsNS45LDRhMSwxLDAsMSwwLDEuMTEtMS42NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNOCwxNy45NEE5Ljk0LDkuOTQsMCwwLDEsMjMuNDEsOS41OWwuODUtMS4zNmExMS41NSwxMS41NSwwLDEsMC04LjUzLDIxTDE2LDI3LjdBMTAsMTAsMCwwLDEsOCwxNy45NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguOTIsMTAuNzVhMSwxLDAsMCwwLTIsMHY4LjcybDUuOSw0YTEsMSwwLDEsMCwxLjExLTEuNjZsLTUtMy4zOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTMzLjEyLDEyLjgxYTcuNDQsNy40NCwwLDAsMS0xLjkxLjU4LDE0LjA1LDE0LjA1LDAsMSwxLTguNi04LjYsNy40NCw3LjQ0LDAsMCwxLC41OC0xLjkxLDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDYuMzhhMTEuNTYsMTEuNTYsMCwwLDAtMi4yNywyMi44OUwxNiwyNy43YTEwLDEwLDAsMSwxLDcuMzktMTguMWgwYTcuNDUsNy40NSwwLDAsMS0uNzgtMi4yM0ExMS40NSwxMS40NSwwLDAsMCwxOCw2LjM4''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjkyLDEwLjc1YTEsMSwwLDAsMC0yLDB2OC43Mmw1LjksNGExLDEsMCwxLDAsMS4xMS0xLjY2bC01LTMuMzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjc3LDE1LjM5aC0yQTE0LDE0LDAsMSwxLDIyLjA5LDQuNjFsMS0xLjc2QTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDMzLjc3LDE1LjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTIt''@;'; put 'put ''LWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCw4YTkuODEsOS44MSwwLDAsMSwyLC4yM2wuODUtMS40NmExMS41NSwxMS41NSwwLDEsMC01LjEzLDIyLjUyTDE2LDI3LjdBMTAsMTAsMCwwLDEsMTgsOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptNi4yLDIxLjE4YTEsMSwwLDAsMS0xLjM5LjI4''@;'; put 'put ''bC01LjktNFYxMC43NWExLDEsMCwwLDEsMiwwVjE4LjRsNSwzLjM5QTEsMSwwLDAsMSwyNC4yLDIzLjE4Wk0yMy44NSw4LjIzYTExLjM5LDExLjM5LDAsMSwwLTguNTQsMjAuODNMMTUsMzAuNjNhMTMsMTMsMCwxLDEsOS43LTIzLjc3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjEyLDEyLjgxQTcuNDgsNy40OCwwLDAsMSwyMi42OCw3LjYzLDExLjI0LDExLjI0LDAsMCwwLDE4LDYuNmExMS4zOSwxMS4zOSwwLDAsMC0yLjY5LDIyLjQ3TDE1LDMwLjYzQTEzLDEzLDAsMCwxLDE4LDVhMTIuODEsMTIuODEs''@;'; put 'put ''MCwwLDEsNC41MS44Miw3LjQ2LDcuNDYsMCwwLDEsLjY4LTIuOTQsMTYuMDYsMTYuMDYsMCwxLDAsOS45Myw5LjkzWk0yNC4yLDIzLjE4YTEsMSwwLDAsMS0xLjM5LjI4bC01LjktNFYxMC43NWExLDEsMCwwLDEsMiwwVjE4LjRsNSwzLjM5QTEsMSwwLDAsMSwyNC4yLDIzLjE4WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0zMy43NywxNS4zOUgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTksMTMuNTZjMC0uMDktLjA5LS4xOC0uMTMtLjI3VjE4LjRsNSwzLjM5YTEsMSwwLDAsMS0xLjExLDEuNjZsLTUuOS00VjEwLjc1YTEsMSwwLDAsMSwxLjkxLS40MUEzLjY1LDMuNjUsMCwwLDEs''@;'; put 'put ''MTksOS44OUwyMC43NCw3QTExLjE5LDExLjE5LDAsMCwwLDE4LDYuNmExMS4zOSwxMS4zOSwwLDAsMC0yLjY5LDIyLjQ3TDE1LDMwLjYzQTEzLDEzLDAsMCwxLDE4LDVhMTIuOCwxMi44LDAsMCwxLDMuNTcuNTFsMS41My0yLjY2QTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDMzLjc3''@;'; put 'put ''LDE1LjM5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwx''@;'; put 'put ''MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPicpLEwuQ2xyU2hhcGVBbGFybUNsb2NrPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0z''@;'; put 'put ''MS40NywzLjg0YTUuNzgsNS43OCwwLDAsMC03LjM3LS42MywxNi4wOCwxNi4wOCwwLDAsMSw4LjIsNy42NUE1LjczLDUuNzMsMCwwLDAsMzEuNDcsMy44NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuNDIs''@;'; put 'put ''My40M2E1Ljc3LDUuNzcsMCwwLDAtNy42NC40MSw1LjcyLDUuNzIsMCwwLDAtLjM4LDcuNjRBMTYuMDgsMTYuMDgsMCwwLDEsMTEuNDIsMy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTYuNCw0LjA5QTE0''@;'; put 'put ''LDE0LDAsMCwwLDguMTEsMjcuODhMNS41NiwzMC40M0ExLDEsMCwxLDAsNywzMS44NGwyLjY2LTIuNjZhMTMuOSwxMy45LDAsMCwwLDE2Ljg4LS4wOGwyLjc0LDIuNzRhMSwxLDAsMCwwLDEuNDEtMS40MUwyOCwyNy43OEExNCwxNCwwLDAsMCwxNi40LDQuMDlaTTE5LjU4LDI5LjlBMTIsMTIs''@;'; put 'put ''MCwxLDEsMjkuOTIsMTkuNTYsMTIsMTIsMCwwLDEsMTkuNTgsMjkuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuOTIsMjAuMzRsLTYuMDYtM1Y5LjVhLjkuOSwwLDAsMC0xLjgsMHY5TDI0LjEyLDIyYS45''@;'; put 'put ''LjksMCwxLDAsLjc5LTEuNjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjQyLDMuNDNhNS43Nyw1Ljc3LDAsMCwwLTcuNjQuNDEsNS43Miw1LjcyLDAsMCwwLS4zOCw3LjY0QTE2LjA4LDE2LjA4LDAsMCwx''@;'; put 'put ''LDExLjQyLDMuNDNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4Ljg2LDkuNWEuOS45LDAsMCwwLTEuOCwwdjlMMjQuMTIsMjJhLjkuOSwwLDEsMCwuNzktMS42MmwtNi4wNi0z''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwyNy43OEExMy44OCwxMy44OCwwLDAsMCwzMS43NywxNS40aC0yYTEyLjA3LDEyLjA3LDAsMSwxLTguNjctOWwxLTEuOGExNCwx''@;'; put 'put ''NCwwLDAsMC0xNCwyMy4yN0w1LjU2LDMwLjQzQTEsMSwwLDEsMCw3LDMxLjg0bDIuNjYtMi42NmExMy45LDEzLjksMCwwLDAsMTYuODgtLjA4bDIuNzQsMi43NGExLDEsMCwwLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMt''@;'; put 'put ''LWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuNDIsMy40M2E1Ljc3LDUuNzcsMCwwLDAtNy42NC40MSw1LjcyLDUuNzIsMCwwLDAtLjM4LDcuNjRBMTYuMDgsMTYuMDgsMCwwLDEsMTEu''@;'; put 'put ''NDIsMy40M1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwyNy43OEExMy44OCwxMy44OCwwLDAsMCwzMS43NywxNS40SDIyLjIzQTMuNjksMy42OSwwLDAsMSwxOSwxMy41NkwxOSwx''@;'; put 'put ''My40djMuNzhMMjUsMjAuMWExLDEsMCwxLDEtLjg3LDEuOEwxNywxOC40NFY5LjY5YTEsMSwwLDAsMSwyLDBWMTBMMTksOS44OWwzLTUuMjhhMTQsMTQsMCwwLDAtMTQsMjMuMjdMNS41NiwzMC40M0ExLDEsMCwxLDAsNywzMS44NGwyLjY2LTIuNjZhMTMuOSwxMy45LDAsMCwwLDE2Ljg4LS4w''@;'; put 'put ''OGwyLjc0LDIuNzRhMSwxLDAsMCwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42''@;'; put 'put ''OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS40''@;'; put 'put ''MiwzLjQzYTUuNzcsNS43NywwLDAsMC03LjY0LjQxLDUuNzIsNS43MiwwLDAsMC0uMzgsNy42NEExNi4wOCwxNi4wOCwwLDAsMSwxMS40MiwzLjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0yOCwyNy43OGExMy44OSwxMy44OSwwLDAsMCwzLjIxLTE0LjM5QTcuNDYsNy40NiwwLDAsMSwyMi41LDZhNy41Miw3LjUyLDAsMCwxLC4xMS0xLjIxQTE0LDE0LDAsMCwwLDguMTEsMjcuODhMNS41NiwzMC40M0ExLDEsMCwxLDAsNywzMS44NGwyLjY2LTIuNjZhMTMuOSwxMy45LDAsMCww''@;'; put 'put ''LDE2Ljg4LS4wOGwyLjc0LDIuNzRhMSwxLDAsMCwwLDEuNDEtMS40MVptLTIuNTItNi4zNWExLDEsMCwwLDEtMS4zMy40N0wxNywxOC40NFY5LjY5YTEsMSwwLDAsMSwyLDB2Ny41TDI1LDIwLjFBMSwxLDAsMCwxLDI1LjQ5LDIxLjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS40''@;'; put 'put ''MiwzLjQzYTUuNzcsNS43NywwLDAsMC03LjY0LjQxLDUuNzIsNS43MiwwLDAsMC0uMzgsNy42NEExNi4wOCwxNi4wOCwwLDAsMSwxMS40MiwzLjQzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMTguODYsOS41YS45LjksMCwwLDAtMS44LDB2OUwyNC4xMiwyMmEuOS45LDAsMSwwLC43OS0xLjYybC02LjA2LTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwyNy43''@;'; put 'put ''OGExMy44OSwxMy44OSwwLDAsMCwzLjIxLTE0LjM5LDcsNywwLDAsMS0yLjExLjA1QTEyLDEyLDAsMSwxLDIyLjU2LDYuOSw3LjU0LDcuNTQsMCwwLDEsMjIuNSw2YTcuNTIsNy41MiwwLDAsMSwuMTEtMS4yMUExNCwxNCwwLDAsMCw4LjExLDI3Ljg4TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcs''@;'; put 'put ''MzEuODRsMi42Ni0yLjY2YTEzLjksMTMuOSwwLDAsMCwxNi44OC0uMDhsMi43NCwyLjc0YTEsMSwwLDAsMCwxLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBj''@;'; put 'put ''eT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNDcsMy44NGE1Ljc4LDUuNzgsMCwwLDAtNy4zNy0uNjMsMTYuMDgsMTYuMDgsMCwwLDEsOC4y''@;'; put 'put ''LDcuNjVBNS43Myw1LjczLDAsMCwwLDMxLjQ3LDMuODRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuNDIsMy40M2E1Ljc3LDUuNzcsMCwwLDAtNy42NC40MSw1LjcyLDUuNzIsMCwwLDAtLjM4LDcuNjRBMTYuMDgs''@;'; put 'put ''MTYuMDgsMCwwLDEsMTEuNDIsMy40M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCw0QTE0LDE0LDAsMCwwLDguMTEsMjcuODhMNS41NiwzMC40M0ExLDEsMCwxLDAsNywzMS44NGwyLjY2LTIuNjZhMTMuOSwxMy45''@;'; put 'put ''LDAsMCwwLDE2Ljg4LS4wOGwyLjc0LDIuNzRhMSwxLDAsMCwwLDEuNDEtMS40MUwyOCwyNy43OEExNCwxNCwwLDAsMCwxOCw0Wm03LjQ3LDE3LjQzYTEsMSwwLDAsMS0xLjMzLjQ3TDE3LDE4LjQ0VjkuNjlhMSwxLDAsMCwxLDIsMHY3LjVMMjUsMjAuMUExLDEsMCwwLDEsMjUuNDksMjEuNDNa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+JyksTC5DbHJTaGFwZUNpcmNsZUFycm93PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQs''@;'; put 'put ''MCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjA4LDguMjZsLTcuNjEsNy42MWExLDEsMCwxLDAsMS40MSwxLjQxTDE3LDEyLjE4djE1YTEsMSwwLDAsMCwyLDBWMTJsNS4yOCw1LjI4YTEs''@;'; put 'put ''MSwwLDEsMCwxLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptOCwxNS41N2ExLjQzLDEuNDMsMCwwLDEtMiwwTDE5LjQsMTNW''@;'; put 'put ''MjcuMTRhMS40LDEuNCwwLDAsMS0yLjgsMHYtMTRsLTQuNDMsNC40M2ExLjQsMS40LDAsMCwxLTItMkwxOC4wOCw3LjcsMjYsMTUuNTlBMS40LDEuNCwwLDAsMSwyNiwxNy41N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxMLkNsclNoYXBlQ2hpbGRBcnJv''@;'; put 'put ''dz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjQuODIsMTUuOGExLDEsMCwwLDAtMS40MSwwLDEsMSwwLDAsMCwwLDEuNDFMMjcuMiwyMUg5VjMuNzhhMSwxLDAsMSwwLTIsMFYyMWEyLDIsMCwwLDAsMiwySDI3LjE1bC0zLjc0LDMuNzVhMSwxLDAsMCwwLDAsMS40MSwxLDEsMCwwLDAs''@;'; put 'put ''LjcuMjksMSwxLDAsMCwwLC43MS0uMjlMMzEsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlQ29weT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjkuNSw3aC0xOUExLjUsMS41LDAsMCwwLDksOC41djI0QTEuNSwxLjUs''@;'; put 'put ''MCwwLDAsMTAuNSwzNGgxOUExLjUsMS41LDAsMCwwLDMxLDMyLjVWOC41QTEuNSwxLjUsMCwwLDAsMjkuNSw3Wk0yOSwzMkgxMVY5SDI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzLjVBMS41LDEuNSww''@;'; put 'put ''LDAsMCwyNC41LDJINS41QTEuNSwxLjUsMCwwLDAsNCwzLjV2MjRBMS41LDEuNSwwLDAsMCw1LjUsMjlINlY0SDI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNywzLjU2QTEuNTYsMS41NiwwLDAsMCwyNS40''@;'; put 'put ''MywySDUuNTdBMS41NiwxLjU2LDAsMCwwLDQsMy41NlYyOC40NEExLjU2LDEuNTYsMCwwLDAsNS41NywzMGguNTJWNC4wN0gyN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjYiIHdpZHRoPSIyMyIgaGVpZ2h0''@;'; put 'put ''PSIyOCIgcng9IjEuNSIgcnk9IjEuNSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPicpLEwuQ2xyU2hhcGVIZWxwPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwx''@;'; put 'put ''LDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjI5LDguOTJhNy4zOCw3LjM4LDAsMCwwLTUuNzIsMi41NywxLDEsMCwwLDAtLjMyLjcxLjkyLjkyLDAsMCwwLC45''@;'; put 'put ''NS45MiwxLjA4LDEuMDgsMCwwLDAsLjcxLS4yOSw1LjcsNS43LDAsMCwxLDQuMzMtMmMyLjM2LDAsMy44MywxLjUyLDMuODMsMy40MXYuMDVjMCwyLjIxLTEuNzYsMy40NC00LjU0LDMuNjVhLjguOCwwLDAsMC0uNzYuOTJzMCwyLjMyLDAsMi43NWExLDEsMCwwLDAsMSwuOWguMTFhMSwxLDAs''@;'; put 'put ''MCwwLC45LTFWMTkuNDVjMy0uNDIsNS40My0yLDUuNDMtNS4yOHYtLjA1QzI0LjE4LDExLjEyLDIxLjg0LDguOTIsMTguMjksOC45MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxNy43OCIgY3k9IjI2LjIi''@;'; put 'put ''IHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuMTgsMTQuMTd2LS4wNWMwLTMtMi4zNC01LjItNS44OC01LjJhNy4zOCw3LjM4LDAsMCwwLTUuNzIsMi41NywxLDEsMCwwLDAtLjMyLjcxLjkyLjky''@;'; put 'put ''LDAsMCwwLC45NS45MiwxLjA4LDEuMDgsMCwwLDAsLjcxLS4yOSw1LjcsNS43LDAsMCwxLDQuMzMtMmMyLjM2LDAsMy44MywxLjUyLDMuODMsMy40MXYuMDVjMCwyLjIxLTEuNzYsMy40NC00LjU0LDMuNjVhLjguOCwwLDAsMC0uNzYuOTJzMCwyLjMyLDAsMi43NWExLDEsMCwwLDAsMSwuOWgu''@;'; put 'put ''MTFhMSwxLDAsMCwwLC45LTFWMTkuNDVDMjEuNzUsMTksMjQuMTgsMTcuNDUsMjQuMTgsMTQuMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE3Ljc4IiBjeT0iMjYuMiIgcj0i''@;'; put 'put ''MS4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTIsMTIuODFhNy40Myw3LjQzLDAsMCwxLTEuOTEuNTgsMTQuMDUsMTQuMDUsMCwxLDEtOC42LTguNiw3LjQ0LDcuNDQsMCww''@;'; put 'put ''LDEsLjU4LTEuOTEsMTYuMDYsMTYuMDYsMCwxLDAsOS45Myw5LjkzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjEyLDEyLjgxYTcuNDksNy40OSwwLDAsMS05LjkzLTkuOTMsMTYuMDYsMTYuMDYsMCwxLDAsOS45Myw5LjkzWm0tMTUuMzQsMTVhMS42NSwxLjY1LDAs''@;'; put 'put ''MSwxLDEuNjUtMS42NUExLjY1LDEuNjUsMCwwLDEsMTcuNzgsMjcuODVabTEuMzctOC4wNnYxLjcyYTEuMzcsMS4zNywwLDAsMS0xLjMsMS4zNmgtLjExYTEuMzQsMS4zNCwwLDAsMS0xLjM5LTEuM2MwLS40NCwwLTIuNzYsMC0yLjc2YTEuMTksMS4xOSwwLDAsMSwxLjEyLTEuMzFjMS41Ny0u''@;'; put 'put ''MTIsNC4xOC0uNyw0LjE4LTMuMjUsMC0xLjgzLTEuNDEtMy4wNy0zLjQzLTMuMDdhNS4zMSw1LjMxLDAsMCwwLTQsMS45MiwxLjM2LDEuMzYsMCwwLDEtMi4zNS0uOSwxLjQzLDEuNDMsMCwwLDEsLjQzLTEsNy43Nyw3Ljc3LDAsMCwxLDYtMi42OWMzLjcsMCw2LjI4LDIuMyw2LjI4LDUuNkMy''@;'; put 'put ''NC41OCwxNy4xNiwyMi42MSwxOS4yLDE5LjE1LDE5Ljc5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabS0uMjIsMjUuODVhMS42NSwxLjY1LDAsMSwxLDEuNjUtMS42NUExLjY1LDEuNjUsMCwwLDEsMTcuNzgsMjcu''@;'; put 'put ''ODVabTEuMzctOC4wNnYxLjcyYTEuMzcsMS4zNywwLDAsMS0xLjMsMS4zNmgtLjExYTEuMzQsMS4zNCwwLDAsMS0xLjM5LTEuM2MwLS40NCwwLTIuNzYsMC0yLjc2YTEuMTksMS4xOSwwLDAsMSwxLjEyLTEuMzFjMS41Ny0uMTIsNC4xOC0uNyw0LjE4LTMuMjUsMC0xLjgzLTEuNDEtMy4wNy0z''@;'; put 'put ''LjQzLTMuMDdhNS4zMSw1LjMxLDAsMCwwLTQsMS45MiwxLjM2LDEuMzYsMCwwLDEtMi4zNS0uOSwxLjQzLDEuNDMsMCwwLDEsLjQzLTEsNy43Nyw3Ljc3LDAsMCwxLDYtMi42OWMzLjcsMCw2LjI4LDIuMyw2LjI4LDUuNkMyNC41OCwxNy4xNiwyMi42MSwxOS4yLDE5LjE1LDE5Ljc5WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLEwuQ2xyU2hhcGVMb2dpbj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjgsNEgxMmEyLDIsMCwwLDAtMiwySDI4VjMwSDEyVjIwLjJIMTBWMzBhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAs''@;'; put 'put ''MCwwLDI4LDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNS4xMiwxOC40NmExLDEsMCwxLDAsMS40MSwxLjQxbDUuNzktNS43OUwxNi41NCw4LjI5YTEsMSwwLDAsMC0xLjQxLDEuNDFMMTguNSwxM0g0YTEs''@;'; put 'put ''MSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEsMUgxOC41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsNEgxMmEyLDIsMCwwLDAtMiwydjdoOC41TDE1LjEyLDkuNzFhMSwxLDAsMCwxLDEuNDEtMS40MWw1Ljc5''@;'; put 'put ''LDUuNzktNS43OSw1Ljc5YTEsMSwwLDAsMS0xLjQxLTEuNDFMMTguNSwxNUgxMFYzMGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMjgsNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MTAsMTNINGExLDEsMCwwLDAtMSwxLDEsMSwwLDAsMCwxLDFoNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZUxvZ291dD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNyw2SDIzdjkuOGgyVjZhMiwyLDAsMCwwLTItMkg3QTIsMiww''@;'; put 'put ''LDAsMCw1LDZWMzBhMiwyLDAsMCwwLDIsMkgyM2EyLDIsMCwwLDAsMi0ySDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjE2LDE3LjI4YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzAuMTMsMjJIMTUuNjNhMSwx''@;'; put 'put ''LDAsMCwwLTEsMSwxLDEsMCwwLDAsMSwxaDE0LjVsLTMuMzgsMy40NmExLDEsMCwxLDAsMS40MSwxLjQxTDM0LDIzLjA3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMyw0SDdBMiwyLDAsMCwwLDUsNlYzMGEy''@;'; put 'put ''LDIsMCwwLDAsMiwySDIzYTIsMiwwLDAsMCwyLTJWMjRIMTUuNjNhMSwxLDAsMCwxLTEtMSwxLDEsMCwwLDEsMS0xSDI1VjZBMiwyLDAsMCwwLDIzLDRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguMTYsMTcuMjhh''@;'; put 'put ''MSwxLDAsMCwwLTEuNDEsMS40MUwzMC4xMywyMkgyNXYyaDUuMTNsLTMuMzgsMy40NmExLDEsMCwxLDAsMS40MSwxLjQxTDM0LDIzLjA3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPicpLEwuQ2xyU2hhcGVQcmludGVyPSgwLEUuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGQ9Ik0yOSw5SDI3VjVIOVY5SDdhNCw0LDAsMCwwLTQsNFYyNEg2LjkyVjIyLjA5SDVWMTNhMiwyLDAsMCwxLDItMkgyOWEyLDIsMCwwLDEsMiwydjlIMjkuMDhWMjRIMzNWMTNBNCw0LDAsMCwwLDI5LDlaTTI1LDlIMTFWN0gyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMThIOGExLDEsMCwwLDAsMCwySDlWMzJIMjdWMjBoMWExLDEsMCwwLDAsMC0yWk0yNSwzMEgxMVYyMEgyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cmVj''@;'; put 'put ''dCB4PSIyNyIgeT0iMTMuMDQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMThIOGExLDEsMCwwLDAsMCwySDlWMzJIMjdWMjBoMWExLDEsMCwwLDAsMC0yWk0yNSwzMEgx''@;'; put 'put ''MVYyMEgyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjMxIDE1LjQgMzEgMjIuMDkgMjkuMDggMjIuMDkgMjkuMDggMjQgMzMgMjQgMzMgMTUuNCAzMSAxNS40IiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUsMTNhMiwyLDAsMCwxLDItMkgxOC42NEEzLjY1LDMuNjUsMCwwLDEsMTksOS44OUwxOS41NCw5SDExVjdoOS43MWwxLjEzLTJIOVY5SDdh''@;'; put 'put ''NCw0LDAsMCwwLTQsNFYyNEg2LjkyVjIyLjA5SDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMz''@;'; put 'put ''LjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0yOCwxOEg4YTEsMSwwLDAsMCwwLDJIOVYzMkgyN1YyMGgxYTEsMSwwLDAsMCwwLTJaTTI1LDMwSDExVjIwSDI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0iMTMuMDQi''@;'; put 'put ''IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLDEyLjg4YTcuNDUsNy40NSwwLDAsMS0yLC41NXY4LjY2SDI5LjA4VjI0SDMzVjEzQzMzLDEzLDMz''@;'; put 'put ''LDEyLjkzLDMzLDEyLjg4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNSwxM2EyLDIsMCwwLDEsMi0ySDI0LjQyYTcuNSw3LjUsMCwwLDEtMS4yNy0ySDExVjdIMjIuNTdhNy41Miw3''@;'; put 'put ''LjUyLDAsMCwxLS4wNy0xLDcuNTQsNy41NCwwLDAsMSwuMDctMUg5VjlIN2E0LDQsMCwwLDAtNCw0VjI0SDYuOTJWMjIuMDlINVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAi''@;'; put 'put ''IGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOSw5SDI3VjVIOVY5SDdhNCw0LDAsMCwwLTQsNFYyNEg5djhIMjdWMjRoNlYxM0E0LDQsMCww''@;'; put 'put ''LDAsMjksOVpNMjUsMjR2NkgxMVYxOUgyNVpNMjUsOUgxMVY3SDI1Wm00LDZIMjdWMTNoMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yMywxNS40QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDE5LjU0LDlIMTFW''@;'; put 'put ''N2g5LjcxbDEuMTMtMkg5VjlIN2E0LDQsMCwwLDAtNCw0VjI0SDl2OEgyN1YyNGg2VjE1LjRaTTI1LDI0djZIMTFWMTlIMjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4x''@;'; put 'put ''NCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMTIuODhhNy4zLDcuMywwLDAsMS00LC41NVYxNUgyN1YxM2guMzJhNy41Miw3LjUyLDAsMCwxLTQuMTgtNEgxMVY3SDIyLjU3YTcuNTIsNy41MiwwLDAsMS0uMDctMSw3LjU0LDcuNTQsMCwwLDEsLjA3LTFIOVY5SDdhNCw0''@;'; put 'put ''LDAsMCwwLTQsNFYyNEg5djhIMjdWMjRoNlYxM0MzMywxMywzMywxMi45MywzMywxMi44OFpNMjUsMjR2NkgxMVYxOUgyNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYi''@;'; put 'put ''IHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+JyksTC5DbHJTaGFwZVdvcmxkPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi41NCwxOGExOS4zOCwxOS4zOCwwLDAsMC0uNDMtNGgzLjZhMTIuMywx''@;'; put 'put ''Mi4zLDAsMCwwLS42Ny0xLjZIMjUuNjlBMTkuNzIsMTkuNzIsMCwwLDAsMjIuOCw2LjUzYTEyLjMsMTIuMywwLDAsMC0yLjU1LS43NiwxNy44MywxNy44MywwLDAsMSwzLjg5LDYuNTlIMTguNzVWNS42Yy0uMjUsMC0uNTEsMC0uNzcsMHMtLjQ5LDAtLjczLDB2Ni43N0gxMS44NmExNy44Mywx''@;'; put 'put ''Ny44MywwLDAsMSwzLjktNi42LDEyLjI4LDEyLjI4LDAsMCwwLTIuNTQuNzUsMTkuNzIsMTkuNzIsMCwwLDAtMi45MSw1Ljg1SDYuOTRBMTIuMywxMi4zLDAsMCwwLDYuMjYsMTRIOS44OWExOS4zOCwxOS4zOCwwLDAsMC0uNDMsNCwxOS42NywxOS42NywwLDAsMCwuNSw0LjM3SDYuNDJBMTIu''@;'; put 'put ''MzQsMTIuMzQsMCwwLDAsNy4xNiwyNGgzLjIzYTE5LjMyLDE5LjMyLDAsMCwwLDIuNjksNS4zNiwxMi4yOCwxMi4yOCwwLDAsMCwyLjYxLjc5QTE3LjkxLDE3LjkxLDAsMCwxLDEyLDI0aDUuMjZ2Ni4zNGMuMjQsMCwuNDksMCwuNzMsMHMuNTEsMCwuNzcsMFYyNEgyNGExNy45LDE3LjksMCww''@;'; put 'put ''LDEtMy43LDYuMTUsMTIuMjgsMTIuMjgsMCwwLDAsMi42Mi0uODFBMTkuMzIsMTkuMzIsMCwwLDAsMjUuNjEsMjRoMy4yYTEyLjM0LDEyLjM0LDAsMCwwLC43NC0xLjZIMjZBMTkuNjcsMTkuNjcsMCwwLDAsMjYuNTQsMThabS05LjI5LDQuMzdIMTEuNTFhMTcuNjksMTcuNjksMCwwLDEtLjA5''@;'; put 'put ''LTguNGg1LjgzWm03LjI0LDBIMTguNzVWMTRoNS44M0ExOC4yMSwxOC4yMSwwLDAsMSwyNSwxOCwxOC4xMiwxOC4xMiwwLDAsMSwyNC40OSwyMi4zN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwx''@;'; put 'put ''NiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xMiwxMi44MWE3LjQ0LDcuNDQs''@;'; put 'put ''MCwwLDEtMS45MS41OCwxNC4wNSwxNC4wNSwwLDEsMS04LjYtOC42LDcuNDMsNy40MywwLDAsMSwuNTgtMS45MSwxNi4wNiwxNi4wNiwwLDEsMCw5LjkzLDkuOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0yMC4yNSw1Ljc3YTE3LjgzLDE3LjgzLDAsMCwxLDMuODksNi41OUgxOC43NVY1LjZjLS4yNSwwLS41MSwwLS43Nywwcy0uNDksMC0uNzMsMHY2Ljc3SDExLjg2YTE3LjgzLDE3LjgzLDAsMCwxLDMuOS02LjYsMTIuMjgsMTIuMjgsMCwwLDAtMi41NC43NSwxOS43Miwx''@;'; put 'put ''OS43MiwwLDAsMC0yLjkxLDUuODVINi45NEExMi4zLDEyLjMsMCwwLDAsNi4yNiwxNEg5Ljg5YTE5LjM4LDE5LjM4LDAsMCwwLS40Myw0LDE5LjY3LDE5LjY3LDAsMCwwLC41LDQuMzdINi40MkExMi4zNCwxMi4zNCwwLDAsMCw3LjE2LDI0aDMuMjNhMTkuMzIsMTkuMzIsMCwwLDAsMi42OSw1''@;'; put 'put ''LjM2LDEyLjI4LDEyLjI4LDAsMCwwLDIuNjEuNzlBMTcuOTEsMTcuOTEsMCwwLDEsMTIsMjRoNS4yNnY2LjM0Yy4yNCwwLC40OSwwLC43Mywwcy41MSwwLC43NywwVjI0SDI0YTE3LjksMTcuOSwwLDAsMS0zLjcsNi4xNSwxMi4yOCwxMi4yOCwwLDAsMCwyLjYyLS44MUExOS4zMiwxOS4zMiww''@;'; put 'put ''LDAsMCwyNS42MSwyNGgzLjJhMTIuMzQsMTIuMzQsMCwwLDAsLjc0LTEuNkgyNmExOS42NywxOS42NywwLDAsMCwuNS00LjM3LDE5LjM4LDE5LjM4LDAsMCwwLS40My00aDMuNmMtLjA2LS4xNy0uMTItLjMzLS4xOS0uNDlhNy40NSw3LjQ1LDAsMCwxLTMuNDctMS4xMWgtLjM2YzAtLjExLS4w''@;'; put 'put ''OC0uMjEtLjExLS4zMmE3LjQ4LDcuNDgsMCwwLDEtMy4wNi01LjYyQTEyLjQxLDEyLjQxLDAsMCwwLDIwLjI1LDUuNzdabS0zLDE2LjU5SDExLjUxYTE3LjY5LDE3LjY5LDAsMCwxLS4wOS04LjRoNS44M1pNMjUsMThhMTguMTIsMTguMTIsMCwwLDEtLjU1LDQuMzdIMTguNzVWMTRoNS44M0Ex''@;'; put 'put ''OC4yMSwxOC4yMSwwLDAsMSwyNSwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4wNSwxOGEyMC40NiwyMC40NiwwLDAsMCwuNjIsNC45M2g2LjQ4VjEzLjQ1SDEwLjU4QTIwLjU1LDIwLjU1LDAsMCwwLDEwLjA1LDE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4Ljg1LDEzLjQ1djkuNDhoNi40OEEyMC40NiwyMC40NiwwLDAsMCwyNiwxOGEyMC41NSwyMC41NSwwLDAsMC0uNTItNC41NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTMwLjIyLDI0LjcxSDI2LjZhMjEuOCwyMS44LDAsMCwxLTMsNiwxMy44NiwxMy44NiwwLDAsMS0zLC45MiwyMC4yMSwyMC4yMSwwLDAsMCw0LjE4LTYuOTRIMTguODZ2Ny4xNWMtLjI5LDAtLjU3''@;'; put 'put ''LDAtLjg2LDBzLS41NSwwLS44MywwVjI0LjcxSDExLjIyYTIwLjIxLDIwLjIxLDAsMCwwLDQuMTgsNi45NSwxMy44NiwxMy44NiwwLDAsMS0yLjk0LS45LDIxLjgsMjEuOCwwLDAsMS0zLTYuMDVINS43OGExMy45NCwxMy45NCwwLDAsMS0uODMtMS44MWg0QTIyLjIsMjIuMiwwLDAsMSw4LjM3''@;'; put 'put ''LDE4YTIxLjg4LDIxLjg4LDAsMCwxLC40OC00LjU1SDQuNzZhMTMuODgsMTMuODgsMCwwLDEsLjc2LTEuODFIOS4zM0EyMi4yNiwyMi4yNiwwLDAsMSwxMi42MSw1YTEzLjg2LDEzLjg2LDAsMCwxLDIuODctLjg0LDIwLjEzLDIwLjEzLDAsMCwwLTQuNCw3LjQ1aDYuMDlWNGMuMjgsMCwuNTUs''@;'; put 'put ''MCwuODMsMHMuNTgsMCwuODYsMHY3LjY0aDYuMDlhMjAuMTMsMjAuMTMsMCwwLDAtNC4zOS03LjQ0QTEzLjg5LDEzLjg5LDAsMCwxLDIzLjQzLDVhMjIuMjYsMjIuMjYsMCwwLDEsMy4yNyw2LjU5aDMuNzdhMTMuODksMTMuODksMCwwLDEsLjc2LDEuODFIMjcuMTdBMjEuODgsMjEuODgsMCww''@;'; put 'put ''LDEsMjcuNjYsMThhMjIuMiwyMi4yLDAsMCwxLS41Nyw0LjkzaDRBMTMuOTQsMTMuOTQsMCwwLDEsMzAuMjIsMjQuNzFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMDUsMThhMjAuNDYsMjAuNDYsMCwwLDAsLjYy''@;'; put 'put ''LDQuOTNoNi40OFYxMy40NUgxMC41OEEyMC41NSwyMC41NSwwLDAsMCwxMC4wNSwxOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguODUsMjIuOTRoNi40OEEyMC40NiwyMC40NiwwLDAs''@;'; put 'put ''MCwyNiwxOGEyMC41NSwyMC41NSwwLDAsMC0uNTItNC41NUgxOC44NVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTIsMTIuODFhNy40NCw3LjQ0LDAsMCwxLTEuOS41OHYwSDMxYTYu''@;'; put 'put ''NzcsNi43NywwLDAsMS0yLjA3LDBoLTEuOEEyMS44OCwyMS44OCwwLDAsMSwyNy42NiwxOGEyMi4yLDIyLjIsMCwwLDEtLjU3LDQuOTNoNGExMy45NCwxMy45NCwwLDAsMS0uODMsMS44MUgyNi42YTIxLjgsMjEuOCwwLDAsMS0zLDYsMTMuODYsMTMuODYsMCwwLDEtMywuOTIsMjAuMjEsMjAu''@;'; put 'put ''MjEsMCwwLDAsNC4xOC02Ljk0SDE4Ljg2djcuMTVjLS4yOSwwLS41NywwLS44Niwwcy0uNTUsMC0uODMsMFYyNC43MUgxMS4yMmEyMC4yMSwyMC4yMSwwLDAsMCw0LjE4LDYuOTUsMTMuODYsMTMuODYsMCwwLDEtMi45NC0uOSwyMS44LDIxLjgsMCwwLDEtMy02LjA1SDUuNzhhMTMuOTQsMTMu''@;'; put 'put ''OTQsMCwwLDEtLjgzLTEuODFoNEEyMi4yLDIyLjIsMCwwLDEsOC4zNywxOGEyMS44OCwyMS44OCwwLDAsMSwuNDgtNC41NUg0Ljc2YTEzLjg4LDEzLjg4LDAsMCwxLC43Ni0xLjgxSDkuMzNBMjIuMjYsMjIuMjYsMCwwLDEsMTIuNjEsNWExMy44NiwxMy44NiwwLDAsMSwyLjg3LS44NCwyMC4x''@;'; put 'put ''MywyMC4xMywwLDAsMC00LjQsNy40NWg2LjA5VjRjLjI4LDAsLjU1LDAsLjgzLDBzLjU4LDAsLjg2LDB2Ny42NGg2LjA5bDAtLjEzYTcuNDcsNy40NywwLDAsMS0yLjM2LTQuNzYsMjAuMzcsMjAuMzcsMCwwLDAtMi0yLjU1LDE0LjIzLDE0LjIzLDAsMCwxLDIuMDYuNTYsNy40NCw3LjQ0LDAs''@;'; put 'put ''MCwxLC41Ny0xLjg2LDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+JyksTC5DbHJTaGFwZVNsaWRlcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTIsMTIuMzdBNCw0LDAsMCwwLDksOC40OFY1QTEsMSwwLDEsMCw3LDVWOC40OGE0LDQsMCwwLDAsMCw3Ljc4VjMxYTEsMSww''@;'; put 'put ''LDEsMCwyLDBWMTYuMjZBNCw0LDAsMCwwLDEyLDEyLjM3Wm0tNCwyYTIsMiwwLDEsMSwyLTJBMiwyLDAsMCwxLDgsMTQuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTUuODNhNCw0LDAsMCwwLTMtMy44''@;'; put 'put ''OVY1YTEsMSwwLDEsMC0yLDB2Ni45NGE0LDQsMCwwLDAsMCw3Ljc4VjMxYTEsMSwwLDEsMCwyLDBWMTkuNzJBNCw0LDAsMCwwLDMyLDE1LjgzWm0tNCwyYTIsMiwwLDEsMSwyLTJBMiwyLDAsMCwxLDI4LDE3Ljg3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiwyNC41YTQsNCwwLDAsMC0zLTMuODlWNWExLDEsMCwxLDAtMiwwVjIwLjYxYTQsNCwwLDAsMCwwLDcuNzhWMzFhMSwxLDAsMSwwLDIsMFYyOC4zOUE0LDQsMCwwLDAsMjIsMjQuNVptLTQsMmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwxOCwy''@;'; put 'put ''Ni41M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOSw5LjI5VjVBMSwxLDAsMSwwLDcsNVY5LjNhMy4yMiwzLjIyLDAsMCwwLDAsNi4xMVYzMWExLDEsMCwxLDAsMiwwVjE1LjQzQTMuMjIsMy4yMiwwLDAsMCw5''@;'; put 'put ''LDkuMjlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksMjEuNDVWNWExLDEsMCwxLDAtMiwwVjIxLjQ3YTMuMjIsMy4yMiwwLDAsMCwwLDYuMTFWMzFhMSwxLDAsMSwwLDIsMFYyNy42YTMuMjIsMy4yMiwwLDAsMCww''@;'; put 'put ''LTYuMTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjksMTIuNzVWNWExLDEsMCwxLDAtMiwwdjcuNzZhMy4yMiwzLjIyLDAsMCwwLDAsNi4xMVYzMWExLDEsMCwxLDAsMiwwVjE4Ljg5YTMuMjIsMy4yMiwwLDAsMCww''@;'; put 'put ''LTYuMTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+JyksTC5DbHJTaGFwZUNsaXBib2FyZD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjkuMjksNUgyN1Y3aDJWMzJIN1Y3SDlWNUg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjlWMzIuMzFBMS43LDEuNyww''@;'; put 'put ''LDAsMCw2LjcxLDM0SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMzFWNi42OUExLjcsMS43LDAsMCwwLDI5LjI5LDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiw3LjMzQTIuMzQsMi4zNCwwLDAsMCwy''@;'; put 'put ''My42Nyw1SDIxLjg3YTQsNCwwLDAsMC03Ljc1LDBIMTIuMzNBMi4zNCwyLjM0LDAsMCwwLDEwLDcuMzNWMTFIMjZaTTI0LDlIMTJWNy4zM0EuMzMuMzMsMCwwLDEsMTIuMzMsN0gxNlY2YTIsMiwwLDAsMSw0LDBWN2gzLjY3YS4zMy4zMywwLDAsMSwuMzMuMzNaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxNCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjE4IiB3''@;'; put 'put ''aWR0aD0iMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMjIiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIyNiIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjE0IiB3aWR0aD0iMTQiIGhlaWdodD0iMiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjE4IiB3aWR0aD0iMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFk''@;'; put 'put ''Z2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjIyIiB3aWR0aD0iMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjI2IiB3aWR0aD0i''@;'; put 'put ''MTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjEzLDlIMTJWNy4zM0EuMzMuMzMsMCwwLDEsMTIuMzMsN0gxNlY2YTIsMiwwLDAsMSw0LDBWN2gyLjU3YTcu''@;'; put 'put ''NTIsNy41MiwwLDAsMS0uMDctMSw3LjUyLDcuNTIsMCwwLDEsLjA3LTFoLS43YTQsNCwwLDAsMC03Ljc1LDBIMTIuMzNBMi4zNCwyLjM0LDAsMCwwLDEwLDcuMzNWMTFIMjQuNDJBNy41LDcuNSwwLDAsMSwyMy4xMyw5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVhNy41Miw3LjUyLDAsMCwxLTEtLjA3VjMySDdWN0g5VjVIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY5VjMyLjMxQTEuNywxLjcsMCwwLDAsNi43MSwzNEgyOS4yOUExLjcsMS43LDAsMCwwLDMxLDMy''@;'; put 'put ''LjMxVjEzLjQzQTcuNTIsNy41MiwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjI5LDVIMjIuMTdhNC40NSw0LjQ1LDAsMCwwLTQuMTEtM0E0LjQ2LDQuNDYsMCwwLDAsMTQsNUg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjlWMzIuMzFBMS43''@;'; put 'put ''LDEuNywwLDAsMCw2LjcxLDM0SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMzFWNi42OUExLjcsMS43LDAsMCwwLDI5LjI5LDVabS0xOCwzYTEsMSwwLDAsMSwxLTFoMy40NFY2LjMxYTIuMzEsMi4zMSwwLDEsMSw0LjYzLDBWN2gzLjQ0YTEsMSwwLDAsMSwxLDF2MkgxMS4zMVpNMjUsMjhI''@;'; put 'put ''MTFWMjZIMjVabTAtNEgxMVYyMkgyNVptMC00SDExVjE4SDI1Wm0wLTRIMTFWMTRIMjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVBNy40OSw3LjQ5LDAsMCwxLDIzLjY2LDEwSDExLjMxVjhhMSwxLDAs''@;'; put 'put ''MCwxLDEtMWgzLjQ0VjYuMzFhMi4zMSwyLjMxLDAsMSwxLDQuNjMsMFY3aDIuMTlhNy41NCw3LjU0LDAsMCwxLS4wNy0xLDcuNTIsNy41MiwwLDAsMSwuMDctMWgtLjRhNC40NSw0LjQ1LDAsMCwwLTQuMTEtM0E0LjQ2LDQuNDYsMCwwLDAsMTQsNUg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjlW''@;'; put 'put ''MzIuMzFBMS43LDEuNywwLDAsMCw2LjcxLDM0SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMzFWMTMuNDNBNy41Miw3LjUyLDAsMCwxLDMwLDEzLjVaTTI1LDI4SDExVjI2SDI1Wm0wLTRIMTFWMjJIMjVabTAtNEgxMVYxOEgyNVptMC00SDExVjE0SDI1WiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxMLkNsclNoYXBl''@;'; put 'put ''RmlyZXdhbGw9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk00LDhIMzJ2NS4wOEgyMy44di00SDIydjRIMTR2LTRIMTJ2NEg0Wm0wLDdIMzJ2Ni4wOEgyOC45''@;'; put 'put ''MlYxNi4yN0gyN3Y0LjgxSDE4LjkyVjE2LjI3SDE3djQuODFIOC45VjE2LjI3SDd2NC44MUg0Wk0yMy44LDI4VjI0LjI3SDIyLjJWMjhIMTRWMjQuMjdoLTEuNlYyOEg0VjIzSDMydjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMydjUuNjhIMjguOTJWMTYuMjdIMjd2NC44MUgxOC45MlYxNi4yN0gxN3Y0LjgxSDguOVYxNi4yN0g3djQuODFINFYxNUgyMC41OGEzLjU4LDMuNTgsMCwwLDEtMS43Ni0xLjkySDE0di00SDEydjRINFY4SDIwLjE0bDEuMTUtMkg0QTIsMiwwLDAsMCwy''@;'; put 'put ''LDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE1LjM4Wk0yMy44LDI4VjI0LjI3SDIyLjJWMjhIMTRWMjQuMjdoLTEuNlYyOEg0VjIzSDMydjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDcsNy40NywwLDAsMS0yLjQ1LS40MkgyMy44VjEwLjIyYTcuNSw3LjUsMCwwLDEtLjYzLTEuMTRIMjJ2NEgxNHYtNEgxMnY0SDRWOEgyMi43OGE3LjQ5''@;'; put 'put ''LDcuNDksMCwwLDEtLjI4LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzAsMTMuNVpNNCwxNUgzMnY2LjA4SDI4LjkyVjE2LjI3SDI3djQuODFIMTguOTJWMTYuMjdIMTd2NC44MUg4LjlWMTYuMjdIN3Y0''@;'; put 'put ''LjgxSDRaTTIzLjgsMjhWMjQuMjdIMjIuMlYyOEgxNFYyNC4yN2gtMS42VjI4SDRWMjNIMzJ2NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIs''@;'; put 'put ''NlpNMTQsMjhIMTJWMjRoMlptMTAsMEgyMlYyNGgyWm04LTZINFYyMEg3VjE2SDl2NGg4VjE2aDJ2NGg4VjE2aDJ2NGgzWm0wLThINFYxMmg4VjhoMnY0aDhWOGgydjRoOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MzMuNjgsMTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTkuMzUsMTRINFYxMmg4VjhoMnY0aDQuNTdBMy42NywzLjY3LDAsMCwxLDE5LDkuODlMMjEuMjksNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE1LjM4Wk0xNCwyOEgxMlYyNGgyWm0x''@;'; put 'put ''MCwwSDIyVjI0aDJabTgtNkg0VjIwSDdWMTZIOXY0aDhWMTZoMnY0aDhWMTZoMnY0aDNaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4''@;'; put 'put ''LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMjQsMTAuNDlWMTJoMS41MUE3LjUzLDcuNTMsMCwwLDEsMjQsMTAuNDlaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMlYxNEg0VjEyaDhWOGgy''@;'; put 'put ''djRoOFY4aC43OGE3LjQ5LDcuNDksMCwwLDEtLjI4LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaTTE0LDI4SDEyVjI0aDJabTEwLDBIMjJWMjRoMlptOC02SDRWMjBIN1YxNkg5djRoOFYx''@;'; put 'put ''NmgydjRoOFYxNmgydjRoM1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0z''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksTC5DbHJTaGFwZUxpc3Q9KDAsRS5jbHJJY29uU1ZHKSgnPHJlY3QgeD0iMTUiIHk9IjgiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3Qg''@;'; put 'put ''eD0iMTUiIHk9IjEyIiB3aWR0aD0iOSIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIxNiIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMjAiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjI0IiB3aWR0aD0iOSIgaGVpZ2h0''@;'; put 'put ''PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxy''@;'; put 'put ''ZWN0IHg9IjExIiB5PSIxMiIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC04IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjIwIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIyNCIgd2lkdGg9IjIiIGhl''@;'; put 'put ''aWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWm0wLDMwSDhWNEgyOFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIxMiIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjE2IiB3aWR0aD0iOSIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMjAiIHdpZHRoPSI5IiBoZWlnaHQ9''@;'; put 'put ''IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIyNCIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxMiIg''@;'; put 'put ''d2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjE2IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMjAiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxy''@;'; put 'put ''ZWN0IHg9IjExIiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LDh2Mmg4LjY2YTcuNDUsNy40NSwwLDAsMS0uODktMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTMuMjJWMzJIOFY0SDIyLjc4YTcuNDUsNy40NSwwLDAsMSwuODgtMkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIs''@;'; put 'put ''MCwwLDAsMi0yVjEzLjVBNy40OSw3LjQ5LDAsMCwxLDI4LDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEyLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjRBMiwyLDAsMCwwLDI4LDJaTTEzLDI2SDExVjI0''@;'; put 'put ''aDJabTAtNEgxMVYyMGgyWm0wLTRIMTFWMTZoMlptMC00SDExVjEyaDJabTAtNEgxMVY4aDJaTTI1LDI2SDE1VjI0SDI1Wm0wLTRIMTVWMjBIMjVabTAtNEgxNVYxNkgyNVptMC00SDE1VjEySDI1Wm0wLTRIMTVWOEgyNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuNjYsMTBIMTVWOGg3Ljc4YTcuNDIsNy40MiwwLDAsMSwuODktNkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjEzLjVBNy40OSw3LjQ5LDAsMCwxLDIzLjY2LDEwWk0xMywyNkgxMVYyNGgyWm0w''@;'; put 'put ''LTRIMTFWMjBoMlptMC00SDExVjE2aDJabTAtNEgxMVYxMmgyWm0wLTRIMTFWOGgyWk0yNSwyNkgxNVYyNEgyNVptMC00SDE1VjIwSDI1Wm0wLTRIMTVWMTZIMjVabTAtNEgxNVYxMkgyNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksTC5DbHJTaGFwZVJlZG89KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LDQu''@;'; put 'put ''MjJhMSwxLDAsMCwwLTEuNDEsMS40Mmw1LjU2LDUuNDloLTEzQTExLDExLDAsMCwwLDEwLjA3LDMyLDEsMSwwLDAsMCwxMSwzMC4xOGE5LDksMCwwLDEtNS04LDkuMDgsOS4wOCwwLDAsMSw5LjEzLTloMTNsLTUuNTQsNS40OEExLDEsMCwwLDAsMjQsMjBsOC03LjkxWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZVVuZG89KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIwLjg3LDExLjE0aC0xM2w1LjU2LTUuNDlBMSwxLDAsMCwwLDEyLDQuMjJMNCwxMi4xMywxMiwyMGExLDEsMCwwLDAsMS40MS0xLjQyTDcuODYsMTMu''@;'; put 'put ''MTRoMTNhOS4wOCw5LjA4LDAsMCwxLDkuMTMsOSw5LDksMCwwLDEtNSw4QTEsMSwwLDAsMCwyNS45MywzMmExMSwxMSwwLDAsMC01LjA2LTIwLjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZVNjcm9sbD0oMCxFLmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNMzQsMTEuMTJWNi41OGE0LjUsNC41LDAsMCwwLTQuNS00LjVoLTE2QTQuNSw0LjUsMCwwLDAsOSw2LjU4djIzYTIuNSwyLjUsMCwxLDEtNSwwVjI2SDcuMTlWMjRIMnY1LjVBNC41LDQuNSwwLDAsMCw2LjUsMzRIMjUuNThhNC41LDQuNSwwLDAsMCw0LjUtNC41VjEz''@;'; put 'put ''LjEzaC0yVjI5LjU0YTIuNSwyLjUsMCwwLDEtMi41LDIuNUgxMC4yNGE0LjQ3LDQuNDcsMCwwLDAsLjc2LTIuNXYtMjNhMi41LDIuNSwwLDAsMSw1LDB2NC41NFptLTQuNS03QTIuNSwyLjUsMCwwLDEsMzIsNi41OFY5LjEySDE4VjYuNThhNC40OCw0LjQ4LDAsMCwwLS43Ni0yLjVaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4wOCwxNS40VjI5LjU0YTIuNSwyLjUsMCwwLDEtMi41LDIuNUgxMC4yNGE0LjQ3LDQuNDcsMCwwLDAsLjc2LTIuNXYtMjNhMi41LDIuNSwwLDAsMSw1LDB2NC41NGgyLjYx''@;'; put 'put ''QTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5bC40NC0uNzZIMThWNi41OGE0LjQ4LDQuNDgsMCwwLDAtLjc2LTIuNUgyMi40bDEuMTUtMkgxMy41QTQuNSw0LjUsMCwwLDAsOSw2LjU4djIzYTIuNSwyLjUsMCwxLDEtNSwwVjI2SDcuMTlWMjRIMnY1LjVBNC41LDQuNSwwLDAsMCw2LjUsMzRIMjUu''@;'; put 'put ''NThhNC41LDQuNSwwLDAsMCw0LjUtNC41VjE1LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gz''@;'; put 'put ''My42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0zMCwxMy41YTcuNDksNy40OSwwLDAsMS0xLjkyLS4yNnYxNi4zYTIuNSwyLjUsMCwwLDEtMi41LDIuNUgxMC4yNGE0LjQ3LDQuNDcsMCwwLDAsLjc2LTIuNXYtMjNhMi41LDIuNSwwLDAsMSw1LDB2NC41NGg4LjU0YTcuNSw3LjUsMCwwLDEtMS4zNS0ySDE4VjYuNThhNC40OCw0LjQ4''@;'; put 'put ''LDAsMCwwLS43Ni0yLjVoNS41MmE3LjQ0LDcuNDQsMCwwLDEsLjg2LTJIMTMuNUE0LjUsNC41LDAsMCwwLDksNi41OHYyM2EyLjUsMi41LDAsMSwxLTUsMFYyNkg3LjE5VjI0SDJ2NS41QTQuNSw0LjUsMCwwLDAsNi41LDM0SDI1LjU4YTQuNSw0LjUsMCwwLDAsNC41LTQuNXYtMTZaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''YmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQsMTEuMTJWNi41OGE0LjUsNC41LDAsMCwwLTQuNS00LjVoLTE2QTQuNSw0LjUsMCwwLDAsOSw2LjU4VjI0SDJ2NS41QTQuNSw0LjUsMCwwLDAsNi41LDM0SDI1LjU4YTQuNSw0LjUsMCwwLDAsNC41LTQuNVYxMy4xM2gtMlYyOS41''@;'; put 'put ''NGEyLjUsMi41LDAsMCwxLTIuNSwyLjVIMTAuMjRhNC40Nyw0LjQ3LDAsMCwwLC43Ni0yLjV2LTIzYTIuNSwyLjUsMCwwLDEsNSwwdjQuNTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjA4LDE1LjRWMjkuNTRh''@;'; put 'put ''Mi41LDIuNSwwLDAsMS0yLjUsMi41SDEwLjI0YTQuNDcsNC40NywwLDAsMCwuNzYtMi41di0yM2EyLjUsMi41LDAsMCwxLDUsMHY0LjU0aDIuNjFBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlsNC41MS03LjhIMTMuNUE0LjUsNC41LDAsMCwwLDksNi41OFYyNEgydjUuNUE0LjUsNC41LDAsMCww''@;'; put 'put ''LDYuNSwzNEgyNS41OGE0LjUsNC41LDAsMCwwLDQuNS00LjVWMTUuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIu''@;'; put 'put ''MjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0zMCwxMy41YTcuNDksNy40OSwwLDAsMS0xLjkyLS4yNnYxNi4zYTIuNSwyLjUsMCwwLDEtMi41LDIuNUgxMC4yNGE0LjQ3LDQuNDcsMCwwLDAsLjc2LTIuNXYtMjNhMi41LDIuNSwwLDAsMSw1LDB2NC41NGg4LjU0YTcuNDYsNy40NiwwLDAsMS0uOTItOUgxMy41QTQuNSw0LjUs''@;'; put 'put ''MCwwLDAsOSw2LjU4VjI0SDJ2NS41QTQuNSw0LjUsMCwwLDAsNi41LDM0SDI1LjU4YTQuNSw0LjUsMCwwLDAsNC41LTQuNXYtMTZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBj''@;'; put 'put ''eT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLEwuQ2xyU2hhcGVGaWxlU2V0dGluZ3M9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjgzLDIzLjQzYTEuMTYsMS4xNiwwLDAsMC0u''@;'; put 'put ''NzEtMS4xMmwtMS42OC0uNWMtLjA5LS4yNC0uMTgtLjQ4LS4yOS0uNzFsLjc4LTEuNDRhMS4xNiwxLjE2LDAsMCwwLS4yMS0xLjM3bC0xLjQyLTEuNDFhMS4xNiwxLjE2LDAsMCwwLTEuMzctLjJsLTEuNDUuNzZhNy44NCw3Ljg0LDAsMCwwLS43Ni0uMzJsLS40OC0xLjU4YTEuMTUsMS4xNSww''@;'; put 'put ''LDAsMC0xLjExLS43N2gtMmExLjE2LDEuMTYsMCwwLDAtMS4xMS44MmwtLjQ3LDEuNTRhNy43Niw3Ljc2LDAsMCwwLS43Ny4zMmwtMS40Mi0uNzZhMS4xNiwxLjE2LDAsMCwwLTEuMzYuMmwtMS40NSwxLjRhMS4xNiwxLjE2LDAsMCwwLS4yMSwxLjM4TDE3LjA4LDIxYTcuNjQsNy42NCwwLDAs''@;'; put 'put ''MC0uMzEuNzRsLTEuNTguNDdhMS4xNSwxLjE1LDAsMCwwLS44MywxLjExdjJhMS4xNSwxLjE1LDAsMCwwLC44MywxLjFsMS41OS40N2E3LjUzLDcuNTMsMCwwLDAsLjMxLjcybC0uNzgsMS40NmExLjE2LDEuMTYsMCwwLDAsLjIxLDEuMzdsMS40MiwxLjRhMS4xNiwxLjE2LDAsMCwwLDEuMzcu''@;'; put 'put ''MjFsMS40OC0uNzhjLjIzLjExLjQ3LjIuNzIuMjlMMjIsMzMuMThhMS4xNiwxLjE2LDAsMCwwLDEuMTEuODFoMmExLjE2LDEuMTYsMCwwLDAsMS4xMS0uODJsLjQ3LTEuNThjLjI0LS4wOC40Ny0uMTguNy0uMjlsMS41Ljc5YTEuMTYsMS4xNiwwLDAsMCwxLjM2LS4ybDEuNDItMS40YTEuMTYs''@;'; put 'put ''MS4xNiwwLDAsMCwuMjEtMS4zOGwtLjc5LTEuNDVxLjE2LS4zNC4yOS0uNjlMMzMsMjYuNWExLjE1LDEuMTUsMCwwLDAsLjgzLTEuMTFabS0xLjYsMS42My0yLjExLjYyLS4xMi40MmE2LDYsMCwwLDEtLjUsMS4xOWwtLjIxLjM4LDEsMS45MS0xLDEtMi0xLS4zNy4yYTYuMjEsNi4yMSwwLDAs''@;'; put 'put ''MS0xLjIuNDlsLS40Mi4xMi0uNjMsMi4wOUgyMy40MmwtLjYzLTIuMDgtLjQyLS4xMmE2LjIzLDYuMjMsMCwwLDEtMS4yMS0uNDlsLS4zNy0uMi0xLjk0LDEtMS0xLDEtMS45NC0uMjItLjM4QTYsNiwwLDAsMSwxOC4xNywyNkwxOCwyNS42MywxNiwyNVYyMy42OUwxOCwyMy4wOGwuMTMtLjQx''@;'; put 'put ''YTUuOTQsNS45NCwwLDAsMSwuNTMtMS4yM0wxOC45LDIxbC0xLTEuODUsMS0uOTQsMS44OSwxLC4zOC0uMjFhNi4yMyw2LjIzLDAsMCwxLDEuMjYtLjUybC40MS0uMTIuNjMtMmgxLjM4bC42MiwyLC40MS4xMkE2LjIxLDYuMjEsMCwwLDEsMjcuMSwxOWwuMzguMjEsMS45Mi0xLDEsMS0xLDEu''@;'; put 'put ''ODkuMjEuMzhhNi4wOCw2LjA4LDAsMCwxLC41LDEuMjFsLjEyLjQyLDIuMDYuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC4xMiwyMC4zNWE0LDQsMCwxLDAsNC4wOCw0QTQuMDYsNC4wNiwwLDAsMCwy''@;'; put 'put ''NC4xMiwyMC4zNVptMCw2LjQ2YTIuNDMsMi40MywwLDEsMSwyLjQ4LTIuNDNBMi40NiwyLjQ2LDAsMCwxLDI0LjEyLDI2LjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTQuNDksMzFINlY1SDI2djcuODlh''@;'; put 'put ''My4yLDMuMiwwLDAsMSwyLDEuNzJWNWEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCwwLDQsNVYzMWEyLDIsMCwwLDAsMiwySDE2LjIzbC0xLjEtMS4wOEEzLjExLDMuMTEsMCwwLDEsMTQuNDksMzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0yNC4xMiwyMC4zNWE0LDQsMCwxLDAsNC4wOCw0QTQuMDYsNC4wNiwwLDAsMCwyNC4xMiwyMC4zNVptMCw2LjQ2YTIuNDMsMi40MywwLDEsMSwyLjQ4LTIuNDNBMi40NiwyLjQ2LDAsMCwxLDI0LjEyLDI2LjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuODMsMjMuNDNhMS4xNiwxLjE2LDAsMCwwLS43MS0xLjEybC0xLjY4LS41Yy0uMDktLjI0LS4xOC0uNDgtLjI5LS43MWwuNzgtMS40NGExLjE2LDEuMTYsMCwwLDAtLjIxLTEuMzds''@;'; put 'put ''LTEuNDItMS40MWExLjE2LDEuMTYsMCwwLDAtMS4zNy0uMmwtMS40NS43NmE3Ljg0LDcuODQsMCwwLDAtLjc2LS4zMmwtLjQ4LTEuNThhMS4xNSwxLjE1LDAsMCwwLTEuMTEtLjc3aC0yYTEuMTYsMS4xNiwwLDAsMC0xLjExLjgybC0uNDcsMS41NGE3Ljc2LDcuNzYsMCwwLDAtLjc3LjMybC0x''@;'; put 'put ''LjQyLS43NmExLjE2LDEuMTYsMCwwLDAtMS4zNi4ybC0xLjQ1LDEuNGExLjE2LDEuMTYsMCwwLDAtLjIxLDEuMzhMMTcuMDgsMjFhNy42NCw3LjY0LDAsMCwwLS4zMS43NGwtMS41OC40N2ExLjE1LDEuMTUsMCwwLDAtLjgzLDEuMTF2MmExLjE1LDEuMTUsMCwwLDAsLjgzLDEuMWwxLjU5LjQ3''@;'; put 'put ''YTcuNTMsNy41MywwLDAsMCwuMzEuNzJsLS43OCwxLjQ2YTEuMTYsMS4xNiwwLDAsMCwuMjEsMS4zN2wxLjQyLDEuNGExLjE2LDEuMTYsMCwwLDAsMS4zNy4yMWwxLjQ4LS43OGMuMjMuMTEuNDcuMi43Mi4yOUwyMiwzMy4xOGExLjE2LDEuMTYsMCwwLDAsMS4xMS44MWgyYTEuMTYsMS4xNiww''@;'; put 'put ''LDAsMCwxLjExLS44MmwuNDctMS41OGMuMjQtLjA4LjQ3LS4xOC43LS4yOWwxLjUuNzlhMS4xNiwxLjE2LDAsMCwwLDEuMzYtLjJsMS40Mi0xLjRhMS4xNiwxLjE2LDAsMCwwLC4yMS0xLjM4bC0uNzktMS40NXEuMTYtLjM0LjI5LS42OUwzMywyNi41YTEuMTUsMS4xNSwwLDAsMCwuODMtMS4x''@;'; put 'put ''MVptLTEuNiwxLjYzLTIuMTEuNjItLjEyLjQyYTYsNiwwLDAsMS0uNSwxLjE5bC0uMjEuMzgsMSwxLjkxLTEsMS0yLTEtLjM3LjJhNi4yMSw2LjIxLDAsMCwxLTEuMi40OWwtLjQyLjEyLS42MywyLjA5SDIzLjQybC0uNjMtMi4wOC0uNDItLjEyYTYuMjMsNi4yMywwLDAsMS0xLjIxLS40OWwt''@;'; put 'put ''LjM3LS4yLTEuOTQsMS0xLTEsMS0xLjk0LS4yMi0uMzhBNiw2LDAsMCwxLDE4LjE3LDI2TDE4LDI1LjYzLDE2LDI1VjIzLjY5TDE4LDIzLjA4bC4xMy0uNDFhNS45NCw1Ljk0LDAsMCwxLC41My0xLjIzTDE4LjksMjFsLTEtMS44NSwxLS45NCwxLjg5LDEsLjM4LS4yMWE2LjIzLDYuMjMsMCww''@;'; put 'put ''LDEsMS4yNi0uNTJsLjQxLS4xMi42My0yaDEuMzhsLjYyLDIsLjQxLjEyQTYuMjEsNi4yMSwwLDAsMSwyNy4xLDE5bC4zOC4yMSwxLjkyLTEsMSwxLTEsMS44OS4yMS4zOGE2LjA4LDYuMDgsMCwwLDEsLjUsMS4yMWwuMTIuNDIsMi4wNi42MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LjQ5LDMxSDZWNUgyMS44N0wyMywzSDZBMiwyLDAsMCwwLDQsNVYzMWEyLDIsMCwwLDAsMiwySDE2LjIzbC0xLjEtMS4wOEEzLjExLDMuMTEsMCwwLDEsMTQuNDksMzFaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYs''@;'; put 'put ''MS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy44MywyMy40M2ExLjE2LDEuMTYsMCwwLDAtLjcx''@;'; put 'put ''LTEuMTJsLTEuNjgtLjVjLS4wOS0uMjQtLjE4LS40OC0uMjktLjcxbC43OC0xLjQ0YTEuMTYsMS4xNiwwLDAsMC0uMjEtMS4zN2wtMS40Mi0xLjQxYTEuMTYsMS4xNiwwLDAsMC0xLjM3LS4ybC0xLjQ1Ljc2YTcuODQsNy44NCwwLDAsMC0uNzYtLjMybC0uNDgtMS41OGExLjE1LDEuMTUsMCww''@;'; put 'put ''LDAtMS4xMS0uNzdoLTJhMS4xNiwxLjE2LDAsMCwwLTEuMTEuODJsLS40NywxLjU0YTcuNzYsNy43NiwwLDAsMC0uNzcuMzJsLTEuNDItLjc2YTEuMTYsMS4xNiwwLDAsMC0xLjM2LjJsLTEuNDUsMS40YTEuMTYsMS4xNiwwLDAsMC0uMjEsMS4zOEwxNy4wOCwyMWE3LjY0LDcuNjQsMCwwLDAt''@;'; put 'put ''LjMxLjc0bC0xLjU4LjQ3YTEuMTUsMS4xNSwwLDAsMC0uODMsMS4xMXYyYTEuMTUsMS4xNSwwLDAsMCwuODMsMS4xbDEuNTkuNDdhNy41Myw3LjUzLDAsMCwwLC4zMS43MmwtLjc4LDEuNDZhMS4xNiwxLjE2LDAsMCwwLC4yMSwxLjM3bDEuNDIsMS40YTEuMTYsMS4xNiwwLDAsMCwxLjM3LjIx''@;'; put 'put ''bDEuNDgtLjc4Yy4yMy4xMS40Ny4yLjcyLjI5TDIyLDMzLjE4YTEuMTYsMS4xNiwwLDAsMCwxLjExLjgxaDJhMS4xNiwxLjE2LDAsMCwwLDEuMTEtLjgybC40Ny0xLjU4Yy4yNC0uMDguNDctLjE4LjctLjI5bDEuNS43OWExLjE2LDEuMTYsMCwwLDAsMS4zNi0uMmwxLjQyLTEuNGExLjE2LDEu''@;'; put 'put ''MTYsMCwwLDAsLjIxLTEuMzhsLS43OS0xLjQ1cS4xNi0uMzQuMjktLjY5TDMzLDI2LjVhMS4xNSwxLjE1LDAsMCwwLC44My0xLjExWm0tMS42LDEuNjMtMi4xMS42Mi0uMTIuNDJhNiw2LDAsMCwxLS41LDEuMTlsLS4yMS4zOCwxLDEuOTEtMSwxLTItMS0uMzcuMmE2LjIxLDYuMjEsMCwwLDEt''@;'; put 'put ''MS4yLjQ5bC0uNDIuMTItLjYzLDIuMDlIMjMuNDJsLS42My0yLjA4LS40Mi0uMTJhNi4yMyw2LjIzLDAsMCwxLTEuMjEtLjQ5bC0uMzctLjItMS45NCwxLTEtMSwxLTEuOTQtLjIyLS4zOEE2LDYsMCwwLDEsMTguMTcsMjZMMTgsMjUuNjMsMTYsMjVWMjMuNjlMMTgsMjMuMDhsLjEzLS40MWE1''@;'; put 'put ''Ljk0LDUuOTQsMCwwLDEsLjUzLTEuMjNMMTguOSwyMWwtMS0xLjg1LDEtLjk0LDEuODksMSwuMzgtLjIxYTYuMjMsNi4yMywwLDAsMSwxLjI2LS41MmwuNDEtLjEyLjYzLTJoMS4zOGwuNjIsMiwuNDEuMTJBNi4yMSw2LjIxLDAsMCwxLDI3LjEsMTlsLjM4LjIxLDEuOTItMSwxLDEtMSwxLjg5''@;'; put 'put ''LjIxLjM4YTYuMDgsNi4wOCwwLDAsMSwuNSwxLjIxbC4xMi40MiwyLjA2LjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjEyLDIwLjM1YTQsNCwwLDEsMCw0LjA4LDRBNC4w''@;'; put 'put ''Niw0LjA2LDAsMCwwLDI0LjEyLDIwLjM1Wm0wLDYuNDZhMi40MywyLjQzLDAsMSwxLDIuNDgtMi40M0EyLjQ2LDIuNDYsMCwwLDEsMjQuMTIsMjYuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMTQuNDksMzFINlY1SDIzLjA4YTYuOTQsNi45NCwwLDAsMSwuNi0ySDZBMiwyLDAsMCwwLDQsNVYzMWEyLDIsMCwwLDAsMiwySDE2LjIzbC0xLjEtMS4wOEEzLjExLDMuMTEsMCwwLDEsMTQuNDksMzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTUuMzNWMTIuNzFhNyw3LDAsMCwxLTItMXYxLjg4QTMuMiwzLjIsMCwwLDEsMjgsMTUuMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUuNTUsMzFINlY1SDI2djguNzhhMi4z''@;'; put 'put ''NywyLjM3LDAsMCwxLDIsMS41N1Y1YTIsMiwwLDAsMC0yLTJINkEyLDIsMCwwLDAsNCw1VjMxYTIsMiwwLDAsMCwyLDJIMTcuMTZsLTEtMUEyLjM4LDIuMzgsMCwwLDEsMTUuNTUsMzFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTMzLjU0LDIzLjQ3bC0yLS42MWE3LjA2LDcuMDYsMCwwLDAtLjU4LTEuNDFsMS0xLjg2YS4zNy4zNywwLDAsMC0uMDctLjQ0TDMwLjQxLDE3LjdhLjM3LjM3LDAsMCwwLS40NC0uMDdsLTEuODUsMUE3LDcsMCwwLDAsMjYuNjksMThsLS42MS0yYS4zNy4zNywwLDAsMC0uMzYtLjI1''@;'; put 'put ''aC0yYS4zNy4zNywwLDAsMC0uMzUuMjZsLS42MSwyYTcsNywwLDAsMC0xLjQ0LjYxbC0xLjgyLTFhLjM3LjM3LDAsMCwwLS40NC4wN2wtMS40NywxLjQ0YS4zNy4zNywwLDAsMC0uMDcuNDRsMSwxLjgyYTcsNywwLDAsMC0uNjEsMS40NGwtMiwuNjFhLjM3LjM3LDAsMCwwLS4yNi4zNXYyYS4z''@;'; put 'put ''Ny4zNywwLDAsMCwuMjYuMzVsMiwuNjFhNyw3LDAsMCwwLC42MSwxLjQxbC0xLDEuOWEuMzcuMzcsMCwwLDAsLjA3LjQ0TDE5LDMyYS4zNy4zNywwLDAsMCwuNDQuMDdsMS44Ny0xYTcuMDYsNy4wNiwwLDAsMCwxLjM5LjU3bC42MSwyYS4zNy4zNywwLDAsMCwuMzUuMjZoMmEuMzcuMzcsMCww''@;'; put 'put ''LDAsLjM1LS4yNmwuNjEtMmE3LDcsMCwwLDAsMS4zOC0uNTdsMS44OSwxYS4zNy4zNywwLDAsMCwuNDQtLjA3bDEuNDUtMS40NWEuMzcuMzcsMCwwLDAsLjA3LS40NGwtMS0xLjg4YTcuMDYsNy4wNiwwLDAsMCwuNTgtMS4zOWwyLS42MWEuMzcuMzcsMCwwLDAsLjI2LS4zNVYyMy44M0EuMzcu''@;'; put 'put ''MzcsMCwwLDAsMzMuNTQsMjMuNDdaTTI0LjcsMjguMTlBMy4zMywzLjMzLDAsMSwxLDI4LDI0Ljg2LDMuMzMsMy4zMywwLDAsMSwyNC43LDI4LjE5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy41NCwyMy40N2wt''@;'; put 'put ''Mi0uNjFhNy4wNiw3LjA2LDAsMCwwLS41OC0xLjQxbDEtMS44NmEuMzcuMzcsMCwwLDAtLjA3LS40NEwzMC40MSwxNy43YS4zNy4zNywwLDAsMC0uNDQtLjA3bC0xLjg1LDFBNyw3LDAsMCwwLDI2LjY5LDE4bC0uNjEtMmEuMzcuMzcsMCwwLDAtLjM2LS4yNWgtMmEuMzcuMzcsMCwwLDAtLjM1''@;'; put 'put ''LjI2bC0uNjEsMmE3LDcsMCwwLDAtMS40NC42MWwtMS44Mi0xYS4zNy4zNywwLDAsMC0uNDQuMDdsLTEuNDcsMS40NGEuMzcuMzcsMCwwLDAtLjA3LjQ0bDEsMS44MmE3LDcsMCwwLDAtLjYxLDEuNDRsLTIsLjYxYS4zNy4zNywwLDAsMC0uMjYuMzV2MmEuMzcuMzcsMCwwLDAsLjI2LjM1bDIs''@;'; put 'put ''LjYxYTcsNywwLDAsMCwuNjEsMS40MWwtMSwxLjlhLjM3LjM3LDAsMCwwLC4wNy40NEwxOSwzMmEuMzcuMzcsMCwwLDAsLjQ0LjA3bDEuODctMWE3LjA2LDcuMDYsMCwwLDAsMS4zOS41N2wuNjEsMmEuMzcuMzcsMCwwLDAsLjM1LjI2aDJhLjM3LjM3LDAsMCwwLC4zNS0uMjZsLjYxLTJhNyw3''@;'; put 'put ''LDAsMCwwLDEuMzgtLjU3bDEuODksMWEuMzcuMzcsMCwwLDAsLjQ0LS4wN2wxLjQ1LTEuNDVhLjM3LjM3LDAsMCwwLC4wNy0uNDRsLTEtMS44OGE3LjA2LDcuMDYsMCwwLDAsLjU4LTEuMzlsMi0uNjFhLjM3LjM3LDAsMCwwLC4yNi0uMzVWMjMuODNBLjM3LjM3LDAsMCwwLDMzLjU0LDIzLjQ3''@;'; put 'put ''Wk0yNC43LDI4LjE5QTMuMzMsMy4zMywwLDEsMSwyOCwyNC44NiwzLjMzLDMuMzMsMCwwLDEsMjQuNywyOC4xOVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUuNTUsMzFINlY1SDIx''@;'; put 'put ''Ljg3TDIzLDNINkEyLDIsMCwwLDAsNCw1VjMxYTIsMiwwLDAsMCwyLDJIMTcuMTZsLTEtMUEyLjM4LDIuMzgsMCwwLDEsMTUuNTUsMzFaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2''@;'; put 'put ''Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy41NCwy''@;'; put 'put ''My40N2wtMi0uNjFhNy4wNiw3LjA2LDAsMCwwLS41OC0xLjQxbDEtMS44NmEuMzcuMzcsMCwwLDAtLjA3LS40NEwzMC40MSwxNy43YS4zNy4zNywwLDAsMC0uNDQtLjA3bC0xLjg1LDFBNyw3LDAsMCwwLDI2LjY5LDE4bC0uNjEtMmEuMzcuMzcsMCwwLDAtLjM2LS4yNWgtMmEuMzcuMzcsMCww''@;'; put 'put ''LDAtLjM1LjI2bC0uNjEsMmE3LDcsMCwwLDAtMS40NC42MWwtMS44Mi0xYS4zNy4zNywwLDAsMC0uNDQuMDdsLTEuNDcsMS40NGEuMzcuMzcsMCwwLDAtLjA3LjQ0bDEsMS44MmE3LDcsMCwwLDAtLjYxLDEuNDRsLTIsLjYxYS4zNy4zNywwLDAsMC0uMjYuMzV2MmEuMzcuMzcsMCwwLDAsLjI2''@;'; put 'put ''LjM1bDIsLjYxYTcsNywwLDAsMCwuNjEsMS40MWwtMSwxLjlhLjM3LjM3LDAsMCwwLC4wNy40NEwxOSwzMmEuMzcuMzcsMCwwLDAsLjQ0LjA3bDEuODctMWE3LjA2LDcuMDYsMCwwLDAsMS4zOS41N2wuNjEsMmEuMzcuMzcsMCwwLDAsLjM1LjI2aDJhLjM3LjM3LDAsMCwwLC4zNS0uMjZsLjYx''@;'; put 'put ''LTJhNyw3LDAsMCwwLDEuMzgtLjU3bDEuODksMWEuMzcuMzcsMCwwLDAsLjQ0LS4wN2wxLjQ1LTEuNDVhLjM3LjM3LDAsMCwwLC4wNy0uNDRsLTEtMS44OGE3LjA2LDcuMDYsMCwwLDAsLjU4LTEuMzlsMi0uNjFhLjM3LjM3LDAsMCwwLC4yNi0uMzVWMjMuODNBLjM3LjM3LDAsMCwwLDMzLjU0''@;'; put 'put ''LDIzLjQ3Wk0yNC43LDI4LjE5QTMuMzMsMy4zMywwLDEsMSwyOCwyNC44NiwzLjMzLDMuMzMsMCwwLDEsMjQuNywyOC4xOVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LjU1LDMxSDZW''@;'; put 'put ''NUgyMy4wOGE2Ljk0LDYuOTQsMCwwLDEsLjYtMkg2QTIsMiwwLDAsMCw0LDVWMzFhMiwyLDAsMCwwLDIsMkgxNy4xNmwtMS0xQTIuMzgsMi4zOCwwLDAsMSwxNS41NSwzMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTI4LDE1LjM2VjEyLjcxYTcsNywwLDAsMS0yLTF2MkEyLjM3LDIuMzcsMCwwLDEsMjgsMTUuMzZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCIgLz4nKSxMLkNsclNoYXBlVHdvV2F5QXJyb3dzPSgwLEUuY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGQ9Ik0yMy40MywxNi44M0ExLDEsMCwwLDAsMjIsMTguMjRMMjUuNzIsMjJINy44M2ExLDEsMCwwLDAsMCwySDI1LjcyTDIyLDI3LjdhMSwxLDAsMSwwLDEuNDIsMS40MUwyOS41MywyM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjI0LDE4LjQ1YTEsMSwwLDAsMCwuNzEtMS43MUwxMC4yNCwxM0gyOC4xMmExLDEsMCwwLDAsMC0ySDEwLjI0bDMuNzEtMy43M2ExLDEsMCwwLDAtMS40Mi0xLjQxTDYuNDIsMTJsNi4xMSw2LjE0QTEsMSwwLDAsMCwxMy4yNCwxOC40NVoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVTd2l0Y2g9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTUuNzEsMTRIMjAuOTJWMTJINS43MUw5LjQyLDguMjdBMSwxLDAsMSwwLDgsNi44NkwxLjg5LDEzLDgsMTkuMTRhMSwxLDAs''@;'; put 'put ''MSwwLDEuNDItMS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMyIgeT0iMTIiIHdpZHRoPSIzIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHJlY3QgeD0iMjgiIHk9IjEyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy45MiwxNy44NmExLDEsMCwwLDAtMS40MiwxLjQxTDMwLjIxLDIzSDE1djJI''@;'; put 'put ''MzAuMjFMMjYuNSwyOC43NGExLDEsMCwxLDAsMS40MiwxLjRMMzQsMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEwIiB5PSIyMyIgd2lkdGg9IjMiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI2IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksTC5DbHJTaGFwZVRvb2xzPSgwLEUuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGQ9Ik0yMCwxNEgxNmExLDEsMCwwLDAtMSwxdjZhMSwxLDAsMCwwLDEsMWg0YTEsMSwwLDAsMCwxLTFWMTVBMSwxLDAsMCwwLDIwLDE0Wm0tLjQsNi42SDE2LjRWMTUuNGgzLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0zMy43MSwxMi4zOCwyOS42Miw4LjI5QTEsMSwwLDAsMCwyOC45Miw4aC01VjYuMDVBMiwyLDAsMCwwLDIyLDRIMTMuODRBMS45MiwxLjkyLDAsMCwwLDEyLDYuMDVWOEg3LjA4YTEsMSwwLDAsMC0uNzEuMjlMMi4yOSwxMi4zOGExLDEsMCwwLDAtLjI5LjcxVjI4YTIsMiwwLDAs''@;'; put 'put ''MCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMy4wOEExLDEsMCwwLDAsMzMuNzEsMTIuMzhaTTE0LDZoOFY4SDE0Wk0zMiwxN0gyMnYxLjkzSDMyVjI4SDRWMTguOTNIMTRWMTdINFYxMy41TDcuNSwxMGgyMUwzMiwxMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNi40IiB5PSIxNS40IiB3aWR0aD0iMy4yIiBoZWlnaHQ9IjUuMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMSwyMWExLDEsMCwwLDEtMSwxSDE2YTEsMSwwLDAs''@;'; put 'put ''MS0xLTFWMTlIMnY5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOUgyMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNzEsMTIuMzgsMjkuNjIsOC4yOUExLDEsMCwwLDAsMjguOTIsOGgtNVY2LjA1''@;'; put 'put ''QTIsMiwwLDAsMCwyMiw0SDEzLjg0QTEuOTIsMS45MiwwLDAsMCwxMiw2LjA1VjhINy4wOGExLDEsMCwwLDAtLjcxLjI5TDIuMjksMTIuMzhhMSwxLDAsMCwwLS4yOS43MVYxN0gxNVYxNWExLDEsMCwwLDEsMS0xaDRhMSwxLDAsMCwxLDEsMXYySDM0VjEzLjA4QTEsMSwwLDAsMCwzMy43MSwx''@;'; put 'put ''Mi4zOFpNMjIsOEgxNFY2aDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLEwuQ2xyU2hhcGVXaW5kb3dDbG9zZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTkuNDEsMThsNy4yOS03LjI5YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTgsMTYuNTksMTAu''@;'; put 'put ''NzEsOS4yOWExLDEsMCwwLDAtMS40MSwxLjQxTDE2LjU5LDE4LDkuMjksMjUuMjlhMSwxLDAsMSwwLDEuNDEsMS40MUwxOCwxOS40MWw3LjI5LDcuMjlhMSwxLDAsMCwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLEwuQ2xyU2hh''@;'; put 'put ''cGVXaW5kb3dNYXg9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI3Ljg5LDloLTIwYTIsMiwwLDAsMC0yLDJWMjVhMiwyLDAsMCwwLDIsMmgyMGEyLDIsMCwwLDAsMi0yVjExQTIsMiwwLDAsMCwyNy44OSw5Wm0tMjAsMTZWMTFoMjBWMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlV2luZG93TWluPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNywyN0g5YTEsMSwwLDAsMSwwLTJIMjdhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLEwuQ2xy''@;'; put 'put ''U2hhcGVXaW5kb3dSZXN0b3JlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOCw4SDE0YTIsMiwwLDAsMC0yLDJ2MmgyVjEwSDI4VjIwSDI2djJoMmEyLDIsMCwwLDAsMi0yVjEwQTIsMiwwLDAsMCwyOCw4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsMTRIOGEyLDIsMCwwLDAtMiwyVjI2YTIsMiwwLDAsMCwyLDJIMjJhMiwyLDAsMCwwLDItMlYxNkEyLDIsMCwwLDAsMjIsMTRaTTgsMjZWMTZIMjJWMjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4n''@;'; put 'put ''KSxMLkNsclNoYXBlWm9vbUluPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNiw0QTEyLDEyLDAsMSwwLDI4LDE2LDEyLDEyLDAsMCwwLDE2LDRabTAsMjEuOTFBMTAsMTAsMCwxLDEsMjYsMTYsMTAsMTAsMCwwLDEsMTYsMjUuOTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS43MSwyOS42OWwtNS4xNy01LjE3QTEzLjY4LDEzLjY4LDAsMCwxLDI1LjE1LDI2bDUuMTUsNS4xNWExLDEsMCwwLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEsMTVIMTdWMTFhMSwxLDAsMCwwLTIsMHY0SDExYTEsMSwwLDAsMCwwLDJoNHY0YTEsMSwwLDAsMCwyLDBWMTdoNGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksTC5DbHJT''@;'; put 'put ''aGFwZVpvb21PdXQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE2LDRBMTIsMTIsMCwxLDAsMjgsMTYsMTIsMTIsMCwwLDAsMTYsNFptMCwyMS45MUExMCwxMCwwLDEsMSwyNiwxNiwxMCwxMCwwLDAsMSwxNiwyNS45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjcxLDI5LjY5bC01LjE3LTUuMTdBMTMuNjgsMTMuNjgsMCwwLDEsMjUuMTUsMjZsNS4xNSw1LjE1YTEsMSwwLDAsMCwxLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0yMCwxNUgxMmExLDEsMCwwLDAsMCwyaDhhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLEwuQ2xyU2hhcGVLZXk9KDAsRS5jbHJJY29uU1ZHKSgnPHJlY3QgeD0iNi4zMyIgeT0iMTAuNzEi''@;'; put 'put ''IHdpZHRoPSI5LjcxIiBoZWlnaHQ9IjIuNTciIHJ4PSIxIiByeT0iMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUuMjEgMTEuNDMpIHJvdGF0ZSgtNDUpIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4zNSwx''@;'; put 'put ''Ni44bC42My0uNjNBNSw1LDAsMCwwLDI0LDkuMUwxOC43MSwzLjg0YTUsNSwwLDAsMC03LjA3LDBMMy4wOSwxMi4zOWE1LDUsMCwwLDAsMCw3LjA3bDUuMjYsNS4yNmE1LDUsMCwwLDAsNy4wNywwbC40LS40TDE4LDI2LjQ4aDMuNDR2M2gzLjY5djEuNjNMMjgsMzRoNlYyNy40NVpNMzIsMzJI''@;'; put 'put ''MjguODZsLTEuNzctMS43NnYtMi44SDIzLjQxdi0zSDE4LjhsLTMtM0wxNCwyMy4zMWEzLDMsMCwwLDEtNC4yNCwwTDQuNSwxOGEzLDMsMCwwLDEsMC00LjI0bDguNTYtOC41NmEzLDMsMCwwLDEsNC4yNCwwbDUuMjYsNS4yNmEzLDMsMCwwLDEsMCw0LjI0bC0yLDJMMzIsMjguMjhaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjYuMzMiIHk9IjEwLjcxIiB3aWR0aD0iOS43MSIgaGVpZ2h0PSIyLjU3IiByeD0iMSIgcnk9IjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01LjIxIDExLjQzKSByb3RhdGUoLTQ1''@;'; put 'put ''KSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMzUsMTYuOGwuNjMtLjYzYTUsNSwwLDAsMCwuNjMtLjc3SDIyLjIzbC0uMjksMEwyMC41MiwxNi44LDMyLDI4LjI4VjMySDI4''@;'; put 'put ''Ljg2bC0xLjc3LTEuNzZ2LTIuOEgyMy40MXYtM0gxOC44bC0zLTNMMTQsMjMuMzFhMywzLDAsMCwxLTQuMjQsMEw0LjUsMThhMywzLDAsMCwxLDAtNC4yNGw4LjU2LTguNTZhMywzLDAsMCwxLDQuMjQsMEwyMC4xLDguMDZsMS0xLjc5TDE4LjcxLDMuODRhNSw1LDAsMCwwLTcuMDcsMEwzLjA5''@;'; put 'put ''LDEyLjM5YTUsNSwwLDAsMCwwLDcuMDdsNS4yNiw1LjI2YTUsNSwwLDAsMCw3LjA3LDBsLjQtLjRMMTgsMjYuNDhoMy40NHYzaDMuNjl2MS42M0wyOCwzNGg2VjI3LjQ1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI2LjMzIiB5PSIxMC43MSIgd2lkdGg9IjkuNzEiIGhlaWdodD0iMi41NyIgcng9IjEiIHJ5PSIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNS4yMSAxMS40Mykgcm90''@;'; put 'put ''YXRlKC00NSkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4zNSwxNi44bC42My0uNjNBNSw1LDAsMCwwLDI0LDkuMUwxOC43MSwzLjg0YTUsNSwwLDAsMC03LjA3LDBMMy4wOSwx''@;'; put 'put ''Mi4zOWE1LDUsMCwwLDAsMCw3LjA3bDUuMjYsNS4yNmE1LDUsMCwwLDAsNy4wNywwbC40LS40TDE4LDI2LjQ4aDMuNDR2M2gzLjY5djEuNjNMMjgsMzRoNlYyNy40NVpNMzIsMzJIMjguODZsLTEuNzctMS43NnYtMi44SDIzLjQxdi0zSDE4LjhsLTMtM0wxNCwyMy4zMWEzLDMsMCwwLDEtNC4y''@;'; put 'put ''NCwwTDQuNSwxOGEzLDMsMCwwLDEsMC00LjI0bDguNTYtOC41NmEzLDMsMCwwLDEsNC4yNCwwbDUuMjYsNS4yNmEzLDMsMCwwLDEsMCw0LjI0bC0yLDJMMzIsMjguMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMzgsMTYuNzdsLjYtLjZBNSw1LDAsMCwwLDI0''@;'; put 'put ''LDkuMUwxOC43MSwzLjg0YTUsNSwwLDAsMC03LjA3LDBMMy4wOSwxMi4zOWE1LDUsMCwwLDAsMCw3LjA3bDUuMjYsNS4yNmE1LDUsMCwwLDAsNy4wNywwbC40NS0uNDUsMi4xLDIuMmgzLjQ0djNoMy42OXYxLjYzTDI4LDM0aDZWMjcuNDVabS04LjU2LTYuNTlMOS4zNywxNS42NGExLDEsMCww''@;'; put 'put ''LDEtMS40MSwwbC0uNC0uNGExLDEsMCwwLDEsMC0xLjQxTDEzLDguMzZhMSwxLDAsMCwxLDEuNDEsMGwuNC40QTEsMSwwLDAsMSwxNC44MiwxMC4xOFpNMzIsMzJIMjguODZsLTEuNzctMS43NnYtMi44SDIzLjQxdi0zSDE4LjhsLTEuNTItMS42MUwyMiwxOC4xOCwzMiwyOC4yOFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMzgsMTYuNzdsLjYtLjZhNSw1LDAsMCwwLC42My0uNzdIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsMi4wOS0zLjYyTDE4LjcxLDMuODRhNSw1LDAsMCwwLTcuMDcsMEwz''@;'; put 'put ''LjA5LDEyLjM5YTUsNSwwLDAsMCwwLDcuMDdsNS4yNiw1LjI2YTUsNSwwLDAsMCw3LjA3LDBsLjQ1LS40NSwyLjEsMi4yaDMuNDR2M2gzLjY5djEuNjNMMjgsMzRoNlYyNy40NVptLTguNTYtNi41OUw5LjM3LDE1LjY0YTEsMSwwLDAsMS0xLjQxLDBsLS40LS40YTEsMSwwLDAsMSwwLTEuNDFM''@;'; put 'put ''MTMsOC4zNmExLDEsMCwwLDEsMS40MSwwbC40LjRBMSwxLDAsMCwxLDE0LjgyLDEwLjE4Wk0zMiwzMkgyOC44NmwtMS43Ny0xLjc2di0yLjhIMjMuNDF2LTNIMTguOGwtMS41Mi0xLjYxTDIyLDE4LjE4LDMyLDI4LjI4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjM4LDE2Ljc3bC42LS42QTUsNSwwLDAsMCwyNCw5LjFMMTguNzEsMy44NGE1LDUsMCwwLDAtNy4wNywwTDMuMDksMTIuMzlh''@;'; put 'put ''NSw1LDAsMCwwLDAsNy4wN2w1LjI2LDUuMjZhNSw1LDAsMCwwLDcuMDcsMGwuNDUtLjQ1LDIuMSwyLjJoMy40NHYzaDMuNjl2MS42M0wyOCwzNGg2VjI3LjQ1Wm0tOC41Ni02LjU5TDkuMzcsMTUuNjRhMSwxLDAsMCwxLTEuNDEsMGwtLjQtLjRhMSwxLDAsMCwxLDAtMS40MUwxMyw4LjM2YTEs''@;'; put 'put ''MSwwLDAsMSwxLjQxLDBsLjQuNEExLDEsMCwwLDEsMTQuODIsMTAuMThaTTMyLDMySDI4Ljg2bC0xLjc3LTEuNzZ2LTIuOEgyMy40MXYtM0gxOC44bC0xLjUyLTEuNjFMMjIsMTguMTgsMzIsMjguMjhaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJh''@;'; put 'put ''ZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLEwuQ2xyU2hhcGVMaWJyYXJ5PSgwLEUuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGQ9Ik0zMy40OCwyOS42MywyNi43NCwxMS44MmEyLDIsMCwwLDAtMi41OC0xLjE2TDIxLDExLjg1VjguOTJBMS45MiwxLjkyLDAsMCwwLDE5LjA4LDdIMTRWNC45MkExLjkyLDEuOTIsMCwwLDAsMTIuMDgsM0g1QTIsMiwwLDAsMCwzLDVWMzJhMSwxLDAsMCwwLDEsMUgyMGExLDEsMCwwLDAs''@;'; put 'put ''MS0xVjE5LjI3bDUsMTMuMjFhMSwxLDAsMCwwLDEuMjkuNThsNS42MS0yLjE0YTEsMSwwLDAsMCwuNTgtMS4yOVpNMTIsOC44M1YzMUg1VjVoN1pNMTksMzFIMTRWOWg1Wm04LjUxLS4yNUwyMS4xMywxMy45MmwzLjc0LTEuNDIsNi4zOSwxNi44M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEyLjc1LDNINS4yNUExLjE1LDEuMTUsMCwwLDAsNCw0VjMzSDE0VjRBMS4xNSwxLjE1LDAsMCwwLDEyLjc1LDNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTMzLjc3LDMxLjA5bC02Ljk0LTE4LjNhMSwxLDAsMCwwLTEuMjktLjU4TDIyLDEzLjU5VjlhMSwxLDAsMCwwLTEtMUgxNlYzM2g2VjE0LjY5TDI4LjkzLDMzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxMLkNsclNoYXBlQm9sdD0o''@;'; put 'put ''MCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTAuNTIsMzRoLTNhMSwxLDAsMCwxLS44OC0xLjQ0TDEyLjU1LDIxSDZhMSwxLDAsMCwxLS44NS0xLjU0bDEwLjY4LTE3QTEsMSwwLDAsMSwxNi42NCwySDMwLjA3YTEsMSwwLDAsMSwuNzcsMS42OUwyMS43OCwxNGg1LjM4YTEsMSwwLDAsMSwu''@;'; put 'put ''NzMsMS42NmwtMTYuNjMsMThBMSwxLDAsMCwxLDEwLjUyLDM0Wk05LjE4LDMyaC45MUwyNC44NiwxNkgxOS41OWExLDEsMCwwLDEtLjc3LTEuNjlMMjcuODgsNEgxNy4xOUw3Ljc3LDE5SDE0LjJhMSwxLDAsMCwxLC44OCwxLjQ0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuOCwyLjI5QS40OS40OSwwLDAsMCwzMC4zNSwySDE2LjQyYS41LjUsMCwwLDAtLjQyLjIzbC0xMC43MSwxN0EuNDkuNDksMCwwLDAsNS43LDIwaDcuNjdMNi42LDMzLjI1YS41Mi41MiwwLDAsMCwuNDYuNzVoM2EuNS41LDAs''@;'; put 'put ''MCwwLC4zNy0uMTZMMjgsMTQuODVhLjUuNSwwLDAsMC0uMzctLjg1SDIwLjg5TDMwLjcyLDIuODJBLjQ5LjQ5LDAsMCwwLDMwLjgsMi4yOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZVdyZW5jaD0oMCxFLmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBkPSJNMzMuMTgsMjYuMTEsMjAuMzUsMTMuMjhBOS4yOCw5LjI4LDAsMCwwLDcuNTQsMi43OWwtMS4zNC41OSw1LjM4LDUuMzhMOC43NiwxMS41OSwzLjM4LDYuMjEsMi43OSw3LjU0QTkuMjcsOS4yNywwLDAsMCwxMy4yOCwyMC4zNUwyNi4xMSwzMy4xOGEyLDIsMCwwLDAsMi44MywwbDQu''@;'; put 'put ''MjQtNC4yNEEyLDIsMCwwLDAsMzMuMTgsMjYuMTFabS01LjY2LDUuNjZMMTMuODgsMTguMTJsLS41Ny4xNmE3LjI3LDcuMjcsMCwwLDEtOS4zMS03LDcuMiw3LjIsMCwwLDEsLjE1LTEuNDhsNC42MSw0LjYxLDUuNjYtNS42Nkw5LjgxLDQuMTVhNy4yNyw3LjI3LDAsMCwxLDguNDcsOS4xNmwt''@;'; put 'put ''LjE2LjU3TDMxLjc3LDI3LjUzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNy4xMyIgY3k9IjI3LjA5IiByPSIxLjMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMS4yMSAyNy4xMikgcm90YXRlKC00NSki''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjczLDI3LjcyLDE5LjY3LDEzLjY2YTguNzksOC43OSwwLDAsMC0xMi0xMC41TDEzLDguNTMsOC41MywxMywzLjE2LDcuNjdhOC43OSw4Ljc5LDAsMCwwLDEwLjUs''@;'; put 'put ''MTJMMjcuNzIsMzMuNzNhMS4wNywxLjA3LDAsMCwwLDEuNSwwbDQuNTEtNC41MUExLjA3LDEuMDcsMCwwLDAsMzMuNzMsMjcuNzJaTTI5LDI5YTEuMzgsMS4zOCwwLDEsMSwwLTJBMS4zOCwxLjM4LDAsMCwxLDI5LDI5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIg''@;'; put 'put ''Lz4nKSxMLkNsclNoYXBlQnVsbHNleWU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJhMTUuOTIsMTUuOTIsMCwwLDAtNC4yNS41OWwuNzcsMS44NmExNC4wNywxNC4wNywwLDEsMS0xMCwxMGwtMS44Ni0uNzhBMTYsMTYsMCwxLDAsMTgsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTcuNDUsMTUuN2ExMC44MSwxMC44MSwwLDEsMCw4LjMtOC4yNkwxNi4zNyw5QTkuMjQsOS4yNCwwLDEsMSw5LDE2LjMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjIuMDlhNC4wOCw0LjA4LDAsMCwxLTQtMy42OGwtMS42My0uNjhjMCwuMDksMCwuMTgsMCwuMjdBNS42OSw1LjY5LDAsMSwwLDE4LDEyLjMxaC0uMjRMMTguNDMsMTRBNC4wNyw0LjA3LDAsMCwxLDE4LDIyLjA5WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOC4yLDEzLjM0YS41LjUsMCwwLDAsLjM1LjE1SDEyLjJsNS4zNyw1LjM3QTEsMSwwLDAsMCwxOSwxNy40NEwxMy41MywxMlY4LjUxYS41LjUsMCwwLDAtLjE1LS4zNUw3Ljc5LDIuNTdhLjUuNSww''@;'; put 'put ''LDAsMC0uODUuMzV2NEgzYS41LjUsMCwwLDAtLjM1Ljg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksMTguODVhMSwxLDAsMCwxLTEuNDEsMGwtMy0zQTQsNCwwLDAsMCwxMy45MSwxOCw0LjA5LDQuMDks''@;'; put 'put ''MCwxLDAsMTgsMTMuOTFhNCw0LDAsMCwwLTIsLjU1bDMsM0ExLDEsMCwwLDEsMTksMTguODVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJhMTUuOTIsMTUuOTIsMCwwLDAtNC4yNS41OWwxLjYsMy44OUExMS44''@;'; put 'put ''OSwxMS44OSwwLDEsMSw2LjQ5LDE1LjNMMi42MSwxMy42OEExNiwxNiwwLDEsMCwxOCwyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LDE1Ljk0QTEwLjE3LDEwLjE3LDAsMSwwLDE2LDhsMS42OSw0LjExLjMxLDBB''@;'; put 'put ''NS44OCw1Ljg4LDAsMSwxLDEyLjEyLDE4YzAtLjEyLDAtLjIzLDAtLjM1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjIsMTMuMzRhLjUuNSwwLDAsMCwuMzUuMTVIMTIuMmwyLjM1LDIuMzVBNC4wOSw0LjA5LDAs''@;'; put 'put ''MCwxLDE2LDE0LjQ2TDEzLjUzLDEyVjguNTFhLjUuNSwwLDAsMC0uMTUtLjM1TDcuNzksMi41N2EuNS41LDAsMCwwLS44NS4zNXY0SDNhLjUuNSwwLDAsMC0uMzUuODVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPicpLEwuQ2xyU2hhcGVUYXJnZXQ9KDAsRS5j''@;'; put 'put ''bHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTE4LDcuMkExMC44LDEwLjgsMCwxLDAsMjguOCwxOCwxMC44MSwxMC44MSwwLDAsMCwxOCw3LjJabTAsMjBBOS4yLDkuMiwwLDEsMSwyNy4yLDE4LDkuMjEsOS4yMSwwLDAsMSwxOCwyNy4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTIuMzFBNS42OSw1LjY5LDAsMSwwLDIzLjY5LDE4LDUuNjksNS42OSwwLDAsMCwxOCwxMi4zMVptMCw5Ljc3QTQuMDksNC4wOSwwLDEsMSwyMi4wOSwxOCw0LjA5LDQuMDksMCwwLDEsMTgsMjIuMDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjQuMDkiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsNy44M0ExMC4xNywxMC4xNywwLDEsMCwyOC4x''@;'; put 'put ''NywxOCwxMC4xOCwxMC4xOCwwLDAsMCwxOCw3LjgzWm0wLDE2QTUuODgsNS44OCwwLDEsMSwyMy44OCwxOCw1Ljg4LDUuODgsMCwwLDEsMTgsMjMuODhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYs''@;'; put 'put ''MCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwyNy44M0ExMS44MywxMS44MywwLDEsMSwyOS44MywxOCwxMS44NSwxMS44NSwwLDAsMSwxOCwyOS44M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksTC5DbHJTaGFwZUZsYW1lPSgwLEUuY2xySWNv''@;'; put 'put ''blNWRykoJzxwYXRoIGQ9Ik0zMS4zLDE2LjY2Yy0xLjE5LTIuMDktNy45NC0xNC4xNS03Ljk0LTE0LjE1YTEsMSwwLDAsMC0xLjc1LDBsLTYsMTAuNjQtMy01LjI4YTEsMSwwLDAsMC0xLjc1LDBTNS40LDE3Ljc4LDQuNDIsMTkuNUE5LjMsOS4zLDAsMCwwLDMsMjQuNjFDMywyOS43Miw1Ljg2''@;'; put 'put ''LDM0LDExLjY3LDM0SDIyLjQ4QzI4LjI4LDM0LDMzLDI5LDMzLDIyLjc4QTExLjEzLDExLjEzLDAsMCwwLDMxLjMsMTYuNjZaTTIyLjQ4LDMySDExLjc3QzguMTMsMzIsNSwyOC42Niw1LDI0LjYxYTcuNDMsNy40MywwLDAsMSwxLjE2LTQuMTNjLjczLTEuMjksNC4wNS03LjIxLDUuNjUtMTAu''@;'; put 'put ''MDdsMyw1LjI4YTEsMSwwLDAsMCwuODcuNTFoMGExLDEsMCwwLDAsLjg3LS41MUwyMi40OSw1YzEuODYsMy4zMyw2LjE1LDExLDcuMDcsMTIuNkE5LjI0LDkuMjQsMCwwLDEsMzEsMjIuNzhDMzEsMjcuODcsMjcuMTgsMzIsMjIuNDgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNS43NSwyMS43M2MtLjY1LTEuMTYtNC4zOC03LjgxLTQuMzgtNy44MWEuOC44LDAsMCwwLTEuNCwwbC00LjIsNy40OC0xLjU5LTIuNDlhLjguOCwwLDAsMC0xLjM1LDBMOS4zNywyNC4zNWE0LjM1LDQuMzUsMCwwLDAt''@;'; put 'put ''LjgyLDIuNiw0LjQ5LDQuNDksMCwwLDAsLjUsMkgxMWEzLDMsMCwwLDEtLjgzLTIsMi43OCwyLjc4LDAsMCwxLC41Ni0xLjczbDIuOC00LjM4LDEuNjYsMi42YS44LjgsMCwwLDAsMS40MS0uMTIsNy44Miw3LjgyLDAsMCwxLC40LS44TDIwLjY3LDE2bDMuNjksNi41N2E0LjgzLDQuODMsMCww''@;'; put 'put ''LDEsLjc3LDIuNzFBNSw1LDAsMCwxLDIzLjQ2LDI5aDIuMTNhNi42OCw2LjY4LDAsMCwwLDEuMTQtMy43NCw2LjQ1LDYuNDUsMCwwLDAtMS0zLjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS4zLDE2LjMy''@;'; put 'put ''Yy0xLjE5LTIuMDktNy45NC0xNC4xNS03Ljk0LTE0LjE1YTEsMSwwLDAsMC0xLjc1LDBsLTYsMTAuNjQtMy01LjI4YTEsMSwwLDAsMC0xLjc1LDBTNS40LDE3LjQzLDQuNDIsMTkuMTVBOS4zLDkuMywwLDAsMCwzLDI0LjI2YzAsNS4xMSwzLjg4LDkuNjUsOC42Nyw5Ljc0SDIyLjQ4QzI4LjI4''@;'; put 'put ''LDM0LDMzLDI4LjYyLDMzLDIyLjQ0QTExLjEzLDExLjEzLDAsMCwwLDMxLjMsMTYuMzJaTTIxLjQ4LDMySDE0LjU0QTQuNjgsNC42OCwwLDAsMSwxMCwyNy40MWEzLjkxLDMuOTEsMCwwLDEsLjc1LTIuMzRsMy4zNS01LjIxYS41LjUsMCwwLDEsLjg0LDBsMS43OCwyLjc3LDAtLjA4Yy42My0x''@;'; put 'put ''LjExLDQuMjMtNy40OCw0LjIzLTcuNDhhLjUuNSwwLDAsMSwuODcsMHMzLjYsNi4zOCw0LjIzLDcuNDhBNS44Myw1LjgzLDAsMCwxLDI3LDI1Ljc2QzI3LDMyLDIyLjEsMzIsMjEuNDgsMzJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLEwuQ2xyU2hhcGVI''@;'; put 'put ''b3VyZ2xhc3M9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LDMySDI2VjI0LjkxYTYuNjcsNi42NywwLDAsMC0yLjY5LTUuMzNsLTEuMjgtMUE2LjM2LDYuMzYsMCwwLDAsMjEsMThoMGE2LjI5LDYuMjksMCwwLDAsMS0uNjJsMS4yOC0xQTYuNjcsNi42NywwLDAsMCwyNiwxMS4wOVY0''@;'; put 'put ''aDNhMSwxLDAsMCwwLDAtMkg3QTEsMSwwLDAsMCw3LDRoM3Y3LjA5YTYuNjcsNi42NywwLDAsMCwyLjY5LDUuMzNsMS4yOCwxQTYuMzYsNi4zNiwwLDAsMCwxNSwxOGgwYTYuMjcsNi4yNywwLDAsMC0xLC42MmwtMS4yOCwxQTYuNjcsNi42NywwLDAsMCwxMCwyNC45MVYzMkg3YTEsMSwwLDAs''@;'; put 'put ''MCwwLDJIMjlhMSwxLDAsMCwwLDAtMlpNMTIsMjQuOTFhNC42Niw0LjY2LDAsMCwxLDEuODgtMy43MmwxLjI4LTFhNC42Niw0LjY2LDAsMCwxLDEuMTgtLjYzLDEsMSwwLDAsMCwuNjUtLjk0VjE3LjMzYTEsMSwwLDAsMC0uNjUtLjk0LDQuNjcsNC42NywwLDAsMS0xLjE5LS42M2wtMS4yOC0x''@;'; put 'put ''QTQuNjYsNC42NiwwLDAsMSwxMiwxMS4wOVY0SDI0djcuMDlhNC42Niw0LjY2LDAsMCwxLTEuODgsMy43MmwtMS4yOCwxaDBhNC42Niw0LjY2LDAsMCwxLTEuMTguNjMsMSwxLDAsMCwwLS42NS45NHYxLjM0YTEsMSwwLDAsMCwuNjUuOTQsNC42Nyw0LjY3LDAsMCwxLDEuMTkuNjNsMS4yOCwx''@;'; put 'put ''QTQuNjYsNC42NiwwLDAsMSwyNCwyNC45MVYzMkgxMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LDMySDI2VjI0LjkxYTYuNjcsNi42NywwLDAsMC0yLjY5LTUuMzNsLTEuMjgtMUE2LjM2LDYuMzYsMCww''@;'; put 'put ''LDAsMjEsMThoMGE2LjI5LDYuMjksMCwwLDAsMS0uNjJsMS4yOC0xYTYuNjQsNi42NCwwLDAsMCwxLjA5LTFIMjIuMjNhMy42NCwzLjY0LDAsMCwxLS43OC0uMDlsLS42Mi40NmgwYTQuNjYsNC42NiwwLDAsMS0xLjE4LjYzLDEsMSwwLDAsMC0uNjUuOTR2MS4zNGExLDEsMCwwLDAsLjY1Ljk0''@;'; put 'put ''LDQuNjcsNC42NywwLDAsMSwxLjE5LjYzbDEuMjgsMUE0LjY2LDQuNjYsMCwwLDEsMjQsMjQuOTFWMzJIMTJWMjQuOTFhNC42Niw0LjY2LDAsMCwxLDEuODgtMy43MmwxLjI4LTFhNC42Niw0LjY2LDAsMCwxLDEuMTgtLjYzLDEsMSwwLDAsMCwuNjUtLjk0VjE3LjMzYTEsMSwwLDAsMC0uNjUt''@;'; put 'put ''Ljk0LDQuNjcsNC42NywwLDAsMS0xLjE5LS42M2wtMS4yOC0xQTQuNjYsNC42NiwwLDAsMSwxMiwxMS4wOVY0SDIyLjQ1TDIzLjYsMkg3QTEsMSwwLDAsMCw3LDRoM3Y3LjA5YTYuNjcsNi42NywwLDAsMCwyLjY5LDUuMzNsMS4yOCwxQTYuMzYsNi4zNiwwLDAsMCwxNSwxOGgwYTYuMjcsNi4y''@;'; put 'put ''NywwLDAsMC0xLC42MmwtMS4yOCwxQTYuNjcsNi42NywwLDAsMCwxMCwyNC45MVYzMkg3YTEsMSwwLDAsMCwwLDJIMjlhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LDMySDI2VjI0LjkxYTYuNjcsNi42NywwLDAsMC0yLjY5LTUuMzNsLTEuMjgtMUE2LjM2LDYuMzYsMCwwLDAsMjEsMThoMGE2LjI5LDYuMjksMCwwLDAsMS0uNjJsMS4yOC0xYTYuNjgs''@;'; put 'put ''Ni42OCwwLDAsMCwyLjU3LTQuMTZBNy41Myw3LjUzLDAsMCwxLDI0LDEwLjQ5di42MWE0LjY2LDQuNjYsMCwwLDEtMS44OCwzLjcybC0xLjI4LDFoMGE0LjY2LDQuNjYsMCwwLDEtMS4xOC42MywxLDEsMCwwLDAtLjY1Ljk0djEuMzRhMSwxLDAsMCwwLC42NS45NCw0LjY3LDQuNjcsMCwwLDEs''@;'; put 'put ''MS4xOS42M2wxLjI4LDFBNC42Niw0LjY2LDAsMCwxLDI0LDI0LjkxVjMySDEyVjI0LjkxYTQuNjYsNC42NiwwLDAsMSwxLjg4LTMuNzJsMS4yOC0xYTQuNjYsNC42NiwwLDAsMSwxLjE4LS42MywxLDEsMCwwLDAsLjY1LS45NFYxNy4zM2ExLDEsMCwwLDAtLjY1LS45NCw0LjY3LDQuNjcsMCww''@;'; put 'put ''LDEtMS4xOS0uNjNsLTEuMjgtMUE0LjY2LDQuNjYsMCwwLDEsMTIsMTEuMDlWNEgyMi43OGE3LjQ1LDcuNDUsMCwwLDEsLjg5LTJIN0ExLDEsMCwwLDAsNyw0aDN2Ny4wOWE2LjY3LDYuNjcsMCwwLDAsMi42OSw1LjMzbDEuMjgsMUE2LjM2LDYuMzYsMCwwLDAsMTUsMThoMGE2LjI3LDYuMjcs''@;'; put 'put ''MCwwLDAtMSwuNjJsLTEuMjgsMUE2LjY3LDYuNjcsMCwwLDAsMTAsMjQuOTFWMzJIN2ExLDEsMCwwLDAsMCwySDI5YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xl''@;'; put 'put ''IGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNi42Nyw0aDIyYTEsMSwwLDAsMCwwLTJoLTIyYTEsMSwwLDEsMCwwLDJaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjY3LDMyaC0yMmExLDEsMCwwLDAsMCwyaDIyYTEsMSwwLDEsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTIyLjU1LDE1LjY3QTYuMDcsNi4wNywwLDAsMCwyNSwxMS4xMlY2SDEwLjA2djUuMTJhNi4wNyw2LjA3LDAsMCwwLDIuNDUsNC41NSwxMS40OCwxMS40OCwwLDAsMCwyLjkxLDEuNzJ2MS4xNmExMS40OCwxMS40OCwwLDAsMC0yLjkxLDEuNzIsNi4wNyw2LjA3LDAsMCwwLTIu''@;'; put 'put ''NDUsNC41NXY1LjEySDI1VjI0LjgyYTYuMDcsNi4wNywwLDAsMC0yLjQ1LTQuNTUsMTEuNDgsMTEuNDgsMCwwLDAtMi45MS0xLjcyVjE3LjM5QTExLjQ4LDExLjQ4LDAsMCwwLDIyLjU1LDE1LjY3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0yOC42NywzMmgtMjJhMSwxLDAsMCwwLDAsMmgyMmExLDEsMCwxLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik02LjY3LDRIMjIuNDVMMjMuNiwySDYu''@;'; put 'put ''NjdhMSwxLDAsMSwwLDAsMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTIuNTEsMjAuMjdhNi4wNyw2LjA3LDAsMCwwLTIuNDUsNC41NXY1LjEySDI1VjI0LjgyYTYuMDcsNi4wNyww''@;'; put 'put ''LDAsMC0yLjQ1LTQuNTUsMTEuNDgsMTEuNDgsMCwwLDAtMi45MS0xLjcyVjE3LjM5YTExLjQ4LDExLjQ4LDAsMCwwLDIuOTEtMS43MmwuMy0uMjdoLS42MkEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDEwLjA2djUuMTJhNi4wNyw2LjA3LDAsMCwwLDIuNDUsNC41NSwxMS40OCwx''@;'; put 'put ''MS40OCwwLDAsMCwyLjkxLDEuNzJ2MS4xNkExMS40OCwxMS40OCwwLDAsMCwxMi41MSwyMC4yN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4''@;'; put 'put ''LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC42NywzMmgtMjJhMSwxLDAsMCwwLDAsMmgyMmExLDEsMCwxLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNi42Nyw0SDIyLjc4YTcu''@;'; put 'put ''NDUsNy40NSwwLDAsMSwuODktMmgtMTdhMSwxLDAsMSwwLDAsMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjU1LDIwLjI3YTExLjQ4LDExLjQ4LDAsMCwwLTIuOTEtMS43MlYxNy4z''@;'; put 'put ''OWExMS40OCwxMS40OCwwLDAsMCwyLjkxLTEuNzJBNi4yNSw2LjI1LDAsMCwwLDI1LDExLjU1LDcuNDcsNy40NywwLDAsMSwyMi41LDZIMTAuMDZ2NS4xMmE2LjA3LDYuMDcsMCwwLDAsMi40NSw0LjU1LDExLjQ4LDExLjQ4LDAsMCwwLDIuOTEsMS43MnYxLjE2YTExLjQ4LDExLjQ4LDAsMCww''@;'; put 'put ''LTIuOTEsMS43Miw2LjA3LDYuMDcsMCwwLDAtMi40NSw0LjU1djUuMTJIMjVWMjQuODJBNi4wNyw2LjA3LDAsMCwwLDIyLjU1LDIwLjI3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIz''@;'; put 'put ''MCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxMLkNsclNoYXBlTm9BY2Nlc3M9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYs''@;'; put 'put ''MCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3LjE1LDE1SDguODVBMS44NSwxLjg1LDAsMCwwLDcsMTYuODV2Mi4y''@;'; put 'put ''OUExLjg1LDEuODUsMCwwLDAsOC44NSwyMUgyNy4xNUExLjg1LDEuODUsMCwwLDAsMjksMTkuMTVWMTYuODVBMS44NSwxLjg1LDAsMCwwLDI3LjE1LDE1Wm0uMjUsNC4xNWEuMjUuMjUsMCwwLDEtLjI1LjI1SDguODVhLjI1LjI1LDAsMCwxLS4yNS0uMjVWMTYuODVhLjI1LjI1LDAsMCwxLC4y''@;'; put 'put ''NS0uMjVIMjcuMTVhLjI1LjI1LDAsMCwxLC4yNS4yNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNMjkuMTUsMjBINi44NUEuODUuODUs''@;'; put 'put ''MCwwLDEsNiwxOS4xNVYxNi44NUEuODUuODUsMCwwLDEsNi44NSwxNkgyOS4xNWEuODUuODUsMCwwLDEsLjg1Ljg1djIuMjlBLjg1Ljg1LDAsMCwxLDI5LjE1LDIwWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlT3JnYW5pemF0aW9uPSgw''@;'; put 'put ''LEUuY2xySWNvblNWRykoJzxwb2x5Z29uIHBvaW50cz0iOS44IDE4LjggMjYuMiAxOC44IDI2LjIgMjEuODggMjcuOCAyMS44OCAyNy44IDE3LjIgMTguOCAxNy4yIDE4LjggMTQgMTcuMiAxNCAxNy4yIDE3LjIgOC4yIDE3LjIgOC4yIDIxLjg4IDkuOCAyMS44OCA5LjggMTguOCIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTQsMjNINGEyLDIsMCwwLDAtMiwydjZhMiwyLDAsMCwwLDIsMkgxNGEyLDIsMCwwLDAsMi0yVjI1QTIsMiwwLDAsMCwxNCwyM1pNNCwzMVYyNUgxNHY2WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMjNIMjJhMiwyLDAsMCwwLTIsMnY2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNUEyLDIsMCwwLDAsMzIsMjNaTTIyLDMxVjI1SDMydjZaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMywxM0gyM2EyLDIsMCwwLDAsMi0yVjVhMiwyLDAsMCwwLTItMkgxM2EyLDIsMCwwLDAtMiwydjZBMiwyLDAsMCwwLDEzLDEzWm0wLThIMjN2NkgxM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI5LjggMTguOCAyNi4yIDE4LjggMjYuMiAyMS44OCAyNy44IDIxLjg4IDI3LjggMTcuMiAxOC44IDE3LjIgMTguOCAxNCAxNy4yIDE0IDE3LjIgMTcuMiA4LjIgMTcuMiA4LjIgMjEuODggOS44IDIx''@;'; put 'put ''Ljg4IDkuOCAxOC44IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMiIgeT0iMjMiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxMCIgcng9IjIiIHJ5PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIzIiB3aWR0aD0iMTQiIGhlaWdodD0iMTAiIHJ4PSIyIiByeT0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIzIiB3aWR0aD0iMTQiIGhlaWdodD0i''@;'; put 'put ''MTAiIHJ4PSIyIiByeT0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz4nKSxMLkNsclNoYXBlQmFsYW5jZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjQsMzNIMTJhMSwxLDAsMCwxLDAtMkgyNGExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNyIgeT0iOSIgd2lkdGg9IjIiIGhlaWdodD0iMjIuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsN0g4QTEs''@;'; put 'put ''MSwwLDAsMSw4LDVIMjhhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LjkzLDI0Ljc5YTcuMjMsNy4yMywwLDAsMS01LjgxLTIuODlsLS42LS44LDEuNTktMS4yMS42LjhhNS4yOCw1''@;'; put 'put ''LjI4LDAsMCwwLDguNDIsMGwuNi0uOCwxLjU5LDEuMjEtLjYuOEE3LjIzLDcuMjMsMCwwLDEsMjYuOTMsMjQuNzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC41MSwxOS4yNWEuOC44LDAsMCwxLS43My0u''@;'; put 'put ''NDhMMjYuOTMsMTIuMmwtMi44NSw2LjU3YS44LjgsMCwwLDEtMS40Ny0uNjRMMjYuMiw5Ljg3YS44My44MywwLDAsMSwxLjQ3LDBsMy41OCw4LjI2YS44LjgsMCwwLDEtLjczLDEuMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik05LjY4LDI0Ljc5QTcuMjMsNy4yMywwLDAsMSwzLjg4LDIxLjlsLS42LS44TDQuODYsMTkuOWwuNi44YTUuMjgsNS4yOCwwLDAsMCw4LjQyLDBsLjYtLjgsMS41OSwxLjIxLS42LjhBNy4yMyw3LjIzLDAsMCwxLDkuNjgsMjQuNzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy4yNiwxOS4yNWEuOC44LDAsMCwxLS43My0uNDhMOS42OCwxMi4yLDYuODQsMTguNzdhLjguOCwwLDAsMS0xLjQ3LS42NEw4Ljk1LDkuODdhLjgzLjgzLDAsMCwxLDEuNDcsMEwxNCwxOC4xM2EuOC44LDAs''@;'; put 'put ''MCwxLS43MywxLjEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+JyksTC5DbHJTaGFwZUlkQmFkZ2U9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDIyYTQuMjMsNC4yMywwLDEsMC00LjIzLTQuMjNBNC4yMyw0LjIzLDAsMCwwLDE4LDIyWm0w''@;'; put 'put ''LTYuODZhMi42MywyLjYzLDAsMSwxLTIuNjMsMi42M0EyLjYzLDIuNjMsMCwwLDEsMTgsMTUuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiw0YTIsMiwwLDAsMC0yLTJIMTZhMiwyLDAsMCwwLTIsMnY3''@;'; put 'put ''aDhaTTIwLDlIMTZWNGg0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzBWMjcuN2ExLjEyLDEuMTIsMCwwLDAtLjI2LS43M0E5LjksOS45LDAsMCwwLDE4LDIzLjY5LDkuOSw5LjksMCwwLDAsMTAuMjYs''@;'; put 'put ''MjdhMS4xMywxLjEzLDAsMCwwLS4yNi43M1YzMGgxLjZWMjcuODdBOC4zMyw4LjMzLDAsMCwxLDE4LDI1LjI5YTguMzMsOC4zMywwLDAsMSw2LjQsMi41OVYzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4''@;'; put 'put ''LDZIMjRWOGg0VjMySDhWOGg0VjZIOEEyLDIsMCwwLDAsNiw4VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwyOCw2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjJh''@;'; put 'put ''NC4yMyw0LjIzLDAsMSwwLTQuMjMtNC4yM0E0LjIzLDQuMjMsMCwwLDAsMTgsMjJabTAtNi44NmEyLjYzLDIuNjMsMCwxLDEtMi42MywyLjYzQTIuNjMsMi42MywwLDAsMSwxOCwxNS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVy''@;'; put 'put ''dGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjI2LDI3YTEuMTMsMS4xMywwLDAsMC0uMjYuNzNWMzBoMS42VjI3Ljg3QTguMzMsOC4zMywwLDAsMSwxOCwyNS4yOWE4LjMzLDguMzMsMCwwLDEsNi40LDIuNTlWMzBIMjZWMjcuN2ExLjEyLDEuMTIsMCwwLDAtLjI2LS43M0E5Ljks''@;'; put 'put ''OS45LDAsMCwwLDE4LDIzLjY5LDkuOSw5LjksMCwwLDAsMTAuMjYsMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSw5Ljg5LDE5LjU2LDlIMTZWNGg0VjguMjRsMi0zLjQ2''@;'; put 'put ''VjRhMiwyLDAsMCwwLTItMkgxNmEyLDIsMCwwLDAtMiwydjdoNC42NEEzLjY2LDMuNjYsMCwwLDEsMTksOS44OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDE1LjRWMzJI''@;'; put 'put ''OFY4aDRWNkg4QTIsMiwwLDAsMCw2LDhWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjE1LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIx''@;'; put 'put ''LjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMmE0LjIzLDQuMjMsMCwxLDAtNC4yMy00LjIzQTQuMjMsNC4yMywwLDAsMCwxOCwyMlptMC02Ljg2YTIuNjMsMi42MywwLDEsMS0yLjYzLDIuNjNBMi42MywyLjYzLDAsMCwxLDE4LDE1LjE0WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDRhMiwyLDAsMCwwLTItMkgxNmEyLDIsMCwwLDAtMiwydjdoOFpNMjAsOUgxNlY0aDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMjYsMjdhMS4xMywxLjEzLDAsMCwwLS4yNi43M1YzMGgxLjZWMjcuODdBOC4zMyw4LjMzLDAsMCwxLDE4LDI1LjI5YTguMzMsOC4zMywwLDAsMSw2LjQsMi41OVYzMEgyNlYyNy43YTEuMTIsMS4xMiww''@;'; put 'put ''LDAsMC0uMjYtLjczQTkuOSw5LjksMCwwLDAsMTgsMjMuNjksOS45LDkuOSwwLDAsMCwxMC4yNiwyN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxMy4yMlYzMkg4VjhoNFY2''@;'; put 'put ''SDhBMiwyLDAsMCwwLDYsOFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTMuNUE3LjQ5LDcuNDksMCwwLDEsMjgsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xl''@;'; put 'put ''IGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE3Ljc3IiByPSI0LjIzIiBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIxLDRhMiwyLDAsMCwwLTItMkgxN2EyLDIsMCwwLDAtMiwydjZoNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMjYsMjdhMS4x''@;'; put 'put ''MywxLjEzLDAsMCwwLS4yNi43M1YzMEgyNlYyNy43YTEuMTIsMS4xMiwwLDAsMC0uMjYtLjczQTkuOSw5LjksMCwwLDAsMTgsMjMuNjksOS45LDkuOSwwLDAsMCwxMC4yNiwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMjgsNkgyM1Y4aDVWMzJIOFY4aDVWNkg4QTIsMiwwLDAsMCw2LDhWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDI4LDZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDku''@;'; put 'put ''ODksMjEsNi41VjRhMiwyLDAsMCwwLTItMkgxN2EyLDIsMCwwLDAtMiwydjZoNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE3Ljc3IiByPSI0LjIzIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjI2LDI3YTEuMTMsMS4xMywwLDAsMC0uMjYuNzNWMzBIMjZWMjcuN2ExLjEyLDEuMTIsMCwwLDAtLjI2LS43M0E5LjksOS45LDAsMCwwLDE4LDIzLjY5''@;'; put 'put ''LDkuOSw5LjksMCwwLDAsMTAuMjYsMjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDE1LjRWMzJIOFY4aDVWNkg4QTIsMiwwLDAsMCw2LDhWMzJhMiwyLDAsMCwwLDIsMkgyOGEy''@;'; put 'put ''LDIsMCwwLDAsMi0yVjE1LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCww''@;'; put 'put ''LDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE3Ljc3''@;'; put 'put ''IiByPSI0LjIzIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMSw0YTIsMiwwLDAsMC0yLTJIMTdhMiwyLDAsMCwwLTIsMnY2aDZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yNiwyN2ExLjEzLDEuMTMsMCwwLDAtLjI2LjczVjMwSDI2VjI3LjdhMS4xMiwxLjEyLDAsMCwwLS4yNi0uNzNBOS45LDkuOSwwLDAsMCwxOCwyMy42OSw5LjksOS45LDAsMCwwLDEwLjI2LDI3WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTMuMjJWMzJIOFY4aDVWNkg4QTIsMiwwLDAsMCw2LDhWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjEzLjVBNy40OSw3LjQ5''@;'; put 'put ''LDAsMCwxLDI4LDEzLjIyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxMLkNsclNoYXBlUmVwZWF0PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNNiwxNC4xNUEzLjE3LDMuMTcsMCwwLDEsOS4xNywxMUgyOC40bC00LjI4LDQuNTRhMSwx''@;'; put 'put ''LDAsMSwwLDEuNDYsMS4zN0wzMi4wOSwxMCwyNS41OCwzLjA5YTEsMSwwLDEsMC0xLjQ2LDEuMzdMMjguNCw5SDkuMTdBNS4xNyw1LjE3LDAsMCwwLDQsMTQuMTV2Ni4xbDItMi4xMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yIiBkPSJNMzAsMjEuODVBMy4xNywzLjE3LDAsMCwxLDI2LjgzLDI1SDcuNmw0LjI4LTQuNTRhMSwxLDAsMSwwLTEuNDYtMS4zN0wzLjkxLDI2bDYuNTEsNi45MWExLDEsMCwxLDAsMS40Ni0xLjM3TDcuNiwyN0gyNi44M0E1LjE3LDUuMTcsMCwwLDAsMzIsMjEuODV2LTYuMWwtMiwyLjEy''@;'; put 'put ''WiIvPicpLEwuQ2xyU2hhcGVGaWxlR3JvdXA9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMSwzNEgxM2ExLDEsMCwwLDEtMS0xVjExYTEsMSwwLDAsMSwxLTFIMzFhMSwxLDAsMCwxLDEsMVYzM0ExLDEsMCww''@;'; put 'put ''LDEsMzEsMzRaTTE0LDMySDMwVjEySDE0WiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHg9IjE2IiB5PSIxNiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIxNiIgeT0iMjAiIHdpZHRoPSIxMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgeD0iMTYiIHk9IjI0IiB3aWR0aD0iMTIiIGhlaWdodD0iMiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIGQ9Ik02LDI0VjRIMjRWM2ExLDEsMCwwLDAtMS0xSDVBMSwxLDAsMCwwLDQsM1YyNWExLDEsMCwwLDAsMSwxSDZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgZD0iTTEwLDI4VjhIMjhWN2ExLDEsMCwwLDAtMS0xSDlBMSwxLDAsMCwwLDgsN1YyOWExLDEsMCwwLDAsMSwxaDFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzEsMTBI''@;'; put 'put ''MTNhMSwxLDAsMCwwLTEsMVYzM2ExLDEsMCwwLDAsMSwxSDMxYTEsMSwwLDAsMCwxLTFWMTFBMSwxLDAsMCwwLDMxLDEwWk0yOCwyNkgxNlYyNEgyOFptMC00SDE2VjIwSDI4Wm0wLTRIMTZWMTZIMjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0yIiBkPSJNNiwyNFY0SDI0VjNhMSwxLDAsMCwwLTEtMUg1QTEsMSwwLDAsMCw0LDNWMjVhMSwxLDAsMCwwLDEsMUg2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTEwLDI4VjhIMjhWN2ExLDEsMCwwLDAt''@;'; put 'put ''MS0xSDlBMSwxLDAsMCwwLDgsN1YyOWExLDEsMCwwLDAsMSwxaDFaIi8+JyksTC5DbHJTaGFwZVBhcGVyY2xpcD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTguNDIsMzIuNkE2LjMsNi4zLDAsMCwxLDQsMzAu''@;'; put 'put ''NzlsLS4xMy0uMTNBNi4yLDYuMiwwLDAsMSwyLDI2LjIyLDYuNzcsNi43NywwLDAsMSw0LDIxLjRMMTkuNSw2LjA3YTguNjcsOC42NywwLDAsMSwxMi4xNS0uMzVBOCw4LDAsMCwxLDM0LDExLjQ0YTksOSwwLDAsMS0yLjcsNi4zNkwxNy4zNywzMS42QTEsMSwwLDEsMSwxNiwzMC4xOEwyOS44''@;'; put 'put ''OSwxNi4zOEE3LDcsMCwwLDAsMzIsMTEuNDRhNiw2LDAsMCwwLTEuNzYtNC4zLDYuNjcsNi42NywwLDAsMC05LjM0LjM1TDUuNDUsMjIuODJBNC43OCw0Ljc4LDAsMCwwLDQsMjYuMjJhNC4yMSw0LjIxLDAsMCwwLDEuMjQsM2wuMTMuMTNhNC42NCw0LjY0LDAsMCwwLDYuNS0uMjFMMjUuMjIs''@;'; put 'put ''MTUuOTRBMi43LDIuNywwLDAsMCwyNiwxNGEyLjM1LDIuMzUsMCwwLDAtLjY5LTEuNjgsMi42MSwyLjYxLDAsMCwwLTMuNjYuMTNsLTkuMiw5LjEyYTEsMSwwLDEsMS0xLjQxLTEuNDJMMjAuMjgsMTFhNC42Miw0LjYyLDAsMCwxLDYuNDgtLjEzQTQuMzMsNC4zMywwLDAsMSwyOCwxNGE0LjY4''@;'; put 'put ''LDQuNjgsMCwwLDEtMS40MSwzLjM0TDEzLjI4LDMwLjU4QTYuOTEsNi45MSwwLDAsMSw4LjQyLDMyLjZaIi8+JyksTC5DbHJTaGFwZVNocmluaz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDE1SDIyLjQx''@;'; put 'put ''bDkuMjUtOS4yNWExLDEsMCwwLDAtMS40MS0xLjQxTDIxLDEzLjU5VjRhMSwxLDAsMCwwLTIsMFYxN0gzMmExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik00LDE5YTEsMSwwLDAsMCwwLDJo''@;'; put 'put ''OS41OUw0LjMzLDMwLjI1YTEsMSwwLDEsMCwxLjQxLDEuNDFMMTUsMjIuNDFWMzJhMSwxLDAsMCwwLDIsMFYxOVoiLz4nKSxMLkNsclNoYXBlQWNjZXNzaWJpbGl0eTE9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE0LjQ0LDMxLjk0YTcuMzEsNy4zMSwwLDAsMS01LjctMTEuODhMNy4z''@;'; put 'put ''MiwxOC42NGE5LjMsOS4zLDAsMCwwLDEzLjEsMTMuMTFMMTksMzAuMzNBNy4yOSw3LjI5LDAsMCwxLDE0LjQ0LDMxLjk0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjUuMzYsMS42N2E0LjEyLDQuMTIsMCwx''@;'; put 'put ''LDAsNC4xMSw0LjExQTQuMTIsNC4xMiwwLDAsMCwyNS4zNiwxLjY3Wm0wLDYuMjNhMi4xMiwyLjEyLDAsMSwxLDIuMTEtMi4xMkEyLjEyLDIuMTIsMCwwLDEsMjUuMzYsNy45WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMjYuNTYsMTguMThoLTVhMSwxLDAsMCwwLS4yNC4wNWwzLjA5LTMuNTVhMi44MywyLjgzLDAsMCwwLS42OS00LjMzbC04LTQuNmExLDEsMCwwLDAtMS4xMi4wOEw5LjgzLDkuNThBMSwxLDAsMCwwLDkuNjYsMTFhMSwxLDAsMCwwLC43OS4zOCwxLDEsMCwwLDAsLjYxLS4yMWw0LjI3''@;'; put 'put ''LTMuMzQsMy4xMSwxLjc3LTUuMDgsNS43OGgwYTkuMjgsOS4yOCwwLDAsMC00LjUzLDEuODNsMS40MywxLjQzQTcuMyw3LjMsMCwwLDEsMjAuNDIsMjguODFsMS40MiwxLjQzYTkuMjcsOS4yNywwLDAsMCwuNzctMTAuMDZoMi44MmwtLjc3LDYuNTFhMSwxLDAsMCwwLC44OCwxLjExaC4xMmEx''@;'; put 'put ''LDEsMCwwLDAsMS0uODhsLjktNy42MmExLDEsMCwwLDAtLjI1LS43OEExLDEsMCwwLDAsMjYuNTYsMTguMThabS02LjM3LTcuNTYsMi41MiwxLjQ2YS43OS43OSwwLDAsMSwuNC41OS44MS44MSwwLDAsMS0uMi42OUwxOS43NSwxN0E5LjE3LDkuMTcsMCwwLDAsMTYsMTUuNDVaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC43NywzMS45NGE3LjMxLDcuMzEsMCwwLDEtNS43LTExLjg4TDcuNjUsMTguNjRhOS4zLDkuMywwLDAsMCwxMy4xLDEzLjExbC0xLjQyLTEuNDJBNy4yOSw3LjI5LDAsMCwxLDE0''@;'; put 'put ''Ljc3LDMxLjk0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi42NSwyLjFhMy4xMiwzLjEyLDAsMSwwLDMuMTEsMy4xMkEzLjEyLDMuMTIsMCwwLDAsMjYuNjUsMi4xWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44MSwxOC4xOEgyMS40N3EtLjMxLS4zMy0uNjYtLjYzbDQuMzgtNC44NmEyLjE0LDIuMTQsMCwwLDAtLjUzLTMuMjdMMjAuOSw3LjIzbDAsMEwxNy4wNSw1LjA3YTEsMSwwLDAsMC0xLjExLjA4TDExLjE1LDguOWEx''@;'; put 'put ''LDEsMCwwLDAsMS4yMywxLjU4bDQuMjctMy4zNCwyLjg3LDEuNjNMMTMuNiwxNS4zOWE5LjMzLDkuMzMsMCwwLDAtNC40NCwxLjgybDEuNDIsMS40M0E3LjMsNy4zLDAsMCwxLDIwLjc1LDI4LjgxbDEuNDMsMS40M0E5LjI3LDkuMjcsMCwwLDAsMjMsMjAuMThoMi43NGwtLjc3LDYuNTFhMSwx''@;'; put 'put ''LDAsMCwwLC44NywxLjExaC4xMmExLDEsMCwwLDAsMS0uODhsLjktNy42MmExLDEsMCwwLDAtLjI1LS43OEExLDEsMCwwLDAsMjYuODEsMTguMThaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLEwuQ2xyU2hhcGVBY2Nlc3NpYmlsaXR5Mj0oMCxFLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMzAuMDYsMTFoLTI0YTEsMSwwLDEsMCwwLDJIMTR2OS42NXMwLDAsMCwwbC0zLjc1LDEwYTEsMSwwLDAsMCwuNTgsMS4yOSwxLjEzLDEuMTMsMCwwLDAsLjM2LjA2LDEsMSwwLDAsMCwuOTMtLjY1TDE1LjYyLDI0aDQuNzZsMy41Miw5LjM1YTEsMSwwLDAsMCwu''@;'; put 'put ''OTMuNjUsMS4xMywxLjEzLDAsMCwwLC4zNi0uMDYsMSwxLDAsMCwwLC41OC0xLjI5TDIyLDIyLjY4czAsMCwwLDBWMTNoOC4wNmExLDEsMCwxLDAsMC0yWk0yMCwyMkgxNlYxM2g0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMTgsMTBhNCw0LDAsMSwwLTQtNEE0LDQsMCwwLDAsMTgsMTBabTAtNmEyLDIsMCwxLDEtMiwyQTIsMiwwLDAsMSwxOCw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxNy45NiIgY3k9IjUi''@;'; put 'put ''IHI9IjMiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTBINmExLDEsMCwwLDAsMCwyaDh2OC4zNnMwLDAsMCwwTDEwLjExLDMzLjE3YTEsMSwwLDAsMCwuNjYsMS4yNSwxLjU1LDEuNTUsMCwwLDAsLjI5LDAsMSwx''@;'; put 'put ''LDAsMCwwLDEtLjcxbDMuMjktMTAuODRoNS4zOEwyNCwzMy43NWExLDEsMCwwLDAsMSwuNzEsMS41NSwxLjU1LDAsMCwwLC4yOSwwLDEsMSwwLDAsMCwuNjYtMS4yNUwyMiwyMC40czAsMCwwLDBWMTJoOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMiIgLz4nKSxMLkNsclNoYXBlU29ydEJ5PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOC41NCwxM0g3LjQ2YTEsMSwwLDAsMSwwLTJIMjguNTRhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTIxLjE3LDE5SDcuNDZhMSwxLDAsMCwxLDAtMkgyMS4xN2ExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNzQsMjVINy40NmExLDEsMCwwLDEsMC0yaDYuMjhhMSwx''@;'; put 'put ''LDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLEwuQ2xyU2hhcGVDb2xsYXBzZUNhcmQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLDIxSDNhMSwxLDAsMCwwLTEsMXY2YTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEt''@;'; put 'put ''MVYyMkExLDEsMCwwLDAsMzMsMjFabS0xLDZINFYyM0gzMloiICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIwLjIybDUuNjUtNS42NWEuODEuODEsMCwwLDAsMC0xLjE0LjguOCwwLDAsMC0xLjEzLDBMMTgs''@;'; put 'put ''MThsLTQuNTItNC41MmEuOC44LDAsMCwwLTEuMTMsMCwuODEuODEsMCwwLDAsMCwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTQuMjJsNS42NS01LjY1YS44MS44MSwwLDAsMCwwLTEuMTQuOC44''@;'; put 'put ''LDAsMCwwLTEuMTMsMEwxOCwxMiwxMy40OCw3LjQzYS44LjgsMCwwLDAtMS4xMywwLC44MS44MSwwLDAsMCwwLDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIiIHk9IjIyIiB3aWR0aD0iMzIiIGhlaWdo''@;'; put 'put ''dD0iOCIgcng9IjEiIHJ5PSIxIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIwLjdsLTUuNzktNS43OWExLDEsMCwwLDEsMC0xLjQxLDEsMSwwLDAsMSwxLjQxLDBMMTgsMTcuODdsNC4zOC00LjM3YTEsMSwwLDAs''@;'; put 'put ''MSwxLjQxLDAsMSwxLDAsMCwxLDAsMS40MVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTQuNSwxMi4yMSw4LjcxYTEsMSwwLDAsMSwwLTEuNDIsMSwxLDAsMCwxLDEuNDEsMEwxOCwxMS42N2w0LjM4LTQuMzhh''@;'; put 'put ''MSwxLDAsMCwxLDEuNDEsMCwxLDEsMCwwLDEsMCwxLjQyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxMLkNsclNoYXBlRXhwYW5kQ2FyZD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMsNkgzQTEsMSwwLDAsMCwyLDdWMjlhMSwxLDAsMCwwLDEs''@;'; put 'put ''MUgzM2ExLDEsMCwwLDAsMS0xVjdBMSwxLDAsMCwwLDMzLDZaTTMyLDI4SDRWOEgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNDgsMTUuODYsMTgsMTEuMzRsNC41Miw0LjUyYS43Ny43NywwLDAsMCwu''@;'; put 'put ''NTYuMjQuODEuODEsMCwwLDAsLjU3LTEuMzdMMTgsOS4wOGwtNS42NSw1LjY1YS44LjgsMCwxLDAsMS4xMywxLjEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy40OCwyMS44NiwxOCwxNy4zNGw0LjUyLDQu''@;'; put 'put ''NTJhLjc3Ljc3LDAsMCwwLC41Ni4yNC44MS44MSwwLDAsMCwuNTctMS4zN0wxOCwxNS4wOGwtNS42NSw1LjY1YS44LjgsMCwxLDAsMS4xMywxLjEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMyw2SDNBMSwx''@;'; put 'put ''LDAsMCwwLDIsN1YyOWExLDEsMCwwLDAsMSwxSDMzYTEsMSwwLDAsMCwxLTFWN0ExLDEsMCwwLDAsMzMsNlpNMjMuNzksMjEuNDFhMSwxLDAsMCwxLTEuNDEsMEwxOCwxN2wtNC4zOCw0LjM4YTEsMSwwLDAsMS0xLjQxLDAsMSwxLDAsMCwxLDAtMS40MkwxOCwxNC4yLDIzLjc5LDIwQTEsMSww''@;'; put 'put ''LDAsMSwyMy43OSwyMS40MVptMC02LjJhMSwxLDAsMCwxLTEuNDEsMEwxOCwxMC44M2wtNC4zOCw0LjM4YTEsMSwwLDAsMS0xLjQxLDAsMSwxLDAsMCwxLDAtMS40MkwxOCw4bDUuNzksNS43OUExLDEsMCwwLDEsMjMuNzksMTUuMjFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0xIiAvPicpLEwuQ2xyU2hhcGVCcmllZmNhc2U9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDI4YTAsMCwwLDAsMSwwLDBINFYyMS4zMmE3LjEsNy4xLDAsMCwxLTItMS40M1YyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTkuODlhNi43NCw2Ljc0LDAsMCwx''@;'; put 'put ''LTIsMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTI1LDIyLjRhMSwxLDAsMCwwLDEtMVYxNS45NEgyNFYxOEgxNHYySDI0djEuNEExLDEsMCwwLDAsMjUsMjIuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yIiAvPlxuPHBhdGggZD0iTTMzLDZIMjRWNC4zOEEyLjQyLDIuNDIsMCwwLDAsMjEuNTUsMmgtNy4xQTIuNDIsMi40MiwwLDAsMCwxMiw0LjM4VjZIM0ExLDEsMCwwLDAsMiw3djhhNSw1LDAsMCwwLDUsNWgzdjEuNGExLDEsMCwwLDAsMiwwVjE1Ljk0SDEwVjE4SDdhMywzLDAs''@;'; put 'put ''MCwxLTMtM1Y4SDMydjdhMywzLDAsMCwxLTMsM0gyOHYyaDFhNSw1LDAsMCwwLDUtNVY3QTEsMSwwLDAsMCwzMyw2Wk0yMiw2SDE0VjQuNDNBLjQ1LjQ1LDAsMCwxLDE0LjQ1LDRoNy4xMWEuNDMuNDMsMCwwLDEsLjQ0LjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTMiIC8+XG48cGF0aCBkPSJNMzAsMThBNC4wNiw0LjA2LDAsMCwwLDM0LDE0VjZIMjRWNC40M0EyLjQ0LDIuNDQsMCwwLDAsMjEuNTUsMmgtNy4xQTIuNDQsMi40NCwwLDAsMCwxMiw0LjQzVjZIMnY4QTQuMDYsNC4wNiwwLDAsMCw2LjA1LDE4aDRWMTUuOTJoMnY1LjdhMSwxLDAsMSwx''@;'; put 'put ''LTIsMFYyMC4wNkg2LjA2QTYuMDYsNi4wNiwwLDAsMSwyLDE4LjQ5djkuNDVhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE4LjQ5YTYsNiwwLDAsMS00LjA2LDEuNTdIMjhWMThaTTE0LDQuNDNBLjQ1LjQ1LDAsMCwxLDE0LjQ1LDRoNy4xYS40NS40NSwwLDAsMSwuNDUuNDNWNkgx''@;'; put 'put ''NFpNMjYsMjEuNjJhMSwxLDAsMSwxLTIsMFYyMC4wNkgxNFYxOEgyNFYxNS45MmgyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlQ29sb3JQaWNrZXI9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLDEwLjA1YTUuMDcsNS4wNyww''@;'; put 'put ''LDAsMCwuMS03LjE3QTUuMDYsNS4wNiwwLDAsMCwyNiwzTDIwLjc4LDguMTVhMi4xMywyLjEzLDAsMCwxLTMsMGwtLjY3LS42N0wxNS43Miw4LjkyLDI3LjA4LDIwLjI4bDEuNDItMS40Mi0uNjctLjY3YTIuMTMsMi4xMywwLDAsMSwwLTNaTTI2LjQ0LDEzLjhhNC4wNyw0LjA3LDAsMCwwLTEu''@;'; put 'put ''MDgsMS45MmwtNS4wOC01LjA4QTQuMDcsNC4wNywwLDAsMCwyMi4yLDkuNTZsNS4xNi01LjE3YTMuMDksMy4wOSwwLDAsMSw0LjM1LS4xLDMuMDksMy4wOSwwLDAsMS0uMSw0LjM1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG48cGF0aCBkPSJNNy4z''@;'; put 'put ''LDMxLjUxYTIsMiwwLDEsMS0yLjgzLTIuODNMMTguNTgsMTQuNTdsLTEuNDItMS40MUwzLjA1LDI3LjI3YTQsNCwwLDAsMC0uNjgsNC44TC44OSwzMy41NUExLDEsMCwwLDAsLjg5LDM1YTEsMSwwLDAsMCwxLjQyLDBsMS40My0xLjQ0YTMuOTMsMy45MywwLDAsMCwyLjA5LjYsNC4wNiw0LjA2''@;'; put 'put ''LDAsMCwwLDIuODgtMS4yTDIyLjgyLDE4LjgxLDIxLjQxLDE3LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbjxwYXRoIGQ9Ik0zMy43MywyLjExYTQuMDksNC4wOSwwLDAsMC01Ljc2LjFMMjIuODEsNy4zOGEzLjEzLDMuMTMsMCwwLDEtNC4zLjEx''@;'; put 'put ''TDE3LjA5LDguOTEsMjcsMTguNzlsMS40Mi0xLjQyQTMuMTgsMy4xOCwwLDAsMSwyOC40NiwxM2w1LjE3LTUuMTdBNC4wOCw0LjA4LDAsMCwwLDMzLjczLDIuMTFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTIyLjE4LDE2Ljc5LDcuNDYs''@;'; put 'put ''MzEuNTFhMiwyLDAsMSwxLTIuODItMi44M0wxOS4zNSwxNGwtMS40MS0xLjQxTDMuMjIsMjcuMjdhNCw0LDAsMCwwLS42OCw0LjhMMS4wNiwzMy41NWExLDEsMCwwLDAsMCwxLjQxLDEsMSwwLDAsMCwxLjQxLDBsMS40NC0xLjQ0YTMuOTMsMy45MywwLDAsMCwyLjA5LjYsNC4wNiw0LjA2LDAs''@;'; put 'put ''MCwwLDIuODgtMS4yTDIzLjYsMTguMjFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVDb3B5VG9DbGlwYm9hcmQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIyLjYsNEgyMS41NWEzLjg5LDMuODksMCwwLDAtNy4zMSwwSDEzLjRB''@;'; put 'put ''Mi40MSwyLjQxLDAsMCwwLDExLDYuNFYxMEgyNVY2LjRBMi40MSwyLjQxLDAsMCwwLDIyLjYsNFpNMjMsOEgxM1Y2LjI1QS4yNS4yNSwwLDAsMSwxMy4yNSw2aDIuNjlsLjEyLTEuMTFBMS4yNCwxLjI0LDAsMCwxLDE2LjYxLDRhMiwyLDAsMCwxLDMuMTUsMS4xOGwuMDkuODRoMi45YS4yNS4y''@;'; put 'put ''NSwwLDAsMSwuMjUuMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0zMy4yNSwxOC4wNkgyMS4zM2wyLjg0LTIuODNhMSwxLDAsMSwwLTEuNDItMS40MkwxNy41LDE5LjA2bDUuMjUsNS4yNWExLDEsMCwwLDAsLjcxLjI5LDEsMSww''@;'; put 'put ''LDAsMCwuNzEtMS43bC0yLjg0LTIuODRIMzMuMjVhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuPHBhdGggZD0iTTI5LDE2aDJWNi42OEExLjY2LDEuNjYsMCwwLDAsMjkuMzUsNUgyNy4wOFY3SDI5WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG48cGF0aCBkPSJNMjksMzFIN1Y3SDlWNUg2LjY0QTEuNjYsMS42NiwwLDAsMCw1LDYuNjdWMzEuMzJBMS42NiwxLjY2LDAsMCwwLDYuNjUsMzNIMjkuMzZBMS42NiwxLjY2LDAsMCwwLDMxLDMxLjMzVjIyLjA2SDI5WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+JyksTC5DbHJTaGFwZURyYWdIYW5kbGU9KDAsRS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjeD0iMTUiIGN5PSIxMiIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48Y2lyY2xl''@;'; put 'put ''IGN4PSIxNSIgY3k9IjI0IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxjaXJjbGUgY3g9IjIxIiBjeT0iMTIiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PGNpcmNsZSBjeD0iMjEiIGN5''@;'; put 'put ''PSIyNCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48Y2lyY2xlIGN4PSIyMSIgY3k9IjE4IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxjaXJjbGUgY3g9IjE1IiBjeT0iMTgiIHI9IjEu''@;'; put 'put ''NSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksTC5DbHJTaGFwZUZpbHRlcjI9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLDExSDNhMSwxLDAsMCwwLDAsMkgzM2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEiIC8+XG48cGF0aCBkPSJNMjgsMTdIOGExLDEsMCwwLDAsMCwySDI4YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbjxwYXRoIGQ9Ik0yMywyM0gxM2ExLDEsMCwwLDAsMCwySDIzYTEsMSwwLDAsMCww''@;'; put 'put ''LTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxMLkNsclNoYXBlTW9vbj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEsMjcuMTlhMSwxLDAsMCwwLTEtLjU2Yy0uMjgsMC0uNTYsMC0uODUsMEExMSwxMSwwLDAsMSwyNC45Miw1LjYxYTEs''@;'; put 'put ''MSwwLDAsMCwuNjEtMSwxLDEsMCwwLDAtLjY3LS45MSwxNC43LDE0LjcsMCwwLDAtNS0uODcsMTUuMTIsMTUuMTIsMCwwLDAsMCwzMC4yNCwxNC43OCwxNC43OCwwLDAsMCwxMS00LjgxQTEsMSwwLDAsMCwzMSwyNy4xOVpNMTkuODksMzEuMTJhMTMuMTIsMTMuMTIsMCwwLDEsMC0yNi4yNCwx''@;'; put 'put ''MS44MSwxMS44MSwwLDAsMSwyLC4xNiwxMywxMywwLDAsMCw1LjcyLDIzLjUzQTEyLjc1LDEyLjc1LDAsMCwxLDE5Ljg5LDMxLjEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG48cGF0aCBkPSJNMjkuMiwyNi43MkExMi4wNywxMi4wNywwLDAsMSwy''@;'; put 'put ''Mi45LDQuNDQsMTMuNjgsMTMuNjgsMCwwLDAsMTkuNDksNGExNCwxNCwwLDAsMCwwLDI4LDEzLjgyLDEzLjgyLDAsMCwwLDEwLjktNS4zNEExMS43MSwxMS43MSwwLDAsMSwyOS4yLDI2LjcyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBl''@;'; put 'put ''U3VuPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCw2LjMxYTEsMSwwLDAsMCwxLTFWMS45MWExLDEsMCwwLDAtMiwwdjMuNEExLDEsMCwwLDAsMTgsNi4zMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTE4LDI5LjY5YTEs''@;'; put 'put ''MSwwLDAsMC0xLDF2My40YTEsMSwwLDAsMCwyLDB2LTMuNEExLDEsMCwwLDAsMTgsMjkuNjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbjxwYXRoIGQ9Ik04LjMyLDkuNzRBMSwxLDAsMCwwLDksMTBhMSwxLDAsMCwwLC43MS0uMjksMSwxLDAsMCww''@;'; put 'put ''LDAtMS40Mkw3LjMzLDUuOTJBMSwxLDAsMCwwLDUuOTIsNy4zM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNy42OCwyNi4yNmExLDEsMCwxLDAtMS40MiwxLjQybDIuNDEsMi40YTEsMSwwLDAsMCwuNzEuMywxLDEsMCwwLDAsLjct''@;'; put 'put ''LjMsMSwxLDAsMCwwLDAtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik02LjMxLDE4YTEsMSwwLDAsMC0xLTFIMS45MWExLDEsMCwwLDAsMCwyaDMuNEExLDEsMCwwLDAsNi4zMSwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zNC4wOSwxN2gtMy40YTEsMSwwLDEsMCwwLDJoMy40YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48cGF0aCBkPSJNOC4zMiwyNi4yNmwtMi40LDIuNDFhMSwxLDAsMCww''@;'; put 'put ''LC43LDEuNzEsMSwxLDAsMCwwLC43MS0uM2wyLjQxLTIuNGExLDEsMCwxLDAtMS40Mi0xLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+PHBhdGggZD0iTTI3LDEwYTEsMSwwLDAsMCwuNzEtLjI5bDIuNC0yLjQxYTEsMSwwLDAsMCwwLTEuNDEsMSwx''@;'; put 'put ''LDAsMCwwLTEuNDEsMGwtMi40MSwyLjRhMSwxLDAsMCwwLDAsMS40MkExLDEsMCwwLDAsMjcsMTBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgLz48cGF0aCBkPSJNMTguMTMsNy43NWExMC4xMywxMC4xMywwLDEsMCwxMCwxMC4xM0ExMC4wOCwxMC4wOCww''@;'; put 'put ''LDAsMCwxOC4xMyw3Ljc1Wm0wLDE4LjI1YTguMTMsOC4xMywwLDEsMSw4LTguMTJBOC4wOCw4LjA4LDAsMCwxLDE4LjEzLDI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiIC8+PHBhdGggZD0iTTE4LDYuNDJhMSwxLDAsMCwwLDEtMVYxLjkxYTEsMSwwLDAs''@;'; put 'put ''MC0yLDBWNS40MkExLDEsMCwwLDAsMTgsNi40MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDI5LjU4YTEsMSwwLDAsMC0xLDF2My41MWExLDEsMCwwLDAsMiwwVjMwLjU4QTEsMSwwLDAsMCwxOCwyOS41OFoiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTguNCw5LjgxQTEsMSwwLDAsMCw5LjgxLDguNEw3LjMzLDUuOTJBMSwxLDAsMCwwLDUuOTIsNy4zM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTI3LjYsMjYuMTlhMSwxLDAs''@;'; put 'put ''MCwwLTEuNDEsMS40MWwyLjQ4LDIuNDhhMSwxLDAsMCwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+PHBhdGggZD0iTTYuNDIsMThhMSwxLDAsMCwwLTEtMUgxLjkxYTEsMSwwLDAsMCwwLDJINS40MkExLDEsMCwwLDAsNi40MiwxOFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIC8+PHBhdGggZD0iTTM0LjA5LDE3SDMwLjU4YTEsMSwwLDAsMCwwLDJoMy41MWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNiIgLz48cGF0aCBkPSJNOC40LDI2LjE5LDUuOTIs''@;'; put 'put ''MjguNjdhMSwxLDAsMCwwLDEuNDEsMS40MUw5LjgxLDI3LjZBMSwxLDAsMCwwLDguNCwyNi4xOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTciIC8+PHBhdGggZD0iTTI3LjYsOS44MWwyLjQ4LTIuNDhhMSwxLDAsMCwwLTEuNDEtMS40MUwyNi4xOSw4LjRBMSwxLDAs''@;'; put 'put ''MCwwLDI3LjYsOS44MVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTgiIC8+PGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMTAiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTkiIC8+JyksTC5DbHJTaGFwZVdhbmQ9KDAsRS5jbHJJY29uU1ZHKSgn''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNC4xLDQsMzEuNzEsMS42YTEuODMsMS44MywwLDAsMC0xLjMxLS41NGgwYTIuMDUsMi4wNSwwLDAsMC0xLjQ1LjYyTDEuNzYsMjkuMjNBMiwyLDAsMCwwLDEuNjgsMzJsMi40LDIuNDNBMS44Mywx''@;'; put 'put ''LjgzLDAsMCwwLDUuMzksMzVoMGEyLjA1LDIuMDUsMCwwLDAsMS40NS0uNjJMMzQsNi43OUEyLDIsMCwwLDAsMzQuMSw0Wk01LjQyLDMyLjkzLDMuMTYsMzAuNjVoMEwyNC4xMSw5LjQzbDIuMjUsMi4yOFpNMzIuNjEsNS4zOWwtNS4xMiw1LjE4TDI1LjI0LDguMjlsNS4xMy01LjIsMi4yNSwy''@;'; put 'put ''LjI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMi41MywyMC40N2wyLjA5LTIuMDlhLjguOCwwLDAsMC0xLjEzLTEuMTNsLTIuMDksMi4wOS0yLjA5LTIuMDlhLjguOCwwLDAsMC0xLjEzLDEuMTNsMi4wOSwy''@;'; put 'put ''LjA5LTIuMDksMi4wOWEuOC44LDAsMCwwLDEuMTMsMS4xM2wyLjA5LTIuMDksMi4wOSwyLjA5YS44LjgsMCwwLDAsMS4xMy0xLjEzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xNC43OCw2LjUxYS44LjgsMCww''@;'; put 'put ''LDAsMS4xMywwTDE3LjQsNWwxLjQ5LDEuNDlBLjguOCwwLDAsMCwyMCw1LjM4TDE4LjU0LDMuODksMjAsMi40YS44LjgsMCwwLDAtMS4xMy0xLjEzTDE3LjQsMi43NiwxNS45MSwxLjI3QS44LjgsMCwxLDAsMTQuNzgsMi40bDEuNDksMS40OUwxNC43OCw1LjM4QS44LjgsMCwwLDAsMTQuNzgs''@;'; put 'put ''Ni41MVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNOC4zMywxNS4yNmEuOC44LDAsMCwwLDEuMTMsMGwxLjE2LTEuMTYsMS4xNiwxLjE2YS44LjgsMCwxLDAsMS4xMy0xLjEzTDExLjc2LDEzbDEuMTYtMS4xNmEu''@;'; put 'put ''OC44LDAsMSwwLTEuMTMtMS4xM2wtMS4xNiwxLjE2TDkuNDYsMTAuNjhhLjguOCwwLDEsMC0xLjEzLDEuMTNMOS40OSwxMyw4LjMzLDE0LjEzQS44LjgsMCwwLDAsOC4zMywxNS4yNloiLz4nKSxMLkNsclNoYXBlQ3Vyc29yTW92ZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjguODUs''@;'; put 'put ''MTIuODlhMSwxLDAsMCwwLTEuNDIsMCwxLDEsMCwwLDAsMCwxLjQxTDMwLjE0LDE3SDE5VjUuODZsMi42OSwyLjdhMSwxLDAsMCwwLDEuNDEsMCwxLDEsMCwwLDAsMC0xLjQyTDE4LDIsMTIuODksNy4xNWExLDEsMCwwLDAtLjI5LjcxLDEsMSwwLDAsMCwxLjcxLjdMMTcsNS44NlYxN0g1Ljg2''@;'; put 'put ''bDIuNy0yLjY5YTEsMSwwLDAsMCwwLTEuNDEsMSwxLDAsMCwwLTEuNDIsMEwyLDE4bDUuMTQsNS4xMWExLDEsMCwwLDAsLjcxLjI5LDEsMSwwLDAsMCwuNy0xLjcxTDUuODYsMTlIMTdWMzAuMTRsLTIuNjktMi43YTEsMSwwLDAsMC0xLjcxLjcsMSwxLDAsMCwwLC4yOS43MUwxOCwzNGw1LjEx''@;'; put 'put ''LTUuMTRhMSwxLDAsMCwwLDAtMS40MiwxLDEsMCwwLDAtMS40MSwwTDE5LDMwLjE0VjE5SDMwLjE0bC0yLjcsMi42OWExLDEsMCwwLDAsLjcsMS43MSwxLDEsMCwwLDAsLjcxLS4yOUwzNCwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLEwuQ2xy''@;'; put 'put ''U2hhcGVDbG9uZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNiw2SDIydjRoMlY2YTIsMiwwLDAsMC0yLTJINkEyLDIsMCwwLDAsNCw2VjIyYTIsMiwwLDAsMCwyLDJoNFYyMkg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMw''@;'; put 'put ''LDEySDE0YTIsMiwwLDAsMC0yLDJWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE0QTIsMiwwLDAsMCwzMCwxMlptMCwxOEgxNFYxNEgzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwb2x5Z29uIHBvaW50cz0iMjEgMjggMjMgMjgg''@;'; put 'put ''MjMgMjMgMjggMjMgMjggMjEgMjMgMjEgMjMgMTYgMjEgMTYgMjEgMjEgMTYgMjEgMTYgMjMgMjEgMjMgMjEgMjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNCwxMFY2YTIsMiwwLDAsMC0yLTJINkEyLDIsMCwwLDAsNCw2VjIyYTIs''@;'; put 'put ''MiwwLDAsMCwyLDJoNFYxMmEyLDIsMCwwLDEsMi0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzAsMTJIMTRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTRBMiwyLDAsMCwwLDMwLDEyWk0yOCwy''@;'; put 'put ''M0gyM3Y1SDIxVjIzSDE2VjIxaDVWMTZoMnY1aDVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVEZXRhaWxzPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlptMCwyMkg0VjhIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOSwxNEgyN2ExLDEsMCwwLDAsMC0ySDlhMSwxLDAsMCwwLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik05LDE4SDI3YTEsMSwwLDAsMCwwLTJIOWExLDEsMCwwLDAsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTksMjJIMTlhMSwxLDAsMCwwLDAtMkg5YTEsMSwwLDAsMCwwLDJaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTE5LDIySDlhMSwxLDAsMCwxLDAtMkgxOWExLDEsMCwwLDEsMCwy''@;'; put 'put ''Wm04LTRIOWExLDEsMCwwLDEsMC0ySDI3YTEsMSwwLDAsMSwwLDJabTAtNEg5YTEsMSwwLDAsMSwwLTJIMjdhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZURyYWdIYW5kbGVDb3JuZXI9KDAsRS5jbHJJY29uU1ZH''@;'; put 'put ''KSgnPGNpcmNsZSBjeD0iMTIiIGN5PSIyNCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48Y2lyY2xlIGN4PSIxOCIgY3k9IjI0IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxjaXJjbGUg''@;'; put 'put ''Y3g9IjE4IiBjeT0iMTgiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PGNpcmNsZSBjeD0iMjQiIGN5PSIxMiIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48Y2lyY2xlIGN4PSIyNCIgY3k9''@;'; put 'put ''IjI0IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxjaXJjbGUgY3g9IjI0IiBjeT0iMTgiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksTC5DbHJTaGFwZUVyYXNlcj0oMCxFLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMzUuNjIsMTJhMi44MiwyLjgyLDAsMCwwLS44NC0yTDI3LjQ5LDIuNjVhMi45LDIuOSwwLDAsMC00LDBMMi44MywyMy4yOGEyLjg0LDIuODQsMCwwLDAsMCw0TDcuNTMsMzJIM2ExLDEsMCwwLDAsMCwySDI4YTEsMSwwLDAsMCwwLTJIMTYuNzRsMTgtMThBMi44''@;'; put 'put ''MiwyLjgyLDAsMCwwLDM1LjYyLDEyWk0xMy45MSwzMkgxMC4zNkw0LjI1LDI1Ljg5YS44NC44NCwwLDAsMSwwLTEuMTlsNS41MS01LjUyLDguNDksOC40OFpNMzMuMzcsMTIuNTQsMTkuNjYsMjYuMjVsLTguNDgtOC40OSwxMy43LTEzLjdhLjg2Ljg2LDAsMCwxLDEuMTksMGw3LjMsNy4yOWEu''@;'; put 'put ''ODYuODYsMCwwLDEsLjI1LjZBLjgyLjgyLDAsMCwxLDMzLjM3LDEyLjU0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI4LDMySDE1LjMzTDE5LDI4LjM3bC05LjktOS45TDMuNTQsMjRhMS44MywxLjgzLDAsMCwwLDAsMi42TDksMzJI''@;'; put 'put ''M2ExLDEsMCwwLDAsMCwySDI4YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zNC4wOCwxMC42NWwtNy4zLTcuM2ExLjgzLDEuODMsMCwwLDAtMi42LDBMMTAuNDcsMTcuMDZsOS45LDkuOUwzNC4wOCwxMy4yNUExLjg1''@;'; put 'put ''LDEuODUsMCwwLDAsMzQuMDgsMTAuNjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVMYW5kc2NhcGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAs''@;'; put 'put ''MCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wm0wLDIySDRWOEgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik05LDIyYS44Mi44MiwwLDAsMCwuNTUtLjIxLjguOCwwLDAsMCwwLTEuMTNMNy44MywxOC44SDI4LjE3bC0xLjcyLDEuODZh''@;'; put 'put ''LjguOCwwLDAsMCwwLDEuMTNBLjgyLjgyLDAsMCwwLDI3LDIyYS43OC43OCwwLDAsMCwuNTgtLjI2TDMxLjA5LDE4bC0zLjQ3LTMuNzRhLjc5Ljc5LDAsMCwwLTEuMTMsMCwuOC44LDAsMCwwLDAsMS4xM2wxLjcyLDEuODZINy44M2wxLjcyLTEuODZhLjguOCwwLDAsMCwwLTEuMTMuNzkuNzks''@;'; put 'put ''MCwwLDAtMS4xMywwTDQuOTEsMThsMy40NywzLjc0QS43OC43OCwwLDAsMCw5LDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIs''@;'; put 'put ''MiwwLDAsMCwzMiw2Wk0yNy43NywyMS44OGExLDEsMCwwLDEtLjczLjMyLDEsMSwwLDAsMS0uNjgtLjI3LDEsMSwwLDAsMS0uMDYtMS40MUwyNy43MSwxOUg4LjI5TDkuNywyMC41MmExLDEsMCwwLDEtLjA2LDEuNDFBMSwxLDAsMCwxLDksMjIuMmExLDEsMCwwLDEtLjczLS4zMkw0LjY0LDE4''@;'; put 'put ''bDMuNTktMy44OEExLDEsMCwwLDEsOS43LDE1LjQ4TDguMjksMTdIMjcuNzFMMjYuMywxNS40OGExLDEsMCwwLDEsMS40Ny0xLjM2TDMxLjM2LDE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlUGFzdGU9KDAsRS5jbHJJY29uU1ZHKSgn''@;'; put 'put ''PHBhdGggZD0iTTMwLDEySDI2djJoNHYyaDJWMTRBMiwyLDAsMCwwLDMwLDEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHJlY3QgeD0iMzAiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzAsMzBIMjh2MmgyYTIsMiwwLDAsMCwyLTJWMjZIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjQsMjJWNmEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCwwLDQsNlYyMmEyLDIsMCwwLDAs''@;'; put 'put ''MiwySDIyQTIsMiwwLDAsMCwyNCwyMlpNNiw2SDIyVjIySDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cmVjdCB4PSIyMCIgeT0iMzAiIHdpZHRoPSI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01''@;'; put 'put ''IiAvPjxwYXRoIGQ9Ik0xNCwyNkgxMnY0YTIsMiwwLDAsMCwyLDJoNFYzMEgxNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik0zMCwxMkgyNnYyaDR2MmgyVjE0QTIsMiwwLDAsMCwzMCwxMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEiIC8+PHJlY3QgeD0iMzAiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMCwzMEgyOHYyaDJhMiwyLDAsMCwwLDItMlYyNkgzMFoiIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTMiIC8+PHJlY3QgeD0iNCIgeT0iNCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiByeD0iMiIgcnk9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+PHJlY3QgeD0iMjAiIHk9IjMwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01IiAvPjxwYXRoIGQ9Ik0xNCwyNkgxMnY0YTIsMiwwLDAsMCwyLDJoNFYzMEgxNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTYiIC8+JyksTC5DbHJTaGFwZVBvcnRyYWl0PSgwLEUuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGQ9Ik0xNS4zNCwyNi40NWEuOC44LDAsMCwwLTEuMTMsMCwuNzkuNzksMCwwLDAsMCwxLjEzTDE4LDMxLjA5bDMuNzQtMy40N2EuNzkuNzksMCwwLDAsLjA1LTEuMTMuOC44LDAsMCwwLTEuMTMsMEwxOC44LDI4LjE3VjcuODNsMS44NiwxLjcyYS44LjgsMCwxLDAsMS4wOC0xLjE3TDE4LDQu''@;'; put 'put ''OTEsMTQuMjYsOC4zOGEuNzkuNzksMCwwLDAsMCwxLjEzLjguOCwwLDAsMCwxLjEzLDBMMTcuMiw3LjgzVjI4LjE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhh''@;'; put 'put ''MiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWm0wLDMwSDhWNEgyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yOCwySDhBMiwyLDAsMCwwLDYsNFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNEEyLDIsMCww''@;'; put 'put ''LDAsMjgsMlpNMjAuNTIsMjYuM2ExLDEsMCwwLDEsMS4zNiwxLjQ3TDE4LDMxLjM2bC0zLjg4LTMuNTlhMSwxLDAsMCwxLDEuMzYtMS40N0wxNywyNy43MVY4LjI5TDE1LjQ4LDkuN2ExLDEsMCwwLDEtMS4zNi0xLjQ3TDE4LDQuNjRsMy44OCwzLjU5YTEsMSwwLDAsMSwuMDUsMS40MSwxLDEs''@;'; put 'put ''MCwwLDEtLjczLjMyLDEsMSwwLDAsMS0uNjgtLjI2TDE5LDguMjlWMjcuNzFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLEwuQ2xyU2hhcGVUcmVlVmlldz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTUsMzJIMTFhMSwxLDAsMCwxLTEtMVYyN2Ex''@;'; put 'put ''LDEsMCwwLDEsMS0xaDRhMSwxLDAsMCwxLDEsMXY0QTEsMSwwLDAsMSwxNSwzMlptLTMtMmgyVjI4SDEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE1LDE2SDExYTEsMSwwLDAsMC0xLDF2MS4ySDUuOFYxMkg3YTEsMSwwLDAsMCwx''@;'; put 'put ''LTFWN0ExLDEsMCwwLDAsNyw2SDNBMSwxLDAsMCwwLDIsN3Y0YTEsMSwwLDAsMCwxLDFINC4yVjI5LjhoNi4zNmEuOC44LDAsMCwwLDAtMS42SDUuOFYxOS44SDEwVjIxYTEsMSwwLDAsMCwxLDFoNGExLDEsMCwwLDAsMS0xVjE3QTEsMSwwLDAsMCwxNSwxNlpNNCw4SDZ2Mkg0Wk0xNCwyMEgx''@;'; put 'put ''MlYxOGgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTM0LDlhMSwxLDAsMCwwLTEtMUgxMHYySDMzQTEsMSwwLDAsMCwzNCw5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMz''@;'; put 'put ''LDE4SDE4djJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMywyOEgxOHYySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cmVjdCB4''@;'; put 'put ''PSIxMCIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIHJ4PSIxIiByeT0iMSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTUsMTZIMTFhMSwxLDAsMCwwLTEsMXYxLjJINS44VjEySDdhMSwxLDAsMCwwLDEtMVY3QTEsMSwwLDAsMCw3LDZI''@;'; put 'put ''M0ExLDEsMCwwLDAsMiw3djRhMSwxLDAsMCwwLDEsMUg0LjJWMjkuOEgxMWEuOC44LDAsMSwwLDAtMS42SDUuOFYxOS44SDEwVjIxYTEsMSwwLDAsMCwxLDFoNGExLDEsMCwwLDAsMS0xVjE3QTEsMSwwLDAsMCwxNSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIi''@;'; put 'put ''IC8+PHBhdGggZD0iTTMzLDhIMTB2MkgzM2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz48cGF0aCBkPSJNMzMsMThIMTh2MkgzM2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz48''@;'; put 'put ''cGF0aCBkPSJNMzMsMjhIMTh2MkgzM2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgLz4nKSxMLkNsclNoYXBlQ3Vyc29ySGFuZEdyYWI9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI4LjA5LDkuNzRhNCw0LDAsMCwwLTEuMTYuMTlj''@;'; put 'put ''LS4xOS0xLjI0LTEuNTUtMi4xOC0zLjI3LTIuMThBNCw0LDAsMCwwLDIyLjEzLDgsMy4zNywzLjM3LDAsMCwwLDE5LDYuM2EzLjQ1LDMuNDUsMCwwLDAtMi44NywxLjMyLDMuNjUsMy42NSwwLDAsMC0xLjg5LS41MUEzLjA1LDMuMDUsMCwwLDAsMTEsOS44OXYuOTFjLTEuMDYuNC00LjExLDEu''@;'; put 'put ''OC00LjkxLDQuODRzLjM0LDgsMi42OSwxMS43OGEyNS4yMSwyNS4yMSwwLDAsMCw1LjksNi40MS45LjksMCwwLDAsLjUzLjE3SDI1LjU1YS45Mi45MiwwLDAsMCwuNTUtLjE5LDEzLjEzLDEzLjEzLDAsMCwwLDMuNzUtNi4xM0EyNS44LDI1LjgsMCwwLDAsMzEuNDEsMTh2LTUuNUEzLjA4LDMu''@;'; put 'put ''MDgsMCwwLDAsMjguMDksOS43NFpNMjkuNjEsMThhMjQsMjQsMCwwLDEtMS40Nyw5LjE1QTEyLjQ2LDEyLjQ2LDAsMCwxLDI1LjIsMzIuMkgxNS40N2EyMy43NSwyMy43NSwwLDAsMS01LjItNS43MmMtMi4zNy0zLjg2LTMtOC4yMy0yLjQ4LTEwLjM5QTUuNyw1LjcsMCwwLDEsMTEsMTIuNzZ2''@;'; put 'put ''Ny42NWEuOS45LDAsMCwwLDEuOCwwVjkuODljMC0uNDcuNTktMSwxLjQ2LTFzMS40OS41MiwxLjQ5LDF2NS43MmgxLjhWOC44MWMwLS4yOC41OC0uNzEsMS40Ni0uNzFzMS41My40OCwxLjUzLjc1djYuODloMS44VjEwbC4xNy0uMTJhMi4xLDIuMSwwLDAsMSwxLjE4LS4zMmMuOTMsMCwxLjUu''@;'; put 'put ''NDQsMS41LjY4bDAsNi41SDI3VjExLjg3YTEuOTEsMS45MSwwLDAsMSwxLjEyLS4zM2MuODYsMCwxLjUyLjUxLDEuNTIuOTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlQ3Vyc29ySGFuZE9wZW49KDAsRS5jbHJJY29uU1ZHKSgn''@;'; put 'put ''PHBhdGggZD0iTTMxLjQ2LDguNTdBMy4xMSwzLjExLDAsMCwwLDI3LDUuNzVhMy4xOSwzLjE5LDAsMCwwLTQuNjYtMi42NCwzLjI5LDMuMjksMCwwLDAtNi40Mi0uNzYsMy4yMywzLjIzLDAsMCwwLTEuNjYtLjQ2QTMuMjcsMy4yNywwLDAsMCwxMSw1LjE4VjE3Ljg0Yy0xLjI4LTEuNi0yLjUz''@;'; put 'put ''LTMuMTgtMi43Mi0zLjQ1QTMuMTksMy4xOSwwLDAsMCw1LjU2LDEyLjlhMy4zNywzLjM3LDAsMCwwLTMuNDcsMy40OEMyLjE4LDE4LjE4LDUuNjYsMjQuNTQsOCwyOGMzLjU0LDUuMjQsNi45Miw2LDcuMDcsNmwuMTgsMEgyNS41OWEuOTIuOTIsMCwwLDAsLjU1LS4xOSwxMy4xMywxMy4xMyww''@;'; put 'put ''LDAsMCwzLjc1LTYuMTNjMS0zLjA5LDEuNTMtNy41MywxLjU4LTEzLjU2Wk0yOC4xOCwyNy4xMmExMi40NiwxMi40NiwwLDAsMS0yLjk0LDUuMDhIMTUuMzNjLS40Ny0uMTQtMy4wNy0xLjEtNS44Ny01LjI1UzMuOTQsMTcuMjcsMy44OSwxNi4yOWExLjUsMS41LDAsMCwxLC40NS0xLjEzLDEu''@;'; put 'put ''NTIsMS41MiwwLDAsMSwxLjE0LS40NiwxLjQzLDEuNDMsMCwwLDEsMS4zMi43MWMuMjkuNDMsMi4zNiwzLDMuNTcsNC41M0wxMi44LDE4LjNWNS4xOGExLjQ4LDEuNDgsMCwxLDEsMi45NSwwVjE2LjMyaDEuOHYtMTNhMS41MSwxLjUxLDAsMCwxLDMsMFYxNi40NWgxLjhWNmExLjQzLDEuNDMs''@;'; put 'put ''MCwxLDEsMi44NSwwVjE3LjQ0SDI3VjguNTRhMS4zMywxLjMzLDAsMCwxLDIuNjUsMHY1LjU1QzI5LjYyLDIwLDI5LjE0LDI0LjIxLDI4LjE4LDI3LjEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZUZpbGVaaXA9KDAsRS5jbHJJ''@;'; put 'put ''Y29uU1ZHKSgnPHBhdGggZD0iTTMwLDMwLjJWMTJsLTguMS03LjlINy44QzYuOCw0LjEsNiw0LjksNiw2YzAsMCwwLDAsMCwwdjI0LjJjMCwxLDAuNywxLjgsMS43LDEuOGMwLDAsMC4xLDAsMC4xLDBoMjAuM1xuXHRcdGMxLDAsMS44LTAuNywxLjgtMS43QzMwLDMwLjMsMzAsMzAuMiwzMCwz''@;'; put 'put ''MC4yeiBNMjIsNi42bDUuNiw1LjRIMjJWNi42eiBNMjgsMzBINy45TDgsNmgxMnY4aDhWMzB6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTIsMjRjMCwxLjcsMS4zLDMsMywzczMtMS4zLDMtM3YtNGgtNlYyNHogTTEzLjQsMjR2LTIu''@;'; put 'put ''NmgzLjJWMjRjMC4xLDAuOS0wLjYsMS43LTEuNSwxLjdjLTAuOSwwLjEtMS43LTAuNi0xLjctMS41XG5cdFx0QzEzLjQsMjQuMiwxMy40LDI0LjEsMTMuNCwyNHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xOC4yLDljMC0wLjYtMC40''@;'; put 'put ''LTEtMS0xSDE1djJoMi4yQzE3LjgsMTAsMTguMiw5LjYsMTguMiw5eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTEyLjcsMTBjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFIMTV2LTJIMTIuN3oiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0xNy4yLDE0YzAuNiwwLDEtMC40LDEtMXMtMC40LTEtMS0xSDE1djJIMTcuMnoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0xMS43LDE1YzAsMC42LDAuNCwxLDEsMUgxNXYt''@;'; put 'put ''MmgtMi4zQzEyLjIsMTQsMTEuNywxNC40LDExLjcsMTV6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48cGF0aCBkPSJNMTcuMiwxOGMwLjYsMCwxLTAuNCwxLTFzLTAuNC0xLTEtMUgxNXYySDE3LjJ6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtNyIgLz48cGF0aCBkPSJNMTUsMjUuNmMwLjksMCwxLjYtMC43LDEuNi0xLjZ2LTIuNmgtMy4yVjI0QzEzLjQsMjQuOSwxNC4xLDI1LjYsMTUsMjUuNnoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTIxLjksNEg3LjhDNi44''@;'; put 'put ''LDQsNiw0LjksNiw1Ljl2MjQuMmMwLDEsMC44LDEuOSwxLjgsMS45aDIwLjNjMSwwLDEuOC0wLjksMS44LTEuOVYxMS45TDIxLjksNHogTTE4LDI0YzAsMS43LTEuMywzLTMsM1xuXHRcdHMtMy0xLjMtMy0zdi00aDZWMjR6IE0xNy4yLDEyYzAuNiwwLDEsMC40LDEsMXMtMC40LDEtMSwxSDE1''@;'; put 'put ''djJoMi4yYzAuNiwwLDEsMC40LDEsMXMtMC40LDEtMSwxSDE1di0yaC0yLjJjLTAuNiwwLTEtMC40LTEtMVxuXHRcdHMwLjQtMSwxLTFIMTV2LTJoLTIuMmMtMC42LDAtMS0wLjQtMS0xczAuNC0xLDEtMUgxNVY4aDIuMmMwLjYsMCwxLDAuNCwxLDFzLTAuNCwxLTEsMUgxNXYySDE3LjJ6IE0y''@;'; put 'put ''MS45LDEyVjYuNWw1LjcsNS41SDIxLjl6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVGaWx0ZXJPZmY9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDYuNEMzNCw1LjYsMzMuMyw1LDMyLjUsNUgxMC4zbDIsMkgzMnYwLjZsLTku''@;'; put 'put ''Niw5LjZsMS40LDEuNEwzMy40LDlDMzMuOCw4LjYsMzQsOC4xLDM0LDcuNlY2LjVDMzQsNi41LDM0LDYuNCwzNCw2LjR6IlxuXHRcdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMi43LDNsMiwyaC0xQzIuOSw0LjksMi4xLDUuNSwyLDYu''@;'; put 'put ''M3YxLjFjMCwwLjUsMC4yLDEsMC42LDEuNEwxNCwyMC4ydjEwLjNsMS45LDAuOFYxOS40TDQsNy41VjdoMi43TDIwLDIwLjN2MTIuOWwyLDAuOFxuXHRcdGMwLDAsMCwwLDAtMC4xVjIyLjNsMTAuMSwxMC4xbDEuNC0xLjRMNC4xLDEuNkwyLjcsM3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMy45LDE4LjZMMTAuMyw1LjFoMjIuMkMzMy4zLDUsMzQsNS42LDM0LDYuNGMwLDAsMCwwLDAsMC4xdjEuMWMwLDAuNS0wLjIsMS0wLjYsMS40TDIzLjksMTguNnoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''IC8+PHBhdGggZD0iTTMzLjUsMzFMNC4xLDEuNkwyLjYsM2wyLjEsMi4xSDMuNUMyLjcsNSwyLDUuNiwyLDYuNGMwLDAsMCwwLDAsMC4xdjEuMWMwLDAuNSwwLjIsMSwwLjYsMS40TDE0LDIwLjV2MTAuMWw4LDMuNFYyMi40XG5cdGwxMC4xLDEwLjFMMzMuNSwzMXoiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZVJlY3ljbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTYuNCwxNy40YzAuMiwwLjEsMC4zLDAuMSwwLjUsMC4xYzAuMiwwLDAuNC0wLjEsMC41LTAuMWw3LTQuMWMwLjMtMC4yLDAuNS0wLjUsMC41LTAuOWMwLTAu''@;'; put 'put ''NC0wLjItMC43LTAuNS0wLjlMMTEuOSwxMFxuXHRcdEwxNCw2LjJjMC40LTAuNywxLTEuMywxLjctMS43YzItMS4xLDQuNS0wLjMsNS42LDEuN2MwLjMsMC41LDAuOSwwLjYsMS40LDAuM2MwLDAsMCwwLDAuMSwwYzAuNC0wLjMsMC41LTAuOSwwLjMtMS4zXG5cdFx0Yy0wLjYtMS0xLjQtMS45''@;'; put 'put ''LTIuNC0yLjRjLTMtMS42LTYuNy0wLjYtOC4zLDIuNEw5LjYsOS45Yy0wLjMsMC41LTAuMSwxLjEsMC4zLDEuNGwyLDEuMmwtNCwyLjRWOC4yYzAtMC42LTAuNC0xLTEtMVxuXHRcdEM2LjQsNy4zLDYsNy43LDYsOC4zdjguM0M2LDE2LjksNi4yLDE3LjIsNi40LDE3LjR6IiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzIuMSwyMWwtMy41LTYuMmMtMC4xLTAuMi0wLjQtMC40LTAuNi0wLjVjLTAuMy0wLjEtMC41LDAtMC44LDAuMWwtMi4yLDEuM1YxMWw1LjUsMy4zYzAuMSwwLDAuMSwwLjEsMC4yLDAuMVxuXHRcdGMwLjUsMC4y''@;'; put 'put ''LDEuMSwwLDEuMy0wLjVjMC4yLTAuNSwwLTEuMS0wLjUtMS4zbC03LTQuMmMtMC4zLTAuMi0wLjctMC4yLTEsMEMyMy4xLDguNSwyMyw4LjgsMjMsOS4ydjguM2MwLDAuNCwwLjEsMC44LDAuNCwxXG5cdFx0YzAuMywwLjIsMC43LDAuMiwxLDBsMi45LTEuN2wzLDUuM2MwLjcsMS4zLDAuNywy''@;'; put 'put ''LjgsMCw0LjFjLTAuNiwxLjItMS45LDEuOS0zLjIsMS45aC0wLjljLTAuNSwwLTEuMiwwLjQtMS4yLDFcblx0XHRjMC4xLDAuNiwwLjYsMSwxLjIsMWgwLjljMi4xLDAsNC0xLjEsNS0yLjlDMzMuMiwyNS4yLDMzLjIsMjIuOSwzMi4xLDIxeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTIyLjQsMjguMmwtNy00LjJjLTAuMy0wLjItMC43LTAuMi0xLDBjLTAuMywwLjItMC40LDAuNS0wLjQsMC45djMuM0g5LjFjLTEuNS0wLjEtMi45LTAuOS0zLjYtMi4zXG5cdFx0Yy0wLjgtMS40LTAuOC0zLjIsMC00LjZjMC4zLTAuNSwwLjEt''@;'; put 'put ''MS4xLTAuNC0xLjRjLTAuNS0wLjMtMS4xLTAuMS0xLjQsMC40Yy0xLjIsMi4xLTEuMSw0LjYsMC4xLDYuNkM0LjksMjguOCw3LDMwLDkuMiwzMEgxNVxuXHRcdGMwLjYsMCwxLTAuNCwxLTF2LTIuNGw0LDIuNGwtNS42LDMuM2MtMC4zLDAuMi0wLjUsMC41LTAuNSwwLjljMCwwLjYsMC41LDEs''@;'; put 'put ''MSwxYzAuMiwwLDAuMy0wLjEsMC41LTAuMmw3LTQuMlxuXHRcdGMwLjItMC4xLDAuMy0wLjIsMC40LTAuNEMyMy4xLDI5LDIyLjksMjguNCwyMi40LDI4LjJ6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjAuOCwzLjFjLTMtMS42LTYu''@;'; put 'put ''Ny0wLjYtOC40LDIuNGwtMi4yLDMuOGwtMi0xLjFDOC4yLDgsOCw4LDcuOSw4QzcuNCw4LDcsOC40LDcsOC45djcuMmMwLDAuMywwLjEsMC42LDAuNCwwLjhcblx0XHRjMC4xLDAuMSwwLjMsMC4xLDAuNCwwLjFjMC4yLDAsMC4zLDAsMC40LTAuMWw2LjMtMy42YzAuMy0wLjIsMC40LTAuNCww''@;'; put 'put ''LjQtMC44YzAtMC4zLTAuMi0wLjYtMC40LTAuOEwxMiwxMC4zbDIuMi0zLjhcblx0XHRjMC40LTAuNywxLTEuMywxLjctMS43YzItMS4xLDQuNS0wLjMsNS42LDEuN2MwLjMsMC41LDAuOSwwLjYsMS40LDAuNGMwLjUtMC4zLDAuNi0wLjksMC40LTEuNEMyMi42LDQuNSwyMS44LDMuNiwyMC44''@;'; put 'put ''LDMuMXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTMyLjIsMjEuMWwtMy01LjNsMi4zLTEuM2MwLjMtMC4yLDAuNC0wLjQsMC40LTAuOGMwLTAuMy0wLjItMC42LTAuNC0wLjhsLTYuMi0zLjZjLTAuMS0wLjEtMC4zLTAuMS0wLjQtMC4xXG5c''@;'; put 'put ''dFx0Yy0wLjUsMC0wLjksMC40LTAuOSwwLjl2Ny4yYzAsMC4zLDAuMiwwLjYsMC40LDAuOGMwLjEsMC4xLDAuMywwLjEsMC40LDAuMWMwLjIsMCwwLjMtMC4xLDAuNC0wLjFsMi4yLTEuM2wzLDUuM1xuXHRcdGMwLjcsMS4yLDAuNywyLjgsMCw0Yy0wLjcsMS4yLTEuOSwxLjktMy4yLDEuOWgt''@;'; put 'put ''MC45Yy0wLjYsMC0xLDAuNC0xLDFjMCwwLjYsMC40LDEsMSwxaDAuOWMyLjEsMCw0LTEuMSw1LTNcblx0XHRDMzMuMiwyNS4zLDMzLjIsMjMsMzIuMiwyMS4xeiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMjEuNywyOC40bC02LjItMy42Yy0w''@;'; put 'put ''LjEtMC4xLTAuMy0wLjEtMC40LTAuMWMtMC41LDAtMC45LDAuNC0wLjksMC45djIuNkg5LjNjLTEuNSwwLTIuOS0wLjgtMy42LTIuMVxuXHRcdGMtMC44LTEuNC0wLjgtMy4xLDAtNC41YzAuMy0wLjUsMC4xLTEuMS0wLjQtMS40Yy0wLjUtMC4zLTEuMS0wLjEtMS40LDAuNGMtMS4yLDItMS4y''@;'; put 'put ''LDQuNSwwLDYuNWMxLjEsMS45LDMuMSwzLjEsNS40LDMuMWg0Ljh2Mi42XG5cdFx0YzAsMC4zLDAuMiwwLjYsMC40LDAuOGMwLjEsMC4xLDAuMywwLjEsMC40LDAuMWMwLjEsMCwwLjMsMCwwLjQtMC4xbDYuMy0zLjZjMC4zLTAuMiwwLjQtMC40LDAuNC0wLjhcblx0XHRDMjIuMSwyOC44LDIx''@;'; put 'put ''LjksMjguNSwyMS43LDI4LjR6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLEwuQ2xyU2hhcGVUcmVlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMC42LDExLjdDMjkuMiw1LjgsMjQsMS43LDE4LDEuN2MtNy4yLDAtMTMsNS44LTEzLDEzYzAsNi44''@;'; put 'put ''LDUuMywxMi40LDEyLDEyLjl2NWMwLDAuNiwwLjQsMSwxLDFzMS0wLjQsMS0xdi01di0yVjIyXG5cdGMwLDAsMCwwLDAtMC4xdi0zLjZsNC43LTQuN2MwLjQtMC40LDAuNC0xLDAtMS40Yy0wLjQtMC40LTEtMC40LTEuNCwwTDE5LDE1LjZ2LTNsLTMuMy0zLjNjLTAuNC0wLjQtMS0wLjQtMS40''@;'; put 'put ''LDBcblx0Yy0wLjQsMC40LTAuNCwxLDAsMS40bDIuNywyLjd2Ni4ybC0zLjgtMy44Yy0wLjQtMC40LTEtMC40LTEuNCwwYy0wLjQsMC40LTAuNCwxLDAsMS40bDUuMiw1LjJ2My4yYy01LjYtMC41LTEwLTUuMi0xMC0xMC45XG5cdGMwLTYuMSw0LjktMTEsMTEtMTFzMTEsNC45LDExLDExYzAs''@;'; put 'put ''NC45LTMuMyw5LjItOCwxMC42djIuMUMyOCwyNS43LDMyLjMsMTguNywzMC42LDExLjd6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMkMxMC44LDEuNyw0LjgsNy4zLDQuNSwxNC41QzQuMiwyMS43LDkuOCwyNy43LDE3LDI4di01''@;'; put 'put ''LjJsLTUuMi01LjJjLTAuNC0wLjQtMC40LTEsMC0xLjRjMC40LTAuNCwxLTAuNCwxLjQsMFxuXHRjMCwwLDAsMCwwLDBsMy44LDMuOHYtNi4ybC0yLjctMi43Yy0wLjQtMC40LTAuNC0xLDAtMS40YzAuNC0wLjQsMS0wLjQsMS40LDBjMCwwLDAsMCwwLDBsMy4zLDMuM3YzbDMuMy0zLjNjMC40''@;'; put 'put ''LTAuNCwxLTAuNCwxLjQsMFxuXHRjMCwwLDAsMCwwLDBjMC40LDAuNCwwLjQsMSwwLDEuNEwxOSwxOC44VjI4YzcuMi0wLjMsMTIuOC02LjMsMTIuNS0xMy41UzI1LjIsMS43LDE4LDJ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwyOGMt''@;'; put 'put ''MC4zLDAtMC42LDAtMSwwdjVjMCwwLjYsMC40LDEsMSwxczEtMC40LDEtMXYtNUMxOC43LDI4LDE4LjMsMjgsMTgsMjh6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVGaXNoPSgwLEUuY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjExLjQ5''@;'; put 'put ''IiBjeT0iMTcuNSIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMuNDgsOS4yOWExLDEsMCwwLDAtMSwwYy0zLjM3LDItNS45MSw1LjgxLTYuOSw3LjQ1TDI0Ljg1LDE4cy0xLDEuNjItMSwxLjYyYy0xLjc2LDIuNDktNS4x''@;'; put 'put ''LDYuMzYtOC43OSw2LjM2LTQuNjUsMC04Ljc1LTYuMTUtOS44NC03Ljk0LDEuMDktMS43OSw1LjE4LTcuOTQsOS44NC03Ljk0LDMuNTQsMCw2Ljc3LDMuNTgsOC41OCw2LjA3bC4yOC0uNDhzLjM2LS41MS45My0xLjI1QzIyLjcyLDExLjY0LDE5LjE4LDguMDYsMTUsOC4wNmMtNi41OSwwLTEx''@;'; put 'put ''LjY3LDkuMDctMTEuODgsOS40NkwyLjg5LDE4bC4yNy40OGMuMjEuMzksNS4yOSw5LjQ2LDExLjg4LDkuNDYsNS4wNiwwLDkuMjItNS4zNCwxMS04QzI2LDIwLDI3LjE4LDE4LDI3LjE4LDE4aDBsLjA3LS4xMWExOC4wNiwxOC4wNiwwLDAsMSwxLjg4LTIuNzVzMCwwLDAsMGEyMC4zMSwyMC4z''@;'; put 'put ''MSwwLDAsMSwyLjg2LTNWMjMuODhhMjAuOTMsMjAuOTMsMCwwLDEtMy42MS00bC0uMTYuMjZoMGwtMSwxLjU5YTE4Ljc0LDE4Ljc0LDAsMCwwLDUuMjEsNC45NSwxLDEsMCwwLDAsLjUuMTQsMS4xMywxLjEzLDAsMCwwLC41LS4xMywxLDEsMCwwLDAsLjUtLjg3VjEwLjE2QTEsMSwwLDAsMCwz''@;'; put 'put ''My40OCw5LjI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZUZvcm09KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIxLDEySDdhMSwxLDAsMCwxLTEtMVY3QTEsMSwwLDAsMSw3LDZIMjFhMSwxLDAsMCwxLDEsMXY0QTEsMSww''@;'; put 'put ''LDAsMSwyMSwxMlpNOCwxMEgyMFY3Ljk0SDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjEsMTQuMDhIN2ExLDEsMCwwLDAtMSwxVjE5YTEsMSwwLDAsMCwxLDFIMTguMzZMMjIsMTYuM1YxNS4wOEExLDEsMCwwLDAsMjEsMTQuMDha''@;'; put 'put ''TTIwLDE4SDhWMTZIMjBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTEuMDYsMzEuNTF2LS4wNmwuMzItMS4zOUg0VjRoMjBWMTQuMjVMMjYsMTIuMzZWM2ExLDEsMCwwLDAtMS0xSDNBMSwxLDAsMCwwLDIsM1YzMWExLDEsMCwwLDAs''@;'; put 'put ''MSwxaDhBMy40NCwzLjQ0LDAsMCwxLDExLjA2LDMxLjUxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTIyLDE5LjE3bC0uNzguNzlBMSwxLDAsMCwwLDIyLDE5LjE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTQiIC8+PHBhdGggZD0iTTYsMjYuOTRhMSwxLDAsMCwwLDEsMWg0Ljg0bC4zLTEuMy4xMy0uNTUsMC0uMDVIOFYyNGg2LjM0bDItMkg3YTEsMSwwLDAsMC0xLDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzMuNDksMTYuNjcs''@;'; put 'put ''MzAuMTIsMTMuM2ExLjYxLDEuNjEsMCwwLDAtMi4yOCwwaDBMMTQuMTMsMjcuMDksMTMsMzEuOWExLjYxLDEuNjEsMCwwLDAsMS4yNiwxLjksMS41NSwxLjU1LDAsMCwwLC4zMSwwLDEuMTUsMS4xNSwwLDAsMCwuMzcsMGw0Ljg1LTEuMDdMMzMuNDksMTlhMS42LDEuNiwwLDAsMCwwLTIuMjda''@;'; put 'put ''TTE4Ljc3LDMwLjkxbC0zLjY2LjgxTDE2LDI4LjA5LDI2LjI4LDE3LjdsMi44MiwyLjgyWk0zMC4yMywxOS4zOWwtMi44Mi0yLjgyTDI5LDE1bDIuODQsMi44NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLEwuQ2xyU2hhcGVGdWVsPSgwLEUuY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGQ9Ik0yMC4xMiwzNEg1LjlBMi44MSwyLjgxLDAsMCwxLDMsMzEuMTlWNC44NkEyLjksMi45LDAsMCwxLDYsMi4wN0gyMC4yMkEyLjcyLDIuNzIsMCwwLDEsMjMsNC44NlYzMS4xOUEyLjgyLDIuODIsMCwwLDEsMjAuMTIsMzRaTTUuOSw0QS44Ny44NywwLDAsMCw1''@;'; put 'put ''LDQuODZWMzEuMTlhLjg3Ljg3LDAsMCwwLC44Ny44N0gyMC4xMmEuOTQuOTQsMCwwLDAsLjk1LS44N1Y0Ljg2QS45NC45NCwwLDAsMCwyMC4xMiw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI5LjUzLDM0QTMuNSwzLjUsMCwwLDEs''@;'; put 'put ''MjYsMzAuNVYyM2EyLDIsMCwwLDAtMi0ySDIyLjU3YTEsMSwwLDAsMSwwLTJIMjRhNCw0LDAsMCwxLDQsNFYzMC41YTEuNSwxLjUsMCwwLDAsMywwVjE3LjNsLTMuMTMtN0EyLjI5LDIuMjksMCwwLDAsMjUuOCw5aC0uNzNhMSwxLDAsMSwxLDAtMmguNzNhNC4zLDQuMywwLDAsMSwzLjkzLDIu''@;'; put 'put ''NTVsMy4yMSw3LjE2YTEsMSwwLDAsMSwuMDkuNDFWMzAuNUEzLjUsMy41LDAsMCwxLDI5LjUzLDM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTE4LDlIOEExLDEsMCwxLDEsOCw3SDE4YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMTgsMTNIOEExLDEsMCwxLDEsOCwxMUgxOEExLDEsMCwxLDEsMTgsMTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMjUsMTIuMDhhMSwxLDAsMCwxLTEt''@;'; put 'put ''MXYtNmExLDEsMCwwLDEsMiwwdjZBMSwxLDAsMCwxLDI1LDEyLjA4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+JyksTC5DbHJTaGFwZVNub3dmbGFrZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTguMDUsMzMuNjFhMSwxLDAsMCwxLTEtMVYz''@;'; put 'put ''LjM3YTEsMSwwLDEsMSwxLjk1LDBWMzIuNjNBMSwxLDAsMCwxLDE4LjA1LDMzLjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LjA2LDEwLjA3LDE0LjUyLDYuNTRhMSwxLDAsMCwxLDAtMS40MSwxLDEsMCwwLDEsMS40MSwwbDIu''@;'; put 'put ''MTMsMi4xMiwyLjEyLTIuMTJhMSwxLDAsMCwxLDEuNDEsMCwxLDEsMCwwLDEsMCwxLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTIwLjg1LDMxLjE3YTEsMSwwLDAsMS0uNy0uMjlMMTgsMjguNzYsMTUuOSwzMC44OGExLDEsMCww''@;'; put 'put ''LDEtMS40MSwwLDEsMSwwLDAsMSwwLTEuNDJMMTgsMjUuOTNsMy41NCwzLjUzYTEsMSwwLDAsMSwwLDEuNDJBMSwxLDAsMCwxLDIwLjg1LDMxLjE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMwLjkyLDI2LjVhMSwxLDAsMCwxLS41''@;'; put 'put ''LS4xM2wtMjYtMTVBMSwxLDAsMCwxLDQuMDcsMTBhMSwxLDAsMCwxLDEuMzctLjM2bDI2LDE1YTEsMSwwLDAsMS0uNSwxLjg3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTYsMTUuMzdhMSwxLDAsMCwxLS4yNi0ybDIuOS0uNzhMNy44''@;'; put 'put ''NCw5LjczYTEsMSwwLDEsMSwxLjkzLS41MkwxMS4wNywxNCw2LjI0LDE1LjMzQS44Mi44MiwwLDAsMSw2LDE1LjM3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTI3LjA1LDI3LjU0YTEsMSwwLDAsMS0xLS43NUwyNC44LDIybDQuODIt''@;'; put 'put ''MS4zYTEsMSwwLDEsMSwuNTIsMS45M2wtMi45Ljc4Ljc4LDIuOWExLDEsMCwwLDEtLjcxLDEuMjJBLjc1Ljc1LDAsMCwxLDI3LjA1LDI3LjU0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTQuOTQsMjYuNWExLDEsMCwwLDEtLjUtMS44''@;'; put 'put ''N2wyNi0xNWExLDEsMCwwLDEsMS4zNi4zNiwxLDEsMCwwLDEtLjM2LDEuMzdsLTI2LDE1QTEsMSwwLDAsMSw0Ljk0LDI2LjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz48cGF0aCBkPSJNOC44MSwyNy41NGEuNzUuNzUsMCwwLDEtLjI2LDAsMSwxLDAs''@;'; put 'put ''MCwxLS43MS0xLjIybC43OC0yLjktMi45LS43OEExLDEsMCwwLDEsNSwyMS4zOGExLDEsMCwwLDEsMS4yMy0uNzFMMTEuMDcsMjJsLTEuMyw0LjgyQTEsMSwwLDAsMSw4LjgxLDI3LjU0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+PHBhdGggZD0iTTI5''@;'; put 'put ''Ljg4LDE1LjM3YS44Mi44MiwwLDAsMS0uMjYsMEwyNC44LDE0bDEuMjktNC44M0ExLDEsMCwxLDEsMjgsOS43M2wtLjc4LDIuODksMi45Ljc4YTEsMSwwLDAsMS0uMjYsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiAvPicpLEwuQ2xyU2hhcGVUYWJsZT0o''@;'; put 'put ''MCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNOCwzNGExLDEsMCwwLDEtMS0xVjIuOTJhMSwxLDAsMCwxLDIsMFYzM0ExLDEsMCwwLDEsOCwzNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xNywzMy45MmExLDEsMCwwLDEtMS0xVjku''@;'; put 'put ''MWExLDEsMCwxLDEsMiwwVjMyLjkyQTEsMSwwLDAsMSwxNywzMy45MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yNiwzNGExLDEsMCwwLDEtMS0xVjlhMSwxLDAsMCwxLDIsMFYzM0ExLDEsMCwwLDEsMjYsMzRaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzMuMTEsMThoLTI1YTEsMSwwLDEsMSwwLTJoMjVhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMy4xLDI2Ljk0SDguMUExLDEs''@;'; put 'put ''MCwxLDEsOC4xLDI1aDI1YTEsMSwwLDEsMSwwLDEuOTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzMsOC45MkgzQTEsMSwwLDEsMSwzLDdIMzNhMSwxLDAsMSwxLDAsMS45NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC02IiAvPicpLEwuQ2xyU2hhcGVWb2x1bWU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI1Ljg4LDMySDEyYTQsNCwwLDAsMS00LTRWMTEuNDZMMi4zMSw1Ljc3YTEsMSwwLDAsMS0uMjItMS4wOUExLDEsMCwwLDEsMyw0LjA2SDI4Ljg2YTEsMSwwLDAsMSwxLDFWMjhB''@;'; put 'put ''NCw0LDAsMCwxLDI1Ljg4LDMyWk01LjQzLDZsNC4yOCw0LjM0YS43NS43NSwwLDAsMSwuMjEuNjN2MTdBMi4xMywyLjEzLDAsMCwwLDEyLDMwSDI1Ljg4QTIuMSwyLjEsMCwwLDAsMjgsMjhWNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9''@;'; put 'put ''Ik0zMywxNmExLDEsMCwwLDEtMS0xVjZIMjguODZhLjkyLjkyLDAsMCwxLTEtLjksMSwxLDAsMCwxLDEtMUgzM2ExLDEsMCwwLDEsMSwxVjE1QTEsMSwwLDAsMSwzMywxNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yNCwxMUgxOGEx''@;'; put 'put ''LDEsMCwxLDEsMC0ySDI0YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjQsMTVIMjFhMSwxLDAsMSwxLDAtMkgyNGExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTQiIC8+PHBhdGggZD0iTTI0LDE5SDE4YTEsMSwwLDEsMSwwLTJIMjRhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0yNCwyN0gxOGExLDEsMCwxLDEsMC0ySDI0YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48cGF0aCBkPSJNMjQsMjNIMjFBMSwxLDAsMSwxLDIxLDIxSDI0QTEsMSwwLDEsMSwyNCwyM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPicpLEwuQ2xyU2hhcGVDcm9zc2hhaXJzPSgw''@;'; put 'put ''LEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyOUExMSwxMSwwLDEsMSwyOSwxOCwxMSwxMSwwLDAsMSwxOCwyOVpNMTgsOWE5LDksMCwxLDAsOSw5QTksOSwwLDAsMCwxOCw5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDIz''@;'; put 'put ''YTUsNSwwLDEsMSw1LTVBNSw1LDAsMCwxLDE4LDIzWm0wLThhMywzLDAsMSwwLDMsM0EzLDMsMCwwLDAsMTgsMTVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTgsOWExLDEsMCwwLDEtMS0xVjIuOGExLDEsMCwwLDEsMiwwVjhBMSwx''@;'; put 'put ''LDAsMCwxLDE4LDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMTgsMzRhMSwxLDAsMCwxLTEtMVYyOGExLDEsMCwwLDEsMiwwdjVBMSwxLDAsMCwxLDE4LDM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTQiIC8+PHBhdGggZD0iTTgsMTlIMy4xN2ExLDEsMCwwLDEsMC0ySDhhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMy4xLDE5SDI4YTEsMSwwLDAsMSwwLTJoNS4xYTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxMLkNsclNoYXBlQ2lyY2xlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpNMTgsNEExNCwxNCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwx''@;'; put 'put ''OCw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4LDM0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlRG90Q2ly''@;'; put 'put ''Y2xlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwxMWE3LDcsMCwxLDEtNyw3LDcsNywwLDAsMSw3LTciIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpN''@;'; put 'put ''MTgsNEExNCwxNCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwxOCw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZUJldGE9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTcuMjEsMTQuMDdoM2ExLjYxLDEuNjEsMCwwLDEsMS44''@;'; put 'put ''MSwxLjUsMS40NCwxLjQ0LDAsMCwxLS44NCwxLjM0LDEuNjcsMS42NywwLDAsMSwxLjEsMS41MywxLjc1LDEuNzUsMCwwLDEtMiwxLjYzSDcuMjFabTIuNzEsMi40MmMuNDgsMCwuODItLjI4LjgyLS42N3MtLjM0LS42NS0uODItLjY1SDguNDl2MS4zMlptLjIsMi40OGEuNzUuNzUsMCwxLDAs''@;'; put 'put ''MC0xLjQ3SDguNDlWMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMTQuNTUsMTUuMjN2MS4yaDN2MS4xNmgtM3YxLjMyaDMuMzN2MS4xNkgxMy4yNnYtNmg0LjYydjEuMTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjAuNDEsMTUuMjNIMTguNTRWMTQuMDdoNXYxLjE2SDIxLjd2NC44NEgyMC40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0yOCwxOS4xMkgyNS4zMmwtLjM4Ljk1SDIzLjVs''@;'; put 'put ''Mi40NC02aDEuNDRsMi40NSw2SDI4LjM4Wk0yNy41NSwxOGwtLjg5LTIuMTlMMjUuNzcsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNOC4wNiwzMGEuODQuODQsMCwwLDEtLjM4LS4wOEExLDEsMCwwLDEsNy4wNiwyOVYyNWgt''@;'; put 'put ''NGExLDEsMCwwLDEtMS0xVjEwYTEsMSwwLDAsMSwxLTFoMzBhMSwxLDAsMCwxLDEsMVYyNGExLDEsMCwwLDEtMSwxSDEzLjQ4TDguNzcsMjkuNzFBMSwxLDAsMCwxLDguMDYsMzBabS00LTdoNGExLDEsMCwwLDEsMSwxdjIuNTlsMy4zLTMuM2ExLDEsMCwwLDEsLjctLjI5aDE5VjExaC0yOFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG5cbiAgPHBvbHlnb24gcG9pbnRzPSIyNS44LDE4IDI3LjUsMTggMjYuNywxNS44IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG5cdDxwYXRoIGQ9Ik0xMC40LDE3LjVjLTAuMSww''@;'; put 'put ''LTAuMiwwLTAuMywwSDguNVYxOWwxLjYsMGMwLjQsMC4xLDAuOC0wLjIsMC45LTAuNkMxMS4xLDE4LDEwLjgsMTcuNiwxMC40LDE3LjV6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG5cdDxwYXRoIGQ9Ik0xMC43LDE1LjhjMC0wLjQtMC4zLTAuNy0wLjgtMC43''@;'; put 'put ''SDguNXYxLjNoMS40QzEwLjQsMTYuNSwxMC43LDE2LjIsMTAuNywxNS44eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxuXHQ8cGF0aCBkPSJNMzMuMSw5aC0zMGMtMC42LDAtMSwwLjQtMSwxdjE0YzAsMC42LDAuNCwxLDEsMWg0djRjMCwwLjQsMC4yLDAuOCww''@;'; put 'put ''LjYsMC45QzcuOCwzMCw3LjksMzAsOC4xLDMwYzAuMywwLDAuNS0wLjEsMC43LTAuM1xuXHRcdGw0LjctNC43aDE5LjZjMC42LDAsMS0wLjQsMS0xVjEwQzM0LjEsOS40LDMzLjYsOSwzMy4xLDl6IE0xMC40LDIwLjFjLTAuMSwwLTAuMSwwLTAuMiwwSDcuMnYtNmgzYzAuOS0wLjEsMS43LDAu''@;'; put 'put ''NSwxLjgsMS40XG5cdFx0YzAsMCwwLDAuMSwwLDAuMWMwLDAuNi0wLjMsMS4xLTAuOCwxLjNjMC42LDAuMiwxLjEsMC44LDEuMSwxLjVDMTIuMiwxOS40LDExLjQsMjAuMSwxMC40LDIwLjF6IE0xNy45LDE1LjJoLTMuM3YxLjJoM3YxLjJoLTN2MS4zXG5cdFx0aDMuM3YxLjJoLTQuNnYtNmg0''@;'; put 'put ''LjZWMTUuMnogTTIxLjcsMjAuMWgtMS4zdi00LjhoLTEuOXYtMS4yaDV2MS4yaC0xLjhWMjAuMXogTTI4LjQsMjAuMWwtMC40LTFoLTIuN2wtMC40LDFoLTEuNGwyLjQtNmgxLjRsMi41LDZcblx0XHRIMjguNHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiLz5cbicp''@;'; put 'put ''LEwuQ2xyU2hhcGVGaXJzdEFpZD0oMCxFLmNsckljb25TVkcpKCdcbiAgPHBhdGggZD0iTTMyLDZIMjMuOTFWNC41QTIuNSwyLjUsMCwwLDAsMjEuNDEsMmgtN2EyLjUsMi41LDAsMCwwLTIuNSwyLjVWNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjhBMiwyLDAsMCwwLDMyLDZaTTEzLjkxLDQuNWEuNS41LDAsMCwxLC41LS41aDdhLjUuNSwwLDAsMSwuNS41VjZoLThaTTQsMjhWOEgzMlYyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0yMC4xNSwyNS4ySDE2Ljc0YTEuMywx''@;'; put 'put ''LjMsMCwwLDEtMS4zLTEuM1YyMS4yaC0yLjdhMS4zLDEuMywwLDAsMS0xLjMtMS4zVjE2LjVhMS4zLDEuMywwLDAsMSwxLjMtMS4zaDIuN1YxMi41YTEuMywxLjMsMCwwLDEsMS4zLTEuM2gzLjQxYTEuMywxLjMsMCwwLDEsMS4yOSwxLjN2Mi43aDIuNzFhMS4zLDEuMywwLDAsMSwxLjI5LDEu''@;'; put 'put ''M3YzLjRhMS4zLDEuMywwLDAsMS0xLjI5LDEuM0gyMS40NHYyLjdBMS4zLDEuMywwLDAsMSwyMC4xNSwyNS4yWk0xNywyMy42aDIuODF2LTRoNFYxNi44aC00di00SDE3djRIMTN2Mi44aDRabTcuMTEtNi44WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5c''@;'; put 'put ''blxuICA8cGF0aCBkPSJNMzIsNkgyMy45MVY0LjVBMi41LDIuNSwwLDAsMCwyMS40MSwyaC03YTIuNSwyLjUsMCwwLDAtMi41LDIuNVY2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNMTMuOTEsNC41YS41LjUsMCww''@;'; put 'put ''LDEsLjUtLjVoN2EuNS41LDAsMCwxLC41LjVWNmgtOFpNMjQuNjQsMTkuOWEuNS41LDAsMCwxLS41LjVoLTMuNXYzLjVhLjUuNSwwLDAsMS0uNS41aC0zLjRhLjUuNSwwLDAsMS0uNS0uNVYyMC40aC0zLjVhLjUuNSwwLDAsMS0uNS0uNVYxNi41YS41LjUsMCwwLDEsLjUtLjVoMy41VjEyLjVh''@;'; put 'put ''LjUuNSwwLDAsMSwuNS0uNWgzLjRhLjUuNSwwLDAsMSwuNS41VjE2aDMuNWEuNS41LDAsMCwxLC41LjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICcpLEwuQ2xyU2hhcGVDb2xvclBhbGV0dGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIxLjU0''@;'; put 'put ''LDIzLjA1YTMuMjIsMy4yMiwwLDAsMS0zLTEuNzdBMy4wNSwzLjA1LDAsMCwxLDE4LjUsMTlhMy43NCwzLjc0LDAsMCwxLDEuOTUtMi4wNkEzLjQsMy40LDAsMCwxLDI1LDE4LjNhMywzLDAsMCwxLC4wOCwyLjMyLDMuNjksMy42OSwwLDAsMS0yLDIuMDdBMy44NSwzLjg1LDAsMCwxLDIxLjU0''@;'; put 'put ''LDIzLjA1Wm0uNTQtNC45MWEyLjQxLDIuNDEsMCwwLDAtMSwuMjFoMEEyLjEzLDIuMTMsMCwwLDAsMjAsMTkuNTFhMS4zNywxLjM3LDAsMCwwLDAsMS4wOSwxLjgxLDEuODEsMCwwLDAsMi40NS42MywyLjEsMi4xLDAsMCwwLDEuMTItMS4xNSwxLjQsMS40LDAsMCwwLDAtMS4xQTEuNTksMS41''@;'; put 'put ''OSwwLDAsMCwyMi4wOCwxOC4xNFptLTEuMjktLjUyaDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMTYuMTksMzMuODdBMTMuNzIsMTMuNzIsMCwwLDEsNi40LDMwLDEzLjg2LDEzLjg2LDAsMCwxLDIsMjBjMC00LjQsMi04Ljg0''@;'; put 'put ''LDUuNjgtMTIuNWExOC4yLDE4LjIsMCwwLDEsMTMuMS01LjM3aC4xMmMzLjMzLDAsNi44NSwxLjQ5LDcuMjQsNC43My4yMSwxLjc3LS41OSwzLjQ3LTEuMjksNS0uNTUsMS4xNy0xLjExLDIuMzktLjcyLDIuODFzMSwuMTIsMi4wOS0uMmE2LjI3LDYuMjcsMCwwLDEsMy4zOC0uMzYsMywzLDAs''@;'; put 'put ''MCwxLDEuODcsMS41NmMuOTQsMS44My40Nyw0LjY3LS4yMyw2LjU0aDBBMTcuMzgsMTcuMzgsMCwwLDEsMjksMjguNzQsMTkuNDMsMTkuNDMsMCwwLDEsMTYuMTksMzMuODdaTTIwLjc4LDQuMTZBMTYuMjIsMTYuMjIsMCwwLDAsOS4wOSw5QzUuNzksMTIuMjMsNCwxNi4xNiw0LDIwQTExLjky''@;'; put 'put ''LDExLjkyLDAsMCwwLDcuOCwyOC42YzUuMzgsNS4yNSwxNC42MiwzLjU1LDE5Ljg3LTEuMzNhMTUuNTIsMTUuNTIsMCwwLDAsMy43LTUuNzVoMGMuNy0xLjkuODQtMy45Mi4zMi00LjkyYTEsMSwwLDAsMC0uNjEtLjU1LDQuODYsNC44NiwwLDAsMC0yLjI5LjM1Yy0xLjMxLjM5LTMsLjg5LTQu''@;'; put 'put ''MTItLjM1LTEuMzItMS40LS40Ni0zLjI1LjM3LTVhNy45Myw3LjkzLDAsMCwwLDEuMTEtMy45Yy0uMjQtMi0yLjgxLTIuOTUtNS4yNi0zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTIzLjg3LDI2LjY1QTIuNTksMi41OSwwLDAs''@;'; put 'put ''MCwyMi4zNSwyNUwyMiwyNC45bC0uNDYsMS41My4xNiwwYTEsMSwwLDAsMSwuNi42MWMuMTcuNi0uNDEsMS4zMS0xLjI2LDEuNTVzLTEuNzEtLjA3LTEuODgtLjY2bC0xLjU0LjQzaDBhMi44MywyLjgzLDAsMCwwLDIuODQsMS45MSw0LDQsMCwwLDAsMS0uMTRBMywzLDAsMCwwLDIzLjg3LDI2''@;'; put 'put ''LjY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTE1LjA3LDI1LjU5aDBhMi43MywyLjczLDAsMCwwLTIuMjQtMS44NGwtLjI3LDEuNThhMS4xMiwxLjEyLDAsMCwxLDEsLjdjLjE3LjU5LS40MSwxLjMtMS4yNiwxLjU0QTEuOTIs''@;'; put 'put ''MS45MiwwLDAsMSwxMSwyNy41MmExLDEsMCwwLDEtLjYtLjYxczAtLjA5LDAtLjEzbC0xLjU4LjE2YTIsMiwwLDAsMCwuMDYuNDFBMi41OSwyLjU5LDAsMCwwLDEwLjM3LDI5YTMuMzYsMy4zNiwwLDAsMCwxLjMxLjI1LDMuNywzLjcsMCwwLDAsMS0uMTRBMywzLDAsMCwwLDE1LjA3LDI1LjU5''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTEwLjc4LDE5LjE3YTIuNTksMi41OSwwLDAsMC0xLjUyLTEuNjUsMi45MSwyLjkxLDAsMCwwLS41LS4xNmwtLjM3LDEuNTZhMS4yMSwxLjIxLDAsMCwxLC4yNS4wOCwxLDEsMCwwLDEs''@;'; put 'put ''LjYuNmMuMTcuNi0uNDEsMS4zMS0xLjI2LDEuNTVzLTEuNzEtLjA2LTEuODgtLjY2YS44Ni44NiwwLDAsMSwwLS4zOWwtMS41Ni0uMzRhMi40LDIuNCwwLDAsMCwwLDEuMTZBMi44MywyLjgzLDAsMCwwLDcuNCwyMi44M2E0LDQsMCwwLDAsMS0uMTRBMywzLDAsMCwwLDEwLjc4LDE5LjE3WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgPHBhdGggZD0iTTEzLjQ1LDExLjRhMi41OSwyLjU5LDAsMCwwLTEuNTItMS42NSwxLjE3LDEuMTcsMCwwLDAtLjItLjA2bC0uNTIsMS41MWEuMzguMzgsMCwwLDEsLjEsMCwxLDEsMCwwLDEsLjYuNmMuMTcu''@;'; put 'put ''Ni0uNDEsMS4zMS0xLjI2LDEuNTVhMi4wNiwyLjA2LDAsMCwxLTEuMjgtLjA1LDEsMSwwLDAsMS0uNi0uNjEuODUuODUsMCwwLDEsMC0uMzJsLTEuNTgtLjE5YTIuMywyLjMsMCwwLDAsLjA2Ljk0QTIuNTYsMi41NiwwLDAsMCw4Ljc1LDE0LjhhMy4zNywzLjM3LDAsMCwwLDEuMzEuMjYsNCw0''@;'; put 'put ''LDAsMCwwLDEtLjE0QTMsMywwLDAsMCwxMy40NSwxMS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cbiAgPHBhdGggZD0iTTIxLDYuNzhhMi41NiwyLjU2LDAsMCwwLTEuNTItMS42NWwtLjMtLjFMMTguNyw2LjU2bC4xNSwwYTEsMSwwLDAsMSwuNi42''@;'; put 'put ''MWMuMTcuNi0uNDEsMS4zLTEuMjYsMS41NHMtMS43MS0uMDYtMS44OC0uNjVhLjkuOSwwLDAsMSwuMDYtLjU4TDE0Ljg5LDYuOWEyLjQ3LDIuNDcsMCwwLDAtLjEyLDEuNjMsMi44NCwyLjg0LDAsMCwwLDIuODQsMS45MSwzLjU4LDMuNTgsMCwwLDAsMS0uMTVBMywzLDAsMCwwLDIxLDYuNzha''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuXG4gIDxwYXRoIGQ9Ik0zMi4yMywxNC44OWMtMi4xLS41Ni00LjkzLDEuOC02LjM0LjMtMS43MS0xLjgyLDIuMjctNS41MywxLjg2LTguOTItLjMzLTIuNzgtMy41MS00LjA4LTYuNjYtNC4xQTE4LjUsMTgu''@;'; put 'put ''NSwwLDAsMCw3Ljc0LDcuNTljLTYuNjQsNi41OS04LjA3LDE2LTEuMzcsMjIuNDgsNi4yMSw2LDE2LjYxLDQuMjMsMjIuNjctMS40YTE3LjczLDE3LjczLDAsMCwwLDQuMjItNi41NEMzNC4zNCwxOS4yMywzNC40NCwxNS40OSwzMi4yMywxNC44OVpNOS40LDEwLjU3YTIuMjMsMi4yMywwLDAs''@;'; put 'put ''MSwyLjg3LDEuMjEsMi4yMiwyLjIyLDAsMCwxLTEuODEsMi41M0EyLjIyLDIuMjIsMCwwLDEsNy41OSwxMy4xLDIuMjMsMi4yMywwLDAsMSw5LjQsMTAuNTdaTTUuMDcsMjAuODJhMi4yMiwyLjIyLDAsMCwxLDEuODItMi41M0EyLjIyLDIuMjIsMCwwLDEsOS43NSwxOS41LDIuMjMsMi4yMyww''@;'; put 'put ''LDAsMSw3Ljk0LDIyLDIuMjQsMi4yNCwwLDAsMSw1LjA3LDIwLjgyWm03LDguMzNhMi4yMiwyLjIyLDAsMCwxLTIuODctMS4yMUEyLjIzLDIuMjMsMCwwLDEsMTEsMjUuNDFhMi4yMywyLjIzLDAsMCwxLDIuODcsMS4yMUEyLjIyLDIuMjIsMCwwLDEsMTIsMjkuMTVaTTE1LDguMjZhMi4yMywy''@;'; put 'put ''LjIzLDAsMCwxLDEuODEtMi41MywyLjI0LDIuMjQsMCwwLDEsMi44NywxLjIxLDIuMjIsMi4yMiwwLDAsMS0xLjgyLDIuNTNBMi4yMSwyLjIxLDAsMCwxLDE1LDguMjZabTUuODIsMjIuMTlhMi4yMiwyLjIyLDAsMCwxLTIuODctMS4yMSwyLjIzLDIuMjMsMCwwLDEsMS44MS0yLjUzLDIuMjQs''@;'; put 'put ''Mi4yNCwwLDAsMSwyLjg3LDEuMjFBMi4yMiwyLjIyLDAsMCwxLDIwLjc4LDMwLjQ1Wm01LTEwLjQ2YTMuMiwzLjIsMCwwLDEtMS42OSwxLjc2LDMuNTMsMy41MywwLDAsMS0xLjQuMywyLjc4LDIuNzgsMCwwLDEtMi41Ni0xLjUsMi40OSwyLjQ5LDAsMCwxLS4wNy0yLDMuMiwzLjIsMCwwLDEs''@;'; put 'put ''MS42OS0xLjc2LDMsMywwLDAsMSw0LDEuMkEyLjU0LDIuNTQsMCwwLDEsMjUuNzksMjBaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksTC5Fc3NlbnRpYWxTaGFwZXM9eyJhZGQtdGV4dCI6TC5DbHJTaGFwZUFkZFRleHQsImFsYXJtLW9mZiI6TC5DbHJTaGFw''@;'; put 'put ''ZUFsYXJtT2ZmLHBpbmJvYXJkOkwuQ2xyU2hhcGVQaW5ib2FyZCxuZXc6TC5DbHJTaGFwZU5ldywiYnViYmxlLWV4Y2xhbWF0aW9uIjpMLkNsclNoYXBlQnViYmxlRXhjbGFtYXRpb24sImdyaWQtdmlldyI6TC5DbHJTaGFwZUdyaWRWaWV3LCJjdXJzb3ItYXJyb3ciOkwuQ2xyU2hhcGVDdXJz''@;'; put 'put ''b3JBcnJvdywiY3Vyc29yLWhhbmQiOkwuQ2xyU2hhcGVDdXJzb3JIYW5kLCJjdXJzb3ItaGFuZC1jbGljayI6TC5DbHJTaGFwZUN1cnNvckhhbmRDbGljaywiY3Vyc29yLWhhbmQtZ3JhYiI6TC5DbHJTaGFwZUN1cnNvckhhbmRHcmFiLCJjdXJzb3ItaGFuZC1vcGVuIjpMLkNsclNoYXBlQ3Vy''@;'; put 'put ''c29ySGFuZE9wZW4sImN1cnNvci1tb3ZlIjpMLkNsclNoYXBlQ3Vyc29yTW92ZSwiZmlyc3QtYWlkIjpMLkNsclNoYXBlRmlyc3RBaWQscmVzaXplOkwuQ2xyU2hhcGVSZXNpemUsb2JqZWN0czpMLkNsclNoYXBlT2JqZWN0cyxib29rOkwuQ2xyU2hhcGVCb29rLGFzdGVyaXNrOkwuQ2xyU2hh''@;'; put 'put ''cGVBc3RlcmlzayxidWc6TC5DbHJTaGFwZUJ1ZyxzY2lzc29yczpMLkNsclNoYXBlU2Npc3NvcnMsdGhlcm1vbWV0ZXI6TC5DbHJTaGFwZVRoZXJtb21ldGVyLHBlbmNpbDpMLkNsclNoYXBlUGVuY2lsLG5vdGU6TC5DbHJTaGFwZU5vdGUscmVmcmVzaDpMLkNsclNoYXBlUmVmcmVzaCxzeW5j''@;'; put 'put ''OkwuQ2xyU2hhcGVTeW5jLCJ2aWV3LWxpc3QiOkwuQ2xyU2hhcGVWaWV3TGlzdCwidmlldy1jYXJkcyI6TC5DbHJTaGFwZVZpZXdDYXJkcywidHJlZS12aWV3IjpMLkNsclNoYXBlVHJlZVZpZXcsbGlnaHRidWxiOkwuQ2xyU2hhcGVMaWdodGJ1bGIsZG93bmxvYWQ6TC5DbHJTaGFwZURvd25s''@;'; put 'put ''b2FkLHVwbG9hZDpMLkNsclNoYXBlVXBsb2FkLGxvY2s6TC5DbHJTaGFwZUxvY2ssdW5sb2NrOkwuQ2xyU2hhcGVVbmxvY2ssdXNlcnM6TC5DbHJTaGFwZVVzZXJzLCJwb3Atb3V0IjpMLkNsclNoYXBlUG9wT3V0LGZpbHRlcjpMLkNsclNoYXBlRmlsdGVyLHBpbjpMLkNsclNoYXBlUGluLGZp''@;'; put 'put ''bGU6TC5DbHJTaGFwZUZpbGUscGx1czpMLkNsclNoYXBlUGx1cyxtaW51czpMLkNsclNoYXBlTWludXMsIm1pbnVzLWNpcmNsZSI6TC5DbHJTaGFwZU1pbnVzQ2lyY2xlLCJwbHVzLWNpcmNsZSI6TC5DbHJTaGFwZVBsdXNDaXJjbGUsYmFuOkwuQ2xyU2hhcGVCYW4sInRpbWVzLWNpcmNsZSI6''@;'; put 'put ''TC5DbHJTaGFwZVRpbWVzQ2lyY2xlLHRyYXNoOkwuQ2xyU2hhcGVUcmFzaCxjaXJjbGU6TC5DbHJTaGFwZUNpcmNsZSx0YWc6TC5DbHJTaGFwZVRhZyx0YWdzOkwuQ2xyU2hhcGVUYWdzLGhpc3Rvcnk6TC5DbHJTaGFwZUhpc3RvcnksY2xvY2s6TC5DbHJTaGFwZUNsb2NrLCJhbGFybS1jbG9j''@;'; put 'put ''ayI6TC5DbHJTaGFwZUFsYXJtQ2xvY2ssYXJyb3c6RWUuQ2xyU2hhcGVBcnJvdywiY2lyY2xlLWFycm93IjpMLkNsclNoYXBlQ2lyY2xlQXJyb3csImNoaWxkLWFycm93IjpMLkNsclNoYXBlQ2hpbGRBcnJvdyxjb3B5OkwuQ2xyU2hhcGVDb3B5LGhlbHA6TC5DbHJTaGFwZUhlbHAsbG9naW46''@;'; put 'put ''TC5DbHJTaGFwZUxvZ2luLGxvZ291dDpMLkNsclNoYXBlTG9nb3V0LHByaW50ZXI6TC5DbHJTaGFwZVByaW50ZXIsd29ybGQ6TC5DbHJTaGFwZVdvcmxkLHNsaWRlcjpMLkNsclNoYXBlU2xpZGVyLGNsaXBib2FyZDpMLkNsclNoYXBlQ2xpcGJvYXJkLGZpcmV3YWxsOkwuQ2xyU2hhcGVGaXJl''@;'; put 'put ''d2FsbCxsaXN0OkwuQ2xyU2hhcGVMaXN0LHJlZG86TC5DbHJTaGFwZVJlZG8sdW5kbzpMLkNsclNoYXBlVW5kbyxzY3JvbGw6TC5DbHJTaGFwZVNjcm9sbCwiZmlsZS1zZXR0aW5ncyI6TC5DbHJTaGFwZUZpbGVTZXR0aW5ncywidHdvLXdheS1hcnJvd3MiOkwuQ2xyU2hhcGVUd29XYXlBcnJv''@;'; put 'put ''d3Msc3dpdGNoOkwuQ2xyU2hhcGVTd2l0Y2gsdG9vbHM6TC5DbHJTaGFwZVRvb2xzLCJ3aW5kb3ctY2xvc2UiOkwuQ2xyU2hhcGVXaW5kb3dDbG9zZSwid2luZG93LW1heCI6TC5DbHJTaGFwZVdpbmRvd01heCwid2luZG93LW1pbiI6TC5DbHJTaGFwZVdpbmRvd01pbiwid2luZG93LXJlc3Rv''@;'; put 'put ''cmUiOkwuQ2xyU2hhcGVXaW5kb3dSZXN0b3JlLCJ6b29tLWluIjpMLkNsclNoYXBlWm9vbUluLCJ6b29tLW91dCI6TC5DbHJTaGFwZVpvb21PdXQsa2V5OkwuQ2xyU2hhcGVLZXksbGlicmFyeTpMLkNsclNoYXBlTGlicmFyeSxib2x0OkwuQ2xyU2hhcGVCb2x0LHdyZW5jaDpMLkNsclNoYXBl''@;'; put 'put ''V3JlbmNoLGJ1bGxzZXllOkwuQ2xyU2hhcGVCdWxsc2V5ZSx0YXJnZXQ6TC5DbHJTaGFwZVRhcmdldCxmbGFtZTpMLkNsclNoYXBlRmxhbWUsaG91cmdsYXNzOkwuQ2xyU2hhcGVIb3VyZ2xhc3MsIm5vLWFjY2VzcyI6TC5DbHJTaGFwZU5vQWNjZXNzLG9yZ2FuaXphdGlvbjpMLkNsclNoYXBl''@;'; put 'put ''T3JnYW5pemF0aW9uLGJhbGFuY2U6TC5DbHJTaGFwZUJhbGFuY2UsImlkLWJhZGdlIjpMLkNsclNoYXBlSWRCYWRnZSxyZXBlYXQ6TC5DbHJTaGFwZVJlcGVhdCwiZmlsZS1ncm91cCI6TC5DbHJTaGFwZUZpbGVHcm91cCxwYXBlcmNsaXA6TC5DbHJTaGFwZVBhcGVyY2xpcCxzaHJpbms6TC5D''@;'; put 'put ''bHJTaGFwZVNocmluaywiYWNjZXNzaWJpbGl0eS0xIjpMLkNsclNoYXBlQWNjZXNzaWJpbGl0eTEsImFjY2Vzc2liaWxpdHktMiI6TC5DbHJTaGFwZUFjY2Vzc2liaWxpdHkyLCJzb3J0LWJ5IjpMLkNsclNoYXBlU29ydEJ5LCJjb2xsYXBzZS1jYXJkIjpMLkNsclNoYXBlQ29sbGFwc2VDYXJk''@;'; put 'put ''LCJleHBhbmQtY2FyZCI6TC5DbHJTaGFwZUV4cGFuZENhcmQsYnJpZWZjYXNlOkwuQ2xyU2hhcGVCcmllZmNhc2UsImNvbG9yLXBpY2tlciI6TC5DbHJTaGFwZUNvbG9yUGlja2VyLCJjb3B5LXRvLWNsaXBib2FyZCI6TC5DbHJTaGFwZUNvcHlUb0NsaXBib2FyZCwiZmlsdGVyLTIiOkwuQ2xy''@;'; put 'put ''U2hhcGVGaWx0ZXIyLCJkcmFnLWhhbmRsZSI6TC5DbHJTaGFwZURyYWdIYW5kbGUsbW9vbjpMLkNsclNoYXBlTW9vbixzdW46TC5DbHJTaGFwZVN1bix3YW5kOkwuQ2xyU2hhcGVXYW5kLGNsb25lOkwuQ2xyU2hhcGVDbG9uZSxkZXRhaWxzOkwuQ2xyU2hhcGVEZXRhaWxzLCJkcmFnLWhhbmRs''@;'; put 'put ''ZS1jb3JuZXIiOkwuQ2xyU2hhcGVEcmFnSGFuZGxlQ29ybmVyLGVyYXNlcjpMLkNsclNoYXBlRXJhc2VyLGxhbmRzY2FwZTpMLkNsclNoYXBlTGFuZHNjYXBlLHBhc3RlOkwuQ2xyU2hhcGVQYXN0ZSxwb3J0cmFpdDpMLkNsclNoYXBlUG9ydHJhaXQsImZpbGUtemlwIjpMLkNsclNoYXBlRmls''@;'; put 'put ''ZVppcCwiZmlsdGVyLW9mZiI6TC5DbHJTaGFwZUZpbHRlck9mZixyZWN5Y2xlOkwuQ2xyU2hhcGVSZWN5Y2xlLHRyZWU6TC5DbHJTaGFwZVRyZWUsZmlzaDpMLkNsclNoYXBlRmlzaCxmb3JtOkwuQ2xyU2hhcGVGb3JtLGZ1ZWw6TC5DbHJTaGFwZUZ1ZWwsc25vd2ZsYWtlOkwuQ2xyU2hhcGVT''@;'; put 'put ''bm93Zmxha2UsdGFibGU6TC5DbHJTaGFwZVRhYmxlLCJkb3QtY2lyY2xlIjpMLkNsclNoYXBlRG90Q2lyY2xlLHZvbHVtZTpMLkNsclNoYXBlVm9sdW1lLGNyb3NzaGFpcnM6TC5DbHJTaGFwZUNyb3NzaGFpcnMsYmV0YTpMLkNsclNoYXBlQmV0YSwiY29sb3ItcGFsZXR0ZSI6TC5DbHJTaGFw''@;'; put 'put ''ZUNvbG9yUGFsZXR0ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuRXNzZW50aWFsU2hhcGVzLCJlZGl0IiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzLnBlbmNpbCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkVzc2VudGlhbFNoYXBlcywibm90ZS1lZGl0Iiwo''@;'; put 'put ''MCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzLm5vdGUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Fc3NlbnRpYWxTaGFwZXMsImdyb3VwIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzLnVzZXJzKSksT2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KEwuRXNzZW50aWFsU2hhcGVzLCJkb2N1bWVudCIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkVzc2VudGlhbFNoYXBlcy5maWxlKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuRXNzZW50aWFsU2hhcGVzLCJhZGQiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Fc3NlbnRpYWxTaGFwZXMu''@;'; put 'put ''cGx1cykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkVzc2VudGlhbFNoYXBlcywiY2FuY2VsIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzLmJhbikpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkVzc2VudGlhbFNoYXBlcywicmVtb3ZlIiwoMCxCLmRlc2NyaXB0''@;'; put 'put ''b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzWyJ0aW1lcy1jaXJjbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkVzc2VudGlhbFNoYXBlcywic2lnbi1pbiIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkVzc2VudGlhbFNoYXBlcy5sb2dpbikpLE9iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShMLkVzc2VudGlhbFNoYXBlcywic2lnbi1vdXQiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Fc3NlbnRpYWxTaGFwZXMubG9nb3V0KSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuRXNzZW50aWFsU2hhcGVzLCJsaWdodG5pbmciLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5Fc3NlbnRp''@;'; put 'put ''YWxTaGFwZXMuYm9sdCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkVzc2VudGlhbFNoYXBlcywiZmxvdy1jaGFydCIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkVzc2VudGlhbFNoYXBlcy5vcmdhbml6YXRpb24pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Fc3NlbnRpYWxTaGFwZXMs''@;'; put 'put ''ImFsZXJ0IiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzWyJidWJibGUtZXhjbGFtYXRpb24iXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkVzc2VudGlhbFNoYXBlcywicGlubmVkIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzLnBp''@;'; put 'put ''bmJvYXJkKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuRXNzZW50aWFsU2hhcGVzLCJhdHRhY2htZW50IiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzLnBhcGVyY2xpcCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLkVzc2VudGlhbFNoYXBlcywiYXR0YWNobWVu''@;'; put 'put ''dCIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLkVzc2VudGlhbFNoYXBlcy5wYXBlcmNsaXApKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5Fc3NlbnRpYWxTaGFwZXMsInJlc2l6ZS1kb3duIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzLnNocmluaykpLE9iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShMLkVzc2VudGlhbFNoYXBlcywicmVzaXplLXVwIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuRXNzZW50aWFsU2hhcGVzLnJlc2l6ZSkpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3''@;'; put 'put ''aW5kb3cuQ2xhcml0eUljb25zLmFkZChMLkVzc2VudGlhbFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvbWVkaWEtc2hhcGVzLnRzIjpmdW5jdGlvbihKZSxMLG1lKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEwsIl9fZXNNb2R1bGUiLHt2YWx1ZToh''@;'; put 'put ''MH0pLEwuTWVkaWFTaGFwZXM9TC5DbHJTaGFwZU1pY3JvcGhvbmVNdXRlPUwuQ2xyU2hhcGVNaWNyb3Bob25lPUwuQ2xyU2hhcGVWaWRlb0dhbGxlcnk9TC5DbHJTaGFwZVJlcGxheU9uZT1MLkNsclNoYXBlUmVwbGF5QWxsPUwuQ2xyU2hhcGVJbWFnZUdhbGxlcnk9TC5DbHJTaGFwZU11c2lj''@;'; put 'put ''Tm90ZT1MLkNsclNoYXBlRmlsbVN0cmlwPUwuQ2xyU2hhcGVIZWFkcGhvbmVzPUwuQ2xyU2hhcGVWb2x1bWVNdXRlPUwuQ2xyU2hhcGVWb2x1bWVVcD1MLkNsclNoYXBlVm9sdW1lRG93bj1MLkNsclNoYXBlU2h1ZmZsZT1MLkNsclNoYXBlVmlkZW9DYW1lcmE9TC5DbHJTaGFwZUNhbWVyYT1M''@;'; put 'put ''LkNsclNoYXBlRmFzdEZvcndhcmQ9TC5DbHJTaGFwZVJld2luZD1MLkNsclNoYXBlUG93ZXI9TC5DbHJTaGFwZVN0b3A9TC5DbHJTaGFwZVN0ZXBGb3J3YXJkPUwuQ2xyU2hhcGVQYXVzZT1MLkNsclNoYXBlUGxheT12b2lkIDA7dmFyIEI9bWUoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxz''@;'; put 'put ''L3N2Zy10YWctZ2VuZXJhdG9yLnRzIik7TC5DbHJTaGFwZVBsYXk9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik04LjA3LDMxLjZBMi4wNywyLjA3LDAsMCwxLDYsMjkuNTNWNi4zMkEyLjA3LDIuMDcsMCwwLDEs''@;'; put 'put ''OSw0LjQ3TDMyLjIxLDE2LjA4YTIuMDcsMi4wNywwLDAsMSwwLDMuN0w5LDMxLjM4QTIuMDYsMi4wNiwwLDAsMSw4LjA3LDMxLjZabTAtMjUuMzRMOCw2LjMyVjI5LjUzbC4xLjA2TDMxLjMxLDE4YS4wNi4wNiwwLDAsMCwwLS4wNloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuMTYsMTYuMDgsOC45NCw0LjQ3QTIuMDcsMi4wNywwLDAsMCw2LDYuMzJWMjkuNTNhMi4wNiwyLjA2LDAsMCwwLDMsMS44NUwzMi4xNiwxOS43N2EyLjA3LDIuMDcsMCwwLDAsMC0zLjdaIi8+JyksTC5DbHJTaGFwZVBhdXNl''@;'; put 'put ''PSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTIuOTMsMzJINi4wN0EyLjA3LDIuMDcsMCwwLDEsNCwyOS45M1Y2LjA3QTIuMDcsMi4wNywwLDAsMSw2LjA3LDRoNi44N0EyLjA3LDIuMDcsMCwwLDEsMTUsNi4w''@;'; put 'put ''N1YyOS45M0EyLjA3LDIuMDcsMCwwLDEsMTIuOTMsMzJaTTEzLDZINlYzMGg3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjkuOTMsMzJIMjMuMDdBMi4wNywyLjA3LDAsMCwxLDIxLDI5LjkzVjYuMDdB''@;'; put 'put ''Mi4wNywyLjA3LDAsMCwxLDIzLjA3LDRoNi44N0EyLjA3LDIuMDcsMCwwLDEsMzIsNi4wN1YyOS45M0EyLjA3LDIuMDcsMCwwLDEsMjkuOTMsMzJaTTMwLDZIMjNWMzBoN1oiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiB4''@;'; put 'put ''PSIzLjk1IiB5PSI0IiB3aWR0aD0iMTEiIGhlaWdodD0iMjgiIHJ4PSIyLjA3IiByeT0iMi4wNyIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIHg9IjIwLjk1IiB5PSI0IiB3aWR0aD0iMTEiIGhlaWdodD0iMjgiIHJ4PSIy''@;'; put 'put ''LjA3IiByeT0iMi4wNyIvPicpLEwuQ2xyU2hhcGVTdGVwRm9yd2FyZD0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTUsMzIuMjNhMiwyLDAsMCwxLTItMlY1Ljc3QTIsMiwwLDAsMSw2LjE3LDQuMTRMMjMuMjMs''@;'; put 'put ''MTYuMzhhMiwyLDAsMCwxLDAsMy4yNWgwTDYuMTcsMzEuODZBMiwyLDAsMCwxLDUsMzIuMjNaTTUsNS43N1YzMC4yM0wyMi4wNywxOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMxLDMySDI4YTIsMiww''@;'; put 'put ''LDAsMS0yLTJWNmEyLDIsMCwwLDEsMi0yaDNhMiwyLDAsMCwxLDIsMlYzMEEyLDIsMCwwLDEsMzEsMzJaTTI4LDZWMzBoM1Y2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik01LDMxLjlhMiwyLDAsMCwxLTItMlY1''@;'; put 'put ''LjQ0QTIsMiwwLDAsMSw2LjEyLDMuODFMMjMuMTgsMTZhMiwyLDAsMCwxLDAsMy4yNWgwTDYuMTIsMzEuNTJBMiwyLDAsMCwxLDUsMzEuOVoiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiB4PSIyNS45NSIgeT0iMy42NyIg''@;'; put 'put ''d2lkdGg9IjciIGhlaWdodD0iMjgiIHJ4PSIyIiByeT0iMiIvPicpLEwuQ2xyU2hhcGVTdG9wPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAsMzJINmEyLDIsMCwwLDEtMi0yVjZBMiwyLDAsMCwxLDYsNEgz''@;'; put 'put ''MGEyLDIsMCwwLDEsMiwyVjMwQTIsMiwwLDAsMSwzMCwzMlpNNiw2VjMwSDMwVjZaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgeD0iMy45NiIgeT0iNCIgd2lkdGg9IjI3Ljk5IiBoZWlnaHQ9IjI4IiByeD0iMiIgcnk9''@;'; put 'put ''IjIiLz4nKSxMLkNsclNoYXBlUG93ZXI9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyMWExLDEsMCwwLDEtMS0xVjRhMSwxLDAsMCwxLDIsMFYyMEExLDEsMCwwLDEsMTgsMjFaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwzNC4xNWExNSwxNSwwLDAsMS03LjUyLTI4LDEsMSwwLDAsMSwxLDEuNzMsMTMsMTMsMCwxLDAsMTMsMCwxLDEsMCwxLDEsMS0xLjczLDE1LDE1LDAsMCwxLTcuNTIsMjhaIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xOCwyMWExLDEsMCwwLDAsMS0xVjRhMSwxLDAsMCwwLTIsMFYyMEExLDEsMCwwLDAsMTgsMjFaIi8+XG4gICAgICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0zMi41MSwxNS40SDMwLjQ0YTEzLDEzLDAsMSwxLTE5LTcuNSwxLDEsMCwwLDAtMS0xLjczQTE1LDE1LDAsMSwwLDMzLDE5LjE1LDE0LjksMTQuOSwwLDAsMCwzMi41MSwx''@;'; put 'put ''NS40WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwx''@;'; put 'put ''LjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTgsMjFhMSwxLDAsMCwxLTEt''@;'; put 'put ''MVY0YTEsMSwwLDAsMSwyLDBWMjBBMSwxLDAsMCwxLDE4LDIxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMwLDEzLjVsLS4zMSwwQTEzLDEzLDAsMSwxLDExLjQ4LDcuOWEx''@;'; put 'put ''LDEsMCwwLDAtMS0xLjczLDE1LDE1LDAsMSwwLDIxLjMxLDcuMUE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9''@;'; put 'put ''IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabS4wNiwxNy42OGExLjI4LDEuMjgsMCwwLDEtMS4yOS0xLjI4Vjgu''@;'; put 'put ''NjVhMS4yOSwxLjI5LDAsMCwxLDIuNTgsMFYxOC40QTEuMjgsMS4yOCwwLDAsMSwxOC4wNiwxOS42OFpNMTgsMjcuNzlBOS44OCw5Ljg4LDAsMCwxLDEyLjE3LDkuODVhMS40LDEuNCwwLDAsMSwxLjk0LjMxLDEuMzcsMS4zNywwLDAsMS0uMzEsMS45Miw3LjE4LDcuMTgsMCwxLDAsMTEuNDMs''@;'; put 'put ''NS44LDcuMDcsNy4wNywwLDAsMC0zLTUuNzZBMS4zNywxLjM3LDAsMCwxLDIyLDEwLjJhMS40LDEuNCwwLDAsMSwxLjk0LS4yOUE5Ljg4LDkuODgsMCwwLDEsMTgsMjcuNzlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRoLTZBOS43LDkuNywwLDAsMSwyOCwxNy44OWExMCwxMCwwLDEsMS0xNS44My04LDEuNCwxLjQsMCwwLDEsMS45NC4zMSwxLjM3LDEuMzcsMCwwLDEtLjMxLDEuOTIsNy4xOCw3LjE4LDAsMSwwLDExLjQzLDUuOCw3LjA4LDcuMDgsMCww''@;'; put 'put ''LDAtLjQ1LTIuNDlIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LjM1LDE0djQuNGExLjI5LDEuMjksMCwwLDEtMi41OCwwVjguNjVhMS4yOSwxLjI5LDAsMCwxLDIuNTgsMHYuNzFsMy43Ni02LjUxQTE2LDE2LDAsMSwwLDM0LDE4YTE2LDE2LDAsMCwwLS4yMy0yLjYxWiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjku''@;'; put 'put ''MDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTMwLDEzLjVhNy40Nyw3LjQ3LDAsMCwxLTMuNTctLjlBOS44Myw5LjgzLDAs''@;'; put 'put ''MCwxLDI4LDE3Ljg5YTEwLDEwLDAsMSwxLTE1LjgzLTgsMS40LDEuNCwwLDAsMSwxLjk0LjMxLDEuMzcsMS4zNywwLDAsMS0uMzEsMS45Miw3LjE4LDcuMTgsMCwxLDAsMTEuNDMsNS44LDcuMDcsNy4wNywwLDAsMC0zLTUuNzZBMS4zNywxLjM3LDAsMCwxLDIyLDEwLjJhMS4zOCwxLjM4LDAs''@;'; put 'put ''MCwxLDEuNTItLjQ5LDcuNDUsNy40NSwwLDAsMS0uMy02LjgzLDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M0E3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNMTYuNzcsOC42NWExLjI5LDEuMjksMCwwLDEsMi41OCwwVjE4LjRhMS4yOSwxLjI5LDAsMCwxLTIuNTgsMFoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksTC5DbHJTaGFwZVJld2luZD0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE3LjA5LDMxLjU4bC0xNS4zMi0xMmEyLDIsMCwwLDEsMC0zLjE1bDE1LjMyLTEyYTEuOTMsMS45MywwLDAsMSwyLjA2LS4yMkExLjc3LDEuNzcsMCwwLDEsMjAsNnY2LjdMMzAuODMsNC40MmExLjkzLDEuOTMsMCwwLDEsMi4wNi0uMjJB''@;'; put 'put ''MiwyLDAsMCwxLDM0LDZWMzBhMiwyLDAsMCwxLTEuMTEsMS43OSwxLjk0LDEuOTQsMCwwLDEtMi4wNi0uMjJMMjAsMjMuMzFWMzBhMS43NywxLjc3LDAsMCwxLS44NSwxLjc5LDEuOTQsMS45NCwwLDAsMS0yLjA2LS4yMlpNMzIsMzBsLjA2LTI0TDE4LDE2LjhWNkwzLDE4LDE4LDMwVjE5LjJa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTYuOTIsMzEuNTgsMS42LDE5LjU3YTIsMiwwLDAsMSwwLTMuMTVsMTUuMzItMTJBMS45MywxLjkzLDAsMCwxLDE5LDQuMiwxLjg5LDEuODksMCwwLDEsMjAsNnY2LjdMMzAu''@;'; put 'put ''NjYsNC40MmExLjkzLDEuOTMsMCwwLDEsMi4wNi0uMjJBMiwyLDAsMCwxLDMzLjgzLDZWMzBhMiwyLDAsMCwxLTEuMTEsMS43OSwxLjk0LDEuOTQsMCwwLDEtMi4wNi0uMjJMMjAsMjMuMzFWMzBhMS44OSwxLjg5LDAsMCwxLTEsMS43OSwxLjk0LDEuOTQsMCwwLDEtMi4wNi0uMjJaIi8+Jyks''@;'; put 'put ''TC5DbHJTaGFwZUZhc3RGb3J3YXJkPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTcuNzcsMzEuOTJhMiwyLDAsMCwxLS44Ni0uMkExLjgxLDEuODEsMCwwLDEsMTYsMjkuOTN2LTYuN0w1LjI0LDMxLjVhMS45''@;'; put 'put ''NCwxLjk0LDAsMCwxLTIuMDYuMjIsMiwyLDAsMCwxLTEuMTEtMS43OXYtMjRBMiwyLDAsMCwxLDMuMTgsNC4xMmExLjkzLDEuOTMsMCwwLDEsMi4wNi4yMkwxNiwxMi42MVY1LjkxYTEuODEsMS44MSwwLDAsMSwuOTEtMS43OUExLjkzLDEuOTMsMCwwLDEsMTksNC4zNGwxNS4zMiwxMmEyLDIs''@;'; put 'put ''MCwwLDEsMCwzLjE1TDE5LDMxLjVBMiwyLDAsMCwxLDE3Ljc3LDMxLjkyWm0wLTEyLjhWMjkuOTNsMTUuMjYtMTItMTUuMzItMTIsLjA2LDEwLjgxTDQsNS45MXYyNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xNy43''@;'; put 'put ''MSwzMmEyLDIsMCwwLDEtLjg2LS4yQTEuNzcsMS43NywwLDAsMSwxNiwzMHYtNi43TDUuMTcsMzEuNThhMS45NCwxLjk0LDAsMCwxLTIuMDYuMjJBMiwyLDAsMCwxLDIsMzBWNkEyLDIsMCwwLDEsMy4xMSw0LjJhMS45MywxLjkzLDAsMCwxLDIuMDYuMjJMMTYsMTIuNjlWNmExLjc3LDEuNzcs''@;'; put 'put ''MCwwLDEsLjg1LTEuNzksMS45MywxLjkzLDAsMCwxLDIuMDYuMjJsMTUuMzIsMTJhMiwyLDAsMCwxLDAsMy4xNWwtMTUuMzIsMTJBMiwyLDAsMCwxLDE3LjcxLDMyWiIvPicpLEwuQ2xyU2hhcGVDYW1lcmE9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDhIMjQuN0wyMy42NCw1LjI4''@;'; put 'put ''QTIsMiwwLDAsMCwyMS43OCw0SDE0LjIyYTIsMiwwLDAsMC0xLjg3LDEuMjhMMTEuMyw4SDRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTBBMiwyLDAsMCwwLDMyLDhabTAsMjJINFYxMGg4LjY3bDEuNTUtNGg3LjU2bDEuNTUsNEgzMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOSwxOWE5LDksMCwxLDAsOS05QTksOSwwLDAsMCw5LDE5Wm0xNi40LDBBNy40LDcuNCwwLDEsMSwxOCwxMS42LDcuNDEsNy40MSwwLDAsMSwyNS40LDE5WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik05LjM3LDEyLjgzYS44LjgsMCwwLDAtLjgtLjhINi4xN2EuOC44LDAsMCwwLDAsMS42aDIuNEEuOC44LDAsMCwwLDkuMzcsMTIuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEyLjM0LDE5YTUuNTcsNS41NywwLDAsMCwzLjI0LDVsLjg1LTEuMzdhNCw0LDAsMSwxLDQuMTEtNi42MWwuODYtMS4zOEE1LjU2LDUuNTYsMCwwLDAsMTIuMzQsMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDhIMjQuN0wyMy42NCw1LjI4QTIsMiwwLDAsMCwyMS43OCw0SDE0LjIyYTIsMiwwLDAsMC0xLjg3LDEuMjhMMTEuMyw4SDRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTBBMiwy''@;'; put 'put ''LDAsMCwwLDMyLDhaTTYuMTcsMTMuNjNhLjguOCwwLDAsMSwwLTEuNmgyLjRhLjguOCwwLDAsMSwwLDEuNlpNMTgsMjhhOSw5LDAsMSwxLDktOUE5LDksMCwwLDEsMTgsMjhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MTEuMTEsMTkuMDZhNy4wNyw3LjA3LDAsMCwwLDQuMTEsNi40MWwxLjA5LTEuNzRhNSw1LDAsMSwxLDUuMjItOC4zOWwxLjA5LTEuNzZhNy4wNiw3LjA2LDAsMCwwLTExLjUxLDUuNDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+JyksTC5DbHJTaGFwZVZpZGVv''@;'; put 'put ''Q2FtZXJhPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzQsMTAuMzRhMi4xMSwyLjExLDAsMCwwLTEuMTYtMS45LDIsMiwwLDAsMC0yLjEzLjE1TDI2LDExLjZWOGEyLDIsMCwwLDAtMi0ySDZhNCw0LDAsMCww''@;'; put 'put ''LTQsNFYyNmE0LDQsMCwwLDAsNCw0SDI0YTIsMiwwLDAsMCwyLTJWMjQuNGw0LjY0LDNhMi4wNywyLjA3LDAsMCwwLDIuMi4yQTIuMTEsMi4xMSwwLDAsMCwzNCwyNS42NlpNMzEuOTMsMjUuNzdjLS4wNiwwLS4xMSwwLS4xOS0uMDZMMjQsMjAuNzdWMjhINmEyLDIsMCwwLDEtMi0yVjEwQTIs''@;'; put 'put ''MiwwLDAsMSw2LDhIMjR2Ny4yM2w3LjgtNWEuMTEuMTEsMCwwLDEsLjEzLDAsLjExLjExLDAsMCwxLC4wNy4xMVYyNS42NkEuMTEuMTEsMCwwLDEsMzEuOTMsMjUuNzdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIu''@;'; put 'put ''Myw5LjM1LDI2LDEyLjlWOGEyLDIsMCwwLDAtMi0ySDZhNCw0LDAsMCwwLTQsNFYyNmE0LDQsMCwwLDAsNCw0SDI0YTIsMiwwLDAsMCwyLTJWMjMuMDhsNi4zLDMuNTVBMS4xLDEuMSwwLDAsMCwzNCwyNS43N1YxMC4yQTEuMSwxLjEsMCwwLDAsMzIuMyw5LjM1WiIvPicpLEwuQ2xyU2hhcGVT''@;'; put 'put ''aHVmZmxlPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjEuNjEsMTFoOC42MmwtMy4zLDMuM2ExLDEsMCwxLDAsMS40MSwxLjQyTDM0LDEwLjA4bC0uNzEtLjcxaDBMMjguMzQsNC40M2ExLDEsMCwwLDAtMS40''@;'; put 'put ''MSwxLjQyTDMwLjExLDlIMjFhMSwxLDAsMCwwLS44Ni41TDE3LjUsMTQuMDlsMS4xNiwyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xMS4wNywyNS4wN0gzYTEsMSwwLDAsMCwwLDJoOC42NWExLDEsMCwwLDAs''@;'; put 'put ''Ljg2LS41TDE1LjE4LDIyLDE0LDIwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yOC4zNCwyMC4xN2ExLDEsMCwwLDAtMS40MSwxLjQybDMuNSwzLjVIMjEuNjFMMTIuNTEsOS41M2ExLDEsMCwwLDAtLjg2LS41''@;'; put 'put ''SDNhMSwxLDAsMSwwLDAsMmg4LjA3bDkuMSwxNS41NWExLDEsMCwwLDAsLjg2LjVIMjkuOWwtMywzYTEsMSwwLDAsMCwxLjQxLDEuNDJsNC45NS00Ljk0aDBsLjcxLS43MVoiLz4nKSxMLkNsclNoYXBlVm9sdW1lRG93bj0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTIzLjQxLDI1LjExYTEsMSwwLDAsMS0uNTQtMS44NSw2LjIxLDYuMjEsMCwwLDAtLjE5LTEwLjY1LDEsMSwwLDEsMSwxLTEuNzNBOC4yMSw4LjIxLDAsMCwxLDIzLjk0LDI1LDEsMSwwLDAsMSwyMy40MSwyNS4xMVoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMzJhMiwyLDAsMCwxLTEuNDItLjU5TDkuMTQsMjRINGEyLDIsMCwwLDEtMi0yVjE0YTIsMiwwLDAsMSwyLTJIOS4yMmw3LjMzLTcuNDFBMiwyLDAsMCwxLDIwLDZWMzBhMiwyLDAsMCwx''@;'; put 'put ''LTEuMjQsMS44NUEyLDIsMCwwLDEsMTgsMzJaTTQsMTR2OEg5LjU2YTEsMSwwLDAsMSwuNzEuMjhMMTgsMzBWNmwtNy42NSw3LjY4YTEsMSwwLDAsMS0uNzEuM1pNMTgsNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0y''@;'; put 'put ''My40MSwyNS4xMWExLDEsMCwwLDEtLjU0LTEuODUsNi4yMSw2LjIxLDAsMCwwLS4xOS0xMC42NSwxLDEsMCwxLDEsMS0xLjczQTguMjEsOC4yMSwwLDAsMSwyMy45NCwyNSwxLDEsMCwwLDEsMjMuNDEsMjUuMTFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0yIiBkPSJNMTguMzQsMy44Nyw5LDEySDNhMSwxLDAsMCwwLTEsMVYyM2ExLDEsMCwwLDAsMSwxSDguODNsOS41MSw4LjNBMSwxLDAsMCwwLDIwLDMxLjU1VjQuNjJBMSwxLDAsMCwwLDE4LjM0LDMuODdaIi8+JyksTC5DbHJTaGFwZVZvbHVtZVVwPSgwLEIuY2xySWNv''@;'; put 'put ''blNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjMuNDEsMjUuMjVhMSwxLDAsMCwxLS41NC0xLjg1LDYuMjEsNi4yMSwwLDAsMC0uMTktMTAuNjUsMSwxLDAsMSwxLDEtMS43Myw4LjIxLDguMjEsMCwwLDEsLjI0LDE0LjA2QTEsMSww''@;'; put 'put ''LDAsMSwyMy40MSwyNS4yNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjUuNjIsMzEuMThhMSwxLDAsMCwxLS40NS0xLjg5QTEyLjQ0LDEyLjQ0LDAsMCwwLDI1LDYuODlhMSwxLDAsMSwxLC44Ny0xLjgsMTQu''@;'; put 'put ''NDQsMTQuNDQsMCwwLDEsLjI0LDI2QTEsMSwwLDAsMSwyNS42MiwzMS4xOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzIuMDZhMiwyLDAsMCwxLTEuNDItLjU5TDkuMTQsMjRINGEyLDIsMCwwLDEtMi0y''@;'; put 'put ''VjE0YTIsMiwwLDAsMSwyLTJIOS4yMmw3LjMzLTcuMzlBMiwyLDAsMCwxLDIwLDZ2MjRhMiwyLDAsMCwxLTEuMjQsMS44NUEyLDIsMCwwLDEsMTgsMzIuMDZaTTQsMTR2OEg5LjU2YTEsMSwwLDAsMSwuNzEuM0wxOCwzMC4wNlY2TDEwLjM1LDEzLjdhMSwxLDAsMCwxLS43MS4zWk0xOCw2WiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTIzLjQxLDI1LjI1YTEsMSwwLDAsMS0uNTQtMS44NSw2LjIxLDYuMjEsMCwwLDAtLjE5LTEwLjY1LDEsMSwwLDEsMSwxLTEuNzMsOC4yMSw4LjIxLDAsMCwxLC4yNCwxNC4wNkEx''@;'; put 'put ''LDEsMCwwLDEsMjMuNDEsMjUuMjVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjUuNjIsMzEuMThhMSwxLDAsMCwxLS40NS0xLjg5QTEyLjQ0LDEyLjQ0LDAsMCwwLDI1LDYuODlhMSwxLDAsMSwxLC44Ny0xLjgsMTQu''@;'; put 'put ''NDQsMTQuNDQsMCwwLDEsLjI0LDI2QTEsMSwwLDAsMSwyNS42MiwzMS4xOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xOC4zMyw0LDkuMDcsMTJoLTZhMSwxLDAsMCwwLTEsMXY5LjkyYTEsMSwwLDAsMCwxLDFIOC44''@;'; put 'put ''OGw5LjQ2LDguMjRBMSwxLDAsMCwwLDIwLDMxLjQzVjQuNzJBMSwxLDAsMCwwLDE4LjMzLDRaIi8+JyksTC5DbHJTaGFwZVZvbHVtZU11dGU9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zLjYxLDYuNDEsOS4x''@;'; put 'put ''OSwxMkg0YTIsMiwwLDAsMC0yLDJ2OGEyLDIsMCwwLDAsMiwySDkuMTRsNy40MSw3LjQ3QTIsMiwwLDAsMCwxOCwzMmEyLDIsMCwwLDAsLjc2LS4xNUEyLDIsMCwwLDAsMjAsMzBWMjIuNzdsNS44OSw1Ljg5Yy0uMjUuMTUtLjQ5LjI5LS43NS40MmExLDEsMCwwLDAsLjksMS43OSwxNC40LDE0''@;'; put 'put ''LjQsMCwwLDAsMS4zMS0uNzVsMi4yOCwyLjI4TDMxLDMxLDUsNVpNMTgsMzBsLTcuNzMtNy43N0ExLDEsMCwwLDAsOS41NiwyMkg0VjE0SDkuNjRhMSwxLDAsMCwwLC43MS0uM2wuMjYtLjI2TDE4LDIwLjgxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNC44OSw2LjY5QTEyLjQyLDEyLjQyLDAsMCwxLDI5LDI2LjFsMS40MiwxLjQyQTE0LjQyLDE0LjQyLDAsMCwwLDI1Ljc2LDQuODhhMSwxLDAsMSwwLS44NywxLjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMyIgZD0iTTIyLjY5LDEyLjYyQTYuMjcsNi4yNywwLDAsMSwyNS44LDE4YTYuMTcsNi4xNywwLDAsMS0xLjI0LDMuNzFMMjYsMjMuMTNBOC4xNSw4LjE1LDAsMCwwLDI3LjgsMThhOC4yOCw4LjI4LDAsMCwwLTQuMS03LjExLDEsMSwwLDEsMC0xLDEuNzNaIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTE4LDZ2OS4xNWwyLDJWNmEyLDIsMCwwLDAtMy40Mi0xLjQxTDEyLDkuMTdsMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMSIgZD0iTTI0Ljg3LDYuNjlBMTIuNDIsMTIuNDIsMCwwLDEsMjguNzUsMjYuM2wxLjQyLDEuNDJBMTQuNDMsMTQuNDMsMCwwLDAsMjUuNzQsNC44OGExLDEsMCwwLDAtLjg3LDEuOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTIiIGQ9Ik0yNy4zLDI3LjY3aDBsLTMuODQtMy44NC0uNTctLjU3aDBMNC42Myw1LDMuMjEsNi40MSw4LjgsMTJIM2ExLDEsMCwwLDAtMSwxVjIzYTEsMSwwLDAsMCwxLDFIOC44M2w5LjUxLDguM0ExLDEsMCwwLDAsMjAsMzEuNTVWMjMuMmw1LjU5LDUuNTljLS4xNy4xLS4z''@;'; put 'put ''NC4yLS41MS4yOWExLDEsMCwwLDAsLjksMS43OWMuMzctLjE5LjcyLS40LDEuMDgtLjYybDIuMTQsMi4xNEwzMC42MSwzMWwtMy4yNS0zLjI1WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTIyLjY5LDEyLjYyQTYuMjcs''@;'; put 'put ''Ni4yNywwLDAsMSwyNS44LDE4YTYuMTcsNi4xNywwLDAsMS0xLjQyLDMuOTJsMS40MiwxLjQyYTguMTYsOC4xNiwwLDAsMCwyLTUuMzQsOC4yOCw4LjI4LDAsMCwwLTQuMS03LjExLDEsMSwwLDEsMC0xLDEuNzNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC00IiBkPSJNMjAsNC42MmExLDEsMCwwLDAtMS42Ni0uNzVsLTYuNDIsNS42TDIwLDE3LjU0WiIvPicpLEwuQ2xyU2hhcGVIZWFkcGhvbmVzPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJN''@;'; put 'put ''MTgsM0ExNC4yNywxNC4yNywwLDAsMCw0LDE3LjVWMzFIOS4yQTIuNzQsMi43NCwwLDAsMCwxMiwyOC4zM1YyMS42N0EyLjc0LDIuNzQsMCwwLDAsOS4yLDE5SDZWMTcuNUExMi4yNywxMi4yNywwLDAsMSwxOCw1LDEyLjI3LDEyLjI3LDAsMCwxLDMwLDE3LjVWMTlIMjYuOEEyLjc0LDIuNzQs''@;'; put 'put ''MCwwLDAsMjQsMjEuNjd2Ni42N0EyLjc0LDIuNzQsMCwwLDAsMjYuOCwzMUgzMlYxNy41QTE0LjI3LDE0LjI3LDAsMCwwLDE4LDNaTTkuMiwyMWEuNzUuNzUsMCwwLDEsLjguNjd2Ni42N2EuNzUuNzUsMCwwLDEtLjguNjdINlYyMVpNMjYsMjguMzNWMjEuNjdhLjc1Ljc1LDAsMCwxLC44LS42''@;'; put 'put ''N0gzMHY4SDI2LjhBLjc1Ljc1LDAsMCwxLDI2LDI4LjMzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDNBMTQuMjcsMTQuMjcsMCwwLDAsNCwxNy41VjMxSDguMkExLjc0LDEuNzQsMCwwLDAsMTAsMjkuMzNWMjIu''@;'; put 'put ''NjdBMS43NCwxLjc0LDAsMCwwLDguMiwyMUg2VjE3LjVBMTIuMjcsMTIuMjcsMCwwLDEsMTgsNSwxMi4yNywxMi4yNywwLDAsMSwzMCwxNy41VjIxSDI3LjhBMS43NCwxLjc0LDAsMCwwLDI2LDIyLjY3djYuNjdBMS43NCwxLjc0LDAsMCwwLDI3LjgsMzFIMzJWMTcuNUExNC4yNywxNC4yNyww''@;'; put 'put ''LDAsMCwxOCwzWiIvPicpLEwuQ2xyU2hhcGVGaWxtU3RyaXA9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMCw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWNkEy''@;'; put 'put ''LDIsMCwwLDAsMzAsNFptMCwyNkg2VjZIMzBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE0LjYsMjMuMDdhMS4yOSwxLjI5LDAsMCwwLDEuMjQuMDlsOC43My00YTEuMywxLjMsMCwwLDAsMC0yLjM3aDBsLTgu''@;'; put 'put ''NzMtNEExLjMsMS4zLDAsMCwwLDE0LDE0djhBMS4yOSwxLjI5LDAsMCwwLDE0LjYsMjMuMDdabTEtOC42TDIzLjMxLDE4LDE1LjYsMjEuNTFaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iOCIgeT0iNyIgd2lkdGg9''@;'; put 'put ''IjIiIGhlaWdodD0iMyIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjE0IiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNSIgeD0iMjAiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjMiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiB4PSIyNiIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMyIvPlxuICAgICAgICAgICAgPHJlY3Qg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIHg9IjgiIHk9IjI2IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgeD0iMTQiIHk9IjI2IiB3aWR0aD0iMiIg''@;'; put 'put ''aGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgeD0iMjAiIHk9IjI2IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMTAiIHg9IjI2IiB5PSIyNiIgd2lkdGg9IjIiIGhlaWdodD0iMyIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLDRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlY2''@;'; put 'put ''QTIsMiwwLDAsMCwzMCw0Wk0yMCw3aDJ2M0gyMFpNMTQsN2gydjNIMTRaTTEwLDI5SDhWMjZoMlptMC0xOUg4VjdoMlptNiwxOUgxNFYyNmgyWm02LDBIMjBWMjZoMlptMy4xNi0xMC4xNkwxNS4zOSwyMy4yQTEsMSwwLDAsMSwxNCwyMi4yOFYxMy41N2ExLDEsMCwwLDEsMS40MS0uOTFMMjUu''@;'; put 'put ''MTYsMTdBMSwxLDAsMCwxLDI1LjE2LDE4Ljg0Wk0yOCwyOUgyNlYyNmgyWm0wLTE5SDI2VjdoMloiLz4nKSxMLkNsclNoYXBlTXVzaWNOb3RlPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IGQ9Ik0zMS42OCw2LjE2Yy0xLjkyLTMuMy0xMC42LTQtMTEuNTgtNC4wOUwxOSwyVjIyLjM0YTUuODksNS44OSwwLDAsMC0uODItLjU2LDguMzMsOC4zMywwLDAsMC02LjUzLS40MUM3LjU3LDIyLjcsNC45MiwyNi41LDUuNzgsMjkuODRhNS4zMyw1LjMzLDAsMCwwLDIuNjYsMy4zMiw3LjQ4''@;'; put 'put ''LDcuNDgsMCwwLDAsMy42MS44OEE5LjU0LDkuNTQsMCwwLDAsMTUsMzMuNTdjMy42Ny0xLjE4LDYuMTctNC4zMyw2LjA2LTcuMzZWOS4zNGEyOS4xNCwyOS4xNCwwLDAsMSw2LjU1LDEuNDMsMSwxLDAsMSwwLC43Mi0xLjg3QTMxLjM3LDMxLjM3LDAsMCwwLDIxLDcuMzNWNC4xN2MzLjMzLjM2''@;'; put 'put ''LDgsMS4zOCw4LjkyLDMsMiwzLjQxLTIuMzMsNy4zNi0yLjM3LDcuNGExLDEsMCwwLDAsMS4zMywxLjQ5QzI5LjE1LDE1Ljg1LDM0LjUsMTEsMzEuNjgsNi4xNlpNMTQuMzUsMzEuNjdhNi40Myw2LjQzLDAsMCwxLTUtLjI2LDMuMzEsMy4zMSwwLDAsMS0xLjY5LTIuMDdjLS42LTIuMzMsMS40''@;'; put 'put ''NS01LjA1LDQuNTgtNi4wNmE3LjUyLDcuNTIsMCwwLDEsMi4zLS4zNyw1LjUyLDUuNTIsMCwwLDEsMi42NS42MiwzLjMxLDMuMzEsMCwwLDEsMS42OSwyLjA3QzE5LjU0LDI3Ljk0LDE3LjQ5LDMwLjY2LDE0LjM1LDMxLjY3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkIGNsci1pLXNvbGlkLXBhdGgtMSJcbiAgICAgICAgICAgICAgICBkPSJNMzEuNjgsNi4xNmMtMS45Mi0zLjMtMTAuNi00LTExLjU4LTQuMDlMMTksMlYyMi4yOWE1Ljg4LDUuODgsMCwwLDAtLjgxLS41NSw4LjMzLDguMzMsMCwwLDAtNi41My0uNDFjLTQuMTIsMS4zMy02Ljc3LDUuMTMt''@;'; put 'put ''NS45MSw4LjQ3YTUuMzMsNS4zMywwLDAsMCwyLjY2LDMuMzIsNy40OCw3LjQ4LDAsMCwwLDMuNjEuODhBOS41NCw5LjU0LDAsMCwwLDE1LDMzLjUyYzMuNy0xLjE5LDYuMi00LjM3LDYuMDYtNy40MiwwLDAsMCwwLDAsMFY4LjQ5YzEsLjEyLDIuMzcuMzMsMy44Mi42NGExMS4xNywxMS4xNyww''@;'; put 'put ''LDAsMSw0LjA2LDEuNDZjMSwuNjYuMzgsMS45LjMzLDJhMTEuOCwxMS44LDAsMCwxLTEuNjYsMiwxLDEsMCwwLDAsMS4zMywxLjQ5QzI5LjE1LDE1Ljg1LDM0LjUsMTEsMzEuNjgsNi4xNloiLz4nKSxMLkNsclNoYXBlSW1hZ2VHYWxsZXJ5PSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0z''@;'; put 'put ''Mi4xMiwxMEgzLjg4QTEuODgsMS44OCwwLDAsMCwyLDExLjg4VjMwLjEyQTEuODgsMS44OCwwLDAsMCwzLjg4LDMySDMyLjEyQTEuODgsMS44OCwwLDAsMCwzNCwzMC4xMlYxMS44OEExLjg4LDEuODgsMCwwLDAsMzIuMTIsMTBaTTMyLDMwSDRWMTJIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOC41NiwxOS40NWEzLDMsMCwxLDAtMy0zQTMsMywwLDAsMCw4LjU2LDE5LjQ1Wm0wLTQuNkExLjYsMS42LDAsMSwxLDcsMTYuNDUsMS42LDEuNiwwLDAsMSw4LjU2LDE0Ljg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTcuOSwyOGw2LTYsMy4xOCwzLjE4TDE0LjI2LDI4aDJsNy40Ni03LjQ2TDMwLDI2Ljc3di0yTDI0LjIsMTlhLjcxLjcxLDAsMCwwLTEsMGwtNS4xNiw1LjE2TDE0LjM3LDIwLjVhLjcxLjcxLDAsMCwwLTEsMEw1LjkyLDI4WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMwLjE0LDNoMGExLDEsMCwwLDAtMS0xaC0yMmExLDEsMCwwLDAtMSwxaDBWNGgyNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMi4xMiw3VjdhMSwx''@;'; put 'put ''LDAsMCwwLTEtMWgtMjZhMSwxLDAsMCwwLTEsMWgwVjhoMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzAuMTQsM2gwYTEsMSwwLDAsMC0xLTFoLTIyYTEsMSwwLDAsMC0xLDFoMFY0aDI0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzIuMTIsN1Y3YTEsMSwwLDAsMC0xLTFoLTI2YTEsMSwwLDAsMC0xLDFoMFY4aDI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMzIuMTIsMTBIMy44OEExLjg4LDEuODgsMCwwLDAsMiwx''@;'; put 'put ''MS44OFYzMC4xMkExLjg4LDEuODgsMCwwLDAsMy44OCwzMkgzMi4xMkExLjg4LDEuODgsMCwwLDAsMzQsMzAuMTJWMTEuODhBMS44OCwxLjg4LDAsMCwwLDMyLjEyLDEwWk04LjU2LDEzLjQ1YTMsMywwLDEsMS0zLDNBMywzLDAsMCwxLDguNTYsMTMuNDVaTTMwLDI4aC0yNGw3LjQ2LTcuNDdh''@;'; put 'put ''LjcxLjcxLDAsMCwxLDEsMGwzLjY4LDMuNjhMMjMuMjEsMTlhLjcxLjcxLDAsMCwxLDEsMEwzMCwyNC43OVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksTC5DbHJTaGFwZVJlcGxheUFsbD0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTcuNDYsMjYu''@;'; put 'put ''MjJhMS40LDEuNCwwLDAsMCwxLS40Mmw1LjU5LTUuNTZhMS40MywxLjQzLDAsMCwwLC40Mi0xLDEuNDYsMS40NiwwLDAsMC0uNDItMWwtNS41OS01LjU2YTEuNDMsMS40MywwLDAsMC0yLjQ0LDFWMjQuNzlhMS40MSwxLjQxLDAsMCwwLC44OCwxLjMyQTEuNTQsMS41NCwwLDAsMCwxNy40Niwy''@;'; put 'put ''Ni4yMlptLjE2LTEyLjE2LDUuMTksNS4xNi01LjE5LDUuMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTguMDYsNWgtNi43bDIuOTItMi42NEExLDEsMCwwLDAsMTIuOTQuODhMNy4zMiw2LDEyLjk0LDExYTEsMSwwLDAsMCwuNjcu''@;'; put 'put ''MjYsMSwxLDAsMCwwLC43NC0uMzMsMSwxLDAsMCwwLS4wNy0xLjQyTDExLjQ2LDdoNi42QTExLjc4LDExLjc4LDAsMSwxLDcuNzEsMjQuNDEsMSwxLDAsMCwwLDYsMjUuMzYsMTMuNzgsMTMuNzgsMCwxLDAsMTguMDYsNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yIiAvPicpLEwuQ2xyU2hhcGVSZXBsYXlPbmU9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE5LDI3LjI3YTEsMSwwLDAsMCwxLTFWMTRhMSwxLDAsMCwwLTEtMUgxOWEzLjgsMy44LDAsMCwwLTEuMS4yM2wtMiwuNjJhLjkyLjkyLDAsMCwwLS43Mi44Ni44OC44OCwwLDAsMCwuODgu''@;'; put 'put ''ODYsMS40NiwxLjQ2LDAsMCwwLC40My0uMDhMMTgsMTUuMDd2MTEuMkExLDEsMCwwLDAsMTksMjcuMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTguMDYsNWgtNi43bDIuOTItMi42NEExLDEsMCwwLDAsMTIuOTQuODhMNy4zMiw2''@;'; put 'put ''LDEyLjk0LDExYTEsMSwwLDAsMCwuNjcuMjYsMSwxLDAsMCwwLC43NC0uMzMsMSwxLDAsMCwwLS4wNy0xLjQyTDExLjQ2LDdoNi42QTExLjc4LDExLjc4LDAsMSwxLDcuNzEsMjQuNDEsMSwxLDAsMCwwLDYsMjUuMzYsMTMuNzgsMTMuNzgsMCwxLDAsMTguMDYsNVoiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVWaWRlb0dhbGxlcnk9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLjEyLDEwSDMuODhBMS44OCwxLjg4LDAsMCwwLDIsMTEuODhWMzAuMTJBMS44OCwxLjg4LDAsMCwwLDMuODgsMzJIMzIuMTJBMS44OCwx''@;'; put 'put ''Ljg4LDAsMCwwLDM0LDMwLjEyVjExLjg4QTEuODgsMS44OCwwLDAsMCwzMi4xMiwxMFpNMzIsMzBINFYxMkgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMC4xNCwzaDBhMSwxLDAsMCwwLTEtMWgtMjJhMSwxLDAsMCwwLTEsMWgw''@;'; put 'put ''VjRoMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzIuMTIsN1Y3YTEsMSwwLDAsMC0xLTFoLTI2YTEsMSwwLDAsMC0xLDFoMFY4aDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGgg''@;'; put 'put ''ZD0iTTEyLjgyLDI2Ljc5YTEuNzQsMS43NCwwLDAsMCwuOTMuMjgsMS42OCwxLjY4LDAsMCwwLC42OS0uMTVsOS43Ny00LjM2YTEuNjksMS42OSwwLDAsMCwwLTMuMUwxNC40NCwxNS4xYTEuNywxLjcsMCwwLDAtMi4zOSwxLjU1djguNzJBMS43LDEuNywwLDAsMCwxMi44MiwyNi43OVptLjYz''@;'; put 'put ''LTEwLjE0YS4yOS4yOSwwLDAsMSwuMTQtLjI1LjMuMywwLDAsMSwuMTYsMCwuMjcuMjcsMCwwLDEsLjEyLDBsOS43Nyw0LjM1YS4yOS4yOSwwLDAsMSwuMTguMjguMjguMjgsMCwwLDEtLjE4LjI3bC05Ljc3LDQuMzZhLjI4LjI4LDAsMCwxLS4yOCwwLC4zMS4zMSwwLDAsMS0uMTQtLjI1WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMyLjEyLDEwSDMuODhBMS44OCwxLjg4LDAsMCwwLDIsMTEuODhWMzAuMTJBMS44OCwxLjg4LDAsMCwwLDMuODgsMzJIMzIuMTJBMS44OCwxLjg4LDAsMCwwLDM0LDMwLjEyVjExLjg4QTEuODgs''@;'; put 'put ''MS44OCwwLDAsMCwzMi4xMiwxMFpNMjQuMTgsMjEuODNsLTkuNzcsNC4zNkExLDEsMCwwLDEsMTMsMjUuMjhWMTYuNTZhMSwxLDAsMCwxLDEuNDEtLjkxTDI0LjE4LDIwQTEsMSwwLDAsMSwyNC4xOCwyMS44M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBh''@;'; put 'put ''dGggZD0iTTMwLjE0LDNoMGExLDEsMCwwLDAtMS0xaC0yMmExLDEsMCwwLDAtMSwxaDBWNGgyNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTMyLjEyLDdWN2ExLDEsMCwwLDAtMS0xaC0yNmExLDEsMCwwLDAtMSwxaDBWOGgyOFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksTC5DbHJTaGFwZU1pY3JvcGhvbmU9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDI0YzMuOSwwLDctMy4xLDctN1Y5YzAtMy45LTMuMS03LTctN3MtNywzLjEtNyw3djhDMTEsMjAuOSwxNC4xLDI0LDE4LDI0eiBN''@;'; put 'put ''MTMsOWMwLTIuOCwyLjItNSw1LTVzNSwyLjIsNSw1djhcblx0XHRjMCwyLjgtMi4yLDUtNSw1cy01LTIuMi01LTVWOXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMCwxN2gtMmMwLDUuNS00LjUsMTAtMTAsMTBTOCwyMi41LDgsMTdI''@;'; put 'put ''NmMwLDYuMyw0LjgsMTEuNCwxMSwxMS45VjMyaC0zYy0wLjYsMC0xLDAuNC0xLDFzMC40LDEsMSwxaDhjMC42LDAsMS0wLjQsMS0xXG5cdFx0cy0wLjQtMS0xLTFoLTN2LTMuMUMyNS4yLDI4LjQsMzAsMjMuMywzMCwxN3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yIiAvPjxwYXRoIGQ9Ik0xOCwyNGMzLjksMCw3LTMuMSw3LTdWOWMwLTMuOS0zLjEtNy03LTdzLTcsMy4xLTcsN3Y4QzExLDIwLjksMTQuMSwyNCwxOCwyNHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLDE3aC0yYzAsNS41LTQuNSwx''@;'; put 'put ''MC0xMCwxMFM4LDIyLjUsOCwxN0g2YzAsNi4zLDQuOCwxMS40LDExLDExLjlWMzJoLTNjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoOGMwLjYsMCwxLTAuNCwxLTFcblx0XHRzLTAuNC0xLTEtMWgtM3YtMy4xQzI1LjIsMjguNCwzMCwyMy4zLDMwLDE3eiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxMLkNsclNoYXBlTWljcm9waG9uZU11dGU9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLDE3aC0yYzAsMS44LTAuNSwzLjUtMS40LDVsMS41LDEuNUMyOS4zLDIxLjUsMjkuOSwxOS4zLDMwLDE3eiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDRjMi44LDAsNSwyLjIsNSw1djhjMCwwLjQtMC4xLDAuOC0wLjIsMS4ybDEuNiwxLjZjMC40LTAuOSwwLjYtMS44LDAuNi0yLjhWOWMwLTMuOS0zLjItNy03LjEtNi45XG5cdFx0Yy0yLjksMC01LjYsMS45LTYuNSw0LjdMMTMs''@;'; put 'put ''OC4zQzEzLjUsNS45LDE1LjYsNC4yLDE4LDR6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjUuMiwyNi42bDYuOSw2LjlsMS40LTEuNEw0LDIuNkwyLjYsNGw4LjQsOC40VjE3YzAsMy45LDMuMSw3LDcsN2MxLjMsMCwyLjUtMC4zLDMu''@;'; put 'put ''Ni0xbDIuMiwyLjJDMjIuMSwyNi40LDIwLjEsMjcsMTgsMjdcblx0XHRjLTUuNCwwLjItOS44LTQuMS0xMC05LjRjMC0wLjIsMC0wLjQsMC0wLjZINmMwLjEsNi4yLDQuOCwxMS40LDExLDEydjNoLTNjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoOGMwLjYsMCwxLTAuNCwxLTFcblx0XHRz''@;'; put 'put ''LTAuNC0xLTEtMWgtM3YtM0MyMS4yLDI4LjgsMjMuNCwyOCwyNS4yLDI2LjZ6IE0xMy44LDE5LjdDMTMuMywxOC45LDEzLDE4LDEzLDE3di0yLjZsNy4xLDcuMUMxNy45LDIyLjUsMTUuMiwyMS44LDEzLjgsMTkuN3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0z''@;'; put 'put ''IiAvPjxwYXRoIGQ9Ik0zMCwxN2gtMmMwLDEuOC0wLjUsMy41LTEuNCw1bDEuNSwxLjVDMjkuMywyMS41LDI5LjksMTkuMywzMCwxN3oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTI1LDE3VjljMC0zLjktMy4yLTctNy4xLTYuOWMtMi45LDAt''@;'; put 'put ''NS42LDEuOS02LjUsNC43bDEzLDEzQzI0LjgsMTguOSwyNSwxNy45LDI1LDE3eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMjUuMiwyNi42bDYuOSw2LjlsMS40LTEuNEw0LDIuNkwyLjYsNGw4LjQsOC40VjE3YzAsMy45LDMuMSw3LDcsN2Mx''@;'; put 'put ''LjMsMCwyLjUtMC4zLDMuNi0xbDIuMiwyLjJDMjIuMSwyNi40LDIwLjEsMjcsMTgsMjdcblx0XHRjLTUuNCwwLjItOS44LTQuMS0xMC05LjRjMC0wLjIsMC0wLjQsMC0wLjZINmMwLjEsNi4yLDQuOCwxMS40LDExLDEydjNoLTNjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoOGMwLjYsMCwx''@;'; put 'put ''LTAuNCwxLTFcblx0XHRzLTAuNC0xLTEtMWgtM3YtM0MyMS4yLDI4LjgsMjMuNCwyOCwyNS4yLDI2LjZ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLEwuTWVkaWFTaGFwZXM9e3BsYXk6TC5DbHJTaGFwZVBsYXkscGF1c2U6TC5DbHJTaGFwZVBhdXNlLCJz''@;'; put 'put ''dGVwLWZvcndhcmQiOkwuQ2xyU2hhcGVTdGVwRm9yd2FyZCxzdG9wOkwuQ2xyU2hhcGVTdG9wLHBvd2VyOkwuQ2xyU2hhcGVQb3dlcixyZXdpbmQ6TC5DbHJTaGFwZVJld2luZCwiZmFzdC1mb3J3YXJkIjpMLkNsclNoYXBlRmFzdEZvcndhcmQsY2FtZXJhOkwuQ2xyU2hhcGVDYW1lcmEsInZp''@;'; put 'put ''ZGVvLWNhbWVyYSI6TC5DbHJTaGFwZVZpZGVvQ2FtZXJhLHNodWZmbGU6TC5DbHJTaGFwZVNodWZmbGUsInZvbHVtZS11cCI6TC5DbHJTaGFwZVZvbHVtZVVwLCJ2b2x1bWUtZG93biI6TC5DbHJTaGFwZVZvbHVtZURvd24sInZvbHVtZS1tdXRlIjpMLkNsclNoYXBlVm9sdW1lTXV0ZSxoZWFk''@;'; put 'put ''cGhvbmVzOkwuQ2xyU2hhcGVIZWFkcGhvbmVzLCJmaWxtLXN0cmlwIjpMLkNsclNoYXBlRmlsbVN0cmlwLCJtdXNpYy1ub3RlIjpMLkNsclNoYXBlTXVzaWNOb3RlLCJpbWFnZS1nYWxsZXJ5IjpMLkNsclNoYXBlSW1hZ2VHYWxsZXJ5LCJyZXBsYXktYWxsIjpMLkNsclNoYXBlUmVwbGF5QWxs''@;'; put 'put ''LCJyZXBsYXktb25lIjpMLkNsclNoYXBlUmVwbGF5T25lLCJ2aWRlby1nYWxsZXJ5IjpMLkNsclNoYXBlVmlkZW9HYWxsZXJ5LG1pY3JvcGhvbmU6TC5DbHJTaGFwZU1pY3JvcGhvbmUsIm1pY3JvcGhvbmUtbXV0ZSI6TC5DbHJTaGFwZU1pY3JvcGhvbmVNdXRlfSwidW5kZWZpbmVkIiE9dHlw''@;'; put 'put ''ZW9mIHdpbmRvdyYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoTC5NZWRpYVNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvc29jaWFsLXNoYXBlcy50cyI6ZnVuY3Rpb24oSmUsTCxtZSl7InVzZSBzdHJp''@;'; put 'put ''Y3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShMLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMLlNvY2lhbFNoYXBlcz1MLkNsclNoYXBlSGFzaHRhZz1MLkNsclNoYXBlQ3Jvd249TC5DbHJTaGFwZVRodW1ic0Rvd249TC5DbHJTaGFwZVRodW1ic1VwPUwuQ2xyU2hhcGVTYWRGYWNlPUwuQ2xy''@;'; put 'put ''U2hhcGVOZXV0cmFsRmFjZT1MLkNsclNoYXBlSGFwcHlGYWNlPUwuQ2xyU2hhcGVQaWN0dXJlPUwuQ2xyU2hhcGVDaGF0QnViYmxlPUwuQ2xyU2hhcGVUYWxrQnViYmxlcz1MLkNsclNoYXBlSGVhcnRCcm9rZW49TC5DbHJTaGFwZUhlYXJ0PUwuQ2xyU2hhcGVJbmJveD1MLkNsclNoYXBlRmxh''@;'; put 'put ''Zz1MLkNsclNoYXBlVGFza3M9TC5DbHJTaGFwZUVudmVsb3BlPUwuQ2xyU2hhcGVCb29rbWFyaz1MLkNsclNoYXBlSGFsZlN0YXI9TC5DbHJTaGFwZVN0YXI9TC5DbHJTaGFwZVNoYXJlPXZvaWQgMDt2YXIgQj1tZSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25m''@;'; put 'put ''aWcudHMiKSxFPW1lKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpLEVlPW1lKCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMiKTtMLkNsclNoYXBlU2hhcmU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNy41MywyNGE1LDUsMCwwLDAtMy42LDEuNTVMMTEuNzQsMTkuNDVhNC40Nyw0LjQ3LDAsMCwwLDAtMi44bDEyLjIxLTYuMjFhNS4xMiw1LjEyLDAsMSwwLTEuMDctMS43TDEwLjc5LDE0Ljg5YTUsNSwwLDEsMCwwLDYuMzNs''@;'; put 'put ''MTIuMDYsNi4wN0E0LjkzLDQuOTMsMCwwLDAsMjIuNTQsMjlhNSw1LDAsMSwwLDUtNVptMC0yMGEzLDMsMCwxLDEtMywzQTMsMywwLDAsMSwyNy41Myw0Wk03LDIxYTMsMywwLDEsMSwzLTNBMywzLDAsMCwxLDcsMjFaTTI3LjUzLDMyYTMsMywwLDEsMSwzLTNBMywzLDAsMCwxLDI3LjUzLDMy''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNy41MywyNGE1LDUsMCwwLDAtMy42LDEuNTVMMTEuNzQsMTkuNDVhNC40Nyw0LjQ3LDAsMCwwLDAtMi44bDEyLjIxLTYuMjFhNS4xMiw1LjEyLDAsMSwwLTEuMDct''@;'; put 'put ''MS43TDEwLjc5LDE0Ljg5YTUsNSwwLDEsMCwwLDYuMzNsMTIuMDYsNi4wN0E0LjkzLDQuOTMsMCwwLDAsMjIuNTQsMjlhNSw1LDAsMSwwLDUtNVoiLz4nKSxMLkNsclNoYXBlU3Rhcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMSIgZD0iTTI3LjE5LDM0YTIuMjIsMi4yMiwwLDAsMS0xLjI0LS4zOGwtNy40Ni01YS4yMi4yMiwwLDAsMC0uMjUsMGwtNy40Niw1QTIuMjIsMi4yMiwwLDAsMSw3LjQsMzEuMjFsMi40NS04LjY0YS4yMy4yMywwLDAsMC0uMDgtLjI0TDIuNzEsMTYuNzhhMi4yMiwyLjIyLDAsMCwxLDEu''@;'; put 'put ''MjktNGw5LS4zNGEuMjMuMjMsMCwwLDAsLjItLjE1bDMuMS04LjQzYTIuMjIsMi4yMiwwLDAsMSw0LjE3LDBsMy4xLDguNDNhLjIzLjIzLDAsMCwwLC4yLjE1bDksLjM0YTIuMjIsMi4yMiwwLDAsMSwxLjI5LDRMMjcsMjIuMzNhLjIyLjIyLDAsMCwwLS4wOC4yNGwyLjQ1LDguNjRBMi4yMywy''@;'; put 'put ''LjIzLDAsMCwxLDI3LjE5LDM0Wm0tOC44Mi03LjQyQTIuMjEsMi4yMSwwLDAsMSwxOS42LDI3bDcuNDYsNWEuMjIuMjIsMCwwLDAsLjM0LS4yNWwtMi40NS04LjY0YTIuMjEsMi4yMSwwLDAsMSwuNzctMi4zNWw3LjA2LTUuNTVhLjIyLjIyLDAsMCwwLS4xMy0uNGwtOS0uMzRhMi4yMiwyLjIy''@;'; put 'put ''LDAsMCwxLTItMS40NmwtMy4xLTguNDNhLjIyLjIyLDAsMCwwLS40MiwwTDE1LjA2LDEzYTIuMjIsMi4yMiwwLDAsMS0yLDEuNDZsLTksLjM0YS4yMi4yMiwwLDAsMC0uMTMuNEwxMSwyMC43NmEyLjIyLDIuMjIsMCwwLDEsLjc3LDIuMzVMOS4zMywzMS43NWEuMjEuMjEsMCwwLDAsLjA4LjI0''@;'; put 'put ''LjIuMiwwLDAsMCwuMjYsMGw3LjQ2LTVBMi4yMiwyLjIyLDAsMCwxLDE4LjM2LDI2LjYyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNCwxNi43OGEyLjIyLDIuMjIsMCwwLDAtMS4yOS00bC05LS4zNGEuMjMu''@;'; put 'put ''MjMsMCwwLDEtLjItLjE1TDIwLjQsMy44OWEyLjIyLDIuMjIsMCwwLDAtNC4xNywwbC0zLjEsOC40M2EuMjMuMjMsMCwwLDEtLjIuMTVsLTksLjM0YTIuMjIsMi4yMiwwLDAsMC0xLjI5LDRsNy4wNiw1LjU1YS4yMy4yMywwLDAsMSwuMDguMjRMNy4zNSwzMS4yMWEyLjIyLDIuMjIsMCwwLDAs''@;'; put 'put ''My4zOCwyLjQ1bDcuNDYtNWEuMjIuMjIsMCwwLDEsLjI1LDBsNy40Niw1YTIuMiwyLjIsMCwwLDAsMi41NSwwLDIuMiwyLjIsMCwwLDAsLjgzLTIuNGwtMi40NS04LjY0YS4yMi4yMiwwLDAsMSwuMDgtLjI0WiIvPicpLEwuQ2xyU2hhcGVIYWxmU3Rhcj0oMCxFLmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM0LDE2Ljc4YTIuMjIsMi4yMiwwLDAsMC0xLjI5LTRsLTktLjM0YS4yMy4yMywwLDAsMS0uMi0uMTVMMjAuNCwzLjg5YTIuMjIsMi4yMiwwLDAsMC00LjE3LDBsLTMuMSw4LjQzYS4yMy4yMywwLDAsMS0u''@;'; put 'put ''Mi4xNWwtOSwuMzRhMi4yMiwyLjIyLDAsMCwwLTEuMjksNGw3LjA2LDUuNTVhLjIyLjIyLDAsMCwxLC4wOC4yNEw3LjM1LDMxLjIxQTIuMjMsMi4yMywwLDAsMCw5LjQ5LDM0YTIuMjIsMi4yMiwwLDAsMCwxLjI0LS4zOGw3LjQ2LTVhLjIyLjIyLDAsMCwxLC4yNSwwbDcuNDYsNWEyLjIyLDIu''@;'; put 'put ''MjIsMCwwLDAsMy4zOC0yLjQ1bC0yLjQ1LTguNjRhLjIzLjIzLDAsMCwxLC4wOC0uMjRaTTE4LjMzLDI2LjYyaDBhMi4yMSwyLjIxLDAsMCwwLTEuMjQuMzhMOS42MiwzMmEuMjIuMjIsMCwwLDEtLjM0LS4yNWwyLjQ1LTguNjRBMi4yMSwyLjIxLDAsMCwwLDExLDIwLjc2TDMuOSwxNS4yMWEu''@;'; put 'put ''MjIuMjIsMCwwLDEsLjEzLS40bDktLjM0QTIuMjIsMi4yMiwwLDAsMCwxNSwxM2wzLjEtOC40M2EuMi4yLDAsMCwxLC4yMS0uMTVoMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzQsMTYuNzhhMi4yMiwyLjIy''@;'; put 'put ''LDAsMCwwLTEuMjktNGwtOS0uMzRhLjIzLjIzLDAsMCwxLS4yLS4xNUwyMC40LDMuODlhMi4yMiwyLjIyLDAsMCwwLTQuMTcsMGwtMy4xLDguNDNhLjIzLjIzLDAsMCwxLS4yLjE1bC05LC4zNGEyLjIyLDIuMjIsMCwwLDAtMS4yOSw0bDcuMDYsNS41NWEuMjMuMjMsMCwwLDEsLjA4LjI0TDcu''@;'; put 'put ''MzUsMzEuMjFhMi4yMiwyLjIyLDAsMCwwLDMuMzgsMi40NWw3LjQ2LTVhLjIyLjIyLDAsMCwxLC4yNSwwbDcuNDYsNWEyLjIsMi4yLDAsMCwwLDIuNTUsMCwyLjIsMi4yLDAsMCwwLC44My0yLjRsLTIuNDUtOC42NGEuMjIuMjIsMCwwLDEsLjA4LS4yNFpNMjQuOSwyMy4xMWwyLjQ1LDguNjRB''@;'; put 'put ''LjIyLjIyLDAsMCwxLDI3LDMybC03LjQ2LTVhMi4yMSwyLjIxLDAsMCwwLTEuMjQtLjM4aDBWNC40NGgwYS4yLjIsMCwwLDEsLjIxLjE1TDIxLjYyLDEzYTIuMjIsMi4yMiwwLDAsMCwyLDEuNDZsOSwuMzRhLjIyLjIyLDAsMCwxLC4xMy40bC03LjA2LDUuNTVBMi4yMSwyLjIxLDAsMCwwLDI0''@;'; put 'put ''LjksMjMuMTFaIi8+JyksTC5DbHJTaGFwZUJvb2ttYXJrPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjYsMzRhMiwyLDAsMCwxLTEuNDEtLjU4TDE4LDI2LjgybC02LjU0LDYuNTJBMiwyLDAsMCwxLDgsMzEu''@;'; put 'put ''OTNWNGEyLDIsMCwwLDEsMi0ySDI2YTIsMiwwLDAsMSwyLDJWMzJhMiwyLDAsMCwxLTIsMlptMC0yaDBWNEgxMFYzMS45M0wxOCwyNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjYsMkgxMEEyLDIsMCwwLDAs''@;'; put 'put ''OCw0VjMxLjkzYTIsMiwwLDAsMCwzLjQyLDEuNDFsNi41NC02LjUyLDYuNjMsNi42QTIsMiwwLDAsMCwyOCwzMlY0QTIsMiwwLDAsMCwyNiwyWiIvPicpLEwuQ2xyU2hhcGVFbnZlbG9wZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMSIgZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk0zMC40NiwyOEg1LjY2bDctNy4yNC0xLjQ0LTEuMzlMNCwyNi44NFY5LjUyTDE2LjQzLDIxLjg5YTIsMiwwLDAsMCwyLjgyLDBMMzIsOS4y''@;'; put 'put ''MXYxNy41bC03LjM2LTcuMzYtMS40MSwxLjQxWk01LjMxLDhIMzAuMzhMMTcuODQsMjAuNDdaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzIsMTMuMDhWMjYuNzFsLTcuMzYt''@;'; put 'put ''Ny4zNi0xLjQxLDEuNDFMMzAuNDYsMjhINS42Nmw3LTcuMjQtMS40NC0xLjM5TDQsMjYuODRWOS41MkwxNi40MywyMS44OWEyLDIsMCwwLDAsMi44MiwwbDguODMtOC43OGE3LjQ0LDcuNDQsMCwwLDEtMi0uODVsLTguMjYsOC4yMUw1LjMxLDhIMjIuODFhNy40OSw3LjQ5LDAsMCwxLS4zMS0y''@;'; put 'put ''SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMkE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMDhaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjUuODYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjI2SDMyVjI2LjcxbC03LjM2LTcuMzYtMS40''@;'; put 'put ''MSwxLjQxTDMwLjQ2LDI4SDUuNjZsNy03LjI0LTEuNDQtMS4zOUw0LDI2Ljg0VjkuNTJMMTYuNDMsMjEuODlhMiwyLDAsMCwwLDIuODIsMGw2LjY2LTYuNjNIMjMuMDhsLTUuMjQsNS4yMUw1LjMxLDhIMjAuMDZsMS4xNS0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWMTUuMjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxbC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkx''@;'; put 'put ''SDMzLjY4YTEuMjgsMS4yOCwwLDAsMCwxLjEtMS45MUwyOS4wNiwxQTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi4zMyw2YTIsMiwwLDAsMC0uNDEsMGgtMjhhMiwy''@;'; put 'put ''LDAsMCwwLS41My4wOEwxNy44NCwyMC40N1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzMuODEsNy4zOSwxOS4yNSwyMS44OWEyLDIsMCwwLDEtMi44MiwwTDIsNy41YTIsMiwwLDAsMC0uMDcuNVYyOGEyLDIs''@;'; put 'put ''MCwwLDAsMiwyaDI4YTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzMuODEsNy4zOVpNNS4zLDI4SDMuOTFWMjYuNTdsNy4yNy03LjIxLDEuNDEsMS40MVptMjYuNjEsMEgzMC41MWwtNy4yOS03LjIzLDEuNDEtMS40MSw3LjI3LDcuMjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yNiwxMi4zNEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2SDMuOTJhMiwyLDAsMCwwLS41My4wOEwxNy44NCwyMC40N1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMwLDEzLjVhNy40OSw3LjQ5LDAsMCwxLTItLjI5bC04LjcxLDguNjhhMiwyLDAsMCwxLTIuODIsMEwyLDcuNWEyLDIsMCwwLDAtLjA3LjVWMjhhMiwyLDAsMCwwLDIsMmgyOGEyLDIsMCwwLDAsMi0yVjEyLjM5QTcu''@;'; put 'put ''NDUsNy40NSwwLDAsMSwzMCwxMy41Wk01LjMsMjhIMy45MVYyNi41N2w3LjI3LTcuMjEsMS40MSwxLjQxWm0yNi42MSwwSDMwLjUxbC03LjI5LTcuMjMsMS40MS0xLjQxLDcuMjcsNy4yMVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMjUuNzdsLTYu''@;'; put 'put ''NTIsNi40OWEyLDIsMCwwLDEtMi44MiwwTDIsNy41YTIsMiwwLDAsMC0uMDcuNVYyOGEyLDIsMCwwLDAsMiwyaDI4YTIsMiwwLDAsMCwyLTJWMTUuMzhaTTUuMywyOEgzLjkxVjI2LjU3bDcuMjctNy4yMSwxLjQxLDEuNDFabTI2LjYxLDBIMzAuNTFsLTcuMjktNy4yMywxLjQxLTEuNDEsNy4y''@;'; put 'put ''Nyw3LjIxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0yMi45NCwxNS40aC0uN0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDMuOTJhMiwyLDAsMCwwLS41My4wOEwx''@;'; put 'put ''Ny44NCwyMC40N1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4y''@;'; put 'put ''OCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+JyksTC5DbHJTaGFwZVRhc2tzPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjkuMjksMzRINi43''@;'; put 'put ''MUExLjcsMS43LDAsMCwxLDUsMzIuMzFWNi42OUExLjc1LDEuNzUsMCwwLDEsNyw1SDlWN0g3VjMySDI5VjdIMjdWNWgyLjI1QTEuNywxLjcsMCwwLDEsMzEsNi42OVYzMi4zMUExLjcsMS43LDAsMCwxLDI5LjI5LDM0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTYuNjYsMjUuNzYsMTEuMywyMC40QTEsMSwwLDAsMSwxMi43MiwxOWwzLjk0LDMuOTQsOC42NC04LjY0YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yNiwxMUgxMFY3LjMzQTIuMzQsMi4zNCwwLDAsMSwxMi4zMyw1aDEuNzlhNCw0LDAsMCwxLDcuNzUsMGgxLjc5QTIuMzQsMi4zNCwwLDAsMSwyNiw3LjMzWk0xMiw5SDI0VjcuMzNBLjMzLjMzLDAsMCwwLDIzLjY3LDdIMjBWNmEyLDIsMCwwLDAtNCww''@;'; put 'put ''VjdIMTIuMzNhLjMzLjMzLDAsMCwwLS4zMy4zM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTE5LDkuODksMTkuNTYsOUgxMlY3LjMzQS4zMy4zMywwLDAsMSwxMi4zMyw3''@;'; put 'put ''SDE2VjZhMiwyLDAsMCwxLDQsMFY3aC43MWwxLjE2LTJhNCw0LDAsMCwwLTcuNzQsMEgxMi4zM0EyLjM0LDIuMzQsMCwwLDAsMTAsNy4zM1YxMWg4LjY0QTMuNjUsMy42NSwwLDAsMSwxOSw5Ljg5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMjQuMTksMTUuNGwtNy41Myw3LjUzTDEyLjcyLDE5QTEsMSwwLDAsMCwxMS4zLDIwLjRsNS4zNiw1LjM2TDI2LjcxLDE1LjcxYTEsMSwwLDAsMCwuMi0uMzFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0yOSwxNS40VjMySDdWN0g5VjVIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY5VjMyLjMxQTEuNywxLjcsMCwwLDAsNi43MSwzNEgyOS4yOUExLjcsMS43LDAsMCwwLDMxLDMyLjMxVjE1LjRaIi8+''@;'; put 'put ''XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCww''@;'; put 'put ''LDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMi43MiwxOUExLDEsMCwwLDAsMTEuMywy''@;'; put 'put ''MC40bDUuMzYsNS4zNkwyNi43MSwxNS43MWExLDEsMCwwLDAtMS40MS0xLjQxbC04LjY0LDguNjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMjMuMTMsOUgxMlY3LjMzQS4z''@;'; put 'put ''My4zMywwLDAsMSwxMi4zMyw3SDE2VjZhMiwyLDAsMCwxLDQsMFY3aDIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNTIsNy41MiwwLDAsMSwuMDctMWgtLjdhNCw0LDAsMCwwLTcuNzUsMEgxMi4zM0EyLjM0LDIuMzQsMCwwLDAsMTAsNy4zM1YxMUgyNC40MkE3LjUsNy41LDAsMCwxLDIz''@;'; put 'put ''LjEzLDlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzAsMTMuNWE3LjUyLDcuNTIsMCwwLDEtMS0uMDdWMzJIN1Y3SDlWNUg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjlWMzIu''@;'; put 'put ''MzFBMS43LDEuNywwLDAsMCw2LjcxLDM0SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMzFWMTMuNDNBNy41Miw3LjUyLDAsMCwxLDMwLDEzLjVaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1i''@;'; put 'put ''YWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjkuMjksNC45NWgtNy4yYTQuMzEsNC4zMSwwLDAsMC04LjE3LDBIN0ExLjc1LDEuNzUsMCwwLDAs''@;'; put 'put ''NSw2LjY0VjMyLjI2YTEuNywxLjcsMCwwLDAsMS43MSwxLjY5SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMjZWNi42NEExLjcsMS43LDAsMCwwLDI5LjI5LDQuOTVabS0xOCwzYTEsMSwwLDAsMSwxLTFoMy40NFY2LjMyYTIuMzEsMi4zMSwwLDAsMSw0LjYzLDBWN2gzLjQ0YTEsMSwwLDAs''@;'; put 'put ''MSwxLDFWOS44SDExLjI1Wm0xNC41Miw5LjIzLTkuMTIsOS4xMi01LjI0LTUuMjRhMS40LDEuNCwwLDAsMSwyLTJsMy4yNiwzLjI2LDcuMTQtNy4xNGExLjQsMS40LDAsMSwxLDIsMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjUuODgsMTUuNGExLjM4LDEuMzgsMCwwLDEtLjExLDEuODFsLTkuMTIsOS4xMi01LjI0LTUuMjRhMS40LDEuNCwwLDAsMSwyLTJsMy4yNiwzLjI2LDctN0gyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OWwwLS4wOUgxMS4yNVY4YTEsMSww''@;'; put 'put ''LDAsMSwxLTFoMy40NFY2LjMyYTIuMzEsMi4zMSwwLDAsMSw0LjYzLDBWN2guNDJMMjIsNC43NmE0LjMsNC4zLDAsMCwwLTguMDkuMTlIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY0VjMyLjI2YTEuNywxLjcsMCwwLDAsMS43MSwxLjY5SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMjZWMTUu''@;'; put 'put ''NFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAs''@;'; put 'put ''MCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMCwxMy41YTcuNDksNy40OSwwLDAsMS02LjQ2''@;'; put 'put ''LTMuN0gxMS4yNVY4YTEsMSwwLDAsMSwxLTFoMy40NFY2LjMyYTIuMzEsMi4zMSwwLDAsMSw0LjYzLDBWN2gyLjI2YTcuNTMsNy41MywwLDAsMS0uMDctMSw3LjUzLDcuNTMsMCwwLDEsLjA4LTEuMDVoLS41YTQuMzEsNC4zMSwwLDAsMC04LjE3LDBIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY0''@;'; put 'put ''VjMyLjI2YTEuNywxLjcsMCwwLDAsMS43MSwxLjY5SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMjZWMTMuNDNBNy41Miw3LjUyLDAsMCwxLDMwLDEzLjVabS00LjIzLDMuNzEtOS4xMiw5LjEyLTUuMjQtNS4yNGExLjQsMS40LDAsMCwxLDItMmwzLjI2LDMuMjYsNy4xNC03LjE0YTEuNCwx''@;'; put 'put ''LjQsMCwxLDEsMiwyWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxMLkNsclNoYXBlRmxhZz0oMCxFLmNsckljb25TVkcp''@;'; put 'put ''KCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTYsMzRhMSwxLDAsMCwxLTEtMVYzQTEsMSwwLDAsMSw3LDNWMzNBMSwxLDAsMCwxLDYsMzRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTIiIGQ9Ik0zMC41NSwzLjgyYTEsMSwwLDAsMC0xLDAsMTQuOSwxNC45LDAsMCwxLTYuMTMsMS4xNiwxMy4xMSwxMy4xMSwwLDAsMS01LjE4LTEuNDksMTIuNzgsMTIuNzgsMCwwLDAtNS0xLjQ1QTEwLjg2LDEwLjg2LDAsMCwwLDksMi44NVY1LjA4QTguOCw4LjgsMCwwLDEs''@;'; put 'put ''MTMuMjUsNGExMS4yMiwxMS4yMiwwLDAsMSw0LjIsMS4yOCwxNC44NCwxNC44NCwwLDAsMCw2LDEuNjZBMTguNzUsMTguNzUsMCwwLDAsMjksNi4xMlYxOC45NWExNi4xNiwxNi4xNiwwLDAsMS01LjU4LjkzLDEzLjExLDEzLjExLDAsMCwxLTUuMTgtMS40OSwxMi43OCwxMi43OCwwLDAsMC01''@;'; put 'put ''LTEuNDVBMTAuODYsMTAuODYsMCwwLDAsOSwxNy43OVYyMGE4LjgsOC44LDAsMCwxLDQuMjUtMS4wOCwxMS4yMiwxMS4yMiwwLDAsMSw0LjIsMS4yOCwxNC44NCwxNC44NCwwLDAsMCw2LDEuNjYsMTYuNzksMTYuNzksMCwwLDAsNy0xLjM3LDEsMSwwLDAsMCwuNTUtLjg5VjQuNjdBMSwxLDAs''@;'; put 'put ''MCwwLDMwLjU1LDMuODJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTUuOTIsMmExLDEsMCwwLDAtMSwxVjMzYTEsMSwwLDAsMCwyLDBWM0ExLDEsMCwwLDAsNS45MiwyWiIvPlxuICAgICAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMC41LDMuODJhMSwxLDAsMCwwLTEsMCwxNC45LDE0LjksMCwwLDEtNi4xMywxLjE2LDEzLjExLDEzLjExLDAsMCwxLTUuMTgtMS40OUExMi43OCwxMi43OCwwLDAsMCwxMy4yLDIsMTAuODYsMTAuODYsMCww''@;'; put 'put ''LDAsOSwyLjg1VjIwYTguOCw4LjgsMCwwLDEsNC4yNS0xLjA4LDExLjIyLDExLjIyLDAsMCwxLDQuMiwxLjI4LDE0Ljg0LDE0Ljg0LDAsMCwwLDYsMS42NiwxNi43OSwxNi43OSwwLDAsMCw3LTEuMzcsMSwxLDAsMCwwLC41NS0uODlWNC42N0ExLDEsMCwwLDAsMzAuNSwzLjgyWiIvPicpLEwu''@;'; put 'put ''Q2xyU2hhcGVJbmJveD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTIuMjMsMTMuMDlhMSwxLDAsMCwwLDAsMS40MUwxOCwyMC4zbDUuNzktNS43OWExLDEsMCwwLDAtMS40MS0xLjQxTDE5LDE2LjQ3VjJBMSwxLDAsMCwwLDE4LDFhMSwxLDAsMCwwLTEsMXYxNC41bC0zLjM4LTMuMzhB''@;'; put 'put ''MSwxLDAsMCwwLDEyLjIzLDEzLjA5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS41LDVIMjJWN2g3VjIxSDIzLjYxbC0uMS44OWE1LjQyLDUuNDIsMCwwLDEtMTAuNzcsMGwtLjEtLjg5SDdWN2g3VjVINi41''@;'; put 'put ''QTEuNSwxLjUsMCwwLDAsNSw2LjV2MjVBMS41LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41VjYuNUExLjUsMS41LDAsMCwwLDI5LjUsNVpNMjksMzFIN1YyM2gzLjkxYTcuNDIsNy40MiwwLDAsMCwxNC40NCwwSDI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi4yMywxMy4wOWExLDEsMCwwLDAsMCwxLjQxTDE4LDIwLjNsNS43OS01Ljc5YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTksMTYuNDdWMkExLDEsMCwwLDAsMTgsMWExLDEsMCwwLDAtMSwxdjE0LjVsLTMuMzgtMy4z''@;'; put 'put ''OEExLDEsMCwwLDAsMTIuMjMsMTMuMDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNTIsNy41MiwwLDAsMS0xLS4wN1YyMUgyMy42MWwtLjEuODlhNS40Miw1LjQy''@;'; put 'put ''LDAsMCwxLTEwLjc3LDBsLS4xLS44OUg3VjdoN1Y1SDYuNUExLjUsMS41LDAsMCwwLDUsNi41djI1QTEuNSwxLjUsMCwwLDAsNi41LDMzaDIzQTEuNSwxLjUsMCwwLDAsMzEsMzEuNVYxMy40M0E3LjUyLDcuNTIsMCwwLDEsMzAsMTMuNVpNMjksMzFIN1YyM2gzLjkxYTcuNDIsNy40MiwwLDAs''@;'; put 'put ''MCwxNC40NCwwSDI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLEwuQ2xyU2hhcGVIZWFydD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMzIuNDNhMSwxLDAsMCwxLS42MS0uMjFDMTEuODMsMjcuOSw4LDI0LjE4LDUuMzIsMjAuNTEsMS45LDE1LjgyLDEuMTIsMTEuNDksMyw3LjY0YzEuMzQtMi43''@;'; put 'put ''NSw1LjE5LTUsOS42OS0zLjY5QTkuODcsOS44NywwLDAsMSwxOCw3LjcyYTkuODcsOS44NywwLDAsMSw1LjMxLTMuNzdjNC40OS0xLjI5LDguMzUuOTQsOS42OSwzLjY5LDEuODgsMy44NSwxLjEsOC4xOC0yLjMyLDEyLjg3QzI4LDI0LjE4LDI0LjE3LDI3LjksMTguNjEsMzIuMjJBMSwxLDAs''@;'; put 'put ''MCwxLDE4LDMyLjQzWk0xMC4xMyw1LjU4QTUuOSw1LjksMCwwLDAsNC44LDguNTFjLTEuNTUsMy4xOC0uODUsNi43MiwyLjE0LDEwLjgxQTU3LjEzLDU3LjEzLDAsMCwwLDE4LDMwLjE2LDU3LjEzLDU3LjEzLDAsMCwwLDI5LjA2LDE5LjMzYzMtNC4xLDMuNjktNy42NCwyLjE0LTEwLjgxLTEt''@;'; put 'put ''Mi00LTMuNTktNy4zNC0yLjY1YTgsOCwwLDAsMC00Ljk0LDQuMiwxLDEsMCwwLDEtMS44NSwwLDcuOTMsNy45MywwLDAsMC00Ljk0LTQuMkE3LjMxLDcuMzEsMCwwLDAsMTAuMTMsNS41OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMzMsNy42NGMtMS4zNC0yLjc1LTUuMi01LTkuNjktMy42OUE5Ljg3LDkuODcsMCwwLDAsMTgsNy43MmE5Ljg3LDkuODcsMCwwLDAtNS4zMS0zLjc3QzguMTksMi42Niw0LjM0LDQuODksMyw3LjY0Yy0xLjg4LDMuODUtMS4xLDguMTgsMi4zMiwxMi44N0M4LDI0LjE4LDEx''@;'; put 'put ''LjgzLDI3LjksMTcuMzksMzIuMjJhMSwxLDAsMCwwLDEuMjMsMGM1LjU1LTQuMzEsOS4zOS04LDEyLjA3LTExLjcxQzM0LjEsMTUuODIsMzQuODgsMTEuNDksMzMsNy42NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxMLkNsclNoYXBlSGVhcnRCcm9rZW49''@;'; put 'put ''KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLDcuNjRjLTEuMzQtMi43NS01LjA5LTUtOS42OS0zLjY5YTkuODcsOS44NywwLDAsMC02LDQuODQsMTguOSwxOC45LDAsMCwwLTIuMjMsNS4zM2w1LjI4LDIuMzQtNC42LDQuMzcsMy40OSw0LjEsMS41Mi0xLjNMMTguNTQsMjFsNS40LTUu''@;'; put 'put ''MTNMMTcuNTgsMTNBMTYuMjMsMTYuMjMsMCwwLDEsMTkuNzUsOC45YTcuNjgsNy42OCwwLDAsMSw0LjExLTNjMy4zNC0uODksNi4zNC42LDcuMzQsMi42NSwxLjU1LDMuMTguODUsNi43Mi0yLjE0LDEwLjgxQTU3LjE2LDU3LjE2LDAsMCwxLDE4LDMwLjE2LDU3LjE2LDU3LjE2LDAsMCwxLDYu''@;'; put 'put ''OTQsMTkuMzNjLTMtNC4xLTMuNjktNy42NC0yLjE0LTEwLjgxYTUuOSw1LjksMCwwLDEsNS4zMy0yLjkzLDcuMzEsNy4zMSwwLDAsMSwyLC4yOSw3LjcsNy43LDAsMCwxLDMuMzgsMmwuMTUtLjNhMTAuNjYsMTAuNjYsMCwwLDEsMS0xLjQxLDkuNjQsOS42NCwwLDAsMC0zLjk0LTIuMjJDOC4y''@;'; put 'put ''LDIuNjYsNC4zNCw0Ljg5LDMsNy42NGMtMS44OCwzLjg1LTEuMSw4LjE4LDIuMzIsMTIuODdDOCwyNC4xOCwxMS44MywyNy45LDE3LjM5LDMyLjIyYTEsMSwwLDAsMCwxLjIzLDBjNS41NS00LjMxLDkuMzktOCwxMi4wNy0xMS43MUMzNC4xLDE1LjgyLDM0Ljg4LDExLjQ5LDMzLDcuNjRaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLDcuNjRjLTEuMzQtMi43NS01LjItNS05LjY5LTMuNjlBMTEuNTUsMTEuNTUsMCwwLDAsMTguMTksNy41YTE2Ljg5LDE2Ljg5LDAsMCwwLTIuNDgsNC41NkwyMi4yNywx''@;'; put 'put ''NSwxNi43LDIwLjI2LDE5LDIzbC0xLjU3LDEuMzQtMy42LTQuMjIsNC43NC00LjUxLTUuNDQtMi40MWExOS40OSwxOS40OSwwLDAsMSwyLjMtNS41LDE0Ljc3LDE0Ljc3LDAsMCwxLDEuMDYtMS41NGwuMDYsMGE5LjY2LDkuNjYsMCwwLDAtMy44OS0yLjE4QzguMTksMi42Niw0LjM0LDQuODks''@;'; put 'put ''Myw3LjY0Yy0xLjg4LDMuODUtMS4xLDguMTgsMi4zMiwxMi44N0M4LDI0LjE4LDExLjgzLDI3LjksMTcuMzksMzIuMjJhMSwxLDAsMCwwLDEuMjMsMGM1LjU1LTQuMzEsOS4zOS04LDEyLjA3LTExLjcxQzM0LjEsMTUuODIsMzQuODgsMTEuNDksMzMsNy42NFoiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxMLkNsclNoYXBlVGFsa0J1YmJsZXM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIzLDI2YTEsMSwwLDAsMS0xLDFIOGMtLjIyLDAtLjQzLjItLjYxLjMzTDQsMzBWMTRhMSwxLDAsMCwxLDEtMUg4Ljg2VjExSDVhMywzLDAsMCwwLTMsM1Yz''@;'; put 'put ''MmExLDEsMCwwLDAsLjU2Ljg5LDEsMSwwLDAsMCwxLS4xTDguNzEsMjlIMjIuMTVBMi43NywyLjc3LDAsMCwwLDI1LDI2LjEzVjI1SDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMSw0SDE0YTMsMywwLDAs''@;'; put 'put ''MC0zLDNWMTlhMywzLDAsMCwwLDMsM0gyNy41NWw0Ljc4LDMuNzFhMSwxLDAsMCwwLDEsLjExLDEsMSwwLDAsMCwuNTctLjlWN0EzLDMsMCwwLDAsMzEsNFpNMzIsMjIuOTQsMjguNSwyMC4yMWExLDEsMCwwLDAtLjYxLS4yMUgxNGExLDEsMCwwLDEtMS0xVjdhMSwxLDAsMCwxLDEtMUgzMUEx''@;'; put 'put ''LjEsMS4xLDAsMCwxLDMyLDcuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLDI2YTEsMSwwLDAsMS0xLDFIOGMtLjIyLDAtLjQzLjItLjYxLjMzTDQsMzBWMTRhMSwxLDAsMCwxLDEtMUg4Ljg2VjExSDVh''@;'; put 'put ''MywzLDAsMCwwLTMsM1YzMmExLDEsMCwwLDAsLjU2Ljg5LDEsMSwwLDAsMCwxLS4xTDguNzEsMjlIMjIuMTVBMi43NywyLjc3LDAsMCwwLDI1LDI2LjEzVjI1SDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMzIsMTMuMjJ2OS43MkwyOC41LDIwLjIxYTEsMSwwLDAsMC0uNjEtLjIxSDE0YTEsMSwwLDAsMS0xLTFWN2ExLDEsMCwwLDEsMS0xSDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDE0YTMsMywwLDAsMC0zLDNWMTlhMywzLDAsMCwwLDMsM0gyNy41NWw0Ljc4LDMu''@;'; put 'put ''NzFhMSwxLDAsMCwwLDEsLjExLDEsMSwwLDAsMCwuNTctLjlWMTIuMzdBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYi''@;'; put 'put ''IHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTgsMTlWMTFINWEzLDMsMCwwLDAtMywzVjMyYTEsMSwwLDAsMCwuNTYuODksMSwxLDAsMCwwLDEtLjFMOC43''@;'; put 'put ''MSwyOUgyMi4xNUEyLjc3LDIuNzcsMCwwLDAsMjUsMjYuMTNWMjVIMTRBNiw2LDAsMCwxLDgsMTlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEsNEgxNGEzLDMsMCwwLDAtMywzVjE5YTMsMywwLDAsMCwzLDNIMjcu''@;'; put 'put ''NTVsNC43OCwzLjcxYTEsMSwwLDAsMCwxLC4xMSwxLDEsMCwwLDAsLjU3LS45VjdBMywzLDAsMCwwLDMxLDRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOCwxOVYxMUg1YTMsMywwLDAsMC0zLDNWMzJhMSwxLDAsMCww''@;'; put 'put ''LC41Ni44OSwxLDEsMCwwLDAsMS0uMUw4LjcxLDI5SDIyLjE1QTIuNzcsMi43NywwLDAsMCwyNSwyNi4xM1YyNUgxNEE2LDYsMCwwLDEsOCwxOVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MzAsMTMuNUE3LjQ4LDcuNDgsMCwwLDEsMjIuNzgsNEgxNGEzLDMsMCwwLDAtMywzVjE5YTMsMywwLDAsMCwzLDNIMjcuNTVsNC43OCwzLjcxYTEsMSwwLDAsMCwxLC4xMSwxLDEsMCwwLDAsLjU3LS45VjEyLjM3QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz4nKSxMLkNsclNoYXBlQ2hh''@;'; put 'put ''dEJ1YmJsZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMi41Yy04LjgyLDAtMTYsNi4yOC0xNiwxNHM3LjE4LDE0LDE2LDE0YTE4LDE4LDAsMCwwLDQuODgtLjY4bDUuNTMsMy41MmExLDEsMCwwLDAsMS41NC0uODRsMC02LjczYTEzLDEzLDAsMCwwLDQtOS4yN0MzNCw4Ljc4LDI2''@;'; put 'put ''LjgyLDIuNSwxOCwyLjVaTTI4LjI5LDI0LjYxYTEsMSwwLDAsMC0uMzIuNzNsMCw1LjM0LTQuMzgtMi43OWExLDEsMCwwLDAtLjgzLS4xMUExNiwxNiwwLDAsMSwxOCwyOC41Yy03LjcyLDAtMTQtNS4zOC0xNC0xMnM2LjI4LTEyLDE0LTEyLDE0LDUuMzgsMTQsMTJBMTEuMDgsMTEuMDgsMCww''@;'; put 'put ''LDEsMjguMjksMjQuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNSwxNS41SDExYTEsMSwwLDAsMCwwLDJIMjVhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIxLjc1LDIwLjVoLTcuNWExLDEsMCwwLDAsMCwyaDcuNWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuMjgsMTIuNUgy''@;'; put 'put ''NC43MmExLDEsMCwwLDAsMC0ySDExLjI4YTEsMSwwLDAsMCwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4zOCwxMi42OWE3LjQzLDcuNDMsMCwwLDEtMS44OS42NkExMC4zNSwxMC4zNSwwLDAsMSwz''@;'; put 'put ''MiwxNi41YTExLjA4LDExLjA4LDAsMCwxLTMuNzEsOC4xMSwxLDEsMCwwLDAtLjMyLjczbDAsNS4zNC00LjM4LTIuNzlhMSwxLDAsMCwwLS44My0uMTFBMTYsMTYsMCwwLDEsMTgsMjguNWMtNy43MiwwLTE0LTUuMzgtMTQtMTJzNi4yOC0xMiwxNC0xMmExNiwxNiwwLDAsMSw0LjU1LjY2QTcu''@;'; put 'put ''NDQsNy40NCwwLDAsMSwyMywzLjIyYTE4LDE4LDAsMCwwLTUtLjcyYy04LjgyLDAtMTYsNi4yOC0xNiwxNHM3LjE4LDE0LDE2LDE0YTE4LDE4LDAsMCwwLDQuODgtLjY4bDUuNTMsMy41MmExLDEsMCwwLDAsMS41NC0uODRsMC02LjczYTEzLDEzLDAsMCwwLDQtOS4yN0ExMi4zMiwxMi4zMiww''@;'; put 'put ''LDAsMCwzMy4zOCwxMi42OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMSwxNS41YTEsMSwwLDAsMCwwLDJIMjVhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC4yNSwyMC41YTEsMSwwLDAsMCwwLDJoNy41YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRn''@;'; put 'put ''ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMjgsMTEuNWExLDEsMCwwLDAsMSwxSDI0LjcyYTEsMSwwLDAsMCwuODMtLjQ3QTcuNTMsNy41MywwLDAsMSwyNCwxMC41SDExLjI4QTEsMSwwLDAsMCwxMC4yOCwxMS41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTE4LDIuNWMtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNGExOCwxOCwwLDAsMCw0Ljg4LS42OGw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuNTQtLjg0bDAtNi43M2ExMywxMywwLDAsMCw0LTkuMjdDMzQsOC43OCwyNi44MiwyLjUsMTgsMi41Wm04LDE0YTEsMSwwLDAsMS0x''@;'; put 'put ''LDFIMTFhMSwxLDAsMCwxLDAtMkgyNUExLDEsMCwwLDEsMjYsMTYuNVptLTMuMjUsNWExLDEsMCwwLDEtMSwxaC03LjVhMSwxLDAsMCwxLDAtMmg3LjVBMSwxLDAsMCwxLDIyLjc1LDIxLjVabS0xMi40Ny0xMGExLDEsMCwwLDEsMS0xSDI0LjcyYTEsMSwwLDAsMSwwLDJIMTEuMjhBMSwxLDAs''@;'; put 'put ''MCwxLDEwLjI4LDExLjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjI1YTcuNDYsNy40NiwwLDAsMS00LjM1LTEuNCwxLDEsMCwwLDEtLjkzLjY1SDExLjI4YTEsMSwwLDAsMSwwLTJIMjQuMkE3LjQ2LDcu''@;'; put 'put ''NDYsMCwwLDEsMjMsMy4yYTE4LDE4LDAsMCwwLTUtLjdjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgsMTQsMTYsMTRhMTgsMTgsMCwwLDAsNC44OC0uNjhsNS41MywzLjUyYTEsMSwwLDAsMCwxLjU0LS44NGwwLTYuNzNhMTMsMTMsMCwwLDAsNC05LjI3LDEyLjM0LDEyLjM0LDAsMCwwLS42''@;'; put 'put ''OC00QTcuNDYsNy40NiwwLDAsMSwzMCwxMy4yNVpNMjEuNzUsMjIuNWgtNy41YTEsMSwwLDAsMSwwLTJoNy41YTEsMSwwLDAsMSwwLDJabTMuMjUtNUgxMWExLDEsMCwwLDEsMC0ySDI1YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNS43NSIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLEwuQ2xyU2hhcGVQaWN0dXJlPSgwLEUuY2xySWNvblNW''@;'; put 'put ''RykoJzxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNNCwzMFY2SDMyVjMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik04LjkyLDE0YTMsMywwLDEsMC0zLTNBMywzLDAsMCwwLDguOTIsMTRabTAtNC42QTEuNiwxLjYsMCwxLDEsNy4zMywxMSwxLjYsMS42LDAsMCwxLDguOTIsOS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMjIuNzgsMTUuMzdsLTUuNCw1LjQtNC00YTEsMSwwLDAsMC0xLjQxLDBMNS45MiwyMi45djIuODNsNi43OS02Ljc5TDE2LDIyLjE4bC0zLjc1LDMuNzVIMTVsOC40NS04LjQ1TDMwLDI0VjIxLjE4bC01LjgxLTUuODFBMSwxLDAsMCwwLDIyLjc4LDE1LjM3WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45MywxMWEzLDMsMCwxLDAtMywzQTMsMywwLDAsMCwxMS45MywxMVptLTQuNiwwYTEuNiwxLjYsMCwxLDEsMS42LDEuNkExLjYsMS42LDAsMCwxLDcuMzMsMTFaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy4zOCwyMC43N2wtNC00YTEsMSwwLDAsMC0xLjQxLDBMNS45MiwyMi45djIuODNsNi43OS02Ljc5TDE2LDIyLjE4bC0zLjc1LDMuNzVIMTVsOC40NS04LjQ1TDMwLDI0''@;'; put 'put ''VjIxLjE4bC01LjgxLTUuODFhMSwxLDAsMCwwLTEuNDEsMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDEzLjIyVjMwSDRWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkg0''@;'; put 'put ''QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBj''@;'; put 'put ''eD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAs''@;'; put 'put ''MCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNOC45Miw4YTMsMywwLDEsMS0zLDNBMywzLDAsMCwxLDguOTIsOFpNNiwyN1YyMi45bDYtNi4wOGExLDEsMCwwLDEsMS40MSwwTDE2LDE5LjM1LDguMzIsMjdabTI0LDBIMTEuMTVsNi4yMy02LjIzLDUuNC01LjRhMSwxLDAsMCwxLDEuNDEsMEwzMCwy''@;'; put 'put ''MS4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNDgsNy40OCwwLDAsMSwyMi43OCw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40Niw3''@;'; put 'put ''LjQ2LDAsMCwxLDMwLDEzLjVaTTguOTIsOGEzLDMsMCwxLDEtMywzQTMsMywwLDAsMSw4LjkyLDhaTTYsMjdWMjIuOWw2LTYuMDhhMSwxLDAsMCwxLDEuNDEsMEwxNiwxOS4zNSw4LjMyLDI3Wm0yNCwwSDExLjE1bDYuMjMtNi4yMyw1LjQtNS40YTEsMSwwLDAsMSwxLjQxLDBMMzAsMjEuMTha''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRn''@;'; put 'put ''ZSIvPicpLEwuQ2xyU2hhcGVIYXBweUZhY2U9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMC44OSIgY3k9IjEzLjg5IiByPSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjUuMDUiIGN5PSIxMy44OSIgcj0iMiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4xMywyOC4yMWE4LjY3LDguNjcsMCwwLDAsOC4yNi02SDkuODdBOC42Nyw4LjY3LDAsMCwwLDE4LjEzLDI4LjIxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTguODksMTMuODlhMiwyLDAsMSwxLDIsMkEyLDIsMCwwLDEsOC44OSwxMy44OVptOS4yNCwxNC4zMmE4LjY3LDguNjcsMCwwLDEtOC4yNi02SDI2LjM4''@;'; put 'put ''QTguNjcsOC42NywwLDAsMSwxOC4xMywyOC4yMVptNi45My0xMi4zMmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwyNS4wNSwxNS44OVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxMLkNsclNoYXBlTmV1dHJhbEZhY2U9KDAsRS5jbHJJY29uU1ZHKSgnPHBh''@;'; put 'put ''dGggZD0iTTI0LjA1LDIyLjA2aC0xMmExLDEsMCwwLDAsMCwyaDEyYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpt''@;'; put 'put ''MCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNS4xNiIgY3k9IjE0LjI4IiByPSIxLjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMS4xNiIgY3k9IjE0LjI4IiByPSIxLjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwx''@;'; put 'put ''NiwwLDAsMCwxOCwyWm03LjA1LDIxLjA2YTEsMSwwLDAsMS0xLDFoLTEyYTEsMSwwLDAsMSwwLTJoMTJBMSwxLDAsMCwxLDI1LjA1LDIzLjA2Wk0yNywxNC4yOGExLjgsMS44LDAsMSwxLTEuOC0xLjhBMS44LDEuOCwwLDAsMSwyNywxNC4yOFptLTE1LjgsMS44YTEuOCwxLjgsMCwxLDEsMS44''@;'; put 'put ''LTEuOEExLjgsMS44LDAsMCwxLDExLjE2LDE2LjA4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLEwuQ2xyU2hhcGVTYWRGYWNlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAs''@;'; put 'put ''MzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjUuMTYiIGN5PSIxNC4yOCIgcj0iMS44IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTEuNDEiIGN5PSIxNC4yOCIgcj0iMS44IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjE2LDIwYTksOSwwLDAsMC03LjMzLDMuNzgs''@;'; put 'put ''MSwxLDAsMSwwLDEuNjMsMS4xNiw3LDcsMCwwLDEsMTEuMzEtLjEzLDEsMSwwLDAsMCwxLjYtMS4yQTksOSwwLDAsMCwxOC4xNiwyMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwz''@;'; put 'put ''NCwxOCwxNiwxNiwwLDAsMCwxOCwyWm05LDEyLjI4YTEuOCwxLjgsMCwxLDEtMS44LTEuOEExLjgsMS44LDAsMCwxLDI3LDE0LjI4Wm0tMTUuNTUsMS44YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDExLjQxLDE2LjA4Wm0xNCw3LjUzYTEsMSwwLDAsMS0xLjYsMS4yLDcs''@;'; put 'put ''NywwLDAsMC0xMS4zMS4xMywxLDEsMCwxLDEtMS42My0xLjE2LDksOSwwLDAsMSwxNC41NC0uMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksTC5DbHJTaGFwZVRodW1ic1VwPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNCwyNmMtMi45MiwxLjgy''@;'; put 'put ''LTcuMyw0LTkuMzcsNGgtNmExNi42OCwxNi42OCwwLDAsMS0zLjMxLTYuMDhBMjYuNzEsMjYuNzEsMCwwLDEsNCwxNmg5VjZhMi4wNSwyLjA1LDAsMCwxLDEuMjYtMS42OWMuNzcsMiwyLjYyLDYuNTcsNC4yMyw4LjcyQTExLjM5LDExLjM5LDAsMCwwLDI0LDE2LjkxVjE0Ljc4YTkuMTMsOS4x''@;'; put 'put ''MywwLDAsMS0zLjkxLTNjLTEuODgtMi41MS00LjI5LTkuMTEtNC4zMS05LjE3QTEsMSwwLDAsMCwxNC41OSwyQzEzLjI1LDIuMzgsMTEsMy42LDExLDZ2OEgzYTEsMSwwLDAsMC0xLDEsMjksMjksMCwwLDAsMS40LDkuNjJjMS44OSw1LjQsNC4xLDcuMTQsNC4yLDcuMjJhMSwxLDAsMCwwLC42''@;'; put 'put ''MS4yMWg2LjQyYzIuNDMsMCw2LjU1LTIsOS4zNy0zLjYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQsMzFIMjdhMSwxLDAsMCwxLTEtMVYxNGExLDEsMCwwLDEsMS0xaDdabS02LTJoNFYxNUgyOFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LjYzLDEyLjEyQzE3LjUxLDkuMjgsMTQuODgsMiwxNC44OCwyUzEyLDIuODMsMTIsNS4yNVYxNUgyLjIzYTI5LjQ2LDI5LjQ2LDAsMCwwLDEuNDQsOS43NEM1LjYxLDMw''@;'; put 'put ''LjI3LDcuOCwzMiw3LjgsMzJoNi44NkMxNi45LDMyLDIxLDMwLjA2LDI0LDI4LjMxVjE1LjUxQTEwLjg0LDEwLjg0LDAsMCwxLDE5LjYzLDEyLjEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNywxM2ExLDEsMCww''@;'; put 'put ''LDAtMSwxVjMwYTEsMSwwLDAsMCwxLDFoN1YxM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZVRodW1ic0Rvd249KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEyLDEwYzIuOTItMS44Miw3LjMtNCw5LjM3LTRoNmExNi42OCwxNi42''@;'; put 'put ''OCwwLDAsMSwzLjMxLDYuMDhBMjYuNzEsMjYuNzEsMCwwLDEsMzIsMjBIMjNWMzBhMi4wNSwyLjA1LDAsMCwxLTEuMjYsMS42OWMtLjc3LTItMi42Mi02LjU3LTQuMjMtOC43MkExMS4zOSwxMS4zOSwwLDAsMCwxMiwxOS4wOXYyLjEzYTkuMTMsOS4xMywwLDAsMSwzLjkxLDNjMS44OCwyLjUx''@;'; put 'put ''LDQuMjksOS4xMSw0LjMxLDkuMTdhMSwxLDAsMCwwLDEuMTkuNjNDMjIuNzUsMzMuNjIsMjUsMzIuNCwyNSwzMFYyMmg4YTEsMSwwLDAsMCwxLTEsMjksMjksMCwwLDAtMS40LTkuNjJjLTEuODktNS40LTQuMS03LjE0LTQuMi03LjIyQTEsMSwwLDAsMCwyNy43OSw0SDIxLjM3QzE4Ljk0LDQs''@;'; put 'put ''MTQuODMsNiwxMiw3LjYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMiw1SDlhMSwxLDAsMCwxLDEsMVYyMmExLDEsMCwwLDEtMSwxSDJaTTgsN0g0VjIxSDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNi4zNywyMy44NGMyLjEyLDIuODQsNC43NiwxMC4wNyw0Ljc2LDEwLjA3UzI0LDMzLjEzLDI0LDMwLjcxVjIxaDkuNzdhMjkuNDYsMjkuNDYsMCwwLDAtMS40NC05Ljc0QzMwLjM5LDUuNjgsMjguMiw0LDI4LjIs''@;'; put 'put ''NEgyMS4zNUMxOS4xLDQsMTUsNS45LDEyLDcuNjV2MTIuOEExMC44NCwxMC44NCwwLDAsMSwxNi4zNywyMy44NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOSwyM2ExLDEsMCwwLDAsMS0xVjZBMSwxLDAsMCwwLDks''@;'; put 'put ''NUgyVjIzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxMLkNsclNoYXBlQ3Jvd249KDAsRS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik00LDEzLjMzQTEuMzksMS4zOSwwLDEsMCwyLjYsMTQuNzIsMS4zOSwxLjM5LDAsMCwwLDQsMTMuMzNaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzEuODEsMTUuODRhMjAuMzUsMjAuMzUsMCwwLDAtNC41OCwxLjQzLDIyLjcsMjIuNywwLDAsMC0zLjQ4LDIuMUExNy42OSwxNy42OSwwLDAsMSwyMiwxNi41N2E0Ny42NSw0Ny42NSwwLDAsMS0y''@;'; put 'put ''LjgtNy42OSwxLDEsMCwwLDAtMS0uNzQsMSwxLDAsMCwwLTEsLjc0LDQ2LjcxLDQ2LjcxLDAsMCwxLTIuOCw3LjY5LDE3LDE3LDAsMCwxLTEuNzYsMi44LDIyLjcsMjIuNywwLDAsMC0zLjQ4LTIuMSwyMC42NiwyMC42NiwwLDAsMC00LjU4LTEuNDMsMSwxLDAsMCwwLTEsLjM5LDEsMSwwLDAs''@;'; put 'put ''MC0uMDksMS4wNUE1MC4xMyw1MC4xMywwLDAsMSw3LjgyLDMxLjE3YTEsMSwwLDAsMCwxLC44M0gyNy42MmExLDEsMCwwLDAsMS0uODMsNTAuMTUsNTAuMTUsMCwwLDEsNC4yNi0xMy44OSwxLDEsMCwwLDAtLjA5LTEuMDVBMSwxLDAsMCwwLDMxLjgxLDE1Ljg0Wk0yNi43OSwzMEg5LjY0YTU1''@;'; put 'put ''LjY2LDU1LjY2LDAsMCwwLTMuNC0xMS43MSwxNS43NSwxNS43NSwwLDAsMSwyLjA5Ljc4LDIwLDIwLDAsMCwxLDMuODUsMi40NSwxLDEsMCwwLDAsMS4zOS0uMDksMTkuMjgsMTkuMjgsMCwwLDAsMi42Ny00LDQzLjQ2LDQzLjQ2LDAsMCwwLDItNC44OSw0MS43NCw0MS43NCwwLDAsMCwyLDQu''@;'; put 'put ''ODksMTkuOTIsMTkuOTIsMCwwLDAsMi42Niw0LDEsMSwwLDAsMCwxLjQuMDksMTkuMjEsMTkuMjEsMCwwLDEsMy44NS0yLjQ1LDE0Ljc3LDE0Ljc3LDAsMCwxLDIuMDktLjc4QTU1LjA3LDU1LjA3LDAsMCwwLDI2Ljc5LDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTIiLz5cbiAgPGVsbGlwc2UgY3g9IjMzLjgzIiBjeT0iMTMuMzMiIHJ4PSIxLjM5IiByeT0iMS4zOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTE4LjIyLDYuMzlBMS4zOSwxLjM5LDAsMSwwLDE2Ljg0LDUsMS4zOSwxLjM5''@;'; put 'put ''LDAsMCwwLDE4LjIyLDYuMzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMTguMjMsMjYuMzRhMS4xMSwxLjExLDAsMSwwLDEuMSwxLjFBMS4xLDEuMSwwLDAsMCwxOC4yMywyNi4zNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxwYXRoIGQ9Ik0xMi41OCwyNi4zNGExLjExLDEuMTEsMCwxLDAsMS4xLDEuMUExLjEsMS4xLDAsMCwwLDEyLjU4LDI2LjM0WiIvPjxwYXRoIGQ9Ik0yMy44OSwyNi4zNGExLjExLDEuMTEsMCwxLDAsMS4xLDEuMUExLjEsMS4xLDAsMCwwLDIzLjg5''@;'; put 'put ''LDI2LjM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cblxuICA8cGF0aCBkPSJNMi42LDExLjkzQTEuNCwxLjQsMCwxLDAsNCwxMy4zMywxLjQsMS40LDAsMCwwLDIuNiwxMS45M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''Lz5cbiAgPGVsbGlwc2UgY3g9IjMzLjgzIiBjeT0iMTMuMzMiIHJ4PSIxLjM5IiByeT0iMS4zOSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMTguMjIsNi4zOUExLjM5LDEuMzksMCwxLDAsMTYuODQsNSwxLjM5LDEuMzksMCwwLDAsMTgu''@;'; put 'put ''MjIsNi4zOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTMxLjYzLDE2LjFBMTguNjEsMTguNjEsMCwwLDAsMjgsMTcuMzRhMjEuNTcsMjEuNTcsMCwwLDAtNCwyLjQ5LDE5LjIsMTkuMiwwLDAsMS0yLjI2LTMuNDksNDguOTIsNDguOTIs''@;'; put 'put ''MCwwLDEtMi41Mi02LjU4LDEsMSwwLDAsMC0xLS43MWgwYTEsMSwwLDAsMC0xLC43MSw0OC40Miw0OC40MiwwLDAsMS0yLjUyLDYuNTgsMTguNjksMTguNjksMCwwLDEtMi4yNiwzLjQ4LDIyLjgxLDIyLjgxLDAsMCwwLTQtMi40OEExOC44MywxOC44MywwLDAsMCw0LjksMTYuMWExLDEsMCww''@;'; put 'put ''LDAtMSwuMzMsMSwxLDAsMCwwLS4xMywxLjA3LDU1LjksNTUuOSwwLDAsMSw0LDEzLjUsMSwxLDAsMCwwLDEsLjgzaDE5YTEsMSwwLDAsMCwxLS44Myw1NS45LDU1LjksMCwwLDEsNC0xMy41LDEsMSwwLDAsMC0uMTMtMS4wN0ExLDEsMCwwLDAsMzEuNjMsMTYuMVpNMTEuMDgsMjguNTVhMS4x''@;'; put 'put ''MSwxLjExLDAsMSwxLDEuMS0xLjExQTEuMTEsMS4xMSwwLDAsMSwxMS4wOCwyOC41NVptNy4xNSwwYTEuMTEsMS4xMSwwLDAsMSwwLTIuMjEsMS4xMSwxLjExLDAsMCwxLDAsMi4yMVptNy4xNiwwYTEuMTEsMS4xMSwwLDEsMSwxLjEtMS4xMUExLjExLDEuMTEsMCwwLDEsMjUuMzksMjguNTVa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00Ii8+XG4gICcpLEwuQ2xyU2hhcGVIYXNodGFnPSgwLEUuY2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNMzIsMTJIMjUuMzRsMS41NS03Ljc0YTEsMSwwLDAsMC0yLS4zOUwyMy4zLDEySDE1LjExbDEuNTUtNy43NGExLDEs''@;'; put 'put ''MCwwLDAtMi0uMzlMMTMuMDcsMTJINmExLDEsMCwwLDAsMCwyaDYuNjdsLTEuNiw4SDRhMSwxLDAsMCwwLDAsMmg2LjY2TDkuMTEsMzEuNzRhMSwxLDAsMCwwLC43OSwxLjE3LjY4LjY4LDAsMCwwLC4yLDAsMSwxLDAsMCwwLDEtLjhMMTIuNywyNGg4LjE5bC0xLjU1LDcuNzRhMSwxLDAsMCww''@;'; put 'put ''LC43OSwxLjE3LjYyLjYyLDAsMCwwLC4xOSwwLDEsMSwwLDAsMCwxLS44TDIyLjkzLDI0SDMwYTEsMSwwLDAsMCwwLTJIMjMuMzNsMS42MS04SDMyYTEsMSwwLDAsMCwwLTJaTTIxLjI5LDIySDEzLjFsMS42MS04SDIyLjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMSIvPlxuXG4gIDxwYXRoIGQ9Ik0zMS44NywxMEgyNi4zMmwxLTQuODNBMSwxLDAsMCwwLDI2LjM1LDRoLTJhMSwxLDAsMCwwLTEsLjc4TDIyLjMzLDEwaC01LjRsMS00LjgzQTEsMSwwLDAsMCwxNyw0SDE1YTEsMSwwLDAsMC0xLC43OEwxMywxMEg3YTEsMSwwLDAsMC0xLC44bC0uNDEs''@;'; put 'put ''MmExLDEsMCwwLDAsMSwxLjJoNS41NUwxMC41LDIyaC02YTEsMSwwLDAsMC0xLC44bC0uNDEsMmExLDEsMCwwLDAsMSwxLjJIOS42OGwtMSw0LjgzYTEsMSwwLDAsMCwxLDEuMTdoMmExLDEsMCwwLDAsLjk1LS43OEwxMy42NywyNmg1LjRsLTEsNC44M0ExLDEsMCwwLDAsMTksMzJoMmExLDEs''@;'; put 'put ''MCwwLDAsMS0uNzhMMjMuMDUsMjZoNmExLDEsMCwwLDAsMS0uOGwuNC0yYTEsMSwwLDAsMC0xLTEuMkgyMy44N2wxLjYzLThoNmExLDEsMCwwLDAsMS0uOGwuNDEtMkExLDEsMCwwLDAsMzEuODcsMTBabS0xMiwxMmgtNS40bDEuNjQtOGg1LjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0xIi8+XG4gICcpLEwuU29jaWFsU2hhcGVzPXtjcm93bjpMLkNsclNoYXBlQ3Jvd24sc2hhcmU6TC5DbHJTaGFwZVNoYXJlLHN0YXI6TC5DbHJTaGFwZVN0YXIsImhhbGYtc3RhciI6TC5DbHJTaGFwZUhhbGZTdGFyLGJvb2ttYXJrOkwuQ2xyU2hhcGVCb29rbWFyayxlbnZl''@;'; put 'put ''bG9wZTpMLkNsclNoYXBlRW52ZWxvcGUsY2FsZW5kYXI6RWUuQ2xyU2hhcGVDYWxlbmRhcixldmVudDpFZS5DbHJTaGFwZUV2ZW50LHRhc2tzOkwuQ2xyU2hhcGVUYXNrcyxmbGFnOkwuQ2xyU2hhcGVGbGFnLGluYm94OkwuQ2xyU2hhcGVJbmJveCxoYXNodGFnOkwuQ2xyU2hhcGVIYXNodGFn''@;'; put 'put ''LGhlYXJ0OkwuQ2xyU2hhcGVIZWFydCwiaGVhcnQtYnJva2VuIjpMLkNsclNoYXBlSGVhcnRCcm9rZW4sInRhbGstYnViYmxlcyI6TC5DbHJTaGFwZVRhbGtCdWJibGVzLCJjaGF0LWJ1YmJsZSI6TC5DbHJTaGFwZUNoYXRCdWJibGUscGljdHVyZTpMLkNsclNoYXBlUGljdHVyZSwiaGFwcHkt''@;'; put 'put ''ZmFjZSI6TC5DbHJTaGFwZUhhcHB5RmFjZSwibmV1dHJhbC1mYWNlIjpMLkNsclNoYXBlTmV1dHJhbEZhY2UsInNhZC1mYWNlIjpMLkNsclNoYXBlU2FkRmFjZSwidGh1bWJzLXVwIjpMLkNsclNoYXBlVGh1bWJzVXAsInRodW1icy1kb3duIjpMLkNsclNoYXBlVGh1bWJzRG93bn0sT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KEwuU29jaWFsU2hhcGVzLCJmYXZvcml0ZSIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLlNvY2lhbFNoYXBlcy5zdGFyKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuU29jaWFsU2hhcGVzLCJlbWFpbCIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLlNvY2lhbFNo''@;'; put 'put ''YXBlcy5lbnZlbG9wZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLlNvY2lhbFNoYXBlcywiZGF0ZSIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLlNvY2lhbFNoYXBlcy5jYWxlbmRhcikpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJp''@;'; put 'put ''dHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChMLlNvY2lhbFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdGVjaG5vbG9neS1zaGFwZXMudHMiOmZ1bmN0aW9uKEplLEwsbWUpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTCwiX19lc01v''@;'; put 'put ''ZHVsZSIse3ZhbHVlOiEwfSksTC5DbHJTaGFwZVZNV0FwcD1MLkNsclNoYXBlVk09TC5DbHJTaGFwZVJvdXRlcj1MLkNsclNoYXBlTmV0d29ya1N3aXRjaD1MLkNsclNoYXBlTmV0d29ya1NldHRpbmdzPUwuQ2xyU2hhcGVOZXR3b3JrR2xvYmU9TC5DbHJTaGFwZVRhYmxldD1MLkNsclNoYXBl''@;'; put 'put ''TW9iaWxlPUwuQ2xyU2hhcGVCYXR0ZXJ5PUwuQ2xyU2hhcGVBcHBsaWNhdGlvbj1MLkNsclNoYXBlQ29kZT1MLkNsclNoYXBlVGVybWluYWw9TC5DbHJTaGFwZURpc3BsYXk9TC5DbHJTaGFwZUNvbXB1dGVyPUwuQ2xyU2hhcGVGbG9wcHk9TC5DbHJTaGFwZVBsdWdpbj1MLkNsclNoYXBlRG93''@;'; put 'put ''bmxvYWRDbG91ZD1MLkNsclNoYXBlVXBsb2FkQ2xvdWQ9TC5DbHJTaGFwZUV4cG9ydD1MLkNsclNoYXBlSW1wb3J0PUwuQ2xyU2hhcGVTaGllbGRYPUwuQ2xyU2hhcGVTaGllbGQ9TC5DbHJTaGFwZVNoaWVsZENoZWNrPUwuQ2xyU2hhcGVSZXNvdXJjZVBvb2w9TC5DbHJTaGFwZURhdGFDbHVz''@;'; put 'put ''dGVyPUwuQ2xyU2hhcGVNZW1vcnk9TC5DbHJTaGFwZUNQVT1MLkNsclNoYXBlQnVpbGRpbmc9TC5DbHJTaGFwZUFwcGxpY2F0aW9ucz1MLkNsclNoYXBlQ2x1c3Rlcj1MLkNsclNoYXBlU3RvcmFnZT1MLkNsclNoYXBlSG9zdD1MLkNsclNoYXBlRGFzaGJvYXJkPUwuQ2xyU2hhcGVNb3VzZT1M''@;'; put 'put ''LkNsclNoYXBlS2V5Ym9hcmQ9TC5DbHJTaGFwZURldmljZXM9TC5DbHJTaGFwZUJhY2t1cD1MLkNsclNoYXBlQmFja3VwUmVzdG9yZT1MLkNsclNoYXBlSGFyZERpc2s9TC5DbHJTaGFwZVJhY2tTZXJ2ZXI9TC5DbHJTaGFwZVdpZmk9TC5DbHJTaGFwZUJ1bmRsZT1MLkNsclNoYXBlQmxvY2tz''@;'; put 'put ''R3JvdXA9TC5DbHJTaGFwZUJsb2NrPUwuQ2xyU2hhcGVMYXllcnM9TC5DbHJTaGFwZVVuaW5zdGFsbD1MLkNsclNoYXBlSW5zdGFsbD1MLkNsclNoYXBlTm9XaWZpPUwuQ2xyU2hhcGVQaG9uZUhhbmRzZXQ9TC5DbHJTaGFwZVJ1bGVyUGVuY2lsPXZvaWQgMCxMLlRlY2hub2xvZ3lTaGFwZXM9''@;'; put 'put ''TC5DbHJTaGFwZUZpbGVTaGFyZTI9TC5DbHJTaGFwZUNpQ2Q9TC5DbHJTaGFwZUFuaW1hdGlvbj1MLkNsclNoYXBlVGFwZURyaXZlPUwuQ2xyU2hhcGVNZWRpYUNoYW5nZXI9TC5DbHJDb250cm9sTHVuPUwuQ2xyU2hhcGVQb2Q9TC5DbHJTaGFwZU5vZGU9TC5DbHJTaGFwZU5hbWVzcGFjZT1M''@;'; put 'put ''LkNsclNoYXBlTm9kZXM9TC5DbHJTaGFwZU5vZGVHcm91cD1MLkNsclNoYXBlU3RvcmFnZUFkYXB0ZXI9TC5DbHJTaGFwZUhvc3RHcm91cD1MLkNsclNoYXBlU3F1aWQ9TC5DbHJTaGFwZUNhcGFjaXRvcj1MLkNsclNoYXBlUmVzaXN0b3I9TC5DbHJTaGFwZUluZHVjdG9yPUwuQ2xyU2hhcGVS''@;'; put 'put ''YWRhcj1MLkNsclNoYXBlVXNiPUwuQ2xyU2hhcGVRckNvZGU9TC5DbHJTaGFwZUZpbGVTaGFyZT1MLkNsclNoYXBlQ29udGFpbmVyVm9sdW1lPUwuQ2xyU2hhcGVDb250YWluZXI9TC5DbHJTaGFwZUNkRHZkPUwuQ2xyU2hhcGVCYXJDb2RlPUwuQ2xyU2hhcGVBdG9tPUwuQ2xyU2hhcGVBc3Np''@;'; put 'put ''Z25Vc2VyPUwuQ2xyU2hhcGVQcm9jZXNzT25WTT1MLkNsclNoYXBlQmx1ZXRvb3RoT2ZmPUwuQ2xyU2hhcGVCbHVldG9vdGg9TC5DbHJTaGFwZVNTRD1MLkNsclNoYXBlTlZNZT1MLkNsclNoYXBlSGFyZERyaXZlRGlza3M9TC5DbHJTaGFwZUhhcmREcml2ZT1MLkNsclNoYXBlQWRtaW5pc3Ry''@;'; put 'put ''YXRvcj1MLkNsclNoYXBlRmxhc2s9TC5DbHJTaGFwZUhlbGl4PUwuQ2xyU2hhcGVEZXBsb3k9TC5DbHJTaGFwZUNsb3VkVHJhZmZpYz1MLkNsclNoYXBlQ2xvdWRTY2FsZT1MLkNsclNoYXBlQ2xvdWROZXR3b3JrPUwuQ2xyU2hhcGVVbmxpbms9TC5DbHJTaGFwZUxpbms9TC5DbHJTaGFwZURp''@;'; put 'put ''c2Nvbm5lY3Q9TC5DbHJTaGFwZUNvbm5lY3Q9TC5DbHJTaGFwZVVuYXJjaGl2ZT1MLkNsclNoYXBlQXJjaGl2ZT1MLkNsclNoYXBlQ2VydGlmaWNhdGU9dm9pZCAwO3ZhciBCPW1lKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyIpLEU9bWUoIi4vcHJv''@;'; put 'put ''amVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIik7TC5DbHJTaGFwZVJ1bGVyUGVuY2lsPSgwLEUuY2xySWNvblNWRykoJzxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBwb2ludHM9IjkgMTcuNDEgOSAyNyAxOC41OSAy''@;'; put 'put ''NyAxNi41OSAyNSAxMSAyNSAxMSAxOS40MSA5IDE3LjQxIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTM0Ljg3LDMyLjI5LDMyLDI5LjM4VjMySDRWMjcuODVINnYtMS42SDRWMTkuNkg2VjE4SDRWMTEuNkg2VjEw''@;'; put 'put ''SDRWNC40MUwxOS45NCwyMC4yNlYxNy40NEwzLjcxLDEuMjlBMSwxLDAsMCwwLDIsMlYzM2ExLDEsMCwwLDAsMSwxSDM0LjE2YTEsMSwwLDAsMCwuNzEtMS43MVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjQs''@;'; put 'put ''MzBoNGEyLDIsMCwwLDAsMi0yVjguN0wyNy43LDQuNDdhMiwyLDAsMCwwLTEuNzYtMWgwYTIsMiwwLDAsMC0xLjc2LDEuMDhMMjIsOC43MlYyOEEyLDIsMCwwLDAsMjQsMzBaTTI0LDkuMmwxLjk0LTMuNzdMMjgsOS4yMVYyNEgyNFptMCwxNi40M2g0djIuNDRIMjRaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzQuODcsMzIuMjEsMzAsMjcuMzdWOC43NUwyNy43LDQuNTJhMiwyLDAsMCwwLTMuNTQsMEwyMiw4Ljc2VjE5LjQxTDMuNzEsMS4yMUExLDEsMCwwLDAsMiwxLjkyVjEwSDQuMTd2MS42SDJWMThINC4x''@;'; put 'put ''N3YxLjZIMnY2LjY1SDQuMTd2MS42SDJ2NS4wN2ExLDEsMCwwLDAsMSwxSDM0LjE2YTEsMSwwLDAsMCwuNzEtMS43MVpNMTAsMjZWMTYuOTRMMTkuMDcsMjZabTE4LDIuMTFIMjRWMjUuNjhoNFptMC00SDI0VjkuMjVsMS45NC0zLjc3TDI4LDkuMjZaIi8+XG4nKSxMLkNsclNoYXBlUGhvbmVI''@;'; put 'put ''YW5kc2V0PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcuNzMsMzUuNDRhNC43Miw0LjcyLDAsMCwxLTEtLjExLDMzLjkxLDMzLjkxLDAsMCwxLTE2LjYyLTguNzUsMzIuNzEsMzIuNzEsMCwwLDEtOS0xNi4y''@;'; put 'put ''NUE0LjU4LDQuNTgsMCwwLDEsMi40Niw2LjA1bDQtMy44NUEyLDIsMCwwLDEsOCwxLjY2YTIsMiwwLDAsMSwxLjQ1Ljg3bDUsNy4zOWExLjYsMS42LDAsMCwxLS4xMSwxLjlsLTIuNTEsM2ExOC45NCwxOC45NCwwLDAsMCw0LjE3LDUuODloMGExOS4yNiwxOS4yNiwwLDAsMCw2LjA3LDQuMDls''@;'; put 'put ''My4xMS0yLjQ3YTEuNjQsMS42NCwwLDAsMSwxLjg2LS4xMmw3LjU1LDQuODhBMiwyLDAsMCwxLDM1LDMwLjJsLTMuOSwzLjg2QTQuNzQsNC43NCwwLDAsMSwyNy43MywzNS40NFpNNy44NCwzLjY0bC00LDMuODVhMi41NCwyLjU0LDAsMCwwLS43NSwyLjQsMzAuNywzMC43LDAsMCwwLDguNDEs''@;'; put 'put ''MTUuMjYsMzEuOSwzMS45LDAsMCwwLDE1LjY0LDguMjMsMi43NSwyLjc1LDAsMCwwLDIuNS0uNzRsMy45LTMuODYtNy4yOS00LjcxLTMuMzQsMi42NmExLDEsMCwwLDEtLjkyLjE3LDIwLjA2LDIwLjA2LDAsMCwxLTcuMzYtNC43NWgwYTE5LjQ5LDE5LjQ5LDAsMCwxLTQuODctNy4yQTEsMSww''@;'; put 'put ''LDAsMSwxMCwxNGwyLjctMy4yM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xNS4yMiwyMC42NGEyMC4zNywyMC4zNywwLDAsMCw3LjQsNC43OWwzLjc3LTNhLjY3LjY3LDAsMCwxLC43NiwwbDcsNC41MWEyLDIsMCww''@;'; put 'put ''LDEsLjMzLDMuMThsLTMuMjgsMy4yNGE0LDQsMCwwLDEtMy42MywxLjA3LDM1LjA5LDM1LjA5LDAsMCwxLTE3LjE1LTlBMzMuNzksMzMuNzksMCwwLDEsMS4xNSw4LjZhMy43OCwzLjc4LDAsMCwxLDEuMS0zLjU1bDMuNC0zLjI4YTIsMiwwLDAsMSwzLjEyLjMyTDEzLjQzLDlhLjYzLjYzLDAs''@;'; put 'put ''MCwxLDAsLjc1bC0zLjA3LDMuNjlBMTkuNzUsMTkuNzUsMCwwLDAsMTUuMjIsMjAuNjRaIi8+XG4nKSxMLkNsclNoYXBlTm9XaWZpPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMjQuNDJhNCw0LDAsMSww''@;'; put 'put ''LDQsNEE0LDQsMCwwLDAsMTgsMjQuNDJabTAsNmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwxOCwzMC40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjYuMjEsMjEuODVhMSwxLDAsMCwwLS4yMy0xLjQsMTMu''@;'; put 'put ''NTYsMTMuNTYsMCwwLDAtNS0yLjIzbDMuODcsMy44N0ExLDEsMCwwLDAsMjYuMjEsMjEuODVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LjA1LDEwLjcyYTIwLjg4LDIwLjg4LDAsMCwwLTQuMTYuNDNsMS43''@;'; put 'put ''NCwxLjc0YTE5LDE5LDAsMCwxLDIuNDItLjE3QTE4Ljc2LDE4Ljc2LDAsMCwxLDI4LjY0LDE2YTEsMSwwLDAsMCwxLjEyLTEuNjVBMjAuNzUsMjAuNzUsMCwwLDAsMTguMDUsMTAuNzJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNCIgZD0iTTMzLjU1LDguMkEyOC4xMSwyOC4xMSwwLDAsMCw4LjExLDUuMzZMOS42OSw2LjkzQTI2LDI2LDAsMCwxLDMyLjQ1LDkuODdhMSwxLDAsMCwwLDEuMS0xLjY3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUi''@;'; put 'put ''IGQ9Ik0xLjg0LDQuNzUsNC4yNyw3LjE4Yy0uNjIuMzQtMS4yMy43LTEuODMsMS4xQTEsMSwwLDEsMCwzLjU2LDkuOTRDNC4yNiw5LjQ3LDUsOSw1Ljc0LDguNjVsMy44NywzLjg3QTIwLjU5LDIwLjU5LDAsMCwwLDYuMjMsMTQuNCwxLDEsMCwwLDAsNy4zNiwxNmExOC44MiwxOC44MiwwLDAs''@;'; put 'put ''MSwzLjc3LTJsNC4xNiw0LjE2QTEzLjUxLDEzLjUxLDAsMCwwLDEwLDIwLjU1YTEsMSwwLDAsMCwxLjE4LDEuNjFBMTEuNTIsMTEuNTIsMCwwLDEsMTcsMjBsMTAuOCwxMC44LDEuNDEtMS40MS0yNi0yNloiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMSIgY3g9IjE4IiBjeT0iMjkuNTQiIHI9IjMiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yOS4xOCwxNy43MWwuMTEtLjE3YTEuNTEsMS41MSwwLDAsMC0uNDctMi4xQTIwLjU3LDIwLjU3LDAsMCww''@;'; put 'put ''LDE4LDEyLjM3Yy0uNTYsMC0xLjExLDAtMS42NS4wN2wzLjIxLDMuMjFhMTcuNDEsMTcuNDEsMCwwLDEsNy42LDIuNTJBMS40OSwxLjQ5LDAsMCwwLDI5LjE4LDE3LjcxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTMy''@;'; put 'put ''Ljc2LDkuMzhBMjcuOSwyNy45LDAsMCwwLDEwLjE4LDYuMjdMMTIuODEsOC45QTI0LjY4LDI0LjY4LDAsMCwxLDMxLjEsMTIuMTJhMS40OSwxLjQ5LDAsMCwwLDItLjQ2bC4xMS0uMTdBMS41MSwxLjUxLDAsMCwwLDMyLjc2LDkuMzhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiBkPSJNMyw0Ljc1bDMuMSwzLjFBMjcuMjgsMjcuMjgsMCwwLDAsMy4xOCw5LjQyYTEuNTEsMS41MSwwLDAsMC0uNDgsMi4xMWwuMTEuMTdhMS40OSwxLjQ5LDAsMCwwLDIsLjQ2LDI0LjY5LDI0LjY5LDAsMCwxLDMuNjctMS45bDMuMTQsMy4x''@;'; put 'put ''NGEyMC42MywyMC42MywwLDAsMC00LjUzLDIuMDksMS41MSwxLjUxLDAsMCwwLS40NiwyLjFsLjExLjE3YTEuNDksMS40OSwwLDAsMCwyLC40NkExNy40NiwxNy40NiwwLDAsMSwxNC4yNSwxNmwzLjYsMy42YTEzLjM5LDEzLjM5LDAsMCwwLTYuNzksMS45MywxLjUsMS41LDAsMCwwLS40Niwy''@;'; put 'put ''LjA5bC4xLjE2YTEuNTIsMS41MiwwLDAsMCwyLjA2LjQ0LDEwLjIsMTAuMiwwLDAsMSw5LS43TDI5LDMwLjc1bDEuNDEtMS40MS0yNi0yNloiLz5cbicpLEwuQ2xyU2hhcGVJbnN0YWxsPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xIiBkPSJNMzAuOTIsOEgyNi41NWExLDEsMCwwLDAsMCwySDMxVjMwSDVWMTBIOS4zOGExLDEsMCwwLDAsMC0ySDUuMDhBMiwyLDAsMCwwLDMsMTBWMzBhMiwyLDAsMCwwLDIuMDgsMkgzMC45MkEyLDIsMCwwLDAsMzMsMzBWMTBBMiwyLDAsMCwwLDMwLjkyLDhaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTEwLjMsMTguODdsNyw2Ljg5YTEsMSwwLDAsMCwxLjQsMGw3LTYuODlhMSwxLDAsMCwwLTEuNC0xLjQzTDE5LDIyLjY1VjRhMSwxLDAsMCwwLTIsMFYyMi42NWwtNS4zLTUuMjFhMSwxLDAs''@;'; put 'put ''MCwwLTEuNCwxLjQzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTAuMywxOC44N2w3LDYuODlhMSwxLDAsMCwwLDEuNCwwbDctNi44OWExLDEsMCwwLDAtMS40LTEuNDNMMTksMjIu''@;'; put 'put ''NjVWNGExLDEsMCwwLDAtMiwwVjIyLjY1bC01LjMtNS4yMWExLDEsMCwwLDAtMS40LDEuNDNaIi8+PHBhdGggZD0iTTMxLDEzLjQzVjMwSDVWMTBIOS4zOGExLDEsMCwwLDAsMC0ySDUuMDhBMiwyLDAsMCwwLDMsMTBWMzBhMiwyLDAsMCwwLDIuMDgsMkgzMC45MkEyLDIsMCwwLDAsMzMsMzBW''@;'; put 'put ''MTIuODdBNy40NSw3LjQ1LDAsMCwxLDMxLDEzLjQzWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTAuMywxOC44N2w3LDYuODlhMSwxLDAsMCwwLDEuNCwwbDctNi44OWExLDEsMCwwLDAtMS40LTEuNDNMMTksMjIuNjVWNGExLDEsMCwwLDAtMiwwVjIyLjY1bC01LjMt''@;'; put 'put ''NS4yMWExLDEsMCwwLDAtMS40LDEuNDNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTMxLDE1LjRWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywx''@;'; put 'put ''MFYzMGEyLDIsMCwwLDAsMi4wOCwySDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxNS40WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEz''@;'; put 'put ''LDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbicpLEwuQ2xyU2hhcGVVbmluc3RhbGw9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xMS4yOSwyNi43MmExLDEsMCwwLDAsMS40MSwwTDE4LDIxLjQ5bDUuMyw1LjIzQTEsMSwwLDAsMCwyNC43LDI1LjNsLTUuMjgtNS4yMSw1LjI4LTUuMjFhMSwxLDAsMCwwLTEuNDEtMS40MkwxOCwxOC42OGwtNS4zLTUuMjNhMSwxLDAs''@;'; put 'put ''MCwwLTEuNDEsMS40Mmw1LjI4LDUuMjFMMTEuMywyNS4zQTEsMSwwLDAsMCwxMS4yOSwyNi43MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzAuOTIsOEgyNi41NWExLDEsMCwwLDAsMCwySDMxVjMwSDVWMTBI''@;'; put 'put ''OS4zOGExLDEsMCwwLDAsMC0ySDUuMDhBMiwyLDAsMCwwLDMsMTBWMzBhMiwyLDAsMCwwLDIuMDgsMkgzMC45MkEyLDIsMCwwLDAsMzMsMzBWMTBBMiwyLDAsMCwwLDMwLjkyLDhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMS4yOSwyNi43MmExLDEsMCwwLDAsMS40MSwwTDE4LDIxLjQ5bDUuMyw1LjIzQTEsMSwwLDAsMCwyNC43LDI1LjNsLTUuMjgtNS4yMSw1LjI4LTUuMjFhMSwxLDAsMCwwLTEuNDEtMS40MkwxOCwxOC42OGwtNS4zLTUuMjNhMSwxLDAsMCwwLTEuNDEs''@;'; put 'put ''MS40Mmw1LjI4LDUuMjFMMTEuMywyNS4zQTEsMSwwLDAsMCwxMS4yOSwyNi43MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMxLDEzLjQzVjMwSDVWMTBIOS4zOGExLDEsMCwwLDAs''@;'; put 'put ''MC0ySDUuMDhBMiwyLDAsMCwwLDMsMTBWMzBhMiwyLDAsMCwwLDIuMDgsMkgzMC45MkEyLDIsMCwwLDAsMzMsMzBWMTIuODdBNy40NSw3LjQ1LDAsMCwxLDMxLDEzLjQzWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTEuMjksMjYuNzJhMSwxLDAsMCwwLDEuNDEsMEwx''@;'; put 'put ''OCwyMS40OWw1LjMsNS4yM0ExLDEsMCwwLDAsMjQuNywyNS4zbC01LjI4LTUuMjEsNC43NS00LjY5SDIyLjIzYTMuNjUsMy42NSwwLDAsMS0uODEtLjFMMTgsMTguNjhsLTUuMy01LjIzYTEsMSwwLDAsMC0xLjQxLDEuNDJsNS4yOCw1LjIxTDExLjMsMjUuM0ExLDEsMCwwLDAsMTEuMjksMjYu''@;'; put 'put ''NzJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTMxLDE1LjRWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywxMFYzMGEyLDIsMCwwLDAsMi4wOCwy''@;'; put 'put ''SDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxNS40WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwy''@;'; put 'put ''Mi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbicpLEwuQ2xyU2hhcGVMYXllcnM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEiIGQ9Ik0xOCwyMC4yNWExLDEsMCwwLDEtLjQzLS4xbC0xNS03LjA5YTEsMSwwLDAsMSwwLTEuODFsMTUtNy4wOWExLDEsMCwwLDEsLjg1LDBsMTUsNy4wOWExLDEsMCwwLDEsMCwxLjgxbC0xNSw3LjA5QTEsMSwwLDAsMSwxOCwyMC4yNVpNNS4zNCwxMi4xNmwxMi42Niw2LDEyLjY2LTZM''@;'; put 'put ''MTgsNi4xOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjYuMTZhMSwxLDAsMCwxLS40My0uMUwyLjU3LDE5YTEsMSwwLDEsMSwuODUtMS44MUwxOCwyNC4wNmwxNC41Ny02Ljg5QTEsMSwwLDEsMSwzMy40''@;'; put 'put ''MywxOWwtMTUsNy4wOUExLDEsMCwwLDEsMTgsMjYuMTZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LDMyLjA3YTEsMSwwLDAsMS0uNDMtLjFsLTE1LTcuMDlhMSwxLDAsMCwxLC44NS0xLjgxTDE4LDMwbDE0''@;'; put 'put ''LjU3LTYuODlhMSwxLDAsMSwxLC44NSwxLjgxTDE4LjQzLDMyQTEsMSwwLDAsMSwxOCwzMi4wN1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyMC4yNWExLDEsMCwwLDEtLjQzLS4xbC0xNS03LjA5YTEsMSwwLDAs''@;'; put 'put ''MSwwLTEuODFsMTUtNy4wOWExLDEsMCwwLDEsLjg1LDBsMTUsNy4wOWExLDEsMCwwLDEsMCwxLjgxbC0xNSw3LjA5QTEsMSwwLDAsMSwxOCwyMC4yNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xOCwyNi4xNmExLDEs''@;'; put 'put ''MCwwLDEtLjQzLS4xTDIuNTcsMTlhMSwxLDAsMSwxLC44NS0xLjgxTDE4LDI0LjA2bDE0LjU3LTYuODlBMSwxLDAsMSwxLDMzLjQzLDE5bC0xNSw3LjA5QTEsMSwwLDAsMSwxOCwyNi4xNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTMiIGQ9Ik0xOCwzMi4wN2ExLDEsMCwwLDEtLjQzLS4xbC0xNS03LjA5YTEsMSwwLDAsMSwuODUtMS44MUwxOCwzMGwxNC41Ny02Ljg5YTEsMSwwLDEsMSwuODUsMS44MUwxOC40MywzMkExLDEsMCwwLDEsMTgsMzIuMDdaIi8+XG4nKSxMLkNsclNoYXBlQmxvY2s9KDAsRS5jbHJJY29uU1ZH''@;'; put 'put ''KSgnPHBhdGggZD0iTTMxLjQyLDkuMDlsLTEzLTZhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmExLDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTBBMSwxLDAsMCwwLDMxLjQyLDkuMDlaTTE4LDUuMSwyOC42''@;'; put 'put ''MSwxMCwxOCwxNC45LDcuMzksMTBaTTYsMTEuNTZsMTEsNS4wOHYxNC44TDYsMjYuMzZaTTE5LDMxLjQ0VjE2LjY0bDExLTUuMDh2MTQuOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDE1LjUzVjI2LjM2''@;'; put 'put ''TDE5LDMxLjQ0VjE2LjY0bDIuNTctMS4xOWEzLjY3LDMuNjcsMCwwLDEtMi4xMS0xLjIyTDE4LDE0LjksNy4zOSwxMCwxOCw1LjFsMy4wOCwxLjQyLDEtMS43NEwxOC40MiwzLjA5YTEsMSwwLDAsMC0uODQsMGwtMTMsNkExLDEsMCwwLDAsNCwxMFYyN2ExLDEsMCwwLDAsLjU4LjkxbDEzLDZh''@;'; put 'put ''MSwxLDAsMCwwLC44NCwwbDEzLTZBMSwxLDAsMCwwLDMyLDI3VjE1LjUzWk0xNywzMS40NCw2LDI2LjM2VjExLjU2bDExLDUuMDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0y''@;'; put 'put ''Ni44NywxLjI2bC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkySDMzLjdhMS4yOCwxLjI4LDAsMCwwLDEuMS0xLjkyTDI5LjA4LDEuMjZBMS4yOCwxLjI4LDAsMCwwLDI2Ljg3LDEuMjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''Mi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41VjI2LjM2TDE5LDMxLjQ0VjE2LjY0bDguMDgtMy43M2E3LjU3LDcuNTcsMCwwLDEtMi0xLjI3TDE4LDE0LjksNy4zOSwxMCwxOCw1LjFsNC42MSwyLjEzQTcuMTIsNy4xMiwwLDAsMSwyMi41''@;'; put 'put ''LDZhOCw4LDAsMCwxLC4wNy0xTDE4LjQyLDMuMDlhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmExLDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTMuMjJBNy4zNyw3LjM3LDAsMCwxLDMwLDEzLjVaTTE3LDMx''@;'; put 'put ''LjQ0LDYsMjYuMzZWMTEuNTZsMTEsNS4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNDIsOS4wOWwtMTMtNmExLDEsMCwwLDAtLjg0LDBsLTEzLDZBMSwxLDAsMCwwLDQsMTBWMjdhMSwxLDAsMCwwLC41OC45MWwxMyw2YTEsMSwwLDAs''@;'; put 'put ''MCwuODQsMGwxMy02QTEsMSwwLDAsMCwzMiwyN1YxMEExLDEsMCwwLDAsMzEuNDIsOS4wOVpNMTgsMTQuOSw3LjM5LDEwLDE4LDUuMSwyOC42MSwxMFpNMzAsMjYuMzYsMTksMzEuNDRWMTYuNjRsMTEtNS4wOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTUuMzh2MTFMMTksMzEuNDRWMTYuNjRsMi43OS0xLjI5YTMuNjgsMy42OCwwLDAsMS0yLjI1LTEuMTZMMTgsMTQuOSw3LjM5LDEwLDE4LDUuMWwzLDEuMzksMS0xLjc1TDE4LjQyLDMuMDlhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0''@;'; put 'put ''LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmExLDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTUuMzhaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEu''@;'; put 'put ''MTIsMjEuMTMsMTFhMS4yNywxLjI3LDAsMCwwLDEuMSwxLjkxSDMzLjY4QTEuMjcsMS4yNywwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjEyQTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjEyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41VjI2LjM2TDE5LDMxLjQ0VjE2LjY0bDguMDgtMy43M2E3LjU3LDcuNTcsMCwwLDEtMi0xLjI3TDE4LDE0LjksNy4zOSwxMCwxOCw1LjFsNC42MSwyLjEzQTcuMTIsNy4xMiwwLDAsMSwyMi41LDZhOCw4LDAsMCwx''@;'; put 'put ''LC4wNy0xTDE4LjQyLDMuMDlhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmExLDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTMuMjJBNy4zNyw3LjM3LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksTC5DbHJTaGFw''@;'; put 'put ''ZUJsb2Nrc0dyb3VwPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy41MywxOC43NiwyNi42LDE1LjU3VjYuNDNBMSwxLDAsMCwwLDI2LDUuNTNsLTcuNS0zLjQ1YTEsMSwwLDAsMC0uODQsMGwtNy41LDMuNDVhMSwxLDAsMCwwLS41OC45MXY5LjE0TDIuNjgsMTguNzZhMSwxLDAsMCww''@;'; put 'put ''LS41OC45MXY5Ljc4aDBhMSwxLDAsMCwwLC41OC45MWw3LjUsMy40NWExLDEsMCwwLDAsLjg0LDBsNy4wOC0zLjI2LDcuMDgsMy4yNmExLDEsMCwwLDAsLjg0LDBsNy41LTMuNDVhMSwxLDAsMCwwLC41OC0uOTFoMFYxOS42N0ExLDEsMCwwLDAsMzMuNTMsMTguNzZabS0yLjgxLjkxTDI1LjYx''@;'; put 'put ''LDIyLDIwLjUsMTkuNjdsNS4xMS0yLjM1Wk0xOC4xLDQuMDhsNS4xMSwyLjM1TDE4LjEsOC43OCwxMyw2LjQzWk0xMC42LDE3LjMxbDUuMTEsMi4zNUwxMC42LDIyLDUuNDksMTkuNjdabTYuNSwxMS40OS02LjUsMy02LjUtM1YyMS4yM0wxMC4xOCwyNEExLDEsMCwwLDAsMTEsMjRsNi4wOC0y''@;'; put 'put ''LjhaTTExLjYsMTUuNTdoMFY4bDYuMDgsMi44YTEsMSwwLDAsMCwuODQsMEwyNC42LDh2Ny41OGgwbC02LjUsM1pNMzIuMTEsMjguODFsLTYuNSwzLTYuNTEtM1YyMS4yMkwyNS4xOSwyNEExLDEsMCwwLDAsMjYsMjRsNi4wOC0yLjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0zMy41MywxOC43NiwyNi42LDE1LjU3aC0ydjBsLTYuNSwzLTYuNS0zVjhsNi4wOCwyLjhhMSwxLDAsMCwwLC44NCwwbC4yNC0uMTFhNC4xNyw0LjE3LDAsMCwxLC4yOS0uNjVsMS4zMy0yLjMxLTIuMjgsMUwxMyw2LjQzbDUuMS0yLjM1LDMuNDcs''@;'; put 'put ''MS42LDEtMS43M0wxOC41LDIuMDhhMSwxLDAsMCwwLS44NCwwbC03LjUsMy40NWExLDEsMCwwLDAtLjU4LjkxdjkuMTRsLTYuOSwzLjE4YTEsMSwwLDAsMC0uNTguOTF2OS43OGExLDEsMCwwLDAsLjU4LjkxbDcuNSwzLjQ1YTEsMSwwLDAsMCwuODQsMGw3LjA4LTMuMjYsNy4wOCwzLjI2YTEs''@;'; put 'put ''MSwwLDAsMCwuODQsMGw3LjUtMy40NWExLDEsMCwwLDAsLjU4LS45MVYxOS42N0ExLDEsMCwwLDAsMzMuNTMsMTguNzZaTTEwLjYsMTcuMzFsNS4xMSwyLjM1TDEwLjYsMjIsNS40OSwxOS42N1ptMCwxNC40OS02LjUtM1YyMS4yM0wxMC4xOCwyNEExLDEsMCwwLDAsMTEsMjRsNi4wOC0yLjgs''@;'; put 'put ''MCw3LjZabTE1LTE0LjQ4LDUuMTEsMi4zNUwyNS42MSwyMiwyMC41LDE5LjY3Wm0wLDE0LjQ5LTYuNTEtM1YyMS4yMkwyNS4xOSwyNEExLDEsMCwwLDAsMjYsMjRsNi4wOC0yLjgsMCw3LjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFs''@;'; put 'put ''ZXJ0ZWQiIC8+XG48cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywxM0gzMy42OGExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuPHBhdGggZD0iTTMzLjUzLDE4Ljc2LDI2LjYsMTUuNTdWMTIuN2E3LjU4LDcuNTgsMCwwLDEtMi0xLjUxdjQuMzlsLTYuNSwzLTYuNS0zVjhsNi4wOCwyLjhhMSwxLDAsMCwwLC44NCwwTDIzLDguNzJh''@;'; put 'put ''Ny4wNSw3LjA1LDAsMCwxLS40Ny0ybC00LjQ3LDJMMTMsNi40M2w1LjEtMi4zNSw0LjQ0LDJzMC0uMDYsMC0uMDlhNy41NSw3LjU1LDAsMCwxLC4yNy0ybC00LjMtMmExLDEsMCwwLDAtLjg0LDBsLTcuNSwzLjQ1YTEsMSwwLDAsMC0uNTguOTF2OS4xNGwtNi45LDMuMThhMSwxLDAsMCwwLS41''@;'; put 'put ''OC45MXY5Ljc4YTEsMSwwLDAsMCwuNTguOTFsNy41LDMuNDVhMSwxLDAsMCwwLC44NCwwbDcuMDgtMy4yNiw3LjA4LDMuMjZhMSwxLDAsMCwwLC44NCwwbDcuNS0zLjQ1YTEsMSwwLDAsMCwuNTgtLjkxVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlpNMTAuNiwxNy4zMWw1LjExLDIuMzVM''@;'; put 'put ''MTAuNiwyMiw1LjQ5LDE5LjY3Wm0wLDE0LjQ5LTYuNS0zVjIxLjIzTDEwLjE4LDI0QTEsMSwwLDAsMCwxMSwyNGw2LjA4LTIuOCwwLDcuNlptMTUtMTQuNDgsNS4xMSwyLjM1TDI1LjYxLDIyLDIwLjUsMTkuNjdabTAsMTQuNDktNi41MS0zVjIxLjIyTDI1LjE5LDI0QTEsMSwwLDAsMCwyNiwy''@;'; put 'put ''NGw2LjA4LTIuOCwwLDcuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG48Y2lyY2xlIGN4PSIzMC4wMyIgY3k9IjYuMDMiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbjxwYXRoIGQ9Ik0zMy41MywxOC43NiwyNi42LDE1LjU3VjYuNDNBMSwxLDAsMCwwLDI2LDUuNTNsLTcuNS0zLjQ1YTEsMSwwLDAsMC0uODQsMGwtNy41LDMuNDVhMSwxLDAsMCwwLS41OC45MXY5LjE0TDIuNjgsMTguNzZhMSwxLDAsMCwwLS41''@;'; put 'put ''OC45MXY5Ljc4aDBhMSwxLDAsMCwwLC41OC45MWw3LjUsMy40NWExLDEsMCwwLDAsLjg0LDBsNy4wOC0zLjI2LDcuMDgsMy4yNmExLDEsMCwwLDAsLjg0LDBsNy41LTMuNDVhMSwxLDAsMCwwLC41OC0uOTFoMFYxOS42N0ExLDEsMCwwLDAsMzMuNTMsMTguNzZaTTI1LjYxLDIyLDIwLjUsMTku''@;'; put 'put ''NjdsNS4xMS0yLjM1LDUuMTEsMi4zNVptLTEtNi40NC02LjQ0LDNWMTAuODdhMSwxLDAsMCwwLC4zNS0uMDhMMjQuNiw4djcuNThaTTE4LjEsNC4wOGw1LjExLDIuMzVMMTguMSw4Ljc4LDEzLDYuNDNaTTEwLjYsMTcuMzFsNS4xMSwyLjM1TDEwLjYsMjIsNS40OSwxOS42N1ptNi41LDExLjQ5''@;'; put 'put ''LTYuNSwzaDBWMjQuMTFoMEExLDEsMCwwLDAsMTEsMjRsNi4wOC0yLjhabTE1LDAtNi40NiwzVjI0LjExQTEsMSwwLDAsMCwyNiwyNGw2LjA4LTIuOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG48cGF0aCBkPSJNMzMuNTMsMTguNzYsMjYuNiwxNS41N3Yw''@;'; put 'put ''aC0ydjBsLTYuNDMsM1YxMC44N2ExLjA1LDEuMDUsMCwwLDAsLjM1LS4wOGwuMTQtLjA2QTMuMjMsMy4yMywwLDAsMSwxOSwxMGwxLjI4LTIuMjItMi4xNCwxTDEzLDYuNDNsNS4xLTIuMzUsMy4zOSwxLjU2LDEtMS43My00LTEuODNhMSwxLDAsMCwwLS44NCwwbC03LjUsMy40NWExLDEsMCww''@;'; put 'put ''LDAtLjU4LjkxdjkuMTRsLTYuOSwzLjE4YTEsMSwwLDAsMC0uNTguOTF2OS43OGExLDEsMCwwLDAsLjU4LjkxbDcuNSwzLjQ1YTEsMSwwLDAsMCwuODQsMGw3LjA4LTMuMjYsNy4wOCwzLjI2YTEsMSwwLDAsMCwuODQsMGw3LjUtMy40NWExLDEsMCwwLDAsLjU4LS45MVYxOS42N0ExLDEsMCww''@;'; put 'put ''LDAsMzMuNTMsMTguNzZabS0yOCwuOTEsNS4xMS0yLjM2LDUuMTEsMi4zNUwxMC42LDIyWk0xMC42LDMxLjhWMjQuMTFBMS4wOCwxLjA4LDAsMCwwLDExLDI0bDYuMDgtMi44LDAsNy42Wm05LjktMTIuMTMsNS4xMS0yLjM1LDUuMTEsMi4zNUwyNS42MSwyMlpNMjUuNjQsMzEuOFYyNC4xMUEu''@;'; put 'put ''ODkuODksMCwwLDAsMjYsMjRsNi4wOC0yLjgsMCw3LjZaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuPHBhdGggZD0iTTI2Ljg5LDEuMTRsLTUuNzIsOS45MUExLjI3LDEuMjcsMCwwLDAsMjIuMjcsMTNIMzMuNzJhMS4yNywx''@;'; put 'put ''LjI3LDAsMCwwLDEuMS0xLjkxTDI5LjEsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODksMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG48cGF0aCBkPSJNMzMuNTMsMTguNzYsMjYuNiwxNS41N1Yx''@;'; put 'put ''Mi42OWE3LjY2LDcuNjYsMCwwLDEtMi0xLjQ3djQuMzRsLTYuNDMsM1YxMC44N2ExLjA1LDEuMDUsMCwwLDAsLjM1LS4wOEwyMyw4LjczYTcuNjUsNy42NSwwLDAsMS0uNDgtMmwtNC40MiwyTDEzLDYuNDNsNS4xLTIuMzUsNC4zOCwyVjZhNy41NSw3LjU1LDAsMCwxLC4yNy0yTDE4LjUsMi4w''@;'; put 'put ''OGExLDEsMCwwLDAtLjg0LDBsLTcuNSwzLjQ1YTEsMSwwLDAsMC0uNTguOTF2OS4xNGwtNi45LDMuMThhMSwxLDAsMCwwLS41OC45MXY5Ljc4YTEsMSwwLDAsMCwuNTguOTFsNy41LDMuNDVhMSwxLDAsMCwwLC44NCwwbDcuMDgtMy4yNiw3LjA4LDMuMjZhMSwxLDAsMCwwLC44NCwwbDcuNS0z''@;'; put 'put ''LjQ1YTEsMSwwLDAsMCwuNTgtLjkxVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlptLTI4LC45MSw1LjExLTIuMzYsNS4xMSwyLjM1TDEwLjYsMjJaTTEwLjYsMzEuOFYyNC4xMUExLjA4LDEuMDgsMCwwLDAsMTEsMjRsNi4wOC0yLjgsMCw3LjZabTkuOS0xMi4xMyw1LjExLTIuMzUsNS4x''@;'; put 'put ''MSwyLjM1TDI1LjYxLDIyWk0yNS42NCwzMS44VjI0LjExQS44OS44OSwwLDAsMCwyNiwyNGw2LjA4LTIuOCwwLDcuNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuPGNpcmNsZSBjeD0iMjkuOTgiIGN5PSI2IiByPSI1IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxMLkNsclNoYXBlQnVuZGxlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIuNDMsOC4z''@;'; put 'put ''NWwtMTMtNi4yMWExLDEsMCwwLDAtLjg3LDBsLTE1LDcuMjRhMSwxLDAsMCwwLS41Ny45VjI2LjgzYTEsMSwwLDAsMCwuNi45MmwxMyw2LjE5YTEsMSwwLDAsMCwuODcsMGwxNS03LjI0YTEsMSwwLDAsMCwuNTctLjlWOS4yNUExLDEsMCwwLDAsMzIuNDMsOC4zNVpNMTksNC4xNSwyOS45Myw5''@;'; put 'put ''LjM3bC01LjA1LDIuNDRMMTQuMjEsNi40NlpNMTcsMTUuNjQsNiwxMC40MWw1LjktMi44NUwyMi42LDEyLjkxWk01LDEyLjEzLDE2LDE3LjRWMzEuNDZMNSwyNi4yWk0xOCwzMS40NVYxNy4zNmwxMy02LjI5djE0LjFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuNDMsOC4zNWwtMTMtNi4yMWExLDEsMCwwLDAtLjg3LDBsLTE1LDcuMjRhMSwxLDAsMCwwLS41Ny45VjI2LjgzYTEsMSwwLDAsMCwuNi45MmwxMyw2LjE5YTEsMSwwLDAsMCwuODcsMGwxNS03LjI0YTEsMSwwLDAsMCwuNTctLjlWOS4yNUExLDEs''@;'; put 'put ''MCwwLDAsMzIuNDMsOC4zNVpNMTksNC4xNSwyOS45Myw5LjM3bC01LjA1LDIuNDRMMTQuMjEsNi40NlpNMTcsMTUuNjQsNiwxMC40MWw1LjktMi44NUwyMi42LDEyLjkxWm0xLDE1LjhWMTcuMzZsMTMtNi4yOXYxNC4xWiIvPlxuJyksTC5DbHJTaGFwZVdpZmk9KDAsRS5jbHJJY29uU1ZHKSgn''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMy41NSw4LjJhMjguMSwyOC4xLDAsMCwwLTMxLjExLjA4QTEsMSwwLDEsMCwzLjU2LDkuOTRhMjYuMTEsMjYuMTEsMCwwLDEsMjguODktLjA3LDEsMSwwLDAsMCwxLjEtMS42N1oiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTguMDUsMTAuNzJBMjAuNzQsMjAuNzQsMCwwLDAsNi4yMywxNC40LDEsMSwwLDAsMCw3LjM2LDE2LDE4Ljg1LDE4Ljg1LDAsMCwxLDI4LjY0LDE2YTEsMSwwLDAsMCwxLjEyLTEuNjVB''@;'; put 'put ''MjAuNzUsMjAuNzUsMCwwLDAsMTguMDUsMTAuNzJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LjA1LDE3LjlhMTMuNTEsMTMuNTEsMCwwLDAtOCwyLjY0LDEsMSwwLDAsMCwxLjE4LDEuNjEsMTEuNTYsMTEu''@;'; put 'put ''NTYsMCwwLDEsMTMuNjItLjA4QTEsMSwwLDEsMCwyNiwyMC40NiwxMy41MiwxMy41MiwwLDAsMCwxOC4wNSwxNy45WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0xOCwyNC40MmE0LDQsMCwxLDAsNCw0QTQsNCww''@;'; put 'put ''LDAsMCwxOCwyNC40MlptMCw2YTIsMiwwLDEsMSwyLTJBMiwyLDAsMCwxLDE4LDMwLjQyWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBjeD0iMTgiIGN5PSIyOS41NCIgcj0iMyIvPlxuICAgICAgICAgICAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMyLjc2LDkuMzhhMjcuODcsMjcuODcsMCwwLDAtMjkuNTcsMCwxLjUxLDEuNTEsMCwwLDAtLjQ4LDIuMTFsLjExLjE3YTEuNDksMS40OSwwLDAsMCwyLC40NiwyNC42OCwyNC42OCwwLDAsMSwyNi4yNiwwLDEuNDksMS40''@;'; put 'put ''OSwwLDAsMCwyLS40NmwuMTEtLjE3QTEuNTEsMS41MSwwLDAsMCwzMi43Niw5LjM4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTI4LjgyLDE1LjQ0YTIwLjU5LDIwLjU5LDAsMCwwLTIxLjcsMCwxLjUxLDEuNTEsMCww''@;'; put 'put ''LDAtLjQ2LDIuMWwuMTEuMTdhMS40OSwxLjQ5LDAsMCwwLDIsLjQ2LDE3LjQsMTcuNCwwLDAsMSwxOC4zNiwwLDEuNDksMS40OSwwLDAsMCwyLS40NmwuMTEtLjE3QTEuNTEsMS41MSwwLDAsMCwyOC44MiwxNS40NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTQiIGQ9Ik0yNC44OCwyMS40OWExMy40MSwxMy40MSwwLDAsMC0xMy44MiwwLDEuNSwxLjUsMCwwLDAtLjQ2LDIuMDlsLjEuMTZhMS41MiwxLjUyLDAsMCwwLDIuMDYuNDQsMTAuMjcsMTAuMjcsMCwwLDEsMTAuNDIsMCwxLjUyLDEuNTIsMCwwLDAsMi4wNi0uNDVs''@;'; put 'put ''LjEtLjE2QTEuNDksMS40OSwwLDAsMCwyNC44OCwyMS40OVoiLz5cbicpLEwuQ2xyU2hhcGVSYWNrU2VydmVyPSgwLEUuY2xySWNvblNWRykoJzxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiB4PSIxMCIgeT0iMTciIHdp''@;'; put 'put ''ZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgeD0iNiIgeT0iMjUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiB4PSIxMCIgeT0iMjUiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxl''@;'; put 'put ''cnRlZCIgZD0iTTE4LjY0LDExQTMuNjUsMy42NSwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTB2MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgzMlYyMUg0VjE1''@;'; put 'put ''SDIwLjU4QTMuNjcsMy42NywwLDAsMSwxOSwxMy41NmEzLjYzLDMuNjMsMCwwLDEtLjI2LS41Nkg0VjdIMjAuNzFsMS4xNS0ySDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMzhaTTQsMjlWMjNIMzJ2NloiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRB''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIHg9IjYiIHk9IjkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgeD0iNiIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJh''@;'; put 'put ''ZGdlZCIgeD0iMTAiIHk9IjE3IiB3aWR0aD0iMTQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiB4PSI2IiB5PSIyNSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiB4PSIxMCIgeT0iMjUiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC02LS1iYWRnZWQiIGQ9Ik0xMCwxMUgyNHYtLjUxQTcuNDgsNy40OCwwLDAsMSwyMy4xMyw5SDEwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIiBkPSJNMzAsMTMuNWE3LjQ3''@;'; put 'put ''LDcuNDcsMCwwLDEtMi42OC0uNUg0VjdIMjIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNTIsNy41MiwwLDAsMSwuMDctMUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDYsNy40NiwwLDAsMSwzMCwxMy41Wk00LDE1SDMydjZI''@;'; put 'put ''NFpNNCwyOVYyM0gzMnY2WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSI2IiB5PSI5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgeD0iMTAiIHk9IjkiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iNiIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIx''@;'; put 'put ''MCIgeT0iMTciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgZD0iTTMyLDVINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY3QTIsMiwwLDAs''@;'; put 'put ''MCwzMiw1Wk00LDdIMzJ2Nkg0Wm0wLDhIMzJ2Nkg0Wk00LDI5VjIzSDMydjZaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgeD0iNiIgeT0iMjUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiB4PSIxMCIgeT0iMjUiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMiwz''@;'; put 'put ''MGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRIMlptOC0zSDI0djJIMTBaTTYsMjdIOHYySDZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJNMTksOS44OSwxOS41Niw5SDEw''@;'; put 'put ''VjdIMjAuNzFsMS43My0zSDRBMiwyLDAsMCwwLDIsNnY2SDE4LjU3QTMuNjcsMy42NywwLDAsMSwxOSw5Ljg5Wk04LDlINlY3SDhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiBkPSJNMzMuNjgs''@;'; put 'put ''MTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTkuMzUsMTRIMnY4SDM0VjE1LjM4Wk04LDE5SDZWMTdIOFptMTYsMEgxMFYxN0gyNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxl''@;'; put 'put ''cnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMiwxNHY4SDM0VjE0Wm02LDVINlYxN0g4Wm0xNiwwSDEwVjE3SDI0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0yLDMw''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNEgyWm04LTNIMjR2MkgxMFpNNiwyN0g4djJINloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMjMuMTMsOUgxMFY3SDIyLjU3YTcu''@;'; put 'put ''NTIsNy41MiwwLDAsMS0uMDctMSw3LjQ5LDcuNDksMCwwLDEsLjI4LTJINEEyLDIsMCwwLDAsMiw2djZIMjUuNTFBNy41Miw3LjUyLDAsMCwxLDIzLjEzLDlaTTgsOUg2VjdIOFoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yLDIySDM0VjE0SDJabTgtNUgyNHYySDEwWk02LDE3SDh2Mkg2WiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2djZIMzRWNkEyLDIsMCwwLDAsMzIsNFpNOCw5SDZWN0g4Wk0yNCw5SDEwVjdIMjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0zIiBkPSJNMiwzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRIMlptOC0zSDI0djJIMTBaTTYsMjdIOHYySDZaIi8+XG4nKSxMLkNsclNoYXBlSGFyZERpc2s9KDAsRS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIHg9IjYiIHk9IjIwIiB3aWR0aD0iMjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9IjI2IiB5PSIyNCIg''@;'; put 'put ''d2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0zNCwyMS4wOGwtMS40LTUuNjhIMzAuNTFsMS40OSw2VjI5SDRWMjEuNDRMNy4wNiw5aDEyLjVsMS4x''@;'; put 'put ''NS0ySDcuMDZBMiwyLDAsMCwwLDUuMTMsOC40N0wyLDIxLjA4YTEsMSwwLDAsMCwwLC4yNFYyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjEuMzFBMSwxLDAsMCwwLDM0LDIxLjA4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgeD0iNiIgeT0iMjAiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzQsMjEuMDgsMzIsMTMuMjFh''@;'; put 'put ''Ny40OSw3LjQ5LDAsMCwxLTIsLjI5bDIsNy45NFYyOUg0VjIxLjQ0TDcuMDYsOUgyMy4xM2E3LjQ1LDcuNDUsMCwwLDEtLjU1LTJINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIsMjEuMDhhMSwxLDAsMCwwLDAsLjI0VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMS4zMUEx''@;'; put 'put ''LDEsMCwwLDAsMzQsMjEuMDhaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNCwyMS4wOCwzMC44Niw4LjQzQTIsMiwwLDAsMCwyOC45NCw3SDcuMDZBMiwyLDAsMCwwLDUuMTMsOC40N0wyLDIxLjA4YTEsMSwwLDAsMCwwLC4yNFYyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjEuMzFB''@;'; put 'put ''MSwxLDAsMCwwLDM0LDIxLjA4Wk00LDI5VjIxLjQ0TDcuMDYsOUgyOC45M0wzMiwyMS40NFYyOVoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSI2IiB5PSIyMCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIyNiIgeT0iMjQiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0''@;'; put 'put ''ZWQiIGQ9Ik0yLDIydjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyWm0yOCw1SDI2VjI1aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJNMzIuNTgsMTUuNEgyMi4yM0Ez''@;'; put 'put ''LjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMC43MSw3SDcuMDZBMiwyLDAsMCwwLDUuMTMsOC40N0wyLjI5LDIwSDMzLjcxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0i''@;'; put 'put ''TTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yLDIydjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyWm0yOCw1SDI2VjI1aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIg''@;'; put 'put ''ZD0iTTMyLDEzLjIxQTcuNDcsNy40NywwLDAsMSwyMi41Nyw3SDcuMDZBMiwyLDAsMCwwLDUuMTMsOC40N0wyLjI5LDIwSDMzLjcxWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCBjbHItaS1iYWRn''@;'; put 'put ''ZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLjg2LDguNDNBMiwyLDAsMCwwLDI4Ljk0LDdINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIuMjksMjBIMzMuNzFaIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMiwyMnY3YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMlptMjgsNUgyNlYyNWg0WiIvPlxuJyksTC5DbHJTaGFwZUJhY2t1cFJlc3RvcmU9KDAsRS5jbHJJY29uU1ZHKSgnPHJl''@;'; put 'put ''Y3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIHg9IjYiIHk9IjIyIiB3aWR0aD0iMjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTItLWFsZXJ0ZWQiIHg9IjI2IiB5PSIyNiIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0xMyw5LjkyLDE3LDZWMTlhMSwxLDAsMSwwLDIs''@;'; put 'put ''MFY2bDEuNDcsMS40NiwxLTEuNzlMMTgsMi4xNiwxMS42MSw4LjVBMSwxLDAsMCwwLDEzLDkuOTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTTMxLjU4LDE1LjRIMjkuNDZjMSwy''@;'; put 'put ''Ljg1LDIuMzEsNi4zNywyLjU0LDcuMDhWMzBINFYyMi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEgxNVYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4x''@;'; put 'put ''MiwzNCwyMiwzMS41OCwxNS40WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gz''@;'; put 'put ''My42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgeD0iNiIgeT0iMjIiIHdp''@;'; put 'put ''ZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIHg9IjI2IiB5PSIyNiIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMTMsOS45MiwxNyw2VjE5YTEsMSwwLDEsMCwyLDBWNmw0LDMuOTVhMSwxLDAsMCwwLC43MS4yOWwuMTEsMGE3LjQ2LDcuNDYsMCwwLDEtMS4yNS0zLjUyTDE4LDIuMTYsMTEuNjEsOC41QTEsMSww''@;'; put 'put ''LDAsMCwxMyw5LjkyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiBkPSJNMzAuODcsMTMuNDVhNy41NSw3LjU1LDAsMCwxLS44Ny4wNUE3LjQ2LDcuNDYsMCwwLDEsMjUuNTEsMTJIMjF2Mmg3''@;'; put 'put ''Ljk1QzMwLDE2Ljk0LDMxLjcyLDIxLjY1LDMyLDIyLjQ4VjMwSDRWMjIuNDhDNC4yOCwyMS42NSw3LjA1LDE0LDcuMDUsMTRIMTVWMTJINy4wN2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMiwyMiwyLDIyLjEsMiwyMi4zM1YzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjIu''@;'; put 'put ''MzNDMzQsMjIuMSwzNCwyMiwzMC44NywxMy40NVoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICA8cmVj''@;'; put 'put ''dCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgeD0iNiIgeT0iMjIiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgeD0iMjYiIHk9IjI2IiB3aWR0aD0i''@;'; put 'put ''NCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTEzLDkuOTIsMTcsNlYxOWExLDEsMCwxLDAsMiwwVjZsNCwzLjk1QTEsMSwwLDEsMCwyNC4zOCw4LjVMMTgsMi4xNiwxMS42MSw4LjVBMSwxLDAs''@;'; put 'put ''MCwwLDEzLDkuOTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTMwLjg0LDEzLjM3QTEuOTQsMS45NCwwLDAsMCwyOC45MywxMkgyMXYyaDcuOTVDMzAsMTYuOTQsMzEuNzIsMjEuNjUsMzIsMjIuNDhWMzBINFYy''@;'; put 'put ''Mi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEgxNVYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4xLDM0LDIyLDMwLjg0LDEzLjM3WiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDVIMjZWMjdoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xMyw5LjkyLDE3LDZWMThhMSwxLDAsMSwwLDIsMFY2bDEuNDcsMS40NiwxLTEuNzlMMTgsMi4xNiwxMS42MSw4LjVBMSwxLDAsMCwwLDEzLDkuOTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiBkPSJNMzEuNTgsMTUuNEgyMi4yM0EzLjYyLDMuNjIsMCwwLDEsMjEsMTUuMTZWMThhMywzLDAsMSwxLTYsMFYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLjg2LDE5LjY4LDIuMjQsMjEuNDMs''@;'; put 'put ''Mi4wNywyMkgzMy45M0MzMy43OSwyMS40OSwzMy4yOCwyMC4wNywzMS41OCwxNS40WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFB''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1i''@;'; put 'put ''YWRnZWQiIGQ9Ik0yLDI0djZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjI0Wm0yOCw1SDI2VjI3aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTEzLDkuOTIsMTcsNlYxOGEx''@;'; put 'put ''LDEsMCwxLDAsMiwwVjZsNCwzLjk1YTEsMSwwLDAsMCwuNzEuMjlsLjExLDBhNy40Niw3LjQ2LDAsMCwxLTEuMjUtMy41MkwxOCwyLjE2LDExLjYxLDguNUExLDEsMCwwLDAsMTMsOS45MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzAuODcsMTMuNDVhNy41NSw3LjU1LDAsMCwxLS44Ny4wNUE3LjQ2LDcuNDYsMCwwLDEsMjUuNTEsMTJIMjF2NmEzLDMsMCwxLDEtNiwwVjEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIuODYsMTkuNjgsMi4yNCwyMS40MywyLjA3LDIy''@;'; put 'put ''SDMzLjkzQzMzLjc3LDIxLjQzLDMzLjE1LDE5LjcsMzAuODcsMTMuNDVaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMiwyNHY2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNFptMjgsNUgyNlYyN2g0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMiIgZD0iTTMwLjg0LDEzLjM3QTEuOTQsMS45NCwwLDAsMCwyOC45MywxMkgyMXY2YTMsMywwLDEsMS02LDBWMTJINy4wN2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMi44NiwxOS42OCwyLjI0LDIxLjQzLDIuMDcsMjJIMzMuOTNDMzMuNzcsMjEuNDMsMzMuMTQsMTkuNjksMzAuODQs''@;'; put 'put ''MTMuMzdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMTMsOS45MiwxNyw2VjE4YTEsMSwwLDEsMCwyLDBWNmw0LDMuOTVBMSwxLDAsMSwwLDI0LjM4LDguNUwxOCwyLjE2LDExLjYxLDguNUExLDEsMCwwLDAsMTMsOS45''@;'; put 'put ''MloiLz5cbicpLEwuQ2xyU2hhcGVCYWNrdXA9KDAsRS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIHg9IjYiIHk9IjIyIiB3aWR0aD0iMjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJl''@;'; put 'put ''Y3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9IjI2IiB5PSIyNiIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0xOCwxOS44NGw0LjQ3LTQuNDRoLS4yM2EzLjY3LDMuNjcsMCwwLDEtMi0uNjFMMTksMTZWNGExLDEsMCwxLDAtMiwwVjE2bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMzEuNTgsMTUuNEgyOS40NmMxLDIuODUsMi4zMSw2LjM3LDIuNTQsNy4wOFYzMEg0VjIyLjQ4QzQuMjgsMjEuNjUsNy4wNSwxNCw3LjA1LDE0SDkuNThhMywzLDAsMCwxLS4xNC0ySDcuMDdhMS45MiwxLjkyLDAsMCww''@;'; put 'put ''LTEuOSwxLjMyQzIsMjIsMiwyMi4xLDIsMjIuMzNWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyLjMzQzM0LDIyLjEyLDM0LDIyLDMxLjU4LDE1LjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHJl''@;'; put 'put ''Y3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiB4PSI2IiB5PSIyMiIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTItLWJhZGdlZCIgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0xOCwxOS44NGw2LjM4LTYuMzVBMSwxLDAsMSwwLDIzLDEy''@;'; put 'put ''LjA4TDE5LDE2VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9Ik0zMC44NywxMy40NWE3LjU1LDcuNTUs''@;'; put 'put ''MCwwLDEtLjg3LjA1LDcuNDYsNy40NiwwLDAsMS0zLjM1LS44LDMsMywwLDAsMS0uMjQsMS4zaDIuNTRDMzAsMTYuOTQsMzEuNzIsMjEuNjUsMzIsMjIuNDhWMzBINFYyMi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEg5LjU4YTMsMywwLDAsMS0uMTQtMkg3LjA3YTEuOTIsMS45Miww''@;'; put 'put ''LDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4xLDM0LDIyLDMwLjg3LDEzLjQ1WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSI2IiB5PSIyMiIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNiIg''@;'; put 'put ''eT0iMjYiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIlxuICAgICAgICAgICAgICAgIGQ9Ik0zMC44NCwxMy4zN0ExLjk0LDEuOTQsMCwwLDAsMjguOTMsMTJIMjYuNTVhMywzLDAsMCwx''@;'; put 'put ''LS4xNCwyaDIuNTRDMzAsMTYuOTQsMzEuNzIsMjEuNjUsMzIsMjIuNDhWMzBINFYyMi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEg5LjU4YTMsMywwLDAsMS0uMTQtMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIsMiwwLDAsMCwy''@;'; put 'put ''LDJIMzJhMiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4xLDM0LDIyLDMwLjg0LDEzLjM3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOCwxOS44NGw2LjM4LTYuMzVBMSwxLDAsMSwwLDIzLDEyLjA4TDE5LDE2''@;'; put 'put ''VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTYuNTgsMjEuMjYsMTAuMiwxNC45MUEzLDMsMCwwLDEs''@;'; put 'put ''OS40NCwxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLjg2LDE5LjY4LDIuMjQsMjEuNDMsMi4wNywyMkgxNy4zM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0yLDI0djZh''@;'; put 'put ''MiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjI0Wm0yOCw0SDI2VjI2aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiBkPSJNMTguNjYsMjJIMzMuOTNjLS4xNS0uNTEtLjY1LTEuOTMt''@;'; put 'put ''Mi4zNS02LjZIMjUuM2wtNS44OSw1Ljg2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCIgZD0iTTE4LDE5Ljg0bDQuNDctNC40NGgtLjIzYTMuNjQsMy42NCwwLDAsMS0yLS42MUwxOSwxNlY0YTEs''@;'; put 'put ''MSwwLDEsMC0yLDBWMTZsLTQtMy45NWExLDEsMCwwLDAtMS40MSwxLjQyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwx''@;'; put 'put ''LjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQi''@;'; put 'put ''IGQ9Ik0xOCwxOS44NGw2LjM4LTYuMzVBMSwxLDAsMSwwLDIzLDEyLjA4TDE5LDE2VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTIt''@;'; put 'put ''LWJhZGdlZCIgZD0iTTE2LjU4LDIxLjI2LDEwLjIsMTQuOTFBMywzLDAsMCwxLDkuNDQsMTJINy4wN2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMi44NiwxOS42OCwyLjI0LDIxLjQzLDIuMDcsMjJIMTcuMzNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDRIMjZWMjZoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFk''@;'; put 'put ''Z2VkIiBkPSJNMTguNjYsMjJIMzMuOTNjLS4xNy0uNTctLjc5LTIuMy0zLjA2LTguNTVhNy41NSw3LjU1LDAsMCwxLS44Ny4wNSw3LjQ2LDcuNDYsMCwwLDEtMy4zNS0uOCwzLDMsMCwwLDEtLjg2LDIuMjFsLTYuMzgsNi4zNVoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwxOS44NGw2LjM4LTYuMzVBMSwxLDAs''@;'; put 'put ''MSwwLDIzLDEyLjA4TDE5LDE2VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTkuNDEsMjEuMjZsLS43NC43NEgzMy45M2MtLjE3LS41''@;'; put 'put ''Ny0uNzktMi4zMS0zLjA5LTguNjNBMS45NCwxLjk0LDAsMCwwLDI4LjkzLDEySDI2LjU1YTMsMywwLDAsMS0uNzYsMi45MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xNi41OCwyMS4yNiwxMC4yLDE0LjkxQTMsMyww''@;'; put 'put ''LDAsMSw5LjQ0LDEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIuODYsMTkuNjgsMi4yNCwyMS40MywyLjA3LDIySDE3LjMzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwy''@;'; put 'put ''SDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDRIMjZWMjZoNFoiLz5cbicpLEwuQ2xyU2hhcGVEZXZpY2VzPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsMTNIMjRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCww''@;'; put 'put ''LDAsMiwyaDhhMiwyLDAsMCwwLDItMlYxNUEyLDIsMCwwLDAsMzIsMTNabTAsMlYyNkgyNFYxNVpNMjQsMzBWMjcuNmg4VjMwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yMCwyMkg0VjZIMjh2NWgyVjZhMiwy''@;'; put 'put ''LDAsMCwwLTItMkg0QTIsMiwwLDAsMCwyLDZWMjJhMiwyLDAsMCwwLDIsMkgyMFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjAsMjZIOWExLDEsMCwwLDAsMCwySDIwWiIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLDEzSDI0YTIsMiwwLDAsMC0yLDJWMzBhMiwyLDAsMCwwLDIsMmg4YTIsMiwwLDAsMCwyLTJWMTVBMiwyLDAsMCwwLDMyLDEzWm0wLDJWMjhIMjRWMTVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjgsNEg0QTIsMiwwLDAsMCwyLDZWMjJhMiwyLDAsMCwwLDIsMmg4djJIOS4zMkExLjIsMS4yLDAsMCwwLDgsMjdhMS4yLDEuMiwwLDAsMCwxLjMyLDFIMTkuOTJ2LS4zN0gyMFYyMkg0VjZIMjh2NWgyVjZBMiwyLDAsMCwwLDI4LDRa''@;'; put 'put ''Ii8+XG4nKSxMLkNsclNoYXBlS2V5Ym9hcmQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiw4SDRhMiwyLDAsMCwwLTIsMlYyNmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTBBMiwyLDAsMCww''@;'; put 'put ''LDMyLDhabTAsMThINFYxMEgzMloiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSI3IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMiIHg9IjExIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjE1IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHg9IjE5IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIHg9IjIzIiB5PSIxMyIg''@;'; put 'put ''d2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIHg9IjI3IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTgiIHg9IjciIHk9IjE3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgeD0iMTEiIHk9IjE3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiIHg9IjE1IiB5PSIxNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTExIiB4PSIxOSIgeT0iMTci''@;'; put 'put ''IHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMiIgeD0iMjMiIHk9IjE3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMTMiIHg9IjI3IiB5PSIxNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE0IiB4PSIyNyIgeT0iMjIiIHdpZHRoPSIxLjk0IiBoZWlnaHQ9IjIiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNSIgeD0iNyIgeT0iMjIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNiIgeD0iMTEu''@;'; put 'put ''MTMiIHk9IjIyIiB3aWR0aD0iMTMuNzUiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLDhINGEyLDIsMCwwLDAtMiwyVjI2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMEEyLDIsMCww''@;'; put 'put ''LDAsMzIsOFpNMTksMTNoMnYySDE5Wm0wLDRoMnYySDE5Wm0tNC00aDJ2MkgxNVptMCw0aDJ2MkgxNVptLTQtNGgydjJIMTFaTTksMjRIN1YyMkg5Wm0wLTVIN1YxN0g5Wm0wLTRIN1YxM0g5Wm0yLDJoMnYySDExWm0xMy44OCw3SDExLjEzVjIySDI0Ljg4Wk0yNSwxOUgyM1YxN2gyWm0wLTRI''@;'; put 'put ''MjNWMTNoMlptMy45NCw5SDI3VjIyaDEuOTRaTTI5LDE5SDI3VjE3aDJabTAtNEgyN1YxM2gyWiIvPlxuJyksTC5DbHJTaGFwZU1vdXNlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMzRBMTAsMTAsMCww''@;'; put 'put ''LDEsOCwyNFYxMmExMCwxMCwwLDAsMSwyMCwwVjI0QTEwLDEwLDAsMCwxLDE4LDM0Wk0xOCw0YTgsOCwwLDAsMC04LDhWMjRhOCw4LDAsMCwwLDE2LDBWMTJBOCw4LDAsMCwwLDE4LDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMiIgZD0iTTE4LDE1YTEsMSwwLDAsMS0xLTFWMTBhMSwxLDAsMCwxLDIsMHY0QTEsMSwwLDAsMSwxOCwxNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTEwLDEwLDAsMCwwLDgsMTJWMjRhMTAsMTAsMCww''@;'; put 'put ''LDAsMjAsMFYxMkExMCwxMCwwLDAsMCwxOCwyWm0xLjMsMTEuNDRhMS4zLDEuMywwLDAsMS0yLjYsMFYxMGExLjMsMS4zLDAsMCwxLDIuNiwwWiIvPlxuJyksTC5DbHJTaGFwZURhc2hib2FyZD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgZD0iTTI1LjE4LDEyLjMybC01LjkxLDUuODFhMywzLDAsMSwwLDEuNDEsMS40Mmw1LjkyLTUuODFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCw0LjI1QTE2LjQ5LDE2LjQ5LDAs''@;'; put 'put ''MCwwLDUuNCwzMS40bC4zLjM1SDMwLjNsLjMtLjM1QTE2LjQ5LDE2LjQ5LDAsMCwwLDE4LDQuMjVabTExLjM0LDI1LjVINi42NmExNC40MywxNC40MywwLDAsMS0zLjExLTcuODRIN3YtMkgzLjU1QTE0LjQxLDE0LjQxLDAsMCwxLDcsMTEuMjlsMi40NSwyLjQ1LDEuNDEtMS40MUw4LjQzLDku''@;'; put 'put ''ODdBMTQuNDEsMTQuNDEsMCwwLDEsMTcsNi4yOXYzLjVoMlY2LjNhMTQuNDcsMTQuNDcsMCwwLDEsMTMuNCwxMy42MUgyOC45MnYyaDMuNTNBMTQuNDMsMTQuNDMsMCwwLDEsMjkuMzQsMjkuNzVaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTUuODUsMTguNjlhMywzLDAsMSwwLDQuODMuODVsNS45Mi01LjgxLTEuNDEtMS40MS01LjkxLDUuODFBMywzLDAsMCwwLDE1Ljg1LDE4LjY5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMyLjU4LDEzYTcuNDUsNy40NSwwLDAsMS0yLjA2LjQ0LDE0LjQsMTQuNCwwLDAsMSwxLjkzLDYuNDNIMjguOTJ2MmgzLjUzYTE0LjQzLDE0LjQzLDAsMCwxLTMuMTEsNy44NEg2LjY2YTE0LjQzLDE0LjQzLDAsMCwx''@;'; put 'put ''LTMuMTEtNy44NEg3di0ySDMuNTVBMTQuNDEsMTQuNDEsMCwwLDEsNywxMS4yOWwyLjQ1LDIuNDUsMS40MS0xLjQxTDguNDMsOS44N0ExNC40MSwxNC40MSwwLDAsMSwxNyw2LjI5djMuNWgyVjYuM0ExNC40MSwxNC40MSwwLDAsMSwyMi41OCw3YTcuNTIsNy41MiwwLDAsMS0uMDgtMSw3LjUy''@;'; put 'put ''LDcuNTIsMCwwLDEsLjA5LTEuMDlBMTYuNDksMTYuNDksMCwwLDAsNS40LDMxLjRsLjMuMzVIMzAuM2wuMy0uMzVhMTYuNDUsMTYuNDUsMCwwLDAsMi0xOC4zNloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCw0LjI1QTE2LjQ5LDE2LjQ5LDAsMCwwLDUuNCwzMS40bC4zLjM1SDMwLjNsLjMt''@;'; put 'put ''LjM1QTE2LjQ5LDE2LjQ5LDAsMCwwLDE4LDQuMjVabTguNiw5LjQ4LTUuOTIsNS44MWEzLDMsMCwxLDEtMS40MS0xLjQybDUuOTEtNS44MVptLTIzLDYuMTdIN3YySDMuNTZjMC0uMzktLjA1LS43Ny0uMDUtMS4xN1MzLjUzLDIwLjE4LDMuNTUsMTkuOVptNC44OC0xMCwyLjQ2LDIuNDZMOS40''@;'; put 'put ''NywxMy43NCw3LDExLjI5QTE0LjU3LDE0LjU3LDAsMCwxLDguNDMsOS44N1pNMTksOS43OUgxN1Y2LjI5Yy4zMiwwLC42MywwLDEsMHMuNywwLDEsLjA1Wk0zMi40OSwyMC43NGMwLC4zOSwwLC43OS0uMDUsMS4xN0gyOC45MnYtMmgzLjUzQzMyLjQ3LDIwLjE4LDMyLjQ5LDIwLjQ2LDMyLjQ5''@;'; put 'put ''LDIwLjc0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzIuNTgsMTNhNy40Niw3LjQ2LDAsMCwxLTEwLTguMTJBMTYuNDksMTYuNDksMCwwLDAsNS40LDMxLjRsLjMuMzVIMzAuM2wu''@;'; put 'put ''My0uMzVhMTYuNDUsMTYuNDUsMCwwLDAsMi0xOC4zNlpNMTcsNi4yOWMuMzIsMCwuNjMsMCwxLDBzLjcsMCwxLC4wNXYzLjVIMTdaTTcsMjEuOTFIMy41NmMwLS4zOS0uMDUtLjc3LS4wNS0xLjE3czAtLjU2LDAtLjgzSDdabTIuNTEtOC4xNkw3LDExLjI5QTE0LjU3LDE0LjU3LDAsMCwxLDgu''@;'; put 'put ''NDMsOS44N2wyLjQ2LDIuNDZabTEwLjYyLDkuMTlhMywzLDAsMSwxLS44Mi00LjgxbDUuOTEtNS44MSwxLjQxLDEuNDEtNS45Miw1LjgxQTMsMywwLDAsMSwyMC4wOSwyMi45M1ptMTIuMzUtMUgyOC45MnYtMmgzLjUzYzAsLjI4LDAsLjU1LDAsLjgzUzMyLjQ3LDIxLjUyLDMyLjQ0LDIxLjkx''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbicpLEwuQ2xyU2hhcGVIb3N0PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMjQuM2EyLjQ4LDIuNDgsMCwxLDAsMi40OCwyLjQ3QTIuNDgsMi40OCwwLDAsMCwxOCwyNC4zWm0wLDMuNmExLjEzLDEuMTMsMCwxLDEsMS4xMy0xLjEyQTEuMTMsMS4xMywwLDAsMSwxOCwyNy45WiIvPjxy''@;'; put 'put ''ZWN0IHg9IjEzLjUiIHk9IjIwLjciIHdpZHRoPSI5IiBoZWlnaHQ9IjEuNDQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI1LjY1LDMuNkgxMC4zNUExLjM1LDEuMzUsMCwwLDAsOSw0Ljk1VjMyLjRIMjdW''@;'; put 'put ''NC45NUExLjM1LDEuMzUsMCwwLDAsMjUuNjUsMy42Wm0tLjQ1LDI3SDEwLjhWNS40SDI1LjJaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjEyLjYiIHk9IjcuMiIgd2lkdGg9IjEwLjgiIGhlaWdodD0iMS40''@;'; put 'put ''NCIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIxMi42IiB5PSIxMC44IiB3aWR0aD0iMTAuOCIgaGVpZ2h0PSIxLjQ0Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xNS4yLDI3LjhjMCwxLjUsMS4yLDIuOCwyLjgsMi44czIuOC0xLjIsMi44LTIuOFMxOS41LDI1LDE4LDI1UzE1LjIsMjYuMiwxNS4yLDI3Ljh6IE0xOS4yLDI3LjhjMCwwLjctMC42LDEuMi0xLjIsMS4ycy0xLjItMC42''@;'; put 'put ''LTEuMi0xLjJzMC42LTEuMiwxLjItMS4yUzE5LjIsMjcuMSwxOS4yLDI3Ljh6Ii8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9IjEzIiB5PSIyMSIgd2lkdGg9IjEwIiBoZWlnaHQ9''@;'; put 'put ''IjEuNiIvPlxuICAgICAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiBwb2ludHM9IjIxLjMsNiAxMiw2IDEyLDcuNiAyMC40LDcuNiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMTIsMTEuNmg2LjZjMC0wLjYsMC4yLTEuMSwwLjQtMS42aC03VjExLjZ6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIGQ9Ik0yNiwxNS40VjMySDEwVjRoMTIuNWwxLjEtMkg5LjVDOC43LDIsOCwyLjcsOCwzLjVWMzRoMjBWMTUuNEgyNnoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''Ni0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2LjksMS4xTDIxLjEsMTFjLTAuNCwwLjYtMC4yLDEuNCwwLjMsMS44YzAuMiwwLjIsMC41LDAuMiwwLjgsMC4yaDExLjVjMC43LDAsMS4zLTAuNSwxLjMtMS4yYzAtMC4zLTAuMS0wLjUtMC4yLTAuOGwtNS43LTkuOWMtMC40LTAuNi0xLjEt''@;'; put 'put ''MC44LTEuOC0wLjVDMjcuMSwwLjgsMjcsMSwyNi45LDEuMXoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xNS4yLDI3LjhjMCwxLjUsMS4yLDIuOCwyLjgsMi44czIuOC0xLjIs''@;'; put 'put ''Mi44LTIuOFMxOS41LDI1LDE4LDI1UzE1LjIsMjYuMiwxNS4yLDI3Ljh6IE0xOS4yLDI3LjhjMCwwLjctMC42LDEuMi0xLjIsMS4ycy0xLjItMC42LTEuMi0xLjJzMC42LTEuMiwxLjItMS4yUzE5LjIsMjcuMSwxOS4yLDI3Ljh6Ii8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiB4PSIxMyIgeT0iMjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxLjYiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1i''@;'; put 'put ''YWRnZWQiIGQ9Ik0yNCwxMC41Yy0wLjEtMC4yLTAuMi0wLjMtMC4zLTAuNUgxMnYxLjZoMTJWMTAuNXoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9Ik0xMiw2djEuNmgxMC43Yy0w''@;'; put 'put ''LjEtMC41LTAuMi0xLjEtMC4yLTEuNkgxMnoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiIGQ9Ik0yNiwxMi4zVjMySDEwVjRoMTIuOGMwLjItMC43LDAuNS0xLjQsMC45LTJIOS41Qzgu''@;'; put 'put ''NywyLDgsMi43LDgsMy41VjM0aDIwVjEzLjJDMjcuMywxMywyNi42LDEyLjcsMjYsMTIuM3oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0i''@;'; put 'put ''NiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNi41LDJoLTE3QzguNywyLDgsMi43LDgsMy41VjM0aDIwVjMuNUMyOCwyLjcsMjcuMywyLDI2LjUsMnogTTE4LDMwLjVjLTEuNSwwLTIuOC0xLjItMi44''@;'; put 'put ''LTIuOFMxNi41LDI1LDE4LDI1czIuOCwxLjIsMi44LDIuOFMxOS41LDMwLjUsMTgsMzAuNXogTTIzLDIyLjZIMTNWMjFoMTBWMjIuNnogTTI0LDExLjZIMTJWMTBoMTJWMTEuNnogTTI0LDcuNkgxMlY2aDEyVjcuNnoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGN4PSIxOCIgY3k9IjI3LjgiIHI9IjEuMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yMi4yLDE1LjNjLTIsMC0zLjctMS42LTMuNy0z''@;'; put 'put ''LjdIMTJWMTBoNi45YzAtMC4xLDAuMS0wLjIsMC4xLTAuMmwxLjItMi4ySDEyVjZoOS4ybDIuMy00aC0xNEM4LjcsMiw4LDIuNyw4LDMuNVYzNGgyMFYxNS4zSDIyLjJ6IE0xOCwzMC41Yy0xLjUsMC0yLjgtMS4yLTIuOC0yLjhTMTYuNSwyNSwxOCwyNXMyLjgsMS4yLDIuOCwyLjhTMTkuNSwz''@;'; put 'put ''MC41LDE4LDMwLjV6IE0yMywyMi42SDEzVjIxaDEwVjIyLjZ6Ii8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBjeD0iMTgiIGN5PSIyNy44IiByPSIxLjIiLz5cbiAgICAgICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuOSwxbC01LjcsOS45Yy0wLjMsMC42LTAuMSwxLjQsMC41LDEuN2MwLjIsMC4xLDAuNCwwLjIsMC42LDAuMmgxMS40YzAuNywwLDEuMy0wLjYs''@;'; put 'put ''MS4zLTEuM2MwLTAuMi0wLjEtMC40LTAuMi0wLjZMMjkuMSwxYy0wLjQtMC42LTEuMS0wLjgtMS44LTAuNUMyNy4xLDAuNywyNywwLjgsMjYuOSwxeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2Vk''@;'; put 'put ''IiBkPSJNMjQsMTAuM3YxLjJIMTJWMTBoMTEuOGMtMC41LTAuNy0wLjgtMS41LTEtMi40SDEyVjZoMTAuNWMwLDAsMC0wLjEsMC0wLjFjMC0xLjQsMC40LTIuNywxLjEtMy45SDkuNUM4LjcsMiw4LDIuNyw4LDMuNVYzNGgyMFYxMy4xQzI2LjQsMTIuNiwyNSwxMS43LDI0LDEwLjN6IE0xOCwz''@;'; put 'put ''MC41Yy0xLjUsMC0yLjgtMS4yLTIuOC0yLjhTMTYuNSwyNSwxOCwyNXMyLjgsMS4yLDIuOCwyLjhTMTkuNSwzMC41LDE4LDMwLjV6TTIzLDIyLjZIMTNWMjFoMTBWMjIuNnoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMi0tYmFkZ2VkIiBjeD0iMTgiIGN5PSIyNy44IiByPSIxLjIiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI1LjkiIHI9IjUiLz5cbicp''@;'; put 'put ''LEwuQ2xyU2hhcGVTdG9yYWdlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMsNi42OWgwYy0uMTgtMy40MS05LjQ3LTQuMzMtMTUtNC4zM1MzLDMuMjksMyw2Ljc4VjI5LjM3YzAsMy40OSw5LjQzLDQuNDMs''@;'; put 'put ''MTUsNC40M3MxNS0uOTMsMTUtNC40M1Y2Ljc4czAsMCwwLDBTMzMsNi43LDMzLDYuNjlabS0yLDcuNTZjLS4zMy44Ni01LjA2LDIuNDUtMTMsMi40NUEzNy40NSwzNy40NSwwLDAsMSw3LDE1LjM0djIuMDhBNDMuMzIsNDMuMzIsMCwwLDAsMTgsMTguN2M0LDAsOS45My0uNDgsMTMtMnY1LjE3''@;'; put 'put ''Yy0uMzMuODYtNS4wNiwyLjQ1LTEzLDIuNDVBMzcuNDUsMzcuNDUsMCwwLDEsNywyMi45MlYyNWE0My4zMiw0My4zMiwwLDAsMCwxMSwxLjI4YzQsMCw5LjkzLS40OCwxMy0ydjUuMWMtLjM1Ljg2LTUuMDgsMi40NS0xMywyLjQ1UzUuMywzMC4yLDUsMjkuMzdWNi44MkM1LjMsNiwxMCw0LjM2''@;'; put 'put ''LDE4LDQuMzZjNy43NywwLDEyLjQ2LDEuNTMsMTMsMi4zNy0uNTIuODctNS4yMSwyLjM5LTEzLDIuMzlBMzcuNiwzNy42LDAsMCwxLDcsNy43NlY5Ljg1YTQzLjUzLDQzLjUzLDAsMCwwLDExLDEuMjdjNCwwLDkuOTMtLjQ4LDEzLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xOS41MSw5LjA5LDE4LDkuMTFBMzcuNiwzNy42LDAsMCwxLDcsNy43NlY5Ljg1YTQzLjUzLDQzLjUzLDAsMCwwLDExLDEuMjdoLjYxQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5WiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMjguODMsMTUuNEEzOC4zNywzOC4zNywwLDAsMSwxOCwxNi43LDM3LjQ1LDM3LjQ1LDAsMCwxLDcsMTUuMzR2Mi4wOEE0My4zMyw0My4z''@;'; put 'put ''MywwLDAsMCwxOCwxOC43YzQsMCw5LjkzLS40OCwxMy0ydjUuMTdjLS4zMy44Ni01LjA2LDIuNDUtMTMsMi40NUEzNy40NSwzNy40NSwwLDAsMSw3LDIyLjkyVjI1YTQzLjMzLDQzLjMzLDAsMCwwLDExLDEuMjhjNCwwLDkuOTMtLjQ4LDEzLTJ2NS4xYy0uMzUuODYtNS4wOCwyLjQ1LTEzLDIu''@;'; put 'put ''NDVTNS4zLDMwLjIsNSwyOS4zN1Y2LjgyQzUuMyw2LDEwLDQuMzYsMTgsNC4zNmMxLjUsMCwyLjg5LjA2LDQuMTUuMTZsMS4xLTEuOWMtMS44Ni0uMTgtMy43LS4yNi01LjI1LS4yNi01LjU3LDAtMTUsLjkzLTE1LDQuNDNWMjkuMzdjMCwzLjQ5LDkuNDMsNC40MywxNSw0LjQzczE1LS45Mywx''@;'; put 'put ''NS00LjQzdi0xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTcsNy43NlY5Ljg1''@;'; put 'put ''YTQzLjUzLDQzLjUzLDAsMCwwLDExLDEuMjcsNTQuODIsNTQuODIsMCwwLDAsNi4yLS4zNiw3LjUsNy41LDAsMCwxLTEuMTMtMS44OGMtMS41LjE1LTMuMi4yNC01LjA3LjI0QTM3LjYsMzcuNiwwLDAsMSw3LDcuNzZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzEsMTMuNDN2LjgyYy0uMzMuODYtNS4wNiwyLjQ1LTEzLDIuNDVBMzcuNDUsMzcuNDUsMCwwLDEsNywxNS4zNHYyLjA4QTQzLjMzLDQzLjMzLDAsMCwwLDE4LDE4LjdjNCwwLDkuOTMtLjQ4LDEzLTJ2NS4x''@;'; put 'put ''N2MtLjMzLjg2LTUuMDYsMi40NS0xMywyLjQ1QTM3LjQ1LDM3LjQ1LDAsMCwxLDcsMjIuOTJWMjVhNDMuMzMsNDMuMzMsMCwwLDAsMTEsMS4yOGM0LDAsOS45My0uNDgsMTMtMnY1LjFjLS4zNS44Ni01LjA4LDIuNDUtMTMsMi40NVM1LjMsMzAuMiw1LDI5LjM3VjYuODJDNS4zLDYsMTAsNC4z''@;'; put 'put ''NiwxOCw0LjM2YzEuNywwLDMuMjUuMDgsNC42NC4yYTcuNDQsNy40NCwwLDAsMSwuNjctMS45NGMtMS44OC0uMTgtMy43NS0uMjYtNS4zMS0uMjYtNS41NywwLTE1LC45My0xNSw0LjQzVjI5LjM3YzAsMy40OSw5LjQzLDQuNDMsMTUsNC40M3MxNS0uOTMsMTUtNC40M1YxMi44N0E3LjQ1LDcu''@;'; put 'put ''NDUsMCwwLDEsMzEsMTMuNDNaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTcuOTEsMTguMjhjOC4wOCwwLDE0LjY2LTEuNzQsMTUuMDktMy45NFY4LjU5Yy0uNDMsMi4yLTcsMy45NC0xNS4wOSwzLjk0QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDExVjlhMzkuNCwzOS40LDAsMCwwLDExLjY2LDEu''@;'; put 'put ''NTFDMjYsMTAuNTMsMzIuNTIsOC43OSwzMyw2LjYxaDBDMzIuOCwzLjIsMjMuNTIsMi4yOCwxOCwyLjI4UzMsMy4yMSwzLDYuNzFWMjkuMjljMCwzLjQ5LDkuNDMsNC40MywxNSw0LjQzczE1LS45MywxNS00LjQzVjI0LjA5QzMyLjU3LDI2LjI4LDI2LDI4LDE3LjkxLDI4QTM5LjQsMzkuNCww''@;'; put 'put ''LDAsMSw2LjI1LDI2LjUydi0yQTM5LjQsMzkuNCwwLDAsMCwxNy45MSwyNkMyNiwyNiwzMi41NywyNC4yOCwzMywyMi4wOVYxNi4zNGMtLjQzLDIuMi03LDMuOTQtMTUuMDksMy45NEEzOS40LDM5LjQsMCwwLDEsNi4yNSwxOC43N3YtMkEzOS40LDM5LjQsMCwwLDAsMTcuOTEsMTguMjhaIi8+''@;'; put 'put ''XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTE3LjkxLDIwLjI4QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDE4Ljc3di0yYTM5LjQsMzkuNCwwLDAsMCwxMS42NiwxLjUxYzYuOSwwLDEyLjct''@;'; put 'put ''MS4yNywxNC41MS0zSDIyLjIzYTMuNjcsMy42NywwLDAsMS0zLjU1LTIuNzVoLS43N0EzOS40LDM5LjQsMCwwLDEsNi4yNSwxMVY5YTM5LjQsMzkuNCwwLDAsMCwxMS42NiwxLjUxaC44MkEzLjY0LDMuNjQsMCwwLDEsMTksOS43NWw0LjE3LTcuMjJjLTEuODUtLjE4LTMuNjgtLjI1LTUuMjEt''@;'; put 'put ''LjI1LTUuNTcsMC0xNSwuOTMtMTUsNC40M1YyOS4yOWMwLDMuNDksOS40Myw0LjQzLDE1LDQuNDNzMTUtLjkzLDE1LTQuNDNWMjQuMDlDMzIuNTcsMjYuMjgsMjYsMjgsMTcuOTEsMjhBMzkuNCwzOS40LDAsMCwxLDYuMjUsMjYuNTJ2LTJBMzkuNCwzOS40LDAsMCwwLDE3LjkxLDI2QzI2LDI2''@;'; put 'put ''LDMyLjU3LDI0LjI4LDMzLDIyLjA5VjE2LjM0QzMyLjU3LDE4LjUzLDI2LDIwLjI4LDE3LjkxLDIwLjI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44''@;'; put 'put ''NSwxbC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkxSDMzLjY4YTEuMjgsMS4yOCwwLDAsMCwxLjEtMS45MUwyOS4wNiwxQTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTcuOTEsMTguMjhjOC4wOCwwLDE0LjY2LTEuNzQsMTUuMDktMy45NHYtMS42YTcuNDcsNy40NywwLDAsMS03LjM4LS44LDQ4LjMsNDguMywwLDAsMS03LjcxLjU5QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDExVjlhMzkuNCwzOS40LDAsMCwwLDExLjY2''@;'; put 'put ''LDEuNTEsNTEsNTEsMCwwLDAsNi0uMzQsNy40Niw3LjQ2LDAsMCwxLS41OS03LjY1Yy0xLjg3LS4xOC0zLjczLS4yNi01LjI4LS4yNi01LjU3LDAtMTUsLjkzLTE1LDQuNDNWMjkuMjljMCwzLjQ5LDkuNDMsNC40MywxNSw0LjQzczE1LS45MywxNS00LjQzVjI0LjA5QzMyLjU3LDI2LjI4LDI2''@;'; put 'put ''LDI4LDE3LjkxLDI4QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDI2LjUydi0yQTM5LjQsMzkuNCwwLDAsMCwxNy45MSwyNkMyNiwyNiwzMi41NywyNC4yOCwzMywyMi4wOVYxNi4zNGMtLjQzLDIuMi03LDMuOTQtMTUuMDksMy45NEEzOS40LDM5LjQsMCwwLDEsNi4yNSwxOC43N3YtMkEzOS40LDM5''@;'; put 'put ''LjQsMCwwLDAsMTcuOTEsMTguMjhaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNS44NiIgcj0iNSIvPlxuJyksTC5DbHJTaGFwZUNsdXN0ZXI9''@;'; put 'put ''KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjM2LDhIMjcuNXYySDMxVjMwSDI3LjV2MkgzM1Y5LjY3QTEuNjUsMS42NSwwLDAsMCwzMS4zNiw4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDEwSDgu''@;'; put 'put ''NVY4SDQuNjRBMS42NSwxLjY1LDAsMCwwLDMsOS42N1YzMkg4LjVWMzBINVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+PGVsbGlwc2UgY3g9IjE4LjAxIiBjeT0iMjUuOTkiIHJ4PSIxLjgiIHJ5PSIxLjc5IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjMyLDRIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEwLDUuNjhWMzJIMjZWNS42OEExLjY4LDEuNjgsMCwwLDAsMjQuMzIsNFpNMjQsMzBIMTJWNkgyNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMy41IiB5PSI5LjIxIiB3aWR0aD0iOSIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNSwxMEg4LjVWOEg0LjY0QTEuNjUsMS42''@;'; put 'put ''NSwwLDAsMCwzLDkuNjdWMzJIOC41VjMwSDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPjxlbGxpcHNlIGN4PSIxOC4wMSIgY3k9IjI1Ljk5IiByeD0iMS44IiByeT0iMS43OSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSw5Ljg5bC4zOS0uNjhIMTMuNXYxLjZoNS4xN0EzLjY1LDMuNjUsMCwwLDEsMTksOS44OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQsMzBIMTJWNmg5LjI5bDEuMTUtMkgxMS42OEExLjY4LDEuNjgsMCwwLDAsMTAsNS42OFYzMkgyNlYxNS40SDI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0''@;'; put 'put ''ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzEgMTUuNCAzMSAzMCAyNy41IDMwIDI3LjUgMzIgMzMgMzIgMzMgMTUuNCAzMSAxNS40IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTYtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDEwSDguNVY4SDQuNjRBMS42NSwxLjY1LDAsMCwwLDMsOS42N1YzMkg4LjVWMzBINVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJh''@;'; put 'put ''ZGdlZCIvPjxlbGxpcHNlIGN4PSIxOC4wMSIgY3k9IjI1Ljk5IiByeD0iMS44IiByeT0iMS43OSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMy41IiB5PSI5LjIxIiB3aWR0aD0iOSIg''@;'; put 'put ''aGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LDEwLjQ5VjMwSDEyVjZIMjIuNWE3LjQ5LDcuNDksMCwwLDEsLjI4LTJIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEw''@;'; put 'put ''LDUuNjhWMzJIMjZWMTIuMzRBNy41Myw3LjUzLDAsMCwxLDI0LDEwLjQ5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEsMTMuNDNWMzBIMjcuNXYySDMzVjEyLjg3QTcuNDUsNy40''@;'; put 'put ''NSwwLDAsMSwzMSwxMy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC02LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS4zNiw4SDI3LjVWMzJIMzNWOS42N0ExLjY1LDEuNjUsMCwwLDAsMzEuMzYsOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0zLDkuNjdWMzJIOC41VjhINC42NEExLjY1LDEuNjUsMCwwLDAsMyw5LjY3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjMyLDRIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEwLDUuNjhWMzJIMjZWNS42OEExLjY4''@;'; put 'put ''LDEuNjgsMCwwLDAsMjQuMzIsNFpNMTgsMjcuNzlBMS43OSwxLjc5LDAsMSwxLDE5LjgxLDI2LDEuOCwxLjgsMCwwLDEsMTgsMjcuNzlaTTIzLDEwLjZIMTNWOUgyM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLDku''@;'; put 'put ''NjdWMzJIOC41VjhINC42NEExLjY1LDEuNjUsMCwwLDAsMyw5LjY3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjcuNSIgeT0iMTUuNCIgd2lkdGg9IjUuNSIgaGVpZ2h0PSIxNi42IiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksMTMuNTZhMy42OCwzLjY4LDAsMCwxLS4zMS0zSDEzVjloNi41NmwyLjg5LTVIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEwLDUuNjhWMzJIMjZW''@;'; put 'put ''MTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTksMTMuNTZaTTE4LDI3Ljc5QTEuNzksMS43OSwwLDEsMSwxOS44MSwyNiwxLjgsMS44LDAsMCwxLDE4LDI3Ljc5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMsOS42N1YzMkg4LjVWOEg0LjY0QTEuNjUsMS42NSwwLDAsMCwzLDkuNjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTIyLjUsNmE3LjQ5LDcuNDksMCwwLDEsLjI4LTJIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEwLDUuNjhWMzJIMjZWMTIuMzRBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNlpNMTgsMjcuNzlBMS43OSwxLjc5LDAsMSwxLDE5LjgxLDI2LDEuOCwxLjgsMCwwLDEsMTgs''@;'; put 'put ''MjcuNzlaTTIzLDEwLjZIMTNWOUgyM1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ3LDcuNDcsMCwwLDEtMi41LS40NFYzMkgzM1YxMi44N0E3LjQ3LDcuNDcsMCwwLDEs''@;'; put 'put ''MzAsMTMuNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLWJhZGdlIi8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVBcHBsaWNhdGlvbnM9KDAsRS5jbHJJY29uU1ZHKSgnPHBvbHlnb24gcG9pbnRzPSI4IDggNCA4IDQgMTAgMTAgMTAgMTAgNCA4IDQgOCA4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSA4IDE1IDggMTUgMTAgMjEgMTAgMjEgNCAxOSA0IDE5IDgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjMwIDQgMzAgOCAyNiA4IDI2IDEwIDMyIDEw''@;'; put 'put ''IDMyIDQgMzAgNCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAxOSA0IDE5IDQgMjEgMTAgMjEgMTAgMTUgOCAxNSA4IDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSAxOSAxNSAxOSAxNSAyMSAyMSAyMSAyMSAxNSAxOSAxNSAxOSAxOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgMTkgMjYgMTkg''@;'; put 'put ''MjYgMjEgMzIgMjEgMzIgMTUgMzAgMTUgMzAgMTkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjggMzAgNCAzMCA0IDMyIDEwIDMyIDEwIDI2IDggMjYgOCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTciLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTkgMzAgMTUgMzAgMTUgMzIgMjEgMzIgMjEgMjYgMTkgMjYgMTkgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBw''@;'; put 'put ''b2ludHM9IjMwIDMwIDI2IDMwIDI2IDMyIDMyIDMyIDMyIDI2IDMwIDI2IDMwIDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDggNCA4IDQgMTAgMTAgMTAgMTAgNCA4IDQgOCA4IiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTkgOCAxNSA4IDE1IDEwIDIxIDEwIDIxIDQgMTkgNCAxOSA4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAxOSA0IDE5IDQgMjEgMTAgMjEgMTAgMTUgOCAxNSA4IDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5''@;'; put 'put ''Z29uIHBvaW50cz0iMTkgMTkgMTUgMTkgMTUgMjEgMjEgMjEgMjEgMTUgMTkgMTUgMTkgMTkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzMCAxOSAyNiAxOSAyNiAyMSAz''@;'; put 'put ''MiAyMSAzMiAxNSAzMCAxNSAzMCAxOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjggMzAgNCAzMCA0IDMyIDEwIDMyIDEwIDI2IDggMjYgOCAzMCIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE5IDMwIDE1IDMwIDE1IDMyIDIxIDMyIDIxIDI2IDE5IDI2IDE5IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC03LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgMzAgMjYgMzAgMjYgMzIgMzIgMzIgMzIgMjYgMzAgMjYgMzAgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC05LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCA4IDQgOCA0IDEwIDEwIDEwIDEwIDQgOCA0IDggOCIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAxOSA0IDE5IDQgMjEgMTAgMjEgMTAgMTUgOCAxNSA4IDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSAxOSAxNSAxOSAxNSAyMSAyMSAyMSAyMSAxNSAxOSAxNSAxOSAxOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgMTUgMzAgMTkgMjYgMTkgMjYgMjEgMzIgMjEgMzIgMTUgMzAgMTUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9''@;'; put 'put ''IjggMzAgNCAzMCA0IDMyIDEwIDMyIDEwIDI2IDggMjYgOCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTkgMzAgMTUgMzAgMTUgMzIgMjEgMzIgMjEgMjYgMTkg''@;'; put 'put ''MjYgMTkgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjMwIDMwIDI2IDMwIDI2IDMyIDMyIDMyIDMyIDI2IDMwIDI2IDMwIDMwIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDhIMTV2Mmg0TDE5LDkuODksMjEsNi41VjRIMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYWxlcnRlZCIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjQiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQi''@;'; put 'put ''IHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI0IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjQiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIxNSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtNSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC02Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNiIgeT0iNCIgd2lkdGg9IjYiIGhlaWdo''@;'; put 'put ''dD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNyIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjYiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC04Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIy''@;'; put 'put ''NiIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTkiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjQiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI0IiB5PSIyNiIgd2lk''@;'; put 'put ''dGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI2IiB5''@;'; put 'put ''PSIxNSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC03LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUsMTBoNEwxOSw5Ljg5LDIxLDYuNVY0SDE1WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtOC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''OS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNCIgeT0iNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjE1''@;'; put 'put ''IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNCIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIx''@;'; put 'put ''NSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC01LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC02LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI2IiB5PSIxNSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC03LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI2IiB5''@;'; put 'put ''PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC04LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC05LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZUJ1aWxkaW5nPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOS44OCwzSDYuMTJBMi4xMiwyLjEyLDAsMCwwLDQsNS4xMlYzM0gyMlY1LjEyQTIuMTIsMi4xMiwwLDAsMCwxOS44OCwzWk0yMCwz''@;'; put 'put ''MUgxN1YyOEg5djNINlY1LjEyQS4xMi4xMiwwLDAsMSw2LjEyLDVIMTkuODhhLjEyLjEyLDAsMCwxLC4xMi4xMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iOCIgd2lkdGg9''@;'; put 'put ''IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5''@;'; put 'put ''PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IHg9IjgiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1iYWRnZWQi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMjMiIHdpZHRoPSIyIiBoZWln''@;'; put 'put ''aHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEyLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0i''@;'; put 'put ''MTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE1LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTYtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNy0tYmFkZ2VkIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCB4PSIyMyIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE4LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTktLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLDEzLjQzVjMxSDIzdjJIMzNWMTIuODdBNy40NSw3LjQ1LDAsMCwxLDMxLDEzLjQzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMjAtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yMS0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cmVjdCB4''@;'; put 'put ''PSI4IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIy''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMTgi''@;'; put 'put ''IHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC04LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC05LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1hbGVydGVkIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCB4PSIxMiIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEz''@;'; put 'put ''LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjIzIiB3''@;'; put 'put ''aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTUtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTE2LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjAsMzFIMTdWMjhIOXYzSDZWNS4xMkEuMTIuMTIsMCwwLDEsNi4xMiw1SDE5Ljg4YS4xMi4xMiwwLDAsMSwuMTIuMTJWOC4yNGwyLTMuNDFBMi4xMiwyLjEyLDAsMCwwLDE5Ljg4LDNI''@;'; put 'put ''Ni4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDIyVjE1LjM4YTMuNjgsMy42OCwwLDAsMS0yLS43NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xNy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzMSAxNS40''@;'; put 'put ''IDMxIDMxIDIzIDMxIDIzIDMzIDMzIDMzIDMzIDE1LjQgMzEgMTUuNCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTE4LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAs''@;'; put 'put ''MjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTktLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0zMSw4SDIyVjMzSDMzVjEwQTIsMiwwLDAsMCwzMSw4Wk0yNiwyNUgyNFYyM2gyWm0wLTVIMjRWMThoMlptMC01SDI0VjEzaDJabTQsMTBIMjhWMjNoMlptMC01SDI4VjE4aDJabTAtNUgyOFYxM2gyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3Ljg4LDNINi4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDlWMzBoNnYzaDVWNS4xMkEyLjEyLDIuMTIsMCwwLDAsMTcuODgsM1pNOSwyNUg3VjIzSDlabTAtNUg3VjE4SDlabTAtNUg3VjEzSDlabTAtNUg3VjhIOVptNCwxNUgxMVYy''@;'; put 'put ''M2gyWm0wLTVIMTFWMThoMlptMC01SDExVjEzaDJabTAtNUgxMVY4aDJabTQsMTVIMTVWMjNoMlptMC01SDE1VjE4aDJabTAtNUgxNVYxM2gyWm0wLTVIMTVWOGgyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3Ljg4''@;'; put 'put ''LDNINi4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDlWMzBoNnYzaDVWMTQuNjRhMy42NywzLjY3LDAsMCwxLTEtNC43NmwxLTEuNjVWNS4xMkEyLjEyLDIuMTIsMCwwLDAsMTcuODgsM1pNOSwyNUg3VjIzSDlabTAtNUg3VjE4SDlabTAtNUg3VjEzSDlabTAtNUg3VjhIOVptNCwxNUgx''@;'; put 'put ''MVYyM2gyWm0wLTVIMTFWMThoMlptMC01SDExVjEzaDJabTAtNUgxMVY4aDJabTQsMTVIMTVWMjNoMlptMC01SDE1VjE4aDJabTAtNUgxNVYxM2gyWm0wLTVIMTVWOGgyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTIyLjIzLDE1LjRsLS4yMywwVjMzSDMzVjE1LjRaTTI2LDI1SDI0VjIzaDJabTAtNUgyNFYxOGgyWm00LDVIMjhWMjNoMlptMC01SDI4VjE4aDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcuODgsM0g2LjEyQTIuMTIsMi4xMiwwLDAsMCw0LDUuMTJWMzNIOVYzMGg2djNoNVY1LjEyQTIuMTIsMi4xMiwwLDAsMCwxNy44OCwzWk05LDI1SDdWMjNIOVptMC01SDdWMThI''@;'; put 'put ''OVptMC01SDdWMTNIOVptMC01SDdWOEg5Wm00LDE1SDExVjIzaDJabTAtNUgxMVYxOGgyWm0wLTVIMTFWMTNoMlptMC01SDExVjhoMlptNCwxNUgxNVYyM2gyWm0wLTVIMTVWMThoMlptMC01SDE1VjEzaDJabTAtNUgxNVY4aDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVWMTVIMjhWMTMuMjJBNy41LDcuNSwwLDAsMSwyMi43OCw4SDIyVjMzSDMzVjEyLjg3QTcuNDcsNy40NywwLDAsMSwzMCwxMy41Wk0yNiwyNUgyNFYyM2gyWm0wLTVIMjRWMThoMlptMC01SDI0VjEz''@;'; put 'put ''aDJabTQsMTBIMjhWMjNoMlptMC01SDI4VjE4aDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLDhIMjN2Mmg4VjMxSDIzdjJIMzNWMTBBMiwyLDAsMCwwLDMxLDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTE5Ljg4LDNINi4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDIyVjUuMTJBMi4xMiwyLjEyLDAsMCwwLDE5Ljg4LDNaTTIwLDMxSDE3VjI4SDl2M0g2VjUuMTJBLjEyLjEyLDAsMCwxLDYuMTIsNUgxOS44OGEuMTIuMTIsMCwwLDEsLjEyLjEyWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iOCIgd2lkdGg9IjIi''@;'; put 'put ''IGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHJlY3QgeD0iOCIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC03Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSIxOCIgd2lkdGg9IjIiIGhl''@;'; put 'put ''aWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCB4PSIxNiIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xMiIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTMiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIyMyIgd2lkdGg9IjIi''@;'; put 'put ''IGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE0Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMyIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNSIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHJlY3QgeD0iMjciIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTYiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTE3Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xOCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjIzIiB3aWR0''@;'; put 'put ''aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTkiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIwIi8+XG4g''@;'; put 'put ''ICAgICAgICcpLEwuQ2xyU2hhcGVDUFU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIzLjA4LDIzLjA3aC0xMXYxLjVIMjMuODNhLjc1Ljc1LDAsMCwwLC43NS0uNzVWMTEuMzNoLTEuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMzIuMiwxOC4xNWEuOC44LDAsMSwwLDAtMS42SDMwdi01LjRoMi4yYS44LjgsMCwxLDAsMC0xLjZIMzBWOC4xQTIuMSwyLjEsMCwwLDAsMjcuOSw2SDI2LjM1VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2aC01LjRWMy44''@;'; put 'put ''YS44LjgsMCwxLDAtMS42LDBWNkg4LjFBMi4xLDIuMSwwLDAsMCw2LDguMVY5LjU1SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZWMjcuOUEyLjEsMi4xLDAsMCwwLDguMSwzMGgyLjY1djIuMmEuOC44''@;'; put 'put ''LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBIMjcuOUEyLjEsMi4xLDAsMCwwLDMwLDI3LjlWMjUuMTVoMi4yYS44LjgsMCwxLDAsMC0xLjZIMzB2LTUuNFpNMjgsMjcuOWEuMS4xLDAsMCwxLS4xLjFIOC4xYS4x''@;'; put 'put ''LjEsMCwwLDEtLjEtLjFWOC4xQS4xLjEsMCwwLDEsOC4xLDhIMjcuOWEuMS4xLDAsMCwxLC4xLjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEyLjA2LDI0LjU3SDIzLjgzYS43NS43NSwwLDAsMCwuNzUtLjc1''@;'; put 'put ''VjExLjMzaC0xLjVWMjMuMDdoLTExWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuMiwyMy41NUgzMHYtNS40aDIuMmEuOC44LDAsMSwwLDAtMS42SDMwVjEzLjVhNy40OSw3LjQ5''@;'; put 'put ''LDAsMCwxLTItLjI4VjI3LjlhLjEuMSwwLDAsMS0uMS4xSDguMWEuMS4xLDAsMCwxLS4xLS4xVjguMUEuMS4xLDAsMCwxLDguMSw4SDIyLjc4YTcuNDksNy40OSwwLDAsMS0uMjgtMkgxOS4zNVYzLjhhLjguOCwwLDEsMC0xLjYsMFY2aC01LjRWMy44YS44LjgsMCwxLDAtMS42LDBWNkg4LjFB''@;'; put 'put ''Mi4xLDIuMSwwLDAsMCw2LDguMVY5LjU1SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZWMjcuOUEyLjEsMi4xLDAsMCwwLDguMSwzMGgyLjY1djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJh''@;'; put 'put ''LjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBIMjcuOUEyLjEsMi4xLDAsMCwwLDMwLDI3LjlWMjUuMTVoMi4yYS44LjgsMCwxLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuMiwyMy41NUgzMHYtNS40aDIuMmEuOC44''@;'; put 'put ''LDAsMSwwLDAtMS42SDMwVjE1LjRIMjhWMjcuOWEuMS4xLDAsMCwxLS4xLjFIOC4xYS4xLjEsMCwwLDEtLjEtLjFWOC4xQS4xLjEsMCwwLDEsOC4xLDhoMTJsMS4xNS0ySDE5LjM1VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2SDguMUEyLjEsMi4x''@;'; put 'put ''LDAsMCwwLDYsOC4xVjkuNTVIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINlYyNy45QTIuMSwyLjEsMCwwLDAsOC4xLDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAs''@;'; put 'put ''MSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcuOVYyNS4xNWgyLjJhLjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMTIuMDYsMjQuNTdIMjMuODNhLjc1Ljc1LDAsMCwwLC43NS0uNzVWMTUuNGgtMS41djcuNjdoLTExWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''My0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjIsMjMuNTVIMzB2LTUuNGgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMFYxNS40SDI1djguNDFBMS4xOCwxLjE4LDAsMCwxLDI0LDI1SDEzVjIzSDIzVjE1LjRoLS43N0EzLjY4LDMuNjgsMCwwLDEsMTks''@;'; put 'put ''OS44OUwyMS4yOSw2SDE5LjM1VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2SDguMUEyLjEsMi4xLDAsMCwwLDYsOC4xVjkuNTVIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwx''@;'; put 'put ''LDAsMCwxLjZINlYyNy45QTIuMSwyLjEsMCwwLDAsOC4xLDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcuOVYyNS4xNWgyLjJhLjguOCww''@;'; put 'put ''LDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQu''@;'; put 'put ''NzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yLDIzLjU1SDMwdi01LjRoMi4yYS44''@;'; put 'put ''LjgsMCwxLDAsMC0xLjZIMzBWMTMuNWE3LjQ2LDcuNDYsMCwwLDEtNS0xLjkyVjIzLjgxQTEuMTgsMS4xOCwwLDAsMSwyNCwyNUgxM1YyM0gyM1YxMWgxLjQyQTcuNDYsNy40NiwwLDAsMSwyMi41LDZIMTkuMzVWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSwwLTEu''@;'; put 'put ''NiwwVjZIOC4xQTIuMSwyLjEsMCwwLDAsNiw4LjFWOS41NUgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2VjI3LjlBMi4xLDIuMSwwLDAsMCw4LjEsMzBoMi42NXYyLjJhLjguOCwwLDEsMCwxLjYsMFYz''@;'; put 'put ''MGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwSDI3LjlBMi4xLDIuMSwwLDAsMCwzMCwyNy45VjI1LjE1aDIuMmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRn''@;'; put 'put ''ZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yLDE4LjE1YS44LjgsMCwxLDAsMC0x''@;'; put 'put ''LjZIMzB2LTUuNGgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMFY4LjFBMi4xLDIuMSwwLDAsMCwyNy45LDZIMjYuMzVWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2SDguMUEyLjEsMi4xLDAsMCwwLDYs''@;'; put 'put ''OC4xVjkuNTVIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINlYyNy45QTIuMSwyLjEsMCwwLDAsOC4xLDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiww''@;'; put 'put ''VjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcuOVYyNS4xNWgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMHYtNS40Wk0yNSwyMy44MUExLjE4LDEuMTgsMCwwLDEsMjQsMjVIMTNWMjNIMjNWMTFoMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZU1lbW9yeT0oMCxFLmNsckljb25TVkcpKCc8cmVjdCB4PSI4IiB5PSIxMiIgd2lkdGg9IjQiIGhlaWdodD0iOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxy''@;'; put 'put ''ZWN0IHg9IjE2IiB5PSIxMiIgd2lkdGg9IjQiIGhlaWdodD0iOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI0IiB5PSIxMiIgd2lkdGg9IjQiIGhlaWdodD0iOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSwyN0g0VjE3SDJWMjdhMiwyLDAsMCwwLDIsMkgxNi42MVYyNS41NWgyLjI2VjI0SDE1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0z''@;'; put 'put ''Miw3SDRBMiwyLDAsMCwwLDIsOXY0SDRWOUgzMnY0aDJWOUEyLDIsMCwwLDAsMzIsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMjdIMTl2MkgzMmEyLDIsMCwwLDAsMi0yVjE3SDMyWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTE1LDI3SDRWMTdIMlYyN2EyLDIsMCwwLDAsMiwySDE2LjYxVjI1LjU1aDIuMjZWMjRIMTVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDE3VjI3SDE5djJI''@;'; put 'put ''MzJhMiwyLDAsMCwwLDItMlYxN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksMTMuNTZBMy42NiwzLjY2LDAsMCwxLDE4LjU3LDEySDE2djhoNFYxNC42NEEzLjY3LDMuNjcs''@;'; put 'put ''MCwwLDEsMTksMTMuNTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjQiIHk9IjE1LjQiIHdpZHRoPSI0IiBoZWlnaHQ9IjQuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDlIMTkuNTZsMS4xNS0ySDRBMiwyLDAsMCwwLDIsOXY0SDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTctLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxyZWN0IHg9IjE2IiB5PSIxMiIgd2lkdGg9IjQiIGhlaWdodD0iOCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUsMjdINFYxN0gyVjI3YTIsMiwwLDAsMCwyLDJIMTYu''@;'; put 'put ''NjFWMjUuNTVoMi4yNlYyNEgxNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDE3VjI3SDE5djJIMzJhMiwyLDAsMCwwLDItMlYxN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDEzLjIyQTcuNDYsNy40NiwwLDAsMSwyNS41MSwxMkgyNHY4aDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDlIMjMuMTNhNy40NSw3LjQ1LDAsMCwxLS41NS0ySDRBMiwyLDAsMCwwLDIsOXY0SDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMw''@;'; put 'put ''IiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQsMTNWOWEyLDIsMCwwLDAtMi0ySDRBMiwyLDAsMCwwLDIsOXY0SDR2NEgyVjI3YTIsMiww''@;'; put 'put ''LDAsMCwyLDJIMTYuNjFWMjUuNTVIMTlWMjlIMzJhMiwyLDAsMCwwLDItMlYxN0gzMlYxM1pNMTIsMjBIOFYxMmg0Wm04LDBIMTZWMTJoNFptOCwwSDI0VjEyaDRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTdW''@;'; put 'put ''MTUuMDdIMjhWMjBIMjRWMTUuMDdIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDIwLDE0LjMxVjIwSDE2VjEyaDIuNjFBMy42OCwzLjY4LDAsMCwxLDE5LDkuNTVMMjAuNTIsN0g0QTIsMiwwLDAsMCwyLDl2NEg0djRIMlYyN2EyLDIsMCwwLDAsMiwySDE2LjYxVjI1LjU1SDE5VjI5SDMyYTIsMiww''@;'; put 'put ''LDAsMCwyLTJWMTdaTTEyLDIwSDhWMTJoNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NS44bC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkxSDMzLjY4YTEuMjgs''@;'; put 'put ''MS4yOCwwLDAsMCwxLjEtMS45MUwyOS4wNi44QTEuMjgsMS4yOCwwLDAsMCwyNi44NS44WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDE3VjEzLjIyYTcuMzMs''@;'; put 'put ''Ny4zMywwLDAsMS00LDBWMjBIMjRWMTJoMS41MWE3LjQ4LDcuNDgsMCwwLDEtMi45NC01SDRBMiwyLDAsMCwwLDIsOXY0SDR2NEgyVjI3YTIsMiwwLDAsMCwyLDJIMTYuNjFWMjUuNTVIMTlWMjlIMzJhMiwyLDAsMCwwLDItMlYxN1pNMTIsMjBIOFYxMmg0Wm04LDBIMTZWMTJoNFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4g''@;'; put 'put ''ICAgICAgICcpLEwuQ2xyU2hhcGVEYXRhQ2x1c3Rlcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYuNSw0LjA4QzIyLjc3LDQuMDgsMTksNS40LDE5LDcuOTFWOS41YTE4Ljc1LDE4Ljc1LDAsMCwxLDIsLjJWNy45MWMwLS42NSwyLjA5LTEuODQsNS41LTEuODRTMzIsNy4yNywzMiw3''@;'; put 'put ''LjkxVjE4LjI0YzAsLjU0LTEuNDYsMS40NC0zLjksMS43M3YyYzMuMTMtLjMyLDUuOS0xLjYsNS45LTMuNzVWNy45MUMzNCw1LjQsMzAuMjMsNC4wOCwyNi41LDQuMDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTQsMTguMjRWNy45MWMwLS42NSwyLjA5LTEuODQsNS41LTEuODRTMTUsNy4yNywxNSw3LjkxVjkuN2ExOC43NSwxOC43NSwwLDAsMSwyLS4yVjcuOTFjMC0yLjUyLTMuNzctMy44NC03LjUtMy44NFMyLDUuNCwyLDcuOTFWMTguMjRDMiwyMC40LDQuNzcsMjEuNjcsNy45LDIyVjIwQzUuNDYs''@;'; put 'put ''MTkuNjgsNCwxOC43OCw0LDE4LjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxMC44NWMtNC45MywwLTguNjUsMS44OC04LjY1LDQuMzhWMjcuNTRjMCwyLjUsMy43Miw0LjM4LDguNjUsNC4zOHM4LjY1''@;'; put 'put ''LTEuODgsOC42NS00LjM4VjE1LjIzQzI2LjY1LDEyLjczLDIyLjkzLDEwLjg1LDE4LDEwLjg1Wm02LjY1LDcuNjdjLS44NSwxLTMuNDIsMi02LjY1LDJBMTQuNDksMTQuNDksMCwwLDEsMTQsMjB2MS40NmExNi4zMywxNi4zMywwLDAsMCw0LC40NywxMi43NiwxMi43NiwwLDAsMCw2LjY1LTEu''@;'; put 'put ''NTZ2My4xMmMtLjg1LDEtMy40MiwyLTYuNjUsMmExNC40OSwxNC40OSwwLDAsMS00LS41M3YxLjQ2YTE2LjMzLDE2LjMzLDAsMCwwLDQsLjQ3LDEyLjc2LDEyLjc2LDAsMCwwLDYuNjUtMS41NnYyLjI5YzAsLjk1LTIuNjUsMi4zOC02LjY1LDIuMzhzLTYuNjUtMS40My02LjY1LTIuMzhWMTUu''@;'; put 'put ''MjNjMC0uOTUsMi42NS0yLjM4LDYuNjUtMi4zOHM2LjY1LDEuNDMsNi42NSwyLjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDE4LjI0VjcuOTFjMC0uNjUsMi4wOS0xLjg0LDUuNS0xLjg0UzE1LDcuMjcs''@;'; put 'put ''MTUsNy45MVY5LjdhMTguNzUsMTguNzUsMCwwLDEsMi0uMlY3LjkxYzAtMi41Mi0zLjc3LTMuODQtNy41LTMuODRTMiw1LjQsMiw3LjkxVjE4LjI0QzIsMjAuNCw0Ljc3LDIxLjY3LDcuOSwyMlYyMEM1LjQ2LDE5LjY4LDQsMTguNzgsNCwxOC4yNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuNjUsMTguNTJjLS44NSwxLTMuNDIsMi02LjY1LDJBMTQuNDksMTQuNDksMCwwLDEsMTQsMjB2MS40NmExNi4zMywxNi4zMywwLDAsMCw0LC40NywxMi43NiwxMi43NiwwLDAs''@;'; put 'put ''MCw2LjY1LTEuNTZ2My4xMmMtLjg1LDEtMy40MiwyLTYuNjUsMmExNC40OSwxNC40OSwwLDAsMS00LS41M3YxLjQ2YTE2LjMzLDE2LjMzLDAsMCwwLDQsLjQ3LDEyLjc2LDEyLjc2LDAsMCwwLDYuNjUtMS41NnYyLjI5YzAsLjk1LTIuNjUsMi4zOC02LjY1LDIuMzhzLTYuNjUtMS40My02LjY1''@;'; put 'put ''LTIuMzhWMTUuMjNjMC0uOTUsMi42NS0yLjM4LDYuNjUtMi4zOGwuNzUsMGEzLjY5LDMuNjksMCwwLDEtLjA4LTJsLS42NiwwYy00LjkzLDAtOC42NSwxLjg4LTguNjUsNC4zOFYyNy41NGMwLDIuNSwzLjcyLDQuMzgsOC42NSw0LjM4czguNjUtMS44OCw4LjY1LTQuMzhWMTUuNGgtMloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNC44Yy0xLjc1LjYzLTMsMS42OC0zLDMuMTJWOS41bC4yNSwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMydjIuODRjMCwuNTQtMS40NiwxLjQ0LTMuOSwxLjczdjJjMy4xMy0uMzIsNS45LTEuNiw1LjktMy43NVYxNS4zOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMTguMjRWNy45MWMwLS42NSwyLjA5LTEuODQsNS41LTEuODRTMTUsNy4yNywxNSw3LjkxVjkuN2ExOC43NSwxOC43''@;'; put 'put ''NSwwLDAsMSwyLS4yVjcuOTFjMC0yLjUyLTMuNzctMy44NC03LjUtMy44NFMyLDUuNCwyLDcuOTFWMTguMjRDMiwyMC40LDQuNzcsMjEuNjcsNy45LDIyVjIwQzUuNDYsMTkuNjgsNCwxOC43OCw0LDE4LjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTAuODVjLTQuOTMsMC04LjY1LDEuODgtOC42NSw0LjM4VjI3LjU0YzAsMi41LDMuNzIsNC4zOCw4LjY1LDQuMzhzOC42NS0xLjg4LDguNjUtNC4zOFYxNS4yM0MyNi42NSwxMi43MywyMi45MywxMC44NSwxOCwxMC44''@;'; put 'put ''NVptNi42NSw3LjY3Yy0uODUsMS0zLjQyLDItNi42NSwyQTE0LjQ5LDE0LjQ5LDAsMCwxLDE0LDIwdjEuNDZhMTYuMzMsMTYuMzMsMCwwLDAsNCwuNDcsMTIuNzYsMTIuNzYsMCwwLDAsNi42NS0xLjU2djMuMTJjLS44NSwxLTMuNDIsMi02LjY1LDJhMTQuNDksMTQuNDksMCwwLDEtNC0uNTN2''@;'; put 'put ''MS40NmExNi4zMywxNi4zMywwLDAsMCw0LC40NywxMi43NiwxMi43NiwwLDAsMCw2LjY1LTEuNTZ2Mi4yOWMwLC45NS0yLjY1LDIuMzgtNi42NSwyLjM4cy02LjY1LTEuNDMtNi42NS0yLjM4VjE1LjIzYzAtLjk1LDIuNjUtMi4zOCw2LjY1LTIuMzhzNi42NSwxLjQzLDYuNjUsMi4zOFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIxLDcuOTFjMC0uMzMuNTUtLjgsMS41NC0xLjE4LDAtLjI0LDAtLjQ4LDAtLjczYTcuNTIsNy41MiwwLDAsMSwuMTQtMS40MUMyMC41NSw1LjE5''@;'; put 'put ''LDE5LDYuMywxOSw3LjkxVjkuNWExOC43NSwxOC43NSwwLDAsMSwyLC4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJ2NWMwLC41NC0xLjQ2LDEuNDQtMy45LDEuNzN2''@;'; put 'put ''MmMzLjEzLS4zMiw1LjktMS42LDUuOS0zLjc1di01LjlBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LjUsNC4wOEMyMi43Nyw0LjA4LDE5LDUuNCwxOSw3LjkxVjkuNDhjNS4zLjI2LDksMi42LDksNS43NnY2LjdsLjA1LjA2''@;'; put 'put ''YzMuMTMtLjMyLDUuOS0xLjYsNS45LTMuNzVWNy45MUMzNCw1LjQsMzAuMjMsNC4wOCwyNi41LDQuMDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsOS40OFY3LjkxYzAtMi41Mi0zLjc3LTMuODQtNy41LTMuODRT''@;'; put 'put ''Miw1LjQsMiw3LjkxVjE4LjI0QzIsMjAuNCw0Ljc3LDIxLjY3LDcuOSwyMkw4LDIxLjkzdi02LjdDOCwxMi4wOCwxMS43LDkuNzQsMTcsOS40OFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxMC44NWMtNC45Myww''@;'; put 'put ''LTguNjUsMS44OC04LjY1LDQuMzhWMjcuNTRjMCwyLjUsMy43Miw0LjM4LDguNjUsNC4zOHM4LjY1LTEuODgsOC42NS00LjM4VjI1LjM4QTEzLjU4LDEzLjU4LDAsMCwxLDE4LDI4YTE2Ljc3LDE2Ljc3LDAsMCwxLTYtMVYyNS4yN2ExNC41LDE0LjUsMCwwLDAsNiwxLjE3YzQuMjEsMCw3LjY1''@;'; put 'put ''LTEuMjMsOC42My0zLjIzVjIwLjQ3QzI0LjgsMjIsMjEuNzIsMjMsMTgsMjNhMTYuNzcsMTYuNzcsMCwwLDEtNi0xVjIwLjIzYTE0LjUsMTQuNSwwLDAsMCw2LDEuMTdjNC4yMSwwLDcuNjUtMS4xMSw4LjYzLTMuMTFWMTUuMjNDMjYuNjUsMTIuNzMsMjIuOTMsMTAuODUsMTgsMTAuODVaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsOS40OFY3LjkxYzAtMi41Mi0zLjc3LTMuODQtNy41LTMuODRTMiw1LjQsMiw3LjkxVjE4LjI0QzIsMjAuNCw0Ljc3LDIxLjY3LDcuOSwyMkw4LDIxLjkzdi02LjdDOCwxMi4w''@;'; put 'put ''OCwxMS43LDkuNzQsMTcsOS40OFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwxMy41NmEzLjY4LDMuNjgsMCwwLDEtLjM5LTIuN2wtLjY2LDBjLTQuOTMsMC04LjY1LDEuODgtOC42''@;'; put 'put ''NSw0LjM4VjI3LjU0YzAsMi41LDMuNzIsNC4zOCw4LjY1LDQuMzhzOC42NS0xLjg4LDguNjUtNC4zOFYyNS4zOEExMy41OCwxMy41OCwwLDAsMSwxOCwyOGExNi43NywxNi43NywwLDAsMS02LTFWMjUuMjdhMTQuNSwxNC41LDAsMCwwLDYsMS4xN2M0LjIxLDAsNy42NS0xLjIzLDguNjMtMy4y''@;'; put 'put ''M1YyMC40N0MyNC44LDIyLDIxLjcyLDIzLDE4LDIzYTE2Ljc3LDE2Ljc3LDAsMCwxLTYtMVYyMC4yM2ExNC41LDE0LjUsMCwwLDAsNiwxLjE3YzQuMjEsMCw3LjY1LTEuMTEsOC42My0zLjExVjE1LjRIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LDEzLjU2WiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDQuOGMtMS43NS42My0zLDEuNjgtMywzLjEyVjkuNDhsLjI3LDBaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgyOHY2LjUzbC4wNS4wNmMzLjEzLS4zMiw1LjktMS42LDUuOS0zLjc1VjE1LjM4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNS0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LDkuNDhWNy45MWMwLTIuNTItMy43Ny0zLjg0LTcuNS0zLjg0UzIsNS40LDIsNy45MVYxOC4yNEMyLDIwLjQsNC43NywyMS42Nyw3LjksMjJMOCwyMS45M3YtNi43QzgsMTIuMDgsMTEuNyw5Ljc0LDE3LDku''@;'; put 'put ''NDhaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDEwLjg1Yy00LjkzLDAtOC42NSwxLjg4LTguNjUsNC4zOFYyNy41NGMwLDIuNSwzLjcyLDQuMzgsOC42NSw0LjM4czguNjUtMS44OCw4''@;'; put 'put ''LjY1LTQuMzhWMjUuMzhBMTMuNTgsMTMuNTgsMCwwLDEsMTgsMjhhMTYuNzcsMTYuNzcsMCwwLDEtNi0xVjI1LjI3YTE0LjUsMTQuNSwwLDAsMCw2LDEuMTdjNC4yMSwwLDcuNjUtMS4yMyw4LjYzLTMuMjNWMjAuNDdDMjQuOCwyMiwyMS43MiwyMywxOCwyM2ExNi43NywxNi43NywwLDAsMS02''@;'; put 'put ''LTFWMjAuMjNhMTQuNSwxNC41LDAsMCwwLDYsMS4xN2M0LjIxLDAsNy42NS0xLjExLDguNjMtMy4xMVYxNS4yM0MyNi42NSwxMi43MywyMi45MywxMC44NSwxOCwxMC44NVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMjIuNSw2YTcuNTIsNy41MiwwLDAsMSwuMTQtMS40QzIwLjU1LDUuMTksMTksNi4zLDE5LDcuOTFWOS40OGExNS4zMywxNS4zMywwLDAsMSw1LDFBNy40Niw3LjQ2LDAsMCwxLDIyLjUsNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNDlBNy40Nyw3LjQ3LDAsMCwxLDI3LjM1LDEzYTQsNCwwLDAsMSwuNywyLjIzdjYuN2wuMDUuMDZjMy4xMy0uMzIsNS45LTEuNiw1LjktMy43NVYxMi4zM0E3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNDlaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI1Ljk5IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIv''@;'; put 'put ''PlxuICAgICAgICAnKSxMLkNsclNoYXBlUmVzb3VyY2VQb29sPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy42OCwxNS40SDMxLjczYTE0LDE0LDAsMCwxLC4yMiwxLjZIMTcuNDlMOC4zLDI4LjA3QTE0LDE0LDAsMCwxLDIyLjA5LDQuNjJsMS0xLjc2QTE2LDE2LDAsMSwwLDM0LDE4''@;'; put 'put ''YTE2LDE2LDAsMCwwLS4yMy0yLjYxWk0xOCwzMmExMy45MSwxMy45MSwwLDAsMS04LjE2LTIuNjVMMTguNDMsMTlIMzEuOTVBMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTQsMThhMTQsMTQsMCwwLDEsMjcuOTUtMUgxNy40OUw4LjMsMjguMDdBMTQsMTQsMCwwLDEsNCwxOFpNMTgs''@;'; put 'put ''MzJhMTMuOTEsMTMuOTEsMCwwLDEtOC4xNi0yLjY1TDE4LjQzLDE5SDMxLjk1QTE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS4yLDEzLjRhMTMuOTEsMTMuOTEsMCwwLDEsLjc1''@;'; put 'put ''LDMuNkgxNy40OUw4LjMsMjguMDdBMTQsMTQsMCwwLDEsMjIuNjEsNC44YTcuNDMsNy40MywwLDAsMSwuNTgtMS45MiwxNi4wNiwxNi4wNiwwLDEsMCw5LjkzLDkuOTNBNy40Myw3LjQzLDAsMCwxLDMxLjIsMTMuNFpNMTgsMzJhMTMuOTEsMTMuOTEsMCwwLDEtOC4xNi0yLjY1TDE4LjQzLDE5''@;'; put 'put ''SDMxLjk1QTE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTguNTcsMzAuOUExNiwxNiwwLDAsMCwzMy45NSwxOUgxOC40M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0z''@;'; put 'put ''My45NSwxN0ExNiwxNiwwLDEsMCw3LDI5LjZMMTcuNDksMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOC41NywzMC45QTE2LDE2LDAsMCwwLDMzLjk1LDE5SDE4LjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy45NSwxN2ExNS45MSwxNS45MSwwLDAsMC0uODQtNC4xOCw3LjQ5LDcuNDksMCwwLDEtOS45Mi05Ljk0QTE2LDE2LDAsMCwwLDcsMjkuNkwxNy40OSwxN1oiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNOC41NywzMC45QTE2LDE2LDAsMCwwLDMzLjk1LDE5SDE4LjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjk1LDE3YTE2LDE2LDAsMCwwLS4xOC0xLjYxSDIyLjIz''@;'; put 'put ''QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bDQuMDYtN0ExNiwxNiwwLDAsMCw3LDI5LjZMMTcuNDksMTdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUEx''@;'; put 'put ''LjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+''@;'; put 'put ''XG4gICAgICAgICcpLEwuQ2xyU2hhcGVTaGllbGRDaGVjaz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5''@;'; put 'put ''LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVpNMzAsMTUuOTNjMCwxMS0xMCwxNS42MS0xMiwxNi40My0yLS44Mi0xMi01LjQ0LTEyLTE2''@;'; put 'put ''LjQzVjkuMTRhNDcuNTQsNDcuNTQsMCwwLDAsNi4xOC0yLjI1LDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODItMyw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLDNBNDcuNTQsNDcuNTQsMCwwLDAsMzAsOS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMTAuODgsMTYuODdhMSwxLDAsMCwwLTEuNDEsMS40MWw2LDZMMjYuNCwxMy43N0ExLDEsMCwwLDAsMjUsMTIuMzNsLTkuNDcsOS4xOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40''@;'; put 'put ''NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVptLTQuNTcsNi42NUwxNS41MSwyNC45LDkuMTksMTguNTdhMS40LDEuNCwwLDAsMSwyLTJMMTUuNTQsMjEsMjQuNzMsMTJhMS40LDEuNCwwLDEsMSwyLDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0xIi8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVTaGllbGQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjI1LDcuNGE0My43OSw0My43OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUsMCwwLDEtNi4wOC0zLjIxTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgs''@;'; put 'put ''My4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjcuNTlaTTMwLDE1LjkzYzAsMTEtMTAsMTUuNjEtMTIsMTYuNDMtMi0uODItMTIt''@;'; put 'put ''NS40NC0xMi0xNi40M1Y5LjE0YTQ3LjU0LDQ3LjU0LDAsMCwwLDYuMTgtMi4yNSw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLTMsNDguMjMsNDguMjMsMCwwLDAsNS44MiwzQTQ3LjU0LDQ3LjU0LDAsMCwwLDMwLDkuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDE1LjR2LjUzYzAsMTEtMTAsMTUuNjEtMTIsMTYuNDMtMi0uODItMTItNS40NC0xMi0xNi40M1Y5LjE0YTQ3LjU0LDQ3LjU0LDAsMCwwLDYuMTgtMi4yNSw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLTNjMSwuNjQsMi4yLDEuMjcsMy40Mywx''@;'; put 'put ''Ljg5bDEtMS43NGE0MS4xLDQxLjEsMCwwLDEtMy44OS0yLjE4TDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwx''@;'; put 'put ''My42Ni01LjA1LDEzLjY2LTE4LjQ1VjE1LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0z''@;'; put 'put ''MCwxMy41djIuNDNjMCwxMS0xMCwxNS42MS0xMiwxNi40My0yLS44Mi0xMi01LjQ0LTEyLTE2LjQzVjkuMTRhNDcuNTQsNDcuNTQsMCwwLDAsNi4xOC0yLjI1LDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODItMyw0Ni4xOSw0Ni4xOSwwLDAsMCw0LjUxLDIuNDJjMC0uMSwwLS4xOSwwLS4yOWE3LjQ5''@;'; put 'put ''LDcuNDksMCwwLDEsLjIzLTEuODMsNDEuNjEsNDEuNjEsMCwwLDEtNC4xOS0yLjMzTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0''@;'; put 'put ''LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9''@;'; put 'put ''IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjI1LDcuNGE0My43OSw0My43OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUsMCwwLDEtNi4wOC0zLjIxTDE4LDEu''@;'; put 'put ''NWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjcuNTlaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMi40Myw0YTQxLjEsNDEuMSwwLDAsMS0zLjg5LTIuMThMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQz''@;'; put 'put ''Ljc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWMTUuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0''@;'; put 'put ''ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDcsNy40NywwLDAsMS03LjI3LTkuMzMsNDEuNjEsNDEuNjEsMCwwLDEtNC4xOS0yLjMzTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYu''@;'; put 'put ''MDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAg''@;'; put 'put ''JyksTC5DbHJTaGFwZVNoaWVsZFg9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjI1LDcuNGE0My43OSw0My43OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUsMCwwLDEtNi4wOC0zLjIxTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0''@;'; put 'put ''Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjcuNTlaTTMwLDE1LjkzYzAsMTEtMTAsMTUuNjEtMTIsMTYuNDMtMi0uODItMTItNS40NC0xMi0xNi40M1Y5LjE0YTQ3LjU0''@;'; put 'put ''LDQ3LjU0LDAsMCwwLDYuMTgtMi4yNSw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLTMsNDguMjMsNDguMjMsMCwwLDAsNS44MiwzQTQ3LjU0LDQ3LjU0LDAsMCwwLDMwLDkuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTIyLjgxLDEwLjc5LDE4LDE1LjYxbC00LjgxLTQuODFhMSwxLDAsMCwwLTEuNDEsMS40MUwxNi41OSwxN2wtNC44MSw0LjgxYTEsMSwwLDEsMCwxLjQxLDEuNDFMMTgsMTguNDNsNC44MSw0LjgxYTEsMSwwLDAsMCwxLjQxLTEuNDFMMTkuNDEsMTdsNC44MS00LjgxYTEsMSwwLDAsMC0x''@;'; put 'put ''LjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjI1LDcuNGE0My43OSw0My43OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUsMCwwLDEtNi4wOC0zLjIxTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwx''@;'; put 'put ''LTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjcuNTlaTTI0LjUxLDIxLjU1YTEuNCwxLjQsMCwwLDEtMiwyTDE4LDE5''@;'; put 'put ''bC00LjUzLDQuNTNhMS40MywxLjQzLDAsMCwxLTIsMCwxLjQsMS40LDAsMCwxLDAtMkwxNiwxN2wtNC41My00LjUzYTEuNCwxLjQsMCwxLDEsMi0yTDE4LDE1bDQuNTMtNC41M2ExLjQsMS40LDAsMCwxLDIsMkwyMCwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''Lz5cbiAgICAgICAgJyksTC5DbHJTaGFwZUltcG9ydD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjgsNEgxNC44N0w4LDEwLjg2VjE1aDJWMTMuNjFoNy42MVY2SDI4VjMwSDhhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDI4LDRaTTE2LDEySDEwdi0u''@;'; put 'put ''MzJMMTUuNyw2SDE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45NCwyNi4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDE5LDIybC01LjY4LTUuNjhhMSwxLDAsMCwwLTEuNDEsMS40MUwxNS4yLDIxSDNhMSwx''@;'; put 'put ''LDAsMSwwLDAsMkgxNS4yM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuOTQsMjYuMjhhMSwxLDAsMSwwLDEuNDEsMS40MUwxOSwyMmwtNS42OC01LjY4YTEsMSwwLDAsMC0xLjQxLDEuNDFMMTUuMiwyMUgz''@;'; put 'put ''YTEsMSwwLDEsMCwwLDJIMTUuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDE1LjRWMzBIOGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTUuNFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAsMTMuNjFoNy42MVY2aDMuNjhsMS4xNS0ySDE0Ljg3TDgsMTAuODZWMTVoMlptMC0xLjkyTDE1LjcsNkgxNnY2SDEwWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4''@;'; put 'put ''LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuOTQsMjYuMjhhMSwxLDAsMSwwLDEuNDEsMS40MUwxOSwyMmwtNS42''@;'; put 'put ''OC01LjY4YTEsMSwwLDAsMC0xLjQxLDEuNDFMMTUuMiwyMUgzYTEsMSwwLDEsMCwwLDJIMTUuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxMy4yMlYzMEg4YTIsMiwwLDAs''@;'; put 'put ''MCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxMy41QTcuNDksNy40OSwwLDAsMSwyOCwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLDEzLjYxaDcuNjFWNkgyMi41YTcuNDks''@;'; put 'put ''Ny40OSwwLDAsMSwuMjgtMkgxNC44N0w4LDEwLjg2VjE1aDJabTAtMS45MkwxNS43LDZIMTZ2NkgxMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLDIxYTEsMSwwLDEsMCwwLDJIOFYyMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0yOCw0SDE0Ljg3TDgsMTAuODZWMjFIMTUuMmwtMy4yNS0zLjI1YTEsMSwwLDAsMSwxLjQxLTEuNDFMMTksMjJsLTUuNjgsNS42OGExLDEsMCwwLDEtMS40MS0xLjQxTDE1LjIzLDIzSDh2N2EyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNkEyLDIs''@;'; put 'put ''MCwwLDAsMjgsNFpNMTYsMTJIMTB2LS4zMkwxNS42OSw2SDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMsMjFhMSwxLDAsMSwwLDAsMkg4VjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjIzLDE1LjRBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjIuNDUsNEgxNC44N0w4LDEwLjg2VjIxSDE1LjJsLTMuMjUtMy4yNWExLDEsMCwwLDEsMS40MS0xLjQxTDE5LDIybC01LjY4LDUuNjhhMSwxLDAs''@;'; put 'put ''MCwxLTEuNDEtMS40MUwxNS4yMywyM0g4djdhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjE1LjRaTTE2LDEySDEwdi0uMzJMMTUuNjksNkgxNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLDIxYTEsMSwwLDEsMCwwLDJIOFYyMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSw2''@;'; put 'put ''YTcuNDksNy40OSwwLDAsMSwuMjgtMkgxNC44N0w4LDEwLjg2VjIxSDE1LjJsLTMuMjUtMy4yNWExLDEsMCwwLDEsMS40MS0xLjQxTDE5LDIybC01LjY4LDUuNjhhMSwxLDAsMCwxLTEuNDEtMS40MUwxNS4yMywyM0g4djdhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjEzLjVBNy41''@;'; put 'put ''LDcuNSwwLDAsMSwyMi41LDZaTTE2LDEySDEwdi0uMzJMMTUuNjksNkgxNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVFeHBvcnQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTYsMTMuNjFoNy42MVY2SDI0djguMzhoMlY2YTIsMiwwLDAsMC0yLTJIMTAuODdMNCwxMC44N1YzMGEy''@;'; put 'put ''LDIsMCwwLDAsMiwySDI0YTIsMiwwLDAsMCwyLTJINlptMC0xLjkyTDExLjY5LDZIMTJ2Nkg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4zMiwxNi4zNWExLDEsMCwwLDAtMS40MSwxLjQxTDMwLjE2LDIx''@;'; put 'put ''SDE4YTEsMSwwLDAsMCwwLDJIMzAuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDM0LDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4zMiwxNi4zNWExLDEsMCwwLDAtMS40MSwxLjQxTDMw''@;'; put 'put ''LjE2LDIxSDE4YTEsMSwwLDAsMCwwLDJIMzAuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDM0LDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik02LDEzLjYxaDcu''@;'; put 'put ''NjFWNmg3LjY4bDEuMTUtMkgxMC44N0w0LDEwLjg3VjMwYTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMkg2Wm0wLTEuOTJMMTEuNjksNkgxMnY2SDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4zMiwxNi4zNWExLDEsMCwwLDAtMS40MSwxLjQxTDMwLjE2LDIxSDE4YTEsMSwwLDAsMCwwLDJIMzAuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDM0LDIyWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMTIuMzRhNy41Myw3LjUzLDAsMCwxLTItMS44NXYzLjg5aDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik02LDEzLjYxaDcuNjFWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkgxMC44N0w0LDEwLjg3VjMwYTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMkg2Wm0wLTEuOTJMMTEuNjksNkgxMnY2SDZaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJh''@;'; put 'put ''ZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsMjJhMSwxLDAsMCwxLDEtMWg4VjZhMiwyLDAsMCwwLTItMkgxMC44N0w0LDEwLjg2VjMwYTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMlYyM0gxOEExLDEsMCwwLDEsMTcsMjJaTTEyLDEySDZ2LS4zMkwxMS42OSw2SDEyWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjMyLDE2LjM1YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzEuMTYsMjFIMjZ2Mmg1LjE5bC0zLjI4LDMuMjhhMSwxLDAsMSwwLDEuNDEsMS40MUwzNSwyMloiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS4zMiwxNi4zNWExLDEsMCwwLDAtMS40MSwxLjQxTDMxLjE2LDIxSDI2djJoNS4xOWwtMy4yOCwzLjI4YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzUsMjJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsMjJhMSwxLDAsMCwxLDEtMWg4VjE1LjRIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjIuNDUsNEgxMC44N0w0LDEwLjg2VjMwYTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAs''@;'; put 'put ''MCwwLDItMlYyM0gxOEExLDEsMCwwLDEsMTcsMjJaTTEyLDEySDZ2LS4zMkwxMS42OSw2SDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwx''@;'; put 'put ''LjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTI5LjMyLDE2LjM1YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzEuMTYsMjFIMjZ2Mmg1LjE5bC0zLjI4LDMuMjhhMSwxLDAsMSwwLDEuNDEsMS40MUwzNSwyMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsMjJhMSwxLDAsMCwxLDEtMWg4VjEyLjM0QTcuNDYsNy40NiwwLDAsMSwyMi43OCw0SDEwLjg3TDQsMTAuODZWMzBhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0yVjIzSDE4QTEsMSwwLDAsMSwxNywyMlpNMTIsMTJINnYtLjMyTDExLjY5''@;'; put 'put ''LDZIMTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1iYWRnZSIvPlxuICAgICAgICAnKSxMLkNsclNoYXBlVXBsb2FkQ2xvdWQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLjMxLDEzYzAtLjEsMC0uMjEsMC0uMzJhMTAuMjYsMTAuMjYsMCwwLDAtMTAuNDUtMTAsMTAuNDcsMTAuNDcsMCwwLDAtOS42LDYuMUE5Ljc0LDkuNzQsMCww''@;'; put 'put ''LDAsMS42LDE4LjQsOS42Miw5LjYyLDAsMCwwLDExLjI1LDI4SDE1VjI2SDExLjI1QTcuNjUsNy42NSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzYTguNDMsOC40MywwLDAsMSw4LTUuNCw4LjI2LDguMjYsMCwwLDEsOC40NSw4LDcuNzUsNy43NSwwLDAsMSwwLC44bC0uMDguNzIuNjUu''@;'; put 'put ''M0E2LDYsMCwwLDEsMjYuMzgsMjZIMjF2Mmg1LjM4YTgsOCwwLDAsMCwzLjkzLTE1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yOCwyMS44NUExLDEsMCwwLDAsMjMsMjAuMTRsLTUtNS01LDVhMSwxLDAs''@;'; put 'put ''MCwwLDEuNDEsMS40MUwxNywxOVYzMS4yNWExLDEsMCwxLDAsMiwwVjE5bDIuNTcsMi41N0ExLDEsMCwwLDAsMjIuMjgsMjEuODVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjI4LDIxLjg1QTEsMSwwLDAs''@;'; put 'put ''MCwyMywyMC4xNGwtNS01LTUsNWExLDEsMCwwLDAsMS40MSwxLjQxTDE3LDE5VjMxLjI1YTEsMSwwLDEsMCwyLDBWMTlsMi41NywyLjU3QTEsMSwwLDAsMCwyMi4yOCwyMS44NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMy42LDE4LjM4QTcuNzEsNy43MSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzYTguNDMsOC40MywwLDAsMSw4LTUuNCw4LjgxLDguODEsMCwwLDEsMiwuMjVsMS0xLjhhMTAuOCwxMC44LDAsMCwwLTMuMDctLjQ1LDEwLjQ3LDEwLjQ3LDAsMCww''@;'; put 'put ''LTkuNiw2LjFBOS43NCw5Ljc0LDAsMCwwLDEuNiwxOC40LDkuNjIsOS42MiwwLDAsMCwxMS4yNSwyOEgxNVYyNkgxMS4yNUE3LjY2LDcuNjYsMCwwLDEsMy42LDE4LjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0zMi45LDE1LjRIMzAuMjFBNiw2LDAsMCwxLDI2LjM4LDI2SDIxdjJoNS4zOEE4LDgsMCwwLDAsMzIuOSwxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjgsMjEuODVBMSwxLDAsMCwwLDIzLDIwLjE0bC01LTUtNSw1YTEsMSwwLDAsMCwxLjQxLDEuNDFMMTcsMTlWMzEuMjVhMSwxLDAsMSwwLDIsMFYxOWwyLjU3LDIuNTdBMSwxLDAsMCww''@;'; put 'put ''LDIyLjI4LDIxLjg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuOTIsMTMuNDRhNy4xMyw3LjEzLDAsMCwxLTIuNjMtLjE0YzAsLjA4LDAsLjE1LDAsLjIzbC0uMDguNzIuNjUu''@;'; put 'put ''M0E2LDYsMCwwLDEsMjYuMzgsMjZIMjF2Mmg1LjM4YTgsOCwwLDAsMCw0LjU0LTE0LjU2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMy42LDE4LjM4QTcuNzEsNy43MSwwLDAsMSwx''@;'; put 'put ''MSwxMC43NGwuNjcsMCwuMjMtLjYzYTguNDMsOC40MywwLDAsMSw4LTUuNCw4Ljc5LDguNzksMCwwLDEsMi42OC40Miw3LjQ1LDcuNDUsMCwwLDEsLjUtMS45NCwxMC43OSwxMC43OSwwLDAsMC0zLjE4LS40OCwxMC40NywxMC40NywwLDAsMC05LjYsNi4xQTkuNzQsOS43NCwwLDAsMCwxLjYs''@;'; put 'put ''MTguNCw5LjYyLDkuNjIsMCwwLDAsMTEuMjUsMjhIMTVWMjZIMTEuMjVBNy42Niw3LjY2LDAsMCwxLDMuNiwxOC4zOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2''@;'; put 'put ''IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZURvd25sb2FkQ2xvdWQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLjMxLDEzYzAtLjEsMC0uMjEs''@;'; put 'put ''MC0uMzJhMTAuMjYsMTAuMjYsMCwwLDAtMTAuNDUtMTAsMTAuNDcsMTAuNDcsMCwwLDAtOS42LDYuMUE5LjY1LDkuNjUsMCwwLDAsMTAuODksMjhhMywzLDAsMCwxLDAtMkE3LjY1LDcuNjUsMCwwLDEsMTEsMTAuNzRsLjY3LDAsLjIzLS42M2E4LjQzLDguNDMsMCwwLDEsOC01LjQsOC4yNiw4''@;'; put 'put ''LjI2LDAsMCwxLDguNDUsOCw3Ljc1LDcuNzUsMCwwLDEsMCwuOGwtLjA4LjcyLjY1LjNBNiw2LDAsMCwxLDI2LjM4LDI2SDI1LjA5YTMsMywwLDAsMSwwLDJoMS4yOGE4LDgsMCwwLDAsMy45My0xNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMjIuMjgsMjYuMDdhMSwxLDAsMCwwLS43MS4yOUwxOSwyOC45NFYxNi42OGExLDEsMCwxLDAtMiwwVjI4Ljk0bC0yLjU3LTIuNTdBMSwxLDAsMCwwLDEzLDI3Ljc4bDUsNSw1LTVhMSwxLDAsMCwwLS43MS0xLjcxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yOCwyNi4wN2ExLDEsMCwwLDAtLjcxLjI5TDE5LDI4Ljk0VjE2LjY4YTEsMSwwLDEsMC0yLDBWMjguOTRsLTIuNTctMi41N0ExLDEsMCwwLDAsMTMsMjcuNzhsNSw1LDUtNWExLDEsMCwwLDAtLjcxLTEuNzFa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5Ljg3LDQuNjlhOC44MSw4LjgxLDAsMCwxLDIsLjI1bDEtMS44YTEwLjgsMTAuOCwwLDAsMC0zLjA3LS40NSwxMC40NywxMC40Nyww''@;'; put 'put ''LDAsMC05LjYsNi4xQTkuNjUsOS42NSwwLDAsMCwxMC44OSwyOGEzLDMsMCwwLDEsMC0yQTcuNjUsNy42NSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzQTguNDMsOC40MywwLDAsMSwxOS44Nyw0LjY5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi45LDE1LjRIMzAuMjFBNiw2LDAsMCwxLDI2LjM4LDI2SDI1LjA5YTMsMywwLDAsMSwwLDJoMS4yOEE4LDgsMCwwLDAsMzIuOSwxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjgsMjYuMDdhMSwxLDAsMCwwLS43MS4yOUwxOSwyOC45NFYxNi42OGExLDEsMCwxLDAtMiwwVjI4Ljk0bC0yLjU3LTIu''@;'; put 'put ''NTdBMSwxLDAsMCwwLDEzLDI3Ljc4bDUsNSw1LTVhMSwxLDAsMCwwLS43MS0xLjcxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuODcsNC42OWE4Ljc5LDguNzksMCwwLDEsMi42''@;'; put 'put ''OC40Miw3LjQ1LDcuNDUsMCwwLDEsLjUtMS45NCwxMC43OSwxMC43OSwwLDAsMC0zLjE4LS40OCwxMC40NywxMC40NywwLDAsMC05LjYsNi4xQTkuNjUsOS42NSwwLDAsMCwxMC44OSwyOGEzLDMsMCwwLDEsMC0yQTcuNjUsNy42NSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzQTguNDMs''@;'; put 'put ''OC40MywwLDAsMSwxOS44Nyw0LjY5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuOTIsMTMuNDRhNy4xMyw3LjEzLDAsMCwxLTIuNjMtLjE0YzAsLjA4LDAsLjE1LDAsLjIzbC0u''@;'; put 'put ''MDguNzIuNjUuM0E2LDYsMCwwLDEsMjYuMzgsMjZIMjUuMDlhMywzLDAsMCwxLDAsMmgxLjI4YTgsOCwwLDAsMCw0LjU0LTE0LjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIz''@;'; put 'put ''MCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxMLkNsclNoYXBlUGx1Z2luPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOS44MSwxNkgyOVY4LjgzYTIs''@;'; put 'put ''MiwwLDAsMC0yLTJIMjFBNS4xNCw1LjE0LDAsMCwwLDE2LjUxLDIsNSw1LDAsMCwwLDExLDYuODNINGEyLDIsMCwwLDAtMiwyVjE3SDQuODFBMy4xMywzLjEzLDAsMCwxLDgsMTkuNjksMywzLDAsMCwxLDcuMjIsMjIsMywzLDAsMCwxLDUsMjNIMnY4LjgzYTIsMiwwLDAsMCwyLDJIMjdhMiwy''@;'; put 'put ''LDAsMCwwLDItMlYyNmgxYTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDI5LjgxLDE2Wm0yLjQxLDdBMywzLDAsMCwxLDMwLDI0SDI3djcuODNINFYyNUg1YTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDQuODEsMTVINFY4LjgzaDlWN2EzLDMsMCwwLDEsMS0yLjIy''@;'; put 'put ''QTMsMywwLDAsMSwxNi4zMSw0LDMuMTMsMy4xMywwLDAsMSwxOSw3LjE5VjguODNoOFYxOGgyLjgxQTMuMTMsMy4xMywwLDAsMSwzMywyMC42OSwzLDMsMCwwLDEsMzIuMjIsMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTI5LjgxLDE2SDI5di0uNkgyN1YxOGgyLjgxQTMuMTMsMy4xMywwLDAsMSwzMywyMC42OSwzLDMsMCwwLDEsMzIuMjIsMjMsMywzLDAsMCwxLDMwLDI0SDI3djcuODNINFYyNUg1YTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDQuODEsMTVINFY4LjgzaDlWN2EzLDMs''@;'; put 'put ''MCwwLDEsMS0yLjIyQTMsMywwLDAsMSwxNi4zMSw0LDMuMTMsMy4xMywwLDAsMSwxOSw3LjE5VjguODNoLjY2TDIxLDYuNTlBNS4xMiw1LjEyLDAsMCwwLDE2LjUxLDIsNSw1LDAsMCwwLDExLDYuODNINGEyLDIsMCwwLDAtMiwyVjE3SDQuODFBMy4xMywzLjEzLDAsMCwxLDgsMTkuNjksMywz''@;'; put 'put ''LDAsMCwxLDcuMjIsMjIsMywzLDAsMCwxLDUsMjNIMnY4LjgzYTIsMiwwLDAsMCwyLDJIMjdhMiwyLDAsMCwwLDItMlYyNmgxYTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDI5LjgxLDE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuODEsMTZIMjlWMTMuNDNhNy40NSw3LjQ1LDAsMCwxLTItLjU1VjE4aDIuODFBMy4xMywzLjEzLDAsMCwxLDMzLDIwLjY5LDMsMyww''@;'; put 'put ''LDAsMSwzMi4yMiwyMywzLDMsMCwwLDEsMzAsMjRIMjd2Ny44M0g0VjI1SDVhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsNC44MSwxNUg0VjguODNoOVY3YTMsMywwLDAsMSwxLTIuMjJBMywzLDAsMCwxLDE2LjMxLDQsMy4xMywzLjEzLDAsMCwxLDE5LDcuMTlWOC44M2g0LjA2''@;'; put 'put ''YTcuNDQsNy40NCwwLDAsMS0uNTEtMkgyMUE1LjE0LDUuMTQsMCwwLDAsMTYuNTEsMiw1LDUsMCwwLDAsMTEsNi44M0g0YTIsMiwwLDAsMC0yLDJWMTdINC44MUEzLjEzLDMuMTMsMCwwLDEsOCwxOS42OSwzLDMsMCwwLDEsNy4yMiwyMiwzLDMsMCwwLDEsNSwyM0gydjguODNhMiwyLDAsMCww''@;'; put 'put ''LDIsMkgyN2EyLDIsMCwwLDAsMi0yVjI2aDFhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsMjkuODEsMTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0i''@;'; put 'put ''NiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuODEsMTZIMjlWOC44M2EyLDIsMCwwLDAtMi0ySDIxQTUuMTQsNS4xNCwwLDAsMCwxNi41MSwyLDUs''@;'; put 'put ''NSwwLDAsMCwxMSw2LjgzSDRhMiwyLDAsMCwwLTIsMlYxN0g0LjgxQTMuMTMsMy4xMywwLDAsMSw4LDE5LjY5LDMsMywwLDAsMSw3LjIyLDIyLDMsMywwLDAsMSw1LDIzSDJ2OC44M2EyLDIsMCwwLDAsMiwySDI3YTIsMiwwLDAsMCwyLTJWMjZoMWE1LDUsMCwwLDAsNS01LjUxQTUuMTUsNS4x''@;'; put 'put ''NSwwLDAsMCwyOS44MSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS44MSwxNkgyOXYtLjZIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjEsNi41OUE1LjEyLDUuMTIsMCwwLDAsMTYuNTEsMiw1LDUs''@;'; put 'put ''MCwwLDAsMTEsNi44M0g0YTIsMiwwLDAsMC0yLDJWMTdINC44MUEzLjEzLDMuMTMsMCwwLDEsOCwxOS42OSwzLDMsMCwwLDEsNy4yMiwyMiwzLDMsMCwwLDEsNSwyM0gydjguODNhMiwyLDAsMCwwLDIsMkgyN2EyLDIsMCwwLDAsMi0yVjI2aDFhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUs''@;'; put 'put ''MCwwLDAsMjkuODEsMTZaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCww''@;'; put 'put ''LDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuODEsMTZIMjlWMTMuNDNhNy41''@;'; put 'put ''LDcuNSwwLDAsMS02LjQ1LTYuNTlIMjFBNS4xNCw1LjE0LDAsMCwwLDE2LjUxLDIsNSw1LDAsMCwwLDExLDYuODNINGEyLDIsMCwwLDAtMiwyVjE3SDQuODFBMy4xMywzLjEzLDAsMCwxLDgsMTkuNjksMywzLDAsMCwxLDcuMjIsMjIsMywzLDAsMCwxLDUsMjNIMnY4LjgzYTIsMiwwLDAsMCwy''@;'; put 'put ''LDJIMjdhMiwyLDAsMCwwLDItMlYyNmgxYTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDI5LjgxLDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0i''@;'; put 'put ''NSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZUZsb3BweT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcuMzYsNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCww''@;'; put 'put ''LDIsMkgzMGEyLDIsMCwwLDAsMi0yVjguNzhaTTI1LDMwSDExVjIySDI1Wm01LDBIMjdWMjJhMiwyLDAsMCwwLTItMkgxMWEyLDIsMCwwLDAtMiwydjhINlY2aDR2NmEyLDIsMCwwLDAsMiwySDI0YTIsMiwwLDAsMCwyLTJIMTJWNkgyNi41MUwzMCw5LjU5WiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWgwVjMwSDI3VjIyYTIsMiwwLDAsMC0yLTJIMTFhMiwyLDAsMCwwLTIsMnY4SDZWNmg0djZhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0xLjY4bC0uNDMtLjNIMTJWNkgyMi41YTcu''@;'; put 'put ''NDksNy40OSwwLDAsMSwuMjgtMkg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41Wk0yNSwzMEgxMVYyMkgyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxNS40VjMwSDI3''@;'; put 'put ''VjIyYTIsMiwwLDAsMC0yLTJIMTFhMiwyLDAsMCwwLTIsMnY4SDZWNmg0djZhMiwyLDAsMCwwLDIsMmg3LjM1YTMuNTQsMy41NCwwLDAsMS0uNzctMkgxMlY2aDkuMjlsMS4xNS0ySDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTUuNFpNMjUsMzBI''@;'; put 'put ''MTFWMjJIMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwz''@;'; put 'put ''NC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy4zNiw0SDZBMiwyLDAsMCww''@;'; put 'put ''LDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWOC43OFpNMjYsMzBIMTBWMjEuNUExLjUsMS41LDAsMCwxLDExLjUsMjBoMTNBMS41LDEuNSwwLDAsMSwyNiwyMS41Wk0yNCwxNEgxMmEyLDIsMCwwLDEtMi0yVjZoMnY2SDI2QTIsMiwwLDAsMSwyNCwxNFoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDYsNy40NiwwLDAsMS00LTEuMThBMiwyLDAsMCwxLDI0LDE0SDEyYTIsMiwwLDAsMS0yLTJWNmgydjZIMjUuNTRhNy40NSw3LjQ1LDAsMCwxLTIuNzYtOEg2QTIsMiwwLDAs''@;'; put 'put ''MCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41Wk0yNiwzMEgxMFYyMS41QTEuNSwxLjUsMCwwLDEsMTEuNSwyMGgxM0ExLjUsMS41LDAsMCwxLDI2LDIxLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjIz''@;'; put 'put ''LDE1LjRBMy42OSwzLjY5LDAsMCwxLDE5LjM1LDE0SDEyYTIsMiwwLDAsMS0yLTJWNmgydjZoNi41OEEzLjY3LDMuNjcsMCwwLDEsMTksOS44OUwyMi40NSw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTUuNFpNMjYsMzBIMTBWMjEuNUExLjUs''@;'; put 'put ''MS41LDAsMCwxLDExLjUsMjBoMTNBMS41LDEuNSwwLDAsMSwyNiwyMS41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIy''@;'; put 'put ''LjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAnKSxMLkNs''@;'; put 'put ''clNoYXBlQ29tcHV0ZXI9KDAsRS5jbHJJY29uU1ZHKSgnPHBvbHlnb24gcG9pbnRzPSI5LjYgMjIuODggOS42IDEwLjYgMjQuNCAxMC42IDI1Ljk4IDkgOCA5IDggMjIuODggOS42IDIyLjg4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTYsN0gzMFYyM2gyVjYuNUExLjUsMS41LDAsMCwwLDMwLjUsNUg1LjVBMS41LDEuNSwwLDAsMCw0LDYuNVYyM0g2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDI1djMuNEEyLjYsMi42''@;'; put 'put ''LDAsMCwwLDMuNiwzMUgzMi4zNGEyLjYsMi42LDAsMCwwLDIuNi0yLjZWMjVabTMyLDMuNGEuNi42LDAsMCwxLS42LjZIMy41NmEuNi42LDAsMCwxLS42LS42VjI2LjUzaDkuOTVhMS42NCwxLjY0LDAsMCwwLDEuNSwxaDcuMTNhMS42NCwxLjY0LDAsMCwwLDEuNS0xSDMzWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDI1djMuNEEyLjYsMi42LDAsMCwwLDMuNiwzMUgzMi4zNGEyLjYsMi42LDAsMCwwLDIuNi0yLjZWMjVabTMyLDMuNGEuNi42LDAsMCwxLS42LjZIMy41NmEuNi42LDAsMCwxLS42LS42''@;'; put 'put ''VjI2LjUzaDkuOTVhMS42NCwxLjY0LDAsMCwwLDEuNSwxaDcuMTNhMS42NCwxLjY0LDAsMCwwLDEuNS0xSDMzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik05LjYsMjIuODhWMTAu''@;'; put 'put ''Nmg5LjE0QTMuNjQsMy42NCwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIOFYyMi44OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNiw3SDIwLjcxbDEuMTUtMkg1LjVBMS41LDEuNSww''@;'; put 'put ''LDAsMCw0LDYuNVYyM0g2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjMwIiB5PSIxNS40IiB3aWR0aD0iMiIgaGVpZ2h0PSI3LjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2''@;'; put 'put ''Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEsMjV2My40QTIuNiwyLjYsMCwwLDAsMy42LDMxSDMyLjM0YTIuNiwyLjYsMCwwLDAsMi42LTIu''@;'; put 'put ''NlYyNVptMzIsMy40YS42LjYsMCwwLDEtLjYuNkgzLjU2YS42LjYsMCwwLDEtLjYtLjZWMjYuNTNoOS45NWExLjY0LDEuNjQsMCwwLDAsMS41LDFoNy4xM2ExLjY0LDEuNjQsMCwwLDAsMS41LTFIMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41LDZhNy41Miw3LjUyLDAsMCwxLC4wNy0xSDUuNUExLjUsMS41LDAsMCwwLDQsNi41VjIzSDZWN0gyMi41N0E3LjUyLDcuNTIsMCwwLDEsMjIuNSw2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNVYyM2gyVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMjMuMTMsOUg4VjIyLjg4SDkuNlYxMC42SDI0LjA4QTcuNDksNy40OSwwLDAsMSwyMy4xMyw5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9''@;'; put 'put ''IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjgxLDI2Yy0uMzUuOS0uOTQsMS41LTEuNjEsMS41SDEzLjc0Yy0uNjgsMC0xLjI2LS42LTEuNjEtMS41SDF2''@;'; put 'put ''MS43NUEyLjQ1LDIuNDUsMCwwLDAsMy42LDMwSDMyLjRBMi40NSwyLjQ1LDAsMCwwLDM1LDI3Ljc1VjI2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTcsMTBIMjlWMjRoM1Y3LjU3QTEuNTQsMS41NCwwLDAsMCwzMC41''@;'; put 'put ''LDZINS41QTEuNTQsMS41NCwwLDAsMCw0LDcuNTdWMjRIN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy44MSwyNmMtLjM1LjktLjk0LDEuNS0xLjYxLDEuNUgxMy43NGMtLjY4LDAtMS4yNi0uNi0xLjYxLTEuNUgx''@;'; put 'put ''djEuNzVBMi40NSwyLjQ1LDAsMCwwLDMuNiwzMEgzMi40QTIuNDUsMi40NSwwLDAsMCwzNSwyNy43NVYyNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI5IiB5PSIxNS40IiB3aWR0aD0i''@;'; put 'put ''MyIgaGVpZ2h0PSI4LjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik03LDEwSDE5TDE5LDkuODksMjEuMjksNkg1LjVBMS41NCwxLjU0LDAsMCwwLDQsNy41N1YyNEg3WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgs''@;'; put 'put ''MS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjgxLDI2Yy0uMzUuOS0uOTQsMS41LTEuNjEsMS41SDEzLjc0Yy0uNjgsMC0x''@;'; put 'put ''LjI2LS42LTEuNjEtMS41SDF2MS43NUEyLjQ1LDIuNDUsMCwwLDAsMy42LDMwSDMyLjRBMi40NSwyLjQ1LDAsMCwwLDM1LDI3Ljc1VjI2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik03LDEw''@;'; put 'put ''SDIzLjY2QTcuNDYsNy40NiwwLDAsMSwyMi41LDZINS41QTEuNTQsMS41NCwwLDAsMCw0LDcuNTdWMjRIN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJhNy4xNCw3LjE0LDAs''@;'; put 'put ''MCwxLTMsLjJWMjRoM1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVEaXNwbGF5PSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMi41LDNIMy41QTEuNSwxLjUsMCwwLDAsMiw0LjV2MjFBMS41LDEuNSwwLDAsMCwzLjUsMjdoMjlBMS41LDEuNSwwLDAsMCwzNCwyNS41VjQuNUExLjUs''@;'; put 'put ''MS41LDAsMCwwLDMyLjUsM1pNMzIsMjVINFY1SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iNy43IDguNzYgMjguMTMgOC43NiAyOS45NCA3LjE2IDYuMSA3LjE2IDYuMSAyMyA3LjcgMjMgNy43''@;'; put 'put ''IDguNzYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDIxLjI0VjI5LjVBNC4yLDQuMiwwLDAsMCwyMi4xNywzMkgxMy44M2E0LjIsNC4y''@;'; put 'put ''LDAsMCwwLC45My0yLjUyVjI4LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0LDMySDkuOTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAsMCwyNiwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDIxLjI0VjI5LjVBNC4yLDQuMiwwLDAsMCwyMi4xNywzMkgxMy44M2E0LjIsNC4yLDAsMCwwLC45My0yLjUyVjI4LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0''@;'; put 'put ''LDMySDkuOTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAsMCwyNiwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMlYy''@;'; put 'put ''NUg0VjVIMjEuODdMMjMsM0gzLjVBMS41LDEuNSwwLDAsMCwyLDQuNXYyMUExLjUsMS41LDAsMCwwLDMuNSwyN2gyOUExLjUsMS41LDAsMCwwLDM0LDI1LjVWMTUuMzhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI3LjcgMjMgNy43IDguNzYgMTkuNyA4Ljc2IDIwLjYyIDcuMTYgNi4xIDcuMTYgNi4xIDIzIDcuNyAyMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDIxLjI0VjI5LjVBNC4yLDQuMiwwLDAsMCwyMi4xNywzMkgxMy44M2E0LjIsNC4yLDAsMCwwLC45My0yLjUyVjI4''@;'; put 'put ''LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0LDMySDkuOTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAsMCwyNiwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTYuMSwyM0g3LjdWOC43NkgyM2E3LjQ0LDcuNDQsMCwwLDEtLjQzLTEuNkg2LjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMlYyNUg0''@;'; put 'put ''VjVIMjIuNTdhNy40NSw3LjQ1LDAsMCwxLC41NS0ySDMuNUExLjUsMS41LDAsMCwwLDIsNC41djIxQTEuNSwxLjUsMCwwLDAsMy41LDI3aDI5QTEuNSwxLjUsMCwwLDAsMzQsMjUuNVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0LDMySDkuOTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAsMCwyNiwzMloiIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi41LDNIMy41QTEuNSwxLjUsMCwwLDAsMiw0LjV2MjFBMS41LDEuNSwwLDAsMCwzLjUsMjdoMjlBMS41LDEuNSwwLDAsMCwzNCwyNS41VjQuNUExLjUsMS41LDAsMCwwLDMyLjUsM1pNMzEsMjEuODNINVY3SDMx''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LDMySDI0LjI2YTMuNjEsMy42MSwwLDAsMS0xLjUtMi41MlYyOC4xM0gxMy4yNFYyOS41QTMuNjEsMy42MSwwLDAsMSwxMS43NCwzMkg5Ljk0YTEsMSwwLDEsMCwwLDJI''@;'; put 'put ''MjYuMDZhLjkyLjkyLDAsMCwwLDEtMUExLDEsMCwwLDAsMjYsMzJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMXY2LjQzSDVWN0gyMC43MUwyMywzSDMuNUExLjUs''@;'; put 'put ''MS41LDAsMCwwLDIsNC41djIxQTEuNSwxLjUsMCwwLDAsMy41LDI3aDI5QTEuNSwxLjUsMCwwLDAsMzQsMjUuNVYxNS4zOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0''@;'; put 'put ''LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMkgyNC4yNmEzLjYxLDMuNjEsMCwwLDEtMS41LTIuNTJWMjguMTNIMTMuMjRWMjkuNUEzLjYxLDMuNjEsMCwwLDEsMTEuNzQsMzJIOS45NGExLDEsMCwxLDAsMCwySDI2LjA2YS45Mi45MiwwLDAsMCwxLTFBMSwxLDAsMCww''@;'; put 'put ''LDI2LDMyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMSwxMy40M3Y4LjQxSDVWN0gyMi41N2E3LjI5LDcuMjksMCwwLDEsLjU1LTRIMy41QTEuNSwxLjUsMCwwLDAsMiw0LjV2MjFBMS41''@;'; put 'put ''LDEuNSwwLDAsMCwzLjUsMjdoMjlBMS41LDEuNSwwLDAsMCwzNCwyNS41VjEyLjM0QTcuNDQsNy40NCwwLDAsMSwzMSwxMy40M1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9''@;'; put 'put ''IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVUZXJtaW5hbD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwy''@;'; put 'put ''LDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjdBMiwyLDAsMCwwLDMyLDVaTTQsN0gzMlY5LjJINFpNNCwyOVYxMC44SDMyVjI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNyIgeT0iMjMiIHdpZHRoPSI2''@;'; put 'put ''IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI3IDE1LjY4IDEzLjc5IDE4LjggNyAyMS45MSA3IDI0LjExIDE2LjYgMTkuNyAxNi42IDE3Ljg5IDcgMTMuNDggNyAxNS42OCIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNyIgeT0iMjMiIHdpZHRoPSI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI3IDI0LjExIDE2LjYgMTkuNyAxNi42IDE3Ljg5IDcgMTMuNDggNyAxNS42OCAxMy43OSAxOC44IDcgMjEuOTEgNyAyNC4xMSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMlYyOUg0VjEwLjhIMTguNjhBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlsLjQtLjY5SDRWN0gyMC43MWwxLjE1LTJINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxNS4zOFoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTciIHk9IjIzIiB3aWR0aD0iNiIgaGVpZ2h0PSIyIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjcgMjQuMTEgMTYuNiAxOS43IDE2LjYgMTcuODkgNyAxMy40OCA3IDE1LjY4IDEzLjc5IDE4LjggNyAyMS45MSA3IDI0LjExIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJWMjlINFYxMC44SDI0LjI0YTcuNTEsNy41MSwwLDAsMS0xLTEuNkg0VjdIMjIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNTIs''@;'; put 'put ''Ny41MiwwLDAsMSwuMDctMUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw1SDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIs''@;'; put 'put ''MCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIsNVpNNi44LDE1LjgxVjEzLjE3bDEwLDQuNTl2Mi4wOGwtMTAsNC41OVYyMS43OGw2LjUxLTNaTTIzLjQsMjUuNEgxN1YyM2g2LjRaTTQsOS4yVjdIMzJWOS4yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bC40LS42OUg0VjdIMjAuNzFsMS4xNS0ySDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMzhaTTE2LjgsMTku''@;'; put 'put ''ODNsLTEwLDQuNTlWMjEuNzhsNi41MS0zLTYuNTEtM1YxMy4xN2wxMCw0LjU5Wm02LjYsNS41N0gxN1YyM2g2LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEu''@;'; put 'put ''MTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''YWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ5LDcuNDksMCwwLDEtNi43OC00LjNINFY3SDIyLjU3YTcuNTIsNy41MiwwLDAsMS0uMDctMSw3LjUyLDcuNTIsMCwwLDEsLjA3LTFINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCww''@;'; put 'put ''LDItMlYxMi4zNEE3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNMTYuOCwxOS44M2wtMTAsNC41OVYyMS43OGw2LjUxLTMtNi41MS0zVjEzLjE3bDEwLDQuNTlabTYuNiw1LjU3SDE3VjIzaDYuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2Vk''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVDb2RlPSgwLEUuY2xySWNvblNWRykoJzxw''@;'; put 'put ''YXRoIGQ9Ik0xMy43MSwxMi41OWExLDEsMCwwLDAtMS4zOS0uMjZMNS43OSwxNi43OGExLDEsMCwwLDAsMCwxLjY1bDYuNTMsNC40NWExLDEsMCwxLDAsMS4xMy0xLjY1TDguMTMsMTcuNjEsMTMuNDUsMTRBMSwxLDAsMCwwLDEzLjcxLDEyLjU5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuMjEsMTYuNzhsLTYuNTMtNC40NUExLDEsMCwxLDAsMjIuNTUsMTRsNS4zMiwzLjYzLTUuMzIsMy42M2ExLDEsMCwwLDAsMS4xMywxLjY1bDYuNTMtNC40NWExLDEsMCwwLDAsMC0xLjY1WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuOTQsOS44M2EuOS45LDAsMCwwLTEuMDkuNjZMMTUuNDEsMjQuMjlhLjkuOSwwLDAsMCwuNjYsMS4wOWwuMjIsMGEuOS45LDAsMCwwLC44Ny0uNjhsMy40NC0xMy44MUEuOS45LDAs''@;'; put 'put ''MCwwLDE5Ljk0LDkuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy43MSwxMi41OWExLDEsMCwwLDAtMS4zOS0uMjZMNS43OSwxNi43OGExLDEsMCwwLDAsMCwxLjY1bDYuNTMsNC40NWExLDEsMCwxLDAs''@;'; put 'put ''MS4xMy0xLjY1TDguMTMsMTcuNjEsMTMuNDUsMTRBMSwxLDAsMCwwLDEzLjcxLDEyLjU5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguNTYsMTEuNjIsMTUuNDEsMjQuMjlh''@;'; put 'put ''LjkuOSwwLDAsMCwuNjYsMS4wOWwuMjIsMGEuOS45LDAsMCwwLC44Ny0uNjhMMTkuNzMsMTQuNGEzLjU5LDMuNTksMCwwLDEtMS4xNi0yLjc5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMzAuMjEsMTYuNzhsLTItMS4zOEgyNC42NGwzLjI0LDIuMjEtNS4zMiwzLjYzYTEsMSwwLDAsMCwxLjEzLDEuNjVsNi41My00LjQ1YTEsMSwwLDAsMCwwLTEuNjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy43MSwxMi41OWExLDEsMCwwLDAtMS4zOS0uMjZMNS43OSwxNi43OGExLDEsMCwwLDAsMCwxLjY1bDYuNTMsNC40NWExLDEsMCwxLDAsMS4xMy0xLjY1TDgu''@;'; put 'put ''MTMsMTcuNjEsMTMuNDUsMTRBMSwxLDAsMCwwLDEzLjcxLDEyLjU5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjIxLDE2Ljc4bC02LjUzLTQuNDVBMSwxLDAsMSwwLDIyLjU1''@;'; put 'put ''LDE0bDUuMzIsMy42My01LjMyLDMuNjNhMSwxLDAsMCwwLDEuMTMsMS42NWw2LjUzLTQuNDVhMSwxLDAsMCwwLDAtMS42NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS45NCw5''@;'; put 'put ''LjgzYS45LjksMCwwLDAtMS4wOS42NkwxNS40MSwyNC4yOWEuOS45LDAsMCwwLC42NiwxLjA5bC4yMiwwYS45LjksMCwwLDAsLjg3LS42OGwzLjQ0LTEzLjgxQS45LjksMCwwLDAsMTkuOTQsOS44M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMt''@;'; put 'put ''LWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZUFwcGxpY2F0aW9uPSgw''@;'; put 'put ''LEUuY2xySWNvblNWRykoJzxyZWN0IHg9IjUiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOSIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMyIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNEg0QTIs''@;'; put 'put ''MiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMyLDRaTTQsNkgzMnY0LjJINFpNNCwzMFYxMS44SDMyVjMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MzIsNEg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMyLDRabTAsNi4ySDRWNkgzMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI1IiB5PSI3IiB3aWR0''@;'; put 'put ''aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOSIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IHg9IjEzIiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBlQmF0dGVyeT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTguNTksMTEuNzdhMSwxLDAsMCwwLTEu''@;'; put 'put ''NzMsMWwyLjUsNC4zNC02LjA3LTEsNS4yOSwxMC41OWExLDEsMCwwLDAsMS43OS0uODlsLTMuNTMtNy4wOCw2LjM4LDEuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNS4xMiw0SDIzVjMuNThBMS41OCwx''@;'; put 'put ''LjU4LDAsMCwwLDIxLjQyLDJIMTQuNThBMS41OCwxLjU4LDAsMCwwLDEzLDMuNThWNEgxMC44OEExLjg4LDEuODgsMCwwLDAsOSw1Ljg4VjMyLjEyQTEuODgsMS44OCwwLDAsMCwxMC44OCwzNEgyNS4xMkExLjg4LDEuODgsMCwwLDAsMjcsMzIuMTJWNS44OEExLjg4LDEuODgsMCwwLDAsMjUu''@;'; put 'put ''MTIsNFpNMjUsMzJIMTFWNmg0VjRoNlY2aDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC41OSwxMS43N2ExLDEsMCwwLDAtMS43MywxbDIuNSw0LjM0LTYuMDctMSw1LjI5LDEwLjU5YTEsMSwwLDAsMCwx''@;'; put 'put ''Ljc5LS44OWwtMy41My03LjA4LDYuMzgsMS4wNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMz''@;'; put 'put ''LjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTI1LDE1LjRWMzJIMTFWNmg0VjRoNlY2aC4yOGwxLjY0LTIuODVBMS41NywxLjU3LDAsMCwwLDIxLjQyLDJIMTQuNThBMS41OCwxLjU4LDAsMCwwLDEzLDMuNThWNEgxMC44OEExLjg4LDEuODgsMCwwLDAsOSw1Ljg4VjMyLjEyQTEuODgsMS44OCwwLDAsMCwxMC44OCwzNEgyNS4xMkEx''@;'; put 'put ''Ljg4LDEuODgsMCwwLDAsMjcsMzIuMTJWMTUuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjU5LDExLjc3YTEsMSwwLDAsMC0xLjczLDFsMi41LDQuMzQtNi4wNy0xLDUuMjksMTAuNTlhMSwxLDAsMCwwLDEuNzktLjg5bC0zLjUzLTcuMDgsNi4zOCwxLjA2''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LDExLjU4VjMySDExVjZoNFY0aDZWNkgyMi41QTcuNDcsNy40NywwLDAsMSwyMywzLjM4LDEuNTcsMS41NywwLDAsMCwyMS40Miwy''@;'; put 'put ''SDE0LjU4QTEuNTgsMS41OCwwLDAsMCwxMywzLjU4VjRIMTAuODhBMS44OCwxLjg4LDAsMCwwLDksNS44OFYzMi4xMkExLjg4LDEuODgsMCwwLDAsMTAuODgsMzRIMjUuMTJBMS44OCwxLjg4LDAsMCwwLDI3LDMyLjEyVjEyLjg3QTcuNSw3LjUsMCwwLDEsMjUsMTEuNThaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNFYyLjYyQS42LjYsMCwwLDAsMjEuNDIsMkgxNC41OGEuNi42LDAsMCwwLS41OC42MlY0SDEwQTEuMDksMS4wOSwwLDAsMCw5LDUuMDd2MjhBMSwxLDAs''@;'; put 'put ''MCwwLDEwLDM0SDI2YTEsMSwwLDAsMCwxLS45NHYtMjhBMS4wOSwxLjA5LDAsMCwwLDI2LDRaTTIwLjI2LDI1LjQ0YTEuMiwxLjIsMCwwLDEtMi4xNSwxLjA3TDEyLjY1LDE1LjU2bDYsMS0yLjI5LTRhMS4yLDEuMiwwLDEsMSwyLjA4LTEuMmw0LjgzLDguMzdMMTYuOSwxOC43WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYu''@;'; put 'put ''ODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjIzLDE1LjRBMy42NiwzLjY2LDAsMCwxLDIwLjU1LDE1bDIuNzYsNC43OUwxNi45LDE4LjdsMy4z''@;'; put 'put ''Niw2LjczYTEuMiwxLjIsMCwwLDEtMi4xNSwxLjA3TDEyLjY1LDE1LjU2bDYsMS0yLjI5LTRhMS4yLDEuMiwwLDEsMSwyLjA4LTEuMmwuMDkuMTVBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlMMjIuNDUsNEgyMlYyLjYyQS42LjYsMCwwLDAsMjEuNDIsMkgxNC41OGEuNi42LDAsMCwwLS41OC42''@;'; put 'put ''MlY0SDEwQTEuMDksMS4wOSwwLDAsMCw5LDUuMDd2MjhBMSwxLDAsMCwwLDEwLDM0SDI2YTEsMSwwLDAsMCwxLS45NFYxNS40WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBj''@;'; put 'put ''eT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjUsNmE3LjQ5LDcuNDksMCwwLDEsLjI4LTJIMjJWMi42MkEuNi42LDAsMCwwLDIxLjQyLDJIMTQu''@;'; put 'put ''NThhLjYuNiwwLDAsMC0uNTguNjJWNEgxMEExLjA5LDEuMDksMCwwLDAsOSw1LjA3djI4QTEsMSwwLDAsMCwxMCwzNEgyNmExLDEsMCwwLDAsMS0uOTRWMTIuODdBNy41LDcuNSwwLDAsMSwyMi41LDZaTTIwLjI2LDI1LjQ0YTEuMiwxLjIsMCwwLDEtMi4xNSwxLjA3TDEyLjY1LDE1LjU2bDYs''@;'; put 'put ''MS0yLjI5LTRhMS4yLDEuMiwwLDEsMSwyLjA4LTEuMmw0LjgzLDguMzdMMTYuOSwxOC43WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVNb2JpbGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''ZD0iTTI1LDRIMTFBMiwyLDAsMCwwLDksNlYzMGEyLDIsMCwwLDAsMiwySDI1YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMjUsNFpNMTEsNkgyNVYyNEgxMVptMCwyNFYyNkgyNXY0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCB4PSIxNyIgeT0iMjciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LDRIMTFBMiwyLDAsMCwwLDksNlYzMGEyLDIsMCwwLDAsMiwySDI1YTIsMiwwLDAsMCwy''@;'; put 'put ''LTJWNkEyLDIsMCwwLDAsMjUsNFpNMTksMzBIMTdWMjhoMlptLTgtNFY2SDI1VjI2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZVRhYmxldD0oMCxFLmNsckljb25TVkcpKCc8cmVjdCB4PSIxNyIgeT0iMjkiIHdpZHRo''@;'; put 'put ''PSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDJINkEyLDIsMCwwLDAsNCw0VjMyYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwzMCwyWm0wLDJWMjYu''@;'; put 'put ''MzhINlY0Wk02LDMyVjI4SDMwdjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwySDZBMiwyLDAsMCwwLDQsNFYzMmEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWNEEyLDIsMCwwLDAsMzAsMlpN''@;'; put 'put ''MTksMzJIMTdWMzBoMlpNNiwyOFY0SDMwVjI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZU5ldHdvcmtHbG9iZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThh''@;'; put 'put ''MSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3Ljc1LDJhMTQsMTQsMCwwLDAtMTQsMTRjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMEExNCwxNCwwLDEsMCwxNy43NSwyWm0wLDJhMTIs''@;'; put 'put ''MTIsMCwwLDEsOC40NCwzLjQ4YzAsLjMzLDAsLjY2LDAsMUExOC41MSwxOC41MSwwLDAsMCwxNCw4LjUzYTIuMzMsMi4zMywwLDAsMC0xLjE0LS42MWwtLjI1LDBjLS4xMi0uNDItLjIzLS44NC0uMzItMS4yN3MtLjE0LS44MS0uMTktMS4yMkExMS45MiwxMS45MiwwLDAsMSwxNy43NSw0Wm0t''@;'; put 'put ''Myw1Ljg3QTE3LDE3LDAsMCwxLDI1LjkyLDEwYTE2LjksMTYuOSwwLDAsMS0zLjExLDcsMi4yOCwyLjI4LDAsMCwwLTIuNTguNTdjLS4zNS0uMi0uNy0uNC0xLS42M2ExNiwxNiwwLDAsMS00LjkzLTUuMjMsMi4yNSwyLjI1LDAsMCwwLC40Ny0xLjc3Wm0tNC0zLjZjMCwuMjEuMDYuNDMuMS42''@;'; put 'put ''NC4wOS40NC4yMS44Ny4zMywxLjNhMi4yOCwyLjI4LDAsMCwwLTEuMSwyLjI1QTE4LjMyLDE4LjMyLDAsMCwwLDUuOSwxNC4yMiwxMiwxMiwwLDAsMSwxMC43Niw2LjI3Wm0wLDE1LjcxQTIuMzQsMi4zNCwwLDAsMCw5LjIsMjMuNzRsLS42NCwwQTExLjk0LDExLjk0LDAsMCwxLDUuOCwxNi45''@;'; put 'put ''MmwuMTEtLjE5YTE2LjksMTYuOSwwLDAsMSw0LjgxLTQuODksMi4zMSwyLjMxLDAsMCwwLDIuMjguNjMsMTcuNTMsMTcuNTMsMCwwLDAsNS4zNSw1LjY1Yy40MS4yNy44My41MiwxLjI1Ljc2QTIuMzIsMi4zMiwwLDAsMCwxOS43OCwyMGExNi45NCwxNi45NCwwLDAsMS02LjIsMy4xMUEyLjM0''@;'; put 'put ''LDIuMzQsMCwwLDAsMTAuNzYsMjJabTcsNmExMS45MiwxMS45MiwwLDAsMS01LjgxLTEuNTFsLjI4LS4wNmEyLjM0LDIuMzQsMCwwLDAsMS41Ny0xLjc5LDE4LjQzLDE4LjQzLDAsMCwwLDctMy41LDIuMjksMi4yOSwwLDAsMCwzLS42MiwxNy40MSwxNy40MSwwLDAsMCw0LjMyLjU2bC41Myww''@;'; put 'put ''QTEyLDEyLDAsMCwxLDE3Ljc1LDI4Wm02LjUxLTguOWEyLjMzLDIuMzMsMCwwLDAtLjMzLTEuMTksMTguNCwxOC40LDAsMCwwLDMuMzktNy4zN3EuNzUuMzUsMS40OC43OGExMiwxMiwwLDAsMSwuNDIsOC4yQTE2LDE2LDAsMCwxLDI0LjI3LDE5LjExWiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTMxLjczLDE1LjRoLTJjMCwuMiwwLC40LDAsLjYxYTEyLDEyLDAsMCwxLS41MywzLjUyLDE2LDE2LDAsMCwxLTUtLjQxLDIuMzMsMi4zMywwLDAsMC0uMzMtMS4xOSwxOC44NywxOC44NywwLDAsMCwxLjYyLTIuNTJIMjMuODNhMTcuMjksMTcuMjksMCwwLDEtMSwx''@;'; put 'put ''LjU0LDIuMjgsMi4yOCwwLDAsMC0yLjU4LjU3Yy0uMzUtLjItLjctLjQtMS0uNjNhMTYsMTYsMCwwLDEtNC45My01LjIzLDIuMjUsMi4yNSwwLDAsMCwuNDctMS43N0ExNy4wOCwxNy4wOCwwLDAsMSwxOS41Niw5bC44Ny0xLjUxYTE4LjU5LDE4LjU5LDAsMCwwLTYuMzksMSwyLjMzLDIuMzMs''@;'; put 'put ''MCwwLDAtMS4xNC0uNjFsLS4yNSwwYy0uMTItLjQyLS4yMy0uODQtLjMyLTEuMjdzLS4xNC0uODEtLjE5LTEuMjJBMTEuODgsMTEuODgsMCwwLDEsMjIsNC43OUwyMywzQTE0LDE0LDAsMCwwLDMuNzUsMTZjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMEExNCwxNCwwLDAsMCwzMS43NiwxNkMz''@;'; put 'put ''MS43NiwxNS44LDMxLjc0LDE1LjYsMzEuNzMsMTUuNFptLTIxLTkuMTNjMCwuMjEuMDYuNDMuMS42NC4wOS40NC4yMS44Ny4zMywxLjNhMi4yOCwyLjI4LDAsMCwwLTEuMSwyLjI1QTE4LjMyLDE4LjMyLDAsMCwwLDUuOSwxNC4yMiwxMiwxMiwwLDAsMSwxMC43Niw2LjI3Wm0wLDE1LjcxQTIu''@;'; put 'put ''MzQsMi4zNCwwLDAsMCw5LjIsMjMuNzRsLS42NCwwQTExLjk0LDExLjk0LDAsMCwxLDUuOCwxNi45MmwuMTEtLjE5YTE2LjksMTYuOSwwLDAsMSw0LjgxLTQuODksMi4zMSwyLjMxLDAsMCwwLDIuMjguNjMsMTcuNTMsMTcuNTMsMCwwLDAsNS4zNSw1LjY1Yy40MS4yNy44My41MiwxLjI1Ljc2''@;'; put 'put ''QTIuMzIsMi4zMiwwLDAsMCwxOS43OCwyMGExNi45NCwxNi45NCwwLDAsMS02LjIsMy4xMUEyLjM0LDIuMzQsMCwwLDAsMTAuNzYsMjJabTcsNmExMS45MiwxMS45MiwwLDAsMS01LjgxLTEuNTFsLjI4LS4wNmEyLjM0LDIuMzQsMCwwLDAsMS41Ny0xLjc5LDE4LjQzLDE4LjQzLDAsMCwwLDct''@;'; put 'put ''My41LDIuMjksMi4yOSwwLDAsMCwzLS42MiwxNy40MSwxNy40MSwwLDAsMCw0LjMyLjU2bC41MywwQTEyLDEyLDAsMCwxLDE3Ljc1LDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0zMS41LDEzLjM1YTcuNTQsNy41NCwwLDAsMS0xLjUuMTVsLS41MSwwYTExLjkxLDExLjkxLDAsMCwxLS4yNSw2LDE2LDE2LDAsMCwxLTUtLjQxLDIuMzMsMi4zMywwLDAsMC0uMzMtMS4xOSwxOC41OSwxOC41OSwwLDAsMCwyLjc4LTUuMTgsNy40OSw3LjQ5''@;'; put 'put ''LDAsMCwxLTEuMzEtLjgyLDE3LDE3LDAsMCwxLTIuNjEsNSwyLjI4LDIuMjgsMCwwLDAtMi41OC41N2MtLjM1LS4yLS43LS40LTEtLjYzYTE2LDE2LDAsMCwxLTQuOTMtNS4yMywyLjI1LDIuMjUsMCwwLDAsLjQ3LTEuNzcsMTcsMTcsMCwwLDEsOC41My0uNjIsNy40Myw3LjQzLDAsMCwxLS41''@;'; put 'put ''Ni0xLjU5QTE4LjU2LDE4LjU2LDAsMCwwLDE0LDguNTNhMi4zMywyLjMzLDAsMCwwLTEuMTQtLjYxbC0uMjUsMGMtLjEyLS40Mi0uMjMtLjg0LS4zMi0xLjI3cy0uMTQtLjgxLS4xOS0xLjIyQTExLjkyLDExLjkyLDAsMCwxLDIyLjU3LDVhNy40NSw3LjQ1LDAsMCwxLC41My0yQTE0LDE0LDAs''@;'; put 'put ''MCwwLDMuNzUsMTZjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMGExNCwxNCwwLDEsMCwyNy42OC00Wk0xMC43Niw2LjI3YzAsLjIxLjA2LjQzLjEuNjQuMDkuNDQuMjEuODcuMzMsMS4zYTIuMjgsMi4yOCwwLDAsMC0xLjEsMi4yNUExOC4zMiwxOC4zMiwwLDAsMCw1LjksMTQuMjIsMTIsMTIs''@;'; put 'put ''MCwwLDEsMTAuNzYsNi4yN1ptMCwxNS43MUEyLjM0LDIuMzQsMCwwLDAsOS4yLDIzLjc0bC0uNjQsMEExMS45NCwxMS45NCwwLDAsMSw1LjgsMTYuOTJsLjExLS4xOWExNi45LDE2LjksMCwwLDEsNC44MS00Ljg5LDIuMzEsMi4zMSwwLDAsMCwyLjI4LjYzLDE3LjUzLDE3LjUzLDAsMCwwLDUu''@;'; put 'put ''MzUsNS42NWMuNDEuMjcuODMuNTIsMS4yNS43NkEyLjMyLDIuMzIsMCwwLDAsMTkuNzgsMjBhMTYuOTQsMTYuOTQsMCwwLDEtNi4yLDMuMTFBMi4zNCwyLjM0LDAsMCwwLDEwLjc2LDIyWm03LDZhMTEuOTIsMTEuOTIsMCwwLDEtNS44MS0xLjUxbC4yOC0uMDZhMi4zNCwyLjM0LDAsMCwwLDEu''@;'; put 'put ''NTctMS43OSwxOC40MywxOC40MywwLDAsMCw3LTMuNSwyLjI5LDIuMjksMCwwLDAsMy0uNjIsMTcuNDEsMTcuNDEsMCwwLDAsNC4zMi41NmwuNTMsMEExMiwxMiwwLDAsMSwxNy43NSwyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdl''@;'; put 'put ''ZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi41OCwzMmgtMThhMSwxLDAs''@;'; put 'put ''MSwwLDAsMmgxOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC43Miw5Ljg3YTIuMjUsMi4yNSwwLDAsMS0uNDcsMS43NywxNiwxNiwwLDAsMCw0LjkzLDUuMjNjLjM0LjIzLjY5LjQzLDEs''@;'; put 'put ''LjYzYTIuMjgsMi4yOCwwLDAsMSwyLjU4LS41NywxNi45LDE2LjksMCwwLDAsMy4xMS03QTE3LDE3LDAsMCwwLDE0LjcyLDkuODdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3Ljc1LDJhMTQsMTQsMCwwLDAtMTQs''@;'; put 'put ''MTRjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMEExNCwxNCwwLDEsMCwxNy43NSwyWk0yOC4xLDIxLjA5YTE3LjQxLDE3LjQxLDAsMCwxLTQuMzItLjU2LDIuMjksMi4yOSwwLDAsMS0zLC42MiwxOC40MywxOC40MywwLDAsMS03LDMuNSwyLjM0LDIuMzQsMCwwLDEtMS41NywxLjc5bC0uMjku''@;'; put 'put ''MDZhMTEuOTMsMTEuOTMsMCwwLDEtMy4zOS0yLjhsLjY2LDBhMi4zMywyLjMzLDAsMCwxLDQuMzctLjU4QTE2Ljk0LDE2Ljk0LDAsMCwwLDE5Ljc4LDIwYTIuMzIsMi4zMiwwLDAsMS0uMTgtMS4xN2MtLjQyLS4yNC0uODQtLjQ5LTEuMjUtLjc2QTE3LjUzLDE3LjUzLDAsMCwxLDEzLDEyLjQ3''@;'; put 'put ''YTIuMzEsMi4zMSwwLDAsMS0yLjI4LS42MywyNy4zMSwyNy4zMSwwLDAsMC01LDQuNzRjMC0uMiwwLS4zOSwwLS41N2ExMiwxMiwwLDAsMSwuMTQtMS43MywxOC43NSwxOC43NSwwLDAsMSw0LjItMy44LDIuMjgsMi4yOCwwLDAsMSwxLjEtMi4yNWMtLjEyLS40My0uMjQtLjg2LS4zMy0xLjMs''@;'; put 'put ''MC0uMTQsMC0uMjktLjExLS42NGExMiwxMiwwLDAsMSwxLjM3LS44N2MuMS41OS4xNC45LjIxLDEuMjFzLjIuODUuMzIsMS4yN2wuMjUsMEEyLjMzLDIuMzMsMCwwLDEsMTQsOC41M2ExOC41MSwxOC41MSwwLDAsMSwxMi4xMS0uMDdjMC0uMzIsMC0uNjUsMC0xaDBhMTIsMTIsMCwwLDEsMi42''@;'; put 'put ''MiwzLjg1aDBxLS43My0uNDMtMS40OC0uNzhhMTguNCwxOC40LDAsMCwxLTMuMzksNy4zNywyLjMzLDIuMzMsMCwwLDEsLjMzLDEuMTksMjIsMjIsMCwwLDAsNSwuNDUsMTEuODgsMTEuODgsMCwwLDEtLjYxLDEuNTNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LjU4LDMyaC0xOGExLDEsMCwxLDAsMCwyaDE4YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjczLDE1LjRI''@;'; put 'put ''MjUuNTZhMTguODcsMTguODcsMCwwLDEtMS42MiwyLjUyLDIuMzMsMi4zMywwLDAsMSwuMzMsMS4xOSwyMiwyMiwwLDAsMCw1LC40NSwxMS44OCwxMS44OCwwLDAsMS0uNjEsMS41M0gyOC4xYTE3LjQxLDE3LjQxLDAsMCwxLTQuMzItLjU2LDIuMjksMi4yOSwwLDAsMS0zLC42MiwxOC40Mywx''@;'; put 'put ''OC40MywwLDAsMS03LDMuNSwyLjM0LDIuMzQsMCwwLDEtMS41NywxLjc5bC0uMjkuMDZhMTEuOTMsMTEuOTMsMCwwLDEtMy4zOS0yLjhsLjY2LDBhMi4zMywyLjMzLDAsMCwxLDQuMzctLjU4QTE2Ljk0LDE2Ljk0LDAsMCwwLDE5Ljc4LDIwYTIuMzIsMi4zMiwwLDAsMS0uMTgtMS4xN2MtLjQy''@;'; put 'put ''LS4yNC0uODQtLjQ5LTEuMjUtLjc2QTE3LjUzLDE3LjUzLDAsMCwxLDEzLDEyLjQ3YTIuMzEsMi4zMSwwLDAsMS0yLjI4LS42MywyNy4zMSwyNy4zMSwwLDAsMC01LDQuNzRjMC0uMiwwLS4zOSwwLS41N2ExMiwxMiwwLDAsMSwuMTQtMS43MywxOC43NSwxOC43NSwwLDAsMSw0LjItMy44LDIu''@;'; put 'put ''MjgsMi4yOCwwLDAsMSwxLjEtMi4yNWMtLjEyLS40My0uMjQtLjg2LS4zMy0xLjMsMC0uMTQsMC0uMjktLjExLS42NGExMiwxMiwwLDAsMSwxLjM3LS44N2MuMS41OS4xNC45LjIxLDEuMjFzLjIuODUuMzIsMS4yN2wuMjUsMEEyLjMzLDIuMzMsMCwwLDEsMTQsOC41M2ExOC41OSwxOC41OSww''@;'; put 'put ''LDAsMSw2LjM5LTFMMjMsM0ExNCwxNCwwLDAsMCwzLjc1LDE2YzAsLjQ1LDAsLjg5LjA3LDEuMzNsMCwwaDBBMTQsMTQsMCwwLDAsMzEuNzYsMTZDMzEuNzYsMTUuOCwzMS43NCwxNS42LDMxLjczLDE1LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0y''@;'; put 'put ''LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LjI2LDExLjY0YTE2LDE2LDAsMCwwLDQuOTMsNS4yM2MuMzQuMjMuNjkuNDMsMSwuNjNhMi4yOCwyLjI4LDAsMCwxLDIuNTgtLjU3LDE3LjI5LDE3LjI5LDAsMCwwLDEtMS41NGgtMS42QTMuNjgsMy42OCwwLDAsMSwxOSw5''@;'; put 'put ''Ljg5TDE5LjU2LDlhMTcuMDgsMTcuMDgsMCwwLDAtNC44NC44OCwyLjI1LDIuMjUsMCwwLDEtLjQ3LDEuNzdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMs''@;'; put 'put ''MTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxl''@;'; put 'put ''cnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNSwxMy4z''@;'; put 'put ''NWE3LjU0LDcuNTQsMCwwLDEtMS41LjE1LDcuNDYsNy40NiwwLDAsMS0zLjI4LS43NiwxOC41OSwxOC41OSwwLDAsMS0yLjc4LDUuMTgsMi4zMywyLjMzLDAsMCwxLC4zMywxLjE5LDIyLDIyLDAsMCwwLDUsLjQ1LDExLjg4LDExLjg4LDAsMCwxLS42MSwxLjUzSDI4LjFhMTcuNDEsMTcuNDEs''@;'; put 'put ''MCwwLDEtNC4zMi0uNTYsMi4yOSwyLjI5LDAsMCwxLTMsLjYyLDE4LjQzLDE4LjQzLDAsMCwxLTcsMy41LDIuMzQsMi4zNCwwLDAsMS0xLjU3LDEuNzlsLS4yOS4wNmExMS45MywxMS45MywwLDAsMS0zLjM5LTIuOGwuNjYsMGEyLjMzLDIuMzMsMCwwLDEsNC4zNy0uNThBMTYuOTQsMTYuOTQs''@;'; put 'put ''MCwwLDAsMTkuNzgsMjBhMi4zMiwyLjMyLDAsMCwxLS4xOC0xLjE3Yy0uNDItLjI0LS44NC0uNDktMS4yNS0uNzZBMTcuNTMsMTcuNTMsMCwwLDEsMTMsMTIuNDdhMi4zMSwyLjMxLDAsMCwxLTIuMjgtLjYzLDI3LjMxLDI3LjMxLDAsMCwwLTUsNC43NGMwLS4yLDAtLjM5LDAtLjU3YTEyLDEy''@;'; put 'put ''LDAsMCwxLC4xNC0xLjczLDE4Ljc1LDE4Ljc1LDAsMCwxLDQuMi0zLjgsMi4yOCwyLjI4LDAsMCwxLDEuMS0yLjI1Yy0uMTItLjQzLS4yNC0uODYtLjMzLTEuMywwLS4xNCwwLS4yOS0uMTEtLjY0YTEyLDEyLDAsMCwxLDEuMzctLjg3Yy4xLjU5LjE0LjkuMjEsMS4yMXMuMi44NS4zMiwxLjI3''@;'; put 'put ''bC4yNSwwQTIuMzMsMi4zMywwLDAsMSwxNCw4LjUzYTE4LjU2LDE4LjU2LDAsMCwxLDguNjUtLjg3LDcuNDUsNy40NSwwLDAsMSwuNDEtNC41OUExNCwxNCwwLDAsMCwzLjc1LDE2YzAsLjQ1LDAsLjg5LjA3LDEuMzNsMCwwaDBhMTQsMTQsMCwxLDAsMjcuNjgtNFoiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTQuNzIsOS44N2EyLjI1LDIuMjUsMCwwLDEtLjQ3LDEuNzcsMTYsMTYsMCwwLDAsNC45Myw1LjIzYy4zNC4yMy42OS40MywxLC42M2EyLjI4LDIuMjgsMCwwLDEsMi41OC0u''@;'; put 'put ''NTcsMTcsMTcsMCwwLDAsMi42MS01LDcuNTIsNy41MiwwLDAsMS0yLjE2LTIuNjdBMTcsMTcsMCwwLDAsMTQuNzIsOS44N1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYi''@;'; put 'put ''IHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVOZXR3b3JrU2V0dGluZ3M9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEwLjg1LDI3LjQ0YTIuMjksMi4yOSww''@;'; put 'put ''LDAsMCwxLjc0LTEuNjhjLjU0LS4xNCwxLjA2LS4zMiwxLjU5LS41MXYtMS4yYTIuNzcsMi43NywwLDAsMSwuMDYtLjUxLDE3LjQ0LDE3LjQ0LDAsMCwxLTEuODIuNjIsMi4yOCwyLjI4LDAsMCwwLTQuMjguNjNsLS40NSwwaDBhMTEuOTMsMTEuOTMsMCwwLDEtMi44OC03LjI3LDE3Ljc5LDE3''@;'; put 'put ''Ljc5LDAsMCwxLDUtNC43MiwyLjIzLDIuMjMsMCwwLDAsMi4yOS41NiwxOC41MiwxOC41MiwwLDAsMCw0LjQ3LDUsMi43NCwyLjc0LDAsMCwxLC4yMS0uMjRsLjk1LS45MWExNi45LDE2LjksMCwwLDEtNC4zNS00Ljc5LDIuMjcsMi4yNywwLDAsMCwuMzUtMS4yYzAtLjA3LDAtLjE0LDAtLjIy''@;'; put 'put ''QTE3LjY5LDE3LjY5LDAsMCwxLDI1LDExYTE3LjQ5LDE3LjQ5LDAsMCwxLTEuMTUsMy4zNGwuMTksMGgxLjU2YTE5LDE5LDAsMCwwLC45MS0yLjcyYy40My4xOS44NC40MSwxLjI2LjY0YTExLjk0LDExLjk0LDAsMCwxLDEsNC4wOWwwLDBBMi43NywyLjc3LDAsMCwxLDMwLDE2YTIuNzMsMi43''@;'; put 'put ''MywwLDAsMSwuNjguMUExNCwxNCwwLDEsMCwxNi4wOCwzMWEyLjcyLDIuNzIsMCwwLDEsMC0yQTExLjkzLDExLjkzLDAsMCwxLDEwLjg1LDI3LjQ0Wk0xNi43Niw1YTEyLDEyLDAsMCwxLDguNjEsMy42NmMwLC4yNSwwLC41MS0uMDguNzZhMTkuMjEsMTkuMjEsMCwwLDAtMTIuMzUuMTFBMi4y''@;'; put 'put ''OCwyLjI4LDAsMCwwLDExLjc0LDlhMTcsMTcsMCwwLDEtLjYxLTIuNTNBMTEuOTIsMTEuOTIsMCwwLDEsMTYuNzYsNVpNOS42Niw3LjM2YTE4LjcyLDE4LjcyLDAsMCwwLC40OSwxLjkyLDIuMjgsMi4yOCwwLDAsMC0xLjA3LDEuOTNzMCwuMSwwLC4xNUExOS40NSwxOS40NSwwLDAsMCw1LDE0''@;'; put 'put ''Ljc5LDEyLDEyLDAsMCwxLDkuNjYsNy4zNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LDIxLjE5QTMuODQsMy44NCwwLDEsMCwyOC44OCwyNSwzLjg3LDMuODcsMCwwLDAsMjUsMjEuMTlabTAsNi4wOEEy''@;'; put 'put ''LjI0LDIuMjQsMCwxLDEsMjcuMjgsMjUsMi4yNiwyLjI2LDAsMCwxLDI1LDI3LjI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQuMTcsMjQuMTRhMS4xNCwxLjE0LDAsMCwwLS43LTEuMWwtMS41Ni0uNDZx''@;'; put 'put ''LS4xMS0uMzItLjI2LS42M2wuNzItMS4zM2ExLjE0LDEuMTQsMCwwLDAtLjIxLTEuMzRsLTEuMzQtMS4zMmExLjE0LDEuMTQsMCwwLDAtMS4zNC0uMmwtMS4zNC43MWE3LjI4LDcuMjgsMCwwLDAtLjY3LS4yOEwyNywxNi43MWExLjE0LDEuMTQsMCwwLDAtMS4wOC0uNzZIMjRhMS4xNCwxLjE0''@;'; put 'put ''LDAsMCwwLTEuMDguOGwtLjQ0LDEuNDNhNy4zMiw3LjMyLDAsMCwwLS42OC4yOGwtMS4zMi0uN2ExLjE0LDEuMTQsMCwwLDAtMS4zMy4xOWwtMS4zNywxLjMxYTEuMTQsMS4xNCwwLDAsMC0uMjEsMS4zNWwuNywxLjI4cS0uMTYuMzItLjI4LjY1TDE2LjU4LDIzYTEuMTMsMS4xMywwLDAsMC0u''@;'; put 'put ''ODEsMS4wOXYxLjg3QTEuMTQsMS4xNCwwLDAsMCwxNi41OSwyN2wxLjQ3LjQ0cS4xMi4zMi4yOC42NGwtLjcyLDEuMzVhMS4xNCwxLjE0LDAsMCwwLC4yLDEuMzVsMS4zNCwxLjMyYTEuMTQsMS4xNCwwLDAsMCwxLjM0LjJsMS4zNy0uNzJxLjMxLjE0LjYzLjI2bC40NCwxLjQ3YTEuMTQsMS4x''@;'; put 'put ''NCwwLDAsMCwxLjA5LjhoMS45QTEuMTQsMS4xNCwwLDAsMCwyNywzMy4zMWwuNDQtMS40N2MuMjEtLjA3LjQyLS4xNi42Mi0uMjVsMS4zOC43M2ExLjE0LDEuMTQsMCwwLDAsMS4zMy0uMmwxLjM0LTEuMzJhMS4xNCwxLjE0LDAsMCwwLC4yMS0xLjM1bC0uNzMtMS4zNHEuMTQtLjMuMjUtLjZs''@;'; put 'put ''MS41LS40NEExLjEzLDEuMTMsMCwwLDAsMzQuMTcsMjZabS0xLjYsMS41LTIsLjU4LS4xMi40MkE1LjU1LDUuNTUsMCwwLDEsMzAsMjcuNzNsLS4yMS4zOCwxLDEuNzktLjg2Ljg0LTEuODItMS0uMzcuMmE1Ljc4LDUuNzgsMCwwLDEtMS4xMi40NmwtLjQyLjEyLS41OSwySDI0LjM4bC0uNTkt''@;'; put 'put ''MS45NS0uNDItLjEyQTUuODYsNS44NiwwLDAsMSwyMi4yNCwzMGwtLjM3LS4yLTEuODEsMS0uODYtLjg1LDEtMS44Mi0uMjItLjM4YTUuNiw1LjYsMCwwLDEtLjQ5LTEuMTNsLS4xMy0uNDEtMS45NS0uNThWMjQuNDJsMS45NC0uNTguMTItLjQxYTUuNTMsNS41MywwLDAsMSwuNDktMS4xNGwu''@;'; put 'put ''MjItLjM5LTEtMS43My44Ny0uODQsMS43Ny45NC4zOC0uMjFhNS44LDUuOCwwLDAsMSwxLjE3LS40OWwuNDEtLjEyLjU5LTEuOTFoMS4yM2wuNTgsMS45LjQxLjEyYTUuNzksNS43OSwwLDAsMSwxLjE2LjQ4bC4zOC4yMSwxLjgtLjk1Ljg2Ljg1LTEsMS43Ny4yMS4zOGE1LjUzLDUuNTMsMCww''@;'; put 'put ''LDEsLjQ3LDEuMTNsLjEyLjQyLDEuOTMuNTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNCwyMy42MywzMiwyM2E3LjA2LDcuMDYsMCwwLDAtLjU4LTEuNDFsMS0xLjg2YS4zNy4zNywwLDAsMC0uMDctLjQ0''@;'; put 'put ''TDMwLjksMTcuODZhLjM3LjM3LDAsMCwwLS40NC0uMDdsLTEuODUsMWE3LDcsMCwwLDAtMS40My0uNjFsLS42MS0yYS4zNy4zNywwLDAsMC0uMzYtLjI1aC0yYS4zNy4zNywwLDAsMC0uMzUuMjZsLS42MSwyYTcsNywwLDAsMC0xLjQ0LjYxTDIwLDE3LjhhLjM3LjM3LDAsMCwwLS40NC4wN0wx''@;'; put 'put ''OCwxOS4zMWEuMzcuMzcsMCwwLDAtLjA3LjQ0bDEsMS44MkE3LDcsMCwwLDAsMTguMzUsMjNsLTIsLjYxYS4zNy4zNywwLDAsMC0uMjYuMzV2MmEuMzcuMzcsMCwwLDAsLjI2LjM1bDIsLjYxQTcsNywwLDAsMCwxOSwyOC4zN2wtMSwxLjlhLjM3LjM3LDAsMCwwLC4wNy40NGwxLjQ1LDEuNDVh''@;'; put 'put ''LjM3LjM3LDAsMCwwLC40NC4wN2wxLjg3LTFhNy4wNiw3LjA2LDAsMCwwLDEuMzkuNTdsLjYxLDJhLjM3LjM3LDAsMCwwLC4zNS4yNmgyYS4zNy4zNywwLDAsMCwuMzUtLjI2bC42MS0yYTcsNywwLDAsMCwxLjM4LS41N2wxLjg5LDFhLjM3LjM3LDAsMCwwLC40NC0uMDdsMS40NS0xLjQ1YS4z''@;'; put 'put ''Ny4zNywwLDAsMCwuMDctLjQ0bC0xLTEuODhBNyw3LDAsMCwwLDMxLjk1LDI3bDItLjYxYS4zNy4zNywwLDAsMCwuMjYtLjM1VjI0QS4zNy4zNywwLDAsMCwzNCwyMy42M1ptLTguODMsNC43MkEzLjMzLDMuMzMsMCwxLDEsMjguNTMsMjUsMy4zMywzLjMzLDAsMCwxLDI1LjE5LDI4LjM0WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC44NSwyNy40NGEyLjI5LDIuMjksMCwwLDAsMS43NC0xLjY4LDE5LjcxLDE5LjcxLDAsMCwwLDEuODktLjZWMjMuOTVhMiwyLDAsMCwxLC4wOS0uNTUsMTcuNDIsMTcuNDIs''@;'; put 'put ''MCwwLDEtMi4xNy43OCwyLjI4LDIuMjgsMCwwLDAtNC4yOC42M2wtLjQ1LDBoMGExMS45MywxMS45MywwLDAsMS0yLjg4LTcuMjcsMTcuNzksMTcuNzksMCwwLDEsNS00LjcyLDIuMjMsMi4yMywwLDAsMCwyLjI5LjU2LDE4LjUyLDE4LjUyLDAsMCwwLDQuNjUsNS4wOSwxLjkzLDEuOTMsMCww''@;'; put 'put ''LDEsLjIzLS4zMmwuODktLjg3YTE2Ljg5LDE2Ljg5LDAsMCwxLTQuNDktNC44OSwyLjI3LDIuMjcsMCwwLDAsLjM1LTEuMmMwLS4wNywwLS4xNCwwLS4yMkExNy42OSwxNy42OSwwLDAsMSwyNSwxMWExNy40OSwxNy40OSwwLDAsMS0xLjE1LDMuMzUsMS45NCwxLjk0LDAsMCwxLC4zMS0uMDVo''@;'; put 'put ''MS40NWExOS4wNiwxOS4wNiwwLDAsMCwuOS0yLjdjLjQzLjE5Ljg0LjQxLDEuMjYuNjRhMTEuOTMsMTEuOTMsMCwwLDEsMSw0LjYzbDEtLjUxYTIsMiwwLDAsMSwuOTItLjIzaC4wOEExNCwxNCwwLDEsMCwxNi40NCwzMWExLjk0LDEuOTQsMCwwLDEsLjEyLTEuNDZsLjI4LS41M2gtLjA3QTEx''@;'; put 'put ''LjkxLDExLjkxLDAsMCwxLDEwLjg1LDI3LjQ0Wk0xNi43Niw1YTEyLDEyLDAsMCwxLDguNjEsMy42NmMwLC4yNSwwLC41MS0uMDguNzZhMTkuMjEsMTkuMjEsMCwwLDAtMTIuMzUuMTFBMi4yOCwyLjI4LDAsMCwwLDExLjc0LDlhMTcsMTcsMCwwLDEtLjYxLTIuNTNBMTEuOTIsMTEuOTIsMCww''@;'; put 'put ''LDEsMTYuNzYsNVpNOS42Niw3LjM2YTE4LjcyLDE4LjcyLDAsMCwwLC40OSwxLjkyLDIuMjgsMi4yOCwwLDAsMC0xLjA3LDEuOTNzMCwuMSwwLC4xNUExOS40NSwxOS40NSwwLDAsMCw1LDE0Ljc5LDEyLDEyLDAsMCwxLDkuNjYsNy4zNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTIiIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVOZXR3b3JrU3dpdGNoPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy45MSwxOC40NywzMC43OCw4LjQxQTIsMiwwLDAsMCwyOC44Nyw3SDcuMTNBMiwyLDAsMCwwLDUuMjIsOC40MUwyLjA5LDE4LjQ4YTIsMiwwLDAsMC0u''@;'; put 'put ''MDkuNTlWMjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE5LjA2QTIsMiwwLDAsMCwzMy45MSwxOC40N1pNMzIsMjdINFYxOS4wNkw3LjEzLDlIMjguODdMMzIsMTkuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IHg9IjcuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTcuMTEiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjIuMSIg''@;'; put 'put ''eT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNy4xIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjYuMjMiIHk9IjE4IiB3aWR0aD0iMjMuNjkiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjcuMTIiIHk9IjIyIiB3aWR0aD0i''@;'; put 'put ''MS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTcuMTEiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHJlY3QgeD0iMjIuMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNy4xIiB5PSIyMiIgd2lkdGg9IjEuOCIg''@;'; put 'put ''aGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjYuMjMiIHk9IjE4IiB3aWR0aD0iMjMuNjkiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy45MSwxOC40NywzMywxNS40SDMwLjg2TDMyLDE5LjA2VjI3SDRWMTkuMDZMNy4xMyw5SDE5LjU2bDEuMTUtMkg3LjEzQTIsMiwwLDAsMCw1LjIyLDguNDFMMi4wOSwxOC40OGEyLDIs''@;'; put 'put ''MCwwLDAtLjA5LjU5VjI3YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOS4wNkEyLDIsMCwwLDAsMzMuOTEsMTguNDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0y''@;'; put 'put ''Ni44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''OC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjcuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0''@;'; put 'put ''IHg9IjEyLjEyIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNy4xMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjIuMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjcuMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNi4yMyIgeT0i''@;'; put 'put ''MTgiIHdpZHRoPSIyMy42OSIgaGVpZ2h0PSIxLjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy45MSwxOC40N2wtMS42NS01LjMyYTcuNDksNy40OSwwLDAsMS0yLC4zM0wzMiwx''@;'; put 'put ''OS4wNlYyN0g0VjE5LjA2TDcuMTMsOWgxNmE3LjQ1LDcuNDUsMCwwLDEtLjU1LTJINy4xM0EyLDIsMCwwLDAsNS4yMiw4LjQxTDIuMDksMTguNDhhMiwyLDAsMCwwLS4wOS41OVYyN2EyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTkuMDZBMiwyLDAsMCwwLDMzLjkxLDE4LjQ3WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjkxLDE4LjQ3LDMwLjc4LDguNDFBMiwyLDAsMCwwLDI4Ljg3LDdINy4xM0EyLDIsMCwwLDAsNS4yMiw4LjQxTDIuMDksMTguNDhhMiwyLDAsMCwwLS4wOS41OVYyN2EyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJW''@;'; put 'put ''MTkuMDZBMiwyLDAsMCwwLDMzLjkxLDE4LjQ3Wk04LjkyLDI1SDcuMTJWMjJoMS44Wm01LDBoLTEuOFYyMmgxLjhabTUsMGgtMS44VjIyaDEuOFptNSwwSDIyLjFWMjJoMS44Wm01LDBIMjcuMVYyMmgxLjhaTTMxLDE5LjRINVYxOEgzMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMTUuNEgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMC43MSw3SDcuMTNBMiwyLDAsMCwwLDUuMjIsOC40MUwyLjA5LDE4LjQ4YTIsMiwwLDAsMC0uMDkuNTlWMjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAs''@;'; put 'put ''Mi0yVjE5LjA2YTIsMiwwLDAsMC0uMDktLjU5Wk04LjkyLDI1SDcuMTJWMjJoMS44Wm01LDBoLTEuOFYyMmgxLjhabTUsMGgtMS44VjIyaDEuOFptNSwwSDIyLjFWMjJoMS44Wm01LDBIMjcuMVYyMmgxLjhaTTMxLDE5LjRINVYxOEgzMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEu''@;'; put 'put ''MTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yNiwxMy4xNUE3LjQ5LDcuNDksMCwwLDEsMjIuNTcsN0g3LjEzQTIsMiwwLDAsMCw1LjIyLDguNDFMMi4w''@;'; put 'put ''OSwxOC40OGEyLDIsMCwwLDAtLjA5LjU5VjI3YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOS4wNmEyLDIsMCwwLDAtLjA5LS41OVpNOC45MiwyNUg3LjEyVjIyaDEuOFptNSwwaC0xLjhWMjJoMS44Wm01LDBoLTEuOFYyMmgxLjhabTUsMEgyMi4xVjIyaDEuOFptNSwwSDI3LjFW''@;'; put 'put ''MjJoMS44Wk0zMSwxOS40SDVWMThIMzFaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBlUm91dGVyPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwxNC44N2w1LjExLTUuMTRhMSwxLDAsMSwwLTEuNDItMS40MUwxOSwxMVYzLjMzYTEsMSwwLDAsMC0yLDBWMTFMMTQuMzEsOC4z''@;'; put 'put ''MmExLDEsMCwxLDAtMS40MiwxLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjEuMTNsLTUuMTEsNS4xNGExLDEsMCwwLDAsMS40MiwxLjQxTDE3LDI1djcuNjlhMSwxLDAsMCwwLDIsMFYyNWwyLjY5''@;'; put 'put ''LDIuNzFhMSwxLDAsMCwwLDEuNDItMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4Ljg1LDEyLjg5YTEsMSwwLDAsMC0xLjQxLDEuNDJMMzAuMTUsMTdIMjIuNDZhMSwxLDAsMSwwLDAsMmg3LjY5bC0y''@;'; put 'put ''LjcxLDIuNjlhMSwxLDAsMCwwLDEuNDEsMS40MkwzNCwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUuODUsMTloNy42OWExLDEsMCwwLDAsMC0ySDUuODVsMi43MS0yLjY5YTEsMSwwLDEsMC0xLjQxLTEu''@;'; put 'put ''NDJMMiwxOGw1LjE0LDUuMTFhMSwxLDAsMSwwLDEuNDEtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIxLjEzbC01LjExLDUuMTRhMSwxLDAsMCwwLDEuNDIsMS40MUwxNywyNXY3LjY5YTEsMSww''@;'; put 'put ''LDAsMCwyLDBWMjVsMi42OSwyLjcxYTEsMSwwLDAsMCwxLjQyLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljg1LDE5aDcuNjlhMSwxLDAsMCwwLDAtMkg1Ljg1bDIu''@;'; put 'put ''NzEtMi42OWExLDEsMCwxLDAtMS40MS0xLjQyTDIsMThsNS4xNCw1LjExYTEsMSwwLDEsMCwxLjQxLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS4zOCwxNS40SDI4''@;'; put 'put ''LjU0TDMwLjE1LDE3SDIyLjQ2YTEsMSwwLDEsMCwwLDJoNy42OWwtMi43MSwyLjY5YTEsMSwwLDAsMCwxLjQxLDEuNDJMMzQsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0x''@;'; put 'put ''OCwxNC44N2wxLjE1LTEuMTYtLjEtLjE1QTMuNjgsMy42OCwwLDAsMSwxOSwxMFYzLjMzYTEsMSwwLDAsMC0yLDBWMTFMMTQuMzEsOC4zMmExLDEsMCwxLDAtMS40MiwxLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTQuODdsNS4xMS01LjE0YTEsMSwwLDEsMC0xLjQyLTEuNDFMMTksMTFWMy4zM2ExLDEsMCwwLDAtMiwwVjExTDE0LjMxLDguMzJhMSwxLDAsMSwwLTEu''@;'; put 'put ''NDIsMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMS4xM2wtNS4xMSw1LjE0YTEsMSwwLDAsMCwxLjQyLDEuNDFMMTcsMjV2Ny42OWExLDEsMCwwLDAsMiwwVjI1bDIu''@;'; put 'put ''NjksMi43MWExLDEsMCwwLDAsMS40Mi0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4Ljg1LDEyLjg5YTEsMSwwLDAsMC0xLjQxLDEuNDJMMzAuMTUsMTdIMjIuNDZhMSwx''@;'; put 'put ''LDAsMSwwLDAsMmg3LjY5bC0yLjcxLDIuNjlhMSwxLDAsMCwwLDEuNDEsMS40MkwzNCwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljg1LDE5aDcuNjlhMSwxLDAsMCwwLDAt''@;'; put 'put ''Mkg1Ljg1bDIuNzEtMi42OWExLDEsMCwxLDAtMS40MS0xLjQyTDIsMThsNS4xNCw1LjExYTEsMSwwLDEsMCwxLjQxLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIg''@;'; put 'put ''Y3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMS42N2ExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxOCwxLjY3Wk0xMy44Niw5''@;'; put 'put ''LjkyYS44LjgsMCwwLDEsMS4xMywwbDIuMjEsMi4xOVY1LjkzYS44LjgsMCwwLDEsMS42LDB2Ni4xOEwyMSw5LjkyYS44LjgsMCwxLDEsMS4xMywxLjE0TDE4LDE1LjE1bC00LjE0LTQuMUEuOC44LDAsMCwxLDEzLjg2LDkuOTJaTTEwLjMyLDIxLjc0YS44LjgsMCwwLDEtMS4xMywwTDUsMTcu''@;'; put 'put ''NjdsNC4xOS00LjA5YS44LjgsMCwxLDEsMS4xMiwxLjE0bC0yLjIsMi4xNGg2LjI3YS44LjgsMCwwLDEsMCwxLjZIOC4xMWwyLjIsMi4xNUEuOC44LDAsMCwxLDEwLjMyLDIxLjc0Wm0xMS44MiwzLjY3YS44LjgsMCwwLDEtMS4xMywwTDE4LjgsMjMuMjNWMjkuNGEuOC44LDAsMCwxLTEuNiww''@;'; put 'put ''VjIzLjIzTDE1LDI1LjQyYS44LjgsMCwxLDEtMS4xMy0xLjE0TDE4LDIwLjE4bDQuMTQsNC4xQS44LjgsMCwwLDEsMjIuMTQsMjUuNDFabTQuNjctMy42NmEuOC44LDAsMSwxLTEuMTItMS4xNGwyLjItMi4xNUgyMS42M2EuOC44LDAsMCwxLDAtMS42aDYuMjdsLTIuMi0yLjE0YS44LjgsMCwx''@;'; put 'put ''LDEsMS4xMi0xLjE0TDMxLDE3LjY3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy44MiwxNS4zOUgyOC42OEwzMSwxNy42N2wtNC4xOSw0LjA5YS44LjgsMCwxLDEtMS4xMi0xLjE0bDIuMi0yLjE1SDIxLjYzYS44''@;'; put 'put ''LjgsMCwwLDEsMC0xLjZoNi4yN2wtMS41LTEuNDdIMjIuMjNhMy42OCwzLjY4LDAsMCwxLTMtMS41MUwxOCwxNS4xNWwtNC4xNC00LjFBLjguOCwwLDEsMSwxNSw5LjkybDIuMjEsMi4xOVY1LjkzYS44LjgsMCwwLDEsMS42LDB2NC40OUEzLjY1LDMuNjUsMCwwLDEsMTksOS44OWw0LjIyLTcu''@;'; put 'put ''MzFBMTYsMTYsMCwxLDAsMzQsMTcuNjcsMTYsMTYsMCwwLDAsMzMuODIsMTUuMzlabS0yMy41LDYuMzVhLjguOCwwLDAsMS0xLjEzLDBMNSwxNy42N2w0LjE5LTQuMDlhLjguOCwwLDEsMSwxLjEyLDEuMTRsLTIuMiwyLjE0aDYuMjdhLjguOCwwLDAsMSwwLDEuNkg4LjExbDIuMiwyLjE1QS44''@;'; put 'put ''LjgsMCwwLDEsMTAuMzIsMjEuNzRabTExLjgyLDMuNjdhLjguOCwwLDAsMS0xLjEzLDBMMTguOCwyMy4yM1YyOS40YS44LjgsMCwwLDEtMS42LDBWMjMuMjNMMTUsMjUuNDJhLjguOCwwLDEsMS0xLjEzLTEuMTRMMTgsMjAuMThsNC4xNCw0LjFBLjguOCwwLDAsMSwyMi4xNCwyNS40MVoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEu''@;'; put 'put ''MTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4yMiwxMi43NkE3LjQ5LDcuNDksMCwwLDEsMjMuMzIsMi42''@;'; put 'put ''YTE2LDE2LDAsMSwwLDkuOSwxMC4xN1pNMTMuODYsOS45MmEuOC44LDAsMCwxLDEuMTMsMGwyLjIxLDIuMTlWNS45M2EuOC44LDAsMCwxLDEuNiwwdjYuMThMMjEsOS45MmEuOC44LDAsMSwxLDEuMTMsMS4xNEwxOCwxNS4xNWwtNC4xNC00LjFBLjguOCwwLDAsMSwxMy44Niw5LjkyWk0xMC4z''@;'; put 'put ''MiwyMS43NGEuOC44LDAsMCwxLTEuMTMsMEw1LDE3LjY3bDQuMTktNC4wOWEuOC44LDAsMSwxLDEuMTIsMS4xNGwtMi4yLDIuMTRoNi4yN2EuOC44LDAsMCwxLDAsMS42SDguMTFsMi4yLDIuMTVBLjguOCwwLDAsMSwxMC4zMiwyMS43NFptMTEuODIsMy42N2EuOC44LDAsMCwxLTEuMTMsMEwx''@;'; put 'put ''OC44LDIzLjIzVjI5LjRhLjguOCwwLDAsMS0xLjYsMFYyMy4yM0wxNSwyNS40MmEuOC44LDAsMSwxLTEuMTMtMS4xNEwxOCwyMC4xOGw0LjE0LDQuMUEuOC44LDAsMCwxLDIyLjE0LDI1LjQxWm00LjY3LTMuNjZhLjguOCwwLDEsMS0xLjEyLTEuMTRsMi4yLTIuMTVIMjEuNjNhLjguOCwwLDAs''@;'; put 'put ''MSwwLTEuNmg2LjI3bC0yLjItMi4xNGEuOC44LDAsMSwxLDEuMTItMS4xNEwzMSwxNy42N1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVWTT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTEsNUgyNVY4aDJWNWEyLDIsMCwwLDAtMi0ySDExQTIsMiwwLDAsMCw5LDV2Ni44NWgy''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTBIMTd2Mmg4djZoMlYxMmgzVjI2SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMxYTIsMiwwLDAsMCwyLDJIMjBhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlYyOGg4YTIsMiwwLDAsMCwyLTJWMTJBMiwyLDAsMCwwLDMwLDEwWk02LDMxVjE3SDIwdjlIMTZWMjBIMTR2NmEyLDIsMCwwLDAsMiwyaDR2M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLDVIMjEuODdM''@;'; put 'put ''MjMsM0gxMUEyLDIsMCwwLDAsOSw1djYuODVoMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjUuMDEiIHk9IjE1LjQiIHdpZHRoPSIxLjk5IiBoZWlnaHQ9IjIuNiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTUuNFYyNkgyMlYxN2EyLDIsMCwwLDAtMi0ySDZhMiwyLDAsMCwwLTIsMlYzMWEyLDIsMCwwLDAsMiwySDIwYTIsMiwwLDAsMCwyLTJWMjho''@;'; put 'put ''OGEyLDIsMCwwLDAsMi0yVjE1LjRaTTYsMzFWMTdIMjB2OUgxNlYyMEgxNHY2YTIsMiwwLDAsMCwyLDJoNHYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsMTB2MmgxLjU3''@;'; put 'put ''QTMuNjcsMy42NywwLDAsMSwxOSwxMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEu''@;'; put 'put ''MjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEx''@;'; put 'put ''LDVIMjIuNTdhNy40NSw3LjQ1LDAsMCwxLC41NS0ySDExQTIsMiwwLDAsMCw5LDV2Ni44NWgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVoMFYyNkgyMlYxN2EyLDIs''@;'; put 'put ''MCwwLDAtMi0ySDZhMiwyLDAsMCwwLTIsMlYzMWEyLDIsMCwwLDAsMiwySDIwYTIsMiwwLDAsMCwyLTJWMjhoOGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41Wk02LDMxVjE3SDIwdjlIMTZWMjBIMTR2NmEyLDIsMCwwLDAsMiwyaDR2M1oiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywxMmg4djZoMlYxMi44N0E3LjUyLDcuNTIsMCwwLDEsMjMuNjYsMTBIMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNTks''@;'; put 'put ''MTJhMy42LDMuNiwwLDAsMSwzLjYtMy42SDI3VjVhMiwyLDAsMCwwLTItMkgxMUEyLDIsMCwwLDAsOSw1djguNGg0LjU5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMEgxNy4xOWEyLDIsMCwwLDAtMiwydjEu''@;'; put 'put ''NEgyMEEzLjYsMy42LDAsMCwxLDIzLjYsMTd2OEgyMlYxN2EyLDIsMCwwLDAtMi0ySDZhMiwyLDAsMCwwLTIsMlYzMWEyLDIsMCwwLDAsMiwySDIwYTIsMiwwLDAsMCwyLTJWMjkuNkgxNy4xOWEzLjYsMy42LDAsMCwxLTMuNi0zLjZWMjBoMS42djZhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCww''@;'; put 'put ''LDAsMi0yVjEyQTIsMiwwLDAsMCwzMCwxMFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNTksMTJhMy42LDMuNiwwLDAsMSwzLjYtMy42aDIuNzJMMjMsM0gxMUEyLDIsMCwwLDAsOSw1djguNGg0LjU5WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy4xOSwxMGEyLDIsMCwwLDAtMiwydjEuNEgxOUEzLjY4LDMuNjgsMCwwLDEsMTksMTBaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjIxLDE1LjRBMy41NSwzLjU1LDAsMCwxLDIzLjYsMTd2OEgyMlYxN2EyLDIsMCwwLDAtMi0ySDZhMiwyLDAsMCwwLTIsMlYzMWEyLDIsMCwwLDAsMiwySDIwYTIsMiwwLDAsMCwyLTJWMjkuNkgx''@;'; put 'put ''Ny4xOWEzLjYsMy42LDAsMCwxLTMuNi0zLjZWMjBoMS42djZhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE1LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEu''@;'; put 'put ''MTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNTksMTJhMy42LDMuNiwwLDAsMSwzLjYtMy42SDIyLjlBNy40NSw3LjQ1LDAsMCwxLDIzLjEzLDNIMTFBMiwyLDAsMCwwLDksNXY4LjRoNC41OVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVBNy40OSw3LjQ5LDAsMCwxLDIzLjY2LDEwSDE3LjE5YTIsMiwwLDAsMC0yLDJ2MS40SDIwQTMuNiwzLjYsMCwwLDEsMjMuNiwxN3Y4SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMx''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMjBhMiwyLDAsMCwwLDItMlYyOS42SDE3LjE5YTMuNiwzLjYsMCwwLDEtMy42LTMuNlYyMGgxLjZ2NmEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBl''@;'; put 'put ''Vk1XQXBwPSgwLEUuY2xySWNvblNWRykoJzxwb2x5Z29uIHBvaW50cz0iMjggMjIgMzAgMjIgMzAgMzAgMjIgMzAgMjIgMjggMjAgMjggMjAgMzIgMzIgMzIgMzIgMjAgMjggMjAgMjggMjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBvbHlnb24gcG9pbnRzPSIxNCAzMCA2IDMwIDYgMjIgOCAyMiA4IDIwIDQgMjAgNCAzMiAxNiAzMiAxNiAyOCAxNCAyOCAxNCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjggMTQgNiAx''@;'; put 'put ''NCA2IDYgMTQgNiAxNCA4IDE2IDggMTYgNCA0IDQgNCAxNiA4IDE2IDggMTQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIyMCA0IDIwIDggMjIgOCAyMiA2IDMwIDYgMzAgMTQgMjggMTQgMjggMTYg''@;'; put 'put ''MzIgMTYgMzIgNCAyMCA0IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxMSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cmVjdCB4PSIxOSIgeT0iMTEiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjE5IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE5IiB5PSIxOSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjI4''@;'; put 'put ''IDIyIDMwIDIyIDMwIDMwIDIyIDMwIDIyIDI4IDIwIDI4IDIwIDMyIDMyIDMyIDMyIDIwIDI4IDIwIDI4IDIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTQgMzAg''@;'; put 'put ''NiAzMCA2IDIyIDggMjIgOCAyMCA0IDIwIDQgMzIgMTYgMzIgMTYgMjggMTQgMjggMTQgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDE0IDYgMTQgNiA2IDE0''@;'; put 'put ''IDYgMTQgOCAxNiA4IDE2IDQgNCA0IDQgMTYgOCAxNiA4IDE0IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxMSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTkiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVy''@;'; put 'put ''dGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTkiIHk9IjE5IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNSwxNS40SDIyLjIzQTMu''@;'; put 'put ''NjksMy42OSwwLDAsMSwxOSwxMy41NmwwLS4xVjE3aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjIuNDUgNCAyMCA0IDIwIDggMjAuMTQgOCAyMi40NSA0IiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI4IiB5PSIxNS40IiB3aWR0aD0iNCIgaGVpZ2h0PSIwLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC05LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjggMjIgMzAgMjIgMzAgMzAgMjIgMzAgMjIgMjggMjAgMjggMjAgMzIgMzIgMzIgMzIgMjAgMjggMjAgMjgg''@;'; put 'put ''MjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTQgMzAgNiAzMCA2IDIyIDggMjIgOCAyMCA0IDIwIDQgMzIgMTYgMzIgMTYgMjggMTQgMjggMTQgMzAiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAxNCA2IDE0IDYgNiAxNCA2IDE0IDggMTYgOCAxNiA0IDQgNCA0IDE2IDggMTYgOCAxNCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjExIiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cmVjdCB4PSIxMSIgeT0iMTkiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE5IiB5PSIxOSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDZoLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDIwVjhoMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTct''@;'; put 'put ''LWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41VjE0SDI4djJoNFYxMy4yMkE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0yNSwxMS41OGE3LjUzLDcuNTMsMCwwLDEtLjU4LS41OEgxOXY2aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC05LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBlQ2VydGlmaWNhdGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMTls''@;'; put 'put ''LjU3LS43LjkzLTEuMTRMMjAuNDEsMjhINFY4SDMybDAsOC41NmE4LjQxLDguNDEsMCwwLDEsMiwxLjgxVjhBMiwyLDAsMCwwLDMyLDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjEyIiB3aWR0aD0i''@;'; put 'put ''MTciIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjE2IiB3aWR0aD0iMTEiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjIzIiB3aWR0aD0iMTAiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy40NiwxNy4yM2E2LjM2LDYuMzYsMCwwLDAtNC40LDExbC0xLjk0''@;'; put 'put ''LDIuMzcuOSwzLjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYsNC40Ni45LTMuNjEtMS45NC0yLjM3YTYuMzYsNi4zNiwwLDAsMC00LjQtMTFabTAsMTAuNjhhNC4zMSw0LjMxLDAsMSwxLDQuMzctNC4zMUE0LjM1LDQuMzUsMCwwLDEsMjcuNDYsMjcuOTFaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjE2IiB3aWR0aD0iMTEiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjIzIiB3aWR0aD0iMTAiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy40NiwxNy4yM2E2LjM2LDYuMzYsMCww''@;'; put 'put ''LDAtNC40LDExbC0xLjk0LDIuMzcuOSwzLjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYsNC40Ni45LTMuNjEtMS45NC0yLjM3YTYuMzYsNi4zNiwwLDAsMC00LjQtMTFabTAsMTAuNjhhNC4zMSw0LjMxLDAsMSwxLDQuMzctNC4zMUE0LjM1LDQuMzUsMCwwLDEsMjcu''@;'; put 'put ''NDYsMjcuOTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwxMy41NkEzLjY2LDMuNjYsMCwwLDEsMTguNTcsMTJIN3YxLjZIMTkuMDdaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMydjEuMTZhOC40MSw4LjQxLDAsMCwxLDIsMS44MXYtM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01''@;'; put 'put ''LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMjhWOEgyMC4xNGwxLjE1LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMTlsLjU3LS43LjkzLTEuMTRMMjAuNDEsMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjEyIiB3aWR0aD0iMTciIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI3IiB5PSIxNiIgd2lkdGg9IjExIiBoZWlnaHQ9IjEuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIg''@;'; put 'put ''eT0iMjMiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy40NiwxNy4yM2E2LjM2LDYuMzYsMCwwLDAtNC40LDExbC0xLjk0LDIuMzcuOSwz''@;'; put 'put ''LjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYsNC40Ni45LTMuNjEtMS45NC0yLjM3YTYuMzYsNi4zNiwwLDAsMC00LjQtMTFabTAsMTAuNjhhNC4zMSw0LjMxLDAsMSwxLDQuMzctNC4zMUE0LjM1LDQuMzUsMCwwLDEsMjcuNDYsMjcuOTFaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJ2My4zNGE4LjQxLDguNDEsMCwwLDEsMiwxLjgxdi02QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDI4VjhIMjIuNzhhNy40OSw3LjQ5LDAsMCwxLS4yOC0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDE5bC41Ny0uNy45My0xLjE0TDIwLjQxLDI4WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIGNsci1pLWJhZGdl''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDMwSDRhMiwyLDAsMCwxLTItMlY4QTIsMiwwLDAsMSw0LDZIMzJhMiwyLDAsMCwxLDIsMlYxOC4zN2E4LjM0LDguMzQsMCwwLDAtMTMuNDksOS43OWwtLjkzLDEuMTRaTTcsMTJ2MS42SDI0VjEyWm0wLDUuNkgxOFYxNkg3Wm0wLDdIMTdW''@;'; put 'put ''MjNIN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuODMsMjMuNTlhNi4zNyw2LjM3LDAsMSwwLTEwLjc3LDQuNTlsLTEuOTQsMi4zNy45LDMuNjEsMy42Ni00LjQ2YTYuMjYsNi4yNiwwLDAsMCwzLjU1LDBsMy42''@;'; put 'put ''Niw0LjQ2LjktMy42MS0xLjk0LTIuMzdBNi4zNCw2LjM0LDAsMCwwLDMzLjgzLDIzLjU5Wm0tMTAuNzQsMGE0LjM3LDQuMzcsMCwxLDEsNC4zNyw0LjMxQTQuMzUsNC4zNSwwLDAsMSwyMy4xLDIzLjU5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0zMy44MywyMy41OWE2LjM3LDYuMzcsMCwxLDAtMTAuNzcsNC41OWwtMS45NCwyLjM3LjksMy42MSwzLjY2LTQuNDZhNi4yNiw2LjI2LDAsMCwwLDMuNTUsMGwzLjY2LDQuNDYuOS0zLjYxLTEuOTQtMi4zN0E2LjM0LDYuMzQsMCwwLDAsMzMuODMsMjMuNTlabS0x''@;'; put 'put ''MC43NCwwYTQuMzcsNC4zNywwLDEsMSw0LjM3LDQuMzFBNC4zNSw0LjM1LDAsMCwxLDIzLjEsMjMuNTlaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMjkuMjVhOC4z''@;'; put 'put ''Niw4LjM2LDAsMCwxLDQuNzUsM3YtM1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuMDcsMTMuNkg3VjEySDE4LjU3QTMuNjcsMy42NywwLDAsMSwxOSw5Ljg5TDIxLjI5LDZINEEy''@;'; put 'put ''LDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMTlsLjU3LS43LjkzLTEuMTRBOC4zNCw4LjM0LDAsMCwxLDI1LjY2LDE1LjRIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LjA3LDEzLjZaTTE3LDI0LjZIN1YyM0gxN1ptMS03SDdWMTZIMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44''@;'; put 'put ''NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuNDYsMTcuMjNhNi4zNiw2LjM2LDAsMCwwLTQuNCwxMWwtMS45NCwyLjM3LjksMy42MSwzLjY2LTQu''@;'; put 'put ''NDZhNi4yNiw2LjI2LDAsMCwwLDMuNTUsMGwzLjY2LDQuNDYuOS0zLjYxLTEuOTQtMi4zN2E2LjM2LDYuMzYsMCwwLDAtNC40LTExWm0wLDEwLjY4YTQuMzEsNC4zMSwwLDEsMSw0LjM3LTQuMzFBNC4zNSw0LjM1LDAsMCwxLDI3LjQ2LDI3LjkxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIyLjUsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgxOWwuNTctLjcuOTMtMS4xNEE4LjM0LDguMzQsMCwwLDEsMzQsMTguMzd2LTZB''@;'; put 'put ''Ny40Niw3LjQ2LDAsMCwxLDMwLDEzLjVaTTE3LDI0LjZIN1YyM0gxN1ptMS03SDdWMTZIMThabTYtNEg3VjEySDI0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9''@;'; put 'put ''IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZUFyY2hpdmU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LDMySDdWMjJINVYzMmEyLDIsMCwwLDAsMiwySDI5''@;'; put 'put ''YTIsMiwwLDAsMCwyLTJWMjJIMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNCwyNGExLDEsMCwwLDAsMSwxaDZhMSwxLDAsMCwwLDAtMkgxNUExLDEsMCwwLDAsMTQsMjRaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNCwxOEg2VjE0aDRhMywzLDAsMCwxLS42OC0xLjg3czAtLjA5LDAtLjEzSDUuNUExLjUsMS41LDAsMCwwLDQsMTMuNVYyMEgxNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjUsMTJIMjYuNjZzMCwuMDksMCwuMTNBMywzLDAsMCwxLDI2LDE0aDR2NEgyMmwtMiwySDMyVjEzLjVBMS41LDEuNSwwLDAsMCwzMC41LDEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTkuMThsNi4zOC02LjM1QTEsMSwwLDEsMCwyMywxMS40MWwtNCwzLjk1VjNhMSwxLDAsMSwwLTIsMHYxMi40bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LjQxLDIwLjYsMTgsMjJsLTEuNDEtMS40TDE2LDIwSDVWMzJhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAsMi0yVjIwSDIwWk0yMiwyNGExLDEsMCwwLDEtMSwxSDE1YTEsMSwwLDAsMSwwLTJoNkExLDEsMCwwLDEsMjIsMjRaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjUsMTJIMjYuNjZzMCwuMDksMCwuMTNhMywzLDAsMCwxLS44OCwyLjEyTDIyLDE4SDMyVjEzLjVBMS41LDEuNSwwLDAsMCwzMC41LDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yLDE0LjI1YTMsMywwLDAsMS0uODgtMi4xMnMwLS4wOSwwLS4xM0g1LjVBMS41LDEuNSwwLDAsMCw0LDEzLjVWMThIMTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTE4LDE5LjE4bDYuMzgtNi4zNUExLDEsMCwxLDAsMjMsMTEuNDFsLTQsMy45NVYzYTEsMSwwLDEsMC0yLDB2MTIuNGwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPlxuICAgICAgICAn''@;'; put 'put ''KSxMLkNsclNoYXBlVW5hcmNoaXZlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOSwzMkg3VjIySDVWMzJhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAsMi0yVjIySDI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMTQsMjRhMSwxLDAsMCwwLDEsMWg2YTEsMSwwLDAsMCwwLTJIMTVBMSwxLDAsMCwwLDE0LDI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUsMThINlYxNGg5VjEySDUuNUExLjUsMS41LDAs''@;'; put 'put ''MCwwLDQsMTMuNVYyMEgxNS43OEEzLDMsMCwwLDEsMTUsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC41LDEySDIxdjJoOXY0SDIxYTMsMywwLDAsMS0uNzgsMkgzMlYxMy41QTEuNSwxLjUsMCwwLDAs''@;'; put 'put ''MzAuNSwxMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLDkuNTUsMTcsNS42VjE4YTEsMSwwLDEsMCwyLDBWNS42bDQsMy45NWExLDEsMCwxLDAsMS40MS0xLjQyTDE4LDEuNzgsMTEuNjEsOC4xM0ExLDEs''@;'; put 'put ''MCwwLDAsMTMsOS41NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIxYTMsMywwLDAsMS0yLjIyLTFINVYzMmEyLDIsMCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjBIMjAuMjFBMywzLDAsMCwxLDE4''@;'; put 'put ''LDIxWm00LDNhMSwxLDAsMCwxLTEsMUgxNWExLDEsMCwwLDEsMC0yaDZBMSwxLDAsMCwxLDIyLDI0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSwxMkg1LjVBMS41LDEuNSwwLDAsMCw0LDEzLjVWMThIMTVaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjUsMTJIMjF2NkgzMlYxMy41QTEuNSwxLjUsMCwwLDAsMzAuNSwxMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMTMsOS41NSwxNyw1LjZWMThhMSwxLDAsMSwwLDIsMFY1LjZsNCwzLjk1YTEsMSwwLDEsMCwxLjQxLTEuNDJMMTgsMS43OCwxMS42MSw4LjEzQTEsMSwwLDAsMCwxMyw5LjU1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz5cbiAgICAgICAgJyks''@;'; put 'put ''TC5DbHJTaGFwZUNvbm5lY3Q9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDE3SDI4LjIzQTYuMjUsNi4yNSwwLDAsMCwyMiwxMkgxNC4xNWE2LjI1LDYuMjUsMCwwLDAtNi4yMSw1SDJ2Mkg3LjkzYTYuMjIsNi4yMiwwLDAsMCw2LjIyLDVIMjJhNi4yMiw2LjIyLDAsMCwwLDYuMjIt''@;'; put 'put ''NUgzNFpNMTcuMDgsMjJIMTQuMTVhNC4xNyw0LjE3LDAsMCwxLTQuMzEtNCw0LjE3LDQuMTcsMCwwLDEsNC4zMS00aDIuOTRaTTIyLDIySDE5VjE0aDNhNC4xNyw0LjE3LDAsMCwxLDQuMzEsNEE0LjE3LDQuMTcsMCwwLDEsMjIsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywxMkgxNC4xNWE2LjI1LDYuMjUsMCwwLDAtNi4yMSw1SDJ2Mkg3LjkzYTYuMjIsNi4yMiwwLDAsMCw2LjIyLDVIMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTI4LjIzLDE3QTYuMjUsNi4yNSwwLDAsMCwyMiwxMkgxOVYyNGgzYTYuMjIsNi4yMiwwLDAsMCw2LjIyLTVIMzRWMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBlRGlzY29ubmVjdD0oMCxFLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMTIuMTcsNkE2LjIxLDYuMjEsMCwwLDAsNiwxMUgyLjEzdjJINmE2LjIzLDYuMjMsMCwwLDAsNi4yMSw1SDE3VjZaTTE1LjEsMTZIMTIuMTdhNC4yLDQuMiwwLDAsMS00LjMxLTQsNC4xNyw0LjE3LDAsMCwxLDQuMzEtNEgxNS4xWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuOTIsMjNIMzAuMTRhNi4yNSw2LjI1LDAsMCwwLTYuMjEtNUgxOXYySDE0YTEsMSwwLDEsMCwwLDJoNXY0SDE0YTEsMSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEsMWg1djJoNC45NGE2LjIzLDYu''@;'; put 'put ''MjMsMCwwLDAsNi4yMi01aDMuNzZabS0xMCw1SDIxVjIwaDIuOTRhNC4xNyw0LjE3LDAsMCwxLDQuMzEsNEE0LjE3LDQuMTcsMCwwLDEsMjMuOTQsMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMiw2YTYu''@;'; put 'put ''MjEsNi4yMSwwLDAsMC02LjIxLDVIMnYySDUuODNBNi4yMyw2LjIzLDAsMCwwLDEyLDE4SDE3VjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjc5LDIzSDMwLjE0YTYuMjUsNi4yNSwwLDAsMC02LjIxLTVIMTl2''@;'; put 'put ''MkgxNGExLDEsMCwwLDAtMSwxLDEsMSwwLDAsMCwxLDFoNXY0SDE0YTEsMSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEsMWg1djJoNC45NGE2LjIzLDYuMjMsMCwwLDAsNi4yMi01aDMuNjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAnKSxMLkNs''@;'; put 'put ''clNoYXBlTGluaz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTcuNiwyNC4zMmwtMi40NiwyLjQ0YTQsNCwwLDAsMS01LjYyLDAsMy45MiwzLjkyLDAsMCwxLDAtNS41NWw0LjY5LTQuNjVhNCw0LDAsMCwxLDUuNjIsMCwzLjg2LDMuODYsMCwwLDEsMSwxLjcxQTIsMiwwLDAsMCwyMS4x''@;'; put 'put ''LDE4bDEuMjktMS4yOGE1Ljg5LDUuODksMCwwLDAtMS4xNS0xLjYyLDYsNiwwLDAsMC04LjQ0LDBMOC4xLDE5Ljc5YTUuOTEsNS45MSwwLDAsMCwwLDguMzksNiw2LDAsMCwwLDguNDQsMGwzLjY1LTMuNjJjLS4xNywwLS4zMywwLS41LDBBOCw4LDAsMCwxLDE3LjYsMjQuMzJaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC42MSw3LjgyYTYsNiwwLDAsMC04LjQ0LDBsLTMuNjUsMy42MmMuMTcsMCwuMzMsMCwuNDksMGgwYTgsOCwwLDAsMSwyLjEuMjhsMi40Ni0yLjQ0YTQsNCwwLDAsMSw1LjYyLDAs''@;'; put 'put ''My45MiwzLjkyLDAsMCwxLDAsNS41NWwtNC42OSw0LjY1YTQsNCwwLDAsMS01LjYyLDAsMy44NiwzLjg2LDAsMCwxLTEtMS43MSwyLDIsMCwwLDAtLjI4LjIzbC0xLjI5LDEuMjhhNS44OSw1Ljg5LDAsMCwwLDEuMTUsMS42Miw2LDYsMCwwLDAsOC40NCwwbDQuNjktNC42NWE1LjkyLDUuOTIs''@;'; put 'put ''MCwwLDAsMC04LjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVVbmxpbms9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTUsNSwzLjU5LDYuNDFsOSw5TDguMSwxOS43OWE1LjkxLDUuOTEsMCwwLDAsMCw4''@;'; put 'put ''LjM5LDYsNiwwLDAsMCw4LjQ0LDBMMjEsMjMuNzhsOC42Myw4LjYzTDMxLDMxWk0xNS4xMywyNi43NmE0LDQsMCwwLDEtNS42MiwwLDMuOTIsMy45MiwwLDAsMSwwLTUuNTVMMTQsMTYuNzlsNS41OCw1LjU4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTMsOS4yMmE0LDQsMCwwLDEsNS42MiwwLDMuOTIsMy45MiwwLDAsMSwwLDUuNTVsLTQuNzksNC43NkwyMy43OCwyMWw0Ljc5LTQuNzZhNS45Miw1LjkyLDAsMCwwLDAtOC4zOSw2LDYsMCwwLDAtOC40NCwwbC00Ljc2LDQuNzRMMTYuNzgsMTRa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgJyksTC5DbHJTaGFwZUNsb3VkTmV0d29yaz0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAuNzEsMTUuMTh2LTFBMTEuMjgsMTEuMjgsMCwwLDAsMTkuNTYsMi44M2gtLjExYTExLjI4''@;'; put 'put ''LDExLjI4LDAsMCwwLTExLDguOTMsNy40Nyw3LjQ3LDAsMCwwLDAsMTQuOTRIMjkuMTNhNS44Niw1Ljg2LDAsMCwwLDEuNTgtMTEuNTJaTTI5LjEzLDI0LjdIOC40NmE1LjQ3LDUuNDcsMCwxLDEsMC0xMC45NGgxLjY5bC4xMS0uODdhOS4yNyw5LjI3LDAsMCwxLDE4LjQ1LDEuM3YxLjI4YzAs''@;'; put 'put ''LjA5LDAsLjE4LDAsLjI3bC0uMDcsMS4xNS45NC4xMWEzLjg2LDMuODYsMCwwLDEtLjQzLDcuNzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS41OCwzMS4xOEgxOC44NXYtMi40aC0ydjIuNEg2LjA4YTEs''@;'; put 'put ''MSwwLDAsMCwwLDJoMjMuNWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVDbG91ZFNjYWxlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik02LjMyLDExLjExSDcuODRMOCwxMC4yNEE3''@;'; put 'put ''LjE5LDcuMTksMCwwLDEsMTUuMDcsNGguMDdhNy4xNSw3LjE1LDAsMCwxLDQuNzEsMS44MywxMS4xLDExLjEsMCwwLDEsMy4wOS42NEE5LjE4LDkuMTgsMCwwLDAsMTUuMTYsMmgtLjA5QTkuMiw5LjIsMCwwLDAsNi4xMyw5LjExLDYuMTUsNi4xNSwwLDAsMCwyLjMzLDE5Ljk1LDguMDksOC4w''@;'; put 'put ''OSwwLDAsMSwzLDE3LjcxYTQuMTIsNC4xMiwwLDAsMS0uODEtMi40NEE0LjE2LDQuMTYsMCwwLDEsNi4zMiwxMS4xMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjQsMTYuOTFoMS41MkwxMiwxNmE3LjE5''@;'; put 'put ''LDcuMTksMCwwLDEsNy4xMi02LjI1aC4wN2E3LjE3LDcuMTcsMCwwLDEsNS43LDIuOTIsMTEuMDUsMTEuMDUsMCwwLDEsMi43Mi43Nyw5LjIsOS4yLDAsMCwwLTguNC01LjY5aC0uMDlhOS4yLDkuMiwwLDAsMC04Ljk0LDcuMTIsNi4xNSw2LjE1LDAsMCwwLTMuNjQsMTEsOC4xMSw4LjExLDAs''@;'; put 'put ''MCwxLC43OS0yLDQuMTQsNC4xNCwwLDAsMSwzLTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi40MiwyNC40N3YtLjYyYTkuMTgsOS4xOCwwLDAsMC0xOC4xMy0yLjE2QTYuMTYsNi4xNiwwLDAsMCwxNC40''@;'; put 'put ''OCwzNEgzMWE0Ljg4LDQuODgsMCwwLDAsMS40Ni05LjUzWk0zMSwzMkgxNC40OGE0LjE2LDQuMTYsMCwxLDEsMC04LjMySDE2bC4xMS0uODdhNy4xOSw3LjE5LDAsMCwxLDcuMTItNi4yNWguMDdhNy4yMSw3LjIxLDAsMCwxLDcuMTIsNy4yNXYxYzAsLjA3LDAsLjEzLDAsLjJsLS4wNywxLjEx''@;'; put 'put ''Ljk0LjExQTIuODgsMi44OCwwLDAsMSwzMSwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBlQ2xvdWRUcmFmZmljPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi41NCwyMC44MmEuODguODgsMCwwLDAt''@;'; put 'put ''Ljg4LS44OEgyMC43NWwxLjEtMS4xQS44OC44OCwwLDAsMCwyMC42LDE3LjZsLTMuMjEsMy4yMkwyMC42LDI0YS44OC44OCwwLDEsMCwxLjI1LTEuMjRMMjAuNzYsMjEuN2g0LjlBLjg4Ljg4LDAsMCwwLDI2LjU0LDIwLjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuMjcsMjEuN2EuODguODgsMCwxLDAsMC0xLjc2aC0uNThhLjg4Ljg4LDAsMSwwLDAsMS43NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjIx''@;'; put 'put ''LDIwaC0uMDZhLjg1Ljg1LDAsMCwwLS44NS44OC45MS45MSwwLDAsMCwuOTEuODguODguODgsMCwxLDAsMC0xLjc2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuNTksMTFhLjg4Ljg4LDAsMCwwLTEuMjUs''@;'; put 'put ''MS4yNGwxLjEsMS4xSDI3LjUzYS44OC44OCwwLDEsMCwwLDEuNzZoNC45bC0xLjA5LDEuMDlhLjg4Ljg4LDAsMCwwLDEuMjUsMS4yNGwzLjIxLTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC41LDE1''@;'; put 'put ''LjA3YS44OC44OCwwLDEsMCwwLTEuNzZoLS41OGEuODguODgsMCwxLDAsMCwxLjc2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEuOSwxNC4yN2EuODUuODUsMCwwLDAtLjg1LS44OEgyMWEuODguODgsMCwx''@;'; put 'put ''LDAsMCwxLjc2QS45MS45MSwwLDAsMCwyMS45LDE0LjI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuMzYsMjMuNjVjMCwuMTMsMCwuMjYsMCwuMzlhMy43NywzLjc3LDAsMCwxLTMuNjIsMy44OUg3LjI4''@;'; put 'put ''YTUuMzIsNS4zMiwwLDAsMS01LjEzLTUuNDhBNS4zMiw1LjMyLDAsMCwxLDcuMjgsMTdIOC45MUw5LDE2LjEyYTguOTIsOC45MiwwLDAsMSw4LjYyLThoLjA4YTguNDksOC40OSwwLDAsMSw2LjU2LDMuMjloMi4zN2ExMC41NSwxMC41NSwwLDAsMC04LjkxLTUuMjVoLS4xMUExMC44MiwxMC44''@;'; put 'put ''MiwwLDAsMCw3LjIyLDE1YTcuMjgsNy4yOCwwLDAsMC03LDcuNDMsNy4yNyw3LjI3LDAsMCwwLDcuMDgsNy40M0gyNi43N0E1LjcyLDUuNzIsMCwwLDAsMzIuMzUsMjRhMy43NywzLjc3LDAsMCwwLDAtLjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+''@;'; put 'put ''XG4gICAgICAgICcpLEwuQ2xyU2hhcGVEZXBsb3k9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMywySDIyLjFhMSwxLDAsMCwwLDAsMmg4LjUzbC04LjgyLDlhMSwxLDAsMSwwLDEuNDMsMS40TDMyLDUuNDZW''@;'; put 'put ''MTMuOWExLDEsMCwwLDAsMiwwVjNBMSwxLDAsMCwwLDMzLDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTExLjU0LDEwLjczbC05LDUuMTdhMSwxLDAsMCwwLS41Ljg3djExYTEsMSwwLDAsMCwuNS44N2w5LDUu''@;'; put 'put ''MTVhMSwxLDAsMCwwLDEsMGw5LTUuMTVhMSwxLDAsMCwwLC41LS44N3YtMTFhMSwxLDAsMCwwLS41LS44N2wtOS01LjE3QTEsMSwwLDAsMCwxMS41NCwxMC43M1pNMTEsMzEuMDhsLTctNFYxOC40NGw3LDRaTTEyLDIxLDQuODEsMTYuODcsMTIsMTIuNzhsNy4yMSw0LjEyWm04LDYuMDktNyw0''@;'; put 'put ''VjIyLjQ0bDctNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMywySDIyLjFhMSwxLDAsMCwwLDAsMmg4LjUzbC04LjgyLDlhMSwxLDAsMSwwLDEuNDMsMS40TDMyLDUuNDZWMTMuOWExLDEsMCwwLDAsMiwwVjNBMSwx''@;'; put 'put ''LDAsMCwwLDMzLDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTIuNDYsMTAuNzNhMSwxLDAsMCwwLTEsMGwtOC42OCw1TDEyLDIxbDkuMTktNS4yNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0yLDI3LjczYTEsMSwwLDAsMCwuNS44N0wxMSwzMy40NnYtMTFMMiwxNy4yOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIGQ9Ik0xMywzMy40Nmw4LjUtNC44NmExLDEsMCww''@;'; put 'put ''LDAsLjUtLjg3VjE3LjI5bC05LDUuMTVaIi8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVIZWxpeD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTguODgsMTMuMDdhLjkuOSwwLDAsMS0uNDktMS42Nmw4LjkzLTUu''@;'; put 'put ''NzNhLjkuOSwwLDEsMSwxLDEuNTJMOS4zNywxMi45MkEuOS45LDAsMCwxLDguODgsMTMuMDdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTEzLjI1LDE1LjExYS45LjksMCwwLDEtLjQ5LTEuNjZMMTgsMTAuMDhh''@;'; put 'put ''LjkuOSwwLDEsMSwxLDEuNTJMMTMuNzQsMTVBLjkuOSwwLDAsMSwxMy4yNSwxNS4xMVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTkuNzIsMzAuMjNhLjkuOSwwLDAsMS0uNDktMS42Nmw4LjkzLTUuNzNhLjku''@;'; put 'put ''OSwwLDAsMSwxLDEuNTJMMjAuMiwzMC4wOUEuOS45LDAsMCwxLDE5LjcyLDMwLjIzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0xOC45MiwyNS45NGEuOS45LDAsMCwxLS40OS0xLjY2bDUuMjUtMy4zN2EuOS45''@;'; put 'put ''LDAsMSwxLDEsMS41MUwxOS40LDI1LjhBLjg5Ljg5LDAsMCwxLDE4LjkyLDI1Ljk0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIGQ9Ik0yMS41Niw1LjY5YTMuNTksMy41OSwwLDAsMSwuMTUsMy41M0wxOC44MywxNWgy''@;'; put 'put ''LjI1bDIuNDMtNC44N2E1LjYxLDUuNjEsMCwwLDAtNS04LjE0SDEzLjI2bC0xLDJoNi4yMkEzLjYxLDMuNjEsMCwwLDEsMjEuNTYsNS42OVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIuOTEsMjAuNzhBNS41''@;'; put 'put ''Myw1LjUzLDAsMCwwLDI3LjY2LDE3SDkuMzFhMy41NCwzLjU0LDAsMCwxLTMuNTYtMy42NywzLjYxLDMuNjEsMCwwLDEsLjQyLTEuNTRsNC4yNi04LjQ5YTEsMSwwLDEsMC0xLjc5LS45TDQuNCwxMC44NEE1LjY3LDUuNjcsMCwwLDAsNCwxNS4yMiw1LjUzLDUuNTMsMCwwLDAsOS4yOCwxOWg3''@;'; put 'put ''LjZsLTMuNDQsNi44N2E1LjY0LDUuNjQsMCwwLDAsMS41LDYuOTJBNS4zOCw1LjM4LDAsMCwwLDE4LjQxLDM0aDUuMjVsMS0ySDE4LjQzYTMuNTgsMy41OCwwLDAsMS0zLjIyLTUuMjFMMTkuMTEsMTloOC41NGEzLjQyLDMuNDIsMCwwLDEsMi4xNS43MSwzLjU3LDMuNTcsMCwwLDEsMSw0LjQz''@;'; put 'put ''bC00LjEyLDguMjJhMSwxLDAsMSwwLDEuNzkuOWw0LjA2LTguMUE1LjY3LDUuNjcsMCwwLDAsMzIuOTEsMjAuNzhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuMTYsMTkuNjNBNS41NSw1LjU1LDAsMCwwLDI3LjQy''@;'; put 'put ''LDE3SDEwLjA2YTQuMzYsNC4zNiwwLDAsMS0zLjY3LTIsNC4wNyw0LjA3LDAsMCwxLS4xOS00LjEzbDMuNjItNywxLjQyLDEuNjMtMi43NCw1LjMsOC44NC01LjY2YS45MS45MSwwLDAsMSwxLDEuNTNMNy44NCwxMy4zOGEyLjEzLDIuMTMsMCwwLDAsLjI0LjUyLDIuMjgsMi4yOCwwLDAsMCwx''@;'; put 'put ''LjY1LDFMMTguMTEsOS41YS45MS45MSwwLDAsMSwxLDEuNTJMMTMsMTQuOTRIMjAuOGwyLjQxLTQuODJhNS42LDUuNiwwLDAsMC01LTguMTJIOWExLDEsMCwwLDAtLjkuNTZMMy44OCwxMC44OWE1LjYsNS42LDAsMCwwLDUsOC4xMmg3LjY1bC0zLjQzLDYuODdhNS42LDUuNiwwLDAsMCw1LDgu''@;'; put 'put ''MTJoOS4yOGExLDEsMCwwLDAsLjkzLS42NWw0LjE0LTguMjRBNS41OCw1LjU4LDAsMCwwLDMyLjE2LDE5LjYzWk0xNy43NSwyNS41N0EuOTEuOTEsMCwwLDEsMTgsMjQuMzFsNi0zLjg4QS45MS45MSwwLDEsMSwyNSwyMmwtNiwzLjg4YS45MS45MSwwLDAsMS0xLjI2LS4yN1pNMjksMjQuMzRs''@;'; put 'put ''LTksNS43OGEuOTEuOTEsMCwxLDEtMS0xLjUzbDktNS43OGEuOTEuOTEsMCwxLDEsMSwxLjUzWiIvPlxuICAgICAgICAnKSxMLkNsclNoYXBlRmxhc2s9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjQzLDI3LjI4LDIzLDE0Ljg0VjRoMWExLDEsMCwwLDAsMC0ySDEyYTEsMSwwLDAs''@;'; put 'put ''MCwwLDJoMVYxNC44NEw0LjUxLDI3LjM2QTQuMjksNC4yOSwwLDAsMCw1LDMyLjgsNC4zOCw0LjM4LDAsMCwwLDguMTUsMzRIMjhhNC4yNCw0LjI0LDAsMCwwLDMuNDItNi43MlpNMjkuODUsMzFhMi42MiwyLjYyLDAsMCwxLTIsMUg4YTIuMiwyLjIsMCwwLDEtMi4wNi0xLjQxLDIuNjgsMi42''@;'; put 'put ''OCwwLDAsMSwuMjktMi4xN2wzLTQuNDQsMTQsMC0xLjMxLTJIMTAuNTdMMTUsMTUuNDZWNGg2VjE1LjQ2bDguODQsMTMuMDVBMi4yMywyLjIzLDAsMCwxLDI5Ljg1LDMxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMzEuNDksMjcuNCwyMywxNC45NFY0aDFhMSwxLDAsMCwwLDAtMkgxMi4wOGExLDEsMCwwLDAsMCwySDEzVjE0Ljk0TDQuNTgsMjcuMzFhNC4zMSw0LjMxLDAsMCwwLS43OCwzQTQuMjMsNC4yMywwLDAsMCw4LDM0SDI3Ljg2QTQuMzYsNC4zNiwwLDAsMCwzMSwzMi44LDQuMjMsNC4yMyww''@;'; put 'put ''LDAsMCwzMS40OSwyNy40Wk0xNSwxNS40OVY0aDZWMTUuNDlMMjYuMTUsMjNIOS44NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVBZG1pbmlzdHJhdG9yPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC42OCwx''@;'; put 'put ''NC44MWE2Ljc2LDYuNzYsMCwxLDEsNi43Ni02Ljc1QTYuNzcsNi43NywwLDAsMSwxNC42OCwxNC44MVptMC0xMS41MWE0Ljc2LDQuNzYsMCwxLDAsNC43Niw0Ljc2QTQuNzYsNC43NiwwLDAsMCwxNC42OCwzLjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNi40MiwzMS42OEEyLjE0LDIuMTQsMCwwLDEsMTUuOCwzMEg0VjI0LjIyYTE0LjgxLDE0LjgxLDAsMCwxLDExLjA5LTQuNjhsLjcyLDBhMi4yLDIuMiwwLDAsMSwuNjItMS44NWwuMTItLjExYy0uNDcsMC0xLS4wNi0xLjQ2LS4wNkExNi40Nywx''@;'; put 'put ''Ni40NywwLDAsMCwyLjIsMjMuMjZhMSwxLDAsMCwwLS4yLjZWMzBhMiwyLDAsMCwwLDIsMkgxNi43WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODcsMTYuMjlhLjM3LjM3LDAsMCwxLC4xNSwwLC40Mi40''@;'; put 'put ''MiwwLDAsMC0uMTUsMFoiICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwyMy4zMmwtMi0uNjFhNy4yMSw3LjIxLDAsMCwwLS41OC0xLjQxbDEtMS44NkEuMzguMzgsMCwwLDAsMzIsMTlsLTEuNDUtMS40''@;'; put 'put ''NWEuMzYuMzYsMCwwLDAtLjQ0LS4wN2wtMS44NCwxYTcuMTUsNy4xNSwwLDAsMC0xLjQzLS42MWwtLjYxLTJhLjM2LjM2LDAsMCwwLS4zNi0uMjRIMjMuODJhLjM2LjM2LDAsMCwwLS4zNS4yNmwtLjYxLDJhNyw3LDAsMCwwLTEuNDQuNmwtMS44Mi0xYS4zNS4zNSwwLDAsMC0uNDMuMDdMMTcu''@;'; put 'put ''NjksMTlhLjM4LjM4LDAsMCwwLS4wNi40NGwxLDEuODJBNi43Nyw2Ljc3LDAsMCwwLDE4LDIyLjY5bC0yLC42YS4zNi4zNiwwLDAsMC0uMjYuMzV2Mi4wNUEuMzUuMzUsMCwwLDAsMTYsMjZsMiwuNjFhNyw3LDAsMCwwLC42LDEuNDFsLTEsMS45MWEuMzYuMzYsMCwwLDAsLjA2LjQzbDEuNDUs''@;'; put 'put ''MS40NWEuMzguMzgsMCwwLDAsLjQ0LjA3bDEuODctMWE3LjA5LDcuMDksMCwwLDAsMS40LjU3bC42LDJhLjM4LjM4LDAsMCwwLC4zNS4yNmgyLjA1YS4zNy4zNywwLDAsMCwuMzUtLjI2bC42MS0yLjA1YTYuOTIsNi45MiwwLDAsMCwxLjM4LS41N2wxLjg5LDFhLjM2LjM2LDAsMCwwLC40My0u''@;'; put 'put ''MDdMMzIsMzAuNEEuMzUuMzUsMCwwLDAsMzIsMzBsLTEtMS44OGE3LDcsMCwwLDAsLjU4LTEuMzlsMi0uNjFhLjM2LjM2LDAsMCwwLC4yNi0uMzVWMjMuNjdBLjM2LjM2LDAsMCwwLDMzLjY4LDIzLjMyWk0yNC44NSwyOGEzLjM0LDMuMzQsMCwxLDEsMy4zMy0zLjMzQTMuMzQsMy4zNCwwLDAs''@;'; put 'put ''MSwyNC44NSwyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTQuNjciIGN5PSI4LjMiIHI9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMTYuNDQsMzEuODJhMi4xNSwyLjE1LDAsMCwxLS4zOC0yLjU1bC41My0xLTEuMDktLjMzQTIuMTQsMi4xNCwwLDAsMSwxNCwyNS44NFYyMy43OWEyLjE2LDIuMTYsMCwwLDEsMS41My0yLjA3bDEuMDktLjMzLS41Mi0xYTIuMTcsMi4xNywwLDAsMSwuMzUtMi41MiwxOC45MiwxOC45''@;'; put 'put ''MiwwLDAsMC0yLjMyLS4xNkExNS41OCwxNS41OCwwLDAsMCwyLDIzLjA3djcuNzVhMSwxLDAsMCwwLDEsMUgxNi40NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNywyMy40NmwtMi0uNmE2LjczLDYuNzMsMCww''@;'; put 'put ''LDAtLjU4LTEuNDJsMS0xLjg2YS4zNS4zNSwwLDAsMC0uMDctLjQzbC0xLjQ1LTEuNDZhLjM4LjM4LDAsMCwwLS40My0uMDdsLTEuODUsMWE3Ljc0LDcuNzQsMCwwLDAtMS40My0uNmwtLjYxLTJhLjM4LjM4LDAsMCwwLS4zNi0uMjVIMjMuODRhLjM4LjM4LDAsMCwwLS4zNS4yNmwtLjYsMmE2''@;'; put 'put ''Ljg1LDYuODUsMCwwLDAtMS40NS42MWwtMS44MS0xYS4zOC4zOCwwLDAsMC0uNDQuMDZsLTEuNDcsMS40NGEuMzcuMzcsMCwwLDAtLjA3LjQ0bDEsMS44MkE3LjI0LDcuMjQsMCwwLDAsMTgsMjIuODNsLTIsLjYxYS4zNi4zNiwwLDAsMC0uMjYuMzV2Mi4wNWEuMzYuMzYsMCwwLDAsLjI2LjM1''@;'; put 'put ''bDIsLjYxYTcuMjksNy4yOSwwLDAsMCwuNiwxLjQxbC0xLDEuOWEuMzcuMzcsMCwwLDAsLjA3LjQ0TDE5LjE2LDMyYS4zOC4zOCwwLDAsMCwuNDQuMDZsMS44Ny0xYTcuMDksNy4wOSwwLDAsMCwxLjQuNTdsLjYsMi4wNWEuMzguMzgsMCwwLDAsLjM2LjI2aDIuMDVhLjM4LjM4LDAsMCwwLC4z''@;'; put 'put ''NS0uMjZsLjYtMi4wNWE2LjY4LDYuNjgsMCwwLDAsMS4zOC0uNTdsMS44OSwxYS4zOC4zOCwwLDAsMCwuNDQtLjA2TDMyLDMwLjU1YS4zOC4zOCwwLDAsMCwuMDYtLjQ0bC0xLTEuODhhNi45Miw2LjkyLDAsMCwwLC41Ny0xLjM4bDItLjYxYS4zOS4zOSwwLDAsMCwuMjctLjM1VjIzLjgyQS40''@;'; put 'put ''LjQsMCwwLDAsMzMuNywyMy40NlptLTguODMsNC43MmEzLjM0LDMuMzQsMCwxLDEsMy4zMy0zLjM0QTMuMzQsMy4zNCwwLDAsMSwyNC44NywyOC4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVIYXJkRHJpdmU9KDAs''@;'; put 'put ''RS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDhhMiwyLDAsMCwwLTItMkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yWk0zMiwyOEg0VjhIMzJWMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxjaXJjbGUgY3g9IjYuMjEiIGN5PSIxMC4yNSIgcj0iMS4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyOS44MSIgY3k9IjEwLjI1IiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjYuMjEiIGN5PSIyNS40MiIgcj0iMS4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyOS44MSIgY3k9IjI1LjQyIiBy''@;'; put 'put ''PSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS44OCwxOC4wOGEzLjU5LDMuNTksMCwxLDAsMy41OS0zLjU5LDMuODQsMy44NCwwLDAsMC0uOTEuMTNMMTUsMTYuMTZhMi4wOCwyLjA4LDAsMCwxLC41''@;'; put 'put ''LS4wNywyLDIsMCwxLDEtMiwyLDEuNjQsMS42NCwwLDAsMSwuMDgtLjVMMTIsMTcuMTZBMy41MywzLjUzLDAsMCwwLDExLjg4LDE4LjA4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUuNDcsMjUuNzNhNy42''@;'; put 'put ''Niw3LjY2LDAsMCwxLTcuNjUtNy42NSw3LjU1LDcuNTUsMCwwLDEsLjI3LTJMNi41NCwxNS43YTkuMjQsOS4yNCwwLDAsMCwxNy44LDQuOTVIMjIuNjZBNy42NCw3LjY0LDAsMCwxLDE1LjQ3LDI1LjczWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMjguMjIsMTcuODNhLjguOCwwLDAsMC0uOC0uOEgyNC42NmE5LjI2LDkuMjYsMCwwLDAtOS4xOS04LjIsOS4zNiw5LjM2LDAsMCwwLTIuMzguMzJsLjQyLDEuNTRhNy44Niw3Ljg2LDAsMCwxLDItLjI2QTcuNjYsNy42NiwwLDAsMSwyMywxN0gyMC45MmEu''@;'; put 'put ''OC44LDAsMCwwLDAsMS42aDYuNUEuOC44LDAsMCwwLDI4LjIyLDE3LjgzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAs''@;'; put 'put ''Mi0yVjhBMiwyLDAsMCwwLDMyLDZaTTEyLDE3LjE2bDEuNTQuNDJhMS42NCwxLjY0LDAsMCwwLS4wOC41LDIsMiwwLDEsMCwyLTIsMi4wOCwyLjA4LDAsMCwwLS41LjA3bC0uNDEtMS41NGEzLjg0LDMuODQsMCwwLDEsLjkxLS4xMywzLjU5LDMuNTksMCwxLDEtMy41OSwzLjU5QTMuNTMsMy41''@;'; put 'put ''MywwLDAsMSwxMiwxNy4xNlpNNS4zMSw4QTEuMjUsMS4yNSwwLDEsMSw0LjA2LDkuMjUsMS4yNSwxLjI1LDAsMCwxLDUuMzEsOFptMCwyMC4wNmExLjI1LDEuMjUsMCwxLDEsMS4yNS0xLjI1QTEuMjUsMS4yNSwwLDAsMSw1LjMxLDI4LjA2Wm0xMC4xNi0uNzNBOS4yMiw5LjIyLDAsMCwxLDYu''@;'; put 'put ''NTQsMTUuN2wxLjU1LjQxYTcuNTUsNy41NSwwLDAsMC0uMjcsMiw3LjY0LDcuNjQsMCwwLDAsMTQuODQsMi41N2gxLjY4QTkuMjUsOS4yNSwwLDAsMSwxNS40NywyNy4zM1ptMTItOC43aC02LjVhLjguOCwwLDAsMSwwLTEuNkgyM2E3LjY2LDcuNjYsMCwwLDAtNy41Ny02LjYsNy44Niw3Ljg2''@;'; put 'put ''LDAsMCwwLTIsLjI2bC0uNDItMS41NGE5LjM2LDkuMzYsMCwwLDEsMi4zOC0uMzJBOS4yNiw5LjI2LDAsMCwxLDI0LjY2LDE3aDIuNzZhLjguOCwwLDAsMSwwLDEuNlptMy4zOSw5LjQzYTEuMjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDMwLjgxLDI4LjA2Wm0wLTE3''@;'; put 'put ''LjU2YTEuMjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDMwLjgxLDEwLjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBlSGFyZERyaXZlRGlza3M9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0i''@;'; put 'put ''TTI2LDUuNzRBMS43NCwxLjc0LDAsMCwwLDI0LjI2LDRIMy43NEExLjc0LDEuNzQsMCwwLDAsMiw1Ljc0VjIwLjI2QTEuNzQsMS43NCwwLDAsMCwzLjc0LDIySDRWNkgyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTMwLDkuNzRBMS43NCwxLjc0LDAsMCwwLDI4LjI2LDhINy43NEExLjc0LDEuNzQsMCwwLDAsNiw5Ljc0VjI0LjI2QTEuNzQsMS43NCwwLDAsMCw3Ljc0LDI2SDhWMTBIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0zMi4yNiwxMkgxMS43NEExLjc0LDEuNzQsMCwwLDAsMTAsMTMuNzRWMjguMjZBMS43NCwxLjc0LDAsMCwwLDExLjc0LDMwSDMyLjI2QTEuNzQsMS43NCwwLDAsMCwzNCwyOC4yNlYxMy43NEExLjc0LDEuNzQsMCwwLDAsMzIuMjYsMTJaTTMyLDI4SDEyVjE0SDMyWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuOTQsMjMuNjhhMi42NCwyLjY0LDAsMSwwLTIuNy0yLjYzQTIuNjcsMi42NywwLDAsMCwxOS45NCwyMy42OFptMC0zLjg3YTEuMjQsMS4yNCwwLDEsMS0xLjI5LDEuMjRBMS4y''@;'; put 'put ''NywxLjI3LDAsMCwxLDE5Ljk0LDE5LjgxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuOTQsMTYuMjJhNC45Myw0LjkzLDAsMCwxLDQuOTUsNC4zNUgyMy43MVYyMmg0LjQxYS43LjcsMCwwLDAsMC0xLjRI''@;'; put 'put ''MjYuMzFhNi4zMyw2LjMzLDAsMCwwLTYuMzctNS43NSw2LjU4LDYuNTgsMCwwLDAtMS40OC4xN2wuMzUsMS4zN0E0LjczLDQuNzMsMCwwLDEsMTkuOTQsMTYuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0x''@;'; put 'put ''OS45NCwyNy4yN2E2LjQyLDYuNDIsMCwwLDAsNS42Ny0zLjM1SDIzLjkzYTUsNSwwLDAsMS00LDEuOTUsNC45MSw0LjkxLDAsMCwxLTUtNC44Miw1LjE2LDUuMTYsMCwwLDEsLjA4LS43OUwxMy42MywyMGE3LDcsMCwwLDAtLjA5LDFBNi4zMiw2LjMyLDAsMCwwLDE5Ljk0LDI3LjI3WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsNS43NEExLjc0LDEuNzQsMCwwLDAsMjQuMjYsNEgzLjc0QTEuNzQsMS43NCwwLDAsMCwyLDUuNzRWMjAuMjZBMS43NCwxLjc0LDAsMCwwLDMuNzQsMjJINFY2SDI2WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCw5Ljc0QTEuNzQsMS43NCwwLDAsMCwyOC4yNiw4SDcuNzRBMS43NCwxLjc0LDAsMCwwLDYsOS43NFYyNC4yNkExLjc0LDEuNzQsMCwwLDAsNy43NCwyNkg4VjEwSDMwWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS42MiwyMi42QTEuNTUsMS41NSwwLDEsMCwxOCwyMS4wNSwxLjYsMS42LDAsMCwwLDE5LjYyLDIyLjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0z''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjI2LDEySDExLjc0QTEuNzQsMS43NCwwLDAsMCwxMCwxMy43NFYyOC4yNkExLjc0LDEuNzQsMCwwLDAsMTEuNzQsMzBIMzIuMjZBMS43NCwxLjc0LDAsMCwwLDM0LDI4LjI2VjEzLjc0QTEuNzQsMS43NCwwLDAsMCwzMi4yNiwxMlpNMTku''@;'; put 'put ''NjIsMTcuNzRhMy4zMSwzLjMxLDAsMSwxLTMuMzgsMy4zMUEzLjM1LDMuMzUsMCwwLDEsMTkuNjIsMTcuNzRabTAsMTEuMTNhNy45NCw3Ljk0LDAsMCwxLTgtNy44Miw3LjgzLDcuODMsMCwwLDEsLjExLTEuMjlsMS43NS4zYTUuMzYsNS4zNiwwLDAsMC0uMTEsMSw2LjE4LDYuMTgsMCwwLDAs''@;'; put 'put ''Ni4yOCw2LjA2LDYuMzUsNi4zNSwwLDAsMCw1LTIuNDZoMi4xQTguMDYsOC4wNiwwLDAsMSwxOS42MiwyOC44N1pNMjkuODksMjIuMkgyNC4zNlYyMC40NGgxLjQ4QTYuMTksNi4xOSwwLDAsMCwxOS42MiwxNWE2LjQ4LDYuNDgsMCwwLDAtMS40MS4xNmwtLjQ1LTEuN2E4LjE2LDguMTYsMCww''@;'; put 'put ''LDEsMS44Ni0uMjIsOCw4LDAsMCwxLDgsNy4yMWgyLjI2YS44OC44OCwwLDAsMSwwLDEuNzZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBlTlZNZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcsMjJWMTRhMiwy''@;'; put 'put ''LDAsMCwwLTItMkgxMWEyLDIsMCwwLDAtMiwydjhhMiwyLDAsMCwwLDIsMkgyNUEyLDIsMCwwLDAsMjcsMjJaTTExLDE0SDI1djhIMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE5IiB5PSI2IiB3aWR0aD0i''@;'; put 'put ''NCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI1LjAxIiB5PSI2IiB3aWR0aD0iMS45NyIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik01LjgsOEgxNi44N1Y2aC0xMUw3Ljc4LDQuMDhhMSwxLDAsMCwwLDAtMS40MiwxLDEsMCwwLDAtMS40MSwwTDIsNyw2LjM3LDExLjRhMSwxLDAsMCwwLDEuNDEsMCwxLDEsMCwwLDAsMC0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuNjEsMjQuNjhhMSwxLDAsMCwwLTEuNDEsMCwxLDEsMCwwLDAsMCwxLjQyTDMwLjEsMjhIMTl2MkgzMC4ybC0yLDJhMSwxLDAsMCwwLDAsMS40MSwxLDEsMCwwLDAsLjcuMjksMSwxLDAsMCwwLC43MS0uMjlMMzQsMjku''@;'; put 'put ''MDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEzIiB5PSIyOCIgd2lkdGg9IjQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cmVjdCB4PSI5IiB5PSIyOCIgd2lkdGg9IjEuOTciIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+XG4gICAgICAgICcpLEwuQ2xyU2hhcGVTU0Q9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wm0wLDIySDRWOEgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNi4yMSIgY3k9IjEwLjI1IiByPSIxLjI1IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI5LjgxIiBjeT0iMTAuMjUiIHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0i''@;'; put 'put ''Ni4yMSIgY3k9IjI1LjQyIiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI5LjgxIiBjeT0iMjUuNDIiIHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLDE4LjYyYzEuMzIuMzEsMS45MS41NCwxLjkxLDEuMjJzLS41MywxLjA5LTEuNTUsMS4wOWE0LDQsMCwwLDEtMi43MS0xLjExbC0uODYsMS4wNmE1LDUsMCwwLDAsMy41MiwxLjM0YzIsMCwzLjEtMSwzLjEtMi41MnMtMS4xNS0yLjA1LTIu''@;'; put 'put ''ODctMi40NGMtMS4zMS0uMy0xLjkyLS41NC0xLjkyLTEuMjFBMS4yNSwxLjI1LDAsMCwxLDEwLDE1YTMuNjgsMy42OCwwLDAsMSwyLjM3LDFsLjgxLTEuMUE0LjU4LDQuNTgsMCwwLDAsMTAsMTMuNjljLTEuNzQsMC0zLDEuMDUtMywyLjQ5UzguMjYsMTguMjIsMTAsMTguNjJaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy44MywyMC45M2E0LDQsMCwwLDEtMi43MS0xLjExbC0uODYsMS4wNmE1LDUsMCwwLDAsMy41MiwxLjM0YzIsMCwzLjEtMSwzLjEtMi41MlMxOS43MywxNy42NSwxOCwxNy4yNmMt''@;'; put 'put ''MS4zMS0uMy0xLjkyLS41NC0xLjkyLTEuMjFBMS4yNSwxLjI1LDAsMCwxLDE3LjQ4LDE1YTMuNjgsMy42OCwwLDAsMSwyLjM3LDFsLjgxLTEuMWE0LjU2LDQuNTYsMCwwLDAtMy4xMi0xLjE1Yy0xLjczLDAtMywxLjA1LTMsMi40OXMxLjE5LDIsMi44OSwyLjQ0YzEuMzIuMzEsMS45MS41NCwx''@;'; put 'put ''LjkxLDEuMjJTMTguODUsMjAuOTMsMTcuODMsMjAuOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS45LDE4YzAtMi40MS0xLjkyLTQuMTItNC42NC00LjEyaC0yLjl2OC4yNGgyLjlDMjgsMjIuMDgsMjku''@;'; put 'put ''OSwyMC4zNywyOS45LDE4Wm0tNi0yLjc2aDEuNTZhMi43NywyLjc3LDAsMSwxLDAsNS41M0gyMy44NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwy''@;'; put 'put ''LDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk01LjIxLDhBMS4yNSwxLjI1LDAsMSwxLDQsOS4yNSwxLjI1LDEuMjUsMCwwLDEsNS4yMSw4Wm0wLDIwYTEuMjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDUuMjEsMjhabTUuMDYtNS43OGE1LDUsMCww''@;'; put 'put ''LDEtMy41Mi0xLjM0bC44Ni0xLjA2YTQsNCwwLDAsMCwyLjcxLDEuMTFjMSwwLDEuNTUtLjUsMS41NS0xLjA5cy0uNTktLjkxLTEuOTEtMS4yMmMtMS43LS40LTIuODktLjg5LTIuODktMi40NHMxLjIyLTIuNDksMy0yLjQ5YTQuNTgsNC41OCwwLDAsMSwzLjEyLDEuMTVsLS44MSwxLjFBMy42''@;'; put 'put ''OCwzLjY4LDAsMCwwLDEwLDE1YTEuMjUsMS4yNSwwLDAsMC0xLjM5LDEuMDhjMCwuNjcuNjEuOTEsMS45MiwxLjIxLDEuNzIuMzksMi44Ny45NCwyLjg3LDIuNDRTMTIuMjQsMjIuMjIsMTAuMjcsMjIuMjJabTcuNTEsMGE1LDUsMCwwLDEtMy41Mi0xLjM0bC44Ni0xLjA2YTQsNCwwLDAsMCwy''@;'; put 'put ''LjcxLDEuMTFjMSwwLDEuNTUtLjUsMS41NS0xLjA5cy0uNTktLjkxLTEuOTEtMS4yMmMtMS43LS40LTIuODktLjg5LTIuODktMi40NHMxLjIzLTIuNDksMy0yLjQ5YTQuNTYsNC41NiwwLDAsMSwzLjEyLDEuMTVsLS44MSwxLjFhMy42OCwzLjY4LDAsMCwwLTIuMzctMSwxLjI1LDEuMjUsMCww''@;'; put 'put ''LDAtMS4zOSwxLjA4YzAsLjY3LjYxLjkxLDEuOTIsMS4yMSwxLjcyLjM5LDIuODcuOTQsMi44NywyLjQ0UzE5Ljc1LDIyLjIyLDE3Ljc4LDIyLjIyWm00LjU4LS4xNFYxMy44NGgyLjljMi43MiwwLDQuNjQsMS43MSw0LjY0LDQuMTJTMjgsMjIuMDgsMjUuMjYsMjIuMDhaTTMwLjY5LDI4YTEu''@;'; put 'put ''MjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDMwLjY5LDI4Wm0wLTE3LjVhMS4yNSwxLjI1LDAsMSwxLDEuMjUtMS4yNUExLjI1LDEuMjUsMCwwLDEsMzAuNjksMTAuNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMjMuODYsMTUuMmgxLjU2YTIuNzcsMi43NywwLDEsMSwwLDUuNTNIMjMuODZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAnKSxMLkNsclNoYXBlQmx1ZXRvb3RoPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi42''@;'; put 'put ''NCwyNS4yNywxOSwxNy41MywxOSwzLDI1LjIxLDkuNGwtNS42NSw1Ljc5TDIxLDE2LjYybDUuNjgtNS44MmEyLDIsMCwwLDAsMC0yLjc4TDIwLjQ4LDEuN0EyLjA4LDIuMDgsMCwwLDAsMTguODUsMSwyLDIsMCwwLDAsMTcsM1YxNS4zOEwxMC4wNSw4LjI3QTEsMSwwLDAsMCw4LjYyLDkuNjZM''@;'; put 'put ''MTYuNzksMTgsOS4wNiwyNmExLDEsMCwwLDAsMCwxLjQxLDEsMSwwLDAsMCwuNy4yOSwxLDEsMCwwLDAsLjcyLS4zMUwxNywyMC42OFYzM2EyLjA3LDIuMDcsMCwwLDAsLjcxLDEuNjJBMiwyLDAsMCwwLDE5LDM1YTEuOTQsMS45NCwwLDAsMCwxLjQyLS42bDYuMjMtNi4zOEEyLDIsMCwwLDAs''@;'; put 'put ''MjYuNjQsMjUuMjdaTTE5LDMzLjA1VjIwLjI5bDYuMjEsNi4zNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICA8cGF0aCBkPSJNMjYuNTIsMjQuNTJsLTUuNjUtNS44My0xLjQ2LTEuNXYtMTJMMjMuNzksOS43bC0zLjYsMy43MSwyLjI0LDIuMjks''@;'; put 'put ''NC4wOS00LjIyYTIuNTQsMi41NCwwLDAsMCwwLTMuNTZMMjAuNTcsMS43OEEyLjU0LDIuNTQsMCwwLDAsMTYuMiwzLjU1VjEzLjg2bC01LjUzLTUuN2ExLjYsMS42LDAsMSwwLTIuMywyLjIzTDE1Ljc1LDE4bC03LDcuMTlhMS42LDEuNiwwLDAsMCwwLDIuMjYsMS42MywxLjYzLDAsMCwwLDEu''@;'; put 'put ''MTIuNDUsMS41OCwxLjU4LDAsMCwwLDEuMTUtLjQ5bDUuMTEtNS4yN1YzMi40NWEyLjUzLDIuNTMsMCwwLDAsMS41OSwyLjM2LDIuNDQsMi40NCwwLDAsMCwuOTUuMTksMi41NiwyLjU2LDAsMCwwLDEuODMtLjc3bDUuOTUtNi4xNUEyLjU0LDIuNTQsMCwwLDAsMjYuNTIsMjQuNTJaTTE5LjQs''@;'; put 'put ''MzAuODNWMjEuNzdsNC4zOSw0LjUzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlQmx1ZXRvb3RoT2ZmPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOSwzLDI1LjIyLDkuNGwtNS42Niw1LjhMMjEsMTYuNjNsNS42OC01LjgzYTIs''@;'; put 'put ''MiwwLDAsMCwwLTIuNzhMMjAuNDgsMS43QTIsMiwwLDAsMCwxOC44NSwxLDIsMiwwLDAsMCwxNywzdjExLjRsMiwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTQuNzcsNSwzLjM2LDYuNDIsMTUuODksMTksOS4wNiwyNmExLDEsMCww''@;'; put 'put ''LDAsLjcxLDEuNywxLDEsMCwwLDAsLjcyLS4zMUwxNywyMC42OFYzMi45NGEyLjA4LDIuMDgsMCwwLDAsLjcxLDEuNjNBMiwyLDAsMCwwLDE5LDM1YTIsMiwwLDAsMCwxLjQyLS42bDUuNDEtNS41NCwzLjU0LDMuNTNMMzAuNzcsMzFaTTE5LDMzLjA1di0xMWw1LjQxLDUuNDFaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTkuMzEsNS4xNywyMy43LDkuN2wtMy41OSwzLjcxLDIuMjQsMi4yOSw0LjA5LTQuMjJhMi41NiwyLjU2LDAsMCwwLDAtMy41NmwtNi02LjE0YTIuNTEsMi41MSwwLDAsMC0yLjc3LS41OSwyLjU0LDIuNTQs''@;'; put 'put ''MCwwLDAtMS42LDIuMzZ2MTBsMy4yMSwzLjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNNC41LDUsMy4wOSw2LjQyLDE1LjE3LDE4LjUxLDguNywyNS4xOUExLjYsMS42LDAsMCwwLDkuODUsMjcuOSwxLjU3LDEuNTcsMCwwLDAsMTEsMjcu''@;'; put 'put ''NDFsNS4xMS01LjI3VjMyLjQ1YTIuNTQsMi41NCwwLDAsMCwxLjYsMi4zNiwyLjQ0LDIuNDQsMCwwLDAsLjk1LjE5LDIuNTUsMi41NSwwLDAsMCwxLjgyLS43N2w1LjEyLTUuMjksMy40OSwzLjQ4TDMwLjUsMzFaTTE5LjgxLDMwLjgzVjIyLjY1bDQsNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZVByb2Nlc3NPblZNPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy40OSwyNi4yOGExLDEsMCwwLDAtMS4yLS43bC0yLjQ5LjY3YTE0LjIzLDE0LjIzLDAsMCwwLDIuNC02Ljc1QTE0LjQ4LDE0LjQ4LDAsMCwwLDI3LjM3LDcu''@;'; put 'put ''MzUsMSwxLDAsMCwwLDI2LDcuNDRhMSwxLDAsMCwwLC4wOSwxLjQxLDEyLjQ1LDEyLjQ1LDAsMCwxLDQuMTYsMTAuNDYsMTIuMTksMTIuMTksMCwwLDEtMiw1Ljc0TDI4LDIyLjU0YTEsMSwwLDEsMC0xLjk1LjE2bC41LDYuNDQsNi4yNS0xLjY2QTEsMSwwLDAsMCwzMy40OSwyNi4yOFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik00LjMxLDE3LjA4YTEuMDYsMS4wNiwwLDAsMCwuNDQuMTYsMSwxLDAsMCwwLDEuMTItLjg1QTEyLjIxLDEyLjIxLDAsMCwxLDE4LjY5LDUuODRMMTYuNDUsNy4zN2ExLDEsMCwwLDAsLjQ3LDEuNzlB''@;'; put 'put ''MSwxLDAsMCwwLDE3LjU2LDlsNS4zMy0zLjY2TDE4LjMzLjc2YTEsMSwwLDEsMC0xLjM5LDEuMzhsMS43LDEuN0ExNC4yLDE0LjIsMCwwLDAsMy44OSwxNi4xMiwxLDEsMCwwLDAsNC4zMSwxNy4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik0yMS43MywyOS45M2ExMiwxMiwwLDAsMS00Ljg0LjUxLDEyLjMsMTIuMywwLDAsMS05LjU3LTYuM2wyLjQ5LjkzYTEsMSwwLDAsMCwuNjktMS44NGwtNC41OS0xLjdoMEw0LjQ0LDIxLDMuMzMsMjcuMzVhMSwxLDAsMCwwLC43OSwxLjEzbC4xNywwYTEsMSwwLDAsMCwxLS44MWwuNDIt''@;'; put 'put ''Mi40YTE0LjMsMTQuMywwLDAsMCwxMSw3LjE0LDEzLjkxLDEzLjkxLDAsMCwwLDUuNjMtLjYsMSwxLDAsMCwwLS42LTEuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMiwxM0gxNGExLDEsMCwwLDAtMSwxdjhhMSwxLDAsMCwwLDEs''@;'; put 'put ''MWg4YTEsMSwwLDAsMCwxLTFWMTRBMSwxLDAsMCwwLDIyLDEzWm0tMSw4SDE1VjE1aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxMLkNsclNoYXBlQXNzaWduVXNlcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMTdhNy40Niw3LjQ2''@;'; put 'put ''LDAsMSwwLTcuNDUtNy40NkE3LjQ2LDcuNDYsMCwwLDAsMTgsMTdaTTE4LDQuMDdhNS40Niw1LjQ2LDAsMSwxLTUuNDUsNS40NUE1LjQ2LDUuNDYsMCwwLDEsMTgsNC4wN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik02LDMxLjg5VjI1''@;'; put 'put ''Ljc3YTE2LjEzLDE2LjEzLDAsMCwxLDEyLTUsMTYuNjEsMTYuNjEsMCwwLDEsOC43MSwyLjMzbDEuMzUtMS41MUExOC41MywxOC41MywwLDAsMCwxOCwxOC43NCwxNy43LDE3LjcsMCwwLDAsNC4yMSwyNC44YTEsMSwwLDAsMC0uMjEuNnY2LjQ5QTIuMDYsMi4wNiwwLDAsMCw2LDM0SDE4LjM5''@;'; put 'put ''bC0xLjktMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMCwzMS44OSwzMCwzMkgyNi44NWwtMS44LDJIMzBhMi4wNiwyLjA2LDAsMCwwLDItMi4wN1YyNi4ybC0yLDIuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzQuNzYsMTguNjJhMSwxLDAsMCwwLTEuNDEuMDhsLTExLjYyLDEzLTUuMi01LjU5QTEsMSwwLDAsMCwxNS4xMiwyNmExLDEsMCwwLDAtLjA2LDEuNDJsNi42OSw3LjJMMzQuODQsMjBBMSwxLDAsMCwwLDM0Ljc2LDE4LjYyWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PGNpcmNsZSBjeD0iMTcuOTkiIGN5PSIxMC4zNiIgcj0iNi44MSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTIsMjYuNjVhMi44LDIuOCwwLDAsMSw0Ljg1LTEuOEwyMC43MSwyOWw2''@;'; put 'put ''Ljg0LTcuNjNBMTYuODEsMTYuODEsMCwwLDAsMTgsMTguNTUsMTYuMTMsMTYuMTMsMCwwLDAsNS41LDI0YTEsMSwwLDAsMC0uMi42MVYzMGEyLDIsMCwwLDAsMS45NCwyaDguNTdsLTMuMDctMy4zQTIuODEsMi44MSwwLDAsMSwxMiwyNi42NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTI4Ljc2LDMyYTIsMiwwLDAsMCwxLjk0LTJWMjYuMjRMMjUuNTcsMzJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMy43NywxOC42MmExLDEsMCwwLDAtMS40Mi4wOGwtMTEuNjIsMTMtNS4yLTUu''@;'; put 'put ''NTlBMSwxLDAsMCwwLDE0LjEyLDI2YTEsMSwwLDAsMCwwLDEuNDJsNi42OCw3LjJMMzMuODQsMjBBMSwxLDAsMCwwLDMzLjc3LDE4LjYyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz4nKSxMLkNsclNoYXBlQXRvbT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBk''@;'; put 'put ''PSJNMTgsMTQuMDVhNCw0LDAsMSwwLDQsNEE0LDQsMCwwLDAsMTgsMTQuMDVabTAsNi40NGEyLjQyLDIuNDIsMCwxLDEsMi40Mi0yLjQyQTIuNDIsMi40MiwwLDAsMSwxOCwyMC40OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yNC4y''@;'; put 'put ''MywxMS43MWEzOS4xNCwzOS4xNCwwLDAsMC00LjU3LTMuOTIsMjIuODYsMjIuODYsMCwwLDEsMy40OC0xLjcyYy4zMi0uMTIuNjItLjIxLjkyLS4zYTIuMjgsMi4yOCwwLDAsMCwzLjgxLS40NiwzLjMxLDMuMzEsMCwwLDEsMS45Mi44NGMxLjE5LDEuMTksMS4yMiwzLjU5LjEsNi41OC40OS42''@;'; put 'put ''NS45NCwxLjMxLDEuMzUsMiwuMTctLjQuMzUtLjc5LjQ5LTEuMTgsMS40Ny0zLjg1LDEuMjgtNy0uNTMtOC43OGE1LjI5LDUuMjksMCwwLDAtMy4zMy0xLjQ0LDIuMjksMi4yOSwwLDAsMC00LjMxLjU0Yy0uMzcuMTEtLjc0LjIyLTEuMTMuMzdhMjUuNzksMjUuNzksMCwwLDAtNC41NywyLjM1''@;'; put 'put ''QTI2LjIxLDI2LjIxLDAsMCwwLDEzLjI4LDQuMmMtMy44NS0xLjQ2LTctMS4yOC04Ljc3LjUzQzIuODUsNi40LDIuNTgsOS4xNywzLjY4LDEyLjU5YTIuMjgsMi4yOCwwLDAsMCwxLjU5LDMuNjdjLjMyLjYxLjY3LDEuMjIsMS4wNiwxLjgyQTI1LjU0LDI1LjU0LDAsMCwwLDQsMjIuNjZjLTEu''@;'; put 'put ''NDcsMy44NC0xLjI4LDcsLjUzLDguNzdhNS42Myw1LjYzLDAsMCwwLDQuMTIsMS41MSwxMy4zNCwxMy4zNCwwLDAsMCw0LjY1LTEsMjYuMjEsMjYuMjEsMCwwLDAsNC41OC0yLjM1QTI1Ljc5LDI1Ljc5LDAsMCwwLDIyLjQzLDMyYTE0LjE2LDE0LjE2LDAsMCwwLDMuNjUuOUEyLjMsMi4zLDAs''@;'; put 'put ''MCwwLDMwLjQ2LDMyYTQuNTUsNC41NSwwLDAsMCwuNzQtLjU3YzEuODEtMS44MSwyLTQuOTMuNTMtOC43N0EzMi42OCwzMi42OCwwLDAsMCwyNC4yMywxMS43MVpNMTIuNTcsMzAuMDljLTMsMS4xNS01LjQ1LDEuMTMtNi42NS0uMDhzLTEuMjMtMy42Mi0uMDctNi42NGEyMi43NywyMi43Nyww''@;'; put 'put ''LDAsMSwxLjcxLTMuNDgsNDAuMTksNDAuMTksMCwwLDAsMy45Miw0LjU2Yy40My40My44Ny44NSwxLjMxLDEuMjVxLjktLjQ2LDEuODMtMS4wNWMtLjU4LS41Mi0xLjE2LTEtMS43Mi0xLjYxYTM0LDM0LDAsMCwxLTUuNzQtNy40N0EyLjI5LDIuMjksMCwwLDAsNS41LDExLjY5aDBjLS43NS0y''@;'; put 'put ''LjUtLjYyLTQuNDkuNDMtNS41NGEzLjcyLDMuNzIsMCwwLDEsMi43Mi0uOTIsMTEuNCwxMS40LDAsMCwxLDMuOTMuODQsMjIuODYsMjIuODYsMCwwLDEsMy40OCwxLjcyLDM5LjE0LDM5LjE0LDAsMCwwLTQuNTcsMy45MmMtLjQ0LjQ0LS44Ny45LTEuMjksMS4zNmEyMC4yNywyMC4yNywwLDAs''@;'; put 'put ''MCwxLDEuODVjLjU0LS42MSwxLjA5LTEuMjEsMS42OC0xLjhhMzYuMzMsMzYuMzMsMCwwLDEsNS00LjE3LDM2Ljg4LDM2Ljg4LDAsMCwxLDQuOTUsNC4xNywzNi4yNiwzNi4yNiwwLDAsMSw0LjE3LDUsMzcsMzcsMCwwLDEtNC4xNyw1QTMwLjY4LDMwLjY4LDAsMCwxLDEyLjU3LDMwLjA5Wk0y''@;'; put 'put ''OS43OSwzMGwtLjE2LjEzYTIuMjcsMi4yNywwLDAsMC0zLjUuNzIsMTIuNTcsMTIuNTcsMCwwLDEtMy0uNzcsMjIsMjIsMCwwLDEtMy40OC0xLjcyLDM5LjE0LDM5LjE0LDAsMCwwLDQuNTctMy45MiwzOC4yNiwzOC4yNiwwLDAsMCwzLjkyLTQuNTYsMjIuODgsMjIuODgsMCwwLDEsMS43Miwz''@;'; put 'put ''LjQ4QzMxLDI2LjM5LDMxLDI4LjgxLDI5Ljc5LDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI0LjIzLDExLjcxYTM5LjE0LDM5LjE0LDAsMCwwLTQuNTctMy45MiwyMi44NiwyMi44NiwwLDAsMSwzLjQ4LTEuNzJjLjMyLS4xMi42''@;'; put 'put ''Mi0uMjEuOTItLjNhMi4yOCwyLjI4LDAsMCwwLDMuODEtLjQ2LDMuMzEsMy4zMSwwLDAsMSwxLjkyLjg0YzEuMTksMS4xOSwxLjIyLDMuNTkuMSw2LjU4LjQ5LjY1Ljk0LDEuMzEsMS4zNSwyLC4xNy0uNC4zNS0uNzkuNDktMS4xOCwxLjQ3LTMuODUsMS4yOC03LS41My04Ljc4YTUuMjksNS4y''@;'; put 'put ''OSwwLDAsMC0zLjMzLTEuNDQsMi4yOSwyLjI5LDAsMCwwLTQuMzEuNTRjLS4zNy4xMS0uNzQuMjItMS4xMy4zN2EyNS43OSwyNS43OSwwLDAsMC00LjU3LDIuMzVBMjYuMjEsMjYuMjEsMCwwLDAsMTMuMjgsNC4yYy0zLjg1LTEuNDYtNy0xLjI4LTguNzcuNTNDMi44NSw2LjQsMi41OCw5LjE3''@;'; put 'put ''LDMuNjgsMTIuNTlhMi4yOCwyLjI4LDAsMCwwLDEuNTksMy42N2MuMzIuNjEuNjcsMS4yMiwxLjA2LDEuODJBMjUuNTQsMjUuNTQsMCwwLDAsNCwyMi42NmMtMS40NywzLjg0LTEuMjgsNywuNTMsOC43N2E1LjYzLDUuNjMsMCwwLDAsNC4xMiwxLjUxLDEzLjM0LDEzLjM0LDAsMCwwLDQuNjUt''@;'; put 'put ''MSwyNi4yMSwyNi4yMSwwLDAsMCw0LjU4LTIuMzVBMjUuNzksMjUuNzksMCwwLDAsMjIuNDMsMzJhMTQuMTYsMTQuMTYsMCwwLDAsMy42NS45QTIuMywyLjMsMCwwLDAsMzAuNDYsMzJhNC41NSw0LjU1LDAsMCwwLC43NC0uNTdjMS44MS0xLjgxLDItNC45My41My04Ljc3QTMyLjY4LDMyLjY4''@;'; put 'put ''LDAsMCwwLDI0LjIzLDExLjcxWk0xMi41NywzMC4wOWMtMywxLjE1LTUuNDUsMS4xMy02LjY1LS4wOHMtMS4yMy0zLjYyLS4wNy02LjY0YTIyLjc3LDIyLjc3LDAsMCwxLDEuNzEtMy40OCw0MC4xOSw0MC4xOSwwLDAsMCwzLjkyLDQuNTZjLjQzLjQzLjg3Ljg1LDEuMzEsMS4yNXEuOS0uNDYs''@;'; put 'put ''MS44My0xLjA1Yy0uNTgtLjUyLTEuMTYtMS0xLjcyLTEuNjFhMzQsMzQsMCwwLDEtNS43NC03LjQ3QTIuMjksMi4yOSwwLDAsMCw1LjUsMTEuNjloMGMtLjc1LTIuNS0uNjItNC40OS40My01LjU0YTMuNzIsMy43MiwwLDAsMSwyLjcyLS45MiwxMS40LDExLjQsMCwwLDEsMy45My44NCwyMi44''@;'; put 'put ''NiwyMi44NiwwLDAsMSwzLjQ4LDEuNzIsMzkuMTQsMzkuMTQsMCwwLDAtNC41NywzLjkyYy0uNDQuNDQtLjg3LjktMS4yOSwxLjM2YTIwLjI3LDIwLjI3LDAsMCwwLDEsMS44NWMuNTQtLjYxLDEuMDktMS4yMSwxLjY4LTEuOGEzNi4zMywzNi4zMywwLDAsMSw1LTQuMTcsMzYuODgsMzYuODgs''@;'; put 'put ''MCwwLDEsNC45NSw0LjE3LDM2LjI2LDM2LjI2LDAsMCwxLDQuMTcsNSwzNywzNywwLDAsMS00LjE3LDVBMzAuNjgsMzAuNjgsMCwwLDEsMTIuNTcsMzAuMDlaTTI5Ljc5LDMwbC0uMTYuMTNhMi4yNywyLjI3LDAsMCwwLTMuNS43MiwxMi41NywxMi41NywwLDAsMS0zLS43NywyMiwyMiwwLDAs''@;'; put 'put ''MS0zLjQ4LTEuNzIsMzkuMTQsMzkuMTQsMCwwLDAsNC41Ny0zLjkyLDM4LjI2LDM4LjI2LDAsMCwwLDMuOTItNC41NiwyMi44OCwyMi44OCwwLDAsMSwxLjcyLDMuNDhDMzEsMjYuMzksMzEsMjguODEsMjkuNzksMzBaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAv''@;'; put 'put ''PjxjaXJjbGUgY3g9IjE3Ljk5IiBjeT0iMTguMDciIHI9IjMuMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIuNjYgMy4xMSkgcm90YXRlKC05LjIyKSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxMLkNsclNoYXBlQmFyQ29kZT0oMCxFLmNsckljb25TVkcp''@;'; put 'put ''KCc8cGF0aCBkPSJNNSw3QTEsMSwwLDAsMCw0LDhWMzBhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCw1LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOSw3QTEsMSwwLDAsMCw4LDhWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAs''@;'; put 'put ''MCw5LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTMsN2ExLDEsMCwwLDAtMSwxVjI2YTEsMSwwLDAsMCwyLDBWOEExLDEsMCwwLDAsMTMsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxw''@;'; put 'put ''YXRoIGQ9Ik0xNyw3YTEsMSwwLDAsMC0xLDFWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCwxNyw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTIxLDdhMSwxLDAsMCwwLTEsMVYyNmExLDEsMCwwLDAsMiwwVjhBMSwxLDAsMCww''@;'; put 'put ''LDIxLDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMjUsN2ExLDEsMCwwLDAtMSwxVjI2YTEsMSwwLDAsMCwyLDBWOEExLDEsMCwwLDAsMjUsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxw''@;'; put 'put ''YXRoIGQ9Ik0yOSw3YTEsMSwwLDAsMC0xLDFWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCwyOSw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+PHBhdGggZD0iTTMzLDdhMSwxLDAsMCwwLTEsMVYzMGExLDEsMCwwLDAsMiwwVjhBMSwxLDAsMCww''@;'; put 'put ''LDMzLDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgLz4nKSxMLkNsclNoYXBlQ2REdmQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwx''@;'; put 'put ''NCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMi4zMywxOGE0LjQ2LDQuNDYsMCwxLDAtNC40NSw0LjQ2QTQuNDYsNC40NiwwLDAsMCwyMi4zMywxOFpNMTcuODgsMjAuOUEyLjg2LDIuODYsMCwxLDEsMjAu''@;'; put 'put ''NzMsMTgsMi44NiwyLjg2LDAsMCwxLDE3Ljg4LDIwLjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTcuODgsNy40M0gxOFY1Ljg0aC0uMTJBMTIuMjEsMTIuMjEsMCwwLDAsNS42OCwxNy43NWgxLjZBMTAuNjEsMTAuNjEsMCwwLDEs''@;'; put 'put ''MTcuODgsNy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMC4wOCwxOEgyOC40OXYwQTEwLjYxLDEwLjYxLDAsMCwxLDE4LjI1LDI4LjYzdjEuNkExMi4yMiwxMi4yMiwwLDAsMCwzMC4wOSwxOFMzMC4wOCwxOCwzMC4wOCwxOFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0xOCwxMVY5LjQ0aC0uMTJhOC42Miw4LjYyLDAsMCwwLTguNiw4LjMyaDEuNmE3LDcsMCwwLDEsNy02LjcyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+''@;'; put 'put ''PHBhdGggZD0iTTE4LjI1LDI1djEuNkE4LjYxLDguNjEsMCwwLDAsMjYuNDgsMTh2MGgtMS42djBBNyw3LDAsMCwxLDE4LjI1LDI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTE4LjE3LDEuOTJhMTYsMTYsMCwxLDAsMTYsMTZBMTYs''@;'; put 'put ''MTYsMCwwLDAsMTguMTcsMS45MlpNMjYuMjMsMThoMS41NGE5LjYxLDkuNjEsMCwwLDEtOS42LDkuNTNIMThWMjZoLjE3QTguMDcsOC4wNywwLDAsMCwyNi4yMywxOFpNNi4wNSwxOEg0LjQ1di0uMDhBMTMuNzIsMTMuNzIsMCwwLDEsMTgsNC4yMXYxLjZBMTIuMTMsMTIuMTMsMCwwLDAsNi4w''@;'; put 'put ''NSwxNy45MlptNC4wNSwwSDguNTZ2LS4wOEE5LjYxLDkuNjEsMCwwLDEsMTgsOC4zMlY5Ljg2YTguMDcsOC4wNywwLDAsMC03LjksOC4wNlptNC4zMi0uMDhhMy43NSwzLjc1LDAsMSwxLDMuNzUsMy43NUEzLjc1LDMuNzUsMCwwLDEsMTQuNDIsMTcuOTJabTMuNzUsMTMuNzFIMThWMzBoLjE3''@;'; put 'put ''QTEyLjEzLDEyLjEzLDAsMCwwLDMwLjI4LDE4aDEuNkExMy43MywxMy43MywwLDAsMSwxOC4xNywzMS42M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZUNvbnRhaW5lcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsMzBINGEy''@;'; put 'put ''LDIsMCwwLDEtMi0yVjhBMiwyLDAsMCwxLDQsNkgzMmEyLDIsMCwwLDEsMiwyVjI4QTIsMiwwLDAsMSwzMiwzMFpNNCw4VjI4SDMyVjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOSwyNS4zYS44LjgsMCwwLDEtLjgtLjh2LTEzYS44''@;'; put 'put ''LjgsMCwwLDEsMS42LDB2MTNBLjguOCwwLDAsMSw5LDI1LjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTQuOTIsMjUuM2EuOC44LDAsMCwxLS44LS44di0xM2EuOC44LDAsMCwxLDEuNiwwdjEzQS44LjgsMCwwLDEsMTQuOTIsMjUu''@;'; put 'put ''M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMSwyNS4zYS44LjgsMCwwLDEtLjgtLjh2LTEzYS44LjgsMCwwLDEsMS42LDB2MTNBLjguOCwwLDAsMSwyMSwyNS4zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTQiIC8+PHBhdGggZD0iTTI3LDI1LjNhLjguOCwwLDAsMS0uOC0uOHYtMTNhLjguOCwwLDAsMSwxLjYsMHYxM0EuOC44LDAsMCwxLDI3LDI1LjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhW''@;'; put 'put ''MjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTkuNjMsMjQuMjNhLjc5Ljc5LDAsMCwxLS44MS43N0EuNzkuNzksMCwwLDEsOCwyNC4yM1YxMS43N0EuNzkuNzksMCwwLDEsOC44MiwxMWEuNzkuNzksMCwwLDEsLjgxLjc3Wm02LDBhLjc5Ljc5LDAs''@;'; put 'put ''MCwxLS44Mi43Ny43OS43OSwwLDAsMS0uODEtLjc3VjExLjc3YS43OS43OSwwLDAsMSwuODEtLjc3Ljc5Ljc5LDAsMCwxLC44Mi43N1ptNi4yMSwwYS43OS43OSwwLDAsMS0uODIuNzcuNzkuNzksMCwwLDEtLjgxLS43N1YxMS43N2EuNzkuNzksMCwwLDEsLjgxLS43Ny43OS43OSwwLDAsMSwu''@;'; put 'put ''ODIuNzdabTYuMTIsMGEuNzkuNzksMCwwLDEtLjgyLjc3Ljc5Ljc5LDAsMCwxLS44MS0uNzdWMTEuNzdhLjc5Ljc5LDAsMCwxLC44MS0uNzcuNzkuNzksMCwwLDEsLjgyLjc3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlQ29udGFpbmVy''@;'; put 'put ''Vm9sdW1lPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik04LDE3LjU4YTMyLjM1LDMyLjM1LDAsMCwwLDYuMy45Miw0LjEzLDQuMTMsMCwwLDEsLjkyLTEuMzcsMzAuOTQsMzAuOTQsMCwwLDEtNy4yMi0xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+''@;'; put 'put ''PHBhdGggZD0iTTYsMjhWOC4xOWMuMzQtLjc2LDQuMzEtMi4xMSwxMS0yLjExczEwLjY3LDEuMzUsMTEsMnYuM2MtLjgyLjc5LTQuNTgsMi4wNS0xMS4xMSwyLjA1QTMzLjQ4LDMzLjQ4LDAsMCwxLDgsOS40NHYxLjQ0YTM1LjYsMzUuNiwwLDAsMCw4Ljg5LDFjNC4yOSwwLDguOC0uNTgsMTEu''@;'; put 'put ''MTEtMS44MnY1LjA3YTUuMyw1LjMsMCwwLDEtMS44MS44OEgzMFY4LjEyYzAtMy4xOS04LjE3LTQtMTMtNHMtMTMsLjg1LTEzLDRWMjhDNCwzMC42Myw5LjM5LDMxLjY4LDE0LDMyVjMwQzkuMTMsMjkuNjYsNi4yOCwyOC42Miw2LDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTgsMjQuMjhhMzEuMywzMS4zLDAsMCwwLDYsLjg5di0xLjRhMjguOTMsMjguOTMsMCwwLDEtNi0uOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzIsMThIMThhMiwyLDAsMCwwLTIsMlYz''@;'; put 'put ''MmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjBBMiwyLDAsMCwwLDMyLDE4Wk0xOCwzMlYyMEgzMlYzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0yMSwyMS43YS43LjcsMCwwLDAtLjcuN3Y3LjQ5YS43LjcsMCwwLDAs''@;'; put 'put ''MS40LDBWMjIuNEEuNy43LDAsMCwwLDIxLDIxLjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMjUsMjEuODJhLjcuNywwLDAsMC0uNy43VjMwYS43LjcsMCwxLDAsMS40LDBWMjIuNTJBLjcuNywwLDAsMCwyNSwyMS44MloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik0yOSwyMS43YS43LjcsMCwwLDAtLjcuN3Y3LjQ5YS43LjcsMCwxLDAsMS40LDBWMjIuNEEuNy43LDAsMCwwLDI5LDIxLjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIg''@;'; put 'put ''Lz48cGF0aCBkPSJNMzIsMThIMThhMiwyLDAsMCwwLTIsMlYzMmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjBBMiwyLDAsMCwwLDMyLDE4Wk0xOCwzMlYyMEgzMlYzMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTIxLDIxLjdh''@;'; put 'put ''LjcuNywwLDAsMC0uNy43djcuNDlhLjcuNywwLDAsMCwxLjQsMFYyMi40QS43LjcsMCwwLDAsMjEsMjEuN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTI1LDIxLjgyYS43LjcsMCwwLDAtLjcuN1YzMGEuNy43LDAsMSwwLDEuNCwwVjIyLjUy''@;'; put 'put ''QS43LjcsMCwwLDAsMjUsMjEuODJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yOSwyMS43YS43LjcsMCwwLDAtLjcuN3Y3LjQ5YS43LjcsMCwxLDAsMS40LDBWMjIuNEEuNy43LDAsMCwwLDI5LDIxLjdaIiBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC00IiAvPjxwYXRoIGQ9Ik0xOCwxNkgyOFY4LjEyYzAtMS42OC01LjM4LTMtMTItM1M0LDYuNDQsNCw4LjEyVjI4YzAsMS41LDQuMzMsMi43NSwxMCwzVjI1LjIyYTI5LjE3LDI5LjE3LDAsMCwxLTgtMS4yOVYyMi40NGwuMjQuMUEyNi42MywyNi42MywwLDAsMCwx''@;'; put 'put ''NCwyMy44MlYyMGE0LDQsMCwwLDEsLjI5LTEuNDdBMjkuMTksMjkuMTksMCwwLDEsNiwxNy4yM1YxNS43NWwuMjQuMDlhMjksMjksMCwwLDAsOSwxLjMyaDBBNCw0LDAsMCwxLDE4LDE2Wk02LDEwLjU0VjkuMDVsLjI0LjA5QTMwLjEyLDMwLjEyLDAsMCwwLDE2LDEwLjQ3LDI4LjMzLDI4LjMz''@;'; put 'put ''LDAsMCwwLDI2LDkuMDV2MS41YTMyLjUzLDMyLjUzLDAsMCwxLTEwLDEuMzJBMzIuNDQsMzIuNDQsMCwwLDEsNiwxMC41NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIC8+JyksTC5DbHJTaGFwZUZpbGVTaGFyZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJN''@;'; put 'put ''MzAsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDMwLDlabTAsMjBINlYxM2g3LjMxYTIsMiwwLDAsMCwyLTJINlY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAs''@;'; put 'put ''MCwuODEuNDFIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjEuOTEsMjIuNDhhMi4wNiwyLjA2LDAsMCwwLTEuNDQuNjJsLTUuNzItMi42NlYyMGw1LjY2LTIuNjVhMi4wOCwyLjA4LDAsMSwwLC4wNi0yLjk0LDIuMTIsMi4xMiww''@;'; put 'put ''LDAsMC0uNjQsMS40OHYuMjNsLTUuNjQsMi42NmEyLjA4LDIuMDgsMCwxLDAtLjA4LDIuOTVsLjA4LS4wOCw1LjY3LDIuNjZ2LjNhMi4wOSwyLjA5LDAsMSwwLDIuMDgtMi4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMwLDlIMTYu''@;'; put 'put ''NDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjExQTIsMiwwLDAsMCwzMCw5Wk02LDdoNi40OWwyLjcyLDRINlpNMjEuOTQsMjYuNjRhMi4wOSwyLjA5LDAsMCwxLTIuMTEtMi4wNmwwLS4zLTUu''@;'; put 'put ''NjctMi42Ni0uMDguMDhhMi4wOCwyLjA4LDAsMSwxLC4wOC0yLjk1bDUuNjQtMi42NnYtLjIzYTIuMDgsMi4wOCwwLDEsMSwuNTgsMS40NkwxNC43NSwyMHYuNDdsNS43MiwyLjY2YTIuMDcsMi4wNywwLDEsMSwxLjQ3LDMuNTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0xIiAvPicpLEwuQ2xyU2hhcGVRckNvZGU9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTUuNiw0QTEuNiwxLjYsMCwwLDAsNCw1LjZWMTJoOFY0Wk0xMCwxMEg2VjZoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik00LDMwLjRB''@;'; put 'put ''MS42LDEuNiwwLDAsMCw1LjYsMzJIMTJWMjRINFpNNiwyNmg0djRINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yNCwzMmg2LjRBMS42LDEuNiwwLDAsMCwzMiwzMC40VjI0SDI0Wm0yLTZoNHY0SDI2WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMwLjQsNEgyNHY4aDhWNS42QTEuNiwxLjYsMCwwLDAsMzAuNCw0Wk0zMCwxMEgyNlY2aDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cG9seWdvbiBwb2ludHM9IjIwIDEwIDIw''@;'; put 'put ''IDggMTYgOCAxNiAxMiAxOCAxMiAxOCAxMCAyMCAxMCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHJlY3QgeD0iMTIiIHk9IjEyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48''@;'; put 'put ''cmVjdCB4PSIxNCIgeT0iMTQiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPjxwb2x5Z29uIHBvaW50cz0iMjAgNiAyMCA4IDIyIDggMjIgNCAxNCA0IDE0IDggMTYgOCAxNiA2IDIwIDYiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiAvPjxyZWN0IHg9IjQiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSI0IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgLz48cG9seWdvbiBwb2ludHM9IjEyIDE2IDEyIDE4IDEwIDE4IDEwIDE0IDggMTQgOCAxOCA2''@;'; put 'put ''IDE4IDYgMjAgNCAyMCA0IDIyIDggMjIgOCAyMCAxMCAyMCAxMCAyMiAxMiAyMiAxMiAyMCAxNCAyMCAxNCAxNiAxMiAxNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIiAvPjxwb2x5Z29uIHBvaW50cz0iMjAgMTYgMjIgMTYgMjIgMTggMjQgMTggMjQgMTYg''@;'; put 'put ''MjYgMTYgMjYgMTQgMjIgMTQgMjIgMTAgMjAgMTAgMjAgMTIgMTggMTIgMTggMTQgMjAgMTQgMjAgMTYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMSIgLz48cG9seWdvbiBwb2ludHM9IjE4IDMwIDE0IDMwIDE0IDMyIDIyIDMyIDIyIDMwIDIwIDMwIDIwIDI4''@;'; put 'put ''IDE4IDI4IDE4IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTIiIC8+PHBvbHlnb24gcG9pbnRzPSIyMiAyMCAyMiAxOCAyMCAxOCAyMCAxNiAxOCAxNiAxOCAxOCAxNiAxOCAxNiAyMCAxOCAyMCAxOCAyMiAyMCAyMiAyMCAyMCAyMiAyMCIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEzIiAvPjxyZWN0IHg9IjMwIiB5PSIyMCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE0IiAvPjxyZWN0IHg9IjIyIiB5PSIyMCIgd2lkdGg9IjYiIGhlaWdodD0iMiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE1IiAvPjxwb2x5Z29uIHBvaW50cz0iMzAgMTQgMjggMTQgMjggMTYgMjYgMTYgMjYgMTggMjggMTggMjggMjAgMzAgMjAgMzAgMTggMzIgMTggMzIgMTYgMzAgMTYgMzAgMTQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xNiIgLz48cmVjdCB4PSIyMCIgeT0iMjIiIHdpZHRoPSIyIiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNyIgLz48cG9seWdvbiBwb2ludHM9IjE0IDI4IDE2IDI4IDE2IDI2IDE4IDI2IDE4IDI0IDE2IDI0IDE2''@;'; put 'put ''IDIwIDE0IDIwIDE0IDI4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTgiIC8+JyksTC5DbHJTaGFwZVVzYj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTQuMjksMTEuNGExLjQ5LDEuNDksMCwwLDEsMS4yOC0uNzJoMWEyLjg5LDIuODksMCwwLDAsMi43''@;'; put 'put ''NSwyLjA5LDMsMywwLDAsMCwwLTUuOTEsMi45LDIuOSwwLDAsMC0yLjY3LDEuODJIMTUuNTdhMy40OSwzLjQ5LDAsMCwwLTMsMS42NmwtMyw0LjgzaDIuMzZabTUtMi45NEExLjM2LDEuMzYsMCwxLDEsMTgsOS44MSwxLjMyLDEuMzIsMCwwLDEsMTkuMzMsOC40NloiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zNC4zLDE3LjM3bC02LjExLTMuNjZhLjcuNywwLDAsMC0uNywwLC43MS43MSwwLDAsMC0uMzYuNjFWMTdINi45MmEyLjMzLDIuMzMsMCwwLDEsLjMyLDEuMTcsMi40NywyLjQ3LDAsMSwxLTIuNDctMi40NiwyLjM3LDIu''@;'; put 'put ''MzcsMCwwLDEsMS4xNS4zbC45My0xLjc2QTQuNDQsNC40NCwwLDEsMCw5LjE1LDE5aDMuNThsNC4xNyw2LjY1YTMuNDksMy40OSwwLDAsMCwzLDEuNjZoMS42NnYxLjI4YS43OS43OSwwLDAsMCwuOC43OWg0LjQ5YS43OS43OSwwLDAsMCwuOC0uNzl2LTQuNGEuNzkuNzksMCwwLDAtLjgtLjhI''@;'; put 'put ''MjIuMzRhLjguOCwwLDAsMC0uOC44djEuMTJIMTkuODhhMS41MSwxLjUxLDAsMCwxLTEuMjgtLjcyTDE1LjA5LDE5aDEydjIuNjZhLjY5LjY5LDAsMCwwLC4zNi42MS42Ny42NywwLDAsMCwuMzQuMDkuNjUuNjUsMCwwLDAsLjM2LS4xbDYuMTEtMy42NmEuNjkuNjksMCwwLDAsLjM0LS42QS43''@;'; put 'put ''MS43MSwwLDAsMCwzNC4zLDE3LjM3Wk0yMy4xNCwyNUgyNnYyLjhIMjMuMTRabTUuMzktNC41NlYxNS41NWw0LDIuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzQuNzIsMTcuMzdsLTUuNTEtMy4zMWEuNzEuNzEsMCwwLDAtMS4w''@;'; put 'put ''Ny42VjE3SDExLjc3bDMuNTItNS42YTEuNDksMS40OSwwLDAsMSwxLjI4LS43MmgxLjY0YTIuNDEsMi40MSwwLDAsMCwyLjI1LDEuNjEsMi40OCwyLjQ4LDAsMCwwLDAtNC45NSwyLjM4LDIuMzgsMCwwLDAtMi4xMywxLjM0SDE2LjU3YTMuNDksMy40OSwwLDAsMC0zLDEuNjZMOS40MSwxN0g4''@;'; put 'put ''YTMuNDYsMy40NiwwLDEsMCwuMDgsMmg1LjY0bDQuMTUsNi42MmEzLjQ5LDMuNDksMCwwLDAsMywxLjY2aDIuNTl2LjkyaDQuNFYyMy44aC00LjR2MS40OEgyMC44OGExLjUxLDEuNTEsMCwwLDEtMS4yOC0uNzJMMTYuMTEsMTloMTJ2Mi4yOGEuNy43LDAsMCwwLC4zNi42MS43Mi43MiwwLDAs''@;'; put 'put ''MCwuMzQuMDkuNjUuNjUsMCwwLDAsLjM2LS4xbDUuNTItMy4zMWEuNy43LDAsMCwwLDAtMS4yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlUmFkYXI9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDE4YzAsNy43LTYuMywxNC0x''@;'; put 'put ''NCwxNGMtNy43LDAtMTQtNi4zLTE0LTE0QzQsMTAuNiw5LjcsNC41LDE3LjEsNHYzLjdjLTUuNywwLjUtOS45LDUuNS05LjQsMTEuMnM1LjUsOS45LDExLjIsOS40XG5cdGM1LjMtMC41LDkuNC00LjksOS40LTEwLjNoLTJjMCw0LjYtMy43LDguMy04LjMsOC4zcy04LjMtMy43LTguMy04LjNj''@;'; put 'put ''MC00LjIsMy4xLTcuOCw3LjMtOC4zdjQuNGMtMS44LDAuNC0zLjEsMi0zLjEsMy45XG5cdGMwLDIuMiwxLjgsNCw0LDRzNC0xLjgsNC00YzAtMS44LTEuMy0zLjQtMy0zLjhWMi4xQzE4LjYsMiwxOC4zLDIsMTgsMkM5LjIsMiwyLDkuMiwyLDE4czcuMiwxNiwxNiwxNnMxNi03LjIsMTYtMTZI''@;'; put 'put ''MzJ6IE0yMCwxOFxuXHRjMCwxLjEtMC45LDItMiwycy0yLTAuOS0yLTJzMC45LTIsMi0yUzIwLDE2LjksMjAsMTh6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzIsMThjMCw3LjctNi4yLDE0LTE0LDE0UzQsMjUuOCw0LDE4YzAtNy40''@;'; put 'put ''LDUuNy0xMy41LDEzLjEtMTR2My43Yy01LjcsMC41LTkuOCw1LjUtOS4zLDExLjJzNS41LDkuOCwxMS4yLDkuM1xuXHRcdGM1LjMtMC41LDkuMy00LjksOS4zLTEwLjJoLTJjMCw0LjYtMy43LDguMy04LjMsOC4zUzkuNywyMi42LDkuNywxOGMwLTQuMiwzLjItNy44LDcuMy04LjJ2NC40Yy0y''@;'; put 'put ''LjEsMC42LTMuNCwyLjctMi45LDQuOVxuXHRcdGMwLjYsMi4xLDIuNywzLjQsNC45LDIuOWMyLjEtMC42LDMuNC0yLjcsMi45LTQuOWMtMC40LTEuNC0xLjUtMi41LTIuOS0yLjlWMmMtMC40LDAtMC43LDAtMS4xLDBjLTguOCwwLTE2LDcuMi0xNiwxNlxuXHRcdGMwLDguOCw3LjIsMTYsMTYs''@;'; put 'put ''MTZzMTYtNy4yLDE2LTE2YzAsMCwwLDAsMCwwSDMyeiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlSW5kdWN0b3I9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LjMxLDI1LjgxYy0xLjc1LDAtMy0yLjQ5LTMtNmExMi43OSwxMi43''@;'; put 'put ''OSwwLDAsMSwxLjcyLTYuNywyLjU3LDIuNTcsMCwwLDAtMy43OSwwQTEyLjc5LDEyLjc5LDAsMCwxLDIxLDE5Ljc2YzAsMy41Ni0xLjIzLDYtMyw2cy0zLTIuNDktMy02YTEyLjc5LDEyLjc5LDAsMCwxLDEuNzItNi43LDIuNTcsMi41NywwLDAsMC0zLjc5LDAsMTIuNzksMTIuNzksMCwwLDEs''@;'; put 'put ''MS43Miw2LjdjMCwzLjU2LTEuMjMsNi0zLDZzLTMtMi40OS0zLTZhMTIuODgsMTIuODgsMCwwLDEsMS43MS02LjcsMi43LDIuNywwLDAsMC0xLjg5LS44N0M3LjEsMTIuMTksNS42OSwxMy43LDUsMTZsLS4yMy43SDJhMSwxLDAsMCwxLDAtMkgzLjI5YzEuMS0yLjgzLDMuMDYtNC41NSw1LjI0''@;'; put 'put ''LTQuNTVhNC42Nyw0LjY3LDAsMCwxLDMuMTYsMS4zMiw0LjYyLDQuNjIsMCwwLDEsMy4xNS0xLjMyQTQuNjUsNC42NSwwLDAsMSwxOCwxMS41MWE0LjQzLDQuNDMsMCwwLDEsNi4zMSwwLDQuNjcsNC42NywwLDAsMSwzLjE2LTEuMzJjMi4xOCwwLDQuMTQsMS43Miw1LjI0LDQuNTVIMzRhMSwx''@;'; put 'put ''LDAsMCwxLDAsMkgzMS4yOGwtLjIzLS43Yy0uNzQtMi4zNC0yLjE1LTMuODUtMy41OC0zLjg1YTIuNywyLjcsMCwwLDAtMS44OS44NywxMi44OCwxMi44OCwwLDAsMSwxLjcxLDYuN0MyNy4yOSwyMy4zMiwyNi4wNywyNS44MSwyNC4zMSwyNS44MVpNMTgsMTQuOTNhMTEuNzEsMTEuNzEsMCww''@;'; put 'put ''LDAtMSw0LjgzYzAsMi41NC42NiwzLjc1LDEsNCwuMzItLjI3LDEtMS40OCwxLTRBMTEuNzEsMTEuNzEsMCwwLDAsMTgsMTQuOTNabTYuMzEsMGExMS43MSwxMS43MSwwLDAsMC0xLDQuODNjMCwyLjU0LjY2LDMuNzUsMSw0LC4zMi0uMjcsMS0xLjQ4LDEtNEExMS43MSwxMS43MSwwLDAsMCwy''@;'; put 'put ''NC4zMSwxNC45M1ptLTEyLjYyLDBhMTEuNzEsMTEuNzEsMCwwLDAtMSw0LjgzYzAsMi41NC42NiwzLjc1LDEsNCwuMzItLjI3LDEtMS40OCwxLTRBMTEuNzEsMTEuNzEsMCwwLDAsMTEuNjksMTQuOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxM''@;'; put 'put ''LkNsclNoYXBlUmVzaXN0b3I9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjQzLDI2LjM0aDBBMS40NywxLjQ3LDAsMCwxLDI4LDI1LjIyTDI0Ljg2LDEzLjE1LDIxLjc0LDI1LjIyYTEuNDksMS40OSwwLDAsMS0xLjQ1LDEuMTJoMGExLjQ5LDEuNDksMCwwLDEtMS40Ni0xLjEyTDE1''@;'; put 'put ''LjcxLDEzLjE1LDEyLjYsMjUuMjJhMS41MSwxLjUxLDAsMCwxLTIuOTEsMEw2LjU3LDEzLjE1LDUuMjIsMTguMzdIMmExLDEsMCwwLDEsMC0ySDMuNjdsMS40NS01LjU5QTEuNDgsMS40OCwwLDAsMSw2LjU3LDkuNjZoMEExLjQ3LDEuNDcsMCwwLDEsOCwxMC43OGwzLjEyLDEyLjA3LDMuMTIt''@;'; put 'put ''MTIuMDdhMS40OSwxLjQ5LDAsMCwxLDEuNDUtMS4xMmgwYTEuNDksMS40OSwwLDAsMSwxLjQ2LDEuMTJsMy4xMiwxMi4wNywzLjEyLTEyLjA3YTEuNSwxLjUsMCwwLDEsMi45LDBsMy4xMiwxMi4wNywxLjM1LTUuMjJIMzRhMSwxLDAsMCwxLDAsMkgzMi4zM2wtMS40NSw1LjU5QTEuNDgsMS40''@;'; put 'put ''OCwwLDAsMSwyOS40MywyNi4zNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLEwuQ2xyU2hhcGVDYXBhY2l0b3I9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE1LDM0LjA2YTEsMSwwLDAsMS0xLTFWMy4xNWExLDEsMCwxLDEsMiwwVjMzLjA2''@;'; put 'put ''QTEsMSwwLDAsMSwxNSwzNC4wNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMSwzNC4wNmExLDEsMCwwLDEtMS0xVjMuMTVhMSwxLDAsMSwxLDIsMFYzMy4wNkExLDEsMCwwLDEsMjEsMzQuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTQuNDYsMTlIM2ExLDEsMCwwLDEsMC0ySDE0LjQ2YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzMsMTlIMjEuNTRhMSwxLDAsMCwxLDAtMkgz''@;'; put 'put ''M2ExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+JyksTC5DbHJTaGFwZVNxdWlkPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCw3YTEsMSwwLDAsMS0xLTFWMy4xOWExLDEsMCwwLDEsMiwwVjZBMSwxLDAsMCwxLDE4LDda''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMzRhMSwxLDAsMCwxLTEtMVYzMGExLDEsMCwwLDEsMiwwdjNBMSwxLDAsMCwxLDE4LDM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGgg''@;'; put 'put ''ZD0iTTcuNDEsMThsMS43OC0xLjc3YTEsMSwwLDEsMC0xLjQyLTEuNDJMNiwxNi41OSw0LjIzLDE0LjgxYTEsMSwwLDEsMC0xLjQyLDEuNDJMNC41OSwxOCwyLjgxLDE5Ljc3YTEsMSwwLDAsMCwwLDEuNDIsMSwxLDAsMCwwLC43MS4yOSwxLDEsMCwwLDAsLjcxLS4yOUw2LDE5LjQxbDEuNzcs''@;'; put 'put ''MS43OGExLDEsMCwwLDAsMS40MiwwLDEsMSwwLDAsMCwwLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNNiwxMy43NmwuMzYtLjM2YTMsMywwLDAsMSwyLjExLS44OCwxMSwxMSwwLDAsMSwxOSwwLDMsMywwLDAsMSwyLjEyLjg4''@;'; put 'put ''bC4zNi4zNi4yLS4yYTEzLDEzLDAsMCwwLTI0LjQsMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMCwyMi4yNGwtLjM2LjM2YTMsMywwLDAsMS0yLjEyLjg4LDExLDExLDAsMCwxLTE5LDAsMywzLDAsMCwxLTIuMTItLjg4TDYsMjIu''@;'; put 'put ''MjRsLS4yLjJhMTMsMTMsMCwwLDAsMjQuNCwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMxLjQxLDE4bDEuNzgtMS43N2ExLDEsMCwwLDAtMS40Mi0xLjQyTDMwLDE2LjU5bC0xLjc3LTEuNzhhMSwxLDAsMSwwLTEuNDIsMS40Mkwy''@;'; put 'put ''OC41OSwxOGwtMS43OCwxLjc3YTEsMSwwLDAsMCwwLDEuNDIsMSwxLDAsMCwwLC43MS4yOSwxLDEsMCwwLDAsLjcxLS4yOUwzMCwxOS40MWwxLjc3LDEuNzhhMSwxLDAsMCwwLDEuNDIsMCwxLDEsMCwwLDAsMC0xLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTYiIC8+JyksTC5DbHJTaGFwZUhvc3RHcm91cD0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjEuMDgsMzRoLTE0QTEuMDgsMS4wOCwwLDAsMSw2LDMzVjEyYTEuMDgsMS4wOCwwLDAsMSwxLjA4LTEuMDhoMTRBMS4wOCwxLjA4LDAsMCwxLDIyLjE2LDEyVjMzQTEuMDgsMS4wOCwwLDAs''@;'; put 'put ''MSwyMS4wOCwzNFpNOC4xNiwzMS44OEgyMFYxM0g4LjE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG48cmVjdCB4PSIxMC4wOCIgeT0iMTQuOTYiIHdpZHRoPSI4IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yIiAvPjxwYXRoIGQ9Ik0yNi4xLDI3LjgxaC0yVjloLTEyVjdoMTNhMSwxLDAsMCwxLDEsMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuPHBhdGggZD0iTTMwLjA4LDIzaC0yVjVoLTExVjNoMTJhMSwxLDAsMCwxLDEsMVoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxyZWN0IHg9IjEzLjA4IiB5PSIyNy44OCIgd2lkdGg9IjIiIGhlaWdodD0iMi4xNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG5cbjxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEiIGQ9Ik0xNS4wOCwzMSBMMS4wOCwzMSBDMC41MTM0MjcxOTcsMzEuMDAxNTU2NCAwLjA0MTk2NjM3NjUsMzAuNTY1MDE4NiAwLDMwIEwwLDkgQzAsOC40MDM1MzI0NyAwLjQ4MzUzMjQ3LDcuOTIgMS4wOCw3LjkyIEwxNS4wOCw3LjkyIEMxNS42NzY0Njc1LDcuOTIg''@;'; put 'put ''MTYuMTYsOC40MDM1MzI0NyAxNi4xNiw5IEwxNi4xNiwzMCBDMTYuMTE4MDMzNiwzMC41NjUwMTg2IDE1LjY0NjU3MjgsMzEuMDAxNTU2NCAxNS4wOCwzMSBaIE00LjA4LDExLjk2IEw0LjA4LDEzLjk2IEwxMi4wOCwxMy45NiBMMTIuMDgsMTEuOTYgTDQuMDgsMTEuOTYgWiBNNy4wOCwyNC44''@;'; put 'put ''OCBMNy4wOCwyNy4wNCBMOS4wOCwyNy4wNCBMOS4wOCwyNC44OCBMNy4wOCwyNC44OCBaIiAvPlxuPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTIwLjEsMjQuODEgTDE4LjEsMjQuODEgTDE4LjEsNiBMNi4xLDYgTDYuMSw0IEwxOS4xLDQgQzE5LjY1''@;'; put 'put ''MjI4NDcsNCAyMC4xLDQuNDQ3NzE1MjUgMjAuMSw1IEwyMC4xLDI0LjgxIFoiIC8+XG48cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMjQuMDgsMjAgTDIyLjA4LDIwIEwyMi4wOCwyIEwxMS4wOCwyIEwxMS4wOCwwIEwyMy4wOCwwIEMyMy42MzIyODQ3''@;'; put 'put ''LDAgMjQuMDgsMC40NDc3MTUyNSAyNC4wOCwxIEwyNC4wOCwyMCBaIiAvPicpLEwuQ2xyU2hhcGVTdG9yYWdlQWRhcHRlcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNi4wNiwzMGExLDEsMCwwLDEtMS0xVjhoLTJhMSwxLDAsMCwxLDAtMmg0VjI5QTEsMSwwLDAsMSw2LjA2LDMwWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTMwLjA2LDI3aC0yNVY5aDI1YTMsMywwLDAsMSwzLDNWMjRBMywzLDAsMCwxLDMwLjA2LDI3Wm0tMjMtMmgyM2ExLDEsMCwwLDAsMS0xVjEyYTEsMSwwLDAsMC0xLTFoLTIzWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHJlY3QgeD0iMjIuMDYiIHk9IjIwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cmVjdCB4PSIyMi4wNiIgeT0iMTQiIHdpZHRoPSI2''@;'; put 'put ''IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0xOS4wNiwyMmgtOFYyMGg3VjE0aDJ2N0ExLDEsMCwwLDEsMTkuMDYsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPicpLEwu''@;'; put 'put ''Q2xyU2hhcGVOb2RlR3JvdXA9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjUzLDIxLjU4bC00Ljk0LTIuODNWMTMuMDlhMSwxLDAsMCwwLS41MS0uODdMMjIuNjQsOS4xYTEsMSwwLDAsMC0xLDBMMTYuMiwxMi4yMmExLDEsMCwwLDAtLjUxLjg3djUuNjZsLTQuOTQsMi44M2ExLDEs''@;'; put 'put ''MCwwLDAtLjUuODd2Ni4yNGExLDEsMCwwLDAsLjUuODZsNS40NSwzLjEyYTEsMSwwLDAsMCwxLDBsNC45NS0yLjgzLDQuOTUsMi44M2ExLDEsMCwwLDAsLjUuMTQsMSwxLDAsMCwwLC40OS0uMTRsNS40NS0zLjEyYTEsMSwwLDAsMCwuNS0uODZWMjIuNDVBMSwxLDAsMCwwLDMzLjUzLDIxLjU4''@;'; put 'put ''Wk0yMi4xNCwxMS4xMmw0LjQ1LDIuNTVWMTlsLTQuNDYsMi41Ni00LjQ0LTIuNlYxMy42N1pNMTYuNjksMzAuNjVsLTQuNDQtMi41NFYyM2w0LjY4LTIuNjgsNC40LDIuNTdWMjhaTTMyLDI4LjExbC00LjQ0LDIuNTRMMjIuOTMsMjhWMjIuOTNsNC40Ni0yLjU3TDMyLDIzWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTcsMjcuNDNhMSwxLDAsMCwxLTEtMVYxOS45QTEsMSwwLDAsMSw2LjUsMTlsNC45NS0yLjgzVjEwLjU0YTEsMSwwLDAsMSwuNS0uODdsNS4yMS0zYTEsMSwwLDAsMSwxLjM3LjM3LDEsMSwwLDAsMS0uMzgs''@;'; put 'put ''MS4zN2wtNC43LDIuNjh2NS42NmExLDEsMCwwLDEtLjUxLjg3TDgsMjAuNDh2NS45NUExLDEsMCwwLDEsNywyNy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0zLDI1LjA1YTEsMSwwLDAsMS0xLTFWMTcuNTNhMSwxLDAsMCwx''@;'; put 'put ''LC41LS44Nmw1LTIuODRWOC4xN0ExLDEsMCwwLDEsOCw3LjMxbDUuMjUtM2ExLDEsMCwwLDEsMSwxLjc0TDkuNDUsOC43NXY1LjY2YTEsMSwwLDAsMS0uNTEuODdMNCwxOC4xMXY1Ljk0QTEsMSwwLDAsMSwzLDI1LjA1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTMiLz4nKSxMLkNsclNoYXBlTm9kZXM9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEwLjUsMzQuMjksMiwyOS4zOVYxOS41OGw4LjUtNC45LDguNSw0Ljl2OS44MVpNNCwyOC4yMywxMC41LDMyLDE3LDI4LjIzVjIwLjc0TDEwLjUsMTcsNCwyMC43NFoiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0yNS41LDM0LjI5LDE3LDI5LjM5VjE5LjU4bDguNS00LjksOC41LDQuOXY5LjgxWk0xOSwyOC4yMywyNS41LDMyLDMyLDI4LjIzVjIwLjc0TDI1LjUsMTcsMTksMjAuNzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMTgsMjEuMzJsLTguNS00LjlWNi42MUwxOCwxLjcxbDguNSw0Ljl2OS44MVptLTYuNS02LjA2TDE4LDE5bDYuNS0zLjc1VjcuNzdMMTgsNCwxMS41LDcuNzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MyIvPicpLEwuQ2xyU2hhcGVOYW1lc3BhY2U9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI3LDQuMThhMSwxLDAsMSwwLTEsMS43M2w2LDMuNDdWMjYuNjJsLTYsMy40N2ExLDEsMCwwLDAtLjM3LDEuMzYsMSwxLDAsMCwwLDEuMzcuMzdsNy00LjA1VjguMjNaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNOS42OCwyOS45LDQsMjYuNjJWOS4zOEw5LjY4LDYuMWExLDEsMCwxLDAtMS0xLjczTDIsOC4yM1YyNy43N2w2LjY4LDMuODZhMSwxLDAsMCwwLDEuMzctLjM3QTEsMSwwLDAsMCw5LjY4LDI5LjlaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMTAsMTJWMjRhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0yVjEyYTIsMiwwLDAsMC0yLTJIMTJBMiwyLDAsMCwwLDEwLDEyWm03LDB2NUgxMlYxMlptLTUsN2g1djVIMTJabTcsNVYxOWg1djVa''@;'; put 'put ''bTUtN0gxOVYxMmg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz4nKSxMLkNsclNoYXBlTm9kZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMzAuNjYsNywyNC4zM1YxMS42N0wxOCw1LjM0bDExLDYuMzNWMjQuMzNaTTksMjMuMThsOSw1LjE3''@;'; put 'put ''LDktNS4xN1YxMi44MkwxOCw3LjY1LDksMTIuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPicpLEwuQ2xyU2hhcGVQb2Q9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI2LDMySDEwYTYsNiwwLDAsMS02LTZWMTBhNiw2LDAsMCwxLDYtNkgyNmE2''@;'; put 'put ''LDYsMCwwLDEsNiw2VjI2QTYsNiwwLDAsMSwyNiwzMlpNMTAsNmE0LDQsMCwwLDAtNCw0VjI2YTQsNCwwLDAsMCw0LDRIMjZhNCw0LDAsMCwwLDQtNFYxMGE0LDQsMCwwLDAtNC00WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTI2''@;'; put 'put ''LjU2LDE1SDE1LjQ0QTEuNDMsMS40MywwLDAsMCwxNCwxNi40NHY4LjEyQTEuNDMsMS40MywwLDAsMCwxNS40NCwyNkgyNi41NkExLjQzLDEuNDMsMCwwLDAsMjgsMjQuNTZWMTYuNDRBMS40MywxLjQzLDAsMCwwLDI2LjU2LDE1Wk0yNiwyNEgxNlYxN0gyNloiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0xMi40LDE5SDEwVjEySDIwdjEuNGgydi0yQTEuNDMsMS40MywwLDAsMCwyMC41NiwxMEg5LjQ0QTEuNDMsMS40MywwLDAsMCw4LDExLjQ0djguMTJBMS40MywxLjQzLDAsMCwwLDkuNDQsMjFoM1oiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+JyksTC5DbHJDb250cm9sTHVuPSgwLEUuY2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNOCwyNC41OWEyNS41LDI1LjUsMCwwLDAsMi43NS41OWwxLjIxLTEuNDFhMjQuMTMsMjQuMTMsMCwwLDEtNC0uODNaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNNiwyNy41M1YxMC4zYzIuOSwxLjQzLDguMzQsMS44OCwxMiwxLjg4czkuMS0uNDUsMTItMS44OHY1LjExYy0uOTEuODItNSwyLjEzLTEyLDIuMTNBMzQuODEsMzQuODEsMCwwLDEsOCwxNi4zM1YxOGE0MC44Niw0''@;'; put 'put ''MC44NiwwLDAsMCwxMCwxLjE2YzMuNDYsMCw5LjEzLS40NSwxMi0xLjkxdjMuMjNoMlY4aDBzMCwwLDAtLjA3YzAtMy4zNS04LjgtNC4yNS0xNC00LjI1UzQsNC41OCw0LDcuOTN2MTkuNmMwLDIsMy4xNywzLjE0LDYuODMsMy43Mkw4LjM4LDI4LjY4QzcsMjguMjgsNi4xMywyNy44NCw2LDI3''@;'; put 'put ''LjUzWk0xOCw1LjY4YzcuMTUsMCwxMS41MywxLjQ0LDEyLDIuMjUtLjQ2LjgxLTQuODQsMi4yNS0xMiwyLjI1UzYuMzEsOC42OSw2LDhDNi4zMSw3LjE4LDEwLjcxLDUuNjgsMTgsNS42OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9''@;'; put 'put ''Ik0zMi4wOSwyMkgxNS40NmwtNS40MSw2LjMxTDE1LjQ5LDM0aDE2LjZhMiwyLDAsMCwwLDItMlYyMy45M0EyLDIsMCwwLDAsMzIuMDksMjJabTAsMTBIMTYuMzRsLTMuNTktMy43N0wxNi4zOCwyNEgzMi4wOXY4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMi''@;'; put 'put ''Lz5cbiAgPHBhdGggZD0iTTE2LjExLDI3YTEsMSwwLDEsMCwxLDFBMSwxLDAsMCwwLDE2LjExLDI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cblxuICA8cGF0aCBkPSJNOCwyNC41OWEyNS41LDI1LjUsMCwwLDAsMi43NS41OWwxLjIxLTEuNDFhMjQu''@;'; put 'put ''MTMsMjQuMTMsMCwwLDEtNC0uODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTMyLjA5LDIySDE1LjQ2bC01LjQxLDYuMzFMMTUuNDksMzRoMTYuNmEyLDIsMCwwLDAsMi0yVjIzLjkzQTIsMiwwLDAs''@;'; put 'put ''MCwzMi4wOSwyMlptMCwxMEgxNi4zNGwtMy41OS0zLjc3TDE2LjM4LDI0SDMyLjA5djhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTE2LjExLDI3YTEsMSwwLDEsMCwxLDFBMSwxLDAsMCwwLDE2LjEx''@;'; put 'put ''LDI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik0xOCwxNy41NEEzNC44MSwzNC44MSwwLDAsMSw4LDE2LjMzVjE4YTQwLjg2LDQwLjg2LDAsMCwwLDEwLDEuMTZjMy40NiwwLDkuMTMtLjQ1LDEyLTEu''@;'; put 'put ''OTF2My4yM2gyVjEzLjIyYTcuMzIsNy4zMiwwLDAsMS0yLC4yOHYxLjkxQzI5LjA5LDE2LjIzLDI1LDE3LjU0LDE4LDE3LjU0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik02LDI3LjUzVjEwLjNjMi45''@;'; put 'put ''LDEuNDMsOC4zNCwxLjg4LDEyLDEuODhhNDcuNjYsNDcuNjYsMCwwLDAsNy4wOS0uNTIsNy40NSw3LjQ1LDAsMCwxLTEuNTEtMS44LDQ3LjQsNDcuNCwwLDAsMS01LjU4LjMyQzEwLjcxLDEwLjE4LDYuMzEsOC42OSw2LDhjLjMyLS44LDQuNzItMi4zLDEyLTIuMywxLjY2LDAsMy4xNi4wOCw0''@;'; put 'put ''LjUxLjIxYTcuNTYsNy41NiwwLDAsMSwuMjktMmMtMS43LS4xNy0zLjM4LS4yNC00LjgtLjI0LTUuMiwwLTE0LC45LTE0LDQuMjV2MTkuNmMwLDIsMy4xNywzLjE0LDYuODMsMy43Mkw4LjM4LDI4LjY4QzcsMjguMjgsNi4xMywyNy44NCw2LDI3LjUzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG5cbiAgPHBhdGggZD0iTTgsMjQu''@;'; put 'put ''NTlhMjUuNSwyNS41LDAsMCwwLDIuNzUuNTlsMS4yMS0xLjQxYTI0LjEzLDI0LjEzLDAsMCwxLTQtLjgzWiIvPjxwYXRoIGQ9Ik0zMi4wOSwyMkgxNS40NmwtNS40MSw2LjMxTDE1LjQ5LDM0aDE2LjZhMiwyLDAsMCwwLDItMlYyMy45M0EyLDIsMCwwLDAsMzIuMDksMjJabTAsMTBIMTYuMzRs''@;'; put 'put ''LTMuNTktMy43N0wxNi4zOCwyNEgzMi4wOXY4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTE2LjExLDI3YTEsMSwwLDEsMCwxLDFBMSwxLDAsMCwwLDE2LjExLDI3WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTYsMjcuNTNWMTAuM2MyLjksMS40Myw4LjM0LDEuODgsMTIsMS44OGguNTlhMy41OSwzLjU5LDAsMCwxLC4zMi0ySDE4QzEwLjcxLDEwLjE4LDYuMzEsOC42OSw2LDhjLjMyLS44LDQu''@;'; put 'put ''NzItMi4zLDEyLTIuMywxLjIyLDAsMi4zNS4wNSwzLjQxLjEybDEuMS0xLjkxYy0xLjYtLjE1LTMuMTctLjIxLTQuNTEtLjIxLTUuMiwwLTE0LC45LTE0LDQuMjV2MTkuNmMwLDIsMy4xNywzLjE0LDYuODMsMy43Mkw4LjM4LDI4LjY4QzcsMjguMjgsNi4xMywyNy44NCw2LDI3LjUzWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTgsMTYuMzNWMThhNDAuODYsNDAuODYsMCwwLDAsMTAsMS4xNmMzLjQ2LDAsOS4xMy0uNDUsMTItMS45MXYzLjIzaDJWMTUuNEgzMGMtLjkxLjgyLTUsMi4xMy0x''@;'; put 'put ''MiwyLjEzQTM0LjgxLDM0LjgxLDAsMCwxLDgsMTYuMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywxM0gzMy42OGEx''@;'; put 'put ''LjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG5cbiAgPHBhdGggZD0iTTE2LjExLDI3YTEs''@;'; put 'put ''MSwwLDEsMCwxLDFBMSwxLDAsMCwwLDE2LjExLDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzIuMDksMjFIMzJWMTcuMzJjLTEuOSwyLjkzLTEwLjQ2LDMuMy0xNCwzLjNBNDIuNDMsNDIuNDMsMCwwLDEsOCwxOS41NlYxNy44OEE0''@;'; put 'put ''MC41OSw0MC41OSwwLDAsMCwxOCwxOWM1LDAsMTMuMi0uODIsMTQtMy44MlYxMC43MmMtMi4yMSwzLjM2LTEwLjQ5LDMuNDYtMTQsMy40NkE0Mi4xMiw0Mi4xMiwwLDAsMSw4LDEzLjExVjExYTQwLjU5LDQwLjU5LDAsMCwwLDEwLDEuMTRjNSwwLDEzLjI4LS44MywxNC0zLjg4VjcuODNoMGMt''@;'; put 'put ''LjE5LTMuMjctOC44NC00LjE1LTE0LTQuMTVTNC4yMSw0LjU2LDQsNy44M0g0djE5LjdjMCwyLjE2LDMuNjQsMy4zLDcuNjMsMy44NGwyLjg0LDMsLjU5LjYyaDE3YTMsMywwLDAsMCwzLTNWMjMuOTNBMywzLDAsMCwwLDMyLjA5LDIxWk04LDI2LjA4VjI0LjRhMjUuNzksMjUuNzksMCwwLDAs''@;'; put 'put ''My40Ni43bC0xLjI0LDEuNDRDOS40NiwyNi40Miw4LjcxLDI2LjI3LDgsMjYuMDhaTTMzLjA5LDMyYTEsMSwwLDAsMS0xLDFIMTUuOTJMMTEuNCwyOC4yMywxNS45MiwyM0gzMi4wOWExLDEsMCwwLDEsMSwxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuXG4g''@;'; put 'put ''IDxwYXRoIGQ9Ik0xNi4xMSwyN2ExLDEsMCwxLDAsMSwxQTEsMSwwLDAsMCwxNi4xMSwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik0zMi4wOSwyMUgzMlYxNy4zMmMtMS45LDIuOTMtMTAuNDYsMy4zLTE0''@;'; put 'put ''LDMuM0E0Mi40Myw0Mi40MywwLDAsMSw4LDE5LjU2VjE3Ljg4QTQwLjU5LDQwLjU5LDAsMCwwLDE4LDE5YzUsMCwxMy4yLS44MiwxNC0zLjgydi0yYTcuMzQsNy4zNCwwLDAsMS00LjEyLDAsMzkuNDcsMzkuNDcsMCwwLDEtOS44OCwxQTQyLjEyLDQyLjEyLDAsMCwxLDgsMTMuMTFWMTFhNDAu''@;'; put 'put ''NTksNDAuNTksMCwwLDAsMTAsMS4xNCw0Ny43Niw0Ny43NiwwLDAsMCw3LjA5LS41MkE3LjQ1LDcuNDUsMCwwLDEsMjIuOCwzLjkyYy0xLjctLjE3LTMuMzgtLjI0LTQuOC0uMjQtNS4xNCwwLTEzLjc5Ljg4LTE0LDQuMTVINHYxOS43YzAsMi4xNiwzLjY0LDMuMyw3LjYzLDMuODRsMi44NCwz''@;'; put 'put ''LC41OS42MmgxN2EzLDMsMCwwLDAsMy0zVjIzLjkzQTMsMywwLDAsMCwzMi4wOSwyMVpNOCwyNi4wOFYyNC40YTI1Ljc5LDI1Ljc5LDAsMCwwLDMuNDYuN2wtMS4yNCwxLjQ0QzkuNDYsMjYuNDIsOC43MSwyNi4yNyw4LDI2LjA4Wk0zMy4wOSwzMmExLDEsMCwwLDEtMSwxSDE1LjkyTDExLjQs''@;'; put 'put ''MjguMjMsMTUuOTIsMjNIMzIuMDlhMSwxLDAsMCwxLDEsMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cblxuICA8cGF0aCBkPSJNMTYuMTEsMjdhMSwxLDAsMSwwLDEsMUExLDEsMCwwLDAsMTYuMTEsMjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0zMi4w''@;'; put 'put ''OSwyMUgzMlYxNy4zMmMtMS45LDIuOTMtMTAuNDYsMy4zLTE0LDMuM0E0Mi40Myw0Mi40MywwLDAsMSw4LDE5LjU2VjE3Ljg4QTQwLjU5LDQwLjU5LDAsMCwwLDE4LDE5YzQuODUsMCwxMi44LS43OSwxMy45MS0zLjYySDIyLjIzYTMuNjgsMy42OCwwLDAsMS0yLjczLTEuMjNIMThBNDIuMTIs''@;'; put 'put ''NDIuMTIsMCwwLDEsOCwxMy4xMVYxMWE0MC41OSw0MC41OSwwLDAsMCwxMCwxLjE0aC41OWEzLjYxLDMuNjEsMCwwLDEsLjQ2LTIuMjlsMy40Ni02Yy0xLjYtLjE1LTMuMTctLjIxLTQuNTEtLjIxLTUuMTQsMC0xMy43OS44OC0xNCw0LjE1SDR2MTkuN2MwLDIuMTYsMy42NCwzLjMsNy42Mywz''@;'; put 'put ''Ljg0bDIuODQsMywuNTkuNjJoMTdhMywzLDAsMCwwLDMtM1YyMy45M0EzLDMsMCwwLDAsMzIuMDksMjFaTTgsMjYuMDhWMjQuNGEyNS43OSwyNS43OSwwLDAsMCwzLjQ2LjdsLTEuMjQsMS40NEM5LjQ2LDI2LjQyLDguNzEsMjYuMjcsOCwyNi4wOFpNMzMuMDksMzJhMSwxLDAsMCwxLTEsMUgx''@;'; put 'put ''NS45MkwxMS40LDI4LjIzLDE1LjkyLDIzSDMyLjA5YTEsMSwwLDAsMSwxLDFaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0yNi44NSwxLjE0bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCwwLDIyLjIzLDEz''@;'; put 'put ''SDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAnKSxMLkNsclNoYXBlTWVkaWFD''@;'; put 'put ''aGFuZ2VyPSgwLEUuY2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNMzAsNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwxLDAsMCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMCw0Wk02''@;'; put 'put ''LDMwVjZIMzBWMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cmVjdCB4PSIyMCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxyZWN0IHg9IjIwIiB5PSIyMiIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHJlY3QgeD0iMjQiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMjcuMjIsMTBIMjB2NGEuOC44LDAsMSwwLDEuNTksMFYxMS42aDUuNjNhLjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxyZWN0''@;'; put 'put ''IHg9IjguODEiIHk9IjEwIiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxNCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTciLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTgiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjIyIiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyNiIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIi8+XG5cbiAgPHJlY3QgeD0iMjAiIHk9IjE4IiB3aWR0aD0i''@;'; put 'put ''MiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iMjQiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yLS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iMjAiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iMjQiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTAiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdl''@;'; put 'put ''ZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxNCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjE4IiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMjIiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdl''@;'; put 'put ''ZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyNiIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik0yMCwxNGEuOC44LDAsMSwwLDEuNTksMFYxMS42SDI1QTcuNzQs''@;'; put 'put ''Ny43NCwwLDAsMSwyMy42NiwxMEgyMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTMwLDEzLjVoMFYzMEg2VjZIMjIuNVY2YTcuMzcsNy4zNywwLDAsMSwuMjgtMkg2QTIsMiwwLDAsMCw0LDZWMzBh''@;'; put 'put ''MiwyLDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwxLDAsMCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjM3LDcuMzcsMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEx''@;'; put 'put ''LS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG5cbiAgPHJlY3QgeD0iMjAiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSIyNCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVk''@;'; put 'put ''Ii8+XG4gIDxyZWN0IHg9IjIwIiB5PSIyMiIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgPHJlY3QgeD0iMjQiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxMCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiLz5c''@;'; put 'put ''biAgPHJlY3QgeD0iOC44MSIgeT0iMTQiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjE4IiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyMiIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWFsZXJ0''@;'; put 'put ''ZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMjYiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC05LS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0zMCwxNS40VjMwSDZWNkgyMS4yN2wxLjE4LTJINkEyLDIs''@;'; put 'put ''MCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJINy44OHYxLjU3YTEsMSwwLDAsMCwyLDBWMzJoMTZ2MS41N2ExLDEsMCwwLDAsMiwwVjMySDMwYTIsMiwwLDAsMCwyLTJWMTUuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYWxlcnRlZCIv''@;'; put 'put ''PlxuICA8cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywxM0gzMy42OGExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xMS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuXG4gIDxwYXRoIGQ9Ik0zMCw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDcuODh2MS41N2ExLDEsMCwwLDAsMiwwVjMyaDE2djEuNTdhMSwxLDAsMCwwLDIsMFYzMkgzMGEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjZBMiwyLDAsMCwwLDMwLDRaTTE3LDI4SDguODFWMjZIMTdabTAtNEg4LjgxVjIySDE3Wm0wLTRIOC44MVYxOEgxN1ptMC00SDguODFWMTRIMTdabTAtNEg4LjgxVjEwSDE3Wk0yMiwyNEgyMFYyMmgyWm0wLTRIMjBWMThoMlptNCw0SDI0VjIyaDJabTAtNEgyNFYxOGgyWm0wLTZIMjBWMTBo''@;'; put 'put ''NloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cblxuICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ5LDcuNDksMCwwLDEtNC0xLjE2VjE0SDIwVjEwaDMuNjZBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNmE3LjM3LDcuMzcsMCwwLDEsLjI4LTJINkEyLDIsMCwwLDAsNCw2''@;'; put 'put ''VjMwYTIsMiwwLDAsMCwyLDJINy44OHYxLjU3YTEsMSwwLDAsMCwyLDBWMzJoMTZ2MS41N2ExLDEsMCwwLDAsMiwwVjMySDMwYTIsMiwwLDAsMCwyLTJWMTMuMjJBNy4zNyw3LjM3LDAsMCwxLDMwLDEzLjVaTTE3LDI4SDguODFWMjZIMTdabTAtNEg4LjgxVjIySDE3Wm0wLTRIOC44MVYxOEgx''@;'; put 'put ''N1ptMC00SDguODFWMTRIMTdabTAtNEg4LjgxVjEwSDE3Wk0yMiwyNEgyMFYyMmgyWm0wLTRIMjBWMThoMlptNCw0SDI0VjIyaDJabTAtNEgyNFYxOGgyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAi''@;'; put 'put ''IGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuXG4gIDxwYXRoIGQ9Ik0yMi4yMywxNS40YTMuNjgsMy42OCwwLDAsMS0zLjE4LTUuNTFMMjIuNDUsNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwy''@;'; put 'put ''LDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwxLDAsMCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlYxNS40Wk0xNywyOEg4LjgxVjI2SDE3Wm0wLTRIOC44MVYyMkgxN1ptMC00SDguODFWMThIMTdabTAtNEg4LjgxVjE0SDE3Wm0wLTRIOC44MVYxMEgx''@;'; put 'put ''N1pNMjIsMjRIMjBWMjJoMlptMC00SDIwVjE4aDJabTQsNEgyNFYyMmgyWm0wLTRIMjRWMThoMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTI2Ljg1LDEuMTRsLTUuNzIsOS45MUExLjI3LDEuMjcsMCww''@;'; put 'put ''LDAsMjIuMjMsMTNIMzMuNjhhMS4yNywxLjI3LDAsMCwwLDEuMS0xLjkxTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICcpLEwuQ2xy''@;'; put 'put ''U2hhcGVUYXBlRHJpdmU9KDAsRS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNNCwyOFY4SDMyVjI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTEzLjMzLDEzLjM1YTQuNTIsNC41MiwwLDEsMCw0LjUzLDQuNTJBNC41Myw0LjUzLDAsMCwwLDEzLjMzLDEzLjM1Wm0wLDcuNDRhMi45MiwyLjkyLDAsMSwxLDIuOTMtMi45MkEyLjkyLDIuOTIsMCwwLDEsMTMuMzMsMjAuNzlaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjMuNjIsMTMuMzVhNC41Miw0LjUyLDAsMSwwLDQuNTIsNC41MkE0LjUzLDQuNTMsMCwwLDAsMjMuNjIsMTMuMzVabTAsNy40NGEyLjkyLDIuOTIsMCwxLDEsMi45Mi0yLjkyQTIuOTIsMi45MiwwLDAs''@;'; put 'put ''MSwyMy42MiwyMC43OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik02LDExVjIzLjU1SDhWMTJIMjkuMzRWMTBIN0ExLDEsMCwwLDAsNiwxMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG5c''@;'; put 'put ''biAgPHBhdGggZD0iTTguODEsMTcuODdhNC41Myw0LjUzLDAsMSwwLDQuNTItNC41MkE0LjUzLDQuNTMsMCwwLDAsOC44MSwxNy44N1ptNy40NSwwQTIuOTMsMi45MywwLDEsMSwxMy4zMywxNSwyLjkzLDIuOTMsMCwwLDEsMTYuMjYsMTcuODdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTE5LjEsMTcuODdhNC41Miw0LjUyLDAsMSwwLDQuNTItNC41MkE0LjUzLDQuNTMsMCwwLDAsMTkuMSwxNy44N1ptNy40NCwwQTIuOTIsMi45MiwwLDEsMSwyMy42MiwxNSwyLjkyLDIuOTIsMCwwLDEsMjYu''@;'; put 'put ''NTQsMTcuODdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTMyLDEzLjIyVjI4SDRWOEgyMi43OGE3LjM3LDcuMzcsMCwwLDEtLjI4LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJh''@;'; put 'put ''MiwyLDAsMCwwLDItMlYxMi4zNEE3LjY1LDcuNjUsMCwwLDEsMzIsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTYsMTFWMjMuNTVIOFYxMkgyNS41MWE3LjY2LDcuNjYsMCwwLDEtMS44NS0y''@;'; put 'put ''SDdBMSwxLDAsMCwwLDYsMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1i''@;'; put 'put ''YWRnZWQgY2xyLWktYmFkZ2UiLz5cblxuICA8cGF0aCBkPSJNOC44MSwxNy44N2E0LjUzLDQuNTMsMCwxLDAsNC41Mi00LjUyQTQuNTMsNC41MywwLDAsMCw4LjgxLDE3Ljg3Wm03LjQ1LDBBMi45MywyLjkzLDAsMSwxLDEzLjMzLDE1LDIuOTMsMi45MywwLDAsMSwxNi4yNiwxNy44N1oiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik03LDEwYTEsMSwwLDAsMC0xLDFWMjMuNTVIOFYxMkgxOC41N0EzLjcsMy43LDAsMCwxLDE5LDEwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMzJWMjhINFY4SDIwLjE0bDEuMTUtMkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE1LjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTIyLjA5LDE1LjM5YTMuNjUsMy42NSwwLDAsMS0xLjgtLjU1LDQuNTEsNC41MSwwLDEsMCw3LjExLjU2SDI1LjE3YTIuOTIsMi45MiwwLDEsMS0zLjA4LDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywxM0gzMy42OGExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG5cbiAgPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk0z''@;'; put 'put ''MCwyNEg2VjEySDMwWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMTIuMjEsMjNhNSw1LDAsMSwwLTUtNUE1LDUsMCwwLDAsMTIuMjEsMjNabTAtN2EyLDIsMCwxLDEtMiwyQTIsMiwwLDAsMSwxMi4yMSwxNloiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTIzLjc5LDIzYTUsNSwwLDEsMC01LTVBNSw1LDAsMCwwLDIzLjc5LDIzWm0wLTdhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMjMuNzksMTZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+XG5c''@;'; put 'put ''biAgPHBhdGggZD0iTTEyLjIxLDIzYTUsNSwwLDEsMC01LTVBNSw1LDAsMCwwLDEyLjIxLDIzWm0wLTdhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMTIuMjEsMTZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJN''@;'; put 'put ''MjMuNzksMjNhNSw1LDAsMSwwLTUtNUE1LDUsMCwwLDAsMjMuNzksMjNabTAtN2EyLDIsMCwxLDEtMiwyQTIsMiwwLDAsMSwyMy43OSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik0zMCwxMy41VjI0SDZW''@;'; put 'put ''MTJIMjUuNTFhNy40OSw3LjQ5LDAsMCwxLTMtNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQi''@;'; put 'put ''Lz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuXG4gIDxwYXRoIGQ9Ik03LjIsMThhNSw1LDAsMSwwLDUtNUE1LDUsMCwwLDAsNy4yLDE4Wm03LDBhMiwy''@;'; put 'put ''LDAsMSwxLTItMkEyLDIsMCwwLDEsMTQuMjIsMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0xOC43OCwxOGE1LDUsMCwxLDAsOS4yNy0yLjZIMjIuMjNhMy43MSwzLjcxLDAsMCwxLTIuMTctLjcxQTUs''@;'; put 'put ''NSwwLDAsMCwxOC43OCwxOFptNS0yYTIsMiwwLDEsMS0yLDJBMiwyLDAsMCwxLDIzLjc5LDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMFYyNEg2VjEySDE4LjU3YTMuNjUsMy42''@;'; put 'put ''NSwwLDAsMSwuNDgtMi4xMUwyMS4yOSw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMzhaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0yNi44NSwxLjE0''@;'; put 'put ''bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCwwLDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1hbGVydCIvPlxuICAnKSxMLkNsclNoYXBlQW5pbWF0aW9uPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMC4xNiwzMS43MWE0LjQsNC40LDAsMCwxLTQuNjQtMUE0LjM0LDQuMzQsMCwwLDEsNC4yMywyNy42YTQuNDEsNC40MSwwLDAsMSwuMTgtMS4yLDExLjYxLDExLjYxLDAs''@;'; put 'put ''MCwxLTEtMi41Niw2LjQsNi40LDAsMCwwLDkuMzMsOC42M0ExMS41NSwxMS41NSwwLDAsMSwxMC4xNiwzMS43MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xOC40MSwyNy42OGE3LjYxLDcuNjEsMCwwLDEtOS4wOC0xLjI2LDcu''@;'; put 'put ''NTgsNy41OCwwLDAsMS0xLjI3LTkuMDYsMTQuMjYsMTQuMjYsMCwwLDEtLjM3LTIuODUsOS41OCw5LjU4LDAsMCwwLC4yMiwxMy4zMyw5LjYzLDkuNjMsMCwwLDAsMTMuMzUuMjJBMTQuNDYsMTQuNDYsMCwwLDEsMTguNDEsMjcuNjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjEuNjYsMjYuMjFhMTIuMSwxMi4xLDAsMSwxLDguNTctMy41NGgwQTEyLjExLDEyLjExLDAsMCwxLDIxLjY2LDI2LjIxWk0yMS42Niw0QTEwLjExLDEwLjExLDAsMCwwLDExLjU0LDE0LjExYTEwLDEwLDAsMCwwLDMsNy4xNCwxMC4xMiwxMC4x''@;'; put 'put ''MiwwLDAsMCwxNC4zMSwwQTEwLjExLDEwLjExLDAsMCwwLDIxLjY2LDRabTcuODYsMThoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIFxuICA8cGF0aCBkPSJNMy41LDIzLjc3YTYuNDEsNi40MSwwLDAsMCw5LjMzLDguNjdBMTEuNjUsMTEuNjUs''@;'; put 'put ''MCwwLDEsMy41LDIzLjc3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNNy42OCwxNC41M2E5LjYsOS42LDAsMCwwLDEzLjQsMTMuN0ExNC4xMSwxNC4xMSwwLDAsMSw3LjY4LDE0LjUzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjEuNzgsMkExMi4xMiwxMi4xMiwwLDEsMSw5LjY2LDE0LjE1LDEyLjEyLDEyLjEyLDAsMCwxLDIxLjc4LDIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgJyksTC5DbHJTaGFwZUNpQ2Q9KDAsRS5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggZD0iTTIzLjUzLDE5LjgxYTcuNDUsNy40NSwwLDAsMS0xLjY1LS4xOCwxMC40OCwxMC40OCwwLDAsMSwuNzIsMi4xM2MuMywwLC42MSwwLC45MywwYTkuNTIsOS41MiwwLDAsMCwzLS40OWwtLjkzLTEuODFBNy42Nyw3LjY3LDAsMCwxLDIzLjUzLDE5LjgxWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTE4LjM2LDE3Ljg3LDE4LDE3LjQ5YTcuNCw3LjQsMCwwLDEtMi4yLTUuOTIsNy4zMSw3LjMxLDAsMCwxLDEuNTQtNEwxNy4yNiw5QTEsMSwwLDAsMCwxOC4xNywxMGguMDlhMSwxLDAsMCwwLDEtLjkx''@;'; put 'put ''TDE5LjYsNWExLDEsMCwwLDAtLjI5LS43OUExLDEsMCwwLDAsMTguNTIsNGwtNC4wOS4zNWExLDEsMCwwLDAsLjE3LDJsMS4yOS0uMTFhOS40NSw5LjQ1LDAsMCwwLTIuMDUsNS4zMiw5LjI4LDkuMjgsMCwwLDAsMi42Nyw3LjI2bC4zMS4zN2E3LjMzLDcuMzMsMCwwLDEsMi4wNiw0LjkxLDcu''@;'; put 'put ''MzksNy4zOSwwLDAsMS0uMjYsMi40N2wxLjguOTFhOC43Niw4Ljc2LDAsMCwwLC40NS0zLjUxQTkuMjgsOS4yOCwwLDAsMCwxOC4zNiwxNy44N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0zMi40LDE3LjkxLDMxLjE5LDE4QTku''@;'; put 'put ''NjUsOS42NSwwLDAsMCwyMy41MywyLjQ1YTkuMzMsOS4zMywwLDAsMC0zLC40OWwuOTEsMS44YTcuNjcsNy42NywwLDAsMSw5Ljc2LDcuMzksNy41OCw3LjU4LDAsMCwxLTEuNjUsNC43MmwuMS0xLjU0YTEsMSwwLDEsMC0yLS4xM2wtLjI4LDQuMDhhMSwxLDAsMCwwLC4zMS43OC45NC45NCww''@;'; put 'put ''LDAsMCwuNjkuMjhoLjFsNC4wOC0uNDJhMSwxLDAsMCwwLC45LTEuMUExLDEsMCwwLDAsMzIuNCwxNy45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik00LjA3LDIwLjQ0aC4wOGw0LjA5LS4zNWExLDEsMCwxLDAtLjE3LTJsLTEu''@;'; put 'put ''MzkuMTJhNy42Myw3LjYzLDAsMCwxLDQuNTItMS40OSw3LjksNy45LDAsMCwxLDEuNjMuMTgsMTAuMjMsMTAuMjMsMCwwLDEtLjcxLTIuMTNjLS4zLDAtLjYxLDAtLjkyLDBhOS42Niw5LjY2LDAsMCwwLTUuOSwybC4xMi0xLjMxYTEsMSwwLDAsMC0uOTItMS4wOCwxLDEsMCwwLDAtMS4wOC45''@;'; put 'put ''MWwtLjM1LDQuMDhhMSwxLDAsMCwwLDEsMS4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0xOC40MiwyOC4yM2wtNC4wOS4yN2ExLDEsMCwwLDAsLjEzLDJMMTYsMzAuMzlhNy43MSw3LjcxLDAsMCwxLTEyLjU0LTYsNy42LDcu''@;'; put 'put ''NiwwLDAsMSwuMjktMkwyLDIxLjQ2YTkuNTksOS41OSwwLDAsMC0uNDcsMi45NUE5LjcsOS43LDAsMCwwLDE3LjE5LDMybC0uMTIsMS4xOGExLDEsMCwwLDAsLjg5LDEuMWguMTFhMSwxLDAsMCwwLDEtLjlsLjQyLTQuMDZhMSwxLDAsMCwwLTEuMDYtMS4xWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz4nKSxMLkNsclNoYXBlRmlsZVNoYXJlMj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUsNEg3LjgzQTEuODksMS44OSwwLDAsMCw2LDUuOTFWMzAuMDlBMS44OSwxLjg5LDAsMCwwLDcuODMsMzJIMjguMTdBMS44NywxLjg3LDAsMCwwLDMw''@;'; put 'put ''LDMwLjA5VjlaTTI0LDUuNzgsMjguMiwxMEgyNFpNOCwzMFY2SDIydjZoNlYzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0yMiwyMS44MWEyLjExLDIuMTEsMCwwLDAtMS40NC42MmwtNS43Mi0yLjY2di0uNDRsNS42Ni0yLjY1''@;'; put 'put ''YTIuMDgsMi4wOCwwLDEsMCwuMDYtMi45NGgwYTIuMTQsMi4xNCwwLDAsMC0uNjQsMS40OHYuMjNsLTUuNjQsMi42NmEyLjA4LDIuMDgsMCwxLDAtLjA4LDIuOTVsLjA4LS4wOCw1LjY3LDIuNjZ2LjNBMi4wOSwyLjA5LDAsMSwwLDIyLDIxLjg0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiLz5cbiAgXG4gIDxwYXRoIGQ9Ik0yNSw0LjA2SDcuODNBMS44OSwxLjg5LDAsMCwwLDYsNlYzMC4xNWExLjg5LDEuODksMCwwLDAsMS44MywxLjkxSDI4LjE3QTEuODcsMS44NywwLDAsMCwzMCwzMC4xNVY5Wk0yMiwyNmEyLjA5LDIuMDksMCwwLDEtMi4xLTIu''@;'; put 'put ''MDh2LS4zTDE0LjI3LDIxbC0uMDguMDhhMi4wOCwyLjA4LDAsMSwxLC4wOC0yLjk1bDUuNjQtMi42NnYtLjIzYTIuMTQsMi4xNCwwLDAsMSwuNjQtMS40OGgwYTIuMDgsMi4wOCwwLDEsMS0uMDYsMi45NGwtNS42NiwyLjY1di40NGw1LjcyLDIuNjZBMi4xMSwyLjExLDAsMCwxLDIyLDIxLjgx''@;'; put 'put ''bDAsMEEyLjA5LDIuMDksMCwwLDEsMjIsMjZabTItMTZWNS44NGw0LjIsNC4yMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxMLlRlY2hub2xvZ3lTaGFwZXM9eyJydWxlci1wZW5jaWwiOkwuQ2xyU2hhcGVSdWxlclBlbmNpbCwicGhvbmUtaGFuZHNldCI6''@;'; put 'put ''TC5DbHJTaGFwZVBob25lSGFuZHNldCwibm8td2lmaSI6TC5DbHJTaGFwZU5vV2lmaSxpbnN0YWxsOkwuQ2xyU2hhcGVJbnN0YWxsLHVuaW5zdGFsbDpMLkNsclNoYXBlVW5pbnN0YWxsLGxheWVyczpMLkNsclNoYXBlTGF5ZXJzLGJsb2NrOkwuQ2xyU2hhcGVCbG9jaywiYmxvY2tzLWdyb3Vw''@;'; put 'put ''IjpMLkNsclNoYXBlQmxvY2tzR3JvdXAsYnVuZGxlOkwuQ2xyU2hhcGVCdW5kbGUsd2lmaTpMLkNsclNoYXBlV2lmaSwicmFjay1zZXJ2ZXIiOkwuQ2xyU2hhcGVSYWNrU2VydmVyLCJoYXJkLWRpc2siOkwuQ2xyU2hhcGVIYXJkRGlzaywiYmFja3VwLXJlc3RvcmUiOkwuQ2xyU2hhcGVCYWNr''@;'; put 'put ''dXBSZXN0b3JlLGJhY2t1cDpMLkNsclNoYXBlQmFja3VwLGRldmljZXM6TC5DbHJTaGFwZURldmljZXMsa2V5Ym9hcmQ6TC5DbHJTaGFwZUtleWJvYXJkLG1vdXNlOkwuQ2xyU2hhcGVNb3VzZSxkYXNoYm9hcmQ6TC5DbHJTaGFwZURhc2hib2FyZCxob3N0OkwuQ2xyU2hhcGVIb3N0LHN0b3Jh''@;'; put 'put ''Z2U6TC5DbHJTaGFwZVN0b3JhZ2UsY2x1c3RlcjpMLkNsclNoYXBlQ2x1c3RlcixhcHBsaWNhdGlvbnM6TC5DbHJTaGFwZUFwcGxpY2F0aW9ucyxidWlsZGluZzpMLkNsclNoYXBlQnVpbGRpbmcsY3B1OkwuQ2xyU2hhcGVDUFUsbWVtb3J5OkwuQ2xyU2hhcGVNZW1vcnksImRhdGEtY2x1c3Rl''@;'; put 'put ''ciI6TC5DbHJTaGFwZURhdGFDbHVzdGVyLCJyZXNvdXJjZS1wb29sIjpMLkNsclNoYXBlUmVzb3VyY2VQb29sLHNoaWVsZDpMLkNsclNoYXBlU2hpZWxkLCJzaGllbGQtY2hlY2siOkwuQ2xyU2hhcGVTaGllbGRDaGVjaywic2hpZWxkLXgiOkwuQ2xyU2hhcGVTaGllbGRYLGltcG9ydDpMLkNs''@;'; put 'put ''clNoYXBlSW1wb3J0LGV4cG9ydDpMLkNsclNoYXBlRXhwb3J0LCJ1cGxvYWQtY2xvdWQiOkwuQ2xyU2hhcGVVcGxvYWRDbG91ZCwiZG93bmxvYWQtY2xvdWQiOkwuQ2xyU2hhcGVEb3dubG9hZENsb3VkLHBsdWdpbjpMLkNsclNoYXBlUGx1Z2luLGZsb3BweTpMLkNsclNoYXBlRmxvcHB5LGNv''@;'; put 'put ''bXB1dGVyOkwuQ2xyU2hhcGVDb21wdXRlcixkaXNwbGF5OkwuQ2xyU2hhcGVEaXNwbGF5LHRlcm1pbmFsOkwuQ2xyU2hhcGVUZXJtaW5hbCxjb2RlOkwuQ2xyU2hhcGVDb2RlLGFwcGxpY2F0aW9uOkwuQ2xyU2hhcGVBcHBsaWNhdGlvbixiYXR0ZXJ5OkwuQ2xyU2hhcGVCYXR0ZXJ5LG1vYmls''@;'; put 'put ''ZTpMLkNsclNoYXBlTW9iaWxlLHRhYmxldDpMLkNsclNoYXBlVGFibGV0LCJuZXR3b3JrLWdsb2JlIjpMLkNsclNoYXBlTmV0d29ya0dsb2JlLCJuZXR3b3JrLXNldHRpbmdzIjpMLkNsclNoYXBlTmV0d29ya1NldHRpbmdzLCJuZXR3b3JrLXN3aXRjaCI6TC5DbHJTaGFwZU5ldHdvcmtTd2l0''@;'; put 'put ''Y2gscm91dGVyOkwuQ2xyU2hhcGVSb3V0ZXIsdm06TC5DbHJTaGFwZVZNLCJ2bXctYXBwIjpMLkNsclNoYXBlVk1XQXBwLGNlcnRpZmljYXRlOkwuQ2xyU2hhcGVDZXJ0aWZpY2F0ZSxhcmNoaXZlOkwuQ2xyU2hhcGVBcmNoaXZlLHVuYXJjaGl2ZTpMLkNsclNoYXBlVW5hcmNoaXZlLGNvbm5l''@;'; put 'put ''Y3Q6TC5DbHJTaGFwZUNvbm5lY3QsZGlzY29ubmVjdDpMLkNsclNoYXBlRGlzY29ubmVjdCxsaW5rOkwuQ2xyU2hhcGVMaW5rLHVubGluazpMLkNsclNoYXBlVW5saW5rLCJjbG91ZC1uZXR3b3JrIjpMLkNsclNoYXBlQ2xvdWROZXR3b3JrLCJjbG91ZC1zY2FsZSI6TC5DbHJTaGFwZUNsb3Vk''@;'; put 'put ''U2NhbGUsImNsb3VkLXRyYWZmaWMiOkwuQ2xyU2hhcGVDbG91ZFRyYWZmaWMsImNvbnRyb2wtbHVuIjpMLkNsckNvbnRyb2xMdW4sZGVwbG95OkwuQ2xyU2hhcGVEZXBsb3ksaGVsaXg6TC5DbHJTaGFwZUhlbGl4LGZsYXNrOkwuQ2xyU2hhcGVGbGFzayxhZG1pbmlzdHJhdG9yOkwuQ2xyU2hh''@;'; put 'put ''cGVBZG1pbmlzdHJhdG9yLCJoYXJkLWRyaXZlIjpMLkNsclNoYXBlSGFyZERyaXZlLCJoYXJkLWRyaXZlLWRpc2tzIjpMLkNsclNoYXBlSGFyZERyaXZlRGlza3MsbnZtZTpMLkNsclNoYXBlTlZNZSxzc2Q6TC5DbHJTaGFwZVNTRCxibHVldG9vdGg6TC5DbHJTaGFwZUJsdWV0b290aCwiYmx1''@;'; put 'put ''ZXRvb3RoLW9mZiI6TC5DbHJTaGFwZUJsdWV0b290aE9mZiwicHJvY2Vzcy1vbi12bSI6TC5DbHJTaGFwZVByb2Nlc3NPblZNLCJhc3NpZ24tdXNlciI6TC5DbHJTaGFwZUFzc2lnblVzZXIsYXRvbTpMLkNsclNoYXBlQXRvbSwiYmFyLWNvZGUiOkwuQ2xyU2hhcGVCYXJDb2RlLCJjZC1kdmQi''@;'; put 'put ''OkwuQ2xyU2hhcGVDZER2ZCxjb250YWluZXI6TC5DbHJTaGFwZUNvbnRhaW5lciwiY29udGFpbmVyLXZvbHVtZSI6TC5DbHJTaGFwZUNvbnRhaW5lclZvbHVtZSwiZmlsZS1zaGFyZSI6TC5DbHJTaGFwZUZpbGVTaGFyZSwicXItY29kZSI6TC5DbHJTaGFwZVFyQ29kZSx1c2I6TC5DbHJTaGFw''@;'; put 'put ''ZVVzYixyYWRhcjpMLkNsclNoYXBlUmFkYXIsY2FwYWNpdG9yOkwuQ2xyU2hhcGVDYXBhY2l0b3Isc3F1aWQ6TC5DbHJTaGFwZVNxdWlkLGluZHVjdG9yOkwuQ2xyU2hhcGVJbmR1Y3RvcixyZXNpc3RvcjpMLkNsclNoYXBlUmVzaXN0b3IsImhvc3QtZ3JvdXAiOkwuQ2xyU2hhcGVIb3N0R3Jv''@;'; put 'put ''dXAsInN0b3JhZ2UtYWRhcHRlciI6TC5DbHJTaGFwZVN0b3JhZ2VBZGFwdGVyLCJub2RlLWdyb3VwIjpMLkNsclNoYXBlTm9kZUdyb3VwLG5vZGVzOkwuQ2xyU2hhcGVOb2RlcyxuYW1lc3BhY2U6TC5DbHJTaGFwZU5hbWVzcGFjZSxub2RlOkwuQ2xyU2hhcGVOb2RlLHBvZDpMLkNsclNoYXBl''@;'; put 'put ''UG9kLCJtZWRpYS1jaGFuZ2VyIjpMLkNsclNoYXBlTWVkaWFDaGFuZ2VyLCJ0YXBlLWRyaXZlIjpMLkNsclNoYXBlVGFwZURyaXZlLGFuaW1hdGlvbjpMLkNsclNoYXBlQW5pbWF0aW9uLCJjaS1jZCI6TC5DbHJTaGFwZUNpQ2QsImZpbGUtc2hhcmUtMiI6TC5DbHJTaGFwZUZpbGVTaGFyZTJ9''@;'; put 'put ''LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLlRlY2hub2xvZ3lTaGFwZXMsInNlcnZlciIsKDAsQi5kZXNjcmlwdG9yQ29uZmlnKShMLlRlY2hub2xvZ3lTaGFwZXMuaG9zdCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLlRlY2hub2xvZ3lTaGFwZXMsImNvbW1hbmQiLCgwLEIuZGVzY3JpcHRv''@;'; put 'put ''ckNvbmZpZykoTC5UZWNobm9sb2d5U2hhcGVzLnRlcm1pbmFsKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuVGVjaG5vbG9neVNoYXBlcywibW9iaWxlLXBob25lIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuVGVjaG5vbG9neVNoYXBlcy5tb2JpbGUpKSxPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoTC5UZWNobm9sb2d5U2hhcGVzLCJsaWNlbnNlIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuVGVjaG5vbG9neVNoYXBlcy5jZXJ0aWZpY2F0ZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLlRlY2hub2xvZ3lTaGFwZXMsImRpc2Nvbm5lY3RlZCIsKDAsQi5kZXNjcmlwdG9yQ29uZmln''@;'; put 'put ''KShMLlRlY2hub2xvZ3lTaGFwZXNbIm5vLXdpZmkiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLlRlY2hub2xvZ3lTaGFwZXMsInJlY2VpdmVyIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuVGVjaG5vbG9neVNoYXBlc1sicGhvbmUtaGFuZHNldCJdKSksT2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KEwuVGVjaG5vbG9neVNoYXBlcywiZGVzaWduIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuVGVjaG5vbG9neVNoYXBlc1sicnVsZXItcGVuY2lsIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5UZWNobm9sb2d5U2hhcGVzLCJkbmEiLCgwLEIuZGVzY3JpcHRvckNvbmZpZykoTC5U''@;'; put 'put ''ZWNobm9sb2d5U2hhcGVzLmhlbGl4KSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEwuVGVjaG5vbG9neVNoYXBlcywiZm9sZGVyLXNoYXJlIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuVGVjaG5vbG9neVNoYXBlc1siZmlsZS1zaGFyZSJdKSksInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cm''@;'; put 'put ''JndpbmRvdy5oYXNPd25Qcm9wZXJ0eSgiQ2xhcml0eUljb25zIikmJndpbmRvdy5DbGFyaXR5SWNvbnMuYWRkKEwuVGVjaG5vbG9neVNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdGV4dC1lZGl0LXNoYXBlcy50cyI6ZnVuY3Rpb24oSmUsTCxtZSl7InVzZSBzdHJpY3Qi''@;'; put 'put ''O09iamVjdC5kZWZpbmVQcm9wZXJ0eShMLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMLlRleHRFZGl0U2hhcGVzPUwuQ2xyU2hhcGVTdXBlcnNjcmlwdD1MLkNsclNoYXBlU3Vic2NyaXB0PUwuQ2xyU2hhcGVTdHJpa2V0aHJvdWdoPUwuQ2xyU2hhcGVJbmRlbnQ9TC5DbHJTaGFwZU91dGRl''@;'; put 'put ''bnQ9TC5DbHJTaGFwZUhpZ2hsaWdodGVyPUwuQ2xyU2hhcGVUZXh0Q29sb3I9TC5DbHJTaGFwZUxhbmd1YWdlPUwuQ2xyU2hhcGVBbGlnblRvcD1MLkNsclNoYXBlQWxpZ25NaWRkbGU9TC5DbHJTaGFwZUFsaWduQm90dG9tPUwuQ2xyU2hhcGVVbmRlcmxpbmU9TC5DbHJTaGFwZVRleHQ9TC5D''@;'; put 'put ''bHJTaGFwZUFsaWduUmlnaHRUZXh0PUwuQ2xyU2hhcGVCbG9ja1F1b3RlPUwuQ2xyU2hhcGVQYWludFJvbGxlcj1MLkNsclNoYXBlTnVtYmVyTGlzdD1MLkNsclNoYXBlQWxpZ25MZWZ0VGV4dD1MLkNsclNoYXBlSnVzdGlmeVRleHQ9TC5DbHJTaGFwZUl0YWxpYz1MLkNsclNoYXBlQWxpZ25S''@;'; put 'put ''aWdodD1MLkNsclNoYXBlQWxpZ25MZWZ0PUwuQ2xyU2hhcGVBbGlnbkNlbnRlcj1MLkNsclNoYXBlRm9udFNpemU9TC5DbHJTaGFwZUNoZWNrYm94TGlzdD1MLkNsclNoYXBlQ2VudGVyVGV4dD1MLkNsclNoYXBlQnVsbGV0TGlzdD1MLkNsclNoYXBlQm9sZD12b2lkIDA7dmFyIEI9bWUoIi4v''@;'; put 'put ''cHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIik7TC5DbHJTaGFwZUJvbGQ9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIyLjQzLDE3LjU0YTQuNjcsNC42NywwLDAsMCwyLjgtNC4zN3YtLjA2YTQuNDMsNC40MywwLDAsMC0xLjMxLTMuMjUsNy4wOSw3''@;'; put 'put ''LjA5LDAsMCwwLTUuMTMtMS43M2gtN0ExLjcxLDEuNzEsMCwwLDAsMTAsOS44NlYyNmExLjcyLDEuNzIsMCwwLDAsMS43NCwxLjc0aDcuMzNjNC4zNywwLDcuMjUtMS44OCw3LjI1LTUuMzhWMjIuM0MyNi4zMiwxOS42NCwyNC43MywxOC4zMiwyMi40MywxNy41NFpNMTMuNjgsMTEuNGg0LjU0''@;'; put 'put ''YzIsMCwzLjE1Ljg5LDMuMTUsMi4zM3YuMDZjMCwxLjY4LTEuMzYsMi40OS0zLjM4LDIuNDlIMTMuNjhaTTIyLjM3LDIyYzAsMS41OS0xLjMxLDIuNDMtMy40NiwyLjQzSDEzLjY4VjE5LjYyaDVjMi40OSwwLDMuNjkuODgsMy42OSwyLjM3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZUJ1bGxldExpc3Q9KDAsQi5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjeD0iNS4yMSIgY3k9IjkuMTciIHI9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxjaXJjbGUgY3g9IjUuMjEiIGN5PSIxNy4x''@;'; put 'put ''NyIgcj0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PGNpcmNsZSBjeD0iNS4yMSIgY3k9IjI1LjE3IiByPSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzIuNDIsOWExLDEsMCwwLDAtMS0x''@;'; put 'put ''SDEwdjJIMzEuNDJBMSwxLDAsMCwwLDMyLjQyLDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzEuNDIsMTZIMTB2MkgzMS40MmExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUi''@;'; put 'put ''IC8+PHBhdGggZD0iTTMxLjQyLDI0SDEwdjJIMzEuNDJhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLEwuQ2xyU2hhcGVDZW50ZXJUZXh0PSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMC44OCw4SDUuMTJhMS4xLDEu''@;'; put 'put ''MSwwLDAsMCwwLDIuMkgzMC44OGExLjEsMS4xLDAsMSwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI1LjUsMTYuMmExLjEsMS4xLDAsMSwwLDAtMi4yaC0xNWExLjEsMS4xLDAsMSwwLDAsMi4yWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMwLjI1LDIwSDUuNzVhMS4xLDEuMSwwLDAsMCwwLDIuMmgyNC41YTEuMSwxLjEsMCwwLDAsMC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjQuODgs''@;'; put 'put ''MjZIMTEuMTJhMS4xLDEuMSwwLDEsMCwwLDIuMkgyNC44OGExLjEsMS4xLDAsMSwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+JyksTC5DbHJTaGFwZUNoZWNrYm94TGlzdD0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuNDMsMTZI''@;'; put 'put ''MTB2MkgzMS40M2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMxLjQzLDI0SDEwdjJIMzEuNDNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxw''@;'; put 'put ''YXRoIGQ9Ik0xNS40NSwxMGgxNmExLDEsMCwwLDAsMC0yaC0xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0xNy41LDMuNDJhMS4wOSwxLjA5LDAsMCwwLTEuNTUsMEw3Ljg5LDExLjQ4LDQuNTEsNy44NEExLjEsMS4xLDAsMSwwLDIu''@;'; put 'put ''OSw5LjM0bDQuOTQsNS4zTDE3LjUsNUExLjEsMS4xLDAsMCwwLDE3LjUsMy40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLEwuQ2xyU2hhcGVGb250U2l6ZT0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjEsOS4wOEExLjEzLDEuMTMsMCww''@;'; put 'put ''LDAsMTkuODYsOEg0LjYyYTEuMSwxLjEsMCwxLDAsMCwyLjE5SDExVjI3YTEuMDksMS4wOSwwLDAsMCwyLjE3LDBWMTAuMTloNi42OUExLjE0LDEuMTQsMCwwLDAsMjEsOS4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMC42Nywx''@;'; put 'put ''NUgyMS4xNWExLjEsMS4xLDAsMSwwLDAsMi4xOUgyNVYyNi41YTEuMDksMS4wOSwwLDAsMCwyLjE3LDBWMTcuMjNoMy41NGExLjEsMS4xLDAsMSwwLDAtMi4xOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVBbGlnbkNlbnRlcj0o''@;'; put 'put ''MCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEsMjBIMTlWMTZoNmExLDEsMCwwLDAsMS0xVjdhMSwxLDAsMCwwLTEtMUgxOVYyYTEsMSwwLDAsMC0yLDBWNkgxMWExLDEsMCwwLDAtMSwxdjhhMSwxLDAsMCwwLDEsMWg2djRINWExLDEsMCwwLDAtMSwxdjhhMSwxLDAsMCwwLDEsMUgxN3Y0''@;'; put 'put ''YTEsMSwwLDAsMCwyLDBWMzBIMzFhMSwxLDAsMCwwLDEtMVYyMUExLDEsMCwwLDAsMzEsMjBaTTEyLDE0VjhIMjR2NlpNMzAsMjhINlYyMkgzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLEwuQ2xyU2hhcGVBbGlnbkxlZnQ9KDAsQi5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggZD0iTTUsMUExLDEsMCwwLDAsNCwyVjM0YTEsMSwwLDAsMCwyLDBWMkExLDEsMCwwLDAsNSwxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMxLDIwSDhWMzBIMzFhMSwxLDAsMCwwLDEtMVYyMUExLDEsMCwwLDAs''@;'; put 'put ''MzEsMjBabS0xLDhIMTBWMjJIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjQsMTVWN2ExLDEsMCwwLDAtMS0xSDhWMTZIMjNBMSwxLDAsMCwwLDI0LDE1Wm0tMi0xSDEwVjhIMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxMLkNsclNoYXBlQWxpZ25SaWdodD0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEsMWExLDEsMCwwLDAtMSwxVjM0YTEsMSwwLDAsMCwyLDBWMkExLDEsMCwwLDAsMzEsMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIiAvPjxwYXRoIGQ9Ik00LDIxdjhhMSwxLDAsMCwwLDEsMUgyOFYyMEg1QTEsMSwwLDAsMCw0LDIxWm0yLDFIMjZ2Nkg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTEyLDd2OGExLDEsMCwwLDAsMSwxSDI4VjZIMTNBMSwxLDAs''@;'; put 'put ''MCwwLDEyLDdabTIsMUgyNnY2SDE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksTC5DbHJTaGFwZUl0YWxpYz0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjQuNDIsOEgxNy4xYTEuMSwxLjEsMCwxLDAsMCwyLjE5aDIuMTNMMTMuMTEsMjUu''@;'; put 'put ''NTVIMTAuNDdhMS4xLDEuMSwwLDEsMCwwLDIuMTlIMTcuOGExLjEsMS4xLDAsMSwwLDAtMi4xOUgxNS41MWw2LjEzLTE1LjM2aDIuNzhhMS4xLDEuMSwwLDEsMCwwLTIuMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxMLkNsclNoYXBlSnVzdGlm''@;'; put 'put ''eVRleHQ9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTYsMTAuMkgzMS43NWExLjEsMS4xLDAsMSwwLDAtMi4ySDZhMS4xLDEuMSwwLDEsMCwwLDIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMS43NSwxNEg2YTEuMSwxLjEs''@;'; put 'put ''MCwxLDAsMCwyLjJIMzEuNzVhMS4xLDEuMSwwLDEsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMS4xMiwyMEg2LjYyYTEuMSwxLjEsMCwxLDAsMCwyLjJoMjQuNWExLjEsMS4xLDAsMSwwLDAtMi4yWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMwLjQ1LDI1LjgzSDYuNmExLjEsMS4xLDAsMCwwLDAsMi4ySDMwLjQ1YTEuMSwxLjEsMCwwLDAsMC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxMLkNsclNo''@;'; put 'put ''YXBlQWxpZ25MZWZ0VGV4dD0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjAuMjUsMjZINnYyLjJIMjAuMjVhMS4xLDEuMSwwLDAsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yOCwyMEg2djIuMkgyOEExLjEsMS4x''@;'; put 'put ''LDAsMCwwLDI4LDIwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTIyLjYsMTUuMUExLjEsMS4xLDAsMCwwLDIxLjUsMTRINnYyLjJIMjEuNUExLjEsMS4xLDAsMCwwLDIyLjYsMTUuMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yOS4yNSw4SDZ2Mi4ySDI5LjI1YTEuMSwxLjEsMCwxLDAsMC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxMLkNsclNoYXBlTnVtYmVyTGlzdD0oMCxCLmNsckljb25TVkcpKCc8cG9seWdv''@;'; put 'put ''biBwb2ludHM9IjUuNDYgNy40MSA1LjQ2IDExLjU2IDYuNjUgMTEuNTYgNi42NSA2LjA1IDUuNyA2LjA1IDQuMDUgNy4xNiA0LjUyIDggNS40NiA3LjQxIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNNS41NywxNC44MmEuNzYuNzYsMCww''@;'; put 'put ''LDEsLjgzLjczYzAsLjM4LS4yMS43NC0uODcsMS4yN2wtMiwxLjU3djFINy42N1YxOC4yOEg1LjMzbDEtLjc3YzEtLjcsMS4yOC0xLjI3LDEuMjgtMmExLjgzLDEuODMsMCwwLDAtMi0xLjc2LDIuNjMsMi42MywwLDAsMC0yLjE0LDEuMDhsLjc2LjczQTEuNzUsMS43NSwwLDAsMSw1LjU3LDE0''@;'; put 'put ''LjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTYuNTYsMjQuNjRhMS4zMiwxLjMyLDAsMCwwLDEtMS4yN2MwLS44Ny0uNzgtMS41MS0yLTEuNTFhMi42MSwyLjYxLDAsMCwwLTIuMSwxbC42OS43MmExLjc4LDEuNzgsMCwwLDEsMS4z''@;'; put 'put ''LS42NGMuNTQsMCwuOTIuMjYuOTIuNjZzLS4zNi42Mi0xLC42Mkg0Ljc5djFoLjY0Yy43NCwwLDEuMDcuMjEsMS4wNy42M3MtLjM1LjY4LTEsLjY4YTIsMiwwLDAsMS0xLjQ2LS42NWwtLjcuNzhhMi44NSwyLjg1LDAsMCwwLDIuMjEuOTNjMS4yOSwwLDIuMTMtLjY5LDIuMTMtMS42NEExLjMz''@;'; put 'put ''LDEuMzMsMCwwLDAsNi41NiwyNC42NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMi40Miw5YTEsMSwwLDAsMC0xLTFIMTB2MkgzMS40MkExLDEsMCwwLDAsMzIuNDIsOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMS40MiwxNkgxMHYySDMxLjQyYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzEuNDIsMjRIMTB2MkgzMS40MmExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksTC5DbHJTaGFwZVBhaW50Um9sbGVyPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMSwxMFY0YTIsMiwwLDAsMC0yLTJINkEyLDIsMCwwLDAsNCw0djZhMiwyLDAsMCwwLDIsMkgyOUEyLDIsMCwwLDAsMzEsMTBaTTYsNEgyOXY2''@;'; put 'put ''SDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMsNkgzMnY2LjI5TDE4LjcsMTYuNTRhMSwxLDAsMCwwLS43LDFWMTlIMTZWMzNhMiwyLDAsMCwwLDIsMmgyYTIsMiwwLDAsMCwyLTJWMTlIMjB2LS43M0wzMy4zLDE0YTEsMSwwLDAs''@;'; put 'put ''MCwuNy0xVjdBMSwxLDAsMCwwLDMzLDZaTTIwLDMzSDE4VjIxaDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cmVjdCB4PSI0IiB5PSIyIiB3aWR0aD0iMjciIGhlaWdodD0iMTAiIHJ4PSIxIiByeT0iMSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMsNkgzMnY2LjI0TDE4LjcxLDE2LjQ1YTEsMSwwLDAsMC0uNzEsMVYxOUgxNlYzNGExLDEsMCwwLDAsMSwxaDRhMSwxLDAsMCwwLDEtMVYxOUgyMHYtLjgyTDMzLjI5LDE0QTEsMSwwLDAsMCwzNCwxM1Y3QTEsMSwwLDAsMCwzMyw2WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxMLkNsclNoYXBlQmxvY2tRdW90ZT0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTEuODYsMTYuNTVhNC4zMSw0LjMxLDAsMCwwLTIuMTEuNTYsMTQuNDQsMTQuNDQsMCwwLDEsNC4zNi02LDEuMSwxLjEsMCwwLDAt''@;'; put 'put ''MS40LTEuN2MtNCwzLjI1LTUuNzgsNy43NS01Ljc4LDEwLjU0QTUuMDgsNS4wOCwwLDAsMCwxMCwyNC41OGE0LjQsNC40LDAsMCwwLDEuODguNDQsNC4yNCw0LjI0LDAsMSwwLDAtOC40N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0y''@;'; put 'put ''MywxNi41NWE0LjI5LDQuMjksMCwwLDAtMi4xMS41NiwxNC41LDE0LjUsMCwwLDEsNC4zNS02LDEuMSwxLjEsMCwxLDAtMS4zOS0xLjdjLTQsMy4yNS01Ljc4LDcuNzUtNS43OCwxMC41NGE1LjA4LDUuMDgsMCwwLDAsMyw0LjYxQTQuMzcsNC4zNywwLDAsMCwyMywyNWE0LjI0LDQuMjQsMCwx''@;'; put 'put ''LDAsMC04LjQ3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZUFsaWduUmlnaHRUZXh0PSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC42NSwyNy4xYTEuMSwxLjEsMCwwLDAsMS4xLDEuMUgzMFYyNkgxNS43NUExLjEsMS4x''@;'; put 'put ''LDAsMCwwLDE0LjY1LDI3LjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNNi45LDIxLjFBMS4xLDEuMSwwLDAsMCw4LDIyLjJIMzBWMjBIOEExLjEsMS4xLDAsMCwwLDYuOSwyMS4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTEzLjQsMTUuMWExLjEsMS4xLDAsMCwwLDEuMSwxLjFIMzBWMTRIMTQuNUExLjEsMS4xLDAsMCwwLDEzLjQsMTUuMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik02Ljc1LDhhMS4xLDEu''@;'; put 'put ''MSwwLDEsMCwwLDIuMkgzMFY4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+JyksTC5DbHJTaGFwZVRleHQ9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEyLjE5LDguODRhMS40NSwxLjQ1LDAsMCwwLTEuNC0xaC0uMTJhMS40NiwxLjQ2LDAsMCww''@;'; put 'put ''LTEuNDIsMUwxLjE0LDI2LjU2YTEuMjksMS4yOSwwLDAsMC0uMTQuNTksMSwxLDAsMCwwLDEsMSwxLjEyLDEuMTIsMCwwLDAsMS4wOC0uNzdsMi4wOC00LjY1aDExbDIuMDgsNC41OWExLjI0LDEuMjQsMCwwLDAsMS4xMi44MywxLjA4LDEuMDgsMCwwLDAsMS4wOC0xLjA4LDEuNjQsMS42NCww''@;'; put 'put ''LDAsMC0uMTQtLjU3Wk02LjA4LDIwLjcxbDQuNTktMTAuMjIsNC42LDEwLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMyLjI0LDE0Ljc4QTYuMzUsNi4zNSwwLDAsMCwyNy42LDEzLjJhMTEuMzYsMTEuMzYsMCwwLDAtNC43LDEs''@;'; put 'put ''MSwxLDAsMCwwLS41OC44OSwxLDEsMCwwLDAsLjk0LjkyLDEuMjMsMS4yMywwLDAsMCwuMzktLjA4LDguODcsOC44NywwLDAsMSwzLjcyLS44MWMyLjcsMCw0LjI4LDEuMzMsNC4yOCwzLjkydi41YTE1LjI5LDE1LjI5LDAsMCwwLTQuNDItLjYxYy0zLjY0LDAtNi4xNCwxLjYxLTYuMTQsNC42''@;'; put 'put ''NHYuMDVjMCwyLjk1LDIuNyw0LjQ4LDUuMzcsNC40OGE2LjI5LDYuMjksMCwwLDAsNS4xOS0yLjQ4VjI2LjlhMSwxLDAsMCwwLDEsMSwxLDEsMCwwLDAsMS0xLjA2VjE5QTUuNzEsNS43MSwwLDAsMCwzMi4yNCwxNC43OFptLS41Niw3LjdjMCwyLjI4LTIuMTcsMy44OS00LjgxLDMuODktMS45''@;'; put 'put ''NCwwLTMuNjEtMS4wNi0zLjYxLTIuODZ2LS4wNmMwLTEuOCwxLjUtMyw0LjItM2ExNS4yLDE1LjIsMCwwLDEsNC4yMi42MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLEwuQ2xyU2hhcGVVbmRlcmxpbmU9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''ZD0iTTE4LDI4LjE3YzUuMDgsMCw4LjQ4LTMuMDgsOC40OC05VjguNTRhMS4xNSwxLjE1LDAsMSwwLTIuMywwdjEwLjhjMCw0LjQ0LTIuMzgsNi43MS02LjEzLDYuNzFzLTYuMjEtMi40Ny02LjIxLTYuODVWOC41NGExLjE1LDEuMTUsMCwxLDAtMi4zLDB2MTAuOEM5LjUzLDI1LjA5LDEzLDI4''@;'; put 'put ''LjE3LDE4LDI4LjE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMxLDMwSDVhMS4xMSwxLjExLDAsMCwwLDAsMi4yMUgzMUExLjExLDEuMTEsMCwwLDAsMzEsMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMiIgLz4nKSxMLkNsclNoYXBlQWxpZ25Cb3R0b209KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDMwSDJhMSwxLDAsMCwwLDAsMkgzNGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE2LDVhMSwx''@;'; put 'put ''LDAsMCwwLTEtMUg3QTEsMSwwLDAsMCw2LDVWMjhIMTZaTTE0LDI2SDhWNmg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMwLDEzYTEsMSwwLDAsMC0xLTFIMjFhMSwxLDAsMCwwLTEsMVYyOEgzMFpNMjgsMjZIMjJWMTRoNloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLEwuQ2xyU2hhcGVBbGlnbk1pZGRsZT0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzQsMTdIMzBWMTFhMSwxLDAsMCwwLTEtMUgyMWExLDEsMCwwLDAtMSwxdjZIMTZWNWExLDEsMCwwLDAtMS0xSDdBMSwx''@;'; put 'put ''LDAsMCwwLDYsNVYxN0gyYTEsMSwwLDAsMCwwLDJINlYzMWExLDEsMCwwLDAsMSwxaDhhMSwxLDAsMCwwLDEtMVYxOWg0djZhMSwxLDAsMCwwLDEsMWg4YTEsMSwwLDAsMCwxLTFWMTloNGExLDEsMCwwLDAsMC0yWk0xNCwzMEg4VjZoNlptMTQtNkgyMlYxMmg2WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksTC5DbHJTaGFwZUFsaWduVG9wPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zNCw0SDJBMSwxLDAsMCwwLDIsNkgzNGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+''@;'; put 'put ''PHBhdGggZD0iTTYsMzFhMSwxLDAsMCwwLDEsMWg4YTEsMSwwLDAsMCwxLTFWOEg2Wk04LDEwaDZWMzBIOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMCwyM2ExLDEsMCwwLDAsMSwxaDhhMSwxLDAsMCwwLDEtMVY4SDIwWm0yLTEz''@;'; put 'put ''aDZWMjJIMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxMLkNsclNoYXBlTGFuZ3VhZ2U9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLDNIMTR2NWgyVjVoMTRjMC42LDAsMSwwLjQsMSwxdjExYzAsMC42LTAuNCwxLTEsMUgxN3Y3aC01''@;'; put 'put ''LjNMOCwyNy45VjI1SDVjLTAuNiwwLTEtMC40LTEtMVYxM2MwLTAuNiwwLjQtMSwxLTFoMTN2LTJINVxuXHRcdGMtMS43LDAtMywxLjMtMywzdjExYzAsMS43LDEuMywzLDMsM2gxdjUuMWw2LjMtNS4xSDE5di03aDExYzEuNywwLDMtMS4zLDMtM1Y2QzMzLDQuMywzMS43LDMsMzAsM3oiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik02LjIsMjIuOWgyLjRsMC42LTEuNmgzLjFsMC42LDEuNmgyLjRMMTEuOSwxNEg5LjVMNi4yLDIyLjl6IE0xMC43LDE2LjVsMSwzLjFoLTJMMTAuNywxNi41eiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTIwLDE3YzEuMSwwLDIuNi0wLjMsNC0xYzEuNCwwLjcsMywxLDQsMXYtMmMwLDAtMSwwLTIuMS0wLjRjMS4yLTEuMiwyLjEtMywyLjEtNS42VjhoLTNWNmgtMnYyaC0zdjJoNS45XG5cdFx0Yy0wLjIsMS44LTEsMi45LTEuOSwzLjZj''@;'; put 'put ''LTAuNi0wLjUtMS4yLTEuMi0xLjYtMi4xaC0yLjFjMC40LDEuMywxLDIuMywxLjgsMy4xQzIxLjEsMTUsMjAuMiwxNSwyMCwxNVYxN3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwb2x5Z29uIHBvaW50cz0iMTEsMTYuNSAxMCwxOS42IDEyLDE5LjYg''@;'; put 'put ''MTEsMTYuNSBcdCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzAuMywzaC0xNnY1aDR2MmgtMTNjLTEuNywwLTMsMS4zLTMsM3YxMWMwLDEuNywxLjMsMywzLDNoMXY1LjFsNi4zLTUuMWg2Ljd2LTdoMTFjMS43LDAsMy0xLjMsMy0zVjZcblx0''@;'; put 'put ''XHRDMzMuMyw0LjMsMzIsMywzMC4zLDN6IE0xMy4xLDIyLjlsLTAuNS0xLjZIOS41bC0wLjYsMS42SDYuNUw5LjgsMTRoMi40bDMuMyw4LjlMMTMuMSwyMi45eiBNMjguMywxNXYyYy0xLjMsMC0yLjctMC40LTMuOS0xXG5cdFx0Yy0xLjIsMC42LTIuNiwwLjktNCwxbC0wLjEtMmMwLjcsMCwx''@;'; put 'put ''LjQtMC4xLDIuMS0wLjNjLTAuOS0wLjktMS41LTItMS44LTMuMmgyLjFjMC4zLDAuOSwwLjksMS42LDEuNiwyLjJjMS4xLTAuOSwxLjgtMi4yLDEuOS0zLjdcblx0XHRoLTZWOGgzVjZoMnYyaDMuM2wwLjEsMWMwLjEsMi4xLTAuNyw0LjItMi4yLDUuN0MyNy4xLDE0LjksMjcuNywxNSwyOC4z''@;'; put 'put ''LDE1eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxMLkNsclNoYXBlVGV4dENvbG9yPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOS40NywzLjg0YTEuNDUsMS40NSwwLDAsMC0xLjQtMUgxOGExLjQ1LDEuNDUsMCwwLDAtMS40MiwxTDguNDIsMjEu''@;'; put 'put ''NTZhMS4zNSwxLjM1LDAsMCwwLS4xNC41OSwxLDEsMCwwLDAsMSwxLDEuMTEsMS4xMSwwLDAsMCwxLjA4LS43N2wyLjA4LTQuNjVoMTFsMi4wOCw0LjU5YTEuMjQsMS4yNCwwLDAsMCwxLjEyLjgzLDEuMDgsMS4wOCwwLDAsMCwxLjA4LTEuMDgsMS41OSwxLjU5LDAsMCwwLS4xNC0uNTdaTTEz''@;'; put 'put ''LjM2LDE1LjcxLDE4LDUuNDlsNC42LDEwLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHJlY3QgeD0iNC4wNiIgeT0iMjUiIHdpZHRoPSIyOCIgaGVpZ2h0PSI4IiByeD0iMiIgcnk9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yIi8+JyksTC5DbHJTaGFwZUhpZ2hsaWdodGVyPSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNS44MiwyNi4wNmExLDEsMCwwLDEtLjcxLS4yOUw4LjY3LDE5LjMzYTEsMSwwLDAsMS0uMjktLjcxLDEsMSwwLDAsMSwuMjktLjcxTDIzLDMuNTRhNS41NSw1LjU1LDAs''@;'; put 'put ''MSwxLDcuODUsNy44NkwxNi41MywyNS43N0ExLDEsMCwwLDEsMTUuODIsMjYuMDZabS01LTcuNDQsNSw1TDI5LjQ4LDEwYTMuNTQsMy41NCwwLDAsMCwwLTUsMy42MywzLjYzLDAsMCwwLTUsMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRo''@;'; put 'put ''IGQ9Ik0xMC4zOCwyOC4yOEExLDEsMCwwLDEsOS42NywyOEw2LjQ1LDI0Ljc3YTEsMSwwLDAsMS0uMjItMS4wOWwyLjIyLTUuNDRhMSwxLDAsMCwxLDEuNjMtLjMzbDYuNDUsNi40NEExLDEsMCwwLDEsMTYuMiwyNmwtNS40NCwyLjIyQTEuMzMsMS4zMywwLDAsMSwxMC4zOCwyOC4yOFpNOC4z''@;'; put 'put ''MywyMy44MmwyLjI5LDIuMjgsMy40My0xLjRMOS43NCwyMC4zOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik04Ljk0LDMwaC01YTEsMSwwLDAsMS0uODQtMS41NWwzLjIyLTQuOTRhMSwxLDAsMCwxLDEuNTUtLjE2bDMuMjEsMy4y''@;'; put 'put ''MmExLDEsMCwwLDEsLjA2LDEuMzVMOS43LDI5LjY0QTEsMSwwLDAsMSw4Ljk0LDMwWk01Ljc4LDI4SDguNDdMOSwyNy4zNGwtMS43LTEuN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxyZWN0IHg9IjMuMDYiIHk9IjMxIiB3aWR0aD0iMzAiIGhl''@;'; put 'put ''aWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz4nKSxMLkNsclNoYXBlT3V0ZGVudD0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMDYsOWgtMjZhMSwxLDAsMSwxLDAtMmgyNmExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDE0aC0xN2ExLDEsMCwwLDEsMC0yaDE3YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMTloLTE3YTEsMSwwLDAs''@;'; put 'put ''MSwwLTJoMTdhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwyNGgtMTdhMSwxLDAsMCwxLDAtMmgxN2ExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTQiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDI5aC0yNmExLDEsMCwwLDEsMC0yaDI2YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICA8cGF0aCBkPSJNOS41NiwyMi41NGExLDEsMCwwLDEtLjctLjNMNC42MSwxOGw0LjI1''@;'; put 'put ''LTQuMjRhMSwxLDAsMCwxLDEuNDEsMS40MUw3LjQ0LDE4bDIuODMsMi44M2ExLDEsMCwwLDEtLjcxLDEuNzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPicpLEwuQ2xyU2hhcGVJbmRlbnQ9KDAsQi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjA2LDlo''@;'; put 'put ''LTI2YTEsMSwwLDEsMSwwLTJoMjZhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwxNGgtMTdhMSwxLDAsMCwxLDAtMmgxN2ExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDE5aC0xN2ExLDEsMCwwLDEsMC0yaDE3YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMjRoLTE3YTEsMSwwLDAsMSwwLTJo''@;'; put 'put ''MTdhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwyOWgtMjZhMSwxLDAsMCwxLDAtMmgyNmExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUi''@;'; put 'put ''Lz5cbiAgPHBhdGggZD0iTTUuNTYsMjIuNTRhMSwxLDAsMCwxLS43LTEuNzFMNy42OCwxOCw0Ljg2LDE1LjE3YTEsMSwwLDAsMSwwLTEuNDEsMSwxLDAsMCwxLDEuNDEsMEwxMC41MSwxOCw2LjI3LDIyLjI0QTEsMSwwLDAsMSw1LjU2LDIyLjU0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTYiLz4nKSxMLkNsclNoYXBlU3RyaWtldGhyb3VnaD0oMCxCLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIuODgsMTkuOTJoLTMwYTEsMSwwLDEsMSwwLTJoMzBhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''Ii8+XG4gIDxwYXRoIGQ9Ik03LjI3LDE1Ljg2YTEyLjksMTIuOSwwLDAsMSwxLjI5LS41MkE1LjY5LDUuNjksMCwwLDEsMTAuMzksMTVhMy4xOCwzLjE4LDAsMCwxLDIuNzUsMS4xMUE0LjQ0LDQuNDQsMCwwLDEsMTQsMTguODV2LjQ5YTEzLjgzLDEzLjgzLDAsMCwwLTQuMjktLjc0LDYuMTks''@;'; put 'put ''Ni4xOSwwLDAsMC0yLjU5LjU0QTUsNSwwLDAsMCw1LjgxLDIwSDE1Ljg4VjE4Ljg1YTUuNjcsNS42NywwLDAsMC0xLjM3LTQsNS4xNiw1LjE2LDAsMCwwLTQtMS40OSwxMCwxMCwwLDAsMC0zLjkxLjg4Ljg3Ljg3LDAsMCwwLS40NCwxLjE4QS44NC44NCwwLDAsMCw3LjI3LDE1Ljg2WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTIxLDIwYTUuOTQsNS45NCwwLDAsMSwuNTQtMi4zMSw0LjM1LDQuMzUsMCwwLDEsMS41OC0xLjgzLDQuMjcsNC4yNywwLDAsMSw0LjU5LDAsNC40Nyw0LjQ3LDAsMCwxLDEuNTcsMS44M0E2LjEy''@;'; put 'put ''LDYuMTIsMCwwLDEsMjkuODUsMjBoMmE3LjczLDcuNzMsMCwwLDAtLjc4LTMuMTksNiw2LDAsMCwwLTIuMTgtMi40NSw1Ljc0LDUuNzQsMCwwLDAtMy4xLS44OCw1LjM5LDUuMzksMCwwLDAtMi44LjczLDUuNTUsNS41NSwwLDAsMC0yLDIuMDVWMTBhLjg3Ljg3LDAsMCwwLS44Ni0uODZIMjBh''@;'; put 'put ''Ljg3Ljg3LDAsMCwwLS44Ni44NlYyMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0yOS42NywyMmE1LjYxLDUuNjEsMCwwLDEtLjM2LDEuMDcsNC40Nyw0LjQ3LDAsMCwxLTEuNTcsMS44NSw0LjMyLDQuMzIsMCwwLDEtNC41OSww''@;'; put 'put ''LDQuMzUsNC4zNSwwLDAsMS0xLjU4LTEuODVBNS42NCw1LjY0LDAsMCwxLDIxLjIsMjJIMTkuMDl2NC4xM0EuODcuODcsMCwwLDAsMjAsMjdoLjJhLjg3Ljg3LDAsMCwwLC44Ni0uODZWMjQuNTFhNS41OCw1LjU4LDAsMCwwLDIsMi4wNiw1LjQ4LDUuNDgsMCwwLDAsMi44LjcyLDUuNjYsNS42''@;'; put 'put ''NiwwLDAsMCwzLjEtLjg4QTUuODgsNS44OCwwLDAsMCwzMS4wOSwyNCw3LjA5LDcuMDksMCwwLDAsMzEuNzMsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMTQsMjJ2Ljc2YTMuMzQsMy4zNCwwLDAsMS0xLjYyLDIsNS4zNCw1''@;'; put 'put ''LjM0LDAsMCwxLTIuNjkuNzIsMy43OCwzLjc4LDAsMCwxLTIuMzYtLjcsMi4yNCwyLjI0LDAsMCwxLS45NC0xLjksMi4yOSwyLjI5LDAsMCwxLC4yLS45MUg0LjYyYTQsNCwwLDAsMC0uMTMsMSwzLjgzLDMuODMsMCwwLDAsMS4zNSwzLjA2QTUuMTUsNS4xNSwwLDAsMCw5LjMxLDI3LjIsNiw2''@;'; put 'put ''LDAsMCwwLDEyLDI2LjU3YTQuNjIsNC42MiwwLDAsMCwyLTEuNzRWMjZhLjg2Ljg2LDAsMCwwLC44Ni44NkgxNWEuODYuODYsMCwwLDAsLjg2LS44NlYyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+JyksTC5DbHJTaGFwZVN1YnNjcmlwdD0oMCxCLmNs''@;'; put 'put ''ckljb25TVkcpKCc8cGF0aCBkPSJNMTQuNTUsMThsNi44LDguNmExLjE3LDEuMTcsMCwwLDEtLjkyLDEuOWgwYTEuMTcsMS4xNywwLDAsMS0uOTItLjQ0TDEzLDE5LjkxLDYuNiwyOGExLjE3LDEuMTcsMCwwLDEtLjkyLjQ0aDBhMS4xNywxLjE3LDAsMCwxLS45Mi0xLjlMMTEuNTUsMThsLTYu''@;'; put 'put ''OC04LjZhMS4xNywxLjE3LDAsMCwxLC45Mi0xLjloMEExLjE3LDEuMTcsMCwwLDEsNi42Myw4bDYuNDQsOC4xM0wxOS41LDhhMS4xNywxLjE3LDAsMCwxLC45Mi0uNDRoMGExLjE3LDEuMTcsMCwwLDEsLjkyLDEuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''Ii8+XG4gIDxwYXRoIGQ9Ik0yMywzMS44LDI3LjQ5LDI4YTkuOSw5LjksMCwwLDAsMS44OC0yLjA1QTMuNDQsMy40NCwwLDAsMCwzMCwyNGEyLjM1LDIuMzUsMCwwLDAtLjM1LTEuMjcsMi40NCwyLjQ0LDAsMCwwLTEtLjg0LDIuOSwyLjksMCwwLDAtMS4yNi0uMjgsMy4zNiwzLjM2LDAsMCww''@;'; put 'put ''LTEuODMuNSw1LjY0LDUuNjQsMCwwLDAtMS40OCwxLjQybC0xLS44MWE1LjExLDUuMTEsMCwwLDEsNC4zNi0yLjM3LDQuMzUsNC4zNSwwLDAsMSwyLC40NSwzLjQzLDMuNDMsMCwwLDEsMiwzLjE4LDQuNDUsNC40NSwwLDAsMS0uNjgsMi4zNSwxMC45LDEwLjksMCwwLDEtMi4yNCwyLjQ2bC0z''@;'; put 'put ''LjI0LDIuODFIMzEuNVYzM0gyM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+JyksTC5DbHJTaGFwZVN1cGVyc2NyaXB0PSgwLEIuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC40MywxOGw2Ljc5LDguNmExLjE3LDEuMTcsMCwwLDEtLjkyLDEuOWgwYTEu''@;'; put 'put ''MTcsMS4xNywwLDAsMS0uOTItLjQ0bC02LjQ0LTguMTNMNi40NywyOGExLjE3LDEuMTcsMCwwLDEtLjkyLjQ0aDBhMS4xNywxLjE3LDAsMCwxLS45Mi0xLjlMMTEuNDMsMThsLTYuOC04LjZhMS4xNywxLjE3LDAsMCwxLC45Mi0xLjloMEExLjIsMS4yLDAsMCwxLDYuNTEsOGw2LjQzLDguMTNM''@;'; put 'put ''MTkuMzgsOGExLjE3LDEuMTcsMCwwLDEsLjkyLS40NGgwYTEuMTcsMS4xNywwLDAsMSwuOTIsMS45WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTIyLjg1LDE0LjQ3bDQuNTEtMy44NWE5LjM3LDkuMzcsMCwwLDAsMS44OC0yLDMu''@;'; put 'put ''NDMsMy40MywwLDAsMCwuNTktMS44NiwyLjI3LDIuMjcsMCwwLDAtLjM2LTEuMjcsMi4zOCwyLjM4LDAsMCwwLS45NS0uODMsMi43NywyLjc3LDAsMCwwLTEuMjYtLjI5LDMuMzksMy4zOSwwLDAsMC0xLjgzLjUsNS44Myw1LjgzLDAsMCwwLTEuNDksMS40MmwtMS0uODFhNS4xMiw1LjEyLDAs''@;'; put 'put ''MCwxLDQuMzYtMi4zNyw0LjM2LDQuMzYsMCwwLDEsMiwuNDUsMy40NywzLjQ3LDAsMCwxLDIsMy4xOEE0LjQ0LDQuNDQsMCwwLDEsMzAuNTgsOWExMS4xNCwxMS4xNCwwLDAsMS0yLjI0LDIuNDZMMjUuMSwxNC4zMWg2LjI4djEuMzNIMjIuODVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMiIvPicpLEwuVGV4dEVkaXRTaGFwZXM9e2JvbGQ6TC5DbHJTaGFwZUJvbGQsImJ1bGxldC1saXN0IjpMLkNsclNoYXBlQnVsbGV0TGlzdCwiY2hlY2tib3gtbGlzdCI6TC5DbHJTaGFwZUNoZWNrYm94TGlzdCwibnVtYmVyLWxpc3QiOkwuQ2xyU2hhcGVOdW1iZXJM''@;'; put 'put ''aXN0LCJmb250LXNpemUiOkwuQ2xyU2hhcGVGb250U2l6ZSxpdGFsaWM6TC5DbHJTaGFwZUl0YWxpYywianVzdGlmeS10ZXh0IjpMLkNsclNoYXBlSnVzdGlmeVRleHQsImNlbnRlci10ZXh0IjpMLkNsclNoYXBlQ2VudGVyVGV4dCwiYWxpZ24tbGVmdC10ZXh0IjpMLkNsclNoYXBlQWxpZ25M''@;'; put 'put ''ZWZ0VGV4dCwiYWxpZ24tcmlnaHQtdGV4dCI6TC5DbHJTaGFwZUFsaWduUmlnaHRUZXh0LCJwYWludC1yb2xsZXIiOkwuQ2xyU2hhcGVQYWludFJvbGxlciwiYmxvY2stcXVvdGUiOkwuQ2xyU2hhcGVCbG9ja1F1b3RlLHRleHQ6TC5DbHJTaGFwZVRleHQsdW5kZXJsaW5lOkwuQ2xyU2hhcGVV''@;'; put 'put ''bmRlcmxpbmUsImFsaWduLWNlbnRlciI6TC5DbHJTaGFwZUFsaWduQ2VudGVyLCJhbGlnbi1sZWZ0IjpMLkNsclNoYXBlQWxpZ25MZWZ0LCJhbGlnbi1yaWdodCI6TC5DbHJTaGFwZUFsaWduUmlnaHQsImFsaWduLWJvdHRvbSI6TC5DbHJTaGFwZUFsaWduQm90dG9tLCJhbGlnbi1taWRkbGUi''@;'; put 'put ''OkwuQ2xyU2hhcGVBbGlnbk1pZGRsZSwiYWxpZ24tdG9wIjpMLkNsclNoYXBlQWxpZ25Ub3AsbGFuZ3VhZ2U6TC5DbHJTaGFwZUxhbmd1YWdlLCJ0ZXh0LWNvbG9yIjpMLkNsclNoYXBlVGV4dENvbG9yLGhpZ2hsaWdodGVyOkwuQ2xyU2hhcGVIaWdobGlnaHRlcixpbmRlbnQ6TC5DbHJTaGFw''@;'; put 'put ''ZUluZGVudCxvdXRkZW50OkwuQ2xyU2hhcGVPdXRkZW50LHN0cmlrZXRocm91Z2g6TC5DbHJTaGFwZVN0cmlrZXRocm91Z2gsc3Vic2NyaXB0OkwuQ2xyU2hhcGVTdWJzY3JpcHQsc3VwZXJzY3JpcHQ6TC5DbHJTaGFwZVN1cGVyc2NyaXB0fSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYm''@;'; put 'put ''d2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoTC5UZXh0RWRpdFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdHJhdmVsLXNoYXBlcy50cyI6ZnVuY3Rpb24oSmUsTCxtZSl7InVzZSBzdHJpY3QiO09iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShMLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMLlRyYXZlbFNoYXBlcz1MLkNsclNoYXBlT25Ib2xpZGF5PUwuQ2xyU2hhcGVUcmFpbGVyPUwuQ2xyU2hhcGVGZXJyeT1MLkNsclNoYXBlQ2FyYXZhbj1MLkNsclNoYXBlQ2FtcGVydmFuPUwuQ2xyU2hhcGVCb2F0''@;'; put 'put ''PUwuQ2xyU2hhcGVCaWN5Y2xlPUwuQ2xyU2hhcGVNYXBNYXJrZXI9TC5DbHJTaGFwZUNvbXBhc3M9TC5DbHJTaGFwZU1hcD1MLkNsclNoYXBlQ2FyPUwuQ2xyU2hhcGVBaXJwbGFuZT1MLkNsclNoYXBlVHJ1Y2s9dm9pZCAwO3ZhciBCPW1lKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9k''@;'; put 'put ''ZXNjcmlwdG9yLWNvbmZpZy50cyIpLEU9bWUoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIik7TC5DbHJTaGFwZVRydWNrPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJN''@;'; put 'put ''MzAsMTJIMjZWN2ExLDEsMCwwLDAtMS0xSDNBMSwxLDAsMCwwLDIsN1YyNWExLDEsMCwwLDAsMSwxSDRWOEgyNFYxOS43YTYuNDUsNi40NSwwLDAsMSwxLjU2LS4yYy4xNSwwLC4yOSwwLC40NCwwVjE0aDRhMiwyLDAsMCwxLDIsMnYxSDI4djJoNHY1SDI5LjZhNC41NCw0LjU0LDAsMCwwLTgu''@;'; put 'put ''MzQsMEgxNC40M2E0LjUsNC41LDAsMCwwLTQuMTctMi43NkE0LjM4LDQuMzgsMCwxLDAsMTQuNzIsMjZIMjFhNC40OSw0LjQ5LDAsMCwwLDguOTIsMEgzM2ExLDEsMCwwLDAsMS0xVjE2QTQsNCwwLDAsMCwzMCwxMlpNMTAuMjYsMjhhMi4zOCwyLjM4LDAsMSwxLDAtNC43NSwyLjM4LDIuMzgs''@;'; put 'put ''MCwxLDEsMCw0Ljc1Wm0xNS4xNywwYTIuMzgsMi4zOCwwLDEsMSwyLjUtMi4zN0EyLjQ0LDIuNDQsMCwwLDEsMjUuNDMsMjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAsMTJIMjZWN2ExLDEsMCwwLDAtMS0xSDNB''@;'; put 'put ''MSwxLDAsMCwwLDIsN1YyNWExLDEsMCwwLDAsMSwxSDRWOEgyNFYyMS40OUE0LjQ1LDQuNDUsMCwwLDAsMjEuMjUsMjRIMTQuNDNhNC41LDQuNSwwLDAsMC00LjE3LTIuNzZBNC4zOCw0LjM4LDAsMSwwLDE0LjcyLDI2SDIxYTQuNDgsNC40OCwwLDAsMCw4LjkxLDBIMzRWMTZBNCw0LDAsMCww''@;'; put 'put ''LDMwLDEyWk0xMC4yNiwyOGEyLjM4LDIuMzgsMCwxLDEsMC00Ljc1LDIuMzgsMi4zOCwwLDEsMSwwLDQuNzVabTE1LjE3LDBhMi4zOCwyLjM4LDAsMSwxLDIuNS0yLjM3QTIuNDQsMi40NCwwLDAsMSwyNS40MiwyOFpNMzIsMTdIMjZWMTRoNGEyLDIsMCwwLDEsMiwyWiIvPicpLEwuQ2xyU2hh''@;'; put 'put ''cGVBaXJwbGFuZT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM1Ljc3LDguMTZhMi40MywyLjQzLDAsMCwwLTEuOS0yTDI4LDQuODdhNC41LDQuNSwwLDAsMC0zLjY1Ljc5TDcsMTguMywyLjE0LDE4LjFBMS44''@;'; put 'put ''NiwxLjg2LDAsMCwwLC45MSwyMS40MWw1LDMuOTNjLjYuNzMsMSwuNTksMTAuOTMtNC44MmwuOTMsOS40MmExLjM2LDEuMzYsMCwwLDAsLjg1LDEuMTgsMS40MywxLjQzLDAsMCwwLC41NC4xLDEuNTQsMS41NCwwLDAsMCwxLS40MWwyLjM5LTIuMThhMS41MiwxLjUyLDAsMCwwLC40Ni0uODNM''@;'; put 'put ''MjUuMiwxNS45YzMuNTctMiw2Ljk1LTMuODgsOS4zNi01LjI1QTIuNDMsMi40MywwLDAsMCwzNS43Nyw4LjE2Wm0tMi4yLjc1Yy0yLjUsMS40Mi02LDMuNDEtOS43Niw1LjQ3bC0uNDEuMjNMMjEuMDcsMjcuMjhsLTEuNDcsMS4zNEwxOC41LDE3LjMyLDE3LjE3LDE4QzEwLDIyLDcuNjEsMjMu''@;'; put 'put ''MTYsNi43OSwyMy41MmwtNC4zLTMuNDEsNS4wOC4yMiwxOC0xMy4wNmEyLjUxLDIuNTEsMCwwLDEsMi0uNDVsNS44NSwxLjI2YS40My40MywwLDAsMSwuMzUuMzdBLjQyLjQyLDAsMCwxLDMzLjU3LDguOTFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMiIgZD0iTTcsMTIuNTRsMy41NiwxLDEuNjQtMS4xOS00LTEuMTZMMTAsMTAuMDlsNS40Ny0uMTYsMi4zLTEuNjdMMTAsOC41YTEuMjUsMS4yNSwwLDAsMC0uNy4xN0w2LjY3LDEwLjJBMS4yOCwxLjI4LDAsMCwwLDcsMTIuNTRaIi8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNNi4yNSwxMS41LDEyLDEzLjE2bDYuMzItNC41OS05LjA3LjI2QS41Mi41MiwwLDAsMCw5LDguOTFMNi4xMywxMC41NkEuNTEuNTEsMCwwLDAsNi4yNSwxMS41WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTM0LjUyLDYuMzYsMjguMjIsNWEzLjc4LDMuNzgsMCwwLDAtMy4wNy42N0w2LjEyLDE5LjVsLTQuNTctLjJhMS4yNSwxLjI1LDAsMCwwLS44MywyLjIybDQuNDUsMy41M2EuNTUuNTUsMCwwLDAsLjUzLjA5YzEuMjctLjQ5LDYt''@;'; put 'put ''MywxMS41OS02LjA3bDEuMTIsMTEuNTFhLjU1LjU1LDAsMCwwLC45LjM3bDIuNS0yLjA4YS43Ni43NiwwLDAsMCwuMjYtLjQ1bDIuMzctMTMuMjljNC0yLjIyLDcuODItNC4zNywxMC41MS01Ljg5QTEuNTUsMS41NSwwLDAsMCwzNC41Miw2LjM2WiIvPicpLEwuQ2xyU2hhcGVDYXI9KDAsRS5j''@;'; put 'put ''bHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjE1IiB5PSIxNyIgd2lkdGg9IjMiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBk''@;'; put 'put ''PSJNMjYuNDUsMTQuMTdBMjIuMSwyMi4xLDAsMCwwLDE5LjM4LDdhOS42NCw5LjY0LDAsMCwwLTktLjcsOC42LDguNiwwLDAsMC00LjgyLDYuNGMtLjA4LjQ3LS4xNC45Mi0uMiwxLjM2QTQsNCwwLDAsMCwyLDE4djYuMTNhMiwyLDAsMCwwLDIsMlYyMEg0VjE4YTIsMiwwLDAsMSwyLTJIMjQu''@;'; put 'put ''NzNBNy4yOCw3LjI4LDAsMCwxLDMyLDIzLjI3VjI0aC0yYTQuNTMsNC41MywwLDEsMCwuMzMsMkgzMmEyLDIsMCwwLDAsMi0ydi0uNzNBOS4yOCw5LjI4LDAsMCwwLDI2LjQ1LDE0LjE3Wk0xMSwxNEg2LjkzYzAtLjMxLjA5LS42My4xNS0xQTYuNTIsNi41MiwwLDAsMSwxMSw4aDBabTIsMFY3''@;'; put 'put ''LjU4YTguMTcsOC4xNywwLDAsMSw1LjM2LDEuMTZBMTksMTksMCwwLDEsMjMuOSwxNFpNMjUuOCwyOC4zOGEyLjUsMi41LDAsMSwxLDIuNS0yLjVBMi41LDIuNSwwLDAsMSwyNS44LDI4LjM4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zIiBkPSJNMTQuMTcsMjRhNC41Myw0LjUzLDAsMSwwLC4zMywyaDUuM2MwLS4wOCwwLS4xNywwLS4yNUE2LDYsMCwwLDEsMjAsMjRaTTEwLDI4LjM4YTIuNSwyLjUsMCwxLDEsMi41LTIuNUEyLjUsMi41LDAsMCwxLDEwLDI4LjM4WiIvPlxuICAgICAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNi44NywxNC4yOEEyMi4zNiwyMi4zNiwwLDAsMCwxOS42NSw2LjlhOS42NCw5LjY0LDAsMCwwLTktLjcsOC42LDguNiwwLDAsMC00LjgyLDYuNGMtLjA4LjQ5LS4xNSwxLS4yMSwxLjRoLTFBMi41OSwyLjU5''@;'; put 'put ''LDAsMCwwLDIsMTYuNTl2OC41NWEuODYuODYsMCwwLDAsLjg2Ljg2SDQuNTljMC0uMTMsMC0uMjYsMC0uMzlhNS43Nyw1Ljc3LDAsMCwxLDcuNzEtNS40NWwtMSwxYTQuNTYsNC41NiwwLDAsMC00LjM0LDEuNTgsMywzLDAsMCwwLS42My45M0E0LjUsNC41LDAsMSwwLDE0LjgyLDI2aDUuNDhj''@;'; put 'put ''MC0uMTMsMC0uMjYsMC0uMzlBNS43Nyw1Ljc3LDAsMCwxLDI4LDIwLjE2bC0xLDFhNC41Niw0LjU2LDAsMCwwLTQuMzQsMS41OCwzLDMsMCwwLDAtLjYzLjkzQTQuNSw0LjUsMCwxLDAsMzAuNTMsMjZoMi42MWEuODYuODYsMCwwLDAsLjg2LS44NlYyMy4zNkE5LjM5LDkuMzksMCwwLDAsMjYu''@;'; put 'put ''ODcsMTQuMjhaTTEyLDE0SDhjMC0uMzUuMS0uNzEuMTYtMS4wN2E2LjUyLDYuNTIsMCwwLDEsMy44Ny01aDBaTTEwLjM2LDI4LjM2YTIuNSwyLjUsMCwxLDEsMi41LTIuNUEyLjUsMi41LDAsMCwxLDEwLjM2LDI4LjM2Wk0xOSwxOUgxNlYxN2gzWm0tNi01VjcuNDdhOC4xNiw4LjE2LDAsMCwx''@;'; put 'put ''LDUuNCwxLjE1QTE5LjE1LDE5LjE1LDAsMCwxLDI0LDE0Wk0yNi4wNiwyOC4zNmEyLjUsMi41LDAsMSwxLDIuNS0yLjVBMi41LDIuNSwwLDAsMSwyNi4wNiwyOC4zNloiLz4nKSxMLkNsclNoYXBlTWFwPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xIiBkPSJNMzMuNTksNi4xOUExLDEsMCwwLDAsMzIuNyw2TDIzLjA5LDksMTMuNDYsNC4xMWExLDEsMCwwLDAtLjg0LDBMMi42Miw4LjJBMSwxLDAsMCwwLDIsOS4xM1YyOS42MWExLDEsMCwwLDAsMS4zOC45MkwxMywyNi41OGw5LjU5LDQuOTJhMSwxLDAsMCwwLC40''@;'; put 'put ''Ni4xMSwxLDEsMCwwLDAsLjMsMGwxMC0zLjEyYTEsMSwwLDAsMCwuNy0xVjdBMSwxLDAsMCwwLDMzLjU5LDYuMTlaTTMyLDI2Ljc1bC04LjMyLDIuNlYyNy4wNmgtMS42djJsLTguNC00LjMxVjIzLjA2aC0xLjZ2MS43Mkw0LDI4LjExVjkuNzlsOC4wOC0zLjMzVjguODFoMS42VjYuNDdsOC40''@;'; put 'put ''LDQuM3YyLjFoMS42VjExTDMyLDguMzZaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHg9IjIyLjA4IiB5PSIxNS4wNiIgd2lkdGg9IjEuNiIgaGVpZ2h0PSIzLjgxIi8+XG4gICAgICAgICAgICAgICAgPHJlY3Qg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjIyLjA4IiB5PSIyMS4wNiIgd2lkdGg9IjEuNiIgaGVpZ2h0PSIzLjgxIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjEyLjA4''@;'; put 'put ''IiB5PSIxMS4wNiIgd2lkdGg9IjEuNiIgaGVpZ2h0PSIzLjgxIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHg9IjEyLjA4IiB5PSIxNy4xMyIgd2lkdGg9IjEuNiIgaGVpZ2h0PSIzLjc1Ii8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMzLjMxLDcuMzUsMjUsOS45NFYxNEgyM1YxMC4yOUwxNCw1LjY4VjlIMTJWNS4yN2wtOS42Nyw0QS41My41MywwLDAsMCwyLDkuNzVWMzAuNDVhLjUzLjUzLDAsMCwwLC43NC40OUwxMiwyNy4x''@;'; put 'put ''MlYyM2gydjQuNTNsOSw0LjYxVjI4aDJ2My43OWw4LjYzLTIuN2EuNTMuNTMsMCwwLDAsLjM3LS41MVY3Ljg2QS41My41MywwLDAsMCwzMy4zMSw3LjM1Wk0xNCwyMUgxMlYxN2gyWm0wLTZIMTJWMTFoMlpNMjUsMjZIMjNWMjJoMlptMC02SDIzVjE2aDJaIi8+JyksTC5DbHJTaGFwZUNvbXBh''@;'; put 'put ''c3M9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIwLjgyLDE1LjMxaDBMMTAuNDYsOWMtLjQ2LS4yNi0xLjExLjM3LS44Ni44NGw2LjE1LDEwLjU2LDEwLjU2LDYuMTVhLjY2LjY2LDAsMCwwLC44NC0uODZabS00LDQsMy0zLDQuNTUsNy40NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMSwyOS45NVYyOS41M0gxN3YyLjQyQTE0LDE0LDAsMCwxLDQuMDUsMTlINi40N1YxN0g0LjA1QTE0LDE0LDAsMCwxLDE3LDQuMDVWNi40''@;'; put 'put ''N2gyVjQuMDVBMTQsMTQsMCwwLDEsMzEuOTUsMTdIMjkuNTN2MmgyLjQyQTE0LDE0LDAsMCwxLDE5LDMxLjk1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiww''@;'; put 'put ''LDAsMCwxOCwyWk02LjQ3LDE5SDQuMDVjMC0uMzMtLjA1LS42Ni0uMDUtMXMwLS42Ny4wNS0xSDYuNDdaTTE3LDQuMDVjLjMzLDAsLjY2LS4wNSwxLS4wNXMuNjcsMCwxLC4wNVY2LjQ3SDE3Wm0yLDI3LjljLS4zMywwLS42Ni4wNS0xLC4wNXMtLjY3LDAtMS0uMDVWMjkuNTNoMlptOC01LjU4''@;'; put 'put ''YS41OS41OSwwLDAsMS0uNjkuMTZMMTUuNzUsMjAuMzgsOS42LDkuODJjLS4yNS0uNDcuMzktMS4xLjg2LS44NGwxMC4zNyw2LjMzaDBsNi4zMywxMC4zN0EuNTkuNTksMCwwLDEsMjcsMjYuMzdaTTI5LjUzLDE5VjE3aDIuNDJjMCwuMzMuMDUuNjYuMDUsMXMwLC42Ny0uMDUsMVoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE2Ljc3IDE5LjM1IDI0LjM1IDIzLjc3IDE5LjggMTYuMzMgMTYuNzcgMTkuMzUiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJT''@;'; put 'put ''aGFwZU1hcE1hcmtlcj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDYuNzJhNS43Myw1LjczLDAsMSwwLDUuNzMsNS43M0E1LjczLDUuNzMsMCwwLDAsMTgsNi43MlptMCw5LjQ2YTMuNzMsMy43MywwLDEs''@;'; put 'put ''MSwzLjczLTMuNzNBMy43MywzLjczLDAsMCwxLDE4LDE2LjE3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMkExMS43OSwxMS43OSwwLDAsMCw2LjIyLDEzLjczYzAsNC42NywyLjYyLDguNTgsNC41''@;'; put 'put ''NCwxMS40M2wuMzUuNTJhOTkuNjEsOTkuNjEsMCwwLDAsNi4xNCw4bC43Ni44OS43Ni0uODlhOTkuODIsOTkuODIsMCwwLDAsNi4xNC04bC4zNS0uNTNjMS45MS0yLjg1LDQuNTMtNi43NSw0LjUzLTExLjQyQTExLjc5LDExLjc5LDAsMCwwLDE4LDJaTTIzLjU5LDI0bC0uMzYuNTNjLTEuNzIs''@;'; put 'put ''Mi41OC00LDUuNDctNS4yMyw2LjktMS4xOC0xLjQzLTMuNTEtNC4zMi01LjIzLTYuOUwxMi40MiwyNGMtMS43Ny0yLjY0LTQuMi02LjI1LTQuMi0xMC4zMWE5Ljc4LDkuNzgsMCwxLDEsMTkuNTYsMEMyNy43OCwxNy43OSwyNS4zNiwyMS40LDIzLjU5LDI0WiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTE4LDYuNzJhNS43Myw1LjczLDAsMSwwLDUuNzMsNS43M0E1LjczLDUuNzMsMCwwLDAsMTgsNi43MlptMCw5LjQ2YTMuNzMsMy43MywwLDEsMSwzLjczLTMuNzNBMy43''@;'; put 'put ''MywzLjczLDAsMCwxLDE4LDE2LjE3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTI5Ljc3LDEzLjQ5YTcuNDksNy40OSwwLDAsMS0yLS4zM2MwLC4xOSwwLC4zOCwwLC41Nyww''@;'; put 'put ''LDQuMDYtMi40Miw3LjY3LTQuMTksMTAuMzFsLS4zNi41M2MtMS43MiwyLjU4LTQsNS40Ny01LjIzLDYuOS0xLjE4LTEuNDMtMy41MS00LjMyLTUuMjMtNi45TDEyLjQyLDI0Yy0xLjc3LTIuNjQtNC4yLTYuMjUtNC4yLTEwLjMxQTkuNzcsOS43NywwLDAsMSwyMi41Niw1LjA5YTcuNDUsNy40''@;'; put 'put ''NSwwLDAsMSwuNTItMkExMS43NSwxMS43NSwwLDAsMCw2LjIyLDEzLjczYzAsNC42NywyLjYyLDguNTgsNC41NCwxMS40M2wuMzUuNTJhOTkuNjEsOTkuNjEsMCwwLDAsNi4xNCw4bC43Ni44OS43Ni0uODlhOTkuODIsOTkuODIsMCwwLDAsNi4xNC04bC4zNS0uNTNjMS45MS0yLjg1LDQuNTMt''@;'; put 'put ''Ni43NSw0LjUzLTExLjQyQzI5Ljc4LDEzLjY1LDI5Ljc3LDEzLjU3LDI5Ljc3LDEzLjQ5WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2''@;'; put 'put ''IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTEuNzksMTEuNzksMCwwLDAsNi4yMiwxMy43M2MwLDQuNjcsMi42Miw4LjU4LDQuNTQsMTEuNDNsLjM1LjUyYTk5LjYxLDk5LjYxLDAsMCwwLDYu''@;'; put 'put ''MTQsOGwuNzYuODkuNzYtLjg5YTk5LjgyLDk5LjgyLDAsMCwwLDYuMTQtOGwuMzUtLjUzYzEuOTEtMi44NSw0LjUzLTYuNzUsNC41My0xMS40MkExMS43OSwxMS43OSwwLDAsMCwxOCwyWm0wLDE3YTYuNTYsNi41NiwwLDEsMSw2LjU2LTYuNTZBNi41Niw2LjU2LDAsMCwxLDE4LDE5WiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgY3g9IjE4IiBjeT0iMTIuNDQiIHI9IjMuNzMiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJh''@;'; put 'put ''ZGdlZCIgZD0iTTI5Ljc3LDEzLjQ5QTcuNDcsNy40NywwLDAsMSwyNC4zOCwxMWE2LjU4LDYuNTgsMCwxLDEtMS42MS0zLDcuNDIsNy40MiwwLDAsMSwuMzEtNC44NEExMS43NSwxMS43NSwwLDAsMCw2LjIyLDEzLjczYzAsNC42NywyLjYyLDguNTgsNC41NCwxMS40M2wuMzUuNTJhOTkuNjEs''@;'; put 'put ''OTkuNjEsMCwwLDAsNi4xNCw4bC43Ni44OS43Ni0uODlhOTkuODIsOTkuODIsMCwwLDAsNi4xNC04bC4zNS0uNTNjMS45MS0yLjg1LDQuNTMtNi43NSw0LjUzLTExLjQyQzI5Ljc4LDEzLjY1LDI5Ljc3LDEzLjU3LDI5Ljc3LDEzLjQ5WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGN4PSIxOCIgY3k9IjEyLjQ0IiByPSIzLjczIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLEwuQ2xyU2hhcGVCaWN5Y2xlPSgwLEUuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik04LjUsMjkuNjVBNi41MSw2LjUxLDAsMCwxLDIsMjMuMTVhNi4zOSw2LjM5LDAsMCwxLDYuNS02LjM2QTYuMzksNi4zOSwwLDAsMSwxNSwyMy4xNSw2''@;'; put 'put ''LjUxLDYuNTEsMCwwLDEsOC41LDI5LjY1Wm0wLTExYTQuNSw0LjUsMCwxLDAsNC41LDQuNUE0LjUxLDQuNTEsMCwwLDAsOC41LDE4LjY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI3LjUsMjkuNjVhNi41MSw2LjUxLDAsMCwxLTYu''@;'; put 'put ''NS02LjUsNi41LDYuNSwwLDAsMSwxMywwQTYuNTEsNi41MSwwLDAsMSwyNy41LDI5LjY1Wm0wLTExYTQuNSw0LjUsMCwxLDAsNC41LDQuNUE0LjUxLDQuNTEsMCwwLDAsMjcuNSwxOC42NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0x''@;'; put 'put ''OSwyNC42Nkg4YTEsMSwwLDAsMS0uODktMS40NWw1LTEwLDEuNzguOUw5LjYyLDIyLjczSDE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHJlY3QgeD0iMTMiIHk9IjEyLjY4IiB3aWR0aD0iMTEiIGhlaWdodD0iMS45MSIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTI4LDI0LjY2YTEsMSwwLDAsMS0uOTQtLjY2TDIyLjI5LDEwLjY2SDIwYTEsMSwwLDAsMS0xLTEsMSwxLDAsMCwxLDEtLjkzaDNhLjk0Ljk0LDAsMCwxLC45NC42bDUsMTRhMSwxLDAsMCwxLS42LDEuMjdBMSwxLDAsMCwx''@;'; put 'put ''LDI4LDI0LjY2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTEzLDE0LjY2YTEsMSwwLDAsMS0uNzEtLjI5bC0xLjctMS43MUg4YTEsMSwwLDAsMS0xLTEsLjk0Ljk0LDAsMCwxLDEtMWgzYTEuMDgsMS4wOCwwLDAsMSwuNzUuMjdsMiwy''@;'; put 'put ''YTEsMSwwLDAsMSwwLDEuNDFBMSwxLDAsMCwxLDEzLDE0LjY2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTE1LDIxLjljLTAuMi0yLTEuMi0zLjgtMi45LTQuOWwtMi41LDQuOUgxNXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTcuMiwyMy40Yy0wLjItMC4zLTAuMi0wLjcsMC0xbDMuMi02LjNjLTAuNi0wLjItMS4yLTAuMi0xLjgtMC4yQzUsMTUuOSwyLDE4LjgsMiwyMi40YzAsMy42LDIuOSw2LjUsNi41LDYuNVxuXHRjMywwLDUuNi0yLjEsNi4zLTVIOEM3LjcsMjMuOSw3''@;'; put 'put ''LjMsMjMuNyw3LjIsMjMuNHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTE5LDIxLjloLTRjMCwwLjIsMCwwLjMsMCwwLjVjMCwwLjUtMC4xLDEtMC4yLDEuNUgxOVYyMS45eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MyIgLz48cGF0aCBkPSJNMjcuNSwxNS45Yy0wLjMsMC0wLjYsMC0wLjksMC4xbDIuNCw2LjZjMC4yLDAuNS0wLjEsMS4xLTAuNiwxLjNjLTAuMSwwLTAuMiwwLjEtMC4zLDAuMWMtMC40LDAtMC44LTAuMy0wLjktMC43bC0yLjQtNi43XG5cdGMtMy4yLDEuNi00LjUsNS41LTMsOC43YzEuNiwz''@;'; put 'put ''LjIsNS41LDQuNSw4LjcsM2MzLjItMS42LDQuNS01LjUsMy04LjdDMzIuMiwxNy4zLDMwLDE1LjksMjcuNSwxNS45eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz48cGF0aCBkPSJNMjQuNywxNi43YzAuNi0wLjMsMS4zLTAuNSwxLjktMC42bC0yLjctNy40QzIz''@;'; put 'put ''LjgsOC4yLDIzLjQsOCwyMyw3LjloLTNjLTAuNiwwLTEsMC41LTEsMS4xYzAsMC41LDAuNCwwLjksMSwwLjlcblx0YzAsMCwwLDAsMCwwaDIuM2wwLjcsMmgtOS42bC0xLjctMS43QzExLjUsMTAuMSwxMS4zLDEwLDExLDEwSDhjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoMi42bDEuMiwx''@;'; put 'put ''LjJsLTEuNSwzXG5cdGMwLjYsMC4yLDEuMywwLjUsMS44LDAuOGwxLjYtMy4yaDEwTDI0LjcsMTYuN3oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIC8+JyksTC5DbHJTaGFwZUJvYXQ9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjEsMjcuMUMyOCwyNywy''@;'; put 'put ''Ni45LDI3LjQsMjYsMjguMmMtMS4xLDEuMS0yLjksMS4xLTQuMSwwYy0xLTAuNy0yLjEtMS4xLTMuMy0xLjFjLTEuMi0wLjEtMi40LDAuMy0zLjMsMS4xXG5cdFx0QzE0LjcsMjguNywxNCwyOSwxMy4yLDI5cy0xLjUtMC4zLTIuMS0wLjhjLTEtMC44LTIuMi0xLjItMy40LTEuMnMtMi40LDAu''@;'; put 'put ''NC0zLjQsMS4yQzMuNywyOC43LDIuOCwyOSwyLDI5djJcblx0XHRjMS4zLDAuMSwyLjYtMC4zLDMuNi0xLjJDNi4yLDI5LjMsNy4xLDI5LDcuOSwyOWMwLjcsMCwxLjUsMC4zLDIuMSwwLjhjMS44LDEuNiw0LjYsMS42LDYuNSwwYzAuNi0wLjUsMS4zLTAuOCwyLjEtMC44XG5cdFx0YzAuNyww''@;'; put 'put ''LDEuNCwwLjMsMiwwLjhjMS45LDEuNiw0LjYsMS42LDYuNSwwYzAuNS0wLjUsMS4zLTAuOCwyLTAuOGMwLjcsMCwxLjQsMC4zLDEuOSwwLjhjMC45LDAuNywxLjksMS4xLDMsMS4ydi0yXG5cdFx0Yy0xLDAtMS4yLTAuNC0xLjctMC44QzMxLjQsMjcuNSwzMC4zLDI3LjEsMjkuMSwyNy4xeiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTYsMjNjMC0wLjYsMC41LTEsMS4xLTFIMzJsLTMuNSwzLjFoMC4yYzAuOCwwLDEuNiwwLjIsMi4yLDAuNWwyLjUtMi4ybDAuMi0wLjJjMC43LTAuOCwwLjYtMi4xLTAuMi0yLjhcblx0XHRDMzMs''@;'; put 'put ''MjAuMiwzMi42LDIwLDMyLjEsMjBoLTI1Yy0xLjcsMC0zLDEuMy0zLDN2My4yYzAuNS0wLjUsMS4yLTAuOCwxLjktMS4xVjIzeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTguOSwxOUgxNXYtNy44YzAtMC42LTAuMy0xLjItMC44LTEu''@;'; put 'put ''NkMxMy4zLDguOSwxMiw5LjEsMTEuNCwxMGwtNC4xLDUuOWMtMC40LDAuNi0wLjQsMS40LTAuMSwyLjFDNy41LDE4LjYsOC4yLDE5LDguOSwxOVxuXHRcdHogTTEzLjEsMTEuMkwxMywxN0g4LjlMMTMuMSwxMS4yeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMi''@;'; put 'put ''IC8+PHBhdGggZD0iTTI2LDE4YzAuNC0wLjYsMC40LTEuNCwwLTJMMTkuNyw1LjZjLTAuNC0wLjYtMS0xLTEuNy0xYy0xLjEsMC0yLDAuOS0yLDJWMTloOC4zQzI1LDE5LDI1LjcsMTguNiwyNiwxOHogTTE3LjksNi42XG5cdFx0bDYuNCwxMC41aC02LjRWNi42eiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTM0LDMxYy0xLjEtMC4xLTIuMS0wLjUtMy0xLjJjLTAuNS0wLjUtMS4yLTAuOC0yLTAuOGMtMC43LDAtMS41LDAuMy0yLDAuOGMtMC45LDAuOC0yLDEuMS0zLjEsMS4xYy0xLjIsMC0yLjQtMC40LTMuMy0xLjFcblx0Yy0x''@;'; put 'put ''LjItMS4xLTMtMS4xLTQuMSwwYy0wLjksMC44LTIuMSwxLjItMy40LDEuMmMtMS4yLDAtMi4zLTAuNC0zLjItMS4yYy0wLjYtMC41LTEuMy0wLjgtMi0wLjhjLTAuOCwwLTEuNywwLjMtMi4zLDAuOFxuXHRjLTEsMC44LTIuMywxLjItMy41LDEuMVYyOWMwLjgsMCwxLjctMC4zLDIuMy0wLjlj''@;'; put 'put ''MS0wLjgsMi4yLTEuMiwzLjQtMS4xYzEuMiwwLDIuNCwwLjQsMy4zLDEuMmMxLjIsMS4xLDMsMS4xLDQuMiwwXG5cdGMxLjktMS42LDQuNy0xLjYsNi41LDBjMS4yLDEuMSwzLDEuMSw0LjEsMGMwLjktMC44LDIuMS0xLjIsMy4zLTEuMmMxLjEsMCwyLjIsMC40LDMsMS4yQzMyLjgsMjguNywz''@;'; put 'put ''MywyOSwzNCwyOUwzNCwzMXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTQuMSwyNi4yYzAuNi0wLjUsMS4yLTAuOCwxLjktMVYyM2MwLTAuNiwwLjQtMS4xLDEtMS4xaDI1TDI4LjQsMjVoMC4yYzAuOCwwLDEuNiwwLjIsMi4yLDAuNWwyLjUt''@;'; put 'put ''Mi4ybDAuMi0wLjJcblx0YzAuNy0wLjksMC41LTIuMS0wLjQtMi44QzMyLjksMjAuMSwzMi40LDIwLDMyLDIwSDdjLTEuNywwLTMsMS4zLTMsM0w0LjEsMjYuMkw0LjEsMjYuMnoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTE0LjksMTguOUg4''@;'; put 'put ''LjljLTEuMSwwLTItMC45LTItMmMwLTAuNCwwLjEtMC44LDAuNC0xLjJsNC4xLTUuOGMwLjYtMC45LDEuOS0xLjEsMi44LTAuNWMwLjUsMC40LDAuOCwxLDAuOCwxLjZWMTguOXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTI0LjMsMTguOUgx''@;'; put 'put ''NlY2LjRjMC0xLjEsMC45LTIsMi0yYzAuNywwLDEuMywwLjQsMS43LDFMMjYsMTUuOGMwLjYsMSwwLjIsMi4yLTAuNywyLjdDMjUsMTguNywyNC42LDE4LjgsMjQuMywxOC45XG5cdEwyNC4zLDE4Ljl6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPicpLEwuQ2xy''@;'; put 'put ''U2hhcGVDYW1wZXJ2YW49KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTkuNSwyNEM5LjUsMjQsOS41LDI0LDkuNSwyNEM3LjYsMjQsNiwyNS42LDYsMjcuNWMwLDAsMCwwLDAsMEM2LDI5LjQsNy42LDMxLDkuNSwzMWMxLjksMCwzLjUtMS42LDMuNS0zLjVcblx0XHRTMTEuNCwyNCw5LjUs''@;'; put 'put ''MjR6IE05LjUsMjlDOC43LDI5LDgsMjguMyw4LDI3LjVTOC43LDI2LDkuNSwyNnMxLjUsMC43LDEuNSwxLjVTMTAuMywyOSw5LjUsMjl6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjMuNSwyNEMyMy41LDI0LDIzLjUsMjQsMjMuNSwy''@;'; put 'put ''NGMtMS45LDAtMy41LDEuNi0zLjUsMy41YzAsMCwwLDAsMCwwYzAsMS45LDEuNSwzLjUsMy41LDMuNWMxLjksMCwzLjUtMS42LDMuNS0zLjVcblx0XHRTMjUuNCwyNCwyMy41LDI0eiBNMjMuNSwyOWMtMC44LDAtMS41LTAuNy0xLjUtMS41czAuNy0xLjUsMS41LTEuNXMxLjUsMC43LDEuNSwx''@;'; put 'put ''LjVTMjQuMywyOSwyMy41LDI5eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMzLDIwLjFWMjBoLTAuMWwtMy41LTUuNUMzMSwxMy42LDMyLDEyLDMyLDEwLjNWOS43QzMyLDcuMSwyOS45LDUsMjcuMyw1aC04LjVjLTEuOSwwLTMuNywx''@;'; put 'put ''LjItNC40LDNINWMtMS43LDAtMywxLjMtMywzXG5cdFx0djE3aDJWMTFjMC0wLjYsMC40LTEsMS0xaDEwLjlMMTYsOS4yQzE2LjMsNy45LDE3LjQsNywxOC43LDdoOC41QzI4LjgsNywzMCw4LjIsMzAsOS43djAuNWMwLDEuNS0xLjIsMi43LTIuNywyLjdIMjR2OWg3Ljhcblx0XHRsMC4yLDAu''@;'; put 'put ''M1YyNWMwLDAuNi0wLjQsMS0xLDFoLTJ2MmgyYzEuNywwLDMtMS4zLDMtM3YtMy4zTDMzLDIwLjF6IE0yNiwyMHYtNWgxLjVsMy4xLDVIMjZ6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cmVjdCB4PSIxOSIgeT0iOSIgd2lkdGg9IjgiIGhlaWdodD0i''@;'; put 'put ''MiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBvbHlnb24gcG9pbnRzPSIyMCwyMiAyMiwyMiAyMiwxMyAxNSwxMyAxNSwyOCAxNywyOCAxNywxNSAyMCwxNSBcdCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBh''@;'; put 'put ''dGggZD0iTTYsMjBoN3YtN0g2VjIweiBNOCwxNWgzdjNIOFYxNXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik05LjUsMjRDNy42LDI0LDYsMjUuNiw2LDI3LjVTNy42LDMxLDkuNSwzMWMwLDAsMCwwLDAsMGMxLjksMCwzLjUtMS42LDMu''@;'; put 'put ''NS0zLjVjMCwwLDAtMC4xLDAtMC4xQzEzLDI1LjUsMTEuNCwyNCw5LjUsMjR6IlxuXHRcdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxjaXJjbGUgY3g9IjIzLjUiIGN5PSIyNy41IiByPSIzLjUiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTIiIC8+PHBhdGggZD0iTTI5LjUsMTQuNUMzMSwxMy42LDMyLDEyLDMyLDEwLjJWOS43YzAsMCwwLDAsMC0wLjFDMzIsNywyOS45LDUsMjcuMyw1aC04LjVjLTEuOSwwLTMuNywxLjItNC40LDNINWMtMS43LDAtMywxLjMtMywzdjE3XG5cdFx0aDJWMTFjMC0wLjYsMC40LTEsMS0xaDEwLjlM''@;'; put 'put ''MTYsOS4yQzE2LjMsNy45LDE3LjQsNywxOC43LDdoOC41QzI4LjgsNywzMCw4LjIsMzAsOS43djAuNWMwLDEuNS0xLjIsMi43LTIuNywyLjdIMjdoLTN2OWg3Ljhcblx0XHRsMC4yLDAuM1YyNWMwLDAuNi0wLjQsMS0xLDFoLTJ2MmgyYzEuNywwLDMtMS4zLDMtM3YtMy4zTDI5LjUsMTQuNXoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHJlY3QgeD0iMTkiIHk9IjkiIHdpZHRoPSI3LjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz48cG9seWdvbiBwb2ludHM9IjIwLDIyIDIxLjksMjIgMjEuOSwxMyAx''@;'; put 'put ''NSwxMyAxNSwyOCAxNi45LDI4IDE2LjksMTUgMjAsMTUgXHQiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIC8+PHJlY3QgeD0iNiIgeT0iMTMiIHdpZHRoPSI2LjkiIGhlaWdodD0iNyIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNiIgLz4nKSxM''@;'; put 'put ''LkNsclNoYXBlQ2FyYXZhbj0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTMuNSwyMUMxMSwyMSw5LDIzLDksMjUuNXMyLDQuNSw0LjUsNC41YzIuNSwwLDQuNS0yLDQuNS00LjVDMTgsMjMsMTYsMjEsMTMuNSwyMXogTTEzLjUsMjhjLTEuNCwwLTIuNS0xLjEtMi41LTIuNVxuXHRcdHMx''@;'; put 'put ''LjEtMi41LDIuNS0yLjVzMi41LDEuMSwyLjUsMi41UzE0LjksMjgsMTMuNSwyOHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMywyNGgtMnYtNy41YzAtMC41LTAuMS0xLTAuNC0xLjVsLTQuMi03LjVjLTAuNS0xLTEuNS0xLjUtMi42''@;'; put 'put ''LTEuNUg1QzMuMyw2LDIsNy4zLDIsOXYxNGMwLDEuNywxLjMsMywzLDNoMnYtMkg1XG5cdFx0Yy0wLjYsMC0xLTAuNC0xLTFWOWMwLTAuNiwwLjQtMSwxLTFoMTguOGMwLjQsMCwwLjcsMC4yLDAuOSwwLjVsNC4yLDcuNWMwLjEsMC4xLDAuMSwwLjMsMC4xLDAuNVYyNGgtNFYxMmgtN3Y4aDJ2''@;'; put 'put ''LTZoM3YxMGgtM3YyaDEzXG5cdFx0YzAuNiwwLDEtMC40LDEtMVMzMy42LDI0LDMzLDI0eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTE2LDEySDd2Nmg5VjEyeiBNMTQsMTZIOXYtMmg1VjE2eiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTEzLjUsMzBDMTEsMzAsOSwyOCw5LDI1LjVzMi00LjUsNC41LTQuNXM0LjUsMiw0LjUsNC41QzE4LDI4LDE2LDMwLDEzLjUsMzB6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMywy''@;'; put 'put ''NGgtMnYtNy41YzAtMC41LTAuMS0xLTAuNC0xLjVsLTQuMi03LjVjLTAuNS0xLTEuNS0xLjUtMi42LTEuNUg1QzMuMyw2LDIsNy4zLDIsOXYxNGMwLDEuNywxLjMsMywzLDNoMnYtMkg1XG5cdGMtMC42LDAtMS0wLjQtMS0xVjljMC0wLjYsMC40LTEsMS0xaDE4LjhjMC40LDAsMC43LDAuMiww''@;'; put 'put ''LjksMC41bDQuMiw3LjVjMC4xLDAuMSwwLjEsMC4zLDAuMSwwLjVWMjRoLTRWMTJoLTd2OGgydi02aDN2MTBoLTN2MmgxM1xuXHRjMC42LDAsMS0wLjQsMS0xUzMzLjYsMjQsMzMsMjR6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNiwxOEg3''@;'; put 'put ''di02aDlWMTh6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLEwuQ2xyU2hhcGVGZXJyeT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjksMjUuMWMtMS4yLDAtMi4zLDAuNC0zLjMsMS4xYzAsMCwwLDAsMCwwYy0xLjEsMS4xLTMsMS4xLTQuMSwwYy0w''@;'; put 'put ''LjktMC44LTIuMS0xLjItMy4zLTEuMmMtMS4yLDAtMi4zLDAuNC0zLjIsMS4yXG5cdFx0Yy0xLjIsMS4xLTMsMS4xLTQuMiwwQzEwLDI1LjQsOC44LDI1LDcuNiwyNWMtMS4yLDAtMi40LDAuNC0zLjQsMS4xQzMuNiwyNi43LDIuOCwyNywyLDI3djJjMS4zLDAuMSwyLjUtMC40LDMuNC0xLjJc''@;'; put 'put ''blx0XHRDNi4xLDI3LjMsNi45LDI3LDcuNywyN2MwLjgsMCwxLjUsMC4zLDIuMSwwLjhjMS45LDEuNiw0LjcsMS42LDYuNSwwYzAuNi0wLjUsMS4zLTAuOCwyLjEtMC44YzAuOCwwLDEuNSwwLjMsMi4xLDAuOFxuXHRcdGMxLjksMS42LDQuNiwxLjYsNi41LDBjMC41LTAuNSwxLjMtMC44LDIt''@;'; put 'put ''MC44YzAuNywwLDEuNSwwLjMsMiwwLjhjMC45LDAuNywyLDEuMSwzLjEsMS4ydi0xLjljLTAuNywwLTEuNC0wLjMtMS45LTAuOVxuXHRcdEMzMS4zLDI1LjQsMzAuMSwyNSwyOSwyNS4xeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTUu''@;'; put 'put ''OSwyMy4yVjIwSDMybC0zLjUsM2gwLjJjMC44LDAsMS42LDAuMiwyLjIsMC41bDIuNS0yLjJsMC4yLTAuMmMwLjUtMC42LDAuNS0xLjQsMC4yLTIuMWMtMC40LTAuNy0xLTEtMS44LTFoLTQuNFxuXHRcdEwyMi41LDExSDE3Yy0xLjcsMC0zLDEuMy0zLDNoLTJWOC4xSDZ2Ni4xYy0xLjIsMC40''@;'; put 'put ''LTIsMS41LTIsMi44djEuMVYyMHY0LjNsMC4xLTAuMUM0LjYsMjMuNyw1LjIsMjMuNCw1LjksMjMuMnogTTgsMTBoMnY0SDhWMTB6XG5cdFx0IE02LDE3YzAtMC42LDAuNC0xLDEtMWg5di0yYzAtMC42LDAuNC0xLDEtMWg1bDAuNiwxSDE4djJoNS44bDEuMiwyLjFINlYxN3oiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yOC4yLDI1Yy0xLjIsMC0yLjQsMC40LTMuMywxLjJjLTEuMiwxLjEtMywxLjEtNC4xLDBjLTEuOS0xLjYtNC42LTEuNi02LjUsMGMtMS4yLDEuMS0yLjksMS4xLTQuMSwwXG5cdFx0Yy0wLjktMC44LTItMS4y''@;'; put 'put ''LTMuMi0xLjJjLTEuMiwwLTIuMywwLjQtMy4yLDEuMkMzLjQsMjYuNywyLjcsMjcsMiwyN3YyYzEuMS0wLjEsMi4yLTAuNSwzLjEtMS4yQzUuNiwyNy4zLDYuMywyNyw3LDI3XG5cdFx0YzAuNywwLDEuNSwwLjMsMiwwLjhjMS45LDEuNiw0LjcsMS42LDYuNiwwYzAuNi0wLjUsMS4zLTAuOCwy''@;'; put 'put ''LjEtMC44YzAuOCwwLDEuNSwwLjMsMi4xLDAuOGMxLjksMS42LDQuNywxLjYsNi41LDBcblx0XHRjMC42LTAuNSwxLjMtMC44LDIuMS0wLjhjMC44LDAsMS42LDAuMywyLjEsMC44YzAuOSwwLjgsMi4yLDEuMywzLjQsMS4ydi0yYy0wLjgsMC0xLjYtMC4zLTIuMi0wLjhDMzAuNywyNS40LDI5''@;'; put 'put ''LjUsMjUsMjguMiwyNXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTUuOCwyMy4ydi0zLjNoMjYuMUwyOC40LDIzaDAuMmMwLjgsMCwxLjYsMC4yLDIuMiwwLjVsMi41LTIuMmwwLjEtMC4yYzAuNy0wLjksMC41LTIuMS0wLjQtMi44Yy0wLjMt''@;'; put 'put ''MC4zLTAuOC0wLjQtMS4yLTAuNFxuXHRcdGgtNC4xbC01LjQtN2gtNS41Yy0xLjcsMC0zLDEuMy0zLDNoLTJWOEg2djYuMmMtMS4yLDAuNC0yLjEsMS41LTIuMSwyLjhsMCw3LjJsMC4xLDBDNC41LDIzLjcsNS4xLDIzLjQsNS44LDIzLjJ6IE0xNy45LDE0aDQuMlxuXHRcdGwxLjQsMmgtNS43''@;'; put 'put ''VjE0eiBNNy45LDEwaDJ2NGgtMlYxMHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZVRyYWlsZXI9KDAsRS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE1LDE5LjJjLTMuMiwwLTUuOCwyLjYtNS44LDUuOHMyLjYsNS44LDUuOCw1LjhzNS44''@;'; put 'put ''LTIuNiw1LjgtNS44UzE4LjIsMTkuMiwxNSwxOS4yeiBNMTUsMjkuMmMtMi4zLDAtNC4yLTEuOS00LjItNC4yXG5cdFx0czEuOS00LjIsNC4yLTQuMnM0LjIsMS45LDQuMiw0LjJTMTcuMywyOS4yLDE1LDI5LjJ6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz48cmVjdCB4PSIxNCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMyw5SDJ2MTMuMWMwLDAsMCwwLDAsMEMyLDI0LjMsMy43LDI2LDUuOSwyNkg3di0ySDUuOWMtMSwwLTEuOC0wLjgt''@;'; put 'put ''MS45LTEuOVYxNWgyMnY3LjFjMCwxLTAuOCwxLjgtMS45LDEuOUgyM3YyaDEuMVxuXHRcdGMwLDAsMCwwLDAsMGMyLjEsMCwzLjgtMS43LDMuOC0zLjlWMTFoNWMwLjYsMCwxLTAuNCwxLTFTMzMuNiw5LDMzLDl6IE0yNiwxM0g0di0yaDIyVjEzeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMzLDlIMnYxMy4xYzAsMCwwLDAsMCwwQzIsMjQuMywzLjcsMjYsNS45LDI2SDd2LTJINS45Yy0xLDAtMS44LTAuOC0xLjktMS45VjE1aDIydjcuMWMwLDEtMC44LDEuOC0xLjksMS45SDIzdjJoMS4xXG5cdGMwLDAsMCwwLDAsMGMyLjEs''@;'; put 'put ''MCwzLjgtMS43LDMuOC0zLjlWMTFoNWMwLjYsMCwxLTAuNCwxLTFTMzMuNiw5LDMzLDl6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xNSwxOS4yYy0zLjIsMC01LjgsMi42LTUuOCw1LjhzMi42LDUuOCw1LjgsNS44czUuOC0yLjYsNS44LTUu''@;'; put 'put ''OGwwLDBDMjAuOCwyMS44LDE4LjIsMTkuMiwxNSwxOS4yeiBNMTYsMjZoLTJ2LTJoMlYyNnoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksTC5DbHJTaGFwZU9uSG9saWRheT0oMCxFLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTguMDgsMi4zNGMtOC44Miww''@;'; put 'put ''LTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNEExNy45MSwxNy45MSwwLDAsMCwyMywyOS42Nmw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuMzgtLjMsMSwxLDAsMCwwLC4xNi0uNTRWMjUuNjFhMTMsMTMsMCwwLDAsNC05LjI3QzM0LjA4LDguNjIsMjYuOSwyLjM0LDE4LjA4LDIuMzRaTTI4LjM3''@;'; put 'put ''LDI0LjQ1YTEsMSwwLDAsMC0uMzIuNzN2NS4zNGwtNC4zOC0yLjc5YTEsMSwwLDAsMC0uODMtLjExLDE2LDE2LDAsMCwxLTQuNzYuNzJjLTcuNzIsMC0xNC01LjM4LTE0LTEyczYuMjgtMTIsMTQtMTIsMTQsNS4zOCwxNCwxMkExMS4xLDExLjEsMCwwLDEsMjguMzcsMjQuNDVaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzEuMSwxNS44MiwzMSwxNS42NywyOC41LDEzLjQ0YTMuMjUsMy4yNSwwLDAsMC0yLjM5LS44NGwtNS4zOC4zNC0zLjU5LTNhLjgxLjgxLDAsMCwwLS41Mi0uMTlIMTMuNTZhLjc4Ljc4LDAsMCwwLS42''@;'; put 'put ''OS40Ljc3Ljc3LDAsMCwwLDAsLjc5bDEuMzYsMi40NC00LjcxLjI5LDEuMzEsMS41MiwxNS4zOS0xYTEuNjUsMS42NSwwLDAsMSwxLjIyLjQzbDIuMzYsMi4xM2EuMTEuMTEsMCwwLDEsMCwuMDdjMCwuMDYtLjA5LjA1LS4xLjA2SDIxLjgybC0uMzUuMzctNS4xOSw1LjUzSDE0LjY0bDIuNzMt''@;'; put 'put ''NS45SDguNTRMNy4xMywxNC4xNiw2LjUxLDEzYS44LjgsMCwwLDAtMS0uMkEuODEuODEsMCwwLDAsNS4yLDEzLjlsMiwzLjk0YTEuMjEsMS4yMSwwLDAsMCwxLjA4LjY1aDYuNTdsLTEuOTQsNC4xOEExLjIsMS4yLDAsMCwwLDEzLDIzLjgzYTEuMjIsMS4yMiwwLDAsMCwxLC41NmgyLjQzYTEu''@;'; put 'put ''MTcsMS4xNywwLDAsMCwuODgtLjM5bDUuMTgtNS41MWg3LjE2YTEuNjUsMS42NSwwLDAsMCwxLjUyLS45MUExLjc0LDEuNzQsMCwwLDAsMzEuMSwxNS44MlpNMTQuOTIsMTEuMzFoMS40MWwyLjA5LDEuNzdMMTYsMTMuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMiIvPlxuICBcbiAgPHBhdGggZD0iTTE4LDIuNWMtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNGExNy45MSwxNy45MSwwLDAsMCw0Ljg4LS42OGw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuMzgtLjNBMSwxLDAsMCwwLDMwLDMyLjVWMjUuNzdhMTMsMTMsMCwwLDAsNC05LjI3''@;'; put 'put ''QzM0LDguNzgsMjYuODIsMi41LDE4LDIuNVpNMjkuODQsMThIMjEuNTFhLjQyLjQyLDAsMCwwLS4zLjEzbC01LjMsNS42NGEuMzkuMzksMCwwLDEtLjI5LjEzSDEzLjE5YS40MS40MSwwLDAsMS0uMzctLjU4bDIuNDctNS4zMkg3LjQ2YS40Mi40MiwwLDAsMS0uMzYtLjIybC0yLjctNUg2LjI0''@;'; put 'put ''YS41My41MywwLDAsMSwuMzkuMThsMS41NiwxLjY5YS4zOC4zOCwwLDAsMCwuMzMuMTRsNi4xOC0uMzgtMi0zLjU1aDIuODlhLjQ3LjQ3LDAsMCwxLC4zMS4xMUwxOS42MywxNGw2LjY5LS4zNWEyLjQ0LDIuNDQsMCwwLDEsMS44MS42M2wyLjQ3LDIuMjNBLjkyLjkyLDAsMCwxLDI5Ljg0LDE4''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAnKSxMLlRyYXZlbFNoYXBlcz17dHJ1Y2s6TC5DbHJTaGFwZVRydWNrLGFpcnBsYW5lOkwuQ2xyU2hhcGVBaXJwbGFuZSxjYXI6TC5DbHJTaGFwZUNhcixtYXA6TC5DbHJTaGFwZU1hcCxjb21wYXNzOkwuQ2xy''@;'; put 'put ''U2hhcGVDb21wYXNzLCJtYXAtbWFya2VyIjpMLkNsclNoYXBlTWFwTWFya2VyLGJpY3ljbGU6TC5DbHJTaGFwZUJpY3ljbGUsYm9hdDpMLkNsclNoYXBlQm9hdCxjYW1wZXJ2YW46TC5DbHJTaGFwZUNhbXBlcnZhbixjYXJhdmFuOkwuQ2xyU2hhcGVDYXJhdmFuLGZlcnJ5OkwuQ2xyU2hhcGVG''@;'; put 'put ''ZXJyeSx0cmFpbGVyOkwuQ2xyU2hhcGVUcmFpbGVyLCJvbi1ob2xpZGF5IjpMLkNsclNoYXBlT25Ib2xpZGF5fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5UcmF2ZWxTaGFwZXMsInBsYW5lIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuVHJhdmVsU2hhcGVzLmFpcnBsYW5lKSksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KEwuVHJhdmVsU2hhcGVzLCJhdXRvIiwoMCxCLmRlc2NyaXB0b3JDb25maWcpKEwuVHJhdmVsU2hhcGVzLmNhcikpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUlj''@;'; put 'put ''b25zLmFkZChMLlRyYXZlbFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyI6ZnVuY3Rpb24oSmUsTCxtZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShMLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMLmRlc2NyaXB0''@;'; put 'put ''b3JDb25maWc9dm9pZCAwLEwuZGVzY3JpcHRvckNvbmZpZz1mdW5jdGlvbiBCKEUpe3JldHVybntlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx2YWx1ZTpFfX19LCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyI6ZnVuY3Rp''@;'; put 'put ''b24oSmUsTCxtZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShMLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxMLmNsckljb25TVkc9dm9pZCAwO0wuY2xySWNvblNWRz1mdW5jdGlvbiBVKFEpe3ZhciBqPSIiO3JldHVybiBRLmluZGV4T2YoIi0tYmFkZ2VkIik+LTEmJihq''@;'; put 'put ''Kz0iY2FuLWJhZGdlICIpLFEuaW5kZXhPZigiLS1hbGVydGVkIik+LTEmJihqKz0iY2FuLWFsZXJ0ICIpLFEuaW5kZXhPZigiY2xyLWktc29saWQiKT4tMSYmKGorPSJoYXMtc29saWQgIiksKGo/JzxzdmcgdmVyc2lvbj0iMS4xIiBjbGFzcz0iJytqKyciIHZpZXdCb3g9IjAgMCAzNiAzNiIg''@;'; put 'put ''cHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCJcbiAgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmb2N1c2FibGU9ImZhbHNlIiByb2xlPSJpbWciPic6JzxzdmcgdmVyc2lvbj0i''@;'; put 'put ''MS4xIiB2aWV3Qm94PSIwIDAgMzYgMzYiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiXG4gICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgZm9jdXNhYmxlPSJmYWxzZSIgcm9s''@;'; put 'put ''ZT0iaW1nIj4nKStRKyI8L3N2Zz4ifX19KX0sNjA5MzI6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT17fTtMLnIobWUpLEwuZChtZSx7Y2FuY2VsQW5pbWF0aW9uRnJhbWU6KCk9PlRaLGdldENvbXBhcmlzb25GdW5jdGlvbjooKT0+ZmJlLGhhc0NhcHRpb25Qcm9ibGVtOigpPT5V''@;'; put 'put ''aGUsaXNDbGFzc0xpc3RTdXBwb3J0ZWQ6KCk9PnNiZSxpc0dldENvbXB1dGVkU3R5bGVTdXBwb3J0ZWQ6KCk9PmNiZSxpc1Bhc3NpdmVFdmVudFN1cHBvcnRlZDooKT0+aGJlLGlzVGV4dENvbnRlbnRTdXBwb3J0ZWQ6KCk9PnViZSxpc1RvdWNoU3VwcG9ydGVkOigpPT5XaGUscmVxdWVzdEFu''@;'; put 'put ''aW1hdGlvbkZyYW1lOigpPT5HaGV9KTt2YXIgQj17fTtMLnIoQiksTC5kKEIse2FycmF5QXZnOigpPT5LamUsYXJyYXlFYWNoOigpPT5VcixhcnJheUZpbHRlcjooKT0+ZzQsYXJyYXlGbGF0dGVuOigpPT5nYmUsYXJyYXlNYXA6KCk9Pk9sLGFycmF5TWF4OigpPT5KamUsYXJyYXlNaW46KCk9''@;'; put 'put ''PlhqZSxhcnJheVJlZHVjZTooKT0+U3UsYXJyYXlTdW06KCk9PnBiZSxhcnJheVVuaXF1ZTooKT0+SmhlLGV4dGVuZEFycmF5OigpPT5RaGUsZ2V0RGlmZmVyZW5jZU9mQXJyYXlzOigpPT5YaGUsZ2V0SW50ZXJzZWN0aW9uT2ZBcnJheXM6KCk9PiRqZSxnZXRVbmlvbk9mQXJyYXlzOigpPT5x''@;'; put 'put ''amUscGl2b3Q6KCk9PkRaLHN0cmluZ1RvQXJyYXk6KCk9PktoZSx0bzJkQXJyYXk6KCk9PmRiZX0pO3ZhciBFPXt9O0wucihFKSxMLmQoRSx7Y2xvbmU6KCk9PmEzLGNyZWF0ZU9iamVjdFByb3BMaXN0ZW5lcjooKT0+RVMsZGVlcENsb25lOigpPT5naCxkZWVwRXh0ZW5kOigpPT5MWixkZWVw''@;'; put 'put ''T2JqZWN0U2l6ZTooKT0+SnEsZGVmaW5lR2V0dGVyOigpPT5TZyxkdWNrU2NoZW1hOigpPT5sTyxleHRlbmQ6KCk9PkkxLGdldFByb3BlcnR5OigpPT52YmUsaGFzT3duUHJvcGVydHk6KCk9Pm8xLGluaGVyaXQ6KCk9PlN2LGlzT2JqZWN0OigpPT54bCxpc09iamVjdEVxdWFsOigpPT4kaGUs''@;'; put 'put ''bWl4aW46KCk9PkIyLG9iamVjdEVhY2g6KCk9PkdsLHNldFByb3BlcnR5OigpPT5RcX0pO3ZhciBFZT17fTtMLnIoRWUpLEwuZChFZSx7aXNDaHJvbWU6KCk9PndiZSxpc0Nocm9tZVdlYktpdDooKT0+YmJlLGlzRWRnZTooKT0+a2JlLGlzRWRnZVdlYktpdDooKT0+ZVplLGlzRmlyZWZveDoo''@;'; put 'put ''KT0+WHEsaXNGaXJlZm94V2ViS2l0OigpPT5fYmUsaXNJRTooKT0+U2JlLGlzSUU5OigpPT5NYmUsaXNJT1M6KCk9PnFoZSxpc0lwYWRPUzooKT0+ZTNlLGlzTGludXhPUzooKT0+blplLGlzTVNCcm93c2VyOigpPT50WmUsaXNNYWNPUzooKT0+S3EsaXNNb2JpbGVCcm93c2VyOigpPT5iOCxp''@;'; put 'put ''c1NhZmFyaTooKT0+Q2JlLGlzV2luZG93c09TOigpPT50M2Usc2V0QnJvd3Nlck1ldGE6KCk9PkFiZSxzZXRQbGF0Zm9ybU1ldGE6KCk9PnliZX0pO3ZhciBVPXt9O0wucihVKSxMLmQoVSx7X2luamVjdFByb2R1Y3RJbmZvOigpPT5IYmUsaXNEZWZpbmVkOigpPT5Ubyxpc0VtcHR5OigpPT5k''@;'; put 'put ''Yyxpc1JlZ0V4cDooKT0+T2JlLGlzVW5kZWZpbmVkOigpPT5hMSxzdHJpbmdpZnk6KCk9PmV1fSk7dmFyIFE9e307TC5yKFEpLEwuZChRLHtlcXVhbHNJZ25vcmVDYXNlOigpPT5sWmUsaXNQZXJjZW50VmFsdWU6KCk9Pm8zZSxyYW5kb21TdHJpbmc6KCk9PmkzZSxzYW5pdGl6ZTooKT0+cXEs''@;'; put 'put ''c3RyaXBUYWdzOigpPT5sM2Usc3Vic3RpdHV0ZTooKT0+YTNlLHRvVXBwZXJDYXNlRmlyc3Q6KCk9PmxkfSk7dmFyIGo9e307TC5yKGopLEwuZChqLHtIVE1MX0NIQVJBQ1RFUlM6KCk9PkdiZSxhZGRDbGFzczooKT0+TzAsYWRkRXZlbnQ6KCk9PnBaZSxjbGVhclRleHRTZWxlY3Rpb246KCk9''@;'; put 'put ''Pm0zZSxjbG9zZXN0OigpPT5NdixjbG9zZXN0RG93bjooKT0+UFosZW1wdHk6KCk9PkRwLGZhc3RJbm5lckhUTUw6KCk9Pmt3LGZhc3RJbm5lclRleHQ6KCk9PlN3LGdldENhcmV0UG9zaXRpb246KCk9PmczZSxnZXRDb21wdXRlZFN0eWxlOigpPT5NdyxnZXRDc3NUcmFuc2Zvcm06KCk9PnZa''@;'; put 'put ''ZSxnZXRGcmFtZUVsZW1lbnQ6KCk9PmpiZSxnZXRQYXJlbnQ6KCk9PlZiZSxnZXRQYXJlbnRXaW5kb3c6KCk9PnUzZSxnZXRTY3JvbGxMZWZ0OigpPT50ZWUsZ2V0U2Nyb2xsVG9wOigpPT5GWixnZXRTY3JvbGxhYmxlRWxlbWVudDooKT0+SFosZ2V0U2Nyb2xsYmFyV2lkdGg6KCk9PkJjLGdl''@;'; put 'put ''dFNlbGVjdGlvbkVuZFBvc2l0aW9uOigpPT5XYmUsZ2V0U2VsZWN0aW9uVGV4dDooKT0+WWJlLGdldFN0eWxlOigpPT5uZWUsZ2V0VHJpbW1pbmdDb250YWluZXI6KCk9PmhPLGdldFdpbmRvd1Njcm9sbExlZnQ6KCk9PnhTLGdldFdpbmRvd1Njcm9sbFRvcDooKT0+Zk8saGFzQWNjZXNzVG9Q''@;'; put 'put ''YXJlbnRXaW5kb3c6KCk9PmhaZSxoYXNDbGFzczooKT0+dGwsaGFzSG9yaXpvbnRhbFNjcm9sbGJhcjooKT0+UWJlLGhhc1ZlcnRpY2FsU2Nyb2xsYmFyOigpPT5VYmUsaW5kZXg6KCk9PlpiZSxpbm5lckhlaWdodDooKT0+RXYsaW5uZXJXaWR0aDooKT0+TlosaXNDaGlsZE9mOigpPT5fdyxp''@;'; put 'put ''c0RldGFjaGVkOigpPT55M2UsaXNJbnB1dDooKT0+WlosaXNPdXRzaWRlSW5wdXQ6KCk9PkEzZSxpc1Zpc2libGU6KCk9PmNPLG1hdGNoZXNDU1NSdWxlczooKT0+ZFplLG9mZnNldDooKT0+anUsb3V0ZXJIZWlnaHQ6KCk9PkQxLG91dGVyV2lkdGg6KCk9PkUyLG92ZXJsYXlDb250YWluc0Vs''@;'; put 'put ''ZW1lbnQ6KCk9PkN3LHJlbW92ZUNsYXNzOigpPT5wbCxyZW1vdmVFdmVudDooKT0+Z1plLHJlbW92ZVRleHROb2RlczooKT0+cDNlLHJlc2V0Q3NzVHJhbnNmb3JtOigpPT5qWixzZWxlY3RFbGVtZW50SWZBbGxvd2VkOigpPT5KYmUsc2V0Q2FyZXRQb3NpdGlvbjooKT0+Vlosc2V0T3Zlcmxh''@;'; put 'put ''eVBvc2l0aW9uOigpPT5yZWV9KTt2YXIgcmU9e307TC5yKHJlKSxMLmQocmUse2N1cnJ5OigpPT5LYmUsY3VycnlSaWdodDooKT0+d1plLGRlYm91bmNlOigpPT53M2UsZmFzdENhbGw6KCk9PmllZSxpc0Z1bmN0aW9uOigpPT5VMixwYXJ0aWFsOigpPT5iM2UscGlwZTooKT0+eVplLHRocm90''@;'; put 'put ''dGxlOigpPT5YYmUsdGhyb3R0bGVBZnRlckhpdHM6KCk9PkFaZX0pO3ZhciBhZT17fTtMLnIoYWUpLEwuZChhZSx7S0VZX0NPREVTOigpPT5Rbyxpc0N0cmxLZXk6KCk9Pl9aZSxpc0N0cmxNZXRhS2V5OigpPT5xYmUsaXNGdW5jdGlvbktleTooKT0+XzNlLGlzS2V5OigpPT5kTyxpc1ByaW50''@;'; put 'put ''YWJsZUNoYXI6KCk9PiRiZX0pO3ZhciBZPXt9O0wucihZKSxMLmQoWSx7aXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6KCk9PlRTLGlzTGVmdENsaWNrOigpPT5vZWUsaXNSaWdodENsaWNrOigpPT5FdyxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246KCk9Pl84fSk7dmFyIFc9e307TC5y''@;'; put 'put ''KFcpLEwuZChXLHtfZGF0YVRvSFRNTDooKT0+TzNlLGh0bWxUb0dyaWRTZXR0aW5nczooKT0+ZF9lLGluc3RhbmNlVG9IVE1MOigpPT5MM2V9KTt2YXIgTj17fTtMLnIoTiksTC5kKE4se2lzTnVtZXJpYzooKT0+djQsaXNOdW1lcmljTGlrZTooKT0+cF9lLHJhbmdlRWFjaDooKT0+aWEscmFu''@;'; put 'put ''Z2VFYWNoUmV2ZXJzZTooKT0+c2VlLHZhbHVlQWNjb3JkaW5nUGVyY2VudDooKT0+UDNlfSk7dmFyIHRlPXt9O0wucih0ZSksTC5kKHRlLHtjZWxsTWV0aG9kTG9va3VwRmFjdG9yeTooKT0+cVosY291bnRGaXJzdFJvd0tleXM6KCk9PkpkZSxjcmVhdGVFbXB0eVNwcmVhZHNoZWV0RGF0YToo''@;'; put 'put ''KT0+V1FlLGNyZWF0ZVNwcmVhZHNoZWV0RGF0YTooKT0+elFlLGNyZWF0ZVNwcmVhZHNoZWV0T2JqZWN0RGF0YTooKT0+R1FlLGRhdGFSb3dUb0NoYW5nZXNBcnJheTooKT0+UWRlLGlzQXJyYXlPZkFycmF5czooKT0+ZWtlLGlzQXJyYXlPZk9iamVjdHM6KCk9PnRrZSxzcHJlYWRzaGVldENv''@;'; put 'put ''bHVtbkluZGV4OigpPT5aUWUsc3ByZWFkc2hlZXRDb2x1bW5MYWJlbDooKT0+emVlfSk7dmFyIEs9e307TC5yKEspLEwuZChLLHtDT05URVhUTUVOVV9JVEVNU19BRERfQ09NTUVOVDooKT0+ajRlLENPTlRFWFRNRU5VX0lURU1TX0FMSUdOTUVOVDooKT0+VzRlLENPTlRFWFRNRU5VX0lURU1T''@;'; put 'put ''X0FMSUdOTUVOVF9CT1RUT006KCk9PiQ0ZSxDT05URVhUTUVOVV9JVEVNU19BTElHTk1FTlRfQ0VOVEVSOigpPT5VNGUsQ09OVEVYVE1FTlVfSVRFTVNfQUxJR05NRU5UX0pVU1RJRlk6KCk9Pko0ZSxDT05URVhUTUVOVV9JVEVNU19BTElHTk1FTlRfTEVGVDooKT0+WTRlLENPTlRFWFRNRU5V''@;'; put 'put ''X0lURU1TX0FMSUdOTUVOVF9NSURETEU6KCk9Pks0ZSxDT05URVhUTUVOVV9JVEVNU19BTElHTk1FTlRfUklHSFQ6KCk9PlE0ZSxDT05URVhUTUVOVV9JVEVNU19BTElHTk1FTlRfVE9QOigpPT5YNGUsQ09OVEVYVE1FTlVfSVRFTVNfQk9SREVSUzooKT0+cTRlLENPTlRFWFRNRU5VX0lURU1T''@;'; put 'put ''X0JPUkRFUlNfQk9UVE9NOigpPT5ucGUsQ09OVEVYVE1FTlVfSVRFTVNfQk9SREVSU19MRUZUOigpPT5ycGUsQ09OVEVYVE1FTlVfSVRFTVNfQk9SREVSU19SSUdIVDooKT0+dHBlLENPTlRFWFRNRU5VX0lURU1TX0JPUkRFUlNfVE9QOigpPT5lcGUsQ09OVEVYVE1FTlVfSVRFTVNfQ0xFQVJf''@;'; put 'put ''Q09MVU1OOigpPT5SNGUsQ09OVEVYVE1FTlVfSVRFTVNfQ09QWTooKT0+QjRlLENPTlRFWFRNRU5VX0lURU1TX0NVVDooKT0+UDRlLENPTlRFWFRNRU5VX0lURU1TX0VESVRfQ09NTUVOVDooKT0+WjRlLENPTlRFWFRNRU5VX0lURU1TX0ZSRUVaRV9DT0xVTU46KCk9PkY0ZSxDT05URVhUTUVO''@;'; put 'put ''VV9JVEVNU19ISURFX0NPTFVNTjooKT0+bHBlLENPTlRFWFRNRU5VX0lURU1TX0hJREVfUk9XOigpPT51cGUsQ09OVEVYVE1FTlVfSVRFTVNfSU5TRVJUX0xFRlQ6KCk9PkU0ZSxDT05URVhUTUVOVV9JVEVNU19JTlNFUlRfUklHSFQ6KCk9Png0ZSxDT05URVhUTUVOVV9JVEVNU19NRVJHRV9D''@;'; put 'put ''RUxMUzooKT0+TjRlLENPTlRFWFRNRU5VX0lURU1TX05FU1RFRF9ST1dTX0RFVEFDSF9DSElMRDooKT0+YXBlLENPTlRFWFRNRU5VX0lURU1TX05FU1RFRF9ST1dTX0lOU0VSVF9DSElMRDooKT0+b3BlLENPTlRFWFRNRU5VX0lURU1TX05PX0lURU1TOigpPT5rNGUsQ09OVEVYVE1FTlVfSVRF''@;'; put 'put ''TVNfUkVBRF9PTkxZOigpPT5PNGUsQ09OVEVYVE1FTlVfSVRFTVNfUkVBRF9PTkxZX0NPTU1FTlQ6KCk9Pkc0ZSxDT05URVhUTUVOVV9JVEVNU19SRURPOigpPT5MNGUsQ09OVEVYVE1FTlVfSVRFTVNfUkVNT1ZFX0JPUkRFUlM6KCk9PmlwZSxDT05URVhUTUVOVV9JVEVNU19SRU1PVkVfQ09M''@;'; put 'put ''VU1OOigpPT5JNGUsQ09OVEVYVE1FTlVfSVRFTVNfUkVNT1ZFX0NPTU1FTlQ6KCk9Pno0ZSxDT05URVhUTUVOVV9JVEVNU19SRU1PVkVfUk9XOigpPT5UNGUsQ09OVEVYVE1FTlVfSVRFTVNfUk9XX0FCT1ZFOigpPT5TNGUsQ09OVEVYVE1FTlVfSVRFTVNfUk9XX0JFTE9XOigpPT5NNGUsQ09O''@;'; put 'put ''VEVYVE1FTlVfSVRFTVNfU0hPV19DT0xVTU46KCk9PnNwZSxDT05URVhUTUVOVV9JVEVNU19TSE9XX1JPVzooKT0+Y3BlLENPTlRFWFRNRU5VX0lURU1TX1VORE86KCk9PkQ0ZSxDT05URVhUTUVOVV9JVEVNU19VTkZSRUVaRV9DT0xVTU46KCk9Pkg0ZSxDT05URVhUTUVOVV9JVEVNU19VTk1F''@;'; put 'put ''UkdFX0NFTExTOigpPT5WNGUsQ09OVEVYVF9NRU5VX0lURU1TX05BTUVTUEFDRTooKT0+UmwsRklMVEVSU19CVVRUT05TX0NBTkNFTDooKT0+UHBlLEZJTFRFUlNfQlVUVE9OU19DTEVBUjooKT0+UnBlLEZJTFRFUlNfQlVUVE9OU19PSzooKT0+QnBlLEZJTFRFUlNfQlVUVE9OU19QTEFDRUhP''@;'; put 'put ''TERFUl9TRUFSQ0g6KCk9PkZwZSxGSUxURVJTX0JVVFRPTlNfUExBQ0VIT0xERVJfU0VDT05EX1ZBTFVFOigpPT5OcGUsRklMVEVSU19CVVRUT05TX1BMQUNFSE9MREVSX1ZBTFVFOigpPT5IcGUsRklMVEVSU19CVVRUT05TX1NFTEVDVF9BTEw6KCk9Pk9wZSxGSUxURVJTX0NPTkRJVElPTlNf''@;'; put 'put ''QUZURVI6KCk9PlNwZSxGSUxURVJTX0NPTkRJVElPTlNfQkVGT1JFOigpPT5NcGUsRklMVEVSU19DT05ESVRJT05TX0JFR0lOU19XSVRIOigpPT5ncGUsRklMVEVSU19DT05ESVRJT05TX0JFVFdFRU46KCk9PkNwZSxGSUxURVJTX0NPTkRJVElPTlNfQllfVkFMVUU6KCk9PkJYZSxGSUxURVJT''@;'; put 'put ''X0NPTkRJVElPTlNfQ09OVEFJTlM6KCk9PnZwZSxGSUxURVJTX0NPTkRJVElPTlNfRU1QVFk6KCk9PmZwZSxGSUxURVJTX0NPTkRJVElPTlNfRU5EU19XSVRIOigpPT5tcGUsRklMVEVSU19DT05ESVRJT05TX0VRVUFMOigpPT5kcGUsRklMVEVSU19DT05ESVRJT05TX0dSRUFURVJfVEhBTjoo''@;'; put 'put ''KT0+eXBlLEZJTFRFUlNfQ09ORElUSU9OU19HUkVBVEVSX1RIQU5fT1JfRVFVQUw6KCk9PndwZSxGSUxURVJTX0NPTkRJVElPTlNfTEVTU19USEFOOigpPT5icGUsRklMVEVSU19DT05ESVRJT05TX0xFU1NfVEhBTl9PUl9FUVVBTDooKT0+X3BlLEZJTFRFUlNfQ09ORElUSU9OU19OQU1FU1BB''@;'; put 'put ''Q0U6KCk9PnR1LEZJTFRFUlNfQ09ORElUSU9OU19OT05FOigpPT5ldGUsRklMVEVSU19DT05ESVRJT05TX05PVF9CRVRXRUVOOigpPT5rcGUsRklMVEVSU19DT05ESVRJT05TX05PVF9DT05UQUlOOigpPT5BcGUsRklMVEVSU19DT05ESVRJT05TX05PVF9FTVBUWTooKT0+aHBlLEZJTFRFUlNf''@;'; put 'put ''Q09ORElUSU9OU19OT1RfRVFVQUw6KCk9PnBwZSxGSUxURVJTX0NPTkRJVElPTlNfVE9EQVk6KCk9PkVwZSxGSUxURVJTX0NPTkRJVElPTlNfVE9NT1JST1c6KCk9PnhwZSxGSUxURVJTX0NPTkRJVElPTlNfWUVTVEVSREFZOigpPT5UcGUsRklMVEVSU19ESVZTX0ZJTFRFUl9CWV9DT05ESVRJ''@;'; put 'put ''T046KCk9PklwZSxGSUxURVJTX0RJVlNfRklMVEVSX0JZX1ZBTFVFOigpPT5EcGUsRklMVEVSU19MQUJFTFNfQ09OSlVOQ1RJT046KCk9PkxwZSxGSUxURVJTX0xBQkVMU19ESVNKVU5DVElPTjooKT0+dHRlLEZJTFRFUlNfTkFNRVNQQUNFOigpPT5sMyxGSUxURVJTX1ZBTFVFU19CTEFOS19D''@;'; put 'put ''RUxMUzooKT0+bnRlfSk7dmFyIEo9e307ZnVuY3Rpb24gc2UoZCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGR9TC5yKEopLEwuZChKLHtnZXROb3JtYWxpemVkRGF0ZTooKT0+dk1lfSk7bGV0IG9lPSExO2NvbnN0IGNlPXtQcm9taXNlOnZvaWQgMCxzZXQgdXNlRGVwcmVjYXRlZFN5bmNo''@;'; put 'put ''cm9ub3VzRXJyb3JIYW5kbGluZyhkKXtpZihkKXtjb25zdCBnPW5ldyBFcnJvcjtjb25zb2xlLndhcm4oIkRFUFJFQ0FURUQhIFJ4SlMgd2FzIHNldCB0byB1c2UgZGVwcmVjYXRlZCBzeW5jaHJvbm91cyBlcnJvciBoYW5kbGluZyBiZWhhdmlvciBieSBjb2RlIGF0OiBcbiIrZy5zdGFjayl9''@;'; put 'put ''ZWxzZSBvZSYmY29uc29sZS5sb2coIlJ4SlM6IEJhY2sgdG8gYSBiZXR0ZXIgZXJyb3IgYmVoYXZpb3IuIFRoYW5rIHlvdS4gPDMiKTtvZT1kfSxnZXQgdXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZygpe3JldHVybiBvZX19O2Z1bmN0aW9uIGRlKGQpe3NldFRpbWVvdXQo''@;'; put 'put ''KCk9Pnt0aHJvdyBkfSwwKX1jb25zdCB2ZT17Y2xvc2VkOiEwLG5leHQoZCl7fSxlcnJvcihkKXtpZihjZS51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nKXRocm93IGQ7ZGUoZCl9LGNvbXBsZXRlKCl7fX0sQWU9QXJyYXkuaXNBcnJheXx8KGQ9PmQmJiJudW1iZXIiPT10''@;'; put 'put ''eXBlb2YgZC5sZW5ndGgpO2Z1bmN0aW9uIGtlKGQpe3JldHVybiBudWxsIT09ZCYmIm9iamVjdCI9PXR5cGVvZiBkfWNvbnN0IEllPSgoKT0+e2Z1bmN0aW9uIGQoZyl7cmV0dXJuIEVycm9yLmNhbGwodGhpcyksdGhpcy5tZXNzYWdlPWc/YCR7Zy5sZW5ndGh9IGVycm9ycyBvY2N1cnJlZCBk''@;'; put 'put ''dXJpbmcgdW5zdWJzY3JpcHRpb246XG4ke2cubWFwKChoLHYpPT5gJHt2KzF9KSAke2gudG9TdHJpbmcoKX1gKS5qb2luKCJcbiAgIil9YDoiIix0aGlzLm5hbWU9IlVuc3Vic2NyaXB0aW9uRXJyb3IiLHRoaXMuZXJyb3JzPWcsdGhpc31yZXR1cm4gZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0''@;'; put 'put ''ZShFcnJvci5wcm90b3R5cGUpLGR9KSgpO2NsYXNzIFRle2NvbnN0cnVjdG9yKGcpe3RoaXMuY2xvc2VkPSExLHRoaXMuX3BhcmVudE9yUGFyZW50cz1udWxsLHRoaXMuX3N1YnNjcmlwdGlvbnM9bnVsbCxnJiYodGhpcy5fY3RvclVuc3Vic2NyaWJlPSEwLHRoaXMuX3Vuc3Vic2NyaWJlPWcp''@;'; put 'put ''fXVuc3Vic2NyaWJlKCl7bGV0IGc7aWYodGhpcy5jbG9zZWQpcmV0dXJuO2xldHtfcGFyZW50T3JQYXJlbnRzOmgsX2N0b3JVbnN1YnNjcmliZTp2LF91bnN1YnNjcmliZTp5LF9zdWJzY3JpcHRpb25zOkN9PXRoaXM7aWYodGhpcy5jbG9zZWQ9ITAsdGhpcy5fcGFyZW50T3JQYXJlbnRzPW51''@;'; put 'put ''bGwsdGhpcy5fc3Vic2NyaXB0aW9ucz1udWxsLGggaW5zdGFuY2VvZiBUZSloLnJlbW92ZSh0aGlzKTtlbHNlIGlmKG51bGwhPT1oKWZvcihsZXQgST0wO0k8aC5sZW5ndGg7KytJKWhbSV0ucmVtb3ZlKHRoaXMpO2lmKHNlKHkpKXt2JiYodGhpcy5fdW5zdWJzY3JpYmU9dm9pZCAwKTt0cnl7''@;'; put 'put ''eS5jYWxsKHRoaXMpfWNhdGNoKEkpe2c9SSBpbnN0YW5jZW9mIEllP01lKEkuZXJyb3JzKTpbSV19fWlmKEFlKEMpKXtsZXQgST0tMSxaPUMubGVuZ3RoO2Zvcig7KytJPFo7KXtjb25zdCB1ZT1DW0ldO2lmKGtlKHVlKSl0cnl7dWUudW5zdWJzY3JpYmUoKX1jYXRjaChfZSl7Zz1nfHxbXSxf''@;'; put 'put ''ZSBpbnN0YW5jZW9mIEllP2c9Zy5jb25jYXQoTWUoX2UuZXJyb3JzKSk6Zy5wdXNoKF9lKX19fWlmKGcpdGhyb3cgbmV3IEllKGcpfWFkZChnKXtsZXQgaD1nO2lmKCFnKXJldHVybiBUZS5FTVBUWTtzd2l0Y2godHlwZW9mIGcpe2Nhc2UiZnVuY3Rpb24iOmg9bmV3IFRlKGcpO2Nhc2Uib2Jq''@;'; put 'put ''ZWN0IjppZihoPT09dGhpc3x8aC5jbG9zZWR8fCJmdW5jdGlvbiIhPXR5cGVvZiBoLnVuc3Vic2NyaWJlKXJldHVybiBoO2lmKHRoaXMuY2xvc2VkKXJldHVybiBoLnVuc3Vic2NyaWJlKCksaDtpZighKGggaW5zdGFuY2VvZiBUZSkpe2NvbnN0IEM9aDtoPW5ldyBUZSxoLl9zdWJzY3JpcHRp''@;'; put 'put ''b25zPVtDXX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkIHRlYXJkb3duICIrZysiIGFkZGVkIHRvIFN1YnNjcmlwdGlvbi4iKX1sZXR7X3BhcmVudE9yUGFyZW50czp2fT1oO2lmKG51bGw9PT12KWguX3BhcmVudE9yUGFyZW50cz10aGlzO2Vsc2UgaWYodiBp''@;'; put 'put ''bnN0YW5jZW9mIFRlKXtpZih2PT09dGhpcylyZXR1cm4gaDtoLl9wYXJlbnRPclBhcmVudHM9W3YsdGhpc119ZWxzZXtpZigtMSE9PXYuaW5kZXhPZih0aGlzKSlyZXR1cm4gaDt2LnB1c2godGhpcyl9Y29uc3QgeT10aGlzLl9zdWJzY3JpcHRpb25zO3JldHVybiBudWxsPT09eT90aGlzLl9z''@;'; put 'put ''dWJzY3JpcHRpb25zPVtoXTp5LnB1c2goaCksaH1yZW1vdmUoZyl7Y29uc3QgaD10aGlzLl9zdWJzY3JpcHRpb25zO2lmKGgpe2NvbnN0IHY9aC5pbmRleE9mKGcpOy0xIT09diYmaC5zcGxpY2UodiwxKX19fXZhciBkO2Z1bmN0aW9uIE1lKGQpe3JldHVybiBkLnJlZHVjZSgoZyxoKT0+Zy5j''@;'; put 'put ''b25jYXQoaCBpbnN0YW5jZW9mIEllP2guZXJyb3JzOmgpLFtdKX1UZS5FTVBUWT0oKGQ9bmV3IFRlKS5jbG9zZWQ9ITAsZCk7Y29uc3QgaGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2woInJ4U3Vic2NyaWJlciIpOiJAQHJ4U3Vic2NyaWJlcl8iK01hdGgucmFuZG9tKCk7Y2xh''@;'; put 'put ''c3MgeiBleHRlbmRzIFRle2NvbnN0cnVjdG9yKGcsaCx2KXtzd2l0Y2goc3VwZXIoKSx0aGlzLnN5bmNFcnJvclZhbHVlPW51bGwsdGhpcy5zeW5jRXJyb3JUaHJvd249ITEsdGhpcy5zeW5jRXJyb3JUaHJvd2FibGU9ITEsdGhpcy5pc1N0b3BwZWQ9ITEsYXJndW1lbnRzLmxlbmd0aCl7Y2Fz''@;'; put 'put ''ZSAwOnRoaXMuZGVzdGluYXRpb249dmU7YnJlYWs7Y2FzZSAxOmlmKCFnKXt0aGlzLmRlc3RpbmF0aW9uPXZlO2JyZWFrfWlmKCJvYmplY3QiPT10eXBlb2YgZyl7ZyBpbnN0YW5jZW9mIHo/KHRoaXMuc3luY0Vycm9yVGhyb3dhYmxlPWcuc3luY0Vycm9yVGhyb3dhYmxlLHRoaXMuZGVzdGlu''@;'; put 'put ''YXRpb249ZyxnLmFkZCh0aGlzKSk6KHRoaXMuc3luY0Vycm9yVGhyb3dhYmxlPSEwLHRoaXMuZGVzdGluYXRpb249bmV3IGVlKHRoaXMsZykpO2JyZWFrfWRlZmF1bHQ6dGhpcy5zeW5jRXJyb3JUaHJvd2FibGU9ITAsdGhpcy5kZXN0aW5hdGlvbj1uZXcgZWUodGhpcyxnLGgsdil9fVtoZV0o''@;'; put 'put ''KXtyZXR1cm4gdGhpc31zdGF0aWMgY3JlYXRlKGcsaCx2KXtjb25zdCB5PW5ldyB6KGcsaCx2KTtyZXR1cm4geS5zeW5jRXJyb3JUaHJvd2FibGU9ITEseX1uZXh0KGcpe3RoaXMuaXNTdG9wcGVkfHx0aGlzLl9uZXh0KGcpfWVycm9yKGcpe3RoaXMuaXNTdG9wcGVkfHwodGhpcy5pc1N0b3Bw''@;'; put 'put ''ZWQ9ITAsdGhpcy5fZXJyb3IoZykpfWNvbXBsZXRlKCl7dGhpcy5pc1N0b3BwZWR8fCh0aGlzLmlzU3RvcHBlZD0hMCx0aGlzLl9jb21wbGV0ZSgpKX11bnN1YnNjcmliZSgpe3RoaXMuY2xvc2VkfHwodGhpcy5pc1N0b3BwZWQ9ITAsc3VwZXIudW5zdWJzY3JpYmUoKSl9X25leHQoZyl7dGhp''@;'; put 'put ''cy5kZXN0aW5hdGlvbi5uZXh0KGcpfV9lcnJvcihnKXt0aGlzLmRlc3RpbmF0aW9uLmVycm9yKGcpLHRoaXMudW5zdWJzY3JpYmUoKX1fY29tcGxldGUoKXt0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCksdGhpcy51bnN1YnNjcmliZSgpfV91bnN1YnNjcmliZUFuZFJlY3ljbGUoKXtjb25z''@;'; put 'put ''dHtfcGFyZW50T3JQYXJlbnRzOmd9PXRoaXM7cmV0dXJuIHRoaXMuX3BhcmVudE9yUGFyZW50cz1udWxsLHRoaXMudW5zdWJzY3JpYmUoKSx0aGlzLmNsb3NlZD0hMSx0aGlzLmlzU3RvcHBlZD0hMSx0aGlzLl9wYXJlbnRPclBhcmVudHM9Zyx0aGlzfX1jbGFzcyBlZSBleHRlbmRzIHp7Y29u''@;'; put 'put ''c3RydWN0b3IoZyxoLHYseSl7c3VwZXIoKSx0aGlzLl9wYXJlbnRTdWJzY3JpYmVyPWc7bGV0IEMsST10aGlzO3NlKGgpP0M9aDpoJiYoQz1oLm5leHQsdj1oLmVycm9yLHk9aC5jb21wbGV0ZSxoIT09dmUmJihJPU9iamVjdC5jcmVhdGUoaCksc2UoSS51bnN1YnNjcmliZSkmJnRoaXMuYWRk''@;'; put 'put ''KEkudW5zdWJzY3JpYmUuYmluZChJKSksSS51bnN1YnNjcmliZT10aGlzLnVuc3Vic2NyaWJlLmJpbmQodGhpcykpKSx0aGlzLl9jb250ZXh0PUksdGhpcy5fbmV4dD1DLHRoaXMuX2Vycm9yPXYsdGhpcy5fY29tcGxldGU9eX1uZXh0KGcpe2lmKCF0aGlzLmlzU3RvcHBlZCYmdGhpcy5fbmV4''@;'; put 'put ''dCl7Y29uc3R7X3BhcmVudFN1YnNjcmliZXI6aH09dGhpcztjZS51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nJiZoLnN5bmNFcnJvclRocm93YWJsZT90aGlzLl9fdHJ5T3JTZXRFcnJvcihoLHRoaXMuX25leHQsZykmJnRoaXMudW5zdWJzY3JpYmUoKTp0aGlzLl9fdHJ5''@;'; put 'put ''T3JVbnN1Yih0aGlzLl9uZXh0LGcpfX1lcnJvcihnKXtpZighdGhpcy5pc1N0b3BwZWQpe2NvbnN0e19wYXJlbnRTdWJzY3JpYmVyOmh9PXRoaXMse3VzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmc6dn09Y2U7aWYodGhpcy5fZXJyb3IpdiYmaC5zeW5jRXJyb3JUaHJvd2Fi''@;'; put 'put ''bGU/KHRoaXMuX190cnlPclNldEVycm9yKGgsdGhpcy5fZXJyb3IsZyksdGhpcy51bnN1YnNjcmliZSgpKToodGhpcy5fX3RyeU9yVW5zdWIodGhpcy5fZXJyb3IsZyksdGhpcy51bnN1YnNjcmliZSgpKTtlbHNlIGlmKGguc3luY0Vycm9yVGhyb3dhYmxlKXY/KGguc3luY0Vycm9yVmFsdWU9''@;'; put 'put ''ZyxoLnN5bmNFcnJvclRocm93bj0hMCk6ZGUoZyksdGhpcy51bnN1YnNjcmliZSgpO2Vsc2V7aWYodGhpcy51bnN1YnNjcmliZSgpLHYpdGhyb3cgZztkZShnKX19fWNvbXBsZXRlKCl7aWYoIXRoaXMuaXNTdG9wcGVkKXtjb25zdHtfcGFyZW50U3Vic2NyaWJlcjpnfT10aGlzO2lmKHRoaXMu''@;'; put 'put ''X2NvbXBsZXRlKXtjb25zdCBoPSgpPT50aGlzLl9jb21wbGV0ZS5jYWxsKHRoaXMuX2NvbnRleHQpO2NlLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcmJmcuc3luY0Vycm9yVGhyb3dhYmxlPyh0aGlzLl9fdHJ5T3JTZXRFcnJvcihnLGgpLHRoaXMudW5zdWJzY3JpYmUo''@;'; put 'put ''KSk6KHRoaXMuX190cnlPclVuc3ViKGgpLHRoaXMudW5zdWJzY3JpYmUoKSl9ZWxzZSB0aGlzLnVuc3Vic2NyaWJlKCl9fV9fdHJ5T3JVbnN1YihnLGgpe3RyeXtnLmNhbGwodGhpcy5fY29udGV4dCxoKX1jYXRjaCh2KXtpZih0aGlzLnVuc3Vic2NyaWJlKCksY2UudXNlRGVwcmVjYXRlZFN5''@;'; put 'put ''bmNocm9ub3VzRXJyb3JIYW5kbGluZyl0aHJvdyB2O2RlKHYpfX1fX3RyeU9yU2V0RXJyb3IoZyxoLHYpe2lmKCFjZS51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nKXRocm93IG5ldyBFcnJvcigiYmFkIGNhbGwiKTt0cnl7aC5jYWxsKHRoaXMuX2NvbnRleHQsdil9Y2F0''@;'; put 'put ''Y2goeSl7cmV0dXJuIGNlLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmc/KGcuc3luY0Vycm9yVmFsdWU9eSxnLnN5bmNFcnJvclRocm93bj0hMCwhMCk6KGRlKHkpLCEwKX1yZXR1cm4hMX1fdW5zdWJzY3JpYmUoKXtjb25zdHtfcGFyZW50U3Vic2NyaWJlcjpnfT10aGlz''@;'; put 'put ''O3RoaXMuX2NvbnRleHQ9bnVsbCx0aGlzLl9wYXJlbnRTdWJzY3JpYmVyPW51bGwsZy51bnN1YnNjcmliZSgpfX1jb25zdCBQPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5vYnNlcnZhYmxlfHwiQEBvYnNlcnZhYmxlIjtmdW5jdGlvbiBWKGQpe3JldHVybiBkfWZ1bmN0aW9u''@;'; put 'put ''IFMoZCl7cmV0dXJuIDA9PT1kLmxlbmd0aD9WOjE9PT1kLmxlbmd0aD9kWzBdOmZ1bmN0aW9uKGgpe3JldHVybiBkLnJlZHVjZSgodix5KT0+eSh2KSxoKX19bGV0IEY9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLl9pc1NjYWxhcj0hMSxoJiYodGhpcy5fc3Vic2NyaWJlPWgp''@;'; put 'put ''fWxpZnQoaCl7Y29uc3Qgdj1uZXcgZDtyZXR1cm4gdi5zb3VyY2U9dGhpcyx2Lm9wZXJhdG9yPWgsdn1zdWJzY3JpYmUoaCx2LHkpe2NvbnN0e29wZXJhdG9yOkN9PXRoaXMsST1mdW5jdGlvbiB4KGQsZyxoKXtpZihkKXtpZihkIGluc3RhbmNlb2YgeilyZXR1cm4gZDtpZihkW2hlXSlyZXR1''@;'; put 'put ''cm4gZFtoZV0oKX1yZXR1cm4gZHx8Z3x8aD9uZXcgeihkLGcsaCk6bmV3IHoodmUpfShoLHYseSk7aWYoSS5hZGQoQz9DLmNhbGwoSSx0aGlzLnNvdXJjZSk6dGhpcy5zb3VyY2V8fGNlLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcmJiFJLnN5bmNFcnJvclRocm93YWJs''@;'; put 'put ''ZT90aGlzLl9zdWJzY3JpYmUoSSk6dGhpcy5fdHJ5U3Vic2NyaWJlKEkpKSxjZS51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nJiZJLnN5bmNFcnJvclRocm93YWJsZSYmKEkuc3luY0Vycm9yVGhyb3dhYmxlPSExLEkuc3luY0Vycm9yVGhyb3duKSl0aHJvdyBJLnN5bmNF''@;'; put 'put ''cnJvclZhbHVlO3JldHVybiBJfV90cnlTdWJzY3JpYmUoaCl7dHJ5e3JldHVybiB0aGlzLl9zdWJzY3JpYmUoaCl9Y2F0Y2godil7Y2UudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZyYmKGguc3luY0Vycm9yVGhyb3duPSEwLGguc3luY0Vycm9yVmFsdWU9diksZnVuY3Rp''@;'; put 'put ''b24gbmUoZCl7Zm9yKDtkOyl7Y29uc3R7Y2xvc2VkOmcsZGVzdGluYXRpb246aCxpc1N0b3BwZWQ6dn09ZDtpZihnfHx2KXJldHVybiExO2Q9aCYmaCBpbnN0YW5jZW9mIHo/aDpudWxsfXJldHVybiEwfShoKT9oLmVycm9yKHYpOmNvbnNvbGUud2Fybih2KX19Zm9yRWFjaChoLHYpe3JldHVy''@;'; put 'put ''biBuZXcodj15ZSh2KSkoKHksQyk9PntsZXQgSTtJPXRoaXMuc3Vic2NyaWJlKFo9Pnt0cnl7aChaKX1jYXRjaCh1ZSl7Qyh1ZSksSSYmSS51bnN1YnNjcmliZSgpfX0sQyx5KX0pfV9zdWJzY3JpYmUoaCl7Y29uc3R7c291cmNlOnZ9PXRoaXM7cmV0dXJuIHYmJnYuc3Vic2NyaWJlKGgpfVtQ''@;'; put 'put ''XSgpe3JldHVybiB0aGlzfXBpcGUoLi4uaCl7cmV0dXJuIDA9PT1oLmxlbmd0aD90aGlzOlMoaCkodGhpcyl9dG9Qcm9taXNlKGgpe3JldHVybiBuZXcoaD15ZShoKSkoKHYseSk9PntsZXQgQzt0aGlzLnN1YnNjcmliZShJPT5DPUksST0+eShJKSwoKT0+dihDKSl9KX19cmV0dXJuIGQuY3Jl''@;'; put 'put ''YXRlPWc9Pm5ldyBkKGcpLGR9KSgpO2Z1bmN0aW9uIHllKGQpe2lmKGR8fChkPWNlLlByb21pc2V8fFByb21pc2UpLCFkKXRocm93IG5ldyBFcnJvcigibm8gUHJvbWlzZSBpbXBsIGZvdW5kIik7cmV0dXJuIGR9Y29uc3QgRGU9KCgpPT57ZnVuY3Rpb24gZCgpe3JldHVybiBFcnJvci5jYWxs''@;'; put 'put ''KHRoaXMpLHRoaXMubWVzc2FnZT0ib2JqZWN0IHVuc3Vic2NyaWJlZCIsdGhpcy5uYW1lPSJPYmplY3RVbnN1YnNjcmliZWRFcnJvciIsdGhpc31yZXR1cm4gZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpLGR9KSgpO2NsYXNzIFBlIGV4dGVuZHMgVGV7Y29uc3Ry''@;'; put 'put ''dWN0b3IoZyxoKXtzdXBlcigpLHRoaXMuc3ViamVjdD1nLHRoaXMuc3Vic2NyaWJlcj1oLHRoaXMuY2xvc2VkPSExfXVuc3Vic2NyaWJlKCl7aWYodGhpcy5jbG9zZWQpcmV0dXJuO3RoaXMuY2xvc2VkPSEwO2NvbnN0IGc9dGhpcy5zdWJqZWN0LGg9Zy5vYnNlcnZlcnM7aWYodGhpcy5zdWJq''@;'; put 'put ''ZWN0PW51bGwsIWh8fDA9PT1oLmxlbmd0aHx8Zy5pc1N0b3BwZWR8fGcuY2xvc2VkKXJldHVybjtjb25zdCB2PWguaW5kZXhPZih0aGlzLnN1YnNjcmliZXIpOy0xIT09diYmaC5zcGxpY2UodiwxKX19Y2xhc3MgUWUgZXh0ZW5kcyB6e2NvbnN0cnVjdG9yKGcpe3N1cGVyKGcpLHRoaXMuZGVz''@;'; put 'put ''dGluYXRpb249Z319bGV0ICRlPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBGe2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm9ic2VydmVycz1bXSx0aGlzLmNsb3NlZD0hMSx0aGlzLmlzU3RvcHBlZD0hMSx0aGlzLmhhc0Vycm9yPSExLHRoaXMudGhyb3duRXJyb3I9bnVsbH1baGVdKCl7cmV0''@;'; put 'put ''dXJuIG5ldyBRZSh0aGlzKX1saWZ0KGgpe2NvbnN0IHY9bmV3IGd0KHRoaXMsdGhpcyk7cmV0dXJuIHYub3BlcmF0b3I9aCx2fW5leHQoaCl7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IERlO2lmKCF0aGlzLmlzU3RvcHBlZCl7Y29uc3R7b2JzZXJ2ZXJzOnZ9PXRoaXMseT12Lmxlbmd0aCxD''@;'; put 'put ''PXYuc2xpY2UoKTtmb3IobGV0IEk9MDtJPHk7SSsrKUNbSV0ubmV4dChoKX19ZXJyb3IoaCl7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IERlO3RoaXMuaGFzRXJyb3I9ITAsdGhpcy50aHJvd25FcnJvcj1oLHRoaXMuaXNTdG9wcGVkPSEwO2NvbnN0e29ic2VydmVyczp2fT10aGlzLHk9di5s''@;'; put 'put ''ZW5ndGgsQz12LnNsaWNlKCk7Zm9yKGxldCBJPTA7STx5O0krKylDW0ldLmVycm9yKGgpO3RoaXMub2JzZXJ2ZXJzLmxlbmd0aD0wfWNvbXBsZXRlKCl7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IERlO3RoaXMuaXNTdG9wcGVkPSEwO2NvbnN0e29ic2VydmVyczpofT10aGlzLHY9aC5sZW5n''@;'; put 'put ''dGgseT1oLnNsaWNlKCk7Zm9yKGxldCBDPTA7Qzx2O0MrKyl5W0NdLmNvbXBsZXRlKCk7dGhpcy5vYnNlcnZlcnMubGVuZ3RoPTB9dW5zdWJzY3JpYmUoKXt0aGlzLmlzU3RvcHBlZD0hMCx0aGlzLmNsb3NlZD0hMCx0aGlzLm9ic2VydmVycz1udWxsfV90cnlTdWJzY3JpYmUoaCl7aWYodGhp''@;'; put 'put ''cy5jbG9zZWQpdGhyb3cgbmV3IERlO3JldHVybiBzdXBlci5fdHJ5U3Vic2NyaWJlKGgpfV9zdWJzY3JpYmUoaCl7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IERlO3JldHVybiB0aGlzLmhhc0Vycm9yPyhoLmVycm9yKHRoaXMudGhyb3duRXJyb3IpLFRlLkVNUFRZKTp0aGlzLmlzU3RvcHBl''@;'; put 'put ''ZD8oaC5jb21wbGV0ZSgpLFRlLkVNUFRZKToodGhpcy5vYnNlcnZlcnMucHVzaChoKSxuZXcgUGUodGhpcyxoKSl9YXNPYnNlcnZhYmxlKCl7Y29uc3QgaD1uZXcgRjtyZXR1cm4gaC5zb3VyY2U9dGhpcyxofX1yZXR1cm4gZC5jcmVhdGU9KGcsaCk9Pm5ldyBndChnLGgpLGR9KSgpO2NsYXNz''@;'; put 'put ''IGd0IGV4dGVuZHMgJGV7Y29uc3RydWN0b3IoZyxoKXtzdXBlcigpLHRoaXMuZGVzdGluYXRpb249Zyx0aGlzLnNvdXJjZT1ofW5leHQoZyl7Y29uc3R7ZGVzdGluYXRpb246aH09dGhpcztoJiZoLm5leHQmJmgubmV4dChnKX1lcnJvcihnKXtjb25zdHtkZXN0aW5hdGlvbjpofT10aGlzO2gm''@;'; put 'put ''JmguZXJyb3ImJnRoaXMuZGVzdGluYXRpb24uZXJyb3IoZyl9Y29tcGxldGUoKXtjb25zdHtkZXN0aW5hdGlvbjpnfT10aGlzO2cmJmcuY29tcGxldGUmJnRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX1fc3Vic2NyaWJlKGcpe2NvbnN0e3NvdXJjZTpofT10aGlzO3JldHVybiBoP3RoaXMu''@;'; put 'put ''c291cmNlLnN1YnNjcmliZShnKTpUZS5FTVBUWX19ZnVuY3Rpb24gd3QoZCl7cmV0dXJuIGQmJiJmdW5jdGlvbiI9PXR5cGVvZiBkLnNjaGVkdWxlfWZ1bmN0aW9uIG10KGQsZyl7cmV0dXJuIGZ1bmN0aW9uKHYpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBkKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''ImFyZ3VtZW50IGlzIG5vdCBhIGZ1bmN0aW9uLiBBcmUgeW91IGxvb2tpbmcgZm9yIGBtYXBUbygpYD8iKTtyZXR1cm4gdi5saWZ0KG5ldyB2dChkLGcpKX19Y2xhc3MgdnR7Y29uc3RydWN0b3IoZyxoKXt0aGlzLnByb2plY3Q9Zyx0aGlzLnRoaXNBcmc9aH1jYWxsKGcsaCl7cmV0dXJuIGgu''@;'; put 'put ''c3Vic2NyaWJlKG5ldyBBdChnLHRoaXMucHJvamVjdCx0aGlzLnRoaXNBcmcpKX19Y2xhc3MgQXQgZXh0ZW5kcyB6e2NvbnN0cnVjdG9yKGcsaCx2KXtzdXBlcihnKSx0aGlzLnByb2plY3Q9aCx0aGlzLmNvdW50PTAsdGhpcy50aGlzQXJnPXZ8fHRoaXN9X25leHQoZyl7bGV0IGg7dHJ5e2g9''@;'; put 'put ''dGhpcy5wcm9qZWN0LmNhbGwodGhpcy50aGlzQXJnLGcsdGhpcy5jb3VudCsrKX1jYXRjaCh2KXtyZXR1cm4gdm9pZCB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHYpfXRoaXMuZGVzdGluYXRpb24ubmV4dChoKX19Y29uc3QgaHQ9ZD0+Zz0+e2ZvcihsZXQgaD0wLHY9ZC5sZW5ndGg7aDx2JiYh''@;'; put 'put ''Zy5jbG9zZWQ7aCsrKWcubmV4dChkW2hdKTtnLmNvbXBsZXRlKCl9LF90PWZ1bmN0aW9uIG9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yP1N5bWJvbC5pdGVyYXRvcjoiQEBpdGVyYXRvciJ9KCksTHQ9ZD0+ZCYmIm51bWJlciI9PXR5cGVvZiBk''@;'; put 'put ''Lmxlbmd0aCYmImZ1bmN0aW9uIiE9dHlwZW9mIGQ7ZnVuY3Rpb24gQ3QoZCl7cmV0dXJuISFkJiYiZnVuY3Rpb24iIT10eXBlb2YgZC5zdWJzY3JpYmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBkLnRoZW59Y29uc3QgZnQ9ZD0+e2lmKGQmJiJmdW5jdGlvbiI9PXR5cGVvZiBkW1BdKXJldHVybihk''@;'; put 'put ''PT5nPT57Y29uc3QgaD1kW1BdKCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGguc3Vic2NyaWJlKXRocm93IG5ldyBUeXBlRXJyb3IoIlByb3ZpZGVkIG9iamVjdCBkb2VzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50IFN5bWJvbC5vYnNlcnZhYmxlIik7cmV0dXJuIGguc3Vic2NyaWJlKGcpfSko''@;'; put 'put ''ZCk7aWYoTHQoZCkpcmV0dXJuIGh0KGQpO2lmKEN0KGQpKXJldHVybihkPT5nPT4oZC50aGVuKGg9PntnLmNsb3NlZHx8KGcubmV4dChoKSxnLmNvbXBsZXRlKCkpfSxoPT5nLmVycm9yKGgpKS50aGVuKG51bGwsZGUpLGcpKShkKTtpZihkJiYiZnVuY3Rpb24iPT10eXBlb2YgZFtfdF0pcmV0''@;'; put 'put ''dXJuKGQ9Pmc9Pntjb25zdCBoPWRbX3RdKCk7Zm9yKDs7KXtsZXQgdjt0cnl7dj1oLm5leHQoKX1jYXRjaCh5KXtyZXR1cm4gZy5lcnJvcih5KSxnfWlmKHYuZG9uZSl7Zy5jb21wbGV0ZSgpO2JyZWFrfWlmKGcubmV4dCh2LnZhbHVlKSxnLmNsb3NlZClicmVha31yZXR1cm4iZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgaC5yZXR1cm4mJmcuYWRkKCgpPT57aC5yZXR1cm4mJmgucmV0dXJuKCl9KSxnfSkoZCk7e2NvbnN0IGg9YFlvdSBwcm92aWRlZCAke2tlKGQpPyJhbiBpbnZhbGlkIG9iamVjdCI6YCcke2R9J2B9IHdoZXJlIGEgc3RyZWFtIHdhcyBleHBlY3RlZC4gWW91IGNhbiBwcm92aWRl''@;'; put 'put ''IGFuIE9ic2VydmFibGUsIFByb21pc2UsIEFycmF5LCBvciBJdGVyYWJsZS5gO3Rocm93IG5ldyBUeXBlRXJyb3IoaCl9fTtmdW5jdGlvbiBVZShkLGcpe3JldHVybiBuZXcgRihoPT57Y29uc3Qgdj1uZXcgVGU7bGV0IHk9MDtyZXR1cm4gdi5hZGQoZy5zY2hlZHVsZShmdW5jdGlvbigpe3kh''@;'; put 'put ''PT1kLmxlbmd0aD8oaC5uZXh0KGRbeSsrXSksaC5jbG9zZWR8fHYuYWRkKHRoaXMuc2NoZWR1bGUoKSkpOmguY29tcGxldGUoKX0pKSx2fSl9ZnVuY3Rpb24gZG4oZCxnKXtyZXR1cm4gZz9mdW5jdGlvbiBnbihkLGcpe2lmKG51bGwhPWQpe2lmKGZ1bmN0aW9uIGp0KGQpe3JldHVybiBkJiYi''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2YgZFtQXX0oZCkpcmV0dXJuIGZ1bmN0aW9uIEh0KGQsZyl7cmV0dXJuIG5ldyBGKGg9Pntjb25zdCB2PW5ldyBUZTtyZXR1cm4gdi5hZGQoZy5zY2hlZHVsZSgoKT0+e2NvbnN0IHk9ZFtQXSgpO3YuYWRkKHkuc3Vic2NyaWJlKHtuZXh0KEMpe3YuYWRkKGcuc2No''@;'; put 'put ''ZWR1bGUoKCk9PmgubmV4dChDKSkpfSxlcnJvcihDKXt2LmFkZChnLnNjaGVkdWxlKCgpPT5oLmVycm9yKEMpKSl9LGNvbXBsZXRlKCl7di5hZGQoZy5zY2hlZHVsZSgoKT0+aC5jb21wbGV0ZSgpKSl9fSkpfSkpLHZ9KX0oZCxnKTtpZihDdChkKSlyZXR1cm4gZnVuY3Rpb24gR2UoZCxnKXty''@;'; put 'put ''ZXR1cm4gbmV3IEYoaD0+e2NvbnN0IHY9bmV3IFRlO3JldHVybiB2LmFkZChnLnNjaGVkdWxlKCgpPT5kLnRoZW4oeT0+e3YuYWRkKGcuc2NoZWR1bGUoKCk9PntoLm5leHQoeSksdi5hZGQoZy5zY2hlZHVsZSgoKT0+aC5jb21wbGV0ZSgpKSl9KSl9LHk9Pnt2LmFkZChnLnNjaGVkdWxlKCgp''@;'; put 'put ''PT5oLmVycm9yKHkpKSl9KSkpLHZ9KX0oZCxnKTtpZihMdChkKSlyZXR1cm4gVWUoZCxnKTtpZihmdW5jdGlvbiBKdChkKXtyZXR1cm4gZCYmImZ1bmN0aW9uIj09dHlwZW9mIGRbX3RdfShkKXx8InN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBmdW5jdGlvbiB5dChkLGcpe2lmKCFkKXRocm93''@;'; put 'put ''IG5ldyBFcnJvcigiSXRlcmFibGUgY2Fubm90IGJlIG51bGwiKTtyZXR1cm4gbmV3IEYoaD0+e2NvbnN0IHY9bmV3IFRlO2xldCB5O3JldHVybiB2LmFkZCgoKT0+e3kmJiJmdW5jdGlvbiI9PXR5cGVvZiB5LnJldHVybiYmeS5yZXR1cm4oKX0pLHYuYWRkKGcuc2NoZWR1bGUoKCk9Pnt5PWRb''@;'; put 'put ''X3RdKCksdi5hZGQoZy5zY2hlZHVsZShmdW5jdGlvbigpe2lmKGguY2xvc2VkKXJldHVybjtsZXQgQyxJO3RyeXtjb25zdCBaPXkubmV4dCgpO0M9Wi52YWx1ZSxJPVouZG9uZX1jYXRjaChaKXtyZXR1cm4gdm9pZCBoLmVycm9yKFopfUk/aC5jb21wbGV0ZSgpOihoLm5leHQoQyksdGhpcy5z''@;'; put 'put ''Y2hlZHVsZSgpKX0pKX0pKSx2fSl9KGQsZyl9dGhyb3cgbmV3IFR5cGVFcnJvcigobnVsbCE9PWQmJnR5cGVvZiBkfHxkKSsiIGlzIG5vdCBvYnNlcnZhYmxlIil9KGQsZyk6ZCBpbnN0YW5jZW9mIEY/ZDpuZXcgRihmdChkKSl9Y2xhc3MgeW4gZXh0ZW5kcyB6e2NvbnN0cnVjdG9yKGcpe3N1''@;'; put 'put ''cGVyKCksdGhpcy5wYXJlbnQ9Z31fbmV4dChnKXt0aGlzLnBhcmVudC5ub3RpZnlOZXh0KGcpfV9lcnJvcihnKXt0aGlzLnBhcmVudC5ub3RpZnlFcnJvcihnKSx0aGlzLnVuc3Vic2NyaWJlKCl9X2NvbXBsZXRlKCl7dGhpcy5wYXJlbnQubm90aWZ5Q29tcGxldGUoKSx0aGlzLnVuc3Vic2Ny''@;'; put 'put ''aWJlKCl9fWNsYXNzIE5uIGV4dGVuZHMgentub3RpZnlOZXh0KGcpe3RoaXMuZGVzdGluYXRpb24ubmV4dChnKX1ub3RpZnlFcnJvcihnKXt0aGlzLmRlc3RpbmF0aW9uLmVycm9yKGcpfW5vdGlmeUNvbXBsZXRlKCl7dGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfX1mdW5jdGlvbiBlcihk''@;'; put 'put ''LGcpe2lmKGcuY2xvc2VkKXJldHVybjtpZihkIGluc3RhbmNlb2YgRilyZXR1cm4gZC5zdWJzY3JpYmUoZyk7bGV0IGg7dHJ5e2g9ZnQoZCkoZyl9Y2F0Y2godil7Zy5lcnJvcih2KX1yZXR1cm4gaH1mdW5jdGlvbiBzcihkLGcsaD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpe3JldHVybiJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBnP3Y9PnYucGlwZShzcigoeSxDKT0+ZG4oZCh5LEMpKS5waXBlKG10KChJLFopPT5nKHksSSxDLFopKSksaCkpOigibnVtYmVyIj09dHlwZW9mIGcmJihoPWcpLHY9PnYubGlmdChuZXcgWG4oZCxoKSkpfWNsYXNzIFhue2NvbnN0cnVjdG9yKGcsaD1OdW1iZXIu''@;'; put 'put ''UE9TSVRJVkVfSU5GSU5JVFkpe3RoaXMucHJvamVjdD1nLHRoaXMuY29uY3VycmVudD1ofWNhbGwoZyxoKXtyZXR1cm4gaC5zdWJzY3JpYmUobmV3IEZyKGcsdGhpcy5wcm9qZWN0LHRoaXMuY29uY3VycmVudCkpfX1jbGFzcyBGciBleHRlbmRzIE5ue2NvbnN0cnVjdG9yKGcsaCx2PU51bWJl''@;'; put 'put ''ci5QT1NJVElWRV9JTkZJTklUWSl7c3VwZXIoZyksdGhpcy5wcm9qZWN0PWgsdGhpcy5jb25jdXJyZW50PXYsdGhpcy5oYXNDb21wbGV0ZWQ9ITEsdGhpcy5idWZmZXI9W10sdGhpcy5hY3RpdmU9MCx0aGlzLmluZGV4PTB9X25leHQoZyl7dGhpcy5hY3RpdmU8dGhpcy5jb25jdXJyZW50P3Ro''@;'; put 'put ''aXMuX3RyeU5leHQoZyk6dGhpcy5idWZmZXIucHVzaChnKX1fdHJ5TmV4dChnKXtsZXQgaDtjb25zdCB2PXRoaXMuaW5kZXgrKzt0cnl7aD10aGlzLnByb2plY3QoZyx2KX1jYXRjaCh5KXtyZXR1cm4gdm9pZCB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHkpfXRoaXMuYWN0aXZlKyssdGhpcy5f''@;'; put 'put ''aW5uZXJTdWIoaCl9X2lubmVyU3ViKGcpe2NvbnN0IGg9bmV3IHluKHRoaXMpLHY9dGhpcy5kZXN0aW5hdGlvbjt2LmFkZChoKTtjb25zdCB5PWVyKGcsaCk7eSE9PWgmJnYuYWRkKHkpfV9jb21wbGV0ZSgpe3RoaXMuaGFzQ29tcGxldGVkPSEwLDA9PT10aGlzLmFjdGl2ZSYmMD09PXRoaXMu''@;'; put 'put ''YnVmZmVyLmxlbmd0aCYmdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpLHRoaXMudW5zdWJzY3JpYmUoKX1ub3RpZnlOZXh0KGcpe3RoaXMuZGVzdGluYXRpb24ubmV4dChnKX1ub3RpZnlDb21wbGV0ZSgpe2NvbnN0IGc9dGhpcy5idWZmZXI7dGhpcy5hY3RpdmUtLSxnLmxlbmd0aD4wP3Ro''@;'; put 'put ''aXMuX25leHQoZy5zaGlmdCgpKTowPT09dGhpcy5hY3RpdmUmJnRoaXMuaGFzQ29tcGxldGVkJiZ0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9fWZ1bmN0aW9uIHF0KGQ9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKXtyZXR1cm4gc3IoVixkKX1mdW5jdGlvbiBwcihkLGcpe3JldHVybiBn''@;'; put 'put ''P1VlKGQsZyk6bmV3IEYoaHQoZCkpfWZ1bmN0aW9uIG5yKC4uLmQpe2xldCBnPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxoPW51bGwsdj1kW2QubGVuZ3RoLTFdO3JldHVybiB3dCh2KT8oaD1kLnBvcCgpLGQubGVuZ3RoPjEmJiJudW1iZXIiPT10eXBlb2YgZFtkLmxlbmd0aC0xXSYmKGc9''@;'; put 'put ''ZC5wb3AoKSkpOiJudW1iZXIiPT10eXBlb2YgdiYmKGc9ZC5wb3AoKSksbnVsbD09PWgmJjE9PT1kLmxlbmd0aCYmZFswXWluc3RhbmNlb2YgRj9kWzBdOnF0KGcpKHByKGQsaCkpfWZ1bmN0aW9uIEFuKCl7cmV0dXJuIGZ1bmN0aW9uKGcpe3JldHVybiBnLmxpZnQobmV3IHFuKGcpKX19Y2xh''@;'; put 'put ''c3MgcW57Y29uc3RydWN0b3IoZyl7dGhpcy5jb25uZWN0YWJsZT1nfWNhbGwoZyxoKXtjb25zdHtjb25uZWN0YWJsZTp2fT10aGlzO3YuX3JlZkNvdW50Kys7Y29uc3QgeT1uZXcgV3QoZyx2KSxDPWguc3Vic2NyaWJlKHkpO3JldHVybiB5LmNsb3NlZHx8KHkuY29ubmVjdGlvbj12LmNvbm5l''@;'; put 'put ''Y3QoKSksQ319Y2xhc3MgV3QgZXh0ZW5kcyB6e2NvbnN0cnVjdG9yKGcsaCl7c3VwZXIoZyksdGhpcy5jb25uZWN0YWJsZT1ofV91bnN1YnNjcmliZSgpe2NvbnN0e2Nvbm5lY3RhYmxlOmd9PXRoaXM7aWYoIWcpcmV0dXJuIHZvaWQodGhpcy5jb25uZWN0aW9uPW51bGwpO3RoaXMuY29ubmVj''@;'; put 'put ''dGFibGU9bnVsbDtjb25zdCBoPWcuX3JlZkNvdW50O2lmKGg8PTApcmV0dXJuIHZvaWQodGhpcy5jb25uZWN0aW9uPW51bGwpO2lmKGcuX3JlZkNvdW50PWgtMSxoPjEpcmV0dXJuIHZvaWQodGhpcy5jb25uZWN0aW9uPW51bGwpO2NvbnN0e2Nvbm5lY3Rpb246dn09dGhpcyx5PWcuX2Nvbm5l''@;'; put 'put ''Y3Rpb247dGhpcy5jb25uZWN0aW9uPW51bGwseSYmKCF2fHx5PT09dikmJnkudW5zdWJzY3JpYmUoKX19Y2xhc3MgcG4gZXh0ZW5kcyBGe2NvbnN0cnVjdG9yKGcsaCl7c3VwZXIoKSx0aGlzLnNvdXJjZT1nLHRoaXMuc3ViamVjdEZhY3Rvcnk9aCx0aGlzLl9yZWZDb3VudD0wLHRoaXMuX2lz''@;'; put 'put ''Q29tcGxldGU9ITF9X3N1YnNjcmliZShnKXtyZXR1cm4gdGhpcy5nZXRTdWJqZWN0KCkuc3Vic2NyaWJlKGcpfWdldFN1YmplY3QoKXtjb25zdCBnPXRoaXMuX3N1YmplY3Q7cmV0dXJuKCFnfHxnLmlzU3RvcHBlZCkmJih0aGlzLl9zdWJqZWN0PXRoaXMuc3ViamVjdEZhY3RvcnkoKSksdGhp''@;'; put 'put ''cy5fc3ViamVjdH1jb25uZWN0KCl7bGV0IGc9dGhpcy5fY29ubmVjdGlvbjtyZXR1cm4gZ3x8KHRoaXMuX2lzQ29tcGxldGU9ITEsZz10aGlzLl9jb25uZWN0aW9uPW5ldyBUZSxnLmFkZCh0aGlzLnNvdXJjZS5zdWJzY3JpYmUobmV3IE50KHRoaXMuZ2V0U3ViamVjdCgpLHRoaXMpKSksZy5j''@;'; put 'put ''bG9zZWQmJih0aGlzLl9jb25uZWN0aW9uPW51bGwsZz1UZS5FTVBUWSkpLGd9cmVmQ291bnQoKXtyZXR1cm4gQW4oKSh0aGlzKX19Y29uc3QgS249KCgpPT57Y29uc3QgZD1wbi5wcm90b3R5cGU7cmV0dXJue29wZXJhdG9yOnt2YWx1ZTpudWxsfSxfcmVmQ291bnQ6e3ZhbHVlOjAsd3JpdGFi''@;'; put 'put ''bGU6ITB9LF9zdWJqZWN0Ont2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSxfY29ubmVjdGlvbjp7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0sX3N1YnNjcmliZTp7dmFsdWU6ZC5fc3Vic2NyaWJlfSxfaXNDb21wbGV0ZTp7dmFsdWU6ZC5faXNDb21wbGV0ZSx3cml0YWJsZTohMH0sZ2V0U3ViamVj''@;'; put 'put ''dDp7dmFsdWU6ZC5nZXRTdWJqZWN0fSxjb25uZWN0Ont2YWx1ZTpkLmNvbm5lY3R9LHJlZkNvdW50Ont2YWx1ZTpkLnJlZkNvdW50fX19KSgpO2NsYXNzIE50IGV4dGVuZHMgUWV7Y29uc3RydWN0b3IoZyxoKXtzdXBlcihnKSx0aGlzLmNvbm5lY3RhYmxlPWh9X2Vycm9yKGcpe3RoaXMuX3Vu''@;'; put 'put ''c3Vic2NyaWJlKCksc3VwZXIuX2Vycm9yKGcpfV9jb21wbGV0ZSgpe3RoaXMuY29ubmVjdGFibGUuX2lzQ29tcGxldGU9ITAsdGhpcy5fdW5zdWJzY3JpYmUoKSxzdXBlci5fY29tcGxldGUoKX1fdW5zdWJzY3JpYmUoKXtjb25zdCBnPXRoaXMuY29ubmVjdGFibGU7aWYoZyl7dGhpcy5jb25u''@;'; put 'put ''ZWN0YWJsZT1udWxsO2NvbnN0IGg9Zy5fY29ubmVjdGlvbjtnLl9yZWZDb3VudD0wLGcuX3N1YmplY3Q9bnVsbCxnLl9jb25uZWN0aW9uPW51bGwsaCYmaC51bnN1YnNjcmliZSgpfX19Y2xhc3MgdG57Y29uc3RydWN0b3IoZyxoKXt0aGlzLnN1YmplY3RGYWN0b3J5PWcsdGhpcy5zZWxlY3Rv''@;'; put 'put ''cj1ofWNhbGwoZyxoKXtjb25zdHtzZWxlY3Rvcjp2fT10aGlzLHk9dGhpcy5zdWJqZWN0RmFjdG9yeSgpLEM9dih5KS5zdWJzY3JpYmUoZyk7cmV0dXJuIEMuYWRkKGguc3Vic2NyaWJlKHkpKSxDfX1mdW5jdGlvbiB6bigpe3JldHVybiBuZXcgJGV9ZnVuY3Rpb24gQm4oZCl7Zm9yKGxldCBn''@;'; put 'put ''IGluIGQpaWYoZFtnXT09PUJuKXJldHVybiBnO3Rocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCByZW5hbWVkIHByb3BlcnR5IG9uIHRhcmdldCBvYmplY3QuIil9ZnVuY3Rpb24ga3IoZCxnKXtmb3IoY29uc3QgaCBpbiBnKWcuaGFzT3duUHJvcGVydHkoaCkmJiFkLmhhc093blByb3BlcnR5''@;'; put 'put ''KGgpJiYoZFtoXT1nW2hdKX1mdW5jdGlvbiBtbihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIGQ7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4iWyIrZC5tYXAobW4pLmpvaW4oIiwgIikrIl0iO2lmKG51bGw9PWQpcmV0dXJuIiIrZDtpZihkLm92ZXJyaWRkZW5OYW1lKXJldHVy''@;'; put 'put ''bmAke2Qub3ZlcnJpZGRlbk5hbWV9YDtpZihkLm5hbWUpcmV0dXJuYCR7ZC5uYW1lfWA7Y29uc3QgZz1kLnRvU3RyaW5nKCk7aWYobnVsbD09ZylyZXR1cm4iIitnO2NvbnN0IGg9Zy5pbmRleE9mKCJcbiIpO3JldHVybi0xPT09aD9nOmcuc3Vic3RyaW5nKDAsaCl9ZnVuY3Rpb24gdW4oZCxn''@;'; put 'put ''KXtyZXR1cm4gbnVsbD09ZHx8IiI9PT1kP251bGw9PT1nPyIiOmc6bnVsbD09Z3x8IiI9PT1nP2Q6ZCsiICIrZ31jb25zdCBjbj1Cbih7X19mb3J3YXJkX3JlZl9fOkJufSk7ZnVuY3Rpb24gX24oZCl7cmV0dXJuIGQuX19mb3J3YXJkX3JlZl9fPV9uLGQudG9TdHJpbmc9ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gbW4odGhpcygpKX0sZH1mdW5jdGlvbiBHdChkKXtyZXR1cm4ga24oZCk/ZCgpOmR9ZnVuY3Rpb24ga24oZCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGQmJmQuaGFzT3duUHJvcGVydHkoY24pJiZkLl9fZm9yd2FyZF9yZWZfXz09PV9ufWNsYXNzIGVuIGV4dGVuZHMgRXJyb3J7''@;'; put 'put ''Y29uc3RydWN0b3IoZyxoKXtzdXBlcihmdW5jdGlvbiBJbihkLGcpe3JldHVybmBORzAke01hdGguYWJzKGQpfSR7Zz8iOiAiK2cudHJpbSgpOiIifWB9KGcsaCkpLHRoaXMuY29kZT1nfX1mdW5jdGlvbiBKbihkKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGQ/ZDpudWxsPT1kPyIiOlN0cmlu''@;'; put 'put ''ZyhkKX1mdW5jdGlvbiBpaShkLGcpe3Rocm93IG5ldyBlbigtMjAxLCExKX1mdW5jdGlvbiBsbChkLGcpe251bGw9PWQmJmZ1bmN0aW9uIFFpKGQsZyxoLHYpe3Rocm93IG5ldyBFcnJvcihgQVNTRVJUSU9OIEVSUk9SOiAke2R9YCsobnVsbD09dj8iIjpgIFtFeHBlY3RlZD0+ICR7aH0gJHt2''@;'; put 'put ''fSAke2d9IDw9QWN0dWFsXWApKX0oZyxkLG51bGwsIiE9Iil9ZnVuY3Rpb24gQWkoZCl7cmV0dXJue3Rva2VuOmQudG9rZW4scHJvdmlkZWRJbjpkLnByb3ZpZGVkSW58fG51bGwsZmFjdG9yeTpkLmZhY3RvcnksdmFsdWU6dm9pZCAwfX1jb25zdCB2aT1BaTtmdW5jdGlvbiBiMChkKXtyZXR1''@;'; put 'put ''cm57cHJvdmlkZXJzOmQucHJvdmlkZXJzfHxbXSxpbXBvcnRzOmQuaW1wb3J0c3x8W119fWZ1bmN0aW9uIHNhKGQpe3JldHVybiBybChkLFUwKXx8cmwoZCxYMCl9ZnVuY3Rpb24gcmwoZCxnKXtyZXR1cm4gZC5oYXNPd25Qcm9wZXJ0eShnKT9kW2ddOm51bGx9ZnVuY3Rpb24gSGMoZCl7cmV0''@;'; put 'put ''dXJuIGQmJihkLmhhc093blByb3BlcnR5KEJzKXx8ZC5oYXNPd25Qcm9wZXJ0eSh1YSkpP2RbQnNdOm51bGx9Y29uc3QgVTA9Qm4oe1x1MDI3NXByb3Y6Qm59KSxCcz1Cbih7XHUwMjc1aW5qOkJufSksWDA9Qm4oe25nSW5qZWN0YWJsZURlZjpCbn0pLHVhPUJuKHtuZ0luamVjdG9yRGVmOkJu''@;'; put 'put ''fSk7dmFyIGowPSgoKT0+KChqMD1qMHx8e30pW2owLkRlZmF1bHQ9MF09IkRlZmF1bHQiLGowW2owLkhvc3Q9MV09Ikhvc3QiLGowW2owLlNlbGY9Ml09IlNlbGYiLGowW2owLlNraXBTZWxmPTRdPSJTa2lwU2VsZiIsajBbajAuT3B0aW9uYWw9OF09Ik9wdGlvbmFsIixqMCkpKCk7bGV0IEJs''@;'; put 'put ''O2Z1bmN0aW9uIF8wKGQpe2NvbnN0IGc9Qmw7cmV0dXJuIEJsPWQsZ31mdW5jdGlvbiBnYyhkLGcsaCl7Y29uc3Qgdj1zYShkKTtyZXR1cm4gdiYmInJvb3QiPT12LnByb3ZpZGVkSW4/dm9pZCAwPT09di52YWx1ZT92LnZhbHVlPXYuZmFjdG9yeSgpOnYudmFsdWU6aCZqMC5PcHRpb25hbD9u''@;'; put 'put ''dWxsOnZvaWQgMCE9PWc/Zzp2b2lkIGlpKG1uKGQpKX1mdW5jdGlvbiBCMShkKXtyZXR1cm57dG9TdHJpbmc6ZH0udG9TdHJpbmcoKX12YXIgYXU9KCgpPT4oKGF1PWF1fHx7fSlbYXUuT25QdXNoPTBdPSJPblB1c2giLGF1W2F1LkRlZmF1bHQ9MV09IkRlZmF1bHQiLGF1KSkoKSx4Mj0oKCk9''@;'; put 'put ''PihmdW5jdGlvbihkKXtkW2QuRW11bGF0ZWQ9MF09IkVtdWxhdGVkIixkW2QuTm9uZT0yXT0iTm9uZSIsZFtkLlNoYWRvd0RvbT0zXT0iU2hhZG93RG9tIn0oeDJ8fCh4Mj17fSkpLHgyKSkoKTtjb25zdCBQbD0oKCk9PiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhp''@;'; put 'put ''c3x8InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWwmJmdsb2JhbHx8InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvd3x8InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiYidW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xv''@;'; put 'put ''YmFsU2NvcGUmJnNlbGYpKCksczE9e30sWjA9W10sZmk9Qm4oe1x1MDI3NWNtcDpCbn0pLFIwPUJuKHtcdTAyNzVkaXI6Qm59KSxtbz1Cbih7XHUwMjc1cGlwZTpCbn0pLHJzPUJuKHtcdTAyNzVtb2Q6Qm59KSxkcz1Cbih7XHUwMjc1ZmFjOkJufSksbjI9Qm4oe19fTkdfRUxFTUVOVF9JRF9f''@;'; put 'put ''OkJufSk7bGV0IFQyPTA7ZnVuY3Rpb24gVGkoZCl7cmV0dXJuIEIxKCgpPT57Y29uc3QgaD0hMD09PWQuc3RhbmRhbG9uZSx2PXt9LHk9e3R5cGU6ZC50eXBlLHByb3ZpZGVyc1Jlc29sdmVyOm51bGwsZGVjbHM6ZC5kZWNscyx2YXJzOmQudmFycyxmYWN0b3J5Om51bGwsdGVtcGxhdGU6ZC50''@;'; put 'put ''ZW1wbGF0ZXx8bnVsbCxjb25zdHM6ZC5jb25zdHN8fG51bGwsbmdDb250ZW50U2VsZWN0b3JzOmQubmdDb250ZW50U2VsZWN0b3JzLGhvc3RCaW5kaW5nczpkLmhvc3RCaW5kaW5nc3x8bnVsbCxob3N0VmFyczpkLmhvc3RWYXJzfHwwLGhvc3RBdHRyczpkLmhvc3RBdHRyc3x8bnVsbCxjb250''@;'; put 'put ''ZW50UXVlcmllczpkLmNvbnRlbnRRdWVyaWVzfHxudWxsLGRlY2xhcmVkSW5wdXRzOnYsaW5wdXRzOm51bGwsb3V0cHV0czpudWxsLGV4cG9ydEFzOmQuZXhwb3J0QXN8fG51bGwsb25QdXNoOmQuY2hhbmdlRGV0ZWN0aW9uPT09YXUuT25QdXNoLGRpcmVjdGl2ZURlZnM6bnVsbCxwaXBlRGVm''@;'; put 'put ''czpudWxsLHN0YW5kYWxvbmU6aCxkZXBlbmRlbmNpZXM6aCYmZC5kZXBlbmRlbmNpZXN8fG51bGwsZ2V0U3RhbmRhbG9uZUluamVjdG9yOm51bGwsc2VsZWN0b3JzOmQuc2VsZWN0b3JzfHxaMCx2aWV3UXVlcnk6ZC52aWV3UXVlcnl8fG51bGwsZmVhdHVyZXM6ZC5mZWF0dXJlc3x8bnVsbCxk''@;'; put 'put ''YXRhOmQuZGF0YXx8e30sZW5jYXBzdWxhdGlvbjpkLmVuY2Fwc3VsYXRpb258fHgyLkVtdWxhdGVkLGlkOiJjIitUMisrLHN0eWxlczpkLnN0eWxlc3x8WjAsXzpudWxsLHNldElucHV0Om51bGwsc2NoZW1hczpkLnNjaGVtYXN8fG51bGwsdFZpZXc6bnVsbH0sQz1kLmRlcGVuZGVuY2llcyxJ''@;'; put 'put ''PWQuZmVhdHVyZXM7cmV0dXJuIHkuaW5wdXRzPXIyKGQuaW5wdXRzLHYpLHkub3V0cHV0cz1yMihkLm91dHB1dHMpLEkmJkkuZm9yRWFjaChaPT5aKHkpKSx5LmRpcmVjdGl2ZURlZnM9Qz8oKT0+KCJmdW5jdGlvbiI9PXR5cGVvZiBDP0MoKTpDKS5tYXAoTmYpLmZpbHRlcihZbCk6bnVsbCx5''@;'; put 'put ''LnBpcGVEZWZzPUM/KCk9PigiZnVuY3Rpb24iPT10eXBlb2YgQz9DKCk6QykubWFwKEtsKS5maWx0ZXIoWWwpOm51bGwseX0pfWZ1bmN0aW9uIE5mKGQpe3JldHVybiB2cyhkKXx8RjEoZCl9ZnVuY3Rpb24gWWwoZCl7cmV0dXJuIG51bGwhPT1kfWNvbnN0IE5jPXt9O2Z1bmN0aW9uIGNvKGQp''@;'; put 'put ''e3JldHVybiBCMSgoKT0+e2NvbnN0IGc9e3R5cGU6ZC50eXBlLGJvb3RzdHJhcDpkLmJvb3RzdHJhcHx8WjAsZGVjbGFyYXRpb25zOmQuZGVjbGFyYXRpb25zfHxaMCxpbXBvcnRzOmQuaW1wb3J0c3x8WjAsZXhwb3J0czpkLmV4cG9ydHN8fFowLHRyYW5zaXRpdmVDb21waWxlU2NvcGVzOm51''@;'; put 'put ''bGwsc2NoZW1hczpkLnNjaGVtYXN8fG51bGwsaWQ6ZC5pZHx8bnVsbH07cmV0dXJuIG51bGwhPWQuaWQmJihOY1tkLmlkXT1kLnR5cGUpLGd9KX1mdW5jdGlvbiByMihkLGcpe2lmKG51bGw9PWQpcmV0dXJuIHMxO2NvbnN0IGg9e307Zm9yKGNvbnN0IHYgaW4gZClpZihkLmhhc093blByb3Bl''@;'; put 'put ''cnR5KHYpKXtsZXQgeT1kW3ZdLEM9eTtBcnJheS5pc0FycmF5KHkpJiYoQz15WzFdLHk9eVswXSksaFt5XT12LGcmJihnW3ldPUMpfXJldHVybiBofWNvbnN0IFdpPVRpO2Z1bmN0aW9uIFVzKGQpe3JldHVybnt0eXBlOmQudHlwZSxuYW1lOmQubmFtZSxmYWN0b3J5Om51bGwscHVyZTohMSE9''@;'; put 'put ''PWQucHVyZSxzdGFuZGFsb25lOiEwPT09ZC5zdGFuZGFsb25lLG9uRGVzdHJveTpkLnR5cGUucHJvdG90eXBlLm5nT25EZXN0cm95fHxudWxsfX1mdW5jdGlvbiB2cyhkKXtyZXR1cm4gZFtmaV18fG51bGx9ZnVuY3Rpb24gRjEoZCl7cmV0dXJuIGRbUjBdfHxudWxsfWZ1bmN0aW9uIEtsKGQp''@;'; put 'put ''e3JldHVybiBkW21vXXx8bnVsbH1mdW5jdGlvbiBDcyhkLGcpe2NvbnN0IGg9ZFtyc118fG51bGw7aWYoIWgmJiEwPT09Zyl0aHJvdyBuZXcgRXJyb3IoYFR5cGUgJHttbihkKX0gZG9lcyBub3QgaGF2ZSAnXHUwMjc1bW9kJyBwcm9wZXJ0eS5gKTtyZXR1cm4gaH1mdW5jdGlvbiBUdShkKXty''@;'; put 'put ''ZXR1cm4gQXJyYXkuaXNBcnJheShkKSYmIm9iamVjdCI9PXR5cGVvZiBkWzFdfWZ1bmN0aW9uIHNmKGQpe3JldHVybiBBcnJheS5pc0FycmF5KGQpJiYhMD09PWRbMV19ZnVuY3Rpb24gS28oZCl7cmV0dXJuIDAhPSg4JmQuZmxhZ3MpfWZ1bmN0aW9uIGtzKGQpe3JldHVybiAyPT0oMiZkLmZs''@;'; put 'put ''YWdzKX1mdW5jdGlvbiB6ZyhkKXtyZXR1cm4gMT09KDEmZC5mbGFncyl9ZnVuY3Rpb24gVmYoZCl7cmV0dXJuIG51bGwhPT1kLnRlbXBsYXRlfWZ1bmN0aW9uIHF3KGQpe3JldHVybiAwIT0oMjU2JmRbMl0pfWZ1bmN0aW9uIGpmKGQsZyl7cmV0dXJuIGQuaGFzT3duUHJvcGVydHkoZHMpP2Rb''@;'; put 'put ''ZHNdOm51bGx9Y2xhc3MgdGJ7Y29uc3RydWN0b3IoZyxoLHYpe3RoaXMucHJldmlvdXNWYWx1ZT1nLHRoaXMuY3VycmVudFZhbHVlPWgsdGhpcy5maXJzdENoYW5nZT12fWlzRmlyc3RDaGFuZ2UoKXtyZXR1cm4gdGhpcy5maXJzdENoYW5nZX19ZnVuY3Rpb24gRDIoKXtyZXR1cm4gZjl9ZnVu''@;'; put 'put ''Y3Rpb24gZjkoZCl7cmV0dXJuIGQudHlwZS5wcm90b3R5cGUubmdPbkNoYW5nZXMmJihkLnNldElucHV0PVFnKSxuYn1mdW5jdGlvbiBuYigpe2NvbnN0IGQ9UXModGhpcyksZz1udWxsPT1kP3ZvaWQgMDpkLmN1cnJlbnQ7aWYoZyl7Y29uc3QgaD1kLnByZXZpb3VzO2lmKGg9PT1zMSlkLnBy''@;'; put 'put ''ZXZpb3VzPWc7ZWxzZSBmb3IobGV0IHYgaW4gZyloW3ZdPWdbdl07ZC5jdXJyZW50PW51bGwsdGhpcy5uZ09uQ2hhbmdlcyhnKX19ZnVuY3Rpb24gUWcoZCxnLGgsdil7Y29uc3QgeT1RcyhkKXx8ZnVuY3Rpb24gYmgoZCxnKXtyZXR1cm4gZFtXcF09Z30oZCx7cHJldmlvdXM6czEsY3VycmVu''@;'; put 'put ''dDpudWxsfSksQz15LmN1cnJlbnR8fCh5LmN1cnJlbnQ9e30pLEk9eS5wcmV2aW91cyxaPXRoaXMuZGVjbGFyZWRJbnB1dHNbaF0sdWU9SVtaXTtDW1pdPW5ldyB0Yih1ZSYmdWUuY3VycmVudFZhbHVlLGcsST09PXMxKSxkW3ZdPWd9RDIubmdJbmhlcml0PSEwO2NvbnN0IFdwPSJfX25nU2lt''@;'; put 'put ''cGxlQ2hhbmdlc19fIjtmdW5jdGlvbiBRcyhkKXtyZXR1cm4gZFtXcF18fG51bGx9ZnVuY3Rpb24gWDIoZCl7Zm9yKDtBcnJheS5pc0FycmF5KGQpOylkPWRbMF07cmV0dXJuIGR9ZnVuY3Rpb24gVXAoZCxnKXtyZXR1cm4gWDIoZ1tkXSl9ZnVuY3Rpb24gdmMoZCxnKXtyZXR1cm4gWDIoZ1tk''@;'; put 'put ''LmluZGV4XSl9ZnVuY3Rpb24gWGcoZCxnKXtyZXR1cm4gZC5kYXRhW2ddfWZ1bmN0aW9uIFFwKGQsZyl7cmV0dXJuIGRbZ119ZnVuY3Rpb24gUXUoZCxnKXtjb25zdCBoPWdbZF07cmV0dXJuIFR1KGgpP2g6aFswXX1mdW5jdGlvbiBLZyhkKXtyZXR1cm4gND09KDQmZFsyXSl9ZnVuY3Rpb24g''@;'; put 'put ''dXUoZCl7cmV0dXJuIDY0PT0oNjQmZFsyXSl9ZnVuY3Rpb24gTjEoZCxnKXtyZXR1cm4gbnVsbD09Zz9udWxsOmRbZ119ZnVuY3Rpb24gX2goZCl7ZFsxOF09MH1mdW5jdGlvbiB2ZChkLGcpe2RbNV0rPWc7bGV0IGg9ZCx2PWRbM107Zm9yKDtudWxsIT09diYmKDE9PT1nJiYxPT09aFs1XXx8''@;'; put 'put ''LTE9PT1nJiYwPT09aFs1XSk7KXZbNV0rPWcsaD12LHY9dlszXX1jb25zdCBDYT17bEZyYW1lOmhhKG51bGwpLGJpbmRpbmdzRW5hYmxlZDohMH07ZnVuY3Rpb24gUk0oKXtyZXR1cm4gQ2EuYmluZGluZ3NFbmFibGVkfWZ1bmN0aW9uIFB0KCl7cmV0dXJuIENhLmxGcmFtZS5sVmlld31mdW5j''@;'; put 'put ''dGlvbiBmZSgpe3JldHVybiBDYS5sRnJhbWUudFZpZXd9ZnVuY3Rpb24gaXQoZCl7cmV0dXJuIENhLmxGcmFtZS5jb250ZXh0TFZpZXc9ZCxkWzhdfWZ1bmN0aW9uIGEoZCl7cmV0dXJuIENhLmxGcmFtZS5jb250ZXh0TFZpZXc9bnVsbCxkfWZ1bmN0aW9uIFh0KCl7bGV0IGQ9aHIoKTtmb3Io''@;'; put 'put ''O251bGwhPT1kJiY2ND09PWQudHlwZTspZD1kLnBhcmVudDtyZXR1cm4gZH1mdW5jdGlvbiBocigpe3JldHVybiBDYS5sRnJhbWUuY3VycmVudFROb2RlfWZ1bmN0aW9uIGpuKGQsZyl7Y29uc3QgaD1DYS5sRnJhbWU7aC5jdXJyZW50VE5vZGU9ZCxoLmlzUGFyZW50PWd9ZnVuY3Rpb24gXygp''@;'; put 'put ''e3JldHVybiBDYS5sRnJhbWUuaXNQYXJlbnR9ZnVuY3Rpb24gQW8oKXtDYS5sRnJhbWUuaXNQYXJlbnQ9ITF9ZnVuY3Rpb24gbHMoKXtjb25zdCBkPUNhLmxGcmFtZTtsZXQgZz1kLmJpbmRpbmdSb290SW5kZXg7cmV0dXJuLTE9PT1nJiYoZz1kLmJpbmRpbmdSb290SW5kZXg9ZC50Vmlldy5i''@;'; put 'put ''aW5kaW5nU3RhcnRJbmRleCksZ31mdW5jdGlvbiBNbigpe3JldHVybiBDYS5sRnJhbWUuYmluZGluZ0luZGV4fWZ1bmN0aW9uIGkyKCl7cmV0dXJuIENhLmxGcmFtZS5iaW5kaW5nSW5kZXgrK31mdW5jdGlvbiBvMihkKXtjb25zdCBnPUNhLmxGcmFtZSxoPWcuYmluZGluZ0luZGV4O3JldHVy''@;'; put 'put ''biBnLmJpbmRpbmdJbmRleD1nLmJpbmRpbmdJbmRleCtkLGh9ZnVuY3Rpb24gQk0oZCxnKXtjb25zdCBoPUNhLmxGcmFtZTtoLmJpbmRpbmdJbmRleD1oLmJpbmRpbmdSb290SW5kZXg9ZCxnOShnKX1mdW5jdGlvbiBnOShkKXtDYS5sRnJhbWUuY3VycmVudERpcmVjdGl2ZUluZGV4PWR9ZnVu''@;'; put 'put ''Y3Rpb24gbTkoZCl7Y29uc3QgZz1DYS5sRnJhbWUuY3VycmVudERpcmVjdGl2ZUluZGV4O3JldHVybi0xPT09Zz9udWxsOmRbZ119ZnVuY3Rpb24gb2IoKXtyZXR1cm4gQ2EubEZyYW1lLmN1cnJlbnRRdWVyeUluZGV4fWZ1bmN0aW9uIERuKGQpe0NhLmxGcmFtZS5jdXJyZW50UXVlcnlJbmRl''@;'; put 'put ''eD1kfWZ1bmN0aW9uIGNmKGQpe2NvbnN0IGc9ZFsxXTtyZXR1cm4gMj09PWcudHlwZT9nLmRlY2xUTm9kZToxPT09Zy50eXBlP2RbNl06bnVsbH1mdW5jdGlvbiBlbyhkLGcsaCl7aWYoaCZqMC5Ta2lwU2VsZil7bGV0IHk9ZyxDPWQ7Zm9yKDshKHk9eS5wYXJlbnQsbnVsbCE9PXl8fGgmajAu''@;'; put 'put ''SG9zdHx8KHk9Y2YoQyksbnVsbD09PXl8fChDPUNbMTVdLDEwJnkudHlwZSkpKTspO2lmKG51bGw9PT15KXJldHVybiExO2c9eSxkPUN9Y29uc3Qgdj1DYS5sRnJhbWU9cWwoKTtyZXR1cm4gdi5jdXJyZW50VE5vZGU9Zyx2LmxWaWV3PWQsITB9ZnVuY3Rpb24gRDAoZCl7Y29uc3QgZz1xbCgp''@;'; put 'put ''LGg9ZFsxXTtDYS5sRnJhbWU9ZyxnLmN1cnJlbnRUTm9kZT1oLmZpcnN0Q2hpbGQsZy5sVmlldz1kLGcudFZpZXc9aCxnLmNvbnRleHRMVmlldz1kLGcuYmluZGluZ0luZGV4PWguYmluZGluZ1N0YXJ0SW5kZXgsZy5pbkkxOG49ITF9ZnVuY3Rpb24gcWwoKXtjb25zdCBkPUNhLmxGcmFtZSxn''@;'; put 'put ''PW51bGw9PT1kP251bGw6ZC5jaGlsZDtyZXR1cm4gbnVsbD09PWc/aGEoZCk6Z31mdW5jdGlvbiBoYShkKXtjb25zdCBnPXtjdXJyZW50VE5vZGU6bnVsbCxpc1BhcmVudDohMCxsVmlldzpudWxsLHRWaWV3Om51bGwsc2VsZWN0ZWRJbmRleDotMSxjb250ZXh0TFZpZXc6bnVsbCxlbGVtZW50''@;'; put 'put ''RGVwdGhDb3VudDowLGN1cnJlbnROYW1lc3BhY2U6bnVsbCxjdXJyZW50RGlyZWN0aXZlSW5kZXg6LTEsYmluZGluZ1Jvb3RJbmRleDotMSxiaW5kaW5nSW5kZXg6LTEsY3VycmVudFF1ZXJ5SW5kZXg6MCxwYXJlbnQ6ZCxjaGlsZDpudWxsLGluSTE4bjohMX07cmV0dXJuIG51bGwhPT1kJiYo''@;'; put 'put ''ZC5jaGlsZD1nKSxnfWZ1bmN0aW9uIERhKCl7Y29uc3QgZD1DYS5sRnJhbWU7cmV0dXJuIENhLmxGcmFtZT1kLnBhcmVudCxkLmN1cnJlbnRUTm9kZT1udWxsLGQubFZpZXc9bnVsbCxkfWNvbnN0IFQ4PURhO2Z1bmN0aW9uIEpwKCl7Y29uc3QgZD1EYSgpO2QuaXNQYXJlbnQ9ITAsZC50Vmll''@;'; put 'put ''dz1udWxsLGQuc2VsZWN0ZWRJbmRleD0tMSxkLmNvbnRleHRMVmlldz1udWxsLGQuZWxlbWVudERlcHRoQ291bnQ9MCxkLmN1cnJlbnREaXJlY3RpdmVJbmRleD0tMSxkLmN1cnJlbnROYW1lc3BhY2U9bnVsbCxkLmJpbmRpbmdSb290SW5kZXg9LTEsZC5iaW5kaW5nSW5kZXg9LTEsZC5jdXJy''@;'; put 'put ''ZW50UXVlcnlJbmRleD0wfWZ1bmN0aW9uIFVsKCl7cmV0dXJuIENhLmxGcmFtZS5zZWxlY3RlZEluZGV4fWZ1bmN0aW9uIHpmKGQpe0NhLmxGcmFtZS5zZWxlY3RlZEluZGV4PWR9ZnVuY3Rpb24gRjIoKXtjb25zdCBkPUNhLmxGcmFtZTtyZXR1cm4gWGcoZC50VmlldyxkLnNlbGVjdGVkSW5k''@;'; put 'put ''ZXgpfWZ1bmN0aW9uIGVtKGQsZyl7Zm9yKGxldCBoPWcuZGlyZWN0aXZlU3RhcnQsdj1nLmRpcmVjdGl2ZUVuZDtoPHY7aCsrKXtjb25zdCBDPWQuZGF0YVtoXS50eXBlLnByb3RvdHlwZSx7bmdBZnRlckNvbnRlbnRJbml0OkksbmdBZnRlckNvbnRlbnRDaGVja2VkOlosbmdBZnRlclZpZXdJ''@;'; put 'put ''bml0OnVlLG5nQWZ0ZXJWaWV3Q2hlY2tlZDpfZSxuZ09uRGVzdHJveTpCZX09QztJJiYoZC5jb250ZW50SG9va3N8fChkLmNvbnRlbnRIb29rcz1bXSkpLnB1c2goLWgsSSksWiYmKChkLmNvbnRlbnRIb29rc3x8KGQuY29udGVudEhvb2tzPVtdKSkucHVzaChoLFopLChkLmNvbnRlbnRDaGVj''@;'; put 'put ''a0hvb2tzfHwoZC5jb250ZW50Q2hlY2tIb29rcz1bXSkpLnB1c2goaCxaKSksdWUmJihkLnZpZXdIb29rc3x8KGQudmlld0hvb2tzPVtdKSkucHVzaCgtaCx1ZSksX2UmJigoZC52aWV3SG9va3N8fChkLnZpZXdIb29rcz1bXSkpLnB1c2goaCxfZSksKGQudmlld0NoZWNrSG9va3N8fChkLnZp''@;'; put 'put ''ZXdDaGVja0hvb2tzPVtdKSkucHVzaChoLF9lKSksbnVsbCE9QmUmJihkLmRlc3Ryb3lIb29rc3x8KGQuZGVzdHJveUhvb2tzPVtdKSkucHVzaChoLEJlKX19ZnVuY3Rpb24geWQoZCxnLGgpe0k4KGQsZywzLGgpfWZ1bmN0aW9uIEtwKGQsZyxoLHYpeygzJmRbMl0pPT09aCYmSTgoZCxnLGgs''@;'; put 'put ''dil9ZnVuY3Rpb24gZmYoZCxnKXtsZXQgaD1kWzJdOygzJmgpPT09ZyYmKGgmPTIwNDcsaCs9MSxkWzJdPWgpfWZ1bmN0aW9uIEk4KGQsZyxoLHYpe2NvbnN0IEM9bnVsbCE9dj92Oi0xLEk9Zy5sZW5ndGgtMTtsZXQgWj0wO2ZvcihsZXQgdWU9dm9pZCAwIT09dj82NTUzNSZkWzE4XTowO3Vl''@;'; put 'put ''PEk7dWUrKylpZigibnVtYmVyIj09dHlwZW9mIGdbdWUrMV0pe2lmKFo9Z1t1ZV0sbnVsbCE9diYmWj49dilicmVha31lbHNlIGdbdWVdPDAmJihkWzE4XSs9NjU1MzYpLChaPEN8fC0xPT1DKSYmKEhNKGQsaCxnLHVlKSxkWzE4XT0oNDI5NDkwMTc2MCZkWzE4XSkrdWUrMiksdWUrK31mdW5j''@;'; put 'put ''dGlvbiBITShkLGcsaCx2KXtjb25zdCB5PWhbdl08MCxDPWhbdisxXSxaPWRbeT8taFt2XTpoW3ZdXTtpZih5KXtpZihkWzJdPj4xMTxkWzE4XT4+MTYmJigzJmRbMl0pPT09Zyl7ZFsyXSs9MjA0ODt0cnl7Qy5jYWxsKFopfWZpbmFsbHl7fX19ZWxzZSB0cnl7Qy5jYWxsKFopfWZpbmFsbHl7''@;'; put 'put ''fX1jbGFzcyB3ZHtjb25zdHJ1Y3RvcihnLGgsdil7dGhpcy5mYWN0b3J5PWcsdGhpcy5yZXNvbHZpbmc9ITEsdGhpcy5jYW5TZWVWaWV3UHJvdmlkZXJzPWgsdGhpcy5pbmplY3RJbXBsPXZ9fWZ1bmN0aW9uIFpjKGQsZyxoKXtsZXQgdj0wO2Zvcig7djxoLmxlbmd0aDspe2NvbnN0IHk9aFt2''@;'; put 'put ''XTtpZigibnVtYmVyIj09dHlwZW9mIHkpe2lmKDAhPT15KWJyZWFrO3YrKztjb25zdCBDPWhbdisrXSxJPWhbdisrXSxaPWhbdisrXTtkLnNldEF0dHJpYnV0ZShnLEksWixDKX1lbHNle2NvbnN0IEM9eSxJPWhbKyt2XTtaMShDKT9kLnNldFByb3BlcnR5KGcsQyxJKTpkLnNldEF0dHJpYnV0''@;'; put 'put ''ZShnLEMsSSksdisrfX1yZXR1cm4gdn1mdW5jdGlvbiBzcyhkKXtyZXR1cm4gMz09PWR8fDQ9PT1kfHw2PT09ZH1mdW5jdGlvbiBaMShkKXtyZXR1cm4gNjQ9PT1kLmNoYXJDb2RlQXQoMCl9ZnVuY3Rpb24gemMoZCxnKXtpZihudWxsIT09ZyYmMCE9PWcubGVuZ3RoKWlmKG51bGw9PT1kfHww''@;'; put 'put ''PT09ZC5sZW5ndGgpZD1nLnNsaWNlKCk7ZWxzZXtsZXQgaD0tMTtmb3IobGV0IHY9MDt2PGcubGVuZ3RoO3YrKyl7Y29uc3QgeT1nW3ZdOyJudW1iZXIiPT10eXBlb2YgeT9oPXk6MD09PWh8fGxiKGQsaCx5LG51bGwsLTE9PT1ofHwyPT09aD9nWysrdl06bnVsbCl9fXJldHVybiBkfWZ1bmN0''@;'; put 'put ''aW9uIGxiKGQsZyxoLHYseSl7bGV0IEM9MCxJPWQubGVuZ3RoO2lmKC0xPT09ZylJPS0xO2Vsc2UgZm9yKDtDPGQubGVuZ3RoOyl7Y29uc3QgWj1kW0MrK107aWYoIm51bWJlciI9PXR5cGVvZiBaKXtpZihaPT09Zyl7ST0tMTticmVha31pZihaPmcpe0k9Qy0xO2JyZWFrfX19Zm9yKDtDPGQu''@;'; put 'put ''bGVuZ3RoOyl7Y29uc3QgWj1kW0NdO2lmKCJudW1iZXIiPT10eXBlb2YgWilicmVhaztpZihaPT09aCl7aWYobnVsbD09PXYpcmV0dXJuIHZvaWQobnVsbCE9PXkmJihkW0MrMV09eSkpO2lmKHY9PT1kW0MrMV0pcmV0dXJuIHZvaWQoZFtDKzJdPXkpfUMrKyxudWxsIT09diYmQysrLG51bGwh''@;'; put 'put ''PT15JiZDKyt9LTEhPT1JJiYoZC5zcGxpY2UoSSwwLGcpLEM9SSsxKSxkLnNwbGljZShDKyssMCxoKSxudWxsIT09diYmZC5zcGxpY2UoQysrLDAsdiksbnVsbCE9PXkmJmQuc3BsaWNlKEMrKywwLHkpfWZ1bmN0aW9uIEdjKGQpe3JldHVybi0xIT09ZH1mdW5jdGlvbiBjdShkKXtyZXR1cm4g''@;'; put 'put ''MzI3NjcmZH1mdW5jdGlvbiBkZihkLGcpe2xldCBoPWZ1bmN0aW9uIHg0KGQpe3JldHVybiBkPj4xNn0oZCksdj1nO2Zvcig7aD4wOyl2PXZbMTVdLGgtLTtyZXR1cm4gdn1sZXQgUHI9ITA7ZnVuY3Rpb24gTDgoZCl7Y29uc3QgZz1QcjtyZXR1cm4gUHI9ZCxnfWxldCBxcD0wO2NvbnN0IHBm''@;'; put 'put ''PXt9O2Z1bmN0aW9uIGU2KGQsZyl7Y29uc3QgaD1SOChkLGcpO2lmKC0xIT09aClyZXR1cm4gaDtjb25zdCB2PWdbMV07di5maXJzdENyZWF0ZVBhc3MmJihkLmluamVjdG9ySW5kZXg9Zy5sZW5ndGgsdDYodi5kYXRhLGQpLHQ2KGcsbnVsbCksdDYodi5ibHVlcHJpbnQsbnVsbCkpO2NvbnN0''@;'; put 'put ''IHk9QWMoZCxnKSxDPWQuaW5qZWN0b3JJbmRleDtpZihHYyh5KSl7Y29uc3QgST1jdSh5KSxaPWRmKHksZyksdWU9WlsxXS5kYXRhO2ZvcihsZXQgX2U9MDtfZTw4O19lKyspZ1tDK19lXT1aW0krX2VdfHVlW0krX2VdfXJldHVybiBnW0MrOF09eSxDfWZ1bmN0aW9uIHQ2KGQsZyl7ZC5wdXNo''@;'; put 'put ''KDAsMCwwLDAsMCwwLDAsMCxnKX1mdW5jdGlvbiBSOChkLGcpe3JldHVybi0xPT09ZC5pbmplY3RvckluZGV4fHxkLnBhcmVudCYmZC5wYXJlbnQuaW5qZWN0b3JJbmRleD09PWQuaW5qZWN0b3JJbmRleHx8bnVsbD09PWdbZC5pbmplY3RvckluZGV4KzhdPy0xOmQuaW5qZWN0b3JJbmRleH1m''@;'; put 'put ''dW5jdGlvbiBBYyhkLGcpe2lmKGQucGFyZW50JiYtMSE9PWQucGFyZW50LmluamVjdG9ySW5kZXgpcmV0dXJuIGQucGFyZW50LmluamVjdG9ySW5kZXg7bGV0IGg9MCx2PW51bGwseT1nO2Zvcig7bnVsbCE9PXk7KXtpZih2PUR1KHkpLG51bGw9PT12KXJldHVybi0xO2lmKGgrKyx5PXlbMTVd''@;'; put 'put ''LC0xIT09di5pbmplY3RvckluZGV4KXJldHVybiB2LmluamVjdG9ySW5kZXh8aDw8MTZ9cmV0dXJuLTF9ZnVuY3Rpb24gR2YoZCxnLGgpeyFmdW5jdGlvbiBraChkLGcsaCl7bGV0IHY7InN0cmluZyI9PXR5cGVvZiBoP3Y9aC5jaGFyQ29kZUF0KDApfHwwOmguaGFzT3duUHJvcGVydHkobjIp''@;'; put 'put ''JiYodj1oW24yXSksbnVsbD09diYmKHY9aFtuMl09cXArKyk7Y29uc3QgeT0yNTUmdjtnLmRhdGFbZCsoeT4+NSldfD0xPDx5fShkLGcsaCl9ZnVuY3Rpb24gYmQoZCxnLGgpe2lmKGgmajAuT3B0aW9uYWwpcmV0dXJuIGQ7aWkoKX1mdW5jdGlvbiB2OShkLGcsaCx2KXtpZihoJmowLk9wdGlv''@;'; put 'put ''bmFsJiZ2b2lkIDA9PT12JiYodj1udWxsKSwwPT0oaCYoajAuU2VsZnxqMC5Ib3N0KSkpe2NvbnN0IHk9ZFs5XSxDPV8wKHZvaWQgMCk7dHJ5e3JldHVybiB5P3kuZ2V0KGcsdixoJmowLk9wdGlvbmFsKTpnYyhnLHYsaCZqMC5PcHRpb25hbCl9ZmluYWxseXtfMChDKX19cmV0dXJuIGJkKHYs''@;'; put 'put ''MCxoKX1mdW5jdGlvbiB0bShkLGcsaCx2PWowLkRlZmF1bHQseSl7aWYobnVsbCE9PWQpe2lmKDEwMjQmZ1syXSl7Y29uc3QgST1mdW5jdGlvbiBYdShkLGcsaCx2LHkpe2xldCBDPWQsST1nO2Zvcig7bnVsbCE9PUMmJm51bGwhPT1JJiYxMDI0JklbMl0mJiEoMjU2JklbMl0pOyl7Y29uc3Qg''@;'; put 'put ''Wj1COChDLEksaCx2fGowLlNlbGYscGYpO2lmKFohPT1wZilyZXR1cm4gWjtsZXQgdWU9Qy5wYXJlbnQ7aWYoIXVlKXtjb25zdCBfZT1JWzIxXTtpZihfZSl7Y29uc3QgQmU9X2UuZ2V0KGgscGYsdik7aWYoQmUhPT1wZilyZXR1cm4gQmV9dWU9RHUoSSksST1JWzE1XX1DPXVlfXJldHVybiB5''@;'; put 'put ''fShkLGcsaCx2LHBmKTtpZihJIT09cGYpcmV0dXJuIEl9Y29uc3QgQz1COChkLGcsaCx2LHBmKTtpZihDIT09cGYpcmV0dXJuIEN9cmV0dXJuIHY5KGcsaCx2LHkpfWZ1bmN0aW9uIEI4KGQsZyxoLHYseSl7Y29uc3QgQz1mdW5jdGlvbiByNihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0''@;'; put 'put ''dXJuIGQuY2hhckNvZGVBdCgwKXx8MDtjb25zdCBnPWQuaGFzT3duUHJvcGVydHkobjIpP2RbbjJdOnZvaWQgMDtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGc/Zz49MD8yNTUmZzpWTTpnfShoKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgQyl7aWYoIWVvKGcsZCx2KSlyZXR1cm4gdiZqMC5Ib3N0''@;'; put 'put ''P2JkKHksMCx2KTp2OShnLGgsdix5KTt0cnl7Y29uc3QgST1DKHYpO2lmKG51bGwhPUl8fHYmajAuT3B0aW9uYWwpcmV0dXJuIEk7aWkoKX1maW5hbGx5e1Q4KCl9fWVsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBDKXtsZXQgST1udWxsLFo9UjgoZCxnKSx1ZT0tMSxfZT12JmowLkhvc3Q/Z1sx''@;'; put 'put ''Nl1bNl06bnVsbDtmb3IoKC0xPT09Wnx8diZqMC5Ta2lwU2VsZikmJih1ZT0tMT09PVo/QWMoZCxnKTpnW1orOF0sLTEhPT11ZSYmQTkodiwhMSk/KEk9Z1sxXSxaPWN1KHVlKSxnPWRmKHVlLGcpKTpaPS0xKTstMSE9PVo7KXtjb25zdCBCZT1nWzFdO2lmKHViKEMsWixCZS5kYXRhKSl7Y29u''@;'; put 'put ''c3QgTmU9bjYoWixnLGgsSSx2LF9lKTtpZihOZSE9PXBmKXJldHVybiBOZX11ZT1nW1orOF0sLTEhPT11ZSYmQTkodixnWzFdLmRhdGFbWis4XT09PV9lKSYmdWIoQyxaLGcpPyhJPUJlLFo9Y3UodWUpLGc9ZGYodWUsZykpOlo9LTF9fXJldHVybiB5fWZ1bmN0aW9uIG42KGQsZyxoLHYseSxD''@;'; put 'put ''KXtjb25zdCBJPWdbMV0sWj1JLmRhdGFbZCs4XSxCZT1KdShaLEksaCxudWxsPT12P2tzKFopJiZQcjp2IT1JJiYwIT0oMyZaLnR5cGUpLHkmajAuSG9zdCYmQz09PVopO3JldHVybiBudWxsIT09QmU/VDQoZyxJLEJlLFopOnBmfWZ1bmN0aW9uIEp1KGQsZyxoLHYseSl7Y29uc3QgQz1kLnBy''@;'; put 'put ''b3ZpZGVySW5kZXhlcyxJPWcuZGF0YSxaPTEwNDg1NzUmQyx1ZT1kLmRpcmVjdGl2ZVN0YXJ0LEJlPUM+PjIwLEtlPXk/WitCZTpkLmRpcmVjdGl2ZUVuZDtmb3IobGV0IHB0PXY/WjpaK0JlO3B0PEtlO3B0Kyspe2NvbnN0IE90PUlbcHRdO2lmKHB0PHVlJiZoPT09T3R8fHB0Pj11ZSYmT3Qu''@;'; put 'put ''dHlwZT09PWgpcmV0dXJuIHB0fWlmKHkpe2NvbnN0IHB0PUlbdWVdO2lmKHB0JiZWZihwdCkmJnB0LnR5cGU9PT1oKXJldHVybiB1ZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBUNChkLGcsaCx2KXtsZXQgeT1kW2hdO2NvbnN0IEM9Zy5kYXRhO2lmKGZ1bmN0aW9uIGEwKGQpe3JldHVybiBkIGlu''@;'; put 'put ''c3RhbmNlb2Ygd2R9KHkpKXtjb25zdCBJPXk7SS5yZXNvbHZpbmcmJmZ1bmN0aW9uIGdyKGQsZyl7Y29uc3QgaD1nP2AuIERlcGVuZGVuY3kgcGF0aDogJHtnLmpvaW4oIiA+ICIpfSA+ICR7ZH1gOiIiO3Rocm93IG5ldyBlbigtMjAwLGBDaXJjdWxhciBkZXBlbmRlbmN5IGluIERJIGRldGVj''@;'; put 'put ''dGVkIGZvciAke2R9JHtofWApfShmdW5jdGlvbiBvcihkKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZD9kLm5hbWV8fGQudG9TdHJpbmcoKToib2JqZWN0Ij09dHlwZW9mIGQmJm51bGwhPWQmJiJmdW5jdGlvbiI9PXR5cGVvZiBkLnR5cGU/ZC50eXBlLm5hbWV8fGQudHlwZS50b1N0cmlu''@;'; put 'put ''ZygpOkpuKGQpfShDW2hdKSk7Y29uc3QgWj1MOChJLmNhblNlZVZpZXdQcm92aWRlcnMpO0kucmVzb2x2aW5nPSEwO2NvbnN0IHVlPUkuaW5qZWN0SW1wbD9fMChJLmluamVjdEltcGwpOm51bGw7ZW8oZCx2LGowLkRlZmF1bHQpO3RyeXt5PWRbaF09SS5mYWN0b3J5KHZvaWQgMCxDLGQsdiks''@;'; put 'put ''Zy5maXJzdENyZWF0ZVBhc3MmJmg+PXYuZGlyZWN0aXZlU3RhcnQmJmZ1bmN0aW9uIHcyKGQsZyxoKXtjb25zdHtuZ09uQ2hhbmdlczp2LG5nT25Jbml0OnksbmdEb0NoZWNrOkN9PWcudHlwZS5wcm90b3R5cGU7aWYodil7Y29uc3QgST1mOShnKTsoaC5wcmVPcmRlckhvb2tzfHwoaC5wcmVP''@;'; put 'put ''cmRlckhvb2tzPVtdKSkucHVzaChkLEkpLChoLnByZU9yZGVyQ2hlY2tIb29rc3x8KGgucHJlT3JkZXJDaGVja0hvb2tzPVtdKSkucHVzaChkLEkpfXkmJihoLnByZU9yZGVySG9va3N8fChoLnByZU9yZGVySG9va3M9W10pKS5wdXNoKDAtZCx5KSxDJiYoKGgucHJlT3JkZXJIb29rc3x8KGgu''@;'; put 'put ''cHJlT3JkZXJIb29rcz1bXSkpLnB1c2goZCxDKSwoaC5wcmVPcmRlckNoZWNrSG9va3N8fChoLnByZU9yZGVyQ2hlY2tIb29rcz1bXSkpLnB1c2goZCxDKSl9KGgsQ1toXSxnKX1maW5hbGx5e251bGwhPT11ZSYmXzAodWUpLEw4KFopLEkucmVzb2x2aW5nPSExLFQ4KCl9fXJldHVybiB5fWZ1''@;'; put 'put ''bmN0aW9uIHViKGQsZyxoKXtyZXR1cm4hIShoW2crKGQ+PjUpXSYxPDxkKX1mdW5jdGlvbiBBOShkLGcpe3JldHVybiEoZCZqMC5TZWxmfHxkJmowLkhvc3QmJmcpfWNsYXNzIEk0e2NvbnN0cnVjdG9yKGcsaCl7dGhpcy5fdE5vZGU9Zyx0aGlzLl9sVmlldz1ofWdldChnLGgsdil7cmV0dXJu''@;'; put 'put ''IHRtKHRoaXMuX3ROb2RlLHRoaXMuX2xWaWV3LGcsdixoKX19ZnVuY3Rpb24gVk0oKXtyZXR1cm4gbmV3IEk0KFh0KCksUHQoKSl9ZnVuY3Rpb24gZmwoZCl7cmV0dXJuIEIxKCgpPT57Y29uc3QgZz1kLnByb3RvdHlwZS5jb25zdHJ1Y3RvcixoPWdbZHNdfHxubShnKSx2PU9iamVjdC5wcm90''@;'; put 'put ''b3R5cGU7bGV0IHk9T2JqZWN0LmdldFByb3RvdHlwZU9mKGQucHJvdG90eXBlKS5jb25zdHJ1Y3Rvcjtmb3IoO3kmJnkhPT12Oyl7Y29uc3QgQz15W2RzXXx8bm0oeSk7aWYoQyYmQyE9PWgpcmV0dXJuIEM7eT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoeSl9cmV0dXJuIEM9Pm5ldyBDfSl9ZnVu''@;'; put 'put ''Y3Rpb24gbm0oZCl7cmV0dXJuIGtuKGQpPygpPT57Y29uc3QgZz1ubShHdChkKSk7cmV0dXJuIGcmJmcoKX06amYoZCl9ZnVuY3Rpb24gRHUoZCl7Y29uc3QgZz1kWzFdLGg9Zy50eXBlO3JldHVybiAyPT09aD9nLmRlY2xUTm9kZToxPT09aD9kWzZdOm51bGx9ZnVuY3Rpb24gZzMoZCl7cmV0''@;'; put 'put ''dXJuIGZ1bmN0aW9uIHNiKGQsZyl7aWYoImNsYXNzIj09PWcpcmV0dXJuIGQuY2xhc3NlcztpZigic3R5bGUiPT09ZylyZXR1cm4gZC5zdHlsZXM7Y29uc3QgaD1kLmF0dHJzO2lmKGgpe2NvbnN0IHY9aC5sZW5ndGg7bGV0IHk9MDtmb3IoO3k8djspe2NvbnN0IEM9aFt5XTtpZihzcyhDKSli''@;'; put 'put ''cmVhaztpZigwPT09Qyl5Kz0yO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBDKWZvcih5Kys7eTx2JiYic3RyaW5nIj09dHlwZW9mIGhbeV07KXkrKztlbHNle2lmKEM9PT1nKXJldHVybiBoW3krMV07eSs9Mn19fXJldHVybiBudWxsfShYdCgpLGQpfWNvbnN0IG82PSJfX3BhcmFtZXRlcnNf''@;'; put 'put ''XyI7ZnVuY3Rpb24gV2YoZCxnLGgpe3JldHVybiBCMSgoKT0+e2NvbnN0IHY9ZnVuY3Rpb24gUDgoZCl7cmV0dXJuIGZ1bmN0aW9uKC4uLmgpe2lmKGQpe2NvbnN0IHY9ZCguLi5oKTtmb3IoY29uc3QgeSBpbiB2KXRoaXNbeV09dlt5XX19fShnKTtmdW5jdGlvbiB5KC4uLkMpe2lmKHRoaXMg''@;'; put 'put ''aW5zdGFuY2VvZiB5KXJldHVybiB2LmFwcGx5KHRoaXMsQyksdGhpcztjb25zdCBJPW5ldyB5KC4uLkMpO3JldHVybiBaLmFubm90YXRpb249SSxaO2Z1bmN0aW9uIFoodWUsX2UsQmUpe2NvbnN0IE5lPXVlLmhhc093blByb3BlcnR5KG82KT91ZVtvNl06T2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KHVlLG82LHt2YWx1ZTpbXX0pW282XTtmb3IoO05lLmxlbmd0aDw9QmU7KU5lLnB1c2gobnVsbCk7cmV0dXJuKE5lW0JlXT1OZVtCZV18fFtdKS5wdXNoKEkpLHVlfX1yZXR1cm4gaCYmKHkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoaC5wcm90b3R5cGUpKSx5LnByb3RvdHlwZS5uZ01ldGFk''@;'; put 'put ''YXRhTmFtZT1kLHkuYW5ub3RhdGlvbkNscz15LHl9KX1jbGFzcyB6ZXtjb25zdHJ1Y3RvcihnLGgpe3RoaXMuX2Rlc2M9Zyx0aGlzLm5nTWV0YWRhdGFOYW1lPSJJbmplY3Rpb25Ub2tlbiIsdGhpcy5cdTAyNzVwcm92PXZvaWQgMCwibnVtYmVyIj09dHlwZW9mIGg/dGhpcy5fX05HX0VMRU1F''@;'; put 'put ''TlRfSURfXz1oOnZvaWQgMCE9PWgmJih0aGlzLlx1MDI3NXByb3Y9QWkoe3Rva2VuOnRoaXMscHJvdmlkZWRJbjpoLnByb3ZpZGVkSW58fCJyb290IixmYWN0b3J5OmguZmFjdG9yeX0pKX1nZXQgbXVsdGkoKXtyZXR1cm4gdGhpc310b1N0cmluZygpe3JldHVybmBJbmplY3Rpb25Ub2tlbiAk''@;'; put 'put ''e3RoaXMuX2Rlc2N9YH19Y29uc3QgV2M9RnVuY3Rpb247ZnVuY3Rpb24gZ2YoZCxnKXt2b2lkIDA9PT1nJiYoZz1kKTtmb3IobGV0IGg9MDtoPGQubGVuZ3RoO2grKyl7bGV0IHY9ZFtoXTtBcnJheS5pc0FycmF5KHYpPyhnPT09ZCYmKGc9ZC5zbGljZSgwLGgpKSxnZih2LGcpKTpnIT09ZCYm''@;'; put 'put ''Zy5wdXNoKHYpfXJldHVybiBnfWZ1bmN0aW9uIF9kKGQsZyl7ZC5mb3JFYWNoKGg9PkFycmF5LmlzQXJyYXkoaCk/X2QoaCxnKTpnKGgpKX1mdW5jdGlvbiBmYihkLGcsaCl7Zz49ZC5sZW5ndGg/ZC5wdXNoKGgpOmQuc3BsaWNlKGcsMCxoKX1mdW5jdGlvbiBDZChkLGcpe3JldHVybiBnPj1k''@;'; put 'put ''Lmxlbmd0aC0xP2QucG9wKCk6ZC5zcGxpY2UoZywxKVswXX1mdW5jdGlvbiBtMyhkLGcpe2NvbnN0IGg9W107Zm9yKGxldCB2PTA7djxkO3YrKyloLnB1c2goZyk7cmV0dXJuIGh9ZnVuY3Rpb24gWWMoZCxnLGgpe2xldCB2PUY4KGQsZyk7cmV0dXJuIHY+PTA/ZFsxfHZdPWg6KHY9fnYsZnVu''@;'; put 'put ''Y3Rpb24gbDYoZCxnLGgsdil7bGV0IHk9ZC5sZW5ndGg7aWYoeT09ZylkLnB1c2goaCx2KTtlbHNlIGlmKDE9PT15KWQucHVzaCh2LGRbMF0pLGRbMF09aDtlbHNle2Zvcih5LS0sZC5wdXNoKGRbeS0xXSxkW3ldKTt5Pmc7KWRbeV09ZFt5LTJdLHktLTtkW2ddPWgsZFtnKzFdPXZ9fShkLHYs''@;'; put 'put ''ZyxoKSksdn1mdW5jdGlvbiBpbShkLGcpe2NvbnN0IGg9RjgoZCxnKTtpZihoPj0wKXJldHVybiBkWzF8aF19ZnVuY3Rpb24gRjgoZCxnKXtyZXR1cm4gZnVuY3Rpb24gb20oZCxnLGgpe2xldCB2PTAseT1kLmxlbmd0aD4+aDtmb3IoO3khPT12Oyl7Y29uc3QgQz12Kyh5LXY+PjEpLEk9ZFtD''@;'; put 'put ''PDxoXTtpZihnPT09SSlyZXR1cm4gQzw8aDtJPmc/eT1DOnY9QysxfXJldHVybn4oeTw8aCl9KGQsZywxKX1jb25zdCBIOD17fSxOOD0iX19OR19ESV9GTEFHX18iLEQ0PSJuZ1RlbXBUb2tlblBhdGgiLEdNPS9cbi9nbSxwYj0iX19zb3VyY2UiO2xldCBWODtmdW5jdGlvbiBqOChkKXtjb25z''@;'; put 'put ''dCBnPVY4O3JldHVybiBWOD1kLGd9ZnVuY3Rpb24gX1IoZCxnPWowLkRlZmF1bHQpe2lmKHZvaWQgMD09PVY4KXRocm93IG5ldyBlbigtMjAzLCExKTtyZXR1cm4gbnVsbD09PVY4P2djKGQsdm9pZCAwLGcpOlY4LmdldChkLGcmajAuT3B0aW9uYWw/bnVsbDp2b2lkIDAsZyl9ZnVuY3Rpb24g''@;'; put 'put ''Q2koZCxnPWowLkRlZmF1bHQpe3JldHVybihmdW5jdGlvbiB2bigpe3JldHVybiBCbH0oKXx8X1IpKEd0KGQpLGcpfWZ1bmN0aW9uIGgyKGQsZz1qMC5EZWZhdWx0KXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIGcmJihnPTB8KGcub3B0aW9uYWwmJjgpfChnLmhvc3QmJjEpfChnLnNlbGYmJjIp''@;'; put 'put ''fChnLnNraXBTZWxmJiY0KSksQ2koZCxnKX1mdW5jdGlvbiBiOShkKXtjb25zdCBnPVtdO2ZvcihsZXQgaD0wO2g8ZC5sZW5ndGg7aCsrKXtjb25zdCB2PUd0KGRbaF0pO2lmKEFycmF5LmlzQXJyYXkodikpe2lmKDA9PT12Lmxlbmd0aCl0aHJvdyBuZXcgZW4oOTAwLCExKTtsZXQgeSxDPWow''@;'; put 'put ''LkRlZmF1bHQ7Zm9yKGxldCBJPTA7STx2Lmxlbmd0aDtJKyspe2NvbnN0IFo9dltJXSx1ZT1DUihaKTsibnVtYmVyIj09dHlwZW9mIHVlPy0xPT09dWU/eT1aLnRva2VuOkN8PXVlOnk9Wn1nLnB1c2goQ2koeSxDKSl9ZWxzZSBnLnB1c2goQ2kodikpfXJldHVybiBnfWZ1bmN0aW9uIGxtKGQs''@;'; put 'put ''Zyl7cmV0dXJuIGRbTjhdPWcsZC5wcm90b3R5cGVbTjhdPWcsZH1mdW5jdGlvbiBDUihkKXtyZXR1cm4gZFtOOF19Y29uc3QgbWY9bG0oV2YoIk9wdGlvbmFsIiksOCksTDQ9bG0oV2YoIlNraXBTZWxmIiksNCk7bGV0IG1iLEc4LEEzO2Z1bmN0aW9uIFlmKGQpe3ZhciBnO3JldHVybihudWxs''@;'; put 'put ''PT09KGc9ZnVuY3Rpb24gY20oKXtpZih2b2lkIDA9PT1HOCYmKEc4PW51bGwsUGwudHJ1c3RlZFR5cGVzKSl0cnl7Rzg9UGwudHJ1c3RlZFR5cGVzLmNyZWF0ZVBvbGljeSgiYW5ndWxhciIse2NyZWF0ZUhUTUw6ZD0+ZCxjcmVhdGVTY3JpcHQ6ZD0+ZCxjcmVhdGVTY3JpcHRVUkw6ZD0+ZH0p''@;'; put 'put ''fWNhdGNoKGQpe31yZXR1cm4gRzh9KCkpfHx2b2lkIDA9PT1nP3ZvaWQgMDpnLmNyZWF0ZUhUTUwoZCkpfHxkfWZ1bmN0aW9uIEcxKGQpe3ZhciBnO3JldHVybihudWxsPT09KGc9ZnVuY3Rpb24gQWIoKXtpZih2b2lkIDA9PT1BMyYmKEEzPW51bGwsUGwudHJ1c3RlZFR5cGVzKSl0cnl7QTM9''@;'; put 'put ''UGwudHJ1c3RlZFR5cGVzLmNyZWF0ZVBvbGljeSgiYW5ndWxhciN1bnNhZmUtYnlwYXNzIix7Y3JlYXRlSFRNTDpkPT5kLGNyZWF0ZVNjcmlwdDpkPT5kLGNyZWF0ZVNjcmlwdFVSTDpkPT5kfSl9Y2F0Y2goZCl7fXJldHVybiBBM30oKSl8fHZvaWQgMD09PWc/dm9pZCAwOmcuY3JlYXRlSFRN''@;'; put 'put ''TChkKSl8fGR9Y2xhc3MgTzR7Y29uc3RydWN0b3IoZyl7dGhpcy5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5PWd9dG9TdHJpbmcoKXtyZXR1cm5gU2FmZVZhbHVlIG11c3QgdXNlIFtwcm9wZXJ0eV09YmluZGluZzogJHt0aGlzLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxp''@;'; put 'put ''Y2F0aW9uU2VjdXJpdHl9IChzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcylgfX1jbGFzcyBobSBleHRlbmRzIE80e2dldFR5cGVOYW1lKCl7cmV0dXJuIkhUTUwifX1jbGFzcyBtYSBleHRlbmRzIE80e2dldFR5cGVOYW1lKCl7cmV0dXJuIlN0eWxlIn19Y2xhc3MgdTYgZXh0ZW5k''@;'; put 'put ''cyBPNHtnZXRUeXBlTmFtZSgpe3JldHVybiJTY3JpcHQifX1jbGFzcyBobCBleHRlbmRzIE80e2dldFR5cGVOYW1lKCl7cmV0dXJuIlVSTCJ9fWNsYXNzIFVmIGV4dGVuZHMgTzR7Z2V0VHlwZU5hbWUoKXtyZXR1cm4iUmVzb3VyY2VVUkwifX1mdW5jdGlvbiBkMihkKXtyZXR1cm4gZCBpbnN0''@;'; put 'put ''YW5jZW9mIE80P2QuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eTpkfWZ1bmN0aW9uICR1KGQsZyl7Y29uc3QgaD1mdW5jdGlvbiBrYShkKXtyZXR1cm4gZCBpbnN0YW5jZW9mIE80JiZkLmdldFR5cGVOYW1lKCl8fG51bGx9KGQpO2lmKG51bGwhPWgmJmghPT1nKXtpZigi''@;'; put 'put ''UmVzb3VyY2VVUkwiPT09aCYmIlVSTCI9PT1nKXJldHVybiEwO3Rocm93IG5ldyBFcnJvcihgUmVxdWlyZWQgYSBzYWZlICR7Z30sIGdvdCBhICR7aH0gKHNlZSBodHRwczovL2cuY28vbmcvc2VjdXJpdHkjeHNzKWApfXJldHVybiBoPT09Z31jbGFzcyB4aHtjb25zdHJ1Y3RvcihnKXt0aGlz''@;'; put 'put ''LmluZXJ0RG9jdW1lbnRIZWxwZXI9Z31nZXRJbmVydEJvZHlFbGVtZW50KGcpe2c9Ijxib2R5PjxyZW1vdmU+PC9yZW1vdmU+IitnO3RyeXtjb25zdCBoPShuZXcgd2luZG93LkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKFlmKGcpLCJ0ZXh0L2h0bWwiKS5ib2R5O3JldHVybiBudWxsPT09''@;'; put 'put ''aD90aGlzLmluZXJ0RG9jdW1lbnRIZWxwZXIuZ2V0SW5lcnRCb2R5RWxlbWVudChnKTooaC5yZW1vdmVDaGlsZChoLmZpcnN0Q2hpbGQpLGgpfWNhdGNoKGgpe3JldHVybiBudWxsfX19Y2xhc3MgckV7Y29uc3RydWN0b3IoZyl7aWYodGhpcy5kZWZhdWx0RG9jPWcsdGhpcy5pbmVydERvY3Vt''@;'; put 'put ''ZW50PXRoaXMuZGVmYXVsdERvYy5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoInNhbml0aXphdGlvbi1pbmVydCIpLG51bGw9PXRoaXMuaW5lcnREb2N1bWVudC5ib2R5KXtjb25zdCBoPXRoaXMuaW5lcnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJodG1sIik7dGhpcy5pbmVy''@;'; put 'put ''dERvY3VtZW50LmFwcGVuZENoaWxkKGgpO2NvbnN0IHY9dGhpcy5pbmVydERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJvZHkiKTtoLmFwcGVuZENoaWxkKHYpfX1nZXRJbmVydEJvZHlFbGVtZW50KGcpe2NvbnN0IGg9dGhpcy5pbmVydERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRl''@;'; put 'put ''Iik7aWYoImNvbnRlbnQiaW4gaClyZXR1cm4gaC5pbm5lckhUTUw9WWYoZyksaDtjb25zdCB2PXRoaXMuaW5lcnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJib2R5Iik7cmV0dXJuIHYuaW5uZXJIVE1MPVlmKGcpLHRoaXMuZGVmYXVsdERvYy5kb2N1bWVudE1vZGUmJnRoaXMuc3RyaXBDdXN0''@;'; put 'put ''b21Oc0F0dHJzKHYpLHZ9c3RyaXBDdXN0b21Oc0F0dHJzKGcpe2NvbnN0IGg9Zy5hdHRyaWJ1dGVzO2ZvcihsZXQgeT1oLmxlbmd0aC0xOzA8eTt5LS0pe2NvbnN0IEk9aC5pdGVtKHkpLm5hbWU7KCJ4bWxuczpuczEiPT09SXx8MD09PUkuaW5kZXhPZigibnMxOiIpKSYmZy5yZW1vdmVBdHRy''@;'; put 'put ''aWJ1dGUoSSl9bGV0IHY9Zy5maXJzdENoaWxkO2Zvcig7djspdi5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZ0aGlzLnN0cmlwQ3VzdG9tTnNBdHRycyh2KSx2PXYubmV4dFNpYmxpbmd9fWNvbnN0IE9SPS9eKD86KD86aHR0cHM/fG1haWx0b3xmdHB8dGVsfGZpbGV8c21zKTp8W14m''@;'; put 'put ''Oi8/I10qKD86Wy8/I118JCkpL2dpLGlFPS9eZGF0YTooPzppbWFnZVwvKD86Ym1wfGdpZnxqcGVnfGpwZ3xwbmd8dGlmZnx3ZWJwKXx2aWRlb1wvKD86bXBlZ3xtcDR8b2dnfHdlYm0pfGF1ZGlvXC8oPzptcDN8b2dhfG9nZ3xvcHVzKSk7YmFzZTY0LFthLXowLTkrXC9dKz0qJC9pO2Z1bmN0''@;'; put 'put ''aW9uIHZmKGQpe3JldHVybihkPVN0cmluZyhkKSkubWF0Y2goT1IpfHxkLm1hdGNoKGlFKT9kOiJ1bnNhZmU6IitkfWZ1bmN0aW9uIG9FKGQpe3JldHVybihkPVN0cmluZyhkKSkuc3BsaXQoIiwiKS5tYXAoZz0+dmYoZy50cmltKCkpKS5qb2luKCIsICIpfWZ1bmN0aW9uIHczKGQpe2NvbnN0''@;'; put 'put ''IGc9e307Zm9yKGNvbnN0IGggb2YgZC5zcGxpdCgiLCIpKWdbaF09ITA7cmV0dXJuIGd9ZnVuY3Rpb24gcG0oLi4uZCl7Y29uc3QgZz17fTtmb3IoY29uc3QgaCBvZiBkKWZvcihjb25zdCB2IGluIGgpaC5oYXNPd25Qcm9wZXJ0eSh2KSYmKGdbdl09ITApO3JldHVybiBnfWNvbnN0IGFFPXcz''@;'; put 'put ''KCJhcmVhLGJyLGNvbCxocixpbWcsd2JyIiksbEU9dzMoImNvbGdyb3VwLGRkLGR0LGxpLHAsdGJvZHksdGQsdGZvb3QsdGgsdGhlYWQsdHIiKSxzRT13MygicnAscnQiKSx5Yj1wbShhRSxwbShsRSx3MygiYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGJsb2NrcXVvdGUsY2FwdGlvbixjZW50ZXIs''@;'; put 'put ''ZGVsLGRldGFpbHMsZGlhbG9nLGRpcixkaXYsZGwsZmlndXJlLGZpZ2NhcHRpb24sZm9vdGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhlYWRlcixoZ3JvdXAsaHIsaW5zLG1haW4sbWFwLG1lbnUsbmF2LG9sLHByZSxzZWN0aW9uLHN1bW1hcnksdGFibGUsdWwiKSkscG0oc0UsdzMoImEsYWJicixh''@;'; put 'put ''Y3JvbnltLGF1ZGlvLGIsYmRpLGJkbyxiaWcsYnIsY2l0ZSxjb2RlLGRlbCxkZm4sZW0sZm9udCxpLGltZyxpbnMsa2JkLGxhYmVsLG1hcCxtYXJrLHBpY3R1cmUscSxydWJ5LHJwLHJ0LHMsc2FtcCxzbWFsbCxzb3VyY2Usc3BhbixzdHJpa2Usc3Ryb25nLHN1YixzdXAsdGltZSx0cmFjayx0''@;'; put 'put ''dCx1LHZhcix2aWRlbyIpKSxwbShzRSxsRSkpLHdiPXczKCJiYWNrZ3JvdW5kLGNpdGUsaHJlZixpdGVtdHlwZSxsb25nZGVzYyxwb3N0ZXIsc3JjLHhsaW5rOmhyZWYiKSxiYj13Mygic3Jjc2V0IiksTTk9cG0od2IsYmIsdzMoImFiYnIsYWNjZXNza2V5LGFsaWduLGFsdCxhdXRvcGxheSxh''@;'; put 'put ''eGlzLGJnY29sb3IsYm9yZGVyLGNlbGxwYWRkaW5nLGNlbGxzcGFjaW5nLGNsYXNzLGNsZWFyLGNvbG9yLGNvbHMsY29sc3Bhbixjb21wYWN0LGNvbnRyb2xzLGNvb3JkcyxkYXRldGltZSxkZWZhdWx0LGRpcixkb3dubG9hZCxmYWNlLGhlYWRlcnMsaGVpZ2h0LGhpZGRlbixocmVmbGFuZyxo''@;'; put 'put ''c3BhY2UsaXNtYXAsaXRlbXNjb3BlLGl0ZW1wcm9wLGtpbmQsbGFiZWwsbGFuZyxsYW5ndWFnZSxsb29wLG1lZGlhLG11dGVkLG5vaHJlZixub3dyYXAsb3BlbixwcmVsb2FkLHJlbCxyZXYscm9sZSxyb3dzLHJvd3NwYW4scnVsZXMsc2NvcGUsc2Nyb2xsaW5nLHNoYXBlLHNpemUsc2l6ZXMs''@;'; put 'put ''c3BhbixzcmNsYW5nLHN0YXJ0LHN1bW1hcnksdGFiaW5kZXgsdGFyZ2V0LHRpdGxlLHRyYW5zbGF0ZSx0eXBlLHVzZW1hcCx2YWxpZ24sdmFsdWUsdnNwYWNlLHdpZHRoIiksdzMoImFyaWEtYWN0aXZlZGVzY2VuZGFudCxhcmlhLWF0b21pYyxhcmlhLWF1dG9jb21wbGV0ZSxhcmlhLWJ1c3ks''@;'; put 'put ''YXJpYS1jaGVja2VkLGFyaWEtY29sY291bnQsYXJpYS1jb2xpbmRleCxhcmlhLWNvbHNwYW4sYXJpYS1jb250cm9scyxhcmlhLWN1cnJlbnQsYXJpYS1kZXNjcmliZWRieSxhcmlhLWRldGFpbHMsYXJpYS1kaXNhYmxlZCxhcmlhLWRyb3BlZmZlY3QsYXJpYS1lcnJvcm1lc3NhZ2UsYXJpYS1l''@;'; put 'put ''eHBhbmRlZCxhcmlhLWZsb3d0byxhcmlhLWdyYWJiZWQsYXJpYS1oYXNwb3B1cCxhcmlhLWhpZGRlbixhcmlhLWludmFsaWQsYXJpYS1rZXlzaG9ydGN1dHMsYXJpYS1sYWJlbCxhcmlhLWxhYmVsbGVkYnksYXJpYS1sZXZlbCxhcmlhLWxpdmUsYXJpYS1tb2RhbCxhcmlhLW11bHRpbGluZSxh''@;'; put 'put ''cmlhLW11bHRpc2VsZWN0YWJsZSxhcmlhLW9yaWVudGF0aW9uLGFyaWEtb3ducyxhcmlhLXBsYWNlaG9sZGVyLGFyaWEtcG9zaW5zZXQsYXJpYS1wcmVzc2VkLGFyaWEtcmVhZG9ubHksYXJpYS1yZWxldmFudCxhcmlhLXJlcXVpcmVkLGFyaWEtcm9sZWRlc2NyaXB0aW9uLGFyaWEtcm93Y291''@;'; put 'put ''bnQsYXJpYS1yb3dpbmRleCxhcmlhLXJvd3NwYW4sYXJpYS1zZWxlY3RlZCxhcmlhLXNldHNpemUsYXJpYS1zb3J0LGFyaWEtdmFsdWVtYXgsYXJpYS12YWx1ZW1pbixhcmlhLXZhbHVlbm93LGFyaWEtdmFsdWV0ZXh0IikpLEU5PXczKCJzY3JpcHQsc3R5bGUsdGVtcGxhdGUiKTtjbGFzcyBQ''@;'; put 'put ''Untjb25zdHJ1Y3Rvcigpe3RoaXMuc2FuaXRpemVkU29tZXRoaW5nPSExLHRoaXMuYnVmPVtdfXNhbml0aXplQ2hpbGRyZW4oZyl7bGV0IGg9Zy5maXJzdENoaWxkLHY9ITA7Zm9yKDtoOylpZihoLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREU/dj10aGlzLnN0YXJ0RWxlbWVudChoKTpo''@;'; put 'put ''Lm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREU/dGhpcy5jaGFycyhoLm5vZGVWYWx1ZSk6dGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITAsdiYmaC5maXJzdENoaWxkKWg9aC5maXJzdENoaWxkO2Vsc2UgZm9yKDtoOyl7aC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZ0aGlzLmVuZEVs''@;'; put 'put ''ZW1lbnQoaCk7bGV0IHk9dGhpcy5jaGVja0Nsb2JiZXJlZEVsZW1lbnQoaCxoLm5leHRTaWJsaW5nKTtpZih5KXtoPXk7YnJlYWt9aD10aGlzLmNoZWNrQ2xvYmJlcmVkRWxlbWVudChoLGgucGFyZW50Tm9kZSl9cmV0dXJuIHRoaXMuYnVmLmpvaW4oIiIpfXN0YXJ0RWxlbWVudChnKXtjb25z''@;'; put 'put ''dCBoPWcubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZigheWIuaGFzT3duUHJvcGVydHkoaCkpcmV0dXJuIHRoaXMuc2FuaXRpemVkU29tZXRoaW5nPSEwLCFFOS5oYXNPd25Qcm9wZXJ0eShoKTt0aGlzLmJ1Zi5wdXNoKCI8IiksdGhpcy5idWYucHVzaChoKTtjb25zdCB2PWcuYXR0cmlidXRl''@;'; put 'put ''cztmb3IobGV0IHk9MDt5PHYubGVuZ3RoO3krKyl7Y29uc3QgQz12Lml0ZW0oeSksST1DLm5hbWUsWj1JLnRvTG93ZXJDYXNlKCk7aWYoIU05Lmhhc093blByb3BlcnR5KFopKXt0aGlzLnNhbml0aXplZFNvbWV0aGluZz0hMDtjb250aW51ZX1sZXQgdWU9Qy52YWx1ZTt3YltaXSYmKHVlPXZm''@;'; put 'put ''KHVlKSksYmJbWl0mJih1ZT1vRSh1ZSkpLHRoaXMuYnVmLnB1c2goIiAiLEksJz0iJyx1RSh1ZSksJyInKX1yZXR1cm4gdGhpcy5idWYucHVzaCgiPiIpLCEwfWVuZEVsZW1lbnQoZyl7Y29uc3QgaD1nLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7eWIuaGFzT3duUHJvcGVydHkoaCkmJiFhRS5o''@;'; put 'put ''YXNPd25Qcm9wZXJ0eShoKSYmKHRoaXMuYnVmLnB1c2goIjwvIiksdGhpcy5idWYucHVzaChoKSx0aGlzLmJ1Zi5wdXNoKCI+IikpfWNoYXJzKGcpe3RoaXMuYnVmLnB1c2godUUoZykpfWNoZWNrQ2xvYmJlcmVkRWxlbWVudChnLGgpe2lmKGgmJihnLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9u''@;'; put 'put ''KGgpJk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZKT09PU5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZKXRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHNhbml0aXplIGh0bWwgYmVjYXVzZSB0aGUgZWxlbWVudCBpcyBjbG9iYmVyZWQ6ICR7Zy5vdXRlckhU''@;'; put 'put ''TUx9YCk7cmV0dXJuIGh9fWNvbnN0IEZSPS9bXHVEODAwLVx1REJGRl1bXHVEQzAwLVx1REZGRl0vZyxIUj0vKFteXCMtfiB8IV0pL2c7ZnVuY3Rpb24gdUUoZCl7cmV0dXJuIGQucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoRlIsZnVuY3Rpb24oZyl7cmV0dXJuIiYjIisoMTAyNCoo''@;'; put 'put ''Zy5jaGFyQ29kZUF0KDApLTU1Mjk2KSsoZy5jaGFyQ29kZUF0KDEpLTU2MzIwKSs2NTUzNikrIjsifSkucmVwbGFjZShIUixmdW5jdGlvbihnKXtyZXR1cm4iJiMiK2cuY2hhckNvZGVBdCgwKSsiOyJ9KS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1sZXQgZ207''@;'; put 'put ''ZnVuY3Rpb24geDkoZCxnKXtsZXQgaD1udWxsO3RyeXtnbT1nbXx8ZnVuY3Rpb24gbkUoZCl7Y29uc3QgZz1uZXcgckUoZCk7cmV0dXJuIGZ1bmN0aW9uIExSKCl7dHJ5e3JldHVybiEhKG5ldyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoWWYoIiIpLCJ0ZXh0L2h0bWwiKX1j''@;'; put 'put ''YXRjaChkKXtyZXR1cm4hMX19KCk/bmV3IHhoKGcpOmd9KGQpO2xldCB2PWc/U3RyaW5nKGcpOiIiO2g9Z20uZ2V0SW5lcnRCb2R5RWxlbWVudCh2KTtsZXQgeT01LEM9djtkb3tpZigwPT09eSl0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCB0byBzYW5pdGl6ZSBodG1sIGJlY2F1c2UgdGhlIGlu''@;'; put 'put ''cHV0IGlzIHVuc3RhYmxlIik7eS0tLHY9QyxDPWguaW5uZXJIVE1MLGg9Z20uZ2V0SW5lcnRCb2R5RWxlbWVudCh2KX13aGlsZSh2IT09Qyk7cmV0dXJuIFlmKChuZXcgUFIpLnNhbml0aXplQ2hpbGRyZW4oWTgoaCl8fGgpKX1maW5hbGx5e2lmKGgpe2NvbnN0IHY9WTgoaCl8fGg7Zm9yKDt2''@;'; put 'put ''LmZpcnN0Q2hpbGQ7KXYucmVtb3ZlQ2hpbGQodi5maXJzdENoaWxkKX19fWZ1bmN0aW9uIFk4KGQpe3JldHVybiJjb250ZW50ImluIGQmJmZ1bmN0aW9uIGIzKGQpe3JldHVybiBkLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJiJURU1QTEFURSI9PT1kLm5vZGVOYW1lfShkKT9kLmNv''@;'; put 'put ''bnRlbnQ6bnVsbH12YXIgYTI9KCgpPT4oKGEyPWEyfHx7fSlbYTIuTk9ORT0wXT0iTk9ORSIsYTJbYTIuSFRNTD0xXT0iSFRNTCIsYTJbYTIuU1RZTEU9Ml09IlNUWUxFIixhMlthMi5TQ1JJUFQ9M109IlNDUklQVCIsYTJbYTIuVVJMPTRdPSJVUkwiLGEyW2EyLlJFU09VUkNFX1VSTD01XT0i''@;'; put 'put ''UkVTT1VSQ0VfVVJMIixhMikpKCk7ZnVuY3Rpb24gVTgoZCl7Y29uc3QgZz1jNigpO3JldHVybiBnP0cxKGcuc2FuaXRpemUoYTIuSFRNTCxkKXx8IiIpOiR1KGQsIkhUTUwiKT9HMShkMihkKSk6eDkoZnVuY3Rpb24gcU0oKXtyZXR1cm4gdm9pZCAwIT09bWI/bWI6InVuZGVmaW5lZCIhPXR5''@;'; put 'put ''cGVvZiBkb2N1bWVudD9kb2N1bWVudDp2b2lkIDB9KCksSm4oZCkpfWZ1bmN0aW9uIFQ5KGQpe2NvbnN0IGc9YzYoKTtyZXR1cm4gZz9nLnNhbml0aXplKGEyLlVSTCxkKXx8IiI6JHUoZCwiVVJMIik/ZDIoZCk6dmYoSm4oZCkpfWZ1bmN0aW9uIGM2KCl7Y29uc3QgZD1QdCgpO3JldHVybiBk''@;'; put 'put ''JiZkWzEyXX1jb25zdCBmRT1uZXcgemUoIkVOVklST05NRU5UX0lOSVRJQUxJWkVSIikseWM9bmV3IHplKCJJTkpFQ1RPUiIsLTEpLHdjPW5ldyB6ZSgiSU5KRUNUT1JfREVGX1RZUEVTIik7Y2xhc3MgUjR7Z2V0KGcsaD1IOCl7aWYoaD09PUg4KXtjb25zdCB2PW5ldyBFcnJvcihgTnVsbElu''@;'; put 'put ''amVjdG9yRXJyb3I6IE5vIHByb3ZpZGVyIGZvciAke21uKGcpfSFgKTt0aHJvdyB2Lm5hbWU9Ik51bGxJbmplY3RvckVycm9yIix2fXJldHVybiBofX1mdW5jdGlvbiBUaCguLi5kKXtyZXR1cm57XHUwMjc1cHJvdmlkZXJzOkFmKDAsZCl9fWZ1bmN0aW9uIEFmKGQsLi4uZyl7Y29uc3QgaD1b''@;'; put 'put ''XSx2PW5ldyBTZXQ7bGV0IHk7cmV0dXJuIF9kKGcsQz0+e2NvbnN0IEk9QztKOChJLGgsW10sdikmJih5fHwoeT1bXSkseS5wdXNoKEkpKX0pLHZvaWQgMCE9PXkmJkMzKHksaCksaH1mdW5jdGlvbiBDMyhkLGcpe2ZvcihsZXQgaD0wO2g8ZC5sZW5ndGg7aCsrKXtjb25zdHtwcm92aWRlcnM6''@;'; put 'put ''eX09ZFtoXTtfZCh5LEM9PntnLnB1c2goQyl9KX19ZnVuY3Rpb24gSjgoZCxnLGgsdil7aWYoIShkPUd0KGQpKSlyZXR1cm4hMTtsZXQgeT1udWxsLEM9SGMoZCk7Y29uc3QgST0hQyYmdnMoZCk7aWYoQ3x8SSl7aWYoSSYmIUkuc3RhbmRhbG9uZSlyZXR1cm4hMTt5PWR9ZWxzZXtjb25zdCB1''@;'; put 'put ''ZT1kLm5nTW9kdWxlO2lmKEM9SGModWUpLCFDKXJldHVybiExO3k9dWV9Y29uc3QgWj12Lmhhcyh5KTtpZihJKXtpZihaKXJldHVybiExO2lmKHYuYWRkKHkpLEkuZGVwZW5kZW5jaWVzKXtjb25zdCB1ZT0iZnVuY3Rpb24iPT10eXBlb2YgSS5kZXBlbmRlbmNpZXM/SS5kZXBlbmRlbmNpZXMo''@;'; put 'put ''KTpJLmRlcGVuZGVuY2llcztmb3IoY29uc3QgX2Ugb2YgdWUpSjgoX2UsZyxoLHYpfX1lbHNle2lmKCFDKXJldHVybiExO3tpZihudWxsIT1DLmltcG9ydHMmJiFaKXtsZXQgX2U7di5hZGQoeSk7dHJ5e19kKEMuaW1wb3J0cyxCZT0+e0o4KEJlLGcsaCx2KSYmKF9lfHwoX2U9W10pLF9lLnB1''@;'; put 'put ''c2goQmUpKX0pfWZpbmFsbHl7fXZvaWQgMCE9PV9lJiZDMyhfZSxnKX1pZighWil7Y29uc3QgX2U9amYoeSl8fCgoKT0+bmV3IHkpO2cucHVzaCh7cHJvdmlkZTp5LHVzZUZhY3Rvcnk6X2UsZGVwczpaMH0se3Byb3ZpZGU6d2MsdXNlVmFsdWU6eSxtdWx0aTohMH0se3Byb3ZpZGU6ZkUsdXNl''@;'; put 'put ''VmFsdWU6KCk9PkNpKHkpLG11bHRpOiEwfSl9Y29uc3QgdWU9Qy5wcm92aWRlcnM7bnVsbD09dWV8fFp8fF9kKHVlLEJlPT57Zy5wdXNoKEJlKX0pfX1yZXR1cm4geSE9PWQmJnZvaWQgMCE9PWQucHJvdmlkZXJzfWNvbnN0IGhFPUJuKHtwcm92aWRlOlN0cmluZyx1c2VWYWx1ZTpCbn0pO2Z1''@;'; put 'put ''bmN0aW9uIEQ5KGQpe3JldHVybiBudWxsIT09ZCYmIm9iamVjdCI9PXR5cGVvZiBkJiZoRSBpbiBkfWZ1bmN0aW9uIGszKGQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBkfWNvbnN0IHZtPW5ldyB6ZSgiU2V0IEluamVjdG9yIHNjb3BlLiIpLFMzPXt9LFpSPXt9O2xldCBoNjtmdW5jdGlv''@;'; put 'put ''biBNMygpe3JldHVybiB2b2lkIDA9PT1oNiYmKGg2PW5ldyBSNCksaDZ9Y2xhc3MgRTN7fWNsYXNzIGtiIGV4dGVuZHMgRTN7Y29uc3RydWN0b3IoZyxoLHYseSl7c3VwZXIoKSx0aGlzLnBhcmVudD1oLHRoaXMuc291cmNlPXYsdGhpcy5zY29wZXM9eSx0aGlzLnJlY29yZHM9bmV3IE1hcCx0''@;'; put 'put ''aGlzLl9uZ09uRGVzdHJveUhvb2tzPW5ldyBTZXQsdGhpcy5fb25EZXN0cm95SG9va3M9W10sdGhpcy5fZGVzdHJveWVkPSExLHgzKGcsST0+dGhpcy5wcm9jZXNzUHJvdmlkZXIoSSkpLHRoaXMucmVjb3Jkcy5zZXQoeWMsZDYodm9pZCAwLHRoaXMpKSx5LmhhcygiZW52aXJvbm1lbnQiKSYm''@;'; put 'put ''dGhpcy5yZWNvcmRzLnNldChFMyxkNih2b2lkIDAsdGhpcykpO2NvbnN0IEM9dGhpcy5yZWNvcmRzLmdldCh2bSk7bnVsbCE9QyYmInN0cmluZyI9PXR5cGVvZiBDLnZhbHVlJiZ0aGlzLnNjb3Blcy5hZGQoQy52YWx1ZSksdGhpcy5pbmplY3RvckRlZlR5cGVzPW5ldyBTZXQodGhpcy5nZXQo''@;'; put 'put ''d2MubXVsdGksWjAsajAuU2VsZikpfWdldCBkZXN0cm95ZWQoKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkfWRlc3Ryb3koKXt0aGlzLmFzc2VydE5vdERlc3Ryb3llZCgpLHRoaXMuX2Rlc3Ryb3llZD0hMDt0cnl7Zm9yKGNvbnN0IGcgb2YgdGhpcy5fbmdPbkRlc3Ryb3lIb29rcylnLm5nT25E''@;'; put 'put ''ZXN0cm95KCk7Zm9yKGNvbnN0IGcgb2YgdGhpcy5fb25EZXN0cm95SG9va3MpZygpfWZpbmFsbHl7dGhpcy5yZWNvcmRzLmNsZWFyKCksdGhpcy5fbmdPbkRlc3Ryb3lIb29rcy5jbGVhcigpLHRoaXMuaW5qZWN0b3JEZWZUeXBlcy5jbGVhcigpLHRoaXMuX29uRGVzdHJveUhvb2tzLmxlbmd0''@;'; put 'put ''aD0wfX1vbkRlc3Ryb3koZyl7dGhpcy5fb25EZXN0cm95SG9va3MucHVzaChnKX1ydW5JbkNvbnRleHQoZyl7dGhpcy5hc3NlcnROb3REZXN0cm95ZWQoKTtjb25zdCBoPWo4KHRoaXMpLHY9XzAodm9pZCAwKTt0cnl7cmV0dXJuIGcoKX1maW5hbGx5e2o4KGgpLF8wKHYpfX1nZXQoZyxoPUg4''@;'; put 'put ''LHY9ajAuRGVmYXVsdCl7dGhpcy5hc3NlcnROb3REZXN0cm95ZWQoKTtjb25zdCB5PWo4KHRoaXMpLEM9XzAodm9pZCAwKTt0cnl7aWYoISh2JmowLlNraXBTZWxmKSl7bGV0IFo9dGhpcy5yZWNvcmRzLmdldChnKTtpZih2b2lkIDA9PT1aKXtjb25zdCB1ZT1mdW5jdGlvbiBnRShkKXtyZXR1''@;'; put 'put ''cm4iZnVuY3Rpb24iPT10eXBlb2YgZHx8Im9iamVjdCI9PXR5cGVvZiBkJiZkIGluc3RhbmNlb2YgemV9KGcpJiZzYShnKTtaPXVlJiZ0aGlzLmluamVjdGFibGVEZWZJblNjb3BlKHVlKT9kNihrZChnKSxTMyk6bnVsbCx0aGlzLnJlY29yZHMuc2V0KGcsWil9aWYobnVsbCE9WilyZXR1cm4g''@;'; put 'put ''dGhpcy5oeWRyYXRlKGcsWil9cmV0dXJuKHYmajAuU2VsZj9NMygpOnRoaXMucGFyZW50KS5nZXQoZyxoPXYmajAuT3B0aW9uYWwmJmg9PT1IOD9udWxsOmgpfWNhdGNoKEkpe2lmKCJOdWxsSW5qZWN0b3JFcnJvciI9PT1JLm5hbWUpe2lmKChJW0Q0XT1JW0Q0XXx8W10pLnVuc2hpZnQobW4o''@;'; put 'put ''ZykpLHkpdGhyb3cgSTtyZXR1cm4gZnVuY3Rpb24ga1IoZCxnLGgsdil7Y29uc3QgeT1kW0Q0XTt0aHJvdyBnW3BiXSYmeS51bnNoaWZ0KGdbcGJdKSxkLm1lc3NhZ2U9ZnVuY3Rpb24gejEoZCxnLGgsdj1udWxsKXtkPWQmJiJcbiI9PT1kLmNoYXJBdCgwKSYmIlx1MDI3NSI9PWQuY2hhckF0''@;'; put 'put ''KDEpP2Quc2xpY2UoMik6ZDtsZXQgeT1tbihnKTtpZihBcnJheS5pc0FycmF5KGcpKXk9Zy5tYXAobW4pLmpvaW4oIiAtPiAiKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgZyl7bGV0IEM9W107Zm9yKGxldCBJIGluIGcpaWYoZy5oYXNPd25Qcm9wZXJ0eShJKSl7bGV0IFo9Z1tJXTtDLnB1''@;'; put 'put ''c2goSSsiOiIrKCJzdHJpbmciPT10eXBlb2YgWj9KU09OLnN0cmluZ2lmeShaKTptbihaKSkpfXk9YHske0Muam9pbigiLCAiKX19YH1yZXR1cm5gJHtofSR7dj8iKCIrdisiKSI6IiJ9WyR7eX1dOiAke2QucmVwbGFjZShHTSwiXG4gICIpfWB9KCJcbiIrZC5tZXNzYWdlLHksaCx2KSxkLm5n''@;'; put 'put ''VG9rZW5QYXRoPXksZFtENF09bnVsbCxkfShJLGcsIlIzSW5qZWN0b3JFcnJvciIsdGhpcy5zb3VyY2UpfXRocm93IEl9ZmluYWxseXtfMChDKSxqOCh5KX19cmVzb2x2ZUluamVjdG9ySW5pdGlhbGl6ZXJzKCl7Y29uc3QgZz1qOCh0aGlzKSxoPV8wKHZvaWQgMCk7dHJ5e2NvbnN0IHY9dGhp''@;'; put 'put ''cy5nZXQoZkUubXVsdGksWjAsajAuU2VsZik7Zm9yKGNvbnN0IHkgb2Ygdil5KCl9ZmluYWxseXtqOChnKSxfMChoKX19dG9TdHJpbmcoKXtjb25zdCBnPVtdLGg9dGhpcy5yZWNvcmRzO2Zvcihjb25zdCB2IG9mIGgua2V5cygpKWcucHVzaChtbih2KSk7cmV0dXJuYFIzSW5qZWN0b3JbJHtn''@;'; put 'put ''LmpvaW4oIiwgIil9XWB9YXNzZXJ0Tm90RGVzdHJveWVkKCl7aWYodGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBlbigyMDUsITEpfXByb2Nlc3NQcm92aWRlcihnKXtsZXQgaD1rMyhnPUd0KGcpKT9nOkd0KGcmJmcucHJvdmlkZSk7Y29uc3Qgdj1mdW5jdGlvbiBkRShkKXtyZXR1cm4gRDko''@;'; put 'put ''ZCk/ZDYodm9pZCAwLGQudXNlVmFsdWUpOmQ2KHBFKGQpLFMzKX0oZyk7aWYoazMoZyl8fCEwIT09Zy5tdWx0aSl0aGlzLnJlY29yZHMuZ2V0KGgpO2Vsc2V7bGV0IHk9dGhpcy5yZWNvcmRzLmdldChoKTt5fHwoeT1kNih2b2lkIDAsUzMsITApLHkuZmFjdG9yeT0oKT0+YjkoeS5tdWx0aSks''@;'; put 'put ''dGhpcy5yZWNvcmRzLnNldChoLHkpKSxoPWcseS5tdWx0aS5wdXNoKGcpfXRoaXMucmVjb3Jkcy5zZXQoaCx2KX1oeWRyYXRlKGcsaCl7cmV0dXJuIGgudmFsdWU9PT1TMyYmKGgudmFsdWU9WlIsaC52YWx1ZT1oLmZhY3RvcnkoKSksIm9iamVjdCI9PXR5cGVvZiBoLnZhbHVlJiZoLnZhbHVl''@;'; put 'put ''JiZmdW5jdGlvbiB6UihkKXtyZXR1cm4gbnVsbCE9PWQmJiJvYmplY3QiPT10eXBlb2YgZCYmImZ1bmN0aW9uIj09dHlwZW9mIGQubmdPbkRlc3Ryb3l9KGgudmFsdWUpJiZ0aGlzLl9uZ09uRGVzdHJveUhvb2tzLmFkZChoLnZhbHVlKSxoLnZhbHVlfWluamVjdGFibGVEZWZJblNjb3BlKGcp''@;'; put 'put ''e2lmKCFnLnByb3ZpZGVkSW4pcmV0dXJuITE7Y29uc3QgaD1HdChnLnByb3ZpZGVkSW4pO3JldHVybiJzdHJpbmciPT10eXBlb2YgaD8iYW55Ij09PWh8fHRoaXMuc2NvcGVzLmhhcyhoKTp0aGlzLmluamVjdG9yRGVmVHlwZXMuaGFzKGgpfX1mdW5jdGlvbiBrZChkKXtjb25zdCBnPXNhKGQp''@;'; put 'put ''LGg9bnVsbCE9PWc/Zy5mYWN0b3J5OmpmKGQpO2lmKG51bGwhPT1oKXJldHVybiBoO2lmKGQgaW5zdGFuY2VvZiB6ZSl0aHJvdyBuZXcgZW4oMjA0LCExKTtpZihkIGluc3RhbmNlb2YgRnVuY3Rpb24pcmV0dXJuIGZ1bmN0aW9uIEw5KGQpe2NvbnN0IGc9ZC5sZW5ndGg7aWYoZz4wKXRocm93''@;'; put 'put ''IG0zKGcsIj8iKSxuZXcgZW4oMjA0LCExKTtjb25zdCBoPWZ1bmN0aW9uIF9pKGQpe2NvbnN0IGc9ZCYmKGRbVTBdfHxkW1gwXSk7aWYoZyl7Y29uc3QgaD1mdW5jdGlvbiBvdShkKXtpZihkLmhhc093blByb3BlcnR5KCJuYW1lIikpcmV0dXJuIGQubmFtZTtjb25zdCBnPSgiIitkKS5tYXRj''@;'; put 'put ''aCgvXmZ1bmN0aW9uXHMqKFteXHMoXSspLyk7cmV0dXJuIG51bGw9PT1nPyIiOmdbMV19KGQpO3JldHVybiBjb25zb2xlLndhcm4oYERFUFJFQ0FURUQ6IERJIGlzIGluc3RhbnRpYXRpbmcgYSB0b2tlbiAiJHtofSIgdGhhdCBpbmhlcml0cyBpdHMgQEluamVjdGFibGUgZGVjb3JhdG9yIGJ1''@;'; put 'put ''dCBkb2VzIG5vdCBwcm92aWRlIG9uZSBpdHNlbGYuXG5UaGlzIHdpbGwgYmVjb21lIGFuIGVycm9yIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgQW5ndWxhci4gUGxlYXNlIGFkZCBASW5qZWN0YWJsZSgpIHRvIHRoZSAiJHtofSIgY2xhc3MuYCksZ31yZXR1cm4gbnVsbH0oZCk7cmV0dXJuIG51''@;'; put 'put ''bGwhPT1oPygpPT5oLmZhY3RvcnkoZCk6KCk9Pm5ldyBkfShkKTt0aHJvdyBuZXcgZW4oMjA0LCExKX1mdW5jdGlvbiBwRShkLGcsaCl7bGV0IHY7aWYoazMoZCkpe2NvbnN0IHk9R3QoZCk7cmV0dXJuIGpmKHkpfHxrZCh5KX1pZihEOShkKSl2PSgpPT5HdChkLnVzZVZhbHVlKTtlbHNlIGlm''@;'; put 'put ''KGZ1bmN0aW9uIGY2KGQpe3JldHVybiEoIWR8fCFkLnVzZUZhY3RvcnkpfShkKSl2PSgpPT5kLnVzZUZhY3RvcnkoLi4uYjkoZC5kZXBzfHxbXSkpO2Vsc2UgaWYoZnVuY3Rpb24gWDgoZCl7cmV0dXJuISghZHx8IWQudXNlRXhpc3RpbmcpfShkKSl2PSgpPT5DaShHdChkLnVzZUV4aXN0aW5n''@;'; put 'put ''KSk7ZWxzZXtjb25zdCB5PUd0KGQmJihkLnVzZUNsYXNzfHxkLnByb3ZpZGUpKTtpZighZnVuY3Rpb24gTzkoZCl7cmV0dXJuISFkLmRlcHN9KGQpKXJldHVybiBqZih5KXx8a2QoeSk7dj0oKT0+bmV3IHkoLi4uYjkoZC5kZXBzKSl9cmV0dXJuIHZ9ZnVuY3Rpb24gZDYoZCxnLGg9ITEpe3Jl''@;'; put 'put ''dHVybntmYWN0b3J5OmQsdmFsdWU6ZyxtdWx0aTpoP1tdOnZvaWQgMH19ZnVuY3Rpb24gbUUoZCl7cmV0dXJuISFkLlx1MDI3NXByb3ZpZGVyc31mdW5jdGlvbiB4MyhkLGcpe2Zvcihjb25zdCBoIG9mIGQpQXJyYXkuaXNBcnJheShoKT94MyhoLGcpOm1FKGgpP3gzKGguXHUwMjc1cHJvdmlk''@;'; put 'put ''ZXJzLGcpOmcoaCl9Y2xhc3MgdkV7fWNsYXNzIHlFe3Jlc29sdmVDb21wb25lbnRGYWN0b3J5KGcpe3Rocm93IGZ1bmN0aW9uIEdSKGQpe2NvbnN0IGc9RXJyb3IoYE5vIGNvbXBvbmVudCBmYWN0b3J5IGZvdW5kIGZvciAke21uKGQpfS4gRGlkIHlvdSBhZGQgaXQgdG8gQE5nTW9kdWxlLmVu''@;'; put 'put ''dHJ5Q29tcG9uZW50cz9gKTtyZXR1cm4gZy5uZ0NvbXBvbmVudD1kLGd9KGcpfX1sZXQgU2Q9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuTlVMTD1uZXcgeUUsZH0pKCk7ZnVuY3Rpb24gd0UoKXtyZXR1cm4gcDYoWHQoKSxQdCgpKX1mdW5jdGlvbiBwNihkLGcpe3JldHVybiBuZXcgYm8odmMo''@;'; put 'put ''ZCxnKSl9bGV0IGJvPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5uYXRpdmVFbGVtZW50PWh9fXJldHVybiBkLl9fTkdfRUxFTUVOVF9JRF9fPXdFLGR9KSgpO2Z1bmN0aW9uIFI5KGQpe3JldHVybiBkIGluc3RhbmNlb2YgYm8/ZC5uYXRpdmVFbGVtZW50OmR9Y2xhc3MgTWR7''@;'; put 'put ''fWxldCBHYT0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5fX05HX0VMRU1FTlRfSURfXz0oKT0+ZnVuY3Rpb24gWVIoKXtjb25zdCBkPVB0KCksaD1RdShYdCgpLmluZGV4LGQpO3JldHVybihUdShoKT9oOmQpWzExXX0oKSxkfSkoKSxiRT0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVw''@;'; put 'put ''cm92PUFpKHt0b2tlbjpkLHByb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9Pm51bGx9KSxkfSkoKTtjbGFzcyBQNHtjb25zdHJ1Y3RvcihnKXt0aGlzLmZ1bGw9Zyx0aGlzLm1ham9yPWcuc3BsaXQoIi4iKVswXSx0aGlzLm1pbm9yPWcuc3BsaXQoIi4iKVsxXSx0aGlzLnBhdGNoPWcuc3Bs''@;'; put 'put ''aXQoIi4iKS5zbGljZSgyKS5qb2luKCIuIil9fWNvbnN0IF9FPW5ldyBQNCgiMTQuMS4xIiksQjk9e307ZnVuY3Rpb24gU2IoZCl7cmV0dXJuIGQubmdPcmlnaW5hbEVycm9yfWNsYXNzIHY2e2NvbnN0cnVjdG9yKCl7dGhpcy5fY29uc29sZT1jb25zb2xlfWhhbmRsZUVycm9yKGcpe2NvbnN0''@;'; put 'put ''IGg9dGhpcy5fZmluZE9yaWdpbmFsRXJyb3IoZyk7dGhpcy5fY29uc29sZS5lcnJvcigiRVJST1IiLGcpLGgmJnRoaXMuX2NvbnNvbGUuZXJyb3IoIk9SSUdJTkFMIEVSUk9SIixoKX1fZmluZE9yaWdpbmFsRXJyb3IoZyl7bGV0IGg9ZyYmU2IoZyk7Zm9yKDtoJiZTYihoKTspaD1TYihoKTty''@;'; put 'put ''ZXR1cm4gaHx8bnVsbH19Y29uc3QgRWI9bmV3IE1hcDtsZXQgbkI9MDtjb25zdCBUYj0iX19uZ0NvbnRleHRfXyI7ZnVuY3Rpb24gcXUoZCxnKXtUdShnKT8oZFtUYl09Z1syMF0sZnVuY3Rpb24gaUIoZCl7RWIuc2V0KGRbMjBdLGQpfShnKSk6ZFtUYl09Z31mdW5jdGlvbiBibShkKXtjb25z''@;'; put 'put ''dCBnPWRbVGJdO3JldHVybiJudW1iZXIiPT10eXBlb2YgZz9mdW5jdGlvbiBvQihkKXtyZXR1cm4gRWIuZ2V0KGQpfHxudWxsfShnKTpnfHxudWxsfWZ1bmN0aW9uIEliKGQpe2NvbnN0IGc9Ym0oZCk7cmV0dXJuIGc/VHUoZyk/ZzpnLmxWaWV3Om51bGx9Y29uc3QgY0I9KCgpPT4oInVuZGVm''@;'; put 'put ''aW5lZCIhPXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUmJnJlcXVlc3RBbmltYXRpb25GcmFtZXx8c2V0VGltZW91dCkuYmluZChQbCkpKCk7ZnVuY3Rpb24gTGIoZCl7cmV0dXJuIGQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld31mdW5jdGlvbiBIbChkKXtyZXR1cm4gZC5vd25lckRv''@;'; put 'put ''Y3VtZW50fWZ1bmN0aW9uIGZCKGQpe3JldHVybiBkLm93bmVyRG9jdW1lbnQuYm9keX1mdW5jdGlvbiB5ZihkKXtyZXR1cm4gZCBpbnN0YW5jZW9mIEZ1bmN0aW9uP2QoKTpkfXZhciBmdT0oKCk9PigoZnU9ZnV8fHt9KVtmdS5JbXBvcnRhbnQ9MV09IkltcG9ydGFudCIsZnVbZnUuRGFzaENh''@;'; put 'put ''c2U9Ml09IkRhc2hDYXNlIixmdSkpKCk7ZnVuY3Rpb24gX20oZCxnKXtyZXR1cm4gdW5kZWZpbmVkKGQsZyl9ZnVuY3Rpb24gZTUoZCl7Y29uc3QgZz1kWzNdO3JldHVybiBzZihnKT9nWzNdOmd9ZnVuY3Rpb24gajkoZCl7cmV0dXJuIFBiKGRbMTNdKX1mdW5jdGlvbiBaOShkKXtyZXR1cm4g''@;'; put 'put ''UGIoZFs0XSl9ZnVuY3Rpb24gUGIoZCl7Zm9yKDtudWxsIT09ZCYmIXNmKGQpOylkPWRbNF07cmV0dXJuIGR9ZnVuY3Rpb24gQTYoZCxnLGgsdix5KXtpZihudWxsIT12KXtsZXQgQyxJPSExO3NmKHYpP0M9djpUdSh2KSYmKEk9ITAsdj12WzBdKTtjb25zdCBaPVgyKHYpOzA9PT1kJiZudWxs''@;'; put 'put ''IT09aD9udWxsPT15P3piKGcsaCxaKTpONChnLGgsWix5fHxudWxsLCEwKToxPT09ZCYmbnVsbCE9PWg/TjQoZyxoLFoseXx8bnVsbCwhMCk6Mj09PWQ/ZnVuY3Rpb24gSEUoZCxnLGgpe2NvbnN0IHY9Q20oZCxnKTt2JiZmdW5jdGlvbiBHOShkLGcsaCx2KXtkLnJlbW92ZUNoaWxkKGcsaCx2''@;'; put 'put ''KX0oZCx2LGcsaCl9KGcsWixJKTozPT09ZCYmZy5kZXN0cm95Tm9kZShaKSxudWxsIT1DJiZmdW5jdGlvbiBVOShkLGcsaCx2LHkpe2NvbnN0IEM9aFs3XTtDIT09WDIoaCkmJkE2KGcsZCx2LEMseSk7Zm9yKGxldCBaPTEwO1o8aC5sZW5ndGg7WisrKXtjb25zdCB1ZT1oW1pdO2ttKHVlWzFd''@;'; put 'put ''LHVlLGQsZyx2LEMpfX0oZyxkLEMsaCx5KX19ZnVuY3Rpb24gdDUoZCxnLGgpe3JldHVybiBkLmNyZWF0ZUVsZW1lbnQoZyxoKX1mdW5jdGlvbiBSRShkLGcpe2NvbnN0IGg9ZFs5XSx2PWguaW5kZXhPZihnKSx5PWdbM107NTEyJmdbMl0mJihnWzJdJj0tNTEzLHZkKHksLTEpKSxoLnNwbGlj''@;'; put 'put ''ZSh2LDEpfWZ1bmN0aW9uIE5iKGQsZyl7aWYoZC5sZW5ndGg8PTEwKXJldHVybjtjb25zdCBoPTEwK2csdj1kW2hdO2lmKHYpe2NvbnN0IHk9dlsxN107bnVsbCE9PXkmJnkhPT1kJiZSRSh5LHYpLGc+MCYmKGRbaC0xXVs0XT12WzRdKTtjb25zdCBDPUNkKGQsMTArZyk7IWZ1bmN0aW9uIHc2''@;'; put 'put ''KGQsZyl7a20oZCxnLGdbMTFdLDIsbnVsbCxudWxsKSxnWzBdPW51bGwsZ1s2XT1udWxsfSh2WzFdLHYpO2NvbnN0IEk9Q1sxOV07bnVsbCE9PUkmJkkuZGV0YWNoVmlldyhDWzFdKSx2WzNdPW51bGwsdls0XT1udWxsLHZbMl0mPS02NX1yZXR1cm4gdn1mdW5jdGlvbiBCRShkLGcpe2lmKCEo''@;'; put 'put ''MTI4JmdbMl0pKXtjb25zdCBoPWdbMTFdO2guZGVzdHJveU5vZGUmJmttKGQsZyxoLDMsbnVsbCxudWxsKSxmdW5jdGlvbiBvRyhkKXtsZXQgZz1kWzEzXTtpZighZylyZXR1cm4gejkoZFsxXSxkKTtmb3IoO2c7KXtsZXQgaD1udWxsO2lmKFR1KGcpKWg9Z1sxM107ZWxzZXtjb25zdCB2PWdb''@;'; put 'put ''MTBdO3YmJihoPXYpfWlmKCFoKXtmb3IoO2cmJiFnWzRdJiZnIT09ZDspVHUoZykmJno5KGdbMV0sZyksZz1nWzNdO251bGw9PT1nJiYoZz1kKSxUdShnKSYmejkoZ1sxXSxnKSxoPWcmJmdbNF19Zz1ofX0oZyl9fWZ1bmN0aW9uIHo5KGQsZyl7aWYoISgxMjgmZ1syXSkpe2dbMl0mPS02NSxn''@;'; put 'put ''WzJdfD0xMjgsZnVuY3Rpb24gcEIoZCxnKXtsZXQgaDtpZihudWxsIT1kJiZudWxsIT0oaD1kLmRlc3Ryb3lIb29rcykpZm9yKGxldCB2PTA7djxoLmxlbmd0aDt2Kz0yKXtjb25zdCB5PWdbaFt2XV07aWYoISh5IGluc3RhbmNlb2Ygd2QpKXtjb25zdCBDPWhbdisxXTtpZihBcnJheS5pc0Fy''@;'; put 'put ''cmF5KEMpKWZvcihsZXQgST0wO0k8Qy5sZW5ndGg7SSs9Mil7Y29uc3QgWj15W0NbSV1dLHVlPUNbSSsxXTt0cnl7dWUuY2FsbChaKX1maW5hbGx5e319ZWxzZSB0cnl7Qy5jYWxsKHkpfWZpbmFsbHl7fX19fShkLGcpLGZ1bmN0aW9uIFZiKGQsZyl7Y29uc3QgaD1kLmNsZWFudXAsdj1nWzdd''@;'; put 'put ''O2xldCB5PS0xO2lmKG51bGwhPT1oKWZvcihsZXQgQz0wO0M8aC5sZW5ndGgtMTtDKz0yKWlmKCJzdHJpbmciPT10eXBlb2YgaFtDXSl7Y29uc3QgST1oW0MrMV0sWj0iZnVuY3Rpb24iPT10eXBlb2YgST9JKGcpOlgyKGdbSV0pLHVlPXZbeT1oW0MrMl1dLF9lPWhbQyszXTsiYm9vbGVhbiI9''@;'; put 'put ''PXR5cGVvZiBfZT9aLnJlbW92ZUV2ZW50TGlzdGVuZXIoaFtDXSx1ZSxfZSk6X2U+PTA/dlt5PV9lXSgpOnZbeT0tX2VdLnVuc3Vic2NyaWJlKCksQys9Mn1lbHNle2NvbnN0IEk9dlt5PWhbQysxXV07aFtDXS5jYWxsKEkpfWlmKG51bGwhPT12KXtmb3IobGV0IEM9eSsxO0M8di5sZW5ndGg7''@;'; put 'put ''QysrKSgwLHZbQ10pKCk7Z1s3XT1udWxsfX0oZCxnKSwxPT09Z1sxXS50eXBlJiZnWzExXS5kZXN0cm95KCk7Y29uc3QgaD1nWzE3XTtpZihudWxsIT09aCYmc2YoZ1szXSkpe2ghPT1nWzNdJiZSRShoLGcpO2NvbnN0IHY9Z1sxOV07bnVsbCE9PXYmJnYuZGV0YWNoVmlldyhkKX0hZnVuY3Rp''@;'; put 'put ''b24gTUUoZCl7RWIuZGVsZXRlKGRbMjBdKX0oZyl9fWZ1bmN0aW9uIGpiKGQsZyxoKXtyZXR1cm4gZnVuY3Rpb24gWmIoZCxnLGgpe2xldCB2PWc7Zm9yKDtudWxsIT09diYmNDAmdi50eXBlOyl2PShnPXYpLnBhcmVudDtpZihudWxsPT09dilyZXR1cm4gaFswXTtpZigyJnYuZmxhZ3Mpe2Nv''@;'; put 'put ''bnN0IHk9ZC5kYXRhW3YuZGlyZWN0aXZlU3RhcnRdLmVuY2Fwc3VsYXRpb247aWYoeT09PXgyLk5vbmV8fHk9PT14Mi5FbXVsYXRlZClyZXR1cm4gbnVsbH1yZXR1cm4gdmModixoKX0oZCxnLnBhcmVudCxoKX1mdW5jdGlvbiBONChkLGcsaCx2LHkpe2QuaW5zZXJ0QmVmb3JlKGcsaCx2LHkp''@;'; put 'put ''fWZ1bmN0aW9uIHpiKGQsZyxoKXtkLmFwcGVuZENoaWxkKGcsaCl9ZnVuY3Rpb24gR2IoZCxnLGgsdix5KXtudWxsIT09dj9ONChkLGcsaCx2LHkpOnpiKGQsZyxoKX1mdW5jdGlvbiBDbShkLGcpe3JldHVybiBkLnBhcmVudE5vZGUoZyl9ZnVuY3Rpb24gUEUoZCxnLGgpe3JldHVybiBXYihk''@;'; put 'put ''LGcsaCl9bGV0IFdiPWZ1bmN0aW9uIGI2KGQsZyxoKXtyZXR1cm4gNDAmZC50eXBlP3ZjKGQsaCk6bnVsbH07ZnVuY3Rpb24gYmYoZCxnLGgsdil7Y29uc3QgeT1qYihkLHYsZyksQz1nWzExXSxaPVBFKHYucGFyZW50fHxnWzZdLHYsZyk7aWYobnVsbCE9eSlpZihBcnJheS5pc0FycmF5KGgp''@;'; put 'put ''KWZvcihsZXQgdWU9MDt1ZTxoLmxlbmd0aDt1ZSsrKUdiKEMseSxoW3VlXSxaLCExKTtlbHNlIEdiKEMseSxoLFosITEpfWZ1bmN0aW9uIEloKGQsZyl7aWYobnVsbCE9PWcpe2NvbnN0IGg9Zy50eXBlO2lmKDMmaClyZXR1cm4gdmMoZyxkKTtpZig0JmgpcmV0dXJuIFViKC0xLGRbZy5pbmRl''@;'; put 'put ''eF0pO2lmKDgmaCl7Y29uc3Qgdj1nLmNoaWxkO2lmKG51bGwhPT12KXJldHVybiBJaChkLHYpO3tjb25zdCB5PWRbZy5pbmRleF07cmV0dXJuIHNmKHkpP1ViKC0xLHkpOlgyKHkpfX1pZigzMiZoKXJldHVybiBfbShnLGQpKCl8fFgyKGRbZy5pbmRleF0pO3tjb25zdCB2PVliKGQsZyk7cmV0''@;'; put 'put ''dXJuIG51bGwhPT12P0FycmF5LmlzQXJyYXkodik/dlswXTpJaChlNShkWzE2XSksdik6SWgoZCxnLm5leHQpfX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBZYihkLGcpe3JldHVybiBudWxsIT09Zz9kWzE2XVs2XS5wcm9qZWN0aW9uW2cucHJvamVjdGlvbl06bnVsbH1mdW5jdGlvbiBVYihkLGcp''@;'; put 'put ''e2NvbnN0IGg9MTArZCsxO2lmKGg8Zy5sZW5ndGgpe2NvbnN0IHY9Z1toXSx5PXZbMV0uZmlyc3RDaGlsZDtpZihudWxsIT09eSlyZXR1cm4gSWgodix5KX1yZXR1cm4gZ1s3XX1mdW5jdGlvbiBRYihkLGcsaCx2LHksQyxJKXtmb3IoO251bGwhPWg7KXtjb25zdCBaPXZbaC5pbmRleF0sdWU9''@;'; put 'put ''aC50eXBlO2lmKEkmJjA9PT1nJiYoWiYmcXUoWDIoWiksdiksaC5mbGFnc3w9NCksNjQhPSg2NCZoLmZsYWdzKSlpZig4JnVlKVFiKGQsZyxoLmNoaWxkLHYseSxDLCExKSxBNihnLGQseSxaLEMpO2Vsc2UgaWYoMzImdWUpe2NvbnN0IF9lPV9tKGgsdik7bGV0IEJlO2Zvcig7QmU9X2UoKTsp''@;'; put 'put ''QTYoZyxkLHksQmUsQyk7QTYoZyxkLHksWixDKX1lbHNlIDE2JnVlP05FKGQsZyx2LGgseSxDKTpBNihnLGQseSxaLEMpO2g9ST9oLnByb2plY3Rpb25OZXh0OmgubmV4dH19ZnVuY3Rpb24ga20oZCxnLGgsdix5LEMpe1FiKGgsdixkLmZpcnN0Q2hpbGQsZyx5LEMsITEpfWZ1bmN0aW9uIE5F''@;'; put 'put ''KGQsZyxoLHYseSxDKXtjb25zdCBJPWhbMTZdLHVlPUlbNl0ucHJvamVjdGlvblt2LnByb2plY3Rpb25dO2lmKEFycmF5LmlzQXJyYXkodWUpKWZvcihsZXQgX2U9MDtfZTx1ZS5sZW5ndGg7X2UrKylBNihnLGQseSx1ZVtfZV0sQyk7ZWxzZSBRYihkLGcsdWUsSVszXSx5LEMsITApfWZ1bmN0''@;'; put 'put ''aW9uIEpiKGQsZyxoKXtkLnNldEF0dHJpYnV0ZShnLCJzdHlsZSIsaCl9ZnVuY3Rpb24gRDMoZCxnLGgpeyIiPT09aD9kLnJlbW92ZUF0dHJpYnV0ZShnLCJjbGFzcyIpOmQuc2V0QXR0cmlidXRlKGcsImNsYXNzIixoKX1mdW5jdGlvbiBTbShkLGcsaCl7bGV0IHY9ZC5sZW5ndGg7Zm9yKDs7''@;'; put 'put ''KXtjb25zdCB5PWQuaW5kZXhPZihnLGgpO2lmKC0xPT09eSlyZXR1cm4geTtpZigwPT09eXx8ZC5jaGFyQ29kZUF0KHktMSk8PTMyKXtjb25zdCBDPWcubGVuZ3RoO2lmKHkrQz09PXZ8fGQuY2hhckNvZGVBdCh5K0MpPD0zMilyZXR1cm4geX1oPXkrMX19Y29uc3QgUTk9Im5nLXRlbXBsYXRl''@;'; put 'put ''IjtmdW5jdGlvbiBWNChkLGcsaCl7bGV0IHY9MDtmb3IoO3Y8ZC5sZW5ndGg7KXtsZXQgeT1kW3YrK107aWYoaCYmImNsYXNzIj09PXkpe2lmKHk9ZFt2XSwtMSE9PVNtKHkudG9Mb3dlckNhc2UoKSxnLDApKXJldHVybiEwfWVsc2UgaWYoMT09PXkpe2Zvcig7djxkLmxlbmd0aCYmInN0cmlu''@;'; put 'put ''ZyI9PXR5cGVvZih5PWRbdisrXSk7KWlmKHkudG9Mb3dlckNhc2UoKT09PWcpcmV0dXJuITA7cmV0dXJuITF9fXJldHVybiExfWZ1bmN0aW9uIHhkKGQpe3JldHVybiA0PT09ZC50eXBlJiZkLnZhbHVlIT09UTl9ZnVuY3Rpb24gWGIoZCxnLGgpe3JldHVybiBnPT09KDQhPT1kLnR5cGV8fGg/''@;'; put 'put ''ZC52YWx1ZTpROSl9ZnVuY3Rpb24gYjEoZCxnLGgpe2xldCB2PTQ7Y29uc3QgeT1kLmF0dHJzfHxbXSxDPWZ1bmN0aW9uIGpFKGQpe2ZvcihsZXQgZz0wO2c8ZC5sZW5ndGg7ZysrKWlmKHNzKGRbZ10pKXJldHVybiBnO3JldHVybiBkLmxlbmd0aH0oeSk7bGV0IEk9ITE7Zm9yKGxldCBaPTA7''@;'; put 'put ''WjxnLmxlbmd0aDtaKyspe2NvbnN0IHVlPWdbWl07aWYoIm51bWJlciIhPXR5cGVvZiB1ZSl7aWYoIUkpaWYoNCZ2KXtpZih2PTJ8MSZ2LCIiIT09dWUmJiFYYihkLHVlLGgpfHwiIj09PXVlJiYxPT09Zy5sZW5ndGgpe2lmKGh1KHYpKXJldHVybiExO0k9ITB9fWVsc2V7Y29uc3QgX2U9OCZ2''@;'; put 'put ''P3VlOmdbKytaXTtpZig4JnYmJm51bGwhPT1kLmF0dHJzKXtpZighVjQoZC5hdHRycyxfZSxoKSl7aWYoaHUodikpcmV0dXJuITE7ST0hMH1jb250aW51ZX1jb25zdCBOZT1NbSg4JnY/ImNsYXNzIjp1ZSx5LHhkKGQpLGgpO2lmKC0xPT09TmUpe2lmKGh1KHYpKXJldHVybiExO0k9ITA7Y29u''@;'; put 'put ''dGludWV9aWYoIiIhPT1fZSl7bGV0IEtlO0tlPU5lPkM/IiI6eVtOZSsxXS50b0xvd2VyQ2FzZSgpO2NvbnN0IHB0PTgmdj9LZTpudWxsO2lmKHB0JiYtMSE9PVNtKHB0LF9lLDApfHwyJnYmJl9lIT09S2Upe2lmKGh1KHYpKXJldHVybiExO0k9ITB9fX19ZWxzZXtpZighSSYmIWh1KHYpJiYh''@;'; put 'put ''aHUodWUpKXJldHVybiExO2lmKEkmJmh1KHVlKSljb250aW51ZTtJPSExLHY9dWV8MSZ2fX1yZXR1cm4gaHUodil8fEl9ZnVuY3Rpb24gaHUoZCl7cmV0dXJuIDA9PSgxJmQpfWZ1bmN0aW9uIE1tKGQsZyxoLHYpe2lmKG51bGw9PT1nKXJldHVybi0xO2xldCB5PTA7aWYodnx8IWgpe2xldCBD''@;'; put 'put ''PSExO2Zvcig7eTxnLmxlbmd0aDspe2NvbnN0IEk9Z1t5XTtpZihJPT09ZClyZXR1cm4geTtpZigzPT09SXx8Nj09PUkpQz0hMDtlbHNle2lmKDE9PT1JfHwyPT09SSl7bGV0IFo9Z1srK3ldO2Zvcig7InN0cmluZyI9PXR5cGVvZiBaOylaPWdbKyt5XTtjb250aW51ZX1pZig0PT09SSlicmVh''@;'; put 'put ''aztpZigwPT09SSl7eSs9NDtjb250aW51ZX19eSs9Qz8xOjJ9cmV0dXJuLTF9cmV0dXJuIGZ1bmN0aW9uIFpFKGQsZyl7bGV0IGg9ZC5pbmRleE9mKDQpO2lmKGg+LTEpZm9yKGgrKztoPGQubGVuZ3RoOyl7Y29uc3Qgdj1kW2hdO2lmKCJudW1iZXIiPT10eXBlb2YgdilyZXR1cm4tMTtpZih2''@;'; put 'put ''PT09ZylyZXR1cm4gaDtoKyt9cmV0dXJuLTF9KGcsZCl9ZnVuY3Rpb24gS2IoZCxnLGg9ITEpe2ZvcihsZXQgdj0wO3Y8Zy5sZW5ndGg7disrKWlmKGIxKGQsZ1t2XSxoKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiB5QihkLGcpe2U6Zm9yKGxldCBoPTA7aDxnLmxlbmd0aDtoKyspe2Nv''@;'; put 'put ''bnN0IHY9Z1toXTtpZihkLmxlbmd0aD09PXYubGVuZ3RoKXtmb3IobGV0IHk9MDt5PGQubGVuZ3RoO3krKylpZihkW3ldIT09dlt5XSljb250aW51ZSBlO3JldHVybiEwfX1yZXR1cm4hMX1mdW5jdGlvbiB6RShkLGcpe3JldHVybiBkPyI6bm90KCIrZy50cmltKCkrIikiOmd9ZnVuY3Rpb24g''@;'; put 'put ''d0IoZCl7bGV0IGc9ZFswXSxoPTEsdj0yLHk9IiIsQz0hMTtmb3IoO2g8ZC5sZW5ndGg7KXtsZXQgST1kW2hdO2lmKCJzdHJpbmciPT10eXBlb2YgSSlpZigyJnYpe2NvbnN0IFo9ZFsrK2hdO3krPSJbIitJKyhaLmxlbmd0aD4wPyc9IicrWisnIic6IiIpKyJdIn1lbHNlIDgmdj95Kz0iLiIr''@;'; put 'put ''STo0JnYmJih5Kz0iICIrSSk7ZWxzZSIiIT09eSYmIWh1KEkpJiYoZys9ekUoQyx5KSx5PSIiKSx2PUksQz1DfHwhaHUodik7aCsrfXJldHVybiIiIT09eSYmKGcrPXpFKEMseSkpLGd9Y29uc3QgTmE9e307ZnVuY3Rpb24gdXQoZCl7JGIoZmUoKSxQdCgpLFVsKCkrZCwhMSl9ZnVuY3Rpb24g''@;'; put 'put ''JGIoZCxnLGgsdil7aWYoIXYpaWYoMz09KDMmZ1syXSkpe2NvbnN0IEM9ZC5wcmVPcmRlckNoZWNrSG9va3M7bnVsbCE9PUMmJnlkKGcsQyxoKX1lbHNle2NvbnN0IEM9ZC5wcmVPcmRlckhvb2tzO251bGwhPT1DJiZLcChnLEMsMCxoKX16ZihoKX1mdW5jdGlvbiBRRShkLGc9bnVsbCxoPW51''@;'; put 'put ''bGwsdil7Y29uc3QgeT1uNShkLGcsaCx2KTtyZXR1cm4geS5yZXNvbHZlSW5qZWN0b3JJbml0aWFsaXplcnMoKSx5fWZ1bmN0aW9uIG41KGQsZz1udWxsLGg9bnVsbCx2LHk9bmV3IFNldCl7Y29uc3QgQz1baHx8WjAsVGgoZCldO3JldHVybiB2PXZ8fCgib2JqZWN0Ij09dHlwZW9mIGQ/dm9p''@;'; put 'put ''ZCAwOm1uKGQpKSxuZXcga2IoQyxnfHxNMygpLHZ8fG51bGwseSl9bGV0IFNzPSgoKT0+e2NsYXNzIGR7c3RhdGljIGNyZWF0ZShoLHYpe3ZhciB5O2lmKEFycmF5LmlzQXJyYXkoaCkpcmV0dXJuIFFFKHtuYW1lOiIifSx2LGgsIiIpO3tjb25zdCBDPW51bGwhPT0oeT1oLm5hbWUpJiZ2b2lk''@;'; put 'put ''IDAhPT15P3k6IiI7cmV0dXJuIFFFKHtuYW1lOkN9LGgucGFyZW50LGgucHJvdmlkZXJzLEMpfX19cmV0dXJuIGQuVEhST1dfSUZfTk9UX0ZPVU5EPUg4LGQuTlVMTD1uZXcgUjQsZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLHByb3ZpZGVkSW46ImFueSIsZmFjdG9yeTooKT0+Q2koeWMpfSks''@;'; put 'put ''ZC5fX05HX0VMRU1FTlRfSURfXz0tMSxkfSkoKTtmdW5jdGlvbiBLdChkLGc9ajAuRGVmYXVsdCl7Y29uc3QgaD1QdCgpO3JldHVybiBudWxsPT09aD9DaShkLGcpOnRtKFh0KCksaCxHdChkKSxnKX1mdW5jdGlvbiBLOSgpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCIpfWZ1bmN0aW9uICQ5''@;'; put 'put ''KGQsZyl7cmV0dXJuIGQ8PDE3fGc8PDJ9ZnVuY3Rpb24gRGgoZCl7cmV0dXJuIGQ+PjE3JjMyNzY3fWZ1bmN0aW9uIGlfKGQpe3JldHVybiAyfGR9ZnVuY3Rpb24gRGQoZCl7cmV0dXJuKDEzMTA2OCZkKT4+Mn1mdW5jdGlvbiBfNihkLGcpe3JldHVybi0xMzEwNjkmZHxnPDwyfWZ1bmN0aW9u''@;'; put 'put ''IGE1KGQpe3JldHVybiAxfGR9ZnVuY3Rpb24gVWMoZCxnKXtjb25zdCBoPWQuY29udGVudFF1ZXJpZXM7aWYobnVsbCE9PWgpZm9yKGxldCB2PTA7djxoLmxlbmd0aDt2Kz0yKXtjb25zdCB5PWhbdl0sQz1oW3YrMV07aWYoLTEhPT1DKXtjb25zdCBJPWQuZGF0YVtDXTtEbih5KSxJLmNvbnRl''@;'; put 'put ''bnRRdWVyaWVzKDIsZ1tDXSxDKX19fWZ1bmN0aW9uIGs2KGQsZyxoLHYseSxDLEksWix1ZSxfZSxCZSl7Y29uc3QgTmU9Zy5ibHVlcHJpbnQuc2xpY2UoKTtyZXR1cm4gTmVbMF09eSxOZVsyXT03Nnx2LChudWxsIT09QmV8fGQmJjEwMjQmZFsyXSkmJihOZVsyXXw9MTAyNCksX2goTmUpLE5l''@;'; put 'put ''WzNdPU5lWzE1XT1kLE5lWzhdPWgsTmVbMTBdPUl8fGQmJmRbMTBdLE5lWzExXT1afHxkJiZkWzExXSxOZVsxMl09dWV8fGQmJmRbMTJdfHxudWxsLE5lWzldPV9lfHxkJiZkWzldfHxudWxsLE5lWzZdPUMsTmVbMjBdPWZ1bmN0aW9uIHJCKCl7cmV0dXJuIG5CKyt9KCksTmVbMjFdPUJlLE5l''@;'; put 'put ''WzE2XT0yPT1nLnR5cGU/ZFsxNl06TmUsTmV9ZnVuY3Rpb24gUzYoZCxnLGgsdix5KXtsZXQgQz1kLmRhdGFbZ107aWYobnVsbD09PUMpQz1mdW5jdGlvbiBSZChkLGcsaCx2LHkpe2NvbnN0IEM9aHIoKSxJPV8oKSx1ZT1kLmRhdGFbZ109ZnVuY3Rpb24gQV8oZCxnLGgsdix5LEMpe3JldHVy''@;'; put 'put ''bnt0eXBlOmgsaW5kZXg6dixpbnNlcnRCZWZvcmVJbmRleDpudWxsLGluamVjdG9ySW5kZXg6Zz9nLmluamVjdG9ySW5kZXg6LTEsZGlyZWN0aXZlU3RhcnQ6LTEsZGlyZWN0aXZlRW5kOi0xLGRpcmVjdGl2ZVN0eWxpbmdMYXN0Oi0xLHByb3BlcnR5QmluZGluZ3M6bnVsbCxmbGFnczowLHBy''@;'; put 'put ''b3ZpZGVySW5kZXhlczowLHZhbHVlOnksYXR0cnM6QyxtZXJnZWRBdHRyczpudWxsLGxvY2FsTmFtZXM6bnVsbCxpbml0aWFsSW5wdXRzOnZvaWQgMCxpbnB1dHM6bnVsbCxvdXRwdXRzOm51bGwsdFZpZXdzOm51bGwsbmV4dDpudWxsLHByb2plY3Rpb25OZXh0Om51bGwsY2hpbGQ6bnVsbCxw''@;'; put 'put ''YXJlbnQ6Zyxwcm9qZWN0aW9uOm51bGwsc3R5bGVzOm51bGwsc3R5bGVzV2l0aG91dEhvc3Q6bnVsbCxyZXNpZHVhbFN0eWxlczp2b2lkIDAsY2xhc3NlczpudWxsLGNsYXNzZXNXaXRob3V0SG9zdDpudWxsLHJlc2lkdWFsQ2xhc3Nlczp2b2lkIDAsY2xhc3NCaW5kaW5nczowLHN0eWxlQmlu''@;'; put 'put ''ZGluZ3M6MH19KDAsST9DOkMmJkMucGFyZW50LGgsZyx2LHkpO3JldHVybiBudWxsPT09ZC5maXJzdENoaWxkJiYoZC5maXJzdENoaWxkPXVlKSxudWxsIT09QyYmKEk/bnVsbD09Qy5jaGlsZCYmbnVsbCE9PXVlLnBhcmVudCYmKEMuY2hpbGQ9dWUpOm51bGw9PT1DLm5leHQmJihDLm5leHQ9''@;'; put 'put ''dWUpKSx1ZX0oZCxnLGgsdix5KSxmdW5jdGlvbiBqYygpe3JldHVybiBDYS5sRnJhbWUuaW5JMThufSgpJiYoQy5mbGFnc3w9NjQpO2Vsc2UgaWYoNjQmQy50eXBlKXtDLnR5cGU9aCxDLnZhbHVlPXYsQy5hdHRycz15O2NvbnN0IEk9ZnVuY3Rpb24gUGkoKXtjb25zdCBkPUNhLmxGcmFtZSxn''@;'; put 'put ''PWQuY3VycmVudFROb2RlO3JldHVybiBkLmlzUGFyZW50P2c6Zy5wYXJlbnR9KCk7Qy5pbmplY3RvckluZGV4PW51bGw9PT1JPy0xOkkuaW5qZWN0b3JJbmRleH1yZXR1cm4gam4oQywhMCksQ31mdW5jdGlvbiBoNShkLGcsaCx2KXtpZigwPT09aClyZXR1cm4tMTtjb25zdCB5PWcubGVuZ3Ro''@;'; put 'put ''O2ZvcihsZXQgQz0wO0M8aDtDKyspZy5wdXNoKHYpLGQuYmx1ZXByaW50LnB1c2godiksZC5kYXRhLnB1c2gobnVsbCk7cmV0dXJuIHl9ZnVuY3Rpb24gejQoZCxnLGgpe0QwKGcpO3RyeXtjb25zdCB2PWQudmlld1F1ZXJ5O251bGwhPT12JiZQbSgxLHYsaCk7Y29uc3QgeT1kLnRlbXBsYXRl''@;'; put 'put ''O251bGwhPT15JiZvQShkLGcseSwxLGgpLGQuZmlyc3RDcmVhdGVQYXNzJiYoZC5maXJzdENyZWF0ZVBhc3M9ITEpLGQuc3RhdGljQ29udGVudFF1ZXJpZXMmJlVjKGQsZyksZC5zdGF0aWNWaWV3UXVlcmllcyYmUG0oMixkLnZpZXdRdWVyeSxoKTtjb25zdCBDPWQuY29tcG9uZW50cztudWxs''@;'; put 'put ''IT09QyYmZnVuY3Rpb24gQzYoZCxnKXtmb3IobGV0IGg9MDtoPGcubGVuZ3RoO2grKylkQShkLGdbaF0pfShnLEMpfWNhdGNoKHYpe3Rocm93IGQuZmlyc3RDcmVhdGVQYXNzJiYoZC5pbmNvbXBsZXRlRmlyc3RQYXNzPSEwLGQuZmlyc3RDcmVhdGVQYXNzPSExKSx2fWZpbmFsbHl7Z1syXSY9''@;'; put 'put ''LTUsSnAoKX19ZnVuY3Rpb24gWTEoZCxnLGgsdil7Y29uc3QgeT1nWzJdO2lmKDEyOCE9KDEyOCZ5KSl7RDAoZyk7dHJ5e19oKGcpLGZ1bmN0aW9uIHhuKGQpe3JldHVybiBDYS5sRnJhbWUuYmluZGluZ0luZGV4PWR9KGQuYmluZGluZ1N0YXJ0SW5kZXgpLG51bGwhPT1oJiZvQShkLGcsaCwy''@;'; put 'put ''LHYpO2NvbnN0IEk9Mz09KDMmeSk7aWYoSSl7Y29uc3QgX2U9ZC5wcmVPcmRlckNoZWNrSG9va3M7bnVsbCE9PV9lJiZ5ZChnLF9lLG51bGwpfWVsc2V7Y29uc3QgX2U9ZC5wcmVPcmRlckhvb2tzO251bGwhPT1fZSYmS3AoZyxfZSwwLG51bGwpLGZmKGcsMCl9aWYoZnVuY3Rpb24gZngoZCl7''@;'; put 'put ''Zm9yKGxldCBnPWo5KGQpO251bGwhPT1nO2c9WjkoZykpe2lmKCFnWzJdKWNvbnRpbnVlO2NvbnN0IGg9Z1s5XTtmb3IobGV0IHY9MDt2PGgubGVuZ3RoO3YrKyl7Y29uc3QgeT1oW3ZdLEM9eVszXTswPT0oNTEyJnlbMl0pJiZ2ZChDLDEpLHlbMl18PTUxMn19fShnKSxmdW5jdGlvbiBVQihk''@;'; put 'put ''KXtmb3IobGV0IGc9ajkoZCk7bnVsbCE9PWc7Zz1aOShnKSlmb3IobGV0IGg9MTA7aDxnLmxlbmd0aDtoKyspe2NvbnN0IHY9Z1toXSx5PXZbMV07dXUodikmJlkxKHksdix5LnRlbXBsYXRlLHZbOF0pfX0oZyksbnVsbCE9PWQuY29udGVudFF1ZXJpZXMmJlVjKGQsZyksSSl7Y29uc3QgX2U9''@;'; put 'put ''ZC5jb250ZW50Q2hlY2tIb29rcztudWxsIT09X2UmJnlkKGcsX2UpfWVsc2V7Y29uc3QgX2U9ZC5jb250ZW50SG9va3M7bnVsbCE9PV9lJiZLcChnLF9lLDEpLGZmKGcsMSl9IWZ1bmN0aW9uIE9kKGQsZyl7Y29uc3QgaD1kLmhvc3RCaW5kaW5nT3BDb2RlcztpZihudWxsIT09aCl0cnl7Zm9y''@;'; put 'put ''KGxldCB2PTA7djxoLmxlbmd0aDt2Kyspe2NvbnN0IHk9aFt2XTtpZih5PDApemYofnkpO2Vsc2V7Y29uc3QgQz15LEk9aFsrK3ZdLFo9aFsrK3ZdO0JNKEksQyksWigyLGdbQ10pfX19ZmluYWxseXt6ZigtMSl9fShkLGcpO2NvbnN0IFo9ZC5jb21wb25lbnRzO251bGwhPT1aJiZmdW5jdGlv''@;'; put 'put ''biBmNShkLGcpe2ZvcihsZXQgaD0wO2g8Zy5sZW5ndGg7aCsrKWh4KGQsZ1toXSl9KGcsWik7Y29uc3QgdWU9ZC52aWV3UXVlcnk7aWYobnVsbCE9PXVlJiZQbSgyLHVlLHYpLEkpe2NvbnN0IF9lPWQudmlld0NoZWNrSG9va3M7bnVsbCE9PV9lJiZ5ZChnLF9lKX1lbHNle2NvbnN0IF9lPWQu''@;'; put 'put ''dmlld0hvb2tzO251bGwhPT1fZSYmS3AoZyxfZSwyKSxmZihnLDIpfSEwPT09ZC5maXJzdFVwZGF0ZVBhc3MmJihkLmZpcnN0VXBkYXRlUGFzcz0hMSksZ1syXSY9LTQxLDUxMiZnWzJdJiYoZ1syXSY9LTUxMyx2ZChnWzNdLC0xKSl9ZmluYWxseXtKcCgpfX19ZnVuY3Rpb24gZDUoZCxnLGgs''@;'; put 'put ''dil7Y29uc3QgeT1nWzEwXSxJPUtnKGcpO3RyeXshSSYmeS5iZWdpbiYmeS5iZWdpbigpLEkmJno0KGQsZyx2KSxZMShkLGcsaCx2KX1maW5hbGx5eyFJJiZ5LmVuZCYmeS5lbmQoKX19ZnVuY3Rpb24gb0EoZCxnLGgsdix5KXtjb25zdCBDPVVsKCksST0yJnY7dHJ5e3pmKC0xKSxJJiZnLmxl''@;'; put 'put ''bmd0aD4yMiYmJGIoZCxnLDIyLCExKSxoKHYseSl9ZmluYWxseXt6ZihDKX19ZnVuY3Rpb24gZF8oZCxnLGgpe2lmKEtvKGcpKXtjb25zdCB5PWcuZGlyZWN0aXZlRW5kO2ZvcihsZXQgQz1nLmRpcmVjdGl2ZVN0YXJ0O0M8eTtDKyspe2NvbnN0IEk9ZC5kYXRhW0NdO0kuY29udGVudFF1ZXJp''@;'; put 'put ''ZXMmJkkuY29udGVudFF1ZXJpZXMoMSxoW0NdLEMpfX19ZnVuY3Rpb24gcF8oZCxnLGgpeyFSTSgpfHwoZnVuY3Rpb24gdXgoZCxnLGgsdil7Y29uc3QgeT1oLmRpcmVjdGl2ZVN0YXJ0LEM9aC5kaXJlY3RpdmVFbmQ7ZC5maXJzdENyZWF0ZVBhc3N8fGU2KGgsZykscXUodixnKTtjb25zdCBJ''@;'; put 'put ''PWguaW5pdGlhbElucHV0cztmb3IobGV0IFo9eTtaPEM7WisrKXtjb25zdCB1ZT1kLmRhdGFbWl0sX2U9VmYodWUpO19lJiZmQShnLGgsdWUpO2NvbnN0IEJlPVQ0KGcsZCxaLGgpO3F1KEJlLGcpLG51bGwhPT1JJiZfXygwLFoteSxCZSx1ZSwwLEkpLF9lJiYoUXUoaC5pbmRleCxnKVs4XT1C''@;'; put 'put ''ZSl9fShkLGcsaCx2YyhoLGcpKSwxMjg9PSgxMjgmaC5mbGFncykmJmZ1bmN0aW9uIGIyKGQsZyxoKXtjb25zdCB2PWguZGlyZWN0aXZlU3RhcnQseT1oLmRpcmVjdGl2ZUVuZCxDPWguaW5kZXgsST1mdW5jdGlvbiBQTSgpe3JldHVybiBDYS5sRnJhbWUuY3VycmVudERpcmVjdGl2ZUluZGV4''@;'; put 'put ''fSgpO3RyeXt6ZihDKTtmb3IobGV0IFo9djtaPHk7WisrKXtjb25zdCB1ZT1kLmRhdGFbWl0sX2U9Z1taXTtnOShaKSwobnVsbCE9PXVlLmhvc3RCaW5kaW5nc3x8MCE9PXVlLmhvc3RWYXJzfHxudWxsIT09dWUuaG9zdEF0dHJzKSYmQ2YodWUsX2UpfX1maW5hbGx5e3pmKC0xKSxnOShJKX19''@;'; put 'put ''KGQsZyxoKSl9ZnVuY3Rpb24gZ18oZCxnLGg9dmMpe2NvbnN0IHY9Zy5sb2NhbE5hbWVzO2lmKG51bGwhPT12KXtsZXQgeT1nLmluZGV4KzE7Zm9yKGxldCBDPTA7Qzx2Lmxlbmd0aDtDKz0yKXtjb25zdCBJPXZbQysxXSxaPS0xPT09ST9oKGcsZCk6ZFtJXTtkW3krK109Wn19fWZ1bmN0aW9u''@;'; put 'put ''IHN4KGQpe2NvbnN0IGc9ZC50VmlldztyZXR1cm4gbnVsbD09PWd8fGcuaW5jb21wbGV0ZUZpcnN0UGFzcz9kLnRWaWV3PW1fKDEsbnVsbCxkLnRlbXBsYXRlLGQuZGVjbHMsZC52YXJzLGQuZGlyZWN0aXZlRGVmcyxkLnBpcGVEZWZzLGQudmlld1F1ZXJ5LGQuc2NoZW1hcyxkLmNvbnN0cyk6''@;'; put 'put ''Z31mdW5jdGlvbiBtXyhkLGcsaCx2LHksQyxJLFosdWUsX2Upe2NvbnN0IEJlPTIyK3YsTmU9QmUreSxLZT1mdW5jdGlvbiBHQihkLGcpe2NvbnN0IGg9W107Zm9yKGxldCB2PTA7djxnO3YrKyloLnB1c2godjxkP251bGw6TmEpO3JldHVybiBofShCZSxOZSkscHQ9ImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIF9lP19lKCk6X2U7cmV0dXJuIEtlWzFdPXt0eXBlOmQsYmx1ZXByaW50OktlLHRlbXBsYXRlOmgscXVlcmllczpudWxsLHZpZXdRdWVyeTpaLGRlY2xUTm9kZTpnLGRhdGE6S2Uuc2xpY2UoKS5maWxsKG51bGwsQmUpLGJpbmRpbmdTdGFydEluZGV4OkJlLGV4cGFuZG9TdGFydEluZGV4''@;'; put 'put ''Ok5lLGhvc3RCaW5kaW5nT3BDb2RlczpudWxsLGZpcnN0Q3JlYXRlUGFzczohMCxmaXJzdFVwZGF0ZVBhc3M6ITAsc3RhdGljVmlld1F1ZXJpZXM6ITEsc3RhdGljQ29udGVudFF1ZXJpZXM6ITEscHJlT3JkZXJIb29rczpudWxsLHByZU9yZGVyQ2hlY2tIb29rczpudWxsLGNvbnRlbnRIb29r''@;'; put 'put ''czpudWxsLGNvbnRlbnRDaGVja0hvb2tzOm51bGwsdmlld0hvb2tzOm51bGwsdmlld0NoZWNrSG9va3M6bnVsbCxkZXN0cm95SG9va3M6bnVsbCxjbGVhbnVwOm51bGwsY29udGVudFF1ZXJpZXM6bnVsbCxjb21wb25lbnRzOm51bGwsZGlyZWN0aXZlUmVnaXN0cnk6ImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIEM/QygpOkMscGlwZVJlZ2lzdHJ5OiJmdW5jdGlvbiI9PXR5cGVvZiBJP0koKTpJLGZpcnN0Q2hpbGQ6bnVsbCxzY2hlbWFzOnVlLGNvbnN0czpwdCxpbmNvbXBsZXRlRmlyc3RQYXNzOiExfX1mdW5jdGlvbiB2XyhkLGcsaCx2KXtjb25zdCB5PXhfKGcpO251bGw9PT1oP3kucHVzaCh2''@;'; put 'put ''KTooeS5wdXNoKGgpLGQuZmlyc3RDcmVhdGVQYXNzJiZUXyhkKS5wdXNoKHYseS5sZW5ndGgtMSkpfWZ1bmN0aW9uIGxBKGQsZyxoKXtmb3IobGV0IHYgaW4gZClpZihkLmhhc093blByb3BlcnR5KHYpKXtjb25zdCB5PWRbdl07KGg9bnVsbD09PWg/e306aCkuaGFzT3duUHJvcGVydHkodik/''@;'; put 'put ''aFt2XS5wdXNoKGcseSk6aFt2XT1bZyx5XX1yZXR1cm4gaH1mdW5jdGlvbiBJbShkLGcpe2NvbnN0IHY9Zy5kaXJlY3RpdmVFbmQseT1kLmRhdGEsQz1nLmF0dHJzLEk9W107bGV0IFo9bnVsbCx1ZT1udWxsO2ZvcihsZXQgX2U9Zy5kaXJlY3RpdmVTdGFydDtfZTx2O19lKyspe2NvbnN0IEJl''@;'; put 'put ''PXlbX2VdLE5lPUJlLmlucHV0cyxLZT1udWxsPT09Q3x8eGQoZyk/bnVsbDpDXyhOZSxDKTtJLnB1c2goS2UpLFo9bEEoTmUsX2UsWiksdWU9bEEoQmUub3V0cHV0cyxfZSx1ZSl9bnVsbCE9PVomJihaLmhhc093blByb3BlcnR5KCJjbGFzcyIpJiYoZy5mbGFnc3w9MTYpLFouaGFzT3duUHJv''@;'; put 'put ''cGVydHkoInN0eWxlIikmJihnLmZsYWdzfD0zMikpLGcuaW5pdGlhbElucHV0cz1JLGcuaW5wdXRzPVosZy5vdXRwdXRzPXVlfWZ1bmN0aW9uIGVjKGQsZyxoLHYseSxDLEksWil7Y29uc3QgdWU9dmMoZyxoKTtsZXQgQmUsX2U9Zy5pbnB1dHM7IVomJm51bGwhPV9lJiYoQmU9X2Vbdl0pPyh2''@;'; put 'put ''QShkLGgsQmUsdix5KSxrcyhnKSYmRG0oaCxnLmluZGV4KSk6MyZnLnR5cGUmJih2PWZ1bmN0aW9uIFdCKGQpe3JldHVybiJjbGFzcyI9PT1kPyJjbGFzc05hbWUiOiJmb3IiPT09ZD8iaHRtbEZvciI6ImZvcm1hY3Rpb24iPT09ZD8iZm9ybUFjdGlvbiI6ImlubmVySHRtbCI9PT1kPyJpbm5l''@;'; put 'put ''ckhUTUwiOiJyZWFkb25seSI9PT1kPyJyZWFkT25seSI6InRhYmluZGV4Ij09PWQ/InRhYkluZGV4IjpkfSh2KSx5PW51bGwhPUk/SSh5LGcudmFsdWV8fCIiLHYpOnksQy5zZXRQcm9wZXJ0eSh1ZSx2LHkpKX1mdW5jdGlvbiBEbShkLGcpe2NvbnN0IGg9UXUoZyxkKTsxNiZoWzJdfHwoaFsy''@;'; put 'put ''XXw9MzIpfWZ1bmN0aW9uIHlfKGQsZyxoLHYpe2xldCB5PSExO2lmKFJNKCkpe2NvbnN0IEM9ZnVuY3Rpb24gXzEoZCxnLGgpe2NvbnN0IHY9ZC5kaXJlY3RpdmVSZWdpc3RyeTtsZXQgeT1udWxsO2lmKHYpZm9yKGxldCBDPTA7Qzx2Lmxlbmd0aDtDKyspe2NvbnN0IEk9dltDXTtLYihoLEku''@;'; put 'put ''c2VsZWN0b3JzLCExKSYmKHl8fCh5PVtdKSxHZihlNihoLGcpLGQsSS50eXBlKSxWZihJKT8oY0EoZCxoKSx5LnVuc2hpZnQoSSkpOnkucHVzaChJKSl9cmV0dXJuIHl9KGQsZyxoKSxJPW51bGw9PT12P251bGw6eyIiOi0xfTtpZihudWxsIT09Qyl7eT0hMCxiXyhoLGQuZGF0YS5sZW5ndGgs''@;'; put 'put ''Qy5sZW5ndGgpO2ZvcihsZXQgQmU9MDtCZTxDLmxlbmd0aDtCZSsrKXtjb25zdCBOZT1DW0JlXTtOZS5wcm92aWRlcnNSZXNvbHZlciYmTmUucHJvdmlkZXJzUmVzb2x2ZXIoTmUpfWxldCBaPSExLHVlPSExLF9lPWg1KGQsZyxDLmxlbmd0aCxudWxsKTtmb3IobGV0IEJlPTA7QmU8Qy5sZW5n''@;'; put 'put ''dGg7QmUrKyl7Y29uc3QgTmU9Q1tCZV07aC5tZXJnZWRBdHRycz16YyhoLm1lcmdlZEF0dHJzLE5lLmhvc3RBdHRycyksY3goZCxoLGcsX2UsTmUpLE9tKF9lLE5lLEkpLG51bGwhPT1OZS5jb250ZW50UXVlcmllcyYmKGguZmxhZ3N8PTgpLChudWxsIT09TmUuaG9zdEJpbmRpbmdzfHxudWxs''@;'; put 'put ''IT09TmUuaG9zdEF0dHJzfHwwIT09TmUuaG9zdFZhcnMpJiYoaC5mbGFnc3w9MTI4KTtjb25zdCBLZT1OZS50eXBlLnByb3RvdHlwZTshWiYmKEtlLm5nT25DaGFuZ2VzfHxLZS5uZ09uSW5pdHx8S2UubmdEb0NoZWNrKSYmKChkLnByZU9yZGVySG9va3N8fChkLnByZU9yZGVySG9va3M9W10p''@;'; put 'put ''KS5wdXNoKGguaW5kZXgpLFo9ITApLCF1ZSYmKEtlLm5nT25DaGFuZ2VzfHxLZS5uZ0RvQ2hlY2spJiYoKGQucHJlT3JkZXJDaGVja0hvb2tzfHwoZC5wcmVPcmRlckNoZWNrSG9va3M9W10pKS5wdXNoKGguaW5kZXgpLHVlPSEwKSxfZSsrfUltKGQsaCl9SSYmZnVuY3Rpb24gd18oZCxnLGgp''@;'; put 'put ''e2lmKGcpe2NvbnN0IHY9ZC5sb2NhbE5hbWVzPVtdO2ZvcihsZXQgeT0wO3k8Zy5sZW5ndGg7eSs9Mil7Y29uc3QgQz1oW2dbeSsxXV07aWYobnVsbD09Qyl0aHJvdyBuZXcgZW4oLTMwMSwhMSk7di5wdXNoKGdbeV0sQyl9fX0oaCx2LEkpfXJldHVybiBoLm1lcmdlZEF0dHJzPXpjKGgubWVy''@;'; put 'put ''Z2VkQXR0cnMsaC5hdHRycykseX1mdW5jdGlvbiBzQShkLGcsaCx2LHksQyl7Y29uc3QgST1DLmhvc3RCaW5kaW5ncztpZihJKXtsZXQgWj1kLmhvc3RCaW5kaW5nT3BDb2RlcztudWxsPT09WiYmKFo9ZC5ob3N0QmluZGluZ09wQ29kZXM9W10pO2NvbnN0IHVlPX5nLmluZGV4OyhmdW5jdGlv''@;'; put 'put ''biB1QShkKXtsZXQgZz1kLmxlbmd0aDtmb3IoO2c+MDspe2NvbnN0IGg9ZFstLWddO2lmKCJudW1iZXIiPT10eXBlb2YgaCYmaDwwKXJldHVybiBofXJldHVybiAwfSkoWikhPXVlJiZaLnB1c2godWUpLFoucHVzaCh2LHksSSl9fWZ1bmN0aW9uIENmKGQsZyl7bnVsbCE9PWQuaG9zdEJpbmRp''@;'; put 'put ''bmdzJiZkLmhvc3RCaW5kaW5ncygxLGcpfWZ1bmN0aW9uIGNBKGQsZyl7Zy5mbGFnc3w9MiwoZC5jb21wb25lbnRzfHwoZC5jb21wb25lbnRzPVtdKSkucHVzaChnLmluZGV4KX1mdW5jdGlvbiBPbShkLGcsaCl7aWYoaCl7aWYoZy5leHBvcnRBcylmb3IobGV0IHY9MDt2PGcuZXhwb3J0QXMu''@;'; put 'put ''bGVuZ3RoO3YrKyloW2cuZXhwb3J0QXNbdl1dPWQ7VmYoZykmJihoWyIiXT1kKX19ZnVuY3Rpb24gYl8oZCxnLGgpe2QuZmxhZ3N8PTEsZC5kaXJlY3RpdmVTdGFydD1nLGQuZGlyZWN0aXZlRW5kPWcraCxkLnByb3ZpZGVySW5kZXhlcz1nfWZ1bmN0aW9uIGN4KGQsZyxoLHYseSl7ZC5kYXRh''@;'; put 'put ''W3ZdPXk7Y29uc3QgQz15LmZhY3Rvcnl8fCh5LmZhY3Rvcnk9amYoeS50eXBlKSksST1uZXcgd2QoQyxWZih5KSxLdCk7ZC5ibHVlcHJpbnRbdl09SSxoW3ZdPUksc0EoZCxnLDAsdixoNShkLGgseS5ob3N0VmFycyxOYSkseSl9ZnVuY3Rpb24gZkEoZCxnLGgpe2NvbnN0IHY9dmMoZyxkKSx5''@;'; put 'put ''PXN4KGgpLEM9ZFsxMF0sST1SbShkLGs2KGQseSxudWxsLGgub25QdXNoPzMyOjE2LHYsZyxDLEMuY3JlYXRlUmVuZGVyZXIodixoKSxudWxsLG51bGwsbnVsbCkpO2RbZy5pbmRleF09SX1mdW5jdGlvbiBPaChkLGcsaCx2LHksQyl7Y29uc3QgST12YyhkLGcpOyFmdW5jdGlvbiB2bChkLGcs''@;'; put 'put ''aCx2LHksQyxJKXtpZihudWxsPT1DKWQucmVtb3ZlQXR0cmlidXRlKGcseSxoKTtlbHNle2NvbnN0IFo9bnVsbD09ST9KbihDKTpJKEMsdnx8IiIseSk7ZC5zZXRBdHRyaWJ1dGUoZyx5LFosaCl9fShnWzExXSxJLEMsZC52YWx1ZSxoLHYseSl9ZnVuY3Rpb24gX18oZCxnLGgsdix5LEMpe2Nv''@;'; put 'put ''bnN0IEk9Q1tnXTtpZihudWxsIT09SSl7Y29uc3QgWj12LnNldElucHV0O2ZvcihsZXQgdWU9MDt1ZTxJLmxlbmd0aDspe2NvbnN0IF9lPUlbdWUrK10sQmU9SVt1ZSsrXSxOZT1JW3VlKytdO251bGwhPT1aP3Yuc2V0SW5wdXQoaCxOZSxfZSxCZSk6aFtCZV09TmV9fX1mdW5jdGlvbiBDXyhk''@;'; put 'put ''LGcpe2xldCBoPW51bGwsdj0wO2Zvcig7djxnLmxlbmd0aDspe2NvbnN0IHk9Z1t2XTtpZigwIT09eSlpZig1IT09eSl7aWYoIm51bWJlciI9PXR5cGVvZiB5KWJyZWFrO2QuaGFzT3duUHJvcGVydHkoeSkmJihudWxsPT09aCYmKGg9W10pLGgucHVzaCh5LGRbeV0sZ1t2KzFdKSksdis9Mn1l''@;'; put 'put ''bHNlIHYrPTI7ZWxzZSB2Kz00fXJldHVybiBofWZ1bmN0aW9uIGhBKGQsZyxoLHYpe3JldHVybiBuZXcgQXJyYXkoZCwhMCwhMSxnLG51bGwsMCx2LGgsbnVsbCxudWxsKX1mdW5jdGlvbiBoeChkLGcpe2NvbnN0IGg9UXUoZyxkKTtpZih1dShoKSl7Y29uc3Qgdj1oWzFdOzQ4JmhbMl0/WTEo''@;'; put 'put ''dixoLHYudGVtcGxhdGUsaFs4XSk6aFs1XT4wJiZrXyhoKX19ZnVuY3Rpb24ga18oZCl7Zm9yKGxldCB2PWo5KGQpO251bGwhPT12O3Y9WjkodikpZm9yKGxldCB5PTEwO3k8di5sZW5ndGg7eSsrKXtjb25zdCBDPXZbeV07aWYoNTEyJkNbMl0pe2NvbnN0IEk9Q1sxXTtZMShJLEMsSS50ZW1w''@;'; put 'put ''bGF0ZSxDWzhdKX1lbHNlIENbNV0+MCYma18oQyl9Y29uc3QgaD1kWzFdLmNvbXBvbmVudHM7aWYobnVsbCE9PWgpZm9yKGxldCB2PTA7djxoLmxlbmd0aDt2Kyspe2NvbnN0IHk9UXUoaFt2XSxkKTt1dSh5KSYmeVs1XT4wJiZrXyh5KX19ZnVuY3Rpb24gZEEoZCxnKXtjb25zdCBoPVF1KGcs''@;'; put 'put ''ZCksdj1oWzFdOyhmdW5jdGlvbiBTXyhkLGcpe2ZvcihsZXQgaD1nLmxlbmd0aDtoPGQuYmx1ZXByaW50Lmxlbmd0aDtoKyspZy5wdXNoKGQuYmx1ZXByaW50W2hdKX0pKHYsaCksejQodixoLGhbOF0pfWZ1bmN0aW9uIFJtKGQsZyl7cmV0dXJuIGRbMTNdP2RbMTRdWzRdPWc6ZFsxM109Zyxk''@;'; put 'put ''WzE0XT1nLGd9ZnVuY3Rpb24gcEEoZCl7Zm9yKDtkOyl7ZFsyXXw9MzI7Y29uc3QgZz1lNShkKTtpZihxdyhkKSYmIWcpcmV0dXJuIGQ7ZD1nfXJldHVybiBudWxsfWZ1bmN0aW9uIEVfKGQpeyFmdW5jdGlvbiBNXyhkKXtmb3IobGV0IGc9MDtnPGQuY29tcG9uZW50cy5sZW5ndGg7ZysrKXtj''@;'; put 'put ''b25zdCBoPWQuY29tcG9uZW50c1tnXSx2PUliKGgpO2lmKG51bGwhPT12KXtjb25zdCB5PXZbMV07ZDUoeSx2LHkudGVtcGxhdGUsaCl9fX0oZFs4XSl9ZnVuY3Rpb24gUG0oZCxnLGgpe0RuKDApLGcoZCxoKX1jb25zdCBweD0oKCk9PlByb21pc2UucmVzb2x2ZShudWxsKSkoKTtmdW5jdGlv''@;'; put 'put ''biB4XyhkKXtyZXR1cm4gZFs3XXx8KGRbN109W10pfWZ1bmN0aW9uIFRfKGQpe3JldHVybiBkLmNsZWFudXB8fChkLmNsZWFudXA9W10pfWZ1bmN0aW9uIElfKGQsZyxoKXtyZXR1cm4obnVsbD09PWR8fFZmKGQpKSYmKGg9ZnVuY3Rpb24gTE0oZCl7Zm9yKDtBcnJheS5pc0FycmF5KGQpOyl7''@;'; put 'put ''aWYoIm9iamVjdCI9PXR5cGVvZiBkWzFdKXJldHVybiBkO2Q9ZFswXX1yZXR1cm4gbnVsbH0oaFtnLmluZGV4XSkpLGhbMTFdfWZ1bmN0aW9uIG1BKGQsZyl7Y29uc3QgaD1kWzldLHY9aD9oLmdldCh2NixudWxsKTpudWxsO3YmJnYuaGFuZGxlRXJyb3IoZyl9ZnVuY3Rpb24gdkEoZCxnLGgs''@;'; put 'put ''dix5KXtmb3IobGV0IEM9MDtDPGgubGVuZ3RoOyl7Y29uc3QgST1oW0MrK10sWj1oW0MrK10sdWU9Z1tJXSxfZT1kLmRhdGFbSV07bnVsbCE9PV9lLnNldElucHV0P19lLnNldElucHV0KHVlLHksdixaKTp1ZVtaXT15fX1mdW5jdGlvbiBSaChkLGcsaCl7Y29uc3Qgdj1VcChnLGQpOyFmdW5j''@;'; put 'put ''dGlvbiBINChkLGcsaCl7ZC5zZXRWYWx1ZShnLGgpfShkWzExXSx2LGgpfWZ1bmN0aW9uIHA1KGQsZyxoKXtsZXQgdj1oP2Quc3R5bGVzOm51bGwseT1oP2QuY2xhc3NlczpudWxsLEM9MDtpZihudWxsIT09Zylmb3IobGV0IEk9MDtJPGcubGVuZ3RoO0krKyl7Y29uc3QgWj1nW0ldOyJudW1i''@;'; put 'put ''ZXIiPT10eXBlb2YgWj9DPVo6MT09Qz95PXVuKHksWik6Mj09QyYmKHY9dW4odixaKyI6ICIrZ1srK0ldKyI7IikpfWg/ZC5zdHlsZXM9djpkLnN0eWxlc1dpdGhvdXRIb3N0PXYsaD9kLmNsYXNzZXM9eTpkLmNsYXNzZXNXaXRob3V0SG9zdD15fWZ1bmN0aW9uIEc0KGQsZyxoLHYseT0hMSl7''@;'; put 'put ''Zm9yKDtudWxsIT09aDspe2NvbnN0IEM9Z1toLmluZGV4XTtpZihudWxsIT09QyYmdi5wdXNoKFgyKEMpKSxzZihDKSlmb3IobGV0IFo9MTA7WjxDLmxlbmd0aDtaKyspe2NvbnN0IHVlPUNbWl0sX2U9dWVbMV0uZmlyc3RDaGlsZDtudWxsIT09X2UmJkc0KHVlWzFdLHVlLF9lLHYpfWNvbnN0''@;'; put 'put ''IEk9aC50eXBlO2lmKDgmSSlHNChkLGcsaC5jaGlsZCx2KTtlbHNlIGlmKDMyJkkpe2NvbnN0IFo9X20oaCxnKTtsZXQgdWU7Zm9yKDt1ZT1aKCk7KXYucHVzaCh1ZSl9ZWxzZSBpZigxNiZJKXtjb25zdCBaPVliKGcsaCk7aWYoQXJyYXkuaXNBcnJheShaKSl2LnB1c2goLi4uWik7ZWxzZXtj''@;'; put 'put ''b25zdCB1ZT1lNShnWzE2XSk7RzQodWVbMV0sdWUsWix2LCEwKX19aD15P2gucHJvamVjdGlvbk5leHQ6aC5uZXh0fXJldHVybiB2fWNsYXNzIE02e2NvbnN0cnVjdG9yKGcsaCl7dGhpcy5fbFZpZXc9Zyx0aGlzLl9jZFJlZkluamVjdGluZ1ZpZXc9aCx0aGlzLl9hcHBSZWY9bnVsbCx0aGlz''@;'; put 'put ''Ll9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcj0hMX1nZXQgcm9vdE5vZGVzKCl7Y29uc3QgZz10aGlzLl9sVmlldyxoPWdbMV07cmV0dXJuIEc0KGgsZyxoLmZpcnN0Q2hpbGQsW10pfWdldCBjb250ZXh0KCl7cmV0dXJuIHRoaXMuX2xWaWV3WzhdfXNldCBjb250ZXh0KGcpe3RoaXMuX2xWaWV3''@;'; put 'put ''WzhdPWd9Z2V0IGRlc3Ryb3llZCgpe3JldHVybiAxMjg9PSgxMjgmdGhpcy5fbFZpZXdbMl0pfWRlc3Ryb3koKXtpZih0aGlzLl9hcHBSZWYpdGhpcy5fYXBwUmVmLmRldGFjaFZpZXcodGhpcyk7ZWxzZSBpZih0aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcil7Y29uc3QgZz10aGlzLl9s''@;'; put 'put ''Vmlld1szXTtpZihzZihnKSl7Y29uc3QgaD1nWzhdLHY9aD9oLmluZGV4T2YodGhpcyk6LTE7dj4tMSYmKE5iKGcsdiksQ2QoaCx2KSl9dGhpcy5fYXR0YWNoZWRUb1ZpZXdDb250YWluZXI9ITF9QkUodGhpcy5fbFZpZXdbMV0sdGhpcy5fbFZpZXcpfW9uRGVzdHJveShnKXt2Xyh0aGlzLl9s''@;'; put 'put ''Vmlld1sxXSx0aGlzLl9sVmlldyxudWxsLGcpfW1hcmtGb3JDaGVjaygpe3BBKHRoaXMuX2NkUmVmSW5qZWN0aW5nVmlld3x8dGhpcy5fbFZpZXcpfWRldGFjaCgpe3RoaXMuX2xWaWV3WzJdJj0tNjV9cmVhdHRhY2goKXt0aGlzLl9sVmlld1syXXw9NjR9ZGV0ZWN0Q2hhbmdlcygpeyFmdW5j''@;'; put 'put ''dGlvbiBnQShkLGcsaCl7Y29uc3Qgdj1nWzEwXTt2LmJlZ2luJiZ2LmJlZ2luKCk7dHJ5e1kxKGQsZyxkLnRlbXBsYXRlLGgpfWNhdGNoKHkpe3Rocm93IG1BKGcseSkseX1maW5hbGx5e3YuZW5kJiZ2LmVuZCgpfX0odGhpcy5fbFZpZXdbMV0sdGhpcy5fbFZpZXcsdGhpcy5jb250ZXh0KX1j''@;'; put 'put ''aGVja05vQ2hhbmdlcygpe31hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYoKXtpZih0aGlzLl9hcHBSZWYpdGhyb3cgbmV3IGVuKDkwMiwhMSk7dGhpcy5fYXR0YWNoZWRUb1ZpZXdDb250YWluZXI9ITB9ZGV0YWNoRnJvbUFwcFJlZigpe3RoaXMuX2FwcFJlZj1udWxsLGZ1bmN0aW9uIE9FKGQs''@;'; put 'put ''Zyl7a20oZCxnLGdbMTFdLDIsbnVsbCxudWxsKX0odGhpcy5fbFZpZXdbMV0sdGhpcy5fbFZpZXcpfWF0dGFjaFRvQXBwUmVmKGcpe2lmKHRoaXMuX2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyKXRocm93IG5ldyBlbig5MDIsITEpO3RoaXMuX2FwcFJlZj1nfX1jbGFzcyBBQSBleHRlbmRzIE02''@;'; put 'put ''e2NvbnN0cnVjdG9yKGcpe3N1cGVyKGcpLHRoaXMuX3ZpZXc9Z31kZXRlY3RDaGFuZ2VzKCl7RV8odGhpcy5fdmlldyl9Y2hlY2tOb0NoYW5nZXMoKXt9Z2V0IGNvbnRleHQoKXtyZXR1cm4gbnVsbH19Y2xhc3MgRF8gZXh0ZW5kcyBTZHtjb25zdHJ1Y3RvcihnKXtzdXBlcigpLHRoaXMubmdN''@;'; put 'put ''b2R1bGU9Z31yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShnKXtjb25zdCBoPXZzKGcpO3JldHVybiBuZXcgRm0oaCx0aGlzLm5nTW9kdWxlKX19ZnVuY3Rpb24geUEoZCl7Y29uc3QgZz1bXTtmb3IobGV0IGggaW4gZClkLmhhc093blByb3BlcnR5KGgpJiZnLnB1c2goe3Byb3BOYW1lOmRbaF0s''@;'; put 'put ''dGVtcGxhdGVOYW1lOmh9KTtyZXR1cm4gZ31jbGFzcyB3QXtjb25zdHJ1Y3RvcihnLGgpe3RoaXMuaW5qZWN0b3I9Zyx0aGlzLnBhcmVudEluamVjdG9yPWh9Z2V0KGcsaCx2KXtjb25zdCB5PXRoaXMuaW5qZWN0b3IuZ2V0KGcsQjksdik7cmV0dXJuIHkhPT1COXx8aD09PUI5P3k6dGhpcy5w''@;'; put 'put ''YXJlbnRJbmplY3Rvci5nZXQoZyxoLHYpfX1jbGFzcyBGbSBleHRlbmRzIHZFe2NvbnN0cnVjdG9yKGcsaCl7c3VwZXIoKSx0aGlzLmNvbXBvbmVudERlZj1nLHRoaXMubmdNb2R1bGU9aCx0aGlzLmNvbXBvbmVudFR5cGU9Zy50eXBlLHRoaXMuc2VsZWN0b3I9ZnVuY3Rpb24gYkIoZCl7cmV0''@;'; put 'put ''dXJuIGQubWFwKHdCKS5qb2luKCIsIil9KGcuc2VsZWN0b3JzKSx0aGlzLm5nQ29udGVudFNlbGVjdG9ycz1nLm5nQ29udGVudFNlbGVjdG9ycz9nLm5nQ29udGVudFNlbGVjdG9yczpbXSx0aGlzLmlzQm91bmRUb01vZHVsZT0hIWh9Z2V0IGlucHV0cygpe3JldHVybiB5QSh0aGlzLmNvbXBv''@;'; put 'put ''bmVudERlZi5pbnB1dHMpfWdldCBvdXRwdXRzKCl7cmV0dXJuIHlBKHRoaXMuY29tcG9uZW50RGVmLm91dHB1dHMpfWNyZWF0ZShnLGgsdix5KXtsZXQgQz0oeT15fHx0aGlzLm5nTW9kdWxlKWluc3RhbmNlb2YgRTM/eTpudWxsPT15P3ZvaWQgMDp5LmluamVjdG9yO0MmJm51bGwhPT10aGlz''@;'; put 'put ''LmNvbXBvbmVudERlZi5nZXRTdGFuZGFsb25lSW5qZWN0b3ImJihDPXRoaXMuY29tcG9uZW50RGVmLmdldFN0YW5kYWxvbmVJbmplY3RvcihDKXx8Qyk7Y29uc3QgST1DP25ldyB3QShnLEMpOmcsWj1JLmdldChNZCxudWxsKTtpZihudWxsPT09Wil0aHJvdyBuZXcgZW4oNDA3LCExKTtjb25z''@;'; put 'put ''dCB1ZT1JLmdldChiRSxudWxsKSxfZT1aLmNyZWF0ZVJlbmRlcmVyKG51bGwsdGhpcy5jb21wb25lbnREZWYpLEJlPXRoaXMuY29tcG9uZW50RGVmLnNlbGVjdG9yc1swXVswXXx8ImRpdiIsTmU9dj9mdW5jdGlvbiBhQShkLGcsaCl7cmV0dXJuIGQuc2VsZWN0Um9vdEVsZW1lbnQoZyxoPT09''@;'; put 'put ''eDIuU2hhZG93RG9tKX0oX2Usdix0aGlzLmNvbXBvbmVudERlZi5lbmNhcHN1bGF0aW9uKTp0NShaLmNyZWF0ZVJlbmRlcmVyKG51bGwsdGhpcy5jb21wb25lbnREZWYpLEJlLGZ1bmN0aW9uIExfKGQpe2NvbnN0IGc9ZC50b0xvd2VyQ2FzZSgpO3JldHVybiJzdmciPT09Zz8ic3ZnIjoibWF0''@;'; put 'put ''aCI9PT1nPyJtYXRoIjpudWxsfShCZSkpLEtlPXRoaXMuY29tcG9uZW50RGVmLm9uUHVzaD8yODg6MjcyLHB0PWZ1bmN0aW9uIG14KGQsZyl7cmV0dXJue2NvbXBvbmVudHM6W10sc2NoZWR1bGVyOmR8fGNCLGNsZWFuOnB4LHBsYXllckhhbmRsZXI6Z3x8bnVsbCxmbGFnczowfX0oKSxPdD1t''@;'; put 'put ''XygwLG51bGwsbnVsbCwxLDAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSwkdD1rNihudWxsLE90LHB0LEtlLG51bGwsbnVsbCxaLF9lLHVlLEksbnVsbCk7bGV0IGZuLExuO0QwKCR0KTt0cnl7Y29uc3QgaXI9ZnVuY3Rpb24gZ3goZCxnLGgsdix5LEMpe2NvbnN0IEk9aFsxXTtoWzIyXT1k''@;'; put 'put ''O2NvbnN0IHVlPVM2KEksMjIsMiwiI2hvc3QiLG51bGwpLF9lPXVlLm1lcmdlZEF0dHJzPWcuaG9zdEF0dHJzO251bGwhPT1fZSYmKHA1KHVlLF9lLCEwKSxudWxsIT09ZCYmKFpjKHksZCxfZSksbnVsbCE9PXVlLmNsYXNzZXMmJkQzKHksZCx1ZS5jbGFzc2VzKSxudWxsIT09dWUuc3R5bGVz''@;'; put 'put ''JiZKYih5LGQsdWUuc3R5bGVzKSkpO2NvbnN0IEJlPXYuY3JlYXRlUmVuZGVyZXIoZCxnKSxOZT1rNihoLHN4KGcpLG51bGwsZy5vblB1c2g/MzI6MTYsaFsyMl0sdWUsdixCZSxDfHxudWxsLG51bGwsbnVsbCk7cmV0dXJuIEkuZmlyc3RDcmVhdGVQYXNzJiYoR2YoZTYodWUsaCksSSxnLnR5''@;'; put 'put ''cGUpLGNBKEksdWUpLGJfKHVlLGgubGVuZ3RoLDEpKSxSbShoLE5lKSxoWzIyXT1OZX0oTmUsdGhpcy5jb21wb25lbnREZWYsJHQsWixfZSk7aWYoTmUpaWYodilaYyhfZSxOZSxbIm5nLXZlcnNpb24iLF9FLmZ1bGxdKTtlbHNle2NvbnN0e2F0dHJzOm1yLGNsYXNzZXM6U3J9PWZ1bmN0aW9u''@;'; put 'put ''IF9CKGQpe2NvbnN0IGc9W10saD1bXTtsZXQgdj0xLHk9Mjtmb3IoO3Y8ZC5sZW5ndGg7KXtsZXQgQz1kW3ZdO2lmKCJzdHJpbmciPT10eXBlb2YgQykyPT09eT8iIiE9PUMmJmcucHVzaChDLGRbKyt2XSk6OD09PXkmJmgucHVzaChDKTtlbHNle2lmKCFodSh5KSlicmVhazt5PUN9disrfXJl''@;'; put 'put ''dHVybnthdHRyczpnLGNsYXNzZXM6aH19KHRoaXMuY29tcG9uZW50RGVmLnNlbGVjdG9yc1swXSk7bXImJlpjKF9lLE5lLG1yKSxTciYmU3IubGVuZ3RoPjAmJkQzKF9lLE5lLFNyLmpvaW4oIiAiKSl9aWYoTG49WGcoT3QsMjIpLHZvaWQgMCE9PWgpe2NvbnN0IG1yPUxuLnByb2plY3Rpb249''@;'; put 'put ''W107Zm9yKGxldCBTcj0wO1NyPHRoaXMubmdDb250ZW50U2VsZWN0b3JzLmxlbmd0aDtTcisrKXtjb25zdCB3cj1oW1NyXTttci5wdXNoKG51bGwhPXdyP0FycmF5LmZyb20od3IpOm51bGwpfX1mbj1mdW5jdGlvbiBKQihkLGcsaCx2LHkpe2NvbnN0IEM9aFsxXSxJPWZ1bmN0aW9uIFlCKGQs''@;'; put 'put ''ZyxoKXtjb25zdCB2PVh0KCk7ZC5maXJzdENyZWF0ZVBhc3MmJihoLnByb3ZpZGVyc1Jlc29sdmVyJiZoLnByb3ZpZGVyc1Jlc29sdmVyKGgpLGN4KGQsdixnLGg1KGQsZywxLG51bGwpLGgpLEltKGQsdikpO2NvbnN0IHk9VDQoZyxkLHYuZGlyZWN0aXZlU3RhcnQsdik7cXUoeSxnKTtjb25z''@;'; put 'put ''dCBDPXZjKHYsZyk7cmV0dXJuIEMmJnF1KEMsZykseX0oQyxoLGcpO2lmKHYuY29tcG9uZW50cy5wdXNoKEkpLGRbOF09SSxudWxsIT09eSlmb3IoY29uc3QgdWUgb2YgeSl1ZShJLGcpO2lmKGcuY29udGVudFF1ZXJpZXMpe2NvbnN0IHVlPVh0KCk7Zy5jb250ZW50UXVlcmllcygxLEksdWUu''@;'; put 'put ''ZGlyZWN0aXZlU3RhcnQpfWNvbnN0IFo9WHQoKTtyZXR1cm4hQy5maXJzdENyZWF0ZVBhc3N8fG51bGw9PT1nLmhvc3RCaW5kaW5ncyYmbnVsbD09PWcuaG9zdEF0dHJzfHwoemYoWi5pbmRleCksc0EoaFsxXSxaLDAsWi5kaXJlY3RpdmVTdGFydCxaLmRpcmVjdGl2ZUVuZCxnKSxDZihnLEkp''@;'; put 'put ''KSxJfShpcix0aGlzLmNvbXBvbmVudERlZiwkdCxwdCxbdnhdKSx6NChPdCwkdCxudWxsKX1maW5hbGx5e0pwKCl9cmV0dXJuIG5ldyBPXyh0aGlzLmNvbXBvbmVudFR5cGUsZm4scDYoTG4sJHQpLCR0LExuKX19Y2xhc3MgT18gZXh0ZW5kcyBjbGFzcyBCNHt9e2NvbnN0cnVjdG9yKGcsaCx2''@;'; put 'put ''LHksQyl7c3VwZXIoKSx0aGlzLmxvY2F0aW9uPXYsdGhpcy5fcm9vdExWaWV3PXksdGhpcy5fdE5vZGU9Qyx0aGlzLmluc3RhbmNlPWgsdGhpcy5ob3N0Vmlldz10aGlzLmNoYW5nZURldGVjdG9yUmVmPW5ldyBBQSh5KSx0aGlzLmNvbXBvbmVudFR5cGU9Z31zZXRJbnB1dChnLGgpe2NvbnN0''@;'; put 'put ''IHY9dGhpcy5fdE5vZGUuaW5wdXRzO2xldCB5O2lmKG51bGwhPT12JiYoeT12W2ddKSl7Y29uc3QgQz10aGlzLl9yb290TFZpZXc7dkEoQ1sxXSxDLHksZyxoKSxEbShDLHRoaXMuX3ROb2RlLmluZGV4KX19Z2V0IGluamVjdG9yKCl7cmV0dXJuIG5ldyBJNCh0aGlzLl90Tm9kZSx0aGlzLl9y''@;'; put 'put ''b290TFZpZXcpfWRlc3Ryb3koKXt0aGlzLmhvc3RWaWV3LmRlc3Ryb3koKX1vbkRlc3Ryb3koZyl7dGhpcy5ob3N0Vmlldy5vbkRlc3Ryb3koZyl9fWZ1bmN0aW9uIHZ4KCl7Y29uc3QgZD1YdCgpO2VtKFB0KClbMV0sZCl9ZnVuY3Rpb24gRG8oZCl7bGV0IGc9ZnVuY3Rpb24gQXgoZCl7cmV0''@;'; put 'put ''dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihkLnByb3RvdHlwZSkuY29uc3RydWN0b3J9KGQudHlwZSksaD0hMDtjb25zdCB2PVtkXTtmb3IoO2c7KXtsZXQgeTtpZihWZihkKSl5PWcuXHUwMjc1Y21wfHxnLlx1MDI3NWRpcjtlbHNle2lmKGcuXHUwMjc1Y21wKXRocm93IG5ldyBlbig5MDMs''@;'; put 'put ''ITEpO3k9Zy5cdTAyNzVkaXJ9aWYoeSl7aWYoaCl7di5wdXNoKHkpO2NvbnN0IEk9ZDtJLmlucHV0cz1SXyhkLmlucHV0cyksSS5kZWNsYXJlZElucHV0cz1SXyhkLmRlY2xhcmVkSW5wdXRzKSxJLm91dHB1dHM9Ul8oZC5vdXRwdXRzKTtjb25zdCBaPXkuaG9zdEJpbmRpbmdzO1omJiRCKGQs''@;'; put 'put ''Wik7Y29uc3QgdWU9eS52aWV3UXVlcnksX2U9eS5jb250ZW50UXVlcmllcztpZih1ZSYmeXgoZCx1ZSksX2UmJktCKGQsX2UpLGtyKGQuaW5wdXRzLHkuaW5wdXRzKSxrcihkLmRlY2xhcmVkSW5wdXRzLHkuZGVjbGFyZWRJbnB1dHMpLGtyKGQub3V0cHV0cyx5Lm91dHB1dHMpLFZmKHkpJiZ5''@;'; put 'put ''LmRhdGEuYW5pbWF0aW9uKXtjb25zdCBCZT1kLmRhdGE7QmUuYW5pbWF0aW9uPShCZS5hbmltYXRpb258fFtdKS5jb25jYXQoeS5kYXRhLmFuaW1hdGlvbil9fWNvbnN0IEM9eS5mZWF0dXJlcztpZihDKWZvcihsZXQgST0wO0k8Qy5sZW5ndGg7SSsrKXtjb25zdCBaPUNbSV07WiYmWi5uZ0lu''@;'; put 'put ''aGVyaXQmJlooZCksWj09PURvJiYoaD0hMSl9fWc9T2JqZWN0LmdldFByb3RvdHlwZU9mKGcpfSFmdW5jdGlvbiBYQihkKXtsZXQgZz0wLGg9bnVsbDtmb3IobGV0IHY9ZC5sZW5ndGgtMTt2Pj0wO3YtLSl7Y29uc3QgeT1kW3ZdO3kuaG9zdFZhcnM9Zys9eS5ob3N0VmFycyx5Lmhvc3RBdHRy''@;'; put 'put ''cz16Yyh5Lmhvc3RBdHRycyxoPXpjKGgseS5ob3N0QXR0cnMpKX19KHYpfWZ1bmN0aW9uIFJfKGQpe3JldHVybiBkPT09czE/e306ZD09PVowP1tdOmR9ZnVuY3Rpb24geXgoZCxnKXtjb25zdCBoPWQudmlld1F1ZXJ5O2Qudmlld1F1ZXJ5PWg/KHYseSk9PntnKHYseSksaCh2LHkpfTpnfWZ1''@;'; put 'put ''bmN0aW9uIEtCKGQsZyl7Y29uc3QgaD1kLmNvbnRlbnRRdWVyaWVzO2QuY29udGVudFF1ZXJpZXM9aD8odix5LEMpPT57Zyh2LHksQyksaCh2LHksQyl9Omd9ZnVuY3Rpb24gJEIoZCxnKXtjb25zdCBoPWQuaG9zdEJpbmRpbmdzO2QuaG9zdEJpbmRpbmdzPWg/KHYseSk9PntnKHYseSksaCh2''@;'; put 'put ''LHkpfTpnfWxldCBXND1udWxsO2Z1bmN0aW9uIEU2KCl7aWYoIVc0KXtjb25zdCBkPVBsLlN5bWJvbDtpZihkJiZkLml0ZXJhdG9yKVc0PWQuaXRlcmF0b3I7ZWxzZXtjb25zdCBnPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE1hcC5wcm90b3R5cGUpO2ZvcihsZXQgaD0wO2g8Zy5sZW5n''@;'; put 'put ''dGg7KytoKXtjb25zdCB2PWdbaF07ImVudHJpZXMiIT09diYmInNpemUiIT09diYmTWFwLnByb3RvdHlwZVt2XT09PU1hcC5wcm90b3R5cGUuZW50cmllcyYmKFc0PXYpfX19cmV0dXJuIFc0fWZ1bmN0aW9uIFBkKGQpe3JldHVybiEhQl8oZCkmJihBcnJheS5pc0FycmF5KGQpfHwhKGQgaW5z''@;'; put 'put ''dGFuY2VvZiBNYXApJiZFNigpaW4gZCl9ZnVuY3Rpb24gQl8oZCl7cmV0dXJuIG51bGwhPT1kJiYoImZ1bmN0aW9uIj09dHlwZW9mIGR8fCJvYmplY3QiPT10eXBlb2YgZCl9ZnVuY3Rpb24gTDMoZCxnLGgpe3JldHVybiBkW2ddPWh9ZnVuY3Rpb24gdGMoZCxnLGgpe3JldHVybiFPYmplY3Qu''@;'; put 'put ''aXMoZFtnXSxoKSYmKGRbZ109aCwhMCl9ZnVuY3Rpb24geDYoZCxnLGgsdil7Y29uc3QgeT10YyhkLGcsaCk7cmV0dXJuIHRjKGQsZysxLHYpfHx5fWZ1bmN0aW9uIGJBKGQsZyxoLHYseSl7Y29uc3QgQz14NihkLGcsaCx2KTtyZXR1cm4gdGMoZCxnKzIseSl8fEN9ZnVuY3Rpb24gR2koZCxn''@;'; put 'put ''LGgsdil7Y29uc3QgeT1QdCgpO3JldHVybiB0Yyh5LGkyKCksZykmJihmZSgpLE9oKEYyKCkseSxkLGcsaCx2KSksR2l9ZnVuY3Rpb24gbTUoZCxnLGgsdil7cmV0dXJuIHRjKGQsaTIoKSxoKT9nK0puKGgpK3Y6TmF9ZnVuY3Rpb24gcm4oZCxnLGgsdix5LEMsSSxaKXtjb25zdCB1ZT1QdCgp''@;'; put 'put ''LF9lPWZlKCksQmU9ZCsyMixOZT1fZS5maXJzdENyZWF0ZVBhc3M/ZnVuY3Rpb24gX0EoZCxnLGgsdix5LEMsSSxaLHVlKXtjb25zdCBfZT1nLmNvbnN0cyxCZT1TNihnLGQsNCxJfHxudWxsLE4xKF9lLFopKTt5XyhnLGgsQmUsTjEoX2UsdWUpKSxlbShnLEJlKTtjb25zdCBOZT1CZS50Vmll''@;'; put 'put ''d3M9bV8oMixCZSx2LHksQyxnLmRpcmVjdGl2ZVJlZ2lzdHJ5LGcucGlwZVJlZ2lzdHJ5LG51bGwsZy5zY2hlbWFzLF9lKTtyZXR1cm4gbnVsbCE9PWcucXVlcmllcyYmKGcucXVlcmllcy50ZW1wbGF0ZShnLEJlKSxOZS5xdWVyaWVzPWcucXVlcmllcy5lbWJlZGRlZFRWaWV3KEJlKSksQmV9''@;'; put 'put ''KEJlLF9lLHVlLGcsaCx2LHksQyxJKTpfZS5kYXRhW0JlXTtqbihOZSwhMSk7Y29uc3QgS2U9dWVbMTFdLmNyZWF0ZUNvbW1lbnQoIiIpO2JmKF9lLHVlLEtlLE5lKSxxdShLZSx1ZSksUm0odWUsdWVbQmVdPWhBKEtlLHVlLEtlLE5lKSksemcoTmUpJiZwXyhfZSx1ZSxOZSksbnVsbCE9SSYm''@;'; put 'put ''Z18odWUsTmUsWil9ZnVuY3Rpb24gdmEoZCl7cmV0dXJuIFFwKGZ1bmN0aW9uICRvKCl7cmV0dXJuIENhLmxGcmFtZS5jb250ZXh0TFZpZXd9KCksMjIrZCl9ZnVuY3Rpb24gVHQoZCxnLGgpe2NvbnN0IHY9UHQoKTtyZXR1cm4gdGModixpMigpLGcpJiZlYyhmZSgpLEYyKCksdixkLGcsdlsx''@;'; put 'put ''MV0saCwhMSksVHR9ZnVuY3Rpb24gRl8oZCxnLGgsdix5KXtjb25zdCBJPXk/ImNsYXNzIjoic3R5bGUiO3ZBKGQsaCxnLmlucHV0c1tJXSxJLHYpfWZ1bmN0aW9uIG50KGQsZyxoLHYpe2NvbnN0IHk9UHQoKSxDPWZlKCksST0yMitkLFo9eVsxMV0sdWU9eVtJXT10NShaLGcsZnVuY3Rpb24g''@;'; put 'put ''QWQoKXtyZXR1cm4gQ2EubEZyYW1lLmN1cnJlbnROYW1lc3BhY2V9KCkpLF9lPUMuZmlyc3RDcmVhdGVQYXNzP2Z1bmN0aW9uIGFQKGQsZyxoLHYseSxDLEkpe2NvbnN0IFo9Zy5jb25zdHMsX2U9UzYoZyxkLDIseSxOMShaLEMpKTtyZXR1cm4geV8oZyxoLF9lLE4xKFosSSkpLG51bGwhPT1f''@;'; put 'put ''ZS5hdHRycyYmcDUoX2UsX2UuYXR0cnMsITEpLG51bGwhPT1fZS5tZXJnZWRBdHRycyYmcDUoX2UsX2UubWVyZ2VkQXR0cnMsITApLG51bGwhPT1nLnF1ZXJpZXMmJmcucXVlcmllcy5lbGVtZW50U3RhcnQoZyxfZSksX2V9KEksQyx5LDAsZyxoLHYpOkMuZGF0YVtJXTtqbihfZSwhMCk7Y29u''@;'; put 'put ''c3QgQmU9X2UubWVyZ2VkQXR0cnM7bnVsbCE9PUJlJiZaYyhaLHVlLEJlKTtjb25zdCBOZT1fZS5jbGFzc2VzO251bGwhPT1OZSYmRDMoWix1ZSxOZSk7Y29uc3QgS2U9X2Uuc3R5bGVzO3JldHVybiBudWxsIT09S2UmJkpiKFosdWUsS2UpLDY0IT0oNjQmX2UuZmxhZ3MpJiZiZihDLHksdWUs''@;'; put 'put ''X2UpLDA9PT1mdW5jdGlvbiBpYigpe3JldHVybiBDYS5sRnJhbWUuZWxlbWVudERlcHRoQ291bnR9KCkmJnF1KHVlLHkpLGZ1bmN0aW9uIGYyKCl7Q2EubEZyYW1lLmVsZW1lbnREZXB0aENvdW50Kyt9KCksemcoX2UpJiYocF8oQyx5LF9lKSxkXyhDLF9lLHkpKSxudWxsIT09diYmZ18oeSxf''@;'; put 'put ''ZSksbnR9ZnVuY3Rpb24gb3QoKXtsZXQgZD1YdCgpO18oKT9BbygpOihkPWQucGFyZW50LGpuKGQsITEpKTtjb25zdCBnPWQ7IWZ1bmN0aW9uIHBSKCl7Q2EubEZyYW1lLmVsZW1lbnREZXB0aENvdW50LS19KCk7Y29uc3QgaD1mZSgpO3JldHVybiBoLmZpcnN0Q3JlYXRlUGFzcyYmKGVtKGgs''@;'; put 'put ''ZCksS28oZCkmJmgucXVlcmllcy5lbGVtZW50RW5kKGQpKSxudWxsIT1nLmNsYXNzZXNXaXRob3V0SG9zdCYmZnVuY3Rpb24gdGEoZCl7cmV0dXJuIDAhPSgxNiZkLmZsYWdzKX0oZykmJkZfKGgsZyxQdCgpLGcuY2xhc3Nlc1dpdGhvdXRIb3N0LCEwKSxudWxsIT1nLnN0eWxlc1dpdGhvdXRI''@;'; put 'put ''b3N0JiZmdW5jdGlvbiBqMShkKXtyZXR1cm4gMCE9KDMyJmQuZmxhZ3MpfShnKSYmRl8oaCxnLFB0KCksZy5zdHlsZXNXaXRob3V0SG9zdCwhMSksb3R9ZnVuY3Rpb24gQ3IoZCxnLGgsdil7cmV0dXJuIG50KGQsZyxoLHYpLG90KCksQ3J9ZnVuY3Rpb24gQjAoZCxnLGgpe2NvbnN0IHY9UHQo''@;'; put 'put ''KSx5PWZlKCksQz1kKzIyLEk9eS5maXJzdENyZWF0ZVBhc3M/ZnVuY3Rpb24gdzUoZCxnLGgsdix5KXtjb25zdCBDPWcuY29uc3RzLEk9TjEoQyx2KSxaPVM2KGcsZCw4LCJuZy1jb250YWluZXIiLEkpO3JldHVybiBudWxsIT09SSYmcDUoWixJLCEwKSx5XyhnLGgsWixOMShDLHkpKSxudWxs''@;'; put 'put ''IT09Zy5xdWVyaWVzJiZnLnF1ZXJpZXMuZWxlbWVudFN0YXJ0KGcsWiksWn0oQyx5LHYsZyxoKTp5LmRhdGFbQ107am4oSSwhMCk7Y29uc3QgWj12W0NdPXZbMTFdLmNyZWF0ZUNvbW1lbnQoIiIpO3JldHVybiBiZih5LHYsWixJKSxxdShaLHYpLHpnKEkpJiYocF8oeSx2LEkpLGRfKHksSSx2''@;'; put 'put ''KSksbnVsbCE9aCYmZ18odixJKSxCMH1mdW5jdGlvbiBQMCgpe2xldCBkPVh0KCk7Y29uc3QgZz1mZSgpO3JldHVybiBfKCk/QW8oKTooZD1kLnBhcmVudCxqbihkLCExKSksZy5maXJzdENyZWF0ZVBhc3MmJihlbShnLGQpLEtvKGQpJiZnLnF1ZXJpZXMuZWxlbWVudEVuZChkKSksUDB9ZnVu''@;'; put 'put ''Y3Rpb24gZjEoZCxnLGgpe3JldHVybiBCMChkLGcsaCksUDAoKSxmMX1mdW5jdGlvbiB3aSgpe3JldHVybiBQdCgpfWZ1bmN0aW9uIFZtKGQpe3JldHVybiEhZCYmImZ1bmN0aW9uIj09dHlwZW9mIGQudGhlbn1mdW5jdGlvbiBTeChkKXtyZXR1cm4hIWQmJiJmdW5jdGlvbiI9PXR5cGVvZiBk''@;'; put 'put ''LnN1YnNjcmliZX1jb25zdCBIXz1TeDtmdW5jdGlvbiBHbihkLGcsaCx2KXtjb25zdCB5PVB0KCksQz1mZSgpLEk9WHQoKTtyZXR1cm4gVl8oQyx5LHlbMTFdLEksZCxnLDAsdiksR259ZnVuY3Rpb24gTl8oZCxnKXtjb25zdCBoPVh0KCksdj1QdCgpLHk9ZmUoKTtyZXR1cm4gVl8oeSx2LElf''@;'; put 'put ''KG05KHkuZGF0YSksaCx2KSxoLGQsZyksTl99ZnVuY3Rpb24gVl8oZCxnLGgsdix5LEMsSSxaKXtjb25zdCB1ZT16Zyh2KSxCZT1kLmZpcnN0Q3JlYXRlUGFzcyYmVF8oZCksTmU9Z1s4XSxLZT14XyhnKTtsZXQgcHQ9ITA7aWYoMyZ2LnR5cGV8fFope2NvbnN0IGZuPXZjKHYsZyksTG49Wj9a''@;'; put 'put ''KGZuKTpmbixpcj1LZS5sZW5ndGgsbXI9Wj93cj0+WihYMih3clt2LmluZGV4XSkpOnYuaW5kZXg7bGV0IFNyPW51bGw7aWYoIVomJnVlJiYoU3I9ZnVuY3Rpb24gbFAoZCxnLGgsdil7Y29uc3QgeT1kLmNsZWFudXA7aWYobnVsbCE9eSlmb3IobGV0IEM9MDtDPHkubGVuZ3RoLTE7Qys9Mil7''@;'; put 'put ''Y29uc3QgST15W0NdO2lmKEk9PT1oJiZ5W0MrMV09PT12KXtjb25zdCBaPWdbN10sdWU9eVtDKzJdO3JldHVybiBaLmxlbmd0aD51ZT9aW3VlXTpudWxsfSJzdHJpbmciPT10eXBlb2YgSSYmKEMrPTIpfXJldHVybiBudWxsfShkLGcseSx2LmluZGV4KSksbnVsbCE9PVNyKShTci5fX25nTGFz''@;'; put 'put ''dExpc3RlbmVyRm5fX3x8U3IpLl9fbmdOZXh0TGlzdGVuZXJGbl9fPUMsU3IuX19uZ0xhc3RMaXN0ZW5lckZuX189QyxwdD0hMTtlbHNle0M9Q0EodixnLE5lLEMsITEpO2NvbnN0IHdyPWgubGlzdGVuKExuLHksQyk7S2UucHVzaChDLHdyKSxCZSYmQmUucHVzaCh5LG1yLGlyLGlyKzEpfX1l''@;'; put 'put ''bHNlIEM9Q0EodixnLE5lLEMsITEpO2NvbnN0IE90PXYub3V0cHV0cztsZXQgJHQ7aWYocHQmJm51bGwhPT1PdCYmKCR0PU90W3ldKSl7Y29uc3QgZm49JHQubGVuZ3RoO2lmKGZuKWZvcihsZXQgTG49MDtMbjxmbjtMbis9Mil7Y29uc3QgUXI9Z1skdFtMbl1dWyR0W0xuKzFdXS5zdWJzY3Jp''@;'; put 'put ''YmUoQykseWk9S2UubGVuZ3RoO0tlLnB1c2goQyxRciksQmUmJkJlLnB1c2goeSx2LmluZGV4LHlpLC0oeWkrMSkpfX19ZnVuY3Rpb24gam0oZCxnLGgsdil7dHJ5e3JldHVybiExIT09aCh2KX1jYXRjaCh5KXtyZXR1cm4gbUEoZCx5KSwhMX19ZnVuY3Rpb24gQ0EoZCxnLGgsdix5KXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24gQyhJKXtpZihJPT09RnVuY3Rpb24pcmV0dXJuIHY7cEEoMiZkLmZsYWdzP1F1KGQuaW5kZXgsZyk6Zyk7bGV0IHVlPWptKGcsMCx2LEkpLF9lPUMuX19uZ05leHRMaXN0ZW5lckZuX187Zm9yKDtfZTspdWU9am0oZywwLF9lLEkpJiZ1ZSxfZT1fZS5fX25nTmV4dExpc3Rl''@;'; put 'put ''bmVyRm5fXztyZXR1cm4geSYmITE9PT11ZSYmKEkucHJldmVudERlZmF1bHQoKSxJLnJldHVyblZhbHVlPSExKSx1ZX19ZnVuY3Rpb24gUXQoZD0xKXtyZXR1cm4gZnVuY3Rpb24gWHAoZCl7cmV0dXJuKENhLmxGcmFtZS5jb250ZXh0TFZpZXc9ZnVuY3Rpb24gWmYoZCxnKXtmb3IoO2Q+MDsp''@;'; put 'put ''Zz1nWzE1XSxkLS07cmV0dXJuIGd9KGQsQ2EubEZyYW1lLmNvbnRleHRMVmlldykpWzhdfShkKX1mdW5jdGlvbiBzUChkLGcpe2xldCBoPW51bGw7Y29uc3Qgdj1mdW5jdGlvbiBBQihkKXtjb25zdCBnPWQuYXR0cnM7aWYobnVsbCE9Zyl7Y29uc3QgaD1nLmluZGV4T2YoNSk7aWYoMD09KDEm''@;'; put 'put ''aCkpcmV0dXJuIGdbaCsxXX1yZXR1cm4gbnVsbH0oZCk7Zm9yKGxldCB5PTA7eTxnLmxlbmd0aDt5Kyspe2NvbnN0IEM9Z1t5XTtpZigiKiIhPT1DKXtpZihudWxsPT09dj9LYihkLEMsITApOnlCKHYsQykpcmV0dXJuIHl9ZWxzZSBoPXl9cmV0dXJuIGh9ZnVuY3Rpb24gSzAoZCl7Y29uc3Qg''@;'; put 'put ''Zz1QdCgpWzE2XVs2XTtpZighZy5wcm9qZWN0aW9uKXtjb25zdCB2PWcucHJvamVjdGlvbj1tMyhkP2QubGVuZ3RoOjEsbnVsbCkseT12LnNsaWNlKCk7bGV0IEM9Zy5jaGlsZDtmb3IoO251bGwhPT1DOyl7Y29uc3QgST1kP3NQKEMsZCk6MDtudWxsIT09SSYmKHlbSV0/eVtJXS5wcm9qZWN0''@;'; put 'put ''aW9uTmV4dD1DOnZbSV09Qyx5W0ldPUMpLEM9Qy5uZXh0fX19ZnVuY3Rpb24gTmkoZCxnPTAsaCl7Y29uc3Qgdj1QdCgpLHk9ZmUoKSxDPVM2KHksMjIrZCwxNixudWxsLGh8fG51bGwpO251bGw9PT1DLnByb2plY3Rpb24mJihDLnByb2plY3Rpb249ZyksQW8oKSw2NCE9KDY0JkMuZmxhZ3Mp''@;'; put 'put ''JiZmdW5jdGlvbiBtQihkLGcsaCl7TkUoZ1sxMV0sMCxnLGgsamIoZCxoLGcpLFBFKGgucGFyZW50fHxnWzZdLGgsZykpfSh5LHYsQyl9ZnVuY3Rpb24gSTYoZCxnLGgpe3JldHVybiBabShkLCIiLGcsIiIsaCksSTZ9ZnVuY3Rpb24gWm0oZCxnLGgsdix5KXtjb25zdCBDPVB0KCksST1tNShD''@;'; put 'put ''LGcsaCx2KTtyZXR1cm4gSSE9PU5hJiZlYyhmZSgpLEYyKCksQyxkLEksQ1sxMV0seSwhMSksWm19ZnVuY3Rpb24gRHgoZCxnLGgsdix5KXtjb25zdCBDPWRbaCsxXSxJPW51bGw9PT1nO2xldCBaPXY/RGgoQyk6RGQoQyksdWU9ITE7Zm9yKDswIT09WiYmKCExPT09dWV8fEkpOyl7Y29uc3Qg''@;'; put 'put ''QmU9ZFtaKzFdO1pfKGRbWl0sZykmJih1ZT0hMCxkW1orMV09dj9hNShCZSk6aV8oQmUpKSxaPXY/RGgoQmUpOkRkKEJlKX11ZSYmKGRbaCsxXT12P2lfKEMpOmE1KEMpKX1mdW5jdGlvbiBaXyhkLGcpe3JldHVybiBudWxsPT09ZHx8bnVsbD09Z3x8KEFycmF5LmlzQXJyYXkoZCk/ZFsxXTpk''@;'; put 'put ''KT09PWd8fCEoIUFycmF5LmlzQXJyYXkoZCl8fCJzdHJpbmciIT10eXBlb2YgZykmJkY4KGQsZyk+PTB9ZnVuY3Rpb24gTmQoZCxnLGgpe3JldHVybiAkZihkLGcsaCwhMSksTmR9ZnVuY3Rpb24gRmkoZCxnKXtyZXR1cm4gJGYoZCxnLG51bGwsITApLEZpfWZ1bmN0aW9uICRmKGQsZyxoLHYp''@;'; put 'put ''e2NvbnN0IHk9UHQoKSxDPWZlKCksST1vMigyKTtDLmZpcnN0VXBkYXRlUGFzcyYmZnVuY3Rpb24gangoZCxnLGgsdil7Y29uc3QgeT1kLmRhdGE7aWYobnVsbD09PXlbaCsxXSl7Y29uc3QgQz15W1VsKCldLEk9ZnVuY3Rpb24gVngoZCxnKXtyZXR1cm4gZz49ZC5leHBhbmRvU3RhcnRJbmRl''@;'; put 'put ''eH0oZCxoKTsoZnVuY3Rpb24gR20oZCxnKXtyZXR1cm4gMCE9KGQuZmxhZ3MmKGc/MTY6MzIpKX0pKEMsdikmJm51bGw9PT1nJiYhSSYmKGc9ITEpLGc9ZnVuY3Rpb24gWngoZCxnLGgsdil7Y29uc3QgeT1tOShkKTtsZXQgQz12P2cucmVzaWR1YWxDbGFzc2VzOmcucmVzaWR1YWxTdHlsZXM7''@;'; put 'put ''aWYobnVsbD09PXkpMD09PSh2P2cuY2xhc3NCaW5kaW5nczpnLnN0eWxlQmluZGluZ3MpJiYoaD1fNShoPXpfKG51bGwsZCxnLGgsdiksZy5hdHRycyx2KSxDPW51bGwpO2Vsc2V7Y29uc3QgST1nLmRpcmVjdGl2ZVN0eWxpbmdMYXN0O2lmKC0xPT09SXx8ZFtJXSE9PXkpaWYoaD16Xyh5LGQs''@;'; put 'put ''ZyxoLHYpLG51bGw9PT1DKXtsZXQgdWU9ZnVuY3Rpb24gQVAoZCxnLGgpe2NvbnN0IHY9aD9nLmNsYXNzQmluZGluZ3M6Zy5zdHlsZUJpbmRpbmdzO2lmKDAhPT1EZCh2KSlyZXR1cm4gZFtEaCh2KV19KGQsZyx2KTt2b2lkIDAhPT11ZSYmQXJyYXkuaXNBcnJheSh1ZSkmJih1ZT16XyhudWxs''@;'; put 'put ''LGQsZyx1ZVsxXSx2KSx1ZT1fNSh1ZSxnLmF0dHJzLHYpLGZ1bmN0aW9uIHlQKGQsZyxoLHYpe2RbRGgoaD9nLmNsYXNzQmluZGluZ3M6Zy5zdHlsZUJpbmRpbmdzKV09dn0oZCxnLHYsdWUpKX1lbHNlIEM9ZnVuY3Rpb24gengoZCxnLGgpe2xldCB2O2NvbnN0IHk9Zy5kaXJlY3RpdmVFbmQ7''@;'; put 'put ''Zm9yKGxldCBDPTErZy5kaXJlY3RpdmVTdHlsaW5nTGFzdDtDPHk7QysrKXY9XzUodixkW0NdLmhvc3RBdHRycyxoKTtyZXR1cm4gXzUodixnLmF0dHJzLGgpfShkLGcsdil9cmV0dXJuIHZvaWQgMCE9PUMmJih2P2cucmVzaWR1YWxDbGFzc2VzPUM6Zy5yZXNpZHVhbFN0eWxlcz1DKSxofSh5''@;'; put 'put ''LEMsZyx2KSxmdW5jdGlvbiB1UChkLGcsaCx2LHksQyl7bGV0IEk9Qz9nLmNsYXNzQmluZGluZ3M6Zy5zdHlsZUJpbmRpbmdzLFo9RGgoSSksdWU9RGQoSSk7ZFt2XT1oO2xldCBCZSxfZT0hMTtpZihBcnJheS5pc0FycmF5KGgpKXtjb25zdCBOZT1oO0JlPU5lWzFdLChudWxsPT09QmV8fEY4''@;'; put 'put ''KE5lLEJlKT4wKSYmKF9lPSEwKX1lbHNlIEJlPWg7aWYoeSlpZigwIT09dWUpe2NvbnN0IEtlPURoKGRbWisxXSk7ZFt2KzFdPSQ5KEtlLFopLDAhPT1LZSYmKGRbS2UrMV09XzYoZFtLZSsxXSx2KSksZFtaKzFdPWZ1bmN0aW9uIHE5KGQsZyl7cmV0dXJuIDEzMTA3MSZkfGc8PDE3fShkW1or''@;'; put 'put ''MV0sdil9ZWxzZSBkW3YrMV09JDkoWiwwKSwwIT09WiYmKGRbWisxXT1fNihkW1orMV0sdikpLFo9djtlbHNlIGRbdisxXT0kOSh1ZSwwKSwwPT09Wj9aPXY6ZFt1ZSsxXT1fNihkW3VlKzFdLHYpLHVlPXY7X2UmJihkW3YrMV09aV8oZFt2KzFdKSksRHgoZCxCZSx2LCEwKSxEeChkLEJlLHYs''@;'; put 'put ''ITEpLGZ1bmN0aW9uIGNQKGQsZyxoLHYseSl7Y29uc3QgQz15P2QucmVzaWR1YWxDbGFzc2VzOmQucmVzaWR1YWxTdHlsZXM7bnVsbCE9QyYmInN0cmluZyI9PXR5cGVvZiBnJiZGOChDLGcpPj0wJiYoaFt2KzFdPWE1KGhbdisxXSkpfShnLEJlLGQsdixDKSxJPSQ5KFosdWUpLEM/Zy5jbGFz''@;'; put 'put ''c0JpbmRpbmdzPUk6Zy5zdHlsZUJpbmRpbmdzPUl9KHksQyxnLGgsSSx2KX19KEMsZCxJLHYpLGchPT1OYSYmdGMoeSxJLGcpJiZmdW5jdGlvbiBHXyhkLGcsaCx2LHksQyxJLFope2lmKCEoMyZnLnR5cGUpKXJldHVybjtjb25zdCB1ZT1kLmRhdGEsX2U9dWVbWisxXTtrQShmdW5jdGlvbiBl''@;'; put 'put ''QShkKXtyZXR1cm4gMT09KDEmZCl9KF9lKT9XXyh1ZSxnLGgseSxEZChfZSksSSk6dm9pZCAwKXx8KGtBKEMpfHxmdW5jdGlvbiByXyhkKXtyZXR1cm4gMj09KDImZCl9KF9lKSYmKEM9V18odWUsbnVsbCxoLHksWixJKSksZnVuY3Rpb24gdkIoZCxnLGgsdix5KXtpZihnKXk/ZC5hZGRDbGFz''@;'; put 'put ''cyhoLHYpOmQucmVtb3ZlQ2xhc3MoaCx2KTtlbHNle2xldCBDPS0xPT09di5pbmRleE9mKCItIik/dm9pZCAwOmZ1LkRhc2hDYXNlO251bGw9PXk/ZC5yZW1vdmVTdHlsZShoLHYsQyk6KCJzdHJpbmciPT10eXBlb2YgeSYmeS5lbmRzV2l0aCgiIWltcG9ydGFudCIpJiYoeT15LnNsaWNlKDAs''@;'; put 'put ''LTEwKSxDfD1mdS5JbXBvcnRhbnQpLGQuc2V0U3R5bGUoaCx2LHksQykpfX0odixJLFVwKFVsKCksaCkseSxDKSl9KEMsQy5kYXRhW1VsKCldLHkseVsxMV0sZCx5W0krMV09ZnVuY3Rpb24gTHUoZCxnKXtyZXR1cm4gbnVsbD09ZHx8KCJzdHJpbmciPT10eXBlb2YgZz9kKz1nOiJvYmplY3Qi''@;'; put 'put ''PT10eXBlb2YgZCYmKGQ9bW4oZDIoZCkpKSksZH0oZyxoKSx2LEkpfWZ1bmN0aW9uIHpfKGQsZyxoLHYseSl7bGV0IEM9bnVsbDtjb25zdCBJPWguZGlyZWN0aXZlRW5kO2xldCBaPWguZGlyZWN0aXZlU3R5bGluZ0xhc3Q7Zm9yKC0xPT09Wj9aPWguZGlyZWN0aXZlU3RhcnQ6WisrO1o8SSYm''@;'; put 'put ''KEM9Z1taXSx2PV81KHYsQy5ob3N0QXR0cnMseSksQyE9PWQpOylaKys7cmV0dXJuIG51bGwhPT1kJiYoaC5kaXJlY3RpdmVTdHlsaW5nTGFzdD1aKSx2fWZ1bmN0aW9uIF81KGQsZyxoKXtjb25zdCB2PWg/MToyO2xldCB5PS0xO2lmKG51bGwhPT1nKWZvcihsZXQgQz0wO0M8Zy5sZW5ndGg7''@;'; put 'put ''QysrKXtjb25zdCBJPWdbQ107Im51bWJlciI9PXR5cGVvZiBJP3k9STp5PT09diYmKEFycmF5LmlzQXJyYXkoZCl8fChkPXZvaWQgMD09PWQ/W106WyIiLGRdKSxZYyhkLEksISFofHxnWysrQ10pKX1yZXR1cm4gdm9pZCAwPT09ZD9udWxsOmR9ZnVuY3Rpb24gV18oZCxnLGgsdix5LEMpe2Nv''@;'; put 'put ''bnN0IEk9bnVsbD09PWc7bGV0IFo7Zm9yKDt5PjA7KXtjb25zdCB1ZT1kW3ldLF9lPUFycmF5LmlzQXJyYXkodWUpLEJlPV9lP3VlWzFdOnVlLE5lPW51bGw9PT1CZTtsZXQgS2U9aFt5KzFdO0tlPT09TmEmJihLZT1OZT9aMDp2b2lkIDApO2xldCBwdD1OZT9pbShLZSx2KTpCZT09PXY/S2U6''@;'; put 'put ''dm9pZCAwO2lmKF9lJiYha0EocHQpJiYocHQ9aW0odWUsdikpLGtBKHB0KSYmKFo9cHQsSSkpcmV0dXJuIFo7Y29uc3QgT3Q9ZFt5KzFdO3k9ST9EaChPdCk6RGQoT3QpfWlmKG51bGwhPT1nKXtsZXQgdWU9Qz9nLnJlc2lkdWFsQ2xhc3NlczpnLnJlc2lkdWFsU3R5bGVzO251bGwhPXVlJiYo''@;'; put 'put ''Wj1pbSh1ZSx2KSl9cmV0dXJuIFp9ZnVuY3Rpb24ga0EoZCl7cmV0dXJuIHZvaWQgMCE9PWR9ZnVuY3Rpb24gWXQoZCxnPSIiKXtjb25zdCBoPVB0KCksdj1mZSgpLHk9ZCsyMixDPXYuZmlyc3RDcmVhdGVQYXNzP1M2KHYseSwxLGcsbnVsbCk6di5kYXRhW3ldLEk9aFt5XT1mdW5jdGlvbiBG''@;'; put 'put ''YihkLGcpe3JldHVybiBkLmNyZWF0ZVRleHQoZyl9KGhbMTFdLGcpO2JmKHYsaCxJLEMpLGpuKEMsITEpfWZ1bmN0aW9uIGppKGQpe3JldHVybiBKaSgiIixkLCIiKSxqaX1mdW5jdGlvbiBKaShkLGcsaCl7Y29uc3Qgdj1QdCgpLHk9bTUodixkLGcsaCk7cmV0dXJuIHkhPT1OYSYmUmgodixV''@;'; put 'put ''bCgpLHkpLEppfWZ1bmN0aW9uIEZoKGQsZyxoLHYseSl7Y29uc3QgQz1QdCgpLEk9ZnVuY3Rpb24gS2YoZCxnLGgsdix5LEMpe2NvbnN0IFo9eDYoZCxNbigpLGgseSk7cmV0dXJuIG8yKDIpLFo/ZytKbihoKSt2K0puKHkpK0M6TmF9KEMsZCxnLGgsdix5KTtyZXR1cm4gSSE9PU5hJiZSaChD''@;'; put 'put ''LFVsKCksSSksRmh9ZnVuY3Rpb24ga2YoZCxnLGgsdix5LEMsSSl7Y29uc3QgWj1QdCgpLHVlPWZ1bmN0aW9uIEZkKGQsZyxoLHYseSxDLEksWil7Y29uc3QgX2U9YkEoZCxNbigpLGgseSxJKTtyZXR1cm4gbzIoMyksX2U/ZytKbihoKSt2K0puKHkpK0MrSm4oSSkrWjpOYX0oWixkLGcsaCx2''@;'; put 'put ''LHksQyxJKTtyZXR1cm4gdWUhPT1OYSYmUmgoWixVbCgpLHVlKSxrZn1mdW5jdGlvbiBCMyhkLGcsaCl7Y29uc3Qgdj1QdCgpO3JldHVybiB0Yyh2LGkyKCksZykmJmVjKGZlKCksRjIoKSx2LGQsZyx2WzExXSxoLCEwKSxCM31mdW5jdGlvbiBDNShkLGcsaCl7Y29uc3Qgdj1QdCgpO2lmKHRj''@;'; put 'put ''KHYsaTIoKSxnKSl7Y29uc3QgQz1mZSgpLEk9RjIoKTtlYyhDLEksdixkLGcsSV8obTkoQy5kYXRhKSxJLHYpLGgsITApfXJldHVybiBDNX1jb25zdCBOaD12b2lkIDA7dmFyIGVDPVsiZW4iLFtbImEiLCJwIl0sWyJBTSIsIlBNIl0sTmhdLFtbIkFNIiwiUE0iXSxOaCxOaF0sW1siUyIsIk0i''@;'; put 'put ''LCJUIiwiVyIsIlQiLCJGIiwiUyJdLFsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sWyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLFsiU3UiLCJNbyIsIlR1IiwiV2UiLCJUaCIs''@;'; put 'put ''IkZyIiwiU2EiXV0sTmgsW1siSiIsIkYiLCJNIiwiQSIsIk0iLCJKIiwiSiIsIkEiLCJTIiwiTyIsIk4iLCJEIl0sWyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1h''@;'; put 'put ''cmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl1dLE5oLFtbIkIiLCJBIl0sWyJCQyIsIkFEIl0sWyJCZWZvcmUgQ2hyaXN0IiwiQW5ubyBEb21pbmkiXV0sMCxbNiwwXSxbIk0vZC95eSIs''@;'; put 'put ''Ik1NTSBkLCB5IiwiTU1NTSBkLCB5IiwiRUVFRSwgTU1NTSBkLCB5Il0sWyJoOm1tIGEiLCJoOm1tOnNzIGEiLCJoOm1tOnNzIGEgeiIsImg6bW06c3MgYSB6enp6Il0sWyJ7MX0sIHswfSIsTmgsInsxfSAnYXQnIHswfSIsTmhdLFsiLiIsIiwiLCI7IiwiJSIsIisiLCItIiwiRSIsIlx4ZDci''@;'; put 'put ''LCJcdTIwMzAiLCJcdTIyMWUiLCJOYU4iLCI6Il0sWyIjLCMjMC4jIyMiLCIjLCMjMCUiLCJceGE0IywjIzAuMDAiLCIjRTAiXSwiVVNEIiwiJCIsIlVTIERvbGxhciIse30sImx0ciIsZnVuY3Rpb24gcV8oZCl7Y29uc3QgaD1NYXRoLmZsb29yKE1hdGguYWJzKGQpKSx2PWQudG9TdHJpbmco''@;'; put 'put ''KS5yZXBsYWNlKC9eW14uXSpcLj8vLCIiKS5sZW5ndGg7cmV0dXJuIDE9PT1oJiYwPT09dj8xOjV9XTtsZXQgazU9e307ZnVuY3Rpb24gcmMoZCl7Y29uc3QgZz1mdW5jdGlvbiBvVChkKXtyZXR1cm4gZC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL18vZywiLSIpfShkKTtsZXQgaD1pVChnKTtp''@;'; put 'put ''ZihoKXJldHVybiBoO2NvbnN0IHY9Zy5zcGxpdCgiLSIpWzBdO2lmKGg9aVQodiksaClyZXR1cm4gaDtpZigiZW4iPT09dilyZXR1cm4gZUM7dGhyb3cgbmV3IGVuKDcwMSwhMSl9ZnVuY3Rpb24gaVQoZCl7cmV0dXJuIGQgaW4gazV8fChrNVtkXT1QbC5uZyYmUGwubmcuY29tbW9uJiZQbC5u''@;'; put 'put ''Zy5jb21tb24ubG9jYWxlcyYmUGwubmcuY29tbW9uLmxvY2FsZXNbZF0pLGs1W2RdfXZhciBNbz0oKCk9PigoTW89TW98fHt9KVtNby5Mb2NhbGVJZD0wXT0iTG9jYWxlSWQiLE1vW01vLkRheVBlcmlvZHNGb3JtYXQ9MV09IkRheVBlcmlvZHNGb3JtYXQiLE1vW01vLkRheVBlcmlvZHNTdGFu''@;'; put 'put ''ZGFsb25lPTJdPSJEYXlQZXJpb2RzU3RhbmRhbG9uZSIsTW9bTW8uRGF5c0Zvcm1hdD0zXT0iRGF5c0Zvcm1hdCIsTW9bTW8uRGF5c1N0YW5kYWxvbmU9NF09IkRheXNTdGFuZGFsb25lIixNb1tNby5Nb250aHNGb3JtYXQ9NV09Ik1vbnRoc0Zvcm1hdCIsTW9bTW8uTW9udGhzU3RhbmRhbG9u''@;'; put 'put ''ZT02XT0iTW9udGhzU3RhbmRhbG9uZSIsTW9bTW8uRXJhcz03XT0iRXJhcyIsTW9bTW8uRmlyc3REYXlPZldlZWs9OF09IkZpcnN0RGF5T2ZXZWVrIixNb1tNby5XZWVrZW5kUmFuZ2U9OV09IldlZWtlbmRSYW5nZSIsTW9bTW8uRGF0ZUZvcm1hdD0xMF09IkRhdGVGb3JtYXQiLE1vW01vLlRp''@;'; put 'put ''bWVGb3JtYXQ9MTFdPSJUaW1lRm9ybWF0IixNb1tNby5EYXRlVGltZUZvcm1hdD0xMl09IkRhdGVUaW1lRm9ybWF0IixNb1tNby5OdW1iZXJTeW1ib2xzPTEzXT0iTnVtYmVyU3ltYm9scyIsTW9bTW8uTnVtYmVyRm9ybWF0cz0xNF09Ik51bWJlckZvcm1hdHMiLE1vW01vLkN1cnJlbmN5Q29k''@;'; put 'put ''ZT0xNV09IkN1cnJlbmN5Q29kZSIsTW9bTW8uQ3VycmVuY3lTeW1ib2w9MTZdPSJDdXJyZW5jeVN5bWJvbCIsTW9bTW8uQ3VycmVuY3lOYW1lPTE3XT0iQ3VycmVuY3lOYW1lIixNb1tNby5DdXJyZW5jaWVzPTE4XT0iQ3VycmVuY2llcyIsTW9bTW8uRGlyZWN0aW9uYWxpdHk9MTldPSJEaXJl''@;'; put 'put ''Y3Rpb25hbGl0eSIsTW9bTW8uUGx1cmFsQ2FzZT0yMF09IlBsdXJhbENhc2UiLE1vW01vLkV4dHJhRGF0YT0yMV09IkV4dHJhRGF0YSIsTW8pKSgpO2NvbnN0IFM1PSJlbi1VUyI7bGV0IE01PVM1O2Z1bmN0aW9uIEthKGQsZyxoLHYseSl7aWYoZD1HdChkKSxBcnJheS5pc0FycmF5KGQpKWZv''@;'; put 'put ''cihsZXQgQz0wO0M8ZC5sZW5ndGg7QysrKUthKGRbQ10sZyxoLHYseSk7ZWxzZXtjb25zdCBDPWZlKCksST1QdCgpO2xldCBaPWszKGQpP2Q6R3QoZC5wcm92aWRlKSx1ZT1wRShkKTtjb25zdCBfZT1YdCgpLEJlPTEwNDg1NzUmX2UucHJvdmlkZXJJbmRleGVzLE5lPV9lLmRpcmVjdGl2ZVN0''@;'; put 'put ''YXJ0LEtlPV9lLnByb3ZpZGVySW5kZXhlcz4+MjA7aWYoazMoZCl8fCFkLm11bHRpKXtjb25zdCBwdD1uZXcgd2QodWUseSxLdCksT3Q9cW0oWixnLHk/QmU6QmUrS2UsTmUpOy0xPT09T3Q/KEdmKGU2KF9lLEkpLEMsWiksS20oQyxkLGcubGVuZ3RoKSxnLnB1c2goWiksX2UuZGlyZWN0aXZl''@;'; put 'put ''U3RhcnQrKyxfZS5kaXJlY3RpdmVFbmQrKyx5JiYoX2UucHJvdmlkZXJJbmRleGVzKz0xMDQ4NTc2KSxoLnB1c2gocHQpLEkucHVzaChwdCkpOihoW090XT1wdCxJW090XT1wdCl9ZWxzZXtjb25zdCBwdD1xbShaLGcsQmUrS2UsTmUpLE90PXFtKFosZyxCZSxCZStLZSksJHQ9cHQ+PTAmJmhb''@;'; put 'put ''cHRdLGZuPU90Pj0wJiZoW090XTtpZih5JiYhZm58fCF5JiYhJHQpe0dmKGU2KF9lLEkpLEMsWik7Y29uc3QgTG49ZnVuY3Rpb24gVVAoZCxnLGgsdix5KXtjb25zdCBDPW5ldyB3ZChkLGgsS3QpO3JldHVybiBDLm11bHRpPVtdLEMuaW5kZXg9ZyxDLmNvbXBvbmVudFByb3ZpZGVycz0wLCRt''@;'; put 'put ''KEMseSx2JiYhaCksQ30oeT9mQzpaZCxoLmxlbmd0aCx5LHYsdWUpOyF5JiZmbiYmKGhbT3RdLnByb3ZpZGVyRmFjdG9yeT1MbiksS20oQyxkLGcubGVuZ3RoLDApLGcucHVzaChaKSxfZS5kaXJlY3RpdmVTdGFydCsrLF9lLmRpcmVjdGl2ZUVuZCsrLHkmJihfZS5wcm92aWRlckluZGV4ZXMr''@;'; put 'put ''PTEwNDg1NzYpLGgucHVzaChMbiksSS5wdXNoKExuKX1lbHNlIEttKEMsZCxwdD4tMT9wdDpPdCwkbShoW3k/T3Q6cHRdLHVlLCF5JiZ2KSk7IXkmJnYmJmZuJiZoW090XS5jb21wb25lbnRQcm92aWRlcnMrK319fWZ1bmN0aW9uIEttKGQsZyxoLHYpe2NvbnN0IHk9azMoZyksQz1mdW5jdGlv''@;'; put 'put ''biBDYihkKXtyZXR1cm4hIWQudXNlQ2xhc3N9KGcpO2lmKHl8fEMpe2NvbnN0IHVlPShDP0d0KGcudXNlQ2xhc3MpOmcpLnByb3RvdHlwZS5uZ09uRGVzdHJveTtpZih1ZSl7Y29uc3QgX2U9ZC5kZXN0cm95SG9va3N8fChkLmRlc3Ryb3lIb29rcz1bXSk7aWYoIXkmJmcubXVsdGkpe2NvbnN0''@;'; put 'put ''IEJlPV9lLmluZGV4T2YoaCk7LTE9PT1CZT9fZS5wdXNoKGgsW3YsdWVdKTpfZVtCZSsxXS5wdXNoKHYsdWUpfWVsc2UgX2UucHVzaChoLHVlKX19fWZ1bmN0aW9uICRtKGQsZyxoKXtyZXR1cm4gaCYmZC5jb21wb25lbnRQcm92aWRlcnMrKyxkLm11bHRpLnB1c2goZyktMX1mdW5jdGlvbiBx''@;'; put 'put ''bShkLGcsaCx2KXtmb3IobGV0IHk9aDt5PHY7eSsrKWlmKGdbeV09PT1kKXJldHVybiB5O3JldHVybi0xfWZ1bmN0aW9uIFpkKGQsZyxoLHYpe3JldHVybiBvYyh0aGlzLm11bHRpLFtdKX1mdW5jdGlvbiBmQyhkLGcsaCx2KXtjb25zdCB5PXRoaXMubXVsdGk7bGV0IEM7aWYodGhpcy5wcm92''@;'; put 'put ''aWRlckZhY3Rvcnkpe2NvbnN0IEk9dGhpcy5wcm92aWRlckZhY3RvcnkuY29tcG9uZW50UHJvdmlkZXJzLFo9VDQoaCxoWzFdLHRoaXMucHJvdmlkZXJGYWN0b3J5LmluZGV4LHYpO0M9Wi5zbGljZSgwLEkpLG9jKHksQyk7Zm9yKGxldCB1ZT1JO3VlPFoubGVuZ3RoO3VlKyspQy5wdXNoKFpb''@;'; put 'put ''dWVdKX1lbHNlIEM9W10sb2MoeSxDKTtyZXR1cm4gQ31mdW5jdGlvbiBvYyhkLGcpe2ZvcihsZXQgaD0wO2g8ZC5sZW5ndGg7aCsrKWcucHVzaCgoMCxkW2hdKSgpKTtyZXR1cm4gZ31mdW5jdGlvbiBobyhkLGc9W10pe3JldHVybiBoPT57aC5wcm92aWRlcnNSZXNvbHZlcj0odix5KT0+ZnVu''@;'; put 'put ''Y3Rpb24gaDEoZCxnLGgpe2NvbnN0IHY9ZmUoKTtpZih2LmZpcnN0Q3JlYXRlUGFzcyl7Y29uc3QgeT1WZihkKTtLYShoLHYuZGF0YSx2LmJsdWVwcmludCx5LCEwKSxLYShnLHYuZGF0YSx2LmJsdWVwcmludCx5LCExKX19KHYseT95KGQpOmQsZyl9fWNsYXNzIEgze31jbGFzcyBDMXt9Y2xh''@;'; put 'put ''c3MgemQgZXh0ZW5kcyBIM3tjb25zdHJ1Y3RvcihnLGgpe3N1cGVyKCksdGhpcy5fcGFyZW50PWgsdGhpcy5fYm9vdHN0cmFwQ29tcG9uZW50cz1bXSx0aGlzLmRlc3Ryb3lDYnM9W10sdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9bmV3IERfKHRoaXMpO2NvbnN0IHY9Q3MoZyk7dGhp''@;'; put 'put ''cy5fYm9vdHN0cmFwQ29tcG9uZW50cz15Zih2LmJvb3RzdHJhcCksdGhpcy5fcjNJbmplY3Rvcj1uNShnLGgsW3twcm92aWRlOkgzLHVzZVZhbHVlOnRoaXN9LHtwcm92aWRlOlNkLHVzZVZhbHVlOnRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyfV0sbW4oZyksbmV3IFNldChbImVudmly''@;'; put 'put ''b25tZW50Il0pKSx0aGlzLl9yM0luamVjdG9yLnJlc29sdmVJbmplY3RvckluaXRpYWxpemVycygpLHRoaXMuaW5zdGFuY2U9dGhpcy5fcjNJbmplY3Rvci5nZXQoZyl9Z2V0IGluamVjdG9yKCl7cmV0dXJuIHRoaXMuX3IzSW5qZWN0b3J9ZGVzdHJveSgpe2NvbnN0IGc9dGhpcy5fcjNJbmpl''@;'; put 'put ''Y3RvcjshZy5kZXN0cm95ZWQmJmcuZGVzdHJveSgpLHRoaXMuZGVzdHJveUNicy5mb3JFYWNoKGg9PmgoKSksdGhpcy5kZXN0cm95Q2JzPW51bGx9b25EZXN0cm95KGcpe3RoaXMuZGVzdHJveUNicy5wdXNoKGcpfX1jbGFzcyBlNyBleHRlbmRzIEMxe2NvbnN0cnVjdG9yKGcpe3N1cGVyKCks''@;'; put 'put ''dGhpcy5tb2R1bGVUeXBlPWd9Y3JlYXRlKGcpe3JldHVybiBuZXcgemQodGhpcy5tb2R1bGVUeXBlLGcpfX1jbGFzcyBTYyBleHRlbmRzIEgze2NvbnN0cnVjdG9yKGcsaCx2KXtzdXBlcigpLHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPW5ldyBEXyh0aGlzKSx0aGlzLmluc3RhbmNl''@;'; put 'put ''PW51bGw7Y29uc3QgeT1uZXcga2IoWy4uLmcse3Byb3ZpZGU6SDMsdXNlVmFsdWU6dGhpc30se3Byb3ZpZGU6U2QsdXNlVmFsdWU6dGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJ9XSxofHxNMygpLHYsbmV3IFNldChbImVudmlyb25tZW50Il0pKTt0aGlzLmluamVjdG9yPXkseS5yZXNv''@;'; put 'put ''bHZlSW5qZWN0b3JJbml0aWFsaXplcnMoKX1kZXN0cm95KCl7dGhpcy5pbmplY3Rvci5kZXN0cm95KCl9b25EZXN0cm95KGcpe3RoaXMuaW5qZWN0b3Iub25EZXN0cm95KGcpfX1mdW5jdGlvbiB0NyhkLGcsaD1udWxsKXtyZXR1cm4gbmV3IFNjKGQsZyxoKS5pbmplY3Rvcn1mdW5jdGlvbiBj''@;'; put 'put ''cyhkLGcsaCl7Y29uc3Qgdj1scygpK2QseT1QdCgpO3JldHVybiB5W3ZdPT09TmE/TDMoeSx2LGg/Zy5jYWxsKGgpOmcoKSk6ZnVuY3Rpb24gTm0oZCxnKXtyZXR1cm4gZFtnXX0oeSx2KX1mdW5jdGlvbiBHZChkLGcsaCx2KXtyZXR1cm4gWWUoUHQoKSxscygpLGQsZyxoLHYpfWZ1bmN0aW9u''@;'; put 'put ''IGozKGQsZyxoLHYseSl7cmV0dXJuIE10KFB0KCksbHMoKSxkLGcsaCx2LHkpfWZ1bmN0aW9uIEgoZCxnLGgsdix5LEMpe3JldHVybiB4dChQdCgpLGxzKCksZCxnLGgsdix5LEMpfWZ1bmN0aW9uIGllKGQsZyxoLHYseSxDLEkpe3JldHVybiBmdW5jdGlvbiBSdChkLGcsaCx2LHksQyxJLFos''@;'; put 'put ''dWUpe2NvbnN0IF9lPWcraDtyZXR1cm4gZnVuY3Rpb24gWGYoZCxnLGgsdix5LEMpe2NvbnN0IEk9eDYoZCxnLGgsdik7cmV0dXJuIHg2KGQsZysyLHksQyl8fEl9KGQsX2UseSxDLEksWik/TDMoZCxfZSs0LHVlP3YuY2FsbCh1ZSx5LEMsSSxaKTp2KHksQyxJLFopKTpqZShkLF9lKzQpfShQ''@;'; put 'put ''dCgpLGxzKCksZCxnLGgsdix5LEMsSSl9ZnVuY3Rpb24gamUoZCxnKXtjb25zdCBoPWRbZ107cmV0dXJuIGg9PT1OYT92b2lkIDA6aH1mdW5jdGlvbiBZZShkLGcsaCx2LHksQyl7Y29uc3QgST1nK2g7cmV0dXJuIHRjKGQsSSx5KT9MMyhkLEkrMSxDP3YuY2FsbChDLHkpOnYoeSkpOmplKGQs''@;'; put 'put ''SSsxKX1mdW5jdGlvbiBNdChkLGcsaCx2LHksQyxJKXtjb25zdCBaPWcraDtyZXR1cm4geDYoZCxaLHksQyk/TDMoZCxaKzIsST92LmNhbGwoSSx5LEMpOnYoeSxDKSk6amUoZCxaKzIpfWZ1bmN0aW9uIHh0KGQsZyxoLHYseSxDLEksWil7Y29uc3QgdWU9ZytoO3JldHVybiBiQShkLHVlLHks''@;'; put 'put ''QyxJKT9MMyhkLHVlKzMsWj92LmNhbGwoWix5LEMsSSk6dih5LEMsSSkpOmplKGQsdWUrMyl9ZnVuY3Rpb24gbm4oZCxnKXtjb25zdCBoPWZlKCk7bGV0IHY7Y29uc3QgeT1kKzIyO2guZmlyc3RDcmVhdGVQYXNzPyh2PWZ1bmN0aW9uIENuKGQsZyl7aWYoZylmb3IobGV0IGg9Zy5sZW5ndGgt''@;'; put 'put ''MTtoPj0wO2gtLSl7Y29uc3Qgdj1nW2hdO2lmKGQ9PT12Lm5hbWUpcmV0dXJuIHZ9fShnLGgucGlwZVJlZ2lzdHJ5KSxoLmRhdGFbeV09dix2Lm9uRGVzdHJveSYmKGguZGVzdHJveUhvb2tzfHwoaC5kZXN0cm95SG9va3M9W10pKS5wdXNoKHksdi5vbkRlc3Ryb3kpKTp2PWguZGF0YVt5XTtj''@;'; put 'put ''b25zdCBDPXYuZmFjdG9yeXx8KHYuZmFjdG9yeT1qZih2LnR5cGUpKSxJPV8wKEt0KTt0cnl7Y29uc3QgWj1MOCghMSksdWU9QygpO3JldHVybiBMOChaKSxmdW5jdGlvbiBreChkLGcsaCx2KXtoPj1kLmRhdGEubGVuZ3RoJiYoZC5kYXRhW2hdPW51bGwsZC5ibHVlcHJpbnRbaF09bnVsbCks''@;'; put 'put ''Z1toXT12fShoLFB0KCkseSx1ZSksdWV9ZmluYWxseXtfMChJKX19ZnVuY3Rpb24genQoZCxnLGgpe2NvbnN0IHY9ZCsyMix5PVB0KCksQz1RcCh5LHYpO3JldHVybiBNcih5LHYpP1llKHksbHMoKSxnLEMudHJhbnNmb3JtLGgsQyk6Qy50cmFuc2Zvcm0oaCl9ZnVuY3Rpb24gUG4oZCxnLGgs''@;'; put 'put ''dil7Y29uc3QgeT1kKzIyLEM9UHQoKSxJPVFwKEMseSk7cmV0dXJuIE1yKEMseSk/TXQoQyxscygpLGcsSS50cmFuc2Zvcm0saCx2LEkpOkkudHJhbnNmb3JtKGgsdil9ZnVuY3Rpb24gVG4oZCxnLGgsdix5KXtjb25zdCBDPWQrMjIsST1QdCgpLFo9UXAoSSxDKTtyZXR1cm4gTXIoSSxDKT94''@;'; put 'put ''dChJLGxzKCksZyxaLnRyYW5zZm9ybSxoLHYseSxaKTpaLnRyYW5zZm9ybShoLHYseSl9ZnVuY3Rpb24gTXIoZCxnKXtyZXR1cm4gZFsxXS5kYXRhW2ddLnB1cmV9ZnVuY3Rpb24geXIoZCl7cmV0dXJuIGc9PntzZXRUaW1lb3V0KGQsdm9pZCAwLGcpfX1jb25zdCBhcj1jbGFzcyBhaSBleHRl''@;'; put 'put ''bmRzICRle2NvbnN0cnVjdG9yKGc9ITEpe3N1cGVyKCksdGhpcy5fX2lzQXN5bmM9Z31lbWl0KGcpe3N1cGVyLm5leHQoZyl9c3Vic2NyaWJlKGcsaCx2KXt2YXIgeSxDLEk7bGV0IFo9Zyx1ZT1ofHwoKCk9Pm51bGwpLF9lPXY7aWYoZyYmIm9iamVjdCI9PXR5cGVvZiBnKXtjb25zdCBOZT1n''@;'; put 'put ''O1o9bnVsbD09PSh5PU5lLm5leHQpfHx2b2lkIDA9PT15P3ZvaWQgMDp5LmJpbmQoTmUpLHVlPW51bGw9PT0oQz1OZS5lcnJvcil8fHZvaWQgMD09PUM/dm9pZCAwOkMuYmluZChOZSksX2U9bnVsbD09PShJPU5lLmNvbXBsZXRlKXx8dm9pZCAwPT09ST92b2lkIDA6SS5iaW5kKE5lKX10aGlz''@;'; put 'put ''Ll9faXNBc3luYyYmKHVlPXlyKHVlKSxaJiYoWj15cihaKSksX2UmJihfZT15cihfZSkpKTtjb25zdCBCZT1zdXBlci5zdWJzY3JpYmUoe25leHQ6WixlcnJvcjp1ZSxjb21wbGV0ZTpfZX0pO3JldHVybiBnIGluc3RhbmNlb2YgVGUmJmcuYWRkKEJlKSxCZX19O2Z1bmN0aW9uIEdyKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuX3Jlc3VsdHNbRTYoKV0oKX1jbGFzcyB6cntjb25zdHJ1Y3RvcihnPSExKXt0aGlzLl9lbWl0RGlzdGluY3RDaGFuZ2VzT25seT1nLHRoaXMuZGlydHk9ITAsdGhpcy5fcmVzdWx0cz1bXSx0aGlzLl9jaGFuZ2VzRGV0ZWN0ZWQ9ITEsdGhpcy5fY2hhbmdlcz1udWxsLHRoaXMu''@;'; put 'put ''bGVuZ3RoPTAsdGhpcy5maXJzdD12b2lkIDAsdGhpcy5sYXN0PXZvaWQgMDtjb25zdCBoPUU2KCksdj16ci5wcm90b3R5cGU7dltoXXx8KHZbaF09R3IpfWdldCBjaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2NoYW5nZXN8fCh0aGlzLl9jaGFuZ2VzPW5ldyBhcil9Z2V0KGcpe3JldHVybiB0aGlz''@;'; put 'put ''Ll9yZXN1bHRzW2ddfW1hcChnKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5tYXAoZyl9ZmlsdGVyKGcpe3JldHVybiB0aGlzLl9yZXN1bHRzLmZpbHRlcihnKX1maW5kKGcpe3JldHVybiB0aGlzLl9yZXN1bHRzLmZpbmQoZyl9cmVkdWNlKGcsaCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMucmVkdWNl''@;'; put 'put ''KGcsaCl9Zm9yRWFjaChnKXt0aGlzLl9yZXN1bHRzLmZvckVhY2goZyl9c29tZShnKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zb21lKGcpfXRvQXJyYXkoKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zbGljZSgpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMudG9TdHJpbmcoKX1yZXNl''@;'; put 'put ''dChnLGgpe2NvbnN0IHY9dGhpczt2LmRpcnR5PSExO2NvbnN0IHk9Z2YoZyk7KHRoaXMuX2NoYW5nZXNEZXRlY3RlZD0hZnVuY3Rpb24gZ1IoZCxnLGgpe2lmKGQubGVuZ3RoIT09Zy5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCB2PTA7djxkLmxlbmd0aDt2Kyspe2xldCB5PWRbdl0sQz1nW3Zd''@;'; put 'put ''O2lmKGgmJih5PWgoeSksQz1oKEMpKSxDIT09eSlyZXR1cm4hMX1yZXR1cm4hMH0odi5fcmVzdWx0cyx5LGgpKSYmKHYuX3Jlc3VsdHM9eSx2Lmxlbmd0aD15Lmxlbmd0aCx2Lmxhc3Q9eVt0aGlzLmxlbmd0aC0xXSx2LmZpcnN0PXlbMF0pfW5vdGlmeU9uQ2hhbmdlcygpe3RoaXMuX2NoYW5n''@;'; put 'put ''ZXMmJih0aGlzLl9jaGFuZ2VzRGV0ZWN0ZWR8fCF0aGlzLl9lbWl0RGlzdGluY3RDaGFuZ2VzT25seSkmJnRoaXMuX2NoYW5nZXMuZW1pdCh0aGlzKX1zZXREaXJ0eSgpe3RoaXMuZGlydHk9ITB9ZGVzdHJveSgpe3RoaXMuY2hhbmdlcy5jb21wbGV0ZSgpLHRoaXMuY2hhbmdlcy51bnN1YnNj''@;'; put 'put ''cmliZSgpfX1sZXQgcXI9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuX19OR19FTEVNRU5UX0lEX189ZGksZH0pKCk7Y29uc3Qgb2k9cXIsY3I9Y2xhc3MgZXh0ZW5kcyBvaXtjb25zdHJ1Y3RvcihnLGgsdil7c3VwZXIoKSx0aGlzLl9kZWNsYXJhdGlvbkxWaWV3PWcsdGhpcy5fZGVjbGFyYXRp''@;'; put 'put ''b25UQ29udGFpbmVyPWgsdGhpcy5lbGVtZW50UmVmPXZ9Y3JlYXRlRW1iZWRkZWRWaWV3KGcsaCl7Y29uc3Qgdj10aGlzLl9kZWNsYXJhdGlvblRDb250YWluZXIudFZpZXdzLHk9azYodGhpcy5fZGVjbGFyYXRpb25MVmlldyx2LGcsMTYsbnVsbCx2LmRlY2xUTm9kZSxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLGh8fG51bGwpO3lbMTddPXRoaXMuX2RlY2xhcmF0aW9uTFZpZXdbdGhpcy5fZGVjbGFyYXRpb25UQ29udGFpbmVyLmluZGV4XTtjb25zdCBJPXRoaXMuX2RlY2xhcmF0aW9uTFZpZXdbMTldO3JldHVybiBudWxsIT09SSYmKHlbMTldPUkuY3JlYXRlRW1iZWRkZWRWaWV3KHYpKSx6''@;'; put 'put ''NCh2LHksZyksbmV3IE02KHkpfX07ZnVuY3Rpb24gZGkoKXtyZXR1cm4gdjAoWHQoKSxQdCgpKX1mdW5jdGlvbiB2MChkLGcpe3JldHVybiA0JmQudHlwZT9uZXcgY3IoZyxkLHA2KGQsZykpOm51bGx9bGV0IFVpPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLl9fTkdfRUxFTUVOVF9JRF9fPXRv''@;'; put 'put ''LGR9KSgpO2Z1bmN0aW9uIHRvKCl7cmV0dXJuIGhpKFh0KCksUHQoKSl9Y29uc3QgQTA9VWksYmk9Y2xhc3MgZXh0ZW5kcyBBMHtjb25zdHJ1Y3RvcihnLGgsdil7c3VwZXIoKSx0aGlzLl9sQ29udGFpbmVyPWcsdGhpcy5faG9zdFROb2RlPWgsdGhpcy5faG9zdExWaWV3PXZ9Z2V0IGVsZW1l''@;'; put 'put ''bnQoKXtyZXR1cm4gcDYodGhpcy5faG9zdFROb2RlLHRoaXMuX2hvc3RMVmlldyl9Z2V0IGluamVjdG9yKCl7cmV0dXJuIG5ldyBJNCh0aGlzLl9ob3N0VE5vZGUsdGhpcy5faG9zdExWaWV3KX1nZXQgcGFyZW50SW5qZWN0b3IoKXtjb25zdCBnPUFjKHRoaXMuX2hvc3RUTm9kZSx0aGlzLl9o''@;'; put 'put ''b3N0TFZpZXcpO2lmKEdjKGcpKXtjb25zdCBoPWRmKGcsdGhpcy5faG9zdExWaWV3KSx2PWN1KGcpO3JldHVybiBuZXcgSTQoaFsxXS5kYXRhW3YrOF0saCl9cmV0dXJuIG5ldyBJNChudWxsLHRoaXMuX2hvc3RMVmlldyl9Y2xlYXIoKXtmb3IoO3RoaXMubGVuZ3RoPjA7KXRoaXMucmVtb3Zl''@;'; put 'put ''KHRoaXMubGVuZ3RoLTEpfWdldChnKXtjb25zdCBoPVlyKHRoaXMuX2xDb250YWluZXIpO3JldHVybiBudWxsIT09aCYmaFtnXXx8bnVsbH1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2xDb250YWluZXIubGVuZ3RoLTEwfWNyZWF0ZUVtYmVkZGVkVmlldyhnLGgsdil7bGV0IHksQzsibnVt''@;'; put 'put ''YmVyIj09dHlwZW9mIHY/eT12Om51bGwhPXYmJih5PXYuaW5kZXgsQz12LmluamVjdG9yKTtjb25zdCBJPWcuY3JlYXRlRW1iZWRkZWRWaWV3KGh8fHt9LEMpO3JldHVybiB0aGlzLmluc2VydChJLHkpLEl9Y3JlYXRlQ29tcG9uZW50KGcsaCx2LHksQyl7Y29uc3QgST1nJiYhZnVuY3Rpb24g''@;'; put 'put ''cm0oZCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGR9KGcpO2xldCBaO2lmKEkpWj1oO2Vsc2V7Y29uc3QgTmU9aHx8e307Wj1OZS5pbmRleCx2PU5lLmluamVjdG9yLHk9TmUucHJvamVjdGFibGVOb2RlcyxDPU5lLmVudmlyb25tZW50SW5qZWN0b3J8fE5lLm5nTW9kdWxlUmVmfWNvbnN0''@;'; put 'put ''IHVlPUk/ZzpuZXcgRm0odnMoZykpLF9lPXZ8fHRoaXMucGFyZW50SW5qZWN0b3I7aWYoIUMmJm51bGw9PXVlLm5nTW9kdWxlKXtjb25zdCBLZT0oST9fZTp0aGlzLnBhcmVudEluamVjdG9yKS5nZXQoRTMsbnVsbCk7S2UmJihDPUtlKX1jb25zdCBCZT11ZS5jcmVhdGUoX2UseSx2b2lkIDAs''@;'; put 'put ''Qyk7cmV0dXJuIHRoaXMuaW5zZXJ0KEJlLmhvc3RWaWV3LFopLEJlfWluc2VydChnLGgpe2NvbnN0IHY9Zy5fbFZpZXcseT12WzFdO2lmKGZ1bmN0aW9uIE9NKGQpe3JldHVybiBzZihkWzNdKX0odikpe2NvbnN0IEJlPXRoaXMuaW5kZXhPZihnKTtpZigtMSE9PUJlKXRoaXMuZGV0YWNoKEJl''@;'; put 'put ''KTtlbHNle2NvbnN0IE5lPXZbM10sS2U9bmV3IGJpKE5lLE5lWzZdLE5lWzNdKTtLZS5kZXRhY2goS2UuaW5kZXhPZihnKSl9fWNvbnN0IEM9dGhpcy5fYWRqdXN0SW5kZXgoaCksST10aGlzLl9sQ29udGFpbmVyOyFmdW5jdGlvbiBIYihkLGcsaCx2KXtjb25zdCB5PTEwK3YsQz1oLmxlbmd0''@;'; put 'put ''aDt2PjAmJihoW3ktMV1bNF09ZyksdjxDLTEwPyhnWzRdPWhbeV0sZmIoaCwxMCt2LGcpKTooaC5wdXNoKGcpLGdbNF09bnVsbCksZ1szXT1oO2NvbnN0IEk9Z1sxN107bnVsbCE9PUkmJmghPT1JJiZmdW5jdGlvbiBhRyhkLGcpe2NvbnN0IGg9ZFs5XTtnWzE2XSE9PWdbM11bM11bMTZdJiYo''@;'; put 'put ''ZFsyXT0hMCksbnVsbD09PWg/ZFs5XT1bZ106aC5wdXNoKGcpfShJLGcpO2NvbnN0IFo9Z1sxOV07bnVsbCE9PVomJlouaW5zZXJ0VmlldyhkKSxnWzJdfD02NH0oeSx2LEksQyk7Y29uc3QgWj1VYihDLEkpLHVlPXZbMTFdLF9lPUNtKHVlLElbN10pO3JldHVybiBudWxsIT09X2UmJmZ1bmN0''@;'; put 'put ''aW9uIHdmKGQsZyxoLHYseSxDKXt2WzBdPXksdls2XT1nLGttKGQsdixoLDEseSxDKX0oeSxJWzZdLHVlLHYsX2UsWiksZy5hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYoKSxmYihFaShJKSxDLGcpLGd9bW92ZShnLGgpe3JldHVybiB0aGlzLmluc2VydChnLGgpfWluZGV4T2YoZyl7Y29uc3Qg''@;'; put 'put ''aD1Zcih0aGlzLl9sQ29udGFpbmVyKTtyZXR1cm4gbnVsbCE9PWg/aC5pbmRleE9mKGcpOi0xfXJlbW92ZShnKXtjb25zdCBoPXRoaXMuX2FkanVzdEluZGV4KGcsLTEpLHY9TmIodGhpcy5fbENvbnRhaW5lcixoKTt2JiYoQ2QoRWkodGhpcy5fbENvbnRhaW5lciksaCksQkUodlsxXSx2KSl9''@;'; put 'put ''ZGV0YWNoKGcpe2NvbnN0IGg9dGhpcy5fYWRqdXN0SW5kZXgoZywtMSksdj1OYih0aGlzLl9sQ29udGFpbmVyLGgpO3JldHVybiB2JiZudWxsIT1DZChFaSh0aGlzLl9sQ29udGFpbmVyKSxoKT9uZXcgTTYodik6bnVsbH1fYWRqdXN0SW5kZXgoZyxoPTApe3JldHVybiBudWxsPT1nP3RoaXMu''@;'; put 'put ''bGVuZ3RoK2g6Z319O2Z1bmN0aW9uIFlyKGQpe3JldHVybiBkWzhdfWZ1bmN0aW9uIEVpKGQpe3JldHVybiBkWzhdfHwoZFs4XT1bXSl9ZnVuY3Rpb24gaGkoZCxnKXtsZXQgaDtjb25zdCB2PWdbZC5pbmRleF07aWYoc2YodikpaD12O2Vsc2V7bGV0IHk7aWYoOCZkLnR5cGUpeT1YMih2KTtl''@;'; put 'put ''bHNle2NvbnN0IEM9Z1sxMV07eT1DLmNyZWF0ZUNvbW1lbnQoIiIpO2NvbnN0IEk9dmMoZCxnKTtONChDLENtKEMsSSkseSxmdW5jdGlvbiBXOShkLGcpe3JldHVybiBkLm5leHRTaWJsaW5nKGcpfShDLEkpLCExKX1nW2QuaW5kZXhdPWg9aEEodixnLHksZCksUm0oZyxoKX1yZXR1cm4gbmV3''@;'; put 'put ''IGJpKGgsZCxnKX1jbGFzcyB0MHtjb25zdHJ1Y3RvcihnKXt0aGlzLnF1ZXJ5TGlzdD1nLHRoaXMubWF0Y2hlcz1udWxsfWNsb25lKCl7cmV0dXJuIG5ldyB0MCh0aGlzLnF1ZXJ5TGlzdCl9c2V0RGlydHkoKXt0aGlzLnF1ZXJ5TGlzdC5zZXREaXJ0eSgpfX1jbGFzcyBpb3tjb25zdHJ1Y3Rv''@;'; put 'put ''cihnPVtdKXt0aGlzLnF1ZXJpZXM9Z31jcmVhdGVFbWJlZGRlZFZpZXcoZyl7Y29uc3QgaD1nLnF1ZXJpZXM7aWYobnVsbCE9PWgpe2NvbnN0IHY9bnVsbCE9PWcuY29udGVudFF1ZXJpZXM/Zy5jb250ZW50UXVlcmllc1swXTpoLmxlbmd0aCx5PVtdO2ZvcihsZXQgQz0wO0M8djtDKyspe2Nv''@;'; put 'put ''bnN0IEk9aC5nZXRCeUluZGV4KEMpO3kucHVzaCh0aGlzLnF1ZXJpZXNbSS5pbmRleEluRGVjbGFyYXRpb25WaWV3XS5jbG9uZSgpKX1yZXR1cm4gbmV3IGlvKHkpfXJldHVybiBudWxsfWluc2VydFZpZXcoZyl7dGhpcy5kaXJ0eVF1ZXJpZXNXaXRoTWF0Y2hlcyhnKX1kZXRhY2hWaWV3KGcp''@;'; put 'put ''e3RoaXMuZGlydHlRdWVyaWVzV2l0aE1hdGNoZXMoZyl9ZGlydHlRdWVyaWVzV2l0aE1hdGNoZXMoZyl7Zm9yKGxldCBoPTA7aDx0aGlzLnF1ZXJpZXMubGVuZ3RoO2grKyludWxsIT09SXIoZyxoKS5tYXRjaGVzJiZ0aGlzLnF1ZXJpZXNbaF0uc2V0RGlydHkoKX19Y2xhc3Mgb2F7Y29uc3Ry''@;'; put 'put ''dWN0b3IoZyxoLHY9bnVsbCl7dGhpcy5wcmVkaWNhdGU9Zyx0aGlzLmZsYWdzPWgsdGhpcy5yZWFkPXZ9fWNsYXNzICQwe2NvbnN0cnVjdG9yKGc9W10pe3RoaXMucXVlcmllcz1nfWVsZW1lbnRTdGFydChnLGgpe2ZvcihsZXQgdj0wO3Y8dGhpcy5xdWVyaWVzLmxlbmd0aDt2KyspdGhpcy5x''@;'; put 'put ''dWVyaWVzW3ZdLmVsZW1lbnRTdGFydChnLGgpfWVsZW1lbnRFbmQoZyl7Zm9yKGxldCBoPTA7aDx0aGlzLnF1ZXJpZXMubGVuZ3RoO2grKyl0aGlzLnF1ZXJpZXNbaF0uZWxlbWVudEVuZChnKX1lbWJlZGRlZFRWaWV3KGcpe2xldCBoPW51bGw7Zm9yKGxldCB2PTA7djx0aGlzLmxlbmd0aDt2''@;'; put 'put ''Kyspe2NvbnN0IHk9bnVsbCE9PWg/aC5sZW5ndGg6MCxDPXRoaXMuZ2V0QnlJbmRleCh2KS5lbWJlZGRlZFRWaWV3KGcseSk7QyYmKEMuaW5kZXhJbkRlY2xhcmF0aW9uVmlldz12LG51bGwhPT1oP2gucHVzaChDKTpoPVtDXSl9cmV0dXJuIG51bGwhPT1oP25ldyAkMChoKTpudWxsfXRlbXBs''@;'; put 'put ''YXRlKGcsaCl7Zm9yKGxldCB2PTA7djx0aGlzLnF1ZXJpZXMubGVuZ3RoO3YrKyl0aGlzLnF1ZXJpZXNbdl0udGVtcGxhdGUoZyxoKX1nZXRCeUluZGV4KGcpe3JldHVybiB0aGlzLnF1ZXJpZXNbZ119Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLnF1ZXJpZXMubGVuZ3RofXRyYWNrKGcpe3Ro''@;'; put 'put ''aXMucXVlcmllcy5wdXNoKGcpfX1jbGFzcyBWYXtjb25zdHJ1Y3RvcihnLGg9LTEpe3RoaXMubWV0YWRhdGE9Zyx0aGlzLm1hdGNoZXM9bnVsbCx0aGlzLmluZGV4SW5EZWNsYXJhdGlvblZpZXc9LTEsdGhpcy5jcm9zc2VzTmdUZW1wbGF0ZT0hMSx0aGlzLl9hcHBsaWVzVG9OZXh0Tm9kZT0h''@;'; put 'put ''MCx0aGlzLl9kZWNsYXJhdGlvbk5vZGVJbmRleD1ofWVsZW1lbnRTdGFydChnLGgpe3RoaXMuaXNBcHBseWluZ1RvTm9kZShoKSYmdGhpcy5tYXRjaFROb2RlKGcsaCl9ZWxlbWVudEVuZChnKXt0aGlzLl9kZWNsYXJhdGlvbk5vZGVJbmRleD09PWcuaW5kZXgmJih0aGlzLl9hcHBsaWVzVG9O''@;'; put 'put ''ZXh0Tm9kZT0hMSl9dGVtcGxhdGUoZyxoKXt0aGlzLmVsZW1lbnRTdGFydChnLGgpfWVtYmVkZGVkVFZpZXcoZyxoKXtyZXR1cm4gdGhpcy5pc0FwcGx5aW5nVG9Ob2RlKGcpPyh0aGlzLmNyb3NzZXNOZ1RlbXBsYXRlPSEwLHRoaXMuYWRkTWF0Y2goLWcuaW5kZXgsaCksbmV3IFZhKHRoaXMu''@;'; put 'put ''bWV0YWRhdGEpKTpudWxsfWlzQXBwbHlpbmdUb05vZGUoZyl7aWYodGhpcy5fYXBwbGllc1RvTmV4dE5vZGUmJjEhPSgxJnRoaXMubWV0YWRhdGEuZmxhZ3MpKXtjb25zdCBoPXRoaXMuX2RlY2xhcmF0aW9uTm9kZUluZGV4O2xldCB2PWcucGFyZW50O2Zvcig7bnVsbCE9PXYmJjgmdi50eXBl''@;'; put 'put ''JiZ2LmluZGV4IT09aDspdj12LnBhcmVudDtyZXR1cm4gaD09PShudWxsIT09dj92LmluZGV4Oi0xKX1yZXR1cm4gdGhpcy5fYXBwbGllc1RvTmV4dE5vZGV9bWF0Y2hUTm9kZShnLGgpe2NvbnN0IHY9dGhpcy5tZXRhZGF0YS5wcmVkaWNhdGU7aWYoQXJyYXkuaXNBcnJheSh2KSlmb3IobGV0''@;'; put 'put ''IHk9MDt5PHYubGVuZ3RoO3krKyl7Y29uc3QgQz12W3ldO3RoaXMubWF0Y2hUTm9kZVdpdGhSZWFkT3B0aW9uKGcsaCxqbyhoLEMpKSx0aGlzLm1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbihnLGgsSnUoaCxnLEMsITEsITEpKX1lbHNlIHY9PT1xcj80JmgudHlwZSYmdGhpcy5tYXRjaFROb2Rl''@;'; put 'put ''V2l0aFJlYWRPcHRpb24oZyxoLC0xKTp0aGlzLm1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbihnLGgsSnUoaCxnLHYsITEsITEpKX1tYXRjaFROb2RlV2l0aFJlYWRPcHRpb24oZyxoLHYpe2lmKG51bGwhPT12KXtjb25zdCB5PXRoaXMubWV0YWRhdGEucmVhZDtpZihudWxsIT09eSlpZih5PT09''@;'; put 'put ''Ym98fHk9PT1VaXx8eT09PXFyJiY0JmgudHlwZSl0aGlzLmFkZE1hdGNoKGguaW5kZXgsLTIpO2Vsc2V7Y29uc3QgQz1KdShoLGcseSwhMSwhMSk7bnVsbCE9PUMmJnRoaXMuYWRkTWF0Y2goaC5pbmRleCxDKX1lbHNlIHRoaXMuYWRkTWF0Y2goaC5pbmRleCx2KX19YWRkTWF0Y2goZyxoKXtu''@;'; put 'put ''dWxsPT09dGhpcy5tYXRjaGVzP3RoaXMubWF0Y2hlcz1bZyxoXTp0aGlzLm1hdGNoZXMucHVzaChnLGgpfX1mdW5jdGlvbiBqbyhkLGcpe2NvbnN0IGg9ZC5sb2NhbE5hbWVzO2lmKG51bGwhPT1oKWZvcihsZXQgdj0wO3Y8aC5sZW5ndGg7dis9MilpZihoW3ZdPT09ZylyZXR1cm4gaFt2KzFd''@;'; put 'put ''O3JldHVybiBudWxsfWZ1bmN0aW9uIGFvKGQsZyxoLHYpe3JldHVybi0xPT09aD9mdW5jdGlvbiB3YShkLGcpe3JldHVybiAxMSZkLnR5cGU/cDYoZCxnKTo0JmQudHlwZT92MChkLGcpOm51bGx9KGcsZCk6LTI9PT1oP2Z1bmN0aW9uIHgwKGQsZyxoKXtyZXR1cm4gaD09PWJvP3A2KGcsZCk6''@;'; put 'put ''aD09PXFyP3YwKGcsZCk6aD09PVVpP2hpKGcsZCk6dm9pZCAwfShkLGcsdik6VDQoZCxkWzFdLGgsZyl9ZnVuY3Rpb24gaDAoZCxnLGgsdil7Y29uc3QgeT1nWzE5XS5xdWVyaWVzW3ZdO2lmKG51bGw9PT15Lm1hdGNoZXMpe2NvbnN0IEM9ZC5kYXRhLEk9aC5tYXRjaGVzLFo9W107Zm9yKGxl''@;'; put 'put ''dCB1ZT0wO3VlPEkubGVuZ3RoO3VlKz0yKXtjb25zdCBfZT1JW3VlXTtaLnB1c2goX2U8MD9udWxsOmFvKGcsQ1tfZV0sSVt1ZSsxXSxoLm1ldGFkYXRhLnJlYWQpKX15Lm1hdGNoZXM9Wn1yZXR1cm4geS5tYXRjaGVzfWZ1bmN0aW9uIGpyKGQsZyxoLHYpe2NvbnN0IHk9ZC5xdWVyaWVzLmdl''@;'; put 'put ''dEJ5SW5kZXgoaCksQz15Lm1hdGNoZXM7aWYobnVsbCE9PUMpe2NvbnN0IEk9aDAoZCxnLHksaCk7Zm9yKGxldCBaPTA7WjxDLmxlbmd0aDtaKz0yKXtjb25zdCB1ZT1DW1pdO2lmKHVlPjApdi5wdXNoKElbWi8yXSk7ZWxzZXtjb25zdCBfZT1DW1orMV0sQmU9Z1stdWVdO2ZvcihsZXQgTmU9''@;'; put 'put ''MTA7TmU8QmUubGVuZ3RoO05lKyspe2NvbnN0IEtlPUJlW05lXTtLZVsxN109PT1LZVszXSYmanIoS2VbMV0sS2UsX2Usdil9aWYobnVsbCE9PUJlWzldKXtjb25zdCBOZT1CZVs5XTtmb3IobGV0IEtlPTA7S2U8TmUubGVuZ3RoO0tlKyspe2NvbnN0IHB0PU5lW0tlXTtqcihwdFsxXSxwdCxf''@;'; put 'put ''ZSx2KX19fX19cmV0dXJuIHZ9ZnVuY3Rpb24gSGkoZCl7Y29uc3QgZz1QdCgpLGg9ZmUoKSx2PW9iKCk7RG4odisxKTtjb25zdCB5PUlyKGgsdik7aWYoZC5kaXJ0eSYmS2coZyk9PT0oMj09KDImeS5tZXRhZGF0YS5mbGFncykpKXtpZihudWxsPT09eS5tYXRjaGVzKWQucmVzZXQoW10pO2Vs''@;'; put 'put ''c2V7Y29uc3QgQz15LmNyb3NzZXNOZ1RlbXBsYXRlP2pyKGgsZyx2LFtdKTpoMChoLGcseSx2KTtkLnJlc2V0KEMsUjkpLGQubm90aWZ5T25DaGFuZ2VzKCl9cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gdm8oZCxnLGgpe2NvbnN0IHY9ZmUoKTt2LmZpcnN0Q3JlYXRlUGFzcyYmKHAyKHYs''@;'; put 'put ''bmV3IG9hKGQsZyxoKSwtMSksMj09KDImZykmJih2LnN0YXRpY1ZpZXdRdWVyaWVzPSEwKSksTWModixQdCgpLGcpfWZ1bmN0aW9uIHhvKGQsZyxoLHYpe2NvbnN0IHk9ZmUoKTtpZih5LmZpcnN0Q3JlYXRlUGFzcyl7Y29uc3QgQz1YdCgpO3AyKHksbmV3IG9hKGcsaCx2KSxDLmluZGV4KSxm''@;'; put 'put ''dW5jdGlvbiBycihkLGcpe2NvbnN0IGg9ZC5jb250ZW50UXVlcmllc3x8KGQuY29udGVudFF1ZXJpZXM9W10pO2chPT0oaC5sZW5ndGg/aFtoLmxlbmd0aC0xXTotMSkmJmgucHVzaChkLnF1ZXJpZXMubGVuZ3RoLTEsZyl9KHksZCksMj09KDImaCkmJih5LnN0YXRpY0NvbnRlbnRRdWVyaWVz''@;'; put 'put ''PSEwKX1NYyh5LFB0KCksaCl9ZnVuY3Rpb24gJGkoKXtyZXR1cm4gZnVuY3Rpb24gbDIoZCxnKXtyZXR1cm4gZFsxOV0ucXVlcmllc1tnXS5xdWVyeUxpc3R9KFB0KCksb2IoKSl9ZnVuY3Rpb24gTWMoZCxnLGgpe2NvbnN0IHY9bmV3IHpyKDQ9PSg0JmgpKTt2XyhkLGcsdix2LmRlc3Ryb3kp''@;'; put 'put ''LG51bGw9PT1nWzE5XSYmKGdbMTldPW5ldyBpbyksZ1sxOV0ucXVlcmllcy5wdXNoKG5ldyB0MCh2KSl9ZnVuY3Rpb24gcDIoZCxnLGgpe251bGw9PT1kLnF1ZXJpZXMmJihkLnF1ZXJpZXM9bmV3ICQwKSxkLnF1ZXJpZXMudHJhY2sobmV3IFZhKGcsaCkpfWZ1bmN0aW9uIElyKGQsZyl7cmV0''@;'; put 'put ''dXJuIGQucXVlcmllcy5nZXRCeUluZGV4KGcpfWZ1bmN0aW9uIFpyKGQsZyl7cmV0dXJuIHYwKGQsZyl9ZnVuY3Rpb24gQUMoLi4uZCl7fWNvbnN0IHlDPW5ldyB6ZSgiQXBwbGljYXRpb24gSW5pdGlhbGl6ZXIiKTtsZXQgd1Q9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmFw''@;'; put 'put ''cEluaXRzPWgsdGhpcy5yZXNvbHZlPUFDLHRoaXMucmVqZWN0PUFDLHRoaXMuaW5pdGlhbGl6ZWQ9ITEsdGhpcy5kb25lPSExLHRoaXMuZG9uZVByb21pc2U9bmV3IFByb21pc2UoKHYseSk9Pnt0aGlzLnJlc29sdmU9dix0aGlzLnJlamVjdD15fSl9cnVuSW5pdGlhbGl6ZXJzKCl7aWYodGhp''@;'; put 'put ''cy5pbml0aWFsaXplZClyZXR1cm47Y29uc3QgaD1bXSx2PSgpPT57dGhpcy5kb25lPSEwLHRoaXMucmVzb2x2ZSgpfTtpZih0aGlzLmFwcEluaXRzKWZvcihsZXQgeT0wO3k8dGhpcy5hcHBJbml0cy5sZW5ndGg7eSsrKXtjb25zdCBDPXRoaXMuYXBwSW5pdHNbeV0oKTtpZihWbShDKSloLnB1''@;'; put 'put ''c2goQyk7ZWxzZSBpZihIXyhDKSl7Y29uc3QgST1uZXcgUHJvbWlzZSgoWix1ZSk9PntDLnN1YnNjcmliZSh7Y29tcGxldGU6WixlcnJvcjp1ZX0pfSk7aC5wdXNoKEkpfX1Qcm9taXNlLmFsbChoKS50aGVuKCgpPT57digpfSkuY2F0Y2goeT0+e3RoaXMucmVqZWN0KHkpfSksMD09PWgubGVu''@;'; put 'put ''Z3RoJiZ2KCksdGhpcy5pbml0aWFsaXplZD0hMH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoQ2koeUMsOCkpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpO2NvbnN0''@;'; put 'put ''IHdDPW5ldyB6ZSgiQXBwSWQiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIGJUKCl7cmV0dXJuYCR7X1QoKX0ke19UKCl9JHtfVCgpfWB9fSk7ZnVuY3Rpb24gX1QoKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg5NytNYXRoLmZsb29yKDI1Kk1hdGgucmFuZG9tKCkp''@;'; put 'put ''KX1jb25zdCBKUD1uZXcgemUoIlBsYXRmb3JtIEluaXRpYWxpemVyIiksTDI9bmV3IHplKCJQbGF0Zm9ybSBJRCIse3Byb3ZpZGVkSW46InBsYXRmb3JtIixmYWN0b3J5OigpPT4idW5rbm93biJ9KSxGNj1uZXcgemUoImFwcEJvb3RzdHJhcExpc3RlbmVyIiksSUc9bmV3IHplKCJBbmltYXRp''@;'; put 'put ''b25Nb2R1bGVUeXBlIik7bGV0IHJyZT0oKCk9PntjbGFzcyBke2xvZyhoKXtjb25zb2xlLmxvZyhoKX13YXJuKGgpe2NvbnNvbGUud2FybihoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5''@;'; put 'put ''OmQuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InBsYXRmb3JtIn0pLGR9KSgpO2NvbnN0IFlkPW5ldyB6ZSgiTG9jYWxlSWQiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5oMihZZCxqMC5PcHRpb25hbHxqMC5Ta2lwU2VsZil8fGZ1bmN0aW9uIGlyZSgpe3JldHVybiJ1bmRlZmluZWQi''@;'; put 'put ''IT10eXBlb2YgJGxvY2FsaXplJiYkbG9jYWxpemUubG9jYWxlfHxTNX0oKX0pO2NsYXNzIG9yZXtjb25zdHJ1Y3RvcihnLGgpe3RoaXMubmdNb2R1bGVGYWN0b3J5PWcsdGhpcy5jb21wb25lbnRGYWN0b3JpZXM9aH19bGV0IENUPSgoKT0+e2NsYXNzIGR7Y29tcGlsZU1vZHVsZVN5bmMoaCl7''@;'; put 'put ''cmV0dXJuIG5ldyBlNyhoKX1jb21waWxlTW9kdWxlQXN5bmMoaCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmNvbXBpbGVNb2R1bGVTeW5jKGgpKX1jb21waWxlTW9kdWxlQW5kQWxsQ29tcG9uZW50c1N5bmMoaCl7Y29uc3Qgdj10aGlzLmNvbXBpbGVNb2R1bGVTeW5jKGgpLEM9eWYo''@;'; put 'put ''Q3MoaCkuZGVjbGFyYXRpb25zKS5yZWR1Y2UoKEksWik9Pntjb25zdCB1ZT12cyhaKTtyZXR1cm4gdWUmJkkucHVzaChuZXcgRm0odWUpKSxJfSxbXSk7cmV0dXJuIG5ldyBvcmUodixDKX1jb21waWxlTW9kdWxlQW5kQWxsQ29tcG9uZW50c0FzeW5jKGgpe3JldHVybiBQcm9taXNlLnJlc29s''@;'; put 'put ''dmUodGhpcy5jb21waWxlTW9kdWxlQW5kQWxsQ29tcG9uZW50c1N5bmMoaCkpfWNsZWFyQ2FjaGUoKXt9Y2xlYXJDYWNoZUZvcihoKXt9Z2V0TW9kdWxlSWQoaCl7fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tl''@;'; put 'put ''bjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxkfSkoKTtjb25zdCAkUD0oKCk9PlByb21pc2UucmVzb2x2ZSgwKSkoKTtmdW5jdGlvbiBrVChkKXsidW5kZWZpbmVkIj09dHlwZW9mIFpvbmU/JFAudGhlbigoKT0+e2QmJmQuYXBwbHkobnVsbCxudWxsKX0pOlpv''@;'; put 'put ''bmUuY3VycmVudC5zY2hlZHVsZU1pY3JvVGFzaygic2NoZWR1bGVNaWNyb3Rhc2siLGQpfWNsYXNzIF9se2NvbnN0cnVjdG9yKHtlbmFibGVMb25nU3RhY2tUcmFjZTpnPSExLHNob3VsZENvYWxlc2NlRXZlbnRDaGFuZ2VEZXRlY3Rpb246aD0hMSxzaG91bGRDb2FsZXNjZVJ1bkNoYW5nZURl''@;'; put 'put ''dGVjdGlvbjp2PSExfSl7aWYodGhpcy5oYXNQZW5kaW5nTWFjcm90YXNrcz0hMSx0aGlzLmhhc1BlbmRpbmdNaWNyb3Rhc2tzPSExLHRoaXMuaXNTdGFibGU9ITAsdGhpcy5vblVuc3RhYmxlPW5ldyBhcighMSksdGhpcy5vbk1pY3JvdGFza0VtcHR5PW5ldyBhcighMSksdGhpcy5vblN0YWJs''@;'; put 'put ''ZT1uZXcgYXIoITEpLHRoaXMub25FcnJvcj1uZXcgYXIoITEpLCJ1bmRlZmluZWQiPT10eXBlb2YgWm9uZSl0aHJvdyBuZXcgZW4oOTA4LCExKTtab25lLmFzc2VydFpvbmVQYXRjaGVkKCk7Y29uc3QgeT10aGlzO2lmKHkuX25lc3Rpbmc9MCx5Ll9vdXRlcj15Ll9pbm5lcj1ab25lLmN1cnJl''@;'; put 'put ''bnQsWm9uZS5Bc3luY1N0YWNrVGFnZ2luZ1pvbmVTcGVjKXtjb25zdCBDPVpvbmUuQXN5bmNTdGFja1RhZ2dpbmdab25lU3BlYzt5Ll9pbm5lcj15Ll9pbm5lci5mb3JrKG5ldyBDKCJBbmd1bGFyIikpfVpvbmUuVGFza1RyYWNraW5nWm9uZVNwZWMmJih5Ll9pbm5lcj15Ll9pbm5lci5mb3Jr''@;'; put 'put ''KG5ldyBab25lLlRhc2tUcmFja2luZ1pvbmVTcGVjKSksZyYmWm9uZS5sb25nU3RhY2tUcmFjZVpvbmVTcGVjJiYoeS5faW5uZXI9eS5faW5uZXIuZm9yayhab25lLmxvbmdTdGFja1RyYWNlWm9uZVNwZWMpKSx5LnNob3VsZENvYWxlc2NlRXZlbnRDaGFuZ2VEZXRlY3Rpb249IXYmJmgseS5z''@;'; put 'put ''aG91bGRDb2FsZXNjZVJ1bkNoYW5nZURldGVjdGlvbj12LHkubGFzdFJlcXVlc3RBbmltYXRpb25GcmFtZUlkPS0xLHkubmF0aXZlUmVxdWVzdEFuaW1hdGlvbkZyYW1lPWZ1bmN0aW9uIFJHKCl7bGV0IGQ9UGwucmVxdWVzdEFuaW1hdGlvbkZyYW1lLGc9UGwuY2FuY2VsQW5pbWF0aW9uRnJh''@;'; put 'put ''bWU7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBab25lJiZkJiZnKXtjb25zdCBoPWRbWm9uZS5fX3N5bWJvbF9fKCJPcmlnaW5hbERlbGVnYXRlIildO2gmJihkPWgpO2NvbnN0IHY9Z1tab25lLl9fc3ltYm9sX18oIk9yaWdpbmFsRGVsZWdhdGUiKV07diYmKGc9dil9cmV0dXJue25hdGl2ZVJl''@;'; put 'put ''cXVlc3RBbmltYXRpb25GcmFtZTpkLG5hdGl2ZUNhbmNlbEFuaW1hdGlvbkZyYW1lOmd9fSgpLm5hdGl2ZVJlcXVlc3RBbmltYXRpb25GcmFtZSxmdW5jdGlvbiBQRyhkKXtjb25zdCBnPSgpPT57IWZ1bmN0aW9uIEJHKGQpe2QuaXNDaGVja1N0YWJsZVJ1bm5pbmd8fC0xIT09ZC5sYXN0UmVx''@;'; put 'put ''dWVzdEFuaW1hdGlvbkZyYW1lSWR8fChkLmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZD1kLm5hdGl2ZVJlcXVlc3RBbmltYXRpb25GcmFtZS5jYWxsKFBsLCgpPT57ZC5mYWtlVG9wRXZlbnRUYXNrfHwoZC5mYWtlVG9wRXZlbnRUYXNrPVpvbmUucm9vdC5zY2hlZHVsZUV2ZW50VGFzaygi''@;'; put 'put ''ZmFrZVRvcEV2ZW50VGFzayIsKCk9PntkLmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZD0tMSxlRihkKSxkLmlzQ2hlY2tTdGFibGVSdW5uaW5nPSEwLHFQKGQpLGQuaXNDaGVja1N0YWJsZVJ1bm5pbmc9ITF9LHZvaWQgMCwoKT0+e30sKCk9Pnt9KSksZC5mYWtlVG9wRXZlbnRUYXNrLmlu''@;'; put 'put ''dm9rZSgpfSksZUYoZCkpfShkKX07ZC5faW5uZXI9ZC5faW5uZXIuZm9yayh7bmFtZToiYW5ndWxhciIscHJvcGVydGllczp7aXNBbmd1bGFyWm9uZTohMH0sb25JbnZva2VUYXNrOihoLHYseSxDLEksWik9Pnt0cnl7cmV0dXJuIFNUKGQpLGguaW52b2tlVGFzayh5LEMsSSxaKX1maW5hbGx5''@;'; put 'put ''eyhkLnNob3VsZENvYWxlc2NlRXZlbnRDaGFuZ2VEZXRlY3Rpb24mJiJldmVudFRhc2siPT09Qy50eXBlfHxkLnNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uKSYmZygpLF9DKGQpfX0sb25JbnZva2U6KGgsdix5LEMsSSxaLHVlKT0+e3RyeXtyZXR1cm4gU1QoZCksaC5pbnZva2Uo''@;'; put 'put ''eSxDLEksWix1ZSl9ZmluYWxseXtkLnNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uJiZnKCksX0MoZCl9fSxvbkhhc1Rhc2s6KGgsdix5LEMpPT57aC5oYXNUYXNrKHksQyksdj09PXkmJigibWljcm9UYXNrIj09Qy5jaGFuZ2U/KGQuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzPUMubWlj''@;'; put 'put ''cm9UYXNrLGVGKGQpLHFQKGQpKToibWFjcm9UYXNrIj09Qy5jaGFuZ2UmJihkLmhhc1BlbmRpbmdNYWNyb3Rhc2tzPUMubWFjcm9UYXNrKSl9LG9uSGFuZGxlRXJyb3I6KGgsdix5LEMpPT4oaC5oYW5kbGVFcnJvcih5LEMpLGQucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PmQub25FcnJvci5lbWl0''@;'; put 'put ''KEMpKSwhMSl9KX0oeSl9c3RhdGljIGlzSW5Bbmd1bGFyWm9uZSgpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgWm9uZSYmITA9PT1ab25lLmN1cnJlbnQuZ2V0KCJpc0FuZ3VsYXJab25lIil9c3RhdGljIGFzc2VydEluQW5ndWxhclpvbmUoKXtpZighX2wuaXNJbkFuZ3VsYXJab25lKCkp''@;'; put 'put ''dGhyb3cgbmV3IGVuKDkwOSwhMSl9c3RhdGljIGFzc2VydE5vdEluQW5ndWxhclpvbmUoKXtpZihfbC5pc0luQW5ndWxhclpvbmUoKSl0aHJvdyBuZXcgZW4oOTA5LCExKX1ydW4oZyxoLHYpe3JldHVybiB0aGlzLl9pbm5lci5ydW4oZyxoLHYpfXJ1blRhc2soZyxoLHYseSl7Y29uc3QgQz10''@;'; put 'put ''aGlzLl9pbm5lcixJPUMuc2NoZWR1bGVFdmVudFRhc2soIk5nWm9uZUV2ZW50OiAiK3ksZyxzcmUsQUMsQUMpO3RyeXtyZXR1cm4gQy5ydW5UYXNrKEksaCx2KX1maW5hbGx5e0MuY2FuY2VsVGFzayhJKX19cnVuR3VhcmRlZChnLGgsdil7cmV0dXJuIHRoaXMuX2lubmVyLnJ1bkd1YXJkZWQo''@;'; put 'put ''ZyxoLHYpfXJ1bk91dHNpZGVBbmd1bGFyKGcpe3JldHVybiB0aGlzLl9vdXRlci5ydW4oZyl9fWNvbnN0IHNyZT17fTtmdW5jdGlvbiBxUChkKXtpZigwPT1kLl9uZXN0aW5nJiYhZC5oYXNQZW5kaW5nTWljcm90YXNrcyYmIWQuaXNTdGFibGUpdHJ5e2QuX25lc3RpbmcrKyxkLm9uTWljcm90''@;'; put 'put ''YXNrRW1wdHkuZW1pdChudWxsKX1maW5hbGx5e2lmKGQuX25lc3RpbmctLSwhZC5oYXNQZW5kaW5nTWljcm90YXNrcyl0cnl7ZC5ydW5PdXRzaWRlQW5ndWxhcigoKT0+ZC5vblN0YWJsZS5lbWl0KG51bGwpKX1maW5hbGx5e2QuaXNTdGFibGU9ITB9fX1mdW5jdGlvbiBlRihkKXtkLmhhc1Bl''@;'; put 'put ''bmRpbmdNaWNyb3Rhc2tzPSEhKGQuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzfHwoZC5zaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9ufHxkLnNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uKSYmLTEhPT1kLmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZCl9ZnVuY3Rpb24g''@;'; put 'put ''U1QoZCl7ZC5fbmVzdGluZysrLGQuaXNTdGFibGUmJihkLmlzU3RhYmxlPSExLGQub25VbnN0YWJsZS5lbWl0KG51bGwpKX1mdW5jdGlvbiBfQyhkKXtkLl9uZXN0aW5nLS0scVAoZCl9Y2xhc3MgRkd7Y29uc3RydWN0b3IoKXt0aGlzLmhhc1BlbmRpbmdNaWNyb3Rhc2tzPSExLHRoaXMuaGFz''@;'; put 'put ''UGVuZGluZ01hY3JvdGFza3M9ITEsdGhpcy5pc1N0YWJsZT0hMCx0aGlzLm9uVW5zdGFibGU9bmV3IGFyLHRoaXMub25NaWNyb3Rhc2tFbXB0eT1uZXcgYXIsdGhpcy5vblN0YWJsZT1uZXcgYXIsdGhpcy5vbkVycm9yPW5ldyBhcn1ydW4oZyxoLHYpe3JldHVybiBnLmFwcGx5KGgsdil9cnVu''@;'; put 'put ''R3VhcmRlZChnLGgsdil7cmV0dXJuIGcuYXBwbHkoaCx2KX1ydW5PdXRzaWRlQW5ndWxhcihnKXtyZXR1cm4gZygpfXJ1blRhc2soZyxoLHYseSl7cmV0dXJuIGcuYXBwbHkoaCx2KX19Y29uc3QgTVQ9bmV3IHplKCIiKSx6aD1uZXcgemUoIiIpO2xldCBDQyxFVD0oKCk9PntjbGFzcyBke2Nv''@;'; put 'put ''bnN0cnVjdG9yKGgsdix5KXt0aGlzLl9uZ1pvbmU9aCx0aGlzLnJlZ2lzdHJ5PXYsdGhpcy5fcGVuZGluZ0NvdW50PTAsdGhpcy5faXNab25lU3RhYmxlPSEwLHRoaXMuX2RpZFdvcms9ITEsdGhpcy5fY2FsbGJhY2tzPVtdLHRoaXMudGFza1RyYWNraW5nWm9uZT1udWxsLENDfHwoZnVuY3Rp''@;'; put 'put ''b24gdXJlKGQpe0NDPWR9KHkpLHkuYWRkVG9XaW5kb3codikpLHRoaXMuX3dhdGNoQW5ndWxhckV2ZW50cygpLGgucnVuKCgpPT57dGhpcy50YXNrVHJhY2tpbmdab25lPSJ1bmRlZmluZWQiPT10eXBlb2YgWm9uZT9udWxsOlpvbmUuY3VycmVudC5nZXQoIlRhc2tUcmFja2luZ1pvbmUiKX0p''@;'; put 'put ''fV93YXRjaEFuZ3VsYXJFdmVudHMoKXt0aGlzLl9uZ1pvbmUub25VbnN0YWJsZS5zdWJzY3JpYmUoe25leHQ6KCk9Pnt0aGlzLl9kaWRXb3JrPSEwLHRoaXMuX2lzWm9uZVN0YWJsZT0hMX19KSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLl9uZ1pvbmUub25TdGFi''@;'; put 'put ''bGUuc3Vic2NyaWJlKHtuZXh0OigpPT57X2wuYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpLGtUKCgpPT57dGhpcy5faXNab25lU3RhYmxlPSEwLHRoaXMuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKX0pfX0pfSl9aW5jcmVhc2VQZW5kaW5nUmVxdWVzdENvdW50KCl7cmV0dXJuIHRoaXMuX3BlbmRp''@;'; put 'put ''bmdDb3VudCs9MSx0aGlzLl9kaWRXb3JrPSEwLHRoaXMuX3BlbmRpbmdDb3VudH1kZWNyZWFzZVBlbmRpbmdSZXF1ZXN0Q291bnQoKXtpZih0aGlzLl9wZW5kaW5nQ291bnQtPTEsdGhpcy5fcGVuZGluZ0NvdW50PDApdGhyb3cgbmV3IEVycm9yKCJwZW5kaW5nIGFzeW5jIHJlcXVlc3RzIGJl''@;'; put 'put ''bG93IHplcm8iKTtyZXR1cm4gdGhpcy5fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpLHRoaXMuX3BlbmRpbmdDb3VudH1pc1N0YWJsZSgpe3JldHVybiB0aGlzLl9pc1pvbmVTdGFibGUmJjA9PT10aGlzLl9wZW5kaW5nQ291bnQmJiF0aGlzLl9uZ1pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3N9X3J1''@;'; put 'put ''bkNhbGxiYWNrc0lmUmVhZHkoKXtpZih0aGlzLmlzU3RhYmxlKCkpa1QoKCk9Pntmb3IoOzAhPT10aGlzLl9jYWxsYmFja3MubGVuZ3RoOyl7bGV0IGg9dGhpcy5fY2FsbGJhY2tzLnBvcCgpO2NsZWFyVGltZW91dChoLnRpbWVvdXRJZCksaC5kb25lQ2IodGhpcy5fZGlkV29yayl9dGhpcy5f''@;'; put 'put ''ZGlkV29yaz0hMX0pO2Vsc2V7bGV0IGg9dGhpcy5nZXRQZW5kaW5nVGFza3MoKTt0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzLmZpbHRlcih2PT4hdi51cGRhdGVDYnx8IXYudXBkYXRlQ2IoaCl8fChjbGVhclRpbWVvdXQodi50aW1lb3V0SWQpLCExKSksdGhpcy5fZGlkV29yaz0h''@;'; put 'put ''MH19Z2V0UGVuZGluZ1Rhc2tzKCl7cmV0dXJuIHRoaXMudGFza1RyYWNraW5nWm9uZT90aGlzLnRhc2tUcmFja2luZ1pvbmUubWFjcm9UYXNrcy5tYXAoaD0+KHtzb3VyY2U6aC5zb3VyY2UsY3JlYXRpb25Mb2NhdGlvbjpoLmNyZWF0aW9uTG9jYXRpb24sZGF0YTpoLmRhdGF9KSk6W119YWRk''@;'; put 'put ''Q2FsbGJhY2soaCx2LHkpe2xldCBDPS0xO3YmJnY+MCYmKEM9c2V0VGltZW91dCgoKT0+e3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3MuZmlsdGVyKEk9PkkudGltZW91dElkIT09QyksaCh0aGlzLl9kaWRXb3JrLHRoaXMuZ2V0UGVuZGluZ1Rhc2tzKCkpfSx2KSksdGhpcy5fY2Fs''@;'; put 'put ''bGJhY2tzLnB1c2goe2RvbmVDYjpoLHRpbWVvdXRJZDpDLHVwZGF0ZUNiOnl9KX13aGVuU3RhYmxlKGgsdix5KXtpZih5JiYhdGhpcy50YXNrVHJhY2tpbmdab25lKXRocm93IG5ldyBFcnJvcignVGFzayB0cmFja2luZyB6b25lIGlzIHJlcXVpcmVkIHdoZW4gcGFzc2luZyBhbiB1cGRhdGUg''@;'; put 'put ''Y2FsbGJhY2sgdG8gd2hlblN0YWJsZSgpLiBJcyAiem9uZS5qcy9wbHVnaW5zL3Rhc2stdHJhY2tpbmciIGxvYWRlZD8nKTt0aGlzLmFkZENhbGxiYWNrKGgsdix5KSx0aGlzLl9ydW5DYWxsYmFja3NJZlJlYWR5KCl9Z2V0UGVuZGluZ1JlcXVlc3RDb3VudCgpe3JldHVybiB0aGlzLl9wZW5k''@;'; put 'put ''aW5nQ291bnR9cmVnaXN0ZXJBcHBsaWNhdGlvbihoKXt0aGlzLnJlZ2lzdHJ5LnJlZ2lzdGVyQXBwbGljYXRpb24oaCx0aGlzKX11bnJlZ2lzdGVyQXBwbGljYXRpb24oaCl7dGhpcy5yZWdpc3RyeS51bnJlZ2lzdGVyQXBwbGljYXRpb24oaCl9ZmluZFByb3ZpZGVycyhoLHYseSl7cmV0dXJu''@;'; put 'put ''W119fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKF9sKSxDaSh0RiksQ2koemgpKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSx0Rj0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5f''@;'; put 'put ''YXBwbGljYXRpb25zPW5ldyBNYXB9cmVnaXN0ZXJBcHBsaWNhdGlvbihoLHYpe3RoaXMuX2FwcGxpY2F0aW9ucy5zZXQoaCx2KX11bnJlZ2lzdGVyQXBwbGljYXRpb24oaCl7dGhpcy5fYXBwbGljYXRpb25zLmRlbGV0ZShoKX11bnJlZ2lzdGVyQWxsQXBwbGljYXRpb25zKCl7dGhpcy5fYXBw''@;'; put 'put ''bGljYXRpb25zLmNsZWFyKCl9Z2V0VGVzdGFiaWxpdHkoaCl7cmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9ucy5nZXQoaCl8fG51bGx9Z2V0QWxsVGVzdGFiaWxpdGllcygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX2FwcGxpY2F0aW9ucy52YWx1ZXMoKSl9Z2V0QWxsUm9vdEVsZW1lbnRzKCl7''@;'; put 'put ''cmV0dXJuIEFycmF5LmZyb20odGhpcy5fYXBwbGljYXRpb25zLmtleXMoKSl9ZmluZFRlc3RhYmlsaXR5SW5UcmVlKGgsdj0hMCl7dmFyIHk7cmV0dXJuIG51bGwhPT0oeT1udWxsPT1DQz92b2lkIDA6Q0MuZmluZFRlc3RhYmlsaXR5SW5UcmVlKHRoaXMsaCx2KSkmJnZvaWQgMCE9PXk/eTpu''@;'; put 'put ''dWxsfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicGxhdGZvcm0ifSksZH0pKCkscTQ9bnVsbDtjb25zdCBuRj1uZXcgemUoIkFsbG93TXVsdGlw''@;'; put 'put ''bGVUb2tlbiIpLHhUPW5ldyB6ZSgiUGxhdGZvcm1EZXN0cm95TGlzdGVuZXJzIik7Y2xhc3MgTkd7Y29uc3RydWN0b3IoZyxoKXt0aGlzLm5hbWU9Zyx0aGlzLnRva2VuPWh9fWZ1bmN0aW9uIGlGKGQsZyxoPVtdKXtjb25zdCB2PWBQbGF0Zm9ybTogJHtnfWAseT1uZXcgemUodik7cmV0dXJu''@;'; put 'put ''KEM9W10pPT57bGV0IEk9YUYoKTtpZighSXx8SS5pbmplY3Rvci5nZXQobkYsITEpKXtjb25zdCBaPVsuLi5oLC4uLkMse3Byb3ZpZGU6eSx1c2VWYWx1ZTohMH1dO2Q/ZChaKTpmdW5jdGlvbiBjcmUoZCl7aWYocTQmJiFxNC5nZXQobkYsITEpKXRocm93IG5ldyBlbig0MDAsITEpO3E0PWQ7''@;'; put 'put ''Y29uc3QgZz1kLmdldChPcik7KGZ1bmN0aW9uIFZHKGQpe2NvbnN0IGc9ZC5nZXQoSlAsbnVsbCk7ZyYmZy5mb3JFYWNoKGg9PmgoKSl9KShkKX0oZnVuY3Rpb24gakcoZD1bXSxnKXtyZXR1cm4gU3MuY3JlYXRlKHtuYW1lOmcscHJvdmlkZXJzOlt7cHJvdmlkZTp2bSx1c2VWYWx1ZToicGxh''@;'; put 'put ''dGZvcm0ifSx7cHJvdmlkZTp4VCx1c2VWYWx1ZTpuZXcgU2V0KFsoKT0+cTQ9bnVsbF0pfSwuLi5kXX0pfShaLHYpKX1yZXR1cm4gZnVuY3Rpb24gb0YoZCl7Y29uc3QgZz1hRigpO2lmKCFnKXRocm93IG5ldyBlbig0MDEsITEpO3JldHVybiBnfSgpfX1mdW5jdGlvbiBhRigpe3ZhciBkO3Jl''@;'; put 'put ''dHVybiBudWxsIT09KGQ9bnVsbD09cTQ/dm9pZCAwOnE0LmdldChPcikpJiZ2b2lkIDAhPT1kP2Q6bnVsbH1sZXQgT3I9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLl9pbmplY3Rvcj1oLHRoaXMuX21vZHVsZXM9W10sdGhpcy5fZGVzdHJveUxpc3RlbmVycz1bXSx0aGlzLl9k''@;'; put 'put ''ZXN0cm95ZWQ9ITF9Ym9vdHN0cmFwTW9kdWxlRmFjdG9yeShoLHYpe2NvbnN0IHk9ZnVuY3Rpb24gbEYoZCxnKXtsZXQgaDtyZXR1cm4gaD0ibm9vcCI9PT1kP25ldyBGRzooInpvbmUuanMiPT09ZD92b2lkIDA6ZCl8fG5ldyBfbChnKSxofShudWxsPT12P3ZvaWQgMDp2Lm5nWm9uZSxmdW5j''@;'; put 'put ''dGlvbiBacyhkKXtyZXR1cm57ZW5hYmxlTG9uZ1N0YWNrVHJhY2U6ITEsc2hvdWxkQ29hbGVzY2VFdmVudENoYW5nZURldGVjdGlvbjohKCFkfHwhZC5uZ1pvbmVFdmVudENvYWxlc2NpbmcpfHwhMSxzaG91bGRDb2FsZXNjZVJ1bkNoYW5nZURldGVjdGlvbjohKCFkfHwhZC5uZ1pvbmVSdW5D''@;'; put 'put ''b2FsZXNjaW5nKXx8ITF9fSh2KSksQz1be3Byb3ZpZGU6X2wsdXNlVmFsdWU6eX1dO3JldHVybiB5LnJ1bigoKT0+e2NvbnN0IEk9U3MuY3JlYXRlKHtwcm92aWRlcnM6QyxwYXJlbnQ6dGhpcy5pbmplY3RvcixuYW1lOmgubW9kdWxlVHlwZS5uYW1lfSksWj1oLmNyZWF0ZShJKSx1ZT1aLmlu''@;'; put 'put ''amVjdG9yLmdldCh2NixudWxsKTtpZighdWUpdGhyb3cgbmV3IGVuKDQwMiwhMSk7cmV0dXJuIHkucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pntjb25zdCBfZT15Lm9uRXJyb3Iuc3Vic2NyaWJlKHtuZXh0OkJlPT57dWUuaGFuZGxlRXJyb3IoQmUpfX0pO1oub25EZXN0cm95KCgpPT57VFQodGhp''@;'; put 'put ''cy5fbW9kdWxlcyxaKSxfZS51bnN1YnNjcmliZSgpfSl9KSxmdW5jdGlvbiBuaChkLGcsaCl7dHJ5e2NvbnN0IHY9aCgpO3JldHVybiBWbSh2KT92LmNhdGNoKHk9Pnt0aHJvdyBnLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT5kLmhhbmRsZUVycm9yKHkpKSx5fSk6dn1jYXRjaCh2KXt0aHJvdyBn''@;'; put 'put ''LnJ1bk91dHNpZGVBbmd1bGFyKCgpPT5kLmhhbmRsZUVycm9yKHYpKSx2fX0odWUseSwoKT0+e2NvbnN0IF9lPVouaW5qZWN0b3IuZ2V0KHdUKTtyZXR1cm4gX2UucnVuSW5pdGlhbGl6ZXJzKCksX2UuZG9uZVByb21pc2UudGhlbigoKT0+KGZ1bmN0aW9uIGFUKGQpe2xsKGQsIkV4cGVjdGVk''@;'; put 'put ''IGxvY2FsZUlkIHRvIGJlIGRlZmluZWQiKSwic3RyaW5nIj09dHlwZW9mIGQmJihNNT1kLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXy9nLCItIikpfShaLmluamVjdG9yLmdldChZZCxTNSl8fFM1KSx0aGlzLl9tb2R1bGVEb0Jvb3RzdHJhcChaKSxaKSl9KX0pfWJvb3RzdHJhcE1vZHVsZSho''@;'; put 'put ''LHY9W10pe2NvbnN0IHk9ejMoe30sdik7cmV0dXJuIGZ1bmN0aW9uIEhHKGQsZyxoKXtjb25zdCB2PW5ldyBlNyhoKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHYpfSgwLDAsaCkudGhlbihDPT50aGlzLmJvb3RzdHJhcE1vZHVsZUZhY3RvcnkoQyx5KSl9X21vZHVsZURvQm9vdHN0cmFwKGgp''@;'; put 'put ''e2NvbnN0IHY9aC5pbmplY3Rvci5nZXQoa0MpO2lmKGguX2Jvb3RzdHJhcENvbXBvbmVudHMubGVuZ3RoPjApaC5fYm9vdHN0cmFwQ29tcG9uZW50cy5mb3JFYWNoKHk9PnYuYm9vdHN0cmFwKHkpKTtlbHNle2lmKCFoLmluc3RhbmNlLm5nRG9Cb290c3RyYXApdGhyb3cgbmV3IGVuKDQwMywh''@;'; put 'put ''MSk7aC5pbnN0YW5jZS5uZ0RvQm9vdHN0cmFwKHYpfXRoaXMuX21vZHVsZXMucHVzaChoKX1vbkRlc3Ryb3koaCl7dGhpcy5fZGVzdHJveUxpc3RlbmVycy5wdXNoKGgpfWdldCBpbmplY3Rvcigpe3JldHVybiB0aGlzLl9pbmplY3Rvcn1kZXN0cm95KCl7aWYodGhpcy5fZGVzdHJveWVkKXRo''@;'; put 'put ''cm93IG5ldyBlbig0MDQsITEpO3RoaXMuX21vZHVsZXMuc2xpY2UoKS5mb3JFYWNoKHY9PnYuZGVzdHJveSgpKSx0aGlzLl9kZXN0cm95TGlzdGVuZXJzLmZvckVhY2godj0+digpKTtjb25zdCBoPXRoaXMuX2luamVjdG9yLmdldCh4VCxudWxsKTtoJiYoaC5mb3JFYWNoKHY9PnYoKSksaC5j''@;'; put 'put ''bGVhcigpKSx0aGlzLl9kZXN0cm95ZWQ9ITB9Z2V0IGRlc3Ryb3llZCgpe3JldHVybiB0aGlzLl9kZXN0cm95ZWR9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKFNzKSl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1''@;'; put 'put ''ZmFjLHByb3ZpZGVkSW46InBsYXRmb3JtIn0pLGR9KSgpO2Z1bmN0aW9uIHozKGQsZyl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZyk/Zy5yZWR1Y2UoejMsZCk6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGQpLGcpfWxldCBrQz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5''@;'; put 'put ''KXt0aGlzLl96b25lPWgsdGhpcy5faW5qZWN0b3I9dix0aGlzLl9leGNlcHRpb25IYW5kbGVyPXksdGhpcy5fYm9vdHN0cmFwTGlzdGVuZXJzPVtdLHRoaXMuX3ZpZXdzPVtdLHRoaXMuX3J1bm5pbmdUaWNrPSExLHRoaXMuX3N0YWJsZT0hMCx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fZGVz''@;'; put 'put ''dHJveUxpc3RlbmVycz1bXSx0aGlzLmNvbXBvbmVudFR5cGVzPVtdLHRoaXMuY29tcG9uZW50cz1bXSx0aGlzLl9vbk1pY3JvdGFza0VtcHR5U3Vic2NyaXB0aW9uPXRoaXMuX3pvbmUub25NaWNyb3Rhc2tFbXB0eS5zdWJzY3JpYmUoe25leHQ6KCk9Pnt0aGlzLl96b25lLnJ1bigoKT0+e3Ro''@;'; put 'put ''aXMudGljaygpfSl9fSk7Y29uc3QgQz1uZXcgRihaPT57dGhpcy5fc3RhYmxlPXRoaXMuX3pvbmUuaXNTdGFibGUmJiF0aGlzLl96b25lLmhhc1BlbmRpbmdNYWNyb3Rhc2tzJiYhdGhpcy5fem9uZS5oYXNQZW5kaW5nTWljcm90YXNrcyx0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgp''@;'; put 'put ''PT57Wi5uZXh0KHRoaXMuX3N0YWJsZSksWi5jb21wbGV0ZSgpfSl9KSxJPW5ldyBGKFo9PntsZXQgdWU7dGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3VlPXRoaXMuX3pvbmUub25TdGFibGUuc3Vic2NyaWJlKCgpPT57X2wuYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpLGtUKCgp''@;'; put 'put ''PT57IXRoaXMuX3N0YWJsZSYmIXRoaXMuX3pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3MmJiF0aGlzLl96b25lLmhhc1BlbmRpbmdNaWNyb3Rhc2tzJiYodGhpcy5fc3RhYmxlPSEwLFoubmV4dCghMCkpfSl9KX0pO2NvbnN0IF9lPXRoaXMuX3pvbmUub25VbnN0YWJsZS5zdWJzY3JpYmUoKCk9''@;'; put 'put ''PntfbC5hc3NlcnRJbkFuZ3VsYXJab25lKCksdGhpcy5fc3RhYmxlJiYodGhpcy5fc3RhYmxlPSExLHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PntaLm5leHQoITEpfSkpfSk7cmV0dXJuKCk9Pnt1ZS51bnN1YnNjcmliZSgpLF9lLnVuc3Vic2NyaWJlKCl9fSk7dGhpcy5pc1N0''@;'; put 'put ''YWJsZT1ucihDLEkucGlwZShmdW5jdGlvbiBUcigpe3JldHVybiBkPT5BbigpKGZ1bmN0aW9uIHduKGQsZyl7cmV0dXJuIGZ1bmN0aW9uKHYpe2xldCB5O2lmKHk9ImZ1bmN0aW9uIj09dHlwZW9mIGQ/ZDpmdW5jdGlvbigpe3JldHVybiBkfSwiZnVuY3Rpb24iPT10eXBlb2YgZylyZXR1cm4g''@;'; put 'put ''di5saWZ0KG5ldyB0bih5LGcpKTtjb25zdCBDPU9iamVjdC5jcmVhdGUodixLbik7cmV0dXJuIEMuc291cmNlPXYsQy5zdWJqZWN0RmFjdG9yeT15LEN9fSh6bikoZCkpfSgpKSl9Z2V0IGRlc3Ryb3llZCgpe3JldHVybiB0aGlzLl9kZXN0cm95ZWR9Z2V0IGluamVjdG9yKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuX2luamVjdG9yfWJvb3RzdHJhcChoLHYpe2NvbnN0IHk9aCBpbnN0YW5jZW9mIHZFO2lmKCF0aGlzLl9pbmplY3Rvci5nZXQod1QpLmRvbmUpdGhyb3cheSYmZnVuY3Rpb24gdGgoZCl7Y29uc3QgZz12cyhkKXx8RjEoZCl8fEtsKGQpO3JldHVybiBudWxsIT09ZyYmZy5zdGFuZGFsb25l''@;'; put 'put ''fShoKSxuZXcgZW4oNDA1LGZhbHNlKTtsZXQgSTtJPXk/aDp0aGlzLl9pbmplY3Rvci5nZXQoU2QpLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGgpLHRoaXMuY29tcG9uZW50VHlwZXMucHVzaChJLmNvbXBvbmVudFR5cGUpO2NvbnN0IFo9ZnVuY3Rpb24gckYoZCl7cmV0dXJuIGQuaXNCb3Vu''@;'; put 'put ''ZFRvTW9kdWxlfShJKT92b2lkIDA6dGhpcy5faW5qZWN0b3IuZ2V0KEgzKSxfZT1JLmNyZWF0ZShTcy5OVUxMLFtdLHZ8fEkuc2VsZWN0b3IsWiksQmU9X2UubG9jYXRpb24ubmF0aXZlRWxlbWVudCxOZT1fZS5pbmplY3Rvci5nZXQoTVQsbnVsbCk7cmV0dXJuIG51bGw9PU5lfHxOZS5yZWdp''@;'; put 'put ''c3RlckFwcGxpY2F0aW9uKEJlKSxfZS5vbkRlc3Ryb3koKCk9Pnt0aGlzLmRldGFjaFZpZXcoX2UuaG9zdFZpZXcpLFRUKHRoaXMuY29tcG9uZW50cyxfZSksbnVsbD09TmV8fE5lLnVucmVnaXN0ZXJBcHBsaWNhdGlvbihCZSl9KSx0aGlzLl9sb2FkQ29tcG9uZW50KF9lKSxfZX10aWNrKCl7''@;'; put 'put ''aWYodGhpcy5fcnVubmluZ1RpY2spdGhyb3cgbmV3IGVuKDEwMSwhMSk7dHJ5e3RoaXMuX3J1bm5pbmdUaWNrPSEwO2ZvcihsZXQgaCBvZiB0aGlzLl92aWV3cyloLmRldGVjdENoYW5nZXMoKX1jYXRjaChoKXt0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT50aGlzLl9leGNlcHRp''@;'; put 'put ''b25IYW5kbGVyLmhhbmRsZUVycm9yKGgpKX1maW5hbGx5e3RoaXMuX3J1bm5pbmdUaWNrPSExfX1hdHRhY2hWaWV3KGgpe2NvbnN0IHY9aDt0aGlzLl92aWV3cy5wdXNoKHYpLHYuYXR0YWNoVG9BcHBSZWYodGhpcyl9ZGV0YWNoVmlldyhoKXtjb25zdCB2PWg7VFQodGhpcy5fdmlld3Msdiks''@;'; put 'put ''di5kZXRhY2hGcm9tQXBwUmVmKCl9X2xvYWRDb21wb25lbnQoaCl7dGhpcy5hdHRhY2hWaWV3KGguaG9zdFZpZXcpLHRoaXMudGljaygpLHRoaXMuY29tcG9uZW50cy5wdXNoKGgpLHRoaXMuX2luamVjdG9yLmdldChGNixbXSkuY29uY2F0KHRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycykuZm9y''@;'; put 'put ''RWFjaCh5PT55KGgpKX1uZ09uRGVzdHJveSgpe2lmKCF0aGlzLl9kZXN0cm95ZWQpdHJ5e3RoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMuZm9yRWFjaChoPT5oKCkpLHRoaXMuX3ZpZXdzLnNsaWNlKCkuZm9yRWFjaChoPT5oLmRlc3Ryb3koKSksdGhpcy5fb25NaWNyb3Rhc2tFbXB0eVN1YnNjcmlw''@;'; put 'put ''dGlvbi51bnN1YnNjcmliZSgpfWZpbmFsbHl7dGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuX3ZpZXdzPVtdLHRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycz1bXSx0aGlzLl9kZXN0cm95TGlzdGVuZXJzPVtdfX1vbkRlc3Ryb3koaCl7cmV0dXJuIHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMucHVzaCho''@;'; put 'put ''KSwoKT0+VFQodGhpcy5fZGVzdHJveUxpc3RlbmVycyxoKX1kZXN0cm95KCl7aWYodGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBlbig0MDYsITEpO2NvbnN0IGg9dGhpcy5faW5qZWN0b3I7aC5kZXN0cm95JiYhaC5kZXN0cm95ZWQmJmguZGVzdHJveSgpfWdldCB2aWV3Q291bnQoKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5fdmlld3MubGVuZ3RofXdhcm5JZkRlc3Ryb3llZCgpe319cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoQ2koX2wpLENpKEUzKSxDaSh2NikpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhYyxwcm92aWRl''@;'; put 'put ''ZEluOiJyb290In0pLGR9KSgpO2Z1bmN0aW9uIFRUKGQsZyl7Y29uc3QgaD1kLmluZGV4T2YoZyk7aD4tMSYmZC5zcGxpY2UoaCwxKX1sZXQgSVQ9ITAsZDE9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuX19OR19FTEVNRU5UX0lEX189QkEsZH0pKCk7ZnVuY3Rpb24gQkEoZCl7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uIFdHKGQsZyxoKXtpZihrcyhkKSYmIWgpe2NvbnN0IHY9UXUoZC5pbmRleCxnKTtyZXR1cm4gbmV3IE02KHYsdil9cmV0dXJuIDQ3JmQudHlwZT9uZXcgTTYoZ1sxNl0sZyk6bnVsbH0oWHQoKSxQdCgpLDE2PT0oMTYmZCkpfWNsYXNzIE1De2NvbnN0cnVjdG9yKCl7fXN1cHBvcnRz''@;'; put 'put ''KGcpe3JldHVybiBQZChnKX1jcmVhdGUoZyl7cmV0dXJuIG5ldyBMVChnKX19Y29uc3QgRFQ9KGQsZyk9Pmc7Y2xhc3MgTFR7Y29uc3RydWN0b3IoZyl7dGhpcy5sZW5ndGg9MCx0aGlzLl9saW5rZWRSZWNvcmRzPW51bGwsdGhpcy5fdW5saW5rZWRSZWNvcmRzPW51bGwsdGhpcy5fcHJldmlv''@;'; put 'put ''dXNJdEhlYWQ9bnVsbCx0aGlzLl9pdEhlYWQ9bnVsbCx0aGlzLl9pdFRhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPW51bGwsdGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHRoaXMuX21vdmVzSGVhZD1udWxsLHRoaXMuX21vdmVzVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxs''@;'; put 'put ''LHRoaXMuX3JlbW92YWxzVGFpbD1udWxsLHRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPW51bGwsdGhpcy5fdHJhY2tCeUZuPWd8fERUfWZvckVhY2hJdGVtKGcpe2xldCBoO2ZvcihoPXRoaXMuX2l0SGVhZDtudWxsIT09aDtoPWguX25l''@;'; put 'put ''eHQpZyhoKX1mb3JFYWNoT3BlcmF0aW9uKGcpe2xldCBoPXRoaXMuX2l0SGVhZCx2PXRoaXMuX3JlbW92YWxzSGVhZCx5PTAsQz1udWxsO2Zvcig7aHx8djspe2NvbnN0IEk9IXZ8fGgmJmguY3VycmVudEluZGV4PE9UKHYseSxDKT9oOnYsWj1PVChJLHksQyksdWU9SS5jdXJyZW50SW5kZXg7''@;'; put 'put ''aWYoST09PXYpeS0tLHY9di5fbmV4dFJlbW92ZWQ7ZWxzZSBpZihoPWguX25leHQsbnVsbD09SS5wcmV2aW91c0luZGV4KXkrKztlbHNle0N8fChDPVtdKTtjb25zdCBfZT1aLXksQmU9dWUteTtpZihfZSE9QmUpe2ZvcihsZXQgS2U9MDtLZTxfZTtLZSsrKXtjb25zdCBwdD1LZTxDLmxlbmd0''@;'; put 'put ''aD9DW0tlXTpDW0tlXT0wLE90PXB0K0tlO0JlPD1PdCYmT3Q8X2UmJihDW0tlXT1wdCsxKX1DW0kucHJldmlvdXNJbmRleF09QmUtX2V9fVohPT11ZSYmZyhJLFosdWUpfX1mb3JFYWNoUHJldmlvdXNJdGVtKGcpe2xldCBoO2ZvcihoPXRoaXMuX3ByZXZpb3VzSXRIZWFkO251bGwhPT1oO2g9''@;'; put 'put ''aC5fbmV4dFByZXZpb3VzKWcoaCl9Zm9yRWFjaEFkZGVkSXRlbShnKXtsZXQgaDtmb3IoaD10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPT1oO2g9aC5fbmV4dEFkZGVkKWcoaCl9Zm9yRWFjaE1vdmVkSXRlbShnKXtsZXQgaDtmb3IoaD10aGlzLl9tb3Zlc0hlYWQ7bnVsbCE9PWg7aD1oLl9u''@;'; put 'put ''ZXh0TW92ZWQpZyhoKX1mb3JFYWNoUmVtb3ZlZEl0ZW0oZyl7bGV0IGg7Zm9yKGg9dGhpcy5fcmVtb3ZhbHNIZWFkO251bGwhPT1oO2g9aC5fbmV4dFJlbW92ZWQpZyhoKX1mb3JFYWNoSWRlbnRpdHlDaGFuZ2UoZyl7bGV0IGg7Zm9yKGg9dGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZDtudWxs''@;'; put 'put ''IT09aDtoPWguX25leHRJZGVudGl0eUNoYW5nZSlnKGgpfWRpZmYoZyl7aWYobnVsbD09ZyYmKGc9W10pLCFQZChnKSl0aHJvdyBuZXcgZW4oOTAwLCExKTtyZXR1cm4gdGhpcy5jaGVjayhnKT90aGlzOm51bGx9b25EZXN0cm95KCl7fWNoZWNrKGcpe3RoaXMuX3Jlc2V0KCk7bGV0IHksQyxJ''@;'; put 'put ''LGg9dGhpcy5faXRIZWFkLHY9ITE7aWYoQXJyYXkuaXNBcnJheShnKSl7dGhpcy5sZW5ndGg9Zy5sZW5ndGg7Zm9yKGxldCBaPTA7Wjx0aGlzLmxlbmd0aDtaKyspQz1nW1pdLEk9dGhpcy5fdHJhY2tCeUZuKFosQyksbnVsbCE9PWgmJk9iamVjdC5pcyhoLnRyYWNrQnlJZCxJKT8odiYmKGg9''@;'; put 'put ''dGhpcy5fdmVyaWZ5UmVpbnNlcnRpb24oaCxDLEksWikpLE9iamVjdC5pcyhoLml0ZW0sQyl8fHRoaXMuX2FkZElkZW50aXR5Q2hhbmdlKGgsQykpOihoPXRoaXMuX21pc21hdGNoKGgsQyxJLFopLHY9ITApLGg9aC5fbmV4dH1lbHNlIHk9MCxmdW5jdGlvbiBpUChkLGcpe2lmKEFycmF5Lmlz''@;'; put 'put ''QXJyYXkoZCkpZm9yKGxldCBoPTA7aDxkLmxlbmd0aDtoKyspZyhkW2hdKTtlbHNle2NvbnN0IGg9ZFtFNigpXSgpO2xldCB2O2Zvcig7ISh2PWgubmV4dCgpKS5kb25lOylnKHYudmFsdWUpfX0oZyxaPT57ST10aGlzLl90cmFja0J5Rm4oeSxaKSxudWxsIT09aCYmT2JqZWN0LmlzKGgudHJh''@;'; put 'put ''Y2tCeUlkLEkpPyh2JiYoaD10aGlzLl92ZXJpZnlSZWluc2VydGlvbihoLFosSSx5KSksT2JqZWN0LmlzKGguaXRlbSxaKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UoaCxaKSk6KGg9dGhpcy5fbWlzbWF0Y2goaCxaLEkseSksdj0hMCksaD1oLl9uZXh0LHkrK30pLHRoaXMubGVuZ3RoPXk7''@;'; put 'put ''cmV0dXJuIHRoaXMuX3RydW5jYXRlKGgpLHRoaXMuY29sbGVjdGlvbj1nLHRoaXMuaXNEaXJ0eX1nZXQgaXNEaXJ0eSgpe3JldHVybiBudWxsIT09dGhpcy5fYWRkaXRpb25zSGVhZHx8bnVsbCE9PXRoaXMuX21vdmVzSGVhZHx8bnVsbCE9PXRoaXMuX3JlbW92YWxzSGVhZHx8bnVsbCE9PXRo''@;'; put 'put ''aXMuX2lkZW50aXR5Q2hhbmdlc0hlYWR9X3Jlc2V0KCl7aWYodGhpcy5pc0RpcnR5KXtsZXQgZztmb3IoZz10aGlzLl9wcmV2aW91c0l0SGVhZD10aGlzLl9pdEhlYWQ7bnVsbCE9PWc7Zz1nLl9uZXh0KWcuX25leHRQcmV2aW91cz1nLl9uZXh0O2ZvcihnPXRoaXMuX2FkZGl0aW9uc0hlYWQ7''@;'; put 'put ''bnVsbCE9PWc7Zz1nLl9uZXh0QWRkZWQpZy5wcmV2aW91c0luZGV4PWcuY3VycmVudEluZGV4O2Zvcih0aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCxnPXRoaXMuX21vdmVzSGVhZDtudWxsIT09ZztnPWcuX25leHRNb3ZlZClnLnByZXZpb3VzSW5kZXg9Zy5j''@;'; put 'put ''dXJyZW50SW5kZXg7dGhpcy5fbW92ZXNIZWFkPXRoaXMuX21vdmVzVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD10aGlzLl9yZW1vdmFsc1RhaWw9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9bnVsbH19X21pc21hdGNoKGcsaCx2''@;'; put 'put ''LHkpe2xldCBDO3JldHVybiBudWxsPT09Zz9DPXRoaXMuX2l0VGFpbDooQz1nLl9wcmV2LHRoaXMuX3JlbW92ZShnKSksbnVsbCE9PShnPW51bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl91bmxpbmtlZFJlY29yZHMuZ2V0KHYsbnVsbCkpPyhPYmplY3QuaXMoZy5pdGVt''@;'; put 'put ''LGgpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZShnLGgpLHRoaXMuX3JlaW5zZXJ0QWZ0ZXIoZyxDLHkpKTpudWxsIT09KGc9bnVsbD09PXRoaXMuX2xpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl9saW5rZWRSZWNvcmRzLmdldCh2LHkpKT8oT2JqZWN0LmlzKGcuaXRlbSxoKXx8dGhpcy5fYWRk''@;'; put 'put ''SWRlbnRpdHlDaGFuZ2UoZyxoKSx0aGlzLl9tb3ZlQWZ0ZXIoZyxDLHkpKTpnPXRoaXMuX2FkZEFmdGVyKG5ldyB0cChoLHYpLEMseSksZ31fdmVyaWZ5UmVpbnNlcnRpb24oZyxoLHYseSl7bGV0IEM9bnVsbD09PXRoaXMuX3VubGlua2VkUmVjb3Jkcz9udWxsOnRoaXMuX3VubGlua2VkUmVj''@;'; put 'put ''b3Jkcy5nZXQodixudWxsKTtyZXR1cm4gbnVsbCE9PUM/Zz10aGlzLl9yZWluc2VydEFmdGVyKEMsZy5fcHJldix5KTpnLmN1cnJlbnRJbmRleCE9eSYmKGcuY3VycmVudEluZGV4PXksdGhpcy5fYWRkVG9Nb3ZlcyhnLHkpKSxnfV90cnVuY2F0ZShnKXtmb3IoO251bGwhPT1nOyl7Y29uc3Qg''@;'; put 'put ''aD1nLl9uZXh0O3RoaXMuX2FkZFRvUmVtb3ZhbHModGhpcy5fdW5saW5rKGcpKSxnPWh9bnVsbCE9PXRoaXMuX3VubGlua2VkUmVjb3JkcyYmdGhpcy5fdW5saW5rZWRSZWNvcmRzLmNsZWFyKCksbnVsbCE9PXRoaXMuX2FkZGl0aW9uc1RhaWwmJih0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0''@;'; put 'put ''QWRkZWQ9bnVsbCksbnVsbCE9PXRoaXMuX21vdmVzVGFpbCYmKHRoaXMuX21vdmVzVGFpbC5fbmV4dE1vdmVkPW51bGwpLG51bGwhPT10aGlzLl9pdFRhaWwmJih0aGlzLl9pdFRhaWwuX25leHQ9bnVsbCksbnVsbCE9PXRoaXMuX3JlbW92YWxzVGFpbCYmKHRoaXMuX3JlbW92YWxzVGFpbC5f''@;'; put 'put ''bmV4dFJlbW92ZWQ9bnVsbCksbnVsbCE9PXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwmJih0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsLl9uZXh0SWRlbnRpdHlDaGFuZ2U9bnVsbCl9X3JlaW5zZXJ0QWZ0ZXIoZyxoLHYpe251bGwhPT10aGlzLl91bmxpbmtlZFJlY29yZHMmJnRoaXMuX3Vu''@;'; put 'put ''bGlua2VkUmVjb3Jkcy5yZW1vdmUoZyk7Y29uc3QgeT1nLl9wcmV2UmVtb3ZlZCxDPWcuX25leHRSZW1vdmVkO3JldHVybiBudWxsPT09eT90aGlzLl9yZW1vdmFsc0hlYWQ9Qzp5Ll9uZXh0UmVtb3ZlZD1DLG51bGw9PT1DP3RoaXMuX3JlbW92YWxzVGFpbD15OkMuX3ByZXZSZW1vdmVkPXks''@;'; put 'put ''dGhpcy5faW5zZXJ0QWZ0ZXIoZyxoLHYpLHRoaXMuX2FkZFRvTW92ZXMoZyx2KSxnfV9tb3ZlQWZ0ZXIoZyxoLHYpe3JldHVybiB0aGlzLl91bmxpbmsoZyksdGhpcy5faW5zZXJ0QWZ0ZXIoZyxoLHYpLHRoaXMuX2FkZFRvTW92ZXMoZyx2KSxnfV9hZGRBZnRlcihnLGgsdil7cmV0dXJuIHRo''@;'; put 'put ''aXMuX2luc2VydEFmdGVyKGcsaCx2KSx0aGlzLl9hZGRpdGlvbnNUYWlsPW51bGw9PT10aGlzLl9hZGRpdGlvbnNUYWlsP3RoaXMuX2FkZGl0aW9uc0hlYWQ9Zzp0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9ZyxnfV9pbnNlcnRBZnRlcihnLGgsdil7Y29uc3QgeT1udWxsPT09aD90''@;'; put 'put ''aGlzLl9pdEhlYWQ6aC5fbmV4dDtyZXR1cm4gZy5fbmV4dD15LGcuX3ByZXY9aCxudWxsPT09eT90aGlzLl9pdFRhaWw9Zzp5Ll9wcmV2PWcsbnVsbD09PWg/dGhpcy5faXRIZWFkPWc6aC5fbmV4dD1nLG51bGw9PT10aGlzLl9saW5rZWRSZWNvcmRzJiYodGhpcy5fbGlua2VkUmVjb3Jkcz1u''@;'; put 'put ''ZXcgS0cpLHRoaXMuX2xpbmtlZFJlY29yZHMucHV0KGcpLGcuY3VycmVudEluZGV4PXYsZ31fcmVtb3ZlKGcpe3JldHVybiB0aGlzLl9hZGRUb1JlbW92YWxzKHRoaXMuX3VubGluayhnKSl9X3VubGluayhnKXtudWxsIT09dGhpcy5fbGlua2VkUmVjb3JkcyYmdGhpcy5fbGlua2VkUmVjb3Jk''@;'; put 'put ''cy5yZW1vdmUoZyk7Y29uc3QgaD1nLl9wcmV2LHY9Zy5fbmV4dDtyZXR1cm4gbnVsbD09PWg/dGhpcy5faXRIZWFkPXY6aC5fbmV4dD12LG51bGw9PT12P3RoaXMuX2l0VGFpbD1oOnYuX3ByZXY9aCxnfV9hZGRUb01vdmVzKGcsaCl7cmV0dXJuIGcucHJldmlvdXNJbmRleD09PWh8fCh0aGlz''@;'; put 'put ''Ll9tb3Zlc1RhaWw9bnVsbD09PXRoaXMuX21vdmVzVGFpbD90aGlzLl9tb3Zlc0hlYWQ9Zzp0aGlzLl9tb3Zlc1RhaWwuX25leHRNb3ZlZD1nKSxnfV9hZGRUb1JlbW92YWxzKGcpe3JldHVybiBudWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiYodGhpcy5fdW5saW5rZWRSZWNvcmRzPW5l''@;'; put 'put ''dyBLRyksdGhpcy5fdW5saW5rZWRSZWNvcmRzLnB1dChnKSxnLmN1cnJlbnRJbmRleD1udWxsLGcuX25leHRSZW1vdmVkPW51bGwsbnVsbD09PXRoaXMuX3JlbW92YWxzVGFpbD8odGhpcy5fcmVtb3ZhbHNUYWlsPXRoaXMuX3JlbW92YWxzSGVhZD1nLGcuX3ByZXZSZW1vdmVkPW51bGwpOihn''@;'; put 'put ''Ll9wcmV2UmVtb3ZlZD10aGlzLl9yZW1vdmFsc1RhaWwsdGhpcy5fcmVtb3ZhbHNUYWlsPXRoaXMuX3JlbW92YWxzVGFpbC5fbmV4dFJlbW92ZWQ9ZyksZ31fYWRkSWRlbnRpdHlDaGFuZ2UoZyxoKXtyZXR1cm4gZy5pdGVtPWgsdGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD1udWxsPT09dGhp''@;'; put 'put ''cy5faWRlbnRpdHlDaGFuZ2VzVGFpbD90aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPWc6dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbC5fbmV4dElkZW50aXR5Q2hhbmdlPWcsZ319Y2xhc3MgdHB7Y29uc3RydWN0b3IoZyxoKXt0aGlzLml0ZW09Zyx0aGlzLnRyYWNrQnlJZD1oLHRoaXMuY3Vy''@;'; put 'put ''cmVudEluZGV4PW51bGwsdGhpcy5wcmV2aW91c0luZGV4PW51bGwsdGhpcy5fbmV4dFByZXZpb3VzPW51bGwsdGhpcy5fcHJldj1udWxsLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wcmV2RHVwPW51bGwsdGhpcy5fbmV4dER1cD1udWxsLHRoaXMuX3ByZXZSZW1vdmVkPW51bGwsdGhpcy5fbmV4''@;'; put 'put ''dFJlbW92ZWQ9bnVsbCx0aGlzLl9uZXh0QWRkZWQ9bnVsbCx0aGlzLl9uZXh0TW92ZWQ9bnVsbCx0aGlzLl9uZXh0SWRlbnRpdHlDaGFuZ2U9bnVsbH19Y2xhc3MgX3Jle2NvbnN0cnVjdG9yKCl7dGhpcy5faGVhZD1udWxsLHRoaXMuX3RhaWw9bnVsbH1hZGQoZyl7bnVsbD09PXRoaXMuX2hl''@;'; put 'put ''YWQ/KHRoaXMuX2hlYWQ9dGhpcy5fdGFpbD1nLGcuX25leHREdXA9bnVsbCxnLl9wcmV2RHVwPW51bGwpOih0aGlzLl90YWlsLl9uZXh0RHVwPWcsZy5fcHJldkR1cD10aGlzLl90YWlsLGcuX25leHREdXA9bnVsbCx0aGlzLl90YWlsPWcpfWdldChnLGgpe2xldCB2O2Zvcih2PXRoaXMuX2hl''@;'; put 'put ''YWQ7bnVsbCE9PXY7dj12Ll9uZXh0RHVwKWlmKChudWxsPT09aHx8aDw9di5jdXJyZW50SW5kZXgpJiZPYmplY3QuaXModi50cmFja0J5SWQsZykpcmV0dXJuIHY7cmV0dXJuIG51bGx9cmVtb3ZlKGcpe2NvbnN0IGg9Zy5fcHJldkR1cCx2PWcuX25leHREdXA7cmV0dXJuIG51bGw9PT1oP3Ro''@;'; put 'put ''aXMuX2hlYWQ9djpoLl9uZXh0RHVwPXYsbnVsbD09PXY/dGhpcy5fdGFpbD1oOnYuX3ByZXZEdXA9aCxudWxsPT09dGhpcy5faGVhZH19Y2xhc3MgS0d7Y29uc3RydWN0b3IoKXt0aGlzLm1hcD1uZXcgTWFwfXB1dChnKXtjb25zdCBoPWcudHJhY2tCeUlkO2xldCB2PXRoaXMubWFwLmdldCho''@;'; put 'put ''KTt2fHwodj1uZXcgX3JlLHRoaXMubWFwLnNldChoLHYpKSx2LmFkZChnKX1nZXQoZyxoKXtjb25zdCB5PXRoaXMubWFwLmdldChnKTtyZXR1cm4geT95LmdldChnLGgpOm51bGx9cmVtb3ZlKGcpe2NvbnN0IGg9Zy50cmFja0J5SWQ7cmV0dXJuIHRoaXMubWFwLmdldChoKS5yZW1vdmUoZykm''@;'; put 'put ''JnRoaXMubWFwLmRlbGV0ZShoKSxnfWdldCBpc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLm1hcC5zaXplfWNsZWFyKCl7dGhpcy5tYXAuY2xlYXIoKX19ZnVuY3Rpb24gT1QoZCxnLGgpe2NvbnN0IHY9ZC5wcmV2aW91c0luZGV4O2lmKG51bGw9PT12KXJldHVybiB2O2xldCB5PTA7cmV0dXJu''@;'; put 'put ''IGgmJnY8aC5sZW5ndGgmJih5PWhbdl0pLHYrZyt5fWNsYXNzICRHe2NvbnN0cnVjdG9yKCl7fXN1cHBvcnRzKGcpe3JldHVybiBnIGluc3RhbmNlb2YgTWFwfHxCXyhnKX1jcmVhdGUoKXtyZXR1cm4gbmV3IENyZX19Y2xhc3MgQ3Jle2NvbnN0cnVjdG9yKCl7dGhpcy5fcmVjb3Jkcz1uZXcg''@;'; put 'put ''TWFwLHRoaXMuX21hcEhlYWQ9bnVsbCx0aGlzLl9hcHBlbmRBZnRlcj1udWxsLHRoaXMuX3ByZXZpb3VzTWFwSGVhZD1udWxsLHRoaXMuX2NoYW5nZXNIZWFkPW51bGwsdGhpcy5fY2hhbmdlc1RhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPW51bGwsdGhpcy5fYWRkaXRpb25zVGFpbD1u''@;'; put 'put ''dWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsLHRoaXMuX3JlbW92YWxzVGFpbD1udWxsfWdldCBpc0RpcnR5KCl7cmV0dXJuIG51bGwhPT10aGlzLl9hZGRpdGlvbnNIZWFkfHxudWxsIT09dGhpcy5fY2hhbmdlc0hlYWR8fG51bGwhPT10aGlzLl9yZW1vdmFsc0hlYWR9Zm9yRWFjaEl0ZW0o''@;'; put 'put ''Zyl7bGV0IGg7Zm9yKGg9dGhpcy5fbWFwSGVhZDtudWxsIT09aDtoPWguX25leHQpZyhoKX1mb3JFYWNoUHJldmlvdXNJdGVtKGcpe2xldCBoO2ZvcihoPXRoaXMuX3ByZXZpb3VzTWFwSGVhZDtudWxsIT09aDtoPWguX25leHRQcmV2aW91cylnKGgpfWZvckVhY2hDaGFuZ2VkSXRlbShnKXts''@;'; put 'put ''ZXQgaDtmb3IoaD10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09aDtoPWguX25leHRDaGFuZ2VkKWcoaCl9Zm9yRWFjaEFkZGVkSXRlbShnKXtsZXQgaDtmb3IoaD10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPT1oO2g9aC5fbmV4dEFkZGVkKWcoaCl9Zm9yRWFjaFJlbW92ZWRJdGVtKGcpe2xl''@;'; put 'put ''dCBoO2ZvcihoPXRoaXMuX3JlbW92YWxzSGVhZDtudWxsIT09aDtoPWguX25leHRSZW1vdmVkKWcoaCl9ZGlmZihnKXtpZihnKXtpZighKGcgaW5zdGFuY2VvZiBNYXB8fEJfKGcpKSl0aHJvdyBuZXcgZW4oOTAwLCExKX1lbHNlIGc9bmV3IE1hcDtyZXR1cm4gdGhpcy5jaGVjayhnKT90aGlz''@;'; put 'put ''Om51bGx9b25EZXN0cm95KCl7fWNoZWNrKGcpe3RoaXMuX3Jlc2V0KCk7bGV0IGg9dGhpcy5fbWFwSGVhZDtpZih0aGlzLl9hcHBlbmRBZnRlcj1udWxsLHRoaXMuX2ZvckVhY2goZywodix5KT0+e2lmKGgmJmgua2V5PT09eSl0aGlzLl9tYXliZUFkZFRvQ2hhbmdlcyhoLHYpLHRoaXMuX2Fw''@;'; put 'put ''cGVuZEFmdGVyPWgsaD1oLl9uZXh0O2Vsc2V7Y29uc3QgQz10aGlzLl9nZXRPckNyZWF0ZVJlY29yZEZvcktleSh5LHYpO2g9dGhpcy5faW5zZXJ0QmVmb3JlT3JBcHBlbmQoaCxDKX19KSxoKXtoLl9wcmV2JiYoaC5fcHJldi5fbmV4dD1udWxsKSx0aGlzLl9yZW1vdmFsc0hlYWQ9aDtmb3Io''@;'; put 'put ''bGV0IHY9aDtudWxsIT09djt2PXYuX25leHRSZW1vdmVkKXY9PT10aGlzLl9tYXBIZWFkJiYodGhpcy5fbWFwSGVhZD1udWxsKSx0aGlzLl9yZWNvcmRzLmRlbGV0ZSh2LmtleSksdi5fbmV4dFJlbW92ZWQ9di5fbmV4dCx2LnByZXZpb3VzVmFsdWU9di5jdXJyZW50VmFsdWUsdi5jdXJyZW50''@;'; put 'put ''VmFsdWU9bnVsbCx2Ll9wcmV2PW51bGwsdi5fbmV4dD1udWxsfXJldHVybiB0aGlzLl9jaGFuZ2VzVGFpbCYmKHRoaXMuX2NoYW5nZXNUYWlsLl9uZXh0Q2hhbmdlZD1udWxsKSx0aGlzLl9hZGRpdGlvbnNUYWlsJiYodGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPW51bGwpLHRoaXMu''@;'; put 'put ''aXNEaXJ0eX1faW5zZXJ0QmVmb3JlT3JBcHBlbmQoZyxoKXtpZihnKXtjb25zdCB2PWcuX3ByZXY7cmV0dXJuIGguX25leHQ9ZyxoLl9wcmV2PXYsZy5fcHJldj1oLHYmJih2Ll9uZXh0PWgpLGc9PT10aGlzLl9tYXBIZWFkJiYodGhpcy5fbWFwSGVhZD1oKSx0aGlzLl9hcHBlbmRBZnRlcj1n''@;'; put 'put ''LGd9cmV0dXJuIHRoaXMuX2FwcGVuZEFmdGVyPyh0aGlzLl9hcHBlbmRBZnRlci5fbmV4dD1oLGguX3ByZXY9dGhpcy5fYXBwZW5kQWZ0ZXIpOnRoaXMuX21hcEhlYWQ9aCx0aGlzLl9hcHBlbmRBZnRlcj1oLG51bGx9X2dldE9yQ3JlYXRlUmVjb3JkRm9yS2V5KGcsaCl7aWYodGhpcy5fcmVj''@;'; put 'put ''b3Jkcy5oYXMoZykpe2NvbnN0IHk9dGhpcy5fcmVjb3Jkcy5nZXQoZyk7dGhpcy5fbWF5YmVBZGRUb0NoYW5nZXMoeSxoKTtjb25zdCBDPXkuX3ByZXYsST15Ll9uZXh0O3JldHVybiBDJiYoQy5fbmV4dD1JKSxJJiYoSS5fcHJldj1DKSx5Ll9uZXh0PW51bGwseS5fcHJldj1udWxsLHl9Y29u''@;'; put 'put ''c3Qgdj1uZXcga3JlKGcpO3JldHVybiB0aGlzLl9yZWNvcmRzLnNldChnLHYpLHYuY3VycmVudFZhbHVlPWgsdGhpcy5fYWRkVG9BZGRpdGlvbnModiksdn1fcmVzZXQoKXtpZih0aGlzLmlzRGlydHkpe2xldCBnO2Zvcih0aGlzLl9wcmV2aW91c01hcEhlYWQ9dGhpcy5fbWFwSGVhZCxnPXRo''@;'; put 'put ''aXMuX3ByZXZpb3VzTWFwSGVhZDtudWxsIT09ZztnPWcuX25leHQpZy5fbmV4dFByZXZpb3VzPWcuX25leHQ7Zm9yKGc9dGhpcy5fY2hhbmdlc0hlYWQ7bnVsbCE9PWc7Zz1nLl9uZXh0Q2hhbmdlZClnLnByZXZpb3VzVmFsdWU9Zy5jdXJyZW50VmFsdWU7Zm9yKGc9dGhpcy5fYWRkaXRpb25z''@;'; put 'put ''SGVhZDtudWxsIT1nO2c9Zy5fbmV4dEFkZGVkKWcucHJldmlvdXNWYWx1ZT1nLmN1cnJlbnRWYWx1ZTt0aGlzLl9jaGFuZ2VzSGVhZD10aGlzLl9jaGFuZ2VzVGFpbD1udWxsLHRoaXMuX2FkZGl0aW9uc0hlYWQ9dGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1u''@;'; put 'put ''dWxsfX1fbWF5YmVBZGRUb0NoYW5nZXMoZyxoKXtPYmplY3QuaXMoaCxnLmN1cnJlbnRWYWx1ZSl8fChnLnByZXZpb3VzVmFsdWU9Zy5jdXJyZW50VmFsdWUsZy5jdXJyZW50VmFsdWU9aCx0aGlzLl9hZGRUb0NoYW5nZXMoZykpfV9hZGRUb0FkZGl0aW9ucyhnKXtudWxsPT09dGhpcy5fYWRk''@;'; put 'put ''aXRpb25zSGVhZD90aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9ZzoodGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPWcsdGhpcy5fYWRkaXRpb25zVGFpbD1nKX1fYWRkVG9DaGFuZ2VzKGcpe251bGw9PT10aGlzLl9jaGFuZ2VzSGVhZD90aGlzLl9jaGFuZ2Vz''@;'; put 'put ''SGVhZD10aGlzLl9jaGFuZ2VzVGFpbD1nOih0aGlzLl9jaGFuZ2VzVGFpbC5fbmV4dENoYW5nZWQ9Zyx0aGlzLl9jaGFuZ2VzVGFpbD1nKX1fZm9yRWFjaChnLGgpe2cgaW5zdGFuY2VvZiBNYXA/Zy5mb3JFYWNoKGgpOk9iamVjdC5rZXlzKGcpLmZvckVhY2godj0+aChnW3ZdLHYpKX19Y2xh''@;'; put 'put ''c3Mga3Jle2NvbnN0cnVjdG9yKGcpe3RoaXMua2V5PWcsdGhpcy5wcmV2aW91c1ZhbHVlPW51bGwsdGhpcy5jdXJyZW50VmFsdWU9bnVsbCx0aGlzLl9uZXh0UHJldmlvdXM9bnVsbCx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcHJldj1udWxsLHRoaXMuX25leHRBZGRlZD1udWxsLHRoaXMuX25l''@;'; put 'put ''eHRSZW1vdmVkPW51bGwsdGhpcy5fbmV4dENoYW5nZWQ9bnVsbH19ZnVuY3Rpb24gUlQoKXtyZXR1cm4gbmV3IFBBKFtuZXcgTUNdKX1sZXQgUEE9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmZhY3Rvcmllcz1ofXN0YXRpYyBjcmVhdGUoaCx2KXtpZihudWxsIT12KXtjb25z''@;'; put 'put ''dCB5PXYuZmFjdG9yaWVzLnNsaWNlKCk7aD1oLmNvbmNhdCh5KX1yZXR1cm4gbmV3IGQoaCl9c3RhdGljIGV4dGVuZChoKXtyZXR1cm57cHJvdmlkZTpkLHVzZUZhY3Rvcnk6dj0+ZC5jcmVhdGUoaCx2fHxSVCgpKSxkZXBzOltbZCxuZXcgTDQsbmV3IG1mXV19fWZpbmQoaCl7Y29uc3Qgdj10''@;'; put 'put ''aGlzLmZhY3Rvcmllcy5maW5kKHk9Pnkuc3VwcG9ydHMoaCkpO2lmKG51bGwhPXYpcmV0dXJuIHY7dGhyb3cgbmV3IGVuKDkwMSwhMSl9fXJldHVybiBkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQscHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpSVH0pLGR9KSgpO2Z1bmN0aW9uIHFHKCl7cmV0''@;'; put 'put ''dXJuIG5ldyBFQyhbbmV3ICRHXSl9bGV0IEVDPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5mYWN0b3JpZXM9aH1zdGF0aWMgY3JlYXRlKGgsdil7aWYodil7Y29uc3QgeT12LmZhY3Rvcmllcy5zbGljZSgpO2g9aC5jb25jYXQoeSl9cmV0dXJuIG5ldyBkKGgpfXN0YXRpYyBl''@;'; put 'put ''eHRlbmQoaCl7cmV0dXJue3Byb3ZpZGU6ZCx1c2VGYWN0b3J5OnY9PmQuY3JlYXRlKGgsdnx8cUcoKSksZGVwczpbW2QsbmV3IEw0LG5ldyBtZl1dfX1maW5kKGgpe2NvbnN0IHY9dGhpcy5mYWN0b3JpZXMuZmluZCh5PT55LnN1cHBvcnRzKGgpKTtpZih2KXJldHVybiB2O3Rocm93IG5ldyBl''@;'; put 'put ''big5MDEsITEpfX1yZXR1cm4gZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLHByb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6cUd9KSxkfSkoKTtjb25zdCBuVz1pRihudWxsLCJjb3JlIixbXSk7bGV0IEVyZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe319cmV0dXJuIGQuXHUwMjc1ZmFj''@;'; put 'put ''PWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoQ2koa0MpKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHt9KSxkfSkoKTtmdW5jdGlvbiBINihkKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBkP2Q6bnVsbCE9ZCYmImZhbHNlIiE9PWR9bGV0IG83PW51bGw7''@;'; put 'put ''ZnVuY3Rpb24gVWQoKXtyZXR1cm4gbzd9Y29uc3QgZ3M9bmV3IHplKCJEb2N1bWVudFRva2VuIik7bGV0IEJUPSgoKT0+e2NsYXNzIGR7aGlzdG9yeUdvKGgpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4g''@;'; put 'put ''bmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBvVygpe3JldHVybiBDaShhVyl9KCl9LHByb3ZpZGVkSW46InBsYXRmb3JtIn0pLGR9KSgpO2NvbnN0IFJyZT1uZXcgemUoIkxvY2F0aW9uIEluaXRpYWxpemVkIik7''@;'; put 'put ''bGV0IGFXPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBCVHtjb25zdHJ1Y3RvcihoKXtzdXBlcigpLHRoaXMuX2RvYz1oLHRoaXMuX2luaXQoKX1faW5pdCgpe3RoaXMubG9jYXRpb249d2luZG93LmxvY2F0aW9uLHRoaXMuX2hpc3Rvcnk9d2luZG93Lmhpc3Rvcnl9Z2V0QmFzZUhyZWZGcm9tRE9N''@;'; put 'put ''KCl7cmV0dXJuIFVkKCkuZ2V0QmFzZUhyZWYodGhpcy5fZG9jKX1vblBvcFN0YXRlKGgpe2NvbnN0IHY9VWQoKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsIndpbmRvdyIpO3JldHVybiB2LmFkZEV2ZW50TGlzdGVuZXIoInBvcHN0YXRlIixoLCExKSwoKT0+di5yZW1vdmVFdmVu''@;'; put 'put ''dExpc3RlbmVyKCJwb3BzdGF0ZSIsaCl9b25IYXNoQ2hhbmdlKGgpe2NvbnN0IHY9VWQoKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsIndpbmRvdyIpO3JldHVybiB2LmFkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLGgsITEpLCgpPT52LnJlbW92ZUV2ZW50TGlzdGVuZXIo''@;'; put 'put ''Imhhc2hjaGFuZ2UiLGgpfWdldCBocmVmKCl7cmV0dXJuIHRoaXMubG9jYXRpb24uaHJlZn1nZXQgcHJvdG9jb2woKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5wcm90b2NvbH1nZXQgaG9zdG5hbWUoKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5ob3N0bmFtZX1nZXQgcG9ydCgpe3JldHVybiB0aGlz''@;'; put 'put ''LmxvY2F0aW9uLnBvcnR9Z2V0IHBhdGhuYW1lKCl7cmV0dXJuIHRoaXMubG9jYXRpb24ucGF0aG5hbWV9Z2V0IHNlYXJjaCgpe3JldHVybiB0aGlzLmxvY2F0aW9uLnNlYXJjaH1nZXQgaGFzaCgpe3JldHVybiB0aGlzLmxvY2F0aW9uLmhhc2h9c2V0IHBhdGhuYW1lKGgpe3RoaXMubG9jYXRp''@;'; put 'put ''b24ucGF0aG5hbWU9aH1wdXNoU3RhdGUoaCx2LHkpe2xXKCk/dGhpcy5faGlzdG9yeS5wdXNoU3RhdGUoaCx2LHkpOnRoaXMubG9jYXRpb24uaGFzaD15fXJlcGxhY2VTdGF0ZShoLHYseSl7bFcoKT90aGlzLl9oaXN0b3J5LnJlcGxhY2VTdGF0ZShoLHYseSk6dGhpcy5sb2NhdGlvbi5oYXNo''@;'; put 'put ''PXl9Zm9yd2FyZCgpe3RoaXMuX2hpc3RvcnkuZm9yd2FyZCgpfWJhY2soKXt0aGlzLl9oaXN0b3J5LmJhY2soKX1oaXN0b3J5R28oaD0wKXt0aGlzLl9oaXN0b3J5LmdvKGgpfWdldFN0YXRlKCl7cmV0dXJuIHRoaXMuX2hpc3Rvcnkuc3RhdGV9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlv''@;'; put 'put ''bihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKGdzKSl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGRGKCl7cmV0dXJuIG5ldyBhVyhDaShncykpfSgpfSxwcm92aWRlZEluOiJwbGF0Zm9ybSJ9KSxkfSkoKTtmdW5jdGlvbiBsVygp''@;'; put 'put ''e3JldHVybiEhd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlfWZ1bmN0aW9uIHJoKGQsZyl7aWYoMD09ZC5sZW5ndGgpcmV0dXJuIGc7aWYoMD09Zy5sZW5ndGgpcmV0dXJuIGQ7bGV0IGg9MDtyZXR1cm4gZC5lbmRzV2l0aCgiLyIpJiZoKyssZy5zdGFydHNXaXRoKCIvIikmJmgrKywyPT1oP2Qr''@;'; put 'put ''Zy5zdWJzdHJpbmcoMSk6MT09aD9kK2c6ZCsiLyIrZ31mdW5jdGlvbiBwRihkKXtjb25zdCBnPWQubWF0Y2goLyN8XD98JC8pLGg9ZyYmZy5pbmRleHx8ZC5sZW5ndGg7cmV0dXJuIGQuc2xpY2UoMCxoLSgiLyI9PT1kW2gtMV0/MTowKSkrZC5zbGljZShoKX1mdW5jdGlvbiBucChkKXtyZXR1''@;'; put 'put ''cm4gZCYmIj8iIT09ZFswXT8iPyIrZDpkfWxldCBONj0oKCk9PntjbGFzcyBke2hpc3RvcnlHbyhoKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tl''@;'; put 'put ''bjpkLGZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gaDIodVcpfSxwcm92aWRlZEluOiJyb290In0pLGR9KSgpO2NvbnN0IHNXPW5ldyB6ZSgiYXBwQmFzZUhyZWYiKTtsZXQgdVc9KCgpPT57Y2xhc3MgZCBleHRlbmRzIE42e2NvbnN0cnVjdG9yKGgsdil7dmFyIHksQyxJO3N1cGVyKCksdGhp''@;'; put 'put ''cy5fcGxhdGZvcm1Mb2NhdGlvbj1oLHRoaXMuX3JlbW92ZUxpc3RlbmVyRm5zPVtdLHRoaXMuX2Jhc2VIcmVmPW51bGwhPT0oST1udWxsIT09KHk9bnVsbCE9dj92OnRoaXMuX3BsYXRmb3JtTG9jYXRpb24uZ2V0QmFzZUhyZWZGcm9tRE9NKCkpJiZ2b2lkIDAhPT15P3k6bnVsbD09PShDPWgy''@;'; put 'put ''KGdzKS5sb2NhdGlvbil8fHZvaWQgMD09PUM/dm9pZCAwOkMub3JpZ2luKSYmdm9pZCAwIT09ST9JOiIifW5nT25EZXN0cm95KCl7Zm9yKDt0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5sZW5ndGg7KXRoaXMuX3JlbW92ZUxpc3RlbmVyRm5zLnBvcCgpKCl9b25Qb3BTdGF0ZShoKXt0aGlzLl9y''@;'; put 'put ''ZW1vdmVMaXN0ZW5lckZucy5wdXNoKHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25Qb3BTdGF0ZShoKSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uSGFzaENoYW5nZShoKSl9Z2V0QmFzZUhyZWYoKXtyZXR1cm4gdGhpcy5fYmFzZUhyZWZ9cHJlcGFyZUV4dGVybmFsVXJsKGgpe3JldHVybiBy''@;'; put 'put ''aCh0aGlzLl9iYXNlSHJlZixoKX1wYXRoKGg9ITEpe2NvbnN0IHY9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZStucCh0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnNlYXJjaCkseT10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmhhc2g7cmV0dXJuIHkmJmg/YCR7dn0ke3l9YDp2fXB1c2hT''@;'; put 'put ''dGF0ZShoLHYseSxDKXtjb25zdCBJPXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKHkrbnAoQykpO3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ucHVzaFN0YXRlKGgsdixJKX1yZXBsYWNlU3RhdGUoaCx2LHksQyl7Y29uc3QgST10aGlzLnByZXBhcmVFeHRlcm5hbFVybCh5K25wKEMpKTt0aGlzLl9w''@;'; put 'put ''bGF0Zm9ybUxvY2F0aW9uLnJlcGxhY2VTdGF0ZShoLHYsSSl9Zm9yd2FyZCgpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uZm9yd2FyZCgpfWJhY2soKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmJhY2soKX1nZXRTdGF0ZSgpe3JldHVybiB0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmdldFN0YXRl''@;'; put 'put ''KCl9aGlzdG9yeUdvKGg9MCl7dmFyIHYseTtudWxsPT09KHk9KHY9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbikuaGlzdG9yeUdvKXx8dm9pZCAwPT09eXx8eS5jYWxsKHYsaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKEJUKSxDaShzVyw4KSl9''@;'; put 'put ''LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksZH0pKCksQnJlPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBONntjb25zdHJ1Y3RvcihoLHYpe3N1cGVyKCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbj1oLHRoaXMuX2Jhc2VIcmVm''@;'; put 'put ''PSIiLHRoaXMuX3JlbW92ZUxpc3RlbmVyRm5zPVtdLG51bGwhPXYmJih0aGlzLl9iYXNlSHJlZj12KX1uZ09uRGVzdHJveSgpe2Zvcig7dGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMubGVuZ3RoOyl0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5wb3AoKSgpfW9uUG9wU3RhdGUoaCl7dGhpcy5fcmVt''@;'; put 'put ''b3ZlTGlzdGVuZXJGbnMucHVzaCh0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uUG9wU3RhdGUoaCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vbkhhc2hDaGFuZ2UoaCkpfWdldEJhc2VIcmVmKCl7cmV0dXJuIHRoaXMuX2Jhc2VIcmVmfXBhdGgoaD0hMSl7bGV0IHY9dGhpcy5fcGxhdGZvcm1M''@;'; put 'put ''b2NhdGlvbi5oYXNoO3JldHVybiBudWxsPT12JiYodj0iIyIpLHYubGVuZ3RoPjA/di5zdWJzdHJpbmcoMSk6dn1wcmVwYXJlRXh0ZXJuYWxVcmwoaCl7Y29uc3Qgdj1yaCh0aGlzLl9iYXNlSHJlZixoKTtyZXR1cm4gdi5sZW5ndGg+MD8iIyIrdjp2fXB1c2hTdGF0ZShoLHYseSxDKXtsZXQg''@;'; put 'put ''ST10aGlzLnByZXBhcmVFeHRlcm5hbFVybCh5K25wKEMpKTswPT1JLmxlbmd0aCYmKEk9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZSksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wdXNoU3RhdGUoaCx2LEkpfXJlcGxhY2VTdGF0ZShoLHYseSxDKXtsZXQgST10aGlzLnByZXBhcmVF''@;'; put 'put ''eHRlcm5hbFVybCh5K25wKEMpKTswPT1JLmxlbmd0aCYmKEk9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZSksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5yZXBsYWNlU3RhdGUoaCx2LEkpfWZvcndhcmQoKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmZvcndhcmQoKX1iYWNrKCl7dGhp''@;'; put 'put ''cy5fcGxhdGZvcm1Mb2NhdGlvbi5iYWNrKCl9Z2V0U3RhdGUoKXtyZXR1cm4gdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5nZXRTdGF0ZSgpfWhpc3RvcnlHbyhoPTApe3ZhciB2LHk7bnVsbD09PSh5PSh2PXRoaXMuX3BsYXRmb3JtTG9jYXRpb24pLmhpc3RvcnlHbyl8fHZvaWQgMD09PXl8fHku''@;'; put 'put ''Y2FsbCh2LGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShCVCksQ2koc1csOCkpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLFY2PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhp''@;'; put 'put ''cy5fc3ViamVjdD1uZXcgYXIsdGhpcy5fdXJsQ2hhbmdlTGlzdGVuZXJzPVtdLHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbj1udWxsLHRoaXMuX2xvY2F0aW9uU3RyYXRlZ3k9aDtjb25zdCB2PXRoaXMuX2xvY2F0aW9uU3RyYXRlZ3kuZ2V0QmFzZUhyZWYoKTt0aGlzLl9iYXNlSHJlZj1w''@;'; put 'put ''RihUQyh2KSksdGhpcy5fbG9jYXRpb25TdHJhdGVneS5vblBvcFN0YXRlKHk9Pnt0aGlzLl9zdWJqZWN0LmVtaXQoe3VybDp0aGlzLnBhdGgoITApLHBvcDohMCxzdGF0ZTp5LnN0YXRlLHR5cGU6eS50eXBlfSl9KX1uZ09uRGVzdHJveSgpe3ZhciBoO251bGw9PT0oaD10aGlzLl91cmxDaGFu''@;'; put 'put ''Z2VTdWJzY3JpcHRpb24pfHx2b2lkIDA9PT1ofHxoLnVuc3Vic2NyaWJlKCksdGhpcy5fdXJsQ2hhbmdlTGlzdGVuZXJzPVtdfXBhdGgoaD0hMSl7cmV0dXJuIHRoaXMubm9ybWFsaXplKHRoaXMuX2xvY2F0aW9uU3RyYXRlZ3kucGF0aChoKSl9Z2V0U3RhdGUoKXtyZXR1cm4gdGhpcy5fbG9j''@;'; put 'put ''YXRpb25TdHJhdGVneS5nZXRTdGF0ZSgpfWlzQ3VycmVudFBhdGhFcXVhbFRvKGgsdj0iIil7cmV0dXJuIHRoaXMucGF0aCgpPT10aGlzLm5vcm1hbGl6ZShoK25wKHYpKX1ub3JtYWxpemUoaCl7cmV0dXJuIGQuc3RyaXBUcmFpbGluZ1NsYXNoKGZ1bmN0aW9uIGZXKGQsZyl7cmV0dXJuIGQm''@;'; put 'put ''Jmcuc3RhcnRzV2l0aChkKT9nLnN1YnN0cmluZyhkLmxlbmd0aCk6Z30odGhpcy5fYmFzZUhyZWYsVEMoaCkpKX1wcmVwYXJlRXh0ZXJuYWxVcmwoaCl7cmV0dXJuIGgmJiIvIiE9PWhbMF0mJihoPSIvIitoKSx0aGlzLl9sb2NhdGlvblN0cmF0ZWd5LnByZXBhcmVFeHRlcm5hbFVybChoKX1n''@;'; put 'put ''byhoLHY9IiIseT1udWxsKXt0aGlzLl9sb2NhdGlvblN0cmF0ZWd5LnB1c2hTdGF0ZSh5LCIiLGgsdiksdGhpcy5fbm90aWZ5VXJsQ2hhbmdlTGlzdGVuZXJzKHRoaXMucHJlcGFyZUV4dGVybmFsVXJsKGgrbnAodikpLHkpfXJlcGxhY2VTdGF0ZShoLHY9IiIseT1udWxsKXt0aGlzLl9sb2Nh''@;'; put 'put ''dGlvblN0cmF0ZWd5LnJlcGxhY2VTdGF0ZSh5LCIiLGgsdiksdGhpcy5fbm90aWZ5VXJsQ2hhbmdlTGlzdGVuZXJzKHRoaXMucHJlcGFyZUV4dGVybmFsVXJsKGgrbnAodikpLHkpfWZvcndhcmQoKXt0aGlzLl9sb2NhdGlvblN0cmF0ZWd5LmZvcndhcmQoKX1iYWNrKCl7dGhpcy5fbG9jYXRp''@;'; put 'put ''b25TdHJhdGVneS5iYWNrKCl9aGlzdG9yeUdvKGg9MCl7dmFyIHYseTtudWxsPT09KHk9KHY9dGhpcy5fbG9jYXRpb25TdHJhdGVneSkuaGlzdG9yeUdvKXx8dm9pZCAwPT09eXx8eS5jYWxsKHYsaCl9b25VcmxDaGFuZ2UoaCl7cmV0dXJuIHRoaXMuX3VybENoYW5nZUxpc3RlbmVycy5wdXNo''@;'; put 'put ''KGgpLHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbnx8KHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbj10aGlzLnN1YnNjcmliZSh2PT57dGhpcy5fbm90aWZ5VXJsQ2hhbmdlTGlzdGVuZXJzKHYudXJsLHYuc3RhdGUpfSkpLCgpPT57dmFyIHY7Y29uc3QgeT10aGlzLl91cmxDaGFuZ2VM''@;'; put 'put ''aXN0ZW5lcnMuaW5kZXhPZihoKTt0aGlzLl91cmxDaGFuZ2VMaXN0ZW5lcnMuc3BsaWNlKHksMSksMD09PXRoaXMuX3VybENoYW5nZUxpc3RlbmVycy5sZW5ndGgmJihudWxsPT09KHY9dGhpcy5fdXJsQ2hhbmdlU3Vic2NyaXB0aW9uKXx8dm9pZCAwPT09dnx8di51bnN1YnNjcmliZSgpLHRo''@;'; put 'put ''aXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbj1udWxsKX19X25vdGlmeVVybENoYW5nZUxpc3RlbmVycyhoPSIiLHYpe3RoaXMuX3VybENoYW5nZUxpc3RlbmVycy5mb3JFYWNoKHk9PnkoaCx2KSl9c3Vic2NyaWJlKGgsdix5KXtyZXR1cm4gdGhpcy5fc3ViamVjdC5zdWJzY3JpYmUoe25leHQ6''@;'; put 'put ''aCxlcnJvcjp2LGNvbXBsZXRlOnl9KX19cmV0dXJuIGQubm9ybWFsaXplUXVlcnlQYXJhbXM9bnAsZC5qb2luV2l0aFNsYXNoPXJoLGQuc3RyaXBUcmFpbGluZ1NsYXNoPXBGLGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoQ2koTjYpKX0sZC5cdTAyNzVwcm92PUFp''@;'; put 'put ''KHt0b2tlbjpkLGZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gY1coKXtyZXR1cm4gbmV3IFY2KENpKE42KSl9KCl9LHByb3ZpZGVkSW46InJvb3QifSksZH0pKCk7ZnVuY3Rpb24gVEMoZCl7cmV0dXJuIGQucmVwbGFjZSgvXC9pbmRleC5odG1sJC8sIiIpfXZhciBOMj0oKCk9''@;'; put 'put ''PigoTjI9TjJ8fHt9KVtOMi5Gb3JtYXQ9MF09IkZvcm1hdCIsTjJbTjIuU3RhbmRhbG9uZT0xXT0iU3RhbmRhbG9uZSIsTjIpKSgpLENsPSgoKT0+KChDbD1DbHx8e30pW0NsLk5hcnJvdz0wXT0iTmFycm93IixDbFtDbC5BYmJyZXZpYXRlZD0xXT0iQWJicmV2aWF0ZWQiLENsW0NsLldpZGU9''@;'; put 'put ''Ml09IldpZGUiLENsW0NsLlNob3J0PTNdPSJTaG9ydCIsQ2wpKSgpLHAxPSgoKT0+KChwMT1wMXx8e30pW3AxLlNob3J0PTBdPSJTaG9ydCIscDFbcDEuTWVkaXVtPTFdPSJNZWRpdW0iLHAxW3AxLkxvbmc9Ml09IkxvbmciLHAxW3AxLkZ1bGw9M109IkZ1bGwiLHAxKSkoKTtmdW5jdGlvbiBy''@;'; put 'put ''cChkLGcsaCl7Y29uc3Qgdj1yYyhkKSxDPUczKFt2W01vLkRheXNGb3JtYXRdLHZbTW8uRGF5c1N0YW5kYWxvbmVdXSxnKTtyZXR1cm4gRzMoQyxoKX1mdW5jdGlvbiBQVChkLGcsaCl7Y29uc3Qgdj1yYyhkKSxDPUczKFt2W01vLk1vbnRoc0Zvcm1hdF0sdltNby5Nb250aHNTdGFuZGFsb25l''@;'; put 'put ''XV0sZyk7cmV0dXJuIEczKEMsaCl9ZnVuY3Rpb24gRzMoZCxnKXtmb3IobGV0IGg9ZztoPi0xO2gtLSlpZih2b2lkIDAhPT1kW2hdKXJldHVybiBkW2hdO3Rocm93IG5ldyBFcnJvcigiTG9jYWxlIGRhdGEgQVBJOiBsb2NhbGUgZGF0YSB1bmRlZmluZWQiKX1mdW5jdGlvbiBiVyhkLGcpe2c9''@;'; put 'put ''ZW5jb2RlVVJJQ29tcG9uZW50KGcpO2Zvcihjb25zdCBoIG9mIGQuc3BsaXQoIjsiKSl7Y29uc3Qgdj1oLmluZGV4T2YoIj0iKSxbeSxDXT0tMT09dj9baCwiIl06W2guc2xpY2UoMCx2KSxoLnNsaWNlKHYrMSldO2lmKHkudHJpbSgpPT09ZylyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KEMp''@;'; put 'put ''fXJldHVybiBudWxsfWxldCBsYz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMpe3RoaXMuX2l0ZXJhYmxlRGlmZmVycz1oLHRoaXMuX2tleVZhbHVlRGlmZmVycz12LHRoaXMuX25nRWw9eSx0aGlzLl9yZW5kZXJlcj1DLHRoaXMuX2l0ZXJhYmxlRGlmZmVyPW51bGwsdGhpcy5f''@;'; put 'put ''a2V5VmFsdWVEaWZmZXI9bnVsbCx0aGlzLl9pbml0aWFsQ2xhc3Nlcz1bXSx0aGlzLl9yYXdDbGFzcz1udWxsfXNldCBrbGFzcyhoKXt0aGlzLl9yZW1vdmVDbGFzc2VzKHRoaXMuX2luaXRpYWxDbGFzc2VzKSx0aGlzLl9pbml0aWFsQ2xhc3Nlcz0ic3RyaW5nIj09dHlwZW9mIGg/aC5zcGxp''@;'; put 'put ''dCgvXHMrLyk6W10sdGhpcy5fYXBwbHlDbGFzc2VzKHRoaXMuX2luaXRpYWxDbGFzc2VzKSx0aGlzLl9hcHBseUNsYXNzZXModGhpcy5fcmF3Q2xhc3MpfXNldCBuZ0NsYXNzKGgpe3RoaXMuX3JlbW92ZUNsYXNzZXModGhpcy5fcmF3Q2xhc3MpLHRoaXMuX2FwcGx5Q2xhc3Nlcyh0aGlzLl9p''@;'; put 'put ''bml0aWFsQ2xhc3NlcyksdGhpcy5faXRlcmFibGVEaWZmZXI9bnVsbCx0aGlzLl9rZXlWYWx1ZURpZmZlcj1udWxsLHRoaXMuX3Jhd0NsYXNzPSJzdHJpbmciPT10eXBlb2YgaD9oLnNwbGl0KC9ccysvKTpoLHRoaXMuX3Jhd0NsYXNzJiYoUGQodGhpcy5fcmF3Q2xhc3MpP3RoaXMuX2l0ZXJh''@;'; put 'put ''YmxlRGlmZmVyPXRoaXMuX2l0ZXJhYmxlRGlmZmVycy5maW5kKHRoaXMuX3Jhd0NsYXNzKS5jcmVhdGUoKTp0aGlzLl9rZXlWYWx1ZURpZmZlcj10aGlzLl9rZXlWYWx1ZURpZmZlcnMuZmluZCh0aGlzLl9yYXdDbGFzcykuY3JlYXRlKCkpfW5nRG9DaGVjaygpe2lmKHRoaXMuX2l0ZXJhYmxl''@;'; put 'put ''RGlmZmVyKXtjb25zdCBoPXRoaXMuX2l0ZXJhYmxlRGlmZmVyLmRpZmYodGhpcy5fcmF3Q2xhc3MpO2gmJnRoaXMuX2FwcGx5SXRlcmFibGVDaGFuZ2VzKGgpfWVsc2UgaWYodGhpcy5fa2V5VmFsdWVEaWZmZXIpe2NvbnN0IGg9dGhpcy5fa2V5VmFsdWVEaWZmZXIuZGlmZih0aGlzLl9yYXdD''@;'; put 'put ''bGFzcyk7aCYmdGhpcy5fYXBwbHlLZXlWYWx1ZUNoYW5nZXMoaCl9fV9hcHBseUtleVZhbHVlQ2hhbmdlcyhoKXtoLmZvckVhY2hBZGRlZEl0ZW0odj0+dGhpcy5fdG9nZ2xlQ2xhc3Modi5rZXksdi5jdXJyZW50VmFsdWUpKSxoLmZvckVhY2hDaGFuZ2VkSXRlbSh2PT50aGlzLl90b2dnbGVD''@;'; put 'put ''bGFzcyh2LmtleSx2LmN1cnJlbnRWYWx1ZSkpLGguZm9yRWFjaFJlbW92ZWRJdGVtKHY9Pnt2LnByZXZpb3VzVmFsdWUmJnRoaXMuX3RvZ2dsZUNsYXNzKHYua2V5LCExKX0pfV9hcHBseUl0ZXJhYmxlQ2hhbmdlcyhoKXtoLmZvckVhY2hBZGRlZEl0ZW0odj0+e2lmKCJzdHJpbmciIT10eXBl''@;'; put 'put ''b2Ygdi5pdGVtKXRocm93IG5ldyBFcnJvcihgTmdDbGFzcyBjYW4gb25seSB0b2dnbGUgQ1NTIGNsYXNzZXMgZXhwcmVzc2VkIGFzIHN0cmluZ3MsIGdvdCAke21uKHYuaXRlbSl9YCk7dGhpcy5fdG9nZ2xlQ2xhc3Modi5pdGVtLCEwKX0pLGguZm9yRWFjaFJlbW92ZWRJdGVtKHY9PnRoaXMu''@;'; put 'put ''X3RvZ2dsZUNsYXNzKHYuaXRlbSwhMSkpfV9hcHBseUNsYXNzZXMoaCl7aCYmKEFycmF5LmlzQXJyYXkoaCl8fGggaW5zdGFuY2VvZiBTZXQ/aC5mb3JFYWNoKHY9PnRoaXMuX3RvZ2dsZUNsYXNzKHYsITApKTpPYmplY3Qua2V5cyhoKS5mb3JFYWNoKHY9PnRoaXMuX3RvZ2dsZUNsYXNzKHYs''@;'; put 'put ''ISFoW3ZdKSkpfV9yZW1vdmVDbGFzc2VzKGgpe2gmJihBcnJheS5pc0FycmF5KGgpfHxoIGluc3RhbmNlb2YgU2V0P2guZm9yRWFjaCh2PT50aGlzLl90b2dnbGVDbGFzcyh2LCExKSk6T2JqZWN0LmtleXMoaCkuZm9yRWFjaCh2PT50aGlzLl90b2dnbGVDbGFzcyh2LCExKSkpfV90b2dnbGVD''@;'; put 'put ''bGFzcyhoLHYpeyhoPWgudHJpbSgpKSYmaC5zcGxpdCgvXHMrL2cpLmZvckVhY2goeT0+e3Y/dGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fbmdFbC5uYXRpdmVFbGVtZW50LHkpOnRoaXMuX3JlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuX25nRWwubmF0aXZlRWxlbWVudCx5KX0pfX1y''@;'; put 'put ''ZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChQQSksS3QoRUMpLEt0KGJvKSxLdChHYSkpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJuZ0NsYXNzIiwiIl1dLGlucHV0czp7a2xhc3M6WyJjbGFzcyIsImtsYXNzIl0sbmdD''@;'; put 'put ''bGFzczoibmdDbGFzcyJ9LHN0YW5kYWxvbmU6ITB9KSxkfSkoKTtjbGFzcyBlaWV7Y29uc3RydWN0b3IoZyxoLHYseSl7dGhpcy4kaW1wbGljaXQ9Zyx0aGlzLm5nRm9yT2Y9aCx0aGlzLmluZGV4PXYsdGhpcy5jb3VudD15fWdldCBmaXJzdCgpe3JldHVybiAwPT09dGhpcy5pbmRleH1nZXQg''@;'; put 'put ''bGFzdCgpe3JldHVybiB0aGlzLmluZGV4PT09dGhpcy5jb3VudC0xfWdldCBldmVuKCl7cmV0dXJuIHRoaXMuaW5kZXglMj09MH1nZXQgb2RkKCl7cmV0dXJuIXRoaXMuZXZlbn19bGV0IHhzPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMuX3ZpZXdDb250YWluZXI9aCx0''@;'; put 'put ''aGlzLl90ZW1wbGF0ZT12LHRoaXMuX2RpZmZlcnM9eSx0aGlzLl9uZ0Zvck9mPW51bGwsdGhpcy5fbmdGb3JPZkRpcnR5PSEwLHRoaXMuX2RpZmZlcj1udWxsfXNldCBuZ0Zvck9mKGgpe3RoaXMuX25nRm9yT2Y9aCx0aGlzLl9uZ0Zvck9mRGlydHk9ITB9c2V0IG5nRm9yVHJhY2tCeShoKXt0''@;'; put 'put ''aGlzLl90cmFja0J5Rm49aH1nZXQgbmdGb3JUcmFja0J5KCl7cmV0dXJuIHRoaXMuX3RyYWNrQnlGbn1zZXQgbmdGb3JUZW1wbGF0ZShoKXtoJiYodGhpcy5fdGVtcGxhdGU9aCl9bmdEb0NoZWNrKCl7aWYodGhpcy5fbmdGb3JPZkRpcnR5KXt0aGlzLl9uZ0Zvck9mRGlydHk9ITE7Y29uc3Qg''@;'; put 'put ''aD10aGlzLl9uZ0Zvck9mOyF0aGlzLl9kaWZmZXImJmgmJih0aGlzLl9kaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKGgpLmNyZWF0ZSh0aGlzLm5nRm9yVHJhY2tCeSkpfWlmKHRoaXMuX2RpZmZlcil7Y29uc3QgaD10aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9uZ0Zvck9mKTtoJiZ0aGlzLl9h''@;'; put 'put ''cHBseUNoYW5nZXMoaCl9fV9hcHBseUNoYW5nZXMoaCl7Y29uc3Qgdj10aGlzLl92aWV3Q29udGFpbmVyO2guZm9yRWFjaE9wZXJhdGlvbigoeSxDLEkpPT57aWYobnVsbD09eS5wcmV2aW91c0luZGV4KXYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RlbXBsYXRlLG5ldyBlaWUoeS5pdGVt''@;'; put 'put ''LHRoaXMuX25nRm9yT2YsLTEsLTEpLG51bGw9PT1JP3ZvaWQgMDpJKTtlbHNlIGlmKG51bGw9PUkpdi5yZW1vdmUobnVsbD09PUM/dm9pZCAwOkMpO2Vsc2UgaWYobnVsbCE9PUMpe2NvbnN0IFo9di5nZXQoQyk7di5tb3ZlKFosSSksa1coWix5KX19KTtmb3IobGV0IHk9MCxDPXYubGVuZ3Ro''@;'; put 'put ''O3k8Qzt5Kyspe2NvbnN0IFo9di5nZXQoeSkuY29udGV4dDtaLmluZGV4PXksWi5jb3VudD1DLFoubmdGb3JPZj10aGlzLl9uZ0Zvck9mfWguZm9yRWFjaElkZW50aXR5Q2hhbmdlKHk9PntrVyh2LmdldCh5LmN1cnJlbnRJbmRleCkseSl9KX1zdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFy''@;'; put 'put ''ZChoLHYpe3JldHVybiEwfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChVaSksS3QocXIpLEt0KFBBKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsIm5nRm9yIiwiIiwibmdGb3JPZiIsIiJdXSxpbnB1dHM6e25nRm9y''@;'; put 'put ''T2Y6Im5nRm9yT2YiLG5nRm9yVHJhY2tCeToibmdGb3JUcmFja0J5IixuZ0ZvclRlbXBsYXRlOiJuZ0ZvclRlbXBsYXRlIn0sc3RhbmRhbG9uZTohMH0pLGR9KSgpO2Z1bmN0aW9uIGtXKGQsZyl7ZC5jb250ZXh0LiRpbXBsaWNpdD1nLml0ZW19bGV0IE5vPSgoKT0+e2NsYXNzIGR7Y29uc3Ry''@;'; put 'put ''dWN0b3IoaCx2KXt0aGlzLl92aWV3Q29udGFpbmVyPWgsdGhpcy5fY29udGV4dD1uZXcgbmllLHRoaXMuX3RoZW5UZW1wbGF0ZVJlZj1udWxsLHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZj1udWxsLHRoaXMuX3RoZW5WaWV3UmVmPW51bGwsdGhpcy5fZWxzZVZpZXdSZWY9bnVsbCx0aGlzLl90aGVu''@;'; put 'put ''VGVtcGxhdGVSZWY9dn1zZXQgbmdJZihoKXt0aGlzLl9jb250ZXh0LiRpbXBsaWNpdD10aGlzLl9jb250ZXh0Lm5nSWY9aCx0aGlzLl91cGRhdGVWaWV3KCl9c2V0IG5nSWZUaGVuKGgpe1NXKCJuZ0lmVGhlbiIsaCksdGhpcy5fdGhlblRlbXBsYXRlUmVmPWgsdGhpcy5fdGhlblZpZXdSZWY9''@;'; put 'put ''bnVsbCx0aGlzLl91cGRhdGVWaWV3KCl9c2V0IG5nSWZFbHNlKGgpe1NXKCJuZ0lmRWxzZSIsaCksdGhpcy5fZWxzZVRlbXBsYXRlUmVmPWgsdGhpcy5fZWxzZVZpZXdSZWY9bnVsbCx0aGlzLl91cGRhdGVWaWV3KCl9X3VwZGF0ZVZpZXcoKXt0aGlzLl9jb250ZXh0LiRpbXBsaWNpdD90aGlz''@;'; put 'put ''Ll90aGVuVmlld1JlZnx8KHRoaXMuX3ZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl9lbHNlVmlld1JlZj1udWxsLHRoaXMuX3RoZW5UZW1wbGF0ZVJlZiYmKHRoaXMuX3RoZW5WaWV3UmVmPXRoaXMuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RoZW5UZW1wbGF0''@;'; put 'put ''ZVJlZix0aGlzLl9jb250ZXh0KSkpOnRoaXMuX2Vsc2VWaWV3UmVmfHwodGhpcy5fdmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX3RoZW5WaWV3UmVmPW51bGwsdGhpcy5fZWxzZVRlbXBsYXRlUmVmJiYodGhpcy5fZWxzZVZpZXdSZWY9dGhpcy5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJl''@;'; put 'put ''ZGRlZFZpZXcodGhpcy5fZWxzZVRlbXBsYXRlUmVmLHRoaXMuX2NvbnRleHQpKSl9c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQoaCx2KXtyZXR1cm4hMH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoVWkpLEt0KHFyKSl9LGQuXHUwMjc1''@;'; put 'put ''ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsIm5nSWYiLCIiXV0saW5wdXRzOntuZ0lmOiJuZ0lmIixuZ0lmVGhlbjoibmdJZlRoZW4iLG5nSWZFbHNlOiJuZ0lmRWxzZSJ9LHN0YW5kYWxvbmU6ITB9KSxkfSkoKTtjbGFzcyBuaWV7Y29uc3RydWN0b3IoKXt0aGlzLiRpbXBsaWNpdD1u''@;'; put 'put ''dWxsLHRoaXMubmdJZj1udWxsfX1mdW5jdGlvbiBTVyhkLGcpe2lmKGcmJiFnLmNyZWF0ZUVtYmVkZGVkVmlldyl0aHJvdyBuZXcgRXJyb3IoYCR7ZH0gbXVzdCBiZSBhIFRlbXBsYXRlUmVmLCBidXQgcmVjZWl2ZWQgJyR7bW4oZyl9Jy5gKX1jbGFzcyBNRntjb25zdHJ1Y3RvcihnLGgpe3Ro''@;'; put 'put ''aXMuX3ZpZXdDb250YWluZXJSZWY9Zyx0aGlzLl90ZW1wbGF0ZVJlZj1oLHRoaXMuX2NyZWF0ZWQ9ITF9Y3JlYXRlKCl7dGhpcy5fY3JlYXRlZD0hMCx0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90ZW1wbGF0ZVJlZil9ZGVzdHJveSgpe3RoaXMuX2Ny''@;'; put 'put ''ZWF0ZWQ9ITEsdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpfWVuZm9yY2VTdGF0ZShnKXtnJiYhdGhpcy5fY3JlYXRlZD90aGlzLmNyZWF0ZSgpOiFnJiZ0aGlzLl9jcmVhdGVkJiZ0aGlzLmRlc3Ryb3koKX19bGV0IEpkPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9k''@;'; put 'put ''ZWZhdWx0VXNlZD0hMSx0aGlzLl9jYXNlQ291bnQ9MCx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9MCx0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPSExfXNldCBuZ1N3aXRjaChoKXt0aGlzLl9uZ1N3aXRjaD1oLDA9PT10aGlzLl9jYXNlQ291bnQmJnRoaXMuX3VwZGF0ZURlZmF1bHRDYXNlcygh''@;'; put 'put ''MCl9X2FkZENhc2UoKXtyZXR1cm4gdGhpcy5fY2FzZUNvdW50Kyt9X2FkZERlZmF1bHQoaCl7dGhpcy5fZGVmYXVsdFZpZXdzfHwodGhpcy5fZGVmYXVsdFZpZXdzPVtdKSx0aGlzLl9kZWZhdWx0Vmlld3MucHVzaChoKX1fbWF0Y2hDYXNlKGgpe2NvbnN0IHY9aD09dGhpcy5fbmdTd2l0Y2g7''@;'; put 'put ''cmV0dXJuIHRoaXMuX2xhc3RDYXNlc01hdGNoZWQ9dGhpcy5fbGFzdENhc2VzTWF0Y2hlZHx8dix0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXgrKyx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9PT10aGlzLl9jYXNlQ291bnQmJih0aGlzLl91cGRhdGVEZWZhdWx0Q2FzZXMoIXRoaXMuX2xhc3RD''@;'; put 'put ''YXNlc01hdGNoZWQpLHRoaXMuX2xhc3RDYXNlQ2hlY2tJbmRleD0wLHRoaXMuX2xhc3RDYXNlc01hdGNoZWQ9ITEpLHZ9X3VwZGF0ZURlZmF1bHRDYXNlcyhoKXtpZih0aGlzLl9kZWZhdWx0Vmlld3MmJmghPT10aGlzLl9kZWZhdWx0VXNlZCl7dGhpcy5fZGVmYXVsdFVzZWQ9aDtmb3IobGV0''@;'; put 'put ''IHY9MDt2PHRoaXMuX2RlZmF1bHRWaWV3cy5sZW5ndGg7disrKXRoaXMuX2RlZmF1bHRWaWV3c1t2XS5lbmZvcmNlU3RhdGUoaCl9fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVkaXI9V2koe3R5cGU6ZCxzZWxlY3RvcnM6W1siIiwi''@;'; put 'put ''bmdTd2l0Y2giLCIiXV0saW5wdXRzOntuZ1N3aXRjaDoibmdTd2l0Y2gifSxzdGFuZGFsb25lOiEwfSksZH0pKCksaXA9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5uZ1N3aXRjaD15LHkuX2FkZENhc2UoKSx0aGlzLl92aWV3PW5ldyBNRihoLHYpfW5nRG9DaGVjaygp''@;'; put 'put ''e3RoaXMuX3ZpZXcuZW5mb3JjZVN0YXRlKHRoaXMubmdTd2l0Y2guX21hdGNoQ2FzZSh0aGlzLm5nU3dpdGNoQ2FzZSkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChVaSksS3QocXIpLEt0KEpkLDkpKX0sZC5cdTAyNzVkaXI9V2koe3R5cGU6''@;'; put 'put ''ZCxzZWxlY3RvcnM6W1siIiwibmdTd2l0Y2hDYXNlIiwiIl1dLGlucHV0czp7bmdTd2l0Y2hDYXNlOiJuZ1N3aXRjaENhc2UifSxzdGFuZGFsb25lOiEwfSksZH0pKCksRVc9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5fbmdFbD1oLHRoaXMuX2RpZmZlcnM9dix0aGlz''@;'; put 'put ''Ll9yZW5kZXJlcj15LHRoaXMuX25nU3R5bGU9bnVsbCx0aGlzLl9kaWZmZXI9bnVsbH1zZXQgbmdTdHlsZShoKXt0aGlzLl9uZ1N0eWxlPWgsIXRoaXMuX2RpZmZlciYmaCYmKHRoaXMuX2RpZmZlcj10aGlzLl9kaWZmZXJzLmZpbmQoaCkuY3JlYXRlKCkpfW5nRG9DaGVjaygpe2lmKHRoaXMu''@;'; put 'put ''X2RpZmZlcil7Y29uc3QgaD10aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9uZ1N0eWxlKTtoJiZ0aGlzLl9hcHBseUNoYW5nZXMoaCl9fV9zZXRTdHlsZShoLHYpe2NvbnN0W3ksQ109aC5zcGxpdCgiLiIpLEk9LTE9PT15LmluZGV4T2YoIi0iKT92b2lkIDA6ZnUuRGFzaENhc2U7bnVsbCE9dj90''@;'; put 'put ''aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQseSxDP2Ake3Z9JHtDfWA6dixJKTp0aGlzLl9yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQseSxJKX1fYXBwbHlDaGFuZ2VzKGgpe2guZm9yRWFjaFJlbW92ZWRJdGVtKHY9''@;'; put 'put ''PnRoaXMuX3NldFN0eWxlKHYua2V5LG51bGwpKSxoLmZvckVhY2hBZGRlZEl0ZW0odj0+dGhpcy5fc2V0U3R5bGUodi5rZXksdi5jdXJyZW50VmFsdWUpKSxoLmZvckVhY2hDaGFuZ2VkSXRlbSh2PT50aGlzLl9zZXRTdHlsZSh2LmtleSx2LmN1cnJlbnRWYWx1ZSkpfX1yZXR1cm4gZC5cdTAy''@;'; put 'put ''NzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChibyksS3QoRUMpLEt0KEdhKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsIm5nU3R5bGUiLCIiXV0saW5wdXRzOntuZ1N0eWxlOiJuZ1N0eWxlIn0sc3RhbmRhbG9uZTohMH0pLGR9KSgpLFhkPSgo''@;'; put 'put ''KT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5fdmlld0NvbnRhaW5lclJlZj1oLHRoaXMuX3ZpZXdSZWY9bnVsbCx0aGlzLm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0PW51bGwsdGhpcy5uZ1RlbXBsYXRlT3V0bGV0PW51bGwsdGhpcy5uZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3I9bnVs''@;'; put 'put ''bH1uZ09uQ2hhbmdlcyhoKXtpZihoLm5nVGVtcGxhdGVPdXRsZXR8fGgubmdUZW1wbGF0ZU91dGxldEluamVjdG9yKXtjb25zdCB2PXRoaXMuX3ZpZXdDb250YWluZXJSZWY7aWYodGhpcy5fdmlld1JlZiYmdi5yZW1vdmUodi5pbmRleE9mKHRoaXMuX3ZpZXdSZWYpKSx0aGlzLm5nVGVtcGxh''@;'; put 'put ''dGVPdXRsZXQpe2NvbnN0e25nVGVtcGxhdGVPdXRsZXQ6eSxuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dDpDLG5nVGVtcGxhdGVPdXRsZXRJbmplY3RvcjpJfT10aGlzO3RoaXMuX3ZpZXdSZWY9di5jcmVhdGVFbWJlZGRlZFZpZXcoeSxDLEk/e2luamVjdG9yOkl9OnZvaWQgMCl9ZWxzZSB0aGlz''@;'; put 'put ''Ll92aWV3UmVmPW51bGx9ZWxzZSB0aGlzLl92aWV3UmVmJiZoLm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0JiZ0aGlzLm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0JiYodGhpcy5fdmlld1JlZi5jb250ZXh0PXRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQpfX1yZXR1cm4gZC5cdTAyNzVmYWM9''@;'; put 'put ''ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChVaSkpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJuZ1RlbXBsYXRlT3V0bGV0IiwiIl1dLGlucHV0czp7bmdUZW1wbGF0ZU91dGxldENvbnRleHQ6Im5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixuZ1RlbXBs''@;'; put 'put ''YXRlT3V0bGV0OiJuZ1RlbXBsYXRlT3V0bGV0IixuZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3I6Im5nVGVtcGxhdGVPdXRsZXRJbmplY3RvciJ9LHN0YW5kYWxvbmU6ITAsZmVhdHVyZXM6W0QyXX0pLGR9KSgpO2NsYXNzIHpUe2NyZWF0ZVN1YnNjcmlwdGlvbihnLGgpe3JldHVybiBnLnN1YnNj''@;'; put 'put ''cmliZSh7bmV4dDpoLGVycm9yOnY9Pnt0aHJvdyB2fX0pfWRpc3Bvc2UoZyl7Zy51bnN1YnNjcmliZSgpfX1jbGFzcyBOQ3tjcmVhdGVTdWJzY3JpcHRpb24oZyxoKXtyZXR1cm4gZy50aGVuKGgsdj0+e3Rocm93IHZ9KX1kaXNwb3NlKGcpe319Y29uc3QgVkM9bmV3IE5DLEI1PW5ldyB6VDts''@;'; put 'put ''ZXQgV2g9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLl9sYXRlc3RWYWx1ZT1udWxsLHRoaXMuX3N1YnNjcmlwdGlvbj1udWxsLHRoaXMuX29iaj1udWxsLHRoaXMuX3N0cmF0ZWd5PW51bGwsdGhpcy5fcmVmPWh9bmdPbkRlc3Ryb3koKXt0aGlzLl9zdWJzY3JpcHRpb24mJnRo''@;'; put 'put ''aXMuX2Rpc3Bvc2UoKSx0aGlzLl9yZWY9bnVsbH10cmFuc2Zvcm0oaCl7cmV0dXJuIHRoaXMuX29iaj9oIT09dGhpcy5fb2JqPyh0aGlzLl9kaXNwb3NlKCksdGhpcy50cmFuc2Zvcm0oaCkpOnRoaXMuX2xhdGVzdFZhbHVlOihoJiZ0aGlzLl9zdWJzY3JpYmUoaCksdGhpcy5fbGF0ZXN0VmFs''@;'; put 'put ''dWUpfV9zdWJzY3JpYmUoaCl7dGhpcy5fb2JqPWgsdGhpcy5fc3RyYXRlZ3k9dGhpcy5fc2VsZWN0U3RyYXRlZ3koaCksdGhpcy5fc3Vic2NyaXB0aW9uPXRoaXMuX3N0cmF0ZWd5LmNyZWF0ZVN1YnNjcmlwdGlvbihoLHY9PnRoaXMuX3VwZGF0ZUxhdGVzdFZhbHVlKGgsdikpfV9zZWxlY3RT''@;'; put 'put ''dHJhdGVneShoKXtpZihWbShoKSlyZXR1cm4gVkM7aWYoU3goaCkpcmV0dXJuIEI1O3Rocm93IGZ1bmN0aW9uIEtkKGQsZyl7cmV0dXJuIG5ldyBlbigyMTAwLCExKX0oKX1fZGlzcG9zZSgpe3RoaXMuX3N0cmF0ZWd5LmRpc3Bvc2UodGhpcy5fc3Vic2NyaXB0aW9uKSx0aGlzLl9sYXRlc3RW''@;'; put 'put ''YWx1ZT1udWxsLHRoaXMuX3N1YnNjcmlwdGlvbj1udWxsLHRoaXMuX29iaj1udWxsfV91cGRhdGVMYXRlc3RWYWx1ZShoLHYpe2g9PT10aGlzLl9vYmomJih0aGlzLl9sYXRlc3RWYWx1ZT12LHRoaXMuX3JlZi5tYXJrRm9yQ2hlY2soKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbiho''@;'; put 'put ''KXtyZXR1cm4gbmV3KGh8fGQpKEt0KGQxLDE2KSl9LGQuXHUwMjc1cGlwZT1Vcyh7bmFtZToiYXN5bmMiLHR5cGU6ZCxwdXJlOiExLHN0YW5kYWxvbmU6ITB9KSxkfSkoKSxJVz0oKCk9PntjbGFzcyBke3RyYW5zZm9ybShoKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoaCxudWxsLDIpfX1yZXR1''@;'; put 'put ''cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwaXBlPVVzKHtuYW1lOiJqc29uIix0eXBlOmQscHVyZTohMSxzdGFuZGFsb25lOiEwfSksZH0pKCksWVQ9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmRpZmZlcnM9aCx0aGlzLmtl''@;'; put 'put ''eVZhbHVlcz1bXSx0aGlzLmNvbXBhcmVGbj1JRn10cmFuc2Zvcm0oaCx2PUlGKXtpZighaHx8IShoIGluc3RhbmNlb2YgTWFwKSYmIm9iamVjdCIhPXR5cGVvZiBoKXJldHVybiBudWxsO3RoaXMuZGlmZmVyfHwodGhpcy5kaWZmZXI9dGhpcy5kaWZmZXJzLmZpbmQoaCkuY3JlYXRlKCkpO2Nv''@;'; put 'put ''bnN0IHk9dGhpcy5kaWZmZXIuZGlmZihoKSxDPXYhPT10aGlzLmNvbXBhcmVGbjtyZXR1cm4geSYmKHRoaXMua2V5VmFsdWVzPVtdLHkuZm9yRWFjaEl0ZW0oST0+e3RoaXMua2V5VmFsdWVzLnB1c2goZnVuY3Rpb24gYWllKGQsZyl7cmV0dXJue2tleTpkLHZhbHVlOmd9fShJLmtleSxJLmN1''@;'; put 'put ''cnJlbnRWYWx1ZSkpfSkpLCh5fHxDKSYmKHRoaXMua2V5VmFsdWVzLnNvcnQodiksdGhpcy5jb21wYXJlRm49diksdGhpcy5rZXlWYWx1ZXN9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KEVDLDE2KSl9LGQuXHUwMjc1cGlwZT1Vcyh7bmFtZToi''@;'; put 'put ''a2V5dmFsdWUiLHR5cGU6ZCxwdXJlOiExLHN0YW5kYWxvbmU6ITB9KSxkfSkoKTtmdW5jdGlvbiBJRihkLGcpe2NvbnN0IGg9ZC5rZXksdj1nLmtleTtpZihoPT09dilyZXR1cm4gMDtpZih2b2lkIDA9PT1oKXJldHVybiAxO2lmKHZvaWQgMD09PXYpcmV0dXJuLTE7aWYobnVsbD09PWgpcmV0''@;'; put 'put ''dXJuIDE7aWYobnVsbD09PXYpcmV0dXJuLTE7aWYoInN0cmluZyI9PXR5cGVvZiBoJiYic3RyaW5nIj09dHlwZW9mIHYpcmV0dXJuIGg8dj8tMToxO2lmKCJudW1iZXIiPT10eXBlb2YgaCYmIm51bWJlciI9PXR5cGVvZiB2KXJldHVybiBoLXY7aWYoImJvb2xlYW4iPT10eXBlb2YgaCYmImJv''@;'; put 'put ''b2xlYW4iPT10eXBlb2YgdilyZXR1cm4gaDx2Py0xOjE7Y29uc3QgeT1TdHJpbmcoaCksQz1TdHJpbmcodik7cmV0dXJuIHk9PUM/MDp5PEM/LTE6MX1sZXQgYmE9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1''@;'; put 'put ''bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7fSksZH0pKCk7Y29uc3QgTFc9ImJyb3dzZXIiO2Z1bmN0aW9uIFNsKGQpe3JldHVybiBkPT09TFd9bGV0IGNpZT0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLHByb3ZpZGVkSW46InJvb3QiLGZh''@;'; put 'put ''Y3Rvcnk6KCk9Pm5ldyBCVyhDaShncyksd2luZG93KX0pLGR9KSgpO2NsYXNzIEJXe2NvbnN0cnVjdG9yKGcsaCl7dGhpcy5kb2N1bWVudD1nLHRoaXMud2luZG93PWgsdGhpcy5vZmZzZXQ9KCk9PlswLDBdfXNldE9mZnNldChnKXt0aGlzLm9mZnNldD1BcnJheS5pc0FycmF5KGcpPygpPT5n''@;'; put 'put ''Omd9Z2V0U2Nyb2xsUG9zaXRpb24oKXtyZXR1cm4gdGhpcy5zdXBwb3J0c1Njcm9sbGluZygpP1t0aGlzLndpbmRvdy5wYWdlWE9mZnNldCx0aGlzLndpbmRvdy5wYWdlWU9mZnNldF06WzAsMF19c2Nyb2xsVG9Qb3NpdGlvbihnKXt0aGlzLnN1cHBvcnRzU2Nyb2xsaW5nKCkmJnRoaXMud2lu''@;'; put 'put ''ZG93LnNjcm9sbFRvKGdbMF0sZ1sxXSl9c2Nyb2xsVG9BbmNob3IoZyl7aWYoIXRoaXMuc3VwcG9ydHNTY3JvbGxpbmcoKSlyZXR1cm47Y29uc3QgaD1mdW5jdGlvbiBmaWUoZCxnKXtjb25zdCBoPWQuZ2V0RWxlbWVudEJ5SWQoZyl8fGQuZ2V0RWxlbWVudHNCeU5hbWUoZylbMF07aWYoaCly''@;'; put 'put ''ZXR1cm4gaDtpZigiZnVuY3Rpb24iPT10eXBlb2YgZC5jcmVhdGVUcmVlV2Fsa2VyJiZkLmJvZHkmJihkLmJvZHkuY3JlYXRlU2hhZG93Um9vdHx8ZC5ib2R5LmF0dGFjaFNoYWRvdykpe2NvbnN0IHY9ZC5jcmVhdGVUcmVlV2Fsa2VyKGQuYm9keSxOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCk7''@;'; put 'put ''bGV0IHk9di5jdXJyZW50Tm9kZTtmb3IoO3k7KXtjb25zdCBDPXkuc2hhZG93Um9vdDtpZihDKXtjb25zdCBJPUMuZ2V0RWxlbWVudEJ5SWQoZyl8fEMucXVlcnlTZWxlY3RvcihgW25hbWU9IiR7Z30iXWApO2lmKEkpcmV0dXJuIEl9eT12Lm5leHROb2RlKCl9fXJldHVybiBudWxsfSh0aGlz''@;'; put 'put ''LmRvY3VtZW50LGcpO2gmJih0aGlzLnNjcm9sbFRvRWxlbWVudChoKSxoLmZvY3VzKCkpfXNldEhpc3RvcnlTY3JvbGxSZXN0b3JhdGlvbihnKXtpZih0aGlzLnN1cHBvcnRTY3JvbGxSZXN0b3JhdGlvbigpKXtjb25zdCBoPXRoaXMud2luZG93Lmhpc3Rvcnk7aCYmaC5zY3JvbGxSZXN0b3Jh''@;'; put 'put ''dGlvbiYmKGguc2Nyb2xsUmVzdG9yYXRpb249Zyl9fXNjcm9sbFRvRWxlbWVudChnKXtjb25zdCBoPWcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdj1oLmxlZnQrdGhpcy53aW5kb3cucGFnZVhPZmZzZXQseT1oLnRvcCt0aGlzLndpbmRvdy5wYWdlWU9mZnNldCxDPXRoaXMub2Zmc2V0KCk7''@;'; put 'put ''dGhpcy53aW5kb3cuc2Nyb2xsVG8odi1DWzBdLHktQ1sxXSl9c3VwcG9ydFNjcm9sbFJlc3RvcmF0aW9uKCl7dHJ5e2lmKCF0aGlzLnN1cHBvcnRzU2Nyb2xsaW5nKCkpcmV0dXJuITE7Y29uc3QgZz1QVyh0aGlzLndpbmRvdy5oaXN0b3J5KXx8UFcoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRo''@;'; put 'put ''aXMud2luZG93Lmhpc3RvcnkpKTtyZXR1cm4hKCFnfHwhZy53cml0YWJsZSYmIWcuc2V0KX1jYXRjaChnKXtyZXR1cm4hMX19c3VwcG9ydHNTY3JvbGxpbmcoKXt0cnl7cmV0dXJuISF0aGlzLndpbmRvdyYmISF0aGlzLndpbmRvdy5zY3JvbGxUbyYmInBhZ2VYT2Zmc2V0ImluIHRoaXMud2lu''@;'; put 'put ''ZG93fWNhdGNoKGcpe3JldHVybiExfX19ZnVuY3Rpb24gUFcoZCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCwic2Nyb2xsUmVzdG9yYXRpb24iKX1jbGFzcyBGV3t9Y2xhc3MgTEYgZXh0ZW5kcyBjbGFzcyBoaWUgZXh0ZW5kcyBjbGFzcyBPcmV7fXtjb25zdHJ1''@;'; put 'put ''Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5zdXBwb3J0c0RPTUV2ZW50cz0hMH19e3N0YXRpYyBtYWtlQ3VycmVudCgpeyFmdW5jdGlvbiBpVyhkKXtvN3x8KG83PWQpfShuZXcgTEYpfW9uQW5kQ2FuY2VsKGcsaCx2KXtyZXR1cm4gZy5hZGRFdmVudExpc3RlbmVyKGgsdiwhMSks''@;'; put 'put ''KCk9PntnLnJlbW92ZUV2ZW50TGlzdGVuZXIoaCx2LCExKX19ZGlzcGF0Y2hFdmVudChnLGgpe2cuZGlzcGF0Y2hFdmVudChoKX1yZW1vdmUoZyl7Zy5wYXJlbnROb2RlJiZnLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZyl9Y3JlYXRlRWxlbWVudChnLGgpe3JldHVybihoPWh8fHRoaXMuZ2V0''@;'; put 'put ''RGVmYXVsdERvY3VtZW50KCkpLmNyZWF0ZUVsZW1lbnQoZyl9Y3JlYXRlSHRtbERvY3VtZW50KCl7cmV0dXJuIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiZmFrZVRpdGxlIil9Z2V0RGVmYXVsdERvY3VtZW50KCl7cmV0dXJuIGRvY3VtZW50fWlzRWxlbWVu''@;'; put 'put ''dE5vZGUoZyl7cmV0dXJuIGcubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERX1pc1NoYWRvd1Jvb3QoZyl7cmV0dXJuIGcgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50fWdldEdsb2JhbEV2ZW50VGFyZ2V0KGcsaCl7cmV0dXJuIndpbmRvdyI9PT1oP3dpbmRvdzoiZG9jdW1lbnQiPT09''@;'; put 'put ''aD9nOiJib2R5Ij09PWg/Zy5ib2R5Om51bGx9Z2V0QmFzZUhyZWYoZyl7Y29uc3QgaD1mdW5jdGlvbiBkaWUoKXtyZXR1cm4gWkM9WkN8fGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImJhc2UiKSxaQz9aQy5nZXRBdHRyaWJ1dGUoImhyZWYiKTpudWxsfSgpO3JldHVybiBudWxsPT1oP251bGw6''@;'; put 'put ''ZnVuY3Rpb24gcGllKGQpe1VUPVVUfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIiksVVQuc2V0QXR0cmlidXRlKCJocmVmIixkKTtjb25zdCBnPVVULnBhdGhuYW1lO3JldHVybiIvIj09PWcuY2hhckF0KDApP2c6YC8ke2d9YH0oaCl9cmVzZXRCYXNlRWxlbWVudCgpe1pDPW51bGx9Z2V0''@;'; put 'put ''VXNlckFnZW50KCl7cmV0dXJuIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50fWdldENvb2tpZShnKXtyZXR1cm4gYlcoZG9jdW1lbnQuY29va2llLGcpfX1sZXQgVVQsWkM9bnVsbDtjb25zdCBIVz1uZXcgemUoIlRSQU5TSVRJT05fSUQiKSxtaWU9W3twcm92aWRlOnlDLHVzZUZhY3Rvcnk6''@;'; put 'put ''ZnVuY3Rpb24gZ2llKGQsZyxoKXtyZXR1cm4oKT0+e2guZ2V0KHdUKS5kb25lUHJvbWlzZS50aGVuKCgpPT57Y29uc3Qgdj1VZCgpLHk9Zy5xdWVyeVNlbGVjdG9yQWxsKGBzdHlsZVtuZy10cmFuc2l0aW9uPSIke2R9Il1gKTtmb3IobGV0IEM9MDtDPHkubGVuZ3RoO0MrKyl2LnJlbW92ZSh5''@;'; put 'put ''W0NdKX0pfX0sZGVwczpbSFcsZ3MsU3NdLG11bHRpOiEwfV07bGV0IEFpZT0oKCk9PntjbGFzcyBke2J1aWxkKCl7cmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46''@;'; put 'put ''ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y29uc3QgUVQ9bmV3IHplKCJFdmVudE1hbmFnZXJQbHVnaW5zIik7bGV0IHU3PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2KXt0aGlzLl96b25lPXYsdGhpcy5fZXZlbnROYW1lVG9QbHVnaW49bmV3IE1hcCxoLmZvckVhY2goeT0+''@;'; put 'put ''eS5tYW5hZ2VyPXRoaXMpLHRoaXMuX3BsdWdpbnM9aC5zbGljZSgpLnJldmVyc2UoKX1hZGRFdmVudExpc3RlbmVyKGgsdix5KXtyZXR1cm4gdGhpcy5fZmluZFBsdWdpbkZvcih2KS5hZGRFdmVudExpc3RlbmVyKGgsdix5KX1hZGRHbG9iYWxFdmVudExpc3RlbmVyKGgsdix5KXtyZXR1cm4g''@;'; put 'put ''dGhpcy5fZmluZFBsdWdpbkZvcih2KS5hZGRHbG9iYWxFdmVudExpc3RlbmVyKGgsdix5KX1nZXRab25lKCl7cmV0dXJuIHRoaXMuX3pvbmV9X2ZpbmRQbHVnaW5Gb3IoaCl7Y29uc3Qgdj10aGlzLl9ldmVudE5hbWVUb1BsdWdpbi5nZXQoaCk7aWYodilyZXR1cm4gdjtjb25zdCB5PXRoaXMu''@;'; put 'put ''X3BsdWdpbnM7Zm9yKGxldCBDPTA7Qzx5Lmxlbmd0aDtDKyspe2NvbnN0IEk9eVtDXTtpZihJLnN1cHBvcnRzKGgpKXJldHVybiB0aGlzLl9ldmVudE5hbWVUb1BsdWdpbi5zZXQoaCxJKSxJfXRocm93IG5ldyBFcnJvcihgTm8gZXZlbnQgbWFuYWdlciBwbHVnaW4gZm91bmQgZm9yIGV2ZW50''@;'; put 'put ''ICR7aH1gKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoQ2koUVQpLENpKF9sKSl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y2xhc3MgT0Z7Y29uc3RydWN0b3IoZyl7dGhpcy5fZG9jPWd9YWRk''@;'; put 'put ''R2xvYmFsRXZlbnRMaXN0ZW5lcihnLGgsdil7Y29uc3QgeT1VZCgpLmdldEdsb2JhbEV2ZW50VGFyZ2V0KHRoaXMuX2RvYyxnKTtpZigheSl0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGV2ZW50IHRhcmdldCAke3l9IGZvciBldmVudCAke2h9YCk7cmV0dXJuIHRoaXMuYWRkRXZlbnRM''@;'; put 'put ''aXN0ZW5lcih5LGgsdil9fWxldCBOVz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fc3R5bGVzU2V0PW5ldyBTZXR9YWRkU3R5bGVzKGgpe2NvbnN0IHY9bmV3IFNldDtoLmZvckVhY2goeT0+e3RoaXMuX3N0eWxlc1NldC5oYXMoeSl8fCh0aGlzLl9zdHlsZXNTZXQuYWRkKHkp''@;'; put 'put ''LHYuYWRkKHkpKX0pLHRoaXMub25TdHlsZXNBZGRlZCh2KX1vblN0eWxlc0FkZGVkKGgpe31nZXRBbGxTdHlsZXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9zdHlsZXNTZXQpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92''@;'; put 'put ''PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSx6Qz0oKCk9PntjbGFzcyBkIGV4dGVuZHMgTld7Y29uc3RydWN0b3IoaCl7c3VwZXIoKSx0aGlzLl9kb2M9aCx0aGlzLl9ob3N0Tm9kZXM9bmV3IE1hcCx0aGlzLl9ob3N0Tm9kZXMuc2V0KGguaGVhZCxbXSl9X2FkZFN0''@;'; put 'put ''eWxlc1RvSG9zdChoLHYseSl7aC5mb3JFYWNoKEM9Pntjb25zdCBJPXRoaXMuX2RvYy5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO0kudGV4dENvbnRlbnQ9Qyx5LnB1c2godi5hcHBlbmRDaGlsZChJKSl9KX1hZGRIb3N0KGgpe2NvbnN0IHY9W107dGhpcy5fYWRkU3R5bGVzVG9Ib3N0KHRoaXMu''@;'; put 'put ''X3N0eWxlc1NldCxoLHYpLHRoaXMuX2hvc3ROb2Rlcy5zZXQoaCx2KX1yZW1vdmVIb3N0KGgpe2NvbnN0IHY9dGhpcy5faG9zdE5vZGVzLmdldChoKTt2JiZ2LmZvckVhY2goVlcpLHRoaXMuX2hvc3ROb2Rlcy5kZWxldGUoaCl9b25TdHlsZXNBZGRlZChoKXt0aGlzLl9ob3N0Tm9kZXMuZm9y''@;'; put 'put ''RWFjaCgodix5KT0+e3RoaXMuX2FkZFN0eWxlc1RvSG9zdChoLHksdil9KX1uZ09uRGVzdHJveSgpe3RoaXMuX2hvc3ROb2Rlcy5mb3JFYWNoKGg9PmguZm9yRWFjaChWVykpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShncykpfSxkLlx1MDI3''@;'; put 'put ''NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpO2Z1bmN0aW9uIFZXKGQpe1VkKCkucmVtb3ZlKGQpfWNvbnN0IFJGPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIseGxpbms6Imh0''@;'; put 'put ''dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLG1hdGg6Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aE1MLyJ9LEJGPS8lQ09NUCUvZztmdW5j''@;'; put 'put ''dGlvbiBYVChkLGcsaCl7Zm9yKGxldCB2PTA7djxnLmxlbmd0aDt2Kyspe2xldCB5PWdbdl07QXJyYXkuaXNBcnJheSh5KT9YVChkLHksaCk6KHk9eS5yZXBsYWNlKEJGLGQpLGgucHVzaCh5KSl9cmV0dXJuIGh9ZnVuY3Rpb24gWlcoZCl7cmV0dXJuIGc9PntpZigiX19uZ1Vud3JhcF9fIj09''@;'; put 'put ''PWcpcmV0dXJuIGQ7ITE9PT1kKGcpJiYoZy5wcmV2ZW50RGVmYXVsdCgpLGcucmV0dXJuVmFsdWU9ITEpfX1sZXQgS1Q9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5ldmVudE1hbmFnZXI9aCx0aGlzLnNoYXJlZFN0eWxlc0hvc3Q9dix0aGlzLmFwcElkPXksdGhpcy5y''@;'; put 'put ''ZW5kZXJlckJ5Q29tcElkPW5ldyBNYXAsdGhpcy5kZWZhdWx0UmVuZGVyZXI9bmV3IFBGKGgpfWNyZWF0ZVJlbmRlcmVyKGgsdil7aWYoIWh8fCF2KXJldHVybiB0aGlzLmRlZmF1bHRSZW5kZXJlcjtzd2l0Y2godi5lbmNhcHN1bGF0aW9uKXtjYXNlIHgyLkVtdWxhdGVkOntsZXQgeT10aGlz''@;'; put 'put ''LnJlbmRlcmVyQnlDb21wSWQuZ2V0KHYuaWQpO3JldHVybiB5fHwoeT1uZXcga2llKHRoaXMuZXZlbnRNYW5hZ2VyLHRoaXMuc2hhcmVkU3R5bGVzSG9zdCx2LHRoaXMuYXBwSWQpLHRoaXMucmVuZGVyZXJCeUNvbXBJZC5zZXQodi5pZCx5KSkseS5hcHBseVRvSG9zdChoKSx5fWNhc2UgMTpj''@;'; put 'put ''YXNlIHgyLlNoYWRvd0RvbTpyZXR1cm4gbmV3ICRUKHRoaXMuZXZlbnRNYW5hZ2VyLHRoaXMuc2hhcmVkU3R5bGVzSG9zdCxoLHYpO2RlZmF1bHQ6aWYoIXRoaXMucmVuZGVyZXJCeUNvbXBJZC5oYXModi5pZCkpe2NvbnN0IHk9WFQodi5pZCx2LnN0eWxlcyxbXSk7dGhpcy5zaGFyZWRTdHls''@;'; put 'put ''ZXNIb3N0LmFkZFN0eWxlcyh5KSx0aGlzLnJlbmRlcmVyQnlDb21wSWQuc2V0KHYuaWQsdGhpcy5kZWZhdWx0UmVuZGVyZXIpfXJldHVybiB0aGlzLmRlZmF1bHRSZW5kZXJlcn19YmVnaW4oKXt9ZW5kKCl7fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxk''@;'; put 'put ''KShDaSh1NyksQ2koekMpLENpKHdDKSl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y2xhc3MgUEZ7Y29uc3RydWN0b3IoZyl7dGhpcy5ldmVudE1hbmFnZXI9Zyx0aGlzLmRhdGE9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLmRlc3Ryb3lO''@;'; put 'put ''b2RlPW51bGx9ZGVzdHJveSgpe31jcmVhdGVFbGVtZW50KGcsaCl7cmV0dXJuIGg/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFJGW2hdfHxoLGcpOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZyl9Y3JlYXRlQ29tbWVudChnKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudChnKX1jcmVh''@;'; put 'put ''dGVUZXh0KGcpe3JldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShnKX1hcHBlbmRDaGlsZChnLGgpeyhHVyhnKT9nLmNvbnRlbnQ6ZykuYXBwZW5kQ2hpbGQoaCl9aW5zZXJ0QmVmb3JlKGcsaCx2KXtnJiYoR1coZyk/Zy5jb250ZW50OmcpLmluc2VydEJlZm9yZShoLHYpfXJlbW92ZUNo''@;'; put 'put ''aWxkKGcsaCl7ZyYmZy5yZW1vdmVDaGlsZChoKX1zZWxlY3RSb290RWxlbWVudChnLGgpe2xldCB2PSJzdHJpbmciPT10eXBlb2YgZz9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGcpOmc7aWYoIXYpdGhyb3cgbmV3IEVycm9yKGBUaGUgc2VsZWN0b3IgIiR7Z30iIGRpZCBub3QgbWF0Y2ggYW55''@;'; put 'put ''IGVsZW1lbnRzYCk7cmV0dXJuIGh8fCh2LnRleHRDb250ZW50PSIiKSx2fXBhcmVudE5vZGUoZyl7cmV0dXJuIGcucGFyZW50Tm9kZX1uZXh0U2libGluZyhnKXtyZXR1cm4gZy5uZXh0U2libGluZ31zZXRBdHRyaWJ1dGUoZyxoLHYseSl7aWYoeSl7aD15KyI6IitoO2NvbnN0IEM9UkZbeV07''@;'; put 'put ''Qz9nLnNldEF0dHJpYnV0ZU5TKEMsaCx2KTpnLnNldEF0dHJpYnV0ZShoLHYpfWVsc2UgZy5zZXRBdHRyaWJ1dGUoaCx2KX1yZW1vdmVBdHRyaWJ1dGUoZyxoLHYpe2lmKHYpe2NvbnN0IHk9UkZbdl07eT9nLnJlbW92ZUF0dHJpYnV0ZU5TKHksaCk6Zy5yZW1vdmVBdHRyaWJ1dGUoYCR7dn06''@;'; put 'put ''JHtofWApfWVsc2UgZy5yZW1vdmVBdHRyaWJ1dGUoaCl9YWRkQ2xhc3MoZyxoKXtnLmNsYXNzTGlzdC5hZGQoaCl9cmVtb3ZlQ2xhc3MoZyxoKXtnLmNsYXNzTGlzdC5yZW1vdmUoaCl9c2V0U3R5bGUoZyxoLHYseSl7eSYoZnUuRGFzaENhc2V8ZnUuSW1wb3J0YW50KT9nLnN0eWxlLnNldFBy''@;'; put 'put ''b3BlcnR5KGgsdix5JmZ1LkltcG9ydGFudD8iaW1wb3J0YW50IjoiIik6Zy5zdHlsZVtoXT12fXJlbW92ZVN0eWxlKGcsaCx2KXt2JmZ1LkRhc2hDYXNlP2cuc3R5bGUucmVtb3ZlUHJvcGVydHkoaCk6Zy5zdHlsZVtoXT0iIn1zZXRQcm9wZXJ0eShnLGgsdil7Z1toXT12fXNldFZhbHVlKGcs''@;'; put 'put ''aCl7Zy5ub2RlVmFsdWU9aH1saXN0ZW4oZyxoLHYpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZz90aGlzLmV2ZW50TWFuYWdlci5hZGRHbG9iYWxFdmVudExpc3RlbmVyKGcsaCxaVyh2KSk6dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihnLGgsWlcodikpfX1mdW5jdGlvbiBH''@;'; put 'put ''VyhkKXtyZXR1cm4iVEVNUExBVEUiPT09ZC50YWdOYW1lJiZ2b2lkIDAhPT1kLmNvbnRlbnR9Y2xhc3Mga2llIGV4dGVuZHMgUEZ7Y29uc3RydWN0b3IoZyxoLHYseSl7c3VwZXIoZyksdGhpcy5jb21wb25lbnQ9djtjb25zdCBDPVhUKHkrIi0iK3YuaWQsdi5zdHlsZXMsW10pO2guYWRkU3R5''@;'; put 'put ''bGVzKEMpLHRoaXMuY29udGVudEF0dHI9ZnVuY3Rpb24gYmllKGQpe3JldHVybiJfbmdjb250ZW50LSVDT01QJSIucmVwbGFjZShCRixkKX0oeSsiLSIrdi5pZCksdGhpcy5ob3N0QXR0cj1mdW5jdGlvbiBfaWUoZCl7cmV0dXJuIl9uZ2hvc3QtJUNPTVAlIi5yZXBsYWNlKEJGLGQpfSh5KyIt''@;'; put 'put ''Iit2LmlkKX1hcHBseVRvSG9zdChnKXtzdXBlci5zZXRBdHRyaWJ1dGUoZyx0aGlzLmhvc3RBdHRyLCIiKX1jcmVhdGVFbGVtZW50KGcsaCl7Y29uc3Qgdj1zdXBlci5jcmVhdGVFbGVtZW50KGcsaCk7cmV0dXJuIHN1cGVyLnNldEF0dHJpYnV0ZSh2LHRoaXMuY29udGVudEF0dHIsIiIpLHZ9''@;'; put 'put ''fWNsYXNzICRUIGV4dGVuZHMgUEZ7Y29uc3RydWN0b3IoZyxoLHYseSl7c3VwZXIoZyksdGhpcy5zaGFyZWRTdHlsZXNIb3N0PWgsdGhpcy5ob3N0RWw9dix0aGlzLnNoYWRvd1Jvb3Q9di5hdHRhY2hTaGFkb3coe21vZGU6Im9wZW4ifSksdGhpcy5zaGFyZWRTdHlsZXNIb3N0LmFkZEhvc3Qo''@;'; put 'put ''dGhpcy5zaGFkb3dSb290KTtjb25zdCBDPVhUKHkuaWQseS5zdHlsZXMsW10pO2ZvcihsZXQgST0wO0k8Qy5sZW5ndGg7SSsrKXtjb25zdCBaPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7Wi50ZXh0Q29udGVudD1DW0ldLHRoaXMuc2hhZG93Um9vdC5hcHBlbmRDaGlsZChaKX19''@;'; put 'put ''bm9kZU9yU2hhZG93Um9vdChnKXtyZXR1cm4gZz09PXRoaXMuaG9zdEVsP3RoaXMuc2hhZG93Um9vdDpnfWRlc3Ryb3koKXt0aGlzLnNoYXJlZFN0eWxlc0hvc3QucmVtb3ZlSG9zdCh0aGlzLnNoYWRvd1Jvb3QpfWFwcGVuZENoaWxkKGcsaCl7cmV0dXJuIHN1cGVyLmFwcGVuZENoaWxkKHRo''@;'; put 'put ''aXMubm9kZU9yU2hhZG93Um9vdChnKSxoKX1pbnNlcnRCZWZvcmUoZyxoLHYpe3JldHVybiBzdXBlci5pbnNlcnRCZWZvcmUodGhpcy5ub2RlT3JTaGFkb3dSb290KGcpLGgsdil9cmVtb3ZlQ2hpbGQoZyxoKXtyZXR1cm4gc3VwZXIucmVtb3ZlQ2hpbGQodGhpcy5ub2RlT3JTaGFkb3dSb290''@;'; put 'put ''KGcpLGgpfXBhcmVudE5vZGUoZyl7cmV0dXJuIHRoaXMubm9kZU9yU2hhZG93Um9vdChzdXBlci5wYXJlbnROb2RlKHRoaXMubm9kZU9yU2hhZG93Um9vdChnKSkpfX1sZXQgV1c9KCgpPT57Y2xhc3MgZCBleHRlbmRzIE9Ge2NvbnN0cnVjdG9yKGgpe3N1cGVyKGgpfXN1cHBvcnRzKGgpe3Jl''@;'; put 'put ''dHVybiEwfWFkZEV2ZW50TGlzdGVuZXIoaCx2LHkpe3JldHVybiBoLmFkZEV2ZW50TGlzdGVuZXIodix5LCExKSwoKT0+dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGgsdix5KX1yZW1vdmVFdmVudExpc3RlbmVyKGgsdix5KXtyZXR1cm4gaC5yZW1vdmVFdmVudExpc3RlbmVyKHYseSl9fXJl''@;'; put 'put ''dHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKGdzKSl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y29uc3QgWVc9WyJhbHQiLCJjb250cm9sIiwibWV0YSIsInNoaWZ0Il0sTWllPXsiXGIiOiJCYWNr''@;'; put 'put ''c3BhY2UiLCJcdCI6IlRhYiIsIlx4N2YiOiJEZWxldGUiLCJceDFiIjoiRXNjYXBlIixEZWw6IkRlbGV0ZSIsRXNjOiJFc2NhcGUiLExlZnQ6IkFycm93TGVmdCIsUmlnaHQ6IkFycm93UmlnaHQiLFVwOiJBcnJvd1VwIixEb3duOiJBcnJvd0Rvd24iLE1lbnU6IkNvbnRleHRNZW51IixTY3Jv''@;'; put 'put ''bGw6IlNjcm9sbExvY2siLFdpbjoiT1MifSxVVz17QToiMSIsQjoiMiIsQzoiMyIsRDoiNCIsRToiNSIsRjoiNiIsRzoiNyIsSDoiOCIsSToiOSIsSjoiKiIsSzoiKyIsTToiLSIsTjoiLiIsTzoiLyIsImAiOiIwIiwiXHg5MCI6Ik51bUxvY2sifSxFaWU9e2FsdDpkPT5kLmFsdEtleSxjb250''@;'; put 'put ''cm9sOmQ9PmQuY3RybEtleSxtZXRhOmQ9PmQubWV0YUtleSxzaGlmdDpkPT5kLnNoaWZ0S2V5fTtsZXQgeGllPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBPRntjb25zdHJ1Y3RvcihoKXtzdXBlcihoKX1zdXBwb3J0cyhoKXtyZXR1cm4gbnVsbCE9ZC5wYXJzZUV2ZW50TmFtZShoKX1hZGRFdmVu''@;'; put 'put ''dExpc3RlbmVyKGgsdix5KXtjb25zdCBDPWQucGFyc2VFdmVudE5hbWUodiksST1kLmV2ZW50Q2FsbGJhY2soQy5mdWxsS2V5LHksdGhpcy5tYW5hZ2VyLmdldFpvbmUoKSk7cmV0dXJuIHRoaXMubWFuYWdlci5nZXRab25lKCkucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PlVkKCkub25BbmRDYW5j''@;'; put 'put ''ZWwoaCxDLmRvbUV2ZW50TmFtZSxJKSl9c3RhdGljIHBhcnNlRXZlbnROYW1lKGgpe2NvbnN0IHY9aC50b0xvd2VyQ2FzZSgpLnNwbGl0KCIuIikseT12LnNoaWZ0KCk7aWYoMD09PXYubGVuZ3RofHwia2V5ZG93biIhPT15JiYia2V5dXAiIT09eSlyZXR1cm4gbnVsbDtjb25zdCBDPWQuX25v''@;'; put 'put ''cm1hbGl6ZUtleSh2LnBvcCgpKTtsZXQgST0iIjtpZihZVy5mb3JFYWNoKHVlPT57Y29uc3QgX2U9di5pbmRleE9mKHVlKTtfZT4tMSYmKHYuc3BsaWNlKF9lLDEpLEkrPXVlKyIuIil9KSxJKz1DLDAhPXYubGVuZ3RofHwwPT09Qy5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgWj17fTtyZXR1''@;'; put 'put ''cm4gWi5kb21FdmVudE5hbWU9eSxaLmZ1bGxLZXk9SSxafXN0YXRpYyBnZXRFdmVudEZ1bGxLZXkoaCl7bGV0IHY9IiIseT1mdW5jdGlvbiBUaWUoZCl7bGV0IGc9ZC5rZXk7aWYobnVsbD09Zyl7aWYoZz1kLmtleUlkZW50aWZpZXIsbnVsbD09ZylyZXR1cm4iVW5pZGVudGlmaWVkIjtnLnN0''@;'; put 'put ''YXJ0c1dpdGgoIlUrIikmJihnPVN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoZy5zdWJzdHJpbmcoMiksMTYpKSwzPT09ZC5sb2NhdGlvbiYmVVcuaGFzT3duUHJvcGVydHkoZykmJihnPVVXW2ddKSl9cmV0dXJuIE1pZVtnXXx8Z30oaCk7cmV0dXJuIHk9eS50b0xvd2VyQ2FzZSgpLCIg''@;'; put 'put ''Ij09PXk/eT0ic3BhY2UiOiIuIj09PXkmJih5PSJkb3QiKSxZVy5mb3JFYWNoKEM9PntDIT15JiYoMCxFaWVbQ10pKGgpJiYodis9QysiLiIpfSksdis9eSx2fXN0YXRpYyBldmVudENhbGxiYWNrKGgsdix5KXtyZXR1cm4gQz0+e2QuZ2V0RXZlbnRGdWxsS2V5KEMpPT09aCYmeS5ydW5HdWFy''@;'; put 'put ''ZGVkKCgpPT52KEMpKX19c3RhdGljIF9ub3JtYWxpemVLZXkoaCl7cmV0dXJuImVzYyI9PT1oPyJlc2NhcGUiOmh9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKGdzKSl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1''@;'; put 'put ''ZmFjfSksZH0pKCk7Y29uc3QgUVc9W3twcm92aWRlOkwyLHVzZVZhbHVlOkxXfSx7cHJvdmlkZTpKUCx1c2VWYWx1ZTpmdW5jdGlvbiBJaWUoKXtMRi5tYWtlQ3VycmVudCgpfSxtdWx0aTohMH0se3Byb3ZpZGU6Z3MsdXNlRmFjdG9yeTpmdW5jdGlvbiBMaWUoKXtyZXR1cm4gZnVuY3Rpb24g''@;'; put 'put ''RFIoZCl7bWI9ZH0oZG9jdW1lbnQpLGRvY3VtZW50fSxkZXBzOltdfV0sT2llPWlGKG5XLCJicm93c2VyIixRVyksSlc9bmV3IHplKCIiKSxYVz1be3Byb3ZpZGU6emgsdXNlQ2xhc3M6Y2xhc3Mgdmlle2FkZFRvV2luZG93KGcpe1BsLmdldEFuZ3VsYXJUZXN0YWJpbGl0eT0odix5PSEwKT0+''@;'; put 'put ''e2NvbnN0IEM9Zy5maW5kVGVzdGFiaWxpdHlJblRyZWUodix5KTtpZihudWxsPT1DKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgdGVzdGFiaWxpdHkgZm9yIGVsZW1lbnQuIik7cmV0dXJuIEN9LFBsLmdldEFsbEFuZ3VsYXJUZXN0YWJpbGl0aWVzPSgpPT5nLmdldEFsbFRlc3Rh''@;'; put 'put ''YmlsaXRpZXMoKSxQbC5nZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzPSgpPT5nLmdldEFsbFJvb3RFbGVtZW50cygpLFBsLmZyYW1ld29ya1N0YWJpbGl6ZXJzfHwoUGwuZnJhbWV3b3JrU3RhYmlsaXplcnM9W10pLFBsLmZyYW1ld29ya1N0YWJpbGl6ZXJzLnB1c2godj0+e2NvbnN0IHk9UGwu''@;'; put 'put ''Z2V0QWxsQW5ndWxhclRlc3RhYmlsaXRpZXMoKTtsZXQgQz15Lmxlbmd0aCxJPSExO2NvbnN0IFo9ZnVuY3Rpb24odWUpe0k9SXx8dWUsQy0tLDA9PUMmJnYoSSl9O3kuZm9yRWFjaChmdW5jdGlvbih1ZSl7dWUud2hlblN0YWJsZShaKX0pfSl9ZmluZFRlc3RhYmlsaXR5SW5UcmVlKGcsaCx2''@;'; put 'put ''KXtpZihudWxsPT1oKXJldHVybiBudWxsO2NvbnN0IHk9Zy5nZXRUZXN0YWJpbGl0eShoKTtyZXR1cm4gbnVsbCE9eT95OnY/VWQoKS5pc1NoYWRvd1Jvb3QoaCk/dGhpcy5maW5kVGVzdGFiaWxpdHlJblRyZWUoZyxoLmhvc3QsITApOnRoaXMuZmluZFRlc3RhYmlsaXR5SW5UcmVlKGcsaC5w''@;'; put 'put ''YXJlbnRFbGVtZW50LCEwKTpudWxsfX0sZGVwczpbXX0se3Byb3ZpZGU6TVQsdXNlQ2xhc3M6RVQsZGVwczpbX2wsdEYsemhdfSx7cHJvdmlkZTpFVCx1c2VDbGFzczpFVCxkZXBzOltfbCx0Rix6aF19XSxLVz1be3Byb3ZpZGU6dm0sdXNlVmFsdWU6InJvb3QifSx7cHJvdmlkZTp2Nix1c2VG''@;'; put 'put ''YWN0b3J5OmZ1bmN0aW9uIERpZSgpe3JldHVybiBuZXcgdjZ9LGRlcHM6W119LHtwcm92aWRlOlFULHVzZUNsYXNzOldXLG11bHRpOiEwLGRlcHM6W2dzLF9sLEwyXX0se3Byb3ZpZGU6UVQsdXNlQ2xhc3M6eGllLG11bHRpOiEwLGRlcHM6W2dzXX0se3Byb3ZpZGU6S1QsdXNlQ2xhc3M6S1Qs''@;'; put 'put ''ZGVwczpbdTcsekMsd0NdfSx7cHJvdmlkZTpNZCx1c2VFeGlzdGluZzpLVH0se3Byb3ZpZGU6TlcsdXNlRXhpc3Rpbmc6ekN9LHtwcm92aWRlOnpDLHVzZUNsYXNzOnpDLGRlcHM6W2dzXX0se3Byb3ZpZGU6dTcsdXNlQ2xhc3M6dTcsZGVwczpbUVQsX2xdfSx7cHJvdmlkZTpGVyx1c2VDbGFz''@;'; put 'put ''czpBaWUsZGVwczpbXX0sW11dO2xldCAkVz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe31zdGF0aWMgd2l0aFNlcnZlclRyYW5zaXRpb24oaCl7cmV0dXJue25nTW9kdWxlOmQscHJvdmlkZXJzOlt7cHJvdmlkZTp3Qyx1c2VWYWx1ZTpoLmFwcElkfSx7cHJvdmlkZTpIVyx1c2VFeGlz''@;'; put 'put ''dGluZzp3Q30sbWllXX19fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKEpXLDEyKSl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7cHJvdmlkZXJzOlsuLi5LVywuLi5YV10saW1wb3J0czpbYmEsRXJlXX0pLGR9KSgp''@;'; put 'put ''LEdBPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5fZG9jPWh9Z2V0VGl0bGUoKXtyZXR1cm4gdGhpcy5fZG9jLnRpdGxlfXNldFRpdGxlKGgpe3RoaXMuX2RvYy50aXRsZT1ofHwiIn19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoQ2ko''@;'; put 'put ''Z3MpKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZnVuY3Rpb24oaCl7bGV0IHY9bnVsbDtyZXR1cm4gdj1oP25ldyBoOmZ1bmN0aW9uIGFwKCl7cmV0dXJuIG5ldyBHQShDaShncykpfSgpLHZ9LHByb3ZpZGVkSW46InJvb3QifSksZH0pKCk7InVuZGVmaW5lZCIhPXR5cGVv''@;'; put 'put ''ZiB3aW5kb3cmJndpbmRvdztsZXQgYzc9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmZ1bmN0aW9uKGgpe2xldCB2PW51bGw7cmV0dXJuIHY9aD9uZXcoaHx8ZCk6''@;'; put 'put ''Q2koclkpLHZ9LHByb3ZpZGVkSW46InJvb3QifSksZH0pKCksclk9KCgpPT57Y2xhc3MgZCBleHRlbmRzIGM3e2NvbnN0cnVjdG9yKGgpe3N1cGVyKCksdGhpcy5fZG9jPWh9c2FuaXRpemUoaCx2KXtpZihudWxsPT12KXJldHVybiBudWxsO3N3aXRjaChoKXtjYXNlIGEyLk5PTkU6cmV0dXJu''@;'; put 'put ''IHY7Y2FzZSBhMi5IVE1MOnJldHVybiAkdSh2LCJIVE1MIik/ZDIodik6eDkodGhpcy5fZG9jLFN0cmluZyh2KSkudG9TdHJpbmcoKTtjYXNlIGEyLlNUWUxFOnJldHVybiAkdSh2LCJTdHlsZSIpP2QyKHYpOnY7Y2FzZSBhMi5TQ1JJUFQ6aWYoJHUodiwiU2NyaXB0IikpcmV0dXJuIGQyKHYp''@;'; put 'put ''O3Rocm93IG5ldyBFcnJvcigidW5zYWZlIHZhbHVlIHVzZWQgaW4gYSBzY3JpcHQgY29udGV4dCIpO2Nhc2UgYTIuVVJMOnJldHVybiAkdSh2LCJVUkwiKT9kMih2KTp2ZihTdHJpbmcodikpO2Nhc2UgYTIuUkVTT1VSQ0VfVVJMOmlmKCR1KHYsIlJlc291cmNlVVJMIikpcmV0dXJuIGQyKHYp''@;'; put 'put ''O3Rocm93IG5ldyBFcnJvcigidW5zYWZlIHZhbHVlIHVzZWQgaW4gYSByZXNvdXJjZSBVUkwgY29udGV4dCAoc2VlIGh0dHBzOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpIik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgU2VjdXJpdHlDb250ZXh0ICR7aH0gKHNlZSBodHRw''@;'; put 'put ''czovL2cuY28vbmcvc2VjdXJpdHkjeHNzKWApfX1ieXBhc3NTZWN1cml0eVRydXN0SHRtbChoKXtyZXR1cm4gZnVuY3Rpb24geTMoZCl7cmV0dXJuIG5ldyBobShkKX0oaCl9YnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKGgpe3JldHVybiBmdW5jdGlvbiBRZihkKXtyZXR1cm4gbmV3IG1hKGQp''@;'; put 'put ''fShoKX1ieXBhc3NTZWN1cml0eVRydXN0U2NyaXB0KGgpe3JldHVybiBmdW5jdGlvbiBXbyhkKXtyZXR1cm4gbmV3IHU2KGQpfShoKX1ieXBhc3NTZWN1cml0eVRydXN0VXJsKGgpe3JldHVybiBmdW5jdGlvbiBkbShkKXtyZXR1cm4gbmV3IGhsKGQpfShoKX1ieXBhc3NTZWN1cml0eVRydXN0''@;'; put 'put ''UmVzb3VyY2VVcmwoaCl7cmV0dXJuIGZ1bmN0aW9uIHRFKGQpe3JldHVybiBuZXcgVWYoZCl9KGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShncykpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpmdW5jdGlvbihoKXtsZXQg''@;'; put 'put ''dj1udWxsO3JldHVybiB2PWg/bmV3IGg6ZnVuY3Rpb24gamllKGQpe3JldHVybiBuZXcgclkoZC5nZXQoZ3MpKX0oQ2koU3MpKSx2fSxwcm92aWRlZEluOiJyb290In0pLGR9KSgpO0woNDI0NCksTCg3NzY1NyksTCg4ODgxMyksTCg1MzEwKSxMKDUxNzcxKSxMKDYyMzE0KSxMKDE2MzQzKSxM''@;'; put 'put ''KDY4MTQ4KSxMKDc2NzcpLEwoODI2OTEpLEwoMjkxMzIpLEwoMTc4NzgpLEwoNTIyOTgpLEwoNDM0OTkpLEwoNjc3OTUpLEwoODg1ODMpLEwoNTQyNjEpO3ZhciBaaWU9TCg5MzE3Mik7d2luZG93Lmdsb2JhbD13aW5kb3csd2luZG93Lmdsb2JhbC5CdWZmZXI9d2luZG93Lmdsb2JhbC5CdWZm''@;'; put 'put ''ZXJ8fFppZS5CdWZmZXIsd2luZG93LnByb2Nlc3M9e3ZlcnNpb246IiJ9O0woNTY3NzEpLEwoOTM4NzcpO2NvbnN0IG5pPXtyb290UGFyYW06IiIsZWRpdG9yOntzdGFydHVwU2V0OiExLHRyZWVOb2RlTGlicmFyaWVzOltdLGxpYnNBbmRUYWJsZXM6W10sbGlicmFyaWVzOltdLGxpYnJhcnk6''@;'; put 'put ''IiIsdGFibGU6IiIsZmlsdGVyOntjb2xzOltdLHZhbHM6W10sZ3JvdXBMb2dpYzoiIix3aGVyZUNsYXVzZToiIixsaWJkczoiIixjbGF1c2VzOltdLHF1ZXJ5OltdfX0sdmlld2VyOntzdGFydHVwU2V0OiExLHRhYmxlc1NldDohMSxsaWJyYXJpZXM6W10sdGFibGVzOm51bGwsbGlicmFyeToi''@;'; put 'put ''Iix0YWJsZToiIixsaWJpbmZvOltdLGxpYnJhcmllc1NlYXJjaDoiIixmaWx0ZXI6e2NvbHM6W10sdmFsczpbXSxncm91cExvZ2ljOiIiLHdoZXJlQ2xhdXNlOiIiLGxpYmRzOiIiLGNsYXVzZXM6W10scXVlcnk6W119LGN1cnJlbnRTZWxlY3Rpb246IiJ9LGxpbmVhZ2U6e2xpYnJhcnlMaXN0''@;'; put 'put ''OltdLHRhYmxlc0xpc3Q6W10sY29sdW1uc0xpc3Q6W10sbGlicmFyaWVzU2VhcmNoOiIiLGxpYjoiIix0YWJsZToiIixjb2x1bW46IiIsY3VycmVudExpbmVhZ2VQYXRoTGliVGFibGU6IiIsY3VycmVudExpbmVhZ2VQYXRoQ29sdW1uOiIifSxtZXRhZGF0YTp7bWV0YURhdGFMaXN0OnZvaWQg''@;'; put 'put ''MCxtZXRhRGF0YVNlYXJjaDoiIixtZXRhT2JqZWN0TGlzdDpbXSxtZXRhT2JqZWN0U2VhcmNoOiIiLG1ldGFSZXBvc2l0b3JpZXM6dm9pZCAwLHNlbGVjdGVkUmVwb3NpdG9yeToiIn0sdXNlcm5hdjp7dXNlckxpc3Q6dm9pZCAwLHVzZXJTZWFyY2g6IiIsZ3JvdXBMaXN0OnZvaWQgMCxncm91''@;'; put 'put ''cFNlYXJjaDoiIixyb2xlTGlzdDp2b2lkIDAscm9sZVNlYXJjaDoiIn0sb3BlcmF0b3JzOntudW1PcGVyYXRvcnM6WyI9IiwiPCIsIj4iLCI8PSIsIj49IiwiQkVUV0VFTiIsIklOIiwiTk9UIElOIiwiTkUiXSxjaGFyT3BlcmF0b3JzOlsiPSIsIjwiLCI+IiwiPD0iLCI+PSIsIkNPTlRBSU5T''@;'; put 'put ''IiwiSU4iLCJOT1QgSU4iLCJORSJdfX07dmFyIFRsPUwoMTU0MzkpLG5JPUwubihUbCk7ZnVuY3Rpb24gVjIoZCxnLGgsdil7dmFyIEkseT1hcmd1bWVudHMubGVuZ3RoLEM9eTwzP2c6bnVsbD09PXY/dj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGcsaCk6djtpZigib2JqZWN0''@;'; put 'put ''Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKUM9UmVmbGVjdC5kZWNvcmF0ZShkLGcsaCx2KTtlbHNlIGZvcih2YXIgWj1kLmxlbmd0aC0xO1o+PTA7Wi0tKShJPWRbWl0pJiYoQz0oeTwzP0koQyk6eT4zP0koZyxoLEMpOkkoZyxoKSl8fEMp''@;'; put 'put ''O3JldHVybiB5PjMmJkMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShnLGgsQyksQ31mdW5jdGlvbiBubyhkLGcsaCx2KXtyZXR1cm4gbmV3KGh8fChoPVByb21pc2UpKShmdW5jdGlvbihDLEkpe2Z1bmN0aW9uIFooQmUpe3RyeXtfZSh2Lm5leHQoQmUpKX1jYXRjaChOZSl7SShOZSl9fWZ1bmN0''@;'; put 'put ''aW9uIHVlKEJlKXt0cnl7X2Uodi50aHJvdyhCZSkpfWNhdGNoKE5lKXtJKE5lKX19ZnVuY3Rpb24gX2UoQmUpe0JlLmRvbmU/QyhCZS52YWx1ZSk6ZnVuY3Rpb24geShDKXtyZXR1cm4gQyBpbnN0YW5jZW9mIGg/QzpuZXcgaChmdW5jdGlvbihJKXtJKEMpfSl9KEJlLnZhbHVlKS50aGVuKFos''@;'; put 'put ''dWUpfV9lKCh2PXYuYXBwbHkoZCxnfHxbXSkpLm5leHQoKSl9KX1mdW5jdGlvbiBhYSguLi5kKXtsZXQgZz1kW2QubGVuZ3RoLTFdO3JldHVybiB3dChnKT8oZC5wb3AoKSxVZShkLGcpKTpwcihkKX1jbGFzcyBmcyBleHRlbmRzICRle2NvbnN0cnVjdG9yKGcpe3N1cGVyKCksdGhpcy5fdmFs''@;'; put 'put ''dWU9Z31nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5nZXRWYWx1ZSgpfV9zdWJzY3JpYmUoZyl7Y29uc3QgaD1zdXBlci5fc3Vic2NyaWJlKGcpO3JldHVybiBoJiYhaC5jbG9zZWQmJmcubmV4dCh0aGlzLl92YWx1ZSksaH1nZXRWYWx1ZSgpe2lmKHRoaXMuaGFzRXJyb3IpdGhyb3cgdGhpcy50''@;'; put 'put ''aHJvd25FcnJvcjtpZih0aGlzLmNsb3NlZCl0aHJvdyBuZXcgRGU7cmV0dXJuIHRoaXMuX3ZhbHVlfW5leHQoZyl7c3VwZXIubmV4dCh0aGlzLl92YWx1ZT1nKX19Y2xhc3MgWWllIGV4dGVuZHMgentub3RpZnlOZXh0KGcsaCx2LHksQyl7dGhpcy5kZXN0aW5hdGlvbi5uZXh0KGgpfW5vdGlm''@;'; put 'put ''eUVycm9yKGcsaCl7dGhpcy5kZXN0aW5hdGlvbi5lcnJvcihnKX1ub3RpZnlDb21wbGV0ZShnKXt0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9fWNsYXNzIFVpZSBleHRlbmRzIHp7Y29uc3RydWN0b3IoZyxoLHYpe3N1cGVyKCksdGhpcy5wYXJlbnQ9Zyx0aGlzLm91dGVyVmFsdWU9aCx0''@;'; put 'put ''aGlzLm91dGVySW5kZXg9dix0aGlzLmluZGV4PTB9X25leHQoZyl7dGhpcy5wYXJlbnQubm90aWZ5TmV4dCh0aGlzLm91dGVyVmFsdWUsZyx0aGlzLm91dGVySW5kZXgsdGhpcy5pbmRleCsrLHRoaXMpfV9lcnJvcihnKXt0aGlzLnBhcmVudC5ub3RpZnlFcnJvcihnLHRoaXMpLHRoaXMudW5z''@;'; put 'put ''dWJzY3JpYmUoKX1fY29tcGxldGUoKXt0aGlzLnBhcmVudC5ub3RpZnlDb21wbGV0ZSh0aGlzKSx0aGlzLnVuc3Vic2NyaWJlKCl9fWZ1bmN0aW9uIFFpZShkLGcsaCx2LHk9bmV3IFVpZShkLGgsdikpe2lmKCF5LmNsb3NlZClyZXR1cm4gZyBpbnN0YW5jZW9mIEY/Zy5zdWJzY3JpYmUoeSk6''@;'; put 'put ''ZnQoZykoeSl9Y29uc3Qgc1k9e307ZnVuY3Rpb24gb0koLi4uZCl7bGV0IGcsaDtyZXR1cm4gd3QoZFtkLmxlbmd0aC0xXSkmJihoPWQucG9wKCkpLCJmdW5jdGlvbiI9PXR5cGVvZiBkW2QubGVuZ3RoLTFdJiYoZz1kLnBvcCgpKSwxPT09ZC5sZW5ndGgmJkFlKGRbMF0pJiYoZD1kWzBdKSxw''@;'; put 'put ''cihkLGgpLmxpZnQobmV3IFZGKGcpKX1jbGFzcyBWRntjb25zdHJ1Y3RvcihnKXt0aGlzLnJlc3VsdFNlbGVjdG9yPWd9Y2FsbChnLGgpe3JldHVybiBoLnN1YnNjcmliZShuZXcgdVkoZyx0aGlzLnJlc3VsdFNlbGVjdG9yKSl9fWNsYXNzIHVZIGV4dGVuZHMgWWlle2NvbnN0cnVjdG9yKGcs''@;'; put 'put ''aCl7c3VwZXIoZyksdGhpcy5yZXN1bHRTZWxlY3Rvcj1oLHRoaXMuYWN0aXZlPTAsdGhpcy52YWx1ZXM9W10sdGhpcy5vYnNlcnZhYmxlcz1bXX1fbmV4dChnKXt0aGlzLnZhbHVlcy5wdXNoKHNZKSx0aGlzLm9ic2VydmFibGVzLnB1c2goZyl9X2NvbXBsZXRlKCl7Y29uc3QgZz10aGlzLm9i''@;'; put 'put ''c2VydmFibGVzLGg9Zy5sZW5ndGg7aWYoMD09PWgpdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpO2Vsc2V7dGhpcy5hY3RpdmU9aCx0aGlzLnRvUmVzcG9uZD1oO2ZvcihsZXQgdj0wO3Y8aDt2KyspdGhpcy5hZGQoUWllKHRoaXMsZ1t2XSx2b2lkIDAsdikpfX1ub3RpZnlDb21wbGV0ZShn''@;'; put 'put ''KXswPT0odGhpcy5hY3RpdmUtPTEpJiZ0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9bm90aWZ5TmV4dChnLGgsdil7Y29uc3QgeT10aGlzLnZhbHVlcyxJPXRoaXMudG9SZXNwb25kP3lbdl09PT1zWT8tLXRoaXMudG9SZXNwb25kOnRoaXMudG9SZXNwb25kOjA7eVt2XT1oLDA9PT1JJiYo''@;'; put 'put ''dGhpcy5yZXN1bHRTZWxlY3Rvcj90aGlzLl90cnlSZXN1bHRTZWxlY3Rvcih5KTp0aGlzLmRlc3RpbmF0aW9uLm5leHQoeS5zbGljZSgpKSl9X3RyeVJlc3VsdFNlbGVjdG9yKGcpe2xldCBoO3RyeXtoPXRoaXMucmVzdWx0U2VsZWN0b3IuYXBwbHkodGhpcyxnKX1jYXRjaCh2KXtyZXR1cm4g''@;'; put 'put ''dm9pZCB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHYpfXRoaXMuZGVzdGluYXRpb24ubmV4dChoKX19ZnVuY3Rpb24gakYoLi4uZCl7cmV0dXJuIGZ1bmN0aW9uIEppZSgpe3JldHVybiBxdCgxKX0oKShhYSguLi5kKSl9Y29uc3QgVUE9bmV3IEYoZD0+ZC5jb21wbGV0ZSgpKTtmdW5jdGlvbiBh''@;'; put 'put ''SShkKXtyZXR1cm4gZD9mdW5jdGlvbiBYaWUoZCl7cmV0dXJuIG5ldyBGKGc9PmQuc2NoZWR1bGUoKCk9PmcuY29tcGxldGUoKSkpfShkKTpVQX1mdW5jdGlvbiBjWShkKXtyZXR1cm4gbmV3IEYoZz0+e2xldCBoO3RyeXtoPWQoKX1jYXRjaCh5KXtyZXR1cm4gdm9pZCBnLmVycm9yKHkpfXJl''@;'; put 'put ''dHVybihoP2RuKGgpOmFJKCkpLnN1YnNjcmliZShnKX0pfWZ1bmN0aW9uIFFBKGQsZyl7cmV0dXJuIG5ldyBGKGc/aD0+Zy5zY2hlZHVsZShLaWUsMCx7ZXJyb3I6ZCxzdWJzY3JpYmVyOmh9KTpoPT5oLmVycm9yKGQpKX1mdW5jdGlvbiBLaWUoe2Vycm9yOmQsc3Vic2NyaWJlcjpnfSl7Zy5l''@;'; put 'put ''cnJvcihkKX1jb25zdCBKQT0oKCk9PntmdW5jdGlvbiBkKCl7cmV0dXJuIEVycm9yLmNhbGwodGhpcyksdGhpcy5tZXNzYWdlPSJubyBlbGVtZW50cyBpbiBzZXF1ZW5jZSIsdGhpcy5uYW1lPSJFbXB0eUVycm9yIix0aGlzfXJldHVybiBkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEVycm9y''@;'; put 'put ''LnByb3RvdHlwZSksZH0pKCk7ZnVuY3Rpb24gWWgoZCxnKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZz9oPT5oLnBpcGUoWWgoKHYseSk9PmRuKGQodix5KSkucGlwZShtdCgoQyxJKT0+Zyh2LEMseSxJKSkpKSk6aD0+aC5saWZ0KG5ldyAkaWUoZCkpfWNsYXNzICRpZXtjb25zdHJ1Y3Rv''@;'; put 'put ''cihnKXt0aGlzLnByb2plY3Q9Z31jYWxsKGcsaCl7cmV0dXJuIGguc3Vic2NyaWJlKG5ldyBmWShnLHRoaXMucHJvamVjdCkpfX1jbGFzcyBmWSBleHRlbmRzIE5ue2NvbnN0cnVjdG9yKGcsaCl7c3VwZXIoZyksdGhpcy5wcm9qZWN0PWgsdGhpcy5pbmRleD0wfV9uZXh0KGcpe2xldCBoO2Nv''@;'; put 'put ''bnN0IHY9dGhpcy5pbmRleCsrO3RyeXtoPXRoaXMucHJvamVjdChnLHYpfWNhdGNoKHkpe3JldHVybiB2b2lkIHRoaXMuZGVzdGluYXRpb24uZXJyb3IoeSl9dGhpcy5faW5uZXJTdWIoaCl9X2lubmVyU3ViKGcpe2NvbnN0IGg9dGhpcy5pbm5lclN1YnNjcmlwdGlvbjtoJiZoLnVuc3Vic2Ny''@;'; put 'put ''aWJlKCk7Y29uc3Qgdj1uZXcgeW4odGhpcykseT10aGlzLmRlc3RpbmF0aW9uO3kuYWRkKHYpLHRoaXMuaW5uZXJTdWJzY3JpcHRpb249ZXIoZyx2KSx0aGlzLmlubmVyU3Vic2NyaXB0aW9uIT09diYmeS5hZGQodGhpcy5pbm5lclN1YnNjcmlwdGlvbil9X2NvbXBsZXRlKCl7Y29uc3R7aW5u''@;'; put 'put ''ZXJTdWJzY3JpcHRpb246Z309dGhpczsoIWd8fGcuY2xvc2VkKSYmc3VwZXIuX2NvbXBsZXRlKCksdGhpcy51bnN1YnNjcmliZSgpfV91bnN1YnNjcmliZSgpe3RoaXMuaW5uZXJTdWJzY3JpcHRpb249dm9pZCAwfW5vdGlmeUNvbXBsZXRlKCl7dGhpcy5pbm5lclN1YnNjcmlwdGlvbj12b2lk''@;'; put 'put ''IDAsdGhpcy5pc1N0b3BwZWQmJnN1cGVyLl9jb21wbGV0ZSgpfW5vdGlmeU5leHQoZyl7dGhpcy5kZXN0aW5hdGlvbi5uZXh0KGcpfX1jb25zdCBoWT0oKCk9PntmdW5jdGlvbiBkKCl7cmV0dXJuIEVycm9yLmNhbGwodGhpcyksdGhpcy5tZXNzYWdlPSJhcmd1bWVudCBvdXQgb2YgcmFuZ2Ui''@;'; put 'put ''LHRoaXMubmFtZT0iQXJndW1lbnRPdXRPZlJhbmdlRXJyb3IiLHRoaXN9cmV0dXJuIGQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKSxkfSkoKTtmdW5jdGlvbiBINShkKXtyZXR1cm4gZz0+MD09PWQ/YUkoKTpnLmxpZnQobmV3IHFpZShkKSl9Y2xhc3MgcWlle2Nv''@;'; put 'put ''bnN0cnVjdG9yKGcpe2lmKHRoaXMudG90YWw9Zyx0aGlzLnRvdGFsPDApdGhyb3cgbmV3IGhZfWNhbGwoZyxoKXtyZXR1cm4gaC5zdWJzY3JpYmUobmV3IGRZKGcsdGhpcy50b3RhbCkpfX1jbGFzcyBkWSBleHRlbmRzIHp7Y29uc3RydWN0b3IoZyxoKXtzdXBlcihnKSx0aGlzLnRvdGFsPWgs''@;'; put 'put ''dGhpcy5jb3VudD0wfV9uZXh0KGcpe2NvbnN0IGg9dGhpcy50b3RhbCx2PSsrdGhpcy5jb3VudDt2PD1oJiYodGhpcy5kZXN0aW5hdGlvbi5uZXh0KGcpLHY9PT1oJiYodGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpLHRoaXMudW5zdWJzY3JpYmUoKSkpfX1mdW5jdGlvbiBONSguLi5kKXtj''@;'; put 'put ''b25zdCBnPWRbZC5sZW5ndGgtMV07cmV0dXJuIHd0KGcpPyhkLnBvcCgpLGg9PmpGKGQsaCxnKSk6aD0+akYoZCxoKX1mdW5jdGlvbiBPMihkLGcpe3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4gdi5saWZ0KG5ldyBlMGUoZCxnKSl9fWNsYXNzIGUwZXtjb25zdHJ1Y3RvcihnLGgpe3RoaXMu''@;'; put 'put ''cHJlZGljYXRlPWcsdGhpcy50aGlzQXJnPWh9Y2FsbChnLGgpe3JldHVybiBoLnN1YnNjcmliZShuZXcgdDBlKGcsdGhpcy5wcmVkaWNhdGUsdGhpcy50aGlzQXJnKSl9fWNsYXNzIHQwZSBleHRlbmRzIHp7Y29uc3RydWN0b3IoZyxoLHYpe3N1cGVyKGcpLHRoaXMucHJlZGljYXRlPWgsdGhp''@;'; put 'put ''cy50aGlzQXJnPXYsdGhpcy5jb3VudD0wfV9uZXh0KGcpe2xldCBoO3RyeXtoPXRoaXMucHJlZGljYXRlLmNhbGwodGhpcy50aGlzQXJnLGcsdGhpcy5jb3VudCsrKX1jYXRjaCh2KXtyZXR1cm4gdm9pZCB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHYpfWgmJnRoaXMuZGVzdGluYXRpb24ubmV4''@;'; put 'put ''dChnKX19ZnVuY3Rpb24gaDcoZD1udWxsKXtyZXR1cm4gZz0+Zy5saWZ0KG5ldyBuMGUoZCkpfWNsYXNzIG4wZXtjb25zdHJ1Y3RvcihnKXt0aGlzLmRlZmF1bHRWYWx1ZT1nfWNhbGwoZyxoKXtyZXR1cm4gaC5zdWJzY3JpYmUobmV3IHIwZShnLHRoaXMuZGVmYXVsdFZhbHVlKSl9fWNsYXNz''@;'; put 'put ''IHIwZSBleHRlbmRzIHp7Y29uc3RydWN0b3IoZyxoKXtzdXBlcihnKSx0aGlzLmRlZmF1bHRWYWx1ZT1oLHRoaXMuaXNFbXB0eT0hMH1fbmV4dChnKXt0aGlzLmlzRW1wdHk9ITEsdGhpcy5kZXN0aW5hdGlvbi5uZXh0KGcpfV9jb21wbGV0ZSgpe3RoaXMuaXNFbXB0eSYmdGhpcy5kZXN0aW5h''@;'; put 'put ''dGlvbi5uZXh0KHRoaXMuZGVmYXVsdFZhbHVlKSx0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9fWZ1bmN0aW9uIHBZKGQ9bVkpe3JldHVybiBnPT5nLmxpZnQobmV3IGkwZShkKSl9Y2xhc3MgaTBle2NvbnN0cnVjdG9yKGcpe3RoaXMuZXJyb3JGYWN0b3J5PWd9Y2FsbChnLGgpe3JldHVy''@;'; put 'put ''biBoLnN1YnNjcmliZShuZXcgZ1koZyx0aGlzLmVycm9yRmFjdG9yeSkpfX1jbGFzcyBnWSBleHRlbmRzIHp7Y29uc3RydWN0b3IoZyxoKXtzdXBlcihnKSx0aGlzLmVycm9yRmFjdG9yeT1oLHRoaXMuaGFzVmFsdWU9ITF9X25leHQoZyl7dGhpcy5oYXNWYWx1ZT0hMCx0aGlzLmRlc3RpbmF0''@;'; put 'put ''aW9uLm5leHQoZyl9X2NvbXBsZXRlKCl7aWYodGhpcy5oYXNWYWx1ZSlyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpO3tsZXQgZzt0cnl7Zz10aGlzLmVycm9yRmFjdG9yeSgpfWNhdGNoKGgpe2c9aH10aGlzLmRlc3RpbmF0aW9uLmVycm9yKGcpfX19ZnVuY3Rpb24gbVkoKXty''@;'; put 'put ''ZXR1cm4gbmV3IEpBfWZ1bmN0aW9uIFczKGQsZyl7Y29uc3QgaD1hcmd1bWVudHMubGVuZ3RoPj0yO3JldHVybiB2PT52LnBpcGUoZD9PMigoeSxDKT0+ZCh5LEMsdikpOlYsSDUoMSksaD9oNyhnKTpwWSgoKT0+bmV3IEpBKSl9ZnVuY3Rpb24gVjUoZCxnKXtyZXR1cm4gc3IoZCxnLDEpfWZ1''@;'; put 'put ''bmN0aW9uIGo1KCl7fWZ1bmN0aW9uIHlhKGQsZyxoKXtyZXR1cm4gZnVuY3Rpb24oeSl7cmV0dXJuIHkubGlmdChuZXcgWEEoZCxnLGgpKX19Y2xhc3MgWEF7Y29uc3RydWN0b3IoZyxoLHYpe3RoaXMubmV4dE9yT2JzZXJ2ZXI9Zyx0aGlzLmVycm9yPWgsdGhpcy5jb21wbGV0ZT12fWNhbGwo''@;'; put 'put ''ZyxoKXtyZXR1cm4gaC5zdWJzY3JpYmUobmV3IG8wZShnLHRoaXMubmV4dE9yT2JzZXJ2ZXIsdGhpcy5lcnJvcix0aGlzLmNvbXBsZXRlKSl9fWNsYXNzIG8wZSBleHRlbmRzIHp7Y29uc3RydWN0b3IoZyxoLHYseSl7c3VwZXIoZyksdGhpcy5fdGFwTmV4dD1qNSx0aGlzLl90YXBFcnJvcj1q''@;'; put 'put ''NSx0aGlzLl90YXBDb21wbGV0ZT1qNSx0aGlzLl90YXBFcnJvcj12fHxqNSx0aGlzLl90YXBDb21wbGV0ZT15fHxqNSxzZShoKT8odGhpcy5fY29udGV4dD10aGlzLHRoaXMuX3RhcE5leHQ9aCk6aCYmKHRoaXMuX2NvbnRleHQ9aCx0aGlzLl90YXBOZXh0PWgubmV4dHx8ajUsdGhpcy5fdGFw''@;'; put 'put ''RXJyb3I9aC5lcnJvcnx8ajUsdGhpcy5fdGFwQ29tcGxldGU9aC5jb21wbGV0ZXx8ajUpfV9uZXh0KGcpe3RyeXt0aGlzLl90YXBOZXh0LmNhbGwodGhpcy5fY29udGV4dCxnKX1jYXRjaChoKXtyZXR1cm4gdm9pZCB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKGgpfXRoaXMuZGVzdGluYXRpb24u''@;'; put 'put ''bmV4dChnKX1fZXJyb3IoZyl7dHJ5e3RoaXMuX3RhcEVycm9yLmNhbGwodGhpcy5fY29udGV4dCxnKX1jYXRjaChoKXtyZXR1cm4gdm9pZCB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKGgpfXRoaXMuZGVzdGluYXRpb24uZXJyb3IoZyl9X2NvbXBsZXRlKCl7dHJ5e3RoaXMuX3RhcENvbXBsZXRl''@;'; put 'put ''LmNhbGwodGhpcy5fY29udGV4dCl9Y2F0Y2goZyl7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcihnKX1yZXR1cm4gdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfX1mdW5jdGlvbiBaNShkKXtyZXR1cm4gZnVuY3Rpb24oaCl7Y29uc3Qgdj1uZXcgdlkoZCkseT1oLmxpZnQo''@;'; put 'put ''dik7cmV0dXJuIHYuY2F1Z2h0PXl9fWNsYXNzIHZZe2NvbnN0cnVjdG9yKGcpe3RoaXMuc2VsZWN0b3I9Z31jYWxsKGcsaCl7cmV0dXJuIGguc3Vic2NyaWJlKG5ldyBhMGUoZyx0aGlzLnNlbGVjdG9yLHRoaXMuY2F1Z2h0KSl9fWNsYXNzIGEwZSBleHRlbmRzIE5ue2NvbnN0cnVjdG9yKGcs''@;'; put 'put ''aCx2KXtzdXBlcihnKSx0aGlzLnNlbGVjdG9yPWgsdGhpcy5jYXVnaHQ9dn1lcnJvcihnKXtpZighdGhpcy5pc1N0b3BwZWQpe2xldCBoO3RyeXtoPXRoaXMuc2VsZWN0b3IoZyx0aGlzLmNhdWdodCl9Y2F0Y2goQyl7cmV0dXJuIHZvaWQgc3VwZXIuZXJyb3IoQyl9dGhpcy5fdW5zdWJzY3Jp''@;'; put 'put ''YmVBbmRSZWN5Y2xlKCk7Y29uc3Qgdj1uZXcgeW4odGhpcyk7dGhpcy5hZGQodik7Y29uc3QgeT1lcihoLHYpO3khPT12JiZ0aGlzLmFkZCh5KX19fWZ1bmN0aW9uIGxJKGQsZyl7bGV0IGg9ITE7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+PTImJihoPSEwKSxmdW5jdGlvbih5KXtyZXR1cm4g''@;'; put 'put ''eS5saWZ0KG5ldyBsMGUoZCxnLGgpKX19Y2xhc3MgbDBle2NvbnN0cnVjdG9yKGcsaCx2PSExKXt0aGlzLmFjY3VtdWxhdG9yPWcsdGhpcy5zZWVkPWgsdGhpcy5oYXNTZWVkPXZ9Y2FsbChnLGgpe3JldHVybiBoLnN1YnNjcmliZShuZXcgWkYoZyx0aGlzLmFjY3VtdWxhdG9yLHRoaXMuc2Vl''@;'; put 'put ''ZCx0aGlzLmhhc1NlZWQpKX19Y2xhc3MgWkYgZXh0ZW5kcyB6e2NvbnN0cnVjdG9yKGcsaCx2LHkpe3N1cGVyKGcpLHRoaXMuYWNjdW11bGF0b3I9aCx0aGlzLl9zZWVkPXYsdGhpcy5oYXNTZWVkPXksdGhpcy5pbmRleD0wfWdldCBzZWVkKCl7cmV0dXJuIHRoaXMuX3NlZWR9c2V0IHNlZWQo''@;'; put 'put ''Zyl7dGhpcy5oYXNTZWVkPSEwLHRoaXMuX3NlZWQ9Z31fbmV4dChnKXtpZih0aGlzLmhhc1NlZWQpcmV0dXJuIHRoaXMuX3RyeU5leHQoZyk7dGhpcy5zZWVkPWcsdGhpcy5kZXN0aW5hdGlvbi5uZXh0KGcpfV90cnlOZXh0KGcpe2NvbnN0IGg9dGhpcy5pbmRleCsrO2xldCB2O3RyeXt2PXRo''@;'; put 'put ''aXMuYWNjdW11bGF0b3IodGhpcy5zZWVkLGcsaCl9Y2F0Y2goeSl7dGhpcy5kZXN0aW5hdGlvbi5lcnJvcih5KX10aGlzLnNlZWQ9dix0aGlzLmRlc3RpbmF0aW9uLm5leHQodil9fWZ1bmN0aW9uIHo1KGQpe3JldHVybiBmdW5jdGlvbihoKXtyZXR1cm4gMD09PWQ/YUkoKTpoLmxpZnQobmV3''@;'; put 'put ''IHMwZShkKSl9fWNsYXNzIHMwZXtjb25zdHJ1Y3RvcihnKXtpZih0aGlzLnRvdGFsPWcsdGhpcy50b3RhbDwwKXRocm93IG5ldyBoWX1jYWxsKGcsaCl7cmV0dXJuIGguc3Vic2NyaWJlKG5ldyB1MGUoZyx0aGlzLnRvdGFsKSl9fWNsYXNzIHUwZSBleHRlbmRzIHp7Y29uc3RydWN0b3IoZyxo''@;'; put 'put ''KXtzdXBlcihnKSx0aGlzLnRvdGFsPWgsdGhpcy5yaW5nPW5ldyBBcnJheSx0aGlzLmNvdW50PTB9X25leHQoZyl7Y29uc3QgaD10aGlzLnJpbmcsdj10aGlzLnRvdGFsLHk9dGhpcy5jb3VudCsrO2gubGVuZ3RoPHY/aC5wdXNoKGcpOmhbeSV2XT1nfV9jb21wbGV0ZSgpe2NvbnN0IGc9dGhp''@;'; put 'put ''cy5kZXN0aW5hdGlvbjtsZXQgaD10aGlzLmNvdW50O2lmKGg+MCl7Y29uc3Qgdj10aGlzLmNvdW50Pj10aGlzLnRvdGFsP3RoaXMudG90YWw6dGhpcy5jb3VudCx5PXRoaXMucmluZztmb3IobGV0IEM9MDtDPHY7QysrKXtjb25zdCBJPWgrKyV2O2cubmV4dCh5W0ldKX19Zy5jb21wbGV0ZSgp''@;'; put 'put ''fX1mdW5jdGlvbiBBWShkLGcpe2NvbnN0IGg9YXJndW1lbnRzLmxlbmd0aD49MjtyZXR1cm4gdj0+di5waXBlKGQ/TzIoKHksQyk9PmQoeSxDLHYpKTpWLHo1KDEpLGg/aDcoZyk6cFkoKCk9Pm5ldyBKQSkpfWNsYXNzIGYwZXtjb25zdHJ1Y3RvcihnLGgpe3RoaXMucHJlZGljYXRlPWcsdGhp''@;'; put 'put ''cy5pbmNsdXNpdmU9aH1jYWxsKGcsaCl7cmV0dXJuIGguc3Vic2NyaWJlKG5ldyBoMGUoZyx0aGlzLnByZWRpY2F0ZSx0aGlzLmluY2x1c2l2ZSkpfX1jbGFzcyBoMGUgZXh0ZW5kcyB6e2NvbnN0cnVjdG9yKGcsaCx2KXtzdXBlcihnKSx0aGlzLnByZWRpY2F0ZT1oLHRoaXMuaW5jbHVzaXZl''@;'; put 'put ''PXYsdGhpcy5pbmRleD0wfV9uZXh0KGcpe2NvbnN0IGg9dGhpcy5kZXN0aW5hdGlvbjtsZXQgdjt0cnl7dj10aGlzLnByZWRpY2F0ZShnLHRoaXMuaW5kZXgrKyl9Y2F0Y2goeSl7cmV0dXJuIHZvaWQgaC5lcnJvcih5KX10aGlzLm5leHRPckNvbXBsZXRlKGcsdil9bmV4dE9yQ29tcGxldGUo''@;'; put 'put ''ZyxoKXtjb25zdCB2PXRoaXMuZGVzdGluYXRpb247Qm9vbGVhbihoKT92Lm5leHQoZyk6KHRoaXMuaW5jbHVzaXZlJiZ2Lm5leHQoZyksdi5jb21wbGV0ZSgpKX19ZnVuY3Rpb24gRzUoZCl7cmV0dXJuIGc9PmcubGlmdChuZXcgV0MoZCkpfWNsYXNzIFdDe2NvbnN0cnVjdG9yKGcpe3RoaXMu''@;'; put 'put ''dmFsdWU9Z31jYWxsKGcsaCl7cmV0dXJuIGguc3Vic2NyaWJlKG5ldyBLQShnLHRoaXMudmFsdWUpKX19Y2xhc3MgS0EgZXh0ZW5kcyB6e2NvbnN0cnVjdG9yKGcsaCl7c3VwZXIoZyksdGhpcy52YWx1ZT1ofV9uZXh0KGcpe3RoaXMuZGVzdGluYXRpb24ubmV4dCh0aGlzLnZhbHVlKX19ZnVu''@;'; put 'put ''Y3Rpb24gc0koZCl7cmV0dXJuIGc9PmcubGlmdChuZXcgZDBlKGQpKX1jbGFzcyBkMGV7Y29uc3RydWN0b3IoZyl7dGhpcy5jYWxsYmFjaz1nfWNhbGwoZyxoKXtyZXR1cm4gaC5zdWJzY3JpYmUobmV3IHlZKGcsdGhpcy5jYWxsYmFjaykpfX1jbGFzcyB5WSBleHRlbmRzIHp7Y29uc3RydWN0''@;'; put 'put ''b3IoZyxoKXtzdXBlcihnKSx0aGlzLmFkZChuZXcgVGUoaCkpfX1jb25zdCBqbD0icHJpbWFyeSI7Y2xhc3Mgd1l7Y29uc3RydWN0b3IoZyl7dGhpcy5wYXJhbXM9Z3x8e319aGFzKGcpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5wYXJhbXMsZyl9''@;'; put 'put ''Z2V0KGcpe2lmKHRoaXMuaGFzKGcpKXtjb25zdCBoPXRoaXMucGFyYW1zW2ddO3JldHVybiBBcnJheS5pc0FycmF5KGgpP2hbMF06aH1yZXR1cm4gbnVsbH1nZXRBbGwoZyl7aWYodGhpcy5oYXMoZykpe2NvbnN0IGg9dGhpcy5wYXJhbXNbZ107cmV0dXJuIEFycmF5LmlzQXJyYXkoaCk/aDpb''@;'; put 'put ''aF19cmV0dXJuW119Z2V0IGtleXMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5wYXJhbXMpfX1mdW5jdGlvbiBkNyhkKXtyZXR1cm4gbmV3IHdZKGQpfWZ1bmN0aW9uIGJZKGQsZyxoKXtjb25zdCB2PWgucGF0aC5zcGxpdCgiLyIpO2lmKHYubGVuZ3RoPmQubGVuZ3RofHwiZnVsbCI9PT1o''@;'; put 'put ''LnBhdGhNYXRjaCYmKGcuaGFzQ2hpbGRyZW4oKXx8di5sZW5ndGg8ZC5sZW5ndGgpKXJldHVybiBudWxsO2NvbnN0IHk9e307Zm9yKGxldCBDPTA7Qzx2Lmxlbmd0aDtDKyspe2NvbnN0IEk9dltDXSxaPWRbQ107aWYoSS5zdGFydHNXaXRoKCI6IikpeVtJLnN1YnN0cmluZygxKV09WjtlbHNl''@;'; put 'put ''IGlmKEkhPT1aLnBhdGgpcmV0dXJuIG51bGx9cmV0dXJue2NvbnN1bWVkOmQuc2xpY2UoMCx2Lmxlbmd0aCkscG9zUGFyYW1zOnl9fWZ1bmN0aW9uIGxwKGQsZyl7Y29uc3QgaD1kP09iamVjdC5rZXlzKGQpOnZvaWQgMCx2PWc/T2JqZWN0LmtleXMoZyk6dm9pZCAwO2lmKCFofHwhdnx8aC5s''@;'; put 'put ''ZW5ndGghPXYubGVuZ3RoKXJldHVybiExO2xldCB5O2ZvcihsZXQgQz0wO0M8aC5sZW5ndGg7QysrKWlmKHk9aFtDXSwhekYoZFt5XSxnW3ldKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiB6RihkLGcpe2lmKEFycmF5LmlzQXJyYXkoZCkmJkFycmF5LmlzQXJyYXkoZykpe2lmKGQubGVu''@;'; put 'put ''Z3RoIT09Zy5sZW5ndGgpcmV0dXJuITE7Y29uc3QgaD1bLi4uZF0uc29ydCgpLHY9Wy4uLmddLnNvcnQoKTtyZXR1cm4gaC5ldmVyeSgoeSxDKT0+dltDXT09PXkpfXJldHVybiBkPT09Z31mdW5jdGlvbiBHRihkKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxkKX1m''@;'; put 'put ''dW5jdGlvbiBXRihkKXtyZXR1cm4gZC5sZW5ndGg+MD9kW2QubGVuZ3RoLTFdOm51bGx9ZnVuY3Rpb24gVGMoZCxnKXtmb3IoY29uc3QgaCBpbiBkKWQuaGFzT3duUHJvcGVydHkoaCkmJmcoZFtoXSxoKX1mdW5jdGlvbiBCdShkKXtyZXR1cm4gSF8oZCk/ZDpWbShkKT9kbihQcm9taXNlLnJl''@;'; put 'put ''c29sdmUoZCkpOmFhKGQpfWNvbnN0IG0wZT17ZXhhY3Q6ZnVuY3Rpb24gUUYoZCxnLGgpe2lmKCFwNyhkLnNlZ21lbnRzLGcuc2VnbWVudHMpfHwhWUMoZC5zZWdtZW50cyxnLnNlZ21lbnRzLGgpfHxkLm51bWJlck9mQ2hpbGRyZW4hPT1nLm51bWJlck9mQ2hpbGRyZW4pcmV0dXJuITE7Zm9y''@;'; put 'put ''KGNvbnN0IHYgaW4gZy5jaGlsZHJlbilpZighZC5jaGlsZHJlblt2XXx8IVFGKGQuY2hpbGRyZW5bdl0sZy5jaGlsZHJlblt2XSxoKSlyZXR1cm4hMTtyZXR1cm4hMH0sc3Vic2V0OmtZfSxVRj17ZXhhY3Q6ZnVuY3Rpb24gdUkoZCxnKXtyZXR1cm4gbHAoZCxnKX0sc3Vic2V0OmZ1bmN0aW9u''@;'; put 'put ''IFc1KGQsZyl7cmV0dXJuIE9iamVjdC5rZXlzKGcpLmxlbmd0aDw9T2JqZWN0LmtleXMoZCkubGVuZ3RoJiZPYmplY3Qua2V5cyhnKS5ldmVyeShoPT56RihkW2hdLGdbaF0pKX0saWdub3JlZDooKT0+ITB9O2Z1bmN0aW9uIENZKGQsZyxoKXtyZXR1cm4gbTBlW2gucGF0aHNdKGQucm9vdCxn''@;'; put 'put ''LnJvb3QsaC5tYXRyaXhQYXJhbXMpJiZVRltoLnF1ZXJ5UGFyYW1zXShkLnF1ZXJ5UGFyYW1zLGcucXVlcnlQYXJhbXMpJiYhKCJleGFjdCI9PT1oLmZyYWdtZW50JiZkLmZyYWdtZW50IT09Zy5mcmFnbWVudCl9ZnVuY3Rpb24ga1koZCxnLGgpe3JldHVybiBTWShkLGcsZy5zZWdtZW50cyxo''@;'; put 'put ''KX1mdW5jdGlvbiBTWShkLGcsaCx2KXtpZihkLnNlZ21lbnRzLmxlbmd0aD5oLmxlbmd0aCl7Y29uc3QgeT1kLnNlZ21lbnRzLnNsaWNlKDAsaC5sZW5ndGgpO3JldHVybiEoIXA3KHksaCl8fGcuaGFzQ2hpbGRyZW4oKXx8IVlDKHksaCx2KSl9aWYoZC5zZWdtZW50cy5sZW5ndGg9PT1oLmxl''@;'; put 'put ''bmd0aCl7aWYoIXA3KGQuc2VnbWVudHMsaCl8fCFZQyhkLnNlZ21lbnRzLGgsdikpcmV0dXJuITE7Zm9yKGNvbnN0IHkgaW4gZy5jaGlsZHJlbilpZighZC5jaGlsZHJlblt5XXx8IWtZKGQuY2hpbGRyZW5beV0sZy5jaGlsZHJlblt5XSx2KSlyZXR1cm4hMTtyZXR1cm4hMH17Y29uc3QgeT1o''@;'; put 'put ''LnNsaWNlKDAsZC5zZWdtZW50cy5sZW5ndGgpLEM9aC5zbGljZShkLnNlZ21lbnRzLmxlbmd0aCk7cmV0dXJuISEocDcoZC5zZWdtZW50cyx5KSYmWUMoZC5zZWdtZW50cyx5LHYpJiZkLmNoaWxkcmVuW2psXSkmJlNZKGQuY2hpbGRyZW5bamxdLGcsQyx2KX19ZnVuY3Rpb24gWUMoZCxnLGgp''@;'; put 'put ''e3JldHVybiBnLmV2ZXJ5KCh2LHkpPT5VRltoXShkW3ldLnBhcmFtZXRlcnMsdi5wYXJhbWV0ZXJzKSl9Y2xhc3MgWTV7Y29uc3RydWN0b3IoZyxoLHYpe3RoaXMucm9vdD1nLHRoaXMucXVlcnlQYXJhbXM9aCx0aGlzLmZyYWdtZW50PXZ9Z2V0IHF1ZXJ5UGFyYW1NYXAoKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5fcXVlcnlQYXJhbU1hcHx8KHRoaXMuX3F1ZXJ5UGFyYW1NYXA9ZDcodGhpcy5xdWVyeVBhcmFtcykpLHRoaXMuX3F1ZXJ5UGFyYW1NYXB9dG9TdHJpbmcoKXtyZXR1cm4gTVkuc2VyaWFsaXplKHRoaXMpfX1jbGFzcyBjbHtjb25zdHJ1Y3RvcihnLGgpe3RoaXMuc2VnbWVudHM9Zyx0aGlz''@;'; put 'put ''LmNoaWxkcmVuPWgsdGhpcy5wYXJlbnQ9bnVsbCxUYyhoLCh2LHkpPT52LnBhcmVudD10aGlzKX1oYXNDaGlsZHJlbigpe3JldHVybiB0aGlzLm51bWJlck9mQ2hpbGRyZW4+MH1nZXQgbnVtYmVyT2ZDaGlsZHJlbigpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLmNoaWxkcmVuKS5sZW5ndGh9''@;'; put 'put ''dG9TdHJpbmcoKXtyZXR1cm4gUUModGhpcyl9fWNsYXNzIFVDe2NvbnN0cnVjdG9yKGcsaCl7dGhpcy5wYXRoPWcsdGhpcy5wYXJhbWV0ZXJzPWh9Z2V0IHBhcmFtZXRlck1hcCgpe3JldHVybiB0aGlzLl9wYXJhbWV0ZXJNYXB8fCh0aGlzLl9wYXJhbWV0ZXJNYXA9ZDcodGhpcy5wYXJhbWV0''@;'; put 'put ''ZXJzKSksdGhpcy5fcGFyYW1ldGVyTWFwfXRvU3RyaW5nKCl7cmV0dXJuIGNJKHRoaXMpfX1mdW5jdGlvbiBwNyhkLGcpe3JldHVybiBkLmxlbmd0aD09PWcubGVuZ3RoJiZkLmV2ZXJ5KChoLHYpPT5oLnBhdGg9PT1nW3ZdLnBhdGgpfWNsYXNzIFU1e31jbGFzcyBKRntwYXJzZShnKXtjb25z''@;'; put 'put ''dCBoPW5ldyB4WShnKTtyZXR1cm4gbmV3IFk1KGgucGFyc2VSb290U2VnbWVudCgpLGgucGFyc2VRdWVyeVBhcmFtcygpLGgucGFyc2VGcmFnbWVudCgpKX1zZXJpYWxpemUoZyl7Y29uc3QgaD1gLyR7c3AoZy5yb290LCEwKX1gLHY9ZnVuY3Rpb24gZkkoZCl7Y29uc3QgZz1PYmplY3Qua2V5''@;'; put 'put ''cyhkKS5tYXAoaD0+e2NvbnN0IHY9ZFtoXTtyZXR1cm4gQXJyYXkuaXNBcnJheSh2KT92Lm1hcCh5PT5gJHskZChoKX09JHskZCh5KX1gKS5qb2luKCImIik6YCR7JGQoaCl9PSR7JGQodil9YH0pLmZpbHRlcihoPT4hIWgpO3JldHVybiBnLmxlbmd0aD9gPyR7Zy5qb2luKCImIil9YDoiIn0o''@;'; put 'put ''Zy5xdWVyeVBhcmFtcykseT0ic3RyaW5nIj09dHlwZW9mIGcuZnJhZ21lbnQ/YCMke2Z1bmN0aW9uIEVZKGQpe3JldHVybiBlbmNvZGVVUkkoZCl9KGcuZnJhZ21lbnQpfWA6IiI7cmV0dXJuYCR7aH0ke3Z9JHt5fWB9fWNvbnN0IE1ZPW5ldyBKRjtmdW5jdGlvbiBRQyhkKXtyZXR1cm4gZC5z''@;'; put 'put ''ZWdtZW50cy5tYXAoZz0+Y0koZykpLmpvaW4oIi8iKX1mdW5jdGlvbiBzcChkLGcpe2lmKCFkLmhhc0NoaWxkcmVuKCkpcmV0dXJuIFFDKGQpO2lmKGcpe2NvbnN0IGg9ZC5jaGlsZHJlbltqbF0/c3AoZC5jaGlsZHJlbltqbF0sITEpOiIiLHY9W107cmV0dXJuIFRjKGQuY2hpbGRyZW4sKHks''@;'; put 'put ''Qyk9PntDIT09amwmJnYucHVzaChgJHtDfToke3NwKHksITEpfWApfSksdi5sZW5ndGg+MD9gJHtofSgke3Yuam9pbigiLy8iKX0pYDpofXtjb25zdCBoPWZ1bmN0aW9uIEEwZShkLGcpe2xldCBoPVtdO3JldHVybiBUYyhkLmNoaWxkcmVuLCh2LHkpPT57eT09PWpsJiYoaD1oLmNvbmNhdChn''@;'; put 'put ''KHYseSkpKX0pLFRjKGQuY2hpbGRyZW4sKHYseSk9Pnt5IT09amwmJihoPWguY29uY2F0KGcodix5KSkpfSksaH0oZCwodix5KT0+eT09PWpsP1tzcChkLmNoaWxkcmVuW2psXSwhMSldOltgJHt5fToke3NwKHYsITEpfWBdKTtyZXR1cm4gMT09PU9iamVjdC5rZXlzKGQuY2hpbGRyZW4pLmxl''@;'; put 'put ''bmd0aCYmbnVsbCE9ZC5jaGlsZHJlbltqbF0/YCR7UUMoZCl9LyR7aFswXX1gOmAke1FDKGQpfS8oJHtoLmpvaW4oIi8vIil9KWB9fWZ1bmN0aW9uIFkzKGQpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoZCkucmVwbGFjZSgvJTQwL2csIkAiKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBs''@;'; put 'put ''YWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpfWZ1bmN0aW9uICRkKGQpe3JldHVybiBZMyhkKS5yZXBsYWNlKC8lM0IvZ2ksIjsiKX1mdW5jdGlvbiBYRihkKXtyZXR1cm4gWTMoZCkucmVwbGFjZSgvXCgvZywiJTI4IikucmVwbGFjZSgvXCkvZywiJTI5IikucmVwbGFjZSgv''@;'; put 'put ''JTI2L2dpLCImIil9ZnVuY3Rpb24gJEEoZCl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChkKX1mdW5jdGlvbiBKYyhkKXtyZXR1cm4gJEEoZC5yZXBsYWNlKC9cKy9nLCIlMjAiKSl9ZnVuY3Rpb24gY0koZCl7cmV0dXJuYCR7WEYoZC5wYXRoKX0ke2Z1bmN0aW9uIHkwZShkKXtyZXR1cm4g''@;'; put 'put ''T2JqZWN0LmtleXMoZCkubWFwKGc9PmA7JHtYRihnKX09JHtYRihkW2ddKX1gKS5qb2luKCIiKX0oZC5wYXJhbWV0ZXJzKX1gfWNvbnN0IHcwZT0vXlteXC8oKT87PSNdKy87ZnVuY3Rpb24gVWgoZCl7Y29uc3QgZz1kLm1hdGNoKHcwZSk7cmV0dXJuIGc/Z1swXToiIn1jb25zdCBoST0vXlte''@;'; put 'put ''PT8mI10rLyx6Nj0vXlteJiNdKy87Y2xhc3MgeFl7Y29uc3RydWN0b3IoZyl7dGhpcy51cmw9Zyx0aGlzLnJlbWFpbmluZz1nfXBhcnNlUm9vdFNlZ21lbnQoKXtyZXR1cm4gdGhpcy5jb25zdW1lT3B0aW9uYWwoIi8iKSwiIj09PXRoaXMucmVtYWluaW5nfHx0aGlzLnBlZWtTdGFydHNXaXRo''@;'; put 'put ''KCI/Iil8fHRoaXMucGVla1N0YXJ0c1dpdGgoIiMiKT9uZXcgY2woW10se30pOm5ldyBjbChbXSx0aGlzLnBhcnNlQ2hpbGRyZW4oKSl9cGFyc2VRdWVyeVBhcmFtcygpe2NvbnN0IGc9e307aWYodGhpcy5jb25zdW1lT3B0aW9uYWwoIj8iKSlkb3t0aGlzLnBhcnNlUXVlcnlQYXJhbShnKX13''@;'; put 'put ''aGlsZSh0aGlzLmNvbnN1bWVPcHRpb25hbCgiJiIpKTtyZXR1cm4gZ31wYXJzZUZyYWdtZW50KCl7cmV0dXJuIHRoaXMuY29uc3VtZU9wdGlvbmFsKCIjIik/ZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMucmVtYWluaW5nKTpudWxsfXBhcnNlQ2hpbGRyZW4oKXtpZigiIj09PXRoaXMucmVtYWlu''@;'; put 'put ''aW5nKXJldHVybnt9O3RoaXMuY29uc3VtZU9wdGlvbmFsKCIvIik7Y29uc3QgZz1bXTtmb3IodGhpcy5wZWVrU3RhcnRzV2l0aCgiKCIpfHxnLnB1c2godGhpcy5wYXJzZVNlZ21lbnQoKSk7dGhpcy5wZWVrU3RhcnRzV2l0aCgiLyIpJiYhdGhpcy5wZWVrU3RhcnRzV2l0aCgiLy8iKSYmIXRo''@;'; put 'put ''aXMucGVla1N0YXJ0c1dpdGgoIi8oIik7KXRoaXMuY2FwdHVyZSgiLyIpLGcucHVzaCh0aGlzLnBhcnNlU2VnbWVudCgpKTtsZXQgaD17fTt0aGlzLnBlZWtTdGFydHNXaXRoKCIvKCIpJiYodGhpcy5jYXB0dXJlKCIvIiksaD10aGlzLnBhcnNlUGFyZW5zKCEwKSk7bGV0IHY9e307cmV0dXJu''@;'; put 'put ''IHRoaXMucGVla1N0YXJ0c1dpdGgoIigiKSYmKHY9dGhpcy5wYXJzZVBhcmVucyghMSkpLChnLmxlbmd0aD4wfHxPYmplY3Qua2V5cyhoKS5sZW5ndGg+MCkmJih2W2psXT1uZXcgY2woZyxoKSksdn1wYXJzZVNlZ21lbnQoKXtjb25zdCBnPVVoKHRoaXMucmVtYWluaW5nKTtpZigiIj09PWcm''@;'; put 'put ''JnRoaXMucGVla1N0YXJ0c1dpdGgoIjsiKSl0aHJvdyBuZXcgZW4oNDAwOSwhMSk7cmV0dXJuIHRoaXMuY2FwdHVyZShnKSxuZXcgVUMoJEEoZyksdGhpcy5wYXJzZU1hdHJpeFBhcmFtcygpKX1wYXJzZU1hdHJpeFBhcmFtcygpe2NvbnN0IGc9e307Zm9yKDt0aGlzLmNvbnN1bWVPcHRpb25h''@;'; put 'put ''bCgiOyIpOyl0aGlzLnBhcnNlUGFyYW0oZyk7cmV0dXJuIGd9cGFyc2VQYXJhbShnKXtjb25zdCBoPVVoKHRoaXMucmVtYWluaW5nKTtpZighaClyZXR1cm47dGhpcy5jYXB0dXJlKGgpO2xldCB2PSIiO2lmKHRoaXMuY29uc3VtZU9wdGlvbmFsKCI9Iikpe2NvbnN0IHk9VWgodGhpcy5yZW1h''@;'; put 'put ''aW5pbmcpO3kmJih2PXksdGhpcy5jYXB0dXJlKHYpKX1nWyRBKGgpXT0kQSh2KX1wYXJzZVF1ZXJ5UGFyYW0oZyl7Y29uc3QgaD1mdW5jdGlvbiBLRihkKXtjb25zdCBnPWQubWF0Y2goaEkpO3JldHVybiBnP2dbMF06IiJ9KHRoaXMucmVtYWluaW5nKTtpZighaClyZXR1cm47dGhpcy5jYXB0''@;'; put 'put ''dXJlKGgpO2xldCB2PSIiO2lmKHRoaXMuY29uc3VtZU9wdGlvbmFsKCI9Iikpe2NvbnN0IEk9ZnVuY3Rpb24gYjBlKGQpe2NvbnN0IGc9ZC5tYXRjaCh6Nik7cmV0dXJuIGc/Z1swXToiIn0odGhpcy5yZW1haW5pbmcpO0kmJih2PUksdGhpcy5jYXB0dXJlKHYpKX1jb25zdCB5PUpjKGgpLEM9''@;'; put 'put ''SmModik7aWYoZy5oYXNPd25Qcm9wZXJ0eSh5KSl7bGV0IEk9Z1t5XTtBcnJheS5pc0FycmF5KEkpfHwoST1bSV0sZ1t5XT1JKSxJLnB1c2goQyl9ZWxzZSBnW3ldPUN9cGFyc2VQYXJlbnMoZyl7Y29uc3QgaD17fTtmb3IodGhpcy5jYXB0dXJlKCIoIik7IXRoaXMuY29uc3VtZU9wdGlvbmFs''@;'; put 'put ''KCIpIikmJnRoaXMucmVtYWluaW5nLmxlbmd0aD4wOyl7Y29uc3Qgdj1VaCh0aGlzLnJlbWFpbmluZykseT10aGlzLnJlbWFpbmluZ1t2Lmxlbmd0aF07aWYoIi8iIT09eSYmIikiIT09eSYmIjsiIT09eSl0aHJvdyBuZXcgZW4oNDAxMCwhMSk7bGV0IEM7di5pbmRleE9mKCI6Iik+LTE/KEM9''@;'; put 'put ''di5zbGljZSgwLHYuaW5kZXhPZigiOiIpKSx0aGlzLmNhcHR1cmUoQyksdGhpcy5jYXB0dXJlKCI6IikpOmcmJihDPWpsKTtjb25zdCBJPXRoaXMucGFyc2VDaGlsZHJlbigpO2hbQ109MT09PU9iamVjdC5rZXlzKEkpLmxlbmd0aD9JW2psXTpuZXcgY2woW10sSSksdGhpcy5jb25zdW1lT3B0''@;'; put 'put ''aW9uYWwoIi8vIil9cmV0dXJuIGh9cGVla1N0YXJ0c1dpdGgoZyl7cmV0dXJuIHRoaXMucmVtYWluaW5nLnN0YXJ0c1dpdGgoZyl9Y29uc3VtZU9wdGlvbmFsKGcpe3JldHVybiEhdGhpcy5wZWVrU3RhcnRzV2l0aChnKSYmKHRoaXMucmVtYWluaW5nPXRoaXMucmVtYWluaW5nLnN1YnN0cmlu''@;'; put 'put ''ZyhnLmxlbmd0aCksITApfWNhcHR1cmUoZyl7aWYoIXRoaXMuY29uc3VtZU9wdGlvbmFsKGcpKXRocm93IG5ldyBlbig0MDExLCExKX19ZnVuY3Rpb24gZEkoZCl7cmV0dXJuIGQuc2VnbWVudHMubGVuZ3RoPjA/bmV3IGNsKFtdLHtbamxdOmR9KTpkfWZ1bmN0aW9uIHBJKGQpe2NvbnN0IGc9''@;'; put 'put ''e307Zm9yKGNvbnN0IHYgb2YgT2JqZWN0LmtleXMoZC5jaGlsZHJlbikpe2NvbnN0IEM9cEkoZC5jaGlsZHJlblt2XSk7KEMuc2VnbWVudHMubGVuZ3RoPjB8fEMuaGFzQ2hpbGRyZW4oKSkmJihnW3ZdPUMpfXJldHVybiBmdW5jdGlvbiBfMGUoZCl7aWYoMT09PWQubnVtYmVyT2ZDaGlsZHJl''@;'; put 'put ''biYmZC5jaGlsZHJlbltqbF0pe2NvbnN0IGc9ZC5jaGlsZHJlbltqbF07cmV0dXJuIG5ldyBjbChkLnNlZ21lbnRzLmNvbmNhdChnLnNlZ21lbnRzKSxnLmNoaWxkcmVuKX1yZXR1cm4gZH0obmV3IGNsKGQuc2VnbWVudHMsZykpfWZ1bmN0aW9uIGc3KGQpe3JldHVybiBkIGluc3RhbmNlb2Yg''@;'; put 'put ''WTV9ZnVuY3Rpb24gUzBlKGQsZyxoLHYseSl7dmFyIEM7aWYoMD09PWgubGVuZ3RoKXJldHVybiBleShnLnJvb3QsZy5yb290LGcucm9vdCx2LHkpO2NvbnN0IFo9ZnVuY3Rpb24gJEYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkWzBdJiYxPT09ZC5sZW5ndGgmJiIvIj09PWRbMF0pcmV0dXJu''@;'; put 'put ''IG5ldyBUWSghMCwwLGQpO2xldCBnPTAsaD0hMTtjb25zdCB2PWQucmVkdWNlKCh5LEMsSSk9PntpZigib2JqZWN0Ij09dHlwZW9mIEMmJm51bGwhPUMpe2lmKEMub3V0bGV0cyl7Y29uc3QgWj17fTtyZXR1cm4gVGMoQy5vdXRsZXRzLCh1ZSxfZSk9PntaW19lXT0ic3RyaW5nIj09dHlwZW9m''@;'; put 'put ''IHVlP3VlLnNwbGl0KCIvIik6dWV9KSxbLi4ueSx7b3V0bGV0czpafV19aWYoQy5zZWdtZW50UGF0aClyZXR1cm5bLi4ueSxDLnNlZ21lbnRQYXRoXX1yZXR1cm4ic3RyaW5nIiE9dHlwZW9mIEM/Wy4uLnksQ106MD09PUk/KEMuc3BsaXQoIi8iKS5mb3JFYWNoKChaLHVlKT0+ezA9PXVlJiYi''@;'; put 'put ''LiI9PT1afHwoMD09dWUmJiIiPT09Wj9oPSEwOiIuLiI9PT1aP2crKzoiIiE9WiYmeS5wdXNoKFopKX0pLHkpOlsuLi55LENdfSxbXSk7cmV0dXJuIG5ldyBUWShoLGcsdil9KGgpO3JldHVybiBaLnRvUm9vdCgpP2V5KGcucm9vdCxnLnJvb3QsbmV3IGNsKFtdLHt9KSx2LHkpOmZ1bmN0aW9u''@;'; put 'put ''IHVlKEJlKXt2YXIgTmU7Y29uc3QgS2U9ZnVuY3Rpb24gTTBlKGQsZyxoLHYpe2lmKGQuaXNBYnNvbHV0ZSlyZXR1cm4gbmV3IHR5KGcucm9vdCwhMCwwKTtpZigtMT09PXYpcmV0dXJuIG5ldyB0eShoLGg9PT1nLnJvb3QsMCk7cmV0dXJuIGZ1bmN0aW9uIGVIKGQsZyxoKXtsZXQgdj1kLHk9''@;'; put 'put ''ZyxDPWg7Zm9yKDtDPnk7KXtpZihDLT15LHY9di5wYXJlbnQsIXYpdGhyb3cgbmV3IGVuKDQwMDUsITEpO3k9di5zZWdtZW50cy5sZW5ndGh9cmV0dXJuIG5ldyB0eSh2LCExLHktQyl9KGgsdisocUEoZC5jb21tYW5kc1swXSk/MDoxKSxkLm51bWJlck9mRG91YmxlRG90cyl9KFosZyxudWxs''@;'; put 'put ''PT09KE5lPWQuc25hcHNob3QpfHx2b2lkIDA9PT1OZT92b2lkIDA6TmUuX3VybFNlZ21lbnQsQmUpLHB0PUtlLnByb2Nlc3NDaGlsZHJlbj9ueShLZS5zZWdtZW50R3JvdXAsS2UuaW5kZXgsWi5jb21tYW5kcyk6bUkoS2Uuc2VnbWVudEdyb3VwLEtlLmluZGV4LFouY29tbWFuZHMpO3JldHVy''@;'; put 'put ''biBleShnLnJvb3QsS2Uuc2VnbWVudEdyb3VwLHB0LHYseSl9KG51bGw9PT0oQz1kLnNuYXBzaG90KXx8dm9pZCAwPT09Qz92b2lkIDA6Qy5fbGFzdFBhdGhJbmRleCl9ZnVuY3Rpb24gcUEoZCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBkJiZudWxsIT1kJiYhZC5vdXRsZXRzJiYhZC5zZWdt''@;'; put 'put ''ZW50UGF0aH1mdW5jdGlvbiBYQyhkKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGQmJm51bGwhPWQmJmQub3V0bGV0c31mdW5jdGlvbiBleShkLGcsaCx2LHkpe2xldCBJLEM9e307diYmVGModiwodWUsX2UpPT57Q1tfZV09QXJyYXkuaXNBcnJheSh1ZSk/dWUubWFwKEJlPT5gJHtCZX1gKTpg''@;'; put 'put ''JHt1ZX1gfSksST1kPT09Zz9oOmdJKGQsZyxoKTtjb25zdCBaPWRJKHBJKEkpKTtyZXR1cm4gbmV3IFk1KFosQyx5KX1mdW5jdGlvbiBnSShkLGcsaCl7Y29uc3Qgdj17fTtyZXR1cm4gVGMoZC5jaGlsZHJlbiwoeSxDKT0+e3ZbQ109eT09PWc/aDpnSSh5LGcsaCl9KSxuZXcgY2woZC5zZWdt''@;'; put 'put ''ZW50cyx2KX1jbGFzcyBUWXtjb25zdHJ1Y3RvcihnLGgsdil7aWYodGhpcy5pc0Fic29sdXRlPWcsdGhpcy5udW1iZXJPZkRvdWJsZURvdHM9aCx0aGlzLmNvbW1hbmRzPXYsZyYmdi5sZW5ndGg+MCYmcUEodlswXSkpdGhyb3cgbmV3IGVuKDQwMDMsITEpO2NvbnN0IHk9di5maW5kKFhDKTtp''@;'; put 'put ''Zih5JiZ5IT09V0YodikpdGhyb3cgbmV3IGVuKDQwMDQsITEpfXRvUm9vdCgpe3JldHVybiB0aGlzLmlzQWJzb2x1dGUmJjE9PT10aGlzLmNvbW1hbmRzLmxlbmd0aCYmIi8iPT10aGlzLmNvbW1hbmRzWzBdfX1jbGFzcyB0eXtjb25zdHJ1Y3RvcihnLGgsdil7dGhpcy5zZWdtZW50R3JvdXA9''@;'; put 'put ''Zyx0aGlzLnByb2Nlc3NDaGlsZHJlbj1oLHRoaXMuaW5kZXg9dn19ZnVuY3Rpb24gbUkoZCxnLGgpe2lmKGR8fChkPW5ldyBjbChbXSx7fSkpLDA9PT1kLnNlZ21lbnRzLmxlbmd0aCYmZC5oYXNDaGlsZHJlbigpKXJldHVybiBueShkLGcsaCk7Y29uc3Qgdj1mdW5jdGlvbiB0SChkLGcsaCl7''@;'; put 'put ''bGV0IHY9MCx5PWc7Y29uc3QgQz17bWF0Y2g6ITEscGF0aEluZGV4OjAsY29tbWFuZEluZGV4OjB9O2Zvcig7eTxkLnNlZ21lbnRzLmxlbmd0aDspe2lmKHY+PWgubGVuZ3RoKXJldHVybiBDO2NvbnN0IEk9ZC5zZWdtZW50c1t5XSxaPWhbdl07aWYoWEMoWikpYnJlYWs7Y29uc3QgdWU9YCR7''@;'; put 'put ''Wn1gLF9lPXY8aC5sZW5ndGgtMT9oW3YrMV06bnVsbDtpZih5PjAmJnZvaWQgMD09PXVlKWJyZWFrO2lmKHVlJiZfZSYmIm9iamVjdCI9PXR5cGVvZiBfZSYmdm9pZCAwPT09X2Uub3V0bGV0cyl7aWYoIUtDKHVlLF9lLEkpKXJldHVybiBDO3YrPTJ9ZWxzZXtpZighS0ModWUse30sSSkpcmV0''@;'; put 'put ''dXJuIEM7disrfXkrK31yZXR1cm57bWF0Y2g6ITAscGF0aEluZGV4OnksY29tbWFuZEluZGV4OnZ9fShkLGcsaCkseT1oLnNsaWNlKHYuY29tbWFuZEluZGV4KTtpZih2Lm1hdGNoJiZ2LnBhdGhJbmRleDxkLnNlZ21lbnRzLmxlbmd0aCl7Y29uc3QgQz1uZXcgY2woZC5zZWdtZW50cy5zbGlj''@;'; put 'put ''ZSgwLHYucGF0aEluZGV4KSx7fSk7cmV0dXJuIEMuY2hpbGRyZW5bamxdPW5ldyBjbChkLnNlZ21lbnRzLnNsaWNlKHYucGF0aEluZGV4KSxkLmNoaWxkcmVuKSxueShDLDAseSl9cmV0dXJuIHYubWF0Y2gmJjA9PT15Lmxlbmd0aD9uZXcgY2woZC5zZWdtZW50cyx7fSk6di5tYXRjaCYmIWQu''@;'; put 'put ''aGFzQ2hpbGRyZW4oKT92SShkLGcsaCk6di5tYXRjaD9ueShkLDAseSk6dkkoZCxnLGgpfWZ1bmN0aW9uIG55KGQsZyxoKXtpZigwPT09aC5sZW5ndGgpcmV0dXJuIG5ldyBjbChkLnNlZ21lbnRzLHt9KTt7Y29uc3Qgdj1mdW5jdGlvbiBFMGUoZCl7cmV0dXJuIFhDKGRbMF0pP2RbMF0ub3V0''@;'; put 'put ''bGV0czp7W2psXTpkfX0oaCkseT17fTtyZXR1cm4gVGModiwoQyxJKT0+eyJzdHJpbmciPT10eXBlb2YgQyYmKEM9W0NdKSxudWxsIT09QyYmKHlbSV09bUkoZC5jaGlsZHJlbltJXSxnLEMpKX0pLFRjKGQuY2hpbGRyZW4sKEMsSSk9Pnt2b2lkIDA9PT12W0ldJiYoeVtJXT1DKX0pLG5ldyBj''@;'; put 'put ''bChkLnNlZ21lbnRzLHkpfX1mdW5jdGlvbiB2SShkLGcsaCl7Y29uc3Qgdj1kLnNlZ21lbnRzLnNsaWNlKDAsZyk7bGV0IHk9MDtmb3IoO3k8aC5sZW5ndGg7KXtjb25zdCBDPWhbeV07aWYoWEMoQykpe2NvbnN0IHVlPUlZKEMub3V0bGV0cyk7cmV0dXJuIG5ldyBjbCh2LHVlKX1pZigwPT09''@;'; put 'put ''eSYmcUEoaFswXSkpe3YucHVzaChuZXcgVUMoZC5zZWdtZW50c1tnXS5wYXRoLG5IKGhbMF0pKSkseSsrO2NvbnRpbnVlfWNvbnN0IEk9WEMoQyk/Qy5vdXRsZXRzW2psXTpgJHtDfWAsWj15PGgubGVuZ3RoLTE/aFt5KzFdOm51bGw7SSYmWiYmcUEoWik/KHYucHVzaChuZXcgVUMoSSxuSCha''@;'; put 'put ''KSkpLHkrPTIpOih2LnB1c2gobmV3IFVDKEkse30pKSx5KyspfXJldHVybiBuZXcgY2wodix7fSl9ZnVuY3Rpb24gSVkoZCl7Y29uc3QgZz17fTtyZXR1cm4gVGMoZCwoaCx2KT0+eyJzdHJpbmciPT10eXBlb2YgaCYmKGg9W2hdKSxudWxsIT09aCYmKGdbdl09dkkobmV3IGNsKFtdLHt9KSww''@;'; put 'put ''LGgpKX0pLGd9ZnVuY3Rpb24gbkgoZCl7Y29uc3QgZz17fTtyZXR1cm4gVGMoZCwoaCx2KT0+Z1t2XT1gJHtofWApLGd9ZnVuY3Rpb24gS0MoZCxnLGgpe3JldHVybiBkPT1oLnBhdGgmJmxwKGcsaC5wYXJhbWV0ZXJzKX1jbGFzcyB1cHtjb25zdHJ1Y3RvcihnLGgpe3RoaXMuaWQ9Zyx0aGlz''@;'; put 'put ''LnVybD1ofX1jbGFzcyBBSSBleHRlbmRzIHVwe2NvbnN0cnVjdG9yKGcsaCx2PSJpbXBlcmF0aXZlIix5PW51bGwpe3N1cGVyKGcsaCksdGhpcy50eXBlPTAsdGhpcy5uYXZpZ2F0aW9uVHJpZ2dlcj12LHRoaXMucmVzdG9yZWRTdGF0ZT15fXRvU3RyaW5nKCl7cmV0dXJuYE5hdmlnYXRpb25T''@;'; put 'put ''dGFydChpZDogJHt0aGlzLmlkfSwgdXJsOiAnJHt0aGlzLnVybH0nKWB9fWNsYXNzIEc2IGV4dGVuZHMgdXB7Y29uc3RydWN0b3IoZyxoLHYpe3N1cGVyKGcsaCksdGhpcy51cmxBZnRlclJlZGlyZWN0cz12LHRoaXMudHlwZT0xfXRvU3RyaW5nKCl7cmV0dXJuYE5hdmlnYXRpb25FbmQoaWQ6''@;'; put 'put ''ICR7dGhpcy5pZH0sIHVybDogJyR7dGhpcy51cmx9JywgdXJsQWZ0ZXJSZWRpcmVjdHM6ICcke3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHN9JylgfX1jbGFzcyB5SSBleHRlbmRzIHVwe2NvbnN0cnVjdG9yKGcsaCx2LHkpe3N1cGVyKGcsaCksdGhpcy5yZWFzb249dix0aGlzLmNvZGU9eSx0aGlz''@;'; put 'put ''LnR5cGU9Mn10b1N0cmluZygpe3JldHVybmBOYXZpZ2F0aW9uQ2FuY2VsKGlkOiAke3RoaXMuaWR9LCB1cmw6ICcke3RoaXMudXJsfScpYH19Y2xhc3MgckggZXh0ZW5kcyB1cHtjb25zdHJ1Y3RvcihnLGgsdix5KXtzdXBlcihnLGgpLHRoaXMuZXJyb3I9dix0aGlzLnRhcmdldD15LHRoaXMu''@;'; put 'put ''dHlwZT0zfXRvU3RyaW5nKCl7cmV0dXJuYE5hdmlnYXRpb25FcnJvcihpZDogJHt0aGlzLmlkfSwgdXJsOiAnJHt0aGlzLnVybH0nLCBlcnJvcjogJHt0aGlzLmVycm9yfSlgfX1jbGFzcyBEWSBleHRlbmRzIHVwe2NvbnN0cnVjdG9yKGcsaCx2LHkpe3N1cGVyKGcsaCksdGhpcy51cmxBZnRl''@;'; put 'put ''clJlZGlyZWN0cz12LHRoaXMuc3RhdGU9eSx0aGlzLnR5cGU9NH10b1N0cmluZygpe3JldHVybmBSb3V0ZXNSZWNvZ25pemVkKGlkOiAke3RoaXMuaWR9LCB1cmw6ICcke3RoaXMudXJsfScsIHVybEFmdGVyUmVkaXJlY3RzOiAnJHt0aGlzLnVybEFmdGVyUmVkaXJlY3RzfScsIHN0YXRlOiAk''@;'; put 'put ''e3RoaXMuc3RhdGV9KWB9fWNsYXNzIHgwZSBleHRlbmRzIHVwe2NvbnN0cnVjdG9yKGcsaCx2LHkpe3N1cGVyKGcsaCksdGhpcy51cmxBZnRlclJlZGlyZWN0cz12LHRoaXMuc3RhdGU9eSx0aGlzLnR5cGU9N310b1N0cmluZygpe3JldHVybmBHdWFyZHNDaGVja1N0YXJ0KGlkOiAke3RoaXMu''@;'; put 'put ''aWR9LCB1cmw6ICcke3RoaXMudXJsfScsIHVybEFmdGVyUmVkaXJlY3RzOiAnJHt0aGlzLnVybEFmdGVyUmVkaXJlY3RzfScsIHN0YXRlOiAke3RoaXMuc3RhdGV9KWB9fWNsYXNzIGlIIGV4dGVuZHMgdXB7Y29uc3RydWN0b3IoZyxoLHYseSxDKXtzdXBlcihnLGgpLHRoaXMudXJsQWZ0ZXJS''@;'; put 'put ''ZWRpcmVjdHM9dix0aGlzLnN0YXRlPXksdGhpcy5zaG91bGRBY3RpdmF0ZT1DLHRoaXMudHlwZT04fXRvU3RyaW5nKCl7cmV0dXJuYEd1YXJkc0NoZWNrRW5kKGlkOiAke3RoaXMuaWR9LCB1cmw6ICcke3RoaXMudXJsfScsIHVybEFmdGVyUmVkaXJlY3RzOiAnJHt0aGlzLnVybEFmdGVyUmVk''@;'; put 'put ''aXJlY3RzfScsIHN0YXRlOiAke3RoaXMuc3RhdGV9LCBzaG91bGRBY3RpdmF0ZTogJHt0aGlzLnNob3VsZEFjdGl2YXRlfSlgfX1jbGFzcyBMWSBleHRlbmRzIHVwe2NvbnN0cnVjdG9yKGcsaCx2LHkpe3N1cGVyKGcsaCksdGhpcy51cmxBZnRlclJlZGlyZWN0cz12LHRoaXMuc3RhdGU9eSx0''@;'; put 'put ''aGlzLnR5cGU9NX10b1N0cmluZygpe3JldHVybmBSZXNvbHZlU3RhcnQoaWQ6ICR7dGhpcy5pZH0sIHVybDogJyR7dGhpcy51cmx9JywgdXJsQWZ0ZXJSZWRpcmVjdHM6ICcke3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHN9Jywgc3RhdGU6ICR7dGhpcy5zdGF0ZX0pYH19Y2xhc3MgVDBlIGV4dGVu''@;'; put 'put ''ZHMgdXB7Y29uc3RydWN0b3IoZyxoLHYseSl7c3VwZXIoZyxoKSx0aGlzLnVybEFmdGVyUmVkaXJlY3RzPXYsdGhpcy5zdGF0ZT15LHRoaXMudHlwZT02fXRvU3RyaW5nKCl7cmV0dXJuYFJlc29sdmVFbmQoaWQ6ICR7dGhpcy5pZH0sIHVybDogJyR7dGhpcy51cmx9JywgdXJsQWZ0ZXJSZWRp''@;'; put 'put ''cmVjdHM6ICcke3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHN9Jywgc3RhdGU6ICR7dGhpcy5zdGF0ZX0pYH19Y2xhc3MgSTBle2NvbnN0cnVjdG9yKGcpe3RoaXMucm91dGU9Zyx0aGlzLnR5cGU9OX10b1N0cmluZygpe3JldHVybmBSb3V0ZUNvbmZpZ0xvYWRTdGFydChwYXRoOiAke3RoaXMucm91''@;'; put 'put ''dGUucGF0aH0pYH19Y2xhc3MgJEN7Y29uc3RydWN0b3IoZyl7dGhpcy5yb3V0ZT1nLHRoaXMudHlwZT0xMH10b1N0cmluZygpe3JldHVybmBSb3V0ZUNvbmZpZ0xvYWRFbmQocGF0aDogJHt0aGlzLnJvdXRlLnBhdGh9KWB9fWNsYXNzIG9Ie2NvbnN0cnVjdG9yKGcpe3RoaXMuc25hcHNob3Q9''@;'; put 'put ''Zyx0aGlzLnR5cGU9MTF9dG9TdHJpbmcoKXtyZXR1cm5gQ2hpbGRBY3RpdmF0aW9uU3RhcnQocGF0aDogJyR7dGhpcy5zbmFwc2hvdC5yb3V0ZUNvbmZpZyYmdGhpcy5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5wYXRofHwiIn0nKWB9fWNsYXNzIE9Ze2NvbnN0cnVjdG9yKGcpe3RoaXMuc25hcHNo''@;'; put 'put ''b3Q9Zyx0aGlzLnR5cGU9MTJ9dG9TdHJpbmcoKXtyZXR1cm5gQ2hpbGRBY3RpdmF0aW9uRW5kKHBhdGg6ICcke3RoaXMuc25hcHNob3Qucm91dGVDb25maWcmJnRoaXMuc25hcHNob3Qucm91dGVDb25maWcucGF0aHx8IiJ9JylgfX1jbGFzcyBSWXtjb25zdHJ1Y3RvcihnKXt0aGlzLnNuYXBz''@;'; put 'put ''aG90PWcsdGhpcy50eXBlPTEzfXRvU3RyaW5nKCl7cmV0dXJuYEFjdGl2YXRpb25TdGFydChwYXRoOiAnJHt0aGlzLnNuYXBzaG90LnJvdXRlQ29uZmlnJiZ0aGlzLnNuYXBzaG90LnJvdXRlQ29uZmlnLnBhdGh8fCIifScpYH19Y2xhc3MgRDBle2NvbnN0cnVjdG9yKGcpe3RoaXMuc25hcHNo''@;'; put 'put ''b3Q9Zyx0aGlzLnR5cGU9MTR9dG9TdHJpbmcoKXtyZXR1cm5gQWN0aXZhdGlvbkVuZChwYXRoOiAnJHt0aGlzLnNuYXBzaG90LnJvdXRlQ29uZmlnJiZ0aGlzLnNuYXBzaG90LnJvdXRlQ29uZmlnLnBhdGh8fCIifScpYH19Y2xhc3Mgd0l7Y29uc3RydWN0b3IoZyxoLHYpe3RoaXMucm91dGVy''@;'; put 'put ''RXZlbnQ9Zyx0aGlzLnBvc2l0aW9uPWgsdGhpcy5hbmNob3I9dix0aGlzLnR5cGU9MTV9dG9TdHJpbmcoKXtyZXR1cm5gU2Nyb2xsKGFuY2hvcjogJyR7dGhpcy5hbmNob3J9JywgcG9zaXRpb246ICcke3RoaXMucG9zaXRpb24/YCR7dGhpcy5wb3NpdGlvblswXX0sICR7dGhpcy5wb3NpdGlv''@;'; put 'put ''blsxXX1gOm51bGx9JylgfX1jbGFzcyBiSXtjb25zdHJ1Y3RvcihnKXt0aGlzLl9yb290PWd9Z2V0IHJvb3QoKXtyZXR1cm4gdGhpcy5fcm9vdC52YWx1ZX1wYXJlbnQoZyl7Y29uc3QgaD10aGlzLnBhdGhGcm9tUm9vdChnKTtyZXR1cm4gaC5sZW5ndGg+MT9oW2gubGVuZ3RoLTJdOm51bGx9''@;'; put 'put ''Y2hpbGRyZW4oZyl7Y29uc3QgaD1yeShnLHRoaXMuX3Jvb3QpO3JldHVybiBoP2guY2hpbGRyZW4ubWFwKHY9PnYudmFsdWUpOltdfWZpcnN0Q2hpbGQoZyl7Y29uc3QgaD1yeShnLHRoaXMuX3Jvb3QpO3JldHVybiBoJiZoLmNoaWxkcmVuLmxlbmd0aD4wP2guY2hpbGRyZW5bMF0udmFsdWU6''@;'; put 'put ''bnVsbH1zaWJsaW5ncyhnKXtjb25zdCBoPWl5KGcsdGhpcy5fcm9vdCk7cmV0dXJuIGgubGVuZ3RoPDI/W106aFtoLmxlbmd0aC0yXS5jaGlsZHJlbi5tYXAoeT0+eS52YWx1ZSkuZmlsdGVyKHk9PnkhPT1nKX1wYXRoRnJvbVJvb3QoZyl7cmV0dXJuIGl5KGcsdGhpcy5fcm9vdCkubWFwKGg9''@;'; put 'put ''PmgudmFsdWUpfX1mdW5jdGlvbiByeShkLGcpe2lmKGQ9PT1nLnZhbHVlKXJldHVybiBnO2Zvcihjb25zdCBoIG9mIGcuY2hpbGRyZW4pe2NvbnN0IHY9cnkoZCxoKTtpZih2KXJldHVybiB2fXJldHVybiBudWxsfWZ1bmN0aW9uIGl5KGQsZyl7aWYoZD09PWcudmFsdWUpcmV0dXJuW2ddO2Zv''@;'; put 'put ''cihjb25zdCBoIG9mIGcuY2hpbGRyZW4pe2NvbnN0IHY9aXkoZCxoKTtpZih2Lmxlbmd0aClyZXR1cm4gdi51bnNoaWZ0KGcpLHZ9cmV0dXJuW119Y2xhc3MgVzZ7Y29uc3RydWN0b3IoZyxoKXt0aGlzLnZhbHVlPWcsdGhpcy5jaGlsZHJlbj1ofXRvU3RyaW5nKCl7cmV0dXJuYFRyZWVOb2Rl''@;'; put 'put ''KCR7dGhpcy52YWx1ZX0pYH19ZnVuY3Rpb24gY3AoZCl7Y29uc3QgZz17fTtyZXR1cm4gZCYmZC5jaGlsZHJlbi5mb3JFYWNoKGg9PmdbaC52YWx1ZS5vdXRsZXRdPWgpLGd9Y2xhc3MgQlkgZXh0ZW5kcyBiSXtjb25zdHJ1Y3RvcihnLGgpe3N1cGVyKGcpLHRoaXMuc25hcHNob3Q9aCxfSSh0''@;'; put 'put ''aGlzLGcpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuc25hcHNob3QudG9TdHJpbmcoKX19ZnVuY3Rpb24gUFkoZCxnKXtjb25zdCBoPWZ1bmN0aW9uIE8wZShkLGcpe2NvbnN0IEk9bmV3IHFDKFtdLHt9LHt9LCIiLHt9LGpsLGcsbnVsbCxkLnJvb3QsLTEse30pO3JldHVybiBuZXcgTlkoIiIs''@;'; put 'put ''bmV3IFc2KEksW10pKX0oZCxnKSx2PW5ldyBmcyhbbmV3IFVDKCIiLHt9KV0pLHk9bmV3IGZzKHt9KSxDPW5ldyBmcyh7fSksST1uZXcgZnMoe30pLFo9bmV3IGZzKCIiKSx1ZT1uZXcgUHUodix5LEksWixDLGpsLGcsaC5yb290KTtyZXR1cm4gdWUuc25hcHNob3Q9aC5yb290LG5ldyBCWShu''@;'; put 'put ''ZXcgVzYodWUsW10pLGgpfWNsYXNzIFB1e2NvbnN0cnVjdG9yKGcsaCx2LHksQyxJLFosdWUpe3RoaXMudXJsPWcsdGhpcy5wYXJhbXM9aCx0aGlzLnF1ZXJ5UGFyYW1zPXYsdGhpcy5mcmFnbWVudD15LHRoaXMuZGF0YT1DLHRoaXMub3V0bGV0PUksdGhpcy5jb21wb25lbnQ9Wix0aGlzLl9m''@;'; put 'put ''dXR1cmVTbmFwc2hvdD11ZX1nZXQgcm91dGVDb25maWcoKXtyZXR1cm4gdGhpcy5fZnV0dXJlU25hcHNob3Qucm91dGVDb25maWd9Z2V0IHJvb3QoKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUucm9vdH1nZXQgcGFyZW50KCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLnBhcmVudCh0aGlz''@;'; put 'put ''KX1nZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5maXJzdENoaWxkKHRoaXMpfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5jaGlsZHJlbih0aGlzKX1nZXQgcGF0aEZyb21Sb290KCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLnBhdGhG''@;'; put 'put ''cm9tUm9vdCh0aGlzKX1nZXQgcGFyYW1NYXAoKXtyZXR1cm4gdGhpcy5fcGFyYW1NYXB8fCh0aGlzLl9wYXJhbU1hcD10aGlzLnBhcmFtcy5waXBlKG10KGc9PmQ3KGcpKSkpLHRoaXMuX3BhcmFtTWFwfWdldCBxdWVyeVBhcmFtTWFwKCl7cmV0dXJuIHRoaXMuX3F1ZXJ5UGFyYW1NYXB8fCh0''@;'; put 'put ''aGlzLl9xdWVyeVBhcmFtTWFwPXRoaXMucXVlcnlQYXJhbXMucGlwZShtdChnPT5kNyhnKSkpKSx0aGlzLl9xdWVyeVBhcmFtTWFwfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuc25hcHNob3Q/dGhpcy5zbmFwc2hvdC50b1N0cmluZygpOmBGdXR1cmUoJHt0aGlzLl9mdXR1cmVTbmFwc2hvdH0p''@;'; put 'put ''YH19ZnVuY3Rpb24gRlkoZCxnPSJlbXB0eU9ubHkiKXtjb25zdCBoPWQucGF0aEZyb21Sb290O2xldCB2PTA7aWYoImFsd2F5cyIhPT1nKWZvcih2PWgubGVuZ3RoLTE7dj49MTspe2NvbnN0IHk9aFt2XSxDPWhbdi0xXTtpZih5LnJvdXRlQ29uZmlnJiYiIj09PXkucm91dGVDb25maWcucGF0''@;'; put 'put ''aCl2LS07ZWxzZXtpZihDLmNvbXBvbmVudClicmVhazt2LS19fXJldHVybiBmdW5jdGlvbiBIWShkKXtyZXR1cm4gZC5yZWR1Y2UoKGcsaCk9Pnt2YXIgdjtyZXR1cm57cGFyYW1zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxnLnBhcmFtcyksaC5wYXJhbXMpLGRhdGE6T2JqZWN0''@;'; put 'put ''LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGcuZGF0YSksaC5kYXRhKSxyZXNvbHZlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saC5kYXRhKSxnLnJlc29sdmUpLG51bGw9PT0odj1oLnJvdXRlQ29uZmlnKXx8dm9pZCAwPT09dj92''@;'; put 'put ''b2lkIDA6di5kYXRhKSxoLl9yZXNvbHZlZERhdGEpfX0se3BhcmFtczp7fSxkYXRhOnt9LHJlc29sdmU6e319KX0oaC5zbGljZSh2KSl9Y2xhc3MgcUN7Y29uc3RydWN0b3IoZyxoLHYseSxDLEksWix1ZSxfZSxCZSxOZSxLZSl7dGhpcy51cmw9Zyx0aGlzLnBhcmFtcz1oLHRoaXMucXVlcnlQ''@;'; put 'put ''YXJhbXM9dix0aGlzLmZyYWdtZW50PXksdGhpcy5kYXRhPUMsdGhpcy5vdXRsZXQ9SSx0aGlzLmNvbXBvbmVudD1aLHRoaXMucm91dGVDb25maWc9dWUsdGhpcy5fdXJsU2VnbWVudD1fZSx0aGlzLl9sYXN0UGF0aEluZGV4PUJlLHRoaXMuX2NvcnJlY3RlZExhc3RQYXRoSW5kZXg9bnVsbCE9''@;'; put 'put ''S2U/S2U6QmUsdGhpcy5fcmVzb2x2ZT1OZX1nZXQgcm9vdCgpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5yb290fWdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUucGFyZW50KHRoaXMpfWdldCBmaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLmZpcnN0''@;'; put 'put ''Q2hpbGQodGhpcyl9Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLmNoaWxkcmVuKHRoaXMpfWdldCBwYXRoRnJvbVJvb3QoKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUucGF0aEZyb21Sb290KHRoaXMpfWdldCBwYXJhbU1hcCgpe3JldHVybiB0aGlzLl9wYXJhbU1h''@;'; put 'put ''cHx8KHRoaXMuX3BhcmFtTWFwPWQ3KHRoaXMucGFyYW1zKSksdGhpcy5fcGFyYW1NYXB9Z2V0IHF1ZXJ5UGFyYW1NYXAoKXtyZXR1cm4gdGhpcy5fcXVlcnlQYXJhbU1hcHx8KHRoaXMuX3F1ZXJ5UGFyYW1NYXA9ZDcodGhpcy5xdWVyeVBhcmFtcykpLHRoaXMuX3F1ZXJ5UGFyYW1NYXB9dG9T''@;'; put 'put ''dHJpbmcoKXtyZXR1cm5gUm91dGUodXJsOicke3RoaXMudXJsLm1hcCh2PT52LnRvU3RyaW5nKCkpLmpvaW4oIi8iKX0nLCBwYXRoOicke3RoaXMucm91dGVDb25maWc/dGhpcy5yb3V0ZUNvbmZpZy5wYXRoOiIifScpYH19Y2xhc3MgTlkgZXh0ZW5kcyBiSXtjb25zdHJ1Y3RvcihnLGgpe3N1''@;'; put 'put ''cGVyKGgpLHRoaXMudXJsPWcsX0kodGhpcyxoKX10b1N0cmluZygpe3JldHVybiBWWSh0aGlzLl9yb290KX19ZnVuY3Rpb24gX0koZCxnKXtnLnZhbHVlLl9yb3V0ZXJTdGF0ZT1kLGcuY2hpbGRyZW4uZm9yRWFjaChoPT5fSShkLGgpKX1mdW5jdGlvbiBWWShkKXtjb25zdCBnPWQuY2hpbGRy''@;'; put 'put ''ZW4ubGVuZ3RoPjA/YCB7ICR7ZC5jaGlsZHJlbi5tYXAoVlkpLmpvaW4oIiwgIil9IH0gYDoiIjtyZXR1cm5gJHtkLnZhbHVlfSR7Z31gfWZ1bmN0aW9uIGFIKGQpe2lmKGQuc25hcHNob3Qpe2NvbnN0IGc9ZC5zbmFwc2hvdCxoPWQuX2Z1dHVyZVNuYXBzaG90O2Quc25hcHNob3Q9aCxscChn''@;'; put 'put ''LnF1ZXJ5UGFyYW1zLGgucXVlcnlQYXJhbXMpfHxkLnF1ZXJ5UGFyYW1zLm5leHQoaC5xdWVyeVBhcmFtcyksZy5mcmFnbWVudCE9PWguZnJhZ21lbnQmJmQuZnJhZ21lbnQubmV4dChoLmZyYWdtZW50KSxscChnLnBhcmFtcyxoLnBhcmFtcyl8fGQucGFyYW1zLm5leHQoaC5wYXJhbXMpLGZ1''@;'; put 'put ''bmN0aW9uIF9ZKGQsZyl7aWYoZC5sZW5ndGghPT1nLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGg9MDtoPGQubGVuZ3RoOysraClpZighbHAoZFtoXSxnW2hdKSlyZXR1cm4hMTtyZXR1cm4hMH0oZy51cmwsaC51cmwpfHxkLnVybC5uZXh0KGgudXJsKSxscChnLmRhdGEsaC5kYXRhKXx8ZC5k''@;'; put 'put ''YXRhLm5leHQoaC5kYXRhKX1lbHNlIGQuc25hcHNob3Q9ZC5fZnV0dXJlU25hcHNob3QsZC5kYXRhLm5leHQoZC5fZnV0dXJlU25hcHNob3QuZGF0YSl9ZnVuY3Rpb24gQ0koZCxnKXtjb25zdCBoPWxwKGQucGFyYW1zLGcucGFyYW1zKSYmZnVuY3Rpb24gdjBlKGQsZyl7cmV0dXJuIHA3KGQs''@;'; put 'put ''ZykmJmQuZXZlcnkoKGgsdik9PmxwKGgucGFyYW1ldGVycyxnW3ZdLnBhcmFtZXRlcnMpKX0oZC51cmwsZy51cmwpO3JldHVybiBoJiYhKCFkLnBhcmVudCE9IWcucGFyZW50KSYmKCFkLnBhcmVudHx8Q0koZC5wYXJlbnQsZy5wYXJlbnQpKX1mdW5jdGlvbiBveShkLGcsaCl7aWYoaCYmZC5z''@;'; put 'put ''aG91bGRSZXVzZVJvdXRlKGcudmFsdWUsaC52YWx1ZS5zbmFwc2hvdCkpe2NvbnN0IHY9aC52YWx1ZTt2Ll9mdXR1cmVTbmFwc2hvdD1nLnZhbHVlO2NvbnN0IHk9ZnVuY3Rpb24gUjBlKGQsZyxoKXtyZXR1cm4gZy5jaGlsZHJlbi5tYXAodj0+e2Zvcihjb25zdCB5IG9mIGguY2hpbGRyZW4p''@;'; put 'put ''aWYoZC5zaG91bGRSZXVzZVJvdXRlKHYudmFsdWUseS52YWx1ZS5zbmFwc2hvdCkpcmV0dXJuIG95KGQsdix5KTtyZXR1cm4gb3koZCx2KX0pfShkLGcsaCk7cmV0dXJuIG5ldyBXNih2LHkpfXtpZihkLnNob3VsZEF0dGFjaChnLnZhbHVlKSl7Y29uc3QgQz1kLnJldHJpZXZlKGcudmFsdWUp''@;'; put 'put ''O2lmKG51bGwhPT1DKXtjb25zdCBJPUMucm91dGU7cmV0dXJuIEkudmFsdWUuX2Z1dHVyZVNuYXBzaG90PWcudmFsdWUsSS5jaGlsZHJlbj1nLmNoaWxkcmVuLm1hcChaPT5veShkLFopKSxJfX1jb25zdCB2PWZ1bmN0aW9uIFpZKGQpe3JldHVybiBuZXcgUHUobmV3IGZzKGQudXJsKSxuZXcg''@;'; put 'put ''ZnMoZC5wYXJhbXMpLG5ldyBmcyhkLnF1ZXJ5UGFyYW1zKSxuZXcgZnMoZC5mcmFnbWVudCksbmV3IGZzKGQuZGF0YSksZC5vdXRsZXQsZC5jb21wb25lbnQsZCl9KGcudmFsdWUpLHk9Zy5jaGlsZHJlbi5tYXAoQz0+b3koZCxDKSk7cmV0dXJuIG5ldyBXNih2LHkpfX1jb25zdCBrST0ibmdO''@;'; put 'put ''YXZpZ2F0aW9uQ2FuY2VsaW5nRXJyb3IiO2Z1bmN0aW9uIGxIKGQsZyl7Y29uc3R7cmVkaXJlY3RUbzpoLG5hdmlnYXRpb25CZWhhdmlvck9wdGlvbnM6dn09ZzcoZyk/e3JlZGlyZWN0VG86ZyxuYXZpZ2F0aW9uQmVoYXZpb3JPcHRpb25zOnZvaWQgMH06Zyx5PXpZKCExLDAsZyk7cmV0dXJu''@;'; put 'put ''IHkudXJsPWgseS5uYXZpZ2F0aW9uQmVoYXZpb3JPcHRpb25zPXYseX1mdW5jdGlvbiB6WShkLGcsaCl7Y29uc3Qgdj1uZXcgRXJyb3IoIk5hdmlnYXRpb25DYW5jZWxpbmdFcnJvcjogIisoZHx8IiIpKTtyZXR1cm4gdltrSV09ITAsdi5jYW5jZWxsYXRpb25Db2RlPWcsaCYmKHYudXJsPWgp''@;'; put 'put ''LHZ9ZnVuY3Rpb24gR1koZCl7cmV0dXJuIHNIKGQpJiZnNyhkLnVybCl9ZnVuY3Rpb24gc0goZCl7cmV0dXJuIGQmJmRba0ldfWNsYXNzIEIwZXtjb25zdHJ1Y3Rvcigpe3RoaXMub3V0bGV0PW51bGwsdGhpcy5yb3V0ZT1udWxsLHRoaXMucmVzb2x2ZXI9bnVsbCx0aGlzLmluamVjdG9yPW51''@;'; put 'put ''bGwsdGhpcy5jaGlsZHJlbj1uZXcgZWssdGhpcy5hdHRhY2hSZWY9bnVsbH19Y2xhc3MgZWt7Y29uc3RydWN0b3IoKXt0aGlzLmNvbnRleHRzPW5ldyBNYXB9b25DaGlsZE91dGxldENyZWF0ZWQoZyxoKXtjb25zdCB2PXRoaXMuZ2V0T3JDcmVhdGVDb250ZXh0KGcpO3Yub3V0bGV0PWgsdGhp''@;'; put 'put ''cy5jb250ZXh0cy5zZXQoZyx2KX1vbkNoaWxkT3V0bGV0RGVzdHJveWVkKGcpe2NvbnN0IGg9dGhpcy5nZXRDb250ZXh0KGcpO2gmJihoLm91dGxldD1udWxsLGguYXR0YWNoUmVmPW51bGwpfW9uT3V0bGV0RGVhY3RpdmF0ZWQoKXtjb25zdCBnPXRoaXMuY29udGV4dHM7cmV0dXJuIHRoaXMu''@;'; put 'put ''Y29udGV4dHM9bmV3IE1hcCxnfW9uT3V0bGV0UmVBdHRhY2hlZChnKXt0aGlzLmNvbnRleHRzPWd9Z2V0T3JDcmVhdGVDb250ZXh0KGcpe2xldCBoPXRoaXMuZ2V0Q29udGV4dChnKTtyZXR1cm4gaHx8KGg9bmV3IEIwZSx0aGlzLmNvbnRleHRzLnNldChnLGgpKSxofWdldENvbnRleHQoZyl7''@;'; put 'put ''cmV0dXJuIHRoaXMuY29udGV4dHMuZ2V0KGcpfHxudWxsfX1jb25zdCBTST0hMTtsZXQgYXk9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEkpe3RoaXMucGFyZW50Q29udGV4dHM9aCx0aGlzLmxvY2F0aW9uPXYsdGhpcy5jaGFuZ2VEZXRlY3Rvcj1DLHRoaXMuZW52aXJvbm1l''@;'; put 'put ''bnRJbmplY3Rvcj1JLHRoaXMuYWN0aXZhdGVkPW51bGwsdGhpcy5fYWN0aXZhdGVkUm91dGU9bnVsbCx0aGlzLmFjdGl2YXRlRXZlbnRzPW5ldyBhcix0aGlzLmRlYWN0aXZhdGVFdmVudHM9bmV3IGFyLHRoaXMuYXR0YWNoRXZlbnRzPW5ldyBhcix0aGlzLmRldGFjaEV2ZW50cz1uZXcgYXIs''@;'; put 'put ''dGhpcy5uYW1lPXl8fGpsLGgub25DaGlsZE91dGxldENyZWF0ZWQodGhpcy5uYW1lLHRoaXMpfW5nT25EZXN0cm95KCl7dmFyIGg7KG51bGw9PT0oaD10aGlzLnBhcmVudENvbnRleHRzLmdldENvbnRleHQodGhpcy5uYW1lKSl8fHZvaWQgMD09PWg/dm9pZCAwOmgub3V0bGV0KT09PXRoaXMm''@;'; put 'put ''JnRoaXMucGFyZW50Q29udGV4dHMub25DaGlsZE91dGxldERlc3Ryb3llZCh0aGlzLm5hbWUpfW5nT25Jbml0KCl7aWYoIXRoaXMuYWN0aXZhdGVkKXtjb25zdCBoPXRoaXMucGFyZW50Q29udGV4dHMuZ2V0Q29udGV4dCh0aGlzLm5hbWUpO2gmJmgucm91dGUmJihoLmF0dGFjaFJlZj90aGlz''@;'; put 'put ''LmF0dGFjaChoLmF0dGFjaFJlZixoLnJvdXRlKTp0aGlzLmFjdGl2YXRlV2l0aChoLnJvdXRlLGguaW5qZWN0b3IpKX19Z2V0IGlzQWN0aXZhdGVkKCl7cmV0dXJuISF0aGlzLmFjdGl2YXRlZH1nZXQgY29tcG9uZW50KCl7aWYoIXRoaXMuYWN0aXZhdGVkKXRocm93IG5ldyBlbig0MDEyLFNJ''@;'; put 'put ''KTtyZXR1cm4gdGhpcy5hY3RpdmF0ZWQuaW5zdGFuY2V9Z2V0IGFjdGl2YXRlZFJvdXRlKCl7aWYoIXRoaXMuYWN0aXZhdGVkKXRocm93IG5ldyBlbig0MDEyLFNJKTtyZXR1cm4gdGhpcy5fYWN0aXZhdGVkUm91dGV9Z2V0IGFjdGl2YXRlZFJvdXRlRGF0YSgpe3JldHVybiB0aGlzLl9hY3Rp''@;'; put 'put ''dmF0ZWRSb3V0ZT90aGlzLl9hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhOnt9fWRldGFjaCgpe2lmKCF0aGlzLmFjdGl2YXRlZCl0aHJvdyBuZXcgZW4oNDAxMixTSSk7dGhpcy5sb2NhdGlvbi5kZXRhY2goKTtjb25zdCBoPXRoaXMuYWN0aXZhdGVkO3JldHVybiB0aGlzLmFjdGl2YXRl''@;'; put 'put ''ZD1udWxsLHRoaXMuX2FjdGl2YXRlZFJvdXRlPW51bGwsdGhpcy5kZXRhY2hFdmVudHMuZW1pdChoLmluc3RhbmNlKSxofWF0dGFjaChoLHYpe3RoaXMuYWN0aXZhdGVkPWgsdGhpcy5fYWN0aXZhdGVkUm91dGU9dix0aGlzLmxvY2F0aW9uLmluc2VydChoLmhvc3RWaWV3KSx0aGlzLmF0dGFj''@;'; put 'put ''aEV2ZW50cy5lbWl0KGguaW5zdGFuY2UpfWRlYWN0aXZhdGUoKXtpZih0aGlzLmFjdGl2YXRlZCl7Y29uc3QgaD10aGlzLmNvbXBvbmVudDt0aGlzLmFjdGl2YXRlZC5kZXN0cm95KCksdGhpcy5hY3RpdmF0ZWQ9bnVsbCx0aGlzLl9hY3RpdmF0ZWRSb3V0ZT1udWxsLHRoaXMuZGVhY3RpdmF0''@;'; put 'put ''ZUV2ZW50cy5lbWl0KGgpfX1hY3RpdmF0ZVdpdGgoaCx2KXtpZih0aGlzLmlzQWN0aXZhdGVkKXRocm93IG5ldyBlbig0MDEzLFNJKTt0aGlzLl9hY3RpdmF0ZWRSb3V0ZT1oO2NvbnN0IHk9dGhpcy5sb2NhdGlvbixJPWguX2Z1dHVyZVNuYXBzaG90LmNvbXBvbmVudCxaPXRoaXMucGFyZW50''@;'; put 'put ''Q29udGV4dHMuZ2V0T3JDcmVhdGVDb250ZXh0KHRoaXMubmFtZSkuY2hpbGRyZW4sdWU9bmV3IFdZKGgsWix5LmluamVjdG9yKTtpZih2JiZmdW5jdGlvbiBQMGUoZCl7cmV0dXJuISFkLnJlc29sdmVDb21wb25lbnRGYWN0b3J5fSh2KSl7Y29uc3QgX2U9di5yZXNvbHZlQ29tcG9uZW50RmFj''@;'; put 'put ''dG9yeShJKTt0aGlzLmFjdGl2YXRlZD15LmNyZWF0ZUNvbXBvbmVudChfZSx5Lmxlbmd0aCx1ZSl9ZWxzZSB0aGlzLmFjdGl2YXRlZD15LmNyZWF0ZUNvbXBvbmVudChJLHtpbmRleDp5Lmxlbmd0aCxpbmplY3Rvcjp1ZSxlbnZpcm9ubWVudEluamVjdG9yOm51bGwhPXY/djp0aGlzLmVudmly''@;'; put 'put ''b25tZW50SW5qZWN0b3J9KTt0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpLHRoaXMuYWN0aXZhdGVFdmVudHMuZW1pdCh0aGlzLmFjdGl2YXRlZC5pbnN0YW5jZSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGVrKSxLdChVaSks''@;'; put 'put ''ZzMoIm5hbWUiKSxLdChkMSksS3QoRTMpKX0sZC5cdTAyNzVkaXI9V2koe3R5cGU6ZCxzZWxlY3RvcnM6W1sicm91dGVyLW91dGxldCJdXSxvdXRwdXRzOnthY3RpdmF0ZUV2ZW50czoiYWN0aXZhdGUiLGRlYWN0aXZhdGVFdmVudHM6ImRlYWN0aXZhdGUiLGF0dGFjaEV2ZW50czoiYXR0YWNo''@;'; put 'put ''IixkZXRhY2hFdmVudHM6ImRldGFjaCJ9LGV4cG9ydEFzOlsib3V0bGV0Il19KSxkfSkoKTtjbGFzcyBXWXtjb25zdHJ1Y3RvcihnLGgsdil7dGhpcy5yb3V0ZT1nLHRoaXMuY2hpbGRDb250ZXh0cz1oLHRoaXMucGFyZW50PXZ9Z2V0KGcsaCl7cmV0dXJuIGc9PT1QdT90aGlzLnJvdXRlOmc9''@;'; put 'put ''PT1laz90aGlzLmNoaWxkQ29udGV4dHM6dGhpcy5wYXJlbnQuZ2V0KGcsaCl9fWxldCB1SD0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1sibmctY29tcG9uZW50''@;'; put 'put ''Il1dLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiZDcigwLCJyb3V0ZXItb3V0bGV0Iil9LGRlcGVuZGVuY2llczpbYXldLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpO2Z1bmN0aW9uIFlZKGQsZyl7dmFyIGg7cmV0dXJuIGQucHJvdmlkZXJzJiYhZC5faW5qZWN0''@;'; put 'put ''b3ImJihkLl9pbmplY3Rvcj10NyhkLnByb3ZpZGVycyxnLGBSb3V0ZTogJHtkLnBhdGh9YCkpLG51bGwhPT0oaD1kLl9pbmplY3RvcikmJnZvaWQgMCE9PWg/aDpnfWZ1bmN0aW9uIGZIKGQpe2NvbnN0IGc9ZC5jaGlsZHJlbiYmZC5jaGlsZHJlbi5tYXAoZkgpLGg9Zz9PYmplY3QuYXNzaWdu''@;'; put 'put ''KE9iamVjdC5hc3NpZ24oe30sZCkse2NoaWxkcmVuOmd9KTpPYmplY3QuYXNzaWduKHt9LGQpO3JldHVybiFoLmNvbXBvbmVudCYmIWgubG9hZENvbXBvbmVudCYmKGd8fGgubG9hZENoaWxkcmVuKSYmaC5vdXRsZXQmJmgub3V0bGV0IT09amwmJihoLmNvbXBvbmVudD11SCksaH1mdW5jdGlv''@;'; put 'put ''biBRaChkKXtyZXR1cm4gZC5vdXRsZXR8fGpsfWZ1bmN0aW9uIHRrKGQsZyl7Y29uc3QgaD1kLmZpbHRlcih2PT5RaCh2KT09PWcpO3JldHVybiBoLnB1c2goLi4uZC5maWx0ZXIodj0+UWgodikhPT1nKSksaH1mdW5jdGlvbiBoSChkKXt2YXIgZztpZighZClyZXR1cm4gbnVsbDtpZihudWxs''@;'; put 'put ''IT09KGc9ZC5yb3V0ZUNvbmZpZykmJnZvaWQgMCE9PWcmJmcuX2luamVjdG9yKXJldHVybiBkLnJvdXRlQ29uZmlnLl9pbmplY3Rvcjtmb3IobGV0IGg9ZC5wYXJlbnQ7aDtoPWgucGFyZW50KXtjb25zdCB2PWgucm91dGVDb25maWc7aWYobnVsbCE9diYmdi5fbG9hZGVkSW5qZWN0b3IpcmV0''@;'; put 'put ''dXJuIHYuX2xvYWRlZEluamVjdG9yO2lmKG51bGwhPXYmJnYuX2luamVjdG9yKXJldHVybiB2Ll9pbmplY3Rvcn1yZXR1cm4gbnVsbH1jbGFzcyBRWXtjb25zdHJ1Y3RvcihnLGgsdix5KXt0aGlzLnJvdXRlUmV1c2VTdHJhdGVneT1nLHRoaXMuZnV0dXJlU3RhdGU9aCx0aGlzLmN1cnJTdGF0''@;'; put 'put ''ZT12LHRoaXMuZm9yd2FyZEV2ZW50PXl9YWN0aXZhdGUoZyl7Y29uc3QgaD10aGlzLmZ1dHVyZVN0YXRlLl9yb290LHY9dGhpcy5jdXJyU3RhdGU/dGhpcy5jdXJyU3RhdGUuX3Jvb3Q6bnVsbDt0aGlzLmRlYWN0aXZhdGVDaGlsZFJvdXRlcyhoLHYsZyksYUgodGhpcy5mdXR1cmVTdGF0ZS5y''@;'; put 'put ''b290KSx0aGlzLmFjdGl2YXRlQ2hpbGRSb3V0ZXMoaCx2LGcpfWRlYWN0aXZhdGVDaGlsZFJvdXRlcyhnLGgsdil7Y29uc3QgeT1jcChoKTtnLmNoaWxkcmVuLmZvckVhY2goQz0+e2NvbnN0IEk9Qy52YWx1ZS5vdXRsZXQ7dGhpcy5kZWFjdGl2YXRlUm91dGVzKEMseVtJXSx2KSxkZWxldGUg''@;'; put 'put ''eVtJXX0pLFRjKHksKEMsSSk9Pnt0aGlzLmRlYWN0aXZhdGVSb3V0ZUFuZEl0c0NoaWxkcmVuKEMsdil9KX1kZWFjdGl2YXRlUm91dGVzKGcsaCx2KXtjb25zdCB5PWcudmFsdWUsQz1oP2gudmFsdWU6bnVsbDtpZih5PT09QylpZih5LmNvbXBvbmVudCl7Y29uc3QgST12LmdldENvbnRleHQo''@;'; put 'put ''eS5vdXRsZXQpO0kmJnRoaXMuZGVhY3RpdmF0ZUNoaWxkUm91dGVzKGcsaCxJLmNoaWxkcmVuKX1lbHNlIHRoaXMuZGVhY3RpdmF0ZUNoaWxkUm91dGVzKGcsaCx2KTtlbHNlIEMmJnRoaXMuZGVhY3RpdmF0ZVJvdXRlQW5kSXRzQ2hpbGRyZW4oaCx2KX1kZWFjdGl2YXRlUm91dGVBbmRJdHND''@;'; put 'put ''aGlsZHJlbihnLGgpe2cudmFsdWUuY29tcG9uZW50JiZ0aGlzLnJvdXRlUmV1c2VTdHJhdGVneS5zaG91bGREZXRhY2goZy52YWx1ZS5zbmFwc2hvdCk/dGhpcy5kZXRhY2hBbmRTdG9yZVJvdXRlU3VidHJlZShnLGgpOnRoaXMuZGVhY3RpdmF0ZVJvdXRlQW5kT3V0bGV0KGcsaCl9ZGV0YWNo''@;'; put 'put ''QW5kU3RvcmVSb3V0ZVN1YnRyZWUoZyxoKXtjb25zdCB2PWguZ2V0Q29udGV4dChnLnZhbHVlLm91dGxldCkseT12JiZnLnZhbHVlLmNvbXBvbmVudD92LmNoaWxkcmVuOmgsQz1jcChnKTtmb3IoY29uc3QgSSBvZiBPYmplY3Qua2V5cyhDKSl0aGlzLmRlYWN0aXZhdGVSb3V0ZUFuZEl0c0No''@;'; put 'put ''aWxkcmVuKENbSV0seSk7aWYodiYmdi5vdXRsZXQpe2NvbnN0IEk9di5vdXRsZXQuZGV0YWNoKCksWj12LmNoaWxkcmVuLm9uT3V0bGV0RGVhY3RpdmF0ZWQoKTt0aGlzLnJvdXRlUmV1c2VTdHJhdGVneS5zdG9yZShnLnZhbHVlLnNuYXBzaG90LHtjb21wb25lbnRSZWY6SSxyb3V0ZTpnLGNv''@;'; put 'put ''bnRleHRzOlp9KX19ZGVhY3RpdmF0ZVJvdXRlQW5kT3V0bGV0KGcsaCl7Y29uc3Qgdj1oLmdldENvbnRleHQoZy52YWx1ZS5vdXRsZXQpLHk9diYmZy52YWx1ZS5jb21wb25lbnQ/di5jaGlsZHJlbjpoLEM9Y3AoZyk7Zm9yKGNvbnN0IEkgb2YgT2JqZWN0LmtleXMoQykpdGhpcy5kZWFjdGl2''@;'; put 'put ''YXRlUm91dGVBbmRJdHNDaGlsZHJlbihDW0ldLHkpO3YmJnYub3V0bGV0JiYodi5vdXRsZXQuZGVhY3RpdmF0ZSgpLHYuY2hpbGRyZW4ub25PdXRsZXREZWFjdGl2YXRlZCgpLHYuYXR0YWNoUmVmPW51bGwsdi5yZXNvbHZlcj1udWxsLHYucm91dGU9bnVsbCl9YWN0aXZhdGVDaGlsZFJvdXRl''@;'; put 'put ''cyhnLGgsdil7Y29uc3QgeT1jcChoKTtnLmNoaWxkcmVuLmZvckVhY2goQz0+e3RoaXMuYWN0aXZhdGVSb3V0ZXMoQyx5W0MudmFsdWUub3V0bGV0XSx2KSx0aGlzLmZvcndhcmRFdmVudChuZXcgRDBlKEMudmFsdWUuc25hcHNob3QpKX0pLGcuY2hpbGRyZW4ubGVuZ3RoJiZ0aGlzLmZvcndh''@;'; put 'put ''cmRFdmVudChuZXcgT1koZy52YWx1ZS5zbmFwc2hvdCkpfWFjdGl2YXRlUm91dGVzKGcsaCx2KXt2YXIgeTtjb25zdCBDPWcudmFsdWUsST1oP2gudmFsdWU6bnVsbDtpZihhSChDKSxDPT09SSlpZihDLmNvbXBvbmVudCl7Y29uc3QgWj12LmdldE9yQ3JlYXRlQ29udGV4dChDLm91dGxldCk7''@;'; put 'put ''dGhpcy5hY3RpdmF0ZUNoaWxkUm91dGVzKGcsaCxaLmNoaWxkcmVuKX1lbHNlIHRoaXMuYWN0aXZhdGVDaGlsZFJvdXRlcyhnLGgsdik7ZWxzZSBpZihDLmNvbXBvbmVudCl7Y29uc3QgWj12LmdldE9yQ3JlYXRlQ29udGV4dChDLm91dGxldCk7aWYodGhpcy5yb3V0ZVJldXNlU3RyYXRlZ3ku''@;'; put 'put ''c2hvdWxkQXR0YWNoKEMuc25hcHNob3QpKXtjb25zdCB1ZT10aGlzLnJvdXRlUmV1c2VTdHJhdGVneS5yZXRyaWV2ZShDLnNuYXBzaG90KTt0aGlzLnJvdXRlUmV1c2VTdHJhdGVneS5zdG9yZShDLnNuYXBzaG90LG51bGwpLFouY2hpbGRyZW4ub25PdXRsZXRSZUF0dGFjaGVkKHVlLmNvbnRl''@;'; put 'put ''eHRzKSxaLmF0dGFjaFJlZj11ZS5jb21wb25lbnRSZWYsWi5yb3V0ZT11ZS5yb3V0ZS52YWx1ZSxaLm91dGxldCYmWi5vdXRsZXQuYXR0YWNoKHVlLmNvbXBvbmVudFJlZix1ZS5yb3V0ZS52YWx1ZSksYUgodWUucm91dGUudmFsdWUpLHRoaXMuYWN0aXZhdGVDaGlsZFJvdXRlcyhnLG51bGws''@;'; put 'put ''Wi5jaGlsZHJlbil9ZWxzZXtjb25zdCB1ZT1oSChDLnNuYXBzaG90KSxfZT1udWxsIT09KHk9bnVsbD09dWU/dm9pZCAwOnVlLmdldChTZCkpJiZ2b2lkIDAhPT15P3k6bnVsbDtaLmF0dGFjaFJlZj1udWxsLFoucm91dGU9QyxaLnJlc29sdmVyPV9lLFouaW5qZWN0b3I9dWUsWi5vdXRsZXQm''@;'; put 'put ''Jloub3V0bGV0LmFjdGl2YXRlV2l0aChDLFouaW5qZWN0b3IpLHRoaXMuYWN0aXZhdGVDaGlsZFJvdXRlcyhnLG51bGwsWi5jaGlsZHJlbil9fWVsc2UgdGhpcy5hY3RpdmF0ZUNoaWxkUm91dGVzKGcsbnVsbCx2KX19Y2xhc3MgZEh7Y29uc3RydWN0b3IoZyl7dGhpcy5wYXRoPWcsdGhpcy5y''@;'; put 'put ''b3V0ZT10aGlzLnBhdGhbdGhpcy5wYXRoLmxlbmd0aC0xXX19Y2xhc3Mgbmt7Y29uc3RydWN0b3IoZyxoKXt0aGlzLmNvbXBvbmVudD1nLHRoaXMucm91dGU9aH19ZnVuY3Rpb24gSlkoZCxnLGgpe2NvbnN0IHY9ZC5fcm9vdDtyZXR1cm4gbHkodixnP2cuX3Jvb3Q6bnVsbCxoLFt2LnZhbHVl''@;'; put 'put ''XSl9ZnVuY3Rpb24gTUkoZCxnLGgpe2NvbnN0IHY9aEgoZyk7cmV0dXJuKG51bGwhPXY/djpoKS5nZXQoZCl9ZnVuY3Rpb24gbHkoZCxnLGgsdix5PXtjYW5EZWFjdGl2YXRlQ2hlY2tzOltdLGNhbkFjdGl2YXRlQ2hlY2tzOltdfSl7Y29uc3QgQz1jcChnKTtyZXR1cm4gZC5jaGlsZHJlbi5m''@;'; put 'put ''b3JFYWNoKEk9PnsoZnVuY3Rpb24gS1koZCxnLGgsdix5PXtjYW5EZWFjdGl2YXRlQ2hlY2tzOltdLGNhbkFjdGl2YXRlQ2hlY2tzOltdfSl7Y29uc3QgQz1kLnZhbHVlLEk9Zz9nLnZhbHVlOm51bGwsWj1oP2guZ2V0Q29udGV4dChkLnZhbHVlLm91dGxldCk6bnVsbDtpZihJJiZDLnJvdXRl''@;'; put 'put ''Q29uZmlnPT09SS5yb3V0ZUNvbmZpZyl7Y29uc3QgdWU9ZnVuY3Rpb24gJFkoZCxnLGgpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBoKXJldHVybiBoKGQsZyk7c3dpdGNoKGgpe2Nhc2UicGF0aFBhcmFtc0NoYW5nZSI6cmV0dXJuIXA3KGQudXJsLGcudXJsKTtjYXNlInBhdGhQYXJhbXNPclF1''@;'; put 'put ''ZXJ5UGFyYW1zQ2hhbmdlIjpyZXR1cm4hcDcoZC51cmwsZy51cmwpfHwhbHAoZC5xdWVyeVBhcmFtcyxnLnF1ZXJ5UGFyYW1zKTtjYXNlImFsd2F5cyI6cmV0dXJuITA7Y2FzZSJwYXJhbXNPclF1ZXJ5UGFyYW1zQ2hhbmdlIjpyZXR1cm4hQ0koZCxnKXx8IWxwKGQucXVlcnlQYXJhbXMsZy5x''@;'; put 'put ''dWVyeVBhcmFtcyk7ZGVmYXVsdDpyZXR1cm4hQ0koZCxnKX19KEksQyxDLnJvdXRlQ29uZmlnLnJ1bkd1YXJkc0FuZFJlc29sdmVycyk7dWU/eS5jYW5BY3RpdmF0ZUNoZWNrcy5wdXNoKG5ldyBkSCh2KSk6KEMuZGF0YT1JLmRhdGEsQy5fcmVzb2x2ZWREYXRhPUkuX3Jlc29sdmVkRGF0YSks''@;'; put 'put ''bHkoZCxnLEMuY29tcG9uZW50P1o/Wi5jaGlsZHJlbjpudWxsOmgsdix5KSx1ZSYmWiYmWi5vdXRsZXQmJloub3V0bGV0LmlzQWN0aXZhdGVkJiZ5LmNhbkRlYWN0aXZhdGVDaGVja3MucHVzaChuZXcgbmsoWi5vdXRsZXQuY29tcG9uZW50LEkpKX1lbHNlIEkmJnN5KGcsWix5KSx5LmNhbkFj''@;'; put 'put ''dGl2YXRlQ2hlY2tzLnB1c2gobmV3IGRIKHYpKSxseShkLG51bGwsQy5jb21wb25lbnQ/Wj9aLmNoaWxkcmVuOm51bGw6aCx2LHkpfSkoSSxDW0kudmFsdWUub3V0bGV0XSxoLHYuY29uY2F0KFtJLnZhbHVlXSkseSksZGVsZXRlIENbSS52YWx1ZS5vdXRsZXRdfSksVGMoQywoSSxaKT0+c3ko''@;'; put 'put ''SSxoLmdldENvbnRleHQoWikseSkpLHl9ZnVuY3Rpb24gc3koZCxnLGgpe2NvbnN0IHY9Y3AoZCkseT1kLnZhbHVlO1RjKHYsKEMsSSk9PntzeShDLHkuY29tcG9uZW50P2c/Zy5jaGlsZHJlbi5nZXRDb250ZXh0KEkpOm51bGw6ZyxoKX0pLGguY2FuRGVhY3RpdmF0ZUNoZWNrcy5wdXNoKG5l''@;'; put 'put ''dyBuayh5LmNvbXBvbmVudCYmZyYmZy5vdXRsZXQmJmcub3V0bGV0LmlzQWN0aXZhdGVkP2cub3V0bGV0LmNvbXBvbmVudDpudWxsLHkpKX1mdW5jdGlvbiB1eShkKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZH1jb25zdCBjeT1TeW1ib2woIklOSVRJQUxfVkFMVUUiKTtmdW5jdGlvbiBt''@;'; put 'put ''Nygpe3JldHVybiBZaChkPT5vSShkLm1hcChnPT5nLnBpcGUoSDUoMSksTjUoY3kpKSkpLnBpcGUobXQoZz0+e2Zvcihjb25zdCBoIG9mIGcpaWYoITAhPT1oKXtpZihoPT09Y3kpcmV0dXJuIGN5O2lmKCExPT09aHx8aCBpbnN0YW5jZW9mIFk1KXJldHVybiBofXJldHVybiEwfSksTzIoZz0+''@;'; put 'put ''ZyE9PWN5KSxINSgxKSkpfWZ1bmN0aW9uIGxVKGQpe3JldHVybiBmdW5jdGlvbiBUKC4uLmQpe3JldHVybiBTKGQpfSh5YShnPT57aWYoZzcoZykpdGhyb3cgbEgoMCxnKX0pLG10KGc9PiEwPT09ZykpfWNvbnN0IGdIPXttYXRjaGVkOiExLGNvbnN1bWVkU2VnbWVudHM6W10scmVtYWluaW5n''@;'; put 'put ''U2VnbWVudHM6W10scGFyYW1ldGVyczp7fSxwb3NpdGlvbmFsUGFyYW1TZWdtZW50czp7fX07ZnVuY3Rpb24gbUgoZCxnLGgsdix5KXtjb25zdCBDPUVJKGQsZyxoKTtyZXR1cm4gQy5tYXRjaGVkP2Z1bmN0aW9uIEowZShkLGcsaCx2KXtjb25zdCB5PWcuY2FuTWF0Y2g7cmV0dXJuIHkmJjAh''@;'; put 'put ''PT15Lmxlbmd0aD9hYSh5Lm1hcChJPT57Y29uc3QgWj1kLmdldChJKSx1ZT1mdW5jdGlvbiB6MGUoZCl7cmV0dXJuIGQmJnV5KGQuY2FuTWF0Y2gpfShaKT9aLmNhbk1hdGNoKGcsaCk6WihnLGgpO3JldHVybiBCdSh1ZSl9KSkucGlwZShtNygpLGxVKCkpOmFhKCEwKX0odj1ZWShnLHYpLGcs''@;'; put 'put ''aCkucGlwZShtdChJPT4hMD09PUk/QzpPYmplY3QuYXNzaWduKHt9LGdIKSkpOmFhKEMpfWZ1bmN0aW9uIEVJKGQsZyxoKXt2YXIgdjtpZigiIj09PWcucGF0aClyZXR1cm4iZnVsbCI9PT1nLnBhdGhNYXRjaCYmKGQuaGFzQ2hpbGRyZW4oKXx8aC5sZW5ndGg+MCk/T2JqZWN0LmFzc2lnbih7''@;'; put 'put ''fSxnSCk6e21hdGNoZWQ6ITAsY29uc3VtZWRTZWdtZW50czpbXSxyZW1haW5pbmdTZWdtZW50czpoLHBhcmFtZXRlcnM6e30scG9zaXRpb25hbFBhcmFtU2VnbWVudHM6e319O2NvbnN0IEM9KGcubWF0Y2hlcnx8YlkpKGgsZCxnKTtpZighQylyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxnSCk7''@;'; put 'put ''Y29uc3QgST17fTtUYyhDLnBvc1BhcmFtcywodWUsX2UpPT57SVtfZV09dWUucGF0aH0pO2NvbnN0IFo9Qy5jb25zdW1lZC5sZW5ndGg+MD9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sSSksQy5jb25zdW1lZFtDLmNvbnN1bWVkLmxlbmd0aC0xXS5wYXJhbWV0ZXJzKTpJO3JldHVy''@;'; put 'put ''bnttYXRjaGVkOiEwLGNvbnN1bWVkU2VnbWVudHM6Qy5jb25zdW1lZCxyZW1haW5pbmdTZWdtZW50czpoLnNsaWNlKEMuY29uc3VtZWQubGVuZ3RoKSxwYXJhbWV0ZXJzOloscG9zaXRpb25hbFBhcmFtU2VnbWVudHM6bnVsbCE9PSh2PUMucG9zUGFyYW1zKSYmdm9pZCAwIT09dj92Ont9fX1m''@;'; put 'put ''dW5jdGlvbiB4SShkLGcsaCx2LHk9ImNvcnJlY3RlZCIpe2lmKGgubGVuZ3RoPjAmJmZ1bmN0aW9uIEswZShkLGcsaCl7cmV0dXJuIGguc29tZSh2PT5USShkLGcsdikmJlFoKHYpIT09amwpfShkLGgsdikpe2NvbnN0IEk9bmV3IGNsKGcsZnVuY3Rpb24gc1UoZCxnLGgsdil7Y29uc3QgeT17''@;'; put 'put ''fTt5W2psXT12LHYuX3NvdXJjZVNlZ21lbnQ9ZCx2Ll9zZWdtZW50SW5kZXhTaGlmdD1nLmxlbmd0aDtmb3IoY29uc3QgQyBvZiBoKWlmKCIiPT09Qy5wYXRoJiZRaChDKSE9PWpsKXtjb25zdCBJPW5ldyBjbChbXSx7fSk7SS5fc291cmNlU2VnbWVudD1kLEkuX3NlZ21lbnRJbmRleFNoaWZ0''@;'; put 'put ''PWcubGVuZ3RoLHlbUWgoQyldPUl9cmV0dXJuIHl9KGQsZyx2LG5ldyBjbChoLGQuY2hpbGRyZW4pKSk7cmV0dXJuIEkuX3NvdXJjZVNlZ21lbnQ9ZCxJLl9zZWdtZW50SW5kZXhTaGlmdD1nLmxlbmd0aCx7c2VnbWVudEdyb3VwOkksc2xpY2VkU2VnbWVudHM6W119fWlmKDA9PT1oLmxlbmd0''@;'; put 'put ''aCYmZnVuY3Rpb24gJDBlKGQsZyxoKXtyZXR1cm4gaC5zb21lKHY9PlRJKGQsZyx2KSl9KGQsaCx2KSl7Y29uc3QgST1uZXcgY2woZC5zZWdtZW50cyxmdW5jdGlvbiBYMGUoZCxnLGgsdix5LEMpe2NvbnN0IEk9e307Zm9yKGNvbnN0IFogb2YgdilpZihUSShkLGgsWikmJiF5W1FoKFopXSl7''@;'; put 'put ''Y29uc3QgdWU9bmV3IGNsKFtdLHt9KTt1ZS5fc291cmNlU2VnbWVudD1kLHVlLl9zZWdtZW50SW5kZXhTaGlmdD0ibGVnYWN5Ij09PUM/ZC5zZWdtZW50cy5sZW5ndGg6Zy5sZW5ndGgsSVtRaChaKV09dWV9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx5KSxJKX0oZCxn''@;'; put 'put ''LGgsdixkLmNoaWxkcmVuLHkpKTtyZXR1cm4gSS5fc291cmNlU2VnbWVudD1kLEkuX3NlZ21lbnRJbmRleFNoaWZ0PWcubGVuZ3RoLHtzZWdtZW50R3JvdXA6SSxzbGljZWRTZWdtZW50czpofX1jb25zdCBDPW5ldyBjbChkLnNlZ21lbnRzLGQuY2hpbGRyZW4pO3JldHVybiBDLl9zb3VyY2VT''@;'; put 'put ''ZWdtZW50PWQsQy5fc2VnbWVudEluZGV4U2hpZnQ9Zy5sZW5ndGgse3NlZ21lbnRHcm91cDpDLHNsaWNlZFNlZ21lbnRzOmh9fWZ1bmN0aW9uIFRJKGQsZyxoKXtyZXR1cm4oIShkLmhhc0NoaWxkcmVuKCl8fGcubGVuZ3RoPjApfHwiZnVsbCIhPT1oLnBhdGhNYXRjaCkmJiIiPT09aC5wYXRo''@;'; put 'put ''fWZ1bmN0aW9uIHVVKGQsZyxoLHYpe3JldHVybiEhKFFoKGQpPT09dnx8diE9PWpsJiZUSShnLGgsZCkpJiYoIioqIj09PWQucGF0aHx8RUkoZyxkLGgpLm1hdGNoZWQpfWZ1bmN0aW9uIEpoKGQsZyxoKXtyZXR1cm4gMD09PWcubGVuZ3RoJiYhZC5jaGlsZHJlbltoXX1jb25zdCBpaz0hMTtj''@;'; put 'put ''bGFzcyBmeXtjb25zdHJ1Y3RvcihnKXt0aGlzLnNlZ21lbnRHcm91cD1nfHxudWxsfX1jbGFzcyBoeXtjb25zdHJ1Y3RvcihnKXt0aGlzLnVybFRyZWU9Z319ZnVuY3Rpb24gZHkoZCl7cmV0dXJuIFFBKG5ldyBmeShkKSl9ZnVuY3Rpb24gY1UoZCl7cmV0dXJuIFFBKG5ldyBoeShkKSl9Y2xh''@;'; put 'put ''c3MgZW9le2NvbnN0cnVjdG9yKGcsaCx2LHksQyl7dGhpcy5pbmplY3Rvcj1nLHRoaXMuY29uZmlnTG9hZGVyPWgsdGhpcy51cmxTZXJpYWxpemVyPXYsdGhpcy51cmxUcmVlPXksdGhpcy5jb25maWc9Qyx0aGlzLmFsbG93UmVkaXJlY3RzPSEwfWFwcGx5KCl7Y29uc3QgZz14SSh0aGlzLnVy''@;'; put 'put ''bFRyZWUucm9vdCxbXSxbXSx0aGlzLmNvbmZpZykuc2VnbWVudEdyb3VwLGg9bmV3IGNsKGcuc2VnbWVudHMsZy5jaGlsZHJlbik7cmV0dXJuIHRoaXMuZXhwYW5kU2VnbWVudEdyb3VwKHRoaXMuaW5qZWN0b3IsdGhpcy5jb25maWcsaCxqbCkucGlwZShtdChDPT50aGlzLmNyZWF0ZVVybFRy''@;'; put 'put ''ZWUocEkoQyksdGhpcy51cmxUcmVlLnF1ZXJ5UGFyYW1zLHRoaXMudXJsVHJlZS5mcmFnbWVudCkpKS5waXBlKFo1KEM9PntpZihDIGluc3RhbmNlb2YgaHkpcmV0dXJuIHRoaXMuYWxsb3dSZWRpcmVjdHM9ITEsdGhpcy5tYXRjaChDLnVybFRyZWUpO3Rocm93IEMgaW5zdGFuY2VvZiBmeT90''@;'; put 'put ''aGlzLm5vTWF0Y2hFcnJvcihDKTpDfSkpfW1hdGNoKGcpe3JldHVybiB0aGlzLmV4cGFuZFNlZ21lbnRHcm91cCh0aGlzLmluamVjdG9yLHRoaXMuY29uZmlnLGcucm9vdCxqbCkucGlwZShtdCh5PT50aGlzLmNyZWF0ZVVybFRyZWUocEkoeSksZy5xdWVyeVBhcmFtcyxnLmZyYWdtZW50KSkp''@;'; put 'put ''LnBpcGUoWjUoeT0+e3Rocm93IHkgaW5zdGFuY2VvZiBmeT90aGlzLm5vTWF0Y2hFcnJvcih5KTp5fSkpfW5vTWF0Y2hFcnJvcihnKXtyZXR1cm4gbmV3IGVuKDQwMDIsaWspfWNyZWF0ZVVybFRyZWUoZyxoLHYpe2NvbnN0IHk9ZEkoZyk7cmV0dXJuIG5ldyBZNSh5LGgsdil9ZXhwYW5kU2Vn''@;'; put 'put ''bWVudEdyb3VwKGcsaCx2LHkpe3JldHVybiAwPT09di5zZWdtZW50cy5sZW5ndGgmJnYuaGFzQ2hpbGRyZW4oKT90aGlzLmV4cGFuZENoaWxkcmVuKGcsaCx2KS5waXBlKG10KEM9Pm5ldyBjbChbXSxDKSkpOnRoaXMuZXhwYW5kU2VnbWVudChnLHYsaCx2LnNlZ21lbnRzLHksITApfWV4cGFu''@;'; put 'put ''ZENoaWxkcmVuKGcsaCx2KXtjb25zdCB5PVtdO2Zvcihjb25zdCBDIG9mIE9iamVjdC5rZXlzKHYuY2hpbGRyZW4pKSJwcmltYXJ5Ij09PUM/eS51bnNoaWZ0KEMpOnkucHVzaChDKTtyZXR1cm4gZG4oeSkucGlwZShWNShDPT57Y29uc3QgST12LmNoaWxkcmVuW0NdLFo9dGsoaCxDKTtyZXR1''@;'; put 'put ''cm4gdGhpcy5leHBhbmRTZWdtZW50R3JvdXAoZyxaLEksQykucGlwZShtdCh1ZT0+KHtzZWdtZW50OnVlLG91dGxldDpDfSkpKX0pLGxJKChDLEkpPT4oQ1tJLm91dGxldF09SS5zZWdtZW50LEMpLHt9KSxBWSgpKX1leHBhbmRTZWdtZW50KGcsaCx2LHksQyxJKXtyZXR1cm4gZG4odikucGlw''@;'; put 'put ''ZShWNShaPT50aGlzLmV4cGFuZFNlZ21lbnRBZ2FpbnN0Um91dGUoZyxoLHYsWix5LEMsSSkucGlwZShaNShfZT0+e2lmKF9lIGluc3RhbmNlb2YgZnkpcmV0dXJuIGFhKG51bGwpO3Rocm93IF9lfSkpKSxXMyhaPT4hIVopLFo1KChaLHVlKT0+e2lmKFogaW5zdGFuY2VvZiBKQXx8IkVtcHR5''@;'; put 'put ''RXJyb3IiPT09Wi5uYW1lKXJldHVybiBKaChoLHksQyk/YWEobmV3IGNsKFtdLHt9KSk6ZHkoaCk7dGhyb3cgWn0pKX1leHBhbmRTZWdtZW50QWdhaW5zdFJvdXRlKGcsaCx2LHksQyxJLFope3JldHVybiB1VSh5LGgsQyxJKT92b2lkIDA9PT15LnJlZGlyZWN0VG8/dGhpcy5tYXRjaFNlZ21l''@;'; put 'put ''bnRBZ2FpbnN0Um91dGUoZyxoLHksQyxJKTpaJiZ0aGlzLmFsbG93UmVkaXJlY3RzP3RoaXMuZXhwYW5kU2VnbWVudEFnYWluc3RSb3V0ZVVzaW5nUmVkaXJlY3QoZyxoLHYseSxDLEkpOmR5KGgpOmR5KGgpfWV4cGFuZFNlZ21lbnRBZ2FpbnN0Um91dGVVc2luZ1JlZGlyZWN0KGcsaCx2LHks''@;'; put 'put ''QyxJKXtyZXR1cm4iKioiPT09eS5wYXRoP3RoaXMuZXhwYW5kV2lsZENhcmRXaXRoUGFyYW1zQWdhaW5zdFJvdXRlVXNpbmdSZWRpcmVjdChnLHYseSxJKTp0aGlzLmV4cGFuZFJlZ3VsYXJTZWdtZW50QWdhaW5zdFJvdXRlVXNpbmdSZWRpcmVjdChnLGgsdix5LEMsSSl9ZXhwYW5kV2lsZENh''@;'; put 'put ''cmRXaXRoUGFyYW1zQWdhaW5zdFJvdXRlVXNpbmdSZWRpcmVjdChnLGgsdix5KXtjb25zdCBDPXRoaXMuYXBwbHlSZWRpcmVjdENvbW1hbmRzKFtdLHYucmVkaXJlY3RUbyx7fSk7cmV0dXJuIHYucmVkaXJlY3RUby5zdGFydHNXaXRoKCIvIik/Y1UoQyk6dGhpcy5saW5lcmFsaXplU2VnbWVu''@;'; put 'put ''dHModixDKS5waXBlKHNyKEk9Pntjb25zdCBaPW5ldyBjbChJLHt9KTtyZXR1cm4gdGhpcy5leHBhbmRTZWdtZW50KGcsWixoLEkseSwhMSl9KSl9ZXhwYW5kUmVndWxhclNlZ21lbnRBZ2FpbnN0Um91dGVVc2luZ1JlZGlyZWN0KGcsaCx2LHksQyxJKXtjb25zdHttYXRjaGVkOlosY29uc3Vt''@;'; put 'put ''ZWRTZWdtZW50czp1ZSxyZW1haW5pbmdTZWdtZW50czpfZSxwb3NpdGlvbmFsUGFyYW1TZWdtZW50czpCZX09RUkoaCx5LEMpO2lmKCFaKXJldHVybiBkeShoKTtjb25zdCBOZT10aGlzLmFwcGx5UmVkaXJlY3RDb21tYW5kcyh1ZSx5LnJlZGlyZWN0VG8sQmUpO3JldHVybiB5LnJlZGlyZWN0''@;'; put 'put ''VG8uc3RhcnRzV2l0aCgiLyIpP2NVKE5lKTp0aGlzLmxpbmVyYWxpemVTZWdtZW50cyh5LE5lKS5waXBlKHNyKEtlPT50aGlzLmV4cGFuZFNlZ21lbnQoZyxoLHYsS2UuY29uY2F0KF9lKSxJLCExKSkpfW1hdGNoU2VnbWVudEFnYWluc3RSb3V0ZShnLGgsdix5LEMpe3JldHVybiIqKiI9PT12''@;'; put 'put ''LnBhdGg/KGc9WVkodixnKSx2LmxvYWRDaGlsZHJlbj8odi5fbG9hZGVkUm91dGVzP2FhKHtyb3V0ZXM6di5fbG9hZGVkUm91dGVzLGluamVjdG9yOnYuX2xvYWRlZEluamVjdG9yfSk6dGhpcy5jb25maWdMb2FkZXIubG9hZENoaWxkcmVuKGcsdikpLnBpcGUobXQoWj0+KHYuX2xvYWRlZFJv''@;'; put 'put ''dXRlcz1aLnJvdXRlcyx2Ll9sb2FkZWRJbmplY3Rvcj1aLmluamVjdG9yLG5ldyBjbCh5LHt9KSkpKTphYShuZXcgY2woeSx7fSkpKTptSChoLHYseSxnKS5waXBlKFloKCh7bWF0Y2hlZDpJLGNvbnN1bWVkU2VnbWVudHM6WixyZW1haW5pbmdTZWdtZW50czp1ZX0pPT57dmFyIF9lO3JldHVy''@;'; put 'put ''biBJPyhnPW51bGwhPT0oX2U9di5faW5qZWN0b3IpJiZ2b2lkIDAhPT1fZT9fZTpnLHRoaXMuZ2V0Q2hpbGRDb25maWcoZyx2LHkpLnBpcGUoc3IoTmU9Pnt2YXIgS2U7Y29uc3QgcHQ9bnVsbCE9PShLZT1OZS5pbmplY3RvcikmJnZvaWQgMCE9PUtlP0tlOmcsT3Q9TmUucm91dGVzLHtzZWdt''@;'; put 'put ''ZW50R3JvdXA6JHQsc2xpY2VkU2VnbWVudHM6Zm59PXhJKGgsWix1ZSxPdCksTG49bmV3IGNsKCR0LnNlZ21lbnRzLCR0LmNoaWxkcmVuKTtpZigwPT09Zm4ubGVuZ3RoJiZMbi5oYXNDaGlsZHJlbigpKXJldHVybiB0aGlzLmV4cGFuZENoaWxkcmVuKHB0LE90LExuKS5waXBlKG10KHdyPT5u''@;'; put 'put ''ZXcgY2woWix3cikpKTtpZigwPT09T3QubGVuZ3RoJiYwPT09Zm4ubGVuZ3RoKXJldHVybiBhYShuZXcgY2woWix7fSkpO2NvbnN0IGlyPVFoKHYpPT09QztyZXR1cm4gdGhpcy5leHBhbmRTZWdtZW50KHB0LExuLE90LGZuLGlyP2psOkMsITApLnBpcGUobXQoU3I9Pm5ldyBjbChaLmNvbmNh''@;'; put 'put ''dChTci5zZWdtZW50cyksU3IuY2hpbGRyZW4pKSl9KSkpOmR5KGgpfSkpfWdldENoaWxkQ29uZmlnKGcsaCx2KXtyZXR1cm4gaC5jaGlsZHJlbj9hYSh7cm91dGVzOmguY2hpbGRyZW4saW5qZWN0b3I6Z30pOmgubG9hZENoaWxkcmVuP3ZvaWQgMCE9PWguX2xvYWRlZFJvdXRlcz9hYSh7cm91''@;'; put 'put ''dGVzOmguX2xvYWRlZFJvdXRlcyxpbmplY3RvcjpoLl9sb2FkZWRJbmplY3Rvcn0pOmZ1bmN0aW9uIGFVKGQsZyxoLHYpe2NvbnN0IHk9Zy5jYW5Mb2FkO3JldHVybiB2b2lkIDA9PT15fHwwPT09eS5sZW5ndGg/YWEoITApOmFhKHkubWFwKEk9Pntjb25zdCBaPWQuZ2V0KEkpLHVlPWZ1bmN0''@;'; put 'put ''aW9uIHJrKGQpe3JldHVybiBkJiZ1eShkLmNhbkxvYWQpfShaKT9aLmNhbkxvYWQoZyxoKTpaKGcsaCk7cmV0dXJuIEJ1KHVlKX0pKS5waXBlKG03KCksbFUoKSl9KGcsaCx2KS5waXBlKHNyKHk9Pnk/dGhpcy5jb25maWdMb2FkZXIubG9hZENoaWxkcmVuKGcsaCkucGlwZSh5YShDPT57aC5f''@;'; put 'put ''bG9hZGVkUm91dGVzPUMucm91dGVzLGguX2xvYWRlZEluamVjdG9yPUMuaW5qZWN0b3J9KSk6ZnVuY3Rpb24gQUgoZCl7cmV0dXJuIFFBKHpZKGlrLDMpKX0oKSkpOmFhKHtyb3V0ZXM6W10saW5qZWN0b3I6Z30pfWxpbmVyYWxpemVTZWdtZW50cyhnLGgpe2xldCB2PVtdLHk9aC5yb290O2Zv''@;'; put 'put ''cig7Oyl7aWYodj12LmNvbmNhdCh5LnNlZ21lbnRzKSwwPT09eS5udW1iZXJPZkNoaWxkcmVuKXJldHVybiBhYSh2KTtpZih5Lm51bWJlck9mQ2hpbGRyZW4+MXx8IXkuY2hpbGRyZW5bamxdKXJldHVybiBRQShuZXcgZW4oNGUzLGlrKSk7eT15LmNoaWxkcmVuW2psXX19YXBwbHlSZWRpcmVj''@;'; put 'put ''dENvbW1hbmRzKGcsaCx2KXtyZXR1cm4gdGhpcy5hcHBseVJlZGlyZWN0Q3JlYXRlVXJsVHJlZShoLHRoaXMudXJsU2VyaWFsaXplci5wYXJzZShoKSxnLHYpfWFwcGx5UmVkaXJlY3RDcmVhdGVVcmxUcmVlKGcsaCx2LHkpe2NvbnN0IEM9dGhpcy5jcmVhdGVTZWdtZW50R3JvdXAoZyxoLnJv''@;'; put 'put ''b3Qsdix5KTtyZXR1cm4gbmV3IFk1KEMsdGhpcy5jcmVhdGVRdWVyeVBhcmFtcyhoLnF1ZXJ5UGFyYW1zLHRoaXMudXJsVHJlZS5xdWVyeVBhcmFtcyksaC5mcmFnbWVudCl9Y3JlYXRlUXVlcnlQYXJhbXMoZyxoKXtjb25zdCB2PXt9O3JldHVybiBUYyhnLCh5LEMpPT57aWYoInN0cmluZyI9''@;'; put 'put ''PXR5cGVvZiB5JiZ5LnN0YXJ0c1dpdGgoIjoiKSl7Y29uc3QgWj15LnN1YnN0cmluZygxKTt2W0NdPWhbWl19ZWxzZSB2W0NdPXl9KSx2fWNyZWF0ZVNlZ21lbnRHcm91cChnLGgsdix5KXtjb25zdCBDPXRoaXMuY3JlYXRlU2VnbWVudHMoZyxoLnNlZ21lbnRzLHYseSk7bGV0IEk9e307cmV0''@;'; put 'put ''dXJuIFRjKGguY2hpbGRyZW4sKFosdWUpPT57SVt1ZV09dGhpcy5jcmVhdGVTZWdtZW50R3JvdXAoZyxaLHYseSl9KSxuZXcgY2woQyxJKX1jcmVhdGVTZWdtZW50cyhnLGgsdix5KXtyZXR1cm4gaC5tYXAoQz0+Qy5wYXRoLnN0YXJ0c1dpdGgoIjoiKT90aGlzLmZpbmRQb3NQYXJhbShnLEMs''@;'; put 'put ''eSk6dGhpcy5maW5kT3JSZXR1cm4oQyx2KSl9ZmluZFBvc1BhcmFtKGcsaCx2KXtjb25zdCB5PXZbaC5wYXRoLnN1YnN0cmluZygxKV07aWYoIXkpdGhyb3cgbmV3IGVuKDQwMDEsaWspO3JldHVybiB5fWZpbmRPclJldHVybihnLGgpe2xldCB2PTA7Zm9yKGNvbnN0IHkgb2YgaCl7aWYoeS5w''@;'; put 'put ''YXRoPT09Zy5wYXRoKXJldHVybiBoLnNwbGljZSh2KSx5O3YrK31yZXR1cm4gZ319Y2xhc3MgdG9le31jbGFzcyBpb2V7Y29uc3RydWN0b3IoZyxoLHYseSxDLEksWix1ZSl7dGhpcy5pbmplY3Rvcj1nLHRoaXMucm9vdENvbXBvbmVudFR5cGU9aCx0aGlzLmNvbmZpZz12LHRoaXMudXJsVHJl''@;'; put 'put ''ZT15LHRoaXMudXJsPUMsdGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5PUksdGhpcy5yZWxhdGl2ZUxpbmtSZXNvbHV0aW9uPVosdGhpcy51cmxTZXJpYWxpemVyPXVlfXJlY29nbml6ZSgpe2NvbnN0IGc9eEkodGhpcy51cmxUcmVlLnJvb3QsW10sW10sdGhpcy5jb25maWcuZmlsdGVy''@;'; put 'put ''KGg9PnZvaWQgMD09PWgucmVkaXJlY3RUbyksdGhpcy5yZWxhdGl2ZUxpbmtSZXNvbHV0aW9uKS5zZWdtZW50R3JvdXA7cmV0dXJuIHRoaXMucHJvY2Vzc1NlZ21lbnRHcm91cCh0aGlzLmluamVjdG9yLHRoaXMuY29uZmlnLGcsamwpLnBpcGUobXQoaD0+e2lmKG51bGw9PT1oKXJldHVybiBu''@;'; put 'put ''dWxsO2NvbnN0IHY9bmV3IHFDKFtdLE9iamVjdC5mcmVlemUoe30pLE9iamVjdC5mcmVlemUoT2JqZWN0LmFzc2lnbih7fSx0aGlzLnVybFRyZWUucXVlcnlQYXJhbXMpKSx0aGlzLnVybFRyZWUuZnJhZ21lbnQse30samwsdGhpcy5yb290Q29tcG9uZW50VHlwZSxudWxsLHRoaXMudXJsVHJl''@;'; put 'put ''ZS5yb290LC0xLHt9KSx5PW5ldyBXNih2LGgpLEM9bmV3IE5ZKHRoaXMudXJsLHkpO3JldHVybiB0aGlzLmluaGVyaXRQYXJhbXNBbmREYXRhKEMuX3Jvb3QpLEN9KSl9aW5oZXJpdFBhcmFtc0FuZERhdGEoZyl7Y29uc3QgaD1nLnZhbHVlLHY9RlkoaCx0aGlzLnBhcmFtc0luaGVyaXRhbmNl''@;'; put 'put ''U3RyYXRlZ3kpO2gucGFyYW1zPU9iamVjdC5mcmVlemUodi5wYXJhbXMpLGguZGF0YT1PYmplY3QuZnJlZXplKHYuZGF0YSksZy5jaGlsZHJlbi5mb3JFYWNoKHk9PnRoaXMuaW5oZXJpdFBhcmFtc0FuZERhdGEoeSkpfXByb2Nlc3NTZWdtZW50R3JvdXAoZyxoLHYseSl7cmV0dXJuIDA9PT12''@;'; put 'put ''LnNlZ21lbnRzLmxlbmd0aCYmdi5oYXNDaGlsZHJlbigpP3RoaXMucHJvY2Vzc0NoaWxkcmVuKGcsaCx2KTp0aGlzLnByb2Nlc3NTZWdtZW50KGcsaCx2LHYuc2VnbWVudHMseSl9cHJvY2Vzc0NoaWxkcmVuKGcsaCx2KXtyZXR1cm4gZG4oT2JqZWN0LmtleXModi5jaGlsZHJlbikpLnBpcGUo''@;'; put 'put ''VjUoeT0+e2NvbnN0IEM9di5jaGlsZHJlblt5XSxJPXRrKGgseSk7cmV0dXJuIHRoaXMucHJvY2Vzc1NlZ21lbnRHcm91cChnLEksQyx5KX0pLGxJKCh5LEMpPT55JiZDPyh5LnB1c2goLi4uQykseSk6bnVsbCksZnVuY3Rpb24gYzBlKGQsZz0hMSl7cmV0dXJuIGg9PmgubGlmdChuZXcgZjBl''@;'; put 'put ''KGQsZykpfSh5PT5udWxsIT09eSksaDcobnVsbCksQVkoKSxtdCh5PT57aWYobnVsbD09PXkpcmV0dXJuIG51bGw7Y29uc3QgQz1oVSh5KTtyZXR1cm4gZnVuY3Rpb24gREkoZCl7ZC5zb3J0KChnLGgpPT5nLnZhbHVlLm91dGxldD09PWpsPy0xOmgudmFsdWUub3V0bGV0PT09amw/MTpnLnZh''@;'; put 'put ''bHVlLm91dGxldC5sb2NhbGVDb21wYXJlKGgudmFsdWUub3V0bGV0KSl9KEMpLEN9KSl9cHJvY2Vzc1NlZ21lbnQoZyxoLHYseSxDKXtyZXR1cm4gZG4oaCkucGlwZShWNShJPT57dmFyIFo7cmV0dXJuIHRoaXMucHJvY2Vzc1NlZ21lbnRBZ2FpbnN0Um91dGUobnVsbCE9PShaPUkuX2luamVj''@;'; put 'put ''dG9yKSYmdm9pZCAwIT09Wj9aOmcsSSx2LHksQyl9KSxXMyhJPT4hIUkpLFo1KEk9PntpZihJIGluc3RhbmNlb2YgSkEpcmV0dXJuIEpoKHYseSxDKT9hYShbXSk6YWEobnVsbCk7dGhyb3cgSX0pKX1wcm9jZXNzU2VnbWVudEFnYWluc3RSb3V0ZShnLGgsdix5LEMpe3ZhciBJLFo7aWYoaC5y''@;'; put 'put ''ZWRpcmVjdFRvfHwhdVUoaCx2LHksQykpcmV0dXJuIGFhKG51bGwpO2xldCB1ZTtpZigiKioiPT09aC5wYXRoKXtjb25zdCBfZT15Lmxlbmd0aD4wP1dGKHkpLnBhcmFtZXRlcnM6e30sQmU9YkgodikreS5sZW5ndGg7dWU9YWEoe3NuYXBzaG90Om5ldyBxQyh5LF9lLE9iamVjdC5mcmVlemUo''@;'; put 'put ''T2JqZWN0LmFzc2lnbih7fSx0aGlzLnVybFRyZWUucXVlcnlQYXJhbXMpKSx0aGlzLnVybFRyZWUuZnJhZ21lbnQsTEkoaCksUWgoaCksbnVsbCE9PShaPW51bGwhPT0oST1oLmNvbXBvbmVudCkmJnZvaWQgMCE9PUk/STpoLl9sb2FkZWRDb21wb25lbnQpJiZ2b2lkIDAhPT1aP1o6bnVsbCxo''@;'; put 'put ''LHdIKHYpLEJlLGRVKGgpLEJlKSxjb25zdW1lZFNlZ21lbnRzOltdLHJlbWFpbmluZ1NlZ21lbnRzOltdfSl9ZWxzZSB1ZT1tSCh2LGgseSxnKS5waXBlKG10KCh7bWF0Y2hlZDpfZSxjb25zdW1lZFNlZ21lbnRzOkJlLHJlbWFpbmluZ1NlZ21lbnRzOk5lLHBhcmFtZXRlcnM6S2V9KT0+e3Zh''@;'; put 'put ''ciBwdCxPdDtpZighX2UpcmV0dXJuIG51bGw7Y29uc3QgJHQ9YkgodikrQmUubGVuZ3RoO3JldHVybntzbmFwc2hvdDpuZXcgcUMoQmUsS2UsT2JqZWN0LmZyZWV6ZShPYmplY3QuYXNzaWduKHt9LHRoaXMudXJsVHJlZS5xdWVyeVBhcmFtcykpLHRoaXMudXJsVHJlZS5mcmFnbWVudCxMSSho''@;'; put 'put ''KSxRaChoKSxudWxsIT09KE90PW51bGwhPT0ocHQ9aC5jb21wb25lbnQpJiZ2b2lkIDAhPT1wdD9wdDpoLl9sb2FkZWRDb21wb25lbnQpJiZ2b2lkIDAhPT1PdD9PdDpudWxsLGgsd0godiksJHQsZFUoaCksJHQpLGNvbnN1bWVkU2VnbWVudHM6QmUscmVtYWluaW5nU2VnbWVudHM6TmV9fSkp''@;'; put 'put ''O3JldHVybiB1ZS5waXBlKFloKF9lPT57dmFyIEJlLE5lO2lmKG51bGw9PT1fZSlyZXR1cm4gYWEobnVsbCk7Y29uc3R7c25hcHNob3Q6S2UsY29uc3VtZWRTZWdtZW50czpwdCxyZW1haW5pbmdTZWdtZW50czpPdH09X2U7Zz1udWxsIT09KEJlPWguX2luamVjdG9yKSYmdm9pZCAwIT09QmU/''@;'; put 'put ''QmU6Zztjb25zdCAkdD1udWxsIT09KE5lPWguX2xvYWRlZEluamVjdG9yKSYmdm9pZCAwIT09TmU/TmU6Zyxmbj1mdW5jdGlvbiB5SChkKXtyZXR1cm4gZC5jaGlsZHJlbj9kLmNoaWxkcmVuOmQubG9hZENoaWxkcmVuP2QuX2xvYWRlZFJvdXRlczpbXX0oaCkse3NlZ21lbnRHcm91cDpMbixz''@;'; put 'put ''bGljZWRTZWdtZW50czppcn09eEkodixwdCxPdCxmbi5maWx0ZXIoU3I9PnZvaWQgMD09PVNyLnJlZGlyZWN0VG8pLHRoaXMucmVsYXRpdmVMaW5rUmVzb2x1dGlvbik7aWYoMD09PWlyLmxlbmd0aCYmTG4uaGFzQ2hpbGRyZW4oKSlyZXR1cm4gdGhpcy5wcm9jZXNzQ2hpbGRyZW4oJHQsZm4s''@;'; put 'put ''TG4pLnBpcGUobXQoU3I9Pm51bGw9PT1Tcj9udWxsOltuZXcgVzYoS2UsU3IpXSkpO2lmKDA9PT1mbi5sZW5ndGgmJjA9PT1pci5sZW5ndGgpcmV0dXJuIGFhKFtuZXcgVzYoS2UsW10pXSk7Y29uc3QgbXI9UWgoaCk9PT1DO3JldHVybiB0aGlzLnByb2Nlc3NTZWdtZW50KCR0LGZuLExuLGly''@;'; put 'put ''LG1yP2psOkMpLnBpcGUobXQoU3I9Pm51bGw9PT1Tcj9udWxsOltuZXcgVzYoS2UsU3IpXSkpfSkpfX1mdW5jdGlvbiBvb2UoZCl7Y29uc3QgZz1kLnZhbHVlLnJvdXRlQ29uZmlnO3JldHVybiBnJiYiIj09PWcucGF0aCYmdm9pZCAwPT09Zy5yZWRpcmVjdFRvfWZ1bmN0aW9uIGhVKGQpe2Nv''@;'; put 'put ''bnN0IGc9W10saD1uZXcgU2V0O2Zvcihjb25zdCB2IG9mIGQpe2lmKCFvb2Uodikpe2cucHVzaCh2KTtjb250aW51ZX1jb25zdCB5PWcuZmluZChDPT52LnZhbHVlLnJvdXRlQ29uZmlnPT09Qy52YWx1ZS5yb3V0ZUNvbmZpZyk7dm9pZCAwIT09eT8oeS5jaGlsZHJlbi5wdXNoKC4uLnYuY2hp''@;'; put 'put ''bGRyZW4pLGguYWRkKHkpKTpnLnB1c2godil9Zm9yKGNvbnN0IHYgb2YgaCl7Y29uc3QgeT1oVSh2LmNoaWxkcmVuKTtnLnB1c2gobmV3IFc2KHYudmFsdWUseSkpfXJldHVybiBnLmZpbHRlcih2PT4haC5oYXModikpfWZ1bmN0aW9uIHdIKGQpe2xldCBnPWQ7Zm9yKDtnLl9zb3VyY2VTZWdt''@;'; put 'put ''ZW50OylnPWcuX3NvdXJjZVNlZ21lbnQ7cmV0dXJuIGd9ZnVuY3Rpb24gYkgoZCl7dmFyIGcsaDtsZXQgdj1kLHk9bnVsbCE9PShnPXYuX3NlZ21lbnRJbmRleFNoaWZ0KSYmdm9pZCAwIT09Zz9nOjA7Zm9yKDt2Ll9zb3VyY2VTZWdtZW50Oyl2PXYuX3NvdXJjZVNlZ21lbnQseSs9bnVsbCE9''@;'; put 'put ''PShoPXYuX3NlZ21lbnRJbmRleFNoaWZ0KSYmdm9pZCAwIT09aD9oOjA7cmV0dXJuIHktMX1mdW5jdGlvbiBMSShkKXtyZXR1cm4gZC5kYXRhfHx7fX1mdW5jdGlvbiBkVShkKXtyZXR1cm4gZC5yZXNvbHZlfHx7fX1jb25zdCBnVT1TeW1ib2woIlJvdXRlVGl0bGUiKTtmdW5jdGlvbiBPSShk''@;'; put 'put ''KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGQudGl0bGV8fG51bGw9PT1kLnRpdGxlfWZ1bmN0aW9uIENIKGQpe3JldHVybiBZaChnPT57Y29uc3QgaD1kKGcpO3JldHVybiBoP2RuKGgpLnBpcGUobXQoKCk9PmcpKTphYShnKX0pfWxldCBBVT0oKCk9PntjbGFzcyBke2J1aWxkVGl0bGUoaCl7''@;'; put 'put ''dmFyIHY7bGV0IHksQz1oLnJvb3Q7Zm9yKDt2b2lkIDAhPT1DOyl5PW51bGwhPT0odj10aGlzLmdldFJlc29sdmVkVGl0bGVGb3JSb3V0ZShDKSkmJnZvaWQgMCE9PXY/djp5LEM9Qy5jaGlsZHJlbi5maW5kKEk9Pkkub3V0bGV0PT09amwpO3JldHVybiB5fWdldFJlc29sdmVkVGl0bGVGb3JS''@;'; put 'put ''b3V0ZShoKXtyZXR1cm4gaC5kYXRhW2dVXX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIGgyKHlVKX0scHJvdmlkZWRJbjoicm9vdCJ9KSxkfSkoKSx5VT0o''@;'; put 'put ''KCk9PntjbGFzcyBkIGV4dGVuZHMgQVV7Y29uc3RydWN0b3IoaCl7c3VwZXIoKSx0aGlzLnRpdGxlPWh9dXBkYXRlVGl0bGUoaCl7Y29uc3Qgdj10aGlzLmJ1aWxkVGl0bGUoaCk7dm9pZCAwIT09diYmdGhpcy50aXRsZS5zZXRUaXRsZSh2KX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9u''@;'; put 'put ''KGgpe3JldHVybiBuZXcoaHx8ZCkoQ2koR0EpKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxkfSkoKTtjbGFzcyBjb2V7fWNsYXNzIGZvZSBleHRlbmRzIGNsYXNzIHdVe3Nob3VsZERldGFjaChnKXtyZXR1cm4hMX1z''@;'; put 'put ''dG9yZShnLGgpe31zaG91bGRBdHRhY2goZyl7cmV0dXJuITF9cmV0cmlldmUoZyl7cmV0dXJuIG51bGx9c2hvdWxkUmV1c2VSb3V0ZShnLGgpe3JldHVybiBnLnJvdXRlQ29uZmlnPT09aC5yb3V0ZUNvbmZpZ319e31jb25zdCBrSD1uZXcgemUoIiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rv''@;'; put 'put ''cnk6KCk9Pih7fSl9KSxSST1uZXcgemUoIlJPVVRFUyIpO2xldCBNSD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdil7dGhpcy5pbmplY3Rvcj1oLHRoaXMuY29tcGlsZXI9dix0aGlzLmNvbXBvbmVudExvYWRlcnM9bmV3IFdlYWtNYXAsdGhpcy5jaGlsZHJlbkxvYWRlcnM9bmV3IFdl''@;'; put 'put ''YWtNYXB9bG9hZENvbXBvbmVudChoKXtpZih0aGlzLmNvbXBvbmVudExvYWRlcnMuZ2V0KGgpKXJldHVybiB0aGlzLmNvbXBvbmVudExvYWRlcnMuZ2V0KGgpO2lmKGguX2xvYWRlZENvbXBvbmVudClyZXR1cm4gYWEoaC5fbG9hZGVkQ29tcG9uZW50KTt0aGlzLm9uTG9hZFN0YXJ0TGlzdGVu''@;'; put 'put ''ZXImJnRoaXMub25Mb2FkU3RhcnRMaXN0ZW5lcihoKTtjb25zdCB2PUJ1KGgubG9hZENvbXBvbmVudCgpKS5waXBlKHlhKEM9Pnt0aGlzLm9uTG9hZEVuZExpc3RlbmVyJiZ0aGlzLm9uTG9hZEVuZExpc3RlbmVyKGgpLGguX2xvYWRlZENvbXBvbmVudD1DfSksc0koKCk9Pnt0aGlzLmNvbXBv''@;'; put 'put ''bmVudExvYWRlcnMuZGVsZXRlKGgpfSkpLHk9bmV3IHBuKHYsKCk9Pm5ldyAkZSkucGlwZShBbigpKTtyZXR1cm4gdGhpcy5jb21wb25lbnRMb2FkZXJzLnNldChoLHkpLHl9bG9hZENoaWxkcmVuKGgsdil7aWYodGhpcy5jaGlsZHJlbkxvYWRlcnMuZ2V0KHYpKXJldHVybiB0aGlzLmNoaWxk''@;'; put 'put ''cmVuTG9hZGVycy5nZXQodik7aWYodi5fbG9hZGVkUm91dGVzKXJldHVybiBhYSh7cm91dGVzOnYuX2xvYWRlZFJvdXRlcyxpbmplY3Rvcjp2Ll9sb2FkZWRJbmplY3Rvcn0pO3RoaXMub25Mb2FkU3RhcnRMaXN0ZW5lciYmdGhpcy5vbkxvYWRTdGFydExpc3RlbmVyKHYpO2NvbnN0IEM9dGhp''@;'; put 'put ''cy5sb2FkTW9kdWxlRmFjdG9yeU9yUm91dGVzKHYubG9hZENoaWxkcmVuKS5waXBlKG10KFo9Pnt0aGlzLm9uTG9hZEVuZExpc3RlbmVyJiZ0aGlzLm9uTG9hZEVuZExpc3RlbmVyKHYpO2xldCB1ZSxfZSxCZT0hMTtBcnJheS5pc0FycmF5KFopP19lPVo6KHVlPVouY3JlYXRlKGgpLmluamVj''@;'; put 'put ''dG9yLF9lPUdGKHVlLmdldChSSSxbXSxqMC5TZWxmfGowLk9wdGlvbmFsKSkpO3JldHVybntyb3V0ZXM6X2UubWFwKGZIKSxpbmplY3Rvcjp1ZX19KSxzSSgoKT0+e3RoaXMuY2hpbGRyZW5Mb2FkZXJzLmRlbGV0ZSh2KX0pKSxJPW5ldyBwbihDLCgpPT5uZXcgJGUpLnBpcGUoQW4oKSk7cmV0''@;'; put 'put ''dXJuIHRoaXMuY2hpbGRyZW5Mb2FkZXJzLnNldCh2LEkpLEl9bG9hZE1vZHVsZUZhY3RvcnlPclJvdXRlcyhoKXtyZXR1cm4gQnUoaCgpKS5waXBlKHNyKHY9PnYgaW5zdGFuY2VvZiBDMXx8QXJyYXkuaXNBcnJheSh2KT9hYSh2KTpkbih0aGlzLmNvbXBpbGVyLmNvbXBpbGVNb2R1bGVBc3lu''@;'; put 'put ''Yyh2KSkpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoQ2koU3MpLENpKENUKSl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y2xhc3Mgb2t7fWNsYXNzIF9Ve3Nob3VsZFByb2Nlc3NVcmwoZyl7''@;'; put 'put ''cmV0dXJuITB9ZXh0cmFjdChnKXtyZXR1cm4gZ31tZXJnZShnLGgpe3JldHVybiBnfX1mdW5jdGlvbiBDVShkKXt0aHJvdyBkfWZ1bmN0aW9uIGhvZShkLGcsaCl7cmV0dXJuIGcucGFyc2UoIi8iKX1jb25zdCBkb2U9e3BhdGhzOiJleGFjdCIsZnJhZ21lbnQ6Imlnbm9yZWQiLG1hdHJpeFBh''@;'; put 'put ''cmFtczoiaWdub3JlZCIscXVlcnlQYXJhbXM6ImV4YWN0In0sQkk9e3BhdGhzOiJzdWJzZXQiLGZyYWdtZW50OiJpZ25vcmVkIixtYXRyaXhQYXJhbXM6Imlnbm9yZWQiLHF1ZXJ5UGFyYW1zOiJzdWJzZXQifTtmdW5jdGlvbiBrVSgpe3ZhciBkLGc7Y29uc3QgaD1oMihVNSksdj1oMihlayks''@;'; put 'put ''eT1oMihWNiksQz1oMihTcyksST1oMihDVCksWj1udWxsIT09KGQ9aDIoUkkse29wdGlvbmFsOiEwfSkpJiZ2b2lkIDAhPT1kP2Q6W10sdWU9bnVsbCE9PShnPWgyKGtILHtvcHRpb25hbDohMH0pKSYmdm9pZCAwIT09Zz9nOnt9LF9lPWgyKHlVKSxCZT1oMihBVSx7b3B0aW9uYWw6ITB9KSxO''@;'; put 'put ''ZT1oMihvayx7b3B0aW9uYWw6ITB9KSxLZT1oMihjb2Use29wdGlvbmFsOiEwfSkscHQ9bmV3IFpsKG51bGwsaCx2LHksQyxJLEdGKFopKTtyZXR1cm4gTmUmJihwdC51cmxIYW5kbGluZ1N0cmF0ZWd5PU5lKSxLZSYmKHB0LnJvdXRlUmV1c2VTdHJhdGVneT1LZSkscHQudGl0bGVTdHJhdGVn''@;'; put 'put ''eT1udWxsIT1CZT9CZTpfZSxmdW5jdGlvbiBwb2UoZCxnKXtkLmVycm9ySGFuZGxlciYmKGcuZXJyb3JIYW5kbGVyPWQuZXJyb3JIYW5kbGVyKSxkLm1hbGZvcm1lZFVyaUVycm9ySGFuZGxlciYmKGcubWFsZm9ybWVkVXJpRXJyb3JIYW5kbGVyPWQubWFsZm9ybWVkVXJpRXJyb3JIYW5kbGVy''@;'; put 'put ''KSxkLm9uU2FtZVVybE5hdmlnYXRpb24mJihnLm9uU2FtZVVybE5hdmlnYXRpb249ZC5vblNhbWVVcmxOYXZpZ2F0aW9uKSxkLnBhcmFtc0luaGVyaXRhbmNlU3RyYXRlZ3kmJihnLnBhcmFtc0luaGVyaXRhbmNlU3RyYXRlZ3k9ZC5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5KSxkLnJlbGF0''@;'; put 'put ''aXZlTGlua1Jlc29sdXRpb24mJihnLnJlbGF0aXZlTGlua1Jlc29sdXRpb249ZC5yZWxhdGl2ZUxpbmtSZXNvbHV0aW9uKSxkLnVybFVwZGF0ZVN0cmF0ZWd5JiYoZy51cmxVcGRhdGVTdHJhdGVneT1kLnVybFVwZGF0ZVN0cmF0ZWd5KSxkLmNhbmNlbGVkTmF2aWdhdGlvblJlc29sdXRpb24m''@;'; put 'put ''JihnLmNhbmNlbGVkTmF2aWdhdGlvblJlc29sdXRpb249ZC5jYW5jZWxlZE5hdmlnYXRpb25SZXNvbHV0aW9uKX0odWUscHQpLHB0fWxldCBabD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSxaLHVlKXt0aGlzLnJvb3RDb21wb25lbnRUeXBlPWgsdGhpcy51cmxTZXJpYWxp''@;'; put 'put ''emVyPXYsdGhpcy5yb290Q29udGV4dHM9eSx0aGlzLmxvY2F0aW9uPUMsdGhpcy5jb25maWc9dWUsdGhpcy5sYXN0U3VjY2Vzc2Z1bE5hdmlnYXRpb249bnVsbCx0aGlzLmN1cnJlbnROYXZpZ2F0aW9uPW51bGwsdGhpcy5kaXNwb3NlZD0hMSx0aGlzLm5hdmlnYXRpb25JZD0wLHRoaXMuY3Vy''@;'; put 'put ''cmVudFBhZ2VJZD0wLHRoaXMuaXNOZ1pvbmVFbmFibGVkPSExLHRoaXMuZXZlbnRzPW5ldyAkZSx0aGlzLmVycm9ySGFuZGxlcj1DVSx0aGlzLm1hbGZvcm1lZFVyaUVycm9ySGFuZGxlcj1ob2UsdGhpcy5uYXZpZ2F0ZWQ9ITEsdGhpcy5sYXN0U3VjY2Vzc2Z1bElkPS0xLHRoaXMuYWZ0ZXJQ''@;'; put 'put ''cmVhY3RpdmF0aW9uPSgpPT5hYSh2b2lkIDApLHRoaXMudXJsSGFuZGxpbmdTdHJhdGVneT1uZXcgX1UsdGhpcy5yb3V0ZVJldXNlU3RyYXRlZ3k9bmV3IGZvZSx0aGlzLm9uU2FtZVVybE5hdmlnYXRpb249Imlnbm9yZSIsdGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5PSJlbXB0eU9u''@;'; put 'put ''bHkiLHRoaXMudXJsVXBkYXRlU3RyYXRlZ3k9ImRlZmVycmVkIix0aGlzLnJlbGF0aXZlTGlua1Jlc29sdXRpb249ImNvcnJlY3RlZCIsdGhpcy5jYW5jZWxlZE5hdmlnYXRpb25SZXNvbHV0aW9uPSJyZXBsYWNlIix0aGlzLmNvbmZpZ0xvYWRlcj1JLmdldChNSCksdGhpcy5jb25maWdMb2Fk''@;'; put 'put ''ZXIub25Mb2FkRW5kTGlzdGVuZXI9S2U9PnRoaXMudHJpZ2dlckV2ZW50KG5ldyAkQyhLZSkpLHRoaXMuY29uZmlnTG9hZGVyLm9uTG9hZFN0YXJ0TGlzdGVuZXI9S2U9PnRoaXMudHJpZ2dlckV2ZW50KG5ldyBJMGUoS2UpKSx0aGlzLm5nTW9kdWxlPUkuZ2V0KEgzKSx0aGlzLmNvbnNvbGU9''@;'; put 'put ''SS5nZXQocnJlKTtjb25zdCBOZT1JLmdldChfbCk7dGhpcy5pc05nWm9uZUVuYWJsZWQ9TmUgaW5zdGFuY2VvZiBfbCYmX2wuaXNJbkFuZ3VsYXJab25lKCksdGhpcy5yZXNldENvbmZpZyh1ZSksdGhpcy5jdXJyZW50VXJsVHJlZT1mdW5jdGlvbiBnMGUoKXtyZXR1cm4gbmV3IFk1KG5ldyBj''@;'; put 'put ''bChbXSx7fSkse30sbnVsbCl9KCksdGhpcy5yYXdVcmxUcmVlPXRoaXMuY3VycmVudFVybFRyZWUsdGhpcy5icm93c2VyVXJsVHJlZT10aGlzLmN1cnJlbnRVcmxUcmVlLHRoaXMucm91dGVyU3RhdGU9UFkodGhpcy5jdXJyZW50VXJsVHJlZSx0aGlzLnJvb3RDb21wb25lbnRUeXBlKSx0aGlz''@;'; put 'put ''LnRyYW5zaXRpb25zPW5ldyBmcyh7aWQ6MCx0YXJnZXRQYWdlSWQ6MCxjdXJyZW50VXJsVHJlZTp0aGlzLmN1cnJlbnRVcmxUcmVlLGN1cnJlbnRSYXdVcmw6dGhpcy5jdXJyZW50VXJsVHJlZSxleHRyYWN0ZWRVcmw6dGhpcy51cmxIYW5kbGluZ1N0cmF0ZWd5LmV4dHJhY3QodGhpcy5jdXJy''@;'; put 'put ''ZW50VXJsVHJlZSksdXJsQWZ0ZXJSZWRpcmVjdHM6dGhpcy51cmxIYW5kbGluZ1N0cmF0ZWd5LmV4dHJhY3QodGhpcy5jdXJyZW50VXJsVHJlZSkscmF3VXJsOnRoaXMuY3VycmVudFVybFRyZWUsZXh0cmFzOnt9LHJlc29sdmU6bnVsbCxyZWplY3Q6bnVsbCxwcm9taXNlOlByb21pc2UucmVz''@;'; put 'put ''b2x2ZSghMCksc291cmNlOiJpbXBlcmF0aXZlIixyZXN0b3JlZFN0YXRlOm51bGwsY3VycmVudFNuYXBzaG90OnRoaXMucm91dGVyU3RhdGUuc25hcHNob3QsdGFyZ2V0U25hcHNob3Q6bnVsbCxjdXJyZW50Um91dGVyU3RhdGU6dGhpcy5yb3V0ZXJTdGF0ZSx0YXJnZXRSb3V0ZXJTdGF0ZTpu''@;'; put 'put ''dWxsLGd1YXJkczp7Y2FuQWN0aXZhdGVDaGVja3M6W10sY2FuRGVhY3RpdmF0ZUNoZWNrczpbXX0sZ3VhcmRzUmVzdWx0Om51bGx9KSx0aGlzLm5hdmlnYXRpb25zPXRoaXMuc2V0dXBOYXZpZ2F0aW9ucyh0aGlzLnRyYW5zaXRpb25zKSx0aGlzLnByb2Nlc3NOYXZpZ2F0aW9ucygpfWdldCBi''@;'; put 'put ''cm93c2VyUGFnZUlkKCl7dmFyIGg7cmV0dXJuIG51bGw9PT0oaD10aGlzLmxvY2F0aW9uLmdldFN0YXRlKCkpfHx2b2lkIDA9PT1oP3ZvaWQgMDpoLlx1MDI3NXJvdXRlclBhZ2VJZH1zZXR1cE5hdmlnYXRpb25zKGgpe2NvbnN0IHY9dGhpcy5ldmVudHM7cmV0dXJuIGgucGlwZShPMih5PT4w''@;'; put 'put ''IT09eS5pZCksbXQoeT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHkpLHtleHRyYWN0ZWRVcmw6dGhpcy51cmxIYW5kbGluZ1N0cmF0ZWd5LmV4dHJhY3QoeS5yYXdVcmwpfSkpLFloKHk9PntsZXQgQz0hMSxJPSExO3JldHVybiBhYSh5KS5waXBlKHlhKFo9Pnt0aGlzLmN1cnJl''@;'; put 'put ''bnROYXZpZ2F0aW9uPXtpZDpaLmlkLGluaXRpYWxVcmw6Wi5yYXdVcmwsZXh0cmFjdGVkVXJsOlouZXh0cmFjdGVkVXJsLHRyaWdnZXI6Wi5zb3VyY2UsZXh0cmFzOlouZXh0cmFzLHByZXZpb3VzTmF2aWdhdGlvbjp0aGlzLmxhc3RTdWNjZXNzZnVsTmF2aWdhdGlvbj9PYmplY3QuYXNzaWdu''@;'; put 'put ''KE9iamVjdC5hc3NpZ24oe30sdGhpcy5sYXN0U3VjY2Vzc2Z1bE5hdmlnYXRpb24pLHtwcmV2aW91c05hdmlnYXRpb246bnVsbH0pOm51bGx9fSksWWgoWj0+e2NvbnN0IHVlPXRoaXMuYnJvd3NlclVybFRyZWUudG9TdHJpbmcoKSxfZT0hdGhpcy5uYXZpZ2F0ZWR8fFouZXh0cmFjdGVkVXJs''@;'; put 'put ''LnRvU3RyaW5nKCkhPT11ZXx8dWUhPT10aGlzLmN1cnJlbnRVcmxUcmVlLnRvU3RyaW5nKCk7aWYoKCJyZWxvYWQiPT09dGhpcy5vblNhbWVVcmxOYXZpZ2F0aW9ufHxfZSkmJnRoaXMudXJsSGFuZGxpbmdTdHJhdGVneS5zaG91bGRQcm9jZXNzVXJsKFoucmF3VXJsKSlyZXR1cm4gRUgoWi5z''@;'; put 'put ''b3VyY2UpJiYodGhpcy5icm93c2VyVXJsVHJlZT1aLmV4dHJhY3RlZFVybCksYWEoWikucGlwZShZaChOZT0+e2NvbnN0IEtlPXRoaXMudHJhbnNpdGlvbnMuZ2V0VmFsdWUoKTtyZXR1cm4gdi5uZXh0KG5ldyBBSShOZS5pZCx0aGlzLnNlcmlhbGl6ZVVybChOZS5leHRyYWN0ZWRVcmwpLE5l''@;'; put 'put ''LnNvdXJjZSxOZS5yZXN0b3JlZFN0YXRlKSksS2UhPT10aGlzLnRyYW5zaXRpb25zLmdldFZhbHVlKCk/VUE6UHJvbWlzZS5yZXNvbHZlKE5lKX0pLGZ1bmN0aW9uIGZVKGQsZyxoLHYpe3JldHVybiBZaCh5PT5mdW5jdGlvbiBxMGUoZCxnLGgsdix5KXtyZXR1cm4gbmV3IGVvZShkLGcsaCx2''@;'; put 'put ''LHkpLmFwcGx5KCl9KGQsZyxoLHkuZXh0cmFjdGVkVXJsLHYpLnBpcGUobXQoQz0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHkpLHt1cmxBZnRlclJlZGlyZWN0czpDfSkpKSl9KHRoaXMubmdNb2R1bGUuaW5qZWN0b3IsdGhpcy5jb25maWdMb2FkZXIsdGhpcy51cmxTZXJpYWxp''@;'; put 'put ''emVyLHRoaXMuY29uZmlnKSx5YShOZT0+e3RoaXMuY3VycmVudE5hdmlnYXRpb249T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuY3VycmVudE5hdmlnYXRpb24pLHtmaW5hbFVybDpOZS51cmxBZnRlclJlZGlyZWN0c30pLHkudXJsQWZ0ZXJSZWRpcmVjdHM9TmUudXJsQWZ0''@;'; put 'put ''ZXJSZWRpcmVjdHN9KSxmdW5jdGlvbiBwVShkLGcsaCx2LHksQyl7cmV0dXJuIHNyKEk9PmZ1bmN0aW9uIHJvZShkLGcsaCx2LHksQyxJPSJlbXB0eU9ubHkiLFo9ImxlZ2FjeSIpe3JldHVybiBuZXcgaW9lKGQsZyxoLHYseSxJLFosQykucmVjb2duaXplKCkucGlwZShZaCh1ZT0+bnVsbD09''@;'; put 'put ''PXVlP2Z1bmN0aW9uIG5vZShkKXtyZXR1cm4gbmV3IEYoZz0+Zy5lcnJvcihkKSl9KG5ldyB0b2UpOmFhKHVlKSkpfShkLGcsaCxJLnVybEFmdGVyUmVkaXJlY3RzLHYuc2VyaWFsaXplKEkudXJsQWZ0ZXJSZWRpcmVjdHMpLHYseSxDKS5waXBlKG10KFo9Pk9iamVjdC5hc3NpZ24oT2JqZWN0''@;'; put 'put ''LmFzc2lnbih7fSxJKSx7dGFyZ2V0U25hcHNob3Q6Wn0pKSkpfSh0aGlzLm5nTW9kdWxlLmluamVjdG9yLHRoaXMucm9vdENvbXBvbmVudFR5cGUsdGhpcy5jb25maWcsdGhpcy51cmxTZXJpYWxpemVyLHRoaXMucGFyYW1zSW5oZXJpdGFuY2VTdHJhdGVneSx0aGlzLnJlbGF0aXZlTGlua1Jl''@;'; put 'put ''c29sdXRpb24pLHlhKE5lPT57aWYoeS50YXJnZXRTbmFwc2hvdD1OZS50YXJnZXRTbmFwc2hvdCwiZWFnZXIiPT09dGhpcy51cmxVcGRhdGVTdHJhdGVneSl7aWYoIU5lLmV4dHJhcy5za2lwTG9jYXRpb25DaGFuZ2Upe2NvbnN0IHB0PXRoaXMudXJsSGFuZGxpbmdTdHJhdGVneS5tZXJnZShO''@;'; put 'put ''ZS51cmxBZnRlclJlZGlyZWN0cyxOZS5yYXdVcmwpO3RoaXMuc2V0QnJvd3NlclVybChwdCxOZSl9dGhpcy5icm93c2VyVXJsVHJlZT1OZS51cmxBZnRlclJlZGlyZWN0c31jb25zdCBLZT1uZXcgRFkoTmUuaWQsdGhpcy5zZXJpYWxpemVVcmwoTmUuZXh0cmFjdGVkVXJsKSx0aGlzLnNlcmlh''@;'; put 'put ''bGl6ZVVybChOZS51cmxBZnRlclJlZGlyZWN0cyksTmUudGFyZ2V0U25hcHNob3QpO3YubmV4dChLZSl9KSk7aWYoX2UmJnRoaXMucmF3VXJsVHJlZSYmdGhpcy51cmxIYW5kbGluZ1N0cmF0ZWd5LnNob3VsZFByb2Nlc3NVcmwodGhpcy5yYXdVcmxUcmVlKSl7Y29uc3R7aWQ6S2UsZXh0cmFj''@;'; put 'put ''dGVkVXJsOnB0LHNvdXJjZTpPdCxyZXN0b3JlZFN0YXRlOiR0LGV4dHJhczpmbn09WixMbj1uZXcgQUkoS2UsdGhpcy5zZXJpYWxpemVVcmwocHQpLE90LCR0KTt2Lm5leHQoTG4pO2NvbnN0IGlyPVBZKHB0LHRoaXMucm9vdENvbXBvbmVudFR5cGUpLnNuYXBzaG90O3JldHVybiBhYSh5PU9i''@;'; put 'put ''amVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxaKSx7dGFyZ2V0U25hcHNob3Q6aXIsdXJsQWZ0ZXJSZWRpcmVjdHM6cHQsZXh0cmFzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxmbikse3NraXBMb2NhdGlvbkNoYW5nZTohMSxyZXBsYWNlVXJsOiExfSl9KSl9cmV0dXJuIHRo''@;'; put 'put ''aXMucmF3VXJsVHJlZT1aLnJhd1VybCxaLnJlc29sdmUobnVsbCksVUF9KSx5YShaPT57Y29uc3QgdWU9bmV3IHgwZShaLmlkLHRoaXMuc2VyaWFsaXplVXJsKFouZXh0cmFjdGVkVXJsKSx0aGlzLnNlcmlhbGl6ZVVybChaLnVybEFmdGVyUmVkaXJlY3RzKSxaLnRhcmdldFNuYXBzaG90KTt0''@;'; put 'put ''aGlzLnRyaWdnZXJFdmVudCh1ZSl9KSxtdChaPT55PU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxaKSx7Z3VhcmRzOkpZKFoudGFyZ2V0U25hcHNob3QsWi5jdXJyZW50U25hcHNob3QsdGhpcy5yb290Q29udGV4dHMpfSkpLGZ1bmN0aW9uIFcwZShkLGcpe3JldHVybiBzcihoPT57''@;'; put 'put ''Y29uc3R7dGFyZ2V0U25hcHNob3Q6dixjdXJyZW50U25hcHNob3Q6eSxndWFyZHM6e2NhbkFjdGl2YXRlQ2hlY2tzOkMsY2FuRGVhY3RpdmF0ZUNoZWNrczpJfX09aDtyZXR1cm4gMD09PUkubGVuZ3RoJiYwPT09Qy5sZW5ndGg/YWEoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGgp''@;'; put 'put ''LHtndWFyZHNSZXN1bHQ6ITB9KSk6ZnVuY3Rpb24gWTBlKGQsZyxoLHYpe3JldHVybiBkbihkKS5waXBlKHNyKHk9PmZ1bmN0aW9uIG9VKGQsZyxoLHYseSl7Y29uc3QgQz1nJiZnLnJvdXRlQ29uZmlnP2cucm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZTpudWxsO3JldHVybiBDJiYwIT09Qy5s''@;'; put 'put ''ZW5ndGg/YWEoQy5tYXAoWj0+e2NvbnN0IHVlPU1JKFosZyx5KTtyZXR1cm4gQnUoZnVuY3Rpb24gZVUoZCl7cmV0dXJuIGQmJnV5KGQuY2FuRGVhY3RpdmF0ZSl9KHVlKT91ZS5jYW5EZWFjdGl2YXRlKGQsZyxoLHYpOnVlKGQsZyxoLHYpKS5waXBlKFczKCkpfSkpLnBpcGUobTcoKSk6YWEo''@;'; put 'put ''ITApfSh5LmNvbXBvbmVudCx5LnJvdXRlLGgsZyx2KSksVzMoeT0+ITAhPT15LCEwKSl9KEksdix5LGQpLnBpcGUoc3IoWj0+WiYmZnVuY3Rpb24gWjBlKGQpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGR9KFopP2Z1bmN0aW9uIFUwZShkLGcsaCx2KXtyZXR1cm4gZG4oZykucGlwZShWNSh5''@;'; put 'put ''PT5qRihmdW5jdGlvbiByVShkLGcpe3JldHVybiBudWxsIT09ZCYmZyYmZyhuZXcgb0goZCkpLGFhKCEwKX0oeS5yb3V0ZS5wYXJlbnQsdiksZnVuY3Rpb24gblUoZCxnKXtyZXR1cm4gbnVsbCE9PWQmJmcmJmcobmV3IFJZKGQpKSxhYSghMCl9KHkucm91dGUsdiksZnVuY3Rpb24gaVUoZCxn''@;'; put 'put ''LGgpe2NvbnN0IHY9Z1tnLmxlbmd0aC0xXSxDPWcuc2xpY2UoMCxnLmxlbmd0aC0xKS5yZXZlcnNlKCkubWFwKEk9PmZ1bmN0aW9uIFhZKGQpe2NvbnN0IGc9ZC5yb3V0ZUNvbmZpZz9kLnJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlQ2hpbGQ6bnVsbDtyZXR1cm4gZyYmMCE9PWcubGVuZ3RoP3tu''@;'; put 'put ''b2RlOmQsZ3VhcmRzOmd9Om51bGx9KEkpKS5maWx0ZXIoST0+bnVsbCE9PUkpLm1hcChJPT5jWSgoKT0+YWEoSS5ndWFyZHMubWFwKHVlPT57Y29uc3QgX2U9TUkodWUsSS5ub2RlLGgpO3JldHVybiBCdShmdW5jdGlvbiBwSChkKXtyZXR1cm4gZCYmdXkoZC5jYW5BY3RpdmF0ZUNoaWxkKX0o''@;'; put 'put ''X2UpP19lLmNhbkFjdGl2YXRlQ2hpbGQodixkKTpfZSh2LGQpKS5waXBlKFczKCkpfSkpLnBpcGUobTcoKSkpKTtyZXR1cm4gYWEoQykucGlwZShtNygpKX0oZCx5LnBhdGgsaCksZnVuY3Rpb24gUTBlKGQsZyxoKXtjb25zdCB2PWcucm91dGVDb25maWc/Zy5yb3V0ZUNvbmZpZy5jYW5BY3Rp''@;'; put 'put ''dmF0ZTpudWxsO2lmKCF2fHwwPT09di5sZW5ndGgpcmV0dXJuIGFhKCEwKTtjb25zdCB5PXYubWFwKEM9PmNZKCgpPT57Y29uc3QgST1NSShDLGcsaCk7cmV0dXJuIEJ1KGZ1bmN0aW9uIHFZKGQpe3JldHVybiBkJiZ1eShkLmNhbkFjdGl2YXRlKX0oSSk/SS5jYW5BY3RpdmF0ZShnLGQpOkko''@;'; put 'put ''ZyxkKSkucGlwZShXMygpKX0pKTtyZXR1cm4gYWEoeSkucGlwZShtNygpKX0oZCx5LnJvdXRlLGgpKSksVzMoeT0+ITAhPT15LCEwKSl9KHYsQyxkLGcpOmFhKFopKSxtdChaPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saCkse2d1YXJkc1Jlc3VsdDpafSkpKX0pfSh0aGlzLm5n''@;'; put 'put ''TW9kdWxlLmluamVjdG9yLFo9PnRoaXMudHJpZ2dlckV2ZW50KFopKSx5YShaPT57aWYoeS5ndWFyZHNSZXN1bHQ9Wi5ndWFyZHNSZXN1bHQsZzcoWi5ndWFyZHNSZXN1bHQpKXRocm93IGxIKDAsWi5ndWFyZHNSZXN1bHQpO2NvbnN0IHVlPW5ldyBpSChaLmlkLHRoaXMuc2VyaWFsaXplVXJs''@;'; put 'put ''KFouZXh0cmFjdGVkVXJsKSx0aGlzLnNlcmlhbGl6ZVVybChaLnVybEFmdGVyUmVkaXJlY3RzKSxaLnRhcmdldFNuYXBzaG90LCEhWi5ndWFyZHNSZXN1bHQpO3RoaXMudHJpZ2dlckV2ZW50KHVlKX0pLE8yKFo9PiEhWi5ndWFyZHNSZXN1bHR8fCh0aGlzLnJlc3RvcmVIaXN0b3J5KFopLHRo''@;'; put 'put ''aXMuY2FuY2VsTmF2aWdhdGlvblRyYW5zaXRpb24oWiwiIiwzKSwhMSkpLENIKFo9PntpZihaLmd1YXJkcy5jYW5BY3RpdmF0ZUNoZWNrcy5sZW5ndGgpcmV0dXJuIGFhKFopLnBpcGUoeWEodWU9Pntjb25zdCBfZT1uZXcgTFkodWUuaWQsdGhpcy5zZXJpYWxpemVVcmwodWUuZXh0cmFjdGVk''@;'; put 'put ''VXJsKSx0aGlzLnNlcmlhbGl6ZVVybCh1ZS51cmxBZnRlclJlZGlyZWN0cyksdWUudGFyZ2V0U25hcHNob3QpO3RoaXMudHJpZ2dlckV2ZW50KF9lKX0pLFloKHVlPT57bGV0IF9lPSExO3JldHVybiBhYSh1ZSkucGlwZShmdW5jdGlvbiBtVShkLGcpe3JldHVybiBzcihoPT57Y29uc3R7dGFy''@;'; put 'put ''Z2V0U25hcHNob3Q6dixndWFyZHM6e2NhbkFjdGl2YXRlQ2hlY2tzOnl9fT1oO2lmKCF5Lmxlbmd0aClyZXR1cm4gYWEoaCk7bGV0IEM9MDtyZXR1cm4gZG4oeSkucGlwZShWNShJPT5mdW5jdGlvbiBsb2UoZCxnLGgsdil7Y29uc3QgeT1kLnJvdXRlQ29uZmlnLEM9ZC5fcmVzb2x2ZTtyZXR1''@;'; put 'put ''cm4gdm9pZCAwIT09KG51bGw9PXk/dm9pZCAwOnkudGl0bGUpJiYhT0koeSkmJihDW2dVXT15LnRpdGxlKSxmdW5jdGlvbiBzb2UoZCxnLGgsdil7Y29uc3QgeT1mdW5jdGlvbiB2VShkKXtyZXR1cm5bLi4uT2JqZWN0LmtleXMoZCksLi4uT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhk''@;'; put 'put ''KV19KGQpO2lmKDA9PT15Lmxlbmd0aClyZXR1cm4gYWEoe30pO2NvbnN0IEM9e307cmV0dXJuIGRuKHkpLnBpcGUoc3IoST0+ZnVuY3Rpb24gdW9lKGQsZyxoLHYpe2NvbnN0IHk9TUkoZCxnLHYpO3JldHVybiBCdSh5LnJlc29sdmU/eS5yZXNvbHZlKGcsaCk6eShnLGgpKX0oZFtJXSxnLGgs''@;'; put 'put ''dikucGlwZShXMygpLHlhKFo9PntDW0ldPVp9KSkpLHo1KDEpLEc1KEMpLFo1KEk9PkkgaW5zdGFuY2VvZiBKQT9VQTpRQShJKSkpfShDLGQsZyx2KS5waXBlKG10KEk9PihkLl9yZXNvbHZlZERhdGE9SSxkLmRhdGE9RlkoZCxoKS5yZXNvbHZlLHkmJk9JKHkpJiYoZC5kYXRhW2dVXT15LnRp''@;'; put 'put ''dGxlKSxudWxsKSkpfShJLnJvdXRlLHYsZCxnKSkseWEoKCk9PkMrKyksejUoMSksc3IoST0+Qz09PXkubGVuZ3RoP2FhKGgpOlVBKSl9KX0odGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5LHRoaXMubmdNb2R1bGUuaW5qZWN0b3IpLHlhKHtuZXh0OigpPT5fZT0hMCxjb21wbGV0ZToo''@;'; put 'put ''KT0+e19lfHwodGhpcy5yZXN0b3JlSGlzdG9yeSh1ZSksdGhpcy5jYW5jZWxOYXZpZ2F0aW9uVHJhbnNpdGlvbih1ZSwiIiwyKSl9fSkpfSkseWEodWU9Pntjb25zdCBfZT1uZXcgVDBlKHVlLmlkLHRoaXMuc2VyaWFsaXplVXJsKHVlLmV4dHJhY3RlZFVybCksdGhpcy5zZXJpYWxpemVVcmwo''@;'; put 'put ''dWUudXJsQWZ0ZXJSZWRpcmVjdHMpLHVlLnRhcmdldFNuYXBzaG90KTt0aGlzLnRyaWdnZXJFdmVudChfZSl9KSl9KSxDSChaPT57Y29uc3QgdWU9X2U9Pnt2YXIgQmU7Y29uc3QgTmU9W107KG51bGw9PT0oQmU9X2Uucm91dGVDb25maWcpfHx2b2lkIDA9PT1CZT92b2lkIDA6QmUubG9hZENv''@;'; put 'put ''bXBvbmVudCkmJiFfZS5yb3V0ZUNvbmZpZy5fbG9hZGVkQ29tcG9uZW50JiZOZS5wdXNoKHRoaXMuY29uZmlnTG9hZGVyLmxvYWRDb21wb25lbnQoX2Uucm91dGVDb25maWcpLnBpcGUoeWEoS2U9PntfZS5jb21wb25lbnQ9S2V9KSxtdCgoKT0+e30pKSk7Zm9yKGNvbnN0IEtlIG9mIF9lLmNo''@;'; put 'put ''aWxkcmVuKU5lLnB1c2goLi4udWUoS2UpKTtyZXR1cm4gTmV9O3JldHVybiBvSSh1ZShaLnRhcmdldFNuYXBzaG90LnJvb3QpKS5waXBlKGg3KCksSDUoMSkpfSksQ0goKCk9PnRoaXMuYWZ0ZXJQcmVhY3RpdmF0aW9uKCkpLG10KFo9Pntjb25zdCB1ZT1mdW5jdGlvbiBqWShkLGcsaCl7Y29u''@;'; put 'put ''c3Qgdj1veShkLGcuX3Jvb3QsaD9oLl9yb290OnZvaWQgMCk7cmV0dXJuIG5ldyBCWSh2LGcpfSh0aGlzLnJvdXRlUmV1c2VTdHJhdGVneSxaLnRhcmdldFNuYXBzaG90LFouY3VycmVudFJvdXRlclN0YXRlKTtyZXR1cm4geT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sWikse3Rh''@;'; put 'put ''cmdldFJvdXRlclN0YXRlOnVlfSl9KSx5YShaPT57dGhpcy5jdXJyZW50VXJsVHJlZT1aLnVybEFmdGVyUmVkaXJlY3RzLHRoaXMucmF3VXJsVHJlZT10aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3kubWVyZ2UoWi51cmxBZnRlclJlZGlyZWN0cyxaLnJhd1VybCksdGhpcy5yb3V0ZXJTdGF0ZT1a''@;'; put 'put ''LnRhcmdldFJvdXRlclN0YXRlLCJkZWZlcnJlZCI9PT10aGlzLnVybFVwZGF0ZVN0cmF0ZWd5JiYoWi5leHRyYXMuc2tpcExvY2F0aW9uQ2hhbmdlfHx0aGlzLnNldEJyb3dzZXJVcmwodGhpcy5yYXdVcmxUcmVlLFopLHRoaXMuYnJvd3NlclVybFRyZWU9Wi51cmxBZnRlclJlZGlyZWN0cyl9''@;'; put 'put ''KSwoKGQsZyxoKT0+bXQodj0+KG5ldyBRWShnLHYudGFyZ2V0Um91dGVyU3RhdGUsdi5jdXJyZW50Um91dGVyU3RhdGUsaCkuYWN0aXZhdGUoZCksdikpKSh0aGlzLnJvb3RDb250ZXh0cyx0aGlzLnJvdXRlUmV1c2VTdHJhdGVneSxaPT50aGlzLnRyaWdnZXJFdmVudChaKSkseWEoe25leHQo''@;'; put 'put ''KXtDPSEwfSxjb21wbGV0ZSgpe0M9ITB9fSksc0koKCk9Pnt2YXIgWjtDfHxJfHx0aGlzLmNhbmNlbE5hdmlnYXRpb25UcmFuc2l0aW9uKHksIiIsMSksKG51bGw9PT0oWj10aGlzLmN1cnJlbnROYXZpZ2F0aW9uKXx8dm9pZCAwPT09Wj92b2lkIDA6Wi5pZCk9PT15LmlkJiYodGhpcy5jdXJy''@;'; put 'put ''ZW50TmF2aWdhdGlvbj1udWxsKX0pLFo1KFo9Pnt2YXIgdWU7aWYoST0hMCxzSChaKSl7R1koWil8fCh0aGlzLm5hdmlnYXRlZD0hMCx0aGlzLnJlc3RvcmVIaXN0b3J5KHksITApKTtjb25zdCBfZT1uZXcgeUkoeS5pZCx0aGlzLnNlcmlhbGl6ZVVybCh5LmV4dHJhY3RlZFVybCksWi5tZXNz''@;'; put 'put ''YWdlLFouY2FuY2VsbGF0aW9uQ29kZSk7aWYodi5uZXh0KF9lKSxHWShaKSl7Y29uc3QgQmU9dGhpcy51cmxIYW5kbGluZ1N0cmF0ZWd5Lm1lcmdlKFoudXJsLHRoaXMucmF3VXJsVHJlZSksTmU9e3NraXBMb2NhdGlvbkNoYW5nZTp5LmV4dHJhcy5za2lwTG9jYXRpb25DaGFuZ2UscmVwbGFj''@;'; put 'put ''ZVVybDoiZWFnZXIiPT09dGhpcy51cmxVcGRhdGVTdHJhdGVneXx8RUgoeS5zb3VyY2UpfTt0aGlzLnNjaGVkdWxlTmF2aWdhdGlvbihCZSwiaW1wZXJhdGl2ZSIsbnVsbCxOZSx7cmVzb2x2ZTp5LnJlc29sdmUscmVqZWN0OnkucmVqZWN0LHByb21pc2U6eS5wcm9taXNlfSl9ZWxzZSB5LnJl''@;'; put 'put ''c29sdmUoITEpfWVsc2V7dGhpcy5yZXN0b3JlSGlzdG9yeSh5LCEwKTtjb25zdCBfZT1uZXcgckgoeS5pZCx0aGlzLnNlcmlhbGl6ZVVybCh5LmV4dHJhY3RlZFVybCksWixudWxsIT09KHVlPXkudGFyZ2V0U25hcHNob3QpJiZ2b2lkIDAhPT11ZT91ZTp2b2lkIDApO3YubmV4dChfZSk7dHJ5''@;'; put 'put ''e3kucmVzb2x2ZSh0aGlzLmVycm9ySGFuZGxlcihaKSl9Y2F0Y2goQmUpe3kucmVqZWN0KEJlKX19cmV0dXJuIFVBfSkpfSkpfXJlc2V0Um9vdENvbXBvbmVudFR5cGUoaCl7dGhpcy5yb290Q29tcG9uZW50VHlwZT1oLHRoaXMucm91dGVyU3RhdGUucm9vdC5jb21wb25lbnQ9dGhpcy5yb290''@;'; put 'put ''Q29tcG9uZW50VHlwZX1zZXRUcmFuc2l0aW9uKGgpe3RoaXMudHJhbnNpdGlvbnMubmV4dChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy50cmFuc2l0aW9ucy52YWx1ZSksaCkpfWluaXRpYWxOYXZpZ2F0aW9uKCl7dGhpcy5zZXRVcExvY2F0aW9uQ2hhbmdlTGlzdGVuZXIo''@;'; put 'put ''KSwwPT09dGhpcy5uYXZpZ2F0aW9uSWQmJnRoaXMubmF2aWdhdGVCeVVybCh0aGlzLmxvY2F0aW9uLnBhdGgoITApLHtyZXBsYWNlVXJsOiEwfSl9c2V0VXBMb2NhdGlvbkNoYW5nZUxpc3RlbmVyKCl7dGhpcy5sb2NhdGlvblN1YnNjcmlwdGlvbnx8KHRoaXMubG9jYXRpb25TdWJzY3JpcHRp''@;'; put 'put ''b249dGhpcy5sb2NhdGlvbi5zdWJzY3JpYmUoaD0+e2NvbnN0IHY9InBvcHN0YXRlIj09PWgudHlwZT8icG9wc3RhdGUiOiJoYXNoY2hhbmdlIjsicG9wc3RhdGUiPT09diYmc2V0VGltZW91dCgoKT0+e3ZhciB5O2NvbnN0IEM9e3JlcGxhY2VVcmw6ITB9LEk9bnVsbCE9PSh5PWguc3RhdGUp''@;'; put 'put ''JiZ2b2lkIDAhPT15JiZ5Lm5hdmlnYXRpb25JZD9oLnN0YXRlOm51bGw7aWYoSSl7Y29uc3QgdWU9T2JqZWN0LmFzc2lnbih7fSxJKTtkZWxldGUgdWUubmF2aWdhdGlvbklkLGRlbGV0ZSB1ZS5cdTAyNzVyb3V0ZXJQYWdlSWQsMCE9PU9iamVjdC5rZXlzKHVlKS5sZW5ndGgmJihDLnN0YXRl''@;'; put 'put ''PXVlKX1jb25zdCBaPXRoaXMucGFyc2VVcmwoaC51cmwpO3RoaXMuc2NoZWR1bGVOYXZpZ2F0aW9uKFosdixJLEMpfSwwKX0pKX1nZXQgdXJsKCl7cmV0dXJuIHRoaXMuc2VyaWFsaXplVXJsKHRoaXMuY3VycmVudFVybFRyZWUpfWdldEN1cnJlbnROYXZpZ2F0aW9uKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''Y3VycmVudE5hdmlnYXRpb259dHJpZ2dlckV2ZW50KGgpe3RoaXMuZXZlbnRzLm5leHQoaCl9cmVzZXRDb25maWcoaCl7dGhpcy5jb25maWc9aC5tYXAoZkgpLHRoaXMubmF2aWdhdGVkPSExLHRoaXMubGFzdFN1Y2Nlc3NmdWxJZD0tMX1uZ09uRGVzdHJveSgpe3RoaXMuZGlzcG9zZSgpfWRp''@;'; put 'put ''c3Bvc2UoKXt0aGlzLnRyYW5zaXRpb25zLmNvbXBsZXRlKCksdGhpcy5sb2NhdGlvblN1YnNjcmlwdGlvbiYmKHRoaXMubG9jYXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLmxvY2F0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCksdGhpcy5kaXNwb3NlZD0hMH1jcmVhdGVVcmxU''@;'; put 'put ''cmVlKGgsdj17fSl7Y29uc3R7cmVsYXRpdmVUbzp5LHF1ZXJ5UGFyYW1zOkMsZnJhZ21lbnQ6SSxxdWVyeVBhcmFtc0hhbmRsaW5nOloscHJlc2VydmVGcmFnbWVudDp1ZX09dixfZT15fHx0aGlzLnJvdXRlclN0YXRlLnJvb3QsQmU9dWU/dGhpcy5jdXJyZW50VXJsVHJlZS5mcmFnbWVudDpJ''@;'; put 'put ''O2xldCBOZT1udWxsO3N3aXRjaChaKXtjYXNlIm1lcmdlIjpOZT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5jdXJyZW50VXJsVHJlZS5xdWVyeVBhcmFtcyksQyk7YnJlYWs7Y2FzZSJwcmVzZXJ2ZSI6TmU9dGhpcy5jdXJyZW50VXJsVHJlZS5xdWVyeVBhcmFtczticmVh''@;'; put 'put ''aztkZWZhdWx0Ok5lPUN8fG51bGx9cmV0dXJuIG51bGwhPT1OZSYmKE5lPXRoaXMucmVtb3ZlRW1wdHlQcm9wcyhOZSkpLFMwZShfZSx0aGlzLmN1cnJlbnRVcmxUcmVlLGgsTmUsbnVsbCE9QmU/QmU6bnVsbCl9bmF2aWdhdGVCeVVybChoLHY9e3NraXBMb2NhdGlvbkNoYW5nZTohMX0pe2Nv''@;'; put 'put ''bnN0IHk9ZzcoaCk/aDp0aGlzLnBhcnNlVXJsKGgpLEM9dGhpcy51cmxIYW5kbGluZ1N0cmF0ZWd5Lm1lcmdlKHksdGhpcy5yYXdVcmxUcmVlKTtyZXR1cm4gdGhpcy5zY2hlZHVsZU5hdmlnYXRpb24oQywiaW1wZXJhdGl2ZSIsbnVsbCx2KX1uYXZpZ2F0ZShoLHY9e3NraXBMb2NhdGlvbkNo''@;'; put 'put ''YW5nZTohMX0pe3JldHVybiBmdW5jdGlvbiBnb2UoZCl7Zm9yKGxldCBnPTA7ZzxkLmxlbmd0aDtnKyspe2lmKG51bGw9PWRbZ10pdGhyb3cgbmV3IGVuKDQwMDgsZmFsc2UpfX0oaCksdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY3JlYXRlVXJsVHJlZShoLHYpLHYpfXNlcmlhbGl6ZVVybCho''@;'; put 'put ''KXtyZXR1cm4gdGhpcy51cmxTZXJpYWxpemVyLnNlcmlhbGl6ZShoKX1wYXJzZVVybChoKXtsZXQgdjt0cnl7dj10aGlzLnVybFNlcmlhbGl6ZXIucGFyc2UoaCl9Y2F0Y2goeSl7dj10aGlzLm1hbGZvcm1lZFVyaUVycm9ySGFuZGxlcih5LHRoaXMudXJsU2VyaWFsaXplcixoKX1yZXR1cm4g''@;'; put 'put ''dn1pc0FjdGl2ZShoLHYpe2xldCB5O2lmKHk9ITA9PT12P09iamVjdC5hc3NpZ24oe30sZG9lKTohMT09PXY/T2JqZWN0LmFzc2lnbih7fSxCSSk6dixnNyhoKSlyZXR1cm4gQ1kodGhpcy5jdXJyZW50VXJsVHJlZSxoLHkpO2NvbnN0IEM9dGhpcy5wYXJzZVVybChoKTtyZXR1cm4gQ1kodGhp''@;'; put 'put ''cy5jdXJyZW50VXJsVHJlZSxDLHkpfXJlbW92ZUVtcHR5UHJvcHMoaCl7cmV0dXJuIE9iamVjdC5rZXlzKGgpLnJlZHVjZSgodix5KT0+e2NvbnN0IEM9aFt5XTtyZXR1cm4gbnVsbCE9QyYmKHZbeV09Qyksdn0se30pfXByb2Nlc3NOYXZpZ2F0aW9ucygpe3RoaXMubmF2aWdhdGlvbnMuc3Vi''@;'; put 'put ''c2NyaWJlKGg9Pnt2YXIgdjt0aGlzLm5hdmlnYXRlZD0hMCx0aGlzLmxhc3RTdWNjZXNzZnVsSWQ9aC5pZCx0aGlzLmN1cnJlbnRQYWdlSWQ9aC50YXJnZXRQYWdlSWQsdGhpcy5ldmVudHMubmV4dChuZXcgRzYoaC5pZCx0aGlzLnNlcmlhbGl6ZVVybChoLmV4dHJhY3RlZFVybCksdGhpcy5z''@;'; put 'put ''ZXJpYWxpemVVcmwodGhpcy5jdXJyZW50VXJsVHJlZSkpKSx0aGlzLmxhc3RTdWNjZXNzZnVsTmF2aWdhdGlvbj10aGlzLmN1cnJlbnROYXZpZ2F0aW9uLG51bGw9PT0odj10aGlzLnRpdGxlU3RyYXRlZ3kpfHx2b2lkIDA9PT12fHx2LnVwZGF0ZVRpdGxlKHRoaXMucm91dGVyU3RhdGUuc25h''@;'; put 'put ''cHNob3QpLGgucmVzb2x2ZSghMCl9LGg9Pnt0aGlzLmNvbnNvbGUud2FybihgVW5oYW5kbGVkIE5hdmlnYXRpb24gRXJyb3I6ICR7aH1gKX0pfXNjaGVkdWxlTmF2aWdhdGlvbihoLHYseSxDLEkpe3ZhciBaLHVlO2lmKHRoaXMuZGlzcG9zZWQpcmV0dXJuIFByb21pc2UucmVzb2x2ZSghMSk7''@;'; put 'put ''bGV0IF9lLEJlLE5lO0k/KF9lPUkucmVzb2x2ZSxCZT1JLnJlamVjdCxOZT1JLnByb21pc2UpOk5lPW5ldyBQcm9taXNlKChPdCwkdCk9PntfZT1PdCxCZT0kdH0pO2NvbnN0IEtlPSsrdGhpcy5uYXZpZ2F0aW9uSWQ7bGV0IHB0O3JldHVybiJjb21wdXRlZCI9PT10aGlzLmNhbmNlbGVkTmF2''@;'; put 'put ''aWdhdGlvblJlc29sdXRpb24/KDA9PT10aGlzLmN1cnJlbnRQYWdlSWQmJih5PXRoaXMubG9jYXRpb24uZ2V0U3RhdGUoKSkscHQ9eSYmeS5cdTAyNzVyb3V0ZXJQYWdlSWQ/eS5cdTAyNzVyb3V0ZXJQYWdlSWQ6Qy5yZXBsYWNlVXJsfHxDLnNraXBMb2NhdGlvbkNoYW5nZT9udWxsIT09KFo9''@;'; put 'put ''dGhpcy5icm93c2VyUGFnZUlkKSYmdm9pZCAwIT09Wj9aOjA6KG51bGwhPT0odWU9dGhpcy5icm93c2VyUGFnZUlkKSYmdm9pZCAwIT09dWU/dWU6MCkrMSk6cHQ9MCx0aGlzLnNldFRyYW5zaXRpb24oe2lkOktlLHRhcmdldFBhZ2VJZDpwdCxzb3VyY2U6dixyZXN0b3JlZFN0YXRlOnksY3Vy''@;'; put 'put ''cmVudFVybFRyZWU6dGhpcy5jdXJyZW50VXJsVHJlZSxjdXJyZW50UmF3VXJsOnRoaXMucmF3VXJsVHJlZSxyYXdVcmw6aCxleHRyYXM6QyxyZXNvbHZlOl9lLHJlamVjdDpCZSxwcm9taXNlOk5lLGN1cnJlbnRTbmFwc2hvdDp0aGlzLnJvdXRlclN0YXRlLnNuYXBzaG90LGN1cnJlbnRSb3V0''@;'; put 'put ''ZXJTdGF0ZTp0aGlzLnJvdXRlclN0YXRlfSksTmUuY2F0Y2goT3Q9PlByb21pc2UucmVqZWN0KE90KSl9c2V0QnJvd3NlclVybChoLHYpe2NvbnN0IHk9dGhpcy51cmxTZXJpYWxpemVyLnNlcmlhbGl6ZShoKSxDPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx2LmV4dHJhcy5zdGF0''@;'; put 'put ''ZSksdGhpcy5nZW5lcmF0ZU5nUm91dGVyU3RhdGUodi5pZCx2LnRhcmdldFBhZ2VJZCkpO3RoaXMubG9jYXRpb24uaXNDdXJyZW50UGF0aEVxdWFsVG8oeSl8fHYuZXh0cmFzLnJlcGxhY2VVcmw/dGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoeSwiIixDKTp0aGlzLmxvY2F0aW9uLmdvKHks''@;'; put 'put ''IiIsQyl9cmVzdG9yZUhpc3RvcnkoaCx2PSExKXt2YXIgeSxDO2lmKCJjb21wdXRlZCI9PT10aGlzLmNhbmNlbGVkTmF2aWdhdGlvblJlc29sdXRpb24pe2NvbnN0IEk9dGhpcy5jdXJyZW50UGFnZUlkLWgudGFyZ2V0UGFnZUlkOyJwb3BzdGF0ZSIhPT1oLnNvdXJjZSYmImVhZ2VyIiE9PXRo''@;'; put 'put ''aXMudXJsVXBkYXRlU3RyYXRlZ3kmJnRoaXMuY3VycmVudFVybFRyZWUhPT0obnVsbD09PSh5PXRoaXMuY3VycmVudE5hdmlnYXRpb24pfHx2b2lkIDA9PT15P3ZvaWQgMDp5LmZpbmFsVXJsKXx8MD09PUk/dGhpcy5jdXJyZW50VXJsVHJlZT09PShudWxsPT09KEM9dGhpcy5jdXJyZW50TmF2''@;'; put 'put ''aWdhdGlvbil8fHZvaWQgMD09PUM/dm9pZCAwOkMuZmluYWxVcmwpJiYwPT09SSYmKHRoaXMucmVzZXRTdGF0ZShoKSx0aGlzLmJyb3dzZXJVcmxUcmVlPWguY3VycmVudFVybFRyZWUsdGhpcy5yZXNldFVybFRvQ3VycmVudFVybFRyZWUoKSk6dGhpcy5sb2NhdGlvbi5oaXN0b3J5R28oSSl9''@;'; put 'put ''ZWxzZSJyZXBsYWNlIj09PXRoaXMuY2FuY2VsZWROYXZpZ2F0aW9uUmVzb2x1dGlvbiYmKHYmJnRoaXMucmVzZXRTdGF0ZShoKSx0aGlzLnJlc2V0VXJsVG9DdXJyZW50VXJsVHJlZSgpKX1yZXNldFN0YXRlKGgpe3RoaXMucm91dGVyU3RhdGU9aC5jdXJyZW50Um91dGVyU3RhdGUsdGhpcy5j''@;'; put 'put ''dXJyZW50VXJsVHJlZT1oLmN1cnJlbnRVcmxUcmVlLHRoaXMucmF3VXJsVHJlZT10aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3kubWVyZ2UodGhpcy5jdXJyZW50VXJsVHJlZSxoLnJhd1VybCl9cmVzZXRVcmxUb0N1cnJlbnRVcmxUcmVlKCl7dGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodGhp''@;'; put 'put ''cy51cmxTZXJpYWxpemVyLnNlcmlhbGl6ZSh0aGlzLnJhd1VybFRyZWUpLCIiLHRoaXMuZ2VuZXJhdGVOZ1JvdXRlclN0YXRlKHRoaXMubGFzdFN1Y2Nlc3NmdWxJZCx0aGlzLmN1cnJlbnRQYWdlSWQpKX1jYW5jZWxOYXZpZ2F0aW9uVHJhbnNpdGlvbihoLHYseSl7Y29uc3QgQz1uZXcgeUko''@;'; put 'put ''aC5pZCx0aGlzLnNlcmlhbGl6ZVVybChoLmV4dHJhY3RlZFVybCksdix5KTt0aGlzLnRyaWdnZXJFdmVudChDKSxoLnJlc29sdmUoITEpfWdlbmVyYXRlTmdSb3V0ZXJTdGF0ZShoLHYpe3JldHVybiJjb21wdXRlZCI9PT10aGlzLmNhbmNlbGVkTmF2aWdhdGlvblJlc29sdXRpb24/e25hdmln''@;'; put 'put ''YXRpb25JZDpoLFx1MDI3NXJvdXRlclBhZ2VJZDp2fTp7bmF2aWdhdGlvbklkOmh9fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7SzkoKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4ga1UoKX0scHJvdmlkZWRJbjoicm9vdCJ9KSxk''@;'; put 'put ''fSkoKTtmdW5jdGlvbiBFSChkKXtyZXR1cm4iaW1wZXJhdGl2ZSIhPT1kfWxldCBZNj0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSl7dGhpcy5yb3V0ZXI9aCx0aGlzLnJvdXRlPXYsdGhpcy50YWJJbmRleEF0dHJpYnV0ZT15LHRoaXMucmVuZGVyZXI9Qyx0aGlzLmVsPUks''@;'; put 'put ''dGhpcy5jb21tYW5kcz1udWxsLHRoaXMub25DaGFuZ2VzPW5ldyAkZSx0aGlzLnNldFRhYkluZGV4SWZOb3RPbk5hdGl2ZUVsKCIwIil9c2V0VGFiSW5kZXhJZk5vdE9uTmF0aXZlRWwoaCl7aWYobnVsbCE9dGhpcy50YWJJbmRleEF0dHJpYnV0ZSlyZXR1cm47Y29uc3Qgdj10aGlzLnJlbmRl''@;'; put 'put ''cmVyLHk9dGhpcy5lbC5uYXRpdmVFbGVtZW50O251bGwhPT1oP3Yuc2V0QXR0cmlidXRlKHksInRhYmluZGV4IixoKTp2LnJlbW92ZUF0dHJpYnV0ZSh5LCJ0YWJpbmRleCIpfW5nT25DaGFuZ2VzKGgpe3RoaXMub25DaGFuZ2VzLm5leHQodGhpcyl9c2V0IHJvdXRlckxpbmsoaCl7bnVsbCE9''@;'; put 'put ''aD8odGhpcy5jb21tYW5kcz1BcnJheS5pc0FycmF5KGgpP2g6W2hdLHRoaXMuc2V0VGFiSW5kZXhJZk5vdE9uTmF0aXZlRWwoIjAiKSk6KHRoaXMuY29tbWFuZHM9bnVsbCx0aGlzLnNldFRhYkluZGV4SWZOb3RPbk5hdGl2ZUVsKG51bGwpKX1vbkNsaWNrKCl7aWYobnVsbD09PXRoaXMudXJs''@;'; put 'put ''VHJlZSlyZXR1cm4hMDtjb25zdCBoPXtza2lwTG9jYXRpb25DaGFuZ2U6SDYodGhpcy5za2lwTG9jYXRpb25DaGFuZ2UpLHJlcGxhY2VVcmw6SDYodGhpcy5yZXBsYWNlVXJsKSxzdGF0ZTp0aGlzLnN0YXRlfTtyZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnVybFRyZWUs''@;'; put 'put ''aCksITB9Z2V0IHVybFRyZWUoKXtyZXR1cm4gbnVsbD09PXRoaXMuY29tbWFuZHM/bnVsbDp0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKHRoaXMuY29tbWFuZHMse3JlbGF0aXZlVG86dm9pZCAwIT09dGhpcy5yZWxhdGl2ZVRvP3RoaXMucmVsYXRpdmVUbzp0aGlzLnJvdXRlLHF1ZXJ5UGFy''@;'; put 'put ''YW1zOnRoaXMucXVlcnlQYXJhbXMsZnJhZ21lbnQ6dGhpcy5mcmFnbWVudCxxdWVyeVBhcmFtc0hhbmRsaW5nOnRoaXMucXVlcnlQYXJhbXNIYW5kbGluZyxwcmVzZXJ2ZUZyYWdtZW50Okg2KHRoaXMucHJlc2VydmVGcmFnbWVudCl9KX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgp''@;'; put 'put ''e3JldHVybiBuZXcoaHx8ZCkoS3QoWmwpLEt0KFB1KSxnMygidGFiaW5kZXgiKSxLdChHYSksS3QoYm8pKX0sZC5cdTAyNzVkaXI9V2koe3R5cGU6ZCxzZWxlY3RvcnM6W1siIiwicm91dGVyTGluayIsIiIsNSwiYSIsNSwiYXJlYSJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgm''@;'; put 'put ''JkduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5vbkNsaWNrKCl9KX0saW5wdXRzOntxdWVyeVBhcmFtczoicXVlcnlQYXJhbXMiLGZyYWdtZW50OiJmcmFnbWVudCIscXVlcnlQYXJhbXNIYW5kbGluZzoicXVlcnlQYXJhbXNIYW5kbGluZyIscHJlc2VydmVGcmFnbWVudDoicHJlc2Vy''@;'; put 'put ''dmVGcmFnbWVudCIsc2tpcExvY2F0aW9uQ2hhbmdlOiJza2lwTG9jYXRpb25DaGFuZ2UiLHJlcGxhY2VVcmw6InJlcGxhY2VVcmwiLHN0YXRlOiJzdGF0ZSIscmVsYXRpdmVUbzoicmVsYXRpdmVUbyIscm91dGVyTGluazoicm91dGVyTGluayJ9LGZlYXR1cmVzOltEMl19KSxkfSkoKSx2Nz0o''@;'; put 'put ''KCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5KXt0aGlzLnJvdXRlcj1oLHRoaXMucm91dGU9dix0aGlzLmxvY2F0aW9uU3RyYXRlZ3k9eSx0aGlzLmNvbW1hbmRzPW51bGwsdGhpcy5ocmVmPW51bGwsdGhpcy5vbkNoYW5nZXM9bmV3ICRlLHRoaXMuc3Vic2NyaXB0aW9uPWguZXZlbnRz''@;'; put 'put ''LnN1YnNjcmliZShDPT57QyBpbnN0YW5jZW9mIEc2JiZ0aGlzLnVwZGF0ZVRhcmdldFVybEFuZEhyZWYoKX0pfXNldCByb3V0ZXJMaW5rKGgpe3RoaXMuY29tbWFuZHM9bnVsbCE9aD9BcnJheS5pc0FycmF5KGgpP2g6W2hdOm51bGx9bmdPbkNoYW5nZXMoaCl7dGhpcy51cGRhdGVUYXJnZXRV''@;'; put 'put ''cmxBbmRIcmVmKCksdGhpcy5vbkNoYW5nZXMubmV4dCh0aGlzKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9b25DbGljayhoLHYseSxDLEkpe2lmKDAhPT1ofHx2fHx5fHxDfHxJfHwic3RyaW5nIj09dHlwZW9mIHRoaXMudGFyZ2V0JiYiX3NlbGYiIT10''@;'; put 'put ''aGlzLnRhcmdldHx8bnVsbD09PXRoaXMudXJsVHJlZSlyZXR1cm4hMDtjb25zdCBaPXtza2lwTG9jYXRpb25DaGFuZ2U6SDYodGhpcy5za2lwTG9jYXRpb25DaGFuZ2UpLHJlcGxhY2VVcmw6SDYodGhpcy5yZXBsYWNlVXJsKSxzdGF0ZTp0aGlzLnN0YXRlfTtyZXR1cm4gdGhpcy5yb3V0ZXIu''@;'; put 'put ''bmF2aWdhdGVCeVVybCh0aGlzLnVybFRyZWUsWiksITF9dXBkYXRlVGFyZ2V0VXJsQW5kSHJlZigpe3RoaXMuaHJlZj1udWxsIT09dGhpcy51cmxUcmVlP3RoaXMubG9jYXRpb25TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxVcmwodGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKHRoaXMudXJsVHJl''@;'; put 'put ''ZSkpOm51bGx9Z2V0IHVybFRyZWUoKXtyZXR1cm4gbnVsbD09PXRoaXMuY29tbWFuZHM/bnVsbDp0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKHRoaXMuY29tbWFuZHMse3JlbGF0aXZlVG86dm9pZCAwIT09dGhpcy5yZWxhdGl2ZVRvP3RoaXMucmVsYXRpdmVUbzp0aGlzLnJvdXRlLHF1ZXJ5''@;'; put 'put ''UGFyYW1zOnRoaXMucXVlcnlQYXJhbXMsZnJhZ21lbnQ6dGhpcy5mcmFnbWVudCxxdWVyeVBhcmFtc0hhbmRsaW5nOnRoaXMucXVlcnlQYXJhbXNIYW5kbGluZyxwcmVzZXJ2ZUZyYWdtZW50Okg2KHRoaXMucHJlc2VydmVGcmFnbWVudCl9KX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9u''@;'; put 'put ''KGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoWmwpLEt0KFB1KSxLdChONikpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhIiwicm91dGVyTGluayIsIiJdLFsiYXJlYSIsInJvdXRlckxpbmsiLCIiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsx''@;'; put 'put ''JmgmJkduKCJjbGljayIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25DbGljayhDLmJ1dHRvbixDLmN0cmxLZXksQy5zaGlmdEtleSxDLmFsdEtleSxDLm1ldGFLZXkpfSksMiZoJiZHaSgidGFyZ2V0Iix2LnRhcmdldCkoImhyZWYiLHYuaHJlZixUOSl9LGlucHV0czp7dGFyZ2V0OiJ0YXJnZXQi''@;'; put 'put ''LHF1ZXJ5UGFyYW1zOiJxdWVyeVBhcmFtcyIsZnJhZ21lbnQ6ImZyYWdtZW50IixxdWVyeVBhcmFtc0hhbmRsaW5nOiJxdWVyeVBhcmFtc0hhbmRsaW5nIixwcmVzZXJ2ZUZyYWdtZW50OiJwcmVzZXJ2ZUZyYWdtZW50Iixza2lwTG9jYXRpb25DaGFuZ2U6InNraXBMb2NhdGlvbkNoYW5nZSIs''@;'; put 'put ''cmVwbGFjZVVybDoicmVwbGFjZVVybCIsc3RhdGU6InN0YXRlIixyZWxhdGl2ZVRvOiJyZWxhdGl2ZVRvIixyb3V0ZXJMaW5rOiJyb3V0ZXJMaW5rIn0sZmVhdHVyZXM6W0QyXX0pLGR9KSgpLGxrPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLFope3RoaXMucm91dGVyPWgs''@;'; put 'put ''dGhpcy5lbGVtZW50PXYsdGhpcy5yZW5kZXJlcj15LHRoaXMuY2RyPUMsdGhpcy5saW5rPUksdGhpcy5saW5rV2l0aEhyZWY9Wix0aGlzLmNsYXNzZXM9W10sdGhpcy5pc0FjdGl2ZT0hMSx0aGlzLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zPXtleGFjdDohMX0sdGhpcy5pc0FjdGl2ZUNoYW5n''@;'; put 'put ''ZT1uZXcgYXIsdGhpcy5yb3V0ZXJFdmVudHNTdWJzY3JpcHRpb249aC5ldmVudHMuc3Vic2NyaWJlKHVlPT57dWUgaW5zdGFuY2VvZiBHNiYmdGhpcy51cGRhdGUoKX0pfW5nQWZ0ZXJDb250ZW50SW5pdCgpe2FhKHRoaXMubGlua3MuY2hhbmdlcyx0aGlzLmxpbmtzV2l0aEhyZWZzLmNoYW5n''@;'; put 'put ''ZXMsYWEobnVsbCkpLnBpcGUocXQoKSkuc3Vic2NyaWJlKGg9Pnt0aGlzLnVwZGF0ZSgpLHRoaXMuc3Vic2NyaWJlVG9FYWNoTGlua09uQ2hhbmdlcygpfSl9c3Vic2NyaWJlVG9FYWNoTGlua09uQ2hhbmdlcygpe3ZhciBoO251bGw9PT0oaD10aGlzLmxpbmtJbnB1dENoYW5nZXNTdWJzY3Jp''@;'; put 'put ''cHRpb24pfHx2b2lkIDA9PT1ofHxoLnVuc3Vic2NyaWJlKCk7Y29uc3Qgdj1bLi4udGhpcy5saW5rcy50b0FycmF5KCksLi4udGhpcy5saW5rc1dpdGhIcmVmcy50b0FycmF5KCksdGhpcy5saW5rLHRoaXMubGlua1dpdGhIcmVmXS5maWx0ZXIoeT0+ISF5KS5tYXAoeT0+eS5vbkNoYW5nZXMp''@;'; put 'put ''O3RoaXMubGlua0lucHV0Q2hhbmdlc1N1YnNjcmlwdGlvbj1kbih2KS5waXBlKHF0KCkpLnN1YnNjcmliZSh5PT57dGhpcy5pc0FjdGl2ZSE9PXRoaXMuaXNMaW5rQWN0aXZlKHRoaXMucm91dGVyKSh5KSYmdGhpcy51cGRhdGUoKX0pfXNldCByb3V0ZXJMaW5rQWN0aXZlKGgpe2NvbnN0IHY9''@;'; put 'put ''QXJyYXkuaXNBcnJheShoKT9oOmguc3BsaXQoIiAiKTt0aGlzLmNsYXNzZXM9di5maWx0ZXIoeT0+ISF5KX1uZ09uQ2hhbmdlcyhoKXt0aGlzLnVwZGF0ZSgpfW5nT25EZXN0cm95KCl7dmFyIGg7dGhpcy5yb3V0ZXJFdmVudHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSxudWxsPT09KGg9''@;'; put 'put ''dGhpcy5saW5rSW5wdXRDaGFuZ2VzU3Vic2NyaXB0aW9uKXx8dm9pZCAwPT09aHx8aC51bnN1YnNjcmliZSgpfXVwZGF0ZSgpeyF0aGlzLmxpbmtzfHwhdGhpcy5saW5rc1dpdGhIcmVmc3x8IXRoaXMucm91dGVyLm5hdmlnYXRlZHx8UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2NvbnN0''@;'; put 'put ''IGg9dGhpcy5oYXNBY3RpdmVMaW5rcygpO3RoaXMuaXNBY3RpdmUhPT1oJiYodGhpcy5pc0FjdGl2ZT1oLHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpLHRoaXMuY2xhc3Nlcy5mb3JFYWNoKHY9PntoP3RoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsdik6''@;'; put 'put ''dGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCx2KX0pLGgmJnZvaWQgMCE9PXRoaXMuYXJpYUN1cnJlbnRXaGVuQWN0aXZlP3RoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCJhcmlhLWN1cnJlbnQi''@;'; put 'put ''LHRoaXMuYXJpYUN1cnJlbnRXaGVuQWN0aXZlLnRvU3RyaW5nKCkpOnRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCJhcmlhLWN1cnJlbnQiKSx0aGlzLmlzQWN0aXZlQ2hhbmdlLmVtaXQoaCkpfSl9aXNMaW5rQWN0aXZlKGgpe2NvbnN0''@;'; put 'put ''IHY9ZnVuY3Rpb24gU1UoZCl7cmV0dXJuISFkLnBhdGhzfSh0aGlzLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zKT90aGlzLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zOnRoaXMucm91dGVyTGlua0FjdGl2ZU9wdGlvbnMuZXhhY3R8fCExO3JldHVybiB5PT4hIXkudXJsVHJlZSYmaC5pc0FjdGl2''@;'; put 'put ''ZSh5LnVybFRyZWUsdil9aGFzQWN0aXZlTGlua3MoKXtjb25zdCBoPXRoaXMuaXNMaW5rQWN0aXZlKHRoaXMucm91dGVyKTtyZXR1cm4gdGhpcy5saW5rJiZoKHRoaXMubGluayl8fHRoaXMubGlua1dpdGhIcmVmJiZoKHRoaXMubGlua1dpdGhIcmVmKXx8dGhpcy5saW5rcy5zb21lKGgpfHx0''@;'; put 'put ''aGlzLmxpbmtzV2l0aEhyZWZzLnNvbWUoaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KFpsKSxLdChibyksS3QoR2EpLEt0KGQxKSxLdChZNiw4KSxLdCh2Nyw4KSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsInJv''@;'; put 'put ''dXRlckxpbmtBY3RpdmUiLCIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmKHhvKHksWTYsNSkseG8oeSx2Nyw1KSksMiZoKXtsZXQgQztIaShDPSRpKCkpJiYodi5saW5rcz1DKSxIaShDPSRpKCkpJiYodi5saW5rc1dpdGhIcmVmcz1DKX19LGlucHV0czp7cm91''@;'; put 'put ''dGVyTGlua0FjdGl2ZU9wdGlvbnM6InJvdXRlckxpbmtBY3RpdmVPcHRpb25zIixhcmlhQ3VycmVudFdoZW5BY3RpdmU6ImFyaWFDdXJyZW50V2hlbkFjdGl2ZSIscm91dGVyTGlua0FjdGl2ZToicm91dGVyTGlua0FjdGl2ZSJ9LG91dHB1dHM6e2lzQWN0aXZlQ2hhbmdlOiJpc0FjdGl2ZUNo''@;'; put 'put ''YW5nZSJ9LGV4cG9ydEFzOlsicm91dGVyTGlua0FjdGl2ZSJdLGZlYXR1cmVzOltEMl19KSxkfSkoKTtjbGFzcyBNVXt9bGV0IHhIPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJKXt0aGlzLnJvdXRlcj1oLHRoaXMuaW5qZWN0b3I9eSx0aGlzLnByZWxvYWRpbmdTdHJhdGVn''@;'; put 'put ''eT1DLHRoaXMubG9hZGVyPUl9c2V0VXBQcmVsb2FkaW5nKCl7dGhpcy5zdWJzY3JpcHRpb249dGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoTzIoaD0+aCBpbnN0YW5jZW9mIEc2KSxWNSgoKT0+dGhpcy5wcmVsb2FkKCkpKS5zdWJzY3JpYmUoKCk9Pnt9KX1wcmVsb2FkKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''cHJvY2Vzc1JvdXRlcyh0aGlzLmluamVjdG9yLHRoaXMucm91dGVyLmNvbmZpZyl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbiYmdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1wcm9jZXNzUm91dGVzKGgsdil7dmFyIHksQyxJO2NvbnN0IFo9W107Zm9yKGNvbnN0IHVl''@;'; put 'put ''IG9mIHYpe3VlLnByb3ZpZGVycyYmIXVlLl9pbmplY3RvciYmKHVlLl9pbmplY3Rvcj10Nyh1ZS5wcm92aWRlcnMsaCxgUm91dGU6ICR7dWUucGF0aH1gKSk7Y29uc3QgX2U9bnVsbCE9PSh5PXVlLl9pbmplY3RvcikmJnZvaWQgMCE9PXk/eTpoLEJlPW51bGwhPT0oQz11ZS5fbG9hZGVkSW5q''@;'; put 'put ''ZWN0b3IpJiZ2b2lkIDAhPT1DP0M6X2U7dWUubG9hZENoaWxkcmVuJiYhdWUuX2xvYWRlZFJvdXRlcyYmdm9pZCAwPT09dWUuY2FuTG9hZHx8dWUubG9hZENvbXBvbmVudCYmIXVlLl9sb2FkZWRDb21wb25lbnQ/Wi5wdXNoKHRoaXMucHJlbG9hZENvbmZpZyhfZSx1ZSkpOih1ZS5jaGlsZHJl''@;'; put 'put ''bnx8dWUuX2xvYWRlZFJvdXRlcykmJloucHVzaCh0aGlzLnByb2Nlc3NSb3V0ZXMoQmUsbnVsbCE9PShJPXVlLmNoaWxkcmVuKSYmdm9pZCAwIT09ST9JOnVlLl9sb2FkZWRSb3V0ZXMpKX1yZXR1cm4gZG4oWikucGlwZShxdCgpKX1wcmVsb2FkQ29uZmlnKGgsdil7cmV0dXJuIHRoaXMucHJl''@;'; put 'put ''bG9hZGluZ1N0cmF0ZWd5LnByZWxvYWQodiwoKT0+e2xldCB5O3k9di5sb2FkQ2hpbGRyZW4mJnZvaWQgMD09PXYuY2FuTG9hZD90aGlzLmxvYWRlci5sb2FkQ2hpbGRyZW4oaCx2KTphYShudWxsKTtjb25zdCBDPXkucGlwZShzcihJPT57dmFyIFo7cmV0dXJuIG51bGw9PT1JP2FhKHZvaWQg''@;'; put 'put ''MCk6KHYuX2xvYWRlZFJvdXRlcz1JLnJvdXRlcyx2Ll9sb2FkZWRJbmplY3Rvcj1JLmluamVjdG9yLHRoaXMucHJvY2Vzc1JvdXRlcyhudWxsIT09KFo9SS5pbmplY3RvcikmJnZvaWQgMCE9PVo/WjpoLEkucm91dGVzKSl9KSk7cmV0dXJuIHYubG9hZENvbXBvbmVudCYmIXYuX2xvYWRlZENv''@;'; put 'put ''bXBvbmVudD9kbihbQyx0aGlzLmxvYWRlci5sb2FkQ29tcG9uZW50KHYpXSkucGlwZShxdCgpKTpDfSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKFpsKSxDaShDVCksQ2koRTMpLENpKE1VKSxDaShNSCkpfSxkLlx1MDI3NXByb3Y9QWkoe3Rv''@;'; put 'put ''a2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpO2NvbnN0IEVVPW5ldyB6ZSgiIik7bGV0IG1vZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5PXt9KXt0aGlzLnJvdXRlcj1oLHRoaXMudmlld3BvcnRTY3JvbGxlcj12LHRoaXMub3B0aW9ucz15LHRoaXMubGFzdElkPTAs''@;'; put 'put ''dGhpcy5sYXN0U291cmNlPSJpbXBlcmF0aXZlIix0aGlzLnJlc3RvcmVkSWQ9MCx0aGlzLnN0b3JlPXt9LHkuc2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbj15LnNjcm9sbFBvc2l0aW9uUmVzdG9yYXRpb258fCJkaXNhYmxlZCIseS5hbmNob3JTY3JvbGxpbmc9eS5hbmNob3JTY3JvbGxpbmd8''@;'; put 'put ''fCJkaXNhYmxlZCJ9aW5pdCgpeyJkaXNhYmxlZCIhPT10aGlzLm9wdGlvbnMuc2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbiYmdGhpcy52aWV3cG9ydFNjcm9sbGVyLnNldEhpc3RvcnlTY3JvbGxSZXN0b3JhdGlvbigibWFudWFsIiksdGhpcy5yb3V0ZXJFdmVudHNTdWJzY3JpcHRpb249dGhp''@;'; put 'put ''cy5jcmVhdGVTY3JvbGxFdmVudHMoKSx0aGlzLnNjcm9sbEV2ZW50c1N1YnNjcmlwdGlvbj10aGlzLmNvbnN1bWVTY3JvbGxFdmVudHMoKX1jcmVhdGVTY3JvbGxFdmVudHMoKXtyZXR1cm4gdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShoPT57aCBpbnN0YW5jZW9mIEFJPyh0aGlzLnN0''@;'; put 'put ''b3JlW3RoaXMubGFzdElkXT10aGlzLnZpZXdwb3J0U2Nyb2xsZXIuZ2V0U2Nyb2xsUG9zaXRpb24oKSx0aGlzLmxhc3RTb3VyY2U9aC5uYXZpZ2F0aW9uVHJpZ2dlcix0aGlzLnJlc3RvcmVkSWQ9aC5yZXN0b3JlZFN0YXRlP2gucmVzdG9yZWRTdGF0ZS5uYXZpZ2F0aW9uSWQ6MCk6aCBpbnN0''@;'; put 'put ''YW5jZW9mIEc2JiYodGhpcy5sYXN0SWQ9aC5pZCx0aGlzLnNjaGVkdWxlU2Nyb2xsRXZlbnQoaCx0aGlzLnJvdXRlci5wYXJzZVVybChoLnVybEFmdGVyUmVkaXJlY3RzKS5mcmFnbWVudCkpfSl9Y29uc3VtZVNjcm9sbEV2ZW50cygpe3JldHVybiB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2Ny''@;'; put 'put ''aWJlKGg9PntoIGluc3RhbmNlb2Ygd0kmJihoLnBvc2l0aW9uPyJ0b3AiPT09dGhpcy5vcHRpb25zLnNjcm9sbFBvc2l0aW9uUmVzdG9yYXRpb24/dGhpcy52aWV3cG9ydFNjcm9sbGVyLnNjcm9sbFRvUG9zaXRpb24oWzAsMF0pOiJlbmFibGVkIj09PXRoaXMub3B0aW9ucy5zY3JvbGxQb3Np''@;'; put 'put ''dGlvblJlc3RvcmF0aW9uJiZ0aGlzLnZpZXdwb3J0U2Nyb2xsZXIuc2Nyb2xsVG9Qb3NpdGlvbihoLnBvc2l0aW9uKTpoLmFuY2hvciYmImVuYWJsZWQiPT09dGhpcy5vcHRpb25zLmFuY2hvclNjcm9sbGluZz90aGlzLnZpZXdwb3J0U2Nyb2xsZXIuc2Nyb2xsVG9BbmNob3IoaC5hbmNob3Ip''@;'; put 'put ''OiJkaXNhYmxlZCIhPT10aGlzLm9wdGlvbnMuc2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbiYmdGhpcy52aWV3cG9ydFNjcm9sbGVyLnNjcm9sbFRvUG9zaXRpb24oWzAsMF0pKX0pfXNjaGVkdWxlU2Nyb2xsRXZlbnQoaCx2KXt0aGlzLnJvdXRlci50cmlnZ2VyRXZlbnQobmV3IHdJKGgsInBv''@;'; put 'put ''cHN0YXRlIj09PXRoaXMubGFzdFNvdXJjZT90aGlzLnN0b3JlW3RoaXMucmVzdG9yZWRJZF06bnVsbCx2KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnJvdXRlckV2ZW50c1N1YnNjcmlwdGlvbiYmdGhpcy5yb3V0ZXJFdmVudHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLnNjcm9sbEV2''@;'; put 'put ''ZW50c1N1YnNjcmlwdGlvbiYmdGhpcy5zY3JvbGxFdmVudHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe0s5KCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y29uc3QgeFU9bmV3''@;'; put 'put ''IHplKCJST1VURVJfRk9SUk9PVF9HVUFSRCIpLFRVPW5ldyB6ZSgiIiksSVU9W1Y2LHtwcm92aWRlOlU1LHVzZUNsYXNzOkpGfSx7cHJvdmlkZTpabCx1c2VGYWN0b3J5OmtVfSxlayx7cHJvdmlkZTpQdSx1c2VGYWN0b3J5OmZ1bmN0aW9uIHB5KGQpe3JldHVybiBkLnJvdXRlclN0YXRlLnJv''@;'; put 'put ''b3R9LGRlcHM6W1psXX0sTUhdO2Z1bmN0aW9uIFBJKCl7cmV0dXJuIG5ldyBORygiUm91dGVyIixabCl9bGV0IFhoPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7fXN0YXRpYyBmb3JSb290KGgsdil7cmV0dXJue25nTW9kdWxlOmQscHJvdmlkZXJzOltJVSxbXSxMVShoKSx7cHJvdmlk''@;'; put 'put ''ZTp4VSx1c2VGYWN0b3J5OkFvZSxkZXBzOltbWmwsbmV3IG1mLG5ldyBMNF1dfSx7cHJvdmlkZTprSCx1c2VWYWx1ZTp2fHx7fX0sbnVsbCE9diYmdi51c2VIYXNoP3twcm92aWRlOk42LHVzZUNsYXNzOkJyZX06e3Byb3ZpZGU6TjYsdXNlQ2xhc3M6dVd9LHtwcm92aWRlOkVVLHVzZUZhY3Rv''@;'; put 'put ''cnk6KCk9Pntjb25zdCBkPWgyKFpsKSxnPWgyKGNpZSksaD1oMihrSCk7cmV0dXJuIGguc2Nyb2xsT2Zmc2V0JiZnLnNldE9mZnNldChoLnNjcm9sbE9mZnNldCksbmV3IG1vZShkLGcsaCl9fSxudWxsIT12JiZ2LnByZWxvYWRpbmdTdHJhdGVneT9OVSh2LnByZWxvYWRpbmdTdHJhdGVneSk6''@;'; put 'put ''W10se3Byb3ZpZGU6TkcsbXVsdGk6ITAsdXNlRmFjdG9yeTpQSX0sbnVsbCE9diYmdi5pbml0aWFsTmF2aWdhdGlvbj9SVSh2KTpbXSxbe3Byb3ZpZGU6T1UsdXNlRmFjdG9yeTpOSX0se3Byb3ZpZGU6RjYsbXVsdGk6ITAsdXNlRXhpc3Rpbmc6T1V9XV19fXN0YXRpYyBmb3JDaGlsZChoKXty''@;'; put 'put ''ZXR1cm57bmdNb2R1bGU6ZCxwcm92aWRlcnM6W0xVKGgpXX19fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKHhVLDgpKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHt9KSxkfSkoKTtmdW5jdGlvbiBBb2UoZCl7cmV0''@;'; put 'put ''dXJuImd1YXJkZWQifWZ1bmN0aW9uIExVKGQpe3JldHVyblt7cHJvdmlkZTpSSSxtdWx0aTohMCx1c2VWYWx1ZTpkfV19ZnVuY3Rpb24gTkkoKXtjb25zdCBkPWgyKFNzKTtyZXR1cm4gZz0+e3ZhciBoLHY7Y29uc3QgeT1kLmdldChrQyk7aWYoZyE9PXkuY29tcG9uZW50c1swXSlyZXR1cm47''@;'; put 'put ''Y29uc3QgQz1kLmdldChabCksST1kLmdldChCVSk7MT09PWQuZ2V0KFRIKSYmQy5pbml0aWFsTmF2aWdhdGlvbigpLG51bGw9PT0oaD1kLmdldChUVSxudWxsLGowLk9wdGlvbmFsKSl8fHZvaWQgMD09PWh8fGguc2V0VXBQcmVsb2FkaW5nKCksbnVsbD09PSh2PWQuZ2V0KEVVLG51bGwsajAu''@;'; put 'put ''T3B0aW9uYWwpKXx8dm9pZCAwPT09dnx8di5pbml0KCksQy5yZXNldFJvb3RDb21wb25lbnRUeXBlKHkuY29tcG9uZW50VHlwZXNbMF0pLEkubmV4dCgpLEkuY29tcGxldGUoKX19Y29uc3QgT1U9bmV3IHplKCIiKTtmdW5jdGlvbiBSVShkKXtyZXR1cm5bImRpc2FibGVkIj09PWQuaW5pdGlh''@;'; put 'put ''bE5hdmlnYXRpb24/W3twcm92aWRlOnlDLG11bHRpOiEwLHVzZUZhY3Rvcnk6KCk9Pntjb25zdCBkPWgyKFpsKTtyZXR1cm4oKT0+e2Quc2V0VXBMb2NhdGlvbkNoYW5nZUxpc3RlbmVyKCl9fX0se3Byb3ZpZGU6VEgsdXNlVmFsdWU6Mn1dOltdLCJlbmFibGVkQmxvY2tpbmciPT09ZC5pbml0''@;'; put 'put ''aWFsTmF2aWdhdGlvbj9be3Byb3ZpZGU6VEgsdXNlVmFsdWU6MH0se3Byb3ZpZGU6eUMsbXVsdGk6ITAsZGVwczpbU3NdLHVzZUZhY3Rvcnk6ZD0+e2NvbnN0IGc9ZC5nZXQoUnJlLFByb21pc2UucmVzb2x2ZShudWxsKSk7bGV0IGg9ITE7cmV0dXJuKCk9PmcudGhlbigoKT0+bmV3IFByb21p''@;'; put 'put ''c2UoeT0+e2NvbnN0IEM9ZC5nZXQoWmwpLEk9ZC5nZXQoQlUpOyhmdW5jdGlvbiB2KHkpe2QuZ2V0KFpsKS5ldmVudHMucGlwZShPMihJPT5JIGluc3RhbmNlb2YgRzZ8fEkgaW5zdGFuY2VvZiB5SXx8SSBpbnN0YW5jZW9mIHJIKSxtdChJPT5JIGluc3RhbmNlb2YgRzZ8fEkgaW5zdGFuY2Vv''@;'; put 'put ''ZiB5SSYmKDA9PT1JLmNvZGV8fDE9PT1JLmNvZGUpJiZudWxsKSxPMihJPT5udWxsIT09SSksSDUoMSkpLnN1YnNjcmliZSgoKT0+e3koKX0pfSkoKCk9Pnt5KCEwKSxoPSEwfSksQy5hZnRlclByZWFjdGl2YXRpb249KCk9Pih5KCEwKSxofHxJLmNsb3NlZD9hYSh2b2lkIDApOkkpLEMuaW5p''@;'; put 'put ''dGlhbE5hdmlnYXRpb24oKX0pKX19XTpbXV19Y29uc3QgQlU9bmV3IHplKCIiLHtmYWN0b3J5OigpPT5uZXcgJGV9KSxUSD1uZXcgemUoIiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9PjF9KTtmdW5jdGlvbiBOVShkKXtyZXR1cm5beEgse3Byb3ZpZGU6VFUsdXNlRXhpc3Rpbmc6''@;'; put 'put ''eEh9LHtwcm92aWRlOk1VLHVzZUV4aXN0aW5nOmR9XX12YXIgVlU9TCg0MDM5MCksd29lPUwoMjQ4NzkpO2NvbnN0IGpVPXtleHBpcmF0aW9uX2RhdGVfdW5saW1pdGVkOiEwLHVzZXJzX2FsbG93ZWQ6NSxyb3dzX2FsbG93ZWQ6MTUsZGlzYWJsZWRGaWxlVXBsb2FkOiEwLGRpc2FibGVkRWRp''@;'; put 'put ''dFJlY29yZDohMH0sYm9lPXt1c2Vyc19hbGxvd2VkOjF9O2xldCBzaz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7fXNldERjQWRhcHRlclNldHRpbmdzKGgpe3RoaXMuZGNBZGFwdGVyU2V0dGluZ3M9aH1nZXREY0FkYXB0ZXJTZXR0aW5ncygpe3JldHVybiB0aGlzLmRjQWRhcHRlclNl''@;'; put 'put ''dHRpbmdzfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxkfSkoKTtjbGFzcyBaVXtjb25zdHJ1Y3Rvcigpe3RoaXMuc2FzU2Vydmlj''@;'; put 'put ''ZT1udWxsLHRoaXMubWVzc2FnZT0iIix0aGlzLmRldGFpbHM9bmV3IERIfX1jbGFzcyBESHt9bGV0IExIPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLmFsZXJ0cz1uZXcgJGV9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3''@;'; put 'put ''NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLG11PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5hbGVydHNTZXJ2aWNlPWgsdGhpcy5vblNpZGViYXJUb2dnbGU9bmV3IGFyLHRoaXMub25TdGFydHVwRGF0YUxvYWRlZD1uZXcgYXIsdGhpcy5v''@;'; put 'put ''blNob3dBYm9ydE1vZGFsPW5ldyBhcix0aGlzLm9uUmVxdWVzdHNNb2RhbE9wZW49bmV3IGFyLHRoaXMub25EZW1vTGltaXRNb2RhbFNob3c9bmV3IGFyLHRoaXMudmlld0xhc3RVcmw9bnVsbCx0aGlzLnNpZGViYXJDbG9zZUxpbWl0PTEyODB9c2hvd0RlbW9MaW1pdE1vZGFsKCl7dGhpcy5v''@;'; put 'put ''bkRlbW9MaW1pdE1vZGFsU2hvdy5lbWl0KCl9c2hvd0luZm9Nb2RhbChoPSJJbmZvIix2KXt0aGlzLm9uU2hvd0Fib3J0TW9kYWwuZW1pdCh7bW9kYWxUaXRsZTpoLG1lc3NhZ2U6dixzYXNTZXJ2aWNlOiIiLGRldGFpbHM6bnVsbH0pfXNob3dBYm9ydE1vZGFsKGgsdix5LEMpe2xldCBJPXtz''@;'; put 'put ''YXNTZXJ2aWNlOmgsbWVzc2FnZTp2LGRldGFpbHM6eT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbmV3IERIKSx5KX07QyYmKEkubW9kYWxUaXRsZT1DKSx0aGlzLm9uU2hvd0Fib3J0TW9kYWwuZW1pdChJKX1vcGVuUmVxdWVzdHNNb2RhbCgpe3RoaXMub25SZXF1ZXN0c01vZGFs''@;'; put 'put ''T3Blbi5lbWl0KCEwKX1jYXRjaFJlc3BvbnNlRXJyb3IoaCx2KXtsZXQgeT0iU0FTIFNlcnZpY2UgZXJyb3Igb2N1cnJlZCI7aWYodi5lcnJvcil7bGV0IEM7eT12LmVycm9yLm1lc3NhZ2Usdi5lcnJvci5kZXRhaWxzJiZ2LmVycm9yLmRldGFpbHMubG9nJiYoQz12LmVycm9yLmRldGFpbHMu''@;'; put 'put ''bG9nKSwoIXl8fHkudHJpbSgpLmxlbmd0aDwxKSYmKHk9IlNBUyBTZXJ2aWNlIGVycm9yIG9jdXJyZWQiKSx0aGlzLnNob3dBYm9ydE1vZGFsKGgseSx7TE9HOkN9LCJSZXF1ZXN0IGVycm9yIil9ZWxzZSB0aGlzLnNob3dBYm9ydE1vZGFsKGgseSl9dG9nZ2xlU2lkZWJhcigpe3RoaXMub25T''@;'; put 'put ''aWRlYmFyVG9nZ2xlLmVtaXQoKX1jbG9zZVNpZGViYXIoKXt3aW5kb3cuaW5uZXJXaWR0aDx0aGlzLnNpZGViYXJDbG9zZUxpbWl0JiZ0aGlzLm9uU2lkZWJhclRvZ2dsZS5lbWl0KHtvcGVuOiExfSl9b3BlblNpZGViYXIoKXt0aGlzLm9uU2lkZWJhclRvZ2dsZS5lbWl0KHtvcGVuOiEwfSl9''@;'; put 'put ''c3RhcnR1cERhdGFMb2FkZWQoKXt0aGlzLm9uU3RhcnR1cERhdGFMb2FkZWQuZW1pdCgpfWRpc3BhdGNoRXZlbnQoaCl7bGV0IHY7ImZ1bmN0aW9uIj09dHlwZW9mIEV2ZW50P3Y9bmV3IEV2ZW50KGgpOih2PWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLHYuaW5pdEV2ZW50KGgsITAs''@;'; put 'put ''ITApKSx3aW5kb3cuZGlzcGF0Y2hFdmVudCh2KX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoQ2koTEgpKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxkfSkoKTt2YXIgVTM9''@;'; put 'put ''TCgxMTQwKSx6VT1MLm4oVTMpLEh1PUwoMjU4NTkpO2xldCBPSD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy51c2VyQ2hhbmdlPW5ldyAkZX1zZXQgdXNlcihoKXt0aGlzLl91c2VyPWgsdGhpcy51c2VyQ2hhbmdlLm5leHQoaCl9Z2V0IHVzZXIoKXtyZXR1cm4gdGhpcy5fdXNl''@;'; put 'put ''cn19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y2xhc3MgR1V7fWNsYXNzIFdVe31jbGFzcyBocHtjb25zdHJ1Y3RvcihnKXt0aGlzLm5vcm1hbGl6ZWRO''@;'; put 'put ''YW1lcz1uZXcgTWFwLHRoaXMubGF6eVVwZGF0ZT1udWxsLGc/dGhpcy5sYXp5SW5pdD0ic3RyaW5nIj09dHlwZW9mIGc/KCk9Pnt0aGlzLmhlYWRlcnM9bmV3IE1hcCxnLnNwbGl0KCJcbiIpLmZvckVhY2goaD0+e2NvbnN0IHY9aC5pbmRleE9mKCI6Iik7aWYodj4wKXtjb25zdCB5PWguc2xp''@;'; put 'put ''Y2UoMCx2KSxDPXkudG9Mb3dlckNhc2UoKSxJPWguc2xpY2UodisxKS50cmltKCk7dGhpcy5tYXliZVNldE5vcm1hbGl6ZWROYW1lKHksQyksdGhpcy5oZWFkZXJzLmhhcyhDKT90aGlzLmhlYWRlcnMuZ2V0KEMpLnB1c2goSSk6dGhpcy5oZWFkZXJzLnNldChDLFtJXSl9fSl9OigpPT57dGhp''@;'; put 'put ''cy5oZWFkZXJzPW5ldyBNYXAsT2JqZWN0LmtleXMoZykuZm9yRWFjaChoPT57bGV0IHY9Z1toXTtjb25zdCB5PWgudG9Mb3dlckNhc2UoKTsic3RyaW5nIj09dHlwZW9mIHYmJih2PVt2XSksdi5sZW5ndGg+MCYmKHRoaXMuaGVhZGVycy5zZXQoeSx2KSx0aGlzLm1heWJlU2V0Tm9ybWFsaXpl''@;'; put 'put ''ZE5hbWUoaCx5KSl9KX06dGhpcy5oZWFkZXJzPW5ldyBNYXB9aGFzKGcpe3JldHVybiB0aGlzLmluaXQoKSx0aGlzLmhlYWRlcnMuaGFzKGcudG9Mb3dlckNhc2UoKSl9Z2V0KGcpe3RoaXMuaW5pdCgpO2NvbnN0IGg9dGhpcy5oZWFkZXJzLmdldChnLnRvTG93ZXJDYXNlKCkpO3JldHVybiBo''@;'; put 'put ''JiZoLmxlbmd0aD4wP2hbMF06bnVsbH1rZXlzKCl7cmV0dXJuIHRoaXMuaW5pdCgpLEFycmF5LmZyb20odGhpcy5ub3JtYWxpemVkTmFtZXMudmFsdWVzKCkpfWdldEFsbChnKXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5oZWFkZXJzLmdldChnLnRvTG93ZXJDYXNlKCkpfHxudWxsfWFwcGVu''@;'; put 'put ''ZChnLGgpe3JldHVybiB0aGlzLmNsb25lKHtuYW1lOmcsdmFsdWU6aCxvcDoiYSJ9KX1zZXQoZyxoKXtyZXR1cm4gdGhpcy5jbG9uZSh7bmFtZTpnLHZhbHVlOmgsb3A6InMifSl9ZGVsZXRlKGcsaCl7cmV0dXJuIHRoaXMuY2xvbmUoe25hbWU6Zyx2YWx1ZTpoLG9wOiJkIn0pfW1heWJlU2V0''@;'; put 'put ''Tm9ybWFsaXplZE5hbWUoZyxoKXt0aGlzLm5vcm1hbGl6ZWROYW1lcy5oYXMoaCl8fHRoaXMubm9ybWFsaXplZE5hbWVzLnNldChoLGcpfWluaXQoKXt0aGlzLmxhenlJbml0JiYodGhpcy5sYXp5SW5pdCBpbnN0YW5jZW9mIGhwP3RoaXMuY29weUZyb20odGhpcy5sYXp5SW5pdCk6dGhpcy5s''@;'; put 'put ''YXp5SW5pdCgpLHRoaXMubGF6eUluaXQ9bnVsbCx0aGlzLmxhenlVcGRhdGUmJih0aGlzLmxhenlVcGRhdGUuZm9yRWFjaChnPT50aGlzLmFwcGx5VXBkYXRlKGcpKSx0aGlzLmxhenlVcGRhdGU9bnVsbCkpfWNvcHlGcm9tKGcpe2cuaW5pdCgpLEFycmF5LmZyb20oZy5oZWFkZXJzLmtleXMo''@;'; put 'put ''KSkuZm9yRWFjaChoPT57dGhpcy5oZWFkZXJzLnNldChoLGcuaGVhZGVycy5nZXQoaCkpLHRoaXMubm9ybWFsaXplZE5hbWVzLnNldChoLGcubm9ybWFsaXplZE5hbWVzLmdldChoKSl9KX1jbG9uZShnKXtjb25zdCBoPW5ldyBocDtyZXR1cm4gaC5sYXp5SW5pdD10aGlzLmxhenlJbml0JiZ0''@;'; put 'put ''aGlzLmxhenlJbml0IGluc3RhbmNlb2YgaHA/dGhpcy5sYXp5SW5pdDp0aGlzLGgubGF6eVVwZGF0ZT0odGhpcy5sYXp5VXBkYXRlfHxbXSkuY29uY2F0KFtnXSksaH1hcHBseVVwZGF0ZShnKXtjb25zdCBoPWcubmFtZS50b0xvd2VyQ2FzZSgpO3N3aXRjaChnLm9wKXtjYXNlImEiOmNhc2Ui''@;'; put 'put ''cyI6bGV0IHY9Zy52YWx1ZTtpZigic3RyaW5nIj09dHlwZW9mIHYmJih2PVt2XSksMD09PXYubGVuZ3RoKXJldHVybjt0aGlzLm1heWJlU2V0Tm9ybWFsaXplZE5hbWUoZy5uYW1lLGgpO2NvbnN0IHk9KCJhIj09PWcub3A/dGhpcy5oZWFkZXJzLmdldChoKTp2b2lkIDApfHxbXTt5LnB1c2go''@;'; put 'put ''Li4udiksdGhpcy5oZWFkZXJzLnNldChoLHkpO2JyZWFrO2Nhc2UiZCI6Y29uc3QgQz1nLnZhbHVlO2lmKEMpe2xldCBJPXRoaXMuaGVhZGVycy5nZXQoaCk7aWYoIUkpcmV0dXJuO0k9SS5maWx0ZXIoWj0+LTE9PT1DLmluZGV4T2YoWikpLDA9PT1JLmxlbmd0aD8odGhpcy5oZWFkZXJzLmRl''@;'; put 'put ''bGV0ZShoKSx0aGlzLm5vcm1hbGl6ZWROYW1lcy5kZWxldGUoaCkpOnRoaXMuaGVhZGVycy5zZXQoaCxJKX1lbHNlIHRoaXMuaGVhZGVycy5kZWxldGUoaCksdGhpcy5ub3JtYWxpemVkTmFtZXMuZGVsZXRlKGgpfX1mb3JFYWNoKGcpe3RoaXMuaW5pdCgpLEFycmF5LmZyb20odGhpcy5ub3Jt''@;'; put 'put ''YWxpemVkTmFtZXMua2V5cygpKS5mb3JFYWNoKGg9PmcodGhpcy5ub3JtYWxpemVkTmFtZXMuZ2V0KGgpLHRoaXMuaGVhZGVycy5nZXQoaCkpKX19Y2xhc3MgWVV7ZW5jb2RlS2V5KGcpe3JldHVybiBRVShnKX1lbmNvZGVWYWx1ZShnKXtyZXR1cm4gUVUoZyl9ZGVjb2RlS2V5KGcpe3JldHVy''@;'; put 'put ''biBkZWNvZGVVUklDb21wb25lbnQoZyl9ZGVjb2RlVmFsdWUoZyl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChnKX19Y29uc3QgVVU9LyUoXGRbYS1mMC05XSkvZ2ksQ29lPXs0MDoiQCIsIjNBIjoiOiIsMjQ6IiQiLCIyQyI6IiwiLCIzQiI6IjsiLCIzRCI6Ij0iLCIzRiI6Ij8iLCIyRiI6''@;'; put 'put ''Ii8ifTtmdW5jdGlvbiBRVShkKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGQpLnJlcGxhY2UoVVUsKGcsaCk9Pnt2YXIgdjtyZXR1cm4gbnVsbCE9PSh2PUNvZVtoXSkmJnZvaWQgMCE9PXY/djpnfSl9ZnVuY3Rpb24gVkkoZCl7cmV0dXJuYCR7ZH1gfWNsYXNzIFE1e2NvbnN0cnVjdG9y''@;'; put 'put ''KGc9e30pe2lmKHRoaXMudXBkYXRlcz1udWxsLHRoaXMuY2xvbmVGcm9tPW51bGwsdGhpcy5lbmNvZGVyPWcuZW5jb2Rlcnx8bmV3IFlVLGcuZnJvbVN0cmluZyl7aWYoZy5mcm9tT2JqZWN0KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNwZWNpZnkgYm90aCBmcm9tU3RyaW5nIGFuZCBmcm9t''@;'; put 'put ''T2JqZWN0LiIpO3RoaXMubWFwPWZ1bmN0aW9uIF9vZShkLGcpe2NvbnN0IGg9bmV3IE1hcDtyZXR1cm4gZC5sZW5ndGg+MCYmZC5yZXBsYWNlKC9eXD8vLCIiKS5zcGxpdCgiJiIpLmZvckVhY2goeT0+e2NvbnN0IEM9eS5pbmRleE9mKCI9IiksW0ksWl09LTE9PUM/W2cuZGVjb2RlS2V5KHkp''@;'; put 'put ''LCIiXTpbZy5kZWNvZGVLZXkoeS5zbGljZSgwLEMpKSxnLmRlY29kZVZhbHVlKHkuc2xpY2UoQysxKSldLHVlPWguZ2V0KEkpfHxbXTt1ZS5wdXNoKFopLGguc2V0KEksdWUpfSksaH0oZy5mcm9tU3RyaW5nLHRoaXMuZW5jb2Rlcil9ZWxzZSBnLmZyb21PYmplY3Q/KHRoaXMubWFwPW5ldyBN''@;'; put 'put ''YXAsT2JqZWN0LmtleXMoZy5mcm9tT2JqZWN0KS5mb3JFYWNoKGg9Pntjb25zdCB2PWcuZnJvbU9iamVjdFtoXSx5PUFycmF5LmlzQXJyYXkodik/di5tYXAoVkkpOltWSSh2KV07dGhpcy5tYXAuc2V0KGgseSl9KSk6dGhpcy5tYXA9bnVsbH1oYXMoZyl7cmV0dXJuIHRoaXMuaW5pdCgpLHRo''@;'; put 'put ''aXMubWFwLmhhcyhnKX1nZXQoZyl7dGhpcy5pbml0KCk7Y29uc3QgaD10aGlzLm1hcC5nZXQoZyk7cmV0dXJuIGg/aFswXTpudWxsfWdldEFsbChnKXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5tYXAuZ2V0KGcpfHxudWxsfWtleXMoKXtyZXR1cm4gdGhpcy5pbml0KCksQXJyYXkuZnJvbSh0''@;'; put 'put ''aGlzLm1hcC5rZXlzKCkpfWFwcGVuZChnLGgpe3JldHVybiB0aGlzLmNsb25lKHtwYXJhbTpnLHZhbHVlOmgsb3A6ImEifSl9YXBwZW5kQWxsKGcpe2NvbnN0IGg9W107cmV0dXJuIE9iamVjdC5rZXlzKGcpLmZvckVhY2godj0+e2NvbnN0IHk9Z1t2XTtBcnJheS5pc0FycmF5KHkpP3kuZm9y''@;'; put 'put ''RWFjaChDPT57aC5wdXNoKHtwYXJhbTp2LHZhbHVlOkMsb3A6ImEifSl9KTpoLnB1c2goe3BhcmFtOnYsdmFsdWU6eSxvcDoiYSJ9KX0pLHRoaXMuY2xvbmUoaCl9c2V0KGcsaCl7cmV0dXJuIHRoaXMuY2xvbmUoe3BhcmFtOmcsdmFsdWU6aCxvcDoicyJ9KX1kZWxldGUoZyxoKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5jbG9uZSh7cGFyYW06Zyx2YWx1ZTpoLG9wOiJkIn0pfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXMua2V5cygpLm1hcChnPT57Y29uc3QgaD10aGlzLmVuY29kZXIuZW5jb2RlS2V5KGcpO3JldHVybiB0aGlzLm1hcC5nZXQoZykubWFwKHY9PmgrIj0iK3RoaXMuZW5j''@;'; put 'put ''b2Rlci5lbmNvZGVWYWx1ZSh2KSkuam9pbigiJiIpfSkuZmlsdGVyKGc9PiIiIT09Zykuam9pbigiJiIpfWNsb25lKGcpe2NvbnN0IGg9bmV3IFE1KHtlbmNvZGVyOnRoaXMuZW5jb2Rlcn0pO3JldHVybiBoLmNsb25lRnJvbT10aGlzLmNsb25lRnJvbXx8dGhpcyxoLnVwZGF0ZXM9KHRoaXMu''@;'; put 'put ''dXBkYXRlc3x8W10pLmNvbmNhdChnKSxofWluaXQoKXtudWxsPT09dGhpcy5tYXAmJih0aGlzLm1hcD1uZXcgTWFwKSxudWxsIT09dGhpcy5jbG9uZUZyb20mJih0aGlzLmNsb25lRnJvbS5pbml0KCksdGhpcy5jbG9uZUZyb20ua2V5cygpLmZvckVhY2goZz0+dGhpcy5tYXAuc2V0KGcsdGhp''@;'; put 'put ''cy5jbG9uZUZyb20ubWFwLmdldChnKSkpLHRoaXMudXBkYXRlcy5mb3JFYWNoKGc9Pntzd2l0Y2goZy5vcCl7Y2FzZSJhIjpjYXNlInMiOmNvbnN0IGg9KCJhIj09PWcub3A/dGhpcy5tYXAuZ2V0KGcucGFyYW0pOnZvaWQgMCl8fFtdO2gucHVzaChWSShnLnZhbHVlKSksdGhpcy5tYXAuc2V0''@;'; put 'put ''KGcucGFyYW0saCk7YnJlYWs7Y2FzZSJkIjppZih2b2lkIDA9PT1nLnZhbHVlKXt0aGlzLm1hcC5kZWxldGUoZy5wYXJhbSk7YnJlYWt9e2xldCB2PXRoaXMubWFwLmdldChnLnBhcmFtKXx8W107Y29uc3QgeT12LmluZGV4T2YoVkkoZy52YWx1ZSkpOy0xIT09eSYmdi5zcGxpY2UoeSwxKSx2''@;'; put 'put ''Lmxlbmd0aD4wP3RoaXMubWFwLnNldChnLnBhcmFtLHYpOnRoaXMubWFwLmRlbGV0ZShnLnBhcmFtKX19fSksdGhpcy5jbG9uZUZyb209dGhpcy51cGRhdGVzPW51bGwpfX1jbGFzcyBCSHtjb25zdHJ1Y3Rvcigpe3RoaXMubWFwPW5ldyBNYXB9c2V0KGcsaCl7cmV0dXJuIHRoaXMubWFwLnNl''@;'; put 'put ''dChnLGgpLHRoaXN9Z2V0KGcpe3JldHVybiB0aGlzLm1hcC5oYXMoZyl8fHRoaXMubWFwLnNldChnLGcuZGVmYXVsdFZhbHVlKCkpLHRoaXMubWFwLmdldChnKX1kZWxldGUoZyl7cmV0dXJuIHRoaXMubWFwLmRlbGV0ZShnKSx0aGlzfWhhcyhnKXtyZXR1cm4gdGhpcy5tYXAuaGFzKGcpfWtl''@;'; put 'put ''eXMoKXtyZXR1cm4gdGhpcy5tYXAua2V5cygpfX1mdW5jdGlvbiBKVShkKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZkIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ9ZnVuY3Rpb24gWFUoZCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiZkIGluc3RhbmNl''@;'; put 'put ''b2YgQmxvYn1mdW5jdGlvbiBLVShkKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEZvcm1EYXRhJiZkIGluc3RhbmNlb2YgRm9ybURhdGF9Y2xhc3MgZ3l7Y29uc3RydWN0b3IoZyxoLHYseSl7bGV0IEM7aWYodGhpcy51cmw9aCx0aGlzLmJvZHk9bnVsbCx0aGlzLnJlcG9ydFByb2dyZXNz''@;'; put 'put ''PSExLHRoaXMud2l0aENyZWRlbnRpYWxzPSExLHRoaXMucmVzcG9uc2VUeXBlPSJqc29uIix0aGlzLm1ldGhvZD1nLnRvVXBwZXJDYXNlKCksZnVuY3Rpb24ga29lKGQpe3N3aXRjaChkKXtjYXNlIkRFTEVURSI6Y2FzZSJHRVQiOmNhc2UiSEVBRCI6Y2FzZSJPUFRJT05TIjpjYXNlIkpTT05Q''@;'; put 'put ''IjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX0odGhpcy5tZXRob2QpfHx5Pyh0aGlzLmJvZHk9dm9pZCAwIT09dj92Om51bGwsQz15KTpDPXYsQyYmKHRoaXMucmVwb3J0UHJvZ3Jlc3M9ISFDLnJlcG9ydFByb2dyZXNzLHRoaXMud2l0aENyZWRlbnRpYWxzPSEhQy53aXRoQ3JlZGVudGlh''@;'; put 'put ''bHMsQy5yZXNwb25zZVR5cGUmJih0aGlzLnJlc3BvbnNlVHlwZT1DLnJlc3BvbnNlVHlwZSksQy5oZWFkZXJzJiYodGhpcy5oZWFkZXJzPUMuaGVhZGVycyksQy5jb250ZXh0JiYodGhpcy5jb250ZXh0PUMuY29udGV4dCksQy5wYXJhbXMmJih0aGlzLnBhcmFtcz1DLnBhcmFtcykpLHRoaXMu''@;'; put 'put ''aGVhZGVyc3x8KHRoaXMuaGVhZGVycz1uZXcgaHApLHRoaXMuY29udGV4dHx8KHRoaXMuY29udGV4dD1uZXcgQkgpLHRoaXMucGFyYW1zKXtjb25zdCBJPXRoaXMucGFyYW1zLnRvU3RyaW5nKCk7aWYoMD09PUkubGVuZ3RoKXRoaXMudXJsV2l0aFBhcmFtcz1oO2Vsc2V7Y29uc3QgWj1oLmlu''@;'; put 'put ''ZGV4T2YoIj8iKTt0aGlzLnVybFdpdGhQYXJhbXM9aCsoLTE9PT1aPyI/IjpaPGgubGVuZ3RoLTE/IiYiOiIiKStJfX1lbHNlIHRoaXMucGFyYW1zPW5ldyBRNSx0aGlzLnVybFdpdGhQYXJhbXM9aH1zZXJpYWxpemVCb2R5KCl7cmV0dXJuIG51bGw9PT10aGlzLmJvZHk/bnVsbDpKVSh0aGlz''@;'; put 'put ''LmJvZHkpfHxYVSh0aGlzLmJvZHkpfHxLVSh0aGlzLmJvZHkpfHxmdW5jdGlvbiBTb2UoZCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBVUkxTZWFyY2hQYXJhbXMmJmQgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXN9KHRoaXMuYm9keSl8fCJzdHJpbmciPT10eXBlb2YgdGhpcy5ib2R5''@;'; put 'put ''P3RoaXMuYm9keTp0aGlzLmJvZHkgaW5zdGFuY2VvZiBRNT90aGlzLmJvZHkudG9TdHJpbmcoKToib2JqZWN0Ij09dHlwZW9mIHRoaXMuYm9keXx8ImJvb2xlYW4iPT10eXBlb2YgdGhpcy5ib2R5fHxBcnJheS5pc0FycmF5KHRoaXMuYm9keSk/SlNPTi5zdHJpbmdpZnkodGhpcy5ib2R5KTp0''@;'; put 'put ''aGlzLmJvZHkudG9TdHJpbmcoKX1kZXRlY3RDb250ZW50VHlwZUhlYWRlcigpe3JldHVybiBudWxsPT09dGhpcy5ib2R5fHxLVSh0aGlzLmJvZHkpP251bGw6WFUodGhpcy5ib2R5KT90aGlzLmJvZHkudHlwZXx8bnVsbDpKVSh0aGlzLmJvZHkpP251bGw6InN0cmluZyI9PXR5cGVvZiB0aGlz''@;'; put 'put ''LmJvZHk/InRleHQvcGxhaW4iOnRoaXMuYm9keSBpbnN0YW5jZW9mIFE1PyJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCI6Im9iamVjdCI9PXR5cGVvZiB0aGlzLmJvZHl8fCJudW1iZXIiPT10eXBlb2YgdGhpcy5ib2R5fHwiYm9vbGVhbiI9PXR5cGVv''@;'; put 'put ''ZiB0aGlzLmJvZHk/ImFwcGxpY2F0aW9uL2pzb24iOm51bGx9Y2xvbmUoZz17fSl7dmFyIGg7Y29uc3Qgdj1nLm1ldGhvZHx8dGhpcy5tZXRob2QseT1nLnVybHx8dGhpcy51cmwsQz1nLnJlc3BvbnNlVHlwZXx8dGhpcy5yZXNwb25zZVR5cGUsST12b2lkIDAhPT1nLmJvZHk/Zy5ib2R5OnRo''@;'; put 'put ''aXMuYm9keSxaPXZvaWQgMCE9PWcud2l0aENyZWRlbnRpYWxzP2cud2l0aENyZWRlbnRpYWxzOnRoaXMud2l0aENyZWRlbnRpYWxzLHVlPXZvaWQgMCE9PWcucmVwb3J0UHJvZ3Jlc3M/Zy5yZXBvcnRQcm9ncmVzczp0aGlzLnJlcG9ydFByb2dyZXNzO2xldCBfZT1nLmhlYWRlcnN8fHRoaXMu''@;'; put 'put ''aGVhZGVycyxCZT1nLnBhcmFtc3x8dGhpcy5wYXJhbXM7Y29uc3QgTmU9bnVsbCE9PShoPWcuY29udGV4dCkmJnZvaWQgMCE9PWg/aDp0aGlzLmNvbnRleHQ7cmV0dXJuIHZvaWQgMCE9PWcuc2V0SGVhZGVycyYmKF9lPU9iamVjdC5rZXlzKGcuc2V0SGVhZGVycykucmVkdWNlKChLZSxwdCk9''@;'; put 'put ''PktlLnNldChwdCxnLnNldEhlYWRlcnNbcHRdKSxfZSkpLGcuc2V0UGFyYW1zJiYoQmU9T2JqZWN0LmtleXMoZy5zZXRQYXJhbXMpLnJlZHVjZSgoS2UscHQpPT5LZS5zZXQocHQsZy5zZXRQYXJhbXNbcHRdKSxCZSkpLG5ldyBneSh2LHksSSx7cGFyYW1zOkJlLGhlYWRlcnM6X2UsY29udGV4''@;'; put 'put ''dDpOZSxyZXBvcnRQcm9ncmVzczp1ZSxyZXNwb25zZVR5cGU6Qyx3aXRoQ3JlZGVudGlhbHM6Wn0pfX12YXIgdnU9KCgpPT4oKHZ1PXZ1fHx7fSlbdnUuU2VudD0wXT0iU2VudCIsdnVbdnUuVXBsb2FkUHJvZ3Jlc3M9MV09IlVwbG9hZFByb2dyZXNzIix2dVt2dS5SZXNwb25zZUhlYWRlcj0y''@;'; put 'put ''XT0iUmVzcG9uc2VIZWFkZXIiLHZ1W3Z1LkRvd25sb2FkUHJvZ3Jlc3M9M109IkRvd25sb2FkUHJvZ3Jlc3MiLHZ1W3Z1LlJlc3BvbnNlPTRdPSJSZXNwb25zZSIsdnVbdnUuVXNlcj01XT0iVXNlciIsdnUpKSgpO2NsYXNzIEE3e2NvbnN0cnVjdG9yKGcsaD0yMDAsdj0iT0siKXt0aGlzLmhl''@;'; put 'put ''YWRlcnM9Zy5oZWFkZXJzfHxuZXcgaHAsdGhpcy5zdGF0dXM9dm9pZCAwIT09Zy5zdGF0dXM/Zy5zdGF0dXM6aCx0aGlzLnN0YXR1c1RleHQ9Zy5zdGF0dXNUZXh0fHx2LHRoaXMudXJsPWcudXJsfHxudWxsLHRoaXMub2s9dGhpcy5zdGF0dXM+PTIwMCYmdGhpcy5zdGF0dXM8MzAwfX1jbGFz''@;'; put 'put ''cyBQSCBleHRlbmRzIEE3e2NvbnN0cnVjdG9yKGc9e30pe3N1cGVyKGcpLHRoaXMudHlwZT12dS5SZXNwb25zZUhlYWRlcn1jbG9uZShnPXt9KXtyZXR1cm4gbmV3IFBIKHtoZWFkZXJzOmcuaGVhZGVyc3x8dGhpcy5oZWFkZXJzLHN0YXR1czp2b2lkIDAhPT1nLnN0YXR1cz9nLnN0YXR1czp0''@;'; put 'put ''aGlzLnN0YXR1cyxzdGF0dXNUZXh0Omcuc3RhdHVzVGV4dHx8dGhpcy5zdGF0dXNUZXh0LHVybDpnLnVybHx8dGhpcy51cmx8fHZvaWQgMH0pfX1jbGFzcyBteSBleHRlbmRzIEE3e2NvbnN0cnVjdG9yKGc9e30pe3N1cGVyKGcpLHRoaXMudHlwZT12dS5SZXNwb25zZSx0aGlzLmJvZHk9dm9p''@;'; put 'put ''ZCAwIT09Zy5ib2R5P2cuYm9keTpudWxsfWNsb25lKGc9e30pe3JldHVybiBuZXcgbXkoe2JvZHk6dm9pZCAwIT09Zy5ib2R5P2cuYm9keTp0aGlzLmJvZHksaGVhZGVyczpnLmhlYWRlcnN8fHRoaXMuaGVhZGVycyxzdGF0dXM6dm9pZCAwIT09Zy5zdGF0dXM/Zy5zdGF0dXM6dGhpcy5zdGF0''@;'; put 'put ''dXMsc3RhdHVzVGV4dDpnLnN0YXR1c1RleHR8fHRoaXMuc3RhdHVzVGV4dCx1cmw6Zy51cmx8fHRoaXMudXJsfHx2b2lkIDB9KX19Y2xhc3MgJFUgZXh0ZW5kcyBBN3tjb25zdHJ1Y3RvcihnKXtzdXBlcihnLDAsIlVua25vd24gRXJyb3IiKSx0aGlzLm5hbWU9Ikh0dHBFcnJvclJlc3BvbnNl''@;'; put 'put ''Iix0aGlzLm9rPSExLHRoaXMubWVzc2FnZT10aGlzLnN0YXR1cz49MjAwJiZ0aGlzLnN0YXR1czwzMDA/YEh0dHAgZmFpbHVyZSBkdXJpbmcgcGFyc2luZyBmb3IgJHtnLnVybHx8Iih1bmtub3duIHVybCkifWA6YEh0dHAgZmFpbHVyZSByZXNwb25zZSBmb3IgJHtnLnVybHx8Iih1bmtub3du''@;'; put 'put ''IHVybCkifTogJHtnLnN0YXR1c30gJHtnLnN0YXR1c1RleHR9YCx0aGlzLmVycm9yPWcuZXJyb3J8fG51bGx9fWZ1bmN0aW9uIEZIKGQsZyl7cmV0dXJue2JvZHk6ZyxoZWFkZXJzOmQuaGVhZGVycyxjb250ZXh0OmQuY29udGV4dCxvYnNlcnZlOmQub2JzZXJ2ZSxwYXJhbXM6ZC5wYXJhbXMs''@;'; put 'put ''cmVwb3J0UHJvZ3Jlc3M6ZC5yZXBvcnRQcm9ncmVzcyxyZXNwb25zZVR5cGU6ZC5yZXNwb25zZVR5cGUsd2l0aENyZWRlbnRpYWxzOmQud2l0aENyZWRlbnRpYWxzfX1sZXQgSEg9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmhhbmRsZXI9aH1yZXF1ZXN0KGgsdix5PXt9KXts''@;'; put 'put ''ZXQgQztpZihoIGluc3RhbmNlb2YgZ3kpQz1oO2Vsc2V7bGV0IHVlLF9lO3VlPXkuaGVhZGVycyBpbnN0YW5jZW9mIGhwP3kuaGVhZGVyczpuZXcgaHAoeS5oZWFkZXJzKSx5LnBhcmFtcyYmKF9lPXkucGFyYW1zIGluc3RhbmNlb2YgUTU/eS5wYXJhbXM6bmV3IFE1KHtmcm9tT2JqZWN0Onku''@;'; put 'put ''cGFyYW1zfSkpLEM9bmV3IGd5KGgsdix2b2lkIDAhPT15LmJvZHk/eS5ib2R5Om51bGwse2hlYWRlcnM6dWUsY29udGV4dDp5LmNvbnRleHQscGFyYW1zOl9lLHJlcG9ydFByb2dyZXNzOnkucmVwb3J0UHJvZ3Jlc3MscmVzcG9uc2VUeXBlOnkucmVzcG9uc2VUeXBlfHwianNvbiIsd2l0aENy''@;'; put 'put ''ZWRlbnRpYWxzOnkud2l0aENyZWRlbnRpYWxzfSl9Y29uc3QgST1hYShDKS5waXBlKFY1KHVlPT50aGlzLmhhbmRsZXIuaGFuZGxlKHVlKSkpO2lmKGggaW5zdGFuY2VvZiBneXx8ImV2ZW50cyI9PT15Lm9ic2VydmUpcmV0dXJuIEk7Y29uc3QgWj1JLnBpcGUoTzIodWU9PnVlIGluc3RhbmNl''@;'; put 'put ''b2YgbXkpKTtzd2l0Y2goeS5vYnNlcnZlfHwiYm9keSIpe2Nhc2UiYm9keSI6c3dpdGNoKEMucmVzcG9uc2VUeXBlKXtjYXNlImFycmF5YnVmZmVyIjpyZXR1cm4gWi5waXBlKG10KHVlPT57aWYobnVsbCE9PXVlLmJvZHkmJiEodWUuYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSl0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIlJlc3BvbnNlIGlzIG5vdCBhbiBBcnJheUJ1ZmZlci4iKTtyZXR1cm4gdWUuYm9keX0pKTtjYXNlImJsb2IiOnJldHVybiBaLnBpcGUobXQodWU9PntpZihudWxsIT09dWUuYm9keSYmISh1ZS5ib2R5IGluc3RhbmNlb2YgQmxvYikpdGhyb3cgbmV3IEVycm9yKCJSZXNw''@;'; put 'put ''b25zZSBpcyBub3QgYSBCbG9iLiIpO3JldHVybiB1ZS5ib2R5fSkpO2Nhc2UidGV4dCI6cmV0dXJuIFoucGlwZShtdCh1ZT0+e2lmKG51bGwhPT11ZS5ib2R5JiYic3RyaW5nIiE9dHlwZW9mIHVlLmJvZHkpdGhyb3cgbmV3IEVycm9yKCJSZXNwb25zZSBpcyBub3QgYSBzdHJpbmcuIik7cmV0''@;'; put 'put ''dXJuIHVlLmJvZHl9KSk7ZGVmYXVsdDpyZXR1cm4gWi5waXBlKG10KHVlPT51ZS5ib2R5KSl9Y2FzZSJyZXNwb25zZSI6cmV0dXJuIFo7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVucmVhY2hhYmxlOiB1bmhhbmRsZWQgb2JzZXJ2ZSB0eXBlICR7eS5vYnNlcnZlfX1gKX19ZGVsZXRlKGgs''@;'; put 'put ''dj17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiREVMRVRFIixoLHYpfWdldChoLHY9e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIkdFVCIsaCx2KX1oZWFkKGgsdj17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiSEVBRCIsaCx2KX1qc29ucChoLHYpe3JldHVybiB0aGlzLnJlcXVlc3QoIkpTT05Q''@;'; put 'put ''IixoLHtwYXJhbXM6KG5ldyBRNSkuYXBwZW5kKHYsIkpTT05QX0NBTExCQUNLIiksb2JzZXJ2ZToiYm9keSIscmVzcG9uc2VUeXBlOiJqc29uIn0pfW9wdGlvbnMoaCx2PXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJPUFRJT05TIixoLHYpfXBhdGNoKGgsdix5PXt9KXtyZXR1cm4gdGhpcy5y''@;'; put 'put ''ZXF1ZXN0KCJQQVRDSCIsaCxGSCh5LHYpKX1wb3N0KGgsdix5PXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJQT1NUIixoLEZIKHksdikpfXB1dChoLHYseT17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiUFVUIixoLEZIKHksdikpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0''@;'; put 'put ''dXJuIG5ldyhofHxkKShDaShHVSkpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpO2NsYXNzIHFVe2NvbnN0cnVjdG9yKGcsaCl7dGhpcy5uZXh0PWcsdGhpcy5pbnRlcmNlcHRvcj1ofWhhbmRsZShnKXtyZXR1cm4gdGhpcy5pbnRlcmNlcHRv''@;'; put 'put ''ci5pbnRlcmNlcHQoZyx0aGlzLm5leHQpfX1jb25zdCBlUT1uZXcgemUoIkhUVFBfSU5URVJDRVBUT1JTIik7bGV0IE1vZT0oKCk9PntjbGFzcyBke2ludGVyY2VwdChoLHYpe3JldHVybiB2LmhhbmRsZShoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8''@;'; put 'put ''ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y29uc3QgVG9lPS9eXClcXVx9Jyw/XG4vO2xldCBuUT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMueGhyRmFjdG9yeT1ofWhhbmRsZShoKXtpZigiSlNPTlAiPT09aC5tZXRo''@;'; put 'put ''b2QpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0ZWQgdG8gY29uc3RydWN0IEpzb25wIHJlcXVlc3Qgd2l0aG91dCBIdHRwQ2xpZW50SnNvbnBNb2R1bGUgaW5zdGFsbGVkLiIpO3JldHVybiBuZXcgRih2PT57Y29uc3QgeT10aGlzLnhockZhY3RvcnkuYnVpbGQoKTtpZih5Lm9wZW4oaC5tZXRo''@;'; put 'put ''b2QsaC51cmxXaXRoUGFyYW1zKSxoLndpdGhDcmVkZW50aWFscyYmKHkud2l0aENyZWRlbnRpYWxzPSEwKSxoLmhlYWRlcnMuZm9yRWFjaCgocHQsT3QpPT55LnNldFJlcXVlc3RIZWFkZXIocHQsT3Quam9pbigiLCIpKSksaC5oZWFkZXJzLmhhcygiQWNjZXB0Iil8fHkuc2V0UmVxdWVzdEhl''@;'; put 'put ''YWRlcigiQWNjZXB0IiwiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIiksIWguaGVhZGVycy5oYXMoIkNvbnRlbnQtVHlwZSIpKXtjb25zdCBwdD1oLmRldGVjdENvbnRlbnRUeXBlSGVhZGVyKCk7bnVsbCE9PXB0JiZ5LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIs''@;'; put 'put ''cHQpfWlmKGgucmVzcG9uc2VUeXBlKXtjb25zdCBwdD1oLnJlc3BvbnNlVHlwZS50b0xvd2VyQ2FzZSgpO3kucmVzcG9uc2VUeXBlPSJqc29uIiE9PXB0P3B0OiJ0ZXh0In1jb25zdCBDPWguc2VyaWFsaXplQm9keSgpO2xldCBJPW51bGw7Y29uc3QgWj0oKT0+e2lmKG51bGwhPT1JKXJldHVy''@;'; put 'put ''biBJO2NvbnN0IHB0PXkuc3RhdHVzVGV4dHx8Ik9LIixPdD1uZXcgaHAoeS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSksJHQ9ZnVuY3Rpb24gTkgoZCl7cmV0dXJuInJlc3BvbnNlVVJMImluIGQmJmQucmVzcG9uc2VVUkw/ZC5yZXNwb25zZVVSTDovXlgtUmVxdWVzdC1VUkw6L20udGVzdChk''@;'; put 'put ''LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKT9kLmdldFJlc3BvbnNlSGVhZGVyKCJYLVJlcXVlc3QtVVJMIik6bnVsbH0oeSl8fGgudXJsO3JldHVybiBJPW5ldyBQSCh7aGVhZGVyczpPdCxzdGF0dXM6eS5zdGF0dXMsc3RhdHVzVGV4dDpwdCx1cmw6JHR9KSxJfSx1ZT0oKT0+e2xldHtoZWFk''@;'; put 'put ''ZXJzOnB0LHN0YXR1czpPdCxzdGF0dXNUZXh0OiR0LHVybDpmbn09WigpLExuPW51bGw7MjA0IT09T3QmJihMbj12b2lkIDA9PT15LnJlc3BvbnNlP3kucmVzcG9uc2VUZXh0OnkucmVzcG9uc2UpLDA9PT1PdCYmKE90PUxuPzIwMDowKTtsZXQgaXI9T3Q+PTIwMCYmT3Q8MzAwO2lmKCJqc29u''@;'; put 'put ''Ij09PWgucmVzcG9uc2VUeXBlJiYic3RyaW5nIj09dHlwZW9mIExuKXtjb25zdCBtcj1MbjtMbj1Mbi5yZXBsYWNlKFRvZSwiIik7dHJ5e0xuPSIiIT09TG4/SlNPTi5wYXJzZShMbik6bnVsbH1jYXRjaChTcil7TG49bXIsaXImJihpcj0hMSxMbj17ZXJyb3I6U3IsdGV4dDpMbn0pfX1pcj8o''@;'; put 'put ''di5uZXh0KG5ldyBteSh7Ym9keTpMbixoZWFkZXJzOnB0LHN0YXR1czpPdCxzdGF0dXNUZXh0OiR0LHVybDpmbnx8dm9pZCAwfSkpLHYuY29tcGxldGUoKSk6di5lcnJvcihuZXcgJFUoe2Vycm9yOkxuLGhlYWRlcnM6cHQsc3RhdHVzOk90LHN0YXR1c1RleHQ6JHQsdXJsOmZufHx2b2lkIDB9''@;'; put 'put ''KSl9LF9lPXB0PT57Y29uc3R7dXJsOk90fT1aKCksJHQ9bmV3ICRVKHtlcnJvcjpwdCxzdGF0dXM6eS5zdGF0dXN8fDAsc3RhdHVzVGV4dDp5LnN0YXR1c1RleHR8fCJVbmtub3duIEVycm9yIix1cmw6T3R8fHZvaWQgMH0pO3YuZXJyb3IoJHQpfTtsZXQgQmU9ITE7Y29uc3QgTmU9cHQ9PntC''@;'; put 'put ''ZXx8KHYubmV4dChaKCkpLEJlPSEwKTtsZXQgT3Q9e3R5cGU6dnUuRG93bmxvYWRQcm9ncmVzcyxsb2FkZWQ6cHQubG9hZGVkfTtwdC5sZW5ndGhDb21wdXRhYmxlJiYoT3QudG90YWw9cHQudG90YWwpLCJ0ZXh0Ij09PWgucmVzcG9uc2VUeXBlJiYhIXkucmVzcG9uc2VUZXh0JiYoT3QucGFy''@;'; put 'put ''dGlhbFRleHQ9eS5yZXNwb25zZVRleHQpLHYubmV4dChPdCl9LEtlPXB0PT57bGV0IE90PXt0eXBlOnZ1LlVwbG9hZFByb2dyZXNzLGxvYWRlZDpwdC5sb2FkZWR9O3B0Lmxlbmd0aENvbXB1dGFibGUmJihPdC50b3RhbD1wdC50b3RhbCksdi5uZXh0KE90KX07cmV0dXJuIHkuYWRkRXZlbnRM''@;'; put 'put ''aXN0ZW5lcigibG9hZCIsdWUpLHkuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLF9lKSx5LmFkZEV2ZW50TGlzdGVuZXIoInRpbWVvdXQiLF9lKSx5LmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixfZSksaC5yZXBvcnRQcm9ncmVzcyYmKHkuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLE5l''@;'; put 'put ''KSxudWxsIT09QyYmeS51cGxvYWQmJnkudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixLZSkpLHkuc2VuZChDKSx2Lm5leHQoe3R5cGU6dnUuU2VudH0pLCgpPT57eS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsX2UpLHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQi''@;'; put 'put ''LF9lKSx5LnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLHVlKSx5LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRpbWVvdXQiLF9lKSxoLnJlcG9ydFByb2dyZXNzJiYoeS5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsTmUpLG51bGwhPT1DJiZ5LnVwbG9hZCYmeS51cGxvYWQucmVtb3Zl''@;'; put 'put ''RXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLEtlKSkseS5yZWFkeVN0YXRlIT09eS5ET05FJiZ5LmFib3J0KCl9fSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKEZXKSl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1''@;'; put 'put ''ZmFjfSksZH0pKCk7Y29uc3QgVkg9bmV3IHplKCJYU1JGX0NPT0tJRV9OQU1FIiksakg9bmV3IHplKCJYU1JGX0hFQURFUl9OQU1FIik7Y2xhc3MgclF7fWxldCBJb2U9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5kb2M9aCx0aGlzLnBsYXRmb3JtPXYsdGhpcy5jb29r''@;'; put 'put ''aWVOYW1lPXksdGhpcy5sYXN0Q29va2llU3RyaW5nPSIiLHRoaXMubGFzdFRva2VuPW51bGwsdGhpcy5wYXJzZUNvdW50PTB9Z2V0VG9rZW4oKXtpZigic2VydmVyIj09PXRoaXMucGxhdGZvcm0pcmV0dXJuIG51bGw7Y29uc3QgaD10aGlzLmRvYy5jb29raWV8fCIiO3JldHVybiBoIT09dGhp''@;'; put 'put ''cy5sYXN0Q29va2llU3RyaW5nJiYodGhpcy5wYXJzZUNvdW50KyssdGhpcy5sYXN0VG9rZW49YlcoaCx0aGlzLmNvb2tpZU5hbWUpLHRoaXMubGFzdENvb2tpZVN0cmluZz1oKSx0aGlzLmxhc3RUb2tlbn19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCko''@;'; put 'put ''Q2koZ3MpLENpKEwyKSxDaShWSCkpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLFpJPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2KXt0aGlzLnRva2VuU2VydmljZT1oLHRoaXMuaGVhZGVyTmFtZT12fWludGVyY2VwdChoLHYpe2Nv''@;'; put 'put ''bnN0IHk9aC51cmwudG9Mb3dlckNhc2UoKTtpZigiR0VUIj09PWgubWV0aG9kfHwiSEVBRCI9PT1oLm1ldGhvZHx8eS5zdGFydHNXaXRoKCJodHRwOi8vIil8fHkuc3RhcnRzV2l0aCgiaHR0cHM6Ly8iKSlyZXR1cm4gdi5oYW5kbGUoaCk7Y29uc3QgQz10aGlzLnRva2VuU2VydmljZS5nZXRU''@;'; put 'put ''b2tlbigpO3JldHVybiBudWxsIT09QyYmIWguaGVhZGVycy5oYXModGhpcy5oZWFkZXJOYW1lKSYmKGg9aC5jbG9uZSh7aGVhZGVyczpoLmhlYWRlcnMuc2V0KHRoaXMuaGVhZGVyTmFtZSxDKX0pKSx2LmhhbmRsZShoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBu''@;'; put 'put ''ZXcoaHx8ZCkoQ2koclEpLENpKGpIKSl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksdWs9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMuYmFja2VuZD1oLHRoaXMuaW5qZWN0b3I9dix0aGlzLmNoYWluPW51bGx9aGFuZGxl''@;'; put 'put ''KGgpe2lmKG51bGw9PT10aGlzLmNoYWluKXtjb25zdCB2PXRoaXMuaW5qZWN0b3IuZ2V0KGVRLFtdKTt0aGlzLmNoYWluPXYucmVkdWNlUmlnaHQoKHksQyk9Pm5ldyBxVSh5LEMpLHRoaXMuYmFja2VuZCl9cmV0dXJuIHRoaXMuY2hhaW4uaGFuZGxlKGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9''@;'; put 'put ''ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShXVSksQ2koU3MpKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxaSD0oKCk9PntjbGFzcyBke3N0YXRpYyBkaXNhYmxlKCl7cmV0dXJue25nTW9kdWxlOmQscHJvdmlkZXJzOlt7cHJv''@;'; put 'put ''dmlkZTpaSSx1c2VDbGFzczpNb2V9XX19c3RhdGljIHdpdGhPcHRpb25zKGg9e30pe3JldHVybntuZ01vZHVsZTpkLHByb3ZpZGVyczpbaC5jb29raWVOYW1lP3twcm92aWRlOlZILHVzZVZhbHVlOmguY29va2llTmFtZX06W10saC5oZWFkZXJOYW1lP3twcm92aWRlOmpILHVzZVZhbHVlOmgu''@;'; put 'put ''aGVhZGVyTmFtZX06W11dfX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7cHJvdmlkZXJzOltaSSx7cHJvdmlkZTplUSx1c2VFeGlzdGluZzpaSSxtdWx0aTohMH0se3Byb3Zp''@;'; put 'put ''ZGU6clEsdXNlQ2xhc3M6SW9lfSx7cHJvdmlkZTpWSCx1c2VWYWx1ZToiWFNSRi1UT0tFTiJ9LHtwcm92aWRlOmpILHVzZVZhbHVlOiJYLVhTUkYtVE9LRU4ifV19KSxkfSkoKSx6ST0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxk''@;'; put 'put ''KX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHtwcm92aWRlcnM6W0hILHtwcm92aWRlOkdVLHVzZUNsYXNzOnVrfSxuUSx7cHJvdmlkZTpXVSx1c2VFeGlzdGluZzpuUX1dLGltcG9ydHM6W1pILndpdGhPcHRpb25zKHtjb29raWVOYW1lOiJYU1JGLVRPS0VOIixo''@;'; put 'put ''ZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4ifSldfSksZH0pKCksaVE9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMuaHR0cD1oLHRoaXMuYXBwU3RvcmVTZXJ2aWNlPXYsdGhpcy51cmw9IiIsdGhpcy5kcml2ZVVybD0iIix0aGlzLmh0dHBPcHRpb25zPXt3aXRoQ3JlZGVudGlh''@;'; put 'put ''bHM6ITB9fXNldHVwKCl7Y29uc3QgaD10aGlzLmFwcFN0b3JlU2VydmljZS5nZXREY0FkYXB0ZXJTZXR0aW5ncygpO3RoaXMudXJsPWAkeyhudWxsPT1oP3ZvaWQgMDpoLnNlcnZlclVybCl8fCIifS9TQVNqc0FwaWAsdGhpcy5kcml2ZVVybD1gJHt0aGlzLnVybH0vZHJpdmVgfWdldFNlcnZl''@;'; put 'put ''ckluZm8oKXtyZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnVybH0vaW5mb2ApfWdldEZpbGVGcm9tRHJpdmUoaCl7cmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5kcml2ZVVybH0vZmlsZS8/X2ZpbGVQYXRoPSR7aH1gLHRoaXMuaHR0cE9wdGlvbnMpfWdldEZvbGRlckNvbnRlbnRz''@;'; put 'put ''RnJvbURyaXZlKGgpe3JldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZHJpdmVVcmx9L2ZvbGRlcj9fZm9sZGVyUGF0aD0ke2h9YCx0aGlzLmh0dHBPcHRpb25zKX1nZXRGaWxlVHJlZUZyb21Ecml2ZSgpe3JldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZHJpdmVVcmx9L2ZpbGV0cmVl''@;'; put 'put ''YCx0aGlzLmh0dHBPcHRpb25zKX1nZXRGaWxlRnJvbUZpbGVUcmVlKGgpe3JldHVybiBuZXcgUHJvbWlzZSgodix5KT0+e3RoaXMuZ2V0RmlsZVRyZWVGcm9tRHJpdmUoKS5zdWJzY3JpYmUoQz0+e2NvbnN0IFo9dGhpcy5maW5kSW5UcmVlKEMudHJlZSxoKTt2KFopfSl9KX1maW5kSW5UcmVl''@;'; put 'put ''KGgsdil7aWYoaC5yZWxhdGl2ZVBhdGg9PT12KXJldHVybiBoO2ZvcihsZXQgeSBvZiBoLmNoaWxkcmVuKXtjb25zdCBDPXRoaXMuZmluZEluVHJlZSh5LHYpO2lmKEMpcmV0dXJuIEN9fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShISCksQ2ko''@;'; put 'put ''c2spKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxkfSkoKSxzYz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuaW5qZWN0b3I9aH1sb2coaCx2KXt2YXIgeTt0aGlzLmluamVjdFNhc1NlcnZpY2UoKSxu''@;'; put 'put ''dWxsIT09KHk9dGhpcy5zYXNqc0NvbmZpZykmJnZvaWQgMCE9PXkmJnkuZGVidWcmJih2P2NvbnNvbGUubG9nKGgsdik6Y29uc29sZS5sb2coaCkpfWVycm9yKGgsdil7Y29uc29sZS5lcnJvcihoLHYpfWxvZ1JlcXVlc3REYXRhKGgsdil7aWYodGhpcy5sb2coIi0tLSBBZGFwdGVyIFJlcXVl''@;'; put 'put ''c3QgSW5wdXQgLS0tIiksdGhpcy5sb2coaCksdil7Zm9yKGxldCB5IG9mIE9iamVjdC5rZXlzKHYpKXRoaXMubG9nKHksdlt5XSk7dGhpcy5sb2coIi0tLS0tLSIpfWVsc2UgdGhpcy5sb2coIm5vIGRhdGEgc2VudCIpfWluamVjdFNhc1NlcnZpY2UoKXtpZighdGhpcy5zYXNqc0NvbmZpZyl7''@;'; put 'put ''Y29uc3QgaD10aGlzLmluamVjdG9yLmdldChnMik7dGhpcy5zYXNqc0NvbmZpZz1oLmdldFNhc2pzQ29uZmlnKCl9fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShTcykpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3''@;'; put 'put ''NWZhYyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpLGcyPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLFope3RoaXMuYXBwU3RvcmVTZXJ2aWNlPWgsdGhpcy51c2VyU2VydmljZT12LHRoaXMuZXZlbnRTZXJ2aWNlPXksdGhpcy5zYXNqc1NlcnZpY2U9Qyx0aGlzLmxvZ2dl''@;'; put 'put ''clNlcnZpY2U9SSx0aGlzLnJvdXRlcj1aLHRoaXMubG9hZFN0YXJ0dXBTZXJ2aWNlRW1pdHRlcj1uZXcgYXIsdGhpcy5pbmNvcnJlY3RTaXRlSWRFbWl0dGVyPW5ldyBhcix0aGlzLnJlcXVlc3RTaXRlSWRFbWl0dGVyPW5ldyBhcix0aGlzLnNhc2pzQWRhcHRlcj1uZXcoelUoKSksdGhpcy5h''@;'; put 'put ''cHBMb2NDaGVja1BlbmRpbmc9ITEsdGhpcy5zaG91bGRMb2dpbj1uZXcgZnMoITEpLHRoaXMubGljZW5zZV9zaXRlX2lkPW5ldyBmcyhudWxsKX1zYXNTZXJ2aWNlSW5pdCgpe2lmKHRoaXMuZGNBZGFwdGVyU2V0dGluZ3M9dGhpcy5hcHBTdG9yZVNlcnZpY2UuZ2V0RGNBZGFwdGVyU2V0dGlu''@;'; put 'put ''Z3MoKSx0aGlzLnNhc2pzU2VydmljZS5zZXR1cCgpLHRoaXMuZGNBZGFwdGVyU2V0dGluZ3Mpe3N3aXRjaCh0aGlzLnNhc2pzQWRhcHRlcj1uZXcoelUoKSkodGhpcy5kY0FkYXB0ZXJTZXR0aW5ncyksdGhpcy5kY0FkYXB0ZXJTZXR0aW5ncy5zZXJ2ZXJUeXBlKXtjYXNlIEh1LkQuU2FzVml5''@;'; put 'put ''YTp0aGlzLmNoZWNrVml5YURlcGxveSh0aGlzLmRjQWRhcHRlclNldHRpbmdzLmFwcExvY3x8IiIpO2JyZWFrO2Nhc2UgSHUuRC5TYXM5OnRoaXMubG9hZFN0YXJ0dXBTZXJ2aWNlRW1pdHRlci5lbWl0KCk7YnJlYWs7Y2FzZSBIdS5ELlNhc2pzOnRoaXMuY2hlY2tTYXNqc0RlcGxveSgpfSJS''@;'; put 'put ''ZWRpcmVjdGVkIj09PXRoaXMuZ2V0U2FzanNDb25maWcoKS5sb2dpbk1lY2hhbmlzbSYmdGhpcy5zaG91bGRMb2dpbi5zdWJzY3JpYmUoaD0+e2gmJnRoaXMuc2FzanNBZGFwdGVyLmxvZ0luKCkudGhlbih2PT57Y29uc29sZS5sb2coInJlcyIsdil9KX0pfWVsc2UgdGhpcy5ldmVudFNlcnZp''@;'; put 'put ''Y2Uuc2hvd0luZm9Nb2RhbCgiRXJyb3IiLCJBZGFwdGVyIHNldHRpbmdzIChpbmRleC5odG1sKSBhcmUgbm90IHByZXNlbnQuIil9cmVxdWVzdChoLHYseSxDKXtyZXR1cm4gQ3x8KEM9e30pLHRoaXMubG9nZ2VyU2VydmljZS5sb2dSZXF1ZXN0RGF0YShoPSJzZXJ2aWNlcy8iK2gsdiksbmV3''@;'; put 'put ''IFByb21pc2UoKEksWik9Pnt0aGlzLnNhc2pzQWRhcHRlci5yZXF1ZXN0KGgsdix5LCgpPT57dGhpcy5zaG91bGRMb2dpbi5uZXh0KCEwKX0pLnRoZW4odWU9PntpZighMT09PXVlLmxvZ2luJiYodGhpcy5zaG91bGRMb2dpbi5uZXh0KCEwKSxaKCExKSksIXRoaXMudXNlclNlcnZpY2UudXNl''@;'; put 'put ''ciYmdWUuTUZfR0VUVVNFUiYmKHRoaXMudXNlclNlcnZpY2UudXNlcj17dXNlcm5hbWU6dWUuTUZfR0VUVVNFUn0pLHVlLlNZU1NJVEUmJih0aGlzLnJlcXVlc3RTaXRlSWRFbWl0dGVyLmVtaXQodWUuU1lTU0lURSksdGhpcy5nZXRMaWNlbnNlU2l0ZUlkKCkubGVuZ3RoPjAmJih0aGlzLmdl''@;'; put 'put ''dExpY2Vuc2VTaXRlSWQoKS5pbmNsdWRlcyh1ZS5TWVNTSVRFKXx8dGhpcy5pbmNvcnJlY3RTaXRlSWRFbWl0dGVyLmVtaXQodWUuU1lTU0lURSkpKSw0MDQ9PT11ZS5zdGF0dXMmJlooe01FU1NBR0U6dWUuYm9keXx8IlNBUyBSZXNwb25kZWQgd2l0aCBlcnJvciJ9KSx2b2lkIDAhPT11ZS5z''@;'; put 'put ''YXNqc0Fib3J0KXtjb25zdCBfZT11ZSxCZT1fZS5zYXNqc0Fib3J0WzBdLk1TRyxOZT1fZS5zYXNqc0Fib3J0WzBdLk1BQztpZihCZS5pbmNsdWRlcygiRGF0YV9Db250cm9sbGVyX1NldHRpbmdzKFN0b3JlZFByb2Nlc3MpIG5vdCBmb3VuZCIpKXJldHVybiB0aGlzLmV2ZW50U2VydmljZS5z''@;'; put 'put ''dGFydHVwRGF0YUxvYWRlZCgpLHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9kZXBsb3kiKSx2b2lkIFooe2Vycm9yOkJlfSk7bnVsbCE9QyYmQy5zdXBwcmVzc1N1Y2Nlc3NBYm9ydE1vZGFsfHx0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChoLnJlcGxhY2UoInNlcnZpY2Vz''@;'; put 'put ''LyIsIiIpLEJlLHtTWVNXQVJOSU5HVEVYVDpfZS5TWVNXQVJOSU5HVEVYVCxTWVNFUlJPUlRFWFQ6X2UuU1lTRVJST1JURVhULE1BQzpOZX0pLFooe2Vycm9yOkJlfSl9SSh1ZSl9LHVlPT57aWYoY29uc29sZS5lcnJvcih1ZSksdWUuZXJyb3Ipe2xldCBCZSxfZT11ZS5lcnJvci5tZXNzYWdl''@;'; put 'put ''O3VlLmVycm9yLmRldGFpbHMmJnVlLmVycm9yLmRldGFpbHMubG9nJiYoQmU9dWUuZXJyb3IuZGV0YWlscy5sb2cpLCghX2V8fF9lLnRyaW0oKS5sZW5ndGg8MSkmJihfZT0iU0FTIFNlcnZpY2UgZXJyb3Igb2N1cnJlZCIpLG51bGwhPUMmJkMuc3VwcHJlc3NFcnJvckFib3J0TW9kYWx8fHRo''@;'; put 'put ''aXMuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKGgsX2Use0xPRzpCZX0sIlJlcXVlc3QgZXJyb3IiKSxaKHtlcnJvcjpfZX0pfVoodWUpfSl9KX11cGxvYWRGaWxlKGgsdix5KXtyZXR1cm4gdGhpcy5zYXNqc0FkYXB0ZXIudXBsb2FkRmlsZShoLHYseSl9bG9naW4oaCx2KXtyZXR1cm4g''@;'; put 'put ''bm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IHk9dGhpcy5nZXRTZXJ2ZXJUeXBlKCk9PT1IdS5ELlNhc2pzPyJjbGllbnRJRDEiOnZvaWQgMDtyZXR1cm4gdGhpcy5zYXNqc0FkYXB0ZXIubG9nSW4oaCx2LHkpLnRoZW4oQz0+e3ZhciBJO3JldHVybiBDLmlzTG9nZ2Vk''@;'; put 'put ''SW4mJih0aGlzLnVzZXJTZXJ2aWNlLnVzZXI9e3VzZXJuYW1lOkMudXNlck5hbWV9LHRoaXMuYXBwTG9jQ2hlY2tQZW5kaW5nJiYodGhpcy5jaGVja1ZpeWFEZXBsb3koKG51bGw9PT0oST10aGlzLmRjQWRhcHRlclNldHRpbmdzKXx8dm9pZCAwPT09ST92b2lkIDA6SS5hcHBMb2MpfHwiIiks''@;'; put 'put ''dGhpcy5hcHBMb2NDaGVja1BlbmRpbmc9ITEpKSx0aGlzLnNob3VsZExvZ2luLm5leHQoIUMuaXNMb2dnZWRJbiksQy5pc0xvZ2dlZElufSxDPT4oY29uc29sZS5lcnJvcihDKSx0aGlzLnNob3VsZExvZ2luLm5leHQoITApLCExKSkuY2F0Y2goQz0+KDQwMz09PUMmJmNvbnNvbGUuZXJyb3Io''@;'; put 'put ''IkludmFsaWQgaG9zdCIpLCExKSl9KX1nZXRMaWNlbnNlU2l0ZUlkKCl7cmV0dXJuIHRoaXMubGljZW5zZV9zaXRlX2lkLnZhbHVlfHxbXX1zZXRMaWNlbnNlU2l0ZUlkKGgpe3RoaXMubGljZW5zZV9zaXRlX2lkLm5leHQoIm9iamVjdCI9PXR5cGVvZiBoP2g6W2hdKX1jaGVja1Nhc2pzRGVw''@;'; put 'put ''bG95KCl7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCB2PWAke3RoaXMuZ2V0U2FzanNDb25maWcoKS5hcHBMb2N9L3NlcnZpY2VzL2FkbWluYDt0aGlzLnNhc2pzU2VydmljZS5nZXRGb2xkZXJDb250ZW50c0Zyb21Ecml2ZSh2KS5zdWJzY3JpYmUoeT0+''@;'; put 'put ''e3kuZmlsZXMuaW5jbHVkZXMoIm1ha2VkYXRhLnNhcyIpPyh0aGlzLmV2ZW50U2VydmljZS5zdGFydHVwRGF0YUxvYWRlZCgpLHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9kZXBsb3kiKSk6KHRoaXMubG9hZFN0YXJ0dXBTZXJ2aWNlRW1pdHRlci5lbWl0KCksdGhpcy5yb3V0ZXIudXJs''@;'; put 'put ''LmluY2x1ZGVzKCJkZXBsb3kiKSYmdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiLyIpKX0seT0+e3kuZXJyb3IuaW5jbHVkZXMoIlVuYXV0aG9yaXplZCIpPyh0aGlzLnNob3VsZExvZ2luLm5leHQoITApLHRoaXMuc2hvdWxkTG9naW4uc3Vic2NyaWJlKEM9PnshMT09PUMmJmxvY2F0aW9u''@;'; put 'put ''LnJlbG9hZCgpfSkpOnkuZXJyb3IuaW5jbHVkZXMoIkZvbGRlciBkb2Vzbid0IGV4aXN0LiIpJiYoY29uc29sZS53YXJuKCJTQVNqcyBTQVMgc2VydmljZXMgYXJlIG5vdCBwcmVzZW50IG9uIHRoZSBjdXJyZW50IGFwcExvYy4iKSx0aGlzLmV2ZW50U2VydmljZS5zdGFydHVwRGF0YUxvYWRl''@;'; put 'put ''ZCgpLHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9kZXBsb3kiKSl9KX0pfXNhc2pzTWFrZWRhdGFDaGVja2luZygpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIG5ldyBQcm9taXNlKChoLHYpPT5ubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rp''@;'; put 'put ''b24qKCl7dGhpcy5jaGVja2luZ0ludGVydmFsPXNldEludGVydmFsKCgpPT5ubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5zYXNqc01ha2VkYXRhU3VjY2Vzc2Z1bGwoKS50aGVuKHk9Pnt5JiYoY2xlYXJJbnRlcnZhbCh0aGlzLmNoZWNraW5nSW50ZXJ2YWwpLGgoeSkp''@;'; put 'put ''fSkuY2F0Y2goeT0+e2NsZWFySW50ZXJ2YWwodGhpcy5jaGVja2luZ0ludGVydmFsKSx2KHkpfSl9KSwxZTMpfSkpfSl9c2FzanNNYWtlZGF0YVN1Y2Nlc3NmdWxsKCl7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gbmV3IFByb21pc2UoKGgsdik9Pntj''@;'; put 'put ''b25zdCBDPWAke3RoaXMuZ2V0U2FzanNDb25maWcoKS5hcHBMb2N9L3NlcnZpY2VzL2FkbWluYDt0aGlzLnNhc2pzU2VydmljZS5nZXRGb2xkZXJDb250ZW50c0Zyb21Ecml2ZShDKS5zdWJzY3JpYmUoST0+e0kuZmlsZXMuaW5jbHVkZXMoIm1ha2VkYXRhLnNhcyIpP2goITEpOmgoITApfSxJ''@;'; put 'put ''PT57SS5lcnJvci5pbmNsdWRlcygiRm9sZGVyIGRvZXNuJ3QgZXhpc3QuIikmJnYoKX0pfSl9KX1jaGVja1ZpeWFEZXBsb3koaCl7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgeT0hMTt5PXZvaWQgMCE9PXRoaXMuc2FzanNBZGFwdGVyLmdldEZvbGRlcj95''@;'; put 'put ''aWVsZCB0aGlzLmFwcExvY0NoZWNrKGgpOnlpZWxkIHRoaXMuYXBwTG9jQ2hlY2tQcmVBeGlvc2RBZGFwdGVyKGgpLHkmJnRoaXMubG9hZFN0YXJ0dXBTZXJ2aWNlRW1pdHRlci5lbWl0KCl9KX1hcHBMb2NDaGVjayhoKXtyZXR1cm4gbmV3IFByb21pc2UoKHYseSk9Pm5vKHRoaXMsdm9pZCAw''@;'; put 'put ''LHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgSSxDPSExO3RyeXtJPXlpZWxkIHRoaXMuc2FzanNBZGFwdGVyLmdldEZvbGRlcihoKX1jYXRjaChaKXsiTG9naW5SZXF1aXJlZEVycm9yIj09PVoubmFtZT8odGhpcy5hcHBMb2NDaGVja1BlbmRpbmc9ITAsdGhpcy5zaG91bGRMb2dpbi5uZXh0KCEw''@;'; put 'put ''KSx2KCExKSk6Qz0hMH1pZihDKXJldHVybiBjb25zb2xlLndhcm4oIlZpeWEgc2VydmljZXMgYXJlIG5vdCBwcmVzZW50IG9uIHRoZSBjdXJyZW50IGFwcExvYy4iKSx0aGlzLmV2ZW50U2VydmljZS5zdGFydHVwRGF0YUxvYWRlZCgpLHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9kZXBs''@;'; put 'put ''b3kiKSx2KCExKTt2KCEwKX0pKX1hcHBMb2NDaGVja1ByZUF4aW9zZEFkYXB0ZXIoaCl7cmV0dXJuIG5ldyBQcm9taXNlKCh2LHkpPT57bGV0IEk9ITE7cmV0dXJuIGZldGNoKGAvZm9sZGVycy9mb2xkZXJzL0BpdGVtP3BhdGg9JHtofWApLnRoZW4oWj0+KDQwND09PVouc3RhdHVzJiYoST0h''@;'; put 'put ''MCksWi50ZXh0KCkpKS50aGVuKFo9PntpZih0aGlzLmlzTG9naW5SZXF1aXJlZChaKSl0aGlzLmFwcExvY0NoZWNrUGVuZGluZz0hMCx0aGlzLnNob3VsZExvZ2luLm5leHQoITApO2Vsc2V7aWYoSSlyZXR1cm4gY29uc29sZS53YXJuKCJWaXlhIHNlcnZpY2VzIGFyZSBub3QgcHJlc2VudCBv''@;'; put 'put ''biB0aGUgY3VycmVudCBhcHBMb2MuIiksdGhpcy5ldmVudFNlcnZpY2Uuc3RhcnR1cERhdGFMb2FkZWQoKSx0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvZGVwbG95IiksdighMSk7bGV0IHVlPW51bGw7dHJ5e3VlPUpTT04ucGFyc2UoWil9Y2F0Y2goX2Upe31pZih1ZSYmdWUuaHR0cFN0''@;'; put 'put ''YXR1c0NvZGUmJjQwND09PXVlLmh0dHBTdGF0dXNDb2RlKXJldHVybiBjb25zb2xlLndhcm4oIlZpeWEgc2VydmljZXMgYXJlIG5vdCBwcmVzZW50IG9uIHRoZSBjdXJyZW50IGFwcExvYy4iKSx0aGlzLmV2ZW50U2VydmljZS5zdGFydHVwRGF0YUxvYWRlZCgpLHRoaXMucm91dGVyLm5hdmln''@;'; put 'put ''YXRlQnlVcmwoIi9kZXBsb3kiKSx2KCExKTt2KCEwKX19KS5jYXRjaChaPT57dighMSl9KX0pfWlzTG9naW5SZXF1aXJlZChoKXtyZXR1cm4vPGZvcm0uK2FjdGlvbj0iKC4qTG9nb25bXiJdKikuKj4vZ20udGVzdChoKX1sb2dvdXQoKXt0aGlzLnNhc2pzQWRhcHRlci5sb2dPdXQoKS50aGVu''@;'; put 'put ''KCgpPT57bG9jYXRpb24ucmVsb2FkKCl9KX1nZXRTYXNqc0NvbmZpZygpe3JldHVybiB0aGlzLnNhc2pzQWRhcHRlci5nZXRTYXNqc0NvbmZpZygpfWdldFNhc1JlcXVlc3RzKCl7cmV0dXJuIHRoaXMuc2FzanNBZGFwdGVyLmdldFNhc1JlcXVlc3RzKCl9c2V0RGVidWdTdGF0ZShoKXt0aGlz''@;'; put 'put ''LnNhc2pzQWRhcHRlci5zZXREZWJ1Z1N0YXRlKGgpfWdldFNhc2pzSW5zdGFuY2UoKXtyZXR1cm4gdGhpcy5zYXNqc0FkYXB0ZXJ9Z2V0U2VydmVyVHlwZSgpe2NvbnN0IGg9dGhpcy5zYXNqc0FkYXB0ZXIuZ2V0U2FzanNDb25maWcoKTtyZXR1cm4gaC5zZXJ2ZXJUeXBlP2guc2VydmVyVHlw''@;'; put 'put ''ZToiU0FTVklZQSJ9Z2V0RXhlY3V0aW9uUGF0aCgpe2NvbnN0IGg9dGhpcy5zYXNqc0FkYXB0ZXIuZ2V0U2FzanNDb25maWcoKTtzd2l0Y2goaC5zZXJ2ZXJUeXBlKXtjYXNlIEh1LkQuU2FzVml5YTpyZXR1cm4gaC5wYXRoU0FTVml5YTtjYXNlIEh1LkQuU2FzOTpyZXR1cm4gaC5wYXRoU0FT''@;'; put 'put ''OTtjYXNlIEh1LkQuU2FzanM6cmV0dXJuIGgucGF0aFNBU0pTfX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoQ2koc2spLENpKE9IKSxDaShtdSksQ2koaVEpLENpKHNjKSxDaShabCkpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpk''@;'; put 'put ''Llx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpO2NvbnN0IG9RPWZ1bmN0aW9uIFJvZShkLGcpe3JldHVybiBkPT09Z3x8ZCE9ZCYmZyE9Z30sR0k9ZnVuY3Rpb24gQm9lKGQsZyl7Zm9yKHZhciBoPWQubGVuZ3RoO2gtLTspaWYob1EoZFtoXVswXSxnKSlyZXR1cm4gaDtyZXR1''@;'; put 'put ''cm4tMX07dmFyIEZvZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIHk3KGQpe3ZhciBnPS0xLGg9bnVsbD09ZD8wOmQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytnPGg7KXt2YXIgdj1kW2ddO3RoaXMuc2V0KHZbMF0sdlsxXSl9fXk3LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlv''@;'; put 'put ''biBMb2UoKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSx5Ny5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIEhvZShkKXt2YXIgZz10aGlzLl9fZGF0YV9fLGg9R0koZyxkKTtyZXR1cm4hKGg8MHx8KGg9PWcubGVuZ3RoLTE/Zy5wb3AoKTpGb2UuY2FsbChnLGgsMSksLS10aGlzLnNp''@;'; put 'put ''emUsMCkpfSx5Ny5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIFdJKGQpe3ZhciBnPXRoaXMuX19kYXRhX18saD1HSShnLGQpO3JldHVybiBoPDA/dm9pZCAwOmdbaF1bMV19LHk3LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24gVm9lKGQpe3JldHVybiBHSSh0aGlzLl9fZGF0YV9fLGQpPi0xfSx5Ny5w''@;'; put 'put ''cm90b3R5cGUuc2V0PWZ1bmN0aW9uIFpvZShkLGcpe3ZhciBoPXRoaXMuX19kYXRhX18sdj1HSShoLGQpO3JldHVybiB2PDA/KCsrdGhpcy5zaXplLGgucHVzaChbZCxnXSkpOmhbdl1bMV09Zyx0aGlzfTtjb25zdCBZST15Nyx1UT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZn''@;'; put 'put ''bG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWw7dmFyIGNRPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGY7Y29uc3QgZHA9dVF8fGNRfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHc3PWRwLlN5bWJvbDt2YXIgSkk9T2JqZWN0LnBy''@;'; put 'put ''b3RvdHlwZSxKNT1KSS5oYXNPd25Qcm9wZXJ0eSxmUT1KSS50b1N0cmluZyxBeT13Nz93Ny50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIE0xPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIFFuPXc3P3c3LnRvU3RyaW5nVGFnOnZvaWQgMDtjb25zdCBWMD1mdW5jdGlvbiBHSChkKXtyZXR1''@;'; put 'put ''cm4gbnVsbD09ZD92b2lkIDA9PT1kPyJbb2JqZWN0IFVuZGVmaW5lZF0iOiJbb2JqZWN0IE51bGxdIjpRbiYmUW4gaW4gT2JqZWN0KGQpP2Z1bmN0aW9uIEljKGQpe3ZhciBnPUo1LmNhbGwoZCxBeSksaD1kW0F5XTt0cnl7ZFtBeV09dm9pZCAwO3ZhciB2PSEwfWNhdGNoKEMpe312YXIgeT1m''@;'; put 'put ''US5jYWxsKGQpO3JldHVybiB2JiYoZz9kW0F5XT1oOmRlbGV0ZSBkW0F5XSkseX0oZCk6ZnVuY3Rpb24gekgoZCl7cmV0dXJuIE0xLmNhbGwoZCl9KGQpfSxoaz1mdW5jdGlvbiBwUShkKXt2YXIgZz10eXBlb2YgZDtyZXR1cm4gbnVsbCE9ZCYmKCJvYmplY3QiPT1nfHwiZnVuY3Rpb24iPT1n''@;'; put 'put ''KX0sV0g9ZnVuY3Rpb24gS29lKGQpe2lmKCFoayhkKSlyZXR1cm4hMTt2YXIgZz1WMChkKTtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT1nfHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1nfHwiW29iamVjdCBBc3luY0Z1bmN0aW9uXSI9PWd8fCJbb2JqZWN0IFByb3h5XSI9PWd9''@;'; put 'put ''LFlIPWRwWyJfX2NvcmUtanNfc2hhcmVkX18iXTt2YXIgbVE9ZnVuY3Rpb24oKXt2YXIgZD0vW14uXSskLy5leGVjKFlIJiZZSC5rZXlzJiZZSC5rZXlzLklFX1BST1RPfHwiIik7cmV0dXJuIGQ/IlN5bWJvbChzcmMpXzEuIitkOiIifSgpO3ZhciBxb2U9RnVuY3Rpb24ucHJvdG90eXBlLnRv''@;'; put 'put ''U3RyaW5nO2NvbnN0IFE2PWZ1bmN0aW9uIFhJKGQpe2lmKG51bGwhPWQpe3RyeXtyZXR1cm4gcW9lLmNhbGwoZCl9Y2F0Y2goZyl7fXRyeXtyZXR1cm4gZCsiIn1jYXRjaChnKXt9fXJldHVybiIifTt2YXIgZWFlPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLG9hZT1SZWdFeHAoIl4i''@;'; put 'put ''K0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxc''@;'; put 'put ''XSkvZywiJDEuKj8iKSsiJCIpO2NvbnN0IGFhZT1mdW5jdGlvbiBRSChkKXtyZXR1cm4hKCFoayhkKXx8ZnVuY3Rpb24gdlEoZCl7cmV0dXJuISFtUSYmbVEgaW4gZH0oZCkpJiYoV0goZCk/b2FlOmVhZSkudGVzdChRNihkKSl9LHFkPWZ1bmN0aW9uIHlRKGQsZyl7dmFyIGg9ZnVuY3Rpb24g''@;'; put 'put ''SkgoZCxnKXtyZXR1cm4gbnVsbD09ZD92b2lkIDA6ZFtnXX0oZCxnKTtyZXR1cm4gYWFlKGgpP2g6dm9pZCAwfSxfNz1xZChkcCwiTWFwIiksQzc9cWQoT2JqZWN0LCJjcmVhdGUiKTt2YXIgS0g9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgX1E9T2JqZWN0LnByb3RvdHlw''@;'; put 'put ''ZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBFNyhkKXt2YXIgZz0tMSxoPW51bGw9PWQ/MDpkLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZzxoOyl7dmFyIHY9ZFtnXTt0aGlzLnNldCh2WzBdLHZbMV0pfX1FNy5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gWEgoKXt0aGlzLl9fZGF0YV9f''@;'; put 'put ''PUM3P0M3KG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxFNy5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIHVhZShkKXt2YXIgZz10aGlzLmhhcyhkKSYmZGVsZXRlIHRoaXMuX19kYXRhX19bZF07cmV0dXJuIHRoaXMuc2l6ZS09Zz8xOjAsZ30sRTcucHJvdG90eXBlLmdldD1mdW5jdGlvbiBRMyhk''@;'; put 'put ''KXt2YXIgZz10aGlzLl9fZGF0YV9fO2lmKEM3KXt2YXIgaD1nW2RdO3JldHVybiJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIj09PWg/dm9pZCAwOmh9cmV0dXJuIEtILmNhbGwoZyxkKT9nW2RdOnZvaWQgMH0sRTcucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBjYWUoZCl7dmFyIGc9dGhpcy5f''@;'; put 'put ''X2RhdGFfXztyZXR1cm4gQzc/dm9pZCAwIT09Z1tkXTpfUS5jYWxsKGcsZCl9LEU3LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24ga1EoZCxnKXt2YXIgaD10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKGQpPzA6MSxoW2RdPUM3JiZ2b2lkIDA9PT1nPyJfX2xvZGFzaF9o''@;'; put 'put ''YXNoX3VuZGVmaW5lZF9fIjpnLHRoaXN9O2NvbnN0IHg3PUU3LGU0PWZ1bmN0aW9uIEVRKGQsZyl7dmFyIGg9ZC5fX2RhdGFfXztyZXR1cm4gZnVuY3Rpb24geXkoZCl7dmFyIGc9dHlwZW9mIGQ7cmV0dXJuInN0cmluZyI9PWd8fCJudW1iZXIiPT1nfHwic3ltYm9sIj09Z3x8ImJvb2xlYW4i''@;'; put 'put ''PT1nPyJfX3Byb3RvX18iIT09ZDpudWxsPT09ZH0oZyk/aFsic3RyaW5nIj09dHlwZW9mIGc/InN0cmluZyI6Imhhc2giXTpoLm1hcH07ZnVuY3Rpb24gd3koZCl7dmFyIGc9LTEsaD1udWxsPT1kPzA6ZC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2c8aDspe3ZhciB2PWRbZ107dGhpcy5z''@;'; put 'put ''ZXQodlswXSx2WzFdKX19d3kucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIGZhZSgpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IHg3LG1hcDpuZXcoXzd8fFlJKSxzdHJpbmc6bmV3IHg3fX0sd3kucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbiBkYWUoZCl7dmFyIGc9ZTQo''@;'; put 'put ''dGhpcyxkKS5kZWxldGUoZCk7cmV0dXJuIHRoaXMuc2l6ZS09Zz8xOjAsZ30sd3kucHJvdG90eXBlLmdldD1mdW5jdGlvbiBUUShkKXtyZXR1cm4gZTQodGhpcyxkKS5nZXQoZCl9LHd5LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24gcGFlKGQpe3JldHVybiBlNCh0aGlzLGQpLmhhcyhkKX0sd3ku''@;'; put 'put ''cHJvdG90eXBlLnNldD1mdW5jdGlvbiBtYWUoZCxnKXt2YXIgaD1lNCh0aGlzLGQpLHY9aC5zaXplO3JldHVybiBoLnNldChkLGcpLHRoaXMuc2l6ZSs9aC5zaXplPT12PzA6MSx0aGlzfTtjb25zdCBBYWU9d3k7ZnVuY3Rpb24gWDYoZCl7dmFyIGc9dGhpcy5fX2RhdGFfXz1uZXcgWUkoZCk7''@;'; put 'put ''dGhpcy5zaXplPWcuc2l6ZX1YNi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gVUkoKXt0aGlzLl9fZGF0YV9fPW5ldyBZSSx0aGlzLnNpemU9MH0sWDYucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbiBRSShkKXt2YXIgZz10aGlzLl9fZGF0YV9fLGg9Zy5kZWxldGUoZCk7cmV0dXJuIHRoaXMu''@;'; put 'put ''c2l6ZT1nLnNpemUsaH0sWDYucHJvdG90eXBlLmdldD1mdW5jdGlvbiBHb2UoZCl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGQpfSxYNi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIHNRKGQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhkKX0sWDYucHJvdG90eXBlLnNldD1mdW5jdGlvbiBK''@;'; put 'put ''NihkLGcpe3ZhciBoPXRoaXMuX19kYXRhX187aWYoaCBpbnN0YW5jZW9mIFlJKXt2YXIgdj1oLl9fZGF0YV9fO2lmKCFfN3x8di5sZW5ndGg8MTk5KXJldHVybiB2LnB1c2goW2QsZ10pLHRoaXMuc2l6ZT0rK2guc2l6ZSx0aGlzO2g9dGhpcy5fX2RhdGFfXz1uZXcgQWFlKHYpfXJldHVybiBo''@;'; put 'put ''LnNldChkLGcpLHRoaXMuc2l6ZT1oLnNpemUsdGhpc307Y29uc3QgTFE9WDY7dmFyIHdhZT1mdW5jdGlvbigpe3RyeXt2YXIgZD1xZChPYmplY3QsImRlZmluZVByb3BlcnR5Iik7cmV0dXJuIGQoe30sIiIse30pLGR9Y2F0Y2goZyl7fX0oKTtjb25zdCBSUT13YWUsZU49ZnVuY3Rpb24gYmFl''@;'; put 'put ''KGQsZyxoKXsiX19wcm90b19fIj09ZyYmUlE/UlEoZCxnLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpoLHdyaXRhYmxlOiEwfSk6ZFtnXT1ofTt2YXIgYnk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtjb25zdCBCUT1mdW5jdGlvbiBkayhkLGcsaCl7dmFy''@;'; put 'put ''IHY9ZFtnXTsoIWJ5LmNhbGwoZCxnKXx8IW9RKHYsaCl8fHZvaWQgMD09PWgmJiEoZyBpbiBkKSkmJmVOKGQsZyxoKX0scGs9ZnVuY3Rpb24gQ2FlKGQsZyxoLHYpe3ZhciB5PSFoO2h8fChoPXt9KTtmb3IodmFyIEM9LTEsST1nLmxlbmd0aDsrK0M8STspe3ZhciBaPWdbQ10sdWU9dj92KGhb''@;'; put 'put ''Wl0sZFtaXSxaLGgsZCk6dm9pZCAwO3ZvaWQgMD09PXVlJiYodWU9ZFtaXSkseT9lTihoLFosdWUpOkJRKGgsWix1ZSl9cmV0dXJuIGh9LHQ0PWZ1bmN0aW9uIFBRKGQpe3JldHVybiBudWxsIT1kJiYib2JqZWN0Ij09dHlwZW9mIGR9LEZRPWZ1bmN0aW9uIE1hZShkKXtyZXR1cm4gdDQoZCkm''@;'; put 'put ''JiJbb2JqZWN0IEFyZ3VtZW50c10iPT1WMChkKX07dmFyIEhRPU9iamVjdC5wcm90b3R5cGUsdE49SFEuaGFzT3duUHJvcGVydHksTlE9SFEucHJvcGVydHlJc0VudW1lcmFibGUsRWFlPUZRKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk/RlE6ZnVuY3Rpb24oZCl7cmV0dXJuIHQ0''@;'; put 'put ''KGQpJiZ0Ti5jYWxsKGQsImNhbGxlZSIpJiYhTlEuY2FsbChkLCJjYWxsZWUiKX07Y29uc3Qgbk49RWFlLCRJPUFycmF5LmlzQXJyYXk7dmFyIGpRPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsX3k9alEmJiJvYmplY3QiPT10''@;'; put 'put ''eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSx6UT1feSYmX3kuZXhwb3J0cz09PWpRP2RwLkJ1ZmZlcjp2b2lkIDA7Y29uc3QgaU49KHpRP3pRLmlzQnVmZmVyOnZvaWQgMCl8fGZ1bmN0aW9uIFZRKCl7cmV0dXJuITF9O3ZhciBJYWU9L14oPzowfFsxLTld''@;'; put 'put ''XGQqKSQvO2NvbnN0IFlRPWZ1bmN0aW9uIFdRKGQsZyl7dmFyIGg9dHlwZW9mIGQ7cmV0dXJuISEoZz1udWxsPT1nPzkwMDcxOTkyNTQ3NDA5OTE6ZykmJigibnVtYmVyIj09aHx8InN5bWJvbCIhPWgmJklhZS50ZXN0KGQpKSYmZD4tMSYmZCUxPT0wJiZkPGd9LEs1PWZ1bmN0aW9uIExhZShk''@;'; put 'put ''KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGQmJmQ+LTEmJmQlMT09MCYmZDw9OTAwNzE5OTI1NDc0MDk5MX07dmFyIGoyPXt9O2oyWyJbb2JqZWN0IEZsb2F0MzJBcnJheV0iXT1qMlsiW29iamVjdCBGbG9hdDY0QXJyYXldIl09ajJbIltvYmplY3QgSW50OEFycmF5XSJdPWoyWyJbb2JqZWN0''@;'; put 'put ''IEludDE2QXJyYXldIl09ajJbIltvYmplY3QgSW50MzJBcnJheV0iXT1qMlsiW29iamVjdCBVaW50OEFycmF5XSJdPWoyWyJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSJdPWoyWyJbb2JqZWN0IFVpbnQxNkFycmF5XSJdPWoyWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLGoyWyJbb2Jq''@;'; put 'put ''ZWN0IEFyZ3VtZW50c10iXT1qMlsiW29iamVjdCBBcnJheV0iXT1qMlsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1qMlsiW29iamVjdCBCb29sZWFuXSJdPWoyWyJbb2JqZWN0IERhdGFWaWV3XSJdPWoyWyJbb2JqZWN0IERhdGVdIl09ajJbIltvYmplY3QgRXJyb3JdIl09ajJbIltvYmplY3Qg''@;'; put 'put ''RnVuY3Rpb25dIl09ajJbIltvYmplY3QgTWFwXSJdPWoyWyJbb2JqZWN0IE51bWJlcl0iXT1qMlsiW29iamVjdCBPYmplY3RdIl09ajJbIltvYmplY3QgUmVnRXhwXSJdPWoyWyJbb2JqZWN0IFNldF0iXT1qMlsiW29iamVjdCBTdHJpbmddIl09ajJbIltvYmplY3QgV2Vha01hcF0iXT0hMTtj''@;'; put 'put ''b25zdCBTeT1mdW5jdGlvbiBzTihkKXtyZXR1cm4gZnVuY3Rpb24oZyl7cmV0dXJuIGQoZyl9fTt2YXIgdU49Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiZleHBvcnRzJiYhZXhwb3J0cy5ub2RlVHlwZSYmZXhwb3J0cyxxNT11TiYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZSYm''@;'; put 'put ''IW1vZHVsZS5ub2RlVHlwZSYmbW9kdWxlLGVEPXE1JiZxNS5leHBvcnRzPT09dU4mJnVRLnByb2Nlc3M7Y29uc3QgTXk9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHE1JiZxNS5yZXF1aXJlJiZxNS5yZXF1aXJlKCJ1dGlsIikudHlwZXN8fGVEJiZlRC5iaW5kaW5nJiZlRC5iaW5kaW5nKCJ1dGls''@;'; put 'put ''Iil9Y2F0Y2goZyl7fX0oKTt2YXIgRXk9TXkmJk15LmlzVHlwZWRBcnJheTtjb25zdCBlSj1FeT9TeShFeSk6ZnVuY3Rpb24gV2FlKGQpe3JldHVybiB0NChkKSYmSzUoZC5sZW5ndGgpJiYhIWoyW1YwKGQpXX07dmFyIFVhZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2NvbnN0''@;'; put 'put ''IHRKPWZ1bmN0aW9uIFFhZShkLGcpe3ZhciBoPSRJKGQpLHY9IWgmJm5OKGQpLHk9IWgmJiF2JiZpTihkKSxDPSFoJiYhdiYmIXkmJmVKKGQpLEk9aHx8dnx8eXx8QyxaPUk/ZnVuY3Rpb24gbXZlKGQsZyl7Zm9yKHZhciBoPS0xLHY9QXJyYXkoZCk7KytoPGQ7KXZbaF09ZyhoKTtyZXR1cm4g''@;'; put 'put ''dn0oZC5sZW5ndGgsU3RyaW5nKTpbXSx1ZT1aLmxlbmd0aDtmb3IodmFyIF9lIGluIGQpKGd8fFVhZS5jYWxsKGQsX2UpKSYmKCFJfHwhKCJsZW5ndGgiPT1fZXx8eSYmKCJvZmZzZXQiPT1fZXx8InBhcmVudCI9PV9lKXx8QyYmKCJidWZmZXIiPT1fZXx8ImJ5dGVMZW5ndGgiPT1fZXx8ImJ5''@;'; put 'put ''dGVPZmZzZXQiPT1fZSl8fFlRKF9lLHVlKSkpJiZaLnB1c2goX2UpO3JldHVybiBafTt2YXIgSmFlPU9iamVjdC5wcm90b3R5cGU7Y29uc3QgY049ZnVuY3Rpb24gWGFlKGQpe3ZhciBnPWQmJmQuY29uc3RydWN0b3I7cmV0dXJuIGQ9PT0oImZ1bmN0aW9uIj09dHlwZW9mIGcmJmcucHJvdG90''@;'; put 'put ''eXBlfHxKYWUpfSxuSj1mdW5jdGlvbiBLYWUoZCxnKXtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuIGQoZyhoKSl9fSxySj1uSihPYmplY3Qua2V5cyxPYmplY3QpO3ZhciBpSj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2NvbnN0IGZOPWZ1bmN0aW9uIG9KKGQpe3JldHVybiBu''@;'; put 'put ''dWxsIT1kJiZLNShkLmxlbmd0aCkmJiFXSChkKX0seHk9ZnVuY3Rpb24gbmxlKGQpe3JldHVybiBmTihkKT90SihkKTpmdW5jdGlvbiBlbGUoZCl7aWYoIWNOKGQpKXJldHVybiBySihkKTt2YXIgZz1bXTtmb3IodmFyIGggaW4gT2JqZWN0KGQpKWlKLmNhbGwoZCxoKSYmImNvbnN0cnVjdG9y''@;'; put 'put ''IiE9aCYmZy5wdXNoKGgpO3JldHVybiBnfShkKX07dmFyIGFsZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2NvbnN0IGROPWZ1bmN0aW9uIGhOKGQpe2lmKCFoayhkKSlyZXR1cm4gZnVuY3Rpb24gaWxlKGQpe3ZhciBnPVtdO2lmKG51bGwhPWQpZm9yKHZhciBoIGluIE9iamVj''@;'; put 'put ''dChkKSlnLnB1c2goaCk7cmV0dXJuIGd9KGQpO3ZhciBnPWNOKGQpLGg9W107Zm9yKHZhciB2IGluIGQpImNvbnN0cnVjdG9yIj09diYmKGd8fCFhbGUuY2FsbChkLHYpKXx8aC5wdXNoKHYpO3JldHVybiBofSxwTj1mdW5jdGlvbiBBdShkKXtyZXR1cm4gZk4oZCk/dEooZCwhMCk6ZE4oZCl9''@;'; put 'put ''O3ZhciBnTj0ib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJmV4cG9ydHMmJiFleHBvcnRzLm5vZGVUeXBlJiZleHBvcnRzLG1OPWdOJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsbEo9bU4mJm1OLmV4cG9ydHM9PT1nTj9kcC5CdWZm''@;'; put 'put ''ZXI6dm9pZCAwLGlEPWxKP2xKLmFsbG9jVW5zYWZlOnZvaWQgMDtjb25zdCB2az1mdW5jdGlvbiB2Tigpe3JldHVybltdfTt2YXIgdUo9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxjSj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGNsZT1jSj9mdW5jdGlvbihk''@;'; put 'put ''KXtyZXR1cm4gbnVsbD09ZD9bXTooZD1PYmplY3QoZCksZnVuY3Rpb24gb0QoZCxnKXtmb3IodmFyIGg9LTEsdj1udWxsPT1kPzA6ZC5sZW5ndGgseT0wLEM9W107KytoPHY7KXt2YXIgST1kW2hdO2coSSxoLGQpJiYoQ1t5KytdPUkpfXJldHVybiBDfShjSihkKSxmdW5jdGlvbihnKXtyZXR1''@;'; put 'put ''cm4gdUouY2FsbChkLGcpfSkpfTp2aztjb25zdCB0Zz1jbGUsQU49ZnVuY3Rpb24gYUQoZCxnKXtmb3IodmFyIGg9LTEsdj1nLmxlbmd0aCx5PWQubGVuZ3RoOysraDx2OylkW3kraF09Z1toXTtyZXR1cm4gZH0seU49bkooT2JqZWN0LmdldFByb3RvdHlwZU9mLE9iamVjdCk7dmFyIGRsZT1P''@;'; put 'put ''YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKGQpe2Zvcih2YXIgZz1bXTtkOylBTihnLHRnKGQpKSxkPXlOKGQpO3JldHVybiBnfTp2aztjb25zdCBmSj1kbGUsbEQ9ZnVuY3Rpb24gZ2xlKGQsZyxoKXt2YXIgdj1nKGQpO3JldHVybiAkSShkKT92OkFOKHYsaChkKSl9LHZs''@;'; put 'put ''ZT1mdW5jdGlvbiBtbGUoZCl7cmV0dXJuIGxEKGQseHksdGcpfSx5bGU9ZnVuY3Rpb24gQWxlKGQpe3JldHVybiBsRChkLHBOLGZKKX0sYk49cWQoZHAsIkRhdGFWaWV3IiksX049cWQoZHAsIlByb21pc2UiKSx1RD1xZChkcCwiU2V0IiksRDc9cWQoZHAsIldlYWtNYXAiKTt2YXIgY0Q9Iltv''@;'; put 'put ''YmplY3QgTWFwXSIsTWw9IltvYmplY3QgUHJvbWlzZV0iLENOPSJbb2JqZWN0IFNldF0iLHYyPSJbb2JqZWN0IFdlYWtNYXBdIixCYT0iW29iamVjdCBEYXRhVmlld10iLHBKPVE2KGJOKSx0MT1RNihfNyksbmc9UTYoX04pLGcxPVE2KHVEKSxmRD1RNihENykscmc9VjA7KGJOJiZyZyhuZXcg''@;'; put 'put ''Yk4obmV3IEFycmF5QnVmZmVyKDEpKSkhPUJhfHxfNyYmcmcobmV3IF83KSE9Y0R8fF9OJiZyZyhfTi5yZXNvbHZlKCkpIT1NbHx8dUQmJnJnKG5ldyB1RCkhPUNOfHxENyYmcmcobmV3IEQ3KSE9djIpJiYocmc9ZnVuY3Rpb24oZCl7dmFyIGc9VjAoZCksaD0iW29iamVjdCBPYmplY3RdIj09''@;'; put 'put ''Zz9kLmNvbnN0cnVjdG9yOnZvaWQgMCx2PWg/UTYoaCk6IiI7aWYodilzd2l0Y2godil7Y2FzZSBwSjpyZXR1cm4gQmE7Y2FzZSB0MTpyZXR1cm4gY0Q7Y2FzZSBuZzpyZXR1cm4gTWw7Y2FzZSBnMTpyZXR1cm4gQ047Y2FzZSBmRDpyZXR1cm4gdjJ9cmV0dXJuIGd9KTtjb25zdCBrTj1yZzt2''@;'; put 'put ''YXIgd3U9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtjb25zdCBnSj1kcC5VaW50OEFycmF5LHBEPWZ1bmN0aW9uIFNOKGQpe3ZhciBnPW5ldyBkLmNvbnN0cnVjdG9yKGQuYnl0ZUxlbmd0aCk7cmV0dXJuIG5ldyBnSihnKS5zZXQobmV3IGdKKGQpKSxnfTt2YXIgTDc9L1x3KiQv''@;'; put 'put ''O3ZhciBFTj13Nz93Ny5wcm90b3R5cGU6dm9pZCAwLHhOPUVOP0VOLnZhbHVlT2Y6dm9pZCAwO2NvbnN0IG9nPWZ1bmN0aW9uIExsZShkLGcsaCl7dmFyIHY9ZC5jb25zdHJ1Y3Rvcjtzd2l0Y2goZyl7Y2FzZSJbb2JqZWN0IEFycmF5QnVmZmVyXSI6cmV0dXJuIHBEKGQpO2Nhc2UiW29iamVj''@;'; put 'put ''dCBCb29sZWFuXSI6Y2FzZSJbb2JqZWN0IERhdGVdIjpyZXR1cm4gbmV3IHYoK2QpO2Nhc2UiW29iamVjdCBEYXRhVmlld10iOnJldHVybiBmdW5jdGlvbiBrbGUoZCxnKXt2YXIgaD1nP3BEKGQuYnVmZmVyKTpkLmJ1ZmZlcjtyZXR1cm4gbmV3IGQuY29uc3RydWN0b3IoaCxkLmJ5dGVPZmZz''@;'; put 'put ''ZXQsZC5ieXRlTGVuZ3RoKX0oZCxoKTtjYXNlIltvYmplY3QgRmxvYXQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iOmNhc2UiW29iamVjdCBJbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgSW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBJbnQzMkFycmF5XSI6Y2FzZSJbb2Jq''@;'; put 'put ''ZWN0IFVpbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIjpjYXNlIltvYmplY3QgVWludDE2QXJyYXldIjpjYXNlIltvYmplY3QgVWludDMyQXJyYXldIjpyZXR1cm4gZnVuY3Rpb24gTzcoZCxnKXt2YXIgaD1nP3BEKGQuYnVmZmVyKTpkLmJ1ZmZlcjtyZXR1cm4g''@;'; put 'put ''bmV3IGQuY29uc3RydWN0b3IoaCxkLmJ5dGVPZmZzZXQsZC5sZW5ndGgpfShkLGgpO2Nhc2UiW29iamVjdCBNYXBdIjpjYXNlIltvYmplY3QgU2V0XSI6cmV0dXJuIG5ldyB2O2Nhc2UiW29iamVjdCBOdW1iZXJdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIG5ldyB2KGQpO2Nhc2Ui''@;'; put 'put ''W29iamVjdCBSZWdFeHBdIjpyZXR1cm4gZnVuY3Rpb24gTU4oZCl7dmFyIGc9bmV3IGQuY29uc3RydWN0b3IoZC5zb3VyY2UsTDcuZXhlYyhkKSk7cmV0dXJuIGcubGFzdEluZGV4PWQubGFzdEluZGV4LGd9KGQpO2Nhc2UiW29iamVjdCBTeW1ib2xdIjpyZXR1cm4gZnVuY3Rpb24gdkooZCl7''@;'; put 'put ''cmV0dXJuIHhOP09iamVjdCh4Ti5jYWxsKGQpKTp7fX0oZCl9fTt2YXIgT049T2JqZWN0LmNyZWF0ZSxhZz1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoKXt9cmV0dXJuIGZ1bmN0aW9uKGcpe2lmKCFoayhnKSlyZXR1cm57fTtpZihPTilyZXR1cm4gT04oZyk7ZC5wcm90b3R5cGU9Zzt2YXIgaD1u''@;'; put 'put ''ZXcgZDtyZXR1cm4gZC5wcm90b3R5cGU9dm9pZCAwLGh9fSgpO2NvbnN0IHlEPWFnO3ZhciBCTj1NeSYmTXkuaXNNYXA7Y29uc3QgQ0o9Qk4/U3koQk4pOmZ1bmN0aW9uIFJOKGQpe3JldHVybiB0NChkKSYmIltvYmplY3QgTWFwXSI9PWtOKGQpfTt2YXIga0o9TXkmJk15LmlzU2V0O2NvbnN0''@;'; put 'put ''IEhsZT1rSj9TeShrSik6ZnVuY3Rpb24gUGxlKGQpe3JldHVybiB0NChkKSYmIltvYmplY3QgU2V0XSI9PWtOKGQpfTt2YXIgd0Q9IltvYmplY3QgQXJndW1lbnRzXSIsRk49IltvYmplY3QgRnVuY3Rpb25dIixFSj0iW29iamVjdCBPYmplY3RdIixBMj17fTtBMlt3RF09QTJbIltvYmplY3Qg''@;'; put 'put ''QXJyYXldIl09QTJbIltvYmplY3QgQXJyYXlCdWZmZXJdIl09QTJbIltvYmplY3QgRGF0YVZpZXddIl09QTJbIltvYmplY3QgQm9vbGVhbl0iXT1BMlsiW29iamVjdCBEYXRlXSJdPUEyWyJbb2JqZWN0IEZsb2F0MzJBcnJheV0iXT1BMlsiW29iamVjdCBGbG9hdDY0QXJyYXldIl09QTJbIltv''@;'; put 'put ''YmplY3QgSW50OEFycmF5XSJdPUEyWyJbb2JqZWN0IEludDE2QXJyYXldIl09QTJbIltvYmplY3QgSW50MzJBcnJheV0iXT1BMlsiW29iamVjdCBNYXBdIl09QTJbIltvYmplY3QgTnVtYmVyXSJdPUEyW0VKXT1BMlsiW29iamVjdCBSZWdFeHBdIl09QTJbIltvYmplY3QgU2V0XSJdPUEyWyJb''@;'; put 'put ''b2JqZWN0IFN0cmluZ10iXT1BMlsiW29iamVjdCBTeW1ib2xdIl09QTJbIltvYmplY3QgVWludDhBcnJheV0iXT1BMlsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1BMlsiW29iamVjdCBVaW50MTZBcnJheV0iXT1BMlsiW29iamVjdCBVaW50MzJBcnJheV0iXT0hMCxBMlsiW29iamVj''@;'; put 'put ''dCBFcnJvcl0iXT1BMltGTl09QTJbIltvYmplY3QgV2Vha01hcF0iXT0hMTtjb25zdCBOTj1mdW5jdGlvbiBfayhkLGcsaCx2LHksQyl7dmFyIEksWj0xJmcsdWU9MiZnLF9lPTQmZztpZihoJiYoST15P2goZCx2LHksQyk6aChkKSksdm9pZCAwIT09SSlyZXR1cm4gSTtpZighaGsoZCkpcmV0''@;'; put 'put ''dXJuIGQ7dmFyIEJlPSRJKGQpO2lmKEJlKXtpZihJPWZ1bmN0aW9uIF9sZShkKXt2YXIgZz1kLmxlbmd0aCxoPW5ldyBkLmNvbnN0cnVjdG9yKGcpO3JldHVybiBnJiYic3RyaW5nIj09dHlwZW9mIGRbMF0mJnd1LmNhbGwoZCwiaW5kZXgiKSYmKGguaW5kZXg9ZC5pbmRleCxoLmlucHV0PWQu''@;'; put 'put ''aW5wdXQpLGh9KGQpLCFaKXJldHVybiBmdW5jdGlvbiBzbGUoZCxnKXt2YXIgaD0tMSx2PWQubGVuZ3RoO2ZvcihnfHwoZz1BcnJheSh2KSk7KytoPHY7KWdbaF09ZFtoXTtyZXR1cm4gZ30oZCxJKX1lbHNle3ZhciBOZT1rTihkKSxLZT1OZT09Rk58fCJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0''@;'; put 'put ''aW9uXSI9PU5lO2lmKGlOKGQpKXJldHVybiBmdW5jdGlvbiBsbGUoZCxnKXtpZihnKXJldHVybiBkLnNsaWNlKCk7dmFyIGg9ZC5sZW5ndGgsdj1pRD9pRChoKTpuZXcgZC5jb25zdHJ1Y3RvcihoKTtyZXR1cm4gZC5jb3B5KHYpLHZ9KGQsWik7aWYoTmU9PUVKfHxOZT09d0R8fEtlJiYheSl7''@;'; put 'put ''aWYoST11ZXx8S2U/e306ZnVuY3Rpb24gWjIoZCl7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIGQuY29uc3RydWN0b3J8fGNOKGQpP3t9OnlEKHlOKGQpKX0oZCksIVopcmV0dXJuIHVlP2Z1bmN0aW9uIGhKKGQsZyl7cmV0dXJuIHBrKGQsZkooZCksZyl9KGQsZnVuY3Rpb24gSjMoZCxnKXty''@;'; put 'put ''ZXR1cm4gZCYmcGsoZyxwTihnKSxkKX0oSSxkKSk6ZnVuY3Rpb24gZmxlKGQsZyl7cmV0dXJuIHBrKGQsdGcoZCksZyl9KGQsZnVuY3Rpb24gcmxlKGQsZyl7cmV0dXJuIGQmJnBrKGcseHkoZyksZCl9KEksZCkpfWVsc2V7aWYoIUEyW05lXSlyZXR1cm4geT9kOnt9O0k9b2coZCxOZSxaKX19''@;'; put 'put ''Q3x8KEM9bmV3IExRKTt2YXIgcHQ9Qy5nZXQoZCk7aWYocHQpcmV0dXJuIHB0O0Muc2V0KGQsSSksSGxlKGQpP2QuZm9yRWFjaChmdW5jdGlvbihmbil7SS5hZGQoX2soZm4sZyxoLGZuLGQsQykpfSk6Q0ooZCkmJmQuZm9yRWFjaChmdW5jdGlvbihmbixMbil7SS5zZXQoTG4sX2soZm4sZyxo''@;'; put 'put ''LExuLGQsQykpfSk7dmFyICR0PUJlP3ZvaWQgMDooX2U/dWU/eWxlOnZsZTp1ZT9wTjp4eSkoZCk7cmV0dXJuIGZ1bmN0aW9uIE9RKGQsZyl7Zm9yKHZhciBoPS0xLHY9bnVsbD09ZD8wOmQubGVuZ3RoOysraDx2JiYhMSE9PWcoZFtoXSxoLGQpOyk7fSgkdHx8ZCxmdW5jdGlvbihmbixMbil7''@;'; put 'put ''JHQmJihmbj1kW0xuPWZuXSksQlEoSSxMbixfayhmbixnLGgsTG4sZCxDKSl9KSxJfTt2YXIgbnNlPUwoOTQ5Myk7bGV0IFhjPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLnNob3duTGlicmFyaWVzPTUwLHRoaXMubG9hZE1vcmVDb3VudD01MCx0aGlzLmlzTWljcm9zb2Z0PSEx''@;'; put 'put ''LHRoaXMuaXNNaWNyb3NvZnQ9dGhpcy5pc0lFb3JFREdFKCksY29uc29sZS5sb2coIklzIElFIG9yIEVkZ2U/Iix0aGlzLmlzTWljcm9zb2Z0KX1jb252ZXJ0SnNEYXRlVG9TYXNEYXRlKGgsdj0iZGF5cyIpe2xldCB5LEM9MDt5PWggaW5zdGFuY2VvZiBEYXRlP2g6bmV3IERhdGUoaCksQz1u''@;'; put 'put ''ZXcgRGF0ZShEYXRlLlVUQyh5LmdldEZ1bGxZZWFyKCkseS5nZXRNb250aCgpLHkuZ2V0RGF0ZSgpLHkuZ2V0SG91cnMoKSx5LmdldE1pbnV0ZXMoKSx5LmdldFNlY29uZHMoKSkpLnZhbHVlT2YoKTtjb25zdCB1ZT1DKzMxNTYxOTJlNTtzd2l0Y2godil7Y2FzZSJkYXlzIjp7bGV0IF9lPXVl''@;'; put 'put ''Lzg2NGU1O3JldHVybiBfZT1NYXRoLmFicyhfZSksX2U9TWF0aC5mbG9vcihfZSksX2V9Y2FzZSJzZWNvbmRzIjpyZXR1cm4gdWUvMWUzfXJldHVybiAwfWNvbnZlcnRTYXNEYXlzVG9Kc0RhdGUoaCx2PSJkYXlzIil7aWYoIm51bWJlciIhPXR5cGVvZiBoJiYoaD1wYXJzZUZsb2F0KGgpKSwi''@;'; put 'put ''c2Vjb25kcyI9PT12KXtsZXQgWj0xZTMqaC0zMTU2MTkyZTU7cmV0dXJuIForPTYwKm5ldyBEYXRlKFopLmdldFRpbWV6b25lT2Zmc2V0KCkqMWUzLG5ldyBEYXRlKFopfXJldHVybiBuZXcgRGF0ZSg4NjRlNSpoLTMxNTYxOTJlNSl9dHJlZU9uRmlsdGVyKGgsdil7bGV0IHk9aC5zZWFyY2hT''@;'; put 'put ''dHJpbmc/aC5zZWFyY2hTdHJpbmc6IiIsQz12LnNwbGl0KCIuIilbMF0sST12LnNwbGl0KCIuIilbMV0sWj1DKyJBbGwiO2hbQ10mJihoW1pdfHwoaFtaXT10aGlzLmRlZXBDbG9uZShoW0NdKSksaFtDXT10aGlzLmRlZXBDbG9uZShoW1pdKSx5Lmxlbmd0aD4wJiYoaFtDXT1oW0NdLmZpbHRl''@;'; put 'put ''cihJP3VlPT51ZVtJXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHkudG9Mb3dlckNhc2UoKSk6dWU9PnVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoeS50b0xvd2VyQ2FzZSgpKSkpKX1saWJyYXJ5T25GaWx0ZXIoaCx2LHkpe3YubGVuZ3RoPjA/aC5mb3JFYWNoKEM9PntDW3ldLnRvTG93ZXJD''@;'; put 'put ''YXNlKCkuaW5jbHVkZXModi50b0xvd2VyQ2FzZSgpKT8oQy5oaWRkZW49ITEsQy5pbkZvcmVncm91bmQ9ITApOihDLmhpZGRlbj0hMCxDLmluRm9yZWdyb3VuZD0hMSl9KToodGhpcy5yZXNldEFycmF5RmlsdGVyKGgpLHRoaXMuZGlzcGxheUxpYnJhcmllcyhoKSl9ZGlzcGxheUxpYnJhcmll''@;'; put 'put ''cyhoLHYpe3Y/dGhpcy5zaG93bkxpYnJhcmllcys9dGhpcy5sb2FkTW9yZUNvdW50Oih0aGlzLnNob3duTGlicmFyaWVzPTUwLHRoaXMucmVzZXRMaWJyYXJ5Rm9yZWdyb3VuZChoKSk7Zm9yKGxldCB5PTA7eTxoLmxlbmd0aCYmeSE9PXRoaXMuc2hvd25MaWJyYXJpZXM7eSsrKWhbeV0uaW5G''@;'; put 'put ''b3JlZ3JvdW5kPSEwfXJlc2V0TGlicmFyeUZvcmVncm91bmQoaCl7Zm9yKGxldCB2PTA7djxoLmxlbmd0aDt2KyspaFt2XS5pbkZvcmVncm91bmQ9ITF9bWV0YU9iamVjdE9uRmlsdGVyKGgsdix5KXt2Lmxlbmd0aD4wPyh0aGlzLnJlc2V0QXJyYXlGaWx0ZXIoaCksaC5mb3JFYWNoKEM9PntD''@;'; put 'put ''W3ldLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModi50b0xvd2VyQ2FzZSgpKXx8KEMuaGlkZGVuPSEwKX0pKTp0aGlzLnJlc2V0QXJyYXlGaWx0ZXIoaCl9cmVzZXRBcnJheUZpbHRlcihoKXtoLmZvckVhY2godj0+e3YuaGlkZGVuPSExLHYuaW5Gb3JlZ3JvdW5kJiZkZWxldGUgdi5pbkZvcmVn''@;'; put 'put ''cm91bmR9KX1pc0lFb3JFREdFKCl7dmFyIGg9d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7cmV0dXJuIGguaW5kZXhPZigiTVNJRSAiKT4wfHwoaC5pbmRleE9mKCJUcmlkZW50LyIpPjA/KGguaW5kZXhPZigicnY6IiksITApOmguaW5kZXhPZigiRWRnZS8iKT4wKX1jb252ZXJ0T2JqZWN0''@;'; put 'put ''c1RvQXJyYXkoaCx2PSExKXtyZXR1cm4gdiYmKGg9dGhpcy5kZWVwQ2xvbmUoaCkpLGgubWFwKHk9Pk9iamVjdC5rZXlzKHkpLm1hcChDPT55W0NdKSl9YWRkTGVhZGluZ1plcm8oaCl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBoJiYoaD1oLnRvU3RyaW5nKCkpLGgubGVuZ3RoPDI/IjAiK2g6''@;'; put 'put ''aH1kZWxldGVLZXlzQW5kSGFzaChoLHYseT0hMCl7Y29uc3QgQz15P3RoaXMuZGVlcENsb25lKGgpOmg7Zm9yKGxldCBJIG9mIHYpZGVsZXRlIENbSV07cmV0dXJuIG5zZShKU09OLnN0cmluZ2lmeShDKSkudG9TdHJpbmcoKX1kb3dubG9hZFRleHRGaWxlKGgsdil7Y29uc3QgeT1kb2N1bWVu''@;'; put 'put ''dC5jcmVhdGVFbGVtZW50KCJhIik7eS5zZXRBdHRyaWJ1dGUoImhyZWYiLCJkYXRhOnRleHQvcGxhaW47Y2hhcnNldD11dGYtOCwiK2VuY29kZVVSSUNvbXBvbmVudCh2KSkseS5zZXRBdHRyaWJ1dGUoImRvd25sb2FkIixoKyIudHh0IikseS5zdHlsZS5kaXNwbGF5PSJub25lIixkb2N1bWVu''@;'; put 'put ''dC5ib2R5LmFwcGVuZENoaWxkKHkpLHkuY2xpY2soKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHkpfWNvbnZlcnRBcnJheVZhbHVlcyhoLHYpe2lmKGgubGVuZ3RoPDEpcmV0dXJuW107c3dpdGNoKHYpe2Nhc2UibnVtYmVyIjpyZXR1cm4gaC5tYXAoeT0+MSp5KTtjYXNlInN0cmluZyI6''@;'; put 'put ''cmV0dXJuIGgudG9TdHJpbmcoKS5zcGxpdCgiLCIpfX1kZWJvdW5jZUNhbGwoaCx2KXtjbGVhclRpbWVvdXQodGhpcy5kZWJvdW5jZVRpbWVvdXQpLHRoaXMuZGVib3VuY2VUaW1lb3V0PXNldFRpbWVvdXQodixoKX1kZWVwQ2xvbmUoaCl7cmV0dXJuIGZ1bmN0aW9uIFZOKGQpe3JldHVybiBO''@;'; put 'put ''TihkLDUpfShoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksZH0pKCksUjc9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYs''@;'; put 'put ''eSxDLEksWil7dGhpcy5hcHBTdG9yZVNlcnZpY2U9aCx0aGlzLmV2ZW50U2VydmljZT12LHRoaXMuc2FzU2VydmljZT15LHRoaXMubG9nZ2VyU2VydmljZT1DLHRoaXMuaGVscGVyU2VydmljZT1JLHRoaXMucm91dGVyPVosdGhpcy5pc0FwcEFjdGl2YXRlZD1uZXcgZnMobnVsbCksdGhpcy5p''@;'; put 'put ''c0FwcE92ZXJDYXBhY2l0eT1uZXcgZnMoITEpLHRoaXMuY3VycmVudFVzZXJDYW5SZWdpc3Rlcj1uZXcgZnMoITEpLHRoaXMubGljZW5zZUV4cGlyZXNJbkRheXM9bmV3IGZzKG51bGwpLHRoaXMuaXNBcHBEZW1vPW5ldyBmcyghMSksdGhpcy5zeXNzaXRlPW5ldyBmcyhudWxsKSx0aGlzLnJl''@;'; put 'put ''c3RyaWN0RWRpdFJlY29yZD0hMSx0aGlzLmhvdF9saWNlbnNlX2tleT1uZXcgZnModm9pZCAwKSx0aGlzLmRlbW9MaW1pdHM9e30sdGhpcy5saWNlbnNlS2V5RGF0YT1udWxsLHRoaXMuc3Vic2NyaWJlKCksdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSh1ZT0+e3VlIGluc3RhbmNlb2Yg''@;'; put 'put ''RzYmJiIvZGVwbG95Ij09PXVlLnVybCYmdGhpcy5ldmVudFNlcnZpY2Uuc3RhcnR1cERhdGFMb2FkZWQoKX0pfXNhc1NlcnZpY2VJbml0KCl7dGhpcy5zYXNTZXJ2aWNlLnNhc1NlcnZpY2VJbml0KCl9c3Vic2NyaWJlKCl7dGhpcy5zYXNTZXJ2aWNlLmxvYWRTdGFydHVwU2VydmljZUVtaXR0''@;'; put 'put ''ZXIuc3Vic2NyaWJlKCgpPT57dGhpcy5zdGFydFVwRGF0YSgpfSksdGhpcy5zYXNTZXJ2aWNlLmluY29ycmVjdFNpdGVJZEVtaXR0ZXIuc3Vic2NyaWJlKGg9PntudWxsIT09dGhpcy5pc0FwcEFjdGl2YXRlZC52YWx1ZSYmIXRoaXMuaXNBcHBEZW1vLnZhbHVlJiZ0aGlzLmRlYWN0aXZhdGVB''@;'; put 'put ''cHAoYC9saWNlbnNpbmcva2V5P2Vycm9yPW1pc3NtYXRjaCZtaXNzbWF0Y2hJZD0ke2h9YCl9KSx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdFNpdGVJZEVtaXR0ZXIuc3Vic2NyaWJlKGg9Pnt0aGlzLnBhdGNoU3lzc2l0ZShoKX0pfWdldEhvdExpY2Vuc2VLZXkoKXtyZXR1cm4gdGhpcy5ob3Rf''@;'; put 'put ''bGljZW5zZV9rZXkudmFsdWV9Z2V0TGljZW5zZUtleURhdGEoKXtyZXR1cm4gdGhpcy5saWNlbnNlS2V5RGF0YX1kZWFjdGl2YXRlQXBwKGgpe3RoaXMuaXNBcHBBY3RpdmF0ZWQubmV4dCghMSksaCYmdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChoKX1wYXRjaFN5c3NpdGUoaCl7bGV0IHY9''@;'; put 'put ''dGhpcy5zeXNzaXRlLmdldFZhbHVlKCk7diYmKHYuaW5jbHVkZXMoaCl8fCh2LnB1c2goaCksdGhpcy5zeXNzaXRlLm5leHQodikpKX1zdGFydFVwRGF0YSgpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7bGV0IGg9ITE7eWllbGQgdGhpcy5zYXNTZXJ2aWNlLnJl''@;'; put 'put ''cXVlc3QoInB1YmxpYy9zdGFydHVwc2VydmljZSIsbnVsbCkudGhlbih2PT5ubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5zeXNzaXRlLm5leHQoW3YuU1lTU0lURV0pO2xldCBJLFoseT12LnNhc2RhdGFzZXRzLEM9e307Zm9yKGxldCBOZSBvZiB5KUNbTmUuTElCUkVG''@;'; put 'put ''XXx8KENbTmUuTElCUkVGXT1bXSksQ1tOZS5MSUJSRUZdLnB1c2goTmUuRFNOKTtsZXQgdWU9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShDKSksX2U9W107Zm9yKGxldCBOZSBvZiBPYmplY3Qua2V5cyh1ZSkpX2UucHVzaCh7TElCUkFSWVJFRjpOZSx0YWJsZXM6dWVbTmVdfSk7bGV0IEJl''@;'; put 'put ''PV9lO0k9QyxaPU9iamVjdC5rZXlzKEMpLHZvaWQgMCE9PUkmJihuaS5lZGl0b3IubGlic0FuZFRhYmxlcz1JKSxuaS5lZGl0b3IudHJlZU5vZGVMaWJyYXJpZXM9QmUsbmkuZWRpdG9yLmxpYnJhcmllcz1aLG5pLmVkaXRvci5zdGFydHVwU2V0PSEwLHRoaXMucmVzdHJpY3RFZGl0UmVjb3Jk''@;'; put 'put ''PSJZRVMiPT09di5nbG9idmFyc1swXS5EQ19SRVNUUklDVF9FRElUUkVDT1JELHlpZWxkIHRoaXMubGljZW5zaW5nKHYuZ2xvYnZhcnMsdi5TWVNTSVRFKX0pKS5jYXRjaCh2PT57aD0hMCx0aGlzLmlzQXBwQWN0aXZhdGVkLm5leHQoITEpfSksdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZygiQWN0''@;'; put 'put ''aXZhdGVkOiIsdGhpcy5pc0FwcEFjdGl2YXRlZC52YWx1ZSksaHx8KHRoaXMuZXZlbnRTZXJ2aWNlLnN0YXJ0dXBEYXRhTG9hZGVkKCksdGhpcy5pc0FwcEFjdGl2YXRlZC52YWx1ZT90aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoImxpY2Vuc2luZyIpJiZ0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5''@;'; put 'put ''VXJsKCIvaG9tZSIpOiF0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoImRlcGxveSIpJiYhdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCJsaWNlbnNpbmciKSYmdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2xpY2Vuc2luZy9rZXk/ZXJyb3I9bWlzc2luZyIpKX0pfWxpY2Vuc2luZyhoLHYp''@;'; put 'put ''e3ZhciB5O3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7aWYoIWh8fCFoWzBdKXtjb25zdCBJPSdFcnJvciBnZXR0aW5nICJHbG9idmFycyIgZnJvbSBzdGFydHVwc2VydmljZSByZXNwb25zZS4nO3JldHVybiBjb25zb2xlLmVycm9yKEkpLHRoaXMuaXNBcHBBY3Rp''@;'; put 'put ''dmF0ZWQubmV4dCghMSksdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAvbGljZW5zaW5nL2tleT9lcnJvcj1pbnZhbGlkJmRldGFpbHM9JHtidG9hKEkpfWApfWxldCBDPWhbMF07aWYoQy5MSUNFTkNFX0tFWSYmQy5BQ1RJVkFUSU9OX0tFWSYmbnVsbCE9IUMuUkVHSVNURVJDT1VO''@;'; put 'put ''VCYmbnVsbCE9IUMuSVNSRUdJU1RFUkVEKXRoaXMubGljZW5jZUtleT1DLkxJQ0VOQ0VfS0VZLHRoaXMuYWN0aXZhdGlvbktleT1DLkFDVElWQVRJT05fS0VZLHlpZWxkIHRoaXMuZGVjcnlwdExpY2Vuc2VLZXkoQy5MSUNFTkNFX0tFWSxDLkFDVElWQVRJT05fS0VZKS50aGVuKEk9Pnt0aGlz''@;'; put 'put ''LmFwcGxpY2F0aW9uQWN0aXZhdGlvbihJLEMsdil9LEk9Pntjb25zdCBaPWBFcnJvciBkZWNyeXB0aW5nIGxpY2Vuc2Uga2V5LiAke0l9YDtjb25zb2xlLmVycm9yKEkpLHRoaXMuaXNBcHBBY3RpdmF0ZWQubmV4dCghMSksdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL2xpY2Vuc2luZy9r''@;'; put 'put ''ZXk/ZXJyb3I9aW52YWxpZCZkZXRhaWxzPSR7YnRvYShaKX1gKX0pO2Vsc2V7dGhpcy5kZW1vTGltaXRzPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxqVSksYm9lKTtjb25zdCBJPXtkZW1vOiEwLGhvdF9saWNlbnNlX2tleTpudWxsPT09KHk9dGhpcy5hcHBTdG9yZVNlcnZpY2Uu''@;'; put 'put ''Z2V0RGNBZGFwdGVyU2V0dGluZ3MoKSl8fHZvaWQgMD09PXk/dm9pZCAwOnkuaG90TGljZW5jZUtleSx1c2Vyc19hbGxvd2VkOnRoaXMuZGVtb0xpbWl0cy51c2Vyc19hbGxvd2VkfHwxLHZhbGlkX3VudGlsOiIiLHNpdGVfaWQ6IiIsc2l0ZV9pZF9tdWx0aXBsZTpbXX07dGhpcy5hcHBsaWNh''@;'; put 'put ''dGlvbkFjdGl2YXRpb24oSSxDLHYpfX0pfWFwcGxpY2F0aW9uQWN0aXZhdGlvbihoLHYseSl7aWYoaC5zaXRlX2lkX211bHRpcGxlP3RoaXMuc2FzU2VydmljZS5zZXRMaWNlbnNlU2l0ZUlkKGguc2l0ZV9pZF9tdWx0aXBsZSk6aC5zaXRlX2lkJiZ0aGlzLnNhc1NlcnZpY2Uuc2V0TGljZW5z''@;'; put 'put ''ZVNpdGVJZChoLnNpdGVfaWQpLCFoLmRlbW8pe2xldCB1ZT0hMSxfZT0hMTtpZigoIWguc2l0ZV9pZHx8aC5zaXRlX2lkIT09eSkmJih1ZT0hMCksKCFoLnNpdGVfaWRfbXVsdGlwbGV8fCFoLnNpdGVfaWRfbXVsdGlwbGUuaW5jbHVkZXMoeSkpJiYoX2U9ITApLHVlJiZfZSlyZXR1cm4gY29u''@;'; put 'put ''c29sZS5lcnJvcigiVGhlIGtleSBwcm92aWRlZCBpcyBmb3IgZGlmZmVyZW50IG9yZ2FuaXphdGlvbi4iKSx0aGlzLmlzQXBwQWN0aXZhdGVkLm5leHQoITEpLHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2xpY2Vuc2luZy9rZXk/ZXJyb3I9bWlzc21hdGNoIil9dGhpcy5ob3Rf''@;'; put 'put ''bGljZW5zZV9rZXkubmV4dCh2b2lkIDAhPT1oLmhvdF9saWNlbnNlX2tleT9oLmhvdF9saWNlbnNlX2tleTp0aGlzLmhvdF9saWNlbnNlX2tleS52YWx1ZSk7bGV0IEM9VGwoaC52YWxpZF91bnRpbCwiWVlZWS1NTS1ERCIpLEk9VGwoKSxaPUMuZGlmZihJLCJkYXlzIik7cmV0dXJuIGguZGVt''@;'; put 'put ''byYmKE9iamVjdC5rZXlzKHRoaXMuZGVtb0xpbWl0cykubGVuZ3RoPDEmJih0aGlzLmRlbW9MaW1pdHM9alUpLCEwPT09dGhpcy5kZW1vTGltaXRzLmV4cGlyYXRpb25fZGF0ZV91bmxpbWl0ZWQmJihaPTEvMCksdm9pZCAwIT09dGhpcy5kZW1vTGltaXRzLnVzZXJzX2FsbG93ZWQmJihoLnVz''@;'; put 'put ''ZXJzX2FsbG93ZWQ9dGhpcy5kZW1vTGltaXRzLnVzZXJzX2FsbG93ZWQ+LTE/dGhpcy5kZW1vTGltaXRzLnVzZXJzX2FsbG93ZWQ6aC51c2Vyc19hbGxvd2VkKSksdGhpcy5saWNlbnNlS2V5RGF0YT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKGgpLHdpbmRvdy5hcHBpbmZvKCksWjw9''@;'; put 'put ''MD8oY29uc29sZS5lcnJvcigiTGljZW5zZSBrZXkgaGFzIGV4cGlyZWQiKSx0aGlzLmlzQXBwQWN0aXZhdGVkLm5leHQoITEpLHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2xpY2Vuc2luZy9rZXk/ZXJyb3I9ZXhwaXJlZCIpKTood2luZG93LmxpY2Vuc2VFeHBpcmVzSW49Wix0''@;'; put 'put ''aGlzLmxpY2Vuc2VFeHBpcmVzSW5EYXlzLm5leHQoWiksdGhpcy5pc0FwcERlbW8ubmV4dCghIWguZGVtbyksdi5SRUdJU1RFUkNPVU5UPmgudXNlcnNfYWxsb3dlZD8oY29uc29sZS53YXJuKCJBcHAgaGFzIG1vcmUgdXNlcnMgcmVnaXN0ZXJlZCB0aGVuIGxpY2Vuc2VkLiIpLHRoaXMuaXNB''@;'; put 'put ''cHBPdmVyQ2FwYWNpdHkubmV4dCghMCkpOnYuUkVHSVNURVJDT1VOVD09PWgudXNlcnNfYWxsb3dlZCYmY29uc29sZS53YXJuKCJBcHAgaGFzIGhpdCBsaW1pdCBvZiB1c2VycyByZWdpc3RlcmVkLiIpLDEhPT12LklTUkVHSVNURVJFRD92LlJFR0lTVEVSQ09VTlQ8aC51c2Vyc19hbGxvd2Vk''@;'; put 'put ''Pyhjb25zb2xlLmxvZygiVXNlciBjYW4gcmVnaXN0ZXIiKSx0aGlzLmN1cnJlbnRVc2VyQ2FuUmVnaXN0ZXIubmV4dCghMCksdGhpcy5pc0FwcEFjdGl2YXRlZC5uZXh0KCExKSx2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9saWNlbnNpbmcvcmVnaXN0ZXIiKSk6KHRoaXMuY3Vy''@;'; put 'put ''cmVudFVzZXJDYW5SZWdpc3Rlci5uZXh0KCExKSx0aGlzLmlzQXBwQWN0aXZhdGVkLm5leHQoITEpLHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2xpY2Vuc2luZy9saW1pdCIpKTp2b2lkIHRoaXMuaXNBcHBBY3RpdmF0ZWQubmV4dCghMCkpfWRlY3J5cHRMaWNlbnNlS2V5KGgs''@;'; put 'put ''dil7cmV0dXJuIG5ldyBQcm9taXNlKCh5LEMpPT5ubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7aWYoIXdpbmRvdy5jcnlwdG98fCF3aW5kb3cuY3J5cHRvLnN1YnRsZSl0cnl7bGV0IEJlPWF0b2IoaC5zcGxpdCgiIikucmV2ZXJzZSgpLmpvaW4oIiIpKTt5KEpTT04ucGFyc2Uo''@;'; put 'put ''QmUpKX1jYXRjaChCZSl7QygiRXJyb3IgcGFyc2luZyBodHRwIGxpY2Vuc2Uga2V5IGRhdGEuICIrQmUpfWxldCBaLEk9eWllbGQgdGhpcy5iYXNlNjRUb0FycmF5QnVmZmVyKGgpLmNhdGNoKEJlPT57QyhCZSl9KTtjb25zdCB1ZT15aWVsZCB0aGlzLmJhc2U2NFRvQXJyYXlCdWZmZXIodiku''@;'; put 'put ''Y2F0Y2goQmU9PntDKEJlKX0pO2lmKCF1ZSlyZXR1cm4gdm9pZCBDKCJNaXNzaW5nIGFjdGl2YXRpb24ga2V5Iik7bGV0IF9lO1o9dWU7dHJ5e19lPXlpZWxkIHdpbmRvdy5jcnlwdG8uc3VidGxlLmltcG9ydEtleSgicGtjczgiLFose25hbWU6IlJTQS1PQUVQIixoYXNoOiJTSEEtMjU2In0s''@;'; put 'put ''ITAsWyJkZWNyeXB0Il0pfWNhdGNoKEJlKXtDKCJVbmFibGUgdG8gaW1wb3J0IGRlY3J5cHRpb24ga2V5OiAiK0JlKX1pZihfZSlpZihJKXRyeXt3aW5kb3cuY3J5cHRvLnN1YnRsZS5kZWNyeXB0KHtuYW1lOiJSU0EtT0FFUCIsaGFzaDp7bmFtZToiU0hBLTI1NiJ9fSxfZSxJKS50aGVuKEJl''@;'; put 'put ''PT57bGV0IE5lPShuZXcgd29lLlRleHREZWNvZGVyKS5kZWNvZGUoQmUpO3RyeXt5KEpTT04ucGFyc2UoTmUpKX1jYXRjaChLZSl7QygiRXJyb3IgcGFyc2luZyBsaWNlbnNlIGtleSBkYXRhLiAiK0tlKX19LEJlPT57QyhCZSl9KX1jYXRjaChCZSl7QyhCZSl9ZWxzZSBDKCJMaWNlbnNlIGtl''@;'; put 'put ''eSBieXRlcyBtaXNzaW5nIik7ZWxzZSBDKCJVbmFibGUgdG8gaW1wb3J0IGRlY3J5cHRpb24ga2V5Iil9KSl9YmFzZTY0VG9BcnJheUJ1ZmZlcihoKXtyZXR1cm4gbmV3IFByb21pc2UoKHYseSk9Pm5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt2KFZVLkooaCkpfSkpfWFycmF5''@;'; put 'put ''QnVmZmVyVG9CYXNlNjQoaCl7cmV0dXJuIG5ldyBQcm9taXNlKCh2LHkpPT57dihWVS5jKGgpKX0pfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShzayksQ2kobXUpLENpKGcyKSxDaShzYyksQ2koWGMpLENpKFpsKSl9LGQuXHUwMjc1cHJvdj1B''@;'; put 'put ''aSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y2xhc3MgTEp7Y29uc3RydWN0b3IoZyxoKXt0aGlzLmZuPWcsdGhpcy5zdWJzY3JpcHRpb25zPWh9dW5zdWJzY3JpYmUoKXtjb25zdCBnPXRoaXMuc3Vic2NyaXB0aW9ucy5pbmRleE9mKHRoaXMpOy0xIT09ZyYmdGhpcy5z''@;'; put 'put ''dWJzY3JpcHRpb25zLnNwbGljZShnLDEpfX1mdW5jdGlvbiBsZyhkKXtyZXR1cm4gbnVsbCE9ZCYmIm9iamVjdCI9PXR5cGVvZiBkJiYhMD09PWRbIkBAZnVuY3Rpb25hbC9wbGFjZWhvbGRlciJdfWZ1bmN0aW9uIGk0KGQpe3JldHVybiBmdW5jdGlvbiBnKGgpe3JldHVybiAwPT09YXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aHx8bGcoaCk/ZzpkLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gcHAoZCl7cmV0dXJuIGZ1bmN0aW9uIGcoaCx2KXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBnO2Nhc2UgMTpyZXR1cm4gbGcoaCk/ZzppNChmdW5jdGlvbih5KXtyZXR1''@;'; put 'put ''cm4gZChoLHkpfSk7ZGVmYXVsdDpyZXR1cm4gbGcoaCkmJmxnKHYpP2c6bGcoaCk/aTQoZnVuY3Rpb24oeSl7cmV0dXJuIGQoeSx2KX0pOmxnKHYpP2k0KGZ1bmN0aW9uKHkpe3JldHVybiBkKGgseSl9KTpkKGgsdil9fX1jb25zdCBiRD1wcChmdW5jdGlvbihnLGgpe3JldHVybiBoIGluc3Rh''@;'; put 'put ''bmNlb2YgZ3x8bnVsbCE9aCYmKGguY29uc3RydWN0b3I9PT1nfHwiT2JqZWN0Ij09PWcubmFtZSYmIm9iamVjdCI9PXR5cGVvZiBoKX0pO2Z1bmN0aW9uIF9EKGQsZyl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChnLGQpfXZhciBPSj1PYmplY3QucHJvdG90''@;'; put 'put ''eXBlLnRvU3RyaW5nO2NvbnN0IHpOPWZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgQXJndW1lbnRzXSI9PT1PSi5jYWxsKGFyZ3VtZW50cyk/ZnVuY3Rpb24oZyl7cmV0dXJuIltvYmplY3QgQXJndW1lbnRzXSI9PT1PSi5jYWxsKGcpfTpmdW5jdGlvbihnKXtyZXR1cm4gX0QoImNhbGxlZSIs''@;'; put 'put ''Zyl9fSgpLEdOPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGcpe3JldHVybiBudWxsIT1nJiZnLmxlbmd0aD49MCYmIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChnKX07ZnVuY3Rpb24gQ0QoZCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmpl''@;'; put 'put ''Y3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCl9dmFyIHVnPWk0KGZ1bmN0aW9uKGcpe3JldHVybiBudWxsIT1nJiYiZnVuY3Rpb24iPT10eXBlb2YgZ1siZmFudGFzeS1sYW5kL2VtcHR5Il0/Z1siZmFudGFzeS1sYW5kL2VtcHR5Il0oKTpudWxsIT1nJiZudWxsIT1nLmNvbnN0cnVjdG9y''@;'; put 'put ''JiYiZnVuY3Rpb24iPT10eXBlb2YgZy5jb25zdHJ1Y3RvclsiZmFudGFzeS1sYW5kL2VtcHR5Il0/Zy5jb25zdHJ1Y3RvclsiZmFudGFzeS1sYW5kL2VtcHR5Il0oKTpudWxsIT1nJiYiZnVuY3Rpb24iPT10eXBlb2YgZy5lbXB0eT9nLmVtcHR5KCk6bnVsbCE9ZyYmbnVsbCE9Zy5jb25zdHJ1''@;'; put 'put ''Y3RvciYmImZ1bmN0aW9uIj09dHlwZW9mIGcuY29uc3RydWN0b3IuZW1wdHk/Zy5jb25zdHJ1Y3Rvci5lbXB0eSgpOkdOKGcpP1tdOkNEKGcpPyIiOmZ1bmN0aW9uIFJKKGQpe3JldHVybiJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpfShnKT97''@;'; put 'put ''fTp6TihnKT9mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCk6ZnVuY3Rpb24gc2coZCl7dmFyIGc9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpO3JldHVybiJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSI9PT1nfHwiW29iamVjdCBJbnQ4QXJyYXldIj09PWd8fCJbb2Jq''@;'; put 'put ''ZWN0IFVpbnQ4QXJyYXldIj09PWd8fCJbb2JqZWN0IEludDE2QXJyYXldIj09PWd8fCJbb2JqZWN0IFVpbnQxNkFycmF5XSI9PT1nfHwiW29iamVjdCBJbnQzMkFycmF5XSI9PT1nfHwiW29iamVjdCBVaW50MzJBcnJheV0iPT09Z3x8IltvYmplY3QgRmxvYXQzMkFycmF5XSI9PT1nfHwiW29i''@;'; put 'put ''amVjdCBGbG9hdDY0QXJyYXldIj09PWd8fCJbb2JqZWN0IEJpZ0ludDY0QXJyYXldIj09PWd8fCJbb2JqZWN0IEJpZ1VpbnQ2NEFycmF5XSI9PT1nfShnKT9nLmNvbnN0cnVjdG9yLmZyb20oIiIpOnZvaWQgMH0pO2NvbnN0IEJKPXVnO2Z1bmN0aW9uIENrKGQpe2Zvcih2YXIgaCxnPVtdOyEo''@;'; put 'put ''aD1kLm5leHQoKSkuZG9uZTspZy5wdXNoKGgudmFsdWUpO3JldHVybiBnfWZ1bmN0aW9uIFdOKGQsZyxoKXtmb3IodmFyIHY9MCx5PWgubGVuZ3RoO3Y8eTspe2lmKGQoZyxoW3ZdKSlyZXR1cm4hMDt2Kz0xfXJldHVybiExfWNvbnN0IFlOPSJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuaXM/''@;'; put 'put ''T2JqZWN0LmlzOmZ1bmN0aW9uIFBKKGQsZyl7cmV0dXJuIGQ9PT1nPzAhPT1kfHwxL2Q9PTEvZzpkIT1kJiZnIT1nfTt2YXIga0Q9IXt0b1N0cmluZzpudWxsfS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgidG9TdHJpbmciKSxGSj1bImNvbnN0cnVjdG9yIiwidmFsdWVPZiIsImlzUHJvdG90eXBl''@;'; put 'put ''T2YiLCJ0b1N0cmluZyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiaGFzT3duUHJvcGVydHkiLCJ0b0xvY2FsZVN0cmluZyJdLEhKPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5wcm9wZXJ0eUlzRW51bWVyYWJsZSgibGVuZ3RoIil9KCksU0Q9ZnVuY3Rpb24oZyxoKXtmb3IodmFyIHY9''@;'; put 'put ''MDt2PGcubGVuZ3RoOyl7aWYoZ1t2XT09PWgpcmV0dXJuITA7dis9MX1yZXR1cm4hMX07Y29uc3QgUU49aTQoImZ1bmN0aW9uIiE9dHlwZW9mIE9iamVjdC5rZXlzfHxISj9mdW5jdGlvbihnKXtpZihPYmplY3QoZykhPT1nKXJldHVybltdO3ZhciBoLHYseT1bXSxDPUhKJiZ6TihnKTtmb3Io''@;'; put 'put ''aCBpbiBnKV9EKGgsZykmJighQ3x8Imxlbmd0aCIhPT1oKSYmKHlbeS5sZW5ndGhdPWgpO2lmKGtEKWZvcih2PUZKLmxlbmd0aC0xO3Y+PTA7KV9EKGg9Rkpbdl0sZykmJiFTRCh5LGgpJiYoeVt5Lmxlbmd0aF09aCksdi09MTtyZXR1cm4geX06ZnVuY3Rpb24oZyl7cmV0dXJuIE9iamVjdChn''@;'; put 'put ''KSE9PWc/W106T2JqZWN0LmtleXMoZyl9KSxWSj1pNChmdW5jdGlvbihnKXtyZXR1cm4gbnVsbD09PWc/Ik51bGwiOnZvaWQgMD09PWc/IlVuZGVmaW5lZCI6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGcpLnNsaWNlKDgsLTEpfSk7ZnVuY3Rpb24gSk4oZCxnLGgsdil7dmFyIHk9''@;'; put 'put ''Q2soZCk7ZnVuY3Rpb24gSShaLHVlKXtyZXR1cm4gWE4oWix1ZSxoLnNsaWNlKCksdi5zbGljZSgpKX1yZXR1cm4hV04oZnVuY3Rpb24oWix1ZSl7cmV0dXJuIVdOKEksdWUsWil9LENrKGcpLHkpfWZ1bmN0aW9uIFhOKGQsZyxoLHYpe2lmKFlOKGQsZykpcmV0dXJuITA7dmFyIHk9VkooZCk7''@;'; put 'put ''aWYoeSE9PVZKKGcpKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBkWyJmYW50YXN5LWxhbmQvZXF1YWxzIl18fCJmdW5jdGlvbiI9PXR5cGVvZiBnWyJmYW50YXN5LWxhbmQvZXF1YWxzIl0pcmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGRbImZhbnRhc3ktbGFuZC9lcXVhbHMiXSYm''@;'; put 'put ''ZFsiZmFudGFzeS1sYW5kL2VxdWFscyJdKGcpJiYiZnVuY3Rpb24iPT10eXBlb2YgZ1siZmFudGFzeS1sYW5kL2VxdWFscyJdJiZnWyJmYW50YXN5LWxhbmQvZXF1YWxzIl0oZCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGQuZXF1YWxzfHwiZnVuY3Rpb24iPT10eXBlb2YgZy5lcXVhbHMpcmV0''@;'; put 'put ''dXJuImZ1bmN0aW9uIj09dHlwZW9mIGQuZXF1YWxzJiZkLmVxdWFscyhnKSYmImZ1bmN0aW9uIj09dHlwZW9mIGcuZXF1YWxzJiZnLmVxdWFscyhkKTtzd2l0Y2goeSl7Y2FzZSJBcmd1bWVudHMiOmNhc2UiQXJyYXkiOmNhc2UiT2JqZWN0IjppZigiZnVuY3Rpb24iPT10eXBlb2YgZC5jb25z''@;'; put 'put ''dHJ1Y3RvciYmIlByb21pc2UiPT09ZnVuY3Rpb24gYXNlKGQpe3ZhciBnPVN0cmluZyhkKS5tYXRjaCgvXmZ1bmN0aW9uIChcdyopLyk7cmV0dXJuIG51bGw9PWc/IiI6Z1sxXX0oZC5jb25zdHJ1Y3RvcikpcmV0dXJuIGQ9PT1nO2JyZWFrO2Nhc2UiQm9vbGVhbiI6Y2FzZSJOdW1iZXIiOmNh''@;'; put 'put ''c2UiU3RyaW5nIjppZih0eXBlb2YgZCE9dHlwZW9mIGd8fCFZTihkLnZhbHVlT2YoKSxnLnZhbHVlT2YoKSkpcmV0dXJuITE7YnJlYWs7Y2FzZSJEYXRlIjppZighWU4oZC52YWx1ZU9mKCksZy52YWx1ZU9mKCkpKXJldHVybiExO2JyZWFrO2Nhc2UiRXJyb3IiOnJldHVybiBkLm5hbWU9PT1n''@;'; put 'put ''Lm5hbWUmJmQubWVzc2FnZT09PWcubWVzc2FnZTtjYXNlIlJlZ0V4cCI6aWYoZC5zb3VyY2UhPT1nLnNvdXJjZXx8ZC5nbG9iYWwhPT1nLmdsb2JhbHx8ZC5pZ25vcmVDYXNlIT09Zy5pZ25vcmVDYXNlfHxkLm11bHRpbGluZSE9PWcubXVsdGlsaW5lfHxkLnN0aWNreSE9PWcuc3RpY2t5fHxk''@;'; put 'put ''LnVuaWNvZGUhPT1nLnVuaWNvZGUpcmV0dXJuITF9Zm9yKHZhciBDPWgubGVuZ3RoLTE7Qz49MDspe2lmKGhbQ109PT1kKXJldHVybiB2W0NdPT09ZztDLT0xfXN3aXRjaCh5KXtjYXNlIk1hcCI6cmV0dXJuIGQuc2l6ZT09PWcuc2l6ZSYmSk4oZC5lbnRyaWVzKCksZy5lbnRyaWVzKCksaC5j''@;'; put 'put ''b25jYXQoW2RdKSx2LmNvbmNhdChbZ10pKTtjYXNlIlNldCI6cmV0dXJuIGQuc2l6ZT09PWcuc2l6ZSYmSk4oZC52YWx1ZXMoKSxnLnZhbHVlcygpLGguY29uY2F0KFtkXSksdi5jb25jYXQoW2ddKSk7Y2FzZSJBcmd1bWVudHMiOmNhc2UiQXJyYXkiOmNhc2UiT2JqZWN0IjpjYXNlIkJvb2xl''@;'; put 'put ''YW4iOmNhc2UiTnVtYmVyIjpjYXNlIlN0cmluZyI6Y2FzZSJEYXRlIjpjYXNlIkVycm9yIjpjYXNlIlJlZ0V4cCI6Y2FzZSJJbnQ4QXJyYXkiOmNhc2UiVWludDhBcnJheSI6Y2FzZSJVaW50OENsYW1wZWRBcnJheSI6Y2FzZSJJbnQxNkFycmF5IjpjYXNlIlVpbnQxNkFycmF5IjpjYXNlIklu''@;'; put 'put ''dDMyQXJyYXkiOmNhc2UiVWludDMyQXJyYXkiOmNhc2UiRmxvYXQzMkFycmF5IjpjYXNlIkZsb2F0NjRBcnJheSI6Y2FzZSJBcnJheUJ1ZmZlciI6YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX12YXIgST1RTihkKTtpZihJLmxlbmd0aCE9PVFOKGcpLmxlbmd0aClyZXR1cm4hMTt2YXIgWj1oLmNv''@;'; put 'put ''bmNhdChbZF0pLHVlPXYuY29uY2F0KFtnXSk7Zm9yKEM9SS5sZW5ndGgtMTtDPj0wOyl7dmFyIF9lPUlbQ107aWYoIV9EKF9lLGcpfHwhWE4oZ1tfZV0sZFtfZV0sWix1ZSkpcmV0dXJuITE7Qy09MX1yZXR1cm4hMH1jb25zdCBLNj1wcChmdW5jdGlvbihnLGgpe3JldHVybiBYTihnLGgsW10s''@;'; put 'put ''W10pfSksS049aTQoZnVuY3Rpb24oZyl7cmV0dXJuIG51bGwhPWcmJks2KGcsQkooZykpfSk7ZnVuY3Rpb24gSXkoZCl7cmV0dXJuIG51bGw9PWR9ZnVuY3Rpb24gJDYoZCl7cmV0dXJuIEl5KGQpfHxLTihkKX1mdW5jdGlvbiBrayhkKXtyZXR1cm4gYkQoU3RyaW5nLGQpfWZ1bmN0aW9uIEVE''@;'; put 'put ''KGQpe3JldHVybiBiRChPYmplY3QsZCl9ZnVuY3Rpb24gbHNlKGQpe3JldHVybiBiRChNYXAsZCl9ZnVuY3Rpb24gR0ooZCxnKXtyZXR1cm4gZCE9PWd9ZnVuY3Rpb24gVUooZCxnKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoZCk9PT1KU09OLnN0cmluZ2lmeShnKX1mdW5jdGlvbiBxTihkKXtj''@;'; put 'put ''b25zdCBnPW5ldyBNYXA7Zm9yKGNvbnN0W2gsdl1vZiBkKWxzZSh2KT9nLnNldChoLHFOKHYpKTpnLnNldChoLHYpO3JldHVybiBnfWZ1bmN0aW9uIHVzZShkKXtzd2l0Y2goITApe2Nhc2UgbHNlKGQpOnJldHVybiBxTihkKTtjYXNlIEVEKGQpJiYhQXJyYXkuaXNBcnJheShkKTpyZXR1cm4g''@;'; put 'put ''UDcoe30sZCk7ZGVmYXVsdDpyZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkKSl9fWZ1bmN0aW9uIFA3KC4uLmQpe2NvbnN0IGc9e307cmV0dXJuIGQubWFwKGg9PkVEKGgpP21zKHt9LGgpOnt9KS5mb3JFYWNoKGg9PntPYmplY3Qua2V5cyhoKS5mb3JFYWNoKHY9Pntjb25zdCB5''@;'; put 'put ''PWhbdl07Z1t2XT1BcnJheS5pc0FycmF5KHkpP0FycmF5LmZyb20oeSk6RUQoeSk/UDcoZ1t2XXx8e30seSk6eX0pfSksZ31mdW5jdGlvbiBKSihkPXdpbmRvdyl7cmV0dXJuIUl5KGQpfWxldCB4RCxkc2UsblYsclY7ZnVuY3Rpb24gaVYoZD0hMCl7aWYoIWR8fCF4RCl7Y29uc3QgZz1kb2N1''@;'; put 'put ''bWVudCYmZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiW25nLXZlcnNpb25dIik7eEQ9Zz8iIitnLmdldEF0dHJpYnV0ZSgibmctdmVyc2lvbiIpOnZvaWQgMH1yZXR1cm4geER9ZnVuY3Rpb24gcHNlKGQ9ITApe3ZhciBnLGg7cmV0dXJuIGQmJnhEfHwoZHNlPW51bGw9PShoPW51bGw9PShnPW51''@;'; put 'put ''bGw9PXdpbmRvdz92b2lkIDA6d2luZG93LmFuZ3VsYXIpP3ZvaWQgMDpnLnZlcnNpb24pP3ZvaWQgMDpoLmZ1bGwpLGRzZX1mdW5jdGlvbiBvVihkPSEwKXt2YXIgZyxoO3JldHVybiBkJiZuVnx8KG5WPW51bGwhPShoPW51bGw9PShnPW51bGw9PXdpbmRvdz92b2lkIDA6d2luZG93LkNEUyk/''@;'; put 'put ''dm9pZCAwOmcuX3JlYWN0KSYmaC52ZXJzaW9uP3dpbmRvdy5DRFMuX3JlYWN0LnZlcnNpb246ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiW2RhdGEtcmVhY3Ryb290XSwgW2RhdGEtcmVhY3RpZF0iKT8idW5rbm93biB2ZXJzaW9uIjp2b2lkIDApLG5WfWZ1bmN0aW9uIFhKKGQ9ITApe2lmKCFk''@;'; put 'put ''fHwhclYpe2NvbnN0IGc9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiKiIpO2xldCBoO2ZvcihsZXQgdj0wO3Y8Zy5sZW5ndGg7disrKWlmKGdbdl0uX192dWVfXyl7aD1nW3ZdO2JyZWFrfXJWPWg/InVua25vd24gdmVyc2lvbiI6dm9pZCAwfXJldHVybiByVn1mdW5jdGlvbiBGNyhkKXty''@;'; put 'put ''ZXR1cm4gZC5yZXBsYWNlKC9bQS1aXS9nLGc9PiItIitnLnRvTG93ZXJDYXNlKCkpfWZ1bmN0aW9uIGVYKGQpe3JldHVybiBkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Quc2xpY2UoMSl9Y29uc3QgYnNlPW5ldyBjbGFzc3tjb25zdHJ1Y3Rvcigpe2lmKHRoaXMuc3VwcG9ydHM9e2pzOiEw''@;'; put 'put ''fSwhZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUoImNkcy1zdXBwb3J0cyIpfHwibm8tanMiPT09ZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoImNkcy1zdXBwb3J0cyIpKXtjb25zdCBkPUY3KE9iamVjdC5rZXlzKHRoaXMuc3VwcG9ydHMpLnJlZHVjZSgoZyxoKT0+YCR7Z30gJHt0aGlz''@;'; put 'put ''LnN1cHBvcnRzW2hdP2g6Im5vLSIraH1gLCIiKSkudHJpbSgpO2RvY3VtZW50LmJvZHkuc2V0QXR0cmlidXRlKCJjZHMtc3VwcG9ydHMiLGQpfX19O2Z1bmN0aW9uIEg3KGQsZyl7c3dpdGNoKGQpe2Nhc2UgMDpyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZy5hcHBseSh0aGlzLGFyZ3VtZW50''@;'; put 'put ''cyl9O2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuIGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKGgsdil7cmV0dXJuIGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKGgsdix5KXtyZXR1cm4gZy5hcHBs''@;'; put 'put ''eSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgNDpyZXR1cm4gZnVuY3Rpb24oaCx2LHksQyl7cmV0dXJuIGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDU6cmV0dXJuIGZ1bmN0aW9uKGgsdix5LEMsSSl7cmV0dXJuIGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDY6cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uKGgsdix5LEMsSSxaKXtyZXR1cm4gZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgNzpyZXR1cm4gZnVuY3Rpb24oaCx2LHksQyxJLFosdWUpe3JldHVybiBnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA4OnJldHVybiBmdW5jdGlvbihoLHYseSxDLEksWix1ZSxfZSl7''@;'; put 'put ''cmV0dXJuIGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDk6cmV0dXJuIGZ1bmN0aW9uKGgsdix5LEMsSSxaLHVlLF9lLEJlKXtyZXR1cm4gZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgMTA6cmV0dXJuIGZ1bmN0aW9uKGgsdix5LEMsSSxaLHVlLF9lLEJlLE5lKXtyZXR1cm4g''@;'; put 'put ''Zy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJGaXJzdCBhcmd1bWVudCB0byBfYXJpdHkgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIG5vIGdyZWF0ZXIgdGhhbiB0ZW4iKX19ZnVuY3Rpb24gb1goZCxnLGgpe3JldHVybiBmdW5jdGlvbigp''@;'; put 'put ''e2Zvcih2YXIgdj1bXSx5PTAsQz1kLEk9MDtJPGcubGVuZ3RofHx5PGFyZ3VtZW50cy5sZW5ndGg7KXt2YXIgWjtJPGcubGVuZ3RoJiYoIWxnKGdbSV0pfHx5Pj1hcmd1bWVudHMubGVuZ3RoKT9aPWdbSV06KFo9YXJndW1lbnRzW3ldLHkrPTEpLHZbSV09WixsZyhaKXx8KEMtPTEpLEkrPTF9''@;'; put 'put ''cmV0dXJuIEM8PTA/aC5hcHBseSh0aGlzLHYpOkg3KEMsb1goZCx2LGgpKX19Y29uc3QgYVg9cHAoZnVuY3Rpb24oZyxoKXtyZXR1cm4gMT09PWc/aTQoaCk6SDcoZyxvWChnLFtdLGgpKX0pLGxYPU51bWJlci5pc0ludGVnZXJ8fGZ1bmN0aW9uKGcpe3JldHVybiBnPDwwPT09Z30sa3NlPXBw''@;'; put 'put ''KGZ1bmN0aW9uKGcsaCl7dmFyIHY9ZzwwP2gubGVuZ3RoK2c6ZztyZXR1cm4gQ0QoaCk/aC5jaGFyQXQodik6aFt2XX0pLE1zZT1wcChmdW5jdGlvbihnLGgpe3JldHVybiBnLm1hcChmdW5jdGlvbih2KXtmb3IodmFyIEkseT1oLEM9MDtDPHYubGVuZ3RoOyl7aWYobnVsbD09eSlyZXR1cm47''@;'; put 'put ''eT1sWChJPXZbQ10pP2tzZShJLHkpOnlbSV0sQys9MX1yZXR1cm4geX0pfSkseHNlPXBwKGZ1bmN0aW9uKGcsaCl7cmV0dXJuIE1zZShbZ10saClbMF19KSxUc2U9YVgoMiwoZCxnKT0+dm9pZCAwIT09eHNlKGQsZykpLFREPVRzZSh7IkBAZnVuY3Rpb25hbC9wbGFjZWhvbGRlciI6ITB9LHdp''@;'; put 'put ''bmRvdyk7Y2xhc3MgTjd7c3RhdGljIGxvZyguLi5nKXt1VigpJiZzVigpJiZjb25zb2xlLmxvZyguLi5nKX1zdGF0aWMgd2FybiguLi5nKXt1VigpJiZzVigpJiZjb25zb2xlLndhcm4oLi4uZyl9c3RhdGljIGVycm9yKC4uLmcpe3VWKCkmJnNWKCkmJmNvbnNvbGUuZXJyb3IoLi4uZyl9fWZ1''@;'; put 'put ''bmN0aW9uIHNWKCl7cmV0dXJuIVREKFsiamFzbWluZSJdKX1mdW5jdGlvbiB1Vigpe3JldHVybiF3aW5kb3cuQ0RTLmVudmlyb25tZW50LnByb2R1Y3Rpb259ZnVuY3Rpb24gY1YoKXtKSigpJiYod2luZG93LkNEUz13aW5kb3cuQ0RTfHx7X3ZlcnNpb246W10sX3JlYWN0Ont2ZXJzaW9uOnZv''@;'; put 'put ''aWQgMH0sX3N1cHBvcnRzOmJzZS5zdXBwb3J0cyxfaXNTdGF0ZVByb3hpZWQ6ITEsX3N0YXRlOntmb2N1c1RyYXBJdGVtczpbXSxsYXllckVsZW1lbnRzOltdLGkxOG5SZWdpc3RyeTp7fSxlbGVtZW50UmVnaXN0cnk6e30saWNvblJlZ2lzdHJ5Ont9LG1vdGlvblJlZ2lzdHJ5Ont9fSxlbnZp''@;'; put 'put ''cm9ubWVudDp7cHJvZHVjdGlvbjohMX0sZ2V0RGV0YWlsczp1WCxsb2dEZXRhaWxzOmNYfSxmdW5jdGlvbigpe3ZhciBnO2NvbnN0IGQ9IjYuMS4wIjt3aW5kb3cuQ0RTLl92ZXJzaW9uLmluZGV4T2YoZCk8MCYmKHdpbmRvdy5DRFMuX3ZlcnNpb24ucHVzaChkKSxudWxsPT0oZz1kb2N1bWVu''@;'; put 'put ''dC5xdWVyeVNlbGVjdG9yKCJib2R5IikpfHxnLnNldEF0dHJpYnV0ZSgiY2RzLXZlcnNpb24iLHdpbmRvdy5DRFMuX3ZlcnNpb24uam9pbigiICIpKSksd2luZG93LkNEUy5fdmVyc2lvbi5sZW5ndGg+MSYmTjcud2FybigiUnVubmluZyBtb3JlIHRoYW4gb25lIHZlcnNpb24gb2YgQ2xhcml0''@;'; put 'put ''eSBjYW4gY2F1c2UgdW5leHBlY3RlZCBpc3N1ZXMuIFBsZWFzZSBlbnN1cmUgb25seSBvbmUgdmVyc2lvbiBpcyBsb2FkZWQuIil9KCksd2luZG93LkNEUy5faXNTdGF0ZVByb3hpZWR8fCh3aW5kb3cuQ0RTLl9pc1N0YXRlUHJveGllZD0hMCx3aW5kb3cuQ0RTLl9zdGF0ZT1uZXcgUHJveHko''@;'; put 'put ''d2luZG93LkNEUy5fc3RhdGUse3NldDooZCxnLGgpPT57Y29uc3Qgdj17a2V5OmcscHJldjp3aW5kb3cuQ0RTLl9zdGF0ZVtnXSxjdXJyZW50Omh9O3JldHVybiBkW2ddPWgsZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIkNEU19TVEFURV9VUERBVEUiLHtkZXRhaWw6''@;'; put 'put ''dn0pKSwhMH19KSkpfWZ1bmN0aW9uIHVYKCl7cmV0dXJue3ZlcnNpb25zOndpbmRvdy5DRFMuX3ZlcnNpb24sZW52aXJvbm1lbnQ6d2luZG93LkNEUy5lbnZpcm9ubWVudCx1c2VyQWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudCxzdXBwb3J0czp3aW5kb3cuQ0RTLl9zdXBwb3J0cyxhbmd1bGFy''@;'; put 'put ''VmVyc2lvbjppVighMSksYW5ndWxhckpTVmVyc2lvbjpwc2UoITEpLHJlYWN0VmVyc2lvbjpvVighMSksdnVlVmVyc2lvbjpYSighMSksc3RhdGU6R3oobXMoe30sd2luZG93LkNEUy5fc3RhdGUpLHtpY29uUmVnaXN0cnk6T2JqZWN0LmtleXMod2luZG93LkNEUy5fc3RhdGUuaWNvblJlZ2lz''@;'; put 'put ''dHJ5KSxtb3Rpb25SZWdpc3RyeTpPYmplY3Qua2V5cyh3aW5kb3cuQ0RTLl9zdGF0ZS5tb3Rpb25SZWdpc3RyeSksZm9jdXNUcmFwUmVnaXN0cnk6T2JqZWN0LmtleXMod2luZG93LkNEUy5fc3RhdGUuZm9jdXNUcmFwSXRlbXMubWFwKGQ9PmQuZm9jdXNUcmFwSWQpKX0pfX1mdW5jdGlvbiBj''@;'; put 'put ''WCgpe043LmxvZyhKU09OLnN0cmluZ2lmeSh1WCgpLG51bGwsMikpfWNvbnN0IElEPW5ldyBjbGFzcyByc2V7Y29uc3RydWN0b3IoKXt0aGlzLnN1YnNjcmlwdGlvbnM9W119c3Vic2NyaWJlKGcpe2NvbnN0IGg9bmV3IExKKGcsdGhpcy5zdWJzY3JpcHRpb25zKTtyZXR1cm4gdGhpcy5zdWJz''@;'; put 'put ''Y3JpcHRpb25zLnB1c2goaCksaH1lbWl0KGcpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGg9PmguZm4oZykpfXRvRXZlbnRPYnNlcnZhYmxlKCl7cmV0dXJuIHRoaXN9fTtJRC5saXN0ZW5lcj1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJDRFNfU1RBVEVfVVBEQVRFIixkPT5JRC5l''@;'; put 'put ''bWl0KGQuZGV0YWlsKSk7Y2xhc3MgSjF7c3RhdGljIGdldCBzdGF0ZSgpe3JldHVybiBjVigpLHdpbmRvdy5DRFMuX3N0YXRlfXN0YXRpYyBnZXRWYWx1ZShnKXtyZXR1cm4gSjEuc3RhdGVbZ119c3RhdGljIHNldFZhbHVlKGcsaCl7SjEuc3RhdGVbZ109aH1zdGF0aWMgbG9nKCl7TjcubG9n''@;'; put 'put ''KEpTT04uc3RyaW5naWZ5KEoxLnN0YXRlLG51bGwsMikpfX1KMS5zdGF0ZVVwZGF0ZXM9SUQudG9FdmVudE9ic2VydmFibGUoKTtjb25zdCBEc2U9WyJ1bmtub3duIix7b3V0bGluZTonPGNpcmNsZSBjbGFzcz0iY2RzLWludGVybmFsLWRvdC0zIiBjeD0iMzEuMSIgY3k9IjE4IiByPSIyLjki''@;'; put 'put ''Lz48Y2lyY2xlIGNsYXNzPSJjZHMtaW50ZXJuYWwtZG90LTIiIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiLz48Y2lyY2xlIGNsYXNzPSJjZHMtaW50ZXJuYWwtZG90LTEiIGN4PSI0LjkiIGN5PSIxOCIgcj0iMi45Ii8+J31dO2NsYXNzIGhze3N0YXRpYyBnZXQgcmVnaXN0cnkoKXtyZXR1cm4g''@;'; put 'put ''bXMoe3Vua25vd246RHNlWzFdfSxKMS5zdGF0ZS5pY29uUmVnaXN0cnkpfXN0YXRpYyBhZGRJY29ucyguLi5nKXtKMS5zdGF0ZS5pY29uUmVnaXN0cnk9bXMobXMoe30sSjEuc3RhdGUuaWNvblJlZ2lzdHJ5KSxPYmplY3QuZnJvbUVudHJpZXMoZy5maWx0ZXIoKFtoXSk9PiFocy5yZWdpc3Ry''@;'; put 'put ''eVtoXSkpKX1zdGF0aWMgYWRkQWxpYXNlcyguLi5nKXtjb25zdCBoPWcuZmlsdGVyKChbdl0pPT5ocy5yZWdpc3RyeVt2XSkuZmxhdE1hcCgoW3YseV0pPT55Lm1hcChDPT5bQyxocy5yZWdpc3RyeVt2XV0pKTtKMS5zdGF0ZS5pY29uUmVnaXN0cnk9bXMobXMoe30sSjEuc3RhdGUuaWNvblJl''@;'; put 'put ''Z2lzdHJ5KSxPYmplY3QuZnJvbUVudHJpZXMoaCkpfXN0YXRpYyBnZXRJY29uTmFtZUZyb21TaGFwZShnKXtyZXR1cm4gZ1swXX19Y29uc3QgRHk9WyJhbmdsZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0yOS41MiwyMi41MiwxOCwxMC42LDYuNDgsMjIuNTJhMS43LDEuNywwLDAsMCwyLjQ1LDIu''@;'; put 'put ''MzZMMTgsMTUuNDlsOS4wOCw5LjM5YTEuNywxLjcsMCwwLDAsMi40NS0yLjM2WiIvPid9XSxLaD1bImV4Y2xhbWF0aW9uLWNpcmNsZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAs''@;'; put 'put ''MTAsMCwwLDEsMTgsMjhaIi8+PHBhdGggZD0iTTE4LDIwLjA3YTEuMywxLjMsMCwwLDEtMS4zLTEuM3YtNmExLjMsMS4zLDAsMSwxLDIuNiwwdjZBMS4zLDEuMywwLDAsMSwxOCwyMC4wN1oiLz48Y2lyY2xlIGN4PSIxNy45NSIgY3k9IjIzLjAyIiByPSIxLjUiLz4nLHNvbGlkOic8cGF0aCBk''@;'; put 'put ''PSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0tMS40OSw2YTEuNDksMS40OSwwLDAsMSwzLDB2Ni44OWExLjQ5LDEuNDksMCwxLDEtMywwWk0xOCwyNS41YTEuNzIsMS43MiwwLDEsMSwxLjcyLTEuNzJBMS43MiwxLjcyLDAsMCwxLDE4LDI1LjVaIi8+J31dLFRm''@;'; put 'put ''PVsiY2hlY2stY2lyY2xlIix7b3V0bGluZTonPHBhdGggZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptMCwyMkExMCwxMCwwLDEsMSwyOCwxOCwxMCwxMCwwLDAsMSwxOCwyOFoiLz48cGF0aCBkPSJNMTYuMzQsMjMuNzRsLTUtNWExLDEsMCwwLDEsMS40MS0x''@;'; put 'put ''LjQxbDMuNTksMy41OSw2Ljc4LTYuNzhhMSwxLDAsMCwxLDEuNDEsMS40MVoiLz4nLHNvbGlkOic8cGF0aCBkPSJNMzAsMThBMTIsMTIsMCwxLDEsMTgsNiwxMiwxMiwwLDAsMSwzMCwxOFptLTQuNzctMi4xNmExLjQsMS40LDAsMCwwLTItMmwtNi43Nyw2Ljc3TDEzLDE3LjE2YTEuNCwxLjQs''@;'; put 'put ''MCwwLDAtMiwybDUuNDUsNS40NVoiLz4nfV0sZlY9WyJlbGxpcHNpcy1ob3Jpem9udGFsIix7b3V0bGluZTonPGNpcmNsZSBjeD0iMzEuMSIgY3k9IjE4IiByPSIyLjkiLz48Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiLz48Y2lyY2xlIGN4PSI0LjkiIGN5PSIxOCIgcj0iMi45Ii8+''@;'; put 'put ''JyxvdXRsaW5lQmFkZ2VkOic8Y2lyY2xlIGN4PSIzMS4xIiBjeT0iMTgiIHI9IjIuOSIvPjxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIvPjxjaXJjbGUgY3g9IjQuOSIgY3k9IjE4IiByPSIyLjkiLz4nfV0sU2s9WyJ3aW5kb3ctY2xvc2UiLHtvdXRsaW5lOic8cGF0aCBkPSJNMTku''@;'; put 'put ''NDEsMThsNy4yOS03LjI5YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTgsMTYuNTksMTAuNzEsOS4yOWExLDEsMCwwLDAtMS40MSwxLjQxTDE2LjU5LDE4LDkuMjksMjUuMjlhMSwxLDAsMSwwLDEuNDEsMS40MUwxOCwxOS40MWw3LjI5LDcuMjlhMSwxLDAsMCwwLDEuNDEtMS40MVoiLz4nfV0sTHNl''@;'; put 'put ''PVsiZXZlbnQiLHtvdXRsaW5lOic8cGF0aCBkPSJNMTYuMTcsMjUuODYsMTAuODEsMjAuNWExLDEsMCwwLDEsMS40MS0xLjQxTDE2LjE3LDIzbDguNjQtOC42NGExLDEsMCwwLDEsMS40MSwxLjQxWiIvPjxwYXRoIGQ9Ik0zMi4yNSw2SDI5VjhoM1YzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4''@;'; put 'put ''LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2WiIvPjxwYXRoIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwx''@;'; put 'put ''MCwxMFoiLz48cGF0aCBkPSJNMjYsMTBhMSwxLDAsMCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAsMjYsMTBaIi8+PHJlY3QgeD0iMTMiIHk9IjYiIHdpZHRoPSIxMCIgaGVpZ2h0PSIyIi8+JyxvdXRsaW5lQWxlcnRlZDonPHBhdGggZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFW''@;'; put 'put ''M0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPjxwYXRoIGQ9Ik0xMC44MSwyMC41bDUuMzYsNS4zNkwyNi4yMiwxNS44MWExLDEsMCwwLDAsLjIzLS40MUgyMy44TDE2LjE3LDIzbC0zLjk0LTMuOTRhMSwxLDAsMCwwLTEuNDEsMS40MVoiLz48cG9seWdvbiBwb2ludHM9IjIx''@;'; put 'put ''LjI5IDYgMTMgNiAxMyA4IDIwLjE0IDggMjEuMjkgNiIvPjxwYXRoIGQ9Ik0zMy42OCwxNS40SDMyVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4WiIv''@;'; put 'put ''Picsb3V0bGluZUJhZGdlZDonPHBhdGggZD0iTTEwLjgxLDIwLjVsNS4zNiw1LjM2TDI2LjIyLDE1LjgxYTEsMSwwLDAsMC0xLjQxLTEuNDFMMTYuMTcsMjNsLTMuOTQtMy45NGExLDEsMCwwLDAtMS40MSwxLjQxWiIvPjxwYXRoIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCww''@;'; put 'put ''LDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz48cGF0aCBkPSJNMzIsMTMuMjJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwx''@;'; put 'put ''LDMyLDEzLjIyWiIvPjxwYXRoIGQ9Ik0yMi41LDZIMTNWOGg5Ljc4QTcuNDksNy40OSwwLDAsMSwyMi41LDZaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPjxwYXRoIGQ9Ik0yNiwxMGExLDEsMCww''@;'; put 'put ''LDAsMS0xVjNhMSwxLDAsMCwwLTIsMFY5QTEsMSwwLDAsMCwyNiwxMFoiLz48cGF0aCBkPSJNMzIuMjUsNmgtNFY5YTIuMiwyLjIsMCwwLDEtNC40LDBWNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCww''@;'; put 'put ''LDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNlpNMjUuOTQsMTYuNThsLTkuNjcsOS42N0wxMSwyMC45NEExLjM2LDEuMzYsMCwwLDEsMTIuOSwxOWwzLjM4LDMuMzhMMjQsMTQuNjZhMS4zNiwxLjM2LDAsMSwxLDEuOTMs''@;'; put 'put ''MS45M1oiLz4nLHNvbGlkQWxlcnRlZDonPHBhdGggZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPjxwYXRoIGQ9Ik0zMy42OCwxNS40SDI2LjNhMS4zNCwxLjM0LDAsMCwxLS4zNiwxLjE4bC05LjY3LDkuNjdMMTEsMjAuOTRBMS4z''@;'; put 'put ''NiwxLjM2LDAsMCwxLDEyLjksMTlsMy4zOCwzLjM4LDctN2gtMUEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgs''@;'; put 'put ''MS43OCwwLDAsMCwzNCwzMC4xOVYxNS4zOFoiLz4nLHNvbGlkQmFkZ2VkOic8cGF0aCBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+PHBhdGggZD0iTTMwLDEzLjVBNy41LDcuNSwwLDAsMSwyMi41LDZIMTIuMlY5QTIuMiwyLjIs''@;'; put 'put ''MCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41Wm0tNC4wNiwzLjA4LTkuNjcsOS42N0wxMSwyMC45NEExLjM2''@;'; put 'put ''LDEuMzYsMCwwLDEsMTIuOSwxOWwzLjM4LDMuMzhMMjQsMTQuNjZhMS4zNiwxLjM2LDAsMSwxLDEuOTMsMS45M1oiLz4nfV0sT3NlPVsiY2FsZW5kYXIiLHtvdXRsaW5lOic8cGF0aCBkPSJNMzIuMjUsNkgyOVY4aDNWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAu''@;'; put 'put ''MTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNloiLz48cmVjdCB4PSI4IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdo''@;'; put 'put ''dD0iMiIvPjxyZWN0IHg9IjIwIiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjI2IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjgiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMTQiIHk9IjE5IiB3aWR0aD0iMiIgaGVp''@;'; put 'put ''Z2h0PSIyIi8+PHJlY3QgeD0iMjAiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjYiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iOCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCIgeD0iMTQiIHk9IjI0IiB3aWR0aD0iMiIg''@;'; put 'put ''aGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjAiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjYiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHBhdGggZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPjxw''@;'; put 'put ''YXRoIGQ9Ik0yNiwxMGExLDEsMCwwLDAsMS0xVjNhMSwxLDAsMCwwLTIsMFY5QTEsMSwwLDAsMCwyNiwxMFoiLz48cmVjdCB4PSIxMyIgeT0iNiIgd2lkdGg9IjEwIiBoZWlnaHQ9IjIiLz4nLG91dGxpbmVBbGVydGVkOic8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMlYzMEg0VjhIN1Y2SDMuNzVB''@;'; put 'put ''MS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxNS4zOFoiLz48cmVjdCB4PSI4IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIiIGhl''@;'; put 'put ''aWdodD0iMiIvPjxyZWN0IHg9IjgiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMTQiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjAiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjYiIHk9IjE5IiB3aWR0aD0iMiIg''@;'; put 'put ''aGVpZ2h0PSIyIi8+PHJlY3QgeD0iOCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIxNCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNiIgeT0iMjQiIHdpZHRoPSIy''@;'; put 'put ''IiBoZWlnaHQ9IjIiLz48cGF0aCBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+PHBvbHlnb24gcG9pbnRzPSIyMS4yOSA2IDEzIDYgMTMgOCAyMC4xNCA4IDIxLjI5IDYiLz4nLG91dGxpbmVCYWRnZWQ6JzxwYXRoIGQ9Ik0zMiwx''@;'; put 'put ''My4yMlYzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaIi8+PHJlY3QgeD0iOCIgeT0iMTQiIHdpZHRoPSIy''@;'; put 'put ''IiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIxNCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyMCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNiIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSI4IiB5PSIxOSIgd2lkdGg9''@;'; put 'put ''IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjE0IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjIwIiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjI2IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjgiIHk9IjI0IiB3aWR0''@;'; put 'put ''aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMTQiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjAiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjYiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHBhdGggZD0iTTEwLDEwYTEsMSww''@;'; put 'put ''LDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPjxwYXRoIGQ9Ik0yMi41LDZIMTNWOGg5Ljc4QTcuNDksNy40OSwwLDAsMSwyMi41LDZaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTMyLjI1LDZoLTRWOWEyLjIsMi4yLDAsMSwxLTQuNCwwVjZIMTIuMlY5QTIuMiwy''@;'; put 'put ''LjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCwwLDMyLjI1LDZaTTEwLDI2SDhWMjRoMlptMC01SDhWMTloMlptMC01SDhW''@;'; put 'put ''MTRoMlptNiwxMEgxNFYyNGgyWm0wLTVIMTRWMTloMlptMC01SDE0VjE0aDJabTYsMTBIMjBWMjRoMlptMC01SDIwVjE5aDJabTAtNUgyMFYxNGgyWm02LDEwSDI2VjI0aDJabTAtNUgyNlYxOWgyWm0wLTVIMjZWMTRoMloiLz48cGF0aCBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSww''@;'; put 'put ''LDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+PHBhdGggZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAsMCwwLDI2LDEwWiIvPicsc29saWRBbGVydGVkOic8cGF0aCBkPSJNMzMuNjgsMTUuNEgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwy''@;'; put 'put ''MS4yOSw2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxNS4zOFpNMTAsMjZIOFYyNGgyWm0wLTVIOFYxOWgyWm0wLTVIOFYxNGgy''@;'; put 'put ''Wm02LDEwSDE0VjI0aDJabTAtNUgxNFYxOWgyWm0wLTVIMTRWMTRoMlptNiwxMEgyMFYyNGgyWm0wLTVIMjBWMTloMlptNiw1SDI2VjI0aDJabTAtNUgyNlYxOWgyWiIvPjxwYXRoIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz4n''@;'; put 'put ''LHNvbGlkQmFkZ2VkOic8cGF0aCBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+PHBhdGggZD0iTTMwLDEzLjVBNy41LDcuNSwwLDAsMSwyMi41LDZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCww''@;'; put 'put ''LDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41Wk0xMCwyNkg4VjI0aDJabTAtNUg4VjE5aDJabTAtNUg4VjE0aDJabTYsMTBIMTRWMjRoMlptMC01SDE0VjE5aDJa''@;'; put 'put ''bTAtNUgxNFYxNGgyWm02LDEwSDIwVjI0aDJabTAtNUgyMFYxOWgyWm0wLTVIMjBWMTRoMlptNiwxMEgyNlYyNGgyWm0wLTVIMjZWMTloMlptMC01SDI2VjE0aDJaIi8+J31dLGhWPVsiZXllLWhpZGUiLHtvdXRsaW5lOic8cGF0aCBkPSJNMjUuMTksMjAuNEE2Ljc4LDYuNzgsMCwwLDAsMjUu''@;'; put 'put ''NjIsMThhNi44Niw2Ljg2LDAsMCwwLTYuODYtNi44Niw2Ljc5LDYuNzksMCwwLDAtMi4zNy40M0wxOCwxMy4yM2E0Ljc4LDQuNzgsMCwwLDEsLjc0LS4wNkE0Ljg3LDQuODcsMCwwLDEsMjMuNjIsMThhNC43OSw0Ljc5LDAsMCwxLS4wNi43NFoiLz48cGF0aCBkPSJNMzQuMjksMTcuNTNjLTMu''@;'; put 'put ''MzctNi4yMy05LjI4LTEwLTE1LjgyLTEwYTE2LjgyLDE2LjgyLDAsMCwwLTUuMjQuODVMMTQuODQsMTBhMTQuNzgsMTQuNzgsMCwwLDEsMy42My0uNDdjNS42MywwLDEwLjc1LDMuMTQsMTMuOCw4LjQzYTE3Ljc1LDE3Ljc1LDAsMCwxLTQuMzcsNS4xbDEuNDIsMS40MmExOS45MywxOS45Myww''@;'; put 'put ''LDAsMCw1LTZsLjI2LS40OFoiLz48cGF0aCBkPSJNNC44Nyw1Ljc4bDQuNDYsNC40NmExOS41MiwxOS41MiwwLDAsMC02LjY5LDcuMjlMMi4zOCwxOGwuMjYuNDhjMy4zNyw2LjIzLDkuMjgsMTAsMTUuODIsMTBhMTYuOTMsMTYuOTMsMCwwLDAsNy4zNy0xLjY5bDUsNSwxLjc1LTEuNS0yNi0y''@;'; put 'put ''NlptOS43NSw5Ljc1LDYuNjUsNi42NWE0LjgxLDQuODEsMCwwLDEtMi41LjcyQTQuODcsNC44NywwLDAsMSwxMy45LDE4LDQuODEsNC44MSwwLDAsMSwxNC42MiwxNS41M1ptLTEuNDUtMS40NWE2Ljg1LDYuODUsMCwwLDAsOS41NSw5LjU1bDEuNiwxLjZhMTQuOTEsMTQuOTEsMCwwLDEtNS44''@;'; put 'put ''NiwxLjJjLTUuNjMsMC0xMC43NS0zLjE0LTEzLjgtOC40M2ExNy4yOSwxNy4yOSwwLDAsMSw2LjEyLTYuM1oiLz4nLHNvbGlkOic8cGF0aCBkPSJNMTguMzcsMTEuMTdBNi43OSw2Ljc5LDAsMCwwLDE2LDExLjZsOC44LDguOEE2Ljc4LDYuNzgsMCwwLDAsMjUuMjMsMTgsNi44Niw2Ljg2LDAs''@;'; put 'put ''MCwwLDE4LjM3LDExLjE3WiIvPjxwYXRoIGQ9Ik0zNC4yOSwxNy41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBhMTYuODIsMTYuODIsMCwwLDAtNS4yNC44NUwxNC44NCwxMGExNC43OCwxNC43OCwwLDAsMSwzLjYzLS40N2M1LjYzLDAsMTAuNzUsMy4xNCwxMy44LDguNDNhMTcuNzUs''@;'; put 'put ''MTcuNzUsMCwwLDEtNC4zNyw1LjFsMS40MiwxLjQyYTE5LjkzLDE5LjkzLDAsMCwwLDUtNmwuMjYtLjQ4WiIvPjxwYXRoIGQ9Ik00Ljg3LDUuNzhsNC40Niw0LjQ2YTE5LjUyLDE5LjUyLDAsMCwwLTYuNjksNy4yOUwyLjM4LDE4bC4yNi40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMGEx''@;'; put 'put ''Ni45MywxNi45MywwLDAsMCw3LjM3LTEuNjlsNSw1LDEuNzUtMS41LTI2LTI2Wm04LjMsOC4zYTYuODUsNi44NSwwLDAsMCw5LjU1LDkuNTVsMS42LDEuNmExNC45MSwxNC45MSwwLDAsMS01Ljg2LDEuMmMtNS42MywwLTEwLjc1LTMuMTQtMTMuOC04LjQzYTE3LjI5LDE3LjI5LDAsMCwxLDYu''@;'; put 'put ''MTItNi4zWiIvPid9XSxSc2U9WyJleWUiLHtvdXRsaW5lOic8cGF0aCBkPSJNMzMuNjIsMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1LjgyLTEwUzUuMzQsMTEuMywyLDE3LjUzTDEuNzIsMThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4LDEwLDE1LjgyLDEwczEyLjQ2LTMuNzIsMTUuODItMTBs''@;'; put 'put ''LjI2LS40OFpNMTcuOCwyNi40M0MxMi4xNywyNi40Myw3LDIzLjI5LDQsMThjMy01LjI5LDguMTctOC40MywxMy44LTguNDNTMjguNTQsMTIuNzIsMzEuNTksMThDMjguNTQsMjMuMjksMjMuNDIsMjYuNDMsMTcuOCwyNi40M1oiLz48cGF0aCBkPSJNMTguMDksMTEuMTdBNi44Niw2Ljg2LDAs''@;'; put 'put ''MSwwLDI1LDE4LDYuODYsNi44NiwwLDAsMCwxOC4wOSwxMS4xN1ptMCwxMS43MkE0Ljg2LDQuODYsMCwxLDEsMjMsMTgsNC44Nyw0Ljg3LDAsMCwxLDE4LjA5LDIyLjg5WiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0zMy42MiwxNy41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBTNS4zNCwx''@;'; put 'put ''MS4zLDIsMTcuNTNMMS43MiwxOGwuMjYuNDhjMy4zNyw2LjIzLDkuMjgsMTAsMTUuODIsMTBzMTIuNDYtMy43MiwxNS44Mi0xMGwuMjYtLjQ4Wk0xNy44LDI2LjQzQzEyLjE3LDI2LjQzLDcsMjMuMjksNCwxOGMzLTUuMjksOC4xNy04LjQzLDEzLjgtOC40M1MyOC41NCwxMi43MiwzMS41OSwx''@;'; put 'put ''OEMyOC41NCwyMy4yOSwyMy40MiwyNi40MywxNy44LDI2LjQzWiIvPjxjaXJjbGUgY3g9IjE4LjA5IiBjeT0iMTguMDMiIHI9IjYuODYiLz4nfV0saFg9WyJlbGxpcHNpcy12ZXJ0aWNhbCIse291dGxpbmU6JzxjaXJjbGUgY3g9IjE4IiBjeT0iNC45IiByPSIyLjkiLz48Y2lyY2xlIGN4PSIx''@;'; put 'put ''OCIgY3k9IjE4IiByPSIyLjkiLz48Y2lyY2xlIGN4PSIxOCIgY3k9IjMxLjEiIHI9IjIuOSIvPicsb3V0bGluZUJhZGdlZDonPGNpcmNsZSBjeD0iMTgiIGN5PSI0LjkiIHI9IjIuOSIvPjxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIvPjxjaXJjbGUgY3g9IjE4IiBjeT0iMzEuMSIg''@;'; put 'put ''cj0iMi45Ii8+J31dLGRYPVsidmlldy1jb2x1bW5zIix7b3V0bGluZTonPHBhdGggZD0iTTMxLDVINUEyLDIsMCwwLDAsMyw3VjI5YTIsMiwwLDAsMCwyLDJIMzFhMiwyLDAsMCwwLDItMlY3QTIsMiwwLDAsMCwzMSw1Wk0xMywyOUg1VjdoOFptMTAsMEgxNVY3aDhaIi8+J31dLEZzZT1bImFy''@;'; put 'put ''cm93Iix7b3V0bGluZTonPHBhdGggZD0iTTI3LjY2LDE1LjYxLDE4LDYsOC4zNCwxNS42MUExLDEsMCwxLDAsOS43NSwxN0wxNyw5LjgxVjI4Ljk0YTEsMSwwLDEsMCwyLDBWOS44MUwyNi4yNSwxN2ExLDEsMCwwLDAsMS40MS0xLjQyWiIvPid9XSxwWD1bInRpbWVzIix7b3V0bGluZTonPHBh''@;'; put 'put ''dGggZD0iTTE5LjQxLDE4bDguMjktOC4yOWExLDEsMCwwLDAtMS40MS0xLjQxTDE4LDE2LjU5LDkuNzEsOC4yOUExLDEsMCwwLDAsOC4yOSw5LjcxTDE2LjU5LDE4LDguMjksMjYuMjlhMSwxLDAsMSwwLDEuNDEsMS40MUwxOCwxOS40MWw4LjI5LDguMjlhMSwxLDAsMCwwLDEuNDEtMS40MVoi''@;'; put 'put ''Lz4nfV0sSHNlPVsic3RlcC1mb3J3YXJkLTIiLHtvdXRsaW5lOic8cGF0aCBkPSJNNy4wOCw2LjUyYTEuNjgsMS42OCwwLDAsMCwwLDIuNEwxNi41MSwxOCw3LjEyLDI3LjA4YTEuNywxLjcsMCwwLDAsMi4zNiwyLjQ0aDBMMjEuNCwxOCw5LjQ4LDYuNDdBMS42OSwxLjY5LDAsMCwwLDcuMDgs''@;'; put 'put ''Ni41MloiLz48cGF0aCBkPSJNMjYuNDksNWExLjcsMS43LDAsMCwwLTEuNywxLjdWMjkuM2ExLjcsMS43LDAsMCwwLDMuNCwwVjYuN0ExLjcsMS43LDAsMCwwLDI2LjQ5LDVaIi8+J31dLGdYPVsiYW5nbGUtZG91YmxlIix7b3V0bGluZTonPHBhdGggZD0iTTI5LDE5LjQxYTEsMSwwLDAsMS0u''@;'; put 'put ''NzEtLjI5TDE4LDguODMsNy43MSwxOS4xMmExLDEsMCwwLDEtMS40MS0xLjQxTDE4LDYsMjkuNzEsMTcuNzFBMSwxLDAsMCwxLDI5LDE5LjQxWiIvPjxwYXRoIGQ9Ik0yOSwzMC40MWExLDEsMCwwLDEtLjcxLS4yOUwxOCwxOS44Myw3LjcxLDMwLjEyYTEsMSwwLDAsMS0xLjQxLTEuNDFMMTgs''@;'; put 'put ''MTcsMjkuNzEsMjguNzFBMSwxLDAsMCwxLDI5LDMwLjQxWiIvPid9XSxOc2U9WyJmaWx0ZXItZ3JpZC1jaXJjbGUiLHtvdXRsaW5lOic8cGF0aCBkPSJNMTUsMjUuODZsMiwxVjIwLjI3YTEsMSwwLDAsMC0uMjktLjdMMTAuMjMsMTNIMjUuNzlsLTYuNDcsNi41N2ExLDEsMCwwLDAtLjI5LjdM''@;'; put 'put ''MTksMjhsMiwxVjIwLjY4TDI3LjU4LDE0QTEuNDYsMS40NiwwLDAsMCwyOCwxM1YxMmExLDEsMCwwLDAtMS0xSDlhMSwxLDAsMCwwLTEsMXYxYTEuNDYsMS40NiwwLDAsMCwuNDIsMUwxNSwyMC42OFoiLz48cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwy''@;'; put 'put ''Wm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIi8+PHBhdGggZD0iTTgsMTF2''@;'; put 'put ''MS4xMmEuNS41LDAsMCwwLC4xNS4zNWw3LjI4LDcuMzZhLjUuNSwwLDAsMSwuMTUuMzV2Ni44OWEuNS41LDAsMCwwLC4yOC40NWwzLjk1LDEuNDFhLjUuNSwwLDAsMCwuNzItLjQ1bDAtOC4zOWEuNTQuNTQsMCwwLDEsLjE4LS4zNWw3LjEyLTcuMjVhLjUuNSwwLDAsMCwuMTUtLjM1VjExWiIv''@;'; put 'put ''Pid9XSxkVj1bImZpbHRlci1ncmlkIix7b3V0bGluZTonPHBhdGggZD0iTTE1LDI1Ljg2bDIsMVYyMC4yN2ExLDEsMCwwLDAtLjI5LS43TDEwLjIzLDEzSDI1Ljc5bC02LjQ3LDYuNTdhMSwxLDAsMCwwLS4yOS43TDE5LDI4bDIsMVYyMC42OEwyNy41OCwxNEExLjQ2LDEuNDYsMCwwLDAsMjgs''@;'; put 'put ''MTNWMTJhMSwxLDAsMCwwLTEtMUg5YTEsMSwwLDAsMC0xLDF2MWExLjQ2LDEuNDYsMCwwLDAsLjQyLDFMMTUsMjAuNjhaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTgsMTF2MS4xMmEuNS41LDAsMCwwLC4xNS4zNWw3LjI4LDcuMzZhLjUuNSwwLDAsMSwuMTUuMzV2Ni44OWEuNS41LDAsMCwwLC4y''@;'; put 'put ''OC40NWwzLjk1LDEuNDFhLjUuNSwwLDAsMCwuNzItLjQ1bDAtOC4zOWEuNTQuNTQsMCwwLDEsLjE4LS4zNWw3LjEyLTcuMjVhLjUuNSwwLDAsMCwuMTUtLjM1VjExWiIvPid9XSxtWD1bImluZm8tY2lyY2xlIix7b3V0bGluZTonPGNpcmNsZSBjeD0iMTcuOTMiIGN5PSIxMS45IiByPSIxLjQi''@;'; put 'put ''Lz48cGF0aCBkPSJNMjEsMjNIMTlWMTVIMTZhMSwxLDAsMCwwLDAsMmgxdjZIMTVhMSwxLDAsMSwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIi8+PHBhdGggZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptMCwyMkExMCwxMCwwLDEsMSwyOCwxOCwxMCwxMCwwLDAs''@;'; put 'put ''MSwxOCwyOFoiLz4nLHNvbGlkOic8cGF0aCBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0tMiw1LjE1YTIsMiwwLDEsMSwyLDJBMiwyLDAsMCwxLDE1LjksMTEuMTVaTTIzLDI0YTEsMSwwLDAsMS0xLDFIMTVhMSwxLDAsMSwxLDAtMmgyVjE3SDE2YTEsMSww''@;'; put 'put ''LDAsMSwwLTJoNHY4aDJBMSwxLDAsMCwxLDIzLDI0WiIvPid9XSxqc2U9WyJleGNsYW1hdGlvbi10cmlhbmdsZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0xOCwyMS4zMmExLjMsMS4zLDAsMCwwLDEuMy0xLjNWMTRhMS4zLDEuMywwLDEsMC0yLjYsMHY2QTEuMywxLjMsMCwwLDAsMTgsMjEuMzJa''@;'; put 'put ''Ii8+PGNpcmNsZSBjeD0iMTcuOTUiIGN5PSIyNC4yNyIgcj0iMS41Ii8+PHBhdGggZD0iTTMwLjMzLDI1LjU0LDIwLjU5LDcuNmEzLDMsMCwwLDAtNS4yNywwTDUuNTcsMjUuNTRBMywzLDAsMCwwLDguMjEsMzBIMjcuNjlhMywzLDAsMCwwLDIuNjQtNC40M1ptLTEuNzgsMS45NGExLDEsMCww''@;'; put 'put ''LDEtLjg2LjQ5SDguMjFhMSwxLDAsMCwxLS44OC0xLjQ4TDE3LjA3LDguNTVhMSwxLDAsMCwxLDEuNzYsMGw5Ljc0LDE3Ljk0QTEsMSwwLDAsMSwyOC41NSwyNy40OFoiLz4nLHNvbGlkOic8cGF0aCBkPSJNMzAuMzMsMjUuNTQsMjAuNTksNy42YTMsMywwLDAsMC01LjI3LDBMNS41NywyNS41''@;'; put 'put ''NEEzLDMsMCwwLDAsOC4yMSwzMEgyNy42OWEzLDMsMCwwLDAsMi42NC00LjQzWk0xNi40NiwxMi43NGExLjQ5LDEuNDksMCwwLDEsMywwdjYuODlhMS40OSwxLjQ5LDAsMSwxLTMsMFpNMTgsMjYuMjVhMS43MiwxLjcyLDAsMSwxLDEuNzItMS43MkExLjcyLDEuNzIsMCwwLDEsMTgsMjYuMjVa''@;'; put 'put ''Ii8+J31dLFpzZT1bImNpcmNsZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpNMTgsNEExNCwxNCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwxOCw0WiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwz''@;'; put 'put ''NCwxOCwxNiwxNiwwLDAsMSwxOCwzNFoiLz4nfV0senNlPVsiZG90LWNpcmNsZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0xOCwxMWE3LDcsMCwxLDEtNyw3LDcsNywwLDAsMSw3LTciLz48cGF0aCBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQs''@;'; put 'put ''MTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz4nfV0sdlg9WyJlcnJvci1zdGFuZGFyZCIse291dGxpbmU6JzxjaXJjbGUgY3g9IjE4IiBjeT0iMjYuMDYiIHI9IjEuMzMiLz48cGF0aCBkPSJNMTgsMjIuNjFhMSwxLDAsMCwxLTEtMXYtMTJhMSwxLDAsMSwxLDIsMHYxMkExLDEs''@;'; put 'put ''MCwwLDEsMTgsMjIuNjFaIi8+PHBhdGggZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4LDM0Wk0xOCw0QTE0LDE0LDAsMSwwLDMyLDE4LDE0LDE0LDAsMCwwLDE4LDRaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTE4LDIuMWExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiww''@;'; put 'put ''LDAsMCwxOCwyLjFaTTE2LjYsOC44YTEuNCwxLjQsMCwwLDEsMi44LDB2MTJhMS40LDEuNCwwLDAsMS0yLjgsMFpNMTgsMjguNmExLjgsMS44LDAsMSwxLDEuOC0xLjhBMS44LDEuOCwwLDAsMSwxOCwyOC42WiIvPid9XSxXc2U9WyJzdWNjZXNzLXN0YW5kYXJkIix7b3V0bGluZTonPHBhdGgg''@;'; put 'put ''ZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz48cGF0aCBkPSJNMjgsMTIuMWExLDEsMCwwLDAtMS40MSwwTDE1LjQ5LDIzLjE1bC02LTZBMSwxLDAsMCwwLDgsMTguNTNMMTUuNDks''@;'; put 'put ''MjYsMjgsMTMuNTJBMSwxLDAsMCwwLDI4LDEyLjFaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNMjguNDUsMTIuNjMsMTUuMzEsMjUuNzYsNy41NSwxOGExLjQsMS40LDAsMCwxLDItMmw1Ljc4LDUuNzhMMjYuNDcsMTAuNjVh''@;'; put 'put ''MS40LDEuNCwwLDEsMSwyLDJaIi8+J31dO2NsYXNzIFlzZXtjb25zdHJ1Y3RvcihnLGgpe3RoaXMuY29tcGFyZT1nLHRoaXMua2V5U2VsZWN0b3I9aH1jYWxsKGcsaCl7cmV0dXJuIGguc3Vic2NyaWJlKG5ldyBVc2UoZyx0aGlzLmNvbXBhcmUsdGhpcy5rZXlTZWxlY3RvcikpfX1jbGFzcyBV''@;'; put 'put ''c2UgZXh0ZW5kcyB6e2NvbnN0cnVjdG9yKGcsaCx2KXtzdXBlcihnKSx0aGlzLmtleVNlbGVjdG9yPXYsdGhpcy5oYXNLZXk9ITEsImZ1bmN0aW9uIj09dHlwZW9mIGgmJih0aGlzLmNvbXBhcmU9aCl9Y29tcGFyZShnLGgpe3JldHVybiBnPT09aH1fbmV4dChnKXtsZXQgaDt0cnl7Y29uc3R7''@;'; put 'put ''a2V5U2VsZWN0b3I6eX09dGhpcztoPXk/eShnKTpnfWNhdGNoKHkpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHkpfWxldCB2PSExO2lmKHRoaXMuaGFzS2V5KXRyeXtjb25zdHtjb21wYXJlOnl9PXRoaXM7dj15KHRoaXMua2V5LGgpfWNhdGNoKHkpe3JldHVybiB0aGlzLmRlc3Rp''@;'; put 'put ''bmF0aW9uLmVycm9yKHkpfWVsc2UgdGhpcy5oYXNLZXk9ITA7dnx8KHRoaXMua2V5PWgsdGhpcy5kZXN0aW5hdGlvbi5uZXh0KGcpKX19Y2xhc3MgWHNlIGV4dGVuZHMgVGV7Y29uc3RydWN0b3IoZyxoKXtzdXBlcigpfXNjaGVkdWxlKGcsaD0wKXtyZXR1cm4gdGhpc319Y2xhc3Mgd1ggZXh0''@;'; put 'put ''ZW5kcyBYc2V7Y29uc3RydWN0b3IoZyxoKXtzdXBlcihnLGgpLHRoaXMuc2NoZWR1bGVyPWcsdGhpcy53b3JrPWgsdGhpcy5wZW5kaW5nPSExfXNjaGVkdWxlKGcsaD0wKXtpZih0aGlzLmNsb3NlZClyZXR1cm4gdGhpczt0aGlzLnN0YXRlPWc7Y29uc3Qgdj10aGlzLmlkLHk9dGhpcy5zY2hl''@;'; put 'put ''ZHVsZXI7cmV0dXJuIG51bGwhPXYmJih0aGlzLmlkPXRoaXMucmVjeWNsZUFzeW5jSWQoeSx2LGgpKSx0aGlzLnBlbmRpbmc9ITAsdGhpcy5kZWxheT1oLHRoaXMuaWQ9dGhpcy5pZHx8dGhpcy5yZXF1ZXN0QXN5bmNJZCh5LHRoaXMuaWQsaCksdGhpc31yZXF1ZXN0QXN5bmNJZChnLGgsdj0w''@;'; put 'put ''KXtyZXR1cm4gc2V0SW50ZXJ2YWwoZy5mbHVzaC5iaW5kKGcsdGhpcyksdil9cmVjeWNsZUFzeW5jSWQoZyxoLHY9MCl7aWYobnVsbCE9PXYmJnRoaXMuZGVsYXk9PT12JiYhMT09PXRoaXMucGVuZGluZylyZXR1cm4gaDtjbGVhckludGVydmFsKGgpfWV4ZWN1dGUoZyxoKXtpZih0aGlzLmNs''@;'; put 'put ''b3NlZClyZXR1cm4gbmV3IEVycm9yKCJleGVjdXRpbmcgYSBjYW5jZWxsZWQgYWN0aW9uIik7dGhpcy5wZW5kaW5nPSExO2NvbnN0IHY9dGhpcy5fZXhlY3V0ZShnLGgpO2lmKHYpcmV0dXJuIHY7ITE9PT10aGlzLnBlbmRpbmcmJm51bGwhPXRoaXMuaWQmJih0aGlzLmlkPXRoaXMucmVjeWNs''@;'; put 'put ''ZUFzeW5jSWQodGhpcy5zY2hlZHVsZXIsdGhpcy5pZCxudWxsKSl9X2V4ZWN1dGUoZyxoKXtsZXQgeSx2PSExO3RyeXt0aGlzLndvcmsoZyl9Y2F0Y2goQyl7dj0hMCx5PSEhQyYmQ3x8bmV3IEVycm9yKEMpfWlmKHYpcmV0dXJuIHRoaXMudW5zdWJzY3JpYmUoKSx5fV91bnN1YnNjcmliZSgp''@;'; put 'put ''e2NvbnN0IGc9dGhpcy5pZCxoPXRoaXMuc2NoZWR1bGVyLHY9aC5hY3Rpb25zLHk9di5pbmRleE9mKHRoaXMpO3RoaXMud29yaz1udWxsLHRoaXMuc3RhdGU9bnVsbCx0aGlzLnBlbmRpbmc9ITEsdGhpcy5zY2hlZHVsZXI9bnVsbCwtMSE9PXkmJnYuc3BsaWNlKHksMSksbnVsbCE9ZyYmKHRo''@;'; put 'put ''aXMuaWQ9dGhpcy5yZWN5Y2xlQXN5bmNJZChoLGcsbnVsbCkpLHRoaXMuZGVsYXk9bnVsbH19bGV0IGJYPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2PWQubm93KXt0aGlzLlNjaGVkdWxlckFjdGlvbj1oLHRoaXMubm93PXZ9c2NoZWR1bGUoaCx2PTAseSl7cmV0dXJuIG5ldyB0aGlz''@;'; put 'put ''LlNjaGVkdWxlckFjdGlvbih0aGlzLGgpLnNjaGVkdWxlKHksdil9fXJldHVybiBkLm5vdz0oKT0+RGF0ZS5ub3coKSxkfSkoKTtjbGFzcyBlOCBleHRlbmRzIGJYe2NvbnN0cnVjdG9yKGcsaD1iWC5ub3cpe3N1cGVyKGcsKCk9PmU4LmRlbGVnYXRlJiZlOC5kZWxlZ2F0ZSE9PXRoaXM/ZTgu''@;'; put 'put ''ZGVsZWdhdGUubm93KCk6aCgpKSx0aGlzLmFjdGlvbnM9W10sdGhpcy5hY3RpdmU9ITEsdGhpcy5zY2hlZHVsZWQ9dm9pZCAwfXNjaGVkdWxlKGcsaD0wLHYpe3JldHVybiBlOC5kZWxlZ2F0ZSYmZTguZGVsZWdhdGUhPT10aGlzP2U4LmRlbGVnYXRlLnNjaGVkdWxlKGcsaCx2KTpzdXBlci5z''@;'; put 'put ''Y2hlZHVsZShnLGgsdil9Zmx1c2goZyl7Y29uc3R7YWN0aW9uczpofT10aGlzO2lmKHRoaXMuYWN0aXZlKXJldHVybiB2b2lkIGgucHVzaChnKTtsZXQgdjt0aGlzLmFjdGl2ZT0hMDtkb3tpZih2PWcuZXhlY3V0ZShnLnN0YXRlLGcuZGVsYXkpKWJyZWFrfXdoaWxlKGc9aC5zaGlmdCgpKTtp''@;'; put 'put ''Zih0aGlzLmFjdGl2ZT0hMSx2KXtmb3IoO2c9aC5zaGlmdCgpOylnLnVuc3Vic2NyaWJlKCk7dGhyb3cgdn19fWNvbnN0IHBWPW5ldyBlOCh3WCk7ZnVuY3Rpb24gREQoZCxnPXBWKXtyZXR1cm4gaD0+aC5saWZ0KG5ldyBnVihkLGcpKX1jbGFzcyBnVntjb25zdHJ1Y3RvcihnLGgpe3RoaXMu''@;'; put 'put ''ZHVlVGltZT1nLHRoaXMuc2NoZWR1bGVyPWh9Y2FsbChnLGgpe3JldHVybiBoLnN1YnNjcmliZShuZXcgbVYoZyx0aGlzLmR1ZVRpbWUsdGhpcy5zY2hlZHVsZXIpKX19Y2xhc3MgbVYgZXh0ZW5kcyB6e2NvbnN0cnVjdG9yKGcsaCx2KXtzdXBlcihnKSx0aGlzLmR1ZVRpbWU9aCx0aGlzLnNj''@;'; put 'put ''aGVkdWxlcj12LHRoaXMuZGVib3VuY2VkU3Vic2NyaXB0aW9uPW51bGwsdGhpcy5sYXN0VmFsdWU9bnVsbCx0aGlzLmhhc1ZhbHVlPSExfV9uZXh0KGcpe3RoaXMuY2xlYXJEZWJvdW5jZSgpLHRoaXMubGFzdFZhbHVlPWcsdGhpcy5oYXNWYWx1ZT0hMCx0aGlzLmFkZCh0aGlzLmRlYm91bmNl''@;'; put 'put ''ZFN1YnNjcmlwdGlvbj10aGlzLnNjaGVkdWxlci5zY2hlZHVsZShfWCx0aGlzLmR1ZVRpbWUsdGhpcykpfV9jb21wbGV0ZSgpe3RoaXMuZGVib3VuY2VkTmV4dCgpLHRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX1kZWJvdW5jZWROZXh0KCl7aWYodGhpcy5jbGVhckRlYm91bmNlKCksdGhp''@;'; put 'put ''cy5oYXNWYWx1ZSl7Y29uc3R7bGFzdFZhbHVlOmd9PXRoaXM7dGhpcy5sYXN0VmFsdWU9bnVsbCx0aGlzLmhhc1ZhbHVlPSExLHRoaXMuZGVzdGluYXRpb24ubmV4dChnKX19Y2xlYXJEZWJvdW5jZSgpe2NvbnN0IGc9dGhpcy5kZWJvdW5jZWRTdWJzY3JpcHRpb247bnVsbCE9PWcmJih0aGlz''@;'; put 'put ''LnJlbW92ZShnKSxnLnVuc3Vic2NyaWJlKCksdGhpcy5kZWJvdW5jZWRTdWJzY3JpcHRpb249bnVsbCl9fWZ1bmN0aW9uIF9YKGQpe2QuZGVib3VuY2VkTmV4dCgpfWZ1bmN0aW9uIGo3KGQpe3JldHVybiBnPT5nLmxpZnQobmV3IExEKGQpKX1jbGFzcyBMRHtjb25zdHJ1Y3RvcihnKXt0aGlz''@;'; put 'put ''Lm5vdGlmaWVyPWd9Y2FsbChnLGgpe2NvbnN0IHY9bmV3ICRzZShnKSx5PWVyKHRoaXMubm90aWZpZXIsbmV3IHluKHYpKTtyZXR1cm4geSYmIXYuc2VlblZhbHVlPyh2LmFkZCh5KSxoLnN1YnNjcmliZSh2KSk6dn19Y2xhc3MgJHNlIGV4dGVuZHMgTm57Y29uc3RydWN0b3IoZyl7c3VwZXIo''@;'; put 'put ''ZyksdGhpcy5zZWVuVmFsdWU9ITF9bm90aWZ5TmV4dCgpe3RoaXMuc2VlblZhbHVlPSEwLHRoaXMuY29tcGxldGUoKX1ub3RpZnlDb21wbGV0ZSgpe319ZnVuY3Rpb24gdDgoZCxnLGgsdil7cmV0dXJuIHNlKGgpJiYodj1oLGg9dm9pZCAwKSx2P3Q4KGQsZyxoKS5waXBlKG10KHk9PkFlKHkp''@;'; put 'put ''P3YoLi4ueSk6dih5KSkpOm5ldyBGKHk9PntDWChkLGcsZnVuY3Rpb24gQyhJKXt5Lm5leHQoYXJndW1lbnRzLmxlbmd0aD4xP0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk6SSl9LHksaCl9KX1mdW5jdGlvbiBDWChkLGcsaCx2LHkpe2xldCBDO2lmKGZ1bmN0aW9uIEVr''@;'; put 'put ''KGQpe3JldHVybiBkJiYiZnVuY3Rpb24iPT10eXBlb2YgZC5hZGRFdmVudExpc3RlbmVyJiYiZnVuY3Rpb24iPT10eXBlb2YgZC5yZW1vdmVFdmVudExpc3RlbmVyfShkKSl7Y29uc3QgST1kO2QuYWRkRXZlbnRMaXN0ZW5lcihnLGgseSksQz0oKT0+SS5yZW1vdmVFdmVudExpc3RlbmVyKGcs''@;'; put 'put ''aCx5KX1lbHNlIGlmKGZ1bmN0aW9uIE1rKGQpe3JldHVybiBkJiYiZnVuY3Rpb24iPT10eXBlb2YgZC5vbiYmImZ1bmN0aW9uIj09dHlwZW9mIGQub2ZmfShkKSl7Y29uc3QgST1kO2Qub24oZyxoKSxDPSgpPT5JLm9mZihnLGgpfWVsc2UgaWYoZnVuY3Rpb24gcXNlKGQpe3JldHVybiBkJiYi''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2YgZC5hZGRMaXN0ZW5lciYmImZ1bmN0aW9uIj09dHlwZW9mIGQucmVtb3ZlTGlzdGVuZXJ9KGQpKXtjb25zdCBJPWQ7ZC5hZGRMaXN0ZW5lcihnLGgpLEM9KCk9PkkucmVtb3ZlTGlzdGVuZXIoZyxoKX1lbHNle2lmKCFkfHwhZC5sZW5ndGgpdGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcigiSW52YWxpZCBldmVudCB0YXJnZXQiKTtmb3IobGV0IEk9MCxaPWQubGVuZ3RoO0k8WjtJKyspQ1goZFtJXSxnLGgsdix5KX12LmFkZChDKX1mdW5jdGlvbiBrWChkKXtyZXR1cm4hIWQmJihkIGluc3RhbmNlb2YgRnx8ImZ1bmN0aW9uIj09dHlwZW9mIGQubGlmdCYmImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIGQuc3Vic2NyaWJlKX1jb25zdCBPRD1uZXcgY2xhc3MgdDJlIGV4dGVuZHMgZTh7fShjbGFzcyBlMmUgZXh0ZW5kcyB3WHtjb25zdHJ1Y3RvcihnLGgpe3N1cGVyKGcsaCksdGhpcy5zY2hlZHVsZXI9Zyx0aGlzLndvcms9aH1zY2hlZHVsZShnLGg9MCl7cmV0dXJuIGg+''@;'; put 'put ''MD9zdXBlci5zY2hlZHVsZShnLGgpOih0aGlzLmRlbGF5PWgsdGhpcy5zdGF0ZT1nLHRoaXMuc2NoZWR1bGVyLmZsdXNoKHRoaXMpLHRoaXMpfWV4ZWN1dGUoZyxoKXtyZXR1cm4gaD4wfHx0aGlzLmNsb3NlZD9zdXBlci5leGVjdXRlKGcsaCk6dGhpcy5fZXhlY3V0ZShnLGgpfXJlcXVlc3RB''@;'; put 'put ''c3luY0lkKGcsaCx2PTApe3JldHVybiBudWxsIT09diYmdj4wfHxudWxsPT09diYmdGhpcy5kZWxheT4wP3N1cGVyLnJlcXVlc3RBc3luY0lkKGcsaCx2KTpnLmZsdXNoKHRoaXMpfX0pO2NsYXNzIFgze2NvbnN0cnVjdG9yKGcsaCx2KXt0aGlzLmtpbmQ9Zyx0aGlzLnZhbHVlPWgsdGhpcy5l''@;'; put 'put ''cnJvcj12LHRoaXMuaGFzVmFsdWU9Ik4iPT09Z31vYnNlcnZlKGcpe3N3aXRjaCh0aGlzLmtpbmQpe2Nhc2UiTiI6cmV0dXJuIGcubmV4dCYmZy5uZXh0KHRoaXMudmFsdWUpO2Nhc2UiRSI6cmV0dXJuIGcuZXJyb3ImJmcuZXJyb3IodGhpcy5lcnJvcik7Y2FzZSJDIjpyZXR1cm4gZy5jb21w''@;'; put 'put ''bGV0ZSYmZy5jb21wbGV0ZSgpfX1kbyhnLGgsdil7c3dpdGNoKHRoaXMua2luZCl7Y2FzZSJOIjpyZXR1cm4gZyYmZyh0aGlzLnZhbHVlKTtjYXNlIkUiOnJldHVybiBoJiZoKHRoaXMuZXJyb3IpO2Nhc2UiQyI6cmV0dXJuIHYmJnYoKX19YWNjZXB0KGcsaCx2KXtyZXR1cm4gZyYmImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIGcubmV4dD90aGlzLm9ic2VydmUoZyk6dGhpcy5kbyhnLGgsdil9dG9PYnNlcnZhYmxlKCl7c3dpdGNoKHRoaXMua2luZCl7Y2FzZSJOIjpyZXR1cm4gYWEodGhpcy52YWx1ZSk7Y2FzZSJFIjpyZXR1cm4gUUEodGhpcy5lcnJvcik7Y2FzZSJDIjpyZXR1cm4gYUkoKX10''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgbm90aWZpY2F0aW9uIGtpbmQgdmFsdWUiKX1zdGF0aWMgY3JlYXRlTmV4dChnKXtyZXR1cm4gdm9pZCAwIT09Zz9uZXcgWDMoIk4iLGcpOlgzLnVuZGVmaW5lZFZhbHVlTm90aWZpY2F0aW9ufXN0YXRpYyBjcmVhdGVFcnJvcihnKXtyZXR1cm4g''@;'; put 'put ''bmV3IFgzKCJFIix2b2lkIDAsZyl9c3RhdGljIGNyZWF0ZUNvbXBsZXRlKCl7cmV0dXJuIFgzLmNvbXBsZXRlTm90aWZpY2F0aW9ufX1YMy5jb21wbGV0ZU5vdGlmaWNhdGlvbj1uZXcgWDMoIkMiKSxYMy51bmRlZmluZWRWYWx1ZU5vdGlmaWNhdGlvbj1uZXcgWDMoIk4iLHZvaWQgMCk7Y2xh''@;'; put 'put ''c3MgUkQgZXh0ZW5kcyB6e2NvbnN0cnVjdG9yKGcsaCx2PTApe3N1cGVyKGcpLHRoaXMuc2NoZWR1bGVyPWgsdGhpcy5kZWxheT12fXN0YXRpYyBkaXNwYXRjaChnKXtjb25zdHtub3RpZmljYXRpb246aCxkZXN0aW5hdGlvbjp2fT1nO2gub2JzZXJ2ZSh2KSx0aGlzLnVuc3Vic2NyaWJlKCl9''@;'; put 'put ''c2NoZWR1bGVNZXNzYWdlKGcpe3RoaXMuZGVzdGluYXRpb24uYWRkKHRoaXMuc2NoZWR1bGVyLnNjaGVkdWxlKFJELmRpc3BhdGNoLHRoaXMuZGVsYXksbmV3IHIyZShnLHRoaXMuZGVzdGluYXRpb24pKSl9X25leHQoZyl7dGhpcy5zY2hlZHVsZU1lc3NhZ2UoWDMuY3JlYXRlTmV4dChnKSl9''@;'; put 'put ''X2Vycm9yKGcpe3RoaXMuc2NoZWR1bGVNZXNzYWdlKFgzLmNyZWF0ZUVycm9yKGcpKSx0aGlzLnVuc3Vic2NyaWJlKCl9X2NvbXBsZXRlKCl7dGhpcy5zY2hlZHVsZU1lc3NhZ2UoWDMuY3JlYXRlQ29tcGxldGUoKSksdGhpcy51bnN1YnNjcmliZSgpfX1jbGFzcyByMmV7Y29uc3RydWN0b3Io''@;'; put 'put ''ZyxoKXt0aGlzLm5vdGlmaWNhdGlvbj1nLHRoaXMuZGVzdGluYXRpb249aH19Y2xhc3MgeGsgZXh0ZW5kcyAkZXtjb25zdHJ1Y3RvcihnPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxoPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSx2KXtzdXBlcigpLHRoaXMuc2NoZWR1bGVyPXYsdGhpcy5f''@;'; put 'put ''ZXZlbnRzPVtdLHRoaXMuX2luZmluaXRlVGltZVdpbmRvdz0hMSx0aGlzLl9idWZmZXJTaXplPWc8MT8xOmcsdGhpcy5fd2luZG93VGltZT1oPDE/MTpoLGg9PT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk/KHRoaXMuX2luZmluaXRlVGltZVdpbmRvdz0hMCx0aGlzLm5leHQ9dGhpcy5uZXh0''@;'; put 'put ''SW5maW5pdGVUaW1lV2luZG93KTp0aGlzLm5leHQ9dGhpcy5uZXh0VGltZVdpbmRvd31uZXh0SW5maW5pdGVUaW1lV2luZG93KGcpe2lmKCF0aGlzLmlzU3RvcHBlZCl7Y29uc3QgaD10aGlzLl9ldmVudHM7aC5wdXNoKGcpLGgubGVuZ3RoPnRoaXMuX2J1ZmZlclNpemUmJmguc2hpZnQoKX1z''@;'; put 'put ''dXBlci5uZXh0KGcpfW5leHRUaW1lV2luZG93KGcpe3RoaXMuaXNTdG9wcGVkfHwodGhpcy5fZXZlbnRzLnB1c2gobmV3IGkyZSh0aGlzLl9nZXROb3coKSxnKSksdGhpcy5fdHJpbUJ1ZmZlclRoZW5HZXRFdmVudHMoKSksc3VwZXIubmV4dChnKX1fc3Vic2NyaWJlKGcpe2NvbnN0IGg9dGhp''@;'; put 'put ''cy5faW5maW5pdGVUaW1lV2luZG93LHY9aD90aGlzLl9ldmVudHM6dGhpcy5fdHJpbUJ1ZmZlclRoZW5HZXRFdmVudHMoKSx5PXRoaXMuc2NoZWR1bGVyLEM9di5sZW5ndGg7bGV0IEk7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IERlO2lmKHRoaXMuaXNTdG9wcGVkfHx0aGlzLmhhc0Vycm9y''@;'; put 'put ''P0k9VGUuRU1QVFk6KHRoaXMub2JzZXJ2ZXJzLnB1c2goZyksST1uZXcgUGUodGhpcyxnKSkseSYmZy5hZGQoZz1uZXcgUkQoZyx5KSksaClmb3IobGV0IFo9MDtaPEMmJiFnLmNsb3NlZDtaKyspZy5uZXh0KHZbWl0pO2Vsc2UgZm9yKGxldCBaPTA7WjxDJiYhZy5jbG9zZWQ7WisrKWcubmV4''@;'; put 'put ''dCh2W1pdLnZhbHVlKTtyZXR1cm4gdGhpcy5oYXNFcnJvcj9nLmVycm9yKHRoaXMudGhyb3duRXJyb3IpOnRoaXMuaXNTdG9wcGVkJiZnLmNvbXBsZXRlKCksSX1fZ2V0Tm93KCl7cmV0dXJuKHRoaXMuc2NoZWR1bGVyfHxPRCkubm93KCl9X3RyaW1CdWZmZXJUaGVuR2V0RXZlbnRzKCl7Y29u''@;'; put 'put ''c3QgZz10aGlzLl9nZXROb3coKSxoPXRoaXMuX2J1ZmZlclNpemUsdj10aGlzLl93aW5kb3dUaW1lLHk9dGhpcy5fZXZlbnRzLEM9eS5sZW5ndGg7bGV0IEk9MDtmb3IoO0k8QyYmIShnLXlbSV0udGltZTx2KTspSSsrO3JldHVybiBDPmgmJihJPU1hdGgubWF4KEksQy1oKSksST4wJiZ5LnNw''@;'; put 'put ''bGljZSgwLEkpLHl9fWNsYXNzIGkyZXtjb25zdHJ1Y3RvcihnLGgpe3RoaXMudGltZT1nLHRoaXMudmFsdWU9aH19Y2xhc3MgU1h7fWNvbnN0IG44PSIqIjtmdW5jdGlvbiAkaChkLGcpe3JldHVybnt0eXBlOjcsbmFtZTpkLGRlZmluaXRpb25zOmcsb3B0aW9uczp7fX19ZnVuY3Rpb24gRGMo''@;'; put 'put ''ZCxnPW51bGwpe3JldHVybnt0eXBlOjQsc3R5bGVzOmcsdGltaW5nczpkfX1mdW5jdGlvbiBUayhkLGc9bnVsbCl7cmV0dXJue3R5cGU6MixzdGVwczpkLG9wdGlvbnM6Z319ZnVuY3Rpb24geWwoZCl7cmV0dXJue3R5cGU6NixzdHlsZXM6ZCxvZmZzZXQ6bnVsbH19ZnVuY3Rpb24gWjcoZCxn''@;'; put 'put ''LGgpe3JldHVybnt0eXBlOjAsbmFtZTpkLHN0eWxlczpnLG9wdGlvbnM6aH19ZnVuY3Rpb24gYTJlKGQpe3JldHVybnt0eXBlOjUsc3RlcHM6ZH19ZnVuY3Rpb24gYnUoZCxnLGg9bnVsbCl7cmV0dXJue3R5cGU6MSxleHByOmQsYW5pbWF0aW9uOmcsb3B0aW9uczpofX1mdW5jdGlvbiB2Vihk''@;'; put 'put ''KXtQcm9taXNlLnJlc29sdmUobnVsbCkudGhlbihkKX1jbGFzcyBJa3tjb25zdHJ1Y3RvcihnPTAsaD0wKXt0aGlzLl9vbkRvbmVGbnM9W10sdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10sdGhpcy5fb3JpZ2luYWxPbkRvbmVGbnM9W10sdGhpcy5fb3JpZ2luYWxP''@;'; put 'put ''blN0YXJ0Rm5zPVtdLHRoaXMuX3N0YXJ0ZWQ9ITEsdGhpcy5fZGVzdHJveWVkPSExLHRoaXMuX2ZpbmlzaGVkPSExLHRoaXMuX3Bvc2l0aW9uPTAsdGhpcy5wYXJlbnRQbGF5ZXI9bnVsbCx0aGlzLnRvdGFsVGltZT1nK2h9X29uRmluaXNoKCl7dGhpcy5fZmluaXNoZWR8fCh0aGlzLl9maW5p''@;'; put 'put ''c2hlZD0hMCx0aGlzLl9vbkRvbmVGbnMuZm9yRWFjaChnPT5nKCkpLHRoaXMuX29uRG9uZUZucz1bXSl9b25TdGFydChnKXt0aGlzLl9vcmlnaW5hbE9uU3RhcnRGbnMucHVzaChnKSx0aGlzLl9vblN0YXJ0Rm5zLnB1c2goZyl9b25Eb25lKGcpe3RoaXMuX29yaWdpbmFsT25Eb25lRm5zLnB1''@;'; put 'put ''c2goZyksdGhpcy5fb25Eb25lRm5zLnB1c2goZyl9b25EZXN0cm95KGcpe3RoaXMuX29uRGVzdHJveUZucy5wdXNoKGcpfWhhc1N0YXJ0ZWQoKXtyZXR1cm4gdGhpcy5fc3RhcnRlZH1pbml0KCl7fXBsYXkoKXt0aGlzLmhhc1N0YXJ0ZWQoKXx8KHRoaXMuX29uU3RhcnQoKSx0aGlzLnRyaWdn''@;'; put 'put ''ZXJNaWNyb3Rhc2soKSksdGhpcy5fc3RhcnRlZD0hMH10cmlnZ2VyTWljcm90YXNrKCl7dlYoKCk9PnRoaXMuX29uRmluaXNoKCkpfV9vblN0YXJ0KCl7dGhpcy5fb25TdGFydEZucy5mb3JFYWNoKGc9PmcoKSksdGhpcy5fb25TdGFydEZucz1bXX1wYXVzZSgpe31yZXN0YXJ0KCl7fWZpbmlz''@;'; put 'put ''aCgpe3RoaXMuX29uRmluaXNoKCl9ZGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZHx8KHRoaXMuX2Rlc3Ryb3llZD0hMCx0aGlzLmhhc1N0YXJ0ZWQoKXx8dGhpcy5fb25TdGFydCgpLHRoaXMuZmluaXNoKCksdGhpcy5fb25EZXN0cm95Rm5zLmZvckVhY2goZz0+ZygpKSx0aGlzLl9vbkRlc3Ry''@;'; put 'put ''b3lGbnM9W10pfXJlc2V0KCl7dGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9vblN0YXJ0Rm5zPXRoaXMuX29yaWdpbmFsT25TdGFydEZucyx0aGlzLl9vbkRvbmVGbnM9dGhpcy5fb3JpZ2luYWxPbkRvbmVGbnN9c2V0UG9zaXRpb24oZyl7dGhpcy5fcG9zaXRpb249''@;'; put 'put ''dGhpcy50b3RhbFRpbWU/Zyp0aGlzLnRvdGFsVGltZToxfWdldFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMudG90YWxUaW1lP3RoaXMuX3Bvc2l0aW9uL3RoaXMudG90YWxUaW1lOjF9dHJpZ2dlckNhbGxiYWNrKGcpe2NvbnN0IGg9InN0YXJ0Ij09Zz90aGlzLl9vblN0YXJ0Rm5zOnRoaXMuX29u''@;'; put 'put ''RG9uZUZucztoLmZvckVhY2godj0+digpKSxoLmxlbmd0aD0wfX1jbGFzcyB6N3tjb25zdHJ1Y3RvcihnKXt0aGlzLl9vbkRvbmVGbnM9W10sdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9zdGFydGVkPSExLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9vbkRl''@;'; put 'put ''c3Ryb3lGbnM9W10sdGhpcy5wYXJlbnRQbGF5ZXI9bnVsbCx0aGlzLnRvdGFsVGltZT0wLHRoaXMucGxheWVycz1nO2xldCBoPTAsdj0wLHk9MDtjb25zdCBDPXRoaXMucGxheWVycy5sZW5ndGg7MD09Qz92VigoKT0+dGhpcy5fb25GaW5pc2goKSk6dGhpcy5wbGF5ZXJzLmZvckVhY2goST0+''@;'; put 'put ''e0kub25Eb25lKCgpPT57KytoPT1DJiZ0aGlzLl9vbkZpbmlzaCgpfSksSS5vbkRlc3Ryb3koKCk9PnsrK3Y9PUMmJnRoaXMuX29uRGVzdHJveSgpfSksSS5vblN0YXJ0KCgpPT57Kyt5PT1DJiZ0aGlzLl9vblN0YXJ0KCl9KX0pLHRoaXMudG90YWxUaW1lPXRoaXMucGxheWVycy5yZWR1Y2Uo''@;'; put 'put ''KEksWik9Pk1hdGgubWF4KEksWi50b3RhbFRpbWUpLDApfV9vbkZpbmlzaCgpe3RoaXMuX2ZpbmlzaGVkfHwodGhpcy5fZmluaXNoZWQ9ITAsdGhpcy5fb25Eb25lRm5zLmZvckVhY2goZz0+ZygpKSx0aGlzLl9vbkRvbmVGbnM9W10pfWluaXQoKXt0aGlzLnBsYXllcnMuZm9yRWFjaChnPT5n''@;'; put 'put ''LmluaXQoKSl9b25TdGFydChnKXt0aGlzLl9vblN0YXJ0Rm5zLnB1c2goZyl9X29uU3RhcnQoKXt0aGlzLmhhc1N0YXJ0ZWQoKXx8KHRoaXMuX3N0YXJ0ZWQ9ITAsdGhpcy5fb25TdGFydEZucy5mb3JFYWNoKGc9PmcoKSksdGhpcy5fb25TdGFydEZucz1bXSl9b25Eb25lKGcpe3RoaXMuX29u''@;'; put 'put ''RG9uZUZucy5wdXNoKGcpfW9uRGVzdHJveShnKXt0aGlzLl9vbkRlc3Ryb3lGbnMucHVzaChnKX1oYXNTdGFydGVkKCl7cmV0dXJuIHRoaXMuX3N0YXJ0ZWR9cGxheSgpe3RoaXMucGFyZW50UGxheWVyfHx0aGlzLmluaXQoKSx0aGlzLl9vblN0YXJ0KCksdGhpcy5wbGF5ZXJzLmZvckVhY2go''@;'; put 'put ''Zz0+Zy5wbGF5KCkpfXBhdXNlKCl7dGhpcy5wbGF5ZXJzLmZvckVhY2goZz0+Zy5wYXVzZSgpKX1yZXN0YXJ0KCl7dGhpcy5wbGF5ZXJzLmZvckVhY2goZz0+Zy5yZXN0YXJ0KCkpfWZpbmlzaCgpe3RoaXMuX29uRmluaXNoKCksdGhpcy5wbGF5ZXJzLmZvckVhY2goZz0+Zy5maW5pc2goKSl9''@;'; put 'put ''ZGVzdHJveSgpe3RoaXMuX29uRGVzdHJveSgpfV9vbkRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWR8fCh0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5fb25GaW5pc2goKSx0aGlzLnBsYXllcnMuZm9yRWFjaChnPT5nLmRlc3Ryb3koKSksdGhpcy5fb25EZXN0cm95Rm5zLmZvckVhY2goZz0+Zygp''@;'; put 'put ''KSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10pfXJlc2V0KCl7dGhpcy5wbGF5ZXJzLmZvckVhY2goZz0+Zy5yZXNldCgpKSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fc3RhcnRlZD0hMX1zZXRQb3NpdGlvbihnKXtjb25zdCBoPWcqdGhpcy50b3RhbFRpbWU7dGhp''@;'; put 'put ''cy5wbGF5ZXJzLmZvckVhY2godj0+e2NvbnN0IHk9di50b3RhbFRpbWU/TWF0aC5taW4oMSxoL3YudG90YWxUaW1lKToxO3Yuc2V0UG9zaXRpb24oeSl9KX1nZXRQb3NpdGlvbigpe2NvbnN0IGc9dGhpcy5wbGF5ZXJzLnJlZHVjZSgoaCx2KT0+bnVsbD09PWh8fHYudG90YWxUaW1lPmgudG90''@;'; put 'put ''YWxUaW1lP3Y6aCxudWxsKTtyZXR1cm4gbnVsbCE9Zz9nLmdldFBvc2l0aW9uKCk6MH1iZWZvcmVEZXN0cm95KCl7dGhpcy5wbGF5ZXJzLmZvckVhY2goZz0+e2cuYmVmb3JlRGVzdHJveSYmZy5iZWZvcmVEZXN0cm95KCl9KX10cmlnZ2VyQ2FsbGJhY2soZyl7Y29uc3QgaD0ic3RhcnQiPT1n''@;'; put 'put ''P3RoaXMuX29uU3RhcnRGbnM6dGhpcy5fb25Eb25lRm5zO2guZm9yRWFjaCh2PT52KCkpLGgubGVuZ3RoPTB9fWZ1bmN0aW9uIERrKGQsZyl7cmV0dXJuIG5ldyBGKGg9Pntjb25zdCB2PWQubGVuZ3RoO2lmKDA9PT12KXJldHVybiB2b2lkIGguY29tcGxldGUoKTtjb25zdCB5PW5ldyBBcnJh''@;'; put 'put ''eSh2KTtsZXQgQz0wLEk9MDtmb3IobGV0IFo9MDtaPHY7WisrKXtjb25zdCB1ZT1kbihkW1pdKTtsZXQgX2U9ITE7aC5hZGQodWUuc3Vic2NyaWJlKHtuZXh0OkJlPT57X2V8fChfZT0hMCxJKyspLHlbWl09QmV9LGVycm9yOkJlPT5oLmVycm9yKEJlKSxjb21wbGV0ZTooKT0+e0MrKywoQz09''@;'; put 'put ''PXZ8fCFfZSkmJihJPT09diYmaC5uZXh0KGc/Zy5yZWR1Y2UoKEJlLE5lLEtlKT0+KEJlW05lXT15W0tlXSxCZSkse30pOnkpLGguY29tcGxldGUoKSl9fSkpfX0pfWxldCBNWD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdil7dGhpcy5fcmVuZGVyZXI9aCx0aGlzLl9lbGVtZW50UmVm''@;'; put 'put ''PXYsdGhpcy5vbkNoYW5nZT15PT57fSx0aGlzLm9uVG91Y2hlZD0oKT0+e319c2V0UHJvcGVydHkoaCx2KXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsaCx2KX1yZWdpc3Rlck9uVG91Y2hlZChoKXt0aGlzLm9uVG91Y2hlZD1ofXJl''@;'; put 'put ''Z2lzdGVyT25DaGFuZ2UoaCl7dGhpcy5vbkNoYW5nZT1ofXNldERpc2FibGVkU3RhdGUoaCl7dGhpcy5zZXRQcm9wZXJ0eSgiZGlzYWJsZWQiLGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChHYSksS3QoYm8pKX0sZC5cdTAyNzVkaXI9V2ko''@;'; put 'put ''e3R5cGU6ZH0pLGR9KSgpLEc3PSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBNWHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IGc7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybihnfHwoZz1mbChkKSkpKHZ8fGQpfX0oKSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLGZlYXR1cmVzOltE''@;'; put 'put ''b119KSxkfSkoKTtjb25zdCBncD1uZXcgemUoIk5nVmFsdWVBY2Nlc3NvciIpLGgyZT17cHJvdmlkZTpncCx1c2VFeGlzdGluZzpfbigoKT0+SWYpLG11bHRpOiEwfTtsZXQgSWY9KCgpPT57Y2xhc3MgZCBleHRlbmRzIEc3e3dyaXRlVmFsdWUoaCl7dGhpcy5zZXRQcm9wZXJ0eSgiY2hlY2tl''@;'; put 'put ''ZCIsaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbigpe2xldCBnO3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4oZ3x8KGc9ZmwoZCkpKSh2fHxkKX19KCksZC5cdTAyNzVkaXI9V2koe3R5cGU6ZCxzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJmb3JtQ29udHJv''@;'; put 'put ''bE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJkduKCJjaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9u''@;'; put 'put ''Q2hhbmdlKEMudGFyZ2V0LmNoZWNrZWQpfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHYub25Ub3VjaGVkKCl9KX0sZmVhdHVyZXM6W2hvKFtoMmVdKSxEb119KSxkfSkoKTtjb25zdCBFWD17cHJvdmlkZTpncCx1c2VFeGlzdGluZzpfbigoKT0+bTEpLG11bHRpOiEwfSxkMmU9bmV3IHpl''@;'; put 'put ''KCJDb21wb3NpdGlvbkV2ZW50TW9kZSIpO2xldCBtMT0oKCk9PntjbGFzcyBkIGV4dGVuZHMgTVh7Y29uc3RydWN0b3IoaCx2LHkpe3N1cGVyKGgsdiksdGhpcy5fY29tcG9zaXRpb25Nb2RlPXksdGhpcy5fY29tcG9zaW5nPSExLG51bGw9PXRoaXMuX2NvbXBvc2l0aW9uTW9kZSYmKHRoaXMu''@;'; put 'put ''X2NvbXBvc2l0aW9uTW9kZT0hZnVuY3Rpb24geFgoKXtjb25zdCBkPVVkKCk/VWQoKS5nZXRVc2VyQWdlbnQoKToiIjtyZXR1cm4vYW5kcm9pZCAoXGQrKS8udGVzdChkLnRvTG93ZXJDYXNlKCkpfSgpKX13cml0ZVZhbHVlKGgpe3RoaXMuc2V0UHJvcGVydHkoInZhbHVlIixudWxsPT1oPyIi''@;'; put 'put ''OmgpfV9oYW5kbGVJbnB1dChoKXsoIXRoaXMuX2NvbXBvc2l0aW9uTW9kZXx8dGhpcy5fY29tcG9zaXRpb25Nb2RlJiYhdGhpcy5fY29tcG9zaW5nKSYmdGhpcy5vbkNoYW5nZShoKX1fY29tcG9zaXRpb25TdGFydCgpe3RoaXMuX2NvbXBvc2luZz0hMH1fY29tcG9zaXRpb25FbmQoaCl7dGhp''@;'; put 'put ''cy5fY29tcG9zaW5nPSExLHRoaXMuX2NvbXBvc2l0aW9uTW9kZSYmdGhpcy5vbkNoYW5nZShoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoR2EpLEt0KGJvKSxLdChkMmUsOCkpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpb''@;'; put 'put ''WyJpbnB1dCIsImZvcm1Db250cm9sTmFtZSIsIiIsMywidHlwZSIsImNoZWNrYm94Il0sWyJ0ZXh0YXJlYSIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJmb3JtQ29udHJvbCIsIiIsMywidHlwZSIsImNoZWNrYm94Il0sWyJ0ZXh0YXJlYSIsImZvcm1Db250cm9sIiwiIl0sWyJp''@;'; put 'put ''bnB1dCIsIm5nTW9kZWwiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsidGV4dGFyZWEiLCJuZ01vZGVsIiwiIl0sWyIiLCJuZ0RlZmF1bHRDb250cm9sIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezEmaCYmR24oImlucHV0IixmdW5jdGlvbihDKXtyZXR1cm4gdi5faGFuZGxl''@;'; put 'put ''SW5wdXQoQy50YXJnZXQudmFsdWUpfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHYub25Ub3VjaGVkKCl9KSgiY29tcG9zaXRpb25zdGFydCIsZnVuY3Rpb24oKXtyZXR1cm4gdi5fY29tcG9zaXRpb25TdGFydCgpfSkoImNvbXBvc2l0aW9uZW5kIixmdW5jdGlvbihDKXtyZXR1cm4gdi5f''@;'; put 'put ''Y29tcG9zaXRpb25FbmQoQy50YXJnZXQudmFsdWUpfSl9LGZlYXR1cmVzOltobyhbRVhdKSxEb119KSxkfSkoKTtjb25zdCBLYz1uZXcgemUoIk5nVmFsaWRhdG9ycyIpLGhnPW5ldyB6ZSgiTmdBc3luY1ZhbGlkYXRvcnMiKTtmdW5jdGlvbiBMWChkKXtyZXR1cm4gbnVsbCE9ZH1mdW5jdGlv''@;'; put 'put ''biBfVihkKXtyZXR1cm4gVm0oZCk/ZG4oZCk6ZH1mdW5jdGlvbiBDVihkKXtsZXQgZz17fTtyZXR1cm4gZC5mb3JFYWNoKGg9PntnPW51bGwhPWg/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGcpLGgpOmd9KSwwPT09T2JqZWN0LmtleXMoZykubGVuZ3RoP251bGw6Z31mdW5jdGlv''@;'; put 'put ''biBPeShkLGcpe3JldHVybiBnLm1hcChoPT5oKGQpKX1mdW5jdGlvbiBrVihkKXtyZXR1cm4gZC5tYXAoZz0+ZnVuY3Rpb24gQkQoZCl7cmV0dXJuIWQudmFsaWRhdGV9KGcpP2c6aD0+Zy52YWxpZGF0ZShoKSl9ZnVuY3Rpb24gU1YoZCl7cmV0dXJuIG51bGwhPWQ/ZnVuY3Rpb24gT1goZCl7''@;'; put 'put ''aWYoIWQpcmV0dXJuIG51bGw7Y29uc3QgZz1kLmZpbHRlcihMWCk7cmV0dXJuIDA9PWcubGVuZ3RoP251bGw6ZnVuY3Rpb24oaCl7cmV0dXJuIENWKE95KGgsZykpfX0oa1YoZCkpOm51bGx9ZnVuY3Rpb24gT2soZCl7cmV0dXJuIG51bGwhPWQ/ZnVuY3Rpb24gTVYoZCl7aWYoIWQpcmV0dXJu''@;'; put 'put ''IG51bGw7Y29uc3QgZz1kLmZpbHRlcihMWCk7cmV0dXJuIDA9PWcubGVuZ3RoP251bGw6ZnVuY3Rpb24oaCl7cmV0dXJuIGZ1bmN0aW9uIGYyZSguLi5kKXtpZigxPT09ZC5sZW5ndGgpe2NvbnN0IGc9ZFswXTtpZihBZShnKSlyZXR1cm4gRGsoZyxudWxsKTtpZihrZShnKSYmT2JqZWN0Lmdl''@;'; put 'put ''dFByb3RvdHlwZU9mKGcpPT09T2JqZWN0LnByb3RvdHlwZSl7Y29uc3QgaD1PYmplY3Qua2V5cyhnKTtyZXR1cm4gRGsoaC5tYXAodj0+Z1t2XSksaCl9fWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBkW2QubGVuZ3RoLTFdKXtjb25zdCBnPWQucG9wKCk7cmV0dXJuIERrKGQ9MT09PWQubGVuZ3Ro''@;'; put 'put ''JiZBZShkWzBdKT9kWzBdOmQsbnVsbCkucGlwZShtdChoPT5nKC4uLmgpKSl9cmV0dXJuIERrKGQsbnVsbCl9KE95KGgsZykubWFwKF9WKSkucGlwZShtdChDVikpfX0oa1YoZCkpOm51bGx9ZnVuY3Rpb24gUlgoZCxnKXtyZXR1cm4gbnVsbD09PWQ/W2ddOkFycmF5LmlzQXJyYXkoZCk/Wy4u''@;'; put 'put ''LmQsZ106W2QsZ119ZnVuY3Rpb24gRVYoZCl7cmV0dXJuIGQ/QXJyYXkuaXNBcnJheShkKT9kOltkXTpbXX1mdW5jdGlvbiBQRChkLGcpe3JldHVybiBBcnJheS5pc0FycmF5KGQpP2QuaW5jbHVkZXMoZyk6ZD09PWd9ZnVuY3Rpb24gaTgoZCxnKXtjb25zdCBoPUVWKGcpO3JldHVybiBFVihk''@;'; put 'put ''KS5mb3JFYWNoKHk9PntQRChoLHkpfHxoLnB1c2goeSl9KSxofWZ1bmN0aW9uIEZYKGQsZyl7cmV0dXJuIEVWKGcpLmZpbHRlcihoPT4hUEQoZCxoKSl9Y2xhc3Mgbzh7Y29uc3RydWN0b3IoKXt0aGlzLl9yYXdWYWxpZGF0b3JzPVtdLHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz1bXSx0aGlz''@;'; put 'put ''Ll9vbkRlc3Ryb3lDYWxsYmFja3M9W119Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudmFsdWU6bnVsbH1nZXQgdmFsaWQoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWxpZDpudWxsfWdldCBpbnZhbGlkKCl7cmV0dXJuIHRoaXMuY29u''@;'; put 'put ''dHJvbD90aGlzLmNvbnRyb2wuaW52YWxpZDpudWxsfWdldCBwZW5kaW5nKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wucGVuZGluZzpudWxsfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmRpc2FibGVkOm51bGx9Z2V0IGVuYWJsZWQo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5lbmFibGVkOm51bGx9Z2V0IGVycm9ycygpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmVycm9yczpudWxsfWdldCBwcmlzdGluZSgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnByaXN0aW5lOm51''@;'; put 'put ''bGx9Z2V0IGRpcnR5KCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZGlydHk6bnVsbH1nZXQgdG91Y2hlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnRvdWNoZWQ6bnVsbH1nZXQgc3RhdHVzKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wu''@;'; put 'put ''c3RhdHVzOm51bGx9Z2V0IHVudG91Y2hlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnVudG91Y2hlZDpudWxsfWdldCBzdGF0dXNDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuc3RhdHVzQ2hhbmdlczpudWxsfWdldCB2YWx1ZUNoYW5nZXMo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWx1ZUNoYW5nZXM6bnVsbH1nZXQgcGF0aCgpe3JldHVybiBudWxsfV9zZXRWYWxpZGF0b3JzKGcpe3RoaXMuX3Jhd1ZhbGlkYXRvcnM9Z3x8W10sdGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbj1TVih0aGlzLl9yYXdWYWxpZGF0''@;'; put 'put ''b3JzKX1fc2V0QXN5bmNWYWxpZGF0b3JzKGcpe3RoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz1nfHxbXSx0aGlzLl9jb21wb3NlZEFzeW5jVmFsaWRhdG9yRm49T2sodGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzKX1nZXQgdmFsaWRhdG9yKCl7cmV0dXJuIHRoaXMuX2NvbXBvc2VkVmFsaWRhdG9y''@;'; put 'put ''Rm58fG51bGx9Z2V0IGFzeW5jVmFsaWRhdG9yKCl7cmV0dXJuIHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbnx8bnVsbH1fcmVnaXN0ZXJPbkRlc3Ryb3koZyl7dGhpcy5fb25EZXN0cm95Q2FsbGJhY2tzLnB1c2goZyl9X2ludm9rZU9uRGVzdHJveUNhbGxiYWNrcygpe3RoaXMuX29u''@;'; put 'put ''RGVzdHJveUNhbGxiYWNrcy5mb3JFYWNoKGc9PmcoKSksdGhpcy5fb25EZXN0cm95Q2FsbGJhY2tzPVtdfXJlc2V0KGcpe3RoaXMuY29udHJvbCYmdGhpcy5jb250cm9sLnJlc2V0KGcpfWhhc0Vycm9yKGcsaCl7cmV0dXJuISF0aGlzLmNvbnRyb2wmJnRoaXMuY29udHJvbC5oYXNFcnJvcihn''@;'; put 'put ''LGgpfWdldEVycm9yKGcsaCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZ2V0RXJyb3IoZyxoKTpudWxsfX1jbGFzcyBEZiBleHRlbmRzIG84e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9wYXJlbnQ9bnVsbCx0aGlzLm5hbWU9bnVsbCx0aGlzLnZh''@;'; put 'put ''bHVlQWNjZXNzb3I9bnVsbH19Y2xhc3MgTGYgZXh0ZW5kcyBvOHtnZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiBudWxsfWdldCBwYXRoKCl7cmV0dXJuIG51bGx9fWNsYXNzIEZEe2NvbnN0cnVjdG9yKGcpe3RoaXMuX2NkPWd9Z2V0IGlzVG91Y2hlZCgpe3ZhciBnLGg7cmV0dXJuIShudWxs''@;'; put 'put ''PT09KGg9bnVsbD09PShnPXRoaXMuX2NkKXx8dm9pZCAwPT09Zz92b2lkIDA6Zy5jb250cm9sKXx8dm9pZCAwPT09aHx8IWgudG91Y2hlZCl9Z2V0IGlzVW50b3VjaGVkKCl7dmFyIGcsaDtyZXR1cm4hKG51bGw9PT0oaD1udWxsPT09KGc9dGhpcy5fY2QpfHx2b2lkIDA9PT1nP3ZvaWQgMDpn''@;'; put 'put ''LmNvbnRyb2wpfHx2b2lkIDA9PT1ofHwhaC51bnRvdWNoZWQpfWdldCBpc1ByaXN0aW5lKCl7dmFyIGcsaDtyZXR1cm4hKG51bGw9PT0oaD1udWxsPT09KGc9dGhpcy5fY2QpfHx2b2lkIDA9PT1nP3ZvaWQgMDpnLmNvbnRyb2wpfHx2b2lkIDA9PT1ofHwhaC5wcmlzdGluZSl9Z2V0IGlzRGly''@;'; put 'put ''dHkoKXt2YXIgZyxoO3JldHVybiEobnVsbD09PShoPW51bGw9PT0oZz10aGlzLl9jZCl8fHZvaWQgMD09PWc/dm9pZCAwOmcuY29udHJvbCl8fHZvaWQgMD09PWh8fCFoLmRpcnR5KX1nZXQgaXNWYWxpZCgpe3ZhciBnLGg7cmV0dXJuIShudWxsPT09KGg9bnVsbD09PShnPXRoaXMuX2NkKXx8''@;'; put 'put ''dm9pZCAwPT09Zz92b2lkIDA6Zy5jb250cm9sKXx8dm9pZCAwPT09aHx8IWgudmFsaWQpfWdldCBpc0ludmFsaWQoKXt2YXIgZyxoO3JldHVybiEobnVsbD09PShoPW51bGw9PT0oZz10aGlzLl9jZCl8fHZvaWQgMD09PWc/dm9pZCAwOmcuY29udHJvbCl8fHZvaWQgMD09PWh8fCFoLmludmFs''@;'; put 'put ''aWQpfWdldCBpc1BlbmRpbmcoKXt2YXIgZyxoO3JldHVybiEobnVsbD09PShoPW51bGw9PT0oZz10aGlzLl9jZCl8fHZvaWQgMD09PWc/dm9pZCAwOmcuY29udHJvbCl8fHZvaWQgMD09PWh8fCFoLnBlbmRpbmcpfWdldCBpc1N1Ym1pdHRlZCgpe3ZhciBnO3JldHVybiEobnVsbD09PShnPXRo''@;'; put 'put ''aXMuX2NkKXx8dm9pZCAwPT09Z3x8IWcuc3VibWl0dGVkKX19bGV0IFRzPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBGRHtjb25zdHJ1Y3RvcihoKXtzdXBlcihoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoRGYsMikpfSxkLlx1MDI3NWRpcj1X''@;'; put 'put ''aSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIiIsIm5nTW9kZWwiLCIiXSxbIiIsImZvcm1Db250cm9sIiwiIl1dLGhvc3RWYXJzOjE0LGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmRmkoIm5nLXVudG91Y2hlZCIsdi5pc1VudG91Y2hlZCko''@;'; put 'put ''Im5nLXRvdWNoZWQiLHYuaXNUb3VjaGVkKSgibmctcHJpc3RpbmUiLHYuaXNQcmlzdGluZSkoIm5nLWRpcnR5Iix2LmlzRGlydHkpKCJuZy12YWxpZCIsdi5pc1ZhbGlkKSgibmctaW52YWxpZCIsdi5pc0ludmFsaWQpKCJuZy1wZW5kaW5nIix2LmlzUGVuZGluZyl9LGZlYXR1cmVzOltEb119''@;'; put 'put ''KSxkfSkoKSxkZz0oKCk9PntjbGFzcyBkIGV4dGVuZHMgRkR7Y29uc3RydWN0b3IoaCl7c3VwZXIoaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KExmLDEwKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImZvcm1H''@;'; put 'put ''cm91cE5hbWUiLCIiXSxbIiIsImZvcm1BcnJheU5hbWUiLCIiXSxbIiIsIm5nTW9kZWxHcm91cCIsIiJdLFsiIiwiZm9ybUdyb3VwIiwiIl0sWyJmb3JtIiwzLCJuZ05vRm9ybSIsIiJdLFsiIiwibmdGb3JtIiwiIl1dLGhvc3RWYXJzOjE2LGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezIm''@;'; put 'put ''aCYmRmkoIm5nLXVudG91Y2hlZCIsdi5pc1VudG91Y2hlZCkoIm5nLXRvdWNoZWQiLHYuaXNUb3VjaGVkKSgibmctcHJpc3RpbmUiLHYuaXNQcmlzdGluZSkoIm5nLWRpcnR5Iix2LmlzRGlydHkpKCJuZy12YWxpZCIsdi5pc1ZhbGlkKSgibmctaW52YWxpZCIsdi5pc0ludmFsaWQpKCJuZy1w''@;'; put 'put ''ZW5kaW5nIix2LmlzUGVuZGluZykoIm5nLXN1Ym1pdHRlZCIsdi5pc1N1Ym1pdHRlZCl9LGZlYXR1cmVzOltEb119KSxkfSkoKTtjb25zdCBCeT0iVkFMSUQiLFZEPSJJTlZBTElEIixQeT0iUEVORElORyIsUms9IkRJU0FCTEVEIjtmdW5jdGlvbiBEVihkKXtyZXR1cm4oQmsoZCk/ZC52YWxp''@;'; put 'put ''ZGF0b3JzOmQpfHxudWxsfWZ1bmN0aW9uIExWKGQpe3JldHVybiBBcnJheS5pc0FycmF5KGQpP1NWKGQpOmR8fG51bGx9ZnVuY3Rpb24gakQoZCxnKXtyZXR1cm4oQmsoZyk/Zy5hc3luY1ZhbGlkYXRvcnM6ZCl8fG51bGx9ZnVuY3Rpb24gT1YoZCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZCk/''@;'; put 'put ''T2soZCk6ZHx8bnVsbH1mdW5jdGlvbiBCayhkKXtyZXR1cm4gbnVsbCE9ZCYmIUFycmF5LmlzQXJyYXkoZCkmJiJvYmplY3QiPT10eXBlb2YgZH1jbGFzcyBqWHtjb25zdHJ1Y3RvcihnLGgpe3RoaXMuX3BlbmRpbmdEaXJ0eT0hMSx0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3I9''@;'; put 'put ''ITEsdGhpcy5fcGVuZGluZ1RvdWNoZWQ9ITEsdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlPSgpPT57fSx0aGlzLl9wYXJlbnQ9bnVsbCx0aGlzLnByaXN0aW5lPSEwLHRoaXMudG91Y2hlZD0hMSx0aGlzLl9vbkRpc2FibGVkQ2hhbmdlPVtdLHRoaXMuX3Jhd1ZhbGlkYXRvcnM9Zyx0aGlzLl9y''@;'; put 'put ''YXdBc3luY1ZhbGlkYXRvcnM9aCx0aGlzLl9jb21wb3NlZFZhbGlkYXRvckZuPUxWKHRoaXMuX3Jhd1ZhbGlkYXRvcnMpLHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj1PVih0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpfWdldCB2YWxpZGF0b3IoKXtyZXR1cm4gdGhpcy5fY29tcG9z''@;'; put 'put ''ZWRWYWxpZGF0b3JGbn1zZXQgdmFsaWRhdG9yKGcpe3RoaXMuX3Jhd1ZhbGlkYXRvcnM9dGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbj1nfWdldCBhc3luY1ZhbGlkYXRvcigpe3JldHVybiB0aGlzLl9jb21wb3NlZEFzeW5jVmFsaWRhdG9yRm59c2V0IGFzeW5jVmFsaWRhdG9yKGcpe3RoaXMu''@;'; put 'put ''X3Jhd0FzeW5jVmFsaWRhdG9ycz10aGlzLl9jb21wb3NlZEFzeW5jVmFsaWRhdG9yRm49Z31nZXQgcGFyZW50KCl7cmV0dXJuIHRoaXMuX3BhcmVudH1nZXQgdmFsaWQoKXtyZXR1cm4gdGhpcy5zdGF0dXM9PT1CeX1nZXQgaW52YWxpZCgpe3JldHVybiB0aGlzLnN0YXR1cz09PVZEfWdldCBw''@;'; put 'put ''ZW5kaW5nKCl7cmV0dXJuIHRoaXMuc3RhdHVzPT1QeX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5zdGF0dXM9PT1Sa31nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLnN0YXR1cyE9PVJrfWdldCBkaXJ0eSgpe3JldHVybiF0aGlzLnByaXN0aW5lfWdldCB1bnRvdWNoZWQoKXtyZXR1cm4h''@;'; put 'put ''dGhpcy50b3VjaGVkfWdldCB1cGRhdGVPbigpe3JldHVybiB0aGlzLl91cGRhdGVPbj90aGlzLl91cGRhdGVPbjp0aGlzLnBhcmVudD90aGlzLnBhcmVudC51cGRhdGVPbjoiY2hhbmdlIn1zZXRWYWxpZGF0b3JzKGcpe3RoaXMuX3Jhd1ZhbGlkYXRvcnM9Zyx0aGlzLl9jb21wb3NlZFZhbGlk''@;'; put 'put ''YXRvckZuPUxWKGcpfXNldEFzeW5jVmFsaWRhdG9ycyhnKXt0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnM9Zyx0aGlzLl9jb21wb3NlZEFzeW5jVmFsaWRhdG9yRm49T1YoZyl9YWRkVmFsaWRhdG9ycyhnKXt0aGlzLnNldFZhbGlkYXRvcnMoaTgoZyx0aGlzLl9yYXdWYWxpZGF0b3JzKSl9YWRk''@;'; put 'put ''QXN5bmNWYWxpZGF0b3JzKGcpe3RoaXMuc2V0QXN5bmNWYWxpZGF0b3JzKGk4KGcsdGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzKSl9cmVtb3ZlVmFsaWRhdG9ycyhnKXt0aGlzLnNldFZhbGlkYXRvcnMoRlgoZyx0aGlzLl9yYXdWYWxpZGF0b3JzKSl9cmVtb3ZlQXN5bmNWYWxpZGF0b3JzKGcp''@;'; put 'put ''e3RoaXMuc2V0QXN5bmNWYWxpZGF0b3JzKEZYKGcsdGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzKSl9aGFzVmFsaWRhdG9yKGcpe3JldHVybiBQRCh0aGlzLl9yYXdWYWxpZGF0b3JzLGcpfWhhc0FzeW5jVmFsaWRhdG9yKGcpe3JldHVybiBQRCh0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMsZyl9''@;'; put 'put ''Y2xlYXJWYWxpZGF0b3JzKCl7dGhpcy52YWxpZGF0b3I9bnVsbH1jbGVhckFzeW5jVmFsaWRhdG9ycygpe3RoaXMuYXN5bmNWYWxpZGF0b3I9bnVsbH1tYXJrQXNUb3VjaGVkKGc9e30pe3RoaXMudG91Y2hlZD0hMCx0aGlzLl9wYXJlbnQmJiFnLm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQubWFy''@;'; put 'put ''a0FzVG91Y2hlZChnKX1tYXJrQWxsQXNUb3VjaGVkKCl7dGhpcy5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjohMH0pLHRoaXMuX2ZvckVhY2hDaGlsZChnPT5nLm1hcmtBbGxBc1RvdWNoZWQoKSl9bWFya0FzVW50b3VjaGVkKGc9e30pe3RoaXMudG91Y2hlZD0hMSx0aGlzLl9wZW5kaW5nVG91''@;'; put 'put ''Y2hlZD0hMSx0aGlzLl9mb3JFYWNoQ2hpbGQoaD0+e2gubWFya0FzVW50b3VjaGVkKHtvbmx5U2VsZjohMH0pfSksdGhpcy5fcGFyZW50JiYhZy5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVUb3VjaGVkKGcpfW1hcmtBc0RpcnR5KGc9e30pe3RoaXMucHJpc3RpbmU9ITEsdGhpcy5f''@;'; put 'put ''cGFyZW50JiYhZy5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Lm1hcmtBc0RpcnR5KGcpfW1hcmtBc1ByaXN0aW5lKGc9e30pe3RoaXMucHJpc3RpbmU9ITAsdGhpcy5fcGVuZGluZ0RpcnR5PSExLHRoaXMuX2ZvckVhY2hDaGlsZChoPT57aC5tYXJrQXNQcmlzdGluZSh7b25seVNlbGY6ITB9KX0p''@;'; put 'put ''LHRoaXMuX3BhcmVudCYmIWcub25seVNlbGYmJnRoaXMuX3BhcmVudC5fdXBkYXRlUHJpc3RpbmUoZyl9bWFya0FzUGVuZGluZyhnPXt9KXt0aGlzLnN0YXR1cz1QeSwhMSE9PWcuZW1pdEV2ZW50JiZ0aGlzLnN0YXR1c0NoYW5nZXMuZW1pdCh0aGlzLnN0YXR1cyksdGhpcy5fcGFyZW50JiYh''@;'; put 'put ''Zy5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Lm1hcmtBc1BlbmRpbmcoZyl9ZGlzYWJsZShnPXt9KXtjb25zdCBoPXRoaXMuX3BhcmVudE1hcmtlZERpcnR5KGcub25seVNlbGYpO3RoaXMuc3RhdHVzPVJrLHRoaXMuZXJyb3JzPW51bGwsdGhpcy5fZm9yRWFjaENoaWxkKHY9Pnt2LmRpc2FibGUo''@;'; put 'put ''T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGcpLHtvbmx5U2VsZjohMH0pKX0pLHRoaXMuX3VwZGF0ZVZhbHVlKCksITEhPT1nLmVtaXRFdmVudCYmKHRoaXMudmFsdWVDaGFuZ2VzLmVtaXQodGhpcy52YWx1ZSksdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5zdGF0dXMpKSx0''@;'; put 'put ''aGlzLl91cGRhdGVBbmNlc3RvcnMoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGcpLHtza2lwUHJpc3RpbmVDaGVjazpofSkpLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2UuZm9yRWFjaCh2PT52KCEwKSl9ZW5hYmxlKGc9e30pe2NvbnN0IGg9dGhpcy5fcGFyZW50TWFya2VkRGlydHko''@;'; put 'put ''Zy5vbmx5U2VsZik7dGhpcy5zdGF0dXM9QnksdGhpcy5fZm9yRWFjaENoaWxkKHY9Pnt2LmVuYWJsZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZykse29ubHlTZWxmOiEwfSkpfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6Zy5l''@;'; put 'put ''bWl0RXZlbnR9KSx0aGlzLl91cGRhdGVBbmNlc3RvcnMoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGcpLHtza2lwUHJpc3RpbmVDaGVjazpofSkpLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2UuZm9yRWFjaCh2PT52KCExKSl9X3VwZGF0ZUFuY2VzdG9ycyhnKXt0aGlzLl9wYXJlbnQm''@;'; put 'put ''JiFnLm9ubHlTZWxmJiYodGhpcy5fcGFyZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZyksZy5za2lwUHJpc3RpbmVDaGVja3x8dGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZSgpLHRoaXMuX3BhcmVudC5fdXBkYXRlVG91Y2hlZCgpKX1zZXRQYXJlbnQoZyl7dGhpcy5fcGFyZW50PWd9''@;'; put 'put ''Z2V0UmF3VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX11cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGc9e30pe3RoaXMuX3NldEluaXRpYWxTdGF0dXMoKSx0aGlzLl91cGRhdGVWYWx1ZSgpLHRoaXMuZW5hYmxlZCYmKHRoaXMuX2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uKCksdGhpcy5lcnJv''@;'; put 'put ''cnM9dGhpcy5fcnVuVmFsaWRhdG9yKCksdGhpcy5zdGF0dXM9dGhpcy5fY2FsY3VsYXRlU3RhdHVzKCksKHRoaXMuc3RhdHVzPT09Qnl8fHRoaXMuc3RhdHVzPT09UHkpJiZ0aGlzLl9ydW5Bc3luY1ZhbGlkYXRvcihnLmVtaXRFdmVudCkpLCExIT09Zy5lbWl0RXZlbnQmJih0aGlzLnZhbHVl''@;'; put 'put ''Q2hhbmdlcy5lbWl0KHRoaXMudmFsdWUpLHRoaXMuc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuc3RhdHVzKSksdGhpcy5fcGFyZW50JiYhZy5vbmx5U2VsZiYmdGhpcy5fcGFyZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZyl9X3VwZGF0ZVRyZWVWYWxpZGl0eShnPXtlbWl0RXZlbnQ6ITB9''@;'; put 'put ''KXt0aGlzLl9mb3JFYWNoQ2hpbGQoaD0+aC5fdXBkYXRlVHJlZVZhbGlkaXR5KGcpKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDpnLmVtaXRFdmVudH0pfV9zZXRJbml0aWFsU3RhdHVzKCl7dGhpcy5zdGF0dXM9dGhpcy5fYWxsQ29udHJvbHNE''@;'; put 'put ''aXNhYmxlZCgpP1JrOkJ5fV9ydW5WYWxpZGF0b3IoKXtyZXR1cm4gdGhpcy52YWxpZGF0b3I/dGhpcy52YWxpZGF0b3IodGhpcyk6bnVsbH1fcnVuQXN5bmNWYWxpZGF0b3IoZyl7aWYodGhpcy5hc3luY1ZhbGlkYXRvcil7dGhpcy5zdGF0dXM9UHksdGhpcy5faGFzT3duUGVuZGluZ0FzeW5j''@;'; put 'put ''VmFsaWRhdG9yPSEwO2NvbnN0IGg9X1YodGhpcy5hc3luY1ZhbGlkYXRvcih0aGlzKSk7dGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uPWguc3Vic2NyaWJlKHY9Pnt0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3I9ITEsdGhpcy5zZXRFcnJvcnModix7ZW1pdEV2ZW50''@;'; put 'put ''Omd9KX0pfX1fY2FuY2VsRXhpc3RpbmdTdWJzY3JpcHRpb24oKXt0aGlzLl9hc3luY1ZhbGlkYXRpb25TdWJzY3JpcHRpb24mJih0aGlzLl9hc3luY1ZhbGlkYXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3I9ITEpfXNldEVy''@;'; put 'put ''cm9ycyhnLGg9e30pe3RoaXMuZXJyb3JzPWcsdGhpcy5fdXBkYXRlQ29udHJvbHNFcnJvcnMoITEhPT1oLmVtaXRFdmVudCl9Z2V0KGcpe2xldCBoPWc7cmV0dXJuIG51bGw9PWh8fChBcnJheS5pc0FycmF5KGgpfHwoaD1oLnNwbGl0KCIuIikpLDA9PT1oLmxlbmd0aCk/bnVsbDpoLnJlZHVj''@;'; put 'put ''ZSgodix5KT0+diYmdi5fZmluZCh5KSx0aGlzKX1nZXRFcnJvcihnLGgpe2NvbnN0IHY9aD90aGlzLmdldChoKTp0aGlzO3JldHVybiB2JiZ2LmVycm9ycz92LmVycm9yc1tnXTpudWxsfWhhc0Vycm9yKGcsaCl7cmV0dXJuISF0aGlzLmdldEVycm9yKGcsaCl9Z2V0IHJvb3QoKXtsZXQgZz10''@;'; put 'put ''aGlzO2Zvcig7Zy5fcGFyZW50OylnPWcuX3BhcmVudDtyZXR1cm4gZ31fdXBkYXRlQ29udHJvbHNFcnJvcnMoZyl7dGhpcy5zdGF0dXM9dGhpcy5fY2FsY3VsYXRlU3RhdHVzKCksZyYmdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5zdGF0dXMpLHRoaXMuX3BhcmVudCYmdGhpcy5fcGFy''@;'; put 'put ''ZW50Ll91cGRhdGVDb250cm9sc0Vycm9ycyhnKX1faW5pdE9ic2VydmFibGVzKCl7dGhpcy52YWx1ZUNoYW5nZXM9bmV3IGFyLHRoaXMuc3RhdHVzQ2hhbmdlcz1uZXcgYXJ9X2NhbGN1bGF0ZVN0YXR1cygpe3JldHVybiB0aGlzLl9hbGxDb250cm9sc0Rpc2FibGVkKCk/Ums6dGhpcy5lcnJv''@;'; put 'put ''cnM/VkQ6dGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yfHx0aGlzLl9hbnlDb250cm9sc0hhdmVTdGF0dXMoUHkpP1B5OnRoaXMuX2FueUNvbnRyb2xzSGF2ZVN0YXR1cyhWRCk/VkQ6Qnl9X2FueUNvbnRyb2xzSGF2ZVN0YXR1cyhnKXtyZXR1cm4gdGhpcy5fYW55Q29udHJvbHMo''@;'; put 'put ''aD0+aC5zdGF0dXM9PT1nKX1fYW55Q29udHJvbHNEaXJ0eSgpe3JldHVybiB0aGlzLl9hbnlDb250cm9scyhnPT5nLmRpcnR5KX1fYW55Q29udHJvbHNUb3VjaGVkKCl7cmV0dXJuIHRoaXMuX2FueUNvbnRyb2xzKGc9PmcudG91Y2hlZCl9X3VwZGF0ZVByaXN0aW5lKGc9e30pe3RoaXMucHJp''@;'; put 'put ''c3RpbmU9IXRoaXMuX2FueUNvbnRyb2xzRGlydHkoKSx0aGlzLl9wYXJlbnQmJiFnLm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVByaXN0aW5lKGcpfV91cGRhdGVUb3VjaGVkKGc9e30pe3RoaXMudG91Y2hlZD10aGlzLl9hbnlDb250cm9sc1RvdWNoZWQoKSx0aGlzLl9wYXJlbnQm''@;'; put 'put ''JiFnLm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQoZyl9X3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKGcpe3RoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT1nfV9zZXRVcGRhdGVTdHJhdGVneShnKXtCayhnKSYmbnVsbCE9Zy51cGRhdGVPbiYmKHRoaXMuX3VwZGF0ZU9u''@;'; put 'put ''PWcudXBkYXRlT24pfV9wYXJlbnRNYXJrZWREaXJ0eShnKXtyZXR1cm4hZyYmISghdGhpcy5fcGFyZW50fHwhdGhpcy5fcGFyZW50LmRpcnR5KSYmIXRoaXMuX3BhcmVudC5fYW55Q29udHJvbHNEaXJ0eSgpfV9maW5kKGcpe3JldHVybiBudWxsfX1jbGFzcyB6RCBleHRlbmRzIGpYe2NvbnN0''@;'; put 'put ''cnVjdG9yKGcsaCx2KXtzdXBlcihEVihoKSxqRCh2LGgpKSx0aGlzLmNvbnRyb2xzPWcsdGhpcy5faW5pdE9ic2VydmFibGVzKCksdGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koaCksdGhpcy5fc2V0VXBDb250cm9scygpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAs''@;'; put 'put ''ZW1pdEV2ZW50OiEhdGhpcy5hc3luY1ZhbGlkYXRvcn0pfXJlZ2lzdGVyQ29udHJvbChnLGgpe3JldHVybiB0aGlzLmNvbnRyb2xzW2ddP3RoaXMuY29udHJvbHNbZ106KHRoaXMuY29udHJvbHNbZ109aCxoLnNldFBhcmVudCh0aGlzKSxoLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0''@;'; put 'put ''aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpLGgpfWFkZENvbnRyb2woZyxoLHY9e30pe3RoaXMucmVnaXN0ZXJDb250cm9sKGcsaCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6di5lbWl0RXZlbnR9KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1yZW1vdmVDb250''@;'; put 'put ''cm9sKGcsaD17fSl7dGhpcy5jb250cm9sc1tnXSYmdGhpcy5jb250cm9sc1tnXS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoKCk9Pnt9KSxkZWxldGUgdGhpcy5jb250cm9sc1tnXSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDpoLmVtaXRFdmVudH0pLHRoaXMu''@;'; put 'put ''X29uQ29sbGVjdGlvbkNoYW5nZSgpfXNldENvbnRyb2woZyxoLHY9e30pe3RoaXMuY29udHJvbHNbZ10mJnRoaXMuY29udHJvbHNbZ10uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgpPT57fSksZGVsZXRlIHRoaXMuY29udHJvbHNbZ10saCYmdGhpcy5yZWdpc3RlckNvbnRyb2woZyxo''@;'; put 'put ''KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDp2LmVtaXRFdmVudH0pLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfWNvbnRhaW5zKGcpe3JldHVybiB0aGlzLmNvbnRyb2xzLmhhc093blByb3BlcnR5KGcpJiZ0aGlzLmNvbnRyb2xzW2ddLmVuYWJsZWR9c2V0VmFs''@;'; put 'put ''dWUoZyxoPXt9KXsoZnVuY3Rpb24gWkQoZCxnLGgpe2QuX2ZvckVhY2hDaGlsZCgodix5KT0+e2lmKHZvaWQgMD09PWhbeV0pdGhyb3cgbmV3IGVuKDEwMDIsIiIpfSl9KSh0aGlzLDAsZyksT2JqZWN0LmtleXMoZykuZm9yRWFjaCh2PT57KGZ1bmN0aW9uIFZYKGQsZyxoKXtjb25zdCB2PWQu''@;'; put 'put ''Y29udHJvbHM7aWYoIShnP09iamVjdC5rZXlzKHYpOnYpLmxlbmd0aCl0aHJvdyBuZXcgZW4oMWUzLCIiKTtpZighdltoXSl0aHJvdyBuZXcgZW4oMTAwMSwiIil9KSh0aGlzLCEwLHYpLHRoaXMuY29udHJvbHNbdl0uc2V0VmFsdWUoZ1t2XSx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmguZW1p''@;'; put 'put ''dEV2ZW50fSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoaCl9cGF0Y2hWYWx1ZShnLGg9e30pe251bGwhPWcmJihPYmplY3Qua2V5cyhnKS5mb3JFYWNoKHY9Pntjb25zdCB5PXRoaXMuY29udHJvbHNbdl07eSYmeS5wYXRjaFZhbHVlKGdbdl0se29ubHlTZWxmOiEwLGVtaXRFdmVu''@;'; put 'put ''dDpoLmVtaXRFdmVudH0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGgpKX1yZXNldChnPXt9LGg9e30pe3RoaXMuX2ZvckVhY2hDaGlsZCgodix5KT0+e3YucmVzZXQoZ1t5XSx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmguZW1pdEV2ZW50fSl9KSx0aGlzLl91cGRhdGVQcmlzdGlu''@;'; put 'put ''ZShoKSx0aGlzLl91cGRhdGVUb3VjaGVkKGgpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShoKX1nZXRSYXdWYWx1ZSgpe3JldHVybiB0aGlzLl9yZWR1Y2VDaGlsZHJlbih7fSwoZyxoLHYpPT4oZ1t2XT1oLmdldFJhd1ZhbHVlKCksZykpfV9zeW5jUGVuZGluZ0NvbnRyb2xzKCl7bGV0''@;'; put 'put ''IGc9dGhpcy5fcmVkdWNlQ2hpbGRyZW4oITEsKGgsdik9PiEhdi5fc3luY1BlbmRpbmdDb250cm9scygpfHxoKTtyZXR1cm4gZyYmdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMH0pLGd9X2ZvckVhY2hDaGlsZChnKXtPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5m''@;'; put 'put ''b3JFYWNoKGg9Pntjb25zdCB2PXRoaXMuY29udHJvbHNbaF07diYmZyh2LGgpfSl9X3NldFVwQ29udHJvbHMoKXt0aGlzLl9mb3JFYWNoQ2hpbGQoZz0+e2cuc2V0UGFyZW50KHRoaXMpLGcuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSl9KX1f''@;'; put 'put ''dXBkYXRlVmFsdWUoKXt0aGlzLnZhbHVlPXRoaXMuX3JlZHVjZVZhbHVlKCl9X2FueUNvbnRyb2xzKGcpe2Zvcihjb25zdFtoLHZdb2YgT2JqZWN0LmVudHJpZXModGhpcy5jb250cm9scykpaWYodGhpcy5jb250YWlucyhoKSYmZyh2KSlyZXR1cm4hMDtyZXR1cm4hMX1fcmVkdWNlVmFsdWUo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5fcmVkdWNlQ2hpbGRyZW4oe30sKGgsdix5KT0+KCh2LmVuYWJsZWR8fHRoaXMuZGlzYWJsZWQpJiYoaFt5XT12LnZhbHVlKSxoKSl9X3JlZHVjZUNoaWxkcmVuKGcsaCl7bGV0IHY9ZztyZXR1cm4gdGhpcy5fZm9yRWFjaENoaWxkKCh5LEMpPT57dj1oKHYseSxDKX0p''@;'; put 'put ''LHZ9X2FsbENvbnRyb2xzRGlzYWJsZWQoKXtmb3IoY29uc3QgZyBvZiBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKSlpZih0aGlzLmNvbnRyb2xzW2ddLmVuYWJsZWQpcmV0dXJuITE7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpLmxlbmd0aD4wfHx0aGlzLmRpc2FibGVkfV9m''@;'; put 'put ''aW5kKGcpe3JldHVybiB0aGlzLmNvbnRyb2xzLmhhc093blByb3BlcnR5KGcpP3RoaXMuY29udHJvbHNbZ106bnVsbH19ZnVuY3Rpb24gRnkoZCxnKXt2YXIgaCx2O0ZrKGQsZyksZy52YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUoZC52YWx1ZSksZC5kaXNhYmxlZCYmKG51bGw9PT0odj0oaD1n''@;'; put 'put ''LnZhbHVlQWNjZXNzb3IpLnNldERpc2FibGVkU3RhdGUpfHx2b2lkIDA9PT12fHx2LmNhbGwoaCwhMCkpLGZ1bmN0aW9uIGIyZShkLGcpe2cudmFsdWVBY2Nlc3Nvci5yZWdpc3Rlck9uQ2hhbmdlKGg9PntkLl9wZW5kaW5nVmFsdWU9aCxkLl9wZW5kaW5nQ2hhbmdlPSEwLGQuX3BlbmRpbmdE''@;'; put 'put ''aXJ0eT0hMCwiY2hhbmdlIj09PWQudXBkYXRlT24mJkdYKGQsZyl9KX0oZCxnKSxmdW5jdGlvbiBDMmUoZCxnKXtjb25zdCBoPSh2LHkpPT57Zy52YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUodikseSYmZy52aWV3VG9Nb2RlbFVwZGF0ZSh2KX07ZC5yZWdpc3Rlck9uQ2hhbmdlKGgpLGcuX3Jl''@;'; put 'put ''Z2lzdGVyT25EZXN0cm95KCgpPT57ZC5fdW5yZWdpc3Rlck9uQ2hhbmdlKGgpfSl9KGQsZyksZnVuY3Rpb24gXzJlKGQsZyl7Zy52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25Ub3VjaGVkKCgpPT57ZC5fcGVuZGluZ1RvdWNoZWQ9ITAsImJsdXIiPT09ZC51cGRhdGVPbiYmZC5fcGVuZGluZ0No''@;'; put 'put ''YW5nZSYmR1goZCxnKSwic3VibWl0IiE9PWQudXBkYXRlT24mJmQubWFya0FzVG91Y2hlZCgpfSl9KGQsZyksZnVuY3Rpb24gelgoZCxnKXtpZihnLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSl7Y29uc3QgaD12PT57Zy52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUodil9''@;'; put 'put ''O2QucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKGgpLGcuX3JlZ2lzdGVyT25EZXN0cm95KCgpPT57ZC5fdW5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UoaCl9KX19KGQsZyl9ZnVuY3Rpb24gVTcoZCxnKXtkLmZvckVhY2goaD0+e2gucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSYmaC5yZWdp''@;'; put 'put ''c3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGcpfSl9ZnVuY3Rpb24gRmsoZCxnKXtjb25zdCBoPWZ1bmN0aW9uIEJYKGQpe3JldHVybiBkLl9yYXdWYWxpZGF0b3JzfShkKTtudWxsIT09Zy52YWxpZGF0b3I/ZC5zZXRWYWxpZGF0b3JzKFJYKGgsZy52YWxpZGF0b3IpKToiZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YgaCYmZC5zZXRWYWxpZGF0b3JzKFtoXSk7Y29uc3Qgdj1mdW5jdGlvbiBQWChkKXtyZXR1cm4gZC5fcmF3QXN5bmNWYWxpZGF0b3JzfShkKTtudWxsIT09Zy5hc3luY1ZhbGlkYXRvcj9kLnNldEFzeW5jVmFsaWRhdG9ycyhSWCh2LGcuYXN5bmNWYWxpZGF0b3IpKToiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgdiYmZC5zZXRBc3luY1ZhbGlkYXRvcnMoW3ZdKTtjb25zdCB5PSgpPT5kLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtVNyhnLl9yYXdWYWxpZGF0b3JzLHkpLFU3KGcuX3Jhd0FzeW5jVmFsaWRhdG9ycyx5KX1mdW5jdGlvbiBHWChkLGcpe2QuX3BlbmRpbmdEaXJ0eSYmZC5tYXJr''@;'; put 'put ''QXNEaXJ0eSgpLGQuc2V0VmFsdWUoZC5fcGVuZGluZ1ZhbHVlLHtlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6ITF9KSxnLnZpZXdUb01vZGVsVXBkYXRlKGQuX3BlbmRpbmdWYWx1ZSksZC5fcGVuZGluZ0NoYW5nZT0hMX1jb25zdCBVWD17cHJvdmlkZTpMZix1c2VFeGlzdGluZzpfbigoKT0+TGMp''@;'; put 'put ''fSxWeT0oKCk9PlByb21pc2UucmVzb2x2ZShudWxsKSkoKTtsZXQgTGM9KCgpPT57Y2xhc3MgZCBleHRlbmRzIExme2NvbnN0cnVjdG9yKGgsdil7c3VwZXIoKSx0aGlzLnN1Ym1pdHRlZD0hMSx0aGlzLl9kaXJlY3RpdmVzPW5ldyBTZXQsdGhpcy5uZ1N1Ym1pdD1uZXcgYXIsdGhpcy5mb3Jt''@;'; put 'put ''PW5ldyB6RCh7fSxTVihoKSxPayh2KSl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koKX1nZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiB0aGlzfWdldCBjb250cm9sKCl7cmV0dXJuIHRoaXMuZm9ybX1nZXQgcGF0aCgpe3JldHVybltdfWdldCBjb250cm9scygp''@;'; put 'put ''e3JldHVybiB0aGlzLmZvcm0uY29udHJvbHN9YWRkQ29udHJvbChoKXtWeS50aGVuKCgpPT57Y29uc3Qgdj10aGlzLl9maW5kQ29udGFpbmVyKGgucGF0aCk7aC5jb250cm9sPXYucmVnaXN0ZXJDb250cm9sKGgubmFtZSxoLmNvbnRyb2wpLEZ5KGguY29udHJvbCxoKSxoLmNvbnRyb2wudXBk''@;'; put 'put ''YXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSksdGhpcy5fZGlyZWN0aXZlcy5hZGQoaCl9KX1nZXRDb250cm9sKGgpe3JldHVybiB0aGlzLmZvcm0uZ2V0KGgucGF0aCl9cmVtb3ZlQ29udHJvbChoKXtWeS50aGVuKCgpPT57Y29uc3Qgdj10aGlzLl9maW5kQ29udGFpbmVyKGgu''@;'; put 'put ''cGF0aCk7diYmdi5yZW1vdmVDb250cm9sKGgubmFtZSksdGhpcy5fZGlyZWN0aXZlcy5kZWxldGUoaCl9KX1hZGRGb3JtR3JvdXAoaCl7VnkudGhlbigoKT0+e2NvbnN0IHY9dGhpcy5fZmluZENvbnRhaW5lcihoLnBhdGgpLHk9bmV3IHpEKHt9KTsoZnVuY3Rpb24gV1goZCxnKXtGayhkLGcp''@;'; put 'put ''fSkoeSxoKSx2LnJlZ2lzdGVyQ29udHJvbChoLm5hbWUseSkseS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX0pfXJlbW92ZUZvcm1Hcm91cChoKXtWeS50aGVuKCgpPT57Y29uc3Qgdj10aGlzLl9maW5kQ29udGFpbmVyKGgucGF0aCk7diYmdi5yZW1vdmVDb250cm9s''@;'; put 'put ''KGgubmFtZSl9KX1nZXRGb3JtR3JvdXAoaCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQoaC5wYXRoKX11cGRhdGVNb2RlbChoLHYpe1Z5LnRoZW4oKCk9Pnt0aGlzLmZvcm0uZ2V0KGgucGF0aCkuc2V0VmFsdWUodil9KX1zZXRWYWx1ZShoKXt0aGlzLmNvbnRyb2wuc2V0VmFsdWUoaCl9b25TdWJt''@;'; put 'put ''aXQoaCl7cmV0dXJuIHRoaXMuc3VibWl0dGVkPSEwLGZ1bmN0aW9uIEZWKGQsZyl7ZC5fc3luY1BlbmRpbmdDb250cm9scygpLGcuZm9yRWFjaChoPT57Y29uc3Qgdj1oLmNvbnRyb2w7InN1Ym1pdCI9PT12LnVwZGF0ZU9uJiZ2Ll9wZW5kaW5nQ2hhbmdlJiYoaC52aWV3VG9Nb2RlbFVwZGF0''@;'; put 'put ''ZSh2Ll9wZW5kaW5nVmFsdWUpLHYuX3BlbmRpbmdDaGFuZ2U9ITEpfSl9KHRoaXMuZm9ybSx0aGlzLl9kaXJlY3RpdmVzKSx0aGlzLm5nU3VibWl0LmVtaXQoaCksITF9b25SZXNldCgpe3RoaXMucmVzZXRGb3JtKCl9cmVzZXRGb3JtKGgpe3RoaXMuZm9ybS5yZXNldChoKSx0aGlzLnN1Ym1p''@;'; put 'put ''dHRlZD0hMX1fc2V0VXBkYXRlU3RyYXRlZ3koKXt0aGlzLm9wdGlvbnMmJm51bGwhPXRoaXMub3B0aW9ucy51cGRhdGVPbiYmKHRoaXMuZm9ybS5fdXBkYXRlT249dGhpcy5vcHRpb25zLnVwZGF0ZU9uKX1fZmluZENvbnRhaW5lcihoKXtyZXR1cm4gaC5wb3AoKSxoLmxlbmd0aD90aGlzLmZv''@;'; put 'put ''cm0uZ2V0KGgpOnRoaXMuZm9ybX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoS2MsMTApLEt0KGhnLDEwKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbImZvcm0iLDMsIm5nTm9Gb3JtIiwiIiwzLCJmb3JtR3JvdXAiLCIi''@;'; put 'put ''XSxbIm5nLWZvcm0iXSxbIiIsIm5nRm9ybSIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJkduKCJzdWJtaXQiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uU3VibWl0KEMpfSkoInJlc2V0IixmdW5jdGlvbigpe3JldHVybiB2Lm9uUmVzZXQoKX0pfSxpbnB1dHM6e29wdGlv''@;'; put 'put ''bnM6WyJuZ0Zvcm1PcHRpb25zIiwib3B0aW9ucyJdfSxvdXRwdXRzOntuZ1N1Ym1pdDoibmdTdWJtaXQifSxleHBvcnRBczpbIm5nRm9ybSJdLGZlYXR1cmVzOltobyhbVVhdKSxEb119KSxkfSkoKTtmdW5jdGlvbiBIVihkLGcpe2NvbnN0IGg9ZC5pbmRleE9mKGcpO2g+LTEmJmQuc3BsaWNl''@;'; put 'put ''KGgsMSl9ZnVuY3Rpb24gSGsoZCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBkJiZudWxsIT09ZCYmMj09PU9iamVjdC5rZXlzKGQpLmxlbmd0aCYmInZhbHVlImluIGQmJiJkaXNhYmxlZCJpbiBkfWNvbnN0IE5rPWNsYXNzIGV4dGVuZHMgalh7Y29uc3RydWN0b3IoZz1udWxsLGgsdil7c3Vw''@;'; put 'put ''ZXIoRFYoaCksakQodixoKSksdGhpcy5kZWZhdWx0VmFsdWU9bnVsbCx0aGlzLl9vbkNoYW5nZT1bXSx0aGlzLl9wZW5kaW5nQ2hhbmdlPSExLHRoaXMuX2FwcGx5Rm9ybVN0YXRlKGcpLHRoaXMuX3NldFVwZGF0ZVN0cmF0ZWd5KGgpLHRoaXMuX2luaXRPYnNlcnZhYmxlcygpLHRoaXMudXBk''@;'; put 'put ''YXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiEhdGhpcy5hc3luY1ZhbGlkYXRvcn0pLEJrKGgpJiYoaC5ub25OdWxsYWJsZXx8aC5pbml0aWFsVmFsdWVJc0RlZmF1bHQpJiYodGhpcy5kZWZhdWx0VmFsdWU9SGsoZyk/Zy52YWx1ZTpnKX1zZXRWYWx1ZShnLGg9''@;'; put 'put ''e30pe3RoaXMudmFsdWU9dGhpcy5fcGVuZGluZ1ZhbHVlPWcsdGhpcy5fb25DaGFuZ2UubGVuZ3RoJiYhMSE9PWguZW1pdE1vZGVsVG9WaWV3Q2hhbmdlJiZ0aGlzLl9vbkNoYW5nZS5mb3JFYWNoKHY9PnYodGhpcy52YWx1ZSwhMSE9PWguZW1pdFZpZXdUb01vZGVsQ2hhbmdlKSksdGhpcy51''@;'; put 'put ''cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGgpfXBhdGNoVmFsdWUoZyxoPXt9KXt0aGlzLnNldFZhbHVlKGcsaCl9cmVzZXQoZz10aGlzLmRlZmF1bHRWYWx1ZSxoPXt9KXt0aGlzLl9hcHBseUZvcm1TdGF0ZShnKSx0aGlzLm1hcmtBc1ByaXN0aW5lKGgpLHRoaXMubWFya0FzVW50b3VjaGVkKGgp''@;'; put 'put ''LHRoaXMuc2V0VmFsdWUodGhpcy52YWx1ZSxoKSx0aGlzLl9wZW5kaW5nQ2hhbmdlPSExfV91cGRhdGVWYWx1ZSgpe31fYW55Q29udHJvbHMoZyl7cmV0dXJuITF9X2FsbENvbnRyb2xzRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZH1yZWdpc3Rlck9uQ2hhbmdlKGcpe3RoaXMuX29u''@;'; put 'put ''Q2hhbmdlLnB1c2goZyl9X3VucmVnaXN0ZXJPbkNoYW5nZShnKXtIVih0aGlzLl9vbkNoYW5nZSxnKX1yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UoZyl7dGhpcy5fb25EaXNhYmxlZENoYW5nZS5wdXNoKGcpfV91bnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZShnKXtIVih0aGlzLl9vbkRpc2Fi''@;'; put 'put ''bGVkQ2hhbmdlLGcpfV9mb3JFYWNoQ2hpbGQoZyl7fV9zeW5jUGVuZGluZ0NvbnRyb2xzKCl7cmV0dXJuISgic3VibWl0IiE9PXRoaXMudXBkYXRlT258fCh0aGlzLl9wZW5kaW5nRGlydHkmJnRoaXMubWFya0FzRGlydHkoKSx0aGlzLl9wZW5kaW5nVG91Y2hlZCYmdGhpcy5tYXJrQXNUb3Vj''@;'; put 'put ''aGVkKCksIXRoaXMuX3BlbmRpbmdDaGFuZ2UpfHwodGhpcy5zZXRWYWx1ZSh0aGlzLl9wZW5kaW5nVmFsdWUse29ubHlTZWxmOiEwLGVtaXRNb2RlbFRvVmlld0NoYW5nZTohMX0pLDApKX1fYXBwbHlGb3JtU3RhdGUoZyl7SGsoZyk/KHRoaXMudmFsdWU9dGhpcy5fcGVuZGluZ1ZhbHVlPWcu''@;'; put 'put ''dmFsdWUsZy5kaXNhYmxlZD90aGlzLmRpc2FibGUoe29ubHlTZWxmOiEwLGVtaXRFdmVudDohMX0pOnRoaXMuZW5hYmxlKHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KSk6dGhpcy52YWx1ZT10aGlzLl9wZW5kaW5nVmFsdWU9Z319LEUyZT17cHJvdmlkZTpEZix1c2VFeGlzdGluZzpfbigo''@;'; put 'put ''KT0+SXMpfSxRNz0oKCk9PlByb21pc2UucmVzb2x2ZShudWxsKSkoKTtsZXQgSXM9KCgpPT57Y2xhc3MgZCBleHRlbmRzIERme2NvbnN0cnVjdG9yKGgsdix5LEMsSSl7c3VwZXIoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1JLHRoaXMuY29udHJvbD1uZXcgTmssdGhpcy5fcmVnaXN0ZXJl''@;'; put 'put ''ZD0hMSx0aGlzLnVwZGF0ZT1uZXcgYXIsdGhpcy5fcGFyZW50PWgsdGhpcy5fc2V0VmFsaWRhdG9ycyh2KSx0aGlzLl9zZXRBc3luY1ZhbGlkYXRvcnMoeSksdGhpcy52YWx1ZUFjY2Vzc29yPWZ1bmN0aW9uIE55KGQsZyl7aWYoIWcpcmV0dXJuIG51bGw7bGV0IGgsdix5O3JldHVybiBBcnJh''@;'; put 'put ''eS5pc0FycmF5KGcpLGcuZm9yRWFjaChDPT57Qy5jb25zdHJ1Y3Rvcj09PW0xP2g9QzpmdW5jdGlvbiBQVihkKXtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGQuY29uc3RydWN0b3IpPT09Rzd9KEMpP3Y9Qzp5PUN9KSx5fHx2fHxofHxudWxsfSgwLEMpfW5nT25DaGFuZ2VzKGgpe2lm''@;'; put 'put ''KHRoaXMuX2NoZWNrRm9yRXJyb3JzKCksIXRoaXMuX3JlZ2lzdGVyZWR8fCJuYW1lImluIGgpe2lmKHRoaXMuX3JlZ2lzdGVyZWQmJih0aGlzLl9jaGVja05hbWUoKSx0aGlzLmZvcm1EaXJlY3RpdmUpKXtjb25zdCB2PWgubmFtZS5wcmV2aW91c1ZhbHVlO3RoaXMuZm9ybURpcmVjdGl2ZS5y''@;'; put 'put ''ZW1vdmVDb250cm9sKHtuYW1lOnYscGF0aDp0aGlzLl9nZXRQYXRoKHYpfSl9dGhpcy5fc2V0VXBDb250cm9sKCl9ImlzRGlzYWJsZWQiaW4gaCYmdGhpcy5fdXBkYXRlRGlzYWJsZWQoaCksZnVuY3Rpb24gQlYoZCxnKXtpZighZC5oYXNPd25Qcm9wZXJ0eSgibW9kZWwiKSlyZXR1cm4hMTtj''@;'; put 'put ''b25zdCBoPWQubW9kZWw7cmV0dXJuISFoLmlzRmlyc3RDaGFuZ2UoKXx8IU9iamVjdC5pcyhnLGguY3VycmVudFZhbHVlKX0oaCx0aGlzLnZpZXdNb2RlbCkmJih0aGlzLl91cGRhdGVWYWx1ZSh0aGlzLm1vZGVsKSx0aGlzLnZpZXdNb2RlbD10aGlzLm1vZGVsKX1uZ09uRGVzdHJveSgpe3Ro''@;'; put 'put ''aXMuZm9ybURpcmVjdGl2ZSYmdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUNvbnRyb2wodGhpcyl9Z2V0IHBhdGgoKXtyZXR1cm4gdGhpcy5fZ2V0UGF0aCh0aGlzLm5hbWUpfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2''@;'; put 'put ''ZTpudWxsfXZpZXdUb01vZGVsVXBkYXRlKGgpe3RoaXMudmlld01vZGVsPWgsdGhpcy51cGRhdGUuZW1pdChoKX1fc2V0VXBDb250cm9sKCl7dGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koKSx0aGlzLl9pc1N0YW5kYWxvbmUoKT90aGlzLl9zZXRVcFN0YW5kYWxvbmUoKTp0aGlzLmZvcm1EaXJl''@;'; put 'put ''Y3RpdmUuYWRkQ29udHJvbCh0aGlzKSx0aGlzLl9yZWdpc3RlcmVkPSEwfV9zZXRVcGRhdGVTdHJhdGVneSgpe3RoaXMub3B0aW9ucyYmbnVsbCE9dGhpcy5vcHRpb25zLnVwZGF0ZU9uJiYodGhpcy5jb250cm9sLl91cGRhdGVPbj10aGlzLm9wdGlvbnMudXBkYXRlT24pfV9pc1N0YW5kYWxv''@;'; put 'put ''bmUoKXtyZXR1cm4hdGhpcy5fcGFyZW50fHwhKCF0aGlzLm9wdGlvbnN8fCF0aGlzLm9wdGlvbnMuc3RhbmRhbG9uZSl9X3NldFVwU3RhbmRhbG9uZSgpe0Z5KHRoaXMuY29udHJvbCx0aGlzKSx0aGlzLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9X2No''@;'; put 'put ''ZWNrRm9yRXJyb3JzKCl7dGhpcy5faXNTdGFuZGFsb25lKCl8fHRoaXMuX2NoZWNrUGFyZW50VHlwZSgpLHRoaXMuX2NoZWNrTmFtZSgpfV9jaGVja1BhcmVudFR5cGUoKXt9X2NoZWNrTmFtZSgpe3RoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLm5hbWUmJih0aGlzLm5hbWU9dGhpcy5vcHRp''@;'; put 'put ''b25zLm5hbWUpLHRoaXMuX2lzU3RhbmRhbG9uZSgpfV91cGRhdGVWYWx1ZShoKXtRNy50aGVuKCgpPT57dmFyIHY7dGhpcy5jb250cm9sLnNldFZhbHVlKGgse2VtaXRWaWV3VG9Nb2RlbENoYW5nZTohMX0pLG51bGw9PT0odj10aGlzLl9jaGFuZ2VEZXRlY3RvclJlZil8fHZvaWQgMD09PXZ8''@;'; put 'put ''fHYubWFya0ZvckNoZWNrKCl9KX1fdXBkYXRlRGlzYWJsZWQoaCl7Y29uc3Qgdj1oLmlzRGlzYWJsZWQuY3VycmVudFZhbHVlLHk9MCE9PXYmJkg2KHYpO1E3LnRoZW4oKCk9Pnt2YXIgQzt5JiYhdGhpcy5jb250cm9sLmRpc2FibGVkP3RoaXMuY29udHJvbC5kaXNhYmxlKCk6IXkmJnRoaXMu''@;'; put 'put ''Y29udHJvbC5kaXNhYmxlZCYmdGhpcy5jb250cm9sLmVuYWJsZSgpLG51bGw9PT0oQz10aGlzLl9jaGFuZ2VEZXRlY3RvclJlZil8fHZvaWQgMD09PUN8fEMubWFya0ZvckNoZWNrKCl9KX1fZ2V0UGF0aChoKXtyZXR1cm4gdGhpcy5fcGFyZW50P2Z1bmN0aW9uIFBrKGQsZyl7cmV0dXJuWy4u''@;'; put 'put ''LmcucGF0aCxkXX0oaCx0aGlzLl9wYXJlbnQpOltoXX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoTGYsOSksS3QoS2MsMTApLEt0KGhnLDEwKSxLdChncCwxMCksS3QoZDEsOCkpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpb''@;'; put 'put ''WyIiLCJuZ01vZGVsIiwiIiwzLCJmb3JtQ29udHJvbE5hbWUiLCIiLDMsImZvcm1Db250cm9sIiwiIl1dLGlucHV0czp7bmFtZToibmFtZSIsaXNEaXNhYmxlZDpbImRpc2FibGVkIiwiaXNEaXNhYmxlZCJdLG1vZGVsOlsibmdNb2RlbCIsIm1vZGVsIl0sb3B0aW9uczpbIm5nTW9kZWxPcHRp''@;'; put 'put ''b25zIiwib3B0aW9ucyJdfSxvdXRwdXRzOnt1cGRhdGU6Im5nTW9kZWxDaGFuZ2UifSxleHBvcnRBczpbIm5nTW9kZWwiXSxmZWF0dXJlczpbaG8oW0UyZV0pLERvLEQyXX0pLGR9KSgpLHBnPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3''@;'; put 'put ''KGh8fGQpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJmb3JtIiwzLCJuZ05vRm9ybSIsIiIsMywibmdOYXRpdmVWYWxpZGF0ZSIsIiJdXSxob3N0QXR0cnM6WyJub3ZhbGlkYXRlIiwiIl19KSxkfSkoKTtjb25zdCAkWD17cHJvdmlkZTpncCx1c2VFeGlzdGluZzpfbigo''@;'; put 'put ''KT0+alYpLG11bHRpOiEwfTtsZXQgalY9KCgpPT57Y2xhc3MgZCBleHRlbmRzIEc3e3dyaXRlVmFsdWUoaCl7dGhpcy5zZXRQcm9wZXJ0eSgidmFsdWUiLG51bGw9PWg/IiI6aCl9cmVnaXN0ZXJPbkNoYW5nZShoKXt0aGlzLm9uQ2hhbmdlPXY9PntoKCIiPT12P251bGw6cGFyc2VGbG9hdCh2''@;'; put 'put ''KSl9fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgZztyZXR1cm4gZnVuY3Rpb24odil7cmV0dXJuKGd8fChnPWZsKGQpKSkodnx8ZCl9fSgpLGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbImlucHV0IiwidHlwZSIsIm51bWJlciIsImZvcm1Db250cm9sTmFt''@;'; put 'put ''ZSIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwibnVtYmVyIiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsIm51bWJlciIsIm5nTW9kZWwiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MSZoJiZHbigiaW5wdXQiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uQ2hhbmdlKEMu''@;'; put 'put ''dGFyZ2V0LnZhbHVlKX0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiB2Lm9uVG91Y2hlZCgpfSl9LGZlYXR1cmVzOltobyhbJFhdKSxEb119KSxkfSkoKTtjb25zdCB4MmU9e3Byb3ZpZGU6Z3AsdXNlRXhpc3Rpbmc6X24oKCk9PnFoKSxtdWx0aTohMH07bGV0IHFYPSgoKT0+e2NsYXNzIGR7''@;'; put 'put ''fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe30pLGR9KSgpLGVLPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9hY2Nlc3NvcnM9W119YWRkKGgsdil7dGhpcy5f''@;'; put 'put ''YWNjZXNzb3JzLnB1c2goW2gsdl0pfXJlbW92ZShoKXtmb3IobGV0IHY9dGhpcy5fYWNjZXNzb3JzLmxlbmd0aC0xO3Y+PTA7LS12KWlmKHRoaXMuX2FjY2Vzc29yc1t2XVsxXT09PWgpcmV0dXJuIHZvaWQgdGhpcy5fYWNjZXNzb3JzLnNwbGljZSh2LDEpfXNlbGVjdChoKXt0aGlzLl9hY2Nl''@;'; put 'put ''c3NvcnMuZm9yRWFjaCh2PT57dGhpcy5faXNTYW1lR3JvdXAodixoKSYmdlsxXSE9PWgmJnZbMV0uZmlyZVVuY2hlY2soaC52YWx1ZSl9KX1faXNTYW1lR3JvdXAoaCx2KXtyZXR1cm4hIWhbMF0uY29udHJvbCYmaFswXS5fcGFyZW50PT09di5fY29udHJvbC5fcGFyZW50JiZoWzFdLm5hbWU9''@;'; put 'put ''PT12Lm5hbWV9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhYyxwcm92aWRlZEluOnFYfSksZH0pKCkscWg9KCgpPT57Y2xhc3MgZCBleHRlbmRzIEc3e2NvbnN0cnVjdG9y''@;'; put 'put ''KGgsdix5LEMpe3N1cGVyKGgsdiksdGhpcy5fcmVnaXN0cnk9eSx0aGlzLl9pbmplY3Rvcj1DLHRoaXMub25DaGFuZ2U9KCk9Pnt9fW5nT25Jbml0KCl7dGhpcy5fY29udHJvbD10aGlzLl9pbmplY3Rvci5nZXQoRGYpLHRoaXMuX2NoZWNrTmFtZSgpLHRoaXMuX3JlZ2lzdHJ5LmFkZCh0aGlz''@;'; put 'put ''Ll9jb250cm9sLHRoaXMpfW5nT25EZXN0cm95KCl7dGhpcy5fcmVnaXN0cnkucmVtb3ZlKHRoaXMpfXdyaXRlVmFsdWUoaCl7dGhpcy5fc3RhdGU9aD09PXRoaXMudmFsdWUsdGhpcy5zZXRQcm9wZXJ0eSgiY2hlY2tlZCIsdGhpcy5fc3RhdGUpfXJlZ2lzdGVyT25DaGFuZ2UoaCl7dGhpcy5f''@;'; put 'put ''Zm49aCx0aGlzLm9uQ2hhbmdlPSgpPT57aCh0aGlzLnZhbHVlKSx0aGlzLl9yZWdpc3RyeS5zZWxlY3QodGhpcyl9fWZpcmVVbmNoZWNrKGgpe3RoaXMud3JpdGVWYWx1ZShoKX1fY2hlY2tOYW1lKCl7IXRoaXMubmFtZSYmdGhpcy5mb3JtQ29udHJvbE5hbWUmJih0aGlzLm5hbWU9dGhpcy5m''@;'; put 'put ''b3JtQ29udHJvbE5hbWUpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChHYSksS3QoYm8pLEt0KGVLKSxLdChTcykpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJyYWRpbyIsImZvcm1Db250cm9s''@;'; put 'put ''TmFtZSIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwicmFkaW8iLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwicmFkaW8iLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezEmaCYmR24oImNoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gdi5vbkNoYW5nZSgp''@;'; put 'put ''fSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHYub25Ub3VjaGVkKCl9KX0saW5wdXRzOntuYW1lOiJuYW1lIixmb3JtQ29udHJvbE5hbWU6ImZvcm1Db250cm9sTmFtZSIsdmFsdWU6InZhbHVlIn0sZmVhdHVyZXM6W2hvKFt4MmVdKSxEb119KSxkfSkoKTtjb25zdCBRRD1uZXcgemUoIk5n''@;'; put 'put ''TW9kZWxXaXRoRm9ybUNvbnRyb2xXYXJuaW5nIiksbEs9e3Byb3ZpZGU6Z3AsdXNlRXhpc3Rpbmc6X24oKCk9Pk9mKSxtdWx0aTohMH07ZnVuY3Rpb24gYTgoZCxnKXtyZXR1cm4gbnVsbD09ZD9gJHtnfWA6KGcmJiJvYmplY3QiPT10eXBlb2YgZyYmKGc9Ik9iamVjdCIpLGAke2R9OiAke2d9''@;'; put 'put ''YC5zbGljZSgwLDUwKSl9bGV0IE9mPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBHN3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fb3B0aW9uTWFwPW5ldyBNYXAsdGhpcy5faWRDb3VudGVyPTAsdGhpcy5fY29tcGFyZVdpdGg9T2JqZWN0LmlzfXNldCBjb21wYXJlV2l0''@;'; put 'put ''aChoKXt0aGlzLl9jb21wYXJlV2l0aD1ofXdyaXRlVmFsdWUoaCl7dGhpcy52YWx1ZT1oO2NvbnN0IHk9YTgodGhpcy5fZ2V0T3B0aW9uSWQoaCksaCk7dGhpcy5zZXRQcm9wZXJ0eSgidmFsdWUiLHkpfXJlZ2lzdGVyT25DaGFuZ2UoaCl7dGhpcy5vbkNoYW5nZT12PT57dGhpcy52YWx1ZT10''@;'; put 'put ''aGlzLl9nZXRPcHRpb25WYWx1ZSh2KSxoKHRoaXMudmFsdWUpfX1fcmVnaXN0ZXJPcHRpb24oKXtyZXR1cm4odGhpcy5faWRDb3VudGVyKyspLnRvU3RyaW5nKCl9X2dldE9wdGlvbklkKGgpe2Zvcihjb25zdCB2IG9mIEFycmF5LmZyb20odGhpcy5fb3B0aW9uTWFwLmtleXMoKSkpaWYodGhp''@;'; put 'put ''cy5fY29tcGFyZVdpdGgodGhpcy5fb3B0aW9uTWFwLmdldCh2KSxoKSlyZXR1cm4gdjtyZXR1cm4gbnVsbH1fZ2V0T3B0aW9uVmFsdWUoaCl7Y29uc3Qgdj1mdW5jdGlvbiBEMmUoZCl7cmV0dXJuIGQuc3BsaXQoIjoiKVswXX0oaCk7cmV0dXJuIHRoaXMuX29wdGlvbk1hcC5oYXModik/dGhp''@;'; put 'put ''cy5fb3B0aW9uTWFwLmdldCh2KTpofX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgZztyZXR1cm4gZnVuY3Rpb24odil7cmV0dXJuKGd8fChnPWZsKGQpKSkodnx8ZCl9fSgpLGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbInNlbGVjdCIsImZvcm1Db250cm9s''@;'; put 'put ''TmFtZSIsIiIsMywibXVsdGlwbGUiLCIiXSxbInNlbGVjdCIsImZvcm1Db250cm9sIiwiIiwzLCJtdWx0aXBsZSIsIiJdLFsic2VsZWN0IiwibmdNb2RlbCIsIiIsMywibXVsdGlwbGUiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MSZoJiZHbigiY2hhbmdlIixmdW5jdGlvbihD''@;'; put 'put ''KXtyZXR1cm4gdi5vbkNoYW5nZShDLnRhcmdldC52YWx1ZSl9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gdi5vblRvdWNoZWQoKX0pfSxpbnB1dHM6e2NvbXBhcmVXaXRoOiJjb21wYXJlV2l0aCJ9LGZlYXR1cmVzOltobyhbbEtdKSxEb119KSxkfSkoKSwkMz0oKCk9PntjbGFzcyBke2Nv''@;'; put 'put ''bnN0cnVjdG9yKGgsdix5KXt0aGlzLl9lbGVtZW50PWgsdGhpcy5fcmVuZGVyZXI9dix0aGlzLl9zZWxlY3Q9eSx0aGlzLl9zZWxlY3QmJih0aGlzLmlkPXRoaXMuX3NlbGVjdC5fcmVnaXN0ZXJPcHRpb24oKSl9c2V0IG5nVmFsdWUoaCl7bnVsbCE9dGhpcy5fc2VsZWN0JiYodGhpcy5fc2Vs''@;'; put 'put ''ZWN0Ll9vcHRpb25NYXAuc2V0KHRoaXMuaWQsaCksdGhpcy5fc2V0RWxlbWVudFZhbHVlKGE4KHRoaXMuaWQsaCkpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfXNldCB2YWx1ZShoKXt0aGlzLl9zZXRFbGVtZW50VmFsdWUoaCksdGhpcy5fc2VsZWN0JiZ0''@;'; put 'put ''aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpfV9zZXRFbGVtZW50VmFsdWUoaCl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsaCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zZWxlY3QmJih0aGlzLl9z''@;'; put 'put ''ZWxlY3QuX29wdGlvbk1hcC5kZWxldGUodGhpcy5pZCksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGJvKSxLdChHYSksS3QoT2YsOSkpfSxkLlx1MDI3NWRpcj1X''@;'; put 'put ''aSh7dHlwZTpkLHNlbGVjdG9yczpbWyJvcHRpb24iXV0saW5wdXRzOntuZ1ZhbHVlOiJuZ1ZhbHVlIix2YWx1ZToidmFsdWUifX0pLGR9KSgpO2NvbnN0IEpEPXtwcm92aWRlOmdwLHVzZUV4aXN0aW5nOl9uKCgpPT52cCksbXVsdGk6ITB9O2Z1bmN0aW9uIFZrKGQsZyl7cmV0dXJuIG51bGw9''@;'; put 'put ''PWQ/YCR7Z31gOigic3RyaW5nIj09dHlwZW9mIGcmJihnPWAnJHtnfSdgKSxnJiYib2JqZWN0Ij09dHlwZW9mIGcmJihnPSJPYmplY3QiKSxgJHtkfTogJHtnfWAuc2xpY2UoMCw1MCkpfWxldCB2cD0oKCk9PntjbGFzcyBkIGV4dGVuZHMgRzd7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1''@;'; put 'put ''bWVudHMpLHRoaXMuX29wdGlvbk1hcD1uZXcgTWFwLHRoaXMuX2lkQ291bnRlcj0wLHRoaXMuX2NvbXBhcmVXaXRoPU9iamVjdC5pc31zZXQgY29tcGFyZVdpdGgoaCl7dGhpcy5fY29tcGFyZVdpdGg9aH13cml0ZVZhbHVlKGgpe2xldCB2O2lmKHRoaXMudmFsdWU9aCxBcnJheS5pc0FycmF5''@;'; put 'put ''KGgpKXtjb25zdCB5PWgubWFwKEM9PnRoaXMuX2dldE9wdGlvbklkKEMpKTt2PShDLEkpPT57Qy5fc2V0U2VsZWN0ZWQoeS5pbmRleE9mKEkudG9TdHJpbmcoKSk+LTEpfX1lbHNlIHY9KHksQyk9Pnt5Ll9zZXRTZWxlY3RlZCghMSl9O3RoaXMuX29wdGlvbk1hcC5mb3JFYWNoKHYpfXJlZ2lz''@;'; put 'put ''dGVyT25DaGFuZ2UoaCl7dGhpcy5vbkNoYW5nZT12PT57Y29uc3QgeT1bXSxDPXYuc2VsZWN0ZWRPcHRpb25zO2lmKHZvaWQgMCE9PUMpe2NvbnN0IEk9Qztmb3IobGV0IFo9MDtaPEkubGVuZ3RoO1orKyl7Y29uc3QgX2U9dGhpcy5fZ2V0T3B0aW9uVmFsdWUoSVtaXS52YWx1ZSk7eS5wdXNo''@;'; put 'put ''KF9lKX19ZWxzZXtjb25zdCBJPXYub3B0aW9ucztmb3IobGV0IFo9MDtaPEkubGVuZ3RoO1orKyl7Y29uc3QgdWU9SVtaXTtpZih1ZS5zZWxlY3RlZCl7Y29uc3QgX2U9dGhpcy5fZ2V0T3B0aW9uVmFsdWUodWUudmFsdWUpO3kucHVzaChfZSl9fX10aGlzLnZhbHVlPXksaCh5KX19X3JlZ2lz''@;'; put 'put ''dGVyT3B0aW9uKGgpe2NvbnN0IHY9KHRoaXMuX2lkQ291bnRlcisrKS50b1N0cmluZygpO3JldHVybiB0aGlzLl9vcHRpb25NYXAuc2V0KHYsaCksdn1fZ2V0T3B0aW9uSWQoaCl7Zm9yKGNvbnN0IHYgb2YgQXJyYXkuZnJvbSh0aGlzLl9vcHRpb25NYXAua2V5cygpKSlpZih0aGlzLl9jb21w''@;'; put 'put ''YXJlV2l0aCh0aGlzLl9vcHRpb25NYXAuZ2V0KHYpLl92YWx1ZSxoKSlyZXR1cm4gdjtyZXR1cm4gbnVsbH1fZ2V0T3B0aW9uVmFsdWUoaCl7Y29uc3Qgdj1mdW5jdGlvbiBqeShkKXtyZXR1cm4gZC5zcGxpdCgiOiIpWzBdfShoKTtyZXR1cm4gdGhpcy5fb3B0aW9uTWFwLmhhcyh2KT90aGlz''@;'; put 'put ''Ll9vcHRpb25NYXAuZ2V0KHYpLl92YWx1ZTpofX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgZztyZXR1cm4gZnVuY3Rpb24odil7cmV0dXJuKGd8fChnPWZsKGQpKSkodnx8ZCl9fSgpLGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbInNlbGVjdCIsIm11bHRp''@;'; put 'put ''cGxlIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJzZWxlY3QiLCJtdWx0aXBsZSIsIiIsImZvcm1Db250cm9sIiwiIl0sWyJzZWxlY3QiLCJtdWx0aXBsZSIsIiIsIm5nTW9kZWwiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MSZoJiZHbigiY2hhbmdlIixmdW5jdGlvbihD''@;'; put 'put ''KXtyZXR1cm4gdi5vbkNoYW5nZShDLnRhcmdldCl9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gdi5vblRvdWNoZWQoKX0pfSxpbnB1dHM6e2NvbXBhcmVXaXRoOiJjb21wYXJlV2l0aCJ9LGZlYXR1cmVzOltobyhbSkRdKSxEb119KSxkfSkoKSxxMz0oKCk9PntjbGFzcyBke2NvbnN0cnVj''@;'; put 'put ''dG9yKGgsdix5KXt0aGlzLl9lbGVtZW50PWgsdGhpcy5fcmVuZGVyZXI9dix0aGlzLl9zZWxlY3Q9eSx0aGlzLl9zZWxlY3QmJih0aGlzLmlkPXRoaXMuX3NlbGVjdC5fcmVnaXN0ZXJPcHRpb24odGhpcykpfXNldCBuZ1ZhbHVlKGgpe251bGwhPXRoaXMuX3NlbGVjdCYmKHRoaXMuX3ZhbHVl''@;'; put 'put ''PWgsdGhpcy5fc2V0RWxlbWVudFZhbHVlKFZrKHRoaXMuaWQsaCkpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfXNldCB2YWx1ZShoKXt0aGlzLl9zZWxlY3Q/KHRoaXMuX3ZhbHVlPWgsdGhpcy5fc2V0RWxlbWVudFZhbHVlKFZrKHRoaXMuaWQsaCkpLHRo''@;'; put 'put ''aXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpOnRoaXMuX3NldEVsZW1lbnRWYWx1ZShoKX1fc2V0RWxlbWVudFZhbHVlKGgpe3RoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwidmFsdWUiLGgpfV9zZXRTZWxlY3Rl''@;'; put 'put ''ZChoKXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsInNlbGVjdGVkIixoKX1uZ09uRGVzdHJveSgpe3RoaXMuX3NlbGVjdCYmKHRoaXMuX3NlbGVjdC5fb3B0aW9uTWFwLmRlbGV0ZSh0aGlzLmlkKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1''@;'; put 'put ''ZSh0aGlzLl9zZWxlY3QudmFsdWUpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoYm8pLEt0KEdhKSxLdCh2cCw5KSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIm9wdGlvbiJdXSxpbnB1dHM6e25nVmFsdWU6Im5nVmFs''@;'; put 'put ''dWUiLHZhbHVlOiJ2YWx1ZSJ9fSksZH0pKCksVVY9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbcVhdfSksZH0pKCksdGQ9KCgpPT57''@;'; put 'put ''Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbVVZdfSksZH0pKCksUDJlPSgoKT0+e2NsYXNzIGR7c3RhdGljIHdpdGhDb25maWcoaCl7cmV0dXJu''@;'; put 'put ''e25nTW9kdWxlOmQscHJvdmlkZXJzOlt7cHJvdmlkZTpRRCx1c2VWYWx1ZTpoLndhcm5Pbk5nTW9kZWxXaXRoRm9ybUNvbnRyb2x9XX19fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9''@;'; put 'put ''YjAoe2ltcG9ydHM6W1VWXX0pLGR9KSgpO2Z1bmN0aW9uIHFEKGQpe3RoaXMud3JhcHBlZD1kfWZ1bmN0aW9uIGVMKGQpe3ZhciBnLGg7ZnVuY3Rpb24geShJLFope3RyeXt2YXIgdWU9ZFtJXShaKSxfZT11ZS52YWx1ZSxCZT1fZSBpbnN0YW5jZW9mIHFEO1Byb21pc2UucmVzb2x2ZShCZT9f''@;'; put 'put ''ZS53cmFwcGVkOl9lKS50aGVuKGZ1bmN0aW9uKE5lKXtCZT95KCJyZXR1cm4iPT09ST8icmV0dXJuIjoibmV4dCIsTmUpOkModWUuZG9uZT8icmV0dXJuIjoibm9ybWFsIixOZSl9LGZ1bmN0aW9uKE5lKXt5KCJ0aHJvdyIsTmUpfSl9Y2F0Y2goTmUpe0MoInRocm93IixOZSl9fWZ1bmN0aW9u''@;'; put 'put ''IEMoSSxaKXtzd2l0Y2goSSl7Y2FzZSJyZXR1cm4iOmcucmVzb2x2ZSh7dmFsdWU6Wixkb25lOiEwfSk7YnJlYWs7Y2FzZSJ0aHJvdyI6Zy5yZWplY3QoWik7YnJlYWs7ZGVmYXVsdDpnLnJlc29sdmUoe3ZhbHVlOlosZG9uZTohMX0pfShnPWcubmV4dCk/eShnLmtleSxnLmFyZyk6aD1udWxs''@;'; put 'put ''fXRoaXMuX2ludm9rZT1mdW5jdGlvbiB2KEksWil7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHVlLF9lKXt2YXIgQmU9e2tleTpJLGFyZzpaLHJlc29sdmU6dWUscmVqZWN0Ol9lLG5leHQ6bnVsbH07aD9oPWgubmV4dD1CZTooZz1oPUJlLHkoSSxaKSl9KX0sImZ1bmN0aW9uIiE9dHlw''@;'; put 'put ''ZW9mIGQucmV0dXJuJiYodGhpcy5yZXR1cm49dm9pZCAwKX1lTC5wcm90b3R5cGVbImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlTC5wcm90b3R5cGUubmV4dD1mdW5jdGlv''@;'; put 'put ''bihkKXtyZXR1cm4gdGhpcy5faW52b2tlKCJuZXh0IixkKX0sZUwucHJvdG90eXBlLnRocm93PWZ1bmN0aW9uKGQpe3JldHVybiB0aGlzLl9pbnZva2UoInRocm93IixkKX0sZUwucHJvdG90eXBlLnJldHVybj1mdW5jdGlvbihkKXtyZXR1cm4gdGhpcy5faW52b2tlKCJyZXR1cm4iLGQpfSwi''@;'; put 'put ''dW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sO2NsYXNzIHJMe3N0YXRpYyBnZXRUcmFwRWxlbWVudHMoKXtyZXR1cm5bLi4uSjEuc3RhdGUuZm9jdXNUcmFwSXRlbXNdfXN0YXRpYyBzZXRUcmFwRWxlbWVudHMoZyl7Y29uc3QgaD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJodG1s''@;'; put 'put ''Iik7bnVsbCE9PWgmJmZ1bmN0aW9uIGVqKGQsLi4uZyl7ZCYmZy5mb3JFYWNoKChbaCx2XSk9PnshMT09PXZ8fG51bGw9PT12P2QucmVtb3ZlQXR0cmlidXRlKGgpOmQuc2V0QXR0cmlidXRlKGgsdisiIil9KX0oaCxbImNkcy1mb2N1cy10cmFwIiwhIWcubGVuZ3RoJiYiIl0pLEoxLnN0YXRl''@;'; put 'put ''LmZvY3VzVHJhcEl0ZW1zPVsuLi5nXX1zdGF0aWMgcmVtb3ZlVHJhcEVsZW1lbnQoZyl7dGhpcy5nZXRUcmFwRWxlbWVudHMoKS5sZW5ndGg8MXx8dGhpcy5zZXRUcmFwRWxlbWVudHMoWy4uLnRoaXMuZ2V0VHJhcEVsZW1lbnRzKCkuZmlsdGVyKGg9PmguZm9jdXNUcmFwSWQhPT1nLmZvY3Vz''@;'; put 'put ''VHJhcElkKV0pfXN0YXRpYyBzZXRDdXJyZW50KGcpe251bGwhPWcmJmcuZm9jdXNUcmFwSWQmJnRoaXMuc2V0VHJhcEVsZW1lbnRzKFsuLi50aGlzLmdldFRyYXBFbGVtZW50cygpLmZpbHRlcihoPT5oLmZvY3VzVHJhcElkIT09Zy5mb2N1c1RyYXBJZCksZ10pfXN0YXRpYyBhY3RpdmF0ZVBy''@;'; put 'put ''ZXZpb3VzQ3VycmVudCgpe3RoaXMuc2V0VHJhcEVsZW1lbnRzKFsuLi50aGlzLmdldFRyYXBFbGVtZW50cygpXS5zbGljZSgwLC0xKSl9c3RhdGljIGdldEN1cnJlbnQoKXtyZXR1cm4gZnVuY3Rpb24gaEsoZCl7cmV0dXJuIGQubGVuZ3RoP2RbZC5sZW5ndGgtMV06dm9pZCAwfSh0aGlzLmdl''@;'; put 'put ''dFRyYXBFbGVtZW50cygpKXx8bnVsbH19Y29uc3QgaDFlPWFYKDMsKGQsZyxoKT0+eyFmdW5jdGlvbiBJc2UoZCxnKXtyZXR1cm4gZ3x8KGc9d2luZG93JiZ3aW5kb3cuY3VzdG9tRWxlbWVudHMpLCFnfHwhIWcuZ2V0KGQpfShkKXx8ZnVuY3Rpb24gS0ooKXt2YXIgZCxnO3JldHVybiBudWxs''@;'; put 'put ''PT0oZz1udWxsPT0oZD1udWxsPT13aW5kb3c/dm9pZCAwOndpbmRvdy5sb2NhdGlvbik/dm9pZCAwOmQuaHJlZik/dm9pZCAwOmcuaW5jbHVkZXMoImxvY2FsaG9zdDo2MDA2Iil9KCk/KGguZGVmaW5lKGQsZyksY1YoKSx3aW5kb3cmJiFPYmplY3Qua2V5cyh3aW5kb3cuQ0RTLl9zdGF0ZS5l''@;'; put 'put ''bGVtZW50UmVnaXN0cnkpLnNvbWUodj0+dj09PWQpJiYod2luZG93LkNEUy5fc3RhdGUuZWxlbWVudFJlZ2lzdHJ5PUd6KG1zKHt9LHdpbmRvdy5DRFMuX3N0YXRlLmVsZW1lbnRSZWdpc3RyeSkse1tkXTp7fX0pKSk6Tjcud2FybihkKyIgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIil9''@;'; put 'put ''KTtmdW5jdGlvbiBDSyhkLGcpe0pKKCkmJlREKFsiY3VzdG9tRWxlbWVudHMiXSkmJmgxZShkLGcsd2luZG93LmN1c3RvbUVsZW1lbnRzKX1sZXQga0s9ITE7ZnVuY3Rpb24gZDFlKGQpe2lmKChkPU1hdGgudHJ1bmMoZCl8fDApPDAmJihkKz10aGlzLmxlbmd0aCksIShkPDB8fGQ+PXRoaXMu''@;'; put 'put ''bGVuZ3RoKSlyZXR1cm4gdGhpc1tkXX1pZigha0spe2tLPSEwO2NvbnN0IGQ9UmVmbGVjdC5nZXRQcm90b3R5cGVPZihJbnQ4QXJyYXkpO2Zvcihjb25zdCBnIG9mW0FycmF5LFN0cmluZyxkXSlPYmplY3QuZGVmaW5lUHJvcGVydHkoZy5wcm90b3R5cGUsImF0Iix7dmFsdWU6ZDFlLHdyaXRh''@;'; put 'put ''YmxlOiEwLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSl9bGV0IFNLPSExLE1LPSExO2Z1bmN0aW9uIEVLKGQsZyxoKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxoLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNBdHRy''@;'; put 'put ''aWJ1dGUoZyk/dGhpcy5nZXRBdHRyaWJ1dGUoZyk6bnVsbH0sc2V0OmZ1bmN0aW9uKHYpe251bGwhPT12P3RoaXMuc2V0QXR0cmlidXRlKGcsdik6dGhpcy5yZW1vdmVBdHRyaWJ1dGUoZyl9fSl9ZnVuY3Rpb24geEsoZCxnLGgsdix5LEMsSSl7dHJ5e3ZhciBaPWRbQ10oSSksdWU9Wi52YWx1''@;'; put 'put ''ZX1jYXRjaChfZSl7cmV0dXJuIHZvaWQgaChfZSl9Wi5kb25lP2codWUpOlByb21pc2UucmVzb2x2ZSh1ZSkudGhlbih2LHkpfWZ1bmN0aW9uIFRLKGQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBnPXRoaXMsaD1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHYseSl7dmFy''@;'; put 'put ''IEM9ZC5hcHBseShnLGgpO2Z1bmN0aW9uIEkodWUpe3hLKEMsdix5LEksWiwibmV4dCIsdWUpfWZ1bmN0aW9uIFoodWUpe3hLKEMsdix5LEksWiwidGhyb3ciLHVlKX1JKHZvaWQgMCl9KX19U0t8fEVsZW1lbnQucHJvdG90eXBlLmhhc093blByb3BlcnR5KCJyb2xlIil8fChFSyhFbGVtZW50''@;'; put 'put ''LnByb3RvdHlwZSwicm9sZSIsInJvbGUiKSxTSz0hMCksTUt8fEVsZW1lbnQucHJvdG90eXBlLmhhc093blByb3BlcnR5KCJhcmlhTGFiZWwiKXx8KE1LPSEwLFsiQWN0aXZlRGVzY2VuZGFudCIsIkF0b21pYyIsIkF1dG9Db21wbGV0ZSIsIkJ1c3kiLCJDaGVja2VkIiwiQ29sQ291bnQiLCJD''@;'; put 'put ''b2xJbmRleCIsIkNvbFNwYW4iLCJDb250cm9scyIsIkN1cnJlbnQiLCJEZXNjcmliZWRCeSIsIkRldGFpbHMiLCJEaXNhYmxlZCIsIkVycm9yTWVzc2FnZSIsIkV4cGFuZGVkIiwiRmxvd1RvIiwiSGFzUG9wdXAiLCJIaWRkZW4iLCJJbnZhbGlkIiwiS2V5U2hvcnRjdXRzIiwiTGFiZWwiLCJM''@;'; put 'put ''YWJlbGxlZEJ5IiwiTGV2ZWwiLCJMaXZlIiwiTW9kYWwiLCJNdWx0aUxpbmUiLCJNdWx0aVNlbGVjdGFibGUiLCJPcmllbnRhdGlvbiIsIk93bnMiLCJQbGFjZWhvbGRlciIsIlBvc0luU2V0IiwiUHJlc3NlZCIsIlJlYWRPbmx5IiwiUmVsZXZhbnQiLCJSZXF1aXJlZCIsIlJvbGVEZXNjcmlw''@;'; put 'put ''dGlvbiIsIlJvd0NvdW50IiwiUm93SW5kZXgiLCJSb3dTcGFuIiwiU2VsZWN0ZWQiLCJTZXRTaXplIiwiU29ydCIsIlZhbHVlTWF4IiwiVmFsdWVNaW4iLCJWYWx1ZU5vdyIsIlZhbHVlVGV4dCJdLmZvckVhY2goZD0+RUsoRWxlbWVudC5wcm90b3R5cGUsImFyaWEtIitkLnRvTG93ZXJDYXNl''@;'; put 'put ''KCksImFyaWEiK2QpKSk7Y29uc3QgaWo9d2luZG93LlNoYWRvd1Jvb3QmJih2b2lkIDA9PT13aW5kb3cuU2hhZHlDU1N8fHdpbmRvdy5TaGFkeUNTUy5uYXRpdmVTaGFkb3cpJiYiYWRvcHRlZFN0eWxlU2hlZXRzImluIERvY3VtZW50LnByb3RvdHlwZSYmInJlcGxhY2UiaW4gQ1NTU3R5bGVT''@;'; put 'put ''aGVldC5wcm90b3R5cGUsb2o9U3ltYm9sKCksV3k9bmV3IFdlYWtNYXA7Y2xhc3MgWmt7Y29uc3RydWN0b3IoZyxoLHYpe2lmKHRoaXMuXyRjc3NSZXN1bHQkPSEwLHYhPT1vail0aHJvdyBFcnJvcigiQ1NTUmVzdWx0IGlzIG5vdCBjb25zdHJ1Y3RhYmxlLiBVc2UgYHVuc2FmZUNTU2Agb3Ig''@;'; put 'put ''YGNzc2AgaW5zdGVhZC4iKTt0aGlzLmNzc1RleHQ9Zyx0aGlzLnQ9aH1nZXQgc3R5bGVTaGVldCgpe2xldCBnPXRoaXMubztjb25zdCBoPXRoaXMudDtpZihpaiYmdm9pZCAwPT09Zyl7Y29uc3Qgdj12b2lkIDAhPT1oJiYxPT09aC5sZW5ndGg7diYmKGc9V3kuZ2V0KGgpKSx2b2lkIDA9PT1n''@;'; put 'put ''JiYoKHRoaXMubz1nPW5ldyBDU1NTdHlsZVNoZWV0KS5yZXBsYWNlU3luYyh0aGlzLmNzc1RleHQpLHYmJld5LnNldChoLGcpKX1yZXR1cm4gZ310b1N0cmluZygpe3JldHVybiB0aGlzLmNzc1RleHR9fWNvbnN0IGlMPShkLC4uLmcpPT57Y29uc3QgaD0xPT09ZC5sZW5ndGg/ZFswXTpnLnJl''@;'; put 'put ''ZHVjZSgodix5LEMpPT52KyhJPT57aWYoITA9PT1JLl8kY3NzUmVzdWx0JClyZXR1cm4gSS5jc3NUZXh0O2lmKCJudW1iZXIiPT10eXBlb2YgSSlyZXR1cm4gSTt0aHJvdyBFcnJvcigiVmFsdWUgcGFzc2VkIHRvICdjc3MnIGZ1bmN0aW9uIG11c3QgYmUgYSAnY3NzJyBmdW5jdGlvbiByZXN1''@;'; put 'put ''bHQ6ICIrSSsiLiBVc2UgJ3Vuc2FmZUNTUycgdG8gcGFzcyBub24tbGl0ZXJhbCB2YWx1ZXMsIGJ1dCB0YWtlIGNhcmUgdG8gZW5zdXJlIHBhZ2Ugc2VjdXJpdHkuIil9KSh5KStkW0MrMV0sZFswXSk7cmV0dXJuIG5ldyBaayhoLGQsb2opfSxvTD1paj9kPT5kOmQ9PmQgaW5zdGFuY2VvZiBD''@;'; put 'put ''U1NTdHlsZVNoZWV0PyhnPT57bGV0IGg9IiI7Zm9yKGNvbnN0IHYgb2YgZy5jc3NSdWxlcyloKz12LmNzc1RleHQ7cmV0dXJuKGQ9Pm5ldyBaaygic3RyaW5nIj09dHlwZW9mIGQ/ZDpkKyIiLHZvaWQgMCxvaikpKGgpfSkoZCk6ZDt2YXIgYWo7Y29uc3QgSzc9d2luZG93LnRydXN0ZWRUeXBl''@;'; put 'put ''cyxESz1LNz9LNy5lbXB0eVNjcmlwdDoiIixHaz13aW5kb3cucmVhY3RpdmVFbGVtZW50UG9seWZpbGxTdXBwb3J0LFdrPXt0b0F0dHJpYnV0ZShkLGcpe3N3aXRjaChnKXtjYXNlIEJvb2xlYW46ZD1kP0RLOm51bGw7YnJlYWs7Y2FzZSBPYmplY3Q6Y2FzZSBBcnJheTpkPW51bGw9PWQ/ZDpK''@;'; put 'put ''U09OLnN0cmluZ2lmeShkKX1yZXR1cm4gZH0sZnJvbUF0dHJpYnV0ZShkLGcpe2xldCBoPWQ7c3dpdGNoKGcpe2Nhc2UgQm9vbGVhbjpoPW51bGwhPT1kO2JyZWFrO2Nhc2UgTnVtYmVyOmg9bnVsbD09PWQ/bnVsbDpOdW1iZXIoZCk7YnJlYWs7Y2FzZSBPYmplY3Q6Y2FzZSBBcnJheTp0cnl7''@;'; put 'put ''aD1KU09OLnBhcnNlKGQpfWNhdGNoKHYpe2g9bnVsbH19cmV0dXJuIGh9fSxZaz0oZCxnKT0+ZyE9PWQmJihnPT1nfHxkPT1kKSxhTD17YXR0cmlidXRlOiEwLHR5cGU6U3RyaW5nLGNvbnZlcnRlcjpXayxyZWZsZWN0OiExLGhhc0NoYW5nZWQ6WWt9O2NsYXNzICQ3IGV4dGVuZHMgSFRNTEVs''@;'; put 'put ''ZW1lbnR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuXyRFaT1uZXcgTWFwLHRoaXMuaXNVcGRhdGVQZW5kaW5nPSExLHRoaXMuaGFzVXBkYXRlZD0hMSx0aGlzLl8kRWw9bnVsbCx0aGlzLnUoKX1zdGF0aWMgYWRkSW5pdGlhbGl6ZXIoZyl7dmFyIGg7bnVsbCE9PShoPXRoaXMuaCkmJnZv''@;'; put 'put ''aWQgMCE9PWh8fCh0aGlzLmg9W10pLHRoaXMuaC5wdXNoKGcpfXN0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKCl7dGhpcy5maW5hbGl6ZSgpO2NvbnN0IGc9W107cmV0dXJuIHRoaXMuZWxlbWVudFByb3BlcnRpZXMuZm9yRWFjaCgoaCx2KT0+e2NvbnN0IHk9dGhpcy5fJEVwKHYsaCk7''@;'; put 'put ''dm9pZCAwIT09eSYmKHRoaXMuXyRFdi5zZXQoeSx2KSxnLnB1c2goeSkpfSksZ31zdGF0aWMgY3JlYXRlUHJvcGVydHkoZyxoPWFMKXtpZihoLnN0YXRlJiYoaC5hdHRyaWJ1dGU9ITEpLHRoaXMuZmluYWxpemUoKSx0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzLnNldChnLGgpLCFoLm5vQWNjZXNz''@;'; put 'put ''b3ImJiF0aGlzLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eShnKSl7Y29uc3Qgdj0ic3ltYm9sIj09dHlwZW9mIGc/U3ltYm9sKCk6Il9fIitnLHk9dGhpcy5nZXRQcm9wZXJ0eURlc2NyaXB0b3IoZyx2LGgpO3ZvaWQgMCE9PXkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLnByb3RvdHlw''@;'; put 'put ''ZSxnLHkpfX1zdGF0aWMgZ2V0UHJvcGVydHlEZXNjcmlwdG9yKGcsaCx2KXtyZXR1cm57Z2V0KCl7cmV0dXJuIHRoaXNbaF19LHNldCh5KXtjb25zdCBDPXRoaXNbZ107dGhpc1toXT15LHRoaXMucmVxdWVzdFVwZGF0ZShnLEMsdil9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfX1z''@;'; put 'put ''dGF0aWMgZ2V0UHJvcGVydHlPcHRpb25zKGcpe3JldHVybiB0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzLmdldChnKXx8YUx9c3RhdGljIGZpbmFsaXplKCl7aWYodGhpcy5oYXNPd25Qcm9wZXJ0eSgiZmluYWxpemVkIikpcmV0dXJuITE7dGhpcy5maW5hbGl6ZWQ9ITA7Y29uc3QgZz1PYmplY3Qu''@;'; put 'put ''Z2V0UHJvdG90eXBlT2YodGhpcyk7aWYoZy5maW5hbGl6ZSgpLHRoaXMuZWxlbWVudFByb3BlcnRpZXM9bmV3IE1hcChnLmVsZW1lbnRQcm9wZXJ0aWVzKSx0aGlzLl8kRXY9bmV3IE1hcCx0aGlzLmhhc093blByb3BlcnR5KCJwcm9wZXJ0aWVzIikpe2NvbnN0IGg9dGhpcy5wcm9wZXJ0aWVz''@;'; put 'put ''LHY9Wy4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGgpLC4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaCldO2Zvcihjb25zdCB5IG9mIHYpdGhpcy5jcmVhdGVQcm9wZXJ0eSh5LGhbeV0pfXJldHVybiB0aGlzLmVsZW1lbnRTdHlsZXM9dGhpcy5maW5hbGl6ZVN0eWxlcyh0''@;'; put 'put ''aGlzLnN0eWxlcyksITB9c3RhdGljIGZpbmFsaXplU3R5bGVzKGcpe2NvbnN0IGg9W107aWYoQXJyYXkuaXNBcnJheShnKSl7Y29uc3Qgdj1uZXcgU2V0KGcuZmxhdCgxLzApLnJldmVyc2UoKSk7Zm9yKGNvbnN0IHkgb2YgdiloLnVuc2hpZnQob0woeSkpfWVsc2Ugdm9pZCAwIT09ZyYmaC5w''@;'; put 'put ''dXNoKG9MKGcpKTtyZXR1cm4gaH1zdGF0aWMgXyRFcChnLGgpe2NvbnN0IHY9aC5hdHRyaWJ1dGU7cmV0dXJuITE9PT12P3ZvaWQgMDoic3RyaW5nIj09dHlwZW9mIHY/djoic3RyaW5nIj09dHlwZW9mIGc/Zy50b0xvd2VyQ2FzZSgpOnZvaWQgMH11KCl7dmFyIGc7dGhpcy5fJEVfPW5ldyBQ''@;'; put 'put ''cm9taXNlKGg9PnRoaXMuZW5hYmxlVXBkYXRpbmc9aCksdGhpcy5fJEFMPW5ldyBNYXAsdGhpcy5fJEVnKCksdGhpcy5yZXF1ZXN0VXBkYXRlKCksbnVsbD09PShnPXRoaXMuY29uc3RydWN0b3IuaCl8fHZvaWQgMD09PWd8fGcuZm9yRWFjaChoPT5oKHRoaXMpKX1hZGRDb250cm9sbGVyKGcp''@;'; put 'put ''e3ZhciBoLHY7KG51bGwhPT0oaD10aGlzLl8kRVMpJiZ2b2lkIDAhPT1oP2g6dGhpcy5fJEVTPVtdKS5wdXNoKGcpLHZvaWQgMCE9PXRoaXMucmVuZGVyUm9vdCYmdGhpcy5pc0Nvbm5lY3RlZCYmKG51bGw9PT0odj1nLmhvc3RDb25uZWN0ZWQpfHx2b2lkIDA9PT12fHx2LmNhbGwoZykpfXJl''@;'; put 'put ''bW92ZUNvbnRyb2xsZXIoZyl7dmFyIGg7bnVsbD09PShoPXRoaXMuXyRFUyl8fHZvaWQgMD09PWh8fGguc3BsaWNlKHRoaXMuXyRFUy5pbmRleE9mKGcpPj4+MCwxKX1fJEVnKCl7dGhpcy5jb25zdHJ1Y3Rvci5lbGVtZW50UHJvcGVydGllcy5mb3JFYWNoKChnLGgpPT57dGhpcy5oYXNPd25Q''@;'; put 'put ''cm9wZXJ0eShoKSYmKHRoaXMuXyRFaS5zZXQoaCx0aGlzW2hdKSxkZWxldGUgdGhpc1toXSl9KX1jcmVhdGVSZW5kZXJSb290KCl7dmFyIGc7Y29uc3QgaD1udWxsIT09KGc9dGhpcy5zaGFkb3dSb290KSYmdm9pZCAwIT09Zz9nOnRoaXMuYXR0YWNoU2hhZG93KHRoaXMuY29uc3RydWN0b3Iu''@;'; put 'put ''c2hhZG93Um9vdE9wdGlvbnMpO3JldHVybigoZCxnKT0+e2lqP2QuYWRvcHRlZFN0eWxlU2hlZXRzPWcubWFwKGg9PmggaW5zdGFuY2VvZiBDU1NTdHlsZVNoZWV0P2g6aC5zdHlsZVNoZWV0KTpnLmZvckVhY2goaD0+e2NvbnN0IHY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKSx5''@;'; put 'put ''PXdpbmRvdy5saXROb25jZTt2b2lkIDAhPT15JiZ2LnNldEF0dHJpYnV0ZSgibm9uY2UiLHkpLHYudGV4dENvbnRlbnQ9aC5jc3NUZXh0LGQuYXBwZW5kQ2hpbGQodil9KX0pKGgsdGhpcy5jb25zdHJ1Y3Rvci5lbGVtZW50U3R5bGVzKSxofWNvbm5lY3RlZENhbGxiYWNrKCl7dmFyIGc7dm9p''@;'; put 'put ''ZCAwPT09dGhpcy5yZW5kZXJSb290JiYodGhpcy5yZW5kZXJSb290PXRoaXMuY3JlYXRlUmVuZGVyUm9vdCgpKSx0aGlzLmVuYWJsZVVwZGF0aW5nKCEwKSxudWxsPT09KGc9dGhpcy5fJEVTKXx8dm9pZCAwPT09Z3x8Zy5mb3JFYWNoKGg9Pnt2YXIgdjtyZXR1cm4gbnVsbD09PSh2PWguaG9z''@;'; put 'put ''dENvbm5lY3RlZCl8fHZvaWQgMD09PXY/dm9pZCAwOnYuY2FsbChoKX0pfWVuYWJsZVVwZGF0aW5nKGcpe31kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3ZhciBnO251bGw9PT0oZz10aGlzLl8kRVMpfHx2b2lkIDA9PT1nfHxnLmZvckVhY2goaD0+e3ZhciB2O3JldHVybiBudWxsPT09KHY9aC5o''@;'; put 'put ''b3N0RGlzY29ubmVjdGVkKXx8dm9pZCAwPT09dj92b2lkIDA6di5jYWxsKGgpfSl9YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKGcsaCx2KXt0aGlzLl8kQUsoZyx2KX1fJEVPKGcsaCx2PWFMKXt2YXIgeSxDO2NvbnN0IEk9dGhpcy5jb25zdHJ1Y3Rvci5fJEVwKGcsdik7aWYodm9pZCAwIT09''@;'; put 'put ''SSYmITA9PT12LnJlZmxlY3Qpe2NvbnN0IFo9KG51bGwhPT0oQz1udWxsPT09KHk9di5jb252ZXJ0ZXIpfHx2b2lkIDA9PT15P3ZvaWQgMDp5LnRvQXR0cmlidXRlKSYmdm9pZCAwIT09Qz9DOldrLnRvQXR0cmlidXRlKShoLHYudHlwZSk7dGhpcy5fJEVsPWcsbnVsbD09Wj90aGlzLnJlbW92''@;'; put 'put ''ZUF0dHJpYnV0ZShJKTp0aGlzLnNldEF0dHJpYnV0ZShJLFopLHRoaXMuXyRFbD1udWxsfX1fJEFLKGcsaCl7dmFyIHYseTtjb25zdCBDPXRoaXMuY29uc3RydWN0b3IsST1DLl8kRXYuZ2V0KGcpO2lmKHZvaWQgMCE9PUkmJnRoaXMuXyRFbCE9PUkpe2NvbnN0IFo9Qy5nZXRQcm9wZXJ0eU9w''@;'; put 'put ''dGlvbnMoSSksdWU9Wi5jb252ZXJ0ZXIsX2U9bnVsbCE9PSh5PW51bGwhPT0odj1udWxsPT11ZT92b2lkIDA6dWUuZnJvbUF0dHJpYnV0ZSkmJnZvaWQgMCE9PXY/djoiZnVuY3Rpb24iPT10eXBlb2YgdWU/dWU6bnVsbCkmJnZvaWQgMCE9PXk/eTpXay5mcm9tQXR0cmlidXRlO3RoaXMuXyRF''@;'; put 'put ''bD1JLHRoaXNbSV09X2UoaCxaLnR5cGUpLHRoaXMuXyRFbD1udWxsfX1yZXF1ZXN0VXBkYXRlKGcsaCx2KXtsZXQgeT0hMDt2b2lkIDAhPT1nJiYoKCh2PXZ8fHRoaXMuY29uc3RydWN0b3IuZ2V0UHJvcGVydHlPcHRpb25zKGcpKS5oYXNDaGFuZ2VkfHxZaykodGhpc1tnXSxoKT8odGhpcy5f''@;'; put 'put ''JEFMLmhhcyhnKXx8dGhpcy5fJEFMLnNldChnLGgpLCEwPT09di5yZWZsZWN0JiZ0aGlzLl8kRWwhPT1nJiYodm9pZCAwPT09dGhpcy5fJEVDJiYodGhpcy5fJEVDPW5ldyBNYXApLHRoaXMuXyRFQy5zZXQoZyx2KSkpOnk9ITEpLCF0aGlzLmlzVXBkYXRlUGVuZGluZyYmeSYmKHRoaXMuXyRF''@;'; put 'put ''Xz10aGlzLl8kRWooKSl9XyRFaigpe3ZhciBnPXRoaXM7cmV0dXJuIFRLKGZ1bmN0aW9uKigpe2cuaXNVcGRhdGVQZW5kaW5nPSEwO3RyeXt5aWVsZCBnLl8kRV99Y2F0Y2godil7UHJvbWlzZS5yZWplY3Qodil9Y29uc3QgaD1nLnNjaGVkdWxlVXBkYXRlKCk7cmV0dXJuIG51bGwhPWgmJih5''@;'; put 'put ''aWVsZCBoKSwhZy5pc1VwZGF0ZVBlbmRpbmd9KSgpfXNjaGVkdWxlVXBkYXRlKCl7cmV0dXJuIHRoaXMucGVyZm9ybVVwZGF0ZSgpfXBlcmZvcm1VcGRhdGUoKXt2YXIgZztpZighdGhpcy5pc1VwZGF0ZVBlbmRpbmcpcmV0dXJuO3RoaXMuXyRFaSYmKHRoaXMuXyRFaS5mb3JFYWNoKCh5LEMp''@;'; put 'put ''PT50aGlzW0NdPXkpLHRoaXMuXyRFaT12b2lkIDApO2xldCBoPSExO2NvbnN0IHY9dGhpcy5fJEFMO3RyeXtoPXRoaXMuc2hvdWxkVXBkYXRlKHYpLGg/KHRoaXMud2lsbFVwZGF0ZSh2KSxudWxsPT09KGc9dGhpcy5fJEVTKXx8dm9pZCAwPT09Z3x8Zy5mb3JFYWNoKHk9Pnt2YXIgQztyZXR1''@;'; put 'put ''cm4gbnVsbD09PShDPXkuaG9zdFVwZGF0ZSl8fHZvaWQgMD09PUM/dm9pZCAwOkMuY2FsbCh5KX0pLHRoaXMudXBkYXRlKHYpKTp0aGlzLl8kRWsoKX1jYXRjaCh5KXt0aHJvdyBoPSExLHRoaXMuXyRFaygpLHl9aCYmdGhpcy5fJEFFKHYpfXdpbGxVcGRhdGUoZyl7fV8kQUUoZyl7dmFyIGg7''@;'; put 'put ''bnVsbD09PShoPXRoaXMuXyRFUyl8fHZvaWQgMD09PWh8fGguZm9yRWFjaCh2PT57dmFyIHk7cmV0dXJuIG51bGw9PT0oeT12Lmhvc3RVcGRhdGVkKXx8dm9pZCAwPT09eT92b2lkIDA6eS5jYWxsKHYpfSksdGhpcy5oYXNVcGRhdGVkfHwodGhpcy5oYXNVcGRhdGVkPSEwLHRoaXMuZmlyc3RV''@;'; put 'put ''cGRhdGVkKGcpKSx0aGlzLnVwZGF0ZWQoZyl9XyRFaygpe3RoaXMuXyRBTD1uZXcgTWFwLHRoaXMuaXNVcGRhdGVQZW5kaW5nPSExfWdldCB1cGRhdGVDb21wbGV0ZSgpe3JldHVybiB0aGlzLmdldFVwZGF0ZUNvbXBsZXRlKCl9Z2V0VXBkYXRlQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5fJEVf''@;'; put 'put ''fXNob3VsZFVwZGF0ZShnKXtyZXR1cm4hMH11cGRhdGUoZyl7dm9pZCAwIT09dGhpcy5fJEVDJiYodGhpcy5fJEVDLmZvckVhY2goKGgsdik9PnRoaXMuXyRFTyh2LHRoaXNbdl0saCkpLHRoaXMuXyRFQz12b2lkIDApLHRoaXMuXyRFaygpfXVwZGF0ZWQoZyl7fWZpcnN0VXBkYXRlZChnKXt9''@;'; put 'put ''fXZhciBVazskNy5maW5hbGl6ZWQ9ITAsJDcuZWxlbWVudFByb3BlcnRpZXM9bmV3IE1hcCwkNy5lbGVtZW50U3R5bGVzPVtdLCQ3LnNoYWRvd1Jvb3RPcHRpb25zPXttb2RlOiJvcGVuIn0sbnVsbD09R2t8fEdrKHtSZWFjdGl2ZUVsZW1lbnQ6JDd9KSwobnVsbCE9PShhaj1nbG9iYWxUaGlz''@;'; put 'put ''LnJlYWN0aXZlRWxlbWVudFZlcnNpb25zKSYmdm9pZCAwIT09YWo/YWo6Z2xvYmFsVGhpcy5yZWFjdGl2ZUVsZW1lbnRWZXJzaW9ucz1bXSkucHVzaCgiMS4zLjQiKTtjb25zdCBxNz1nbG9iYWxUaGlzLnRydXN0ZWRUeXBlcyxsaj1xNz9xNy5jcmVhdGVQb2xpY3koImxpdC1odG1sIix7Y3Jl''@;'; put 'put ''YXRlSFRNTDpkPT5kfSk6dm9pZCAwLEFwPWBsaXQkJHsoTWF0aC5yYW5kb20oKSsiIikuc2xpY2UoOSl9JGAsZXY9Ij8iK0FwLFl5PWA8JHtldn0+YCxSYT1kb2N1bWVudCx1Yz0oZD0iIik9PlJhLmNyZWF0ZUNvbW1lbnQoZCksUWs9ZD0+bnVsbD09PWR8fCJvYmplY3QiIT10eXBlb2YgZCYm''@;'; put 'put ''ImZ1bmN0aW9uIiE9dHlwZW9mIGQsc2o9QXJyYXkuaXNBcnJheSxhaD0vPCg/OighLS18XC9bXmEtekEtWl0pfChcLz9bYS16QS1aXVtePlxzXSopfChcLz8kKSkvZyxsaD0vLS0+L2csdHY9Lz4vZyx5cD1SZWdFeHAoIj58WyBcdFxuXGZccl0oPzooW15cXHNcIic+PS9dKykoWyBcdFxuXGZc''@;'; put 'put ''cl0qPVsgXHRcblxmXHJdKig/OlteIFx0XG5cZlxyXCInYDw+PV18KFwifCcpfCkpfCQpIiwiZyIpLGNqPS8nL2csSms9LyIvZyx3cD0vXig/OnNjcmlwdHxzdHlsZXx0ZXh0YXJlYXx0aXRsZSkkL2ksZmo9ZD0+KGcsLi4uaCk9Pih7XyRsaXRUeXBlJDpkLHN0cmluZ3M6Zyx2YWx1ZXM6aH0p''@;'; put 'put ''LG80PWZqKDEpLHAxZT1maigyKSxVeT1TeW1ib2wuZm9yKCJsaXQtbm9DaGFuZ2UiKSxOdT1TeW1ib2wuZm9yKCJsaXQtbm90aGluZyIpLExLPW5ldyBXZWFrTWFwLE9LPShkLGcsaCk9Pnt2YXIgdix5O2NvbnN0IEM9bnVsbCE9PSh2PW51bGw9PWg/dm9pZCAwOmgucmVuZGVyQmVmb3JlKSYm''@;'; put 'put ''dm9pZCAwIT09dj92Omc7bGV0IEk9Qy5fJGxpdFBhcnQkO2lmKHZvaWQgMD09PUkpe2NvbnN0IFo9bnVsbCE9PSh5PW51bGw9PWg/dm9pZCAwOmgucmVuZGVyQmVmb3JlKSYmdm9pZCAwIT09eT95Om51bGw7Qy5fJGxpdFBhcnQkPUk9bmV3IEp5KGcuaW5zZXJ0QmVmb3JlKHVjKCksWiksWix2''@;'; put 'put ''b2lkIDAsbnVsbCE9aD9oOnt9KX1yZXR1cm4gSS5fJEFJKGQpLEl9LFF5PVJhLmNyZWF0ZVRyZWVXYWxrZXIoUmEsMTI5LG51bGwsITEpO2NsYXNzIFhre2NvbnN0cnVjdG9yKHtzdHJpbmdzOmcsXyRsaXRUeXBlJDpofSx2KXtsZXQgeTt0aGlzLnBhcnRzPVtdO2xldCBDPTAsST0wO2NvbnN0''@;'; put 'put ''IFo9Zy5sZW5ndGgtMSx1ZT10aGlzLnBhcnRzLFtfZSxCZV09KChkLGcpPT57Y29uc3QgaD1kLmxlbmd0aC0xLHY9W107bGV0IHksQz0yPT09Zz8iPHN2Zz4iOiIiLEk9YWg7Zm9yKGxldCB1ZT0wO3VlPGg7dWUrKyl7Y29uc3QgX2U9ZFt1ZV07bGV0IEJlLE5lLEtlPS0xLHB0PTA7Zm9yKDtw''@;'; put 'put ''dDxfZS5sZW5ndGgmJihJLmxhc3RJbmRleD1wdCxOZT1JLmV4ZWMoX2UpLG51bGwhPT1OZSk7KXB0PUkubGFzdEluZGV4LEk9PT1haD8iIS0tIj09PU5lWzFdP0k9bGg6dm9pZCAwIT09TmVbMV0/ST10djp2b2lkIDAhPT1OZVsyXT8od3AudGVzdChOZVsyXSkmJih5PVJlZ0V4cCgiPC8iK05l''@;'; put 'put ''WzJdLCJnIikpLEk9eXApOnZvaWQgMCE9PU5lWzNdJiYoST15cCk6ST09PXlwPyI+Ij09PU5lWzBdPyhJPW51bGwhPXk/eTphaCxLZT0tMSk6dm9pZCAwPT09TmVbMV0/S2U9LTI6KEtlPUkubGFzdEluZGV4LU5lWzJdLmxlbmd0aCxCZT1OZVsxXSxJPXZvaWQgMD09PU5lWzNdP3lwOiciJz09''@;'; put 'put ''PU5lWzNdP0prOmNqKTpJPT09Smt8fEk9PT1jaj9JPXlwOkk9PT1saHx8ST09PXR2P0k9YWg6KEk9eXAseT12b2lkIDApO2NvbnN0IE90PUk9PT15cCYmZFt1ZSsxXS5zdGFydHNXaXRoKCIvPiIpPyIgIjoiIjtDKz1JPT09YWg/X2UrWXk6S2U+PTA/KHYucHVzaChCZSksX2Uuc2xpY2UoMCxL''@;'; put 'put ''ZSkrIiRsaXQkIitfZS5zbGljZShLZSkrQXArT3QpOl9lK0FwKygtMj09PUtlPyh2LnB1c2godm9pZCAwKSx1ZSk6T3QpfWNvbnN0IFo9QysoZFtoXXx8Ijw/PiIpKygyPT09Zz8iPC9zdmc+IjoiIik7aWYoIUFycmF5LmlzQXJyYXkoZCl8fCFkLmhhc093blByb3BlcnR5KCJyYXciKSl0aHJv''@;'; put 'put ''dyBFcnJvcigiaW52YWxpZCB0ZW1wbGF0ZSBzdHJpbmdzIGFycmF5Iik7cmV0dXJuW3ZvaWQgMCE9PWxqP2xqLmNyZWF0ZUhUTUwoWik6Wix2XX0pKGcsaCk7aWYodGhpcy5lbD1Yay5jcmVhdGVFbGVtZW50KF9lLHYpLFF5LmN1cnJlbnROb2RlPXRoaXMuZWwuY29udGVudCwyPT09aCl7Y29u''@;'; put 'put ''c3QgTmU9dGhpcy5lbC5jb250ZW50LEtlPU5lLmZpcnN0Q2hpbGQ7S2UucmVtb3ZlKCksTmUuYXBwZW5kKC4uLktlLmNoaWxkTm9kZXMpfWZvcig7bnVsbCE9PSh5PVF5Lm5leHROb2RlKCkpJiZ1ZS5sZW5ndGg8Wjspe2lmKDE9PT15Lm5vZGVUeXBlKXtpZih5Lmhhc0F0dHJpYnV0ZXMoKSl7''@;'; put 'put ''Y29uc3QgTmU9W107Zm9yKGNvbnN0IEtlIG9mIHkuZ2V0QXR0cmlidXRlTmFtZXMoKSlpZihLZS5lbmRzV2l0aCgiJGxpdCQiKXx8S2Uuc3RhcnRzV2l0aChBcCkpe2NvbnN0IHB0PUJlW0krK107aWYoTmUucHVzaChLZSksdm9pZCAwIT09cHQpe2NvbnN0IE90PXkuZ2V0QXR0cmlidXRlKHB0''@;'; put 'put ''LnRvTG93ZXJDYXNlKCkrIiRsaXQkIikuc3BsaXQoQXApLCR0PS8oWy4/QF0pPyguKikvLmV4ZWMocHQpO3VlLnB1c2goe3R5cGU6MSxpbmRleDpDLG5hbWU6JHRbMl0sc3RyaW5nczpPdCxjdG9yOiIuIj09PSR0WzFdP0JLOiI/Ij09PSR0WzFdP2RqOiJAIj09PSR0WzFdP1BLOktrfSl9ZWxz''@;'; put 'put ''ZSB1ZS5wdXNoKHt0eXBlOjYsaW5kZXg6Q30pfWZvcihjb25zdCBLZSBvZiBOZSl5LnJlbW92ZUF0dHJpYnV0ZShLZSl9aWYod3AudGVzdCh5LnRhZ05hbWUpKXtjb25zdCBOZT15LnRleHRDb250ZW50LnNwbGl0KEFwKSxLZT1OZS5sZW5ndGgtMTtpZihLZT4wKXt5LnRleHRDb250ZW50PXE3''@;'; put 'put ''P3E3LmVtcHR5U2NyaXB0OiIiO2ZvcihsZXQgcHQ9MDtwdDxLZTtwdCsrKXkuYXBwZW5kKE5lW3B0XSx1YygpKSxReS5uZXh0Tm9kZSgpLHVlLnB1c2goe3R5cGU6MixpbmRleDorK0N9KTt5LmFwcGVuZChOZVtLZV0sdWMoKSl9fX1lbHNlIGlmKDg9PT15Lm5vZGVUeXBlKWlmKHkuZGF0YT09''@;'; put 'put ''PWV2KXVlLnB1c2goe3R5cGU6MixpbmRleDpDfSk7ZWxzZXtsZXQgTmU9LTE7Zm9yKDstMSE9PShOZT15LmRhdGEuaW5kZXhPZihBcCxOZSsxKSk7KXVlLnB1c2goe3R5cGU6NyxpbmRleDpDfSksTmUrPUFwLmxlbmd0aC0xfUMrK319c3RhdGljIGNyZWF0ZUVsZW1lbnQoZyxoKXtjb25zdCB2''@;'; put 'put ''PVJhLmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7cmV0dXJuIHYuaW5uZXJIVE1MPWcsdn19ZnVuY3Rpb24gbnYoZCxnLGg9ZCx2KXt2YXIgeSxDLEksWjtpZihnPT09VXkpcmV0dXJuIGc7bGV0IHVlPXZvaWQgMCE9PXY/bnVsbD09PSh5PWguXyRDbCl8fHZvaWQgMD09PXk/dm9pZCAwOnlb''@;'; put 'put ''dl06aC5fJEN1O2NvbnN0IF9lPVFrKGcpP3ZvaWQgMDpnLl8kbGl0RGlyZWN0aXZlJDtyZXR1cm4obnVsbD09dWU/dm9pZCAwOnVlLmNvbnN0cnVjdG9yKSE9PV9lJiYobnVsbD09PShDPW51bGw9PXVlP3ZvaWQgMDp1ZS5fJEFPKXx8dm9pZCAwPT09Q3x8Qy5jYWxsKHVlLCExKSx2b2lkIDA9''@;'; put 'put ''PT1fZT91ZT12b2lkIDA6KHVlPW5ldyBfZShkKSx1ZS5fJEFUKGQsaCx2KSksdm9pZCAwIT09dj8obnVsbCE9PShJPShaPWgpLl8kQ2wpJiZ2b2lkIDAhPT1JP0k6Wi5fJENsPVtdKVt2XT11ZTpoLl8kQ3U9dWUpLHZvaWQgMCE9PXVlJiYoZz1udihkLHVlLl8kQVMoZCxnLnZhbHVlcyksdWUs''@;'; put 'put ''dikpLGd9Y2xhc3MgaGp7Y29uc3RydWN0b3IoZyxoKXt0aGlzLnY9W10sdGhpcy5fJEFOPXZvaWQgMCx0aGlzLl8kQUQ9Zyx0aGlzLl8kQU09aH1nZXQgcGFyZW50Tm9kZSgpe3JldHVybiB0aGlzLl8kQU0ucGFyZW50Tm9kZX1nZXQgXyRBVSgpe3JldHVybiB0aGlzLl8kQU0uXyRBVX1wKGcp''@;'; put 'put ''e3ZhciBoO2NvbnN0e2VsOntjb250ZW50OnZ9LHBhcnRzOnl9PXRoaXMuXyRBRCxDPShudWxsIT09KGg9bnVsbD09Zz92b2lkIDA6Zy5jcmVhdGlvblNjb3BlKSYmdm9pZCAwIT09aD9oOlJhKS5pbXBvcnROb2RlKHYsITApO1F5LmN1cnJlbnROb2RlPUM7bGV0IEk9UXkubmV4dE5vZGUoKSxa''@;'; put 'put ''PTAsdWU9MCxfZT15WzBdO2Zvcig7dm9pZCAwIT09X2U7KXtpZihaPT09X2UuaW5kZXgpe2xldCBCZTsyPT09X2UudHlwZT9CZT1uZXcgSnkoSSxJLm5leHRTaWJsaW5nLHRoaXMsZyk6MT09PV9lLnR5cGU/QmU9bmV3IF9lLmN0b3IoSSxfZS5uYW1lLF9lLnN0cmluZ3MsdGhpcyxnKTo2PT09''@;'; put 'put ''X2UudHlwZSYmKEJlPW5ldyBGSyhJLHRoaXMsZykpLHRoaXMudi5wdXNoKEJlKSxfZT15WysrdWVdfVohPT0obnVsbD09X2U/dm9pZCAwOl9lLmluZGV4KSYmKEk9UXkubmV4dE5vZGUoKSxaKyspfXJldHVybiBDfW0oZyl7bGV0IGg9MDtmb3IoY29uc3QgdiBvZiB0aGlzLnYpdm9pZCAwIT09''@;'; put 'put ''diYmKHZvaWQgMCE9PXYuc3RyaW5ncz8odi5fJEFJKGcsdixoKSxoKz12LnN0cmluZ3MubGVuZ3RoLTIpOnYuXyRBSShnW2hdKSksaCsrfX1jbGFzcyBKeXtjb25zdHJ1Y3RvcihnLGgsdix5KXt2YXIgQzt0aGlzLnR5cGU9Mix0aGlzLl8kQUg9TnUsdGhpcy5fJEFOPXZvaWQgMCx0aGlzLl8k''@;'; put 'put ''QUE9Zyx0aGlzLl8kQUI9aCx0aGlzLl8kQU09dix0aGlzLm9wdGlvbnM9eSx0aGlzLl8kQ189bnVsbD09PShDPW51bGw9PXk/dm9pZCAwOnkuaXNDb25uZWN0ZWQpfHx2b2lkIDA9PT1DfHxDfWdldCBfJEFVKCl7dmFyIGcsaDtyZXR1cm4gbnVsbCE9PShoPW51bGw9PT0oZz10aGlzLl8kQU0p''@;'; put 'put ''fHx2b2lkIDA9PT1nP3ZvaWQgMDpnLl8kQVUpJiZ2b2lkIDAhPT1oP2g6dGhpcy5fJENffWdldCBwYXJlbnROb2RlKCl7bGV0IGc9dGhpcy5fJEFBLnBhcmVudE5vZGU7Y29uc3QgaD10aGlzLl8kQU07cmV0dXJuIHZvaWQgMCE9PWgmJjExPT09Zy5ub2RlVHlwZSYmKGc9aC5wYXJlbnROb2Rl''@;'; put 'put ''KSxnfWdldCBzdGFydE5vZGUoKXtyZXR1cm4gdGhpcy5fJEFBfWdldCBlbmROb2RlKCl7cmV0dXJuIHRoaXMuXyRBQn1fJEFJKGcsaD10aGlzKXtnPW52KHRoaXMsZyxoKSxRayhnKT9nPT09TnV8fG51bGw9PWd8fCIiPT09Zz8odGhpcy5fJEFIIT09TnUmJnRoaXMuXyRBUigpLHRoaXMuXyRB''@;'; put 'put ''SD1OdSk6ZyE9PXRoaXMuXyRBSCYmZyE9PVV5JiZ0aGlzLlQoZyk6dm9pZCAwIT09Zy5fJGxpdFR5cGUkP3RoaXMuJChnKTp2b2lkIDAhPT1nLm5vZGVUeXBlP3RoaXMuayhnKTooZD0+c2ooZCl8fCJmdW5jdGlvbiI9PXR5cGVvZihudWxsPT1kP3ZvaWQgMDpkW1N5bWJvbC5pdGVyYXRvcl0p''@;'; put 'put ''KShnKT90aGlzLlMoZyk6dGhpcy5UKGcpfWooZyxoPXRoaXMuXyRBQil7cmV0dXJuIHRoaXMuXyRBQS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnLGgpfWsoZyl7dGhpcy5fJEFIIT09ZyYmKHRoaXMuXyRBUigpLHRoaXMuXyRBSD10aGlzLmooZykpfVQoZyl7dGhpcy5fJEFIIT09TnUmJlFr''@;'; put 'put ''KHRoaXMuXyRBSCk/dGhpcy5fJEFBLm5leHRTaWJsaW5nLmRhdGE9Zzp0aGlzLmsoUmEuY3JlYXRlVGV4dE5vZGUoZykpLHRoaXMuXyRBSD1nfSQoZyl7dmFyIGg7Y29uc3R7dmFsdWVzOnYsXyRsaXRUeXBlJDp5fT1nLEM9Im51bWJlciI9PXR5cGVvZiB5P3RoaXMuXyRBQyhnKToodm9pZCAw''@;'; put 'put ''PT09eS5lbCYmKHkuZWw9WGsuY3JlYXRlRWxlbWVudCh5LmgsdGhpcy5vcHRpb25zKSkseSk7aWYoKG51bGw9PT0oaD10aGlzLl8kQUgpfHx2b2lkIDA9PT1oP3ZvaWQgMDpoLl8kQUQpPT09Qyl0aGlzLl8kQUgubSh2KTtlbHNle2NvbnN0IEk9bmV3IGhqKEMsdGhpcyksWj1JLnAodGhpcy5v''@;'; put 'put ''cHRpb25zKTtJLm0odiksdGhpcy5rKFopLHRoaXMuXyRBSD1JfX1fJEFDKGcpe2xldCBoPUxLLmdldChnLnN0cmluZ3MpO3JldHVybiB2b2lkIDA9PT1oJiZMSy5zZXQoZy5zdHJpbmdzLGg9bmV3IFhrKGcpKSxofVMoZyl7c2oodGhpcy5fJEFIKXx8KHRoaXMuXyRBSD1bXSx0aGlzLl8kQVIo''@;'; put 'put ''KSk7Y29uc3QgaD10aGlzLl8kQUg7bGV0IHYseT0wO2Zvcihjb25zdCBDIG9mIGcpeT09PWgubGVuZ3RoP2gucHVzaCh2PW5ldyBKeSh0aGlzLmoodWMoKSksdGhpcy5qKHVjKCkpLHRoaXMsdGhpcy5vcHRpb25zKSk6dj1oW3ldLHYuXyRBSShDKSx5Kys7eTxoLmxlbmd0aCYmKHRoaXMuXyRB''@;'; put 'put ''Uih2JiZ2Ll8kQUIubmV4dFNpYmxpbmcseSksaC5sZW5ndGg9eSl9XyRBUihnPXRoaXMuXyRBQS5uZXh0U2libGluZyxoKXt2YXIgdjtmb3IobnVsbD09PSh2PXRoaXMuXyRBUCl8fHZvaWQgMD09PXZ8fHYuY2FsbCh0aGlzLCExLCEwLGgpO2cmJmchPT10aGlzLl8kQUI7KXtjb25zdCB5PWcu''@;'; put 'put ''bmV4dFNpYmxpbmc7Zy5yZW1vdmUoKSxnPXl9fXNldENvbm5lY3RlZChnKXt2YXIgaDt2b2lkIDA9PT10aGlzLl8kQU0mJih0aGlzLl8kQ189ZyxudWxsPT09KGg9dGhpcy5fJEFQKXx8dm9pZCAwPT09aHx8aC5jYWxsKHRoaXMsZykpfX1jbGFzcyBLa3tjb25zdHJ1Y3RvcihnLGgsdix5LEMp''@;'; put 'put ''e3RoaXMudHlwZT0xLHRoaXMuXyRBSD1OdSx0aGlzLl8kQU49dm9pZCAwLHRoaXMuZWxlbWVudD1nLHRoaXMubmFtZT1oLHRoaXMuXyRBTT15LHRoaXMub3B0aW9ucz1DLHYubGVuZ3RoPjJ8fCIiIT09dlswXXx8IiIhPT12WzFdPyh0aGlzLl8kQUg9QXJyYXkodi5sZW5ndGgtMSkuZmlsbChu''@;'; put 'put ''ZXcgU3RyaW5nKSx0aGlzLnN0cmluZ3M9dik6dGhpcy5fJEFIPU51fWdldCB0YWdOYW1lKCl7cmV0dXJuIHRoaXMuZWxlbWVudC50YWdOYW1lfWdldCBfJEFVKCl7cmV0dXJuIHRoaXMuXyRBTS5fJEFVfV8kQUkoZyxoPXRoaXMsdix5KXtjb25zdCBDPXRoaXMuc3RyaW5ncztsZXQgST0hMTtp''@;'; put 'put ''Zih2b2lkIDA9PT1DKWc9bnYodGhpcyxnLGgsMCksST0hUWsoZyl8fGchPT10aGlzLl8kQUgmJmchPT1VeSxJJiYodGhpcy5fJEFIPWcpO2Vsc2V7Y29uc3QgWj1nO2xldCB1ZSxfZTtmb3IoZz1DWzBdLHVlPTA7dWU8Qy5sZW5ndGgtMTt1ZSsrKV9lPW52KHRoaXMsWlt2K3VlXSxoLHVlKSxf''@;'; put 'put ''ZT09PVV5JiYoX2U9dGhpcy5fJEFIW3VlXSksSXx8KEk9IVFrKF9lKXx8X2UhPT10aGlzLl8kQUhbdWVdKSxfZT09PU51P2c9TnU6ZyE9PU51JiYoZys9KG51bGwhPV9lP19lOiIiKStDW3VlKzFdKSx0aGlzLl8kQUhbdWVdPV9lfUkmJiF5JiZ0aGlzLlAoZyl9UChnKXtnPT09TnU/dGhpcy5l''@;'; put 'put ''bGVtZW50LnJlbW92ZUF0dHJpYnV0ZSh0aGlzLm5hbWUpOnRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLG51bGwhPWc/ZzoiIil9fWNsYXNzIEJLIGV4dGVuZHMgS2t7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMudHlwZT0zfVAoZyl7dGhpcy5lbGVt''@;'; put 'put ''ZW50W3RoaXMubmFtZV09Zz09PU51P3ZvaWQgMDpnfX1jb25zdCBsTD1xNz9xNy5lbXB0eVNjcmlwdDoiIjtjbGFzcyBkaiBleHRlbmRzIEtre2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnR5cGU9NH1QKGcpe2cmJmchPT1OdT90aGlzLmVsZW1lbnQuc2V0QXR0cmli''@;'; put 'put ''dXRlKHRoaXMubmFtZSxsTCk6dGhpcy5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSh0aGlzLm5hbWUpfX1jbGFzcyBQSyBleHRlbmRzIEtre2NvbnN0cnVjdG9yKGcsaCx2LHksQyl7c3VwZXIoZyxoLHYseSxDKSx0aGlzLnR5cGU9NX1fJEFJKGcsaD10aGlzKXt2YXIgdjtpZigoZz1udWxsIT09''@;'; put 'put ''KHY9bnYodGhpcyxnLGgsMCkpJiZ2b2lkIDAhPT12P3Y6TnUpPT09VXkpcmV0dXJuO2NvbnN0IHk9dGhpcy5fJEFILEM9Zz09PU51JiZ5IT09TnV8fGcuY2FwdHVyZSE9PXkuY2FwdHVyZXx8Zy5vbmNlIT09eS5vbmNlfHxnLnBhc3NpdmUhPT15LnBhc3NpdmUsST1nIT09TnUmJih5PT09TnV8''@;'; put 'put ''fEMpO0MmJnRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMubmFtZSx0aGlzLHkpLEkmJnRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHRoaXMubmFtZSx0aGlzLGcpLHRoaXMuXyRBSD1nfWhhbmRsZUV2ZW50KGcpe3ZhciBoLHY7ImZ1bmN0aW9uIj09dHlwZW9mIHRo''@;'; put 'put ''aXMuXyRBSD90aGlzLl8kQUguY2FsbChudWxsIT09KHY9bnVsbD09PShoPXRoaXMub3B0aW9ucyl8fHZvaWQgMD09PWg/dm9pZCAwOmguaG9zdCkmJnZvaWQgMCE9PXY/djp0aGlzLmVsZW1lbnQsZyk6dGhpcy5fJEFILmhhbmRsZUV2ZW50KGcpfX1jbGFzcyBGS3tjb25zdHJ1Y3RvcihnLGgs''@;'; put 'put ''dil7dGhpcy5lbGVtZW50PWcsdGhpcy50eXBlPTYsdGhpcy5fJEFOPXZvaWQgMCx0aGlzLl8kQU09aCx0aGlzLm9wdGlvbnM9dn1nZXQgXyRBVSgpe3JldHVybiB0aGlzLl8kQU0uXyRBVX1fJEFJKGcpe252KHRoaXMsZyl9fWNvbnN0IHBqPXdpbmRvdy5saXRIdG1sUG9seWZpbGxTdXBwb3J0''@;'; put 'put ''O3ZhciBnaixzTDtudWxsPT1wanx8cGooWGssSnkpLChudWxsIT09KFVrPWdsb2JhbFRoaXMubGl0SHRtbFZlcnNpb25zKSYmdm9pZCAwIT09VWs/VWs6Z2xvYmFsVGhpcy5saXRIdG1sVmVyc2lvbnM9W10pLnB1c2goIjIuMi43Iik7Y2xhc3MgWHkgZXh0ZW5kcyAkN3tjb25zdHJ1Y3Rvcigp''@;'; put 'put ''e3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZW5kZXJPcHRpb25zPXtob3N0OnRoaXN9LHRoaXMuXyREbz12b2lkIDB9Y3JlYXRlUmVuZGVyUm9vdCgpe3ZhciBnLGg7Y29uc3Qgdj1zdXBlci5jcmVhdGVSZW5kZXJSb290KCk7cmV0dXJuIG51bGwhPT0oZz0oaD10aGlzLnJlbmRlck9wdGlv''@;'; put 'put ''bnMpLnJlbmRlckJlZm9yZSkmJnZvaWQgMCE9PWd8fChoLnJlbmRlckJlZm9yZT12LmZpcnN0Q2hpbGQpLHZ9dXBkYXRlKGcpe2NvbnN0IGg9dGhpcy5yZW5kZXIoKTt0aGlzLmhhc1VwZGF0ZWR8fCh0aGlzLnJlbmRlck9wdGlvbnMuaXNDb25uZWN0ZWQ9dGhpcy5pc0Nvbm5lY3RlZCksc3Vw''@;'; put 'put ''ZXIudXBkYXRlKGcpLHRoaXMuXyREbz1PSyhoLHRoaXMucmVuZGVyUm9vdCx0aGlzLnJlbmRlck9wdGlvbnMpfWNvbm5lY3RlZENhbGxiYWNrKCl7dmFyIGc7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSxudWxsPT09KGc9dGhpcy5fJERvKXx8dm9pZCAwPT09Z3x8Zy5zZXRDb25uZWN0ZWQo''@;'; put 'put ''ITApfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dmFyIGc7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSxudWxsPT09KGc9dGhpcy5fJERvKXx8dm9pZCAwPT09Z3x8Zy5zZXRDb25uZWN0ZWQoITEpfXJlbmRlcigpe3JldHVybiBVeX19WHkuZmluYWxpemVkPSEwLFh5Ll8kbGl0RWxlbWVu''@;'; put 'put ''dCQ9ITAsbnVsbD09PShnaj1nbG9iYWxUaGlzLmxpdEVsZW1lbnRIeWRyYXRlU3VwcG9ydCl8fHZvaWQgMD09PWdqfHxnai5jYWxsKGdsb2JhbFRoaXMse0xpdEVsZW1lbnQ6WHl9KTtjb25zdCBtaj1nbG9iYWxUaGlzLmxpdEVsZW1lbnRQb2x5ZmlsbFN1cHBvcnQ7bnVsbD09bWp8fG1qKHtM''@;'; put 'put ''aXRFbGVtZW50Olh5fSksKG51bGwhPT0oc0w9Z2xvYmFsVGhpcy5saXRFbGVtZW50VmVyc2lvbnMpJiZ2b2lkIDAhPT1zTD9zTDpnbG9iYWxUaGlzLmxpdEVsZW1lbnRWZXJzaW9ucz1bXSkucHVzaCgiMy4yLjIiKTtjb25zdCBISz1pTGBAY2hhcnNldCAiVVRGLTgiOzpob3N0LDpyb290ey0t''@;'; put 'put ''zrQyOnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXh4cywgY2FsYyg0ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwgMjApKSk7LS3OtDM6dmFyKC0tY2RzLWdsb2JhbC1sYXlvdXQtc3BhY2UteHMsIGNhbGMoOCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIw''@;'; put 'put ''KSkpOy0tzrQ0OnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXNtLCBjYWxjKDEyICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwgMjApKSk7LS3OtDU6dmFyKC0tY2RzLWdsb2JhbC1sYXlvdXQtc3BhY2UtbWQsIGNhbGMoMTYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1i''@;'; put 'put ''YXNlLCAyMCkpKTstLc60Njp2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC1zcGFjZS1sZywgY2FsYygyNCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkpOy0tzrQ3OnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXhsLCBjYWxjKDMyICogMXJlbSAvIHZhcigtLWNkcy1n''@;'; put 'put ''bG9iYWwtYmFzZSwgMjApKSl9W2Nkcy1sYXlvdXR+PSJ3cmFwOm5vbmUiXXtmbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImFsaWduOnN0cmV0Y2giXXtmbGV4LWdyb3c6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJhbGlnbjpzaHJpbmsiXXtmbGV4LXNocmluazox''@;'; put 'put ''IWltcG9ydGFudDtmbGV4LWdyb3c6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC13cmFwOndyYXA7anVzdGlmeS1pdGVtczpmbGV4LXN0YXJ0O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7d2lkdGg6MTAwJTtt''@;'; put 'put ''YXJnaW46MDttaW4taGVpZ2h0OjB9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy10ZXh0XXt3aWR0aDppbml0''@;'; put 'put ''aWFsIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOnRvcCJde2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpsZWZ0Il17anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9''@;'; put 'put ''W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpyaWdodCJde2p1c3RpZnktY29udGVudDpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOnZlcnRpY2FsLWNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1j''@;'; put 'put ''b250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwtY2VudGVyIl17anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJde2FsaWduLWl0ZW1z''@;'; put 'put ''OmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0ib3JkZXI6cmV2ZXJzZSJde2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5''@;'; put 'put ''b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1zdHJldGNoIl17anVzdGlmeS1jb250ZW50OnN0cmV0Y2g7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLXN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jp''@;'; put 'put ''em9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246c3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7YWxpZ24tY29udGVudDpzdHJldGNoO2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246c3RyZXRjaCJdPip7ZmxleC1ncm93OjF9W2Nkcy1s''@;'; put 'put ''YXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246Y2VudGVyIl0sW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246dmVydGljYWwtY2VudGVyIl17YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0''@;'; put 'put ''Kj0iYWxpZ246Y2VudGVyIl0sW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1jZW50ZXIiXXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltj''@;'; put 'put ''ZHMtbGF5b3V0Kj0iYWxpZ246dG9wIl17YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduOnJpZ2h0Il17bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0i''@;'; put 'put ''YWxpZ246bGVmdCJde21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxde3dpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0sW2Nkcy1sYXlv''@;'; put 'put ''dXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ246dG9wIl17anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ246bGVmdCJde2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMt''@;'; put 'put ''bGF5b3V0Kj0iYWxpZ246cmlnaHQiXXthbGlnbi1pdGVtczpmbGV4LWVuZH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjp2ZXJ0aWNhbC1jZW50ZXIiXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFs''@;'; put 'put ''aWduOmhvcml6b250YWwtY2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxh''@;'; put 'put ''eW91dCo9Im9yZGVyOnJldmVyc2UiXXtmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZX1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLXN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNofVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxh''@;'; put 'put ''eW91dCo9ImFsaWduOnN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2p1c3RpZnktY29udGVudDpzdHJldGNofVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduOnN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlv''@;'; put 'put ''dXQqPSJhbGlnbjpjZW50ZXIiXSxbY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246dmVydGljYWwtY2VudGVyIl17bWFyZ2luLXRvcDphdXRvO21hcmdpbi1ib3R0b206YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246Y2VudGVy''@;'; put 'put ''Il0sW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwtY2VudGVyIl17YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduOnRvcCJde21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9W2Nk''@;'; put 'put ''cy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduOnJpZ2h0Il17bWFyZ2luLWxlZnQ6YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246bGVmdCJde21hcmdpbi1yaWdodDphdXRvfVtjZHMtbGF5b3V0fj1ncmlkXXtkaXNwbGF5OmdyaWQ7''@;'; put 'put ''YWxpZ24taXRlbXM6c3RhcnQ7YWxpZ24tY29udGVudDpzdGFydDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KHZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LWdyaWQtY29scywxMiksMWZyKTt3aWR0aDoxMDAlfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj1yb3dzXXtncmlkLXRl''@;'; put 'put ''bXBsYXRlLXJvd3M6cmVwZWF0KDEyLGF1dG8pfVtjZHMtbGF5b3V0fj1ncmlkXT5bY2RzLWxheW91dCo9cm93XXthbGlnbi1zZWxmOnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbjp0b3AiXXthbGlnbi1jb250ZW50OnN0YXJ0fVtjZHMtbGF5b3V0fj1ncmlk''@;'; put 'put ''XVtjZHMtbGF5b3V0Kj0iYWxpZ246cmlnaHQiXXtqdXN0aWZ5LWNvbnRlbnQ6ZW5kfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ246bGVmdCJde2p1c3RpZnktY29udGVudDpzdGFydH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwt''@;'; put 'put ''c3RyZXRjaCJde2p1c3RpZnktaXRlbXM6c3RyZXRjaDtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduOnN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2FsaWduLWNvbnRlbnQ6c3RyZXRjaDtqdXN0aWZ5LWl0ZW1zOnN0cmV0''@;'; put 'put ''Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbjp2ZXJ0aWNhbC1jZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jp''@;'; put 'put ''em9udGFsLWNlbnRlciJde2p1c3RpZnktaXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXI7anVzdGlmeS1pdGVtczpjZW50''@;'; put 'put ''ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn06OnNsb3R0ZWQoW2Nkcy1sYXlvdXR+PSJkaXNwbGF5OnNjcmVlbi1yZWFkZXItb25seSJdKSxbY2RzLWxheW91dH49ImRpc3BsYXk6c2NyZWVuLXJlYWRlci1vbmx5Il17cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O2NsaXA6cmVjdCgxcHgs''@;'; put 'put ''MXB4LDFweCwxcHgpO2NsaXAtcGF0aDppbnNldCg1MCUpO3BhZGRpbmc6MDtib3JkZXI6MDtoZWlnaHQ6MXB4O3dpZHRoOjFweDtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RvcDowO2xlZnQ6MDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImdhcDpu''@;'; put 'put ''b25lIl17Z2FwOjB9W2Nkcy1sYXlvdXQqPSJnYXA6eHhzIl17Z2FwOnZhcigtLc60Mil9W2Nkcy1sYXlvdXQqPSJnYXA6eHMiXXtnYXA6dmFyKC0tzrQzKX1bY2RzLWxheW91dCo9ImdhcDpzbSJde2dhcDp2YXIoLS3OtDQpfVtjZHMtbGF5b3V0Kj0iZ2FwOm1kIl17Z2FwOnZhcigtLc60NSl9''@;'; put 'put ''W2Nkcy1sYXlvdXQqPSJnYXA6bGciXXtnYXA6dmFyKC0tzrQ2KX1bY2RzLWxheW91dH49InA6bm9uZSJde3BhZGRpbmc6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwOnh4cyJde3BhZGRpbmc6dmFyKC0tzrQyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwOnhzIl17cGFkZGluZzp2YXIo''@;'; put 'put ''LS3OtDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InA6c20iXXtwYWRkaW5nOnZhcigtLc60NCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icDptZCJde3BhZGRpbmc6dmFyKC0tzrQ1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtOm1kIl17bWFyZ2luOnZhcigtLc60NSkhaW1wb3J0YW50''@;'; put 'put ''fVtjZHMtbGF5b3V0fj0icDpsZyJde3BhZGRpbmc6dmFyKC0tzrQ2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXk6eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS3OtDMpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS3OtDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteDpsZyJd''@;'; put 'put ''e3BhZGRpbmctbGVmdDp2YXIoLS3OtDYpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLc60NikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sOm1kIl17cGFkZGluZy1sZWZ0OnZhcigtLc60NSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10OmxnIl17cGFkZGluZy10b3A6dmFy''@;'; put 'put ''KC0tzrQ2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWI6bGciXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS3OtDYpIWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7W2Nkcy1sYXlvdXQqPSJnYXBAbWQ6bGciXXtnYXA6dmFyKC0tzrQ2KX1bY2RzLWxheW91dH49InBAbWQ6bGci''@;'; put 'put ''XXtwYWRkaW5nOnZhcigtLc60NikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBtZDp4bCJde21hcmdpbjp2YXIoLS3OtDcpIWltcG9ydGFudH19W2Nkcy1sYXlvdXR+PWZpbGxde3dpZHRoOjEwMCUhaW1wb3J0YW50fSosOmFmdGVyLDpiZWZvcmV7Ym94LXNpemluZzpib3JkZXItYm94fVtj''@;'; put 'put ''ZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1zdHJldGNoIl0+OjpzbG90dGVkKCopLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246c3RyZXRjaCJdPjo6c2xvdHRlZCgqKSxbY2RzLWxheW91dH49dmVydGljYWxd''@;'; put 'put ''W2Nkcy1sYXlvdXQqPSJhbGlnbjpzdHJldGNoIl0+OjpzbG90dGVkKCope2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0i''@;'; put 'put ''YWxpZ246dmVydGljYWwtY2VudGVyIl0pe21hcmdpbi10b3A6YXV0bzttYXJnaW4tYm90dG9tOmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlv''@;'; put 'put ''dXQqPSJhbGlnbjpob3Jpem9udGFsLWNlbnRlciJdKXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduOnRvcCJdKXttYXJnaW4tYm90dG9tOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpz''@;'; put 'put ''bG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246Ym90dG9tIl0pe21hcmdpbi10b3A6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjpyaWdodCJdKXttYXJnaW4tbGVmdDphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0g''@;'; put 'put ''OjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246bGVmdCJdKSxbY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246bGVmdCJde21hcmdpbi1yaWdodDphdXRvfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXtbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChb''@;'; put 'put ''Y2RzLWxheW91dCo9ImFsaWduQHhzOmNlbnRlciJdKSxbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOnZlcnRpY2FsLWNlbnRlciJdKXttYXJnaW4tdG9wOmF1dG87bWFyZ2luLWJvdHRvbTphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0g''@;'; put 'put ''OjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6aG9yaXpvbnRhbC1jZW50ZXIiXSl7YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNs''@;'; put 'put ''b3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czp0b3AiXSl7bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOmJvdHRvbSJdKXttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5''@;'; put 'put ''b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6cmlnaHQiXSl7bWFyZ2luLWxlZnQ6YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOmxlZnQiXSl7bWFyZ2luLXJpZ2h0OmF1dG99fUBtZWRpYSAo''@;'; put 'put ''bWluLXdpZHRoOjc2OHB4KXtbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOmNlbnRlciJdKSxbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOnZlcnRpY2FsLWNlbnRlciJdKXttYXJnaW4t''@;'; put 'put ''dG9wOmF1dG87bWFyZ2luLWJvdHRvbTphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206aG9yaXpvbnRhbC1jZW50''@;'; put 'put ''ZXIiXSl7YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTp0b3AiXSl7bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFs''@;'; put 'put ''aWduQHNtOmJvdHRvbSJdKXttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206cmlnaHQiXSl7bWFyZ2luLWxlZnQ6YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxh''@;'; put 'put ''eW91dCo9ImFsaWduQHNtOmxlZnQiXSl7bWFyZ2luLXJpZ2h0OmF1dG99fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXtbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQG1kOmNlbnRlciJdKSxbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRl''@;'; put 'put ''ZChbY2RzLWxheW91dCo9ImFsaWduQG1kOnZlcnRpY2FsLWNlbnRlciJdKXttYXJnaW4tdG9wOmF1dG87bWFyZ2luLWJvdHRvbTphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNh''@;'; put 'put ''bF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6aG9yaXpvbnRhbC1jZW50ZXIiXSl7YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDp0b3AiXSl7bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFu''@;'; put 'put ''dH1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQG1kOmJvdHRvbSJdKXttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6cmlnaHQiXSl7bWFyZ2lu''@;'; put 'put ''LWxlZnQ6YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQG1kOmxlZnQiXSl7bWFyZ2luLXJpZ2h0OmF1dG99fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQq''@;'; put 'put ''PSJhbGlnbkBsZzpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzp2ZXJ0aWNhbC1jZW50ZXIiXSl7bWFyZ2luLXRvcDphdXRvO21hcmdpbi1ib3R0b206YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChb''@;'; put 'put ''Y2RzLWxheW91dCo9ImFsaWduQGxnOmNlbnRlciJdKSxbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxnOmhvcml6b250YWwtY2VudGVyIl0pe2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMt''@;'; put 'put ''bGF5b3V0Kj0iYWxpZ25AbGc6dG9wIl0pe21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpib3R0b20iXSl7bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGlj''@;'; put 'put ''YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxnOnJpZ2h0Il0pe21hcmdpbi1sZWZ0OmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpsZWZ0Il0pe21hcmdpbi1yaWdodDphdXRvfX1AbWVkaWEgKG1pbi13aWR0aDox''@;'; put 'put ''NDQwcHgpe1tjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6dmVydGljYWwtY2VudGVyIl0pe21hcmdpbi10b3A6YXV0bztt''@;'; put 'put ''YXJnaW4tYm90dG9tOmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpob3Jpem9udGFsLWNlbnRlciJdKXthbGln''@;'; put 'put ''bi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOnRvcCJdKXttYXJnaW4tYm90dG9tOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6Ym90''@;'; put 'put ''dG9tIl0pe21hcmdpbi10b3A6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpyaWdodCJdKXttYXJnaW4tbGVmdDphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxp''@;'; put 'put ''Z25AeGw6bGVmdCJdKXttYXJnaW4tcmlnaHQ6YXV0b319W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJdKSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246dmVydGljYWwtY2Vu''@;'; put 'put ''dGVyIl0pe2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwtY2VudGVyIl0p''@;'; put 'put ''e21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50O21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246dG9wIl0pe2FsaWduLXNlbGY6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0g''@;'; put 'put ''OjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246Ym90dG9tIl0pe2FsaWduLXNlbGY6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduOnJpZ2h0Il0pe21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1o''@;'; put 'put ''b3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjpsZWZ0Il0pe21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOmNlbnRl''@;'; put 'put ''ciJdKSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6dmVydGljYWwtY2VudGVyIl0pe2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpjZW50ZXIi''@;'; put 'put ''XSksW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOmhvcml6b250YWwtY2VudGVyIl0pe21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50O21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpz''@;'; put 'put ''bG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6dG9wIl0pe2FsaWduLXNlbGY6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6Ym90dG9tIl0pe2FsaWduLXNlbGY6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6''@;'; put 'put ''b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOnJpZ2h0Il0pe21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpsZWZ0Il0pe21hcmdpbi1yaWdodDphdXRvIWltcG9y''@;'; put 'put ''dGFudH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpe1tjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOnZlcnRpY2Fs''@;'; put 'put ''LWNlbnRlciJdKXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpob3Jpem9udGFs''@;'; put 'put ''LWNlbnRlciJdKXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOnRvcCJdKXthbGlnbi1zZWxmOmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+''@;'; put 'put ''PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOmJvdHRvbSJdKXthbGlnbi1zZWxmOmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpyaWdodCJdKXttYXJnaW4tbGVmdDphdXRvIWltcG9y''@;'; put 'put ''dGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206bGVmdCJdKXttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXtbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMt''@;'; put 'put ''bGF5b3V0Kj0iYWxpZ25AbWQ6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDp2ZXJ0aWNhbC1jZW50ZXIiXSl7YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxh''@;'; put 'put ''eW91dCo9ImFsaWduQG1kOmNlbnRlciJdKSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6aG9yaXpvbnRhbC1jZW50ZXIiXSl7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fVtjZHMt''@;'; put 'put ''bGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDp0b3AiXSl7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpib3R0b20iXSl7YWxpZ24tc2VsZjpmbGV4''@;'; put 'put ''LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6cmlnaHQiXSl7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQG1kOmxlZnQiXSl7''@;'; put 'put ''bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpe1tjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxh''@;'; put 'put ''eW91dCo9ImFsaWduQGxnOnZlcnRpY2FsLWNlbnRlciJdKXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlv''@;'; put 'put ''dXQqPSJhbGlnbkBsZzpob3Jpem9udGFsLWNlbnRlciJdKXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxnOnRvcCJdKXthbGlnbi1zZWxm''@;'; put 'put ''OmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxnOmJvdHRvbSJdKXthbGlnbi1zZWxmOmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpyaWdodCJd''@;'; put 'put ''KXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6bGVmdCJdKXttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjE0NDBweCl7W2Nkcy1sYXlvdXR+PWhv''@;'; put 'put ''cml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOmNlbnRlciJdKSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6dmVydGljYWwtY2VudGVyIl0pe2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jp''@;'; put 'put ''em9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOmhvcml6b250YWwtY2VudGVyIl0pe21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50O21hcmdpbi1y''@;'; put 'put ''aWdodDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6dG9wIl0pe2FsaWduLXNlbGY6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6''@;'; put 'put ''Ym90dG9tIl0pe2FsaWduLXNlbGY6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOnJpZ2h0Il0pe21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1s''@;'; put 'put ''YXlvdXQqPSJhbGlnbkB4bDpsZWZ0Il0pe21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH19W2Nkcy10ZXh0XXtmb250LWZhbWlseTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC1mYW1pbHksICJDbGFyaXR5IENpdHkiLCAiQXZlbmlyIE5leHQiLCBzYW5zLXNlcmlmKTttYXJn''@;'; put 'put ''aW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowfVtjZHMtdGV4dF1bY2RzLWxheW91dH49Z3JpZF06OmFmdGVyLFtjZHMtdGV4dF1bY2RzLWxheW91dH49Z3JpZF06OmJlZm9yZSxbY2RzLXRleHRdW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdOjphZnRlcixbY2RzLXRleHRdW2Nkcy1sYXlvdXR+PWhv''@;'; put 'put ''cml6b250YWxdOjpiZWZvcmUsW2Nkcy10ZXh0XVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF06OmFmdGVyLFtjZHMtdGV4dF1bY2RzLWxheW91dH49dmVydGljYWxdOjpiZWZvcmV7ZGlzcGxheTpub25lfVtjZHMtdGV4dCo9ZGlzcGxheV0sW2Nkcy10ZXh0Kj1zZWN0aW9uXSxbY2RzLXRleHQqPXN1''@;'; put 'put ''YnNlY3Rpb25dLFtjZHMtdGV4dCo9dGl0bGVde2ZvbnQtZmFtaWx5OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1oZWFkZXItZm9udC1mYW1pbHksICJDbGFyaXR5IENpdHkiLCAiQXZlbmlyIE5leHQiLCBzYW5zLXNlcmlmKTtjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkt''@;'; put 'put ''Y29sb3ItNDAwLHZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTkwMCwjMjEzMzNiKSl9W2Nkcy10ZXh0Kj1ib2R5XSxbY2RzLXRleHQqPW1lc3NhZ2VdLFtjZHMtdGV4dCo9c2Vjb25kYXJ5XXtjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItNTAwLHZh''@;'; put 'put ''cigtLWNkcy1nbG9iYWwtY29sb3ItYmxhY2ssIzAwMCkpfVtjZHMtdGV4dCo9aW5saW5lXXt3aWR0aDphdXRvIWltcG9ydGFudDtkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9W2Nkcy10ZXh0Kj1kaXNwbGF5XXtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRp''@;'; put 'put ''c3BsYXktZm9udC1zaXplLGNhbGMoNDAgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1kaXNwbGF5LWZvbnQtd2VpZ2h0LDQwMCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5''@;'; put 'put ''LWRpc3BsYXktbGluZS1oZWlnaHQsMS4xZW0pO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1kaXNwbGF5LWxldHRlci1zcGFjaW5nLC0uMDEyNWVtKX1bY2RzLXRleHQqPWRpc3BsYXldOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDow''@;'; put 'put ''O3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRpc3BsYXktbGluZS1oZWlnaHQsMS4xZW0pIC0gMWVtKS8gMikpKi0xKSArIC4w''@;'; put 'put ''MzdlbSl9W2Nkcy10ZXh0Kj1kaXNwbGF5XTo6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSAtIHZhcigtLWNkcy1n''@;'; put 'put ''bG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQsLjE3MDNlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQsLjUxN2VtKSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlzcGxheS1saW5lLWhlaWdodCwxLjFlbSkgLSAxZW0pLyAyKSkq''@;'; put 'put ''LTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPXRpdGxlXXtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRpdGxlLWZvbnQtc2l6ZSxjYWxjKDI0ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9n''@;'; put 'put ''cmFwaHktdGl0bGUtZm9udC13ZWlnaHQsNDAwKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtbGluZS1oZWlnaHQsMS4xNjY2N2VtKTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtbGV0dGVyLXNwYWNpbmcsLS4w''@;'; put 'put ''MDgzMzNlbSl9W2Nkcy10ZXh0Kj10aXRsZV06OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgKyBjYWxjKCh2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtbGluZS1oZWlnaHQsMS4xNjY2N2VtKSAtIDFlbSkvIDIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9dGl0bGVdOjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVt''@;'; put 'put ''IC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCwuNTE3ZW0pKSArIGNhbGMo''@;'; put 'put ''KHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10aXRsZS1saW5lLWhlaWdodCwxLjE2NjY3ZW0pIC0gMWVtKS8gMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1zZWN0aW9uXXtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC1zaXplLGNhbGMo''@;'; put 'put ''MjAgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWN0aW9uLWZvbnQtd2VpZ2h0LDQwMCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tbGluZS1oZWlnaHQs''@;'; put 'put ''MS4yZW0pO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWN0aW9uLWxldHRlci1zcGFjaW5nLC0uMDFlbSl9W2Nkcy10ZXh0Kj1zZWN0aW9uXTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206''@;'; put 'put ''Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWN0aW9uLWxpbmUtaGVpZ2h0LDEuMmVtKSAtIDFlbSkvIDIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9c2VjdGlv''@;'; put 'put ''bl06OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5k''@;'; put 'put ''ZXItaGVpZ2h0LC4xNzAzZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0LC41MTdlbSkpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tbGluZS1oZWlnaHQsMS4yZW0pIC0gMWVtKS8gMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0''@;'; put 'put ''Kj1zdWJzZWN0aW9uXXtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tZm9udC1zaXplLGNhbGMoMTYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zdWJzZWN0''@;'; put 'put ''aW9uLWZvbnQtd2VpZ2h0LDQwMCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tbGluZS1oZWlnaHQsMS4yNWVtKTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1sZXR0ZXItc3BhY2luZywtLjAx''@;'; put 'put ''MjVlbSl9W2Nkcy10ZXh0Kj1zdWJzZWN0aW9uXTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSArIGNhbGMoKHZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxpbmUtaGVpZ2h0LDEuMjVlbSkgLSAxZW0pLyAyKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPXN1YnNlY3Rpb25dOjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNh''@;'; put 'put ''bGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCwuNTE3ZW0p''@;'; put 'put ''KSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxpbmUtaGVpZ2h0LDEuMjVlbSkgLSAxZW0pLyAyKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPWJvZHlde2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2Vp''@;'; put 'put ''Z2h0LDQwMCk7Zm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1ib2R5LWZvbnQtc2l6ZSxjYWxjKDE0ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYm9keS1sZXR0ZXItc3Bh''@;'; put 'put ''Y2luZywtLjAxNDI4NmVtKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYm9keS1saW5lLWhlaWdodCwxLjQyODU3ZW0pfVtjZHMtdGV4dCo9Ym9keV06OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9t''@;'; put 'put ''OmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYm9keS1saW5lLWhlaWdodCwxLjQyODU3ZW0pIC0gMWVtKS8gMikpKi0xKSArIC4xZW0pfVtjZHMtdGV4dCo9Ym9keV06''@;'; put 'put ''OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXIt''@;'; put 'put ''aGVpZ2h0LC4xNzAzZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0LC41MTdlbSkpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWJvZHktbGluZS1oZWlnaHQsMS40Mjg1N2VtKSAtIDFlbSkvIDIpKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9''@;'; put 'put ''bWVzc2FnZV17Zm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1tZXNzYWdlLWZvbnQtc2l6ZSxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbWVzc2FnZS1mb250LXdl''@;'; put 'put ''aWdodCxjYWxjKDQwMCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1lc3NhZ2UtbGluZS1oZWlnaHQsMS4yNWVtKTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbWVz''@;'; put 'put ''c2FnZS1sZXR0ZXItc3BhY2luZywtLjAxMjVlbSl9W2Nkcy10ZXh0Kj1tZXNzYWdlXTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwu''@;'; put 'put ''MTQ3NWVtKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1tZXNzYWdlLWxpbmUtaGVpZ2h0LDEuMjVlbSkgLSAxZW0pLyAyKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPW1lc3NhZ2VdOjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6''@;'; put 'put ''MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14''@;'; put 'put ''LWhlaWdodCwuNTE3ZW0pKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1tZXNzYWdlLWxpbmUtaGVpZ2h0LDEuMjVlbSkgLSAxZW0pLyAyKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPXNlY29uZGFyeV17Zm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBo''@;'; put 'put ''eS1zZWNvbmRhcnktZm9udC1zaXplLGNhbGMoMTMgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQsNDAwKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5''@;'; put 'put ''cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0LDEuMjMwNzdlbSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1sZXR0ZXItc3BhY2luZywtLjAwNzY5MmVtKX1bY2RzLXRleHQqPXNlY29uZGFyeV06OmJlZm9yZXtjb250ZW50OiIiO2Rp''@;'; put 'put ''c3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0LDEuMjMw''@;'; put 'put ''NzdlbSkgLSAxZW0pLyAyKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPXNlY29uZGFyeV06OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1o''@;'; put 'put ''ZWlnaHQsLjE0NzVlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0LC4xNzAzZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0LC41MTdlbSkpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1s''@;'; put 'put ''aW5lLWhlaWdodCwxLjIzMDc3ZW0pIC0gMWVtKS8gMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0fj1saW5rXXtjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbGluay1jb2xvcix2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtODAwLCMwMDYwOGEpKSFpbXBvcnRhbnQ7dGV4''@;'; put 'put ''dC1kZWNvcmF0aW9uOnVuZGVybGluZSFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6aW5oZXJpdCFpbXBvcnRhbnQ7Zm9udC1zaXplOmluaGVyaXQhaW1wb3J0YW50fVtjZHMtdGV4dH49bGlua106Zm9jdXN7b3V0bGluZTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUs''@;'; put 'put ''SGlnaGxpZ2h0IHNvbGlkIDJweCk7b3V0bGluZS1vZmZzZXQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lLW9mZnNldCwxcHgpfVtjZHMtdGV4dH49bGlua106aG92ZXJ7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWxpbmstY29sb3ItaG92ZXIs''@;'; put 'put ''dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTkwMCwjMDA0YjZiKSkhaW1wb3J0YW50fVtjZHMtdGV4dH49bGlua106dmlzaXRlZDpub3QoW2Nkcy10ZXh0fj1zdGF0aWNdKXtjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbGluay1jb2xvci12aXNpdGVkLHZhcigtLWNkcy1n''@;'; put 'put ''bG9iYWwtY29sb3ItbGF2ZW5kZXItNjAwLCMzYjQwY2UpKSFpbXBvcnRhbnR9W2Nkcy10ZXh0fj1saW5rXTp2aXNpdGVkOm5vdChbY2RzLXRleHR+PXN0YXRpY10pOmhvdmVye2NvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1saW5rLWNvbG9yLXZpc2l0ZWQtaG92ZXIsdmFyKC0t''@;'; put 'put ''Y2RzLWdsb2JhbC1jb2xvci1sYXZlbmRlci03MDAsIzI0MjljMikpIWltcG9ydGFudH1AbWVkaWEgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKXtbY2RzLXRleHQ9bGlua106Zm9jdXN7b3V0bGluZTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUt''@;'; put 'put ''d2Via2l0LDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcil9fVtjZHMtdGV4dH49Y29kZV17Y29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXIsdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNzAwLCNlMDIyMDApKTtmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1z''@;'; put 'put ''aXplOjEuMWVtfVtjZHMtZGl2aWRlcl17ZGlzcGxheTpibG9jaztoZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwLGNhbGMoMSAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6dmFyKC0tY2Rz''@;'; put 'put ''LWFsaWFzLW9iamVjdC1ib3JkZXItY29sb3IsdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMjAwLCNjYmQ0ZDgpKSAwIDAgMCB2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDAsY2FsYygxICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkp''@;'; put 'put ''KSBpbnNldH1bY2RzLXRleHR+PWxpZ2h0XXtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtbGlnaHQsMzAwKSFpbXBvcnRhbnR9W2Nkcy10ZXh0fj1qdXN0aWZ5XXt0ZXh0LWFsaWduOmp1c3RpZnkhaW1wb3J0YW50fVtjZHMtdGV4dH49bGVmdF17''@;'; put 'put ''dGV4dC1hbGlnbjpsZWZ0IWltcG9ydGFudH1bY2RzLXRleHR+PXJpZ2h0XXt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudH1bY2RzLXRleHR+PWNlbnRlcl17dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50fVtjZHMtdGV4dH49bGhlXXtwYWRkaW5nOi4wNXB4IDB9W2Nkcy10ZXh0fj1saGVd''@;'; put 'put ''OjpiZWZvcmV7Y29udGVudDoiIjttYXJnaW4tdG9wOi0uMTI0ZW07ZGlzcGxheTpibG9jaztoZWlnaHQ6MH1bY2RzLXRleHR+PWxoZV06OmFmdGVye2NvbnRlbnQ6IiI7bWFyZ2luLWJvdHRvbTotLjIyMWVtO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjB9W2Nkcy10ZXh0Kj1oMl0sW2Nkcy10ZXh0''@;'; put 'put ''Kj1oM117Zm9udC1mYW1pbHk6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWhlYWRlci1mb250LWZhbWlseSwgIkNsYXJpdHkgQ2l0eSIsICJBdmVuaXIgTmV4dCIsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZToxLjRyZW07Zm9udC13ZWlnaHQ6MjAwO2NvbG9yOnZhcigtLWNkcy1nbG9iYWwt''@;'; put 'put ''dHlwb2dyYXBoeS1jb2xvci00MDApO2xpbmUtaGVpZ2h0OjEuNzE0M2VtO2xldHRlci1zcGFjaW5nOi0uMDE3ODU3ZW19W2Nkcy10ZXh0Kj1oMl06OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgKyBjYWxjKCgxLjcxNDNlbSAtIDFlbSkvIDIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9aDJdOjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMo''@;'; put 'put ''KCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCwuNTE3ZW0pKSAr''@;'; put 'put ''IGNhbGMoKDEuNzE0M2VtIC0gMWVtKS8gMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1oM117Zm9udC1zaXplOjEuMXJlbTtsaW5lLWhlaWdodDoxLjA5MDllbTtsZXR0ZXItc3BhY2luZzotLjAxMzYzNmVtfVtjZHMtdGV4dCo9aDNdOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJs''@;'; put 'put ''b2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pICsgY2FsYygoMS4wOTA5ZW0gLSAxZW0pLyAyKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPWgzXTo6YWZ0ZXJ7Y29udGVu''@;'; put 'put ''dDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQsLjE3MDNl''@;'; put 'put ''bSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQsLjUxN2VtKSkgKyBjYWxjKCgxLjA5MDllbSAtIDFlbSkvIDIpKSotMSkgLSAuMDQ0ZW0pfTpob3N0e2FsbDppbml0aWFsO2Rpc3BsYXk6YmxvY2s7dmlzaWJpbGl0eTppbmhlcml0O2ZvbnQtZmFtaWx5OnZhcigtLWNk''@;'; put 'put ''cy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LWZhbWlseSwgIkNsYXJpdHkgQ2l0eSIsICJBdmVuaXIgTmV4dCIsIHNhbnMtc2VyaWYpO2NvbnRhaW46bGF5b3V0O2JveC1zaXppbmc6Ym9yZGVyLWJveCFpbXBvcnRhbnQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmUhaW1wb3J0YW50fSosOmFmdGVy''@;'; put 'put ''LDpiZWZvcmV7Ym94LXNpemluZzppbmhlcml0IWltcG9ydGFudH1zbG90e2ZvbnQtZmFtaWx5OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LWZhbWlseSwgIkNsYXJpdHkgQ2l0eSIsICJBdmVuaXIgTmV4dCIsIHNhbnMtc2VyaWYpO2Rpc3BsYXk6Y29udGVudHMhaW1wb3J0YW50''@;'; put 'put ''fTo6c2xvdHRlZCgqKXtmb250LWZhbWlseTppbmhlcml0O2JveC1zaXppbmc6aW5oZXJpdH06OnNsb3R0ZWQoKik6OnBsYWNlaG9sZGVye2NvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jb2xvci0yMDAsdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNjAwLCM0''@;'; put 'put ''ZjYxNjkpKX06aG9zdChbX2lzLWFuY2hvcl0pLDpob3N0KFtyb2xlPWJ1dHRvbl0pe2N1cnNvcjpwb2ludGVyIWltcG9ydGFudH06aG9zdChbX2lzLWFuY2hvcl0pIDo6c2xvdHRlZCgqKSw6aG9zdChbcm9sZT1idXR0b25dKSA6OnNsb3R0ZWQoKil7Y3Vyc29yOnBvaW50ZXIhaW1wb3J0YW50''@;'; put 'put ''fTpob3N0KFtyb2xlPWJ1dHRvbl1bZGlzYWJsZWRdKXtjdXJzb3I6bm90LWFsbG93ZWQhaW1wb3J0YW50fTpob3N0KFtyb2xlPWJ1dHRvbl1bZGlzYWJsZWRdKSA6OnNsb3R0ZWQoKil7Y3Vyc29yOm5vdC1hbGxvd2VkIWltcG9ydGFudDtwb2ludGVyLWV2ZW50czpub25lfTpob3N0KFtoaWRk''@;'; put 'put ''ZW5dKSxbaGlkZGVuXXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fTpob3N0KFtoaWRkZW4qPWZhbHNlXSl7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9Omhvc3QoW3JvbGU9ZGlhbG9nXVtoaWRkZW5dKSw6aG9zdChbcm9sZT1kaWFsb2ddW2hpZGRlbl0pIDo6c2xvdHRlZCgqKXtkaXNwbGF5OmJs''@;'; put 'put ''b2NrIWltcG9ydGFudDt2aXNpYmlsaXR5OmhpZGRlbiFpbXBvcnRhbnR9Omhvc3QoW3JvbGU9ZGlhbG9nXVtoaWRkZW4qPWZhbHNlXSksOmhvc3QoW3JvbGU9ZGlhbG9nXVtoaWRkZW4qPWZhbHNlXSkgOjpzbG90dGVkKCope3Zpc2liaWxpdHk6dmlzaWJsZSFpbXBvcnRhbnR9Omhvc3QoW19m''@;'; put 'put ''b2N1c2VkXSkgLmlucHV0LDpob3N0KFtfZm9jdXNlZF0pIFtmb2N1c2FibGVdLDpob3N0KFt0YWJpbmRleD0iMCJdOmZvY3VzKSw6aG9zdChbdGFiaW5kZXg9IjAiXTpmb2N1cykgW2ZvY3VzYWJsZV0sW3RhYmluZGV4PSIwIl1bZm9jdXNhYmxlXTpmb2N1c3tvdXRsaW5lOkhpZ2hsaWdodCBz''@;'; put 'put ''b2xpZCAycHg7b3V0bGluZTo1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1vZmZzZXQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lLW9mZnNldCwxcHgpfWA7ZnVuY3Rpb24gdmooZCl7cmV0dXJuYGNhbGMoKCR7ZH0gLyB2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLWJhc2UpKSAqIDFyZW0pYH1jb25zdCB3MWU9KGQsZyk9PiJtZXRob2QiPT09Zy5raW5kJiZnLmRlc2NyaXB0b3ImJiEoInZhbHVlImluIGcuZGVzY3JpcHRvcik/R3oobXMoe30sZykse2ZpbmlzaGVyKGgpe2guY3JlYXRlUHJvcGVydHkoZy5rZXksZCl9fSk6e2tpbmQ6ImZp''@;'; put 'put ''ZWxkIixrZXk6U3ltYm9sKCkscGxhY2VtZW50OiJvd24iLGRlc2NyaXB0b3I6e30sb3JpZ2luYWxLZXk6Zy5rZXksaW5pdGlhbGl6ZXIoKXsiZnVuY3Rpb24iPT10eXBlb2YgZy5pbml0aWFsaXplciYmKHRoaXNbZy5rZXldPWcuaW5pdGlhbGl6ZXIuY2FsbCh0aGlzKSl9LGZpbmlzaGVyKGgp''@;'; put 'put ''e2guY3JlYXRlUHJvcGVydHkoZy5rZXksZCl9fTtmdW5jdGlvbiBOSyhkKXtyZXR1cm4oZyxoKT0+dm9pZCAwIT09aD92b2lkIGcuY29uc3RydWN0b3IuY3JlYXRlUHJvcGVydHkoaCxkKTp3MWUoZCxnKX1mdW5jdGlvbiBWSyhkLGcpe3N3aXRjaChnJiZnLnR5cGUpe2Nhc2UgQXJyYXk6Y2Fz''@;'; put 'put ''ZSBPYmplY3Q6cmV0dXJuIG1zKHtyZWZsZWN0OiExfSxnKTtjYXNlIFN0cmluZzpyZXR1cm4gbXMoe3JlZmxlY3Q6ITAsYXR0cmlidXRlOkY3KGQpLGNvbnZlcnRlcjp7dG9BdHRyaWJ1dGU6aD0+aHx8bnVsbH19LGcpO2Nhc2UgTnVtYmVyOnJldHVybiBtcyh7cmVmbGVjdDohMCxhdHRyaWJ1''@;'; put 'put ''dGU6RjcoZCl9LGcpO2Nhc2UgQm9vbGVhbjpyZXR1cm4gbXMoe3JlZmxlY3Q6ITAsYXR0cmlidXRlOkY3KGQpLGNvbnZlcnRlcjp7dG9BdHRyaWJ1dGU6aD0+aD8iIjpudWxsLGZyb21BdHRyaWJ1dGU6aD0+ZnVuY3Rpb24gYzFlKGQpe3JldHVybiBudWxsIT1kJiYiIitkIT0iZmFsc2UifSho''@;'; put 'put ''KX19LGcpO2Nhc2UgRGF0ZTpyZXR1cm4gbXMoe3JlZmxlY3Q6ITEsY29udmVydGVyOntmcm9tQXR0cmlidXRlOmg9Pm5ldyBEYXRlKGgpfX0sZyk7ZGVmYXVsdDpyZXR1cm4gbXMoe30sZyl9fWZ1bmN0aW9uIEUxKGQpe3JldHVybihnLGgpPT4obnVsbCE9ZCYmZC5yZXF1aXJlZCYmZnVuY3Rp''@;'; put 'put ''b24gYjFlKGQsZyxoKXtjb25zdCB2PWQuZmlyc3RVcGRhdGVkO2QuZmlyc3RVcGRhdGVkPWZ1bmN0aW9uKHkpe2lmKGgmJmgucmVxdWlyZWQmJiQ2KHRoaXNbZ10pKXtjb25zdCBDPWgucmVxdWlyZWRNZXNzYWdlfHxmdW5jdGlvbihJPSJ3YXJuaW5nIixaLHVlKXtjb25zdCBfZT11ZS50b0xv''@;'; put 'put ''Y2FsZUxvd2VyQ2FzZSgpO3JldHVybmAke2VYKEkpfTogJHtafSBpcyByZXF1aXJlZCB0byB1c2UgJHtfZX0gY29tcG9uZW50LiBTZXQgdGhlIEpTIFByb3BlcnR5IG9yIEhUTUwgQXR0cmlidXRlLlxuXG5gKyhpVigpP2BBbmd1bGFyOiA8JHtfZX0gWyR7Wn1dPSIuLi4iPjwvJHtfZX0+XG5g''@;'; put 'put ''OiIiKSsoWEooKT9gVnVlOiA8JHtfZX0gOiR7Wn09Ii4uLiI+PC8ke19lfT5cbmA6IiIpKyhvVigpP2BSZWFjdDogPCR7ZnVuY3Rpb24gbXNlKGQpe3JldHVybiBlWChmdW5jdGlvbiBnc2UoZCl7cmV0dXJuIGQuc3BsaXQoIi0iKS5tYXAoKGcsaCk9Pmg/Zy5jaGFyQXQoMCkudG9VcHBlckNh''@;'; put 'put ''c2UoKStnLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCk6Zykuam9pbigiIil9KGQpKX0oX2UpfSAke0JlPVosQmUuc3RhcnRzV2l0aCgiYXJpYSIpP0Y3KEJlKTpCZX09ey4uLn0gLz5cbmA6IiIpK2BIVE1MOiA8JHtfZX0gJHtGNyhaKX09Ii4uLiI+PC8ke19lfT5cbkphdmFTY3JpcHQ6IGRvY3Vt''@;'; put 'put ''ZW50LnF1ZXJ5U2VsZWN0b3IoJyR7X2V9JykuJHtafSA9ICcuLi4nO1xuXG5gO3ZhciBCZX0oaC5yZXF1aXJlZCxnLHRoaXMudGFnTmFtZSk7aWYoImVycm9yIj09PWgucmVxdWlyZWQpdGhyb3cgRXJyb3IoQyk7Tjcud2FybihDLHRoaXMpfXYmJnYuY2FsbCh0aGlzLHkpfX0oZyxoLGQpLE5L''@;'; put 'put ''KFZLKGgsZCkpKGcsaCkpfWZ1bmN0aW9uIGpLKGQpe3JldHVybihnLGgpPT57Y29uc3Qgdj1WSyhoLGQpO3JldHVybiB2JiYodi5yZWZsZWN0PSEobnVsbD09ZHx8IWQucmVmbGVjdCkmJmQucmVmbGVjdCx2LnJlZmxlY3QmJiEobnVsbCE9ZCYmZC5hdHRyaWJ1dGUpJiYodi5hdHRyaWJ1dGU9''@;'; put 'put ''Il8iK0Y3KGgpKSksTksodikoZyxoKX19dmFyIGJwLGsxZT1pTGBAa2V5ZnJhbWVzIGZhZGVJbkFuZE91dHswJSx0b3tvcGFjaXR5OjB9NzUle29wYWNpdHk6MX19Omhvc3R7LS1jb2xvcjpjdXJyZW50Q29sb3I7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwt''@;'; put 'put ''c3BhY2UtNyxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcsY2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcs''@;'; put 'put ''Y2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttYXJnaW46MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZmlsbDp2YXIo''@;'; put 'put ''LS1jb2xvcik7Y29sb3I6dmFyKC0tY29sb3IpO2NvbnRhaW46c3RyaWN0O2N1cnNvcjppbmhlcml0fXN2Z3tkaXNwbGF5OmJsb2NrfTpob3N0KFtzaXplKj14c10pe2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwy''@;'; put 'put ''MCkpKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSxjYWxjKDggKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO21pbi13''@;'; put 'put ''aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKX06aG9zdChbc2l6ZSo9c21dKXtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03LGNhbGMoMTYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIw''@;'; put 'put ''KSkpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4t''@;'; put 'put ''d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03LGNhbGMoMTYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpfTpob3N0KFtzaXplKj1tZF0pe2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTksY2FsYygyNCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2Us''@;'; put 'put ''MjApKSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05LGNhbGMoMjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05LGNhbGMoMjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO21p''@;'; put 'put ''bi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTksY2FsYygyNCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSl9Omhvc3QoW3NpemUqPWxnXSl7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEsY2FsYygzNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJh''@;'; put 'put ''c2UsMjApKSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSxjYWxjKDM2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEsY2FsYygzNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjAp''@;'; put 'put ''KSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEsY2FsYygzNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSl9Omhvc3QoW3NpemUqPXhsXSl7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTIsY2FsYyg0OCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xv''@;'; put 'put ''YmFsLWJhc2UsMjApKSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMixjYWxjKDQ4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTIsY2FsYyg0OCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJh''@;'; put 'put ''c2UsMjApKSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTIsY2FsYyg0OCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSl9Omhvc3QoW3NpemUqPXh4bF0pe2hlaWdodDpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTMsY2FsYyg2NCAqIDFyZW0gLyB2''@;'; put 'put ''YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKSk7d2lkdGg6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEzLGNhbGMoNjQgKiAxcmVtIC8gdmFyKC0tY2RzLWds''@;'; put 'put ''b2JhbC1iYXNlLDIwKSkpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01LGNhbGMoOCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSkpO21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEzLGNhbGMoNjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1i''@;'; put 'put ''YXNlLDIwKSkpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01LGNhbGMoOCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSkpO21pbi13aWR0aDpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTMsY2FsYyg2NCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjAp''@;'; put 'put ''KSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKSl9Omhvc3QoW3NpemUqPWZpdF0pe2hlaWdodDphdXRvO3dpZHRoOmF1dG87Y29udGFpbjpsYXlvdXR9Omhvc3QoW3N0YXR1cz1zdWNjZXNzXSl7LS1jb2xvcjp2''@;'; put 'put ''YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3MsIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNzAwLCAjNDI4MTBlKSl9Omhvc3QoW3N0YXR1cz1kYW5nZXJdKXstLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC03''@;'; put 'put ''MDAsICNlMDIyMDApKX06aG9zdChbc3RhdHVzPXdhcm5pbmddKXstLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtd2FybmluZy1kYXJrLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTgwMCwgI2EzNjUwMCkpfTpob3N0KFtzdGF0dXM9aW5mb10pey0tY29sb3I6dmFyKC0tY2Rz''@;'; put 'put ''LWFsaWFzLXN0YXR1cy1pbmZvLXNoYWRlLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtODAwLCAjMDA2MDhhKSl9Omhvc3QoW2ludmVyc2VdKXstLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTIwMCwgI2NiZDRkOCl9Omhvc3QoW2RpcmVjdGlvbj11cF0p''@;'; put 'put ''e3RyYW5zZm9ybTpyb3RhdGUoMCl9Omhvc3QoW2RpcmVjdGlvbj1kb3duXSl7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfTpob3N0KFtkaXJlY3Rpb249cmlnaHRdKXt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX06aG9zdChbZGlyZWN0aW9uPWxlZnRdKXt0cmFuc2Zvcm06cm90YXRlKDI3MGRl''@;'; put 'put ''Zyl9Omhvc3QoW2ZsaXA9aG9yaXpvbnRhbF0pe3RyYW5zZm9ybTpzY2FsZSgtMSkgcm90YXRlWCgxODBkZWcpfTpob3N0KFtmbGlwPXZlcnRpY2FsXSl7dHJhbnNmb3JtOnNjYWxlKC0xKSByb3RhdGVZKDE4MGRlZyl9LmFsZXJ0LC5iYWRnZXtmaWxsOnZhcigtLWJhZGdlLWNvbG9yLHZhcigt''@;'; put 'put ''LWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLHZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTcwMCwjZTAyMjAwKSkpfTpob3N0KFtiYWRnZT1zdWNjZXNzXSl7LS1iYWRnZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3MsIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4t''@;'; put 'put ''NzAwLCAjNDI4MTBlKSl9Omhvc3QoW2JhZGdlPWRhbmdlcl0pey0tYmFkZ2UtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXIsIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTcwMCwgI2UwMjIwMCkpfTpob3N0KFtiYWRnZSo9d2FybmluZ10pey0tYmFkZ2UtY29sb3I6dmFy''@;'; put 'put ''KC0tY2RzLWFsaWFzLXN0YXR1cy13YXJuaW5nLWRhcmssIHZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtODAwLCAjYTM2NTAwKSl9Omhvc3QoW2JhZGdlPWluaGVyaXRdKXstLWJhZGdlLWNvbG9yOmN1cnJlbnRDb2xvcn06aG9zdChbYmFkZ2U9aW5mb10pey0tYmFkZ2UtY29sb3I6dmFy''@;'; put 'put ''KC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNzAwLCAjMDA3OWFkKSl9Omhvc3QoW2JhZGdlPWluaGVyaXQtdHJpYW5nbGVdKXstLWJhZGdlLWNvbG9yOmN1cnJlbnRDb2xvcn06aG9zdChbYmFkZ2VdW2ludmVyc2VdKXstLWJhZGdlLWNvbG9y''@;'; put 'put ''OnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC03MDAsICNlMDIyMDApKX06aG9zdChbYmFkZ2U9c3VjY2Vzc11baW52ZXJzZV0pey0tYmFkZ2UtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1zdWNjZXNzLCB2YXIoLS1jZHMtZ2xv''@;'; put 'put ''YmFsLWNvbG9yLWdyZWVuLTcwMCwgIzQyODEwZSkpfTpob3N0KFtiYWRnZSo9d2FybmluZ11baW52ZXJzZV0pey0tYmFkZ2UtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy13YXJuaW5nLWRhcmssIHZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtODAwLCAjYTM2NTAwKSl9Omhvc3Qo''@;'; put 'put ''W2JhZGdlKj1pbmhlcml0XVtpbnZlcnNlXSl7LS1iYWRnZS1jb2xvcjpjdXJyZW50Q29sb3J9Omhvc3QoW2JhZGdlPWluZm9dW2ludmVyc2VdKXstLWJhZGdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtaW5mbywgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCwgIzAwNzlh''@;'; put 'put ''ZCkpfS5jZHMtaW50ZXJuYWwtZG90LTF7YW5pbWF0aW9uOmZhZGVJbkFuZE91dCAxLjhzIGVhc2UtaW4gMHMgaW5maW5pdGV9LmNkcy1pbnRlcm5hbC1kb3QtMnthbmltYXRpb246ZmFkZUluQW5kT3V0IDEuOHMgZWFzZS1vdXQgLjQyMnMgaW5maW5pdGV9LmNkcy1pbnRlcm5hbC1kb3QtM3th''@;'; put 'put ''bmltYXRpb246ZmFkZUluQW5kT3V0IDEuOHMgZWFzZS1vdXQgLjY3NXMgaW5maW5pdGV9QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uKXsuY2RzLWludGVybmFsLWRvdC0xLC5jZHMtaW50ZXJuYWwtZG90LTIsLmNkcy1pbnRlcm5hbC1kb3QtM3thbmltYXRpb246bm9uZX19YDtmdW5j''@;'; put 'put ''dGlvbiB1TChkLGcpe2xldCBoPSIiO3N3aXRjaChmdW5jdGlvbiBTMWUoZCl7c3dpdGNoKCEwKXtjYXNlICQ2KGQpOnJldHVybiBicC5OaWxTaXplVmFsdWU7Y2FzZSBmdW5jdGlvbiBaSyhkKXtyZXR1cm5bInh4cyIsInhzIiwic20iLCJtZCIsImxnIiwieGwiLCJ4eGwiXS5pbmRleE9mKGQp''@;'; put 'put ''Pi0xfShkKTpyZXR1cm4gYnAuVmFsaWRTaXplU3RyaW5nO2Nhc2UgZnVuY3Rpb24gTUQoZCl7cmV0dXJuIGtrKGQpJiYhS04oZC50cmltKCkpJiYrZD09K2R9KGQpOnJldHVybiBicC5WYWxpZE51bWVyaWNTdHJpbmc7ZGVmYXVsdDpyZXR1cm4gYnAuQmFkU2l6ZVZhbHVlfX0oZnVuY3Rpb24g''@;'; put 'put ''TTFlKGQpe3JldHVybiAkNihkKT8iIjpmdW5jdGlvbiBBc2UoZCxnLGg9IiIpe2NvbnN0IHY9ZC5zcGxpdCgiICIpLHk9IiI9PT1oP3YuZmlsdGVyKEM9PkMhPT1nKTp2Lm1hcChDPT5DPT09Zz9oOkMpO3JldHVybiB5Lmxlbmd0aD4wP3kuam9pbigiICIpOiIifShkLCJmaXQiKX0oZykpKXtj''@;'; put 'put ''YXNlIGJwLlZhbGlkTnVtZXJpY1N0cmluZzpyZXR1cm4gaD12aihwYXJzZUludChnKSksdm9pZCBmdW5jdGlvbiBBMWUoZCwuLi5nKXtnLmZvckVhY2goKFtoLHZdKT0+e2Quc3R5bGVbaF09dn0pfShkLC4uLmZ1bmN0aW9uIGYwKGQsZyl7cmV0dXJuIUl5KGQpJiZkLmluZGV4T2YoImZpdCIp''@;'; put 'put ''Pi0xP1tbIndpZHRoIiwiYXV0byJdLFsiaGVpZ2h0IiwiYXV0byJdLFsibWluLXdpZHRoIixnXSxbIm1pbi1oZWlnaHQiLGddXTpbWyJ3aWR0aCIsZ10sWyJoZWlnaHQiLGddLFsibWluLXdpZHRoIixnXSxbIm1pbi1oZWlnaHQiLGddXX0oZyxoKSk7Y2FzZSBicC5WYWxpZFNpemVTdHJpbmc6''@;'; put 'put ''Y2FzZSBicC5OaWxTaXplVmFsdWU6cmV0dXJuIHZvaWQgZnVuY3Rpb24geTFlKGQsLi4uZyl7Zy5mb3JFYWNoKGg9PntkLnN0eWxlW2hdPSIifSl9KGQsIndpZHRoIiwiaGVpZ2h0IiwibWluLXdpZHRoIiwibWluLWhlaWdodCIpO2RlZmF1bHQ6cmV0dXJufX1mdW5jdGlvbiBjTChkKXtyZXR1''@;'; put 'put ''cm4gZC5iYWRnZSYmKCJpbmhlcml0LXRyaWFuZ2xlIj09PWQuYmFkZ2V8fCJ3YXJuaW5nLXRyaWFuZ2xlIj09PWQuYmFkZ2UpfSFmdW5jdGlvbihkKXtkLkJhZFNpemVWYWx1ZT0iYmFkLXZhbHVlIixkLlZhbGlkU2l6ZVN0cmluZz0idmFsdWUtaXMtc3RyaW5nIixkLlZhbGlkTnVtZXJpY1N0''@;'; put 'put ''cmluZz0idmFsdWUtaXMtbnVtZXJpYyIsZC5OaWxTaXplVmFsdWU9InZhbHVlLWlzLW5pbCJ9KGJwfHwoYnA9e30pKTtjbGFzcyBhNCBleHRlbmRzIFh5e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9zaGFwZT0idW5rbm93biIsdGhpcy5zb2xpZD0hMSx0aGlzLmlu''@;'; put 'put ''dmVyc2U9ITF9c3RhdGljIGdldCBzdHlsZXMoKXtyZXR1cm5bSEssazFlXX1nZXQgc2hhcGUoKXtyZXR1cm4gdGhpcy5fc2hhcGV9c2V0IHNoYXBlKGcpe2lmKGZ1bmN0aW9uIGNnKGQsZyl7cmV0dXJuISQ2KGQpJiZHSihkLGcpfShnLHRoaXMuX3NoYXBlKSl7Y29uc3QgaD10aGlzLl9zaGFw''@;'; put 'put ''ZTt0aGlzLl9zaGFwZT1nLHRoaXMucmVxdWVzdFVwZGF0ZSgic2hhcGUiLGgpfX1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfXNldCBzaXplKGcpe2lmKGZ1bmN0aW9uIFdKKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIHpKKGQpe3JldHVybiBiRChTdHJpbmcsZCl8fEl5KGQpfShkKSYmR0oo''@;'; put 'put ''ZCxnKX0oZyx0aGlzLl9zaXplKSl7Y29uc3QgaD10aGlzLl9zaXplO3RoaXMuX3NpemU9Zyx1TCh0aGlzLGcpLHRoaXMucmVxdWVzdFVwZGF0ZSgic2l6ZSIsaCl9fXVwZGF0ZWQoZyl7aWYoZy5oYXMoImlubmVyT2Zmc2V0IikmJnRoaXMuaW5uZXJPZmZzZXQ+MCl7Y29uc3QgaD12aigtMSp0''@;'; put 'put ''aGlzLmlubmVyT2Zmc2V0KSx2PWBjYWxjKDEwMCUgKyAke3ZqKDIqdGhpcy5pbm5lck9mZnNldCl9KWA7dGhpcy5zdmcuc3R5bGUud2lkdGg9dix0aGlzLnN2Zy5zdHlsZS5oZWlnaHQ9dix0aGlzLnN2Zy5zdHlsZS5tYXJnaW49YCR7aH0gMCAwICR7aH1gfX1maXJzdFVwZGF0ZWQoZyl7aWYo''@;'; put 'put ''c3VwZXIuZmlyc3RVcGRhdGVkKGcpLHRoaXMuaXNDb25uZWN0ZWQpe2xldCBoPSJ1bmtub3duIjt0aGlzLnN1YnNjcmlwdGlvbj1KMS5zdGF0ZVVwZGF0ZXMuc3Vic2NyaWJlKHY9PnsiaWNvblJlZ2lzdHJ5Ij09PXYua2V5JiZocy5yZWdpc3RyeVt0aGlzLnNoYXBlXSYmaCE9PXRoaXMuc2hh''@;'; put 'put ''cGUmJihoPXRoaXMuc2hhcGUsdGhpcy5yZXF1ZXN0VXBkYXRlKCJzaGFwZSIpKX0pfX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3ZhciBnO3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksbnVsbD09KGc9dGhpcy5zdWJzY3JpcHRpb24pfHxnLnVuc3Vic2NyaWJlKCl9cmVuZGVyKCl7cmV0''@;'; put 'put ''dXJuIGtrKGhzLnJlZ2lzdHJ5W3RoaXMuc2hhcGVdKT9vNGA8c3BhbiAuaW5uZXJIVE1MPSIke2hzLnJlZ2lzdHJ5W3RoaXMuc2hhcGVdfSI+PC9zcGFuPmA6cDFlYDxzdmcgLmlubmVySFRNTD0iJHtmdW5jdGlvbiB4MWUoZCl7dmFyIHYseSxDLEksWjtjb25zdCBnPW51bGwhPSh2PWhzLnJl''@;'; put 'put ''Z2lzdHJ5W2Quc2hhcGVdKT92OmhzLnJlZ2lzdHJ5LnVua25vd247bGV0IGg9ZC5zb2xpZCYmZy5zb2xpZD9nLnNvbGlkOmcub3V0bGluZTtyZXR1cm4gZC5iYWRnZSYmIWNMKGQpJiYoaD1kLnNvbGlkP251bGwhPSh5PWcuc29saWRCYWRnZWQpP3k6aDpudWxsIT0oQz1nLm91dGxpbmVCYWRn''@;'; put 'put ''ZWQpP0M6aCksY0woZCkmJihoPWQuc29saWQ/bnVsbCE9KEk9Zy5zb2xpZEFsZXJ0ZWQpP0k6aDpudWxsIT0oWj1nLm91dGxpbmVBbGVydGVkKT9aOmgpLGh9KHRoaXMpK2Z1bmN0aW9uIEUxZShkKXtsZXQgZz0iIjtyZXR1cm4gZC5iYWRnZSYmY0woZCk/Zz0nPHBhdGggZD0iTTI2Ljg1IDEu''@;'; put 'put ''MTRMMjEuMTMgMTFhMS4yOCAxLjI4IDAgMDAxLjEgMmgxMS40NWExLjI4IDEuMjggMCAwMDEuMS0ybC01LjcyLTkuODZhMS4yOCAxLjI4IDAgMDAtMi4yMSAweiIgY2xhc3M9ImFsZXJ0IiAvPic6ZC5iYWRnZSYmKGc9JzxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImJhZGdl''@;'; put 'put ''IiAvPicpLGd9KHRoaXMpfSIgdmlld0JveD0iMCAwIDM2IDM2IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3N2Zz5gfX1WMihbRTEoe3R5cGU6U3RyaW5nfSldLGE0LnByb3RvdHlwZSwic2hhcGUiLG51bGwpLFYyKFtFMSh7dHlwZTpT''@;'; put 'put ''dHJpbmd9KV0sYTQucHJvdG90eXBlLCJzaXplIixudWxsKSxWMihbRTEoe3R5cGU6U3RyaW5nfSldLGE0LnByb3RvdHlwZSwiZGlyZWN0aW9uIix2b2lkIDApLFYyKFtFMSh7dHlwZTpTdHJpbmd9KV0sYTQucHJvdG90eXBlLCJmbGlwIix2b2lkIDApLFYyKFtFMSh7dHlwZTpCb29sZWFufSld''@;'; put 'put ''LGE0LnByb3RvdHlwZSwic29saWQiLHZvaWQgMCksVjIoW0UxKHt0eXBlOlN0cmluZ30pXSxhNC5wcm90b3R5cGUsInN0YXR1cyIsdm9pZCAwKSxWMihbRTEoe3R5cGU6Qm9vbGVhbn0pXSxhNC5wcm90b3R5cGUsImludmVyc2UiLHZvaWQgMCksVjIoW0UxKHt0eXBlOlN0cmluZ30pXSxhNC5w''@;'; put 'put ''cm90b3R5cGUsImJhZGdlIix2b2lkIDApLFYyKFtqSyh7dHlwZTpOdW1iZXJ9KV0sYTQucHJvdG90eXBlLCJpbm5lck9mZnNldCIsdm9pZCAwKSxWMihbZnVuY3Rpb24gQzFlKGQsZyl7cmV0dXJuKCh7ZmluaXNoZXI6ZCxkZXNjcmlwdG9yOmd9KT0+KGgsdik9Pnt2YXIgeTtpZih2b2lkIDA9''@;'; put 'put ''PT12KXtjb25zdCBDPW51bGwhPT0oeT1oLm9yaWdpbmFsS2V5KSYmdm9pZCAwIT09eT95Omgua2V5LEk9bnVsbCE9Zz97a2luZDoibWV0aG9kIixwbGFjZW1lbnQ6InByb3RvdHlwZSIsa2V5OkMsZGVzY3JpcHRvcjpnKGgua2V5KX06R3oobXMoe30saCkse2tleTpDfSk7cmV0dXJuIG51bGwh''@;'; put 'put ''PWQmJihJLmZpbmlzaGVyPWZ1bmN0aW9uKFope2QoWixDKX0pLEl9e2NvbnN0IEM9aC5jb25zdHJ1Y3Rvcjt2b2lkIDAhPT1nJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoaCx2LGcodikpLG51bGw9PWR8fGQoQyx2KX19KSh7ZGVzY3JpcHRvcjpoPT57Y29uc3Qgdj17Z2V0KCl7dmFyIHksQzty''@;'; put 'put ''ZXR1cm4gbnVsbCE9PShDPW51bGw9PT0oeT10aGlzLnJlbmRlclJvb3QpfHx2b2lkIDA9PT15P3ZvaWQgMDp5LnF1ZXJ5U2VsZWN0b3IoZCkpJiZ2b2lkIDAhPT1DP0M6bnVsbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9O2lmKGcpe2NvbnN0IHk9InN5bWJvbCI9PXR5cGVvZiBo''@;'; put 'put ''P1N5bWJvbCgpOiJfXyIraDt2LmdldD1mdW5jdGlvbigpe3ZhciBDLEk7cmV0dXJuIHZvaWQgMD09PXRoaXNbeV0mJih0aGlzW3ldPW51bGwhPT0oST1udWxsPT09KEM9dGhpcy5yZW5kZXJSb290KXx8dm9pZCAwPT09Qz92b2lkIDA6Qy5xdWVyeVNlbGVjdG9yKGQpKSYmdm9pZCAwIT09ST9J''@;'; put 'put ''Om51bGwpLHRoaXNbeV19fXJldHVybiB2fX0pfSgic3ZnIildLGE0LnByb3RvdHlwZSwic3ZnIix2b2lkIDApLENLKCJjZHMtaWNvbiIsYTQpO2NsYXNzIFQxZXtjb25zdHJ1Y3RvcihnKXt0aGlzLmhvc3Q9Zyx0aGlzLmhvc3QuYWRkQ29udHJvbGxlcih0aGlzKX1ob3N0Q29ubmVjdGVkKCl7''@;'; put 'put ''dmFyIGc9dGhpcztyZXR1cm4gVEsoZnVuY3Rpb24qKCl7eWllbGQgZy5ob3N0LnVwZGF0ZUNvbXBsZXRlLGcuaG9zdC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixoPT5nLmVtdWxhdGVBY3RpdmUoaCkpLGcuaG9zdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLGg9PmcuZW11bGF0''@;'; put 'put ''ZUFjdGl2ZShoKSksZy5ob3N0LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwoKT0+Zy5lbXVsYXRlSW5hY3RpdmUoKSksZy5ob3N0LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCgpPT5nLmVtdWxhdGVJbmFjdGl2ZSgpKSxnLmhvc3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsKCk9Pmcu''@;'; put 'put ''ZW11bGF0ZUluYWN0aXZlKCkpfSkoKX1lbXVsYXRlQWN0aXZlKGcpe3ZhciBoO3RoaXMuaG9zdC5kaXNhYmxlZHx8bnVsbD09KGg9dGhpcy5ob3N0KXx8aC5zZXRBdHRyaWJ1dGUoImNkcy1hY3RpdmUiLCIiKSwiU3BhY2UiPT09Zy5jb2RlJiZnLnRhcmdldD09PXRoaXMuaG9zdCYmZy5wcmV2''@;'; put 'put ''ZW50RGVmYXVsdCgpfWVtdWxhdGVJbmFjdGl2ZSgpe3RoaXMuaG9zdC5yZW1vdmVBdHRyaWJ1dGUoImNkcy1hY3RpdmUiKX19Y2xhc3MgSTFle2NvbnN0cnVjdG9yKGcpe3RoaXMuaG9zdD1nLHRoaXMuaG9zdC5hZGRDb250cm9sbGVyKHRoaXMpfWhvc3RDb25uZWN0ZWQoKXt0aGlzLmhvc3Qu''@;'; put 'put ''cG9wdXAmJih0aGlzLmhvc3QuYXJpYUNvbnRyb2xzPXRoaXMuaG9zdC5wb3B1cCx0aGlzLmhvc3QuYXJpYUhhc1BvcHVwPSJ0cnVlIix0aGlzLmhvc3QuYXJpYUV4cGFuZGVkPSJmYWxzZSIpfX1jbGFzcyBXS3tjb25zdHJ1Y3RvcihnKXt0aGlzLmhvc3Q9Zyx0aGlzLmhvc3QuYWRkQ29udHJv''@;'; put 'put ''bGxlcih0aGlzKX1ob3N0VXBkYXRlZCgpe251bGwhPT10aGlzLmhvc3QuZGlzYWJsZWQmJih0aGlzLmhvc3QuYXJpYURpc2FibGVkPXRoaXMuaG9zdC5kaXNhYmxlZCksdGhpcy5ob3N0LnJlYWRvbmx5JiYodGhpcy5ob3N0LmFyaWFEaXNhYmxlZD1udWxsKX19Y2xhc3MgTDFle2NvbnN0cnVj''@;'; put 'put ''dG9yKGcpe3RoaXMuaG9zdD1nLHRoaXMuaG9zdC5hZGRDb250cm9sbGVyKHRoaXMpfWhvc3RVcGRhdGVkKCl7bnVsbCE9dGhpcy5ob3N0LnByZXNzZWQmJih0aGlzLmhvc3QuYXJpYVByZXNzZWQ9dGhpcy5ob3N0LnByZXNzZWQ/InRydWUiOiJmYWxzZSIpLHRoaXMuaG9zdC5yZWFkb25seSYm''@;'; put 'put ''KHRoaXMuaG9zdC5hcmlhUHJlc3NlZD1udWxsKX19Y2xhc3MgVUt7Y29uc3RydWN0b3IoZyl7dGhpcy5ob3N0PWcsdGhpcy5ob3N0LmFkZENvbnRyb2xsZXIodGhpcyl9aG9zdENvbm5lY3RlZCgpe3RoaXMuaG9zdC50YWJJbmRleD0wfWhvc3RVcGRhdGVkKCl7dGhpcy5ob3N0LnJvbGU9dGhp''@;'; put 'put ''cy5ob3N0LnJlYWRvbmx5P251bGw6ImJ1dHRvbiIsdGhpcy5ob3N0LnRhYkluZGV4PXRoaXMuaG9zdC5kaXNhYmxlZD8tMTowLHRoaXMuaG9zdC5yZWFkb25seSYmdGhpcy5ob3N0LnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKX19Y2xhc3MgUjFle2NvbnN0cnVjdG9yKGcpe3RoaXMuaG9z''@;'; put 'put ''dD1nLHRoaXMuaG9zdC5hZGRDb250cm9sbGVyKHRoaXMpfWdldCBjdXJyZW50QW5jaG9yKCl7dmFyIGc7cmV0dXJuIkEiPT09KG51bGw9PShnPXRoaXMuaG9zdC5wYXJlbnRFbGVtZW50KT92b2lkIDA6Zy50YWdOYW1lKT90aGlzLmhvc3QucGFyZW50RWxlbWVudDpudWxsfWhvc3RDb25uZWN0''@;'; put 'put ''ZWQoKXt0aGlzLnNldEFuY2hvcigpfWhvc3RVcGRhdGVkKCl7dGhpcy5zZXRBbmNob3IoKX1zZXRBbmNob3IoKXt0aGlzLmN1cnJlbnRBbmNob3ImJnRoaXMuY3VycmVudEFuY2hvciE9PXRoaXMucHJldmlvdXNBbmNob3ImJih0aGlzLnByZXZpb3VzQW5jaG9yPXRoaXMuY3VycmVudEFuY2hv''@;'; put 'put ''cix0aGlzLmhvc3QucmVhZG9ubHk9ITAsdGhpcy5jdXJyZW50QW5jaG9yLnN0eWxlLmxpbmVIZWlnaHQ9IjAiLHRoaXMuY3VycmVudEFuY2hvci5zdHlsZS50ZXh0RGVjb3JhdGlvbj0ibm9uZSIpfX1jb25zdCBBaj1kPT5udWxsIT1kP2Q6TnU7ZnVuY3Rpb24gUUsoZCl7ZC5wcmV2ZW50RGVm''@;'; put 'put ''YXVsdCgpLGQuc3RvcFByb3BhZ2F0aW9uKCl9Y29uc3Qgd2o9bmV3IE1hcChbWyJhcnJvdy1sZWZ0IiwiQXJyb3dMZWZ0Il0sWyJhcnJvdy1yaWdodCIsIkFycm93UmlnaHQiXSxbImFycm93LXVwIiwiQXJyb3dVcCJdLFsiYXJyb3ctZG93biIsIkFycm93RG93biJdLFsidGFiIiwiVGFiIl0s''@;'; put 'put ''WyJlbnRlciIsIkVudGVyIl0sWyJlc2NhcGUiLCJFc2NhcGUiXSxbInNwYWNlIiwiICJdLFsiaG9tZSIsIkhvbWUiXSxbImVuZCIsIkVuZCJdXSk7dmFyIF9wOyFmdW5jdGlvbihkKXtkLkFycm93VXA9IkFycm93VXAiLGQuQXJyb3dEb3duPSJBcnJvd0Rvd24iLGQuQXJyb3dMZWZ0PSJBcnJv''@;'; put 'put ''d0xlZnQiLGQuQXJyb3dSaWdodD0iQXJyb3dSaWdodCIsZC5FbmQ9IkVuZCIsZC5Ib21lPSJIb21lIixkLlBhZ2VVcD0iUGFnZVVwIixkLlBhZ2VEb3duPSJQYWdlRG93biJ9KF9wfHwoX3A9e30pKTtjbGFzcyBXMWV7Y29uc3RydWN0b3IoZyl7dGhpcy5ob3N0PWcsdGhpcy50cmlnZ2VyTmF0''@;'; put 'put ''aXZlQnV0dG9uQmVoYXZpb3JIYW5kbGVyPXRoaXMudHJpZ2dlck5hdGl2ZUJ1dHRvbkJlaGF2aW9yLmJpbmQodGhpcyksdGhpcy5lbXVsYXRlS2V5Qm9hcmRFdmVudEJlaGF2aW9ySGFuZGxlcj10aGlzLmVtdWxhdGVLZXlCb2FyZEV2ZW50QmVoYXZpb3IuYmluZCh0aGlzKSx0aGlzLmhvc3Qu''@;'; put 'put ''YWRkQ29udHJvbGxlcih0aGlzKX1ob3N0VXBkYXRlZCgpe3RoaXMuc2V0QnV0dG9uVHlwZSgpLHRoaXMuc2V0dXBOYXRpdmVCdXR0b25CZWhhdmlvcigpfXNldEJ1dHRvblR5cGUoKXshdGhpcy5ob3N0LnR5cGUmJnRoaXMuaG9zdC5jbG9zZXN0KCJmb3JtIikmJih0aGlzLmhvc3QudHlwZT0i''@;'; put 'put ''c3VibWl0Iil9c2V0dXBOYXRpdmVCdXR0b25CZWhhdmlvcigpe3RoaXMuaG9zdC5yZWFkb25seXx8dGhpcy5ob3N0LmRpc2FibGVkPyh0aGlzLmhvc3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMudHJpZ2dlck5hdGl2ZUJ1dHRvbkJlaGF2aW9ySGFuZGxlciksdGhpcy5ob3N0''@;'; put 'put ''LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXVwIix0aGlzLmVtdWxhdGVLZXlCb2FyZEV2ZW50QmVoYXZpb3JIYW5kbGVyKSk6KHRoaXMuaG9zdC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy50cmlnZ2VyTmF0aXZlQnV0dG9uQmVoYXZpb3JIYW5kbGVyKSx0aGlzLmhvc3QuYWRkRXZl''@;'; put 'put ''bnRMaXN0ZW5lcigia2V5dXAiLHRoaXMuZW11bGF0ZUtleUJvYXJkRXZlbnRCZWhhdmlvckhhbmRsZXIpKX1lbXVsYXRlS2V5Qm9hcmRFdmVudEJlaGF2aW9yKGcpeyFmdW5jdGlvbiBIMWUoZCxnLGgpe2QuZmlsdGVyKHY9PmZ1bmN0aW9uIGJqKGQsZyl7cmV0dXJuIGNsYXNzIFAxZXtzdGF0''@;'; put 'put ''aWMgZ2V0IGtleWNvZGVzKCl7cmV0dXJuIHVzZSh3ail9c3RhdGljIGFkZChnLGgpe3dqLnNldChnLGgpfXN0YXRpYyBoYXMoZyl7cmV0dXJuIHdqLmhhcyhnKX1zdGF0aWMgZ2V0Q29kZShnLGg9dGhpcy5rZXljb2Rlcyl7cmV0dXJuIGZ1bmN0aW9uIEYxZShkLGcpe3JldHVybiBnLmdldChk''@;'; put 'put ''KXx8IiJ9KGcsaCl9fS5nZXRDb2RlKGcpPT09ZC5rZXl9KGcsdikpLmxlbmd0aD4wJiZoKCl9KFsiZW50ZXIiLCJzcGFjZSJdLGcsKCk9Pnsic3VibWl0Ij09PXRoaXMuaG9zdC50eXBlP3RoaXMudHJpZ2dlck5hdGl2ZUJ1dHRvbkJlaGF2aW9yKGcpOnRoaXMuaG9zdC5jbGljaygpLFFLKGcp''@;'; put 'put ''fSl9dHJpZ2dlck5hdGl2ZUJ1dHRvbkJlaGF2aW9yKGcpe2lmKHRoaXMuaG9zdC5kaXNhYmxlZClRSyhnKTtlbHNlIGlmKCFnLmRlZmF1bHRQcmV2ZW50ZWQpe2NvbnN0IGg9ZnVuY3Rpb24gRzFlKGQsZyxoKXtjb25zdCB2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2cuYXBwZW5k''@;'; put 'put ''Q2hpbGQodiksT0soZCxnLG1zKHtyZW5kZXJCZWZvcmU6dn0saCkpO2NvbnN0IHk9di5wcmV2aW91c1NpYmxpbmc7cmV0dXJuIHYucmVtb3ZlKCkseX0obzRgPGJ1dHRvbiBhcmlhLWhpZGRlbj0idHJ1ZSIgcm9sZT0icHJlc2VudGF0aW9uIiA/ZGlzYWJsZWQ9IiR7dGhpcy5ob3N0LmRpc2Fi''@;'; put 'put ''bGVkfSIgdGFiaW5kZXg9Ii0xIiBzdHlsZT0iZGlzcGxheTpub25lIWltcG9ydGFudCIgdmFsdWU9IiR7QWoodGhpcy5ob3N0LnZhbHVlKX0iIG5hbWU9IiR7QWoodGhpcy5ob3N0Lm5hbWUpfSIgdHlwZT0iJHtBaih0aGlzLmhvc3QudHlwZSl9Ij48L2J1dHRvbj5gLHRoaXMuaG9zdCk7bnVs''@;'; put 'put ''bD09aHx8aC5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCJjbGljayIse3JlbGF0ZWRUYXJnZXQ6dGhpcy5ob3N0LGNvbXBvc2VkOiEwfSkpLG51bGw9PWh8fGgucmVtb3ZlKCl9fX1jbGFzcyBLS3tjb25zdHJ1Y3RvcihnKXt0aGlzLmhvc3Q9Zyx0aGlzLmhvc3QuYWRkQ29udHJvbGxl''@;'; put 'put ''cih0aGlzKX1ob3N0VXBkYXRlZCgpe251bGwhPXRoaXMuaG9zdC5leHBhbmRlZCYmKHRoaXMuaG9zdC5hcmlhRXhwYW5kZWQ9dGhpcy5ob3N0LmV4cGFuZGVkPyJ0cnVlIjoiZmFsc2UiKSx0aGlzLmhvc3QucmVhZG9ubHkmJih0aGlzLmhvc3QuYXJpYUV4cGFuZGVkPW51bGwpfX1sZXQgbmQ9''@;'; put 'put ''Y2xhc3MgZXh0ZW5kcyBYeXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5kaXNhYmxlZD0hMX19O1YyKFtFMSh7dHlwZTpCb29sZWFufSldLG5kLnByb3RvdHlwZSwicHJlc3NlZCIsdm9pZCAwKSxWMihbRTEoe3R5cGU6Qm9vbGVhbn0pXSxuZC5wcm90b3R5cGUsImV4''@;'; put 'put ''cGFuZGVkIix2b2lkIDApLFYyKFtFMSh7dHlwZTpCb29sZWFufSldLG5kLnByb3RvdHlwZSwicmVhZG9ubHkiLHZvaWQgMCksVjIoW0UxKHt0eXBlOlN0cmluZ30pXSxuZC5wcm90b3R5cGUsInR5cGUiLHZvaWQgMCksVjIoW0UxKHt0eXBlOlN0cmluZ30pXSxuZC5wcm90b3R5cGUsIm5hbWUi''@;'; put 'put ''LHZvaWQgMCksVjIoW0UxKHt0eXBlOlN0cmluZ30pXSxuZC5wcm90b3R5cGUsInZhbHVlIix2b2lkIDApLFYyKFtFMSh7dHlwZTpCb29sZWFufSldLG5kLnByb3RvdHlwZSwiZGlzYWJsZWQiLHZvaWQgMCksVjIoW0UxKHt0eXBlOlN0cmluZ30pXSxuZC5wcm90b3R5cGUsInBvcHVwIix2b2lk''@;'; put 'put ''IDApLG5kPVYyKFtmdW5jdGlvbiB6Sygpe3JldHVybiBkPT5kLmFkZEluaXRpYWxpemVyKGc9Pm5ldyBUMWUoZykpfSgpLGZ1bmN0aW9uIE8xZSgpe3JldHVybiBkPT5kLmFkZEluaXRpYWxpemVyKGc9Pm5ldyBVSyhnKSl9KCksZnVuY3Rpb24gWUsoKXtyZXR1cm4gZD0+ZC5hZGRJbml0aWFs''@;'; put 'put ''aXplcihnPT5uZXcgTDFlKGcpKX0oKSxmdW5jdGlvbiBZMWUoKXtyZXR1cm4gZD0+ZC5hZGRJbml0aWFsaXplcihnPT5uZXcgS0soZykpfSgpLGZ1bmN0aW9uIEQxZSgpe3JldHVybiBkPT5kLmFkZEluaXRpYWxpemVyKGc9Pm5ldyBXSyhnKSl9KCksZnVuY3Rpb24gR0soKXtyZXR1cm4gZD0+''@;'; put 'put ''ZC5hZGRJbml0aWFsaXplcihnPT5uZXcgSTFlKGcpKX0oKSxmdW5jdGlvbiBYSygpe3JldHVybiBkPT5kLmFkZEluaXRpYWxpemVyKGc9Pm5ldyBXMWUoZykpfSgpLGZ1bmN0aW9uIGZMKCl7cmV0dXJuIGQ9PmQuYWRkSW5pdGlhbGl6ZXIoZz0+bmV3IFIxZShnKSl9KCldLG5kKTtjb25zdCBo''@;'; put 'put ''TD17YWN0aW9uczp7c29ydDoiU29ydCIsZXhwYW5kOiJFeHBhbmQiLGNsb3NlOiJDbG9zZSIscmVzaXplOiJSZXNpemUiLGZpbHRlcjoiRmlsdGVyIn0sYWxlcnQ6e2Nsb3NlQnV0dG9uQXJpYUxhYmVsOiJDbG9zZSIsbG9hZGluZzoiTG9hZGluZyIsaW5mbzoiSW5mbyIsc3VjY2VzczoiU3Vj''@;'; put 'put ''Y2VzcyIsd2FybmluZzoiV2FybmluZyIsZGFuZ2VyOiJFcnJvciJ9LGRyb3Bkb3duOntvcGVuOiJPcGVuIn0sZmlsZTp7YnJvd3NlOiJicm93c2UiLGZpbGVzOiJmaWxlcyIscmVtb3ZlRmlsZToicmVtb3ZlIGZpbGUifSxtb2RhbDp7Y2xvc2VCdXR0b25BcmlhTGFiZWw6IkNsb3NlIG1vZGFs''@;'; put 'put ''Iixjb250ZW50U3RhcnQ6IkJlZ2lubmluZyBvZiBtb2RhbCBjb250ZW50Iixjb250ZW50Qm94OiJTY3JvbGxhYmxlIG1vZGFsIGJvZHkiLGNvbnRlbnRFbmQ6IkVuZCBvZiBtb2RhbCBjb250ZW50In0sbmF2aWdhdGlvbjp7bmF2aWdhdGlvbkVsZW1lbnQ6Im5hdmlnYXRpb24iLG5hdmlnYXRp''@;'; put 'put ''b25MYWJlbDoibmF2aWdhdGlvbiBtZW51IixuYXZpZ2F0aW9uQWJyaWRnZWRUZXh0OiJWaWV3IGFicmlkZ2VkIG1lbnUiLG5hdmlnYXRpb25VbmFicmlkZ2VkVGV4dDoiVmlldyB1bmFicmlkZ2VkIG1lbnUifSxvdmVybGF5OntjbG9zZUJ1dHRvbkFyaWFMYWJlbDoiQ2xvc2UgZGlhbG9nIixj''@;'; put 'put ''b250ZW50U3RhcnQ6IkJlZ2lubmluZyBvZiBkaWFsb2cgY29udGVudCIsY29udGVudEVuZDoiRW5kIG9mIGRpYWxvZyBjb250ZW50In0scG9wdXA6e2Nsb3NlQnV0dG9uQXJpYUxhYmVsOiJDbG9zZSBwb3B1cCIsY29udGVudFN0YXJ0OiJCZWdpbm5pbmcgb2YgcG9wdXAgY29udGVudCIsY29u''@;'; put 'put ''dGVudEVuZDoiRW5kIG9mIHBvcHVwIGNvbnRlbnQifSxwYXNzd29yZDp7c2hvd0J1dHRvbkFyaWFMYWJlbDoiU2hvdyBwYXNzd29yZCIsaGlkZUJ1dHRvbkFyaWFMYWJlbDoiSGlkZSBwYXNzd29yZCJ9LHByb2dyZXNzOntsb2FkaW5nOiJMb2FkaW5nIixsb29waW5nOiJMb2FkaW5nIn0sdHJl''@;'; put 'put ''ZXZpZXc6e2xvYWRpbmc6IkxvYWRpbmcifSxncmlkOntyZXNpemVDb2x1bW46IlJlc2l6ZSBDb2x1bW4iLGNsb3NlRGV0YWlsczoiQ2xvc2UgRGV0YWlscyIsbm9EYXRhOiJObyBSZXN1bHRzIEZvdW5kIixyb3dEZXRhaWxTdGFydDoiU3RhcnQgb2Ygcm93IGRldGFpbHMiLHJvd0RldGFpbEVu''@;'; put 'put ''ZDoiRW5kIG9mIHJvdyBkZXRhaWxzIixmb290ZXJFbmQ6IkVuZCBvZiBncmlkIHJvd3MiLGFjdGlvbjoiQWN0aW9uIixkcm9wVGFyZ2V0OiJEcm9wIEl0ZW0iLHBhZ2luYXRpb246e2xhYmVsOiJncmlkIHBhZ2luYXRpb24iLGZpcnN0UGFnZToiZ28gdG8gZmlyc3QgcGFnZSIscHJldmlvdXNQ''@;'; put 'put ''YWdlOiJnbyB0byBwcmV2aW91cyBwYWdlIixuZXh0UGFnZToiZ28gdG8gbmV4dCBwYWdlIixsYXN0UGFnZToiZ28gdG8gbGFzdCBwYWdlIixwYWdlU2l6ZToicm93cyBwZXIgcGFnZSIscGFnZToicGFnZSJ9fX07Y2xhc3MgcnZ7c3RhdGljIGdldCBrZXlzKCl7cmV0dXJuIDA9PT1PYmplY3Qu''@;'; put 'put ''a2V5cyhKMS5zdGF0ZS5pMThuUmVnaXN0cnkpLmxlbmd0aCYmKEoxLnN0YXRlLmkxOG5SZWdpc3RyeT1QNyhoTCxKMS5zdGF0ZS5pMThuUmVnaXN0cnkpKSxQNyhoTCxKMS5zdGF0ZS5pMThuUmVnaXN0cnkpfXN0YXRpYyBmaW5kS2V5KGcpe2NvbnN0IGg9cnYua2V5cztyZXR1cm4gT2JqZWN0''@;'; put 'put ''LmtleXMoaCkuZmluZCh2PT5VSihoW3ZdLGcpKX1zdGF0aWMgZ2V0KGcpe3JldHVybiBnJiZydi5rZXlzW2ddfHx7fX1zdGF0aWMgcmVzZXQoKXtKMS5zdGF0ZS5pMThuUmVnaXN0cnk9UDcoe30saEwpfXN0YXRpYyBoeWRyYXRlKGcsaCl7cmV0dXJuIEpTT04ucGFyc2UoZnVuY3Rpb24gaVgo''@;'; put 'put ''ZCxnLGgpe3JldHVybiBkLnJlcGxhY2UoL1wkXHsuKz9cfS9nLHY9PmZ1bmN0aW9uIHZ2ZShkLGcsaD1gXCR7JHtkfX1gKXtyZXR1cm4gZC5zcGxpdCgiLiIpLnJlZHVjZSgodix5KT0+e3RyeXtjb25zdCBDPXZbeV07c3dpdGNoKCEwKXtjYXNlIG51bGw9PT1DOmNhc2UhMT09PUM6Y2FzZSIi''@;'; put 'put ''PT09QzpjYXNlIDA9PT1DOnJldHVybiBDO2RlZmF1bHQ6cmV0dXJuIEN8fGh9fWNhdGNoKEMpe3JldHVybiBofX0sZyl9KHYuc3Vic3RyKDIsdi5sZW5ndGgtMykudHJpbSgpLGcsaCkpfShKU09OLnN0cmluZ2lmeShnKSxoKSl9c3RhdGljIGxvY2FsaXplKGcpe0oxLnN0YXRlLmkxOG5SZWdp''@;'; put 'put ''c3RyeT1QNyhoTCxKMS5zdGF0ZS5pMThuUmVnaXN0cnksZyl9fXZhciBKMWU9aUxgOmhvc3R7LS1pY29uLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNywgY2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkpOy0taWNvbi1oZWlnaHQ6dmFyKC0tY2RzLWds''@;'; put 'put ''b2JhbC1zcGFjZS03LCBjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwgMjApKSk7LS13aWR0aDp2YXIoLS1pY29uLXdpZHRoKTstLWhlaWdodDp2YXIoLS1pY29uLXdpZHRoKTstLWN1cnNvcjpwb2ludGVyOy0tY29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5''@;'; put 'put ''LWNvbG9yLTMwMCwgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tODAwLCAjMmQ0MDQ4KSk7LS1mb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtc2l6ZS0zLCBjYWxjKDEzICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwgMjApKSk7LS1i''@;'; put 'put ''YWNrZ3JvdW5kOnRyYW5zcGFyZW50Oy0tcGFkZGluZzowOy0tb3V0bGluZTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUsIEhpZ2hsaWdodCBzb2xpZCAycHgpOy0tb3V0bGluZS1vZmZzZXQ6Y2FsYyh2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9u''@;'; put 'put ''LW91dGxpbmUtb2Zmc2V0LCAxcHgpICogLTEpO3BvaW50ZXItZXZlbnRzOm5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7b3V0bGluZTowIWltcG9ydGFudH06aG9zdChbcm9sZT1idXR0b25dKXtwb2ludGVyLWV2ZW50czppbml0aWFsO2N1cnNvcjp2YXIoLS1jdXJzb3IpIWltcG9ydGFudH06''@;'; put 'put ''aG9zdChbc3RhdHVzPWFjdGl2ZV0pey0tY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNzAwLCAjMDA3OWFkKSl9OjpzbG90dGVkKFtzaGFwZT1jbG9zZV0pLDo6c2xvdHRlZChbc2hhcGU9aW5mby1jaXJjbGVdKSw6OnNsb3R0''@;'; put 'put ''ZWQoW3NoYXBlPXRpbWVzXSksOmhvc3QoW3NoYXBlPWNsb3NlXSksOmhvc3QoW3NoYXBlPWluZm8tY2lyY2xlXSl7LS1pY29uLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOCwgY2FsYygxOCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkpOy0taWNvbi1oZWlnaHQ6''@;'; put 'put ''dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04LCBjYWxjKDE4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwgMjApKSl9Omhvc3QoOmhvdmVyKXstLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItaG92ZXIsIHZhcigtLWNkcy1nbG9iYWwtY29sb3It''@;'; put 'put ''Y29uc3RydWN0aW9uLTEwMDAsICMxYjJiMzIpKX06aG9zdCg6YWN0aXZlKXstLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItYWN0aXZlLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMDAwLCAjMWIyYjMyKSl9Omhvc3QoOmFjdGl2''@;'; put 'put ''ZSkgLnByaXZhdGUtaG9zdHt0cmFuc2Zvcm06dHJhbnNsYXRlWShjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSxjYWxjKDEgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpLyAyKSl9Omhvc3QoW2Rpc2FibGVkXSl7LS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0''@;'; put 'put ''LWludGVyYWN0aW9uLWNvbG9yLWRpc2FibGVkLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0zMDAsICNhZWI4YmMpKX0ucHJpdmF0ZS1ob3N0ey0taWNvbi1jb2xvcjp2YXIoLS1jb2xvcik7YmFja2dyb3VuZDp2YXIoLS1iYWNrZ3JvdW5kKTtwYWRkaW5nOnZhcigtLXBh''@;'; put 'put ''ZGRpbmcpO2NvbG9yOnZhcigtLWNvbG9yKTtmb250LXNpemU6dmFyKC0tZm9udC1zaXplKTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWluLXdpZHRoOnZhcigtLXdpZHRoKTttaW4taGVpZ2h0OnZhcigtLWhlaWdodCl9OjpzbG90dGVk''@;'; put 'put ''KGNkcy1pY29uKSxjZHMtaWNvbnt3aWR0aDp2YXIoLS1pY29uLXdpZHRoKTtoZWlnaHQ6dmFyKC0taWNvbi1oZWlnaHQpO3BvaW50ZXItZXZlbnRzOm5vbmV9OjpzbG90dGVkKGNkcy1pY29uOm5vdChbc3RhdHVzXSkpLGNkcy1pY29uey0tY29sb3I6dmFyKC0taWNvbi1jb2xvcil9Omhvc3Qo''@;'; put 'put ''W2Rpc2FibGVkXTphY3RpdmUpe3BvaW50ZXItZXZlbnRzOm5vbmUhaW1wb3J0YW50fS5wcml2YXRlLWhvc3Q6OmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDpjYWxjKC0xKnZhcigtLXdpZHRoKSAtIDEpO3RvcDpjYWxjKC0xKnZhcigtLWhlaWdodCkgLSAxKTt3aWR0''@;'; put 'put ''aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLXRvdWNoLXRhcmdldCxjYWxjKDM2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtoZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi10b3VjaC10YXJnZXQsY2FsYygzNiAqIDFyZW0g''@;'; put 'put ''LyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSl9Omhvc3QoW2Rpc2FibGVkXSkgLnByaXZhdGUtaG9zdDo6YWZ0ZXJ7b3V0bGluZTowIWltcG9ydGFudH06aG9zdCg6Zm9jdXMpIC5wcml2YXRlLWhvc3Q6OmFmdGVye291dGxpbmU6dmFyKC0tb3V0bGluZSk7b3V0bGluZS1vZmZzZXQ6dmFy''@;'; put 'put ''KC0tb3V0bGluZS1vZmZzZXQpfUBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApezpob3N0KDpmb2N1cykgLnByaXZhdGUtaG9zdDo6YWZ0ZXJ7b3V0bGluZS1jb2xvcjotd2Via2l0LWZvY3VzLXJpbmctY29sb3J9fWA7Y2xhc3MgbWcgZXh0ZW5kcyBuZHtjb25zdHJ1''@;'; put 'put ''Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5pMThuPXJ2LmtleXMuYWN0aW9ucyx0aGlzLmNkc0J1dHRvbkFjdGlvbj0hMH1yZW5kZXIoKXtyZXR1cm4gbzRgPGRpdiBjbGFzcz0icHJpdmF0ZS1ob3N0Ij48c2xvdD48Y2RzLWljb24gLnNoYXBlPSIke3RoaXMuc2hhcGU/dGhpcy5z''@;'; put 'put ''aGFwZToiZWxsaXBzaXMtdmVydGljYWwifSIgLnNpemU9IiR7dGhpcy5pY29uU2l6ZX0iID9zb2xpZD0iJHt0aGlzLnByZXNzZWR8fHRoaXMuZXhwYW5kZWR9IiBpbm5lci1vZmZzZXQ9IiR7MX0iPjwvY2RzLWljb24+PC9zbG90PjwvZGl2PmB9dXBkYXRlZChnKXtzdXBlci51cGRhdGVkKGcp''@;'; put 'put ''LHRoaXMuYXJpYUxhYmVsfHx0aGlzLnJlYWRvbmx5fHxONy53YXJuKCJBIGFyaWEtbGFiZWwgaXMgcmVxdWlyZWQgZm9yIGludGVyYWN0aXZlIGNkcy1idXR0b24tYWN0aW9uIHR5cGUiLHRoaXMpLGcuaGFzKCJyZWFkb25seSIpJiYodGhpcy5hcmlhSGlkZGVuPXRoaXMucmVhZG9ubHkmJiF0''@;'; put 'put ''aGlzLmhhc0F0dHJpYnV0ZSgiYXJpYS1sYWJlbCIpPyJ0cnVlIjpudWxsKX19bWcuc3R5bGVzPVtISyxKMWVdLFYyKFtFMSh7dHlwZTpTdHJpbmd9KV0sbWcucHJvdG90eXBlLCJzaGFwZSIsdm9pZCAwKSxWMihbRTEoe3R5cGU6U3RyaW5nLHJlZmxlY3Q6ITB9KV0sbWcucHJvdG90eXBlLCJh''@;'; put 'put ''Y3Rpb24iLHZvaWQgMCksVjIoW0UxKHt0eXBlOlN0cmluZ30pXSxtZy5wcm90b3R5cGUsImljb25TaXplIix2b2lkIDApLFYyKFtmdW5jdGlvbiBVMWUoKXtyZXR1cm4oZCxnKT0+e2NvbnN0IGg9ZC5jb25uZWN0ZWRDYWxsYmFjayx2PWQuZGlzY29ubmVjdGVkQ2FsbGJhY2s7ZC5jb25uZWN0''@;'; put 'put ''ZWRDYWxsYmFjaz1mdW5jdGlvbigpe2QuX19pMThuU3ViPUoxLnN0YXRlVXBkYXRlcy5zdWJzY3JpYmUoQz0+eyJpMThuUmVnaXN0cnkiPT09Qy5rZXkmJnRoaXMucmVxdWVzdFVwZGF0ZShnKX0pLGgmJmguYXBwbHkodGhpcyl9LGQuZGlzY29ubmVjdGVkQ2FsbGJhY2s9ZnVuY3Rpb24oKXtk''@;'; put 'put ''Ll9faTE4blN1Yi51bnN1YnNjcmliZSgpLHYmJnYuYXBwbHkodGhpcyl9O2NvbnN0IHk9e2dldCgpe2NvbnN0IEM9UDcocnYua2V5c1t0aGlzLl9faTE4bktleV0sdGhpcy5fX2kxOG58fHt9KTtyZXR1cm4gcnYuaHlkcmF0ZShDLHRoaXMpfSxzZXQoQyl7Y29uc3QgST1mdW5jdGlvbiBDaihk''@;'; put 'put ''LGcpe2lmKCQ2KGQpKXtsZXQgaD17fTtpZihnLmhhc0F0dHJpYnV0ZSgiY2RzLWkxOG4iKSl7Y29uc3Qgdj1nLmdldEF0dHJpYnV0ZSgiY2RzLWkxOG4iKSsiIjtpZigkNih2KSloPXt9O2Vsc2UgdHJ5e2g9SlNPTi5wYXJzZSh2KX1jYXRjaCh5KXtONy53YXJuKCJDbGFyaXR5IGkxOG46IElu''@;'; put 'put ''dmFsaWQgSlNPTiBwYXNzZWQgdG8gY2RzLWkxOG4iKSxoPXt9fX1yZXR1cm4gaH1yZXR1cm4gZH0oQyx0aGlzKSxaPWZ1bmN0aW9uIFExZShkLGcsaCx2KXtyZXR1cm4gJDYoZCk/VUooaCx2KT97dXBkYXRlOiExfTp7dXBkYXRlOiEwLHZhbHVlczpofTpkPT09Zz97dXBkYXRlOiExLHZhbHVl''@;'; put 'put ''czp7fX06e3VwZGF0ZTohMCxrZXk6ZCx2YWx1ZXM6e319fShydi5maW5kS2V5KEkpfHwiIix0aGlzLl9faTE4bktleSxJLHRoaXMuX19pMThuKTt2b2lkIDAhPT1aLmtleSYmKHRoaXMuX19pMThuS2V5PVoua2V5KyIiKSx2b2lkIDAhPT1aLnZhbHVlcyYmKHRoaXMuX19pMThuPW1zKHt9LFou''@;'; put 'put ''dmFsdWVzKSksITA9PT1aLnVwZGF0ZSYmdGhpcy5yZXF1ZXN0VXBkYXRlKCksdGhpcy5yZXF1ZXN0VXBkYXRlKGcpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07cmV0dXJuIHZvaWQgMCE9PWc/ZnVuY3Rpb24oQyxJLFope2NvbnN0IHVlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShJ''@;'; put 'put ''LFosQyk7cmV0dXJuIEUxKHt0eXBlOk9iamVjdCxhdHRyaWJ1dGU6ImNkcy1pMThuIn0pKHVlLFopfSh5LGQsZyk6ZnVuY3Rpb24oQyxJKXtjb25zdCBaPXtraW5kOiJtZXRob2QiLHBsYWNlbWVudDoicHJvdG90eXBlIixrZXk6SS5rZXksZGVzY3JpcHRvcjpDfTtyZXR1cm4gRTEoe3R5cGU6''@;'; put 'put ''T2JqZWN0fSkoWil9KHksZCl9fSgpXSxtZy5wcm90b3R5cGUsImkxOG4iLHZvaWQgMCksVjIoW2pLKHt0eXBlOkJvb2xlYW4scmVmbGVjdDohMCxhdHRyaWJ1dGU6ImNkcy1idXR0b24tYWN0aW9uIn0pXSxtZy5wcm90b3R5cGUsImNkc0J1dHRvbkFjdGlvbiIsdm9pZCAwKTtjbGFzcyBzOCBl''@;'; put 'put ''eHRlbmRzIG1ne2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNoYXBlPSJjbG9zZSJ9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuYXJpYUxhYmVsPXRoaXMuYXJpYUxhYmVsP3RoaXMuYXJpYUxhYmVsOnRoaXMuaTE4bi5j''@;'; put 'put ''bG9zZX19VjIoW0UxKHt0eXBlOlN0cmluZ30pXSxzOC5wcm90b3R5cGUsInNoYXBlIix2b2lkIDApLENLKCJjZHMtaW50ZXJuYWwtY2xvc2UtYnV0dG9uIixzOCksaHMuYWRkSWNvbnMocFgpLGhzLmFkZEFsaWFzZXMoWyJ0aW1lcyIsWyJjbG9zZSJdXSk7Y29uc3QgbmE9WyIqIl07ZnVuY3Rp''@;'; put 'put ''b24gWDFlKGQsZyl7aWYoMSZkJiYoQjAoMCksWXQoMSksUDAoKSksMiZkKXtjb25zdCBoPVF0KDMpO3V0KDEpLGppKGguY29tbW9uU3RyaW5ncy5rZXlzLmRhbmdlcil9fWZ1bmN0aW9uIEsxZShkLGcpe2lmKDEmZCYmKG50KDAsImRpdiIsMTQpLHJuKDEsWDFlLDIsMSwibmctY29udGFpbmVy''@;'; put 'put ''IiwwKSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoKS4kaW1wbGljaXQsdj1RdCgpO3V0KDEpLFR0KCJuZ0lmIixoLnN0YXR1cz09PXYuQWNjb3JkaW9uU3RhdHVzLkVycm9yKX19ZnVuY3Rpb24gJDFlKGQsZyl7aWYoMSZkJiYoQjAoMCksWXQoMSksUDAoKSksMiZkKXtjb25zdCBoPVF0KDIpO3V0''@;'; put 'put ''KDEpLGppKGguY29tbW9uU3RyaW5ncy5rZXlzLmRhbmdlcil9fWZ1bmN0aW9uIHExZShkLGcpe2lmKDEmZCYmKEIwKDApLFl0KDEpLFAwKCkpLDImZCl7Y29uc3QgaD1RdCgyKTt1dCgxKSxqaShoLmNvbW1vblN0cmluZ3Mua2V5cy5zdWNjZXNzKX19ZnVuY3Rpb24gZXVlKGQsZyl7aWYoMSZk''@;'; put 'put ''KXtjb25zdCBoPXdpKCk7bnQoMCwiZGl2IiwxNSksR24oIkB0b2dnbGUuZG9uZSIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KCkuJGltcGxpY2l0O3JldHVybiBhKFF0KCkuY29sbGFwc2VQYW5lbE9uQW5pbWF0aW9uRG9uZSh5KSl9KSxudCgxLCJkaXYiLDE2KSxOaSgyLDIpLG90KCko''@;'; put 'put ''KX0yJmQmJlR0KCJAdG9nZ2xlIix2b2lkIDApfWZ1bmN0aW9uIHR1ZShkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO0IwKDApLHJuKDEsSzFlLDIsMSwiZGl2IiwxKSxudCgyLCJkaXYiLDIpKDMsImRpdiIsMykoNCwiYnV0dG9uIiw0LDUpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''aXQoaCksYShRdCgpLnRvZ2dsZVBhbmVsKCkpfSksbm4oNiwiYXN5bmMiKSxudCg3LCJzcGFuIiw2KSxybig4LCQxZSwyLDEsIm5nLWNvbnRhaW5lciIsMCkscm4oOSxxMWUsMiwxLCJuZy1jb250YWluZXIiLDApLG90KCksbnQoMTAsInNwYW4iLDcpLENyKDExLCJjZHMtaWNvbiIsOCkoMTIs''@;'; put 'put ''InNwYW4iLDkpKDEzLCJjZHMtaWNvbiIsMTApKDE0LCJjZHMtaWNvbiIsMTEpLG90KCksTmkoMTUpLE5pKDE2LDEpLG90KCkoKSxudCgxNywiZGl2IiwxMikscm4oMTgsZXVlLDMsMSwiZGl2IiwxMyksb3QoKSgpLFAwKCl9aWYoMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0LHY9UXQoKTtsZXQg''@;'; put 'put ''eTt1dCgxKSxUdCgibmdJZiIsaC5zdGF0dXMhPT12LkFjY29yZGlvblN0YXR1cy5JbmFjdGl2ZSksdXQoMSksVHQoIm5nQ2xhc3MiLHYuZ2V0UGFuZWxTdGF0ZUNsYXNzZXMoaCkpLHV0KDIpLEZpKCJjbHItYWNjb3JkaW9uLWhlYWRlci1oYXMtZGVzY3JpcHRpb24iLChudWxsPT0oeT16dCg2''@;'; put 'put ''LDE2LHYuYWNjb3JkaW9uRGVzY3JpcHRpb24uY2hhbmdlcykpP251bGw6eS5sZW5ndGgpfHx2LmFjY29yZGlvbkRlc2NyaXB0aW9uLmxlbmd0aCksVHQoImlkIix2LmdldEFjY29yZGlvbkhlYWRlcklkKGgudGVtcGxhdGVJZCkpKCJkaXNhYmxlZCIsdi5pc0FjY29yZGlvbiYmaC5kaXNhYmxl''@;'; put 'put ''ZCksR2koImFyaWEtZGlzYWJsZWQiLCF2LmlzQWNjb3JkaW9uJiZoLmRpc2FibGVkKSgiYXJpYS1jb250cm9scyIsdi5nZXRBY2NvcmRpb25Db250ZW50SWQoaC50ZW1wbGF0ZUlkKSkoImFyaWEtZXhwYW5kZWQiLGgub3BlbiksdXQoNCksVHQoIm5nSWYiLGguc3RhdHVzPT09di5BY2NvcmRp''@;'; put 'put ''b25TdGF0dXMuRXJyb3IpLHV0KDEpLFR0KCJuZ0lmIixoLnN0YXR1cz09PXYuQWNjb3JkaW9uU3RhdHVzLkNvbXBsZXRlKSx1dCg4KSxUdCgiQHNraXBJbml0aWFsUmVuZGVyIix2b2lkIDApKCJpZCIsdi5nZXRBY2NvcmRpb25Db250ZW50SWQoaC50ZW1wbGF0ZUlkKSksR2koImFyaWEtaGlk''@;'; put 'put ''ZGVuIiwhaC5vcGVuKSgiYXJpYS1sYWJlbGxlZGJ5Iix2LmdldEFjY29yZGlvbkhlYWRlcklkKGgudGVtcGxhdGVJZCkpLHV0KDEpLFR0KCJuZ0lmIixoLm9wZW4pfX1jb25zdCAkSz1bW1siY2xyLWFjY29yZGlvbi10aXRsZSJdLFsiY2xyLXN0ZXAtdGl0bGUiXV0sW1siY2xyLWFjY29yZGlv''@;'; put 'put ''bi1kZXNjcmlwdGlvbiJdLFsiY2xyLXN0ZXAtZGVzY3JpcHRpb24iXV0sIioiXSxxSz1bImNsci1hY2NvcmRpb24tdGl0bGUsIGNsci1zdGVwLXRpdGxlIiwiY2xyLWFjY29yZGlvbi1kZXNjcmlwdGlvbiwgY2xyLXN0ZXAtZGVzY3JpcHRpb24iLCIqIl0seXVlPVsiY2xyTG9hZGluZyIsIiJd''@;'; put 'put ''O2Z1bmN0aW9uIHd1ZShkLGcpezEmZCYmKG50KDAsInNwYW4iKSxDcigxLCJzcGFuIiwyKSxvdCgpKSwyJmQmJih1dCgxKSxUdCgiQHNwaW5uZXIiLHZvaWQgMCkpfWZ1bmN0aW9uIGJ1ZShkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsInNwYW4iKSgxLCJzcGFuIiwzKSxHbigiQHZh''@;'; put 'put ''bGlkYXRlZC5kb25lIixmdW5jdGlvbigpe2l0KGgpO2NvbnN0IHk9UXQoKTtyZXR1cm4gYSh5LmxvYWRpbmdTdGF0ZUNoYW5nZSh5LmJ1dHRvblN0YXRlLkRFRkFVTFQpKX0pLG90KCkoKX0yJmQmJih1dCgxKSxUdCgiQHZhbGlkYXRlZCIsdm9pZCAwKSl9ZnVuY3Rpb24gX3VlKGQsZyl7MSZk''@;'; put 'put ''JiYobnQoMCwic3BhbiIpLE5pKDEpLG90KCkpLDImZCYmVHQoIkBkZWZhdWx0QnV0dG9uIix2b2lkIDApfWZ1bmN0aW9uIEN1ZShkLGcpezEmZCYmQ3IoMCwibGFiZWwiKX1jb25zdCBrdWU9W1tbIiIsImNsckNoZWNrYm94IiwiIl0sWyIiLCJjbHJUb2dnbGUiLCIiXV0sW1sibGFiZWwiXV1d''@;'; put 'put ''LFN1ZT1bIltjbHJDaGVja2JveF0sW2NsclRvZ2dsZV0iLCJsYWJlbCJdO2Z1bmN0aW9uIE11ZShkLGcpezEmZCYmQ3IoMCwibGFiZWwiKX1mdW5jdGlvbiBFdWUoZCxnKXsxJmQmJk5pKDAsMixbIipuZ0lmIiwic2hvd0hlbHBlciJdKX1mdW5jdGlvbiB4dWUoZCxnKXsxJmQmJkNyKDAsImNk''@;'; put 'put ''cy1pY29uIiw1KX1mdW5jdGlvbiBUdWUoZCxnKXsxJmQmJkNyKDAsImNkcy1pY29uIiw2KX1mdW5jdGlvbiBJdWUoZCxnKXsxJmQmJk5pKDAsMyxbIipuZ0lmIiwic2hvd0ludmFsaWQiXSl9ZnVuY3Rpb24gRHVlKGQsZyl7MSZkJiZOaSgwLDQsWyIqbmdJZiIsInNob3dWYWxpZCJdKX1jb25z''@;'; put 'put ''dCBMdWU9W1tbImxhYmVsIl1dLFtbImNsci1jaGVja2JveC13cmFwcGVyIl0sWyJjbHItdG9nZ2xlLXdyYXBwZXIiXV0sW1siY2xyLWNvbnRyb2wtaGVscGVyIl1dLFtbImNsci1jb250cm9sLWVycm9yIl1dLFtbImNsci1jb250cm9sLXN1Y2Nlc3MiXV1dLE91ZT1bImxhYmVsIiwiY2xyLWNo''@;'; put 'put ''ZWNrYm94LXdyYXBwZXIsY2xyLXRvZ2dsZS13cmFwcGVyIiwiY2xyLWNvbnRyb2wtaGVscGVyIiwiY2xyLWNvbnRyb2wtZXJyb3IiLCJjbHItY29udHJvbC1zdWNjZXNzIl0sUnVlPVsiY2xyS2V5Rm9jdXMiLCIiXTtmdW5jdGlvbiB0cyhkLGcpezEmZCYmQ3IoMCwibGFiZWwiKX1mdW5jdGlv''@;'; put 'put ''biB0JChkLGcpezEmZCYmQ3IoMCwiY2RzLWljb24iLDUpfWZ1bmN0aW9uIEh1ZShkLGcpezEmZCYmQ3IoMCwiY2RzLWljb24iLDYpfWZ1bmN0aW9uIG4kKGQsZyl7MSZkJiZOaSgwLDIsWyIqbmdJZiIsInNob3dIZWxwZXIiXSl9ZnVuY3Rpb24gciQoZCxnKXsxJmQmJk5pKDAsMyxbIipuZ0lm''@;'; put 'put ''Iiwic2hvd0ludmFsaWQiXSl9ZnVuY3Rpb24gQ0FlKGQsZyl7MSZkJiZOaSgwLDQsWyIqbmdJZiIsInNob3dWYWxpZCJdKX1jb25zdCBOdWU9W1tbImxhYmVsIl1dLFtbIiIsImNscklucHV0IiwiIl1dLFtbImNsci1jb250cm9sLWhlbHBlciJdXSxbWyJjbHItY29udHJvbC1lcnJvciJdXSxb''@;'; put 'put ''WyJjbHItY29udHJvbC1zdWNjZXNzIl1dXSxwTD1bImxhYmVsIiwiW2NscklucHV0XSIsImNsci1jb250cm9sLWhlbHBlciIsImNsci1jb250cm9sLWVycm9yIiwiY2xyLWNvbnRyb2wtc3VjY2VzcyJdO2Z1bmN0aW9uICRrKGQsZyl7aWYoMSZkJiYobnQoMCwidGgiLDQpLFl0KDEpLG90KCkp''@;'; put 'put ''LDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDtHaSgiYXJpYS1sYWJlbCIsaC5kYXkpLHV0KDEpLEppKCIgIixoLm5hcnJvdywiICIpfX1mdW5jdGlvbiBWdWUoZCxnKXtpZigxJmQmJihudCgwLCJ0ZCIsNyksQ3IoMSwiY2xyLWRheSIsOCksb3QoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0''@;'; put 'put ''O3V0KDEpLFR0KCJjbHJEYXlWaWV3IixoKX19ZnVuY3Rpb24gcWsoZCxnKXtpZigxJmQmJihudCgwLCJ0ciIsNSkscm4oMSxWdWUsMiwxLCJ0ZCIsNiksb3QoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3V0KDEpLFR0KCJuZ0Zvck9mIixoKX19ZnVuY3Rpb24gaSQoZCxnKXtpZigxJmQp''@;'; put 'put ''e2NvbnN0IGg9d2koKTtudCgwLCJidXR0b24iLDEpLEduKCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBDPWl0KGgpLmluZGV4O3JldHVybiBhKFF0KCkuY2hhbmdlTW9udGgoQykpfSksWXQoMSksb3QoKX1pZigyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1nLmluZGV4LHk9UXQoKTtGaSgi''@;'; put 'put ''aXMtc2VsZWN0ZWQiLHY9PT15LmNhbGVuZGFyTW9udGhJbmRleCksR2koInRhYmluZGV4Iix5LmdldFRhYkluZGV4KHYpKSx1dCgxKSxKaSgiICIsaCwiICIpfX1mdW5jdGlvbiBvJChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImJ1dHRvbiIsNyksR24oImNsaWNrIixmdW5jdGlv''@;'; put 'put ''bigpe2NvbnN0IEM9aXQoaCkuJGltcGxpY2l0O3JldHVybiBhKFF0KCkuY2hhbmdlWWVhcihDKSl9KSxZdCgxKSxvdCgpfWlmKDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PVF0KCk7RmkoImlzLXNlbGVjdGVkIixoPT09di5jYWxlbmRhclllYXIpLEdpKCJ0YWJpbmRleCIsdi5nZXRUYWJJ''@;'; put 'put ''bmRleChoKSksdXQoMSksSmkoIiAiLGgsIiAiKX19ZnVuY3Rpb24gYSQoZCxnKXsxJmQmJkNyKDAsImNsci1tb250aHBpY2tlciIpfWZ1bmN0aW9uIGwkKGQsZyl7MSZkJiZDcigwLCJjbHIteWVhcnBpY2tlciIpfWZ1bmN0aW9uIGp1ZShkLGcpezEmZCYmQ3IoMCwiY2xyLWRheXBpY2tlciIp''@;'; put 'put ''fWNvbnN0IFp1ZT1bImFjdGlvbkJ1dHRvbiJdO2Z1bmN0aW9uIHp1ZShkLGcpezEmZCYmQ3IoMCwibGFiZWwiKX1mdW5jdGlvbiB2ZyhkLGcpezEmZCYmKG50KDAsImJ1dHRvbiIsOCw5KSxDcigyLCJjZHMtaWNvbiIsMTApLG90KCkpLDImZCYmVHQoImRpc2FibGVkIixRdCgpLmlzSW5wdXRE''@;'; put 'put ''YXRlRGlzYWJsZWQpfWZ1bmN0aW9uIFNqKGQsZyl7MSZkJiZDcigwLCJjbHItZGF0ZXBpY2tlci12aWV3LW1hbmFnZXIiLDExKX1mdW5jdGlvbiBHdWUoZCxnKXsxJmQmJkNyKDAsImNkcy1pY29uIiwxMil9ZnVuY3Rpb24gcyQoZCxnKXsxJmQmJkNyKDAsImNkcy1pY29uIiwxMyl9ZnVuY3Rp''@;'; put 'put ''b24gdSQoZCxnKXsxJmQmJk5pKDAsMixbIipuZ0lmIiwic2hvd0hlbHBlciJdKX1mdW5jdGlvbiBjJChkLGcpezEmZCYmTmkoMCwzLFsiKm5nSWYiLCJzaG93SW52YWxpZCJdKX1mdW5jdGlvbiBXdWUoZCxnKXsxJmQmJk5pKDAsNCxbIipuZ0lmIiwic2hvd1ZhbGlkIl0pfWNvbnN0IFl1ZT1b''@;'; put 'put ''W1sibGFiZWwiXV0sW1siIiwiY2xyRGF0ZSIsIiJdXSxbWyJjbHItY29udHJvbC1oZWxwZXIiXV0sW1siY2xyLWNvbnRyb2wtZXJyb3IiXV0sW1siY2xyLWNvbnRyb2wtc3VjY2VzcyJdXV0sJHk9WyJsYWJlbCIsIltjbHJEYXRlXSIsImNsci1jb250cm9sLWhlbHBlciIsImNsci1jb250cm9s''@;'; put 'put ''LWVycm9yIiwiY2xyLWNvbnRyb2wtc3VjY2VzcyJdO2Z1bmN0aW9uIGYkKGQsZyl7MSZkJiZDcigwLCJsYWJlbCIpfWNvbnN0IGNoPVtbWyIiLCJjbHJSYWRpbyIsIiJdXSxbWyJsYWJlbCJdXV0saCQ9WyJbY2xyUmFkaW9dIiwibGFiZWwiXTtmdW5jdGlvbiBJbChkLGcpezEmZCYmQ3IoMCwi''@;'; put 'put ''bGFiZWwiKX1mdW5jdGlvbiBtTChkLGcpezEmZCYmTmkoMCwyLFsiKm5nSWYiLCJzaG93SGVscGVyIl0pfWZ1bmN0aW9uIGQkKGQsZyl7MSZkJiZDcigwLCJjZHMtaWNvbiIsNSl9ZnVuY3Rpb24gcCQoZCxnKXsxJmQmJkNyKDAsImNkcy1pY29uIiw2KX1mdW5jdGlvbiBpdihkLGcpezEmZCYm''@;'; put 'put ''TmkoMCwzLFsiKm5nSWYiLCJzaG93SW52YWxpZCJdKX1mdW5jdGlvbiB2TChkLGcpezEmZCYmTmkoMCw0LFsiKm5nSWYiLCJzaG93VmFsaWQiXSl9Y29uc3QgeTA9W1tbImxhYmVsIl1dLFtbImNsci1yYWRpby13cmFwcGVyIl1dLFtbImNsci1jb250cm9sLWhlbHBlciJdXSxbWyJjbHItY29u''@;'; put 'put ''dHJvbC1lcnJvciJdXSxbWyJjbHItY29udHJvbC1zdWNjZXNzIl1dXSxDcD1bImxhYmVsIiwiY2xyLXJhZGlvLXdyYXBwZXIiLCJjbHItY29udHJvbC1oZWxwZXIiLCJjbHItY29udHJvbC1lcnJvciIsImNsci1jb250cm9sLXN1Y2Nlc3MiXTtmdW5jdGlvbiAkdWUoZCxnKXsxJmQmJkNyKDAs''@;'; put 'put ''ImxhYmVsIil9ZnVuY3Rpb24gcXVlKGQsZyl7MSZkJiZDcigwLCJjZHMtaWNvbiIsNSl9ZnVuY3Rpb24gZWNlKGQsZyl7MSZkJiZDcigwLCJjZHMtaWNvbiIsNil9ZnVuY3Rpb24gdGNlKGQsZyl7MSZkJiZOaSgwLDIsWyIqbmdJZiIsInNob3dIZWxwZXIiXSl9ZnVuY3Rpb24gcmQoZCxnKXsx''@;'; put 'put ''JmQmJk5pKDAsMyxbIipuZ0lmIiwic2hvd0ludmFsaWQiXSl9ZnVuY3Rpb24gbmNlKGQsZyl7MSZkJiZOaSgwLDQsWyIqbmdJZiIsInNob3dWYWxpZCJdKX1jb25zdCByY2U9W1tbImxhYmVsIl1dLFtbIiIsImNsclNlbGVjdCIsIiJdXSxbWyJjbHItY29udHJvbC1oZWxwZXIiXV0sW1siY2xy''@;'; put 'put ''LWNvbnRyb2wtZXJyb3IiXV0sW1siY2xyLWNvbnRyb2wtc3VjY2VzcyJdXV0sbSQ9WyJsYWJlbCIsIltjbHJTZWxlY3RdIiwiY2xyLWNvbnRyb2wtaGVscGVyIiwiY2xyLWNvbnRyb2wtZXJyb3IiLCJjbHItY29udHJvbC1zdWNjZXNzIl07ZnVuY3Rpb24gaWNlKGQsZyl7MSZkJiZDcigwLCJs''@;'; put 'put ''YWJlbCIpfWZ1bmN0aW9uIHU4KGQsZyl7MSZkJiZDcigwLCJjZHMtaWNvbiIsNSl9ZnVuY3Rpb24gYnMoZCxnKXsxJmQmJkNyKDAsImNkcy1pY29uIiw2KX1mdW5jdGlvbiBvY2UoZCxnKXsxJmQmJk5pKDAsMixbIipuZ0lmIiwic2hvd0hlbHBlciJdKX1mdW5jdGlvbiBhY2UoZCxnKXsxJmQm''@;'; put 'put ''Jk5pKDAsMyxbIipuZ0lmIiwic2hvd0ludmFsaWQiXSl9ZnVuY3Rpb24gbGNlKGQsZyl7MSZkJiZOaSgwLDQsWyIqbmdJZiIsInNob3dWYWxpZCJdKX1jb25zdCBNaj1bW1sibGFiZWwiXV0sW1siIiwiY2xyVGV4dGFyZWEiLCIiXV0sW1siY2xyLWNvbnRyb2wtaGVscGVyIl1dLFtbImNsci1j''@;'; put 'put ''b250cm9sLWVycm9yIl1dLFtbImNsci1jb250cm9sLXN1Y2Nlc3MiXV1dLEVqPVsibGFiZWwiLCJbY2xyVGV4dGFyZWFdIiwiY2xyLWNvbnRyb2wtaGVscGVyIiwiY2xyLWNvbnRyb2wtZXJyb3IiLCJjbHItY29udHJvbC1zdWNjZXNzIl0sc2NlPVsiYW5jaG9yIl07ZnVuY3Rpb24gQWcoZCxn''@;'; put 'put ''KXtpZigxJmQmJihudCgwLCJkaXYiLDQpKDEsImRpdiIsNSkoMiwiYnV0dG9uIiw2KSxDcigzLCJjZHMtaWNvbiIsNyksb3QoKSgpLE5pKDQpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgpO1R0KCJpZCIsaC5wb3BvdmVySWQpLEdpKCJhcmlhLWxhYmVsIixoLmNvbW1vblN0cmluZ3Mua2V5cy5k''@;'; put 'put ''YXRhZ3JpZEZpbHRlckRpYWxvZ0FyaWFMYWJlbCksdXQoMyksR2koInRpdGxlIixoLmNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZSl9fWNvbnN0IHVjZT1bImlucHV0X2xvdyJdLEFMPVsiaW5wdXQiXSx5TD1bImNvbHVtblBvcnRhbCJdO2Z1bmN0aW9uIHhqKGQsZyl7MSZkJiZOaSgwKX1jb25z''@;'; put 'put ''dCBSZj1bInJlc2l6ZVRyYWNrZXIiXSxlMz1bImNvbHVtbkhhbmRsZSJdO2Z1bmN0aW9uIFZ1KGQsZyl7MSZkJiZmMSgwKX1mdW5jdGlvbiB2JChkLGcpezEmZCYmQ3IoMCwiY2RzLWljb24iLDEwKSwyJmQmJkdpKCJkaXJlY3Rpb24iLFF0KDIpLnNvcnREaXJlY3Rpb24pfWZ1bmN0aW9uIEEk''@;'; put 'put ''KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiYnV0dG9uIiw3KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoKS5zb3J0KCkpfSkscm4oMSxWdSwxLDAsIm5nLWNvbnRhaW5lciIsOCkscm4oMix2JCwxLDEsImNkcy1pY29uIiw5KSxvdCgpfWlmKDImZCl7''@;'; put 'put ''Y29uc3QgaD1RdCgpLHY9dmEoNik7dXQoMSksVHQoIm5nVGVtcGxhdGVPdXRsZXQiLHYpLHV0KDEpLFR0KCJuZ0lmIixoLnNvcnREaXJlY3Rpb24pfX1mdW5jdGlvbiBjY2UoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJjbHItZGctc3RyaW5nLWZpbHRlciIsMTEpLEduKCJjbHJG''@;'; put 'put ''aWx0ZXJWYWx1ZUNoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoKS5maWx0ZXJWYWx1ZT15KX0pLG90KCl9aWYoMiZkKXtjb25zdCBoPVF0KCk7VHQoImNsckZpbHRlclBsYWNlaG9sZGVyIixoLmZpbHRlclN0cmluZ1BsYWNlaG9sZGVyVmFsdWUpKCJjbHJEZ1N0cmluZ0Zp''@;'; put 'put ''bHRlciIsaC5yZWdpc3RlcmVkKSgiY2xyRmlsdGVyVmFsdWUiLGguZmlsdGVyVmFsdWUpfX1mdW5jdGlvbiBmY2UoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJjbHItZGctbnVtZXJpYy1maWx0ZXIiLDEyKSxHbigiY2xyRmlsdGVyVmFsdWVDaGFuZ2UiLGZ1bmN0aW9uKHkpe3Jl''@;'; put 'put ''dHVybiBpdChoKSxhKFF0KCkuZmlsdGVyVmFsdWU9eSl9KSxvdCgpfWlmKDImZCl7Y29uc3QgaD1RdCgpO1R0KCJjbHJGaWx0ZXJNYXhQbGFjZWhvbGRlciIsaC5maWx0ZXJNYXhQbGFjZWhvbGRlclZhbHVlKSgiY2xyRmlsdGVyTWluUGxhY2Vob2xkZXIiLGguZmlsdGVyTWluUGxhY2Vob2xk''@;'; put 'put ''ZXJWYWx1ZSkoImNsckRnTnVtZXJpY0ZpbHRlciIsaC5yZWdpc3RlcmVkKSgiY2xyRmlsdGVyVmFsdWUiLGguZmlsdGVyVmFsdWUpfX1mdW5jdGlvbiBxeShkLGcpezEmZCYmTmkoMCwxKX1mdW5jdGlvbiBjYyhkLGcpezEmZCYmZjEoMCl9ZnVuY3Rpb24gaGNlKGQsZyl7aWYoMSZkJiYobnQo''@;'; put 'put ''MCwic3BhbiIsMTMpLHJuKDEsY2MsMSwwLCJuZy1jb250YWluZXIiLDgpLG90KCkpLDImZCl7UXQoKTtjb25zdCBoPXZhKDYpO3V0KDEpLFR0KCJuZ1RlbXBsYXRlT3V0bGV0IixoKX19ZnVuY3Rpb24geSQoZCxnKXsxJmQmJkNyKDAsImNsci1kZy1jb2x1bW4tc2VwYXJhdG9yIil9Y29uc3Qg''@;'; put 'put ''VGo9W1tbImNsci1kZy1maWx0ZXIiXSxbImNsci1kZy1zdHJpbmctZmlsdGVyIl0sWyJjbHItZGctbnVtZXJpYy1maWx0ZXIiXV0sIioiXSx3JD1bImNsci1kZy1maWx0ZXIsIGNsci1kZy1zdHJpbmctZmlsdGVyLCBjbHItZGctbnVtZXJpYy1maWx0ZXIiLCIqIl07ZnVuY3Rpb24gZGNlKGQs''@;'; put 'put ''Zyl7MSZkJiZDcigwLCJkaXYiLDQpfWZ1bmN0aW9uIHBjZShkLGcpezEmZCYmTmkoMCwwLFsiKm5nSWYiLCJlbXB0eURhdGFncmlkIl0pfWZ1bmN0aW9uIGF2KGQsZyl7aWYoMSZkJiYoQjAoMCksbnQoMSwiYnV0dG9uIiwxKSxDcigyLCJjZHMtaWNvbiIsMiksb3QoKSxQMCgpKSwyJmQpe2Nv''@;'; put 'put ''bnN0IGg9UXQoKTt1dCgyKSxHaSgidGl0bGUiLGguY29tbW9uU3RyaW5ncy5rZXlzLmluZm8pfX1jb25zdCBJaj1bImNlbGxQb3J0YWwiXTtmdW5jdGlvbiBiJChkLGcpezEmZCYmTmkoMCl9Y29uc3QgdDM9WyJyb3dQb3J0YWwiXTtmdW5jdGlvbiBnY2UoZCxnKXsxJmQmJk5pKDApfWNvbnN0''@;'; put 'put ''IG1jZT1bImRldGFpbEJ1dHRvbiJdLHlnPVsic3RpY2t5Q2VsbHMiXSx0Uz1bInNjcm9sbGFibGVDZWxscyJdLHZjZT1bImNhbGN1bGF0ZWRDZWxscyJdO2Z1bmN0aW9uIEFjZShkLGcpe31mdW5jdGlvbiB5Y2UoZCxnKXtpZigxJmQmJihudCgwLCJjbHItZXhwYW5kYWJsZS1hbmltYXRpb24i''@;'; put 'put ''LDcpLHJuKDEsQWNlLDAsMCwibmctdGVtcGxhdGUiLDgpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgyKSx2PXZhKDYpO1R0KCJjbHJFeHBhbmRUcmlnZ2VyIixoLmV4cGFuZEFuaW1hdGlvblRyaWdnZXIpLHV0KDEpLFR0KCJuZ1RlbXBsYXRlT3V0bGV0Iix2KX19ZnVuY3Rpb24gd2NlKGQsZyl7''@;'; put 'put ''fWZ1bmN0aW9uIGV3KGQsZyl7MSZkJiZybigwLHdjZSwwLDAsIm5nLXRlbXBsYXRlIiw4KSwyJmQmJihRdCgyKSxUdCgibmdUZW1wbGF0ZU91dGxldCIsdmEoNikpKX1mdW5jdGlvbiBiY2UoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJsYWJlbCIsNiksR24oIm1vdXNlZG93biIs''@;'; put 'put ''ZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoKS5jbGVhclJhbmdlcyh5KSl9KSxybigxLHljZSwyLDIsImNsci1leHBhbmRhYmxlLWFuaW1hdGlvbiIsMSkscm4oMixldywxLDEsbnVsbCwyKSxvdCgpfWlmKDImZCl7Y29uc3QgaD1RdCgpO3V0KDEpLFR0KCJuZ0lmIixoLmV4cGFuZC5l''@;'; put 'put ''eHBhbmRhYmxlKSx1dCgxKSxUdCgibmdJZiIsIWguZXhwYW5kLmV4cGFuZGFibGUpfX1mdW5jdGlvbiBfJChkLGcpe31mdW5jdGlvbiBfY2UoZCxnKXtpZigxJmQmJihudCgwLCJjbHItZXhwYW5kYWJsZS1hbmltYXRpb24iLDcpLHJuKDEsXyQsMCwwLCJuZy10ZW1wbGF0ZSIsOCksb3QoKSks''@;'; put 'put ''MiZkKXtjb25zdCBoPVF0KCksdj12YSg2KTtUdCgiY2xyRXhwYW5kVHJpZ2dlciIsaC5leHBhbmRBbmltYXRpb25UcmlnZ2VyKSx1dCgxKSxUdCgibmdUZW1wbGF0ZU91dGxldCIsdil9fWZ1bmN0aW9uIG9vKGQsZyl7fWZ1bmN0aW9uIERqKGQsZyl7MSZkJiZybigwLG9vLDAsMCwibmctdGVt''@;'; put 'put ''cGxhdGUiLDgpLDImZCYmKFF0KCksVHQoIm5nVGVtcGxhdGVPdXRsZXQiLHZhKDYpKSl9ZnVuY3Rpb24geDEoZCxnKXsxJmQmJk5pKDApfWNvbnN0IHdMPWZ1bmN0aW9uKGQpe3JldHVybnsiY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCI6ZH19O2Z1bmN0aW9uIGJMKGQsZyl7aWYoMSZkKXtj''@;'; put 'put ''b25zdCBoPXdpKCk7bnQoMCwiZGl2IiwxOSkoMSwiZGl2IiwyMCkoMiwiaW5wdXQiLDIxKSxHbigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoMikudG9nZ2xlKHkpKX0pLG90KCksbnQoMywibGFiZWwiLDIyKSxHbigiY2xpY2siLGZ1bmN0aW9uKHkpe3Jl''@;'; put 'put ''dHVybiBpdChoKSxhKFF0KDIpLmNsZWFyUmFuZ2VzKHkpKX0pLG50KDQsInNwYW4iLDIzKSxZdCg1KSxvdCgpKCkoKSgpfWlmKDImZCl7Y29uc3QgaD1RdCgyKTtUdCgibmdDbGFzcyIsR2QoOCx3TCwhaC5jbHJEZ1NlbGVjdGFibGUpKSx1dCgyKSxUdCgibmdNb2RlbCIsaC5zZWxlY3RlZCko''@;'; put 'put ''ImlkIixoLmNoZWNrYm94SWQpLEdpKCJkaXNhYmxlZCIsIWguY2xyRGdTZWxlY3RhYmxlfHxudWxsKSgiYXJpYS1kaXNhYmxlZCIsIWguY2xyRGdTZWxlY3RhYmxlfHxudWxsKSgiYXJpYS1sYWJlbCIsaC5jbHJEZ1Jvd0FyaWFMYWJlbCksdXQoMSksVHQoImZvciIsaC5jaGVja2JveElkKSx1''@;'; put 'put ''dCgyKSxqaShoLmNvbW1vblN0cmluZ3Mua2V5cy5zZWxlY3QpfX1mdW5jdGlvbiBfTChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImRpdiIsMTkpKDEsImlucHV0IiwyNCksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KDIpLnNlbGVjdGlv''@;'; put 'put ''bi5jdXJyZW50U2luZ2xlPXkpfSksb3QoKSgpfWlmKDImZCl7Y29uc3QgaD1RdCgyKTtUdCgibmdDbGFzcyIsR2QoOSx3TCwhaC5jbHJEZ1NlbGVjdGFibGUpKSx1dCgxKSxUdCgiaWQiLGgucmFkaW9JZCkoIm5hbWUiLGguc2VsZWN0aW9uLmlkKyItcmFkaW8iKSgidmFsdWUiLGguaXRlbSko''@;'; put 'put ''Im5nTW9kZWwiLGguc2VsZWN0aW9uLmN1cnJlbnRTaW5nbGUpKCJjaGVja2VkIixoLnNlbGVjdGlvbi5jdXJyZW50U2luZ2xlPT09aC5pdGVtKSxHaSgiZGlzYWJsZWQiLCFoLmNsckRnU2VsZWN0YWJsZXx8bnVsbCkoImFyaWEtZGlzYWJsZWQiLCFoLmNsckRnU2VsZWN0YWJsZXx8bnVsbCko''@;'; put 'put ''ImFyaWEtbGFiZWwiLGguY2xyRGdSb3dBcmlhTGFiZWwpfX1mdW5jdGlvbiBDTChkLGcpezEmZCYmKG50KDAsImRpdiIsMjUpLE5pKDEsMiksb3QoKSl9ZnVuY3Rpb24gQyQoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJidXR0b24iLDI5KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIGl0KGgpLGEoUXQoNCkudG9nZ2xlRXhwYW5kKCkpfSksQ3IoMSwiY2RzLWljb24iLDMwKSxvdCgpfWlmKDImZCl7Y29uc3QgaD1RdCg0KTtHaSgiYXJpYS1leHBhbmRlZCIsaC5leHBhbmQuZXhwYW5kZWQpKCJhcmlhLWxhYmVsIixoLmV4cGFuZC5leHBhbmRlZD9oLmNsckRnRGV0''@;'; put 'put ''YWlsQ2xvc2VMYWJlbDpoLmNsckRnRGV0YWlsT3BlbkxhYmVsKSgiYXJpYS1jb250cm9scyIsaC5leHBhbmRhYmxlSWQpLHV0KDEpLEdpKCJkaXJlY3Rpb24iLGguZXhwYW5kLmV4cGFuZGVkPyJkb3duIjoicmlnaHQiKSgidGl0bGUiLGguZXhwYW5kLmV4cGFuZGVkP2guY29tbW9uU3RyaW5n''@;'; put 'put ''cy5rZXlzLmNvbGxhcHNlOmguY29tbW9uU3RyaW5ncy5rZXlzLmV4cGFuZCl9fWZ1bmN0aW9uIGskKGQsZyl7aWYoMSZkJiYobnQoMCwiY2xyLXNwaW5uZXIiLDMxKSxZdCgxKSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoNCk7dXQoMSksamkoaC5jb21tb25TdHJpbmdzLmtleXMubG9hZGluZyl9''@;'; put 'put ''fWZ1bmN0aW9uIFMkKGQsZyl7aWYoMSZkJiYoQjAoMCkscm4oMSxDJCwyLDUsImJ1dHRvbiIsMjcpLHJuKDIsayQsMiwxLCJjbHItc3Bpbm5lciIsMjgpLFAwKCkpLDImZCl7Y29uc3QgaD1RdCgzKTt1dCgxKSxUdCgibmdJZiIsIWguZXhwYW5kLmxvYWRpbmcpLHV0KDEpLFR0KCJuZ0lmIixo''@;'; put 'put ''LmV4cGFuZC5sb2FkaW5nKX19ZnVuY3Rpb24gVDAoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDI2KSxybigxLFMkLDMsMiwibmctY29udGFpbmVyIiwyKSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoMik7dXQoMSksVHQoIm5nSWYiLGguZXhwYW5kLmV4cGFuZGFibGUpfX1mdW5jdGlvbiBDY2Uo''@;'; put 'put ''ZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJkaXYiLDMyKSgxLCJidXR0b24iLDMzLDM0KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3QgeT12YSgyKSxDPVF0KDIpO3JldHVybiBhKEMuZGV0YWlsU2VydmljZS50b2dnbGUoQy5pdGVtLHkpKX0pLENyKDMsImNkcy1p''@;'; put 'put ''Y29uIiwzNSksb3QoKSgpfWlmKDImZCl7Y29uc3QgaD1RdCgyKTt1dCgxKSxGaSgiaXMtb3BlbiIsaC5kZXRhaWxTZXJ2aWNlLmlzUm93T3BlbihoLml0ZW0pKSxHaSgiYXJpYS1sYWJlbCIsaC5kZXRhaWxTZXJ2aWNlLmlzUm93T3BlbihoLml0ZW0pP2guY2xyRGdEZXRhaWxDbG9zZUxhYmVs''@;'; put 'put ''OmguY2xyRGdEZXRhaWxPcGVuTGFiZWwpKCJhcmlhLWV4cGFuZGVkIixoLmRldGFpbFNlcnZpY2UuaXNPcGVuKSgiYXJpYS1jb250cm9scyIsaC5kZXRhaWxTZXJ2aWNlLmlkKSx1dCgyKSxHaSgiZGlyZWN0aW9uIixoLmRldGFpbFNlcnZpY2UuaXNSb3dPcGVuKGguaXRlbSk/ImxlZnQiOiJy''@;'; put 'put ''aWdodCIpKCJ0aXRsZSIsaC5kZXRhaWxTZXJ2aWNlLmlzUm93T3BlbihoLml0ZW0pP2guY29tbW9uU3RyaW5ncy5rZXlzLmNsb3NlOmguY29tbW9uU3RyaW5ncy5rZXlzLm9wZW4pfX1mdW5jdGlvbiBrTChkLGcpe31mdW5jdGlvbiBMaihkLGcpezEmZCYmcm4oMCxrTCwwLDAsIm5nLXRlbXBs''@;'; put 'put ''YXRlIiw4KSwyJmQmJihRdCgyKSxUdCgibmdUZW1wbGF0ZU91dGxldCIsdmEoNCkpKX1mdW5jdGlvbiBsdihkLGcpe31mdW5jdGlvbiBrY2UoZCxnKXsxJmQmJnJuKDAsbHYsMCwwLCJuZy10ZW1wbGF0ZSIsOCksMiZkJiYoUXQoMiksVHQoIm5nVGVtcGxhdGVPdXRsZXQiLHZhKDQpKSl9Y29u''@;'; put 'put ''c3QgT2o9ZnVuY3Rpb24oZCl7cmV0dXJueyJpcy1yZXBsYWNlZCI6ZH19O2Z1bmN0aW9uIHJhKGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2Iiw5KSgxLCJkaXYiLDEwKSxCMCgyLG51bGwsMTEpLHJuKDQsYkwsNiwxMCwiZGl2IiwxMikscm4oNSxfTCwyLDExLCJkaXYiLDEyKSxybig2LENMLDIs''@;'; put 'put ''MCwiZGl2IiwxMykscm4oNyxUMCwyLDEsImRpdiIsMTQpLHJuKDgsQ2NlLDQsNywiZGl2IiwxNSksUDAoKSxvdCgpLG50KDksImRpdiIsMTYpKDEwLCJkaXYiLDE3KSxOaSgxMSwxKSxmMSgxMixudWxsLDE4KSxvdCgpLHJuKDE0LExqLDEsMSxudWxsLDIpLHJuKDE1LGtjZSwxLDEsbnVsbCwy''@;'; put 'put ''KSxvdCgpKCkpLDImZCl7Y29uc3QgaD1RdCgpO0ZpKCJkYXRhZ3JpZC1yb3ctZGV0YWlsLW9wZW4iLGguZGV0YWlsU2VydmljZS5pc1Jvd09wZW4oaC5pdGVtKSksVHQoImlkIixoLmlkKSx1dCg0KSxUdCgibmdJZiIsaC5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PWguU0VMRUNUSU9OX1RZ''@;'; put 'put ''UEUuTXVsdGkpLHV0KDEpLFR0KCJuZ0lmIixoLnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPT09aC5TRUxFQ1RJT05fVFlQRS5TaW5nbGUpLHV0KDEpLFR0KCJuZ0lmIixoLnJvd0FjdGlvblNlcnZpY2UuaGFzQWN0aW9uYWJsZVJvdyksdXQoMSksVHQoIm5nSWYiLGguZ2xvYmFsRXhwYW5kYWJs''@;'; put 'put ''ZS5oYXNFeHBhbmRhYmxlUm93KSx1dCgxKSxUdCgibmdJZiIsaC5kZXRhaWxTZXJ2aWNlLmVuYWJsZWQpLHV0KDEpLFR0KCJuZ0NsYXNzIixHZCgxMSxPaixoLnJlcGxhY2VkJiZoLmV4cGFuZGVkKSksdXQoNSksVHQoIm5nSWYiLGgucmVwbGFjZWQmJiFoLmV4cGFuZC5sb2FkaW5nKSx1dCgx''@;'; put 'put ''KSxUdCgibmdJZiIsIWgucmVwbGFjZWQmJiFoLmV4cGFuZC5sb2FkaW5nKX19Y29uc3QgTSQ9W1tbImNsci1kZy1yb3ctZGV0YWlsIl1dLFtbImNsci1kZy1jZWxsIl1dLFtbImNsci1kZy1hY3Rpb24tb3ZlcmZsb3ciXV1dLHN2PVsiY2xyLWRnLXJvdy1kZXRhaWwiLCJjbHItZGctY2VsbCIs''@;'; put 'put ''ImNsci1kZy1hY3Rpb24tb3ZlcmZsb3ciXSxTY2U9WyJzY3JvbGxhYmxlQ29sdW1ucyJdLEUkPVsiZGF0YWdyaWRUYWJsZSJdLHR3PVsicHJvamVjdGVkRGlzcGxheUNvbHVtbnMiXSxNY2U9WyJwcm9qZWN0ZWRDYWxjdWxhdGlvbkNvbHVtbnMiXSxSaj1bImRpc3BsYXllZFJvd3MiXSxCaj1b''@;'; put 'put ''ImNhbGN1bGF0aW9uUm93cyJdO2Z1bmN0aW9uIFNMKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiZGl2IiwyNCksR24oImtleWRvd24uc3BhY2UiLGZ1bmN0aW9uKHkpe2l0KGgpO2NvbnN0IEM9UXQoKTtyZXR1cm4gQy5hbGxTZWxlY3RlZD0hQy5hbGxTZWxlY3RlZCxhKHkucHJl''@;'; put 'put ''dmVudERlZmF1bHQoKSl9KSxudCgxLCJkaXYiLDI1KSgyLCJpbnB1dCIsMjYpLEduKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gaXQoaCksYShRdCgpLmFsbFNlbGVjdGVkPXkpfSksb3QoKSxudCgzLCJsYWJlbCIsMjcpKDQsInNwYW4iLDI4KSxZdCg1KSxvdCgpKCkoKSxD''@;'; put 'put ''cig2LCJkaXYiLDI5KSxvdCgpfWlmKDImZCl7Y29uc3QgaD1RdCgpO3V0KDIpLFR0KCJpZCIsaC5zZWxlY3RBbGxJZCkoIm5nTW9kZWwiLGguYWxsU2VsZWN0ZWQpLEdpKCJhcmlhLWxhYmVsIixoLmNvbW1vblN0cmluZ3Mua2V5cy5zZWxlY3RBbGwpLHV0KDEpLFR0KCJmb3IiLGguc2VsZWN0''@;'; put 'put ''QWxsSWQpLHV0KDIpLGppKGguY29tbW9uU3RyaW5ncy5rZXlzLnNlbGVjdEFsbCl9fWZ1bmN0aW9uIFBqKGQsZyl7MSZkJiYobnQoMCwiZGl2IiwzMCksQ3IoMSwiZGl2IiwyOSksb3QoKSksMiZkJiZHaSgiYXJpYS1sYWJlbCIsUXQoKS5jbHJEZ1NpbmdsZVNlbGVjdGlvbkFyaWFMYWJlbCl9''@;'; put 'put ''ZnVuY3Rpb24gRWNlKGQsZyl7MSZkJiYobnQoMCwiZGl2IiwzMSksQ3IoMSwiZGl2IiwyOSksb3QoKSksMiZkJiZHaSgiYXJpYS1sYWJlbCIsUXQoKS5jbHJEZ1NpbmdsZUFjdGlvbmFibGVBcmlhTGFiZWwpfWZ1bmN0aW9uIHgkKGQsZyl7MSZkJiYobnQoMCwiZGl2IiwzMiksQ3IoMSwiZGl2''@;'; put 'put ''IiwyOSksb3QoKSksMiZkJiZHaSgiYXJpYS1sYWJlbCIsUXQoKS5jbHJEZXRhaWxFeHBhbmRhYmxlQXJpYUxhYmVsKX1mdW5jdGlvbiB4Y2UoZCxnKXsxJmQmJkNyKDAsImNsci1kZy1wbGFjZWhvbGRlciIpfWZ1bmN0aW9uIGM4KGQsZyl7MSZkJiYobnQoMCwiZGl2IiwzMykoMSwiY2xyLXNw''@;'; put 'put ''aW5uZXIiLDM0KSxZdCgyLCJMb2FkaW5nIiksb3QoKSgpKX1jb25zdCBUY2U9W1tbImNsci1kZy1hY3Rpb24tYmFyIl1dLFtbImNsci1kZy1wbGFjZWhvbGRlciJdXSxbWyJjbHItZGctZm9vdGVyIl1dLFtbIiIsImNscklmRGV0YWlsIiwiIl0sWyJjbHItZGctZGV0YWlsIl1dXSxfdT1bImNs''@;'; put 'put ''ci1kZy1hY3Rpb24tYmFyIiwiY2xyLWRnLXBsYWNlaG9sZGVyIiwiY2xyLWRnLWZvb3RlciIsIltjbHJJZkRldGFpbF0sY2xyLWRnLWRldGFpbCJdLEZqPVsiYWxsU2VsZWN0ZWQiXTtmdW5jdGlvbiBJY2UoZCxnKXtpZigxJmQmJihCMCgwKSxudCgxLCJoMiIpLFl0KDIpLG90KCksUDAoKSks''@;'; put 'put ''MiZkKXtjb25zdCBoPVF0KDIpO3V0KDIpLGppKGguY29tbW9uU3RyaW5ncy5rZXlzLnNob3dDb2x1bW5zKX19ZnVuY3Rpb24gSGooZCxnKXt9ZnVuY3Rpb24gRGNlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwibGkiKSgxLCJjbHItY2hlY2tib3gtd3JhcHBlciIpKDIsImlucHV0''@;'; put 'put ''IiwxNSksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe2NvbnN0IEk9aXQoaCkuJGltcGxpY2l0O3JldHVybiBhKFF0KDIpLnRvZ2dsZUNvbHVtblN0YXRlKEksIXkpKX0pLG90KCksbnQoMywibGFiZWwiKSxybig0LEhqLDAsMCwibmctdGVtcGxhdGUiLDE2KSxvdCgpKCkoKX1pZigy''@;'; put 'put ''JmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1RdCgyKTt1dCgyKSxUdCgiZGlzYWJsZWQiLHYuaGFzT25seU9uZVZpc2libGVDb2x1bW4mJiFoLmhpZGRlbikoIm5nTW9kZWwiLCFoLmhpZGRlbiksdXQoMiksVHQoIm5nVGVtcGxhdGVPdXRsZXQiLGgudGl0bGVUZW1wbGF0ZVJlZil9fWZ1bmN0''@;'; put 'put ''aW9uIFQkKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiY2xyLWRnLWNvbHVtbi10b2dnbGUtYnV0dG9uIiwxNyksR24oImNsckFsbFNlbGVjdGVkIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KDIpLmFsbENvbHVtbnNTZWxlY3RlZCgpKX0pLFl0KDEpLG90KCl9aWYoMiZk''@;'; put 'put ''KXtjb25zdCBoPVF0KDIpO3V0KDEpLEppKCIgIixoLmNvbW1vblN0cmluZ3Mua2V5cy5zZWxlY3RBbGwsIiAiKX19ZnVuY3Rpb24gTGNlKGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2Iiw0KSgxLCJkaXYiLDUpKDIsImRpdiIsNiw3KSxZdCg0KSxvdCgpLHJuKDUsSWNlLDMsMSwibmctY29udGFp''@;'; put 'put ''bmVyIiw4KSxOaSg2KSxudCg3LCJidXR0b24iLDkpLENyKDgsImNkcy1pY29uIiwxMCksbnQoOSwic3BhbiIsMiksWXQoMTApLG90KCkoKSgpLG50KDExLCJ1bCIsMTEpLHJuKDEyLERjZSw1LDMsImxpIiwxMiksb3QoKSxudCgxMywiZGl2IiwxMyksTmkoMTQsMSkscm4oMTUsVCQsMiwxLCJj''@;'; put 'put ''bHItZGctY29sdW1uLXRvZ2dsZS1idXR0b24iLDE0KSxvdCgpKCkpLDImZCl7Y29uc3QgaD1RdCgpO1R0KCJpZCIsaC5wb3BvdmVySWQpLEdpKCJhcmlhLWxhYmVsIixoLmNvbW1vblN0cmluZ3Mua2V5cy5zaG93Q29sdW1uc01lbnVEZXNjcmlwdGlvbiksdXQoNCksamkoaC5jb21tb25TdHJp''@;'; put 'put ''bmdzLmtleXMuYWxsQ29sdW1uc1NlbGVjdGVkKSx1dCgxKSxUdCgibmdJZiIsIWguY3VzdG9tVG9nZ2xlVGl0bGUpLHV0KDIpLEdpKCJhcmlhLWxhYmVsIixoLmNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZSksdXQoMSksR2koInRpdGxlIixoLmNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZSksdXQo''@;'; put 'put ''MiksamkoaC5jb21tb25TdHJpbmdzLmtleXMuY2xvc2UpLHV0KDIpLFR0KCJuZ0Zvck9mIixoLmhpZGVhYmxlQ29sdW1uU3RhdGVzKSgibmdGb3JUcmFja0J5IixoLnRyYWNrQnlGbiksdXQoMyksVHQoIm5nSWYiLCFoLmN1c3RvbVRvZ2dsZUJ1dHRvbil9fWNvbnN0IG5TPVtbWyJjbHItZGct''@;'; put 'put ''Y29sdW1uLXRvZ2dsZS10aXRsZSJdXSxbWyJjbHItZGctY29sdW1uLXRvZ2dsZS1idXR0b24iXV1dLE9jZT1bImNsci1kZy1jb2x1bW4tdG9nZ2xlLXRpdGxlIiwiY2xyLWRnLWNvbHVtbi10b2dnbGUtYnV0dG9uIl07ZnVuY3Rpb24gQmNlKGQsZyl7aWYoMSZkJiYoQjAoMCksbnQoMSwiZGl2''@;'; put 'put ''IiwxKSgyLCJjbHItY2hlY2tib3gtd3JhcHBlciIsMiksQ3IoMywiaW5wdXQiLDMpLG50KDQsImxhYmVsIiksWXQoNSksb3QoKSxudCg2LCJzcGFuIiw0KSxZdCg3KSxvdCgpKCkoKSxQMCgpKSwyJmQpe2NvbnN0IGg9UXQoKTt1dCg1KSxqaShoLnNlbGVjdGlvbi5jdXJyZW50Lmxlbmd0aCks''@;'; put 'put ''dXQoMiksamkoaC5jb21tb25TdHJpbmdzLmtleXMuc2VsZWN0ZWRSb3dzKX19ZnVuY3Rpb24gUGNlKGQsZyl7MSZkJiZDcigwLCJjbHItZGctY29sdW1uLXRvZ2dsZSIpfWZ1bmN0aW9uIEZjZShkLGcpe2lmKDEmZCYmKEIwKDApLE5pKDEsMSkscm4oMixQY2UsMSwwLCJjbHItZGctY29sdW1u''@;'; put 'put ''LXRvZ2dsZSIsMCksbnQoMywiZGl2Iiw1KSxOaSg0LDIpLG90KCksUDAoKSksMiZkKXtjb25zdCBoPVF0KCk7dXQoMiksVHQoIm5nSWYiLGguaGFzSGlkZWFibGVDb2x1bW5zJiYhaC50b2dnbGUpfX1jb25zdCBJJD1bW1siY2xyLWRnLXBhZ2luYXRpb24iXV0sW1siY2xyLWRnLWNvbHVtbi10''@;'; put 'put ''b2dnbGUiXV0sIioiXSxIY2U9WyJjbHItZGctcGFnaW5hdGlvbiIsImNsci1kZy1jb2x1bW4tdG9nZ2xlIiwiKiJdO2Z1bmN0aW9uIEQkKGQsZyl7aWYoMSZkJiYobnQoMCwib3B0aW9uIiwzKSxZdCgxKSxvdCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7VHQoIm5nVmFsdWUiLGgpLHV0''@;'; put 'put ''KDEpLGppKGgpfX1jb25zdCBOY2U9WyJjdXJyZW50UGFnZUlucHV0Il07ZnVuY3Rpb24gVmNlKGQsZyl7MSZkJiYobnQoMCwiZGl2Iiw0KSxOaSgxLDEpLG90KCkpfWZ1bmN0aW9uIEwkKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiaW5wdXQiLDE3LDE4KSxHbigia2V5ZG93bi5l''@;'; put 'put ''bnRlciIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoMykudXBkYXRlQ3VycmVudFBhZ2UoeSkpfSkoImJsdXIiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KDMpLnVwZGF0ZUN1cnJlbnRQYWdlKHkpKX0pLG90KCl9aWYoMiZkKXtjb25zdCBoPVF0KDMpO1R0KCJzaXplIixo''@;'; put 'put ''LnBhZ2UubGFzdC50b1N0cmluZygpLmxlbmd0aCkoInZhbHVlIixoLnBhZ2UuY3VycmVudCksR2koImFyaWEtbGFiZWwiLGguY29tbW9uU3RyaW5ncy5rZXlzLmN1cnJlbnRQYWdlKX19ZnVuY3Rpb24gamNlKGQsZyl7aWYoMSZkJiYobnQoMCwic3BhbiIpLFl0KDEpLG90KCkpLDImZCl7Y29u''@;'; put 'put ''c3QgaD1RdCgzKTt1dCgxKSxqaShoLnBhZ2UuY3VycmVudCl9fWZ1bmN0aW9uIG4zKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiZGl2Iiw1KSgxLCJidXR0b24iLDYpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgyKS5wYWdlLmN1cnJlbnQ9MSl9KSxu''@;'; put 'put ''dCgyLCJzcGFuIiw3KSxZdCgzKSxvdCgpLENyKDQsImNkcy1pY29uIiw4KSxvdCgpLG50KDUsImJ1dHRvbiIsOSksR24oImNsaWNrIixmdW5jdGlvbigpe2l0KGgpO2NvbnN0IHk9UXQoMik7cmV0dXJuIGEoeS5wYWdlLmN1cnJlbnQ9eS5wYWdlLmN1cnJlbnQtMSl9KSxudCg2LCJzcGFuIiw3''@;'; put 'put ''KSxZdCg3KSxvdCgpLENyKDgsImNkcy1pY29uIiwxMCksb3QoKSxybig5LEwkLDIsMywiaW5wdXQiLDExKSxybigxMCxqY2UsMiwxLCJuZy10ZW1wbGF0ZSIsbnVsbCwxMixaciksWXQoMTIsIiBceGEwL1x4YTAiKSxudCgxMywic3BhbiIpLFl0KDE0KSxvdCgpLG50KDE1LCJidXR0b24iLDEz''@;'; put 'put ''KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3QgeT1RdCgyKTtyZXR1cm4gYSh5LnBhZ2UuY3VycmVudD15LnBhZ2UuY3VycmVudCsxKX0pLG50KDE2LCJzcGFuIiw3KSxZdCgxNyksb3QoKSxDcigxOCwiY2RzLWljb24iLDE0KSxvdCgpLG50KDE5LCJidXR0b24iLDE1KSxHbigi''@;'; put 'put ''Y2xpY2siLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3QgeT1RdCgyKTtyZXR1cm4gYSh5LnBhZ2UuY3VycmVudD15LnBhZ2UubGFzdCl9KSxudCgyMCwic3BhbiIsNyksWXQoMjEpLG90KCksQ3IoMjIsImNkcy1pY29uIiwxNiksb3QoKSgpfWlmKDImZCl7Y29uc3QgaD12YSgxMSksdj1RdCgyKTt1''@;'; put 'put ''dCgxKSxUdCgiZGlzYWJsZWQiLHYucGFnZS5jdXJyZW50PD0xKSxHaSgiYXJpYS1sYWJlbCIsdi5jb21tb25TdHJpbmdzLmtleXMuZmlyc3RQYWdlKSx1dCgyKSxqaSh2LmNvbW1vblN0cmluZ3Mua2V5cy5maXJzdFBhZ2UpLHV0KDIpLFR0KCJkaXNhYmxlZCIsdi5wYWdlLmN1cnJlbnQ8PTEp''@;'; put 'put ''LEdpKCJhcmlhLWxhYmVsIix2LmNvbW1vblN0cmluZ3Mua2V5cy5wcmV2aW91c1BhZ2UpLHV0KDIpLGppKHYuY29tbW9uU3RyaW5ncy5rZXlzLnByZXZpb3VzUGFnZSksdXQoMiksVHQoIm5nSWYiLCF2LmRpc2FibGVDdXJyZW50UGFnZUlucHV0KSgibmdJZkVsc2UiLGgpLHV0KDQpLEdpKCJh''@;'; put 'put ''cmlhLWxhYmVsIix2LmNvbW1vblN0cmluZ3Mua2V5cy50b3RhbFBhZ2VzKSx1dCgxKSxqaSh2LnBhZ2UubGFzdCksdXQoMSksVHQoImRpc2FibGVkIix2LnBhZ2UuY3VycmVudD49di5wYWdlLmxhc3QpLEdpKCJhcmlhLWxhYmVsIix2LmNvbW1vblN0cmluZ3Mua2V5cy5uZXh0UGFnZSksdXQo''@;'; put 'put ''Miksamkodi5jb21tb25TdHJpbmdzLmtleXMubmV4dFBhZ2UpLHV0KDIpLFR0KCJkaXNhYmxlZCIsdi5wYWdlLmN1cnJlbnQ+PXYucGFnZS5sYXN0KSxHaSgiYXJpYS1sYWJlbCIsdi5jb21tb25TdHJpbmdzLmtleXMubGFzdFBhZ2UpLHV0KDIpLGppKHYuY29tbW9uU3RyaW5ncy5rZXlzLmxh''@;'; put 'put ''c3RQYWdlKX19ZnVuY3Rpb24gWmNlKGQsZyl7aWYoMSZkJiYoQjAoMCkscm4oMSxWY2UsMiwwLCJkaXYiLDEpLG50KDIsImRpdiIsMiksTmkoMyksb3QoKSxybig0LG4zLDIzLDE2LCJkaXYiLDMpLFAwKCkpLDImZCl7Y29uc3QgaD1RdCgpO3V0KDEpLFR0KCJuZ0lmIixoLl9wYWdlU2l6ZUNv''@;'; put 'put ''bXBvbmVudCksdXQoMyksVHQoIm5nSWYiLGgucGFnZS5sYXN0PjEpfX1mdW5jdGlvbiBPJChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO0IwKDApLG50KDEsImRpdiIsMTkpLFl0KDIpLG90KCksbnQoMywiZGl2Iiw1KSg0LCJidXR0b24iLDkpLEduKCJjbGljayIsZnVuY3Rpb24oKXtpdCho''@;'; put 'put ''KTtjb25zdCB5PVF0KCk7cmV0dXJuIGEoeS5wYWdlLmN1cnJlbnQ9eS5wYWdlLmN1cnJlbnQtMSl9KSxudCg1LCJzcGFuIiw3KSxZdCg2KSxvdCgpLENyKDcsImNkcy1pY29uIiwxMCksb3QoKSxudCg4LCJzcGFuIiksWXQoOSksb3QoKSxudCgxMCwiYnV0dG9uIiwxMyksR24oImNsaWNrIixm''@;'; put 'put ''dW5jdGlvbigpe2l0KGgpO2NvbnN0IHk9UXQoKTtyZXR1cm4gYSh5LnBhZ2UuY3VycmVudD15LnBhZ2UuY3VycmVudCsxKX0pLG50KDExLCJzcGFuIiw3KSxZdCgxMiksb3QoKSxDcigxMywiY2RzLWljb24iLDE0KSxvdCgpKCksUDAoKX1pZigyJmQpe2NvbnN0IGg9UXQoKTt1dCgyKSxrZigi''@;'; put 'put ''ICIsaC5wYWdlLmZpcnN0SXRlbSsxLCItIixoLnBhZ2UubGFzdEl0ZW0rMSwiIC8gIixoLnBhZ2UudG90YWxJdGVtcywiICIpLHV0KDIpLFR0KCJkaXNhYmxlZCIsaC5wYWdlLmN1cnJlbnQ8PTEpLEdpKCJhcmlhLWxhYmVsIixoLmNvbW1vblN0cmluZ3Mua2V5cy5wcmV2aW91c1BhZ2UpLHV0''@;'; put 'put ''KDIpLGppKGguY29tbW9uU3RyaW5ncy5rZXlzLnByZXZpb3VzUGFnZSksdXQoMyksamkoaC5wYWdlLmN1cnJlbnQpLHV0KDEpLFR0KCJkaXNhYmxlZCIsaC5wYWdlLmN1cnJlbnQ+PWgucGFnZS5sYXN0KSxHaSgiYXJpYS1sYWJlbCIsaC5jb21tb25TdHJpbmdzLmtleXMubmV4dFBhZ2UpLHV0''@;'; put 'put ''KDIpLGppKGguY29tbW9uU3RyaW5ncy5rZXlzLm5leHRQYWdlKX19Y29uc3QgcjM9WyIqIixbWyJjbHItZGctcGFnZS1zaXplIl1dXSxrcD1bIioiLCJjbHItZGctcGFnZS1zaXplIl07ZnVuY3Rpb24gaTMoZCxnKXsxJmQmJkNyKDAsImNkcy1pY29uIiw3KSwyJmQmJkdpKCJkaXJlY3Rpb24i''@;'; put 'put ''LFF0KCkuY2FyZXREaXJlY3Rpb24pfWZ1bmN0aW9uIHpjZShkLGcpe2lmKDEmZCYmKG50KDAsInNwYW4iLDgpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgpO3V0KDEpLGppKGguY29tbW9uU3RyaW5ncy5rZXlzLnN0YWNrVmlld0NoYW5nZWQpfX1mdW5jdGlvbiBudyhkLGcpe2lmKDEm''@;'; put 'put ''ZCYmKG50KDAsImRpdiIsOSksTmkoMSwyKSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoKTtOZCgiaGVpZ2h0IixoLmV4cGFuZGVkPyJhdXRvIjowKSxHaSgiaWQiLGguZ2V0U3RhY2tDaGlsZHJlbklkKCkpKCJhcmlhLWxhYmVsbGVkYnkiLGgubGFiZWxsZWRCeUlkKX19Y29uc3QgR2NlPVtbWyJj''@;'; put 'put ''bHItc3RhY2stbGFiZWwiXV0sIioiLFtbImNsci1zdGFjay1ibG9jayJdXV0scnc9WyJjbHItc3RhY2stbGFiZWwiLCIqIiwiY2xyLXN0YWNrLWJsb2NrIl0sVDE9W1tbImNsci1zdGFjay1oZWFkZXIiXV0sIioiXSxXY2U9WyJjbHItc3RhY2staGVhZGVyIiwiKiJdO2Z1bmN0aW9uIFFjZShk''@;'; put 'put ''LGcpezEmZCYmZjEoMCl9ZnVuY3Rpb24gVmooZCxnKXtpZigxJmQmJihCMCgwKSxybigxLFFjZSwxLDAsIm5nLWNvbnRhaW5lciIsMiksUDAoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0LHY9UXQoMik7dXQoMSksVHQoIm5nVGVtcGxhdGVPdXRsZXQiLHYuZmVhdHVyZXNTZXJ2aWNlLnJl''@;'; put 'put ''Y3Vyc2lvbi50ZW1wbGF0ZSkoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Iix2LmdldENvbnRleHQoaCkpfX1mdW5jdGlvbiBKY2UoZCxnKXtpZigxJmQmJihCMCgwKSxybigxLFZqLDIsMiwibmctY29udGFpbmVyIiwxKSxQMCgpKSwyJmQpe2NvbnN0IGg9UXQoKTt1dCgxKSxUdCgibmdGb3JP''@;'; put 'put ''ZiIsKG51bGw9PWgucGFyZW50P251bGw6aC5wYXJlbnQuY2hpbGRyZW4pfHxoLmNoaWxkcmVuKX19Y29uc3QgQiQ9WyJjb250ZW50Q29udGFpbmVyIl07ZnVuY3Rpb24gWGNlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiYnV0dG9uIiw5KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIGl0KGgpLGEoUXQoKS5leHBhbmRTZXJ2aWNlLnRvZ2dsZSgpKX0pKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgpLmZvY3VzVHJlZU5vZGUoKSl9KSxDcigxLCJjZHMtaWNvbiIsMTApLG90KCl9aWYoMiZkKXtjb25zdCBoPVF0KCk7dXQoMSksR2koImRpcmVj''@;'; put 'put ''dGlvbiIsaC5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkPyJkb3duIjoicmlnaHQiKX19ZnVuY3Rpb24gbjEoZCxnKXsxJmQmJihudCgwLCJkaXYiLDExKSxDcigxLCJzcGFuIiwxMiksb3QoKSl9ZnVuY3Rpb24gdXYoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJkaXYiLDEzKSgxLCJp''@;'; put 'put ''bnB1dCIsMTQpLEduKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3QgeT1RdCgpO3JldHVybiBhKHkuX21vZGVsLnRvZ2dsZVNlbGVjdGlvbih5LmZlYXR1cmVzU2VydmljZS5lYWdlcikpfSkoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkuZm9jdXNUcmVlTm9k''@;'; put 'put ''ZSgpKX0pLG90KCksQ3IoMiwibGFiZWwiLDE1KSxvdCgpfWlmKDImZCl7Y29uc3QgaD1RdCgpO3V0KDEpLFptKCJpZCIsIiIsaC5ub2RlSWQsIi1jaGVjayIpLFR0KCJjaGVja2VkIixoLl9tb2RlbC5zZWxlY3RlZC52YWx1ZT09PWguU1RBVEVTLlNFTEVDVEVEKSgiaW5kZXRlcm1pbmF0ZSIs''@;'; put 'put ''aC5fbW9kZWwuc2VsZWN0ZWQudmFsdWU9PT1oLlNUQVRFUy5JTkRFVEVSTUlOQVRFKSx1dCgxKSxabSgiZm9yIiwiIixoLm5vZGVJZCwiLWNoZWNrIil9fWZ1bmN0aW9uIEtjZShkLGcpezEmZCYmKG50KDAsInNwYW4iKSxZdCgxLCJzZWxlY3RlZCIpLG90KCkpfWZ1bmN0aW9uIE1MKGQsZyl7''@;'; put 'put ''MSZkJiYobnQoMCwic3BhbiIpLFl0KDEsInVuc2VsZWN0ZWQiKSxvdCgpKX1mdW5jdGlvbiAkY2UoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDE2KSxybigxLEtjZSwyLDAsInNwYW4iLDE3KSxybigyLE1MLDIsMCwic3BhbiIsMTcpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgpO3V0KDEpLFR0''@;'; put 'put ''KCJuZ0lmIixoLmFyaWFTZWxlY3RlZCksdXQoMSksVHQoIm5nSWYiLCFoLmFyaWFTZWxlY3RlZCl9fWNvbnN0IFAkPVsiKiIsW1siY2xyLXRyZWUtbm9kZSJdXSxbWyIiLCJjbHJJZkV4cGFuZGVkIiwiIl1dXSxlZj1bIioiLCJjbHItdHJlZS1ub2RlIiwiW2NscklmRXhwYW5kZWRdIl07ZnVu''@;'; put 'put ''Y3Rpb24gRWwoZCxnKXsxJmQmJkNyKDAsImNsci1yZWN1cnNpdmUtY2hpbGRyZW4iLDEpLDImZCYmVHQoImNoaWxkcmVuIixRdCgpLmZlYXR1cmVzU2VydmljZS5yZWN1cnNpb24ucm9vdCl9ZnVuY3Rpb24gUWEoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJidXR0b24iLDQpLEdu''@;'; put 'put ''KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgyKS5jbG9zZSgpKX0pLENyKDEsImNkcy1pY29uIiw1KSxvdCgpfTImZCYmR2koImFyaWEtbGFiZWwiLFF0KDIpLmNsckNsb3NlQnV0dG9uQXJpYUxhYmVsKX1mdW5jdGlvbiBCZihkLGcpe2lmKDEmZCYmKG50KDAsImRpdiIs''@;'; put 'put ''MSkoMSwiZGl2IiwyKSxOaSgyKSxvdCgpLHJuKDMsUWEsMiwxLCJidXR0b24iLDMpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgpO0ZpKCJhbGVydC1oaWRkZW4iLGguaGlkZGVuKSgiYWxlcnQtc20iLGguaXNTbWFsbCkoImFsZXJ0LWFwcC1sZXZlbCIsaC5pc0FwcExldmVsKSxUdCgibmdDbGFz''@;'; put 'put ''cyIsaC5hbGVydENsYXNzKSx1dCgzKSxUdCgibmdJZiIsaC5jbG9zYWJsZSl9fWZ1bmN0aW9uIGZoKGQsZyl7MSZkJiZDcigwLCJjbHItYWxlcnRzLXBhZ2VyIiwxKSwyJmQmJlR0KCJjbHJDdXJyZW50QWxlcnRJbmRleCIsUXQoKS5jdXJyZW50QWxlcnRJbmRleCl9Y29uc3QgRUw9W1tbImNs''@;'; put 'put ''ci1hbGVydCJdXV0sRiQ9WyJjbHItYWxlcnQiXTtmdW5jdGlvbiBqaihkLGcpezEmZCYmTmkoMCl9Y29uc3QgclM9WyJ0YWJDb250ZW50UHJvamVjdGVkUmVmIl07ZnVuY3Rpb24gSUwoZCxnKXtpZigxJmQmJihudCgwLCJzZWN0aW9uIiwxKSxOaSgxKSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQo''@;'; put 'put ''KTtGaSgiYWN0aXZlIixoLmFjdGl2ZSksVHQoImlkIixoLnRhYkNvbnRlbnRJZCkoImhpZGRlbiIsIWguYWN0aXZlKSxHaSgiYXJpYS1sYWJlbGxlZGJ5IixoLmFyaWFMYWJlbGxlZEJ5KSgiYXJpYS1oaWRkZW4iLCFoLmFjdGl2ZSl9fWNvbnN0IFpqPVsidGFiQ29udGVudFZpZXdDb250YWlu''@;'; put 'put ''ZXIiXTtmdW5jdGlvbiBiZyhkLGcpe2lmKDEmZCYmKEIwKDApLG50KDEsImxpIiw0KSxmMSgyLDUpLG90KCksUDAoKSksMiZkKXtjb25zdCBoPVF0KCkuJGltcGxpY2l0O3V0KDIpLFR0KCJuZ1RlbXBsYXRlT3V0bGV0IixoLnRlbXBsYXRlUmVmQ29udGFpbmVyLnRlbXBsYXRlKX19ZnVuY3Rp''@;'; put 'put ''b24gemooZCxnKXtpZigxJmQmJihCMCgwKSxybigxLGJnLDMsMSwibmctY29udGFpbmVyIiwyKSxQMCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1RdCgpO3V0KDEpLFR0KCJuZ0lmIixoLnRhYnNJZD09PXYudGFic0lkJiYhaC5pbk92ZXJmbG93KX19ZnVuY3Rpb24gREwoZCxnKXsx''@;'; put 'put ''JmQmJmYxKDAsNSksMiZkJiZUdCgibmdUZW1wbGF0ZU91dGxldCIsUXQoKS4kaW1wbGljaXQudGVtcGxhdGVSZWZDb250YWluZXIudGVtcGxhdGUpfWZ1bmN0aW9uIEgkKGQsZyl7aWYoMSZkJiYoQjAoMCkscm4oMSxETCwxLDEsIm5nLWNvbnRhaW5lciIsMTMpLFAwKCkpLDImZCl7Y29uc3Qg''@;'; put 'put ''aD1nLiRpbXBsaWNpdCx2PVF0KDMpO3V0KDEpLFR0KCJuZ0lmIixoLnRhYnNJZD09PXYudGFic0lkJiZoLmluT3ZlcmZsb3cpfX1mdW5jdGlvbiBOJChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci10YWItb3ZlcmZsb3ctY29udGVudCIsMTIpLEduKCJrZXlkb3duLmVzYyIs''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgyKS5jbG9zZU9uRXNjYXBlS2V5KCkpfSwwLEhsKSgiY2xpY2siLGZ1bmN0aW9uKHkpe2l0KGgpLFF0KCk7Y29uc3QgQz12YSg0KTtyZXR1cm4gYShRdCgpLmNsb3NlT25PdXRzaWRlQ2xpY2soeSxDKSl9LCExLEhsKSgiZm9jdXNvdXQiLGZ1''@;'; put 'put ''bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KDIpLmNsb3NlT25Gb2N1c091dCh5KSl9KSxybigxLEgkLDIsMSwibmctY29udGFpbmVyIiwxKSxvdCgpfWlmKDImZCl7Y29uc3QgaD1RdCgyKTt1dCgxKSxUdCgibmdGb3JPZiIsaC50YWJMaW5rRGlyZWN0aXZlcyl9fWZ1bmN0aW9uIHFjZShk''@;'; put 'put ''LGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO0IwKDApLG50KDEsImRpdiIsNikoMiwibGkiLDcpKDMsImJ1dHRvbiIsOCw5KSxHbigibW91c2Vkb3duIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkuX21vdXNlZG93bj0hMCl9KSgiZm9jdXMiLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgp''@;'; put 'put ''LGEoUXQoKS5vcGVuT3ZlcmZsb3dPbkZvY3VzKCkpfSkoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkudG9nZ2xlT3ZlcmZsb3dPbkNsaWNrKCkpfSksQ3IoNSwiY2RzLWljb24iLDEwKSxvdCgpKCkscm4oNixOJCwyLDEsImNsci10YWItb3ZlcmZsb3ctY29udGVudCIs''@;'; put 'put ''MTEpLG90KCksUDAoKX1pZigyJmQpe2NvbnN0IGg9UXQoKTt1dCgxKSxGaSgib3BlbiIsaC50b2dnbGVTZXJ2aWNlLm9wZW4pLHV0KDIpLEZpKCJhY3RpdmUiLGguYWN0aXZlVGFiSW5PdmVyZmxvdykoIm9wZW4iLGgudG9nZ2xlU2VydmljZS5vcGVuKSxHaSgidGFiaW5kZXgiLGguYWN0aXZl''@;'; put 'put ''VGFiSW5PdmVyZmxvdyYmIWgudG9nZ2xlU2VydmljZS5vcGVuPzA6LTEpKCJ0aXRsZSIsaC5jb21tb25TdHJpbmdzLmtleXMubW9yZSksdXQoMiksR2koInRpdGxlIixoLmNvbW1vblN0cmluZ3Mua2V5cy5tb3JlKSx1dCgxKSxUdCgibmdJZiIsaC50b2dnbGVTZXJ2aWNlLm9wZW4pfX1mdW5j''@;'; put 'put ''dGlvbiBlZmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJidXR0b24iLDMpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgpLnRvZ2dsZUJ5QnV0dG9uKCkpfSksQ3IoMSwiY2RzLWljb24iLDQpLG90KCl9aWYoMiZkKXtjb25zdCBoPVF0KCk7RmkoIm9u''@;'; put 'put ''LWNvbGxhcHNlIixoLmNvbGxhcHNlZCksR2koImFyaWEtZXhwYW5kZWQiLGguYXJpYUV4cGFuZGVkKSgiYXJpYS1sYWJlbCIsaC5jb21tb25TdHJpbmdzLmtleXMudmVydGljYWxOYXZUb2dnbGUpLHV0KDEpLEdpKCJkaXJlY3Rpb24iLGguY29sbGFwc2VkPyJyaWdodCI6ImxlZnQiKSgidGl0''@;'; put 'put ''bGUiLGguY29sbGFwc2VkP2guY29tbW9uU3RyaW5ncy5rZXlzLmV4cGFuZDpoLmNvbW1vblN0cmluZ3Mua2V5cy5jb2xsYXBzZSl9fWZ1bmN0aW9uIFYkKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiYnV0dG9uIiw1KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgp''@;'; put 'put ''LGEoUXQoKS5jb2xsYXBzZWQ9ITEpfSksb3QoKX0yJmQmJkdpKCJhcmlhLWxhYmVsIixRdCgpLmNvbW1vblN0cmluZ3Mua2V5cy52ZXJ0aWNhbE5hdlRvZ2dsZSl9Y29uc3QgcmZlPVsiY2xyVmVydGljYWxOYXZMaW5rIiwiIl0saWZlPVtbWyIiLCJjbHJWZXJ0aWNhbE5hdkljb24iLCIiXV0s''@;'; put 'put ''IioiXSxvZmU9WyJbY2xyVmVydGljYWxOYXZJY29uXSIsIioiXTtmdW5jdGlvbiBHaihkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImJ1dHRvbiIsMTEpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgyKS5jbG9zZSgpKX0pLENyKDEsImNkcy1pY29uIiwx''@;'; put 'put ''Miksb3QoKX0yJmQmJkdpKCJhcmlhLWxhYmVsIixRdCgyKS5jb21tb25TdHJpbmdzLmtleXMuY2xvc2UpfWZ1bmN0aW9uIGFmZShkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImRpdiIsMSkoMSwiZGl2IiwyKSxHbigiQGZhZGVEb3duLmRvbmUiLGZ1bmN0aW9uKHkpe3JldHVybiBp''@;'; put 'put ''dChoKSxhKFF0KCkuZmFkZURvbmUoeSkpfSksbnQoMiwiZGl2IiwzKSxZdCgzKSxvdCgpLG50KDQsImRpdiIsNCksTmkoNSksbnQoNiwiZGl2Iiw1KSg3LCJkaXYiLDYpKDgsImRpdiIsNyksTmkoOSwxKSxvdCgpLHJuKDEwLEdqLDIsMSwiYnV0dG9uIiw4KSxvdCgpLG50KDExLCJkaXYiLDkp''@;'; put 'put ''LE5pKDEyLDIpLG90KCksTmkoMTMsMyksb3QoKSgpLG50KDE0LCJkaXYiLDMpLFl0KDE1KSxvdCgpKCksbnQoMTYsImRpdiIsMTApLEduKCJjbGljayIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KCk7cmV0dXJuIGEoeS5zdGF0aWNCYWNrZHJvcHx8eS5jbG9zZSgpKX0pLG90KCkoKX1p''@;'; put 'put ''ZigyJmQpe2NvbnN0IGg9UXQoKTt1dCgxKSxGaSgibW9kYWwtc20iLCJzbSI9PWguc2l6ZSkoIm1vZGFsLWxnIiwibGciPT1oLnNpemUpKCJtb2RhbC14bCIsInhsIj09aC5zaXplKSxUdCgiQGZhZGVEb3duIixoLnNraXBBbmltYXRpb24pLEdpKCJhcmlhLWhpZGRlbiIsIWguX29wZW4pKCJh''@;'; put 'put ''cmlhLWxhYmVsbGVkYnkiLGgubGFiZWxsZWRCeSksdXQoMiksamkoaC5jb21tb25TdHJpbmdzLmtleXMubW9kYWxDb250ZW50U3RhcnQpLHV0KDUpLEk2KCJpZCIsaC5tb2RhbElkKSx1dCgyKSxUdCgibmdJZiIsaC5jbG9zYWJsZSksdXQoNSksamkoaC5jb21tb25TdHJpbmdzLmtleXMubW9k''@;'; put 'put ''YWxDb250ZW50RW5kKSx1dCgxKSxUdCgiQGZhZGUiLHZvaWQgMCl9fWNvbnN0IGxmZT1bW1siIiw4LCJtb2RhbC1uYXYiXV0sW1siIiw4LCJtb2RhbC10aXRsZSJdXSxbWyIiLDgsIm1vZGFsLWJvZHkiXV0sW1siIiw4LCJtb2RhbC1mb290ZXIiXV1dLHNmZT1bIi5tb2RhbC1uYXYiLCIubW9k''@;'; put 'put ''YWwtdGl0bGUiLCIubW9kYWwtYm9keSIsIi5tb2RhbC1mb290ZXIiXTtsZXQgd2w9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1pY29uIl1dfSksZH0p''@;'; put 'put ''KCksWm89KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNkcy1pY29uIl1dfSksZH0pKCksRHM9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1''@;'; put 'put ''bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbW2JhXV19KSxkfSkoKTtjbGFzcyBQZnt9dmFyIGdpPSgoKT0+KGZ1bmN0aW9uKGQpe2RbZC5ERUZBVUxUPTBdPSJERUZBVUxUIixkW2QuTE9BRElORz0x''@;'; put 'put ''XT0iTE9BRElORyIsZFtkLlNVQ0NFU1M9Ml09IlNVQ0NFU1MiLGRbZC5FUlJPUj0zXT0iRVJST1IifShnaXx8KGdpPXt9KSksZ2kpKSgpO2xldCBnbz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMubGlzdGVuZXI9aCx0aGlzLl9sb2FkaW5nU3RhdGU9Z2kuREVGQVVMVH1nZXQg''@;'; put 'put ''bG9hZGluZ1N0YXRlKCl7cmV0dXJuIHRoaXMuX2xvYWRpbmdTdGF0ZX1zZXQgbG9hZGluZ1N0YXRlKGgpeyEwPT09aD9oPWdpLkxPQURJTkc6aHx8KGg9Z2kuREVGQVVMVCksaCE9PXRoaXMuX2xvYWRpbmdTdGF0ZSYmKHRoaXMuX2xvYWRpbmdTdGF0ZT1oLHRoaXMubGlzdGVuZXImJnRoaXMu''@;'; put 'put ''bGlzdGVuZXIubG9hZGluZ1N0YXRlQ2hhbmdlKGgpKX1uZ09uRGVzdHJveSgpe3RoaXMubG9hZGluZ1N0YXRlPWdpLkRFRkFVTFR9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KFBmLDgpKX0sZC5cdTAyNzVkaXI9V2koe3R5cGU6ZCxzZWxlY3Rv''@;'; put 'put ''cnM6W1siIiwiY2xyTG9hZGluZyIsIiJdXSxpbnB1dHM6e2xvYWRpbmdTdGF0ZTpbImNsckxvYWRpbmciLCJsb2FkaW5nU3RhdGUiXX19KSxkfSkoKSxyMT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5leHBhbmRhYmxlPTAsdGhpcy5fbG9hZGluZz0hMSx0aGlzLl9leHBhbmRl''@;'; put 'put ''ZD0hMSx0aGlzLl9leHBhbmRDaGFuZ2U9bmV3ICRlfWdldCBsb2FkaW5nKCl7cmV0dXJuIHRoaXMuX2xvYWRpbmd9c2V0IGxvYWRpbmcoaCl7KGg9ISFoKSE9PXRoaXMuX2xvYWRpbmcmJih0aGlzLl9sb2FkaW5nPWgpfWdldCBleHBhbmRlZCgpe3JldHVybiB0aGlzLl9leHBhbmRlZH1zZXQg''@;'; put 'put ''ZXhwYW5kZWQoaCl7KGg9ISFoKSE9PXRoaXMuX2V4cGFuZGVkJiYodGhpcy5fZXhwYW5kZWQ9aCx0aGlzLl9leHBhbmRDaGFuZ2UubmV4dChoKSl9dG9nZ2xlKCl7dGhpcy5leHBhbmRlZD0hdGhpcy5fZXhwYW5kZWR9Z2V0IGV4cGFuZENoYW5nZSgpe3JldHVybiB0aGlzLl9leHBhbmRDaGFu''@;'; put 'put ''Z2UuYXNPYnNlcnZhYmxlKCl9bG9hZGluZ1N0YXRlQ2hhbmdlKGgpe3RoaXMubG9hZGluZz1oPT09Z2kuTE9BRElOR319cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSks''@;'; put 'put ''ZH0pKCksdTI9MDtjb25zdCB5Mj1uZXcgemUoIlVOSVFVRV9JRCIpLE9jPXtwcm92aWRlOnkyLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gdmZlKCl7cmV0dXJuImNsci1pZC0iK3UyKyt9fTtsZXQgSiQ9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBu''@;'; put 'put ''ZXcoaHx8ZCl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1hY2NvcmRpb24tZGVzY3JpcHRpb24iXSxbImNsci1zdGVwLWRlc2NyaXB0aW9uIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZGaSgiY2xyLWFjY29yZGlvbi1kZXNj''@;'; put 'put ''cmlwdGlvbiIsITApfSxuZ0NvbnRlbnRTZWxlY3RvcnM6bmEsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihLMCgpLE5pKDApKX0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksZH0pKCk7dmFyIHM0PSgoKT0+KGZ1bmN0aW9uKGQpe2QuSW5h''@;'; put 'put ''Y3RpdmU9ImluYWN0aXZlIixkLkVycm9yPSJlcnJvciIsZC5Db21wbGV0ZT0iY29tcGxldGUifShzNHx8KHM0PXt9KSksczQpKSgpO2NvbnN0IHU0PSIwLjJzIGVhc2UtaW4tb3V0IixBZmU9WyRoKCJza2lwSW5pdGlhbFJlbmRlciIsW2J1KCI6ZW50ZXIiLFtdKV0pLCRoKCJ0b2dnbGUiLFti''@;'; put 'put ''dSgidm9pZCA9PiAqIixbeWwoe2Rpc3BsYXk6ImJsb2NrIixoZWlnaHQ6MH0pLERjKHU0LHlsKHtoZWlnaHQ6IioifSkpXSldKV0sVWo9KCRoKCJza2lwSW5pdGlhbFJlbmRlciIsW2J1KCI6ZW50ZXIiLFtdKV0pLCRoKCJ0b2dnbGUiLFtidSgidm9pZCA9PiAqIixbeWwoe2Rpc3BsYXk6ImJs''@;'; put 'put ''b2NrIixoZWlnaHQ6MH0pLERjKHU0LHlsKHtoZWlnaHQ6IioifSkpXSksYnUoIiogPT4gdm9pZCIsW3lsKHtkaXNwbGF5OiJibG9jayJ9KSxEYyh1NCx5bCh7aGVpZ2h0OjAsZGlzcGxheToibm9uZSJ9KSldKV0pLHtvcGVuOiJPcGVuIixjbG9zZToiQ2xvc2UiLHNob3c6IlNob3ciLGhpZGU6''@;'; put 'put ''IkhpZGUiLGV4cGFuZDoiRXhwYW5kIixjb2xsYXBzZToiQ29sbGFwc2UiLG1vcmU6Ik1vcmUiLHNlbGVjdDoiU2VsZWN0IixzZWxlY3RBbGw6IlNlbGVjdCBBbGwiLHByZXZpb3VzOiJQcmV2aW91cyIsbmV4dDoiTmV4dCIsY3VycmVudDoiSnVtcCB0byBjdXJyZW50IixpbmZvOiJJbmZvIixz''@;'; put 'put ''dWNjZXNzOiJTdWNjZXNzIix3YXJuaW5nOiJXYXJuaW5nIixkYW5nZXI6IkVycm9yIixyb3dBY3Rpb25zOiJBdmFpbGFibGUgYWN0aW9ucyIscGlja0NvbHVtbnM6IlNob3cgb3IgaGlkZSBjb2x1bW5zIixzaG93Q29sdW1uczoiU2hvdyBDb2x1bW5zIixzb3J0Q29sdW1uOiJTb3J0IENvbHVt''@;'; put 'put ''biIsZmlyc3RQYWdlOiJGaXJzdCBQYWdlIixsYXN0UGFnZToiTGFzdCBQYWdlIixuZXh0UGFnZToiTmV4dCBQYWdlIixwcmV2aW91c1BhZ2U6IlByZXZpb3VzIFBhZ2UiLGN1cnJlbnRQYWdlOiJDdXJyZW50IFBhZ2UiLHRvdGFsUGFnZXM6IlRvdGFsIFBhZ2VzIixmaWx0ZXJJdGVtczoiRmls''@;'; put 'put ''dGVyIGl0ZW1zIixtaW5WYWx1ZToiTWluIHZhbHVlIixtYXhWYWx1ZToiTWF4IHZhbHVlIixtb2RhbENvbnRlbnRTdGFydDoiQmVnaW5uaW5nIG9mIE1vZGFsIENvbnRlbnQiLG1vZGFsQ29udGVudEVuZDoiRW5kIG9mIE1vZGFsIENvbnRlbnQiLHNob3dDb2x1bW5zTWVudURlc2NyaXB0aW9u''@;'; put 'put ''OiJTaG93IG9yIGhpZGUgY29sdW1ucyBtZW51IixhbGxDb2x1bW5zU2VsZWN0ZWQ6IkFsbCBjb2x1bW5zIHNlbGVjdGVkIixzaWducG9zdFRvZ2dsZToiU2lnbnBvc3QgVG9nZ2xlIixzaWducG9zdENsb3NlOiJTaWducG9zdCBDbG9zZSIsbG9hZGluZzoiTG9hZGluZyIsZGV0YWlsUGFuZVN0''@;'; put 'put ''YXJ0OiJTdGFydCBvZiByb3cgZGV0YWlscyIsZGV0YWlsUGFuZUVuZDoiRW5kIG9mIHJvdyBkZXRhaWxzIixzaW5nbGVTZWxlY3Rpb25BcmlhTGFiZWw6IlNpbmdsZSBzZWxlY3Rpb24gaGVhZGVyIixzaW5nbGVBY3Rpb25hYmxlQXJpYUxhYmVsOiJTaW5nbGUgYWN0aW9uYWJsZSBoZWFkZXIi''@;'; put 'put ''LGRldGFpbEV4cGFuZGFibGVBcmlhTGFiZWw6IlRvZ2dsZSBtb3JlIHJvdyBjb250ZW50IixkYXRhZ3JpZEZpbHRlckFyaWFMYWJlbDoiRmlsdGVyIGRpYWxvZyIsZGF0YWdyaWRGaWx0ZXJEaWFsb2dBcmlhTGFiZWw6IlRvZ2dsZSBjb2x1bW4gZmlsdGVyIixjb2x1bW5TZXBhcmF0b3JBcmlh''@;'; put 'put ''TGFiZWw6IkNvbHVtbiByZXNpemUgaGFuZGxlIixjb2x1bW5TZXBhcmF0b3JEZXNjcmlwdGlvbjoiVXNlIGxlZnQgb3IgcmlnaHQga2V5IHRvIHJlc2l6ZSB0aGUgY29sdW1uIixhbGVydENsb3NlQnV0dG9uQXJpYUxhYmVsOiJDbG9zZSBhbGVydCIsZGF0ZXBpY2tlckRpYWxvZ0xhYmVsOiJD''@;'; put 'put ''aG9vc2UgZGF0ZSIsZGF0ZXBpY2tlclRvZ2dsZToiVG9nZ2xlIGRhdGVwaWNrZXIiLGRhdGVwaWNrZXJUb2dnbGVDaG9vc2VEYXRlTGFiZWw6IkNob29zZSBkYXRlIixkYXRlcGlja2VyVG9nZ2xlQ2hhbmdlRGF0ZUxhYmVsOiJDaGFuZ2UgZGF0ZSwge1NFTEVDVEVEX0RBVEV9IixkYXRlcGlj''@;'; put 'put ''a2VyUHJldmlvdXNNb250aDoiUHJldmlvdXMgbW9udGgiLGRhdGVwaWNrZXJDdXJyZW50TW9udGg6IkN1cnJlbnQgbW9udGgiLGRhdGVwaWNrZXJOZXh0TW9udGg6Ik5leHQgbW9udGgiLGRhdGVwaWNrZXJQcmV2aW91c0RlY2FkZToiUHJldmlvdXMgZGVjYWRlIixkYXRlcGlja2VyTmV4dERl''@;'; put 'put ''Y2FkZToiTmV4dCBkZWNhZGUiLGRhdGVwaWNrZXJDdXJyZW50RGVjYWRlOiJDdXJyZW50IGRlY2FkZSIsZGF0ZXBpY2tlclNlbGVjdE1vbnRoVGV4dDoiU2VsZWN0IG1vbnRoLCB0aGUgY3VycmVudCBtb250aCBpcyB7Q0FMRU5EQVJfTU9OVEh9IixkYXRlcGlja2VyU2VsZWN0WWVhclRleHQ6''@;'; put 'put ''IlNlbGVjdCB5ZWFyLCB0aGUgY3VycmVudCB5ZWFyIGlzIHtDQUxFTkRBUl9ZRUFSfSIsZGF0ZXBpY2tlclNlbGVjdGVkTGFiZWw6IntGVUxMX0RBVEV9IC0gU2VsZWN0ZWQiLHN0YWNrVmlld0NoYW5nZWQ6IlZhbHVlIGNoYW5nZWQuIixyZXNwb25zaXZlTmF2VG9nZ2xlT3BlbjoiTmF2aWdh''@;'; put 'put ''dGlvbiBtZW51IixyZXNwb25zaXZlTmF2VG9nZ2xlQ2xvc2U6Ik5hdmlnYXRpb24gbWVudSIscmVzcG9uc2l2ZU5hdk92ZXJmbG93T3BlbjoiTmF2aWdhdGlvbiBvdmVyZmxvdyBtZW51IixyZXNwb25zaXZlTmF2T3ZlcmZsb3dDbG9zZToiTmF2aWdhdGlvbiBvdmVyZmxvdyBtZW51Iix2ZXJ0''@;'; put 'put ''aWNhbE5hdkdyb3VwVG9nZ2xlOiJUb2dnbGUgdmVydGljYWwgbmF2aWdhdGlvbiBncm91cCIsdmVydGljYWxOYXZUb2dnbGU6IlRvZ2dsZSB2ZXJ0aWNhbCBuYXZpZ2F0aW9uIix0aW1lbGluZVN0ZXBOb3RTdGFydGVkOiJOb3Qgc3RhcnRlZCIsdGltZWxpbmVTdGVwQ3VycmVudDoiQ3VycmVu''@;'; put 'put ''dCIsdGltZWxpbmVTdGVwU3VjY2VzczoiQ29tcGxldGVkIix0aW1lbGluZVN0ZXBFcnJvcjoiRXJyb3IiLHRpbWVsaW5lU3RlcFByb2Nlc3Npbmc6IkluIHByb2dyZXNzIixjb21ib2JveERlbGV0ZToiRGVsZXRlIHNlbGVjdGVkIG9wdGlvbiIsY29tYm9ib3hTZWFyY2hpbmc6J1NlYXJjaGlu''@;'; put 'put ''ZyBmb3IgbWF0Y2hlcyBmb3IgIntJTlBVVH0iJyxjb21ib2JveFNlbGVjdGlvbjoiU2VsZWN0aW9uIixjb21ib2JveFNlbGVjdGVkOiJTZWxlY3RlZCIsY29tYm9ib3hOb1Jlc3VsdHM6Ik5vIHJlc3VsdHMiLGNvbWJvYm94T3BlbjoiU2hvdyBvcHRpb25zIixkYXRhZ3JpZEV4cGFuZGFibGVC''@;'; put 'put ''ZWdpbm5pbmdPZjoiQmVnaW5uaW5nIG9mIixkYXRhZ3JpZEV4cGFuZGFibGVFbmRPZjoiRW5kIG9mIixkYXRhZ3JpZEV4cGFuZGFibGVSb3dDb250ZW50OiJFeHBhbmRhYmxlIHJvdyBjb250ZW50IixkYXRhZ3JpZEV4cGFuZGFibGVSb3dzSGVscGVyVGV4dDoiU2NyZWVuIHJlYWRlciB0YWJs''@;'; put 'put ''ZSBjb21tYW5kcyBtYXkgbm90IHdvcmsgZm9yIHZpZXdpbmcgZXhwYW5kZWQgY29udGVudCwgcGxlYXNlIHVzZSB5b3VyIHNjcmVlbiByZWFkZXIncyBicm93c2UgbW9kZSB0byByZWFkIHRoZSBjb250ZW50IGV4cG9zZWQgYnkgdGhpcyBidXR0b24iLHdpemFyZFN0ZXBTdWNjZXNzOiJDb21w''@;'; put 'put ''bGV0ZWQiLHdpemFyZFN0ZXBFcnJvcjoiRXJyb3IiLHBhc3N3b3JkSGlkZToiSGlkZSBwYXNzd29yZCIscGFzc3dvcmRTaG93OiJTaG93IHBhc3N3b3JkIixzZWxlY3RlZFJvd3M6IlNlbGVjdGVkIHJvd3MifSk7bGV0IG5zPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9zdHJp''@;'; put 'put ''bmdzPVVqfWxvY2FsaXplKGgpe3RoaXMuX3N0cmluZ3M9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuX3N0cmluZ3MpLGgpfWdldCBrZXlzKCl7cmV0dXJuIHRoaXMuX3N0cmluZ3N9cGFyc2UoaCx2PXt9KXtjb25zdCB5PU9iamVjdC5rZXlzKHYpO2xldCBDPWg7cmV0dXJu''@;'; put 'put ''IHkubGVuZ3RoJiZ5LmZvckVhY2goST0+e0M9Qy5yZXBsYWNlKGB7JHtJfX1gLHZbSV0pfSksQ319cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJv''@;'; put 'put ''b3QifSksZH0pKCk7dmFyIGN2PSgoKT0+KGZ1bmN0aW9uKGQpe2QuRGVmYXVsdD0iZGVmYXVsdCIsZC5NdWx0aT0ibXVsdGkifShjdnx8KGN2PXt9KSksY3YpKSgpO2xldCB3ZmU9MDtjbGFzcyBiZmV7Y29uc3RydWN0b3IoZyxoKXt0aGlzLmlkPWcsdGhpcy5hY2NvcmRpb25JZD1oLHRoaXMu''@;'; put 'put ''c3RhdHVzPXM0LkluYWN0aXZlLHRoaXMuaW5kZXg9bnVsbCx0aGlzLmRpc2FibGVkPSExLHRoaXMub3Blbj0hMSx0aGlzLnRlbXBsYXRlSWQ9YCR7dGhpcy5pZH0tJHt0aGlzLmFjY29yZGlvbklkfWB9fWNsYXNzIFgke2NvbnN0cnVjdG9yKCl7dGhpcy5zdHJhdGVneT1jdi5EZWZhdWx0LHRo''@;'; put 'put ''aXMuYWNjb3JkaW9uQ291bnQ9d2ZlKyssdGhpcy5fcGFuZWxzPXt9fWdldCBwYW5lbHMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fcGFuZWxzKS5tYXAoZz0+dGhpcy5fcGFuZWxzW2ddKX1zZXRTdHJhdGVneShnKXt0aGlzLnN0cmF0ZWd5PWd9dXBkYXRlUGFuZWxPcmRlcihnKXtnLmZv''@;'; put 'put ''ckVhY2goKGgsdik9PnRoaXMuX3BhbmVsc1toXS5pbmRleD12KSx0aGlzLnJlbW92ZU9sZFBhbmVscyhnKX1hZGRQYW5lbChnLGg9ITEpe3RoaXMuX3BhbmVsc1tnXT1uZXcgYmZlKGcsdGhpcy5hY2NvcmRpb25Db3VudCksdGhpcy5fcGFuZWxzW2ddLm9wZW49aH10b2dnbGVQYW5lbChnLGgp''@;'; put 'put ''e2NvbnN0IHk9dm9pZCAwIT09aD9oOiF0aGlzLl9wYW5lbHNbZ10ub3Blbjt5JiZ0aGlzLnN0cmF0ZWd5PT09Y3YuRGVmYXVsdCYmdGhpcy5jbG9zZUFsbFBhbmVscygpLHRoaXMuX3BhbmVsc1tnXS5vcGVuPXl9ZGlzYWJsZVBhbmVsKGcsaCl7dGhpcy5fcGFuZWxzW2ddLmRpc2FibGVkPWh9''@;'; put 'put ''Y2xvc2VBbGxQYW5lbHMoKXt0aGlzLnBhbmVscy5mb3JFYWNoKGc9PnRoaXMuX3BhbmVsc1tnLmlkXS5vcGVuPSExKX1yZW1vdmVPbGRQYW5lbHMoZyl7dGhpcy5wYW5lbHMuZmlsdGVyKGg9PnZvaWQgMD09PWcuZmluZCh2PT52PT09aC5pZCkpLmZvckVhY2goaD0+ZGVsZXRlIHRoaXMuX3Bh''@;'; put 'put ''bmVsc1toLmlkXSl9fWxldCBvUz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5hY2NvcmRpb249bmV3IFgkLHRoaXMuX3BhbmVsc0NoYW5nZXM9bmV3IGZzKHRoaXMuYWNjb3JkaW9uLnBhbmVscyl9Z2V0UGFuZWxDaGFuZ2VzKGgpe3JldHVybiB0aGlzLl9wYW5lbHNDaGFuZ2Vz''@;'; put 'put ''LnBpcGUobXQodj0+di5maW5kKHk9PnkuaWQ9PT1oKSkpfXNldFN0cmF0ZWd5KGgpe3RoaXMuYWNjb3JkaW9uLnNldFN0cmF0ZWd5KGgpfWFkZFBhbmVsKGgsdj0hMSl7dGhpcy5hY2NvcmRpb24uYWRkUGFuZWwoaCx2KSx0aGlzLmVtaXRVcGRhdGVkUGFuZWxzKCl9dG9nZ2xlUGFuZWwoaCx2''@;'; put 'put ''KXt0aGlzLmFjY29yZGlvbi50b2dnbGVQYW5lbChoLHYpLHRoaXMuZW1pdFVwZGF0ZWRQYW5lbHMoKX1kaXNhYmxlUGFuZWwoaCx2KXt0aGlzLmFjY29yZGlvbi5kaXNhYmxlUGFuZWwoaCx2KSx0aGlzLmVtaXRVcGRhdGVkUGFuZWxzKCl9dXBkYXRlUGFuZWxPcmRlcihoKXt0aGlzLmFjY29y''@;'; put 'put ''ZGlvbi51cGRhdGVQYW5lbE9yZGVyKGgpLHRoaXMuZW1pdFVwZGF0ZWRQYW5lbHMoKX1lbWl0VXBkYXRlZFBhbmVscygpe3RoaXMuX3BhbmVsc0NoYW5nZXMubmV4dCh0aGlzLmFjY29yZGlvbi5wYW5lbHMpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxk''@;'; put 'put ''KX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxPTD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMpe3RoaXMuY29tbW9uU3RyaW5ncz1oLHRoaXMuYWNjb3JkaW9uU2VydmljZT12LHRoaXMuaWZFeHBhbmRTZXJ2aWNlPXksdGhp''@;'; put 'put ''cy5faWQ9Qyx0aGlzLmRpc2FibGVkPSExLHRoaXMucGFuZWxPcGVuPSExLHRoaXMucGFuZWxPcGVuQ2hhbmdlPW5ldyBhcix0aGlzLkFjY29yZGlvblN0YXR1cz1zNCx0aGlzLmlzQWNjb3JkaW9uPSEwfWdldCBpZCgpe3JldHVybiB0aGlzLl9pZH1zZXQgaWQoaCl7dGhpcy5faWQ9aH1uZ09u''@;'; put 'put ''SW5pdCgpe3RoaXMucGFuZWw9dGhpcy5hY2NvcmRpb25TZXJ2aWNlLmdldFBhbmVsQ2hhbmdlcyh0aGlzLmlkKS5waXBlKHlhKGg9PnRoaXMuZW1pdFBhbmVsQ2hhbmdlKGgpKSksdGhpcy5hY2NvcmRpb25TZXJ2aWNlLmFkZFBhbmVsKHRoaXMuaWQsdGhpcy5wYW5lbE9wZW4pLHRoaXMuYWNj''@;'; put 'put ''b3JkaW9uU2VydmljZS50b2dnbGVQYW5lbCh0aGlzLmlkLHRoaXMucGFuZWxPcGVuKSx0aGlzLmFjY29yZGlvblNlcnZpY2UuZGlzYWJsZVBhbmVsKHRoaXMuaWQsdGhpcy5kaXNhYmxlZCl9bmdPbkNoYW5nZXMoaCl7dGhpcy5wYW5lbCYmaC5wYW5lbE9wZW4mJmgucGFuZWxPcGVuLmN1cnJl''@;'; put 'put ''bnRWYWx1ZSE9PWgucGFuZWxPcGVuLnByZXZpb3VzVmFsdWUmJnRoaXMuYWNjb3JkaW9uU2VydmljZS50b2dnbGVQYW5lbCh0aGlzLmlkLGgucGFuZWxPcGVuLmN1cnJlbnRWYWx1ZSksdGhpcy5wYW5lbCYmaC5kaXNhYmxlZCYmaC5kaXNhYmxlZC5jdXJyZW50VmFsdWUhPT1oLmRpc2FibGVk''@;'; put 'put ''LnByZXZpb3VzVmFsdWUmJnRoaXMuYWNjb3JkaW9uU2VydmljZS5kaXNhYmxlUGFuZWwodGhpcy5pZCxoLmRpc2FibGVkLmN1cnJlbnRWYWx1ZSl9dG9nZ2xlUGFuZWwoKXt0aGlzLmFjY29yZGlvblNlcnZpY2UudG9nZ2xlUGFuZWwodGhpcy5pZCl9Y29sbGFwc2VQYW5lbE9uQW5pbWF0aW9u''@;'; put 'put ''RG9uZShoKXtoLm9wZW58fCh0aGlzLmlmRXhwYW5kU2VydmljZS5leHBhbmRlZD0hMSl9Z2V0UGFuZWxTdGF0ZUNsYXNzZXMoaCl7cmV0dXJuYGNsci1hY2NvcmRpb24tcGFuZWwtJHtoLnN0YXR1c30gJHtoLm9wZW4/ImNsci1hY2NvcmRpb24tcGFuZWwtb3BlbiI6IiJ9YH1nZXRBY2NvcmRp''@;'; put 'put ''b25Db250ZW50SWQoaCl7cmV0dXJuYGNsci1hY2NvcmRpb24tY29udGVudC0ke2h9J2B9Z2V0QWNjb3JkaW9uSGVhZGVySWQoaCl7cmV0dXJuYGNsci1hY2NvcmRpb24taGVhZGVyLSR7aH1gfWVtaXRQYW5lbENoYW5nZShoKXtoLm9wZW4hPT10aGlzLnBhbmVsT3BlbiYmKHRoaXMucGFuZWxP''@;'; put 'put ''cGVuQ2hhbmdlLmVtaXQoaC5vcGVuKSx0aGlzLnBhbmVsT3Blbj1oLm9wZW4pLGgub3BlbiYmKHRoaXMuaWZFeHBhbmRTZXJ2aWNlLmV4cGFuZGVkPSEwKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QobnMpLEt0KG9TKSxLdChyMSksS3QoeTIp''@;'; put 'put ''KX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWFjY29yZGlvbi1wYW5lbCJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZ4byh5LEokLDQpLDImaCl7bGV0IEM7SGkoQz0kaSgpKSYmKHYuYWNjb3JkaW9uRGVzY3JpcHRpb249Qyl9fSxo''@;'; put 'put ''b3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmRmkoImNsci1hY2NvcmRpb24tcGFuZWwiLCEwKX0saW5wdXRzOntkaXNhYmxlZDpbImNsckFjY29yZGlvblBhbmVsRGlzYWJsZWQiLCJkaXNhYmxlZCJdLHBhbmVsT3BlbjpbImNsckFjY29yZGlvblBhbmVsT3BlbiIs''@;'; put 'put ''InBhbmVsT3BlbiJdfSxvdXRwdXRzOntwYW5lbE9wZW5DaGFuZ2U6ImNsckFjY29yZGlvblBhbmVsT3BlbkNoYW5nZSJ9LGZlYXR1cmVzOltobyhbcjEsT2NdKSxEMl0sbmdDb250ZW50U2VsZWN0b3JzOnFLLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzQsIm5nSWYiXSxbImFyaWEtbGl2ZSIs''@;'; put 'put ''ImFzc2VydGl2ZSIsImNsYXNzIiwiY2xyLXNyLW9ubHkiLDQsIm5nSWYiXSxbMywibmdDbGFzcyJdLFsxLCJjbHItYWNjb3JkaW9uLWhlYWRlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2xyLWFjY29yZGlvbi1oZWFkZXItYnV0dG9uIiwzLCJpZCIsImRpc2FibGVkIiwiY2xpY2siXSxbImhl''@;'; put 'put ''YWRlckJ1dHRvbiIsIiJdLFsxLCJjbHItc3Itb25seSJdLFsxLCJjbHItYWNjb3JkaW9uLXN0YXR1cyJdLFsic2hhcGUiLCJhbmdsZSIsImRpcmVjdGlvbiIsInJpZ2h0IiwxLCJjbHItYWNjb3JkaW9uLWFuZ2xlIl0sWzEsImNsci1hY2NvcmRpb24tbnVtYmVyIl0sWyJzdGF0dXMiLCJkYW5n''@;'; put 'put ''ZXIiLCJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsMSwiY2xyLWFjY29yZGlvbi1lcnJvci1pY29uIl0sWyJzdGF0dXMiLCJzdWNjZXNzIiwic2hhcGUiLCJjaGVjay1jaXJjbGUiLDEsImNsci1hY2NvcmRpb24tY29tcGxldGUtaWNvbiJdLFsicm9sZSIsInJlZ2lvbiIsMywiaWQiXSxb''@;'; put 'put ''ImNsYXNzIiwiY2xyLWFjY29yZGlvbi1jb250ZW50Iiw0LCJuZ0lmIl0sWyJhcmlhLWxpdmUiLCJhc3NlcnRpdmUiLDEsImNsci1zci1vbmx5Il0sWzEsImNsci1hY2NvcmRpb24tY29udGVudCJdLFsxLCJjbHItYWNjb3JkaW9uLWlubmVyLWNvbnRlbnQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24o''@;'; put 'put ''aCx2KXsxJmgmJihLMCgkSykscm4oMCx0dWUsMTksMTgsIm5nLWNvbnRhaW5lciIsMCksbm4oMSwiYXN5bmMiKSksMiZoJiZUdCgibmdJZiIsenQoMSwxLHYucGFuZWwpKX0sZGVwZW5kZW5jaWVzOltObyxsYyxabyxXaF0sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpBZmV9LGNo''@;'; put 'put ''YW5nZURldGVjdGlvbjowfSksZH0pKCksSyQ9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmFjY29yZGlvblNlcnZpY2U9aCx0aGlzLm11bHRpUGFuZWw9ITEsdGhpcy5zdWJzY3JpcHRpb25zPVtdfW5nT25Jbml0KCl7dGhpcy5zZXRBY2NvcmRpb25TdHJhdGVneSgpfW5nT25D''@;'; put 'put ''aGFuZ2VzKGgpe2gubXVsdGlQYW5lbC5jdXJyZW50VmFsdWUhPT1oLm11bHRpUGFuZWwucHJldmlvdXNWYWx1ZSYmdGhpcy5zZXRBY2NvcmRpb25TdHJhdGVneSgpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGlzdGVuRm9yRE9NQ2hhbmdlcygpKX1u''@;'; put 'put ''Z09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSl9c2V0QWNjb3JkaW9uU3RyYXRlZ3koKXt0aGlzLmFjY29yZGlvblNlcnZpY2Uuc2V0U3RyYXRlZ3kodGhpcy5tdWx0aVBhbmVsP2N2Lk11bHRpOmN2LkRlZmF1bHQpfWxpc3RlbkZvckRP''@;'; put 'put ''TUNoYW5nZXMoKXtyZXR1cm4gdGhpcy5wYW5lbHMuY2hhbmdlcy5waXBlKE41KHRoaXMucGFuZWxzKSkuc3Vic2NyaWJlKGg9PnRoaXMuYWNjb3JkaW9uU2VydmljZS51cGRhdGVQYW5lbE9yZGVyKGgudG9BcnJheSgpLm1hcCh2PT52LmlkKSkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rp''@;'; put 'put ''b24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChvUykpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItYWNjb3JkaW9uIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtpZigxJmgmJnhvKHksT0wsNSksMiZoKXtsZXQgQztIaShDPSRpKCkpJiYodi5wYW5l''@;'; put 'put ''bHM9Qyl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmRmkoImNsci1hY2NvcmRpb24iLCEwKX0saW5wdXRzOnttdWx0aVBhbmVsOlsiY2xyQWNjb3JkaW9uTXVsdGlQYW5lbCIsIm11bHRpUGFuZWwiXX0sZmVhdHVyZXM6W2hvKFtvU10pLEQyXSxuZ0NvbnRl''@;'; put 'put ''bnRTZWxlY3RvcnM6bmEsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihLMCgpLE5pKDApKX0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksZH0pKCksJCQ9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3Jl''@;'; put 'put ''dHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1hY2NvcmRpb24tY29udGVudCJdLFsiY2xyLXN0ZXAtY29udGVudCJdXSxuZ0NvbnRlbnRTZWxlY3RvcnM6bmEsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihL''@;'; put 'put ''MCgpLE5pKDApKX0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksZH0pKCkscSQ9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1hY2Nv''@;'; put 'put ''cmRpb24tdGl0bGUiXSxbImNsci1zdGVwLXRpdGxlIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZGaSgiY2xyLWFjY29yZGlvbi10aXRsZSIsITApfSxuZ0NvbnRlbnRTZWxlY3RvcnM6bmEsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oaCx2''@;'; put 'put ''KXsxJmgmJihLMCgpLE5pKDApKX0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksZH0pKCksYXc9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2Nob2NvbGF0ZT1uZXcgJGUsdGhpcy5kaXNhYmxlQ2hvY29sYXRlQ2hlY2s9ITF9Z2V0IGNob2NvbGF0ZSgpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl9jaG9jb2xhdGUuYXNPYnNlcnZhYmxlKCl9bmdBZnRlclZpZXdDaGVja2VkKCl7dGhpcy5kaXNhYmxlQ2hvY29sYXRlQ2hlY2t8fHRoaXMuX2Nob2NvbGF0ZS5uZXh0KCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3''@;'; put 'put ''NWRpcj1XaSh7dHlwZTpkfSksZH0pKCksbHc9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMuc3Vic2NyaXB0aW9uPXYuY2hvY29sYXRlLnN1YnNjcmliZSgoKT0+e3RoaXMubGF0ZXN0Rmxhdm9yIT09dGhpcy5mbGF2b3ImJih2LmRpc2FibGVDaG9jb2xhdGVDaGVjaz0hMCxo''@;'; put 'put ''LmRldGVjdENoYW5nZXMoKSx2LmRpc2FibGVDaG9jb2xhdGVDaGVjaz0hMSl9KX1uZ0FmdGVyQ29udGVudENoZWNrZWQoKXt0aGlzLmxhdGVzdEZsYXZvcj10aGlzLmZsYXZvcn1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9fXJldHVybiBkLlx1MDI3NWZh''@;'; put 'put ''Yz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGQxKSxLdChhdykpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkfSksZH0pKCksUWo9KCgpPT57Y2xhc3MgZCBleHRlbmRzIGF3e31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgZztyZXR1cm4gZnVuY3Rpb24odil7cmV0''@;'; put 'put ''dXJuKGd8fChnPWZsKGQpKSkodnx8ZCl9fSgpLGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1hY2NvcmRpb24iXV0sZmVhdHVyZXM6W0RvXX0pLGR9KSgpLGVxPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBsd3tjb25zdHJ1Y3RvcihoLHYseSl7aWYoIXYpdGhyb3cgbmV3''@;'; put 'put ''IEVycm9yKCJjbHItYWNjb3JkaW9uLXBhbmVsIHNob3VsZCBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIGNsci1hY2NvcmRpb24iKTtzdXBlcihoLHYpLHRoaXMuZXhwYW5kPXl9Z2V0IGZsYXZvcigpe3JldHVybiB0aGlzLmV4cGFuZC5leHBhbmRlZH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0''@;'; put 'put ''aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoZDEpLEt0KFFqLDgpLEt0KHIxKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1hY2NvcmRpb24tcGFuZWwiXV0sZmVhdHVyZXM6W0RvXX0pLGR9KSgpLHRxPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtocy5h''@;'; put 'put ''ZGRJY29ucyhEeSxLaCxUZil9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W1tiYSxEc11dfSksZH0pKCksTHM9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUw''@;'; put 'put ''Mjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbW2JhLERzLHRxXSx0cV19KSxkfSkoKTt2YXIgTTA9KCgpPT4oZnVuY3Rpb24oZCl7ZC5BcnJvd0xlZnQ9IkFycm93TGVmdCIsZC5BcnJv''@;'; put 'put ''d1VwPSJBcnJvd1VwIixkLkFycm93UmlnaHQ9IkFycm93UmlnaHQiLGQuQXJyb3dEb3duPSJBcnJvd0Rvd24iLGQuQmFja3NwYWNlPSJCYWNrc3BhY2UiLGQuVGFiPSJUYWIiLGQuRW50ZXI9IkVudGVyIixkLkVzY2FwZT0iRXNjYXBlIixkLlNwYWNlPSJTcGFjZSIsZC5TcGFjZWJhcj0iICIs''@;'; put 'put ''ZC5Ib21lPSJIb21lIixkLkVuZD0iRW5kIn0oTTB8fChNMD17fSkpLE0wKSkoKSxmYz0oKCk9PihmdW5jdGlvbihkKXtkLkFycm93VXA9IlVwIixkLkFycm93RG93bj0iRG93biIsZC5BcnJvd1JpZ2h0PSJSaWdodCIsZC5BcnJvd0xlZnQ9IkxlZnQiLGQuU3BhY2U9IlNwYWNlYmFyIixkLkVz''@;'; put 'put ''Y2FwZT0iRXNjIixkLkhvbWU9IkhvbWUiLGQuRW5kPSJFbmQiLGQuRW50ZXI9IkVudGVyIixkLlRhYj0iVGFiIn0oZmN8fChmYz17fSkpLGZjKSkoKTtmdW5jdGlvbiBhUyhkKXtyZXR1cm4gZD09PU0wLkFycm93VXB8fGQ9PT1mYy5BcnJvd1VwP00wLkFycm93VXA6ZD09PU0wLkFycm93RG93''@;'; put 'put ''bnx8ZD09PWZjLkFycm93RG93bj9NMC5BcnJvd0Rvd246ZD09PU0wLkFycm93UmlnaHR8fGQ9PT1mYy5BcnJvd1JpZ2h0P00wLkFycm93UmlnaHQ6ZD09PU0wLkFycm93TGVmdHx8ZD09PWZjLkFycm93TGVmdD9NMC5BcnJvd0xlZnQ6ZD09PU0wLlNwYWNlfHxkPT09ZmMuU3BhY2U/TTAuU3Bh''@;'; put 'put ''Y2U6ZD09PU0wLkVzY2FwZXx8ZD09PWZjLkVzY2FwZT9NMC5Fc2NhcGU6ZH1mdW5jdGlvbiBNcChkKXtjb25zdCBnPWFTKGQua2V5KTsoZz09PU0wLkFycm93VXB8fGc9PT1NMC5BcnJvd0Rvd258fGc9PT1NMC5BcnJvd0xlZnR8fGc9PT1NMC5BcnJvd1JpZ2h0KSYmZC5wcmV2ZW50RGVmYXVs''@;'; put 'put ''dCgpfWxldCB6cz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fb3Blbj0hMSx0aGlzLl9vcGVuQ2hhbmdlPW5ldyAkZSx0aGlzLl9vcGVuRXZlbnRDaGFuZ2U9bmV3ICRlLHRoaXMuX3BvcG92ZXJBbGlnbmVkPW5ldyAkZX1nZXQgb3BlbkNoYW5nZSgpe3JldHVybiB0aGlzLl9v''@;'; put 'put ''cGVuQ2hhbmdlLmFzT2JzZXJ2YWJsZSgpfXNldCBvcGVuRXZlbnQoaCl7dGhpcy5fb3BlbkV2ZW50PWgsdGhpcy5fb3BlbkV2ZW50Q2hhbmdlLm5leHQoaCl9Z2V0IG9wZW5FdmVudCgpe3JldHVybiB0aGlzLl9vcGVuRXZlbnR9Z2V0RXZlbnRDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fb3BlbkV2''@;'; put 'put ''ZW50Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpfXNldCBvcGVuKGgpe3RoaXMuX29wZW4hPT0oaD0hIWgpJiYodGhpcy5fb3Blbj1oLHRoaXMuX29wZW5DaGFuZ2UubmV4dChoKSl9Z2V0IG9wZW4oKXtyZXR1cm4gdGhpcy5fb3Blbn1nZXQgb3JpZ2luYWxFdmVudCgpe3JldHVybiB0aGlzLl9vcGVu''@;'; put 'put ''RXZlbnR9dG9nZ2xlV2l0aEV2ZW50KGgpe01wKGgpLHRoaXMub3BlbkV2ZW50PWgsdGhpcy5vcGVuPSF0aGlzLm9wZW59Z2V0IHBvcG92ZXJBbGlnbmVkKCl7cmV0dXJuIHRoaXMuX3BvcG92ZXJBbGlnbmVkLmFzT2JzZXJ2YWJsZSgpfXBvcG92ZXJBbGlnbmVkRW1pdChoKXt0aGlzLl9wb3Bv''@;'; put 'put ''dmVyQWxpZ25lZC5uZXh0KGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxoOD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5KXt0aGlzLnJl''@;'; put 'put ''bmRlcmVyPWgsdGhpcy5zbWFydE9wZW5TZXJ2aWNlPXYsdGhpcy5kb2N1bWVudD15LHRoaXMub3V0c2lkZUNsaWNrQ2xvc2U9ITAsdGhpcy5zY3JvbGxUb0Nsb3NlPSEwLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh2Lm9wZW5DaGFuZ2Uuc3Vic2NyaWJl''@;'; put 'put ''KEM9PntDPyh0aGlzLmFkZEVzY2FwZUxpc3RlbmVyKCksdGhpcy5hZGRDbGlja0xpc3RlbmVyKCksdGhpcy5hZGRTY3JvbGxMaXN0ZW5lcigpKTp0aGlzLnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCl9KSx2LmdldEV2ZW50Q2hhbmdlKCkuc3Vic2NyaWJlKEM9Pnt0aGlzLmlnbm9yZWRFdmVu''@;'; put 'put ''dD1DfSkpfWFkZFNjcm9sbExpc3RlbmVyKCl7dGhpcy5zY3JvbGxUb0Nsb3NlJiYodGhpcy5kb2N1bWVudFNjcm9sbGVyPXQ4KHRoaXMuZG9jdW1lbnQsInNjcm9sbCIse2NhcHR1cmU6ITB9KSx0aGlzLnNjcm9sbFN1YnNjcmlwdGlvbj10aGlzLmRvY3VtZW50U2Nyb2xsZXIucGlwZShPMih0''@;'; put 'put ''aGlzLnRlc3RGb3JTbWFydFBvcG92ZXJDb250ZW50Q29udGFpbmVyKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5zbWFydE9wZW5TZXJ2aWNlLm9wZW49ITEsdGhpcy5zZXRBbmNob3JGb2N1cygpfSkpfXJlbW92ZVNjcm9sbExpc3RlbmVyKCl7dGhpcy5kb2N1bWVudFNjcm9sbGVyJiYodGhpcy5z''@;'; put 'put ''Y3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSxkZWxldGUgdGhpcy5kb2N1bWVudFNjcm9sbGVyKX10ZXN0Rm9yU21hcnRQb3BvdmVyQ29udGVudENvbnRhaW5lcihoKXtsZXQgdj1oLnRhcmdldDtmb3IoO3YuY2xhc3NMaXN0JiYiYm9keSIhPT12LnBhcmVudEVsZW1lbnQubG9jYWxO''@;'; put 'put ''YW1lOyl2PXYucGFyZW50RWxlbWVudDtyZXR1cm4hIXYuY2xhc3NMaXN0JiYhdi5jbGFzc0xpc3QuY29udGFpbnMoImNsci1wb3BvdmVyLWNvbnRlbnQiKX1hZGRDbGlja0xpc3RlbmVyKCl7dGhpcy5vdXRzaWRlQ2xpY2tDbG9zZSYmKHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyPXRoaXMu''@;'; put 'put ''cmVuZGVyZXIubGlzdGVuKHRoaXMuZG9jdW1lbnQsImNsaWNrIixoPT57aD09PXRoaXMuaWdub3JlZEV2ZW50P2RlbGV0ZSB0aGlzLmlnbm9yZWRFdmVudDoodGhpcy5zbWFydE9wZW5TZXJ2aWNlLm9wZW49ITEsaC50YXJnZXQuZm9jdXMoKSl9KSl9cmVtb3ZlQ2xpY2tMaXN0ZW5lcigpe3Ro''@;'; put 'put ''aXMub3V0c2lkZUNsaWNrQ2xvc2UmJihkZWxldGUgdGhpcy5pZ25vcmVkRXZlbnQsdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXImJih0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcigpLGRlbGV0ZSB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikpfWFkZEVzY2FwZUxpc3RlbmVyKCl7dGhp''@;'; put 'put ''cy5lc2NhcGVMaXN0ZW5lcj10aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmRvY3VtZW50LCJrZXlkb3duLmVzY2FwZSIsKCk9Pnt0aGlzLnNtYXJ0T3BlblNlcnZpY2Uub3Blbj0hMSx0aGlzLnNldEFuY2hvckZvY3VzKCl9KX1yZW1vdmVFc2NhcGVMaXN0ZW5lcigpe3RoaXMuZXNjYXBlTGlz''@;'; put 'put ''dGVuZXImJih0aGlzLmVzY2FwZUxpc3RlbmVyKCksZGVsZXRlIHRoaXMuZXNjYXBlTGlzdGVuZXIpfXNldCBhbmNob3JCdXR0b25SZWYoaCl7dGhpcy5fYW5jaG9yQnV0dG9uUmVmPWh9Z2V0IGFuY2hvckJ1dHRvblJlZigpe3JldHVybiB0aGlzLl9hbmNob3JCdXR0b25SZWZ9c2V0IGNsb3Nl''@;'; put 'put ''QnV0dG9uUmVmKGgpe3RoaXMuX2Nsb3NlQnV0dG9uUmVmPWh9Z2V0IGNsb3NlQnV0dG9uUmVmKCl7cmV0dXJuIHRoaXMuX2Nsb3NlQnV0dG9uUmVmfXNldENsb3NlRm9jdXMoKXt0aGlzLl9jbG9zZUJ1dHRvblJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCl9c2V0QW5jaG9yRm9jdXMoKXt0aGlz''@;'; put 'put ''LmFuY2hvckJ1dHRvblJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCl9c2V0IGNvbnRlbnRSZWYoaCl7dGhpcy5fY29udGVudFJlZj1ofWdldCBjb250ZW50UmVmKCl7cmV0dXJuIHRoaXMuX2NvbnRlbnRSZWZ9cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKXt0aGlzLnJlbW92ZVNjcm9sbExpc3Rl''@;'; put 'put ''bmVyKCksdGhpcy5yZW1vdmVDbGlja0xpc3RlbmVyKCksdGhpcy5yZW1vdmVFc2NhcGVMaXN0ZW5lcigpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKSx0aGlzLnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCl9fXJldHVybiBkLlx1''@;'; put 'put ''MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKEdhKSxDaSh6cyksQ2koZ3MpKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSx1dz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdil7aC5hbmNob3JCdXR0b25SZWY9''@;'; put 'put ''dn19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoaDgpLEt0KGJvKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNsclBvcG92ZXJBbmNob3IiLCIiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2''@;'; put 'put ''KXsyJmgmJkZpKCJjbHItYW5jaG9yIiwhMCl9fSksZH0pKCkscnE9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5lbGVtZW50UmVmPWgsdGhpcy5zbWFydEV2ZW50c1NlcnZpY2U9dix0aGlzLnNtYXJ0T3BlblNlcnZpY2U9eSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhp''@;'; put 'put ''cy5jbG9zZUNoYW5nZT1uZXcgYXIsdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goeS5vcGVuQ2hhbmdlLnBpcGUoTzIoQz0+IUMpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLmNsb3NlQ2hhbmdlLm5leHQoKX0pKX1oYW5kbGVDbGljayhoKXt0aGlzLnNtYXJ0T3BlblNlcnZpY2UudG9nZ2xlV2l0aEV2''@;'; put 'put ''ZW50KGgpLHRoaXMuc21hcnRFdmVudHNTZXJ2aWNlLnNldEFuY2hvckZvY3VzKCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5zbWFydEV2ZW50c1NlcnZpY2UuY2xvc2VCdXR0b25SZWY9dGhpcy5lbGVtZW50UmVmLHRoaXMuc21hcnRFdmVudHNTZXJ2aWNlLnNldENsb3NlRm9jdXMoKX1uZ09u''@;'; put 'put ''RGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGJvKSxLdChoOCksS3QoenMpKX0sZC5cdTAyNzVkaXI9V2koe3R5cGU6ZCxzZWxlY3RvcnM6W1si''@;'; put 'put ''IiwiY2xyUG9wb3ZlckNsb3NlQnV0dG9uIiwiIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MSZoJiZHbigiY2xpY2siLGZ1bmN0aW9uKEMpe3JldHVybiB2LmhhbmRsZUNsaWNrKEMpfSksMiZoJiZGaSgiY2xyLXNtYXJ0LWNsb3NlLWJ1dHRvbiIsITApfSxvdXRw''@;'; put 'put ''dXRzOntjbG9zZUNoYW5nZToiY2xyUG9wb3Zlck9uQ2xvc2VDaGFuZ2UifX0pLGR9KSgpO3ZhciAkMT0oKCk9PihmdW5jdGlvbihkKXtkW2QuVkVSVElDQUw9MF09IlZFUlRJQ0FMIixkW2QuSE9SSVpPTlRBTD0xXT0iSE9SSVpPTlRBTCJ9KCQxfHwoJDE9e30pKSwkMSkpKCksX289KCgpPT4o''@;'; put 'put ''ZnVuY3Rpb24oZCl7ZFtkLlNUQVJUPTBdPSJTVEFSVCIsZFtkLkNFTlRFUj0uNV09IkNFTlRFUiIsZFtkLkVORD0xXT0iRU5EIn0oX298fChfbz17fSkpLF9vKSkoKSxCaT0oKCk9PihmdW5jdGlvbihkKXtkW2QuQk9UVE9NPTBdPSJCT1RUT00iLGRbZC5MRUZUPTFdPSJMRUZUIixkW2QuUklH''@;'; put 'put ''SFQ9Ml09IlJJR0hUIixkW2QuVE9QPTNdPSJUT1AifShCaXx8KEJpPXt9KSksQmkpKSgpO2NvbnN0IGQ4PWQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxkKSx7c2lkZTotMSpkLnNpZGV9KSxxMD0oZCxnKT0+e2NvbnN0IGg9ZC5jb250ZW50KyhnPy41Oi0uNSk7cmV0dXJuIGg8''@;'; put 'put ''MHx8aD4xP2Q6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGQpLHtjb250ZW50Omh9KX07ZnVuY3Rpb24gUjIoZCxnLGgpe3JldHVybiB2PT5nKGQodiksaCl9ZnVuY3Rpb24gbzMoZCxnLGgpe2xldCB2PWcubGVmdCx5PWcudG9wO3N3aXRjaChkLmF4aXMrZC5zaWRlKXtjYXNlLTE6''@;'; put 'put ''dis9S2ooZCxnLGgpLHktPWguaGVpZ2h0O2JyZWFrO2Nhc2UgMTp2Kz1LaihkLGcsaCkseSs9Zy5oZWlnaHQ7YnJlYWs7Y2FzZSAwOnYtPWgud2lkdGgseSs9aXEoZCxnLGgpO2JyZWFrO2Nhc2UgMjp2Kz1nLndpZHRoLHkrPWlxKGQsZyxoKX1yZXR1cm57eE9mZnNldDp2LHlPZmZzZXQ6eX19''@;'; put 'put ''ZnVuY3Rpb24gS2ooZCxnLGgpe2xldCB2PTA7c3dpdGNoKGQuYW5jaG9yKXtjYXNlIF9vLlNUQVJUOmJyZWFrO2Nhc2UgX28uQ0VOVEVSOnYrPWcud2lkdGgvMjticmVhaztjYXNlIF9vLkVORDp2Kz1nLndpZHRofXN3aXRjaChkLmNvbnRlbnQpe2Nhc2UgX28uU1RBUlQ6YnJlYWs7Y2FzZSBf''@;'; put 'put ''by5DRU5URVI6di09aC53aWR0aC8yO2JyZWFrO2Nhc2UgX28uRU5EOnYtPWgud2lkdGh9cmV0dXJuIHZ9ZnVuY3Rpb24gaXEoZCxnLGgpe2xldCB2PTA7c3dpdGNoKGQuYW5jaG9yKXtjYXNlIF9vLlNUQVJUOmJyZWFrO2Nhc2UgX28uQ0VOVEVSOnYrPWcuaGVpZ2h0LzI7YnJlYWs7Y2FzZSBf''@;'; put 'put ''by5FTkQ6dis9Zy5oZWlnaHR9c3dpdGNoKGQuY29udGVudCl7Y2FzZSBfby5TVEFSVDpicmVhaztjYXNlIF9vLkNFTlRFUjp2LT1oLmhlaWdodC8yO2JyZWFrO2Nhc2UgX28uRU5EOnYtPWguaGVpZ2h0fXJldHVybiB2fWxldCBHcz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdil7dGhp''@;'; put 'put ''cy5ldmVudFNlcnZpY2U9aCx0aGlzLnBsYXRmb3JtSWQ9dix0aGlzLl9zaG91bGRSZWFsaWduPW5ldyAkZSx0aGlzLnNob3VsZFJlYWxpZ249dGhpcy5fc2hvdWxkUmVhbGlnbi5hc09ic2VydmFibGUoKX1yZWFsaWduKCl7dGhpcy5fc2hvdWxkUmVhbGlnbi5uZXh0KCl9c2V0IHBvc2l0aW9u''@;'; put 'put ''KGgpe3RoaXMuX3Bvc2l0aW9uPWh9Z2V0IHBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9ufWFsaWduQ29udGVudChoKXtpZighU2wodGhpcy5wbGF0Zm9ybUlkKSlyZXR1cm57eE9mZnNldDowLHlPZmZzZXQ6MH07dGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzPXRoaXMuZXZlbnRTZXJ2''@;'; put 'put ''aWNlLmFuY2hvckJ1dHRvblJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHM9aC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLmNvbnRlbnRPZmZzZXRzPW8zKHRoaXMucG9zaXRpb24sdGhpcy5jdXJyZW50QW5jaG9y''@;'; put 'put ''Q29vcmRzLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMpO2NvbnN0IHY9ZnVuY3Rpb24gQ28oZCxnKXtjb25zdCBoPVtdLHZfYm90dG9tPWQueU9mZnNldCtnLmhlaWdodCx2X2xlZnQ9ZC54T2Zmc2V0LHZfcmlnaHQ9ZC54T2Zmc2V0K2cud2lkdGg7cmV0dXJuIGQueU9mZnNldD49MHx8aC5w''@;'; put 'put ''dXNoKEJpLlRPUCksdl9sZWZ0Pj0wfHxoLnB1c2goQmkuTEVGVCksdl9ib3R0b208PSh3aW5kb3cuaW5uZXJIZWlnaHR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpfHxoLnB1c2goQmkuQk9UVE9NKSx2X3JpZ2h0PD0od2luZG93LmlubmVyV2lkdGh8fGRvY3VtZW50''@;'; put 'put ''LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCl8fGgucHVzaChCaS5SSUdIVCksaH0odGhpcy5jb250ZW50T2Zmc2V0cyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKSx5PXYucmVkdWNlKChDLEkpPT5DK0ksMCk7cmV0dXJuIDE9PT12Lmxlbmd0aCYmdGhpcy5wb3NpdGlvbi5heGlzPT09''@;'; put 'put ''JDEuVkVSVElDQUw/dGhpcy5oYW5kbGVWZXJ0aWNhbEF4aXNPbmVWaW9sYXRpb24oeSk6MT09PXYubGVuZ3RoJiZ0aGlzLnBvc2l0aW9uLmF4aXM9PT0kMS5IT1JJWk9OVEFMP3RoaXMuaGFuZGxlSG9yaXpvbnRhbEF4aXNPbmVWaW9sYXRpb24oeSk6Mj09PXYubGVuZ3RoJiZ0aGlzLnBvc2l0''@;'; put 'put ''aW9uLmF4aXM9PT0kMS5WRVJUSUNBTD90aGlzLmhhbmRsZVZlcnRpY2FsQXhpc1R3b1Zpb2xhdGlvbnMoeSk6Mj09PXYubGVuZ3RoJiZ0aGlzLnBvc2l0aW9uLmF4aXM9PT0kMS5IT1JJWk9OVEFMJiZ0aGlzLmhhbmRsZUhvcml6b250YWxBeGlzVHdvVmlvbGF0aW9ucyh5KSx0aGlzLmNvbnRl''@;'; put 'put ''bnRPZmZzZXRzfWhhbmRsZVZlcnRpY2FsQXhpc09uZVZpb2xhdGlvbihoKXtzd2l0Y2goaCl7Y2FzZSAwOmNhc2UgMzp0aGlzLmNvbnRlbnRPZmZzZXRzPW8zKGQ4KHRoaXMucG9zaXRpb24pLHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKTticmVh''@;'; put 'put ''aztjYXNlIDE6dGhpcy5jb250ZW50T2Zmc2V0cz1vMyh0aGlzLnBvc2l0aW9uLHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKSx0aGlzLmNvbnRlbnRPZmZzZXRzLnhPZmZzZXQ8MCYmKHRoaXMuY29udGVudE9mZnNldHMueE9mZnNldD0xMCk7YnJl''@;'; put 'put ''YWs7Y2FzZSAyOnRoaXMuY29udGVudE9mZnNldHM9bzMocTAodGhpcy5wb3NpdGlvbiwhMCksdGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMpfX1oYW5kbGVWZXJ0aWNhbEF4aXNUd29WaW9sYXRpb25zKGgpe3N3aXRjaChoKXtjYXNlIDU6e2NvbnN0''@;'; put 'put ''IHY9UjIoZDgscTAsITApO3RoaXMuY29udGVudE9mZnNldHM9bzModih0aGlzLnBvc2l0aW9uKSx0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVudENvb3Jkcyk7YnJlYWt9Y2FzZSA0Ontjb25zdCB2PVIyKGQ4LHEwLCExKTt0aGlzLmNvbnRlbnRPZmZzZXRzPW8z''@;'; put 'put ''KHYodGhpcy5wb3NpdGlvbiksdGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMpO2JyZWFrfWNhc2UgMzpkZWZhdWx0OmJyZWFrO2Nhc2UgMjp7Y29uc3Qgdj1SMihkOCxxMCwhMCk7dGhpcy5jb250ZW50T2Zmc2V0cz1vMyh2KHRoaXMucG9zaXRpb24p''@;'; put 'put ''LHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKTticmVha31jYXNlIDE6e2NvbnN0IHY9UjIoZDgscTAsITEpO3RoaXMuY29udGVudE9mZnNldHM9bzModih0aGlzLnBvc2l0aW9uKSx0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50''@;'; put 'put ''Q29udGVudENvb3Jkcyk7YnJlYWt9fX1oYW5kbGVIb3Jpem9udGFsQXhpc09uZVZpb2xhdGlvbihoKXtzd2l0Y2goaCl7Y2FzZSAxOmNhc2UgMjp0aGlzLmNvbnRlbnRPZmZzZXRzPW8zKGQ4KHRoaXMucG9zaXRpb24pLHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250''@;'; put 'put ''ZW50Q29vcmRzKTticmVhaztjYXNlIDA6dGhpcy5jb250ZW50T2Zmc2V0cz1vMyhxMCh0aGlzLnBvc2l0aW9uLCEwKSx0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVudENvb3Jkcyk7YnJlYWs7Y2FzZSAzOnRoaXMuY29udGVudE9mZnNldHM9bzMocTAodGhpcy5w''@;'; put 'put ''b3NpdGlvbiksdGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMpfX1oYW5kbGVIb3Jpem9udGFsQXhpc1R3b1Zpb2xhdGlvbnMoaCl7c3dpdGNoKGgpe2Nhc2UgNTpjYXNlIDQ6e2NvbnN0IHY9UjIoZDgscTAsITEpO3RoaXMuY29udGVudE9mZnNldHM9''@;'; put 'put ''bzModih0aGlzLnBvc2l0aW9uKSx0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVudENvb3Jkcyk7YnJlYWt9Y2FzZSAzOmRlZmF1bHQ6YnJlYWs7Y2FzZSAyOmNhc2UgMTp7Y29uc3Qgdj1SMihkOCxxMCwhMCk7dGhpcy5jb250ZW50T2Zmc2V0cz1vMyh2KHRoaXMu''@;'; put 'put ''cG9zaXRpb24pLHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKTticmVha319fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShoOCksQ2koTDIpKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rv''@;'; put 'put ''cnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxkbD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSxaLHVlKXt0aGlzLmRvY3VtZW50PWgsdGhpcy5jb250YWluZXI9dix0aGlzLnRlbXBsYXRlPXksdGhpcy5yZW5kZXJlcj1DLHRoaXMuc21hcnRQb3NpdGlvblNlcnZpY2U9SSx0aGlz''@;'; put 'put ''LnNtYXJ0RXZlbnRzU2VydmljZT1aLHRoaXMuc21hcnRPcGVuU2VydmljZT11ZSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5yZW1vdmVDbGlja0xpc3RlbmVyRm49bnVsbCx0aGlzLnNob3VsZFJlYWxpZ249ITEsdGhpcy5jaGVja0NvbGxlY3Rvcj1uZXcgYXJ9c2V0IG9wZW4oaCl7dGhp''@;'; put 'put ''cy5zbWFydE9wZW5TZXJ2aWNlLm9wZW49ISFofXNldCBjb250ZW50QXQoaCl7dGhpcy5zbWFydFBvc2l0aW9uU2VydmljZS5wb3NpdGlvbj1ofXNldCBvdXRzaWRlQ2xpY2tDbG9zZShoKXt0aGlzLnNtYXJ0RXZlbnRzU2VydmljZS5vdXRzaWRlQ2xpY2tDbG9zZT0hIWh9c2V0IHNjcm9sbFRv''@;'; put 'put ''Q2xvc2UoaCl7dGhpcy5zbWFydEV2ZW50c1NlcnZpY2Uuc2Nyb2xsVG9DbG9zZT0hIWh9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5zbWFydE9wZW5TZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKGg9PntoP3RoaXMuYWRkQ29udGVudCgpOnRoaXMu''@;'; put 'put ''cmVtb3ZlQ29udGVudCgpfSksdGhpcy5zbWFydFBvc2l0aW9uU2VydmljZS5zaG91bGRSZWFsaWduLnN1YnNjcmliZSgoKT0+e3RoaXMuc2hvdWxkUmVhbGlnbj0hMCx0aGlzLnZpZXcmJnRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy52aWV3LnJvb3ROb2Rlc1swXSwib3BhY2l0eSIsIjAi''@;'; put 'put ''KX0pLHRoaXMuY2hlY2tDb2xsZWN0b3IucGlwZShERCgwKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5hbGlnbkNvbnRlbnQoKSx0aGlzLnNob3VsZFJlYWxpZ249ITEsdGhpcy52aWV3JiZ0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudmlldy5yb290Tm9kZXNbMF0sIm9wYWNpdHkiLCIxIil9''@;'; put 'put ''KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnJlbW92ZUNvbnRlbnQoKSx0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJlKCkpfXJlbW92ZUNvbnRlbnQoKXshdGhpcy52aWV3fHwodGhpcy5yZW1vdmVDbGlja0xpc3RlbmVyRm4mJih0aGlzLnJlbW92ZUNsaWNrTGlzdGVu''@;'; put 'put ''ZXJGbigpLHRoaXMucmVtb3ZlQ2xpY2tMaXN0ZW5lckZuPW51bGwpLHRoaXMudmlldy5yb290Tm9kZXMuZm9yRWFjaChoPT50aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMuZG9jdW1lbnQuYm9keSxoKSksdGhpcy5jb250YWluZXIuY2xlYXIoKSxkZWxldGUgdGhpcy52aWV3KX1hZGRD''@;'; put 'put ''b250ZW50KCl7dGhpcy52aWV3PXRoaXMuY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlKTtjb25zdFtoXT10aGlzLnZpZXcucm9vdE5vZGVzO3RoaXMuc21hcnRFdmVudHNTZXJ2aWNlLmNvbnRlbnRSZWY9aCx0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGgsImNsci1w''@;'; put 'put ''b3BvdmVyLWNvbnRlbnQiKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGgsInRvcCIsIjBweCIpLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaCwibGVmdCIsIjBweCIpLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaCwib3BhY2l0eSIsIjAiKSx0aGlzLnJlbW92ZUNsaWNrTGlzdGVuZXJGbj10aGlz''@;'; put 'put ''LnJlbmRlcmVyLmxpc3RlbihoLCJjbGljayIsdj0+e3RoaXMuc21hcnRPcGVuU2VydmljZS5vcGVuRXZlbnQ9dn0pLHRoaXMudmlldy5yb290Tm9kZXMuZm9yRWFjaCh2PT57dGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50LmJvZHksdil9KSx0aGlzLnNob3VsZFJlYWxp''@;'; put 'put ''Z249ITB9bmdBZnRlckNvbnRlbnRDaGVja2VkKCl7dGhpcy5zbWFydE9wZW5TZXJ2aWNlLm9wZW4mJnRoaXMudmlldyYmdGhpcy5zaG91bGRSZWFsaWduJiZ0aGlzLmNoZWNrQ29sbGVjdG9yLmVtaXQoKX1hbGlnbkNvbnRlbnQoKXtpZighdGhpcy52aWV3KXJldHVybjtjb25zdCBoPXRoaXMu''@;'; put 'put ''c21hcnRQb3NpdGlvblNlcnZpY2UuYWxpZ25Db250ZW50KHRoaXMudmlldy5yb290Tm9kZXNbMF0pO3RoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy52aWV3LnJvb3ROb2Rlc1swXSwidG9wIixgJHtoLnlPZmZzZXR9cHhgKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudmlldy5yb290''@;'; put 'put ''Tm9kZXNbMF0sImxlZnQiLGAke2gueE9mZnNldH1weGApLHRoaXMuc21hcnRPcGVuU2VydmljZS5wb3BvdmVyQWxpZ25lZEVtaXQodGhpcy52aWV3LnJvb3ROb2Rlc1swXSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGdzKSxLdChVaSksS3Qo''@;'; put 'put ''cXIpLEt0KEdhKSxLdChHcyksS3QoaDgpLEt0KHpzKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNsclBvcG92ZXJDb250ZW50IiwiIl1dLGlucHV0czp7b3BlbjpbImNsclBvcG92ZXJDb250ZW50Iiwib3BlbiJdLGNvbnRlbnRBdDpbImNsclBvcG92ZXJDb250''@;'; put 'put ''ZW50QXQiLCJjb250ZW50QXQiXSxvdXRzaWRlQ2xpY2tDbG9zZTpbImNsclBvcG92ZXJDb250ZW50T3V0c2lkZUNsaWNrVG9DbG9zZSIsIm91dHNpZGVDbGlja0Nsb3NlIl0sc2Nyb2xsVG9DbG9zZTpbImNsclBvcG92ZXJDb250ZW50U2Nyb2xsVG9DbG9zZSIsInNjcm9sbFRvQ2xvc2UiXX19''@;'; put 'put ''KSxkfSkoKSxjdz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuc21hcnRPcGVuU2VydmljZT1oLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLm9wZW5DbG9zZUNoYW5nZT1uZXcgYXIsdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5zbWFydE9wZW5TZXJ2aWNlLm9wZW5D''@;'; put 'put ''aGFuZ2Uuc3Vic2NyaWJlKHY9Pnt0aGlzLm9wZW5DbG9zZUNoYW5nZS5uZXh0KHYpfSkpfWhhbmRsZUNsaWNrKGgpe3RoaXMuc21hcnRPcGVuU2VydmljZS50b2dnbGVXaXRoRXZlbnQoaCl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJl''@;'; put 'put ''KCkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdCh6cykpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJQb3BvdmVyT3BlbkNsb3NlQnV0dG9uIiwiIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9u''@;'; put 'put ''KGgsdil7MSZoJiZHbigiY2xpY2siLGZ1bmN0aW9uKEMpe3JldHVybiB2LmhhbmRsZUNsaWNrKEMpfSksMiZoJiZGaSgiY2xyLXNtYXJ0LW9wZW4tY2xvc2UiLCEwKX0sb3V0cHV0czp7b3BlbkNsb3NlQ2hhbmdlOiJjbHJQb3BvdmVyT3BlbkNsb3NlQ2hhbmdlIn19KSxkfSkoKSxSYz0oKCk9''@;'; put 'put ''PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHtpbXBvcnRzOltbXV19KSxkfSkoKTt2YXIgbD0oKCk9PihmdW5jdGlvbihkKXtkW2QuQkVGT1JFPS0xXT0iQkVG''@;'; put 'put ''T1JFIixkW2QuQUZURVI9MV09IkFGVEVSIn0obHx8KGw9e30pKSxsKSkoKTtjbGFzcyBje31jWyJ0b3AtcmlnaHQiXT17YXhpczokMS5WRVJUSUNBTCxzaWRlOmwuQkVGT1JFLGFuY2hvcjpfby5FTkQsY29udGVudDpfby5FTkR9LGNbInRvcC1sZWZ0Il09e2F4aXM6JDEuVkVSVElDQUwsc2lk''@;'; put 'put ''ZTpsLkJFRk9SRSxhbmNob3I6X28uU1RBUlQsY29udGVudDpfby5TVEFSVH0sY1siYm90dG9tLXJpZ2h0Il09e2F4aXM6JDEuVkVSVElDQUwsc2lkZTpsLkFGVEVSLGFuY2hvcjpfby5FTkQsY29udGVudDpfby5FTkR9LGNbImJvdHRvbS1sZWZ0Il09e2F4aXM6JDEuVkVSVElDQUwsc2lkZTps''@;'; put 'put ''LkFGVEVSLGFuY2hvcjpfby5TVEFSVCxjb250ZW50Ol9vLlNUQVJUfSxjWyJyaWdodC10b3AiXT17YXhpczokMS5IT1JJWk9OVEFMLHNpZGU6bC5BRlRFUixhbmNob3I6X28uQ0VOVEVSLGNvbnRlbnQ6X28uRU5EfSxjWyJyaWdodC1ib3R0b20iXT17YXhpczokMS5IT1JJWk9OVEFMLHNpZGU6''@;'; put 'put ''bC5BRlRFUixhbmNob3I6X28uU1RBUlQsY29udGVudDpfby5TVEFSVH0sY1sibGVmdC10b3AiXT17YXhpczokMS5IT1JJWk9OVEFMLHNpZGU6bC5CRUZPUkUsYW5jaG9yOl9vLkNFTlRFUixjb250ZW50Ol9vLkVORH0sY1sibGVmdC1ib3R0b20iXT17YXhpczokMS5IT1JJWk9OVEFMLHNpZGU6''@;'; put 'put ''bC5CRUZPUkUsYW5jaG9yOl9vLlNUQVJULGNvbnRlbnQ6X28uU1RBUlR9O2xldCBtPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W1ti''@;'; put 'put ''YSxEcyxSY11dfSksZH0pKCksdz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdil7dGhpcy5lbD1oLHRoaXMucmVuZGVyZXI9dix0aGlzLmJ1dHRvblN0YXRlPWdpLHRoaXMuc3RhdGU9Z2kuREVGQVVMVCx0aGlzLmNsckxvYWRpbmdDaGFuZ2U9bmV3IGFyKCExKX1sb2FkaW5nU3RhdGVD''@;'; put 'put ''aGFuZ2UoaCl7aWYoaCE9PXRoaXMuc3RhdGUpe3N3aXRjaCh0aGlzLnN0YXRlPWgsaCl7Y2FzZSBnaS5ERUZBVUxUOnRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ3aWR0aCIpLHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5lbC5uYXRpdmVF''@;'; put 'put ''bGVtZW50LCJ0cmFuc2Zvcm0iKSx0aGlzLmRpc2FibGVkfHx0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImRpc2FibGVkIik7YnJlYWs7Y2FzZSBnaS5MT0FESU5HOnRoaXMuc2V0RXhwbGljaXRCdXR0b25XaWR0aCgpLHRoaXMucmVuZGVyZXIu''@;'; put 'put ''c2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGV6KDApIiksdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJkaXNhYmxlZCIsIiIpO2JyZWFrO2Nhc2UgZ2kuU1VDQ0VTUzp0aGlzLnNldEV4cGxpY2l0QnV0''@;'; put 'put ''dG9uV2lkdGgoKTticmVhaztjYXNlIGdpLkVSUk9SOnRoaXMubG9hZGluZ1N0YXRlQ2hhbmdlKGdpLkRFRkFVTFQpfXRoaXMuY2xyTG9hZGluZ0NoYW5nZS5lbWl0KGgpfX1zZXRFeHBsaWNpdEJ1dHRvbldpZHRoKCl7aWYodGhpcy5lbC5uYXRpdmVFbGVtZW50JiZ0aGlzLmVsLm5hdGl2ZUVs''@;'; put 'put ''ZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KXtjb25zdCBoPXRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx2PU1hdGgubWF4KDQyLGgud2lkdGgpO3RoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ3aWR0aCIsYCR7dn1w''@;'; put 'put ''eGApfX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoYm8pLEt0KEdhKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImJ1dHRvbiIsImNsckxvYWRpbmciLCIiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24o''@;'; put 'put ''aCx2KXsyJmgmJkdpKCJkaXNhYmxlZCIsdi5kaXNhYmxlZD8iIjpudWxsKX0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQifSxvdXRwdXRzOntjbHJMb2FkaW5nQ2hhbmdlOiJjbHJMb2FkaW5nQ2hhbmdlIn0sZmVhdHVyZXM6W2hvKFt7cHJvdmlkZTpQZix1c2VFeGlzdGluZzpkfV0pXSxh''@;'; put 'put ''dHRyczp5dWUsbmdDb250ZW50U2VsZWN0b3JzOm5hLGRlY2xzOjQsdmFyczo0LGNvbnN0czpbWzMsIm5nU3dpdGNoIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1pbmxpbmUiXSxbMSwic3Bpbm5lciIsInNwaW5uZXItaW5saW5lIiwic3Bpbm5lci1jaGVjayJd''@;'; put 'put ''XSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKCksQjAoMCwwKSxybigxLHd1ZSwyLDEsInNwYW4iLDEpLHJuKDIsYnVlLDIsMSwic3BhbiIsMSkscm4oMyxfdWUsMiwxLCJzcGFuIiwxKSxQMCgpKSwyJmgmJihUdCgibmdTd2l0Y2giLHYuc3RhdGUpLHV0KDEpLFR0KCJuZ1N3aXRj''@;'; put 'put ''aENhc2UiLHYuYnV0dG9uU3RhdGUuTE9BRElORyksdXQoMSksVHQoIm5nU3dpdGNoQ2FzZSIsdi5idXR0b25TdGF0ZS5TVUNDRVNTKSx1dCgxKSxUdCgibmdTd2l0Y2hDYXNlIix2LmJ1dHRvblN0YXRlLkRFRkFVTFQpKX0sZGVwZW5kZW5jaWVzOltKZCxpcF0sZW5jYXBzdWxhdGlvbjoyLGRh''@;'; put 'put ''dGE6e2FuaW1hdGlvbjpbJGgoImRlZmF1bHRCdXR0b24iLFtidSgiOmVudGVyIixbeWwoe29wYWNpdHk6MH0pLERjKCIyMDBtcyAxMDBtcyBlYXNlLWluIix5bCh7b3BhY2l0eToxfSkpXSksYnUoIjpsZWF2ZSIsW3lsKHtvcGFjaXR5OjB9KV0pXSksJGgoInNwaW5uZXIiLFtidSgiOmVudGVy''@;'; put 'put ''IixbeWwoe29wYWNpdHk6MH0pLERjKCIyMDBtcyAxMDBtcyBlYXNlLWluIix5bCh7b3BhY2l0eToxfSkpXSksYnUoIjpsZWF2ZSIsW3lsKHtvcGFjaXR5OjF9KSxEYygiMTAwbXMgZWFzZS1vdXQiLHlsKHtvcGFjaXR5OjB9KSldKV0pLCRoKCJ2YWxpZGF0ZWQiLFtidSgiOmVudGVyIixbRGMo''@;'; put 'put ''IjYwMG1zIixhMmUoW3lsKHt0cmFuc2Zvcm06InNjYWxlKDAsMCkiLG9mZnNldDowfSkseWwoe29wYWNpdHk6MSxvZmZzZXQ6LjJ9KSx5bCh7dHJhbnNmb3JtOiJzY2FsZSgxLjIsMS4yKSIsb2Zmc2V0Oi40fSkseWwoe3RyYW5zZm9ybToic2NhbGUoLjksLjkpIixvZmZzZXQ6LjZ9KSx5bCh7''@;'; put 'put ''dHJhbnNmb3JtOiJzY2FsZSgxLDEpIixvZmZzZXQ6MX0pXSkpXSksYnUoIjpsZWF2ZSIsW3lsKHtvcGFjaXR5OjF9KSxEYygiMTAwbXMgZWFzZS1vdXQiLHlsKHtvcGFjaXR5OjB9KSldKV0pXX19KSxkfSkoKSxrPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbiho''@;'; put 'put ''KXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W1tiYV1dfSksZH0pKCksTT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7aHMuYWRkSWNvbnMoZlYpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0''@;'; put 'put ''dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHtpbXBvcnRzOltrLG1dfSksZH0pKCksRD0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6''@;'; put 'put ''ZCxzZWxlY3RvcnM6W1sibmctY29tcG9uZW50Il1dLGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7fSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxSPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1''@;'; put 'put ''MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe30pLGR9KSgpLEc9MCxxPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9pZD0iY2xyLWZvcm0tY29udHJvbC0iKyArK0csdGhpcy5faWRDaGFuZ2U9bmV3IGZzKHRoaXMuX2lkKX1nZXQgaWQoKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5faWR9c2V0IGlkKGgpe3RoaXMuX2lkPWgsdGhpcy5faWRDaGFuZ2UubmV4dChoKX1nZXQgaWRDaGFuZ2UoKXtyZXR1cm4gdGhpcy5faWRDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9''@;'; put 'put ''QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLHBlPTAsZ2U9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2lkPSJjbHItZm9ybS1jb250YWluZXItIisgKytwZSx0aGlzLl9pZENoYW5nZT1uZXcgZnModGhpcy5faWQpfWdldCBpZCgpe3JldHVybiB0aGlz''@;'; put 'put ''Ll9pZH1zZXQgaWQoaCl7dGhpcy5faWQ9aCx0aGlzLl9pZENoYW5nZS5uZXh0KGgpfWdldCBpZENoYW5nZSgpe3JldHVybiB0aGlzLl9pZENoYW5nZS5hc09ic2VydmFibGUoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1B''@;'; put 'put ''aSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7bGV0IE9lPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2KXt0aGlzLmNvbnRyb2xJZFNlcnZpY2U9aCx0aGlzLmNvbnRhaW5lcklkU2VydmljZT12LHRoaXMuY29udHJvbElkU3VmZml4PSJhYnN0cmFjdCJ9Z2V0IGlk''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMuY29udGFpbmVySWRTZXJ2aWNlP2Ake3RoaXMuY29udGFpbmVySWRTZXJ2aWNlLmlkfS0ke3RoaXMuY29udHJvbElkU3VmZml4fWA6dGhpcy5jb250cm9sSWRTZXJ2aWNlP2Ake3RoaXMuY29udHJvbElkU2VydmljZS5pZH0tJHt0aGlzLmNvbnRyb2xJZFN1ZmZpeH1g''@;'; put 'put ''Om51bGx9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHEsOCksS3QoZ2UsOCkpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkfSksZH0pKCksTGU9KCgpPT57Y2xhc3MgZCBleHRlbmRzIE9le2NvbnN0cnVjdG9yKGgsdil7c3VwZXIoaCx2KSx0aGlz''@;'; put 'put ''LmNvbnRyb2xJZFNlcnZpY2U9aCx0aGlzLmNvbnRhaW5lcklkU2VydmljZT12LHRoaXMuY29udHJvbElkU3VmZml4PSJlcnJvciJ9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHEsOCksS3QoZ2UsOCkpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpk''@;'; put 'put ''LHNlbGVjdG9yczpbWyJjbHItY29udHJvbC1lcnJvciJdXSxob3N0VmFyczozLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmKEdpKCJpZCIsdi5pZCksRmkoImNsci1zdWJ0ZXh0IiwhMCkpfSxmZWF0dXJlczpbRG9dLG5nQ29udGVudFNlbGVjdG9yczpuYSxkZWNsczoxLHZhcnM6''@;'; put 'put ''MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKCksTmkoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxSZT0oKCk9PntjbGFzcyBkIGV4dGVuZHMgT2V7Y29uc3RydWN0b3IoaCx2KXtzdXBlcihoLHYpLHRoaXMuY29udHJvbElkU2VydmljZT1oLHRoaXMuY29udGFpbmVySWRT''@;'; put 'put ''ZXJ2aWNlPXYsdGhpcy5jb250cm9sSWRTdWZmaXg9ImhlbHBlciJ9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHEsOCksS3QoZ2UsOCkpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItY29udHJvbC1oZWxwZXIiXV0s''@;'; put 'put ''aG9zdFZhcnM6Myxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJihHaSgiaWQiLHYuaWQpLEZpKCJjbHItc3VidGV4dCIsITApKX0sZmVhdHVyZXM6W0RvXSxuZ0NvbnRlbnRTZWxlY3RvcnM6bmEsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihLMCgp''@;'; put 'put ''LE5pKDApKX0sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksSGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2NvbnRyb2xDaGFuZ2VzPW5ldyAkZSx0aGlzLl9oZWxwZXJzPW5ldyAkZX1nZXQgY29udHJvbENoYW5nZXMoKXtyZXR1cm4gdGhpcy5fY29udHJvbENoYW5nZXMuYXNP''@;'; put 'put ''YnNlcnZhYmxlKCl9c2V0Q29udHJvbChoKXt0aGlzLl9jb250cm9sQ2hhbmdlcy5uZXh0KGgpfWdldCBoZWxwZXJzQ2hhbmdlKCl7cmV0dXJuIHRoaXMuX2hlbHBlcnMuYXNPYnNlcnZhYmxlKCl9c2V0SGVscGVycyhoKXt0aGlzLl9oZWxwZXJzLm5leHQoaCl9fXJldHVybiBkLlx1MDI3NWZh''@;'; put 'put ''Yz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpO3ZhciBWZT0oKCk9PihmdW5jdGlvbihkKXtkLk5PTkU9Ik5PTkUiLGQuVkFMSUQ9IlZBTElEIixkLklOVkFMSUQ9IklOVkFMSUQifShWZXx8''@;'; put 'put ''KFZlPXt9KSksVmUpKSgpO2xldCBxZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMubmdDb250cm9sU2VydmljZT1oLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLl9zdGF0dXNDaGFuZ2VzPW5ldyBmcyhWZS5OT05FKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm5n''@;'; put 'put ''Q29udHJvbFNlcnZpY2UuY29udHJvbENoYW5nZXMuc3Vic2NyaWJlKHY9Pnt2JiYodGhpcy5jb250cm9sPXYsdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5jb250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCgpPT57dGhpcy50cmlnZ2VyU3RhdHVzQ2hhbmdlKCl9KSkpfSkpfWdl''@;'; put 'put ''dCBzdGF0dXNDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX3N0YXR1c0NoYW5nZXMuYXNPYnNlcnZhYmxlKCl9dHJpZ2dlclN0YXR1c0NoYW5nZSgpe2lmKHRoaXMuY29udHJvbCl7Y29uc3QgaD1WZVt0aGlzLmNvbnRyb2wuc3RhdHVzXTt0aGlzLl9zdGF0dXNDaGFuZ2VzLm5leHQodGhpcy5jb250''@;'; put 'put ''cm9sLnRvdWNoZWQmJlsiVkFMSUQiLCJJTlZBTElEIl0uaW5jbHVkZXMoaCk/aDpWZS5OT05FKX19bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJlKCkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxk''@;'; put 'put ''KShDaShIZSkpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpO3ZhciBydD0oKCk9PihmdW5jdGlvbihkKXtkLlZFUlRJQ0FMPSJ2ZXJ0aWNhbCIsZC5IT1JJWk9OVEFMPSJob3Jpem9udGFsIixkLkNPTVBBQ1Q9ImNvbXBhY3QifShydHx8KHJ0''@;'; put 'put ''PXt9KSkscnQpKSgpO2xldCBXZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5taW5MYWJlbFNpemU9MSx0aGlzLm1heExhYmVsU2l6ZT0xMix0aGlzLmxheW91dD1ydC5IT1JJWk9OVEFMLHRoaXMubGF5b3V0VmFsdWVzPU9iamVjdC5rZXlzKHJ0KS5tYXAoaD0+cnRbaF0pLHRo''@;'; put 'put ''aXMuX2xhYmVsU2l6ZT0yfXNldCBsYWJlbFNpemUoaCl7dGhpcy5sYWJlbFNpemVJc1ZhbGlkKGgpJiYodGhpcy5fbGFiZWxTaXplPWgpfWdldCBsYWJlbFNpemUoKXtyZXR1cm4gdGhpcy5fbGFiZWxTaXplfWlzVmVydGljYWwoKXtyZXR1cm4gdGhpcy5sYXlvdXQ9PT1ydC5WRVJUSUNBTH1p''@;'; put 'put ''c0hvcml6b250YWwoKXtyZXR1cm4gdGhpcy5sYXlvdXQ9PT1ydC5IT1JJWk9OVEFMfWlzQ29tcGFjdCgpe3JldHVybiB0aGlzLmxheW91dD09PXJ0LkNPTVBBQ1R9Z2V0IGxheW91dENsYXNzKCl7cmV0dXJuYGNsci1mb3JtLSR7dGhpcy5sYXlvdXR9YH1pc1ZhbGlkKGgpe3JldHVybiB0aGlz''@;'; put 'put ''LmxheW91dFZhbHVlcy5pbmRleE9mKGgpPi0xfWxhYmVsU2l6ZUlzVmFsaWQoaCl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoaCkmJmg+PXRoaXMubWluTGFiZWxTaXplJiZoPD10aGlzLm1heExhYmVsU2l6ZX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8''@;'; put 'put ''ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksYXQ9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEkpe3RoaXMuY29udHJvbElkU2VydmljZT1oLHRoaXMubGF5b3V0U2VydmljZT12LHRoaXMubmdDb250cm9sU2VydmljZT15''@;'; put 'put ''LHRoaXMucmVuZGVyZXI9Qyx0aGlzLmVsPUksdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuZW5hYmxlR3JpZD0hMH1nZXQgbGFiZWxUZXh0KCl7cmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudCYmdGhpcy5lbC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50fW5nT25Jbml0KCl7KHRoaXMu''@;'; put 'put ''Y29udHJvbElkU2VydmljZXx8dGhpcy5uZ0NvbnRyb2xTZXJ2aWNlKSYmdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImNsci1jb250cm9sLWxhYmVsIiksdGhpcy5lbmFibGVHcmlkJiZ0aGlzLmxheW91dFNlcnZpY2UmJiF0aGlzLmxheW91dFNlcnZpY2Uu''@;'; put 'put ''aXNWZXJ0aWNhbCgpJiZ0aGlzLmVsLm5hdGl2ZUVsZW1lbnQmJnRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc05hbWUuaW5kZXhPZigiY2xyLWNvbCIpPDAmJih0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwiY2xyLWNvbC0xMiIpLHRoaXMucmVuZGVyZXIu''@;'; put 'put ''YWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LGBjbHItY29sLW1kLSR7dGhpcy5sYXlvdXRTZXJ2aWNlLmxhYmVsU2l6ZX1gKSksdGhpcy5jb250cm9sSWRTZXJ2aWNlJiYhdGhpcy5mb3JBdHRyJiZ0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmNvbnRyb2xJZFNlcnZpY2UuaWRD''@;'; put 'put ''aGFuZ2Uuc3Vic2NyaWJlKGg9PnRoaXMuZm9yQXR0cj1oKSl9ZGlzYWJsZUdyaWQoKXt0aGlzLmVuYWJsZUdyaWQ9ITF9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJlKCkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0''@;'; put 'put ''dXJuIG5ldyhofHxkKShLdChxLDgpLEt0KFdlLDgpLEt0KEhlLDgpLEt0KEdhKSxLdChibykpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJsYWJlbCJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmR2koImZvciIsdi5mb3JBdHRyKX0s''@;'; put 'put ''aW5wdXRzOntmb3JBdHRyOlsiZm9yIiwiZm9yQXR0ciJdfX0pLGR9KSgpLFN0PSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBPZXtjb25zdHJ1Y3RvcihoLHYpe3N1cGVyKGgsdiksdGhpcy5jb250cm9sSWRTZXJ2aWNlPWgsdGhpcy5jb250YWluZXJJZFNlcnZpY2U9dix0aGlzLmNvbnRyb2xJZFN1''@;'; put 'put ''ZmZpeD0ic3VjY2VzcyJ9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHEsOCksS3QoZ2UsOCkpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItY29udHJvbC1zdWNjZXNzIl1dLGhvc3RWYXJzOjMsaG9zdEJpbmRpbmdz''@;'; put 'put ''OmZ1bmN0aW9uKGgsdil7MiZoJiYoR2koImlkIix2LmlkKSxGaSgiY2xyLXN1YnRleHQiLCEwKSl9LGZlYXR1cmVzOltEb10sbmdDb250ZW50U2VsZWN0b3JzOm5hLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoSzAoKSxOaSgwKSl9LGVuY2Fwc3VsYXRpb246''@;'; put 'put ''Mn0pLGR9KSgpLEV0PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5sYXlvdXRTZXJ2aWNlPWgsdGhpcy5jbGFzc05hbWU9IiJ9Y29udHJvbENsYXNzKGg9VmUuTk9ORSx2PSExLHk9IiIpe2NvbnN0IEM9W3RoaXMuY2xhc3NOYW1lLHldO3N3aXRjaChoKXtjYXNlIFZlLlZBTElE''@;'; put 'put ''OkMucHVzaCgiY2xyLXN1Y2Nlc3MiKTticmVhaztjYXNlIFZlLklOVkFMSUQ6Qy5wdXNoKCJjbHItZXJyb3IiKX1yZXR1cm4gdiYmdGhpcy5sYXlvdXRTZXJ2aWNlJiYtMT09PXRoaXMuY2xhc3NOYW1lLmluZGV4T2YoImNsci1jb2wiKSYmQy5wdXNoKGBjbHItY29sLW1kLSR7dGhpcy5sYXlv''@;'; put 'put ''dXRTZXJ2aWNlLm1heExhYmVsU2l6ZS10aGlzLmxheW91dFNlcnZpY2UubGFiZWxTaXplfSBjbHItY29sLTEyYCksQy5qb2luKCIgIikudHJpbSgpfWluaXRDb250cm9sQ2xhc3MoaCx2KXt2JiZ2LmNsYXNzTmFtZSYmKHRoaXMuY2xhc3NOYW1lPXYuY2xhc3NOYW1lLHYuY2xhc3NOYW1lLnNw''@;'; put 'put ''bGl0KCIgIikuZm9yRWFjaChDPT57Qy5zdGFydHNXaXRoKCJjbHItY29sIikmJmgucmVtb3ZlQ2xhc3ModixDKX0pKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoQ2koV2UsOCkpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1''@;'; put 'put ''MDI3NWZhY30pLGR9KSgpLFp0PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5pZkNvbnRyb2xTdGF0ZVNlcnZpY2U9aCx0aGlzLmxheW91dFNlcnZpY2U9dix0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2U9eSx0aGlzLm5nQ29udHJvbFNlcnZpY2U9Qyx0aGlzLnN1YnNj''@;'; put 'put ''cmlwdGlvbnM9W10sdGhpcy5fZHluYW1pYz0hMSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmlmQ29udHJvbFN0YXRlU2VydmljZS5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShJPT57dGhpcy5zdGF0ZT1JLHRoaXMudXBkYXRlSGVscGVycygpfSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5w''@;'; put 'put ''dXNoKHRoaXMubmdDb250cm9sU2VydmljZS5jb250cm9sQ2hhbmdlcy5zdWJzY3JpYmUoST0+e3RoaXMuY29udHJvbD1JfSkpfWdldCBzaG93SGVscGVyKCl7cmV0dXJuISF0aGlzLmNvbnRyb2xIZWxwZXJDb21wb25lbnQmJighIXRoaXMuY29udHJvbEhlbHBlckNvbXBvbmVudCYmdGhpcy5z''@;'; put 'put ''dGF0ZT09PVZlLk5PTkV8fCF0aGlzLmNvbnRyb2xTdWNjZXNzQ29tcG9uZW50JiZ0aGlzLnN0YXRlPT09VmUuVkFMSUR8fCF0aGlzLmNvbnRyb2xFcnJvckNvbXBvbmVudCYmdGhpcy5zdGF0ZT09PVZlLklOVkFMSUQpfWdldCBzaG93VmFsaWQoKXtyZXR1cm4gdGhpcy5zdGF0ZT09PVZlLlZB''@;'; put 'put ''TElEJiYhIXRoaXMuY29udHJvbFN1Y2Nlc3NDb21wb25lbnR9Z2V0IHNob3dJbnZhbGlkKCl7cmV0dXJuIHRoaXMuc3RhdGU9PT1WZS5JTlZBTElEJiYhIXRoaXMuY29udHJvbEVycm9yQ29tcG9uZW50fW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMudXBkYXRlSGVscGVycygpfW5nT25EZXN0''@;'; put 'put ''cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX1jb250cm9sQ2xhc3MoKXtyZXR1cm4gdGhpcy5jb250cm9sQ2xhc3NTZXJ2aWNlLmNvbnRyb2xDbGFzcyh0aGlzLmNvbnRyb2xTdWNjZXNzQ29tcG9uZW50fHx0aGlzLnN0YXRlIT09VmUuVkFMSUQ/''@;'; put 'put ''dGhpcy5zdGF0ZTpWZS5OT05FLHRoaXMuYWRkR3JpZCgpKX1hZGRHcmlkKCl7cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZSYmIXRoaXMubGF5b3V0U2VydmljZS5pc1ZlcnRpY2FsKCl9dXBkYXRlSGVscGVycygpe3RoaXMubmdDb250cm9sU2VydmljZSYmdGhpcy5uZ0NvbnRyb2xTZXJ2aWNl''@;'; put 'put ''LnNldEhlbHBlcnMoe3Nob3c6dGhpcy5zaG93SW52YWxpZHx8dGhpcy5zaG93SGVscGVyfHx0aGlzLnNob3dWYWxpZCxzaG93SW52YWxpZDp0aGlzLnNob3dJbnZhbGlkLHNob3dIZWxwZXI6dGhpcy5zaG93SGVscGVyLHNob3dWYWxpZDp0aGlzLnNob3dWYWxpZH0pfX1yZXR1cm4gZC5cdTAy''@;'; put 'put ''NzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChxZSksS3QoV2UsOCksS3QoRXQpLEt0KEhlKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmKHhvKHksYXQsNSkseG8oeSxTdCw1KSx4byh5LExlLDUpLHhv''@;'; put 'put ''KHksUmUsNSkpLDImaCl7bGV0IEM7SGkoQz0kaSgpKSYmKHYubGFiZWw9Qy5maXJzdCksSGkoQz0kaSgpKSYmKHYuY29udHJvbFN1Y2Nlc3NDb21wb25lbnQ9Qy5maXJzdCksSGkoQz0kaSgpKSYmKHYuY29udHJvbEVycm9yQ29tcG9uZW50PUMuZmlyc3QpLEhpKEM9JGkoKSkmJih2LmNvbnRy''@;'; put 'put ''b2xIZWxwZXJDb21wb25lbnQ9Qy5maXJzdCl9fX0pLGR9KSgpO2NsYXNzIGJ0e2NvbnN0cnVjdG9yKGcsaCx2PTApe2lmKHRoaXMuaW5qZWN0b3I9aC5pbmplY3RvciwhdGhpcy5pbmplY3Rvci5nZXQoZyxudWxsKSl7Y29uc3QgeT10aGlzLmluamVjdG9yLmdldChTZCksQz10aGlzLmluamVj''@;'; put 'put ''dG9yLmdldChibyk7aC5jcmVhdGVDb21wb25lbnQoeS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShEKSk7Y29uc3QgST15LnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGcpLFo9W107Wlt2XT1bQy5uYXRpdmVFbGVtZW50XTtjb25zdCB1ZT1oLmNyZWF0ZUNvbXBvbmVudChJLHZvaWQgMCx2b2lk''@;'; put 'put ''IDAsWik7aC5yZW1vdmUoMCksdWUuaW5zdGFuY2UuX2R5bmFtaWM9ITAsdGhpcy5pbmplY3Rvcj11ZS5pbmplY3Rvcn19Z2V0KGcsaCl7cmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KGcsaCl9fWxldCBhbj0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fdG91Y2hlZD1uZXcgJGV9''@;'; put 'put ''Z2V0IHRvdWNoZWRDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fdG91Y2hlZC5hc09ic2VydmFibGUoKX1tYXJrQXNUb3VjaGVkKCl7dGhpcy5fdG91Y2hlZC5uZXh0KCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2Vu''@;'; put 'put ''OmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLFNuPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLFope3RoaXMudmNyPWgsdGhpcy53cmFwcGVyVHlwZT12LHRoaXMubmdDb250cm9sPUMsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuaW5kZXg9MCx0aGlzLnJlbmRl''@;'; put 'put ''cmVyPUksdGhpcy5lbD1aO3RyeXt0aGlzLm5nQ29udHJvbFNlcnZpY2U9eS5nZXQoSGUpLHRoaXMuaWZDb250cm9sU3RhdGVTZXJ2aWNlPXkuZ2V0KHFlKSx0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2U9eS5nZXQoRXQpLHRoaXMubWFya0NvbnRyb2xTZXJ2aWNlPXkuZ2V0KGFuKX1jYXRjaCh1''@;'; put 'put ''ZSl7fXRoaXMuY29udHJvbENsYXNzU2VydmljZSYmdGhpcy5jb250cm9sQ2xhc3NTZXJ2aWNlLmluaXRDb250cm9sQ2xhc3MoSSxaLm5hdGl2ZUVsZW1lbnQpLHRoaXMubWFya0NvbnRyb2xTZXJ2aWNlJiZ0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm1hcmtDb250cm9sU2VydmljZS50''@;'; put 'put ''b3VjaGVkQ2hhbmdlLnN1YnNjcmliZSgoKT0+e3RoaXMubWFya0FzVG91Y2hlZCgpfSkpLHRoaXMubmdDb250cm9sU2VydmljZSYmdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5uZ0NvbnRyb2xTZXJ2aWNlLmhlbHBlcnNDaGFuZ2Uuc3Vic2NyaWJlKHVlPT57dGhpcy5zZXRBcmlhRGVz''@;'; put 'put ''Y3JpYmVkQnkodWUpfSkpfWdldCBpZCgpe3JldHVybiB0aGlzLl9pZH1zZXQgaWQoaCl7dGhpcy5faWQ9aCx0aGlzLmNvbnRyb2xJZFNlcnZpY2UmJih0aGlzLmNvbnRyb2xJZFNlcnZpY2UuaWQ9aCl9dHJpZ2dlclZhbGlkYXRpb24oKXt0aGlzLmlmQ29udHJvbFN0YXRlU2VydmljZSYmKHRo''@;'; put 'put ''aXMubmdDb250cm9sJiYhdGhpcy5uZ0NvbnRyb2wudG91Y2hlZCYmdGhpcy5tYXJrQXNUb3VjaGVkKCksdGhpcy5pZkNvbnRyb2xTdGF0ZVNlcnZpY2UudHJpZ2dlclN0YXR1c0NoYW5nZSgpKX1tYXJrQXNUb3VjaGVkKCl7dGhpcy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCks''@;'; put 'put ''dGhpcy5uZ0NvbnRyb2wuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCl9Z2V0UHJvdmlkZXJGcm9tQ29udGFpbmVyKGgsdil7dHJ5e3JldHVybiB0aGlzLl9jb250YWluZXJJbmplY3Rvci5nZXQoaCx2KX1jYXRjaCh5KXtyZXR1cm4gdn19bmdPbkluaXQoKXt0aGlzLl9jb250YWlu''@;'; put 'put ''ZXJJbmplY3Rvcj1uZXcgYnQodGhpcy53cmFwcGVyVHlwZSx0aGlzLnZjcix0aGlzLmluZGV4KSx0aGlzLmNvbnRyb2xJZFNlcnZpY2U9dGhpcy5fY29udGFpbmVySW5qZWN0b3IuZ2V0KHEpO3RyeXt0aGlzLmNvbnRhaW5lcklkU2VydmljZT10aGlzLl9jb250YWluZXJJbmplY3Rvci5nZXQo''@;'; put 'put ''Z2UpfWNhdGNoKGgpe310aGlzLl9pZD90aGlzLmNvbnRyb2xJZFNlcnZpY2UuaWQ9dGhpcy5faWQ6dGhpcy5faWQ9dGhpcy5jb250cm9sSWRTZXJ2aWNlLmlkLHRoaXMubmdDb250cm9sU2VydmljZSYmdGhpcy5uZ0NvbnRyb2xTZXJ2aWNlLnNldENvbnRyb2wodGhpcy5uZ0NvbnRyb2wpfW5n''@;'; put 'put ''T25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX1zZXRBcmlhRGVzY3JpYmVkQnkoaCl7aWYoaC5zaG93KXtjb25zdCB2PXRoaXMuZ2V0QXJpYURlc2NyaWJlZEJ5SWQoaCk7aWYobnVsbCE9PXYpcmV0dXJuIHZvaWQgdGhpcy5yZW5kZXJl''@;'; put 'put ''ci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJhcmlhLWRlc2NyaWJlZGJ5Iix2KX10aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImFyaWEtZGVzY3JpYmVkYnkiKX1nZXRBcmlhRGVzY3JpYmVkQnlJZChoKXtsZXQgdj0iaGVs''@;'; put 'put ''cGVyIjtyZXR1cm4gaC5zaG93SW52YWxpZD92PSJlcnJvciI6aC5zaG93VmFsaWQmJih2PSJzdWNjZXNzIiksdGhpcy5jb250YWluZXJJZFNlcnZpY2U/dGhpcy5jb250YWluZXJJZFNlcnZpY2UuaWQuY29uY2F0KCItIix2KTp0aGlzLmNvbnRyb2xJZFNlcnZpY2U/dGhpcy5jb250cm9sSWRT''@;'; put 'put ''ZXJ2aWNlLmlkLmNvbmNhdCgiLSIsdik6bnVsbH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoVWkpLEt0KFdjKSxLdChTcyksS3QoRGYpLEt0KEdhKSxLdChibykpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLGhvc3RWYXJzOjEsaG9zdEJpbmRp''@;'; put 'put ''bmdzOmZ1bmN0aW9uKGgsdil7MSZoJiZHbigiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gdi50cmlnZ2VyVmFsaWRhdGlvbigpfSksMiZoJiZCMygiaWQiLHYuaWQpfSxpbnB1dHM6e2lkOiJpZCJ9fSksZH0pKCksdXI9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMubGF5b3V0''@;'; put 'put ''U2VydmljZT1oLHRoaXMubWFya0NvbnRyb2xTZXJ2aWNlPXZ9c2V0IGxhYmVsU2l6ZShoKXtjb25zdCB2PXBhcnNlSW50KGgsMTApfHwyO3RoaXMubGF5b3V0U2VydmljZS5sYWJlbFNpemU9dn1tYXJrQXNUb3VjaGVkKCl7dGhpcy5tYXJrQ29udHJvbFNlcnZpY2UubWFya0FzVG91Y2hlZCgp''@;'; put 'put ''fW9uRm9ybVN1Ym1pdCgpe3RoaXMubWFya0FzVG91Y2hlZCgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChXZSksS3QoYW4pKX0sZC5cdTAyNzVkaXI9V2koe3R5cGU6ZCxzZWxlY3RvcnM6W1siIiwiY2xyRm9ybSIsIiJdXSxjb250ZW50UXVl''@;'; put 'put ''cmllczpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZ4byh5LGF0LDUpLDImaCl7bGV0IEM7SGkoQz0kaSgpKSYmKHYubGFiZWxzPUMpfX0saG9zdFZhcnM6Nixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJkduKCJzdWJtaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHYub25Gb3JtU3VibWl0''@;'; put 'put ''KCl9KSwyJmgmJkZpKCJjbHItZm9ybSIsITApKCJjbHItZm9ybS1ob3Jpem9udGFsIix2LmxheW91dFNlcnZpY2UuaXNIb3Jpem9udGFsKCkpKCJjbHItZm9ybS1jb21wYWN0Iix2LmxheW91dFNlcnZpY2UuaXNDb21wYWN0KCkpfSxpbnB1dHM6e2xhYmVsU2l6ZTpbImNsckxhYmVsU2l6ZSIs''@;'; put 'put ''ImxhYmVsU2l6ZSJdfSxmZWF0dXJlczpbaG8oW1dlLGFuXSldfSksZH0pKCksSnI9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe2hzLmFkZEljb25zKEtoLFRmKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBl''@;'; put 'put ''OmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbW2JhLERzXV19KSxkfSkoKTtjb25zdCBMcj1uZXcgemUoIklTX1RPR0dMRSIpLFZpPXtwcm92aWRlOkxyLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gbDAoKXtyZXR1cm4gbmV3IGZzKCExKX19O2xldCBPaT0oKCk9PntjbGFzcyBke2NvbnN0cnVj''@;'; put 'put ''dG9yKGgpe3RoaXMuX2R5bmFtaWM9ITEsdGhpcy50b2dnbGU9ITEsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGguc3Vic2NyaWJlKHY9Pnt0aGlzLnRvZ2dsZT12fSkpfW5nT25Jbml0KCl7dGhpcy5sYWJlbCYmdGhpcy5sYWJlbC5kaXNhYmxlR3JpZCgp''@;'; put 'put ''fW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoTHIpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWNoZWNr''@;'; put 'put ''Ym94LXdyYXBwZXIiXSxbImNsci10b2dnbGUtd3JhcHBlciJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZ4byh5LGF0LDcpLDImaCl7bGV0IEM7SGkoQz0kaSgpKSYmKHYubGFiZWw9Qy5maXJzdCl9fSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbiho''@;'; put 'put ''LHYpezImaCYmRmkoImNsci1jaGVja2JveC13cmFwcGVyIiwhdi50b2dnbGUpKCJjbHItdG9nZ2xlLXdyYXBwZXIiLHYudG9nZ2xlKX0sZmVhdHVyZXM6W2hvKFtxLFZpXSldLG5nQ29udGVudFNlbGVjdG9yczpTdWUsZGVjbHM6Myx2YXJzOjEsY29uc3RzOltbNCwibmdJZiJdXSx0ZW1wbGF0''@;'; put 'put ''ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKGt1ZSksTmkoMCksTmkoMSwxKSxybigyLEN1ZSwxLDAsImxhYmVsIiwwKSksMiZoJiYodXQoMiksVHQoIm5nSWYiLCF2LmxhYmVsKSl9LGRlcGVuZGVuY2llczpbTm8sYXRdLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLFJvPSgoKT0+e2NsYXNzIGQg''@;'; put 'put ''ZXh0ZW5kcyBTbntjb25zdHJ1Y3RvcihoLHYseSxDLEksWil7c3VwZXIoaCxPaSx2LHksQyxJKSx0aGlzLnRvZ2dsZT1afW5nT25Jbml0KCl7c3VwZXIubmdPbkluaXQoKTtjb25zdCBoPXRoaXMuZ2V0UHJvdmlkZXJGcm9tQ29udGFpbmVyKExyLG51bGwpO2gmJm51bGwhPT10aGlzLnRvZ2ds''@;'; put 'put ''ZSYmaC5uZXh0KCEwKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoVWkpLEt0KFNzKSxLdChEZiwxMCksS3QoR2EpLEt0KGJvKSxnMygiY2xyVG9nZ2xlIikpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJDaGVj''@;'; put 'put ''a2JveCIsIiJdLFsiIiwiY2xyVG9nZ2xlIiwiIl1dLGZlYXR1cmVzOltEb119KSxkfSkoKSxsbz0oKCk9PntjbGFzcyBkIGV4dGVuZHMgWnR7Y29uc3RydWN0b3IoaCx2LHksQyl7c3VwZXIoQyxoLHYseSksdGhpcy5sYXlvdXRTZXJ2aWNlPWgsdGhpcy5jb250cm9sQ2xhc3NTZXJ2aWNlPXYs''@;'; put 'put ''dGhpcy5uZ0NvbnRyb2xTZXJ2aWNlPXksdGhpcy5pZkNvbnRyb2xTdGF0ZVNlcnZpY2U9Qyx0aGlzLmlubGluZT0hMX1zZXQgY2xySW5saW5lKGgpe3RoaXMuaW5saW5lPSJzdHJpbmciPT10eXBlb2YgaD8iZmFsc2UiIT09aDohIWh9Z2V0IGNscklubGluZSgpe3JldHVybiB0aGlzLmlubGlu''@;'; put 'put ''ZX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLnNldEFyaWFSb2xlcygpfXNldEFyaWFSb2xlcygpe3RoaXMucm9sZT10aGlzLmNoZWNrYm94ZXMubGVuZ3RoPyJncm91cCI6bnVsbH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoV2UsOCksS3Qo''@;'; put 'put ''RXQpLEt0KEhlKSxLdChxZSkpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItY2hlY2tib3gtY29udGFpbmVyIl0sWyJjbHItdG9nZ2xlLWNvbnRhaW5lciJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZ4byh5LFJvLDUpLDImaCl7bGV0''@;'; put 'put ''IEM7SGkoQz0kaSgpKSYmKHYuY2hlY2tib3hlcz1DKX19LGhvc3RWYXJzOjcsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiYoR2koInJvbGUiLHYucm9sZSksRmkoImNsci1mb3JtLWNvbnRyb2wiLCEwKSgiY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCIsbnVsbD09di5jb250cm9s''@;'; put 'put ''P251bGw6di5jb250cm9sLmRpc2FibGVkKSgiY2xyLXJvdyIsdi5hZGRHcmlkKCkpKX0saW5wdXRzOntjbHJJbmxpbmU6ImNscklubGluZSJ9LGZlYXR1cmVzOltobyhbcWUsSGUsRXQsZ2VdKSxEb10sbmdDb250ZW50U2VsZWN0b3JzOk91ZSxkZWNsczoxMCx2YXJzOjksY29uc3RzOltbNCwi''@;'; put 'put ''bmdJZiJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiLDMsIm5nQ2xhc3MiXSxbMSwiY2xyLXN1YnRleHQtd3JhcHBlciJdLFsiY2xhc3MiLCJjbHItdmFsaWRhdGUtaWNvbiIsInN0YXR1cyIsImRhbmdlciIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwiYXJpYS1oaWRkZW4iLCJ0''@;'; put 'put ''cnVlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic3RhdHVzIiwic3VjY2VzcyIsInNoYXBlIiwiY2hlY2stY2lyY2xlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJzdGF0dXMiLCJkYW5nZXIiLCJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIs''@;'; put 'put ''ImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXSxbInN0YXR1cyIsInN1Y2Nlc3MiLCJzaGFwZSIsImNoZWNrLWNpcmNsZSIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihLMChM''@;'; put 'put ''dWUpLE5pKDApLHJuKDEsTXVlLDEsMCwibGFiZWwiLDApLG50KDIsImRpdiIsMSksTmkoMywxKSxudCg0LCJkaXYiLDIpLHJuKDUsRXVlLDEsMCwibmctY29udGVudCIsMCkscm4oNix4dWUsMSwwLCJjZHMtaWNvbiIsMykscm4oNyxUdWUsMSwwLCJjZHMtaWNvbiIsNCkscm4oOCxJdWUsMSww''@;'; put 'put ''LCJuZy1jb250ZW50IiwwKSxybig5LER1ZSwxLDAsIm5nLWNvbnRlbnQiLDApLG90KCkoKSksMiZoJiYodXQoMSksVHQoIm5nSWYiLCF2LmxhYmVsJiZ2LmFkZEdyaWQoKSksdXQoMSksRmkoImNsci1jb250cm9sLWlubGluZSIsdi5jbHJJbmxpbmUpLFR0KCJuZ0NsYXNzIix2LmNvbnRyb2xD''@;'; put 'put ''bGFzcygpKSx1dCgzKSxUdCgibmdJZiIsdi5zaG93SGVscGVyKSx1dCgxKSxUdCgibmdJZiIsdi5zaG93SW52YWxpZCksdXQoMSksVHQoIm5nSWYiLHYuc2hvd1ZhbGlkKSx1dCgxKSxUdCgibmdJZiIsdi5zaG93SW52YWxpZCksdXQoMSksVHQoIm5nSWYiLHYuc2hvd1ZhbGlkKSl9LGRlcGVu''@;'; put 'put ''ZGVuY2llczpbTm8sYXQsbGMsWm9dLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLFRhPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtocy5hZGRJY29ucyhLaCxUZil9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlw''@;'; put 'put ''ZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W1tiYSxEcyxKcixSXSxKcl19KSxkfSkoKTtmdW5jdGlvbiBaYShkKXtyZXR1cm4gbnVsbCE9PWQmJigic3RyaW5nIj09dHlwZW9mIGQ/ZC5sZW5ndGg+PTA6ImJvb2xlYW4iPT10eXBlb2YgZCYmZCl9bGV0IGdhPSgoKT0+e2NsYXNzIGR7''@;'; put 'put ''Z2V0IHNwaW5uZXJDbGFzcygpe3JldHVybiEwfWdldCBpbmxpbmVDbGFzcygpe3JldHVybiB0aGlzLl9pbmxpbmV9c2V0IGNscklubGluZShoKXt0aGlzLl9pbmxpbmU9WmEoaCl9Z2V0IGludmVyc2VDbGFzcygpe3JldHVybiB0aGlzLl9pbnZlcnNlfXNldCBjbHJJbnZlcnNlKGgpe3RoaXMu''@;'; put 'put ''X2ludmVyc2U9WmEoaCl9Z2V0IHNtYWxsQ2xhc3MoKXtyZXR1cm4gdGhpcy5fc21hbGx9c2V0IGNsclNtYWxsKGgpe3RoaXMuX3NtYWxsPVphKGgpfWdldCBtZWRpdW1DbGFzcygpe3JldHVybiF0aGlzLl9zbWFsbCYmdGhpcy5fbWVkaXVtfXNldCBjbHJNZWRpdW0oaCl7dGhpcy5fbWVkaXVt''@;'; put 'put ''PVphKGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLXNwaW5uZXIiXV0saG9zdFZhcnM6MTEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiYoR2koImFyaWEtYnVz''@;'; put 'put ''eSIsITApLEZpKCJzcGlubmVyIix2LnNwaW5uZXJDbGFzcykoInNwaW5uZXItaW5saW5lIix2LmlubGluZUNsYXNzKSgic3Bpbm5lci1pbnZlcnNlIix2LmludmVyc2VDbGFzcykoInNwaW5uZXItc20iLHYuc21hbGxDbGFzcykoInNwaW5uZXItbWQiLHYubWVkaXVtQ2xhc3MpKX0saW5wdXRz''@;'; put 'put ''OntjbHJJbmxpbmU6ImNscklubGluZSIsY2xySW52ZXJzZToiY2xySW52ZXJzZSIsY2xyU21hbGw6ImNsclNtYWxsIixjbHJNZWRpdW06ImNsck1lZGl1bSJ9LG5nQ29udGVudFNlbGVjdG9yczpuYSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKCksTmko''@;'; put 'put ''MCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxEbD0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHtpbXBvcnRzOltbYmFdXX0pLGR9KSgpLG9zPTA7''@;'; put 'put ''Y29uc3Qgb2w9bmV3IHplKCJJRl9BQ1RJVkVfSUQiKSx4YT17cHJvdmlkZTpvbCx1c2VGYWN0b3J5OmZ1bmN0aW9uIEwwKCl7cmV0dXJuKytvc319O2xldCB6Mj0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fY3VycmVudENoYW5nZT1uZXcgJGV9Z2V0IGN1cnJlbnRDaGFuZ2Uo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5fY3VycmVudENoYW5nZS5hc09ic2VydmFibGUoKX1zZXQgY3VycmVudChoKXt0aGlzLl9jdXJyZW50IT09aCYmKHRoaXMuX2N1cnJlbnQ9aCx0aGlzLl9jdXJyZW50Q2hhbmdlLm5leHQoaCkpfWdldCBjdXJyZW50KCl7cmV0dXJuIHRoaXMuX2N1cnJlbnR9fXJldHVy''@;'; put 'put ''biBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLEcyPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5pZkFjdGl2ZVNlcnZpY2U9aCx0aGlzLmlk''@;'; put 'put ''PXYsdGhpcy50ZW1wbGF0ZT15LHRoaXMuY29udGFpbmVyPUMsdGhpcy53YXNBY3RpdmU9ITEsdGhpcy5hY3RpdmVDaGFuZ2U9bmV3IGFyKCExKSx0aGlzLmNoZWNrQW5kVXBkYXRlVmlldyhoLmN1cnJlbnQpLHRoaXMuc3Vic2NyaXB0aW9uPXRoaXMuaWZBY3RpdmVTZXJ2aWNlLmN1cnJlbnRD''@;'; put 'put ''aGFuZ2Uuc3Vic2NyaWJlKEk9Pnt0aGlzLmNoZWNrQW5kVXBkYXRlVmlldyhJKX0pfWNoZWNrQW5kVXBkYXRlVmlldyhoKXtjb25zdCB2PWg9PT10aGlzLmlkO3YhPT10aGlzLndhc0FjdGl2ZSYmKHRoaXMudXBkYXRlVmlldyh2KSx0aGlzLmFjdGl2ZUNoYW5nZS5lbWl0KHYpLHRoaXMud2Fz''@;'; put 'put ''QWN0aXZlPXYpfXNldCBhY3RpdmUoaCl7aCYmKHRoaXMuaWZBY3RpdmVTZXJ2aWNlLmN1cnJlbnQ9dGhpcy5pZCl9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLmlmQWN0aXZlU2VydmljZS5jdXJyZW50PT09dGhpcy5pZH11cGRhdGVWaWV3KGgpe2g/dGhpcy5jb250YWluZXIuY3JlYXRlRW1i''@;'; put 'put ''ZWRkZWRWaWV3KHRoaXMudGVtcGxhdGUpOnRoaXMuY29udGFpbmVyLmNsZWFyKCl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdCh6MiksS3Qob2wpLEt0KHFyKSxL''@;'; put 'put ''dChVaSkpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJJZkFjdGl2ZSIsIiJdXSxpbnB1dHM6e2FjdGl2ZTpbImNscklmQWN0aXZlIiwiYWN0aXZlIl19LG91dHB1dHM6e2FjdGl2ZUNoYW5nZToiY2xySWZBY3RpdmVDaGFuZ2UifX0pLGR9KSgpLEZmPSgoKT0+''@;'; put 'put ''e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJKXt0aGlzLnRlbXBsYXRlPWgsdGhpcy5jb250YWluZXI9dix0aGlzLmVsPXksdGhpcy5yZW5kZXJlcj1DLHRoaXMuZXhwYW5kPUksdGhpcy5fZXhwYW5kZWQ9ITEsdGhpcy5leHBhbmRlZENoYW5nZT1uZXcgYXIoITApLHRoaXMuX3N1YnNj''@;'; put 'put ''cmlwdGlvbnM9W10sdGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKEkuZXhwYW5kQ2hhbmdlLnN1YnNjcmliZSgoKT0+e3RoaXMudXBkYXRlVmlldygpLHRoaXMuZXhwYW5kZWRDaGFuZ2UuZW1pdCh0aGlzLmV4cGFuZC5leHBhbmRlZCl9KSl9Z2V0IGV4cGFuZGVkKCl7cmV0dXJuIHRoaXMuX2V4''@;'; put 'put ''cGFuZGVkfXNldCBleHBhbmRlZChoKXsiYm9vbGVhbiI9PXR5cGVvZiBoJiYodGhpcy5leHBhbmQuZXhwYW5kZWQ9aCx0aGlzLl9leHBhbmRlZD1oKX11cGRhdGVWaWV3KCl7aWYoIXRoaXMuZXhwYW5kLmV4cGFuZGVkfHwwPT09dGhpcy5jb250YWluZXIubGVuZ3RoKWlmKHRoaXMudGVtcGxh''@;'; put 'put ''dGUpdGhpcy5leHBhbmQuZXhwYW5kZWQ/dGhpcy5jb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGUpOnRoaXMuY29udGFpbmVyLmNsZWFyKCk7ZWxzZSB0cnl7dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImRpc3BsYXkiLHRoaXMu''@;'; put 'put ''ZXhwYW5kLmV4cGFuZGVkP251bGw6Im5vbmUiKX1jYXRjaChoKXt9fW5nT25Jbml0KCl7dGhpcy5leHBhbmQuZXhwYW5kYWJsZSsrLHRoaXMudXBkYXRlVmlldygpfW5nT25EZXN0cm95KCl7dGhpcy5leHBhbmQuZXhwYW5kYWJsZS0tLHRoaXMuX3N1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT5o''@;'; put 'put ''LnVuc3Vic2NyaWJlKCkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChxciw4KSxLdChVaSksS3QoYm8pLEt0KEdhKSxLdChyMSkpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJJZkV4cGFuZGVkIiwiIl1dLGlu''@;'; put 'put ''cHV0czp7ZXhwYW5kZWQ6WyJjbHJJZkV4cGFuZGVkIiwiZXhwYW5kZWQiXX0sb3V0cHV0czp7ZXhwYW5kZWRDaGFuZ2U6ImNscklmRXhwYW5kZWRDaGFuZ2UifX0pLGR9KSgpLFBhPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMudG9nZ2xlU2VydmljZT1oLHRoaXMudGVt''@;'; put 'put ''cGxhdGU9dix0aGlzLmNvbnRhaW5lcj15LHRoaXMub3BlbkNoYW5nZT1uZXcgYXIoITEpLHRoaXMuc3Vic2NyaXB0aW9uPXRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShDPT57dGhpcy51cGRhdGVWaWV3KEMpLHRoaXMub3BlbkNoYW5nZS5lbWl0KEMpfSl9c2V0IG9w''@;'; put 'put ''ZW4oaCl7dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49aH1nZXQgb3Blbigpe3JldHVybiB0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbn11cGRhdGVWaWV3KGgpe2g/dGhpcy5jb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGUpOnRoaXMuY29udGFpbmVyLmNsZWFyKCl9bmdP''@;'; put 'put ''bkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdCh6cyksS3QocXIpLEt0KFVpKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNscklmT3BlbiIs''@;'; put 'put ''IiJdXSxpbnB1dHM6e29wZW46WyJjbHJJZk9wZW4iLCJvcGVuIl19LG91dHB1dHM6e29wZW5DaGFuZ2U6ImNscklmT3BlbkNoYW5nZSJ9fSksZH0pKCkscWE9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9k''@;'; put 'put ''PWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbW2JhXV19KSxkfSkoKTt2YXIgdjE9KCgpPT4oZnVuY3Rpb24oZCl7ZC5WRVJUSUNBTD0idmVydGljYWwiLGQuSE9SSVpPTlRBTD0iaG9yaXpvbnRhbCIsZC5CT1RIPSJib3RoIn0odjF8fCh2MT17fSkpLHYxKSkoKTtsZXQg''@;'; put 'put ''X3M9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMuZWxlbWVudFJlZj1oLHRoaXMucGxhdGZvcm1JZD12fWdldCBuYXRpdmVFbGVtZW50KCl7cmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50fWZvY3VzKCl7U2wodGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy5lbGVt''@;'; put 'put ''ZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoYm8pLEt0KEwyKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNscktleUZvY3VzSXRlbSIsIiJdXX0pLGR9KSgpLEVw''@;'; put 'put ''PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5lbGVtZW50UmVmPWgsdGhpcy5kaXJlY3Rpb249djEuVkVSVElDQUwsdGhpcy5mb2N1c09uTG9hZD0hMSx0aGlzLmZvY3VzQ2hhbmdlPW5ldyBhcix0aGlzLl9jdXJyZW50PTAsdGhpcy5zdWJzY3JpcHRpb25zPVtdfXNldCBmb2N1''@;'; put 'put ''c2FibGVJdGVtcyhoKXtBcnJheS5pc0FycmF5KGgpJiZoLmxlbmd0aCYmKHRoaXMuX2ZvY3VzYWJsZUl0ZW1zPWgsdGhpcy5pbml0aWFsaXplRm9jdXMoKSl9Z2V0IGZvY3VzYWJsZUl0ZW1zKCl7cmV0dXJuIHRoaXMuX2ZvY3VzYWJsZUl0ZW1zP3RoaXMuX2ZvY3VzYWJsZUl0ZW1zOnRoaXMu''@;'; put 'put ''Y2xyS2V5Rm9jdXNJdGVtcz90aGlzLmNscktleUZvY3VzSXRlbXMudG9BcnJheSgpOltdfWdldCBuYXRpdmVFbGVtZW50KCl7cmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50fWdldCBjdXJyZW50KCl7cmV0dXJuIHRoaXMuX2N1cnJlbnR9c2V0IGN1cnJlbnQoaCl7dGhpcy5f''@;'; put 'put ''Y3VycmVudCE9PWgmJih0aGlzLl9jdXJyZW50PWgpfWdldCBjdXJyZW50SXRlbSgpe3JldHVybiB0aGlzLmZvY3VzYWJsZUl0ZW1zW3RoaXMuX2N1cnJlbnRdfWdldCBjdXJyZW50SXRlbUVsZW1lbnQoKXtyZXR1cm4gdGhpcy5jdXJyZW50SXRlbS5uYXRpdmVFbGVtZW50P3RoaXMuY3VycmVu''@;'; put 'put ''dEl0ZW0ubmF0aXZlRWxlbWVudDp0aGlzLmN1cnJlbnRJdGVtfWZvY3VzQ3VycmVudCgpe3RoaXMuY3VycmVudEl0ZW0uZm9jdXMoKSx0aGlzLmZvY3VzQ2hhbmdlLm5leHQodGhpcy5fY3VycmVudCl9bW92ZVRvKGgpe3RoaXMucG9zaXRpb25JblJhbmdlKGgpJiYodGhpcy5jdXJyZW50PWgs''@;'; put 'put ''dGhpcy5mb2N1c0N1cnJlbnQoKSl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5saXN0ZW5Gb3JJdGVtVXBkYXRlcygpKSx0aGlzLmluaXRpYWxpemVGb2N1cygpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51''@;'; put 'put ''bnN1YnNjcmliZSgpKX1oYW5kbGVLZXlib2FyZEV2ZW50KGgpe2lmKHRoaXMuY3VycmVudEl0ZW1FbGVtZW50IT09aC50YXJnZXQpe2NvbnN0IHY9dGhpcy5nZXRJdGVtUG9zaXRpb24oaC50YXJnZXQpO3RoaXMucG9zaXRpb25JblJhbmdlKHYpJiYodGhpcy5jdXJyZW50PXYpfXRoaXMucHJl''@;'; put 'put ''dktleVByZXNzZWQoaCkmJnRoaXMuY3VycmVudEZvY3VzSXNOb3RGaXJzdEl0ZW0oKT90aGlzLm1vdmVUbyh0aGlzLmN1cnJlbnQtMSk6dGhpcy5uZXh0S2V5UHJlc3NlZChoKSYmdGhpcy5jdXJyZW50Rm9jdXNJc05vdExhc3RJdGVtKCk/dGhpcy5tb3ZlVG8odGhpcy5jdXJyZW50KzEpOmgu''@;'; put 'put ''Y29kZT09PU0wLkhvbWU/dGhpcy5tb3ZlVG8oMCk6aC5jb2RlPT09TTAuRW5kJiZ0aGlzLm1vdmVUbyh0aGlzLmZvY3VzYWJsZUl0ZW1zLmxlbmd0aC0xKSxNcChoKX1zZXRDbGlja2VkSXRlbUN1cnJlbnQoaCl7Y29uc3Qgdj10aGlzLmdldEl0ZW1Qb3NpdGlvbihoLnRhcmdldCk7dj4tMSYm''@;'; put 'put ''dGhpcy5tb3ZlVG8odil9Z2V0SXRlbVBvc2l0aW9uKGgpe3JldHVybiB0aGlzLl9mb2N1c2FibGVJdGVtcz90aGlzLmZvY3VzYWJsZUl0ZW1zLmluZGV4T2YoaCk6dGhpcy5mb2N1c2FibGVJdGVtcy5tYXAodj0+di5uYXRpdmVFbGVtZW50KS5pbmRleE9mKGgpfXBvc2l0aW9uSW5SYW5nZSho''@;'; put 'put ''KXtyZXR1cm4gaD49MCYmaDx0aGlzLmZvY3VzYWJsZUl0ZW1zLmxlbmd0aH1jdXJyZW50Rm9jdXNJc05vdEZpcnN0SXRlbSgpe3JldHVybiB0aGlzLl9jdXJyZW50LTE+PTB9Y3VycmVudEZvY3VzSXNOb3RMYXN0SXRlbSgpe3JldHVybiB0aGlzLl9jdXJyZW50KzE8dGhpcy5mb2N1c2FibGVJ''@;'; put 'put ''dGVtcy5sZW5ndGh9aW5pdGlhbGl6ZUZvY3VzKCl7dGhpcy5mb2N1c2FibGVJdGVtcyYmdGhpcy5mb2N1c2FibGVJdGVtcy5sZW5ndGgmJih0aGlzLl9jdXJyZW50Pj10aGlzLmZvY3VzYWJsZUl0ZW1zLmxlbmd0aCYmKHRoaXMuX2N1cnJlbnQ9dGhpcy5mb2N1c2FibGVJdGVtcy5sZW5ndGgt''@;'; put 'put ''MSksdGhpcy5mb2N1c09uTG9hZCYmKHRoaXMuY3VycmVudEl0ZW0uZm9jdXMoKSx0aGlzLmZvY3VzQ2hhbmdlLm5leHQoKSkpfWxpc3RlbkZvckl0ZW1VcGRhdGVzKCl7cmV0dXJuIHRoaXMuY2xyS2V5Rm9jdXNJdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKT0+e3RoaXMuaW5pdGlhbGl6ZUZv''@;'; put 'put ''Y3VzKCl9KX1uZXh0S2V5UHJlc3NlZChoKXtjb25zdCB2PWFTKGgua2V5KTtzd2l0Y2godGhpcy5kaXJlY3Rpb24pe2Nhc2UgdjEuVkVSVElDQUw6cmV0dXJuIHY9PT1NMC5BcnJvd0Rvd247Y2FzZSB2MS5IT1JJWk9OVEFMOnJldHVybiB2PT09TTAuQXJyb3dSaWdodDtjYXNlIHYxLkJPVEg6''@;'; put 'put ''cmV0dXJuIHY9PT1NMC5BcnJvd0Rvd258fHY9PT1NMC5BcnJvd1JpZ2h0O2RlZmF1bHQ6cmV0dXJuITF9fXByZXZLZXlQcmVzc2VkKGgpe2NvbnN0IHY9YVMoaC5rZXkpO3N3aXRjaCh0aGlzLmRpcmVjdGlvbil7Y2FzZSB2MS5WRVJUSUNBTDpyZXR1cm4gdj09PU0wLkFycm93VXA7Y2FzZSB2''@;'; put 'put ''MS5IT1JJWk9OVEFMOnJldHVybiB2PT09TTAuQXJyb3dMZWZ0O2Nhc2UgdjEuQk9USDpyZXR1cm4gdj09PU0wLkFycm93VXB8fHY9PT1NMC5BcnJvd0xlZnQ7ZGVmYXVsdDpyZXR1cm4hMX19fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGJvKSl9''@;'; put 'put ''LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNscktleUZvY3VzIiwiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtpZigxJmgmJnhvKHksX3MsNSksMiZoKXtsZXQgQztIaShDPSRpKCkpJiYodi5jbHJLZXlGb2N1c0l0ZW1zPUMpfX0saG9zdEJpbmRp''@;'; put 'put ''bmdzOmZ1bmN0aW9uKGgsdil7MSZoJiZHbigia2V5ZG93biIsZnVuY3Rpb24oQyl7cmV0dXJuIHYuaGFuZGxlS2V5Ym9hcmRFdmVudChDKX0pKCJjbGljayIsZnVuY3Rpb24oQyl7cmV0dXJuIHYuc2V0Q2xpY2tlZEl0ZW1DdXJyZW50KEMpfSl9LGlucHV0czp7ZGlyZWN0aW9uOlsiY2xyRGly''@;'; put 'put ''ZWN0aW9uIiwiZGlyZWN0aW9uIl0sZm9jdXNPbkxvYWQ6WyJjbHJGb2N1c09uTG9hZCIsImZvY3VzT25Mb2FkIl0sZm9jdXNhYmxlSXRlbXM6WyJjbHJLZXlGb2N1cyIsImZvY3VzYWJsZUl0ZW1zIl19LG91dHB1dHM6e2ZvY3VzQ2hhbmdlOiJjbHJGb2N1c0NoYW5nZSJ9LGF0dHJzOlJ1ZSxu''@;'; put 'put ''Z0NvbnRlbnRTZWxlY3RvcnM6bmEsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihLMCgpLE5pKDApKX0sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksZnc9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8''@;'; put 'put ''ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbW2JhXV19KSxkfSkoKTtjb25zdCB0Zj1uZXcgemUoIlBPUE9WRVJfSE9TVF9BTkNIT1IiKTtsZXQgc1M9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVy''@;'; put 'put ''biBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7dmFyIHExPSgoKT0+KGZ1bmN0aW9uKGQpe2QuVVA9InVwIixkLkRPV049ImRvd24iLGQuTEVGVD0ibGVmdCIsZC5SSUdIVD0icmlnaHQifShxMXx8KHExPXt9KSkscTEpKSgp''@;'; put 'put ''O2xldCB4cD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMucmVuZGVyZXI9aCx0aGlzLl91bmxpc3RlbkZ1bmNzPVtdfWdldCBjdXJyZW50KCl7cmV0dXJuIHRoaXMuX2N1cnJlbnR9cmVzZXQoaCl7dGhpcy5fY3VycmVudD1ofWxpc3RlblRvQXJyb3dLZXlzKGgpe3RoaXMuX3Vu''@;'; put 'put ''bGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbihoLCJrZXlkb3duLmFycm93dXAiLCgpPT4hdGhpcy5tb3ZlKHExLlVQKSkpLHRoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbihoLCJrZXlkb3duLmFycm93ZG93biIsKCk9PiF0aGlzLm1vdmUo''@;'; put 'put ''cTEuRE9XTikpKSx0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oaCwia2V5ZG93bi5hcnJvd2xlZnQiLCgpPT4hdGhpcy5tb3ZlKHExLkxFRlQpKSksdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKGgsImtleWRvd24uYXJy''@;'; put 'put ''b3dyaWdodCIsKCk9PiF0aGlzLm1vdmUocTEuUklHSFQpKSl9cmVnaXN0ZXJDb250YWluZXIoaCl7dGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoaCwidGFiaW5kZXgiLCIwIiksdGhpcy5saXN0ZW5Ub0Fycm93S2V5cyhoKSx0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJl''@;'; put 'put ''ci5saXN0ZW4oaCwia2V5ZG93bi5zcGFjZSIsKCk9PiF0aGlzLmFjdGl2YXRlQ3VycmVudCgpKSksdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKGgsImtleWRvd24uZW50ZXIiLCgpPT4hdGhpcy5hY3RpdmF0ZUN1cnJlbnQoKSkpfW1vdmVUbyhoKXt2b2lk''@;'; put 'put ''IDAhPT1oJiYodGhpcy5jdXJyZW50JiZ0aGlzLmN1cnJlbnQuYmx1cigpLGguZm9jdXMoKSx0aGlzLl9jdXJyZW50PWgpfW1vdmUoaCl7bGV0IHY9ITE7aWYodGhpcy5jdXJyZW50KXtjb25zdCB5PXRoaXMuY3VycmVudFtoXTt5JiYoa1goeSk/eTphYSh5KSkuc3Vic2NyaWJlKEk9PntJJiYo''@;'; put 'put ''dGhpcy5tb3ZlVG8oSSksdj0hMCl9KX1yZXR1cm4gdn1hY3RpdmF0ZUN1cnJlbnQoKXtyZXR1cm4hKCF0aGlzLmN1cnJlbnR8fCF0aGlzLmN1cnJlbnQuYWN0aXZhdGV8fCh0aGlzLmN1cnJlbnQuYWN0aXZhdGUoKSwwKSl9ZGV0YWNoTGlzdGVuZXJzKCl7dGhpcy5fdW5saXN0ZW5GdW5jcy5m''@;'; put 'put ''b3JFYWNoKGg9PmgoKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKEdhKSl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y29uc3QgZzg9e3Byb3ZpZGU6eHAsdXNlRmFjdG9yeTpmdW5jdGlv''@;'; put 'put ''biBCTChkLGcpe3JldHVybiBkfHxuZXcgeHAoZyl9LGRlcHM6W1tuZXcgbWYsbmV3IEw0LHhwXSxHYV19O2NsYXNzIGxxe31mdW5jdGlvbiBSQWUoZCl7cmV0dXJuW09jLGQse3Byb3ZpZGU6bHEsdXNlRXhpc3Rpbmc6ZH1dfWNsYXNzIEdMZSBleHRlbmRzIGNsYXNzIHpMZXtjb250YWluc0l0''@;'; put 'put ''ZW0oZyl7cmV0dXJuIHRoaXMubW9kZWw9PT1nfXNlbGVjdChnKXt0aGlzLm1vZGVsPWd9dW5zZWxlY3QoZyl7dGhpcy5jb250YWluc0l0ZW0oZykmJih0aGlzLm1vZGVsPW51bGwpfWlzRW1wdHkoKXtyZXR1cm4hdGhpcy5tb2RlbH1wb3AoKXtjb25zdCBnPXRoaXMubW9kZWw7cmV0dXJuIHRo''@;'; put 'put ''aXMubW9kZWw9bnVsbCxnfXRvU3RyaW5nKGcpe3JldHVybiB0aGlzLm1vZGVsP2cmJnRoaXMubW9kZWxbZ10/dGhpcy5tb2RlbFtnXTp0aGlzLm1vZGVsLnRvU3RyaW5nKCk6IiJ9fXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fZm9jdXNDaGFuZ2VkPW5ldyBmcyhu''@;'; put 'put ''dWxsKX1nZXQgZm9jdXNDaGFuZ2VkKCl7cmV0dXJuIHRoaXMuX2ZvY3VzQ2hhbmdlZC5hc09ic2VydmFibGUoKX1zZWxlY3QoZyl7dGhpcy5tb2RlbCE9PWcmJih0aGlzLm1vZGVsPWcsdGhpcy5fZm9jdXNDaGFuZ2VkLm5leHQoZykpfX1sZXQgV0xlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0''@;'; put 'put ''b3IoKXt0aGlzLmxvYWRpbmc9ITEsdGhpcy5fY3VycmVudElucHV0PSIiLHRoaXMuX2lucHV0Q2hhbmdlZD1uZXcgZnMoIiIpLHRoaXMuaW5wdXRDaGFuZ2VkPXRoaXMuX2lucHV0Q2hhbmdlZC5hc09ic2VydmFibGUoKSx0aGlzLl9zZWxlY3Rpb25DaGFuZ2VkPW5ldyB4aygxKX1nZXQgY3Vy''@;'; put 'put ''cmVudElucHV0KCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRJbnB1dH1zZXQgY3VycmVudElucHV0KGgpeyIiPT09aCYmIXRoaXMubXVsdGlzZWxlY3RhYmxlJiZ0aGlzLnNldFNlbGVjdGlvblZhbHVlKG51bGwpLHRoaXMuX2N1cnJlbnRJbnB1dD1oLHRoaXMuX2lucHV0Q2hhbmdlZC5uZXh0KGgp''@;'; put 'put ''fWdldCBzZWxlY3Rpb25DaGFuZ2VkKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGlvbkNoYW5nZWQuYXNPYnNlcnZhYmxlKCl9c2VsZWN0KGgpe251bGw9PWh8fHRoaXMuc2VsZWN0aW9uTW9kZWwuY29udGFpbnNJdGVtKGgpfHwodGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoaCksdGhpcy5fc2Vs''@;'; put 'put ''ZWN0aW9uQ2hhbmdlZC5uZXh0KHRoaXMuc2VsZWN0aW9uTW9kZWwpKX10b2dnbGUoaCl7bnVsbCE9aCYmKHRoaXMuc2VsZWN0aW9uTW9kZWwuY29udGFpbnNJdGVtKGgpP3RoaXMuc2VsZWN0aW9uTW9kZWwudW5zZWxlY3QoaCk6dGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoaCksdGhpcy5f''@;'; put 'put ''c2VsZWN0aW9uQ2hhbmdlZC5uZXh0KHRoaXMuc2VsZWN0aW9uTW9kZWwpKX11bnNlbGVjdChoKXtudWxsPT1ofHwhdGhpcy5zZWxlY3Rpb25Nb2RlbC5jb250YWluc0l0ZW0oaCl8fCh0aGlzLnNlbGVjdGlvbk1vZGVsLnVuc2VsZWN0KGgpLHRoaXMuX3NlbGVjdGlvbkNoYW5nZWQubmV4dCh0''@;'; put 'put ''aGlzLnNlbGVjdGlvbk1vZGVsKSl9Z2V0IG11bHRpc2VsZWN0YWJsZSgpe3JldHVybiB0aGlzLnNlbGVjdGlvbk1vZGVsIGluc3RhbmNlb2YgY2xhc3MgWkxle2NvbnRhaW5zSXRlbShnKXtyZXR1cm4hIXRoaXMubW9kZWwmJnRoaXMubW9kZWwuaW5jbHVkZXMoZyl9c2VsZWN0KGcpe3RoaXMu''@;'; put 'put ''YWRkSXRlbShnKX11bnNlbGVjdChnKXt0aGlzLnJlbW92ZUl0ZW0oZyl9aXNFbXB0eSgpe3JldHVybiEodGhpcy5tb2RlbCYmdGhpcy5tb2RlbC5sZW5ndGg+MCl9cG9wKCl7bGV0IGc7cmV0dXJuIHRoaXMubW9kZWwmJnRoaXMubW9kZWwubGVuZ3RoPjAmJihnPXRoaXMubW9kZWxbdGhpcy5t''@;'; put 'put ''b2RlbC5sZW5ndGgtMV0sdGhpcy5yZW1vdmVJdGVtKGcpKSxnfXRvU3RyaW5nKGcsaD0tMSl7bGV0IHY9IiI7cmV0dXJuIHRoaXMubW9kZWwmJihoPi0xP3RoaXMubW9kZWxbaF0mJih2Kz1nJiZ0aGlzLm1vZGVsW2hdW2ddP3RoaXMubW9kZWxbaF1bZ106dGhpcy5tb2RlbFtoXS50b1N0cmlu''@;'; put 'put ''ZygpKTp0aGlzLm1vZGVsLmZvckVhY2goeT0+e3YrPWcmJnlbZ10/eVtnXTp5LnRvU3RyaW5nKCksdis9IiAifSkpLHYudHJpbSgpfWFkZEl0ZW0oZyl7dGhpcy5jb250YWluc0l0ZW0oZyl8fCh0aGlzLm1vZGVsPXRoaXMubW9kZWx8fFtdLHRoaXMubW9kZWwucHVzaChnKSl9cmVtb3ZlSXRl''@;'; put 'put ''bShnKXtpZihudWxsPT10aGlzLm1vZGVsKXJldHVybjtjb25zdCBoPXRoaXMubW9kZWwuaW5kZXhPZihnKTtoPi0xJiZ0aGlzLm1vZGVsLnNwbGljZShoLDEpLDA9PT10aGlzLm1vZGVsLmxlbmd0aCYmKHRoaXMubW9kZWw9bnVsbCl9fX1zZXRTZWxlY3Rpb25WYWx1ZShoKXshdGhpcy5zZWxl''@;'; put 'put ''Y3Rpb25Nb2RlbHx8dGhpcy5zZWxlY3Rpb25Nb2RlbC5tb2RlbD09PWh8fCF0aGlzLnNlbGVjdGlvbk1vZGVsLm1vZGVsJiYhaHx8KHRoaXMuc2VsZWN0aW9uTW9kZWwubW9kZWw9aCx0aGlzLl9zZWxlY3Rpb25DaGFuZ2VkLm5leHQodGhpcy5zZWxlY3Rpb25Nb2RlbCkpfX1yZXR1cm4gZC5c''@;'; put 'put ''dTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKTtSQWUoKCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEkpe3RoaXMuaWQ9aCx0aGlzLnRvZ2dsZVNlcnZpY2U9eSx0''@;'; put 'put ''aGlzLnNlbGVjdGlvblNlcnZpY2U9Qyx0aGlzLnBsYXRmb3JtSWQ9SSx0aGlzLnBzZXVkb0ZvY3VzPW5ldyBHTGUsdGhpcy5vcHRpb25EYXRhPVtdLHRoaXMuaGFuZGxlRm9jdXNTdWJzY3JpcHRpb24oKSx0aGlzLnJlbmRlcmVyPXYuY3JlYXRlUmVuZGVyZXIobnVsbCxudWxsKX1oYW5kbGVG''@;'; put 'put ''b2N1c1N1YnNjcmlwdGlvbigpe3RoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShoPT57aHx8KHRoaXMucHNldWRvRm9jdXMubW9kZWw9bnVsbCl9KX1nZXQgdHJpZ2dlcigpe3JldHVybiB0aGlzLl90cmlnZ2VyfXNldCB0cmlnZ2VyKGgpe3RoaXMuX3RyaWdnZXI9aCx0''@;'; put 'put ''aGlzLmFkZEZvY3VzT25CbHVyTGlzdGVuZXIoaCl9Z2V0IGxpc3Rib3goKXtyZXR1cm4gdGhpcy5fbGlzdGJveH1zZXQgbGlzdGJveChoKXt0aGlzLl9saXN0Ym94PWgsdGhpcy5hZGRGb2N1c09uQmx1ckxpc3RlbmVyKGgpfWdldCB0ZXh0SW5wdXQoKXtyZXR1cm4gdGhpcy5fdGV4dElucHV0''@;'; put 'put ''fXNldCB0ZXh0SW5wdXQoaCl7dGhpcy5fdGV4dElucHV0PWgsdGhpcy5yZW5kZXJlci5saXN0ZW4oaCwia2V5ZG93biIsdj0+IXRoaXMuaGFuZGxlVGV4dElucHV0KHYpKSx0aGlzLmFkZEZvY3VzT25CbHVyTGlzdGVuZXIoaCl9bW92ZUZvY3VzVG8oaCl7bGV0IHY9dGhpcy5vcHRpb25EYXRh''@;'; put 'put ''LmZpbmRJbmRleCh5PT55LmVxdWFscyh0aGlzLnBzZXVkb0ZvY3VzLm1vZGVsKSk7aD09PXExLlVQPy0xPT09dnx8MD09PXY/dj10aGlzLm9wdGlvbkRhdGEubGVuZ3RoLTE6di0tOmg9PT1xMS5ET1dOJiYoLTE9PT12fHx2PT09dGhpcy5vcHRpb25EYXRhLmxlbmd0aC0xP3Y9MDp2KyspLHRo''@;'; put 'put ''aXMucHNldWRvRm9jdXMuc2VsZWN0KHRoaXMub3B0aW9uRGF0YVt2XSksdGhpcy5wc2V1ZG9Gb2N1cy5tb2RlbCYmdGhpcy5wc2V1ZG9Gb2N1cy5tb2RlbC5lbCYmdGhpcy5wc2V1ZG9Gb2N1cy5tb2RlbC5lbC5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCIsYmxvY2s6ImNlbnRl''@;'; put 'put ''ciIsaW5saW5lOiJuZWFyZXN0In0pfW9wZW5BbmRNb3ZlVG8oaCl7dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4/dGhpcy5tb3ZlRm9jdXNUbyhoKToodGhpcy50b2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2UucGlwZShINSgxKSkuc3Vic2NyaWJlKHY9Pnt2JiZ0aGlzLm1vdmVGb2N1c1RvKGgpfSks''@;'; put 'put ''dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49ITApfWhhbmRsZVRleHRJbnB1dChoKXtsZXQgdj0hMTtjb25zdCB5PWFTKGgua2V5KTtpZihoKXN3aXRjaCh5KXtjYXNlIE0wLkVudGVyOnRoaXMudG9nZ2xlU2VydmljZS5vcGVuJiZ0aGlzLnBzZXVkb0ZvY3VzLm1vZGVsJiYodGhpcy5zZWxlY3Rp''@;'; put 'put ''b25TZXJ2aWNlLm11bHRpc2VsZWN0YWJsZT90aGlzLnNlbGVjdGlvblNlcnZpY2UudG9nZ2xlKHRoaXMucHNldWRvRm9jdXMubW9kZWwudmFsdWUpOnRoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3QodGhpcy5wc2V1ZG9Gb2N1cy5tb2RlbC52YWx1ZSksdj0hMCk7YnJlYWs7Y2FzZSBNMC5T''@;'; put 'put ''cGFjZTp0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbnx8KHRoaXMudG9nZ2xlU2VydmljZS5vcGVuPSEwLHY9ITApO2JyZWFrO2Nhc2UgTTAuQXJyb3dVcDp0aGlzLnByZXZlbnRWaWV3cG9ydFNjcm9sbGluZyhoKSx0aGlzLm9wZW5BbmRNb3ZlVG8ocTEuVVApLHY9ITA7YnJlYWs7Y2FzZSBNMC5B''@;'; put 'put ''cnJvd0Rvd246dGhpcy5wcmV2ZW50Vmlld3BvcnRTY3JvbGxpbmcoaCksdGhpcy5vcGVuQW5kTW92ZVRvKHExLkRPV04pLHY9ITA7YnJlYWs7ZGVmYXVsdDpoLmtleSE9PU0wLlRhYiYmKCF0aGlzLnNlbGVjdGlvblNlcnZpY2UubXVsdGlzZWxlY3RhYmxlfHxoLmtleSE9PU0wLkJhY2tzcGFj''@;'; put 'put ''ZSkmJmgua2V5IT09TTAuRXNjYXBlJiYhdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4mJih0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMCl9cmV0dXJuIHZ9cHJldmVudFZpZXdwb3J0U2Nyb2xsaW5nKGgpe2gucHJldmVudERlZmF1bHQoKSxoLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZv''@;'; put 'put ''Y3VzSW5wdXQoKXt0aGlzLnRleHRJbnB1dCYmU2wodGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy50ZXh0SW5wdXQuZm9jdXMoKX1hZGRGb2N1c09uQmx1ckxpc3RlbmVyKGgpe1NsKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMucmVuZGVyZXIubGlzdGVuKGgsImJsdXIiLHY9Pnt0aGlzLmZvY3VzT3V0''@;'; put 'put ''T2ZDb21wb25lbnQodikmJih0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMSx0aGlzLmNvbXBvbmVudENkUmVmJiZ0aGlzLmNvbXBvbmVudENkUmVmLmRldGVjdENoYW5nZXMoKSl9KX1mb2N1c091dE9mQ29tcG9uZW50KGgpe2NvbnN0IHY9aC5yZWxhdGVkVGFyZ2V0fHxkb2N1bWVudC5hY3Rp''@;'; put 'put ''dmVFbGVtZW50O3JldHVybiEodGhpcy50ZXh0SW5wdXQuY29udGFpbnModil8fHRoaXMudHJpZ2dlci5jb250YWlucyh2KXx8dGhpcy5saXN0Ym94LmNvbnRhaW5zKHYpKX1mb2N1c0ZpcnN0QWN0aXZlKCl7aWYodGhpcy5vcHRpb25EYXRhLmxlbmd0aD4wKWlmKHRoaXMuc2VsZWN0aW9uU2Vy''@;'; put 'put ''dmljZS5zZWxlY3Rpb25Nb2RlbC5pc0VtcHR5KCkpdGhpcy5wc2V1ZG9Gb2N1cy5zZWxlY3QodGhpcy5vcHRpb25EYXRhWzBdKTtlbHNle2xldCBoO2g9dGhpcy5zZWxlY3Rpb25TZXJ2aWNlLm11bHRpc2VsZWN0YWJsZT90aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwubW9k''@;'; put 'put ''ZWxbMF06dGhpcy5zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLm1vZGVsO2NvbnN0IHY9dGhpcy5vcHRpb25EYXRhLmZpbmQoeT0+eS52YWx1ZT09PWgpO3RoaXMucHNldWRvRm9jdXMuc2VsZWN0KHZ8fHRoaXMub3B0aW9uRGF0YVswXSl9fWFkZE9wdGlvblZhbHVlcyhoKXt0aGlz''@;'; put 'put ''Lm9wdGlvbkRhdGE9aH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoQ2koeTIpLENpKE1kKSxDaSh6cyksQ2koV0xlKSxDaShMMikpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpKTtsZXQgWUxlPSgo''@;'; put 'put ''KT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtocy5hZGRJY29ucyhLaCxUZixEeSxTayl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W1tiYSx0ZCxEcyxmdyxK''@;'; put 'put ''cixxYSxSYyxEbF0sSnIscWFdfSksZH0pKCksQkFlPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBadHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IGc7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybihnfHwoZz1mbChkKSkpKHZ8fGQpfX0oKSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpk''@;'; put 'put ''LHNlbGVjdG9yczpbWyJjbHItaW5wdXQtY29udGFpbmVyIl1dLGhvc3RWYXJzOjYsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZGaSgiY2xyLWZvcm0tY29udHJvbCIsITApKCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIixudWxsPT12LmNvbnRyb2w/bnVsbDp2LmNvbnRyb2wu''@;'; put 'put ''ZGlzYWJsZWQpKCJjbHItcm93Iix2LmFkZEdyaWQoKSl9LGZlYXR1cmVzOltobyhbcWUsSGUscSxFdF0pLERvXSxuZ0NvbnRlbnRTZWxlY3RvcnM6cEwsZGVjbHM6MTAsdmFyczo3LGNvbnN0czpbWzQsIm5nSWYiXSxbMSwiY2xyLWNvbnRyb2wtY29udGFpbmVyIiwzLCJuZ0NsYXNzIl0sWzEs''@;'; put 'put ''ImNsci1pbnB1dC13cmFwcGVyIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLXZhbGlkYXRlLWljb24iLCJzaGFwZSIsImNoZWNrLWNpcmNsZSIsInN0''@;'; put 'put ''YXR1cyIsInN1Y2Nlc3MiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJjbHItdmFsaWRhdGUtaWNvbiJdLFsic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwi''@;'; put 'put ''YXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJjbHItdmFsaWRhdGUtaWNvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKE51ZSksTmkoMCkscm4oMSx0cywxLDAsImxhYmVsIiwwKSxudCgyLCJkaXYiLDEpKDMsImRpdiIsMiksTmkoNCwxKSxybig1LHQkLDEsMCwiY2RzLWljb24i''@;'; put 'put ''LDMpLHJuKDYsSHVlLDEsMCwiY2RzLWljb24iLDQpLG90KCkscm4oNyxuJCwxLDAsIm5nLWNvbnRlbnQiLDApLHJuKDgsciQsMSwwLCJuZy1jb250ZW50IiwwKSxybig5LENBZSwxLDAsIm5nLWNvbnRlbnQiLDApLG90KCkpLDImaCYmKHV0KDEpLFR0KCJuZ0lmIiwhdi5sYWJlbCYmdi5hZGRH''@;'; put 'put ''cmlkKCkpLHV0KDEpLFR0KCJuZ0NsYXNzIix2LmNvbnRyb2xDbGFzcygpKSx1dCgzKSxUdCgibmdJZiIsdi5zaG93SW52YWxpZCksdXQoMSksVHQoIm5nSWYiLHYuc2hvd1ZhbGlkKSx1dCgxKSxUdCgibmdJZiIsdi5zaG93SGVscGVyKSx1dCgxKSxUdCgibmdJZiIsdi5zaG93SW52YWxpZCks''@;'; put 'put ''dXQoMSksVHQoIm5nSWYiLHYuc2hvd1ZhbGlkKSl9LGRlcGVuZGVuY2llczpbTm8sYXQsbGMsWm9dLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLHB2PSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBTbntjb25zdHJ1Y3RvcihoLHYseSxDLEkpe3N1cGVyKGgsQkFlLHYseSxDLEkpLHRoaXMuaW5kZXg9''@;'; put 'put ''MX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoVWkpLEt0KFNzKSxLdChEZiwxMCksS3QoR2EpLEt0KGJvKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNscklucHV0IiwiIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRp''@;'; put 'put ''bmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZGaSgiY2xyLWlucHV0IiwhMCl9LGZlYXR1cmVzOltEb119KSxkfSkoKSxQQWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe2hzLmFkZEljb25zKEtoLFRmKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9''@;'; put 'put ''LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbW2JhLHRkLERzLEpyXSxKcl19KSxkfSkoKSxrZmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2ZvY3VzZWQ9bmV3IGZzKCExKX1nZXQgZm9jdXNDaGFuZ2UoKXtyZXR1cm4gdGhpcy5f''@;'; put 'put ''Zm9jdXNlZC5hc09ic2VydmFibGUoKX1zZXQgZm9jdXNlZChoKXt0aGlzLl9mb2N1c2VkLm5leHQoaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLFVM''@;'; put 'put ''ZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7aHMuYWRkSWNvbnMoS2gsVGYpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHtpbXBvcnRzOltbYmEsUEFlLERzXV19KSxk''@;'; put 'put ''fSkoKSxRTGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3ByZXZpb3VzRm9jdXNUcmFwcz1bXX1nZXQgY3VycmVudCgpe3JldHVybiB0aGlzLl9jdXJyZW50fXNldCBjdXJyZW50KGgpe3RoaXMuX3ByZXZpb3VzRm9jdXNUcmFwcy5wdXNoKHRoaXMuX2N1cnJlbnQpLHRoaXMu''@;'; put 'put ''X2N1cnJlbnQ9aH1nZXQgbmJGb2N1c1RyYXBwZXJzKCl7cmV0dXJuIHRoaXMuX3ByZXZpb3VzRm9jdXNUcmFwcy5sZW5ndGh9YWN0aXZhdGVQcmV2aW91c1RyYXBwZXIoKXt0aGlzLl9jdXJyZW50PXRoaXMuX3ByZXZpb3VzRm9jdXNUcmFwcy5wb3AoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1''@;'; put 'put ''bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksZH0pKCksaHc9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEkpe3RoaXMuZWw9aCx0aGlzLmluamVjdG9yPXYs''@;'; put 'put ''dGhpcy5mb2N1c1RyYXBzVHJhY2tlcj15LHRoaXMucmVuZGVyZXI9Qyx0aGlzLnBsYXRmb3JtSWQ9SSx0aGlzLmxvY2FsRm9jdXNFc2NhcGVkPSExLHRoaXMuX2NvbmZpZz17c3RyaWN0OiEwfSx0aGlzLmRvY3VtZW50PXRoaXMuaW5qZWN0b3IuZ2V0KGdzKSx0aGlzLmZvY3VzVHJhcHNUcmFj''@;'; put 'put ''a2VyLmN1cnJlbnQ9dGhpc31zZXQgY29uZmlnKGgpe3RoaXMuX2NvbmZpZz1PYmplY3QuYXNzaWduKHRoaXMuX2NvbmZpZywiIj09PWg/e306aCl9b25Gb2N1c0luKGgpe2NvbnN0IHY9dGhpcy5lbC5uYXRpdmVFbGVtZW50O3RoaXMuZm9jdXNUcmFwc1RyYWNrZXIuY3VycmVudCE9PXRoaXN8''@;'; put 'put ''fCFTbCh0aGlzLnBsYXRmb3JtSWQpfHx0aGlzLmxvY2FsRm9jdXNFc2NhcGVkfHx2LmNvbnRhaW5zKGgudGFyZ2V0KXx8KGgudGFyZ2V0PT09dGhpcy50b3BSZWJvdW5kRWwmJnYuY29udGFpbnMoaC5yZWxhdGVkVGFyZ2V0KT8odGhpcy5mb2N1c0xhc3RGb2N1c2FibGUoKSx0aGlzLmZvY3Vz''@;'; put 'put ''VHJhcEVsSWZPdXRzaWRlKCkpOmgudGFyZ2V0PT09dGhpcy5ib3R0b21SZWJvdW5kRWwmJnYuY29udGFpbnMoaC5yZWxhdGVkVGFyZ2V0KT8odGhpcy5mb2N1c0ZpcnN0Rm9jdXNhYmxlKCksdGhpcy5mb2N1c1RyYXBFbElmT3V0c2lkZSgpKTp0aGlzLl9jb25maWcuc3RyaWN0P3RoaXMuZWwu''@;'; put 'put ''bmF0aXZlRWxlbWVudC5mb2N1cygpOnRoaXMubG9jYWxGb2N1c0VzY2FwZWQ9ITApfWNyZWF0ZUZvY3VzYWJsZU9mZlNjcmVlbkVsKCl7Y29uc3QgaD10aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtyZXR1cm4gdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoaCwidGFiaW5k''@;'; put 'put ''ZXgiLCIwIiksdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhoLCJvZmZzY3JlZW4tZm9jdXMtcmVib3VuZGVyIiksaH1hZGRSZWJvdW5kRWxzKCl7aWYoU2wodGhpcy5wbGF0Zm9ybUlkKSl7dGhpcy50b3BSZWJvdW5kRWw9dGhpcy5jcmVhdGVGb2N1c2FibGVPZmZTY3JlZW5FbCgpLHRoaXMuYm90''@;'; put 'put ''dG9tUmVib3VuZEVsPXRoaXMuY3JlYXRlRm9jdXNhYmxlT2ZmU2NyZWVuRWwoKTtjb25zdCBoPXRoaXMuZWwubmF0aXZlRWxlbWVudDt0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZShoLnBhcmVudEVsZW1lbnQsdGhpcy50b3BSZWJvdW5kRWwsaCksaC5uZXh0U2libGluZz90aGlzLnJlbmRl''@;'; put 'put ''cmVyLmluc2VydEJlZm9yZShoLnBhcmVudE5vZGUsdGhpcy5ib3R0b21SZWJvdW5kRWwsaC5uZXh0U2libGluZyk6dGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChoLnBhcmVudE5vZGUsdGhpcy5ib3R0b21SZWJvdW5kRWwpfX1yZW1vdmVSZWJvdW5kRWxzKCl7U2wodGhpcy5wbGF0Zm9ybUlk''@;'; put 'put ''KSYmdGhpcy50b3BSZWJvdW5kRWwmJnRoaXMuYm90dG9tUmVib3VuZEVsJiYodGhpcy5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMudG9wUmVib3VuZEVsKSx0aGlzLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5ib3R0b21SZWJvdW5kRWwpLGRlbGV0ZSB0aGlzLnRvcFJl''@;'; put 'put ''Ym91bmRFbCxkZWxldGUgdGhpcy5ib3R0b21SZWJvdW5kRWwpfXNldFByZXZpb3VzRm9jdXMoKXt0aGlzLnByZXZpb3VzQWN0aXZlRWxlbWVudCYmdGhpcy5wcmV2aW91c0FjdGl2ZUVsZW1lbnQuZm9jdXMmJnRoaXMucHJldmlvdXNBY3RpdmVFbGVtZW50LmZvY3VzKCl9bmdPbkluaXQoKXtT''@;'; put 'put ''bCh0aGlzLnBsYXRmb3JtSWQpJiYodGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ0YWJpbmRleCIsIi0xIiksdGhpcy5lbC5uYXRpdmVFbGVtZW50LmZvY3VzKCkpfW5nQWZ0ZXJWaWV3SW5pdCgpe1NsKHRoaXMucGxhdGZvcm1JZCkmJih0aGlzLnBy''@;'; put 'put ''ZXZpb3VzQWN0aXZlRWxlbWVudD10aGlzLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsdGhpcy5wYXJlbnRFbGVtZW50PXRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50KSx0aGlzLmFkZFJlYm91bmRFbHMoKX1nZXQgcG90ZW50aWFsbHlGb2N1c2FibGVFbHMoKXtyZXR1cm5bLi4u''@;'; put 'put ''dGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tocmVmXTpub3QoW3RhYmluZGV4PSItMSJdKSwgYnV0dG9uOm5vdChbZGlzYWJsZWRdKTpub3QoW3RhYmluZGV4PSItMSJdKSwgaW5wdXQ6bm90KFtkaXNhYmxlZF0pOm5vdChbdGFiaW5kZXg9Ii0xIl0pLCBzZWxlY3Q6''@;'; put 'put ''bm90KFtkaXNhYmxlZF0pOm5vdChbdGFiaW5kZXg9Ii0xIl0pLCB0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSk6bm90KFt0YWJpbmRleD0iLTEiXSksIFtjb250ZW50ZWRpdGFibGU9InRydWUiXTpub3QoW3RhYmluZGV4PSItMSJdKSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PSItMSJdKSAn''@;'; put 'put ''KV19Zm9jdXNGaXJzdEZvY3VzYWJsZSgpe2ZvcihsZXQgaD0wO2g8dGhpcy5wb3RlbnRpYWxseUZvY3VzYWJsZUVscy5sZW5ndGgmJih0aGlzLmZpcnN0Rm9jdXNhYmxlRWw9dGhpcy5mb2N1c0VsZW1lbnQodGhpcy5wb3RlbnRpYWxseUZvY3VzYWJsZUVsc1toXSksIXRoaXMuZmlyc3RGb2N1''@;'; put 'put ''c2FibGVFbCk7aCsrKTt9Zm9jdXNMYXN0Rm9jdXNhYmxlKCl7Zm9yKGxldCBoPXRoaXMucG90ZW50aWFsbHlGb2N1c2FibGVFbHMubGVuZ3RoLTE7aD49MCYmKHRoaXMubGFzdEZvY3VzYWJsZUVsPXRoaXMuZm9jdXNFbGVtZW50KHRoaXMucG90ZW50aWFsbHlGb2N1c2FibGVFbHNbaF0pLCF0''@;'; put 'put ''aGlzLmxhc3RGb2N1c2FibGVFbCk7aC0tKTt9Zm9jdXNUcmFwRWxJZk91dHNpZGUoKXt0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCl8fHRoaXMuZWwubmF0aXZlRWxlbWVudC5mb2N1cygpfWZvY3VzRWxlbWVudChoKXtyZXR1cm4gaCYmaC5m''@;'; put 'put ''b2N1cyYmKGguZm9jdXMoKSxkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09aCk/aDpudWxsfW5nT25EZXN0cm95KCl7dGhpcy5yZW1vdmVSZWJvdW5kRWxzKCksdGhpcy5zZXRQcmV2aW91c0ZvY3VzKCksdGhpcy5mb2N1c1RyYXBzVHJhY2tlci5hY3RpdmF0ZVByZXZpb3VzVHJhcHBlcigpfX1y''@;'; put 'put ''ZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChibyksS3QoU3MpLEt0KFFMZSksS3QoR2EpLEt0KEwyKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNsckZvY3VzVHJhcCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24o''@;'; put 'put ''aCx2KXsxJmgmJkduKCJmb2N1c2luIixmdW5jdGlvbihDKXtyZXR1cm4gdi5vbkZvY3VzSW4oQyl9LDAsSGwpfSxpbnB1dHM6e2NvbmZpZzpbImNsckZvY3VzVHJhcCIsImNvbmZpZyJdfX0pLGR9KSgpLHNxPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXty''@;'; put 'put ''ZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W1tiYV1dfSksZH0pKCk7Y29uc3QgS0xlPS9kKy4rbSsuK3krL2ksJExlPS9tKy4rZCsuK3krL2kscUxlPS9kK3xtK3x5Ky9pLGVPZT0vXGQrL2csdE9lPS9Nb2JpL2ksbk9l''@;'; put 'put ''PS9cdTIwMGYvZyx1cT17bmFtZToiTElUVExFX0VORElBTiIsZm9ybWF0OlsiREQiLCJNTSIsIllZWVkiXX0seGZlPXtuYW1lOiJNSURETEVfRU5ESUFOIixmb3JtYXQ6WyJNTSIsIkREIiwiWVlZWSJdfSxyT2U9e25hbWU6IkJJR19FTkRJQU4iLGZvcm1hdDpbIllZWVkiLCJNTSIsIkREIl19''@;'; put 'put ''O2Z1bmN0aW9uIEhBZShkLGcpe3JldHVybiBuZXcgRGF0ZShkLGcrMSwwKS5nZXREYXRlKCl9Y2xhc3Mgc09le2NvbnN0cnVjdG9yKGcsaD0hMSx2PSExLHk9ITEsQz0hMSxJPSExKXt0aGlzLmRheU1vZGVsPWcsdGhpcy5pc1RvZGF5c0RhdGU9aCx0aGlzLmlzRXhjbHVkZWQ9dix0aGlzLmlz''@;'; put 'put ''RGlzYWJsZWQ9eSx0aGlzLmlzU2VsZWN0ZWQ9Qyx0aGlzLmlzRm9jdXNhYmxlPUl9Z2V0IHRhYkluZGV4KCl7cmV0dXJuIHRoaXMuaXNGb2N1c2FibGU/MDotMX19Y2xhc3MgYzR7Y29uc3RydWN0b3IoZyxoLHYpe3RoaXMueWVhcj1nLHRoaXMubW9udGg9aCx0aGlzLmRhdGU9dn1pc0VxdWFs''@;'; put 'put ''KGcpe3JldHVybiEhZyYmdGhpcy55ZWFyPT09Zy55ZWFyJiZ0aGlzLm1vbnRoPT09Zy5tb250aCYmdGhpcy5kYXRlPT09Zy5kYXRlfXRvRGF0ZSgpe3JldHVybiBuZXcgRGF0ZSh0aGlzLnllYXIsdGhpcy5tb250aCx0aGlzLmRhdGUpfWluY3JlbWVudEJ5KGcpe2NvbnN0IGg9bmV3IERhdGUo''@;'; put 'put ''dGhpcy55ZWFyLHRoaXMubW9udGgsdGhpcy5kYXRlK2cpO3JldHVybiBuZXcgYzQoaC5nZXRGdWxsWWVhcigpLGguZ2V0TW9udGgoKSxoLmdldERhdGUoKSl9Y2xvbmUoKXtyZXR1cm4gbmV3IGM0KHRoaXMueWVhcix0aGlzLm1vbnRoLHRoaXMuZGF0ZSl9dG9Db21wYXJpc29uU3RyaW5nKCl7''@;'; put 'put ''cmV0dXJuYCR7dGhpcy55ZWFyfSR7dGhpcy5wYWQodGhpcy5tb250aCl9JHt0aGlzLnBhZCh0aGlzLmRhdGUpfWB9cGFkKGcpe3JldHVybiBnPDEwP2AwJHtnfWA6YCR7Z31gfXRvRGF0ZVN0cmluZygpe3JldHVybiB0aGlzLnRvRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygpfX1jbGFzcyB1''@;'; put 'put ''T2V7Y29uc3RydWN0b3IoZyxoLHYseSxDLEkpe3RoaXMuY2FsZW5kYXI9Zyx0aGlzLnNlbGVjdGVkRGF5PWgsdGhpcy5mb2N1c2FibGVEYXk9dix0aGlzLnRvZGF5PXksdGhpcy5maXJzdERheU9mV2Vlaz1DLHRoaXMuZXhjbHVkZWREYXRlcz1JLHRoaXMuY3Vyck1vbnRoRGF5Vmlld3M9W10s''@;'; put 'put ''dGhpcy5pbml0aWFsaXplQ2FsZW5kYXJWaWV3KCl9Z2V0IGNhbGVuZGFyVmlldygpe3JldHVybiB0aGlzLl9jYWxlbmRhclZpZXd9aW5pdGlhbGl6ZUNhbGVuZGFyVmlldygpe2NvbnN0IGc9dGhpcy5jYWxlbmRhci5wcmV2aW91c01vbnRoKCksaD10aGlzLmNhbGVuZGFyLm5leHRNb250aCgp''@;'; put 'put ''LHY9dGhpcy5udW1EYXlzRnJvbVByZXZNb250aEluQ2FsVmlldyh0aGlzLmNhbGVuZGFyLnllYXIsdGhpcy5jYWxlbmRhci5tb250aCkseT00Mi0odGhpcy5jYWxlbmRhci5kYXlzLmxlbmd0aCt2KTtsZXQgQz1bXSxJPVtdO3Y+MCYmKEM9dGhpcy5nZW5lcmF0ZURheVZpZXdNb2RlbHMoZy5k''@;'; put 'put ''YXlzLnNsaWNlKC0xKnYpLCEwLCExKSksdGhpcy5jdXJyTW9udGhEYXlWaWV3cz10aGlzLmdlbmVyYXRlRGF5Vmlld01vZGVscyh0aGlzLmNhbGVuZGFyLmRheXMsITEsITApLHk+MCYmKEk9dGhpcy5nZW5lcmF0ZURheVZpZXdNb2RlbHMoaC5kYXlzLnNsaWNlKDAseSksITAsITEpKSx0aGlz''@;'; put 'put ''Ll9jYWxlbmRhclZpZXc9dGhpcy5nZW5lcmF0ZUNhbGVuZGFyVmlldyhDLHRoaXMuY3Vyck1vbnRoRGF5Vmlld3MsSSksdGhpcy5pbml0aWFsaXplU2VsZWN0ZWREYXkoKSx0aGlzLmluaXRpYWxpemVGb2N1c2FibGVEYXkoKX1pc0RhdGVFeGNsdWRlZChnKXtjb25zdHttaW5EYXRlOmgsbWF4''@;'; put 'put ''RGF0ZTp2fT10aGlzLmV4Y2x1ZGVkRGF0ZXMseT1oLnRvQ29tcGFyaXNvblN0cmluZygpLEM9di50b0NvbXBhcmlzb25TdHJpbmcoKSxJPWcudG9Db21wYXJpc29uU3RyaW5nKCk7cmV0dXJuIShJPj15JiZJPD1DKX1nZW5lcmF0ZURheVZpZXdNb2RlbHMoZyxoLHYpe2NvbnN0IHk9Zy5tYXAo''@;'; put 'put ''Qz0+bmV3IHNPZShDLCExLGgsdGhpcy5pc0RhdGVFeGNsdWRlZChDKSwhMSwhMSkpO3JldHVybiB2JiZ0aGlzLmNhbGVuZGFyLmlzRGF5SW5DYWxlbmRhcih0aGlzLnRvZGF5KSYmKHlbdGhpcy50b2RheS5kYXRlLTFdLmlzVG9kYXlzRGF0ZT0hMCkseX1udW1EYXlzRnJvbVByZXZNb250aElu''@;'; put 'put ''Q2FsVmlldyhnLGgpe2NvbnN0IHY9ZnVuY3Rpb24gb09lKGQsZyxoKXtyZXR1cm4gbmV3IERhdGUoZCxnLGgpLmdldERheSgpfShnLGgsMSk7cmV0dXJuIHY+PXRoaXMuZmlyc3REYXlPZldlZWs/di10aGlzLmZpcnN0RGF5T2ZXZWVrOjcrdi10aGlzLmZpcnN0RGF5T2ZXZWVrfWlzRGF5SW5D''@;'; put 'put ''YWxlbmRhclZpZXcoZyl7cmV0dXJuISF0aGlzLmNhbGVuZGFyLmlzRGF5SW5DYWxlbmRhcihnKX1nZW5lcmF0ZUNhbGVuZGFyVmlldyhnLGgsdil7Y29uc3QgeT1bLi4uZywuLi5oLC4uLnZdLEM9W107Zm9yKGxldCBJPTA7STw2O0krKylDW0ldPXkuc2xpY2UoNypJLDcqKEkrMSkpO3JldHVy''@;'; put 'put ''biBDfWluaXRpYWxpemVTZWxlY3RlZERheSgpe3RoaXMuc2VsZWN0ZWREYXkmJnRoaXMuaXNEYXlJbkNhbGVuZGFyVmlldyh0aGlzLnNlbGVjdGVkRGF5KSYmKHRoaXMuY3Vyck1vbnRoRGF5Vmlld3NbdGhpcy5zZWxlY3RlZERheS5kYXRlLTFdLmlzU2VsZWN0ZWQ9ITApfWluaXRpYWxpemVG''@;'; put 'put ''b2N1c2FibGVEYXkoKXt0aGlzLmZvY3VzYWJsZURheSYmdGhpcy5pc0RheUluQ2FsZW5kYXJWaWV3KHRoaXMuZm9jdXNhYmxlRGF5KT90aGlzLnNldEZvY3VzYWJsZUZsYWcodGhpcy5mb2N1c2FibGVEYXksITApOnRoaXMuc2VsZWN0ZWREYXkmJnRoaXMuaXNEYXlJbkNhbGVuZGFyVmlldyh0''@;'; put 'put ''aGlzLnNlbGVjdGVkRGF5KT8odGhpcy5zZXRGb2N1c2FibGVGbGFnKHRoaXMuc2VsZWN0ZWREYXksITApLHRoaXMuZm9jdXNhYmxlRGF5PXRoaXMuc2VsZWN0ZWREYXkuY2xvbmUoKSk6dGhpcy5pc0RheUluQ2FsZW5kYXJWaWV3KHRoaXMudG9kYXkpPyh0aGlzLnNldEZvY3VzYWJsZUZsYWco''@;'; put 'put ''dGhpcy50b2RheSwhMCksdGhpcy5mb2N1c2FibGVEYXk9dGhpcy50b2RheS5jbG9uZSgpKToodGhpcy5mb2N1c2FibGVEYXk9bmV3IGM0KHRoaXMuY2FsZW5kYXIueWVhcix0aGlzLmNhbGVuZGFyLm1vbnRoLDE1KSx0aGlzLnNldEZvY3VzYWJsZUZsYWcodGhpcy5mb2N1c2FibGVEYXksITAp''@;'; put 'put ''KX1zZXRGb2N1c2FibGVGbGFnKGcsaCl7ZyYmKHRoaXMuY3Vyck1vbnRoRGF5Vmlld3NbZy5kYXRlLTFdLmlzRm9jdXNhYmxlPWgpfXVwZGF0ZUZvY3VzYWJsZURheShnKXt0aGlzLnNldEZvY3VzYWJsZUZsYWcodGhpcy5mb2N1c2FibGVEYXksITEpLHRoaXMuc2V0Rm9jdXNhYmxlRmxhZyhn''@;'; put 'put ''LCEwKSx0aGlzLmZvY3VzYWJsZURheT1nfX1sZXQgcWo9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmxvY2FsZT1oLHRoaXMuX2ZpcnN0RGF5T2ZXZWVrPTAsdGhpcy5pbml0aWFsaXplTG9jYWxlRGF0YSgpfWdldCBmaXJzdERheU9mV2Vlaygpe3JldHVybiB0aGlzLl9maXJz''@;'; put 'put ''dERheU9mV2Vla31nZXQgbG9jYWxlRGF5cygpe3JldHVybiB0aGlzLl9sb2NhbGVEYXlzfWdldCBsb2NhbGVEYXlzTmFycm93KCl7cmV0dXJuIHRoaXMuX2xvY2FsZURheXMubWFwKGg9PmgubmFycm93KX1nZXQgbG9jYWxlTW9udGhzQWJicmV2aWF0ZWQoKXtyZXR1cm4gdGhpcy5fbG9jYWxl''@;'; put 'put ''TW9udGhzQWJicmV2aWF0ZWR9Z2V0IGxvY2FsZU1vbnRoc1dpZGUoKXtyZXR1cm4gdGhpcy5fbG9jYWxlTW9udGhzV2lkZX1nZXQgbG9jYWxlRGF0ZUZvcm1hdCgpe3JldHVybiB0aGlzLl9sb2NhbGVEYXRlRm9ybWF0fWluaXRpYWxpemVMb2NhbGVEYXRhKCl7dGhpcy5pbml0aWFsaXplRmly''@;'; put 'put ''c3REYXlPZldlZWsoKSx0aGlzLmluaXRpYWxpemVMb2NhbGVEYXRlRm9ybWF0KCksdGhpcy5pbml0aWFsaXplTG9jYWxlTW9udGhzQWJicmV2aWF0ZWQoKSx0aGlzLmluaXRpYWxpemVMb2NhbGVNb250aHNXaWRlKCksdGhpcy5pbml0aWFsaXplTG9jYWxlRGF5cygpfWluaXRpYWxpemVMb2Nh''@;'; put 'put ''bGVEYXlzKCl7Y29uc3QgaD1bXSx2PXJwKHRoaXMubG9jYWxlLE4yLlN0YW5kYWxvbmUsQ2wuV2lkZSkuc2xpY2UoKSx5PXJwKHRoaXMubG9jYWxlLE4yLlN0YW5kYWxvbmUsQ2wuTmFycm93KS5zbGljZSgpLEM9dGhpcy5maXJzdERheU9mV2Vlaztmb3IobGV0IEk9MDtJPDc7SSsrKWgucHVz''@;'; put 'put ''aCh7ZGF5OnZbSV0sbmFycm93OnlbSV19KTtpZihDPjApe2NvbnN0IEk9aC5zcGxpY2UoMCxDKTtoLnB1c2goLi4uSSl9dGhpcy5fbG9jYWxlRGF5cz1ofWluaXRpYWxpemVMb2NhbGVNb250aHNBYmJyZXZpYXRlZCgpe3RoaXMuX2xvY2FsZU1vbnRoc0FiYnJldmlhdGVkPVBUKHRoaXMubG9j''@;'; put 'put ''YWxlLE4yLlN0YW5kYWxvbmUsQ2wuQWJicmV2aWF0ZWQpLnNsaWNlKCl9aW5pdGlhbGl6ZUxvY2FsZU1vbnRoc1dpZGUoKXt0aGlzLl9sb2NhbGVNb250aHNXaWRlPVBUKHRoaXMubG9jYWxlLE4yLlN0YW5kYWxvbmUsQ2wuV2lkZSkuc2xpY2UoKX1pbml0aWFsaXplRmlyc3REYXlPZldlZWso''@;'; put 'put ''KXt0aGlzLl9maXJzdERheU9mV2Vlaz1mdW5jdGlvbiBQcmUoZCl7cmV0dXJuIHJjKGQpW01vLkZpcnN0RGF5T2ZXZWVrXX0odGhpcy5sb2NhbGUpfWluaXRpYWxpemVMb2NhbGVEYXRlRm9ybWF0KCl7dGhpcy5fbG9jYWxlRGF0ZUZvcm1hdD1mdW5jdGlvbiBqNihkLGcpe3JldHVybiBHMyhy''@;'; put 'put ''YyhkKVtNby5EYXRlRm9ybWF0XSxnKX0odGhpcy5sb2NhbGUscDEuU2hvcnQpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShZZCkpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpO2NsYXNzIHY4''@;'; put 'put ''e2NvbnN0cnVjdG9yKGcsaCl7dGhpcy55ZWFyPWcsdGhpcy5tb250aD1oLHRoaXMuaW5pdGlhbGl6ZURheXNJbkNhbGVuZGFyKCl9aW5pdGlhbGl6ZURheXNJbkNhbGVuZGFyKCl7Y29uc3QgZz1IQWUodGhpcy55ZWFyLHRoaXMubW9udGgpO3RoaXMuZGF5cz1BcnJheShnKS5maWxsKG51bGwp''@;'; put 'put ''Lm1hcCgoaCx2KT0+bmV3IGM0KHRoaXMueWVhcix0aGlzLm1vbnRoLHYrMSkpfWlzRXF1YWwoZyl7cmV0dXJuISFnJiZ0aGlzLnllYXI9PT1nLnllYXImJnRoaXMubW9udGg9PT1nLm1vbnRofWlzRGF5SW5DYWxlbmRhcihnKXtyZXR1cm4hIWcmJnRoaXMueWVhcj09PWcueWVhciYmdGhpcy5t''@;'; put 'put ''b250aD09PWcubW9udGh9cHJldmlvdXNNb250aCgpe3JldHVybiAwPT09dGhpcy5tb250aD9uZXcgdjgodGhpcy55ZWFyLTEsMTEpOm5ldyB2OCh0aGlzLnllYXIsdGhpcy5tb250aC0xKX1uZXh0TW9udGgoKXtyZXR1cm4gMTE9PT10aGlzLm1vbnRoP25ldyB2OCh0aGlzLnllYXIrMSwwKTpu''@;'; put 'put ''ZXcgdjgodGhpcy55ZWFyLHRoaXMubW9udGgrMSl9fWxldCBndj0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fdG9kYXlzRnVsbERhdGU9bmV3IERhdGUsdGhpcy5fc2VsZWN0ZWREYXlDaGFuZ2U9bmV3ICRlLHRoaXMuX2Rpc3BsYXllZENhbGVuZGFyQ2hhbmdlPW5ldyAkZSx0''@;'; put 'put ''aGlzLl9mb2N1c09uQ2FsZW5kYXJDaGFuZ2U9bmV3ICRlLHRoaXMuX2ZvY3VzZWREYXlDaGFuZ2U9bmV3ICRlfWdldCBkaXNwbGF5ZWRDYWxlbmRhcigpe3JldHVybiB0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhcn1zZXREaXNwbGF5ZWRDYWxlbmRhcihoKXt0aGlzLl9kaXNwbGF5ZWRDYWxlbmRh''@;'; put 'put ''ci5pc0VxdWFsKGgpfHwodGhpcy5fZGlzcGxheWVkQ2FsZW5kYXI9aCx0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhckNoYW5nZS5uZXh0KCkpfWluaXRpYWxpemVUb2RheXNEYXRlKCl7dGhpcy5fdG9kYXlzRnVsbERhdGU9bmV3IERhdGUsdGhpcy5fdG9kYXk9bmV3IGM0KHRoaXMuX3RvZGF5c0Z1''@;'; put 'put ''bGxEYXRlLmdldEZ1bGxZZWFyKCksdGhpcy5fdG9kYXlzRnVsbERhdGUuZ2V0TW9udGgoKSx0aGlzLl90b2RheXNGdWxsRGF0ZS5nZXREYXRlKCkpfWdldCB0b2RheSgpe3JldHVybiB0aGlzLl90b2RheX1nZXQgc2VsZWN0ZWREYXlDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fc2VsZWN0ZWREYXlD''@;'; put 'put ''aGFuZ2UuYXNPYnNlcnZhYmxlKCl9bm90aWZ5U2VsZWN0ZWREYXlDaGFuZ2VkKGgpe3RoaXMuc2VsZWN0ZWREYXk9aCx0aGlzLl9zZWxlY3RlZERheUNoYW5nZS5uZXh0KGgpfWluaXRpYWxpemVDYWxlbmRhcigpe3RoaXMuZm9jdXNlZERheT1udWxsLHRoaXMuaW5pdGlhbGl6ZVRvZGF5c0Rh''@;'; put 'put ''dGUoKSx0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhcj10aGlzLnNlbGVjdGVkRGF5P25ldyB2OCh0aGlzLnNlbGVjdGVkRGF5LnllYXIsdGhpcy5zZWxlY3RlZERheS5tb250aCk6bmV3IHY4KHRoaXMudG9kYXkueWVhcix0aGlzLnRvZGF5Lm1vbnRoKX1jaGFuZ2VNb250aChoKXt0aGlzLnNldERp''@;'; put 'put ''c3BsYXllZENhbGVuZGFyKG5ldyB2OCh0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhci55ZWFyLGgpKX1jaGFuZ2VZZWFyKGgpe3RoaXMuc2V0RGlzcGxheWVkQ2FsZW5kYXIobmV3IHY4KGgsdGhpcy5fZGlzcGxheWVkQ2FsZW5kYXIubW9udGgpKX1tb3ZlVG9OZXh0TW9udGgoKXt0aGlzLnNldERp''@;'; put 'put ''c3BsYXllZENhbGVuZGFyKHRoaXMuX2Rpc3BsYXllZENhbGVuZGFyLm5leHRNb250aCgpKX1tb3ZlVG9QcmV2aW91c01vbnRoKCl7dGhpcy5zZXREaXNwbGF5ZWRDYWxlbmRhcih0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhci5wcmV2aW91c01vbnRoKCkpfW1vdmVUb0N1cnJlbnRNb250aCgpe3Ro''@;'; put 'put ''aXMuZGlzcGxheWVkQ2FsZW5kYXIuaXNEYXlJbkNhbGVuZGFyKHRoaXMudG9kYXkpfHx0aGlzLnNldERpc3BsYXllZENhbGVuZGFyKG5ldyB2OCh0aGlzLnRvZGF5LnllYXIsdGhpcy50b2RheS5tb250aCkpLHRoaXMuX2ZvY3VzT25DYWxlbmRhckNoYW5nZS5uZXh0KCl9aW5jcmVtZW50Rm9j''@;'; put 'put ''dXNEYXkoaCl7dGhpcy5mb2N1c2VkRGF5PXRoaXMuZm9jdXNlZERheS5pbmNyZW1lbnRCeShoKSx0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhci5pc0RheUluQ2FsZW5kYXIodGhpcy5mb2N1c2VkRGF5KT90aGlzLl9mb2N1c2VkRGF5Q2hhbmdlLm5leHQodGhpcy5mb2N1c2VkRGF5KTp0aGlzLnNl''@;'; put 'put ''dERpc3BsYXllZENhbGVuZGFyKG5ldyB2OCh0aGlzLmZvY3VzZWREYXkueWVhcix0aGlzLmZvY3VzZWREYXkubW9udGgpKSx0aGlzLl9mb2N1c09uQ2FsZW5kYXJDaGFuZ2UubmV4dCgpfWdldCBkaXNwbGF5ZWRDYWxlbmRhckNoYW5nZSgpe3JldHVybiB0aGlzLl9kaXNwbGF5ZWRDYWxlbmRh''@;'; put 'put ''ckNoYW5nZS5hc09ic2VydmFibGUoKX1nZXQgZm9jdXNPbkNhbGVuZGFyQ2hhbmdlKCl7cmV0dXJuIHRoaXMuX2ZvY3VzT25DYWxlbmRhckNoYW5nZS5hc09ic2VydmFibGUoKX1nZXQgZm9jdXNlZERheUNoYW5nZSgpe3JldHVybiB0aGlzLl9mb2N1c2VkRGF5Q2hhbmdlLmFzT2JzZXJ2YWJs''@;'; put 'put ''ZSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxGTD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdil7dGhpcy5fbmdab25lPWgsdGhpcy5wbGF0''@;'; put 'put ''Zm9ybUlkPXZ9Zm9jdXNDZWxsKGgpe3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMubmdab25lSXNTdGFibGVJbkJyb3dzZXIoKS5zdWJzY3JpYmUoKCk9Pntjb25zdCB2PWgubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbdGFiaW5kZXg9IjAiXScpO3YmJnYu''@;'; put 'put ''Zm9jdXMoKX0pfSl9Zm9jdXNJbnB1dChoKXt0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PnRoaXMubmdab25lSXNTdGFibGVJbkJyb3dzZXIoKS5zdWJzY3JpYmUoKCk9PmguZm9jdXMoKSkpfWVsZW1lbnRJc0ZvY3VzZWQoaCl7cmV0dXJuIFNsKHRoaXMucGxhdGZvcm1JZCkm''@;'; put 'put ''JmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1ofW5nWm9uZUlzU3RhYmxlSW5Ccm93c2VyKCl7cmV0dXJuIHRoaXMuX25nWm9uZS5vblN0YWJsZS5hc09ic2VydmFibGUoKS5waXBlKFczKCksTzIoKCk9PlNsKHRoaXMucGxhdGZvcm1JZCkpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9u''@;'; put 'put ''KGgpe3JldHVybiBuZXcoaHx8ZCkoQ2koX2wpLENpKEwyKSl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksZVo9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLl9sb2NhbGVIZWxwZXJTZXJ2aWNlPWgsdGhpcy5kaXNhYmxlZERh''@;'; put 'put ''dGVzPXttaW5EYXRlOm5ldyBjNCgwLDAsMSksbWF4RGF0ZTpuZXcgYzQoOTk5OSwxMSwzMSl9LHRoaXMuY2xkckxvY2FsZURhdGVGb3JtYXQ9ImRkL01NL3kiLHRoaXMubG9jYWxlRGlzcGxheUZvcm1hdD11cSx0aGlzLmRlbGltaXRlcnM9WyIvIiwiLyJdLHRoaXMuY2xkckxvY2FsZURhdGVG''@;'; put 'put ''b3JtYXQ9dGhpcy5fbG9jYWxlSGVscGVyU2VydmljZS5sb2NhbGVEYXRlRm9ybWF0LHRoaXMuaW5pdGlhbGl6ZUxvY2FsZURpc3BsYXlGb3JtYXQoKX1zZXRNaW5EYXRlKGgpe2lmKGgpe2NvbnN0W3YseSxDXT1oLnNwbGl0KCItIikubWFwKEk9PnBhcnNlSW50KEksMTApKTt0aGlzLmRpc2Fi''@;'; put 'put ''bGVkRGF0ZXMubWluRGF0ZT1uZXcgYzQodix5LTEsQyl9ZWxzZSB0aGlzLmRpc2FibGVkRGF0ZXMubWluRGF0ZT1uZXcgYzQoMCwwLDEpfXNldE1heERhdGUoaCl7aWYoaCl7Y29uc3Rbdix5LENdPWguc3BsaXQoIi0iKS5tYXAoST0+cGFyc2VJbnQoSSwxMCkpO3RoaXMuZGlzYWJsZWREYXRl''@;'; put 'put ''cy5tYXhEYXRlPW5ldyBjNCh2LHktMSxDKX1lbHNlIHRoaXMuZGlzYWJsZWREYXRlcy5tYXhEYXRlPW5ldyBjNCg5OTk5LDExLDMxKX1pbml0aWFsaXplTG9jYWxlRGlzcGxheUZvcm1hdCgpe2NvbnN0IGg9dGhpcy5jbGRyTG9jYWxlRGF0ZUZvcm1hdC50b0xvY2FsZUxvd2VyQ2FzZSgpO3Ro''@;'; put 'put ''aXMubG9jYWxlRGlzcGxheUZvcm1hdD1LTGUudGVzdChoKT91cTokTGUudGVzdChoKT94ZmU6ck9lLHRoaXMuZXh0cmFjdERlbGltaXRlcnMoKX1leHRyYWN0RGVsaW1pdGVycygpe2lmKHRoaXMuY2xkckxvY2FsZURhdGVGb3JtYXQpe2NvbnN0IHY9dGhpcy5jbGRyTG9jYWxlRGF0ZUZvcm1h''@;'; put 'put ''dC5yZXBsYWNlKG5PZSwiIikuc3BsaXQocUxlKTt2JiY0PT09di5sZW5ndGg/dGhpcy5kZWxpbWl0ZXJzPVt2WzFdLHZbMl1dOmNvbnNvbGUuZXJyb3IoIlVuZXhwZWN0ZWQgZGF0ZSBmb3JtYXQgcmVjZWl2ZWQuIERlbGltaXRlcnMgZXh0cmFjdGVkOiAiLHYpfX10b0xvY2FsZURpc3BsYXlG''@;'; put 'put ''b3JtYXRTdHJpbmcoaCl7aWYoaCl7aWYoaXNOYU4oaC5nZXRUaW1lKCkpKXJldHVybiIiO2NvbnN0IHY9aC5nZXREYXRlKCkseT1oLmdldE1vbnRoKCkrMSxDPXY+OT92LnRvU3RyaW5nKCk6IjAiK3YsST15Pjk/eS50b1N0cmluZygpOiIwIit5O3JldHVybiB0aGlzLmxvY2FsZURpc3BsYXlG''@;'; put 'put ''b3JtYXQ9PT11cT9DK3RoaXMuZGVsaW1pdGVyc1swXStJK3RoaXMuZGVsaW1pdGVyc1sxXStoLmdldEZ1bGxZZWFyKCk6dGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0PT09eGZlP0krdGhpcy5kZWxpbWl0ZXJzWzBdK0MrdGhpcy5kZWxpbWl0ZXJzWzFdK2guZ2V0RnVsbFllYXIoKTpoLmdldEZ1''@;'; put 'put ''bGxZZWFyKCkrdGhpcy5kZWxpbWl0ZXJzWzBdK0krdGhpcy5kZWxpbWl0ZXJzWzFdK0N9cmV0dXJuIiJ9Z2V0IHBsYWNlaG9sZGVyVGV4dCgpe2NvbnN0IGg9dGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0LmZvcm1hdDtyZXR1cm4gaFswXSt0aGlzLmRlbGltaXRlcnNbMF0raFsxXSt0aGlzLmRl''@;'; put 'put ''bGltaXRlcnNbMV0raFsyXX1pc1ZhbGlkTW9udGgoaCl7cmV0dXJuIGg+LTEmJmg8MTJ9aXNWYWxpZERhdGUoaCx2LHkpe3JldHVybiB5PjAmJnk8PUhBZShoLHYpfXZhbGlkYXRlQW5kR2V0RGF0ZShoLHYseSl7Y29uc3QgQz0raCxJPSt2LTEsWj0reTtpZighdGhpcy5pc1ZhbGlkTW9udGgo''@;'; put 'put ''SSl8fCF0aGlzLmlzVmFsaWREYXRlKEMsSSxaKSlyZXR1cm4gbnVsbDtjb25zdCB1ZT1mdW5jdGlvbiBhT2UoZCl7aWYoZD45OTk5fHxkPjEwMCYmZDw5OTl8fGQ8MTApcmV0dXJuLTE7aWYoZD45OTkpcmV0dXJuIGQ7Y29uc3QgZz0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCk7bGV0IHY9ZCsx''@;'; put 'put ''MDAqTWF0aC5mbG9vcihnLzEwMCk7cmV0dXJuIHY+ZysyMCYmKHYtPTEwMCksdn0oQyk7cmV0dXJuLTEhPT11ZT9uZXcgRGF0ZSh1ZSxJLFopOm51bGx9Z2V0RGF0ZVZhbHVlRnJvbURhdGVTdHJpbmcoaCl7aWYoIWgpcmV0dXJuIG51bGw7Y29uc3Qgdj1oLm1hdGNoKGVPZSk7aWYoIXZ8fDMh''@;'; put 'put ''PT12Lmxlbmd0aClyZXR1cm4gbnVsbDtjb25zdFt5LEMsSV09djtyZXR1cm4gdGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0PT09dXE/dGhpcy52YWxpZGF0ZUFuZEdldERhdGUoSSxDLHkpOnRoaXMubG9jYWxlRGlzcGxheUZvcm1hdD09PXhmZT90aGlzLnZhbGlkYXRlQW5kR2V0RGF0ZShJLHks''@;'; put 'put ''Qyk6dGhpcy52YWxpZGF0ZUFuZEdldERhdGUoeSxDLEkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShxaikpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLHRaPSgoKT0+e2NsYXNzIGR7Y29u''@;'; put 'put ''c3RydWN0b3IoKXt0aGlzLl90b3VjaGVkQ2hhbmdlPW5ldyAkZSx0aGlzLl9kaXJ0eUNoYW5nZT1uZXcgJGV9Z2V0IHRvdWNoZWRDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fdG91Y2hlZENoYW5nZS5hc09ic2VydmFibGUoKX1nZXQgZGlydHlDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fZGlydHlDaGFu''@;'; put 'put ''Z2UuYXNPYnNlcnZhYmxlKCl9bWFya0FzVG91Y2hlZCgpe3RoaXMuX3RvdWNoZWRDaGFuZ2UubmV4dCgpfW1hcmtBc0RpcnR5KCl7dGhpcy5fZGlydHlDaGFuZ2UubmV4dCgpfXNldERpc2FibGVkKGgpe3RoaXMuZGlzYWJsZWQ9aH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3Jl''@;'; put 'put ''dHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksTkFlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlPWgsdGhpcy5fdG9nZ2xlU2VydmljZT12LHRoaXMu''@;'; put 'put ''ZGF0ZUZvcm1Db250cm9sU2VydmljZT15LHRoaXMuY29tbW9uU3RyaW5ncz1DfXNldCBkYXlWaWV3KGgpe3RoaXMuX2RheVZpZXc9aH1nZXQgZGF5Vmlldygpe3JldHVybiB0aGlzLl9kYXlWaWV3fWdldCBkYXlTdHJpbmcoKXtyZXR1cm4gdGhpcy5kYXlWaWV3LmlzU2VsZWN0ZWQ/dGhpcy5j''@;'; put 'put ''b21tb25TdHJpbmdzLnBhcnNlKHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJTZWxlY3RlZExhYmVsLHtGVUxMX0RBVEU6dGhpcy5fZGF5Vmlldy5kYXlNb2RlbC50b0RhdGVTdHJpbmcoKX0pOnRoaXMuX2RheVZpZXcuZGF5TW9kZWwudG9EYXRlU3RyaW5nKCl9b25EYXlWaWV3''@;'; put 'put ''Rm9jdXMoKXt0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZm9jdXNlZERheT10aGlzLmRheVZpZXcuZGF5TW9kZWx9c2VsZWN0RGF5KCl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLm5vdGlmeVNlbGVjdGVkRGF5Q2hhbmdlZCh0aGlzLmRheVZpZXcuZGF5TW9kZWwpLHRoaXMuZGF0''@;'; put 'put ''ZUZvcm1Db250cm9sU2VydmljZS5tYXJrQXNEaXJ0eSgpLHRoaXMuX3RvZ2dsZVNlcnZpY2Uub3Blbj0hMX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoZ3YpLEt0KHpzKSxLdCh0WiksS3QobnMpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxz''@;'; put 'put ''ZWxlY3RvcnM6W1siY2xyLWRheSJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmRmkoImRheSIsITApfSxpbnB1dHM6e2RheVZpZXc6WyJjbHJEYXlWaWV3IiwiZGF5VmlldyJdfSxkZWNsczoyLHZhcnM6MTMsY29uc3RzOltbInR5cGUiLCJidXR0b24iLDEs''@;'; put 'put ''ImRheS1idG4iLDMsImNsaWNrIiwiZm9jdXMiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihudCgwLCJidXR0b24iLDApLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5zZWxlY3REYXkoKX0pKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gdi5vbkRheVZpZXdGb2N1cygp''@;'; put 'put ''fSksWXQoMSksb3QoKSksMiZoJiYoRmkoImlzLXRvZGF5Iix2LmRheVZpZXcuaXNUb2RheXNEYXRlKSgiaXMtZXhjbHVkZWQiLHYuZGF5Vmlldy5pc0V4Y2x1ZGVkKSgiaXMtZGlzYWJsZWQiLHYuZGF5Vmlldy5pc0Rpc2FibGVkKSgiaXMtc2VsZWN0ZWQiLHYuZGF5Vmlldy5pc1NlbGVjdGVk''@;'; put 'put ''KSxHaSgidGFiaW5kZXgiLHYuZGF5Vmlldy50YWJJbmRleCkoImFyaWEtY3VycmVudCIsdi5kYXlWaWV3LmlzVG9kYXlzRGF0ZT8iZGF0ZSI6ImZhbHNlIikoImFyaWEtbGFiZWwiLHYuZGF5U3RyaW5nKSgiYXJpYS1zZWxlY3RlZCIsdi5kYXlWaWV3LmlzU2VsZWN0ZWQpLHV0KDEpLEppKCIg''@;'; put 'put ''Iix2LmRheVZpZXcuZGF5TW9kZWwuZGF0ZSwiICIpKX0sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksVkFlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJKXt0aGlzLl9sb2NhbGVIZWxwZXJTZXJ2aWNlPWgsdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlPXYsdGhpcy5fZGF0''@;'; put 'put ''ZXBpY2tlckZvY3VzU2VydmljZT15LHRoaXMuX2RhdGVJT1NlcnZpY2U9Qyx0aGlzLl9lbFJlZj1JLHRoaXMuX3N1YnM9W10sdGhpcy5nZW5lcmF0ZUNhbGVuZGFyVmlldygpLHRoaXMuaW5pdGlhbGl6ZVN1YnNjcmlwdGlvbnMoKX1nZXQgbG9jYWxlRGF5cygpe3JldHVybiB0aGlzLl9sb2Nh''@;'; put 'put ''bGVIZWxwZXJTZXJ2aWNlLmxvY2FsZURheXN9Z2V0IGNhbGVuZGFyKCl7cmV0dXJuIHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5kaXNwbGF5ZWRDYWxlbmRhcn1nZXQgc2VsZWN0ZWREYXkoKXtyZXR1cm4gdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5fWdldCBm''@;'; put 'put ''b2N1c2VkRGF5KCl7cmV0dXJuIHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5mb2N1c2VkRGF5fWdldCB0b2RheSgpe3JldHVybiB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UudG9kYXl9aW5pdGlhbGl6ZVN1YnNjcmlwdGlvbnMoKXt0aGlzLl9zdWJzLnB1c2godGhpcy5fZGF0ZU5h''@;'; put 'put ''dmlnYXRpb25TZXJ2aWNlLmRpc3BsYXllZENhbGVuZGFyQ2hhbmdlLnN1YnNjcmliZSgoKT0+e3RoaXMuZ2VuZXJhdGVDYWxlbmRhclZpZXcoKX0pKSx0aGlzLl9zdWJzLnB1c2godGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmZvY3VzZWREYXlDaGFuZ2Uuc3Vic2NyaWJlKGg9Pnt0aGlz''@;'; put 'put ''LmNhbGVuZGFyVmlld01vZGVsLnVwZGF0ZUZvY3VzYWJsZURheShoKX0pKSx0aGlzLl9zdWJzLnB1c2godGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmZvY3VzT25DYWxlbmRhckNoYW5nZS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9kYXRlcGlja2VyRm9jdXNTZXJ2aWNlLmZvY3VzQ2VsbCh0''@;'; put 'put ''aGlzLl9lbFJlZil9KSl9Z2VuZXJhdGVDYWxlbmRhclZpZXcoKXt0aGlzLmNhbGVuZGFyVmlld01vZGVsPW5ldyB1T2UodGhpcy5jYWxlbmRhcix0aGlzLnNlbGVjdGVkRGF5LHRoaXMuZm9jdXNlZERheSx0aGlzLnRvZGF5LHRoaXMuX2xvY2FsZUhlbHBlclNlcnZpY2UuZmlyc3REYXlPZldl''@;'; put 'put ''ZWssdGhpcy5fZGF0ZUlPU2VydmljZS5kaXNhYmxlZERhdGVzKX1vbktleURvd24oaCl7aWYoaCYmdGhpcy5mb2N1c2VkRGF5KXN3aXRjaChoLmtleUNvZGUpe2Nhc2UgMzg6aC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5pbmNyZW1lbnRGb2N1c0RheSgt''@;'; put 'put ''Nyk7YnJlYWs7Y2FzZSA0MDpoLnByZXZlbnREZWZhdWx0KCksdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmluY3JlbWVudEZvY3VzRGF5KDcpO2JyZWFrO2Nhc2UgMzc6aC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5pbmNyZW1lbnRGb2N1c0RheSgt''@;'; put 'put ''MSk7YnJlYWs7Y2FzZSAzOTpoLnByZXZlbnREZWZhdWx0KCksdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmluY3JlbWVudEZvY3VzRGF5KDEpfX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9kYXRlcGlja2VyRm9jdXNTZXJ2aWNlLmZvY3VzQ2VsbCh0aGlzLl9lbFJlZil9bmdPbkRlc3Ry''@;'; put 'put ''b3koKXt0aGlzLl9zdWJzLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QocWopLEt0KGd2KSxLdChGTCksS3QoZVopLEt0KGJvKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltb''@;'; put 'put ''ImNsci1jYWxlbmRhciJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJkduKCJrZXlkb3duIixmdW5jdGlvbihDKXtyZXR1cm4gdi5vbktleURvd24oQyl9KX0sZGVjbHM6NCx2YXJzOjIsY29uc3RzOltbMSwiY2FsZW5kYXItdGFibGUiXSxbMSwiY2FsZW5kYXItcm93Iiwid2Vl''@;'; put 'put ''a2RheXMiXSxbImNsYXNzIiwiY2FsZW5kYXItY2VsbCB3ZWVrZGF5Iiwicm9sZSIsImhlYWRpbmciLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsiY2xhc3MiLCJjYWxlbmRhci1yb3ciLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsicm9sZSIsImhlYWRpbmciLDEsImNhbGVuZGFyLWNlbGwiLCJ3ZWVr''@;'; put 'put ''ZGF5Il0sWzEsImNhbGVuZGFyLXJvdyJdLFsiY2xhc3MiLCJjYWxlbmRhci1jZWxsIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiY2FsZW5kYXItY2VsbCJdLFszLCJjbHJEYXlWaWV3Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYobnQoMCwidGFibGUiLDApKDEsInRyIiwxKSxy''@;'; put 'put ''bigyLCRrLDIsMiwidGgiLDIpLG90KCkscm4oMyxxaywyLDEsInRyIiwzKSxvdCgpKSwyJmgmJih1dCgyKSxUdCgibmdGb3JPZiIsdi5sb2NhbGVEYXlzKSx1dCgxKSxUdCgibmdGb3JPZiIsdi5jYWxlbmRhclZpZXdNb2RlbC5jYWxlbmRhclZpZXcpKX0sZGVwZW5kZW5jaWVzOltOQWUseHNd''@;'; put 'put ''LGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLGNxPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5fZG9jdW1lbnQ9aCx0aGlzLl9pc1VzZXJBZ2VudE1vYmlsZT0hMSx0aGlzLl9kb2N1bWVudCYmKHRoaXMuX2lzVXNlckFnZW50TW9iaWxlPXRPZS50ZXN0KGguZGVmYXVsdFZpZXcu''@;'; put 'put ''bmF2aWdhdG9yLnVzZXJBZ2VudCksdGhpcy5faW5uZXJXaWR0aD1oLmRlZmF1bHRWaWV3LmlubmVyV2lkdGgpfWdldCBpc0VuYWJsZWQoKXtyZXR1cm4hKHRoaXMuX2RvY3VtZW50JiZ0aGlzLl9pbm5lcldpZHRoPDc2OCYmdGhpcy5faXNVc2VyQWdlbnRNb2JpbGUpfX1yZXR1cm4gZC5cdTAy''@;'; put 'put ''NzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShncykpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLEhMPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9jdXJyZW50Vmlldz0iREFZVklFVyIsdGhpcy5wb3Np''@;'; put 'put ''dGlvbj1jWyJib3R0b20tbGVmdCJdfWdldCBpc0RheVZpZXcoKXtyZXR1cm4iREFZVklFVyI9PT10aGlzLl9jdXJyZW50Vmlld31nZXQgaXNZZWFyVmlldygpe3JldHVybiJZRUFSVklFVyI9PT10aGlzLl9jdXJyZW50Vmlld31nZXQgaXNNb250aFZpZXcoKXtyZXR1cm4iTU9OVEhWSUVXIj09''@;'; put 'put ''PXRoaXMuX2N1cnJlbnRWaWV3fWNoYW5nZVRvTW9udGhWaWV3KCl7dGhpcy5fY3VycmVudFZpZXc9Ik1PTlRIVklFVyJ9Y2hhbmdlVG9ZZWFyVmlldygpe3RoaXMuX2N1cnJlbnRWaWV3PSJZRUFSVklFVyJ9Y2hhbmdlVG9EYXlWaWV3KCl7dGhpcy5fY3VycmVudFZpZXc9IkRBWVZJRVcifX1y''@;'; put 'put ''ZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxqQWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEkpe3RoaXMuX3ZpZXdNYW5hZ2VyU2Vydmlj''@;'; put 'put ''ZT1oLHRoaXMuX2xvY2FsZUhlbHBlclNlcnZpY2U9dix0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2U9eSx0aGlzLl9kYXRlcGlja2VyRm9jdXNTZXJ2aWNlPUMsdGhpcy5fZWxSZWY9SSx0aGlzLl9mb2N1c2VkTW9udGhJbmRleD10aGlzLmNhbGVuZGFyTW9udGhJbmRleH1nZXQgbW9udGhO''@;'; put 'put ''YW1lcygpe3JldHVybiB0aGlzLl9sb2NhbGVIZWxwZXJTZXJ2aWNlLmxvY2FsZU1vbnRoc1dpZGV9Z2V0IGNhbGVuZGFyTW9udGhJbmRleCgpe3JldHVybiB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZGlzcGxheWVkQ2FsZW5kYXIubW9udGh9Y2hhbmdlTW9udGgoaCl7dGhpcy5fZGF0''@;'; put 'put ''ZU5hdmlnYXRpb25TZXJ2aWNlLmNoYW5nZU1vbnRoKGgpLHRoaXMuX3ZpZXdNYW5hZ2VyU2VydmljZS5jaGFuZ2VUb0RheVZpZXcoKX1nZXRUYWJJbmRleChoKXtyZXR1cm4gaD09PXRoaXMuX2ZvY3VzZWRNb250aEluZGV4PzA6LTF9b25LZXlEb3duKGgpe2lmKGgpe2NvbnN0IHY9aC5rZXlD''@;'; put 'put ''b2RlOzM4PT09diYmdGhpcy5fZm9jdXNlZE1vbnRoSW5kZXg+MD8oaC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRNb250aEluZGV4LS0sdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpKTo0MD09PXYmJnRoaXMuX2ZvY3VzZWRNb250aElu''@;'; put 'put ''ZGV4PDExPyhoLnByZXZlbnREZWZhdWx0KCksdGhpcy5fZm9jdXNlZE1vbnRoSW5kZXgrKyx0aGlzLl9kYXRlcGlja2VyRm9jdXNTZXJ2aWNlLmZvY3VzQ2VsbCh0aGlzLl9lbFJlZikpOjM5PT09diYmdGhpcy5fZm9jdXNlZE1vbnRoSW5kZXg8Nj8oaC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMu''@;'; put 'put ''X2ZvY3VzZWRNb250aEluZGV4PXRoaXMuX2ZvY3VzZWRNb250aEluZGV4KzYsdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpKTozNz09PXYmJnRoaXMuX2ZvY3VzZWRNb250aEluZGV4PjUmJihoLnByZXZlbnREZWZhdWx0KCksdGhpcy5fZm9jdXNl''@;'; put 'put ''ZE1vbnRoSW5kZXg9dGhpcy5fZm9jdXNlZE1vbnRoSW5kZXgtNix0aGlzLl9kYXRlcGlja2VyRm9jdXNTZXJ2aWNlLmZvY3VzQ2VsbCh0aGlzLl9lbFJlZikpfX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9kYXRlcGlja2VyRm9jdXNTZXJ2aWNlLmZvY3VzQ2VsbCh0aGlzLl9lbFJlZil9fXJl''@;'; put 'put ''dHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KEhMKSxLdChxaiksS3QoZ3YpLEt0KEZMKSxLdChibykpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItbW9udGhwaWNrZXIiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVu''@;'; put 'put ''Y3Rpb24oaCx2KXsxJmgmJkduKCJrZXlkb3duIixmdW5jdGlvbihDKXtyZXR1cm4gdi5vbktleURvd24oQyl9KSwyJmgmJkZpKCJtb250aHBpY2tlciIsITApfSxkZWNsczoxLHZhcnM6MSxjb25zdHM6W1sidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwiY2FsZW5kYXItYnRuIG1vbnRoIiwzLCJp''@;'; put 'put ''cy1zZWxlY3RlZCIsImNsaWNrIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInR5cGUiLCJidXR0b24iLDEsImNhbGVuZGFyLWJ0biIsIm1vbnRoIiwzLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmcm4oMCxpJCwyLDQsImJ1dHRvbiIsMCksMiZoJiZUdCgibmdGb3JPZiIs''@;'; put 'put ''di5tb250aE5hbWVzKX0sZGVwZW5kZW5jaWVzOlt4c10sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCk7Y2xhc3Mgblp7Y29uc3RydWN0b3IoZyl7dGhpcy55ZWFyPWcsdGhpcy55ZWFyUmFuZ2U9W10sdGhpcy5nZW5lcmF0ZVllYXJSYW5nZSgpfWdldCBtaWRkbGVZZWFyKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''eWVhclJhbmdlW01hdGguZmxvb3IodGhpcy55ZWFyUmFuZ2UubGVuZ3RoLzIpXX1nZW5lcmF0ZVllYXJSYW5nZSgpe2NvbnN0IGg9dGhpcy55ZWFyLXRoaXMueWVhciUxMDt0aGlzLnllYXJSYW5nZT10aGlzLmdlbmVyYXRlUmFuZ2UoaCxoKzEwKX1nZW5lcmF0ZVJhbmdlKGcsaCl7cmV0dXJu''@;'; put 'put ''IEFycmF5LmZyb20oe2xlbmd0aDpoLWd9LCh2LHkpPT55K2cpfW5leHREZWNhZGUoKXtyZXR1cm4gbmV3IG5aKHRoaXMueWVhcisxMCl9cHJldmlvdXNEZWNhZGUoKXtyZXR1cm4gbmV3IG5aKHRoaXMueWVhci0xMCl9Y3VycmVudERlY2FkZSgpe3JldHVybiBuZXcgblooKG5ldyBEYXRlKS5n''@;'; put 'put ''ZXRGdWxsWWVhcigpKX1pblJhbmdlKGcpe3JldHVybiB0aGlzLnllYXJSYW5nZS5pbmRleE9mKGcpPi0xfX1sZXQgekFlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJKXt0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2U9aCx0aGlzLl92aWV3TWFuYWdlclNlcnZpY2U9dix0''@;'; put 'put ''aGlzLl9kYXRlcGlja2VyRm9jdXNTZXJ2aWNlPXksdGhpcy5fZWxSZWY9Qyx0aGlzLmNvbW1vblN0cmluZ3M9SSx0aGlzLnllYXJSYW5nZU1vZGVsPW5ldyBuWih0aGlzLmNhbGVuZGFyWWVhciksdGhpcy5fZm9jdXNlZFllYXI9dGhpcy5jYWxlbmRhclllYXIsdGhpcy51cGRhdGVSYW5nZSh0''@;'; put 'put ''aGlzLnllYXJSYW5nZU1vZGVsKX1nZXQgY2FsZW5kYXJZZWFyKCl7cmV0dXJuIHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5kaXNwbGF5ZWRDYWxlbmRhci55ZWFyfWluY3JlbWVudEZvY3VzWWVhckJ5KGgpe3RoaXMuX2ZvY3VzZWRZZWFyPXRoaXMuX2ZvY3VzZWRZZWFyK2gsdGhpcy55''@;'; put 'put ''ZWFyUmFuZ2VNb2RlbC5pblJhbmdlKHRoaXMuX2ZvY3VzZWRZZWFyKXx8KHRoaXMueWVhclJhbmdlTW9kZWw9aD4wP3RoaXMueWVhclJhbmdlTW9kZWwubmV4dERlY2FkZSgpOnRoaXMueWVhclJhbmdlTW9kZWwucHJldmlvdXNEZWNhZGUoKSksdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2Vydmlj''@;'; put 'put ''ZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpfWNoYW5nZVllYXIoaCl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmNoYW5nZVllYXIoaCksdGhpcy5fdmlld01hbmFnZXJTZXJ2aWNlLmNoYW5nZVRvRGF5VmlldygpfXByZXZpb3VzRGVjYWRlKCl7dGhpcy55ZWFyUmFuZ2VNb2RlbD10aGlz''@;'; put 'put ''LnllYXJSYW5nZU1vZGVsLnByZXZpb3VzRGVjYWRlKCksdGhpcy51cGRhdGVSYW5nZSh0aGlzLnllYXJSYW5nZU1vZGVsKX1jdXJyZW50RGVjYWRlKCl7dGhpcy55ZWFyUmFuZ2VNb2RlbC5pblJhbmdlKHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS50b2RheS55ZWFyKXx8KHRoaXMueWVh''@;'; put 'put ''clJhbmdlTW9kZWw9dGhpcy55ZWFyUmFuZ2VNb2RlbC5jdXJyZW50RGVjYWRlKCkpLHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNDZWxsKHRoaXMuX2VsUmVmKSx0aGlzLnVwZGF0ZVJhbmdlKHRoaXMueWVhclJhbmdlTW9kZWwpfW5leHREZWNhZGUoKXt0aGlzLnllYXJSYW5n''@;'; put 'put ''ZU1vZGVsPXRoaXMueWVhclJhbmdlTW9kZWwubmV4dERlY2FkZSgpLHRoaXMudXBkYXRlUmFuZ2UodGhpcy55ZWFyUmFuZ2VNb2RlbCl9Z2V0VGFiSW5kZXgoaCl7cmV0dXJuIHRoaXMueWVhclJhbmdlTW9kZWwuaW5SYW5nZSh0aGlzLl9mb2N1c2VkWWVhcil8fCh0aGlzLl9mb2N1c2VkWWVh''@;'; put 'put ''cj10aGlzLnllYXJSYW5nZU1vZGVsLmluUmFuZ2UodGhpcy5jYWxlbmRhclllYXIpP3RoaXMuY2FsZW5kYXJZZWFyOnRoaXMueWVhclJhbmdlTW9kZWwubWlkZGxlWWVhciksdGhpcy5fZm9jdXNlZFllYXI9PT1oPzA6LTF9b25LZXlEb3duKGgpe2lmKGgpe2NvbnN0IHY9aC5rZXlDb2RlOzM4''@;'; put 'put ''PT09dj8oaC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaW5jcmVtZW50Rm9jdXNZZWFyQnkoLTEpKTo0MD09PXY/KGgucHJldmVudERlZmF1bHQoKSx0aGlzLmluY3JlbWVudEZvY3VzWWVhckJ5KDEpKTozOT09PXY/KGgucHJldmVudERlZmF1bHQoKSx0aGlzLmluY3JlbWVudEZvY3VzWWVhckJ5''@;'; put 'put ''KDUpKTozNz09PXYmJihoLnByZXZlbnREZWZhdWx0KCksdGhpcy5pbmNyZW1lbnRGb2N1c1llYXJCeSgtNSkpfX11cGRhdGVSYW5nZShoKXt0aGlzLmRlY2FkZVJhbmdlPWAke2gueWVhclJhbmdlWzBdfSB0byAke2gueWVhclJhbmdlW2gueWVhclJhbmdlLmxlbmd0aC0xXX1gfW5nQWZ0ZXJW''@;'; put 'put ''aWV3SW5pdCgpe3RoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNDZWxsKHRoaXMuX2VsUmVmKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoZ3YpLEt0KEhMKSxLdChGTCksS3QoYm8pLEt0KG5zKSl9LGQuXHUwMjc1Y21wPVRpKHt0''@;'; put 'put ''eXBlOmQsc2VsZWN0b3JzOltbImNsci15ZWFycGlja2VyIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MSZoJiZHbigia2V5ZG93biIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25LZXlEb3duKEMpfSksMiZoJiZGaSgieWVhcnBpY2tlciIsITApfSxkZWNsczo5LHZh''@;'; put 'put ''cnM6Nyxjb25zdHM6W1sxLCJ5ZWFyLXN3aXRjaGVycyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2FsZW5kYXItYnRuIiwic3dpdGNoZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsImFuZ2xlIiwiZGlyZWN0aW9uIiwibGVmdCJdLFsic2hhcGUiLCJldmVudCJdLFsic2hhcGUiLCJhbmdsZSIsImRp''@;'; put 'put ''cmVjdGlvbiIsInJpZ2h0Il0sWzEsInllYXJzIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xhc3MiLCJjYWxlbmRhci1idG4geWVhciIsMywiaXMtc2VsZWN0ZWQiLCJjbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJjYWxlbmRhci1idG4iLCJ5ZWFyIiwzLCJj''@;'; put 'put ''bGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKG50KDAsImRpdiIsMCkoMSwiYnV0dG9uIiwxKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYucHJldmlvdXNEZWNhZGUoKX0pLENyKDIsImNkcy1pY29uIiwyKSxvdCgpLG50KDMsImJ1dHRvbiIsMSksR24oImNsaWNr''@;'; put 'put ''IixmdW5jdGlvbigpe3JldHVybiB2LmN1cnJlbnREZWNhZGUoKX0pLENyKDQsImNkcy1pY29uIiwzKSxvdCgpLG50KDUsImJ1dHRvbiIsMSksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2Lm5leHREZWNhZGUoKX0pLENyKDYsImNkcy1pY29uIiw0KSxvdCgpKCksbnQoNywiZGl2Iiw1''@;'; put 'put ''KSxybig4LG8kLDIsNCwiYnV0dG9uIiw2KSxvdCgpKSwyJmgmJih1dCgxKSxHaSgiYXJpYS1sYWJlbCIsdi5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclByZXZpb3VzRGVjYWRlKSx1dCgxKSxHaSgidGl0bGUiLHYuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJQcmV2aW91c0Rl''@;'; put 'put ''Y2FkZSksdXQoMSksR2koImFyaWEtbGFiZWwiLHYuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJDdXJyZW50RGVjYWRlKSx1dCgxKSxHaSgidGl0bGUiLHYuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJDdXJyZW50RGVjYWRlKSx1dCgxKSxHaSgiYXJpYS1sYWJlbCIsdi5jb21t''@;'; put 'put ''b25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlck5leHREZWNhZGUpLHV0KDEpLEdpKCJ0aXRsZSIsdi5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlck5leHREZWNhZGUpLHV0KDIpLFR0KCJuZ0Zvck9mIix2LnllYXJSYW5nZU1vZGVsLnllYXJSYW5nZSkpfSxkZXBlbmRlbmNpZXM6W1pvLHhz''@;'; put 'put ''XSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxHQWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDKXt0aGlzLl92aWV3TWFuYWdlclNlcnZpY2U9aCx0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2U9dix0aGlzLl9sb2NhbGVIZWxwZXJTZXJ2aWNlPXksdGhpcy5jb21tb25TdHJp''@;'; put 'put ''bmdzPUN9Z2V0IG1vbnRoQXR0clN0cmluZygpe3JldHVybiB0aGlzLmNvbW1vblN0cmluZ3MucGFyc2UodGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclNlbGVjdE1vbnRoVGV4dCx7Q0FMRU5EQVJfTU9OVEg6dGhpcy5jYWxlbmRhck1vbnRofSl9Z2V0IHllYXJBdHRyU3RyaW5n''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMuY29tbW9uU3RyaW5ncy5wYXJzZSh0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyU2VsZWN0WWVhclRleHQse0NBTEVOREFSX1lFQVI6dGhpcy5jYWxlbmRhclllYXIudG9TdHJpbmcoKX0pfWNoYW5nZVRvTW9udGhWaWV3KCl7dGhpcy5fdmlld01hbmFn''@;'; put 'put ''ZXJTZXJ2aWNlLmNoYW5nZVRvTW9udGhWaWV3KCl9Y2hhbmdlVG9ZZWFyVmlldygpe3RoaXMuX3ZpZXdNYW5hZ2VyU2VydmljZS5jaGFuZ2VUb1llYXJWaWV3KCl9Z2V0IGNhbGVuZGFyTW9udGgoKXtyZXR1cm4gdGhpcy5fbG9jYWxlSGVscGVyU2VydmljZS5sb2NhbGVNb250aHNBYmJyZXZp''@;'; put 'put ''YXRlZFt0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZGlzcGxheWVkQ2FsZW5kYXIubW9udGhdfWdldCBjYWxlbmRhclllYXIoKXtyZXR1cm4gdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmRpc3BsYXllZENhbGVuZGFyLnllYXJ9bmV4dE1vbnRoKCl7dGhpcy5fZGF0ZU5hdmlnYXRp''@;'; put 'put ''b25TZXJ2aWNlLm1vdmVUb05leHRNb250aCgpfXByZXZpb3VzTW9udGgoKXt0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UubW92ZVRvUHJldmlvdXNNb250aCgpfWN1cnJlbnRNb250aCgpe3RoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5tb3ZlVG9DdXJyZW50TW9udGgoKX19cmV0dXJu''@;'; put 'put ''IGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoSEwpLEt0KGd2KSxLdChxaiksS3QobnMpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWRheXBpY2tlciJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezIm''@;'; put 'put ''aCYmRmkoImRheXBpY2tlciIsITApfSxkZWNsczoxOCx2YXJzOjEzLGNvbnN0czpbWzEsImNsci1zci1vbmx5Il0sWzEsImNhbGVuZGFyLWhlYWRlciJdLFsxLCJjYWxlbmRhci1waWNrZXJzIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJjYWxlbmRhci1idG4iLCJtb250aHBpY2tlci10cmlnZ2Vy''@;'; put 'put ''IiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2FsZW5kYXItYnRuIiwieWVhcnBpY2tlci10cmlnZ2VyIiwzLCJjbGljayJdLFsxLCJjYWxlbmRhci1zd2l0Y2hlcnMiXSxbInR5cGUiLCJidXR0b24iLDEsImNhbGVuZGFyLWJ0biIsInN3aXRjaGVyIiwzLCJjbGljayJdLFsic2hh''@;'; put 'put ''cGUiLCJhbmdsZSIsImRpcmVjdGlvbiIsImxlZnQiXSxbInNoYXBlIiwiZXZlbnQiXSxbInNoYXBlIiwiYW5nbGUiLCJkaXJlY3Rpb24iLCJyaWdodCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKG50KDAsImRpdiIsMCksWXQoMSksb3QoKSxudCgyLCJkaXYiLDEpKDMsImRpdiIs''@;'; put 'put ''MikoNCwiYnV0dG9uIiwzKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuY2hhbmdlVG9Nb250aFZpZXcoKX0pLFl0KDUpLG90KCksbnQoNiwiYnV0dG9uIiw0KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuY2hhbmdlVG9ZZWFyVmlldygpfSksWXQoNyksb3QoKSgpLG50''@;'; put 'put ''KDgsImRpdiIsNSkoOSwiYnV0dG9uIiw2KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYucHJldmlvdXNNb250aCgpfSksQ3IoMTAsImNkcy1pY29uIiw3KSxvdCgpLG50KDExLCJidXR0b24iLDYpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5jdXJyZW50TW9udGgoKX0p''@;'; put 'put ''LENyKDEyLCJjZHMtaWNvbiIsOCksb3QoKSxudCgxMywiYnV0dG9uIiw2KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYubmV4dE1vbnRoKCl9KSxDcigxNCwiY2RzLWljb24iLDkpLG90KCkoKSgpLENyKDE1LCJjbHItY2FsZW5kYXIiKSxudCgxNiwiZGl2IiwwKSxZdCgxNyksb3Qo''@;'; put 'put ''KSksMiZoJiYodXQoMSksamkodi5jb21tb25TdHJpbmdzLmtleXMubW9kYWxDb250ZW50U3RhcnQpLHV0KDMpLEdpKCJhcmlhLWxhYmVsIix2Lm1vbnRoQXR0clN0cmluZykoInRpdGxlIix2Lm1vbnRoQXR0clN0cmluZyksdXQoMSksSmkoIiAiLHYuY2FsZW5kYXJNb250aCwiICIpLHV0KDEp''@;'; put 'put ''LEdpKCJhcmlhLWxhYmVsIix2LnllYXJBdHRyU3RyaW5nKSgidGl0bGUiLHYueWVhckF0dHJTdHJpbmcpLHV0KDEpLEppKCIgIix2LmNhbGVuZGFyWWVhciwiICIpLHV0KDIpLEdpKCJhcmlhLWxhYmVsIix2LmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyUHJldmlvdXNNb250aCksdXQo''@;'; put 'put ''MSksR2koInRpdGxlIix2LmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyUHJldmlvdXNNb250aCksdXQoMSksR2koImFyaWEtbGFiZWwiLHYuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJDdXJyZW50TW9udGgpLHV0KDEpLEdpKCJ0aXRsZSIsdi5jb21tb25TdHJpbmdzLmtleXMu''@;'; put 'put ''ZGF0ZXBpY2tlckN1cnJlbnRNb250aCksdXQoMSksR2koImFyaWEtbGFiZWwiLHYuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJOZXh0TW9udGgpLHV0KDQpLGppKHYuY29tbW9uU3RyaW5ncy5rZXlzLm1vZGFsQ29udGVudEVuZCkpfSxkZXBlbmRlbmNpZXM6W1ZBZSxab10sZW5jYXBz''@;'; put 'put ''dWxhdGlvbjoyfSksZH0pKCksV0FlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2KXt0aGlzLmNvbW1vblN0cmluZ3M9aCx0aGlzLnZpZXdNYW5hZ2VyU2VydmljZT12fWdldCBpc01vbnRoVmlldygpe3JldHVybiB0aGlzLnZpZXdNYW5hZ2VyU2VydmljZS5pc01vbnRoVmlld31nZXQg''@;'; put 'put ''aXNZZWFyVmlldygpe3JldHVybiB0aGlzLnZpZXdNYW5hZ2VyU2VydmljZS5pc1llYXJWaWV3fWdldCBpc0RheVZpZXcoKXtyZXR1cm4gdGhpcy52aWV3TWFuYWdlclNlcnZpY2UuaXNEYXlWaWV3fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChu''@;'; put 'put ''cyksS3QoSEwpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWRhdGVwaWNrZXItdmlldy1tYW5hZ2VyIl1dLGhvc3RBdHRyczpbInJvbGUiLCJkaWFsb2ciXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmKEdpKCJhcmlhLW1vZGFs''@;'; put 'put ''IiwhMCkoImFyaWEtbGFiZWwiLHYuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJEaWFsb2dMYWJlbCksRmkoImRhdGVwaWNrZXIiLCEwKSl9LGZlYXR1cmVzOltobyhbRkxdKV0sZGVjbHM6Myx2YXJzOjMsY29uc3RzOltbNCwibmdJZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEm''@;'; put 'put ''aCYmKHJuKDAsYSQsMSwwLCJjbHItbW9udGhwaWNrZXIiLDApLHJuKDEsbCQsMSwwLCJjbHIteWVhcnBpY2tlciIsMCkscm4oMixqdWUsMSwwLCJjbHItZGF5cGlja2VyIiwwKSksMiZoJiYoVHQoIm5nSWYiLHYuaXNNb250aFZpZXcpLHV0KDEpLFR0KCJuZ0lmIix2LmlzWWVhclZpZXcpLHV0''@;'; put 'put ''KDEpLFR0KCJuZ0lmIix2LmlzRGF5VmlldykpfSxkZXBlbmRlbmNpZXM6W2pBZSx6QWUsR0FlLE5vXSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxyWj0oKCk9PntjbGFzcyBkIGV4dGVuZHMgWnR7Y29uc3RydWN0b3IoaCx2LHksQyxJLFosdWUsX2UsQmUsTmUsS2UscHQsT3Qpe3N1cGVyKE90''@;'; put 'put ''LEtlLE5lLHB0KSx0aGlzLnJlbmRlcmVyPWgsdGhpcy50b2dnbGVTZXJ2aWNlPXYsdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2U9eSx0aGlzLmRhdGVwaWNrZXJFbmFibGVkU2VydmljZT1DLHRoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZT1JLHRoaXMuZGF0ZUlPU2VydmljZT1aLHRoaXMu''@;'; put 'put ''Y29tbW9uU3RyaW5ncz11ZSx0aGlzLmZvY3VzU2VydmljZT1fZSx0aGlzLnZpZXdNYW5hZ2VyU2VydmljZT1CZSx0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2U9TmUsdGhpcy5sYXlvdXRTZXJ2aWNlPUtlLHRoaXMubmdDb250cm9sU2VydmljZT1wdCx0aGlzLmlmQ29udHJvbFN0YXRlU2Vydmlj''@;'; put 'put ''ZT1PdCx0aGlzLmZvY3VzPSExLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuZm9jdXNTZXJ2aWNlLmZvY3VzQ2hhbmdlLnN1YnNjcmliZSgkdD0+e3RoaXMuZm9jdXM9JHR9KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy50b2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2Ny''@;'; put 'put ''aWJlKCgpPT57dGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlLm1hcmtBc1RvdWNoZWQoKX0pKX1zZXQgY2xyUG9zaXRpb24oaCl7aCYmY1toXSYmKHRoaXMudmlld01hbmFnZXJTZXJ2aWNlLnBvc2l0aW9uPWNbaF0pfWdldCBwb3BvdmVyUG9zaXRpb24oKXtyZXR1cm4gdGhpcy52aWV3TWFu''@;'; put 'put ''YWdlclNlcnZpY2UucG9zaXRpb259Z2V0IG9wZW4oKXtyZXR1cm4gdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW59c2V0IGFjdGlvbkJ1dHRvbihoKXt0aGlzLnRvZ2dsZUJ1dHRvbj1ofW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMudG9nZ2xlU2VydmljZS5v''@;'; put 'put ''cGVuQ2hhbmdlLnN1YnNjcmliZShoPT57aD90aGlzLmluaXRpYWxpemVDYWxlbmRhcigpOnRoaXMudG9nZ2xlQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX0pKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmxpc3RlbkZvckRhdGVDaGFuZ2VzKCkpfWdldCBpc0VuYWJsZWQoKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5kYXRlcGlja2VyRW5hYmxlZFNlcnZpY2UuaXNFbmFibGVkfWdldCBpc0lucHV0RGF0ZURpc2FibGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbCYmdGhpcy5jb250cm9sLmRpc2FibGVkfHx0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2UmJnRoaXMuZGF0ZUZvcm1Db250cm9s''@;'; put 'put ''U2VydmljZS5kaXNhYmxlZH1nZXRUb2dnbGVCdXR0b25MYWJlbChoKXtpZihoKXtjb25zdCB2PXRoaXMuZGF0ZUlPU2VydmljZS50b0xvY2FsZURpc3BsYXlGb3JtYXRTdHJpbmcoaC50b0RhdGUoKSk7cmV0dXJuIHRoaXMuY29tbW9uU3RyaW5ncy5wYXJzZSh0aGlzLmNvbW1vblN0cmluZ3Mu''@;'; put 'put ''a2V5cy5kYXRlcGlja2VyVG9nZ2xlQ2hhbmdlRGF0ZUxhYmVsLHtTRUxFQ1RFRF9EQVRFOnZ9KXx8dGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclRvZ2dsZX1yZXR1cm4gdGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclRvZ2dsZUNob29zZURhdGVMYWJlbHx8dGhp''@;'; put 'put ''cy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclRvZ2dsZX1saXN0ZW5Gb3JEYXRlQ2hhbmdlcygpe3JldHVybiB0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheUNoYW5nZS5waXBlKE41KHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5KSkuc3Vi''@;'; put 'put ''c2NyaWJlKGg9Pntjb25zdCB2PXRoaXMuZ2V0VG9nZ2xlQnV0dG9uTGFiZWwoaCkseT10aGlzLnRvZ2dsZUJ1dHRvbi5uYXRpdmVFbGVtZW50O3RoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHksImFyaWEtbGFiZWwiLHYpLHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHksInRpdGxlIix2''@;'; put 'put ''KX0pfWluaXRpYWxpemVDYWxlbmRhcigpe3RoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmluaXRpYWxpemVDYWxlbmRhcigpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChHYSksS3QoenMpLEt0KGd2KSxLdChjcSksS3QodFopLEt0KGVaKSxL''@;'; put 'put ''dChucyksS3Qoa2ZlKSxLdChITCksS3QoRXQpLEt0KFdlLDgpLEt0KEhlKSxLdChxZSkpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGF0ZS1jb250YWluZXIiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGgsdil7aWYoMSZoJiZ2byhadWUsNSksMiZoKXtsZXQgeTtI''@;'; put 'put ''aSh5PSRpKCkpJiYodi5hY3Rpb25CdXR0b249eS5maXJzdCl9fSxob3N0VmFyczo4LGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmRmkoImNsci1kYXRlLWNvbnRhaW5lciIsITApKCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIix2LmlzSW5wdXREYXRlRGlzYWJsZWQpKCJjbHIt''@;'; put 'put ''Zm9ybS1jb250cm9sIiwhMCkoImNsci1yb3ciLHYuYWRkR3JpZCgpKX0saW5wdXRzOntjbHJQb3NpdGlvbjoiY2xyUG9zaXRpb24ifSxmZWF0dXJlczpbaG8oW3EsenMsaDgsR3MscWosRXQsa2ZlLEhlLGVaLGd2LGNxLHRaLEhMLHFlXSksRG9dLG5nQ29udGVudFNlbGVjdG9yczokeSxkZWNs''@;'; put 'put ''czoxMyx2YXJzOjE0LGNvbnN0czpbWzQsIm5nSWYiXSxbMSwiY2xyLWNvbnRyb2wtY29udGFpbmVyIiwzLCJuZ0NsYXNzIl0sWyJjbHJQb3BvdmVyQW5jaG9yIiwiIiwxLCJjbHItaW5wdXQtd3JhcHBlciJdLFsxLCJjbHItaW5wdXQtZ3JvdXAiXSxbInR5cGUiLCJidXR0b24iLCJjbHJQb3Bv''@;'; put 'put ''dmVyT3BlbkNsb3NlQnV0dG9uIiwiIiwiY2xhc3MiLCJjbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb24iLDMsImRpc2FibGVkIiw0LCJuZ0lmIl0sWyJjbHJGb2N1c1RyYXAiLCIiLDQsImNsclBvcG92ZXJDb250ZW50IiwiY2xyUG9wb3ZlckNvbnRlbnRBdCIsImNsclBvcG92ZXJDb250ZW50''@;'; put 'put ''T3V0c2lkZUNsaWNrVG9DbG9zZSIsImNsclBvcG92ZXJDb250ZW50U2Nyb2xsVG9DbG9zZSJdLFsiY2xhc3MiLCJjbHItdmFsaWRhdGUtaWNvbiIsInN0YXR1cyIsImRhbmdlciIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJj''@;'; put 'put ''bGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xyUG9wb3Zlck9wZW5DbG9zZUJ1dHRvbiIsIiIsMSwiY2xyLWlucHV0LWdyb3Vw''@;'; put 'put ''LWljb24tYWN0aW9uIiwzLCJkaXNhYmxlZCJdLFsiYWN0aW9uQnV0dG9uIiwiIl0sWyJzdGF0dXMiLCJpbmZvIiwic2hhcGUiLCJjYWxlbmRhciJdLFsiY2xyRm9jdXNUcmFwIiwiIl0sWyJzdGF0dXMiLCJkYW5nZXIiLCJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsImFyaWEtaGlkZGVu''@;'; put 'put ''IiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXSxbInNoYXBlIiwiY2hlY2stY2lyY2xlIiwic3RhdHVzIiwic3VjY2VzcyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihLMChZdWUpLE5pKDApLHJu''@;'; put 'put ''KDEsenVlLDEsMCwibGFiZWwiLDApLG50KDIsImRpdiIsMSkoMywiZGl2IiwyKSg0LCJkaXYiLDMpLE5pKDUsMSkscm4oNix2ZywzLDEsImJ1dHRvbiIsNCkscm4oNyxTaiwxLDAsImNsci1kYXRlcGlja2VyLXZpZXctbWFuYWdlciIsNSksb3QoKSxybig4LEd1ZSwxLDAsImNkcy1pY29uIiw2''@;'; put 'put ''KSxybig5LHMkLDEsMCwiY2RzLWljb24iLDcpLG90KCkscm4oMTAsdSQsMSwwLCJuZy1jb250ZW50IiwwKSxybigxMSxjJCwxLDAsIm5nLWNvbnRlbnQiLDApLHJuKDEyLFd1ZSwxLDAsIm5nLWNvbnRlbnQiLDApLG90KCkpLDImaCYmKHV0KDEpLFR0KCJuZ0lmIiwhdi5sYWJlbCYmdi5hZGRH''@;'; put 'put ''cmlkKCkpLHV0KDEpLFR0KCJuZ0NsYXNzIix2LmNvbnRyb2xDbGFzcygpKSx1dCgyKSxGaSgiY2xyLWZvY3VzIix2LmZvY3VzKSx1dCgyKSxUdCgibmdJZiIsdi5pc0VuYWJsZWQpLHV0KDEpLFR0KCJjbHJQb3BvdmVyQ29udGVudCIsdi5vcGVuKSgiY2xyUG9wb3ZlckNvbnRlbnRBdCIsdi5w''@;'; put 'put ''b3BvdmVyUG9zaXRpb24pKCJjbHJQb3BvdmVyQ29udGVudE91dHNpZGVDbGlja1RvQ2xvc2UiLCEwKSgiY2xyUG9wb3ZlckNvbnRlbnRTY3JvbGxUb0Nsb3NlIiwhMCksdXQoMSksVHQoIm5nSWYiLHYuc2hvd0ludmFsaWQpLHV0KDEpLFR0KCJuZ0lmIix2LnNob3dWYWxpZCksdXQoMSksVHQo''@;'; put 'put ''Im5nSWYiLHYuc2hvd0hlbHBlciksdXQoMSksVHQoIm5nSWYiLHYuc2hvd0ludmFsaWQpLHV0KDEpLFR0KCJuZ0lmIix2LnNob3dWYWxpZCkpfSxkZXBlbmRlbmNpZXM6W1dBZSxObyxhdCxsYyx1dyxjdyxabyxkbCxod10sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksSWZlPSgoKT0+e2NsYXNz''@;'; put 'put ''IGQgZXh0ZW5kcyBTbntjb25zdHJ1Y3RvcihoLHYseSxDLEksWix1ZSxfZSxCZSxOZSxLZSxwdCxPdCl7c3VwZXIoaCxyWix2LEksQyx5KSx0aGlzLmVsPXksdGhpcy5yZW5kZXJlcj1DLHRoaXMuY29udHJvbD1JLHRoaXMuY29udGFpbmVyPVosdGhpcy5kYXRlSU9TZXJ2aWNlPXVlLHRoaXMu''@;'; put 'put ''ZGF0ZU5hdmlnYXRpb25TZXJ2aWNlPV9lLHRoaXMuZGF0ZXBpY2tlckVuYWJsZWRTZXJ2aWNlPUJlLHRoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZT1OZSx0aGlzLnBsYXRmb3JtSWQ9S2UsdGhpcy5mb2N1c1NlcnZpY2U9cHQsdGhpcy5kYXRlcGlja2VyRm9jdXNTZXJ2aWNlPU90LHRoaXMu''@;'; put 'put ''ZGF0ZUNoYW5nZT1uZXcgYXIoITEpLHRoaXMuaW5kZXg9MX1zZXQgZGF0ZShoKXt0aGlzLnByZXZpb3VzRGF0ZUNoYW5nZSE9PWgmJnRoaXMudXBkYXRlRGF0ZSh0aGlzLmdldFZhbGlkRGF0ZVZhbHVlRnJvbURhdGUoaCkpLHRoaXMuaW5pdGlhbENsckRhdGVJbnB1dFZhbHVlfHwodGhpcy5p''@;'; put 'put ''bml0aWFsQ2xyRGF0ZUlucHV0VmFsdWU9aCl9c2V0IG1pbihoKXt0aGlzLmRhdGVJT1NlcnZpY2Uuc2V0TWluRGF0ZShoKX1zZXQgbWF4KGgpe3RoaXMuZGF0ZUlPU2VydmljZS5zZXRNYXhEYXRlKGgpfW5nT25Jbml0KCl7c3VwZXIubmdPbkluaXQoKSx0aGlzLnBvcHVsYXRlU2VydmljZXNG''@;'; put 'put ''cm9tQ29udGFpbmVyQ29tcG9uZW50KCksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5saXN0ZW5Gb3JVc2VyU2VsZWN0ZWREYXlDaGFuZ2VzKCksdGhpcy5saXN0ZW5Gb3JDb250cm9sVmFsdWVDaGFuZ2VzKCksdGhpcy5saXN0ZW5Gb3JUb3VjaENoYW5nZXMoKSx0aGlzLmxpc3RlbkZv''@;'; put 'put ''ckRpcnR5Q2hhbmdlcygpLHRoaXMubGlzdGVuRm9ySW5wdXRSZWZvY3VzKCkpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMucHJvY2Vzc0luaXRpYWxJbnB1dHMoKX1zZXRGb2N1c1N0YXRlcygpe3RoaXMuc2V0Rm9jdXMoITApfXRyaWdnZXJWYWxpZGF0aW9uKCl7c3VwZXIudHJpZ2dlclZhbGlk''@;'; put 'put ''YXRpb24oKSx0aGlzLnNldEZvY3VzKCExKX1nZXQgcGxhY2Vob2xkZXJUZXh0KCl7cmV0dXJuIHRoaXMucGxhY2Vob2xkZXI/dGhpcy5wbGFjZWhvbGRlcjp0aGlzLmRhdGVJT1NlcnZpY2UucGxhY2Vob2xkZXJUZXh0fWdldCBpbnB1dFR5cGUoKXtyZXR1cm4gU2wodGhpcy5wbGF0Zm9ybUlk''@;'; put 'put ''KSYmdGhpcy51c2luZ05hdGl2ZURhdGVwaWNrZXIoKT8iZGF0ZSI6InRleHQifW9uVmFsdWVDaGFuZ2UoaCl7Y29uc3Qgdj10aGlzLmRhdGVJT1NlcnZpY2UuZ2V0RGF0ZVZhbHVlRnJvbURhdGVTdHJpbmcoaC52YWx1ZSk7aWYodGhpcy51c2luZ0NsYXJpdHlEYXRlcGlja2VyKCkmJnYpdGhp''@;'; put 'put ''cy51cGRhdGVEYXRlKHYsITApO2Vsc2UgaWYodGhpcy51c2luZ05hdGl2ZURhdGVwaWNrZXIoKSl7Y29uc3RbeSxDLEldPWgudmFsdWUuc3BsaXQoIi0iKTt0aGlzLnVwZGF0ZURhdGUobmV3IERhdGUoK3ksK0MtMSwrSSksITApfWVsc2UgdGhpcy5lbWl0RGF0ZU91dHB1dChudWxsKX1zZXQg''@;'; put 'put ''ZGlzYWJsZWQoaCl7dGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlJiZ0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2Uuc2V0RGlzYWJsZWQoWmEoaCkpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2U/dGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNl''@;'; put 'put ''LmRpc2FibGVkOm51bGx9dXNpbmdDbGFyaXR5RGF0ZXBpY2tlcigpe3JldHVybiB0aGlzLmRhdGVwaWNrZXJFbmFibGVkU2VydmljZS5pc0VuYWJsZWR9dXNpbmdOYXRpdmVEYXRlcGlja2VyKCl7cmV0dXJuIXRoaXMuZGF0ZXBpY2tlckVuYWJsZWRTZXJ2aWNlLmlzRW5hYmxlZH1zZXRGb2N1''@;'; put 'put ''cyhoKXt0aGlzLmZvY3VzU2VydmljZSYmKHRoaXMuZm9jdXNTZXJ2aWNlLmZvY3VzZWQ9aCl9cG9wdWxhdGVTZXJ2aWNlc0Zyb21Db250YWluZXJDb21wb25lbnQoKXt0aGlzLmNvbnRhaW5lcnx8KHRoaXMuZGF0ZUlPU2VydmljZT10aGlzLmdldFByb3ZpZGVyRnJvbUNvbnRhaW5lcihlWiks''@;'; put 'put ''dGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2U9dGhpcy5nZXRQcm92aWRlckZyb21Db250YWluZXIoZ3YpLHRoaXMuZGF0ZXBpY2tlckVuYWJsZWRTZXJ2aWNlPXRoaXMuZ2V0UHJvdmlkZXJGcm9tQ29udGFpbmVyKGNxKSx0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2U9dGhpcy5nZXRQcm92''@;'; put 'put ''aWRlckZyb21Db250YWluZXIodFopKX1wcm9jZXNzSW5pdGlhbElucHV0cygpe3RoaXMuZGF0ZXBpY2tlckhhc0Zvcm1Db250cm9sKCk/dGhpcy51cGRhdGVEYXRlKHRoaXMuZGF0ZUlPU2VydmljZS5nZXREYXRlVmFsdWVGcm9tRGF0ZVN0cmluZyh0aGlzLmNvbnRyb2wudmFsdWUpKTp0aGlz''@;'; put 'put ''LnVwZGF0ZURhdGUodGhpcy5pbml0aWFsQ2xyRGF0ZUlucHV0VmFsdWUpfXVwZGF0ZURhdGUoaCx2PSExKXtjb25zdCB5PXRoaXMuZ2V0VmFsaWREYXRlVmFsdWVGcm9tRGF0ZShoKTt2P3RoaXMuZW1pdERhdGVPdXRwdXQoeSk6dGhpcy5wcmV2aW91c0RhdGVDaGFuZ2U9eSx0aGlzLmRhdGVO''@;'; put 'put ''YXZpZ2F0aW9uU2VydmljZSYmKHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5PXk/bmV3IGM0KHkuZ2V0RnVsbFllYXIoKSx5LmdldE1vbnRoKCkseS5nZXREYXRlKCkpOm51bGwpLHRoaXMudXBkYXRlSW5wdXQoeSl9dXBkYXRlSW5wdXQoaCl7aWYoaCl7Y29uc3Qgdj10''@;'; put 'put ''aGlzLmRhdGVJT1NlcnZpY2UudG9Mb2NhbGVEaXNwbGF5Rm9ybWF0U3RyaW5nKGgpO3RoaXMudXNpbmdOYXRpdmVEYXRlcGlja2VyKCk/KGguc2V0TWludXRlcyhoLmdldE1pbnV0ZXMoKS1oLmdldFRpbWV6b25lT2Zmc2V0KCkpLHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbC5u''@;'; put 'put ''YXRpdmVFbGVtZW50LCJ2YWx1ZUFzRGF0ZSIsaCkpOnRoaXMuZGF0ZXBpY2tlckhhc0Zvcm1Db250cm9sKCkmJnYhPT10aGlzLmNvbnRyb2wudmFsdWU/dGhpcy5jb250cm9sLmNvbnRyb2wuc2V0VmFsdWUodik6dGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsLm5hdGl2ZUVsZW1l''@;'; put 'put ''bnQsInZhbHVlIix2KX1lbHNlIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsIiIpfWdldFZhbGlkRGF0ZVZhbHVlRnJvbURhdGUoaCl7aWYodGhpcy5kYXRlSU9TZXJ2aWNlKXtjb25zdCB2PXRoaXMuZGF0ZUlPU2VydmljZS50b0xvY2Fs''@;'; put 'put ''ZURpc3BsYXlGb3JtYXRTdHJpbmcoaCk7cmV0dXJuIHRoaXMuZGF0ZUlPU2VydmljZS5nZXREYXRlVmFsdWVGcm9tRGF0ZVN0cmluZyh2KX1yZXR1cm4gbnVsbH1lbWl0RGF0ZU91dHB1dChoKXshZnVuY3Rpb24gbE9lKGQsZyl7cmV0dXJuIGQgaW5zdGFuY2VvZiBEYXRlJiZnIGluc3RhbmNl''@;'; put 'put ''b2YgRGF0ZSYmZC5nZXRGdWxsWWVhcigpPT09Zy5nZXRGdWxsWWVhcigpJiZkLmdldE1vbnRoKCk9PT1nLmdldE1vbnRoKCkmJmQuZ2V0RGF0ZSgpPT09Zy5nZXREYXRlKCl9KGgsdGhpcy5wcmV2aW91c0RhdGVDaGFuZ2UpPyh0aGlzLmRhdGVDaGFuZ2UuZW1pdChoKSx0aGlzLnByZXZpb3Vz''@;'; put 'put ''RGF0ZUNoYW5nZT1oKTohaCYmdGhpcy5wcmV2aW91c0RhdGVDaGFuZ2UmJih0aGlzLmRhdGVDaGFuZ2UuZW1pdChudWxsKSx0aGlzLnByZXZpb3VzRGF0ZUNoYW5nZT1udWxsKX1kYXRlcGlja2VySGFzRm9ybUNvbnRyb2woKXtyZXR1cm4hIXRoaXMuY29udHJvbH1saXN0ZW5Gb3JDb250cm9s''@;'; put 'put ''VmFsdWVDaGFuZ2VzKCl7cmV0dXJuIGFhKHRoaXMuZGF0ZXBpY2tlckhhc0Zvcm1Db250cm9sKCkpLnBpcGUoTzIoaD0+aCksWWgoKCk9PnRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMpLE8yKCgpPT4hdGhpcy5kYXRlcGlja2VyRm9jdXNTZXJ2aWNlLmVsZW1lbnRJc0ZvY3VzZWQodGhpcy5l''@;'; put 'put ''bC5uYXRpdmVFbGVtZW50KSkpLnN1YnNjcmliZShoPT50aGlzLnVwZGF0ZURhdGUodGhpcy5kYXRlSU9TZXJ2aWNlLmdldERhdGVWYWx1ZUZyb21EYXRlU3RyaW5nKGgpKSl9bGlzdGVuRm9yVXNlclNlbGVjdGVkRGF5Q2hhbmdlcygpe3JldHVybiB0aGlzLmRhdGVOYXZpZ2F0aW9uU2Vydmlj''@;'; put 'put ''ZS5zZWxlY3RlZERheUNoYW5nZS5zdWJzY3JpYmUoaD0+dGhpcy51cGRhdGVEYXRlKGgudG9EYXRlKCksITApKX1saXN0ZW5Gb3JUb3VjaENoYW5nZXMoKXtyZXR1cm4gdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlLnRvdWNoZWRDaGFuZ2UucGlwZShPMigoKT0+dGhpcy5kYXRlcGlja2Vy''@;'; put 'put ''SGFzRm9ybUNvbnRyb2woKSkpLnN1YnNjcmliZSgoKT0+dGhpcy5jb250cm9sLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpKX1saXN0ZW5Gb3JEaXJ0eUNoYW5nZXMoKXtyZXR1cm4gdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlLmRpcnR5Q2hhbmdlLnBpcGUoTzIoKCk9PnRoaXMuZGF0ZXBp''@;'; put 'put ''Y2tlckhhc0Zvcm1Db250cm9sKCkpKS5zdWJzY3JpYmUoKCk9PnRoaXMuY29udHJvbC5jb250cm9sLm1hcmtBc0RpcnR5KCkpfWxpc3RlbkZvcklucHV0UmVmb2N1cygpe3JldHVybiB0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheUNoYW5nZS5waXBlKE8yKGg9PiEhaCkp''@;'; put 'put ''LnN1YnNjcmliZSgoKT0+dGhpcy5kYXRlcGlja2VyRm9jdXNTZXJ2aWNlLmZvY3VzSW5wdXQodGhpcy5lbC5uYXRpdmVFbGVtZW50KSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KFVpKSxLdChTcyksS3QoYm8pLEt0KEdhKSxLdChEZiwxMCks''@;'; put 'put ''S3QoclosOCksS3QoZVosOCksS3QoZ3YsOCksS3QoY3EsOCksS3QodFosOCksS3QoTDIpLEt0KGtmZSw4KSxLdChGTCkpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJEYXRlIiwiIl1dLGhvc3RWYXJzOjUsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MSZo''@;'; put 'put ''JiZHbigiZm9jdXMiLGZ1bmN0aW9uKCl7cmV0dXJuIHYuc2V0Rm9jdXNTdGF0ZXMoKX0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiB2LnRyaWdnZXJWYWxpZGF0aW9uKCl9KSgiY2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5vblZhbHVlQ2hhbmdlKEMudGFyZ2V0KX0pLDImaCYmKEIz''@;'; put 'put ''KCJkaXNhYmxlZCIsdi5kaXNhYmxlZCksR2koInBsYWNlaG9sZGVyIix2LnBsYWNlaG9sZGVyVGV4dCkoInR5cGUiLHYuaW5wdXRUeXBlKSxGaSgiY2xyLWlucHV0IiwhMCkpfSxpbnB1dHM6e3BsYWNlaG9sZGVyOiJwbGFjZWhvbGRlciIsZGF0ZTpbImNsckRhdGUiLCJkYXRlIl0sbWluOiJt''@;'; put 'put ''aW4iLG1heDoibWF4IixkaXNhYmxlZDoiZGlzYWJsZWQifSxvdXRwdXRzOntkYXRlQ2hhbmdlOiJjbHJEYXRlQ2hhbmdlIn0sZmVhdHVyZXM6W2hvKFtGTF0pLERvXX0pLGR9KSgpLGZPZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7aHMuYWRkSWNvbnMoS2gsVGYsRHksTHNlLE9zZSl9''@;'; put 'put ''fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W1tiYSxSLHFhLFJjLERzLHNxLEpyXV19KSxkfSkoKTtuZXcgemUodm9pZCAwKTtsZXQgcE9lPSgoKT0+e2NsYXNz''@;'; put 'put ''IGR7Y29uc3RydWN0b3IoKXtocy5hZGRJY29ucyhoVixSc2UsS2gsVGYpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHtpbXBvcnRzOltbYmEsdGQsRHMsSnJdLEpyXX0pLGR9''@;'; put 'put ''KSgpLFlBZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fZHluYW1pYz0hMX1uZ09uSW5pdCgpe3RoaXMubGFiZWwmJnRoaXMubGFiZWwuZGlzYWJsZUdyaWQoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1Y21wPVRp''@;'; put 'put ''KHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1yYWRpby13cmFwcGVyIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtpZigxJmgmJnhvKHksYXQsNyksMiZoKXtsZXQgQztIaShDPSRpKCkpJiYodi5sYWJlbD1DLmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0''@;'; put 'put ''aW9uKGgsdil7MiZoJiZGaSgiY2xyLXJhZGlvLXdyYXBwZXIiLCEwKX0sZmVhdHVyZXM6W2hvKFtxXSldLG5nQ29udGVudFNlbGVjdG9yczpoJCxkZWNsczozLHZhcnM6MSxjb25zdHM6W1s0LCJuZ0lmIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoSzAoY2gpLE5pKDApLE5pKDEs''@;'; put 'put ''MSkscm4oMixmJCwxLDAsImxhYmVsIiwwKSksMiZoJiYodXQoMiksVHQoIm5nSWYiLCF2LmxhYmVsKSl9LGRlcGVuZGVuY2llczpbTm8sYXRdLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLERmZT0oKCk9PntjbGFzcyBkIGV4dGVuZHMgU257Y29uc3RydWN0b3IoaCx2LHksQyxJKXtzdXBlciho''@;'; put 'put ''LFlBZSx2LHksQyxJKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoVWkpLEt0KFNzKSxLdChEZiwxMCksS3QoR2EpLEt0KGJvKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNsclJhZGlvIiwiIl1dLGZlYXR1cmVz''@;'; put 'put ''OltEb119KSxkfSkoKSxnT2U9KCgpPT57Y2xhc3MgZCBleHRlbmRzIFp0e2NvbnN0cnVjdG9yKGgsdix5LEMpe3N1cGVyKEMsaCx2LHkpLHRoaXMubGF5b3V0U2VydmljZT1oLHRoaXMuY29udHJvbENsYXNzU2VydmljZT12LHRoaXMubmdDb250cm9sU2VydmljZT15LHRoaXMuaWZDb250cm9s''@;'; put 'put ''U3RhdGVTZXJ2aWNlPUMsdGhpcy5pbmxpbmU9ITF9c2V0IGNscklubGluZShoKXt0aGlzLmlubGluZT0ic3RyaW5nIj09dHlwZW9mIGg/ImZhbHNlIiE9PWg6ISFofWdldCBjbHJJbmxpbmUoKXtyZXR1cm4gdGhpcy5pbmxpbmV9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5zZXRBcmlhUm9s''@;'; put 'put ''ZXMoKX1zZXRBcmlhUm9sZXMoKXt0aGlzLnJvbGU9dGhpcy5yYWRpb3MubGVuZ3RoPyJncm91cCI6bnVsbH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoV2UsOCksS3QoRXQpLEt0KEhlKSxLdChxZSkpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpk''@;'; put 'put ''LHNlbGVjdG9yczpbWyJjbHItcmFkaW8tY29udGFpbmVyIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtpZigxJmgmJnhvKHksRGZlLDUpLDImaCl7bGV0IEM7SGkoQz0kaSgpKSYmKHYucmFkaW9zPUMpfX0saG9zdFZhcnM6Nyxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsy''@;'; put 'put ''JmgmJihHaSgicm9sZSIsdi5yb2xlKSxGaSgiY2xyLWZvcm0tY29udHJvbCIsITApKCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIixudWxsPT12LmNvbnRyb2w/bnVsbDp2LmNvbnRyb2wuZGlzYWJsZWQpKCJjbHItcm93Iix2LmFkZEdyaWQoKSkpfSxpbnB1dHM6e2NscklubGluZToiY2xy''@;'; put 'put ''SW5saW5lIn0sZmVhdHVyZXM6W2hvKFtIZSxxZSxFdCxnZV0pLERvXSxuZ0NvbnRlbnRTZWxlY3RvcnM6Q3AsZGVjbHM6MTAsdmFyczo5LGNvbnN0czpbWzQsIm5nSWYiXSxbMSwiY2xyLWNvbnRyb2wtY29udGFpbmVyIiwzLCJuZ0NsYXNzIl0sWzEsImNsci1zdWJ0ZXh0LXdyYXBwZXIiXSxb''@;'; put 'put ''ImNsYXNzIiwiY2xyLXZhbGlkYXRlLWljb24iLCJzdGF0dXMiLCJkYW5nZXIiLCJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItdmFsaWRhdGUtaWNvbiIsInNoYXBlIiwiY2hlY2stY2lyY2xlIiwic3RhdHVz''@;'; put 'put ''Iiwic3VjY2VzcyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsNCwibmdJZiJdLFsic3RhdHVzIiwiZGFuZ2VyIiwic2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsImNsci12YWxpZGF0ZS1pY29uIl0sWyJzaGFwZSIsImNoZWNrLWNpcmNsZSIsInN0YXR1''@;'; put 'put ''cyIsInN1Y2Nlc3MiLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsImNsci12YWxpZGF0ZS1pY29uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoSzAoeTApLE5pKDApLHJuKDEsSWwsMSwwLCJsYWJlbCIsMCksbnQoMiwiZGl2IiwxKSxOaSgzLDEpLG50KDQsImRpdiIsMikscm4oNSxt''@;'; put 'put ''TCwxLDAsIm5nLWNvbnRlbnQiLDApLHJuKDYsZCQsMSwwLCJjZHMtaWNvbiIsMykscm4oNyxwJCwxLDAsImNkcy1pY29uIiw0KSxybig4LGl2LDEsMCwibmctY29udGVudCIsMCkscm4oOSx2TCwxLDAsIm5nLWNvbnRlbnQiLDApLG90KCkoKSksMiZoJiYodXQoMSksVHQoIm5nSWYiLCF2Lmxh''@;'; put 'put ''YmVsJiZ2LmFkZEdyaWQoKSksdXQoMSksRmkoImNsci1jb250cm9sLWlubGluZSIsdi5jbHJJbmxpbmUpLFR0KCJuZ0NsYXNzIix2LmNvbnRyb2xDbGFzcygpKSx1dCgzKSxUdCgibmdJZiIsdi5zaG93SGVscGVyKSx1dCgxKSxUdCgibmdJZiIsdi5zaG93SW52YWxpZCksdXQoMSksVHQoIm5n''@;'; put 'put ''SWYiLHYuc2hvd1ZhbGlkKSx1dCgxKSxUdCgibmdJZiIsdi5zaG93SW52YWxpZCksdXQoMSksVHQoIm5nSWYiLHYuc2hvd1ZhbGlkKSl9LGRlcGVuZGVuY2llczpbTm8sYXQsbGMsWm9dLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLG1PZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7aHMu''@;'; put 'put ''YWRkSWNvbnMoS2gsVGYpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHtpbXBvcnRzOltbYmEsSnIsUixEc10sSnJdfSksZH0pKCksdk9lPSgoKT0+e2NsYXNzIGR7Y29uc3Ry''@;'; put 'put ''dWN0b3IoKXtocy5hZGRJY29ucyhLaCxUZil9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W1tiYSxKcixSLERzXSxKcl19KSxkfSkoKSxpWj0oKCk9PntjbGFz''@;'; put 'put ''cyBkIGV4dGVuZHMgWnR7Y29uc3RydWN0b3IoaCx2LHksQyl7c3VwZXIoQyxoLHYseSksdGhpcy5sYXlvdXRTZXJ2aWNlPWgsdGhpcy5jb250cm9sQ2xhc3NTZXJ2aWNlPXYsdGhpcy5uZ0NvbnRyb2xTZXJ2aWNlPXksdGhpcy5pZkNvbnRyb2xTdGF0ZVNlcnZpY2U9Qyx0aGlzLm11bHRpPSEx''@;'; put 'put ''fW5nT25Jbml0KCl7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5uZ0NvbnRyb2xTZXJ2aWNlLmNvbnRyb2xDaGFuZ2VzLnN1YnNjcmliZShoPT57aCYmKHRoaXMubXVsdGk9aC52YWx1ZUFjY2Vzc29yIGluc3RhbmNlb2YgdnAsdGhpcy5jb250cm9sPWgpfSkpfXdyYXBwZXJDbGFzcygp''@;'; put 'put ''e3JldHVybiB0aGlzLm11bHRpPyJjbHItbXVsdGlzZWxlY3Qtd3JhcHBlciI6ImNsci1zZWxlY3Qtd3JhcHBlciJ9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KFdlLDgpLEt0KEV0KSxLdChIZSksS3QocWUpKX0sZC5cdTAyNzVjbXA9VGkoe3R5''@;'; put 'put ''cGU6ZCxzZWxlY3RvcnM6W1siY2xyLXNlbGVjdC1jb250YWluZXIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmeG8oeSx2cCw1KSwyJmgpe2xldCBDO0hpKEM9JGkoKSkmJih2Lm11bHRpcGxlPUMuZmlyc3QpfX0saG9zdFZhcnM6Nixob3N0QmluZGluZ3M6ZnVu''@;'; put 'put ''Y3Rpb24oaCx2KXsyJmgmJkZpKCJjbHItZm9ybS1jb250cm9sIiwhMCkoImNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQiLG51bGw9PXYuY29udHJvbD9udWxsOnYuY29udHJvbC5kaXNhYmxlZCkoImNsci1yb3ciLHYuYWRkR3JpZCgpKX0sZmVhdHVyZXM6W2hvKFtxZSxIZSxxLEV0XSksRG9d''@;'; put 'put ''LG5nQ29udGVudFNlbGVjdG9yczptJCxkZWNsczoxMCx2YXJzOjgsY29uc3RzOltbNCwibmdJZiJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiLDMsIm5nQ2xhc3MiXSxbMywibmdDbGFzcyJdLFsiY2xhc3MiLCJjbHItdmFsaWRhdGUtaWNvbiIsInN0YXR1cyIsImRhbmdlciIsInNoYXBl''@;'; put 'put ''IiwiZXhjbGFtYXRpb24tY2lyY2xlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJzdGF0dXMi''@;'; put 'put ''LCJkYW5nZXIiLCJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXSxbInNoYXBlIiwiY2hlY2stY2lyY2xlIiwic3RhdHVzIiwic3VjY2VzcyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWlj''@;'; put 'put ''b24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihLMChyY2UpLE5pKDApLHJuKDEsJHVlLDEsMCwibGFiZWwiLDApLG50KDIsImRpdiIsMSkoMywiZGl2IiwyKSxOaSg0LDEpLHJuKDUscXVlLDEsMCwiY2RzLWljb24iLDMpLHJuKDYsZWNlLDEsMCwiY2RzLWljb24iLDQpLG90KCks''@;'; put 'put ''cm4oNyx0Y2UsMSwwLCJuZy1jb250ZW50IiwwKSxybig4LHJkLDEsMCwibmctY29udGVudCIsMCkscm4oOSxuY2UsMSwwLCJuZy1jb250ZW50IiwwKSxvdCgpKSwyJmgmJih1dCgxKSxUdCgibmdJZiIsIXYubGFiZWwmJnYuYWRkR3JpZCgpKSx1dCgxKSxUdCgibmdDbGFzcyIsdi5jb250cm9s''@;'; put 'put ''Q2xhc3MoKSksdXQoMSksVHQoIm5nQ2xhc3MiLHYud3JhcHBlckNsYXNzKCkpLHV0KDIpLFR0KCJuZ0lmIix2LnNob3dJbnZhbGlkKSx1dCgxKSxUdCgibmdJZiIsdi5zaG93VmFsaWQpLHV0KDEpLFR0KCJuZ0lmIix2LnNob3dIZWxwZXIpLHV0KDEpLFR0KCJuZ0lmIix2LnNob3dJbnZhbGlk''@;'; put 'put ''KSx1dCgxKSxUdCgibmdJZiIsdi5zaG93VmFsaWQpKX0sZGVwZW5kZW5jaWVzOltObyxhdCxsYyxab10sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksb1o9KCgpPT57Y2xhc3MgZCBleHRlbmRzIFNue2NvbnN0cnVjdG9yKGgsdix5LEMsSSl7c3VwZXIoaCxpWix2LHksQyxJKSx0aGlzLmluZGV4''@;'; put 'put ''PTF9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KFVpKSxLdChTcyksS3QoRGYsMTApLEt0KEdhKSxLdChibykpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJTZWxlY3QiLCIiXV0saG9zdFZhcnM6Mixob3N0Qmlu''@;'; put 'put ''ZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkZpKCJjbHItc2VsZWN0IiwhMCl9LGZlYXR1cmVzOltEb119KSxkfSkoKSxBT2U9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe2hzLmFkZEljb25zKEtoLFRmKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8''@;'; put 'put ''ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbW2JhLHRkLERzLEpyXSxKcl19KSxkfSkoKSxVQWU9KCgpPT57Y2xhc3MgZCBleHRlbmRzIFp0e31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgZztyZXR1cm4gZnVuY3Rpb24odil7''@;'; put 'put ''cmV0dXJuKGd8fChnPWZsKGQpKSkodnx8ZCl9fSgpLGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci10ZXh0YXJlYS1jb250YWluZXIiXV0saG9zdFZhcnM6Nixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkZpKCJjbHItZm9ybS1jb250cm9sIiwhMCkoImNs''@;'; put 'put ''ci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQiLG51bGw9PXYuY29udHJvbD9udWxsOnYuY29udHJvbC5kaXNhYmxlZCkoImNsci1yb3ciLHYuYWRkR3JpZCgpKX0sZmVhdHVyZXM6W2hvKFtxZSxIZSxxLEV0XSksRG9dLG5nQ29udGVudFNlbGVjdG9yczpFaixkZWNsczoxMCx2YXJzOjcsY29uc3Rz''@;'; put 'put ''OltbNCwibmdJZiJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiLDMsIm5nQ2xhc3MiXSxbMSwiY2xyLXRleHRhcmVhLXdyYXBwZXIiXSxbImNsYXNzIiwiY2xyLXZhbGlkYXRlLWljb24iLCJzdGF0dXMiLCJkYW5nZXIiLCJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsImFyaWEtaGlk''@;'; put 'put ''ZGVuIiwidHJ1ZSIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItdmFsaWRhdGUtaWNvbiIsInNoYXBlIiwiY2hlY2stY2lyY2xlIiwic3RhdHVzIiwic3VjY2VzcyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsNCwibmdJZiJdLFsic3RhdHVzIiwiZGFuZ2VyIiwic2hhcGUiLCJleGNsYW1hdGlvbi1j''@;'; put 'put ''aXJjbGUiLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsImNsci12YWxpZGF0ZS1pY29uIl0sWyJzaGFwZSIsImNoZWNrLWNpcmNsZSIsInN0YXR1cyIsInN1Y2Nlc3MiLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsImNsci12YWxpZGF0ZS1pY29uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZo''@;'; put 'put ''JiYoSzAoTWopLE5pKDApLHJuKDEsaWNlLDEsMCwibGFiZWwiLDApLG50KDIsImRpdiIsMSkoMywiZGl2IiwyKSxOaSg0LDEpLHJuKDUsdTgsMSwwLCJjZHMtaWNvbiIsMykscm4oNixicywxLDAsImNkcy1pY29uIiw0KSxvdCgpLHJuKDcsb2NlLDEsMCwibmctY29udGVudCIsMCkscm4oOCxh''@;'; put 'put ''Y2UsMSwwLCJuZy1jb250ZW50IiwwKSxybig5LGxjZSwxLDAsIm5nLWNvbnRlbnQiLDApLG90KCkpLDImaCYmKHV0KDEpLFR0KCJuZ0lmIiwhdi5sYWJlbCYmdi5hZGRHcmlkKCkpLHV0KDEpLFR0KCJuZ0NsYXNzIix2LmNvbnRyb2xDbGFzcygpKSx1dCgzKSxUdCgibmdJZiIsdi5zaG93SW52''@;'; put 'put ''YWxpZCksdXQoMSksVHQoIm5nSWYiLHYuc2hvd1ZhbGlkKSx1dCgxKSxUdCgibmdJZiIsdi5zaG93SGVscGVyKSx1dCgxKSxUdCgibmdJZiIsdi5zaG93SW52YWxpZCksdXQoMSksVHQoIm5nSWYiLHYuc2hvd1ZhbGlkKSl9LGRlcGVuZGVuY2llczpbTm8sYXQsbGMsWm9dLGVuY2Fwc3VsYXRp''@;'; put 'put ''b246Mn0pLGR9KSgpLHlPZT0oKCk9PntjbGFzcyBkIGV4dGVuZHMgU257Y29uc3RydWN0b3IoaCx2LHksQyxJKXtzdXBlcihoLFVBZSx2LHksQyxJKSx0aGlzLmluZGV4PTF9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KFVpKSxLdChTcyksS3Qo''@;'; put 'put ''RGYsMTApLEt0KEdhKSxLdChibykpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJUZXh0YXJlYSIsIiJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmRmkoImNsci10ZXh0YXJlYSIsITApfSxmZWF0dXJlczpbRG9dfSksZH0p''@;'; put 'put ''KCksd09lPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtocy5hZGRJY29ucyhLaCxUZil9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W1tiYSx0ZCxEcyxK''@;'; put 'put ''cl0sSnJdfSksZH0pKCksUUFlPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W1tiYV0sSnIsVGEsWUxlLGZPZSxQQWUscE9lLG1PZSxB''@;'; put 'put ''T2Usd09lLHZPZSxVTGVdfSksZH0pKCksZjQ9KCgpPT57Y2xhc3MgZHt1c2VyRGVmaW5lZFdpZHRoKGgpe2guY2xhc3NMaXN0LmFkZCgiZGF0YWdyaWQtY2VsbC13aWR0aC16ZXJvIik7Y29uc3Qgdj10aGlzLmNsaWVudFJlY3QoaCkud2lkdGg7cmV0dXJuIGguY2xhc3NMaXN0LnJlbW92ZSgi''@;'; put 'put ''ZGF0YWdyaWQtY2VsbC13aWR0aC16ZXJvIiksdn1zY3JvbGxCYXJXaWR0aChoKXtyZXR1cm4gaC5vZmZzZXRXaWR0aC1oLmNsaWVudFdpZHRofXNjcm9sbFdpZHRoKGgpe3JldHVybiBoLnNjcm9sbFdpZHRofHwwfWNvbXB1dGVkSGVpZ2h0KGgpe3JldHVybiBwYXJzZUludChnZXRDb21wdXRl''@;'; put 'put ''ZFN0eWxlKGgpLmdldFByb3BlcnR5VmFsdWUoImhlaWdodCIpLDEwKX1jbGllbnRSZWN0KGgpe2NvbnN0IHY9aC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57dG9wOnBhcnNlSW50KHYudG9wLDEwKSxib3R0b206cGFyc2VJbnQodi5ib3R0b20sMTApLGxlZnQ6cGFyc2VJbnQodi5s''@;'; put 'put ''ZWZ0LDEwKSxyaWdodDpwYXJzZUludCh2LnJpZ2h0LDEwKSx3aWR0aDpwYXJzZUludCh2LndpZHRoLDEwKSxoZWlnaHQ6cGFyc2VJbnQodi5oZWlnaHQsMTApfX1taW5XaWR0aChoKXtyZXR1cm4gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShoKS5nZXRQcm9wZXJ0eVZhbHVlKCJtaW4td2lk''@;'; put 'put ''dGgiKSwxMCl9Zm9jdXMoaCl7aC5mb2N1cygpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxmcT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdil7''@;'; put 'put ''dGhpcy5lbGVtZW50PWgsdGhpcy5kb21BZGFwdGVyPXYsdGhpcy5zdGFydEhlaWdodD0wfWdldCBleHBhbmRBbmltYXRpb24oKXtyZXR1cm57dmFsdWU6dGhpcy5jbHJFeHBhbmRUcmlnZ2VyLHBhcmFtczp7c3RhcnRIZWlnaHQ6dGhpcy5zdGFydEhlaWdodH19fWFuaW1hdGlvbkRvbmUoKXt0''@;'; put 'put ''aGlzLnVwZGF0ZVN0YXJ0SGVpZ2h0KCl9dXBkYXRlU3RhcnRIZWlnaHQoKXt0aGlzLnN0YXJ0SGVpZ2h0PXRoaXMuZG9tQWRhcHRlci5jb21wdXRlZEhlaWdodCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCl8fDB9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3''@;'; put 'put ''KGh8fGQpKEt0KGJvKSxLdChmNCkpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZXhwYW5kYWJsZS1hbmltYXRpb24iXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJk5fKCJAZXhwYW5kQW5pbWF0aW9uLmRvbmUiLGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHYuYW5pbWF0aW9uRG9uZSgpfSksMiZoJiZDNSgiQGV4cGFuZEFuaW1hdGlvbiIsdi5leHBhbmRBbmltYXRpb24pfSxpbnB1dHM6e2NsckV4cGFuZFRyaWdnZXI6ImNsckV4cGFuZFRyaWdnZXIifSxmZWF0dXJlczpbaG8oW2Y0XSldLG5nQ29udGVudFNlbGVjdG9yczpuYSxk''@;'; put 'put ''ZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKCksTmkoMCkpfSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9Il0sZGF0YTp7YW5pbWF0aW9uOlskaCgiZXhwYW5kQW5pbWF0aW9uIixbYnUoInRydWUgPD0+IGZhbHNlIixbeWwoe2hl''@;'; put 'put ''aWdodDoie3tzdGFydEhlaWdodH19cHgiLG92ZXJmbG93OiJoaWRkZW4ifSksRGMoIjAuMnMgZWFzZS1pbi1vdXQiLHlsKHtoZWlnaHQ6IioifSkpXSldKV19fSksZH0pKCksSkFlPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQp''@;'; put 'put ''fSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W1tiYV1dfSksZH0pKCk7dmFyIGhoPSgoKT0+KGZ1bmN0aW9uKGQpe2RbZC5EUkFHX1NUQVJUPTBdPSJEUkFHX1NUQVJUIixkW2QuRFJBR19NT1ZFPTFdPSJEUkFHX01PVkUiLGRbZC5EUkFHX0VORD0y''@;'; put 'put ''XT0iRFJBR19FTkQiLGRbZC5EUkFHX0VOVEVSPTNdPSJEUkFHX0VOVEVSIixkW2QuRFJBR19MRUFWRT00XT0iRFJBR19MRUFWRSIsZFtkLkRST1A9NV09IkRST1AifShoaHx8KGhoPXt9KSksaGgpKSgpO2xldCBYQWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuZHJhZ1N0YXJ0''@;'; put 'put ''PW5ldyAkZSx0aGlzLmRyYWdNb3ZlPW5ldyAkZSx0aGlzLmRyYWdFbmQ9bmV3ICRlLHRoaXMuZHJvcD1uZXcgJGV9Z2V0IGRyYWdTdGFydGVkKCl7cmV0dXJuIHRoaXMuZHJhZ1N0YXJ0LmFzT2JzZXJ2YWJsZSgpfWdldCBkcmFnTW92ZWQoKXtyZXR1cm4gdGhpcy5kcmFnTW92ZS5hc09ic2Vy''@;'; put 'put ''dmFibGUoKX1nZXQgZHJhZ0VuZGVkKCl7cmV0dXJuIHRoaXMuZHJhZ0VuZC5hc09ic2VydmFibGUoKX1nZXQgZHJvcHBlZCgpe3JldHVybiB0aGlzLmRyb3AuYXNPYnNlcnZhYmxlKCl9YnJvYWRjYXN0KGgpe3N3aXRjaChoLnR5cGUpe2Nhc2UgaGguRFJBR19TVEFSVDp0aGlzLmRyYWdTdGFy''@;'; put 'put ''dC5uZXh0KGgpO2JyZWFrO2Nhc2UgaGguRFJBR19NT1ZFOnRoaXMuZHJhZ01vdmUubmV4dChoKTticmVhaztjYXNlIGhoLkRSQUdfRU5EOnRoaXMuZHJhZ0VuZC5uZXh0KGgpO2JyZWFrO2Nhc2UgaGguRFJPUDp0aGlzLmRyb3AubmV4dChoKX19fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlv''@;'; put 'put ''bihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpLGFaPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMubmdab25lPWgsdGhpcy5yZW5kZXJlcj12LHRoaXMu''@;'; put 'put ''ZXZlbnRCdXM9eSx0aGlzLmxpc3RlbmVycz1bXSx0aGlzLmRyYWdTdGFydD1uZXcgJGUsdGhpcy5kcmFnTW92ZT1uZXcgJGUsdGhpcy5kcmFnRW5kPW5ldyAkZSx0aGlzLmhhc0RyYWdTdGFydGVkPSExLHRoaXMuZHJhZ1N0YXJ0RGVsYXk9MH1nZXQgZHJhZ1N0YXJ0ZWQoKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5kcmFnU3RhcnQuYXNPYnNlcnZhYmxlKCl9Z2V0IGRyYWdNb3ZlZCgpe3JldHVybiB0aGlzLmRyYWdNb3ZlLmFzT2JzZXJ2YWJsZSgpfWdldCBkcmFnRW5kZWQoKXtyZXR1cm4gdGhpcy5kcmFnRW5kLmFzT2JzZXJ2YWJsZSgpfWdldCBkcmFnU3RhcnRQb3NpdGlvbigpe3JldHVybiB0aGlz''@;'; put 'put ''LmluaXRpYWxQb3NpdGlvbn1hdHRhY2hEcmFnTGlzdGVuZXJzKGgpe3RoaXMuZHJhZ2dhYmxlRWw9aCx0aGlzLmxpc3RlbmVycy5wdXNoKHRoaXMuY3VzdG9tRHJhZ0V2ZW50KHRoaXMuZHJhZ2dhYmxlRWwsIm1vdXNlZG93biIsIm1vdXNlbW92ZSIsIm1vdXNldXAiKSksdGhpcy5saXN0ZW5l''@;'; put 'put ''cnMucHVzaCh0aGlzLmN1c3RvbURyYWdFdmVudCh0aGlzLmRyYWdnYWJsZUVsLCJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIiwidG91Y2hlbmQiKSl9ZGV0YWNoRHJhZ0xpc3RlbmVycygpe3RoaXMubGlzdGVuZXJzJiZ0aGlzLmxpc3RlbmVycy5tYXAoaD0+aCgpKSx0aGlzLm5lc3RlZExpc3Rl''@;'; put 'put ''bmVycyYmdGhpcy5uZXN0ZWRMaXN0ZW5lcnMubWFwKGg9PmgoKSksdGhpcy5jaGVja0RyYWdTdGFydEJvdW5kYXJ5TGlzdGVuZXImJnRoaXMuY2hlY2tEcmFnU3RhcnRCb3VuZGFyeUxpc3RlbmVyKCl9Z2V0TmF0aXZlRXZlbnRPYmplY3QoaCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFz''@;'; put 'put ''T3duUHJvcGVydHkuY2FsbChoLCJjaGFuZ2VkVG91Y2hlcyIpP2guY2hhbmdlZFRvdWNoZXNbMF06aH1jdXN0b21EcmFnRXZlbnQoaCx2LHksQyl7cmV0dXJuIHRoaXMucmVuZGVyZXIubGlzdGVuKGgsdixJPT57dGhpcy5pbml0aWFsUG9zaXRpb249e3BhZ2VYOnRoaXMuZ2V0TmF0aXZlRXZl''@;'; put 'put ''bnRPYmplY3QoSSkucGFnZVgscGFnZVk6dGhpcy5nZXROYXRpdmVFdmVudE9iamVjdChJKS5wYWdlWX0sdGhpcy5uZXN0ZWRMaXN0ZW5lcnM9W10sdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLm5lc3RlZExpc3RlbmVycy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVu''@;'; put 'put ''KCJkb2N1bWVudCIsInNlbGVjdHN0YXJ0IixaPT57Wi5wcmV2ZW50RGVmYXVsdCgpLFouc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9KSksdGhpcy5jaGVja0RyYWdTdGFydEJvdW5kYXJ5KHkpLHRoaXMuZHJhZ1N0YXJ0RGVsYXlUaW1lb3V0PXNldFRpbWVvdXQoKCk9Pnt0aGlzLmNoZWNr''@;'; put 'put ''RHJhZ1N0YXJ0Qm91bmRhcnlMaXN0ZW5lciYmdGhpcy5jaGVja0RyYWdTdGFydEJvdW5kYXJ5TGlzdGVuZXIoKSx0aGlzLmhhc0RyYWdTdGFydGVkPSEwLHRoaXMuYnJvYWRjYXN0KEksaGguRFJBR19TVEFSVCksdGhpcy5uZXN0ZWRMaXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3Rl''@;'; put 'put ''bigiZG9jdW1lbnQiLHksWj0+e1ouc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5oYXNEcmFnU3RhcnRlZCYmdGhpcy5icm9hZGNhc3QoWixoaC5EUkFHX01PVkUpfSkpfSx0aGlzLmRyYWdTdGFydERlbGF5KX0pLHRoaXMubmVzdGVkTGlzdGVuZXJzLnB1c2godGhpcy5yZW5kZXJl''@;'; put 'put ''ci5saXN0ZW4oImRvY3VtZW50IixDLFo9Pnt0aGlzLmhhc0RyYWdTdGFydGVkJiYodGhpcy5oYXNEcmFnU3RhcnRlZD0hMSx0aGlzLmJyb2FkY2FzdChaLGhoLkRSQUdfRU5EKSksY2xlYXJUaW1lb3V0KHRoaXMuZHJhZ1N0YXJ0RGVsYXlUaW1lb3V0KSx0aGlzLm5lc3RlZExpc3RlbmVycy5t''@;'; put 'put ''YXAodWU9PnVlKCkpLHRoaXMuY2hlY2tEcmFnU3RhcnRCb3VuZGFyeUxpc3RlbmVyJiZ0aGlzLmNoZWNrRHJhZ1N0YXJ0Qm91bmRhcnlMaXN0ZW5lcigpfSkpfSl9Y2hlY2tEcmFnU3RhcnRCb3VuZGFyeShoKXt0aGlzLmNoZWNrRHJhZ1N0YXJ0Qm91bmRhcnlMaXN0ZW5lcj10aGlzLnJlbmRl''@;'; put 'put ''cmVyLmxpc3RlbigiZG9jdW1lbnQiLGgsdj0+e2NvbnN0IHk9TWF0aC5hYnModGhpcy5nZXROYXRpdmVFdmVudE9iamVjdCh2KS5wYWdlWC10aGlzLmluaXRpYWxQb3NpdGlvbi5wYWdlWCksQz1NYXRoLmFicyh0aGlzLmdldE5hdGl2ZUV2ZW50T2JqZWN0KHYpLnBhZ2VZLXRoaXMuaW5pdGlh''@;'; put 'put ''bFBvc2l0aW9uLnBhZ2VZKTsoeT4xfHxDPjEpJiYoY2xlYXJUaW1lb3V0KHRoaXMuZHJhZ1N0YXJ0RGVsYXlUaW1lb3V0KSx0aGlzLmNoZWNrRHJhZ1N0YXJ0Qm91bmRhcnlMaXN0ZW5lciYmdGhpcy5jaGVja0RyYWdTdGFydEJvdW5kYXJ5TGlzdGVuZXIoKSl9KX1icm9hZGNhc3QoaCx2KXtj''@;'; put 'put ''b25zdCB5PXRoaXMuZ2VuZXJhdGVEcmFnRXZlbnQoaCx2KTtzd2l0Y2goeS50eXBlKXtjYXNlIGhoLkRSQUdfU1RBUlQ6dGhpcy5kcmFnU3RhcnQubmV4dCh5KTticmVhaztjYXNlIGhoLkRSQUdfTU9WRTp0aGlzLmRyYWdNb3ZlLm5leHQoeSk7YnJlYWs7Y2FzZSBoaC5EUkFHX0VORDp0aGlz''@;'; put 'put ''LmRyYWdFbmQubmV4dCh5KX15Lmdob3N0RWxlbWVudD10aGlzLmdob3N0RWxlbWVudCx5LmRyb3BQb2ludFBvc2l0aW9uPXRoaXMuZHJvcFBvaW50UG9zaXRpb24sdGhpcy5ldmVudEJ1cy5icm9hZGNhc3QoeSl9Z2VuZXJhdGVEcmFnRXZlbnQoaCx2KXtjb25zdCB5PXRoaXMuZ2V0TmF0aXZl''@;'; put 'put ''RXZlbnRPYmplY3QoaCk7cmV0dXJue3R5cGU6dixkcmFnUG9zaXRpb246e3BhZ2VYOnkucGFnZVgscGFnZVk6eS5wYWdlWSxtb3ZlWDp5LnBhZ2VYLXRoaXMuaW5pdGlhbFBvc2l0aW9uLnBhZ2VYLG1vdmVZOnkucGFnZVktdGhpcy5pbml0aWFsUG9zaXRpb24ucGFnZVl9LGdyb3VwOnRoaXMu''@;'; put 'put ''Z3JvdXAsZHJhZ0RhdGFUcmFuc2Zlcjp0aGlzLmRyYWdEYXRhVHJhbnNmZXIsZ2hvc3RFbGVtZW50OnRoaXMuZ2hvc3RFbGVtZW50fX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoQ2koX2wpLENpKEdhKSxDaShYQWUpKX0sZC5cdTAyNzVwcm92PUFp''@;'; put 'put ''KHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxMZmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMuZHJhZ0V2ZW50TGlzdGVuZXI9aCx0aGlzLnJlbmRlcmVyPXZ9Z2V0IGRlZmF1bHRIYW5kbGVFbCgpe3JldHVybiB0aGlzLl9kZWZhdWx0SGFuZGxlRWx9''@;'; put 'put ''c2V0IGRlZmF1bHRIYW5kbGVFbChoKXt0aGlzLl9kZWZhdWx0SGFuZGxlRWw9aCx0aGlzLl9jdXN0b21IYW5kbGVFbHx8dGhpcy5tYWtlRWxlbWVudEhhbmRsZSh0aGlzLl9kZWZhdWx0SGFuZGxlRWwpfW1ha2VFbGVtZW50SGFuZGxlKGgpe3RoaXMuX2RlZmF1bHRIYW5kbGVFbCYmdGhpcy5f''@;'; put 'put ''ZGVmYXVsdEhhbmRsZUVsIT09aCYmdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9kZWZhdWx0SGFuZGxlRWwsImRyYWctaGFuZGxlIiksdGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5hdHRhY2hEcmFnTGlzdGVuZXJzKGgpLHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoaCwiZHJhZy1oYW5k''@;'; put 'put ''bGUiKX1nZXQgY3VzdG9tSGFuZGxlRWwoKXtyZXR1cm4gdGhpcy5fY3VzdG9tSGFuZGxlRWx9cmVnaXN0ZXJDdXN0b21IYW5kbGUoaCl7dGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kZXRhY2hEcmFnTGlzdGVuZXJzKCksdGhpcy5fY3VzdG9tSGFuZGxlRWw9aCx0aGlzLm1ha2VFbGVtZW50SGFu''@;'; put 'put ''ZGxlKHRoaXMuX2N1c3RvbUhhbmRsZUVsKX11bnJlZ2lzdGVyQ3VzdG9tSGFuZGxlKCl7dGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kZXRhY2hEcmFnTGlzdGVuZXJzKCksdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9jdXN0b21IYW5kbGVFbCwiZHJhZy1oYW5kbGUiKSxkZWxldGUg''@;'; put 'put ''dGhpcy5fY3VzdG9tSGFuZGxlRWwsdGhpcy5fZGVmYXVsdEhhbmRsZUVsJiZ0aGlzLm1ha2VFbGVtZW50SGFuZGxlKHRoaXMuX2RlZmF1bHRIYW5kbGVFbCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKGFaKSxDaShHYSkpfSxkLlx1MDI3NXBy''@;'; put 'put ''b3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLE9mZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuZG9tQWRhcHRlcj1ofWNhcHR1cmUoaCx2KXt0aGlzLmRyYWdnYWJsZUVsQ2xpZW50UmVjdD10aGlzLmRvbUFkYXB0ZXIuY2xpZW50UmVjdChoKSx0''@;'; put 'put ''aGlzLnNuYXBzaG90RHJhZ0V2ZW50PXZ9ZGlzY2FyZCgpe2RlbGV0ZSB0aGlzLmRyYWdnYWJsZUVsQ2xpZW50UmVjdCxkZWxldGUgdGhpcy5zbmFwc2hvdERyYWdFdmVudH1nZXQgaGFzRHJhZ2dhYmxlU3RhdGUoKXtyZXR1cm4hIXRoaXMuc25hcHNob3REcmFnRXZlbnQmJiEhdGhpcy5kcmFn''@;'; put 'put ''Z2FibGVFbENsaWVudFJlY3R9Z2V0IGNsaWVudFJlY3QoKXtyZXR1cm4gdGhpcy5kcmFnZ2FibGVFbENsaWVudFJlY3R9Z2V0IGRyYWdFdmVudCgpe3JldHVybiB0aGlzLnNuYXBzaG90RHJhZ0V2ZW50fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShD''@;'; put 'put ''aShmNCkpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLEtBZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSl7aWYodGhpcy5lbD1oLHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXI9dix0aGlzLmRyYWdnYWJsZVNuYXBzaG90PXks''@;'; put 'put ''dGhpcy5yZW5kZXJlcj1DLHRoaXMubmdab25lPUksdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMubGVhdmVBbmltQ29uZmlnPXt2YWx1ZTowLHBhcmFtczp7dG9wOiIwcHgiLGxlZnQ6IjBweCJ9fSwhdGhpcy5kcmFnRXZlbnRMaXN0ZW5lcnx8IXRoaXMuZHJhZ2dhYmxlU25hcHNob3QpdGhy''@;'; put 'put ''b3cgbmV3IEVycm9yKCJUaGUgY2xyLWRyYWdnYWJsZS1naG9zdCBjb21wb25lbnQgY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgb2YgYSBjbHJEcmFnZ2FibGUgZGlyZWN0aXZlLiIpO3RoaXMuZHJhZ2dhYmxlR2hvc3RFbD10aGlzLmVsLm5hdGl2ZUVsZW1lbnQsdGhpcy5yZW5kZXJlci5hZGRD''@;'; put 'put ''bGFzcyh0aGlzLmRyYWdnYWJsZUdob3N0RWwsImRyYWdnYWJsZS1naG9zdCIpLHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZ2hvc3RFbGVtZW50PXRoaXMuZHJhZ2dhYmxlR2hvc3RFbCx0aGlzLnNldERlZmF1bHRHaG9zdFNpemUodGhpcy5kcmFnZ2FibGVHaG9zdEVsKTtjb25zdCBaPXt0b3A6''@;'; put 'put ''dGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5oYXNEcmFnZ2FibGVTdGF0ZT90aGlzLmRyYWdnYWJsZVNuYXBzaG90LmRyYWdFdmVudC5kcmFnUG9zaXRpb24ucGFnZVktdGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5jbGllbnRSZWN0LnRvcDowLGxlZnQ6dGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5oYXNE''@;'; put 'put ''cmFnZ2FibGVTdGF0ZT90aGlzLmRyYWdnYWJsZVNuYXBzaG90LmRyYWdFdmVudC5kcmFnUG9zaXRpb24ucGFnZVgtdGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5jbGllbnRSZWN0LmxlZnQ6MH07bGV0IHVlPSExO3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIu''@;'; put 'put ''ZHJhZ01vdmVkLnN1YnNjcmliZShfZT0+e3VlfHwodGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5oYXNEcmFnZ2FibGVTdGF0ZT90aGlzLmFuaW1hdGVUb09uTGVhdmUoYCR7dGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5jbGllbnRSZWN0LnRvcH1weGAsYCR7dGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5j''@;'; put 'put ''bGllbnRSZWN0LmxlZnR9cHhgKTp0aGlzLmFuaW1hdGVUb09uTGVhdmUoYCR7dGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kcmFnU3RhcnRQb3NpdGlvbi5wYWdlWX1weGAsYCR7dGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kcmFnU3RhcnRQb3NpdGlvbi5wYWdlWX1weGApLHVlPSEwKTtjb25zdCBC''@;'; put 'put ''ZT10aGlzLmZpbmRUb3BMZWZ0UG9zaXRpb24oX2UuZHJhZ1Bvc2l0aW9uLFopO3RoaXMuc2V0UG9zaXRpb25TdHlsZSh0aGlzLmRyYWdnYWJsZUdob3N0RWwsQmUucGFnZVgsQmUucGFnZVkpLHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZHJvcFBvaW50UG9zaXRpb249dGhpcy5maW5kRHJvcFBv''@;'; put 'put ''aW50UG9zaXRpb24oQmUpfSkpfXNldERlZmF1bHRHaG9zdFNpemUoaCl7dGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5oYXNEcmFnZ2FibGVTdGF0ZSYmdGhpcy5zZXRTaXplU3R5bGUoaCx0aGlzLmRyYWdnYWJsZVNuYXBzaG90LmNsaWVudFJlY3Qud2lkdGgsdGhpcy5kcmFnZ2FibGVTbmFwc2hv''@;'; put 'put ''dC5jbGllbnRSZWN0LmhlaWdodCl9YW5pbWF0ZVRvT25MZWF2ZShoLHYpe3RoaXMubmdab25lLnJ1bigoKT0+e3RoaXMubGVhdmVBbmltQ29uZmlnPXt2YWx1ZTowLHBhcmFtczp7dG9wOmgsbGVmdDp2fX19KX1maW5kVG9wTGVmdFBvc2l0aW9uKGgsdil7cmV0dXJue3BhZ2VYOmgucGFnZVgt''@;'; put 'put ''di5sZWZ0LHBhZ2VZOmgucGFnZVktdi50b3B9fWZpbmREcm9wUG9pbnRQb3NpdGlvbihoKXtyZXR1cm4gdGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5oYXNEcmFnZ2FibGVTdGF0ZT97cGFnZVg6aC5wYWdlWCt0aGlzLmRyYWdnYWJsZVNuYXBzaG90LmNsaWVudFJlY3Qud2lkdGgvMixwYWdlWTpo''@;'; put 'put ''LnBhZ2VZK3RoaXMuZHJhZ2dhYmxlU25hcHNob3QuY2xpZW50UmVjdC5oZWlnaHQvMn06aH1zZXRTaXplU3R5bGUoaCx2LHkpe3RoaXMucmVuZGVyZXIuc2V0U3R5bGUoaCwid2lkdGgiLGAke3Z9cHhgKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGgsImhlaWdodCIsYCR7eX1weGApfXNldFBv''@;'; put 'put ''c2l0aW9uU3R5bGUoaCx2LHkpe3RoaXMucmVuZGVyZXIuc2V0U3R5bGUoaCwibGVmdCIsYCR7dn1weGApLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaCwidG9wIixgJHt5fXB4YCksdGhpcy5yZW5kZXJlci5zZXRTdHlsZShoLCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpfW5nT25EZXN0cm95KCl7''@;'; put 'put ''dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoYm8pLEt0KGFaLDgpLEt0KE9mZSw4KSxLdChHYSksS3QoX2wpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxl''@;'; put 'put ''Y3RvcnM6W1siY2xyLWRyYWdnYWJsZS1naG9zdCJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmQzUoIkBsZWF2ZUFuaW1hdGlvbiIsdi5sZWF2ZUFuaW1Db25maWcpfSxuZ0NvbnRlbnRTZWxlY3RvcnM6bmEsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVu''@;'; put 'put ''Y3Rpb24oaCx2KXsxJmgmJihLMCgpLE5pKDApKX0sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpbJGgoImxlYXZlQW5pbWF0aW9uIixbYnUoIjpsZWF2ZSIsW3lsKHtsZWZ0OiIqIix0b3A6IioifSksRGMoIjAuMnMgZWFzZS1pbi1vdXQiLHlsKHt0b3A6Int7dG9wfX0iLGxlZnQ6''@;'; put 'put ''Int7bGVmdH19In0pKV0pXSldfX0pLGR9KSgpO2NsYXNzIG12e2NvbnN0cnVjdG9yKGcpe3RoaXMuZHJhZ1Bvc2l0aW9uPWcuZHJhZ1Bvc2l0aW9uLHRoaXMuZ3JvdXA9Zy5ncm91cCx0aGlzLmRyYWdEYXRhVHJhbnNmZXI9Zy5kcmFnRGF0YVRyYW5zZmVyLHRoaXMuZHJvcFBvaW50UG9zaXRp''@;'; put 'put ''b249Zy5kcm9wUG9pbnRQb3NpdGlvbn19bGV0ICRBZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5KXtpZih0aGlzLnRlbXBsYXRlPWgsdGhpcy5jb250YWluZXI9dix0aGlzLmRyYWdFdmVudExpc3RlbmVyPXksdGhpcy5zdWJzY3JpcHRpb25zPVtdLCF0aGlzLmRyYWdFdmVudExp''@;'; put 'put ''c3RlbmVyfHwhdGhpcy5jb250YWluZXIpdGhyb3cgbmV3IEVycm9yKCJUaGUgKmNscklmRHJhZ2dlZCBkaXJlY3RpdmUgY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgb2YgYSBjbHJEcmFnZ2FibGUgZGlyZWN0aXZlLiIpO3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuZHJhZ0V2ZW50TGlz''@;'; put 'put ''dGVuZXIuZHJhZ1N0YXJ0ZWQuc3Vic2NyaWJlKCgpPT57dGhpcy5jb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGUpfSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZHJhZ0VuZGVkLnN1YnNjcmliZSgoKT0+e3RoaXMuY29u''@;'; put 'put ''dGFpbmVyLmNsZWFyKCl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJlKCkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChxciksS3QoVWksMTIpLEt0KGFaLDgpKX0sZC5cdTAyNzVk''@;'; put 'put ''aXI9V2koe3R5cGU6ZCxzZWxlY3RvcnM6W1siIiwiY2xySWZEcmFnZ2VkIiwiIl1dfSksZH0pKCkscUFlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5yZW5kZXJlcj1ofWVudGVyKCl7dGhpcy5yZW5kZXJlci5hZGRDbGFzcyhkb2N1bWVudC5ib2R5LCJpbi1kcmFnIil9ZXhp''@;'; put 'put ''dCgpe3RoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwiaW4tZHJhZyIpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShHYSkpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgp''@;'; put 'put ''LGV5ZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSxaLHVlLF9lKXt0aGlzLmVsPWgsdGhpcy5kcmFnRXZlbnRMaXN0ZW5lcj12LHRoaXMuZHJhZ0hhbmRsZVJlZ2lzdHJhcj15LHRoaXMudmlld0NvbnRhaW5lclJlZj1DLHRoaXMuY2ZyPUksdGhpcy5pbmplY3Rvcj1aLHRo''@;'; put 'put ''aXMuZHJhZ2dhYmxlU25hcHNob3Q9dWUsdGhpcy5nbG9iYWxEcmFnTW9kZT1fZSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5kcmFnT249ITEsdGhpcy5kcmFnU3RhcnRFbWl0dGVyPW5ldyBhcix0aGlzLmRyYWdNb3ZlRW1pdHRlcj1uZXcgYXIsdGhpcy5kcmFnRW5kRW1pdHRlcj1uZXcg''@;'; put 'put ''YXIsdGhpcy5kcmFnZ2FibGVFbD10aGlzLmVsLm5hdGl2ZUVsZW1lbnQsdGhpcy5jb21wb25lbnRGYWN0b3J5PXRoaXMuY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KEtBZSl9c2V0IGRhdGFUcmFuc2ZlcihoKXt0aGlzLmRyYWdFdmVudExpc3RlbmVyLmRyYWdEYXRhVHJhbnNmZXI9aH1z''@;'; put 'put ''ZXQgZ3JvdXAoaCl7dGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5ncm91cD1ofXNldCBkcmFnU3RhcnREZWxheShoKXsibnVtYmVyIj09dHlwZW9mIGg/dGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kcmFnU3RhcnREZWxheT1oOiJzdHJpbmciPT10eXBlb2YgaCYmKHRoaXMuZHJhZ0V2ZW50TGlzdGVu''@;'; put 'put ''ZXIuZHJhZ1N0YXJ0RGVsYXk9cGFyc2VJbnQoaCwxMCl8fDApfWNyZWF0ZURlZmF1bHRHaG9zdChoKXt0aGlzLmRyYWdnYWJsZVNuYXBzaG90LmNhcHR1cmUodGhpcy5kcmFnZ2FibGVFbCxoKSx0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KHRoaXMuY29tcG9uZW50RmFj''@;'; put 'put ''dG9yeSwwLHRoaXMuaW5qZWN0b3IsW1t0aGlzLmRyYWdnYWJsZUVsLmNsb25lTm9kZSghMCldXSl9ZGVzdHJveURlZmF1bHRHaG9zdCgpe3RoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpLHRoaXMuZHJhZ2dhYmxlU25hcHNob3QuZGlzY2FyZCgpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3Ro''@;'; put 'put ''aXMuZHJhZ0hhbmRsZVJlZ2lzdHJhci5kZWZhdWx0SGFuZGxlRWw9dGhpcy5kcmFnZ2FibGVFbCx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmRyYWdFdmVudExpc3RlbmVyLmRyYWdTdGFydGVkLnN1YnNjcmliZShoPT57dGhpcy5nbG9iYWxEcmFnTW9kZS5lbnRlcigpLHRoaXMuZHJh''@;'; put 'put ''Z09uPSEwLHRoaXMuY3VzdG9tR2hvc3R8fHRoaXMuY3JlYXRlRGVmYXVsdEdob3N0KGgpLHRoaXMuZHJhZ1N0YXJ0RW1pdHRlci5lbWl0KG5ldyBtdihoKSl9KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kcmFnTW92ZWQuc3Vic2NyaWJlKGg9Pnt0''@;'; put 'put ''aGlzLmRyYWdNb3ZlRW1pdHRlci5lbWl0KG5ldyBtdihoKSl9KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kcmFnRW5kZWQuc3Vic2NyaWJlKGg9Pnt0aGlzLmdsb2JhbERyYWdNb2RlLmV4aXQoKSx0aGlzLmRyYWdPbj0hMSx0aGlzLmN1c3RvbUdo''@;'; put 'put ''b3N0fHx0aGlzLmRlc3Ryb3lEZWZhdWx0R2hvc3QoKSx0aGlzLmRyYWdFbmRFbWl0dGVyLmVtaXQobmV3IG12KGgpKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSksdGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kZXRhY2hEcmFn''@;'; put 'put ''TGlzdGVuZXJzKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGJvKSxLdChhWiksS3QoTGZlKSxLdChVaSksS3QoU2QpLEt0KFNzKSxLdChPZmUpLEt0KHFBZSkpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJE''@;'; put 'put ''cmFnZ2FibGUiLCIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmeG8oeSwkQWUsNSksMiZoKXtsZXQgQztIaShDPSRpKCkpJiYodi5jdXN0b21HaG9zdD1DLmZpcnN0KX19LGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZGaSgiZHJh''@;'; put 'put ''Z2dhYmxlIiwhMCkoImJlaW5nLWRyYWdnZWQiLHYuZHJhZ09uKX0saW5wdXRzOntkYXRhVHJhbnNmZXI6WyJjbHJEcmFnZ2FibGUiLCJkYXRhVHJhbnNmZXIiXSxncm91cDpbImNsckdyb3VwIiwiZ3JvdXAiXSxkcmFnU3RhcnREZWxheTpbImNsckRyYWdTdGFydERlbGF5IiwiZHJhZ1N0YXJ0''@;'; put 'put ''RGVsYXkiXX0sb3V0cHV0czp7ZHJhZ1N0YXJ0RW1pdHRlcjoiY2xyRHJhZ1N0YXJ0IixkcmFnTW92ZUVtaXR0ZXI6ImNsckRyYWdNb3ZlIixkcmFnRW5kRW1pdHRlcjoiY2xyRHJhZ0VuZCJ9LGZlYXR1cmVzOltobyhbYVosTGZlLE9mZSxxQWUsZjRdKV19KSxkfSkoKSx0eWU9KCgpPT57Y2xh''@;'; put 'put ''c3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbW2JhXV19KSxkfSkoKTtjb25zdCBueWU9bmV3IHplKCJGT0NVU19PTl9WSUVXX0lOSVQiKSxfT2U9e3By''@;'; put 'put ''b3ZpZGU6bnllLHVzZVZhbHVlOiEwfTtsZXQgUmZlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLFope3RoaXMuZWw9aCx0aGlzLnBsYXRmb3JtSWQ9dix0aGlzLmZvY3VzT25WaWV3SW5pdD15LHRoaXMucmVuZGVyZXI9SSx0aGlzLmRlc3Ryb3kkPW5ldyAkZSx0aGlzLmRp''@;'; put 'put ''cmVjdEZvY3VzPSEwLHRoaXMuX2lzRW5hYmxlZD10aGlzLmZvY3VzT25WaWV3SW5pdCx0aGlzLmRvY3VtZW50PUMsWi5ydW5PdXRzaWRlQW5ndWxhcigoKT0+dDgoaC5uYXRpdmVFbGVtZW50LCJmb2N1c291dCIpLnBpcGUoajcodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKT0+e3RoaXMu''@;'; put 'put ''ZGlyZWN0Rm9jdXN8fCh0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsInRhYmluZGV4IiksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIm91dGxpbmUiLG51bGwpKX0pKX1zZXQgaXNFbmFibGVkKGgpe3RoaXMu''@;'; put 'put ''Zm9jdXNPblZpZXdJbml0JiYiYm9vbGVhbiI9PXR5cGVvZiBoJiYodGhpcy5faXNFbmFibGVkPWgpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuZm9jdXMoKX1uZ09uRGVzdHJveSgpe3RoaXMuZGVzdHJveSQubmV4dCgpfWZvY3VzKCl7IVNsKHRoaXMucGxhdGZvcm1JZCl8fCF0aGlzLl9pc0Vu''@;'; put 'put ''YWJsZWR8fHRoaXMuZG9jdW1lbnQmJnRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PXRoaXMuZWwubmF0aXZlRWxlbWVudCYmKHRoaXMuZWwubmF0aXZlRWxlbWVudC5mb2N1cygpLHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PXRoaXMuZWwubmF0aXZlRWxlbWVudCYmKHRoaXMu''@;'; put 'put ''ZGlyZWN0Rm9jdXM9ITEsdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ0YWJpbmRleCIsIi0xIiksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIm91dGxpbmUiLCJub25lIiksdGhpcy5lbC5uYXRpdmVFbGVtZW50''@;'; put 'put ''LmZvY3VzKCkpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoYm8pLEt0KEwyKSxLdChueWUpLEt0KGdzKSxLdChHYSksS3QoX2wpKX0sZC5cdTAyNzVkaXI9V2koe3R5cGU6ZCxzZWxlY3RvcnM6W1siIiwiY2xyRm9jdXNPblZpZXdJbml0Iiwi''@;'; put 'put ''Il1dLGlucHV0czp7aXNFbmFibGVkOlsiY2xyRm9jdXNPblZpZXdJbml0IiwiaXNFbmFibGVkIl19fSksZH0pKCksZlM9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3''@;'; put 'put ''NWluaj1iMCh7cHJvdmlkZXJzOltfT2VdLGltcG9ydHM6W1tiYV1dfSksZH0pKCksQmZlPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6''@;'; put 'put ''W1tiYV1dfSksZH0pKCksQ09lPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W1tiYV1dfSksZH0pKCk7Y2xhc3MgaHF7fWxldCBsWj0o''@;'; put 'put ''KCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fY2hhbmdlPW5ldyAkZSx0aGlzLm5iQ2hhbmdlcz0wfWdldCBjaGFuZ2UoKXtyZXR1cm4gdGhpcy5fY2hhbmdlLmFzT2JzZXJ2YWJsZSgpfWNoYW5nZVN0YXJ0KCl7dGhpcy5uYkNoYW5nZXMrK31jaGFuZ2VEb25lKCl7MD09LS10aGlz''@;'; put 'put ''Lm5iQ2hhbmdlcyYmdGhpcy5fY2hhbmdlLm5leHQoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksZHc9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvciho''@;'; put 'put ''KXt0aGlzLnN0YXRlRGVib3VuY2VyPWgsdGhpcy5wcmV2ZW50RW1pdD0hMSx0aGlzLmFjdGl2YXRlZD0hMSx0aGlzLl9zaXplPTAsdGhpcy5fY2hhbmdlPW5ldyAkZSx0aGlzLl9zaXplQ2hhbmdlPW5ldyAkZSx0aGlzLl9jdXJyZW50PTF9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1z''@;'; put 'put ''ZXQgc2l6ZShoKXtjb25zdCB2PXRoaXMuX3NpemU7aCE9PXYmJih0aGlzLnByZXZlbnRFbWl0fHx0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZVN0YXJ0KCksdGhpcy5fc2l6ZT1oLHRoaXMuX2N1cnJlbnQ9MD09PWg/MTpNYXRoLmZsb29yKHYvaCoodGhpcy5fY3VycmVudC0xKSkrMSx0aGlz''@;'; put 'put ''LnByZXZlbnRFbWl0fHwodGhpcy5fY2hhbmdlLm5leHQodGhpcy5fY3VycmVudCksdGhpcy5fc2l6ZUNoYW5nZS5uZXh0KHRoaXMuX3NpemUpLHRoaXMuc3RhdGVEZWJvdW5jZXIuY2hhbmdlRG9uZSgpKSksdGhpcy5wcmV2ZW50RW1pdD0hMX1nZXQgdG90YWxJdGVtcygpe3JldHVybiB0aGlz''@;'; put 'put ''Ll90b3RhbEl0ZW1zfHwwfXNldCB0b3RhbEl0ZW1zKGgpe3RoaXMuX3RvdGFsSXRlbXM9aCx0aGlzLmN1cnJlbnQ+dGhpcy5sYXN0JiYodGhpcy5jdXJyZW50PXRoaXMubGFzdCl9Z2V0IGxhc3QoKXtyZXR1cm4gdGhpcy5fbGFzdD90aGlzLl9sYXN0OnRoaXMuc2l6ZT4wJiZ0aGlzLnRvdGFs''@;'; put 'put ''SXRlbXM/TWF0aC5jZWlsKHRoaXMudG90YWxJdGVtcy90aGlzLnNpemUpOjF9c2V0IGxhc3QoaCl7dGhpcy5fbGFzdD1ofWdldCBjaGFuZ2UoKXtyZXR1cm4gdGhpcy5fY2hhbmdlLmFzT2JzZXJ2YWJsZSgpfWdldCBzaXplQ2hhbmdlKCl7cmV0dXJuIHRoaXMuX3NpemVDaGFuZ2UuYXNPYnNl''@;'; put 'put ''cnZhYmxlKCl9Z2V0IGN1cnJlbnQoKXtyZXR1cm4gdGhpcy5fY3VycmVudH1zZXQgY3VycmVudChoKXtoIT09dGhpcy5fY3VycmVudCYmKHRoaXMuc3RhdGVEZWJvdW5jZXIuY2hhbmdlU3RhcnQoKSx0aGlzLl9jdXJyZW50PWgsdGhpcy5fY2hhbmdlLm5leHQoaCksdGhpcy5zdGF0ZURlYm91''@;'; put 'put ''bmNlci5jaGFuZ2VEb25lKCkpfXByZXZpb3VzKCl7dGhpcy5jdXJyZW50PjEmJnRoaXMuY3VycmVudC0tfW5leHQoKXt0aGlzLmN1cnJlbnQ8dGhpcy5sYXN0JiZ0aGlzLmN1cnJlbnQrK31nZXQgZmlyc3RJdGVtKCl7cmV0dXJuIDA9PT10aGlzLl90b3RhbEl0ZW1zPy0xOjA9PT10aGlzLnNp''@;'; put 'put ''emU/MDoodGhpcy5jdXJyZW50LTEpKnRoaXMuc2l6ZX1nZXQgbGFzdEl0ZW0oKXtpZigwPT09dGhpcy5fdG90YWxJdGVtcylyZXR1cm4tMTtpZigwPT09dGhpcy5zaXplKXJldHVybiB0aGlzLnRvdGFsSXRlbXMtMTtsZXQgaD10aGlzLmN1cnJlbnQqdGhpcy5zaXplLTE7cmV0dXJuIHRoaXMu''@;'; put 'put ''dG90YWxJdGVtcyYmKGg9TWF0aC5taW4oaCx0aGlzLnRvdGFsSXRlbXMtMSkpLGh9cmVzZXRQYWdlU2l6ZShoPSExKXt0aGlzLnByZXZlbnRFbWl0PWgsdGhpcy5zaXplPTB9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKGxaKSl9LGQuXHUwMjc1''@;'; put 'put ''cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksdnY9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMuX3BhZ2U9aCx0aGlzLnN0YXRlRGVib3VuY2VyPXYsdGhpcy5fY2hhbmdlPW5ldyAkZSx0aGlzLl9hbGw9W119Z2V0IGNoYW5nZSgpe3JldHVy''@;'; put 'put ''biB0aGlzLl9jaGFuZ2UuYXNPYnNlcnZhYmxlKCl9aGFzQWN0aXZlRmlsdGVycygpe2Zvcihjb25zdHtmaWx0ZXI6aH1vZiB0aGlzLl9hbGwpaWYoaCYmaC5pc0FjdGl2ZSgpKXJldHVybiEwO3JldHVybiExfWdldEFjdGl2ZUZpbHRlcnMoKXtjb25zdCBoPVtdO2Zvcihjb25zdHtmaWx0ZXI6''@;'; put 'put ''dn1vZiB0aGlzLl9hbGwpdiYmdi5pc0FjdGl2ZSgpJiZoLnB1c2godik7cmV0dXJuIGh9YWRkKGgpe2NvbnN0IHY9aC5jaGFuZ2VzLnN1YnNjcmliZSgoKT0+dGhpcy5yZXNldFBhZ2VBbmRFbWl0RmlsdGVyQ2hhbmdlKFtoXSkpO2xldCB5PSExO2NvbnN0IEM9bmV3IGRxKGgsKCk9PntpZih5''@;'; put 'put ''KXJldHVybjt2LnVuc3Vic2NyaWJlKCk7Y29uc3QgST10aGlzLl9hbGwuZmluZEluZGV4KFo9PlouZmlsdGVyPT09aCk7ST49MCYmdGhpcy5fYWxsLnNwbGljZShJLDEpLGguaXNBY3RpdmUoKSYmdGhpcy5yZXNldFBhZ2VBbmRFbWl0RmlsdGVyQ2hhbmdlKFtdKSx5PSEwfSk7cmV0dXJuIHRo''@;'; put 'put ''aXMuX2FsbC5wdXNoKEMpLGguaXNBY3RpdmUoKSYmdGhpcy5yZXNldFBhZ2VBbmRFbWl0RmlsdGVyQ2hhbmdlKFtoXSksQ31hY2NlcHRzKGgpe2Zvcihjb25zdHtmaWx0ZXI6dn1vZiB0aGlzLl9hbGwpaWYodiYmdi5pc0FjdGl2ZSgpJiYhdi5hY2NlcHRzKGgpKXJldHVybiExO3JldHVybiEw''@;'; put 'put ''fXJlc2V0UGFnZUFuZEVtaXRGaWx0ZXJDaGFuZ2UoaCl7dGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VTdGFydCgpLHRoaXMuX3BhZ2UuY3VycmVudD0xLHRoaXMuX2NoYW5nZS5uZXh0KGgpLHRoaXMuc3RhdGVEZWJvdW5jZXIuY2hhbmdlRG9uZSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVu''@;'; put 'put ''Y3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShkdyksQ2kobFopKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKTtjbGFzcyBkcXtjb25zdHJ1Y3RvcihnLGgpe3RoaXMuZmlsdGVyPWcsdGhpcy51bnJlZ2lzdGVyPWh9fWxldCBwcT0oKCk9''@;'; put 'put ''PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuZmlsdGVycz1ofWdldCBmaWx0ZXIoKXtyZXR1cm4gdGhpcy5yZWdpc3RlcmVkJiZ0aGlzLnJlZ2lzdGVyZWQuZmlsdGVyfXNldEZpbHRlcihoKXt0aGlzLmRlbGV0ZUZpbHRlcigpLGggaW5zdGFuY2VvZiBkcT90aGlzLnJlZ2lzdGVyZWQ9''@;'; put 'put ''aDpoJiYodGhpcy5yZWdpc3RlcmVkPXRoaXMuZmlsdGVycy5hZGQoaCkpfWRlbGV0ZUZpbHRlcigpe3RoaXMucmVnaXN0ZXJlZCYmKHRoaXMucmVnaXN0ZXJlZC51bnJlZ2lzdGVyKCksZGVsZXRlIHRoaXMucmVnaXN0ZXJlZCl9bmdPbkRlc3Ryb3koKXt0aGlzLmRlbGV0ZUZpbHRlcigpfX1y''@;'; put 'put ''ZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdCh2dikpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkfSksZH0pKCksc1o9KCgpPT57Y2xhc3MgZCBleHRlbmRzIHBxe2NvbnN0cnVjdG9yKGgsdix5LEMsSSl7c3VwZXIoaCksdGhpcy5jb21tb25TdHJpbmdz''@;'; put 'put ''PXYsdGhpcy5zbWFydFRvZ2dsZVNlcnZpY2U9eSx0aGlzLnBsYXRmb3JtSWQ9Qyx0aGlzLnBvcG92ZXJJZD1JLHRoaXMuc3Vicz1bXSx0aGlzLmFyaWFFeHBhbmRlZD0hMSx0aGlzLnNtYXJ0UG9zaXRpb249e2F4aXM6JDEuVkVSVElDQUwsc2lkZTpsLkFGVEVSLGFuY2hvcjpfby5FTkQsY29u''@;'; put 'put ''dGVudDpfby5FTkR9LHRoaXMuX29wZW49ITEsdGhpcy5vcGVuQ2hhbmdlPW5ldyBhcighMSksdGhpcy5zdWJzLnB1c2goeS5vcGVuQ2hhbmdlLnN1YnNjcmliZShaPT57dGhpcy5vcGVuPVosdGhpcy5hcmlhRXhwYW5kZWQ9Wn0pKX1nZXQgb3Blbigpe3JldHVybiB0aGlzLl9vcGVufXNldCBv''@;'; put 'put ''cGVuKGgpe3RoaXMub3BlbiE9PShoPSEhaCkmJih0aGlzLnNtYXJ0VG9nZ2xlU2VydmljZS5vcGVuPWgsdGhpcy5vcGVuQ2hhbmdlLmVtaXQoaCksIWgmJlNsKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMuYW5jaG9yLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSx0aGlzLl9vcGVuPWgpfXNldCBjdXN0''@;'; put 'put ''b21GaWx0ZXIoaCl7dGhpcy5zZXRGaWx0ZXIoaCl9Z2V0IGFjdGl2ZSgpe3JldHVybiEhdGhpcy5maWx0ZXImJnRoaXMuZmlsdGVyLmlzQWN0aXZlKCl9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLHRoaXMuc3Vicy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSl9fXJldHVy''@;'; put 'put ''biBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHZ2KSxLdChucyksS3QoenMpLEt0KEwyKSxLdCh5MikpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGctZmlsdGVyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYm''@;'; put 'put ''dm8oc2NlLDUsYm8pLDImaCl7bGV0IHk7SGkoeT0kaSgpKSYmKHYuYW5jaG9yPXkuZmlyc3QpfX0saW5wdXRzOntvcGVuOlsiY2xyRGdGaWx0ZXJPcGVuIiwib3BlbiJdLGN1c3RvbUZpbHRlcjpbImNsckRnRmlsdGVyIiwiY3VzdG9tRmlsdGVyIl19LG91dHB1dHM6e29wZW5DaGFuZ2U6ImNs''@;'; put 'put ''ckRnRmlsdGVyT3BlbkNoYW5nZSJ9LGZlYXR1cmVzOltobyhbe3Byb3ZpZGU6aHEsdXNlRXhpc3Rpbmc6ZH0sT2NdKSxEb10sbmdDb250ZW50U2VsZWN0b3JzOm5hLGRlY2xzOjQsdmFyczoxMyxjb25zdHM6W1sidHlwZSIsImJ1dHRvbiIsImNsclBvcG92ZXJBbmNob3IiLCIiLCJjbHJQb3Bv''@;'; put 'put ''dmVyT3BlbkNsb3NlQnV0dG9uIiwiIiwxLCJkYXRhZ3JpZC1maWx0ZXItdG9nZ2xlIl0sWyJhbmNob3IiLCIiXSxbInNvbGlkIiwiIl0sWyJjbGFzcyIsImRhdGFncmlkLWZpbHRlciIsImNsckZvY3VzVHJhcCIsIiIsInJvbGUiLCJkaWFsb2ciLDMsImlkIiw0LCJjbHJQb3BvdmVyQ29udGVu''@;'; put 'put ''dCIsImNsclBvcG92ZXJDb250ZW50QXQiLCJjbHJQb3BvdmVyQ29udGVudE91dHNpZGVDbGlja1RvQ2xvc2UiLCJjbHJQb3BvdmVyQ29udGVudFNjcm9sbFRvQ2xvc2UiXSxbImNsckZvY3VzVHJhcCIsIiIsInJvbGUiLCJkaWFsb2ciLDEsImRhdGFncmlkLWZpbHRlciIsMywiaWQiXSxbMSwi''@;'; put 'put ''ZGF0YWdyaWQtZmlsdGVyLWNsb3NlLXdyYXBwZXIiXSxbInR5cGUiLCJidXR0b24iLCJjbHJQb3BvdmVyQ2xvc2VCdXR0b24iLCIiLDEsImNsb3NlIl0sWyJzaGFwZSIsIndpbmRvdy1jbG9zZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKCksbnQoMCwiYnV0dG9uIiwwLDEp''@;'; put 'put ''LENyKDIsImNkcy1pY29uIiwyKSxvdCgpLHJuKDMsQWcsNSwzLCJkaXYiLDMpKSwyJmgmJihGaSgiZGF0YWdyaWQtZmlsdGVyLW9wZW4iLHYub3BlbikoImRhdGFncmlkLWZpbHRlcmVkIix2LmFjdGl2ZSksR2koImFyaWEtbGFiZWwiLHYuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGFncmlkRmls''@;'; put 'put ''dGVyQXJpYUxhYmVsKSgiYXJpYS1leHBhbmRlZCIsdi5hcmlhRXhwYW5kZWQpKCJhcmlhLWNvbnRyb2xzIix2LnBvcG92ZXJJZCksdXQoMiksR2koInN0YXR1cyIsdi5hY3RpdmU/ImluZm8iOm51bGwpKCJzaGFwZSIsdi5hY3RpdmU/ImZpbHRlci1ncmlkLWNpcmNsZSI6ImZpbHRlci1ncmlk''@;'; put 'put ''IiksdXQoMSksVHQoImNsclBvcG92ZXJDb250ZW50Iix2Lm9wZW4pKCJjbHJQb3BvdmVyQ29udGVudEF0Iix2LnNtYXJ0UG9zaXRpb24pKCJjbHJQb3BvdmVyQ29udGVudE91dHNpZGVDbGlja1RvQ2xvc2UiLCEwKSgiY2xyUG9wb3ZlckNvbnRlbnRTY3JvbGxUb0Nsb3NlIiwhMCkpfSxkZXBl''@;'; put 'put ''bmRlbmNpZXM6W3V3LGN3LFpvLGRsLGh3LHJxXSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKTtjbGFzcyBQZmV7Y29uc3RydWN0b3IoZyl7dGhpcy5wcm9wPWcsZy5pbmRleE9mKCIuIik+PTAmJih0aGlzLnNwbGl0UHJvcD1nLnNwbGl0KCIuIikpfWdldFByb3BWYWx1ZShnKXtpZih0aGlzLnNw''@;'; put 'put ''bGl0UHJvcCl7bGV0IGg9Zztmb3IoY29uc3QgdiBvZiB0aGlzLnNwbGl0UHJvcCl7aWYobnVsbD09aHx8dm9pZCAwPT09aFt2XSlyZXR1cm47aD1oW3ZdfXJldHVybiBofXJldHVybiBnW3RoaXMucHJvcF19fWNsYXNzIGdxe2NvbnN0cnVjdG9yKGcsaD0hMSl7dGhpcy5wcm9wPWcsdGhpcy5l''@;'; put 'put ''eGFjdD1oLHRoaXMubmVzdGVkUHJvcD1uZXcgUGZlKGcpfWFjY2VwdHMoZyxoLHYpe2NvbnN0IHk9dGhpcy5uZXN0ZWRQcm9wLmdldFByb3BWYWx1ZShnKTtyZXR1cm4hKG51bGwhPT1oJiZ5PGh8fG51bGwhPT12JiZ5PnYpfX1jbGFzcyBoU3tjb25zdHJ1Y3RvcihnKXt0aGlzLmZpbHRlckZu''@;'; put 'put ''PWcsdGhpcy5fY2hhbmdlcz1uZXcgJGUsdGhpcy5fbG93PW51bGwsdGhpcy5faGlnaD1udWxsfWdldCBjaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2NoYW5nZXMuYXNPYnNlcnZhYmxlKCl9Z2V0IHZhbHVlKCl7cmV0dXJuW3RoaXMuX2xvdyx0aGlzLl9oaWdoXX1zZXQgdmFsdWUoZyl7Y29uc3Qg''@;'; put 'put ''aD1nWzBdLHY9Z1sxXTsoaCE9PXRoaXMuX2xvd3x8diE9PXRoaXMuX2hpZ2gpJiYodGhpcy5fbG93PWgsdGhpcy5faGlnaD12LHRoaXMuX2NoYW5nZXMubmV4dChbdGhpcy5fbG93LHRoaXMuX2hpZ2hdKSl9Z2V0IGxvdygpe3JldHVybiB0aGlzLl9sb3d9c2V0IGxvdyhnKXtnIT09dGhpcy5f''@;'; put 'put ''bG93JiYodGhpcy5fbG93PWcsdGhpcy5fY2hhbmdlcy5uZXh0KFt0aGlzLl9sb3csdGhpcy5faGlnaF0pKX1nZXQgaGlnaCgpe3JldHVybiB0aGlzLl9oaWdofXNldCBoaWdoKGcpe2chPT10aGlzLl9oaWdoJiYodGhpcy5faGlnaD1nLHRoaXMuX2NoYW5nZXMubmV4dChbdGhpcy5fbG93LHRo''@;'; put 'put ''aXMuX2hpZ2hdKSl9aXNBY3RpdmUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2xvd3x8bnVsbCE9PXRoaXMuaGlnaH1hY2NlcHRzKGcpe3JldHVybiB0aGlzLmZpbHRlckZuLmFjY2VwdHMoZyx0aGlzLl9sb3csdGhpcy5faGlnaCl9Z2V0IHN0YXRlKCl7cmV0dXJuIHRoaXMuZmlsdGVyRm4gaW5z''@;'; put 'put ''dGFuY2VvZiBncT97cHJvcGVydHk6dGhpcy5maWx0ZXJGbi5wcm9wLGxvdzp0aGlzLl9sb3csaGlnaDp0aGlzLl9oaWdofTp0aGlzfWVxdWFscyhnKXtyZXR1cm4gZyBpbnN0YW5jZW9mIGhTJiYoZy5maWx0ZXJGbiBpbnN0YW5jZW9mIGdxP3RoaXMuZmlsdGVyRm4gaW5zdGFuY2VvZiBncSYm''@;'; put 'put ''Zy5maWx0ZXJGbi5wcm9wPT09dGhpcy5maWx0ZXJGbi5wcm9wJiZnLmxvdz09PXRoaXMuX2xvdyYmZy5oaWdoPT09dGhpcy5faGlnaDpnPT09dGhpcyl9fWxldCByeWU9KCgpPT57Y2xhc3MgZCBleHRlbmRzIHBxe2NvbnN0cnVjdG9yKGgsdix5LEMsSSl7c3VwZXIoaCksdGhpcy5kb21BZGFw''@;'; put 'put ''dGVyPXYsdGhpcy5jb21tb25TdHJpbmdzPXksdGhpcy5wb3BvdmVyVG9nZ2xlU2VydmljZT1DLHRoaXMubmdab25lPUksdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMub3Blbj0hMSx0aGlzLmZpbHRlclZhbHVlQ2hhbmdlPW5ldyBhcn1uZ09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95''@;'; put 'put ''KCksdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+e2gudW5zdWJzY3JpYmUoKX0pfWdldCBtYXhQbGFjZWhvbGRlclZhbHVlKCl7cmV0dXJuIHRoaXMubWF4UGxhY2Vob2xkZXJ8fHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLm1heFZhbHVlfWdldCBtaW5QbGFjZWhvbGRlclZhbHVlKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMubWluUGxhY2Vob2xkZXJ8fHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLm1pblZhbHVlfXNldCBjdXN0b21OdW1lcmljRmlsdGVyKGgpe3RoaXMuc2V0RmlsdGVyKGggaW5zdGFuY2VvZiBkcT9oOm5ldyBoUyhoKSksdGhpcy5pbml0RmlsdGVyVmFsdWVzJiYodGhpcy52YWx1''@;'; put 'put ''ZT10aGlzLmluaXRGaWx0ZXJWYWx1ZXMsZGVsZXRlIHRoaXMuaW5pdEZpbHRlclZhbHVlcyl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5wb3BvdmVyVG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShoPT57dGhpcy5vcGVuPWgsdGhpcy5u''@;'; put 'put ''Z1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLmRvbUFkYXB0ZXIuZm9jdXModGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KX0pfSl9KSl9Z2V0IHZhbHVlKCl7cmV0dXJuW3RoaXMuZmlsdGVyLmxvdyx0aGlzLmZpbHRlci5oaWdoXX1z''@;'; put 'put ''ZXQgdmFsdWUoaCl7dGhpcy5maWx0ZXImJkFycmF5LmlzQXJyYXkoaCk/aCYmKGhbMF0hPT10aGlzLmZpbHRlci5sb3d8fGhbMV0hPT10aGlzLmZpbHRlci5oaWdoKSYmKHRoaXMuZmlsdGVyLmxvdz0ibnVtYmVyIj09dHlwZW9mIGhbMF0/aFswXTpudWxsLHRoaXMuZmlsdGVyLmhpZ2g9Im51''@;'; put 'put ''bWJlciI9PXR5cGVvZiBoWzFdP2hbMV06bnVsbCx0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoaCkpOnRoaXMuaW5pdEZpbHRlclZhbHVlcz1ofWdldCBsb3coKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHRoaXMuZmlsdGVyLmxvdyYmaXNGaW5pdGUodGhpcy5maWx0ZXIubG93KT90aGlz''@;'; put 'put ''LmZpbHRlci5sb3c6bnVsbH1zZXQgbG93KGgpeyJudW1iZXIiPT10eXBlb2YgaCYmaCE9PXRoaXMuZmlsdGVyLmxvdz8odGhpcy5maWx0ZXIubG93PWgsdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KFt0aGlzLmZpbHRlci5sb3csdGhpcy5maWx0ZXIuaGlnaF0pKToibnVtYmVyIiE9dHlw''@;'; put 'put ''ZW9mIGgmJih0aGlzLmZpbHRlci5sb3c9bnVsbCx0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoW3RoaXMuZmlsdGVyLmxvdyx0aGlzLmZpbHRlci5oaWdoXSkpfWdldCBoaWdoKCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0aGlzLmZpbHRlci5oaWdoJiZpc0Zpbml0ZSh0aGlzLmZpbHRl''@;'; put 'put ''ci5oaWdoKT90aGlzLmZpbHRlci5oaWdoOm51bGx9c2V0IGhpZ2goaCl7Im51bWJlciI9PXR5cGVvZiBoJiZoIT09dGhpcy5maWx0ZXIuaGlnaD8odGhpcy5maWx0ZXIuaGlnaD1oLHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChbdGhpcy5maWx0ZXIubG93LHRoaXMuZmlsdGVyLmhpZ2hd''@;'; put 'put ''KSk6Im51bWJlciIhPXR5cGVvZiBoJiYodGhpcy5maWx0ZXIuaGlnaD1udWxsLHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChbdGhpcy5maWx0ZXIubG93LHRoaXMuZmlsdGVyLmhpZ2hdKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHZ2''@;'; put 'put ''KSxLdChmNCksS3QobnMpLEt0KHpzKSxLdChfbCkpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGctbnVtZXJpYy1maWx0ZXIiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGgsdil7aWYoMSZoJiYodm8odWNlLDUpLHZvKHNaLDUpKSwyJmgpe2xldCB5O0hpKHk9JGko''@;'; put 'put ''KSkmJih2LmlucHV0PXkuZmlyc3QpLEhpKHk9JGkoKSkmJih2LmZpbHRlckNvbnRhaW5lcj15LmZpcnN0KX19LGlucHV0czp7bWF4UGxhY2Vob2xkZXI6WyJjbHJGaWx0ZXJNYXhQbGFjZWhvbGRlciIsIm1heFBsYWNlaG9sZGVyIl0sbWluUGxhY2Vob2xkZXI6WyJjbHJGaWx0ZXJNaW5QbGFj''@;'; put 'put ''ZWhvbGRlciIsIm1pblBsYWNlaG9sZGVyIl0sY3VzdG9tTnVtZXJpY0ZpbHRlcjpbImNsckRnTnVtZXJpY0ZpbHRlciIsImN1c3RvbU51bWVyaWNGaWx0ZXIiXSx2YWx1ZTpbImNsckZpbHRlclZhbHVlIiwidmFsdWUiXX0sb3V0cHV0czp7ZmlsdGVyVmFsdWVDaGFuZ2U6ImNsckZpbHRlclZh''@;'; put 'put ''bHVlQ2hhbmdlIn0sZmVhdHVyZXM6W2hvKFt7cHJvdmlkZTpocSx1c2VFeGlzdGluZzpkfV0pLERvXSxkZWNsczo2LHZhcnM6OCxjb25zdHM6W1szLCJjbHJEZ0ZpbHRlciIsImNsckRnRmlsdGVyT3BlbiIsImNsckRnRmlsdGVyT3BlbkNoYW5nZSJdLFsidHlwZSIsIm51bWJlciIsIm5hbWUi''@;'; put 'put ''LCJsb3ciLDEsImRhdGFncmlkLW51bWVyaWMtZmlsdGVyLWlucHV0IiwzLCJuZ01vZGVsIiwicGxhY2Vob2xkZXIiLCJuZ01vZGVsQ2hhbmdlIl0sWyJpbnB1dF9sb3ciLCIiXSxbMSwiZGF0YWdyaWQtZmlsdGVyLWlucHV0LXNwYWNlciJdLFsidHlwZSIsIm51bWJlciIsIm5hbWUiLCJoaWdo''@;'; put 'put ''IiwxLCJkYXRhZ3JpZC1udW1lcmljLWZpbHRlci1pbnB1dCIsMywibmdNb2RlbCIsInBsYWNlaG9sZGVyIiwibmdNb2RlbENoYW5nZSJdLFsiaW5wdXRfaGlnaCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKG50KDAsImNsci1kZy1maWx0ZXIiLDApLEduKCJjbHJEZ0ZpbHRl''@;'; put 'put ''ck9wZW5DaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9wZW49Q30pLG50KDEsImlucHV0IiwxLDIpLEduKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5sb3c9Q30pLG90KCksQ3IoMywic3BhbiIsMyksbnQoNCwiaW5wdXQiLDQsNSksR24oIm5nTW9kZWxDaGFuZ2Ui''@;'; put 'put ''LGZ1bmN0aW9uKEMpe3JldHVybiB2LmhpZ2g9Q30pLG90KCkoKSksMiZoJiYoVHQoImNsckRnRmlsdGVyIix2LnJlZ2lzdGVyZWQpKCJjbHJEZ0ZpbHRlck9wZW4iLHYub3BlbiksdXQoMSksVHQoIm5nTW9kZWwiLHYubG93KSgicGxhY2Vob2xkZXIiLHYubWluUGxhY2Vob2xkZXJWYWx1ZSks''@;'; put 'put ''R2koImFyaWEtbGFiZWwiLHYubWluUGxhY2Vob2xkZXJWYWx1ZSksdXQoMyksVHQoIm5nTW9kZWwiLHYuaGlnaCkoInBsYWNlaG9sZGVyIix2Lm1heFBsYWNlaG9sZGVyVmFsdWUpLEdpKCJhcmlhLWxhYmVsIix2Lm1heFBsYWNlaG9sZGVyVmFsdWUpKX0sZGVwZW5kZW5jaWVzOltzWixqVixt''@;'; put 'put ''MSxUcyxJc10sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCk7Y2xhc3MgbXF7Y29uc3RydWN0b3IoZyxoPSExKXt0aGlzLnByb3A9Zyx0aGlzLmV4YWN0PWgsdGhpcy5uZXN0ZWRQcm9wPW5ldyBQZmUoZyl9YWNjZXB0cyhnLGgpe2NvbnN0IHY9dGhpcy5uZXN0ZWRQcm9wLmdldFByb3BWYWx1ZShn''@;'; put 'put ''KTtyZXR1cm4gdm9pZCAwIT09diYmKHRoaXMuZXhhY3Q/KCIiK3YpLnRvTG93ZXJDYXNlKCk9PT1oOigiIit2KS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoaCk+PTApfX1jbGFzcyBkU3tjb25zdHJ1Y3RvcihnKXt0aGlzLmZpbHRlckZuPWcsdGhpcy5fY2hhbmdlcz1uZXcgJGUsdGhpcy5fbG93''@;'; put 'put ''ZXJDYXNlVmFsdWU9IiIsdGhpcy5fcmF3VmFsdWU9IiJ9Z2V0IGNoYW5nZXMoKXtyZXR1cm4gdGhpcy5fY2hhbmdlcy5hc09ic2VydmFibGUoKX1nZXQgbG93ZXJDYXNlVmFsdWUoKXtyZXR1cm4gdGhpcy5fbG93ZXJDYXNlVmFsdWV9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuX3Jhd1ZhbHVl''@;'; put 'put ''fXNldCB2YWx1ZShnKXtnfHwoZz0iIiksZyE9PXRoaXMuX3Jhd1ZhbHVlJiYodGhpcy5fcmF3VmFsdWU9Zyx0aGlzLl9sb3dlckNhc2VWYWx1ZT1nLnRvTG93ZXJDYXNlKCkudHJpbSgpLHRoaXMuX2NoYW5nZXMubmV4dChnKSl9aXNBY3RpdmUoKXtyZXR1cm4hIXRoaXMudmFsdWV9YWNjZXB0''@;'; put 'put ''cyhnKXtyZXR1cm4gdGhpcy5maWx0ZXJGbi5hY2NlcHRzKGcsdGhpcy5sb3dlckNhc2VWYWx1ZSl9Z2V0IHN0YXRlKCl7cmV0dXJuIHRoaXMuZmlsdGVyRm4gaW5zdGFuY2VvZiBtcT97cHJvcGVydHk6dGhpcy5maWx0ZXJGbi5wcm9wLHZhbHVlOnRoaXMudmFsdWV9OnRoaXN9ZXF1YWxzKGcp''@;'; put 'put ''e3JldHVybiBnIGluc3RhbmNlb2YgZFMmJihnLmZpbHRlckZuIGluc3RhbmNlb2YgbXE/dGhpcy5maWx0ZXJGbiBpbnN0YW5jZW9mIG1xJiZnLmZpbHRlckZuLnByb3A9PT10aGlzLmZpbHRlckZuLnByb3AmJmcudmFsdWU9PT10aGlzLnZhbHVlOmc9PT10aGlzKX19bGV0IEZmZT0oKCk9Pntj''@;'; put 'put ''bGFzcyBkIGV4dGVuZHMgcHF7Y29uc3RydWN0b3IoaCx2LHksQyxJKXtzdXBlcihoKSx0aGlzLmRvbUFkYXB0ZXI9dix0aGlzLmNvbW1vblN0cmluZ3M9eSx0aGlzLnNtYXJ0VG9nZ2xlU2VydmljZT1DLHRoaXMubmdab25lPUksdGhpcy5zdWJzPVtdLHRoaXMub3Blbj0hMSx0aGlzLmZpbHRl''@;'; put 'put ''clZhbHVlQ2hhbmdlPW5ldyBhcn1nZXQgcGxhY2Vob2xkZXJWYWx1ZSgpe3JldHVybiB0aGlzLnBsYWNlaG9sZGVyfHx0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5maWx0ZXJJdGVtc31zZXQgY3VzdG9tU3RyaW5nRmlsdGVyKGgpe3RoaXMuc2V0RmlsdGVyKGggaW5zdGFuY2VvZiBkcT9oOm5l''@;'; put 'put ''dyBkUyhoKSksdGhpcy5pbml0RmlsdGVyVmFsdWUmJih0aGlzLnZhbHVlPXRoaXMuaW5pdEZpbHRlclZhbHVlLGRlbGV0ZSB0aGlzLmluaXRGaWx0ZXJWYWx1ZSl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5zdWJzLnB1c2godGhpcy5zbWFydFRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJz''@;'; put 'put ''Y3JpYmUoaD0+e3RoaXMub3Blbj1oLHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5kb21BZGFwdGVyLmZvY3VzKHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCl9KX0pfSkpfW5nT25EZXN0cm95KCl7c3VwZXIubmdPbkRl''@;'; put 'put ''c3Ryb3koKSx0aGlzLnN1YnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJlKCkpfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLmZpbHRlci52YWx1ZX1zZXQgdmFsdWUoaCl7dGhpcy5maWx0ZXImJiJzdHJpbmciPT10eXBlb2YgaD8oaHx8KGg9IiIpLGghPT10aGlzLmZpbHRlci52YWx1ZSYmKHRo''@;'; put 'put ''aXMuZmlsdGVyLnZhbHVlPWgsdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KGgpKSk6dGhpcy5pbml0RmlsdGVyVmFsdWU9aH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QodnYpLEt0KGY0KSxLdChucyksS3QoenMpLEt0KF9sKSl9LGQuXHUw''@;'; put 'put ''Mjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1kZy1zdHJpbmctZmlsdGVyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYmKHZvKEFMLDUpLHZvKHNaLDUpKSwyJmgpe2xldCB5O0hpKHk9JGkoKSkmJih2LmlucHV0PXkuZmlyc3QpLEhpKHk9JGkoKSkmJih2LmZp''@;'; put 'put ''bHRlckNvbnRhaW5lcj15LmZpcnN0KX19LGlucHV0czp7cGxhY2Vob2xkZXI6WyJjbHJGaWx0ZXJQbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIl0sY3VzdG9tU3RyaW5nRmlsdGVyOlsiY2xyRGdTdHJpbmdGaWx0ZXIiLCJjdXN0b21TdHJpbmdGaWx0ZXIiXSx2YWx1ZTpbImNsckZpbHRlclZh''@;'; put 'put ''bHVlIiwidmFsdWUiXX0sb3V0cHV0czp7ZmlsdGVyVmFsdWVDaGFuZ2U6ImNsckZpbHRlclZhbHVlQ2hhbmdlIn0sZmVhdHVyZXM6W2hvKFt7cHJvdmlkZTpocSx1c2VFeGlzdGluZzpkfV0pLERvXSxkZWNsczozLHZhcnM6NSxjb25zdHM6W1szLCJjbHJEZ0ZpbHRlciIsImNsckRnRmlsdGVy''@;'; put 'put ''T3BlbiIsImNsckRnRmlsdGVyT3BlbkNoYW5nZSJdLFsidHlwZSIsInRleHQiLCJuYW1lIiwic2VhcmNoIiwxLCJjbHItaW5wdXQiLDMsIm5nTW9kZWwiLCJwbGFjZWhvbGRlciIsIm5nTW9kZWxDaGFuZ2UiXSxbImlucHV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYobnQo''@;'; put 'put ''MCwiY2xyLWRnLWZpbHRlciIsMCksR24oImNsckRnRmlsdGVyT3BlbkNoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub3Blbj1DfSksbnQoMSwiaW5wdXQiLDEsMiksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2LnZhbHVlPUN9KSxvdCgpKCkpLDImaCYmKFR0KCJj''@;'; put 'put ''bHJEZ0ZpbHRlciIsdi5yZWdpc3RlcmVkKSgiY2xyRGdGaWx0ZXJPcGVuIix2Lm9wZW4pLHV0KDEpLFR0KCJuZ01vZGVsIix2LnZhbHVlKSgicGxhY2Vob2xkZXIiLHYucGxhY2Vob2xkZXJWYWx1ZSksR2koImFyaWEtbGFiZWwiLHYucGxhY2Vob2xkZXJWYWx1ZSkpfSxkZXBlbmRlbmNpZXM6''@;'; put 'put ''W3NaLG0xLFRzLElzXSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxwdz0oKCk9PntjbGFzcyBkIGV4dGVuZHMgYXd7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbigpe2xldCBnO3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4oZ3x8KGc9ZmwoZCkpKSh2fHxkKX19KCksZC5cdTAyNzVkaXI9''@;'; put 'put ''V2koe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWRhdGFncmlkIl1dLGZlYXR1cmVzOltEb119KSxkfSkoKSxOTD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5hY3Rpb25hYmxlQ291bnQ9MH1yZWdpc3Rlcigpe3RoaXMuYWN0aW9uYWJsZUNvdW50Kyt9dW5yZWdpc3Rlcigpe3Ro''@;'; put 'put ''aXMuYWN0aW9uYWJsZUNvdW50LS19Z2V0IGhhc0FjdGlvbmFibGVSb3coKXtyZXR1cm4gdGhpcy5hY3Rpb25hYmxlQ291bnQ+MH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1''@;'; put 'put ''ZmFjfSksZH0pKCksVkw9KCgpPT57Y2xhc3MgZCBleHRlbmRzIGx3e2NvbnN0cnVjdG9yKGgsdix5KXtpZighdil0aHJvdyBuZXcgRXJyb3IoImNsci1kZy1yb3cgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbnNpZGUgb2YgYSBjbHItZGF0YWdyaWQiKTtzdXBlcihoLHYpLHRoaXMucm93QWN0aW9u''@;'; put 'put ''cz15fWdldCBmbGF2b3IoKXtyZXR1cm4gdGhpcy5yb3dBY3Rpb25zLmhhc0FjdGlvbmFibGVSb3d9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGQxKSxLdChwdyw4KSxLdChOTCkpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpb''@;'; put 'put ''WyJjbHItZGF0YWdyaWQiXSxbImNsci1kZy1yb3ciXV0sZmVhdHVyZXM6W0RvXX0pLGR9KSgpLEE4PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLnRvZ2dsZVN0YXRlPSExLHRoaXMuX3N0YXRlPW5ldyBmcyh0aGlzLnRvZ2dsZVN0YXRlKSx0aGlzLl9lbmFibGVkPSExfWdldCBl''@;'; put 'put ''bmFibGVkKCl7cmV0dXJuIHRoaXMuX2VuYWJsZWR9c2V0IGVuYWJsZWQoaCl7dGhpcy5fZW5hYmxlZD1ofWdldCBzdGF0ZUNoYW5nZSgpe3JldHVybiB0aGlzLl9zdGF0ZS5hc09ic2VydmFibGUoKX1jbG9zZSgpe3RoaXMudG9nZ2xlU3RhdGU9ITEsdGhpcy5fc3RhdGUubmV4dCh0aGlzLnRv''@;'; put 'put ''Z2dsZVN0YXRlKSx0aGlzLmJ1dHRvbiYmKHRoaXMuYnV0dG9uLmZvY3VzKCksdGhpcy5idXR0b249bnVsbCl9b3BlbihoLHYpe3RoaXMuY2FjaGU9aCx0aGlzLmJ1dHRvbj12LHRoaXMudG9nZ2xlU3RhdGU9ITAsdGhpcy5fc3RhdGUubmV4dCh0aGlzLnRvZ2dsZVN0YXRlKX10b2dnbGUoaCx2''@;'; put 'put ''KXt0aGlzLmlzUm93T3BlbihoKXx8IWg/dGhpcy5jbG9zZSgpOnRoaXMub3BlbihoLHYpfWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLmNhY2hlfWlzUm93T3BlbihoKXtyZXR1cm4hKCF0aGlzLnRvZ2dsZVN0YXRlfHx0aGlzLmNhY2hlIT09aCl9Z2V0IGlzT3Blbigpe3JldHVybiEwPT09dGhp''@;'; put 'put ''cy50b2dnbGVTdGF0ZX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksakw9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmRldGFpbFNlcnZp''@;'; put 'put ''Y2U9aCx0aGlzLmV4cGFuZGFibGVDb3VudD0wfXJlZ2lzdGVyKCl7dGhpcy5leHBhbmRhYmxlQ291bnQrK311bnJlZ2lzdGVyKCl7dGhpcy5leHBhbmRhYmxlQ291bnQtLX1nZXQgaGFzRXhwYW5kYWJsZVJvdygpe3JldHVybiF0aGlzLmRldGFpbFNlcnZpY2UuZW5hYmxlZCYmdGhpcy5leHBh''@;'; put 'put ''bmRhYmxlQ291bnQ+MH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoQ2koQTgpKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxaTD0oKCk9PntjbGFzcyBkIGV4dGVuZHMgbHd7Y29uc3RydWN0b3Io''@;'; put 'put ''aCx2LHkpe2lmKCF2KXRocm93IG5ldyBFcnJvcigiY2xyLWRnLXJvdyBzaG91bGQgb25seSBiZSB1c2VkIGluc2lkZSBvZiBhIGNsci1kYXRhZ3JpZCIpO3N1cGVyKGgsdiksdGhpcy5leHBhbmRhYmxlQ291bnQ9eX1nZXQgZmxhdm9yKCl7cmV0dXJuIHRoaXMuZXhwYW5kYWJsZUNvdW50Lmhh''@;'; put 'put ''c0V4cGFuZGFibGVSb3d9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGQxKSxLdChwdyw4KSxLdChqTCkpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGF0YWdyaWQiXSxbImNsci1kZy1yb3ciXV0sZmVhdHVyZXM6''@;'; put 'put ''W0RvXX0pLGR9KSgpO2NsYXNzIHZxe2NvbnN0cnVjdG9yKGcpe3RoaXMucHJvcD1nLHRoaXMubmVzdGVkUHJvcD1uZXcgUGZlKGcpfWNvbXBhcmUoZyxoKXtsZXQgdj10aGlzLm5lc3RlZFByb3AuZ2V0UHJvcFZhbHVlKGcpLHk9dGhpcy5uZXN0ZWRQcm9wLmdldFByb3BWYWx1ZShoKTtyZXR1''@;'; put 'put ''cm4ic3RyaW5nIj09dHlwZW9mIHYmJih2PXYudG9Mb3dlckNhc2UoKSksInN0cmluZyI9PXR5cGVvZiB5JiYoeT15LnRvTG93ZXJDYXNlKCkpLG51bGw9PXY/bnVsbD09eT8wOjE6bnVsbD09eXx8djx5Py0xOnY+eT8xOjB9fXZhciBkaD0oKCk9PihmdW5jdGlvbihkKXtkW2QuVU5TT1JURUQ9''@;'; put 'put ''MF09IlVOU09SVEVEIixkW2QuQVNDPTFdPSJBU0MiLGRbZC5ERVNDPS0xXT0iREVTQyJ9KGRofHwoZGg9e30pKSxkaCkpKCk7bGV0IEhmZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fZHluYW1pYz0hMX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLmNvbHVtblZpZXc9dGhpcy50''@;'; put 'put ''ZW1wbGF0ZVJlZi5jcmVhdGVFbWJlZGRlZFZpZXcobnVsbCl9bmdPbkRlc3Ryb3koKXt0aGlzLmNvbHVtblZpZXcuZGVzdHJveSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siZGct''@;'; put 'put ''d3JhcHBlZC1jb2x1bW4iXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGgsdil7aWYoMSZoJiZ2byh5TCw1KSwyJmgpe2xldCB5O0hpKHk9JGkoKSkmJih2LnRlbXBsYXRlUmVmPXkuZmlyc3QpfX0sbmdDb250ZW50U2VsZWN0b3JzOm5hLGRlY2xzOjIsdmFyczowLGNvbnN0czpbWyJjb2x1bW5Qb3J0''@;'; put 'put ''YWwiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihLMCgpLHJuKDAseGosMSwwLCJuZy10ZW1wbGF0ZSIsbnVsbCwwLFpyKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLEFxPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5zdGF0ZURlYm91bmNlcj1oLHRoaXMu''@;'; put 'put ''X3JldmVyc2U9ITEsdGhpcy5fY2hhbmdlPW5ldyAkZX1nZXQgY29tcGFyYXRvcigpe3JldHVybiB0aGlzLl9jb21wYXJhdG9yfXNldCBjb21wYXJhdG9yKGgpe3RoaXMuc3RhdGVEZWJvdW5jZXIuY2hhbmdlU3RhcnQoKSx0aGlzLl9jb21wYXJhdG9yPWgsdGhpcy5lbWl0Q2hhbmdlKCksdGhp''@;'; put 'put ''cy5zdGF0ZURlYm91bmNlci5jaGFuZ2VEb25lKCl9Z2V0IHJldmVyc2UoKXtyZXR1cm4gdGhpcy5fcmV2ZXJzZX1zZXQgcmV2ZXJzZShoKXt0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZVN0YXJ0KCksdGhpcy5fcmV2ZXJzZT1oLHRoaXMuZW1pdENoYW5nZSgpLHRoaXMuc3RhdGVEZWJvdW5j''@;'; put 'put ''ZXIuY2hhbmdlRG9uZSgpfWVtaXRDaGFuZ2UoKXt0aGlzLl9jaGFuZ2UubmV4dCh0aGlzKX1nZXQgY2hhbmdlKCl7cmV0dXJuIHRoaXMuX2NoYW5nZS5hc09ic2VydmFibGUoKX10b2dnbGUoaCx2KXt0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZVN0YXJ0KCksdGhpcy5jb21wYXJhdG9yPT09''@;'; put 'put ''aD90aGlzLl9yZXZlcnNlPXZvaWQgMCE9PXYmJnZ8fCF0aGlzLl9yZXZlcnNlOih0aGlzLl9jb21wYXJhdG9yPWgsdGhpcy5fcmV2ZXJzZT12b2lkIDAhPT12JiZ2KSx0aGlzLmVtaXRDaGFuZ2UoKSx0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZURvbmUoKX1jbGVhcigpe3RoaXMuY29tcGFy''@;'; put 'put ''YXRvcj1udWxsfWNvbXBhcmUoaCx2KXtyZXR1cm4odGhpcy5yZXZlcnNlPy0xOjEpKnRoaXMuY29tcGFyYXRvci5jb21wYXJlKGgsdil9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKGxaKSl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0''@;'; put 'put ''b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7dmFyIGg0PSgoKT0+KGZ1bmN0aW9uKGQpe2RbZC5BTElHTl9DT0xVTU5TPTBdPSJBTElHTl9DT0xVTU5TIixkW2QuQ0FMQ1VMQVRFX01PREVfT049MV09IkNBTENVTEFURV9NT0RFX09OIixkW2QuQ0FMQ1VMQVRFX01PREVfT0ZGPTJdPSJDQUxDVUxB''@;'; put 'put ''VEVfTU9ERV9PRkYiLGRbZC5DTEVBUl9XSURUSFM9M109IkNMRUFSX1dJRFRIUyIsZFtkLkNPTVBVVEVfQ09MVU1OX1dJRFRIUz00XT0iQ09NUFVURV9DT0xVTU5fV0lEVEhTIn0oaDR8fChoND17fSkpLGg0KSkoKTtsZXQgcFM9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3Jl''@;'; put 'put ''bmRlclN0ZXA9bmV3ICRlLHRoaXMuYWxyZWFkeVNpemVkPSExfWdldCByZW5kZXJTdGVwKCl7cmV0dXJuIHRoaXMuX3JlbmRlclN0ZXAuYXNPYnNlcnZhYmxlKCl9ZmlsdGVyUmVuZGVyU3RlcHMoaCl7cmV0dXJuIHRoaXMucmVuZGVyU3RlcC5waXBlKE8yKHY9Pmg9PT12KSl9cmVzaXplKCl7''@;'; put 'put ''dGhpcy5fcmVuZGVyU3RlcC5uZXh0KGg0LkNBTENVTEFURV9NT0RFX09OKSx0aGlzLmFscmVhZHlTaXplZCYmdGhpcy5fcmVuZGVyU3RlcC5uZXh0KGg0LkNMRUFSX1dJRFRIUyksdGhpcy5fcmVuZGVyU3RlcC5uZXh0KGg0LkNPTVBVVEVfQ09MVU1OX1dJRFRIUyksdGhpcy5fcmVuZGVyU3Rl''@;'; put 'put ''cC5uZXh0KGg0LkFMSUdOX0NPTFVNTlMpLHRoaXMuYWxyZWFkeVNpemVkPSEwLHRoaXMuX3JlbmRlclN0ZXAubmV4dChoNC5DQUxDVUxBVEVfTU9ERV9PRkYpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpk''@;'; put 'put ''LGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxOZmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5lbD1oLHRoaXMuZG9tQWRhcHRlcj12LHRoaXMub3JnYW5pemVyPXksdGhpcy5fcmVzaXplZEJ5PTB9Z2V0IHJlc2l6ZWRCeSgpe3JldHVybiB0aGlzLl9yZXNpemVk''@;'; put 'put ''Qnl9Z2V0IG1pbkNvbHVtbldpZHRoKCl7cmV0dXJuIHRoaXMuZG9tQWRhcHRlci5taW5XaWR0aCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpfHw5Nn1nZXQgbWF4UmVzaXplUmFuZ2UoKXtyZXR1cm4gdGhpcy53aWR0aEJlZm9yZVJlc2l6ZS10aGlzLm1pbkNvbHVtbldpZHRofXN0YXJ0UmVzaXpl''@;'; put 'put ''KCl7dGhpcy5fcmVzaXplZEJ5PTAsdGhpcy5pc1dpdGhpbk1heFJlc2l6ZVJhbmdlPSEwLHRoaXMud2lkdGhCZWZvcmVSZXNpemU9dGhpcy5kb21BZGFwdGVyLmNsaWVudFJlY3QodGhpcy5lbC5uYXRpdmVFbGVtZW50KS53aWR0aH1lbmRSZXNpemUoKXt0aGlzLm9yZ2FuaXplci5yZXNpemUo''@;'; put 'put ''KX1nZXQgd2lkdGhBZnRlclJlc2l6ZSgpe3JldHVybiB0aGlzLndpZHRoQmVmb3JlUmVzaXplK3RoaXMuX3Jlc2l6ZWRCeX1jYWxjdWxhdGVSZXNpemUoaCl7aDwtdGhpcy5tYXhSZXNpemVSYW5nZT8odGhpcy5fcmVzaXplZEJ5PS10aGlzLm1heFJlc2l6ZVJhbmdlLHRoaXMuaXNXaXRoaW5N''@;'; put 'put ''YXhSZXNpemVSYW5nZT0hMSk6KHRoaXMuX3Jlc2l6ZWRCeT1oLHRoaXMuaXNXaXRoaW5NYXhSZXNpemVSYW5nZT0hMCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKGJvKSxDaShmNCksQ2kocFMpKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpk''@;'; put 'put ''LGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxWZmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLnBsYXRmb3JtSWQ9aH1nZXQgdGFibGVSZWYoKXtyZXR1cm4gdGhpcy5fdGFibGVSZWZ9c2V0IHRhYmxlUmVmKGgpe3RoaXMuX3RhYmxlUmVmPWh9c2V0IHRhYmxlKGgpe1Ns''@;'; put 'put ''KHRoaXMucGxhdGZvcm1JZCkmJmgubmF0aXZlRWxlbWVudCYmKHRoaXMudGFibGVSZWY9aC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIi5kYXRhZ3JpZC10YWJsZSIpKX1nZXRDb2x1bW5EcmFnSGVpZ2h0KCl7cmV0dXJuIHRoaXMudGFibGVSZWY/YCR7dGhpcy50YWJsZVJlZi5jbGll''@;'; put 'put ''bnRIZWlnaHR9cHhgOm51bGx9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKEwyKSl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksb3llPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHks''@;'; put 'put ''QyxJLFosdWUpe3RoaXMuY29sdW1uUmVzaXplclNlcnZpY2U9aCx0aGlzLnJlbmRlcmVyPXYsdGhpcy5uZ1pvbmU9eSx0aGlzLnRhYmxlU2l6ZVNlcnZpY2U9Qyx0aGlzLmNvbW1vblN0cmluZz1JLHRoaXMuZG9jdW1lbnQ9Wix0aGlzLmNvbHVtblNlcGFyYXRvcklkPXVlLHRoaXMucmVzaXpl''@;'; put 'put ''U3RhcnRlZE9uS2V5RG93bj0hMSx0aGlzLnVubGlzdGVuZXJzPVtdfWdldCByZXNpemVUcmFja2VyRWwoKXtyZXR1cm4gdGhpcy5yZXNpemVUcmFja2VyUmVmLm5hdGl2ZUVsZW1lbnR9Z2V0IGNvbHVtbkhhbmRsZUVsKCl7cmV0dXJuIHRoaXMuY29sdW1uSGFuZGxlUmVmLm5hdGl2ZUVsZW1l''@;'; put 'put ''bnR9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLnVubGlzdGVuZXJzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5jb2x1bW5IYW5kbGVFbCwia2V5ZG93biIsaD0+e3RoaXMuc2hvd1RyYWNrZXJPbkZpcnN0S2V5RG93biho''@;'; put 'put ''KSx0aGlzLm1vdmVUcmFja2VyT25LZXlEb3duKGgpfSkpLHRoaXMudW5saXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmNvbHVtbkhhbmRsZUVsLCJrZXl1cCIsaD0+e3RoaXMuaGlkZVRyYWNrZXJPbktleVVwKGgpfSkpfSl9Z2V0IGRlc2NyaXB0aW9uSWQoKXtyZXR1''@;'; put 'put ''cm5gJHt0aGlzLmNvbHVtblNlcGFyYXRvcklkfS1hcmlhLWRlc2NyaWJlZGJ5YH1zaG93VHJhY2tlcigpe3RoaXMuY29sdW1uUmVzaXplclNlcnZpY2Uuc3RhcnRSZXNpemUoKTtjb25zdCBoPXRoaXMudGFibGVTaXplU2VydmljZS5nZXRDb2x1bW5EcmFnSGVpZ2h0KCk7dGhpcy5yZW5kZXJl''@;'; put 'put ''ci5zZXRTdHlsZSh0aGlzLnJlc2l6ZVRyYWNrZXJFbCwiaGVpZ2h0IixoKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucmVzaXplVHJhY2tlckVsLCJkaXNwbGF5IiwiYmxvY2siKX1tb3ZlVHJhY2tlcihoKXt0aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlLmNhbGN1bGF0ZVJlc2l6ZSho''@;'; put 'put ''KSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucmVzaXplVHJhY2tlckVsLCJ0cmFuc2Zvcm0iLGB0cmFuc2xhdGVYKCR7dGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS5yZXNpemVkQnl9cHgpYCksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmRvY3VtZW50LmJvZHksImN1cnNvciIs''@;'; put 'put ''ImNvbC1yZXNpemUiKSx0aGlzLnJlZEZsYWdUcmFja2VyKCl9aGlkZVRyYWNrZXIoKXt0aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlLmVuZFJlc2l6ZSgpLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yZXNpemVUcmFja2VyRWwsImRpc3BsYXkiLCJub25lIiksdGhpcy5yZW5kZXJlci5z''@;'; put 'put ''ZXRTdHlsZSh0aGlzLnJlc2l6ZVRyYWNrZXJFbCwidHJhbnNmb3JtIiwidHJhbnNsYXRlWCgwcHgpIiksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmRvY3VtZW50LmJvZHksImN1cnNvciIsImF1dG8iKX1zaG93VHJhY2tlck9uRmlyc3RLZXlEb3duKGgpeyF0aGlzLnJlc2l6ZVN0YXJ0''@;'; put 'put ''ZWRPbktleURvd24mJih0aGlzLmlzQXJyb3dMZWZ0S2V5RXZlbnQoaCl8fHRoaXMuaXNBcnJvd1JpZ2h0S2V5RXZlbnQoaCkpJiYodGhpcy5yZXNpemVTdGFydGVkT25LZXlEb3duPSEwLHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5yZXNpemVUcmFja2VyRWwsIm9uLWFycm93LWtleS1y''@;'; put 'put ''ZXNpemUiKSx0aGlzLnNob3dUcmFja2VyKCkpfW1vdmVUcmFja2VyT25LZXlEb3duKGgpe3RoaXMuaXNBcnJvd0xlZnRLZXlFdmVudChoKT90aGlzLm1vdmVUcmFja2VyKHRoaXMuY29sdW1uUmVzaXplclNlcnZpY2UucmVzaXplZEJ5LTEyKTp0aGlzLmlzQXJyb3dSaWdodEtleUV2ZW50KGgp''@;'; put 'put ''JiZ0aGlzLm1vdmVUcmFja2VyKHRoaXMuY29sdW1uUmVzaXplclNlcnZpY2UucmVzaXplZEJ5KzEyKX1oaWRlVHJhY2tlck9uS2V5VXAoaCl7dGhpcy5yZXNpemVTdGFydGVkT25LZXlEb3duJiYodGhpcy5pc0Fycm93TGVmdEtleUV2ZW50KGgpfHx0aGlzLmlzQXJyb3dSaWdodEtleUV2ZW50''@;'; put 'put ''KGgpKSYmKHRoaXMucmVzaXplU3RhcnRlZE9uS2V5RG93bj0hMSx0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMucmVzaXplVHJhY2tlckVsLCJvbi1hcnJvdy1rZXktcmVzaXplIiksdGhpcy5oaWRlVHJhY2tlcigpLHRoaXMuY29sdW1uSGFuZGxlRWwuZm9jdXMoKSl9cmVkRmxhZ1Ry''@;'; put 'put ''YWNrZXIoKXt0aGlzLmlzV2l0aGluTWF4UmVzaXplUmFuZ2UhPT10aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlLmlzV2l0aGluTWF4UmVzaXplUmFuZ2UmJih0aGlzLmlzV2l0aGluTWF4UmVzaXplUmFuZ2U9dGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS5pc1dpdGhpbk1heFJlc2l6ZVJhbmdl''@;'; put 'put ''LHRoaXMuaXNXaXRoaW5NYXhSZXNpemVSYW5nZT90aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMucmVzaXplVHJhY2tlckVsLCJleGNlZWRlZC1tYXgiKTp0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMucmVzaXplVHJhY2tlckVsLCJleGNlZWRlZC1tYXgiKSl9aXNBcnJvd0xlZnRL''@;'; put 'put ''ZXlFdmVudChoKXtyZXR1cm4gaC5rZXk9PT1NMC5BcnJvd0xlZnR8fGgua2V5PT09ZmMuQXJyb3dMZWZ0fWlzQXJyb3dSaWdodEtleUV2ZW50KGgpe3JldHVybiBoLmtleT09PU0wLkFycm93UmlnaHR8fGgua2V5PT09ZmMuQXJyb3dSaWdodH1uZ09uRGVzdHJveSgpe3RoaXMudW5saXN0ZW5l''@;'; put 'put ''cnMuZm9yRWFjaChoPT5oKCkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChOZmUpLEt0KEdhKSxLdChfbCksS3QoVmZlKSxLdChucyksS3QoZ3MpLEt0KHkyKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1kZy1j''@;'; put 'put ''b2x1bW4tc2VwYXJhdG9yIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYmKHZvKFJmLDUpLHZvKGUzLDUpKSwyJmgpe2xldCB5O0hpKHk9JGkoKSkmJih2LnJlc2l6ZVRyYWNrZXJSZWY9eS5maXJzdCksSGkoeT0kaSgpKSYmKHYuY29sdW1uSGFuZGxlUmVmPXkuZmlyc3QpfX0s''@;'; put 'put ''aG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkZpKCJkYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yIiwhMCl9LGZlYXR1cmVzOltobyhbT2NdKV0sZGVjbHM6Nix2YXJzOjUsY29uc3RzOltbInR5cGUiLCJidXR0b24iLCJjbHJEcmFnZ2FibGUiLCIiLDEsImRhdGFn''@;'; put 'put ''cmlkLWNvbHVtbi1oYW5kbGUiLDMsImNsckdyb3VwIiwiY2xyRHJhZ1N0YXJ0IiwiY2xyRHJhZ01vdmUiLCJjbHJEcmFnRW5kIl0sWyJjb2x1bW5IYW5kbGUiLCIiXSxbMSwiY2xyLXNyLW9ubHkiXSxbMSwiZGF0YWdyaWQtY29sdW1uLXJlc2l6ZS10cmFja2VyIl0sWyJyZXNpemVUcmFja2Vy''@;'; put 'put ''IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYobnQoMCwiYnV0dG9uIiwwLDEpLEduKCJjbHJEcmFnU3RhcnQiLGZ1bmN0aW9uKCl7cmV0dXJuIHYuc2hvd1RyYWNrZXIoKX0pKCJjbHJEcmFnTW92ZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYubW92ZVRyYWNrZXIoQy5kcmFnUG9z''@;'; put 'put ''aXRpb24ubW92ZVgpfSkoImNsckRyYWdFbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIHYuaGlkZVRyYWNrZXIoKX0pLG90KCksbnQoMiwic3BhbiIsMiksWXQoMyksb3QoKSxDcig0LCJkaXYiLDMsNCkpLDImaCYmKFR0KCJjbHJHcm91cCIsdi5jb2x1bW5TZXBhcmF0b3JJZCksR2koImFyaWEtbGFi''@;'; put 'put ''ZWwiLHYuY29tbW9uU3RyaW5nLmtleXMuY29sdW1uU2VwYXJhdG9yQXJpYUxhYmVsKSgiYXJpYS1kZXNjcmliZWRieSIsdi5kZXNjcmlwdGlvbklkKSx1dCgyKSxHaSgiaWQiLHYuZGVzY3JpcHRpb25JZCksdXQoMSksSmkoIiAiLHYuY29tbW9uU3RyaW5nLmtleXMuY29sdW1uU2VwYXJhdG9y''@;'; put 'put ''RGVzY3JpcHRpb24sIiAiKSl9LGRlcGVuZGVuY2llczpbZXllXSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxnUz0oKCk9PntjbGFzcyBkIGV4dGVuZHMgcHF7Y29uc3RydWN0b3IoaCx2LHksQyxJLFope3N1cGVyKHYpLHRoaXMuX3NvcnQ9aCx0aGlzLnZjcj15LHRoaXMuZGV0YWlsU2Vydmlj''@;'; put 'put ''ZT1DLHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWY9SSx0aGlzLmNvbW1vblN0cmluZ3M9Wix0aGlzLnNob3dTZXBhcmF0b3I9ITAsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuX2NvbFR5cGU9InN0cmluZyIsdGhpcy5fc29ydGVkPSExLHRoaXMuc29ydGVkQ2hhbmdlPW5ldyBhcix0aGlzLl9z''@;'; put 'put ''b3J0T3JkZXI9ZGguVU5TT1JURUQsdGhpcy5zb3J0T3JkZXJDaGFuZ2U9bmV3IGFyLHRoaXMuY3VzdG9tRmlsdGVyPSExLHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2U9bmV3IGFyLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGlzdGVuRm9yU29ydGluZ0NoYW5nZXMoKSksdGhpcy5zdWJz''@;'; put 'put ''Y3JpcHRpb25zLnB1c2godGhpcy5saXN0ZW5Gb3JEZXRhaWxQYW5lQ2hhbmdlcygpKX1uZ09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX1saXN0ZW5Gb3JEZXRhaWxQYW5lQ2hhbmdlcygpe3JldHVy''@;'; put 'put ''biB0aGlzLmRldGFpbFNlcnZpY2Uuc3RhdGVDaGFuZ2Uuc3Vic2NyaWJlKGg9Pnt0aGlzLnNob3dTZXBhcmF0b3IhPT0haCYmKHRoaXMuc2hvd1NlcGFyYXRvcj0haCx0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX0pfWxpc3RlbkZvclNvcnRpbmdDaGFuZ2VzKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuX3NvcnQuY2hhbmdlLnN1YnNjcmliZShoPT57dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLnNvcnRPcmRlciE9PWRoLlVOU09SVEVEJiZoLmNvbXBhcmF0b3IhPT10aGlzLl9zb3J0QnkmJih0aGlzLl9zb3J0T3JkZXI9ZGguVU5TT1JURUQsdGhp''@;'; put 'put ''cy5zb3J0T3JkZXJDaGFuZ2UuZW1pdCh0aGlzLl9zb3J0T3JkZXIpLHRoaXMuc29ydEljb249bnVsbCx0aGlzLl9zb3J0RGlyZWN0aW9uPW51bGwpLHRoaXMuc29ydGVkJiZoLmNvbXBhcmF0b3IhPT10aGlzLl9zb3J0QnkmJih0aGlzLl9zb3J0ZWQ9ITEsdGhpcy5zb3J0ZWRDaGFuZ2UuZW1p''@;'; put 'put ''dCghMSkpfSl9Z2V0IGNvbFR5cGUoKXtyZXR1cm4gdGhpcy5fY29sVHlwZX1zZXQgY29sVHlwZShoKXt0aGlzLl9jb2xUeXBlPWh9Z2V0IGZpZWxkKCl7cmV0dXJuIHRoaXMuX2ZpZWxkfXNldCBmaWVsZChoKXsic3RyaW5nIj09dHlwZW9mIGgmJih0aGlzLl9maWVsZD1oLHRoaXMuX3NvcnRC''@;'; put 'put ''eXx8KHRoaXMuX3NvcnRCeT1uZXcgdnEoaCkpKX1zZXR1cERlZmF1bHRGaWx0ZXIoaCx2KXsibnVtYmVyIj09PXY/dGhpcy5zZXRGaWx0ZXIobmV3IGhTKG5ldyBncShoKSkpOiJzdHJpbmciPT09diYmdGhpcy5zZXRGaWx0ZXIobmV3IGRTKG5ldyBtcShoKSkpLHRoaXMuZmlsdGVyJiZ0aGlz''@;'; put 'put ''LmluaXRGaWx0ZXJWYWx1ZSYmKHRoaXMudXBkYXRlRmlsdGVyVmFsdWU9dGhpcy5pbml0RmlsdGVyVmFsdWUsZGVsZXRlIHRoaXMuaW5pdEZpbHRlclZhbHVlKX1uZ09uQ2hhbmdlcyhoKXtoLmNvbFR5cGUmJmguY29sVHlwZS5jdXJyZW50VmFsdWUmJmguY29sVHlwZS5jdXJyZW50VmFsdWUh''@;'; put 'put ''PT1oLmNvbFR5cGUucHJldmlvdXNWYWx1ZSYmIXRoaXMuY3VzdG9tRmlsdGVyJiYhdGhpcy5maWx0ZXImJnRoaXMuY29sVHlwZSYmdGhpcy5maWVsZCYmdGhpcy5zZXR1cERlZmF1bHRGaWx0ZXIodGhpcy5maWVsZCx0aGlzLmNvbFR5cGUpLGguZmllbGQmJmguZmllbGQuY3VycmVudFZhbHVl''@;'; put 'put ''JiZoLmZpZWxkLmN1cnJlbnRWYWx1ZSE9PWguZmllbGQucHJldmlvdXNWYWx1ZSYmIXRoaXMuY3VzdG9tRmlsdGVyJiZ0aGlzLmNvbFR5cGUmJnRoaXMuc2V0dXBEZWZhdWx0RmlsdGVyKHRoaXMuZmllbGQsdGhpcy5jb2xUeXBlKX1nZXQgc29ydEJ5KCl7cmV0dXJuIHRoaXMuX3NvcnRCeX1z''@;'; put 'put ''ZXQgc29ydEJ5KGgpeyJzdHJpbmciPT10eXBlb2YgaD90aGlzLl9zb3J0Qnk9bmV3IHZxKGgpOmg/dGhpcy5fc29ydEJ5PWg6dGhpcy5maWVsZD90aGlzLl9zb3J0Qnk9bmV3IHZxKHRoaXMuZmllbGQpOmRlbGV0ZSB0aGlzLl9zb3J0Qnl9Z2V0IHNvcnRhYmxlKCl7cmV0dXJuISF0aGlzLl9z''@;'; put 'put ''b3J0Qnl9Z2V0IHNvcnRlZCgpe3JldHVybiB0aGlzLl9zb3J0ZWR9c2V0IHNvcnRlZChoKXshaCYmdGhpcy5zb3J0ZWQ/KHRoaXMuX3NvcnRlZD0hMSx0aGlzLl9zb3J0LmNsZWFyKCkpOmgmJiF0aGlzLnNvcnRlZCYmdGhpcy5zb3J0KCl9Z2V0IHNvcnRPcmRlcigpe3JldHVybiB0aGlzLl9z''@;'; put 'put ''b3J0T3JkZXJ9c2V0IHNvcnRPcmRlcihoKXtpZih2b2lkIDAhPT1oJiZ0aGlzLl9zb3J0T3JkZXIhPT1oKXN3aXRjaChoKXtkZWZhdWx0OmNhc2UgZGguVU5TT1JURUQ6dGhpcy5fc29ydC5jbGVhcigpO2JyZWFrO2Nhc2UgZGguQVNDOnRoaXMuc29ydCghMSk7YnJlYWs7Y2FzZSBkaC5ERVND''@;'; put 'put ''OnRoaXMuc29ydCghMCl9fWdldCBhcmlhU29ydCgpe3N3aXRjaCh0aGlzLl9zb3J0T3JkZXIpe2RlZmF1bHQ6Y2FzZSBkaC5VTlNPUlRFRDpyZXR1cm4ibm9uZSI7Y2FzZSBkaC5BU0M6cmV0dXJuImFzY2VuZGluZyI7Y2FzZSBkaC5ERVNDOnJldHVybiJkZXNjZW5kaW5nIn19Z2V0IHNvcnRE''@;'; put 'put ''aXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5fc29ydERpcmVjdGlvbn1zb3J0KGgpeyF0aGlzLnNvcnRhYmxlfHwodGhpcy5fc29ydC50b2dnbGUodGhpcy5fc29ydEJ5LGgpLHRoaXMuX3NvcnRPcmRlcj10aGlzLl9zb3J0LnJldmVyc2U/ZGguREVTQzpkaC5BU0MsdGhpcy5fc29ydERpcmVjdGlv''@;'; put 'put ''bj10aGlzLl9zb3J0T3JkZXI9PT1kaC5ERVNDPyJkb3duIjoidXAiLHRoaXMuc29ydEljb249dGhpcy5fc29ydE9yZGVyPT09ZGguREVTQz8iYXJyb3cgZG93biI6ImFycm93Iix0aGlzLnNvcnRPcmRlckNoYW5nZS5lbWl0KHRoaXMuX3NvcnRPcmRlciksdGhpcy5fc29ydGVkPSEwLHRoaXMu''@;'; put 'put ''c29ydGVkQ2hhbmdlLmVtaXQoITApKX1zZXQgcHJvamVjdGVkRmlsdGVyKGgpe2gmJih0aGlzLmRlbGV0ZUZpbHRlcigpLHRoaXMuY3VzdG9tRmlsdGVyPSEwKX1nZXQgZmlsdGVyU3RyaW5nUGxhY2Vob2xkZXJWYWx1ZSgpe3JldHVybiB0aGlzLmZpbHRlclN0cmluZ1BsYWNlaG9sZGVyfHx0''@;'; put 'put ''aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5maWx0ZXJJdGVtc31nZXQgZmlsdGVyTnVtYmVyTWF4UGxhY2Vob2xkZXJWYWx1ZSgpe3JldHVybiB0aGlzLmZpbHRlck51bWJlck1heFBsYWNlaG9sZGVyfHx0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5tYXhWYWx1ZX1nZXQgZmlsdGVyTnVtYmVyTWlu''@;'; put 'put ''UGxhY2Vob2xkZXJWYWx1ZSgpe3JldHVybiB0aGlzLmZpbHRlck51bWJlck1pblBsYWNlaG9sZGVyfHx0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5taW5WYWx1ZX1zZXQgdXBkYXRlRmlsdGVyVmFsdWUoaCl7dGhpcy5maWx0ZXI/dGhpcy5maWx0ZXIgaW5zdGFuY2VvZiBkUz8oKCFofHwic3Ry''@;'; put 'put ''aW5nIiE9dHlwZW9mIGgpJiYoaD0iIiksaCE9PXRoaXMuZmlsdGVyLnZhbHVlJiYodGhpcy5maWx0ZXIudmFsdWU9aCkpOnRoaXMuZmlsdGVyIGluc3RhbmNlb2YgaFMmJigoIWh8fCEoaCBpbnN0YW5jZW9mIEFycmF5KSkmJihoPVtudWxsLG51bGxdKSwyPT09aC5sZW5ndGgmJihoWzBdIT09''@;'; put 'put ''dGhpcy5maWx0ZXIudmFsdWVbMF18fGhbMV0hPT10aGlzLmZpbHRlci52YWx1ZVsxXSkmJih0aGlzLmZpbHRlci52YWx1ZT1oKSk6dGhpcy5pbml0RmlsdGVyVmFsdWU9aH1nZXQgZmlsdGVyVmFsdWUoKXtyZXR1cm4gdGhpcy5maWx0ZXIgaW5zdGFuY2VvZiBkU3x8dGhpcy5maWx0ZXIgaW5z''@;'; put 'put ''dGFuY2VvZiBoUz90aGlzLmZpbHRlci52YWx1ZTpudWxsfXNldCBmaWx0ZXJWYWx1ZShoKXsodGhpcy5maWx0ZXIgaW5zdGFuY2VvZiBkU3x8dGhpcy5maWx0ZXIgaW5zdGFuY2VvZiBoUykmJih0aGlzLnVwZGF0ZUZpbHRlclZhbHVlPWgsdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KHRo''@;'; put 'put ''aXMuZmlsdGVyLnZhbHVlKSl9bmdPbkluaXQoKXt0aGlzLndyYXBwZWRJbmplY3Rvcj1uZXcgYnQoSGZlLHRoaXMudmNyKX1nZXQgX3ZpZXcoKXtyZXR1cm4gdGhpcy53cmFwcGVkSW5qZWN0b3IuZ2V0KEhmZSx0aGlzLnZjcikuY29sdW1uVmlld319cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0''@;'; put 'put ''aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoQXEpLEt0KHZ2KSxLdChVaSksS3QoQTgpLEt0KGQxKSxLdChucykpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGctY29sdW1uIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtpZigxJmgmJnhvKHks''@;'; put 'put ''aHEsNSksMiZoKXtsZXQgQztIaShDPSRpKCkpJiYodi5wcm9qZWN0ZWRGaWx0ZXI9Qy5maXJzdCl9fSxob3N0QXR0cnM6WyJyb2xlIiwiY29sdW1uaGVhZGVyIl0saG9zdFZhcnM6Myxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJihHaSgiYXJpYS1zb3J0Iix2LmFyaWFTb3J0KSxG''@;'; put 'put ''aSgiZGF0YWdyaWQtY29sdW1uIiwhMCkpfSxpbnB1dHM6e2NvbFR5cGU6WyJjbHJEZ0NvbFR5cGUiLCJjb2xUeXBlIl0sZmllbGQ6WyJjbHJEZ0ZpZWxkIiwiZmllbGQiXSxzb3J0Qnk6WyJjbHJEZ1NvcnRCeSIsInNvcnRCeSJdLHNvcnRlZDpbImNsckRnU29ydGVkIiwic29ydGVkIl0sc29y''@;'; put 'put ''dE9yZGVyOlsiY2xyRGdTb3J0T3JkZXIiLCJzb3J0T3JkZXIiXSxmaWx0ZXJTdHJpbmdQbGFjZWhvbGRlcjpbImNsckZpbHRlclN0cmluZ1BsYWNlaG9sZGVyIiwiZmlsdGVyU3RyaW5nUGxhY2Vob2xkZXIiXSxmaWx0ZXJOdW1iZXJNYXhQbGFjZWhvbGRlcjpbImNsckZpbHRlck51bWJlck1h''@;'; put 'put ''eFBsYWNlaG9sZGVyIiwiZmlsdGVyTnVtYmVyTWF4UGxhY2Vob2xkZXIiXSxmaWx0ZXJOdW1iZXJNaW5QbGFjZWhvbGRlcjpbImNsckZpbHRlck51bWJlck1pblBsYWNlaG9sZGVyIiwiZmlsdGVyTnVtYmVyTWluUGxhY2Vob2xkZXIiXSx1cGRhdGVGaWx0ZXJWYWx1ZTpbImNsckZpbHRlclZh''@;'; put 'put ''bHVlIiwidXBkYXRlRmlsdGVyVmFsdWUiXX0sb3V0cHV0czp7c29ydGVkQ2hhbmdlOiJjbHJEZ1NvcnRlZENoYW5nZSIsc29ydE9yZGVyQ2hhbmdlOiJjbHJEZ1NvcnRPcmRlckNoYW5nZSIsZmlsdGVyVmFsdWVDaGFuZ2U6ImNsckZpbHRlclZhbHVlQ2hhbmdlIn0sZmVhdHVyZXM6W2hvKFtH''@;'; put 'put ''cyxoOCx6c10pLERvLEQyXSxuZ0NvbnRlbnRTZWxlY3RvcnM6dyQsZGVjbHM6OSx2YXJzOjUsY29uc3RzOltbMSwiZGF0YWdyaWQtY29sdW1uLWZsZXgiXSxbImNsYXNzIiwiZGF0YWdyaWQtY29sdW1uLXRpdGxlIiwidHlwZSIsImJ1dHRvbiIsMywiY2xpY2siLDQsIm5nSWYiXSxbMywiY2xy''@;'; put 'put ''RmlsdGVyUGxhY2Vob2xkZXIiLCJjbHJEZ1N0cmluZ0ZpbHRlciIsImNsckZpbHRlclZhbHVlIiwiY2xyRmlsdGVyVmFsdWVDaGFuZ2UiLDQsIm5nSWYiXSxbMywiY2xyRmlsdGVyTWF4UGxhY2Vob2xkZXIiLCJjbHJGaWx0ZXJNaW5QbGFjZWhvbGRlciIsImNsckRnTnVtZXJpY0ZpbHRlciIs''@;'; put 'put ''ImNsckZpbHRlclZhbHVlIiwiY2xyRmlsdGVyVmFsdWVDaGFuZ2UiLDQsIm5nSWYiXSxbImNvbHVtblRpdGxlIiwiIl0sWyJjbGFzcyIsImRhdGFncmlkLWNvbHVtbi10aXRsZSIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJkYXRhZ3JpZC1jb2x1bW4tdGl0bGUi''@;'; put 'put ''LDMsImNsaWNrIl0sWzQsIm5nVGVtcGxhdGVPdXRsZXQiXSxbInNoYXBlIiwiYXJyb3ciLCJhcmlhLWhpZGRlbiIsInRydWUiLCJjbGFzcyIsInNvcnQtaWNvbiIsNCwibmdJZiJdLFsic2hhcGUiLCJhcnJvdyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwic29ydC1pY29uIl0sWzMsImNsckZp''@;'; put 'put ''bHRlclBsYWNlaG9sZGVyIiwiY2xyRGdTdHJpbmdGaWx0ZXIiLCJjbHJGaWx0ZXJWYWx1ZSIsImNsckZpbHRlclZhbHVlQ2hhbmdlIl0sWzMsImNsckZpbHRlck1heFBsYWNlaG9sZGVyIiwiY2xyRmlsdGVyTWluUGxhY2Vob2xkZXIiLCJjbHJEZ051bWVyaWNGaWx0ZXIiLCJjbHJGaWx0ZXJW''@;'; put 'put ''YWx1ZSIsImNsckZpbHRlclZhbHVlQ2hhbmdlIl0sWzEsImRhdGFncmlkLWNvbHVtbi10aXRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKFRqKSxudCgwLCJkaXYiLDApLHJuKDEsQSQsMywyLCJidXR0b24iLDEpLE5pKDIpLHJuKDMsY2NlLDEsMywiY2xyLWRnLXN0cmlu''@;'; put 'put ''Zy1maWx0ZXIiLDIpLHJuKDQsZmNlLDEsNCwiY2xyLWRnLW51bWVyaWMtZmlsdGVyIiwzKSxybig1LHF5LDEsMCwibmctdGVtcGxhdGUiLG51bGwsNCxacikscm4oNyxoY2UsMiwxLCJzcGFuIiw1KSxybig4LHkkLDEsMCwiY2xyLWRnLWNvbHVtbi1zZXBhcmF0b3IiLDYpLG90KCkpLDImaCYm''@;'; put 'put ''KHV0KDEpLFR0KCJuZ0lmIix2LnNvcnRhYmxlKSx1dCgyKSxUdCgibmdJZiIsdi5maWVsZCYmIXYuY3VzdG9tRmlsdGVyJiYic3RyaW5nIj09di5jb2xUeXBlKSx1dCgxKSxUdCgibmdJZiIsdi5maWVsZCYmIXYuY3VzdG9tRmlsdGVyJiYibnVtYmVyIj09di5jb2xUeXBlKSx1dCgzKSxUdCgi''@;'; put 'put ''bmdJZiIsIXYuc29ydGFibGUpLHV0KDEpLFR0KCJuZ0lmIix2LnNob3dTZXBhcmF0b3IpKX0sZGVwZW5kZW5jaWVzOltGZmUscnllLG95ZSxObyxYZCxab10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksZH0pKCksZ3c9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYs''@;'; put 'put ''eSl7dGhpcy5fZmlsdGVycz1oLHRoaXMuX3NvcnQ9dix0aGlzLl9wYWdlPXksdGhpcy5sb2FkaW5nPSExLHRoaXMudHJhY2tCeT0oQyxJKT0+SSx0aGlzLl9zbWFydD0hMSx0aGlzLl9kaXNwbGF5ZWQ9W10sdGhpcy5fY2hhbmdlPW5ldyAkZSx0aGlzLl9hbGxDaGFuZ2VzPW5ldyAkZX1kZXN0''@;'; put 'put ''cm95KCl7dGhpcy5fZmlsdGVyc1N1YiYmdGhpcy5fZmlsdGVyc1N1Yi51bnN1YnNjcmliZSgpLHRoaXMuX3NvcnRTdWImJnRoaXMuX3NvcnRTdWIudW5zdWJzY3JpYmUoKSx0aGlzLl9wYWdlU3ViJiZ0aGlzLl9wYWdlU3ViLnVuc3Vic2NyaWJlKCl9Z2V0IHNtYXJ0KCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''X3NtYXJ0fXNtYXJ0ZW5VcCgpe3RoaXMuX3NtYXJ0PSEwLHRoaXMuX2ZpbHRlcnNTdWI9dGhpcy5fZmlsdGVycy5jaGFuZ2Uuc3Vic2NyaWJlKCgpPT50aGlzLl9maWx0ZXJJdGVtcygpKSx0aGlzLl9zb3J0U3ViPXRoaXMuX3NvcnQuY2hhbmdlLnN1YnNjcmliZSgoKT0+e3RoaXMuX3NvcnQu''@;'; put 'put ''Y29tcGFyYXRvcj90aGlzLl9zb3J0SXRlbXMoKTp0aGlzLl9maWx0ZXJJdGVtcygpfSksdGhpcy5fcGFnZVN1Yj10aGlzLl9wYWdlLmNoYW5nZS5zdWJzY3JpYmUoKCk9PnRoaXMuX2NoYW5nZVBhZ2UoKSl9Z2V0IGFsbCgpe3JldHVybiB0aGlzLl9hbGx9c2V0IGFsbChoKXt0aGlzLl9hbGw9''@;'; put 'put ''aCx0aGlzLmVtaXRBbGxDaGFuZ2VzKGgpLHRoaXMuc21hcnQ/dGhpcy5fZmlsdGVySXRlbXMoKToodGhpcy5fZGlzcGxheWVkPWgsdGhpcy5lbWl0Q2hhbmdlKCkpfXJlZnJlc2goKXt0aGlzLnNtYXJ0JiZ0aGlzLl9maWx0ZXJJdGVtcygpfWdldCBkaXNwbGF5ZWQoKXtyZXR1cm4gdGhpcy5f''@;'; put 'put ''ZGlzcGxheWVkfWVtaXRDaGFuZ2UoKXt0aGlzLl9jaGFuZ2UubmV4dCh0aGlzLmRpc3BsYXllZCl9Z2V0IGNoYW5nZSgpe3JldHVybiB0aGlzLl9jaGFuZ2UuYXNPYnNlcnZhYmxlKCl9ZW1pdEFsbENoYW5nZXMoaCl7dGhpcy5fYWxsQ2hhbmdlcy5uZXh0KGgpfWdldCBhbGxDaGFuZ2VzKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX2FsbENoYW5nZXMuYXNPYnNlcnZhYmxlKCl9Z2V0IHVuaW5pdGlhbGl6ZWQoKXtyZXR1cm4hdGhpcy5fYWxsfV9maWx0ZXJJdGVtcygpe3RoaXMudW5pbml0aWFsaXplZHx8KHRoaXMuX2ZpbHRlcmVkPXRoaXMuX2ZpbHRlcnMuaGFzQWN0aXZlRmlsdGVycygpP3RoaXMu''@;'; put 'put ''X2FsbC5maWx0ZXIoaD0+dGhpcy5fZmlsdGVycy5hY2NlcHRzKGgpKTp0aGlzLl9hbGwuc2xpY2UoKSx0aGlzLl9wYWdlLnRvdGFsSXRlbXM9dGhpcy5fZmlsdGVyZWQubGVuZ3RoLHRoaXMuX3NvcnRJdGVtcygpKX1fc29ydEl0ZW1zKCl7dGhpcy51bmluaXRpYWxpemVkfHwodGhpcy5fc29y''@;'; put 'put ''dC5jb21wYXJhdG9yJiZ0aGlzLl9maWx0ZXJlZC5zb3J0KChoLHYpPT50aGlzLl9zb3J0LmNvbXBhcmUoaCx2KSksdGhpcy5fY2hhbmdlUGFnZSgpKX1fY2hhbmdlUGFnZSgpe3RoaXMudW5pbml0aWFsaXplZHx8dGhpcy5fcGFnZS5hY3RpdmF0ZWQmJjA9PT10aGlzLl9wYWdlLnNpemV8fCh0''@;'; put 'put ''aGlzLl9kaXNwbGF5ZWQ9dGhpcy5fcGFnZS5zaXplPjA/dGhpcy5fZmlsdGVyZWQuc2xpY2UodGhpcy5fcGFnZS5maXJzdEl0ZW0sdGhpcy5fcGFnZS5sYXN0SXRlbSsxKTp0aGlzLl9maWx0ZXJlZCx0aGlzLmVtaXRDaGFuZ2UoKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXty''@;'; put 'put ''ZXR1cm4gbmV3KGh8fGQpKENpKHZ2KSxDaShBcSksQ2koZHcpKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSx6TD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMpe3RoaXMudGVtcGxhdGU9aCx0aGlzLmRpZmZlcnM9dix0aGlz''@;'; put 'put ''Lml0ZW1zPXksdGhpcy52Y3I9Qyx0aGlzLmRpZmZlcj1udWxsLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx5LnNtYXJ0ZW5VcCgpLHRoaXMuaXRlcmFibGVQcm94eT1uZXcgeHModGhpcy52Y3IsdGhpcy50ZW1wbGF0ZSx0aGlzLmRpZmZlcnMpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHkuY2hh''@;'; put 'put ''bmdlLnN1YnNjcmliZShJPT57dGhpcy5pdGVyYWJsZVByb3h5Lm5nRm9yT2Y9SSx0aGlzLml0ZXJhYmxlUHJveHkubmdEb0NoZWNrKCl9KSl9c2V0IHJhd0l0ZW1zKGgpe3RoaXMuX3Jhd0l0ZW1zPWh8fFtdfXNldCB0cmFja0J5KGgpe3RoaXMuaXRlbXMudHJhY2tCeT1oLHRoaXMuaXRlcmFi''@;'; put 'put ''bGVQcm94eS5uZ0ZvclRyYWNrQnk9aH1uZ0RvQ2hlY2soKXt0aGlzLmRpZmZlcnx8KHRoaXMuZGlmZmVyPXRoaXMuZGlmZmVycy5maW5kKHRoaXMuX3Jhd0l0ZW1zKS5jcmVhdGUodGhpcy5pdGVyYWJsZVByb3h5Lm5nRm9yVHJhY2tCeSkpLHRoaXMuZGlmZmVyJiZ0aGlzLmRpZmZlci5kaWZm''@;'; put 'put ''KHRoaXMuX3Jhd0l0ZW1zKSYmKHRoaXMuaXRlbXMuYWxsPXRoaXMuX3Jhd0l0ZW1zKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHFy''@;'; put 'put ''KSxLdChQQSksS3QoZ3cpLEt0KFVpKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNsckRnSXRlbXMiLCIiLCJjbHJEZ0l0ZW1zT2YiLCIiXV0saW5wdXRzOntyYXdJdGVtczpbImNsckRnSXRlbXNPZiIsInJhd0l0ZW1zIl0sdHJhY2tCeTpbImNsckRnSXRlbXNU''@;'; put 'put ''cmFja0J5IiwidHJhY2tCeSJdfX0pLGR9KSgpLGpmZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuaXRlbXM9aH1nZXQgZW1wdHlEYXRhZ3JpZCgpe3JldHVybiEodGhpcy5pdGVtcy5sb2FkaW5nfHx0aGlzLml0ZW1zLmRpc3BsYXllZCYmMCE9PXRoaXMuaXRlbXMuZGlzcGxh''@;'; put 'put ''eWVkLmxlbmd0aCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGd3KSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1kZy1wbGFjZWhvbGRlciJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYp''@;'; put 'put ''ezImaCYmRmkoImRhdGFncmlkLXBsYWNlaG9sZGVyLWNvbnRhaW5lciIsITApfSxuZ0NvbnRlbnRTZWxlY3RvcnM6bmEsZGVjbHM6NCx2YXJzOjQsY29uc3RzOltbInJvbGUiLCJyb3ciLDEsImRhdGFncmlkLXBsYWNlaG9sZGVyIl0sWyJjbGFzcyIsImRhdGFncmlkLXBsYWNlaG9sZGVyLWlt''@;'; put 'put ''YWdlIiw0LCJuZ0lmIl0sWyJyb2xlIiwiZ3JpZGNlbGwiLDEsImRhdGFncmlkLXBsYWNlaG9sZGVyLWNvbnRlbnQiXSxbNCwibmdJZiJdLFsxLCJkYXRhZ3JpZC1wbGFjZWhvbGRlci1pbWFnZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKCksbnQoMCwiZGl2IiwwKSxybigx''@;'; put 'put ''LGRjZSwxLDAsImRpdiIsMSksbnQoMiwic3BhbiIsMikscm4oMyxwY2UsMSwwLCJuZy1jb250ZW50IiwzKSxvdCgpKCkpLDImaCYmKEZpKCJkYXRhZ3JpZC1lbXB0eSIsdi5lbXB0eURhdGFncmlkKSx1dCgxKSxUdCgibmdJZiIsdi5lbXB0eURhdGFncmlkKSx1dCgyKSxUdCgibmdJZiIsdi5l''@;'; put 'put ''bXB0eURhdGFncmlkKSl9LGRlcGVuZGVuY2llczpbTm9dLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLFpmZT0oKCk9PntjbGFzcyBke3NldCB0cmlnZ2VyRWwoaCl7dGhpcy5fdHJpZ2dlckVsPWh9Zm9jdXNUcmlnZ2VyKCl7dGhpcy5fdHJpZ2dlckVsJiZ0aGlzLl90cmlnZ2VyRWwuZm9jdXMo''@;'; put 'put ''KX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksemZlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9pZD1uZXcgJGV9c2V0SWQoaCl7dGhp''@;'; put 'put ''cy5faWQubmV4dChoKX1nZXQgaWQoKXtyZXR1cm4gdGhpcy5faWQuYXNPYnNlcnZhYmxlKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLHlxPSgoKT0+''@;'; put 'put ''e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLFosdWUpe3RoaXMudG9nZ2xlU2VydmljZT1oLHRoaXMuZWw9dix0aGlzLmNvbW1vblN0cmluZ3M9eSx0aGlzLnNpZ25wb3N0SWRTZXJ2aWNlPUMsdGhpcy5zaWducG9zdEZvY3VzTWFuYWdlcj1JLHRoaXMucGxhdGZvcm1JZD11ZSx0aGlz''@;'; put 'put ''LnN1YnNjcmlwdGlvbnM9W10sdGhpcy5kb2N1bWVudD1afW5nT25Jbml0KCl7dGhpcy5zaWducG9zdEZvY3VzTWFuYWdlci50cmlnZ2VyRWw9dGhpcy5lbC5uYXRpdmVFbGVtZW50LHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmli''@;'; put 'put ''ZShoPT57dGhpcy5hcmlhRXhwYW5kZWQ9aDtjb25zdCB2PXRoaXMuaXNPcGVuO3RoaXMuaXNPcGVuPWgsIXRoaXMuaXNPcGVuJiZ2JiZ0aGlzLmZvY3VzT25DbG9zZSgpfSksdGhpcy5zaWducG9zdElkU2VydmljZS5pZC5zdWJzY3JpYmUoaD0+dGhpcy5hcmlhQ29udHJvbD1oKSksdGhpcy5h''@;'; put 'put ''ZGREZWZhdWx0QXJpYUxhYmVsKHRoaXMuZWwubmF0aXZlRWxlbWVudCl9YWRkRGVmYXVsdEFyaWFMYWJlbChoKXtoLmhhc0F0dHJpYnV0ZSgiYXJpYS1sYWJlbCIpfHxoLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdGhpcy5jb21tb25TdHJpbmdzLmtleXMuc2lnbnBvc3RUb2dnbGUpfWZv''@;'; put 'put ''Y3VzT25DbG9zZSgpeyFTbCh0aGlzLnBsYXRmb3JtSWQpfHwhdGhpcy5pc09wZW4mJnRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXRoaXMuZG9jdW1lbnQuYm9keSYmdGhpcy5zaWducG9zdEZvY3VzTWFuYWdlci5mb2N1c1RyaWdnZXIoKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2Ny''@;'; put 'put ''aXB0aW9ucy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSl9b25TaWducG9zdFRyaWdnZXJDbGljayhoKXt0aGlzLnRvZ2dsZVNlcnZpY2UudG9nZ2xlV2l0aEV2ZW50KGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdCh6cyksS3QoYm8pLEt0''@;'; put 'put ''KG5zKSxLdCh6ZmUpLEt0KFpmZSksS3QoZ3MpLEt0KEwyKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNsclNpZ25wb3N0VHJpZ2dlciIsIiJdXSxob3N0QXR0cnM6WzEsInNpZ25wb3N0LXRyaWdnZXIiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlv''@;'; put 'put ''bihoLHYpezEmaCYmR24oImNsaWNrIixmdW5jdGlvbihDKXtyZXR1cm4gdi5vblNpZ25wb3N0VHJpZ2dlckNsaWNrKEMpfSksMiZoJiYoR2koImFyaWEtZXhwYW5kZWQiLHYuYXJpYUV4cGFuZGVkKSgiYXJpYS1jb250cm9scyIsdi5hcmlhQ29udHJvbCksRmkoImFjdGl2ZSIsdi5pc09wZW4p''@;'; put 'put ''KX19KSxkfSkoKSxHZmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmNvbW1vblN0cmluZ3M9aCx0aGlzLnVzZUN1c3RvbVRyaWdnZXI9ITF9c2V0IGN1c3RvbVRyaWdnZXIoaCl7dGhpcy51c2VDdXN0b21UcmlnZ2VyPSEhaH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9u''@;'; put 'put ''KGgpe3JldHVybiBuZXcoaHx8ZCkoS3QobnMpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLXNpZ25wb3N0Il1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtpZigxJmgmJnhvKHkseXEsNSksMiZoKXtsZXQgQztIaShDPSRpKCkpJiYodi5jdXN0b21U''@;'; put 'put ''cmlnZ2VyPUMuZmlyc3QpfX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkZpKCJzaWducG9zdCIsITApfSxmZWF0dXJlczpbaG8oW3pzLFpmZSx7cHJvdmlkZTp0Zix1c2VFeGlzdGluZzpib30semZlXSldLG5nQ29udGVudFNlbGVjdG9yczpuYSxkZWNsczoy''@;'; put 'put ''LHZhcnM6MSxjb25zdHM6W1s0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xyU2lnbnBvc3RUcmlnZ2VyIiwiIiwxLCJzaWducG9zdC1hY3Rpb24iLCJidG4iLCJidG4tc21hbGwiLCJidG4tbGluayJdLFsic2hhcGUiLCJpbmZvLWNpcmNsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYp''@;'; put 'put ''ezEmaCYmKEswKCkscm4oMCxhdiwzLDEsIm5nLWNvbnRhaW5lciIsMCksTmkoMSkpLDImaCYmVHQoIm5nSWYiLCF2LnVzZUN1c3RvbVRyaWdnZXIpfSxkZXBlbmRlbmNpZXM6W05vLHlxLFpvXSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxXZmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigp''@;'; put 'put ''e3RoaXMuX2R5bmFtaWM9ITF9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5jZWxsVmlldz10aGlzLnRlbXBsYXRlUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhudWxsKX1uZ09uRGVzdHJveSgpe3RoaXMuY2VsbFZpZXcuZGVzdHJveSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0''@;'; put 'put ''dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siZGctd3JhcHBlZC1jZWxsIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYmdm8oSWosNSksMiZoKXtsZXQgeTtIaSh5PSRpKCkpJiYodi50ZW1wbGF0ZVJlZj15LmZpcnN0KX19LG5nQ29u''@;'; put 'put ''dGVudFNlbGVjdG9yczpuYSxkZWNsczoyLHZhcnM6MCxjb25zdHM6W1siY2VsbFBvcnRhbCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKCkscm4oMCxiJCwxLDAsIm5nLXRlbXBsYXRlIixudWxsLDAsWnIpKX0sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksbXc9KCgpPT57''@;'; put 'put ''Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLnZjcj1ofW5nT25Jbml0KCl7dGhpcy53cmFwcGVkSW5qZWN0b3I9bmV3IGJ0KFdmZSx0aGlzLnZjcil9Z2V0IF92aWV3KCl7cmV0dXJuIHRoaXMud3JhcHBlZEluamVjdG9yLmdldChXZmUsdGhpcy52Y3IpLmNlbGxWaWV3fX1yZXR1cm4gZC5c''@;'; put 'put ''dTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChVaSkpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGctY2VsbCJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZ4byh5LEdmZSw0KSwyJmgpe2xldCBDO0hpKEM9''@;'; put 'put ''JGkoKSkmJih2LnNpZ25wb3N0PUMpfX0saG9zdEF0dHJzOlsicm9sZSIsImdyaWRjZWxsIl0saG9zdFZhcnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkZpKCJkYXRhZ3JpZC1jZWxsIiwhMCkoImRhdGFncmlkLXNpZ25wb3N0LXRyaWdnZXIiLHYuc2lnbnBvc3QubGVuZ3Ro''@;'; put 'put ''PjApfSxuZ0NvbnRlbnRTZWxlY3RvcnM6bmEsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihLMCgpLE5pKDApKX0sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksYXllPTAsdVo9KCgpPT57Y2xhc3MgZCBleHRlbmRzIHIxe2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0''@;'; put 'put ''aGlzLmV4cGFuZGFibGVJZD0iIix0aGlzLl9yZXBsYWNlPW5ldyBmcyghMSksdGhpcy5fYW5pbWF0ZT1uZXcgJGUsYXllKyssdGhpcy5leHBhbmRhYmxlSWQ9ImNsci1kZy1leHBhbmRhYmxlLXJvdy0iK2F5ZX1nZXQgZXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5fZXhwYW5kZWR9c2V0IGV4cGFu''@;'; put 'put ''ZGVkKGgpeyhoPSEhaCkhPT10aGlzLl9leHBhbmRlZCYmKHRoaXMuX2V4cGFuZGVkPWgsdGhpcy5fYW5pbWF0ZS5uZXh0KCksdGhpcy5fZXhwYW5kQ2hhbmdlLm5leHQoaCkpfWxvYWRpbmdTdGF0ZUNoYW5nZShoKXtzdXBlci5sb2FkaW5nU3RhdGVDaGFuZ2UoaCksaCE9PWdpLkxPQURJTkcm''@;'; put 'put ''JnRoaXMuX2FuaW1hdGUubmV4dCgpfWdldCByZXBsYWNlKCl7cmV0dXJuIHRoaXMuX3JlcGxhY2UuYXNPYnNlcnZhYmxlKCl9c2V0UmVwbGFjZShoKXt0aGlzLl9yZXBsYWNlLm5leHQoaCl9Z2V0IGFuaW1hdGUoKXtyZXR1cm4gdGhpcy5fYW5pbWF0ZS5hc09ic2VydmFibGUoKX19cmV0dXJu''@;'; put 'put ''IGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7dmFyIHZ3PSgoKT0+KGZ1bmN0aW9uKGQpe2RbZC5ESVNQTEFZPTBdPSJESVNQTEFZIixkW2QuQ0FMQ1VMQVRFPTFdPSJD''@;'; put 'put ''QUxDVUxBVEUifSh2d3x8KHZ3PXt9KSksdncpKSgpLFdzPSgoKT0+KGZ1bmN0aW9uKGQpe2RbZC5Ob25lPTBdPSJOb25lIixkW2QuU2luZ2xlPTFdPSJTaW5nbGUiLGRbZC5NdWx0aT0yXT0iTXVsdGkifShXc3x8KFdzPXt9KSksV3MpKSgpO2xldCBZZmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1''@;'; put 'put ''Y3Rvcigpe3RoaXMuX2R5bmFtaWM9ITF9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5yb3dWaWV3PXRoaXMudGVtcGxhdGVSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KG51bGwpfW5nT25EZXN0cm95KCl7dGhpcy5yb3dWaWV3LmRlc3Ryb3koKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgp''@;'; put 'put ''e3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImRnLXdyYXBwZWQtcm93Il1dLHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYmdm8odDMsNSksMiZoKXtsZXQgeTtIaSh5PSRpKCkpJiYodi50ZW1wbGF0ZVJlZj15LmZpcnN0KX19LG5n''@;'; put 'put ''Q29udGVudFNlbGVjdG9yczpuYSxkZWNsczoyLHZhcnM6MCxjb25zdHM6W1sicm93UG9ydGFsIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoSzAoKSxybigwLGdjZSwxLDAsIm5nLXRlbXBsYXRlIixudWxsLDAsWnIpKX0sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksU09lPTAs''@;'; put 'put ''Y1o9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5faXRlbXM9aCx0aGlzLl9maWx0ZXJzPXYsdGhpcy5fem9uZT15LHRoaXMucHJlc2VydmVTZWxlY3Rpb249ITEsdGhpcy5wcmV2U2VsZWN0aW9uUmVmcz1bXSx0aGlzLmxvY2tlZFJlZnM9W10sdGhpcy5fc2VsZWN0aW9u''@;'; put 'put ''VHlwZT1Xcy5Ob25lLHRoaXMucm93U2VsZWN0aW9uTW9kZT0hMSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5zaGlmdFByZXNzZWQ9ITEsdGhpcy52YWx1ZUNvbGxlY3Rvcj1uZXcgJGUsdGhpcy5fY2hhbmdlPW5ldyAkZSx0aGlzLmlkPSJjbHItZGctc2VsZWN0aW9uIitTT2UrKyx0aGlz''@;'; put 'put ''LnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLl9maWx0ZXJzLmNoYW5nZS5zdWJzY3JpYmUoKCk9PnshdGhpcy5fc2VsZWN0YWJsZXx8dGhpcy5wcmVzZXJ2ZVNlbGVjdGlvbnx8dGhpcy5jbGVhclNlbGVjdGlvbigpfSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuX2l0ZW1zLmFsbENo''@;'; put 'put ''YW5nZXMuc3Vic2NyaWJlKEM9Pntjb25zdCBJPVtdO3N3aXRjaCh0aGlzLnNlbGVjdGlvblR5cGUpe2Nhc2UgV3MuTm9uZTpicmVhaztjYXNlIFdzLlNpbmdsZTp7bGV0IFo7Y29uc3QgdWU9dGhpcy5faXRlbXMudHJhY2tCeTtsZXQgX2U9ITE7aWYodGhpcy5jdXJyZW50U2luZ2xlJiYhdGhp''@;'; put 'put ''cy5wcmV2U2luZ2xlU2VsZWN0aW9uUmVmJiZ0aGlzLl9pdGVtcy5hbGwmJnRoaXMuX2l0ZW1zLnRyYWNrQnkpe2NvbnN0IEJlPXRoaXMuX2l0ZW1zLmFsbC5maW5kSW5kZXgoTmU9Pk5lPT09dGhpcy5jdXJyZW50U2luZ2xlKTt0aGlzLnByZXZTaW5nbGVTZWxlY3Rpb25SZWY9dGhpcy5faXRl''@;'; put 'put ''bXMudHJhY2tCeShCZSx0aGlzLmN1cnJlbnRTaW5nbGUpfUMuZm9yRWFjaCgoQmUsTmUpPT57Y29uc3QgS2U9dWUoTmUsQmUpO3RoaXMucHJldlNpbmdsZVNlbGVjdGlvblJlZj09PUtlJiYoWj1CZSxfZT0hMCksdGhpcy5sb2NrZWRSZWZzLmluZGV4T2YoS2UpPi0xJiZJLnB1c2goS2UpfSks''@;'; put 'put ''dGhpcy5faXRlbXMuc21hcnQmJiFaJiYoX2U9ITApLHNldFRpbWVvdXQoKCk9PntfZSYmKHRoaXMuY3VycmVudFNpbmdsZT1aKX0sMCk7YnJlYWt9Y2FzZSBXcy5NdWx0aTp7bGV0IFo9dGhpcy5jdXJyZW50LnNsaWNlKCk7Y29uc3QgdWU9dGhpcy5faXRlbXMudHJhY2tCeTtsZXQgX2U9ITE7''@;'; put 'put ''dGhpcy5jdXJyZW50Lmxlbmd0aD4wJiZ0aGlzLnByZXZTZWxlY3Rpb25SZWZzLmxlbmd0aCE9PXRoaXMuY3VycmVudC5sZW5ndGgmJnRoaXMuX2l0ZW1zLmFsbCYmdGhpcy5faXRlbXMudHJhY2tCeSYmKHRoaXMucHJldlNlbGVjdGlvblJlZnM9W10sdGhpcy5jdXJyZW50LmZvckVhY2goQmU9''@;'; put 'put ''Pntjb25zdCBOZT10aGlzLl9pdGVtcy5hbGwuZmluZEluZGV4KEtlPT5LZT09PUJlKTt0aGlzLnByZXZTZWxlY3Rpb25SZWZzLnB1c2godGhpcy5faXRlbXMudHJhY2tCeShOZSxCZSkpfSkpLEMuZm9yRWFjaCgoQmUsTmUpPT57Y29uc3QgS2U9dWUoTmUsQmUpO3RoaXMubG9ja2VkUmVmcy5p''@;'; put 'put ''bmRleE9mKEtlKT4tMSYmSS5wdXNoKEtlKX0pLFoubGVuZ3RoPjAmJihDLmZvckVhY2goKEJlLE5lKT0+e2NvbnN0IEtlPXVlKE5lLEJlKSxwdD10aGlzLnByZXZTZWxlY3Rpb25SZWZzLmluZGV4T2YoS2UpO3B0Pi0xJiYoWltwdF09QmUsX2U9ITApfSksdGhpcy5faXRlbXMuc21hcnQmJiha''@;'; put 'put ''PVouZmlsdGVyKEJlPT5DLmluZGV4T2YoQmUpPi0xKSx0aGlzLmN1cnJlbnQubGVuZ3RoIT09Wi5sZW5ndGgmJihfZT0hMCkpLHNldFRpbWVvdXQoKCk9PntfZSYmKHRoaXMuY3VycmVudD1aKX0sMCkpO2JyZWFrfX10aGlzLmxvY2tlZFJlZnM9SX0pKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVz''@;'; put 'put ''aCh0aGlzLnZhbHVlQ29sbGVjdG9yLnBpcGUoREQoMCkpLnN1YnNjcmliZSgoKT0+dGhpcy5lbWl0Q2hhbmdlKCkpKX1jbGVhclNlbGVjdGlvbigpe3RoaXMuX2N1cnJlbnQ9W10sdGhpcy5wcmV2U2VsZWN0aW9uUmVmcz1bXSx0aGlzLnByZXZTaW5nbGVTZWxlY3Rpb25SZWY9bnVsbCx0aGlz''@;'; put 'put ''Ll9jdXJyZW50U2luZ2xlPW51bGwsdGhpcy5lbWl0Q2hhbmdlKCl9Z2V0IHNlbGVjdGlvblR5cGUoKXtyZXR1cm4gdGhpcy5fc2VsZWN0aW9uVHlwZX1zZXQgc2VsZWN0aW9uVHlwZShoKXtoIT09dGhpcy5zZWxlY3Rpb25UeXBlJiYodGhpcy5fc2VsZWN0aW9uVHlwZT1oLGg9PT1Xcy5Ob25l''@;'; put 'put ''P2RlbGV0ZSB0aGlzLmN1cnJlbnQ6dGhpcy51cGRhdGVDdXJyZW50KFtdLCExKSl9Z2V0IF9zZWxlY3RhYmxlKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGlvblR5cGU9PT1Xcy5NdWx0aXx8dGhpcy5fc2VsZWN0aW9uVHlwZT09PVdzLlNpbmdsZX1kZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25z''@;'; put 'put ''LmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX1nZXQgY3VycmVudFNpbmdsZSgpe3JldHVybiB0aGlzLl9jdXJyZW50U2luZ2xlfXNldCBjdXJyZW50U2luZ2xlKGgpe2lmKGghPT10aGlzLl9jdXJyZW50U2luZ2xlKXtpZih0aGlzLl9jdXJyZW50U2luZ2xlPWgsdGhpcy5faXRlbXMuYWxs''@;'; put 'put ''JiZ0aGlzLl9pdGVtcy50cmFja0J5JiZoKXtjb25zdCB2PXRoaXMuX2l0ZW1zLmFsbC5maW5kSW5kZXgoeT0+eT09PWgpO3RoaXMucHJldlNpbmdsZVNlbGVjdGlvblJlZj10aGlzLl9pdGVtcy50cmFja0J5KHYsaCl9dGhpcy5lbWl0Q2hhbmdlKCl9fWdldCBjdXJyZW50KCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuX2N1cnJlbnR9c2V0IGN1cnJlbnQoaCl7dGhpcy51cGRhdGVDdXJyZW50KGgsITApfXVwZGF0ZUN1cnJlbnQoaCx2KXt0aGlzLl9jdXJyZW50PWgsdiYmdGhpcy52YWx1ZUNvbGxlY3Rvci5uZXh0KGgpfWVtaXRDaGFuZ2UoKXt0aGlzLl9zZWxlY3Rpb25UeXBlPT09V3MuU2luZ2xlP3Ro''@;'; put 'put ''aXMuX2NoYW5nZS5uZXh0KHRoaXMuY3VycmVudFNpbmdsZSk6dGhpcy5fc2VsZWN0aW9uVHlwZT09PVdzLk11bHRpJiZ0aGlzLl9jaGFuZ2UubmV4dCh0aGlzLmN1cnJlbnQpfWdldCBjaGFuZ2UoKXtyZXR1cm4gdGhpcy5fY2hhbmdlLmFzT2JzZXJ2YWJsZSgpfWlzU2VsZWN0ZWQoaCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuX3NlbGVjdGlvblR5cGU9PT1Xcy5TaW5nbGU/dGhpcy5jdXJyZW50U2luZ2xlPT09aDp0aGlzLl9zZWxlY3Rpb25UeXBlPT09V3MuTXVsdGkmJnRoaXMuY3VycmVudC5pbmRleE9mKGgpPj0wfXNlbGVjdEl0ZW0oaCl7aWYodGhpcy5jdXJyZW50PXRoaXMuY3VycmVudC5jb25j''@;'; put 'put ''YXQoaCksdGhpcy5faXRlbXMudHJhY2tCeSYmdGhpcy5faXRlbXMuYWxsKXtjb25zdCB2PXRoaXMuX2l0ZW1zLmFsbC5maW5kSW5kZXgoeT0+eT09PWgpO3RoaXMucHJldlNlbGVjdGlvblJlZnMucHVzaCh0aGlzLl9pdGVtcy50cmFja0J5KHYsaCkpfX1kZXNlbGVjdEl0ZW0oaCl7aWYodGhp''@;'; put 'put ''cy5jdXJyZW50PXRoaXMuY3VycmVudC5zbGljZSgwLGgpLmNvbmNhdCh0aGlzLmN1cnJlbnQuc2xpY2UoaCsxKSksdGhpcy5faXRlbXMudHJhY2tCeSYmaDx0aGlzLnByZXZTZWxlY3Rpb25SZWZzLmxlbmd0aCl7Y29uc3Qgdj10aGlzLnByZXZTZWxlY3Rpb25SZWZzLnNwbGljZShoLDEpO3Ro''@;'; put 'put ''aXMubG9ja2VkUmVmcz10aGlzLmxvY2tlZFJlZnMuZmlsdGVyKHk9PnkhPT12WzBdKX19c2V0U2VsZWN0ZWQoaCx2KXtjb25zdCB5PXRoaXMuY3VycmVudD90aGlzLmN1cnJlbnQuaW5kZXhPZihoKTotMTtzd2l0Y2godGhpcy5fc2VsZWN0aW9uVHlwZSl7Y2FzZSBXcy5Ob25lOmNhc2UgV3Mu''@;'; put 'put ''U2luZ2xlOmJyZWFrO2Nhc2UgV3MuTXVsdGk6eT49MCYmIXY/dGhpcy5kZXNlbGVjdEl0ZW0oeSk6eTwwJiZ2JiZ0aGlzLnNlbGVjdEl0ZW0oaCl9fWlzQWxsU2VsZWN0ZWQoKXtpZih0aGlzLl9zZWxlY3Rpb25UeXBlIT09V3MuTXVsdGl8fCF0aGlzLl9pdGVtcy5kaXNwbGF5ZWQpcmV0dXJu''@;'; put 'put ''ITE7Y29uc3QgaD10aGlzLl9pdGVtcy5kaXNwbGF5ZWQuZmlsdGVyKEM9PiExPT09dGhpcy5pc0xvY2tlZChDKSk7cmV0dXJuIShoLmxlbmd0aDwxKSYmaC5maWx0ZXIoQz0+dGhpcy5jdXJyZW50LmluZGV4T2YoQyk+LTEpLmxlbmd0aD09PWgubGVuZ3RofWNhbkl0QmVMb2NrZWQoKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5fc2VsZWN0aW9uVHlwZSE9PVdzLk5vbmUmJkFycmF5LmlzQXJyYXkodGhpcy5faXRlbXMuYWxsKX1sb2NrSXRlbShoLHYpe2lmKHRoaXMuY2FuSXRCZUxvY2tlZCgpKXtjb25zdCB5PXRoaXMuX2l0ZW1zLnRyYWNrQnkodGhpcy5faXRlbXMuYWxsLmZpbmRJbmRleChDPT5DPT09''@;'; put 'put ''aCksaCk7ITA9PT12P3RoaXMubG9ja2VkUmVmcy5wdXNoKHkpOnRoaXMubG9ja2VkUmVmcz10aGlzLmxvY2tlZFJlZnMuZmlsdGVyKEM9PnkhPT1DKX19aXNMb2NrZWQoaCl7aWYodGhpcy5jYW5JdEJlTG9ja2VkKCkpe2NvbnN0IHY9dGhpcy5faXRlbXMudHJhY2tCeSh0aGlzLl9pdGVtcy5h''@;'; put 'put ''bGwuZmluZEluZGV4KHk9Pnk9PT1oKSxoKTtyZXR1cm4gdGhpcy5sb2NrZWRSZWZzLmluZGV4T2Yodik+LTF9cmV0dXJuITF9dG9nZ2xlQWxsKCl7dGhpcy5fc2VsZWN0aW9uVHlwZT09PVdzLk5vbmV8fHRoaXMuX3NlbGVjdGlvblR5cGU9PT1Xcy5TaW5nbGV8fCh0aGlzLmlzQWxsU2VsZWN0''@;'; put 'put ''ZWQoKT90aGlzLl9pdGVtcy5kaXNwbGF5ZWQuZm9yRWFjaChoPT57Y29uc3Qgdj10aGlzLmN1cnJlbnQuaW5kZXhPZihoKTt2Pi0xJiYhMT09PXRoaXMuaXNMb2NrZWQoaCkmJnRoaXMuZGVzZWxlY3RJdGVtKHYpfSk6dGhpcy5faXRlbXMuZGlzcGxheWVkLmZvckVhY2goaD0+e3RoaXMuY3Vy''@;'; put 'put ''cmVudC5pbmRleE9mKGgpPDAmJiExPT09dGhpcy5pc0xvY2tlZChoKSYmdGhpcy5zZWxlY3RJdGVtKGgpfSkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShndyksQ2kodnYpLENpKF9sKSl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0''@;'; put 'put ''b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksVWZlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuX3ZpZXc9bmV3IGZzKHZ3LkRJU1BMQVkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGguZmlsdGVyUmVuZGVyU3RlcHMoaDQuQ0FMQ1VMQVRF''@;'; put 'put ''X01PREVfT04pLnN1YnNjcmliZSgoKT0+dGhpcy5fdmlldy5uZXh0KHZ3LkNBTENVTEFURSkpKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChoLmZpbHRlclJlbmRlclN0ZXBzKGg0LkNBTENVTEFURV9NT0RFX09GRikuc3Vic2NyaWJlKCgpPT50aGlzLl92aWV3Lm5leHQodncuRElTUExBWSkp''@;'; put 'put ''KX1nZXQgdmlldygpe3JldHVybiB0aGlzLl92aWV3LmFzT2JzZXJ2YWJsZSgpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoQ2kocFMpKX0s''@;'; put 'put ''ZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSx3cT0wLG1TPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLFosdWUsX2UsQmUsTmUsS2UscHQpe3RoaXMuc2VsZWN0aW9uPWgsdGhpcy5yb3dBY3Rpb25TZXJ2aWNlPXYsdGhpcy5n''@;'; put 'put ''bG9iYWxFeHBhbmRhYmxlPXksdGhpcy5leHBhbmQ9Qyx0aGlzLmRldGFpbFNlcnZpY2U9SSx0aGlzLmRpc3BsYXlNb2RlPVosdGhpcy52Y3I9dWUsdGhpcy5yZW5kZXJlcj1fZSx0aGlzLmVsPUJlLHRoaXMuY29tbW9uU3RyaW5ncz1OZSx0aGlzLml0ZW1zPUtlLHRoaXMuZG9jdW1lbnQ9cHQs''@;'; put 'put ''dGhpcy5TRUxFQ1RJT05fVFlQRT1Xcyx0aGlzLmV4cGFuZEFuaW1hdGlvblRyaWdnZXI9ITEsdGhpcy5fc2VsZWN0ZWQ9ITEsdGhpcy5zZWxlY3RlZENoYW5nZWQ9bmV3IGFyKCExKSx0aGlzLmV4cGFuZGVkQ2hhbmdlPW5ldyBhcighMSksdGhpcy5fZGV0YWlsT3BlbkxhYmVsPSIiLHRoaXMu''@;'; put 'put ''X2RldGFpbENsb3NlTGFiZWw9IiIsdGhpcy5fcm93QXJpYUxhYmVsPSIiLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLmRpc3BsYXlDZWxscz0hMSx3cSsrLHRoaXMuaWQ9ImNsci1kZy1yb3ciK3dxLHRoaXMucmFkaW9JZD0iY2xyLWRnLXJvdy1yZCIrd3EsdGhpcy5jaGVja2JveElkPSJj''@;'; put 'put ''bHItZGctcm93LWNiIit3cSx0aGlzLmV4cGFuZGFibGVJZD1DLmV4cGFuZGFibGVJZCx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChvSSh0aGlzLmV4cGFuZC5yZXBsYWNlLHRoaXMuZXhwYW5kLmV4cGFuZENoYW5nZSkuc3Vic2NyaWJlKChbT3QsJHRdKT0+e090JiYkdD8odGhpcy5yZXBsYWNl''@;'; put 'put ''ZD0hMCx0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwiZGF0YWdyaWQtcm93LXJlcGxhY2VkIikpOih0aGlzLnJlcGxhY2VkPSExLHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCJkYXRhZ3JpZC1yb3ctcmVwbGFjZWQi''@;'; put 'put ''KSl9KSl9Y2xlYXJSYW5nZXMoaCl7aC5zaGlmdEtleSYmKHRoaXMuZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCksLTEhPT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJGaXJlZm94IikmJihoLnByZXZlbnREZWZhdWx0KCksdGhpcy50b2dnbGUo''@;'; put 'put ''ITApKSl9Z2V0IHNlbGVjdGVkKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGlvblR5cGU9PT1Xcy5Ob25lP3RoaXMuX3NlbGVjdGVkOnRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQodGhpcy5pdGVtKX1zZXQgc2VsZWN0ZWQoaCl7dGhpcy5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09''@;'; put 'put ''PVdzLk5vbmU/dGhpcy5fc2VsZWN0ZWQ9aDooaCYmdGhpcy5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PVdzLk11bHRpP3RoaXMucmFuZ2VTZWxlY3QoKTp0aGlzLnNlbGVjdGlvbi5yYW5nZVN0YXJ0PW51bGwsdGhpcy5zZWxlY3Rpb24uc2V0U2VsZWN0ZWQodGhpcy5pdGVtLGgpKX1zZXQg''@;'; put 'put ''Y2xyRGdTZWxlY3RhYmxlKGgpe3RoaXMuc2VsZWN0aW9uLmxvY2tJdGVtKHRoaXMuaXRlbSwhMT09PWgpfWdldCBjbHJEZ1NlbGVjdGFibGUoKXtyZXR1cm4hdGhpcy5zZWxlY3Rpb24uaXNMb2NrZWQodGhpcy5pdGVtKX10b2dnbGUoaD0hdGhpcy5zZWxlY3RlZCl7aCE9PXRoaXMuc2VsZWN0''@;'; put 'put ''ZWQmJih0aGlzLnNlbGVjdGVkPWgsdGhpcy5zZWxlY3RlZENoYW5nZWQuZW1pdChoKSl9Z2V0IGV4cGFuZGVkKCl7cmV0dXJuIHRoaXMuZXhwYW5kLmV4cGFuZGVkfXNldCBleHBhbmRlZChoKXt0aGlzLmV4cGFuZC5leHBhbmRlZD1ofXRvZ2dsZUV4cGFuZCgpe3RoaXMuZXhwYW5kLmV4cGFu''@;'; put 'put ''ZGFibGUmJih0aGlzLmV4cGFuZEFuaW1hdGlvbi51cGRhdGVTdGFydEhlaWdodCgpLHRoaXMuZXhwYW5kZWQ9IXRoaXMuZXhwYW5kZWQsdGhpcy5leHBhbmRlZENoYW5nZS5lbWl0KHRoaXMuZXhwYW5kZWQpKX1zZXQgY2xyRGdEZXRhaWxPcGVuTGFiZWwoaCl7dGhpcy5fZGV0YWlsT3Blbkxh''@;'; put 'put ''YmVsPWh9Z2V0IGNsckRnRGV0YWlsT3BlbkxhYmVsKCl7cmV0dXJuIHRoaXMuX2RldGFpbE9wZW5MYWJlbD90aGlzLl9kZXRhaWxPcGVuTGFiZWw6dGhpcy5jb21tb25TdHJpbmdzLmtleXMub3Blbn1zZXQgY2xyRGdEZXRhaWxDbG9zZUxhYmVsKGgpe3RoaXMuX2RldGFpbENsb3NlTGFiZWw9''@;'; put 'put ''aH1nZXQgY2xyRGdEZXRhaWxDbG9zZUxhYmVsKCl7cmV0dXJuIHRoaXMuX2RldGFpbENsb3NlTGFiZWw/dGhpcy5fZGV0YWlsQ2xvc2VMYWJlbDp0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZX1zZXQgY2xyRGdSb3dBcmlhTGFiZWwoaCl7dGhpcy5fcm93QXJpYUxhYmVsPWh9Z2V0IGNs''@;'; put 'put ''ckRnUm93QXJpYUxhYmVsKCl7cmV0dXJuIHRoaXMuX3Jvd0FyaWFMYWJlbD90aGlzLl9yb3dBcmlhTGFiZWw6dGhpcy5jb21tb25TdHJpbmdzLmtleXMuc2VsZWN0fW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuZGdDZWxscy5jaGFuZ2VzLnN1YnNjcmliZSgoKT0+e3RoaXMuZGdDZWxscy5m''@;'; put 'put ''b3JFYWNoKGg9PntoLl92aWV3LmRlc3Ryb3llZHx8dGhpcy5fc2Nyb2xsYWJsZUNlbGxzLmluc2VydChoLl92aWV3KX0pfSl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5kaXNwbGF5TW9kZS52aWV3LnN1YnNjcmliZShoPT57Zm9yKGxldCB2PXRoaXMu''@;'; put 'put ''X3Njcm9sbGFibGVDZWxscy5sZW5ndGg7dj4wO3YtLSl0aGlzLl9zY3JvbGxhYmxlQ2VsbHMuZGV0YWNoKCk7Zm9yKGxldCB2PXRoaXMuX2NhbGN1bGF0ZWRDZWxscy5sZW5ndGg7dj4wO3YtLSl0aGlzLl9jYWxjdWxhdGVkQ2VsbHMuZGV0YWNoKCk7aD09PXZ3LkNBTENVTEFURT8odGhpcy5k''@;'; put 'put ''aXNwbGF5Q2VsbHM9ITEsdGhpcy5kZ0NlbGxzLmZvckVhY2godj0+e3YuX3ZpZXcuZGVzdHJveWVkfHx0aGlzLl9jYWxjdWxhdGVkQ2VsbHMuaW5zZXJ0KHYuX3ZpZXcpfSkpOih0aGlzLmRpc3BsYXlDZWxscz0hMCx0aGlzLmRnQ2VsbHMuZm9yRWFjaCh2PT57di5fdmlldy5kZXN0cm95ZWR8''@;'; put 'put ''fHRoaXMuX3Njcm9sbGFibGVDZWxscy5pbnNlcnQodi5fdmlldyl9KSl9KSx0aGlzLmV4cGFuZC5hbmltYXRlLnN1YnNjcmliZSgoKT0+e3RoaXMuZXhwYW5kQW5pbWF0aW9uVHJpZ2dlcj0hdGhpcy5leHBhbmRBbmltYXRpb25UcmlnZ2VyfSkpfXJhbmdlU2VsZWN0KCl7Y29uc3QgaD10aGlz''@;'; put 'put ''Lml0ZW1zLmRpc3BsYXllZDtpZighaClyZXR1cm47Y29uc3Qgdj1oLmluZGV4T2YodGhpcy5zZWxlY3Rpb24ucmFuZ2VTdGFydCk7aWYodGhpcy5zZWxlY3Rpb24ucmFuZ2VTdGFydCYmdGhpcy5zZWxlY3Rpb24uY3VycmVudC5pbmNsdWRlcyh0aGlzLnNlbGVjdGlvbi5yYW5nZVN0YXJ0KSYm''@;'; put 'put ''dGhpcy5zZWxlY3Rpb24uc2hpZnRQcmVzc2VkJiYtMSE9PXYpe2NvbnN0IHk9aC5pbmRleE9mKHRoaXMuaXRlbSksQz1uZXcgU2V0KHRoaXMuc2VsZWN0aW9uLmN1cnJlbnQuY29uY2F0KGguc2xpY2UoTWF0aC5taW4odix5KSxNYXRoLm1heCh2LHkpKzEpKSk7dGhpcy5zZWxlY3Rpb24uY2xl''@;'; put 'put ''YXJTZWxlY3Rpb24oKSx0aGlzLnNlbGVjdGlvbi5jdXJyZW50LnB1c2goLi4uQyl9ZWxzZSB0aGlzLnNlbGVjdGlvbi5yYW5nZVN0YXJ0PXRoaXMuaXRlbX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSl9bmdPbkluaXQoKXt0aGlz''@;'; put 'put ''LndyYXBwZWRJbmplY3Rvcj1uZXcgYnQoWWZlLHRoaXMudmNyKSx0aGlzLnNlbGVjdGlvbi5sb2NrSXRlbSh0aGlzLml0ZW0sITE9PT10aGlzLmNsckRnU2VsZWN0YWJsZSl9Z2V0IF92aWV3KCl7cmV0dXJuIHRoaXMud3JhcHBlZEluamVjdG9yLmdldChZZmUsdGhpcy52Y3IpLnJvd1ZpZXd9''@;'; put 'put ''fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGNaKSxLdChOTCksS3QoakwpLEt0KHVaKSxLdChBOCksS3QoVWZlKSxLdChVaSksS3QoR2EpLEt0KGJvKSxLdChucyksS3QoZ3cpLEt0KGdzKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0''@;'; put 'put ''b3JzOltbImNsci1kZy1yb3ciXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmeG8oeSxtdyw0KSwyJmgpe2xldCBDO0hpKEM9JGkoKSkmJih2LmRnQ2VsbHM9Qyl9fSx2aWV3UXVlcnk6ZnVuY3Rpb24oaCx2KXtpZigxJmgmJih2byhmcSw1KSx2byhtY2UsNSksdm8o''@;'; put 'put ''eWcsNSxVaSksdm8odFMsNSxVaSksdm8odmNlLDUsVWkpKSwyJmgpe2xldCB5O0hpKHk9JGkoKSkmJih2LmV4cGFuZEFuaW1hdGlvbj15LmZpcnN0KSxIaSh5PSRpKCkpJiYodi5kZXRhaWxCdXR0b249eS5maXJzdCksSGkoeT0kaSgpKSYmKHYuX3N0aWNreUNlbGxzPXkuZmlyc3QpLEhpKHk9''@;'; put 'put ''JGkoKSkmJih2Ll9zY3JvbGxhYmxlQ2VsbHM9eS5maXJzdCksSGkoeT0kaSgpKSYmKHYuX2NhbGN1bGF0ZWRDZWxscz15LmZpcnN0KX19LGhvc3RBdHRyczpbInJvbGUiLCJyb3dncm91cCJdLGhvc3RWYXJzOjUsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiYoR2koImFyaWEtb3du''@;'; put 'put ''cyIsdi5pZCksRmkoImRhdGFncmlkLXJvdyIsITApKCJkYXRhZ3JpZC1zZWxlY3RlZCIsdi5zZWxlY3RlZCkpfSxpbnB1dHM6e2l0ZW06WyJjbHJEZ0l0ZW0iLCJpdGVtIl0sc2VsZWN0ZWQ6WyJjbHJEZ1NlbGVjdGVkIiwic2VsZWN0ZWQiXSxjbHJEZ1NlbGVjdGFibGU6ImNsckRnU2VsZWN0''@;'; put 'put ''YWJsZSIsZXhwYW5kZWQ6WyJjbHJEZ0V4cGFuZGVkIiwiZXhwYW5kZWQiXSxjbHJEZ0RldGFpbE9wZW5MYWJlbDoiY2xyRGdEZXRhaWxPcGVuTGFiZWwiLGNsckRnRGV0YWlsQ2xvc2VMYWJlbDoiY2xyRGdEZXRhaWxDbG9zZUxhYmVsIixjbHJEZ1Jvd0FyaWFMYWJlbDoiY2xyRGdSb3dBcmlh''@;'; put 'put ''TGFiZWwifSxvdXRwdXRzOntzZWxlY3RlZENoYW5nZWQ6ImNsckRnU2VsZWN0ZWRDaGFuZ2UiLGV4cGFuZGVkQ2hhbmdlOiJjbHJEZ0V4cGFuZGVkQ2hhbmdlIn0sZmVhdHVyZXM6W2hvKFt1Wix7cHJvdmlkZTpyMSx1c2VFeGlzdGluZzp1Wn0se3Byb3ZpZGU6UGYsdXNlRXhpc3Rpbmc6dVp9''@;'; put 'put ''XSldLG5nQ29udGVudFNlbGVjdG9yczpzdixkZWNsczo5LHZhcnM6Myxjb25zdHM6W1siY2xhc3MiLCJkYXRhZ3JpZC1yb3ctY2xpY2thYmxlIiwzLCJtb3VzZWRvd24iLDQsIm5nSWYiXSxbMywiY2xyRXhwYW5kVHJpZ2dlciIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWyJkZXRhaWwiLCIiXSxb''@;'; put 'put ''InJvd0NvbnRlbnQiLCIiXSxbImNhbGN1bGF0ZWRDZWxscyIsIiJdLFsxLCJkYXRhZ3JpZC1yb3ctY2xpY2thYmxlIiwzLCJtb3VzZWRvd24iXSxbMywiY2xyRXhwYW5kVHJpZ2dlciJdLFszLCJuZ1RlbXBsYXRlT3V0bGV0Il0sWyJyb2xlIiwicm93IiwxLCJkYXRhZ3JpZC1yb3ctbWFzdGVy''@;'; put 'put ''IiwiZGF0YWdyaWQtcm93LWZsZXgiLDMsImlkIl0sWzEsImRhdGFncmlkLXJvdy1zdGlja3kiXSxbInN0aWNreUNlbGxzIiwiIl0sWyJjbGFzcyIsImRhdGFncmlkLXNlbGVjdCBkYXRhZ3JpZC1maXhlZC1jb2x1bW4gZGF0YWdyaWQtY2VsbCIsInJvbGUiLCJncmlkY2VsbCIsMywibmdDbGFz''@;'; put 'put ''cyIsNCwibmdJZiJdLFsiY2xhc3MiLCJkYXRhZ3JpZC1yb3ctYWN0aW9ucyBkYXRhZ3JpZC1maXhlZC1jb2x1bW4gZGF0YWdyaWQtY2VsbCIsInJvbGUiLCJncmlkY2VsbCIsNCwibmdJZiJdLFsiY2xhc3MiLCJkYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IGRhdGFncmlkLWZpeGVkLWNvbHVt''@;'; put 'put ''biBkYXRhZ3JpZC1jZWxsIiwicm9sZSIsImdyaWRjZWxsIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImRhdGFncmlkLWRldGFpbC1jYXJldCBkYXRhZ3JpZC1maXhlZC1jb2x1bW4gZGF0YWdyaWQtY2VsbCIsNCwibmdJZiJdLFsxLCJkYXRhZ3JpZC1yb3ctc2Nyb2xsYWJsZSIsMywibmdDbGFzcyJd''@;'; put 'put ''LFsxLCJkYXRhZ3JpZC1zY3JvbGxpbmctY2VsbHMiXSxbInNjcm9sbGFibGVDZWxscyIsIiJdLFsicm9sZSIsImdyaWRjZWxsIiwxLCJkYXRhZ3JpZC1zZWxlY3QiLCJkYXRhZ3JpZC1maXhlZC1jb2x1bW4iLCJkYXRhZ3JpZC1jZWxsIiwzLCJuZ0NsYXNzIl0sWzEsImNsci1jaGVja2JveC13''@;'; put 'put ''cmFwcGVyIl0sWyJ0eXBlIiwiY2hlY2tib3giLDMsIm5nTW9kZWwiLCJpZCIsIm5nTW9kZWxDaGFuZ2UiXSxbMSwiY2xyLWNvbnRyb2wtbGFiZWwiLCJjbHItY29sLW51bGwiLDMsImZvciIsImNsaWNrIl0sWzEsImNsci1zci1vbmx5Il0sWyJ0eXBlIiwicmFkaW8iLCJjbHJSYWRpbyIsIiIs''@;'; put 'put ''MywiaWQiLCJuYW1lIiwidmFsdWUiLCJuZ01vZGVsIiwiY2hlY2tlZCIsIm5nTW9kZWxDaGFuZ2UiXSxbInJvbGUiLCJncmlkY2VsbCIsMSwiZGF0YWdyaWQtcm93LWFjdGlvbnMiLCJkYXRhZ3JpZC1maXhlZC1jb2x1bW4iLCJkYXRhZ3JpZC1jZWxsIl0sWyJyb2xlIiwiZ3JpZGNlbGwiLDEs''@;'; put 'put ''ImRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQiLCJkYXRhZ3JpZC1maXhlZC1jb2x1bW4iLCJkYXRhZ3JpZC1jZWxsIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xhc3MiLCJkYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LWJ1dHRvbiIsMywiY2xpY2siLDQsIm5nSWYiXSxbImNsclNtYWxsIiwiIiw0''@;'; put 'put ''LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJkYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LWJ1dHRvbiIsMywiY2xpY2siXSxbInNoYXBlIiwiYW5nbGUiLDEsImRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQtaWNvbiJdLFsiY2xyU21hbGwiLCIiXSxbMSwiZGF0YWdyaWQtZGV0YWlsLWNh''@;'; put 'put ''cmV0IiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIiwiZGF0YWdyaWQtY2VsbCJdLFsidHlwZSIsImJ1dHRvbiIsImFyaWEtaGFzcG9wdXAiLCJkaWFsb2ciLDEsImRhdGFncmlkLWRldGFpbC1jYXJldC1idXR0b24iLDMsImNsaWNrIl0sWyJkZXRhaWxCdXR0b24iLCIiXSxbInNoYXBlIiwiYW5n''@;'; put 'put ''bGUtZG91YmxlIiwxLCJkYXRhZ3JpZC1kZXRhaWwtY2FyZXQtaWNvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKE0kKSxybigwLGJjZSwzLDIsImxhYmVsIiwwKSxybigxLF9jZSwyLDIsImNsci1leHBhbmRhYmxlLWFuaW1hdGlvbiIsMSkscm4oMixEaiwxLDEsbnVsbCwy''@;'; put 'put ''KSxybigzLHgxLDEsMCwibmctdGVtcGxhdGUiLG51bGwsMyxacikscm4oNSxyYSwxNiwxMywibmctdGVtcGxhdGUiLG51bGwsNCxaciksZjEoNyxudWxsLDUpKSwyJmgmJihUdCgibmdJZiIsdi5zZWxlY3Rpb24ucm93U2VsZWN0aW9uTW9kZSksdXQoMSksVHQoIm5nSWYiLCF2LnNlbGVjdGlv''@;'; put 'put ''bi5yb3dTZWxlY3Rpb25Nb2RlJiZ2LmV4cGFuZC5leHBhbmRhYmxlKSx1dCgxKSxUdCgibmdJZiIsIXYuc2VsZWN0aW9uLnJvd1NlbGVjdGlvbk1vZGUmJiF2LmV4cGFuZC5leHBhbmRhYmxlKSl9LGRlcGVuZGVuY2llczpbZnEsZ2EsTm8sYXQsWGQsbGMsSWYsVHMsSXMscWgsbTEsRGZlLFpv''@;'; put 'put ''XSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKTt2YXIgcGg9KCgpPT4oZnVuY3Rpb24oZCl7ZFtkLldJRFRIPTBdPSJXSURUSCIsZFtkLkhJRERFTj0xXT0iSElEREVOIn0ocGh8fChwaD17fSkpLHBoKSkoKTtjb25zdCBseWU9T2JqZWN0LmtleXMocGgpLm1hcChkPT5waFtkXSkuZmlsdGVyKGQ9''@;'; put 'put ''PmQ9PT1wYXJzZUludChkLDEwKSk7bGV0IEF2PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLmNvbHVtbnM9W10sdGhpcy5fY2FjaGU9W119Y2FjaGUoKXt0aGlzLl9jYWNoZT10aGlzLmNvbHVtbnMubWFwKGg9Pntjb25zdCB2PU9iamVjdC5hc3NpZ24oe30saC52YWx1ZSk7cmV0''@;'; put 'put ''dXJuIGRlbGV0ZSB2LmNoYW5nZXMsdn0pfWhhc0NhY2hlKCl7cmV0dXJuISF0aGlzLl9jYWNoZS5sZW5ndGh9cmVzZXRUb0xhc3RDYWNoZSgpe3RoaXMuX2NhY2hlLmZvckVhY2goKGgsdik9Pnt0aGlzLmNvbHVtbnNbdl0ubmV4dChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saCks''@;'; put 'put ''e2NoYW5nZXM6bHllfSkpfSksdGhpcy5fY2FjaGU9W119Z2V0IGNvbHVtblN0YXRlcygpe3JldHVybiB0aGlzLmNvbHVtbnMubWFwKGg9PmgudmFsdWUpfWdldCBoYXNIaWRlYWJsZUNvbHVtbnMoKXtyZXR1cm4gdGhpcy5jb2x1bW5TdGF0ZXMuZmlsdGVyKGg9PmguaGlkZWFibGUpLmxlbmd0''@;'; put 'put ''aD4wfWVtaXRTdGF0ZUNoYW5nZUF0KGgsdil7IXRoaXMuY29sdW1uc1toXXx8dGhpcy5lbWl0U3RhdGVDaGFuZ2UodGhpcy5jb2x1bW5zW2hdLHYpfWVtaXRTdGF0ZUNoYW5nZShoLHYpe2gubmV4dChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saC52YWx1ZSksdikpfX1yZXR1cm4g''@;'; put 'put ''ZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxzeWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDKXt0aGlzLmZpbHRlcnM9aCx0aGlzLnNvcnQ9dix0aGlz''@;'; put 'put ''LnBhZ2U9eSx0aGlzLmRlYm91bmNlcj1DLHRoaXMuY2hhbmdlPXRoaXMuZGVib3VuY2VyLmNoYW5nZS5waXBlKG10KCgpPT50aGlzLnN0YXRlKSl9Z2V0IHN0YXRlKCl7Y29uc3QgaD17fTt0aGlzLnBhZ2Uuc2l6ZT4wJiYoaC5wYWdlPXtmcm9tOnRoaXMucGFnZS5maXJzdEl0ZW0sdG86dGhp''@;'; put 'put ''cy5wYWdlLmxhc3RJdGVtLHNpemU6dGhpcy5wYWdlLnNpemUsY3VycmVudDp0aGlzLnBhZ2UuY3VycmVudH0pLHRoaXMuc29ydC5jb21wYXJhdG9yJiYoaC5zb3J0PXRoaXMuc29ydC5jb21wYXJhdG9yIGluc3RhbmNlb2YgdnE/e2J5OnRoaXMuc29ydC5jb21wYXJhdG9yLnByb3AscmV2ZXJz''@;'; put 'put ''ZTp0aGlzLnNvcnQucmV2ZXJzZX06e2J5OnRoaXMuc29ydC5jb21wYXJhdG9yLHJldmVyc2U6dGhpcy5zb3J0LnJldmVyc2V9KTtjb25zdCB2PXRoaXMuZmlsdGVycy5nZXRBY3RpdmVGaWx0ZXJzKCk7aWYodi5sZW5ndGg+MCl7aC5maWx0ZXJzPVtdO2Zvcihjb25zdCB5IG9mIHYpaC5maWx0''@;'; put 'put ''ZXJzLnB1c2goeS5zdGF0ZT95LnN0YXRlOnkpfXJldHVybiBofX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaSh2diksQ2koQXEpLENpKGR3KSxDaShsWikpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9''@;'; put 'put ''KSgpLHV5ZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuem9uZT1oLHRoaXMubGlzdGVuZXJzQWRkZWQ9ITEsdGhpcy5kZXN0cm95JD1uZXcgJGUsdGhpcy5jb25maWc9e2tleUdyaWRSb3dzOiJbcm9sZT1yb3ddOm5vdCguZGF0YWdyaWQtcGxhY2Vob2xkZXIpIixrZXlHcmlk''@;'; put 'put ''Q2VsbHM6Iltyb2xlPWdyaWRjZWxsXTpub3QoLmRhdGFncmlkLWhpZGRlbi1jb2x1bW4pOm5vdCguZGF0YWdyaWQtcGxhY2Vob2xkZXItY29udGVudCksIFtyb2xlPWNvbHVtbmhlYWRlcl06bm90KC5kYXRhZ3JpZC1oaWRkZW4tY29sdW1uKTpub3QoLmRhdGFncmlkLXBsYWNlaG9sZGVyLWNv''@;'; put 'put ''bnRlbnQpLCAuZGF0YWdyaWQtZGV0YWlsLWNhcmV0IixrZXlHcmlkOiJbcm9sZT1ncmlkXSJ9fWdldCBncmlkKCl7dmFyIGg7cmV0dXJuIG51bGw9PT0oaD10aGlzLmhvc3QpfHx2b2lkIDA9PT1oP3ZvaWQgMDpoLnF1ZXJ5U2VsZWN0b3IodGhpcy5jb25maWcua2V5R3JpZCl9Z2V0IHJvd3Mo''@;'; put 'put ''KXt2YXIgaDtyZXR1cm4gbnVsbD09PShoPXRoaXMuaG9zdCl8fHZvaWQgMD09PWg/dm9pZCAwOmgucXVlcnlTZWxlY3RvckFsbCh0aGlzLmNvbmZpZy5rZXlHcmlkUm93cyl9Z2V0IGNlbGxzKCl7dmFyIGg7cmV0dXJuIG51bGw9PT0oaD10aGlzLmhvc3QpfHx2b2lkIDA9PT1oP3ZvaWQgMDpo''@;'; put 'put ''LnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5jb25maWcua2V5R3JpZENlbGxzKX1uZ09uRGVzdHJveSgpe3RoaXMuZGVzdHJveSQubmV4dCgpLHRoaXMuZGVzdHJveSQuY29tcGxldGUoKX1hZGRMaXN0ZW5lcnMoKXt0aGlzLmxpc3RlbmVyc0FkZGVkfHwodGhpcy56b25lLnJ1bk91dHNpZGVBbmd1''@;'; put 'put ''bGFyKCgpPT57dDgodGhpcy5ncmlkLCJtb3VzZWRvd24iKS5waXBlKGo3KHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoaD0+e2lmKDE9PT1oLmJ1dHRvbnMmJiFoLmN0cmxLZXkpe2NvbnN0IHY9dGhpcy5jZWxscz9BcnJheS5mcm9tKHRoaXMuY2VsbHMpLmZpbmQoeT0+eT09PWgudGFyZ2V0''@;'; put 'put ''fHx5PT09aC50YXJnZXQuY2xvc2VzdCh0aGlzLmNvbmZpZy5rZXlHcmlkQ2VsbHMpKTpudWxsO3YmJnRoaXMuc2V0QWN0aXZlQ2VsbCh2KX19KSx0OCh0aGlzLmdyaWQsImtleWRvd24iKS5waXBlKGo3KHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoaD0+e2lmKCghaC50YXJnZXQuY2xhc3NM''@;'; put 'put ''aXN0LmNvbnRhaW5zKCJkcmFnLWhhbmRsZSIpfHwiQXJyb3dMZWZ0IiE9PWguY29kZSYmIkFycm93UmlnaHQiIT09aC5jb2RlKSYmKCJBcnJvd1VwIj09PWguY29kZXx8IkFycm93RG93biI9PT1oLmNvZGV8fCJBcnJvd0xlZnQiPT09aC5jb2RlfHwiQXJyb3dSaWdodCI9PT1oLmNvZGV8fCJF''@;'; put 'put ''bmQiPT09aC5jb2RlfHwiSG9tZSI9PT1oLmNvZGV8fCJQYWdlVXAiPT09aC5jb2RlfHwiUGFnZURvd24iPT09aC5jb2RlKSl7Y29uc3R7eDp2LHl9PXRoaXMuZ2V0TmV4dEl0ZW1Db29yZGluYXRlKGgpLEM9dGhpcy5yb3dzP0FycmF5LmZyb20odGhpcy5yb3dzW3ldLnF1ZXJ5U2VsZWN0b3JB''@;'; put 'put ''bGwodGhpcy5jb25maWcua2V5R3JpZENlbGxzKSlbdl06bnVsbDtDJiZ0aGlzLnNldEFjdGl2ZUNlbGwoQyksaC5wcmV2ZW50RGVmYXVsdCgpfX0pfSksdGhpcy5saXN0ZW5lcnNBZGRlZD0hMCl9aW5pdGlhbGl6ZUtleUdyaWQoaCl7dGhpcy5ob3N0PWgsdGhpcy5hZGRMaXN0ZW5lcnMoKSx0''@;'; put 'put ''aGlzLnJlc2V0S2V5R3JpZCgpfXJlc2V0S2V5R3JpZCgpe3ZhciBoO251bGw9PT0oaD10aGlzLmNlbGxzKXx8dm9pZCAwPT09aHx8aC5mb3JFYWNoKHk9Pnkuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIikpO2NvbnN0IHY9dGhpcy5jZWxscz90aGlzLmNlbGxzWzBdOm51bGw7bnVsbD09''@;'; put 'put ''dnx8di5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpfXNldEFjdGl2ZUNlbGwoaCl7Y29uc3Qgdj10aGlzLmNlbGxzP0FycmF5LmZyb20odGhpcy5jZWxscykuZmluZChJPT4iMCI9PT1JLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKSk6bnVsbDt2JiZ2LnNldEF0dHJpYnV0ZSgidGFiaW5k''@;'; put 'put ''ZXgiLCItMSIpLGguc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIjAiKTtjb25zdCB5PWZ1bmN0aW9uIE1PZShkKXtjb25zdCBnPVsiYVtocmVmXSIsImFyZWFbaHJlZl0iLCJpbnB1dDpub3QoW2Rpc2FibGVkXSkiLCJidXR0b246bm90KFtkaXNhYmxlZF0pIiwic2VsZWN0Om5vdChbZGlzYWJs''@;'; put 'put ''ZWRdKSIsInRleHRhcmVhOm5vdChbZGlzYWJsZWRdKSIsImlmcmFtZSIsIm9iamVjdCIsImVtYmVkIiwiKlt0YWJpbmRleF0iLCIqW2NvbnRlbnRlZGl0YWJsZT10cnVlXSIsIltyb2xlPWJ1dHRvbl06bm90KFtkaXNhYmxlZF0pIl0uam9pbigiLCIpO3JldHVybiBBcnJheS5mcm9tKGQucXVl''@;'; put 'put ''cnlTZWxlY3RvckFsbChnKSl9KGgpOygiY29sdW1uaGVhZGVyIiE9PWguZ2V0QXR0cmlidXRlKCJyb2xlIikmJnlbMF0/eVswXTpoKS5mb2N1cygpfWdldE5leHRJdGVtQ29vcmRpbmF0ZShoKXt2YXIgdjtsZXQgeT10aGlzLmNlbGxzP0FycmF5LmZyb20odGhpcy5jZWxscykuZmluZChPdD0+''@;'; put 'put ''IjAiPT09T3QuZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpKTpudWxsOyJUYWIiPT09aC5jb2RlJiYoeT1kb2N1bWVudC5hY3RpdmVFbGVtZW50KTtjb25zdCBDPXRoaXMucm93cyYmeT9BcnJheS5mcm9tKHRoaXMucm93cykuZmluZChPdD0+T3QuY29udGFpbnMoeSkpOm51bGwsST10aGlzLnJv''@;'; put 'put ''d3M/dGhpcy5yb3dzLmxlbmd0aC0xOjAsWj10aGlzLmNlbGxzP3RoaXMuY2VsbHMubGVuZ3RoL3RoaXMucm93cy5sZW5ndGgtMTowO2xldCB1ZT1DJiZ5P0FycmF5LmZyb20oQy5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuY29uZmlnLmtleUdyaWRDZWxscykpLmluZGV4T2YoeSk6MCxfZT1DJiZ5''@;'; put 'put ''JiZ0aGlzLnJvd3M/QXJyYXkuZnJvbSh0aGlzLnJvd3MpLmluZGV4T2YoQyk6MDtjb25zdCBCZT10aGlzLmhvc3QuZGlyLE5lPSJydGwiPT09QmU/IkFycm93UmlnaHQiOiJBcnJvd0xlZnQiLEtlPSJydGwiPT09QmU/IkFycm93TGVmdCI6IkFycm93UmlnaHQiLHB0PU1hdGguZmxvb3IoKG51''@;'; put 'put ''bGw9PT0odj10aGlzLmhvc3QpfHx2b2lkIDA9PT12P3ZvaWQgMDp2LnF1ZXJ5U2VsZWN0b3IoIi5kYXRhZ3JpZCIpLmNsaWVudEhlaWdodCkvdGhpcy5yb3dzWzBdLmNsaWVudEhlaWdodCktMXx8MDtyZXR1cm4iQXJyb3dVcCI9PT1oLmNvZGUmJjAhPT1fZT9fZS09MToiQXJyb3dEb3duIj09''@;'; put 'put ''PWguY29kZSYmX2U8ST9fZSs9MTpoLmNvZGU9PT1OZSYmMCE9PXVlP3VlLT0xOmguY29kZT09PUtlJiZ1ZTxaP3VlKz0xOiJFbmQiPT09aC5jb2RlPyh1ZT1aLGguY3RybEtleSYmKF9lPUkpKToiSG9tZSI9PT1oLmNvZGU/KHVlPTAsaC5jdHJsS2V5JiYoX2U9MCkpOiJQYWdlVXAiPT09aC5j''@;'; put 'put ''b2RlP19lPV9lLXB0PjA/X2UtcHQ6MDoiUGFnZURvd24iPT09aC5jb2RlJiYoX2U9X2UrcHQ8ST9fZStwdDpJKSx7eDp1ZSx5Ol9lfX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoQ2koX2wpKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rv''@;'; put 'put ''cnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSxHTD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSxaLHVlLF9lLEJlLE5lLEtlLHB0LE90LCR0LGZuLExuLGlyKXt0aGlzLm9yZ2FuaXplcj1oLHRoaXMuaXRlbXM9dix0aGlzLmV4cGFuZGFibGVSb3dzPXksdGhpcy5zZWxlY3Rpb249''@;'; put 'put ''Qyx0aGlzLnJvd0FjdGlvblNlcnZpY2U9SSx0aGlzLnN0YXRlUHJvdmlkZXI9Wix0aGlzLmRpc3BsYXlNb2RlPXVlLHRoaXMucmVuZGVyZXI9X2UsdGhpcy5kZXRhaWxTZXJ2aWNlPUJlLHRoaXMuZG9jdW1lbnQ9S2UsdGhpcy5lbD1wdCx0aGlzLnBhZ2U9T3QsdGhpcy5jb21tb25TdHJpbmdz''@;'; put 'put ''PSR0LHRoaXMuY29sdW1uc1NlcnZpY2U9Zm4sdGhpcy5rZXlOYXZpZ2F0aW9uPUxuLHRoaXMuem9uZT1pcix0aGlzLlNFTEVDVElPTl9UWVBFPVdzLHRoaXMucmVmcmVzaD1uZXcgYXIoITEpLHRoaXMuc2VsZWN0ZWRDaGFuZ2VkPW5ldyBhcighMSksdGhpcy5zaW5nbGVTZWxlY3RlZENoYW5n''@;'; put 'put ''ZWQ9bmV3IGFyKCExKSx0aGlzLmNsckRnU2luZ2xlU2VsZWN0aW9uQXJpYUxhYmVsPXRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLnNpbmdsZVNlbGVjdGlvbkFyaWFMYWJlbCx0aGlzLmNsckRnU2luZ2xlQWN0aW9uYWJsZUFyaWFMYWJlbD10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5zaW5nbGVB''@;'; put 'put ''Y3Rpb25hYmxlQXJpYUxhYmVsLHRoaXMuY2xyRGV0YWlsRXhwYW5kYWJsZUFyaWFMYWJlbD10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5kZXRhaWxFeHBhbmRhYmxlQXJpYUxhYmVsLHRoaXMuY2xyRGdEaXNhYmxlUGFnZUZvY3VzPSExLHRoaXMuX3N1YnNjcmlwdGlvbnM9W10sdGhpcy5zZWxl''@;'; put 'put ''Y3RBbGxJZD0iY2xyLWRnLXNlbGVjdC1hbGwtIitOZSx0aGlzLmRldGFpbFNlcnZpY2UuaWQ9TmV9Z2V0IGxvYWRpbmcoKXtyZXR1cm4gdGhpcy5pdGVtcy5sb2FkaW5nfXNldCBsb2FkaW5nKGgpe3RoaXMuaXRlbXMubG9hZGluZz1ofWRhdGFDaGFuZ2VkKCl7dGhpcy5pdGVtcy5yZWZyZXNo''@;'; put 'put ''KCl9c2V0IHNlbGVjdGVkKGgpe3RoaXMuc2VsZWN0aW9uLnNlbGVjdGlvblR5cGU9aD9Xcy5NdWx0aTpXcy5Ob25lLHRoaXMuc2VsZWN0aW9uLnVwZGF0ZUN1cnJlbnQoaCwhMSl9c2V0IHNpbmdsZVNlbGVjdGVkKGgpe3RoaXMuc2VsZWN0aW9uLnNlbGVjdGlvblR5cGU9V3MuU2luZ2xlLGg/''@;'; put 'put ''dGhpcy5zZWxlY3Rpb24uY3VycmVudFNpbmdsZT1oOnRoaXMuc2VsZWN0aW9uLmN1cnJlbnRTaW5nbGUmJih0aGlzLnNlbGVjdGlvbi5jdXJyZW50U2luZ2xlPW51bGwpfXNldCBjbHJEZ1ByZXNlcnZlU2VsZWN0aW9uKGgpe3RoaXMuc2VsZWN0aW9uLnByZXNlcnZlU2VsZWN0aW9uPWh9c2V0''@;'; put 'put ''IHJvd1NlbGVjdGlvbk1vZGUoaCl7dGhpcy5zZWxlY3Rpb24ucm93U2VsZWN0aW9uTW9kZT1ofWdldCBhbGxTZWxlY3RlZCgpe3JldHVybiB0aGlzLnNlbGVjdGlvbi5pc0FsbFNlbGVjdGVkKCl9c2V0IGFsbFNlbGVjdGVkKGgpe3RoaXMuc2VsZWN0aW9uLnRvZ2dsZUFsbCgpfW5nQWZ0ZXJD''@;'; put 'put ''b250ZW50SW5pdCgpe3RoaXMuaXRlbXMuc21hcnR8fCh0aGlzLml0ZW1zLmFsbD10aGlzLnJvd3MubWFwKGg9PmguaXRlbSkpLHRoaXMuX3N1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnJvd3MuY2hhbmdlcy5zdWJzY3JpYmUoKCk9Pnt0aGlzLml0ZW1zLnNtYXJ0fHwodGhpcy5pdGVtcy5hbGw9''@;'; put 'put ''dGhpcy5yb3dzLm1hcChoPT5oLml0ZW0pKTtmb3IobGV0IGg9dGhpcy5fZGlzcGxheWVkUm93cy5sZW5ndGgtMTtoPj0wO2gtLSl0aGlzLl9kaXNwbGF5ZWRSb3dzLmdldChoKS5kZXN0cm95ZWQmJnRoaXMuX2Rpc3BsYXllZFJvd3MucmVtb3ZlKGgpO2lmKHRoaXMucm93cy5mb3JFYWNoKGg9''@;'; put 'put ''Pnt0aGlzLl9kaXNwbGF5ZWRSb3dzLmluc2VydChoLl92aWV3KX0pLHRoaXMuZGV0YWlsU2VydmljZS5zdGF0ZSYmdGhpcy5kZXRhaWxTZXJ2aWNlLmlzT3Blbil7Y29uc3QgaD10aGlzLnJvd3MuZmluZCgodix5KT0+dGhpcy5pdGVtcy50cmFja0J5KHksdi5pdGVtKT09PXRoaXMuaXRlbXMu''@;'; put 'put ''dHJhY2tCeSh5LHRoaXMuZGV0YWlsU2VydmljZS5zdGF0ZSkpO2g/dGhpcy5kZXRhaWxTZXJ2aWNlLm9wZW4oaC5pdGVtLGguZGV0YWlsQnV0dG9uLm5hdGl2ZUVsZW1lbnQpOnRoaXMuZGV0YWlsU2VydmljZS5jbG9zZSgpfX0pKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLmtleU5hdmlnYXRp''@;'; put 'put ''b24uaW5pdGlhbGl6ZUtleUdyaWQodGhpcy5lbC5uYXRpdmVFbGVtZW50KSx0aGlzLnJlZnJlc2guZW1pdCh0aGlzLnN0YXRlUHJvdmlkZXIuc3RhdGUpLHRoaXMuX3N1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0YXRlUHJvdmlkZXIuY2hhbmdlLnN1YnNjcmliZShoPT50aGlzLnJlZnJlc2gu''@;'; put 'put ''ZW1pdChoKSksdGhpcy5zZWxlY3Rpb24uY2hhbmdlLnN1YnNjcmliZShoPT57dGhpcy5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PVdzLlNpbmdsZT90aGlzLnNpbmdsZVNlbGVjdGVkQ2hhbmdlZC5lbWl0KGgpOnRoaXMuc2VsZWN0aW9uLnNlbGVjdGlvblR5cGU9PT1Xcy5NdWx0aSYmdGhp''@;'; put 'put ''cy5zZWxlY3RlZENoYW5nZWQuZW1pdChoKX0pLHRoaXMucGFnZS5jaGFuZ2Uuc3Vic2NyaWJlKCgpPT57dGhpcy5rZXlOYXZpZ2F0aW9uLnJlc2V0S2V5R3JpZCgpLHRoaXMuY2xyRGdEaXNhYmxlUGFnZUZvY3VzfHx0aGlzLmRhdGFncmlkVGFibGUubmF0aXZlRWxlbWVudC5mb2N1cygpfSks''@;'; put 'put ''b0kodGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zKS5zdWJzY3JpYmUoKCk9Pnt2YXIgaDtyZXR1cm4gbnVsbD09PShoPXRoaXMua2V5TmF2aWdhdGlvbil8fHZvaWQgMD09PWg/dm9pZCAwOmgucmVzZXRLZXlHcmlkKCl9KSx0aGlzLmRpc3BsYXlNb2RlLnZpZXcuc3Vic2NyaWJlKGg9Pntm''@;'; put 'put ''b3IobGV0IHY9dGhpcy5fcHJvamVjdGVkRGlzcGxheUNvbHVtbnMubGVuZ3RoO3Y+MDt2LS0pdGhpcy5fcHJvamVjdGVkRGlzcGxheUNvbHVtbnMuZGV0YWNoKCk7Zm9yKGxldCB2PXRoaXMuX3Byb2plY3RlZENhbGN1bGF0aW9uQ29sdW1ucy5sZW5ndGg7dj4wO3YtLSl0aGlzLl9wcm9qZWN0''@;'; put 'put ''ZWRDYWxjdWxhdGlvbkNvbHVtbnMuZGV0YWNoKCk7Zm9yKGxldCB2PXRoaXMuX2NhbGN1bGF0aW9uUm93cy5sZW5ndGg7dj4wO3YtLSl0aGlzLl9jYWxjdWxhdGlvblJvd3MuZGV0YWNoKCk7Zm9yKGxldCB2PXRoaXMuX2Rpc3BsYXllZFJvd3MubGVuZ3RoO3Y+MDt2LS0pdGhpcy5fZGlzcGxh''@;'; put 'put ''eWVkUm93cy5kZXRhY2goKTtoPT09dncuRElTUExBWT8odGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIiksdGhpcy5jb2x1bW5zLmZvckVhY2godj0+e3RoaXMuX3Byb2plY3RlZERpc3BsYXlDb2x1bW5zLmlu''@;'; put 'put ''c2VydCh2Ll92aWV3KX0pLHRoaXMucm93cy5mb3JFYWNoKHY9Pnt0aGlzLl9kaXNwbGF5ZWRSb3dzLmluc2VydCh2Ll92aWV3KX0pKToodGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIiksdGhpcy5jb2x1bW5zLmZv''@;'; put 'put ''ckVhY2godj0+e3RoaXMuX3Byb2plY3RlZENhbGN1bGF0aW9uQ29sdW1ucy5pbnNlcnQodi5fdmlldyl9KSx0aGlzLnJvd3MuZm9yRWFjaCh2PT57dGhpcy5fY2FsY3VsYXRpb25Sb3dzLmluc2VydCh2Ll92aWV3KX0pKX0pKSx0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlz''@;'; put 'put ''Ll9zdWJzY3JpcHRpb25zLnB1c2godDgodGhpcy5kb2N1bWVudC5ib2R5LCJrZXlkb3duIikuc3Vic2NyaWJlKGg9PnsiU2hpZnQiPT09aC5rZXkmJih0aGlzLnNlbGVjdGlvbi5zaGlmdFByZXNzZWQ9ITApfSksdDgodGhpcy5kb2N1bWVudC5ib2R5LCJrZXl1cCIpLnN1YnNjcmliZShoPT57''@;'; put 'put ''IlNoaWZ0Ij09PWgua2V5JiYodGhpcy5zZWxlY3Rpb24uc2hpZnRQcmVzc2VkPSExKX0pKX0pfW5nT25EZXN0cm95KCl7dGhpcy5fc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSl9cmVzaXplKCl7dGhpcy5vcmdhbml6ZXIucmVzaXplKCl9fXJldHVybiBkLlx1MDI3''@;'; put 'put ''NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHBTKSxLdChndyksS3QoakwpLEt0KGNaKSxLdChOTCksS3Qoc3llKSxLdChVZmUpLEt0KEdhKSxLdChBOCksS3QoeTIpLEt0KGdzKSxLdChibyksS3QoZHcpLEt0KG5zKSxLdChBdiksS3QodXllKSxLdChfbCkpfSxkLlx1MDI3''@;'; put 'put ''NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGF0YWdyaWQiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmKHhvKHksekwsNSkseG8oeSxqZmUsNSkseG8oeSxnUyw0KSx4byh5LG1TLDQpKSwyJmgpe2xldCBDO0hpKEM9JGkoKSkmJih2Lml0ZXJhdG9y''@;'; put 'put ''PUMuZmlyc3QpLEhpKEM9JGkoKSkmJih2LnBsYWNlaG9sZGVyPUMuZmlyc3QpLEhpKEM9JGkoKSkmJih2LmNvbHVtbnM9QyksSGkoQz0kaSgpKSYmKHYucm93cz1DKX19LHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYmKHZvKFNjZSw1LFVpKSx2byhFJCw1LGJvKSx2byh0dyw1LFVp''@;'; put 'put ''KSx2byhNY2UsNSxVaSksdm8oUmosNSxVaSksdm8oQmosNSxVaSkpLDImaCl7bGV0IHk7SGkoeT0kaSgpKSYmKHYuc2Nyb2xsYWJsZUNvbHVtbnM9eS5maXJzdCksSGkoeT0kaSgpKSYmKHYuZGF0YWdyaWRUYWJsZT15LmZpcnN0KSxIaSh5PSRpKCkpJiYodi5fcHJvamVjdGVkRGlzcGxheUNv''@;'; put 'put ''bHVtbnM9eS5maXJzdCksSGkoeT0kaSgpKSYmKHYuX3Byb2plY3RlZENhbGN1bGF0aW9uQ29sdW1ucz15LmZpcnN0KSxIaSh5PSRpKCkpJiYodi5fZGlzcGxheWVkUm93cz15LmZpcnN0KSxIaSh5PSRpKCkpJiYodi5fY2FsY3VsYXRpb25Sb3dzPXkuZmlyc3QpfX0saG9zdFZhcnM6NCxob3N0''@;'; put 'put ''QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkZpKCJkYXRhZ3JpZC1ob3N0IiwhMCkoImRhdGFncmlkLWRldGFpbC1vcGVuIix2LmRldGFpbFNlcnZpY2UuaXNPcGVuKX0saW5wdXRzOntsb2FkaW5nOlsiY2xyRGdMb2FkaW5nIiwibG9hZGluZyJdLHNlbGVjdGVkOlsiY2xyRGdTZWxlY3Rl''@;'; put 'put ''ZCIsInNlbGVjdGVkIl0sc2luZ2xlU2VsZWN0ZWQ6WyJjbHJEZ1NpbmdsZVNlbGVjdGVkIiwic2luZ2xlU2VsZWN0ZWQiXSxjbHJEZ1NpbmdsZVNlbGVjdGlvbkFyaWFMYWJlbDoiY2xyRGdTaW5nbGVTZWxlY3Rpb25BcmlhTGFiZWwiLGNsckRnU2luZ2xlQWN0aW9uYWJsZUFyaWFMYWJlbDoi''@;'; put 'put ''Y2xyRGdTaW5nbGVBY3Rpb25hYmxlQXJpYUxhYmVsIixjbHJEZXRhaWxFeHBhbmRhYmxlQXJpYUxhYmVsOiJjbHJEZXRhaWxFeHBhbmRhYmxlQXJpYUxhYmVsIixjbHJEZ0Rpc2FibGVQYWdlRm9jdXM6ImNsckRnRGlzYWJsZVBhZ2VGb2N1cyIsY2xyRGdQcmVzZXJ2ZVNlbGVjdGlvbjoiY2xy''@;'; put 'put ''RGdQcmVzZXJ2ZVNlbGVjdGlvbiIscm93U2VsZWN0aW9uTW9kZTpbImNsckRnUm93U2VsZWN0aW9uIiwicm93U2VsZWN0aW9uTW9kZSJdfSxvdXRwdXRzOntyZWZyZXNoOiJjbHJEZ1JlZnJlc2giLHNlbGVjdGVkQ2hhbmdlZDoiY2xyRGdTZWxlY3RlZENoYW5nZSIsc2luZ2xlU2VsZWN0ZWRD''@;'; put 'put ''aGFuZ2VkOiJjbHJEZ1NpbmdsZVNlbGVjdGVkQ2hhbmdlIn0sZmVhdHVyZXM6W2hvKFtjWixBcSx2dixkdyxndyxwUyxOTCxqTCxsWixBOCxPYyxzeWUsVmZlLEF2LFVmZSx1eWVdKV0sbmdDb250ZW50U2VsZWN0b3JzOl91LGRlY2xzOjMyLHZhcnM6Nyxjb25zdHM6W1sxLCJkYXRhZ3JpZC1v''@;'; put 'put ''dXRlci13cmFwcGVyIl0sWzEsImRhdGFncmlkLWlubmVyLXdyYXBwZXIiXSxbMSwiZGF0YWdyaWQiXSxbImRhdGFncmlkIiwiIl0sWzEsImRhdGFncmlkLXRhYmxlLXdyYXBwZXIiXSxbInJvbGUiLCJncmlkIiwidGFiaW5kZXgiLCItMSIsMSwiZGF0YWdyaWQtdGFibGUiXSxbImRhdGFncmlk''@;'; put 'put ''VGFibGUiLCIiXSxbInJvbGUiLCJyb3dncm91cCIsMSwiZGF0YWdyaWQtaGVhZGVyIl0sWyJyb2xlIiwicm93IiwxLCJkYXRhZ3JpZC1yb3ciXSxbMSwiZGF0YWdyaWQtcm93LW1hc3RlciIsImRhdGFncmlkLXJvdy1mbGV4Il0sWzEsImRhdGFncmlkLXJvdy1zdGlja3kiXSxbInJvbGUiLCJj''@;'; put 'put ''b2x1bW5oZWFkZXIiLCJjbGFzcyIsImRhdGFncmlkLWNvbHVtbiBkYXRhZ3JpZC1zZWxlY3QgZGF0YWdyaWQtZml4ZWQtY29sdW1uIiwzLCJrZXlkb3duLnNwYWNlIiw0LCJuZ0lmIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwiY2xhc3MiLCJkYXRhZ3JpZC1jb2x1bW4gZGF0YWdyaWQtc2Vs''@;'; put 'put ''ZWN0IGRhdGFncmlkLWZpeGVkLWNvbHVtbiIsNCwibmdJZiJdLFsicm9sZSIsImNvbHVtbmhlYWRlciIsImNsYXNzIiwiZGF0YWdyaWQtY29sdW1uIGRhdGFncmlkLXJvdy1hY3Rpb25zIGRhdGFncmlkLWZpeGVkLWNvbHVtbiIsNCwibmdJZiJdLFsicm9sZSIsImNvbHVtbmhlYWRlciIsImNs''@;'; put 'put ''YXNzIiwiZGF0YWdyaWQtY29sdW1uIGRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQgZGF0YWdyaWQtZml4ZWQtY29sdW1uIiw0LCJuZ0lmIl0sWzEsImRhdGFncmlkLXJvdy1zY3JvbGxhYmxlIl0sWyJwcm9qZWN0ZWREaXNwbGF5Q29sdW1ucyIsIiJdLFsiZGlzcGxheWVkUm93cyIsIiJdLFs0''@;'; put 'put ''LCJuZ0lmIl0sWyJjbGFzcyIsImRhdGFncmlkLXNwaW5uZXIiLDQsIm5nSWYiXSxbMSwiZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFibGUiXSxbMSwiZGF0YWdyaWQtY2FsY3VsYXRpb24taGVhZGVyIl0sWyJwcm9qZWN0ZWRDYWxjdWxhdGlvbkNvbHVtbnMiLCIiXSxbImNhbGN1bGF0aW9uUm93''@;'; put 'put ''cyIsIiJdLFsicm9sZSIsImNvbHVtbmhlYWRlciIsMSwiZGF0YWdyaWQtY29sdW1uIiwiZGF0YWdyaWQtc2VsZWN0IiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIiwzLCJrZXlkb3duLnNwYWNlIl0sWzEsImNsci1jaGVja2JveC13cmFwcGVyIl0sWyJ0eXBlIiwiY2hlY2tib3giLCJ0YWJpbmRl''@;'; put 'put ''eCIsIi0xIiwzLCJpZCIsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIl0sWzEsImNsci1jb250cm9sLWxhYmVsIiwiY2xyLWNvbC1udWxsIiwzLCJmb3IiXSxbMSwiY2xyLXNyLW9ubHkiXSxbMSwiZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvciJdLFsicm9sZSIsImNvbHVtbmhlYWRlciIsMSwi''@;'; put 'put ''ZGF0YWdyaWQtY29sdW1uIiwiZGF0YWdyaWQtc2VsZWN0IiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwxLCJkYXRhZ3JpZC1jb2x1bW4iLCJkYXRhZ3JpZC1yb3ctYWN0aW9ucyIsImRhdGFncmlkLWZpeGVkLWNvbHVtbiJdLFsicm9sZSIsImNvbHVt''@;'; put 'put ''bmhlYWRlciIsMSwiZGF0YWdyaWQtY29sdW1uIiwiZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCIsImRhdGFncmlkLWZpeGVkLWNvbHVtbiJdLFsxLCJkYXRhZ3JpZC1zcGlubmVyIl0sWyJjbHJNZWRpdW0iLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihLMChUY2UpLE5pKDAp''@;'; put 'put ''LG50KDEsImRpdiIsMCkoMiwiZGl2IiwxKSgzLCJkaXYiLDIsMykoNSwiZGl2Iiw0KSg2LCJkaXYiLDUsNikoOCwiZGl2Iiw3KSg5LCJkaXYiLDgpKDEwLCJkaXYiLDkpKDExLCJkaXYiLDEwKSxybigxMixTTCw3LDUsImRpdiIsMTEpLHJuKDEzLFBqLDIsMSwiZGl2IiwxMikscm4oMTQsRWNl''@;'; put 'put ''LDIsMSwiZGl2IiwxMykscm4oMTUseCQsMiwxLCJkaXYiLDE0KSxvdCgpLG50KDE2LCJkaXYiLDE1KSxmMSgxNyxudWxsLDE2KSxvdCgpKCkoKSgpLGYxKDE5LG51bGwsMTcpLE5pKDIxLDEpLHJuKDIyLHhjZSwxLDAsImNsci1kZy1wbGFjZWhvbGRlciIsMTgpLG90KCkoKSgpLE5pKDIzLDIp''@;'; put 'put ''LHJuKDI0LGM4LDMsMCwiZGl2IiwxOSksb3QoKSxOaSgyNSwzKSxvdCgpLG50KDI2LCJkaXYiLDIwKSgyNywiZGl2IiwyMSksZjEoMjgsbnVsbCwyMiksb3QoKSxmMSgzMCxudWxsLDIzKSxvdCgpKSwyJmgmJih1dCgzKSxHaSgiYXJpYS1oaWRkZW4iLCEhdi5kZXRhaWxTZXJ2aWNlLmlzT3Bl''@;'; put 'put ''bnx8bnVsbCksdXQoOSksVHQoIm5nSWYiLHYuc2VsZWN0aW9uLnNlbGVjdGlvblR5cGU9PT12LlNFTEVDVElPTl9UWVBFLk11bHRpKSx1dCgxKSxUdCgibmdJZiIsdi5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PXYuU0VMRUNUSU9OX1RZUEUuU2luZ2xlKSx1dCgxKSxUdCgibmdJZiIsdi5y''@;'; put 'put ''b3dBY3Rpb25TZXJ2aWNlLmhhc0FjdGlvbmFibGVSb3cpLHV0KDEpLFR0KCJuZ0lmIix2LmV4cGFuZGFibGVSb3dzLmhhc0V4cGFuZGFibGVSb3d8fHYuZGV0YWlsU2VydmljZS5lbmFibGVkKSx1dCg3KSxUdCgibmdJZiIsIXYucGxhY2Vob2xkZXIpLHV0KDIpLFR0KCJuZ0lmIix2LmxvYWRp''@;'; put 'put ''bmcpKX0sZGVwZW5kZW5jaWVzOltqZmUsZ2EsTm8sSWYsVHMsSXMsYXRdLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLFFmZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuY29sdW1uc1NlcnZpY2U9aCx0aGlzLmFsbFNlbGVjdGVkPW5ldyBhcn1nZXQgY2xyQWxsU2VsZWN0ZWQo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5hbGxTZWxlY3RlZC5hc09ic2VydmFibGUoKX1oaWRlYWJsZUNvbHVtbnMoKXtyZXR1cm4gdGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zLmZpbHRlcihoPT5oLnZhbHVlLmhpZGVhYmxlKX1nZXQgYWxsSGlkZWFibGVzVmlzaWJsZSgpe3JldHVybiAwPT09dGhpcy5o''@;'; put 'put ''aWRlYWJsZUNvbHVtbnMoKS5maWx0ZXIoaD0+aC52YWx1ZS5oaWRkZW4pLmxlbmd0aH1zZWxlY3RBbGwoKXt0aGlzLmhpZGVhYmxlQ29sdW1ucygpLmZvckVhY2goaD0+dGhpcy5jb2x1bW5zU2VydmljZS5lbWl0U3RhdGVDaGFuZ2UoaCx7aGlkZGVuOiExLGNoYW5nZXM6W3BoLkhJRERFTl19''@;'; put 'put ''KSksdGhpcy5hbGxTZWxlY3RlZC5uZXh0KCEwKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoQXYpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWRnLWNvbHVtbi10b2dnbGUtYnV0dG9uIl1dLG91dHB1dHM6e2Ns''@;'; put 'put ''ckFsbFNlbGVjdGVkOiJjbHJBbGxTZWxlY3RlZCJ9LG5nQ29udGVudFNlbGVjdG9yczpuYSxkZWNsczoyLHZhcnM6MSxjb25zdHM6W1sidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWxpbmsiLCJzd2l0Y2gtYnV0dG9uIiwzLCJkaXNhYmxlZCIsImNsaWNrIl1dLHRlbXBs''@;'; put 'put ''YXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoSzAoKSxudCgwLCJidXR0b24iLDApLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5zZWxlY3RBbGwoKX0pLE5pKDEpLG90KCkpLDImaCYmVHQoImRpc2FibGVkIix2LmFsbEhpZGVhYmxlc1Zpc2libGUpfSxlbmNhcHN1bGF0aW9uOjJ9KSxk''@;'; put 'put ''fSkoKSxjeWU9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1kZy1jb2x1bW4tdG9nZ2xlLXRpdGxlIl1dLG5nQ29udGVudFNlbGVjdG9yczpuYSxkZWNs''@;'; put 'put ''czoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKCksTmkoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxKZmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLl9pdGVtcz1ofXNldCB0cmFja0J5KGgpe3RoaXMuX2l0ZW1zJiYodGhpcy5faXRlbXMu''@;'; put 'put ''dHJhY2tCeT1oKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoZ3csOCkpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJuZ0ZvclRyYWNrQnkiLCIiXV0saW5wdXRzOnt0cmFja0J5OlsibmdGb3JUcmFja0J5IiwidHJh''@;'; put 'put ''Y2tCeSJdfX0pLGR9KSgpLFhmZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSxaLHVlKXt0aGlzLmNvbW1vblN0cmluZ3M9aCx0aGlzLmNvbHVtbnNTZXJ2aWNlPXYsdGhpcy5jb2x1bW5Td2l0Y2hJZD15LHRoaXMucGxhdGZvcm1JZD1DLHRoaXMuem9uZT1JLHRoaXMucG9w''@;'; put 'put ''b3ZlcklkPVosdGhpcy5wb3BvdmVyVG9nZ2xlU2VydmljZT11ZSx0aGlzLnNtYXJ0UG9zaXRpb249e2F4aXM6JDEuVkVSVElDQUwsc2lkZTpsLkJFRk9SRSxhbmNob3I6X28uU1RBUlQsY29udGVudDpfby5TVEFSVH0sdGhpcy5zdWJzY3JpcHRpb249dWUub3BlbkNoYW5nZS5zdWJzY3JpYmUo''@;'; put 'put ''X2U9PnRoaXMub3BlblN0YXRlPV9lKX1nZXQgYWxsQ29sdW1uc1Zpc2libGUoKXtyZXR1cm4gdGhpcy5fYWxsQ29sdW1uc1Zpc2libGV9c2V0IGFsbENvbHVtbnNWaXNpYmxlKGgpe3RoaXMuX2FsbENvbHVtbnNWaXNpYmxlPWh9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbi51bnN1''@;'; put 'put ''YnNjcmliZSgpfWdldCBoaWRlYWJsZUNvbHVtblN0YXRlcygpe3JldHVybiB0aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnMuZmlsdGVyKHY9PnYudmFsdWUuaGlkZWFibGUpLm1hcCh2PT52LnZhbHVlKX1nZXQgaGFzT25seU9uZVZpc2libGVDb2x1bW4oKXtyZXR1cm4gdGhpcy5jb2x1bW5z''@;'; put 'put ''U2VydmljZS5jb2x1bW5zLmxlbmd0aC10aGlzLmhpZGVhYmxlQ29sdW1uU3RhdGVzLmxlbmd0aD09MCYmMT09PXRoaXMuaGlkZWFibGVDb2x1bW5TdGF0ZXMuZmlsdGVyKHY9PiF2LmhpZGRlbikubGVuZ3RofXRvZ2dsZUNvbHVtblN0YXRlKGgsdil7Y29uc3QgeT10aGlzLmNvbHVtbnNTZXJ2''@;'; put 'put ''aWNlLmNvbHVtbnMuZmlsdGVyKEM9PkMudmFsdWU9PT1oKVswXTt0aGlzLmNvbHVtbnNTZXJ2aWNlLmVtaXRTdGF0ZUNoYW5nZSh5LHtoaWRkZW46dixjaGFuZ2VzOltwaC5ISURERU5dfSl9dG9nZ2xlU3dpdGNoUGFuZWwoKXt0aGlzLm9wZW5TdGF0ZT0hdGhpcy5vcGVuU3RhdGV9YWxsQ29s''@;'; put 'put ''dW1uc1NlbGVjdGVkKCl7dGhpcy5hbGxTZWxlY3RlZEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpfXRyYWNrQnlGbihoKXtyZXR1cm4gaH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QobnMpLEt0KEF2KSxLdCh5MiksS3QoTDIpLEt0KF9s''@;'; put 'put ''KSxLdCh5MiksS3QoenMpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWRnLWNvbHVtbi10b2dnbGUiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmKHhvKHksY3llLDUpLHhvKHksUWZlLDUpKSwyJmgpe2xldCBDO0hpKEM9JGkoKSkm''@;'; put 'put ''Jih2LmN1c3RvbVRvZ2dsZVRpdGxlPUMuZmlyc3QpLEhpKEM9JGkoKSkmJih2LmN1c3RvbVRvZ2dsZUJ1dHRvbj1DLmZpcnN0KX19LHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYmdm8oRmosNSxibyksMiZoKXtsZXQgeTtIaSh5PSRpKCkpJiYodi5hbGxTZWxlY3RlZEVsZW1lbnQ9''@;'; put 'put ''eS5maXJzdCl9fSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmRmkoImNvbHVtbi1zd2l0Y2gtd3JhcHBlciIsITApKCJhY3RpdmUiLHYub3BlblN0YXRlKX0sZmVhdHVyZXM6W2hvKFtPYyxoOCxHcyx6c10pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6T2NlLGRlY2xz''@;'; put 'put ''OjUsdmFyczo5LGNvbnN0czpbWyJyb2xlIiwiYnV0dG9uIiwidHlwZSIsImJ1dHRvbiIsImNsclBvcG92ZXJBbmNob3IiLCIiLCJjbHJQb3BvdmVyT3BlbkNsb3NlQnV0dG9uIiwiIiwxLCJidG4iLCJidG4tc20iLCJidG4tbGluayIsImNvbHVtbi10b2dnbGUtLWFjdGlvbiJdLFsic2hhcGUi''@;'; put 'put ''LCJ2aWV3LWNvbHVtbnMiLCJhcmlhLWhpZGRlbiIsInRydWUiXSxbMSwiY2xyLXNyLW9ubHkiXSxbImNsYXNzIiwiY29sdW1uLXN3aXRjaCIsInJvbGUiLCJkaWFsb2ciLCJjbHJGb2N1c1RyYXAiLCIiLDMsImlkIiw0LCJjbHJQb3BvdmVyQ29udGVudCIsImNsclBvcG92ZXJDb250ZW50QXQi''@;'; put 'put ''LCJjbHJQb3BvdmVyQ29udGVudE91dHNpZGVDbGlja1RvQ2xvc2UiLCJjbHJQb3BvdmVyQ29udGVudFNjcm9sbFRvQ2xvc2UiXSxbInJvbGUiLCJkaWFsb2ciLCJjbHJGb2N1c1RyYXAiLCIiLDEsImNvbHVtbi1zd2l0Y2giLDMsImlkIl0sWzEsInN3aXRjaC1oZWFkZXIiXSxbInRhYmluZGV4''@;'; put 'put ''IiwiLTEiLDEsImNsci1zci1vbmx5Il0sWyJhbGxTZWxlY3RlZCIsIiJdLFs0LCJuZ0lmIl0sWyJjbHJQb3BvdmVyQ2xvc2VCdXR0b24iLCIiLCJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tbGluayIsInRvZ2dsZS1zd2l0Y2gtY2xvc2UtYnV0dG9uIl0sWyJzaGFwZSIs''@;'; put 'put ''IndpbmRvdy1jbG9zZSIsImFyaWEtaGlkZGVuIiwidHJ1ZSJdLFsxLCJzd2l0Y2gtY29udGVudCIsImxpc3QtdW5zdHlsZWQiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIiwibmdGb3JUcmFja0J5Il0sWzEsInN3aXRjaC1mb290ZXIiXSxbMywiY2xyQWxsU2VsZWN0ZWQiLDQsIm5nSWYiXSxbImNs''@;'; put 'put ''ckNoZWNrYm94IiwiIiwidHlwZSIsImNoZWNrYm94IiwzLCJkaXNhYmxlZCIsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIl0sWzMsIm5nVGVtcGxhdGVPdXRsZXQiXSxbMywiY2xyQWxsU2VsZWN0ZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihLMChuUyksbnQoMCwiYnV0dG9u''@;'; put 'put ''IiwwKSxDcigxLCJjZHMtaWNvbiIsMSksbnQoMiwic3BhbiIsMiksWXQoMyksb3QoKSgpLHJuKDQsTGNlLDE2LDEwLCJkaXYiLDMpKSwyJmgmJihHaSgiYXJpYS1jb250cm9scyIsdi5wb3BvdmVySWQpKCJhcmlhLW93bnMiLHYucG9wb3ZlcklkKSgiYXJpYS1leHBhbmRlZCIsdi5vcGVuU3Rh''@;'; put 'put ''dGUpLHV0KDEpLEdpKCJ0aXRsZSIsdi5jb21tb25TdHJpbmdzLmtleXMucGlja0NvbHVtbnMpLHV0KDIpLGppKHYuY29tbW9uU3RyaW5ncy5rZXlzLnBpY2tDb2x1bW5zKSx1dCgxKSxUdCgiY2xyUG9wb3ZlckNvbnRlbnQiLHYub3BlblN0YXRlKSgiY2xyUG9wb3ZlckNvbnRlbnRBdCIsdi5z''@;'; put 'put ''bWFydFBvc2l0aW9uKSgiY2xyUG9wb3ZlckNvbnRlbnRPdXRzaWRlQ2xpY2tUb0Nsb3NlIiwhMCkoImNsclBvcG92ZXJDb250ZW50U2Nyb2xsVG9DbG9zZSIsITApKX0sZGVwZW5kZW5jaWVzOltPaSxRZmUsdXcsY3csWm8sZGwsaHcsTm8scnEseHMsSmZlLElmLFJvLFRzLElzLGF0LFhkXSxl''@;'; put 'put ''bmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxoeWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmV4cGFuZGFibGVSb3dzQ291bnQ9aCx0aGlzLmV4cGFuZGFibGVSb3dzQ291bnQmJnRoaXMuZXhwYW5kYWJsZVJvd3NDb3VudC5yZWdpc3RlcigpfW5nT25EZXN0cm95KCl7dGhpcy5l''@;'; put 'put ''eHBhbmRhYmxlUm93c0NvdW50JiZ0aGlzLmV4cGFuZGFibGVSb3dzQ291bnQudW5yZWdpc3RlcigpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChqTCw4KSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNscklmRXhw''@;'; put 'put ''YW5kZWQiLCIiXV19KSxkfSkoKSxMT2U9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3RleHRDb250ZW50Q2hhbmdlPW5ldyAkZX1nZXQgdGV4dENvbnRlbnRDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fdGV4dENvbnRlbnRDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Z2V0IHRleHRDb250''@;'; put 'put ''ZW50KCl7cmV0dXJuIHRoaXMuX3RleHRDb250ZW50fXNldCB0ZXh0Q29udGVudChoKXt0aGlzLl90ZXh0Q29udGVudD1oLHRoaXMuX3RleHRDb250ZW50Q2hhbmdlLm5leHQoaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9''@;'; put 'put ''QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLE9PZT0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHtpbXBvcnRzOltbYmFdXX0p''@;'; put 'put ''LGR9KSgpLGZaPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5zZWxlY3Rpb249aCx0aGlzLmRldGFpbFNlcnZpY2U9dix0aGlzLmNvbHVtbnNTZXJ2aWNlPXksdGhpcy5jb21tb25TdHJpbmdzPUMsdGhpcy5TRUxFQ1RJT05fVFlQRT1Xc31nZXQgaGFzSGlkZWFibGVD''@;'; put 'put ''b2x1bW5zKCl7cmV0dXJuIHRoaXMuY29sdW1uc1NlcnZpY2UuaGFzSGlkZWFibGVDb2x1bW5zfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChjWiksS3QoQTgpLEt0KEF2KSxLdChucykpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9y''@;'; put 'put ''czpbWyJjbHItZGctZm9vdGVyIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtpZigxJmgmJnhvKHksWGZlLDUpLDImaCl7bGV0IEM7SGkoQz0kaSgpKSYmKHYudG9nZ2xlPUMuZmlyc3QpfX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkZpKCJk''@;'; put 'put ''YXRhZ3JpZC1mb290ZXIiLCEwKX0sbmdDb250ZW50U2VsZWN0b3JzOkhjZSxkZWNsczozLHZhcnM6Mixjb25zdHM6W1s0LCJuZ0lmIl0sWzEsImNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQiXSxbMSwiZGF0YWdyaWQtZm9vdGVyLXNlbGVjdCJdLFsiY2xyQ2hlY2tib3giLCIiLCJ0eXBlIiwi''@;'; put 'put ''Y2hlY2tib3giLCJjaGVja2VkIiwiY2hlY2tlZCIsImRpc2FibGVkIiwiIl0sWzEsImNsci1zci1vbmx5Il0sWzEsImRhdGFncmlkLWZvb3Rlci1kZXNjcmlwdGlvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKEkkKSxybigwLEJjZSw4LDIsIm5nLWNvbnRhaW5lciIsMCks''@;'; put 'put ''cm4oMSxGY2UsNSwxLCJuZy1jb250YWluZXIiLDApLE5pKDIpKSwyJmgmJihUdCgibmdJZiIsdi5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PXYuU0VMRUNUSU9OX1RZUEUuTXVsdGkmJnYuc2VsZWN0aW9uLmN1cnJlbnQubGVuZ3RoPjApLHV0KDEpLFR0KCJuZ0lmIiwhdi5kZXRhaWxTZXJ2''@;'; put 'put ''aWNlLmlzT3BlbikpfSxkZXBlbmRlbmNpZXM6W09pLFhmZSxObyxSbyxhdF0sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCk7Y29uc3QgS2ZlPW5ldyB6ZSgiQ09MVU1OX1NUQVRFIiksQk9lPXtwcm92aWRlOktmZSx1c2VGYWN0b3J5OmZ1bmN0aW9uIFJPZSgpe3JldHVybiBuZXcgZnMoe2NoYW5n''@;'; put 'put ''ZXM6W119KX19O2xldCAkZmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLnBhZ2U9aH1uZ09uSW5pdCgpeyghdGhpcy5wYWdlU2l6ZU9wdGlvbnN8fDA9PT10aGlzLnBhZ2VTaXplT3B0aW9ucy5sZW5ndGgpJiYodGhpcy5wYWdlU2l6ZU9wdGlvbnM9W3RoaXMucGFnZS5zaXpl''@;'; put 'put ''XSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGR3KSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1kZy1wYWdlLXNpemUiXV0saW5wdXRzOntwYWdlU2l6ZU9wdGlvbnM6WyJjbHJQYWdlU2l6ZU9wdGlvbnMiLCJw''@;'; put 'put ''YWdlU2l6ZU9wdGlvbnMiXX0sbmdDb250ZW50U2VsZWN0b3JzOm5hLGRlY2xzOjQsdmFyczo0LGNvbnN0czpbWzEsImNsci1zZWxlY3Qtd3JhcHBlciJdLFszLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSJdLFszLCJuZ1ZhbHVlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywibmdWYWx1ZSJd''@;'; put 'put ''XSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKCksTmkoMCksbnQoMSwiZGl2IiwwKSgyLCJzZWxlY3QiLDEpLEduKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5wYWdlLnNpemU9Q30pLHJuKDMsRCQsMiwyLCJvcHRpb24iLDIpLG90KCkoKSksMiZoJiYodXQo''@;'; put 'put ''MiksRmkoImNsci1wYWdlLXNpemUtc2VsZWN0IiwhMCksVHQoIm5nTW9kZWwiLHYucGFnZS5zaXplKSx1dCgxKSxUdCgibmdGb3JPZiIsdi5wYWdlU2l6ZU9wdGlvbnMpKX0sZGVwZW5kZW5jaWVzOltPZixUcyxJcyx4cywkMyxxM10sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksaFo9KCgpPT57''@;'; put 'put ''Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5wYWdlPWgsdGhpcy5jb21tb25TdHJpbmdzPXYsdGhpcy5kZXRhaWxTZXJ2aWNlPXksdGhpcy5jdXJyZW50Q2hhbmdlZD1uZXcgYXIoITEpLHRoaXMucGFnZS5hY3RpdmF0ZWQ9ITB9bmdPbkluaXQoKXt0aGlzLnBhZ2Uuc2l6ZXx8KHRo''@;'; put 'put ''aXMucGFnZS5zaXplPTEwKSx0aGlzLl9wYWdlU3Vic2NyaXB0aW9uPXRoaXMucGFnZS5jaGFuZ2Uuc3Vic2NyaWJlKGg9PnRoaXMuY3VycmVudENoYW5nZWQuZW1pdChoKSl9bmdPbkRlc3Ryb3koKXt0aGlzLnBhZ2UucmVzZXRQYWdlU2l6ZSghMCksdGhpcy5fcGFnZVN1YnNjcmlwdGlvbiYm''@;'; put 'put ''dGhpcy5fcGFnZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfWdldCBwYWdlU2l6ZSgpe3JldHVybiB0aGlzLnBhZ2Uuc2l6ZX1zZXQgcGFnZVNpemUoaCl7Im51bWJlciI9PXR5cGVvZiBoJiYodGhpcy5wYWdlLnNpemU9aCl9Z2V0IHRvdGFsSXRlbXMoKXtyZXR1cm4gdGhpcy5wYWdlLnRv''@;'; put 'put ''dGFsSXRlbXN9c2V0IHRvdGFsSXRlbXMoaCl7Im51bWJlciI9PXR5cGVvZiBoJiYodGhpcy5wYWdlLnRvdGFsSXRlbXM9aCl9Z2V0IGxhc3RQYWdlKCl7cmV0dXJuIHRoaXMucGFnZS5sYXN0fXNldCBsYXN0UGFnZShoKXsibnVtYmVyIj09dHlwZW9mIGgmJih0aGlzLnBhZ2UubGFzdD1oKX1n''@;'; put 'put ''ZXQgY3VycmVudFBhZ2UoKXtyZXR1cm4gdGhpcy5wYWdlLmN1cnJlbnR9c2V0IGN1cnJlbnRQYWdlKGgpeyJudW1iZXIiPT10eXBlb2YgaCYmKHRoaXMucGFnZS5jdXJyZW50PWgpfXByZXZpb3VzKCl7dGhpcy5wYWdlLnByZXZpb3VzKCl9bmV4dCgpe3RoaXMucGFnZS5uZXh0KCl9Z2V0IGZp''@;'; put 'put ''cnN0SXRlbSgpe3JldHVybiB0aGlzLnBhZ2UuZmlyc3RJdGVtfWdldCBsYXN0SXRlbSgpe3JldHVybiB0aGlzLnBhZ2UubGFzdEl0ZW19Z2V0IG1pZGRsZVBhZ2VzKCl7Y29uc3QgaD1bXTtyZXR1cm4gdGhpcy5wYWdlLmN1cnJlbnQ+MSYmaC5wdXNoKHRoaXMucGFnZS5jdXJyZW50LTEpLGgu''@;'; put 'put ''cHVzaCh0aGlzLnBhZ2UuY3VycmVudCksdGhpcy5wYWdlLmN1cnJlbnQ8dGhpcy5wYWdlLmxhc3QmJmgucHVzaCh0aGlzLnBhZ2UuY3VycmVudCsxKSxofXVwZGF0ZUN1cnJlbnRQYWdlKGgpe2NvbnN0IHY9cGFyc2VJbnQoaC50YXJnZXQudmFsdWUsMTApO2lzTmFOKHYpfHwodGhpcy5wYWdl''@;'; put 'put ''LmN1cnJlbnQ9djwxPzE6dj50aGlzLnBhZ2UubGFzdD90aGlzLnBhZ2UubGFzdDp2KSx0aGlzLmN1cnJlbnRQYWdlSW5wdXRSZWYubmF0aXZlRWxlbWVudC52YWx1ZT10aGlzLnBhZ2UuY3VycmVudH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3Qo''@;'; put 'put ''ZHcpLEt0KG5zKSxLdChBOCkpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGctcGFnaW5hdGlvbiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZ4byh5LCRmZSw1KSwyJmgpe2xldCBDO0hpKEM9JGkoKSkmJih2Ll9wYWdlU2l6ZUNv''@;'; put 'put ''bXBvbmVudD1DLmZpcnN0KX19LHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYmdm8oTmNlLDUpLDImaCl7bGV0IHk7SGkoeT0kaSgpKSYmKHYuY3VycmVudFBhZ2VJbnB1dFJlZj15LmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZGaSgi''@;'; put 'put ''cGFnaW5hdGlvbiIsITApfSxpbnB1dHM6e2Rpc2FibGVDdXJyZW50UGFnZUlucHV0OlsiY2xyRGdQYWdlSW5wdXREaXNhYmxlZCIsImRpc2FibGVDdXJyZW50UGFnZUlucHV0Il0scGFnZVNpemU6WyJjbHJEZ1BhZ2VTaXplIiwicGFnZVNpemUiXSx0b3RhbEl0ZW1zOlsiY2xyRGdUb3RhbEl0''@;'; put 'put ''ZW1zIiwidG90YWxJdGVtcyJdLGxhc3RQYWdlOlsiY2xyRGdMYXN0UGFnZSIsImxhc3RQYWdlIl0sY3VycmVudFBhZ2U6WyJjbHJEZ1BhZ2UiLCJjdXJyZW50UGFnZSJdfSxvdXRwdXRzOntjdXJyZW50Q2hhbmdlZDoiY2xyRGdQYWdlQ2hhbmdlIn0sbmdDb250ZW50U2VsZWN0b3JzOmtwLGRl''@;'; put 'put ''Y2xzOjIsdmFyczoyLGNvbnN0czpbWzQsIm5nSWYiXSxbImNsYXNzIiwicGFnaW5hdGlvbi1zaXplIiw0LCJuZ0lmIl0sWzEsInBhZ2luYXRpb24tZGVzY3JpcHRpb24iXSxbImNsYXNzIiwicGFnaW5hdGlvbi1saXN0Iiw0LCJuZ0lmIl0sWzEsInBhZ2luYXRpb24tc2l6ZSJdLFsxLCJwYWdp''@;'; put 'put ''bmF0aW9uLWxpc3QiXSxbInR5cGUiLCJidXR0b24iLDEsInBhZ2luYXRpb24tZmlyc3QiLDMsImRpc2FibGVkIiwiY2xpY2siXSxbMSwiY2xyLXNyLW9ubHkiXSxbInNoYXBlIiwic3RlcC1mb3J3YXJkLTIiLCJkaXJlY3Rpb24iLCJkb3duIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJwYWdpbmF0''@;'; put 'put ''aW9uLXByZXZpb3VzIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzaGFwZSIsImFuZ2xlIiwiZGlyZWN0aW9uIiwibGVmdCJdLFsidHlwZSIsInRleHQiLCJjbGFzcyIsInBhZ2luYXRpb24tY3VycmVudCBjbHItaW5wdXQiLDMsInNpemUiLCJ2YWx1ZSIsImtleWRvd24uZW50ZXIiLCJibHVy''@;'; put 'put ''Iiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbInJlYWRPbmx5IiwiIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJwYWdpbmF0aW9uLW5leHQiLDMsImRpc2FibGVkIiwiY2xpY2siXSxbInNoYXBlIiwiYW5nbGUiLCJkaXJlY3Rpb24iLCJyaWdodCJdLFsidHlwZSIsImJ1dHRvbiIsMSwicGFnaW5hdGlv''@;'; put 'put ''bi1sYXN0IiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzaGFwZSIsInN0ZXAtZm9yd2FyZC0yIiwiZGlyZWN0aW9uIiwidXAiXSxbInR5cGUiLCJ0ZXh0IiwxLCJwYWdpbmF0aW9uLWN1cnJlbnQiLCJjbHItaW5wdXQiLDMsInNpemUiLCJ2YWx1ZSIsImtleWRvd24uZW50ZXIiLCJibHVyIl0s''@;'; put 'put ''WyJjdXJyZW50UGFnZUlucHV0IiwiIl0sWzEsInBhZ2luYXRpb24tZGVzY3JpcHRpb24tY29tcGFjdCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKHIzKSxybigwLFpjZSw1LDIsIm5nLWNvbnRhaW5lciIsMCkscm4oMSxPJCwxNCwxMCwibmctY29udGFpbmVyIiwwKSksMiZo''@;'; put 'put ''JiYoVHQoIm5nSWYiLCF2LmRldGFpbFNlcnZpY2UuaXNPcGVuKSx1dCgxKSxUdCgibmdJZiIsdi5kZXRhaWxTZXJ2aWNlLmlzT3BlbikpfSxkZXBlbmRlbmNpZXM6W05vLFpvXSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKTtjb25zdCBXTD0iZGF0YWdyaWQtZml4ZWQtd2lkdGgiLGJxPSJkYXRh''@;'; put 'put ''Z3JpZC1oaWRkZW4tY29sdW1uIjtsZXQgdlM9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5lbD1oLHRoaXMucmVuZGVyZXI9dix0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goeS5maWx0ZXJSZW5kZXJTdGVwcyhoNC5DTEVBUl9XSURU''@;'; put 'put ''SFMpLnN1YnNjcmliZSgoKT0+dGhpcy5jbGVhcldpZHRoKCkpKX1zZXQgY29sdW1uU3RhdGUoaCl7dGhpcy5zdGF0ZVN1YnNjcmlwdGlvbiYmdGhpcy5zdGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMucnVuQWxsQ2hhbmdlcz1seWUsdGhpcy5zdGF0ZVN1YnNjcmlwdGlvbj1o''@;'; put 'put ''LnN1YnNjcmliZSh2PT50aGlzLnN0YXRlQ2hhbmdlcyh2KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJlKCkpLHRoaXMuc3RhdGVTdWJzY3JpcHRpb24mJnRoaXMuc3RhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1zdGF0ZUNo''@;'; put 'put ''YW5nZXMoaCl7dGhpcy5ydW5BbGxDaGFuZ2VzJiYoaC5jaGFuZ2VzPXRoaXMucnVuQWxsQ2hhbmdlcyxkZWxldGUgdGhpcy5ydW5BbGxDaGFuZ2VzKSxoLmNoYW5nZXMmJmguY2hhbmdlcy5sZW5ndGgmJmguY2hhbmdlcy5mb3JFYWNoKHY9Pntzd2l0Y2godil7Y2FzZSBwaC5XSURUSDp0aGlz''@;'; put 'put ''LnNldFdpZHRoKGgpO2JyZWFrO2Nhc2UgcGguSElEREVOOnRoaXMuc2V0SGlkZGVuKGgpfX0pfWNsZWFyV2lkdGgoKXt0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCxXTCksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQs''@;'; put 'put ''IndpZHRoIixudWxsKX1zZXRXaWR0aChoKXtoLnN0cmljdFdpZHRoP3RoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LFdMKTp0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCxXTCksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0''@;'; put 'put ''aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIndpZHRoIixoLndpZHRoKyJweCIpfXNldEhpZGRlbihoKXtoLmhpZGRlbj90aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCxicSk6dGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsYnEp''@;'; put 'put ''fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChibyksS3QoR2EpLEt0KHBTKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1kZy1jZWxsIl1dfSksZH0pKCksQVM9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYs''@;'; put 'put ''eSxDLEksWix1ZSl7dGhpcy5lbD1oLHRoaXMucmVuZGVyZXI9dix0aGlzLm9yZ2FuaXplcj15LHRoaXMuZG9tQWRhcHRlcj1DLHRoaXMuY29sdW1uUmVzaXplclNlcnZpY2U9SSx0aGlzLmNvbHVtbnNTZXJ2aWNlPVosdGhpcy5jb2x1bW5TdGF0ZT11ZSx0aGlzLnJlc2l6ZUVtaXR0ZXI9bmV3''@;'; put 'put ''IGFyLHRoaXMud2lkdGhTZXQ9ITEsdGhpcy5hdXRvU2V0PSExLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm9yZ2FuaXplci5maWx0ZXJSZW5kZXJTdGVwcyhoNC5DTEVBUl9XSURUSFMpLnN1YnNjcmliZSgoKT0+dGhpcy5jbGVhcldpZHRoKCkp''@;'; put 'put ''KSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh1ZS5zdWJzY3JpYmUoX2U9PnRoaXMuc3RhdGVDaGFuZ2VzKF9lKSkpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX1zdGF0ZUNoYW5nZXMoaCl7aC5jaGFuZ2VzJiZoLmNoYW5nZXMu''@;'; put 'put ''bGVuZ3RoJiZoLmNoYW5nZXMuZm9yRWFjaCh2PT57c3dpdGNoKHYpe2Nhc2UgcGguV0lEVEg6dGhpcy5zZXRXaWR0aChoKTticmVhaztjYXNlIHBoLkhJRERFTjp0aGlzLnNldEhpZGRlbihoKX19KX1jbGVhcldpZHRoKCl7dGhpcy53aWR0aFNldCYmIXRoaXMuY29sdW1uUmVzaXplclNlcnZp''@;'; put 'put ''Y2UucmVzaXplZEJ5JiZ0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwid2lkdGgiLG51bGwpLHRoaXMuYXV0b1NldCYmdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsV0wpfWRldGVjdFN0cmljdFdpZHRoKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuY29sdW1uUmVzaXplclNlcnZpY2UucmVzaXplZEJ5P3RoaXMuY29sdW1uUmVzaXplclNlcnZpY2Uud2lkdGhBZnRlclJlc2l6ZTp0aGlzLmF1dG9TZXQ/MDp0aGlzLmRvbUFkYXB0ZXIudXNlckRlZmluZWRXaWR0aCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpfWNvbXB1dGVXaWR0aCho''@;'; put 'put ''KXtsZXQgdj1oO3JldHVybiB2fHwodj10aGlzLmRvbUFkYXB0ZXIuc2Nyb2xsV2lkdGgodGhpcy5lbC5uYXRpdmVFbGVtZW50KSksdn1nZXRDb2x1bW5XaWR0aFN0YXRlKCl7Y29uc3QgaD10aGlzLmRldGVjdFN0cmljdFdpZHRoKCk7cmV0dXJue3dpZHRoOnRoaXMuY29tcHV0ZVdpZHRoKGgp''@;'; put 'put ''LHN0cmljdFdpZHRoOmh9fXNldENvbHVtblN0YXRlKGgpe3RoaXMuY29sdW1uc1NlcnZpY2UuY29sdW1uc1toXT10aGlzLmNvbHVtblN0YXRlfXNldFdpZHRoKGgpe2guc3RyaWN0V2lkdGg/KHRoaXMuY29sdW1uUmVzaXplclNlcnZpY2UucmVzaXplZEJ5JiYodGhpcy5yZXNpemVFbWl0dGVy''@;'; put 'put ''LmVtaXQoaC53aWR0aCksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIndpZHRoIixoLndpZHRoKyJweCIpLHRoaXMud2lkdGhTZXQ9ITEpLHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LFdMKSx0aGlzLmF1dG9TZXQ9ITEp''@;'; put 'put ''Oih0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCxXTCksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIndpZHRoIixoLndpZHRoKyJweCIpLHRoaXMud2lkdGhTZXQ9ITAsdGhpcy5hdXRvU2V0PSEwKX1zZXRIaWRkZW4o''@;'; put 'put ''aCl7aC5oaWRkZW4/dGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsYnEpOnRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LGJxKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3Qo''@;'; put 'put ''Ym8pLEt0KEdhKSxLdChwUyksS3QoZjQpLEt0KE5mZSksS3QoQXYpLEt0KEtmZSkpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGctY29sdW1uIl1dLG91dHB1dHM6e3Jlc2l6ZUVtaXR0ZXI6ImNsckRnQ29sdW1uUmVzaXplIn0sZmVhdHVyZXM6W2hvKFtOZmUs''@;'; put 'put ''Qk9lXSldfSksZH0pKCksTk9lPSgoKT0+e2NsYXNzIGR7dXNlckRlZmluZWRXaWR0aChoKXtyZXR1cm4gMH1zY3JvbGxCYXJXaWR0aChoKXtyZXR1cm4gMH1zY3JvbGxXaWR0aChoKXtyZXR1cm4gMH1jb21wdXRlZEhlaWdodChoKXtyZXR1cm4gMH1jbGllbnRSZWN0KGgpe3JldHVybnt0b3A6''@;'; put 'put ''MCxib3R0b206MCxsZWZ0OjAscmlnaHQ6MCx3aWR0aDowLGhlaWdodDowfX1taW5XaWR0aChoKXtyZXR1cm4gMH1mb2N1cyhoKXt9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3''@;'; put 'put ''NWZhY30pLGR9KSgpLHlTPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5jb2x1bW5zU2VydmljZT1oLHRoaXMuc3Vic2NyaXB0aW9ucz1bXX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLnNldENvbHVtblN0YXRlKCksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5jZWxs''@;'; put 'put ''cy5jaGFuZ2VzLnN1YnNjcmliZSgoKT0+e3RoaXMuc2V0Q29sdW1uU3RhdGUoKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSl9c2V0Q29sdW1uU3RhdGUoKXt0aGlzLmNlbGxzLmxlbmd0aD09PXRoaXMuY29sdW1uc1NlcnZp''@;'; put 'put ''Y2UuY29sdW1ucy5sZW5ndGgmJnRoaXMuY2VsbHMuZm9yRWFjaCgoaCx2KT0+e3RoaXMuY29sdW1uc1NlcnZpY2UuY29sdW1uc1t2XSYmKGguY29sdW1uU3RhdGU9dGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zW3ZdKX0pfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJu''@;'; put 'put ''IG5ldyhofHxkKShLdChBdikpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZGctcm93Il0sWyJjbHItZGctcm93LWRldGFpbCJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZ4byh5LHZTLDQpLDImaCl7bGV0IEM7SGkoQz0kaSgpKSYm''@;'; put 'put ''KHYuY2VsbHM9Qyl9fX0pLGR9KSgpO2NvbnN0IFZPZT1kPT5TbChkKT9uZXcgZjQ6bmV3IE5PZTtsZXQgWUw9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEksWix1ZSxfZSxCZSxOZSl7dGhpcy5vcmdhbml6ZXI9aCx0aGlzLml0ZW1zPXYsdGhpcy5wYWdlPXksdGhpcy5kb21B''@;'; put 'put ''ZGFwdGVyPUMsdGhpcy5lbD1JLHRoaXMucmVuZGVyZXI9Wix0aGlzLmRldGFpbFNlcnZpY2U9dWUsdGhpcy50YWJsZVNpemVTZXJ2aWNlPV9lLHRoaXMuY29sdW1uc1NlcnZpY2U9QmUsdGhpcy5uZ1pvbmU9TmUsdGhpcy5faGVpZ2h0U2V0PSExLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlz''@;'; put 'put ''LmNvbHVtbnNTaXplc1N0YWJsZT0hMSx0aGlzLnNob3VsZFN0YWJpbGl6ZUNvbHVtbnM9ITAsdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5vcmdhbml6ZXIuZmlsdGVyUmVuZGVyU3RlcHMoaDQuQ09NUFVURV9DT0xVTU5fV0lEVEhTKS5zdWJzY3JpYmUoKCk9PnRoaXMuY29tcHV0ZUhl''@;'; put 'put ''YWRlcnNXaWR0aCgpKSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5wYWdlLnNpemVDaGFuZ2Uuc3Vic2NyaWJlKCgpPT57dGhpcy5faGVpZ2h0U2V0JiZ0aGlzLnJlc2V0RGF0YWdyaWRIZWlnaHQoKX0pKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmRldGFpbFNlcnZpY2Uu''@;'; put 'put ''c3RhdGVDaGFuZ2Uuc3Vic2NyaWJlKEtlPT50aGlzLnRvZ2dsZURldGFpbFBhbmUoS2UpKSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5pdGVtcy5jaGFuZ2Uuc3Vic2NyaWJlKCgpPT50aGlzLnNob3VsZFN0YWJpbGl6ZUNvbHVtbnM9ITApKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0''@;'; put 'put ''aGlzLnNldHVwQ29sdW1ucygpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuaGVhZGVycy5jaGFuZ2VzLnN1YnNjcmliZSgoKT0+e3RoaXMuc2V0dXBDb2x1bW5zKCksdGhpcy5jb2x1bW5zU2l6ZXNTdGFibGU9ITEsdGhpcy5zdGFiaWxpemVDb2x1bW5zKCl9KSl9bmdBZnRlclZpZXdJ''@;'; put 'put ''bml0KCl7dGhpcy50YWJsZVNpemVTZXJ2aWNlLnRhYmxlPXRoaXMuZWx9bmdBZnRlclZpZXdDaGVja2VkKCl7dGhpcy5zaG91bGRTdGFiaWxpemVDb2x1bW5zJiZ0aGlzLnN0YWJpbGl6ZUNvbHVtbnMoKSx0aGlzLnNob3VsZENvbXB1dGVIZWlnaHQoKSYmdGhpcy5uZ1pvbmUucnVuT3V0c2lk''@;'; put 'put ''ZUFuZ3VsYXIoKCk9PntzZXRUaW1lb3V0KCgpPT57dGhpcy5jb21wdXRlRGF0YWdyaWRIZWlnaHQoKX0pfSl9c2V0dXBDb2x1bW5zKCl7dGhpcy5oZWFkZXJzLmZvckVhY2goKGgsdik9Pmguc2V0Q29sdW1uU3RhdGUodikpLHRoaXMuY29sdW1uc1NlcnZpY2UuY29sdW1ucy5zcGxpY2UodGhp''@;'; put 'put ''cy5oZWFkZXJzLmxlbmd0aCksdGhpcy5yb3dzLmZvckVhY2goaD0+aC5zZXRDb2x1bW5TdGF0ZSgpKX1zaG91bGRDb21wdXRlSGVpZ2h0KCl7cmV0dXJuIXRoaXMuX2hlaWdodFNldCYmdGhpcy5wYWdlLnNpemU+MCYmdGhpcy5pdGVtcy5kaXNwbGF5ZWQubGVuZ3RoPT09dGhpcy5wYWdlLnNp''@;'; put 'put ''emV9dG9nZ2xlRGV0YWlsUGFuZShoKXt0aGlzLmhlYWRlcnMmJihoJiYhdGhpcy5jb2x1bW5zU2VydmljZS5oYXNDYWNoZSgpPyh0aGlzLmNvbHVtbnNTZXJ2aWNlLmNhY2hlKCksdGhpcy5oZWFkZXJzLmZvckVhY2goKHYseSk9Pnt5PjAmJnRoaXMuY29sdW1uc1NlcnZpY2UuZW1pdFN0YXRl''@;'; put 'put ''Q2hhbmdlQXQoeSx7Y2hhbmdlczpbcGguSElEREVOXSxoaWRkZW46aH0pfSkpOmh8fHRoaXMuY29sdW1uc1NlcnZpY2UucmVzZXRUb0xhc3RDYWNoZSgpKX1jb21wdXRlRGF0YWdyaWRIZWlnaHQoKXtjb25zdCBoPXRoaXMuZG9tQWRhcHRlci5jbGllbnRSZWN0KHRoaXMuZWwubmF0aXZlRWxl''@;'; put 'put ''bWVudCkuaGVpZ2h0O3RoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJoZWlnaHQiLGgrInB4IiksdGhpcy5faGVpZ2h0U2V0PSEwfXJlc2V0RGF0YWdyaWRIZWlnaHQoKXt0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwiaGVp''@;'; put 'put ''Z2h0IiwiIiksdGhpcy5faGVpZ2h0U2V0PSExfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX1jb21wdXRlSGVhZGVyc1dpZHRoKCl7Y29uc3QgaD10aGlzLmhlYWRlcnMubGVuZ3RoO2xldCB2PSEwO3RoaXMuaGVhZGVycy5mb3JF''@;'; put 'put ''YWNoKCh5LEMpPT57Y29uc3QgST1PYmplY3QuYXNzaWduKHtjaGFuZ2VzOltwaC5XSURUSF19LHkuZ2V0Q29sdW1uV2lkdGhTdGF0ZSgpKTtJLnN0cmljdFdpZHRofHwodj0hMSksaD09PUMrMSYmdiYmKEkuc3RyaWN0V2lkdGg9MCksdGhpcy5jb2x1bW5zU2VydmljZS5lbWl0U3RhdGVDaGFu''@;'; put 'put ''Z2VBdChDLEkpfSl9c3RhYmlsaXplQ29sdW1ucygpe3RoaXMuc2hvdWxkU3RhYmlsaXplQ29sdW1ucz0hMSwhdGhpcy5jb2x1bW5zU2l6ZXNTdGFibGUmJnRoaXMuaXRlbXMuZGlzcGxheWVkLmxlbmd0aD4wJiYodGhpcy5vcmdhbml6ZXIucmVzaXplKCksdGhpcy5jb2x1bW5zU2l6ZXNTdGFi''@;'; put 'put ''bGU9ITApfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChwUyksS3QoZ3cpLEt0KGR3KSxLdChmNCksS3QoYm8pLEt0KEdhKSxLdChBOCksS3QoVmZlKSxLdChBdiksS3QoX2wpKX0sZC5cdTAyNzVkaXI9V2koe3R5cGU6ZCxzZWxlY3RvcnM6W1si''@;'; put 'put ''Y2xyLWRhdGFncmlkIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtpZigxJmgmJih4byh5LEFTLDQpLHhvKHkseVMsNSkpLDImaCl7bGV0IEM7SGkoQz0kaSgpKSYmKHYuaGVhZGVycz1DKSxIaShDPSRpKCkpJiYodi5yb3dzPUMpfX0sZmVhdHVyZXM6W2hvKFt7cHJvdmlkZTpm''@;'; put 'put ''NCx1c2VGYWN0b3J5OlZPZSxkZXBzOltMMl19XSldfSksZH0pKCksak9lPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtocy5hZGRJY29ucyhoWCxkWCxTayxGc2UscFgsSHNlLGdYLE5zZSxkVil9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxk''@;'; put 'put ''Llx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W1tiYSxEcyxRQWUsdGQsQmZlLHFhLENPZSxKQWUsdHllLERsLFJjLGZ3LHNxLGZTXV19KSxkfSkoKSxkeWU9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBu''@;'; put 'put ''ZXcoaHx8ZCl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1zdGFjay1jb250ZW50Il1dfSksZH0pKCkscWZlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy51bmlxdWVJZD1oLHRoaXMuX2dlbmVyYXRlZElkPW51bGwsdGhpcy5faWQ9bnVsbH1zZXQg''@;'; put 'put ''aWQoaCl7dGhpcy5faWQ9InN0cmluZyI9PXR5cGVvZiBoJiYiIiE9PWg/aDp0aGlzLl9nZW5lcmF0ZWRJZCsiIn1nZXQgaWQoKXtyZXR1cm4gdGhpcy5faWR9bmdPbkluaXQoKXt0aGlzLl9nZW5lcmF0ZWRJZD0iY2xyLXN0YWNrLWxhYmVsLSIrdGhpcy51bmlxdWVJZCx0aGlzLmlkfHwodGhp''@;'; put 'put ''cy5faWQ9dGhpcy5fZ2VuZXJhdGVkSWQrIiIpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdCh5MikpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItc3RhY2stbGFiZWwiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6''@;'; put 'put ''ZnVuY3Rpb24oaCx2KXsyJmgmJkdpKCJpZCIsdi5pZCl9LGlucHV0czp7aWQ6ImlkIn0sZmVhdHVyZXM6W2hvKFtPY10pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6bmEsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihLMCgpLE5pKDApKX0sZW5jYXBzdWxhdGlvbjoy''@;'; put 'put ''fSksZH0pKCkscHllPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMucGFyZW50PWgsdGhpcy51bmlxdWVJZD12LHRoaXMuY29tbW9uU3RyaW5ncz15LHRoaXMuZXhwYW5kZWQ9ITEsdGhpcy5leHBhbmRlZENoYW5nZT1uZXcgYXIoITEpLHRoaXMuZXhwYW5kYWJsZT0hMSx0''@;'; put 'put ''aGlzLmZvY3VzZWQ9ITEsdGhpcy5fY2hhbmdlZENoaWxkcmVuPTAsdGhpcy5fZnVsbHlJbml0aWFsaXplZD0hMSx0aGlzLl9jaGFuZ2VkPSExLGgmJmguYWRkQ2hpbGQoKX1nZXQgZ2V0Q2hhbmdlZFZhbHVlKCl7cmV0dXJuIHRoaXMuX2NoYW5nZWR8fHRoaXMuX2NoYW5nZWRDaGlsZHJlbj4w''@;'; put 'put ''JiYhdGhpcy5leHBhbmRlZH1zZXQgc2V0Q2hhbmdlZFZhbHVlKGgpe3RoaXMuX2NoYW5nZWQ9aCx0aGlzLnBhcmVudCYmdGhpcy5fZnVsbHlJbml0aWFsaXplZCYmKGg/dGhpcy5wYXJlbnQuX2NoYW5nZWRDaGlsZHJlbisrOnRoaXMucGFyZW50Ll9jaGFuZ2VkQ2hpbGRyZW4tLSl9Z2V0IGxh''@;'; put 'put ''YmVsbGVkQnlJZCgpe3JldHVybiB0aGlzLnN0YWNrQmxvY2tUaXRsZS5pZH1nZXQgaGVhZGluZ0xldmVsKCl7cmV0dXJuIHRoaXMuYXJpYUxldmVsP3RoaXMuYXJpYUxldmVsKyIiOnRoaXMucGFyZW50PyI0IjoiMyJ9bmdPbkluaXQoKXt0aGlzLl9mdWxseUluaXRpYWxpemVkPSEwfWFkZENo''@;'; put 'put ''aWxkKCl7dGhpcy5leHBhbmRhYmxlPSEwfXRvZ2dsZUV4cGFuZCgpe3RoaXMuZXhwYW5kYWJsZSYmKHRoaXMuZXhwYW5kZWQ9IXRoaXMuZXhwYW5kZWQsdGhpcy5leHBhbmRlZENoYW5nZS5lbWl0KHRoaXMuZXhwYW5kZWQpKX1nZXQgY2FyZXREaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5leHBh''@;'; put 'put ''bmRlZD8iZG93biI6InJpZ2h0In1nZXQgcm9sZSgpe3JldHVybiB0aGlzLmV4cGFuZGFibGU/ImJ1dHRvbiI6bnVsbH1nZXQgdGFiSW5kZXgoKXtyZXR1cm4gdGhpcy5leHBhbmRhYmxlPyIwIjpudWxsfWdldCBvblN0YWNrTGFiZWxGb2N1cygpe3JldHVybiB0aGlzLmV4cGFuZGFibGUmJiF0''@;'; put 'put ''aGlzLmV4cGFuZGVkJiZ0aGlzLmZvY3VzZWR9Z2V0IGFyaWFFeHBhbmRlZCgpe3JldHVybiB0aGlzLmV4cGFuZGFibGU/dGhpcy5leHBhbmRlZD8idHJ1ZSI6ImZhbHNlIjpudWxsfWdldFN0YWNrQ2hpbGRyZW5JZCgpe3JldHVybiB0aGlzLmV4cGFuZGVkP2BjbHItc3RhY2stY2hpbGRyZW4t''@;'; put 'put ''JHt0aGlzLnVuaXF1ZUlkfWA6bnVsbH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoZCwxMiksS3QoeTIpLEt0KG5zKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci1zdGFjay1ibG9jayJdXSxjb250ZW50UXVlcmll''@;'; put 'put ''czpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZ4byh5LHFmZSw1KSwyJmgpe2xldCBDO0hpKEM9JGkoKSkmJih2LnN0YWNrQmxvY2tUaXRsZT1DLmZpcnN0KX19LGhvc3RWYXJzOjEyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmKEdpKCJyb2xlIiwiaGVhZGluZyIpKCJhcmlhLWxl''@;'; put 'put ''dmVsIix2LmhlYWRpbmdMZXZlbCksRmkoInN0YWNrLWJsb2NrIiwhMCkoInN0YWNrLWJsb2NrLWV4cGFuZGVkIix2LmV4cGFuZGVkKSgic3RhY2stYmxvY2stZXhwYW5kYWJsZSIsdi5leHBhbmRhYmxlKSgic3RhY2stYmxvY2stY2hhbmdlZCIsdi5nZXRDaGFuZ2VkVmFsdWUpKCJvbi1mb2N1''@;'; put 'put ''cyIsdi5vblN0YWNrTGFiZWxGb2N1cykpfSxpbnB1dHM6e2V4cGFuZGVkOlsiY2xyU2JFeHBhbmRlZCIsImV4cGFuZGVkIl0sZXhwYW5kYWJsZTpbImNsclNiRXhwYW5kYWJsZSIsImV4cGFuZGFibGUiXSxzZXRDaGFuZ2VkVmFsdWU6WyJjbHJTYk5vdGlmeUNoYW5nZSIsInNldENoYW5nZWRW''@;'; put 'put ''YWx1ZSJdLGFyaWFMZXZlbDpbImNsclN0YWNrVmlld0xldmVsIiwiYXJpYUxldmVsIl0sYXJpYVNldHNpemU6WyJjbHJTdGFja1ZpZXdTZXRzaXplIiwiYXJpYVNldHNpemUiXSxhcmlhUG9zaW5zZXQ6WyJjbHJTdGFja1ZpZXdQb3NpbnNldCIsImFyaWFQb3NpbnNldCJdfSxvdXRwdXRzOntl''@;'; put 'put ''eHBhbmRlZENoYW5nZToiY2xyU2JFeHBhbmRlZENoYW5nZSJ9LGZlYXR1cmVzOltobyhbT2NdKV0sbmdDb250ZW50U2VsZWN0b3JzOnJ3LGRlY2xzOjksdmFyczo5LGNvbnN0czpbWzEsInN0YWNrLWJsb2NrLWxhYmVsIiwzLCJpZCIsImNsaWNrIiwia2V5dXAuZW50ZXIiLCJrZXl1cC5zcGFj''@;'; put 'put ''ZSIsImZvY3VzIiwiYmx1ciJdLFsic2hhcGUiLCJhbmdsZSIsImNsYXNzIiwic3RhY2stYmxvY2stY2FyZXQiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLXNyLW9ubHkiLDQsIm5nSWYiXSxbMSwic3RhY2stdmlldy1rZXkiXSxbMSwic3RhY2stYmxvY2stY29udGVudCJdLFsxLCJzdGFjay1j''@;'; put 'put ''aGlsZHJlbiIsMywiY2xyRXhwYW5kVHJpZ2dlciJdLFsicm9sZSIsInJlZ2lvbiIsMywiaGVpZ2h0Iiw0LCJuZ0lmIl0sWyJzaGFwZSIsImFuZ2xlIiwxLCJzdGFjay1ibG9jay1jYXJldCJdLFsxLCJjbHItc3Itb25seSJdLFsicm9sZSIsInJlZ2lvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiho''@;'; put 'put ''LHYpezEmaCYmKEswKEdjZSksbnQoMCwiZGl2IiwwKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYudG9nZ2xlRXhwYW5kKCl9KSgia2V5dXAuZW50ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHYudG9nZ2xlRXhwYW5kKCl9KSgia2V5dXAuc3BhY2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHYu''@;'; put 'put ''dG9nZ2xlRXhwYW5kKCl9KSgiZm9jdXMiLGZ1bmN0aW9uKCl7cmV0dXJuIHYuZm9jdXNlZD0hMH0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiB2LmZvY3VzZWQ9ITF9KSxybigxLGkzLDEsMSwiY2RzLWljb24iLDEpLHJuKDIsemNlLDIsMSwic3BhbiIsMiksbnQoMywiZGl2IiwzKSxOaSg0''@;'; put 'put ''KSxvdCgpLG50KDUsImRpdiIsNCksTmkoNiwxKSxvdCgpKCksbnQoNywiY2xyLWV4cGFuZGFibGUtYW5pbWF0aW9uIiw1KSxybig4LG53LDIsNCwiZGl2Iiw2KSxvdCgpKSwyJmgmJihUdCgiaWQiLHYudW5pcXVlSWQpLEdpKCJyb2xlIix2LnJvbGUpKCJ0YWJpbmRleCIsdi50YWJJbmRleCko''@;'; put 'put ''ImFyaWEtZXhwYW5kZWQiLHYuYXJpYUV4cGFuZGVkKSgiYXJpYS1jb250cm9scyIsdi5nZXRTdGFja0NoaWxkcmVuSWQoKSksdXQoMSksVHQoIm5nSWYiLHYuZXhwYW5kYWJsZSksdXQoMSksVHQoIm5nSWYiLHYuZ2V0Q2hhbmdlZFZhbHVlKSx1dCg1KSxUdCgiY2xyRXhwYW5kVHJpZ2dlciIs''@;'; put 'put ''di5leHBhbmRlZCksdXQoMSksVHQoIm5nSWYiLHYuZXhwYW5kZWQpKX0sZGVwZW5kZW5jaWVzOltmcSxObyxab10sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmJsb2NrfSJdfSksZH0pKCksVUw9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuZWRpdGFibGU9ITEs''@;'; put 'put ''dGhpcy5zYXZlPW5ldyBhcighMSksdGhpcy5fZWRpdE1vZGU9ITEsdGhpcy5lZGl0aW5nQ2hhbmdlPW5ldyBhcighMSl9Z2V0IGVkaXRpbmcoKXtyZXR1cm4gdGhpcy5lZGl0YWJsZSYmdGhpcy5fZWRpdE1vZGV9c2V0IGVkaXRpbmcoaCl7dGhpcy5lZGl0YWJsZSYmKHRoaXMuX2VkaXRNb2Rl''@;'; put 'put ''PWgsdGhpcy5lZGl0aW5nQ2hhbmdlLmVtaXQoaCksaHx8dGhpcy5zYXZlLmVtaXQobnVsbCkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLXN0YWNrLXZpZXciXV0sb3V0cHV0''@;'; put 'put ''czp7c2F2ZToiY2xyU3RhY2tTYXZlIn0sbmdDb250ZW50U2VsZWN0b3JzOldjZSxkZWNsczozLHZhcnM6MCxjb25zdHM6W1sxLCJzdGFjay12aWV3Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoSzAoVDEpLE5pKDApLG50KDEsImRpdiIsMCksTmkoMiwxKSxvdCgpKX0sc3R5bGVz''@;'; put 'put ''OlsiW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmJsb2NrfSJdfSksZH0pKCksR09lPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtocy5hZGRJY29ucyhEeSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpk''@;'; put 'put ''fSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W1tiYSx0ZCxEcyxKQWVdXX0pLGR9KSgpLHdTPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLnNlbGVjdGFibGU9ITEsdGhpcy5lYWdlcj0hMCx0aGlzLmNoaWxkcmVuRmV0Y2hlZD1uZXcgJGV9fXJldHVybiBkLlx1MDI3NWZhYz1m''@;'; put 'put ''dW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpO2NvbnN0IG15ZT17cHJvdmlkZTp3Uyx1c2VGYWN0b3J5OmZ1bmN0aW9uIFdPZShkKXtyZXR1cm4gZHx8bmV3IHdTfSxkZXBzOltbbmV3IG1mLG5l''@;'; put 'put ''dyBMNCx3U11dfTtsZXQgdnllPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2KXt0aGlzLmZlYXR1cmVzU2VydmljZT1oLHRoaXMuZXhwYW5kU2VydmljZT12LHYmJih0aGlzLnN1YnNjcmlwdGlvbj10aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kQ2hhbmdlLnN1YnNjcmliZSh5PT57IXkm''@;'; put 'put ''JnRoaXMucGFyZW50JiYhdGhpcy5mZWF0dXJlc1NlcnZpY2UuZWFnZXImJnRoaXMuZmVhdHVyZXNTZXJ2aWNlLnJlY3Vyc2lvbiYmdGhpcy5wYXJlbnQuY2xlYXJDaGlsZHJlbigpfSkpfXNob3VsZFJlbmRlcigpe3JldHVybiB0aGlzLmZlYXR1cmVzU2VydmljZS5yZWN1cnNpb24mJih0aGlz''@;'; put 'put ''LmZlYXR1cmVzU2VydmljZS5lYWdlcnx8IXRoaXMuZXhwYW5kU2VydmljZXx8dGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkKX1nZXRDb250ZXh0KGgpe3JldHVybnskaW1wbGljaXQ6aC5tb2RlbCxjbHJNb2RlbDpofX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9uJiZ0aGlzLnN1''@;'; put 'put ''YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdCh3UyksS3QocjEsOCkpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItcmVjdXJzaXZlLWNoaWxkcmVuIl1dLGhvc3RWYXJzOjEs''@;'; put 'put ''aG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZHaSgicm9sZSIsImdyb3VwIil9LGlucHV0czp7cGFyZW50OiJwYXJlbnQiLGNoaWxkcmVuOiJjaGlsZHJlbiJ9LGRlY2xzOjEsdmFyczoxLGNvbnN0czpbWzQsIm5nSWYiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzQsIm5nVGVtcGxh''@;'; put 'put ''dGVPdXRsZXQiLCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmcm4oMCxKY2UsMiwxLCJuZy1jb250YWluZXIiLDApLDImaCYmVHQoIm5nSWYiLHYuc2hvdWxkUmVuZGVyKCkpfSxkZXBlbmRlbmNpZXM6W05vLHhzLFhkXSxlbmNhcHN1bGF0''@;'; put 'put ''aW9uOjJ9KSxkfSkoKTt2YXIga3U9KCgpPT4oZnVuY3Rpb24oZCl7ZFtkLlVOU0VMRUNURUQ9MF09IlVOU0VMRUNURUQiLGRbZC5TRUxFQ1RFRD0xXT0iU0VMRUNURUQiLGRbZC5JTkRFVEVSTUlOQVRFPTJdPSJJTkRFVEVSTUlOQVRFIn0oa3V8fChrdT17fSkpLGt1KSkoKTtjbGFzcyBBeWV7''@;'; put 'put ''Y29uc3RydWN0b3IoKXt0aGlzLnNlbGVjdGVkPW5ldyBmcyhrdS5VTlNFTEVDVEVEKSx0aGlzLl9sb2FkaW5nPSExLHRoaXMubG9hZGluZyQ9bmV3IGZzKCExKX1nZXQgbG9hZGluZygpe3JldHVybiB0aGlzLl9sb2FkaW5nfXNldCBsb2FkaW5nKGcpe3RoaXMuX2xvYWRpbmc9Zyx0aGlzLmxv''@;'; put 'put ''YWRpbmckLm5leHQoZyl9ZGVzdHJveSgpe3RoaXMuc2VsZWN0ZWQuY29tcGxldGUoKX1zZXRTZWxlY3RlZChnLGgsdil7ZyE9PXRoaXMuc2VsZWN0ZWQudmFsdWUmJih0aGlzLnNlbGVjdGVkLm5leHQoZyksdiYmZyE9PWt1LklOREVURVJNSU5BVEUmJnRoaXMuY2hpbGRyZW4mJnRoaXMuY2hp''@;'; put 'put ''bGRyZW4uZm9yRWFjaCh5PT55LnNldFNlbGVjdGVkKGcsITEsITApKSxoJiZ0aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQuX3VwZGF0ZVNlbGVjdGlvbkZyb21DaGlsZHJlbigpKX10b2dnbGVTZWxlY3Rpb24oZyl7dGhpcy5zZXRTZWxlY3RlZCh0aGlzLnNlbGVjdGVkLnZhbHVlPT09a3UuU0VM''@;'; put 'put ''RUNURUQ/a3UuVU5TRUxFQ1RFRDprdS5TRUxFQ1RFRCwhMCxnKX1jb21wdXRlU2VsZWN0aW9uU3RhdGVGcm9tQ2hpbGRyZW4oKXtsZXQgZz0hMSxoPSExO2Zvcihjb25zdCB2IG9mIHRoaXMuY2hpbGRyZW4pc3dpdGNoKHYuc2VsZWN0ZWQudmFsdWUpe2Nhc2Uga3UuSU5ERVRFUk1JTkFURTpy''@;'; put 'put ''ZXR1cm4ga3UuSU5ERVRFUk1JTkFURTtjYXNlIGt1LlNFTEVDVEVEOmlmKGc9ITAsaClyZXR1cm4ga3UuSU5ERVRFUk1JTkFURTticmVhaztkZWZhdWx0OmlmKGg9ITAsZylyZXR1cm4ga3UuSU5ERVRFUk1JTkFURX1yZXR1cm4gZz9oP2t1LlVOU0VMRUNURUQ6a3UuU0VMRUNURUQ6a3UuVU5T''@;'; put 'put ''RUxFQ1RFRH1fdXBkYXRlU2VsZWN0aW9uRnJvbUNoaWxkcmVuKCl7Y29uc3QgZz10aGlzLmNvbXB1dGVTZWxlY3Rpb25TdGF0ZUZyb21DaGlsZHJlbigpO2chPT10aGlzLnNlbGVjdGVkLnZhbHVlJiYodGhpcy5zZWxlY3RlZC5uZXh0KGcpLHRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5fdXBk''@;'; put 'put ''YXRlU2VsZWN0aW9uRnJvbUNoaWxkcmVuKCkpfX1jbGFzcyBfcSBleHRlbmRzIEF5ZXtjb25zdHJ1Y3RvcihnLGgsdix5KXtzdXBlcigpLHRoaXMuZ2V0Q2hpbGRyZW49dix0aGlzLmZlYXR1cmVzU2VydmljZT15LHRoaXMuY2hpbGRyZW5GZXRjaGVkPSExLHRoaXMuX2NoaWxkcmVuPVtdLHRo''@;'; put 'put ''aXMubW9kZWw9Zyx0aGlzLnBhcmVudD1ofWNsZWFyQ2hpbGRyZW4oKXt0aGlzLl9jaGlsZHJlbi5mb3JFYWNoKGc9PmcuZGVzdHJveSgpKSxkZWxldGUgdGhpcy5fY2hpbGRyZW4sdGhpcy5jaGlsZHJlbkZldGNoZWQ9ITF9ZmV0Y2hDaGlsZHJlbigpe2lmKHRoaXMuY2hpbGRyZW5GZXRjaGVk''@;'; put 'put ''KXJldHVybjtjb25zdCBnPXRoaXMuZ2V0Q2hpbGRyZW4odGhpcy5tb2RlbCk7IWZ1bmN0aW9uIFlPZShkKXtyZXR1cm4gZCYmImZ1bmN0aW9uIj09dHlwZW9mIGQudGhlbn0oZyk/a1goZyk/KHRoaXMubG9hZGluZz0hMCx0aGlzLnN1YnNjcmlwdGlvbj1nLnN1YnNjcmliZShoPT57dGhpcy5f''@;'; put 'put ''Y2hpbGRyZW49dGhpcy53cmFwQ2hpbGRyZW4oaCksdGhpcy5sb2FkaW5nPSExfSkpOnRoaXMuX2NoaWxkcmVuPWc/dGhpcy53cmFwQ2hpbGRyZW4oZyk6W106KHRoaXMubG9hZGluZz0hMCxnLnRoZW4oaD0+e3RoaXMuX2NoaWxkcmVuPXRoaXMud3JhcENoaWxkcmVuKGgpLHRoaXMubG9hZGlu''@;'; put 'put ''Zz0hMX0pKSx0aGlzLmNoaWxkcmVuRmV0Y2hlZD0hMCx0aGlzLmZlYXR1cmVzU2VydmljZSYmdGhpcy5mZWF0dXJlc1NlcnZpY2UuY2hpbGRyZW5GZXRjaGVkLm5leHQoKX13cmFwQ2hpbGRyZW4oZyl7cmV0dXJuIGcubWFwKGg9Pm5ldyBfcShoLHRoaXMsdGhpcy5nZXRDaGlsZHJlbix0aGlz''@;'; put 'put ''LmZlYXR1cmVzU2VydmljZSkpfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzLmZldGNoQ2hpbGRyZW4oKSx0aGlzLl9jaGlsZHJlbn1zZXQgY2hpbGRyZW4oZyl7dGhpcy5fY2hpbGRyZW49Z31kZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb24mJnRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2Ny''@;'; put 'put ''aWJlKCksc3VwZXIuZGVzdHJveSgpfX1sZXQgeXllPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMudGVtcGxhdGU9aCx0aGlzLmZlYXR1cmVzU2VydmljZT12LHRoaXMuY2RyPXl9bmdPbkNoYW5nZXMoKXtsZXQgaDtoPUFycmF5LmlzQXJyYXkodGhpcy5ub2Rlcyk/dGhp''@;'; put 'put ''cy5ub2Rlcy5tYXAodj0+bmV3IF9xKHYsbnVsbCx0aGlzLmdldENoaWxkcmVuLHRoaXMuZmVhdHVyZXNTZXJ2aWNlKSk6W25ldyBfcSh0aGlzLm5vZGVzLG51bGwsdGhpcy5nZXRDaGlsZHJlbix0aGlzLmZlYXR1cmVzU2VydmljZSldLHRoaXMuY2hpbGRyZW5GZXRjaFN1YnNjcmlwdGlvbnx8''@;'; put 'put ''KHRoaXMuY2hpbGRyZW5GZXRjaFN1YnNjcmlwdGlvbj10aGlzLmZlYXR1cmVzU2VydmljZS5jaGlsZHJlbkZldGNoZWQucGlwZShERCgwKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpfSkpLHRoaXMuZmVhdHVyZXNTZXJ2aWNlLnJlY3Vyc2lvbj17dGVtcGxhdGU6''@;'; put 'put ''dGhpcy50ZW1wbGF0ZSxyb290Omh9fW5nT25EZXN0cm95KCl7dGhpcy5jaGlsZHJlbkZldGNoU3Vic2NyaXB0aW9uJiZ0aGlzLmNoaWxkcmVuRmV0Y2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3Qo''@;'; put 'put ''cXIpLEt0KHdTKSxLdChkMSkpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJSZWN1cnNpdmVGb3IiLCIiLCJjbHJSZWN1cnNpdmVGb3JPZiIsIiJdXSxpbnB1dHM6e25vZGVzOlsiY2xyUmVjdXJzaXZlRm9yT2YiLCJub2RlcyJdLGdldENoaWxkcmVuOlsiY2xy''@;'; put 'put ''UmVjdXJzaXZlRm9yR2V0Q2hpbGRyZW4iLCJnZXRDaGlsZHJlbiJdfSxmZWF0dXJlczpbRDJdfSksZH0pKCksZWhlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9mb2N1c1JlcXVlc3Q9bmV3ICRlLHRoaXMuX2ZvY3VzQ2hhbmdlPW5ldyAkZX1nZXQgZm9jdXNSZXF1ZXN0KCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX2ZvY3VzUmVxdWVzdC5hc09ic2VydmFibGUoKX1nZXQgZm9jdXNDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fZm9jdXNDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9ZmluZFNpYmxpbmdzKGgpe3JldHVybiBoLnBhcmVudD9oLnBhcmVudC5jaGlsZHJlbjp0aGlzLnJvb3ROb2RlTW9k''@;'; put 'put ''ZWxzfWZpbmRMYXN0VmlzaWJsZUluTm9kZShoKXtpZighaClyZXR1cm4gbnVsbDtpZihoLmV4cGFuZGVkJiZoLmNoaWxkcmVuLmxlbmd0aD4wKXtjb25zdCB2PWguY2hpbGRyZW47cmV0dXJuIHRoaXMuZmluZExhc3RWaXNpYmxlSW5Ob2RlKHZbdi5sZW5ndGgtMV0pfXJldHVybiBofWZpbmRO''@;'; put 'put ''ZXh0Rm9jdXNhYmxlKGgpe2lmKCFoKXJldHVybiBudWxsO2NvbnN0IHY9dGhpcy5maW5kU2libGluZ3MoaCkseT12LmluZGV4T2YoaCk7cmV0dXJuIHk8di5sZW5ndGgtMT92W3krMV06eT09PXYubGVuZ3RoLTE/dGhpcy5maW5kTmV4dEZvY3VzYWJsZShoLnBhcmVudCk6bnVsbH1maW5kTGFz''@;'; put 'put ''dFZpc2libGVJblRyZWUoKXtyZXR1cm4gdGhpcy5maW5kTGFzdFZpc2libGVJbk5vZGUodGhpcy5yb290Tm9kZU1vZGVscyYmdGhpcy5yb290Tm9kZU1vZGVscy5sZW5ndGgmJnRoaXMucm9vdE5vZGVNb2RlbHNbdGhpcy5yb290Tm9kZU1vZGVscy5sZW5ndGgtMV0pfWZpbmROb2RlQWJvdmUo''@;'; put 'put ''aCl7aWYoIWgpcmV0dXJuIG51bGw7Y29uc3Qgdj10aGlzLmZpbmRTaWJsaW5ncyhoKSx5PXYuaW5kZXhPZihoKTtyZXR1cm4gMD09PXk/aC5wYXJlbnQ6eT4wP3RoaXMuZmluZExhc3RWaXNpYmxlSW5Ob2RlKHZbeS0xXSk6bnVsbH1maW5kTm9kZUJlbG93KGgpe3JldHVybiBoP2guZXhwYW5k''@;'; put 'put ''ZWQmJmguY2hpbGRyZW4ubGVuZ3RoPjA/aC5jaGlsZHJlblswXTp0aGlzLmZpbmROZXh0Rm9jdXNhYmxlKGgpOm51bGx9ZmluZERlc2NlbmRlbnROb2RlU3RhcnRzV2l0aChoLHYpe2lmKHYuZXhwYW5kZWQmJnYuY2hpbGRyZW4ubGVuZ3RoPjApZm9yKGNvbnN0IHkgb2Ygdi5jaGlsZHJlbil7''@;'; put 'put ''Y29uc3QgQz10aGlzLmZpbmROb2RlU3RhcnRzV2l0aChoLHkpO2lmKEMpcmV0dXJuIEN9cmV0dXJuIG51bGx9ZmluZFNpYmxpbmdOb2RlU3RhcnRzV2l0aChoLHYpe2NvbnN0IHk9dGhpcy5maW5kU2libGluZ3Modik7Zm9yKGxldCBJPXkuaW5kZXhPZih2KSsxO0k8eS5sZW5ndGg7SSsrKXtj''@;'; put 'put ''b25zdCB1ZT10aGlzLmZpbmROb2RlU3RhcnRzV2l0aChoLHlbSV0pO2lmKHVlKXJldHVybiB1ZX1yZXR1cm4gbnVsbH1maW5kUm9vdE5vZGVTdGFydHNXaXRoKGgsdil7Zm9yKGNvbnN0IHkgb2YgdGhpcy5yb290Tm9kZU1vZGVscyl7aWYodi5wYXJlbnQmJnYucGFyZW50PT09eSljb250aW51''@;'; put 'put ''ZTtjb25zdCBDPXRoaXMuZmluZE5vZGVTdGFydHNXaXRoKGgseSk7aWYoQylyZXR1cm4gQ31yZXR1cm4gbnVsbH1maW5kTm9kZVN0YXJ0c1dpdGgoaCx2KXtyZXR1cm4gdj92LnRleHRDb250ZW50LnN0YXJ0c1dpdGgoaCk/djp0aGlzLmZpbmREZXNjZW5kZW50Tm9kZVN0YXJ0c1dpdGgoaCx2''@;'; put 'put ''KTpudWxsfWZpbmRDbG9zZXN0Tm9kZVN0YXJ0c1dpdGgoaCx2KXtpZighdilyZXR1cm4gbnVsbDtjb25zdCB5PXRoaXMuZmluZERlc2NlbmRlbnROb2RlU3RhcnRzV2l0aChoLHYpO2lmKHkpcmV0dXJuIHk7Y29uc3QgQz10aGlzLmZpbmRTaWJsaW5nTm9kZVN0YXJ0c1dpdGgoaCx2KTtyZXR1''@;'; put 'put ''cm4gQ3x8KHRoaXMuZmluZFJvb3ROb2RlU3RhcnRzV2l0aChoLHYpfHx0aGlzLmZpbmROb2RlU3RhcnRzV2l0aChoLHYucGFyZW50KSl9Zm9jdXNOb2RlKGgpe2gmJnRoaXMuX2ZvY3VzUmVxdWVzdC5uZXh0KGgubm9kZUlkKX1icm9hZGNhc3RGb2N1c2VkTm9kZShoKXt0aGlzLmZvY3VzZWRO''@;'; put 'put ''b2RlSWQhPT1oJiYodGhpcy5mb2N1c2VkTm9kZUlkPWgsdGhpcy5fZm9jdXNDaGFuZ2UubmV4dChoKSl9Zm9jdXNQYXJlbnQoaCl7aCYmdGhpcy5mb2N1c05vZGUoaC5wYXJlbnQpfWZvY3VzRmlyc3RWaXNpYmxlTm9kZSgpe3RoaXMuZm9jdXNOb2RlKHRoaXMucm9vdE5vZGVNb2RlbHMmJnRo''@;'; put 'put ''aXMucm9vdE5vZGVNb2RlbHNbMF0pfWZvY3VzTGFzdFZpc2libGVOb2RlKCl7dGhpcy5mb2N1c05vZGUodGhpcy5maW5kTGFzdFZpc2libGVJblRyZWUoKSl9Zm9jdXNOb2RlQWJvdmUoaCl7dGhpcy5mb2N1c05vZGUodGhpcy5maW5kTm9kZUFib3ZlKGgpKX1mb2N1c05vZGVCZWxvdyhoKXt0''@;'; put 'put ''aGlzLmZvY3VzTm9kZSh0aGlzLmZpbmROb2RlQmVsb3coaCkpfWZvY3VzTm9kZVN0YXJ0c1dpdGgoaCx2KXt0aGlzLmZvY3VzTm9kZSh0aGlzLmZpbmRDbG9zZXN0Tm9kZVN0YXJ0c1dpdGgoaCx2KSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxk''@;'; put 'put ''Llx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpO2NsYXNzIFVPZSBleHRlbmRzIEF5ZXtjb25zdHJ1Y3RvcihnKXtzdXBlcigpLHRoaXMucGFyZW50PWcsZyYmZy5fYWRkQ2hpbGQodGhpcyksdGhpcy5jaGlsZHJlbj1bXX1fYWRkQ2hpbGQoZyl7dGhp''@;'; put 'put ''cy5jaGlsZHJlbi5wdXNoKGcpfV9yZW1vdmVDaGlsZChnKXtjb25zdCBoPXRoaXMuY2hpbGRyZW4uaW5kZXhPZihnKTtoPi0xJiZ0aGlzLmNoaWxkcmVuLnNwbGljZShoLDEpfWRlc3Ryb3koKXt0aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQuX3JlbW92ZUNoaWxkKHRoaXMpLHN1cGVyLmRlc3Ry''@;'; put 'put ''b3koKX19bGV0IFFMPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5lbD1ofWFjdGl2YXRlKCl7dGhpcy5lbC5uYXRpdmVFbGVtZW50JiZ0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xpY2smJnRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGljaygpfX1yZXR1cm4gZC5cdTAyNzVmYWM9''@;'; put 'put ''ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChibykpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLDgsImNsci10cmVlbm9kZS1saW5rIl1dfSksZH0pKCksX2c9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEksWix1ZSxfZSxCZSl7dGhpcy5u''@;'; put 'put ''b2RlSWQ9aCx0aGlzLnBsYXRmb3JtSWQ9dix0aGlzLmZvclR5cGVBaGVhZFByb3ZpZGVyPUMsdGhpcy5mZWF0dXJlc1NlcnZpY2U9SSx0aGlzLmV4cGFuZFNlcnZpY2U9Wix0aGlzLmNvbW1vblN0cmluZ3M9dWUsdGhpcy5mb2N1c01hbmFnZXI9X2UsdGhpcy5TVEFURVM9a3UsdGhpcy5za2lw''@;'; put 'put ''RW1pdENoYW5nZT0hMSx0aGlzLmlzTW9kZWxMb2FkaW5nPSExLHRoaXMudHlwZUFoZWFkS2V5RXZlbnQ9bmV3ICRlLHRoaXMudHlwZUFoZWFkS2V5QnVmZmVyPSIiLHRoaXMuc2VsZWN0ZWRDaGFuZ2U9bmV3IGFyKCExKSx0aGlzLmV4cGFuZGVkQ2hhbmdlPW5ldyBhcix0aGlzLnN1YnNjcmlw''@;'; put 'put ''dGlvbnM9W10sdGhpcy5jb250ZW50Q29udGFpbmVyVGFiaW5kZXg9LTEsdGhpcy5fbW9kZWw9dGhpcy5mZWF0dXJlc1NlcnZpY2UucmVjdXJzaW9uP0JlLnZpZXc/QmUudmlldy5jb250ZXh0LmNsck1vZGVsOkJlLl9sVmlld1s4XS5jbHJNb2RlbDpuZXcgVU9lKHk/eS5fbW9kZWw6bnVsbCks''@;'; put 'put ''dGhpcy5fbW9kZWwubm9kZUlkPXRoaXMubm9kZUlkfWlzRXhwYW5kYWJsZSgpe3JldHVybiB2b2lkIDAhPT10aGlzLmV4cGFuZGFibGU/dGhpcy5leHBhbmRhYmxlOiEhdGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGFibGV8fHRoaXMuaXNQYXJlbnR9aXNTZWxlY3RhYmxlKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuZmVhdHVyZXNTZXJ2aWNlLnNlbGVjdGFibGV9Z2V0IHNlbGVjdGVkKCl7cmV0dXJuIHRoaXMuX21vZGVsLnNlbGVjdGVkLnZhbHVlfXNldCBzZWxlY3RlZChoKXt0aGlzLmZlYXR1cmVzU2VydmljZS5zZWxlY3RhYmxlPSEwLG51bGw9PWgmJihoPWt1LlVOU0VMRUNURUQpLCJib29sZWFu''@;'; put 'put ''Ij09dHlwZW9mIGgmJihoPWg/a3UuU0VMRUNURUQ6a3UuVU5TRUxFQ1RFRCksdGhpcy5za2lwRW1pdENoYW5nZT0hMCx0aGlzLl9tb2RlbC5zZXRTZWxlY3RlZChoLHRoaXMuZmVhdHVyZXNTZXJ2aWNlLmVhZ2VyLHRoaXMuZmVhdHVyZXNTZXJ2aWNlLmVhZ2VyKSx0aGlzLnNraXBFbWl0Q2hh''@;'; put 'put ''bmdlPSExfWdldCBhcmlhU2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5pc1NlbGVjdGFibGUoKT90aGlzLl9tb2RlbC5zZWxlY3RlZC52YWx1ZT09PWt1LlNFTEVDVEVEOm51bGx9Z2V0IGV4cGFuZGVkKCl7cmV0dXJuIHRoaXMuZXhwYW5kU2VydmljZS5leHBhbmRlZH1zZXQgZXhwYW5kZWQoaCl7''@;'; put 'put ''dGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkPWh9bmdPbkluaXQoKXt0aGlzLl9tb2RlbC5leHBhbmRlZD10aGlzLmV4cGFuZGVkLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuX21vZGVsLnNlbGVjdGVkLnBpcGUoTzIoKCk9PiF0aGlzLnNraXBFbWl0Q2hhbmdlKSkuc3Vic2NyaWJl''@;'; put 'put ''KGg9Pnt0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoaCl9KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZENoYW5nZS5zdWJzY3JpYmUoaD0+e3RoaXMuZXhwYW5kZWRDaGFuZ2UuZW1pdChoKSx0aGlzLl9tb2RlbC5leHBhbmRlZD1ofSkpLHRoaXMu''@;'; put 'put ''c3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzUmVxdWVzdC5zdWJzY3JpYmUoaD0+e3RoaXMubm9kZUlkPT09aCYmdGhpcy5mb2N1c1RyZWVOb2RlKCl9KSx0aGlzLmZvY3VzTWFuYWdlci5mb2N1c0NoYW5nZS5zdWJzY3JpYmUoaD0+e3RoaXMuY2hlY2tUYWJJbmRl''@;'; put 'put ''eChoKX0pKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLl9tb2RlbC5sb2FkaW5nJC5waXBlKEREKDApKS5zdWJzY3JpYmUoaD0+dGhpcy5pc01vZGVsTG9hZGluZz1oKSl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5mb3JUeXBlQWhlYWRQcm92aWRlciYmKHRoaXMuX21vZGVsLnRl''@;'; put 'put ''eHRDb250ZW50PXRoaXMuZm9yVHlwZUFoZWFkUHJvdmlkZXIudGV4dENvbnRlbnQsdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy50eXBlQWhlYWRLZXlFdmVudC5waXBlKEREKDIwMCkpLnN1YnNjcmliZShoPT57dGhpcy5mb2N1c01hbmFnZXIuZm9jdXNOb2RlU3RhcnRzV2l0aChoLHRo''@;'; put 'put ''aXMuX21vZGVsKSx0aGlzLnR5cGVBaGVhZEtleUJ1ZmZlcj0iIn0pKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9tb2RlbC5kZXN0cm95KCksdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX1nZXQgdHJlZU5vZGVMaW5rKCl7cmV0dXJuIHRoaXMudHJlZU5vZGVM''@;'; put 'put ''aW5rTGlzdCYmdGhpcy50cmVlTm9kZUxpbmtMaXN0LmZpcnN0fXNldFRhYkluZGV4KGgpe3RoaXMuY29udGVudENvbnRhaW5lclRhYmluZGV4PWgsdGhpcy5jb250ZW50Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsaCl9Y2hlY2tUYWJJbmRleChoKXtT''@;'; put 'put ''bCh0aGlzLnBsYXRmb3JtSWQpJiZ0aGlzLm5vZGVJZCE9PWgmJi0xIT09dGhpcy5jb250ZW50Q29udGFpbmVyVGFiaW5kZXgmJnRoaXMuc2V0VGFiSW5kZXgoLTEpfWZvY3VzVHJlZU5vZGUoKXtjb25zdCBoPXRoaXMuY29udGVudENvbnRhaW5lci5uYXRpdmVFbGVtZW50O1NsKHRoaXMucGxh''@;'; put 'put ''dGZvcm1JZCkmJmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT1oJiYodGhpcy5zZXRUYWJJbmRleCgwKSxoLmZvY3VzKCksaC5zY3JvbGxJbnRvVmlldyh7YmxvY2s6Im5lYXJlc3QiLGlubGluZToibmVhcmVzdCJ9KSl9YnJvYWRjYXN0Rm9jdXNPbkNvbnRhaW5lcigpe3RoaXMuZm9jdXNNYW5h''@;'; put 'put ''Z2VyLmJyb2FkY2FzdEZvY3VzZWROb2RlKHRoaXMubm9kZUlkKX1vbktleURvd24oaCl7c3dpdGNoKE1wKGgpLGFTKGgua2V5KSl7Y2FzZSBNMC5BcnJvd1VwOnRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzTm9kZUFib3ZlKHRoaXMuX21vZGVsKTticmVhaztjYXNlIE0wLkFycm93RG93bjp0aGlz''@;'; put 'put ''LmZvY3VzTWFuYWdlci5mb2N1c05vZGVCZWxvdyh0aGlzLl9tb2RlbCk7YnJlYWs7Y2FzZSBNMC5BcnJvd1JpZ2h0OnRoaXMuZXhwYW5kT3JGb2N1c0ZpcnN0Q2hpbGQoKTticmVhaztjYXNlIE0wLkFycm93TGVmdDp0aGlzLmNvbGxhcHNlT3JGb2N1c1BhcmVudCgpO2JyZWFrO2Nhc2UgTTAu''@;'; put 'put ''SG9tZTpoLnByZXZlbnREZWZhdWx0KCksdGhpcy5mb2N1c01hbmFnZXIuZm9jdXNGaXJzdFZpc2libGVOb2RlKCk7YnJlYWs7Y2FzZSBNMC5FbmQ6aC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzTGFzdFZpc2libGVOb2RlKCk7YnJlYWs7Y2FzZSBNMC5FbnRlcjp0''@;'; put 'put ''aGlzLnRvZ2dsZUV4cGFuZE9yVHJpZ2dlckRlZmF1bHQoKTticmVhaztjYXNlIE0wLlNwYWNlOmNhc2UgTTAuU3BhY2ViYXI6aC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMudG9nZ2xlRXhwYW5kT3JUcmlnZ2VyRGVmYXVsdCgpO2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5fbW9kZWwudGV4dENvbnRl''@;'; put 'put ''bnQmJmZ1bmN0aW9uIHN3KGQpe2NvbnN0IGc9ZC5rZXk7cmV0dXJuIGcudG9Mb3dlckNhc2UoKSE9PWcudG9VcHBlckNhc2UoKXx8Zz49IjAiJiZnPD0iOSJ9KGgpKXJldHVybiB0aGlzLnR5cGVBaGVhZEtleUJ1ZmZlcis9aC5rZXksdm9pZCB0aGlzLnR5cGVBaGVhZEtleUV2ZW50Lm5leHQo''@;'; put 'put ''dGhpcy50eXBlQWhlYWRLZXlCdWZmZXIpfXRoaXMudHlwZUFoZWFkS2V5QnVmZmVyPSIifWdldCBpc1BhcmVudCgpe3JldHVybiB0aGlzLl9tb2RlbC5jaGlsZHJlbiYmdGhpcy5fbW9kZWwuY2hpbGRyZW4ubGVuZ3RoPjB9dG9nZ2xlRXhwYW5kT3JUcmlnZ2VyRGVmYXVsdCgpe3RoaXMuaXNF''@;'; put 'put ''eHBhbmRhYmxlKCkmJiF0aGlzLmlzU2VsZWN0YWJsZSgpP3RoaXMuZXhwYW5kU2VydmljZS5leHBhbmRlZD0hdGhpcy5leHBhbmRlZDp0aGlzLnRyaWdnZXJEZWZhdWx0QWN0aW9uKCl9ZXhwYW5kT3JGb2N1c0ZpcnN0Q2hpbGQoKXt0aGlzLmV4cGFuZGVkP3RoaXMuaXNQYXJlbnQmJnRoaXMu''@;'; put 'put ''Zm9jdXNNYW5hZ2VyLmZvY3VzTm9kZUJlbG93KHRoaXMuX21vZGVsKTp0aGlzLmlzRXhwYW5kYWJsZSgpJiYodGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkPSEwKX1jb2xsYXBzZU9yRm9jdXNQYXJlbnQoKXt0aGlzLmV4cGFuZGVkP3RoaXMuZXhwYW5kU2VydmljZS5leHBhbmRlZD0hMTp0''@;'; put 'put ''aGlzLmZvY3VzTWFuYWdlci5mb2N1c1BhcmVudCh0aGlzLl9tb2RlbCl9dHJpZ2dlckRlZmF1bHRBY3Rpb24oKXt0aGlzLnRyZWVOb2RlTGluaz90aGlzLnRyZWVOb2RlTGluay5hY3RpdmF0ZSgpOnRoaXMuaXNTZWxlY3RhYmxlKCkmJnRoaXMuX21vZGVsLnRvZ2dsZVNlbGVjdGlvbih0aGlz''@;'; put 'put ''LmZlYXR1cmVzU2VydmljZS5lYWdlcil9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHkyKSxLdChMMiksS3QoZCwxMiksS3QoTE9lLDEwKSxLdCh3UyksS3QocjEpLEt0KG5zKSxLdChlaGUpLEt0KFNzKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBl''@;'; put 'put ''OmQsc2VsZWN0b3JzOltbImNsci10cmVlLW5vZGUiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmeG8oeSxRTCw0KSwyJmgpe2xldCBDO0hpKEM9JGkoKSkmJih2LnRyZWVOb2RlTGlua0xpc3Q9Qyl9fSx2aWV3UXVlcnk6ZnVuY3Rpb24oaCx2KXtpZigxJmgmJnZv''@;'; put 'put ''KEIkLDcsYm8pLDImaCl7bGV0IHk7SGkoeT0kaSgpKSYmKHYuY29udGVudENvbnRhaW5lcj15LmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZGaSgiY2xyLXRyZWUtbm9kZSIsITApfSxpbnB1dHM6e3NlbGVjdGVkOlsiY2xyU2VsZWN0ZWQiLCJz''@;'; put 'put ''ZWxlY3RlZCJdLGV4cGFuZGFibGU6WyJjbHJFeHBhbmRhYmxlIiwiZXhwYW5kYWJsZSJdLGV4cGFuZGVkOlsiY2xyRXhwYW5kZWQiLCJleHBhbmRlZCJdfSxvdXRwdXRzOntzZWxlY3RlZENoYW5nZToiY2xyU2VsZWN0ZWRDaGFuZ2UiLGV4cGFuZGVkQ2hhbmdlOiJjbHJFeHBhbmRlZENoYW5n''@;'; put 'put ''ZSJ9LGZlYXR1cmVzOltobyhbT2MsbXllLHIxLHtwcm92aWRlOlBmLHVzZUV4aXN0aW5nOnIxfV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6ZWYsZGVjbHM6MTIsdmFyczo5LGNvbnN0czpbWyJyb2xlIiwidHJlZWl0ZW0iLCJ0YWJpbmRleCIsIi0xIiwxLCJjbHItdHJlZS1ub2RlLWNvbnRlbnQt''@;'; put 'put ''Y29udGFpbmVyIiwzLCJrZXlkb3duIiwiZm9jdXMiXSxbImNvbnRlbnRDb250YWluZXIiLCIiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInR5cGUiLCJidXR0b24iLCJ0YWJpbmRleCIsIi0xIiwiY2xhc3MiLCJjbHItdHJlZW5vZGUtY2FyZXQiLDMsImNsaWNrIiwiZm9jdXMiLDQsIm5nSWYi''@;'; put 'put ''XSxbImNsYXNzIiwiY2xyLXRyZWVub2RlLXNwaW5uZXItY29udGFpbmVyIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci1jaGVja2JveC13cmFwcGVyIGNsci10cmVlbm9kZS1jaGVja2JveCIsNCwibmdJZiJdLFsxLCJjbHItdHJlZW5vZGUtY29udGVudCIsMywibW91c2Vkb3duIl0sWyJjbGFz''@;'; put 'put ''cyIsImNsci1zci1vbmx5Iiw0LCJuZ0lmIl0sWzEsImNsci10cmVlbm9kZS1jaGlsZHJlbiJdLFszLCJwYXJlbnQiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInR5cGUiLCJidXR0b24iLCJ0YWJpbmRleCIsIi0xIiwxLCJjbHItdHJlZW5vZGUtY2FyZXQiLDMsImNsaWNrIiwiZm9jdXMiXSxb''@;'; put 'put ''InNoYXBlIiwiYW5nbGUiLDEsImNsci10cmVlbm9kZS1jYXJldC1pY29uIl0sWzEsImNsci10cmVlbm9kZS1zcGlubmVyLWNvbnRhaW5lciJdLFsxLCJjbHItdHJlZW5vZGUtc3Bpbm5lciIsInNwaW5uZXIiXSxbMSwiY2xyLWNoZWNrYm94LXdyYXBwZXIiLCJjbHItdHJlZW5vZGUtY2hlY2ti''@;'; put 'put ''b3giXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInR5cGUiLCJjaGVja2JveCIsInRhYmluZGV4IiwiLTEiLDEsImNsci1jaGVja2JveCIsMywiaWQiLCJjaGVja2VkIiwiaW5kZXRlcm1pbmF0ZSIsImNoYW5nZSIsImZvY3VzIl0sWzEsImNsci1jb250cm9sLWxhYmVsIiwzLCJmb3IiXSxbMSwi''@;'; put 'put ''Y2xyLXNyLW9ubHkiXSxbNCwibmdJZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKFAkKSxudCgwLCJkaXYiLDAsMSksR24oImtleWRvd24iLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uS2V5RG93bihDKX0pKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gdi5icm9hZGNhc3RG''@;'; put 'put ''b2N1c09uQ29udGFpbmVyKCl9KSxybigyLFhjZSwyLDEsImJ1dHRvbiIsMikscm4oMyxuMSwyLDAsImRpdiIsMykscm4oNCx1diwzLDQsImRpdiIsNCksbnQoNSwiZGl2Iiw1KSxHbigibW91c2Vkb3duIixmdW5jdGlvbigpe3JldHVybiB2LmZvY3VzVHJlZU5vZGUoKX0pLE5pKDYpLHJuKDcs''@;'; put 'put ''JGNlLDMsMiwiZGl2Iiw2KSxvdCgpKCksbnQoOCwiZGl2Iiw3KSxOaSg5LDEpLE5pKDEwLDIpLENyKDExLCJjbHItcmVjdXJzaXZlLWNoaWxkcmVuIiw4KSxvdCgpKSwyJmgmJihHaSgiYXJpYS1leHBhbmRlZCIsdi5pc0V4cGFuZGFibGUoKT92LmV4cGFuZGVkOm51bGwpKCJhcmlhLXNlbGVj''@;'; put 'put ''dGVkIix2LmFyaWFTZWxlY3RlZCksdXQoMiksVHQoIm5nSWYiLHYuaXNFeHBhbmRhYmxlKCkmJiF2LmlzTW9kZWxMb2FkaW5nJiYhdi5leHBhbmRTZXJ2aWNlLmxvYWRpbmcpLHV0KDEpLFR0KCJuZ0lmIix2LmV4cGFuZFNlcnZpY2UubG9hZGluZ3x8di5pc01vZGVsTG9hZGluZyksdXQoMSks''@;'; put 'put ''VHQoIm5nSWYiLHYuZmVhdHVyZXNTZXJ2aWNlLnNlbGVjdGFibGUpLHV0KDMpLFR0KCJuZ0lmIix2LmZlYXR1cmVzU2VydmljZS5zZWxlY3RhYmxlKSx1dCgxKSxUdCgiQHRvZ2dsZUNoaWxkcmVuQW5pbSIsdi5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkPyJleHBhbmRlZCI6ImNvbGxhcHNlZCIp''@;'; put 'put ''LEdpKCJyb2xlIix2LmlzRXhwYW5kYWJsZSgpJiYhdi5mZWF0dXJlc1NlcnZpY2UucmVjdXJzaW9uPyJncm91cCI6bnVsbCksdXQoMyksVHQoInBhcmVudCIsdi5fbW9kZWwpKX0sZGVwZW5kZW5jaWVzOlt2eWUsTm8sWm9dLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246WyRoKCJ0''@;'; put 'put ''b2dnbGVDaGlsZHJlbkFuaW0iLFtidSgiY29sbGFwc2VkID0+IGV4cGFuZGVkIixbeWwoe2hlaWdodDowfSksRGMoMjAwLHlsKHtoZWlnaHQ6IioifSkpXSksYnUoImV4cGFuZGVkID0+IGNvbGxhcHNlZCIsW3lsKHtoZWlnaHQ6IioifSksRGMoMjAwLHlsKHtoZWlnaHQ6MH0pKV0pLFo3KCJl''@;'; put 'put ''eHBhbmRlZCIseWwoe2hlaWdodDoiKiIsIm92ZXJmbG93LXkiOiJ2aXNpYmxlIn0pKSxaNygiY29sbGFwc2VkIix5bCh7aGVpZ2h0OjB9KSldKV19fSksZH0pKCkseXY9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYse25hdGl2ZUVsZW1lbnQ6eX0sQyxJKXt0aGlzLmZlYXR1cmVzU2Vy''@;'; put 'put ''dmljZT1oLHRoaXMuZm9jdXNNYW5hZ2VyU2VydmljZT12LHRoaXMuc3Vic2NyaXB0aW9ucz1bXTtjb25zdCBaPUkucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PnQ4KHksImZvY3VzaW4iKS5zdWJzY3JpYmUodWU9Pnt1ZS50YXJnZXQ9PT15JiYodGhpcy5mb2N1c01hbmFnZXJTZXJ2aWNlLmZvY3Vz''@;'; put 'put ''Rmlyc3RWaXNpYmxlTm9kZSgpLEMucmVtb3ZlQXR0cmlidXRlKHksInRhYmluZGV4IikpfSkpO3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFopfXNldCBsYXp5KGgpe3RoaXMuZmVhdHVyZXNTZXJ2aWNlLmVhZ2VyPSFofWdldCBpc011bHRpU2VsZWN0YWJsZSgpe3JldHVybiB0aGlzLmZlYXR1''@;'; put 'put ''cmVzU2VydmljZS5zZWxlY3RhYmxlJiZ0aGlzLnJvb3ROb2Rlcy5sZW5ndGg+MH1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLnNldFJvb3ROb2RlcygpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMucm9vdE5vZGVzLmNoYW5nZXMuc3Vic2NyaWJlKCgpPT57dGhpcy5zZXRSb290Tm9k''@;'; put 'put ''ZXMoKX0pKX1zZXRSb290Tm9kZXMoKXt0aGlzLmZvY3VzTWFuYWdlclNlcnZpY2Uucm9vdE5vZGVNb2RlbHM9dGhpcy5yb290Tm9kZXMubWFwKGg9PmguX21vZGVsKS5maWx0ZXIoaD0+IWgucGFyZW50KX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGg9PmgudW5z''@;'; put 'put ''dWJzY3JpYmUoKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHdTKSxLdChlaGUpLEt0KGJvKSxLdChHYSksS3QoX2wpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLXRyZWUiXV0sY29udGVudFF1ZXJpZXM6ZnVu''@;'; put 'put ''Y3Rpb24oaCx2LHkpe2lmKDEmaCYmeG8oeSxfZyw0KSwyJmgpe2xldCBDO0hpKEM9JGkoKSkmJih2LnJvb3ROb2Rlcz1DKX19LGhvc3RBdHRyczpbInRhYmluZGV4IiwiMCJdLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZHaSgicm9sZSIsInRyZWUiKSgiYXJp''@;'; put 'put ''YS1tdWx0aXNlbGVjdGFibGUiLHYuaXNNdWx0aVNlbGVjdGFibGUpfSxpbnB1dHM6e2xhenk6WyJjbHJMYXp5IiwibGF6eSJdfSxmZWF0dXJlczpbaG8oW215ZSxlaGVdKV0sbmdDb250ZW50U2VsZWN0b3JzOm5hLGRlY2xzOjIsdmFyczoxLGNvbnN0czpbWzMsImNoaWxkcmVuIiw0LCJuZ0lm''@;'; put 'put ''Il0sWzMsImNoaWxkcmVuIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoSzAoKSxOaSgwKSxybigxLEVsLDEsMSwiY2xyLXJlY3Vyc2l2ZS1jaGlsZHJlbiIsMCkpLDImaCYmKHV0KDEpLFR0KCJuZ0lmIix2LmZlYXR1cmVzU2VydmljZS5yZWN1cnNpb24pKX0sZGVwZW5kZW5jaWVz''@;'; put 'put ''Olt2eWUsTm9dLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLFhPZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7aHMuYWRkSWNvbnMoRHkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1''@;'; put 'put ''aW5qPWIwKHtpbXBvcnRzOltbYmEsRHMsQmZlXV19KSxkfSkoKSxLT2U9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbak9lLEdPZSxY''@;'; put 'put ''T2VdfSksZH0pKCk7Y2xhc3Mgd3lle3N0YXRpYyBsaW5rUGFyZW50KGcsaCx2KXtnLmZvckVhY2goeT0+eVt2XT1oKX1zdGF0aWMgbGlua1ZlcnRpY2FsKGcsaD0hMCl7Zy5mb3JFYWNoKCh2LHkpPT57eT4wJiYodi51cD1nW3ktMV0pLHk8Zy5sZW5ndGgtMSYmKHYuZG93bj1nW3krMV0pfSks''@;'; put 'put ''aCYmZy5sZW5ndGg+MSYmKGdbMF0udXA9Z1tnLmxlbmd0aC0xXSxnW2cubGVuZ3RoLTFdLmRvd249Z1swXSl9fWZ1bmN0aW9uIGJ5ZShkLGcsaCl7cmV0dXJuIEYuY3JlYXRlKHY9PntnKHYpO2NvbnN0IHk9ZC5zdWJzY3JpYmUodik7cmV0dXJuKCk9Pnt5LnVuc3Vic2NyaWJlKCksaCYmaCh2''@;'; put 'put ''KX19KX1sZXQgdGhlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLFope3RoaXMuaWQ9aCx0aGlzLnJlbmRlcmVyPXYsdGhpcy5wYXJlbnQ9eSx0aGlzLnRvZ2dsZVNlcnZpY2U9Qyx0aGlzLmZvY3VzU2VydmljZT1JLHRoaXMucGxhdGZvcm1JZD1aLHRoaXMuX3VubGlzdGVu''@;'; put 'put ''RnVuY3M9W10sdGhpcy5mb2N1c0JhY2tPblRyaWdnZXI9ITEsdGhpcy5yZXNldENoaWxkcmVuKCksdGhpcy5tb3ZlVG9GaXJzdEl0ZW1XaGVuT3BlbigpLHRoaXMucGFyZW50fHx0aGlzLmhhbmRsZVJvb3RGb2N1cygpfW1vdmVUb0ZpcnN0SXRlbVdoZW5PcGVuKCl7Y29uc3QgaD10aGlzLnRv''@;'; put 'put ''Z2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUodj0+e3YmJnRoaXMudG9nZ2xlU2VydmljZS5vcmlnaW5hbEV2ZW50JiZzZXRUaW1lb3V0KCgpPT57dGhpcy5mb2N1c1NlcnZpY2UubW92ZVRvKHRoaXMpLHRoaXMuZm9jdXNTZXJ2aWNlLm1vdmUodGhpcy5wYXJlbnQ/cTEuUklHSFQ6''@;'; put 'put ''cTEuRE9XTil9KX0pO3RoaXMuX3VubGlzdGVuRnVuY3MucHVzaCgoKT0+aC51bnN1YnNjcmliZSgpKX1oYW5kbGVSb290Rm9jdXMoKXtjb25zdCBoPXRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZSh2PT57dnx8KHRoaXMuZm9jdXNTZXJ2aWNlLnJlc2V0KHRoaXMpLHRo''@;'; put 'put ''aXMuZm9jdXNCYWNrT25UcmlnZ2VyJiZ0aGlzLmZvY3VzKCkpLHRoaXMuZm9jdXNCYWNrT25UcmlnZ2VyPXZ9KTt0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2goKCk9PmgudW5zdWJzY3JpYmUoKSl9Z2V0IHRyaWdnZXIoKXtyZXR1cm4gdGhpcy5fdHJpZ2dlcn1zZXQgdHJpZ2dlcihoKXt0aGlz''@;'; put 'put ''Ll90cmlnZ2VyPWgsdGhpcy5wYXJlbnQ/dGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKGgsImtleWRvd24uYXJyb3dyaWdodCIsdj0+dGhpcy50b2dnbGVTZXJ2aWNlLnRvZ2dsZVdpdGhFdmVudCh2KSkpOih0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhp''@;'; put 'put ''cy5yZW5kZXJlci5saXN0ZW4oaCwia2V5ZG93bi5hcnJvd3VwIix2PT50aGlzLnRvZ2dsZVNlcnZpY2UudG9nZ2xlV2l0aEV2ZW50KHYpKSksdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKGgsImtleWRvd24uYXJyb3dkb3duIix2PT50aGlzLnRvZ2dsZVNl''@;'; put 'put ''cnZpY2UudG9nZ2xlV2l0aEV2ZW50KHYpKSksdGhpcy5mb2N1c1NlcnZpY2UubGlzdGVuVG9BcnJvd0tleXMoaCkpfWdldCBjb250YWluZXIoKXtyZXR1cm4gdGhpcy5fY29udGFpbmVyfXNldCBjb250YWluZXIoaCl7dGhpcy5fY29udGFpbmVyPWgsdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNo''@;'; put 'put ''KHRoaXMucmVuZGVyZXIubGlzdGVuKGgsImtleWRvd24udGFiIix2PT50aGlzLnRvZ2dsZVNlcnZpY2UudG9nZ2xlV2l0aEV2ZW50KHYpKSksdGhpcy5wYXJlbnQ/dGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKGgsImtleWRvd24uZXNjIix2PT57dGhpcy5m''@;'; put 'put ''b2N1c1NlcnZpY2UubW92ZShxMS5MRUZUKSx2LnN0b3BQcm9wYWdhdGlvbigpfSkpOih0aGlzLmZvY3VzU2VydmljZS5yZWdpc3RlckNvbnRhaW5lcihoKSx0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oaCwia2V5ZG93bi5lc2MiLHY9PnRoaXMudG9nZ2xl''@;'; put 'put ''U2VydmljZS50b2dnbGVXaXRoRXZlbnQodikpKSx0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oaCwiYmx1ciIsdj0+e3RoaXMuY2hpbGRyZW4ucGlwZShINSgxKSkuc3Vic2NyaWJlKEM9PkMuZm9yRWFjaChJPT5JLmJsdXIoKSkpO2NvbnN0IHk9di5yZWxh''@;'; put 'put ''dGVkVGFyZ2V0fHxkb2N1bWVudC5hY3RpdmVFbGVtZW50O3kmJlNsKHRoaXMucGxhdGZvcm1JZCkmJihoLmNvbnRhaW5zKHkpfHx5PT09dGhpcy50cmlnZ2VyKXx8KHRoaXMuZm9jdXNCYWNrT25UcmlnZ2VyPSExLHRoaXMudG9nZ2xlU2VydmljZS5vcGVuPSExKX0pKSl9Zm9jdXMoKXt0aGlz''@;'; put 'put ''LnRyaWdnZXImJlNsKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMudHJpZ2dlci5mb2N1cygpfWJsdXIoKXt0aGlzLnRyaWdnZXImJlNsKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMudHJpZ2dlci5ibHVyKCl9YWN0aXZhdGUoKXtTbCh0aGlzLnBsYXRmb3JtSWQpJiZ0aGlzLnRyaWdnZXIuY2xpY2so''@;'; put 'put ''KX1vcGVuQW5kR2V0Q2hpbGRyZW4oKXtyZXR1cm4gYnllKHRoaXMuY2hpbGRyZW4sKCk9PnRoaXMudG9nZ2xlU2VydmljZS5vcGVuPSEwKX1jbG9zZUFuZEdldFRoaXMoKXtyZXR1cm4gYnllKGFhKHRoaXMpLCgpPT50aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMSl9cmVzZXRDaGlsZHJlbigp''@;'; put 'put ''e3RoaXMuY2hpbGRyZW49bmV3IHhrKDEpLHRoaXMucGFyZW50P3RoaXMucmlnaHQ9dGhpcy5vcGVuQW5kR2V0Q2hpbGRyZW4oKS5waXBlKG10KGg9PmhbMF0pKToodGhpcy5kb3duPXRoaXMub3BlbkFuZEdldENoaWxkcmVuKCkucGlwZShtdChoPT5oWzBdKSksdGhpcy51cD10aGlzLm9wZW5B''@;'; put 'put ''bmRHZXRDaGlsZHJlbigpLnBpcGUobXQoaD0+aFtoLmxlbmd0aC0xXSkpKX1hZGRDaGlsZHJlbihoKXt3eWUubGlua1ZlcnRpY2FsKGgpLHRoaXMucGFyZW50JiZ3eWUubGlua1BhcmVudChoLHRoaXMuY2xvc2VBbmRHZXRUaGlzKCkscTEuTEVGVCksdGhpcy5jaGlsZHJlbi5uZXh0KGgpfW5n''@;'; put 'put ''T25EZXN0cm95KCl7dGhpcy5fdW5saXN0ZW5GdW5jcy5mb3JFYWNoKGg9PmgoKSksdGhpcy5mb2N1c1NlcnZpY2UuZGV0YWNoTGlzdGVuZXJzKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKHkyKSxDaShHYSksQ2koZCwxMiksQ2koenMpLENp''@;'; put 'put ''KHhwKSxDaShMMikpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpO2NvbnN0ICRPZT1SQWUodGhlKTtsZXQgZFo9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2NoYW5nZXM9bmV3ICRlfWdldCBjaGFuZ2VzKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuX2NoYW5nZXMuYXNPYnNlcnZhYmxlKCl9Y2xvc2VNZW51cygpe3RoaXMuX2NoYW5nZXMubmV4dCghMSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgp''@;'; put 'put ''O2NvbnN0IGVSZT17cHJvdmlkZTpkWix1c2VGYWN0b3J5OmZ1bmN0aW9uIHFPZShkKXtyZXR1cm4gZHx8bmV3IGRafSxkZXBzOltbbmV3IG1mLG5ldyBMNCxkWl1dfTtsZXQgd3Y9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDKXt0aGlzLnBhcmVudD1oLHRoaXMudG9nZ2xlU2Vy''@;'; put 'put ''dmljZT12LHRoaXMuY2RyPXksdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuaXNNZW51Q2xvc2FibGU9ITAsdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goQy5jaGFuZ2VzLnN1YnNjcmliZShJPT50aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj1JKSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godi5v''@;'; put 'put ''cGVuQ2hhbmdlLnN1YnNjcmliZSgoKT0+dGhpcy5jZHIubWFya0ZvckNoZWNrKCkpKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGg9PmgudW5zdWJzY3JpYmUoKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGQs''@;'; put 'put ''MTIpLEt0KHpzKSxLdChkMSksS3QoZFopKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWRyb3Bkb3duIl1dLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZGaSgiZHJvcGRvd24iLCEwKSgib3BlbiIsdi50b2dnbGVTZXJ2aWNlLm9w''@;'; put 'put ''ZW4pfSxpbnB1dHM6e2lzTWVudUNsb3NhYmxlOlsiY2xyQ2xvc2VNZW51T25JdGVtQ2xpY2siLCJpc01lbnVDbG9zYWJsZSJdfSxmZWF0dXJlczpbaG8oW2VSZSx7cHJvdmlkZTp0Zix1c2VFeGlzdGluZzpib30sZzgsenMsJE9lXSldLG5nQ29udGVudFNlbGVjdG9yczpuYSxkZWNsczoxLHZh''@;'; put 'put ''cnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKCksTmkoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKTtjb25zdCB0UmU9W09jLHtwcm92aWRlOmxxLHVzZUNsYXNzOigoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5pZD1oLHRoaXMuZWw9dix0aGlz''@;'; put 'put ''LnJlbmRlcmVyPXksdGhpcy5wbGF0Zm9ybUlkPUMsdGhpcy5kaXNhYmxlZD0hMSx5LnNldEF0dHJpYnV0ZSh2Lm5hdGl2ZUVsZW1lbnQsImlkIixoKSx5LnNldEF0dHJpYnV0ZSh2Lm5hdGl2ZUVsZW1lbnQsInRhYmluZGV4IiwiLTEiKX1mb2N1cygpe1NsKHRoaXMucGxhdGZvcm1JZCkmJih0''@;'; put 'put ''aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsInRhYmluZGV4IiwiMCIpLHRoaXMuZWwubmF0aXZlRWxlbWVudC5mb2N1cygpLHRoaXMuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCIsYmxvY2s6ImNlbnRlciIs''@;'; put 'put ''aW5saW5lOiJuZWFyZXN0In0pKX1ibHVyKCl7U2wodGhpcy5wbGF0Zm9ybUlkKSYmKHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwidGFiaW5kZXgiLCItMSIpLHRoaXMuZWwubmF0aXZlRWxlbWVudC5ibHVyKCkpfWFjdGl2YXRlKCl7U2wodGhpcy5w''@;'; put 'put ''bGF0Zm9ybUlkKSYmdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsaWNrKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKENpKHkyKSxDaShibyksQ2koR2EpLENpKEwyKSl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFj''@;'; put 'put ''fSksZH0pKCl9XTtsZXQgSkw9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEkpe3RoaXMuZHJvcGRvd249aCx0aGlzLmVsPXYsdGhpcy5fZHJvcGRvd25TZXJ2aWNlPXksdGhpcy5yZW5kZXJlcj1DLHRoaXMuZm9jdXNhYmxlSXRlbT1JLHRoaXMuc2V0QnlEZXByZWNhdGVkRGlz''@;'; put 'put ''YWJsZWQ9ITF9c2V0IGRpc2FibGVkKGgpe3RoaXMuZm9jdXNhYmxlSXRlbS5kaXNhYmxlZD0hIWh8fCIiPT09aH1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5mb2N1c2FibGVJdGVtLmRpc2FibGVkfXNldCBkaXNhYmxlZERlcHJlY2F0ZWQoaCl7dGhpcy5mb2N1c2FibGVJdGVtLmRpc2Fi''@;'; put 'put ''bGVkPSEhaHx8IiI9PT1oLHRoaXMuc2V0QnlEZXByZWNhdGVkRGlzYWJsZWQ9ITB9Z2V0IGRpc2FibGVkRGVwcmVjYXRlZCgpe3JldHVybiB0aGlzLmZvY3VzYWJsZUl0ZW0uZGlzYWJsZWR9c2V0IGRyb3Bkb3duSXRlbUlkKGgpe3RoaXMuZm9jdXNhYmxlSXRlbS5pZD1ofWdldCBkcm9wZG93''@;'; put 'put ''bkl0ZW1JZCgpe3JldHVybiB0aGlzLmZvY3VzYWJsZUl0ZW0uaWR9bmdBZnRlclZpZXdJbml0KCl7dGhpcy51bmxpc3Rlbj10aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImNsaWNrIiwoKT0+dGhpcy5vbkRyb3Bkb3duSXRlbUNsaWNrKCkpfW9uRHJvcGRvd25J''@;'; put 'put ''dGVtQ2xpY2soKXt0aGlzLmRyb3Bkb3duLmlzTWVudUNsb3NhYmxlJiYhdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiZGlzYWJsZWQiKSYmdGhpcy5fZHJvcGRvd25TZXJ2aWNlLmNsb3NlTWVudXMoKX1uZ09uRGVzdHJveSgpe3RoaXMudW5saXN0ZW4mJnRoaXMu''@;'; put 'put ''dW5saXN0ZW4oKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3Qod3YpLEt0KGJvKSxLdChkWiksS3QoR2EpLEt0KGxxKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNsckRyb3Bkb3duSXRlbSIsIiJdXSxob3N0VmFy''@;'; put 'put ''czo4LGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmKEdpKCJyb2xlIiwibWVudWl0ZW0iKSgiYXJpYS1kaXNhYmxlZCIsdi5kaXNhYmxlZCkoImRpc2FibGVkIix2LmRpc2FibGVkJiZ2LnNldEJ5RGVwcmVjYXRlZERpc2FibGVkPyIiOm51bGwpKCJpZCIsdi5kcm9wZG93bkl0ZW1J''@;'; put 'put ''ZCksRmkoImRpc2FibGVkIix2LmRpc2FibGVkKSgiZHJvcGRvd24taXRlbSIsITApKX0saW5wdXRzOntkaXNhYmxlZDpbImNsckRpc2FibGVkIiwiZGlzYWJsZWQiXSxkaXNhYmxlZERlcHJlY2F0ZWQ6WyJkaXNhYmxlZCIsImRpc2FibGVkRGVwcmVjYXRlZCJdLGRyb3Bkb3duSXRlbUlkOlsi''@;'; put 'put ''aWQiLCJkcm9wZG93bkl0ZW1JZCJdfSxmZWF0dXJlczpbaG8oW3RSZV0pXX0pLGR9KSgpO3ZhciBnMD0oKCk9PihmdW5jdGlvbihkKXtkW2QuUklHSFRfQ0VOVEVSPTBdPSJSSUdIVF9DRU5URVIiLGRbZC5SSUdIVF9UT1A9MV09IlJJR0hUX1RPUCIsZFtkLlJJR0hUX0JPVFRPTT0yXT0iUklH''@;'; put 'put ''SFRfQk9UVE9NIixkW2QuVE9QX0NFTlRFUj0zXT0iVE9QX0NFTlRFUiIsZFtkLlRPUF9SSUdIVD00XT0iVE9QX1JJR0hUIixkW2QuVE9QX0xFRlQ9NV09IlRPUF9MRUZUIixkW2QuQk9UVE9NX0NFTlRFUj02XT0iQk9UVE9NX0NFTlRFUiIsZFtkLkJPVFRPTV9SSUdIVD03XT0iQk9UVE9NX1JJ''@;'; put 'put ''R0hUIixkW2QuQk9UVE9NX0xFRlQ9OF09IkJPVFRPTV9MRUZUIixkW2QuTEVGVF9DRU5URVI9OV09IkxFRlRfQ0VOVEVSIixkW2QuTEVGVF9UT1A9MTBdPSJMRUZUX1RPUCIsZFtkLkxFRlRfQk9UVE9NPTExXT0iTEVGVF9CT1RUT00ifShnMHx8KGcwPXt9KSksZzApKSgpO2NsYXNzIGlSZXtj''@;'; put 'put ''b25zdHJ1Y3RvcihnKXt0aGlzLmVsZW1lbnQ9Zyx0aGlzLnNjcm9sbGFibGVFbGVtZW50cz1bXSx0aGlzLmJvdW5kT25TY3JvbGxMaXN0ZW5lcj10aGlzLmVtaXRTY3JvbGxFdmVudC5iaW5kKHRoaXMpLGcuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixnLnN0eWxlLnRvcD0wLGcuc3R5bGUu''@;'; put 'put ''Ym90dG9tPSJhdXRvIixnLnN0eWxlLmxlZnQ9MCxnLnN0eWxlLnJpZ2h0PSJhdXRvIn1hbmNob3IoZyxoLHYse29mZnNldFg6eT0wLG9mZnNldFk6Qz0wLHVzZUFuY2hvclBhcmVudDpJPSExfT17fSl7dGhpcy5hZGRTY3JvbGxFdmVudExpc3RlbmVycyhnKSxJJiYoZz1nLnBhcmVudE5vZGUp''@;'; put 'put ''LGcuc3R5bGUucG9zaXRpb249InN0YXRpYyI7Y29uc3QgWj1nLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHVlPXRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtsZXQgX2U9Wi5sZWZ0LXVlLmxlZnQreSxCZT1aLnRvcC11ZS50b3ArQztzd2l0Y2goaCl7Y2FzZSBnMC5MRUZU''@;'; put 'put ''X1RPUDpjYXNlIGcwLlRPUF9MRUZUOmJyZWFrO2Nhc2UgZzAuVE9QX0NFTlRFUjpfZSs9Wi53aWR0aC8yO2JyZWFrO2Nhc2UgZzAuVE9QX1JJR0hUOmNhc2UgZzAuUklHSFRfVE9QOl9lKz1aLndpZHRoO2JyZWFrO2Nhc2UgZzAuTEVGVF9CT1RUT006Y2FzZSBnMC5CT1RUT01fTEVGVDpCZSs9''@;'; put 'put ''Wi5oZWlnaHQ7YnJlYWs7Y2FzZSBnMC5CT1RUT01fQ0VOVEVSOkJlKz1aLmhlaWdodCxfZSs9Wi53aWR0aC8yO2JyZWFrO2Nhc2UgZzAuQk9UVE9NX1JJR0hUOmNhc2UgZzAuUklHSFRfQk9UVE9NOkJlKz1aLmhlaWdodCxfZSs9Wi53aWR0aDticmVhaztjYXNlIGcwLkxFRlRfQ0VOVEVSOkJl''@;'; put 'put ''Kz1aLmhlaWdodC8yO2JyZWFrO2Nhc2UgZzAuUklHSFRfQ0VOVEVSOkJlKz1aLmhlaWdodC8yLF9lKz1aLndpZHRofXN3aXRjaCh2KXtjYXNlIGcwLkxFRlRfVE9QOmNhc2UgZzAuVE9QX0xFRlQ6YnJlYWs7Y2FzZSBnMC5UT1BfQ0VOVEVSOl9lLT11ZS53aWR0aC8yO2JyZWFrO2Nhc2UgZzAu''@;'; put 'put ''VE9QX1JJR0hUOmNhc2UgZzAuUklHSFRfVE9QOl9lLT11ZS53aWR0aDticmVhaztjYXNlIGcwLkxFRlRfQk9UVE9NOmNhc2UgZzAuQk9UVE9NX0xFRlQ6QmUtPXVlLmhlaWdodDticmVhaztjYXNlIGcwLkJPVFRPTV9DRU5URVI6QmUtPXVlLmhlaWdodCxfZS09dWUud2lkdGgvMjticmVhaztj''@;'; put 'put ''YXNlIGcwLkJPVFRPTV9SSUdIVDpjYXNlIGcwLlJJR0hUX0JPVFRPTTpCZS09dWUuaGVpZ2h0LF9lLT11ZS53aWR0aDticmVhaztjYXNlIGcwLkxFRlRfQ0VOVEVSOkJlLT11ZS5oZWlnaHQvMjticmVhaztjYXNlIGcwLlJJR0hUX0NFTlRFUjpCZS09dWUuaGVpZ2h0LzIsX2UtPXVlLndpZHRo''@;'; put 'put ''fWNvbnN0IE5lPWdldENvbXB1dGVkU3R5bGUodGhpcy5lbGVtZW50KSxLZT1wYXJzZUludChOZS5tYXJnaW5MZWZ0LDEwKSxwdD1wYXJzZUludChOZS5tYXJnaW5SaWdodCwxMCksT3Q9cGFyc2VJbnQoTmUubWFyZ2luVG9wLDEwKSwkdD1wYXJzZUludChOZS5tYXJnaW5Cb3R0b20sMTApO3N3''@;'; put 'put ''aXRjaChoKXtjYXNlIGcwLkxFRlRfVE9QOmNhc2UgZzAuVE9QX0xFRlQ6Y2FzZSBnMC5UT1BfUklHSFQ6Y2FzZSBnMC5SSUdIVF9UT1A6KHY9PT1nMC5CT1RUT01fUklHSFR8fHY9PT1nMC5SSUdIVF9CT1RUT00pJiYoQmUtPSR0LF9lLT1wdCksKHY9PT1nMC5CT1RUT01fTEVGVHx8dj09PWcw''@;'; put 'put ''LkxFRlRfQk9UVE9NKSYmKEJlLT1PdCxfZSs9S2UpLCh2PT09ZzAuVE9QX0xFRlR8fHY9PT1nMC5MRUZUX1RPUCkmJihCZSs9T3QsX2UrPUtlKSwodj09PWcwLlRPUF9SSUdIVHx8dj09PWcwLlJJR0hUX1RPUCkmJihCZSs9T3QsX2UtPXB0KTticmVhaztjYXNlIGcwLkxFRlRfQk9UVE9NOmNh''@;'; put 'put ''c2UgZzAuQk9UVE9NX0xFRlQ6Y2FzZSBnMC5CT1RUT01fUklHSFQ6Y2FzZSBnMC5SSUdIVF9CT1RUT006KHY9PT1nMC5CT1RUT01fTEVGVHx8dj09PWcwLkxFRlRfQk9UVE9NKSYmKEJlLT0kdCxfZSs9S2UpLCh2PT09ZzAuQk9UVE9NX1JJR0hUfHx2PT09ZzAuUklHSFRfQk9UVE9NKSYmKEJl''@;'; put 'put ''LT0kdCxfZS09cHQpLCh2PT09ZzAuVE9QX0xFRlR8fHY9PT1nMC5MRUZUX1RPUCkmJihCZSs9T3QsX2UrPUtlKSwodj09PWcwLlRPUF9SSUdIVHx8dj09PWcwLlJJR0hUX1RPUCkmJihCZSs9T3QsX2UtPXB0KTticmVhaztjYXNlIGcwLlRPUF9DRU5URVI6QmUtPSR0LF9lKz1LZSxfZS09cHQ7''@;'; put 'put ''YnJlYWs7Y2FzZSBnMC5CT1RUT01fQ0VOVEVSOkJlKz1PdCxfZSs9S2UsX2UtPXB0O2JyZWFrO2Nhc2UgZzAuTEVGVF9DRU5URVI6QmUrPU90LEJlLT0kdCxfZS09cHQ7YnJlYWs7Y2FzZSBnMC5SSUdIVF9DRU5URVI6QmUrPU90LEJlLT0kdCxfZSs9S2V9cmV0dXJuIHRoaXMuZWxlbWVudC5z''@;'; put 'put ''dHlsZS50cmFuc2Zvcm09YHRyYW5zbGF0ZVgoJHtNYXRoLnJvdW5kKF9lKX1weCkgdHJhbnNsYXRlWSgke01hdGgucm91bmQoQmUpfXB4KWAsdGhpcy5fc2Nyb2xsLmFzT2JzZXJ2YWJsZSgpfXJlbGVhc2UoKXt0aGlzLmVsZW1lbnQuc3R5bGUudHJhbnNmb3JtPSIiLHRoaXMucmVtb3ZlU2Ny''@;'; put 'put ''b2xsRXZlbnRMaXN0ZW5lcnMoKX1pc1Bvc2l0aW9uZWQoZyl7Y29uc3QgaD1nZXRDb21wdXRlZFN0eWxlKGcpLnBvc2l0aW9uO3JldHVybiJyZWxhdGl2ZSI9PT1ofHwiYWJzb2x1dGUiPT09aHx8ImZpeGVkIj09PWh9ZW1pdFNjcm9sbEV2ZW50KCl7dGhpcy5fc2Nyb2xsLm5leHQoKX1hZGRT''@;'; put 'put ''Y3JvbGxFdmVudExpc3RlbmVycyhnKXt0aGlzLl9zY3JvbGw9bmV3ICRlO2NvbnN0IGg9ZztsZXQgdj1nO2Zvcig7diYmdiE9PWRvY3VtZW50JiYodGhpcy5zY3JvbGxzKHYpJiYodi5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuYm91bmRPblNjcm9sbExpc3RlbmVyKSx0aGlzLnNj''@;'; put 'put ''cm9sbGFibGVFbGVtZW50cy5wdXNoKHYpKSx2PT09aHx8IXRoaXMuaXNQb3NpdGlvbmVkKHYpKTspdj12LnBhcmVudE5vZGV9cmVtb3ZlU2Nyb2xsRXZlbnRMaXN0ZW5lcnMoKXtmb3IoY29uc3QgZyBvZiB0aGlzLnNjcm9sbGFibGVFbGVtZW50cylnLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNj''@;'; put 'put ''cm9sbCIsdGhpcy5ib3VuZE9uU2Nyb2xsTGlzdGVuZXIpO3RoaXMuc2Nyb2xsYWJsZUVsZW1lbnRzLmxlbmd0aD0wLHRoaXMuX3Njcm9sbCYmKHRoaXMuX3Njcm9sbC5jb21wbGV0ZSgpLGRlbGV0ZSB0aGlzLl9zY3JvbGwpfXNjcm9sbHMoZyl7Y29uc3QgaD1nZXRDb21wdXRlZFN0eWxlKGcp''@;'; put 'put ''O3JldHVybiJzY3JvbGwiPT09aC5vdmVyZmxvd1h8fCJhdXRvIj09PWgub3ZlcmZsb3dYfHwic2Nyb2xsIj09PWgub3ZlcmZsb3dZfHwiYXV0byI9PT1oLm92ZXJmbG93WX19bGV0IG5oZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdil7dGhpcy5wYXJlbnRIb3N0PXYsdGhpcy51cGRh''@;'; put 'put ''dGVBbmNob3I9ITEsdGhpcy5wb3BvdmVyT3B0aW9ucz17fSx0aGlzLmNsb3NlT25PdXRzaWRlQ2xpY2s9ITEsdGhpcy5kb2N1bWVudEVTQ0xpc3RlbmVyPW51bGwsdGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNrQ2FsbGJhY2s9eT0+e3RoaXMuYW5jaG9yRWxlbS5jb250YWlucyh5LnRhcmdldCl8''@;'; put 'put ''fCh0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMSl9LHRoaXMuZWw9aC5nZXQoYm8pLHRoaXMudG9nZ2xlU2VydmljZT1oLmdldCh6cyksdGhpcy5yZW5kZXJlcj1oLmdldChHYSksdGhpcy5uZ1pvbmU9aC5nZXQoX2wpLHRoaXMucmVmPWguZ2V0KGQxKSx0aGlzLmFuY2hvckVsZW09di5uYXRp''@;'; put 'put ''dmVFbGVtZW50LHRoaXMucG9wb3Zlckluc3RhbmNlPW5ldyBpUmUodGhpcy5lbC5uYXRpdmVFbGVtZW50KSx0aGlzLnN1YnNjcmlwdGlvbj10aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUoeT0+e3k/KHRoaXMuYW5jaG9yKCksdGhpcy5hdHRhY2hFU0NMaXN0ZW5lcigp''@;'; put 'put ''KToodGhpcy5yZWxlYXNlKCksdGhpcy5kZXRhY2hFU0NMaXN0ZW5lcigpKX0pLHRoaXMudG9nZ2xlU2VydmljZS5vcGVuJiYodGhpcy5hbmNob3IoKSx0aGlzLmF0dGFjaEVTQ0xpc3RlbmVyKCkpfWFuY2hvcigpe3RoaXMudXBkYXRlQW5jaG9yPSEwfXJlbGVhc2UoKXt0aGlzLmRldGFjaE91''@;'; put 'put ''dHNpZGVDbGlja0xpc3RlbmVyKCksdGhpcy5wb3BvdmVySW5zdGFuY2UucmVsZWFzZSgpfW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe3RoaXMudXBkYXRlQW5jaG9yJiYodGhpcy51cGRhdGVBbmNob3I9ITEsdGhpcy5wb3BvdmVySW5zdGFuY2UuYW5jaG9yKHRoaXMuYW5jaG9yRWxlbSx0aGlzLmFu''@;'; put 'put ''Y2hvclBvaW50LHRoaXMucG9wb3ZlclBvaW50LHRoaXMucG9wb3Zlck9wdGlvbnMpLnN1YnNjcmliZSgoKT0+e3RoaXMudG9nZ2xlU2VydmljZS5vcGVuPSExfSksdGhpcy5hdHRhY2hPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpKX1uZ09uRGVzdHJveSgpe3RoaXMucmVsZWFzZSgpLHRoaXMuZGV0''@;'; put 'put ''YWNoRVNDTGlzdGVuZXIoKSx0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfWdldCBpc09mZlNjcmVlbigpe3JldHVybiF0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbn1hdHRhY2hFU0NMaXN0ZW5lcigpe3RoaXMucG9wb3Zlck9wdGlvbnMuaWdub3JlR2xvYmFsRVNDTGlzdGVuZXJ8fHRo''@;'; put 'put ''aXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5kb2N1bWVudEVTQ0xpc3RlbmVyPXRoaXMucmVuZGVyZXIubGlzdGVuKCJkb2N1bWVudCIsImtleWRvd24iLGg9PntoJiZoLmtleSYmKCJFc2NhcGUiPT09aC5rZXl8fCJFc2MiPT09aC5rZXkpJiZ0aGlzLm5nWm9uZS5ydW4o''@;'; put 'put ''KCk9Pnt0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMSx0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKX0pfSl9KX1kZXRhY2hFU0NMaXN0ZW5lcigpe3RoaXMuZG9jdW1lbnRFU0NMaXN0ZW5lciYmKHRoaXMuZG9jdW1lbnRFU0NMaXN0ZW5lcigpLHRoaXMuZG9jdW1lbnRFU0NMaXN0ZW5lcj1udWxs''@;'; put 'put ''KX1hdHRhY2hPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpe3RoaXMuY2xvc2VPbk91dHNpZGVDbGljayYmdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4mJmRvY3VtZW50JiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyJiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5jbG9zZU9u''@;'; put 'put ''T3V0c2lkZUNsaWNrQ2FsbGJhY2ssITApfWRldGFjaE91dHNpZGVDbGlja0xpc3RlbmVyKCl7dGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNrJiZkb2N1bWVudCYmZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuY2xv''@;'; put 'put ''c2VPbk91dHNpZGVDbGlja0NhbGxiYWNrLCEwKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoU3MpLEt0KGJvLDQpKX0sZC5cdTAyNzVkaXI9V2koe3R5cGU6ZCxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmRmko''@;'; put 'put ''ImlzLW9mZi1zY3JlZW4iLHYuaXNPZmZTY3JlZW4pfX0pLGR9KSgpLGJTPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBuaGV7Y29uc3RydWN0b3IoaCx2LHksQyl7aWYoIXYpdGhyb3cgbmV3IEVycm9yKCJjbHItZHJvcGRvd24tbWVudSBzaG91bGQgb25seSBiZSB1c2VkIGluc2lkZSBvZiBhIGNs''@;'; put 'put ''ci1kcm9wZG93biIpO3N1cGVyKGgsdikseT8odGhpcy5hbmNob3JQb2ludD1nMC5SSUdIVF9UT1AsdGhpcy5wb3BvdmVyUG9pbnQ9ZzAuTEVGVF9UT1ApOih0aGlzLmFuY2hvclBvaW50PWcwLkJPVFRPTV9MRUZULHRoaXMucG9wb3ZlclBvaW50PWcwLkxFRlRfVE9QKSx0aGlzLnBvcG92ZXJP''@;'; put 'put ''cHRpb25zLmFsbG93TXVsdGlwbGVPcGVuPSEwLHRoaXMucG9wb3Zlck9wdGlvbnMuaWdub3JlR2xvYmFsRVNDTGlzdGVuZXI9ITAsdGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNrPSEwLHRoaXMuZm9jdXNIYW5kbGVyPUN9c2V0IHBvc2l0aW9uKGgpe3N3aXRjaChoKXtjYXNlInRvcC1yaWdodCI6''@;'; put 'put ''dGhpcy5hbmNob3JQb2ludD1nMC5UT1BfUklHSFQsdGhpcy5wb3BvdmVyUG9pbnQ9ZzAuUklHSFRfQk9UVE9NO2JyZWFrO2Nhc2UidG9wLWxlZnQiOnRoaXMuYW5jaG9yUG9pbnQ9ZzAuVE9QX0xFRlQsdGhpcy5wb3BvdmVyUG9pbnQ9ZzAuTEVGVF9CT1RUT007YnJlYWs7Y2FzZSJib3R0b20t''@;'; put 'put ''cmlnaHQiOnRoaXMuYW5jaG9yUG9pbnQ9ZzAuQk9UVE9NX1JJR0hULHRoaXMucG9wb3ZlclBvaW50PWcwLlJJR0hUX1RPUDticmVhaztjYXNlImJvdHRvbS1sZWZ0IjpkZWZhdWx0OnRoaXMuYW5jaG9yUG9pbnQ9ZzAuQk9UVE9NX0xFRlQsdGhpcy5wb3BvdmVyUG9pbnQ9ZzAuTEVGVF9UT1A7''@;'; put 'put ''YnJlYWs7Y2FzZSJyaWdodC10b3AiOnRoaXMuYW5jaG9yUG9pbnQ9ZzAuUklHSFRfVE9QLHRoaXMucG9wb3ZlclBvaW50PWcwLkxFRlRfVE9QO2JyZWFrO2Nhc2UicmlnaHQtYm90dG9tIjp0aGlzLmFuY2hvclBvaW50PWcwLlJJR0hUX0JPVFRPTSx0aGlzLnBvcG92ZXJQb2ludD1nMC5MRUZU''@;'; put 'put ''X0JPVFRPTTticmVhaztjYXNlImxlZnQtdG9wIjp0aGlzLmFuY2hvclBvaW50PWcwLkxFRlRfVE9QLHRoaXMucG9wb3ZlclBvaW50PWcwLlJJR0hUX1RPUDticmVhaztjYXNlImxlZnQtYm90dG9tIjp0aGlzLmFuY2hvclBvaW50PWcwLkxFRlRfQk9UVE9NLHRoaXMucG9wb3ZlclBvaW50PWcw''@;'; put 'put ''LlJJR0hUX0JPVFRPTX19bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5mb2N1c0hhbmRsZXIuY29udGFpbmVyPXRoaXMuZWwubmF0aXZlRWxlbWVudCx0aGlzLml0ZW1zLmNoYW5nZXMuc3Vic2NyaWJlKCgpPT50aGlzLmZvY3VzSGFuZGxlci5hZGRDaGlsZHJlbih0aGlzLml0ZW1zLnRvQXJy''@;'; put 'put ''YXkoKSkpLHRoaXMuaXRlbXMubm90aWZ5T25DaGFuZ2VzKCl9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLHRoaXMuZm9jdXNIYW5kbGVyLnJlc2V0Q2hpbGRyZW4oKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoU3MpLEt0KHRm''@;'; put 'put ''LDgpLEt0KGQsMTIpLEt0KHRoZSkpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItZHJvcGRvd24tbWVudSJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihoLHYseSl7aWYoMSZoJiZ4byh5LGxxLDQpLDImaCl7bGV0IEM7SGkoQz0kaSgpKSYmKHYuaXRlbXM9Qyl9''@;'; put 'put ''fSxob3N0VmFyczozLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmKEdpKCJyb2xlIiwibWVudSIpLEZpKCJkcm9wZG93bi1tZW51IiwhMCkpfSxpbnB1dHM6e3Bvc2l0aW9uOlsiY2xyUG9zaXRpb24iLCJwb3NpdGlvbiJdfSxmZWF0dXJlczpbRG9dLG5nQ29udGVudFNlbGVjdG9y''@;'; put 'put ''czpuYSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKCksTmkoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxfUz0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMpe3RoaXMudG9nZ2xlU2VydmljZT12LHRoaXMuaXNSb290TGV2ZWxUb2dn''@;'; put 'put ''bGU9ITAsaC5wYXJlbnQmJih0aGlzLmlzUm9vdExldmVsVG9nZ2xlPSExKSxDLnRyaWdnZXI9eS5uYXRpdmVFbGVtZW50fWdldCBhY3RpdmUoKXtyZXR1cm4gdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW59b25Ecm9wZG93blRyaWdnZXJDbGljayhoKXt0aGlzLnRvZ2dsZVNlcnZpY2UudG9nZ2xl''@;'; put 'put ''V2l0aEV2ZW50KGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdCh3diksS3QoenMpLEt0KGJvKSxLdCh0aGUpKX0sZC5cdTAyNzVkaXI9V2koe3R5cGU6ZCxzZWxlY3RvcnM6W1siIiwiY2xyRHJvcGRvd25UcmlnZ2VyIiwiIl0sWyIiLCJjbHJE''@;'; put 'put ''cm9wZG93blRvZ2dsZSIsIiJdXSxob3N0VmFyczoxMCxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJkduKCJjbGljayIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25Ecm9wZG93blRyaWdnZXJDbGljayhDKX0pLDImaCYmKEdpKCJhcmlhLWhhc3BvcHVwIiwibWVudSIpKCJhcmlhLWV4''@;'; put 'put ''cGFuZGVkIix2LmFjdGl2ZSksRmkoImRyb3Bkb3duLXRvZ2dsZSIsdi5pc1Jvb3RMZXZlbFRvZ2dsZSkoImRyb3Bkb3duLWl0ZW0iLCF2LmlzUm9vdExldmVsVG9nZ2xlKSgiZXhwYW5kYWJsZSIsIXYuaXNSb290TGV2ZWxUb2dnbGUpKCJhY3RpdmUiLHYuYWN0aXZlKSl9fSksZH0pKCkscmhl''@;'; put 'put ''PSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W1tiYV0scWEsRHNdfSksZH0pKCk7Y29uc3Qgb1JlPVsiaW5mbyIsIndhcm5pbmciLCJk''@;'; put 'put ''YW5nZXIiLCJzdWNjZXNzIl07bGV0IGloZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuY29tbW9uU3RyaW5ncz1oLHRoaXMuZGVmYXVsdEljb25TaGFwZT0iaW5mby1jaXJjbGUiLHRoaXMuX2FsZXJ0SWNvblNoYXBlPSIiLHRoaXMuX2FsZXJ0VHlwZT0iaW5mbyJ9Z2V0IGFs''@;'; put 'put ''ZXJ0VHlwZSgpe3JldHVybiB0aGlzLl9hbGVydFR5cGV9c2V0IGFsZXJ0VHlwZShoKXtvUmUuaW5kZXhPZihoKT4tMSYmKHRoaXMuX2FsZXJ0VHlwZT1oKX1nZXQgYWxlcnRJY29uU2hhcGUoKXtyZXR1cm4iIj09PXRoaXMuX2FsZXJ0SWNvblNoYXBlP3RoaXMuaWNvbkluZm9Gcm9tVHlwZSh0''@;'; put 'put ''aGlzLl9hbGVydFR5cGUpLnNoYXBlOnRoaXMuX2FsZXJ0SWNvblNoYXBlfXNldCBhbGVydEljb25TaGFwZShoKXtoP2ghPT10aGlzLl9hbGVydEljb25TaGFwZSYmKHRoaXMuX2FsZXJ0SWNvblNoYXBlPWgpOnRoaXMuX2FsZXJ0SWNvblNoYXBlPSIifWdldCBhbGVydEljb25UaXRsZSgpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmljb25JbmZvRnJvbVR5cGUodGhpcy5fYWxlcnRUeXBlKS50aXRsZX1pY29uSW5mb0Zyb21UeXBlKGgpe2NvbnN0IHY9e3NoYXBlOiIiLGNzc0NsYXNzOiIiLHRpdGxlOiIifTtzd2l0Y2goaCl7Y2FzZSJ3YXJuaW5nIjp2LnNoYXBlPSJleGNsYW1hdGlvbi10cmlhbmdsZSIs''@;'; put 'put ''di5jc3NDbGFzcz0iYWxlcnQtd2FybmluZyIsdi50aXRsZT10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy53YXJuaW5nO2JyZWFrO2Nhc2UiZGFuZ2VyIjp2LnNoYXBlPSJleGNsYW1hdGlvbi1jaXJjbGUiLHYuY3NzQ2xhc3M9ImFsZXJ0LWRhbmdlciIsdi50aXRsZT10aGlzLmNvbW1vblN0cmlu''@;'; put 'put ''Z3Mua2V5cy5kYW5nZXI7YnJlYWs7Y2FzZSJzdWNjZXNzIjp2LnNoYXBlPSJjaGVjay1jaXJjbGUiLHYuY3NzQ2xhc3M9ImFsZXJ0LXN1Y2Nlc3MiLHYudGl0bGU9dGhpcy5jb21tb25TdHJpbmdzLmtleXMuc3VjY2VzczticmVhaztkZWZhdWx0OnYuc2hhcGU9dGhpcy5kZWZhdWx0SWNvblNo''@;'; put 'put ''YXBlLHYuY3NzQ2xhc3M9ImFsZXJ0LWluZm8iLHYudGl0bGU9dGhpcy5jb21tb25TdHJpbmdzLmtleXMuaW5mb31yZXR1cm4gdn19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoQ2kobnMpKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6''@;'; put 'put ''ZC5cdTAyNzVmYWN9KSxkfSkoKSxDcT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fY2hhbmdlPW5ldyAkZX1nZXQgY2hhbmdlcygpe3JldHVybiB0aGlzLl9jaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Z2V0IGN1cnJlbnQoKXtyZXR1cm4gdGhpcy5fY3VycmVudH1zZXQgY3VycmVu''@;'; put 'put ''dChoKXtoIT09dGhpcy5fY3VycmVudCYmKHRoaXMuX2N1cnJlbnQ9aCx0aGlzLl9jaGFuZ2UubmV4dChoKSl9Z2V0IGFjdGl2ZUFsZXJ0cygpe3JldHVybiB0aGlzLmFsbEFsZXJ0cyYmdGhpcy5hbGxBbGVydHMuZmlsdGVyKGg9PiFoLl9jbG9zZWQpfWdldCBjdXJyZW50QWxlcnQoKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5hY3RpdmVBbGVydHMmJnRoaXMuYWN0aXZlQWxlcnRzW3RoaXMuY3VycmVudF19c2V0IGN1cnJlbnRBbGVydChoKXt0aGlzLmN1cnJlbnQ9dGhpcy5hY3RpdmVBbGVydHMuaW5kZXhPZihoKX1nZXQgY291bnQoKXtyZXR1cm4gdGhpcy5hY3RpdmVBbGVydHMmJnRoaXMuYWN0aXZl''@;'; put 'put ''QWxlcnRzLmxlbmd0aHx8MH1tYW5hZ2UoaCl7dGhpcy5zdWJzY3JpcHRpb24mJnRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5hbGxBbGVydHM9aCx0aGlzLmN1cnJlbnQ9Im51bWJlciI9PXR5cGVvZiB0aGlzLl9jdXJyZW50P3RoaXMuX2N1cnJlbnQ6MCx0aGlzLl9jaGFu''@;'; put 'put ''Z2UubmV4dCh0aGlzLmN1cnJlbnQpLHRoaXMuc3Vic2NyaXB0aW9uPXRoaXMuYWxsQWxlcnRzLmNoYW5nZXMuc3Vic2NyaWJlKCgpPT57dGhpcy5jdXJyZW50Pj10aGlzLmFsbEFsZXJ0cy5sZW5ndGgmJih0aGlzLmN1cnJlbnQ9TWF0aC5tYXgoMCx0aGlzLmFsbEFsZXJ0cy5sZW5ndGgtMSkp''@;'; put 'put ''fSl9bmV4dCgpe3RoaXMuX2N1cnJlbnQ9dGhpcy5jdXJyZW50PT09dGhpcy5hY3RpdmVBbGVydHMubGVuZ3RoLTE/MDp0aGlzLmN1cnJlbnQrMSx0aGlzLl9jaGFuZ2UubmV4dCh0aGlzLl9jdXJyZW50KX1wcmV2aW91cygpezAhPT10aGlzLmFjdGl2ZUFsZXJ0cy5sZW5ndGgmJih0aGlzLl9j''@;'; put 'put ''dXJyZW50PTA9PT10aGlzLmN1cnJlbnQ/dGhpcy5hY3RpdmVBbGVydHMubGVuZ3RoLTE6dGhpcy5jdXJyZW50LTEsdGhpcy5fY2hhbmdlLm5leHQodGhpcy5fY3VycmVudCkpfW9wZW4oKXswIT09dGhpcy5hY3RpdmVBbGVydHMubGVuZ3RoJiYodGhpcy5jdXJyZW50QWxlcnR8fCh0aGlzLl9j''@;'; put 'put ''dXJyZW50PTApLHRoaXMuX2NoYW5nZS5uZXh0KHRoaXMuX2N1cnJlbnQpKX1jbG9zZShoKXswIT09dGhpcy5hY3RpdmVBbGVydHMubGVuZ3RoJiYoaCYmKHRoaXMuX2N1cnJlbnQ9TWF0aC5tYXgoMCx0aGlzLmN1cnJlbnQtMSkpLHRoaXMuX2NoYW5nZS5uZXh0KHRoaXMuX2N1cnJlbnQpKX1k''@;'; put 'put ''ZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb24mJnRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLHBa''@;'; put 'put ''PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5pY29uU2VydmljZT1oLHRoaXMuY2RyPXYsdGhpcy5tdWx0aUFsZXJ0U2VydmljZT15LHRoaXMuY29tbW9uU3RyaW5ncz1DLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLmlzU21hbGw9ITEsdGhpcy5jbG9zYWJsZT0h''@;'; put 'put ''MCx0aGlzLmlzQXBwTGV2ZWw9ITEsdGhpcy5jbHJDbG9zZUJ1dHRvbkFyaWFMYWJlbD10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5hbGVydENsb3NlQnV0dG9uQXJpYUxhYmVsLHRoaXMuX2Nsb3NlZD0hMSx0aGlzLl9jbG9zZWRDaGFuZ2VkPW5ldyBhcighMSl9bmdPbkluaXQoKXt0aGlzLm11''@;'; put 'put ''bHRpQWxlcnRTZXJ2aWNlJiZ0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmNoYW5nZXMuc3Vic2NyaWJlKCgpPT57dGhpcy5oaWRkZW49dGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jdXJyZW50QWxlcnQhPT10aGlzfSkpfW5nT25EZXN0cm95KCl7dGhpcy5z''@;'; put 'put ''dWJzY3JpcHRpb25zLmZvckVhY2goaD0+aC51bnN1YnNjcmliZSgpKX1zZXQgY2xvc2VkKGgpe2gmJiF0aGlzLl9jbG9zZWQ/dGhpcy5jbG9zZSgpOiFoJiZ0aGlzLl9jbG9zZWQmJnRoaXMub3BlbigpfXNldCBhbGVydFR5cGUoaCl7dGhpcy5pY29uU2VydmljZS5hbGVydFR5cGU9aH1nZXQg''@;'; put 'put ''YWxlcnRUeXBlKCl7cmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuYWxlcnRUeXBlfXNldCBhbGVydEljb25TaGFwZShoKXt0aGlzLmljb25TZXJ2aWNlLmFsZXJ0SWNvblNoYXBlPWh9Z2V0IGFsZXJ0Q2xhc3MoKXtyZXR1cm4gdGhpcy5pY29uU2VydmljZS5pY29uSW5mb0Zyb21UeXBlKHRoaXMu''@;'; put 'put ''aWNvblNlcnZpY2UuYWxlcnRUeXBlKS5jc3NDbGFzc31zZXQgaGlkZGVuKGgpe2ghPT10aGlzLl9oaWRkZW4mJih0aGlzLl9oaWRkZW49aCx0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpfWdldCBoaWRkZW4oKXtyZXR1cm4gdGhpcy5faGlkZGVufWNsb3NlKCl7dmFyIGg7aWYoIXRoaXMuY2xv''@;'; put 'put ''c2FibGUpcmV0dXJuO2NvbnN0IHY9KG51bGw9PT0oaD10aGlzLm11bHRpQWxlcnRTZXJ2aWNlKXx8dm9pZCAwPT09aD92b2lkIDA6aC5jdXJyZW50QWxlcnQpPT09dGhpczt0aGlzLl9jbG9zZWQ9ITAsdGhpcy5tdWx0aUFsZXJ0U2VydmljZSYmdGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jbG9z''@;'; put 'put ''ZSh2KSx0aGlzLl9jbG9zZWRDaGFuZ2VkLmVtaXQoITApfW9wZW4oKXt0aGlzLl9jbG9zZWQ9ITEsdGhpcy5tdWx0aUFsZXJ0U2VydmljZSYmdGhpcy5tdWx0aUFsZXJ0U2VydmljZS5vcGVuKCksdGhpcy5fY2xvc2VkQ2hhbmdlZC5lbWl0KCExKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0''@;'; put 'put ''aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoaWhlKSxLdChkMSksS3QoQ3EsOCksS3QobnMpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLWFsZXJ0Il1dLGlucHV0czp7aXNTbWFsbDpbImNsckFsZXJ0U2l6ZVNtYWxsIiwiaXNTbWFsbCJdLGNsb3NhYmxlOlsi''@;'; put 'put ''Y2xyQWxlcnRDbG9zYWJsZSIsImNsb3NhYmxlIl0saXNBcHBMZXZlbDpbImNsckFsZXJ0QXBwTGV2ZWwiLCJpc0FwcExldmVsIl0sY2xyQ2xvc2VCdXR0b25BcmlhTGFiZWw6ImNsckNsb3NlQnV0dG9uQXJpYUxhYmVsIixjbG9zZWQ6WyJjbHJBbGVydENsb3NlZCIsImNsb3NlZCJdLGFsZXJ0''@;'; put 'put ''VHlwZTpbImNsckFsZXJ0VHlwZSIsImFsZXJ0VHlwZSJdLGFsZXJ0SWNvblNoYXBlOlsiY2xyQWxlcnRJY29uIiwiYWxlcnRJY29uU2hhcGUiXX0sb3V0cHV0czp7X2Nsb3NlZENoYW5nZWQ6ImNsckFsZXJ0Q2xvc2VkQ2hhbmdlIn0sZmVhdHVyZXM6W2hvKFtpaGVdKV0sbmdDb250ZW50U2Vs''@;'; put 'put ''ZWN0b3JzOm5hLGRlY2xzOjEsdmFyczoxLGNvbnN0czpbWyJjbGFzcyIsImFsZXJ0IiwzLCJuZ0NsYXNzIiwiYWxlcnQtaGlkZGVuIiwiYWxlcnQtc20iLCJhbGVydC1hcHAtbGV2ZWwiLDQsIm5nSWYiXSxbMSwiYWxlcnQiLDMsIm5nQ2xhc3MiXSxbMSwiYWxlcnQtaXRlbXMiXSxbInR5cGUi''@;'; put 'put ''LCJidXR0b24iLCJjbGFzcyIsImNsb3NlIiwzLCJjbGljayIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2xvc2UiLDMsImNsaWNrIl0sWyJzaGFwZSIsIndpbmRvdy1jbG9zZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKCkscm4oMCxCZiw0LDgsImRpdiIsMCkp''@;'; put 'put ''LDImaCYmVHQoIm5nSWYiLCF2Ll9jbG9zZWQpfSxkZXBlbmRlbmNpZXM6W05vLGxjLFpvXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9Il19KSxkfSkoKSxTeWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmljb25TZXJ2aWNlPWh9fXJldHVybiBk''@;'; put 'put ''Llx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGloZSkpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItYWxlcnQtaXRlbSJdXSxob3N0QXR0cnM6WzEsImFsZXJ0LWl0ZW0iXSxuZ0NvbnRlbnRTZWxlY3RvcnM6bmEsZGVjbHM6Myx2YXJz''@;'; put 'put ''OjIsY29uc3RzOltbMSwiYWxlcnQtaWNvbi13cmFwcGVyIl0sWyJyb2xlIiwiaW1nIiwxLCJhbGVydC1pY29uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoSzAoKSxudCgwLCJkaXYiLDApLENyKDEsImNkcy1pY29uIiwxKSxvdCgpLE5pKDIpKSwyJmgmJih1dCgxKSxHaSgic2hh''@;'; put 'put ''cGUiLHYuaWNvblNlcnZpY2UuYWxlcnRJY29uU2hhcGUpKCJhcmlhLWxhYmVsIix2Lmljb25TZXJ2aWNlLmFsZXJ0SWNvblRpdGxlKSl9LGRlcGVuZGVuY2llczpbWm9dLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLGdaPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlv''@;'; put 'put ''bihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLDgsImFsZXJ0LXRleHQiXV19KSxkfSkoKSxNeWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMubXVsdGlBbGVydFNlcnZpY2U9aCx0aGlzLmNvbW1vblN0cmluZ3M9''@;'; put 'put ''dix0aGlzLmN1cnJlbnRBbGVydENoYW5nZT1uZXcgYXIoITEpLHRoaXMuY3VycmVudEFsZXJ0SW5kZXhDaGFuZ2U9bmV3IGFyfXNldCBjdXJyZW50QWxlcnQoaCl7aCYmKHRoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudEFsZXJ0PWgpfWdldCBjdXJyZW50QWxlcnQoKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5tdWx0aUFsZXJ0U2VydmljZS5jdXJyZW50QWxlcnR9c2V0IGN1cnJlbnRBbGVydEluZGV4KGgpe3RoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudD1ofWdldCBjdXJyZW50QWxlcnRJbmRleCgpe3JldHVybiB0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnR9bmdPbkluaXQoKXt0''@;'; put 'put ''aGlzLm11bHRpQWxlcnRTZXJ2aWNlQ2hhbmdlcz10aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmNoYW5nZXMuc3Vic2NyaWJlKGg9Pnt0aGlzLmN1cnJlbnRBbGVydEluZGV4Q2hhbmdlLmVtaXQoaCksdGhpcy5jdXJyZW50QWxlcnRDaGFuZ2UuZW1pdCh0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmFj''@;'; put 'put ''dGl2ZUFsZXJ0c1toXSl9KX1wYWdlVXAoKXt0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLm5leHQoKX1wYWdlRG93bigpe3RoaXMubXVsdGlBbGVydFNlcnZpY2UucHJldmlvdXMoKX1uZ09uRGVzdHJveSgpe3RoaXMubXVsdGlBbGVydFNlcnZpY2VDaGFuZ2VzLnVuc3Vic2NyaWJlKCl9fXJldHVy''@;'; put 'put ''biBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KENxKSxLdChucykpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItYWxlcnRzLXBhZ2VyIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZGaSgiYWxl''@;'; put 'put ''cnRzLXBhZ2VyIiwhMCl9LGlucHV0czp7Y3VycmVudEFsZXJ0OlsiY2xyQ3VycmVudEFsZXJ0IiwiY3VycmVudEFsZXJ0Il0sY3VycmVudEFsZXJ0SW5kZXg6WyJjbHJDdXJyZW50QWxlcnRJbmRleCIsImN1cnJlbnRBbGVydEluZGV4Il19LG91dHB1dHM6e2N1cnJlbnRBbGVydENoYW5nZToi''@;'; put 'put ''Y2xyQ3VycmVudEFsZXJ0Q2hhbmdlIixjdXJyZW50QWxlcnRJbmRleENoYW5nZToiY2xyQ3VycmVudEFsZXJ0SW5kZXhDaGFuZ2UifSxkZWNsczo5LHZhcnM6NCxjb25zdHM6W1sxLCJhbGVydHMtcGFnZXItY29udHJvbCJdLFsxLCJhbGVydHMtcGFnZS1kb3duIl0sWzEsImFsZXJ0cy1wYWdl''@;'; put 'put ''ci1idXR0b24iLDMsImNsaWNrIl0sWyJzaGFwZSIsImFuZ2xlIiwiZGlyZWN0aW9uIiwibGVmdCJdLFsxLCJhbGVydHMtcGFnZXItdGV4dCJdLFsxLCJhbGVydHMtcGFnZS11cCJdLFsic2hhcGUiLCJhbmdsZSIsImRpcmVjdGlvbiIsInJpZ2h0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7''@;'; put 'put ''MSZoJiYobnQoMCwiZGl2IiwwKSgxLCJkaXYiLDEpKDIsImJ1dHRvbiIsMiksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LnBhZ2VEb3duKCl9KSxDcigzLCJjZHMtaWNvbiIsMyksb3QoKSgpLG50KDQsImRpdiIsNCksWXQoNSksb3QoKSxudCg2LCJkaXYiLDUpKDcsImJ1dHRvbiIs''@;'; put 'put ''MiksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LnBhZ2VVcCgpfSksQ3IoOCwiY2RzLWljb24iLDYpLG90KCkoKSgpKSwyJmgmJih1dCgzKSxHaSgidGl0bGUiLHYuY29tbW9uU3RyaW5ncy5rZXlzLnByZXZpb3VzKSx1dCgyKSxGaCgiIix2Lm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJl''@;'; put 'put ''bnQrMSwiIC8gIix2Lm11bHRpQWxlcnRTZXJ2aWNlLmNvdW50LCIiKSx1dCgzKSxHaSgidGl0bGUiLHYuY29tbW9uU3RyaW5ncy5rZXlzLm5leHQpKX0sZGVwZW5kZW5jaWVzOltab10sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksRXllPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhp''@;'; put 'put ''cy5tdWx0aUFsZXJ0U2VydmljZT1oLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLmN1cnJlbnRBbGVydEluZGV4Q2hhbmdlPW5ldyBhcighMSksdGhpcy5jdXJyZW50QWxlcnRDaGFuZ2U9bmV3IGFyKCExKX1zZXQgYWxsQWxlcnRzKGgpe3RoaXMubXVsdGlBbGVydFNlcnZpY2UubWFuYWdl''@;'; put 'put ''KGgpfXNldCBfaW5wdXRDdXJyZW50SW5kZXgoaCl7TnVtYmVyLmlzSW50ZWdlcihoKSYmaD49MCYmKHRoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudD1oKX1zZXQgY3VycmVudEFsZXJ0SW5kZXgoaCl7dGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jdXJyZW50PWh9Z2V0IGN1cnJlbnRBbGVy''@;'; put 'put ''dEluZGV4KCl7cmV0dXJuIHRoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudH1zZXQgY3VycmVudEFsZXJ0KGgpe2gmJih0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnRBbGVydD1oKX1nZXQgY3VycmVudEFsZXJ0KCl7cmV0dXJuIHRoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVu''@;'; put 'put ''dEFsZXJ0fWdldCBhbGVydHMoKXtyZXR1cm4gdGhpcy5hbGxBbGVydHMuZmlsdGVyKGg9PiExPT09aC5oaWRkZW4pfWdldCBjdXJyZW50QWxlcnRUeXBlKCl7cmV0dXJuIHRoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudEFsZXJ0P3RoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudEFs''@;'; put 'put ''ZXJ0LmFsZXJ0VHlwZToiIn1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmNoYW5nZXMuc3Vic2NyaWJlKGg9Pnt0aGlzLmN1cnJlbnRBbGVydEluZGV4Q2hhbmdlLm5leHQoaCksdGhpcy5jdXJyZW50QWxlcnRDaGFu''@;'; put 'put ''Z2UubmV4dCh0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnRBbGVydCl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT5oLnVuc3Vic2NyaWJlKCkpLHRoaXMubXVsdGlBbGVydFNlcnZpY2UuZGVzdHJveSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVu''@;'; put 'put ''Y3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChDcSkpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItYWxlcnRzIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGgsdix5KXtpZigxJmgmJnhvKHkscFosNCksMiZoKXtsZXQgQztIaShDPSRpKCkpJiYodi5hbGxB''@;'; put 'put ''bGVydHM9Qyl9fSxob3N0VmFyczoxMCxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkZpKCJhbGVydHMiLCEwKSgiYWxlcnQtZGFuZ2VyIiwiZGFuZ2VyIj09di5jdXJyZW50QWxlcnRUeXBlKSgiYWxlcnQtaW5mbyIsImluZm8iPT12LmN1cnJlbnRBbGVydFR5cGUpKCJhbGVydC1z''@;'; put 'put ''dWNjZXNzIiwic3VjY2VzcyI9PXYuY3VycmVudEFsZXJ0VHlwZSkoImFsZXJ0LXdhcm5pbmciLCJ3YXJuaW5nIj09di5jdXJyZW50QWxlcnRUeXBlKX0saW5wdXRzOntfaW5wdXRDdXJyZW50SW5kZXg6WyJjbHJDdXJyZW50QWxlcnRJbmRleCIsIl9pbnB1dEN1cnJlbnRJbmRleCJdLGN1cnJl''@;'; put 'put ''bnRBbGVydDpbImNsckN1cnJlbnRBbGVydCIsImN1cnJlbnRBbGVydCJdfSxvdXRwdXRzOntjdXJyZW50QWxlcnRJbmRleENoYW5nZToiY2xyQ3VycmVudEFsZXJ0SW5kZXhDaGFuZ2UiLGN1cnJlbnRBbGVydENoYW5nZToiY2xyQ3VycmVudEFsZXJ0Q2hhbmdlIn0sZmVhdHVyZXM6W2hvKFtD''@;'; put 'put ''cV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6RiQsZGVjbHM6Mix2YXJzOjEsY29uc3RzOltbMywiY2xyQ3VycmVudEFsZXJ0SW5kZXgiLDQsIm5nSWYiXSxbMywiY2xyQ3VycmVudEFsZXJ0SW5kZXgiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihLMChFTCkscm4oMCxmaCwxLDEsImNs''@;'; put 'put ''ci1hbGVydHMtcGFnZXIiLDApLE5pKDEpKSwyJmgmJlR0KCJuZ0lmIix2Lm11bHRpQWxlcnRTZXJ2aWNlLmNvdW50PjEpfSxkZXBlbmRlbmNpZXM6W015ZSxOb10sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmJsb2NrfSJdfSksZH0pKCkseHllPSgoKT0+e2NsYXNzIGR7Y29u''@;'; put 'put ''c3RydWN0b3IoKXtocy5hZGRJY29ucyhUZixtWCxLaCxqc2UsU2spfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHtpbXBvcnRzOltbYmEsRHMscmhlXV19KSxkfSkoKSxhUmU9''@;'; put 'put ''KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbeHllXX0pLGR9KSgpLHFzPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLk5BVl9MRVZFTF8x''@;'; put 'put ''PTEsZC5OQVZfTEVWRUxfMj0yLGQuTkFWX0NMT1NFX0FMTD0iTkFWX0NMT1NFX0FMTCIsZC5OQVZfT1BFTj0iTkFWX09QRU4iLGQuTkFWX0NMT1NFPSJOQVZfQ0xPU0UiLGQuTkFWX1RPR0dMRT0iTkFWX1RPR0dMRSIsZC5OQVZfQ0xBU1NfSEFNQlVSR0VSX01FTlU9Im9wZW4taGFtYnVyZ2Vy''@;'; put 'put ''LW1lbnUiLGQuTkFWX0NMQVNTX09WRVJGTE9XX01FTlU9Im9wZW4tb3ZlcmZsb3ctbWVudSIsZC5OQVZfQ0xBU1NfVFJJR0dFUl8xPSJoZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXIiLGQuTkFWX0NMQVNTX1RSSUdHRVJfMj0iaGVhZGVyLW92ZXJmbG93LXRyaWdnZXIiLGQuTkFWX0NMQVNTX0xF''@;'; put 'put ''VkVMXzE9ImNsci1uYXYtbGV2ZWwtMSIsZC5OQVZfQ0xBU1NfTEVWRUxfMj0iY2xyLW5hdi1sZXZlbC0yIixkfSkoKTtjbGFzcyBUeWV7Y29uc3RydWN0b3IoZyxoKXt0aGlzLl9jb250cm9sQ29kZT1nLHRoaXMuX25hdkxldmVsPWh9Z2V0IGNvbnRyb2xDb2RlKCl7cmV0dXJuIHRoaXMuX2Nv''@;'; put 'put ''bnRyb2xDb2RlfWdldCBuYXZMZXZlbCgpe3JldHVybiB0aGlzLl9uYXZMZXZlbH19bGV0IGtxPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLnJlc3BvbnNpdmVOYXZMaXN0PVtdLHRoaXMucmVnaXN0ZXJOYXZTdWJqZWN0PW5ldyB4ayx0aGlzLmNvbnRyb2xOYXZTdWJqZWN0PW5l''@;'; put 'put ''dyAkZSx0aGlzLmNsb3NlQWxsTmF2cygpfWdldCByZWdpc3RlcmVkTmF2cygpe3JldHVybiB0aGlzLnJlZ2lzdGVyTmF2U3ViamVjdC5hc09ic2VydmFibGUoKX1nZXQgbmF2Q29udHJvbCgpe3JldHVybiB0aGlzLmNvbnRyb2xOYXZTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpfXJlZ2lzdGVyTmF2''@;'; put 'put ''KGgpeyFofHx0aGlzLmlzTmF2UmVnaXN0ZXJlZChoKXx8KHRoaXMucmVzcG9uc2l2ZU5hdkxpc3QucHVzaChoKSx0aGlzLnJlZ2lzdGVyTmF2U3ViamVjdC5uZXh0KHRoaXMucmVzcG9uc2l2ZU5hdkxpc3QpKX1pc05hdlJlZ2lzdGVyZWQoaCl7cmV0dXJuIHRoaXMucmVzcG9uc2l2ZU5hdkxp''@;'; put 'put ''c3QuaW5kZXhPZihoKT4tMSYmKGNvbnNvbGUuZXJyb3IoIk11bHRpcGxlIGNsci1uYXYtbGV2ZWwgIitoKyIgYXR0cmlidXRlcyBmb3VuZC4gUGxlYXNlIG1ha2Ugc3VyZSB0aGF0IG9ubHkgb25lIGV4aXN0cyIpLCEwKX11bnJlZ2lzdGVyTmF2KGgpe2NvbnN0IHY9dGhpcy5yZXNwb25zaXZl''@;'; put 'put ''TmF2TGlzdC5pbmRleE9mKGgpO3Y+LTEmJih0aGlzLnJlc3BvbnNpdmVOYXZMaXN0LnNwbGljZSh2LDEpLHRoaXMucmVnaXN0ZXJOYXZTdWJqZWN0Lm5leHQodGhpcy5yZXNwb25zaXZlTmF2TGlzdCkpfXNlbmRDb250cm9sTWVzc2FnZShoLHYpe2NvbnN0IHk9bmV3IFR5ZShoLHYpO3RoaXMu''@;'; put 'put ''Y29udHJvbE5hdlN1YmplY3QubmV4dCh5KX1jbG9zZUFsbE5hdnMoKXtjb25zdCBoPW5ldyBUeWUocXMuTkFWX0NMT1NFX0FMTCwtOTk5KTt0aGlzLmNvbnRyb2xOYXZTdWJqZWN0Lm5leHQoaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1''@;'; put 'put ''MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpLGxSZT0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUw''@;'; put 'put ''Mjc1aW5qPWIwKHtpbXBvcnRzOltbYmEsRHNdXX0pLGR9KSgpO2Z1bmN0aW9uIER5ZShkKXtjb25zdCBnPWQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3JldHVybiBnLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCIwIiksZy5jbGFzc0xpc3QuYWRkKCJvZmZzY3JlZW4tZm9jdXMtcmVib3VuZGVy''@;'; put 'put ''IiksZ31sZXQgZ1JlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5yZW5kZXJlcj1oLHRoaXMuYWN0aXZlPSExLFNsKHkpJiYodGhpcy5fZG9jdW1lbnQ9di5nZXQoZ3MpKSxDLmZvY3VzVHJhcElkfHwoQy5mb2N1c1RyYXBJZD1mdW5jdGlvbiBZSihkPSJfIil7cmV0''@;'; put 'put ''dXJuYCR7ZH0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLDkpfWB9KCkpLHRoaXMuZm9jdXNUcmFwRWxlbWVudD1DfWVuYWJsZUZvY3VzVHJhcCgpe2NvbnN0IGg9dGhpcy5mb2N1c1RyYXBFbGVtZW50LHY9aC5xdWVyeVNlbGVjdG9yKCJbY2RzLWZpcnN0LWZvY3VzXSIp''@;'; put 'put ''LHk9dGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtpZihyTC5nZXRDdXJyZW50KCk9PT1oKXRocm93IG5ldyBFcnJvcigiRm9jdXMgdHJhcCBpcyBhbHJlYWR5IGVuYWJsZWQgZm9yIHRoaXMgaW5zdGFuY2UuIik7dGhpcy5maXJzdEZvY3VzRWxlbWVudD12fHx0aGlzLmZvY3VzVHJhcEVs''@;'; put 'put ''ZW1lbnQsZnVuY3Rpb24gZFJlKGQsZyl7aWYoZyYmIWcudG9wUmVib3VuZEVsZW1lbnQmJiFnLmJvdHRvbVJlYm91bmRFbGVtZW50KXtnLnRvcFJlYm91bmRFbGVtZW50PUR5ZShkKSxnLmJvdHRvbVJlYm91bmRFbGVtZW50PUR5ZShkKTtjb25zdCBoPWcucGFyZW50RWxlbWVudCx2PWcubmV4''@;'; put 'put ''dFNpYmxpbmc7aCYmKGguaW5zZXJ0QmVmb3JlKGcudG9wUmVib3VuZEVsZW1lbnQsZyksdj9oLmluc2VydEJlZm9yZShnLmJvdHRvbVJlYm91bmRFbGVtZW50LHYpOmguYXBwZW5kQ2hpbGQoZy5ib3R0b21SZWJvdW5kRWxlbWVudCkpfX0odGhpcy5fZG9jdW1lbnQsaCksZnVuY3Rpb24gcjFl''@;'; put 'put ''KGQpe3N3aXRjaChkLnRhZ05hbWUudG9Mb3dlckNhc2UoKSl7Y2FzZSJpbnB1dCI6cmV0dXJuImhpZGRlbiIhPT1kLmdldEF0dHJpYnV0ZSgidHlwZSIpJiYhZC5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIikmJiFkLmhhc0F0dHJpYnV0ZSgicmVhZG9ubHkiKTtjYXNlImJ1dHRvbiI6Y2FzZSJz''@;'; put 'put ''ZWxlY3QiOmNhc2UidGV4dGFyZWEiOnJldHVybiFkLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKTtjYXNlImlmcmFtZSI6Y2FzZSJlbWJlZCI6Y2FzZSJvYmplY3QiOnJldHVybiEwO2Nhc2UiYSI6Y2FzZSJhcmVhIjpyZXR1cm4gZC5oYXNBdHRyaWJ1dGUoImhyZWYiKTtjYXNlImF1ZGlvIjpj''@;'; put 'put ''YXNlInZpZGVvIjpyZXR1cm4gZC5oYXNBdHRyaWJ1dGUoImNvbnRyb2xzIik7ZGVmYXVsdDpyZXR1cm4gZC5oYXNBdHRyaWJ1dGUoInRhYmluZGV4Iil8fCJ0cnVlIj09PWQuZ2V0QXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiKXx8ImJ1dHRvbiI9PT1kLmdldEF0dHJpYnV0ZSgicm9sZSIp''@;'; put 'put ''JiYhZC5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIil9fShoKXx8aC5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSx5JiZmdW5jdGlvbiBsMWUoZCl7cmV0dXJuISFkJiZkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnR9KHkpJiYodGhpcy5wcmV2aW91c0ZvY3VzPXkpLHJMLnNldEN1cnJlbnQo''@;'; put 'put ''aCk7Y29uc3QgQz1zZXRUaW1lb3V0KCgpPT57dGhpcy5maXJzdEZvY3VzRWxlbWVudC5mb2N1cygpLGNsZWFyVGltZW91dChDKX0sMTApO3RoaXMub25Gb2N1c0luRXZlbnQ9dGhpcy5vbkZvY3VzSW4uYmluZCh0aGlzKSx0aGlzLnVubGlzdGVuPXRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMu''@;'; put 'put ''X2RvY3VtZW50LCJmb2N1c2luIix0aGlzLm9uRm9jdXNJbkV2ZW50KSx0aGlzLmFjdGl2ZT0hMH1yZW1vdmVGb2N1c1RyYXAoKXt0aGlzLnVubGlzdGVuJiZ0aGlzLnVubGlzdGVuKCksZnVuY3Rpb24gcFJlKGQpe2lmKGQpe2NvbnN0IGc9ZC5wYXJlbnRFbGVtZW50O2lmKGcpe2NvbnN0IGg9''@;'; put 'put ''ZC50b3BSZWJvdW5kRWxlbWVudCx2PWQuYm90dG9tUmVib3VuZEVsZW1lbnQ7aCYmZy5yZW1vdmVDaGlsZChoKSx2JiZnLnJlbW92ZUNoaWxkKHYpfWRlbGV0ZSBkLnRvcFJlYm91bmRFbGVtZW50LGRlbGV0ZSBkLmJvdHRvbVJlYm91bmRFbGVtZW50fX0odGhpcy5mb2N1c1RyYXBFbGVtZW50''@;'; put 'put ''KSx0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmZvY3VzVHJhcEVsZW1lbnQsInRhYmluZGV4IiksckwuYWN0aXZhdGVQcmV2aW91c0N1cnJlbnQoKSx0aGlzLmFjdGl2ZT0hMSx0aGlzLnByZXZpb3VzRm9jdXMmJnRoaXMucHJldmlvdXNGb2N1cy5mb2N1cygpfW9uRm9jdXNJ''@;'; put 'put ''bihoKXshZnVuY3Rpb24gZlJlKGQsZyxoKXtjb25zdCB2PXJMLmdldEN1cnJlbnQoKT09PWcseT1mdW5jdGlvbiBoUmUoZCxnKXtyZXR1cm4gZD09PWcudG9wUmVib3VuZEVsZW1lbnR8fGQ9PT1nLmJvdHRvbVJlYm91bmRFbGVtZW50fHwhKGcuY29udGFpbnMoZCl8fG51bGwhPT1nJiZnLmNv''@;'; put 'put ''bnRhaW5zKGQpKX0oZCxnKTt2JiZ5PyhoPWh8fGcpLmZvY3VzKCk6ZC5mb2N1cygpfShoLmNvbXBvc2VkUGF0aCgpWzBdLHRoaXMuZm9jdXNUcmFwRWxlbWVudCx0aGlzLmZpcnN0Rm9jdXNFbGVtZW50KX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe0s5KCl9LGQuXHUwMjc1cHJv''@;'; put 'put ''dj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksTHllPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBnUmV7Y29uc3RydWN0b3IoaCx2LHksQyxJKXtzdXBlcihDLEksaCx5Lm5hdGl2ZUVsZW1lbnQpLHRoaXMucmVzcG9uc2l2ZU5hdlNlcnZpY2U9dix0aGlzLmVsZW1lbnRS''@;'; put 'put ''ZWY9eSx0aGlzLl9pc09wZW49ITEsU2woaCkmJih0aGlzLl9kb2N1bWVudD1JLmdldChncykpLHRoaXMuX3N1YnNjcmlwdGlvbj12Lm5hdkNvbnRyb2wucGlwZShPMihaPT5aLm5hdkxldmVsPT09dGhpcy5sZXZlbCksTzIoKHtjb250cm9sQ29kZTpafSk9Plo9PT1xcy5OQVZfT1BFTiYmIXRo''@;'; put 'put ''aXMuaXNPcGVufHxaPT09cXMuTkFWX0NMT1NFJiZ0aGlzLmlzT3BlbikpLnN1YnNjcmliZSgoe2NvbnRyb2xDb2RlOlp9KT0+e1ohPT1xcy5OQVZfT1BFTj90aGlzLmNsb3NlKCk6dGhpcy5vcGVuKCl9KSx0aGlzLl9zdWJzY3JpcHRpb24uYWRkKHYubmF2Q29udHJvbC5waXBlKE8yKCh7Y29u''@;'; put 'put ''dHJvbENvZGU6Wn0pPT5aPT09cXMuTkFWX0NMT1NFX0FMTCkpLnN1YnNjcmliZSgoKT0+dGhpcy5jbG9zZSgpKSl9bmdPbkluaXQoKXt0aGlzLmNsb3NlQnV0dG9uQXJpYUxhYmVsfHwodGhpcy5jbG9zZUJ1dHRvbkFyaWFMYWJlbD10aGlzLl9sZXZlbD09PXFzLk5BVl9MRVZFTF8xP1VqLnJl''@;'; put 'put ''c3BvbnNpdmVOYXZUb2dnbGVDbG9zZTpVai5yZXNwb25zaXZlTmF2T3ZlcmZsb3dDbG9zZSksdGhpcy5sZXZlbD09PXFzLk5BVl9MRVZFTF8xfHx0aGlzLmxldmVsPT09cXMuTkFWX0xFVkVMXzI/KHRoaXMucmVzcG9uc2l2ZU5hdlNlcnZpY2UucmVnaXN0ZXJOYXYodGhpcy5sZXZlbCksdGhp''@;'; put 'put ''cy5hZGROYXZDbGFzcyh0aGlzLmxldmVsKSk6Y29uc29sZS5lcnJvcigiTmF2IExldmVsIGNhbiBvbmx5IGJlIDEgb3IgMiIpfW5nQWZ0ZXJWaWV3SW5pdCgpe2NvbnN0IGg9KChkLGcpPT57Y29uc3QgaD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjZHMtaW50ZXJuYWwtY2xvc2Ut''@;'; put 'put ''YnV0dG9uIik7cmV0dXJuIGguc2V0QXR0cmlidXRlKCJpY29uLXNpemUiLCIzMiIpLGguc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixnKSxoLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIiksaC5zZXRBdHRyaWJ1dGUoInR5cGUiLCJidXR0b24iKSxoLnNldEF0dHJpYnV0ZSgi''@;'; put 'put ''aGlkZGVuIiwidHJ1ZSIpLGguY2xhc3NOYW1lPSJjbHItbmF2LWNsb3NlIixofSkoMCx0aGlzLmNsb3NlQnV0dG9uQXJpYUxhYmVsKTt0aGlzLnJlbmRlcmVyLmxpc3RlbihoLCJjbGljayIsdGhpcy5jbG9zZS5iaW5kKHRoaXMpKSx0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZSh0aGlzLmVs''@;'; put 'put ''ZW1lbnRSZWYubmF0aXZlRWxlbWVudCxoLHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZpcnN0Q2hpbGQpLHRoaXMuX2RvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg8OTkyJiZ0aGlzLmNsb3NlKCl9YWRkTmF2Q2xhc3MoaCl7Y29uc3Qgdj10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxl''@;'; put 'put ''bWVudC5jbGFzc0xpc3Q7aD09PXFzLk5BVl9MRVZFTF8xP3YuYWRkKHFzLk5BVl9DTEFTU19MRVZFTF8xKTpoPT09cXMuTkFWX0xFVkVMXzImJnYuYWRkKHFzLk5BVl9DTEFTU19MRVZFTF8yKX1nZXQgbGV2ZWwoKXtyZXR1cm4gdGhpcy5fbGV2ZWx9Z2V0IHJlc3BvbnNpdmVOYXZDb2Rlcygp''@;'; put 'put ''e3JldHVybiBxc31nZXQgaXNPcGVuKCl7cmV0dXJuIHRoaXMuX2lzT3Blbn1vblJlc2l6ZShoKXtoLnRhcmdldC5pbm5lcldpZHRoPDk5MiYmdGhpcy5pc09wZW4/dGhpcy5jbG9zZSgpOnRoaXMuc2hvd05hdmlnYXRpb24oKX1vcGVuKCl7dGhpcy5faXNPcGVuPSEwLHRoaXMuc2hvd05hdmln''@;'; put 'put ''YXRpb24oKSx0aGlzLmVuYWJsZUZvY3VzVHJhcCgpLHRoaXMuc2hvd0Nsb3NlQnV0dG9uKCksdGhpcy5yZXNwb25zaXZlTmF2U2VydmljZS5zZW5kQ29udHJvbE1lc3NhZ2UocXMuTkFWX09QRU4sdGhpcy5sZXZlbCl9Y2xvc2UoKXt0aGlzLl9pc09wZW49ITEsdGhpcy5oaWRlTmF2aWdhdGlv''@;'; put 'put ''bigpLHRoaXMucmVtb3ZlRm9jdXNUcmFwKCksdGhpcy5oaWRlQ2xvc2VCdXR0b24oKSx0aGlzLnJlc3BvbnNpdmVOYXZTZXJ2aWNlLnNlbmRDb250cm9sTWVzc2FnZShxcy5OQVZfQ0xPU0UsdGhpcy5sZXZlbCl9b25Nb3VzZUNsaWNrKGgpe2xldCB2PWg7Y29uc3QgeT10aGlzLmVsZW1lbnRS''@;'; put 'put ''ZWYubmF0aXZlRWxlbWVudDtmb3IoO3Y7KXtpZih2PT09eSlyZXR1cm47aWYodi5jbGFzc0xpc3QuY29udGFpbnMoIm5hdi1saW5rIikmJnRoaXMuX2RvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg8OTkyKXJldHVybiB2b2lkIHRoaXMuY2xvc2UoKTt2PXYucGFyZW50Tm9kZX19aGlkZU5hdmln''@;'; put 'put ''YXRpb24oKXt0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiYXJpYS1oaWRkZW4iLCJ0cnVlIiksdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImhpZGRlbiIsInRydWUiKX1zaG93''@;'; put 'put ''TmF2aWdhdGlvbigpe3RoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJhcmlhLWhpZGRlbiIsImZhbHNlIiksdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImhpZGRlbiIpfWhp''@;'; put 'put ''ZGVDbG9zZUJ1dHRvbigpe3RoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJhcmlhLWhpZGRlbiIsInRydWUiKSx0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9y''@;'; put 'put ''KCIuY2xyLW5hdi1jbG9zZSIpLCJoaWRkZW4iLCJ0cnVlIil9c2hvd0Nsb3NlQnV0dG9uKCl7dGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigiLmNsci1uYXYtY2xvc2UiKSwiYXJpYS1oaWRkZW4iLCJmYWxzZSIp''@;'; put 'put ''LHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIi5jbHItbmF2LWNsb3NlIiksImhpZGRlbiIpfW5nT25EZXN0cm95KCl7dGhpcy5yZXNwb25zaXZlTmF2U2VydmljZS51bnJlZ2lzdGVyTmF2KHRoaXMubGV2''@;'; put 'put ''ZWwpLHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChMMiksS3Qoa3EpLEt0KGJvKSxLdChHYSksS3QoU3MpKX0sZC5cdTAyNzVkaXI9V2koe3R5cGU6ZCxzZWxlY3RvcnM6W1siIiwiY2xy''@;'; put 'put ''LW5hdi1sZXZlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJkduKCJyZXNpemUiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uUmVzaXplKEMpfSwwLExiKSgiY2xpY2siLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uTW91c2VDbGljayhDLnRhcmdldCl9KX0saW5wdXRzOntf''@;'; put 'put ''bGV2ZWw6WyJjbHItbmF2LWxldmVsIiwiX2xldmVsIl0sY2xvc2VCdXR0b25BcmlhTGFiZWw6WyJjbG9zZUFyaWFMYWJlbCIsImNsb3NlQnV0dG9uQXJpYUxhYmVsIl19LGZlYXR1cmVzOltEb119KSxkfSkoKSx2UmU9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9u''@;'; put 'put ''KGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbW2JhLERzLHJoZV1dfSksZH0pKCksT3llPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1''@;'; put 'put ''MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJuZy1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGgsdil7aWYoMSZoJiZ2byhxciw1KSwyJmgpe2xldCB5O0hpKHk9JGkoKSkmJih2LnRlbXBsYXRlPXkuZmlyc3QpfX0sbmdDb250ZW50U2VsZWN0b3JzOm5hLGRlY2xzOjEs''@;'; put 'put ''dmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoSzAoKSxybigwLGpqLDEsMCwibmctdGVtcGxhdGUiKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLEFSZT0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5c''@;'; put 'put ''dTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHtpbXBvcnRzOltbYmFdXX0pLGR9KSgpLFhMPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBhd3t9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IGc7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybihnfHwoZz1mbChkKSkp''@;'; put 'put ''KHZ8fGQpfX0oKSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItdGFicyJdXSxmZWF0dXJlczpbRG9dfSksZH0pKCksbVo9KCgpPT57Y2xhc3MgZCBleHRlbmRzIGx3e2NvbnN0cnVjdG9yKGgsdix5LEMpe2lmKCF2KXRocm93IG5ldyBFcnJvcigiY2xyVGFiTGluayBh''@;'; put 'put ''bmQgY2xyLXRhYi1jb250ZW50IHNob3VsZCBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIGEgY2xyLXRhYnMiKTtzdXBlcihoLHYpLHRoaXMuaWZBY3RpdmU9Qyx0aGlzLmlkPXl9Z2V0IGZsYXZvcigpe3JldHVybiB0aGlzLmlmQWN0aXZlLmN1cnJlbnQ9PT10aGlzLmlkfX1yZXR1cm4gZC5cdTAy''@;'; put 'put ''NzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChkMSksS3QoWEwsOCksS3Qob2wpLEt0KHoyKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImNsclRhYkxpbmsiLCIiXSxbImNsci10YWItY29udGVudCJdXSxmZWF0dXJlczpbRG9dfSksZH0pKCk7''@;'; put 'put ''dmFyIGJ2PSgoKT0+KGZ1bmN0aW9uKGQpe2QuSE9SSVpPTlRBTD0iaG9yaXpvbnRhbCIsZC5WRVJUSUNBTD0idmVydGljYWwifShidnx8KGJ2PXt9KSksYnYpKSgpO2xldCB2Wj0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fY2hpbGRyZW49W10sdGhpcy5sYXlvdXQ9YnYuSE9S''@;'; put 'put ''SVpPTlRBTH1yZWdpc3RlcihoKXt0aGlzLl9jaGlsZHJlbi5wdXNoKGgpfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzLl9jaGlsZHJlbn1nZXQgYWN0aXZlVGFiKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW4uZmluZChoPT5oLmFjdGl2ZSl9Z2V0IG92ZXJmbG93VGFicygpe3JldHVybiB0aGlz''@;'; put 'put ''LmxheW91dD09PWJ2LlZFUlRJQ0FMP1tdOnRoaXMuY2hpbGRyZW4uZmlsdGVyKGg9PiEwPT09aC50YWJMaW5rLmluT3ZlcmZsb3cpfXVucmVnaXN0ZXIoaCl7Y29uc3Qgdj10aGlzLmNoaWxkcmVuLmluZGV4T2YoaCk7dj4tMSYmdGhpcy5jaGlsZHJlbi5zcGxpY2UodiwxKX19cmV0dXJuIGQu''@;'; put 'put ''XHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCkseVJlPTAsS0w9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDKXt0aGlzLmlmQWN0aXZlU2VydmljZT1oLHRoaXMu''@;'; put 'put ''aWQ9dix0aGlzLmFyaWFTZXJ2aWNlPXksdGhpcy50YWJzU2VydmljZT1DLHRoaXMudGFiQ29udGVudElkfHwodGhpcy50YWJDb250ZW50SWQ9ImNsci10YWItY29udGVudC0iK3lSZSsrKX1zZXQgdGVtcGxhdGVSZWYoaCl7dGhpcy52aWV3UmVmPXRoaXMudGFic1NlcnZpY2UudGFiQ29udGVu''@;'; put 'put ''dFZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KGgpfWdldCBhcmlhTGFiZWxsZWRCeSgpe3JldHVybiB0aGlzLmFyaWFTZXJ2aWNlLmFyaWFMYWJlbGxlZEJ5fWdldCB0YWJDb250ZW50SWQoKXtyZXR1cm4gdGhpcy5hcmlhU2VydmljZS5hcmlhQ29udHJvbHN9c2V0IHRhYkNvbnRl''@;'; put 'put ''bnRJZChoKXt0aGlzLmFyaWFTZXJ2aWNlLmFyaWFDb250cm9scz1ofWdldCBhY3RpdmUoKXtyZXR1cm4gdGhpcy5pZkFjdGl2ZVNlcnZpY2UuY3VycmVudD09PXRoaXMuaWR9bmdPbkRlc3Ryb3koKXtjb25zdCBoPXRoaXMudGFic1NlcnZpY2UudGFiQ29udGVudFZpZXdDb250YWluZXIuaW5k''@;'; put 'put ''ZXhPZih0aGlzLnZpZXdSZWYpO2g+LTEmJnRoaXMudGFic1NlcnZpY2UudGFiQ29udGVudFZpZXdDb250YWluZXIucmVtb3ZlKGgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdCh6MiksS3Qob2wpLEt0KHNTKSxLdCh2WikpfSxkLlx1MDI3NWNt''@;'; put 'put ''cD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJjbHItdGFiLWNvbnRlbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGgsdil7aWYoMSZoJiZ2byhyUyw3KSwyJmgpe2xldCB5O0hpKHk9JGkoKSkmJih2LnRlbXBsYXRlUmVmPXkuZmlyc3QpfX0saW5wdXRzOnt0YWJDb250ZW50SWQ6WyJpZCIsInRh''@;'; put 'put ''YkNvbnRlbnRJZCJdfSxuZ0NvbnRlbnRTZWxlY3RvcnM6bmEsZGVjbHM6Mix2YXJzOjAsY29uc3RzOltbInRhYkNvbnRlbnRQcm9qZWN0ZWRSZWYiLCIiXSxbInJvbGUiLCJ0YWJwYW5lbCIsMSwidGFiLWNvbnRlbnQiLDMsImlkIiwiaGlkZGVuIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7''@;'; put 'put ''MSZoJiYoSzAoKSxybigwLElMLDIsNiwibmctdGVtcGxhdGUiLG51bGwsMCxacikpfSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSx3UmU9MDtjb25zdCBvaGU9bmV3IHplKCJUQUJTX0lEIiksX1JlPXtwcm92aWRlOm9oZSx1c2VGYWN0b3J5OmZ1bmN0aW9uIGJSZSgpe3JldHVybiJjbHItdGFi''@;'; put 'put ''cy0iK3dSZSsrfX07bGV0IENSZT0wLCRMPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLFosdWUsX2Upe3RoaXMuaWZBY3RpdmVTZXJ2aWNlPWgsdGhpcy5pZD12LHRoaXMuYXJpYVNlcnZpY2U9eSx0aGlzLmVsPUMsdGhpcy5jZnI9SSx0aGlzLnZpZXdDb250YWluZXJSZWY9''@;'; put 'put ''Wix0aGlzLnRhYnNTZXJ2aWNlPXVlLHRoaXMudGFic0lkPV9lLHRoaXMudGFiTGlua0lkfHwodGhpcy50YWJMaW5rSWQ9ImNsci10YWItbGluay0iK0NSZSsrKTtjb25zdCBCZT10aGlzLmNmci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShPeWUpO3RoaXMudGVtcGxhdGVSZWZDb250YWluZXI9''@;'; put 'put ''dGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChCZSx2b2lkIDAsdm9pZCAwLFtbdGhpcy5lbC5uYXRpdmVFbGVtZW50XV0pLmluc3RhbmNlfXNldCBpbk92ZXJmbG93KGgpe3RoaXMuX2luT3ZlcmZsb3c9aH1nZXQgaW5PdmVyZmxvdygpe3JldHVybiB0aGlzLl9pbk92ZXJm''@;'; put 'put ''bG93JiZ0aGlzLnRhYnNTZXJ2aWNlLmxheW91dCE9PWJ2LlZFUlRJQ0FMfWdldCBhZGRMaW5rQ2xhc3Nlcygpe3JldHVybiF0aGlzLmluT3ZlcmZsb3d9Z2V0IGFyaWFDb250cm9scygpe3JldHVybiB0aGlzLmFyaWFTZXJ2aWNlLmFyaWFDb250cm9sc31nZXQgdGFiTGlua0lkKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuYXJpYVNlcnZpY2UuYXJpYUxhYmVsbGVkQnl9c2V0IHRhYkxpbmtJZChoKXt0aGlzLmFyaWFTZXJ2aWNlLmFyaWFMYWJlbGxlZEJ5PWh9YWN0aXZhdGUoKXt0aGlzLmlmQWN0aXZlU2VydmljZS5jdXJyZW50PXRoaXMuaWR9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLmlmQWN0aXZl''@;'; put 'put ''U2VydmljZS5jdXJyZW50PT09dGhpcy5pZH1nZXQgdGFiaW5kZXgoKXtyZXR1cm4gdGhpcy5hY3RpdmU/MDotMX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoejIpLEt0KG9sKSxLdChzUyksS3QoYm8pLEt0KFNkKSxLdChVaSksS3QodlopLEt0''@;'; put 'put ''KG9oZSkpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJUYWJMaW5rIiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJ0YWIiLCJ0eXBlIiwiYnV0dG9uIl0saG9zdFZhcnM6MTIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGgsdil7MSZoJiZHbigiY2xpY2siLGZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIHYuYWN0aXZhdGUoKX0pLDImaCYmKEIzKCJpZCIsdi50YWJMaW5rSWQpLEdpKCJhcmlhLWNvbnRyb2xzIix2LmFyaWFDb250cm9scykoImFyaWEtc2VsZWN0ZWQiLHYuYWN0aXZlKSgidGFiaW5kZXgiLHYudGFiaW5kZXgpLEZpKCJidG4iLCEwKSgiYnRuLWxpbmsiLHYu''@;'; put 'put ''YWRkTGlua0NsYXNzZXMpKCJuYXYtbGluayIsdi5hZGRMaW5rQ2xhc3NlcykoImFjdGl2ZSIsdi5hY3RpdmUpKX0saW5wdXRzOntpbk92ZXJmbG93OlsiY2xyVGFiTGlua0luT3ZlcmZsb3ciLCJpbk92ZXJmbG93Il0sdGFiTGlua0lkOlsiaWQiLCJ0YWJMaW5rSWQiXX19KSxkfSkoKSxxTD0o''@;'; put 'put ''KCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5KXt0aGlzLmlmQWN0aXZlU2VydmljZT1oLHRoaXMuaWQ9dix0aGlzLnRhYnNTZXJ2aWNlPXkseS5yZWdpc3Rlcih0aGlzKX1uZ09uRGVzdHJveSgpe3RoaXMudGFic1NlcnZpY2UudW5yZWdpc3Rlcih0aGlzKX1nZXQgYWN0aXZlKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuaWZBY3RpdmVTZXJ2aWNlLmN1cnJlbnQ9PT10aGlzLmlkfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdCh6MiksS3Qob2wpLEt0KHZaKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci10YWIiXV0sY29u''@;'; put 'put ''dGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmKHhvKHksJEwsNykseG8oeSxLTCw3KSksMiZoKXtsZXQgQztIaShDPSRpKCkpJiYodi50YWJMaW5rPUMuZmlyc3QpLEhpKEM9JGkoKSkmJih2LnRhYkNvbnRlbnQ9Qy5maXJzdCl9fSxmZWF0dXJlczpbaG8oW3hhLHNTXSldLG5n''@;'; put 'put ''Q29udGVudFNlbGVjdG9yczpuYSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKCksTmkoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSxhaGU9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8''@;'; put 'put ''ZCl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci10YWItb3ZlcmZsb3ctY29udGVudCJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezImaCYmRmkoImRyb3Bkb3duLW1lbnUiLCEwKX0sbmdDb250ZW50U2VsZWN0b3JzOm5hLGRlY2xzOjEs''@;'; put 'put ''dmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoSzAoKSxOaSgwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLEFaPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJKXt0aGlzLmlmQWN0aXZlU2VydmljZT1oLHRoaXMudG9nZ2xlU2VydmljZT12LHRoaXMudGFi''@;'; put 'put ''c1NlcnZpY2U9eSx0aGlzLnRhYnNJZD1DLHRoaXMuY29tbW9uU3RyaW5ncz1JLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLl90YWJMaW5rRGlyZWN0aXZlcz1bXSx0aGlzLnRhYkxpbmtFbGVtZW50cz1bXSx0aGlzLl9tb3VzZWRvd249ITF9Z2V0IG92ZXJmbG93UG9zaXRpb24oKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5fdGFiTGlua0RpcmVjdGl2ZXMuZmlsdGVyKGg9PiFoLmluT3ZlcmZsb3cpLmxlbmd0aH1zZXQgdGFiQ29udGVudFZpZXdDb250YWluZXIoaCl7dGhpcy50YWJzU2VydmljZS50YWJDb250ZW50Vmlld0NvbnRhaW5lcj1ofXNldCBsYXlvdXQoaCl7T2JqZWN0LmtleXMoYnYpLm1h''@;'; put 'put ''cCh2PT5idlt2XSkuaW5kZXhPZihoKT49MCYmKHRoaXMudGFic1NlcnZpY2UubGF5b3V0PWgpfWdldCBsYXlvdXQoKXtyZXR1cm4gdGhpcy50YWJzU2VydmljZS5sYXlvdXR9Z2V0IHRhYkxpbmtEaXJlY3RpdmVzKCl7cmV0dXJuIHRoaXMuX3RhYkxpbmtEaXJlY3RpdmVzfWdldCBhY3RpdmVU''@;'; put 'put ''YWJJbk92ZXJmbG93KCl7cmV0dXJuIHRoaXMudGFic1NlcnZpY2Uub3ZlcmZsb3dUYWJzLmluZGV4T2YodGhpcy50YWJzU2VydmljZS5hY3RpdmVUYWIpPi0xfWdldCBhY3RpdmVUYWJQb3NpdGlvbigpe3JldHVybiB0aGlzLl90YWJMaW5rRGlyZWN0aXZlcy5maW5kSW5kZXgoaD0+aC5hY3Rp''@;'; put 'put ''dmUpfWdldCB0YWJJZHMoKXtyZXR1cm4gdGhpcy50YWJzU2VydmljZS5jaGlsZHJlbi5tYXAoaD0+aC50YWJMaW5rLnRhYkxpbmtJZCkuam9pbigiICIpfWdldCBpc0N1cnJlbnRJbk92ZXJmbG93KCl7cmV0dXJuIHRoaXMua2V5Rm9jdXMuY3VycmVudD49dGhpcy5vdmVyZmxvd1Bvc2l0aW9u''@;'; put 'put ''fWdldCBpc1ZlcnRpY2FsKCl7cmV0dXJuIHRoaXMubGF5b3V0PT09YnYuVkVSVElDQUx9dG9nZ2xlT3ZlcmZsb3dPblBvc2l0aW9uKGgpe3RoaXMudG9nZ2xlU2VydmljZS5vcGVuPWg+PXRoaXMub3ZlcmZsb3dQb3NpdGlvbn1zZXQgdGFiT3ZlcmZsb3dFbChoKXt0aGlzLl90YWJPdmVyZmxv''@;'; put 'put ''d0VsPWgmJmgubmF0aXZlRWxlbWVudCx0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiYmaCYmdGhpcy5rZXlGb2N1cy5mb2N1c0N1cnJlbnQoKX1yZXNldEtleUZvY3VzQ3VycmVudFRvQWN0aXZlKGgpeyF0aGlzLmtleUZvY3VzLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoaC5yZWxhdGVkVGFyZ2V0''@;'; put 'put ''KSYmdGhpcy5rZXlGb2N1cy5jdXJyZW50IT09dGhpcy5hY3RpdmVUYWJQb3NpdGlvbiYmKHRoaXMua2V5Rm9jdXMuY3VycmVudD10aGlzLmFjdGl2ZVRhYlBvc2l0aW9uKX10b2dnbGVPdmVyZmxvd09uQ2xpY2soKXt0aGlzLmtleUZvY3VzLm1vdmVUbyh0aGlzLmlzQ3VycmVudEluT3ZlcmZs''@;'; put 'put ''b3cmJnRoaXMudG9nZ2xlU2VydmljZS5vcGVuP3RoaXMub3ZlcmZsb3dQb3NpdGlvbi0xOnRoaXMub3ZlcmZsb3dQb3NpdGlvbiksdGhpcy5fbW91c2Vkb3duPSExfW9wZW5PdmVyZmxvd09uRm9jdXMoKXshdGhpcy5fbW91c2Vkb3duJiYhdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4mJnRoaXMu''@;'; put 'put ''a2V5Rm9jdXMubW92ZVRvKHRoaXMuYWN0aXZlVGFiUG9zaXRpb24pfWNsb3NlT25Gb2N1c091dChoKXshdGhpcy5fdGFiT3ZlcmZsb3dFbC5jb250YWlucyhoLnJlbGF0ZWRUYXJnZXQpJiZ0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiYmIXRoaXMuX21vdXNlZG93biYmKHRoaXMudG9nZ2xlU2Vy''@;'; put 'put ''dmljZS5vcGVuPSExLHRoaXMudGFiTGlua0VsZW1lbnRzW3RoaXMuYWN0aXZlVGFiUG9zaXRpb25dPT09aC5yZWxhdGVkVGFyZ2V0JiYodGhpcy5rZXlGb2N1cy5jdXJyZW50PXRoaXMuYWN0aXZlVGFiUG9zaXRpb24pKX1jbG9zZU9uRXNjYXBlS2V5KCl7dGhpcy5rZXlGb2N1cy5tb3ZlVG8o''@;'; put 'put ''dGhpcy5vdmVyZmxvd1Bvc2l0aW9uLTEpfWNsb3NlT25PdXRzaWRlQ2xpY2soaCx2KXtoLnRhcmdldD09PXZ8fHYuY29udGFpbnMoaC50YXJnZXQpfHwhdGhpcy5fdGFiT3ZlcmZsb3dFbC5jb250YWlucyhoLnRhcmdldCkmJnRoaXMuaXNDdXJyZW50SW5PdmVyZmxvdyYmdGhpcy5rZXlGb2N1''@;'; put 'put ''cy5tb3ZlVG8odGhpcy5vdmVyZmxvd1Bvc2l0aW9uLTEpfWxpc3RlbkZvclRhYkxpbmtDaGFuZ2VzKCl7cmV0dXJuIHRoaXMudGFicy5jaGFuZ2VzLnBpcGUoTjUodGhpcy50YWJzLm1hcChoPT5oLnRhYkxpbmspKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5fdGFiTGlua0RpcmVjdGl2ZXM9dGhp''@;'; put 'put ''cy50YWJzLm1hcChoPT5oLnRhYkxpbmspLHRoaXMudGFiTGlua0VsZW1lbnRzPXRoaXMuX3RhYkxpbmtEaXJlY3RpdmVzLm1hcChoPT5oLmVsLm5hdGl2ZUVsZW1lbnQpfSl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5saXN0ZW5Gb3JUYWJMaW5r''@;'; put 'put ''Q2hhbmdlcygpKSx2b2lkIDA9PT10aGlzLmlmQWN0aXZlU2VydmljZS5jdXJyZW50JiZ0aGlzLnRhYkxpbmtEaXJlY3RpdmVzWzBdJiZ0aGlzLnRhYkxpbmtEaXJlY3RpdmVzWzBdLmFjdGl2YXRlKCksdGhpcy5rZXlGb2N1cy5jdXJyZW50PXRoaXMuYWN0aXZlVGFiUG9zaXRpb259bmdPbkRl''@;'; put 'put ''c3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChoPT57aC51bnN1YnNjcmliZSgpfSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHoyKSxLdCh6cyksS3QodlopLEt0KG9oZSksS3QobnMpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6''@;'; put 'put ''ZCxzZWxlY3RvcnM6W1siY2xyLXRhYnMiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oaCx2LHkpe2lmKDEmaCYmeG8oeSxxTCw0KSwyJmgpe2xldCBDO0hpKEM9JGkoKSkmJih2LnRhYnM9Qyl9fSx2aWV3UXVlcnk6ZnVuY3Rpb24oaCx2KXtpZigxJmgmJih2byhaaiw3LFVpKSx2byhFcCw3''@;'; put 'put ''KSx2byhhaGUsNSxibykpLDImaCl7bGV0IHk7SGkoeT0kaSgpKSYmKHYudGFiQ29udGVudFZpZXdDb250YWluZXI9eS5maXJzdCksSGkoeT0kaSgpKSYmKHYua2V5Rm9jdXM9eS5maXJzdCksSGkoeT0kaSgpKSYmKHYudGFiT3ZlcmZsb3dFbD15LmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJp''@;'; put 'put ''bmRpbmdzOmZ1bmN0aW9uKGgsdil7MiZoJiZGaSgidGFicy12ZXJ0aWNhbCIsdi5pc1ZlcnRpY2FsKX0saW5wdXRzOntsYXlvdXQ6WyJjbHJMYXlvdXQiLCJsYXlvdXQiXX0sZmVhdHVyZXM6W2hvKFt6Mix6cyx2WixfUmVdKV0sZGVjbHM6NSx2YXJzOjQsY29uc3RzOltbInJvbGUiLCJ0YWJs''@;'; put 'put ''aXN0IiwiY2xyRGlyZWN0aW9uIiwiYm90aCIsMSwibmF2IiwzLCJjbHJLZXlGb2N1cyIsImNsckZvY3VzQ2hhbmdlIiwiZm9jdXNvdXQiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzQsIm5nSWYiXSxbInRhYkNvbnRlbnRWaWV3Q29udGFpbmVyIiwiIl0sWyJyb2xlIiwicHJlc2VudGF0aW9u''@;'; put 'put ''IiwxLCJuYXYtaXRlbSJdLFszLCJuZ1RlbXBsYXRlT3V0bGV0Il0sWyJyb2xlIiwicHJlc2VudGF0aW9uIiwxLCJ0YWJzLW92ZXJmbG93IiwiYm90dG9tLXJpZ2h0Il0sWyJyb2xlIiwiYXBwbGljYXRpb24iLDEsIm5hdi1pdGVtIl0sWyJ0eXBlIiwiYnV0dG9uIiwiYXJpYS1oaWRkZW4iLCJ0''@;'; put 'put ''cnVlIiwxLCJidG4iLCJidG4tbGluayIsIm5hdi1saW5rIiwiZHJvcGRvd24tdG9nZ2xlIiwzLCJtb3VzZWRvd24iLCJmb2N1cyIsImNsaWNrIl0sWyJ0YWJPdmVyZmxvd1RyaWdnZXIiLCIiXSxbInNoYXBlIiwiZWxsaXBzaXMtaG9yaXpvbnRhbCIsInN0YXR1cyIsInRvZ2dsZVNlcnZpY2Uu''@;'; put 'put ''b3BlbiA/ICdpbmZvJyA6IG51bGwiXSxbMywia2V5ZG93bi5lc2MiLCJjbGljayIsImZvY3Vzb3V0Iiw0LCJuZ0lmIl0sWzMsImtleWRvd24uZXNjIiwiY2xpY2siLCJmb2N1c291dCJdLFszLCJuZ1RlbXBsYXRlT3V0bGV0Iiw0LCJuZ0lmIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZo''@;'; put 'put ''JiYobnQoMCwidWwiLDApLEduKCJjbHJGb2N1c0NoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYudG9nZ2xlT3ZlcmZsb3dPblBvc2l0aW9uKEMpfSkoImZvY3Vzb3V0IixmdW5jdGlvbihDKXtyZXR1cm4gdi5yZXNldEtleUZvY3VzQ3VycmVudFRvQWN0aXZlKEMpfSkscm4oMSx6aiwyLDEs''@;'; put 'put ''Im5nLWNvbnRhaW5lciIsMSkscm4oMixxY2UsNywxMCwibmctY29udGFpbmVyIiwyKSxvdCgpLGYxKDMsbnVsbCwzKSksMiZoJiYoVHQoImNscktleUZvY3VzIix2LnRhYkxpbmtFbGVtZW50cyksR2koImFyaWEtb3ducyIsdi50YWJJZHMpLHV0KDEpLFR0KCJuZ0Zvck9mIix2LnRhYkxpbmtE''@;'; put 'put ''aXJlY3RpdmVzKSx1dCgxKSxUdCgibmdJZiIsdi50YWJzU2VydmljZS5vdmVyZmxvd1RhYnMubGVuZ3RoPjApKX0sZGVwZW5kZW5jaWVzOltFcCxhaGUseHMsTm8sWGQsWm9dLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLGtSZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7aHMuYWRkSWNv''@;'; put 'put ''bnMoZlYpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHtpbXBvcnRzOltbYmEscWEsRHMsQVJlLGZ3XSxxYV19KSxkfSkoKSxsaGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rv''@;'; put 'put ''cigpe3RoaXMubmF2R3JvdXBDb3VudD0wfXJlZ2lzdGVyTmF2R3JvdXAoKXt0aGlzLm5hdkdyb3VwQ291bnQrK311bnJlZ2lzdGVyTmF2R3JvdXAoKXt0aGlzLm5hdkdyb3VwQ291bnQtLX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1''@;'; put 'put ''cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCksc2hlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLl9pY29ucz0wfWdldCBoYXNJY29ucygpe3JldHVybiB0aGlzLl9pY29ucz4wfXJlZ2lzdGVySWNvbigpe3RoaXMuX2ljb25zKyt9dW5yZWdpc3Rl''@;'; put 'put ''ckljb24oKXt0aGlzLl9pY29ucy0tfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSx1aGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2Fu''@;'; put 'put ''aW1hdGVPbkNvbGxhcHNlZD1uZXcgJGUsdGhpcy5fY29sbGFwc2VkQ2hhbmdlZD1uZXcgJGUsdGhpcy5fY29sbGFwc2VkPSExLHRoaXMuX2NvbGxhcHNpYmxlPSExfWdldCBhbmltYXRlT25Db2xsYXBzZWQoKXtyZXR1cm4gdGhpcy5fYW5pbWF0ZU9uQ29sbGFwc2VkLmFzT2JzZXJ2YWJsZSgp''@;'; put 'put ''fWdldCBjb2xsYXBzZWRDaGFuZ2VkKCl7cmV0dXJuIHRoaXMuX2NvbGxhcHNlZENoYW5nZWQuYXNPYnNlcnZhYmxlKCl9Z2V0IGNvbGxhcHNlZCgpe3JldHVybiB0aGlzLl9jb2xsYXBzZWR9c2V0IGNvbGxhcHNlZChoKXtoPSEhaCx0aGlzLmNvbGxhcHNpYmxlJiZ0aGlzLl9jb2xsYXBzZWQh''@;'; put 'put ''PT1oJiZ0aGlzLnVwZGF0ZUNvbGxhcHNlQmVoYXZpb3IoaCl9Z2V0IGNvbGxhcHNpYmxlKCl7cmV0dXJuIHRoaXMuX2NvbGxhcHNpYmxlfXNldCBjb2xsYXBzaWJsZShoKXt0aGlzLl9jb2xsYXBzaWJsZSE9PShoPSEhaCkmJighaCYmdGhpcy5jb2xsYXBzZWQmJnRoaXMudXBkYXRlQ29sbGFw''@;'; put 'put ''c2VCZWhhdmlvcighMSksdGhpcy5fY29sbGFwc2libGU9aCl9dXBkYXRlQ29sbGFwc2VCZWhhdmlvcihoKXt0aGlzLl9hbmltYXRlT25Db2xsYXBzZWQubmV4dChoKSx0aGlzLl9jb2xsYXBzZWQ9aCx0aGlzLl9jb2xsYXBzZWRDaGFuZ2VkLm5leHQoaCl9fXJldHVybiBkLlx1MDI3NWZhYz1m''@;'; put 'put ''dW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLFJ5ZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMpe3RoaXMuX25hdlNlcnZpY2U9aCx0aGlzLl9uYXZJY29uU2VydmljZT12LHRo''@;'; put 'put ''aXMuX25hdkdyb3VwUmVnaXN0cmF0aW9uU2VydmljZT15LHRoaXMuY29tbW9uU3RyaW5ncz1DLHRoaXMuX2NvbGxhcHNlZENoYW5nZWQ9bmV3IGFyKCEwKSx0aGlzLl9zdWI9dGhpcy5fbmF2U2VydmljZS5jb2xsYXBzZWRDaGFuZ2VkLnN1YnNjcmliZShJPT57dGhpcy5fY29sbGFwc2VkQ2hh''@;'; put 'put ''bmdlZC5lbWl0KEkpfSl9Z2V0IGNvbGxhcHNpYmxlKCl7cmV0dXJuIHRoaXMuX25hdlNlcnZpY2UuY29sbGFwc2libGV9c2V0IGNvbGxhcHNpYmxlKGgpe3RoaXMuX25hdlNlcnZpY2UuY29sbGFwc2libGU9aH1nZXQgY29sbGFwc2VkKCl7cmV0dXJuIHRoaXMuX25hdlNlcnZpY2UuY29sbGFw''@;'; put 'put ''c2VkfXNldCBjb2xsYXBzZWQoaCl7dGhpcy5fbmF2U2VydmljZS5jb2xsYXBzZWQ9aH1nZXQgaGFzTmF2R3JvdXBzKCl7cmV0dXJuIHRoaXMuX25hdkdyb3VwUmVnaXN0cmF0aW9uU2VydmljZS5uYXZHcm91cENvdW50PjB9Z2V0IGhhc0ljb25zKCl7cmV0dXJuIHRoaXMuX25hdkljb25TZXJ2''@;'; put 'put ''aWNlLmhhc0ljb25zfWdldCBhcmlhRXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5jb2xsYXBzaWJsZT90aGlzLmNvbGxhcHNlZD8iZmFsc2UiOiJ0cnVlIjpudWxsfXRvZ2dsZUJ5QnV0dG9uKCl7dGhpcy5jb2xsYXBzZWQ9IXRoaXMuY29sbGFwc2VkfW5nT25EZXN0cm95KCl7dGhpcy5fc3ViLnVu''@;'; put 'put ''c3Vic2NyaWJlKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHVoZSksS3Qoc2hlKSxLdChsaGUpLEt0KG5zKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImNsci12ZXJ0aWNhbC1uYXYiXV0saG9zdEF0dHJzOlsxLCJj''@;'; put 'put ''bHItdmVydGljYWwtbmF2Il0saG9zdFZhcnM6Nixob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJkZpKCJpcy1jb2xsYXBzZWQiLHYuY29sbGFwc2VkKSgiaGFzLW5hdi1ncm91cHMiLHYuaGFzTmF2R3JvdXBzKSgiaGFzLWljb25zIix2Lmhhc0ljb25zKX0saW5wdXRzOntjb2xsYXBz''@;'; put 'put ''aWJsZTpbImNsclZlcnRpY2FsTmF2Q29sbGFwc2libGUiLCJjb2xsYXBzaWJsZSJdLGNvbGxhcHNlZDpbImNsclZlcnRpY2FsTmF2Q29sbGFwc2VkIiwiY29sbGFwc2VkIl19LG91dHB1dHM6e19jb2xsYXBzZWRDaGFuZ2VkOiJjbHJWZXJ0aWNhbE5hdkNvbGxhcHNlZENoYW5nZSJ9LGZlYXR1''@;'; put 'put ''cmVzOltobyhbdWhlLHNoZSxsaGVdKV0sbmdDb250ZW50U2VsZWN0b3JzOm5hLGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWyJ0eXBlIiwiYnV0dG9uIiwiY2xhc3MiLCJuYXYtdHJpZ2dlciIsMywib24tY29sbGFwc2UiLCJjbGljayIsNCwibmdJZiJdLFsxLCJuYXYtY29udGVudCJdLFsiY2xh''@;'; put 'put ''c3MiLCJuYXYtYnRuIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwidGFiaW5kZXgiLCItMSIsMywiY2xpY2siLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLDEsIm5hdi10cmlnZ2VyIiwzLCJjbGljayJdLFsic2hhcGUiLCJhbmdsZS1kb3VibGUiLDEsIm5hdi10cmlnZ2VyLWljb24iXSxbImFy''@;'; put 'put ''aWEtaGlkZGVuIiwidHJ1ZSIsInRhYmluZGV4IiwiLTEiLDEsIm5hdi1idG4iLDMsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYoSzAoKSxybigwLGVmZSwyLDYsImJ1dHRvbiIsMCksbnQoMSwiZGl2IiwxKSxOaSgyKSxybigzLFYkLDEsMSwiYnV0dG9uIiwyKSxvdCgp''@;'; put 'put ''KSwyJmgmJihUdCgibmdJZiIsdi5jb2xsYXBzaWJsZSksdXQoMyksVHQoIm5nSWYiLHYuY29sbGFwc2libGUmJnYuY29sbGFwc2VkKSl9LGRlcGVuZGVuY2llczpbTm8sWm9dLGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLGNoZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fZXhw''@;'; put 'put ''YW5kQ2hhbmdlPW5ldyAkZX1nZXQgZXhwYW5kQ2hhbmdlKCl7cmV0dXJuIHRoaXMuX2V4cGFuZENoYW5nZS5hc09ic2VydmFibGUoKX1leHBhbmQoKXt0aGlzLl9leHBhbmRDaGFuZ2UubmV4dCghMCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxk''@;'; put 'put ''Llx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLEJ5ZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5KXt0aGlzLmRlc3Ryb3kkPW5ldyAkZSx5JiZ0OChoLm5hdGl2ZUVsZW1lbnQsImNsaWNrIikucGlwZShqNyh0aGlzLmRlc3Ryb3kkKSku''@;'; put 'put ''c3Vic2NyaWJlKCgpPT57eS5leHBhbmQoKSx2Lm1hcmtGb3JDaGVjaygpfSl9bmdPbkRlc3Ryb3koKXt0aGlzLmRlc3Ryb3kkLm5leHQoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoYm8pLEt0KGQxKSxLdChjaGUsOCkpfSxkLlx1MDI3NWNt''@;'; put 'put ''cD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiXV0saG9zdEF0dHJzOlsxLCJuYXYtbGluayJdLGF0dHJzOnJmZSxuZ0NvbnRlbnRTZWxlY3RvcnM6b2ZlLGRlY2xzOjMsdmFyczowLGNvbnN0czpbWzEsIm5hdi10ZXh0Il1dLHRlbXBsYXRlOmZ1bmN0''@;'; put 'put ''aW9uKGgsdil7MSZoJiYoSzAoaWZlKSxOaSgwKSxudCgxLCJzcGFuIiwwKSxOaSgyLDEpLG90KCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxkfSkoKSx4UmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe2hzLmFkZEljb25zKER5LGdYKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgp''@;'; put 'put ''e3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbW2JhLERzLHFhLGZTXSxxYSxEcyxmU119KSxkfSkoKSxUUmU9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8''@;'; put 'put ''ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbbFJlLHZSZSxrUmUseFJlXX0pLGR9KSgpLFB5ZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuX2RvY3VtZW50PWh9c3RvcFNjcm9sbGluZygpe3RoaXMuX2RvY3VtZW50LmJvZHku''@;'; put 'put ''Y2xhc3NMaXN0LmFkZCgibm8tc2Nyb2xsaW5nIil9cmVzdW1lU2Nyb2xsaW5nKCl7dGhpcy5fZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoIm5vLXNjcm9sbGluZyIpJiZ0aGlzLl9kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoIm5vLXNjcm9sbGluZyIpfX1yZXR1cm4g''@;'; put 'put ''ZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShncykpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLGlkPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMuX3Njcm9sbGluZ1NlcnZpY2U9aCx0''@;'; put 'put ''aGlzLmNvbW1vblN0cmluZ3M9dix0aGlzLm1vZGFsSWQ9eSx0aGlzLl9vcGVuPSExLHRoaXMuX29wZW5DaGFuZ2VkPW5ldyBhcighMSksdGhpcy5jbG9zYWJsZT0hMCx0aGlzLnN0YXRpY0JhY2tkcm9wPSEwLHRoaXMuc2tpcEFuaW1hdGlvbj0iZmFsc2UiLHRoaXMuYnlwYXNzU2Nyb2xsU2Vy''@;'; put 'put ''dmljZT0hMSx0aGlzLnN0b3BDbG9zZT0hMSx0aGlzLmFsdENsb3NlPW5ldyBhcighMSksdGhpcy5sYWJlbGxlZEJ5PXRoaXMubW9kYWxJZH1uZ09uQ2hhbmdlcyhoKXshdGhpcy5ieXBhc3NTY3JvbGxTZXJ2aWNlJiZoJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaCwi''@;'; put 'put ''X29wZW4iKSYmKGguX29wZW4uY3VycmVudFZhbHVlP3RoaXMuX3Njcm9sbGluZ1NlcnZpY2Uuc3RvcFNjcm9sbGluZygpOnRoaXMuX3Njcm9sbGluZ1NlcnZpY2UucmVzdW1lU2Nyb2xsaW5nKCkpfW5nT25EZXN0cm95KCl7dGhpcy5fc2Nyb2xsaW5nU2VydmljZS5yZXN1bWVTY3JvbGxpbmco''@;'; put 'put ''KX1vcGVuKCl7dGhpcy5fb3Blbnx8KHRoaXMuX29wZW49ITAsdGhpcy5fb3BlbkNoYW5nZWQuZW1pdCghMCkpfWNsb3NlKCl7dGhpcy5zdG9wQ2xvc2U/dGhpcy5hbHRDbG9zZS5lbWl0KCExKTohdGhpcy5jbG9zYWJsZXx8IXRoaXMuX29wZW58fCh0aGlzLl9vcGVuPSExLHRoaXMuZm9jdXNU''@;'; put 'put ''cmFwLnNldFByZXZpb3VzRm9jdXMoKSl9ZmFkZURvbmUoaCl7InZvaWQiPT09aC50b1N0YXRlJiZ0aGlzLl9vcGVuQ2hhbmdlZC5lbWl0KCExKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoUHllKSxLdChucyksS3QoeTIpKX0sZC5cdTAyNzVj''@;'; put 'put ''bXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLW1vZGFsIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYmdm8oaHcsNSksMiZoKXtsZXQgeTtIaSh5PSRpKCkpJiYodi5mb2N1c1RyYXA9eS5maXJzdCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYp''@;'; put 'put ''ezEmaCYmR24oImtleXVwLmVzY2FwZSIsZnVuY3Rpb24oKXtyZXR1cm4gdi5jbG9zZSgpfSwwLGZCKSwyJmgmJkZpKCJvcGVuIix2Ll9vcGVuKX0saW5wdXRzOntfb3BlbjpbImNsck1vZGFsT3BlbiIsIl9vcGVuIl0sY2xvc2FibGU6WyJjbHJNb2RhbENsb3NhYmxlIiwiY2xvc2FibGUiXSxz''@;'; put 'put ''aXplOlsiY2xyTW9kYWxTaXplIiwic2l6ZSJdLHN0YXRpY0JhY2tkcm9wOlsiY2xyTW9kYWxTdGF0aWNCYWNrZHJvcCIsInN0YXRpY0JhY2tkcm9wIl0sc2tpcEFuaW1hdGlvbjpbImNsck1vZGFsU2tpcEFuaW1hdGlvbiIsInNraXBBbmltYXRpb24iXSxieXBhc3NTY3JvbGxTZXJ2aWNlOlsi''@;'; put 'put ''Y2xyTW9kYWxPdmVycmlkZVNjcm9sbFNlcnZpY2UiLCJieXBhc3NTY3JvbGxTZXJ2aWNlIl0sc3RvcENsb3NlOlsiY2xyTW9kYWxQcmV2ZW50Q2xvc2UiLCJzdG9wQ2xvc2UiXSxsYWJlbGxlZEJ5OlsiY2xyTW9kYWxMYWJlbGxlZEJ5SWQiLCJsYWJlbGxlZEJ5Il19LG91dHB1dHM6e19vcGVu''@;'; put 'put ''Q2hhbmdlZDoiY2xyTW9kYWxPcGVuQ2hhbmdlIixhbHRDbG9zZToiY2xyTW9kYWxBbHRlcm5hdGVDbG9zZSJ9LGZlYXR1cmVzOltobyhbT2NdLFtQeWVdKSxEMl0sbmdDb250ZW50U2VsZWN0b3JzOnNmZSxkZWNsczoxLHZhcnM6MSxjb25zdHM6W1siY2xyRm9jdXNUcmFwIiwiIiwiY2xhc3Mi''@;'; put 'put ''LCJtb2RhbCIsNCwibmdJZiJdLFsiY2xyRm9jdXNUcmFwIiwiIiwxLCJtb2RhbCJdLFsicm9sZSIsImRpYWxvZyIsImFyaWEtbW9kYWwiLCJ0cnVlIiwxLCJtb2RhbC1kaWFsb2ciXSxbMSwiY2xyLXNyLW9ubHkiXSxbMSwibW9kYWwtY29udGVudC13cmFwcGVyIl0sWzEsIm1vZGFsLWNvbnRl''@;'; put 'put ''bnQiXSxbMSwibW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIl0sWyJjbHJGb2N1c09uVmlld0luaXQiLCIiLDEsIm1vZGFsLXRpdGxlLXdyYXBwZXIiLDMsImlkIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xhc3MiLCJjbG9zZSIsMywiY2xpY2siLDQsIm5nSWYiXSxbMSwibW9kYWwtYm9keS13cmFw''@;'; put 'put ''cGVyIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLDEsIm1vZGFsLWJhY2tkcm9wIiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2xvc2UiLDMsImNsaWNrIl0sWyJzaGFwZSIsIndpbmRvdy1jbG9zZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKGxmZSkscm4oMCxh''@;'; put 'put ''ZmUsMTcsMTQsImRpdiIsMCkpLDImaCYmVHQoIm5nSWYiLHYuX29wZW4pfSxkZXBlbmRlbmNpZXM6W05vLGh3LFJmZSxab10sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm9wZW5bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lfSJdLGRhdGE6e2FuaW1hdGlv''@;'; put 'put ''bjpbJGgoImZhZGVEb3duIixbYnUoIiogPT4gZmFsc2UiLFt5bCh7b3BhY2l0eTowLHRyYW5zZm9ybToidHJhbnNsYXRlKDAsIC0yNSUpIn0pLERjKCIwLjJzIGVhc2UtaW4tb3V0IildKSxidSgiZmFsc2UgPT4gKiIsW0RjKCIwLjJzIGVhc2UtaW4tb3V0Iix5bCh7b3BhY2l0eTowLHRyYW5z''@;'; put 'put ''Zm9ybToidHJhbnNsYXRlKDAsIC0yNSUpIn0pKV0pXSksJGgoImZhZGUiLFtidSgidm9pZCA9PiAqIixbeWwoe29wYWNpdHk6MH0pLERjKCIwLjJzIGVhc2UtaW4tb3V0Iix5bCh7b3BhY2l0eTouODV9KSldKSxidSgiKiA9PiB2b2lkIixbRGMoIjAuMnMgZWFzZS1pbi1vdXQiLHlsKHtvcGFj''@;'; put 'put ''aXR5OjB9KSldKV0pXX19KSxkfSkoKSxvZD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5KXt0aGlzLnJlbmRlcmVyPWgsdGhpcy5ob3N0PXYsdGhpcy50YWJpbmRleD0iMCIsdGhpcy51bmxpc3RlbmVycz1bXSx5LnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5vYnNlcnZlcj1u''@;'; put 'put ''ZXcgUmVzaXplT2JzZXJ2ZXIoKCk9PnRoaXMuYWRkT3JSZW1vdmVUYWJJbmRleCgpKSx0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpLHRoaXMudW5saXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwi''@;'; put 'put ''bW91c2V1cCIsKCk9Pnt0aGlzLmFkZE9yUmVtb3ZlVGFiSW5kZXgoKX0pLHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCJtb3VzZWRvd24iLCgpPT57dGhpcy5yZW1vdmVUYWJJbmRleCgpfSkpfSl9bmdPbkRlc3Ryb3koKXtmb3IoO3RoaXMudW5saXN0ZW5l''@;'; put 'put ''cnMubGVuZ3RoOyl0aGlzLnVubGlzdGVuZXJzLnBvcCgpKCk7dGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCksdGhpcy5vYnNlcnZlcj1udWxsfWFkZFRhYkluZGV4KCl7dGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsInRhYmluZGV4Iix0aGlzLnRh''@;'; put 'put ''YmluZGV4KX1yZW1vdmVUYWJJbmRleCgpe3RoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCJ0YWJpbmRleCIpfWFkZE9yUmVtb3ZlVGFiSW5kZXgoKXtjb25zdCBoPXRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7aC5jbGll''@;'; put 'put ''bnRIZWlnaHQ8aC5zY3JvbGxIZWlnaHQ/dGhpcy5hZGRUYWJJbmRleCgpOnRoaXMucmVtb3ZlVGFiSW5kZXgoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoR2EpLEt0KGJvKSxLdChfbCkpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVj''@;'; put 'put ''dG9yczpbWyIiLDgsIm1vZGFsLWJvZHkiXV19KSxkfSkoKSxGeWU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe2hzLmFkZEljb25zKFNrKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3''@;'; put 'put ''NWluaj1iMCh7aW1wb3J0czpbW2JhLERzLHNxLGZTXSxEcyxmU119KSxkfSkoKTtjb25zdCBJUmU9eyJ0b3AtbGVmdCI6e2FuY2hvclBvaW50OmcwLlRPUF9DRU5URVIscG9wb3ZlclBvaW50OmcwLkJPVFRPTV9SSUdIVCxvZmZzZXRZOi0xMCxvZmZzZXRYOjB9LCJ0b3AtbWlkZGxlIjp7YW5j''@;'; put 'put ''aG9yUG9pbnQ6ZzAuVE9QX0NFTlRFUixwb3BvdmVyUG9pbnQ6ZzAuQk9UVE9NX0NFTlRFUixvZmZzZXRZOi0xMCxvZmZzZXRYOjB9LCJ0b3AtcmlnaHQiOnthbmNob3JQb2ludDpnMC5UT1BfQ0VOVEVSLHBvcG92ZXJQb2ludDpnMC5CT1RUT01fTEVGVCxvZmZzZXRZOi0xMCxvZmZzZXRYOjB9''@;'; put 'put ''LCJyaWdodC10b3AiOnthbmNob3JQb2ludDpnMC5SSUdIVF9DRU5URVIscG9wb3ZlclBvaW50OmcwLkxFRlRfQk9UVE9NLG9mZnNldFk6MixvZmZzZXRYOjE0fSwicmlnaHQtbWlkZGxlIjp7YW5jaG9yUG9pbnQ6ZzAuUklHSFRfQ0VOVEVSLHBvcG92ZXJQb2ludDpnMC5MRUZUX0NFTlRFUixv''@;'; put 'put ''ZmZzZXRZOjYsb2Zmc2V0WDoxNH0sInJpZ2h0LWJvdHRvbSI6e2FuY2hvclBvaW50OmcwLlJJR0hUX0NFTlRFUixwb3BvdmVyUG9pbnQ6ZzAuTEVGVF9UT1Asb2Zmc2V0WTotMSxvZmZzZXRYOjE0fSwiYm90dG9tLXJpZ2h0Ijp7YW5jaG9yUG9pbnQ6ZzAuQk9UVE9NX0NFTlRFUixwb3BvdmVy''@;'; put 'put ''UG9pbnQ6ZzAuVE9QX0xFRlQsb2Zmc2V0WTo5LG9mZnNldFg6LTF9LCJib3R0b20tbWlkZGxlIjp7YW5jaG9yUG9pbnQ6ZzAuQk9UVE9NX0NFTlRFUixwb3BvdmVyUG9pbnQ6ZzAuVE9QX0NFTlRFUixvZmZzZXRZOjksb2Zmc2V0WDoxMn0sImJvdHRvbS1sZWZ0Ijp7YW5jaG9yUG9pbnQ6ZzAu''@;'; put 'put ''Qk9UVE9NX0NFTlRFUixwb3BvdmVyUG9pbnQ6ZzAuVE9QX1JJR0hULG9mZnNldFk6OSxvZmZzZXRYOjB9LCJsZWZ0LWJvdHRvbSI6e2FuY2hvclBvaW50OmcwLkxFRlRfQ0VOVEVSLHBvcG92ZXJQb2ludDpnMC5SSUdIVF9UT1Asb2Zmc2V0WTowLG9mZnNldFg6LTE0fSwibGVmdC1taWRkbGUi''@;'; put 'put ''OnthbmNob3JQb2ludDpnMC5MRUZUX0NFTlRFUixwb3BvdmVyUG9pbnQ6ZzAuUklHSFRfQ0VOVEVSLG9mZnNldFk6NCxvZmZzZXRYOi0xNH0sImxlZnQtdG9wIjp7YW5jaG9yUG9pbnQ6ZzAuTEVGVF9DRU5URVIscG9wb3ZlclBvaW50OmcwLlJJR0hUX0JPVFRPTSxvZmZzZXRZOjAsb2Zmc2V0''@;'; put 'put ''WDotMTR9LGRlZmF1bHQ6e2FuY2hvclBvaW50OmcwLlJJR0hUX0NFTlRFUixwb3BvdmVyUG9pbnQ6ZzAuTEVGVF9DRU5URVIsb2Zmc2V0WTo2LG9mZnNldFg6MTR9fSxEUmU9WyJ0b3AtbGVmdCIsInRvcC1taWRkbGUiLCJ0b3AtcmlnaHQiLCJyaWdodC10b3AiLCJyaWdodC1taWRkbGUiLCJy''@;'; put 'put ''aWdodC1ib3R0b20iLCJib3R0b20tcmlnaHQiLCJib3R0b20tbWlkZGxlIiwiYm90dG9tLWxlZnQiLCJsZWZ0LWJvdHRvbSIsImxlZnQtbWlkZGxlIiwibGVmdC10b3AiXTtsZXQgSHllPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBuaGV7Y29uc3RydWN0b3IoaCx2LHksQyxJLFosdWUsX2Upe2lm''@;'; put 'put ''KHN1cGVyKGgsdiksdGhpcy5jb21tb25TdHJpbmdzPXksdGhpcy5zaWducG9zdENvbnRlbnRJZD1DLHRoaXMuc2lnbnBvc3RJZFNlcnZpY2U9SSx0aGlzLnNpZ25wb3N0Rm9jdXNNYW5hZ2VyPVosdGhpcy5wbGF0Zm9ybUlkPXVlLCF2KXRocm93IG5ldyBFcnJvcigiY2xyLXNpZ25wb3N0LWNv''@;'; put 'put ''bnRlbnQgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbnNpZGUgb2YgYSBjbHItc2lnbnBvc3QiKTt0aGlzLnBvc2l0aW9uPSJyaWdodC1taWRkbGUiLHRoaXMuY2xvc2VPbk91dHNpZGVDbGljaz0hMCx0aGlzLnNpZ25wb3N0SWRTZXJ2aWNlLnNldElkKEMpLHRoaXMuZG9jdW1lbnQ9X2V9Y2xvc2Uo''@;'; put 'put ''KXt0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMX1nZXQgcG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fcG9zaXRpb259c2V0IHBvc2l0aW9uKGgpe3RoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LHRoaXMucG9zaXRpb24pLHRoaXMuX3Bvc2l0aW9uPWgmJkRS''@;'; put 'put ''ZS5pbmRleE9mKGgpPi0xP2g6InJpZ2h0LW1pZGRsZSIsdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsdGhpcy5wb3NpdGlvbik7Y29uc3Qgdj1JUmVbdGhpcy5wb3NpdGlvbl07dGhpcy5hbmNob3JQb2ludD12LmFuY2hvclBvaW50LHRoaXMucG9wb3ZlclBv''@;'; put 'put ''aW50PXYucG9wb3ZlclBvaW50LHRoaXMucG9wb3Zlck9wdGlvbnMub2Zmc2V0WT12Lm9mZnNldFksdGhpcy5wb3BvdmVyT3B0aW9ucy5vZmZzZXRYPXYub2Zmc2V0WH1uZ09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksU2wodGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy5lbC5uYXRpdmVF''@;'; put 'put ''bGVtZW50LmNvbnRhaW5zKHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkmJnRoaXMuc2lnbnBvc3RGb2N1c01hbmFnZXIuZm9jdXNUcmlnZ2VyKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KFNzKSxLdCh0Ziw4KSxLdChucyksS3QoeTIp''@;'; put 'put ''LEt0KHpmZSksS3QoWmZlKSxLdChMMiksS3QoZ3MpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siY2xyLXNpZ25wb3N0LWNvbnRlbnQiXV0saG9zdFZhcnM6Myxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsyJmgmJihCMygiaWQiLHYuc2lnbnBvc3RDb250ZW50SWQp''@;'; put 'put ''LEZpKCJzaWducG9zdC1jb250ZW50IiwhMCkpfSxpbnB1dHM6e3Bvc2l0aW9uOlsiY2xyUG9zaXRpb24iLCJwb3NpdGlvbiJdfSxmZWF0dXJlczpbaG8oW09jXSksRG9dLG5nQ29udGVudFNlbGVjdG9yczpuYSxkZWNsczo3LHZhcnM6Myxjb25zdHM6W1sxLCJzaWducG9zdC13cmFwIl0sWzEs''@;'; put 'put ''InBvcG92ZXItcG9pbnRlciJdLFsxLCJzaWducG9zdC1jb250ZW50LWhlYWRlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwic2lnbnBvc3QtYWN0aW9uIiwiY2xvc2UiLDMsImNsaWNrIl0sWyJzaGFwZSIsIndpbmRvdy1jbG9zZSJdLFsxLCJzaWducG9zdC1jb250ZW50LWJvZHkiXV0sdGVtcGxh''@;'; put 'put ''dGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihLMCgpLG50KDAsImRpdiIsMCksQ3IoMSwiZGl2IiwxKSxudCgyLCJkaXYiLDIpKDMsImJ1dHRvbiIsMyksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LmNsb3NlKCl9KSxDcig0LCJjZHMtaWNvbiIsNCksb3QoKSgpLG50KDUsImRpdiIsNSks''@;'; put 'put ''TmkoNiksb3QoKSgpKSwyJmgmJih1dCgzKSxHaSgiYXJpYS1sYWJlbCIsdi5jb21tb25TdHJpbmdzLmtleXMuc2lnbnBvc3RDbG9zZSkoImFyaWEtY29udHJvbHMiLHYuc2lnbnBvc3RDb250ZW50SWQpLHV0KDEpLEdpKCJ0aXRsZSIsdi5jb21tb25TdHJpbmdzLmtleXMuY2xvc2UpKX0sZGVw''@;'; put 'put ''ZW5kZW5jaWVzOltab10sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksTFJlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXtocy5hZGRJY29ucyhTayxtWCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSks''@;'; put 'put ''ZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W1tiYSxEcyxmU10scWFdfSksZH0pKCksRlJlPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6''@;'; put 'put ''W1tiYV0scWEsRHNdfSksZH0pKCksSFJlPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W3JoZSxMUmUsRlJlXX0pLGR9KSgpLE5SZT0o''@;'; put 'put ''KCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHtpbXBvcnRzOltbYmFdXX0pLGR9KSgpLGpSZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7aHMuYWRk''@;'; put 'put ''SWNvbnMoWnNlLHpzZSx2WCxXc2UpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHtpbXBvcnRzOltbYmEsRHMsRGxdLERzLERsXX0pLGR9KSgpLFlSZT0oKCk9PntjbGFzcyBk''@;'; put 'put ''e2NvbnN0cnVjdG9yKCl7aHMuYWRkSWNvbnModlgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHtpbXBvcnRzOltbYmEsRnllLHh5ZV1dfSksZH0pKCksbk89KCgpPT57Y2xh''@;'; put 'put ''c3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbYVJlLEtPZSxEcyxGeWUsQmZlLHFhLHNxLGZTLE9PZSxNLFFBZSxUUmUsSFJlLFlSZSx0eWUsTHMsRGws''@;'; put 'put ''TlJlLFJjLGpSZV19KSxkfSkoKTtmdW5jdGlvbiBVUmUoZCxnKXsxJmQmJihudCgwLCJzcGFuIiwxMCksWXQoMSwibG9hZGluZyIpLG90KCkpfWZ1bmN0aW9uIFFSZShkLGcpezEmZCYmKG50KDAsInNwYW4iLDExKSxZdCgxLCJsb2FkZWQiKSxvdCgpKX1mdW5jdGlvbiBKUmUoZCxnKXsxJmQm''@;'; put 'put ''JihudCgwLCJzcGFuIiwxMiksWXQoMSwiZmFpbGVkIiksb3QoKSl9ZnVuY3Rpb24gWFJlKGQsZyl7aWYoMSZkJiYobnQoMCwicCIpKDEsImNvZGUiKSxZdCgyKSxvdCgpLFl0KDMsIiBceGEwICIpLHJuKDQsVVJlLDIsMCwic3BhbiIsNykscm4oNSxRUmUsMiwwLCJzcGFuIiw4KSxybig2LEpS''@;'; put 'put ''ZSwyLDAsInNwYW4iLDkpLG90KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDt1dCgyKSxqaShoLnByb2dyYW0pLHV0KDIpLFR0KCJuZ0lmIixoLnJ1bm5pbmcpLHV0KDEpLFR0KCJuZ0lmIiwhaC5ydW5uaW5nJiZoLnN1Y2Nlc3NmdWwpLHV0KDEpLFR0KCJuZ0lmIiwhaC5ydW5uaW5nJiYh''@;'; put 'put ''aC5zdWNjZXNzZnVsKX19ZnVuY3Rpb24gS1JlKGQsZyl7aWYoMSZkJiYobnQoMCwiY2xyLXNpZ25wb3N0LWNvbnRlbnQiLDUpLHJuKDEsWFJlLDcsNCwicCIsNiksb3QoKSksMiZkKXtjb25zdCBoPVF0KCk7VHQoImNsclBvc2l0aW9uIiwiYm90dG9tLW1pZGRsZSIpLHV0KDEpLFR0KCJuZ0Zv''@;'; put 'put ''ck9mIixoLnJlcXVlc3RzKX19bGV0ICRSZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5sb2FkaW5nPSExLHRoaXMucmVxdWVzdHM9W10sdGhpcy5fbG9hZGluZ1N1Yj1uZXcgVGV9bmdPbkluaXQoKXt9bmdPbkRlc3Ryb3koKXt0aGlzLl9sb2FkaW5nU3ViLnVuc3Vic2NyaWJl''@;'; put 'put ''KCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtbG9hZGluZy1pbmRpY2F0b3IiXV0sZGVjbHM6Nix2YXJzOjYsY29uc3RzOltbMSwibG9hZGluZy1pbmRpY2F0b3IiXSxbImNs''@;'; put 'put ''clNpZ25wb3N0VHJpZ2dlciIsIiIsMSwic3Bpbm5lciIsInNwaW5uZXItc20iLCJzcGlubmVyLWludmVyc2UiXSxbImNsclNpZ25wb3N0VHJpZ2dlciIsIiIsInNoYXBlIiwiY2hlY2siLCJzaXplIiwiMjAiLDEsImlzLWluZm8iXSxbImNsclNpZ25wb3N0VHJpZ2dlciIsIiIsInNoYXBlIiwi''@;'; put 'put ''ZXJyb3IiLCJzaXplIiwiMjQiLDEsImlzLWVycm9yIl0sWzMsImNsclBvc2l0aW9uIiw0LCJjbHJJZk9wZW4iXSxbMywiY2xyUG9zaXRpb24iXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsInJ1bm5pbmciLDQsIm5nSWYiXSxbImNsYXNzIiwic3VjY2VzcyIsNCwibmdJZiJdLFsi''@;'; put 'put ''Y2xhc3MiLCJmYWlsIiw0LCJuZ0lmIl0sWzEsInJ1bm5pbmciXSxbMSwic3VjY2VzcyJdLFsxLCJmYWlsIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYobnQoMCwiZGl2IiwwKSgxLCJjbHItc2lnbnBvc3QiKSxDcigyLCJzcGFuIiwxKSgzLCJjbHItaWNvbiIsMikoNCwiY2xyLWlj''@;'; put 'put ''b24iLDMpLHJuKDUsS1JlLDIsMiwiY2xyLXNpZ25wb3N0LWNvbnRlbnQiLDQpLG90KCkoKSksMiZoJiYodXQoMiksTmQoImRpc3BsYXkiLHYubG9hZGluZz8iaW5saW5lLWJsb2NrIjoibm9uZSIpLHV0KDEpLE5kKCJkaXNwbGF5Iiwhdi5sb2FkaW5nJiZ2LnJlcXVlc3RzLmxlbmd0aD4wJiZ2''@;'; put 'put ''LnJlcXVlc3RzWzBdLnN1Y2Nlc3NmdWw/ImlubGluZS1ibG9jayI6Im5vbmUiKSx1dCgxKSxOZCgiZGlzcGxheSIsIXYubG9hZGluZyYmdi5yZXF1ZXN0cy5sZW5ndGg+MCYmIXYucmVxdWVzdHNbMF0uc3VjY2Vzc2Z1bD8iaW5saW5lLWJsb2NrIjoibm9uZSIpKX0sZGVwZW5kZW5jaWVzOlt4''@;'; put 'put ''cyxObyx3bCxQYSxHZmUsSHllLHlxXSxzdHlsZXM6WyIubG9hZGluZy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjIuNXJlbTtoZWlnaHQ6Mi41cmVtO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmxvYWRpbmctaW5kaWNhdG9yW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXSAgIC5zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmxvYWRpbmctaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1zaWducG9zdC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4O2NvbG9yOiM1''@;'; put 'put ''NjU2NTY7Y3Vyc29yOmF1dG99LmxvYWRpbmctaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1zaWducG9zdC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MTBweDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50''@;'; put 'put ''OnNwYWNlLWJldHdlZW59LmxvYWRpbmctaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1zaWducG9zdC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0ubG9hZGluZy1pbmRpY2F0b3JbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVdICAgY2xyLXNpZ25wb3N0LWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV06bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LmxvYWRpbmctaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1zaWducG9zdC1jb250''@;'; put 'put ''ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWxlZnQ6MTBweH0ubG9hZGluZy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdICAgY2xyLXNpZ25wb3N0LWNvbnRlbnRbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0gICBzcGFuLnJ1bm5pbmdbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNlOWJmMDR9LmxvYWRpbmctaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1zaWducG9zdC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVdICAgc3Bhbi5zdWNjZXNzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjBiNTE1fS5sb2FkaW5nLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV0gICBjbHItc2lnbnBvc3QtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSAg''@;'; put 'put ''IHNwYW4uZmFpbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2M5MjEwMH0iXX0pLGR9KSgpLHFSZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdil7dGhpcy5zYXNTZXJ2aWNlPWgsdGhpcy5sb2dnZXJTZXJ2aWNlPXYsdGhpcy5fc3Vic2NyaXB0aW9uPW5ldyBUZSx0aGlzLmxvYWRp''@;'; put 'put ''bmc9ITEsdGhpcy5hbGVydENsb3NlZD0hMCx0aGlzLmRhdGE9e3VzZXI6bnVsbCxwYXNzOm51bGx9fW5nT25Jbml0KCl7IlJlZGlyZWN0ZWQiIT09dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCkubG9naW5NZWNoYW5pc20mJih0aGlzLl9zdWJzY3JpcHRpb249dGhpcy5zYXNTZXJ2''@;'; put 'put ''aWNlLnNob3VsZExvZ2luLnN1YnNjcmliZSh2PT57dGhpcy5pc0FjdGl2ZT12O2xldCB5PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImJvZHkiKTsheXx8KHY/eS5jbGFzc0xpc3QuYWRkKCJzaG91bGQtbG9naW4iKTp5LmNsYXNzTGlzdC5yZW1vdmUoInNob3VsZC1sb2dpbiIpKX0pKX1uZ09u''@;'; put 'put ''RGVzdHJveSgpe3RoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfXN1Ym1pdCgpe3RoaXMubG9hZGluZ3x8KHRoaXMubG9hZGluZz0hMCx0aGlzLmRhdGEudXNlciYmdGhpcy5kYXRhLnBhc3MmJnRoaXMuc2FzU2VydmljZS5sb2dpbih0aGlzLmRhdGEudXNlcix0aGlzLmRhdGEucGFz''@;'; put 'put ''cykudGhlbihoPT57dGhpcy5sb2FkaW5nPSExLGh8fCh0aGlzLmVycm9yTXNnPSJVc2VybmFtZSBvciBwYXNzd29yZCBpbnZhbGlkIix0aGlzLmFsZXJ0Q2xvc2VkPSExKX0saD0+e3RoaXMubG9nZ2VyU2VydmljZS5sb2coaCksdGhpcy5sb2FkaW5nPSExLHRoaXMuZXJyb3JNc2c9aCx0aGlz''@;'; put 'put ''LmFsZXJ0Q2xvc2VkPSExfSkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChnMiksS3Qoc2MpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLWxvZ2luIl1dLGRlY2xzOjIwLHZhcnM6OSxjb25zdHM6W1sxLCJsb2dp''@;'; put 'put ''bi1zaWRlYmFyLXdyYXBwZXIiXSxbMSwibG9naW4tc2lkZWJhciIsInNpZGVCYXJQcm9wcyJdLFsic3JjIiwiL1NBU1N0b3JlZFByb2Nlc3MvP19QUk9HUkFNPXBaS2Q2Rjk1akVDdlJRbE4wTENmZEE9PS93ZWI5L2ltYWdlcy9kYXRhY29udHJvbGxlci1zdmciLCJhbHQiLCIiLDEsImxvZ2lu''@;'; put 'put ''LWxvZ28iXSxbMSwibG9naW4iLDMsIm5nU3VibWl0Il0sWzEsInRpdGxlIl0sWzEsIndlbGNvbWUiXSxbMSwiaGludCJdLFsxLCJsb2dpbi1ncm91cCJdLFsiY2xySW5wdXQiLCIiLCJuYW1lIiwidXNlciIsInR5cGUiLCJ0ZXh0IiwicGxhY2Vob2xkZXIiLCJVc2VybmFtZSIsMSwidXNlcm5h''@;'; put 'put ''bWUiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIl0sWyJjbHJJbnB1dCIsIiIsIm5hbWUiLCJwYXNzIiwidHlwZSIsInBhc3N3b3JkIiwicGxhY2Vob2xkZXIiLCJQYXNzd29yZCIsMSwicGFzc3dvcmQiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIl0sWzMsImNsckFsZXJ0VHlwZSIs''@;'; put 'put ''ImNsckFsZXJ0Q2xvc2VkIiwiY2xyQWxlcnRDbG9zZWRDaGFuZ2UiXSxbImNsci1hbGVydC1pdGVtIiwiIiwxLCJhbGVydC1pdGVtIl0sWzEsImFsZXJ0LXRleHQiXSxbInR5cGUiLCJzdWJtaXQiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzIiwzLCJjbHJMb2FkaW5nIiwiZGlzYWJs''@;'; put 'put ''ZWQiXSxbMSwib3ZlcmxheSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKG50KDAsImRpdiIsMCkoMSwiZGl2IiwxKSxDcigyLCJpbWciLDIpLG50KDMsImZvcm0iLDMpLEduKCJuZ1N1Ym1pdCIsZnVuY3Rpb24oKXtyZXR1cm4gdi5zdWJtaXQoKX0pLG50KDQsImxhYmVsIiw0KSg1''@;'; put 'put ''LCJoMyIsNSksWXQoNiwiV2VsY29tZSB0byIpLG90KCksWXQoNywiIERhdGEgQ29udHJvbGxlciAiKSxudCg4LCJoNSIsNiksWXQoOSwiQ2FwdHVyZSwgUmV2aWV3LCBhbmQgQXBwcm92ZSIpLG90KCkoKSxudCgxMCwiZGl2Iiw3KSgxMSwiaW5wdXQiLDgpLEduKCJuZ01vZGVsQ2hhbmdlIixm''@;'; put 'put ''dW5jdGlvbihDKXtyZXR1cm4gdi5kYXRhLnVzZXI9Q30pLG90KCksbnQoMTIsImlucHV0Iiw5KSxHbigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYuZGF0YS5wYXNzPUN9KSxvdCgpLG50KDEzLCJjbHItYWxlcnQiLDEwKSxHbigiY2xyQWxlcnRDbG9zZWRDaGFuZ2UiLGZ1''@;'; put 'put ''bmN0aW9uKEMpe3JldHVybiB2LmFsZXJ0Q2xvc2VkPUN9KSxudCgxNCwiZGl2IiwxMSkoMTUsInNwYW4iLDEyKSxZdCgxNiksb3QoKSgpKCksbnQoMTcsImJ1dHRvbiIsMTMpLFl0KDE4LCIgTG9nIGluICIpLG90KCkoKSgpKCksQ3IoMTksImRpdiIsMTQpLG90KCkpLDImaCYmKEZpKCJhY3Rp''@;'; put 'put ''dmUiLHYuaXNBY3RpdmUpLHV0KDExKSxUdCgibmdNb2RlbCIsdi5kYXRhLnVzZXIpLHV0KDEpLFR0KCJuZ01vZGVsIix2LmRhdGEucGFzcyksdXQoMSksVHQoImNsckFsZXJ0VHlwZSIsImFsZXJ0LWRhbmdlciIpKCJjbHJBbGVydENsb3NlZCIsdi5hbGVydENsb3NlZCksdXQoMyksamkodi5l''@;'; put 'put ''cnJvck1zZyksdXQoMSksVHQoImNsckxvYWRpbmciLHYubG9hZGluZykoImRpc2FibGVkIix2LmxvYWRpbmcpKX0sZGVwZW5kZW5jaWVzOltwZyxtMSxUcyxkZyxJcyxMYyxwWixnWixnbyx3LGF0LHB2XSxzdHlsZXM6WyIuc2lkZUJhclByb3BzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3Jv''@;'; put 'put ''dW5kOiMzMTQzNTEhaW1wb3J0YW50O2NvbG9yOiNlMGUwZTB9LnNpZGVCYXJQcm9wc1tfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5zaWRlQmFyUHJvcHNbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAuc2lkZUJhclByb3Bz''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNpZGVCYXJQcm9wc1tfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5zaWRlQmFyUHJvcHNbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbX25nY29udGVudC0lQ09NUCVde2Nv''@;'; put 'put ''bG9yOiNlMGUwZTB9LnNpZGVCYXJQcm9wc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjp3aGVhdCFpbXBvcnRhbnR9LnNpZGVCYXJQcm9wc1tfbmdjb250ZW50LSVDT01QJV0gICBhW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjoj''@;'; put 'put ''ZTBlMGUwfS5sb2dpbi1zaWRlYmFyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3BvaW50ZXItZXZlbnRzOm5vbmU7ei1pbmRleDoxMDAwMH0ubG9naW4tc2lkZWJhci13cmFwcGVyW19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSA+ICpbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOmF1dG99LmxvZ2luLXNpZGViYXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubG9naW4tc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6NDAwcHg7cG9zaXRpb246YWJzb2x1dGU7dG9w''@;'; put 'put ''OjA7Ym90dG9tOjA7bGVmdDowO2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGQ7cGFkZGluZzo0MHB4O3RyYW5zZm9ybTp0cmFuc2xhdGUoLTQwMHB4KTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZX0ubG9naW4tc2lkZWJhci13cmFwcGVyW19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSAgIC5sb2dpbi1zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGZvcm0ubG9naW5bX25nY29udGVudC0lQ09NUCVde3otaW5kZXg6MTAxO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcn0ubG9naW4tc2lkZWJhci13''@;'; put 'put ''cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5sb2dpbi1zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGZvcm0ubG9naW5bX25nY29udGVudC0lQ09NUCVdICAgLnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MzJweDtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1o''@;'; put 'put ''ZWlnaHQ6MzZweH0ubG9naW4tc2lkZWJhci13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5sb2dpbi1zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGZvcm0ubG9naW5bX25nY29udGVudC0lQ09NUCVdICAgLnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC53ZWxjb21lW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjM2cHh9LmxvZ2luLXNpZGViYXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubG9naW4tc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV0gICBmb3JtLmxvZ2luW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5sb2dpbi1ncm91cFtfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nOjQ4cHggMCAwfS5sb2dpbi1zaWRlYmFyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLmxvZ2luLXNpZGViYXJbX25nY29udGVudC0lQ09NUCVdICAgZm9ybS5sb2dpbltfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV0gICAubG9naW4tZ3JvdXBbX25nY29udGVudC0lQ09NUCVdID4gKltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjZweCAwIDE4cHh9LmxvZ2luLXNpZGViYXItd3JhcHBlci5hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmxvZ2luLXNpZGViYXJbX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''e3RyYW5zZm9ybTp0cmFuc2xhdGUoMCk7ei1pbmRleDoxMDF9LmxvZ2luLXNpZGViYXItd3JhcHBlci5hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9LmxvZ2luLXNpZGViYXItd3JhcHBlcltfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV0gICAub3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lO3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO2JhY2tncm91bmQ6cmdiYSgzMywzMywzMywuNSk7ei1pbmRleDoxMDB9ICAubG9naW4tc2lkZWJhci13cmFwcGVy''@;'; put 'put ''IC5sb2dpbi1ncm91cCAuY2xyLWNvbnRyb2wtY29udGFpbmVyLCAgIC5sb2dpbi1zaWRlYmFyLXdyYXBwZXIgLmxvZ2luLWdyb3VwIC51c2VybmFtZSwgICAubG9naW4tc2lkZWJhci13cmFwcGVyIC5sb2dpbi1ncm91cCAucGFzc3dvcmR7d2lkdGg6MTAwJX0gIC5sb2dpbi1zaWRlYmFyLXdy''@;'; put 'put ''YXBwZXIgLmxvZ2luLWdyb3VwIC5jbHItaW5wdXQtd3JhcHBlcnttYXgtd2lkdGg6bm9uZX0gIC5sb2dpbi1zaWRlYmFyLXdyYXBwZXIgLmxvZ2luLWdyb3VwIGJ1dHRvbnttYXgtd2lkdGg6bm9uZX0ubG9naW4tbG9nb1tfbmdjb250ZW50LSVDT01QJV17bWF4LXdpZHRoOjIwMHB4fSJdfSks''@;'; put 'put ''ZH0pKCk7ZnVuY3Rpb24gZUJlKGQsZyl7aWYoMSZkJiYobnQoMCwic3BhbiIpLENyKDEsImltZyIsMTgpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgpO3V0KDEpLEk2KCJzcmMiLGguZ2V0UGljdHVyZVVybCgpLFQ5KX19ZnVuY3Rpb24gdEJlKGQsZyl7aWYoMSZkJiYobnQoMCwic3BhbiIsMTkp''@;'; put 'put ''LFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgpO0ZpKCJoaWRkZW4iLDA9PT1oLmZhaWxlZFJlcXMubGVuZ3RoKSx1dCgxKSxqaShoLmZhaWxlZFJlcXMubGVuZ3RoKX19ZnVuY3Rpb24gbkJlKGQsZyl7aWYoMSZkJiYobnQoMCwic3BhbiIsMjApLFl0KDEpLG90KCkpLDImZCl7Y29uc3Qg''@;'; put 'put ''aD1RdCgpO0ZpKCJoaWRkZW4iLDA9PT1oLmRlYnVnTG9ncy5sZW5ndGgpLHV0KDEpLGppKGguZGVidWdMb2dzLmxlbmd0aCl9fWZ1bmN0aW9uIHJCZShkLGcpezEmZCYmQ3IoMCwiY2xyLWljb24iLDIxKX1mdW5jdGlvbiBpQmUoZCxnKXsxJmQmJihCMCgwKSxudCgxLCJhIiwzMSkoMiwic3Bh''@;'; put 'put ''biIsMzIpLFl0KDMsIkRvY3VtZW50YXRpb24iKSxvdCgpKCksUDAoKSl9ZnVuY3Rpb24gb0JlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiY2xyLWRyb3Bkb3duLW1lbnUiLDIyKSgxLCJkaXYiLDIzLDI0KSgzLCJjbHItdG9nZ2xlLWNvbnRhaW5lciIsMjUpLEduKCJjbGljayIs''@;'; put 'put ''ZnVuY3Rpb24oeSl7aXQoaCk7Y29uc3QgQz12YSgyKTtyZXR1cm4gYShRdCgpLm9uRGVidWdSb3dDbGljayh5LEMpKX0pLG50KDQsImNsci10b2dnbGUtd3JhcHBlciIpKDUsImlucHV0IiwyNiksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KCkuc2Fz''@;'; put 'put ''anNDb25maWcuZGVidWc9eSl9KSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgpLm9uRGVidWdNb2RlQ2hhbmdlKCkpfSksb3QoKSxudCg2LCJsYWJlbCIpLFl0KDcsIkRlYnVnIE1vZGUiKSxvdCgpKCkoKSgpLG50KDgsImEiLDI3KSxHbigiY2xpY2siLGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoKS5vcGVuUmVxdWVzdHNNb2RhbCgpKX0pLG50KDksInNwYW4iKSxZdCgxMCwiU0FTIFJlcXVlc3RzIiksb3QoKSgpLHJuKDExLGlCZSw0LDAsIm5nLWNvbnRhaW5lciIsMiksQ3IoMTIsImRpdiIsMTUpLG50KDEzLCJhIiwyOCksR24oImNsaWNr''@;'; put 'put ''IixmdW5jdGlvbih5KXtyZXR1cm4gaXQoaCksYShRdCgpLmxvZ291dCh5KSl9KSxudCgxNCwic3BhbiIpLFl0KDE1LCJMb2cgT3V0Iiksb3QoKSxDcigxNiwiY2xyLWljb24iLDI5KSxvdCgpLG50KDE3LCJkaXYiLDMwKSgxOCwic3BhbiIpLFl0KDE5KSxvdCgpKCkoKX1pZigyJmQpe2NvbnN0''@;'; put 'put ''IGg9UXQoKTt1dCg1KSxUdCgibmdNb2RlbCIsaC5zYXNqc0NvbmZpZy5kZWJ1ZyksdXQoNiksVHQoIm5nSWYiLCFoLmlzRGVwbG95UGFnZSksdXQoOCksSmkoInYiLGguY29tbWl0VmVyLCIiKX19Y29uc3QgYUJlPWZ1bmN0aW9uKCl7cmV0dXJue3N0YW5kYWxvbmU6ITB9fTtsZXQgbEJlPSgo''@;'; put 'put ''KT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy51c2VyU2VydmljZT1oLHRoaXMuc2FzU2VydmljZT12LHRoaXMuZXZlbnRTZXJ2aWNlPXksdGhpcy5yb3V0ZXI9Qyx0aGlzLnVzZXJOYW1lPSJOb3QgbG9nZ2VkIGluIix0aGlzLnJlcVN1Yj1uZXcgVGUsdGhpcy51c2VyU3Vi''@;'; put 'put ''PW5ldyBUZSx0aGlzLmFwcExvZ3M9W10sdGhpcy5kZWJ1Z0xvZ3M9W10sdGhpcy5mYWlsZWRSZXFzPVtdLHRoaXMuc2FzRXJyb3JzPVtdLHRoaXMuaXNWaXlhPSExLHRoaXMuc2FzanNDb25maWc9bmV3IFUzLlNBU2pzQ29uZmlnLHRoaXMucmVxdWVzdHNDb3VudD0wLHRoaXMuY29tbWl0VmVy''@;'; put 'put ''PSIifW5nT25Jbml0KCl7dGhpcy51c2VyU3ViPXRoaXMudXNlclNlcnZpY2UudXNlckNoYW5nZS5zdWJzY3JpYmUoaD0+e3RoaXMudXNlck5hbWU9aC51c2VybmFtZX0pLHRoaXMuc2FzanNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksIlNBU1ZJWUEiPT09dGhpcy5z''@;'; put 'put ''YXNqc0NvbmZpZy5zZXJ2ZXJUeXBlJiYodGhpcy5pc1ZpeWE9ITApLHRoaXMuY29tbWl0VmVyPSJ2NS4wLjAiLnJlcGxhY2UoInYiLCIiKSsiLmcwMjlmYTlmMCJ9bmdPbkRlc3Ryb3koKXt0aGlzLnJlcVN1Yi51bnN1YnNjcmliZSgpLHRoaXMudXNlclN1Yi51bnN1YnNjcmliZSgpfW9wZW5S''@;'; put 'put ''ZXF1ZXN0c01vZGFsKCl7dGhpcy5ldmVudFNlcnZpY2Uub3BlblJlcXVlc3RzTW9kYWwoKX1vbkRlYnVnTW9kZUNoYW5nZShoKXt0aGlzLnNhc2pzQ29uZmlnJiZ0aGlzLnNhc1NlcnZpY2Uuc2V0RGVidWdTdGF0ZSh0aGlzLnNhc2pzQ29uZmlnLmRlYnVnKX1vbkRlYnVnUm93Q2xpY2soaCx2''@;'; put 'put ''KXtoLnN0b3BQcm9wYWdhdGlvbigpLHNldFRpbWVvdXQoKCk9Pnt2LmNsaWNrKCl9LDMwMCl9bG9nb3V0KGgpe2gucHJldmVudERlZmF1bHQoKTt0cnl7dGhpcy5zYXNTZXJ2aWNlLmxvZ291dCgpfWNhdGNoKHYpe2NvbnNvbGUuZXJyb3Iodil9fWdldFBpY3R1cmVVcmwoKXtyZXR1cm4iL2lk''@;'; put 'put ''ZW50aXRpZXMvdXNlcnMvIit0aGlzLnVzZXJOYW1lKyIvYXZhdGFyL2NvbnRlbnQifWdldCBpc0RlcGxveVBhZ2UoKXtyZXR1cm4gdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCJkZXBsb3kiKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoT0gp''@;'; put 'put ''LEt0KGcyKSxLdChtdSksS3QoWmwpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLXVzZXItbmF2LWRyb3Bkb3duIl1dLGRlY2xzOjI4LHZhcnM6MTAsY29uc3RzOltbMSwiYXBwLW5hdi1kcm9wZG93biIsImQtbWQtYmxvY2siXSxbImNsckRyb3Bkb3duVG9nZ2xl''@;'; put 'put ''IiwiIiwxLCJuYXYtdGV4dCIsImNvbG9yLXdoaXRlIl0sWzQsIm5nSWYiXSxbImNsYXNzIiwiYmFkZ2UgYmFkZ2UtZGFuZ2VyIiwzLCJoaWRkZW4iLDQsIm5nSWYiXSxbImNsYXNzIiwiYmFkZ2UgYmFkZ2UtaW5mbyIsMywiaGlkZGVuIiw0LCJuZ0lmIl0sWyJzaGFwZSIsImNhcmV0IGRvd24i''@;'; put 'put ''LDQsIm5nSWYiXSxbImNsclBvc2l0aW9uIiwiYm90dG9tLXJpZ2h0Iiw0LCJjbHJJZk9wZW4iXSxbMSwiY29udGVudC1jb250YWluZXIiLCJoLWF1dG8iXSxbMSwic2lkZW5hdiIsImQtYmxvY2siLCJkLW1kLW5vbmUiLDMsImNsci1uYXYtbGV2ZWwiXSxbMSwic2lkZW5hdi1jb250ZW50Il0s''@;'; put 'put ''WyJocmVmIiwiLi4uIiwxLCJuYXYtbGluayIsImFjdGl2ZSJdLFsxLCJ0b2dnbGUtc3dpdGNoIl0sWyJpZCIsImRlYnVnLXRvZ2dsZTIiLCJ0eXBlIiwiY2hlY2tib3giLDMsIm5nTW9kZWwiLCJuZ01vZGVsT3B0aW9ucyIsIm5nTW9kZWxDaGFuZ2UiXSxbImZvciIsImRlYnVnLXRvZ2dsZTIi''@;'; put 'put ''LDEsImRlYnVnLXRvZ2dsZS1sYWJlbCIsImNvbG9yLWRhcmstZ3JheSJdLFsidGFyZ2V0IiwiX2JsYW5rIiwiaHJlZiIsImh0dHBzOi8vZG9jcy5kYXRhY29udHJvbGxlci5pbyIsMSwibmF2LWxpbmsiLCJkLWJsb2NrIl0sWzEsInNlcGFyYXRvciJdLFsiaHJlZiIsIi4uLiIsMSwibmF2LWxp''@;'; put 'put ''bmsiLCJkLWJsb2NrIiwzLCJjbGljayJdLFsic2hhcGUiLCJsb2dvdXQiXSxbImFsdCIsIiIsMSwiYXZhdGFyLWltZyIsMywic3JjIl0sWzEsImJhZGdlIiwiYmFkZ2UtZGFuZ2VyIl0sWzEsImJhZGdlIiwiYmFkZ2UtaW5mbyJdLFsic2hhcGUiLCJjYXJldCBkb3duIl0sWyJjbHJQb3NpdGlv''@;'; put 'put ''biIsImJvdHRvbS1yaWdodCJdLFsiY2xyRHJvcGRvd25JdGVtIiwiIiwxLCJkZWJ1Zy1zd2l0Y2gtaXRlbSJdLFsiZHJvcGRvd25JdGVtRGVidWciLCIiXSxbMSwidG9nZ2xlLXN3aXRjaCIsMywiY2xpY2siXSxbImlkIiwiZGVidWctdG9nZ2xlMSIsInR5cGUiLCJjaGVja2JveCIsImNsclRv''@;'; put 'put ''Z2dsZSIsIiIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbImNsckRyb3Bkb3duSXRlbSIsIiIsMywiY2xpY2siXSxbImhyZWYiLCIuLi4iLCJjbHJEcm9wZG93bkl0ZW0iLCIiLDMsImNsaWNrIl0sWyJzaGFwZSIsImxvZ291dCIsMSwiY2xyLWxvZ291dCJdLFsxLCJjb3B5UmlnaHQi''@;'; put 'put ''XSxbInRhcmdldCIsIl9ibGFuayIsImhyZWYiLCJodHRwczovL2RvY3MuZGF0YWNvbnRyb2xsZXIuaW8iLCJjbHJEcm9wZG93bkl0ZW0iLCIiXSxbMSwiZHJvcGRvd24tdGV4dCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKG50KDAsImNsci1kcm9wZG93biIsMCkoMSwiYnV0dG9u''@;'; put 'put ''IiwxKSgyLCJzcGFuIiksWXQoMyksb3QoKSxybig0LGVCZSwyLDEsInNwYW4iLDIpLHJuKDUsdEJlLDIsMywic3BhbiIsMykscm4oNixuQmUsMiwzLCJzcGFuIiw0KSxybig3LHJCZSwxLDAsImNsci1pY29uIiw1KSxvdCgpLHJuKDgsb0JlLDIwLDMsImNsci1kcm9wZG93bi1tZW51Iiw2KSxv''@;'; put 'put ''dCgpLG50KDksImRpdiIsNykoMTAsIm5hdiIsOCkoMTEsInNlY3Rpb24iLDkpKDEyLCJhIiwxMCksWXQoMTMpLG90KCksbnQoMTQsImRpdiIpKDE1LCJmb3JtIikoMTYsImRpdiIsMTEpKDE3LCJpbnB1dCIsMTIpLEduKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5zYXNq''@;'; put 'put ''c0NvbmZpZy5kZWJ1Zz1DfSkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHYub25EZWJ1Z01vZGVDaGFuZ2UoKX0pLG90KCksbnQoMTgsImxhYmVsIiwxMyksWXQoMTksIkRlYnVnIE1vZGUiKSxvdCgpKCkoKSgpLG50KDIwLCJhIiwxNCkoMjEsInNwYW4iKSxZdCgyMiwiRG9j''@;'; put 'put ''dW1lbnRhdGlvbiIpLG90KCkoKSxDcigyMywiZGl2IiwxNSksbnQoMjQsImEiLDE2KSxHbigiY2xpY2siLGZ1bmN0aW9uKEMpe3JldHVybiB2LmxvZ291dChDKX0pLG50KDI1LCJzcGFuIiksWXQoMjYsIkxvZyBPdXQiKSxvdCgpLENyKDI3LCJjbHItaWNvbiIsMTcpLG90KCkoKSgpKCkpLDIm''@;'; put 'put ''aCYmKHV0KDMpLGppKHYudXNlck5hbWUpLHV0KDEpLFR0KCJuZ0lmIiwiTm90IGxvZ2dlZCBpbiIhPT12LnVzZXJOYW1lJiZ2LmlzVml5YSksdXQoMSksVHQoIm5nSWYiLCF2LnNhc2pzQ29uZmlnLmRlYnVnKSx1dCgxKSxUdCgibmdJZiIsdi5zYXNqc0NvbmZpZy5kZWJ1ZyksdXQoMSksVHQo''@;'; put 'put ''Im5nSWYiLCF2LmlzVml5YSksdXQoMyksVHQoImNsci1uYXYtbGV2ZWwiLDIpLHV0KDMpLEppKCIgIix2LnVzZXJOYW1lLCIgIiksdXQoNCksVHQoIm5nTW9kZWwiLHYuc2FzanNDb25maWcuZGVidWcpKCJuZ01vZGVsT3B0aW9ucyIsY3MoOSxhQmUpKSl9LGRlcGVuZGVuY2llczpbTm8scGcs''@;'; put 'put ''SWYsVHMsZGcsSXMsTGMsd2wsUGEsYXQsUm8sbG8sT2ksTHllLHd2LGJTLF9TLEpMXSxzdHlsZXM6WycuY29weVJpZ2h0W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjEwcHh9LmNvcHlSaWdodFtfbmdjb250ZW50LSVDT01QJV0gICBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXt3b3Jk''@;'; put 'put ''LWJyZWFrOmJyZWFrLXdvcmQ7d2hpdGUtc3BhY2U6cHJlLXdyYXA7d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDoxLjV9LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctcmlnaHQ6MTVweDtsaW5lLWhlaWdodDozcmVtO2hlaWdodDoz''@;'; put 'put ''cmVtfS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSA+IGJ1dHRvbi5kcm9wZG93bi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmYWZhZmE7cG9zaXRpb246cmVsYXRpdmV9LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVdID4gYnV0dG9uLmRy''@;'; put 'put ''b3Bkb3duLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV06YWZ0ZXJ7Y29udGVudDoiIjtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7b3BhY2l0eTouMTU7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtoZWlnaHQ6NDBweDt0b3A6MTBweH0uYXBwLW5hdi1kcm9wZG93bltfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV0gPiBidXR0b24uZHJvcGRvd24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5iYWRnZS5oaWRkZW5bX25nY29udGVudC0lQ09NUCVde3Zpc2liaWxpdHk6aGlkZGVufS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1kcm9wZG93bi1t''@;'; put 'put ''ZW51W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNTY1NjU2O3BhZGRpbmctYm90dG9tOjB9LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVdICAgY2xyLWRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVdICAgLnNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17bWFy''@;'; put 'put ''Z2luOjEwcHggMDtib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmF5fS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1kcm9wZG93bi1tZW51W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcm9wZG93bi1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7''@;'; put 'put ''ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6NDVweDtsaW5lLWhlaWdodDo0MHB4fS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1kcm9wZG93bi1tZW51W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5k''@;'; put 'put ''cm9wZG93bi1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHNwYW4uZHJvcGRvd24tdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzU2NTY1Nn0uYXBwLW5hdi1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV0gICBjbHItZHJvcGRvd24tbWVudVtfbmdjb250ZW50LSVDT01QJV0gICAu''@;'; put 'put ''ZHJvcGRvd24taXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAuYmFkZ2VbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxNXB4O3JpZ2h0OjI2cHg7bWFyZ2luLXJpZ2h0OjB9LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVdICAgY2xyLWRyb3Bkb3du''@;'; put 'put ''LW1lbnVbX25nY29udGVudC0lQ09NUCVdICAgLmRyb3Bkb3duLWl0ZW0uZGVidWctc3dpdGNoLWl0ZW1bX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MH0uYXBwLW5hdi1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV0gICBjbHItZHJvcGRvd24tbWVudVtfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAuZHJvcGRvd24taXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAudG9nZ2xlLXN3aXRjaFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAg''@;'; put 'put ''IGNsci1kcm9wZG93bi1tZW51W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcm9wZG93bi1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbHItbG9nb3V0W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoyMHB4O3RvcDoxNXB4fS5hcHAtbmF2LWRyb3Bkb3duW19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXSAgIGNsci1kcm9wZG93bi1tZW51W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcm9wZG93bi1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lcnt3aWR0aDoxMDAlO2hlaWdodDoxMDAlfS5hcHAtbmF2LWRyb3Bkb3duW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXSAgIGNsci1kcm9wZG93bi1tZW51W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcm9wZG93bi1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLXRvZ2dsZS13cmFwcGVye3dpZHRoOjEwMCU7bWFyZ2luOjA7aGVpZ2h0OjEwMCU7cGFkZGluZzoxMHB4IDIwcHh9LmFw''@;'; put 'put ''cC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVdICAgY2xyLWRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVdICAgLmRyb3Bkb3duLWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgICBpbnB1dHt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDt3aWR0aDoxMDAlO2hlaWdo''@;'; put 'put ''dDoxMDAlO2N1cnNvcjpwb2ludGVyfS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1kcm9wZG93bi1tZW51W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcm9wZG93bi1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0''@;'; put 'put ''eXBlPWNoZWNrYm94XStsYWJlbDphZnRlcnt0cmFuc2l0aW9uOm5vbmUhaW1wb3J0YW50fS5kZWJ1Zy10b2dnbGUtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctbGVmdDo0MnB4fUBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCl7LnNpZGVuYXYtY29udGVudFtfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV0gICBhLm5hdi1saW5rLmFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdDtwYWRkaW5nOjE1cHg7YmFja2dyb3VuZDojNTY1NjU2fX0ubmF2LWxpbmsuZC1ibG9ja1tfbmdjb250ZW50LSVDT01QJV0gICBzcGFuLmJhZGdlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3Np''@;'; put 'put ''dGlvbjphYnNvbHV0ZX0uYXZhdGFyLWltZ1tfbmdjb250ZW50LSVDT01QJV17d2lkdGg6NDBweDtoZWlnaHQ6NDBweDttYXJnaW4tbGVmdDoxMHB4O2JvcmRlci1yYWRpdXM6NTBweH0nXX0pLGR9KSgpO2Z1bmN0aW9uIHNCZShkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci1h''@;'; put 'put ''bGVydCIsMiksR24oImNsckFsZXJ0Q2xvc2VkQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYShpdChoKS4kaW1wbGljaXQuY2xvc2VkPXkpfSkoImNsckFsZXJ0Q2xvc2VkQ2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KDIpLm9uQWxlcnRDbG9zZSgpKX0pLG50KDEsImRp''@;'; put 'put ''diIsMykoMiwic3BhbiIsNCksWXQoMyksb3QoKSgpKCl9aWYoMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O1R0KCJjbHJBbGVydFR5cGUiLGgudHlwZSkoImNsckFsZXJ0QXBwTGV2ZWwiLCEwKSgiY2xyQWxlcnRDbG9zZWQiLGguY2xvc2VkKSx1dCgzKSxKaSgiICIsaC5tZXNzYWdlLCIgIil9''@;'; put 'put ''fWZ1bmN0aW9uIHVCZShkLGcpe2lmKDEmZCYmKG50KDAsImNsci1hbGVydHMiKSxybigxLHNCZSw0LDQsImNsci1hbGVydCIsMSksb3QoKSksMiZkKXtjb25zdCBoPVF0KCk7dXQoMSksVHQoIm5nRm9yT2YiLGguYWxlcnRzKX19bGV0IGNCZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgp''@;'; put 'put ''e3RoaXMuX2FsZXJ0c1NlcnZpY2U9aCx0aGlzLmFsZXJ0cz1bXSx0aGlzLmhhc09wZW5BbGVydD0hMSx0aGlzLmFsZXJ0c1N1Yj1uZXcgVGV9bmdPbkluaXQoKXt0aGlzLmFsZXJ0c1N1Yj10aGlzLl9hbGVydHNTZXJ2aWNlLmFsZXJ0cy5zdWJzY3JpYmUoaD0+e3RoaXMuYWxlcnRzLnB1c2go''@;'; put 'put ''aCksdGhpcy5oYXNPcGVuQWxlcnQ9ITAsaC5lcnImJmNvbnNvbGUuZXJyb3IoaC5lcnIpfSl9b25BbGVydENsb3NlKCl7dGhpcy5oYXNPcGVuQWxlcnQ9dGhpcy5hbGVydHMuc29tZShoPT4haC5jbG9zZWQpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxk''@;'; put 'put ''KShLdChMSCkpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtYWxlcnRzIl1dLGRlY2xzOjEsdmFyczoxLGNvbnN0czpbWzQsIm5nSWYiXSxbMywiY2xyQWxlcnRUeXBlIiwiY2xyQWxlcnRBcHBMZXZlbCIsImNsckFsZXJ0Q2xvc2VkIiwiY2xyQWxlcnRDbG9zZWRD''@;'; put 'put ''aGFuZ2UiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJjbHJBbGVydFR5cGUiLCJjbHJBbGVydEFwcExldmVsIiwiY2xyQWxlcnRDbG9zZWQiLCJjbHJBbGVydENsb3NlZENoYW5nZSJdLFsxLCJhbGVydC1pdGVtIl0sWzEsImFsZXJ0LXRleHQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsx''@;'; put 'put ''JmgmJnJuKDAsdUJlLDIsMSwiY2xyLWFsZXJ0cyIsMCksMiZoJiZUdCgibmdJZiIsdi5oYXNPcGVuQWxlcnQpfSxkZXBlbmRlbmNpZXM6W3hzLE5vLHBaLEV5ZSxnWl0sc3R5bGVzOlsiY2xyLWFsZXJ0c1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpibG9ja30iXX0pLGR9KSgpO2Z1bmN0''@;'; put 'put ''aW9uIGZCZShkLGcpezEmZCYmKG50KDAsInAiLDYpLFl0KDEsIk5vIHJlcXVlc3RzIG1hZGUiKSxvdCgpKX1mdW5jdGlvbiBoQmUoZCxnKXsxJmQmJihudCgwLCJzcGFuIiksQ3IoMSwiY2xyLWljb24iLDEzKSxvdCgpKX1mdW5jdGlvbiBkQmUoZCxnKXsxJmQmJihudCgwLCJzcGFuIiksQ3Io''@;'; put 'put ''MSwiY2xyLWljb24iLDE0KSxvdCgpKX1mdW5jdGlvbiBwQmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJjbHItdHJlZS1ub2RlIiwyMSksR24oImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IEM9aXQoaCkuJGltcGxpY2l0LEk9UXQoMykuaW5kZXg7cmV0dXJuIGEoUXQoMikuZ29U''@;'; put 'put ''b0xvZ0xpbmUoQywicmVxdWVzdF8iK0ksImVycm9yIikpfSksbnQoMSwiYnV0dG9uIiwyMiksWXQoMiksb3QoKSgpfWlmKDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDt1dCgyKSxKaSgiICIsaCwiICIpfX1jb25zdCBxeWU9ZnVuY3Rpb24oKXtyZXR1cm5bXX07ZnVuY3Rpb24gZ0JlKGQsZyl7''@;'; put 'put ''aWYoMSZkJiYobnQoMCwiY2xyLXRyZWUtbm9kZSIsMTgpLENyKDEsImNsci1pY29uIiwxOSksWXQoMikscm4oMyxwQmUsMywxLCJjbHItdHJlZS1ub2RlIiwyMCksb3QoKSksMiZkKXtjb25zdCBoPVF0KDIpLiRpbXBsaWNpdDt1dCgyKSxKaSgiIEVycm9ycyAoIixoLmxvZ0Vycm9ycy5sZW5n''@;'; put 'put ''dGgsIikgIiksdXQoMSksVHQoIm5nRm9yT2YiLGgubG9nRXJyb3JzfHxjcygyLHF5ZSkpfX1mdW5jdGlvbiBtQmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJjbHItdHJlZS1ub2RlIiwyMSksR24oImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IEM9aXQoaCkuJGltcGxpY2l0LEk9''@;'; put 'put ''UXQoMykuaW5kZXg7cmV0dXJuIGEoUXQoMikuZ29Ub0xvZ0xpbmUoQywicmVxdWVzdF8iK0ksIndhcm5pbmciKSl9KSxudCgxLCJidXR0b24iLDIyKSxZdCgyKSxvdCgpKCl9aWYoMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3V0KDIpLEppKCIgIixoLCIgIil9fWZ1bmN0aW9uIHZCZShkLGcp''@;'; put 'put ''e2lmKDEmZCYmKG50KDAsImNsci10cmVlLW5vZGUiLDE4KSxDcigxLCJjbHItaWNvbiIsMjMpLFl0KDIpLHJuKDMsbUJlLDMsMSwiY2xyLXRyZWUtbm9kZSIsMjApLG90KCkpLDImZCl7Y29uc3QgaD1RdCgyKS4kaW1wbGljaXQ7dXQoMiksSmkoIiBXYXJuaW5ncyAoIixoLmxvZ1dhcm5pbmdz''@;'; put 'put ''Lmxlbmd0aCwiKSAiKSx1dCgxKSxUdCgibmdGb3JPZiIsaC5sb2dXYXJuaW5nc3x8Y3MoMixxeWUpKX19ZnVuY3Rpb24gQUJlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiYnV0dG9uIiwyNCksR24oImNsaWNrIixmdW5jdGlvbigpe2l0KGgpO2NvbnN0IHk9UXQoMikuJGltcGxp''@;'; put 'put ''Y2l0O3JldHVybiBhKFF0KDIpLmRvd25sb2FkTG9nKHkubG9nRmlsZSkpfSksWXQoMSwiIERvd25sb2FkICIpLG90KCl9fWZ1bmN0aW9uIHlCZShkLGcpe2lmKDEmZCYmKG50KDAsImNsci10YWItY29udGVudCIpKDEsImNsci10cmVlIikscm4oMixnQmUsNCwzLCJjbHItdHJlZS1ub2RlIiwx''@;'; put 'put ''NSkscm4oMyx2QmUsNCwzLCJjbHItdHJlZS1ub2RlIiwxNSksb3QoKSxDcig0LCJkaXYiLDE2KSxybig1LEFCZSwyLDAsImJ1dHRvbiIsMTcpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgpLiRpbXBsaWNpdDt1dCgyKSxUdCgibmdJZiIsaC5sb2dFcnJvcnMpLHV0KDEpLFR0KCJuZ0lmIixoLmxv''@;'; put 'put ''Z1dhcm5pbmdzKSx1dCgxKSxUdCgiaW5uZXJIVE1MIixoLmxvZ0ZpbGUsVTgpLHV0KDEpLFR0KCJuZ0lmIiwobnVsbD09aC5sb2dGaWxlP251bGw6aC5sb2dGaWxlLmxlbmd0aCk+MCl9fWZ1bmN0aW9uIHdCZShkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImJ1dHRvbiIsMjQpLEdu''@;'; put 'put ''KCJjbGljayIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KDIpLiRpbXBsaWNpdDtyZXR1cm4gYShRdCgyKS5kb3dubG9hZFNvdXJjZUNvZGUoeS5zb3VyY2VDb2RlKSl9KSxZdCgxLCIgRG93bmxvYWQgIiksb3QoKX19ZnVuY3Rpb24gYkJlKGQsZyl7aWYoMSZkJiYobnQoMCwiY2xyLXRh''@;'; put 'put ''Yi1jb250ZW50IikoMSwiZGl2IiwyNSksWXQoMiksb3QoKSxybigzLHdCZSwyLDAsImJ1dHRvbiIsMTcpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgpLiRpbXBsaWNpdDt1dCgyKSxqaShoLnNvdXJjZUNvZGUpLHV0KDEpLFR0KCJuZ0lmIiwobnVsbD09aC5zb3VyY2VDb2RlP251bGw6aC5zb3Vy''@;'; put 'put ''Y2VDb2RlLmxlbmd0aCk+MCl9fWZ1bmN0aW9uIF9CZShkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImJ1dHRvbiIsMjQpLEduKCJjbGljayIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KDIpLiRpbXBsaWNpdDtyZXR1cm4gYShRdCgyKS5kb3dubG9hZEdlbmVyYXRlZENvZGUo''@;'; put 'put ''eS5nZW5lcmF0ZWRDb2RlKSl9KSxZdCgxLCIgRG93bmxvYWQgIiksb3QoKX19ZnVuY3Rpb24gQ0JlKGQsZyl7aWYoMSZkJiYobnQoMCwiY2xyLXRhYi1jb250ZW50IikoMSwiZGl2IiwyNSksWXQoMiksb3QoKSxybigzLF9CZSwyLDAsImJ1dHRvbiIsMTcpLG90KCkpLDImZCl7Y29uc3QgaD1R''@;'; put 'put ''dCgpLiRpbXBsaWNpdDt1dCgyKSxKaSgiICIsaC5nZW5lcmF0ZWRDb2RlLCIgIiksdXQoMSksVHQoIm5nSWYiLChudWxsPT1oLmdlbmVyYXRlZENvZGU/bnVsbDpoLmdlbmVyYXRlZENvZGUubGVuZ3RoKT4wKX19ZnVuY3Rpb24ga0JlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwi''@;'; put 'put ''ZGl2IiwzMSksR24oImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IEM9aXQoaCkuJGltcGxpY2l0O3JldHVybiBhKFF0KDMpLiRpbXBsaWNpdC5zZWxlY3RlZFRhYmxlPUMua2V5KX0pLFl0KDEpLG90KCl9aWYoMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O0ZpKCJzZWxlY3RlZCIsUXQoMykuJGlt''@;'; put 'put ''cGxpY2l0LnNlbGVjdGVkVGFibGU9PT1oLmtleSksdXQoMSksSmkoIiAiLGgua2V5LCIgIil9fWZ1bmN0aW9uIFNCZShkLGcpe2lmKDEmZCYmKG50KDAsImNsci1kcm9wZG93bi1tZW51Iikscm4oMSxrQmUsMiwzLCJkaXYiLDMwKSxubigyLCJrZXl2YWx1ZSIpLG90KCkpLDImZCl7Y29uc3Qg''@;'; put 'put ''aD1RdCgyKS4kaW1wbGljaXQ7dXQoMSksVHQoIm5nRm9yT2YiLHp0KDIsMSxoLlNBU1dPUkspKX19ZnVuY3Rpb24gTUJlKGQsZyl7aWYoMSZkJiYobnQoMCwicCIsMzUpKDEsInN0cm9uZyIpLFl0KDIpLG90KCkoKSksMiZkKXtjb25zdCBoPVF0KDMpLiRpbXBsaWNpdDt1dCgyKSxKaSgiIixo''@;'; put 'put ''LnNlbGVjdGVkVGFibGUsIiAoZmlyc3QgMTAgcm93cykgIil9fWZ1bmN0aW9uIEVCZShkLGcpe2lmKDEmZCYmKG50KDAsInRoIiksWXQoMSksb3QoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3V0KDEpLEppKCIgIixoLmtleSwiICIpfX1mdW5jdGlvbiB4QmUoZCxnKXtpZigxJmQmJihu''@;'; put 'put ''dCgwLCJ0ZCIpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PVF0KCkuJGltcGxpY2l0O3V0KDEpLEppKCIgIix2W2gua2V5XSwiICIpfX1mdW5jdGlvbiBUQmUoZCxnKXtpZigxJmQmJihudCgwLCJ0ciIpLHJuKDEseEJlLDIsMSwidGQiLDM3KSxubigyLCJrZXl2YWx1''@;'; put 'put ''ZSIpLG90KCkpLDImZCl7Y29uc3QgaD1RdCg0KS4kaW1wbGljaXQ7dXQoMSksVHQoIm5nRm9yT2YiLHp0KDIsMSxoLlNBU1dPUktbaC5zZWxlY3RlZFRhYmxlXS5maXJzdDEwcm93c1swXSkpfX1mdW5jdGlvbiBJQmUoZCxnKXtpZigxJmQmJihudCgwLCJ0YWJsZSIsMzYpKDEsInRoZWFkIiko''@;'; put 'put ''MiwidHIiKSxybigzLEVCZSwyLDEsInRoIiwzNyksbm4oNCwia2V5dmFsdWUiKSxvdCgpKCksbnQoNSwidGJvZHkiKSxybig2LFRCZSwzLDMsInRyIiwzNyksb3QoKSgpKSwyJmQpe2NvbnN0IGg9UXQoMykuJGltcGxpY2l0O3V0KDMpLFR0KCJuZ0Zvck9mIix6dCg0LDIsaC5TQVNXT1JLW2gu''@;'; put 'put ''c2VsZWN0ZWRUYWJsZV0uZmlyc3QxMHJvd3NbMF0pKSx1dCgzKSxUdCgibmdGb3JPZiIsaC5TQVNXT1JLW2guc2VsZWN0ZWRUYWJsZV0uZmlyc3QxMHJvd3MpfX1mdW5jdGlvbiBEQmUoZCxnKXtpZigxJmQmJihudCgwLCJjbHItdGFiLWNvbnRlbnQiKSxybigxLE1CZSwzLDEsInAiLDMyKSxu''@;'; put 'put ''dCgyLCJkaXYiLDMzKSxybigzLElCZSw3LDQsInRhYmxlIiwzNCksb3QoKSgpKSwyJmQpe2NvbnN0IGg9UXQoMikuJGltcGxpY2l0O3V0KDEpLFR0KCJuZ0lmIixoLnNlbGVjdGVkVGFibGUpLHV0KDIpLFR0KCJuZ0lmIixoLnNlbGVjdGVkVGFibGUpfX1mdW5jdGlvbiBMQmUoZCxnKXtpZigx''@;'; put 'put ''JmQpe2NvbnN0IGg9d2koKTtudCgwLCJjbHItdGFiIikoMSwiY2xyLWRyb3Bkb3duIiwyNikoMiwiYnV0dG9uIiwyNyksWXQoMywiIFNBUyBXb3JrIFRhYmxlcyAiKSxDcig0LCJjbHItaWNvbiIsMjgpLG90KCkscm4oNSxTQmUsMywzLCJjbHItZHJvcGRvd24tbWVudSIsMjkpLG90KCkscm4o''@;'; put 'put ''NixEQmUsNCwyLCJuZy10ZW1wbGF0ZSIsMTIpLEduKCJjbHJJZkFjdGl2ZUNoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoMykudGFibGVzQWN0aXZlPXkpfSksb3QoKX1pZigyJmQpe2NvbnN0IGg9UXQoMyk7dXQoMSksVHQoImNsckNsb3NlTWVudU9uSXRlbUNsaWNrIiwh''@;'; put 'put ''MCksdXQoNSksVHQoImNscklmQWN0aXZlIixoLnRhYmxlc0FjdGl2ZSl9fWZ1bmN0aW9uIE9CZShkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci1zdGFjay1ibG9jayIsOCkoMSwiY2xyLXN0YWNrLWxhYmVsIiksWXQoMiksbnQoMywic3BhbiIsOSkscm4oNCxoQmUsMiwwLCJz''@;'; put 'put ''cGFuIiw1KSxybig1LGRCZSwyLDAsInNwYW4iLDUpLG90KCkoKSxudCg2LCJjbHItc3RhY2stY29udGVudCIpLFl0KDcpLG90KCksbnQoOCwiY2xyLXN0YWNrLWJsb2NrIiwxMCkoOSwiY2xyLXN0YWNrLWNvbnRlbnQiKSgxMCwiY2xyLXRhYnMiKSgxMSwiY2xyLXRhYiIpKDEyLCJidXR0b24i''@;'; put 'put ''LDExKSxZdCgxMywiU0FTIExvZyIpLG90KCkscm4oMTQseUJlLDYsNCwibmctdGVtcGxhdGUiLDEyKSxHbigiY2xySWZBY3RpdmVDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KDIpLnNhc0xvZ0FjdGl2ZT15KX0pLG90KCksbnQoMTUsImNsci10YWIiKSgxNiwiYnV0dG9u''@;'; put 'put ''IiwxMSksWXQoMTcsIlNBUyBTb3VyY2UgQ29kZSIpLG90KCkscm4oMTgsYkJlLDQsMiwibmctdGVtcGxhdGUiLDEyKSxHbigiY2xySWZBY3RpdmVDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KDIpLnNhc1NvdXJjZUNvZGVBY3RpdmU9eSl9KSxvdCgpLG50KDE5LCJjbHIt''@;'; put 'put ''dGFiIikoMjAsImJ1dHRvbiIsMTEpLFl0KDIxLCJTQVMgR2VuZXJhdGVkIENvZGUiKSxvdCgpLHJuKDIyLENCZSw0LDIsIm5nLXRlbXBsYXRlIiwxMiksR24oImNscklmQWN0aXZlQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gaXQoaCksYShRdCgyKS5zYXNHZW5lcmF0ZWRDb2RlQWN0aXZl''@;'; put 'put ''PXkpfSksb3QoKSxybigyMyxMQmUsNywyLCJjbHItdGFiIiw1KSxvdCgpKCkoKSgpfWlmKDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PWcuaW5kZXgseT1RdCgyKTtUdCgiaWQiLCJyZXF1ZXN0XyIrdikoImNsclN0YWNrVmlld0xldmVsIiwxKSgiY2xyU3RhY2tWaWV3U2V0c2l6ZSIsMyko''@;'; put 'put ''ImNsclN0YWNrVmlld1Bvc2luc2V0IiwzKSx1dCgyKSxKaSgiICIsaC5zZXJ2aWNlTGluaywiICIpLHV0KDIpLFR0KCJuZ0lmIiwobnVsbD09aC5sb2dXYXJuaW5ncz9udWxsOmgubG9nV2FybmluZ3MubGVuZ3RoKT4wKSx1dCgxKSxUdCgibmdJZiIsKG51bGw9PWgubG9nRXJyb3JzP251bGw6''@;'; put 'put ''aC5sb2dFcnJvcnMubGVuZ3RoKT4wKSx1dCgyKSxqaShoLnBhcnNlZFRpbWVzdGFtcCksdXQoNyksVHQoImNscklmQWN0aXZlIix5LnNhc0xvZ0FjdGl2ZSksdXQoNCksVHQoImNscklmQWN0aXZlIix5LnNhc1NvdXJjZUNvZGVBY3RpdmUpLHV0KDQpLFR0KCJjbHJJZkFjdGl2ZSIseS5zYXNH''@;'; put 'put ''ZW5lcmF0ZWRDb2RlQWN0aXZlKSx1dCgxKSxUdCgibmdJZiIsaC5TQVNXT1JLKX19ZnVuY3Rpb24gUkJlKGQsZyl7aWYoMSZkJiYobnQoMCwiY2xyLXN0YWNrLXZpZXciKSxybigxLE9CZSwyNCwxMiwiY2xyLXN0YWNrLWJsb2NrIiw3KSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoKTt1dCgxKSxU''@;'; put 'put ''dCgibmdGb3JPZiIsaC5zYXNqc1JlcXVlc3RzKX19bGV0IEJCZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5KXt0aGlzLnNhc1NlcnZpY2U9aCx0aGlzLmxvZ2dlclNlcnZpY2U9dix0aGlzLmhlbHBlclNlcnZpY2U9eSx0aGlzLl9vcGVuZWQ9ITEsdGhpcy5vcGVuZWRDaGFuZ2U9''@;'; put 'put ''bmV3IGFyLHRoaXMuc2FzTG9nQWN0aXZlPSEwLHRoaXMuc2FzU291cmNlQ29kZUFjdGl2ZT0hMSx0aGlzLnNhc0dlbmVyYXRlZENvZGVBY3RpdmU9ITEsdGhpcy50YWJsZXNBY3RpdmU9ITEsdGhpcy5zYXNqc0NvbmZpZz10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKSx0aGlzLnNh''@;'; put 'put ''c2pzUmVxdWVzdHM9W119Z2V0IG9wZW5lZCgpe3JldHVybiB0aGlzLl9vcGVuZWR9c2V0IG9wZW5lZChoKXt0aGlzLl9vcGVuZWQ9aCxoJiZ0aGlzLm1vZGFsT3BlbmVkKCksdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZyh0aGlzLnNhc2pzUmVxdWVzdHMpfW5nT25Jbml0KCl7fXBhcnNlTG9nVGlt''@;'; put 'put ''ZXN0YW1wKGgpe3JldHVybmAke3RoaXMuZm9ybWF0VGltZXN0YW1wKGgpfSAke3RoaXMudGltZXN0YW1wRnJvbU5vdyhoKX1gfWN1dEFwcExvYyhoKXtyZXR1cm4gaC5yZXBsYWNlKHRoaXMuc2FzanNDb25maWcuYXBwTG9jKyIvIiwiIil9Zm9ybWF0VGltZXN0YW1wKGgpe3JldHVybiBUbCho''@;'; put 'put ''KS5mb3JtYXQoKT9UbChoKS5mb3JtYXQoImRkZGQsIE1NTU0gRG8gWVlZWSwgaDptbTpzcyBhIik6aH10aW1lc3RhbXBGcm9tTm93KGgpe3JldHVybiBUbChoKS5mb3JtYXQoKT9gICgke1RsKGgpLmZyb21Ob3coKX0pYDoiIn1tb2RhbE9wZW5DaGFuZ2UoaCl7dGhpcy5vcGVuZWQ9aCx0aGlz''@;'; put 'put ''Lm9wZW5lZENoYW5nZS5lbWl0KHRoaXMub3BlbmVkKX1tb2RhbE9wZW5lZCgpe3RoaXMuc2FzanNSZXF1ZXN0cz10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzUmVxdWVzdHMoKTtmb3IobGV0IGggb2YgdGhpcy5zYXNqc1JlcXVlc3RzKXRoaXMucGFyc2VFcnJvcnNBbmRXYXJuaW5ncyhoKSxoLnNl''@;'; put 'put ''cnZpY2VMaW5rPXRoaXMuY3V0QXBwTG9jKGguc2VydmljZUxpbmspLGgucGFyc2VkVGltZXN0YW1wPXRoaXMucGFyc2VMb2dUaW1lc3RhbXAoaC50aW1lc3RhbXApfWdvVG9Mb2dMaW5lKGgsdix5KXtsZXQgQz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAjJHt2fSAubG9nLXdyYXBwZXIu''@;'; put 'put ''c2FzbG9nIGZvbnRgKSxJPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3Z9IC5sb2ctd3JhcHBlci5zYXNsb2dgKTtmb3IobGV0IFogb2YgQylaLnRleHRDb250ZW50LmluY2x1ZGVzKGgpJiYoSS5zY3JvbGxUb3A9Wi5vZmZzZXRUb3AtSS5vZmZzZXRUb3AsWi5zdHlsZS5iYWNrZ3JvdW5k''@;'; put 'put ''Q29sb3I9IiM2MWEyMjAyYiIsc2V0VGltZW91dCgoKT0+e1ouc3R5bGU9IiJ9LDNlMykpfXBhcnNlRXJyb3JzQW5kV2FybmluZ3MoaCl7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtpZighaHx8IWgubG9nRmlsZXx8InN0cmluZyIhPXR5cGVvZiBoLmxvZ0ZpbGV8''@;'; put 'put ''fHZvaWQgMCE9PWgubG9nRXJyb3JzfHx2b2lkIDAhPT1oLmxvZ1dhcm5pbmdzKXJldHVybjtsZXQgdj1bXSx5PVtdLEM9aC5sb2dGaWxlLnNwbGl0KCJcbiIpO2ZvcihsZXQgST0wO0k8Qy5sZW5ndGg7SSsrKXtpZigvPC4qPkVSUk9SL2dtLnRlc3QoQ1tJXSkpe2xldCBaPUNbSV0uc3Vic3Ry''@;'; put 'put ''aW5nKENbSV0uaW5kZXhPZigiRSIpLENbSV0ubGVuZ3RoLTEpO3YucHVzaChaKX1lbHNlL15FUlJPUi9nbS50ZXN0KENbSV0pJiYodi5wdXNoKENbSV0pLENbSV09Ijxmb250PiIrQ1tJXSsiPC9mb250PiIpO2lmKC88Lio+V0FSTklORy9nbS50ZXN0KENbSV0pKXtsZXQgWj1DW0ldLnN1YnN0''@;'; put 'put ''cmluZyhDW0ldLmluZGV4T2YoIlciKSxDW0ldLmxlbmd0aC0xKTt5LnB1c2goWil9ZWxzZS9eV0FSTklORy9nbS50ZXN0KENbSV0pJiYoeS5wdXNoKENbSV0pLENbSV09Ijxmb250PiIrQ1tJXSsiPC9mb250PiIpfXRoaXMubG9nZ2VyU2VydmljZS5sb2coeSksaC5sb2dGaWxlPUMuam9pbigi''@;'; put 'put ''XG4iKSxoLmxvZ0Vycm9ycz12LGgubG9nV2FybmluZ3M9eX0pfWRvd25sb2FkTG9nKGgpe2NvbnN0IHY9KG5ldyBEYXRlKS52YWx1ZU9mKCk7dGhpcy5oZWxwZXJTZXJ2aWNlLmRvd25sb2FkVGV4dEZpbGUoYGxvZ0ZpbGUtJHt2fWAsaCl9ZG93bmxvYWRTb3VyY2VDb2RlKGgpe2NvbnN0IHY9''@;'; put 'put ''KG5ldyBEYXRlKS52YWx1ZU9mKCk7dGhpcy5oZWxwZXJTZXJ2aWNlLmRvd25sb2FkVGV4dEZpbGUoYHNvdXJjZUNvZGUtJHt2fWAsaCl9ZG93bmxvYWRHZW5lcmF0ZWRDb2RlKGgpe2NvbnN0IHY9KG5ldyBEYXRlKS52YWx1ZU9mKCk7dGhpcy5oZWxwZXJTZXJ2aWNlLmRvd25sb2FkVGV4dEZp''@;'; put 'put ''bGUoYGdlbmVyYXRlZENvZGUtJHt2fWAsaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGcyKSxLdChzYyksS3QoWGMpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLXJlcXVlc3RzLW1vZGFsIl1dLGlucHV0czp7''@;'; put 'put ''b3BlbmVkOiJvcGVuZWQifSxvdXRwdXRzOntvcGVuZWRDaGFuZ2U6Im9wZW5lZENoYW5nZSJ9LGRlY2xzOjgsdmFyczo0LGNvbnN0czpbWyJjbHJNb2RhbFNpemUiLCJ4bCIsMSwicmVxdWVzdHMtbW9kYWwiLDMsImNsck1vZGFsT3BlbiIsImNsck1vZGFsT3BlbkNoYW5nZSJdLFsxLCJtb2Rh''@;'; put 'put ''bC10aXRsZSJdLFsxLCJtdC0wIiwiZC1pbmxpbmUtYmxvY2siXSxbMSwibW9kYWwtYm9keSIsImgtNzB2aCJdLFsiY2xhc3MiLCJuby1yZXFzIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMSwibm8tcmVxcyJdLFszLCJpZCIsImNsclN0YWNrVmlld0xldmVsIiwiY2xyU3RhY2tWaWV3U2V0c2l6''@;'; put 'put ''ZSIsImNsclN0YWNrVmlld1Bvc2luc2V0Iiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywiaWQiLCJjbHJTdGFja1ZpZXdMZXZlbCIsImNsclN0YWNrVmlld1NldHNpemUiLCJjbHJTdGFja1ZpZXdQb3NpbnNldCJdLFsxLCJtbC0xMCJdLFsxLCJjb250ZW50Il0sWyJjbHJUYWJMaW5rIiwiIl0s''@;'; put 'put ''WzMsImNscklmQWN0aXZlIiwiY2xySWZBY3RpdmVDaGFuZ2UiXSxbInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwxLCJtYi01IiwiY29sb3ItZ3JlZW4iXSxbInNoYXBlIiwiZXhjbGFtYXRpb24tdHJpYW5nbGUiLDEsIm1iLTUiLCJjb2xvci1yZWQiXSxbImNsYXNzIiwiZXJyLWxpbmtz''@;'; put 'put ''Iiw0LCJuZ0lmIl0sWzEsImxvZy13cmFwcGVyIiwic2FzbG9nIiwzLCJpbm5lckhUTUwiXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImJ0biBidG4tbGluayIsMywiY2xpY2siLDQsIm5nSWYiXSxbMSwiZXJyLWxpbmtzIl0sWyJzaGFwZSIsImV4Y2xhbWF0aW9uLXRyaWFuZ2xlIiwxLCJj''@;'; put 'put ''b2xvci1yZWQiXSxbMywiY2xpY2siLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJjbGljayJdLFsxLCJjbHItdHJlZW5vZGUtbGluayJdLFsic2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLDEsImNvbG9yLWdyZWVuIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tbGluayIsMywi''@;'; put 'put ''Y2xpY2siXSxbMSwibG9nLXdyYXBwZXIiXSxbImNsclRhYkxpbmsiLCIiLDEsIndvcmstdGFibGVzLWRyb3Bkb3duIiwzLCJjbHJDbG9zZU1lbnVPbkl0ZW1DbGljayJdLFsiY2xyRHJvcGRvd25UcmlnZ2VyIiwiIl0sWyJzaGFwZSIsImNhcmV0IGRvd24iXSxbNCwiY2xySWZPcGVuIl0sWyJj''@;'; put 'put ''bGFzcyIsImRyb3Bkb3duLWl0ZW0iLCJjbHJEcm9wZG93bkl0ZW0iLCIiLDMsInNlbGVjdGVkIiwiY2xpY2siLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsiY2xyRHJvcGRvd25JdGVtIiwiIiwxLCJkcm9wZG93bi1pdGVtIiwzLCJjbGljayJdLFsiY2xhc3MiLCJtdC0xMCIsNCwibmdJZiJdLFsx''@;'; put 'put ''LCJtaW4taC01MHZoIl0sWyJjbGFzcyIsInRhYmxlIG10LTEwIiw0LCJuZ0lmIl0sWzEsIm10LTEwIl0sWzEsInRhYmxlIiwibXQtMTAiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYobnQoMCwiY2xyLW1vZGFsIiwwKSxHbigiY2xyTW9kYWxP''@;'; put 'put ''cGVuQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5tb2RhbE9wZW5DaGFuZ2UoQyl9KSxudCgxLCJoMyIsMSksWXQoMiwiIFJlcXVlc3QgSGlzdG9yeSAiKSxudCgzLCJwIiwyKSxZdCg0KSxvdCgpKCksbnQoNSwiZGl2IiwzKSxybig2LGZCZSwyLDAsInAiLDQpLHJuKDcsUkJlLDIsMSwi''@;'; put 'put ''Y2xyLXN0YWNrLXZpZXciLDUpLG90KCkoKSksMiZoJiYoVHQoImNsck1vZGFsT3BlbiIsdi5vcGVuZWQpLHV0KDQpLEppKCJBcHAgTG9jYXRpb246ICIsdi5zYXNqc0NvbmZpZy5hcHBMb2MsIiIpLHV0KDIpLFR0KCJuZ0lmIiwobnVsbD09di5zYXNqc1JlcXVlc3RzP251bGw6di5zYXNqc1Jl''@;'; put 'put ''cXVlc3RzLmxlbmd0aCk8MSksdXQoMSksVHQoIm5nSWYiLHYub3BlbmVkJiYobnVsbD09di5zYXNqc1JlcXVlc3RzP251bGw6di5zYXNqc1JlcXVlc3RzLmxlbmd0aCk+MCkpfSxkZXBlbmRlbmNpZXM6W3hzLE5vLFVMLHB5ZSxxZmUsZHllLHl2LF9nLFFMLHdsLGlkLG9kLEcyLFBhLEtMLHFM''@;'; put 'put ''LEFaLCRMLFhMLG1aLHd2LGJTLF9TLEpMLFlUXSxzdHlsZXM6WyIucmVxdWVzdHMtbW9kYWwgLm1vZGFsLWhlYWRlciAuY2xvc2UgY2xyLWljb257ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9ICAucmVxdWVzdHMtbW9kYWwgLm1vZGFsLWNvbnRlbnR7cGFkZGluZzoyMHB4IDEwcHggNXB4fSAg''@;'; put 'put ''LndvcmstdGFibGVzLWRyb3Bkb3duIGJ1dHRvbntjb2xvcjp2YXIoLS1jbHItbmF2LWxpbmstY29sb3IsICM4YzhjOGMpIWltcG9ydGFudH0gIC5zdGFjay12aWV3e2hlaWdodDphdXRvIWltcG9ydGFudDttYXNrLWltYWdlOm5vbmUhaW1wb3J0YW50Oy13ZWJraXQtbWFzay1pbWFnZTpub25l''@;'; put 'put ''IWltcG9ydGFudH0gIC5jb250ZW50IGNsci1pY29ue21hcmdpbi1ib3R0b206NXB4fSAgLmNvbnRlbnQgcHJle3dvcmQtYnJlYWs6YnJlYWstYWxsO3doaXRlLXNwYWNlOnByZS13cmFwO21heC1oZWlnaHQ6aW5pdGlhbDtvdmVyZmxvdzp2aXNpYmxlO2JvcmRlcjowfSAgLmNvbnRlbnQgLnN0''@;'; put 'put ''YWNrLWJsb2NrLWxhYmVse3dpZHRoOjEwMCU7cGFkZGluZy1sZWZ0Oi42cmVtIWltcG9ydGFudH0gIC5jb250ZW50IC5zdGFjay1ibG9jay1sYWJlbCAuc3RhY2stdmlldy1rZXl7ZGlzcGxheTpub25lIWltcG9ydGFudH0gIC5lcnItbGlua3MgLmNsci10cmVlbm9kZS1jaGlsZHJlbnttYXgt''@;'; put 'put ''aGVpZ2h0OjU1cHg7b3ZlcmZsb3c6YXV0b30uZHJvcGRvd24taXRlbS5zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZDhlM2U5fS5sb2ctd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1MHB4O3BhZGRpbmc6MTBweDttYXJnaW4tdG9wOjEwcHg7''@;'; put 'put ''d2hpdGUtc3BhY2U6cHJlLXdyYXA7Ym9yZGVyLXJhZGl1czozcHg7Ym9yZGVyOjFweCBzb2xpZCAjZTJlMmUyO2JhY2tncm91bmQtY29sb3I6I2ZiZmJmYjtoZWlnaHQ6NDh2aDtvdmVyZmxvdzphdXRvfS5uby1yZXFzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCBy''@;'; put 'put ''Z2JhKDAsMCwwLC4xMDE5NjA3ODQzKTtwYWRkaW5nLXRvcDo1cHg7dGV4dC1hbGlnbjpjZW50ZXJ9Il19KSxkfSkoKTtmdW5jdGlvbiBQQmUoZCxnKXtpZigxJmQmJihudCgwLCJwIiw4KSxZdCgxLCIgU0FTIFNlcnZpY2U6ICIpLG50KDIsInN0cm9uZyIpLFl0KDMpLG90KCkoKSksMiZkKXtj''@;'; put 'put ''b25zdCBoPVF0KCk7dXQoMyksamkoaC5kYXRhLnNhc1NlcnZpY2UpfX1mdW5jdGlvbiBGQmUoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDkpKDEsInAiKSgyLCJzdHJvbmciKSxZdCgzLCJTWVNXQVJOSU5HVEVYVDoiKSxvdCgpLFl0KDQpLG90KCksbnQoNSwicCIpKDYsInN0cm9uZyIpLFl0''@;'; put 'put ''KDcsIlNZU0VSUk9SVEVYVDoiKSxvdCgpLFl0KDgpLG90KCksbnQoOSwicCIpKDEwLCJzdHJvbmciKSxZdCgxMSwiTUFDOiIpLG90KCksWXQoMTIpLG90KCkoKSksMiZkKXtjb25zdCBoPVF0KCk7dXQoNCksSmkoIiAiLGguZGF0YS5kZXRhaWxzLlNZU1dBUk5JTkdURVhULCIiKSx1dCg0KSxK''@;'; put 'put ''aSgiICIsaC5kYXRhLmRldGFpbHMuU1lTRVJST1JURVhULCIiKSx1dCg0KSxKaSgiICIsaC5kYXRhLmRldGFpbHMuTUFDLCIiKX19ZnVuY3Rpb24gSEJlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiYnV0dG9uIiwxMCksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBpdCho''@;'; put 'put ''KSxhKFF0KCkub3BlbkNvbmZpZ3VyYXRvcigpKX0pLFl0KDEsIiBPcGVuIGNvbmZpZ3VyYXRvciAiKSxvdCgpfX1mdW5jdGlvbiBOQmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJidXR0b24iLDEwKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoKS5v''@;'; put 'put ''cGVuUmVxdWVzdHNNb2RhbCgpKX0pLFl0KDEsIiBPcGVuIHJlcXVlc3RzIG1vZGFsICIpLG90KCl9fWZ1bmN0aW9uIFZCZShkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImJ1dHRvbiIsMTApLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgpLmRvd25sb2Fk''@;'; put 'put ''TG9nKCkpfSksWXQoMSwiIERvd25sb2FkIGxvZyAiKSxvdCgpfX1mdW5jdGlvbiBqQmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJidXR0b24iLDEwKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoKS5jbG9zZUFib3J0TW9kYWwoKSl9KSxZdCgxLCIg''@;'; put 'put ''Q2xvc2UgIiksb3QoKX19ZnVuY3Rpb24gWkJlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiYnV0dG9uIiwxMCksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkucmVsb2FkKCkpfSksWXQoMSwiIFJlbG9hZCAiKSxvdCgpfX1sZXQgekJlPSgoKT0+e2Ns''@;'; put 'put ''YXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5oZWxwZXJTZXJ2aWNlPWgsdGhpcy5ldmVudFNlcnZpY2U9dix0aGlzLnNhc1NlcnZpY2U9eSx0aGlzLnJvdXRlcj1DLHRoaXMub25Db25maXJtTW9kYWxDbGljaz1uZXcgYXIsdGhpcy5kYXRhPW5ldyBaVSx0aGlzLmZvcmNlUmVsb2Fk''@;'; put 'put ''PSExLHRoaXMubW9kYWxFbmFibGVkPSEwLHRoaXMuZGVmYXVsdERhdGE9e21vZGFsVGl0bGU6IkFib3J0IE1lc3NhZ2UiLHNhc1NlcnZpY2U6bnVsbCxtZXNzYWdlOiIiLGRldGFpbHM6bmV3IERIfX1uZ09uSW5pdCgpe2xldCBoPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlz''@;'; put 'put ''LmRlZmF1bHREYXRhKSx0aGlzLmRhdGEpO3RoaXMuZGF0YT1ofXNob3dDb25maWd1cmF0b3JCdXR0b24oaCl7Y29uc3Qgdj10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKTtyZXR1cm4obnVsbD09aD92b2lkIDA6aC5pbmNsdWRlcygic3RhcnR1cHNlcnZpY2UiKSkmJnYuc2VydmVy''@;'; put 'put ''VHlwZT09PUh1LkQuU2FzOX1jbG9zZUFib3J0TW9kYWwoKXt0aGlzLm9uQ29uZmlybU1vZGFsQ2xpY2suZW1pdCgpfW9wZW5Db25maWd1cmF0b3IoKXt0aGlzLmV2ZW50U2VydmljZS5zdGFydHVwRGF0YUxvYWRlZCgpLHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9kZXBsb3kiKSx0aGlz''@;'; put 'put ''LmNsb3NlQWJvcnRNb2RhbCgpfWRvd25sb2FkTG9nKCl7dmFyIGg7dGhpcy5oZWxwZXJTZXJ2aWNlLmRvd25sb2FkVGV4dEZpbGUoYCR7dGhpcy5kYXRhLnNhc1NlcnZpY2V9LUxPR2AsKG51bGw9PT0oaD10aGlzLmRhdGEuZGV0YWlscyl8fHZvaWQgMD09PWg/dm9pZCAwOmguTE9HKXx8IkVy''@;'; put 'put ''cm9yIHBhcnNpbmcgdGhlIGxvZyIpfW9wZW5SZXF1ZXN0c01vZGFsKCl7dGhpcy5ldmVudFNlcnZpY2Uub3BlblJlcXVlc3RzTW9kYWwoKX1yZWxvYWQoKXtsb2NhdGlvbi5yZWxvYWQoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoWGMpLEt0''@;'; put 'put ''KG11KSxLdChnMiksS3QoWmwpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLWluZm8tbW9kYWwiXV0saW5wdXRzOntkYXRhOiJkYXRhIixmb3JjZVJlbG9hZDoiZm9yY2VSZWxvYWQifSxvdXRwdXRzOntvbkNvbmZpcm1Nb2RhbENsaWNrOiJvbkNvbmZpcm1Nb2Rh''@;'; put 'put ''bENsaWNrIn0sZGVjbHM6MTMsdmFyczoxMixjb25zdHM6W1siYXBwRHJhZ05kcm9wIiwiIiwxLCJjbHItYWJvcnQtbW9kYWwiLDMsImNsck1vZGFsT3BlbiIsImNsck1vZGFsU2l6ZSIsImNsck1vZGFsQ2xvc2FibGUiLCJjbHJNb2RhbE9wZW5DaGFuZ2UiXSxbMSwibW9kYWwtdGl0bGUiXSxb''@;'; put 'put ''ImNsYXNzIiwic2FzU2VydmljZSIsNCwibmdJZiJdLFsxLCJtb2RhbC1ib2R5Il0sWzEsImFib3J0TXNnIiwzLCJpbm5lckhUTUwiXSxbImNsYXNzIiwic3lzdGV4dCIsNCwibmdJZiJdLFsxLCJtb2RhbC1mb290ZXIiXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImJ0biBidG4tcHJpbWFy''@;'; put 'put ''eSIsMywiY2xpY2siLDQsIm5nSWYiXSxbMSwic2FzU2VydmljZSJdLFsxLCJzeXN0ZXh0Il0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tcHJpbWFyeSIsMywiY2xpY2siXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihudCgwLCJjbHItbW9kYWwiLDApLEduKCJjbHJNb2Rh''@;'; put 'put ''bE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm1vZGFsRW5hYmxlZD1DfSksbnQoMSwiaDMiLDEpLFl0KDIpLHJuKDMsUEJlLDQsMSwicCIsMiksb3QoKSxudCg0LCJkaXYiLDMpLENyKDUsImRpdiIsNCkscm4oNixGQmUsMTMsMywiZGl2Iiw1KSxvdCgpLG50KDcsImRpdiIsNiks''@;'; put 'put ''cm4oOCxIQmUsMiwwLCJidXR0b24iLDcpLHJuKDksTkJlLDIsMCwiYnV0dG9uIiw3KSxybigxMCxWQmUsMiwwLCJidXR0b24iLDcpLHJuKDExLGpCZSwyLDAsImJ1dHRvbiIsNykscm4oMTIsWkJlLDIsMCwiYnV0dG9uIiw3KSxvdCgpKCkpLDImaCYmKFR0KCJjbHJNb2RhbE9wZW4iLHYubW9k''@;'; put 'put ''YWxFbmFibGVkKSgiY2xyTW9kYWxTaXplIiwieGwiKSgiY2xyTW9kYWxDbG9zYWJsZSIsIXYuZm9yY2VSZWxvYWQpLHV0KDIpLEppKCIgIix2LmRhdGEubW9kYWxUaXRsZSwiICIpLHV0KDEpLFR0KCJuZ0lmIix2LmRhdGEuc2FzU2VydmljZSYmdi5kYXRhLnNhc1NlcnZpY2UubGVuZ3RoPjAp''@;'; put 'put ''LHV0KDIpLFR0KCJpbm5lckhUTUwiLHYuZGF0YS5tZXNzYWdlLFU4KSx1dCgxKSxUdCgibmdJZiIsbnVsbCE9PXYuZGF0YS5kZXRhaWxzKSx1dCgyKSxUdCgibmdJZiIsdi5zaG93Q29uZmlndXJhdG9yQnV0dG9uKHYuZGF0YS5zYXNTZXJ2aWNlKSksdXQoMSksVHQoIm5nSWYiLG51bGwhPT12''@;'; put 'put ''LmRhdGEuZGV0YWlscyksdXQoMSksVHQoIm5nSWYiLChudWxsPT12LmRhdGEuZGV0YWlscz9udWxsOnYuZGF0YS5kZXRhaWxzLkxPRykmJihudWxsPT12LmRhdGEuZGV0YWlsc3x8bnVsbD09di5kYXRhLmRldGFpbHMuTE9HP251bGw6di5kYXRhLmRldGFpbHMuTE9HLnRyaW0oKSkubGVuZ3Ro''@;'; put 'put ''PjApLHV0KDEpLFR0KCJuZ0lmIiwhdi5mb3JjZVJlbG9hZCksdXQoMSksVHQoIm5nSWYiLHYuZm9yY2VSZWxvYWQpKX0sZGVwZW5kZW5jaWVzOltObyxpZCxvZF0sc3R5bGVzOlsiLmNsci1hYm9ydC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5tb2RhbC10aXRsZS13cmFwcGVye3dp''@;'; put 'put ''ZHRoOjEwMCV9LmNsci1hYm9ydC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5tb2RhbHt6LWluZGV4OjIwNTB9Lm1vZGFsLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uc2FzU2VydmljZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1''@;'; put 'put ''dGU7dG9wOjBweDtyaWdodDoxMHB4O21hcmdpbjowfS5tb2RhbC1mb290ZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlci10b3A6MXB4IHNvbGlkICNkY2RjZGN9LnN5c3RleHRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmF1dG87bWFyZ2luLXRvcDoy''@;'; put 'put ''MHB4O3BhZGRpbmc6MTBweCAwO2JvcmRlci10b3A6MXB4IHNvbGlkICNkY2RjZGN9LnN5c3RleHRbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDowO3dvcmQtd3JhcDpicmVhay13b3JkfSJdfSksZH0pKCk7ZnVuY3Rpb24gR0JlKGQsZyl7MSZk''@;'; put 'put ''JiYoQjAoMCksWXQoMSwiIFRoaXMgdmVyc2lvbiBpcyBsaW1pdGVkIHRvICIpLFAwKCkpfWZ1bmN0aW9uIFdCZShkLGcpe2lmKDEmZCYmKEIwKDApLFl0KDEpLFAwKCkpLDImZCl7Y29uc3QgaD1RdCgzKTt1dCgxKSxGaCgiICIsaC5kZW1vTGltaXRzLnJvd3NfYWxsb3dlZCwiIHJvdyIsMT09''@;'; put 'put ''PWguZGVtb0xpbWl0cy5yb3dzX2FsbG93ZWQ/IiI6InMiLCIgb24gYWxsIHRhYmxlIHZpZXdzICIpfX1mdW5jdGlvbiBZQmUoZCxnKXtpZigxJmQmJihCMCgwKSxZdCgxKSxQMCgpKSwyJmQpe2NvbnN0IGg9UXQoMyk7dXQoMSksa2YoIiIsaC5kZW1vTGltaXRzLnJvd3NfYWxsb3dlZD8iYW5k''@;'; put 'put ''IjoiIiwiICIsaC5kZW1vTGltaXRzLnVzZXJzX2FsbG93ZWQsIiB1c2VyIiwxPT09aC5kZW1vTGltaXRzLnVzZXJzX2FsbG93ZWQ/IiI6InMiLCIiKX19ZnVuY3Rpb24gVUJlKGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2IiwyMCkoMSwiZGl2IiwyMSkoMiwiZGl2IiwyMikoMywiZGl2IiwyMyks''@;'; put 'put ''Q3IoNCwiY2xyLWljb24iLDI0KSxvdCgpLG50KDUsImRpdiIsMjUpLFl0KDYsIiBEZW1vIFZlcnNpb24gb2YgRGF0YSBDb250cm9sbGVyIC0gZm9yIGV2YWx1YXRpb24gdXNlIG9ubHkuICIpLHJuKDcsR0JlLDIsMCwibmctY29udGFpbmVyIiwxKSxybig4LFdCZSwyLDIsIm5nLWNvbnRhaW5l''@;'; put 'put ''ciIsMSkscm4oOSxZQmUsMiwzLCJuZy1jb250YWluZXIiLDEpLG90KCkoKSgpLG50KDEwLCJhIiwyNiksWXQoMTEsIlVwZGF0ZSBMaWNlbmNlIEtleSIpLG90KCkoKSksMiZkKXtjb25zdCBoPVF0KDIpO3V0KDcpLFR0KCJuZ0lmIixoLmRlbW9MaW1pdHMucm93c19hbGxvd2VkfHxoLmRlbW9M''@;'; put 'put ''aW1pdHMudXNlcnNfYWxsb3dlZCksdXQoMSksVHQoIm5nSWYiLGguZGVtb0xpbWl0cy5yb3dzX2FsbG93ZWQpLHV0KDEpLFR0KCJuZ0lmIixoLmRlbW9MaW1pdHMudXNlcnNfYWxsb3dlZCl9fWZ1bmN0aW9uIFFCZShkLGcpe2lmKDEmZCYmKG50KDAsImRpdiIsMjcpKDEsImRpdiIsMjEpKDIs''@;'; put 'put ''ImRpdiIsMjIpKDMsImRpdiIsMjMpLENyKDQsImNsci1pY29uIiwyNCksb3QoKSxudCg1LCJkaXYiLDI1KSxZdCg2KSxudCg3LCJhIiwyOCksWXQoOCwic3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyIpLG90KCksWXQoOSksb3QoKSgpKCksbnQoMTAsImEiLDI2KSxZdCgxMSwiVXBkYXRlIExp''@;'; put 'put ''Y2VuY2UgS2V5Iiksb3QoKSgpKSwyJmQpe2NvbnN0IGg9UXQoMik7dXQoNiksSmkoIiBUaGlzIGxpY2Vuc2Uga2V5IHdpbGwgZXhwaXJlIGluICIsaC5saWNlbnNlRXhwaXJpbmdEYXlzLCIgZGF5cy4gUGxlYXNlIGNvbnRhY3QgIiksdXQoMyksSmkoIiBvciB5b3VyIHJlc2VsbGVyIHRvIGFy''@;'; put 'put ''cmFuZ2UgYWRkaXRpb25hbCBsaWNlbmNlIGZvciBzaXRlIGlkICIsaC5zeXNzaXRlLmdldFZhbHVlKCksIi4gIil9fWZ1bmN0aW9uIEpCZShkLGcpezEmZCYmKG50KDAsImEiLDI2KSxZdCgxLCJVcGRhdGUgTGljZW5jZSBLZXkiKSxvdCgpKX1mdW5jdGlvbiBYQmUoZCxnKXtpZigxJmQmJihu''@;'; put 'put ''dCgwLCJkaXYiLDI3KSgxLCJkaXYiLDIxKSgyLCJkaXYiLDIyKSgzLCJkaXYiLDIzKSxDcig0LCJjbHItaWNvbiIsMjQpLG90KCksbnQoNSwiZGl2IiwyNSksWXQoNiwiIFRoZSByZWdpc3RlcmVkIG51bWJlciBvZiB1c2VycyBleGNlZWRzIHRoZSBsaW1pdCBzcGVjaWZpZWQgZm9yIHlvdXIg''@;'; put 'put ''bGljZW5zZS4gUGxlYXNlIGNvbnRhY3QgIiksbnQoNywiYSIsMjgpLFl0KDgsInN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8iKSxvdCgpLFl0KDkpLG90KCkoKSgpLHJuKDEwLEpCZSwyLDAsImEiLDI5KSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoMik7dXQoOSksSmkoIiBvciB5b3VyIHJlc2Vs''@;'; put 'put ''bGVyIHRvIGFycmFuZ2UgYWRkaXRpb25hbCBsaWNlbmNlIGZvciBzaXRlIGlkICIsaC5zeXNzaXRlLmdldFZhbHVlKCksIi4gIiksdXQoMSksVHQoIm5nSWYiLCFoLmxpY2Vuc2VFeHBpcmluZ0RheXMpfX1mdW5jdGlvbiBLQmUoZCxnKXtpZigxJmQmJihCMCgwKSxybigxLFVCZSwxMiwzLCJk''@;'; put 'put ''aXYiLDE4KSxybigyLFFCZSwxMiwyLCJkaXYiLDE5KSxybigzLFhCZSwxMSwyLCJkaXYiLDE5KSxQMCgpKSwyJmQpe2NvbnN0IGg9UXQoKTt1dCgxKSxUdCgibmdJZiIsaC5kZW1vQmFubmVyJiYhaC5saWNlbnNlRXhwaXJpbmdEYXlzKSx1dCgxKSxUdCgibmdJZiIsaC5saWNlbnNlRXhwaXJp''@;'; put 'put ''bmdEYXlzKSx1dCgxKSxUdCgibmdJZiIsaC5hcHBPdmVyQ2FwYWNpdHkpfX1mdW5jdGlvbiAkQmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJkaXYiLDMwKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoKS50b2dnbGVTaWRlYmFyKCkpfSksQ3IoMSwi''@;'; put 'put ''Y2xyLWljb24iLDMxKSxvdCgpfX1jb25zdCBxQmU9ZnVuY3Rpb24oKXtyZXR1cm5bIi8iXX07ZnVuY3Rpb24gZVBlKGQsZyl7MSZkJiYobnQoMCwiYSIsMzIpLENyKDEsImltZyIsMzMpKDIsImltZyIsMzQpLG90KCkpLDImZCYmVHQoInJvdXRlckxpbmsiLGNzKDEscUJlKSl9ZnVuY3Rpb24g''@;'; put 'put ''dFBlKGQsZyl7MSZkJiYobnQoMCwiYSIpLENyKDEsInNwYW4iLDM1KSxvdCgpKX1jb25zdCBld2U9ZnVuY3Rpb24oKXtyZXR1cm5bIi92aWV3Il19LHR3ZT1mdW5jdGlvbigpe3JldHVyblsiL2hvbWUiXX0saGhlPWZ1bmN0aW9uKCl7cmV0dXJuWyIvc3VibWl0dGVkIl19O2Z1bmN0aW9uIG5Q''@;'; put 'put ''ZShkLGcpezEmZCYmKG50KDAsImNsci1kcm9wZG93bi1tZW51Iiw0MykoMSwiYSIsNDQpLFl0KDIsIlZJRVciKSxvdCgpLG50KDMsImEiLDQ0KSxZdCg0LCJFRElUIiksb3QoKSxudCg1LCJhIiw0NCksWXQoNiwiUkVWSUVXIiksb3QoKSgpKSwyJmQmJih1dCgxKSxUdCgicm91dGVyTGluayIs''@;'; put 'put ''Y3MoMyxld2UpKSx1dCgyKSxUdCgicm91dGVyTGluayIsY3MoNCx0d2UpKSx1dCgyKSxUdCgicm91dGVyTGluayIsY3MoNSxoaGUpKSl9ZnVuY3Rpb24gclBlKGQsZyl7aWYoMSZkJiYoQjAoMCksbnQoMSwiZGl2IiwzNikoMiwiY2xyLWRyb3Bkb3duIikoMywiYnV0dG9uIiwzNyksWXQoNCwi''@;'; put 'put ''IE1lbnUgIiksb3QoKSxybig1LG5QZSw3LDYsImNsci1kcm9wZG93bi1tZW51IiwzOCksb3QoKSgpLG50KDYsImRpdiIsMzkpKDcsImEiLDQwKSxZdCg4LCJWSUVXIiksb3QoKSxudCg5LCJhIiw0MSksWXQoMTAsIkVESVQiKSxvdCgpLG50KDExLCJhIiw0MiksWXQoMTIsIlJFVklFVyIpLG90''@;'; put 'put ''KCkoKSxQMCgpKSwyJmQpe2NvbnN0IGg9UXQoKTt1dCg3KSxUdCgicm91dGVyTGluayIsY3MoNyxld2UpKSx1dCgyKSxGaSgiYWN0aXZlIixoLnJvdXRlci51cmwuaW5jbHVkZXMoImVkaXRvciIpfHxoLnJvdXRlci51cmwuaW5jbHVkZXMoImVkaXQtcmVjb3JkIil8fGgucm91dGVyLnVybC5p''@;'; put 'put ''bmNsdWRlcygiaG9tZSIpKSxUdCgicm91dGVyTGluayIsY3MoOCx0d2UpKSx1dCgyKSxGaSgiYWN0aXZlIixoLnJvdXRlci51cmwuaW5jbHVkZXMoInN1Ym1pdHRlZCIpfHxoLnJvdXRlci51cmwuaW5jbHVkZXMoImFwcHJvdmUiKXx8aC5yb3V0ZXIudXJsLmluY2x1ZGVzKCJoaXN0b3J5Iikp''@;'; put 'put ''LFR0KCJyb3V0ZXJMaW5rIixjcyg5LGhoZSkpfX1jb25zdCBpUGU9ZnVuY3Rpb24oKXtyZXR1cm5bIi9hcHByb3ZlIl19LG9QZT1mdW5jdGlvbigpe3JldHVyblsiL2hpc3RvcnkiXX07ZnVuY3Rpb24gYVBlKGQsZyl7MSZkJiYobnQoMCwibmF2Iiw0NSkoMSwidWwiLDQ2KSgyLCJsaSIsNDcp''@;'; put 'put ''KDMsImEiLDQwKSxZdCg0LCJTVUJNSVQiKSxvdCgpKCksbnQoNSwibGkiLDQ3KSg2LCJhIiw0MCksWXQoNywiQVBQUk9WRSIpLG90KCkoKSxudCg4LCJsaSIsNDcpKDksImEiLDQwKSxZdCgxMCwiSElTVE9SWSIpLG90KCkoKSgpKCkpLDImZCYmKHV0KDMpLFR0KCJyb3V0ZXJMaW5rIixjcygz''@;'; put 'put ''LGhoZSkpLHV0KDMpLFR0KCJyb3V0ZXJMaW5rIixjcyg0LGlQZSkpLHV0KDMpLFR0KCJyb3V0ZXJMaW5rIixjcyg1LG9QZSkpKX1mdW5jdGlvbiBsUGUoZCxnKXsxJmQmJkNyKDAsImFwcC1hbGVydHMiKX1mdW5jdGlvbiBzUGUoZCxnKXsxJmQmJkNyKDAsInJvdXRlci1vdXRsZXQiKX1mdW5j''@;'; put 'put ''dGlvbiB1UGUoZCxnKXsxJmQmJkNyKDAsImFwcC1hbGVydHMiKX1mdW5jdGlvbiBjUGUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJhcHAtaW5mby1tb2RhbCIsNDgpLEduKCJvbkNvbmZpcm1Nb2RhbENsaWNrIixmdW5jdGlvbigpe2NvbnN0IEM9aXQoaCkuJGltcGxpY2l0O3Jl''@;'; put 'put ''dHVybiBhKFF0KCkuY2xvc2VBYm9ydE1vZGFsKEMuaWQpKX0pLG90KCl9aWYoMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0LHY9UXQoKTtUdCgiZGF0YSIsaCkoImZvcmNlUmVsb2FkIiwhdi5zdGFydHVwRGF0YUxvYWRlZCYmMT09PXYuc2FzanNBYm9ydHMubGVuZ3RoKX19ZnVuY3Rpb24gZlBl''@;'; put 'put ''KGQsZyl7MSZkJiYobnQoMCwiZGl2Iiw1MiksQ3IoMSwiZGl2Iiw1MykoMiwiZGl2Iiw1NCkoMywiZGl2Iiw1NSksb3QoKSl9ZnVuY3Rpb24gaFBlKGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2Iiw0OSksQ3IoMSwiaW1nIiw1MCkscm4oMixmUGUsNCwwLCJkaXYiLDUxKSxvdCgpKSwyJmQpe2Nv''@;'; put 'put ''bnN0IGg9UXQoKTt1dCgyKSxUdCgibmdJZiIsbnVsbD09PWguYXBwQWN0aXZlKX19bGV0IGRQZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSxaLHVlLF9lKXt0aGlzLmFwcFNlcnZpY2U9aCx0aGlzLnJvdXRlcj12LHRoaXMucm91dGU9eSx0aGlzLmxvY2F0aW9uPUMsdGhp''@;'; put 'put ''cy5ldmVudFNlcnZpY2U9SSx0aGlzLmFwcFN0b3JlU2VydmljZT1aLHRoaXMuY2RyPXVlLHRoaXMuZWxlbWVudFJlZj1fZSx0aGlzLmxpY2Vuc2VFeHBpcmluZ0RheXM9bnVsbCx0aGlzLnNhc2pzQWJvcnRzPVtdLHRoaXMuZWRpdG9yQWN0aXZlPSExLHRoaXMuYXBwcm92ZUFjdGl2ZT0hMSx0''@;'; put 'put ''aGlzLmRlbW9CYW5uZXI9dGhpcy5hcHBTZXJ2aWNlLmlzQXBwRGVtby52YWx1ZSx0aGlzLmFwcE92ZXJDYXBhY2l0eT0hMSx0aGlzLmFwcEFjdGl2ZT1udWxsLHRoaXMucmVxdWVzdHNNb2RhbD0hMSx0aGlzLnNob3dSZWdpc3RyYXRpb249ITAsdGhpcy5zdGFydHVwRGF0YUxvYWRlZD0hMSx0''@;'; put 'put ''aGlzLmRlbW9MaW1pdE5vdGljZT0hMSx0aGlzLnN5c3NpdGU9dGhpcy5hcHBTZXJ2aWNlLnN5c3NpdGUsdGhpcy5kZW1vTGltaXRzPXt9LHRoaXMucGFyc2VEY0FkYXB0ZXJTZXR0aW5ncygpLHdpbmRvdy5hcHBpbmZvPSgpPT57Y29uc3QgQmU9dGhpcy5hcHBTZXJ2aWNlLmdldExpY2Vuc2VL''@;'; put 'put ''ZXlEYXRhKCk7aWYoQmUpe2NvbnN0IE5lPVRsKEJlLnZhbGlkX3VudGlsLCJZWVlZLU1NLUREIiksS2U9VGwoKSxwdD1OZS5kaWZmKEtlLCJkYXlzIik7QmUudmFsaWRfdW50aWwrPWAgKCR7cHR9IGRheXMgcmVtYWluaW5nKWAsaXNOYU4ocHQpJiYoQmUudmFsaWRfdW50aWw9IlVubGltaXRl''@;'; put 'put ''ZCIpfWNvbnNvbGUudGFibGUoeyJBZGFwdGVyIHZlcnNpb24iOiIzLjEwLjE4IiwiQXBwIHZlcnNpb24iOiJ2NS4wLjAiLnJlcGxhY2UoInYiLCIiKSwiQnVpbGQgdGltZXN0YW1wIjpUbChwYXJzZUludCgiMTY2ODQyOTQyNTY1OSIpKS5mb3JtYXQoIkRELU1NTS1ZWVlZIEhIOk1NIiksIi4u''@;'; put 'put ''LiI6Ii4uLiJ9KX0sdGhpcy5zdWJzY3JpYmVUb0xpY2Vuc2VFdmVudHMoKSx0aGlzLmNvbW1pdFZlcj0idjUuMC4wIi5yZXBsYWNlKCJ2IiwiIikrIi5nMDI5ZmE5ZjAiLHYuZXZlbnRzLnN1YnNjcmliZShCZT0+e2lmKHRoaXMucm91dGVVcmw9dGhpcy5yb3V0ZXIudXJsLHZvaWQgMCE9PXRo''@;'; put 'put ''aXMucm91dGVVcmwmJnRoaXMucm91dGVVcmwubGVuZ3RoPjQpe2xldCBOZT10aGlzLnJvdXRlVXJsLnNwbGl0KCIvIilbMV07ImVkaXRvciI9PT1OZT8odGhpcy5lcnJUb3A9ITAsdGhpcy5lZGl0b3JBY3RpdmU9ITAsdGhpcy5hcHByb3ZlQWN0aXZlPSExKToiaG9tZSI9PT1OZT8odGhpcy5l''@;'; put 'put ''cnJUb3A9ITEsdGhpcy5lZGl0b3JBY3RpdmU9ITAsdGhpcy5hcHByb3ZlQWN0aXZlPSExKToodGhpcy5lcnJUb3A9ITAsdGhpcy5lZGl0b3JBY3RpdmU9ITEpLG5pLnJvb3RQYXJhbT1OZX12b2lkIDAhPT10aGlzLnJvdXRlVXJsJiZ0aGlzLnJvdXRlVXJsLmxlbmd0aD42JiYodGhpcy5hcHBy''@;'; put 'put ''b3ZlQWN0aXZlPSEhdGhpcy5yb3V0ZVVybC5pbmNsdWRlcygiYXBwcm92ZURldCIpfHwhIXRoaXMucm91dGVVcmwuaW5jbHVkZXMoInRvYXBwcm92ZSIpKX0pLHRoaXMuc3Vic2NyaWJlVG9TaG93QWJvcnRNb2RhbCgpLHRoaXMuc3Vic2NyaWJlVG9SZXF1ZXN0c01vZGFsKCksdGhpcy5zdWJz''@;'; put 'put ''Y3JpYmVUb1N0YXJ0dXBEYXRhKCksdGhpcy5zdWJzY3JpYmVUb0FwcEFjdGl2ZSgpLHRoaXMuc3Vic2NyaWJlVG9EZW1vTGltaXRNb2RhbCgpLHdpbmRvdy5mcmFtZUVsZW1lbnQmJih3aW5kb3cuZnJhbWVFbGVtZW50LnNldEF0dHJpYnV0ZSgic3R5bGUiLCJoZWlnaHQ6MTAwJTt3aWR0aDox''@;'; put 'put ''MDAlO3Bvc2l0aW9uOmFic29sdXRlIiksd2luZG93LmZyYW1lRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFsbG93ZnVsbHNjcmVlbiIsIiIpLHdpbmRvdy5mcmFtZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJmcmFtZWJvcmRlciIsIjAiKSx3aW5kb3cuZnJhbWVFbGVtZW50LnNldEF0dHJpYnV0ZSgi''@;'; put 'put ''bWFyZ2luaGVpZ2h0IiwiMCIpLHdpbmRvdy5mcmFtZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXJnaW53aWR0aCIsIjAiKSx3aW5kb3cuZnJhbWVFbGVtZW50LnNldEF0dHJpYnV0ZSgic2Nyb2xsaW5nIiwiYXV0byIpLHdpbmRvdy5mb2N1cygpKX1wYXJzZURjQWRhcHRlclNldHRpbmdzKCl7''@;'; put 'put ''Y29uc3QgaD15PT50aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoeSksdj17c2VydmVyVXJsOmgoInNlcnZlclVybCIpLGFwcExvYzpoKCJhcHBMb2MiKSxzZXJ2ZXJUeXBlOmgoInNlcnZlclR5cGUiKSxsb2dpbk1lY2hhbmlzbTpoKCJsb2dpbk1lY2hhbmlzbSIp''@;'; put 'put ''LGFkbWluR3JvdXA6aCgiYWRtaW5Hcm91cCIpLGRjUGF0aDpoKCJkY1BhdGgiKSxkZWJ1ZzoidHJ1ZSI9PT1oKCJkZWJ1ZyIpLHVzZUNvbXB1dGVBcGk6InRydWUiPT09aCgidXNlQ29tcHV0ZUFwaSIpLGNvbnRleHROYW1lOmgoImNvbnRleHROYW1lIiksaG90TGljZW5jZUtleTpoKCJob3RM''@;'; put 'put ''aWNlbmNlS2V5Iil9O3RoaXMuZGNBZGFwdGVyU2V0dGluZ3M9dix0aGlzLmFwcFN0b3JlU2VydmljZS5zZXREY0FkYXB0ZXJTZXR0aW5ncyh2KSx0aGlzLmFwcFNlcnZpY2Uuc2FzU2VydmljZUluaXQoKX1zdWJzY3JpYmVUb0RlbW9MaW1pdE1vZGFsKCl7dGhpcy5ldmVudFNlcnZpY2Uub25E''@;'; put 'put ''ZW1vTGltaXRNb2RhbFNob3cuc3Vic2NyaWJlKCgpPT57dGhpcy5kZW1vTGltaXROb3RpY2U9ITB9KX1zdWJzY3JpYmVUb0xpY2Vuc2VFdmVudHMoKXt0aGlzLmFwcFNlcnZpY2UuaXNBcHBEZW1vLnN1YnNjcmliZShoPT57dGhpcy5kZW1vQmFubmVyPWh9KSx0aGlzLmFwcFNlcnZpY2UubGlj''@;'; put 'put ''ZW5zZUV4cGlyZXNJbkRheXMuc3Vic2NyaWJlKGg9PntoJiZoPD0xNCYmKHRoaXMubGljZW5zZUV4cGlyaW5nRGF5cz1oKX0pLHRoaXMuYXBwU2VydmljZS5pc0FwcE92ZXJDYXBhY2l0eS5zdWJzY3JpYmUoaD0+e3RoaXMuYXBwT3ZlckNhcGFjaXR5PWh9KX1zdWJzY3JpYmVUb0FwcEFjdGl2''@;'; put 'put ''ZSgpe3RoaXMuYXBwU2VydmljZS5pc0FwcEFjdGl2YXRlZC5zdWJzY3JpYmUoaD0+e3RoaXMuYXBwQWN0aXZlPWgsdGhpcy5kZW1vTGltaXRzPXRoaXMuYXBwU2VydmljZS5kZW1vTGltaXRzfSl9c3Vic2NyaWJlVG9TaG93QWJvcnRNb2RhbCgpe3RoaXMuZXZlbnRTZXJ2aWNlLm9uU2hvd0Fi''@;'; put 'put ''b3J0TW9kYWwuc3Vic2NyaWJlKGg9PntoLmlkPXRoaXMuc2FzanNBYm9ydHMubGVuZ3RoKzEsdGhpcy5zYXNqc0Fib3J0cy5wdXNoKGgpLHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKX0pfXN1YnNjcmliZVRvU3RhcnR1cERhdGEoKXt0aGlzLmV2ZW50U2VydmljZS5vblN0YXJ0dXBEYXRhTG9h''@;'; put 'put ''ZGVkLnN1YnNjcmliZSgoKT0+e3RoaXMuc3RhcnR1cERhdGFMb2FkZWQ9ITB9KX1zdWJzY3JpYmVUb1JlcXVlc3RzTW9kYWwoKXt0aGlzLmV2ZW50U2VydmljZS5vblJlcXVlc3RzTW9kYWxPcGVuLnN1YnNjcmliZShoPT57dGhpcy5yZXF1ZXN0c01vZGFsPSEwfSl9Y2xvc2VBYm9ydE1vZGFs''@;'; put 'put ''KGgpe2xldCB2PXRoaXMuc2FzanNBYm9ydHMuZmluZEluZGV4KHk9PnkuaWQ9PT1oKTt0aGlzLnNhc2pzQWJvcnRzLnNwbGljZSh2LDEpfXRvZ2dsZVNpZGViYXIoKXt0aGlzLmV2ZW50U2VydmljZS50b2dnbGVTaWRlYmFyKCl9aXNNYWluUm91dGUoaCl7cmV0dXJuIHRoaXMucm91dGVyLnVy''@;'; put 'put ''bC5pbmNsdWRlcyhoKX1vcGVuTGljZW5jaW5nUGFnZSgpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9saWNlbnNpbmcvdXBkYXRlIil9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KFI3KSxLdChabCksS3QoUHUpLEt0KFY2KSxLdChtdSks''@;'; put 'put ''S3Qoc2spLEt0KGQxKSxLdChibykpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJteS1hcHAiXV0sZGVjbHM6MzAsdmFyczoxNixjb25zdHM6W1sxLCJtYWluLWNvbnRhaW5lciJdLFs0LCJuZ0lmIl0sWzEsImFwcC1oZWFkZXIiXSxbInR5cGUiLCJidXR0b24iLCJjbGFz''@;'; put 'put ''cyIsImN1cnNvci1wb2ludGVyIHNlbGVjdC1ub25lIG1sLTEwIGQtZmxleCBjbHItanVzdGlmeS1jb250ZW50LWNlbnRlciBjbHItYWxpZ24taXRlbXMtY2VudGVyIiwzLCJjbGljayIsNCwibmdJZiJdLFsxLCJsb2dvIiwiZC1mbGV4IiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciJdLFsiaHJl''@;'; put 'put ''ZiIsIiMiLCJjbGFzcyIsIm5hdi1saW5rIiwzLCJyb3V0ZXJMaW5rIiw0LCJuZ0lmIl0sWzEsImhlYWRlci1hY3Rpb25zIl0sWzEsIm5hdi10ZXh0Il0sWzEsImRyb3Bkb3duIl0sWyJjbGFzcyIsInN1Ym5hdiIsNCwibmdJZiJdLFszLCJvcGVuZWQiLCJvcGVuZWRDaGFuZ2UiXSxbMywiZGF0''@;'; put 'put ''YSIsImZvcmNlUmVsb2FkIiwib25Db25maXJtTW9kYWxDbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJhcHBEcmFnTmRyb3AiLCIiLDEsInBvc2l0aW9uLXJlbGF0aXZlIiwzLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbENsb3NhYmxlIiwiY2xyTW9kYWxTaXplIiwiY2xyTW9kYWxPcGVu''@;'; put 'put ''Q2hhbmdlIl0sWzEsIm1vZGFsLXRpdGxlIl0sWyJzaXplIiwiMjAiLCJzaGFwZSIsImxvY2siXSxbMSwibW9kYWwtYm9keSJdLFsiaHJlZiIsIm1haWx0bzpzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvIl0sWyJjbGFzcyIsImFwcC1sb2FkaW5nIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImFsZXJ0''@;'; put 'put ''IGFsZXJ0LWFwcC1sZXZlbCBhbGVydC13YXJuaW5nIiwiaWQiLCJkZW1vLWJhbm5lciIsInJvbGUiLCJhbGVydCIsNCwibmdJZiJdLFsiY2xhc3MiLCJhbGVydCBhbGVydC1hcHAtbGV2ZWwgYWxlcnQtZGFuZ2VyIiwiaWQiLCJkZW1vLWJhbm5lciIsInJvbGUiLCJhbGVydCIsNCwibmdJZiJd''@;'; put 'put ''LFsiaWQiLCJkZW1vLWJhbm5lciIsInJvbGUiLCJhbGVydCIsMSwiYWxlcnQiLCJhbGVydC1hcHAtbGV2ZWwiLCJhbGVydC13YXJuaW5nIl0sWzEsImFsZXJ0LWl0ZW1zIl0sWzEsImFsZXJ0LWl0ZW0iLCJzdGF0aWMiXSxbMSwiYWxlcnQtaWNvbi13cmFwcGVyIl0sWyJzaGFwZSIsIndhcm5p''@;'; put 'put ''bmctc3RhbmRhcmQiLDEsIm10LTIiXSxbMSwiYWxlcnQtdGV4dCJdLFsicm91dGVyTGluayIsIi9saWNlbnNpbmcvdXBkYXRlIiwxLCJ1cGRhdGUta2V5Il0sWyJpZCIsImRlbW8tYmFubmVyIiwicm9sZSIsImFsZXJ0IiwxLCJhbGVydCIsImFsZXJ0LWFwcC1sZXZlbCIsImFsZXJ0LWRhbmdl''@;'; put 'put ''ciJdLFsiaHJlZiIsIm1haWx0bzogc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyIsMSwiY29sb3Itd2hpdGUiXSxbInJvdXRlckxpbmsiLCIvbGljZW5zaW5nL3VwZGF0ZSIsImNsYXNzIiwidXBkYXRlLWtleSIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY3Vyc29yLXBvaW50ZXIi''@;'; put 'put ''LCJzZWxlY3Qtbm9uZSIsIm1sLTEwIiwiZC1mbGV4IiwiY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIiLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIiwzLCJjbGljayJdLFsic2l6ZSIsIjI0Iiwic2hhcGUiLCJ0cmVlLXZpZXciXSxbImhyZWYiLCIjIiwxLCJuYXYtbGluayIsMywicm91dGVy''@;'; put 'put ''TGluayJdLFsic3JjIiwiL1NBU1N0b3JlZFByb2Nlc3MvP19QUk9HUkFNPXBaS2Q2Rjk1akVDdlJRbE4wTENmZEE9PS93ZWI5L2ltYWdlcy9kYy1sb2dvLXN2ZyIsMSwid2l0aG91dC10ZXh0IiwiZC1ibG9jayIsImQtbWQtbm9uZSJdLFsic3JjIiwiL1NBU1N0b3JlZFByb2Nlc3MvP19QUk9H''@;'; put 'put ''UkFNPXBaS2Q2Rjk1akVDdlJRbE4wTENmZEE9PS93ZWI5L2ltYWdlcy9kYXRhY29udHJvbGxlci1zdmciLDEsIndpdGgtdGV4dCIsImQtbm9uZSIsImQtbWQtYmxvY2siXSxbMSwiY2xyLWljb24iLCJoZWFkZXItbG9nbyIsIm1sLTEwIl0sWzEsImhlYWRlci1uYXYiLCJkLWZsZXgiLCJkLXNt''@;'; put 'put ''LW5vbmUiXSxbImNsckRyb3Bkb3duVHJpZ2dlciIsIiIsImFyaWEtbGFiZWwiLCJ0b2dnbGUgc2V0dGluZ3MgbWVudSIsMSwibmF2LWljb24iLCJjb2xvci13aGl0ZS1pIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1sZWZ0Iiw0LCJjbHJJZk9wZW4iXSxbMSwiaGVhZGVyLW5hdiIsImQtbm9u''@;'; put 'put ''ZSIsImQtc20tZmxleCJdLFsicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSIsMSwibmF2LWxpbmsiLCJuYXYtdGV4dCIsMywicm91dGVyTGluayJdLFsxLCJuYXYtbGluayIsIm5hdi10ZXh0IiwzLCJyb3V0ZXJMaW5rIl0sWzEsIm5hdi1saW5rIiwibmF2LXRleHQiLCJjdXJzb3ItcG9pbnRl''@;'; put 'put ''ciIsMywicm91dGVyTGluayJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCJdLFsiY2xyRHJvcGRvd25JdGVtIiwiIiwzLCJyb3V0ZXJMaW5rIl0sWzEsInN1Ym5hdiJdLFsxLCJuYXYiXSxbMSwibmF2LWl0ZW0iXSxbMywiZGF0YSIsImZvcmNlUmVsb2FkIiwib25Db25maXJtTW9kYWxD''@;'; put 'put ''bGljayJdLFsxLCJhcHAtbG9hZGluZyJdLFsic3JjIiwiL1NBU1N0b3JlZFByb2Nlc3MvP19QUk9HUkFNPXBaS2Q2Rjk1akVDdlJRbE4wTENmZEE9PS93ZWI5L2ltYWdlcy9kYXRhY29udHJvbGxlci1zdmciLDEsImxvYWRpbmctbG9nbyJdLFsiY2xhc3MiLCJzbGlkZXIiLDQsIm5nSWYiXSxb''@;'; put 'put ''MSwic2xpZGVyIl0sWzEsImxpbmUiXSxbMSwic3VibGluZSIsImluYyJdLFsxLCJzdWJsaW5lIiwiZGVjIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYobnQoMCwiZGl2IiwwKSxybigxLEtCZSw0LDMsIm5nLWNvbnRhaW5lciIsMSksbnQoMiwiaGVhZGVyIiwyKSxybigzLCRCZSwy''@;'; put 'put ''LDAsImRpdiIsMyksbnQoNCwiZGl2Iiw0KSxybig1LGVQZSwzLDIsImEiLDUpLHJuKDYsdFBlLDIsMCwiYSIsMSksb3QoKSxybig3LHJQZSwxMywxMCwibmctY29udGFpbmVyIiwxKSxudCg4LCJkaXYiLDYpKDksImRpdiIsNyksQ3IoMTAsImFwcC1sb2FkaW5nLWluZGljYXRvciIpLG90KCks''@;'; put 'put ''bnQoMTEsImRpdiIsOCksQ3IoMTIsImFwcC11c2VyLW5hdi1kcm9wZG93biIpLG90KCkoKSgpLHJuKDEzLGFQZSwxMSw2LCJuYXYiLDkpLHJuKDE0LGxQZSwxLDAsImFwcC1hbGVydHMiLDEpLG50KDE1LCJhcHAtcmVxdWVzdHMtbW9kYWwiLDEwKSxHbigib3BlbmVkQ2hhbmdlIixmdW5jdGlv''@;'; put 'put ''bihDKXtyZXR1cm4gdi5yZXF1ZXN0c01vZGFsPUN9KSxvdCgpLHJuKDE2LHNQZSwxLDAsInJvdXRlci1vdXRsZXQiLDEpLENyKDE3LCJhcHAtbG9naW4iKSxybigxOCx1UGUsMSwwLCJhcHAtYWxlcnRzIiwxKSxybigxOSxjUGUsMSwyLCJhcHAtaW5mby1tb2RhbCIsMTEpLG50KDIwLCJjbHIt''@;'; put 'put ''bW9kYWwiLDEyKSxHbigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5kZW1vTGltaXROb3RpY2U9Q30pLG50KDIxLCJoMyIsMTMpLFl0KDIyLCIgTG9ja2VkIEZlYXR1cmUgIiksQ3IoMjMsImNsci1pY29uIiwxNCksb3QoKSxudCgyNCwiZGl2IiwxNSksWXQoMjUs''@;'; put 'put ''IiBDb250YWN0ICIpLG50KDI2LCJhIiwxNiksWXQoMjcsInN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8iKSxvdCgpLFl0KDI4KSxvdCgpKCkoKSxybigyOSxoUGUsMywxLCJkaXYiLDE3KSksMiZoJiYodXQoMSksVHQoIm5nSWYiLCF2LnJvdXRlci51cmwuaW5jbHVkZXMoImxpY2Vuc2luZyIp''@;'; put 'put ''KSx1dCgyKSxUdCgibmdJZiIsdi5pc01haW5Sb3V0ZSgidmlldyIpfHx2LmlzTWFpblJvdXRlKCJob21lIikmJiF2LnJvdXRlci51cmwuaW5jbHVkZXMoImxpY2Vuc2luZyIpKSx1dCgyKSxUdCgibmdJZiIsIXYucm91dGVyLnVybC5pbmNsdWRlcygiZGVwbG95IikpLHV0KDEpLFR0KCJuZ0lm''@;'; put 'put ''Iix2LnJvdXRlci51cmwuaW5jbHVkZXMoImRlcGxveSIpKSx1dCgxKSxUdCgibmdJZiIsIXYucm91dGVyLnVybC5pbmNsdWRlcygiZGVwbG95IikmJiF2LnJvdXRlci51cmwuaW5jbHVkZXMoImxpY2Vuc2luZyIpKSx1dCg2KSxUdCgibmdJZiIsdi5yb3V0ZXIudXJsLmluY2x1ZGVzKCJzdWJt''@;'; put 'put ''aXR0ZWQiKXx8di5yb3V0ZXIudXJsLmluY2x1ZGVzKCJhcHByb3ZlIil8fHYucm91dGVyLnVybC5pbmNsdWRlcygiaGlzdG9yeSIpKSx1dCgxKSxUdCgibmdJZiIsIXYuZXJyVG9wKSx1dCgxKSxUdCgib3BlbmVkIix2LnJlcXVlc3RzTW9kYWwpLHV0KDEpLFR0KCJuZ0lmIix2LnN0YXJ0dXBE''@;'; put 'put ''YXRhTG9hZGVkKSx1dCgyKSxUdCgibmdJZiIsdi5lcnJUb3ApLHV0KDEpLFR0KCJuZ0Zvck9mIix2LnNhc2pzQWJvcnRzKSx1dCgxKSxUdCgiY2xyTW9kYWxPcGVuIix2LmRlbW9MaW1pdE5vdGljZSkoImNsck1vZGFsQ2xvc2FibGUiLCEwKSgiY2xyTW9kYWxTaXplIiwibGciKSx1dCg4KSxK''@;'; put 'put ''aSgiIHdpdGggeW91ciBzaXRlIGlkICgiLHYuc3lzc2l0ZS52YWx1ZSwiKSB0byBhY3RpdmF0ZSEgIiksdXQoMSksVHQoIm5nSWYiLCF2LnN0YXJ0dXBEYXRhTG9hZGVkKSl9LGRlcGVuZGVuY2llczpbeHMsTm8sYXksdjcsbGssJFJlLHFSZSxsQmUsY0JlLGdaLHdsLGlkLG9kLFBhLHd2LGJT''@;'; put 'put ''LF9TLEpMLEJCZSx6QmVdLHN0eWxlczpbImFwcC1yZXF1ZXN0cy1tb2RhbFtfbmdjb250ZW50LSVDT01QJV17ei1pbmRleDoxMDAwMH1oZWFkZXIuYXBwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojMzE0MzUxIWltcG9ydGFudDtjb2xvcjojZmZmfS5sb2dvW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXSAgIGltZy53aXRob3V0LXRleHRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjMwcHh9LmxvZ29bX25nY29udGVudC0lQ09NUCVdICAgaW1nLndpdGgtdGV4dFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjEwcHh9LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcltfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV17ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowO21hcmdpbi1sZWZ0OjEwcHh9LmRlbW8tZXhwaXJlZC1ub3RpY2VbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1z''@;'; put 'put ''OmNlbnRlcjtwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7dG9wOjA7aGVpZ2h0OjEwMHZoIWltcG9ydGFudDt3aWR0aDoxMDB2dyFpbXBvcnRhbnQ7ei1pbmRleDoxMDU7YmFja2dyb3VuZDpyZ2JhKDMzLDMzLDMzLC41KX0uZGVtby1leHBpcmVkLW5vdGljZVtfbmdjb250ZW50LSVDT01QJV0gICAu''@;'; put 'put ''ZXhwaXJlZC1kZXRhaWxzW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6MzBweDt6LWluZGV4OjExMDtiYWNrZ3JvdW5kOiMzMTQzNTF9LmRlbW8tZXhwaXJlZC1ub3RpY2VbX25nY29udGVudC0lQ09NUCVdICAgLmV4''@;'; put 'put ''cGlyZWQtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICAuZXhwaXJlZC1ub3RpY2VbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNlMGUwZTA7Zm9udC1zaXplOjE2cHh9LmRlbW8tZXhwaXJlZC1ub3RpY2VbX25nY29udGVudC0lQ09NUCVdICAgLmV4cGlyZWQtZGV0YWlsc1tfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0gICAuZXhwaXJlZC1ub3RpY2VbX25nY29udGVudC0lQ09NUCVdICAgLm1haWx0b1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzhkYzUzZX0ubWFpbi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLnVwZGF0ZS1rZXlbX25nY29udGVudC0lQ09NUCVde2Rpc3Bs''@;'; put 'put ''YXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Y29sb3I6I2ZmZjtwYWRkaW5nOjAgMTBweDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjE0OTAxOTYwNzgpfS5hbGVydC1pY29uLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MCFpbXBvcnRhbnR9Lm5hdi10ZXh0W19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXXttYXJnaW4tcmlnaHQ6MjBweH0uc2lkZWJhci10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJTthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZy1sZWZ0OjEwcHh9LnNpZGViYXItdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAg''@;'; put 'put ''IGNsci1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6cG9pbnRlcjt3aWR0aDozMHB4O2hlaWdodDozMHB4fWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyLWFjdGlvbnNbX25nY29udGVudC0lQ09NUCVdICAgLmRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3Np''@;'; put 'put ''dGlvbjp1bnNldH1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm5hdltfbmdjb250ZW50LSVDT01QJV0gICAubmF2LWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmYWZhZmE7b3BhY2l0eTouOTtsaW5lLWhlaWdodDoxLjQ1cmVtfWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAubmF2W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXYtbGlua1tfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7Ym94LXNoYWRvdzppbnNldCAwIC0zcHggMCB0cmFuc3BhcmVudDt0cmFuc2l0aW9uOmJveC1zaGFkb3cgLjJzIGVhc2UtaW59aGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5u''@;'; put 'put ''YXZbX25nY29udGVudC0lQ09NUCVdICAgLm5hdi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcntjb2xvcjojZmFmYWZhO29wYWNpdHk6MX1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm5hdltfbmdjb250ZW50LSVDT01QJV0gICAubmF2LWxpbmsuYWN0aXZlW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXXtiYWNrZ3JvdW5kOiM2MTcxN0Q7b3BhY2l0eToxO2JveC1zaGFkb3c6aW5zZXQgMCAtM3B4IHRyYW5zcGFyZW50fWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubmF2W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXYtaXRlbVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXJp''@;'; put 'put ''Z2h0OjFyZW19Lm5vdGZbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzE2YTU3YTtjb2xvcjojZmZmY2ZjO2ZvbnQtc2l6ZToxMnB4fS5idG4uYnRuLXN1Y2Nlc3NbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjJhNDIwO2JhY2tncm91bmQtY29sb3I6IzE2YTU3YSFp''@;'; put 'put ''bXBvcnRhbnQ7Y29sb3I6I2ZmZn0uYnRuLmJ0bi1zdWNjZXNzW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMyYWRkMzk7Y29sb3I6I2ZmZn0udG9nZ2xlLXN3aXRjaFtfbmdjb250ZW50LSVDT01QJV0gICBpbnB1dFt0eXBlPWNoZWNrYm94XVtfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV06Y2hlY2tlZCArIGxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpiZWZvcmV7Ym9yZGVyLWNvbG9yOiM2MTcxN2Q7YmFja2dyb3VuZC1jb2xvcjojNjE3MTdkO3RyYW5zaXRpb246LjE1cyBlYXNlLWluO3RyYW5zaXRpb24tcHJvcGVydHk6Ym9yZGVyLWNvbG9yLGJhY2tncm91bmQt''@;'; put 'put ''Y29sb3J9Lm1haW4tY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjEwMHZoIWltcG9ydGFudH0ubWFpbi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250ZW50LWFyZWFbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde3BhZGRpbmc6MHJlbSAxcmVtIDFyZW19LmNvbnRlbnQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXt6LWluZGV4OjAhaW1wb3J0YW50fS5uYXZCYXJSZXNwW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtiYWNr''@;'; put 'put ''Z3JvdW5kOiM0OTVBNjc7Y29sb3I6I2ZmZn1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCl7Lm5hdkJhclJlc3BbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtiYWNrZ3JvdW5kOiM0OTVBNjc7Y29sb3I6I2ZmZn0u''@;'; put 'put ''bWFpbi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXZbX25nY29udGVudC0lQ09NUCVdICAgLm5hdi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1haW4tY29udGFpbmVyW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXSAgIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMltfbmdjb250ZW50LSVDT01QJV0gICAubmF2W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXYtbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYWluLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuc3VibmF2LmNsci1uYXYt''@;'; put 'put ''bGV2ZWwtMVtfbmdjb250ZW50LSVDT01QJV0gICAubmF2W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXYtbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYWluLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMltfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAubmF2W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXYtbGlua1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzowIC41cmVtIDAgMXJlbTt3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2JvcmRlci1yYWRpdXM6LjEyNXJl''@;'; put 'put ''bSAwIDAgLjEyNXJlbTtjb2xvcjojOTVjODRifS5jYXJkLWJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNhcmQtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjEwcHggMCAwfS5tYWluLWNvbnRhaW5lcltfbmdjb250ZW50LWMwXVtfbmdjb250ZW50LSVDT01QJV0gICAuY29u''@;'; put 'put ''dGVudC1jb250YWluZXJbX25nY29udGVudC1jMF1bX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnQtYXJlYVtfbmdjb250ZW50LWMwXVtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzowcmVtfX0gIC5odEludmFsaWR7YmFja2dyb3VuZDpibGFjayFpbXBvcnRhbnR9QG1lZGlhIHNjcmVl''@;'; put 'put ''biBhbmQgKG1heC13aWR0aDogNDgwcHgpeyAgaDJ7Zm9udC1zaXplOi43cmVtIWltcG9ydGFudH0gIGgze2ZvbnQtc2l6ZTouN3JlbX19ICAubmF2LWxpbmt7cGFkZGluZzowcmVtIDFyZW19ICAuYnRuLXByaW1hcnkgLmJ0biwgICAuYnRuLmJ0bi1wcmltYXJ5e2JvcmRlci1jb2xvcjojMzE0''@;'; put 'put ''MzUxO2JhY2tncm91bmQtY29sb3I6IzMxNDM1MTtjb2xvcjojZmZmfSAgLmJ0bntjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jazstd2Via2l0LWFwcGVhcmFuY2U6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czouMTI1cmVtO2JvcmRlcjoxcHggc29saWQ7bWluLXdpZHRo''@;'; put 'put ''OjNyZW07bWF4LXdpZHRoOjE1cmVtO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO292ZXJmbG93OmhpZGRlbjt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7dmVydGljYWwtYWxpZ246bWlkZGxlO2xpbmUtaGVpZ2h0OjEuNXJlbTts''@;'; put 'put ''ZXR0ZXItc3BhY2luZzouMTJlbTtmb250LXNpemU6LjVyZW07Zm9udC13ZWlnaHQ6NTAwO2hlaWdodDoxLjVyZW07cGFkZGluZzowIC41cmVtO2JvcmRlci1jb2xvcjojMzE0MzUxO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6IzMxNDM1MX0gIC5idG4uYnRuLW91dGxpbmV7''@;'; put 'put ''Ym9yZGVyLWNvbG9yOiMzMTQzNTE7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojMzE0MzUxfSAgLmJ0bi5idG4tb3V0bGluZTpob3Zlcntib3JkZXItY29sb3I6IzMxNDM1MTtiYWNrZ3JvdW5kLWNvbG9yOiM0OTVhNjc7Y29sb3I6I2ZmZn0gIC5idG4uYnRuLXN1Y2Nlc3Mt''@;'; put 'put ''b3V0bGluZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiM1ZWE3MWY7Y29sb3I6I2ZmZjdmNztib3JkZXItY29sb3I6IzlhOTY5Nn0gIC5odE1vYmlsZUVkaXRvckNvbnRhaW5lciAuaW5wdXRzIHRleHRhcmVhe2ZvbnQtc2l6ZToxM3B0O2JvcmRlcjoycHggc29saWQgIzQ4NTk2Nztib3JkZXIt''@;'; put 'put ''cmFkaXVzOjRweDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtib3gtc2hhZG93Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxNHB4O3JpZ2h0OjBweDt0b3A6MDtib3R0b206MDtwYWRkaW5nOjdwdDt3aWR0aDoyOTBweH0gIC5odE1vYmlsZUVkaXRvckNvbnRhaW5lciAucG9zaXRpb25D''@;'; put 'put ''b250cm9sc3t3aWR0aDozMzNweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDo1cHQ7dG9wOjUwcHg7Ym90dG9tOjA7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXJ9ICAuaHRNb2JpbGVFZGl0b3JDb250YWluZXIuYWN0aXZle2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjEyMHB4O3dp''@;'; put 'put ''ZHRoOjM1MHB4fSAgLmhhbmRzb250YWJsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLXJhZGl1czozcHh9ICAuaGFuZHNvbnRhYmxlIHRoe2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0gIC5odF9jbG9uZV9sZWZ0IHRoe2JvcmRlci1yaWdodDoxcHggc29saWQgI2NjYztib3JkZXIt''@;'; put 'put ''bGVmdDoxcHggc29saWQgI2NjY30gIC5odF9jbG9uZV90b3AgdGh7Ym9yZGVyLXRvcDoxcHggc29saWQgI2NjYztib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjY30gIC5odF9jbG9uZV90b3BfbGVmdF9jb3JuZXIgdGh7Ym9yZGVyLXJpZ2h0''@;'; put 'put ''OjFweCBzb2xpZCAjY2NjfSAgLmh0X21hc3RlciB0cjpudGgtb2YtdHlwZShvZGQpPnRke2JhY2tncm91bmQtY29sb3I6I2YzZjNmMztib3JkZXI6MXB4IHNvbGlkIHJnYigxOTcsMTk3LDE5Nyk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiKDIzNiwyMzUsMjM1KX0gIC5odF9tYXN0ZXIg''@;'; put 'put ''dHI6bnRoLW9mLXR5cGUoZXZlbik+dGR7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgcmdiKDE5NywxOTcsMTk3KTtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2IoMjM2LDIzNSwyMzUpfSAgLnd0Qm9yZGVye2JhY2tncm91bmQtY29sb3I6IzQ5NWE2NyFpbXBvcnRh''@;'; put 'put ''bnR9ICAuaGFuZHNvbnRhYmxlIC5oYW5kc29udGFibGUuaHRfY2xvbmVfdG9wIC53dEhpZGVye3BhZGRpbmc6MCFpbXBvcnRhbnQ7bWFyZ2luOjA7Ym9yZGVyLWJvdHRvbTozcHggc29saWQgI2Q2ZDNkM30gIC5jb250ZW50LWNvbnRhaW5lcntiYWNrZ3JvdW5kOiNGNUY2RkZ9ICAuY2FyZHti''@;'; put 'put ''b3gtc2hhZG93OjAgLjEyNXJlbSAjZDdkN2Q3O2JvcmRlci1yYWRpdXM6MHJlbTtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50fSAgLmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLCAgIC5kYXRhZ3JpZC1oaXN0b3J5IC5kYXRhZ3JpZHtib3JkZXItY29sbGFwc2U6c2VwYXJhdGU7Ym9y''@;'; put 'put ''ZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOi4xMjVyZW07YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiM1NjU2NTY7bWFyZ2luOjA7bWFyZ2luLXRvcDoxcmVtO21heC13aWR0aDoxMDAlO3dpZHRoOjEwMCU7cGFkZGluZzoxNXB4IDE1cHggNTBweH0gIC5kYXRh''@;'; put 'put ''Z3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1mb290LCAgIC5kYXRhZ3JpZC1oaXN0b3J5IC5kYXRhZ3JpZC1mb290e2p1c3RpZnktY29udGVudDpmbGV4LWVuZDtoZWlnaHQ6MS41cmVtO3BhZGRpbmc6MCAuNXJlbTtsaW5lLWhlaWdodDpjYWxjKDEuNXJlbSAtIDNweCk7Zm9udC1zaXplOi40NTgz''@;'; put 'put ''M3JlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLXRvcDoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjB9ICAuZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZm9vdGVyLCAgIC5kYXRhZ3JpZC1oaXN0b3J5IC5kYXRhZ3JpZC1mb290ZXJ7cG9zaXRpb246YWJzb2x1dGU7cmln''@;'; put 'put ''aHQ6MTVweDt0b3A6MnB4fSAgLmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkIC5kYXRhZ3JpZC1oZWFkLCAgIC5kYXRhZ3JpZC1oaXN0b3J5IC5kYXRhZ3JpZCAuZGF0YWdyaWQtaGVhZHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjY30gIC5kcm9w''@;'; put 'put ''ZG93bi1tZW51e3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxMDAlO2xlZnQ6MDttYXJnaW4tdG9wOi4wODMzMzNyZW07ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtiYWNrZ3JvdW5kOiNmNWY2ZmY7cGFkZGluZzouNXJlbSAwO2JvcmRlcjoxcHggc29saWQgI2NjYztib3gtc2hh''@;'; put 'put ''ZG93OjAgMXB4IC4xMjVyZW0gIzczNzM3MzQwO21pbi13aWR0aDo1cmVtO21heC13aWR0aDoxNXJlbTtib3JkZXItcmFkaXVzOi4xMjVyZW07dmlzaWJpbGl0eTpoaWRkZW47ei1pbmRleDoxMDAwfSAgLnRhYmxle2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZTtib3JkZXI6MXB4IHNvbGlkIHRy''@;'; put 'put ''YW5zcGFyZW50O2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzU2NTY1NjttYXJnaW46MDttYXJnaW4tdG9wOjFyZW07bWF4LXdpZHRoOjEwMCU7d2lkdGg6MTAwJX0gIC50YWJsZSB0aHtmb250LXNpemU6LjQ1ODMzcmVtO2ZvbnQtd2VpZ2h0OjYwMDtsZXR0''@;'; put 'put ''ZXItc3BhY2luZzouMDNlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7dmVydGljYWwtYWxpZ246Ym90dG9tO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfSAgLm1vZGFsLWhlYWRlcntib3JkZXItYm90dG9tOjJweCBzb2xpZCAjZTRlNGU0O3Bh''@;'; put 'put ''ZGRpbmc6MCAwIC41cmVtO21hcmdpbi1ib3R0b206MXJlbX0gIC5tYWluLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXJ7bWluLWhlaWdodDowcHg7cG9zaXRpb246cmVsYXRpdmV9LmFwcC1sb2FkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5sb2FkaW5nLWxvZ29bX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVde21heC13aWR0aDo0MDBweDt3aWR0aDoxMDAlfSJdfSksZH0pKCk7ZnVuY3Rpb24gbndlKGQpe3JldHVybiBuZXcgZW4oM2UzLCExKX1mdW5jdGlvbiBRUGUoKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LmRvY3VtZW50fWZ1bmN0aW9u''@;'; put 'put ''IGRoZSgpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2VzcyYmIltvYmplY3QgcHJvY2Vzc10iPT09e30udG9TdHJpbmcuY2FsbChwcm9jZXNzKX1mdW5jdGlvbiBBdyhkKXtzd2l0Y2goZC5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IElrO2Nhc2UgMTpyZXR1cm4gZFswXTtkZWZh''@;'; put 'put ''dWx0OnJldHVybiBuZXcgejcoZCl9fWZ1bmN0aW9uIHJ3ZShkLGcsaCx2LHk9bmV3IE1hcCxDPW5ldyBNYXApe2NvbnN0IEk9W10sWj1bXTtsZXQgdWU9LTEsX2U9bnVsbDtpZih2LmZvckVhY2goQmU9Pntjb25zdCBOZT1CZS5nZXQoIm9mZnNldCIpLEtlPU5lPT11ZSxwdD1LZSYmX2V8fG5l''@;'; put 'put ''dyBNYXA7QmUuZm9yRWFjaCgoT3QsJHQpPT57bGV0IGZuPSR0LExuPU90O2lmKCJvZmZzZXQiIT09JHQpc3dpdGNoKGZuPWcubm9ybWFsaXplUHJvcGVydHlOYW1lKGZuLEkpLExuKXtjYXNlIiEiOkxuPXkuZ2V0KCR0KTticmVhaztjYXNlIG44OkxuPUMuZ2V0KCR0KTticmVhaztkZWZhdWx0''@;'; put 'put ''OkxuPWcubm9ybWFsaXplU3R5bGVWYWx1ZSgkdCxmbixMbixJKX1wdC5zZXQoZm4sTG4pfSksS2V8fFoucHVzaChwdCksX2U9cHQsdWU9TmV9KSxJLmxlbmd0aCl0aHJvdyBmdW5jdGlvbiBQUGUoZCl7cmV0dXJuIG5ldyBlbigzNTAyLCExKX0oKTtyZXR1cm4gWn1mdW5jdGlvbiBwaGUoZCxn''@;'; put 'put ''LGgsdil7c3dpdGNoKGcpe2Nhc2Uic3RhcnQiOmQub25TdGFydCgoKT0+dihoJiZnaGUoaCwic3RhcnQiLGQpKSk7YnJlYWs7Y2FzZSJkb25lIjpkLm9uRG9uZSgoKT0+dihoJiZnaGUoaCwiZG9uZSIsZCkpKTticmVhaztjYXNlImRlc3Ryb3kiOmQub25EZXN0cm95KCgpPT52KGgmJmdoZSho''@;'; put 'put ''LCJkZXN0cm95IixkKSkpfX1mdW5jdGlvbiBnaGUoZCxnLGgpe2NvbnN0IHY9aC50b3RhbFRpbWUsQz1taGUoZC5lbGVtZW50LGQudHJpZ2dlck5hbWUsZC5mcm9tU3RhdGUsZC50b1N0YXRlLGd8fGQucGhhc2VOYW1lLG51bGw9PXY/ZC50b3RhbFRpbWU6diwhIWguZGlzYWJsZWQpLEk9ZC5f''@;'; put 'put ''ZGF0YTtyZXR1cm4gbnVsbCE9SSYmKEMuX2RhdGE9SSksQ31mdW5jdGlvbiBtaGUoZCxnLGgsdix5PSIiLEM9MCxJKXtyZXR1cm57ZWxlbWVudDpkLHRyaWdnZXJOYW1lOmcsZnJvbVN0YXRlOmgsdG9TdGF0ZTp2LHBoYXNlTmFtZTp5LHRvdGFsVGltZTpDLGRpc2FibGVkOiEhSX19ZnVuY3Rp''@;'; put 'put ''b24gZDQoZCxnLGgpe2xldCB2PWQuZ2V0KGcpO3JldHVybiB2fHxkLnNldChnLHY9aCksdn1mdW5jdGlvbiBpd2UoZCl7Y29uc3QgZz1kLmluZGV4T2YoIjoiKTtyZXR1cm5bZC5zdWJzdHJpbmcoMSxnKSxkLnNsaWNlKGcrMSldfWxldCB2aGU9KGQsZyk9PiExLG93ZT0oZCxnLGgpPT5bXSxh''@;'; put 'put ''d2U9bnVsbDtmdW5jdGlvbiBBaGUoZCl7Y29uc3QgZz1kLnBhcmVudE5vZGV8fGQuaG9zdDtyZXR1cm4gZz09PWF3ZT9udWxsOmd9KGRoZSgpfHwidW5kZWZpbmVkIiE9dHlwZW9mIEVsZW1lbnQpJiYoUVBlKCk/KGF3ZT0oKCk9PmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkoKSx2aGU9KGQs''@;'; put 'put ''Zyk9Pntmb3IoO2c7KXtpZihnPT09ZClyZXR1cm4hMDtnPUFoZShnKX1yZXR1cm4hMX0pOnZoZT0oZCxnKT0+ZC5jb250YWlucyhnKSxvd2U9KGQsZyxoKT0+e2lmKGgpcmV0dXJuIEFycmF5LmZyb20oZC5xdWVyeVNlbGVjdG9yQWxsKGcpKTtjb25zdCB2PWQucXVlcnlTZWxlY3RvcihnKTty''@;'; put 'put ''ZXR1cm4gdj9bdl06W119KTtsZXQgQ1M9bnVsbCxsd2U9ITE7Y29uc3Qgc3dlPXZoZSx1d2U9b3dlO2xldCBjd2U9KCgpPT57Y2xhc3MgZHt2YWxpZGF0ZVN0eWxlUHJvcGVydHkoaCl7cmV0dXJuIGZ1bmN0aW9uIFhQZShkKXtDU3x8KENTPWZ1bmN0aW9uIEtQZSgpe3JldHVybiJ1bmRlZmlu''@;'; put 'put ''ZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuYm9keTpudWxsfSgpfHx7fSxsd2U9ISFDUy5zdHlsZSYmIldlYmtpdEFwcGVhcmFuY2UiaW4gQ1Muc3R5bGUpO2xldCBnPSEwO3JldHVybiBDUy5zdHlsZSYmIWZ1bmN0aW9uIEpQZShkKXtyZXR1cm4iZWJraXQiPT1kLnN1YnN0cmluZygx''@;'; put 'put ''LDYpfShkKSYmKGc9ZCBpbiBDUy5zdHlsZSwhZyYmbHdlJiYoZz0iV2Via2l0IitkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Quc2xpY2UoMSlpbiBDUy5zdHlsZSkpLGd9KGgpfW1hdGNoZXNFbGVtZW50KGgsdil7cmV0dXJuITF9Y29udGFpbnNFbGVtZW50KGgsdil7cmV0dXJuIHN3ZSho''@;'; put 'put ''LHYpfWdldFBhcmVudEVsZW1lbnQoaCl7cmV0dXJuIEFoZShoKX1xdWVyeShoLHYseSl7cmV0dXJuIHV3ZShoLHYseSl9Y29tcHV0ZVN0eWxlKGgsdix5KXtyZXR1cm4geXx8IiJ9YW5pbWF0ZShoLHYseSxDLEksWj1bXSx1ZSl7cmV0dXJuIG5ldyBJayh5LEMpfX1yZXR1cm4gZC5cdTAyNzVm''@;'; put 'put ''YWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKSx5aGU9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuTk9PUD1uZXcgY3dlLGR9KSgpO2NvbnN0IFNxPSJuZy1sZWF2ZSIsTXE9Im5nLXRyaWdn''@;'; put 'put ''ZXIiLEVxPSIubmctdHJpZ2dlciIsaHdlPSJuZy1hbmltYXRpbmciLGJoZT0iLm5nLWFuaW1hdGluZyI7ZnVuY3Rpb24geXcoZCl7aWYoIm51bWJlciI9PXR5cGVvZiBkKXJldHVybiBkO2NvbnN0IGc9ZC5tYXRjaCgvXigtP1tcLlxkXSspKG0/cykvKTtyZXR1cm4hZ3x8Zy5sZW5ndGg8Mj8w''@;'; put 'put ''Ol9oZShwYXJzZUZsb2F0KGdbMV0pLGdbMl0pfWZ1bmN0aW9uIF9oZShkLGcpe3JldHVybiJzIj09PWc/MWUzKmQ6ZH1mdW5jdGlvbiB4cShkLGcsaCl7cmV0dXJuIGQuaGFzT3duUHJvcGVydHkoImR1cmF0aW9uIik/ZDpmdW5jdGlvbiBlRmUoZCxnLGgpe2xldCB5LEM9MCxJPSIiO2lmKCJz''@;'; put 'put ''dHJpbmciPT10eXBlb2YgZCl7Y29uc3QgWj1kLm1hdGNoKC9eKC0/W1wuXGRdKykobT9zKSg/OlxzKygtP1tcLlxkXSspKG0/cykpPyg/OlxzKyhbLWEtel0rKD86XCguKz9cKSk/KSk/JC9pKTtpZihudWxsPT09WilyZXR1cm4gZy5wdXNoKG53ZSgpKSx7ZHVyYXRpb246MCxkZWxheTowLGVh''@;'; put 'put ''c2luZzoiIn07eT1faGUocGFyc2VGbG9hdChaWzFdKSxaWzJdKTtjb25zdCB1ZT1aWzNdO251bGwhPXVlJiYoQz1faGUocGFyc2VGbG9hdCh1ZSksWls0XSkpO2NvbnN0IF9lPVpbNV07X2UmJihJPV9lKX1lbHNlIHk9ZDtpZighaCl7bGV0IFo9ITEsdWU9Zy5sZW5ndGg7eTwwJiYoZy5wdXNo''@;'; put 'put ''KGZ1bmN0aW9uIHBQZSgpe3JldHVybiBuZXcgZW4oMzEwMCwhMSl9KCkpLFo9ITApLEM8MCYmKGcucHVzaChmdW5jdGlvbiBnUGUoKXtyZXR1cm4gbmV3IGVuKDMxMDEsITEpfSgpKSxaPSEwKSxaJiZnLnNwbGljZSh1ZSwwLG53ZSgpKX1yZXR1cm57ZHVyYXRpb246eSxkZWxheTpDLGVhc2lu''@;'; put 'put ''ZzpJfX0oZCxnLGgpfWZ1bmN0aW9uIF9aKGQsZz17fSl7cmV0dXJuIE9iamVjdC5rZXlzKGQpLmZvckVhY2goaD0+e2dbaF09ZFtoXX0pLGd9ZnVuY3Rpb24gZHdlKGQpe2NvbnN0IGc9bmV3IE1hcDtyZXR1cm4gT2JqZWN0LmtleXMoZCkuZm9yRWFjaChoPT57Zy5zZXQoaCxkW2hdKX0pLGd9''@;'; put 'put ''ZnVuY3Rpb24gd3coZCxnPW5ldyBNYXAsaCl7aWYoaClmb3IobGV0W3YseV1vZiBoKWcuc2V0KHYseSk7Zm9yKGxldFt2LHldb2YgZClnLnNldCh2LHkpO3JldHVybiBnfWZ1bmN0aW9uIGd3ZShkLGcsaCl7cmV0dXJuIGg/ZysiOiIraCsiOyI6IiJ9ZnVuY3Rpb24gbXdlKGQpe2xldCBnPSIi''@;'; put 'put ''O2ZvcihsZXQgaD0wO2g8ZC5zdHlsZS5sZW5ndGg7aCsrKXtjb25zdCB2PWQuc3R5bGUuaXRlbShoKTtnKz1nd2UoMCx2LGQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSh2KSl9Zm9yKGNvbnN0IGggaW4gZC5zdHlsZSlkLnN0eWxlLmhhc093blByb3BlcnR5KGgpJiYhaC5zdGFydHNXaXRoKCJf''@;'; put 'put ''IikmJihnKz1nd2UoMCxpRmUoaCksZC5zdHlsZVtoXSkpO2Quc2V0QXR0cmlidXRlKCJzdHlsZSIsZyl9ZnVuY3Rpb24gQ2coZCxnLGgpe2Quc3R5bGUmJihnLmZvckVhY2goKHYseSk9Pntjb25zdCBDPWtoZSh5KTtoJiYhaC5oYXMoeSkmJmguc2V0KHksZC5zdHlsZVtDXSksZC5zdHlsZVtD''@;'; put 'put ''XT12fSksZGhlKCkmJm13ZShkKSl9ZnVuY3Rpb24ga1MoZCxnKXtkLnN0eWxlJiYoZy5mb3JFYWNoKChoLHYpPT57Y29uc3QgeT1raGUodik7ZC5zdHlsZVt5XT0iIn0pLGRoZSgpJiZtd2UoZCkpfWZ1bmN0aW9uIENaKGQpe3JldHVybiBBcnJheS5pc0FycmF5KGQpPzE9PWQubGVuZ3RoP2Rb''@;'; put 'put ''MF06VGsoZCk6ZH1jb25zdCBDaGU9bmV3IFJlZ0V4cCgie3tcXHMqKC4rPylcXHMqfX0iLCJnIik7ZnVuY3Rpb24gdndlKGQpe2xldCBnPVtdO2lmKCJzdHJpbmciPT10eXBlb2YgZCl7bGV0IGg7Zm9yKDtoPUNoZS5leGVjKGQpOylnLnB1c2goaFsxXSk7Q2hlLmxhc3RJbmRleD0wfXJldHVy''@;'; put 'put ''biBnfWZ1bmN0aW9uIFRxKGQsZyxoKXtjb25zdCB2PWQudG9TdHJpbmcoKSx5PXYucmVwbGFjZShDaGUsKEMsSSk9PntsZXQgWj1nW0ldO3JldHVybiBudWxsPT1aJiYoaC5wdXNoKGZ1bmN0aW9uIHZQZShkKXtyZXR1cm4gbmV3IGVuKDMwMDMsITEpfSgpKSxaPSIiKSxaLnRvU3RyaW5nKCl9''@;'; put 'put ''KTtyZXR1cm4geT09dj9kOnl9ZnVuY3Rpb24gSXEoZCl7Y29uc3QgZz1bXTtsZXQgaD1kLm5leHQoKTtmb3IoOyFoLmRvbmU7KWcucHVzaChoLnZhbHVlKSxoPWQubmV4dCgpO3JldHVybiBnfWNvbnN0IHJGZT0vLSsoW2EtejAtOV0pL2c7ZnVuY3Rpb24ga2hlKGQpe3JldHVybiBkLnJlcGxh''@;'; put 'put ''Y2UockZlLCguLi5nKT0+Z1sxXS50b1VwcGVyQ2FzZSgpKX1mdW5jdGlvbiBpRmUoZCl7cmV0dXJuIGQucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywiJDEtJDIiKS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIHA0KGQsZyxoKXtzd2l0Y2goZy50eXBlKXtjYXNlIDc6cmV0dXJuIGQudmlzaXRU''@;'; put 'put ''cmlnZ2VyKGcsaCk7Y2FzZSAwOnJldHVybiBkLnZpc2l0U3RhdGUoZyxoKTtjYXNlIDE6cmV0dXJuIGQudmlzaXRUcmFuc2l0aW9uKGcsaCk7Y2FzZSAyOnJldHVybiBkLnZpc2l0U2VxdWVuY2UoZyxoKTtjYXNlIDM6cmV0dXJuIGQudmlzaXRHcm91cChnLGgpO2Nhc2UgNDpyZXR1cm4gZC52''@;'; put 'put ''aXNpdEFuaW1hdGUoZyxoKTtjYXNlIDU6cmV0dXJuIGQudmlzaXRLZXlmcmFtZXMoZyxoKTtjYXNlIDY6cmV0dXJuIGQudmlzaXRTdHlsZShnLGgpO2Nhc2UgODpyZXR1cm4gZC52aXNpdFJlZmVyZW5jZShnLGgpO2Nhc2UgOTpyZXR1cm4gZC52aXNpdEFuaW1hdGVDaGlsZChnLGgpO2Nhc2Ug''@;'; put 'put ''MTA6cmV0dXJuIGQudmlzaXRBbmltYXRlUmVmKGcsaCk7Y2FzZSAxMTpyZXR1cm4gZC52aXNpdFF1ZXJ5KGcsaCk7Y2FzZSAxMjpyZXR1cm4gZC52aXNpdFN0YWdnZXIoZyxoKTtkZWZhdWx0OnRocm93IGZ1bmN0aW9uIEFQZShkKXtyZXR1cm4gbmV3IGVuKDMwMDQsITEpfSgpfX1mdW5jdGlv''@;'; put 'put ''biBBd2UoZCxnKXtyZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZClbZ119ZnVuY3Rpb24gY0ZlKGQsZyl7Y29uc3QgaD1bXTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGQ/ZC5zcGxpdCgvXHMqLFxzKi8pLmZvckVhY2godj0+ZnVuY3Rpb24gZkZlKGQsZyxoKXtpZigiOiI9PWRbMF0p''@;'; put 'put ''e2NvbnN0IHVlPWZ1bmN0aW9uIGhGZShkLGcpe3N3aXRjaChkKXtjYXNlIjplbnRlciI6cmV0dXJuInZvaWQgPT4gKiI7Y2FzZSI6bGVhdmUiOnJldHVybiIqID0+IHZvaWQiO2Nhc2UiOmluY3JlbWVudCI6cmV0dXJuKGgsdik9PnBhcnNlRmxvYXQodik+cGFyc2VGbG9hdChoKTtjYXNlIjpk''@;'; put 'put ''ZWNyZW1lbnQiOnJldHVybihoLHYpPT5wYXJzZUZsb2F0KHYpPHBhcnNlRmxvYXQoaCk7ZGVmYXVsdDpyZXR1cm4gZy5wdXNoKGZ1bmN0aW9uIExQZShkKXtyZXR1cm4gbmV3IGVuKDMwMTYsITEpfSgpKSwiKiA9PiAqIn19KGQsaCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHVlKXJldHVybiB2''@;'; put 'put ''b2lkIGcucHVzaCh1ZSk7ZD11ZX1jb25zdCB2PWQubWF0Y2goL14oXCp8Wy1cd10rKVxzKig8P1s9LV0+KVxzKihcKnxbLVx3XSspJC8pO2lmKG51bGw9PXZ8fHYubGVuZ3RoPDQpcmV0dXJuIGgucHVzaChmdW5jdGlvbiBEUGUoZCl7cmV0dXJuIG5ldyBlbigzMDE1LCExKX0oKSksZztjb25z''@;'; put 'put ''dCB5PXZbMV0sQz12WzJdLEk9dlszXTtnLnB1c2goeXdlKHksSSkpOyI8Ij09Q1swXSYmISgiKiI9PXkmJiIqIj09SSkmJmcucHVzaCh5d2UoSSx5KSl9KHYsaCxnKSk6aC5wdXNoKGQpLGh9Y29uc3QgUnE9bmV3IFNldChbInRydWUiLCIxIl0pLEJxPW5ldyBTZXQoWyJmYWxzZSIsIjAiXSk7''@;'; put 'put ''ZnVuY3Rpb24geXdlKGQsZyl7Y29uc3QgaD1ScS5oYXMoZCl8fEJxLmhhcyhkKSx2PVJxLmhhcyhnKXx8QnEuaGFzKGcpO3JldHVybih5LEMpPT57bGV0IEk9IioiPT1kfHxkPT15LFo9IioiPT1nfHxnPT1DO3JldHVybiFJJiZoJiYiYm9vbGVhbiI9PXR5cGVvZiB5JiYoST15P1JxLmhhcyhk''@;'; put 'put ''KTpCcS5oYXMoZCkpLCFaJiZ2JiYiYm9vbGVhbiI9PXR5cGVvZiBDJiYoWj1DP1JxLmhhcyhnKTpCcS5oYXMoZykpLEkmJlp9fWNvbnN0IGRGZT1uZXcgUmVnRXhwKCJzKjpzZWxmcyosPyIsImciKTtmdW5jdGlvbiBTaGUoZCxnLGgsdil7cmV0dXJuIG5ldyBwRmUoZCkuYnVpbGQoZyxoLHYp''@;'; put 'put ''fWNsYXNzIHBGZXtjb25zdHJ1Y3RvcihnKXt0aGlzLl9kcml2ZXI9Z31idWlsZChnLGgsdil7Y29uc3QgeT1uZXcgdkZlKGgpO3JldHVybiB0aGlzLl9yZXNldENvbnRleHRTdHlsZVRpbWluZ1N0YXRlKHkpLHA0KHRoaXMsQ1ooZykseSl9X3Jlc2V0Q29udGV4dFN0eWxlVGltaW5nU3RhdGUo''@;'; put 'put ''Zyl7Zy5jdXJyZW50UXVlcnlTZWxlY3Rvcj0iIixnLmNvbGxlY3RlZFN0eWxlcz1uZXcgTWFwLGcuY29sbGVjdGVkU3R5bGVzLnNldCgiIixuZXcgTWFwKSxnLmN1cnJlbnRUaW1lPTB9dmlzaXRUcmlnZ2VyKGcsaCl7bGV0IHY9aC5xdWVyeUNvdW50PTAseT1oLmRlcENvdW50PTA7Y29uc3Qg''@;'; put 'put ''Qz1bXSxJPVtdO3JldHVybiJAIj09Zy5uYW1lLmNoYXJBdCgwKSYmaC5lcnJvcnMucHVzaChmdW5jdGlvbiB3UGUoKXtyZXR1cm4gbmV3IGVuKDMwMDYsITEpfSgpKSxnLmRlZmluaXRpb25zLmZvckVhY2goWj0+e2lmKHRoaXMuX3Jlc2V0Q29udGV4dFN0eWxlVGltaW5nU3RhdGUoaCksMD09''@;'; put 'put ''Wi50eXBlKXtjb25zdCB1ZT1aLF9lPXVlLm5hbWU7X2UudG9TdHJpbmcoKS5zcGxpdCgvXHMqLFxzKi8pLmZvckVhY2goQmU9Pnt1ZS5uYW1lPUJlLEMucHVzaCh0aGlzLnZpc2l0U3RhdGUodWUsaCkpfSksdWUubmFtZT1fZX1lbHNlIGlmKDE9PVoudHlwZSl7Y29uc3QgdWU9dGhpcy52aXNp''@;'; put 'put ''dFRyYW5zaXRpb24oWixoKTt2Kz11ZS5xdWVyeUNvdW50LHkrPXVlLmRlcENvdW50LEkucHVzaCh1ZSl9ZWxzZSBoLmVycm9ycy5wdXNoKGZ1bmN0aW9uIGJQZSgpe3JldHVybiBuZXcgZW4oMzAwNywhMSl9KCkpfSkse3R5cGU6NyxuYW1lOmcubmFtZSxzdGF0ZXM6Qyx0cmFuc2l0aW9uczpJ''@;'; put 'put ''LHF1ZXJ5Q291bnQ6dixkZXBDb3VudDp5LG9wdGlvbnM6bnVsbH19dmlzaXRTdGF0ZShnLGgpe2NvbnN0IHY9dGhpcy52aXNpdFN0eWxlKGcuc3R5bGVzLGgpLHk9Zy5vcHRpb25zJiZnLm9wdGlvbnMucGFyYW1zfHxudWxsO2lmKHYuY29udGFpbnNEeW5hbWljU3R5bGVzKXtjb25zdCBDPW5l''@;'; put 'put ''dyBTZXQsST15fHx7fTt2LnN0eWxlcy5mb3JFYWNoKFo9PntaIGluc3RhbmNlb2YgTWFwJiZaLmZvckVhY2godWU9Pnt2d2UodWUpLmZvckVhY2goX2U9PntJLmhhc093blByb3BlcnR5KF9lKXx8Qy5hZGQoX2UpfSl9KX0pLEMuc2l6ZSYmKElxKEMudmFsdWVzKCkpLGguZXJyb3JzLnB1c2go''@;'; put 'put ''ZnVuY3Rpb24gX1BlKGQsZyl7cmV0dXJuIG5ldyBlbigzMDA4LCExKX0oKSkpfXJldHVybnt0eXBlOjAsbmFtZTpnLm5hbWUsc3R5bGU6dixvcHRpb25zOnk/e3BhcmFtczp5fTpudWxsfX12aXNpdFRyYW5zaXRpb24oZyxoKXtoLnF1ZXJ5Q291bnQ9MCxoLmRlcENvdW50PTA7Y29uc3Qgdj1w''@;'; put 'put ''NCh0aGlzLENaKGcuYW5pbWF0aW9uKSxoKTtyZXR1cm57dHlwZToxLG1hdGNoZXJzOmNGZShnLmV4cHIsaC5lcnJvcnMpLGFuaW1hdGlvbjp2LHF1ZXJ5Q291bnQ6aC5xdWVyeUNvdW50LGRlcENvdW50OmguZGVwQ291bnQsb3B0aW9uczpTUyhnLm9wdGlvbnMpfX12aXNpdFNlcXVlbmNlKGcs''@;'; put 'put ''aCl7cmV0dXJue3R5cGU6MixzdGVwczpnLnN0ZXBzLm1hcCh2PT5wNCh0aGlzLHYsaCkpLG9wdGlvbnM6U1MoZy5vcHRpb25zKX19dmlzaXRHcm91cChnLGgpe2NvbnN0IHY9aC5jdXJyZW50VGltZTtsZXQgeT0wO2NvbnN0IEM9Zy5zdGVwcy5tYXAoST0+e2guY3VycmVudFRpbWU9djtjb25z''@;'; put 'put ''dCBaPXA0KHRoaXMsSSxoKTtyZXR1cm4geT1NYXRoLm1heCh5LGguY3VycmVudFRpbWUpLFp9KTtyZXR1cm4gaC5jdXJyZW50VGltZT15LHt0eXBlOjMsc3RlcHM6QyxvcHRpb25zOlNTKGcub3B0aW9ucyl9fXZpc2l0QW5pbWF0ZShnLGgpe2NvbnN0IHY9ZnVuY3Rpb24geUZlKGQsZyl7aWYo''@;'; put 'put ''ZC5oYXNPd25Qcm9wZXJ0eSgiZHVyYXRpb24iKSlyZXR1cm4gZDtpZigibnVtYmVyIj09dHlwZW9mIGQpcmV0dXJuIE1oZSh4cShkLGcpLmR1cmF0aW9uLDAsIiIpO2NvbnN0IGg9ZDtpZihoLnNwbGl0KC9ccysvKS5zb21lKEM9PiJ7Ij09Qy5jaGFyQXQoMCkmJiJ7Ij09Qy5jaGFyQXQoMSkp''@;'; put 'put ''KXtjb25zdCBDPU1oZSgwLDAsIiIpO3JldHVybiBDLmR5bmFtaWM9ITAsQy5zdHJWYWx1ZT1oLEN9Y29uc3QgeT14cShoLGcpO3JldHVybiBNaGUoeS5kdXJhdGlvbix5LmRlbGF5LHkuZWFzaW5nKX0oZy50aW1pbmdzLGguZXJyb3JzKTtoLmN1cnJlbnRBbmltYXRlVGltaW5ncz12O2xldCB5''@;'; put 'put ''LEM9Zy5zdHlsZXM/Zy5zdHlsZXM6eWwoe30pO2lmKDU9PUMudHlwZSl5PXRoaXMudmlzaXRLZXlmcmFtZXMoQyxoKTtlbHNle2xldCBJPWcuc3R5bGVzLFo9ITE7aWYoIUkpe1o9ITA7Y29uc3QgX2U9e307di5lYXNpbmcmJihfZS5lYXNpbmc9di5lYXNpbmcpLEk9eWwoX2UpfWguY3VycmVu''@;'; put 'put ''dFRpbWUrPXYuZHVyYXRpb24rdi5kZWxheTtjb25zdCB1ZT10aGlzLnZpc2l0U3R5bGUoSSxoKTt1ZS5pc0VtcHR5U3RlcD1aLHk9dWV9cmV0dXJuIGguY3VycmVudEFuaW1hdGVUaW1pbmdzPW51bGwse3R5cGU6NCx0aW1pbmdzOnYsc3R5bGU6eSxvcHRpb25zOm51bGx9fXZpc2l0U3R5bGUo''@;'; put 'put ''ZyxoKXtjb25zdCB2PXRoaXMuX21ha2VTdHlsZUFzdChnLGgpO3JldHVybiB0aGlzLl92YWxpZGF0ZVN0eWxlQXN0KHYsaCksdn1fbWFrZVN0eWxlQXN0KGcsaCl7Y29uc3Qgdj1bXSx5PUFycmF5LmlzQXJyYXkoZy5zdHlsZXMpP2cuc3R5bGVzOltnLnN0eWxlc107Zm9yKGxldCBaIG9mIHkp''@;'; put 'put ''InN0cmluZyI9PXR5cGVvZiBaP1o9PT1uOD92LnB1c2goWik6aC5lcnJvcnMucHVzaChuZXcgZW4oMzAwMiwhMSkpOnYucHVzaChkd2UoWikpO2xldCBDPSExLEk9bnVsbDtyZXR1cm4gdi5mb3JFYWNoKFo9PntpZihaIGluc3RhbmNlb2YgTWFwJiYoWi5oYXMoImVhc2luZyIpJiYoST1aLmdl''@;'; put 'put ''dCgiZWFzaW5nIiksWi5kZWxldGUoImVhc2luZyIpKSwhQykpZm9yKGxldCB1ZSBvZiBaLnZhbHVlcygpKWlmKHVlLnRvU3RyaW5nKCkuaW5kZXhPZigie3siKT49MCl7Qz0hMDticmVha319KSx7dHlwZTo2LHN0eWxlczp2LGVhc2luZzpJLG9mZnNldDpnLm9mZnNldCxjb250YWluc0R5bmFt''@;'; put 'put ''aWNTdHlsZXM6QyxvcHRpb25zOm51bGx9fV92YWxpZGF0ZVN0eWxlQXN0KGcsaCl7Y29uc3Qgdj1oLmN1cnJlbnRBbmltYXRlVGltaW5ncztsZXQgeT1oLmN1cnJlbnRUaW1lLEM9aC5jdXJyZW50VGltZTt2JiZDPjAmJihDLT12LmR1cmF0aW9uK3YuZGVsYXkpLGcuc3R5bGVzLmZvckVhY2go''@;'; put 'put ''ST0+eyJzdHJpbmciIT10eXBlb2YgSSYmSS5mb3JFYWNoKChaLHVlKT0+e2NvbnN0IF9lPWguY29sbGVjdGVkU3R5bGVzLmdldChoLmN1cnJlbnRRdWVyeVNlbGVjdG9yKSxCZT1fZS5nZXQodWUpO2xldCBOZT0hMDtCZSYmKEMhPXkmJkM+PUJlLnN0YXJ0VGltZSYmeTw9QmUuZW5kVGltZSYm''@;'; put 'put ''KGguZXJyb3JzLnB1c2goZnVuY3Rpb24ga1BlKGQsZyxoLHYseSl7cmV0dXJuIG5ldyBlbigzMDEwLCExKX0oKSksTmU9ITEpLEM9QmUuc3RhcnRUaW1lKSxOZSYmX2Uuc2V0KHVlLHtzdGFydFRpbWU6QyxlbmRUaW1lOnl9KSxoLm9wdGlvbnMmJmZ1bmN0aW9uIG5GZShkLGcsaCl7Y29uc3Qg''@;'; put 'put ''dj1nLnBhcmFtc3x8e30seT12d2UoZCk7eS5sZW5ndGgmJnkuZm9yRWFjaChDPT57di5oYXNPd25Qcm9wZXJ0eShDKXx8aC5wdXNoKGZ1bmN0aW9uIG1QZShkKXtyZXR1cm4gbmV3IGVuKDMwMDEsITEpfSgpKX0pfShaLGgub3B0aW9ucyxoLmVycm9ycyl9KX0pfXZpc2l0S2V5ZnJhbWVzKGcs''@;'; put 'put ''aCl7Y29uc3Qgdj17dHlwZTo1LHN0eWxlczpbXSxvcHRpb25zOm51bGx9O2lmKCFoLmN1cnJlbnRBbmltYXRlVGltaW5ncylyZXR1cm4gaC5lcnJvcnMucHVzaChmdW5jdGlvbiBTUGUoKXtyZXR1cm4gbmV3IGVuKDMwMTEsITEpfSgpKSx2O2xldCBDPTA7Y29uc3QgST1bXTtsZXQgWj0hMSx1''@;'; put 'put ''ZT0hMSxfZT0wO2NvbnN0IEJlPWcuc3RlcHMubWFwKExuPT57Y29uc3QgaXI9dGhpcy5fbWFrZVN0eWxlQXN0KExuLGgpO2xldCBtcj1udWxsIT1pci5vZmZzZXQ/aXIub2Zmc2V0OmZ1bmN0aW9uIEFGZShkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIG51bGw7bGV0IGc9bnVsbDtp''@;'; put 'put ''ZihBcnJheS5pc0FycmF5KGQpKWQuZm9yRWFjaChoPT57aWYoaCBpbnN0YW5jZW9mIE1hcCYmaC5oYXMoIm9mZnNldCIpKXtjb25zdCB2PWg7Zz1wYXJzZUZsb2F0KHYuZ2V0KCJvZmZzZXQiKSksdi5kZWxldGUoIm9mZnNldCIpfX0pO2Vsc2UgaWYoZCBpbnN0YW5jZW9mIE1hcCYmZC5oYXMo''@;'; put 'put ''Im9mZnNldCIpKXtjb25zdCBoPWQ7Zz1wYXJzZUZsb2F0KGguZ2V0KCJvZmZzZXQiKSksaC5kZWxldGUoIm9mZnNldCIpfXJldHVybiBnfShpci5zdHlsZXMpLFNyPTA7cmV0dXJuIG51bGwhPW1yJiYoQysrLFNyPWlyLm9mZnNldD1tciksdWU9dWV8fFNyPDB8fFNyPjEsWj1afHxTcjxfZSxf''@;'; put 'put ''ZT1TcixJLnB1c2goU3IpLGlyfSk7dWUmJmguZXJyb3JzLnB1c2goZnVuY3Rpb24gTVBlKCl7cmV0dXJuIG5ldyBlbigzMDEyLCExKX0oKSksWiYmaC5lcnJvcnMucHVzaChmdW5jdGlvbiBFUGUoKXtyZXR1cm4gbmV3IGVuKDMyMDAsITEpfSgpKTtjb25zdCBOZT1nLnN0ZXBzLmxlbmd0aDts''@;'; put 'put ''ZXQgS2U9MDtDPjAmJkM8TmU/aC5lcnJvcnMucHVzaChmdW5jdGlvbiB4UGUoKXtyZXR1cm4gbmV3IGVuKDMyMDIsITEpfSgpKTowPT1DJiYoS2U9MS8oTmUtMSkpO2NvbnN0IHB0PU5lLTEsT3Q9aC5jdXJyZW50VGltZSwkdD1oLmN1cnJlbnRBbmltYXRlVGltaW5ncyxmbj0kdC5kdXJhdGlv''@;'; put 'put ''bjtyZXR1cm4gQmUuZm9yRWFjaCgoTG4saXIpPT57Y29uc3QgbXI9S2U+MD9pcj09cHQ/MTpLZSppcjpJW2lyXSxTcj1tcipmbjtoLmN1cnJlbnRUaW1lPU90KyR0LmRlbGF5K1NyLCR0LmR1cmF0aW9uPVNyLHRoaXMuX3ZhbGlkYXRlU3R5bGVBc3QoTG4saCksTG4ub2Zmc2V0PW1yLHYuc3R5''@;'; put 'put ''bGVzLnB1c2goTG4pfSksdn12aXNpdFJlZmVyZW5jZShnLGgpe3JldHVybnt0eXBlOjgsYW5pbWF0aW9uOnA0KHRoaXMsQ1ooZy5hbmltYXRpb24pLGgpLG9wdGlvbnM6U1MoZy5vcHRpb25zKX19dmlzaXRBbmltYXRlQ2hpbGQoZyxoKXtyZXR1cm4gaC5kZXBDb3VudCsrLHt0eXBlOjksb3B0''@;'; put 'put ''aW9uczpTUyhnLm9wdGlvbnMpfX12aXNpdEFuaW1hdGVSZWYoZyxoKXtyZXR1cm57dHlwZToxMCxhbmltYXRpb246dGhpcy52aXNpdFJlZmVyZW5jZShnLmFuaW1hdGlvbixoKSxvcHRpb25zOlNTKGcub3B0aW9ucyl9fXZpc2l0UXVlcnkoZyxoKXtjb25zdCB2PWguY3VycmVudFF1ZXJ5U2Vs''@;'; put 'put ''ZWN0b3IseT1nLm9wdGlvbnN8fHt9O2gucXVlcnlDb3VudCsrLGguY3VycmVudFF1ZXJ5PWc7Y29uc3RbQyxJXT1mdW5jdGlvbiBnRmUoZCl7Y29uc3QgZz0hIWQuc3BsaXQoL1xzKixccyovKS5maW5kKGg9PiI6c2VsZiI9PWgpO3JldHVybiBnJiYoZD1kLnJlcGxhY2UoZEZlLCIiKSksZD1k''@;'; put 'put ''LnJlcGxhY2UoL0BcKi9nLEVxKS5yZXBsYWNlKC9AXHcrL2csaD0+RXErIi0iK2guc2xpY2UoMSkpLnJlcGxhY2UoLzphbmltYXRpbmcvZyxiaGUpLFtkLGddfShnLnNlbGVjdG9yKTtoLmN1cnJlbnRRdWVyeVNlbGVjdG9yPXYubGVuZ3RoP3YrIiAiK0M6QyxkNChoLmNvbGxlY3RlZFN0eWxl''@;'; put 'put ''cyxoLmN1cnJlbnRRdWVyeVNlbGVjdG9yLG5ldyBNYXApO2NvbnN0IFo9cDQodGhpcyxDWihnLmFuaW1hdGlvbiksaCk7cmV0dXJuIGguY3VycmVudFF1ZXJ5PW51bGwsaC5jdXJyZW50UXVlcnlTZWxlY3Rvcj12LHt0eXBlOjExLHNlbGVjdG9yOkMsbGltaXQ6eS5saW1pdHx8MCxvcHRpb25h''@;'; put 'put ''bDohIXkub3B0aW9uYWwsaW5jbHVkZVNlbGY6SSxhbmltYXRpb246WixvcmlnaW5hbFNlbGVjdG9yOmcuc2VsZWN0b3Isb3B0aW9uczpTUyhnLm9wdGlvbnMpfX12aXNpdFN0YWdnZXIoZyxoKXtoLmN1cnJlbnRRdWVyeXx8aC5lcnJvcnMucHVzaChmdW5jdGlvbiBUUGUoKXtyZXR1cm4gbmV3''@;'; put 'put ''IGVuKDMwMTMsITEpfSgpKTtjb25zdCB2PSJmdWxsIj09PWcudGltaW5ncz97ZHVyYXRpb246MCxkZWxheTowLGVhc2luZzoiZnVsbCJ9OnhxKGcudGltaW5ncyxoLmVycm9ycywhMCk7cmV0dXJue3R5cGU6MTIsYW5pbWF0aW9uOnA0KHRoaXMsQ1ooZy5hbmltYXRpb24pLGgpLHRpbWluZ3M6''@;'; put 'put ''dixvcHRpb25zOm51bGx9fX1jbGFzcyB2RmV7Y29uc3RydWN0b3IoZyl7dGhpcy5lcnJvcnM9Zyx0aGlzLnF1ZXJ5Q291bnQ9MCx0aGlzLmRlcENvdW50PTAsdGhpcy5jdXJyZW50VHJhbnNpdGlvbj1udWxsLHRoaXMuY3VycmVudFF1ZXJ5PW51bGwsdGhpcy5jdXJyZW50UXVlcnlTZWxlY3Rv''@;'; put 'put ''cj1udWxsLHRoaXMuY3VycmVudEFuaW1hdGVUaW1pbmdzPW51bGwsdGhpcy5jdXJyZW50VGltZT0wLHRoaXMuY29sbGVjdGVkU3R5bGVzPW5ldyBNYXAsdGhpcy5vcHRpb25zPW51bGwsdGhpcy51bnN1cHBvcnRlZENTU1Byb3BlcnRpZXNGb3VuZD1uZXcgU2V0fX1mdW5jdGlvbiBTUyhkKXty''@;'; put 'put ''ZXR1cm4gZD8oZD1fWihkKSkucGFyYW1zJiYoZC5wYXJhbXM9ZnVuY3Rpb24gbUZlKGQpe3JldHVybiBkP19aKGQpOm51bGx9KGQucGFyYW1zKSk6ZD17fSxkfWZ1bmN0aW9uIE1oZShkLGcsaCl7cmV0dXJue2R1cmF0aW9uOmQsZGVsYXk6ZyxlYXNpbmc6aH19ZnVuY3Rpb24gRWhlKGQsZyxo''@;'; put 'put ''LHYseSxDLEk9bnVsbCxaPSExKXtyZXR1cm57dHlwZToxLGVsZW1lbnQ6ZCxrZXlmcmFtZXM6ZyxwcmVTdHlsZVByb3BzOmgscG9zdFN0eWxlUHJvcHM6dixkdXJhdGlvbjp5LGRlbGF5OkMsdG90YWxUaW1lOnkrQyxlYXNpbmc6SSxzdWJUaW1lbGluZTpafX1jbGFzcyBQcXtjb25zdHJ1Y3Rv''@;'; put 'put ''cigpe3RoaXMuX21hcD1uZXcgTWFwfWdldChnKXtyZXR1cm4gdGhpcy5fbWFwLmdldChnKXx8W119YXBwZW5kKGcsaCl7bGV0IHY9dGhpcy5fbWFwLmdldChnKTt2fHx0aGlzLl9tYXAuc2V0KGcsdj1bXSksdi5wdXNoKC4uLmgpfWhhcyhnKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhnKX1jbGVh''@;'; put 'put ''cigpe3RoaXMuX21hcC5jbGVhcigpfX1jb25zdCBfRmU9bmV3IFJlZ0V4cCgiOmVudGVyIiwiZyIpLGtGZT1uZXcgUmVnRXhwKCI6bGVhdmUiLCJnIik7ZnVuY3Rpb24geGhlKGQsZyxoLHYseSxDPW5ldyBNYXAsST1uZXcgTWFwLFosdWUsX2U9W10pe3JldHVybihuZXcgU0ZlKS5idWlsZEtl''@;'; put 'put ''eWZyYW1lcyhkLGcsaCx2LHksQyxJLFosdWUsX2UpfWNsYXNzIFNGZXtidWlsZEtleWZyYW1lcyhnLGgsdix5LEMsSSxaLHVlLF9lLEJlPVtdKXtfZT1fZXx8bmV3IFBxO2NvbnN0IE5lPW5ldyBUaGUoZyxoLF9lLHksQyxCZSxbXSk7TmUub3B0aW9ucz11ZTtjb25zdCBLZT11ZS5kZWxheT95''@;'; put 'put ''dyh1ZS5kZWxheSk6MDtOZS5jdXJyZW50VGltZWxpbmUuZGVsYXlOZXh0U3RlcChLZSksTmUuY3VycmVudFRpbWVsaW5lLnNldFN0eWxlcyhbSV0sbnVsbCxOZS5lcnJvcnMsdWUpLHA0KHRoaXMsdixOZSk7Y29uc3QgcHQ9TmUudGltZWxpbmVzLmZpbHRlcihPdD0+T3QuY29udGFpbnNBbmlt''@;'; put 'put ''YXRpb24oKSk7aWYocHQubGVuZ3RoJiZaLnNpemUpe2xldCBPdDtmb3IobGV0ICR0PXB0Lmxlbmd0aC0xOyR0Pj0wOyR0LS0pe2NvbnN0IGZuPXB0WyR0XTtpZihmbi5lbGVtZW50PT09aCl7T3Q9Zm47YnJlYWt9fU90JiYhT3QuYWxsb3dPbmx5VGltZWxpbmVTdHlsZXMoKSYmT3Quc2V0U3R5''@;'; put 'put ''bGVzKFtaXSxudWxsLE5lLmVycm9ycyx1ZSl9cmV0dXJuIHB0Lmxlbmd0aD9wdC5tYXAoT3Q9Pk90LmJ1aWxkS2V5ZnJhbWVzKCkpOltFaGUoaCxbXSxbXSxbXSwwLEtlLCIiLCExKV19dmlzaXRUcmlnZ2VyKGcsaCl7fXZpc2l0U3RhdGUoZyxoKXt9dmlzaXRUcmFuc2l0aW9uKGcsaCl7fXZp''@;'; put 'put ''c2l0QW5pbWF0ZUNoaWxkKGcsaCl7Y29uc3Qgdj1oLnN1Ykluc3RydWN0aW9ucy5nZXQoaC5lbGVtZW50KTtpZih2KXtjb25zdCB5PWguY3JlYXRlU3ViQ29udGV4dChnLm9wdGlvbnMpLEM9aC5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUsST10aGlzLl92aXNpdFN1Ykluc3RydWN0aW9u''@;'; put 'put ''cyh2LHkseS5vcHRpb25zKTtDIT1JJiZoLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZShJKX1oLnByZXZpb3VzTm9kZT1nfXZpc2l0QW5pbWF0ZVJlZihnLGgpe2NvbnN0IHY9aC5jcmVhdGVTdWJDb250ZXh0KGcub3B0aW9ucyk7di50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUoKSx0aGlzLnZp''@;'; put 'put ''c2l0UmVmZXJlbmNlKGcuYW5pbWF0aW9uLHYpLGgudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKHYuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lKSxoLnByZXZpb3VzTm9kZT1nfV92aXNpdFN1Ykluc3RydWN0aW9ucyhnLGgsdil7bGV0IEM9aC5jdXJyZW50VGltZWxpbmUuY3VycmVudFRp''@;'; put 'put ''bWU7Y29uc3QgST1udWxsIT12LmR1cmF0aW9uP3l3KHYuZHVyYXRpb24pOm51bGwsWj1udWxsIT12LmRlbGF5P3l3KHYuZGVsYXkpOm51bGw7cmV0dXJuIDAhPT1JJiZnLmZvckVhY2godWU9Pntjb25zdCBfZT1oLmFwcGVuZEluc3RydWN0aW9uVG9UaW1lbGluZSh1ZSxJLFopO0M9TWF0aC5t''@;'; put 'put ''YXgoQyxfZS5kdXJhdGlvbitfZS5kZWxheSl9KSxDfXZpc2l0UmVmZXJlbmNlKGcsaCl7aC51cGRhdGVPcHRpb25zKGcub3B0aW9ucywhMCkscDQodGhpcyxnLmFuaW1hdGlvbixoKSxoLnByZXZpb3VzTm9kZT1nfXZpc2l0U2VxdWVuY2UoZyxoKXtjb25zdCB2PWguc3ViQ29udGV4dENvdW50''@;'; put 'put ''O2xldCB5PWg7Y29uc3QgQz1nLm9wdGlvbnM7aWYoQyYmKEMucGFyYW1zfHxDLmRlbGF5KSYmKHk9aC5jcmVhdGVTdWJDb250ZXh0KEMpLHkudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKCksbnVsbCE9Qy5kZWxheSkpezY9PXkucHJldmlvdXNOb2RlLnR5cGUmJih5LmN1cnJlbnRUaW1lbGlu''@;'; put 'put ''ZS5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSx5LnByZXZpb3VzTm9kZT1GcSk7Y29uc3QgST15dyhDLmRlbGF5KTt5LmRlbGF5TmV4dFN0ZXAoSSl9Zy5zdGVwcy5sZW5ndGgmJihnLnN0ZXBzLmZvckVhY2goST0+cDQodGhpcyxJLHkpKSx5LmN1cnJlbnRUaW1lbGluZS5hcHBseVN0eWxlc1Rv''@;'; put 'put ''S2V5ZnJhbWUoKSx5LnN1YkNvbnRleHRDb3VudD52JiZ5LnRyYW5zZm9ybUludG9OZXdUaW1lbGluZSgpKSxoLnByZXZpb3VzTm9kZT1nfXZpc2l0R3JvdXAoZyxoKXtjb25zdCB2PVtdO2xldCB5PWguY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lO2NvbnN0IEM9Zy5vcHRpb25zJiZnLm9w''@;'; put 'put ''dGlvbnMuZGVsYXk/eXcoZy5vcHRpb25zLmRlbGF5KTowO2cuc3RlcHMuZm9yRWFjaChJPT57Y29uc3QgWj1oLmNyZWF0ZVN1YkNvbnRleHQoZy5vcHRpb25zKTtDJiZaLmRlbGF5TmV4dFN0ZXAoQykscDQodGhpcyxJLFopLHk9TWF0aC5tYXgoeSxaLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50''@;'; put 'put ''VGltZSksdi5wdXNoKFouY3VycmVudFRpbWVsaW5lKX0pLHYuZm9yRWFjaChJPT5oLmN1cnJlbnRUaW1lbGluZS5tZXJnZVRpbWVsaW5lQ29sbGVjdGVkU3R5bGVzKEkpKSxoLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZSh5KSxoLnByZXZpb3VzTm9kZT1nfV92aXNpdFRpbWluZyhnLGgpe2lm''@;'; put 'put ''KGcuZHluYW1pYyl7Y29uc3Qgdj1nLnN0clZhbHVlO3JldHVybiB4cShoLnBhcmFtcz9UcSh2LGgucGFyYW1zLGguZXJyb3JzKTp2LGguZXJyb3JzKX1yZXR1cm57ZHVyYXRpb246Zy5kdXJhdGlvbixkZWxheTpnLmRlbGF5LGVhc2luZzpnLmVhc2luZ319dmlzaXRBbmltYXRlKGcsaCl7Y29u''@;'; put 'put ''c3Qgdj1oLmN1cnJlbnRBbmltYXRlVGltaW5ncz10aGlzLl92aXNpdFRpbWluZyhnLnRpbWluZ3MsaCkseT1oLmN1cnJlbnRUaW1lbGluZTt2LmRlbGF5JiYoaC5pbmNyZW1lbnRUaW1lKHYuZGVsYXkpLHkuc25hcHNob3RDdXJyZW50U3R5bGVzKCkpO2NvbnN0IEM9Zy5zdHlsZTs1PT1DLnR5''@;'; put 'put ''cGU/dGhpcy52aXNpdEtleWZyYW1lcyhDLGgpOihoLmluY3JlbWVudFRpbWUodi5kdXJhdGlvbiksdGhpcy52aXNpdFN0eWxlKEMsaCkseS5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKSksaC5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bnVsbCxoLnByZXZpb3VzTm9kZT1nfXZpc2l0U3R5bGUoZyxo''@;'; put 'put ''KXtjb25zdCB2PWguY3VycmVudFRpbWVsaW5lLHk9aC5jdXJyZW50QW5pbWF0ZVRpbWluZ3M7IXkmJnYuaGFzQ3VycmVudFN0eWxlUHJvcGVydGllcygpJiZ2LmZvcndhcmRGcmFtZSgpO2NvbnN0IEM9eSYmeS5lYXNpbmd8fGcuZWFzaW5nO2cuaXNFbXB0eVN0ZXA/di5hcHBseUVtcHR5U3Rl''@;'; put 'put ''cChDKTp2LnNldFN0eWxlcyhnLnN0eWxlcyxDLGguZXJyb3JzLGgub3B0aW9ucyksaC5wcmV2aW91c05vZGU9Z312aXNpdEtleWZyYW1lcyhnLGgpe2NvbnN0IHY9aC5jdXJyZW50QW5pbWF0ZVRpbWluZ3MseT1oLmN1cnJlbnRUaW1lbGluZS5kdXJhdGlvbixDPXYuZHVyYXRpb24sWj1oLmNy''@;'; put 'put ''ZWF0ZVN1YkNvbnRleHQoKS5jdXJyZW50VGltZWxpbmU7Wi5lYXNpbmc9di5lYXNpbmcsZy5zdHlsZXMuZm9yRWFjaCh1ZT0+e1ouZm9yd2FyZFRpbWUoKHVlLm9mZnNldHx8MCkqQyksWi5zZXRTdHlsZXModWUuc3R5bGVzLHVlLmVhc2luZyxoLmVycm9ycyxoLm9wdGlvbnMpLFouYXBwbHlT''@;'; put 'put ''dHlsZXNUb0tleWZyYW1lKCl9KSxoLmN1cnJlbnRUaW1lbGluZS5tZXJnZVRpbWVsaW5lQ29sbGVjdGVkU3R5bGVzKFopLGgudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKHkrQyksaC5wcmV2aW91c05vZGU9Z312aXNpdFF1ZXJ5KGcsaCl7Y29uc3Qgdj1oLmN1cnJlbnRUaW1lbGluZS5jdXJy''@;'; put 'put ''ZW50VGltZSx5PWcub3B0aW9uc3x8e30sQz15LmRlbGF5P3l3KHkuZGVsYXkpOjA7QyYmKDY9PT1oLnByZXZpb3VzTm9kZS50eXBlfHwwPT12JiZoLmN1cnJlbnRUaW1lbGluZS5oYXNDdXJyZW50U3R5bGVQcm9wZXJ0aWVzKCkpJiYoaC5jdXJyZW50VGltZWxpbmUuc25hcHNob3RDdXJyZW50''@;'; put 'put ''U3R5bGVzKCksaC5wcmV2aW91c05vZGU9RnEpO2xldCBJPXY7Y29uc3QgWj1oLmludm9rZVF1ZXJ5KGcuc2VsZWN0b3IsZy5vcmlnaW5hbFNlbGVjdG9yLGcubGltaXQsZy5pbmNsdWRlU2VsZiwhIXkub3B0aW9uYWwsaC5lcnJvcnMpO2guY3VycmVudFF1ZXJ5VG90YWw9Wi5sZW5ndGg7bGV0''@;'; put 'put ''IHVlPW51bGw7Wi5mb3JFYWNoKChfZSxCZSk9PntoLmN1cnJlbnRRdWVyeUluZGV4PUJlO2NvbnN0IE5lPWguY3JlYXRlU3ViQ29udGV4dChnLm9wdGlvbnMsX2UpO0MmJk5lLmRlbGF5TmV4dFN0ZXAoQyksX2U9PT1oLmVsZW1lbnQmJih1ZT1OZS5jdXJyZW50VGltZWxpbmUpLHA0KHRoaXMs''@;'; put 'put ''Zy5hbmltYXRpb24sTmUpLE5lLmN1cnJlbnRUaW1lbGluZS5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKSxJPU1hdGgubWF4KEksTmUuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lKX0pLGguY3VycmVudFF1ZXJ5SW5kZXg9MCxoLmN1cnJlbnRRdWVyeVRvdGFsPTAsaC50cmFuc2Zvcm1JbnRv''@;'; put 'put ''TmV3VGltZWxpbmUoSSksdWUmJihoLmN1cnJlbnRUaW1lbGluZS5tZXJnZVRpbWVsaW5lQ29sbGVjdGVkU3R5bGVzKHVlKSxoLmN1cnJlbnRUaW1lbGluZS5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSksaC5wcmV2aW91c05vZGU9Z312aXNpdFN0YWdnZXIoZyxoKXtjb25zdCB2PWgucGFyZW50''@;'; put 'put ''Q29udGV4dCx5PWguY3VycmVudFRpbWVsaW5lLEM9Zy50aW1pbmdzLEk9TWF0aC5hYnMoQy5kdXJhdGlvbiksWj1JKihoLmN1cnJlbnRRdWVyeVRvdGFsLTEpO2xldCB1ZT1JKmguY3VycmVudFF1ZXJ5SW5kZXg7c3dpdGNoKEMuZHVyYXRpb248MD8icmV2ZXJzZSI6Qy5lYXNpbmcpe2Nhc2Ui''@;'; put 'put ''cmV2ZXJzZSI6dWU9Wi11ZTticmVhaztjYXNlImZ1bGwiOnVlPXYuY3VycmVudFN0YWdnZXJUaW1lfWNvbnN0IEJlPWguY3VycmVudFRpbWVsaW5lO3VlJiZCZS5kZWxheU5leHRTdGVwKHVlKTtjb25zdCBOZT1CZS5jdXJyZW50VGltZTtwNCh0aGlzLGcuYW5pbWF0aW9uLGgpLGgucHJldmlv''@;'; put 'put ''dXNOb2RlPWcsdi5jdXJyZW50U3RhZ2dlclRpbWU9eS5jdXJyZW50VGltZS1OZSsoeS5zdGFydFRpbWUtdi5jdXJyZW50VGltZWxpbmUuc3RhcnRUaW1lKX19Y29uc3QgRnE9e307Y2xhc3MgVGhle2NvbnN0cnVjdG9yKGcsaCx2LHksQyxJLFosdWUpe3RoaXMuX2RyaXZlcj1nLHRoaXMuZWxl''@;'; put 'put ''bWVudD1oLHRoaXMuc3ViSW5zdHJ1Y3Rpb25zPXYsdGhpcy5fZW50ZXJDbGFzc05hbWU9eSx0aGlzLl9sZWF2ZUNsYXNzTmFtZT1DLHRoaXMuZXJyb3JzPUksdGhpcy50aW1lbGluZXM9Wix0aGlzLnBhcmVudENvbnRleHQ9bnVsbCx0aGlzLmN1cnJlbnRBbmltYXRlVGltaW5ncz1udWxsLHRo''@;'; put 'put ''aXMucHJldmlvdXNOb2RlPUZxLHRoaXMuc3ViQ29udGV4dENvdW50PTAsdGhpcy5vcHRpb25zPXt9LHRoaXMuY3VycmVudFF1ZXJ5SW5kZXg9MCx0aGlzLmN1cnJlbnRRdWVyeVRvdGFsPTAsdGhpcy5jdXJyZW50U3RhZ2dlclRpbWU9MCx0aGlzLmN1cnJlbnRUaW1lbGluZT11ZXx8bmV3IEhx''@;'; put 'put ''KHRoaXMuX2RyaXZlcixoLDApLFoucHVzaCh0aGlzLmN1cnJlbnRUaW1lbGluZSl9Z2V0IHBhcmFtcygpe3JldHVybiB0aGlzLm9wdGlvbnMucGFyYW1zfXVwZGF0ZU9wdGlvbnMoZyxoKXtpZighZylyZXR1cm47Y29uc3Qgdj1nO2xldCB5PXRoaXMub3B0aW9ucztudWxsIT12LmR1cmF0aW9u''@;'; put 'put ''JiYoeS5kdXJhdGlvbj15dyh2LmR1cmF0aW9uKSksbnVsbCE9di5kZWxheSYmKHkuZGVsYXk9eXcodi5kZWxheSkpO2NvbnN0IEM9di5wYXJhbXM7aWYoQyl7bGV0IEk9eS5wYXJhbXM7SXx8KEk9dGhpcy5vcHRpb25zLnBhcmFtcz17fSksT2JqZWN0LmtleXMoQykuZm9yRWFjaChaPT57KCFo''@;'; put 'put ''fHwhSS5oYXNPd25Qcm9wZXJ0eShaKSkmJihJW1pdPVRxKENbWl0sSSx0aGlzLmVycm9ycykpfSl9fV9jb3B5T3B0aW9ucygpe2NvbnN0IGc9e307aWYodGhpcy5vcHRpb25zKXtjb25zdCBoPXRoaXMub3B0aW9ucy5wYXJhbXM7aWYoaCl7Y29uc3Qgdj1nLnBhcmFtcz17fTtPYmplY3Qua2V5''@;'; put 'put ''cyhoKS5mb3JFYWNoKHk9Pnt2W3ldPWhbeV19KX19cmV0dXJuIGd9Y3JlYXRlU3ViQ29udGV4dChnPW51bGwsaCx2KXtjb25zdCB5PWh8fHRoaXMuZWxlbWVudCxDPW5ldyBUaGUodGhpcy5fZHJpdmVyLHksdGhpcy5zdWJJbnN0cnVjdGlvbnMsdGhpcy5fZW50ZXJDbGFzc05hbWUsdGhpcy5f''@;'; put 'put ''bGVhdmVDbGFzc05hbWUsdGhpcy5lcnJvcnMsdGhpcy50aW1lbGluZXMsdGhpcy5jdXJyZW50VGltZWxpbmUuZm9yayh5LHZ8fDApKTtyZXR1cm4gQy5wcmV2aW91c05vZGU9dGhpcy5wcmV2aW91c05vZGUsQy5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9dGhpcy5jdXJyZW50QW5pbWF0ZVRpbWlu''@;'; put 'put ''Z3MsQy5vcHRpb25zPXRoaXMuX2NvcHlPcHRpb25zKCksQy51cGRhdGVPcHRpb25zKGcpLEMuY3VycmVudFF1ZXJ5SW5kZXg9dGhpcy5jdXJyZW50UXVlcnlJbmRleCxDLmN1cnJlbnRRdWVyeVRvdGFsPXRoaXMuY3VycmVudFF1ZXJ5VG90YWwsQy5wYXJlbnRDb250ZXh0PXRoaXMsdGhpcy5z''@;'; put 'put ''dWJDb250ZXh0Q291bnQrKyxDfXRyYW5zZm9ybUludG9OZXdUaW1lbGluZShnKXtyZXR1cm4gdGhpcy5wcmV2aW91c05vZGU9RnEsdGhpcy5jdXJyZW50VGltZWxpbmU9dGhpcy5jdXJyZW50VGltZWxpbmUuZm9yayh0aGlzLmVsZW1lbnQsZyksdGhpcy50aW1lbGluZXMucHVzaCh0aGlzLmN1''@;'; put 'put ''cnJlbnRUaW1lbGluZSksdGhpcy5jdXJyZW50VGltZWxpbmV9YXBwZW5kSW5zdHJ1Y3Rpb25Ub1RpbWVsaW5lKGcsaCx2KXtjb25zdCB5PXtkdXJhdGlvbjpudWxsIT1oP2g6Zy5kdXJhdGlvbixkZWxheTp0aGlzLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSsobnVsbCE9dj92OjApK2cu''@;'; put 'put ''ZGVsYXksZWFzaW5nOiIifSxDPW5ldyBNRmUodGhpcy5fZHJpdmVyLGcuZWxlbWVudCxnLmtleWZyYW1lcyxnLnByZVN0eWxlUHJvcHMsZy5wb3N0U3R5bGVQcm9wcyx5LGcuc3RyZXRjaFN0YXJ0aW5nS2V5ZnJhbWUpO3JldHVybiB0aGlzLnRpbWVsaW5lcy5wdXNoKEMpLHl9aW5jcmVtZW50''@;'; put 'put ''VGltZShnKXt0aGlzLmN1cnJlbnRUaW1lbGluZS5mb3J3YXJkVGltZSh0aGlzLmN1cnJlbnRUaW1lbGluZS5kdXJhdGlvbitnKX1kZWxheU5leHRTdGVwKGcpe2c+MCYmdGhpcy5jdXJyZW50VGltZWxpbmUuZGVsYXlOZXh0U3RlcChnKX1pbnZva2VRdWVyeShnLGgsdix5LEMsSSl7bGV0IFo9''@;'; put 'put ''W107aWYoeSYmWi5wdXNoKHRoaXMuZWxlbWVudCksZy5sZW5ndGg+MCl7Zz0oZz1nLnJlcGxhY2UoX0ZlLCIuIit0aGlzLl9lbnRlckNsYXNzTmFtZSkpLnJlcGxhY2Uoa0ZlLCIuIit0aGlzLl9sZWF2ZUNsYXNzTmFtZSk7bGV0IF9lPXRoaXMuX2RyaXZlci5xdWVyeSh0aGlzLmVsZW1lbnQs''@;'; put 'put ''ZywxIT12KTswIT09diYmKF9lPXY8MD9fZS5zbGljZShfZS5sZW5ndGgrdixfZS5sZW5ndGgpOl9lLnNsaWNlKDAsdikpLFoucHVzaCguLi5fZSl9cmV0dXJuIUMmJjA9PVoubGVuZ3RoJiZJLnB1c2goZnVuY3Rpb24gSVBlKGQpe3JldHVybiBuZXcgZW4oMzAxNCwhMSl9KCkpLFp9fWNsYXNz''@;'; put 'put ''IEhxe2NvbnN0cnVjdG9yKGcsaCx2LHkpe3RoaXMuX2RyaXZlcj1nLHRoaXMuZWxlbWVudD1oLHRoaXMuc3RhcnRUaW1lPXYsdGhpcy5fZWxlbWVudFRpbWVsaW5lU3R5bGVzTG9va3VwPXksdGhpcy5kdXJhdGlvbj0wLHRoaXMuX3ByZXZpb3VzS2V5ZnJhbWU9bmV3IE1hcCx0aGlzLl9jdXJy''@;'; put 'put ''ZW50S2V5ZnJhbWU9bmV3IE1hcCx0aGlzLl9rZXlmcmFtZXM9bmV3IE1hcCx0aGlzLl9zdHlsZVN1bW1hcnk9bmV3IE1hcCx0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzPW5ldyBNYXAsdGhpcy5fcGVuZGluZ1N0eWxlcz1uZXcgTWFwLHRoaXMuX2JhY2tGaWxsPW5ldyBNYXAsdGhpcy5fY3Vy''@;'; put 'put ''cmVudEVtcHR5U3RlcEtleWZyYW1lPW51bGwsdGhpcy5fZWxlbWVudFRpbWVsaW5lU3R5bGVzTG9va3VwfHwodGhpcy5fZWxlbWVudFRpbWVsaW5lU3R5bGVzTG9va3VwPW5ldyBNYXApLHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzPXRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1''@;'; put 'put ''cC5nZXQoaCksdGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXN8fCh0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcz10aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzLHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cC5zZXQoaCx0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzKSksdGhpcy5f''@;'; put 'put ''bG9hZEtleWZyYW1lKCl9Y29udGFpbnNBbmltYXRpb24oKXtzd2l0Y2godGhpcy5fa2V5ZnJhbWVzLnNpemUpe2Nhc2UgMDpyZXR1cm4hMTtjYXNlIDE6cmV0dXJuIHRoaXMuaGFzQ3VycmVudFN0eWxlUHJvcGVydGllcygpO2RlZmF1bHQ6cmV0dXJuITB9fWhhc0N1cnJlbnRTdHlsZVByb3Bl''@;'; put 'put ''cnRpZXMoKXtyZXR1cm4gdGhpcy5fY3VycmVudEtleWZyYW1lLnNpemU+MH1nZXQgY3VycmVudFRpbWUoKXtyZXR1cm4gdGhpcy5zdGFydFRpbWUrdGhpcy5kdXJhdGlvbn1kZWxheU5leHRTdGVwKGcpe2NvbnN0IGg9MT09PXRoaXMuX2tleWZyYW1lcy5zaXplJiZ0aGlzLl9wZW5kaW5nU3R5''@;'; put 'put ''bGVzLnNpemU7dGhpcy5kdXJhdGlvbnx8aD8odGhpcy5mb3J3YXJkVGltZSh0aGlzLmN1cnJlbnRUaW1lK2cpLGgmJnRoaXMuc25hcHNob3RDdXJyZW50U3R5bGVzKCkpOnRoaXMuc3RhcnRUaW1lKz1nfWZvcmsoZyxoKXtyZXR1cm4gdGhpcy5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKSxuZXcg''@;'; put 'put ''SHEodGhpcy5fZHJpdmVyLGcsaHx8dGhpcy5jdXJyZW50VGltZSx0aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXApfV9sb2FkS2V5ZnJhbWUoKXt0aGlzLl9jdXJyZW50S2V5ZnJhbWUmJih0aGlzLl9wcmV2aW91c0tleWZyYW1lPXRoaXMuX2N1cnJlbnRLZXlmcmFtZSksdGhpcy5f''@;'; put 'put ''Y3VycmVudEtleWZyYW1lPXRoaXMuX2tleWZyYW1lcy5nZXQodGhpcy5kdXJhdGlvbiksdGhpcy5fY3VycmVudEtleWZyYW1lfHwodGhpcy5fY3VycmVudEtleWZyYW1lPW5ldyBNYXAsdGhpcy5fa2V5ZnJhbWVzLnNldCh0aGlzLmR1cmF0aW9uLHRoaXMuX2N1cnJlbnRLZXlmcmFtZSkpfWZv''@;'; put 'put ''cndhcmRGcmFtZSgpe3RoaXMuZHVyYXRpb24rPTEsdGhpcy5fbG9hZEtleWZyYW1lKCl9Zm9yd2FyZFRpbWUoZyl7dGhpcy5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKSx0aGlzLmR1cmF0aW9uPWcsdGhpcy5fbG9hZEtleWZyYW1lKCl9X3VwZGF0ZVN0eWxlKGcsaCl7dGhpcy5fbG9jYWxUaW1l''@;'; put 'put ''bGluZVN0eWxlcy5zZXQoZyxoKSx0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcy5zZXQoZyxoKSx0aGlzLl9zdHlsZVN1bW1hcnkuc2V0KGcse3RpbWU6dGhpcy5jdXJyZW50VGltZSx2YWx1ZTpofSl9YWxsb3dPbmx5VGltZWxpbmVTdHlsZXMoKXtyZXR1cm4gdGhpcy5fY3VycmVudEVtcHR5''@;'; put 'put ''U3RlcEtleWZyYW1lIT09dGhpcy5fY3VycmVudEtleWZyYW1lfWFwcGx5RW1wdHlTdGVwKGcpe2cmJnRoaXMuX3ByZXZpb3VzS2V5ZnJhbWUuc2V0KCJlYXNpbmciLGcpO2ZvcihsZXRbaCx2XW9mIHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzKXRoaXMuX2JhY2tGaWxsLnNldChoLHZ8fG44''@;'; put 'put ''KSx0aGlzLl9jdXJyZW50S2V5ZnJhbWUuc2V0KGgsbjgpO3RoaXMuX2N1cnJlbnRFbXB0eVN0ZXBLZXlmcmFtZT10aGlzLl9jdXJyZW50S2V5ZnJhbWV9c2V0U3R5bGVzKGcsaCx2LHkpe3ZhciBDO2gmJnRoaXMuX3ByZXZpb3VzS2V5ZnJhbWUuc2V0KCJlYXNpbmciLGgpO2NvbnN0IEk9eSYm''@;'; put 'put ''eS5wYXJhbXN8fHt9LFo9ZnVuY3Rpb24gRUZlKGQsZyl7Y29uc3QgaD1uZXcgTWFwO2xldCB2O3JldHVybiBkLmZvckVhY2goeT0+e2lmKCIqIj09PXkpe3Y9dnx8Zy5rZXlzKCk7Zm9yKGxldCBDIG9mIHYpaC5zZXQoQyxuOCl9ZWxzZSB3dyh5LGgpfSksaH0oZyx0aGlzLl9nbG9iYWxUaW1l''@;'; put 'put ''bGluZVN0eWxlcyk7Zm9yKGxldFt1ZSxfZV1vZiBaKXtjb25zdCBCZT1UcShfZSxJLHYpO3RoaXMuX3BlbmRpbmdTdHlsZXMuc2V0KHVlLEJlKSx0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzLmhhcyh1ZSl8fHRoaXMuX2JhY2tGaWxsLnNldCh1ZSxudWxsIT09KEM9dGhpcy5fZ2xvYmFsVGlt''@;'; put 'put ''ZWxpbmVTdHlsZXMuZ2V0KHVlKSkmJnZvaWQgMCE9PUM/QzpuOCksdGhpcy5fdXBkYXRlU3R5bGUodWUsQmUpfX1hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKXswIT10aGlzLl9wZW5kaW5nU3R5bGVzLnNpemUmJih0aGlzLl9wZW5kaW5nU3R5bGVzLmZvckVhY2goKGcsaCk9Pnt0aGlzLl9jdXJy''@;'; put 'put ''ZW50S2V5ZnJhbWUuc2V0KGgsZyl9KSx0aGlzLl9wZW5kaW5nU3R5bGVzLmNsZWFyKCksdGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcy5mb3JFYWNoKChnLGgpPT57dGhpcy5fY3VycmVudEtleWZyYW1lLmhhcyhoKXx8dGhpcy5fY3VycmVudEtleWZyYW1lLnNldChoLGcpfSkpfXNuYXBzaG90''@;'; put 'put ''Q3VycmVudFN0eWxlcygpe2ZvcihsZXRbZyxoXW9mIHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMpdGhpcy5fcGVuZGluZ1N0eWxlcy5zZXQoZyxoKSx0aGlzLl91cGRhdGVTdHlsZShnLGgpfWdldEZpbmFsS2V5ZnJhbWUoKXtyZXR1cm4gdGhpcy5fa2V5ZnJhbWVzLmdldCh0aGlzLmR1cmF0''@;'; put 'put ''aW9uKX1nZXQgcHJvcGVydGllcygpe2NvbnN0IGc9W107Zm9yKGxldCBoIGluIHRoaXMuX2N1cnJlbnRLZXlmcmFtZSlnLnB1c2goaCk7cmV0dXJuIGd9bWVyZ2VUaW1lbGluZUNvbGxlY3RlZFN0eWxlcyhnKXtnLl9zdHlsZVN1bW1hcnkuZm9yRWFjaCgoaCx2KT0+e2NvbnN0IHk9dGhpcy5f''@;'; put 'put ''c3R5bGVTdW1tYXJ5LmdldCh2KTsoIXl8fGgudGltZT55LnRpbWUpJiZ0aGlzLl91cGRhdGVTdHlsZSh2LGgudmFsdWUpfSl9YnVpbGRLZXlmcmFtZXMoKXt0aGlzLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpO2NvbnN0IGc9bmV3IFNldCxoPW5ldyBTZXQsdj0xPT09dGhpcy5fa2V5ZnJhbWVz''@;'; put 'put ''LnNpemUmJjA9PT10aGlzLmR1cmF0aW9uO2xldCB5PVtdO3RoaXMuX2tleWZyYW1lcy5mb3JFYWNoKChaLHVlKT0+e2NvbnN0IF9lPXd3KFosbmV3IE1hcCx0aGlzLl9iYWNrRmlsbCk7X2UuZm9yRWFjaCgoQmUsTmUpPT57IiEiPT09QmU/Zy5hZGQoTmUpOkJlPT09bjgmJmguYWRkKE5lKX0p''@;'; put 'put ''LHZ8fF9lLnNldCgib2Zmc2V0Iix1ZS90aGlzLmR1cmF0aW9uKSx5LnB1c2goX2UpfSk7Y29uc3QgQz1nLnNpemU/SXEoZy52YWx1ZXMoKSk6W10sST1oLnNpemU/SXEoaC52YWx1ZXMoKSk6W107aWYodil7Y29uc3QgWj15WzBdLHVlPW5ldyBNYXAoWik7Wi5zZXQoIm9mZnNldCIsMCksdWUu''@;'; put 'put ''c2V0KCJvZmZzZXQiLDEpLHk9W1osdWVdfXJldHVybiBFaGUodGhpcy5lbGVtZW50LHksQyxJLHRoaXMuZHVyYXRpb24sdGhpcy5zdGFydFRpbWUsdGhpcy5lYXNpbmcsITEpfX1jbGFzcyBNRmUgZXh0ZW5kcyBIcXtjb25zdHJ1Y3RvcihnLGgsdix5LEMsSSxaPSExKXtzdXBlcihnLGgsSS5k''@;'; put 'put ''ZWxheSksdGhpcy5rZXlmcmFtZXM9dix0aGlzLnByZVN0eWxlUHJvcHM9eSx0aGlzLnBvc3RTdHlsZVByb3BzPUMsdGhpcy5fc3RyZXRjaFN0YXJ0aW5nS2V5ZnJhbWU9Wix0aGlzLnRpbWluZ3M9e2R1cmF0aW9uOkkuZHVyYXRpb24sZGVsYXk6SS5kZWxheSxlYXNpbmc6SS5lYXNpbmd9fWNv''@;'; put 'put ''bnRhaW5zQW5pbWF0aW9uKCl7cmV0dXJuIHRoaXMua2V5ZnJhbWVzLmxlbmd0aD4xfWJ1aWxkS2V5ZnJhbWVzKCl7bGV0IGc9dGhpcy5rZXlmcmFtZXMse2RlbGF5OmgsZHVyYXRpb246dixlYXNpbmc6eX09dGhpcy50aW1pbmdzO2lmKHRoaXMuX3N0cmV0Y2hTdGFydGluZ0tleWZyYW1lJiZo''@;'; put 'put ''KXtjb25zdCBDPVtdLEk9ditoLFo9aC9JLHVlPXd3KGdbMF0pO3VlLnNldCgib2Zmc2V0IiwwKSxDLnB1c2godWUpO2NvbnN0IF9lPXd3KGdbMF0pO19lLnNldCgib2Zmc2V0Iixfd2UoWikpLEMucHVzaChfZSk7Y29uc3QgQmU9Zy5sZW5ndGgtMTtmb3IobGV0IE5lPTE7TmU8PUJlO05lKysp''@;'; put 'put ''e2xldCBLZT13dyhnW05lXSk7Y29uc3QgcHQ9S2UuZ2V0KCJvZmZzZXQiKTtLZS5zZXQoIm9mZnNldCIsX3dlKChoK3B0KnYpL0kpKSxDLnB1c2goS2UpfXY9SSxoPTAseT0iIixnPUN9cmV0dXJuIEVoZSh0aGlzLmVsZW1lbnQsZyx0aGlzLnByZVN0eWxlUHJvcHMsdGhpcy5wb3N0U3R5bGVQ''@;'; put 'put ''cm9wcyx2LGgseSwhMCl9fWZ1bmN0aW9uIF93ZShkLGc9Myl7Y29uc3QgaD1NYXRoLnBvdygxMCxnLTEpO3JldHVybiBNYXRoLnJvdW5kKGQqaCkvaH1jbGFzcyBJaGV7fWNvbnN0IHhGZT1uZXcgU2V0KFsid2lkdGgiLCJoZWlnaHQiLCJtaW5XaWR0aCIsIm1pbkhlaWdodCIsIm1heFdpZHRo''@;'; put 'put ''IiwibWF4SGVpZ2h0IiwibGVmdCIsInRvcCIsImJvdHRvbSIsInJpZ2h0IiwiZm9udFNpemUiLCJvdXRsaW5lV2lkdGgiLCJvdXRsaW5lT2Zmc2V0IiwicGFkZGluZ1RvcCIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ0JvdHRvbSIsInBhZGRpbmdSaWdodCIsIm1hcmdpblRvcCIsIm1hcmdpbkxl''@;'; put 'put ''ZnQiLCJtYXJnaW5Cb3R0b20iLCJtYXJnaW5SaWdodCIsImJvcmRlclJhZGl1cyIsImJvcmRlcldpZHRoIiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJMZWZ0V2lkdGgiLCJib3JkZXJSaWdodFdpZHRoIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJ0ZXh0SW5kZW50IiwicGVyc3BlY3RpdmUiXSk7''@;'; put 'put ''Y2xhc3MgVEZlIGV4dGVuZHMgSWhle25vcm1hbGl6ZVByb3BlcnR5TmFtZShnLGgpe3JldHVybiBraGUoZyl9bm9ybWFsaXplU3R5bGVWYWx1ZShnLGgsdix5KXtsZXQgQz0iIjtjb25zdCBJPXYudG9TdHJpbmcoKS50cmltKCk7aWYoeEZlLmhhcyhoKSYmMCE9PXYmJiIwIiE9PXYpaWYoIm51''@;'; put 'put ''bWJlciI9PXR5cGVvZiB2KUM9InB4IjtlbHNle2NvbnN0IFo9di5tYXRjaCgvXlsrLV0/W1xkXC5dKyhbYS16XSopJC8pO1omJjA9PVpbMV0ubGVuZ3RoJiZ5LnB1c2goZnVuY3Rpb24geVBlKGQsZyl7cmV0dXJuIG5ldyBlbigzMDA1LCExKX0oKSl9cmV0dXJuIEkrQ319ZnVuY3Rpb24gQ3dl''@;'; put 'put ''KGQsZyxoLHYseSxDLEksWix1ZSxfZSxCZSxOZSxLZSl7cmV0dXJue3R5cGU6MCxlbGVtZW50OmQsdHJpZ2dlck5hbWU6Zyxpc1JlbW92YWxUcmFuc2l0aW9uOnksZnJvbVN0YXRlOmgsZnJvbVN0eWxlczpDLHRvU3RhdGU6dix0b1N0eWxlczpJLHRpbWVsaW5lczpaLHF1ZXJpZWRFbGVtZW50''@;'; put 'put ''czp1ZSxwcmVTdHlsZVByb3BzOl9lLHBvc3RTdHlsZVByb3BzOkJlLHRvdGFsVGltZTpOZSxlcnJvcnM6S2V9fWNvbnN0IERoZT17fTtjbGFzcyBrd2V7Y29uc3RydWN0b3IoZyxoLHYpe3RoaXMuX3RyaWdnZXJOYW1lPWcsdGhpcy5hc3Q9aCx0aGlzLl9zdGF0ZVN0eWxlcz12fW1hdGNoKGcs''@;'; put 'put ''aCx2LHkpe3JldHVybiBmdW5jdGlvbiBJRmUoZCxnLGgsdix5KXtyZXR1cm4gZC5zb21lKEM9PkMoZyxoLHYseSkpfSh0aGlzLmFzdC5tYXRjaGVycyxnLGgsdix5KX1idWlsZFN0eWxlcyhnLGgsdil7bGV0IHk9dGhpcy5fc3RhdGVTdHlsZXMuZ2V0KCIqIik7cmV0dXJuIHZvaWQgMCE9PWcm''@;'; put 'put ''Jih5PXRoaXMuX3N0YXRlU3R5bGVzLmdldChudWxsPT1nP3ZvaWQgMDpnLnRvU3RyaW5nKCkpfHx5KSx5P3kuYnVpbGRTdHlsZXMoaCx2KTpuZXcgTWFwfWJ1aWxkKGcsaCx2LHksQyxJLFosdWUsX2UsQmUpe3ZhciBOZTtjb25zdCBLZT1bXSxwdD10aGlzLmFzdC5vcHRpb25zJiZ0aGlzLmFz''@;'; put 'put ''dC5vcHRpb25zLnBhcmFtc3x8RGhlLCR0PXRoaXMuYnVpbGRTdHlsZXModixaJiZaLnBhcmFtc3x8RGhlLEtlKSxmbj11ZSYmdWUucGFyYW1zfHxEaGUsTG49dGhpcy5idWlsZFN0eWxlcyh5LGZuLEtlKSxpcj1uZXcgU2V0LG1yPW5ldyBNYXAsU3I9bmV3IE1hcCx3cj0idm9pZCI9PT15LFFy''@;'; put 'put ''PXtwYXJhbXM6REZlKGZuLHB0KSxkZWxheTpudWxsPT09KE5lPXRoaXMuYXN0Lm9wdGlvbnMpfHx2b2lkIDA9PT1OZT92b2lkIDA6TmUuZGVsYXl9LHlpPUJlP1tdOnhoZShnLGgsdGhpcy5hc3QuYW5pbWF0aW9uLEMsSSwkdCxMbixRcixfZSxLZSk7bGV0IEtpPTA7aWYoeWkuZm9yRWFjaChQ''@;'; put 'put ''bz0+e0tpPU1hdGgubWF4KFBvLmR1cmF0aW9uK1BvLmRlbGF5LEtpKX0pLEtlLmxlbmd0aClyZXR1cm4gQ3dlKGgsdGhpcy5fdHJpZ2dlck5hbWUsdix5LHdyLCR0LExuLFtdLFtdLG1yLFNyLEtpLEtlKTt5aS5mb3JFYWNoKFBvPT57Y29uc3QgU2E9UG8uZWxlbWVudCxKYT1kNChtcixTYSxu''@;'; put 'put ''ZXcgU2V0KTtQby5wcmVTdHlsZVByb3BzLmZvckVhY2goYWw9PkphLmFkZChhbCkpO2NvbnN0IGxhPWQ0KFNyLFNhLG5ldyBTZXQpO1BvLnBvc3RTdHlsZVByb3BzLmZvckVhY2goYWw9PmxhLmFkZChhbCkpLFNhIT09aCYmaXIuYWRkKFNhKX0pO2NvbnN0IFNvPUlxKGlyLnZhbHVlcygpKTty''@;'; put 'put ''ZXR1cm4gQ3dlKGgsdGhpcy5fdHJpZ2dlck5hbWUsdix5LHdyLCR0LExuLHlpLFNvLG1yLFNyLEtpKX19ZnVuY3Rpb24gREZlKGQsZyl7Y29uc3QgaD1fWihnKTtmb3IoY29uc3QgdiBpbiBkKWQuaGFzT3duUHJvcGVydHkodikmJm51bGwhPWRbdl0mJihoW3ZdPWRbdl0pO3JldHVybiBofWNs''@;'; put 'put ''YXNzIExGZXtjb25zdHJ1Y3RvcihnLGgsdil7dGhpcy5zdHlsZXM9Zyx0aGlzLmRlZmF1bHRQYXJhbXM9aCx0aGlzLm5vcm1hbGl6ZXI9dn1idWlsZFN0eWxlcyhnLGgpe2NvbnN0IHY9bmV3IE1hcCx5PV9aKHRoaXMuZGVmYXVsdFBhcmFtcyk7cmV0dXJuIE9iamVjdC5rZXlzKGcpLmZvckVh''@;'; put 'put ''Y2goQz0+e2NvbnN0IEk9Z1tDXTtudWxsIT09SSYmKHlbQ109SSl9KSx0aGlzLnN0eWxlcy5zdHlsZXMuZm9yRWFjaChDPT57InN0cmluZyIhPXR5cGVvZiBDJiZDLmZvckVhY2goKEksWik9PntJJiYoST1UcShJLHksaCkpO2NvbnN0IHVlPXRoaXMubm9ybWFsaXplci5ub3JtYWxpemVQcm9w''@;'; put 'put ''ZXJ0eU5hbWUoWixoKTtJPXRoaXMubm9ybWFsaXplci5ub3JtYWxpemVTdHlsZVZhbHVlKFosdWUsSSxoKSx2LnNldCh1ZSxJKX0pfSksdn19Y2xhc3MgUkZle2NvbnN0cnVjdG9yKGcsaCx2KXt0aGlzLm5hbWU9Zyx0aGlzLmFzdD1oLHRoaXMuX25vcm1hbGl6ZXI9dix0aGlzLnRyYW5zaXRp''@;'; put 'put ''b25GYWN0b3JpZXM9W10sdGhpcy5zdGF0ZXM9bmV3IE1hcCxoLnN0YXRlcy5mb3JFYWNoKHk9Pnt0aGlzLnN0YXRlcy5zZXQoeS5uYW1lLG5ldyBMRmUoeS5zdHlsZSx5Lm9wdGlvbnMmJnkub3B0aW9ucy5wYXJhbXN8fHt9LHYpKX0pLFN3ZSh0aGlzLnN0YXRlcywidHJ1ZSIsIjEiKSxTd2Uo''@;'; put 'put ''dGhpcy5zdGF0ZXMsImZhbHNlIiwiMCIpLGgudHJhbnNpdGlvbnMuZm9yRWFjaCh5PT57dGhpcy50cmFuc2l0aW9uRmFjdG9yaWVzLnB1c2gobmV3IGt3ZShnLHksdGhpcy5zdGF0ZXMpKX0pLHRoaXMuZmFsbGJhY2tUcmFuc2l0aW9uPWZ1bmN0aW9uIEJGZShkLGcsaCl7cmV0dXJuIG5ldyBr''@;'; put 'put ''d2UoZCx7dHlwZToxLGFuaW1hdGlvbjp7dHlwZToyLHN0ZXBzOltdLG9wdGlvbnM6bnVsbH0sbWF0Y2hlcnM6WyhJLFopPT4hMF0sb3B0aW9uczpudWxsLHF1ZXJ5Q291bnQ6MCxkZXBDb3VudDowfSxnKX0oZyx0aGlzLnN0YXRlcyl9Z2V0IGNvbnRhaW5zUXVlcmllcygpe3JldHVybiB0aGlz''@;'; put 'put ''LmFzdC5xdWVyeUNvdW50PjB9bWF0Y2hUcmFuc2l0aW9uKGcsaCx2LHkpe3JldHVybiB0aGlzLnRyYW5zaXRpb25GYWN0b3JpZXMuZmluZChJPT5JLm1hdGNoKGcsaCx2LHkpKXx8bnVsbH1tYXRjaFN0eWxlcyhnLGgsdil7cmV0dXJuIHRoaXMuZmFsbGJhY2tUcmFuc2l0aW9uLmJ1aWxkU3R5''@;'; put 'put ''bGVzKGcsaCx2KX19ZnVuY3Rpb24gU3dlKGQsZyxoKXtkLmhhcyhnKT9kLmhhcyhoKXx8ZC5zZXQoaCxkLmdldChnKSk6ZC5oYXMoaCkmJmQuc2V0KGcsZC5nZXQoaCkpfWNvbnN0IFBGZT1uZXcgUHE7Y2xhc3MgRkZle2NvbnN0cnVjdG9yKGcsaCx2KXt0aGlzLmJvZHlOb2RlPWcsdGhpcy5f''@;'; put 'put ''ZHJpdmVyPWgsdGhpcy5fbm9ybWFsaXplcj12LHRoaXMuX2FuaW1hdGlvbnM9bmV3IE1hcCx0aGlzLl9wbGF5ZXJzQnlJZD1uZXcgTWFwLHRoaXMucGxheWVycz1bXX1yZWdpc3RlcihnLGgpe2NvbnN0IHY9W10sQz1TaGUodGhpcy5fZHJpdmVyLGgsdixbXSk7aWYodi5sZW5ndGgpdGhyb3cg''@;'; put 'put ''ZnVuY3Rpb24gRlBlKGQpe3JldHVybiBuZXcgZW4oMzUwMywhMSl9KCk7dGhpcy5fYW5pbWF0aW9ucy5zZXQoZyxDKX1fYnVpbGRQbGF5ZXIoZyxoLHYpe2NvbnN0IHk9Zy5lbGVtZW50LEM9cndlKDAsdGhpcy5fbm9ybWFsaXplciwwLGcua2V5ZnJhbWVzLGgsdik7cmV0dXJuIHRoaXMuX2Ry''@;'; put 'put ''aXZlci5hbmltYXRlKHksQyxnLmR1cmF0aW9uLGcuZGVsYXksZy5lYXNpbmcsW10sITApfWNyZWF0ZShnLGgsdj17fSl7Y29uc3QgeT1bXSxDPXRoaXMuX2FuaW1hdGlvbnMuZ2V0KGcpO2xldCBJO2NvbnN0IFo9bmV3IE1hcDtpZihDPyhJPXhoZSh0aGlzLl9kcml2ZXIsaCxDLCJuZy1lbnRl''@;'; put 'put ''ciIsU3EsbmV3IE1hcCxuZXcgTWFwLHYsUEZlLHkpLEkuZm9yRWFjaChCZT0+e2NvbnN0IE5lPWQ0KFosQmUuZWxlbWVudCxuZXcgTWFwKTtCZS5wb3N0U3R5bGVQcm9wcy5mb3JFYWNoKEtlPT5OZS5zZXQoS2UsbnVsbCkpfSkpOih5LnB1c2goZnVuY3Rpb24gSFBlKCl7cmV0dXJuIG5ldyBl''@;'; put 'put ''bigzMzAwLCExKX0oKSksST1bXSkseS5sZW5ndGgpdGhyb3cgZnVuY3Rpb24gTlBlKGQpe3JldHVybiBuZXcgZW4oMzUwNCwhMSl9KCk7Wi5mb3JFYWNoKChCZSxOZSk9PntCZS5mb3JFYWNoKChLZSxwdCk9PntCZS5zZXQocHQsdGhpcy5fZHJpdmVyLmNvbXB1dGVTdHlsZShOZSxwdCxuOCkp''@;'; put 'put ''fSl9KTtjb25zdCBfZT1BdyhJLm1hcChCZT0+e2NvbnN0IE5lPVouZ2V0KEJlLmVsZW1lbnQpO3JldHVybiB0aGlzLl9idWlsZFBsYXllcihCZSxuZXcgTWFwLE5lKX0pKTtyZXR1cm4gdGhpcy5fcGxheWVyc0J5SWQuc2V0KGcsX2UpLF9lLm9uRGVzdHJveSgoKT0+dGhpcy5kZXN0cm95KGcp''@;'; put 'put ''KSx0aGlzLnBsYXllcnMucHVzaChfZSksX2V9ZGVzdHJveShnKXtjb25zdCBoPXRoaXMuX2dldFBsYXllcihnKTtoLmRlc3Ryb3koKSx0aGlzLl9wbGF5ZXJzQnlJZC5kZWxldGUoZyk7Y29uc3Qgdj10aGlzLnBsYXllcnMuaW5kZXhPZihoKTt2Pj0wJiZ0aGlzLnBsYXllcnMuc3BsaWNlKHYs''@;'; put 'put ''MSl9X2dldFBsYXllcihnKXtjb25zdCBoPXRoaXMuX3BsYXllcnNCeUlkLmdldChnKTtpZighaCl0aHJvdyBmdW5jdGlvbiBWUGUoZCl7cmV0dXJuIG5ldyBlbigzMzAxLCExKX0oKTtyZXR1cm4gaH1saXN0ZW4oZyxoLHYseSl7Y29uc3QgQz1taGUoaCwiIiwiIiwiIik7cmV0dXJuIHBoZSh0''@;'; put 'put ''aGlzLl9nZXRQbGF5ZXIoZyksdixDLHkpLCgpPT57fX1jb21tYW5kKGcsaCx2LHkpe2lmKCJyZWdpc3RlciI9PXYpcmV0dXJuIHZvaWQgdGhpcy5yZWdpc3RlcihnLHlbMF0pO2lmKCJjcmVhdGUiPT12KXJldHVybiB2b2lkIHRoaXMuY3JlYXRlKGcsaCx5WzBdfHx7fSk7Y29uc3QgQz10aGlz''@;'; put 'put ''Ll9nZXRQbGF5ZXIoZyk7c3dpdGNoKHYpe2Nhc2UicGxheSI6Qy5wbGF5KCk7YnJlYWs7Y2FzZSJwYXVzZSI6Qy5wYXVzZSgpO2JyZWFrO2Nhc2UicmVzZXQiOkMucmVzZXQoKTticmVhaztjYXNlInJlc3RhcnQiOkMucmVzdGFydCgpO2JyZWFrO2Nhc2UiZmluaXNoIjpDLmZpbmlzaCgpO2Jy''@;'; put 'put ''ZWFrO2Nhc2UiaW5pdCI6Qy5pbml0KCk7YnJlYWs7Y2FzZSJzZXRQb3NpdGlvbiI6Qy5zZXRQb3NpdGlvbihwYXJzZUZsb2F0KHlbMF0pKTticmVhaztjYXNlImRlc3Ryb3kiOnRoaXMuZGVzdHJveShnKX19fWNvbnN0IE13ZT0ibmctYW5pbWF0ZS1xdWV1ZWQiLExoZT0ibmctYW5pbWF0ZS1k''@;'; put 'put ''aXNhYmxlZCIsWkZlPVtdLEV3ZT17bmFtZXNwYWNlSWQ6IiIsc2V0Rm9yUmVtb3ZhbDohMSxzZXRGb3JNb3ZlOiExLGhhc0FuaW1hdGlvbjohMSxyZW1vdmVkQmVmb3JlUXVlcmllZDohMX0sekZlPXtuYW1lc3BhY2VJZDoiIixzZXRGb3JNb3ZlOiExLHNldEZvclJlbW92YWw6ITEsaGFzQW5p''@;'; put 'put ''bWF0aW9uOiExLHJlbW92ZWRCZWZvcmVRdWVyaWVkOiEwfSxUcD0iX19uZ19yZW1vdmVkIjtjbGFzcyBPaGV7Y29uc3RydWN0b3IoZyxoPSIiKXt0aGlzLm5hbWVzcGFjZUlkPWg7Y29uc3Qgdj1nJiZnLmhhc093blByb3BlcnR5KCJ2YWx1ZSIpO2lmKHRoaXMudmFsdWU9ZnVuY3Rpb24gVUZl''@;'; put 'put ''KGQpe3JldHVybiBudWxsIT1kP2Q6bnVsbH0odj9nLnZhbHVlOmcpLHYpe2NvbnN0IEM9X1ooZyk7ZGVsZXRlIEMudmFsdWUsdGhpcy5vcHRpb25zPUN9ZWxzZSB0aGlzLm9wdGlvbnM9e307dGhpcy5vcHRpb25zLnBhcmFtc3x8KHRoaXMub3B0aW9ucy5wYXJhbXM9e30pfWdldCBwYXJhbXMo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5vcHRpb25zLnBhcmFtc31hYnNvcmJPcHRpb25zKGcpe2NvbnN0IGg9Zy5wYXJhbXM7aWYoaCl7Y29uc3Qgdj10aGlzLm9wdGlvbnMucGFyYW1zO09iamVjdC5rZXlzKGgpLmZvckVhY2goeT0+e251bGw9PXZbeV0mJih2W3ldPWhbeV0pfSl9fX1jb25zdCBrWj0idm9p''@;'; put 'put ''ZCIsUmhlPW5ldyBPaGUoa1opO2NsYXNzIEdGZXtjb25zdHJ1Y3RvcihnLGgsdil7dGhpcy5pZD1nLHRoaXMuaG9zdEVsZW1lbnQ9aCx0aGlzLl9lbmdpbmU9dix0aGlzLnBsYXllcnM9W10sdGhpcy5fdHJpZ2dlcnM9bmV3IE1hcCx0aGlzLl9xdWV1ZT1bXSx0aGlzLl9lbGVtZW50TGlzdGVu''@;'; put 'put ''ZXJzPW5ldyBNYXAsdGhpcy5faG9zdENsYXNzTmFtZT0ibmctdG5zLSIrZyxJcChoLHRoaXMuX2hvc3RDbGFzc05hbWUpfWxpc3RlbihnLGgsdix5KXtpZighdGhpcy5fdHJpZ2dlcnMuaGFzKGgpKXRocm93IGZ1bmN0aW9uIGpQZShkLGcpe3JldHVybiBuZXcgZW4oMzMwMiwhMSl9KCk7aWYo''@;'; put 'put ''bnVsbD09dnx8MD09di5sZW5ndGgpdGhyb3cgZnVuY3Rpb24gWlBlKGQpe3JldHVybiBuZXcgZW4oMzMwMywhMSl9KCk7aWYoIWZ1bmN0aW9uIFFGZShkKXtyZXR1cm4ic3RhcnQiPT1kfHwiZG9uZSI9PWR9KHYpKXRocm93IGZ1bmN0aW9uIHpQZShkLGcpe3JldHVybiBuZXcgZW4oMzQwMCwh''@;'; put 'put ''MSl9KCk7Y29uc3QgQz1kNCh0aGlzLl9lbGVtZW50TGlzdGVuZXJzLGcsW10pLEk9e25hbWU6aCxwaGFzZTp2LGNhbGxiYWNrOnl9O0MucHVzaChJKTtjb25zdCBaPWQ0KHRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQsZyxuZXcgTWFwKTtyZXR1cm4gWi5oYXMoaCl8fChJcChnLE1xKSxJ''@;'; put 'put ''cChnLE1xKyItIitoKSxaLnNldChoLFJoZSkpLCgpPT57dGhpcy5fZW5naW5lLmFmdGVyRmx1c2goKCk9Pntjb25zdCB1ZT1DLmluZGV4T2YoSSk7dWU+PTAmJkMuc3BsaWNlKHVlLDEpLHRoaXMuX3RyaWdnZXJzLmhhcyhoKXx8Wi5kZWxldGUoaCl9KX19cmVnaXN0ZXIoZyxoKXtyZXR1cm4h''@;'; put 'put ''dGhpcy5fdHJpZ2dlcnMuaGFzKGcpJiYodGhpcy5fdHJpZ2dlcnMuc2V0KGcsaCksITApfV9nZXRUcmlnZ2VyKGcpe2NvbnN0IGg9dGhpcy5fdHJpZ2dlcnMuZ2V0KGcpO2lmKCFoKXRocm93IGZ1bmN0aW9uIEdQZShkKXtyZXR1cm4gbmV3IGVuKDM0MDEsITEpfSgpO3JldHVybiBofXRyaWdn''@;'; put 'put ''ZXIoZyxoLHYseT0hMCl7Y29uc3QgQz10aGlzLl9nZXRUcmlnZ2VyKGgpLEk9bmV3IEJoZSh0aGlzLmlkLGgsZyk7bGV0IFo9dGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudC5nZXQoZyk7Wnx8KElwKGcsTXEpLElwKGcsTXErIi0iK2gpLHRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQu''@;'; put 'put ''c2V0KGcsWj1uZXcgTWFwKSk7bGV0IHVlPVouZ2V0KGgpO2NvbnN0IF9lPW5ldyBPaGUodix0aGlzLmlkKTtpZighKHYmJnYuaGFzT3duUHJvcGVydHkoInZhbHVlIikpJiZ1ZSYmX2UuYWJzb3JiT3B0aW9ucyh1ZS5vcHRpb25zKSxaLnNldChoLF9lKSx1ZXx8KHVlPVJoZSksX2UudmFsdWUh''@;'; put 'put ''PT1rWiYmdWUudmFsdWU9PT1fZS52YWx1ZSl7aWYoIWZ1bmN0aW9uIEtGZShkLGcpe2NvbnN0IGg9T2JqZWN0LmtleXMoZCksdj1PYmplY3Qua2V5cyhnKTtpZihoLmxlbmd0aCE9di5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCB5PTA7eTxoLmxlbmd0aDt5Kyspe2NvbnN0IEM9aFt5XTtpZigh''@;'; put 'put ''Zy5oYXNPd25Qcm9wZXJ0eShDKXx8ZFtDXSE9PWdbQ10pcmV0dXJuITF9cmV0dXJuITB9KHVlLnBhcmFtcyxfZS5wYXJhbXMpKXtjb25zdCAkdD1bXSxmbj1DLm1hdGNoU3R5bGVzKHVlLnZhbHVlLHVlLnBhcmFtcywkdCksTG49Qy5tYXRjaFN0eWxlcyhfZS52YWx1ZSxfZS5wYXJhbXMsJHQp''@;'; put 'put ''OyR0Lmxlbmd0aD90aGlzLl9lbmdpbmUucmVwb3J0RXJyb3IoJHQpOnRoaXMuX2VuZ2luZS5hZnRlckZsdXNoKCgpPT57a1MoZyxmbiksQ2coZyxMbil9KX1yZXR1cm59Y29uc3QgS2U9ZDQodGhpcy5fZW5naW5lLnBsYXllcnNCeUVsZW1lbnQsZyxbXSk7S2UuZm9yRWFjaCgkdD0+eyR0Lm5h''@;'; put 'put ''bWVzcGFjZUlkPT10aGlzLmlkJiYkdC50cmlnZ2VyTmFtZT09aCYmJHQucXVldWVkJiYkdC5kZXN0cm95KCl9KTtsZXQgcHQ9Qy5tYXRjaFRyYW5zaXRpb24odWUudmFsdWUsX2UudmFsdWUsZyxfZS5wYXJhbXMpLE90PSExO2lmKCFwdCl7aWYoIXkpcmV0dXJuO3B0PUMuZmFsbGJhY2tUcmFu''@;'; put 'put ''c2l0aW9uLE90PSEwfXJldHVybiB0aGlzLl9lbmdpbmUudG90YWxRdWV1ZWRQbGF5ZXJzKyssdGhpcy5fcXVldWUucHVzaCh7ZWxlbWVudDpnLHRyaWdnZXJOYW1lOmgsdHJhbnNpdGlvbjpwdCxmcm9tU3RhdGU6dWUsdG9TdGF0ZTpfZSxwbGF5ZXI6SSxpc0ZhbGxiYWNrVHJhbnNpdGlvbjpP''@;'; put 'put ''dH0pLE90fHwoSXAoZyxNd2UpLEkub25TdGFydCgoKT0+e3JPKGcsTXdlKX0pKSxJLm9uRG9uZSgoKT0+e2xldCAkdD10aGlzLnBsYXllcnMuaW5kZXhPZihJKTskdD49MCYmdGhpcy5wbGF5ZXJzLnNwbGljZSgkdCwxKTtjb25zdCBmbj10aGlzLl9lbmdpbmUucGxheWVyc0J5RWxlbWVudC5n''@;'; put 'put ''ZXQoZyk7aWYoZm4pe2xldCBMbj1mbi5pbmRleE9mKEkpO0xuPj0wJiZmbi5zcGxpY2UoTG4sMSl9fSksdGhpcy5wbGF5ZXJzLnB1c2goSSksS2UucHVzaChJKSxJfWRlcmVnaXN0ZXIoZyl7dGhpcy5fdHJpZ2dlcnMuZGVsZXRlKGcpLHRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQuZm9y''@;'; put 'put ''RWFjaChoPT5oLmRlbGV0ZShnKSksdGhpcy5fZWxlbWVudExpc3RlbmVycy5mb3JFYWNoKChoLHYpPT57dGhpcy5fZWxlbWVudExpc3RlbmVycy5zZXQodixoLmZpbHRlcih5PT55Lm5hbWUhPWcpKX0pfWNsZWFyRWxlbWVudENhY2hlKGcpe3RoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQu''@;'; put 'put ''ZGVsZXRlKGcpLHRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMuZGVsZXRlKGcpO2NvbnN0IGg9dGhpcy5fZW5naW5lLnBsYXllcnNCeUVsZW1lbnQuZ2V0KGcpO2gmJihoLmZvckVhY2godj0+di5kZXN0cm95KCkpLHRoaXMuX2VuZ2luZS5wbGF5ZXJzQnlFbGVtZW50LmRlbGV0ZShnKSl9X3NpZ25h''@;'; put 'put ''bFJlbW92YWxGb3JJbm5lclRyaWdnZXJzKGcsaCl7Y29uc3Qgdj10aGlzLl9lbmdpbmUuZHJpdmVyLnF1ZXJ5KGcsRXEsITApO3YuZm9yRWFjaCh5PT57aWYoeVtUcF0pcmV0dXJuO2NvbnN0IEM9dGhpcy5fZW5naW5lLmZldGNoTmFtZXNwYWNlc0J5RWxlbWVudCh5KTtDLnNpemU/Qy5mb3JF''@;'; put 'put ''YWNoKEk9PkkudHJpZ2dlckxlYXZlQW5pbWF0aW9uKHksaCwhMSwhMCkpOnRoaXMuY2xlYXJFbGVtZW50Q2FjaGUoeSl9KSx0aGlzLl9lbmdpbmUuYWZ0ZXJGbHVzaEFuaW1hdGlvbnNEb25lKCgpPT52LmZvckVhY2goeT0+dGhpcy5jbGVhckVsZW1lbnRDYWNoZSh5KSkpfXRyaWdnZXJMZWF2''@;'; put 'put ''ZUFuaW1hdGlvbihnLGgsdix5KXtjb25zdCBDPXRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQuZ2V0KGcpLEk9bmV3IE1hcDtpZihDKXtjb25zdCBaPVtdO2lmKEMuZm9yRWFjaCgodWUsX2UpPT57aWYoSS5zZXQoX2UsdWUudmFsdWUpLHRoaXMuX3RyaWdnZXJzLmhhcyhfZSkpe2NvbnN0''@;'; put 'put ''IEJlPXRoaXMudHJpZ2dlcihnLF9lLGtaLHkpO0JlJiZaLnB1c2goQmUpfX0pLFoubGVuZ3RoKXJldHVybiB0aGlzLl9lbmdpbmUubWFya0VsZW1lbnRBc1JlbW92ZWQodGhpcy5pZCxnLCEwLGgsSSksdiYmQXcoWikub25Eb25lKCgpPT50aGlzLl9lbmdpbmUucHJvY2Vzc0xlYXZlTm9kZShn''@;'; put 'put ''KSksITB9cmV0dXJuITF9cHJlcGFyZUxlYXZlQW5pbWF0aW9uTGlzdGVuZXJzKGcpe2NvbnN0IGg9dGhpcy5fZWxlbWVudExpc3RlbmVycy5nZXQoZyksdj10aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmdldChnKTtpZihoJiZ2KXtjb25zdCB5PW5ldyBTZXQ7aC5mb3JFYWNoKEM9Pntj''@;'; put 'put ''b25zdCBJPUMubmFtZTtpZih5LmhhcyhJKSlyZXR1cm47eS5hZGQoSSk7Y29uc3QgdWU9dGhpcy5fdHJpZ2dlcnMuZ2V0KEkpLmZhbGxiYWNrVHJhbnNpdGlvbixfZT12LmdldChJKXx8UmhlLEJlPW5ldyBPaGUoa1opLE5lPW5ldyBCaGUodGhpcy5pZCxJLGcpO3RoaXMuX2VuZ2luZS50b3Rh''@;'; put 'put ''bFF1ZXVlZFBsYXllcnMrKyx0aGlzLl9xdWV1ZS5wdXNoKHtlbGVtZW50OmcsdHJpZ2dlck5hbWU6SSx0cmFuc2l0aW9uOnVlLGZyb21TdGF0ZTpfZSx0b1N0YXRlOkJlLHBsYXllcjpOZSxpc0ZhbGxiYWNrVHJhbnNpdGlvbjohMH0pfSl9fXJlbW92ZU5vZGUoZyxoKXtjb25zdCB2PXRoaXMu''@;'; put 'put ''X2VuZ2luZTtpZihnLmNoaWxkRWxlbWVudENvdW50JiZ0aGlzLl9zaWduYWxSZW1vdmFsRm9ySW5uZXJUcmlnZ2VycyhnLGgpLHRoaXMudHJpZ2dlckxlYXZlQW5pbWF0aW9uKGcsaCwhMCkpcmV0dXJuO2xldCB5PSExO2lmKHYudG90YWxBbmltYXRpb25zKXtjb25zdCBDPXYucGxheWVycy5s''@;'; put 'put ''ZW5ndGg/di5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudC5nZXQoZyk6W107aWYoQyYmQy5sZW5ndGgpeT0hMDtlbHNle2xldCBJPWc7Zm9yKDtJPUkucGFyZW50Tm9kZTspaWYodi5zdGF0ZXNCeUVsZW1lbnQuZ2V0KEkpKXt5PSEwO2JyZWFrfX19aWYodGhpcy5wcmVwYXJlTGVhdmVBbmltYXRp''@;'; put 'put ''b25MaXN0ZW5lcnMoZykseSl2Lm1hcmtFbGVtZW50QXNSZW1vdmVkKHRoaXMuaWQsZywhMSxoKTtlbHNle2NvbnN0IEM9Z1tUcF07KCFDfHxDPT09RXdlKSYmKHYuYWZ0ZXJGbHVzaCgoKT0+dGhpcy5jbGVhckVsZW1lbnRDYWNoZShnKSksdi5kZXN0cm95SW5uZXJBbmltYXRpb25zKGcpLHYu''@;'; put 'put ''X29uUmVtb3ZhbENvbXBsZXRlKGcsaCkpfX1pbnNlcnROb2RlKGcsaCl7SXAoZyx0aGlzLl9ob3N0Q2xhc3NOYW1lKX1kcmFpblF1ZXVlZFRyYW5zaXRpb25zKGcpe2NvbnN0IGg9W107cmV0dXJuIHRoaXMuX3F1ZXVlLmZvckVhY2godj0+e2NvbnN0IHk9di5wbGF5ZXI7aWYoeS5kZXN0cm95''@;'; put 'put ''ZWQpcmV0dXJuO2NvbnN0IEM9di5lbGVtZW50LEk9dGhpcy5fZWxlbWVudExpc3RlbmVycy5nZXQoQyk7SSYmSS5mb3JFYWNoKFo9PntpZihaLm5hbWU9PXYudHJpZ2dlck5hbWUpe2NvbnN0IHVlPW1oZShDLHYudHJpZ2dlck5hbWUsdi5mcm9tU3RhdGUudmFsdWUsdi50b1N0YXRlLnZhbHVl''@;'; put 'put ''KTt1ZS5fZGF0YT1nLHBoZSh2LnBsYXllcixaLnBoYXNlLHVlLFouY2FsbGJhY2spfX0pLHkubWFya2VkRm9yRGVzdHJveT90aGlzLl9lbmdpbmUuYWZ0ZXJGbHVzaCgoKT0+e3kuZGVzdHJveSgpfSk6aC5wdXNoKHYpfSksdGhpcy5fcXVldWU9W10saC5zb3J0KCh2LHkpPT57Y29uc3QgQz12''@;'; put 'put ''LnRyYW5zaXRpb24uYXN0LmRlcENvdW50LEk9eS50cmFuc2l0aW9uLmFzdC5kZXBDb3VudDtyZXR1cm4gMD09Q3x8MD09ST9DLUk6dGhpcy5fZW5naW5lLmRyaXZlci5jb250YWluc0VsZW1lbnQodi5lbGVtZW50LHkuZWxlbWVudCk/MTotMX0pfWRlc3Ryb3koZyl7dGhpcy5wbGF5ZXJzLmZv''@;'; put 'put ''ckVhY2goaD0+aC5kZXN0cm95KCkpLHRoaXMuX3NpZ25hbFJlbW92YWxGb3JJbm5lclRyaWdnZXJzKHRoaXMuaG9zdEVsZW1lbnQsZyl9ZWxlbWVudENvbnRhaW5zRGF0YShnKXtsZXQgaD0hMTtyZXR1cm4gdGhpcy5fZWxlbWVudExpc3RlbmVycy5oYXMoZykmJihoPSEwKSxoPSEhdGhpcy5f''@;'; put 'put ''cXVldWUuZmluZCh2PT52LmVsZW1lbnQ9PT1nKXx8aCxofX1jbGFzcyBXRmV7Y29uc3RydWN0b3IoZyxoLHYpe3RoaXMuYm9keU5vZGU9Zyx0aGlzLmRyaXZlcj1oLHRoaXMuX25vcm1hbGl6ZXI9dix0aGlzLnBsYXllcnM9W10sdGhpcy5uZXdIb3N0RWxlbWVudHM9bmV3IE1hcCx0aGlzLnBs''@;'; put 'put ''YXllcnNCeUVsZW1lbnQ9bmV3IE1hcCx0aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50PW5ldyBNYXAsdGhpcy5zdGF0ZXNCeUVsZW1lbnQ9bmV3IE1hcCx0aGlzLmRpc2FibGVkTm9kZXM9bmV3IFNldCx0aGlzLnRvdGFsQW5pbWF0aW9ucz0wLHRoaXMudG90YWxRdWV1ZWRQbGF5ZXJzPTAs''@;'; put 'put ''dGhpcy5fbmFtZXNwYWNlTG9va3VwPXt9LHRoaXMuX25hbWVzcGFjZUxpc3Q9W10sdGhpcy5fZmx1c2hGbnM9W10sdGhpcy5fd2hlblF1aWV0Rm5zPVtdLHRoaXMubmFtZXNwYWNlc0J5SG9zdEVsZW1lbnQ9bmV3IE1hcCx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHM9W10sdGhpcy5jb2xs''@;'; put 'put ''ZWN0ZWRMZWF2ZUVsZW1lbnRzPVtdLHRoaXMub25SZW1vdmFsQ29tcGxldGU9KHksQyk9Pnt9fV9vblJlbW92YWxDb21wbGV0ZShnLGgpe3RoaXMub25SZW1vdmFsQ29tcGxldGUoZyxoKX1nZXQgcXVldWVkUGxheWVycygpe2NvbnN0IGc9W107cmV0dXJuIHRoaXMuX25hbWVzcGFjZUxpc3Qu''@;'; put 'put ''Zm9yRWFjaChoPT57aC5wbGF5ZXJzLmZvckVhY2godj0+e3YucXVldWVkJiZnLnB1c2godil9KX0pLGd9Y3JlYXRlTmFtZXNwYWNlKGcsaCl7Y29uc3Qgdj1uZXcgR0ZlKGcsaCx0aGlzKTtyZXR1cm4gdGhpcy5ib2R5Tm9kZSYmdGhpcy5kcml2ZXIuY29udGFpbnNFbGVtZW50KHRoaXMuYm9k''@;'; put 'put ''eU5vZGUsaCk/dGhpcy5fYmFsYW5jZU5hbWVzcGFjZUxpc3QodixoKToodGhpcy5uZXdIb3N0RWxlbWVudHMuc2V0KGgsdiksdGhpcy5jb2xsZWN0RW50ZXJFbGVtZW50KGgpKSx0aGlzLl9uYW1lc3BhY2VMb29rdXBbZ109dn1fYmFsYW5jZU5hbWVzcGFjZUxpc3QoZyxoKXtjb25zdCB2PXRo''@;'; put 'put ''aXMuX25hbWVzcGFjZUxpc3QseT10aGlzLm5hbWVzcGFjZXNCeUhvc3RFbGVtZW50O2lmKHYubGVuZ3RoLTE+PTApe2xldCBJPSExLFo9dGhpcy5kcml2ZXIuZ2V0UGFyZW50RWxlbWVudChoKTtmb3IoO1o7KXtjb25zdCB1ZT15LmdldChaKTtpZih1ZSl7Y29uc3QgX2U9di5pbmRleE9mKHVl''@;'; put 'put ''KTt2LnNwbGljZShfZSsxLDAsZyksST0hMDticmVha31aPXRoaXMuZHJpdmVyLmdldFBhcmVudEVsZW1lbnQoWil9SXx8di51bnNoaWZ0KGcpfWVsc2Ugdi5wdXNoKGcpO3JldHVybiB5LnNldChoLGcpLGd9cmVnaXN0ZXIoZyxoKXtsZXQgdj10aGlzLl9uYW1lc3BhY2VMb29rdXBbZ107cmV0''@;'; put 'put ''dXJuIHZ8fCh2PXRoaXMuY3JlYXRlTmFtZXNwYWNlKGcsaCkpLHZ9cmVnaXN0ZXJUcmlnZ2VyKGcsaCx2KXtsZXQgeT10aGlzLl9uYW1lc3BhY2VMb29rdXBbZ107eSYmeS5yZWdpc3RlcihoLHYpJiZ0aGlzLnRvdGFsQW5pbWF0aW9ucysrfWRlc3Ryb3koZyxoKXtpZighZylyZXR1cm47Y29u''@;'; put 'put ''c3Qgdj10aGlzLl9mZXRjaE5hbWVzcGFjZShnKTt0aGlzLmFmdGVyRmx1c2goKCk9Pnt0aGlzLm5hbWVzcGFjZXNCeUhvc3RFbGVtZW50LmRlbGV0ZSh2Lmhvc3RFbGVtZW50KSxkZWxldGUgdGhpcy5fbmFtZXNwYWNlTG9va3VwW2ddO2NvbnN0IHk9dGhpcy5fbmFtZXNwYWNlTGlzdC5pbmRl''@;'; put 'put ''eE9mKHYpO3k+PTAmJnRoaXMuX25hbWVzcGFjZUxpc3Quc3BsaWNlKHksMSl9KSx0aGlzLmFmdGVyRmx1c2hBbmltYXRpb25zRG9uZSgoKT0+di5kZXN0cm95KGgpKX1fZmV0Y2hOYW1lc3BhY2UoZyl7cmV0dXJuIHRoaXMuX25hbWVzcGFjZUxvb2t1cFtnXX1mZXRjaE5hbWVzcGFjZXNCeUVs''@;'; put 'put ''ZW1lbnQoZyl7Y29uc3QgaD1uZXcgU2V0LHY9dGhpcy5zdGF0ZXNCeUVsZW1lbnQuZ2V0KGcpO2lmKHYpZm9yKGxldCB5IG9mIHYudmFsdWVzKCkpaWYoeS5uYW1lc3BhY2VJZCl7Y29uc3QgQz10aGlzLl9mZXRjaE5hbWVzcGFjZSh5Lm5hbWVzcGFjZUlkKTtDJiZoLmFkZChDKX1yZXR1cm4g''@;'; put 'put ''aH10cmlnZ2VyKGcsaCx2LHkpe2lmKE5xKGgpKXtjb25zdCBDPXRoaXMuX2ZldGNoTmFtZXNwYWNlKGcpO2lmKEMpcmV0dXJuIEMudHJpZ2dlcihoLHYseSksITB9cmV0dXJuITF9aW5zZXJ0Tm9kZShnLGgsdix5KXtpZighTnEoaCkpcmV0dXJuO2NvbnN0IEM9aFtUcF07aWYoQyYmQy5zZXRG''@;'; put 'put ''b3JSZW1vdmFsKXtDLnNldEZvclJlbW92YWw9ITEsQy5zZXRGb3JNb3ZlPSEwO2NvbnN0IEk9dGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLmluZGV4T2YoaCk7ST49MCYmdGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLnNwbGljZShJLDEpfWlmKGcpe2NvbnN0IEk9dGhpcy5fZmV0Y2hO''@;'; put 'put ''YW1lc3BhY2UoZyk7SSYmSS5pbnNlcnROb2RlKGgsdil9eSYmdGhpcy5jb2xsZWN0RW50ZXJFbGVtZW50KGgpfWNvbGxlY3RFbnRlckVsZW1lbnQoZyl7dGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzLnB1c2goZyl9bWFya0VsZW1lbnRBc0Rpc2FibGVkKGcsaCl7aD90aGlzLmRpc2FibGVk''@;'; put 'put ''Tm9kZXMuaGFzKGcpfHwodGhpcy5kaXNhYmxlZE5vZGVzLmFkZChnKSxJcChnLExoZSkpOnRoaXMuZGlzYWJsZWROb2Rlcy5oYXMoZykmJih0aGlzLmRpc2FibGVkTm9kZXMuZGVsZXRlKGcpLHJPKGcsTGhlKSl9cmVtb3ZlTm9kZShnLGgsdix5KXtpZihOcShoKSl7Y29uc3QgQz1nP3RoaXMu''@;'; put 'put ''X2ZldGNoTmFtZXNwYWNlKGcpOm51bGw7aWYoQz9DLnJlbW92ZU5vZGUoaCx5KTp0aGlzLm1hcmtFbGVtZW50QXNSZW1vdmVkKGcsaCwhMSx5KSx2KXtjb25zdCBJPXRoaXMubmFtZXNwYWNlc0J5SG9zdEVsZW1lbnQuZ2V0KGgpO0kmJkkuaWQhPT1nJiZJLnJlbW92ZU5vZGUoaCx5KX19ZWxz''@;'; put 'put ''ZSB0aGlzLl9vblJlbW92YWxDb21wbGV0ZShoLHkpfW1hcmtFbGVtZW50QXNSZW1vdmVkKGcsaCx2LHksQyl7dGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLnB1c2goaCksaFtUcF09e25hbWVzcGFjZUlkOmcsc2V0Rm9yUmVtb3ZhbDp5LGhhc0FuaW1hdGlvbjp2LHJlbW92ZWRCZWZvcmVR''@;'; put 'put ''dWVyaWVkOiExLHByZXZpb3VzVHJpZ2dlcnNWYWx1ZXM6Q319bGlzdGVuKGcsaCx2LHksQyl7cmV0dXJuIE5xKGgpP3RoaXMuX2ZldGNoTmFtZXNwYWNlKGcpLmxpc3RlbihoLHYseSxDKTooKT0+e319X2J1aWxkSW5zdHJ1Y3Rpb24oZyxoLHYseSxDKXtyZXR1cm4gZy50cmFuc2l0aW9uLmJ1''@;'; put 'put ''aWxkKHRoaXMuZHJpdmVyLGcuZWxlbWVudCxnLmZyb21TdGF0ZS52YWx1ZSxnLnRvU3RhdGUudmFsdWUsdix5LGcuZnJvbVN0YXRlLm9wdGlvbnMsZy50b1N0YXRlLm9wdGlvbnMsaCxDKX1kZXN0cm95SW5uZXJBbmltYXRpb25zKGcpe2xldCBoPXRoaXMuZHJpdmVyLnF1ZXJ5KGcsRXEsITAp''@;'; put 'put ''O2guZm9yRWFjaCh2PT50aGlzLmRlc3Ryb3lBY3RpdmVBbmltYXRpb25zRm9yRWxlbWVudCh2KSksMCE9dGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudC5zaXplJiYoaD10aGlzLmRyaXZlci5xdWVyeShnLGJoZSwhMCksaC5mb3JFYWNoKHY9PnRoaXMuZmluaXNoQWN0aXZlUXVlcmllZEFu''@;'; put 'put ''aW1hdGlvbk9uRWxlbWVudCh2KSkpfWRlc3Ryb3lBY3RpdmVBbmltYXRpb25zRm9yRWxlbWVudChnKXtjb25zdCBoPXRoaXMucGxheWVyc0J5RWxlbWVudC5nZXQoZyk7aCYmaC5mb3JFYWNoKHY9Pnt2LnF1ZXVlZD92Lm1hcmtlZEZvckRlc3Ryb3k9ITA6di5kZXN0cm95KCl9KX1maW5pc2hB''@;'; put 'put ''Y3RpdmVRdWVyaWVkQW5pbWF0aW9uT25FbGVtZW50KGcpe2NvbnN0IGg9dGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudC5nZXQoZyk7aCYmaC5mb3JFYWNoKHY9PnYuZmluaXNoKCkpfXdoZW5SZW5kZXJpbmdEb25lKCl7cmV0dXJuIG5ldyBQcm9taXNlKGc9PntpZih0aGlzLnBsYXllcnMu''@;'; put 'put ''bGVuZ3RoKXJldHVybiBBdyh0aGlzLnBsYXllcnMpLm9uRG9uZSgoKT0+ZygpKTtnKCl9KX1wcm9jZXNzTGVhdmVOb2RlKGcpe3ZhciBoO2NvbnN0IHY9Z1tUcF07aWYodiYmdi5zZXRGb3JSZW1vdmFsKXtpZihnW1RwXT1Fd2Usdi5uYW1lc3BhY2VJZCl7dGhpcy5kZXN0cm95SW5uZXJBbmlt''@;'; put 'put ''YXRpb25zKGcpO2NvbnN0IHk9dGhpcy5fZmV0Y2hOYW1lc3BhY2Uodi5uYW1lc3BhY2VJZCk7eSYmeS5jbGVhckVsZW1lbnRDYWNoZShnKX10aGlzLl9vblJlbW92YWxDb21wbGV0ZShnLHYuc2V0Rm9yUmVtb3ZhbCl9IShudWxsPT09KGg9Zy5jbGFzc0xpc3QpfHx2b2lkIDA9PT1oKSYmaC5j''@;'; put 'put ''b250YWlucyhMaGUpJiZ0aGlzLm1hcmtFbGVtZW50QXNEaXNhYmxlZChnLCExKSx0aGlzLmRyaXZlci5xdWVyeShnLCIubmctYW5pbWF0ZS1kaXNhYmxlZCIsITApLmZvckVhY2goeT0+e3RoaXMubWFya0VsZW1lbnRBc0Rpc2FibGVkKHksITEpfSl9Zmx1c2goZz0tMSl7bGV0IGg9W107aWYo''@;'; put 'put ''dGhpcy5uZXdIb3N0RWxlbWVudHMuc2l6ZSYmKHRoaXMubmV3SG9zdEVsZW1lbnRzLmZvckVhY2goKHYseSk9PnRoaXMuX2JhbGFuY2VOYW1lc3BhY2VMaXN0KHYseSkpLHRoaXMubmV3SG9zdEVsZW1lbnRzLmNsZWFyKCkpLHRoaXMudG90YWxBbmltYXRpb25zJiZ0aGlzLmNvbGxlY3RlZEVu''@;'; put 'put ''dGVyRWxlbWVudHMubGVuZ3RoKWZvcihsZXQgdj0wO3Y8dGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzLmxlbmd0aDt2KyspSXAodGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzW3ZdLCJuZy1zdGFyLWluc2VydGVkIik7aWYodGhpcy5fbmFtZXNwYWNlTGlzdC5sZW5ndGgmJih0aGlzLnRv''@;'; put 'put ''dGFsUXVldWVkUGxheWVyc3x8dGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLmxlbmd0aCkpe2NvbnN0IHY9W107dHJ5e2g9dGhpcy5fZmx1c2hBbmltYXRpb25zKHYsZyl9ZmluYWxseXtmb3IobGV0IHk9MDt5PHYubGVuZ3RoO3krKyl2W3ldKCl9fWVsc2UgZm9yKGxldCB2PTA7djx0aGlz''@;'; put 'put ''LmNvbGxlY3RlZExlYXZlRWxlbWVudHMubGVuZ3RoO3YrKyl0aGlzLnByb2Nlc3NMZWF2ZU5vZGUodGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzW3ZdKTtpZih0aGlzLnRvdGFsUXVldWVkUGxheWVycz0wLHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGg9MCx0aGlzLmNvbGxl''@;'; put 'put ''Y3RlZExlYXZlRWxlbWVudHMubGVuZ3RoPTAsdGhpcy5fZmx1c2hGbnMuZm9yRWFjaCh2PT52KCkpLHRoaXMuX2ZsdXNoRm5zPVtdLHRoaXMuX3doZW5RdWlldEZucy5sZW5ndGgpe2NvbnN0IHY9dGhpcy5fd2hlblF1aWV0Rm5zO3RoaXMuX3doZW5RdWlldEZucz1bXSxoLmxlbmd0aD9Bdyho''@;'; put 'put ''KS5vbkRvbmUoKCk9Pnt2LmZvckVhY2goeT0+eSgpKX0pOnYuZm9yRWFjaCh5PT55KCkpfX1yZXBvcnRFcnJvcihnKXt0aHJvdyBmdW5jdGlvbiBXUGUoZCl7cmV0dXJuIG5ldyBlbigzNDAyLCExKX0oKX1fZmx1c2hBbmltYXRpb25zKGcsaCl7Y29uc3Qgdj1uZXcgUHEseT1bXSxDPW5ldyBN''@;'; put 'put ''YXAsST1bXSxaPW5ldyBNYXAsdWU9bmV3IE1hcCxfZT1uZXcgTWFwLEJlPW5ldyBTZXQ7dGhpcy5kaXNhYmxlZE5vZGVzLmZvckVhY2goSDA9PntCZS5hZGQoSDApO2NvbnN0IHJvPXRoaXMuZHJpdmVyLnF1ZXJ5KEgwLCIubmctYW5pbWF0ZS1xdWV1ZWQiLCEwKTtmb3IobGV0IGZvPTA7Zm88''@;'; put 'put ''cm8ubGVuZ3RoO2ZvKyspQmUuYWRkKHJvW2ZvXSl9KTtjb25zdCBOZT10aGlzLmJvZHlOb2RlLEtlPUFycmF5LmZyb20odGhpcy5zdGF0ZXNCeUVsZW1lbnQua2V5cygpKSxwdD1Jd2UoS2UsdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzKSxPdD1uZXcgTWFwO2xldCAkdD0wO3B0LmZvckVh''@;'; put 'put ''Y2goKEgwLHJvKT0+e2NvbnN0IGZvPSJuZy1lbnRlciIrJHQrKztPdC5zZXQocm8sZm8pLEgwLmZvckVhY2goSWE9PklwKElhLGZvKSl9KTtjb25zdCBmbj1bXSxMbj1uZXcgU2V0LGlyPW5ldyBTZXQ7Zm9yKGxldCBIMD0wO0gwPHRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5sZW5ndGg7''@;'; put 'put ''SDArKyl7Y29uc3Qgcm89dGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzW0gwXSxmbz1yb1tUcF07Zm8mJmZvLnNldEZvclJlbW92YWwmJihmbi5wdXNoKHJvKSxMbi5hZGQocm8pLGZvLmhhc0FuaW1hdGlvbj90aGlzLmRyaXZlci5xdWVyeShybywiLm5nLXN0YXItaW5zZXJ0ZWQiLCEwKS5m''@;'; put 'put ''b3JFYWNoKElhPT5Mbi5hZGQoSWEpKTppci5hZGQocm8pKX1jb25zdCBtcj1uZXcgTWFwLFNyPUl3ZShLZSxBcnJheS5mcm9tKExuKSk7U3IuZm9yRWFjaCgoSDAscm8pPT57Y29uc3QgZm89U3ErJHQrKzttci5zZXQocm8sZm8pLEgwLmZvckVhY2goSWE9PklwKElhLGZvKSl9KSxnLnB1c2go''@;'; put 'put ''KCk9PntwdC5mb3JFYWNoKChIMCxybyk9Pntjb25zdCBmbz1PdC5nZXQocm8pO0gwLmZvckVhY2goSWE9PnJPKElhLGZvKSl9KSxTci5mb3JFYWNoKChIMCxybyk9Pntjb25zdCBmbz1tci5nZXQocm8pO0gwLmZvckVhY2goSWE9PnJPKElhLGZvKSl9KSxmbi5mb3JFYWNoKEgwPT57dGhpcy5w''@;'; put 'put ''cm9jZXNzTGVhdmVOb2RlKEgwKX0pfSk7Y29uc3Qgd3I9W10sUXI9W107Zm9yKGxldCBIMD10aGlzLl9uYW1lc3BhY2VMaXN0Lmxlbmd0aC0xO0gwPj0wO0gwLS0pdGhpcy5fbmFtZXNwYWNlTGlzdFtIMF0uZHJhaW5RdWV1ZWRUcmFuc2l0aW9ucyhoKS5mb3JFYWNoKGZvPT57Y29uc3QgSWE9''@;'; put 'put ''Zm8ucGxheWVyLFhsPWZvLmVsZW1lbnQ7aWYod3IucHVzaChJYSksdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzLmxlbmd0aCl7Y29uc3QgWGk9WGxbVHBdO2lmKFhpJiZYaS5zZXRGb3JNb3ZlKXtpZihYaS5wcmV2aW91c1RyaWdnZXJzVmFsdWVzJiZYaS5wcmV2aW91c1RyaWdnZXJzVmFs''@;'; put 'put ''dWVzLmhhcyhmby50cmlnZ2VyTmFtZSkpe2NvbnN0IEUwPVhpLnByZXZpb3VzVHJpZ2dlcnNWYWx1ZXMuZ2V0KGZvLnRyaWdnZXJOYW1lKSx6MD10aGlzLnN0YXRlc0J5RWxlbWVudC5nZXQoZm8uZWxlbWVudCk7aWYoejAmJnowLmhhcyhmby50cmlnZ2VyTmFtZSkpe2NvbnN0IGtvPXowLmdl''@;'; put 'put ''dChmby50cmlnZ2VyTmFtZSk7a28udmFsdWU9RTAsejAuc2V0KGZvLnRyaWdnZXJOYW1lLGtvKX19cmV0dXJuIHZvaWQgSWEuZGVzdHJveSgpfX1jb25zdCBGbj0hTmV8fCF0aGlzLmRyaXZlci5jb250YWluc0VsZW1lbnQoTmUsWGwpLFpuPW1yLmdldChYbCksX3I9T3QuZ2V0KFhsKSxYcj10''@;'; put 'put ''aGlzLl9idWlsZEluc3RydWN0aW9uKGZvLHYsX3IsWm4sRm4pO2lmKFhyLmVycm9ycyYmWHIuZXJyb3JzLmxlbmd0aClyZXR1cm4gdm9pZCBRci5wdXNoKFhyKTtpZihGbilyZXR1cm4gSWEub25TdGFydCgoKT0+a1MoWGwsWHIuZnJvbVN0eWxlcykpLElhLm9uRGVzdHJveSgoKT0+Q2coWGws''@;'; put 'put ''WHIudG9TdHlsZXMpKSx2b2lkIHkucHVzaChJYSk7aWYoZm8uaXNGYWxsYmFja1RyYW5zaXRpb24pcmV0dXJuIElhLm9uU3RhcnQoKCk9PmtTKFhsLFhyLmZyb21TdHlsZXMpKSxJYS5vbkRlc3Ryb3koKCk9PkNnKFhsLFhyLnRvU3R5bGVzKSksdm9pZCB5LnB1c2goSWEpO2NvbnN0IGNpPVtd''@;'; put 'put ''O1hyLnRpbWVsaW5lcy5mb3JFYWNoKFhpPT57WGkuc3RyZXRjaFN0YXJ0aW5nS2V5ZnJhbWU9ITAsdGhpcy5kaXNhYmxlZE5vZGVzLmhhcyhYaS5lbGVtZW50KXx8Y2kucHVzaChYaSl9KSxYci50aW1lbGluZXM9Y2ksdi5hcHBlbmQoWGwsWHIudGltZWxpbmVzKSxJLnB1c2goe2luc3RydWN0''@;'; put 'put ''aW9uOlhyLHBsYXllcjpJYSxlbGVtZW50OlhsfSksWHIucXVlcmllZEVsZW1lbnRzLmZvckVhY2goWGk9PmQ0KFosWGksW10pLnB1c2goSWEpKSxYci5wcmVTdHlsZVByb3BzLmZvckVhY2goKFhpLEUwKT0+e2lmKFhpLnNpemUpe2xldCB6MD11ZS5nZXQoRTApO3owfHx1ZS5zZXQoRTAsejA9''@;'; put 'put ''bmV3IFNldCksWGkuZm9yRWFjaCgoa28sd28pPT56MC5hZGQod28pKX19KSxYci5wb3N0U3R5bGVQcm9wcy5mb3JFYWNoKChYaSxFMCk9PntsZXQgejA9X2UuZ2V0KEUwKTt6MHx8X2Uuc2V0KEUwLHowPW5ldyBTZXQpLFhpLmZvckVhY2goKGtvLHdvKT0+ejAuYWRkKHdvKSl9KX0pO2lmKFFy''@;'; put 'put ''Lmxlbmd0aCl7Y29uc3QgSDA9W107UXIuZm9yRWFjaChybz0+e0gwLnB1c2goZnVuY3Rpb24gWVBlKGQsZyl7cmV0dXJuIG5ldyBlbigzNTA1LCExKX0oKSl9KSx3ci5mb3JFYWNoKHJvPT5yby5kZXN0cm95KCkpLHRoaXMucmVwb3J0RXJyb3IoSDApfWNvbnN0IHlpPW5ldyBNYXAsS2k9bmV3''@;'; put 'put ''IE1hcDtJLmZvckVhY2goSDA9Pntjb25zdCBybz1IMC5lbGVtZW50O3YuaGFzKHJvKSYmKEtpLnNldChybyxybyksdGhpcy5fYmVmb3JlQW5pbWF0aW9uQnVpbGQoSDAucGxheWVyLm5hbWVzcGFjZUlkLEgwLmluc3RydWN0aW9uLHlpKSl9KSx5LmZvckVhY2goSDA9Pntjb25zdCBybz1IMC5l''@;'; put 'put ''bGVtZW50O3RoaXMuX2dldFByZXZpb3VzUGxheWVycyhybywhMSxIMC5uYW1lc3BhY2VJZCxIMC50cmlnZ2VyTmFtZSxudWxsKS5mb3JFYWNoKElhPT57ZDQoeWkscm8sW10pLnB1c2goSWEpLElhLmRlc3Ryb3koKX0pfSk7Y29uc3QgU289Zm4uZmlsdGVyKEgwPT5Md2UoSDAsdWUsX2UpKSxQ''@;'; put 'put ''bz1uZXcgTWFwO1R3ZShQbyx0aGlzLmRyaXZlcixpcixfZSxuOCkuZm9yRWFjaChIMD0+e0x3ZShIMCx1ZSxfZSkmJlNvLnB1c2goSDApfSk7Y29uc3QgSmE9bmV3IE1hcDtwdC5mb3JFYWNoKChIMCxybyk9PntUd2UoSmEsdGhpcy5kcml2ZXIsbmV3IFNldChIMCksdWUsIiEiKX0pLFNvLmZv''@;'; put 'put ''ckVhY2goSDA9Pnt2YXIgcm8sZm87Y29uc3QgSWE9UG8uZ2V0KEgwKSxYbD1KYS5nZXQoSDApO1BvLnNldChIMCxuZXcgTWFwKFsuLi5BcnJheS5mcm9tKG51bGwhPT0ocm89bnVsbD09SWE/dm9pZCAwOklhLmVudHJpZXMoKSkmJnZvaWQgMCE9PXJvP3JvOltdKSwuLi5BcnJheS5mcm9tKG51''@;'; put 'put ''bGwhPT0oZm89bnVsbD09WGw/dm9pZCAwOlhsLmVudHJpZXMoKSkmJnZvaWQgMCE9PWZvP2ZvOltdKV0pKX0pO2NvbnN0IGxhPVtdLGFsPVtdLFJzPXt9O0kuZm9yRWFjaChIMD0+e2NvbnN0e2VsZW1lbnQ6cm8scGxheWVyOmZvLGluc3RydWN0aW9uOklhfT1IMDtpZih2Lmhhcyhybykpe2lm''@;'; put 'put ''KEJlLmhhcyhybykpcmV0dXJuIGZvLm9uRGVzdHJveSgoKT0+Q2cocm8sSWEudG9TdHlsZXMpKSxmby5kaXNhYmxlZD0hMCxmby5vdmVycmlkZVRvdGFsVGltZShJYS50b3RhbFRpbWUpLHZvaWQgeS5wdXNoKGZvKTtsZXQgWGw9UnM7aWYoS2kuc2l6ZT4xKXtsZXQgWm49cm87Y29uc3QgX3I9''@;'; put 'put ''W107Zm9yKDtabj1abi5wYXJlbnROb2RlOyl7Y29uc3QgWHI9S2kuZ2V0KFpuKTtpZihYcil7WGw9WHI7YnJlYWt9X3IucHVzaChabil9X3IuZm9yRWFjaChYcj0+S2kuc2V0KFhyLFhsKSl9Y29uc3QgRm49dGhpcy5fYnVpbGRBbmltYXRpb24oZm8ubmFtZXNwYWNlSWQsSWEseWksQyxKYSxQ''@;'; put 'put ''byk7aWYoZm8uc2V0UmVhbFBsYXllcihGbiksWGw9PT1ScylsYS5wdXNoKGZvKTtlbHNle2NvbnN0IFpuPXRoaXMucGxheWVyc0J5RWxlbWVudC5nZXQoWGwpO1puJiZabi5sZW5ndGgmJihmby5wYXJlbnRQbGF5ZXI9QXcoWm4pKSx5LnB1c2goZm8pfX1lbHNlIGtTKHJvLElhLmZyb21TdHls''@;'; put 'put ''ZXMpLGZvLm9uRGVzdHJveSgoKT0+Q2cocm8sSWEudG9TdHlsZXMpKSxhbC5wdXNoKGZvKSxCZS5oYXMocm8pJiZ5LnB1c2goZm8pfSksYWwuZm9yRWFjaChIMD0+e2NvbnN0IHJvPUMuZ2V0KEgwLmVsZW1lbnQpO2lmKHJvJiZyby5sZW5ndGgpe2NvbnN0IGZvPUF3KHJvKTtIMC5zZXRSZWFs''@;'; put 'put ''UGxheWVyKGZvKX19KSx5LmZvckVhY2goSDA9PntIMC5wYXJlbnRQbGF5ZXI/SDAuc3luY1BsYXllckV2ZW50cyhIMC5wYXJlbnRQbGF5ZXIpOkgwLmRlc3Ryb3koKX0pO2ZvcihsZXQgSDA9MDtIMDxmbi5sZW5ndGg7SDArKyl7Y29uc3Qgcm89Zm5bSDBdLGZvPXJvW1RwXTtpZihyTyhybyxT''@;'; put 'put ''cSksZm8mJmZvLmhhc0FuaW1hdGlvbiljb250aW51ZTtsZXQgSWE9W107aWYoWi5zaXplKXtsZXQgRm49Wi5nZXQocm8pO0ZuJiZGbi5sZW5ndGgmJklhLnB1c2goLi4uRm4pO2xldCBabj10aGlzLmRyaXZlci5xdWVyeShybyxiaGUsITApO2ZvcihsZXQgX3I9MDtfcjxabi5sZW5ndGg7X3Ir''@;'; put 'put ''Kyl7bGV0IFhyPVouZ2V0KFpuW19yXSk7WHImJlhyLmxlbmd0aCYmSWEucHVzaCguLi5Ycil9fWNvbnN0IFhsPUlhLmZpbHRlcihGbj0+IUZuLmRlc3Ryb3llZCk7WGwubGVuZ3RoP0pGZSh0aGlzLHJvLFhsKTp0aGlzLnByb2Nlc3NMZWF2ZU5vZGUocm8pfXJldHVybiBmbi5sZW5ndGg9MCxs''@;'; put 'put ''YS5mb3JFYWNoKEgwPT57dGhpcy5wbGF5ZXJzLnB1c2goSDApLEgwLm9uRG9uZSgoKT0+e0gwLmRlc3Ryb3koKTtjb25zdCBybz10aGlzLnBsYXllcnMuaW5kZXhPZihIMCk7dGhpcy5wbGF5ZXJzLnNwbGljZShybywxKX0pLEgwLnBsYXkoKX0pLGxhfWVsZW1lbnRDb250YWluc0RhdGEoZyxo''@;'; put 'put ''KXtsZXQgdj0hMTtjb25zdCB5PWhbVHBdO3JldHVybiB5JiZ5LnNldEZvclJlbW92YWwmJih2PSEwKSx0aGlzLnBsYXllcnNCeUVsZW1lbnQuaGFzKGgpJiYodj0hMCksdGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudC5oYXMoaCkmJih2PSEwKSx0aGlzLnN0YXRlc0J5RWxlbWVudC5oYXMo''@;'; put 'put ''aCkmJih2PSEwKSx0aGlzLl9mZXRjaE5hbWVzcGFjZShnKS5lbGVtZW50Q29udGFpbnNEYXRhKGgpfHx2fWFmdGVyRmx1c2goZyl7dGhpcy5fZmx1c2hGbnMucHVzaChnKX1hZnRlckZsdXNoQW5pbWF0aW9uc0RvbmUoZyl7dGhpcy5fd2hlblF1aWV0Rm5zLnB1c2goZyl9X2dldFByZXZpb3Vz''@;'; put 'put ''UGxheWVycyhnLGgsdix5LEMpe2xldCBJPVtdO2lmKGgpe2NvbnN0IFo9dGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudC5nZXQoZyk7WiYmKEk9Wil9ZWxzZXtjb25zdCBaPXRoaXMucGxheWVyc0J5RWxlbWVudC5nZXQoZyk7aWYoWil7Y29uc3QgdWU9IUN8fEM9PWtaO1ouZm9yRWFjaChf''@;'; put 'put ''ZT0+e19lLnF1ZXVlZHx8IXVlJiZfZS50cmlnZ2VyTmFtZSE9eXx8SS5wdXNoKF9lKX0pfX1yZXR1cm4odnx8eSkmJihJPUkuZmlsdGVyKFo9PiEodiYmdiE9Wi5uYW1lc3BhY2VJZHx8eSYmeSE9Wi50cmlnZ2VyTmFtZSkpKSxJfV9iZWZvcmVBbmltYXRpb25CdWlsZChnLGgsdil7Y29uc3Qg''@;'; put 'put ''Qz1oLmVsZW1lbnQsST1oLmlzUmVtb3ZhbFRyYW5zaXRpb24/dm9pZCAwOmcsWj1oLmlzUmVtb3ZhbFRyYW5zaXRpb24/dm9pZCAwOmgudHJpZ2dlck5hbWU7Zm9yKGNvbnN0IHVlIG9mIGgudGltZWxpbmVzKXtjb25zdCBfZT11ZS5lbGVtZW50LEJlPV9lIT09QyxOZT1kNCh2LF9lLFtdKTt0''@;'; put 'put ''aGlzLl9nZXRQcmV2aW91c1BsYXllcnMoX2UsQmUsSSxaLGgudG9TdGF0ZSkuZm9yRWFjaChwdD0+e2NvbnN0IE90PXB0LmdldFJlYWxQbGF5ZXIoKTtPdC5iZWZvcmVEZXN0cm95JiZPdC5iZWZvcmVEZXN0cm95KCkscHQuZGVzdHJveSgpLE5lLnB1c2gocHQpfSl9a1MoQyxoLmZyb21TdHls''@;'; put 'put ''ZXMpfV9idWlsZEFuaW1hdGlvbihnLGgsdix5LEMsSSl7Y29uc3QgWj1oLnRyaWdnZXJOYW1lLHVlPWguZWxlbWVudCxfZT1bXSxCZT1uZXcgU2V0LE5lPW5ldyBTZXQsS2U9aC50aW1lbGluZXMubWFwKE90PT57Y29uc3QgJHQ9T3QuZWxlbWVudDtCZS5hZGQoJHQpO2NvbnN0IGZuPSR0W1Rw''@;'; put 'put ''XTtpZihmbiYmZm4ucmVtb3ZlZEJlZm9yZVF1ZXJpZWQpcmV0dXJuIG5ldyBJayhPdC5kdXJhdGlvbixPdC5kZWxheSk7Y29uc3QgTG49JHQhPT11ZSxpcj1mdW5jdGlvbiBYRmUoZCl7Y29uc3QgZz1bXTtyZXR1cm4gRHdlKGQsZyksZ30oKHYuZ2V0KCR0KXx8WkZlKS5tYXAoeWk9PnlpLmdl''@;'; put 'put ''dFJlYWxQbGF5ZXIoKSkpLmZpbHRlcih5aT0+ISF5aS5lbGVtZW50JiZ5aS5lbGVtZW50PT09JHQpLG1yPUMuZ2V0KCR0KSxTcj1JLmdldCgkdCksd3I9cndlKDAsdGhpcy5fbm9ybWFsaXplciwwLE90LmtleWZyYW1lcyxtcixTciksUXI9dGhpcy5fYnVpbGRQbGF5ZXIoT3Qsd3IsaXIpO2lm''@;'; put 'put ''KE90LnN1YlRpbWVsaW5lJiZ5JiZOZS5hZGQoJHQpLExuKXtjb25zdCB5aT1uZXcgQmhlKGcsWiwkdCk7eWkuc2V0UmVhbFBsYXllcihRciksX2UucHVzaCh5aSl9cmV0dXJuIFFyfSk7X2UuZm9yRWFjaChPdD0+e2Q0KHRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQsT3QuZWxlbWVudCxb''@;'; put 'put ''XSkucHVzaChPdCksT3Qub25Eb25lKCgpPT5mdW5jdGlvbiBZRmUoZCxnLGgpe2xldCB2PWQuZ2V0KGcpO2lmKHYpe2lmKHYubGVuZ3RoKXtjb25zdCB5PXYuaW5kZXhPZihoKTt2LnNwbGljZSh5LDEpfTA9PXYubGVuZ3RoJiZkLmRlbGV0ZShnKX1yZXR1cm4gdn0odGhpcy5wbGF5ZXJzQnlR''@;'; put 'put ''dWVyaWVkRWxlbWVudCxPdC5lbGVtZW50LE90KSl9KSxCZS5mb3JFYWNoKE90PT5JcChPdCxod2UpKTtjb25zdCBwdD1BdyhLZSk7cmV0dXJuIHB0Lm9uRGVzdHJveSgoKT0+e0JlLmZvckVhY2goT3Q9PnJPKE90LGh3ZSkpLENnKHVlLGgudG9TdHlsZXMpfSksTmUuZm9yRWFjaChPdD0+e2Q0''@;'; put 'put ''KHksT3QsW10pLnB1c2gocHQpfSkscHR9X2J1aWxkUGxheWVyKGcsaCx2KXtyZXR1cm4gaC5sZW5ndGg+MD90aGlzLmRyaXZlci5hbmltYXRlKGcuZWxlbWVudCxoLGcuZHVyYXRpb24sZy5kZWxheSxnLmVhc2luZyx2KTpuZXcgSWsoZy5kdXJhdGlvbixnLmRlbGF5KX19Y2xhc3MgQmhle2Nv''@;'; put 'put ''bnN0cnVjdG9yKGcsaCx2KXt0aGlzLm5hbWVzcGFjZUlkPWcsdGhpcy50cmlnZ2VyTmFtZT1oLHRoaXMuZWxlbWVudD12LHRoaXMuX3BsYXllcj1uZXcgSWssdGhpcy5fY29udGFpbnNSZWFsUGxheWVyPSExLHRoaXMuX3F1ZXVlZENhbGxiYWNrcz1uZXcgTWFwLHRoaXMuZGVzdHJveWVkPSEx''@;'; put 'put ''LHRoaXMubWFya2VkRm9yRGVzdHJveT0hMSx0aGlzLmRpc2FibGVkPSExLHRoaXMucXVldWVkPSEwLHRoaXMudG90YWxUaW1lPTB9c2V0UmVhbFBsYXllcihnKXt0aGlzLl9jb250YWluc1JlYWxQbGF5ZXJ8fCh0aGlzLl9wbGF5ZXI9Zyx0aGlzLl9xdWV1ZWRDYWxsYmFja3MuZm9yRWFjaCgo''@;'; put 'put ''aCx2KT0+e2guZm9yRWFjaCh5PT5waGUoZyx2LHZvaWQgMCx5KSl9KSx0aGlzLl9xdWV1ZWRDYWxsYmFja3MuY2xlYXIoKSx0aGlzLl9jb250YWluc1JlYWxQbGF5ZXI9ITAsdGhpcy5vdmVycmlkZVRvdGFsVGltZShnLnRvdGFsVGltZSksdGhpcy5xdWV1ZWQ9ITEpfWdldFJlYWxQbGF5ZXIo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5fcGxheWVyfW92ZXJyaWRlVG90YWxUaW1lKGcpe3RoaXMudG90YWxUaW1lPWd9c3luY1BsYXllckV2ZW50cyhnKXtjb25zdCBoPXRoaXMuX3BsYXllcjtoLnRyaWdnZXJDYWxsYmFjayYmZy5vblN0YXJ0KCgpPT5oLnRyaWdnZXJDYWxsYmFjaygic3RhcnQiKSksZy5v''@;'; put 'put ''bkRvbmUoKCk9PnRoaXMuZmluaXNoKCkpLGcub25EZXN0cm95KCgpPT50aGlzLmRlc3Ryb3koKSl9X3F1ZXVlRXZlbnQoZyxoKXtkNCh0aGlzLl9xdWV1ZWRDYWxsYmFja3MsZyxbXSkucHVzaChoKX1vbkRvbmUoZyl7dGhpcy5xdWV1ZWQmJnRoaXMuX3F1ZXVlRXZlbnQoImRvbmUiLGcpLHRo''@;'; put 'put ''aXMuX3BsYXllci5vbkRvbmUoZyl9b25TdGFydChnKXt0aGlzLnF1ZXVlZCYmdGhpcy5fcXVldWVFdmVudCgic3RhcnQiLGcpLHRoaXMuX3BsYXllci5vblN0YXJ0KGcpfW9uRGVzdHJveShnKXt0aGlzLnF1ZXVlZCYmdGhpcy5fcXVldWVFdmVudCgiZGVzdHJveSIsZyksdGhpcy5fcGxheWVy''@;'; put 'put ''Lm9uRGVzdHJveShnKX1pbml0KCl7dGhpcy5fcGxheWVyLmluaXQoKX1oYXNTdGFydGVkKCl7cmV0dXJuIXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIuaGFzU3RhcnRlZCgpfXBsYXkoKXshdGhpcy5xdWV1ZWQmJnRoaXMuX3BsYXllci5wbGF5KCl9cGF1c2UoKXshdGhpcy5xdWV1ZWQmJnRo''@;'; put 'put ''aXMuX3BsYXllci5wYXVzZSgpfXJlc3RhcnQoKXshdGhpcy5xdWV1ZWQmJnRoaXMuX3BsYXllci5yZXN0YXJ0KCl9ZmluaXNoKCl7dGhpcy5fcGxheWVyLmZpbmlzaCgpfWRlc3Ryb3koKXt0aGlzLmRlc3Ryb3llZD0hMCx0aGlzLl9wbGF5ZXIuZGVzdHJveSgpfXJlc2V0KCl7IXRoaXMucXVl''@;'; put 'put ''dWVkJiZ0aGlzLl9wbGF5ZXIucmVzZXQoKX1zZXRQb3NpdGlvbihnKXt0aGlzLnF1ZXVlZHx8dGhpcy5fcGxheWVyLnNldFBvc2l0aW9uKGcpfWdldFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMucXVldWVkPzA6dGhpcy5fcGxheWVyLmdldFBvc2l0aW9uKCl9dHJpZ2dlckNhbGxiYWNrKGcpe2Nv''@;'; put 'put ''bnN0IGg9dGhpcy5fcGxheWVyO2gudHJpZ2dlckNhbGxiYWNrJiZoLnRyaWdnZXJDYWxsYmFjayhnKX19ZnVuY3Rpb24gTnEoZCl7cmV0dXJuIGQmJjE9PT1kLm5vZGVUeXBlfWZ1bmN0aW9uIHh3ZShkLGcpe2NvbnN0IGg9ZC5zdHlsZS5kaXNwbGF5O3JldHVybiBkLnN0eWxlLmRpc3BsYXk9''@;'; put 'put ''bnVsbCE9Zz9nOiJub25lIixofWZ1bmN0aW9uIFR3ZShkLGcsaCx2LHkpe2NvbnN0IEM9W107aC5mb3JFYWNoKHVlPT5DLnB1c2goeHdlKHVlKSkpO2NvbnN0IEk9W107di5mb3JFYWNoKCh1ZSxfZSk9Pntjb25zdCBCZT1uZXcgTWFwO3VlLmZvckVhY2goTmU9Pntjb25zdCBLZT1nLmNvbXB1''@;'; put 'put ''dGVTdHlsZShfZSxOZSx5KTtCZS5zZXQoTmUsS2UpLCghS2V8fDA9PUtlLmxlbmd0aCkmJihfZVtUcF09ekZlLEkucHVzaChfZSkpfSksZC5zZXQoX2UsQmUpfSk7bGV0IFo9MDtyZXR1cm4gaC5mb3JFYWNoKHVlPT54d2UodWUsQ1taKytdKSksSX1mdW5jdGlvbiBJd2UoZCxnKXtjb25zdCBo''@;'; put 'put ''PW5ldyBNYXA7aWYoZC5mb3JFYWNoKFo9Pmguc2V0KFosW10pKSwwPT1nLmxlbmd0aClyZXR1cm4gaDtjb25zdCB5PW5ldyBTZXQoZyksQz1uZXcgTWFwO2Z1bmN0aW9uIEkoWil7aWYoIVopcmV0dXJuIDE7bGV0IHVlPUMuZ2V0KFopO2lmKHVlKXJldHVybiB1ZTtjb25zdCBfZT1aLnBhcmVu''@;'; put 'put ''dE5vZGU7cmV0dXJuIHVlPWguaGFzKF9lKT9fZTp5LmhhcyhfZSk/MTpJKF9lKSxDLnNldChaLHVlKSx1ZX1yZXR1cm4gZy5mb3JFYWNoKFo9Pntjb25zdCB1ZT1JKFopOzEhPT11ZSYmaC5nZXQodWUpLnB1c2goWil9KSxofWZ1bmN0aW9uIElwKGQsZyl7dmFyIGg7bnVsbD09PShoPWQuY2xh''@;'; put 'put ''c3NMaXN0KXx8dm9pZCAwPT09aHx8aC5hZGQoZyl9ZnVuY3Rpb24gck8oZCxnKXt2YXIgaDtudWxsPT09KGg9ZC5jbGFzc0xpc3QpfHx2b2lkIDA9PT1ofHxoLnJlbW92ZShnKX1mdW5jdGlvbiBKRmUoZCxnLGgpe0F3KGgpLm9uRG9uZSgoKT0+ZC5wcm9jZXNzTGVhdmVOb2RlKGcpKX1mdW5j''@;'; put 'put ''dGlvbiBEd2UoZCxnKXtmb3IobGV0IGg9MDtoPGQubGVuZ3RoO2grKyl7Y29uc3Qgdj1kW2hdO3YgaW5zdGFuY2VvZiB6Nz9Ed2Uodi5wbGF5ZXJzLGcpOmcucHVzaCh2KX19ZnVuY3Rpb24gTHdlKGQsZyxoKXtjb25zdCB2PWguZ2V0KGQpO2lmKCF2KXJldHVybiExO2xldCB5PWcuZ2V0KGQp''@;'; put 'put ''O3JldHVybiB5P3YuZm9yRWFjaChDPT55LmFkZChDKSk6Zy5zZXQoZCx2KSxoLmRlbGV0ZShkKSwhMH1jbGFzcyBWcXtjb25zdHJ1Y3RvcihnLGgsdil7dGhpcy5ib2R5Tm9kZT1nLHRoaXMuX2RyaXZlcj1oLHRoaXMuX25vcm1hbGl6ZXI9dix0aGlzLl90cmlnZ2VyQ2FjaGU9e30sdGhpcy5v''@;'; put 'put ''blJlbW92YWxDb21wbGV0ZT0oeSxDKT0+e30sdGhpcy5fdHJhbnNpdGlvbkVuZ2luZT1uZXcgV0ZlKGcsaCx2KSx0aGlzLl90aW1lbGluZUVuZ2luZT1uZXcgRkZlKGcsaCx2KSx0aGlzLl90cmFuc2l0aW9uRW5naW5lLm9uUmVtb3ZhbENvbXBsZXRlPSh5LEMpPT50aGlzLm9uUmVtb3ZhbENv''@;'; put 'put ''bXBsZXRlKHksQyl9cmVnaXN0ZXJUcmlnZ2VyKGcsaCx2LHksQyl7Y29uc3QgST1nKyItIit5O2xldCBaPXRoaXMuX3RyaWdnZXJDYWNoZVtJXTtpZighWil7Y29uc3QgdWU9W10sQmU9U2hlKHRoaXMuX2RyaXZlcixDLHVlLFtdKTtpZih1ZS5sZW5ndGgpdGhyb3cgZnVuY3Rpb24gQlBlKGQs''@;'; put 'put ''Zyl7cmV0dXJuIG5ldyBlbigzNDA0LCExKX0oKTtaPWZ1bmN0aW9uIE9GZShkLGcsaCl7cmV0dXJuIG5ldyBSRmUoZCxnLGgpfSh5LEJlLHRoaXMuX25vcm1hbGl6ZXIpLHRoaXMuX3RyaWdnZXJDYWNoZVtJXT1afXRoaXMuX3RyYW5zaXRpb25FbmdpbmUucmVnaXN0ZXJUcmlnZ2VyKGgseSxa''@;'; put 'put ''KX1yZWdpc3RlcihnLGgpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUucmVnaXN0ZXIoZyxoKX1kZXN0cm95KGcsaCl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5kZXN0cm95KGcsaCl9b25JbnNlcnQoZyxoLHYseSl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5pbnNlcnROb2RlKGcsaCx2LHkpfW9u''@;'; put 'put ''UmVtb3ZlKGcsaCx2LHkpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUucmVtb3ZlTm9kZShnLGgseXx8ITEsdil9ZGlzYWJsZUFuaW1hdGlvbnMoZyxoKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLm1hcmtFbGVtZW50QXNEaXNhYmxlZChnLGgpfXByb2Nlc3MoZyxoLHYseSl7aWYoIkAiPT12LmNo''@;'; put 'put ''YXJBdCgwKSl7Y29uc3RbQyxJXT1pd2Uodik7dGhpcy5fdGltZWxpbmVFbmdpbmUuY29tbWFuZChDLGgsSSx5KX1lbHNlIHRoaXMuX3RyYW5zaXRpb25FbmdpbmUudHJpZ2dlcihnLGgsdix5KX1saXN0ZW4oZyxoLHYseSxDKXtpZigiQCI9PXYuY2hhckF0KDApKXtjb25zdFtJLFpdPWl3ZSh2''@;'; put 'put ''KTtyZXR1cm4gdGhpcy5fdGltZWxpbmVFbmdpbmUubGlzdGVuKEksaCxaLEMpfXJldHVybiB0aGlzLl90cmFuc2l0aW9uRW5naW5lLmxpc3RlbihnLGgsdix5LEMpfWZsdXNoKGc9LTEpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUuZmx1c2goZyl9Z2V0IHBsYXllcnMoKXtyZXR1cm4gdGhpcy5f''@;'; put 'put ''dHJhbnNpdGlvbkVuZ2luZS5wbGF5ZXJzLmNvbmNhdCh0aGlzLl90aW1lbGluZUVuZ2luZS5wbGF5ZXJzKX13aGVuUmVuZGVyaW5nRG9uZSgpe3JldHVybiB0aGlzLl90cmFuc2l0aW9uRW5naW5lLndoZW5SZW5kZXJpbmdEb25lKCl9fWxldCBxRmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rv''@;'; put 'put ''cihoLHYseSl7dGhpcy5fZWxlbWVudD1oLHRoaXMuX3N0YXJ0U3R5bGVzPXYsdGhpcy5fZW5kU3R5bGVzPXksdGhpcy5fc3RhdGU9MDtsZXQgQz1kLmluaXRpYWxTdHlsZXNCeUVsZW1lbnQuZ2V0KGgpO0N8fGQuaW5pdGlhbFN0eWxlc0J5RWxlbWVudC5zZXQoaCxDPW5ldyBNYXApLHRoaXMu''@;'; put 'put ''X2luaXRpYWxTdHlsZXM9Q31zdGFydCgpe3RoaXMuX3N0YXRlPDEmJih0aGlzLl9zdGFydFN0eWxlcyYmQ2codGhpcy5fZWxlbWVudCx0aGlzLl9zdGFydFN0eWxlcyx0aGlzLl9pbml0aWFsU3R5bGVzKSx0aGlzLl9zdGF0ZT0xKX1maW5pc2goKXt0aGlzLnN0YXJ0KCksdGhpcy5fc3RhdGU8''@;'; put 'put ''MiYmKENnKHRoaXMuX2VsZW1lbnQsdGhpcy5faW5pdGlhbFN0eWxlcyksdGhpcy5fZW5kU3R5bGVzJiYoQ2codGhpcy5fZWxlbWVudCx0aGlzLl9lbmRTdHlsZXMpLHRoaXMuX2VuZFN0eWxlcz1udWxsKSx0aGlzLl9zdGF0ZT0xKX1kZXN0cm95KCl7dGhpcy5maW5pc2goKSx0aGlzLl9zdGF0''@;'; put 'put ''ZTwzJiYoZC5pbml0aWFsU3R5bGVzQnlFbGVtZW50LmRlbGV0ZSh0aGlzLl9lbGVtZW50KSx0aGlzLl9zdGFydFN0eWxlcyYmKGtTKHRoaXMuX2VsZW1lbnQsdGhpcy5fc3RhcnRTdHlsZXMpLHRoaXMuX2VuZFN0eWxlcz1udWxsKSx0aGlzLl9lbmRTdHlsZXMmJihrUyh0aGlzLl9lbGVtZW50''@;'; put 'put ''LHRoaXMuX2VuZFN0eWxlcyksdGhpcy5fZW5kU3R5bGVzPW51bGwpLENnKHRoaXMuX2VsZW1lbnQsdGhpcy5faW5pdGlhbFN0eWxlcyksdGhpcy5fc3RhdGU9Myl9fXJldHVybiBkLmluaXRpYWxTdHlsZXNCeUVsZW1lbnQ9bmV3IFdlYWtNYXAsZH0pKCk7ZnVuY3Rpb24gUGhlKGQpe2xldCBn''@;'; put 'put ''PW51bGw7cmV0dXJuIGQuZm9yRWFjaCgoaCx2KT0+eyhmdW5jdGlvbiBlSGUoZCl7cmV0dXJuImRpc3BsYXkiPT09ZHx8InBvc2l0aW9uIj09PWR9KSh2KSYmKGc9Z3x8bmV3IE1hcCxnLnNldCh2LGgpKX0pLGd9Y2xhc3MgT3dle2NvbnN0cnVjdG9yKGcsaCx2LHkpe3RoaXMuZWxlbWVudD1n''@;'; put 'put ''LHRoaXMua2V5ZnJhbWVzPWgsdGhpcy5vcHRpb25zPXYsdGhpcy5fc3BlY2lhbFN0eWxlcz15LHRoaXMuX29uRG9uZUZucz1bXSx0aGlzLl9vblN0YXJ0Rm5zPVtdLHRoaXMuX29uRGVzdHJveUZucz1bXSx0aGlzLl9pbml0aWFsaXplZD0hMSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9zdGFy''@;'; put 'put ''dGVkPSExLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9vcmlnaW5hbE9uRG9uZUZucz1bXSx0aGlzLl9vcmlnaW5hbE9uU3RhcnRGbnM9W10sdGhpcy50aW1lPTAsdGhpcy5wYXJlbnRQbGF5ZXI9bnVsbCx0aGlzLmN1cnJlbnRTbmFwc2hvdD1uZXcgTWFwLHRoaXMuX2R1cmF0aW9uPXYuZHVy''@;'; put 'put ''YXRpb24sdGhpcy5fZGVsYXk9di5kZWxheXx8MCx0aGlzLnRpbWU9dGhpcy5fZHVyYXRpb24rdGhpcy5fZGVsYXl9X29uRmluaXNoKCl7dGhpcy5fZmluaXNoZWR8fCh0aGlzLl9maW5pc2hlZD0hMCx0aGlzLl9vbkRvbmVGbnMuZm9yRWFjaChnPT5nKCkpLHRoaXMuX29uRG9uZUZucz1bXSl9''@;'; put 'put ''aW5pdCgpe3RoaXMuX2J1aWxkUGxheWVyKCksdGhpcy5fcHJlcGFyZVBsYXllckJlZm9yZVN0YXJ0KCl9X2J1aWxkUGxheWVyKCl7aWYodGhpcy5faW5pdGlhbGl6ZWQpcmV0dXJuO3RoaXMuX2luaXRpYWxpemVkPSEwO2NvbnN0IGc9dGhpcy5rZXlmcmFtZXM7dGhpcy5kb21QbGF5ZXI9dGhp''@;'; put 'put ''cy5fdHJpZ2dlcldlYkFuaW1hdGlvbih0aGlzLmVsZW1lbnQsZyx0aGlzLm9wdGlvbnMpLHRoaXMuX2ZpbmFsS2V5ZnJhbWU9Zy5sZW5ndGg/Z1tnLmxlbmd0aC0xXTpuZXcgTWFwLHRoaXMuZG9tUGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoImZpbmlzaCIsKCk9PnRoaXMuX29uRmluaXNoKCkp''@;'; put 'put ''fV9wcmVwYXJlUGxheWVyQmVmb3JlU3RhcnQoKXt0aGlzLl9kZWxheT90aGlzLl9yZXNldERvbVBsYXllclN0YXRlKCk6dGhpcy5kb21QbGF5ZXIucGF1c2UoKX1fY29udmVydEtleWZyYW1lc1RvT2JqZWN0KGcpe2NvbnN0IGg9W107cmV0dXJuIGcuZm9yRWFjaCh2PT57aC5wdXNoKE9iamVj''@;'; put 'put ''dC5mcm9tRW50cmllcyh2KSl9KSxofV90cmlnZ2VyV2ViQW5pbWF0aW9uKGcsaCx2KXtyZXR1cm4gZy5hbmltYXRlKHRoaXMuX2NvbnZlcnRLZXlmcmFtZXNUb09iamVjdChoKSx2KX1vblN0YXJ0KGcpe3RoaXMuX29yaWdpbmFsT25TdGFydEZucy5wdXNoKGcpLHRoaXMuX29uU3RhcnRGbnMu''@;'; put 'put ''cHVzaChnKX1vbkRvbmUoZyl7dGhpcy5fb3JpZ2luYWxPbkRvbmVGbnMucHVzaChnKSx0aGlzLl9vbkRvbmVGbnMucHVzaChnKX1vbkRlc3Ryb3koZyl7dGhpcy5fb25EZXN0cm95Rm5zLnB1c2goZyl9cGxheSgpe3RoaXMuX2J1aWxkUGxheWVyKCksdGhpcy5oYXNTdGFydGVkKCl8fCh0aGlz''@;'; put 'put ''Ll9vblN0YXJ0Rm5zLmZvckVhY2goZz0+ZygpKSx0aGlzLl9vblN0YXJ0Rm5zPVtdLHRoaXMuX3N0YXJ0ZWQ9ITAsdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5zdGFydCgpKSx0aGlzLmRvbVBsYXllci5wbGF5KCl9cGF1c2UoKXt0aGlzLmluaXQoKSx0aGlzLmRv''@;'; put 'put ''bVBsYXllci5wYXVzZSgpfWZpbmlzaCgpe3RoaXMuaW5pdCgpLHRoaXMuX3NwZWNpYWxTdHlsZXMmJnRoaXMuX3NwZWNpYWxTdHlsZXMuZmluaXNoKCksdGhpcy5fb25GaW5pc2goKSx0aGlzLmRvbVBsYXllci5maW5pc2goKX1yZXNldCgpe3RoaXMuX3Jlc2V0RG9tUGxheWVyU3RhdGUoKSx0''@;'; put 'put ''aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9vblN0YXJ0Rm5zPXRoaXMuX29yaWdpbmFsT25TdGFydEZucyx0aGlzLl9vbkRvbmVGbnM9dGhpcy5fb3JpZ2luYWxPbkRvbmVGbnN9X3Jlc2V0RG9tUGxheWVyU3RhdGUoKXt0aGlzLmRv''@;'; put 'put ''bVBsYXllciYmdGhpcy5kb21QbGF5ZXIuY2FuY2VsKCl9cmVzdGFydCgpe3RoaXMucmVzZXQoKSx0aGlzLnBsYXkoKX1oYXNTdGFydGVkKCl7cmV0dXJuIHRoaXMuX3N0YXJ0ZWR9ZGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZHx8KHRoaXMuX2Rlc3Ryb3llZD0hMCx0aGlzLl9yZXNldERvbVBs''@;'; put 'put ''YXllclN0YXRlKCksdGhpcy5fb25GaW5pc2goKSx0aGlzLl9zcGVjaWFsU3R5bGVzJiZ0aGlzLl9zcGVjaWFsU3R5bGVzLmRlc3Ryb3koKSx0aGlzLl9vbkRlc3Ryb3lGbnMuZm9yRWFjaChnPT5nKCkpLHRoaXMuX29uRGVzdHJveUZucz1bXSl9c2V0UG9zaXRpb24oZyl7dm9pZCAwPT09dGhp''@;'; put 'put ''cy5kb21QbGF5ZXImJnRoaXMuaW5pdCgpLHRoaXMuZG9tUGxheWVyLmN1cnJlbnRUaW1lPWcqdGhpcy50aW1lfWdldFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuZG9tUGxheWVyLmN1cnJlbnRUaW1lL3RoaXMudGltZX1nZXQgdG90YWxUaW1lKCl7cmV0dXJuIHRoaXMuX2RlbGF5K3RoaXMuX2R1''@;'; put 'put ''cmF0aW9ufWJlZm9yZURlc3Ryb3koKXtjb25zdCBnPW5ldyBNYXA7dGhpcy5oYXNTdGFydGVkKCkmJnRoaXMuX2ZpbmFsS2V5ZnJhbWUuZm9yRWFjaCgodix5KT0+eyJvZmZzZXQiIT09eSYmZy5zZXQoeSx0aGlzLl9maW5pc2hlZD92OkF3ZSh0aGlzLmVsZW1lbnQseSkpfSksdGhpcy5jdXJy''@;'; put 'put ''ZW50U25hcHNob3Q9Z310cmlnZ2VyQ2FsbGJhY2soZyl7Y29uc3QgaD0ic3RhcnQiPT09Zz90aGlzLl9vblN0YXJ0Rm5zOnRoaXMuX29uRG9uZUZucztoLmZvckVhY2godj0+digpKSxoLmxlbmd0aD0wfX1jbGFzcyB0SGV7dmFsaWRhdGVTdHlsZVByb3BlcnR5KGcpe3JldHVybiEwfXZhbGlk''@;'; put 'put ''YXRlQW5pbWF0YWJsZVN0eWxlUHJvcGVydHkoZyl7cmV0dXJuITB9bWF0Y2hlc0VsZW1lbnQoZyxoKXtyZXR1cm4hMX1jb250YWluc0VsZW1lbnQoZyxoKXtyZXR1cm4gc3dlKGcsaCl9Z2V0UGFyZW50RWxlbWVudChnKXtyZXR1cm4gQWhlKGcpfXF1ZXJ5KGcsaCx2KXtyZXR1cm4gdXdlKGcs''@;'; put 'put ''aCx2KX1jb21wdXRlU3R5bGUoZyxoLHYpe3JldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShnKVtoXX1hbmltYXRlKGcsaCx2LHksQyxJPVtdKXtjb25zdCB1ZT17ZHVyYXRpb246dixkZWxheTp5LGZpbGw6MD09eT8iYm90aCI6ImZvcndhcmRzIn07QyYmKHVlLmVhc2luZz1DKTtjb25z''@;'; put 'put ''dCBfZT1uZXcgTWFwLEJlPUkuZmlsdGVyKHB0PT5wdCBpbnN0YW5jZW9mIE93ZSk7KGZ1bmN0aW9uIG9GZShkLGcpe3JldHVybiAwPT09ZHx8MD09PWd9KSh2LHkpJiZCZS5mb3JFYWNoKHB0PT57cHQuY3VycmVudFNuYXBzaG90LmZvckVhY2goKE90LCR0KT0+X2Uuc2V0KCR0LE90KSl9KTts''@;'; put 'put ''ZXQgTmU9ZnVuY3Rpb24gdEZlKGQpe3JldHVybiBkLmxlbmd0aD9kWzBdaW5zdGFuY2VvZiBNYXA/ZDpkLm1hcChnPT5kd2UoZykpOltdfShoKS5tYXAocHQ9Pnd3KHB0KSk7TmU9ZnVuY3Rpb24gYUZlKGQsZyxoKXtpZihoLnNpemUmJmcubGVuZ3RoKXtsZXQgdj1nWzBdLHk9W107aWYoaC5m''@;'; put 'put ''b3JFYWNoKChDLEkpPT57di5oYXMoSSl8fHkucHVzaChJKSx2LnNldChJLEMpfSkseS5sZW5ndGgpZm9yKGxldCBDPTE7QzxnLmxlbmd0aDtDKyspe2xldCBJPWdbQ107eS5mb3JFYWNoKFo9Pkkuc2V0KFosQXdlKGQsWikpKX19cmV0dXJuIGd9KGcsTmUsX2UpO2NvbnN0IEtlPWZ1bmN0aW9u''@;'; put 'put ''ICRGZShkLGcpe2xldCBoPW51bGwsdj1udWxsO3JldHVybiBBcnJheS5pc0FycmF5KGcpJiZnLmxlbmd0aD8oaD1QaGUoZ1swXSksZy5sZW5ndGg+MSYmKHY9UGhlKGdbZy5sZW5ndGgtMV0pKSk6ZyBpbnN0YW5jZW9mIE1hcCYmKGg9UGhlKGcpKSxofHx2P25ldyBxRmUoZCxoLHYpOm51bGx9''@;'; put 'put ''KGcsTmUpO3JldHVybiBuZXcgT3dlKGcsTmUsdWUsS2UpfX1sZXQgbkhlPSgoKT0+e2NsYXNzIGQgZXh0ZW5kcyBTWHtjb25zdHJ1Y3RvcihoLHYpe3N1cGVyKCksdGhpcy5fbmV4dEFuaW1hdGlvbklkPTAsdGhpcy5fcmVuZGVyZXI9aC5jcmVhdGVSZW5kZXJlcih2LmJvZHkse2lkOiIwIixl''@;'; put 'put ''bmNhcHN1bGF0aW9uOngyLk5vbmUsc3R5bGVzOltdLGRhdGE6e2FuaW1hdGlvbjpbXX19KX1idWlsZChoKXtjb25zdCB2PXRoaXMuX25leHRBbmltYXRpb25JZC50b1N0cmluZygpO3RoaXMuX25leHRBbmltYXRpb25JZCsrO2NvbnN0IHk9QXJyYXkuaXNBcnJheShoKT9UayhoKTpoO3JldHVy''@;'; put 'put ''biBSd2UodGhpcy5fcmVuZGVyZXIsbnVsbCx2LCJyZWdpc3RlciIsW3ldKSxuZXcgckhlKHYsdGhpcy5fcmVuZGVyZXIpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShNZCksQ2koZ3MpKX0sZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rv''@;'; put 'put ''cnk6ZC5cdTAyNzVmYWN9KSxkfSkoKTtjbGFzcyBySGUgZXh0ZW5kcyBjbGFzcyBvMmV7fXtjb25zdHJ1Y3RvcihnLGgpe3N1cGVyKCksdGhpcy5faWQ9Zyx0aGlzLl9yZW5kZXJlcj1ofWNyZWF0ZShnLGgpe3JldHVybiBuZXcgaUhlKHRoaXMuX2lkLGcsaHx8e30sdGhpcy5fcmVuZGVyZXIp''@;'; put 'put ''fX1jbGFzcyBpSGV7Y29uc3RydWN0b3IoZyxoLHYseSl7dGhpcy5pZD1nLHRoaXMuZWxlbWVudD1oLHRoaXMuX3JlbmRlcmVyPXksdGhpcy5wYXJlbnRQbGF5ZXI9bnVsbCx0aGlzLl9zdGFydGVkPSExLHRoaXMudG90YWxUaW1lPTAsdGhpcy5fY29tbWFuZCgiY3JlYXRlIix2KX1fbGlzdGVu''@;'; put 'put ''KGcsaCl7cmV0dXJuIHRoaXMuX3JlbmRlcmVyLmxpc3Rlbih0aGlzLmVsZW1lbnQsYEBAJHt0aGlzLmlkfToke2d9YCxoKX1fY29tbWFuZChnLC4uLmgpe3JldHVybiBSd2UodGhpcy5fcmVuZGVyZXIsdGhpcy5lbGVtZW50LHRoaXMuaWQsZyxoKX1vbkRvbmUoZyl7dGhpcy5fbGlzdGVuKCJk''@;'; put 'put ''b25lIixnKX1vblN0YXJ0KGcpe3RoaXMuX2xpc3Rlbigic3RhcnQiLGcpfW9uRGVzdHJveShnKXt0aGlzLl9saXN0ZW4oImRlc3Ryb3kiLGcpfWluaXQoKXt0aGlzLl9jb21tYW5kKCJpbml0Iil9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVkfXBsYXkoKXt0aGlzLl9jb21tYW5k''@;'; put 'put ''KCJwbGF5IiksdGhpcy5fc3RhcnRlZD0hMH1wYXVzZSgpe3RoaXMuX2NvbW1hbmQoInBhdXNlIil9cmVzdGFydCgpe3RoaXMuX2NvbW1hbmQoInJlc3RhcnQiKX1maW5pc2goKXt0aGlzLl9jb21tYW5kKCJmaW5pc2giKX1kZXN0cm95KCl7dGhpcy5fY29tbWFuZCgiZGVzdHJveSIpfXJlc2V0''@;'; put 'put ''KCl7dGhpcy5fY29tbWFuZCgicmVzZXQiKSx0aGlzLl9zdGFydGVkPSExfXNldFBvc2l0aW9uKGcpe3RoaXMuX2NvbW1hbmQoInNldFBvc2l0aW9uIixnKX1nZXRQb3NpdGlvbigpe3ZhciBnLGg7cmV0dXJuIG51bGwhPT0oaD1udWxsPT09KGc9dGhpcy5fcmVuZGVyZXIuZW5naW5lLnBsYXll''@;'; put 'put ''cnNbK3RoaXMuaWRdKXx8dm9pZCAwPT09Zz92b2lkIDA6Zy5nZXRQb3NpdGlvbigpKSYmdm9pZCAwIT09aD9oOjB9fWZ1bmN0aW9uIFJ3ZShkLGcsaCx2LHkpe3JldHVybiBkLnNldFByb3BlcnR5KGcsYEBAJHtofToke3Z9YCx5KX1jb25zdCBCd2U9IkAuZGlzYWJsZWQiO2xldCBvSGU9KCgp''@;'; put 'put ''PT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5kZWxlZ2F0ZT1oLHRoaXMuZW5naW5lPXYsdGhpcy5fem9uZT15LHRoaXMuX2N1cnJlbnRJZD0wLHRoaXMuX21pY3JvdGFza0lkPTEsdGhpcy5fYW5pbWF0aW9uQ2FsbGJhY2tzQnVmZmVyPVtdLHRoaXMuX3JlbmRlcmVyQ2FjaGU9''@;'; put 'put ''bmV3IE1hcCx0aGlzLl9jZFJlY3VyRGVwdGg9MCx0aGlzLnByb21pc2U9UHJvbWlzZS5yZXNvbHZlKDApLHYub25SZW1vdmFsQ29tcGxldGU9KEMsSSk9Pntjb25zdCBaPW51bGw9PUk/dm9pZCAwOkkucGFyZW50Tm9kZShDKTtaJiZJLnJlbW92ZUNoaWxkKFosQyl9fWNyZWF0ZVJlbmRlcmVy''@;'; put 'put ''KGgsdil7Y29uc3QgQz10aGlzLmRlbGVnYXRlLmNyZWF0ZVJlbmRlcmVyKGgsdik7aWYoIShoJiZ2JiZ2LmRhdGEmJnYuZGF0YS5hbmltYXRpb24pKXtsZXQgQmU9dGhpcy5fcmVuZGVyZXJDYWNoZS5nZXQoQyk7cmV0dXJuIEJlfHwoQmU9bmV3IFB3ZSgiIixDLHRoaXMuZW5naW5lKSx0aGlz''@;'; put 'put ''Ll9yZW5kZXJlckNhY2hlLnNldChDLEJlKSksQmV9Y29uc3QgST12LmlkLFo9di5pZCsiLSIrdGhpcy5fY3VycmVudElkO3RoaXMuX2N1cnJlbnRJZCsrLHRoaXMuZW5naW5lLnJlZ2lzdGVyKFosaCk7Y29uc3QgdWU9QmU9PntBcnJheS5pc0FycmF5KEJlKT9CZS5mb3JFYWNoKHVlKTp0aGlz''@;'; put 'put ''LmVuZ2luZS5yZWdpc3RlclRyaWdnZXIoSSxaLGgsQmUubmFtZSxCZSl9O3JldHVybiB2LmRhdGEuYW5pbWF0aW9uLmZvckVhY2godWUpLG5ldyBhSGUodGhpcyxaLEMsdGhpcy5lbmdpbmUpfWJlZ2luKCl7dGhpcy5fY2RSZWN1ckRlcHRoKyssdGhpcy5kZWxlZ2F0ZS5iZWdpbiYmdGhpcy5k''@;'; put 'put ''ZWxlZ2F0ZS5iZWdpbigpfV9zY2hlZHVsZUNvdW50VGFzaygpe3RoaXMucHJvbWlzZS50aGVuKCgpPT57dGhpcy5fbWljcm90YXNrSWQrK30pfXNjaGVkdWxlTGlzdGVuZXJDYWxsYmFjayhoLHYseSl7aD49MCYmaDx0aGlzLl9taWNyb3Rhc2tJZD90aGlzLl96b25lLnJ1bigoKT0+dih5KSk6''@;'; put 'put ''KDA9PXRoaXMuX2FuaW1hdGlvbkNhbGxiYWNrc0J1ZmZlci5sZW5ndGgmJlByb21pc2UucmVzb2x2ZShudWxsKS50aGVuKCgpPT57dGhpcy5fem9uZS5ydW4oKCk9Pnt0aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXIuZm9yRWFjaChDPT57Y29uc3RbSSxaXT1DO0koWil9KSx0aGlzLl9h''@;'; put 'put ''bmltYXRpb25DYWxsYmFja3NCdWZmZXI9W119KX0pLHRoaXMuX2FuaW1hdGlvbkNhbGxiYWNrc0J1ZmZlci5wdXNoKFt2LHldKSl9ZW5kKCl7dGhpcy5fY2RSZWN1ckRlcHRoLS0sMD09dGhpcy5fY2RSZWN1ckRlcHRoJiZ0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5f''@;'; put 'put ''c2NoZWR1bGVDb3VudFRhc2soKSx0aGlzLmVuZ2luZS5mbHVzaCh0aGlzLl9taWNyb3Rhc2tJZCl9KSx0aGlzLmRlbGVnYXRlLmVuZCYmdGhpcy5kZWxlZ2F0ZS5lbmQoKX13aGVuUmVuZGVyaW5nRG9uZSgpe3JldHVybiB0aGlzLmVuZ2luZS53aGVuUmVuZGVyaW5nRG9uZSgpfX1yZXR1cm4g''@;'; put 'put ''ZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShNZCksQ2koVnEpLENpKF9sKSl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y2xhc3MgUHdle2NvbnN0cnVjdG9yKGcsaCx2KXt0aGlzLm5hbWVzcGFjZUlkPWcs''@;'; put 'put ''dGhpcy5kZWxlZ2F0ZT1oLHRoaXMuZW5naW5lPXYsdGhpcy5kZXN0cm95Tm9kZT10aGlzLmRlbGVnYXRlLmRlc3Ryb3lOb2RlP3k9PmguZGVzdHJveU5vZGUoeSk6bnVsbH1nZXQgZGF0YSgpe3JldHVybiB0aGlzLmRlbGVnYXRlLmRhdGF9ZGVzdHJveSgpe3RoaXMuZW5naW5lLmRlc3Ryb3ko''@;'; put 'put ''dGhpcy5uYW1lc3BhY2VJZCx0aGlzLmRlbGVnYXRlKSx0aGlzLmRlbGVnYXRlLmRlc3Ryb3koKX1jcmVhdGVFbGVtZW50KGcsaCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuY3JlYXRlRWxlbWVudChnLGgpfWNyZWF0ZUNvbW1lbnQoZyl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuY3JlYXRlQ29tbWVu''@;'; put 'put ''dChnKX1jcmVhdGVUZXh0KGcpe3JldHVybiB0aGlzLmRlbGVnYXRlLmNyZWF0ZVRleHQoZyl9YXBwZW5kQ2hpbGQoZyxoKXt0aGlzLmRlbGVnYXRlLmFwcGVuZENoaWxkKGcsaCksdGhpcy5lbmdpbmUub25JbnNlcnQodGhpcy5uYW1lc3BhY2VJZCxoLGcsITEpfWluc2VydEJlZm9yZShnLGgs''@;'; put 'put ''dix5PSEwKXt0aGlzLmRlbGVnYXRlLmluc2VydEJlZm9yZShnLGgsdiksdGhpcy5lbmdpbmUub25JbnNlcnQodGhpcy5uYW1lc3BhY2VJZCxoLGcseSl9cmVtb3ZlQ2hpbGQoZyxoLHYpe3RoaXMuZW5naW5lLm9uUmVtb3ZlKHRoaXMubmFtZXNwYWNlSWQsaCx0aGlzLmRlbGVnYXRlLHYpfXNl''@;'; put 'put ''bGVjdFJvb3RFbGVtZW50KGcsaCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuc2VsZWN0Um9vdEVsZW1lbnQoZyxoKX1wYXJlbnROb2RlKGcpe3JldHVybiB0aGlzLmRlbGVnYXRlLnBhcmVudE5vZGUoZyl9bmV4dFNpYmxpbmcoZyl7cmV0dXJuIHRoaXMuZGVsZWdhdGUubmV4dFNpYmxpbmcoZyl9''@;'; put 'put ''c2V0QXR0cmlidXRlKGcsaCx2LHkpe3RoaXMuZGVsZWdhdGUuc2V0QXR0cmlidXRlKGcsaCx2LHkpfXJlbW92ZUF0dHJpYnV0ZShnLGgsdil7dGhpcy5kZWxlZ2F0ZS5yZW1vdmVBdHRyaWJ1dGUoZyxoLHYpfWFkZENsYXNzKGcsaCl7dGhpcy5kZWxlZ2F0ZS5hZGRDbGFzcyhnLGgpfXJlbW92''@;'; put 'put ''ZUNsYXNzKGcsaCl7dGhpcy5kZWxlZ2F0ZS5yZW1vdmVDbGFzcyhnLGgpfXNldFN0eWxlKGcsaCx2LHkpe3RoaXMuZGVsZWdhdGUuc2V0U3R5bGUoZyxoLHYseSl9cmVtb3ZlU3R5bGUoZyxoLHYpe3RoaXMuZGVsZWdhdGUucmVtb3ZlU3R5bGUoZyxoLHYpfXNldFByb3BlcnR5KGcsaCx2KXsi''@;'; put 'put ''QCI9PWguY2hhckF0KDApJiZoPT1Cd2U/dGhpcy5kaXNhYmxlQW5pbWF0aW9ucyhnLCEhdik6dGhpcy5kZWxlZ2F0ZS5zZXRQcm9wZXJ0eShnLGgsdil9c2V0VmFsdWUoZyxoKXt0aGlzLmRlbGVnYXRlLnNldFZhbHVlKGcsaCl9bGlzdGVuKGcsaCx2KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5s''@;'; put 'put ''aXN0ZW4oZyxoLHYpfWRpc2FibGVBbmltYXRpb25zKGcsaCl7dGhpcy5lbmdpbmUuZGlzYWJsZUFuaW1hdGlvbnMoZyxoKX19Y2xhc3MgYUhlIGV4dGVuZHMgUHdle2NvbnN0cnVjdG9yKGcsaCx2LHkpe3N1cGVyKGgsdix5KSx0aGlzLmZhY3Rvcnk9Zyx0aGlzLm5hbWVzcGFjZUlkPWh9c2V0''@;'; put 'put ''UHJvcGVydHkoZyxoLHYpeyJAIj09aC5jaGFyQXQoMCk/Ii4iPT1oLmNoYXJBdCgxKSYmaD09QndlP3RoaXMuZGlzYWJsZUFuaW1hdGlvbnMoZyx2PXZvaWQgMD09PXZ8fCEhdik6dGhpcy5lbmdpbmUucHJvY2Vzcyh0aGlzLm5hbWVzcGFjZUlkLGcsaC5zbGljZSgxKSx2KTp0aGlzLmRlbGVn''@;'; put 'put ''YXRlLnNldFByb3BlcnR5KGcsaCx2KX1saXN0ZW4oZyxoLHYpe2lmKCJAIj09aC5jaGFyQXQoMCkpe2NvbnN0IHk9ZnVuY3Rpb24gbEhlKGQpe3N3aXRjaChkKXtjYXNlImJvZHkiOnJldHVybiBkb2N1bWVudC5ib2R5O2Nhc2UiZG9jdW1lbnQiOnJldHVybiBkb2N1bWVudDtjYXNlIndpbmRv''@;'; put 'put ''dyI6cmV0dXJuIHdpbmRvdztkZWZhdWx0OnJldHVybiBkfX0oZyk7bGV0IEM9aC5zbGljZSgxKSxJPSIiO3JldHVybiJAIiE9Qy5jaGFyQXQoMCkmJihbQyxJXT1mdW5jdGlvbiBzSGUoZCl7Y29uc3QgZz1kLmluZGV4T2YoIi4iKTtyZXR1cm5bZC5zdWJzdHJpbmcoMCxnKSxkLnNsaWNlKGcr''@;'; put 'put ''MSldfShDKSksdGhpcy5lbmdpbmUubGlzdGVuKHRoaXMubmFtZXNwYWNlSWQseSxDLEksWj0+e3RoaXMuZmFjdG9yeS5zY2hlZHVsZUxpc3RlbmVyQ2FsbGJhY2soWi5fZGF0YXx8LTEsdixaKX0pfXJldHVybiB0aGlzLmRlbGVnYXRlLmxpc3RlbihnLGgsdil9fWxldCB1SGU9KCgpPT57Y2xh''@;'; put 'put ''c3MgZCBleHRlbmRzIFZxe2NvbnN0cnVjdG9yKGgsdix5LEMpe3N1cGVyKGguYm9keSx2LHkpfW5nT25EZXN0cm95KCl7dGhpcy5mbHVzaCgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShncyksQ2koeWhlKSxDaShJaGUpLENpKGtDKSl9LGQu''@;'; put 'put ''XHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7Y29uc3QgRndlPVt7cHJvdmlkZTpTWCx1c2VDbGFzczpuSGV9LHtwcm92aWRlOkloZSx1c2VGYWN0b3J5OmZ1bmN0aW9uIGNIZSgpe3JldHVybiBuZXcgVEZlfX0se3Byb3ZpZGU6VnEsdXNlQ2xhc3M6''@;'; put 'put ''dUhlfSx7cHJvdmlkZTpNZCx1c2VGYWN0b3J5OmZ1bmN0aW9uIGZIZShkLGcsaCl7cmV0dXJuIG5ldyBvSGUoZCxnLGgpfSxkZXBzOltLVCxWcSxfbF19XSxGaGU9W3twcm92aWRlOnloZSx1c2VGYWN0b3J5OigpPT5uZXcgdEhlfSx7cHJvdmlkZTpJRyx1c2VWYWx1ZToiQnJvd3NlckFuaW1h''@;'; put 'put ''dGlvbnMifSwuLi5Gd2VdLEh3ZT1be3Byb3ZpZGU6eWhlLHVzZUNsYXNzOmN3ZX0se3Byb3ZpZGU6SUcsdXNlVmFsdWU6Ik5vb3BBbmltYXRpb25zIn0sLi4uRndlXTtsZXQgaEhlPSgoKT0+e2NsYXNzIGR7c3RhdGljIHdpdGhDb25maWcoaCl7cmV0dXJue25nTW9kdWxlOmQscHJvdmlkZXJz''@;'; put 'put ''OmguZGlzYWJsZUFuaW1hdGlvbnM/SHdlOkZoZX19fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe3Byb3ZpZGVyczpGaGUsaW1wb3J0czpbJFddfSksZH0pKCksZEhlPSgoKT0+''@;'; put 'put ''e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLm9wZW49ITF9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJuZy1jb21wb25lbnQiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRh''@;'; put 'put ''aW5lciJdLGRlY2xzOjMsdmFyczowLGNvbnN0czpbWzEsImNvbnRlbnQtYXJlYSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKG50KDAsImRpdiIsMCkoMSwicCIpLFl0KDIsIlRoaXMgaXMgYSBwYWdlIHRvIGhlbHAgZGVtb25zdHJhdGUgcm91dGluZy4iKSxvdCgpKCkpfX0pLGR9''@;'; put 'put ''KSgpO2NvbnN0IHBIZT1bInNpZGViYXJOYXYiXTtmdW5jdGlvbiBnSGUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJhIiwxOCksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KDMpLm5hdmlnYXRlVG9WaWV3ZXIoKSl9KSxZdCgxLCJEYXRhIiksb3QoKX19''@;'; put 'put ''ZnVuY3Rpb24gbUhlKGQsZyl7MSZkJiYobnQoMCwiYSIsMTkpLFl0KDEsIkxpbmVhZ2UiKSxvdCgpKX1mdW5jdGlvbiB2SGUoZCxnKXsxJmQmJihudCgwLCJhIiwyMCksWXQoMSwiTWV0YWRhdGEiKSxvdCgpKX1mdW5jdGlvbiBBSGUoZCxnKXsxJmQmJihudCgwLCJhIiwyMSksWXQoMSwiIFVz''@;'; put 'put ''ZXJzIiksb3QoKSl9ZnVuY3Rpb24geUhlKGQsZyl7MSZkJiYobnQoMCwiYSIsMjIpLFl0KDEsIlN1Ym1pdHRlZCIpLG90KCkpfWZ1bmN0aW9uIHdIZShkLGcpezEmZCYmKG50KDAsImEiLDIzKSxZdCgxLCJUbyBBcHByb3ZlIiksb3QoKSl9ZnVuY3Rpb24gYkhlKGQsZyl7aWYoMSZkJiYobnQo''@;'; put 'put ''MCwiY2xyLWRyb3Bkb3duLW1lbnUiKSxybigxLGdIZSwyLDAsImEiLDEyKSxybigyLG1IZSwyLDAsImEiLDEzKSxybigzLHZIZSwyLDAsImEiLDE0KSxybig0LEFIZSwyLDAsImEiLDE1KSxybig1LHlIZSwyLDAsImEiLDE2KSxybig2LHdIZSwyLDAsImEiLDE3KSxvdCgpKSwyJmQpe2NvbnN0''@;'; put 'put ''IGg9UXQoMik7dXQoMSksVHQoIm5nSWYiLGguaXNNYWluUm91dGUoInZpZXciKSksdXQoMSksVHQoIm5nSWYiLGguaXNNYWluUm91dGUoInZpZXciKSYmIlNBUzkiPT09aC5zZXJ2ZXJUeXBlKSx1dCgxKSxUdCgibmdJZiIsaC5pc01haW5Sb3V0ZSgidmlldyIpJiYiU0FTOSI9PT1oLnNlcnZl''@;'; put 'put ''clR5cGUpLHV0KDEpLFR0KCJuZ0lmIixoLmlzTWFpblJvdXRlKCJ2aWV3IikpLHV0KDEpLFR0KCJuZ0lmIixoLmlzTWFpblJvdXRlKCJhcHByb3ZlIikpLHV0KDEpLFR0KCJuZ0lmIixoLmlzTWFpblJvdXRlKCJhcHByb3ZlIikpfX1mdW5jdGlvbiBfSGUoZCxnKXtpZigxJmQmJihudCgwLCJk''@;'; put 'put ''aXYiLDgpKDEsImNsci1kcm9wZG93biIpKDIsImJ1dHRvbiIsOSksWXQoMyksQ3IoNCwiY2xyLWljb24iLDEwKSxvdCgpLHJuKDUsYkhlLDcsNiwiY2xyLWRyb3Bkb3duLW1lbnUiLDExKSxvdCgpKCkpLDImZCl7Y29uc3QgaD1RdCgpO3V0KDMpLEppKCIgIixoLmdldFN1YlBhZ2UoKSwiICIp''@;'; put 'put ''fX1mdW5jdGlvbiBDSGUoZCxnKXsxJmQmJkNyKDAsImNsci10YWItY29udGVudCIpfWZ1bmN0aW9uIGtIZShkLGcpezEmZCYmQ3IoMCwiY2xyLXRhYi1jb250ZW50Iil9Y29uc3QgU0hlPWZ1bmN0aW9uKCl7cmV0dXJuWyIvdmlldy91c2VybmF2L3JvbGVzIl19O2Z1bmN0aW9uIE1IZShkLGcp''@;'; put 'put ''e2lmKDEmZCYmKG50KDAsImNsci10YWIiKSgxLCJidXR0b24iLDI1KSgyLCJwIiwyNiksQ3IoMywiY2xyLWljb24iLDMxKSxZdCg0LCIgUm9sZXMgIiksb3QoKSgpLHJuKDUsa0hlLDEsMCwiY2xyLXRhYi1jb250ZW50IiwyOSksb3QoKSksMiZkKXtjb25zdCBoPVF0KDIpO3V0KDEpLFR0KCJy''@;'; put 'put ''b3V0ZXJMaW5rIixjcygyLFNIZSkpLHV0KDQpLFR0KCJjbHJJZkFjdGl2ZSIsaC5pc01haW5Sb3V0ZSgiL3ZpZXcvdXNlcm5hdi9yb2xlcyIpKX19Y29uc3QgRUhlPWZ1bmN0aW9uKCl7cmV0dXJuWyIvdmlldy91c2VybmF2L3VzZXJzIl19LHhIZT1mdW5jdGlvbigpe3JldHVyblsiL3ZpZXcv''@;'; put 'put ''dXNlcm5hdi9ncm91cHMiXX07ZnVuY3Rpb24gVEhlKGQsZyl7aWYoMSZkJiYobnQoMCwiY2xyLXRhYnMiLDI0KSgxLCJjbHItdGFiIikoMiwiYnV0dG9uIiwyNSkoMywicCIsMjYpLENyKDQsImNsci1pY29uIiwyNyksWXQoNSwiIFVzZXJzIiksb3QoKSgpLENyKDYsImNsci10YWItY29udGVu''@;'; put 'put ''dCIpLG90KCksbnQoNywiY2xyLXRhYiIpKDgsImJ1dHRvbiIsMjUpKDksInAiLDI2KSxDcigxMCwiY2xyLWljb24iLDI4KSxZdCgxMSwiIEdyb3VwcyIpLG90KCkoKSxybigxMixDSGUsMSwwLCJjbHItdGFiLWNvbnRlbnQiLDI5KSxvdCgpLHJuKDEzLE1IZSw2LDMsImNsci10YWIiLDMwKSxv''@;'; put 'put ''dCgpKSwyJmQpe2NvbnN0IGg9UXQoKTt1dCgyKSxUdCgicm91dGVyTGluayIsY3MoNCxFSGUpKSx1dCg2KSxUdCgicm91dGVyTGluayIsY3MoNSx4SGUpKSx1dCg0KSxUdCgiY2xySWZBY3RpdmUiLGguaXNNYWluUm91dGUoIi92aWV3L3VzZXJuYXYvZ3JvdXBzIikpLHV0KDEpLFR0KCJuZ0lm''@;'; put 'put ''IiwiU0FTOSI9PT1oLnNlcnZlclR5cGUpfX1mdW5jdGlvbiBJSGUoZCxnKXsxJmQmJihudCgwLCJwIiwzMiksWXQoMSwiRWRpdCIpLG90KCkpfWNvbnN0IERIZT1bIioiXTtsZXQgTVM9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSl7dGhpcy5fcm91dGVyPWgsdGhpcy5ldmVudFNl''@;'; put 'put ''cnZpY2U9dix0aGlzLl9zYXNTZXJ2aWNlPXksdGhpcy5zY3JvbGxlZFRvQm90dG9tPW5ldyBhcix0aGlzLnNpZGViYXJPcGVuPSEwLHRoaXMuc2lkZWJhcldpZHRoPW51bGwsdGhpcy5zaWRlYmFyTWF4V2lkdGg9bnVsbCx0aGlzLnJlc2l6aW5nPSExLHRoaXMuc2FzanNDb25maWc9bmV3IFUz''@;'; put 'put ''LlNBU2pzQ29uZmlnLHRoaXMuc2FzanNDb25maWc9dGhpcy5fc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpLHRoaXMuc2VydmVyVHlwZT10aGlzLl9zYXNTZXJ2aWNlLmdldFNlcnZlclR5cGUoKX1uZ09uSW5pdCgpe3RoaXMuZXZlbnRTZXJ2aWNlLm9uU2lkZWJhclRvZ2dsZS5zdWJzY3Jp''@;'; put 'put ''YmUoaD0+e3RoaXMuc2lkZWJhck9wZW49aD9oLm9wZW46IXRoaXMuc2lkZWJhck9wZW4sdGhpcy5ldmVudFNlcnZpY2UuZGlzcGF0Y2hFdmVudCgicmVzaXplIil9KX1vblRyZWVTY3JvbGwoaCl7bGV0IHY9aC50YXJnZXQ7di5zY3JvbGxUb3A+PXYuc2Nyb2xsSGVpZ2h0LXYub2Zmc2V0SGVp''@;'; put 'put ''Z2h0LTEwJiZ0aGlzLnNjcm9sbGVkVG9Cb3R0b20uZW1pdCgpfWlzTWFpblJvdXRlKGgpe3JldHVybiB0aGlzLl9yb3V0ZXIudXJsLmluY2x1ZGVzKGgpfWdldFN1YlBhZ2UoKXtyZXR1cm4gdGhpcy5fcm91dGVyLnVybC5zcGxpdCgiLyIpWzJdfW5hdmlnYXRlVG9WaWV3ZXIoKXtuaS52aWV3''@;'; put 'put ''ZXIuY3VycmVudFNlbGVjdGlvbj0iIix0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3ZpZXcvZGF0YSIpfXJlc2l6ZVN0YXJ0KCl7dGhpcy5yZXNpemluZz0hMCxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLnN0eWxlLmNzc1RleHQ9InVzZXItc2VsZWN0OiBu''@;'; put 'put ''b25lIn1yZXNpemVFbmQoKXt0aGlzLnJlc2l6aW5nPSExLGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0uc3R5bGUuY3NzVGV4dD0iIn1vbk1vdXNlTW92ZShoKXtpZih0aGlzLnJlc2l6aW5nKXt0aGlzLnNpZGViYXJXaWR0aD1oLmNsaWVudFg7bGV0IHY9ZG9jdW1l''@;'; put 'put ''bnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibmF2LXRyZWUiKVswXTt0aGlzLnNpZGViYXJXaWR0aCYmdGhpcy5pc092ZXJmbG93bih2KSYmKHRoaXMuc2lkZWJhck1heFdpZHRoPXRoaXMuc2lkZWJhcldpZHRoPj0zNzU/dGhpcy5zaWRlYmFyV2lkdGgrMTA6dGhpcy5zaWRlYmFyTWF4V2lk''@;'; put 'put ''dGgpfX1vbk1vdXNlVXAoaCl7dGhpcy5yZXNpemluZyYmdGhpcy5yZXNpemVFbmQoKX1pc092ZXJmbG93bihoKXtyZXR1cm4gaC5zY3JvbGxXaWR0aD5oLmNsaWVudFdpZHRofX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChabCksS3QobXUpLEt0''@;'; put 'put ''KGcyKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1zaWRlYmFyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYmdm8ocEhlLDUpLDImaCl7bGV0IHk7SGkoeT0kaSgpKSYmKHYuc2lkZWJhck5hdj15LmZpcnN0KX19LGhvc3RCaW5kaW5nczpmdW5j''@;'; put 'put ''dGlvbihoLHYpezEmaCYmR24oIm1vdXNlbW92ZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25Nb3VzZU1vdmUoQyl9LDAsSGwpKCJtb3VzZXVwIixmdW5jdGlvbihDKXtyZXR1cm4gdi5vbk1vdXNlVXAoQyl9LCExLEhsKX0sb3V0cHV0czp7c2Nyb2xsZWRUb0JvdHRvbToic2Nyb2xsZWRUb0Jv''@;'; put 'put ''dHRvbSJ9LG5nQ29udGVudFNlbGVjdG9yczpESGUsZGVjbHM6OSx2YXJzOjEzLGNvbnN0czpbWyJpZCIsInNpZGViYXJOYXYiXSxbInNpZGViYXJOYXYiLCIiXSxbImNsYXNzIiwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgc3ViLWRyb3Bkb3duIiw0LCJuZ0lmIl0sWyJjbGFzcyIs''@;'; put 'put ''InAtMTAiLDQsIm5nSWYiXSxbImNsYXNzIiwicGFnZS10aXRsZSIsNCwibmdJZiJdLFsxLCJuYXYtZGl2aWRlciJdLFsxLCJuYXYtdHJlZSIsMywic2Nyb2xsIl0sWzEsInJlc2l6ZS1oYW5kbGUiLDMsIm1vdXNlZG93biJdLFsxLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwi''@;'; put 'put ''c3ViLWRyb3Bkb3duIl0sWyJjbHJEcm9wZG93blRyaWdnZXIiLCIiLDEsImRyb3Bkb3duLXRvZ2dsZSIsImJ0biIsImJ0bi1saW5rIl0sWyJzaGFwZSIsImNhcmV0IGRvd24iXSxbNCwiY2xySWZPcGVuIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0''@;'; put 'put ''aXZlIiwzLCJjbGljayIsNCwibmdJZiJdLFsiY2xyVmVydGljYWxOYXZMaW5rIiwiIiwicm91dGVyTGluayIsIi92aWV3L2xpbmVhZ2UiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIiw0LCJuZ0lmIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL3ZpZXcvbWV0''@;'; put 'put ''YWRhdGEiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIiw0LCJuZ0lmIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL3ZpZXcvdXNlcm5hdiIsInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiLDQsIm5nSWYiXSxbImNsclZlcnRpY2FsTmF2TGluayIsIiIsInJv''@;'; put 'put ''dXRlckxpbmsiLCIvYXBwcm92ZS9zdWJtaXR0ZWQiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIiw0LCJuZ0lmIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL2FwcHJvdmUvdG9hcHByb3ZlIiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSIsNCwibmdJZiJd''@;'; put 'put ''LFsiY2xyVmVydGljYWxOYXZMaW5rIiwiIiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSIsMywiY2xpY2siXSxbImNsclZlcnRpY2FsTmF2TGluayIsIiIsInJvdXRlckxpbmsiLCIvdmlldy9saW5lYWdlIiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSJdLFsiY2xyVmVydGljYWxOYXZM''@;'; put 'put ''aW5rIiwiIiwicm91dGVyTGluayIsIi92aWV3L21ldGFkYXRhIiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSJdLFsiY2xyVmVydGljYWxOYXZMaW5rIiwiIiwicm91dGVyTGluayIsIi92aWV3L3VzZXJuYXYiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIl0sWyJjbHJWZXJ0aWNhbE5h''@;'; put 'put ''dkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL2FwcHJvdmUvc3VibWl0dGVkIiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSJdLFsiY2xyVmVydGljYWxOYXZMaW5rIiwiIiwicm91dGVyTGluayIsIi9hcHByb3ZlL3RvYXBwcm92ZSIsInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiXSxbMSwi''@;'; put 'put ''cC0xMCJdLFsiY2xyVGFiTGluayIsIiIsMSwidXNlci1uYXYtYnRuIiwzLCJyb3V0ZXJMaW5rIl0sWzEsInplcm8tbWFyZ2luIl0sWyJzaGFwZSIsInVzZXIiXSxbInNoYXBlIiwidXNlcnMiXSxbNCwiY2xySWZBY3RpdmUiXSxbNCwibmdJZiJdLFsic2hhcGUiLCJibG9ja3MtZ3JvdXAiXSxb''@;'; put 'put ''MSwicGFnZS10aXRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKCksbnQoMCwiY2xyLXZlcnRpY2FsLW5hdiIsMCwxKSxybigyLF9IZSw2LDEsImRpdiIsMikscm4oMyxUSGUsMTQsNiwiY2xyLXRhYnMiLDMpLHJuKDQsSUhlLDIsMCwicCIsNCksQ3IoNSwiZGl2Iiw1KSxu''@;'; put 'put ''dCg2LCJkaXYiLDYpLEduKCJzY3JvbGwiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uVHJlZVNjcm9sbChDKX0pLE5pKDcpLG90KCksbnQoOCwic3BhbiIsNyksR24oIm1vdXNlZG93biIsZnVuY3Rpb24oKXtyZXR1cm4gdi5yZXNpemVTdGFydCgpfSksb3QoKSgpKSwyJmgmJihOZCgid2lkdGgi''@;'; put 'put ''LHYuc2lkZWJhcldpZHRoLCJweCIpKCJtYXgtd2lkdGgiLHYuc2lkZWJhck1heFdpZHRoLCJweCIpLEZpKCJjbG9zZWQiLCF2LnNpZGViYXJPcGVuKSgicmVzaXppbmciLHYucmVzaXppbmcpLHV0KDIpLFR0KCJuZ0lmIix2LmlzTWFpblJvdXRlKCJ2aWV3IikpLHV0KDEpLFR0KCJuZ0lmIix2''@;'; put 'put ''LmlzTWFpblJvdXRlKCJ2aWV3L3VzZXJuYXYiKSksdXQoMSksVHQoIm5nSWYiLHYuaXNNYWluUm91dGUoImhvbWUiKSksdXQoNCksRmkoInJlc2l6aW5nIix2LnJlc2l6aW5nKSl9LGRlcGVuZGVuY2llczpbTm8sd2wsRzIsUGEsS0wscUwsQVosJEwsWEwsbVosUnllLEJ5ZSx3dixiUyxfUyxZ''@;'; put 'put ''Nix2Nyxsa10sc3R5bGVzOlsiY2xyLXZlcnRpY2FsLW5hdltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjcycHg7bWluLXdpZHRoOjI3MnB4O2hlaWdodDoxMDAlO21heC13aWR0aDozNzVweDtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2hhZG93OjAgMCA1cHggIzAwMDAwMDFmO2JhY2tncm91''@;'; put 'put ''bmQtY29sb3I6I2ZmZiFpbXBvcnRhbnR9Y2xyLXZlcnRpY2FsLW5hdltfbmdjb250ZW50LSVDT01QJV0gICAuc3VuLWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjM2cHh9Y2xyLXZlcnRpY2FsLW5hdltfbmdjb250ZW50LSVDT01QJV0gICAubmF2LXRyZWVbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde2hlaWdodDoxMDAlO292ZXJmbG93LXk6YXV0b31jbHItdmVydGljYWwtbmF2LmNsb3NlZFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWxlZnQ6LTI3MnB4fWNsci12ZXJ0aWNhbC1uYXZbX25nY29udGVudC0lQ09NUCVdICAgLnJlc2l6ZS1oYW5kbGVbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO3JpZ2h0Oi0zcHg7Ym9yZGVyLXJpZ2h0OjRweCBzb2xpZCAjODBiNDQxO2N1cnNvcjpjb2wtcmVzaXplO29wYWNpdHk6MDt0cmFuc2l0aW9uOmFsbCAuMXMgZWFzZS1pbi1vdXR9Y2xyLXZlcnRpY2FsLW5hdltfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV0gICAucmVzaXplLWhhbmRsZVtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7b3BhY2l0eTouNX1jbHItdmVydGljYWwtbmF2W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yZXNpemUtaGFuZGxlLnJlc2l6aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9Y2xyLXZl''@;'; put 'put ''cnRpY2FsLW5hdi5yZXNpemluZ1tfbmdjb250ZW50LSVDT01QJV17dHJhbnNpdGlvbjpub25lIWltcG9ydGFudH0ubmF2LWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2JvcmRlci10b3A6MXB4IHNvbGlkICNkM2QzZDM7bWFyZ2luLWJvdHRvbTowfS5wYWdlLXRpdGxlW19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MDtmb250LXNpemU6MThweDt0ZXh0LWFsaWduOmNlbnRlcn0uemVyby1tYXJnaW5bX25nY29udGVudC0lQ09NUCVde21hcmdpbjowfS51c2VyLW5hdi1idG5bX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MCAycHh9I3NpZGViYXJOYXZbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde3otaW5kZXg6MjAwfUBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCl7I3NpZGViYXJOYXZbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO3RvcDowfX0iXX0pLGR9KSgpO2Z1bmN0aW9uIExIZShkLGcpezEmZCYmQ3IoMCwiY2xyLWljb24i''@;'; put 'put ''LDEyKX1mdW5jdGlvbiBPSGUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJjbHItaWNvbiIsMTMpLEduKCJjbGljayIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KDIpO3JldHVybiB5LmxpYnJhcmllc1NlYXJjaD0iIixhKHkubGlicmFyeU9uRmlsdGVyKCkpfSksb3QoKX19''@;'; put 'put ''ZnVuY3Rpb24gUkhlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiY2xyLXRyZWUtbm9kZSIsNikoMSwiZGl2Iiw3KSgyLCJpbnB1dCIsOCw5KSxHbigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoKS5saWJyYXJpZXNTZWFyY2g9eSl9KSgia2V5''@;'; put 'put ''dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoKS5saWJyYXJ5T25GaWx0ZXIoKSl9KSxvdCgpLHJuKDQsTEhlLDEsMCwiY2xyLWljb24iLDEwKSxybig1LE9IZSwxLDAsImNsci1pY29uIiwxMSksb3QoKSgpfWlmKDImZCl7Y29uc3QgaD12YSgzKSx2PVF0KCk7dXQoMiksVHQoIm5n''@;'; put 'put ''TW9kZWwiLHYubGlicmFyaWVzU2VhcmNoKSx1dCgyKSxUdCgibmdJZiIsaC52YWx1ZS5sZW5ndGg8MSksdXQoMSksVHQoIm5nSWYiLGgudmFsdWUubGVuZ3RoPjApfX1mdW5jdGlvbiBCSGUoZCxnKXsxJmQmJkNyKDAsImNsci1pY29uIiwxMil9ZnVuY3Rpb24gUEhlKGQsZyl7aWYoMSZkKXtj''@;'; put 'put ''b25zdCBoPXdpKCk7bnQoMCwiY2xyLWljb24iLDEzKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7aXQoaCksUXQoKTtjb25zdCB5PXZhKDMpLEM9UXQoMikuJGltcGxpY2l0LEk9UXQoKTtyZXR1cm4geS52YWx1ZT0iIixDLnNlYXJjaFN0cmluZz0iIixhKEkudHJlZU9uRmlsdGVyKEMsInRhYmxl''@;'; put 'put ''cyIpKX0pLG90KCl9fWZ1bmN0aW9uIEZIZShkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci10cmVlLW5vZGUiLDYpKDEsImRpdiIsNykoMiwiaW5wdXQiLDE4LDE5KSxHbigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoMikuJGltcGxpY2l0''@;'; put 'put ''LnNlYXJjaFN0cmluZz15KX0pKCJrZXl1cCIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KDIpLiRpbXBsaWNpdDtyZXR1cm4gYShRdCgpLnRyZWVPbkZpbHRlcih5LCJ0YWJsZXMiKSl9KSxvdCgpLHJuKDQsQkhlLDEsMCwiY2xyLWljb24iLDEwKSxybig1LFBIZSwxLDAsImNsci1pY29u''@;'; put 'put ''IiwxMSksb3QoKSgpfWlmKDImZCl7Y29uc3QgaD12YSgzKSx2PVF0KDIpLiRpbXBsaWNpdDt1dCgyKSxUdCgibmdNb2RlbCIsdi5zZWFyY2hTdHJpbmcpLHV0KDIpLFR0KCJuZ0lmIixoLnZhbHVlLmxlbmd0aDwxKSx1dCgxKSxUdCgibmdJZiIsaC52YWx1ZS5sZW5ndGg+MCl9fWZ1bmN0aW9u''@;'; put 'put ''IEhIZShkLGcpezEmZCYmQ3IoMCwiY2xyLWljb24iLDI0KX1mdW5jdGlvbiBOSGUoZCxnKXsxJmQmJkNyKDAsImNsci1pY29uIiwyNSl9ZnVuY3Rpb24gVkhlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiY2xyLXRyZWUtbm9kZSIpKDEsImJ1dHRvbiIsMjApLEduKCJjbGljayIs''@;'; put 'put ''ZnVuY3Rpb24oKXtjb25zdCBDPWl0KGgpLiRpbXBsaWNpdCxJPVF0KDIpLiRpbXBsaWNpdCxaPVF0KCk7cmV0dXJuIFoudGFibGU9QyxaLmxpYj1JLkxJQlJBUllSRUYsWi5zZWxlY3RUYWJsZShDKSxhKFouZWRpdFRhYmxlKCkpfSksQjAoMiwyMSkscm4oMyxISGUsMSwwLCJjbHItaWNvbiIs''@;'; put 'put ''MjIpLHJuKDQsTkhlLDEsMCwiY2xyLWljb24iLDIzKSxQMCgpLFl0KDUpLG90KCkoKX1pZigyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1RdCgyKS4kaW1wbGljaXQseT1RdCgpO3V0KDEpLEZpKCJ0YWJsZS1hY3RpdmUiLHkubGliVGFiQWN0aXZlKHYuTElCUkFSWVJFRixoKSksdXQoMSks''@;'; put 'put ''VHQoIm5nU3dpdGNoIixoLmluY2x1ZGVzKCItRkMiKSksdXQoMSksVHQoIm5nU3dpdGNoQ2FzZSIsITApLHV0KDEpLFR0KCJuZ1N3aXRjaENhc2UiLCExKSx1dCgxKSxKaSgiICIsaC5yZXBsYWNlKCItRkMiLCIiKSwiICIpfX1mdW5jdGlvbiBqSGUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2ko''@;'; put 'put ''KTtudCgwLCJjbHItdHJlZS1ub2RlIiwxNSksR24oImNsaWNrIixmdW5jdGlvbih5KXtpdChoKTtjb25zdCBDPVF0KCkuJGltcGxpY2l0LEk9UXQoKTtyZXR1cm4gSS50cmVlTm9kZUNsaWNrZWQoeSxDKSxhKEkubGliPUMuTElCUkFSWVJFRil9KSgiY2xyRXhwYW5kZWRDaGFuZ2UiLGZ1bmN0''@;'; put 'put ''aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KCkuJGltcGxpY2l0LmV4cGFuZGVkPXkpfSksbnQoMSwicCIsMTYpLEduKCJjbGljayIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KCkuJGltcGxpY2l0LEM9UXQoKTtyZXR1cm4gQy5saWI9eS5MSUJSQVJZUkVGLGEoQy5saWJyYXJ5T25DbGlj''@;'; put 'put ''ayh5LkxJQlJBUllSRUYseSkpfSksQ3IoMiwiY2xyLWljb24iLDE3KSxZdCgzKSxvdCgpLHJuKDQsRkhlLDYsMywiY2xyLXRyZWUtbm9kZSIsMCkscm4oNSxWSGUsNiw2LCJjbHItdHJlZS1ub2RlIiwxKSxvdCgpfWlmKDImZCl7Y29uc3QgaD1RdCgpLiRpbXBsaWNpdDtGaSgiY2xyLWV4cGFu''@;'; put 'put ''ZGVkIixoLmV4cGFuZGVkKSxUdCgiY2xyRXhwYW5kZWQiLGguZXhwYW5kZWQpKCJjbHJMb2FkaW5nIixoLmxvYWRpbmdUYWJsZXMmJiFoLnRhYmxlcyksdXQoMyksSmkoIiAiLGguTElCUkFSWVJFRiwiICIpLHV0KDEpLFR0KCJuZ0lmIixoLnRhYmxlcyksdXQoMSksVHQoIm5nRm9yT2YiLGgu''@;'; put 'put ''dGFibGVzKX19ZnVuY3Rpb24gWkhlKGQsZyl7aWYoMSZkJiYoQjAoMCkscm4oMSxqSGUsNiw3LCJjbHItdHJlZS1ub2RlIiwxNCksUDAoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3V0KDEpLFR0KCJuZ0lmIiwhaC5oaWRkZW4pfX1mdW5jdGlvbiB6SGUoZCxnKXsxJmQmJihudCgwLCJk''@;'; put 'put ''aXYiLDI2KSgxLCJkaXYiLDI3KSgyLCJzcGFuIiwyOCksWXQoMywiIExvYWRpbmcuLi4gIiksb3QoKSgpKCkpfWZ1bmN0aW9uIEdIZShkLGcpezEmZCYmKG50KDAsImgzIiwzMiksWXQoMSwiIFBsZWFzZSBzZWxlY3QgYSB0YWJsZSAiKSxvdCgpKX1mdW5jdGlvbiBXSGUoZCxnKXsxJmQmJihu''@;'; put 'put ''dCgwLCJoMyIsMzIpLFl0KDEsIiBObyBFZGl0YWJsZSBUYWJsZXMgQ29uZmlndXJlZCAiKSxvdCgpKX1mdW5jdGlvbiBZSGUoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDI5KSxDcigxLCJjbHItaWNvbiIsMzApLHJuKDIsR0hlLDIsMCwiaDMiLDMxKSxybigzLFdIZSwyLDAsImgzIiwzMSks''@;'; put 'put ''b3QoKSksMiZkKXtjb25zdCBoPVF0KCk7dXQoMiksVHQoIm5nSWYiLChudWxsPT1oLnRyZWVOb2RlTGlicmFyaWVzP251bGw6aC50cmVlTm9kZUxpYnJhcmllcy5sZW5ndGgpPjApLHV0KDEpLFR0KCJuZ0lmIiwobnVsbD09aC50cmVlTm9kZUxpYnJhcmllcz9udWxsOmgudHJlZU5vZGVMaWJy''@;'; put 'put ''YXJpZXMubGVuZ3RoKTwxKX19bGV0IFVIZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSl7dGhpcy5yb3V0ZT1oLHRoaXMucm91dGVyPXYsdGhpcy5oZWxwZXJTZXJ2aWNlPXksdGhpcy5ldmVudFNlcnZpY2U9Qyx0aGlzLnNhc1NlcnZpY2U9SSx0aGlzLnRyZWVOb2RlTGli''@;'; put 'put ''cmFyaWVzPW51bGwsdGhpcy5saWJyYXJpZXNTZWFyY2g9IiIsdGhpcy5saWI9IiIsdGhpcy50YWJsZT0iIix0aGlzLmVuY29kaW5nPSJVVEYtOCIsdGhpcy5sb2FkaW5nPSEwfWNvbGxhcHNlTGlicmFyeUl0ZW1zKGgsdil7aC5mb3JFYWNoKHk9Pnt5LkxJQlJBUllJRCE9PXYuTElCUkFSWUlE''@;'; put 'put ''JiYoeS5leHBhbmRlZD0hMSl9KX10cmVlTm9kZUNsaWNrZWQoaCx2KXsiQ29sbGFwc2UiPT09aC50YXJnZXQudGl0bGUmJnRoaXMuY29sbGFwc2VMaWJyYXJ5SXRlbXModGhpcy5saWJyYXJpZXMsdil9bGlicmFyeU9uQ2xpY2soaCx2KXt2LmV4cGFuZGVkPSF2LmV4cGFuZGVkLHYuZXhwYW5k''@;'; put 'put ''ZWQmJiF0aGlzLnRhYmxlJiZ0aGlzLnNlbGVjdExpYnJhcnkoaCwhMSx2KSx0aGlzLmNvbGxhcHNlTGlicmFyeUl0ZW1zKHRoaXMubGlicmFyaWVzLHYpfXNlbGVjdExpYnJhcnkoaCx2LHkpe3kubG9hZGluZ1RhYmxlcz0hMDtsZXQgQyxJPVtdO2lmKHRoaXMubGlic0FuZFRhYmxlcyYmKEM9''@;'; put 'put ''dGhpcy5saWJzQW5kVGFibGVzW2hdLHRoaXMudGFibGU9dm9pZCAwLCJQbGVhc2Ugc2VsZWN0IGxpYnJhcnkiIT09aCkpe2xldCBaPUMuZmlsdGVyKGZ1bmN0aW9uKHVlKXtyZXR1cm4tMT09PUkuaW5kZXhPZih1ZSkmJihJLnB1c2godWUpLCEwKX0pO3RoaXMudGFibGVzPVosbmkuZWRpdG9y''@;'; put 'put ''LmxpYnJhcmllcz10aGlzLmxpYnJhcmllc31uaS5lZGl0b3IubGlicmFyeT1oLHZ8fHRoaXMuY2xlYXJHbG9iYWxzRmlsdGVyKCkseS5sb2FkaW5nVGFibGVzPSExLHkuZXhwYW5kZWQ9ITB9c2VsZWN0VGFibGUoaCx2KXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigp''@;'; put 'put ''e3RoaXMubGliVGFiPXRoaXMubGliKyIuIit0aGlzLnRhYmxlLHRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpLG5pLmVkaXRvci50YWJsZT1oLHZ8fHRoaXMuY2xlYXJHbG9iYWxzRmlsdGVyKCl9KX1jbGVhckdsb2JhbHNGaWx0ZXIoKXtuaS5lZGl0b3IuZmlsdGVyLmxpYmRzPSIi''@;'; put 'put ''LG5pLmVkaXRvci5maWx0ZXIud2hlcmVDbGF1c2U9IiIsbmkuZWRpdG9yLmZpbHRlci5ncm91cExvZ2ljPSIiLG5pLmVkaXRvci5maWx0ZXIuY2xhdXNlcz1bXSxuaS5lZGl0b3IuZmlsdGVyLnZhbHM9W10sbmkuZWRpdG9yLmZpbHRlci5jb2xzPVtdfWxpYlRhYkFjdGl2ZShoLHYpe3JldHVy''@;'; put 'put ''biEoIXRoaXMubGlifHwhdGhpcy50YWJsZSkmJmg9PT10aGlzLmxpYiYmdj09PXRoaXMudGFibGV9dHJlZU9uRmlsdGVyKGgsdil7dGhpcy5oZWxwZXJTZXJ2aWNlLnRyZWVPbkZpbHRlcihoLHYpfWxpYnJhcnlPbkZpbHRlcigpe3RoaXMuaGVscGVyU2VydmljZS5saWJyYXJ5T25GaWx0ZXIo''@;'; put 'put ''dGhpcy50cmVlTm9kZUxpYnJhcmllcyx0aGlzLmxpYnJhcmllc1NlYXJjaCwiTElCUkFSWVJFRiIpLG5pLmxpbmVhZ2UubGlicmFyaWVzU2VhcmNoPXRoaXMubGlicmFyaWVzU2VhcmNofWVkaXRUYWJsZSgpe3RoaXMucm91dGUubmF2aWdhdGVCeVVybCgiL2VkaXRvci8iK3RoaXMubGliKyIu''@;'; put 'put ''Iit0aGlzLnRhYmxlKX1nZXRMaWJyYXJ5VGFibGVTdGF0ZSgpe2lmKG51bGwhPT1uaS5lZGl0b3IudHJlZU5vZGVMaWJyYXJpZXMmJih0aGlzLnRyZWVOb2RlTGlicmFyaWVzPW5pLmVkaXRvci50cmVlTm9kZUxpYnJhcmllcyksIiIhPT1uaS5lZGl0b3IubGlicmFyeSl7dGhpcy5saWI9bmku''@;'; put 'put ''ZWRpdG9yLmxpYnJhcnk7bGV0IGg9bnVsbDt0aGlzLnRyZWVOb2RlTGlicmFyaWVzJiYoaD10aGlzLnRyZWVOb2RlTGlicmFyaWVzLmZpbmQodj0+di5MSUJSQVJZUkVGPT09dGhpcy5saWIpKSx0aGlzLnNlbGVjdExpYnJhcnkobmkuZWRpdG9yLmxpYnJhcnksITAsaCl9fWdldEZyb21HbG9i''@;'; put 'put ''YWxzKCl7dGhpcy5saWJzQW5kVGFibGVzPW5pLmVkaXRvci5saWJzQW5kVGFibGVzLHRoaXMubGlicmFyaWVzPW5pLmVkaXRvci5saWJyYXJpZXMsdGhpcy5nZXRMaWJyYXJ5VGFibGVTdGF0ZSgpLHRoaXMubG9hZGluZz0hMX1uZ0FmdGVyQ29udGVudEluaXQoKXtuaS5lZGl0b3Iuc3RhcnR1''@;'; put 'put ''cFNldD90aGlzLmdldEZyb21HbG9iYWxzKCk6dGhpcy5ldmVudFNlcnZpY2Uub25TdGFydHVwRGF0YUxvYWRlZC5zdWJzY3JpYmUoKCk9Pnt0aGlzLmdldEZyb21HbG9iYWxzKCl9KX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoWmwpLEt0KFB1''@;'; put 'put ''KSxLdChYYyksS3QobXUpLEt0KGcyKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImhvbWUtY29tcG9uZW50Il1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczo4LHZhcnM6NCxjb25zdHM6W1siY2xhc3MiLCJzZWFyY2gtbm9kZSIsNCwibmdJ''@;'; put 'put ''ZiJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiY29udGVudC1hcmVhIl0sWzEsImNhcmQtYmxvY2siXSxbImNsYXNzIiwic3Bpbm5lci13cmFwcGVyLWZ1bGxwYWdlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm5vLXRhYmxlLXNlbGVjdGVkIiw0LCJuZ0lmIl0sWzEsInNlYXJjaC1ub2RlIl0s''@;'; put 'put ''WzEsInRyZWUtc2VhcmNoLXdyYXBwZXIiXSxbImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIiLCJMaWJyYXJpZXMiLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiXSxbInNlYXJjaExpYlRyZWVJbnB1dCIsIiJd''@;'; put 'put ''LFsic2hhcGUiLCJzZWFyY2giLDQsIm5nSWYiXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInNlYXJjaCJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siXSxbMywiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIiwiY2xyLWV4cGFuZGVkIiwiY2xpY2si''@;'; put 'put ''LCJjbHJFeHBhbmRlZENoYW5nZSIsNCwibmdJZiJdLFszLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmciLCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIl0sWzEsIm0tMCIsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsic2hhcGUiLCJyYWNrLXNlcnZlciJdLFsiY2xySW5wdXQiLCIi''@;'; put 'put ''LCJwbGFjZWhvbGRlciIsIlRhYmxlcyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCJdLFsic2VhcmNoVHJlZUlucHV0IiwiIl0sWzEsImNsci10cmVlbm9kZS1saW5rIiwzLCJjbGljayJdLFszLCJuZ1N3aXRj''@;'; put 'put ''aCJdLFsic2hhcGUiLCJib2x0Iiw0LCJuZ1N3aXRjaENhc2UiXSxbInNoYXBlIiwidGFibGUiLDQsIm5nU3dpdGNoQ2FzZSJdLFsic2hhcGUiLCJib2x0Il0sWyJzaGFwZSIsInRhYmxlIl0sWzEsInNwaW5uZXItd3JhcHBlci1mdWxscGFnZSJdLFsxLCJsb2FkaW5nU3Bpbm5lciJdLFsxLCJz''@;'; put 'put ''cGlubmVyIl0sWzEsIm5vLXRhYmxlLXNlbGVjdGVkIl0sWyJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQiLCJzaXplIiwiNjAiLDEsImlzLWluZm8iLCJpY29uLWRjLWZpbGwiXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgY29sb3ItZ3JheSIsNCwibmdJZiJdLFsxLCJ0ZXh0LWNlbnRlciIsImNv''@;'; put 'put ''bG9yLWdyYXkiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihudCgwLCJhcHAtc2lkZWJhciIpKDEsImNsci10cmVlIikscm4oMixSSGUsNiwzLCJjbHItdHJlZS1ub2RlIiwwKSxybigzLFpIZSwyLDEsIm5nLWNvbnRhaW5lciIsMSksb3QoKSgpLG50KDQsImRpdiIsMikoNSwiZGl2''@;'; put 'put ''IiwzKSxybig2LHpIZSw0LDAsImRpdiIsNCkscm4oNyxZSGUsNCwyLCJkaXYiLDUpLG90KCkoKSksMiZoJiYodXQoMiksVHQoIm5nSWYiLChudWxsPT12LnRyZWVOb2RlTGlicmFyaWVzP251bGw6di50cmVlTm9kZUxpYnJhcmllcy5sZW5ndGgpPjApLHV0KDEpLFR0KCJuZ0Zvck9mIix2LnRy''@;'; put 'put ''ZWVOb2RlTGlicmFyaWVzKSx1dCgzKSxUdCgibmdJZiIsdi5sb2FkaW5nKSx1dCgxKSxUdCgibmdJZiIsIXYubG9hZGluZykpfSxkZXBlbmRlbmNpZXM6W3hzLE5vLEpkLGlwLG0xLFRzLElzLHl2LF9nLFFMLHdsLGdvLHB2LE1TXSxzdHlsZXM6WyJjbHItdHJlZS1ub2RlW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwfS5jYXJkLWJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTtwYWRkaW5nOjB9Lm5vLXRhYmxlLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZTto''@;'; put 'put ''ZWlnaHQ6MTAwJX0gIGNsci1pY29uLmlzLWJsdWUsICAgY2xyLWljb24uaXMtaW5mb3tmaWxsOiM2YTkyMzV9LnNwaW5uZXItd3JhcHBlci1mdWxscGFnZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3dp''@;'; put 'put ''ZHRoOjEwMCU7aGVpZ2h0OjEwMCV9Il19KSxkfSkoKTt2YXIgYnc9TCgyOTc0OCk7bGV0IGtnPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMuc2FzU2VydmljZT1oLHRoaXMuaGVscGVyU2VydmljZT12LHRoaXMubG9nZ2VyU2VydmljZT15LHRoaXMucmVzcG9uc2U9bmV3''@;'; put 'put ''ICRlLHRoaXMuY2hhbmdlZFRhYmxlPW5ldyAkZSx0aGlzLmRldGFpbHM9bmV3ICRlLHRoaXMuZGlmZnM9bmV3ICRlLHRoaXMuY29sdW1ucz1uZXcgJGUsdGhpcy52YWx1ZXM9bmV3ICRlLHRoaXMuZmlsdGVyPW5ldyAkZSx0aGlzLnF1ZXJ5PW5ldyAkZSx0aGlzLnN1Ym1pdHREZXRhaWw9bmV3''@;'; put 'put ''ICRlLHRoaXMucmVtb3ZlUXVlcnk9bmV3ICRlLHRoaXMuc2V0U3VibWl0PW5ldyAkZSx0aGlzLnNldFN1Ym1pdExpc3Q9bmV3ICRlfWNhbGxTZXJ2aWNlKGgsdix5LEMpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5saWJkcz1DO2xldCBJPXt9O3JldHVy''@;'; put 'put ''biBJW3ZdPVtoXSx7ZGF0YTp5aWVsZCB0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCh5LEkpLGxpYmRzOnRoaXMubGliZHN9fSl9dXBkYXRlVGFibGUoaCx2LHksQyxJKXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCBaPXtqc2RhdGE6dn07aWYoSSl7bGV0IF9l''@;'; put 'put ''PXRoaXMucGFyc2VGb3JtYXRzKEkpO1ouJGpzZGF0YT17Zm9ybWF0czpfZX19cmV0dXJuIFpbeV09W2hdLHlpZWxkIHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KEMsWil9KX1nZXRBcHByb3ZhbHMoaCx2LHkpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7bGV0IEM9''@;'; put 'put ''e307cmV0dXJuIENbdl09W2hdLHlpZWxkIHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KHksQyl9KX1zZW5kRGV0YWlscyhoLHYseSl7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgQz1PYmplY3QuYXNzaWduKHtzdWI6ITB9LGgpO3RoaXMuc3VibWl0dERldGFp''@;'; put 'put ''bC5uZXh0KHtkYXRhOnlbdl0sdmlld0RhdGE6Q30pfSl9Z2V0U3VibWl0dHMoKXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB5aWVsZCB0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgiZWRpdG9ycy9nZXRzdWJtaXRzIixudWxsKX0pfXZpZXdMaWJzKCl7''@;'; put 'put ''cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtyZXR1cm4gdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy92aWV3bGlicyIsbnVsbCl9KX1yZWZyZXNoTGliSW5mbyhoKXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB0''@;'; put 'put ''aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgicHVibGljL3JlZnJlc2hsaWJpbmZvIix7bGliMnJlZnJlc2g6W3tsaWJyZWY6aH1dfSl9KX12ZXJzaW9uSGlzdG9yeShoKXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IHY9e2l3YW50Olt7TElCRFM6aH1dfTty''@;'; put 'put ''ZXR1cm4geWllbGQgdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy9nZXR2ZXJzaW9uaGlzdG9yeSIsdil9KX12aWV3VGFibGVzKGgpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7bGV0IHY9e1NBU0NvbnRyb2xUYWJsZTpbe01QTElCOmh9XX07cmV0dXJu''@;'; put 'put ''IHlpZWxkIHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvdmlld3RhYmxlcyIsdil9KX12aWV3RGF0YShoLHYpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7bGV0IHk9e1NBU0NvbnRyb2xUYWJsZTpbe0xJQkRTOmgsRklMVEVSX1JLOnZ9XX07cmV0dXJu''@;'; put 'put ''IHlpZWxkIHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvdmlld2RhdGEiLHkpfSl9dmlld0RhdGFTZWFyY2goaCx2PSExLHksQyl7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgWj17U0FTQ29udHJvbFRhYmxlOlt7U0VBUkNIVFlQRTpoLmxlbmd0''@;'; put 'put ''aD4wP3Y/Ik5VTSI6IkNIQVIiOiJOT05FIixTRUFSQ0hWQUw6aCxMSUJEUzp5LEZJTFRFUl9SSzpDfV19O3JldHVybiB5aWVsZCB0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgicHVibGljL3ZpZXdkYXRhIixaKX0pfWdldERldGFpbHMoaCx2LHkpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lk''@;'; put 'put ''IDAsZnVuY3Rpb24qKCl7bGV0IEM9e307cmV0dXJuIENbdl09W2hdLHlpZWxkIHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KHksQyl9KX1zaG93RGlmZnMoaCx2LHkpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7bGV0IEM9e307cmV0dXJuIENbdl09W2hdLHlpZWxk''@;'; put 'put ''IHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KHksQyx7dXNlQ29tcHV0ZUFwaTohMX0pfSl9cmVqZWN0aW5nKGgsdix5KXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCBDPXt9O3JldHVybiBDW3ZdPVtoXSx5aWVsZCB0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCh5''@;'; put 'put ''LEMse3VzZUNvbXB1dGVBcGk6ITF9KX0pfWFwcHJvdmVUYWJsZShoLHYseSl7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgQz17fTtyZXR1cm4gQ1t2XT1baF0seWllbGQgdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoeSxDKX0pfWdldEhpc3RvcnkoaCx2LHkp''@;'; put 'put ''e3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7bGV0IEM9e307cmV0dXJuIENbdl09W2hdLHlpZWxkIHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KHksQyl9KX1zZXRRdWVyeVZhcmlhYmxlcyhoLHYpe3RoaXMuY29sdW1ucy5uZXh0KHtkYXRhOntjb2xzOnZ9LGxpYmRz''@;'; put 'put ''Omh9KX1nZXRDaGFuZ2VJbmZvKGgpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7bGV0IHk9e1NBU0NvbnRyb2xUYWJsZTpbe1RBQkxFOmh9XX07cmV0dXJuIHlpZWxkIHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvZ2V0Y2hhbmdlaW5mbyIseSl9KX1n''@;'; put 'put ''ZXRRdWVyeVZhbHVlcyhoLHYseSl7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgQz17aXdhbnQ6W3tsaWJkczp2LGNvbDpofV19O3JldHVybiB5Lmxlbmd0aD4wJiYoQy5GSUxURVJRVUVSWT15KSx5aWVsZCB0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgicHVi''@;'; put 'put ''bGljL2dldGNvbHZhbHMiLEMpLmNhdGNoKFo9Pnt0aHJvdyBafSl9KX1zYXZlUXVlcnkoaCx2KXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCB5PXtpd2FudDpbe2ZpbHRlcl90YWJsZTpofV0sZmlsdGVycXVlcnk6dn0sQz15aWVsZCB0aGlzLnNhc1NlcnZp''@;'; put 'put ''Y2UucmVxdWVzdCgicHVibGljL3ZhbGlkYXRlZmlsdGVyIix5KTtyZXR1cm4gdGhpcy5maWx0ZXIubmV4dChDKSxDfSl9b3BlblRhYmxlKGgpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7bGV0IHY9e2l3YW50Olt7dGFibGVfaWQ6aH1dfTtyZXR1cm4geWllbGQg''@;'; put 'put ''dGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoImF1ZGl0b3JzL2dldHN0YWdldGFibGUiLHYpfSl9Y2hlY2tPcGVyYXRvcihoLHYseSl7bGV0IEM7c3dpdGNoKGgpe2Nhc2UiQkVUV0VFTiI6diBpbnN0YW5jZW9mIEFycmF5JiYoIiIhPT12WzBdJiYiIiE9PXZbMV0/Qz12WzBdKyIgQU5EICIrdlsx''@;'; put 'put ''XToiIiE9PXZbMF0mJiIiPT09dlsxXT8odlsxXT0iLiIsQz12WzBdKyIgQU5EICIrdlsxXSk6IiI9PT12WzBdJiYiIiE9PXZbMV0/KHZbMF09Ii4iLEM9dlswXSsiIEFORCAiK3ZbMV0pOih2WzBdPSIuIix2WzFdPSIuIixDPXZbMF0rIiBBTkQgIit2WzFdKSk7YnJlYWs7Y2FzZSJJTiI6Y2Fz''@;'; put 'put ''ZSJOT1QgSU4iOmxldCBaPVtdO2lmKHZvaWQgMCE9PXYpZm9yKGxldCB1ZT0wO3VlPHYubGVuZ3RoO3VlKyspITA9PT12W3VlXS5jaGVja2VkJiYoImNoYXIiPT09eT8oInN0cmluZyI9PXR5cGVvZiB2W3VlXS52YWwmJih2W3VlXS52YWw9dlt1ZV0udmFsLnJlcGxhY2UoIiciLCInJyIpKSxa''@;'; put 'put ''LnB1c2goIiciK3ZbdWVdLnZhbCsiJyIpKToobnVsbD09PXZbdWVdLnZhbCYmKHZbdWVdLnZhbD0iLiIpLFoucHVzaCh2W3VlXS52YWwpKSk7dj0iKCIrWisiKSI7YnJlYWs7Y2FzZSJDT05UQUlOUyI6aD0iPyI7YnJlYWs7Y2FzZSJOT1QgRVFVQUwiOmg9Im5lIn1yZXR1cm4ibnVtIj09PXkm''@;'; put 'put ''Jm51bGw9PT12JiYodj0iLiIpLCJQbGVhc2Ugc2VsZWN0IHZhbHVlIj09PXYmJih2PSIiKSwtMSE9PVsiPSIsIj4iLCI8IiwiPD0iLCI+PSIsIm5lIl0uaW5kZXhPZihoKSYmIm51bSI9PT15JiYiIj09PXYmJih2PSIuIiksIkJFVFdFRU4iPT09aD97dmFsdWU6QyxvcGVyYXRvcjpofTp7dmFs''@;'; put 'put ''dWU6dixvcGVyYXRvcjpofX13aGVyZUNsYXVzZUNyZWF0b3IoaCx2LHkpe2xldCB1ZSxOZSxDPSIiLF9lPSIiLEJlPVtdO2ZvcihsZXQgcHQ9MDtwdDxoLnF1ZXJ5T2JqLmxlbmd0aDtwdCsrKXtsZXQgT3Q9IiIsJHQ9aC5xdWVyeU9ialtwdF07Zm9yKGxldCBmbj0wO2ZuPCR0LmVsZW1lbnRz''@;'; put 'put ''Lmxlbmd0aDtmbisrKXtsZXQgaXIsTG49JHQuZWxlbWVudHNbZm5dO3VlPWZuPCR0LmVsZW1lbnRzLmxlbmd0aC0xPyR0LmNsYXVzZUxvZ2ljOiIiO2ZvcihsZXQgeWk9MDt5aTxMbi52YWx1ZXMubGVuZ3RoO3lpKyspe2lmKCJzdHJpbmciPT10eXBlb2YgTG4udmFsdWUmJiJudW1iZXIiPT10''@;'; put 'put ''eXBlb2YgTG4udmFsdWVzW3lpXS5mb3JtYXR0ZWQpTG4udmFsdWU9PT1KU09OLnN0cmluZ2lmeShMbi52YWx1ZXNbeWldLmZvcm1hdHRlZCkmJihpcj1Mbi52YWx1ZXNbeWldLnVuZm9ybWF0dGVkKTtlbHNle2xldCBTbz0ibnVtYmVyIiE9dHlwZW9mIExuLnZhbHVlc1t5aV0uZm9ybWF0dGVk''@;'; put 'put ''JiZudWxsIT09TG4udmFsdWVzW3lpXS5mb3JtYXR0ZWQ/TG4udmFsdWVzW3lpXS5mb3JtYXR0ZWQudHJpbSgpOkxuLnZhbHVlc1t5aV0uZm9ybWF0dGVkO0xuLnZhbHVlPT09U28mJihpcj1Mbi52YWx1ZXNbeWldLnVuZm9ybWF0dGVkKX1sZXQgS2k9WyI9IiwiPiIsIjwiLCI8PSIsIj49Iiwi''@;'; put 'put ''bmUiXTsiUGxlYXNlIHNlbGVjdCB2YWx1ZSI9PT1Mbi52YWx1ZSYmLTEhPT1LaS5pbmRleE9mKExuLm9wZXJhdG9yKSYmKGlyPSIiKSwoIkNPTlRBSU5TIj09PUxuLm9wZXJhdG9yfHwiTElLRSI9PT1Mbi5vcGVyYXRvcnx8IkJFR0lOU19XSVRIIj09PUxuLm9wZXJhdG9yKSYmKGlyPUxuLnZh''@;'; put 'put ''bHVlKX1pZihpcnx8KGlyPUxuLnZhbHVlKSxMbi52YWx1ZSBpbnN0YW5jZW9mIEFycmF5JiYiQkVUV0VFTiI9PT1Mbi5vcGVyYXRvcil7aXI9W10saXIucHVzaChMbi52YWx1ZVswXSksaXIucHVzaChMbi52YWx1ZVsxXSk7Zm9yKGxldCB5aT0wO3lpPExuLnZhbHVlcy5sZW5ndGg7eWkrKylp''@;'; put 'put ''clswXT09PUxuLnZhbHVlc1t5aV0uZm9ybWF0dGVkJiYoaXJbMF09TG4udmFsdWVzW3lpXS51bmZvcm1hdHRlZCksaXJbMV09PT1Mbi52YWx1ZXNbeWldLmZvcm1hdHRlZCYmKGlyWzFdPUxuLnZhbHVlc1t5aV0udW5mb3JtYXR0ZWQpfWlmKExuLnZhbHVlIGluc3RhbmNlb2YgQXJyYXkmJigi''@;'; put 'put ''SU4iPT09TG4ub3BlcmF0b3J8fCJOT1QgSU4iPT09TG4ub3BlcmF0b3IpKXtpcj1bXSxpcj1Mbi52YWx1ZTtmb3IobGV0IHlpPTA7eWk8TG4udmFsdWVzLmxlbmd0aDt5aSsrKWlyW3lpXSYmaXJbeWldLnZhbD09PUxuLnZhbHVlc1t5aV0uZm9ybWF0dGVkJiYoaXJbeWldLnZhbD1Mbi52YWx1''@;'; put 'put ''ZXNbeWldLnVuZm9ybWF0dGVkKX1sZXQgUXIsbXI9TG4udHlwZSxTcj1udWxsPT09TG4udmFyaWFibGU/IiI6TG4udmFyaWFibGUsd3I9bnVsbD09PUxuLm9wZXJhdG9yPyIiOkxuLm9wZXJhdG9yO1FyPXRoaXMuY2hlY2tPcGVyYXRvcih3cixpcixtcikudmFsdWUsInN0cmluZyI9PXR5cGVv''@;'; put 'put ''ZiBRciYmIigiIT09UXJbMF0mJihRcj1Rci5yZXBsYWNlKCInIiwiJyciKSksd3I9dGhpcy5jaGVja09wZXJhdG9yKHdyLFFyLG1yKS5vcGVyYXRvciwiY2hhciI9PT1tciYmIklOIiE9PXdyJiYiTk9UIElOIiE9PXdyPyh2b2lkIDA9PT1RciYmKFFyPSIiKSxRcj0iICciK1FyKyInICIsT3Q9''@;'; put 'put ''T3QrIiAiK1NyKyIgIit3citRcit1ZSk6KCJudW0iPT09bXImJnZvaWQgMD09PVFyJiYoUXI9Ii4iKSxRcj12b2lkIDA9PT1Rcj8iIjoiICIrUXIrIiAiLE90PU90KyIgIitTcisiICIrd3IrUXIrdWUpfUJlLnB1c2goT3QpfV9lPSIiO2ZvcihsZXQgcHQ9MDtwdDxCZS5sZW5ndGg7cHQrKylO''@;'; put 'put ''ZT1wdDxCZS5sZW5ndGgtMT92OiIiLF9lPTE9PT1CZS5sZW5ndGg/QmVbMF06X2UrIiAoIitCZVtwdF0rIikgIitOZTtyZXR1cm4gQz1fZS5zdWJzdHIoMSkuc2xpY2UoMCwtMSksX2U9IldIRVJFIitfZSsiOyIsdGhpcy5xdWVyeS5uZXh0KHt3aGVyZUNsYXVzZTpfZSxzdHJpbmc6QyxvYmo6''@;'; put 'put ''aCxsaWJkczp5fSkse3doZXJlQ2xhdXNlOl9lLHN0cmluZzpDfX1jcmVhdGVGaWx0ZXJRdWVyeVRhYmxlKGgpe2NvbnN0IHY9W107cmV0dXJuIGguZmlsdGVyR3JvdXBzLmZvckVhY2goKHksQyk9Pnt5LmZpbHRlckNsYXVzZXMuZm9yRWFjaChJPT57bGV0IFo9IiI7IkJFVFdFRU4iPT09SS5v''@;'; put 'put ''cGVyYXRvcj9aPWAke0kudmFsdWVbMF19IEFORCAke0kudmFsdWVbMV19YDoiSU4iPT09SS5vcGVyYXRvcnx8Ik5PVCBJTiI9PT1JLm9wZXJhdG9yPyhJLnZhbHVlLmZvckVhY2godWU9PntpZih1ZS5jaGVja2VkKXtjb25zdCBfZT11ZS52YWw7InN0cmluZyIhPXR5cGVvZiBfZXx8KDAsYncu''@;'; put 'put ''aXNTcGVjaWFsTWlzc2luZykoX2UpJiYiY2hhciIhPT1JLnR5cGU/Wi5sZW5ndGg+MD9aKz1gLCR7X2V9YDpaPWAoJHtfZX1gOloubGVuZ3RoPjA/Wis9YCwnJHtfZS5yZXBsYWNlKC8nL2csIicnIil9J2A6Wj1gKCcke19lLnJlcGxhY2UoLycvZywiJyciKX0nYH19KSxaLmxlbmd0aD4wJiYo''@;'; put 'put ''Wis9IikiKSk6IiI9PT1JLnZhbHVlP1o9ImNoYXIiPT09SS50eXBlPyInICciOiIuIjoiY2hhciI9PT1JLnR5cGUmJihaPWAnJHtJLnZhbHVlLnJlcGxhY2UoLycvZywiJyciKX0nYCksdi5wdXNoKHtHUk9VUF9MT0dJQzpoLmdyb3VwTG9naWMsU1VCR1JPVVBfTE9HSUM6eS5jbGF1c2VMb2dp''@;'; put 'put ''Y3x8IkFORCIsU1VCR1JPVVBfSUQ6QyxWQVJJQUJMRV9OTTpJLnZhcmlhYmxlLE9QRVJBVE9SX05NOkkub3BlcmF0b3IsUkFXX1ZBTFVFOlp8fEkudmFsdWV9KX0pfSksdn1pbml0aWFsaXplR2xvYmFsRmlsdGVyQ2xhdXNlKGgsdil7bGV0IHk9InZpZXdlciI7ImVkaXQiPT09aCYmKHk9ImVk''@;'; put 'put ''aXRvciIpLG5pW3ldLmZpbHRlci5jbGF1c2VzPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUoe3F1ZXJ5T2JqOltdLGNsYXVzZUxvZ2ljOltdLGdyb3VwTG9naWM6bmlbeV0uZmlsdGVyLnF1ZXJ5WzBdLkdST1VQX0xPR0lDfSksbmlbeV0uZmlsdGVyLmdyb3VwTG9naWM9bmlbeV0uZmls''@;'; put 'put ''dGVyLnF1ZXJ5WzBdLkdST1VQX0xPR0lDO2xldCBJPSIiLFo9e2VsZW1lbnRzOltdfSx1ZT0wO25pW3ldLmZpbHRlci5xdWVyeS5mb3JFYWNoKF9lPT57Y29uc3QgQmU9e307Zm9yKGxldCBOZT0wO05lPHYubGVuZ3RoO05lKyspaWYodltOZV0uTkFNRT09PV9lLlZBUklBQkxFX05NKXtpZihJ''@;'; put 'put ''PV9lLlNVQkdST1VQX0xPR0lDLEJlLmRkdHlwZT12W05lXS5ERFRZUEUsQmUudHlwZT12W05lXS5UWVBFLEJlLm9wZXJhdG9ycz0ibnVtIj09PXZbTmVdLlRZUEU/bmkub3BlcmF0b3JzLm51bU9wZXJhdG9yczpuaS5vcGVyYXRvcnMuY2hhck9wZXJhdG9ycyxCZS5sb2dpYz1udWxsLEJlLm9w''@;'; put 'put ''ZXJhdG9yPV9lLk9QRVJBVE9SX05NLEJlLnZhcmlhYmxlPV9lLlZBUklBQkxFX05NLCJjaGFyIj09PXZbTmVdLlRZUEUpaWYoIklOIj09PV9lLk9QRVJBVE9SX05NfHwiTk9UIElOIj09PV9lLk9QRVJBVE9SX05NKXtjb25zdCBLZT1bXSxPdD1fZS5SQVdfVkFMVUUuc2xpY2UoMSwtMSkuc3Bs''@;'; put 'put ''aXQoIicsJyIpOzE9PT1PdC5sZW5ndGg/S2UucHVzaCh7Y2hlY2tlZDohMCx2YWw6T3RbMF0uc2xpY2UoMSwtMSkucmVwbGFjZSgvJycvZywiJyIpfSk6T3QuZm9yRWFjaCgoJHQsZm4pPT57S2UucHVzaCgwPT09Zm4/e2NoZWNrZWQ6ITAsdmFsOiR0LnNsaWNlKDEpLnJlcGxhY2UoLycnL2cs''@;'; put 'put ''IiciKX06Zm49PT1PdC5sZW5ndGgtMT97Y2hlY2tlZDohMCx2YWw6JHQuc2xpY2UoMCwtMSkucmVwbGFjZSgvJycvZywiJyIpfTp7Y2hlY2tlZDohMCx2YWw6JHQucmVwbGFjZSgvJycvZywiJyIpfSl9KSxCZS52YWx1ZT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKEtlKX1lbHNlIEJl''@;'; put 'put ''LnZhbHVlPV9lLlJBV19WQUxVRS5zbGljZSgxLC0xKS5yZXBsYWNlKC8nJy9nLCInIik7ZWxzZSBpZigiSU4iPT09X2UuT1BFUkFUT1JfTk18fCJOT1QgSU4iPT09X2UuT1BFUkFUT1JfTk0pe2NvbnN0IEtlPVtdO19lLlJBV19WQUxVRS5zbGljZSgxLC0xKS5zcGxpdCgiLCIpLmZvckVhY2go''@;'; put 'put ''KCR0LGZuKT0+e0tlLnB1c2goe2NoZWNrZWQ6ITAsdmFsOiR0fSl9KSxCZS52YWx1ZT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKEtlKX1lbHNlIGlmKCJCRVRXRUVOIj09PV9lLk9QRVJBVE9SX05NKXtjb25zdCBLZT1fZS5SQVdfVkFMVUUuc3BsaXQoIiBBTkQgIik7QmUudmFsdWU9''@;'; put 'put ''S2V9ZWxzZSBCZS52YWx1ZT1fZS5SQVdfVkFMVUU7QmUudmFsdWVzPVtdLHVlPT09X2UuU1VCR1JPVVBfSUR8fChuaVt5XS5maWx0ZXIuY2xhdXNlcy5xdWVyeU9iai5wdXNoKHRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUoWikpLG5pW3ldLmZpbHRlci5jbGF1c2VzLnF1ZXJ5T2JqW3Vl''@;'; put 'put ''XS5jbGF1c2VMb2dpYz1JLG5pW3ldLmZpbHRlci5jbGF1c2VzLnF1ZXJ5T2JqW3VlXS5pbnZhbGlkQ2xhdXNlPSExLHVlKyssWi5lbGVtZW50cz1bXSksWi5lbGVtZW50cy5wdXNoKHRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUoQmUpKTticmVha319KSxaLmVsZW1lbnRzLmxlbmd0aD4w''@;'; put 'put ''JiYobmlbeV0uZmlsdGVyLmNsYXVzZXMucXVlcnlPYmoucHVzaCh0aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKFopKSxuaVt5XS5maWx0ZXIuY2xhdXNlcy5xdWVyeU9ialt1ZV0uY2xhdXNlTG9naWM9SSxuaVt5XS5maWx0ZXIuY2xhdXNlcy5xdWVyeU9ialt1ZV0uaW52YWxpZENsYXVz''@;'; put 'put ''ZT0hMSksbmlbeV0uZmlsdGVyLnF1ZXJ5PVtdfXJlbW92ZUNsYXVzZSgpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIHRoaXMucmVtb3ZlUXVlcnkubmV4dCghMCksITB9KX1zcGVjQ29udmVyc2lvbihoKXtsZXQgdj17fSx5PVtdO2lmKHk9aC5tYXAo''@;'; put 'put ''ZnVuY3Rpb24oQyl7cmV0dXJuIEMuTkFNRS50b1VwcGVyQ2FzZSgpfSksaCBpbnN0YW5jZW9mIEFycmF5KWZvcihsZXQgQz0wO0M8eS5sZW5ndGg7QysrKXZbeVtDXV09MT09PWhbQ10uVFlQRT97Y29sVHlwZToibnVtIixjb2xMZW5ndGg6aFtDXS5MRU5HVEh9Ontjb2xUeXBlOiJzdHJpbmci''@;'; put 'put ''LGNvbExlbmd0aDpoW0NdLkxFTkdUSH07cmV0dXJuIHZ9c2V0U3VibWl0UmVhZHkoKXt0aGlzLnNldFN1Ym1pdC5uZXh0KCEwKX1nb1RvU3VibWl0TGlzdCgpe3RoaXMuc2V0U3VibWl0TGlzdC5uZXh0KCEwKX1wYXJzZUZvcm1hdHMoaCl7Y29uc3Qgdj17fSx5PWgudmFycztmb3IobGV0IEMg''@;'; put 'put ''b2YgT2JqZWN0LmtleXMoeSkpe2NvbnN0IEk9eVtDXS50eXBlLFo9eVtDXS5sZW5ndGg7Im51bSI9PT1JP3ZbQ109ImJlc3QuIjoiY2hhciI9PT1JJiYodltDXT1gJGNoYXIke1p9LmApfXJldHVybiB2fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShD''@;'; put 'put ''aShnMiksQ2koWGMpLENpKHNjKSl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSksZH0pKCk7ZnVuY3Rpb24gUUhlKGQsZyl7MSZkJiYobnQoMCwiZGl2Iiw5KSgxLCJkaXYiLDEwKSxDcigyLCJjbHItaWNvbiIsMTEpLG50KDMsImgzIiwxMiksWXQoNCwi''@;'; put 'put ''VGhlcmUgYXJlIG5vIGFwcHJvdmFscyByZW1haW5pbmciKSxvdCgpKCkoKSl9ZnVuY3Rpb24gSkhlKGQsZyl7MSZkJiYobnQoMCwiaDMiLDEzKSxZdCgxLCIgUkVWSUVXICIpLG90KCkpfWZ1bmN0aW9uIFhIZShkLGcpe2lmKDEmZCYmKG50KDAsInAiLDE0KSxZdCgxLCIgWW91IGhhdmUgIiks''@;'; put 'put ''bnQoMiwic3BhbiIpLFl0KDMpLG90KCksWXQoNCwiYXBwcm92YWxzIHJlbWFpbmluZyAiKSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoKTt1dCgzKSxKaSgiIixoLnJlbWFpbmVkLCIgIil9fWZ1bmN0aW9uIEtIZShkLGcpezEmZCYmKG50KDAsInNwYW4iLDE3KSxZdCgxLCIgTG9hZGluZy4uLiAi''@;'; put 'put ''KSxvdCgpKX1mdW5jdGlvbiAkSGUoZCxnKXsxJmQmJihudCgwLCJkaXYiKSgxLCJoMyIpLFl0KDIsIkxvYWRpbmcgYXBwcm92YWxzIGxpc3QiKSxvdCgpKCkpfWZ1bmN0aW9uIHFIZShkLGcpe2lmKDEmZCYmKG50KDAsImRpdiIsMTUpLHJuKDEsS0hlLDIsMCwic3BhbiIsMTYpLHJuKDIsJEhl''@;'; put 'put ''LDMsMCwiZGl2Iiw4KSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoKTt1dCgxKSxUdCgibmdJZiIsIWgubG9hZGVkKSx1dCgxKSxUdCgibmdJZiIsIWgubG9hZGVkKX19ZnVuY3Rpb24gZU5lKGQsZyl7MSZkJiZDcigwLCJjbHItaWNvbiIsMzgpfWZ1bmN0aW9uIHROZShkLGcpezEmZCYmQ3IoMCwi''@;'; put 'put ''Y2xyLXNwaW5uZXIiLDM5KSwyJmQmJlR0KCJjbHJTbWFsbCIsITApfWZ1bmN0aW9uIG5OZShkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci1kZy1yb3ciKSgxLCJjbHItZGctY2VsbCIpLFl0KDIpLG90KCksbnQoMywiY2xyLWRnLWNlbGwiKSxZdCg0KSxvdCgpLG50KDUsImNs''@;'; put 'put ''ci1kZy1jZWxsIiksWXQoNiksb3QoKSxudCg3LCJjbHItZGctY2VsbCIpLFl0KDgpLG90KCksbnQoOSwiY2xyLWRnLWNlbGwiKSgxMCwiZGl2IiwyNikoMTEsImEiLDI3KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgQz1pdChoKS5pbmRleDtyZXR1cm4gYShRdCgyKS5nZXRDbGlja2Vk''@;'; put 'put ''KEMpKX0pLENyKDEyLCJjbHItaWNvbiIsMjgpLG50KDEzLCJzcGFuIiwyOSksWXQoMTQsIkdvIHRvIHJldmlldyBwYWdlIHNjcmVlbiIpLG90KCkoKSxudCgxNSwiYSIsMzApLEduKCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCB5PWl0KGgpLEM9eS4kaW1wbGljaXQsST15LmluZGV4LFo9UXQo''@;'; put 'put ''Mik7cmV0dXJuIGEoQy5yZWplY3RMb2FkaW5nPyIiOloucmVqZWN0aW5nKEkpKX0pLHJuKDE2LGVOZSwxLDAsImNsci1pY29uIiwzMSkscm4oMTcsdE5lLDEsMSwiY2xyLXNwaW5uZXIiLDMyKSxudCgxOCwic3BhbiIsMjkpLFl0KDE5LCJSZWplY3QiKSxvdCgpKCksbnQoMjAsImEiLDMzKSxH''@;'; put 'put ''bigiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgQz1pdChoKS4kaW1wbGljaXQ7cmV0dXJuIGEoUXQoMikuZ2V0VGFibGUoQy50YWJsZUlkKSl9KSxDcigyMSwiY2xyLWljb24iLDM0KSxudCgyMiwic3BhbiIsMjkpLFl0KDIzLCJHbyB0byBzdGFnZWQgZGF0YSBzY3JlZW4iKSxvdCgpKCkoKSgp''@;'; put 'put ''LG50KDI0LCJjbHItZGctY2VsbCIsMzUpKDI1LCJidXR0b24iLDM2KSxHbigiY2xpY2siLGZ1bmN0aW9uKHkpe2NvbnN0IEk9aXQoaCkuJGltcGxpY2l0O3JldHVybiBRdCgyKS5kb3dubG9hZChJLnRhYmxlSWQpLGEoeS5zdG9wUHJvcGFnYXRpb24oKSl9KSxDcigyNiwiY2xyLWljb24iLDM3''@;'; put 'put ''KSxvdCgpKCkoKX1pZigyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7dXQoMiksamkoaC5zdWJtaXR0ZXIpLHV0KDIpLGppKGguYmFzZVRhYmxlKSx1dCgyKSxqaShoLnN1Ym1pdHRlZCksdXQoMiksamkoaC5zdWJtaXRSZWFzb24pLHV0KDgpLFR0KCJuZ0lmIiwhaC5yZWplY3RMb2FkaW5nKSx1''@;'; put 'put ''dCgxKSxUdCgibmdJZiIsaC5yZWplY3RMb2FkaW5nKSx1dCg4KSxUdCgiaWQiLGgudGFibGVJZCl9fWZ1bmN0aW9uIHJOZShkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImRpdiIpKDEsImNsci1kYXRhZ3JpZCIsMTgpKDIsImNsci1kZy1jb2x1bW4iLDE5KSxZdCgzLCJTVUJNSVRU''@;'; put 'put ''RVIiKSxvdCgpLG50KDQsImNsci1kZy1jb2x1bW4iLDE5KSxZdCg1LCJCQVNFIFRBQkxFIiksb3QoKSxudCg2LCJjbHItZGctY29sdW1uIiwxOSksWXQoNywiU1VCTUlUVEVEIiksb3QoKSxudCg4LCJjbHItZGctY29sdW1uIiwxOSksWXQoOSwiU1VCTUlUIFJFQVNPTiIpLG90KCksbnQoMTAs''@;'; put 'put ''ImNsci1kZy1jb2x1bW4iKSxZdCgxMSwiQUNUSU9OIiksb3QoKSxudCgxMiwiY2xyLWRnLWNvbHVtbiIpLFl0KDEzLCJET1dOTE9BRCIpLG90KCkscm4oMTQsbk5lLDI3LDcsImNsci1kZy1yb3ciLDIwKSxudCgxNSwiY2xyLWRnLWZvb3RlciIsMjEpKDE2LCJzcGFuIiksWXQoMTcsIml0ZW1z''@;'; put 'put ''IHBlciBwYWdlIiksb3QoKSxudCgxOCwic2VsZWN0IiwyMiksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KCkuaXRlbXNOdW09eSl9KSxudCgxOSwib3B0aW9uIiwyMyksWXQoMjAsIjMiKSxvdCgpLG50KDIxLCJvcHRpb24iLDIzKSxZdCgyMiwiNSIp''@;'; put 'put ''LG90KCksbnQoMjMsIm9wdGlvbiIsMjMpLFl0KDI0LCIxMCIpLG90KCksbnQoMjUsIm9wdGlvbiIsMjMpLFl0KDI2LCIxNSIpLG90KCkoKSxudCgyNywiY2xyLWRnLXBhZ2luYXRpb24iLDI0LDI1KSxZdCgyOSksb3QoKSgpKCkoKX1pZigyJmQpe2NvbnN0IGg9dmEoMjgpLHY9UXQoKTt1dCgy''@;'; put 'put ''KSxUdCgiY2xyRGdGaWVsZCIsInN1Ym1pdHRlciIpLHV0KDIpLFR0KCJjbHJEZ0ZpZWxkIiwiYmFzZVRhYmxlIiksdXQoMiksVHQoImNsckRnRmllbGQiLCJzdWJtaXR0ZWQiKSx1dCgyKSxUdCgiY2xyRGdGaWVsZCIsInN1Ym1pdFJlYXNvbiIpLHV0KDYpLFR0KCJjbHJEZ0l0ZW1zT2YiLHYu''@;'; put 'put ''YXBwcm92ZUxpc3QpLHV0KDQpLFR0KCJuZ01vZGVsIix2Lml0ZW1zTnVtKSx1dCgxKSxUdCgibmdWYWx1ZSIsMyksdXQoMiksVHQoIm5nVmFsdWUiLDUpLHV0KDIpLFR0KCJuZ1ZhbHVlIiwxMCksdXQoMiksVHQoIm5nVmFsdWUiLDE1KSx1dCgyKSxUdCgiY2xyRGdQYWdlU2l6ZSIsdi5pdGVt''@;'; put 'put ''c051bSksdXQoMiksa2YoIiAiLGguZmlyc3RJdGVtKzEsIiAtICIsaC5sYXN0SXRlbSsxLCIgb2YgIixoLnRvdGFsSXRlbXMsIiBhcHByb3ZhbHMgIil9fWNvbnN0IGlOZT1mdW5jdGlvbihkKXtyZXR1cm57bm9Cb3JkZXI6ZH19O2xldCBOd2U9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvciho''@;'; put 'put ''LHYseSxDLEkpe3RoaXMuc2FzU3RvcmVTZXJ2aWNlPWgsdGhpcy5ldmVudFNlcnZpY2U9dix0aGlzLnJvdXRlPXksdGhpcy5zYXNTZXJ2aWNlPUMsdGhpcy5jZHI9SSx0aGlzLmxvYWRlZD0hMSx0aGlzLml0ZW1zTnVtPTEwfWdldFRhYmxlKGgpe3RoaXMucm91dGUubmF2aWdhdGVCeVVybCgi''@;'; put 'put ''L3N0YWdlLyIraCl9Z2V0Q2xpY2tlZChoKXt2b2lkIDAhPT10aGlzLmFwcHJvdmVMaXN0JiYodGhpcy50YWJsZUlkPXRoaXMuYXBwcm92ZUxpc3RbaF0udGFibGVJZCx0aGlzLnJvdXRlLm5hdmlnYXRlQnlVcmwoImFwcHJvdmUvYXBwcm92ZURldC8iK3RoaXMuYXBwcm92ZUxpc3RbaF0udGFi''@;'; put 'put ''bGVJZCkpfXJlamVjdGluZyhoKXt2YXIgdjtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZvaWQgMCE9PXRoaXMuYXBwcm92ZUxpc3QmJih0aGlzLnRhYmxlSWQ9dGhpcy5hcHByb3ZlTGlzdFtoXS50YWJsZUlkKTtsZXQgeT17U1RQX0FDVElPTjoiUkVKRUNUX1RB''@;'; put 'put ''QkxFIixUQUJMRTp0aGlzLnRhYmxlSWQsU1RQX1JFQVNPTjoicXVpY2sgcmVqZWN0aW9uIn07dHJ5eyh0aGlzLmFwcHJvdmVMaXN0fHxbXSlbaF0ucmVqZWN0TG9hZGluZz0hMCwoeWllbGQgdGhpcy5zYXNTdG9yZVNlcnZpY2UucmVqZWN0aW5nKHksIkJyb3dzZXJQYXJhbXMiLCJhcHByb3Zl''@;'; put 'put ''cnMvcmVqZWN0aW9uIikpLmZyb21zYXNbMF0uUkVTUE9OU0UuaW5jbHVkZXMoIlNVQ0NFU1MiKSYmKCh0aGlzLmFwcHJvdmVMaXN0fHxbXSlbaF0ucmVqZWN0TG9hZGluZz0hMSxudWxsPT09KHY9dGhpcy5hcHByb3ZlTGlzdCl8fHZvaWQgMD09PXZ8fHYuc3BsaWNlKGgsMSksdGhpcy5yZW1h''@;'; put 'put ''aW5lZC0tLHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSl9Y2F0Y2goQyl7dGhpcy5ldmVudFNlcnZpY2UuY2F0Y2hSZXNwb25zZUVycm9yKCJhcHByb3ZlcnMvcmVqZWN0aW9uIixDKX19KX1uZ09uSW5pdCgpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5m''@;'; put 'put ''ZXRjaEFwcHJvdmFscygpfSl9ZmV0Y2hBcHByb3ZhbHMoKXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMuaXRlbXNOdW09MTA7bGV0IGg9e1NUUF9BQ1RJT046Ik9QRU5fQVBQUk9WQUxTIn07dHJ5e2xldCB2PXlpZWxkIHRoaXMuc2FzU3RvcmVTZXJ2aWNl''@;'; put 'put ''LmdldEFwcHJvdmFscyhoLCJCcm93c2VyUGFyYW1zIiwiYXBwcm92ZXJzL2dldGFwcHJvdmFscyIpO3RoaXMucmVtYWluZWQ9di5mcm9tc2FzLmxlbmd0aDtsZXQgeT12LmZyb21zYXMubWFwKGZ1bmN0aW9uKEMpe3JldHVybnt0YWJsZUlkOkMuVEFCTEVfSUQsc3VibWl0dGVyOkMuU1VCTUlU''@;'; put 'put ''VEVEX0JZX05NLHN1Ym1pdHRlZDpDLlNVQk1JVFRFRF9PTl9EVFRNLGJhc2VUYWJsZTpDLkJBU0VfVEFCTEUsc3VibWl0UmVhc29uOkMuU1VCTUlUVEVEX1JFQVNPTl9UWFR9fSk7dGhpcy5hcHByb3ZlTGlzdD15LHRoaXMubG9hZGVkPSEwfWNhdGNoKHYpe3RoaXMuZXZlbnRTZXJ2aWNlLmNh''@;'; put 'put ''dGNoUmVzcG9uc2VFcnJvcigiYXBwcm92ZXJzL2dldGFwcHJvdmFscyIsdil9fSl9ZG93bmxvYWQoaCl7bGV0IHY9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCkseT12LnNlcnZlclVybCxDPXYuYXBwTG9jLEk9dGhpcy5zYXNTZXJ2aWNlLmdldEV4ZWN1dGlvblBhdGgoKTt3aW5k''@;'; put 'put ''b3cub3Blbih5K0krIi8/X3Byb2dyYW09IitDKyIvc2VydmljZXMvYXVkaXRvcnMvZ2V0YXVkaXRmaWxlJnRhYmxlPSIraCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGtnKSxLdChtdSksS3QoWmwpLEt0KGcyKSxLdChkMSkpfSxkLlx1MDI3''@;'; put 'put ''NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtYXBwcm92ZSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6OSx2YXJzOjgsY29uc3RzOltbMSwiY29udGVudC1hcmVhIl0sWzEsImNhcmQiXSxbImNsYXNzIiwiZC1mbGV4IGp1c3RpZnktY29udGVudC1j''@;'; put 'put ''ZW50ZXIiLDQsIm5nSWYiXSxbMSwiY2FyZC1oZWFkZXIiLDMsIm5nQ2xhc3MiXSxbImNsYXNzIiwiY2VudGVyIGNsci1jb2wtbWQtMTIgdGV4dC1jZW50ZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgZm9udC13ZWlnaHQtNzAwIGNvbG9yLWRhcmstZ3JheSIsNCwibmdJZiJd''@;'; put 'put ''LFsiY2xhc3MiLCJhcHByb3ZhbHMtbGlzdC13cmFwcGVyIiw0LCJuZ0lmIl0sWyJuZy1pZiIsImxvYWRlZCIsMSwiY2xyLWNvbC1tZC0xMiJdLFs0LCJuZ0lmIl0sWzEsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbMSwiY2FyZC1ibG9jayIsIm5vYXBwcm92YWxzLWluZm8t''@;'; put 'put ''d3JhcHBlciJdLFsic2hhcGUiLCJ3YXJuaW5nLXN0YW5kYXJkIiwic2l6ZSIsIjYwIiwxLCJpcy1pbmZvIiwiaWNvbi1kYy1maWxsIl0sWzEsInRleHQtY2VudGVyIiwiY29sb3ItZ3JheSJdLFsxLCJjZW50ZXIiLCJjbHItY29sLW1kLTEyIiwidGV4dC1jZW50ZXIiXSxbMSwidGV4dC1jZW50''@;'; put 'put ''ZXIiLCJmb250LXdlaWdodC03MDAiLCJjb2xvci1kYXJrLWdyYXkiXSxbMSwiYXBwcm92YWxzLWxpc3Qtd3JhcHBlciJdLFsiY2xhc3MiLCJzcGlubmVyIiw0LCJuZ0lmIl0sWzEsInNwaW5uZXIiXSxbMSwiZGF0YWdyaWQtY29tcGFjdCIsImRhdGFncmlkLWN1c3RvbS1mb290ZXIiXSxbMywi''@;'; put 'put ''Y2xyRGdGaWVsZCJdLFs0LCJjbHJEZ0l0ZW1zIiwiY2xyRGdJdGVtc09mIl0sWzEsImQtZmxleCIsImp1c3RpZnktY29udGVudC1zdGFydCJdLFszLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSJdLFszLCJuZ1ZhbHVlIl0sWzEsImNlbnRlciIsMywiY2xyRGdQYWdlU2l6ZSJdLFsicGFnaW5h''@;'; put 'put ''dGlvbiIsIiJdLFsicm9sZSIsInRvb2x0aXAiLDEsImQtZmxleCIsImp1c3RpZnktY29udGVudC1hcm91bmQiXSxbMSwiY29sdW1uLWNlbnRlciIsImxpbmtzIiwidG9vbHRpcCIsInRvb2x0aXAtbWQiLCJ0b29sdGlwLWJvdHRvbS1sZWZ0IiwiY29sb3ItZ3JlZW4iLDMsImNsaWNrIl0sWyJz''@;'; put 'put ''aGFwZSIsImNoZWNrIiwic2l6ZSIsIjI0Il0sWzEsInRvb2x0aXAtY29udGVudCJdLFsxLCJjb2x1bW4tY2VudGVyIiwibGlua3MiLCJ0b29sdGlwIiwidG9vbHRpcC1tZCIsInRvb2x0aXAtYm90dG9tLWxlZnQiLCJjb2xvci1yZWQiLDMsImNsaWNrIl0sWyJzaGFwZSIsImJhbiIsInNpemUi''@;'; put 'put ''LCIyMiIsNCwibmdJZiJdLFszLCJjbHJTbWFsbCIsNCwibmdJZiJdLFsxLCJjb2x1bW4tY2VudGVyIiwibGlua3MiLCJ0b29sdGlwIiwidG9vbHRpcC1tZCIsInRvb2x0aXAtYm90dG9tLWxlZnQiLCJjb2xvci1ibHVlIiwzLCJjbGljayJdLFsic2hhcGUiLCJjb2RlIiwic2l6ZSIsIjI4Il0s''@;'; put 'put ''WzEsInAtMCIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbMSwiYnRuIiwiYnRuLXN1Y2Nlc3MiLDMsImlkIiwiY2xpY2siXSxbInNoYXBlIiwiZG93bmxvYWQiXSxbInNoYXBlIiwiYmFuIiwic2l6ZSIsIjIyIl0sWzMsImNsclNtYWxsIl1dLHRlbXBsYXRlOmZ1bmN0aW9u''@;'; put 'put ''KGgsdil7MSZoJiYobnQoMCwiZGl2IiwwKSgxLCJkaXYiLDEpLHJuKDIsUUhlLDUsMCwiZGl2IiwyKSxudCgzLCJkaXYiLDMpLHJuKDQsSkhlLDIsMCwiaDMiLDQpLHJuKDUsWEhlLDUsMSwicCIsNSksb3QoKSxybig2LHFIZSwzLDIsImRpdiIsNiksbnQoNywiZGl2Iiw3KSxybig4LHJOZSwz''@;'; put 'put ''MCwxNCwiZGl2Iiw4KSxvdCgpKCkoKSksMiZoJiYodXQoMiksVHQoIm5nSWYiLDA9PT12LnJlbWFpbmVkKSx1dCgxKSxUdCgibmdDbGFzcyIsR2QoNixpTmUsIXYubG9hZGVkKSksdXQoMSksVHQoIm5nSWYiLHYubG9hZGVkJiYwIT09di5yZW1haW5lZCksdXQoMSksVHQoIm5nSWYiLHYubG9h''@;'; put 'put ''ZGVkJiYwIT09di5yZW1haW5lZCksdXQoMSksVHQoIm5nSWYiLCF2LmxvYWRlZCksdXQoMiksVHQoIm5nSWYiLHYuYXBwcm92ZUxpc3QmJjAhPT12LnJlbWFpbmVkKSl9LGRlcGVuZGVuY2llczpbbGMsTm8sJDMscTMsT2YsVHMsSXMsR0wsZ1MsekwsbVMsbXcsZlosaFosWUwsQVMseVMsdlMs''@;'; put 'put ''cHcsVkwsWkwsd2wsZ2FdLHN0eWxlczpbIi5jb2x1bW4tY2VudGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfS5kYXRhZ3JpZFtfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAuZGF0YWdyaWQtY29sdW1uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kYXRhZ3JpZC1jb2x1bW4tdGl0bGVbX25nY29udGVudC0lQ09NUCVde291dGxpbmU6bm9uZSFpbXBvcnRhbnR9LmxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo3MDA7Y3Vyc29yOnBvaW50ZXJ9LnRv''@;'; put 'put ''b2x0aXAudG9vbHRpcC1ib3R0b20tbGVmdFtfbmdjb250ZW50LSVDT01QJV0gPiAudG9vbHRpcC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWJvdHRvbS1sZWZ0W19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXXtiYWNrZ3JvdW5kOiMzMTQzNTEhaW1wb3J0YW50fS50b29sdGlwLnRvb2x0aXAtYm90dG9tLWxlZnRbX25nY29udGVudC0lQ09NUCVdID4gLnRvb2x0aXAtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06YmVmb3JlLCAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRp''@;'; put 'put ''cC1jb250ZW50LnRvb2x0aXAtYm90dG9tLWxlZnRbX25nY29udGVudC0lQ09NUCVdOmJlZm9yZXtib3JkZXItcmlnaHQ6LjI1cmVtIHNvbGlkICMzMTQzNTE7Ym9yZGVyLWJvdHRvbTouMjA4MzNyZW0gc29saWQgIzMxNDM1MX0ubm9Cb3JkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1i''@;'; put 'put ''b3R0b206MXB4IHNvbGlkIHRyYW5zcGFyZW50IWltcG9ydGFudH0uYXBwcm92YWxzLWxpc3Qtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0Ojcwdmg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNl''@;'; put 'put ''bnRlcn0ubm9hcHByb3ZhbHMtaW5mby13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDpjYWxjKDEwMHZoIC0gMjAwcHgpfSJdfSksZH0pKCk7''@;'; put 'put ''ZnVuY3Rpb24gb05lKGQsZyl7aWYoMSZkJiYobnQoMCwidHIiKSgxLCJ0ZCIsNCksWXQoMiksb3QoKSxudCgzLCJ0ZCIsNCksWXQoNCksb3QoKSgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1RdCgpO3V0KDIpLGppKGgpLHV0KDIpLGppKHYuanNQYXJhbXNbaF0pfX1mdW5jdGlvbiBh''@;'; put 'put ''TmUoZCxnKXsxJmQmJihudCgwLCJwIiw2NiksWXQoMSwiIFRoZXJlIGFyZSBubyBkZXRhaWxzIHRvIHNob3cgIiksb3QoKSl9ZnVuY3Rpb24gbE5lKGQsZyl7aWYoMSZkJiYoQjAoMCksbnQoMSwiZGl2Iiw2NykoMiwic3BhbiIpLFl0KDMsIlRhYmxlIElkOiIpLG90KCksbnQoNCwic3Ryb25n''@;'; put 'put ''IiksWXQoNSksb3QoKSgpLG50KDYsImRpdiIpKDcsInNwYW4iKSxZdCg4LCJTdWJtaXR0ZXI6Iiksb3QoKSxudCg5LCJzcGFuIiw2OCksWXQoMTApLG90KCkoKSxudCgxMSwiZGl2IikoMTIsInNwYW4iKSxZdCgxMywiU3VibWl0dGVkIG9uOiIpLG90KCksbnQoMTQsInNwYW4iLDY4KSxZdCgx''@;'; put 'put ''NSksb3QoKSgpLG50KDE2LCJkaXYiKSgxNywic3BhbiIpLFl0KDE4LCJTdWJtaXR0ZWQgUmVhc29uOiIpLG90KCksbnQoMTksInNwYW4iLDY4KSxZdCgyMCksb3QoKSgpLFAwKCkpLDImZCl7Y29uc3QgaD1RdCg1KTt1dCg1KSxKaSgiICIsbnVsbD09aC50YWJsZURldGFpbHM/bnVsbDpoLnRh''@;'; put 'put ''YmxlRGV0YWlscy5UQUJMRV9JRCwiICIpLHV0KDUpLEppKCIgIixudWxsPT1oLnRhYmxlRGV0YWlscz9udWxsOmgudGFibGVEZXRhaWxzLlNVQk1JVFRFRF9CWV9OTSwiICIpLHV0KDUpLEppKCIgIixudWxsPT1oLnRhYmxlRGV0YWlscz9udWxsOmgudGFibGVEZXRhaWxzLlNVQk1JVFRFRF9P''@;'; put 'put ''Tl9EVFRNLCIgIiksdXQoNSksSmkoIiAiLG51bGw9PWgudGFibGVEZXRhaWxzP251bGw6aC50YWJsZURldGFpbHMuU1VCTUlUVEVEX1JFQVNPTl9UWFQsIiAiKX19ZnVuY3Rpb24gc05lKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiZGl2Iiw0MykoMSwiZGl2Iiw0NCkoMiwiZGl2''@;'; put 'put ''Iiw0NSkscm4oMyxhTmUsMiwwLCJwIiwzOSkscm4oNCxsTmUsMjEsNCwibmctY29udGFpbmVyIiwxNiksb3QoKSxudCg1LCJkaXYiLDQ2KSg2LCJkaXYiLDQ3KSg3LCJkaXYiLDQ4KSg4LCJkaXYiLDQ5KSg5LCJidXR0b24iLDUwKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3Qg''@;'; put 'put ''eT1RdCg0KTtyZXR1cm4gYSh5LmdvVG9CYXNlKG51bGw9PXkuanNQYXJhbXM/bnVsbDp5LmpzUGFyYW1zLlRBQkxFX05NKSl9KSxZdCgxMCwiIEdvIHRvIGJhc2UgdGFibGUgc2NyZWVuICIpLG90KCksbnQoMTEsImJ1dHRvbiIsNTEpLEduKCJjbGljayIsZnVuY3Rpb24oKXtpdChoKTtjb25z''@;'; put 'put ''dCB5PVF0KDQpO3JldHVybiBhKHkuZ2V0VGFibGUoeS50YWJsZUlkKSl9KSxZdCgxMiwiIEdvIHRvIGVkaXRlZCBzY3JlZW4gIiksb3QoKSxudCgxMywiYnV0dG9uIiw1MiksR24oImNsaWNrIixmdW5jdGlvbigpe2l0KGgpO2NvbnN0IHk9UXQoNCk7cmV0dXJuIGEoeS5nb0JhY2sobnVsbD09''@;'; put 'put ''eS5qc1BhcmFtcz9udWxsOnkuanNQYXJhbXMuVEFCTEVfTk0pKX0pLFl0KDE0LCIgR28gYmFjayB0byBlZGl0b3IgIiksb3QoKSgpKCkoKSxudCgxNSwiZGl2Iiw1MykoMTYsImJ1dHRvbiIsNTQpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCg0KS5hcHByb3ZlVGFi''@;'; put 'put ''bGUoKSl9KSxZdCgxNywiIEFDQ0VQVCAiKSxvdCgpLG50KDE4LCJidXR0b24iLDU1KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoNCkucmVqZWN0T3Blbj0hMCl9KSxZdCgxOSwiIFJFSkVDVCAiKSxvdCgpLG50KDIwLCJjbHItdG9nZ2xlLWNvbnRhaW5lciIsNTYp''@;'; put 'put ''KDIxLCJjbHItdG9nZ2xlLXdyYXBwZXIiKSgyMiwiaW5wdXQiLDU3KSxHbigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoNCkuZm9ybWF0dGVkVmFsdWVzPXkpfSkoImNoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCg0KS5mb3JtYXR0aW5n''@;'; put 'put ''Q2hhbmdlZCgpKX0pLG90KCksbnQoMjMsImxhYmVsIiw1OCksWXQoMjQpLG90KCkoKSgpKCksbnQoMjUsImRpdiIsNDcpKDI2LCJkaXYiLDI1KSgyNywiZGl2Iiw1OSkoMjgsInNwYW4iLDYwKSxZdCgyOSwiIENoYW5nZWQgUm93cyAiKSxudCgzMCwic3BhbiIsNjEpLFl0KDMxKSxvdCgpKCks''@;'; put 'put ''bnQoMzIsInNwYW4iLDYyKSxZdCgzMywiIEFkZGVkIFJvd3MgIiksbnQoMzQsInNwYW4iLDYzKSxZdCgzNSksb3QoKSgpLG50KDM2LCJzcGFuIiw2NCksWXQoMzcsIiBEZWxldGVkIFJvd3MgIiksbnQoMzgsInNwYW4iLDY1KSxZdCgzOSksb3QoKSgpKCkoKSgpKCkoKSgpfWlmKDImZCl7Y29u''@;'; put 'put ''c3QgaD1RdCg0KTt1dCgzKSxUdCgibmdJZiIsIWgudGFibGVEZXRhaWxzKSx1dCgxKSxUdCgibmdJZiIsaC50YWJsZURldGFpbHMpLHV0KDEyKSxUdCgiY2xyTG9hZGluZyIsaC5hY2NlcHRMb2FkaW5nKSgiZGlzYWJsZWQiLCFoLmxvYWRpbmdUYWJsZXx8Ik5PIj09PShudWxsPT1oLnBhcmFt''@;'; put 'put ''cz9udWxsOmgucGFyYW1zLklTQVBQUk9WRVIpfHxoLm5vQ2hhbmdlcyksdXQoMiksVHQoImRpc2FibGVkIiwhaC5sb2FkaW5nVGFibGV8fCJOTyI9PT0obnVsbD09aC5wYXJhbXM/bnVsbDpoLnBhcmFtcy5JU0FQUFJPVkVSKXx8aC5ub0NoYW5nZXMpLHV0KDQpLFR0KCJuZ01vZGVsIixoLmZv''@;'; put 'put ''cm1hdHRlZFZhbHVlcyksdXQoMiksamkoaC5mb3JtYXR0ZWRWYWx1ZXM/IkZvcm1hdHRlZCI6IlVuZm9ybWF0dGVkIiksdXQoNyksamkoaC5sZW5zLnVwZGF0ZWQpLHV0KDQpLGppKGgubGVucy5uZXcpLHV0KDQpLGppKGgubGVucy5kZWxldGVkKX19ZnVuY3Rpb24gdU5lKGQsZyl7MSZkJiYo''@;'; put 'put ''bnQoMCwiZGl2IikoMSwiaDMiKSxZdCgyLCJMb2FkaW5nIHRhYmxlIiksb3QoKSgpKX1mdW5jdGlvbiBjTmUoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDY5KSgxLCJzcGFuIiw3MCksWXQoMiwiIExvYWRpbmcuLi4gIiksb3QoKSxybigzLHVOZSwzLDAsImRpdiIsMTYpLG90KCkpLDImZCl7''@;'; put 'put ''Y29uc3QgaD1RdCg0KTt1dCgzKSxUdCgibmdJZiIsIWgubG9hZGluZ1RhYmxlKX19ZnVuY3Rpb24gZk5lKGQsZyl7MSZkJiYobnQoMCwicCIsNjYpLFl0KDEsIiBUaGVyZSBhcmUgbm8gY2hhbmdlcyB0byBzaG93ICIpLG90KCkpfWZ1bmN0aW9uIGhOZShkLGcpe2lmKDEmZCYmKG50KDAsInRo''@;'; put 'put ''Iiw0KSxZdCgxKSxvdCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7dXQoMSksamkoaCl9fWZ1bmN0aW9uIGROZShkLGcpe2lmKDEmZCYmKG50KDAsInNwYW4iLDc1KSxZdCgxKSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoKS5pbmRleCx2PVF0KDIpLmluZGV4LHk9UXQoNCk7dXQoMSksSmko''@;'; put 'put ''Ik9yaWdpbmFsIHZhbHVlIGlzOiAiLHkuYXJyT2ZDaGFuZ2VzW3ZdW2hdLCIiKX19Y29uc3QgVndlPWZ1bmN0aW9uKGQpe3JldHVybnsiY2ggdG9vbHRpcCB0b29sdGlwLW1kIHRvb2x0aXAtdG9wLXJpZ2h0IjpkfX07ZnVuY3Rpb24gcE5lKGQsZyl7aWYoMSZkJiYobnQoMCwidGQiLDczKSxZ''@;'; put 'put ''dCgxKSxybigyLGROZSwyLDEsInNwYW4iLDc0KSxvdCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1nLmluZGV4LHk9UXQoMikuaW5kZXgsQz1RdCg0KTtUdCgibmdDbGFzcyIsR2QoMyxWd2UsMT09Qy5hcnJDaGFuZ2VkW3ldW3ZdJiYidXBkYXRlZCI9PUMuY2hBcnJbeV0pKSx1dCgx''@;'; put 'put ''KSxKaSgiICIsQy5kaWZmVGFibGUuZGF0YVt5XVtoXSwiICIpLHV0KDEpLFR0KCJuZ0lmIiwxPT1DLmFyckNoYW5nZWRbeV1bdl0mJiJ1cGRhdGVkIj09Qy5jaEFyclt5XSl9fWZ1bmN0aW9uIGdOZShkLGcpe2lmKDEmZCYmKEIwKDApLHJuKDEscE5lLDMsNSwidGQiLDcyKSxQMCgpKSwyJmQp''@;'; put 'put ''e2NvbnN0IGg9UXQoKS5pbmRleCx2PVF0KDQpO3V0KDEpLFR0KCJuZ0Zvck9mIix2LnJvd0tleXNbaF0pfX1mdW5jdGlvbiBtTmUoZCxnKXtpZigxJmQmJihudCgwLCJ0ZCIsNCksWXQoMSksb3QoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0LHY9UXQoMikuaW5kZXgseT1RdCg0KTt1dCgx''@;'; put 'put ''KSxKaSgiICIseS5kaWZmVGFibGUuZGF0YVt2XVtoXSwiICIpfX1mdW5jdGlvbiB2TmUoZCxnKXtpZigxJmQmJihCMCgwKSxybigxLG1OZSwyLDEsInRkIiw0MSksUDAoKSksMiZkKXtjb25zdCBoPVF0KCkuaW5kZXgsdj1RdCg0KTt1dCgxKSxUdCgibmdGb3JPZiIsdi5yb3dLZXlzW2hdKX19''@;'; put 'put ''Y29uc3QgandlPWZ1bmN0aW9uKGQsZyxoKXtyZXR1cm57YWRkZWRSb3c6ZCxkZWxldGVkUm93OmcsdXBkYXRlZFJvdzpofX07ZnVuY3Rpb24gQU5lKGQsZyl7aWYoMSZkJiYobnQoMCwidHIiLDcxKSxybigxLGdOZSwyLDEsIm5nLWNvbnRhaW5lciIsMTYpLHJuKDIsdk5lLDIsMSwibmctY29u''@;'; put 'put ''dGFpbmVyIiwxNiksb3QoKSksMiZkKXtjb25zdCBoPWcuaW5kZXgsdj1RdCg0KTtUdCgibmdDbGFzcyIsSCgzLGp3ZSwiYWRkZWQiPT12LmNoQXJyW2hdLCJkZWxldGVkIj09di5jaEFycltoXSwidXBkYXRlZCI9PXYuY2hBcnJbaF0pKSx1dCgxKSxUdCgibmdJZiIsInVwZGF0ZWQiPT09di5j''@;'; put 'put ''aEFycltoXSksdXQoMSksVHQoIm5nSWYiLCJ1cGRhdGVkIiE9PXYuY2hBcnJbaF0pfX1mdW5jdGlvbiB5TmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJkaXYiLDIzKSgxLCJkaXYiLDI0KSgyLCJkaXYiLDI1KSgzLCJkaXYiLDI2KSg0LCJzcGFuIiwyNyksR24oImNsaWNrIixm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KDMpLmdvVG9BcHByb3ZhbHNMaXN0KCkpfSksQ3IoNSwiY2xyLWljb24iLDI4KSxZdCg2LCJCYWNrIHRvIGFwcHJvdmFscyBsaXN0ICIpLG90KCkoKSxudCg3LCJkaXYiLDI5KSg4LCJoMyIsMzApLFl0KDkpLG90KCkoKSxudCgxMCwiZGl2Iiwz''@;'; put 'put ''MSkoMTEsImEiLDMyKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoMykuZ2V0RGV0YWlscygpKX0pLENyKDEyLCJjbHItaWNvbiIsMzMpLG90KCkoKSgpLG50KDEzLCJwIiwzNCksWXQoMTQpLG90KCkoKSxudCgxNSwiZGl2IiwzNSkscm4oMTYsc05lLDQwLDEwLCJk''@;'; put 'put ''aXYiLDM2KSxvdCgpLHJuKDE3LGNOZSw0LDEsImRpdiIsMzcpLG50KDE4LCJkaXYiLDM4KSxybigxOSxmTmUsMiwwLCJwIiwzOSksbnQoMjAsInRhYmxlIiwzKSgyMSwidGhlYWQiKSgyMiwidHIiLDQwKSxybigyMyxoTmUsMiwxLCJ0aCIsNDEpLG90KCkoKSxudCgyNCwidGJvZHkiKSxybigy''@;'; put 'put ''NSxBTmUsMyw3LCJ0ciIsNDIpLG90KCkoKSgpKCl9aWYoMiZkKXtjb25zdCBoPVF0KDMpO3V0KDkpLEppKCIgIixudWxsPT1oLmpzUGFyYW1zP251bGw6aC5qc1BhcmFtcy5UQUJMRV9OTSwiICIpLHV0KDUpLEppKCIgIixudWxsPT1oLmpzUGFyYW1zP251bGw6aC5qc1BhcmFtcy5UQUJMRV9E''@;'; put 'put ''RVNDLCIgIiksdXQoMiksVHQoIm5nSWYiLGgubG9hZGVkKSx1dCgxKSxUdCgibmdJZiIsIWgubG9hZGluZ1RhYmxlKSx1dCgyKSxUdCgibmdJZiIsaC5sb2FkaW5nVGFibGUmJmgubm9DaGFuZ2VzKSx1dCg0KSxUdCgibmdGb3JPZiIsaC5yb3dIZWFkZXIpLHV0KDIpLFR0KCJuZ0Zvck9mIixo''@;'; put 'put ''LnJvd0tleXMpfX1mdW5jdGlvbiB3TmUoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDIxKSxybigxLHlOZSwyNiw3LCJkaXYiLDIyKSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoMik7dXQoMSksVHQoIm5nSWYiLGgubG9hZGVkKX19ZnVuY3Rpb24gYk5lKGQsZyl7MSZkJiYobnQoMCwic3BhbiIs''@;'; put 'put ''NzApLFl0KDEsIiBMb2FkaW5nLi4uICIpLG90KCkpfWZ1bmN0aW9uIF9OZShkLGcpezEmZCYmKG50KDAsImRpdiIpKDEsImgzIiksWXQoMiwiTG9hZGluZyBwcmV2aWV3Iiksb3QoKSgpKX1mdW5jdGlvbiBDTmUoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDc2KSxybigxLGJOZSwyLDAsInNw''@;'; put 'put ''YW4iLDc3KSxybigyLF9OZSwzLDAsImRpdiIsMTYpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgyKTt1dCgxKSxUdCgibmdJZiIsIWgubG9hZGVkKSx1dCgxKSxUdCgibmdJZiIsIWgubG9hZGVkKX19ZnVuY3Rpb24ga05lKGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2IiwxNykscm4oMSx3TmUsMiwx''@;'; put 'put ''LCJkaXYiLDE4KSxudCgyLCJkaXYiLDE5KSxybigzLENOZSwzLDIsImRpdiIsMjApLG90KCkoKSksMiZkKXtjb25zdCBoPVF0KCk7dXQoMSksVHQoIm5nSWYiLGgubG9hZGVkKSx1dCgyKSxUdCgibmdJZiIsIWgubG9hZGVkKX19ZnVuY3Rpb24gU05lKGQsZyl7aWYoMSZkJiYobnQoMCwidHIi''@;'; put 'put ''KSgxLCJ0ZCIsNCksWXQoMiksb3QoKSxudCgzLCJ0ZCIsNCksWXQoNCksb3QoKSgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1RdCg2KTt1dCgyKSxqaShoKSx1dCgyKSxqaSh2LnN1Ym1pdERldGFpbHNbaF0pfX1mdW5jdGlvbiBNTmUoZCxnKXtpZigxJmQmJihudCgwLCJjbHItdGFi''@;'; put 'put ''LWNvbnRlbnQiKSgxLCJkaXYiLDk3KSgyLCJ0YWJsZSIsMykoMywidGhlYWQiKSg0LCJ0ciIpKDUsInRoIiw0KSxZdCg2LCJOYW1lIiksb3QoKSxudCg3LCJ0aCIsNCksWXQoOCwiVmFsdWUiKSxvdCgpKCkoKSxudCg5LCJ0Ym9keSIpLHJuKDEwLFNOZSw1LDIsInRyIiw1KSxvdCgpKCkoKSgp''@;'; put 'put ''KSwyJmQpe2NvbnN0IGg9UXQoNSk7dXQoMTApLFR0KCJuZ0Zvck9mIixoLnN1Ym1pdEFycil9fWZ1bmN0aW9uIEVOZShkLGcpe2lmKDEmZCYmKG50KDAsInRyIikoMSwidGQiLDQpLFl0KDIpLG90KCksbnQoMywidGQiLDQpLFl0KDQpLG90KCkoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0''@;'; put 'put ''LHY9UXQoNSk7dXQoMiksamkoaCksdXQoMiksamkodi5qc1BhcmFtc1toXSl9fWZ1bmN0aW9uIHhOZShkLGcpe2lmKDEmZCYmKG50KDAsImNsci10YWJzIikoMSwiY2xyLXRhYiIpKDIsImJ1dHRvbiIsOTUpLFl0KDMsIlN1Ym1pdHRlZCBUYWJsZSBEZXRhaWxzIiksb3QoKSxybig0LE1OZSwx''@;'; put 'put ''MSwxLCJjbHItdGFiLWNvbnRlbnQiLDk2KSxvdCgpLG50KDUsImNsci10YWIiKSg2LCJidXR0b24iLDk1KSxZdCg3LCJCYXNlIFRhYmxlIERldGFpbHMiKSxvdCgpLG50KDgsImNsci10YWItY29udGVudCIpKDksImRpdiIsOTcpKDEwLCJ0YWJsZSIsMykoMTEsInRoZWFkIikoMTIsInRyIiko''@;'; put 'put ''MTMsInRoIiw0KSxZdCgxNCwiTmFtZSIpLG90KCksbnQoMTUsInRoIiw0KSxZdCgxNiwiVmFsdWUiKSxvdCgpKCkoKSxudCgxNywidGJvZHkiKSxybigxOCxFTmUsNSwyLCJ0ciIsNSksb3QoKSgpKCkoKSgpKCkpLDImZCl7Y29uc3QgaD1RdCg0KTt1dCg0KSxUdCgiY2xySWZBY3RpdmUiLCEw''@;'; put 'put ''KSx1dCgxNCksVHQoIm5nRm9yT2YiLGgua2V5c0FycmF5KX19ZnVuY3Rpb24gVE5lKGQsZyl7MSZkJiZDcigwLCJkaXYiLDQzKX1mdW5jdGlvbiBJTmUoZCxnKXsxJmQmJihudCgwLCJkaXYiKSgxLCJoMyIpLFl0KDIsIkxvYWRpbmcgdGFibGUiKSxvdCgpKCkpfWZ1bmN0aW9uIEROZShkLGcp''@;'; put 'put ''e2lmKDEmZCYmKG50KDAsImRpdiIsOTgpKDEsInNwYW4iLDcwKSxZdCgyLCIgTG9hZGluZy4uLiAiKSxvdCgpLHJuKDMsSU5lLDMsMCwiZGl2IiwxNiksb3QoKSksMiZkKXtjb25zdCBoPVF0KDQpO3V0KDMpLFR0KCJuZ0lmIiwhaC5sb2FkaW5nVGFibGUpfX1mdW5jdGlvbiBMTmUoZCxnKXtp''@;'; put 'put ''ZigxJmQmJihudCgwLCJ0aCIsNCksWXQoMSksb3QoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3V0KDEpLGppKGgpfX1mdW5jdGlvbiBPTmUoZCxnKXtpZigxJmQmJihudCgwLCJzcGFuIiw3NSksWXQoMSksb3QoKSksMiZkKXtjb25zdCBoPVF0KCkuaW5kZXgsdj1RdCgyKS5pbmRleCx5''@;'; put 'put ''PVF0KDQpO3V0KDEpLEppKCJPcmlnaW5hbCB2YWx1ZSBpczogIix5LmFyck9mQ2hhbmdlc1t2XVtoXSwiIil9fWZ1bmN0aW9uIFJOZShkLGcpe2lmKDEmZCYmKG50KDAsInRkIiw3MyksWXQoMSkscm4oMixPTmUsMiwxLCJzcGFuIiw3NCksb3QoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0''@;'; put 'put ''LHY9Zy5pbmRleCx5PVF0KDIpLmluZGV4LEM9UXQoNCk7VHQoIm5nQ2xhc3MiLEdkKDMsVndlLDE9PUMuYXJyQ2hhbmdlZFt5XVt2XSYmInVwZGF0ZWQiPT1DLmNoQXJyW3ldKSksdXQoMSksSmkoIiAiLEMuZGlmZlRhYmxlLmRhdGFbeV1baF0sIiAiKSx1dCgxKSxUdCgibmdJZiIsMT09Qy5h''@;'; put 'put ''cnJDaGFuZ2VkW3ldW3ZdJiYidXBkYXRlZCI9PUMuY2hBcnJbeV0pfX1mdW5jdGlvbiBCTmUoZCxnKXtpZigxJmQmJihCMCgwKSxybigxLFJOZSwzLDUsInRkIiw3MiksUDAoKSksMiZkKXtjb25zdCBoPVF0KCkuaW5kZXgsdj1RdCg0KTt1dCgxKSxUdCgibmdGb3JPZiIsdi5yb3dLZXlzW2hd''@;'; put 'put ''KX19ZnVuY3Rpb24gUE5lKGQsZyl7aWYoMSZkJiYobnQoMCwidGQiLDQpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PVF0KDIpLmluZGV4LHk9UXQoNCk7dXQoMSksSmkoIiAiLHkuZGlmZlRhYmxlLmRhdGFbdl1baF0sIiAiKX19ZnVuY3Rpb24gRk5lKGQsZyl7aWYo''@;'; put 'put ''MSZkJiYoQjAoMCkscm4oMSxQTmUsMiwxLCJ0ZCIsNDEpLFAwKCkpLDImZCl7Y29uc3QgaD1RdCgpLmluZGV4LHY9UXQoNCk7dXQoMSksVHQoIm5nRm9yT2YiLHYucm93S2V5c1toXSl9fWZ1bmN0aW9uIEhOZShkLGcpe2lmKDEmZCYmKG50KDAsInRyIiw3MSkscm4oMSxCTmUsMiwxLCJuZy1j''@;'; put 'put ''b250YWluZXIiLDE2KSxybigyLEZOZSwyLDEsIm5nLWNvbnRhaW5lciIsMTYpLG90KCkpLDImZCl7Y29uc3QgaD1nLmluZGV4LHY9UXQoNCk7VHQoIm5nQ2xhc3MiLEgoMyxqd2UsImFkZGVkIj09di5jaEFycltoXSwiZGVsZXRlZCI9PXYuY2hBcnJbaF0sInVwZGF0ZWQiPT12LmNoQXJyW2hd''@;'; put 'put ''KSksdXQoMSksVHQoIm5nSWYiLCJ1cGRhdGVkIj09PXYuY2hBcnJbaF0pLHV0KDEpLFR0KCJuZ0lmIiwidXBkYXRlZCIhPT12LmNoQXJyW2hdKX19ZnVuY3Rpb24gTk5lKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiZGl2Iiw4MikoMSwiZGl2Iiw4MykoMiwiZGl2IiwyNSkoMywi''@;'; put 'put ''ZGl2IiwyNikoNCwic3BhbiIsODQpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgzKS5nb1RvU3VibWl0TGlzdCgpKX0pLENyKDUsImNsci1pY29uIiwyOCksWXQoNiwiQmFjayB0byBzdWJtaXR0ZWQgbGlzdCAiKSxvdCgpKCksbnQoNywiZGl2Iiw4NSkoOCwiaDMi''@;'; put 'put ''LDg2KSxZdCg5KSxvdCgpKCksbnQoMTAsImRpdiIsMzEpKDExLCJzZWN0aW9uIiw4KSgxMiwiZGl2Iiw5KSgxMywiZGl2Iiw4NykoMTQsImlucHV0Iiw4OCksR24oImNoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoMykuc2hvd0RldGFpbHNTZWxlY3QoeSkpfSksb3QoKSxu''@;'; put 'put ''dCgxNSwibGFiZWwiLDg5KSxZdCgxNiwiQWxsIERldGFpbHMiKSxvdCgpKCkoKSgpKCkoKSxudCgxNywicCIsOTApLFl0KDE4KSxvdCgpKCksbnQoMTksImRpdiIsNDQpKDIwLCJkaXYiLDQ1KSgyMSwiZGl2Iiw2NykoMjIsInNwYW4iKSxZdCgyMywiVGFibGUgSWQ6Iiksb3QoKSxudCgyNCwi''@;'; put 'put ''c3Ryb25nIikoMjUsInNwYW4iKSxZdCgyNiksb3QoKSgpKCksbnQoMjcsImRpdiIpKDI4LCJzcGFuIiksWXQoMjksIlN1Ym1pdHRlZCBvbjoiKSxvdCgpLG50KDMwLCJzcGFuIiw2OCksWXQoMzEpLG90KCkoKSxudCgzMiwiZGl2IikoMzMsInNwYW4iKSxZdCgzNCwiU3VibWl0IE1lc3NhZ2U6''@;'; put 'put ''Iiksb3QoKSxudCgzNSwic3BhbiIpLFl0KDM2KSxvdCgpKCkoKSxudCgzNywiZGl2Iiw0NikoMzgsImRpdiIsNDcpKDM5LCJkaXYiLDQ4KSg0MCwiZGl2Iiw0OSkoNDEsImJ1dHRvbiIsNTApLEduKCJjbGljayIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KDMpO3JldHVybiBhKHkuZ29U''@;'; put 'put ''b0Jhc2UoeS5zdWJPYmouYmFzZSkpfSksWXQoNDIsIiBHbyB0byBiYXNlIHRhYmxlIHNjcmVlbiAiKSxvdCgpLG50KDQzLCJidXR0b24iLDUxKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3QgeT1RdCgzKTtyZXR1cm4gYSh5LmdldFRhYmxlKHkuc3ViT2JqLnRhYmxlSWQpKX0p''@;'; put 'put ''LFl0KDQ0LCIgR28gdG8gZWRpdGVkIHNjcmVlbiAiKSxvdCgpLG50KDQ1LCJidXR0b24iLDUyKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3QgeT1RdCgzKTtyZXR1cm4gYSh5LmdvQmFjayh5LnN1Yk9iai5iYXNlKSl9KSxZdCg0NiwiIEdvIGJhY2sgdG8gZWRpdG9yICIpLG90''@;'; put 'put ''KCkoKSgpKCksbnQoNDcsImRpdiIsNDcpKDQ4LCJkaXYiLDI1KSg0OSwiZGl2Iiw1OSkoNTAsInNwYW4iLDYwKSxZdCg1MSwiIENoYW5nZWQgUm93cyAiKSxudCg1Miwic3BhbiIsNjEpLFl0KDUzKSxvdCgpKCksbnQoNTQsInNwYW4iLDYyKSxZdCg1NSwiIEFkZGVkIFJvd3MgIiksbnQoNTYs''@;'; put 'put ''InNwYW4iLDYzKSxZdCg1Nyksb3QoKSgpLG50KDU4LCJzcGFuIiw2NCksWXQoNTksIiBEZWxldGVkIFJvd3MgIiksbnQoNjAsInNwYW4iLDY1KSxZdCg2MSksb3QoKSgpKCkoKSgpLG50KDYyLCJkaXYiLDQ3KSg2MywiY2xyLXRvZ2dsZS1jb250YWluZXIiLDkxKSg2NCwiY2xyLXRvZ2dsZS13''@;'; put 'put ''cmFwcGVyIikoNjUsImlucHV0Iiw1NyksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KDMpLmZvcm1hdHRlZFZhbHVlcz15KX0pKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoMykuZm9ybWF0dGluZ0NoYW5nZWQoKSl9KSxvdCgp''@;'; put 'put ''LG50KDY2LCJsYWJlbCIpLFl0KDY3KSxvdCgpKCkoKSgpKCkoKSxybig2OCx4TmUsMTksMiwiY2xyLXRhYnMiLDE2KSxudCg2OSwiZGl2Iiw5Mikscm4oNzAsVE5lLDEsMCwiZGl2IiwzNiksb3QoKSxybig3MSxETmUsNCwxLCJkaXYiLDkzKSxudCg3MiwiZGl2Iiw5NCkoNzMsInRhYmxlIiwz''@;'; put 'put ''KSg3NCwidGhlYWQiKSg3NSwidHIiLDQwKSxybig3NixMTmUsMiwxLCJ0aCIsNDEpLG90KCkoKSxudCg3NywidGJvZHkiKSxybig3OCxITmUsMyw3LCJ0ciIsNDIpLG90KCkoKSgpKCl9aWYoMiZkKXtjb25zdCBoPVF0KDMpO3V0KDkpLEppKCIgIixoLnN1Yk9iai5iYXNlLCIgIiksdXQoOSks''@;'; put 'put ''SmkoIiAiLGgudGFibGVEZXNjcmlwdGlvbiwiICIpLHV0KDgpLEppKCIgIixoLnN1Yk9iai50YWJsZUlkLCIiKSx1dCg1KSxKaSgiICIsaC5zdWJPYmouc3VibWl0dGVkLCIgIiksdXQoNSksSmkoIiAiLGguc3ViT2JqLnN1Ym1pdFJlYXNvbiwiICIpLHV0KDE3KSxqaShoLmxlbnMudXBkYXRl''@;'; put 'put ''ZCksdXQoNCksamkoaC5sZW5zLm5ldyksdXQoNCksamkoaC5sZW5zLmRlbGV0ZWQpLHV0KDQpLFR0KCJuZ01vZGVsIixoLmZvcm1hdHRlZFZhbHVlcyksdXQoMiksamkoaC5mb3JtYXR0ZWRWYWx1ZXM/IkZvcm1hdHRlZCI6IlVuZm9ybWF0dGVkIiksdXQoMSksVHQoIm5nSWYiLGgudGFibGVG''@;'; put 'put ''bGFnKSx1dCgyKSxUdCgibmdJZiIsaC5sb2FkZWQpLHV0KDEpLFR0KCJuZ0lmIiwhaC5sb2FkaW5nVGFibGUpLHV0KDUpLFR0KCJuZ0Zvck9mIixoLnJvd0hlYWRlciksdXQoMiksVHQoIm5nRm9yT2YiLGgucm93S2V5cyl9fWZ1bmN0aW9uIFZOZShkLGcpe2lmKDEmZCYmKG50KDAsImRpdiIs''@;'; put 'put ''ODApLHJuKDEsTk5lLDc5LDE1LCJkaXYiLDgxKSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoMik7dXQoMSksVHQoIm5nSWYiLGgubG9hZGVkKX19ZnVuY3Rpb24gak5lKGQsZyl7MSZkJiYobnQoMCwiZGl2IikoMSwiaDMiKSxZdCgyLCJMb2FkaW5nIHN1Ym1pdHRlZCB0YWJsZSIpLG90KCkoKSl9''@;'; put 'put ''ZnVuY3Rpb24gWk5lKGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2Iiw5OSkoMSwiZGl2IiwxMDApKDIsInNwYW4iLDcwKSxZdCgzLCIgTG9hZGluZy4uLiAiKSxvdCgpLHJuKDQsak5lLDMsMCwiZGl2IiwxNiksb3QoKSgpKSwyJmQpe2NvbnN0IGg9UXQoMik7dXQoNCksVHQoIm5nSWYiLCFoLmxv''@;'; put 'put ''YWRlZCl9fWZ1bmN0aW9uIHpOZShkLGcpe2lmKDEmZCYmKG50KDAsImRpdiIpLHJuKDEsVk5lLDIsMSwiZGl2Iiw3OCkscm4oMixaTmUsNSwxLCJkaXYiLDc5KSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoKTt1dCgxKSxUdCgibmdJZiIsaC5sb2FkZWQpLHV0KDEpLFR0KCJuZ0lmIiwhaC5sb2Fk''@;'; put 'put ''ZWQpfX1jb25zdCBHTmU9ZnVuY3Rpb24oKXtyZXR1cm57c3RhbmRhbG9uZTohMH19O2xldCBad2U9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDKXt0aGlzLnNhc1N0b3JlU2VydmljZT1oLHRoaXMuZXZlbnRTZXJ2aWNlPXYsdGhpcy5yb3V0ZXI9eSx0aGlzLnJvdXRlPUMsdGhp''@;'; put 'put ''cy5kZXRhaWxzT3Blbj0hMSx0aGlzLnJlamVjdE9wZW49ITEsdGhpcy5sZW5zPXtuZXc6MCx1cGRhdGVkOjAsZGVsZXRlZDowfSx0aGlzLmxvYWRlZD0hMSx0aGlzLmxvYWRpbmdUYWJsZT0hMSx0aGlzLnN1Ym1pdFJlYXNvbj0iIix0aGlzLmluc3RhbmNlPSJob3RJbnN0YW5jZSIsdGhpcy5h''@;'; put 'put ''Y2NlcHRMb2FkaW5nPSExLHRoaXMucmVqZWN0TG9hZGluZz0hMSx0aGlzLnN1Ym1pdHRlZD0hMSx0aGlzLnRhYmxlRmxhZz0hMSx0aGlzLnJvd0tleXM9W10sdGhpcy5zZWNvbmRPcGVuPSExLHRoaXMuZm9ybWF0dGVkVmFsdWVzPSEwLHRoaXMuY2hhbmdlc0Fycj1bXSx0aGlzLmRpZmZUYWJs''@;'; put 'put ''ZT17ZGF0YTpbXX19Z2V0IG5vQ2hhbmdlcygpe3JldHVybiAwPT09dGhpcy5sZW5zLm5ldyYmMD09PXRoaXMubGVucy51cGRhdGVkJiYwPT09dGhpcy5sZW5zLmRlbGV0ZWR9Z29Ub0Jhc2UoaCl7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9kYXRhLyIraCl9Z29Ub0FwcHJvdmFs''@;'; put 'put ''c0xpc3QoKXt0aGlzLnJvdXRlLm5hdmlnYXRlQnlVcmwoIi9hcHByb3ZlIil9Z2V0VGFibGUoaCl7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvc3RhZ2UvIitoKX1nb0JhY2soaCl7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvZWRpdG9yLyIraCl9Z29Ub1ZpZXdlcigpe3RoaXMucm91''@;'; put 'put ''dGUubmF2aWdhdGVCeVVybCgiL3ZpZXcvZGF0YSIpfXNob3dEZXRhaWxzU2VsZWN0KGgpe2gucHJldmVudERlZmF1bHQoKSx0aGlzLnRhYmxlRmxhZz0hdGhpcy50YWJsZUZsYWd9Z2V0RGV0YWlscygpe3RoaXMuZGV0YWlsc09wZW49ITB9b25Ib3RTZWxlY3Rpb24oaCl7dGhpcy5ob3RTZWxl''@;'; put 'put ''Y3Rpb249aC5zbGljZSgwLDQpfW9uSG90RGVzZWxlY3QoKXtzZXRUaW1lb3V0KCgpPT57dGhpcy5ob3RTZWxlY3Rpb249bnVsbH0sMTAwKX1yZWplY3RpbmcoKXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMucmVqZWN0TG9hZGluZz0hMCx0aGlzLnN1Ym1p''@;'; put 'put ''dFJlYXNvbj10aGlzLnN1Ym1pdFJlYXNvbi5yZXBsYWNlKC9cbi9nLCIuICIpO2xldCBoPXtTVFBfQUNUSU9OOiJSRUpFQ1RfVEFCTEUiLFRBQkxFOnRoaXMudGFibGVJZCxTVFBfUkVBU09OOnRoaXMuc3VibWl0UmVhc29ufTt5aWVsZCB0aGlzLnNhc1N0b3JlU2VydmljZS5yZWplY3Rpbmco''@;'; put 'put ''aCwiQnJvd3NlclBhcmFtcyIsImFwcHJvdmVycy9yZWplY3Rpb24iKS50aGVuKHY9Pnt0aGlzLnJvdXRlLm5hdmlnYXRlQnlVcmwoIi9oaXN0b3J5Iil9KS5jYXRjaCh2PT57dGhpcy5hY2NlcHRMb2FkaW5nPSExLHRoaXMucmVqZWN0TG9hZGluZz0hMX0pfSl9YXBwcm92ZVRhYmxlKCl7dmFy''@;'; put 'put ''IGgsdjtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMuYWNjZXB0TG9hZGluZz0hMDtsZXQgeT17QUNUSU9OOiJBUFBST1ZFX1RBQkxFIixUQUJMRTp0aGlzLnRhYmxlSWQsRElGRlRJTUU6bnVsbD09PShoPXRoaXMucGFyYW1zKXx8dm9pZCAwPT09aD92b2lk''@;'; put 'put ''IDA6aC5ESUZGVElNRSxMSUJEUzpudWxsPT09KHY9dGhpcy5wYXJhbXMpfHx2b2lkIDA9PT12P3ZvaWQgMDp2LkxJQkRTfTt5aWVsZCB0aGlzLnNhc1N0b3JlU2VydmljZS5hcHByb3ZlVGFibGUoeSwiU0FTQ29udHJvbFRhYmxlIiwiYXVkaXRvcnMvcG9zdGRhdGEiKS50aGVuKEM9Pnt0aGlz''@;'; put 'put ''LnJvdXRlLm5hdmlnYXRlQnlVcmwoIi9oaXN0b3J5Iil9KS5jYXRjaChDPT57dGhpcy5hY2NlcHRMb2FkaW5nPSExfSl9KX1nb1RvU3VibWl0TGlzdCgpe3RoaXMuc2FzU3RvcmVTZXJ2aWNlLmdvVG9TdWJtaXRMaXN0KCl9Y2FsbENoYW5nZXNJbmZvKGgpe3JldHVybiBubyh0aGlzLHZvaWQg''@;'; put 'put ''MCx2b2lkIDAsZnVuY3Rpb24qKCl7eWllbGQgdGhpcy5zYXNTdG9yZVNlcnZpY2UuZ2V0Q2hhbmdlSW5mbyhoKS50aGVuKHY9Pnt0aGlzLnRhYmxlRGV0YWlscz12LmpzcGFyYW1zWzBdLHRoaXMuanNQYXJhbXM9di5qc3BhcmFtc1swXTtsZXQgeT1bXTtmb3IoY29uc3QgQyBpbiB0aGlzLmpz''@;'; put 'put ''UGFyYW1zKXRoaXMuanNQYXJhbXMuaGFzT3duUHJvcGVydHkoQykmJnkucHVzaChDKTt0aGlzLmtleXNBcnJheT15fSkuY2F0Y2godj0+e3RoaXMuYWNjZXB0TG9hZGluZz0hMX0pLmZpbmFsbHkoKCk9Pnt0aGlzLmxvYWRlZD0hMH0pfSl9Zm9ybWF0dGluZ0NoYW5nZWQoKXt0aGlzLmNhbGNE''@;'; put 'put ''aWZmKCl9Y2FsY0RpZmYoKXt2YXIgaCx2LHk7aWYoIXRoaXMucmVzcG9uc2UpcmV0dXJuO2xldCBDPXRoaXMucmVzcG9uc2UubmV3LEk9dGhpcy5yZXNwb25zZS51cGRhdGVzLFo9dGhpcy5yZXNwb25zZS5kZWxldGVkLHVlPXRoaXMucmVzcG9uc2Uub3JpZ2luYWxzO3RoaXMuZm9ybWF0dGVk''@;'; put 'put ''VmFsdWVzJiYoQz10aGlzLnJlc3BvbnNlLmZtdF9uZXcsST10aGlzLnJlc3BvbnNlLmZtdF91cGRhdGVzLFo9dGhpcy5yZXNwb25zZS5mbXRfZGVsZXRlZCx1ZT10aGlzLnJlc3BvbnNlLmZtdF9vcmlnaW5hbHMpLHRoaXMub3JpZ2luYWxzPXVlLHRoaXMucm93S2V5cz1bXTtmb3IobGV0IHdy''@;'; put 'put ''PTA7d3I8SS5sZW5ndGg7d3IrKyl7bGV0IFFyPU9iamVjdC5rZXlzKElbd3JdKTtmb3IobGV0IHlpPTA7eWk8UXIubGVuZ3RoO3lpKyspSVt3cl1bUXJbeWldXSE9PXVlW3dyXVtRclt5aV1dJiZ0aGlzLmNoYW5nZXNBcnIucHVzaCh7aW5kOndyLGZpZWxkOlFyW3lpXSxwcm9wOklbd3JdW1Fy''@;'; put 'put ''W3lpXV0sb3JpZ2luYWw6dWVbd3JdW1FyW3lpXV19KX10aGlzLmxlbnM9e25ldzoobnVsbD09PShoPXRoaXMucGFyYW1zKXx8dm9pZCAwPT09aD92b2lkIDA6aC5OVU1fQURERUQpfHwwLHVwZGF0ZWQ6KG51bGw9PT0odj10aGlzLnBhcmFtcyl8fHZvaWQgMD09PXY/dm9pZCAwOnYuTlVNX1VQ''@;'; put 'put ''REFURUQpfHwwLGRlbGV0ZWQ6KG51bGw9PT0oeT10aGlzLnBhcmFtcyl8fHZvaWQgMD09PXk/dm9pZCAwOnkuTlVNX0RFTEVURUQpfHwwfTtsZXQgS2U9W10scHQ9SS5jb25jYXQoQyxaKTtmb3IobGV0IHdyPTA7d3I8dGhpcy5yZXNwb25zZS5jb2xzLmxlbmd0aDt3cisrKUtlLnB1c2godGhp''@;'; put 'put ''cy5yZXNwb25zZS5jb2xzW3dyXS5OQU1FKTtsZXQgT3Q9dGhpcy5sZW5zLm5ldzt0aGlzLmFkZENvdW50PU90O2xldCAkdD10aGlzLmxlbnMudXBkYXRlZCxMbj1bXSxpcj1bXTtmb3IobGV0IHdyPTA7d3I8S2UubGVuZ3RoO3dyKyspaXIucHVzaCh7ZGF0YTpLZVt3cl0scmVhZE9ubHk6ITB9''@;'; put 'put ''KTt0aGlzLmRpZmZUYWJsZS5kYXRhPXB0O2ZvcihsZXQgd3I9MDt3cjxwdC5sZW5ndGg7d3IrKyl7bGV0IHlpPU9iamVjdC5rZXlzKHB0W3dyXSk7dGhpcy5yb3dLZXlzLnB1c2goeWkpfWxldCBtcj1bXSxTcj1bXTtmb3IobGV0IHdyPTA7d3I8dGhpcy5kaWZmVGFibGUuZGF0YS5sZW5ndGg7''@;'; put 'put ''d3IrKyl7aWYod3I8JHQmJjAhPT0kdCl7bXIucHVzaChbXSksU3IucHVzaChbXSksTG4ucHVzaCgidXBkYXRlZCIpO2xldCBRcj1PYmplY3Qua2V5cyh0aGlzLmRpZmZUYWJsZS5kYXRhW3dyXSk7Zm9yKGxldCB5aT0wO3lpPFFyLmxlbmd0aDt5aSsrKXtsZXQgS2k9UXJbeWldO3VlW3dyXVtL''@;'; put 'put ''aV0hPT1JW3dyXVtLaV0/KG1yW3dyXS5wdXNoKCEwKSxTclt3cl0ucHVzaCh1ZVt3cl1bS2ldKSk6KG1yW3dyXS5wdXNoKCExKSxTclt3cl0ucHVzaChudWxsKSl9dGhpcy5hcnJDaGFuZ2VkPW1yLHRoaXMuYXJyT2ZDaGFuZ2VzPVNyfXdyPj0kdCYmd3I8JHQrT3QmJkxuLnB1c2goImFkZGVk''@;'; put 'put ''Iiksd3I+T3QrJHQtMSYmTG4ucHVzaCgiZGVsZXRlZCIpfXRoaXMuY2hBcnI9TG4sdGhpcy5yb3dIZWFkZXI9dGhpcy5yb3dLZXlzWzBdLHRoaXMuZGlmZlRhYmxlLmRhdGE9cHR9bmdBZnRlclZpZXdJbml0KCl7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtpZih0''@;'; put 'put ''aGlzLl9kZXRhaWxzU3ViPXRoaXMuc2FzU3RvcmVTZXJ2aWNlLnN1Ym1pdHREZXRhaWwuc3Vic2NyaWJlKHY9Pm5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt0aGlzLnN1Yk9iaj12LnZpZXdEYXRhLHRoaXMudGFibGVJZD12LnZpZXdEYXRhLnRhYmxlSWQsdGhpcy5zdWJtaXR0''@;'; put 'put ''ZWQ9di52aWV3RGF0YS5zdWIsdGhpcy5zdWJtaXREZXRhaWxzPXYuZGF0YSx0aGlzLnN1Ym1pdEFycj1bXTtmb3IobGV0IEMgaW4gdGhpcy5zdWJtaXREZXRhaWxzKSJzdWIiIT09QyYmdGhpcy5zdWJtaXRBcnIucHVzaChDKTtsZXQgeT17QUNUSU9OOiJTSE9XX0RJRkZTIixUQUJMRTp0aGlz''@;'; put 'put ''LnRhYmxlSWQsRElGRlRJTUU6KG5ldyBEYXRlKS50b1VUQ1N0cmluZygpfTt0aGlzLnNhc1N0b3JlU2VydmljZS5zaG93RGlmZnMoeSwiU0FTQ29udHJvbFRhYmxlIiwiYXVkaXRvcnMvcG9zdGRhdGEiKS50aGVuKEM9Pnt0aGlzLnBhcmFtcz1DLnBhcmFtc1swXSx0aGlzLnJlc3BvbnNlPUMs''@;'; put 'put ''dGhpcy5jYWxjRGlmZigpfSkuY2F0Y2goQz0+QykuZmluYWxseSgoKT0+e3RoaXMubG9hZGluZ1RhYmxlPSEwfSksdGhpcy5jYWxsQ2hhbmdlc0luZm8odGhpcy50YWJsZUlkKX0pKSx2b2lkIDA9PT10aGlzLnJvdXRlci5zbmFwc2hvdC5wYXJhbXMudGFibGVJZClyZXR1cm47dGhpcy50YWJs''@;'; put 'put ''ZUlkPXRoaXMucm91dGVyLnNuYXBzaG90LnBhcmFtcy50YWJsZUlkO2xldCBoPXtBQ1RJT046IlNIT1dfRElGRlMiLFRBQkxFOnRoaXMudGFibGVJZCxESUZGVElNRToobmV3IERhdGUpLnRvVVRDU3RyaW5nKCl9O3RoaXMuc2FzU3RvcmVTZXJ2aWNlLnNob3dEaWZmcyhoLCJTQVNDb250cm9s''@;'; put 'put ''VGFibGUiLCJhdWRpdG9ycy9wb3N0ZGF0YSIpLnRoZW4odj0+e3RoaXMucGFyYW1zPXYucGFyYW1zWzBdLHRoaXMucmVzcG9uc2U9dix0aGlzLmNhbGNEaWZmKCl9KS5jYXRjaCh2PT57dGhpcy5hY2NlcHRMb2FkaW5nPSExfSkuZmluYWxseSgoKT0+e3RoaXMubG9hZGluZ1RhYmxlPSEwLHRo''@;'; put 'put ''aXMuc2V0Rm9jdXMoKX0pLHRoaXMuY2FsbENoYW5nZXNJbmZvKHRoaXMudGFibGVJZCl9KX1uZ09uRGVzdHJveSgpe3RoaXMuX2RldGFpbHNTdWImJnRoaXMuX2RldGFpbHNTdWIudW5zdWJzY3JpYmUoKX1zZXRGb2N1cygpe3NldFRpbWVvdXQoKCk9PntsZXQgaD13aW5kb3cuZG9jdW1lbnQu''@;'; put 'put ''Z2V0RWxlbWVudEJ5SWQoImFjY2VwdEJ0biIpO2gmJmguZm9jdXMoKX0sMjAwKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3Qoa2cpLEt0KG11KSxLdChQdSksS3QoWmwpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBw''@;'; put 'put ''LWFwcHJvdmUtZGV0YWlscyJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6MzQsdmFyczoxMCxjb25zdHM6W1szLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbE9wZW5DaGFuZ2UiXSxbMSwibW9kYWwtdGl0bGUiXSxbMSwibW9kYWwtYm9keSJdLFsxLCJ0YWJsZSJd''@;'; put 'put ''LFsxLCJsZWZ0Il0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJtb2RhbC1mb290ZXIiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1wcmltYXJ5IiwzLCJjbGljayJdLFsxLCJmb3JtLWJsb2NrIl0sWzEsImZvcm0tZ3JvdXAiXSxbImZvciIsImZvcm1GaWVsZHNf''@;'; put 'put ''OCJdLFsiaWQiLCJmb3JtRmllbGRzXzgiLCJyb3dzIiwiNSIsMSwidy0xMDAiLDMsIm5nTW9kZWwiLCJuZ01vZGVsT3B0aW9ucyIsImlubmVySFRNTCIsIm5nTW9kZWxDaGFuZ2UiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsidHlwZSIsInN1''@;'; put 'put ''Ym1pdCIsMSwiYnRuIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsMywiY2xyTG9hZGluZyIsImNsaWNrIl0sWzEsImNvbnRlbnQtYXJlYSJdLFsiY2xhc3MiLCJjYXJkIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMSwiY2FyZCJdLFsiY2xhc3MiLCJjYXJkLWhlYWRlciBkLWZsZXggZmxleC1jb2x1''@;'; put 'put ''bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciIsNCwibmdJZiJdLFsxLCJvdmVyZmxvdy1hdXRvIiwibXItMTIiXSxbImNsYXNzIiwiaC03MHZoIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciIsNCwibmdJZiJdLFsxLCJjYXJkLWhl''@;'; put 'put ''YWRlciIsImQtZmxleCIsImZsZXgtY29sdW1uIiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsiY2xhc3MiLCJjYXJkIiwiY2xhc3MiLCJtdC0wIiw0LCJuZ0lmIl0sWzEsIm10LTAiXSxbMSwiY2FyZC1oZWFkZXIiLCJwLTAiXSxbMSwiY2xyLXJvdyJdLFsxLCJjbHItY29sLW1kLTQiLCJh''@;'; put 'put ''cHByb3ZhbEJhY2siXSxbMSwiYnRuIiwiYnRuLXNtIiwiYnRuLW91dGxpbmUiLCJtLTAiLDMsImNsaWNrIl0sWyJzaGFwZSIsImNhcmV0IiwiZGlyIiwibGVmdCIsInNpemUiLCIyMCJdLFsxLCJjbHItY29sLW1kLTQiLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl0sWzEsIm10''@;'; put 'put ''LTAiLCJmb250LXdlaWdodC0zMDAiXSxbMSwiY2xyLWNvbC1tZC00IiwiYXBwcm92YWxJbmZvIl0sWzEsInRvb2x0aXAiLCJ0b29sdGlwLXNtIiwidG9vbHRpcC10b3AtbGVmdCIsMywiY2xpY2siXSxbInNoYXBlIiwiaW5mby1zdGFuZGFyZCIsInNpemUiLCIyOCJdLFsxLCJ0ZXh0LWNlbnRl''@;'; put 'put ''ciIsIm10LTEwIl0sWzEsImNhcmQtYmxvY2siLCJwLTAiXSxbImNsYXNzIiwiY2FyZC10ZXh0Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImgtMjR2aCBkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIiLDQsIm5nSWYiXSxbMSwidGFibGVD''@;'; put 'put ''b250IiwibXQtMCJdLFsiY2xhc3MiLCJ0ZXh0LWNlbnRlciBmb250LXNpemUtMTgiLDQsIm5nSWYiXSxbMSwiZC1mbGV4Il0sWyJjbGFzcyIsImxlZnQiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsiY2xhc3MiLCJkLWZsZXgiLDMsIm5nQ2xhc3MiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJj''@;'; put 'put ''YXJkLXRleHQiXSxbMSwiY2xyLXJvdyIsImZvbnQtc2l6ZS0xNSJdLFsxLCJjbHItY29sLW1kLTUiXSxbMSwiY2xyLWNvbC1tZC03Il0sWzEsImNhcmQtYmxvY2siLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl0sWzEsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIi''@;'; put 'put ''LCJtdC0wIl0sWzEsImNsci1yb3ciLCJjbHItZ2FwLTUiLCJjbHItZ2FwLXNtLTAiXSxbMSwiYnRuIiwiYnRuLXNtIiwiYnRuLW91dGxpbmUiLCJ0ZXh0LWNlbnRlciIsIm10LTUiLDMsImNsaWNrIl0sWzEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzLW91dGxpbmUiLCJ0ZXh0LWNlbnRl''@;'; put 'put ''ciIsIm10LTUiLDMsImNsaWNrIl0sWzEsImJ0biIsImJ0bi1zbSIsImJ0bi1pbmZvLW91dGxpbmUiLCJ0ZXh0LWNlbnRlciIsIm10LTUiLDMsImNsaWNrIl0sWzEsImNhcmQtYmxvY2siLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiY2xyLWZsZXgtY29sdW1uIiwiY2xyLWdh''@;'; put 'put ''cC01IiwiY2xyLWZsZXgtc20tcm93IiwiY2xyLWdhcC1zbS0wIiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciJdLFsiaWQiLCJhY2NlcHRCdG4iLCJ0eXBlIiwic3VibWl0IiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2VzcyIsMywiY2xyTG9hZGluZyIsImRpc2FibGVkIiwiY2xpY2siXSxb''@;'; put 'put ''ImlkIiwicmVqZWN0QnRuIiwxLCJidG4iLCJidG4tc20iLCJidG4iLCJidG4tZGFuZ2VyIiwibXItMCIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsxLCJtLTAiLCJtbC0yMGkiXSxbInR5cGUiLCJjaGVja2JveCIsImNsclRvZ2dsZSIsIiIsImNoZWNrZWQiLCIiLDMsIm5nTW9kZWwiLCJuZ01v''@;'; put 'put ''ZGVsQ2hhbmdlIiwiY2hhbmdlIl0sWzEsImZvcm1hdHRlZC12YWx1ZXMtdG9nZ2xlIl0sWzEsImQtZmxleCIsImNsci1mbGV4LWNvbHVtbiIsImNsci1nYXAtNSIsImNsci1mbGV4LXNtLXJvdyIsImNsci1nYXAtc20tMCJdLFsxLCJsYWJlbCIsImxhYmVsLXdhcm5pbmciXSxbMSwiYmFkZ2Ui''@;'; put 'put ''LCJiYWRnZS13YXJuaW5nIl0sWzEsImxhYmVsIiwibGFiZWwtc3VjY2VzcyJdLFsxLCJiYWRnZSIsImJhZGdlLXN1Y2Nlc3MiXSxbMSwibGFiZWwiLCJsYWJlbC1kYW5nZXIiXSxbMSwiYmFkZ2UiLCJiYWRnZS1kYW5nZXIiXSxbMSwidGV4dC1jZW50ZXIiLCJmb250LXNpemUtMTgiXSxbMSwi''@;'; put 'put ''bXQtMTUiXSxbMSwibXQtMTAiXSxbMSwiaC0yNHZoIiwiZC1mbGV4IiwiZmxleC1jb2x1bW4iLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWzEsInNwaW5uZXIiXSxbMSwiZC1mbGV4IiwzLCJuZ0NsYXNzIl0sWyJjbGFzcyIsImxlZnQiLDMsIm5nQ2xh''@;'; put 'put ''c3MiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJsZWZ0IiwzLCJuZ0NsYXNzIl0sWyJjbGFzcyIsInRvb2x0aXAtY29udGVudCIsNCwibmdJZiJdLFsxLCJ0b29sdGlwLWNvbnRlbnQiXSxbMSwiaC03MHZoIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImZsZXgtY29sdW1u''@;'; put 'put ''IiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWyJjbGFzcyIsInNwaW5uZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2FyZC1ibG9jayIsNCwibmdJZiJdLFsxLCJkLWZsZXgiLCJmbGV4''@;'; put 'put ''LWNvbHVtbiIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbImNsYXNzIiwiY2FyZCBtLTAiLDQsIm5nSWYiXSxbMSwiY2FyZCIsIm0tMCJdLFsxLCJjYXJkLWhlYWRlciJdLFsxLCJidG4iLCJidG4tc20iLCJidG4tb3V0bGluZSIsMywiY2xpY2siXSxbMSwiY2xyLWNvbC1tZC00Il0sWzEs''@;'; put 'put ''Im10LTAiLCJmb250LXdlaWdodC0zMDAiLCJ0ZXh0LWNlbnRlciJdLFsxLCJ0b2dnbGUtc3dpdGNoIl0sWyJ0eXBlIiwiY2hlY2tib3giLCJpZCIsInRvZ2dsZV8xIiwzLCJjaGFuZ2UiXSxbImZvciIsInRvZ2dsZV8xIl0sWzEsIm0tMCIsInRleHQtY2VudGVyIiwiY29sb3ItZGFya2VyLWdy''@;'; put 'put ''YXkiXSxbMSwibS0wIiwibWwtMjAtaSJdLFsxLCJjYXJkLWJsb2NrIiwicC0wIiwib3ZlcmZsb3ctYXV0byIsIm1yLTEyIl0sWyJjbGFzcyIsImgtMjV2aCBkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIiLDQsIm5nSWYiXSxbMSwi''@;'; put 'put ''dGFibGVDb250Il0sWyJjbHJUYWJMaW5rIiwiIl0sWzQsImNscklmQWN0aXZlIl0sWzEsIm92ZXJmbG93LWF1dG8iXSxbMSwiaC0yNXZoIiwiZC1mbGV4IiwiZmxleC1jb2x1bW4iLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWzEsImNhcmQtYmxvY2si''@;'; put 'put ''XSxbMSwibG9hZGVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYobnQoMCwiY2xyLW1vZGFsIiwwKSxHbigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5kZXRhaWxzT3Blbj1DfSksbnQoMSwiaDMiLDEpLFl0KDIsIkFwcHJvdmFsIERldGFpbHMiKSxv''@;'; put 'put ''dCgpLG50KDMsImRpdiIsMikoNCwidGFibGUiLDMpKDUsInRoZWFkIikoNiwidHIiKSg3LCJ0aCIsNCksWXQoOCwiTmFtZSIpLG90KCksbnQoOSwidGgiLDQpLFl0KDEwLCJWYWx1ZSIpLG90KCkoKSgpLG50KDExLCJ0Ym9keSIpLHJuKDEyLG9OZSw1LDIsInRyIiw1KSxvdCgpKCkoKSxudCgx''@;'; put 'put ''MywiZGl2Iiw2KSgxNCwiYnV0dG9uIiw3KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuZGV0YWlsc09wZW49ITF9KSxZdCgxNSwiIE9rICIpLG90KCkoKSgpLG50KDE2LCJjbHItbW9kYWwiLDApLEduKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2LnJl''@;'; put 'put ''amVjdE9wZW49Q30pLG50KDE3LCJoMyIsMSksWXQoMTgsIlJlYXNvbiBNZXNzYWdlIiksb3QoKSxudCgxOSwiZGl2IiwyKSgyMCwiZm9ybSIpKDIxLCJzZWN0aW9uIiw4KSgyMiwiZGl2Iiw5KSgyMywibGFiZWwiLDEwKSxZdCgyNCwiUmVhc29uIGZvciByZWplY3Rpbmc/Iiksb3QoKSxudCgy''@;'; put 'put ''NSwidGV4dGFyZWEiLDExKSxHbigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYuc3VibWl0UmVhc29uPUN9KSxvdCgpKCkoKSgpKCksbnQoMjYsImRpdiIsNikoMjcsImJ1dHRvbiIsMTIpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5yZWplY3RPcGVuPSExfSks''@;'; put 'put ''WXQoMjgsIiBDYW5jZWwgIiksb3QoKSxudCgyOSwiYnV0dG9uIiwxMyksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LnJlamVjdGluZygpfSksWXQoMzAsIiBPSyAiKSxvdCgpKCkoKSxudCgzMSwiZGl2IiwxNCkscm4oMzIsa05lLDQsMiwiZGl2IiwxNSkscm4oMzMsek5lLDMsMiwi''@;'; put 'put ''ZGl2IiwxNiksb3QoKSksMiZoJiYoVHQoImNsck1vZGFsT3BlbiIsdi5kZXRhaWxzT3BlbiksdXQoMTIpLFR0KCJuZ0Zvck9mIix2LmtleXNBcnJheSksdXQoNCksVHQoImNsck1vZGFsT3BlbiIsdi5yZWplY3RPcGVuKSx1dCg5KSxUdCgibmdNb2RlbCIsdi5zdWJtaXRSZWFzb24pKCJuZ01v''@;'; put 'put ''ZGVsT3B0aW9ucyIsY3MoOSxHTmUpKSgiaW5uZXJIVE1MIix2LnN1Ym1pdFJlYXNvbixVOCksdXQoNCksVHQoImNsckxvYWRpbmciLHYucmVqZWN0TG9hZGluZyksdXQoMyksVHQoIm5nSWYiLCF2LnN1Ym1pdHRlZCksdXQoMSksVHQoIm5nSWYiLHYuc3VibWl0dGVkKSl9LGRlcGVuZGVuY2ll''@;'; put 'put ''czpbbGMseHMsTm8scGcsbTEsSWYsVHMsZGcsSXMsTGMsd2wsaWQsb2QsZ28sRzIsdyxhdCxSbyxsbyxPaSxLTCxxTCxBWiwkTCxYTCxtWl0sc3R5bGVzOlsnLmxvYWRlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7aGVpZ2h0Ojc1dmg7''@;'; put 'put ''YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0ubW9kYWxMYXJnZVtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6NTByZW0haW1wb3J0YW50fS5hZGRlZFJvd1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2IoMTQ2LDIwOCwxNTQpO2JvcmRlcjoxcHggc29s''@;'; put 'put ''aWQgcmdiYSg5LDc3LDExNywuMik7Ym9yZGVyLXJhZGl1czo1cHh9LmRlbGV0ZWRSb3dbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiKDIzMCwxNzksMTc5KTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoNzAsNzEsNzAsLjIpO2JvcmRlci1yYWRpdXM6NXB4fS51cGRhdGVkUm93W19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmYWZkYTg7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDksMTE3LDksLjIpO2JvcmRlci1yYWRpdXM6NXB4fS5jaFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xKTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMTA0LDEw''@;'; put 'put ''MCwwLC40KTtib3JkZXItcmFkaXVzOjVweH0uY2hbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6cmdiYSgyNTIsMTM1LDEyMCwuNCl9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLXRvcC1yaWdodFtfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV0sIC50b29sdGlwLnRvb2x0aXAtdG9wLXJpZ2h0W19uZ2NvbnRlbnQtJUNPTVAlXSA+IC50b29sdGlwLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gPiAudG9vbHRpcC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNp''@;'; put 'put ''emU6LjU0MTY3cmVtO2ZvbnQtd2VpZ2h0OjQwMDtsZXR0ZXItc3BhY2luZzpub3JtYWw7YmFja2dyb3VuZDojMzE0MzUxO2JvcmRlci1yYWRpdXM6LjEyNXJlbTtjb2xvcjojZjBmMWVjO2xpbmUtaGVpZ2h0Oi43NXJlbTttYXJnaW46MDtwYWRkaW5nOi4zNzVyZW0gLjVyZW07d2lkdGg6MjM1''@;'; put 'put ''cHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOmF1dG87Ym90dG9tOjEwMCU7bGVmdDoxMnB4O3JpZ2h0OmF1dG87Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO21hcmdpbi1ib3R0b206LjY2NjY3cmVtfS50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwLWNvbnRlbnQudG9v''@;'; put 'put ''bHRpcC10b3AtcmlnaHRbX25nY29udGVudC0lQ09NUCVdOmJlZm9yZSwgLnRvb2x0aXAudG9vbHRpcC10b3AtcmlnaHRbX25nY29udGVudC0lQ09NUCVdID4gLnRvb2x0aXAtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06YmVmb3JlLCAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gPiAu''@;'; put 'put ''dG9vbHRpcC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOi0uMzc1cmVtO2xlZnQ6MDt0b3A6YXV0bztyaWdodDphdXRvO2NvbnRlbnQ6IiI7Ym9yZGVyLWxlZnQ6LjI1cmVtIHNvbGlkICMzMTQzNTE7Ym9yZGVyLXRvcDouMjA4MzNy''@;'; put 'put ''ZW0gc29saWQgIzMxNDM1MTtib3JkZXItcmlnaHQ6LjI1cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206LjIwODMzcmVtIHNvbGlkIHRyYW5zcGFyZW50fS50YWJsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjBweCBzb2xpZH0udG9nZ2xlLXN3aXRjaFtfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV0gICBpbnB1dFt0eXBlPWNoZWNrYm94XVtfbmdjb250ZW50LSVDT01QJV06Y2hlY2tlZCArIGxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpiZWZvcmV7Ym9yZGVyLWNvbG9yOiMzMTQzNTE7YmFja2dyb3VuZC1jb2xvcjojMzE0MzUxIWltcG9ydGFudDt0cmFuc2l0aW9uOi4xNXMg''@;'; put 'put ''ZWFzZS1pbjt0cmFuc2l0aW9uLXByb3BlcnR5OmJvcmRlci1jb2xvcixiYWNrZ3JvdW5kLWNvbG9yfS50YWJsZUNvbnRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmF1dG87bWFyZ2luOjE1cHggMTBweCAxMHB4fS50YWJsZUNvbnRbX25nY29udGVudC0lQ09NUCVdICAgdGRbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde3dvcmQtYnJlYWs6YnJlYWstd29yZH0uYXBwcm92YWxJbmZvW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5hcHByb3ZhbEJhY2tbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRl''@;'; put 'put ''bnQ6ZmxleC1zdGFydH1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCl7LmFwcHJvdmFsSW5mb1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLXRvcDoxNXB4fS5hcHByb3ZhbEJhY2tbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi1ib3R0b206MTVweH0uY2FyZFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDowcmVtIWltcG9ydGFudDttaW4taGVpZ2h0OmNhbGMoMTAwdmggKyAtMHB4KSFpbXBvcnRhbnR9LnRhYmxlW19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSAgIHRkLmxlZnRbX25nY29udGVudC0lQ09NUCVdLCAudGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGgubGVmdFtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpsZWZ0O3dpZHRoOjE1MHB4IWltcG9ydGFudDtmbGV4OjB9fS50YWJsZVtfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV0gICB0ZC5sZWZ0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoLmxlZnRbX25nY29udGVudC0lQ09NUCVde3RleHQtYWxpZ246bGVmdDtmbGV4OjE7d2lkdGg6MzAwcHghaW1wb3J0YW50fS50b29sbFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRp''@;'; put 'put ''b246YWJzb2x1dGU7YmFja2dyb3VuZDojZTZiM2IzO2NvbG9yOiMzMTQzNTE7dG9wOjBweDtoZWlnaHQ6MzZweDt3aWR0aDoxMDAlO2xlZnQ6MHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0jYWNjZXB0QnRuW19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXSwgI3JlamVjdEJ0bltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTc1cHh9LmZvcm1hdHRlZC12YWx1ZXMtdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4td2lkdGg6NzVweH1jbHItbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAubW9kYWwtYm9keS13cmFwcGVye292ZXJm''@;'; put 'put ''bG93OmF1dG99J119KSxkfSkoKSxXTmU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMucm91dGU9aCx0aGlzLnJvdXRlcj12fXN1Ym1pdHRlZFRhYmxlU2NyZWVuKCl7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3N0YWdlLyIrdGhpcy5kc2lkKX1hcHByb3ZlVGFibGVT''@;'; put 'put ''Y3JlZW4oKXt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvYXBwcm92ZS9hcHByb3ZlRGV0LyIrdGhpcy5kc2lkKX12aWV3ZXJUYWJsZVNjcmVlbigpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi92aWV3L2RhdGEvIit0aGlzLmxpYmRzKX1nb0JhY2soKXt0aGlzLnJvdXRlci5uYXZp''@;'; put 'put ''Z2F0ZUJ5VXJsKCIvZWRpdG9yLyIrdGhpcy5saWJkcyl9bmdPbkluaXQoKXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMuZHNpZD10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5kc2lkLHRoaXMubGliZHM9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMu''@;'; put 'put ''bGliZHN9KX1uZ0FmdGVyVmlld0luaXQoKXtzZXRUaW1lb3V0KCgpPT57bGV0IGg9d2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhcHByb3ZhbEJ0biIpO2gmJmguZm9jdXMoKX0sNzAwKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3Qo''@;'; put 'put ''UHUpLEt0KFpsKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1hY3Rpb25zIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczoxOSx2YXJzOjEsY29uc3RzOltbMSwiY29udGVudC1hcmVhIl0sWzEsImNhcmQiXSxbMSwiY2FyZC1oZWFk''@;'; put 'put ''ZXIiLCJkLWZsZXgiLCJmbGV4LWNvbHVtbiIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbMSwidGV4dC1jZW50ZXIiXSxbMSwiY29sb3ItYmx1ZSIsImZvbnQtd2VpZ2h0LTcwMCJdLFsxLCJyb3ciLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwibXQtMjAiXSxbMSwiYnRu''@;'; put 'put ''IiwiYnRuLXNtIiwiYnRuLW91dGxpbmUiLCJ0ZXh0LWNlbnRlciIsMywiY2xpY2siXSxbImlkIiwiYXBwcm92YWxCdG4iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzLW91dGxpbmUiLCJ0ZXh0LWNlbnRlciIsMywiY2xpY2siXSxbMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWluZm8tb3V0''@;'; put 'put ''bGluZSIsInRleHQtY2VudGVyIiwzLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKG50KDAsImRpdiIsMCkoMSwiZGl2IiwxKSgyLCJkaXYiLDIpKDMsImgzIiwzKSxZdCg0LCIgWW91IHN1Y2Nlc2Z1bGx5IGVkaXRlZCB0YWJsZSAiKSxudCg1LCJzcGFuIiw0KSxZdCg2''@;'; put 'put ''KSxvdCgpKCksbnQoNywicCIsMykoOCwiYiIpLFl0KDksIlBsZWFzZSBjaG9vc2UgZnJvbSB0aGUgZm9sbG93aW5nIGFjdGlvbnMiKSxvdCgpKCksbnQoMTAsImRpdiIsNSkoMTEsImJ1dHRvbiIsNiksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LnN1Ym1pdHRlZFRhYmxlU2NyZWVu''@;'; put 'put ''KCl9KSxZdCgxMiwiIEdvIHRvIHN1Ym1pdHRlZCB0YWJsZSBzY3JlZW4gIiksb3QoKSxudCgxMywiYnV0dG9uIiw2KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYudmlld2VyVGFibGVTY3JlZW4oKX0pLFl0KDE0LCIgR28gdG8gYmFzZSB0YWJsZSBzY3JlZW4gIiksb3QoKSxudCgx''@;'; put 'put ''NSwiYnV0dG9uIiw3KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuYXBwcm92ZVRhYmxlU2NyZWVuKCl9KSxZdCgxNiwiIEdvIHRvIGFwcHJvdmFscyBzY3JlZW4gIiksb3QoKSxudCgxNywiYnV0dG9uIiw4KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuZ29CYWNrKCl9''@;'; put 'put ''KSxZdCgxOCwiIEdvIGJhY2sgdG8gZWRpdG9yICIpLG90KCkoKSgpKCkoKSksMiZoJiYodXQoNiksamkodi5saWJkcykpfX0pLGR9KSgpO2Z1bmN0aW9uIFlOZShkLGcpezEmZCYmKG50KDAsImRpdiIsMTIpLENyKDEsImNsci1pY29uIiwxMyksbnQoMiwiaDMiLDE0KSxZdCgzLCJUaGVyZSBp''@;'; put 'put ''cyBubyBoaXN0b3J5IHRvIHNob3ciKSxvdCgpKCkpfWZ1bmN0aW9uIFVOZShkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImEiLDE3KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3QgeT1RdCgpLiRpbXBsaWNpdCxDPVF0KCk7cmV0dXJuIGEoQy5nZXRUYWJsZShDLmFw''@;'; put 'put ''cHJvdmVEYXRhW3ldKSl9KSxZdCgxKSxvdCgpfWlmKDImZCl7Y29uc3QgaD1RdCgpLiRpbXBsaWNpdCx2PVF0KCk7dXQoMSksamkodi5hcHByb3ZlRGF0YVtoXSl9fWZ1bmN0aW9uIFFOZShkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImRpdiIpKDEsImEiLDE3KSxHbigiY2xpY2si''@;'; put 'put ''LGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3QgeT1RdCgpLiRpbXBsaWNpdCxDPVF0KCk7cmV0dXJuIGEoQy5nZXRCYXNlVGFibGUoQy5hcHByb3ZlRGF0YVt5XSkpfSksWXQoMiwiVklFVyIpLG90KCksbnQoMywic3BhbiIpLFl0KDQsIiAvICIpLG90KCksbnQoNSwiYSIsMTcpLEduKCJjbGljayIs''@;'; put 'put ''ZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KCkuJGltcGxpY2l0LEM9UXQoKTtyZXR1cm4gYShDLmdldEVkaXRUYWJsZShDLmFwcHJvdmVEYXRhW3ldKSl9KSxZdCg2LCJFRElUIiksb3QoKSgpfX1mdW5jdGlvbiBKTmUoZCxnKXtpZigxJmQmJihudCgwLCJzcGFuIiksWXQoMSksb3QoKSks''@;'; put 'put ''MiZkKXtjb25zdCBoPVF0KCkuJGltcGxpY2l0LHY9UXQoKTt1dCgxKSxqaSh2LmFwcHJvdmVEYXRhW2hdKX19ZnVuY3Rpb24gWE5lKGQsZyl7aWYoMSZkJiYobnQoMCwidHIiKSgxLCJ0ZCIsNiksWXQoMiksb3QoKSxudCgzLCJ0ZCIsNikscm4oNCxVTmUsMiwxLCJhIiwxNSkscm4oNSxRTmUs''@;'; put 'put ''NywwLCJkaXYiLDE2KSxybig2LEpOZSwyLDEsInNwYW4iLDE2KSxvdCgpKCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PWcuaW5kZXg7dXQoMiksamkoaCksdXQoMiksVHQoIm5nSWYiLHY8MSksdXQoMSksVHQoIm5nSWYiLHY8MiYmdj49MSksdXQoMSksVHQoIm5nSWYiLHY+PTIpfX1m''@;'; put 'put ''dW5jdGlvbiBLTmUoZCxnKXsxJmQmJihudCgwLCJzcGFuIiwyMCksWXQoMSwiIExvYWRpbmcuLi4gIiksb3QoKSl9ZnVuY3Rpb24gJE5lKGQsZyl7MSZkJiYobnQoMCwiZGl2IikoMSwiaDMiKSxZdCgyLCJMb2FkaW5nIGhpc3RvcnkiKSxvdCgpKCkpfWZ1bmN0aW9uIHFOZShkLGcpe2lmKDEm''@;'; put 'put ''ZCYmKG50KDAsImRpdiIsMTgpLHJuKDEsS05lLDIsMCwic3BhbiIsMTkpLHJuKDIsJE5lLDMsMCwiZGl2IiwxNiksb3QoKSksMiZkKXtjb25zdCBoPVF0KCk7dXQoMSksVHQoIm5nSWYiLCFoLmxvYWRlZCksdXQoMSksVHQoIm5nSWYiLCFoLmxvYWRlZCl9fWZ1bmN0aW9uIGVWZShkLGcpezEm''@;'; put 'put ''ZCYmKG50KDAsImgzIiwyNSksWXQoMSwiSElTVE9SWSIpLG90KCkpfWNvbnN0IHRWZT1mdW5jdGlvbihkLGcpe3JldHVybntyZWplY3RlZDpkLGFjY2VwdGVkOmd9fTtmdW5jdGlvbiBuVmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJjbHItZGctcm93IiwzNCksR24oImNsaWNr''@;'; put 'put ''IixmdW5jdGlvbigpe2NvbnN0IEM9aXQoaCkuJGltcGxpY2l0O3JldHVybiBhKFF0KDMpLmdldEFwcHJJbmRleChDKSl9KSxudCgxLCJjbHItZGctY2VsbCIsMzUpKDIsImEiLDM2KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgQz1pdChoKS4kaW1wbGljaXQ7cmV0dXJuIGEoUXQoMyku''@;'; put 'put ''Z2V0QmFzZVRhYmxlKEMuYmFzZXRhYmxlKSl9KSxZdCgzKSxvdCgpKCksbnQoNCwiY2xyLWRnLWNlbGwiLDM3KSxZdCg1KSxvdCgpLG50KDYsImNsci1kZy1jZWxsIiwzNSksWXQoNyksb3QoKSxudCg4LCJjbHItZGctY2VsbCIsMzUpLFl0KDkpLG90KCksbnQoMTAsImNsci1kZy1jZWxsIiwz''@;'; put 'put ''NSksWXQoMTEpLG90KCksbnQoMTIsImNsci1kZy1jZWxsIiwzNSksWXQoMTMpLG90KCksbnQoMTQsImNsci1kZy1jZWxsIiwzOCkoMTUsImJ1dHRvbiIsMzkpLEduKCJjbGljayIsZnVuY3Rpb24oeSl7Y29uc3QgST1pdChoKS4kaW1wbGljaXQ7cmV0dXJuIFF0KDMpLmRvd25sb2FkKEkudGFi''@;'; put 'put ''bGVJZCksYSh5LnN0b3BQcm9wYWdhdGlvbigpKX0pLENyKDE2LCJjbHItaWNvbiIsNDApLG90KCkoKSgpfWlmKDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDt1dCgzKSxqaShoLmJhc2V0YWJsZSksdXQoMSksVHQoIm5nQ2xhc3MiLGozKDcsdFZlLCJSRUpFQ1RFRCI9PT1oLnN0YXR1cywiQVBQ''@;'; put 'put ''Uk9WRUQiPT09aC5zdGF0dXMpKSx1dCgxKSxqaShoLnN0YXR1cyksdXQoMiksamkoaC5zdWJtaXR0ZXIpLHV0KDIpLGppKGguc3VibWl0dGVkUmVhc29uKSx1dCgyKSxqaShoLnN1Ym1pdHRlZCksdXQoMiksamkoaC5yZXZpZXdlZCl9fWZ1bmN0aW9uIHJWZShkLGcpe2lmKDEmZCl7Y29uc3Qg''@;'; put 'put ''aD13aSgpO250KDAsImNsci1kYXRhZ3JpZCIsMjYpKDEsImNsci1kZy1jb2x1bW4iLDI3KSxZdCgyLCJCQVNFX1RBQkxFIiksb3QoKSxudCgzLCJjbHItZGctY29sdW1uIiwyNyksWXQoNCwiU1RBVFVTIiksb3QoKSxudCg1LCJjbHItZGctY29sdW1uIiwyNyksWXQoNiwiU1VCTUlUVEVSIiks''@;'; put 'put ''b3QoKSxudCg3LCJjbHItZGctY29sdW1uIiwyNyksWXQoOCwiU1VCTUlUIFJFQVNPTiIpLG90KCksbnQoOSwiY2xyLWRnLWNvbHVtbiIsMjcpLFl0KDEwLCJTVUJNSVRURUQiKSxvdCgpLG50KDExLCJjbHItZGctY29sdW1uIiwyNyksWXQoMTIsIkFQUFJPVkVEIC8gUkVKRUNURUQiKSxvdCgp''@;'; put 'put ''LG50KDEzLCJjbHItZGctY29sdW1uIiwyNyksWXQoMTQsIkRPV05MT0FEIiksb3QoKSxybigxNSxuVmUsMTcsMTAsImNsci1kZy1yb3ciLDI4KSxudCgxNiwiY2xyLWRnLWZvb3RlciIsMjkpKDE3LCJzcGFuIiksWXQoMTgsIml0ZW1zIHBlciBwYWdlIiksb3QoKSxudCgxOSwic2VsZWN0Iiwz''@;'; put 'put ''MCksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KDIpLml0ZW1zTnVtPXkpfSksbnQoMjAsIm9wdGlvbiIsMzEpLFl0KDIxLCIzIiksb3QoKSxudCgyMiwib3B0aW9uIiwzMSksWXQoMjMsIjUiKSxvdCgpLG50KDI0LCJvcHRpb24iLDMxKSxZdCgyNSwi''@;'; put 'put ''MTAiKSxvdCgpLG50KDI2LCJvcHRpb24iLDMxKSxZdCgyNywiMTUiKSxvdCgpKCksbnQoMjgsImNsci1kZy1wYWdpbmF0aW9uIiwzMiwzMyksWXQoMzApLG90KCkoKSgpfWlmKDImZCl7Y29uc3QgaD12YSgyOSksdj1RdCgyKTt1dCgxKSxUdCgiY2xyRGdGaWVsZCIsImJhc2V0YWJsZSIpLHV0''@;'; put 'put ''KDIpLFR0KCJjbHJEZ0ZpZWxkIiwic3RhdHVzIiksdXQoMiksVHQoImNsckRnRmllbGQiLCJzdWJtaXR0ZXIiKSx1dCgyKSxUdCgiY2xyRGdGaWVsZCIsInN1Ym1pdHRlZFJlYXNvbiIpLHV0KDIpLFR0KCJjbHJEZ0ZpZWxkIiwic3VibWl0dGVkIiksdXQoMiksVHQoImNsckRnRmllbGQiLCJy''@;'; put 'put ''ZXZpZXdlZCIpLHV0KDIpLFR0KCJjbHJEZ0ZpZWxkIiwicmV2aWV3ZWQiKSx1dCgyKSxUdCgiY2xyRGdJdGVtc09mIix2Lmhpc3RvcnkpLHV0KDQpLFR0KCJuZ01vZGVsIix2Lml0ZW1zTnVtKSx1dCgxKSxUdCgibmdWYWx1ZSIsMyksdXQoMiksVHQoIm5nVmFsdWUiLDUpLHV0KDIpLFR0KCJu''@;'; put 'put ''Z1ZhbHVlIiwxMCksdXQoMiksVHQoIm5nVmFsdWUiLDE1KSx1dCgyKSxUdCgiY2xyRGdQYWdlU2l6ZSIsdi5pdGVtc051bSksdXQoMiksa2YoIiAiLGguZmlyc3RJdGVtKzEsIiAtICIsaC5sYXN0SXRlbSsxLCIgb2YgIixoLnRvdGFsSXRlbXMsIiB1cGRhdGVzICIpfX1mdW5jdGlvbiBpVmUo''@;'; put 'put ''ZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDIxKSgxLCJkaXYiLDIyKSxybigyLGVWZSwyLDAsImgzIiwyMyksb3QoKSxybigzLHJWZSwzMSwxNywiY2xyLWRhdGFncmlkIiwyNCksb3QoKSksMiZkKXtjb25zdCBoPVF0KCk7dXQoMiksVHQoIm5nSWYiLGgubG9hZGVkKSx1dCgxKSxUdCgibmdJ''@;'; put 'put ''ZiIsaC5sb2FkZWQpfX1sZXQgb1ZlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5zYXNTdG9yZVNlcnZpY2U9aCx0aGlzLmV2ZW50U2VydmljZT12LHRoaXMucm91dGVyPXksdGhpcy5zYXNTZXJ2aWNlPUMsdGhpcy5oaXN0b3J5PVtdLHRoaXMudGFibGVUaXRsZXM9''@;'; put 'put ''W10sdGhpcy5oaXN0b3J5QXJyPVtdLHRoaXMubG9hZGVkPSExLHRoaXMuaXRlbXNOdW09MTAsdGhpcy5vcGVuTW9kYWw9ITEsdGhpcy5ub0RhdGE9ITEsdGhpcy5hcHByb3ZlRGF0YT17fSx0aGlzLnNhc2pzQ29uZmlnPW5ldyBVMy5TQVNqc0NvbmZpZyx0aGlzLnNhc2pzQ29uZmlnPXRoaXMu''@;'; put 'put ''c2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpfWdldFRhYmxlKGgpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9zdGFnZS8iK2gpfWdldEJhc2VUYWJsZShoKXt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9kYXRhLyIraCl9Z2V0RWRpdFRhYmxlKGgpe3RoaXMucm91dGVy''@;'; put 'put ''Lm5hdmlnYXRlQnlVcmwoIi9lZGl0b3IvIitoKX1nZXRBcHBySW5kZXgoaCl7Y29uc3Qgdj10aGlzLmhpc3RvcnlBcnIuZmluZEluZGV4KHk9PnkuVEFCTEVfSUQ9PT1oLnRhYmxlSWQpO3Y+LTEmJih0aGlzLmFwcHJvdmVEYXRhPXRoaXMuaGlzdG9yeUFyclt2XSx0aGlzLm9wZW5Nb2RhbD0h''@;'; put 'put ''MCl9ZG93bmxvYWQoaCl7bGV0IHY9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCkseT12LnNlcnZlclVybCxDPXYuYXBwTG9jLEk9dGhpcy5zYXNTZXJ2aWNlLmdldEV4ZWN1dGlvblBhdGgoKTt3aW5kb3cub3Blbih5K0krIi8/X3Byb2dyYW09IitDKyIvc2VydmljZXMvYXVkaXRv''@;'; put 'put ''cnMvZ2V0YXVkaXRmaWxlJnRhYmxlPSIraCsiJl9jb250ZXh0bmFtZT0iK3RoaXMuc2FzanNDb25maWcuY29udGV4dE5hbWUpfW5nT25Jbml0KCl7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgdj17SElTVDo1MH07dHJ5e2xldCBDLHk9eWllbGQgdGhpcy5z''@;'; put 'put ''YXNTdG9yZVNlcnZpY2UuZ2V0SGlzdG9yeSh2LCJCcm93c2VyUGFyYW1zIiwiYXBwcm92ZXJzL2dldGhpc3RvcnkiKSxJPXkuZnJvbXNhcztpZih0aGlzLmhpc3RvcnlBcnI9eS5mcm9tc2FzLHkuZnJvbXNhcy5sZW5ndGg+MCl7Qz1PYmplY3Qua2V5cyhJWzBdKSx0aGlzLnRhYmxlVGl0bGVz''@;'; put 'put ''PUM7bGV0IFo9eS5mcm9tc2FzLm1hcChmdW5jdGlvbih1ZSl7cmV0dXJue3RhYmxlSWQ6dWUuVEFCTEVfSUQsc3VibWl0dGVyOnVlLlNVQk1JVFRFUixzdWJtaXR0ZWRSZWFzb246dWUuU1VCTUlUVEVEX1JFQVNPTl9UWFQsc3VibWl0dGVkOnVlLlNVQk1JVFRFRCxzdGF0dXM6dWUuU1RBVFVT''@;'; put 'put ''LHJldmlld1JlYXNvbjp1ZS5SRVZJRVdfUkVBU09OX1RYVCxyZXZpZXdlcjp1ZS5SRVZJRVdFUixyZXZpZXdlZDp1ZS5SRVZJRVdFRCxudW1PZkFwcHJvdmFsczp1ZS5OVU1fT0ZfQVBQUk9WQUxTX1JFUVVJUkVELGJhc2V0YWJsZTp1ZS5CQVNFX1RBQkxFfX0pO3RoaXMuaGlzdG9yeT1aLHRo''@;'; put 'put ''aXMubG9hZGVkPSEwfWVsc2UgdGhpcy5sb2FkZWQ9ITAsdGhpcy5ub0RhdGE9ITB9Y2F0Y2goeSl7dGhpcy5ldmVudFNlcnZpY2UuY2F0Y2hSZXNwb25zZUVycm9yKCJhcHByb3ZlcnMvZ2V0aGlzdG9yeSIseSl9fSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3''@;'; put 'put ''KGh8fGQpKEt0KGtnKSxLdChtdSksS3QoWmwpLEt0KGcyKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1oaXN0b3J5Il1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczoyMCx2YXJzOjYsY29uc3RzOltbMSwiY29udGVudC1hcmVhIl0s''@;'; put 'put ''WyJpZCIsIm5vRGF0YUNvbnRhaW5lciIsImNsYXNzIiwiY2FyZC1ibG9jayBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIiLDQsIm5nSWYiXSxbMywiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxTaXplIiwiY2xyTW9kYWxPcGVuQ2hh''@;'; put 'put ''bmdlIl0sWzEsIm1vZGFsLXRpdGxlIl0sWzEsIm1vZGFsLWJvZHkiXSxbMSwidGFibGUiXSxbMSwibGVmdCJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwibW9kYWwtZm9vdGVyIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tb3V0bGluZSIsMywiY2xpY2siXSxbImNsYXNzIiwi''@;'; put 'put ''aC03MHZoIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciIsNCwibmdJZiJdLFsiY2xhc3MiLCJjYXJkIiw0LCJuZ0lmIl0sWyJpZCIsIm5vRGF0YUNvbnRhaW5lciIsMSwiY2FyZC1ibG9jayIsImQtZmxleCIsImp1c3RpZnktY29u''@;'; put 'put ''dGVudC1jZW50ZXIiLCJmbGV4LWNvbHVtbiIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsic2hhcGUiLCJ3YXJuaW5nLXN0YW5kYXJkIiwic2l6ZSIsIjYwIiwxLCJpcy1pbmZvIl0sWzEsInRleHQtY2VudGVyIiwiY29sb3ItZ3JheSJdLFsiY2xhc3MiLCJjdXJzb3ItcG9pbnRlciIsMywiY2xp''@;'; put 'put ''Y2siLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsxLCJjdXJzb3ItcG9pbnRlciIsMywiY2xpY2siXSxbMSwiaC03MHZoIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImZsZXgtY29sdW1uIiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWyJjbGFzcyIsInNwaW5uZXIiLDQsIm5nSWYi''@;'; put 'put ''XSxbMSwic3Bpbm5lciJdLFsxLCJjYXJkIl0sWzEsImNhcmQtaGVhZGVyIl0sWyJjbGFzcyIsImNlbnRlciBjbHItY29sLW1kLTEyIHRleHQtY2VudGVyIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImRhdGFncmlkLWhpc3RvcnkgZGF0YWdyaWQtY3VzdG9tLWZvb3RlciIsNCwibmdJZiJdLFsxLCJj''@;'; put 'put ''ZW50ZXIiLCJjbHItY29sLW1kLTEyIiwidGV4dC1jZW50ZXIiXSxbMSwiZGF0YWdyaWQtaGlzdG9yeSIsImRhdGFncmlkLWN1c3RvbS1mb290ZXIiXSxbMywiY2xyRGdGaWVsZCJdLFszLCJjbGljayIsNCwiY2xyRGdJdGVtcyIsImNsckRnSXRlbXNPZiJdLFsxLCJkLWZsZXgiLCJqdXN0aWZ5''@;'; put 'put ''LWNvbnRlbnQtc3RhcnQiXSxbMSwibXgtNSIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbMywibmdWYWx1ZSJdLFsxLCJjZW50ZXIiLDMsImNsckRnUGFnZVNpemUiXSxbInBhZ2luYXRpb24iLCIiXSxbMywiY2xpY2siXSxbMSwidmVyQ2VudGVyIl0sWzEsImJ0biIsImJ0bi1zbSIs''@;'; put 'put ''ImJ0bi1saW5rIiwibS0wIiwzLCJjbGljayJdLFsxLCJ2ZXJDZW50ZXIiLDMsIm5nQ2xhc3MiXSxbMSwidmVyQ2VudGVyIiwicC0wIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsxLCJidG4iLCJidG4tc3VjY2VzcyIsMywiY2xpY2siXSxbInNoYXBlIiwiZG93bmxvYWQi''@;'; put 'put ''XV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihudCgwLCJkaXYiLDApLHJuKDEsWU5lLDQsMCwiZGl2IiwxKSxudCgyLCJjbHItbW9kYWwiLDIpLEduKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9wZW5Nb2RhbD1DfSksbnQoMywiaDQiLDMpLFl0KDQs''@;'; put 'put ''IkFwcHJvdmFsIGRldGFpbHMiKSxvdCgpLG50KDUsImRpdiIsNCkoNiwidGFibGUiLDUpKDcsInRoZWFkIikoOCwidHIiKSg5LCJ0aCIsNiksWXQoMTAsIk5hbWUiKSxvdCgpLG50KDExLCJ0aCIsNiksWXQoMTIsIlZhbHVlIiksb3QoKSgpKCksbnQoMTMsInRib2R5Iikscm4oMTQsWE5lLDcs''@;'; put 'put ''NCwidHIiLDcpLG90KCkoKSgpLG50KDE1LCJkaXYiLDgpKDE2LCJidXR0b24iLDkpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5vcGVuTW9kYWw9ITF9KSxZdCgxNywiIE9LICIpLG90KCkoKSgpLHJuKDE4LHFOZSwzLDIsImRpdiIsMTApLHJuKDE5LGlWZSw0LDIsImRpdiIsMTEp''@;'; put 'put ''LG90KCkpLDImaCYmKHV0KDEpLFR0KCJuZ0lmIix2Lm5vRGF0YSksdXQoMSksVHQoImNsck1vZGFsT3BlbiIsdi5vcGVuTW9kYWwpKCJjbHJNb2RhbFNpemUiLCJ4bCIpLHV0KDEyKSxUdCgibmdGb3JPZiIsdi50YWJsZVRpdGxlcyksdXQoNCksVHQoIm5nSWYiLCF2LmxvYWRlZCksdXQoMSks''@;'; put 'put ''VHQoIm5nSWYiLCF2Lm5vRGF0YSYmdi5sb2FkZWQpKX0sZGVwZW5kZW5jaWVzOltsYyx4cyxObywkMyxxMyxPZixUcyxJcyxHTCxnUyx6TCxtUyxtdyxmWixoWixZTCxBUyx5Uyx2UyxwdyxWTCxaTCx3bCxpZCxvZF0sc3R5bGVzOlsiLnJlamVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xv''@;'; put 'put ''cjojZjgzMTI2O2ZvbnQtd2VpZ2h0OjcwMH0uYWNjZXB0ZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMzZmM0MjQ7Zm9udC13ZWlnaHQ6NzAwfS5oc0NlbGxbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnQ7ZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFu''@;'; put 'put ''dDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudDthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50O3BhZGRpbmc6N3B4fS5idENlbGxbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LnZlckNl''@;'; put 'put ''bnRlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjt3b3JkLWJyZWFrOmJyZWFrLWFsbH0jbm9EYXRhQ29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6Y2FsYygxMDB2aCAtIDIwMHB4KX0iXX0pLGR9KSgpLGFWZT0oKCk9PntjbGFz''@;'; put 'put ''cyBke2NvbnN0cnVjdG9yKCl7fW5nT25Jbml0KCl7fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLW5vdC1mb3VuZCJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVy''@;'; put 'put ''Il0sZGVjbHM6Myx2YXJzOjAsY29uc3RzOltbMSwiY29udGVudC1hcmVhIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYobnQoMCwiZGl2IiwwKSgxLCJwIiksWXQoMiwiNDA0IC0gTm90IEZvdW5kIiksb3QoKSgpKX19KSxkfSkoKTtmdW5jdGlvbiBsVmUoZCxnKXsxJmQmJihudCgw''@;'; put 'put ''LCJkaXYiLDEyKSgxLCJkaXYiLDEzKSxDcigyLCJjbHItaWNvbiIsMTQpLG50KDMsImgzIiwxNSksWXQoNCwiIFlvdSBoYXZlIG5vdCBzdWJtaXR0ZWQgYW55IHRhYmxlcyAiKSxvdCgpKCkoKSl9ZnVuY3Rpb24gc1ZlKGQsZyl7MSZkJiYobnQoMCwiaDMiLDE2KSxZdCgxLCIgU1VCTUlUIFFV''@;'; put 'put ''RVVFICIpLG90KCkpfWZ1bmN0aW9uIHVWZShkLGcpe2lmKDEmZCYmKG50KDAsInAiLDE3KSxZdCgxLCIgWW91IGhhdmUgIiksbnQoMiwic3BhbiIpLFl0KDMpLG90KCksWXQoNCwic3VibWlzc2lvbnMgd2FpdGluZyB0byBiZSBhcHByb3ZlZCAiKSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoMyk7''@;'; put 'put ''dXQoMyksSmkoIiIsaC5yZW1haW5lZCwiICIpfX1mdW5jdGlvbiBjVmUoZCxnKXsxJmQmJihudCgwLCJzcGFuIiwyMCksWXQoMSwiIExvYWRpbmcuLi4gIiksb3QoKSl9ZnVuY3Rpb24gZlZlKGQsZyl7MSZkJiYobnQoMCwiZGl2IikoMSwiaDMiKSxZdCgyLCJMb2FkaW5nIHN1Ym1pdHRlZCBs''@;'; put 'put ''aXN0Iiksb3QoKSgpKX1mdW5jdGlvbiBoVmUoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDE4KSxybigxLGNWZSwyLDAsInNwYW4iLDE5KSxybigyLGZWZSwzLDAsImRpdiIsMiksb3QoKSksMiZkKXtjb25zdCBoPVF0KDMpO3V0KDEpLFR0KCJuZ0lmIiwhaC5sb2FkZWQpLHV0KDEpLFR0KCJu''@;'; put 'put ''Z0lmIiwhaC5sb2FkZWQpfX1mdW5jdGlvbiBkVmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJjbHItZGctcm93IiwzMCksR24oImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IHk9aXQoaCksQz15LiRpbXBsaWNpdCxJPXkuaW5kZXg7cmV0dXJuIGEoUXQoNSkuZ2V0RGV0YWlscyhD''@;'; put 'put ''LEkpKX0pLG50KDEsImNsci1kZy1jZWxsIiksWXQoMiksb3QoKSxudCgzLCJjbHItZGctY2VsbCIpLFl0KDQpLG90KCksbnQoNSwiY2xyLWRnLWNlbGwiKSxZdCg2KSxvdCgpLG50KDcsImNsci1kZy1jZWxsIikoOCwiZGl2IiwzMSkoOSwiYSIsMzIpLEduKCJjbGljayIsZnVuY3Rpb24oKXtj''@;'; put 'put ''b25zdCBDPWl0KGgpLiRpbXBsaWNpdDtyZXR1cm4gYShRdCg1KS5nb1RvU3RhZ2UoQy50YWJsZUlkKSl9KSxDcigxMCwiY2xyLWljb24iLDMzKSxudCgxMSwic3BhbiIsMzQpLFl0KDEyLCJHbyB0byBzdGFnZWQgZGF0YSBzY3JlZW4iKSxvdCgpKCkoKSgpLG50KDEzLCJjbHItZGctY2VsbCIs''@;'; put 'put ''MzUpKDE0LCJidXR0b24iLDM2KSxHbigiY2xpY2siLGZ1bmN0aW9uKHkpe2NvbnN0IEk9aXQoaCkuJGltcGxpY2l0O3JldHVybiBRdCg1KS5kb3dubG9hZChJLnRhYmxlSWQpLGEoeS5zdG9wUHJvcGFnYXRpb24oKSl9KSxDcigxNSwiY2xyLWljb24iLDM3KSxvdCgpKCkoKX1pZigyJmQpe2Nv''@;'; put 'put ''bnN0IGg9Zy4kaW1wbGljaXQ7dXQoMiksamkoaC5iYXNlKSx1dCgyKSxqaShoLnN1Ym1pdHRlZCksdXQoMiksamkoaC5zdWJtaXRSZWFzb24pfX1mdW5jdGlvbiBwVmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJkaXYiKSgxLCJjbHItZGF0YWdyaWQiLDIyKSgyLCJjbHItZGct''@;'; put 'put ''Y29sdW1uIiksWXQoMywiQkFTRSBUQUJMRSIpLG90KCksbnQoNCwiY2xyLWRnLWNvbHVtbiIsMjMpLFl0KDUsIlNVQk1JVFRFRCIpLG90KCksbnQoNiwiY2xyLWRnLWNvbHVtbiIsMjMpLFl0KDcsIlNVQk1JVCBSRUFTT04iKSxvdCgpLG50KDgsImNsci1kZy1jb2x1bW4iLDEyKSxZdCg5LCJB''@;'; put 'put ''Q1RJT04iKSxvdCgpLG50KDEwLCJjbHItZGctY29sdW1uIiwxMiksWXQoMTEsIkRPV05MT0FEIiksb3QoKSxybigxMixkVmUsMTYsMywiY2xyLWRnLXJvdyIsMjQpLG50KDEzLCJjbHItZGctZm9vdGVyIiwyNSkoMTQsInNwYW4iKSxZdCgxNSwiaXRlbXMgcGVyIHBhZ2UiKSxvdCgpLG50KDE2''@;'; put 'put ''LCJzZWxlY3QiLDI2KSxHbigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoNCkuaXRlbXNOdW09eSl9KSxudCgxNywib3B0aW9uIiwyNyksWXQoMTgsIjMiKSxvdCgpLG50KDE5LCJvcHRpb24iLDI3KSxZdCgyMCwiNSIpLG90KCksbnQoMjEsIm9wdGlvbiIs''@;'; put 'put ''MjcpLFl0KDIyLCIxMCIpLG90KCksbnQoMjMsIm9wdGlvbiIsMjcpLFl0KDI0LCIxNSIpLG90KCkoKSxudCgyNSwiY2xyLWRnLXBhZ2luYXRpb24iLDI4LDI5KSxZdCgyNyksb3QoKSgpKCkoKX1pZigyJmQpe2NvbnN0IGg9dmEoMjYpLHY9UXQoNCk7dXQoNCksVHQoImNsckRnRmllbGQiLCJz''@;'; put 'put ''dWJtaXR0ZWQiKSx1dCgyKSxUdCgiY2xyRGdGaWVsZCIsInN1Ym1pdFJlYXNvbiIpLHV0KDYpLFR0KCJjbHJEZ0l0ZW1zT2YiLHYuc3VibWl0dGVyTGlzdCksdXQoNCksVHQoIm5nTW9kZWwiLHYuaXRlbXNOdW0pLHV0KDEpLFR0KCJuZ1ZhbHVlIiwzKSx1dCgyKSxUdCgibmdWYWx1ZSIsNSks''@;'; put 'put ''dXQoMiksVHQoIm5nVmFsdWUiLDEwKSx1dCgyKSxUdCgibmdWYWx1ZSIsMTUpLHV0KDIpLFR0KCJjbHJEZ1BhZ2VTaXplIix2Lml0ZW1zTnVtKSx1dCgyKSxrZigiICIsaC5maXJzdEl0ZW0rMSwiIC0gIixoLmxhc3RJdGVtKzEsIiBvZiAiLGgudG90YWxJdGVtcywiIHN1Ym1pc3Npb25zICIp''@;'; put 'put ''fX1mdW5jdGlvbiBnVmUoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDIxKSxybigxLHBWZSwyOCwxMiwiZGl2IiwyKSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoMyk7dXQoMSksVHQoIm5nSWYiLGguc3VibWl0dGVyTGlzdCYmMCE9PWgucmVtYWluZWQpfX1jb25zdCBtVmU9ZnVuY3Rpb24oZCl7''@;'; put 'put ''cmV0dXJue25vQm9yZGVyOmR9fTtmdW5jdGlvbiB2VmUoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDUpLHJuKDEsbFZlLDUsMCwiZGl2Iiw2KSxudCgyLCJkaXYiLDcpLHJuKDMsc1ZlLDIsMCwiaDMiLDgpLHJuKDQsdVZlLDUsMSwicCIsOSksb3QoKSxybig1LGhWZSwzLDIsImRpdiIsMTAp''@;'; put 'put ''LHJuKDYsZ1ZlLDIsMSwiZGl2IiwxMSksb3QoKSksMiZkKXtjb25zdCBoPVF0KDIpO3V0KDEpLFR0KCJuZ0lmIiwwPT09aC5yZW1haW5lZCYmaC5sb2FkZWQpLHV0KDEpLFR0KCJuZ0NsYXNzIixHZCg2LG1WZSwhaC5sb2FkZWQpKSx1dCgxKSxUdCgibmdJZiIsMCE9PWgucmVtYWluZWQpLHV0''@;'; put 'put ''KDEpLFR0KCJuZ0lmIixoLmxvYWRlZCYmMCE9PWgucmVtYWluZWQpLHV0KDEpLFR0KCJuZ0lmIiwhaC5sb2FkZWQpLHV0KDEpLFR0KCJuZ0lmIixoLmxvYWRlZCl9fWZ1bmN0aW9uIEFWZShkLGcpe2lmKDEmZCYmKG50KDAsImRpdiIsMykscm4oMSx2VmUsNyw4LCJkaXYiLDQpLG90KCkpLDIm''@;'; put 'put ''ZCl7Y29uc3QgaD1RdCgpO3V0KDEpLFR0KCJuZ0lmIiwhaC5zdWJSZWFkeSl9fWZ1bmN0aW9uIHlWZShkLGcpezEmZCYmKG50KDAsImRpdiIpLENyKDEsImFwcC1hcHByb3ZlLWRldGFpbHMiKSxvdCgpKX1sZXQgendlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5z''@;'; put 'put ''YXNTdG9yZVNlcnZpY2U9aCx0aGlzLmV2ZW50U2VydmljZT12LHRoaXMucm91dGU9eSx0aGlzLnNhc1NlcnZpY2U9Qyx0aGlzLnJlbWFpbmVkPTAsdGhpcy5sb2FkZWQ9ITEsdGhpcy5zdWJSZWFkeT0hMSx0aGlzLmRldGFpbHNPcGVuPSExfWdvVG9TdGFnZShoKXt0aGlzLnJvdXRlLm5hdmln''@;'; put 'put ''YXRlQnlVcmwoIi9zdGFnZS8iK2gpfWdldERldGFpbHMoaCx2KXt0aGlzLnN1YlJlYWR5PSEwLHNldFRpbWVvdXQoKCk9Pnt0aGlzLnNhc1N0b3JlU2VydmljZS5zZW5kRGV0YWlscyhoLHYsdGhpcy5zdWJtaXREYXRhKX0sMCl9bmdPbkluaXQoKXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9p''@;'; put 'put ''ZCAwLGZ1bmN0aW9uKigpe3RoaXMuaXRlbXNOdW09MTA7dHJ5e2xldCBoPXlpZWxkIHRoaXMuc2FzU3RvcmVTZXJ2aWNlLmdldFN1Ym1pdHRzKCk7aWYodGhpcy5yZW1haW5lZD1oLmZyb21zYXMubGVuZ3RoLHRoaXMucmVtYWluZWQ+MCl7dGhpcy5zdWJtaXR0ZXI9aC5mcm9tc2FzWzBdLlNV''@;'; put 'put ''Qk1JVFRFRF9CWV9OTTtsZXQgdj1oLmZyb21zYXMubWFwKGZ1bmN0aW9uKHkpe3JldHVybnt0YWJsZUlkOnkuVEFCTEVfSUQsYmFzZTp5LkJBU0VfVEFCTEUsc3VibWl0dGVkOnkuU1VCTUlUVEVEX09OX0RUVE0sc3VibWl0dGVyOnkuU1VCTUlUVEVEX0JZX05NLHN1Ym1pdFJlYXNvbjp5LlNV''@;'; put 'put ''Qk1JVFRFRF9SRUFTT05fVFhUfX0pO3RoaXMuc3VibWl0dGVyTGlzdD12LHRoaXMuc3VibWl0RGF0YT1oLmZyb21zYXN9dGhpcy5sb2FkZWQ9ITB9Y2F0Y2goaCl7dGhpcy5ldmVudFNlcnZpY2UuY2F0Y2hSZXNwb25zZUVycm9yKCJlZGl0b3JzL2dldHN1Ym1pdHMiLGgpfX0pfW5nQWZ0ZXJW''@;'; put 'put ''aWV3SW5pdCgpe3RoaXMuX3JlYWR5U3ViPXRoaXMuc2FzU3RvcmVTZXJ2aWNlLnNldFN1Ym1pdC5zdWJzY3JpYmUoaD0+e3RoaXMuc3ViUmVhZHk9aH0pLHRoaXMuX2JhY2tUb1N1Yj10aGlzLnNhc1N0b3JlU2VydmljZS5zZXRTdWJtaXRMaXN0LnN1YnNjcmliZShoPT57dGhpcy5zdWJSZWFk''@;'; put 'put ''eT0hdGhpcy5zdWJSZWFkeSx0aGlzLmRldGFpbHNPcGVuPSExfSl9ZG93bmxvYWQoaCl7bGV0IHY9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCkseT12LnNlcnZlclVybCxDPXYuYXBwTG9jLEk9dGhpcy5zYXNTZXJ2aWNlLmdldEV4ZWN1dGlvblBhdGgoKTt3aW5kb3cub3Blbih5''@;'; put 'put ''K0krIi8/X3Byb2dyYW09IitDKyIvc2VydmljZXMvYXVkaXRvcnMvZ2V0YXVkaXRmaWxlJnRhYmxlPSIraCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGtnKSxLdChtdSksS3QoWmwpLEt0KGcyKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQs''@;'; put 'put ''c2VsZWN0b3JzOltbImFwcC1zdWJtaXR0ZXIiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjMsdmFyczoyLGNvbnN0czpbWzEsInctMTAwIl0sWyJjbGFzcyIsImNvbnRlbnQtYXJlYSIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzEsImNvbnRlbnQtYXJlYSJdLFsi''@;'; put 'put ''Y2xhc3MiLCJjYXJkIiw0LCJuZ0lmIl0sWzEsImNhcmQiXSxbImNsYXNzIiwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIiLDQsIm5nSWYiXSxbMSwiY2FyZC1oZWFkZXIiLDMsIm5nQ2xhc3MiXSxbImNsYXNzIiwiY2VudGVyIGNsci1jb2wtbWQtMTIgdGV4dC1jZW50ZXIiLDQsIm5n''@;'; put 'put ''SWYiXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgZm9udC13ZWlnaHQtNzAwIGNvbG9yLWRhcmstZ3JheSIsNCwibmdJZiJdLFsiY2xhc3MiLCJoLTcwdmggZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIiw0LCJuZ0lmIl0sWyJjbGFz''@;'; put 'put ''cyIsImNsci1jb2wtbWQtMTIiLDQsIm5nSWYiXSxbMSwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsxLCJuby1zdWJtaXR0ZWQtdGFibGVzIiwiY2FyZC1ibG9jayIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiLCJmbGV4LWNvbHVtbiIsImFsaWduLWl0ZW1z''@;'; put 'put ''LWNlbnRlciJdLFsic2hhcGUiLCJ3YXJuaW5nLXN0YW5kYXJkIiwic2l6ZSIsIjYwIiwxLCJpcy1pbmZvIl0sWzEsInRleHQtY2VudGVyIiwiY29sb3ItZ3JheSJdLFsxLCJjZW50ZXIiLCJjbHItY29sLW1kLTEyIiwidGV4dC1jZW50ZXIiXSxbMSwidGV4dC1jZW50ZXIiLCJmb250LXdlaWdo''@;'; put 'put ''dC03MDAiLCJjb2xvci1kYXJrLWdyYXkiXSxbMSwiaC03MHZoIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImZsZXgtY29sdW1uIiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWyJjbGFzcyIsInNwaW5uZXIiLDQsIm5nSWYiXSxbMSwic3Bpbm5lciJdLFsxLCJjbHItY29sLW1k''@;'; put 'put ''LTEyIl0sWzEsImRhdGFncmlkLWNvbXBhY3QiLCJkYXRhZ3JpZC1jdXN0b20tZm9vdGVyIl0sWzMsImNsckRnRmllbGQiXSxbImNsYXNzIiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIiw0LCJjbHJEZ0l0ZW1zIiwiY2xyRGdJdGVtc09mIl0sWzEsImQtZmxleCIsImp1c3RpZnktY29udGVu''@;'; put 'put ''dC1zdGFydCJdLFszLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSJdLFszLCJuZ1ZhbHVlIl0sWzEsImNlbnRlciIsMywiY2xyRGdQYWdlU2l6ZSJdLFsicGFnaW5hdGlvbiIsIiJdLFsxLCJjdXJzb3ItcG9pbnRlciIsMywiY2xpY2siXSxbInJvbGUiLCJ0b29sdGlwIiwxLCJyb3ciLCJqdXN0''@;'; put 'put ''aWZ5LWNvbnRlbnQtYXJvdW5kIl0sWzEsImNvbHVtbi1jZW50ZXIiLCJsaW5rcyIsInRvb2x0aXAiLCJ0b29sdGlwLW1kIiwidG9vbHRpcC1ib3R0b20tbGVmdCIsImNvbG9yLWJsdWUiLDMsImNsaWNrIl0sWyJzaGFwZSIsImNvZGUiLCJzaXplIiwiMjgiXSxbMSwidG9vbHRpcC1jb250ZW50''@;'; put 'put ''Il0sWzEsInAtMCIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbMSwiYnRuIiwiYnRuLXN1Y2Nlc3MiLDMsImNsaWNrIl0sWyJzaGFwZSIsImRvd25sb2FkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYobnQoMCwiZGl2IiwwKSxybigxLEFWZSwyLDEsImRpdiIs''@;'; put 'put ''MSkscm4oMix5VmUsMiwwLCJkaXYiLDIpLG90KCkpLDImaCYmKHV0KDEpLFR0KCJuZ0lmIiwhdi5zdWJSZWFkeSksdXQoMSksVHQoIm5nSWYiLHYuc3ViUmVhZHkpKX0sZGVwZW5kZW5jaWVzOltsYyxObywkMyxxMyxPZixUcyxJcyxHTCxnUyx6TCxtUyxtdyxmWixoWixZTCxBUyx5Uyx2Uyxw''@;'; put 'put ''dyxWTCxaTCx3bCxad2VdLHN0eWxlczpbIi5ub0JvcmRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdHJhbnNwYXJlbnQhaW1wb3J0YW50fS50b29sdGlwLnRvb2x0aXAtYm90dG9tLWxlZnRbX25nY29udGVudC0lQ09NUCVdID4gLnRvb2x0aXAtY29udGVu''@;'; put 'put ''dFtfbmdjb250ZW50LSVDT01QJV0sIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1ib3R0b20tbGVmdFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojMzE0MzUxIWltcG9ydGFudH0udG9vbHRpcC50b29sdGlwLWJvdHRvbS1sZWZ0''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXSA+IC50b29sdGlwLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOmJlZm9yZSwgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWJvdHRvbS1sZWZ0W19uZ2NvbnRlbnQtJUNPTVAlXTpiZWZvcmV7Ym9yZGVy''@;'; put 'put ''LXJpZ2h0Oi4yNXJlbSBzb2xpZCAjMzE0MzUxO2JvcmRlci1ib3R0b206LjIwODMzcmVtIHNvbGlkICMzMTQzNTF9Lm5vLXN1Ym1pdHRlZC10YWJsZXNbX25nY29udGVudC0lQ09NUCVde2hlaWdodDpjYWxjKDEwMHZoIC0gMjAwcHgpfSJdfSksZH0pKCksd1ZlPSgoKT0+e2NsYXNzIGR7Y29u''@;'; put 'put ''c3RydWN0b3IoKXt9bmdPbkluaXQoKXt9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtYXBwcm92ZS1yb3V0ZSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0s''@;'; put 'put ''ZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJkNyKDAsInJvdXRlci1vdXRsZXQiKX0sZGVwZW5kZW5jaWVzOltheV19KSxkfSkoKSxHd2U9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe31kb3dubG9hZEZpbGUoaCx2LHk9InR4dCIpe2xldCBDPW5ldyBCbG9i''@;'; put 'put ''KFtoXSx7dHlwZToidGV4dC9wbGFpbiJ9KTtpZihuYXZpZ2F0b3IuYXBwVmVyc2lvbi50b1N0cmluZygpLmluZGV4T2YoIi5ORVQiKT4wKXdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlQmxvYihDLGAke3Z9LiR7eX1gKTtlbHNle2xldCBJPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtJLmhy''@;'; put 'put ''ZWY9ImRhdGE6dGV4dC9wbGFpbiwiK2VuY29kZVVSSUNvbXBvbmVudChoKSxJLmRvd25sb2FkPWAke3Z9LiR7eX1gLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoSSksSS5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoSSl9fXJlYWRGaWxlKGgpe3JldHVybiBuZXcgUHJvbWlz''@;'; put 'put ''ZSgodix5KT0+e2xldCBDPW5ldyBGaWxlUmVhZGVyO0Mub25sb2FkPSgpPT57Qy5yZXN1bHQmJnYoSlNPTi5wYXJzZShDLnJlc3VsdC50b1N0cmluZygpKSl9LEMucmVhZEFzVGV4dChoKX0pfWNsZWFyVXBsb2FkSW5wdXQoaCl7aC50YXJnZXQudmFsdWU9IiJ9fXJldHVybiBkLlx1MDI3NWZh''@;'; put 'put ''Yz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGR9KSgpO2Z1bmN0aW9uIGJWZShkLGcpezEmZCYmKG50KDAsImRpdiIsNikoMSwicCIsNyksWXQoMiwiUGxlYXNlIGxv''@;'; put 'put ''ZyBpbiBmaXJzdCIpLG90KCksbnQoMywibGFiZWwiLDgpLFl0KDQsIlVzZXJuYW1lIiksb3QoKSxudCg1LCJkaXYiLDkpKDYsImRpdiIsMTApLENyKDcsImlucHV0IiwxMSksb3QoKSgpLG50KDgsImxhYmVsIiwxMiksWXQoOSwiUGFzc3dvcmQiKSxvdCgpLG50KDEwLCJkaXYiLDkpKDExLCJk''@;'; put 'put ''aXYiLDEwKSxDcigxMiwiaW5wdXQiLDEzKSxvdCgpKCksbnQoMTMsImJ1dHRvbiIsMTQpLFl0KDE0LCJMb2cgaW4iKSxvdCgpKCkpfWZ1bmN0aW9uIF9WZShkLGcpe2lmKDEmZCYmKG50KDAsIm9wdGlvbiIsMzYpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDtUdCgidmFs''@;'; put 'put ''dWUiLGguaWQpLHV0KDEpLEppKCIgIixoLm5hbWUsIiAiKX19ZnVuY3Rpb24gQ1ZlKGQsZyl7aWYoMSZkJiYobnQoMCwic3BhbiIpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgpLiRpbXBsaWNpdDt1dCgxKSxKaSgiKCAiLGguYXR0cmlidXRlcy5zeXNVc2VySWQsIiApIil9fWZ1bmN0''@;'; put 'put ''aW9uIGtWZShkLGcpe2lmKDEmZCYmKG50KDAsIm9wdGlvbiIsMzYpLFl0KDEpLHJuKDIsQ1ZlLDIsMSwic3BhbiIsNSksbm4oMywianNvbiIpLG90KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDtUdCgidmFsdWUiLGgubmFtZSksdXQoMSksSmkoIiAiLGgubmFtZSwiICIpLHV0KDEpLFR0''@;'; put 'put ''KCJuZ0lmIiwie30iIT16dCgzLDMsaC5hdHRyaWJ1dGVzKSl9fWZ1bmN0aW9uIFNWZShkLGcpezEmZCYmKG50KDAsInNwYW4iKSxZdCgxLCJKU09OIFN1Ym1pdHRlZCBTdWNjZXNzZnVsbHkiKSxvdCgpKX1mdW5jdGlvbiBNVmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJidXR0''@;'; put 'put ''b24iLDM3KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoMikuZG93bmxvYWRTYXNQcmVjb2RlRmlsZSgpKX0pLENyKDEsImNsci1pY29uIiwzOCksb3QoKX19ZnVuY3Rpb24gRVZlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7QjAoMCksbnQoMSwicCIsMzkpLFl0''@;'; put 'put ''KDIsIkZpbGUgZXhlY3V0ZSBjb21wbGV0ZWQiKSxvdCgpLENyKDMsImhyIiksbnQoNCwiZGl2IikoNSwiYnV0dG9uIiw0MCksR24oImNsaWNrIixmdW5jdGlvbigpe2l0KGgpO2NvbnN0IHk9UXQoMik7cmV0dXJuIGEoeS5kb3dubG9hZEZpbGUoeS5qb2JMb2csImV4ZWN1dGUtc2NyaXB0LWxv''@;'; put 'put ''ZyIsInR4dCIpKX0pLFl0KDYsIiBEb3dubG9hZCBsb2cgIiksb3QoKSgpLFAwKCl9fWZ1bmN0aW9uIHhWZShkLGcpe2lmKDEmZCYmKG50KDAsImRpdiIsNDQpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgzKTt1dCgxKSxKaSgiICIsaC5tYWtlRGF0YVJlc3BvbnNlLCIgIil9fWZ1bmN0''@;'; put 'put ''aW9uIFRWZShkLGcpezEmZCYmKEIwKDApLG50KDEsInNwYW4iLDI1KSxZdCgyLCIgVmFsaWRhdGluZyBkZXBsb3kuLi4gIiksb3QoKSxudCgzLCJzcGFuIiksWXQoNCwiIFZhbGlkYXRpbmcgZGVwbG95Li4uICIpLG90KCksUDAoKSl9ZnVuY3Rpb24gSVZlKGQsZyl7MSZkJiYoQjAoMCksQ3Io''@;'; put 'put ''MSwiY2xyLWljb24iLDQ2KSxudCgyLCJzcGFuIiksWXQoMywiIFZhbGlkYXRpb24gZmFpbGVkICIpLG90KCksUDAoKSl9ZnVuY3Rpb24gRFZlKGQsZyl7MSZkJiYoQjAoMCksQ3IoMSwiY2xyLWljb24iLDQ3KSxudCgyLCJzcGFuIiksWXQoMywiIFZhbGlkYXRpb24gc3VjY2VlZGVkICIpLG90''@;'; put 'put ''KCksUDAoKSl9ZnVuY3Rpb24gTFZlKGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2Iiw0NSkscm4oMSxUVmUsNSwwLCJuZy1jb250YWluZXIiLDUpLHJuKDIsSVZlLDQsMCwibmctY29udGFpbmVyIiw1KSxybigzLERWZSw0LDAsIm5nLWNvbnRhaW5lciIsNSksb3QoKSksMiZkKXtjb25zdCBoPVF0''@;'; put 'put ''KDMpO3V0KDEpLFR0KCJuZ0lmIixoLmlzVmFsaWRhdGluZyksdXQoMSksVHQoIm5nSWYiLCFoLmlzVmFsaWRhdGluZyYmImVycm9yIj09PWgudmFsaWRhdGlvblN0YXRlKSx1dCgxKSxUdCgibmdJZiIsIWguaXNWYWxpZGF0aW5nJiYic3VjY2VzcyI9PT1oLnZhbGlkYXRpb25TdGF0ZSl9fWZ1''@;'; put 'put ''bmN0aW9uIE9WZShkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO0IwKDApLG50KDEsInAiLDM5KSxZdCgyLCJDcmVhdGUgRGF0YWJhc2UgQ29tcGxldGVkIiksb3QoKSxDcigzLCJociIpLHJuKDQseFZlLDIsMSwiZGl2Iiw0MSksbnQoNSwiYnV0dG9uIiw0MiksR24oImNsaWNrIixmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiBpdChoKSxhKFF0KDIpLm5hdmlnYXRlVG9Ib21lKCkpfSksWXQoNiwiIExldCdzIGdldCBzdGFydGVkICIpLG90KCksbnQoNywiYnV0dG9uIiw0MiksR24oImNsaWNrIixmdW5jdGlvbigpe2l0KGgpO2NvbnN0IHk9UXQoMik7cmV0dXJuIGEoeS5kb3dubG9hZEZpbGUoeS5t''@;'; put 'put ''YWtlRGF0YVJlc3BvbnNlLCJjcmVhdGUtZGF0YWJhc2UtbG9nIiwidHh0IikpfSksWXQoOCwiIERvd25sb2FkIGxvZyAiKSxvdCgpLG50KDksImJ1dHRvbiIsNDIpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgyKS52YWxpZGF0ZURlcGxveSgpKX0pLFl0KDEwLCIg''@;'; put 'put ''VmFsaWRhdGUgIiksb3QoKSxybigxMSxMVmUsNCwzLCJkaXYiLDQzKSxQMCgpfWlmKDImZCl7Y29uc3QgaD1RdCgyKTt1dCg0KSxUdCgibmdJZiIsaC5tYWtlRGF0YVJlc3BvbnNlLmxlbmd0aD4wKSx1dCg3KSxUdCgibmdJZiIsIm5vbmUiIT09aC52YWxpZGF0aW9uU3RhdGV8fGguaXNWYWxp''@;'; put 'put ''ZGF0aW5nKX19Y29uc3QgSGhlPWZ1bmN0aW9uKCl7cmV0dXJue3N0YW5kYWxvbmU6ITB9fTtmdW5jdGlvbiBSVmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtCMCgwKSxudCgxLCJmb3JtIikoMiwiZGl2IiwxNSkoMywibGFiZWwiLDE2KSxZdCg0LCJBZG1pbiBncm91cCIpLG90KCksbnQo''@;'; put 'put ''NSwiZGl2IiwxNykoNiwiZGl2IiwxOCkoNywic2VsZWN0IiwxOSksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KCkuc2VsZWN0ZWRBZG1pbkdyb3VwPXkpfSkscm4oOCxfVmUsMiwyLCJvcHRpb24iLDIwKSxvdCgpKCkoKSgpLG50KDksImRpdiIsMTUp''@;'; put 'put ''KDEwLCJkaXYiKSgxMSwibGFiZWwiLDE2KSxZdCgxMiwiQ29udGV4dCIpLG90KCksbnQoMTMsImRpdiIsMTcpKDE0LCJkaXYiLDE4KSgxNSwic2VsZWN0IiwyMSksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KCkuc2VsZWN0ZWRDb250ZXh0PXkpfSks''@;'; put 'put ''cm4oMTYsa1ZlLDQsNSwib3B0aW9uIiwyMCksb3QoKSgpKCksbnQoMTcsImJ1dHRvbiIsMjIpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgpLmV4ZWN1dGFibGVDb250ZXh0KCkpfSksQ3IoMTgsImNsci1pY29uIiwyMyksb3QoKSgpLG50KDE5LCJkaXYiLDI0KSgy''@;'; put 'put ''MCwic3BhbiIsMjUpLFl0KDIxLCIgTG9hZGluZyBjb250ZXh0cy4uLiAiKSxvdCgpLG50KDIyLCJzcGFuIiksWXQoMjMsIiBMb2FkaW5nIGNvbnRleHRzLi4uICIpLG90KCkoKSxudCgyNCwibGFiZWwiLDI2KSxZdCgyNSwiREMgTG9jIiksb3QoKSxudCgyNiwiZGl2Iiw5KSgyNywiZGl2Iiwx''@;'; put 'put ''MCkoMjgsImlucHV0IiwyNyksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KCkuZGNQYXRoPXkpfSkoImZvY3Vzb3V0IixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkuc2F2ZURjUGF0aCgpKX0pLG90KCkoKSgpLG50KDI5LCJwIiwyOCksWXQo''@;'; put 'put ''MzAsIiBTZWxlY3QgSlNPTiBmaWxlIHRvIHVwbG9hZCAoanNvbiBidWlsZCBmaWxlIHByZWxvYWRlZCk6ICIpLG90KCksbnQoMzEsImRpdiIsMjkpKDMyLCJpbnB1dCIsMzApLEduKCJjbGljayIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoKS5jbGVhclVwbG9hZElucHV0KHkpKX0p''@;'; put 'put ''KCJjaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KCkub25Kc29uRmlsZUNoYW5nZSh5KSl9KSxvdCgpKCksbnQoMzMsImRpdiIsMzEpKDM0LCJidXR0b24iLDMyKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoKS5leGVjdXRlSnNvbigpKX0pLFl0''@;'; put 'put ''KDM1LCIgU1VCTUlUIEpTT04gIiksb3QoKSxybigzNixTVmUsMiwwLCJzcGFuIiw1KSxvdCgpLG50KDM3LCJwIiwyOCksWXQoMzgsIlNlbGVjdCBTQVMgZmlsZSB0byB1cGxvYWQ6Iiksb3QoKSxudCgzOSwiZGl2IiwyOSkoNDAsImlucHV0IiwzMCksR24oImNsaWNrIixmdW5jdGlvbih5KXty''@;'; put 'put ''ZXR1cm4gaXQoaCksYShRdCgpLmNsZWFyVXBsb2FkSW5wdXQoeSkpfSkoImNoYW5nZSIsZnVuY3Rpb24oeSl7aXQoaCk7Y29uc3QgQz1RdCgpO3JldHVybiBDLm9uU2FzRmlsZUNoYW5nZSh5KSxhKEMuZG93bmxvYWRGaWxlQnRuPSEwKX0pLG90KCkscm4oNDEsTVZlLDIsMCwiYnV0dG9uIiwz''@;'; put 'put ''Myksb3QoKSxudCg0MiwiZGl2IiwzMSkoNDMsImJ1dHRvbiIsMzQpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgpLmV4ZWN1dGVTQVMoKSl9KSxZdCg0NCwiIFNVQk1JVCAiKSxvdCgpKCkoKSxybig0NSxFVmUsNywwLCJuZy1jb250YWluZXIiLDUpLG50KDQ2LCJi''@;'; put 'put ''dXR0b24iLDM1KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoKS5jcmVhdGVEYXRhYmFzZSgpKX0pLFl0KDQ3LCIgQ3JlYXRlIERhdGFiYXNlICIpLG90KCkscm4oNDgsT1ZlLDEyLDIsIm5nLWNvbnRhaW5lciIsNSksb3QoKSxQMCgpfWlmKDImZCl7Y29uc3QgaD1R''@;'; put 'put ''dCgpO3V0KDcpLFR0KCJuZ01vZGVsIixoLnNlbGVjdGVkQWRtaW5Hcm91cCkoIm5nTW9kZWxPcHRpb25zIixjcygxOSxIaGUpKSx1dCgxKSxUdCgibmdGb3JPZiIsaC5hZG1pbkdyb3VwcyksdXQoMiksRmkoImhpZGRlbiIsaC5jb250ZXh0c0xvYWRpbmcpLHV0KDUpLFR0KCJuZ01vZGVsIixo''@;'; put 'put ''LnNlbGVjdGVkQ29udGV4dCkoIm5nTW9kZWxPcHRpb25zIixjcygyMCxIaGUpKSx1dCgxKSxUdCgibmdGb3JPZiIsaC5hbGxDb250ZXh0cyksdXQoMyksRmkoImhpZGRlbiIsIWguY29udGV4dHNMb2FkaW5nKSx1dCg5KSxUdCgibmdNb2RlbCIsaC5kY1BhdGgpKCJuZ01vZGVsT3B0aW9ucyIs''@;'; put 'put ''Y3MoMjEsSGhlKSksdXQoNiksVHQoImNsckxvYWRpbmciLGguaXNTdWJtaXR0aW5nSnNvbiksdXQoMiksVHQoIm5nSWYiLGguaXNKc29uU3VibWl0dGVkKSx1dCg1KSxUdCgibmdJZiIsaC5kb3dubG9hZEZpbGVCdG4pLHV0KDIpLFR0KCJjbHJMb2FkaW5nIixoLmV4ZWN1dGluZ1NjcmlwdCks''@;'; put 'put ''dXQoMiksVHQoIm5nSWYiLGguam9iTG9nLmxlbmd0aD4wKSx1dCgxKSxUdCgiY2xyTG9hZGluZyIsaC5jcmVhdGVEYXRhYmFzZUxvYWRpbmcpLHV0KDIpLFR0KCJuZ0lmIixoLm1ha2VEYXRhUmVzcG9uc2UubGVuZ3RoPjApfX1sZXQgQlZlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2''@;'; put 'put ''LHksQyl7dGhpcy5zYXNTZXJ2aWNlPWgsdGhpcy5ldmVudFNlcnZpY2U9dix0aGlzLmxvZ2dlclNlcnZpY2U9eSx0aGlzLmRlcGxveVNlcnZpY2U9Qyx0aGlzLnNhc0pzQ29uZmlnPW5ldyBVMy5TQVNqc0NvbmZpZyx0aGlzLm9uTmF2aWdhdGVUb0hvbWU9bmV3IGFyLHRoaXMubmVlZHNMb2dp''@;'; put 'put ''bj0hMSx0aGlzLmFkbWluR3JvdXBzPVtdLHRoaXMuYWxsQ29udGV4dHM9W10sdGhpcy5hcHBMb2M9IiIsdGhpcy5kY1BhdGg9IiIsdGhpcy5zZWxlY3RlZEFkbWluR3JvdXA9IiIsdGhpcy5zZWxlY3RlZENvbnRleHQ9IiIsdGhpcy5qb2JMb2c9IiIsdGhpcy5tYWtlRGF0YVJlc3BvbnNlPSIi''@;'; put 'put ''LHRoaXMubGluZXNPZkNvZGU9W10sdGhpcy5maWxlTmFtZT0iIix0aGlzLnByZWxvYWRlZEZpbGU9ITAsdGhpcy5leGVjdXRlU0FTRW5hYmxlZD0hMSx0aGlzLmNvbnRleHRzTG9hZGluZz0hMSx0aGlzLmNyZWF0ZURhdGFiYXNlTG9hZGluZz0hMSx0aGlzLmV4ZWN1dGluZ1NjcmlwdD0hMSx0''@;'; put 'put ''aGlzLmRvd25sb2FkRmlsZUJ0bj0hMSx0aGlzLmlzVmFsaWRhdGluZz0hMSx0aGlzLmpzb25GaWxlPW51bGwsdGhpcy5pc1N1Ym1pdHRpbmdKc29uPSExLHRoaXMuaXNKc29uU3VibWl0dGVkPSExLHRoaXMudmFsaWRhdGlvblN0YXRlPSJub25lIn1uZ09uSW5pdCgpe31leGVjdXRhYmxlQ29u''@;'; put 'put ''dGV4dCgpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7fSl9Y2xlYXJVcGxvYWRJbnB1dChoKXt0aGlzLmRlcGxveVNlcnZpY2UuY2xlYXJVcGxvYWRJbnB1dChoKX1vblNhc0ZpbGVDaGFuZ2UoaCl7dGhpcy5wcmVsb2FkZWRGaWxlPSExO2xldCB2PWgudGFyZ2V0''@;'; put 'put ''LmZpbGVzWzBdO3RoaXMuZmlsZU5hbWU9di5uYW1lO2xldCB5PW5ldyBGaWxlUmVhZGVyO3kub25sb2FkPSgpPT57eS5yZXN1bHQmJih0aGlzLmxpbmVzT2ZDb2RlPXkucmVzdWx0LnNwbGl0KCJcbiIpLHRoaXMubGluZXNPZkNvZGU9dGhpcy5saW5lc09mQ29kZS5maWx0ZXIoQz0+IiIhPT1D''@;'; put 'put ''JiZudWxsIT09QyksdGhpcy5leGVjdXRlU0FTRW5hYmxlZD0hMCx0aGlzLmFkZFByZWNvZGVMaW5lcygpKX0seS5yZWFkQXNUZXh0KHYpfW9uSnNvbkZpbGVDaGFuZ2UoaCl7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgdj1oLnRhcmdldC5maWxlc1swXTt0''@;'; put 'put ''aGlzLmpzb25GaWxlPXlpZWxkIHRoaXMuZGVwbG95U2VydmljZS5yZWFkRmlsZSh2KX0pfWFkZFByZWNvZGVMaW5lcygpe3RoaXMubGluZXNPZkNvZGUudW5zaGlmdChgJWxldCBjb250ZXh0PSR7dGhpcy5zZWxlY3RlZENvbnRleHR9O2AsYCVsZXQgYXBwTG9jPSR7dGhpcy5hcHBMb2N9O2As''@;'; put 'put ''YCVsZXQgYWRtaW49JHt0aGlzLnNlbGVjdGVkQWRtaW5Hcm91cH07YCxgJWxldCBkY3BhdGg9JHt0aGlzLmRjUGF0aH07YCl9ZG93bmxvYWRTYXNQcmVjb2RlRmlsZSgpe2xldCBoPXRoaXMubGluZXNPZkNvZGUuam9pbigiXG4iKSx2PXRoaXMuZmlsZU5hbWUuc3BsaXQoIi4iKVswXTt0aGlz''@;'; put 'put ''LmRvd25sb2FkRmlsZShoLHYsInNhcyIpfWRvd25sb2FkRmlsZShoLHYseT0idHh0Iil7dGhpcy5kZXBsb3lTZXJ2aWNlLmRvd25sb2FkRmlsZShoLHYseSl9c2F2ZURjUGF0aCgpe2xvY2FsU3RvcmFnZS5zZXRJdGVtKCJkZXBsb3lfZGNfbG9jIix0aGlzLmRjUGF0aCl9ZXhlY3V0ZUpzb24o''@;'; put 'put ''KXt2YXIgaDtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMuaXNTdWJtaXR0aW5nSnNvbj0hMDt0cnl7eWllbGQgdGhpcy5zYXNKcy5kZXBsb3lTZXJ2aWNlUGFjayh0aGlzLmpzb25GaWxlLChudWxsPT09KGg9dGhpcy5kY0FkYXB0ZXJTZXR0aW5ncyl8fHZv''@;'; put 'put ''aWQgMD09PWg/dm9pZCAwOmguYXBwTG9jKXx8IiIsdm9pZCAwLHZvaWQgMCwhMCksdGhpcy5pc0pzb25TdWJtaXR0ZWQ9ITB9Y2F0Y2godil7bGV0IHk9IiI7cmV0dXJuIHk9InN0cmluZyIhPXR5cGVvZiB2Lm1lc3NhZ2U/SlNPTi5zdHJpbmdpZnkodikucmVwbGFjZSgvXFwvZ20sIiIpOnYu''@;'; put 'put ''bWVzc2FnZSx2b2lkIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIkRlcGxveSBlcnJvciIsYEV4Y2VwdGlvbjogXG4gJHsiIiE9PXk/eTp2fWApfXRoaXMuaXNTdWJtaXR0aW5nSnNvbj0hMX0pfWV4ZWN1dGVTQVMoKXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0''@;'; put 'put ''aW9uKigpe3RoaXMuZXhlY3V0aW5nU2NyaXB0PSEwLHRoaXMuam9iTG9nPSIiLHRoaXMubWFrZURhdGFSZXNwb25zZT0iIjt0cnl7bGV0IGg9eWllbGQgdGhpcy5zYXNKcy5leGVjdXRlU2NyaXB0U0FTVml5YSh0aGlzLmZpbGVOYW1lLHRoaXMubGluZXNPZkNvZGUsdGhpcy5zZWxlY3RlZENv''@;'; put 'put ''bnRleHQpO3RoaXMubG9nZ2VyU2VydmljZS5sb2coaCksInN0cmluZyI9PXR5cGVvZiBoLmxvZyYmKGgubG9nPUpTT04ucGFyc2UoaC5sb2cpKSwiZXJyb3IiPT09aC5qb2JTdGF0dXM/YWxlcnQoIkVycm9yISIpOnRoaXMuam9iTG9nPWgubG9nLml0ZW1zP2gubG9nLml0ZW1zLm1hcCh2PT52''@;'; put 'put ''LmxpbmUpLmpvaW4oIlxuIik6SlNPTi5zdHJpbmdpZnkoaC5sb2cpLHRoaXMuZXhlY3V0aW5nU2NyaXB0PSExfWNhdGNoKGgpe3RoaXMuZXhlY3V0aW5nU2NyaXB0PSExfX0pfWNyZWF0ZURhdGFiYXNlKGg9ITApe3ZhciB2O2lmKGgpe2xldCBJPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0Nv''@;'; put 'put ''bmZpZygpLnNlcnZlclVybCsiL1NBU0pvYkV4ZWN1dGlvbi8/X3Byb2dyYW09IisobnVsbD09PSh2PXRoaXMuZGNBZGFwdGVyU2V0dGluZ3MpfHx2b2lkIDA9PT12P3ZvaWQgMDp2LmFwcExvYyl8fCIvYWRtaW4vbWFrZWRhdGEmQURNSU49Iit0aGlzLnNlbGVjdGVkQWRtaW5Hcm91cCsiJkRD''@;'; put 'put ''UEFUSD0iK3RoaXMuZGNQYXRoKyImX2RlYnVnPTEzMSI7d2luZG93Lm9wZW4oSSwiX2JsYW5rIil9ZWxzZSB0aGlzLmNyZWF0ZURhdGFiYXNlTG9hZGluZz0hMCx0aGlzLnNhc0pzLnJlcXVlc3QoInNlcnZpY2VzL2FkbWluL21ha2VkYXRhIix7ZnJvbWpzOlt7QURNSU46dGhpcy5zZWxlY3Rl''@;'; put 'put ''ZEFkbWluR3JvdXAsRENQQVRIOnRoaXMuZGNQYXRofV19LHt1c2VDb21wdXRlQXBpOiExLGNvbnRleHROYW1lOnRoaXMuc2FzSnNDb25maWcuY29udGV4dE5hbWUsZGVidWc6ITB9LCgpPT57dGhpcy5zYXNTZXJ2aWNlLnNob3VsZExvZ2luLm5leHQoITApfSkudGhlbihJPT57dHJ5e3RoaXMu''@;'; put 'put ''bWFrZURhdGFSZXNwb25zZT1KU09OLnN0cmluZ2lmeShJKX1jYXRjaChaKXt0aGlzLm1ha2VEYXRhUmVzcG9uc2U9SX10aGlzLmNyZWF0ZURhdGFiYXNlTG9hZGluZz0hMX0pLmNhdGNoKEk9Pnt0aGlzLmNyZWF0ZURhdGFiYXNlTG9hZGluZz0hMTt0cnl7dGhpcy5tYWtlRGF0YVJlc3BvbnNl''@;'; put 'put ''PUpTT04uc3RyaW5naWZ5KEkpfWNhdGNoKFope3RoaXMubWFrZURhdGFSZXNwb25zZT1JfX0pfW5hdmlnYXRlVG9Ib21lKCl7dGhpcy5vbk5hdmlnYXRlVG9Ib21lLmVtaXQoKX12YWxpZGF0ZURlcGxveSgpe3RoaXMuaXNWYWxpZGF0aW5nPSEwLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJw''@;'; put 'put ''dWJsaWMvc3RhcnR1cHNlcnZpY2UiLG51bGwpLnRoZW4oaD0+e3RoaXMubG9nZ2VyU2VydmljZS5sb2coaCksdGhpcy52YWxpZGF0aW9uU3RhdGU9aC5zYXNsaWJzPyJzdWNjZXNzIjoiZXJyb3IiLHRoaXMuaXNWYWxpZGF0aW5nPSExfSkuY2F0Y2goaD0+e3RoaXMuaXNWYWxpZGF0aW5nPSEx''@;'; put 'put ''LHRoaXMudmFsaWRhdGlvblN0YXRlPSJlcnJvciJ9KX1kZWxldGVLZXlzKCl7bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImRlcGxveV9kY19sb2MiKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoZzIpLEt0KG11KSxLdChzYyksS3QoR3dlKSl9''@;'; put 'put ''LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1tYW51YWwtZGVwbG95Il1dLGlucHV0czp7c2FzSnM6InNhc0pzIixzYXNKc0NvbmZpZzoic2FzSnNDb25maWciLGRjQWRhcHRlclNldHRpbmdzOiJkY0FkYXB0ZXJTZXR0aW5ncyJ9LG91dHB1dHM6e29uTmF2aWdhdGVU''@;'; put 'put ''b0hvbWU6Im9uTmF2aWdhdGVUb0hvbWUifSxkZWNsczo5LHZhcnM6Myxjb25zdHM6W1sxLCJjYXJkLWhlYWRlciIsInBvc2l0aW9uLXJlbGF0aXZlIl0sWzEsImQtaW5saW5lLWJsb2NrIiwibWwtMTAiLCJtYi0xMCIsIm10LTAiXSxbMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJjbGVhci1tZW1v''@;'; put 'put ''cnktYnV0dG9uIiwicG9zaXRpb24tYWJzb2x1dGUiLDMsImNsaWNrIl0sWzEsImNhcmQtYmxvY2siXSxbImlkIiwibG9naW5Gb3JtIiwiY2xhc3MiLCJkLW5vbmUiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsiaWQiLCJsb2dpbkZvcm0iLDEsImQtbm9uZSJdLFsxLCJtYi0xMCJdLFsiZm9yIiwi''@;'; put 'put ''dXNlcm5hbWUiLDEsImNsci1jb250cm9sLWxhYmVsIl0sWzEsIm1iLTEwIiwiY2xyLWNvbnRyb2wtY29udGFpbmVyIl0sWzEsImNsci1pbnB1dC13cmFwcGVyIl0sWyJ0eXBlIiwidGV4dCIsImlkIiwidXNlcm5hbWUiLDEsImNsci1pbnB1dCJdLFsiZm9yIiwicGFzc3dvcmQiLDEsImNsci1j''@;'; put 'put ''b250cm9sLWxhYmVsIl0sWyJ0eXBlIiwicGFzc3dvcmQiLCJpZCIsInBhc3N3b3JkIiwxLCJjbHItaW5wdXQiXSxbImlkIiwibG9naW5CdG4iLDEsImJ0biIsImJ0bi1wcmltYXJ5IiwiZC1ub25lIl0sWzEsImNsci1mb3JtLWNvbnRyb2wiXSxbImZvciIsInNlbGVjdC1mdWxsIiwxLCJjbHIt''@;'; put 'put ''Y29udHJvbC1sYWJlbCJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiXSxbMSwiY2xyLXNlbGVjdC13cmFwcGVyIl0sWyJuYW1lIiwic2VsZWN0ZWRBZG1pbkdyb3VwIiwiaWQiLCJhZG1pbkdyb3Vwc1NlbGVjdCIsMSwiY2xyLXNlbGVjdCIsMywibmdNb2RlbCIsIm5nTW9kZWxPcHRpb25z''@;'; put 'put ''IiwibmdNb2RlbENoYW5nZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJuYW1lIiwic2VsZWN0ZWRDb250ZXh0IiwxLCJjbHItc2VsZWN0IiwzLCJuZ01vZGVsIiwibmdNb2RlbE9wdGlvbnMiLCJuZ01vZGVsQ2hhbmdlIl0sWyJ0eXBlIiwiYnV0dG9uIiwiaWQiLCJjb250''@;'; put 'put ''ZXh0cy1idG4iLDEsImJ0biIsImJ0bi1pY29uIiwzLCJjbGljayJdLFsic2hhcGUiLCJwbGF5Il0sWzEsImQtZmxleCJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1pbmxpbmUiLCJtci0xMCJdLFsiZm9yIiwiZGNsb2MiLDEsIm10LTIwIiwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbIm5hbWUiLCJk''@;'; put 'put ''Y1BhdGgiLCJ0eXBlIiwidGV4dCIsImlkIiwiZGNsb2MiLDEsImNsci1pbnB1dCIsMywibmdNb2RlbCIsIm5nTW9kZWxPcHRpb25zIiwibmdNb2RlbENoYW5nZSIsImZvY3Vzb3V0Il0sWzEsIm10LTEwIl0sWzEsImQtZmxleCIsImZsZXgtY29sdW1uIl0sWyJ0eXBlIiwiZmlsZSIsMywiY2xp''@;'; put 'put ''Y2siLCJjaGFuZ2UiXSxbMSwibXQtMjAiLCJkLWZsZXgiLCJhbGlnbi1pdGVtcy1jZW50ZXIiXSxbImlkIiwiIiwxLCJtdC0wIiwzLCJjbHJMb2FkaW5nIiwiY2xpY2siXSxbImNsYXNzIiwiYnRuIGJ0bi1zbSBidG4taWNvbiBtaW4tdy0wIHctNDAiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJp''@;'; put 'put ''ZCIsImRlcGxveSIsMSwibXQtMCIsMywiY2xyTG9hZGluZyIsImNsaWNrIl0sWzEsImJ0biIsImJ0bi1wcmltYXJ5IiwibXQtMTAiLDMsImNsckxvYWRpbmciLCJjbGljayJdLFszLCJ2YWx1ZSJdLFsxLCJidG4iLCJidG4tc20iLCJidG4taWNvbiIsIm1pbi13LTAiLCJ3LTQwIiwzLCJjbGlj''@;'; put 'put ''ayJdLFsic2hhcGUiLCJkb3dubG9hZCJdLFsxLCJtYi0wIiwibXQtMTAiXSxbMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJtdC0wIiwibXItMjAiLDMsImNsaWNrIl0sWyJjbGFzcyIsImxvZy13cmFwcGVyIiw0LCJuZ0lmIl0sWzEsImJ0biIsImJ0bi1wcmltYXJ5IiwibXQtMTUiLDMsImNsaWNr''@;'; put 'put ''Il0sWyJjbGFzcyIsInZhbGlkYXRpb24tYmFyIiw0LCJuZ0lmIl0sWzEsImxvZy13cmFwcGVyIl0sWzEsInZhbGlkYXRpb24tYmFyIl0sWyJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsMSwiaXMtZXJyb3IiXSxbInNoYXBlIiwiY2hlY2stY2lyY2xlIiwxLCJpcy1zdWNjZXNzIl1dLHRl''@;'; put 'put ''bXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYobnQoMCwiZGl2IiwwKSxZdCgxLCIgQ29uZmlndXJhdG9yICIpLG50KDIsInAiLDEpLFl0KDMpLG90KCksbnQoNCwiYnV0dG9uIiwyKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuZGVsZXRlS2V5cygpfSksWXQoNSwiIENsZWFyIG1l''@;'; put 'put ''bW9yeSAiKSxvdCgpKCksbnQoNiwiZGl2IiwzKSxybig3LGJWZSwxNSwwLCJkaXYiLDQpLHJuKDgsUlZlLDQ5LDIyLCJuZy1jb250YWluZXIiLDUpLG90KCkpLDImaCYmKHV0KDMpLEppKCJBcHAgTG9jYXRpb246ICIsdi5hcHBMb2MsIiIpLHV0KDQpLFR0KCJuZ0lmIix2Lm5lZWRzTG9naW4p''@;'; put 'put ''LHV0KDEpLFR0KCJuZ0lmIiwhdi5uZWVkc0xvZ2luKSl9LGRlcGVuZGVuY2llczpbeHMsTm8scGcsJDMscTMsbTEsT2YsVHMsZGcsSXMsTGMsd2wsZ28sdyxhdCxJV10sc3R5bGVzOlsiLmNsZWFyLW1lbW9yeS1idXR0b25bX25nY29udGVudC0lQ09NUCVde3JpZ2h0OjEwcHg7dG9wOjJweH0i''@;'; put 'put ''XX0pLGR9KSgpO2Z1bmN0aW9uIFBWZShkLGcpezEmZCYmKEIwKDApLG50KDEsInNwYW4iLDIxKSxZdCgyLCIgTG9hZGluZy4uLiAiKSxvdCgpLG50KDMsInAiKSxZdCg0LCJEZXBsb3lpbmcuLi4iKSxvdCgpLFAwKCkpfWZ1bmN0aW9uIEZWZShkLGcpezEmZCYmQ3IoMCwiY2xyLWljb24iLDMy''@;'; put 'put ''KX1mdW5jdGlvbiBIVmUoZCxnKXsxJmQmJkNyKDAsImNsci1pY29uIiwzMyl9ZnVuY3Rpb24gTlZlKGQsZyl7MSZkJiZDcigwLCJjbHItaWNvbiIsMzIpfWZ1bmN0aW9uIFZWZShkLGcpezEmZCYmQ3IoMCwiY2xyLWljb24iLDMzKX1mdW5jdGlvbiBqVmUoZCxnKXtpZigxJmQmJihudCgwLCJk''@;'; put 'put ''aXYiLDI0KSxybigxLE5WZSwxLDAsImNsci1pY29uIiwyNSkscm4oMixWVmUsMSwwLCJjbHItaWNvbiIsMjYpLG50KDMsInAiKSxZdCg0LCJDcmVhdGUgZGF0YWJhc2UiKSxvdCgpKCkpLDImZCl7Y29uc3QgaD1RdCgzKTt1dCgxKSxUdCgibmdJZiIsaC5hdXRvRGVwbG95U3RhdHVzLnJ1bk1h''@;'; put 'put ''a2VEYXRhKSx1dCgxKSxUdCgibmdJZiIsITE9PT1oLmF1dG9EZXBsb3lTdGF0dXMucnVuTWFrZURhdGEpfX1mdW5jdGlvbiBaVmUoZCxnKXsxJmQmJkNyKDAsImNsci1pY29uIiwzMyl9ZnVuY3Rpb24gelZlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7QjAoMCksbnQoMSwicCIsMjIpLFl0''@;'; put 'put ''KDIsIkRvbmUiKSxvdCgpLENyKDMsImhyIiwyMyksbnQoNCwiZGl2IiwyNCkscm4oNSxGVmUsMSwwLCJjbHItaWNvbiIsMjUpLHJuKDYsSFZlLDEsMCwiY2xyLWljb24iLDI2KSxudCg3LCJwIiksWXQoOCwiRGVwbG95IFNBUyBKb2JzIiksb3QoKSgpLHJuKDksalZlLDUsMiwiZGl2IiwyNyks''@;'; put 'put ''Q3IoMTAsImhyIiwyMyksbnQoMTEsImRpdiIsMjgpKDEyLCJidXR0b24iLDI5KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoMikubmF2aWdhdGVUb0hvbWUoKSl9KSxybigxMyxaVmUsMSwwLCJjbHItaWNvbiIsMjYpLFl0KDE0LCIgTEFVTkNIIC8gQ09ORklHVVJF''@;'; put 'put ''ICIpLG90KCksbnQoMTUsImJ1dHRvbiIsMzApLEduKCJjbGljayIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KDIpO3JldHVybiBhKHkuZG93bmxvYWRGaWxlKHkubWFrZURhdGFSZXNwb25zZSwiY3JlYXRlLWRhdGFiYXNlLWxvZyIsInR4dCIpKX0pLFl0KDE2LCIgRG93bmxvYWQgbG9n''@;'; put 'put ''ICIpLG90KCkoKSxDcigxNywiaHIiLDIzKSxudCgxOCwiZGl2IiwyOCkoMTksImJ1dHRvbiIsMzEpLEduKCJjbGljayIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KDIpO3JldHVybiB5LmF1dG9kZXBsb3lpbmc9ITEsYSh5LmF1dG9kZXBsb3lEb25lPSExKX0pLFl0KDIwLCIgQ2xvc2Ug''@;'; put 'put ''Iiksb3QoKSxudCgyMSwiYnV0dG9uIiwzMSksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KDIpLm9wZW5TYXNSZXF1ZXN0c01vZGFsKCkpfSksWXQoMjIsIiBTQVMgUmVxdWVzdHMgIiksb3QoKSgpLFAwKCl9aWYoMiZkKXtjb25zdCBoPVF0KDIpO3V0KDUpLFR0KCJu''@;'; put 'put ''Z0lmIixoLmF1dG9EZXBsb3lTdGF0dXMuZGVwbG95U2VydmljZVBhY2spLHV0KDEpLFR0KCJuZ0lmIiwhaC5hdXRvRGVwbG95U3RhdHVzLmRlcGxveVNlcnZpY2VQYWNrKSx1dCgzKSxUdCgibmdJZiIsbnVsbCE9PWguYXV0b0RlcGxveVN0YXR1cy5ydW5NYWtlRGF0YSksdXQoNCksVHQoIm5n''@;'; put 'put ''SWYiLCExPT09aC5hdXRvRGVwbG95U3RhdHVzLmRlcGxveVNlcnZpY2VQYWNrfHwhMT09PWguYXV0b0RlcGxveVN0YXR1cy5ydW5NYWtlRGF0YSl9fWZ1bmN0aW9uIEdWZShkLGcpe2lmKDEmZCYmKG50KDAsImRpdiIsMTgpKDEsImRpdiIsMTkpLHJuKDIsUFZlLDUsMCwibmctY29udGFpbmVy''@;'; put 'put ''IiwyMCkscm4oMyx6VmUsMjMsNCwibmctY29udGFpbmVyIiwyMCksb3QoKSgpKSwyJmQpe2NvbnN0IGg9UXQoKTt1dCgyKSxUdCgibmdJZiIsIWguYXV0b2RlcGxveURvbmUpLHV0KDEpLFR0KCJuZ0lmIixoLmF1dG9kZXBsb3lEb25lKX19bGV0IFdWZT0oKCk9PntjbGFzcyBke2NvbnN0cnVj''@;'; put 'put ''dG9yKGgsdix5LEMpe3RoaXMuZXZlbnRTZXJ2aWNlPWgsdGhpcy5kZXBsb3lTZXJ2aWNlPXYsdGhpcy5zYXNTZXJ2aWNlPXksdGhpcy5sb2dnZXJTZXJ2aWNlPUMsdGhpcy5zYXNKc0NvbmZpZz1uZXcgVTMuU0FTanNDb25maWcsdGhpcy5hcHBMb2M9IiIsdGhpcy5kY1BhdGg9IiIsdGhpcy5z''@;'; put 'put ''ZWxlY3RlZEFkbWluR3JvdXA9IiIsdGhpcy5vbk5hdmlnYXRlVG9Ib21lPW5ldyBhcix0aGlzLm1ha2VEYXRhUmVzcG9uc2U9IiIsdGhpcy5qc29uRmlsZT1udWxsLHRoaXMuYXV0b2RlcGxveWluZz0hMSx0aGlzLmF1dG9kZXBsb3lEb25lPSExLHRoaXMucmVjcmVhdGVEYXRhYmFzZU1vZGFs''@;'; put 'put ''PSExLHRoaXMuaXNTdWJtaXR0aW5nSnNvbj0hMSx0aGlzLmlzSnNvblN1Ym1pdHRlZD0hMSx0aGlzLnJlY3JlYXRlRGF0YWJhc2U9ITEsdGhpcy5jcmVhdGVEYXRhYmFzZUxvYWRpbmc9ITEsdGhpcy5hdXRvRGVwbG95U3RhdHVzPXtkZXBsb3lTZXJ2aWNlUGFjazpudWxsLHJ1bk1ha2VEYXRh''@;'; put 'put ''Om51bGx9fW5nT25Jbml0KCl7fWV4ZWN1dGVKc29uKCl7dmFyIGg7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt0aGlzLmF1dG9kZXBsb3lpbmc9ITAsdGhpcy5pc1N1Ym1pdHRpbmdKc29uPSEwO3RyeXt5aWVsZCB0aGlzLnNhc0pzLmRlcGxveVNlcnZpY2VQYWNr''@;'; put 'put ''KHRoaXMuanNvbkZpbGUsbnVsbD09PShoPXRoaXMuZGNBZGFwdGVyU2V0dGluZ3MpfHx2b2lkIDA9PT1oP3ZvaWQgMDpoLmFwcExvYyx2b2lkIDAsdm9pZCAwLCEwKSx0aGlzLmF1dG9EZXBsb3lTdGF0dXMuZGVwbG95U2VydmljZVBhY2s9ITAsdGhpcy5pc0pzb25TdWJtaXR0ZWQ9ITB9Y2F0''@;'; put 'put ''Y2godil7bGV0IHk9IiI7cmV0dXJuIHk9InN0cmluZyIhPXR5cGVvZiB2Lm1lc3NhZ2U/SlNPTi5zdHJpbmdpZnkodikucmVwbGFjZSgvXFwvZ20sIiIpOnYubWVzc2FnZSx0aGlzLmF1dG9EZXBsb3lTdGF0dXMuZGVwbG95U2VydmljZVBhY2s9ITEsdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0lu''@;'; put 'put ''Zm9Nb2RhbCgiRGVwbG95IGVycm9yIixgRXhjZXB0aW9uOiBcbiAkeyIiIT09eT95OnZ9YCksdGhpcy5hdXRvZGVwbG95aW5nPSExLHZvaWQodGhpcy5hdXRvZGVwbG95RG9uZT0hMSl9dGhpcy5pc1N1Ym1pdHRpbmdKc29uPSExLHRoaXMucmVjcmVhdGVEYXRhYmFzZT90aGlzLmNyZWF0ZURh''@;'; put 'put ''dGFiYXNlKCk6dGhpcy5hdXRvZGVwbG95RG9uZT0hMH0pfWNyZWF0ZURhdGFiYXNlKCl7dGhpcy5zYXNKcy5yZXF1ZXN0KCJzZXJ2aWNlcy9hZG1pbi9tYWtlZGF0YSIse2Zyb21qczpbe0FETUlOOnRoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwLERDUEFUSDp0aGlzLmRjUGF0aH1dfSx7dXNlQ29t''@;'; put 'put ''cHV0ZUFwaTohMSxjb250ZXh0TmFtZTp0aGlzLnNhc0pzQ29uZmlnLmNvbnRleHROYW1lLGRlYnVnOiEwfSwoKT0+e3RoaXMuc2FzU2VydmljZS5zaG91bGRMb2dpbi5uZXh0KCEwKX0pLnRoZW4oeT0+e3RoaXMuYXV0b2RlcGxveURvbmU9ITA7dHJ5e3RoaXMubWFrZURhdGFSZXNwb25zZT1K''@;'; put 'put ''U09OLnN0cmluZ2lmeSh5KX1jYXRjaChDKXt0aGlzLm1ha2VEYXRhUmVzcG9uc2U9eX10aGlzLmF1dG9EZXBsb3lTdGF0dXMucnVuTWFrZURhdGE9ISEoeS5yZXN1bHQmJnkucmVzdWx0Lmxlbmd0aD4wKX0pLmNhdGNoKHk9Pnt0aGlzLmF1dG9EZXBsb3lTdGF0dXMucnVuTWFrZURhdGE9ITEs''@;'; put 'put ''dGhpcy5hdXRvZGVwbG95RG9uZT0hMDt0cnl7dGhpcy5tYWtlRGF0YVJlc3BvbnNlPUpTT04uc3RyaW5naWZ5KHkpfWNhdGNoKEMpe3RoaXMubWFrZURhdGFSZXNwb25zZT15fX0pfWRvd25sb2FkRmlsZShoLHYseT0idHh0Iil7dGhpcy5kZXBsb3lTZXJ2aWNlLmRvd25sb2FkRmlsZShoLHYs''@;'; put 'put ''eSl9b25Kc29uRmlsZUNoYW5nZShoKXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCB2PWgudGFyZ2V0LmZpbGVzWzBdO3RoaXMuanNvbkZpbGU9eWllbGQgdGhpcy5kZXBsb3lTZXJ2aWNlLnJlYWRGaWxlKHYpfSl9cmVjcmVhdGVEYXRhYmFzZUNsaWNrZWQo''@;'; put 'put ''aCl7ITA9PT1oLnRhcmdldC5jaGVja2VkJiYodGhpcy5yZWNyZWF0ZURhdGFiYXNlTW9kYWw9ITApfWNsZWFyVXBsb2FkSW5wdXQoaCl7dGhpcy5kZXBsb3lTZXJ2aWNlLmNsZWFyVXBsb2FkSW5wdXQoaCl9b3BlblNhc1JlcXVlc3RzTW9kYWwoKXt0aGlzLmV2ZW50U2VydmljZS5vcGVuUmVx''@;'; put 'put ''dWVzdHNNb2RhbCgpfW5hdmlnYXRlVG9Ib21lKCl7dGhpcy5vbk5hdmlnYXRlVG9Ib21lLmVtaXQoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QobXUpLEt0KEd3ZSksS3QoZzIpLEt0KHNjKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2Vs''@;'; put 'put ''ZWN0b3JzOltbImFwcC1hdXRvbWF0aWMtZGVwbG95Il1dLGlucHV0czp7c2FzSnM6InNhc0pzIixzYXNKc0NvbmZpZzoic2FzSnNDb25maWciLGRjQWRhcHRlclNldHRpbmdzOiJkY0FkYXB0ZXJTZXR0aW5ncyIsYXBwTG9jOiJhcHBMb2MiLGRjUGF0aDoiZGNQYXRoIixzZWxlY3RlZEFkbWlu''@;'; put 'put ''R3JvdXA6InNlbGVjdGVkQWRtaW5Hcm91cCJ9LG91dHB1dHM6e29uTmF2aWdhdGVUb0hvbWU6Im9uTmF2aWdhdGVUb0hvbWUifSxkZWNsczo0Nix2YXJzOjEwLGNvbnN0czpbWyJjbGFzcyIsImF1dG8tZGVwbG95Iiw0LCJuZ0lmIl0sWzEsInRleHQtY2VudGVyIiwibXktMTUiXSxbImZvciIs''@;'; put 'put ''ImRjbG9jIiwxLCJtdC0yMCIsImNsci1jb250cm9sLWxhYmVsIl0sWzEsIm1iLTEwIiwiY2xyLWNvbnRyb2wtY29udGFpbmVyIl0sWzEsImNsci1pbnB1dC13cmFwcGVyIl0sWzEsIm10LTAiXSxbMSwiY2xyLWNoZWNrYm94LXdyYXBwZXIiXSxbInR5cGUiLCJjaGVja2JveCIsImlkIiwicmVj''@;'; put 'put ''cmVhdGVkYi1jaGVja2JveCIsImNoZWNrZWQiLCIiLDEsImNsci1jaGVja2JveCIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiLCJjbGljayJdLFsiZm9yIiwicmVjcmVhdGVkYi1jaGVja2JveCJdLFsxLCJidG4tYXV0b2RlcGxveSIsImJ0biIsImJ0bi1wcmltYXJ5IiwiZC1pbmxpbmUt''@;'; put 'put ''YmxvY2siLCJtci0xMCIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsxLCJidG4tYXV0b2RlcGxveSIsImJ0biIsImJ0bi1wcmltYXJ5IiwiZC1pbmxpbmUtYmxvY2siLCJtci0xMCIsMywiY2xpY2siXSxbInR5cGUiLCJmaWxlIiwiaGlkZGVuIiwiIiwzLCJjbGljayIsImNoYW5nZSJdLFsidXBs''@;'; put 'put ''b2FkSnNvbkF1dG8iLCIiXSxbMywiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxDbG9zYWJsZSIsImNsck1vZGFsT3BlbkNoYW5nZSJdLFsxLCJtb2RhbC10aXRsZSJdLFsxLCJtb2RhbC1ib2R5Il0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwi''@;'; put 'put ''YnRuLXByaW1hcnkiLDMsImNsaWNrIl0sWzEsImF1dG8tZGVwbG95Il0sWzEsInNwaW5uZXItYm94Il0sWzQsIm5nSWYiXSxbMSwic3Bpbm5lciIsInNwaW5uZXItbWQiXSxbMSwibS0wIiwiYWxpZ24tc2VsZi1zdGFydCJdLFsxLCJ3LTEwMCJdLFsxLCJkZXBsb3ktc3RhdHVzLXJvdyJdLFsi''@;'; put 'put ''Y2xhc3MiLCJkZXBsb3ktc3VjY2VzcyIsInNoYXBlIiwic3VjY2Vzcy1zdGFuZGFyZCIsNCwibmdJZiJdLFsiY2xhc3MiLCJkZXBsb3ktZXJyb3IiLCJzaGFwZSIsInRpbWVzLWNpcmNsZSIsNCwibmdJZiJdLFsiY2xhc3MiLCJkZXBsb3ktc3RhdHVzLXJvdyIsNCwibmdJZiJdLFsxLCJidXR0''@;'; put 'put ''b25zIl0sWzEsImJ0biIsImJ0bi1wcmltYXJ5IiwibXQtMTUiLCJtci0wIiwzLCJjbGljayJdLFsxLCJidG4iLCJidG4tcHJpbWFyeS1vdXRsaW5lIiwibXQtMTUiLCJtci0wIiwzLCJjbGljayJdLFsxLCJidG4iLCJidG4tcHJpbWFyeS1vdXRsaW5lIiwibXQtMTUiLCJtci0wIiwiYWxpZ24t''@;'; put 'put ''c2VsZi1lbmQiLDMsImNsaWNrIl0sWyJzaGFwZSIsInN1Y2Nlc3Mtc3RhbmRhcmQiLDEsImRlcGxveS1zdWNjZXNzIl0sWyJzaGFwZSIsInRpbWVzLWNpcmNsZSIsMSwiZGVwbG95LWVycm9yIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7aWYoMSZoKXtjb25zdCB5PXdpKCk7cm4oMCxHVmUs''@;'; put 'put ''NCwyLCJkaXYiLDApLG50KDEsImg0IiwxKSxZdCgyLCJWaXlhIERlcGxveSIpLG90KCksQ3IoMywiaHIiKSxudCg0LCJsYWJlbCIsMiksWXQoNSwiQXBwIExvYyIpLG90KCksbnQoNiwiZGl2IiwzKSg3LCJkaXYiLDQpKDgsInAiLDUpLFl0KDkpLG90KCkoKSgpLG50KDEwLCJsYWJlbCIsMiks''@;'; put 'put ''WXQoMTEsIkRDIExvYyIpLG90KCksbnQoMTIsImRpdiIsMykoMTMsImRpdiIsNCkoMTQsInAiLDUpLFl0KDE1KSxvdCgpKCkoKSxudCgxNiwibGFiZWwiLDIpLFl0KDE3LCJTQVMgQWRtaW4gZ3JvdXAiKSxvdCgpLG50KDE4LCJkaXYiLDMpKDE5LCJkaXYiLDQpKDIwLCJwIiw1KSxZdCgyMSks''@;'; put 'put ''b3QoKSgpKCksbnQoMjIsImRpdiIsNikoMjMsImlucHV0Iiw3KSxHbigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oSSl7cmV0dXJuIHYucmVjcmVhdGVEYXRhYmFzZT1JfSkoImNsaWNrIixmdW5jdGlvbihJKXtyZXR1cm4gdi5yZWNyZWF0ZURhdGFiYXNlQ2xpY2tlZChJKX0pLG90KCksbnQo''@;'; put 'put ''MjQsImxhYmVsIiw4KSxZdCgyNSwiUmVjcmVhdGUgZGF0YWJhc2UiKSxvdCgpKCksQ3IoMjYsImhyIiksbnQoMjcsImJ1dHRvbiIsOSksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LmV4ZWN1dGVKc29uKCl9KSxZdCgyOCksb3QoKSxudCgyOSwiYnV0dG9uIiwxMCksR24oImNsaWNr''@;'; put 'put ''IixmdW5jdGlvbigpe3JldHVybiBpdCh5KSxhKHZhKDMyKS5jbGljaygpKX0pLFl0KDMwLCIgVXBsb2FkIGRpZmZlcmVudCBmaWxlIHRvIGRlcGxveVxuIiksb3QoKSxudCgzMSwiaW5wdXQiLDExLDEyKSxHbigiY2xpY2siLGZ1bmN0aW9uKEkpe3JldHVybiB2LmNsZWFyVXBsb2FkSW5wdXQo''@;'; put 'put ''SSl9KSgiY2hhbmdlIixmdW5jdGlvbihJKXtyZXR1cm4gdi5vbkpzb25GaWxlQ2hhbmdlKEkpfSksb3QoKSxudCgzMywiY2xyLW1vZGFsIiwxMyksR24oImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oSSl7cmV0dXJuIHYucmVjcmVhdGVEYXRhYmFzZU1vZGFsPUl9KSxudCgzNCwiaDMi''@;'; put 'put ''LDE0KSxZdCgzNSwiV2FybmluZyIpLG90KCksbnQoMzYsImRpdiIsMTUpLFl0KDM3LCIgVGhpcyBhY3Rpb24gd2lsbCByZWNyZWF0ZSB0aGUgZGF0YWJhc2UgKGlmIGl0IGV4aXN0cykuIEZvciBhbiBpbml0aWFsIGRlcGxveW1lbnQsIHRoaXMgaXMgZXhwZWN0ZWQuIElmIHRoaXMgaXMgYSBy''@;'; put 'put ''ZS1kZXBsb3ltZW50LCB5b3Ugd2lsbCBsb3NlIGFueSBleGlzdGluZyB0YWJsZXMgaW4gIiksbnQoMzgsInN0cm9uZyIpLFl0KDM5KSxvdCgpLFl0KDQwLCIuICIpLG90KCksbnQoNDEsImRpdiIsMTYpKDQyLCJidXR0b24iLDE3KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYucmVj''@;'; put 'put ''cmVhdGVEYXRhYmFzZU1vZGFsPSExLHYucmVjcmVhdGVEYXRhYmFzZT0hMX0pLFl0KDQzLCIgQ2FuY2VsICIpLG90KCksbnQoNDQsImJ1dHRvbiIsMTcpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5yZWNyZWF0ZURhdGFiYXNlTW9kYWw9ITEsdi5yZWNyZWF0ZURhdGFiYXNlPSEw''@;'; put 'put ''fSksWXQoNDUsIiBPayAiKSxvdCgpKCkoKX0yJmgmJihUdCgibmdJZiIsdi5hdXRvZGVwbG95aW5nKSx1dCg5KSxqaSh2LmFwcExvYyksdXQoNiksamkodi5kY1BhdGgpLHV0KDYpLGppKHYuc2VsZWN0ZWRBZG1pbkdyb3VwKSx1dCgyKSxUdCgibmdNb2RlbCIsdi5yZWNyZWF0ZURhdGFiYXNl''@;'; put 'put ''KSx1dCg0KSxUdCgiZGlzYWJsZWQiLCF2Lmpzb25GaWxlKSx1dCgxKSxKaSgiIERlcGxveSAiLHYuanNvbkZpbGU/IiI6Iihqc29uIGZpbGUgaXMgbm90IGF2YWlsYWJsZSkiLCJcbiIpLHV0KDUpLFR0KCJjbHJNb2RhbE9wZW4iLHYucmVjcmVhdGVEYXRhYmFzZU1vZGFsKSgiY2xyTW9kYWxD''@;'; put 'put ''bG9zYWJsZSIsITEpLHV0KDYpLGppKHYuZGNQYXRoKSl9LGRlcGVuZGVuY2llczpbTm8sSWYsVHMsSXMsd2wsaWQsb2QsYXRdLHN0eWxlczpbIi5hdXRvLWRlcGxveVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2Vu''@;'; put 'put ''dGVyO3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MDtyaWdodDowO3RvcDowO2JvdHRvbTowO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuNCk7ei1pbmRleDoxMDB9LnNwaW5uZXItYm94W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDo0MDBweDtwYWRkaW5nOjIwcHg7Ym9yZGVyLXJhZGl1czozcHg7YmFj''@;'; put 'put ''a2dyb3VuZDojZmZmO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Ym94LXNoYWRvdzoxcHggMXB4IDhweCAjMDAwMDAwODJ9LnNwaW5uZXItYm94W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5idXR0b25z''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47d2lkdGg6MTAwJX0uZGVwbG95LXN0YXR1cy1yb3dbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0''@;'; put 'put ''fS5kZXBsb3ktc3RhdHVzLXJvd1tfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDAgMTBweH0uZGVwbG95LXN1Y2Nlc3NbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2ZWNmNDR9LmRlcGxveS1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29s''@;'; put 'put ''b3I6I2U3NGMzY30uZGVwbG95LXVuZGV0ZXJtaW5hdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojY2FjYWNhfWhyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4yNzA1ODgyMzUzKX0iXX0pLGR9KSgpO2Z1bmN0aW9u''@;'; put 'put ''IFlWZShkLGcpezEmZCYmKG50KDAsImRpdiIsMTUpLENyKDEsInByb2dyZXNzIiksb3QoKSl9ZnVuY3Rpb24gVVZlKGQsZyl7aWYoMSZkJiYobnQoMCwib3B0aW9uIiwxNiksWXQoMSksb3QoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O1R0KCJ2YWx1ZSIsaC5HUk9VUE5BTUUpLHV0KDEp''@;'; put 'put ''LEZoKCIgIixoLkdST1VQTkFNRSwiIC0gIixoLkdST1VQREVTQywiICIpfX1sZXQgUVZlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2KXt0aGlzLnNhc1NlcnZpY2U9aCx0aGlzLnNhc2pzU2VydmljZT12LHRoaXMuc2FzSnNDb25maWc9bmV3IFUzLlNBU2pzQ29uZmlnLHRoaXMub25O''@;'; put 'put ''YXZpZ2F0ZVRvSG9tZT1uZXcgYXIsdGhpcy5kY0RpcmVjdG9yeT0iIix0aGlzLmRjQWRtaW5Hcm91cD0iRENERUZBVUxUIix0aGlzLk1FVEFQRVJTT049Im4vYSIsdGhpcy5NRVRBVVNFUj0ibi9hIix0aGlzLlNZU1VTRVJJRD0ibi9hIix0aGlzLlNZU0hPU1ROQU1FPSJuL2EiLHRoaXMuU1lT''@;'; put 'put ''VkxPTkc9Im4vYSIsdGhpcy5kY0FkbWluR3JvdXBMaXN0PVtdLHRoaXMubG9hZGluZz0hMSx0aGlzLnNob3dMb2dvdXQ9ITEsdGhpcy50bXBEaXJlY3Rvcmllcz17bGludXg6Ii90bXAvRGF0YUNvbnRyb2xsZXIiLHdpbmRvd3M6IkM6XFxEYXRhQ29udHJvbGxlciJ9fW5nT25Jbml0KCl7dGhp''@;'; put 'put ''cy5nZXRVc2VyR3JvdXBzKCksdGhpcy5nZXRTZXJ2ZXJJbmZvKCl9Z2V0U2VydmVySW5mbygpe3RoaXMuc2FzanNTZXJ2aWNlLmdldFNlcnZlckluZm8oKS5zdWJzY3JpYmUoaD0+eyJkZXNrdG9wIiE9PWgubW9kZSYmKHRoaXMuc2hvd0xvZ291dD0hMCl9KX1nZXRVc2VyR3JvdXBzKCl7dGhp''@;'; put 'put ''cy5sb2FkaW5nPSEwLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJ1c2VybmF2L3VzZXJncm91cHNieW1lbWJlciIsbnVsbCkudGhlbihoPT57dGhpcy5NRVRBUEVSU09OPWguTUZfR0VUVVNFUix0aGlzLlNZU1VTRVJJRD1oLlNZU1VTRVJJRCx0aGlzLlNZU0hPU1ROQU1FPWguU1lTSE9TVE5B''@;'; put 'put ''TUUsdGhpcy5TWVNWTE9ORz1oLlNZU1ZMT05HLHRoaXMuZGNEaXJlY3Rvcnk9dGhpcy50bXBEaXJlY3Rvcmllc1tbIkwiLCJIIiwiQSIsIlMiXS5pbmNsdWRlcyhoLlNZU1NDUEwuc3Vic3RyaW5nKDAsMSkpPyJsaW51eCI6IndpbmRvd3MiXSx0aGlzLmRjQWRtaW5Hcm91cExpc3Q9aC5ncm91''@;'; put 'put ''cHMsdGhpcy5kY0FkbWluR3JvdXA9dGhpcy5kY0FkbWluR3JvdXBMaXN0WzBdLkdST1VQTkFNRSx0aGlzLmxvYWRpbmc9ITF9LGg9Pnt0aGlzLmxvYWRpbmc9ITF9KX1tYWtlRGF0YSgpe2xldCB2PXRoaXMuc2FzU2VydmljZS5nZXRFeGVjdXRpb25QYXRoKCk7Y29uc3QgeT10aGlzLnNhc0pz''@;'; put 'put ''Q29uZmlnLmFwcExvYztsZXQgQz10aGlzLnNhc0pzQ29uZmlnLnNlcnZlclVybCxJPXRoaXMuZGNEaXJlY3Rvcnk7dGhpcy5zYXNKc0NvbmZpZy5zZXJ2ZXJUeXBlPT09SHUuRC5TYXNqcz90aGlzLnNhc1NlcnZpY2Uuc2FzanNNYWtlZGF0YUNoZWNraW5nKCkudGhlbih1ZT0+e3VlJiZsb2Nh''@;'; put 'put ''dGlvbi5yZWxvYWQoKX0pOnRoaXMuc2FzSnNDb25maWcuc2VydmVyVHlwZT09PUh1LkQuU2FzOSYmKEM9IiIsdj13aW5kb3cubG9jYXRpb24ub3JpZ2luK3YrIi8iLEk9ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuZGNEaXJlY3RvcnkpKSx3aW5kb3cub3BlbihgJHtDfHwiIn0ke3Z9P19wcm9n''@;'; put 'put ''cmFtPSR7eX0vc2VydmljZXMvYWRtaW4vbWFrZWRhdGEmYWRtaW49JHt0aGlzLmRjQWRtaW5Hcm91cH0mcGF0aD0ke0l9IGAsIl9ibGFuayIpfWxvZ291dCgpe3RoaXMuc2FzU2VydmljZS5sb2dvdXQoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCko''@;'; put 'put ''S3QoZzIpLEt0KGlRKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1zYXNqcy1jb25maWd1cmF0b3IiXV0saW5wdXRzOntzYXNKczoic2FzSnMiLHNhc0pzQ29uZmlnOiJzYXNKc0NvbmZpZyIsZGNBZGFwdGVyU2V0dGluZ3M6ImRjQWRhcHRlclNldHRpbmdzIn0s''@;'; put 'put ''b3V0cHV0czp7b25OYXZpZ2F0ZVRvSG9tZToib25OYXZpZ2F0ZVRvSG9tZSJ9LGRlY2xzOjQxLHZhcnM6OSxjb25zdHM6W1siY2xhc3MiLCJ0aGluUHJvZ3Jlc3MgcHJvZ3Jlc1N0YXRpYyBwcm9ncmVzcyBsb29wIiw0LCJuZ0lmIl0sWzEsInRleHQtY2VudGVyIiwibXktMTUiXSxbMSwibGln''@;'; put 'put ''aHQiXSxbMSwibS0wIl0sWzEsIm0tMCIsIm10LTEwIl0sWzEsIm10LTIwIiwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbMSwibWItMTAiLCJjbHItY29udHJvbC1jb250YWluZXIiXSxbMSwiY2xyLWlucHV0LXdyYXBwZXIiXSxbInBsYWNlaG9sZGVyIiwiVHlwZSBpbiBkaXJlY3RvcnkiLDEsImNs''@;'; put 'put ''ci1pbnB1dCIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbMSwibWItMTAiLCJtdC0wIiwidy01MHZ3Il0sWyJjbHJTZWxlY3QiLCIiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIl0sWzMsInZhbHVlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiY2xyLWZsZXgiXSxbMSwiYnRu''@;'; put 'put ''IiwiYnRuLXN1Y2Nlc3MiLCJtdC0xNSIsInRleHQtY2VudGVyIiwzLCJjbGljayJdLFsxLCJjYXJkLXRleHQiLCJwYi0xMCJdLFsxLCJ0aGluUHJvZ3Jlc3MiLCJwcm9ncmVzU3RhdGljIiwicHJvZ3Jlc3MiLCJsb29wIl0sWzMsInZhbHVlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZo''@;'; put 'put ''JiYocm4oMCxZVmUsMiwwLCJkaXYiLDApLG50KDEsImg0IiwxKSxZdCgyLCJTYXNqcyBEZXBsb3kiKSxvdCgpLENyKDMsImhyIiwyKSxudCg0LCJwIiwzKSxZdCg1LCIgVG8gY29uZmlndXJlIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhOSwgcGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2lu''@;'; put 'put ''ZyBkZXRhaWxzOlxuIiksb3QoKSxudCg2LCJwIiw0KSxZdCg3LCIgUGxlYXNlIHNwZWNpZnkgYSBwaHlzaWNhbCBkaXJlY3RvcnkgYmVsb3csIHRvIHdoaWNoIHVzZXIgIiksbnQoOCwic3Ryb25nIiksWXQoOSksb3QoKSxZdCgxMCwiIGNhbiB3cml0ZSwgb24gYmVoYWxmIG9mIERhdGEgQ29u''@;'; put 'put ''dHJvbGxlcjpcbiIpLG90KCksbnQoMTEsImxhYmVsIiw1KSxZdCgxMiwiREMgRGlyZWN0b3J5Iiksb3QoKSxudCgxMywiZGl2Iiw2KSgxNCwiZGl2Iiw3KSgxNSwiaW5wdXQiLDgpLEduKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5kY0RpcmVjdG9yeT1DfSksb3QoKSgp''@;'; put 'put ''KCksbnQoMTYsInAiLDQpLFl0KDE3LCIgQmVsb3cgYXJlIHRoZSBsaXN0IG9mIGdyb3VwcyB0byB3aGljaCB5b3UgYmVsb25nLiBUaGUgZ3JvdXAgeW91IHNlbGVjdCB3aWxsIGJlY29tZSB0aGUgRGF0YSBDb250cm9sbGVyIEFkbWluIEdyb3VwLCBhbmQgZXZlcnlvbmUgaW4gaXQgd2lsbCBo''@;'; put 'put ''YXZlIHVucmVzdHJpY3RlZCBhY2Nlc3MgdG8gRGF0YSBDb250cm9sbGVyLlxuIiksb3QoKSxudCgxOCwibGFiZWwiLDUpLFl0KDE5LCJEYXRhIENvbnRyb2xsZXIgQWRtaW4gZ3JvdXAiKSxvdCgpLG50KDIwLCJjbHItc2VsZWN0LWNvbnRhaW5lciIsOSkoMjEsInNlbGVjdCIsMTApLEduKCJu''@;'; put 'put ''Z01vZGVsQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5kY0FkbWluR3JvdXA9Q30pLHJuKDIyLFVWZSwyLDMsIm9wdGlvbiIsMTEpLG90KCkoKSxudCgyMywicCIsNCksWXQoMjQsIiBOb3csIGNyZWF0ZSB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBhbmQgZGVwbG95IHRoZSBjb250cm9sIGxp''@;'; put 'put ''YnJhcnkgdXNpbmcgdGhlIGFkbWluIGdyb3VwIHNlbGVjdGVkIGFib3ZlOlxuIiksb3QoKSxudCgyNSwiZGl2IiwxMikoMjYsImJ1dHRvbiIsMTMpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5tYWtlRGF0YSgpfSksWXQoMjcsIiBTVUJNSVQgIiksb3QoKSgpLENyKDI4LCJociIs''@;'; put 'put ''MiksbnQoMjksImRpdiIsMTQpKDMwLCJwIiksWXQoMzEsIllvdSBhcmUgY29ubmVjdGVkIHdpdGggdGhlIGZvbGxvd2luZyBjcmVkZW50aWFsczoiKSxvdCgpLG50KDMyLCJ1bCIpKDMzLCJsaSIpLFl0KDM0KSxvdCgpLG50KDM1LCJsaSIpLFl0KDM2KSxvdCgpLG50KDM3LCJsaSIpLFl0KDM4''@;'; put 'put ''KSxvdCgpLG50KDM5LCJsaSIpLFl0KDQwKSxvdCgpKCkoKSksMiZoJiYoVHQoIm5nSWYiLHYubG9hZGluZyksdXQoOSksamkodi5TWVNVU0VSSUQpLHV0KDYpLFR0KCJuZ01vZGVsIix2LmRjRGlyZWN0b3J5KSx1dCg2KSxUdCgibmdNb2RlbCIsdi5kY0FkbWluR3JvdXApLHV0KDEpLFR0KCJu''@;'; put 'put ''Z0Zvck9mIix2LmRjQWRtaW5Hcm91cExpc3QpLHV0KDEyKSxKaSgiTUVUQVBFUlNPTjogIix2Lk1FVEFQRVJTT04sIiIpLHV0KDIpLEppKCJTWVNVU0VSSUQ6ICIsdi5TWVNVU0VSSUQsIiIpLHV0KDIpLEppKCJTWVNIT1NUTkFNRTogIix2LlNZU0hPU1ROQU1FLCIiKSx1dCgyKSxKaSgiU1lT''@;'; put 'put ''VkxPTkc6ICIsdi5TWVNWTE9ORywiIikpfSxkZXBlbmRlbmNpZXM6W3hzLE5vLCQzLHEzLG0xLE9mLFRzLElzLGF0LG9aLGlaXSxzdHlsZXM6WyIuY2xyLWNvbnRyb2wtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDo1MHZ3fS5jbHItaW5wdXQtd3JhcHBlcltfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV0sIC5jbHItaW5wdXQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0udGhpblByb2dyZXNzW19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OjBweDtyaWdodDowO3dpZHRoOnVuc2V0O2hlaWdodDoxcHg7bWFyZ2lu''@;'; put 'put ''LXRvcDowIWltcG9ydGFudH0udGhpblByb2dyZXNzW19uZ2NvbnRlbnQtJUNPTVAlXTphZnRlcnt0b3A6MH0iXX0pLGR9KSgpO2Z1bmN0aW9uIEpWZShkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImRpdiIsNCkoMSwiZGl2Iiw1KSxZdCgyLCJUZXJtcyBhbmQgQ29uZGl0aW9ucyIp''@;'; put 'put ''LG90KCksbnQoMywiZGl2Iiw2KSg0LCJkaXYiLDcpKDUsInAiKSxZdCg2LCIgVGhlIERlbW8gdmVyc2lvbiBvZiBEYXRhIENvbnRyb2xsZXIgaXMgZnJlZSBmb3IgRVZBTFVBVElPTiBwdXJwb3NlcyBvbmx5LiBCZWZvcmUgcHJvY2VlZGluZyB3aXRoIGNvbmZpZ3VyYXRpb24sIHBsZWFzZSBj''@;'; put 'put ''b25maXJtIHRoYXQgeW91IGhhdmUgcmVhZCwgdW5kZXJzdG9vZCwgYW5kIGFncmVlZCB0byB0aGUgIiksbnQoNywiYSIsOCksWXQoOCwiRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGE5IEV2YWx1YXRpb24gQWdyZWVtZW50Iiksb3QoKSxZdCg5LCIuICIpLG90KCkoKSxDcigxMCwiaHIiLDkp''@;'; put 'put ''LG50KDExLCJkaXYiLDEwKSgxMiwiaW5wdXQiLDExKSxHbigiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkudGVybXNBZ3JlZUNoYW5nZSgpKX0pLG90KCksbnQoMTMsImxhYmVsIiwxMiksWXQoMTQsIkkgaGF2ZSByZWFkIGFuZCBhZ3JlZSB0byB0aGUgdGVybXMgb2Yg''@;'; put 'put ''dGhlICIpLG50KDE1LCJhIiw4KSxZdCgxNiwiRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGE5IEV2YWx1YXRpb24gQWdyZWVtZW50Iiksb3QoKSgpKCkoKSgpfX1mdW5jdGlvbiBYVmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJkaXYiLDE3KSgxLCJhcHAtYXV0b21hdGljLWRl''@;'; put 'put ''cGxveSIsMTgpLEduKCJvbk5hdmlnYXRlVG9Ib21lIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KDMpLm9uTmF2aWdhdGVUb0hvbWUoKSl9KSxvdCgpKCl9aWYoMiZkKXtjb25zdCBoPVF0KDMpO3V0KDEpLFR0KCJzYXNKcyIsaC5zYXNKcykoInNhc0pzQ29uZmlnIixoLnNhc0pzQ29u''@;'; put 'put ''ZmlnKSgiZGNBZGFwdGVyU2V0dGluZ3MiLGguZGNBZGFwdGVyU2V0dGluZ3MpKCJhcHBMb2MiLGguYXBwTG9jKSgiZGNQYXRoIixoLmRjUGF0aCkoInNlbGVjdGVkQWRtaW5Hcm91cCIsaC5zZWxlY3RlZEFkbWluR3JvdXApfX1mdW5jdGlvbiBLVmUoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2ko''@;'; put 'put ''KTtudCgwLCJkaXYiLDE5KSgxLCJhcHAtbWFudWFsLWRlcGxveSIsMjApLEduKCJvbk5hdmlnYXRlVG9Ib21lIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KDMpLm9uTmF2aWdhdGVUb0hvbWUoKSl9KSxvdCgpKCl9aWYoMiZkKXtjb25zdCBoPVF0KDMpO3V0KDEpLFR0KCJzYXNKcyIs''@;'; put 'put ''aC5zYXNKcykoInNhc0pzQ29uZmlnIixoLnNhc0pzQ29uZmlnKSgiZGNBZGFwdGVyU2V0dGluZ3MiLGguZGNBZGFwdGVyU2V0dGluZ3MpfX1mdW5jdGlvbiAkVmUoZCxnKXtpZigxJmQmJihCMCgwKSxybigxLFhWZSwyLDYsImRpdiIsMTUpLHJuKDIsS1ZlLDIsMywiZGl2IiwxNiksUDAoKSks''@;'; put 'put ''MiZkKXtjb25zdCBoPVF0KDIpO3V0KDEpLFR0KCJuZ0lmIixoLmF1dG9kZXBsb3kpLHV0KDEpLFR0KCJuZ0lmIiwhaC5hdXRvZGVwbG95KX19ZnVuY3Rpb24gcVZlKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7QjAoMCksbnQoMSwiZGl2IiwxNykoMiwiYXBwLXNhc2pzLWNvbmZpZ3VyYXRv''@;'; put 'put ''ciIsMjApLEduKCJvbk5hdmlnYXRlVG9Ib21lIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KDIpLm9uTmF2aWdhdGVUb0hvbWUoKSl9KSxvdCgpKCksUDAoKX1pZigyJmQpe2NvbnN0IGg9UXQoMik7dXQoMiksVHQoInNhc0pzIixoLnNhc0pzKSgic2FzSnNDb25maWciLGguc2FzSnND''@;'; put 'put ''b25maWcpKCJkY0FkYXB0ZXJTZXR0aW5ncyIsaC5kY0FkYXB0ZXJTZXR0aW5ncyl9fWZ1bmN0aW9uIGVqZShkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO0IwKDApLG50KDEsImRpdiIsMTcpKDIsImFwcC1zYXNqcy1jb25maWd1cmF0b3IiLDIwKSxHbigib25OYXZpZ2F0ZVRvSG9tZSIsZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgyKS5vbk5hdmlnYXRlVG9Ib21lKCkpfSksb3QoKSgpLFAwKCl9aWYoMiZkKXtjb25zdCBoPVF0KDIpO3V0KDIpLFR0KCJzYXNKcyIsaC5zYXNKcykoInNhc0pzQ29uZmlnIixoLnNhc0pzQ29uZmlnKSgiZGNBZGFwdGVyU2V0dGluZ3MiLGguZGNB''@;'; put 'put ''ZGFwdGVyU2V0dGluZ3MpfX1mdW5jdGlvbiB0amUoZCxnKXtpZigxJmQmJihCMCgwLDEzKSxybigxLCRWZSwzLDIsIm5nLWNvbnRhaW5lciIsMTQpLHJuKDIscVZlLDMsMywibmctY29udGFpbmVyIiwxNCkscm4oMyxlamUsMywzLCJuZy1jb250YWluZXIiLDE0KSxQMCgpKSwyJmQpe2NvbnN0''@;'; put 'put ''IGg9UXQoKTtUdCgibmdTd2l0Y2giLCEwKSx1dCgxKSxUdCgibmdTd2l0Y2hDYXNlIixoLnNhc0pzQ29uZmlnLnNlcnZlclR5cGU9PT1oLlNlcnZlclR5cGUuU2FzVml5YSksdXQoMSksVHQoIm5nU3dpdGNoQ2FzZSIsaC5zYXNKc0NvbmZpZy5zZXJ2ZXJUeXBlPT09aC5TZXJ2ZXJUeXBlLlNh''@;'; put 'put ''c2pzKSx1dCgxKSxUdCgibmdTd2l0Y2hDYXNlIixoLnNhc0pzQ29uZmlnLnNlcnZlclR5cGU9PT1oLlNlcnZlclR5cGUuU2FzOSl9fWxldCBXd2U9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDKXt2YXIgSTt0aGlzLmFwcFN0b3JlU2VydmljZT1oLHRoaXMuc2FzU2VydmljZT12''@;'; put 'put ''LHRoaXMubG9nZ2VyU2VydmljZT15LHRoaXMucm91dGVyPUMsdGhpcy5zdGVwPTAsdGhpcy5hZG1pbkdyb3Vwcz1bXSx0aGlzLmNsaWVudF9pZD0iIix0aGlzLmNsaWVudF9zZWNyZXQ9IiIsdGhpcy5hcHBMb2M9IiIsdGhpcy5kY1BhdGg9IiIsdGhpcy5zZWxlY3RlZEFkbWluR3JvdXA9IiIs''@;'; put 'put ''dGhpcy5hdXRvZGVwbG95PSEwLHRoaXMuanNvbkZpbGU9bnVsbCx0aGlzLnNhc0pzQ29uZmlnPW5ldyBVMy5TQVNqc0NvbmZpZyx0aGlzLlNlcnZlclR5cGU9SHUuRCx0aGlzLmRjQWRhcHRlclNldHRpbmdzPXRoaXMuYXBwU3RvcmVTZXJ2aWNlLmdldERjQWRhcHRlclNldHRpbmdzKCksdGhp''@;'; put 'put ''cy5yb3V0ZXIudXJsLmluY2x1ZGVzKCJtYW51YWxkZXBsb3kiKSYmKHRoaXMuYXV0b2RlcGxveT0hMSksdGhpcy5zYXNKcz10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNJbnN0YW5jZSgpLHRoaXMuc2FzSnNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksdGhpcy5hcHBM''@;'; put 'put ''b2M9KG51bGw9PT0oST10aGlzLmRjQWRhcHRlclNldHRpbmdzKXx8dm9pZCAwPT09ST92b2lkIDA6SS5hcHBMb2MpfHwiIix0aGlzLmNsaWVudF9pZD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiZGVwbG95X2NsaWVudF9pZCIpfHwiIix0aGlzLmNsaWVudF9zZWNyZXQ9bG9jYWxTdG9yYWdlLmdl''@;'; put 'put ''dEl0ZW0oImRlcGxveV9zZWNyZXRfa2V5Iil8fCIiLHRoaXMuZGNQYXRoPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJkZXBsb3lfZGNfbG9jIil8fCIifW5nT25Jbml0KCl7dGhpcy5zYXNKc0NvbmZpZy5zZXJ2ZXJUeXBlPT09SHUuRC5TYXNWaXlhJiZmZXRjaCgic2FzYnVpbGQvdml5YS5qc29u''@;'; put 'put ''IikudGhlbihoPT5oLnRleHQoKSkudGhlbihoPT57bGV0IHY9bnVsbDt0cnl7dj1KU09OLnBhcnNlKGgpfWNhdGNoKHkpe2NvbnNvbGUuZXJyb3IoeSl9diYmKHRoaXMuanNvbkZpbGU9dix0aGlzLmxvZ2dlclNlcnZpY2UubG9nKHRoaXMuanNvbkZpbGUpKX0pLHRoaXMuc2V0RGVwbG95RGVm''@;'; put 'put ''YXVsdHMoKX1zZXREZXBsb3lEZWZhdWx0cygpe3ZhciBoLHY7dGhpcy5kY1BhdGg9KG51bGw9PT0oaD10aGlzLmRjQWRhcHRlclNldHRpbmdzKXx8dm9pZCAwPT09aD92b2lkIDA6aC5kY1BhdGgpfHwiIix0aGlzLnNlbGVjdGVkQWRtaW5Hcm91cD0obnVsbD09PSh2PXRoaXMuZGNBZGFwdGVy''@;'; put 'put ''U2V0dGluZ3MpfHx2b2lkIDA9PT12P3ZvaWQgMDp2LmFkbWluR3JvdXApfHwiIix0aGlzLnNlbGVjdGVkQWRtaW5Hcm91cHx8KHRoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwPSJTQVNBZG1pbmlzdHJhdG9ycyIpfXRlcm1zQWdyZWVDaGFuZ2UoKXt0aGlzLmF1dG9kZXBsb3l8fHRoaXMuZ2V0QWRt''@;'; put 'put ''aW5Hcm91cHMoKSx0aGlzLnN0ZXArK31nZXRBZG1pbkdyb3Vwcygpe2ZldGNoKHRoaXMuc2FzSnNDb25maWcuc2VydmVyVXJsKyIvaWRlbnRpdGllcy9ncm91cHM/c29ydEJ5PW5hbWUmbGltaXQ9NTAwMCIse2hlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9fSkudGhlbihoPT5o''@;'; put 'put ''LnRleHQoKSkudGhlbihoPT57bGV0IHY7dHJ5e3Y9SlNPTi5wYXJzZShoKX1jYXRjaCh5KXtjb25zb2xlLmVycm9yKHkpfXYmJih0aGlzLmFkbWluR3JvdXBzPXYuaXRlbXMsdGhpcy5zZWxlY3RlZEFkbWluR3JvdXA9dGhpcy5hZG1pbkdyb3Vwc1swXS5pZCl9KX1vbk5hdmlnYXRlVG9Ib21l''@;'; put 'put ''KCl7d2luZG93Lm9wZW4obG9jYXRpb24uaHJlZi5zcGxpdCgiIyIpWzBdLCJfYmxhbmsiKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3Qoc2spLEt0KGcyKSxLdChzYyksS3QoWmwpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6''@;'; put 'put ''W1siYXBwLWRlcGxveSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6NCx2YXJzOjIsY29uc3RzOltbMSwiY29udGVudC1hcmVhIiwicG9zaXRpb24tcmVsYXRpdmUiXSxbMSwiY2xyLXJvdyJdLFsiaWQiLCJUQ1MiLCJjbGFzcyIsImNhcmQiLDQsIm5nSWYiXSxb''@;'; put 'put ''MywibmdTd2l0Y2giLDQsIm5nSWYiXSxbImlkIiwiVENTIiwxLCJjYXJkIl0sWzEsImNhcmQtaGVhZGVyIl0sWzEsImNhcmQtYmxvY2siXSxbMSwiY2FyZC10ZXh0Il0sWyJocmVmIiwiaHR0cHM6Ly9kb2NzLmRhdGFjb250cm9sbGVyLmlvL2V2YWx1YXRpb24tbGljZW5jZS1hZ3JlZW1lbnQi''@;'; put 'put ''LCJ0YXJnZXQiLCJfYmxhbmsiXSxbMSwibGlnaHQiXSxbMSwiY2xyLWNoZWNrYm94LXdyYXBwZXIiXSxbInR5cGUiLCJjaGVja2JveCIsImlkIiwiY2hlY2tib3gxIiwibmFtZSIsImNoZWNrYm94LWJhc2ljIiwidmFsdWUiLCJvcHRpb24xIiwxLCJjbHItY2hlY2tib3giLDMsImNoYW5nZSJd''@;'; put 'put ''LFsiZm9yIiwiY2hlY2tib3gxIl0sWzMsIm5nU3dpdGNoIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFsiY2xhc3MiLCJhdXRvZGVwbG95LXNlY3Rpb24gY2FyZCIsNCwibmdJZiJdLFsiaWQiLCJtYWluYm9keSIsImNsYXNzIiwiY2FyZCIsNCwibmdJZiJdLFsxLCJhdXRvZGVwbG95LXNlY3Rpb24i''@;'; put 'put ''LCJjYXJkIl0sWzMsInNhc0pzIiwic2FzSnNDb25maWciLCJkY0FkYXB0ZXJTZXR0aW5ncyIsImFwcExvYyIsImRjUGF0aCIsInNlbGVjdGVkQWRtaW5Hcm91cCIsIm9uTmF2aWdhdGVUb0hvbWUiXSxbImlkIiwibWFpbmJvZHkiLDEsImNhcmQiXSxbMywic2FzSnMiLCJzYXNKc0NvbmZpZyIs''@;'; put 'put ''ImRjQWRhcHRlclNldHRpbmdzIiwib25OYXZpZ2F0ZVRvSG9tZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKG50KDAsImRpdiIsMCkoMSwiZGl2IiwxKSxybigyLEpWZSwxNywwLCJkaXYiLDIpLG90KCkscm4oMyx0amUsNCw0LCJuZy1jb250YWluZXIiLDMpLG90KCkpLDImaCYm''@;'; put 'put ''KHV0KDIpLFR0KCJuZ0lmIiwwPT09di5zdGVwKSx1dCgxKSxUdCgibmdJZiIsdi5zdGVwPjApKX0sZGVwZW5kZW5jaWVzOltObyxKZCxpcCxhdCxCVmUsV1ZlLFFWZV0sc3R5bGVzOlsiLmNhcmRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MH0uYnRuW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XXttYXJnaW4tdG9wOjEwcHh9LmxvZy13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlO2JhY2tncm91bmQ6I2YwZjBmMDtib3JkZXI6MXB4IHNvbGlkICNjOWM5Yzk7cGFkZGluZzoxMHB4O292ZXJmbG93OmF1dG87d2hpdGUtc3BhY2U6cHJlLXdyYXB9I2NvbnRleHRzLWJ0''@;'; put 'put ''bltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzozcHggMCAwO21pbi13aWR0aDozMHB4O21hcmdpbi1sZWZ0OjEwcHg7aGVpZ2h0OjMwcHg7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn0udmFsaWRhdGlvbi1iYXJbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDttYXJnaW4tdG9wOjIwcHg7YWxpZ24taXRlbXM6Y2VudGVyfS52YWxpZGF0aW9uLWJhcltfbmdjb250ZW50LSVDT01QJV0gICBjbHItaWNvbltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXJpZ2h0OjVweH0uYXV0b2RlcGxveS1zZWN0aW9uW19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjAgMTVweH0uYXV0b2RlcGxveS1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbHItY2hlY2tib3gtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjIwcHggMH0uYXV0b2RlcGxveS1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSAgIC5idG4tYXV0b2RlcGxveVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpibG9jazttYXJnaW46MTVweCAwfSJdfSksZH0pKCk7ZnVuY3Rpb24gWXdlKGQpe3JldHVybiFBZShkKSYmZC1wYXJzZUZsb2F0KGQpKzE+PTB9ZnVuY3Rpb24gaWplKGQpe2NvbnN0e2luZGV4OmcscGVyaW9k''@;'; put 'put ''Omgsc3Vic2NyaWJlcjp2fT1kO2lmKHYubmV4dChnKSwhdi5jbG9zZWQpe2lmKC0xPT09aClyZXR1cm4gdi5jb21wbGV0ZSgpO2QuaW5kZXg9ZysxLHRoaXMuc2NoZWR1bGUoZCxoKX19bGV0IGlPPXtiYXNlVXJsOm51bGwsYnJlYWtzOiExLGV4dGVuc2lvbnM6bnVsbCxnZm06ITAsaGVhZGVy''@;'; put 'put ''SWRzOiEwLGhlYWRlclByZWZpeDoiIixoaWdobGlnaHQ6bnVsbCxsYW5nUHJlZml4OiJsYW5ndWFnZS0iLG1hbmdsZTohMCxwZWRhbnRpYzohMSxyZW5kZXJlcjpudWxsLHNhbml0aXplOiExLHNhbml0aXplcjpudWxsLHNpbGVudDohMSxzbWFydExpc3RzOiExLHNtYXJ0eXBhbnRzOiExLHRv''@;'; put 'put ''a2VuaXplcjpudWxsLHdhbGtUb2tlbnM6bnVsbCx4aHRtbDohMX07Y29uc3Qgc2plPS9bJjw+IiddLyx1amU9L1smPD4iJ10vZyxjamU9L1s8PiInXXwmKD8hIz9cdys7KS8sZmplPS9bPD4iJ118Jig/ISM/XHcrOykvZyxoamU9eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7Iiwn''@;'; put 'put ''Iic6IiZxdW90OyIsIiciOiImIzM5OyJ9LFF3ZT1kPT5oamVbZF07ZnVuY3Rpb24gbmYoZCxnKXtpZihnKXtpZihzamUudGVzdChkKSlyZXR1cm4gZC5yZXBsYWNlKHVqZSxRd2UpfWVsc2UgaWYoY2plLnRlc3QoZCkpcmV0dXJuIGQucmVwbGFjZShmamUsUXdlKTtyZXR1cm4gZH1jb25zdCBk''@;'; put 'put ''amU9LyYoIyg/OlxkKyl8KD86I3hbMC05QS1GYS1mXSspfCg/Olx3KykpOz8vZ2k7ZnVuY3Rpb24gSndlKGQpe3JldHVybiBkLnJlcGxhY2UoZGplLChnLGgpPT4iY29sb24iPT09KGg9aC50b0xvd2VyQ2FzZSgpKT8iOiI6IiMiPT09aC5jaGFyQXQoMCk/IngiPT09aC5jaGFyQXQoMSk/U3Ry''@;'; put 'put ''aW5nLmZyb21DaGFyQ29kZShwYXJzZUludChoLnN1YnN0cmluZygyKSwxNikpOlN0cmluZy5mcm9tQ2hhckNvZGUoK2guc3Vic3RyaW5nKDEpKToiIil9Y29uc3QgcGplPS8oXnxbXlxbXSlcXi9nO2Z1bmN0aW9uIFkyKGQsZyl7ZD0ic3RyaW5nIj09dHlwZW9mIGQ/ZDpkLnNvdXJjZSxnPWd8''@;'; put 'put ''fCIiO2NvbnN0IGg9e3JlcGxhY2U6KHYseSk9Pih5PSh5PXkuc291cmNlfHx5KS5yZXBsYWNlKHBqZSwiJDEiKSxkPWQucmVwbGFjZSh2LHkpLGgpLGdldFJlZ2V4OigpPT5uZXcgUmVnRXhwKGQsZyl9O3JldHVybiBofWNvbnN0IGdqZT0vW15cdzpdL2csbWplPS9eJHxeW2Etel1bYS16MC05''@;'; put 'put ''Ky4tXSo6fF5bPyNdL2k7ZnVuY3Rpb24gWHdlKGQsZyxoKXtpZihkKXtsZXQgdjt0cnl7dj1kZWNvZGVVUklDb21wb25lbnQoSndlKGgpKS5yZXBsYWNlKGdqZSwiIikudG9Mb3dlckNhc2UoKX1jYXRjaCh5KXtyZXR1cm4gbnVsbH1pZigwPT09di5pbmRleE9mKCJqYXZhc2NyaXB0OiIpfHww''@;'; put 'put ''PT09di5pbmRleE9mKCJ2YnNjcmlwdDoiKXx8MD09PXYuaW5kZXhPZigiZGF0YToiKSlyZXR1cm4gbnVsbH1nJiYhbWplLnRlc3QoaCkmJihoPWZ1bmN0aW9uIHdqZShkLGcpe1pxWyIgIitkXXx8KFpxWyIgIitkXT12amUudGVzdChkKT9kKyIvIjpHcShkLCIvIiwhMCkpO2NvbnN0IGg9LTE9''@;'; put 'put ''PT0oZD1acVsiICIrZF0pLmluZGV4T2YoIjoiKTtyZXR1cm4iLy8iPT09Zy5zdWJzdHJpbmcoMCwyKT9oP2c6ZC5yZXBsYWNlKEFqZSwiJDEiKStnOiIvIj09PWcuY2hhckF0KDApP2g/ZzpkLnJlcGxhY2UoeWplLCIkMSIpK2c6ZCtnfShnLGgpKTt0cnl7aD1lbmNvZGVVUkkoaCkucmVwbGFj''@;'; put 'put ''ZSgvJTI1L2csIiUiKX1jYXRjaCh2KXtyZXR1cm4gbnVsbH1yZXR1cm4gaH1jb25zdCBacT17fSx2amU9L15bXjpdKzpcLypbXi9dKiQvLEFqZT0vXihbXjpdKzopW1xzXFNdKiQvLHlqZT0vXihbXjpdKzpcLypbXi9dKilbXHNcU10qJC8senE9e2V4ZWM6ZnVuY3Rpb24oKXt9fTtmdW5jdGlv''@;'; put 'put ''biB3OChkKXtsZXQgaCx2LGc9MTtmb3IoO2c8YXJndW1lbnRzLmxlbmd0aDtnKyspZm9yKHYgaW4gaD1hcmd1bWVudHNbZ10saClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaCx2KSYmKGRbdl09aFt2XSk7cmV0dXJuIGR9ZnVuY3Rpb24gS3dlKGQsZyl7Y29uc3Qgdj1k''@;'; put 'put ''LnJlcGxhY2UoL1x8L2csKEMsSSxaKT0+e2xldCB1ZT0hMSxfZT1JO2Zvcig7LS1fZT49MCYmIlxcIj09PVpbX2VdOyl1ZT0hdWU7cmV0dXJuIHVlPyJ8IjoiIHwifSkuc3BsaXQoLyBcfC8pO2xldCB5PTA7aWYodlswXS50cmltKCl8fHYuc2hpZnQoKSx2Lmxlbmd0aD4wJiYhdlt2Lmxlbmd0''@;'; put 'put ''aC0xXS50cmltKCkmJnYucG9wKCksdi5sZW5ndGg+Zyl2LnNwbGljZShnKTtlbHNlIGZvcig7di5sZW5ndGg8Zzspdi5wdXNoKCIiKTtmb3IoO3k8di5sZW5ndGg7eSsrKXZbeV09dlt5XS50cmltKCkucmVwbGFjZSgvXFxcfC9nLCJ8Iik7cmV0dXJuIHZ9ZnVuY3Rpb24gR3EoZCxnLGgpe2Nv''@;'; put 'put ''bnN0IHY9ZC5sZW5ndGg7aWYoMD09PXYpcmV0dXJuIiI7bGV0IHk9MDtmb3IoO3k8djspe2NvbnN0IEM9ZC5jaGFyQXQodi15LTEpO2lmKEMhPT1nfHxoKXtpZihDPT09Z3x8IWgpYnJlYWs7eSsrfWVsc2UgeSsrfXJldHVybiBkLnNsaWNlKDAsdi15KX1mdW5jdGlvbiAkd2UoZCl7ZCYmZC5z''@;'; put 'put ''YW5pdGl6ZSYmIWQuc2lsZW50JiZjb25zb2xlLndhcm4oIm1hcmtlZCgpOiBzYW5pdGl6ZSBhbmQgc2FuaXRpemVyIHBhcmFtZXRlcnMgYXJlIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAwLjcuMCwgc2hvdWxkIG5vdCBiZSB1c2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVy''@;'; put 'put ''ZS4gUmVhZCBtb3JlIGhlcmU6IGh0dHBzOi8vbWFya2VkLmpzLm9yZy8jL1VTSU5HX0FEVkFOQ0VELm1kI29wdGlvbnMiKX1mdW5jdGlvbiBxd2UoZCxnKXtpZihnPDEpcmV0dXJuIiI7bGV0IGg9IiI7Zm9yKDtnPjE7KTEmZyYmKGgrPWQpLGc+Pj0xLGQrPWQ7cmV0dXJuIGgrZH1mdW5jdGlv''@;'; put 'put ''biBlYmUoZCxnLGgsdil7Y29uc3QgeT1nLmhyZWYsQz1nLnRpdGxlP25mKGcudGl0bGUpOm51bGwsST1kWzFdLnJlcGxhY2UoL1xcKFtcW1xdXSkvZywiJDEiKTtpZigiISIhPT1kWzBdLmNoYXJBdCgwKSl7di5zdGF0ZS5pbkxpbms9ITA7Y29uc3QgWj17dHlwZToibGluayIscmF3OmgsaHJl''@;'; put 'put ''Zjp5LHRpdGxlOkMsdGV4dDpJLHRva2Vuczp2LmlubGluZVRva2VucyhJLFtdKX07cmV0dXJuIHYuc3RhdGUuaW5MaW5rPSExLFp9cmV0dXJue3R5cGU6ImltYWdlIixyYXc6aCxocmVmOnksdGl0bGU6Qyx0ZXh0Om5mKEkpfX1jbGFzcyBOaGV7Y29uc3RydWN0b3IoZyl7dGhpcy5vcHRpb25z''@;'; put 'put ''PWd8fGlPfXNwYWNlKGcpe2NvbnN0IGg9dGhpcy5ydWxlcy5ibG9jay5uZXdsaW5lLmV4ZWMoZyk7aWYoaCYmaFswXS5sZW5ndGg+MClyZXR1cm57dHlwZToic3BhY2UiLHJhdzpoWzBdfX1jb2RlKGcpe2NvbnN0IGg9dGhpcy5ydWxlcy5ibG9jay5jb2RlLmV4ZWMoZyk7aWYoaCl7Y29uc3Qg''@;'; put 'put ''dj1oWzBdLnJlcGxhY2UoL14gezEsNH0vZ20sIiIpO3JldHVybnt0eXBlOiJjb2RlIixyYXc6aFswXSxjb2RlQmxvY2tTdHlsZToiaW5kZW50ZWQiLHRleHQ6dGhpcy5vcHRpb25zLnBlZGFudGljP3Y6R3EodiwiXG4iKX19fWZlbmNlcyhnKXtjb25zdCBoPXRoaXMucnVsZXMuYmxvY2suZmVu''@;'; put 'put ''Y2VzLmV4ZWMoZyk7aWYoaCl7Y29uc3Qgdj1oWzBdLHk9ZnVuY3Rpb24gX2plKGQsZyl7Y29uc3QgaD1kLm1hdGNoKC9eKFxzKykoPzpgYGApLyk7aWYobnVsbD09PWgpcmV0dXJuIGc7Y29uc3Qgdj1oWzFdO3JldHVybiBnLnNwbGl0KCJcbiIpLm1hcCh5PT57Y29uc3QgQz15Lm1hdGNoKC9e''@;'; put 'put ''XHMrLyk7aWYobnVsbD09PUMpcmV0dXJuIHk7Y29uc3RbSV09QztyZXR1cm4gSS5sZW5ndGg+PXYubGVuZ3RoP3kuc2xpY2Uodi5sZW5ndGgpOnl9KS5qb2luKCJcbiIpfSh2LGhbM118fCIiKTtyZXR1cm57dHlwZToiY29kZSIscmF3OnYsbGFuZzpoWzJdP2hbMl0udHJpbSgpOmhbMl0sdGV4''@;'; put 'put ''dDp5fX19aGVhZGluZyhnKXtjb25zdCBoPXRoaXMucnVsZXMuYmxvY2suaGVhZGluZy5leGVjKGcpO2lmKGgpe2xldCB2PWhbMl0udHJpbSgpO2lmKC8jJC8udGVzdCh2KSl7Y29uc3QgQz1HcSh2LCIjIik7KHRoaXMub3B0aW9ucy5wZWRhbnRpY3x8IUN8fC8gJC8udGVzdChDKSkmJih2PUMu''@;'; put 'put ''dHJpbSgpKX1jb25zdCB5PXt0eXBlOiJoZWFkaW5nIixyYXc6aFswXSxkZXB0aDpoWzFdLmxlbmd0aCx0ZXh0OnYsdG9rZW5zOltdfTtyZXR1cm4gdGhpcy5sZXhlci5pbmxpbmUoeS50ZXh0LHkudG9rZW5zKSx5fX1ocihnKXtjb25zdCBoPXRoaXMucnVsZXMuYmxvY2suaHIuZXhlYyhnKTtp''@;'; put 'put ''ZihoKXJldHVybnt0eXBlOiJociIscmF3OmhbMF19fWJsb2NrcXVvdGUoZyl7Y29uc3QgaD10aGlzLnJ1bGVzLmJsb2NrLmJsb2NrcXVvdGUuZXhlYyhnKTtpZihoKXtjb25zdCB2PWhbMF0ucmVwbGFjZSgvXiAqPlsgXHRdPy9nbSwiIik7cmV0dXJue3R5cGU6ImJsb2NrcXVvdGUiLHJhdzpo''@;'; put 'put ''WzBdLHRva2Vuczp0aGlzLmxleGVyLmJsb2NrVG9rZW5zKHYsW10pLHRleHQ6dn19fWxpc3QoZyl7bGV0IGg9dGhpcy5ydWxlcy5ibG9jay5saXN0LmV4ZWMoZyk7aWYoaCl7bGV0IHYseSxDLEksWix1ZSxfZSxCZSxOZSxLZSxwdCxPdCwkdD1oWzFdLnRyaW0oKTtjb25zdCBmbj0kdC5sZW5n''@;'; put 'put ''dGg+MSxMbj17dHlwZToibGlzdCIscmF3OiIiLG9yZGVyZWQ6Zm4sc3RhcnQ6Zm4/KyR0LnNsaWNlKDAsLTEpOiIiLGxvb3NlOiExLGl0ZW1zOltdfTskdD1mbj9gXFxkezEsOX1cXCR7JHQuc2xpY2UoLTEpfWA6YFxcJHskdH1gLHRoaXMub3B0aW9ucy5wZWRhbnRpYyYmKCR0PWZuPyR0OiJb''@;'; put 'put ''KistXSIpO2NvbnN0IGlyPW5ldyBSZWdFeHAoYF4oIHswLDN9JHskdH0pKCg/OltcdCBdW15cXG5dKik/KD86XFxufCQpKWApO2Zvcig7ZyYmKE90PSExLChoPWlyLmV4ZWMoZykpJiYhdGhpcy5ydWxlcy5ibG9jay5oci50ZXN0KGcpKTspe2lmKHY9aFswXSxnPWcuc3Vic3RyaW5nKHYubGVu''@;'; put 'put ''Z3RoKSxCZT1oWzJdLnNwbGl0KCJcbiIsMSlbMF0sTmU9Zy5zcGxpdCgiXG4iLDEpWzBdLHRoaXMub3B0aW9ucy5wZWRhbnRpYz8oST0yLHB0PUJlLnRyaW1MZWZ0KCkpOihJPWhbMl0uc2VhcmNoKC9bXiBdLyksST1JPjQ/MTpJLHB0PUJlLnNsaWNlKEkpLEkrPWhbMV0ubGVuZ3RoKSx1ZT0h''@;'; put 'put ''MSwhQmUmJi9eICokLy50ZXN0KE5lKSYmKHYrPU5lKyJcbiIsZz1nLnN1YnN0cmluZyhOZS5sZW5ndGgrMSksT3Q9ITApLCFPdCl7Y29uc3QgU3I9bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsSS0xKX19KD86WyorLV18XFxkezEsOX1bLildKSgoPzogW15cXG5dKik/KD86XFxufCQp''@;'; put 'put ''KWApLHdyPW5ldyBSZWdFeHAoYF4gezAsJHtNYXRoLm1pbigzLEktMSl9fSgoPzotICopezMsfXwoPzpfICopezMsfXwoPzpcXCogKil7Myx9KSg/Olxcbit8JClgKSxRcj1uZXcgUmVnRXhwKGBeIHswLCR7TWF0aC5taW4oMyxJLTEpfX0oPzpcYFxgXGB8fn5+KWApLHlpPW5ldyBSZWdFeHAo''@;'; put 'put ''YF4gezAsJHtNYXRoLm1pbigzLEktMSl9fSNgKTtmb3IoO2cmJihLZT1nLnNwbGl0KCJcbiIsMSlbMF0sQmU9S2UsdGhpcy5vcHRpb25zLnBlZGFudGljJiYoQmU9QmUucmVwbGFjZSgvXiB7MSw0fSg/PSggezR9KSpbXiBdKS9nLCIgICIpKSwhKFFyLnRlc3QoQmUpfHx5aS50ZXN0KEJlKXx8''@;'; put 'put ''U3IudGVzdChCZSl8fHdyLnRlc3QoZykpKTspe2lmKEJlLnNlYXJjaCgvW14gXS8pPj1JfHwhQmUudHJpbSgpKXB0Kz0iXG4iK0JlLnNsaWNlKEkpO2Vsc2V7aWYodWUpYnJlYWs7cHQrPSJcbiIrQmV9IXVlJiYhQmUudHJpbSgpJiYodWU9ITApLHYrPUtlKyJcbiIsZz1nLnN1YnN0cmluZyhL''@;'; put 'put ''ZS5sZW5ndGgrMSl9fUxuLmxvb3NlfHwoX2U/TG4ubG9vc2U9ITA6L1xuICpcbiAqJC8udGVzdCh2KSYmKF9lPSEwKSksdGhpcy5vcHRpb25zLmdmbSYmKHk9L15cW1sgeFhdXF0gLy5leGVjKHB0KSx5JiYoQz0iWyBdICIhPT15WzBdLHB0PXB0LnJlcGxhY2UoL15cW1sgeFhdXF0gKy8sIiIp''@;'; put 'put ''KSksTG4uaXRlbXMucHVzaCh7dHlwZToibGlzdF9pdGVtIixyYXc6dix0YXNrOiEheSxjaGVja2VkOkMsbG9vc2U6ITEsdGV4dDpwdH0pLExuLnJhdys9dn1Mbi5pdGVtc1tMbi5pdGVtcy5sZW5ndGgtMV0ucmF3PXYudHJpbVJpZ2h0KCksTG4uaXRlbXNbTG4uaXRlbXMubGVuZ3RoLTFdLnRl''@;'; put 'put ''eHQ9cHQudHJpbVJpZ2h0KCksTG4ucmF3PUxuLnJhdy50cmltUmlnaHQoKTtjb25zdCBtcj1Mbi5pdGVtcy5sZW5ndGg7Zm9yKFo9MDtaPG1yO1orKyl7dGhpcy5sZXhlci5zdGF0ZS50b3A9ITEsTG4uaXRlbXNbWl0udG9rZW5zPXRoaXMubGV4ZXIuYmxvY2tUb2tlbnMoTG4uaXRlbXNbWl0u''@;'; put 'put ''dGV4dCxbXSk7Y29uc3QgU3I9TG4uaXRlbXNbWl0udG9rZW5zLmZpbHRlcihRcj0+InNwYWNlIj09PVFyLnR5cGUpLHdyPVNyLmV2ZXJ5KFFyPT57Y29uc3QgeWk9UXIucmF3LnNwbGl0KCIiKTtsZXQgS2k9MDtmb3IoY29uc3QgU28gb2YgeWkpaWYoIlxuIj09PVNvJiYoS2krPTEpLEtpPjEp''@;'; put 'put ''cmV0dXJuITA7cmV0dXJuITF9KTshTG4ubG9vc2UmJlNyLmxlbmd0aCYmd3ImJihMbi5sb29zZT0hMCxMbi5pdGVtc1taXS5sb29zZT0hMCl9cmV0dXJuIExufX1odG1sKGcpe2NvbnN0IGg9dGhpcy5ydWxlcy5ibG9jay5odG1sLmV4ZWMoZyk7aWYoaCl7Y29uc3Qgdj17dHlwZToiaHRtbCIs''@;'; put 'put ''cmF3OmhbMF0scHJlOiF0aGlzLm9wdGlvbnMuc2FuaXRpemVyJiYoInByZSI9PT1oWzFdfHwic2NyaXB0Ij09PWhbMV18fCJzdHlsZSI9PT1oWzFdKSx0ZXh0OmhbMF19O3JldHVybiB0aGlzLm9wdGlvbnMuc2FuaXRpemUmJih2LnR5cGU9InBhcmFncmFwaCIsdi50ZXh0PXRoaXMub3B0aW9u''@;'; put 'put ''cy5zYW5pdGl6ZXI/dGhpcy5vcHRpb25zLnNhbml0aXplcihoWzBdKTpuZihoWzBdKSx2LnRva2Vucz1bXSx0aGlzLmxleGVyLmlubGluZSh2LnRleHQsdi50b2tlbnMpKSx2fX1kZWYoZyl7Y29uc3QgaD10aGlzLnJ1bGVzLmJsb2NrLmRlZi5leGVjKGcpO2lmKGgpcmV0dXJuIGhbM10mJiho''@;'; put 'put ''WzNdPWhbM10uc3Vic3RyaW5nKDEsaFszXS5sZW5ndGgtMSkpLHt0eXBlOiJkZWYiLHRhZzpoWzFdLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXHMrL2csIiAiKSxyYXc6aFswXSxocmVmOmhbMl0sdGl0bGU6aFszXX19dGFibGUoZyl7Y29uc3QgaD10aGlzLnJ1bGVzLmJsb2NrLnRhYmxlLmV4''@;'; put 'put ''ZWMoZyk7aWYoaCl7Y29uc3Qgdj17dHlwZToidGFibGUiLGhlYWRlcjpLd2UoaFsxXSkubWFwKHk9Pih7dGV4dDp5fSkpLGFsaWduOmhbMl0ucmVwbGFjZSgvXiAqfFx8ICokL2csIiIpLnNwbGl0KC8gKlx8ICovKSxyb3dzOmhbM10mJmhbM10udHJpbSgpP2hbM10ucmVwbGFjZSgvXG5bIFx0''@;'; put 'put ''XSokLywiIikuc3BsaXQoIlxuIik6W119O2lmKHYuaGVhZGVyLmxlbmd0aD09PXYuYWxpZ24ubGVuZ3RoKXt2LnJhdz1oWzBdO2xldCBDLEksWix1ZSx5PXYuYWxpZ24ubGVuZ3RoO2ZvcihDPTA7Qzx5O0MrKyl2LmFsaWduW0NdPS9eICotKzogKiQvLnRlc3Qodi5hbGlnbltDXSk/InJpZ2h0''@;'; put 'put ''IjovXiAqOi0rOiAqJC8udGVzdCh2LmFsaWduW0NdKT8iY2VudGVyIjovXiAqOi0rICokLy50ZXN0KHYuYWxpZ25bQ10pPyJsZWZ0IjpudWxsO2Zvcih5PXYucm93cy5sZW5ndGgsQz0wO0M8eTtDKyspdi5yb3dzW0NdPUt3ZSh2LnJvd3NbQ10sdi5oZWFkZXIubGVuZ3RoKS5tYXAoX2U9Pih7''@;'; put 'put ''dGV4dDpfZX0pKTtmb3IoeT12LmhlYWRlci5sZW5ndGgsST0wO0k8eTtJKyspdi5oZWFkZXJbSV0udG9rZW5zPVtdLHRoaXMubGV4ZXIuaW5saW5lKHYuaGVhZGVyW0ldLnRleHQsdi5oZWFkZXJbSV0udG9rZW5zKTtmb3IoeT12LnJvd3MubGVuZ3RoLEk9MDtJPHk7SSsrKWZvcih1ZT12LnJv''@;'; put 'put ''d3NbSV0sWj0wO1o8dWUubGVuZ3RoO1orKyl1ZVtaXS50b2tlbnM9W10sdGhpcy5sZXhlci5pbmxpbmUodWVbWl0udGV4dCx1ZVtaXS50b2tlbnMpO3JldHVybiB2fX19bGhlYWRpbmcoZyl7Y29uc3QgaD10aGlzLnJ1bGVzLmJsb2NrLmxoZWFkaW5nLmV4ZWMoZyk7aWYoaCl7Y29uc3Qgdj17''@;'; put 'put ''dHlwZToiaGVhZGluZyIscmF3OmhbMF0sZGVwdGg6Ij0iPT09aFsyXS5jaGFyQXQoMCk/MToyLHRleHQ6aFsxXSx0b2tlbnM6W119O3JldHVybiB0aGlzLmxleGVyLmlubGluZSh2LnRleHQsdi50b2tlbnMpLHZ9fXBhcmFncmFwaChnKXtjb25zdCBoPXRoaXMucnVsZXMuYmxvY2sucGFyYWdy''@;'; put 'put ''YXBoLmV4ZWMoZyk7aWYoaCl7Y29uc3Qgdj17dHlwZToicGFyYWdyYXBoIixyYXc6aFswXSx0ZXh0OiJcbiI9PT1oWzFdLmNoYXJBdChoWzFdLmxlbmd0aC0xKT9oWzFdLnNsaWNlKDAsLTEpOmhbMV0sdG9rZW5zOltdfTtyZXR1cm4gdGhpcy5sZXhlci5pbmxpbmUodi50ZXh0LHYudG9rZW5z''@;'; put 'put ''KSx2fX10ZXh0KGcpe2NvbnN0IGg9dGhpcy5ydWxlcy5ibG9jay50ZXh0LmV4ZWMoZyk7aWYoaCl7Y29uc3Qgdj17dHlwZToidGV4dCIscmF3OmhbMF0sdGV4dDpoWzBdLHRva2VuczpbXX07cmV0dXJuIHRoaXMubGV4ZXIuaW5saW5lKHYudGV4dCx2LnRva2Vucyksdn19ZXNjYXBlKGcpe2Nv''@;'; put 'put ''bnN0IGg9dGhpcy5ydWxlcy5pbmxpbmUuZXNjYXBlLmV4ZWMoZyk7aWYoaClyZXR1cm57dHlwZToiZXNjYXBlIixyYXc6aFswXSx0ZXh0Om5mKGhbMV0pfX10YWcoZyl7Y29uc3QgaD10aGlzLnJ1bGVzLmlubGluZS50YWcuZXhlYyhnKTtpZihoKXJldHVybiF0aGlzLmxleGVyLnN0YXRlLmlu''@;'; put 'put ''TGluayYmL148YSAvaS50ZXN0KGhbMF0pP3RoaXMubGV4ZXIuc3RhdGUuaW5MaW5rPSEwOnRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rJiYvXjxcL2E+L2kudGVzdChoWzBdKSYmKHRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rPSExKSwhdGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrJiYvXjwocHJl''@;'; put 'put ''fGNvZGV8a2JkfHNjcmlwdCkoXHN8PikvaS50ZXN0KGhbMF0pP3RoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jaz0hMDp0aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2smJi9ePFwvKHByZXxjb2RlfGtiZHxzY3JpcHQpKFxzfD4pL2kudGVzdChoWzBdKSYmKHRoaXMubGV4ZXIuc3RhdGUuaW5S''@;'; put 'put ''YXdCbG9jaz0hMSkse3R5cGU6dGhpcy5vcHRpb25zLnNhbml0aXplPyJ0ZXh0IjoiaHRtbCIscmF3OmhbMF0saW5MaW5rOnRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rLGluUmF3QmxvY2s6dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrLHRleHQ6dGhpcy5vcHRpb25zLnNhbml0aXplP3RoaXMu''@;'; put 'put ''b3B0aW9ucy5zYW5pdGl6ZXI/dGhpcy5vcHRpb25zLnNhbml0aXplcihoWzBdKTpuZihoWzBdKTpoWzBdfX1saW5rKGcpe2NvbnN0IGg9dGhpcy5ydWxlcy5pbmxpbmUubGluay5leGVjKGcpO2lmKGgpe2NvbnN0IHY9aFsyXS50cmltKCk7aWYoIXRoaXMub3B0aW9ucy5wZWRhbnRpYyYmL148''@;'; put 'put ''Ly50ZXN0KHYpKXtpZighLz4kLy50ZXN0KHYpKXJldHVybjtjb25zdCBJPUdxKHYuc2xpY2UoMCwtMSksIlxcIik7aWYoKHYubGVuZ3RoLUkubGVuZ3RoKSUyPT0wKXJldHVybn1lbHNle2NvbnN0IEk9ZnVuY3Rpb24gYmplKGQsZyl7aWYoLTE9PT1kLmluZGV4T2YoZ1sxXSkpcmV0dXJuLTE7''@;'; put 'put ''Y29uc3QgaD1kLmxlbmd0aDtsZXQgdj0wLHk9MDtmb3IoO3k8aDt5KyspaWYoIlxcIj09PWRbeV0peSsrO2Vsc2UgaWYoZFt5XT09PWdbMF0pdisrO2Vsc2UgaWYoZFt5XT09PWdbMV0mJih2LS0sdjwwKSlyZXR1cm4geTtyZXR1cm4tMX0oaFsyXSwiKCkiKTtpZihJPi0xKXtjb25zdCB1ZT0o''@;'; put 'put ''MD09PWhbMF0uaW5kZXhPZigiISIpPzU6NCkraFsxXS5sZW5ndGgrSTtoWzJdPWhbMl0uc3Vic3RyaW5nKDAsSSksaFswXT1oWzBdLnN1YnN0cmluZygwLHVlKS50cmltKCksaFszXT0iIn19bGV0IHk9aFsyXSxDPSIiO2lmKHRoaXMub3B0aW9ucy5wZWRhbnRpYyl7Y29uc3QgST0vXihbXici''@;'; put 'put ''XSpbXlxzXSlccysoWyciXSkoLiopXDIvLmV4ZWMoeSk7SSYmKHk9SVsxXSxDPUlbM10pfWVsc2UgQz1oWzNdP2hbM10uc2xpY2UoMSwtMSk6IiI7cmV0dXJuIHk9eS50cmltKCksL148Ly50ZXN0KHkpJiYoeT10aGlzLm9wdGlvbnMucGVkYW50aWMmJiEvPiQvLnRlc3Qodik/eS5zbGljZSgx''@;'; put 'put ''KTp5LnNsaWNlKDEsLTEpKSxlYmUoaCx7aHJlZjp5JiZ5LnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMsIiQxIiksdGl0bGU6QyYmQy5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLl9lc2NhcGVzLCIkMSIpfSxoWzBdLHRoaXMubGV4ZXIpfX1yZWZsaW5rKGcsaCl7bGV0IHY7''@;'; put 'put ''aWYoKHY9dGhpcy5ydWxlcy5pbmxpbmUucmVmbGluay5leGVjKGcpKXx8KHY9dGhpcy5ydWxlcy5pbmxpbmUubm9saW5rLmV4ZWMoZykpKXtsZXQgeT0odlsyXXx8dlsxXSkucmVwbGFjZSgvXHMrL2csIiAiKTtpZih5PWhbeS50b0xvd2VyQ2FzZSgpXSwheXx8IXkuaHJlZil7Y29uc3QgQz12''@;'; put 'put ''WzBdLmNoYXJBdCgwKTtyZXR1cm57dHlwZToidGV4dCIscmF3OkMsdGV4dDpDfX1yZXR1cm4gZWJlKHYseSx2WzBdLHRoaXMubGV4ZXIpfX1lbVN0cm9uZyhnLGgsdj0iIil7bGV0IHk9dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmcubERlbGltLmV4ZWMoZyk7aWYoIXl8fHlbM10mJnYubWF0''@;'; put 'put ''Y2goL1tccHtMfVxwe059XS91KSlyZXR1cm47Y29uc3QgQz15WzFdfHx5WzJdfHwiIjtpZighQ3x8QyYmKCIiPT09dnx8dGhpcy5ydWxlcy5pbmxpbmUucHVuY3R1YXRpb24uZXhlYyh2KSkpe2NvbnN0IEk9eVswXS5sZW5ndGgtMTtsZXQgWix1ZSxfZT1JLEJlPTA7Y29uc3QgTmU9IioiPT09''@;'; put 'put ''eVswXVswXT90aGlzLnJ1bGVzLmlubGluZS5lbVN0cm9uZy5yRGVsaW1Bc3Q6dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmcuckRlbGltVW5kO2ZvcihOZS5sYXN0SW5kZXg9MCxoPWguc2xpY2UoLTEqZy5sZW5ndGgrSSk7bnVsbCE9KHk9TmUuZXhlYyhoKSk7KXtpZihaPXlbMV18fHlbMl18''@;'; put 'put ''fHlbM118fHlbNF18fHlbNV18fHlbNl0sIVopY29udGludWU7aWYodWU9Wi5sZW5ndGgseVszXXx8eVs0XSl7X2UrPXVlO2NvbnRpbnVlfWlmKCh5WzVdfHx5WzZdKSYmSSUzJiYhKChJK3VlKSUzKSl7QmUrPXVlO2NvbnRpbnVlfWlmKF9lLT11ZSxfZT4wKWNvbnRpbnVlO2lmKHVlPU1hdGgu''@;'; put 'put ''bWluKHVlLHVlK19lK0JlKSxNYXRoLm1pbihJLHVlKSUyKXtjb25zdCBwdD1nLnNsaWNlKDEsSSt5LmluZGV4K3VlKTtyZXR1cm57dHlwZToiZW0iLHJhdzpnLnNsaWNlKDAsSSt5LmluZGV4K3VlKzEpLHRleHQ6cHQsdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lVG9rZW5zKHB0LFtdKX19Y29u''@;'; put 'put ''c3QgS2U9Zy5zbGljZSgyLEkreS5pbmRleCt1ZS0xKTtyZXR1cm57dHlwZToic3Ryb25nIixyYXc6Zy5zbGljZSgwLEkreS5pbmRleCt1ZSsxKSx0ZXh0OktlLHRva2Vuczp0aGlzLmxleGVyLmlubGluZVRva2VucyhLZSxbXSl9fX19Y29kZXNwYW4oZyl7Y29uc3QgaD10aGlzLnJ1bGVzLmlu''@;'; put 'put ''bGluZS5jb2RlLmV4ZWMoZyk7aWYoaCl7bGV0IHY9aFsyXS5yZXBsYWNlKC9cbi9nLCIgIik7Y29uc3QgeT0vW14gXS8udGVzdCh2KSxDPS9eIC8udGVzdCh2KSYmLyAkLy50ZXN0KHYpO3JldHVybiB5JiZDJiYodj12LnN1YnN0cmluZygxLHYubGVuZ3RoLTEpKSx2PW5mKHYsITApLHt0eXBl''@;'; put 'put ''OiJjb2Rlc3BhbiIscmF3OmhbMF0sdGV4dDp2fX19YnIoZyl7Y29uc3QgaD10aGlzLnJ1bGVzLmlubGluZS5ici5leGVjKGcpO2lmKGgpcmV0dXJue3R5cGU6ImJyIixyYXc6aFswXX19ZGVsKGcpe2NvbnN0IGg9dGhpcy5ydWxlcy5pbmxpbmUuZGVsLmV4ZWMoZyk7aWYoaClyZXR1cm57dHlw''@;'; put 'put ''ZToiZGVsIixyYXc6aFswXSx0ZXh0OmhbMl0sdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lVG9rZW5zKGhbMl0sW10pfX1hdXRvbGluayhnLGgpe2NvbnN0IHY9dGhpcy5ydWxlcy5pbmxpbmUuYXV0b2xpbmsuZXhlYyhnKTtpZih2KXtsZXQgeSxDO3JldHVybiJAIj09PXZbMl0/KHk9bmYodGhp''@;'; put 'put ''cy5vcHRpb25zLm1hbmdsZT9oKHZbMV0pOnZbMV0pLEM9Im1haWx0bzoiK3kpOih5PW5mKHZbMV0pLEM9eSkse3R5cGU6ImxpbmsiLHJhdzp2WzBdLHRleHQ6eSxocmVmOkMsdG9rZW5zOlt7dHlwZToidGV4dCIscmF3OnksdGV4dDp5fV19fX11cmwoZyxoKXtsZXQgdjtpZih2PXRoaXMucnVs''@;'; put 'put ''ZXMuaW5saW5lLnVybC5leGVjKGcpKXtsZXQgeSxDO2lmKCJAIj09PXZbMl0peT1uZih0aGlzLm9wdGlvbnMubWFuZ2xlP2godlswXSk6dlswXSksQz0ibWFpbHRvOiIreTtlbHNle2xldCBJO2Rve0k9dlswXSx2WzBdPXRoaXMucnVsZXMuaW5saW5lLl9iYWNrcGVkYWwuZXhlYyh2WzBdKVsw''@;'; put 'put ''XX13aGlsZShJIT09dlswXSk7eT1uZih2WzBdKSxDPSJ3d3cuIj09PXZbMV0/Imh0dHA6Ly8iK3k6eX1yZXR1cm57dHlwZToibGluayIscmF3OnZbMF0sdGV4dDp5LGhyZWY6Qyx0b2tlbnM6W3t0eXBlOiJ0ZXh0IixyYXc6eSx0ZXh0Onl9XX19fWlubGluZVRleHQoZyxoKXtjb25zdCB2PXRo''@;'; put 'put ''aXMucnVsZXMuaW5saW5lLnRleHQuZXhlYyhnKTtpZih2KXtsZXQgeTtyZXR1cm4geT10aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2s/dGhpcy5vcHRpb25zLnNhbml0aXplP3RoaXMub3B0aW9ucy5zYW5pdGl6ZXI/dGhpcy5vcHRpb25zLnNhbml0aXplcih2WzBdKTpuZih2WzBdKTp2WzBd''@;'; put 'put ''Om5mKHRoaXMub3B0aW9ucy5zbWFydHlwYW50cz9oKHZbMF0pOnZbMF0pLHt0eXBlOiJ0ZXh0IixyYXc6dlswXSx0ZXh0Onl9fX19Y29uc3QgRmE9e25ld2xpbmU6L14oPzogKig/OlxufCQpKSsvLGNvZGU6L14oIHs0fVteXG5dKyg/OlxuKD86ICooPzpcbnwkKSkqKT8pKy8sZmVuY2VzOi9e''@;'; put 'put ''IHswLDN9KGB7Myx9KD89W15gXG5dKlxuKXx+ezMsfSkoW15cbl0qKVxuKD86fChbXHNcU10qPylcbikoPzogezAsM31cMVt+YF0qICooPz1cbnwkKXwkKS8saHI6L14gezAsM30oKD86LVtcdCBdKil7Myx9fCg/Ol9bIFx0XSopezMsfXwoPzpcKlsgXHRdKil7Myx9KSg/OlxuK3wkKS8saGVh''@;'; put 'put ''ZGluZzovXiB7MCwzfSgjezEsNn0pKD89XHN8JCkoLiopKD86XG4rfCQpLyxibG9ja3F1b3RlOi9eKCB7MCwzfT4gPyhwYXJhZ3JhcGh8W15cbl0qKSg/OlxufCQpKSsvLGxpc3Q6L14oIHswLDN9YnVsbCkoWyBcdF1bXlxuXSs/KT8oPzpcbnwkKS8saHRtbDoiXiB7MCwzfSg/Ojwoc2NyaXB0''@;'; put 'put ''fHByZXxzdHlsZXx0ZXh0YXJlYSlbXFxzPl1bXFxzXFxTXSo/KD86PC9cXDE+W15cXG5dKlxcbit8JCl8Y29tbWVudFteXFxuXSooXFxuK3wkKXw8XFw/W1xcc1xcU10qPyg/OlxcPz5cXG4qfCQpfDwhW0EtWl1bXFxzXFxTXSo/KD86Plxcbip8JCl8PCFcXFtDREFUQVxcW1tcXHNcXFNdKj8o''@;'; put 'put ''PzpcXF1cXF0+XFxuKnwkKXw8Lz8odGFnKSg/OiArfFxcbnwvPz4pW1xcc1xcU10qPyg/Oig/OlxcbiAqKStcXG58JCl8PCg/IXNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWEpKFthLXpdW1xcdy1dKikoPzphdHRyaWJ1dGUpKj8gKi8/Pig/PVsgXFx0XSooPzpcXG58JCkpW1xcc1xcU10qPyg/''@;'; put 'put ''Oig/OlxcbiAqKStcXG58JCl8PC8oPyFzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhKVthLXpdW1xcdy1dKlxccyo+KD89WyBcXHRdKig/OlxcbnwkKSlbXFxzXFxTXSo/KD86KD86XFxuICopK1xcbnwkKSkiLGRlZjovXiB7MCwzfVxbKGxhYmVsKVxdOiAqKD86XG4gKik/PD8oW15ccz5dKyk+''@;'; put 'put ''Pyg/Oig/OiArKD86XG4gKik/fCAqXG4gKikodGl0bGUpKT8gKig/OlxuK3wkKS8sdGFibGU6enEsbGhlYWRpbmc6L14oW15cbl0rKVxuIHswLDN9KD0rfC0rKSAqKD86XG4rfCQpLyxfcGFyYWdyYXBoOi9eKFteXG5dKyg/OlxuKD8haHJ8aGVhZGluZ3xsaGVhZGluZ3xibG9ja3F1b3RlfGZl''@;'; put 'put ''bmNlc3xsaXN0fGh0bWx8dGFibGV8ICtcbilbXlxuXSspKikvLHRleHQ6L15bXlxuXSsvLF9sYWJlbDovKD8hXHMqXF0pKD86XFwufFteXFtcXVxcXSkrLyxfdGl0bGU6Lyg/OiIoPzpcXCI/fFteIlxcXSkqInwnW14nXG5dKig/OlxuW14nXG5dKykqXG4/J3xcKFteKCldKlwpKS99O0ZhLmRl''@;'; put 'put ''Zj1ZMihGYS5kZWYpLnJlcGxhY2UoImxhYmVsIixGYS5fbGFiZWwpLnJlcGxhY2UoInRpdGxlIixGYS5fdGl0bGUpLmdldFJlZ2V4KCksRmEuYnVsbGV0PS8oPzpbKistXXxcZHsxLDl9Wy4pXSkvLEZhLmxpc3RJdGVtU3RhcnQ9WTIoL14oICopKGJ1bGwpICovKS5yZXBsYWNlKCJidWxsIixG''@;'; put 'put ''YS5idWxsZXQpLmdldFJlZ2V4KCksRmEubGlzdD1ZMihGYS5saXN0KS5yZXBsYWNlKC9idWxsL2csRmEuYnVsbGV0KS5yZXBsYWNlKCJociIsIlxcbisoPz1cXDE/KD86KD86LSAqKXszLH18KD86XyAqKXszLH18KD86XFwqICopezMsfSkoPzpcXG4rfCQpKSIpLnJlcGxhY2UoImRlZiIsIlxc''@;'; put 'put ''bisoPz0iK0ZhLmRlZi5zb3VyY2UrIikiKS5nZXRSZWdleCgpLEZhLl90YWc9ImFkZHJlc3N8YXJ0aWNsZXxhc2lkZXxiYXNlfGJhc2Vmb250fGJsb2NrcXVvdGV8Ym9keXxjYXB0aW9ufGNlbnRlcnxjb2x8Y29sZ3JvdXB8ZGR8ZGV0YWlsc3xkaWFsb2d8ZGlyfGRpdnxkbHxkdHxmaWVsZHNl''@;'; put 'put ''dHxmaWdjYXB0aW9ufGZpZ3VyZXxmb290ZXJ8Zm9ybXxmcmFtZXxmcmFtZXNldHxoWzEtNl18aGVhZHxoZWFkZXJ8aHJ8aHRtbHxpZnJhbWV8bGVnZW5kfGxpfGxpbmt8bWFpbnxtZW51fG1lbnVpdGVtfG1ldGF8bmF2fG5vZnJhbWVzfG9sfG9wdGdyb3VwfG9wdGlvbnxwfHBhcmFtfHNlY3Rp''@;'; put 'put ''b258c291cmNlfHN1bW1hcnl8dGFibGV8dGJvZHl8dGR8dGZvb3R8dGh8dGhlYWR8dGl0bGV8dHJ8dHJhY2t8dWwiLEZhLl9jb21tZW50PS88IS0tKD8hLT8+KVtcc1xTXSo/KD86LS0+fCQpLyxGYS5odG1sPVkyKEZhLmh0bWwsImkiKS5yZXBsYWNlKCJjb21tZW50IixGYS5fY29tbWVudCku''@;'; put 'put ''cmVwbGFjZSgidGFnIixGYS5fdGFnKS5yZXBsYWNlKCJhdHRyaWJ1dGUiLC8gK1thLXpBLVo6X11bXHcuOi1dKig/OiAqPSAqIlteIlxuXSoifCAqPSAqJ1teJ1xuXSonfCAqPSAqW15ccyInPTw+YF0rKT8vKS5nZXRSZWdleCgpLEZhLnBhcmFncmFwaD1ZMihGYS5fcGFyYWdyYXBoKS5yZXBs''@;'; put 'put ''YWNlKCJociIsRmEuaHIpLnJlcGxhY2UoImhlYWRpbmciLCIgezAsM30jezEsNn0gIikucmVwbGFjZSgifGxoZWFkaW5nIiwiIikucmVwbGFjZSgifHRhYmxlIiwiIikucmVwbGFjZSgiYmxvY2txdW90ZSIsIiB7MCwzfT4iKS5yZXBsYWNlKCJmZW5jZXMiLCIgezAsM30oPzpgezMsfSg/PVte''@;'; put 'put ''YFxcbl0qXFxuKXx+ezMsfSlbXlxcbl0qXFxuIikucmVwbGFjZSgibGlzdCIsIiB7MCwzfSg/OlsqKy1dfDFbLildKSAiKS5yZXBsYWNlKCJodG1sIiwiPC8/KD86dGFnKSg/OiArfFxcbnwvPz4pfDwoPzpzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhfCEtLSkiKS5yZXBsYWNlKCJ0YWciLEZh''@;'; put 'put ''Ll90YWcpLmdldFJlZ2V4KCksRmEuYmxvY2txdW90ZT1ZMihGYS5ibG9ja3F1b3RlKS5yZXBsYWNlKCJwYXJhZ3JhcGgiLEZhLnBhcmFncmFwaCkuZ2V0UmVnZXgoKSxGYS5ub3JtYWw9dzgoe30sRmEpLEZhLmdmbT13OCh7fSxGYS5ub3JtYWwse3RhYmxlOiJeICooW15cXG4gXS4qXFx8Liop''@;'; put 'put ''XFxuIHswLDN9KD86XFx8ICopPyg6Py0rOj8gKig/OlxcfCAqOj8tKzo/ICopKikoPzpcXHwgKik/KD86XFxuKCg/Oig/ISAqXFxufGhyfGhlYWRpbmd8YmxvY2txdW90ZXxjb2RlfGZlbmNlc3xsaXN0fGh0bWwpLiooPzpcXG58JCkpKilcXG4qfCQpIn0pLEZhLmdmbS50YWJsZT1ZMihGYS5n''@;'; put 'put ''Zm0udGFibGUpLnJlcGxhY2UoImhyIixGYS5ocikucmVwbGFjZSgiaGVhZGluZyIsIiB7MCwzfSN7MSw2fSAiKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoImNvZGUiLCIgezR9W15cXG5dIikucmVwbGFjZSgiZmVuY2VzIiwiIHswLDN9KD86YHszLH0oPz1bXmBc''@;'; put 'put ''XG5dKlxcbil8fnszLH0pW15cXG5dKlxcbiIpLnJlcGxhY2UoImxpc3QiLCIgezAsM30oPzpbKistXXwxWy4pXSkgIikucmVwbGFjZSgiaHRtbCIsIjwvPyg/OnRhZykoPzogK3xcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixGYS5f''@;'; put 'put ''dGFnKS5nZXRSZWdleCgpLEZhLmdmbS5wYXJhZ3JhcGg9WTIoRmEuX3BhcmFncmFwaCkucmVwbGFjZSgiaHIiLEZhLmhyKS5yZXBsYWNlKCJoZWFkaW5nIiwiIHswLDN9I3sxLDZ9ICIpLnJlcGxhY2UoInxsaGVhZGluZyIsIiIpLnJlcGxhY2UoInRhYmxlIixGYS5nZm0udGFibGUpLnJlcGxh''@;'; put 'put ''Y2UoImJsb2NrcXVvdGUiLCIgezAsM30+IikucmVwbGFjZSgiZmVuY2VzIiwiIHswLDN9KD86YHszLH0oPz1bXmBcXG5dKlxcbil8fnszLH0pW15cXG5dKlxcbiIpLnJlcGxhY2UoImxpc3QiLCIgezAsM30oPzpbKistXXwxWy4pXSkgIikucmVwbGFjZSgiaHRtbCIsIjwvPyg/OnRhZykoPzog''@;'; put 'put ''K3xcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixGYS5fdGFnKS5nZXRSZWdleCgpLEZhLnBlZGFudGljPXc4KHt9LEZhLm5vcm1hbCx7aHRtbDpZMigiXiAqKD86Y29tbWVudCAqKD86XFxufFxccyokKXw8KHRhZylbXFxzXFxTXSs/''@;'; put 'put ''PC9cXDE+ICooPzpcXG57Mix9fFxccyokKXw8dGFnKD86XCJbXlwiXSpcInwnW14nXSonfFxcc1teJ1wiLz5cXHNdKikqPy8/PiAqKD86XFxuezIsfXxcXHMqJCkpIikucmVwbGFjZSgiY29tbWVudCIsRmEuX2NvbW1lbnQpLnJlcGxhY2UoL3RhZy9nLCIoPyEoPzphfGVtfHN0cm9uZ3xzbWFs''@;'; put 'put ''bHxzfGNpdGV8cXxkZm58YWJicnxkYXRhfHRpbWV8Y29kZXx2YXJ8c2FtcHxrYmR8c3VifHN1cHxpfGJ8dXxtYXJrfHJ1Ynl8cnR8cnB8YmRpfGJkb3xzcGFufGJyfHdicnxpbnN8ZGVsfGltZylcXGIpXFx3Kyg/ITp8W15cXHdcXHNAXSpAKVxcYiIpLmdldFJlZ2V4KCksZGVmOi9eICpcWyhb''@;'; put 'put ''XlxdXSspXF06ICo8PyhbXlxzPl0rKT4/KD86ICsoWyIoXVteXG5dK1siKV0pKT8gKig/OlxuK3wkKS8saGVhZGluZzovXigjezEsNn0pKC4qKSg/OlxuK3wkKS8sZmVuY2VzOnpxLHBhcmFncmFwaDpZMihGYS5ub3JtYWwuX3BhcmFncmFwaCkucmVwbGFjZSgiaHIiLEZhLmhyKS5yZXBsYWNl''@;'; put 'put ''KCJoZWFkaW5nIiwiICojezEsNn0gKlteXG5dIikucmVwbGFjZSgibGhlYWRpbmciLEZhLmxoZWFkaW5nKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoInxmZW5jZXMiLCIiKS5yZXBsYWNlKCJ8bGlzdCIsIiIpLnJlcGxhY2UoInxodG1sIiwiIikuZ2V0UmVnZXgo''@;'; put 'put ''KX0pO2NvbnN0IFhvPXtlc2NhcGU6L15cXChbISIjJCUmJygpKissXC0uLzo7PD0+P0BcW1xdXFxeX2B7fH1+XSkvLGF1dG9saW5rOi9ePChzY2hlbWU6W15cc1x4MDAtXHgxZjw+XSp8ZW1haWwpPi8sdXJsOnpxLHRhZzoiXmNvbW1lbnR8XjwvW2EtekEtWl1bXFx3Oi1dKlxccyo+fF48W2Et''@;'; put 'put ''ekEtWl1bXFx3LV0qKD86YXR0cmlidXRlKSo/XFxzKi8/PnxePFxcP1tcXHNcXFNdKj9cXD8+fF48IVthLXpBLVpdK1xcc1tcXHNcXFNdKj8+fF48IVxcW0NEQVRBXFxbW1xcc1xcU10qP1xcXVxcXT4iLGxpbms6L14hP1xbKGxhYmVsKVxdXChccyooaHJlZikoPzpccysodGl0bGUpKT9ccypc''@;'; put 'put ''KS8scmVmbGluazovXiE/XFsobGFiZWwpXF1cWyhyZWYpXF0vLG5vbGluazovXiE/XFsocmVmKVxdKD86XFtcXSk/LyxyZWZsaW5rU2VhcmNoOiJyZWZsaW5rfG5vbGluayg/IVxcKCkiLGVtU3Ryb25nOntsRGVsaW06L14oPzpcKisoPzooW3B1bmN0X10pfFteXHMqXSkpfF5fKyg/OihbcHVu''@;'; put 'put ''Y3QqXSl8KFteXHNfXSkpLyxyRGVsaW1Bc3Q6L15bXl8qXSo/XF9cX1teXypdKj9cKlteXypdKj8oPz1cX1xfKXxbXipdKyg/PVteKl0pfFtwdW5jdF9dKFwqKykoPz1bXHNdfCQpfFtecHVuY3QqX1xzXShcKispKD89W3B1bmN0X1xzXXwkKXxbcHVuY3RfXHNdKFwqKykoPz1bXnB1bmN0Kl9c''@;'; put 'put ''c10pfFtcc10oXCorKSg/PVtwdW5jdF9dKXxbcHVuY3RfXShcKispKD89W3B1bmN0X10pfFtecHVuY3QqX1xzXShcKispKD89W15wdW5jdCpfXHNdKS8sckRlbGltVW5kOi9eW15fKl0qP1wqXCpbXl8qXSo/XF9bXl8qXSo/KD89XCpcKil8W15fXSsoPz1bXl9dKXxbcHVuY3QqXShcXyspKD89''@;'; put 'put ''W1xzXXwkKXxbXnB1bmN0Kl9cc10oXF8rKSg/PVtwdW5jdCpcc118JCl8W3B1bmN0KlxzXShcXyspKD89W15wdW5jdCpfXHNdKXxbXHNdKFxfKykoPz1bcHVuY3QqXSl8W3B1bmN0Kl0oXF8rKSg/PVtwdW5jdCpdKS99LGNvZGU6L14oYCspKFteYF18W15gXVtcc1xTXSo/W15gXSlcMSg/IWAp''@;'; put 'put ''LyxicjovXiggezIsfXxcXClcbig/IVxzKiQpLyxkZWw6enEsdGV4dDovXihgK3xbXmBdKSg/Oig/PSB7Mix9XG4pfFtcc1xTXSo/KD86KD89W1xcPCFcW2AqX118XGJffCQpfFteIF0oPz0gezIsfVxuKSkpLyxwdW5jdHVhdGlvbjovXihbXHNwdW5jdHVhdGlvbl0pL307ZnVuY3Rpb24gQ2pl''@;'; put 'put ''KGQpe3JldHVybiBkLnJlcGxhY2UoLy0tLS9nLCJcdTIwMTQiKS5yZXBsYWNlKC8tLS9nLCJcdTIwMTMiKS5yZXBsYWNlKC8oXnxbLVx1MjAxNC8oXFt7IlxzXSknL2csIiQxXHUyMDE4IikucmVwbGFjZSgvJy9nLCJcdTIwMTkiKS5yZXBsYWNlKC8oXnxbLVx1MjAxNC8oXFt7XHUyMDE4XHNd''@;'; put 'put ''KSIvZywiJDFcdTIwMWMiKS5yZXBsYWNlKC8iL2csIlx1MjAxZCIpLnJlcGxhY2UoL1wuezN9L2csIlx1MjAyNiIpfWZ1bmN0aW9uIHRiZShkKXtsZXQgaCx2LGc9IiI7Y29uc3QgeT1kLmxlbmd0aDtmb3IoaD0wO2g8eTtoKyspdj1kLmNoYXJDb2RlQXQoaCksTWF0aC5yYW5kb20oKT4uNSYm''@;'; put 'put ''KHY9IngiK3YudG9TdHJpbmcoMTYpKSxnKz0iJiMiK3YrIjsiO3JldHVybiBnfVhvLl9wdW5jdHVhdGlvbj0iIVwiIyQlJicoKStcXC0uLC86Ozw9Pj9AXFxbXFxdYF57fH1+IixYby5wdW5jdHVhdGlvbj1ZMihYby5wdW5jdHVhdGlvbikucmVwbGFjZSgvcHVuY3R1YXRpb24vZyxYby5fcHVu''@;'; put 'put ''Y3R1YXRpb24pLmdldFJlZ2V4KCksWG8uYmxvY2tTa2lwPS9cW1teXF1dKj9cXVwoW15cKV0qP1wpfGBbXmBdKj9gfDxbXj5dKj8+L2csWG8uZXNjYXBlZEVtU3Q9L1xcXCp8XFxfL2csWG8uX2NvbW1lbnQ9WTIoRmEuX2NvbW1lbnQpLnJlcGxhY2UoIig/Oi0tXHgzZXwkKSIsIi0tXHgzZSIp''@;'; put 'put ''LmdldFJlZ2V4KCksWG8uZW1TdHJvbmcubERlbGltPVkyKFhvLmVtU3Ryb25nLmxEZWxpbSkucmVwbGFjZSgvcHVuY3QvZyxYby5fcHVuY3R1YXRpb24pLmdldFJlZ2V4KCksWG8uZW1TdHJvbmcuckRlbGltQXN0PVkyKFhvLmVtU3Ryb25nLnJEZWxpbUFzdCwiZyIpLnJlcGxhY2UoL3B1bmN0''@;'; put 'put ''L2csWG8uX3B1bmN0dWF0aW9uKS5nZXRSZWdleCgpLFhvLmVtU3Ryb25nLnJEZWxpbVVuZD1ZMihYby5lbVN0cm9uZy5yRGVsaW1VbmQsImciKS5yZXBsYWNlKC9wdW5jdC9nLFhvLl9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSxYby5fZXNjYXBlcz0vXFwoWyEiIyQlJicoKSorLFwtLi86Ozw9''@;'; put 'put ''Pj9AXFtcXVxcXl9ge3x9fl0pL2csWG8uX3NjaGVtZT0vW2EtekEtWl1bYS16QS1aMC05Ky4tXXsxLDMxfS8sWG8uX2VtYWlsPS9bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dKyhAKVthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEt''@;'; put 'put ''WjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSsoPyFbLV9dKS8sWG8uYXV0b2xpbms9WTIoWG8uYXV0b2xpbmspLnJlcGxhY2UoInNjaGVtZSIsWG8uX3NjaGVtZSkucmVwbGFjZSgiZW1haWwiLFhvLl9lbWFpbCkuZ2V0UmVnZXgoKSxYby5fYXR0cmlidXRlPS9ccytb''@;'; put 'put ''YS16QS1aOl9dW1x3LjotXSooPzpccyo9XHMqIlteIl0qInxccyo9XHMqJ1teJ10qJ3xccyo9XHMqW15ccyInPTw+YF0rKT8vLFhvLnRhZz1ZMihYby50YWcpLnJlcGxhY2UoImNvbW1lbnQiLFhvLl9jb21tZW50KS5yZXBsYWNlKCJhdHRyaWJ1dGUiLFhvLl9hdHRyaWJ1dGUpLmdldFJlZ2V4''@;'; put 'put ''KCksWG8uX2xhYmVsPS8oPzpcWyg/OlxcLnxbXlxbXF1cXF0pKlxdfFxcLnxgW15gXSpgfFteXFtcXVxcYF0pKj8vLFhvLl9ocmVmPS88KD86XFwufFteXG48PlxcXSkrPnxbXlxzXHgwMC1ceDFmXSovLFhvLl90aXRsZT0vIig/OlxcIj98W14iXFxdKSoifCcoPzpcXCc/fFteJ1xcXSkqJ3xc''@;'; put 'put ''KCg/OlxcXCk/fFteKVxcXSkqXCkvLFhvLmxpbms9WTIoWG8ubGluaykucmVwbGFjZSgibGFiZWwiLFhvLl9sYWJlbCkucmVwbGFjZSgiaHJlZiIsWG8uX2hyZWYpLnJlcGxhY2UoInRpdGxlIixYby5fdGl0bGUpLmdldFJlZ2V4KCksWG8ucmVmbGluaz1ZMihYby5yZWZsaW5rKS5yZXBsYWNl''@;'; put 'put ''KCJsYWJlbCIsWG8uX2xhYmVsKS5yZXBsYWNlKCJyZWYiLEZhLl9sYWJlbCkuZ2V0UmVnZXgoKSxYby5ub2xpbms9WTIoWG8ubm9saW5rKS5yZXBsYWNlKCJyZWYiLEZhLl9sYWJlbCkuZ2V0UmVnZXgoKSxYby5yZWZsaW5rU2VhcmNoPVkyKFhvLnJlZmxpbmtTZWFyY2gsImciKS5yZXBsYWNl''@;'; put 'put ''KCJyZWZsaW5rIixYby5yZWZsaW5rKS5yZXBsYWNlKCJub2xpbmsiLFhvLm5vbGluaykuZ2V0UmVnZXgoKSxYby5ub3JtYWw9dzgoe30sWG8pLFhvLnBlZGFudGljPXc4KHt9LFhvLm5vcm1hbCx7c3Ryb25nOntzdGFydDovXl9ffFwqXCovLG1pZGRsZTovXl9fKD89XFMpKFtcc1xTXSo/XFMp''@;'; put 'put ''X18oPyFfKXxeXCpcKig/PVxTKShbXHNcU10qP1xTKVwqXCooPyFcKikvLGVuZEFzdDovXCpcKig/IVwqKS9nLGVuZFVuZDovX18oPyFfKS9nfSxlbTp7c3RhcnQ6L15ffFwqLyxtaWRkbGU6L14oKVwqKD89XFMpKFtcc1xTXSo/XFMpXCooPyFcKil8Xl8oPz1cUykoW1xzXFNdKj9cUylfKD8h''@;'; put 'put ''XykvLGVuZEFzdDovXCooPyFcKikvZyxlbmRVbmQ6L18oPyFfKS9nfSxsaW5rOlkyKC9eIT9cWyhsYWJlbClcXVwoKC4qPylcKS8pLnJlcGxhY2UoImxhYmVsIixYby5fbGFiZWwpLmdldFJlZ2V4KCkscmVmbGluazpZMigvXiE/XFsobGFiZWwpXF1ccypcWyhbXlxdXSopXF0vKS5yZXBsYWNl''@;'; put 'put ''KCJsYWJlbCIsWG8uX2xhYmVsKS5nZXRSZWdleCgpfSksWG8uZ2ZtPXc4KHt9LFhvLm5vcm1hbCx7ZXNjYXBlOlkyKFhvLmVzY2FwZSkucmVwbGFjZSgiXSkiLCJ+fF0pIikuZ2V0UmVnZXgoKSxfZXh0ZW5kZWRfZW1haWw6L1tBLVphLXowLTkuXystXSsoQClbYS16QS1aMC05LV9dKyg/Olwu''@;'; put 'put ''W2EtekEtWjAtOS1fXSpbYS16QS1aMC05XSkrKD8hWy1fXSkvLHVybDovXigoPzpmdHB8aHR0cHM/KTpcL1wvfHd3d1wuKSg/OlthLXpBLVowLTlcLV0rXC4/KStbXlxzPF0qfF5lbWFpbC8sX2JhY2twZWRhbDovKD86W14/IS4sOjsqX34oKSZdK3xcKFteKV0qXCl8Jig/IVthLXpBLVowLTld''@;'; put 'put ''KzskKXxbPyEuLDo7Kl9+KV0rKD8hJCkpKy8sZGVsOi9eKH5+PykoPz1bXlxzfl0pKFtcc1xTXSo/W15cc35dKVwxKD89W15+XXwkKS8sdGV4dDovXihbYH5dK3xbXmB+XSkoPzooPz0gezIsfVxuKXwoPz1bYS16QS1aMC05LiEjJCUmJyorXC89P19ge1x8fX4tXStAKXxbXHNcU10qPyg/Oig/''@;'; put 'put ''PVtcXDwhXFtgKn5fXXxcYl98aHR0cHM/OlwvXC98ZnRwOlwvXC98d3d3XC58JCl8W14gXSg/PSB7Mix9XG4pfFteYS16QS1aMC05LiEjJCUmJyorXC89P19ge1x8fX4tXSg/PVthLXpBLVowLTkuISMkJSYnKitcLz0/X2B7XHx9fi1dK0ApKSkvfSksWG8uZ2ZtLnVybD1ZMihYby5nZm0udXJs''@;'; put 'put ''LCJpIikucmVwbGFjZSgiZW1haWwiLFhvLmdmbS5fZXh0ZW5kZWRfZW1haWwpLmdldFJlZ2V4KCksWG8uYnJlYWtzPXc4KHt9LFhvLmdmbSx7YnI6WTIoWG8uYnIpLnJlcGxhY2UoInsyLH0iLCIqIikuZ2V0UmVnZXgoKSx0ZXh0OlkyKFhvLmdmbS50ZXh0KS5yZXBsYWNlKCJcXGJfIiwiXFxi''@;'; put 'put ''X3wgezIsfVxcbiIpLnJlcGxhY2UoL1x7MixcfS9nLCIqIikuZ2V0UmVnZXgoKX0pO2NsYXNzIEN2e2NvbnN0cnVjdG9yKGcpe3RoaXMudG9rZW5zPVtdLHRoaXMudG9rZW5zLmxpbmtzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5vcHRpb25zPWd8fGlPLHRoaXMub3B0aW9ucy50b2tlbml6''@;'; put 'put ''ZXI9dGhpcy5vcHRpb25zLnRva2VuaXplcnx8bmV3IE5oZSx0aGlzLnRva2VuaXplcj10aGlzLm9wdGlvbnMudG9rZW5pemVyLHRoaXMudG9rZW5pemVyLm9wdGlvbnM9dGhpcy5vcHRpb25zLHRoaXMudG9rZW5pemVyLmxleGVyPXRoaXMsdGhpcy5pbmxpbmVRdWV1ZT1bXSx0aGlzLnN0YXRl''@;'; put 'put ''PXtpbkxpbms6ITEsaW5SYXdCbG9jazohMSx0b3A6ITB9O2NvbnN0IGg9e2Jsb2NrOkZhLm5vcm1hbCxpbmxpbmU6WG8ubm9ybWFsfTt0aGlzLm9wdGlvbnMucGVkYW50aWM/KGguYmxvY2s9RmEucGVkYW50aWMsaC5pbmxpbmU9WG8ucGVkYW50aWMpOnRoaXMub3B0aW9ucy5nZm0mJihoLmJs''@;'; put 'put ''b2NrPUZhLmdmbSxoLmlubGluZT10aGlzLm9wdGlvbnMuYnJlYWtzP1hvLmJyZWFrczpYby5nZm0pLHRoaXMudG9rZW5pemVyLnJ1bGVzPWh9c3RhdGljIGdldCBydWxlcygpe3JldHVybntibG9jazpGYSxpbmxpbmU6WG99fXN0YXRpYyBsZXgoZyxoKXtyZXR1cm4gbmV3IEN2KGgpLmxleChn''@;'; put 'put ''KX1zdGF0aWMgbGV4SW5saW5lKGcsaCl7cmV0dXJuIG5ldyBDdihoKS5pbmxpbmVUb2tlbnMoZyl9bGV4KGcpe2xldCBoO2ZvcihnPWcucmVwbGFjZSgvXHJcbnxcci9nLCJcbiIpLHRoaXMuYmxvY2tUb2tlbnMoZyx0aGlzLnRva2Vucyk7aD10aGlzLmlubGluZVF1ZXVlLnNoaWZ0KCk7KXRo''@;'; put 'put ''aXMuaW5saW5lVG9rZW5zKGguc3JjLGgudG9rZW5zKTtyZXR1cm4gdGhpcy50b2tlbnN9YmxvY2tUb2tlbnMoZyxoPVtdKXtsZXQgdix5LEMsSTtmb3IoZz10aGlzLm9wdGlvbnMucGVkYW50aWM/Zy5yZXBsYWNlKC9cdC9nLCIgICAgIikucmVwbGFjZSgvXiArJC9nbSwiIik6Zy5yZXBsYWNl''@;'; put 'put ''KC9eKCAqKShcdCspL2dtLChaLHVlLF9lKT0+dWUrIiAgICAiLnJlcGVhdChfZS5sZW5ndGgpKTtnOylpZighKHRoaXMub3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5ibG9jayYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuYmxvY2suc29tZShaPT4hISh2PVou''@;'; put 'put ''Y2FsbCh7bGV4ZXI6dGhpc30sZyxoKSkmJihnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNoKHYpLCEwKSkpKXtpZih2PXRoaXMudG9rZW5pemVyLnNwYWNlKGcpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksMT09PXYucmF3Lmxlbmd0aCYmaC5sZW5ndGg+MD9oW2gubGVu''@;'; put 'put ''Z3RoLTFdLnJhdys9IlxuIjpoLnB1c2godik7Y29udGludWV9aWYodj10aGlzLnRva2VuaXplci5jb2RlKGcpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCkseT1oW2gubGVuZ3RoLTFdLCF5fHwicGFyYWdyYXBoIiE9PXkudHlwZSYmInRleHQiIT09eS50eXBlP2gucHVzaCh2KTooeS5y''@;'; put 'put ''YXcrPSJcbiIrdi5yYXcseS50ZXh0Kz0iXG4iK3YudGV4dCx0aGlzLmlubGluZVF1ZXVlW3RoaXMuaW5saW5lUXVldWUubGVuZ3RoLTFdLnNyYz15LnRleHQpO2NvbnRpbnVlfWlmKHY9dGhpcy50b2tlbml6ZXIuZmVuY2VzKGcpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNo''@;'; put 'put ''KHYpO2NvbnRpbnVlfWlmKHY9dGhpcy50b2tlbml6ZXIuaGVhZGluZyhnKSl7Zz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLGgucHVzaCh2KTtjb250aW51ZX1pZih2PXRoaXMudG9rZW5pemVyLmhyKGcpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNoKHYpO2NvbnRpbnVl''@;'; put 'put ''fWlmKHY9dGhpcy50b2tlbml6ZXIuYmxvY2txdW90ZShnKSl7Zz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLGgucHVzaCh2KTtjb250aW51ZX1pZih2PXRoaXMudG9rZW5pemVyLmxpc3QoZykpe2c9Zy5zdWJzdHJpbmcodi5yYXcubGVuZ3RoKSxoLnB1c2godik7Y29udGludWV9aWYodj10''@;'; put 'put ''aGlzLnRva2VuaXplci5odG1sKGcpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNoKHYpO2NvbnRpbnVlfWlmKHY9dGhpcy50b2tlbml6ZXIuZGVmKGcpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCkseT1oW2gubGVuZ3RoLTFdLCF5fHwicGFyYWdyYXBoIiE9PXkudHlw''@;'; put 'put ''ZSYmInRleHQiIT09eS50eXBlP3RoaXMudG9rZW5zLmxpbmtzW3YudGFnXXx8KHRoaXMudG9rZW5zLmxpbmtzW3YudGFnXT17aHJlZjp2LmhyZWYsdGl0bGU6di50aXRsZX0pOih5LnJhdys9IlxuIit2LnJhdyx5LnRleHQrPSJcbiIrdi5yYXcsdGhpcy5pbmxpbmVRdWV1ZVt0aGlzLmlubGlu''@;'; put 'put ''ZVF1ZXVlLmxlbmd0aC0xXS5zcmM9eS50ZXh0KTtjb250aW51ZX1pZih2PXRoaXMudG9rZW5pemVyLnRhYmxlKGcpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNoKHYpO2NvbnRpbnVlfWlmKHY9dGhpcy50b2tlbml6ZXIubGhlYWRpbmcoZykpe2c9Zy5zdWJzdHJpbmcodi5y''@;'; put 'put ''YXcubGVuZ3RoKSxoLnB1c2godik7Y29udGludWV9aWYoQz1nLHRoaXMub3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydEJsb2NrKXtsZXQgWj0xLzA7Y29uc3QgdWU9Zy5zbGljZSgxKTtsZXQgX2U7dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuc3RhcnRC''@;'; put 'put ''bG9jay5mb3JFYWNoKGZ1bmN0aW9uKEJlKXtfZT1CZS5jYWxsKHtsZXhlcjp0aGlzfSx1ZSksIm51bWJlciI9PXR5cGVvZiBfZSYmX2U+PTAmJihaPU1hdGgubWluKFosX2UpKX0pLFo8MS8wJiZaPj0wJiYoQz1nLnN1YnN0cmluZygwLForMSkpfWlmKHRoaXMuc3RhdGUudG9wJiYodj10aGlz''@;'; put 'put ''LnRva2VuaXplci5wYXJhZ3JhcGgoQykpKXt5PWhbaC5sZW5ndGgtMV0sSSYmInBhcmFncmFwaCI9PT15LnR5cGU/KHkucmF3Kz0iXG4iK3YucmF3LHkudGV4dCs9IlxuIit2LnRleHQsdGhpcy5pbmxpbmVRdWV1ZS5wb3AoKSx0aGlzLmlubGluZVF1ZXVlW3RoaXMuaW5saW5lUXVldWUubGVu''@;'; put 'put ''Z3RoLTFdLnNyYz15LnRleHQpOmgucHVzaCh2KSxJPUMubGVuZ3RoIT09Zy5sZW5ndGgsZz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpO2NvbnRpbnVlfWlmKHY9dGhpcy50b2tlbml6ZXIudGV4dChnKSl7Zz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLHk9aFtoLmxlbmd0aC0xXSx5JiYi''@;'; put 'put ''dGV4dCI9PT15LnR5cGU/KHkucmF3Kz0iXG4iK3YucmF3LHkudGV4dCs9IlxuIit2LnRleHQsdGhpcy5pbmxpbmVRdWV1ZS5wb3AoKSx0aGlzLmlubGluZVF1ZXVlW3RoaXMuaW5saW5lUXVldWUubGVuZ3RoLTFdLnNyYz15LnRleHQpOmgucHVzaCh2KTtjb250aW51ZX1pZihnKXtjb25zdCBa''@;'; put 'put ''PSJJbmZpbml0ZSBsb29wIG9uIGJ5dGU6ICIrZy5jaGFyQ29kZUF0KDApO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQpe2NvbnNvbGUuZXJyb3IoWik7YnJlYWt9dGhyb3cgbmV3IEVycm9yKFopfX1yZXR1cm4gdGhpcy5zdGF0ZS50b3A9ITAsaH1pbmxpbmUoZyxoKXt0aGlzLmlubGluZVF1ZXVl''@;'; put 'put ''LnB1c2goe3NyYzpnLHRva2VuczpofSl9aW5saW5lVG9rZW5zKGcsaD1bXSl7bGV0IHYseSxDLFosdWUsX2UsST1nO2lmKHRoaXMudG9rZW5zLmxpbmtzKXtjb25zdCBCZT1PYmplY3Qua2V5cyh0aGlzLnRva2Vucy5saW5rcyk7aWYoQmUubGVuZ3RoPjApZm9yKDtudWxsIT0oWj10aGlzLnRv''@;'; put 'put ''a2VuaXplci5ydWxlcy5pbmxpbmUucmVmbGlua1NlYXJjaC5leGVjKEkpKTspQmUuaW5jbHVkZXMoWlswXS5zbGljZShaWzBdLmxhc3RJbmRleE9mKCJbIikrMSwtMSkpJiYoST1JLnNsaWNlKDAsWi5pbmRleCkrIlsiK3F3ZSgiYSIsWlswXS5sZW5ndGgtMikrIl0iK0kuc2xpY2UodGhpcy50''@;'; put 'put ''b2tlbml6ZXIucnVsZXMuaW5saW5lLnJlZmxpbmtTZWFyY2gubGFzdEluZGV4KSl9Zm9yKDtudWxsIT0oWj10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuYmxvY2tTa2lwLmV4ZWMoSSkpOylJPUkuc2xpY2UoMCxaLmluZGV4KSsiWyIrcXdlKCJhIixaWzBdLmxlbmd0aC0yKSsiXSIrSS5z''@;'; put 'put ''bGljZSh0aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuYmxvY2tTa2lwLmxhc3RJbmRleCk7Zm9yKDtudWxsIT0oWj10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuZXNjYXBlZEVtU3QuZXhlYyhJKSk7KUk9SS5zbGljZSgwLFouaW5kZXgpKyIrKyIrSS5zbGljZSh0aGlzLnRva2VuaXpl''@;'; put 'put ''ci5ydWxlcy5pbmxpbmUuZXNjYXBlZEVtU3QubGFzdEluZGV4KTtmb3IoO2c7KWlmKHVlfHwoX2U9IiIpLHVlPSExLCEodGhpcy5vcHRpb25zLmV4dGVuc2lvbnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLmlubGluZSYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuaW5saW5lLnNvbWUoQmU9''@;'; put 'put ''PiEhKHY9QmUuY2FsbCh7bGV4ZXI6dGhpc30sZyxoKSkmJihnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNoKHYpLCEwKSkpKXtpZih2PXRoaXMudG9rZW5pemVyLmVzY2FwZShnKSl7Zz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLGgucHVzaCh2KTtjb250aW51ZX1pZih2PXRo''@;'; put 'put ''aXMudG9rZW5pemVyLnRhZyhnKSl7Zz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLHk9aFtoLmxlbmd0aC0xXSx5JiYidGV4dCI9PT12LnR5cGUmJiJ0ZXh0Ij09PXkudHlwZT8oeS5yYXcrPXYucmF3LHkudGV4dCs9di50ZXh0KTpoLnB1c2godik7Y29udGludWV9aWYodj10aGlzLnRva2Vu''@;'; put 'put ''aXplci5saW5rKGcpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNoKHYpO2NvbnRpbnVlfWlmKHY9dGhpcy50b2tlbml6ZXIucmVmbGluayhnLHRoaXMudG9rZW5zLmxpbmtzKSl7Zz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLHk9aFtoLmxlbmd0aC0xXSx5JiYidGV4dCI9''@;'; put 'put ''PT12LnR5cGUmJiJ0ZXh0Ij09PXkudHlwZT8oeS5yYXcrPXYucmF3LHkudGV4dCs9di50ZXh0KTpoLnB1c2godik7Y29udGludWV9aWYodj10aGlzLnRva2VuaXplci5lbVN0cm9uZyhnLEksX2UpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNoKHYpO2NvbnRpbnVlfWlmKHY9''@;'; put 'put ''dGhpcy50b2tlbml6ZXIuY29kZXNwYW4oZykpe2c9Zy5zdWJzdHJpbmcodi5yYXcubGVuZ3RoKSxoLnB1c2godik7Y29udGludWV9aWYodj10aGlzLnRva2VuaXplci5icihnKSl7Zz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLGgucHVzaCh2KTtjb250aW51ZX1pZih2PXRoaXMudG9rZW5p''@;'; put 'put ''emVyLmRlbChnKSl7Zz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLGgucHVzaCh2KTtjb250aW51ZX1pZih2PXRoaXMudG9rZW5pemVyLmF1dG9saW5rKGcsdGJlKSl7Zz1nLnN1YnN0cmluZyh2LnJhdy5sZW5ndGgpLGgucHVzaCh2KTtjb250aW51ZX1pZighdGhpcy5zdGF0ZS5pbkxpbmsm''@;'; put 'put ''Jih2PXRoaXMudG9rZW5pemVyLnVybChnLHRiZSkpKXtnPWcuc3Vic3RyaW5nKHYucmF3Lmxlbmd0aCksaC5wdXNoKHYpO2NvbnRpbnVlfWlmKEM9Zyx0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuc3RhcnRJbmxpbmUpe2xldCBCZT0xLzA7Y29uc3Qg''@;'; put 'put ''TmU9Zy5zbGljZSgxKTtsZXQgS2U7dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuc3RhcnRJbmxpbmUuZm9yRWFjaChmdW5jdGlvbihwdCl7S2U9cHQuY2FsbCh7bGV4ZXI6dGhpc30sTmUpLCJudW1iZXIiPT10eXBlb2YgS2UmJktlPj0wJiYoQmU9TWF0aC5taW4oQmUsS2UpKX0pLEJlPDEvMCYm''@;'; put 'put ''QmU+PTAmJihDPWcuc3Vic3RyaW5nKDAsQmUrMSkpfWlmKHY9dGhpcy50b2tlbml6ZXIuaW5saW5lVGV4dChDLENqZSkpe2c9Zy5zdWJzdHJpbmcodi5yYXcubGVuZ3RoKSwiXyIhPT12LnJhdy5zbGljZSgtMSkmJihfZT12LnJhdy5zbGljZSgtMSkpLHVlPSEwLHk9aFtoLmxlbmd0aC0xXSx5''@;'; put 'put ''JiYidGV4dCI9PT15LnR5cGU/KHkucmF3Kz12LnJhdyx5LnRleHQrPXYudGV4dCk6aC5wdXNoKHYpO2NvbnRpbnVlfWlmKGcpe2NvbnN0IEJlPSJJbmZpbml0ZSBsb29wIG9uIGJ5dGU6ICIrZy5jaGFyQ29kZUF0KDApO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQpe2NvbnNvbGUuZXJyb3IoQmUp''@;'; put 'put ''O2JyZWFrfXRocm93IG5ldyBFcnJvcihCZSl9fXJldHVybiBofX1jbGFzcyBTWntjb25zdHJ1Y3RvcihnKXt0aGlzLm9wdGlvbnM9Z3x8aU99Y29kZShnLGgsdil7Y29uc3QgeT0oaHx8IiIpLm1hdGNoKC9cUyovKVswXTtpZih0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0KXtjb25zdCBDPXRoaXMu''@;'; put 'put ''b3B0aW9ucy5oaWdobGlnaHQoZyx5KTtudWxsIT1DJiZDIT09ZyYmKHY9ITAsZz1DKX1yZXR1cm4gZz1nLnJlcGxhY2UoL1xuJC8sIiIpKyJcbiIseT8nPHByZT48Y29kZSBjbGFzcz0iJyt0aGlzLm9wdGlvbnMubGFuZ1ByZWZpeCtuZih5LCEwKSsnIj4nKyh2P2c6bmYoZywhMCkpKyI8L2Nv''@;'; put 'put ''ZGU+PC9wcmU+XG4iOiI8cHJlPjxjb2RlPiIrKHY/ZzpuZihnLCEwKSkrIjwvY29kZT48L3ByZT5cbiJ9YmxvY2txdW90ZShnKXtyZXR1cm5gPGJsb2NrcXVvdGU+XG4ke2d9PC9ibG9ja3F1b3RlPlxuYH1odG1sKGcpe3JldHVybiBnfWhlYWRpbmcoZyxoLHYseSl7cmV0dXJuIHRoaXMub3B0''@;'; put 'put ''aW9ucy5oZWFkZXJJZHM/YDxoJHtofSBpZD0iJHt0aGlzLm9wdGlvbnMuaGVhZGVyUHJlZml4K3kuc2x1Zyh2KX0iPiR7Z308L2gke2h9PlxuYDpgPGgke2h9PiR7Z308L2gke2h9PlxuYH1ocigpe3JldHVybiB0aGlzLm9wdGlvbnMueGh0bWw/Ijxoci8+XG4iOiI8aHI+XG4ifWxpc3QoZyxo''@;'; put 'put ''LHYpe2NvbnN0IHk9aD8ib2wiOiJ1bCI7cmV0dXJuIjwiK3krKGgmJjEhPT12Pycgc3RhcnQ9IicrdisnIic6IiIpKyI+XG4iK2crIjwvIit5KyI+XG4ifWxpc3RpdGVtKGcpe3JldHVybmA8bGk+JHtnfTwvbGk+XG5gfWNoZWNrYm94KGcpe3JldHVybiI8aW5wdXQgIisoZz8nY2hlY2tlZD0i''@;'; put 'put ''IiAnOiIiKSsnZGlzYWJsZWQ9IiIgdHlwZT0iY2hlY2tib3giJysodGhpcy5vcHRpb25zLnhodG1sPyIgLyI6IiIpKyI+ICJ9cGFyYWdyYXBoKGcpe3JldHVybmA8cD4ke2d9PC9wPlxuYH10YWJsZShnLGgpe3JldHVybiBoJiYoaD1gPHRib2R5PiR7aH08L3Rib2R5PmApLCI8dGFibGU+XG48''@;'; put 'put ''dGhlYWQ+XG4iK2crIjwvdGhlYWQ+XG4iK2grIjwvdGFibGU+XG4ifXRhYmxlcm93KGcpe3JldHVybmA8dHI+XG4ke2d9PC90cj5cbmB9dGFibGVjZWxsKGcsaCl7Y29uc3Qgdj1oLmhlYWRlcj8idGgiOiJ0ZCI7cmV0dXJuKGguYWxpZ24/YDwke3Z9IGFsaWduPSIke2guYWxpZ259Ij5gOmA8''@;'; put 'put ''JHt2fT5gKStnK2A8LyR7dn0+XG5gfXN0cm9uZyhnKXtyZXR1cm5gPHN0cm9uZz4ke2d9PC9zdHJvbmc+YH1lbShnKXtyZXR1cm5gPGVtPiR7Z308L2VtPmB9Y29kZXNwYW4oZyl7cmV0dXJuYDxjb2RlPiR7Z308L2NvZGU+YH1icigpe3JldHVybiB0aGlzLm9wdGlvbnMueGh0bWw/Ijxici8+''@;'; put 'put ''IjoiPGJyPiJ9ZGVsKGcpe3JldHVybmA8ZGVsPiR7Z308L2RlbD5gfWxpbmsoZyxoLHYpe2lmKG51bGw9PT0oZz1Yd2UodGhpcy5vcHRpb25zLnNhbml0aXplLHRoaXMub3B0aW9ucy5iYXNlVXJsLGcpKSlyZXR1cm4gdjtsZXQgeT0nPGEgaHJlZj0iJytuZihnKSsnIic7cmV0dXJuIGgmJih5''@;'; put 'put ''Kz0nIHRpdGxlPSInK2grJyInKSx5Kz0iPiIrdisiPC9hPiIseX1pbWFnZShnLGgsdil7aWYobnVsbD09PShnPVh3ZSh0aGlzLm9wdGlvbnMuc2FuaXRpemUsdGhpcy5vcHRpb25zLmJhc2VVcmwsZykpKXJldHVybiB2O2xldCB5PWA8aW1nIHNyYz0iJHtnfSIgYWx0PSIke3Z9ImA7cmV0dXJu''@;'; put 'put ''IGgmJih5Kz1gIHRpdGxlPSIke2h9ImApLHkrPXRoaXMub3B0aW9ucy54aHRtbD8iLz4iOiI+Iix5fXRleHQoZyl7cmV0dXJuIGd9fWNsYXNzIG5iZXtzdHJvbmcoZyl7cmV0dXJuIGd9ZW0oZyl7cmV0dXJuIGd9Y29kZXNwYW4oZyl7cmV0dXJuIGd9ZGVsKGcpe3JldHVybiBnfWh0bWwoZyl7''@;'; put 'put ''cmV0dXJuIGd9dGV4dChnKXtyZXR1cm4gZ31saW5rKGcsaCx2KXtyZXR1cm4iIit2fWltYWdlKGcsaCx2KXtyZXR1cm4iIit2fWJyKCl7cmV0dXJuIiJ9fWNsYXNzIHJiZXtjb25zdHJ1Y3Rvcigpe3RoaXMuc2Vlbj17fX1zZXJpYWxpemUoZyl7cmV0dXJuIGcudG9Mb3dlckNhc2UoKS50cmlt''@;'; put 'put ''KCkucmVwbGFjZSgvPFshXC9hLXpdLio/Pi9naSwiIikucmVwbGFjZSgvW1x1MjAwMC1cdTIwNkZcdTJFMDAtXHUyRTdGXFwnISIjJCUmKCkqKywuLzo7PD0+P0BbXF1eYHt8fX5dL2csIiIpLnJlcGxhY2UoL1xzL2csIi0iKX1nZXROZXh0U2FmZVNsdWcoZyxoKXtsZXQgdj1nLHk9MDtpZih0''@;'; put 'put ''aGlzLnNlZW4uaGFzT3duUHJvcGVydHkodikpe3k9dGhpcy5zZWVuW2ddO2Rve3krKyx2PWcrIi0iK3l9d2hpbGUodGhpcy5zZWVuLmhhc093blByb3BlcnR5KHYpKX1yZXR1cm4gaHx8KHRoaXMuc2VlbltnXT15LHRoaXMuc2Vlblt2XT0wKSx2fXNsdWcoZyxoPXt9KXtjb25zdCB2PXRoaXMu''@;'; put 'put ''c2VyaWFsaXplKGcpO3JldHVybiB0aGlzLmdldE5leHRTYWZlU2x1Zyh2LGguZHJ5cnVuKX19Y2xhc3Mga3Z7Y29uc3RydWN0b3IoZyl7dGhpcy5vcHRpb25zPWd8fGlPLHRoaXMub3B0aW9ucy5yZW5kZXJlcj10aGlzLm9wdGlvbnMucmVuZGVyZXJ8fG5ldyBTWix0aGlzLnJlbmRlcmVyPXRo''@;'; put 'put ''aXMub3B0aW9ucy5yZW5kZXJlcix0aGlzLnJlbmRlcmVyLm9wdGlvbnM9dGhpcy5vcHRpb25zLHRoaXMudGV4dFJlbmRlcmVyPW5ldyBuYmUsdGhpcy5zbHVnZ2VyPW5ldyByYmV9c3RhdGljIHBhcnNlKGcsaCl7cmV0dXJuIG5ldyBrdihoKS5wYXJzZShnKX1zdGF0aWMgcGFyc2VJbmxpbmUo''@;'; put 'put ''ZyxoKXtyZXR1cm4gbmV3IGt2KGgpLnBhcnNlSW5saW5lKGcpfXBhcnNlKGcsaD0hMCl7bGV0IHksQyxJLFosdWUsX2UsQmUsTmUsS2UscHQsT3QsJHQsZm4sTG4saXIsbXIsU3Isd3IsUXIsdj0iIjtjb25zdCB5aT1nLmxlbmd0aDtmb3IoeT0wO3k8eWk7eSsrKWlmKHB0PWdbeV0sdGhpcy5v''@;'; put 'put ''cHRpb25zLmV4dGVuc2lvbnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVycyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW3B0LnR5cGVdJiYoUXI9dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW3B0LnR5cGVdLmNhbGwoe3BhcnNlcjp0aGlzfSxw''@;'; put 'put ''dCksITEhPT1Rcnx8IVsic3BhY2UiLCJociIsImhlYWRpbmciLCJjb2RlIiwidGFibGUiLCJibG9ja3F1b3RlIiwibGlzdCIsImh0bWwiLCJwYXJhZ3JhcGgiLCJ0ZXh0Il0uaW5jbHVkZXMocHQudHlwZSkpKXYrPVFyfHwiIjtlbHNlIHN3aXRjaChwdC50eXBlKXtjYXNlInNwYWNlIjpjb250''@;'; put 'put ''aW51ZTtjYXNlImhyIjp2Kz10aGlzLnJlbmRlcmVyLmhyKCk7Y29udGludWU7Y2FzZSJoZWFkaW5nIjp2Kz10aGlzLnJlbmRlcmVyLmhlYWRpbmcodGhpcy5wYXJzZUlubGluZShwdC50b2tlbnMpLHB0LmRlcHRoLEp3ZSh0aGlzLnBhcnNlSW5saW5lKHB0LnRva2Vucyx0aGlzLnRleHRSZW5k''@;'; put 'put ''ZXJlcikpLHRoaXMuc2x1Z2dlcik7Y29udGludWU7Y2FzZSJjb2RlIjp2Kz10aGlzLnJlbmRlcmVyLmNvZGUocHQudGV4dCxwdC5sYW5nLHB0LmVzY2FwZWQpO2NvbnRpbnVlO2Nhc2UidGFibGUiOmZvcihOZT0iIixCZT0iIixaPXB0LmhlYWRlci5sZW5ndGgsQz0wO0M8WjtDKyspQmUrPXRo''@;'; put 'put ''aXMucmVuZGVyZXIudGFibGVjZWxsKHRoaXMucGFyc2VJbmxpbmUocHQuaGVhZGVyW0NdLnRva2Vucykse2hlYWRlcjohMCxhbGlnbjpwdC5hbGlnbltDXX0pO2ZvcihOZSs9dGhpcy5yZW5kZXJlci50YWJsZXJvdyhCZSksS2U9IiIsWj1wdC5yb3dzLmxlbmd0aCxDPTA7QzxaO0MrKyl7Zm9y''@;'; put 'put ''KF9lPXB0LnJvd3NbQ10sQmU9IiIsdWU9X2UubGVuZ3RoLEk9MDtJPHVlO0krKylCZSs9dGhpcy5yZW5kZXJlci50YWJsZWNlbGwodGhpcy5wYXJzZUlubGluZShfZVtJXS50b2tlbnMpLHtoZWFkZXI6ITEsYWxpZ246cHQuYWxpZ25bSV19KTtLZSs9dGhpcy5yZW5kZXJlci50YWJsZXJvdyhC''@;'; put 'put ''ZSl9dis9dGhpcy5yZW5kZXJlci50YWJsZShOZSxLZSk7Y29udGludWU7Y2FzZSJibG9ja3F1b3RlIjpLZT10aGlzLnBhcnNlKHB0LnRva2Vucyksdis9dGhpcy5yZW5kZXJlci5ibG9ja3F1b3RlKEtlKTtjb250aW51ZTtjYXNlImxpc3QiOmZvcihPdD1wdC5vcmRlcmVkLCR0PXB0LnN0YXJ0''@;'; put 'put ''LGZuPXB0Lmxvb3NlLFo9cHQuaXRlbXMubGVuZ3RoLEtlPSIiLEM9MDtDPFo7QysrKWlyPXB0Lml0ZW1zW0NdLG1yPWlyLmNoZWNrZWQsU3I9aXIudGFzayxMbj0iIixpci50YXNrJiYod3I9dGhpcy5yZW5kZXJlci5jaGVja2JveChtciksZm4/aXIudG9rZW5zLmxlbmd0aD4wJiYicGFyYWdy''@;'; put 'put ''YXBoIj09PWlyLnRva2Vuc1swXS50eXBlPyhpci50b2tlbnNbMF0udGV4dD13cisiICIraXIudG9rZW5zWzBdLnRleHQsaXIudG9rZW5zWzBdLnRva2VucyYmaXIudG9rZW5zWzBdLnRva2Vucy5sZW5ndGg+MCYmInRleHQiPT09aXIudG9rZW5zWzBdLnRva2Vuc1swXS50eXBlJiYoaXIudG9r''@;'; put 'put ''ZW5zWzBdLnRva2Vuc1swXS50ZXh0PXdyKyIgIitpci50b2tlbnNbMF0udG9rZW5zWzBdLnRleHQpKTppci50b2tlbnMudW5zaGlmdCh7dHlwZToidGV4dCIsdGV4dDp3cn0pOkxuKz13ciksTG4rPXRoaXMucGFyc2UoaXIudG9rZW5zLGZuKSxLZSs9dGhpcy5yZW5kZXJlci5saXN0aXRlbShM''@;'; put 'put ''bixTcixtcik7dis9dGhpcy5yZW5kZXJlci5saXN0KEtlLE90LCR0KTtjb250aW51ZTtjYXNlImh0bWwiOnYrPXRoaXMucmVuZGVyZXIuaHRtbChwdC50ZXh0KTtjb250aW51ZTtjYXNlInBhcmFncmFwaCI6dis9dGhpcy5yZW5kZXJlci5wYXJhZ3JhcGgodGhpcy5wYXJzZUlubGluZShwdC50''@;'; put 'put ''b2tlbnMpKTtjb250aW51ZTtjYXNlInRleHQiOmZvcihLZT1wdC50b2tlbnM/dGhpcy5wYXJzZUlubGluZShwdC50b2tlbnMpOnB0LnRleHQ7eSsxPHlpJiYidGV4dCI9PT1nW3krMV0udHlwZTspcHQ9Z1srK3ldLEtlKz0iXG4iKyhwdC50b2tlbnM/dGhpcy5wYXJzZUlubGluZShwdC50b2tl''@;'; put 'put ''bnMpOnB0LnRleHQpO3YrPWg/dGhpcy5yZW5kZXJlci5wYXJhZ3JhcGgoS2UpOktlO2NvbnRpbnVlO2RlZmF1bHQ6e2NvbnN0IEtpPSdUb2tlbiB3aXRoICInK3B0LnR5cGUrJyIgdHlwZSB3YXMgbm90IGZvdW5kLic7aWYodGhpcy5vcHRpb25zLnNpbGVudClyZXR1cm4gdm9pZCBjb25zb2xl''@;'; put 'put ''LmVycm9yKEtpKTt0aHJvdyBuZXcgRXJyb3IoS2kpfX1yZXR1cm4gdn1wYXJzZUlubGluZShnLGgpe2g9aHx8dGhpcy5yZW5kZXJlcjtsZXQgeSxDLEksdj0iIjtjb25zdCBaPWcubGVuZ3RoO2Zvcih5PTA7eTxaO3krKylpZihDPWdbeV0sdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMmJnRoaXMu''@;'; put 'put ''b3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVycyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW0MudHlwZV0mJihJPXRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVyc1tDLnR5cGVdLmNhbGwoe3BhcnNlcjp0aGlzfSxDKSwhMSE9PUl8fCFbImVzY2FwZSIsImh0bWwi''@;'; put 'put ''LCJsaW5rIiwiaW1hZ2UiLCJzdHJvbmciLCJlbSIsImNvZGVzcGFuIiwiYnIiLCJkZWwiLCJ0ZXh0Il0uaW5jbHVkZXMoQy50eXBlKSkpdis9SXx8IiI7ZWxzZSBzd2l0Y2goQy50eXBlKXtjYXNlImVzY2FwZSI6Y2FzZSJ0ZXh0Ijp2Kz1oLnRleHQoQy50ZXh0KTticmVhaztjYXNlImh0bWwi''@;'; put 'put ''OnYrPWguaHRtbChDLnRleHQpO2JyZWFrO2Nhc2UibGluayI6dis9aC5saW5rKEMuaHJlZixDLnRpdGxlLHRoaXMucGFyc2VJbmxpbmUoQy50b2tlbnMsaCkpO2JyZWFrO2Nhc2UiaW1hZ2UiOnYrPWguaW1hZ2UoQy5ocmVmLEMudGl0bGUsQy50ZXh0KTticmVhaztjYXNlInN0cm9uZyI6dis9''@;'; put 'put ''aC5zdHJvbmcodGhpcy5wYXJzZUlubGluZShDLnRva2VucyxoKSk7YnJlYWs7Y2FzZSJlbSI6dis9aC5lbSh0aGlzLnBhcnNlSW5saW5lKEMudG9rZW5zLGgpKTticmVhaztjYXNlImNvZGVzcGFuIjp2Kz1oLmNvZGVzcGFuKEMudGV4dCk7YnJlYWs7Y2FzZSJiciI6dis9aC5icigpO2JyZWFr''@;'; put 'put ''O2Nhc2UiZGVsIjp2Kz1oLmRlbCh0aGlzLnBhcnNlSW5saW5lKEMudG9rZW5zLGgpKTticmVhaztkZWZhdWx0Ontjb25zdCB1ZT0nVG9rZW4gd2l0aCAiJytDLnR5cGUrJyIgdHlwZSB3YXMgbm90IGZvdW5kLic7aWYodGhpcy5vcHRpb25zLnNpbGVudClyZXR1cm4gdm9pZCBjb25zb2xlLmVy''@;'; put 'put ''cm9yKHVlKTt0aHJvdyBuZXcgRXJyb3IodWUpfX1yZXR1cm4gdn19ZnVuY3Rpb24gZWwoZCxnLGgpe2lmKG51bGw9PWQpdGhyb3cgbmV3IEVycm9yKCJtYXJrZWQoKTogaW5wdXQgcGFyYW1ldGVyIGlzIHVuZGVmaW5lZCBvciBudWxsIik7aWYoInN0cmluZyIhPXR5cGVvZiBkKXRocm93IG5l''@;'; put 'put ''dyBFcnJvcigibWFya2VkKCk6IGlucHV0IHBhcmFtZXRlciBpcyBvZiB0eXBlICIrT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpKyIsIHN0cmluZyBleHBlY3RlZCIpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBnJiYoaD1nLGc9bnVsbCksJHdlKGc9dzgoe30sZWwuZGVmYXVsdHMs''@;'; put 'put ''Z3x8e30pKSxoKXtjb25zdCB2PWcuaGlnaGxpZ2h0O2xldCB5O3RyeXt5PUN2LmxleChkLGcpfWNhdGNoKFope3JldHVybiBoKFopfWNvbnN0IEM9ZnVuY3Rpb24oWil7bGV0IHVlO2lmKCFaKXRyeXtnLndhbGtUb2tlbnMmJmVsLndhbGtUb2tlbnMoeSxnLndhbGtUb2tlbnMpLHVlPWt2LnBh''@;'; put 'put ''cnNlKHksZyl9Y2F0Y2goX2Upe1o9X2V9cmV0dXJuIGcuaGlnaGxpZ2h0PXYsWj9oKFopOmgobnVsbCx1ZSl9O2lmKCF2fHx2Lmxlbmd0aDwzfHwoZGVsZXRlIGcuaGlnaGxpZ2h0LCF5Lmxlbmd0aCkpcmV0dXJuIEMoKTtsZXQgST0wO3JldHVybiBlbC53YWxrVG9rZW5zKHksZnVuY3Rpb24o''@;'; put 'put ''Wil7ImNvZGUiPT09Wi50eXBlJiYoSSsrLHNldFRpbWVvdXQoKCk9Pnt2KFoudGV4dCxaLmxhbmcsZnVuY3Rpb24odWUsX2Upe2lmKHVlKXJldHVybiBDKHVlKTtudWxsIT1fZSYmX2UhPT1aLnRleHQmJihaLnRleHQ9X2UsWi5lc2NhcGVkPSEwKSxJLS0sMD09PUkmJkMoKX0pfSwwKSl9KSx2''@;'; put 'put ''b2lkKDA9PT1JJiZDKCkpfXRyeXtjb25zdCB2PUN2LmxleChkLGcpO3JldHVybiBnLndhbGtUb2tlbnMmJmVsLndhbGtUb2tlbnModixnLndhbGtUb2tlbnMpLGt2LnBhcnNlKHYsZyl9Y2F0Y2godil7aWYodi5tZXNzYWdlKz0iXG5QbGVhc2UgcmVwb3J0IHRoaXMgdG8gaHR0cHM6Ly9naXRo''@;'; put 'put ''dWIuY29tL21hcmtlZGpzL21hcmtlZC4iLGcuc2lsZW50KXJldHVybiI8cD5BbiBlcnJvciBvY2N1cnJlZDo8L3A+PHByZT4iK25mKHYubWVzc2FnZSsiIiwhMCkrIjwvcHJlPiI7dGhyb3cgdn19ZWwub3B0aW9ucz1lbC5zZXRPcHRpb25zPWZ1bmN0aW9uKGQpe3JldHVybiB3OChlbC5kZWZh''@;'; put 'put ''dWx0cyxkKSxmdW5jdGlvbiBsamUoZCl7aU89ZH0oZWwuZGVmYXVsdHMpLGVsfSxlbC5nZXREZWZhdWx0cz1mdW5jdGlvbiBVd2UoKXtyZXR1cm57YmFzZVVybDpudWxsLGJyZWFrczohMSxleHRlbnNpb25zOm51bGwsZ2ZtOiEwLGhlYWRlcklkczohMCxoZWFkZXJQcmVmaXg6IiIsaGlnaGxp''@;'; put 'put ''Z2h0Om51bGwsbGFuZ1ByZWZpeDoibGFuZ3VhZ2UtIixtYW5nbGU6ITAscGVkYW50aWM6ITEscmVuZGVyZXI6bnVsbCxzYW5pdGl6ZTohMSxzYW5pdGl6ZXI6bnVsbCxzaWxlbnQ6ITEsc21hcnRMaXN0czohMSxzbWFydHlwYW50czohMSx0b2tlbml6ZXI6bnVsbCx3YWxrVG9rZW5zOm51bGws''@;'; put 'put ''eGh0bWw6ITF9fSxlbC5kZWZhdWx0cz1pTyxlbC51c2U9ZnVuY3Rpb24oLi4uZCl7Y29uc3QgZz13OCh7fSwuLi5kKSxoPWVsLmRlZmF1bHRzLmV4dGVuc2lvbnN8fHtyZW5kZXJlcnM6e30sY2hpbGRUb2tlbnM6e319O2xldCB2O2QuZm9yRWFjaCh5PT57aWYoeS5leHRlbnNpb25zJiYodj0h''@;'; put 'put ''MCx5LmV4dGVuc2lvbnMuZm9yRWFjaChDPT57aWYoIUMubmFtZSl0aHJvdyBuZXcgRXJyb3IoImV4dGVuc2lvbiBuYW1lIHJlcXVpcmVkIik7aWYoQy5yZW5kZXJlcil7Y29uc3QgST1oLnJlbmRlcmVycz9oLnJlbmRlcmVyc1tDLm5hbWVdOm51bGw7aC5yZW5kZXJlcnNbQy5uYW1lXT1JP2Z1''@;'; put 'put ''bmN0aW9uKC4uLlope2xldCB1ZT1DLnJlbmRlcmVyLmFwcGx5KHRoaXMsWik7cmV0dXJuITE9PT11ZSYmKHVlPUkuYXBwbHkodGhpcyxaKSksdWV9OkMucmVuZGVyZXJ9aWYoQy50b2tlbml6ZXIpe2lmKCFDLmxldmVsfHwiYmxvY2siIT09Qy5sZXZlbCYmImlubGluZSIhPT1DLmxldmVsKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiZXh0ZW5zaW9uIGxldmVsIG11c3QgYmUgJ2Jsb2NrJyBvciAnaW5saW5lJyIpO2hbQy5sZXZlbF0/aFtDLmxldmVsXS51bnNoaWZ0KEMudG9rZW5pemVyKTpoW0MubGV2ZWxdPVtDLnRva2VuaXplcl0sQy5zdGFydCYmKCJibG9jayI9PT1DLmxldmVsP2guc3RhcnRC''@;'; put 'put ''bG9jaz9oLnN0YXJ0QmxvY2sucHVzaChDLnN0YXJ0KTpoLnN0YXJ0QmxvY2s9W0Muc3RhcnRdOiJpbmxpbmUiPT09Qy5sZXZlbCYmKGguc3RhcnRJbmxpbmU/aC5zdGFydElubGluZS5wdXNoKEMuc3RhcnQpOmguc3RhcnRJbmxpbmU9W0Muc3RhcnRdKSl9Qy5jaGlsZFRva2VucyYmKGguY2hp''@;'; put 'put ''bGRUb2tlbnNbQy5uYW1lXT1DLmNoaWxkVG9rZW5zKX0pKSx5LnJlbmRlcmVyKXtjb25zdCBDPWVsLmRlZmF1bHRzLnJlbmRlcmVyfHxuZXcgU1o7Zm9yKGNvbnN0IEkgaW4geS5yZW5kZXJlcil7Y29uc3QgWj1DW0ldO0NbSV09KC4uLnVlKT0+e2xldCBfZT15LnJlbmRlcmVyW0ldLmFwcGx5''@;'; put 'put ''KEMsdWUpO3JldHVybiExPT09X2UmJihfZT1aLmFwcGx5KEMsdWUpKSxfZX19Zy5yZW5kZXJlcj1DfWlmKHkudG9rZW5pemVyKXtjb25zdCBDPWVsLmRlZmF1bHRzLnRva2VuaXplcnx8bmV3IE5oZTtmb3IoY29uc3QgSSBpbiB5LnRva2VuaXplcil7Y29uc3QgWj1DW0ldO0NbSV09KC4uLnVl''@;'; put 'put ''KT0+e2xldCBfZT15LnRva2VuaXplcltJXS5hcHBseShDLHVlKTtyZXR1cm4hMT09PV9lJiYoX2U9Wi5hcHBseShDLHVlKSksX2V9fWcudG9rZW5pemVyPUN9aWYoeS53YWxrVG9rZW5zKXtjb25zdCBDPWVsLmRlZmF1bHRzLndhbGtUb2tlbnM7Zy53YWxrVG9rZW5zPWZ1bmN0aW9uKEkpe3ku''@;'; put 'put ''d2Fsa1Rva2Vucy5jYWxsKHRoaXMsSSksQyYmQy5jYWxsKHRoaXMsSSl9fXYmJihnLmV4dGVuc2lvbnM9aCksZWwuc2V0T3B0aW9ucyhnKX0pfSxlbC53YWxrVG9rZW5zPWZ1bmN0aW9uKGQsZyl7Zm9yKGNvbnN0IGggb2YgZClzd2l0Y2goZy5jYWxsKGVsLGgpLGgudHlwZSl7Y2FzZSJ0YWJs''@;'; put 'put ''ZSI6Zm9yKGNvbnN0IHYgb2YgaC5oZWFkZXIpZWwud2Fsa1Rva2Vucyh2LnRva2VucyxnKTtmb3IoY29uc3QgdiBvZiBoLnJvd3MpZm9yKGNvbnN0IHkgb2YgdillbC53YWxrVG9rZW5zKHkudG9rZW5zLGcpO2JyZWFrO2Nhc2UibGlzdCI6ZWwud2Fsa1Rva2VucyhoLml0ZW1zLGcpO2JyZWFr''@;'; put 'put ''O2RlZmF1bHQ6ZWwuZGVmYXVsdHMuZXh0ZW5zaW9ucyYmZWwuZGVmYXVsdHMuZXh0ZW5zaW9ucy5jaGlsZFRva2VucyYmZWwuZGVmYXVsdHMuZXh0ZW5zaW9ucy5jaGlsZFRva2Vuc1toLnR5cGVdP2VsLmRlZmF1bHRzLmV4dGVuc2lvbnMuY2hpbGRUb2tlbnNbaC50eXBlXS5mb3JFYWNoKGZ1''@;'; put 'put ''bmN0aW9uKHYpe2VsLndhbGtUb2tlbnMoaFt2XSxnKX0pOmgudG9rZW5zJiZlbC53YWxrVG9rZW5zKGgudG9rZW5zLGcpfX0sZWwucGFyc2VJbmxpbmU9ZnVuY3Rpb24oZCxnKXtpZihudWxsPT1kKXRocm93IG5ldyBFcnJvcigibWFya2VkLnBhcnNlSW5saW5lKCk6IGlucHV0IHBhcmFtZXRl''@;'; put 'put ''ciBpcyB1bmRlZmluZWQgb3IgbnVsbCIpO2lmKCJzdHJpbmciIT10eXBlb2YgZCl0aHJvdyBuZXcgRXJyb3IoIm1hcmtlZC5wYXJzZUlubGluZSgpOiBpbnB1dCBwYXJhbWV0ZXIgaXMgb2YgdHlwZSAiK09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKSsiLCBzdHJpbmcgZXhwZWN0''@;'; put 'put ''ZWQiKTskd2UoZz13OCh7fSxlbC5kZWZhdWx0cyxnfHx7fSkpO3RyeXtjb25zdCBoPUN2LmxleElubGluZShkLGcpO3JldHVybiBnLndhbGtUb2tlbnMmJmVsLndhbGtUb2tlbnMoaCxnLndhbGtUb2tlbnMpLGt2LnBhcnNlSW5saW5lKGgsZyl9Y2F0Y2goaCl7aWYoaC5tZXNzYWdlKz0iXG5Q''@;'; put 'put ''bGVhc2UgcmVwb3J0IHRoaXMgdG8gaHR0cHM6Ly9naXRodWIuY29tL21hcmtlZGpzL21hcmtlZC4iLGcuc2lsZW50KXJldHVybiI8cD5BbiBlcnJvciBvY2N1cnJlZDo8L3A+PHByZT4iK25mKGgubWVzc2FnZSsiIiwhMCkrIjwvcHJlPiI7dGhyb3cgaH19LGVsLlBhcnNlcj1rdixlbC5wYXJz''@;'; put 'put ''ZXI9a3YucGFyc2UsZWwuUmVuZGVyZXI9U1osZWwuVGV4dFJlbmRlcmVyPW5iZSxlbC5MZXhlcj1DdixlbC5sZXhlcj1Ddi5sZXgsZWwuVG9rZW5pemVyPU5oZSxlbC5TbHVnZ2VyPXJiZSxlbC5wYXJzZT1lbDtjb25zdCBramU9WyIqIl07bGV0IFZoZT0oKCk9PntjbGFzcyBke2NvbnN0cnVj''@;'; put 'put ''dG9yKCl7dGhpcy5fYnV0dG9uQ2xpY2skPW5ldyAkZSx0aGlzLmNvcGllZCQ9dGhpcy5fYnV0dG9uQ2xpY2skLnBpcGUoWWgoKCk9Pm5yKGFhKCEwKSxmdW5jdGlvbiByamUoZD0wLGcsaCl7bGV0IHY9LTE7cmV0dXJuIFl3ZShnKT92PU51bWJlcihnKTwxPzE6TnVtYmVyKGcpOnd0KGcpJiYo''@;'; put 'put ''aD1nKSx3dChoKXx8KGg9cFYpLG5ldyBGKHk9Pntjb25zdCBDPVl3ZShkKT9kOitkLWgubm93KCk7cmV0dXJuIGguc2NoZWR1bGUoaWplLEMse2luZGV4OjAscGVyaW9kOnYsc3Vic2NyaWJlcjp5fSl9KX0oM2UzKS5waXBlKEc1KCExKSkpKSxmdW5jdGlvbiBBWChkLGcpe3JldHVybiBoPT5o''@;'; put 'put ''LmxpZnQobmV3IFlzZShkLGcpKX0oKSxmdW5jdGlvbiBvamUoZCxnLGgpe2xldCB2O3JldHVybiB2PWQmJiJvYmplY3QiPT10eXBlb2YgZD9kOntidWZmZXJTaXplOmQsd2luZG93VGltZTpnLHJlZkNvdW50OiExLHNjaGVkdWxlcjpofSx5PT55LmxpZnQoZnVuY3Rpb24gYWplKHtidWZmZXJT''@;'; put 'put ''aXplOmQ9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHdpbmRvd1RpbWU6Zz1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkscmVmQ291bnQ6aCxzY2hlZHVsZXI6dn0pe2xldCB5LEksQz0wLFo9ITEsdWU9ITE7cmV0dXJuIGZ1bmN0aW9uKEJlKXtsZXQgTmU7QysrLCF5fHxaPyhaPSExLHk9bmV3''@;'; put 'put ''IHhrKGQsZyx2KSxOZT15LnN1YnNjcmliZSh0aGlzKSxJPUJlLnN1YnNjcmliZSh7bmV4dChLZSl7eS5uZXh0KEtlKX0sZXJyb3IoS2Upe1o9ITAseS5lcnJvcihLZSl9LGNvbXBsZXRlKCl7dWU9ITAsST12b2lkIDAseS5jb21wbGV0ZSgpfX0pLHVlJiYoST12b2lkIDApKTpOZT15LnN1YnNj''@;'; put 'put ''cmliZSh0aGlzKSx0aGlzLmFkZCgoKT0+e0MtLSxOZS51bnN1YnNjcmliZSgpLE5lPXZvaWQgMCxJJiYhdWUmJmgmJjA9PT1DJiYoSS51bnN1YnNjcmliZSgpLEk9dm9pZCAwLHk9dm9pZCAwKX0pfX0odikpfSgxKSksdGhpcy5jb3BpZWRUZXh0JD10aGlzLmNvcGllZCQucGlwZShONSghMSks''@;'; put 'put ''bXQoaD0+aD8iQ29waWVkIjoiQ29weSIpKX1vbkNvcHlUb0NsaXBib2FyZENsaWNrKCl7dGhpcy5fYnV0dG9uQ2xpY2skLm5leHQoKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbIm1h''@;'; put 'put ''cmtkb3duLWNsaXBib2FyZCJdXSxkZWNsczo0LHZhcnM6Nyxjb25zdHM6W1sxLCJtYXJrZG93bi1jbGlwYm9hcmQtYnV0dG9uIiwzLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKG50KDAsImJ1dHRvbiIsMCksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2Lm9u''@;'; put 'put ''Q29weVRvQ2xpcGJvYXJkQ2xpY2soKX0pLG5uKDEsImFzeW5jIiksWXQoMiksbm4oMywiYXN5bmMiKSxvdCgpKSwyJmgmJihGaSgiY29waWVkIix6dCgxLDMsdi5jb3BpZWQkKSksdXQoMiksamkoenQoMyw1LHYuY29waWVkVGV4dCQpKSl9LGRlcGVuZGVuY2llczpbV2hdLGVuY2Fwc3VsYXRp''@;'; put 'put ''b246MixjaGFuZ2VEZXRlY3Rpb246MH0pLGR9KSgpO2NsYXNzIEVqZXt9dmFyIE1aPSgoKT0+KGZ1bmN0aW9uKGQpe2QuQ29tbWFuZExpbmU9ImNvbW1hbmQtbGluZSIsZC5MaW5lSGlnaGxpZ2h0PSJsaW5lLWhpZ2hsaWdodCIsZC5MaW5lTnVtYmVycz0ibGluZS1udW1iZXJzIn0oTVp8fChN''@;'; put 'put ''Wj17fSkpLE1aKSkoKTtjbGFzcyBUamV7fWNvbnN0IGliZT1uZXcgemUoIlNFQ1VSSVRZX0NPTlRFWFQiKTtsZXQgamhlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLFope3RoaXMucGxhdGZvcm09aCx0aGlzLnNlY3VyaXR5Q29udGV4dD12LHRoaXMuaHR0cD15LHRoaXMu''@;'; put 'put ''Y2xpcGJvYXJkT3B0aW9ucz1DLHRoaXMuc2FuaXRpemVyPVosdGhpcy5ERUZBVUxUX1BBUlNFX09QVElPTlM9e2RlY29kZUh0bWw6ITEsaW5saW5lOiExLGVtb2ppOiExLG1lcm1haWQ6ITEsbWFya2VkT3B0aW9uczp2b2lkIDB9LHRoaXMuREVGQVVMVF9SRU5ERVJfT1BUSU9OUz17Y2xpcGJv''@;'; put 'put ''YXJkOiExLGNsaXBib2FyZE9wdGlvbnM6dm9pZCAwLGthdGV4OiExLGthdGV4T3B0aW9uczp2b2lkIDAsbWVybWFpZDohMSxtZXJtYWlkT3B0aW9uczp2b2lkIDB9LHRoaXMuREVGQVVMVF9NQVJLRURfT1BUSU9OUz17cmVuZGVyZXI6bmV3IFNafSx0aGlzLkRFRkFVTFRfS0FURVhfT1BUSU9O''@;'; put 'put ''Uz17ZGVsaW1pdGVyczpbe2xlZnQ6IiQkIixyaWdodDoiJCQiLGRpc3BsYXk6ITB9LHtsZWZ0OiIkIixyaWdodDoiJCIsZGlzcGxheTohMX0se2xlZnQ6IlxcKCIscmlnaHQ6IlxcKSIsZGlzcGxheTohMX0se2xlZnQ6IlxcYmVnaW57ZXF1YXRpb259IixyaWdodDoiXFxlbmR7ZXF1YXRpb259''@;'; put 'put ''IixkaXNwbGF5OiEwfSx7bGVmdDoiXFxiZWdpbnthbGlnbn0iLHJpZ2h0OiJcXGVuZHthbGlnbn0iLGRpc3BsYXk6ITB9LHtsZWZ0OiJcXGJlZ2lue2FsaWduYXR9IixyaWdodDoiXFxlbmR7YWxpZ25hdH0iLGRpc3BsYXk6ITB9LHtsZWZ0OiJcXGJlZ2lue2dhdGhlcn0iLHJpZ2h0OiJcXGVu''@;'; put 'put ''ZHtnYXRoZXJ9IixkaXNwbGF5OiEwfSx7bGVmdDoiXFxiZWdpbntDRH0iLHJpZ2h0OiJcXGVuZHtDRH0iLGRpc3BsYXk6ITB9LHtsZWZ0OiJcXFsiLHJpZ2h0OiJcXF0iLGRpc3BsYXk6ITB9XX0sdGhpcy5ERUZBVUxUX01FUk1BSURfT1BUSU9OUz17c3RhcnRPbkxvYWQ6ITF9LHRoaXMuREVG''@;'; put 'put ''QVVMVF9DTElQQk9BUkRfT1BUSU9OUz17YnV0dG9uQ29tcG9uZW50OnZvaWQgMH0sdGhpcy5fcmVsb2FkJD1uZXcgJGUsdGhpcy5yZWxvYWQkPXRoaXMuX3JlbG9hZCQuYXNPYnNlcnZhYmxlKCksdGhpcy5vcHRpb25zPUl9Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy5fb3B0aW9uc31zZXQg''@;'; put 'put ''b3B0aW9ucyhoKXt0aGlzLl9vcHRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLkRFRkFVTFRfTUFSS0VEX09QVElPTlMpLGgpfWdldCByZW5kZXJlcigpe3JldHVybiB0aGlzLm9wdGlvbnMucmVuZGVyZXJ9c2V0IHJlbmRlcmVyKGgpe3RoaXMub3B0aW9ucy5yZW5k''@;'; put 'put ''ZXJlcj1ofXBhcnNlKGgsdj10aGlzLkRFRkFVTFRfUEFSU0VfT1BUSU9OUyl7Y29uc3R7ZGVjb2RlSHRtbDp5LGlubGluZTpDLGVtb2ppOkksbWVybWFpZDpaLG1hcmtlZE9wdGlvbnM6dWU9dGhpcy5vcHRpb25zfT12O1omJih0aGlzLnJlbmRlcmVyPXRoaXMuZXh0ZW5kUmVuZGVyZXIodWUu''@;'; put 'put ''cmVuZGVyZXJ8fG5ldyBTWikpO2NvbnN0IF9lPXRoaXMudHJpbUluZGVudGF0aW9uKGgpLEJlPXk/dGhpcy5kZWNvZGVIdG1sKF9lKTpfZSxOZT1JP3RoaXMucGFyc2VFbW9qaShCZSk6QmUsS2U9dGhpcy5wYXJzZU1hcmtlZChOZSx1ZSxDKTtyZXR1cm4gdGhpcy5zYW5pdGl6ZXIuc2FuaXRp''@;'; put 'put ''emUodGhpcy5zZWN1cml0eUNvbnRleHQsS2UpfHwiIn1yZW5kZXIoaCx2PXRoaXMuREVGQVVMVF9SRU5ERVJfT1BUSU9OUyx5KXtjb25zdHtjbGlwYm9hcmQ6QyxjbGlwYm9hcmRPcHRpb25zOkksa2F0ZXg6WixrYXRleE9wdGlvbnM6dWUsbWVybWFpZDpfZSxtZXJtYWlkT3B0aW9uczpCZX09''@;'; put 'put ''djtDJiZ0aGlzLnJlbmRlckNsaXBib2FyZChoLHksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5ERUZBVUxUX0NMSVBCT0FSRF9PUFRJT05TKSx0aGlzLmNsaXBib2FyZE9wdGlvbnMpLEkpKSxaJiZ0aGlzLnJlbmRlckthdGV4KGgsT2JqZWN0LmFz''@;'; put 'put ''c2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuREVGQVVMVF9LQVRFWF9PUFRJT05TKSx1ZSkpLF9lJiZ0aGlzLnJlbmRlck1lcm1haWQoaCxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5ERUZBVUxUX01FUk1BSURfT1BUSU9OUyksQmUpKSx0aGlzLmhpZ2hsaWdodChoKX1y''@;'; put 'put ''ZWxvYWQoKXt0aGlzLl9yZWxvYWQkLm5leHQoKX1nZXRTb3VyY2UoaCl7aWYoIXRoaXMuaHR0cCl0aHJvdyBuZXcgRXJyb3IoIltuZ3gtbWFya2Rvd25dIFdoZW4gdXNpbmcgdGhlIGBzcmNgIGF0dHJpYnV0ZSB5b3UgKmhhdmUgdG8qIHBhc3MgdGhlIGBIdHRwQ2xpZW50YCBhcyBhIHBhcmFt''@;'; put 'put ''ZXRlciBvZiB0aGUgYGZvclJvb3RgIG1ldGhvZC4gU2VlIFJFQURNRSBmb3IgbW9yZSBpbmZvcm1hdGlvbiIpO3JldHVybiB0aGlzLmh0dHAuZ2V0KGgse3Jlc3BvbnNlVHlwZToidGV4dCJ9KS5waXBlKG10KHY9PnRoaXMuaGFuZGxlRXh0ZW5zaW9uKGgsdikpKX1oaWdobGlnaHQoaCl7aWYo''@;'; put 'put ''IVNsKHRoaXMucGxhdGZvcm0pfHwidW5kZWZpbmVkIj09dHlwZW9mIFByaXNtfHx2b2lkIDA9PT1QcmlzbS5oaWdobGlnaHRBbGxVbmRlcilyZXR1cm47aHx8KGg9ZG9jdW1lbnQpO2NvbnN0IHY9aC5xdWVyeVNlbGVjdG9yQWxsKCdwcmUgY29kZTpub3QoW2NsYXNzKj0ibGFuZ3VhZ2UtIl0p''@;'; put 'put ''Jyk7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh2LHk9PnkuY2xhc3NMaXN0LmFkZCgibGFuZ3VhZ2Utbm9uZSIpKSxQcmlzbS5oaWdobGlnaHRBbGxVbmRlcihoKX1kZWNvZGVIdG1sKGgpe2lmKCFTbCh0aGlzLnBsYXRmb3JtKSlyZXR1cm4gaDtjb25zdCB2PWRvY3VtZW50LmNyZWF0''@;'; put 'put ''ZUVsZW1lbnQoInRleHRhcmVhIik7cmV0dXJuIHYuaW5uZXJIVE1MPWgsdi52YWx1ZX1leHRlbmRSZW5kZXJlcihoKXtjb25zdCB2PWg7aWYoITA9PT12Llx1MDI3NU5neE1hcmtkb3duUmVuZGVyZXJFeHRlbmRlZClyZXR1cm4gaDtjb25zdCB5PWguY29kZTtyZXR1cm4gaC5jb2RlPWZ1bmN0''@;'; put 'put ''aW9uKEMsSSxaKXtyZXR1cm4ibWVybWFpZCI9PT1JP2A8ZGl2IGNsYXNzPSJtZXJtYWlkIj4ke0N9PC9kaXY+YDp5LmNhbGwodGhpcyxDLEksWil9LHYuXHUwMjc1Tmd4TWFya2Rvd25SZW5kZXJlckV4dGVuZGVkPSEwLGh9aGFuZGxlRXh0ZW5zaW9uKGgsdil7Y29uc3QgeT1oLmxhc3RJbmRl''@;'; put 'put ''eE9mKCI6Ly8iKSxDPXk+LTE/aC5zdWJzdHJpbmcoeSs0KTpoLEk9Qy5sYXN0SW5kZXhPZigiLyIpLFo9ST4tMT9DLnN1YnN0cmluZyhJKzEpLnNwbGl0KCI/IilbMF06IiIsdWU9Wi5sYXN0SW5kZXhPZigiLiIpLF9lPXVlPi0xP1ouc3Vic3RyaW5nKHVlKzEpOiIiO3JldHVybiBfZSYmIm1k''@;'; put 'put ''IiE9PV9lPyJgYGAiK19lKyJcbiIrdisiXG5gYGAiOnZ9cGFyc2VNYXJrZWQoaCx2LHk9ITEpe3JldHVybiBTbCh0aGlzLnBsYXRmb3JtKT95P2VsLnBhcnNlSW5saW5lKGgsdik6ZWwucGFyc2UoaCx2KTpofXBhcnNlRW1vamkoaCl7aWYoIVNsKHRoaXMucGxhdGZvcm0pKXJldHVybiBoO2lm''@;'; put 'put ''KCJ1bmRlZmluZWQiPT10eXBlb2Ygam95cGl4ZWxzfHx2b2lkIDA9PT1qb3lwaXhlbHMuc2hvcnRuYW1lVG9Vbmljb2RlKXRocm93IG5ldyBFcnJvcigiW25neC1tYXJrZG93bl0gV2hlbiB1c2luZyB0aGUgYGVtb2ppYCBhdHRyaWJ1dGUgeW91ICpoYXZlIHRvKiBpbmNsdWRlIEVtb2ppLVRv''@;'; put 'put ''b2xraXQgZmlsZXMgdG8gYGFuZ3VsYXIuanNvbmAgb3IgdXNlIGltcG9ydHMuIFNlZSBSRUFETUUgZm9yIG1vcmUgaW5mb3JtYXRpb24iKTtyZXR1cm4gam95cGl4ZWxzLnNob3J0bmFtZVRvVW5pY29kZShoKX1yZW5kZXJLYXRleChoLHYpe2lmKFNsKHRoaXMucGxhdGZvcm0pKXtpZigidW5k''@;'; put 'put ''ZWZpbmVkIj09dHlwZW9mIGthdGV4fHwidW5kZWZpbmVkIj09dHlwZW9mIHJlbmRlck1hdGhJbkVsZW1lbnQpdGhyb3cgbmV3IEVycm9yKCJbbmd4LW1hcmtkb3duXSBXaGVuIHVzaW5nIHRoZSBga2F0ZXhgIGF0dHJpYnV0ZSB5b3UgKmhhdmUgdG8qIGluY2x1ZGUgS2FUZVggZmlsZXMgdG8g''@;'; put 'put ''YGFuZ3VsYXIuanNvbmAgb3IgdXNlIGltcG9ydHMuIFNlZSBSRUFETUUgZm9yIG1vcmUgaW5mb3JtYXRpb24iKTtyZW5kZXJNYXRoSW5FbGVtZW50KGgsdil9fXJlbmRlckNsaXBib2FyZChoLHYseSl7aWYoIVNsKHRoaXMucGxhdGZvcm0pKXJldHVybjtpZigidW5kZWZpbmVkIj09dHlwZW9m''@;'; put 'put ''IENsaXBib2FyZEpTKXRocm93IG5ldyBFcnJvcigiW25neC1tYXJrZG93bl0gV2hlbiB1c2luZyB0aGUgYGNsaXBib2FyZGAgYXR0cmlidXRlIHlvdSAqaGF2ZSB0byogaW5jbHVkZSBDbGlwYm9hcmQgZmlsZXMgdG8gYGFuZ3VsYXIuanNvbmAgb3IgdXNlIGltcG9ydHMuIFNlZSBSRUFETUUg''@;'; put 'put ''Zm9yIG1vcmUgaW5mb3JtYXRpb24iKTtpZighdil0aHJvdyBuZXcgRXJyb3IoIltuZ3gtbWFya2Rvd25dIFdoZW4gdXNpbmcgdGhlIGBjbGlwYm9hcmRgIGF0dHJpYnV0ZSB5b3UgKmhhdmUgdG8qIHByb3ZpZGUgdGhlIGB2aWV3Q29udGFpbmVyUmVmYCBwYXJhbWV0ZXIgdG8gYE1hcmtkb3du''@;'; put 'put ''U2VydmljZS5yZW5kZXIoKWAgZnVuY3Rpb24iKTtjb25zdHtidXR0b25Db21wb25lbnQ6QyxidXR0b25UZW1wbGF0ZTpJfT15LFo9aC5xdWVyeVNlbGVjdG9yQWxsKCJwcmUiKTtmb3IobGV0IHVlPTA7dWU8Wi5sZW5ndGg7dWUrKyl7Y29uc3QgX2U9Wi5pdGVtKHVlKSxCZT1kb2N1bWVudC5j''@;'; put 'put ''cmVhdGVFbGVtZW50KCJkaXYiKTtCZS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLF9lLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKEJlLF9lKSxCZS5hcHBlbmRDaGlsZChfZSk7Y29uc3QgTmU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7bGV0IEtlLHB0O05lLnN0eWxlLnBvc2l0''@;'; put 'put ''aW9uPSJhYnNvbHV0ZSIsTmUuc3R5bGUudG9wPSIuNWVtIixOZS5zdHlsZS5yaWdodD0iLjVlbSIsTmUuc3R5bGUub3BhY2l0eT0iMCIsTmUuc3R5bGUudHJhbnNpdGlvbj0ib3BhY2l0eSAyNTBtcyBlYXNlLW91dCIsQmUuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCJiZWZvcmVlbmQiLE5lKSxf''@;'; put 'put ''ZS5vbm1vdXNlb3Zlcj0oKT0+TmUuc3R5bGUub3BhY2l0eT0iMSIsX2Uub25tb3VzZW91dD0oKT0+TmUuc3R5bGUub3BhY2l0eT0iMCIsS2U9Qz92LmNyZWF0ZUNvbXBvbmVudChDKS5ob3N0VmlldzpJP3YuY3JlYXRlRW1iZWRkZWRWaWV3KEkpOnYuY3JlYXRlQ29tcG9uZW50KFZoZSkuaG9z''@;'; put 'put ''dFZpZXcsS2Uucm9vdE5vZGVzLmZvckVhY2goT3Q9PntPdC5vbm1vdXNlb3Zlcj0oKT0+TmUuc3R5bGUub3BhY2l0eT0iMSIsTmUuYXBwZW5kQ2hpbGQoT3QpLHB0PW5ldyBDbGlwYm9hcmRKUyhPdCx7dGV4dDooKT0+X2UuaW5uZXJUZXh0fSl9KSxLZS5vbkRlc3Ryb3koKCk9PnB0LmRlc3Ry''@;'; put 'put ''b3koKSl9fXJlbmRlck1lcm1haWQoaCx2PXRoaXMuREVGQVVMVF9NRVJNQUlEX09QVElPTlMpe2lmKCFTbCh0aGlzLnBsYXRmb3JtKSlyZXR1cm47aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBtZXJtYWlkfHx2b2lkIDA9PT1tZXJtYWlkLmluaXQpdGhyb3cgbmV3IEVycm9yKCJbbmd4LW1hcmtk''@;'; put 'put ''b3duXSBXaGVuIHVzaW5nIHRoZSBgbWVybWFpZGAgYXR0cmlidXRlIHlvdSAqaGF2ZSB0byogaW5jbHVkZSBNZXJtYWlkIGZpbGVzIHRvIGBhbmd1bGFyLmpzb25gIG9yIHVzZSBpbXBvcnRzLiBTZWUgUkVBRE1FIGZvciBtb3JlIGluZm9ybWF0aW9uIik7Y29uc3QgeT1oLnF1ZXJ5U2VsZWN0''@;'; put 'put ''b3JBbGwoIi5tZXJtYWlkIik7MCE9PXkubGVuZ3RoJiYobWVybWFpZC5pbml0aWFsaXplKHYpLG1lcm1haWQuaW5pdCh5KSl9dHJpbUluZGVudGF0aW9uKGgpe2lmKCFoKXJldHVybiIiO2xldCB2O3JldHVybiBoLnNwbGl0KCJcbiIpLm1hcCh5PT57bGV0IEM9djtyZXR1cm4geS5sZW5ndGg+''@;'; put 'put ''MCYmKEM9aXNOYU4oQyk/eS5zZWFyY2goL1xTfCQvKTpNYXRoLm1pbih5LnNlYXJjaCgvXFN8JC8pLEMpKSxpc05hTih2KSYmKHY9QyksQz95LnN1YnN0cmluZyhDKTp5fSkuam9pbigiXG4iKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoQ2koTDIp''@;'; put 'put ''LENpKGliZSksQ2koSEgsOCksQ2koRWplLDgpLENpKFRqZSw4KSxDaShjNykpfSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpLG9iZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5KXt0aGlzLmVsZW1lbnQ9aCx0aGlzLm1hcmtkb3du''@;'; put 'put ''U2VydmljZT12LHRoaXMudmlld0NvbnRhaW5lclJlZj15LHRoaXMuZXJyb3I9bmV3IGFyLHRoaXMubG9hZD1uZXcgYXIsdGhpcy5yZWFkeT1uZXcgYXIsdGhpcy5fY29tbWFuZExpbmU9ITEsdGhpcy5fY2xpcGJvYXJkPSExLHRoaXMuX2Vtb2ppPSExLHRoaXMuX2lubGluZT0hMSx0aGlzLl9r''@;'; put 'put ''YXRleD0hMSx0aGlzLl9saW5lSGlnaGxpZ2h0PSExLHRoaXMuX2xpbmVOdW1iZXJzPSExLHRoaXMuX21lcm1haWQ9ITEsdGhpcy5kZXN0cm95ZWQkPW5ldyAkZX1nZXQgaW5saW5lKCl7cmV0dXJuIHRoaXMuX2lubGluZX1zZXQgaW5saW5lKGgpe3RoaXMuX2lubGluZT10aGlzLmNvZXJjZUJv''@;'; put 'put ''b2xlYW5Qcm9wZXJ0eShoKX1nZXQgY2xpcGJvYXJkKCl7cmV0dXJuIHRoaXMuX2NsaXBib2FyZH1zZXQgY2xpcGJvYXJkKGgpe3RoaXMuX2NsaXBib2FyZD10aGlzLmNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShoKX1nZXQgZW1vamkoKXtyZXR1cm4gdGhpcy5fZW1vaml9c2V0IGVtb2ppKGgpe3Ro''@;'; put 'put ''aXMuX2Vtb2ppPXRoaXMuY29lcmNlQm9vbGVhblByb3BlcnR5KGgpfWdldCBrYXRleCgpe3JldHVybiB0aGlzLl9rYXRleH1zZXQga2F0ZXgoaCl7dGhpcy5fa2F0ZXg9dGhpcy5jb2VyY2VCb29sZWFuUHJvcGVydHkoaCl9Z2V0IG1lcm1haWQoKXtyZXR1cm4gdGhpcy5fbWVybWFpZH1zZXQg''@;'; put 'put ''bWVybWFpZChoKXt0aGlzLl9tZXJtYWlkPXRoaXMuY29lcmNlQm9vbGVhblByb3BlcnR5KGgpfWdldCBsaW5lSGlnaGxpZ2h0KCl7cmV0dXJuIHRoaXMuX2xpbmVIaWdobGlnaHR9c2V0IGxpbmVIaWdobGlnaHQoaCl7dGhpcy5fbGluZUhpZ2hsaWdodD10aGlzLmNvZXJjZUJvb2xlYW5Qcm9w''@;'; put 'put ''ZXJ0eShoKX1nZXQgbGluZU51bWJlcnMoKXtyZXR1cm4gdGhpcy5fbGluZU51bWJlcnN9c2V0IGxpbmVOdW1iZXJzKGgpe3RoaXMuX2xpbmVOdW1iZXJzPXRoaXMuY29lcmNlQm9vbGVhblByb3BlcnR5KGgpfWdldCBjb21tYW5kTGluZSgpe3JldHVybiB0aGlzLl9jb21tYW5kTGluZX1zZXQg''@;'; put 'put ''Y29tbWFuZExpbmUoaCl7dGhpcy5fY29tbWFuZExpbmU9dGhpcy5jb2VyY2VCb29sZWFuUHJvcGVydHkoaCl9bmdPbkNoYW5nZXMoKXt0aGlzLmxvYWRDb250ZW50KCl9bG9hZENvbnRlbnQoKXtudWxsPT10aGlzLmRhdGE/bnVsbD09dGhpcy5zcmN8fHRoaXMuaGFuZGxlU3JjKCk6dGhpcy5o''@;'; put 'put ''YW5kbGVEYXRhKCl9bmdBZnRlclZpZXdJbml0KCl7IXRoaXMuZGF0YSYmIXRoaXMuc3JjJiZ0aGlzLmhhbmRsZVRyYW5zY2x1c2lvbigpLHRoaXMubWFya2Rvd25TZXJ2aWNlLnJlbG9hZCQucGlwZShqNyh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKCk9PnRoaXMubG9hZENvbnRlbnQo''@;'; put 'put ''KSl9bmdPbkRlc3Ryb3koKXt0aGlzLmRlc3Ryb3llZCQubmV4dCgpLHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpfXJlbmRlcihoLHY9ITEpe2NvbnN0IEM9e2NsaXBib2FyZDp0aGlzLmNsaXBib2FyZCxjbGlwYm9hcmRPcHRpb25zOntidXR0b25Db21wb25lbnQ6dGhpcy5jbGlwYm9hcmRC''@;'; put 'put ''dXR0b25Db21wb25lbnQsYnV0dG9uVGVtcGxhdGU6dGhpcy5jbGlwYm9hcmRCdXR0b25UZW1wbGF0ZX0sa2F0ZXg6dGhpcy5rYXRleCxrYXRleE9wdGlvbnM6dGhpcy5rYXRleE9wdGlvbnMsbWVybWFpZDp0aGlzLm1lcm1haWQsbWVybWFpZE9wdGlvbnM6dGhpcy5tZXJtYWlkT3B0aW9uc30s''@;'; put 'put ''ST10aGlzLm1hcmtkb3duU2VydmljZS5wYXJzZShoLHtkZWNvZGVIdG1sOnYsaW5saW5lOnRoaXMuaW5saW5lLGVtb2ppOnRoaXMuZW1vamksbWVybWFpZDp0aGlzLm1lcm1haWR9KTt0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5pbm5lckhUTUw9SSx0aGlzLmhhbmRsZVBsdWdpbnMoKSx0''@;'; put 'put ''aGlzLm1hcmtkb3duU2VydmljZS5yZW5kZXIodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsQyx0aGlzLnZpZXdDb250YWluZXJSZWYpLHRoaXMucmVhZHkuZW1pdCgpfWNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShoKXtyZXR1cm4gbnVsbCE9aCYmImZhbHNlIiE9YCR7U3RyaW5nKGgpfWB9aGFu''@;'; put 'put ''ZGxlRGF0YSgpe3RoaXMucmVuZGVyKHRoaXMuZGF0YSl9aGFuZGxlU3JjKCl7dGhpcy5tYXJrZG93blNlcnZpY2UuZ2V0U291cmNlKHRoaXMuc3JjKS5zdWJzY3JpYmUoe25leHQ6aD0+e3RoaXMucmVuZGVyKGgpLHRoaXMubG9hZC5lbWl0KGgpfSxlcnJvcjpoPT50aGlzLmVycm9yLmVtaXQo''@;'; put 'put ''aCl9KX1oYW5kbGVUcmFuc2NsdXNpb24oKXt0aGlzLnJlbmRlcih0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5pbm5lckhUTUwsITApfWhhbmRsZVBsdWdpbnMoKXt0aGlzLmNvbW1hbmRMaW5lJiYodGhpcy5zZXRQbHVnaW5DbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxNWi5D''@;'; put 'put ''b21tYW5kTGluZSksdGhpcy5zZXRQbHVnaW5PcHRpb25zKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LHtkYXRhRmlsdGVyT3V0cHV0OnRoaXMuZmlsdGVyT3V0cHV0LGRhdGFIb3N0OnRoaXMuaG9zdCxkYXRhUHJvbXB0OnRoaXMucHJvbXB0LGRhdGFPdXRwdXQ6dGhpcy5vdXRwdXQsZGF0''@;'; put 'put ''YVVzZXI6dGhpcy51c2VyfSkpLHRoaXMubGluZUhpZ2hsaWdodCYmdGhpcy5zZXRQbHVnaW5PcHRpb25zKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LHtkYXRhTGluZTp0aGlzLmxpbmUsZGF0YUxpbmVPZmZzZXQ6dGhpcy5saW5lT2Zmc2V0fSksdGhpcy5saW5lTnVtYmVycyYmKHRoaXMu''@;'; put 'put ''c2V0UGx1Z2luQ2xhc3ModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsTVouTGluZU51bWJlcnMpLHRoaXMuc2V0UGx1Z2luT3B0aW9ucyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCx7ZGF0YVN0YXJ0OnRoaXMuc3RhcnR9KSl9c2V0UGx1Z2luQ2xhc3MoaCx2KXtjb25zdCB5PWgucXVl''@;'; put 'put ''cnlTZWxlY3RvckFsbCgicHJlIik7Zm9yKGxldCBDPTA7Qzx5Lmxlbmd0aDtDKyspe2NvbnN0IEk9diBpbnN0YW5jZW9mIEFycmF5P3Y6W3ZdO3kuaXRlbShDKS5jbGFzc0xpc3QuYWRkKC4uLkkpfX1zZXRQbHVnaW5PcHRpb25zKGgsdil7Y29uc3QgeT1oLnF1ZXJ5U2VsZWN0b3JBbGwoInBy''@;'; put 'put ''ZSIpO2ZvcihsZXQgQz0wO0M8eS5sZW5ndGg7QysrKU9iamVjdC5rZXlzKHYpLmZvckVhY2goST0+e2NvbnN0IFo9dltJXTtpZihaKXtjb25zdCB1ZT10aGlzLnRvTGlzcENhc2UoSSk7eS5pdGVtKEMpLnNldEF0dHJpYnV0ZSh1ZSxaLnRvU3RyaW5nKCkpfX0pfXRvTGlzcENhc2UoaCl7Y29u''@;'; put 'put ''c3Qgdj1oLm1hdGNoKC8oW0EtWl0pL2cpO2lmKCF2KXJldHVybiBoO2xldCB5PWgudG9TdHJpbmcoKTtmb3IobGV0IEM9MCxJPXYubGVuZ3RoO0M8STtDKyspeT15LnJlcGxhY2UobmV3IFJlZ0V4cCh2W0NdKSwiLSIrdltDXS50b0xvd2VyQ2FzZSgpKTtyZXR1cm4iLSI9PT15LnNsaWNlKDAs''@;'; put 'put ''MSkmJih5PXkuc2xpY2UoMSkpLHl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGJvKSxLdChqaGUpLEt0KFVpKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbIm1hcmtkb3duIl0sWyIiLCJtYXJrZG93biIsIiJdXSxpbnB1''@;'; put 'put ''dHM6e2RhdGE6ImRhdGEiLHNyYzoic3JjIixpbmxpbmU6ImlubGluZSIsY2xpcGJvYXJkOiJjbGlwYm9hcmQiLGNsaXBib2FyZEJ1dHRvbkNvbXBvbmVudDoiY2xpcGJvYXJkQnV0dG9uQ29tcG9uZW50IixjbGlwYm9hcmRCdXR0b25UZW1wbGF0ZToiY2xpcGJvYXJkQnV0dG9uVGVtcGxhdGUi''@;'; put 'put ''LGVtb2ppOiJlbW9qaSIsa2F0ZXg6ImthdGV4IixrYXRleE9wdGlvbnM6ImthdGV4T3B0aW9ucyIsbWVybWFpZDoibWVybWFpZCIsbWVybWFpZE9wdGlvbnM6Im1lcm1haWRPcHRpb25zIixsaW5lSGlnaGxpZ2h0OiJsaW5lSGlnaGxpZ2h0IixsaW5lOiJsaW5lIixsaW5lT2Zmc2V0OiJsaW5l''@;'; put 'put ''T2Zmc2V0IixsaW5lTnVtYmVyczoibGluZU51bWJlcnMiLHN0YXJ0OiJzdGFydCIsY29tbWFuZExpbmU6ImNvbW1hbmRMaW5lIixmaWx0ZXJPdXRwdXQ6ImZpbHRlck91dHB1dCIsaG9zdDoiaG9zdCIscHJvbXB0OiJwcm9tcHQiLG91dHB1dDoib3V0cHV0Iix1c2VyOiJ1c2VyIn0sb3V0cHV0''@;'; put 'put ''czp7ZXJyb3I6ImVycm9yIixsb2FkOiJsb2FkIixyZWFkeToicmVhZHkifSxmZWF0dXJlczpbRDJdLG5nQ29udGVudFNlbGVjdG9yczpramUsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihLMCgpLE5pKDApKX0sZW5jYXBzdWxhdGlvbjoyfSksZH0pKCksUGpl''@;'; put 'put ''PSgoKT0+e2NsYXNzIGR7c3RhdGljIGZvclJvb3QoaCl7cmV0dXJue25nTW9kdWxlOmQscHJvdmlkZXJzOltqaGUsaCYmaC5sb2FkZXJ8fFtdLGgmJmguY2xpcGJvYXJkT3B0aW9uc3x8W10saCYmaC5tYXJrZWRPcHRpb25zfHxbXSx7cHJvdmlkZTppYmUsdXNlVmFsdWU6aCYmbnVsbCE9aC5z''@;'; put 'put ''YW5pdGl6ZT9oLnNhbml0aXplOmEyLkhUTUx9XX19c3RhdGljIGZvckNoaWxkKCl7cmV0dXJue25nTW9kdWxlOmR9fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHtpbXBvcnRz''@;'; put 'put ''OltiYV19KSxkfSkoKTt2YXIgYWJlOyFmdW5jdGlvbihkKXtsZXQgZzt2YXIgeTtsZXQgaCx2Oyh5PWc9ZC5TZWN1cml0eUxldmVsfHwoZC5TZWN1cml0eUxldmVsPXt9KSkuU3RyaWN0PSJzdHJpY3QiLHkuTG9vc2U9Imxvb3NlIix5LkFudGlzY3JpcHQ9ImFudGlzY3JpcHQiLHkuU2FuZGJv''@;'; put 'put ''eD0ic2FuZGJveCIsZnVuY3Rpb24oeSl7eS5CYXNlPSJiYXNlIix5LkZvcmVzdD0iZm9yZXN0Iix5LkRhcms9ImRhcmsiLHkuRGVmYXVsdD0iZGVmYXVsdCIseS5OZXV0cmFsPSJuZXV0cmFsIn0oaD1kLlRoZW1lfHwoZC5UaGVtZT17fSkpLGZ1bmN0aW9uKHkpe3lbeS5EZWJ1Zz0xXT0iRGVi''@;'; put 'put ''dWciLHlbeS5JbmZvPTJdPSJJbmZvIix5W3kuV2Fybj0zXT0iV2FybiIseVt5LkVycm9yPTRdPSJFcnJvciIseVt5LkZhdGFsPTVdPSJGYXRhbCJ9KHY9ZC5Mb2dMZXZlbHx8KGQuTG9nTGV2ZWw9e30pKX0oYWJlfHwoYWJlPXt9KSk7bGV0IEZqZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9y''@;'; put 'put ''KGgpe3RoaXMuc2FzU2VydmljZT1oLHRoaXMuYWdyZWVDaGVja2VkPSExLHRoaXMuYWdyZWVCb3hMb2NrZWQ9ITAsdGhpcy5hZ3JlZUNsaWNrZWQ9ITEsdGhpcy5ldWxhX21hcmtkb3duPSdcbkVuZCBVc2VyIExpY2VuY2UgQWdyZWVtZW50IGZvciBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4''@;'; put 'put ''YWVcbj09PT09PT09PT09PT09PT09PT09XG5QbGVhc2UgcmVhZCB0aGlzIEVuZCBVc2VyIExpY2Vuc2UgQWdyZWVtZW50ICgiRVVMQSIpIGJlZm9yZSBZb3UgZG93bmxvYWQsIGluc3RhbGwsIGV4YW1pbmUsIG9yIG90aGVyd2lzZSB1c2UgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlXG5c''@;'; put 'put ''bkJ5IGRvd25sb2FkaW5nIGFuZCB1c2luZyBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUsIFlvdSBhZ3JlZSwgd2l0aG91dCByZXNlcnZhdGlvbiB0byBiZSBib3VuZCBieSB0aGUgdGVybXMgb2YgdGhpcyBFVUxBLiBJZiBZb3UgZG8gbm90IGFncmVlIHdpdGggdGhlIHRlcm1zIG9mIHRo''@;'; put 'put ''aXMgRVVMQSwgcGxlYXNlIGRvIG5vdCBwdXJjaGFzZSBhIExpY2Vuc2UgS2V5IGFuZC9vciBkb3dubG9hZCBhbmQgdXNlIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZS5cblxuSWYgWW91IGFjY2VwdCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgaW4gdGhpcyBFVUxBIG9uIGJlaGFsZiBv''@;'; put 'put ''ZiBhIGNvbXBhbnkgb3Igb3RoZXIgbGVnYWwgZW50aXR5LCBZb3Ugd2FycmFudCB0aGF0IFlvdSBoYXZlIGZ1bGwgbGVnYWwgYXV0aG9yaXR5IHRvIGFjY2VwdCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgaW4gdGhpcyBFVUxBIG9uIGJlaGFsZiBvZiBzdWNoIGNvbXBhbnkgb3Igb3RoZXIg''@;'; put 'put ''bGVnYWwgZW50aXR5LCBhbmQgdG8gbGVnYWxseSBiaW5kIHN1Y2ggY29tcGFueSBvciBvdGhlciBsZWdhbCBlbnRpdHkuXG5cbllvdSBtYXkgbm90IGFjY2VwdCB0aGlzIEVVTEEgaWYgWW91IGFyZSBub3Qgb2YgbGVnYWwgYWdlIHRvIGZvcm0gYSBiaW5kaW5nIGNvbnRyYWN0IHdpdGggNEdM''@;'; put 'put ''IEFwcHMuXG5cbiMjIERlZmluaXRpb25zXG5JbiB0aGlzIEVVTEEgdGhlIGV4cHJlc3Npb25zIGJlbG93IHNoYWxsIGhhdmUgdGhlIG1lYW5pbmcgYXNzaWduZWQgdG8gdGhlbSBpbiB0aGlzIGNsYXVzZSwgdW5sZXNzIHRoZSBjb250ZXh0IHJlcXVpcmVzIG90aGVyd2lzZTpcblxuKiAqKiJB''@;'; put 'put ''Y3RpdmF0ZSIqKiB0dXJuaW5nIHRoZSBUcmlhbCB2ZXJzaW9uIGludG8gdGhlIEZ1bGwgdmVyc2lvbiBvZiB0aGUgc2FtZSBhcHBsaWNhdGlvbiB3aXRoIHRoZSBMaWNlbnNlIEtleSBwcm92aWRlZCBieSA0R0wgQXBwcztcbiogKioiRG9jdW1lbnRhdGlvbiIqKiB0aGUgZGV0YWlsZWQgaW5m''@;'; put 'put ''b3JtYXRpb24gYWJvdXQgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlLCBpdHMgZmVhdHVyZXMgYW5kIHRoZSBzeXN0ZW0gcmVxdWlyZW1lbnRzIGFzIG1hZGUgYXZhaWxhYmxlIG9uIGh0dHBzOi8vZG9jcy5kYXRhY29udHJvbGxlci5pbywgYXMgYW1lbmRlZCBmcm9tIHRpbWUgdG8gdGlt''@;'; put 'put ''ZTtcbiogKioiRnVsbCB2ZXJzaW9uIioqIHRoZSBsaWNlbnNlIGZvciBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgZm9yIHRoZSB0ZXJtIHNwZWNpZmllZCBvbiB0aGUgd2VicGFnZSBvZiB0aGUgc3RvcmUgd2hlcmUgWW91IHB1cmNoYXNlIHRoZSBsaWNlbnNlLCBvciBpbiBhbnkgYXBw''@;'; put 'put ''bGljYWJsZSBhZ3JlZW1lbnQgY29uY2VybmluZyB0aGUgcHVyY2hhc2Ugb2YgdGhlIGxpY2Vuc2UgKGFzIHN0YW5kLWFsb25lIHByb2R1Y3Qgb3IgYXMgcGFydCBvZiBhIHN1YnNjcmlwdGlvbikgdG8gVXNlIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZTtcbiogKioiTGljZW5zZSBLZXki''@;'; put 'put ''KiogYW4gdW5pcXVlIGNvZGUgcHJvdmlkZWQgYnkgNEdMIEFwcHMsIHdoaWNoIGVuYWJsZXMgWW91IHRvIGFjdGl2YXRlIHRoZSBGdWxsIHZlcnNpb24gYnkgZW50ZXJpbmcgdGhlIGNvZGUgaW50byBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgYW5kIHRvIHN1YnNlcXVlbnRseSB1c2Ug''@;'; put 'put ''RGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlIGR1cmluZyB0aGUgYXBwbGljYWJsZSBsaWNlbnNlIHRlcm07XG4qICoqIk9wZW4gU291cmNlIFNvZnR3YXJlXHUyMDFkKiogYW55IHNvZnR3YXJlIHRoYXQgcmVxdWlyZXMgYXMgYSBjb25kaXRpb24gb2YgdXNlLCBjb3B5aW5nLCBtb2RpZmlj''@;'; put 'put ''YXRpb24gYW5kL29yIGRpc3RyaWJ1dGlvbiBvZiBzdWNoIHNvZnR3YXJlIHRoYXQgc3VjaCBzb2Z0d2FyZSBvciBvdGhlciBzb2Z0d2FyZSBpbmNvcnBvcmF0ZWQgaW50bywgZGVyaXZlZCBmcm9tIG9yIGRpc3RyaWJ1dGVkIHdpdGggc3VjaCBzb2Z0d2FyZSAoYSkgYmUgZGlzY2xvc2VkIG9y''@;'; put 'put ''IGRpc3RyaWJ1dGVkIGluIHNvdXJjZSBjb2RlIGZvcm0sIGFuZCAoYikgYmUgbGljZW5zZWQgZm9yIHRoZSBwdXJwb3NlIG9mIG1ha2luZyBhbmQvb3IgZGlzdHJpYnV0aW5nIGRlcml2YXRpdmUgd29ya3MsIGFuZCAoYykgYmUgcmVkaXN0cmlidXRhYmxlIGF0IG5vIGNoYXJnZTtcbiogKioi''@;'; put 'put ''NEdMIEFwcHMiKiogYSBicmFuZCBvd25lZCBhbmQgbWFuYWdlZCBieSBCb3dlIElPIEx0ZCwgYSBjb21wYW55IGluY29ycG9yYXRlZCBhbmQgcmVnaXN0ZXJlZCBpbiBFbmdsYW5kIHdpdGggUmVnaXN0ZXJlZCBOdW1iZXIgMDg3NzcxNzEgd2hvc2UgcmVnaXN0ZXJlZCBvZmZpY2UgaXMgYXQg''@;'; put 'put ''MjkgT2xkZmllbGQgUmQsIFdpbmRlcm1lcmUsIEN1bWJyaWEsIExBMjMgMkFaXG4qICoqIkRhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZVx1MjAxZCBhbnkgc29mdHdhcmUgYXBwbGljYXRpb24gYW5kL29yIGFsbCBvZiB0aGUgY29udGVudHMgb2YgdGhlIGZpbGVzIGFuZC9vciBvdGhlciBt''@;'; put 'put ''ZWRpYSwgaW5jbHVkaW5nIHNvZnR3YXJlIHNldHVwIGZpbGVzLCBsaWNlbnNlZCB0byBZb3UgYnkgNEdMIEFwcHMsIGluY2x1ZGluZyBhbnkgVXBkYXRlcztcbiogKioiVHJpYWwgdmVyc2lvblx1MjAxZCoqIHRoZSBsaWNlbnNlIGZvciBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgZm9y''@;'; put 'put ''IHRoZSB0ZXJtIG9mIDMwIGRheXMgdG8gVXNlIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZSBmb3IgdGhlIHNvbGUgcHVycG9zZSBvZiB0ZXN0aW5nIGFuZCBldmFsdWF0aW5nIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZTtcbiogKioiVXBkYXRlcyIqKiBhbnkgbW9kaWZpZWQgdmVy''@;'; put 'put ''c2lvbnMgYW5kIHVwZGF0ZXMgb2YsIGFuZCBhZGRpdGlvbnMgdG8gRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlIChleGNsdWRpbmcgdXBncmFkZXMgb2YgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlKTtcbiogKioiVXNlIioqIHRoZSBhY2Nlc3MsIGRvd25sb2FkLCBpbnN0YWxsLCBj''@;'; put 'put ''b3B5IG9yIGdldCBiZW5lZml0IGZyb20gdXNpbmcgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgZG9jdW1lbnRhdGlvbjtcbiogKioiWW91IioqIHlvdSwgdGhlIGZpbmFsIGFuZCB1bHRpbWF0ZSB1c2VyIG9mIERhdGEgQ29udHJvbGxlciBmb3Ig''@;'; put 'put ''U0FTXHhhZSBvciB0aGUgYXV0aG9yaXplZCByZXByZXNlbnRhdGl2ZSBvZiBhIGNvbXBhbnkgb3Igb3RoZXIgbGVnYWwgZW50aXR5IHRoYXQgd2lsbCBiZSB0aGUgZmluYWwgYW5kIHVsdGltYXRlIHVzZXIgb2YgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlICBhbmQgdGhlIGNvbXBhbnkg''@;'; put 'put ''b3Igb3RoZXIgbGVnYWwgZW50aXR5IHRoYXQgd2lsbCBiZSB0aGUgZmluYWwgYW5kIHVsdGltYXRlIHVzZXIgb2YgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlICBpZiBhcHBsaWNhYmxlLlxuXG4jIyBHZW5lcmFsXG5UaGlzIEVVTEEgYXBwbGllcyB0byBhbnkgbGljZW5zZXMgZ3JhbnRl''@;'; put 'put ''ZCB0byBZb3UgYnkgNEdMIEFwcHMgZm9yIHRoZSB1c2Ugb2YgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlLlxuQnkgcHVyY2hhc2luZyBhIExpY2Vuc2UgS2V5IGZvciBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgYW5kL29yIGRvd25sb2FkaW5nIGFuZCB1c2luZyBEYXRhIENvbnRy''@;'; put 'put ''b2xsZXIgZm9yIFNBU1x4YWUsIFlvdSBlbnRlciBpbnRvIHRoaXMgRVVMQSB3aXRoIDRHTCBBcHBzLlxuVGhpcyBFVUxBIG1heSBiZSBtb2RpZmllZCBmcm9tIHRpbWUgdG8gdGltZS4gNEdMIEFwcHMgd2lsbCBub3RpZnkgeW91IG9mIHN1Y2ggbW9kaWZpY2F0aW9ucyBvbiBpdHMgd2Vic2l0''@;'; put 'put ''ZSBvciBvdGhlcndpc2UsIGUuZy4gYnkgdXNpbmcgdGhlIGVtYWlsIGFkZHJlc3MgdXNlZCBmb3IgdGhlIHByb3Zpc2lvbiBvZiB0aGUgTGljZW5zZSBLZXkuIEFueSBtb2RpZmljYXRpb25zIHRvIHRoaXMgRVVMQSBzaGFsbCBvbmx5IGFwcGx5IHVwb24gYWNjZXB0YW5jZSBieSBZb3UuXG5c''@;'; put 'put ''biMjIExpY2Vuc2VcbjRHTCBBcHBzIGdyYW50cyBZb3UgYSBub24tZXhjbHVzaXZlLCBub24tdHJhbnNmZXJhYmxlLCBsaW1pdGVkLCByZXZvY2FibGUgbGljZW5zZSB0byBVc2UgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGlzIEVVTEEuIE1hY2Vv''@;'; put 'put ''IFBlb3BsZSByZXNlcnZlcyBhbGwgcmlnaHRzIG5vdCBleHByZXNzbHkgZ3JhbnRlZCB0byBZb3UuXG40R0wgQXBwcyBpcyBhbmQgcmVtYWlucyB0aGUgb3duZXIgb2YgYW55IGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgd2l0aCByZXNwZWN0IHRvIERhdGEgQ29udHJvbGxlciBmb3Ig''@;'; put 'put ''U0FTXHhhZS4gWW91IHNoYWxsIG5vdCBhY3F1aXJlIGFueSBvd25lcnNoaXAgdG8gRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlIGFzIHJlc3VsdCBvZiBZb3VyIHB1cmNoYXNlIG9mIHRoZSBMaWNlbnNlIEtleSBvciBZb3VyIFVzZSBvZiBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUu''@;'; put 'put ''XG5cbiMjIFBlcm1pdHRlZCB1c2UgYW5kIHJlc3RyaWN0aW9uc1xuSW4gb3JkZXIgdG8gYmUgYWJsZSB0byBpbnN0YWxsIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZSBhbmQgcmVjZWl2ZSBVcGRhdGVzIGFuZCB1cGdyYWRlcywgWW91ciBjb21wdXRlciBzaGFsbCBtZWV0IHRoZSBzeXN0''@;'; put 'put ''ZW0gcmVxdWlyZW1lbnRzIGRlc2NyaWJlZCBpbiB0aGUgRG9jdW1lbnRhdGlvbiB0aGF0IGNhbiBiZSBmb3VuZCBvbiB0aGUgd2VicGFnZTogaHR0cHM6Ly9kb2NzLmRhdGFjb250cm9sbGVyLmlvLlxuWW91IG1heSBVc2UgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlIHVwIHRvIHRoZSBs''@;'; put 'put ''aWNlbmNlZCBjYXBhY2l0eSBvbmx5IChudW1iZXIgb2YgdXNlcnMgb3IgQ1BVIGNvcmVzKS4gSWYgWW91IGV4Y2VlZCB0aGUgbGltaXQsIDRHTCBBcHBzIG1heSB0ZXJtaW5hdGUgdGhlIGFncmVlbWVudC5cbllvdSBzaGFsbCBVc2UgdGhlIEZ1bGwgdmVyc2lvbiBvciBUcmlhbCB2ZXJzaW9u''@;'; put 'put ''IGluIGFjY29yZGFuY2Ugd2l0aCBhcHBsaWNhYmxlIGxhd3MgYW5kIHNoYWxsIG5vdDpcblxuKiByZW50LCBsZWFzZSwgbGVuZCwgc2VsbCwgcmVkaXN0cmlidXRlLCBzdWJsaWNlbnNlIG9yIG90aGVyd2lzZSBjb21tZXJjaWFsbHkgZXhwbG9pdCB0aGUgTGljZW5zZSBLZXksIHRoZSBGdWxs''@;'; put 'put ''IHZlcnNpb24sIG9yIHRoZSBUcmlhbCB2ZXJzaW9uO1xuKiBhc3NpZ24gdGhlIExpY2Vuc2UgS2V5LCB0aGUgRnVsbCB2ZXJzaW9uLCBvciB0aGUgVHJpYWwgdmVyc2lvbiB3aXRob3V0IHByaW9yIHdyaXR0ZW4gYXBwcm92YWwgb2YgNEdMIEFwcHM7XG4qIFVzZSB0aGUgRnVsbCB2ZXJzaW9u''@;'; put 'put ''IG9yIFRyaWFsIHZlcnNpb24gZm9yIGFueSB1bmxhd2Z1bCBvciBpbGxlZ2FsIGFjdGl2aXR5LCBvciB0byBmYWNpbGl0YXRlIGFuIHVubGF3ZnVsIG9yIGlsbGVnYWwgYWN0aXZpdHk7XG4qIGRlbGV0ZSBvciBhbHRlciBhbnkgZGlzY2xhaW1lcnMsIHdhcm5pbmdzLCBjb3B5cmlnaHQgb3Ig''@;'; put 'put ''b3RoZXIgcHJvcHJpZXRhcnkgbm90aWNlcyBhY2NvbXBhbnlpbmcgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlOyBvclxuKiBjb3B5IChleGNlcHQgYXMgb3RoZXJ3aXNlIHByb3ZpZGVkIGluIHRoaXMgRVVMQSksIGFkYXB0LCB0cmFuc2xhdGUsIGRlY29tcGlsZSwgcmV2ZXJzZSBlbmdp''@;'; put 'put ''bmVlciwgZGlzYXNzZW1ibGUsIGF0dGVtcHQgdG8gZGVyaXZlIHRoZSBzb3VyY2UgY29kZSBvZiwgbW9kaWZ5IG9yIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZSBhbmQgdGhlIExpY2Vuc2UgS2V5IG9yIGFueSBwYXJ0cyB0aGVyZW9mLCBl''@;'; put 'put ''eGNlcHQgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgYXBwbGljYWJsZSBsYXcuXG5cbjRHTCBBcHBzIG1heSBtb2RpZnkgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlIGF0IGFueSB0aW1lIGF0IGl0cyBzb2xlIGRpc2NyZXRpb24gYW5kIHdpdGhvdXQgbm90aWNlIHRvIFlvdSwgZm9y''@;'; put 'put ''IGV4YW1wbGUgdG8gY29tcGx5IHdpdGggYXBwbGljYWJsZSBsYXcgb3IgYSBjb3VydCBvcmRlciwgdG8gYXZvaWQgYSB0aGlyZCBwYXJ0eSBpbmZyaW5nZW1lbnQgY2xhaW0gb3IgdG8gcHJvdmlkZSBVcGRhdGVzIGFuZCB1cGdyYWRlcy5cbkNlcnRhaW4gY29tcG9uZW50cyBvZiBEYXRhIENv''@;'; put 'put ''bnRyb2xsZXIgZm9yIFNBU1x4YWUgYXJlIE9wZW4gU291cmNlIFNvZnR3YXJlIGFuZCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIGFwcGxpY2FibGUgbGljZW5zZShzKSBvZiB0aGUgT3BlbiBTb3VyY2UgU29mdHdhcmUuIFlvdSBzaGFsbCBhZGhlcmUgdG8gdGhlc2UgdGVybXMg''@;'; put 'put ''YW5kIGNvbmRpdGlvbnMsIHdoaWNoIGNhbiBiZSBmb3VuZCB2aWEgdGhlIHdlYnBhZ2U6IGh0dHBzOi8vZG9jcy5kYXRhY29udHJvbGxlci5pby9saWNlbmNlcy5cblxuIyMgTWFpbnRlbmFuY2UgYW5kIHN1cHBvcnRcbjRHTCBBcHBzIHdpbGwgbm90aWZ5IFlvdSBvZiBhbnkgYXZhaWxhYmxl''@;'; put 'put ''IFVwZGF0ZXMgYW5kIHVwZ3JhZGVzLlxuWW91IHdpbGwgYmUgZW50aXRsZWQgdG8gcmVjZWl2ZSBVcGRhdGVzIGZyZWUgb2YgY2hhcmdlIGR1cmluZyB0aGUgbGljZW5jZSBwZXJpb2QsIHVwb24gcHVyY2hhc2luZyB0aGUgTGljZW5zZSBLZXkgZm9yIHRoZSBGdWxsIHZlcnNpb24uIEluIG9y''@;'; put 'put ''ZGVyIHRvIHJlY2VpdmUgVXBkYXRlcyBhZnRlciB0aGlzIHR3ZWx2ZSBtb250aHNcdTIwMTkgcGVyaW9kLCBZb3Ugd2lsbCBuZWVkIHRvIHJlbmV3IHlvdXIgTGljZW5zZSBLZXkgZm9yIHRoZSBGdWxsIHZlcnNpb247XG5BbnkgbWFpbnRlbmFuY2UgYW5kIHN1cHBvcnQgcHJvdmlkZWQgYnkg''@;'; put 'put ''NEdMIEFwcHMsIGluY2x1ZGluZyB0aGUgcHJvdmlzaW9uIG9mIFVwZGF0ZXMgYW5kIHVwZ3JhZGVzLCB3aWxsIGJlIHByb3ZpZGVkIGluIGFuIGFkZXF1YXRlIHdheSBvbiBhbiBcdTIwMWNhcyBpc1x1MjAxZCBiYXNpcyB3aXRob3V0IGFueSB3YXJyYW50eSwgYXMgc29vbiBhcyByZWFzb25h''@;'; put 'put ''Ymx5IHByYWN0aWNhYmxlLCBzdWJqZWN0IHRvIGF2YWlsYWJpbGl0eSBvZiBwZXJzb25uZWwuXG5cbiMjIFVzZSBvZiBkYXRhXG40R0wgQXBwcyBhbmQgaXRzIHN1YnNpZGlhcmllcyBtYXkgcGVyaW9kaWNhbGx5IHJlcXVlc3QgdGVjaG5pY2FsIGFuZCByZWxhdGVkIGRhdGEgY29uY2Vybmlu''@;'; put 'put ''ZyBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgWW91IGhhdmUgbGljZW5zZWQsIGluY2x1ZGluZyBhYm91dCB0aGUgdmVyc2lvbiBudW1iZXIgb2YgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlIFlvdSBoYXZlIGluc3RhbGxlZCBhbmQgYWJvdXQgdGhlIHN5c3RlbSBZb3UgaGF2ZSBp''@;'; put 'put ''bnN0YWxsZWQgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlIG9uLiA0R0wgQXBwcyB3aWxsIHVzZSBzdWNoIGRhdGEgdG8gZmFjaWxpdGF0ZSBtYWludGVuYW5jZSBhbmQgc3VwcG9ydCB3aXRoIHJlc3BlY3QgdG8gRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlICB0byBpbXByb3ZlIGl0''@;'; put 'put ''cyBwcm9kdWN0cyBhbmQgdG8gcHJvdmlkZSBmdXJ0aGVyIHNlcnZpY2VzIG9yIHRlY2hub2xvZ2llcyB0byBZb3UuXG40R0wgQXBwcyBtYXkgcHJvY2VzcyBwZXJzb25hbCBkYXRhIHdpdGggcmVzcGVjdCB0byBZb3UsIGlmIGFuZCB0byB0aGUgZXh0ZW50IG5lY2Vzc2FyeSB0byBwcm92aWRl''@;'; put 'put ''IHRoZSBMaWNlbnNlIEtleSwgdG8gcHJvdmlkZSBtYWludGVuYW5jZSBhbmQgc3VwcG9ydCB0byBZb3Ugd2l0aCByZXNwZWN0IHRvIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZSBhbmQgdG8gY29tcGx5IHdpdGggaXRzIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMgRVVMQS4gVG8gdGhlIGV4''@;'; put 'put ''dGVudCA0R0wgQXBwcyB3aWxsIHByb2Nlc3MgcGVyc29uYWwgZGF0YSwgaXQgd2lsbCBjb21wbHkgd2l0aCBpdHMgb2JsaWdhdGlvbnMgdW5kZXIgYXBwbGljYWJsZSBkYXRhIHByb3RlY3Rpb24gbGF3LiBQbGVhc2Ugc2VlIG91ciBwcml2YWN5IHN0YXRlbWVudCBmb3IgbW9yZSBkZXRhaWxz''@;'; put 'put ''IG9uIHRoZSBwcm9jZXNzaW5nIG9mIFlvdXIgcGVyc29uYWwgZGF0YSB0aGF0IDRHTCBBcHBzIGhhcyBjb2xsZWN0ZWQgYW5kIHJlY2VpdmVkIHRocm91Z2ggaXRzIHdlYnNpdGUuXG5cbiMjIERpc2NsYWltZXJcbllvdSBVc2UgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlIGF0IFlvdXIg''@;'; put 'put ''b3duIHJpc2sgYW5kIHRoZSBlbnRpcmUgcmlzayBhcyB0byBzYXRpc2ZhY3RvcnkgcXVhbGl0eSwgcGVyZm9ybWFuY2UgYW5kIGFjY3VyYWN5IGlzIHdpdGggWW91LlxuRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlIGFuZCBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBhcmUgcHJvdmlk''@;'; put 'put ''ZWQgb24gYW4gXHUyMDFjYXMgaXNcdTIwMWQgYW5kIFx1MjAxY2FzIGF2YWlsYWJsZVx1MjAxZCBiYXNpcyB3aXRob3V0IHdhcnJhbnR5IC0gZXhwcmVzcyBvciBpbXBsaWVkIC0gb2YgYW55IGtpbmQsIGFuZCA0R0wgQXBwcyBzcGVjaWZpY2FsbHkgZGlzY2xhaW1zIHRoZSB3YXJyYW50eSBv''@;'; put 'put ''ZiBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4gTm8gb3JhbCBvciB3cml0dGVuIGFkdmljZSBnaXZlbiBieSA0R0wgQXBwcywgaXRzIGRlYWxlcnMsIGRpc3RyaWJ1dG9ycywgYWdlbnRzIG9yIGVtcGxveWVlcyBzaGFsbCBjcmVhdGUgYSB3YXJyYW50eSBvciBpbiBhbnkgd2F5''@;'; put 'put ''IGluY3JlYXNlIHRoZSBzY29wZSBvZiB0aGlzIHdhcnJhbnR5IGFuZCBZb3UgbWF5IG5vdCByZWx5IHVwb24gc3VjaCBpbmZvcm1hdGlvbiBvciBhZHZpY2UuXG5cbiMjIExpYWJpbGl0eSBsaW1pdGF0aW9uXG5UaGUgbGlhYmlsaXR5IG9mIDRHTCBBcHBzIGFuZCBhbnkgdGhpcmQgcGFydHkg''@;'; put 'put ''dGhhdCBoYXMgYmVlbiBpbnZvbHZlZCBpbiB0aGUgY3JlYXRpb24sIHByb2R1Y3Rpb24sIG9yIGRlbGl2ZXJ5IG9mIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZSBmb3IgYWxsIGRhbWFnZXMgYXJpc2luZyBvdXQgb2Ygb3IgaW4gYW55IHdheSByZWxhdGluZyB0byB0aGUgRnVsbCB2ZXJz''@;'; put 'put ''aW9uLCB0aGUgVHJpYWwgdmVyc2lvbiwgdGhlIExpY2Vuc2UgS2V5LCBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgYW5kL29yIHRoaXMgRVVMQSBzaGFsbCBpbiBubyBldmVudCBleGNlZWQgdGhlIGxpc3QgcHJpY2Ugb2YgdGhlIHNvZnR3YXJlLlxuXG40R0wgQXBwcyBhbmQgYW55IHRo''@;'; put 'put ''aXJkIHBhcnR5IHRoYXQgaGFzIGJlZW4gaW52b2x2ZWQgaW4gdGhlIGNyZWF0aW9uLCBwcm9kdWN0aW9uLCBvciBkZWxpdmVyeSBvZiBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWUgYXJlIHVuZGVyIG5vIGNpcmN1bXN0YW5jZXMgbGlhYmxlIGZvciBjb25zZXF1ZW50aWFsIG9yIGluZGly''@;'; put 'put ''ZWN0IGRhbWFnZXMgKGluY2x1ZGluZyBkYW1hZ2UgZm9yIGxvc3Mgb2YgcHJvZml0LCBidXNpbmVzcyBpbnRlcnJ1cHRpb24sIGxvc3Mgb2YgZGF0YSwgYW5kIHRoZSBsaWtlIGFyaXNpbmcgb3V0IG9mIHRoZSB1c2Ugb3IgaW5hYmlsaXR5IHRvIHVzZSBEYXRhIENvbnRyb2xsZXIgZm9yIFNB''@;'; put 'put ''U1x4YWUuXG5UaGUgbGltaXRhdGlvbnMgb2YgbGlhYmlsaXR5IHJlZmVycmVkIHRvIGluIGNsYXVzZSA5LjEgYW5kIDkuMiBzaGFsbCBub3QgYXBwbHkgaW4gdGhlIGV2ZW50IHRoYXQ6IChpKSBhbnkgbmVnbGlnZW5jZSBvbiB0aGUgcGFydCBvZiA0R0wgQXBwcyBsZWFkcyB0byBkZWF0aCBv''@;'; put 'put ''ciBwaHlzaWNhbCBpbmp1cnkgb3IgKGlpKSBkYW1hZ2VzIGFyaXNlIGZyb20gdGhlIGludGVudCwgd2lsbGZ1bCBtaXNjb25kdWN0IG9yIGdyb3NzIG5lZ2xpZ2VuY2Ugb2YgNEdMIEFwcHMgb3IgdGhlIG1hbmFnZW1lbnQgb2YgNEdMIEFwcHMuXG5cbiMjIFRlcm1pbmF0aW9uXG5UaGlzIEVV''@;'; put 'put ''TEEgd2lsbCBjb250aW51ZSB0byBiZSBpbiBmb3JjZSB1bnRpbCB0aGUgZXhwaXJ5IG9yIHRlcm1pbmF0aW9uIG9mIHRoZSBGdWxsIHZlcnNpb24gb3IgdGhlIFRyaWFsIHZlcnNpb24uXG5UaGUgRnVsbCB2ZXJzaW9uIG9yIFRyaWFsIHZlcnNpb24gd2lsbCB0ZXJtaW5hdGUgYXV0b21hdGlj''@;'; put 'put ''YWxseSBhdCB0aGUgZW5kIG9mIHRoZSBhcHBsaWNhYmxlIGxpY2Vuc2UgdGVybSwgdW5sZXNzIHJlbmV3ZWQgb3IgQWN0aXZhdGVkIHByaW9yIHRvIHRoZSBlbmQgb2YgdGhlIGFwcGxpY2FibGUgbGljZW5zZSB0ZXJtLlxuXG40R0wgQXBwcyBpcyBlbnRpdGxlZCB0byB0ZXJtaW5hdGUgdGhl''@;'; put 'put ''IEZ1bGwgdmVyc2lvbiB3aXRoIGltbWVkaWF0ZSBlZmZlY3QgYW5kIHdpdGhvdXQgcHJpb3Igbm90aWNlIGluIHRoZSBldmVudCBZb3UgZmFpbCB0byBjb21wbHkgd2l0aCB0aGUgdGVybXMgaW4gdGhpcyBFVUxBLCBvciBpbiB0aGUgZXZlbnQgNEdMIEFwcHMgaXMgcmVxdWlyZWQgdG8gZG8g''@;'; put 'put ''c28gYnkgbGF3IG9yIGFuIG9yZGVyIG9mIGFuIGFwcGxpY2FibGUgY291cnQuXG5VcG9uIHRlcm1pbmF0aW9uIG9mIHRoZSBGdWxsIHZlcnNpb24gb3IgdGhlIFRyaWFsIHZlcnNpb24gWW91IHNoYWxsIGNlYXNlIGFsbCB1c2Ugb2YgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGFlLlxuWW91''@;'; put 'put ''IGFja25vd2xlZGdlIHRoYXQgdGhlIHByb3Zpc2lvbnMgb2YgdGhpcyBFVUxBLCB3aGljaCBieSB0aGVpciBuYXR1cmUgYXJlIGludGVuZGVkIHRvIHN1cnZpdmUgdGVybWluYXRpb24sIHdpbGwgcmVtYWluIGluIGVmZmVjdCBhZnRlciB0ZXJtaW5hdGlvbiBvZiB0aGlzIEVVTEEuXG5cblxu''@;'; put 'put ''IyMgR292ZXJuaW5nIGxhdyBhbmQganVyaXNkaWN0aW9uXG5UaGlzIGFncmVlbWVudCBhbmQgYW55IGRpc3B1dGVzIG9yIGNsYWltcyBhcmlzaW5nIG91dCBvZiBvciBpbiBjb25uZWN0aW9uIHdpdGggaXRzIHN1YmplY3QgbWF0dGVyIGFyZSBnb3Zlcm5lZCBieSBhbmQgY29uc3RydWVkIGlu''@;'; put 'put ''IGFjY29yZGFuY2Ugd2l0aCB0aGUgbGF3IG9mIEVuZ2xhbmQuXG5UaGUgcGFydGllcyBpcnJldm9jYWJseSBhZ3JlZSB0aGF0IHRoZSBjb3VydHMgb2YgRW5nbGFuZCBoYXZlIGV4Y2x1c2l2ZSBqdXJpc2RpY3Rpb24gdG8gc2V0dGxlIGFueSBkaXNwdXRlIG9yIGNsYWltIHRoYXQgYXJpc2Vz''@;'; put 'put ''IG91dCBvZiBvciBpbiBjb25uZWN0aW9uIHdpdGggdGhpcyBhZ3JlZW1lbnQuXG4nfW5nT25Jbml0KCl7fXRlcm1zQWdyZWVDaGFuZ2UoKXt0aGlzLmFncmVlQ2hlY2tlZCYmKHRoaXMuYWdyZWVCb3hMb2NrZWQ9ITAsdGhpcy5hZ3JlZUNsaWNrZWQ9ITAsdGhpcy5zYXNTZXJ2aWNlLnJlcXVl''@;'; put 'put ''c3QoInB1YmxpYy9yZWdpc3RlcnVzZXIiLHtTQVNDb250cm9sVGFibGU6W3tBQ0NFUFRFRDoieWVzIn1dfSkudGhlbih2PT57di5yZXR1cm4mJnYucmV0dXJuWzBdJiYiU1VDQ0VTUyI9PT12LnJldHVyblswXS5NU0cmJmxvY2F0aW9uLnJlbG9hZCgpfSkuY2F0Y2godj0+dikuZmluYWxseSgo''@;'; put 'put ''KT0+e3RoaXMuYWdyZWVCb3hMb2NrZWQ9ITEsdGhpcy5hZ3JlZUNsaWNrZWQ9ITEsdGhpcy5hZ3JlZUNoZWNrZWQ9ITF9KSl9b25DYXJkQmxvY2tTY3JvbGwoaCl7aWYoIXRoaXMuYWdyZWVDbGlja2VkKXtsZXQgdj1oLnRhcmdldDt2JiYodGhpcy5hZ3JlZUJveExvY2tlZD0hKHYuc2Nyb2xs''@;'; put 'put ''VG9wK3Yub2Zmc2V0SGVpZ2h0Pj12LnNjcm9sbEhlaWdodC0yMCkpfX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoZzIpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLXRlcm1zIl1dLGRlY2xzOjExLHZhcnM6NSxj''@;'; put 'put ''b25zdHM6W1sxLCJjYXJkIl0sWzEsImNhcmQtaGVhZGVyIl0sWzEsImNhcmQtYmxvY2siLDMsInNjcm9sbCJdLFszLCJkYXRhIl0sWzEsImNsci1jaGVja2JveC13cmFwcGVyIiwiYWNjZXB0LWNoZWNrYm94Il0sWyJ0eXBlIiwiY2hlY2tib3giLCJpZCIsImNoZWNrYm94MSIsIm5hbWUiLCJj''@;'; put 'put ''aGVja2JveC1iYXNpYyIsMSwiY2xyLWNoZWNrYm94IiwzLCJuZ01vZGVsIiwiZGlzYWJsZWQiLCJuZ01vZGVsQ2hhbmdlIiwiY2hhbmdlIl0sWyJmb3IiLCJjaGVja2JveDEiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihudCgwLCJkaXYiLDApKDEsImRpdiIsMSksWXQoMiwiIEVu''@;'; put 'put ''ZCBVc2VyIExpY2Vuc2UgQWdyZWVtZW50ICIpLG50KDMsInAiKSxZdCg0LCIgV2VsY29tZSB0byBEYXRhIENvbnRyb2xsZXIgZm9yIFNBUyEgUGxlYXNlIHJldmlldyBhbmQgYWNjZXB0IGFncmVlbWVudCBiZWxvdyBpbiBvcmRlciB0byBwcm9jZWVkLiAiKSxvdCgpKCksbnQoNSwiZGl2Iiwy''@;'; put 'put ''KSxHbigic2Nyb2xsIixmdW5jdGlvbihDKXtyZXR1cm4gdi5vbkNhcmRCbG9ja1Njcm9sbChDKX0pLENyKDYsIm1hcmtkb3duIiwzKSxvdCgpLG50KDcsImRpdiIsNCkoOCwiaW5wdXQiLDUpLEduKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5hZ3JlZUNoZWNrZWQ9Q30p''@;'; put 'put ''KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHYudGVybXNBZ3JlZUNoYW5nZSgpfSksb3QoKSxudCg5LCJsYWJlbCIsNiksWXQoMTAsIkkgaGF2ZSByZWFkIGFuZCBhZ3JlZSB0byB0aGUgdGVybXMgb2YgYWJvdmUuIiksb3QoKSgpKCkpLDImaCYmKHV0KDYpLFR0KCJkYXRhIix2LmV1bGFf''@;'; put 'put ''bWFya2Rvd24pLHV0KDEpLEZpKCJkaXNhYmxlZCIsdi5hZ3JlZUJveExvY2tlZCksdXQoMSksVHQoIm5nTW9kZWwiLHYuYWdyZWVDaGVja2VkKSgiZGlzYWJsZWQiLHYuYWdyZWVCb3hMb2NrZWQpKX0sZGVwZW5kZW5jaWVzOltJZixUcyxJcyxhdCxvYmVdLHN0eWxlczpbIltfbmdob3N0LSVD''@;'; put 'put ''T01QJV17aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDojZjVmNmZmfS5jbHItY2hlY2tib3gtd3JhcHBlci5kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNX0uY2FyZFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNv''@;'; put 'put ''bHVtbjttYXJnaW4tdG9wOjB9LmNhcmRbX25nY29udGVudC0lQ09NUCVdICAgLmNhcmQtYmxvY2tbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MTtvdmVyZmxvdzphdXRvO2JhY2tncm91bmQtY29sb3I6I2Y0ZjRmNH0uYWNjZXB0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5n''@;'; put 'put ''OjEwcHggMTVweH0iXX0pLGR9KSgpO2Z1bmN0aW9uIEhqZShkLGcpezEmZCYmKG50KDAsInAiLDIwKSxZdCgxLCIgTGljZW5jZSBrZXkgaXMgaW52YWxpZC4gV2UgY2FuJ3QgcHJvdmlkZSB5b3UgbW9yZSBkZXRhaWxzIGF0IHRoZSBtb21lbnQgIiksb3QoKSl9ZnVuY3Rpb24gTmplKGQsZyl7''@;'; put 'put ''aWYoMSZkJiZDcigwLCJwIiwyMSksMiZkKXtjb25zdCBoPVF0KDMpO1R0KCJpbm5lckhUTUwiLGgubGljZW5zZUVycm9yc1toLmtleUVycm9yXSxVOCl9fWZ1bmN0aW9uIFZqZShkLGcpe2lmKDEmZCYmKG50KDAsInAiKSgxLCJzdHJvbmciKSxZdCgyLCJEZXRhaWxzOiIpLG90KCksWXQoMyks''@;'; put 'put ''b3QoKSksMiZkKXtjb25zdCBoPVF0KDMpO3V0KDMpLEppKCIgIixoLmVycm9yRGV0YWlscywiIil9fWZ1bmN0aW9uIGpqZShkLGcpe2lmKDEmZCYmKEIwKDApLHJuKDEsSGplLDIsMCwicCIsMTgpLHJuKDIsTmplLDEsMSwicCIsMTkpLHJuKDMsVmplLDQsMSwicCIsMSksUDAoKSksMiZkKXtj''@;'; put 'put ''b25zdCBoPVF0KDIpO3V0KDEpLFR0KCJuZ0lmIiwhaC5rZXlFcnJvciksdXQoMSksVHQoIm5nSWYiLGgua2V5RXJyb3IpLHV0KDEpLFR0KCJuZ0lmIixoLmVycm9yRGV0YWlscyl9fWZ1bmN0aW9uIFpqZShkLGcpezEmZCYmKEIwKDApLG50KDEsInAiLDIwKSxZdCgyLCIgVGhlIHJlZ2lzdGVy''@;'; put 'put ''ZWQgbnVtYmVyIG9mIHVzZXJzIHJlYWNoZWQgdGhlIGxpbWl0IHNwZWNpZmllZCBmb3IgeW91ciBsaWNlbmNlLiBQbGVhc2UgY29udGFjdCAiKSxudCgzLCJhIiwyMiksWXQoNCwic3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyIpLG90KCksWXQoNSwiIG9yIHlvdXIgcmVzZWxsZXIgdG8gYXJy''@;'; put 'put ''YW5nZSBhZGRpdGlvbmFsIGxpY2VuY2VzIGZvciB0aGlzIHByb2R1Y3QuICIpLG90KCksUDAoKSl9ZnVuY3Rpb24gemplKGQsZyl7MSZkJiYoQjAoMCksbnQoMSwicCIsMjApLFl0KDIsIiBVcGRhdGUgdGhlIGxpY2Vuc2Uga2V5IGJ5IHBhc3RpbmcgbGljZW5zZSBrZXkgYW5kIGFjdGl2YXRp''@;'; put 'put ''b24ga2V5IGluIHRoZSBpbnB1dHMgYmVsb3cuICIpLG90KCksUDAoKSl9ZnVuY3Rpb24gR2plKGQsZyl7aWYoMSZkJiYobnQoMCwic3BhbiIpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PWcuaW5kZXgseT1RdCgyKTtGaSgibWlzc2tleSIseS5taXNzbWF0Y2hlZEtl''@;'; put 'put ''eSYmeS5taXNzbWF0Y2hlZEtleT09PWgpLHV0KDEpLEZoKCIgIixoLCIiLHY9PT0obnVsbD09eS5zeXNzaXRlLnZhbHVlP251bGw6eS5zeXNzaXRlLnZhbHVlLmxlbmd0aCktMT8iIjoiLCIsIiAiKX19ZnVuY3Rpb24gV2plKGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiZGl2Iiwy''@;'; put 'put ''KSgxLCJkaXYiLDMpLFl0KDIsIkxpY2VuY2luZyIpLG90KCksbnQoMywiZGl2Iiw0KSxybig0LGpqZSw0LDMsIm5nLWNvbnRhaW5lciIsNSkscm4oNSxaamUsNiwwLCJuZy1jb250YWluZXIiLDUpLHJuKDYsemplLDMsMCwibmctY29udGFpbmVyIiw1KSxudCg3LCJwIikoOCwic3Ryb25nIiks''@;'; put 'put ''WXQoOSwiU1lTU0lURToiKSxvdCgpLHJuKDEwLEdqZSwyLDQsInNwYW4iLDYpLG50KDExLCJhIiw3KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3QgeT12YSgxMyksQz12YSgxNSksST1RdCgpO3JldHVybiBhKEkuY29weVN5c3NpdGUoeSxDLEkuc3lzc2l0ZS52YWx1ZXx8W10p''@;'; put 'put ''KX0pLENyKDEyLCJjbHItaWNvbiIsOCw5KSxudCgxNCwic3BhbiIsMTAsMTEpLFl0KDE2LCJDb3B5IHRvIGNsaXBib2FyZCIpLG90KCkoKSgpLG50KDE3LCJmb3JtIiwxMikoMTgsInAiKSxZdCgxOSwiTGljZW5jZSBrZXk6Iiksb3QoKSxudCgyMCwiZGl2IiwxMykoMjEsInRleHRhcmVhIiwx''@;'; put 'put ''NCksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KCkubGljZW5zZUtleVZhbHVlPXkpfSkoIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoKS50cmltS2V5cygpKX0pLG90KCkoKSgpLG50KDIyLCJmb3JtIiwxNSkoMjMsInAi''@;'; put 'put ''KSxZdCgyNCwiQWN0aXZhdGlvbiBrZXk6Iiksb3QoKSxudCgyNSwiZGl2IiwxMykoMjYsInRleHRhcmVhIiwxNiksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KCkuYWN0aXZhdGlvbktleVZhbHVlPXkpfSkoIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIGl0KGgpLGEoUXQoKS50cmltS2V5cygpKX0pLG90KCkoKSgpLG50KDI3LCJidXR0b24iLDE3KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoKS5hcHBseUtleXMoKSl9KSxZdCgyOCwiIEFwcGx5IGxpY2VuY2Uga2V5cyAiKSxvdCgpKCkoKX1pZigyJmQp''@;'; put 'put ''e2NvbnN0IGg9UXQoKTt1dCgzKSxUdCgibmdTd2l0Y2giLGguYWN0aW9uKSx1dCgxKSxUdCgibmdTd2l0Y2hDYXNlIiwia2V5IiksdXQoMSksVHQoIm5nU3dpdGNoQ2FzZSIsImxpbWl0IiksdXQoMSksVHQoIm5nU3dpdGNoQ2FzZSIsInVwZGF0ZSIpLHV0KDQpLFR0KCJuZ0Zvck9mIixoLnN5''@;'; put 'put ''c3NpdGUudmFsdWUpLHV0KDExKSxUdCgibmdNb2RlbCIsaC5saWNlbnNlS2V5VmFsdWUpLHV0KDUpLFR0KCJuZ01vZGVsIixoLmFjdGl2YXRpb25LZXlWYWx1ZSksdXQoMSksVHQoImNsckxvYWRpbmciLGguYXBwbHlpbmdLZXlzKSgiZGlzYWJsZWQiLGgubGljZW5zZUtleVZhbHVlLmxlbmd0''@;'; put 'put ''aDwxfHxoLmFjdGl2YXRpb25LZXlWYWx1ZS5sZW5ndGg8MSl9fWZ1bmN0aW9uIFlqZShkLGcpezEmZCYmQ3IoMCwiYXBwLXRlcm1zIil9dmFyIFdxPSgoKT0+KGZ1bmN0aW9uKGQpe2Qua2V5PSJrZXkiLGQucmVnaXN0ZXI9InJlZ2lzdGVyIixkLmxpbWl0PSJsaW1pdCIsZC51cGRhdGU9InVw''@;'; put 'put ''ZGF0ZSJ9KFdxfHwoV3E9e30pKSxXcSkpKCk7bGV0IFVqZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSl7dGhpcy5yb3V0ZT1oLHRoaXMucm91dGVyPXYsdGhpcy5ldmVudFNlcnZpY2U9eSx0aGlzLnNhc1NlcnZpY2U9Qyx0aGlzLmFwcFNlcnZpY2U9SSx0aGlzLmFjdGlv''@;'; put 'put ''bj1udWxsLHRoaXMubGljZW5zZUVycm9ycz17bWlzc2luZzonTGljZW5jZSBrZXkgaXMgbWlzc2luZyAtIHBsZWFzZSBjb250YWN0IDxhIGNsYXNzPSJjb2xvci1ncmVlbiIgaHJlZj0ibWFpbHRvOiBzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvIj5zdXBwb3J0QGRhdGFjb250cm9sbGVyLmlv''@;'; put 'put ''PC9hPiBhbmQgZW50ZXIgdmFsaWQga2V5cyBiZWxvdy4nLGV4cGlyZWQ6J0xpY2VuY2Uga2V5IGlzIGV4cGlyZWQgLSBwbGVhc2UgY29udGFjdCA8YSBjbGFzcz0iY29sb3ItZ3JlZW4iIGhyZWY9Im1haWx0bzogc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyI+c3VwcG9ydEBkYXRhY29udHJv''@;'; put 'put ''bGxlci5pbzwvYT4gYW5kIGVudGVyIHZhbGlkIGtleXMgYmVsb3cuJyxpbnZhbGlkOidMaWNlbmNlIGtleSBpcyBpbnZhbGlkIC0gcGxlYXNlIGNvbnRhY3QgPGEgY2xhc3M9ImNvbG9yLWdyZWVuIiBocmVmPSJtYWlsdG86IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8iPnN1cHBvcnRAZGF0''@;'; put 'put ''YWNvbnRyb2xsZXIuaW88L2E+IGFuZCBlbnRlciB2YWxpZCBrZXlzIGJlbG93LicsbWlzc21hdGNoOidZb3VyIFNZU1NJVEUgKGJlbG93KSBpcyBub3QgZm91bmQgaW4gdGhlIGxpY2VuY2Uga2V5IC0gcGxlYXNlIGNvbnRhY3QgPGEgY2xhc3M9ImNvbG9yLWdyZWVuIiBocmVmPSJtYWlsdG86''@;'; put 'put ''IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8iPnN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW88L2E+IGFuZCBlbnRlciB2YWxpZCBrZXlzIGJlbG93Lid9LHRoaXMubGljZW5zZUtleVZhbHVlPSIiLHRoaXMuYWN0aXZhdGlvbktleVZhbHVlPSIiLHRoaXMuYXBwbHlpbmdLZXlzPSExLHRoaXMu''@;'; put 'put ''c3lzc2l0ZT10aGlzLmFwcFNlcnZpY2Uuc3lzc2l0ZSx0aGlzLmxpY2VuY2VLZXk9dGhpcy5hcHBTZXJ2aWNlLmxpY2VuY2VLZXksdGhpcy5hY3RpdmF0aW9uS2V5PXRoaXMuYXBwU2VydmljZS5hY3RpdmF0aW9uS2V5fW5nT25Jbml0KCl7dGhpcy5saWNlbnNlS2V5VmFsdWU9dGhpcy5saWNl''@;'; put 'put ''bmNlS2V5fHwiIix0aGlzLmFjdGl2YXRpb25LZXlWYWx1ZT10aGlzLmFjdGl2YXRpb25LZXl8fCIiLHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKGg9Pnt0aGlzLmtleUVycm9yPWguZXJyb3IsdGhpcy5taXNzbWF0Y2hlZEtleT1oLm1pc3NtYXRjaElkLGguZGV0YWlscyYmKHRo''@;'; put 'put ''aXMuZXJyb3JEZXRhaWxzPWF0b2IoaC5kZXRhaWxzKSl9KSx0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoaD0+e2xldCB2PWguYWN0aW9uO3YmJk9iamVjdC52YWx1ZXMoV3EpLmluY2x1ZGVzKHYpJiYodGhpcy5hY3Rpb249dil9KX10cmltS2V5cygpe3RoaXMubGljZW5zZUtleVZhbHVl''@;'; put 'put ''PXRoaXMubGljZW5zZUtleVZhbHVlLnRyaW0oKSx0aGlzLmFjdGl2YXRpb25LZXlWYWx1ZT10aGlzLmFjdGl2YXRpb25LZXlWYWx1ZS50cmltKCl9Y29weVN5c3NpdGUoaCx2LHkpe2NvbnN0IEM9eS5qb2luKCJcbiIpO25hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KEMpLnRoZW4oKCk9''@;'; put 'put ''PntoLnNldEF0dHJpYnV0ZSgic2hhcGUiLCJjaGVjayIpLGguc2V0QXR0cmlidXRlKCJjbGFzcyIsImlzLXN1Y2Nlc3MiKSx2LmlubmVyVGV4dD0iQ29waWVkISIsc2V0VGltZW91dCgoKT0+e2guc2V0QXR0cmlidXRlKCJzaGFwZSIsImNvcHkiKSxoLnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3Mi''@;'; put 'put ''KSx2LmlubmVyVGV4dD0iQ29weSB0byBjbGlwYm9hcmQifSwxZTMpfSl9YXBwbHlLZXlzKCl7dGhpcy5hcHBseWluZ0tleXM9ITAsdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoImFkbWluL3JlZ2lzdGVya2V5Iix7a2V5dXBsb2FkOlt7QUNUSVZBVElPTl9LRVk6dGhpcy5hY3RpdmF0aW9uS2V5''@;'; put 'put ''VmFsdWUsTElDRU5DRV9LRVk6dGhpcy5saWNlbnNlS2V5VmFsdWV9XX0pLnRoZW4odj0+e3YucmV0dXJuJiZ2LnJldHVyblswXSYmIlNVQ0NFU1MiPT09di5yZXR1cm5bMF0uTVNHJiZsb2NhdGlvbi5yZXBsYWNlKGxvY2F0aW9uLmhyZWYuc3BsaXQoIiMiKVswXSl9KS5maW5hbGx5KCgpPT57''@;'; put 'put ''dGhpcy5hcHBseWluZ0tleXM9ITF9KX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoUHUpLEt0KFpsKSxLdChtdSksS3QoZzIpLEt0KFI3KSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1saWNlbnNpbmciXV0sZGVj''@;'; put 'put ''bHM6Mix2YXJzOjIsY29uc3RzOltbImNsYXNzIiwiY2FyZCIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzEsImNhcmQiXSxbMSwiY2FyZC1oZWFkZXIiXSxbMSwiY2FyZC1ibG9jayIsMywibmdTd2l0Y2giXSxbNCwibmdTd2l0Y2hDYXNlIl0sWzMsIm1pc3NrZXkiLDQsIm5nRm9yIiwibmdGb3JP''@;'; put 'put ''ZiJdLFsxLCJ0b29sdGlwIiwidG9vbHRpcC1tZCIsInRvb2x0aXAtdG9wLXJpZ2h0IiwzLCJjbGljayJdLFsic2hhcGUiLCJjb3B5Iiwic2l6ZSIsIjE1IiwxLCJjdXJzb3ItcG9pbnRlciJdLFsiY29weUljb24iLCIiXSxbMSwidG9vbHRpcC1jb250ZW50Il0sWyJjb3B5VG9vbHRpcCIsIiJd''@;'; put 'put ''LFsxLCJjbHItZm9ybSIsImxpY2Vuc2Uta2V5LWZvcm0iXSxbMSwiY2xyLWNvbnRyb2wtY29udGFpbmVyIl0sWyJuYW1lIiwibGljZW5zZS1rZXktYXJlYSIsInBsYWNlaG9sZGVyIiwiUGFzdGUgbGljZW5jZSBrZXkgaGVyZSIsMSwiY2xyLXRleHRhcmVhIiwzLCJuZ01vZGVsIiwibmdNb2Rl''@;'; put 'put ''bENoYW5nZSIsIm1vdXNlbGVhdmUiXSxbMSwiY2xyLWZvcm0iLCJhY3RpdmF0aW9uLWtleS1mb3JtIl0sWyJuYW1lIiwiYWN0aXZhdGlvbi1rZXktYXJlYSIsInBsYWNlaG9sZGVyIiwiUGFzdGUgYWN0aXZhdGlvbiBrZXkgaGVyZSIsMSwiY2xyLXRleHRhcmVhIiwzLCJuZ01vZGVsIiwibmdN''@;'; put 'put ''b2RlbENoYW5nZSIsIm1vdXNlbGVhdmUiXSxbMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJhcHBseS1rZXlzIiwzLCJjbHJMb2FkaW5nIiwiZGlzYWJsZWQiLCJjbGljayJdLFsiY2xhc3MiLCJrZXktZXJyb3IiLDQsIm5nSWYiXSxbImNsYXNzIiwia2V5LWVycm9yIiwzLCJpbm5lckhUTUwiLDQs''@;'; put 'put ''Im5nSWYiXSxbMSwia2V5LWVycm9yIl0sWzEsImtleS1lcnJvciIsMywiaW5uZXJIVE1MIl0sWyJocmVmIiwibWFpbHRvOiBzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvIiwxLCJjb2xvci1ncmVlbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKHJuKDAsV2plLDI5LDksImRpdiIs''@;'; put 'put ''MCkscm4oMSxZamUsMSwwLCJhcHAtdGVybXMiLDEpKSwyJmgmJihUdCgibmdJZiIsInJlZ2lzdGVyIiE9PXYuYWN0aW9uKSx1dCgxKSxUdCgibmdJZiIsInJlZ2lzdGVyIj09PXYuYWN0aW9uKSl9LGRlcGVuZGVuY2llczpbeHMsTm8sSmQsaXAscGcsbTEsVHMsZGcsSXMsTGMsRmplLHdsLGdv''@;'; put 'put ''LHddLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17aGVpZ2h0OmNhbGMoMTAwJSAtIDk2cHgpO3BhZGRpbmc6MjBweH0uY2FyZFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDowfS5rZXktZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5taXNza2V5W19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXXtjb2xvcjojZTc0YzNjfS5saWNlbnNlLWtleS1mb3JtW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmFjdGl2YXRpb24ta2V5LWZvcm1bX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MH0ubGljZW5zZS1rZXktZm9ybVtfbmdjb250ZW50LSVDT01QJV0gICAuY2xyLWNvbnRy''@;'; put 'put ''b2wtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmFjdGl2YXRpb24ta2V5LWZvcm1bX25nY29udGVudC0lQ09NUCVdICAgLmNsci1jb250cm9sLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0ubGljZW5zZS1rZXktZm9ybVtfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAuY2xyLWNvbnRyb2wtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRleHRhcmVhW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmFjdGl2YXRpb24ta2V5LWZvcm1bX25nY29udGVudC0lQ09NUCVdICAgLmNsci1jb250cm9sLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICB0ZXh0''@;'; put 'put ''YXJlYVtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTtoZWlnaHQ6MTcwcHg7bWF4LWhlaWdodDoxNzBweDttaW4taGVpZ2h0OjE3MHB4O3Jlc2l6ZTpub25lfS5hcHBseS1rZXlzW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjEwcHg7aGVpZ2h0OjQwcHg7d2lkdGg6MjAwcHh9''@;'; put 'put ''Il19KSxkfSkoKSxaaGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMuYXBwU2VydmljZT1oLHRoaXMucm91dGVyPXZ9Y2FuQWN0aXZhdGUoaCx2KXtyZXR1cm4hIShudWxsIT12JiZ2LnVybC5pbmNsdWRlcygibGljZW5zaW5nL3VwZGF0ZSIpJiZ0aGlzLmFwcFNlcnZpY2Uu''@;'; put 'put ''aXNBcHBBY3RpdmF0ZWR8fG51bGwhPT10aGlzLmFwcFNlcnZpY2UuaXNBcHBBY3RpdmF0ZWQudmFsdWUmJiExPT09dGhpcy5hcHBTZXJ2aWNlLmlzQXBwQWN0aXZhdGVkLnZhbHVlKXx8KHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9ob21lIiksITEpfWNhbkRlYWN0aXZhdGUoaCx2LHks''@;'; put 'put ''Qyl7cmV0dXJuIG51bGw9PT10aGlzLmFwcFNlcnZpY2UuaXNBcHBBY3RpdmF0ZWQudmFsdWV8fCEhdGhpcy5hcHBTZXJ2aWNlLmlzQXBwQWN0aXZhdGVkLnZhbHVlfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShDaShSNyksQ2koWmwpKX0sZC5cdTAy''@;'; put 'put ''NzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVmYWN9KSxkfSkoKTt2YXIgWWhlLG9PLElaO2Z1bmN0aW9uIHpoZShkKXtyZXR1cm4oemhlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVy''@;'; put 'put ''biB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9TCgxMzQwMCksTCgxMzI3OCksTCg1MjMxMyksTCg3MDg2NCks''@;'; put 'put ''TCg2NDk1MiksTCg5NzA4NyksTCgzMTEyMyksTCgyNDgwKSxMKDgzMDI4KSxMKDQyNzYwKSxMKDEwNDE0KSxMKDY5MTApLEwoNTM5NTApLEwoNjM5NjcpLEwoODM1OTApLEwoMjA2NDcpLEwoNTg1OTQpLEwoNTgzMjQpLEwoOTE5NDUpLEwoNTc5NDMpLEwoOTY2NCksTCg1ODI3MiksTCgyNjU3''@;'; put 'put ''KSxMKDg2NDI3KSxMKDMzNTgzKSxMKDE4MTU4KSxMKDI4NzY0KSxMKDQ1MTM1KSxMKDM0NzcwKSxMKDY0NDE4KSxMKDE2ODI1KSxMKDMwNTcxKSxMKDc2NzQ5KSxMKDgzNjIwKTtmb3IodmFyIGxiZT0wLFlxPVsibXMiLCJtb3oiLCJ3ZWJraXQiLCJvIl0sRVo9d2luZG93LnJlcXVlc3RBbmlt''@;'; put 'put ''YXRpb25GcmFtZSxVcT13aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUseFo9MDt4WjxZcS5sZW5ndGgmJiFFWjsrK3haKUVaPXdpbmRvd1siIi5jb25jYXQoWXFbeFpdLCJSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiKV0sVXE9d2luZG93WyIiLmNvbmNhdChZcVt4Wl0sIkNhbmNlbEFuaW1hdGlv''@;'; put 'put ''bkZyYW1lIildfHx3aW5kb3dbIiIuY29uY2F0KFlxW3haXSwiQ2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lIildO2Z1bmN0aW9uIEdoZShkKXtyZXR1cm4gRVouY2FsbCh3aW5kb3csZCl9ZnVuY3Rpb24gc2JlKCl7cmV0dXJuISFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0''@;'; put 'put ''fWZ1bmN0aW9uIHViZSgpe3JldHVybiEhZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoInRlc3QiKS50ZXh0Q29udGVudH1mdW5jdGlvbiBjYmUoKXtyZXR1cm4hIXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlfWZ1bmN0aW9uIFRaKGQpe1VxLmNhbGwod2luZG93LGQpfWZ1bmN0aW9uIFdoZSgpe3Jl''@;'; put 'put ''dHVybiJvbnRvdWNoc3RhcnQiaW4gd2luZG93fWZ1bmN0aW9uIFVoZSgpe3JldHVybiB2b2lkIDA9PT1ZaGUmJmZ1bmN0aW9uIFFqZSgpe3ZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRBQkxFIik7ZC5zdHlsZS5ib3JkZXJTcGFjaW5nPSIwIixkLnN0eWxlLmJvcmRlcldpZHRoPSIw''@;'; put 'put ''IixkLnN0eWxlLnBhZGRpbmc9IjAiO3ZhciBnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRCT0RZIik7ZC5hcHBlbmRDaGlsZChnKSxnLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRSIikpLGcuZmlyc3RDaGlsZC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt''@;'; put 'put ''ZW50KCJURCIpKSxnLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZC5pbm5lckhUTUw9Ijx0cj48dGQ+dDxicj50PC90ZD48L3RyPiI7dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiQ0FQVElPTiIpO2guaW5uZXJIVE1MPSJjPGJyPmM8YnI+Yzxicj5jIixoLnN0eWxlLnBhZGRpbmc9IjAiLGgu''@;'; put 'put ''c3R5bGUubWFyZ2luPSIwIixkLmluc2VydEJlZm9yZShoLGcpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZCksWWhlPWQub2Zmc2V0SGVpZ2h0PDIqZC5sYXN0Q2hpbGQub2Zmc2V0SGVpZ2h0LGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZCl9KCksWWhlfWZ1bmN0aW9uIGZiZShkKXt2''@;'; put 'put ''YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuIG9PfHwob089Im9iamVjdCI9PT0oInVuZGVmaW5lZCI9PXR5cGVvZiBJbnRsPyJ1bmRlZmluZWQiOnpoZShJbnRsKSk/bmV3IEludGwuQ29sbGF0b3IoZCxnKS5jb21w''@;'; put 'put ''YXJlOiJmdW5jdGlvbiI9PXR5cGVvZiBTdHJpbmcucHJvdG90eXBlLmxvY2FsZUNvbXBhcmU/ZnVuY3Rpb24odix5KXtyZXR1cm4iIi5jb25jYXQodikubG9jYWxlQ29tcGFyZSh5KX06ZnVuY3Rpb24odix5KXtyZXR1cm4gdj09PXk/MDp2Pnk/LTE6MX0pfWZ1bmN0aW9uIGhiZSgpe2lmKHZv''@;'; put 'put ''aWQgMCE9PUlaKXJldHVybiBJWjt0cnl7dmFyIGQ9e2dldCBwYXNzaXZlKCl7SVo9ITB9fTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsZCxkKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsZCxkKX1jYXRjaChnKXtJWj0hMX1yZXR1cm4gSVp9ZnVuY3Rpb24gZGJl''@;'; put 'put ''KGQpe2Zvcih2YXIgZz1kLmxlbmd0aCxoPTA7aDxnOylkW2hdPVtkW2hdXSxoKz0xfWZ1bmN0aW9uIFFoZShkLGcpe2Zvcih2YXIgaD1nLmxlbmd0aCx2PTA7djxoOylkLnB1c2goZ1t2XSksdis9MX1mdW5jdGlvbiBEWihkKXt2YXIgZz1bXTtpZighZHx8MD09PWQubGVuZ3RofHwhZFswXXx8''@;'; put 'put ''MD09PWRbMF0ubGVuZ3RoKXJldHVybiBnO2Zvcih2YXIgaD1kLmxlbmd0aCx2PWRbMF0ubGVuZ3RoLHk9MDt5PGg7eSsrKWZvcih2YXIgQz0wO0M8djtDKyspZ1tDXXx8KGdbQ109W10pLGdbQ11beV09ZFt5XVtDXTtyZXR1cm4gZ31mdW5jdGlvbiBTdShkLGcsaCx2KXt2YXIgeT0tMSxDPWQs''@;'; put 'put ''ST1oO0FycmF5LmlzQXJyYXkoZCl8fChDPUFycmF5LmZyb20oZCkpO3ZhciBaPUMubGVuZ3RoO2Zvcih2JiZaJiYoST1DW3krPTFdKSx5Kz0xO3k8WjspST1nKEksQ1t5XSx5LEMpLHkrPTE7cmV0dXJuIEl9ZnVuY3Rpb24gZzQoZCxnKXt2YXIgaD0wLHY9ZDtBcnJheS5pc0FycmF5KGQpfHwo''@;'; put 'put ''dj1BcnJheS5mcm9tKGQpKTtmb3IodmFyIHk9di5sZW5ndGgsQz1bXSxJPS0xO2g8eTspe3ZhciBaPXZbaF07ZyhaLGgsdikmJihDW0krPTFdPVopLGgrPTF9cmV0dXJuIEN9ZnVuY3Rpb24gT2woZCxnKXt2YXIgaD0wLHY9ZDtBcnJheS5pc0FycmF5KGQpfHwodj1BcnJheS5mcm9tKGQpKTtm''@;'; put 'put ''b3IodmFyIHk9di5sZW5ndGgsQz1bXSxJPS0xO2g8eTspQ1tJKz0xXT1nKHZbaF0saCx2KSxoKz0xO3JldHVybiBDfWZ1bmN0aW9uIFVyKGQsZyl7dmFyIGg9MCx2PWQ7QXJyYXkuaXNBcnJheShkKXx8KHY9QXJyYXkuZnJvbShkKSk7Zm9yKHZhciB5PXYubGVuZ3RoO2g8eSYmITEhPT1nKHZb''@;'; put 'put ''aF0saCx2KTspaCs9MTtyZXR1cm4gZH1mdW5jdGlvbiBwYmUoZCl7cmV0dXJuIFN1KGQsZnVuY3Rpb24oZyxoKXtyZXR1cm4gZytofSwwKX1mdW5jdGlvbiBKamUoZCl7cmV0dXJuIFN1KGQsZnVuY3Rpb24oZyxoKXtyZXR1cm4gZz5oP2c6aH0sQXJyYXkuaXNBcnJheShkKT9kWzBdOnZvaWQg''@;'; put 'put ''MCl9ZnVuY3Rpb24gWGplKGQpe3JldHVybiBTdShkLGZ1bmN0aW9uKGcsaCl7cmV0dXJuIGc8aD9nOmh9LEFycmF5LmlzQXJyYXkoZCk/ZFswXTp2b2lkIDApfWZ1bmN0aW9uIEtqZShkKXtyZXR1cm4gZC5sZW5ndGg/cGJlKGQpL2QubGVuZ3RoOjB9ZnVuY3Rpb24gZ2JlKGQpe3JldHVybiBT''@;'; put 'put ''dShkLGZ1bmN0aW9uKGcsaCl7cmV0dXJuIGcuY29uY2F0KEFycmF5LmlzQXJyYXkoaCk/Z2JlKGgpOmgpfSxbXSl9ZnVuY3Rpb24gSmhlKGQpe3ZhciBnPVtdO3JldHVybiBVcihkLGZ1bmN0aW9uKGgpey0xPT09Zy5pbmRleE9mKGgpJiZnLnB1c2goaCl9KSxnfWZ1bmN0aW9uIFhoZSgpe2Zv''@;'; put 'put ''cih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGc9bmV3IEFycmF5KGQpLGg9MDtoPGQ7aCsrKWdbaF09YXJndW1lbnRzW2hdO3ZhciB2PVtdLmNvbmNhdChnKSx5PXZbMF0sQz12LnNsaWNlKDEpLEk9eTtyZXR1cm4gVXIoQyxmdW5jdGlvbihaKXtJPUkuZmlsdGVyKGZ1bmN0aW9uKHVlKXtyZXR1''@;'; put 'put ''cm4hWi5pbmNsdWRlcyh1ZSl9KX0pLEl9ZnVuY3Rpb24gJGplKCl7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgsZz1uZXcgQXJyYXkoZCksaD0wO2g8ZDtoKyspZ1toXT1hcmd1bWVudHNbaF07dmFyIHY9W10uY29uY2F0KGcpLHk9dlswXSxDPXYuc2xpY2UoMSksST15O3JldHVybiBVcihD''@;'; put 'put ''LGZ1bmN0aW9uKFope0k9SS5maWx0ZXIoZnVuY3Rpb24odWUpe3JldHVybiBaLmluY2x1ZGVzKHVlKX0pfSksSX1mdW5jdGlvbiBxamUoKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxnPW5ldyBBcnJheShkKSxoPTA7aDxkO2grKylnW2hdPWFyZ3VtZW50c1toXTt2YXIgdj1bXS5jb25j''@;'; put 'put ''YXQoZykseT12WzBdLEM9di5zbGljZSgxKSxJPW5ldyBTZXQoeSk7cmV0dXJuIFVyKEMsZnVuY3Rpb24oWil7VXIoWixmdW5jdGlvbih1ZSl7SS5oYXModWUpfHxJLmFkZCh1ZSl9KX0pLEFycmF5LmZyb20oSSl9ZnVuY3Rpb24gS2hlKGQpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9p''@;'; put 'put ''ZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiICI7cmV0dXJuIGQuc3BsaXQoZyl9ZnVuY3Rpb24gbWJlKGQsZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9''@;'; put 'put ''KTpkW2ddPWgsZH1mdW5jdGlvbiBhTyhkKXtyZXR1cm4oYU89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBsTyhkKXt2YXIgZztyZXR1cm4gQXJyYXkuaXNBcnJheShkKT9nPVtdOihnPXt9LEdsKGQsZnVuY3Rpb24oaCx2KXsiX19jaGlsZHJlbiIh''@;'; put 'put ''PT12JiYoZ1t2XT1oJiYib2JqZWN0Ij09PWFPKGgpJiYhQXJyYXkuaXNBcnJheShoKT9sTyhoKTpBcnJheS5pc0FycmF5KGgpP2gubGVuZ3RoJiYib2JqZWN0Ij09PWFPKGhbMF0pJiYhQXJyYXkuaXNBcnJheShoWzBdKT9bbE8oaFswXSldOltdOm51bGwpfSkpLGd9ZnVuY3Rpb24gU3YoZCxn''@;'; put 'put ''KXtyZXR1cm4gZy5wcm90b3R5cGUuY29uc3RydWN0b3I9ZyxkLnByb3RvdHlwZT1uZXcgZyxkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1kLGR9ZnVuY3Rpb24gSTEoZCxnLGgpe3ZhciB2PUFycmF5LmlzQXJyYXkoaCk7cmV0dXJuIEdsKGcsZnVuY3Rpb24oeSxDKXsoITE9PT12fHxoLmluY2x1''@;'; put 'put ''ZGVzKEMpKSYmKGRbQ109eSl9KSxkfWZ1bmN0aW9uIExaKGQsZyl7R2woZyxmdW5jdGlvbihoLHYpe2dbdl0mJiJvYmplY3QiPT09YU8oZ1t2XSk/KGRbdl18fChkW3ZdPUFycmF5LmlzQXJyYXkoZ1t2XSk/W106IltvYmplY3QgRGF0ZV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5j''@;'; put 'put ''YWxsKGdbdl0pP2dbdl06e30pLExaKGRbdl0sZ1t2XSkpOmRbdl09Z1t2XX0pfWZ1bmN0aW9uIGdoKGQpe3JldHVybiJvYmplY3QiPT09YU8oZCk/SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkKSk6ZH1mdW5jdGlvbiBhMyhkKXt2YXIgZz17fTtyZXR1cm4gR2woZCxmdW5jdGlvbihoLHYp''@;'; put 'put ''e2dbdl09aH0pLGd9ZnVuY3Rpb24gQjIoZCl7ZC5NSVhJTlN8fChkLk1JWElOUz1bXSk7Zm9yKHZhciBnPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZz4xP2ctMTowKSx2PTE7djxnO3YrKyloW3YtMV09YXJndW1lbnRzW3ZdO3JldHVybiBVcihoLGZ1bmN0aW9uKHkpe2QuTUlYSU5T''@;'; put 'put ''LnB1c2goeS5NSVhJTl9OQU1FKSxHbCh5LGZ1bmN0aW9uKEMsSSl7aWYodm9pZCAwIT09ZC5wcm90b3R5cGVbSV0pdGhyb3cgbmV3IEVycm9yKCJNaXhpbiBjb25mbGljdC4gUHJvcGVydHkgJyIuY29uY2F0KEksIicgYWxyZWFkeSBleGlzdCBhbmQgY2Fubm90IGJlIG92ZXJ3cml0dGVuLiIp''@;'; put 'put ''KTt2YXIgQmUsTmUsS2U7ImZ1bmN0aW9uIj09dHlwZW9mIEM/ZC5wcm90b3R5cGVbSV09QzpPYmplY3QuZGVmaW5lUHJvcGVydHkoZC5wcm90b3R5cGUsSSx7Z2V0OihCZT1JLE5lPUMsS2U9Il8iLmNvbmNhdChCZSksZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09dGhpc1tLZV0mJih0aGlz''@;'; put 'put ''W0tlXT0oZm49TmUsKEFycmF5LmlzQXJyYXkoZm4pfHx4bChmbikpJiYoZm49Z2goZm4pKSxmbikpLHRoaXNbS2VdO3ZhciBmbn0pLHNldDpmdW5jdGlvbihCZSl7dmFyIE5lPSJfIi5jb25jYXQoQmUpO3JldHVybiBmdW5jdGlvbihLZSl7dGhpc1tOZV09S2V9fShJKSxjb25maWd1cmFibGU6''@;'; put 'put ''ITB9KX0pfSksZH1mdW5jdGlvbiAkaGUoZCxnKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoZCk9PT1KU09OLnN0cmluZ2lmeShnKX1mdW5jdGlvbiB4bChkKXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKX1mdW5jdGlvbiBTZyhkLGcs''@;'; put 'put ''aCx2KXt2LnZhbHVlPWgsdi53cml0YWJsZT0hMSE9PXYud3JpdGFibGUsdi5lbnVtZXJhYmxlPSExIT09di5lbnVtZXJhYmxlLHYuY29uZmlndXJhYmxlPSExIT09di5jb25maWd1cmFibGUsT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx2KX1mdW5jdGlvbiBHbChkLGcpe2Zvcih2YXIgaCBp''@;'; put 'put ''biBkKWlmKCghZC5oYXNPd25Qcm9wZXJ0eXx8ZC5oYXNPd25Qcm9wZXJ0eSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsaCkpJiYhMT09PWcoZFtoXSxoLGQpKWJyZWFrO3JldHVybiBkfWZ1bmN0aW9uIHZiZShkLGcpe3ZhciBoPWcuc3BsaXQoIi4iKSx2PWQ7cmV0''@;'; put 'put ''dXJuIEdsKGgsZnVuY3Rpb24oeSl7aWYodm9pZCAwPT09KHY9dlt5XSkpcmV0dXJuIHY9dm9pZCAwLCExfSksdn1mdW5jdGlvbiBRcShkLGcsaCl7dmFyIHY9Zy5zcGxpdCgiLiIpLHk9ZDt2LmZvckVhY2goZnVuY3Rpb24oQyxJKXtJIT09di5sZW5ndGgtMT8obzEoeSxDKXx8KHlbQ109e30p''@;'; put 'put ''LHk9eVtDXSk6eVtDXT1ofSl9ZnVuY3Rpb24gSnEoZCl7cmV0dXJuIHhsKGQpP2Z1bmN0aW9uIGgodil7dmFyIHk9MDtyZXR1cm4geGwodik/R2wodixmdW5jdGlvbihDLEkpeyJfX2NoaWxkcmVuIiE9PUkmJih5Kz1oKEMpKX0pOnkrPTEseX0oZCk6MH1mdW5jdGlvbiBFUyhkKXt2YXIgZyxo''@;'; put 'put ''PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToidmFsdWUiLHY9Il8iLmNvbmNhdChoKSx5PShtYmUoZz17X3RvdWNoZWQ6ITF9LHYsZCksbWJlKGcsImlzVG91Y2hlZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdG91Y2hlZH0pLGcpO3Jl''@;'; put 'put ''dHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoeSxoLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1t2XX0sc2V0OmZ1bmN0aW9uKEkpe3RoaXMuX3RvdWNoZWQ9ITAsdGhpc1t2XT1JfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHl9ZnVuY3Rpb24gbzEoZCxnKXtyZXR1cm4g''@;'; put 'put ''T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZyl9RVp8fChFWj1mdW5jdGlvbihnKXt2YXIgaD0obmV3IERhdGUpLmdldFRpbWUoKSx2PU1hdGgubWF4KDAsMTYtKGgtbGJlKSkseT13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2coaCt2KX0sdik7cmV0dXJuIGxi''@;'; put 'put ''ZT1oK3YseX0pLFVxfHwoVXE9ZnVuY3Rpb24oZyl7Y2xlYXJUaW1lb3V0KGcpfSksTCgxODMyMyk7dmFyIGFkPWZ1bmN0aW9uKGcpe3ZhciBoPXt2YWx1ZTohMSx0ZXN0OmZ1bmN0aW9uKHYseSl7aC52YWx1ZT1nKHYseSl9fTtyZXR1cm4gaH0sbTQ9e2Nocm9tZTphZChmdW5jdGlvbihkLGcp''@;'; put 'put ''e3JldHVybi9DaHJvbWUvLnRlc3QoZCkmJi9Hb29nbGUvLnRlc3QoZyl9KSxjaHJvbWVXZWJLaXQ6YWQoZnVuY3Rpb24oZCl7cmV0dXJuL0NyaU9TLy50ZXN0KGQpfSksZWRnZTphZChmdW5jdGlvbihkKXtyZXR1cm4vRWRnZS8udGVzdChkKX0pLGVkZ2VXZWJLaXQ6YWQoZnVuY3Rpb24oZCl7''@;'; put 'put ''cmV0dXJuL0VkZ2lPUy8udGVzdChkKX0pLGZpcmVmb3g6YWQoZnVuY3Rpb24oZCl7cmV0dXJuL0ZpcmVmb3gvLnRlc3QoZCl9KSxmaXJlZm94V2ViS2l0OmFkKGZ1bmN0aW9uKGQpe3JldHVybi9GeGlPUy8udGVzdChkKX0pLGllOmFkKGZ1bmN0aW9uKGQpe3JldHVybi9UcmlkZW50Ly50ZXN0''@;'; put 'put ''KGQpfSksaWU5OmFkKGZ1bmN0aW9uKCl7cmV0dXJuISFkb2N1bWVudC5kb2N1bWVudE1vZGV9KSxtb2JpbGU6YWQoZnVuY3Rpb24oZCl7cmV0dXJuL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KGQpfSksc2FmYXJp''@;'; put 'put ''OmFkKGZ1bmN0aW9uKGQsZyl7cmV0dXJuL1NhZmFyaS8udGVzdChkKSYmL0FwcGxlIENvbXB1dGVyLy50ZXN0KGcpfSl9LHNPPXttYWM6YWQoZnVuY3Rpb24oZCl7cmV0dXJuL15NYWMvLnRlc3QoZCl9KSx3aW46YWQoZnVuY3Rpb24oZCl7cmV0dXJuL15XaW4vLnRlc3QoZCl9KSxsaW51eDph''@;'; put 'put ''ZChmdW5jdGlvbihkKXtyZXR1cm4vXkxpbnV4Ly50ZXN0KGQpfSksaW9zOmFkKGZ1bmN0aW9uKGQpe3JldHVybi9pUGhvbmV8aVBhZHxpUG9kL2kudGVzdChkKX0pfTtmdW5jdGlvbiBBYmUoKXt2YXIgZD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVu''@;'; put 'put ''dHNbMF06e30sZz1kLnVzZXJBZ2VudCxoPXZvaWQgMD09PWc/bmF2aWdhdG9yLnVzZXJBZ2VudDpnLHY9ZC52ZW5kb3IseT12b2lkIDA9PT12P25hdmlnYXRvci52ZW5kb3I6djtHbChtNCxmdW5jdGlvbihDKXsoMCxDLnRlc3QpKGgseSl9KX1mdW5jdGlvbiB5YmUoKXt2YXIgZD1hcmd1bWVu''@;'; put 'put ''dHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sZz1kLnBsYXRmb3JtLGg9dm9pZCAwPT09Zz9uYXZpZ2F0b3IucGxhdGZvcm06ZztHbChzTyxmdW5jdGlvbih2KXsoMCx2LnRlc3QpKGgpfSl9ZnVuY3Rpb24gd2JlKCl7cmV0dXJuIG00LmNocm9tZS52''@;'; put 'put ''YWx1ZX1mdW5jdGlvbiBiYmUoKXtyZXR1cm4gbTQuY2hyb21lV2ViS2l0LnZhbHVlfWZ1bmN0aW9uIFhxKCl7cmV0dXJuIG00LmZpcmVmb3gudmFsdWV9ZnVuY3Rpb24gX2JlKCl7cmV0dXJuIG00LmZpcmVmb3hXZWJLaXQudmFsdWV9ZnVuY3Rpb24gQ2JlKCl7cmV0dXJuIG00LnNhZmFyaS52''@;'; put 'put ''YWx1ZX1mdW5jdGlvbiBrYmUoKXtyZXR1cm4gbTQuZWRnZS52YWx1ZX1mdW5jdGlvbiBlWmUoKXtyZXR1cm4gbTQuZWRnZVdlYktpdC52YWx1ZX1mdW5jdGlvbiBTYmUoKXtyZXR1cm4gbTQuaWUudmFsdWV9ZnVuY3Rpb24gTWJlKCl7cmV0dXJuIG00LmllOS52YWx1ZX1mdW5jdGlvbiB0WmUo''@;'; put 'put ''KXtyZXR1cm4gbTQuaWUudmFsdWV8fG00LmVkZ2UudmFsdWV9ZnVuY3Rpb24gYjgoKXtyZXR1cm4gbTQubW9iaWxlLnZhbHVlfWZ1bmN0aW9uIHFoZSgpe3JldHVybiBzTy5pb3MudmFsdWV9ZnVuY3Rpb24gZTNlKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVu''@;'; put 'put ''dHNbMF0/YXJndW1lbnRzWzBdOm5hdmlnYXRvcixnPWQubWF4VG91Y2hQb2ludHM7cmV0dXJuIGc+MiYmc08ubWFjLnZhbHVlfWZ1bmN0aW9uIHQzZSgpe3JldHVybiBzTy53aW4udmFsdWV9ZnVuY3Rpb24gS3EoKXtyZXR1cm4gc08ubWFjLnZhbHVlfWZ1bmN0aW9uIG5aZSgpe3JldHVybiBz''@;'; put 'put ''Ty5saW51eC52YWx1ZX1BYmUoKSx5YmUoKTt2YXIgRWJlLHhiZSxUYmUsSWJlLERiZSxMYmUsclplPUwoOTI3MzUpO2Z1bmN0aW9uIFAyKGQpe2Zvcih2YXIgZz1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGc+MT9nLTE6MCksdj0xO3Y8Zzt2KyspaFt2LTFdPWFyZ3VtZW50c1t2XTt2''@;'; put 'put ''YXIgeT1TdShkLGZ1bmN0aW9uKEMsSSxaKXtyZXR1cm4gQytJLnJlcGxhY2UoL1xyP1xuXHMqL2csIiIpKyhoW1pdP2hbWl06IiIpfSwiIik7cmV0dXJuIHkudHJpbSgpfWZ1bmN0aW9uIHVPKGQsZyl7cmV0dXJuIGd8fChnPWQuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnRpZXMoZCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGcpfX0pKX1mdW5jdGlvbiBuM2UoZCl7cmV0dXJuKG4zZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1''@;'; put 'put ''bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIGV1KGQpe3ZhciBnO3N3aXRjaChuM2UoZCkpe2Nhc2Uic3RyaW5nIjpj''@;'; put 'put ''YXNlIm51bWJlciI6Zz0iIi5jb25jYXQoZCk7YnJlYWs7Y2FzZSJvYmplY3QiOmc9bnVsbD09PWQ/IiI6ZC50b1N0cmluZygpO2JyZWFrO2Nhc2UidW5kZWZpbmVkIjpnPSIiO2JyZWFrO2RlZmF1bHQ6Zz1kLnRvU3RyaW5nKCl9cmV0dXJuIGd9ZnVuY3Rpb24gVG8oZCl7cmV0dXJuIHZvaWQg''@;'; put 'put ''MCE9PWR9ZnVuY3Rpb24gYTEoZCl7cmV0dXJuIHZvaWQgMD09PWR9ZnVuY3Rpb24gZGMoZCl7cmV0dXJuIG51bGw9PT1kfHwiIj09PWR8fGExKGQpfWZ1bmN0aW9uIE9iZShkKXtyZXR1cm4iW29iamVjdCBSZWdFeHBdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKX1MKDgy''@;'; put 'put ''NzU2KSxMKDE2NjYxKSxMKDc4MjQ2KTt2YXIgYzNlLGYzZSxoM2UsT1o9Imxlbmd0aCIsUlo9ZnVuY3Rpb24oZyl7cmV0dXJuIHBhcnNlSW50KGcsMTYpfSxSYmU9ZnVuY3Rpb24oZyl7cmV0dXJuIHBhcnNlSW50KGcsMTApfSwkcT1mdW5jdGlvbihnLGgsdil7cmV0dXJuIGcuc3Vic3RyKGgs''@;'; put 'put ''dil9LEJaPWZ1bmN0aW9uKGcpe3JldHVybiBnLmNvZGVQb2ludEF0KDApLTY1fSxyM2U9ZnVuY3Rpb24oZyl7cmV0dXJuIiIuY29uY2F0KGcpLnJlcGxhY2UoL1wtL2csIiIpfSxCYmU9ITEsUGJlPXtpbnZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIFAyKEViZXx8KEViZT11TyhbIlxuICAgIFRo''@;'; put 'put ''ZSBsaWNlbnNlIGtleSBmb3IgSGFuZHNvbnRhYmxlIGlzIGludmFsaWQuIFxuICAgIElmIHlvdSBuZWVkIGFueSBoZWxwLCBjb250YWN0IHVzIGF0IHN1cHBvcnRAaGFuZHNvbnRhYmxlLmNvbS4iXSxbIlxuICAgIFRoZSBsaWNlbnNlIGtleSBmb3IgSGFuZHNvbnRhYmxlIGlzIGludmFsaWQu''@;'; put 'put ''XFx4MjBcbiAgICBJZiB5b3UgbmVlZCBhbnkgaGVscCwgY29udGFjdCB1cyBhdCBzdXBwb3J0QGhhbmRzb250YWJsZS5jb20uIl0pKSl9LGV4cGlyZWQ6ZnVuY3Rpb24oZyl7dmFyIGg9Zy5rZXlWYWxpZGl0eURhdGUsdj1nLmhvdFZlcnNpb247cmV0dXJuIFAyKHhiZXx8KHhiZT11TyhbIlxu''@;'; put 'put ''ICAgIFRoZSBsaWNlbnNlIGtleSBmb3IgSGFuZHNvbnRhYmxlIGV4cGlyZWQgb24gIiwiLCBhbmQgaXMgbm90IHZhbGlkIGZvciB0aGUgaW5zdGFsbGVkIFxuICAgIHZlcnNpb24gIiwiLiBSZW5ldyB5b3VyIGxpY2Vuc2Uga2V5IGF0IGhhbmRzb250YWJsZS5jb20gb3IgZG93bmdyYWRlIHRv''@;'; put 'put ''IGEgdmVyc2lvbiByZWxlYXNlZCBwcmlvciBcbiAgICB0byAiLCIuIElmIHlvdSBuZWVkIGFueSBoZWxwLCBjb250YWN0IHVzIGF0IHNhbGVzQGhhbmRzb250YWJsZS5jb20uIl0sWyJcbiAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhhbmRzb250YWJsZSBleHBpcmVkIG9uICIsIiwgYW5kIGlz''@;'; put 'put ''IG5vdCB2YWxpZCBmb3IgdGhlIGluc3RhbGxlZFxceDIwXG4gICAgdmVyc2lvbiAiLCIuIFJlbmV3IHlvdXIgbGljZW5zZSBrZXkgYXQgaGFuZHNvbnRhYmxlLmNvbSBvciBkb3duZ3JhZGUgdG8gYSB2ZXJzaW9uIHJlbGVhc2VkIHByaW9yXFx4MjBcbiAgICB0byAiLCIuIElmIHlvdSBuZWVk''@;'; put 'put ''IGFueSBoZWxwLCBjb250YWN0IHVzIGF0IHNhbGVzQGhhbmRzb250YWJsZS5jb20uIl0pKSxoLHYsaCl9LG1pc3Npbmc6ZnVuY3Rpb24oKXtyZXR1cm4gUDIoVGJlfHwoVGJlPXVPKFsiXG4gICAgVGhlIGxpY2Vuc2Uga2V5IGZvciBIYW5kc29udGFibGUgaXMgbWlzc2luZy4gVXNlIHlvdXIg''@;'; put 'put ''cHVyY2hhc2VkIGtleSB0byBhY3RpdmF0ZSB0aGUgcHJvZHVjdC4gXG4gICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBhY3RpdmF0ZSBIYW5kc29udGFibGUgdG8gdXNlIGZvciBub24tY29tbWVyY2lhbCBwdXJwb3NlcyBieSBcbiAgICBwYXNzaW5nIHRoZSBrZXk6ICdub24tY29tbWVyY2lh''@;'; put 'put ''bC1hbmQtZXZhbHVhdGlvbicuIElmIHlvdSBuZWVkIGFueSBoZWxwLCBjb250YWN0IFxuICAgIHVzIGF0IHN1cHBvcnRAaGFuZHNvbnRhYmxlLmNvbS4iXSxbIlxuICAgIFRoZSBsaWNlbnNlIGtleSBmb3IgSGFuZHNvbnRhYmxlIGlzIG1pc3NpbmcuIFVzZSB5b3VyIHB1cmNoYXNlZCBrZXkg''@;'; put 'put ''dG8gYWN0aXZhdGUgdGhlIHByb2R1Y3QuXFx4MjBcbiAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGFjdGl2YXRlIEhhbmRzb250YWJsZSB0byB1c2UgZm9yIG5vbi1jb21tZXJjaWFsIHB1cnBvc2VzIGJ5XFx4MjBcbiAgICBwYXNzaW5nIHRoZSBrZXk6ICdub24tY29tbWVyY2lhbC1hbmQt''@;'; put 'put ''ZXZhbHVhdGlvbicuIElmIHlvdSBuZWVkIGFueSBoZWxwLCBjb250YWN0XFx4MjBcbiAgICB1cyBhdCBzdXBwb3J0QGhhbmRzb250YWJsZS5jb20uIl0pKSl9LG5vbl9jb21tZXJjaWFsOmZ1bmN0aW9uKCl7cmV0dXJuIiJ9fSxGYmU9e2ludmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gUDIoSWJl''@;'; put 'put ''fHwoSWJlPXVPKFsnXG4gICAgVGhlIGxpY2Vuc2Uga2V5IGZvciBIYW5kc29udGFibGUgaXMgaW52YWxpZC4gXG4gICAgPGEgaHJlZj0iaHR0cHM6Ly9oYW5kc29udGFibGUuY29tL2RvY3MvdHV0b3JpYWwtbGljZW5zZS1rZXkuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPlJlYWQgbW9yZTwvYT4g''@;'; put 'put ''b24gaG93IHRvIFxuICAgIGluc3RhbGwgaXQgcHJvcGVybHkgb3IgY29udGFjdCB1cyBhdCA8YSBocmVmPSJtYWlsdG86c3VwcG9ydEBoYW5kc29udGFibGUuY29tIj5zdXBwb3J0QGhhbmRzb250YWJsZS5jb208L2E+LiddLFsnXG4gICAgVGhlIGxpY2Vuc2Uga2V5IGZvciBIYW5kc29udGFi''@;'; put 'put ''bGUgaXMgaW52YWxpZC5cXHgyMFxuICAgIDxhIGhyZWY9Imh0dHBzOi8vaGFuZHNvbnRhYmxlLmNvbS9kb2NzL3R1dG9yaWFsLWxpY2Vuc2Uta2V5Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj5SZWFkIG1vcmU8L2E+IG9uIGhvdyB0b1xceDIwXG4gICAgaW5zdGFsbCBpdCBwcm9wZXJseSBvciBj''@;'; put 'put ''b250YWN0IHVzIGF0IDxhIGhyZWY9Im1haWx0bzpzdXBwb3J0QGhhbmRzb250YWJsZS5jb20iPnN1cHBvcnRAaGFuZHNvbnRhYmxlLmNvbTwvYT4uJ10pKSl9LGV4cGlyZWQ6ZnVuY3Rpb24oZyl7dmFyIGg9Zy5rZXlWYWxpZGl0eURhdGUsdj1nLmhvdFZlcnNpb247cmV0dXJuIFAyKERiZXx8''@;'; put 'put ''KERiZT11TyhbIlxuICAgIFRoZSBsaWNlbnNlIGtleSBmb3IgSGFuZHNvbnRhYmxlIGV4cGlyZWQgb24gIiwiLCBhbmQgaXMgbm90IHZhbGlkIGZvciB0aGUgaW5zdGFsbGVkIFxuICAgIHZlcnNpb24gIiwnLiA8YSBocmVmPSJodHRwczovL2hhbmRzb250YWJsZS5jb20vcHJpY2luZyIgdGFy''@;'; put 'put ''Z2V0PSJfYmxhbmsiPlJlbmV3PC9hPiB5b3VyIFxuICAgIGxpY2Vuc2Uga2V5IG9yIGRvd25ncmFkZSB0byBhIHZlcnNpb24gcmVsZWFzZWQgcHJpb3IgdG8gJywnLiBJZiB5b3UgbmVlZCBhbnkgXG4gICAgaGVscCwgY29udGFjdCB1cyBhdCA8YSBocmVmPSJtYWlsdG86c2FsZXNAaGFuZHNv''@;'; put 'put ''bnRhYmxlLmNvbSI+c2FsZXNAaGFuZHNvbnRhYmxlLmNvbTwvYT4uJ10sWyJcbiAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhhbmRzb250YWJsZSBleHBpcmVkIG9uICIsIiwgYW5kIGlzIG5vdCB2YWxpZCBmb3IgdGhlIGluc3RhbGxlZFxceDIwXG4gICAgdmVyc2lvbiAiLCcuIDxhIGhyZWY9''@;'; put 'put ''Imh0dHBzOi8vaGFuZHNvbnRhYmxlLmNvbS9wcmljaW5nIiB0YXJnZXQ9Il9ibGFuayI+UmVuZXc8L2E+IHlvdXJcXHgyMFxuICAgIGxpY2Vuc2Uga2V5IG9yIGRvd25ncmFkZSB0byBhIHZlcnNpb24gcmVsZWFzZWQgcHJpb3IgdG8gJywnLiBJZiB5b3UgbmVlZCBhbnlcXHgyMFxuICAgIGhl''@;'; put 'put ''bHAsIGNvbnRhY3QgdXMgYXQgPGEgaHJlZj0ibWFpbHRvOnNhbGVzQGhhbmRzb250YWJsZS5jb20iPnNhbGVzQGhhbmRzb250YWJsZS5jb208L2E+LiddKSksaCx2LGgpfSxtaXNzaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIFAyKExiZXx8KExiZT11TyhbJ1xuICAgIFRoZSBsaWNlbnNlIGtleSBm''@;'; put 'put ''b3IgSGFuZHNvbnRhYmxlIGlzIG1pc3NpbmcuIFVzZSB5b3VyIHB1cmNoYXNlZCBrZXkgdG8gYWN0aXZhdGUgdGhlIHByb2R1Y3QuIFxuICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gYWN0aXZhdGUgSGFuZHNvbnRhYmxlIHRvIHVzZSBmb3Igbm9uLWNvbW1lcmNpYWwgcHVycG9zZXMgYnkg''@;'; put 'put ''XG4gICAgcGFzc2luZyB0aGUga2V5OiBcJ25vbi1jb21tZXJjaWFsLWFuZC1ldmFsdWF0aW9uXCcuIFxuICAgIDxhIGhyZWY9Imh0dHBzOi8vaGFuZHNvbnRhYmxlLmNvbS9kb2NzL3R1dG9yaWFsLWxpY2Vuc2Uta2V5Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj5SZWFkIG1vcmU8L2E+IGFib3V0''@;'; put 'put ''IGl0IGluIFxuICAgIHRoZSBkb2N1bWVudGF0aW9uIG9yIGNvbnRhY3QgdXMgYXQgPGEgaHJlZj0ibWFpbHRvOnN1cHBvcnRAaGFuZHNvbnRhYmxlLmNvbSI+c3VwcG9ydEBoYW5kc29udGFibGUuY29tPC9hPi4nXSxbJ1xuICAgIFRoZSBsaWNlbnNlIGtleSBmb3IgSGFuZHNvbnRhYmxlIGlz''@;'; put 'put ''IG1pc3NpbmcuIFVzZSB5b3VyIHB1cmNoYXNlZCBrZXkgdG8gYWN0aXZhdGUgdGhlIHByb2R1Y3QuXFx4MjBcbiAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGFjdGl2YXRlIEhhbmRzb250YWJsZSB0byB1c2UgZm9yIG5vbi1jb21tZXJjaWFsIHB1cnBvc2VzIGJ5XFx4MjBcbiAgICBwYXNz''@;'; put 'put ''aW5nIHRoZSBrZXk6IFwnbm9uLWNvbW1lcmNpYWwtYW5kLWV2YWx1YXRpb25cJy5cXHgyMFxuICAgIDxhIGhyZWY9Imh0dHBzOi8vaGFuZHNvbnRhYmxlLmNvbS9kb2NzL3R1dG9yaWFsLWxpY2Vuc2Uta2V5Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj5SZWFkIG1vcmU8L2E+IGFib3V0IGl0IGlu''@;'; put 'put ''XFx4MjBcbiAgICB0aGUgZG9jdW1lbnRhdGlvbiBvciBjb250YWN0IHVzIGF0IDxhIGhyZWY9Im1haWx0bzpzdXBwb3J0QGhhbmRzb250YWJsZS5jb20iPnN1cHBvcnRAaGFuZHNvbnRhYmxlLmNvbTwvYT4uJ10pKSl9LG5vbl9jb21tZXJjaWFsOmZ1bmN0aW9uKCl7cmV0dXJuIiJ9fTtmdW5j''@;'; put 'put ''dGlvbiBIYmUoZCxnKXt2YXIgQyxoPSFkYyhkKSx2PSJzdHJpbmciPT10eXBlb2YgZCYmIm5vbi1jb21tZXJjaWFsLWFuZC1ldmFsdWF0aW9uIj09PWQudG9Mb3dlckNhc2UoKSx5PSIxMi4xLjIiLEk9ImludmFsaWQiLFo9ImludmFsaWQiLHVlPWZ1bmN0aW9uIGFaZShkKXt2YXIgZz1bXVtP''@;'; put 'put ''Wl0saD1nO2lmKGRbT1pdIT09QlooIloiKSlyZXR1cm4hMTtmb3IodmFyIHY9IiIseT0iQjxINFArIi5zcGxpdCgiIiksQz1CWih5LnNoaWZ0KCkpO0M7Qz1CWih5LnNoaWZ0KCl8fCJBIikpLS1DPCIiW09aXT9ofD0oUmJlKCIiLmNvbmNhdChSYmUoUloodikrKFJaKCRxKGQsTWF0aC5hYnMo''@;'; put 'put ''QyksMikpK1tdKS5wYWRTdGFydCgyLCIwIikpKSklOTd8fDIpPj4xOnY9JHEoZCxDLEM/MT09PXlbT1pdPzk6ODo2KTtyZXR1cm4gaD09PWd9KGQ9cjNlKGR8fCIiKSk7aWYoaHx8dnx8dWUpaWYodWUpe3ZhciBfZT1UbCgiMDgvMDcvMjAyMiIsIkREL01NL1lZWVkiKSxCZT1NYXRoLmZsb29y''@;'; put 'put ''KF9lLnRvRGF0ZSgpLmdldFRpbWUoKS84NjRlNSksTmU9ZnVuY3Rpb24oZyl7cmV0dXJuIFJaKCRxKHIzZShnKSxSWigiMTIiKSxCWigiRiIpKSkvKFJaKCRxKHIzZShnKSxCWigiQiIpLH5+IVtdW09aXSkpfHw5KX0oZCk7aWYoQz1UbCg4NjRlNSooTmUrMSksIngiKS5mb3JtYXQoIk1NTU0g''@;'; put 'put ''REQsIFlZWVkiKSxCZT5OZSl7dmFyIEtlPVRsKCkuZGlmZihfZSwiZGF5cyIpO0k9S2U8PTE/InZhbGlkIjoiZXhwaXJlZCIsWj1LZTw9MTU/InZhbGlkIjoiZXhwaXJlZCJ9ZWxzZSBJPSJ2YWxpZCIsWj0idmFsaWQifWVsc2Ugdj8oST0ibm9uX2NvbW1lcmNpYWwiLFo9InZhbGlkIik6KEk9''@;'; put 'put ''ImludmFsaWQiLFo9ImludmFsaWQiKTtlbHNlIEk9Im1pc3NpbmciLFo9Im1pc3NpbmciO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbG9jYXRpb24mJi9eKFthLXowLTlcLV0rXC4pP1x4NjhceDYxXHg2RVx4NjRceDczXHg2Rlx4NkVceDc0XHg2MVx4NjJceDZDXHg2NVx4MkVceDYzXHg2Rlx4''@;'; put 'put ''NkQkL2kudGVzdChsb2NhdGlvbi5ob3N0KSYmKEk9InZhbGlkIixaPSJ2YWxpZCIpLEJiZXx8InZhbGlkIj09PUl8fChQYmVbSV0oe2tleVZhbGlkaXR5RGF0ZTpDLGhvdFZlcnNpb246eX0pJiZjb25zb2xlWyJub25fY29tbWVyY2lhbCI9PT1JPyJpbmZvIjoid2FybiJdKFBiZVtJXSh7a2V5''@;'; put 'put ''VmFsaWRpdHlEYXRlOkMsaG90VmVyc2lvbjp5fSkpLEJiZT0hMCksInZhbGlkIiE9PVomJmcucGFyZW50Tm9kZSYmRmJlW1pdKHtrZXlWYWxpZGl0eURhdGU6Qyxob3RWZXJzaW9uOnl9KSl7dmFyICR0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOyR0LmlkPSJob3QtZGlzcGxheS1s''@;'; put 'put ''aWNlbnNlLWluZm8iLCR0LmlubmVySFRNTD1GYmVbWl0oe2tleVZhbGlkaXR5RGF0ZTpDLGhvdFZlcnNpb246eX0pLGcucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoJHQsZy5uZXh0U2libGluZyl9fWZ1bmN0aW9uIGxkKGQpe3JldHVybiBkWzBdLnRvVXBwZXJDYXNlKCkrZC5zdWJzdHIoMSl9''@;'; put 'put ''ZnVuY3Rpb24gbFplKCl7Zm9yKHZhciBkPVtdLGc9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShnKSx2PTA7djxnO3YrKyloW3ZdPWFyZ3VtZW50c1t2XTtmb3IodmFyIHk9aC5sZW5ndGg7eTspe3ZhciBDPWV1KGhbeS09MV0pLnRvTG93ZXJDYXNlKCk7LTE9PT1kLmluZGV4T2YoQykm''@;'; put 'put ''JmQucHVzaChDKX1yZXR1cm4gMT09PWQubGVuZ3RofWZ1bmN0aW9uIGkzZSgpe2Z1bmN0aW9uIGQoKXtyZXR1cm4gTWF0aC5mbG9vcig2NTUzNiooMStNYXRoLnJhbmRvbSgpKSkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygxKX1yZXR1cm4gZCgpK2QoKStkKCkrZCgpfWZ1bmN0aW9uIG8zZShk''@;'; put 'put ''KXtyZXR1cm4vXihbMC05XVswLTldPyUkKXwoXjEwMCUkKS8udGVzdChkKX1mdW5jdGlvbiBhM2UoZCl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O3JldHVybiIiLmNvbmNhdChkKS5yZXBsYWNlKC8oPzpcXCk/XFsoW15b''@;'; put 'put ''XF1dKyldL2csZnVuY3Rpb24oaCx2KXtyZXR1cm4iXFwiPT09aC5jaGFyQXQoMCk/aC5zdWJzdHIoMSxoLmxlbmd0aC0xKTp2b2lkIDA9PT1nW3ZdPyIiOmdbdl19KX1mdW5jdGlvbiBsM2UoZCl7cmV0dXJuIHFxKCIiLmNvbmNhdChkKSx7QUxMT1dFRF9UQUdTOltdfSl9ZnVuY3Rpb24gcXEo''@;'; put 'put ''ZCxnKXtyZXR1cm4gclplLnNhbml0aXplKGQsZyl9ZnVuY3Rpb24gTmJlKGQpe3JldHVybiBmdW5jdGlvbiBmWmUoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gczNlKGQpfShkKXx8ZnVuY3Rpb24gY1plKGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5''@;'; put 'put ''bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0oZCl8fGZ1bmN0aW9uIHVaZShkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gczNlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQp''@;'; put 'put ''LnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/''@;'; put 'put ''QXJyYXkkLy50ZXN0KGgpKXJldHVybiBzM2UoZCxnKX19KGQpfHxmdW5jdGlvbiBzWmUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0''@;'; put 'put ''cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBzM2UoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBW''@;'; put 'put ''YmUoZCl7Zm9yKHZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowLGg9LTEsdj1udWxsLHk9ZDtudWxsIT09eTspe2lmKGg9PT1nKXt2PXk7YnJlYWt9eS5ob3N0JiZ5Lm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9O''@;'; put 'put ''T0RFP3k9eS5ob3N0OihoKz0xLHk9eS5wYXJlbnROb2RlKX1yZXR1cm4gdn1mdW5jdGlvbiBqYmUoZCl7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihkLnBhcmVudCkmJmQuZnJhbWVFbGVtZW50fWZ1bmN0aW9uIHUzZShkKXtyZXR1cm4gamJlKGQpJiZkLnBhcmVudH1mdW5jdGlvbiBo''@;'; put 'put ''WmUoZCl7cmV0dXJuISFPYmplY3QuZ2V0UHJvdG90eXBlT2YoZC5wYXJlbnQpfWZ1bmN0aW9uIE12KGQpe2Zvcih2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10saD1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZv''@;'; put 'put ''aWQgMCx2PU5vZGUseT12LkVMRU1FTlRfTk9ERSxDPXYuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSxJPWQ7bnVsbCE9SSYmSSE9PWg7KXt2YXIgWj1JLHVlPVoubm9kZVR5cGUsX2U9Wi5ub2RlTmFtZTtpZih1ZT09PXkmJihnLmluY2x1ZGVzKF9lKXx8Zy5pbmNsdWRlcyhJKSkpcmV0dXJuIEk7''@;'; put 'put ''dmFyIEJlPUksTmU9QmUuaG9zdDtJPU5lJiZ1ZT09PUM/TmU6SS5wYXJlbnROb2RlfXJldHVybiBudWxsfWZ1bmN0aW9uIFBaKGQsZyxoKXtmb3IodmFyIHY9W10seT1kO3kmJih5PU12KHksZyxoKSkmJighaHx8aC5jb250YWlucyh5KSk7KXYucHVzaCh5KSx5PXkuaG9zdCYmeS5ub2RlVHlw''@;'; put 'put ''ZT09PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERT95Lmhvc3Q6eS5wYXJlbnROb2RlO3ZhciBDPXYubGVuZ3RoO3JldHVybiBDP3ZbQy0xXTpudWxsfWZ1bmN0aW9uIF93KGQsZyl7dmFyIGg9ZC5wYXJlbnROb2RlLHY9W107Zm9yKCJzdHJpbmciPT10eXBlb2YgZz92PUFycmF5LnByb3Rv''@;'; put 'put ''dHlwZS5zbGljZS5jYWxsKGQuZGVmYXVsdFZpZXc/ZC5xdWVyeVNlbGVjdG9yQWxsKGcpOmQub3duZXJEb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGcpLDApOnYucHVzaChnKTtudWxsIT09aDspe2lmKHYuaW5kZXhPZihoKT4tMSlyZXR1cm4hMDtoPWgucGFyZW50Tm9kZX1yZXR1cm4hMX1m''@;'; put 'put ''dW5jdGlvbiBaYmUoZCl7dmFyIGc9MCxoPWQ7aWYoaC5wcmV2aW91c1NpYmxpbmcpZm9yKDtoPWgucHJldmlvdXNTaWJsaW5nOylnKz0xO3JldHVybiBnfWZ1bmN0aW9uIEN3KGQsZyxoKXt2YXIgdj1oLnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcigiLmh0X2Nsb25lXyIuY29uY2F0KGQp''@;'; put 'put ''KTtyZXR1cm4gdj92LmNvbnRhaW5zKGcpOm51bGx9ZnVuY3Rpb24gZWVlKGQpe3JldHVybiBkJiZkLmxlbmd0aD9kLmZpbHRlcihmdW5jdGlvbihnKXtyZXR1cm4hIWd9KTpbXX1pZihzYmUoKSl7dmFyIHpiZT1mdW5jdGlvbihnKXt2YXIgaD1nLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVy''@;'; put 'put ''biBoLmNsYXNzTGlzdC5hZGQoInRlc3QiLCJ0ZXN0MiIpLGguY2xhc3NMaXN0LmNvbnRhaW5zKCJ0ZXN0MiIpfTtjM2U9ZnVuY3Rpb24oZyxoKXtyZXR1cm4gdm9pZCAwIT09Zy5jbGFzc0xpc3QmJiJzdHJpbmciPT10eXBlb2YgaCYmIiIhPT1oJiZnLmNsYXNzTGlzdC5jb250YWlucyhoKX0s''@;'; put 'put ''ZjNlPWZ1bmN0aW9uKGcsaCl7dmFyIHY9Zy5vd25lckRvY3VtZW50LHk9aDtpZigic3RyaW5nIj09dHlwZW9mIHkmJih5PXkuc3BsaXQoIiAiKSksKHk9ZWVlKHkpKS5sZW5ndGg+MClpZih6YmUodikpe3ZhciBDOyhDPWcuY2xhc3NMaXN0KS5hZGQuYXBwbHkoQyxOYmUoeSkpfWVsc2UgZm9y''@;'; put 'put ''KHZhciBJPTA7eVtJXTspZy5jbGFzc0xpc3QuYWRkKHlbSV0pLEkrPTF9LGgzZT1mdW5jdGlvbihnLGgpe3ZhciB2PWcub3duZXJEb2N1bWVudCx5PWg7aWYoInN0cmluZyI9PXR5cGVvZiB5JiYoeT15LnNwbGl0KCIgIikpLCh5PWVlZSh5KSkubGVuZ3RoPjApaWYoemJlKHYpKXt2YXIgQzso''@;'; put 'put ''Qz1nLmNsYXNzTGlzdCkucmVtb3ZlLmFwcGx5KEMsTmJlKHkpKX1lbHNlIGZvcih2YXIgST0wO3lbSV07KWcuY2xhc3NMaXN0LnJlbW92ZSh5W0ldKSxJKz0xfX1lbHNle3ZhciBkM2U9ZnVuY3Rpb24oZyl7cmV0dXJuIG5ldyBSZWdFeHAoIihcXHN8XikiLmNvbmNhdChnLCIoXFxzfCQpIikp''@;'; put 'put ''fTtjM2U9ZnVuY3Rpb24oZyxoKXtyZXR1cm4gdm9pZCAwIT09Zy5jbGFzc05hbWUmJmQzZShoKS50ZXN0KGcuY2xhc3NOYW1lKX0sZjNlPWZ1bmN0aW9uKGcsaCl7dmFyIHY9Zy5jbGFzc05hbWUseT1oO2lmKCJzdHJpbmciPT10eXBlb2YgeSYmKHk9eS5zcGxpdCgiICIpKSx5PWVlZSh5KSwi''@;'; put 'put ''Ij09PXYpdj15LmpvaW4oIiAiKTtlbHNlIGZvcih2YXIgQz0wO0M8eS5sZW5ndGg7QysrKXlbQ10mJiFkM2UoeVtDXSkudGVzdCh2KSYmKHYrPSIgIi5jb25jYXQoeVtDXSkpO2cuY2xhc3NOYW1lPXZ9LGgzZT1mdW5jdGlvbihnLGgpe3ZhciB2PTAseT1nLmNsYXNzTmFtZSxDPWg7Zm9yKCJz''@;'; put 'put ''dHJpbmciPT10eXBlb2YgQyYmKEM9Qy5zcGxpdCgiICIpKSxDPWVlZShDKTtDW3ZdOyl5PXkucmVwbGFjZShkM2UoQ1t2XSksIiAiKS50cmltKCksdis9MTtnLmNsYXNzTmFtZSE9PXkmJihnLmNsYXNzTmFtZT15KX19ZnVuY3Rpb24gdGwoZCxnKXtyZXR1cm4gYzNlKGQsZyl9ZnVuY3Rpb24g''@;'; put 'put ''TzAoZCxnKXtmM2UoZCxnKX1mdW5jdGlvbiBwbChkLGcpe2gzZShkLGcpfWZ1bmN0aW9uIHAzZShkKXtpZigzPT09ZC5ub2RlVHlwZSlkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZCk7ZWxzZSBpZihbIlRBQkxFIiwiVEhFQUQiLCJUQk9EWSIsIlRGT09UIiwiVFIiXS5pbmRleE9mKGQubm9k''@;'; put 'put ''ZU5hbWUpPi0xKWZvcih2YXIgZz1kLmNoaWxkTm9kZXMsaD1nLmxlbmd0aC0xO2g+PTA7aC0tKXAzZShnW2hdKX1mdW5jdGlvbiBEcChkKXtmb3IodmFyIGc7Zz1kLmxhc3RDaGlsZDspZC5yZW1vdmVDaGlsZChnKX12YXIgdjNlLEdiZT0vKDwoLiopPnwmKC4qKTspLztmdW5jdGlvbiBrdyhk''@;'; put 'put ''LGcpe3ZhciBoPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl07R2JlLnRlc3QoZyk/ZC5pbm5lckhUTUw9aD9xcShnKTpnOlN3KGQsZyl9ZnVuY3Rpb24gU3coZCxnKXt2YXIgaD1kLmZpcnN0Q2hpbGQ7aCYmMz09PWgubm9kZVR5cGUm''@;'; put 'put ''Jm51bGw9PT1oLm5leHRTaWJsaW5nP3ViZT9oLnRleHRDb250ZW50PWc6aC5kYXRhPWc6KERwKGQpLGQuYXBwZW5kQ2hpbGQoZC5vd25lckRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGcpKSl9ZnVuY3Rpb24gY08oZCl7Zm9yKHZhciBnPWQub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQs''@;'; put 'put ''aD1kO2ghPT1nOyl7aWYobnVsbD09PWgpcmV0dXJuITE7aWYoaC5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSl7aWYoaC5ob3N0KXtpZihoLmhvc3QuaW1wbClyZXR1cm4gY08oaC5ob3N0LmltcGwpO2lmKGguaG9zdClyZXR1cm4gY08oaC5ob3N0KTt0aHJvdyBuZXcg''@;'; put 'put ''RXJyb3IoIkxvc3QgaW4gV2ViIENvbXBvbmVudHMgd29ybGQiKX1yZXR1cm4hMX1pZihoLnN0eWxlJiYibm9uZSI9PT1oLnN0eWxlLmRpc3BsYXkpcmV0dXJuITE7aD1oLnBhcmVudE5vZGV9cmV0dXJuITB9ZnVuY3Rpb24ganUoZCl7dmFyIEMsSSxaLHVlLGc9ZC5vd25lckRvY3VtZW50LGg9''@;'; put 'put ''Zy5kZWZhdWx0Vmlldyx2PWcuZG9jdW1lbnRFbGVtZW50LHk9ZDtpZihVaGUoKSYmeS5maXJzdENoaWxkJiYiQ0FQVElPTiI9PT15LmZpcnN0Q2hpbGQubm9kZU5hbWUpcmV0dXJue3RvcDoodWU9eS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkudG9wKyhoLnBhZ2VZT2Zmc2V0fHx2LnNjcm9s''@;'; put 'put ''bFRvcCktKHYuY2xpZW50VG9wfHwwKSxsZWZ0OnVlLmxlZnQrKGgucGFnZVhPZmZzZXR8fHYuc2Nyb2xsTGVmdCktKHYuY2xpZW50TGVmdHx8MCl9O2ZvcihDPXkub2Zmc2V0TGVmdCxJPXkub2Zmc2V0VG9wLFo9eTsoeT15Lm9mZnNldFBhcmVudCkmJnkhPT1nLmJvZHk7KUMrPXkub2Zmc2V0''@;'; put 'put ''TGVmdCxJKz15Lm9mZnNldFRvcCxaPXk7cmV0dXJuIFomJiJmaXhlZCI9PT1aLnN0eWxlLnBvc2l0aW9uJiYoQys9aC5wYWdlWE9mZnNldHx8di5zY3JvbGxMZWZ0LEkrPWgucGFnZVlPZmZzZXR8fHYuc2Nyb2xsVG9wKSx7bGVmdDpDLHRvcDpJfX1mdW5jdGlvbiBmTygpe3ZhciBkPWFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp3aW5kb3csZz1kLnNjcm9sbFk7cmV0dXJuIHZvaWQgMD09PWcmJihnPWQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCksZ31mdW5jdGlvbiB4Uygpe3ZhciBkPWFyZ3VtZW50cy5sZW5n''@;'; put 'put ''dGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp3aW5kb3csZz1kLnNjcm9sbFg7cmV0dXJuIHZvaWQgMD09PWcmJihnPWQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQpLGd9ZnVuY3Rpb24gRlooZCl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2''@;'; put 'put ''b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOndpbmRvdztyZXR1cm4gZD09PWc/Zk8oZyk6ZC5zY3JvbGxUb3B9ZnVuY3Rpb24gdGVlKGQpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp3aW5kb3c7cmV0dXJuIGQ9''@;'; put 'put ''PT1nP3hTKGcpOmQuc2Nyb2xsTGVmdH1mdW5jdGlvbiBIWihkKXt2YXIgZz1kLm93bmVyRG9jdW1lbnQsaD1nP2cuZGVmYXVsdFZpZXc6dm9pZCAwO2d8fChoPShnPWQuZG9jdW1lbnQ/ZC5kb2N1bWVudDpkKS5kZWZhdWx0Vmlldyk7Zm9yKHZhciB2PVsiYXV0byIsInNjcm9sbCJdLHk9Y2Jl''@;'; put 'put ''KCksQz1kLnBhcmVudE5vZGU7QyYmQy5zdHlsZSYmZy5ib2R5IT09Qzspe3ZhciBJPUMuc3R5bGUsWj1JLm92ZXJmbG93LHVlPUkub3ZlcmZsb3dYLF9lPUkub3ZlcmZsb3dZO2lmKFtaLHVlLF9lXS5pbmNsdWRlcygic2Nyb2xsIikpcmV0dXJuIEM7aWYoeSl7dmFyIEJlPWguZ2V0Q29tcHV0''@;'; put 'put ''ZWRTdHlsZShDKTtpZih1ZT1CZS5vdmVyZmxvd1gsX2U9QmUub3ZlcmZsb3dZLHYuaW5jbHVkZXMoWj1CZS5vdmVyZmxvdyl8fHYuaW5jbHVkZXModWUpfHx2LmluY2x1ZGVzKF9lKSlyZXR1cm4gQ31pZihDLmNsaWVudEhlaWdodDw9Qy5zY3JvbGxIZWlnaHQrMSYmKHYuaW5jbHVkZXMoX2Up''@;'; put 'put ''fHx2LmluY2x1ZGVzKFopKXx8Qy5jbGllbnRXaWR0aDw9Qy5zY3JvbGxXaWR0aCsxJiYodi5pbmNsdWRlcyh1ZSl8fHYuaW5jbHVkZXMoWikpKXJldHVybiBDO0M9Qy5wYXJlbnROb2RlfXJldHVybiBofWZ1bmN0aW9uIGhPKGQpe2Zvcih2YXIgZz1kLm93bmVyRG9jdW1lbnQsaD1nLmRlZmF1''@;'; put 'put ''bHRWaWV3LHY9ZC5wYXJlbnROb2RlO3YmJnYuc3R5bGUmJmcuYm9keSE9PXY7KXtpZigidmlzaWJsZSIhPT12LnN0eWxlLm92ZXJmbG93JiYiIiE9PXYuc3R5bGUub3ZlcmZsb3cpcmV0dXJuIHY7dmFyIHk9TXcodixoKSxDPVsic2Nyb2xsIiwiaGlkZGVuIiwiYXV0byJdLEk9eS5nZXRQcm9w''@;'; put 'put ''ZXJ0eVZhbHVlKCJvdmVyZmxvdyIpLFo9eS5nZXRQcm9wZXJ0eVZhbHVlKCJvdmVyZmxvdy15IiksdWU9eS5nZXRQcm9wZXJ0eVZhbHVlKCJvdmVyZmxvdy14Iik7aWYoQy5pbmNsdWRlcyhJKXx8Qy5pbmNsdWRlcyhaKXx8Qy5pbmNsdWRlcyh1ZSkpcmV0dXJuIHY7dj12LnBhcmVudE5vZGV9''@;'; put 'put ''cmV0dXJuIGh9ZnVuY3Rpb24gbmVlKGQsZyl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOndpbmRvdztpZihkKXtpZihkPT09aClyZXR1cm4id2lkdGgiPT09Zz8iIi5jb25jYXQoaC5pbm5lcldpZHRoLCJweCIpOiJoZWlnaHQi''@;'; put 'put ''PT09Zz8iIi5jb25jYXQoaC5pbm5lckhlaWdodCwicHgiKTp2b2lkIDA7dmFyIHY9ZC5zdHlsZVtnXTtpZigiIiE9PXYmJnZvaWQgMCE9PXYpcmV0dXJuIHY7dmFyIHk9TXcoZCxoKTtyZXR1cm4iIiE9PXlbZ10mJnZvaWQgMCE9PXlbZ10/eVtnXTp2b2lkIDB9fWZ1bmN0aW9uIGRaZShkLGcp''@;'; put 'put ''e3ZhciBoPWcuc2VsZWN0b3JUZXh0LHY9ITE7cmV0dXJuIGcudHlwZT09PUNTU1J1bGUuU1RZTEVfUlVMRSYmaCYmKGQubXNNYXRjaGVzU2VsZWN0b3I/dj1kLm1zTWF0Y2hlc1NlbGVjdG9yKGgpOmQubWF0Y2hlcyYmKHY9ZC5tYXRjaGVzKGgpKSksdn1mdW5jdGlvbiBNdyhkKXt2YXIgZz1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06d2luZG93O3JldHVybiBkLmN1cnJlbnRTdHlsZXx8Zy5nZXRDb21wdXRlZFN0eWxlKGQpfWZ1bmN0aW9uIEUyKGQpe3JldHVybiBkLm9mZnNldFdpZHRofWZ1bmN0aW9uIEQxKGQpe3JldHVybiBV''@;'; put 'put ''aGUoKSYmZC5maXJzdENoaWxkJiYiQ0FQVElPTiI9PT1kLmZpcnN0Q2hpbGQubm9kZU5hbWU/ZC5vZmZzZXRIZWlnaHQrZC5maXJzdENoaWxkLm9mZnNldEhlaWdodDpkLm9mZnNldEhlaWdodH1mdW5jdGlvbiBFdihkKXtyZXR1cm4gZC5jbGllbnRIZWlnaHR8fGQuaW5uZXJIZWlnaHR9ZnVu''@;'; put 'put ''Y3Rpb24gTlooZCl7cmV0dXJuIGQuY2xpZW50V2lkdGh8fGQuaW5uZXJXaWR0aH1mdW5jdGlvbiBwWmUoZCxnLGgpe2QuYWRkRXZlbnRMaXN0ZW5lcihnLGgsITEpfWZ1bmN0aW9uIGdaZShkLGcsaCl7ZC5yZW1vdmVFdmVudExpc3RlbmVyKGcsaCwhMSl9ZnVuY3Rpb24gZzNlKGQpe3ZhciBn''@;'; put 'put ''PWQub3duZXJEb2N1bWVudDtpZihkLnNlbGVjdGlvblN0YXJ0KXJldHVybiBkLnNlbGVjdGlvblN0YXJ0O2lmKGcuc2VsZWN0aW9uKXtkLmZvY3VzKCk7dmFyIGg9Zy5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtpZihudWxsPT09aClyZXR1cm4gMDt2YXIgdj1kLmNyZWF0ZVRleHRSYW5nZSgp''@;'; put 'put ''LHk9di5kdXBsaWNhdGUoKTtyZXR1cm4gdi5tb3ZlVG9Cb29rbWFyayhoLmdldEJvb2ttYXJrKCkpLHkuc2V0RW5kUG9pbnQoIkVuZFRvU3RhcnQiLHYpLHkudGV4dC5sZW5ndGh9cmV0dXJuIDB9ZnVuY3Rpb24gV2JlKGQpe3ZhciBnPWQub3duZXJEb2N1bWVudDtpZihkLnNlbGVjdGlvbkVu''@;'; put 'put ''ZClyZXR1cm4gZC5zZWxlY3Rpb25FbmQ7aWYoZy5zZWxlY3Rpb24pe3ZhciBoPWcuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7cmV0dXJuIG51bGw9PT1oPzA6ZC5jcmVhdGVUZXh0UmFuZ2UoKS50ZXh0LmluZGV4T2YoaC50ZXh0KStoLnRleHQubGVuZ3RofXJldHVybiAwfWZ1bmN0aW9uIFli''@;'; put 'put ''ZSgpe3ZhciBkPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp3aW5kb3csZz1kLmRvY3VtZW50LGg9IiI7cmV0dXJuIGQuZ2V0U2VsZWN0aW9uP2g9ZC5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpOmcuc2VsZWN0aW9uJiYiQ29udHJvbCIh''@;'; put 'put ''PT1nLnNlbGVjdGlvbi50eXBlJiYoaD1nLnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpLnRleHQpLGh9ZnVuY3Rpb24gbTNlKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOndpbmRvdyxnPWQuZG9jdW1lbnQ7ZC5nZXRTZWxlY3Rp''@;'; put 'put ''b24/ZC5nZXRTZWxlY3Rpb24oKS5lbXB0eT9kLmdldFNlbGVjdGlvbigpLmVtcHR5KCk6ZC5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMmJmQuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk6Zy5zZWxlY3Rpb24mJmcuc2VsZWN0aW9uLmVtcHR5KCl9ZnVuY3Rpb24gVloo''@;'; put 'put ''ZCxnLGgpe2lmKHZvaWQgMD09PWgmJihoPWcpLGQuc2V0U2VsZWN0aW9uUmFuZ2Upe2QuZm9jdXMoKTt0cnl7ZC5zZXRTZWxlY3Rpb25SYW5nZShnLGgpfWNhdGNoKEMpe3ZhciB2PWQucGFyZW50Tm9kZSx5PXYuc3R5bGUuZGlzcGxheTt2LnN0eWxlLmRpc3BsYXk9ImJsb2NrIixkLnNldFNl''@;'; put 'put ''bGVjdGlvblJhbmdlKGcsaCksdi5zdHlsZS5kaXNwbGF5PXl9fX1mdW5jdGlvbiBtWmUoKXt2YXIgZD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06ZG9jdW1lbnQsZz1kLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2cuc3R5bGUuaGVpZ2h0PSIy''@;'; put 'put ''MDBweCIsZy5zdHlsZS53aWR0aD0iMTAwJSI7dmFyIGg9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKTtoLnN0eWxlLmJveFNpemluZz0iY29udGVudC1ib3giLGguc3R5bGUuaGVpZ2h0PSIxNTBweCIsaC5zdHlsZS5sZWZ0PSIwcHgiLGguc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsaC5zdHlsZS5w''@;'; put 'put ''b3NpdGlvbj0iYWJzb2x1dGUiLGguc3R5bGUudG9wPSIwcHgiLGguc3R5bGUud2lkdGg9IjIwMHB4IixoLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsaC5hcHBlbmRDaGlsZChnKSwoZC5ib2R5fHxkLmRvY3VtZW50RWxlbWVudCkuYXBwZW5kQ2hpbGQoaCk7dmFyIHY9Zy5vZmZzZXRXaWR0''@;'; put 'put ''aDtoLnN0eWxlLm92ZXJmbG93PSJzY3JvbGwiO3ZhciB5PWcub2Zmc2V0V2lkdGg7cmV0dXJuIHY9PT15JiYoeT1oLmNsaWVudFdpZHRoKSwoZC5ib2R5fHxkLmRvY3VtZW50RWxlbWVudCkucmVtb3ZlQ2hpbGQoaCksdi15fWZ1bmN0aW9uIEJjKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4w''@;'; put 'put ''JiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOmRvY3VtZW50O3JldHVybiB2b2lkIDA9PT12M2UmJih2M2U9bVplKGQpKSx2M2V9ZnVuY3Rpb24gVWJlKGQpe3JldHVybiBkLm9mZnNldFdpZHRoIT09ZC5jbGllbnRXaWR0aH1mdW5jdGlvbiBRYmUoZCl7cmV0dXJuIGQub2Zm''@;'; put 'put ''c2V0SGVpZ2h0IT09ZC5jbGllbnRIZWlnaHR9ZnVuY3Rpb24gcmVlKGQsZyxoKXtNYmUoKT8oZC5zdHlsZS50b3A9aCxkLnN0eWxlLmxlZnQ9Zyk6Q2JlKCk/ZC5zdHlsZVsiLXdlYmtpdC10cmFuc2Zvcm0iXT0idHJhbnNsYXRlM2QoIi5jb25jYXQoZywiLCIpLmNvbmNhdChoLCIsMCkiKTpk''@;'; put 'put ''LnN0eWxlLnRyYW5zZm9ybT0idHJhbnNsYXRlM2QoIi5jb25jYXQoZywiLCIpLmNvbmNhdChoLCIsMCkiKX1mdW5jdGlvbiB2WmUoZCl7dmFyIGc7cmV0dXJuIGQuc3R5bGUudHJhbnNmb3JtJiYiIiE9PShnPWQuc3R5bGUudHJhbnNmb3JtKT9bInRyYW5zZm9ybSIsZ106ZC5zdHlsZVsiLXdl''@;'; put 'put ''YmtpdC10cmFuc2Zvcm0iXSYmIiIhPT0oZz1kLnN0eWxlWyItd2Via2l0LXRyYW5zZm9ybSJdKT9bIi13ZWJraXQtdHJhbnNmb3JtIixnXTotMX1mdW5jdGlvbiBqWihkKXtkLnN0eWxlLnRyYW5zZm9ybSYmIiIhPT1kLnN0eWxlLnRyYW5zZm9ybT9kLnN0eWxlLnRyYW5zZm9ybT0iIjpkLnN0''@;'; put 'put ''eWxlWyItd2Via2l0LXRyYW5zZm9ybSJdJiYiIiE9PWQuc3R5bGVbIi13ZWJraXQtdHJhbnNmb3JtIl0mJihkLnN0eWxlWyItd2Via2l0LXRyYW5zZm9ybSJdPSIiKX1mdW5jdGlvbiBaWihkKXtyZXR1cm4gZCYmKFsiSU5QVVQiLCJTRUxFQ1QiLCJURVhUQVJFQSJdLmluZGV4T2YoZC5ub2Rl''@;'; put 'put ''TmFtZSk+LTF8fCJ0cnVlIj09PWQuY29udGVudEVkaXRhYmxlKX1mdW5jdGlvbiBBM2UoZCl7cmV0dXJuIFpaKGQpJiYhMT09PWQuaGFzQXR0cmlidXRlKCJkYXRhLWhvdC1pbnB1dCIpfWZ1bmN0aW9uIEpiZShkKXtBM2UoZC5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpfHxkLnNlbGVj''@;'; put 'put ''dCgpfWZ1bmN0aW9uIHkzZShkKXtyZXR1cm4hZC5wYXJlbnROb2RlfWZ1bmN0aW9uIFUyKGQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBkfWZ1bmN0aW9uIFhiZShkKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MjAwLGg9''@;'; put 'put ''MCx2PXtsYXN0Q2FsbFRocm90dGxlZDohMH0seT1udWxsO2Z1bmN0aW9uIEMoKXtmb3IodmFyIEk9dGhpcyxaPWFyZ3VtZW50cy5sZW5ndGgsdWU9bmV3IEFycmF5KFopLF9lPTA7X2U8WjtfZSsrKXVlW19lXT1hcmd1bWVudHNbX2VdO3ZhciBCZT1EYXRlLm5vdygpLE5lPSExO3YubGFzdENh''@;'; put 'put ''bGxUaHJvdHRsZWQ9ITAsaHx8KGg9QmUsTmU9ITApO3ZhciBLZT1nLShCZS1oKTtyZXR1cm4gTmU/KHYubGFzdENhbGxUaHJvdHRsZWQ9ITEsZC5hcHBseSh0aGlzLHVlKSk6KHkmJmNsZWFyVGltZW91dCh5KSx5PXNldFRpbWVvdXQoZnVuY3Rpb24oKXt2Lmxhc3RDYWxsVGhyb3R0bGVkPSEx''@;'; put 'put ''LGQuYXBwbHkoSSx1ZSksaD0wLHk9dm9pZCAwfSxLZSkpLHZ9cmV0dXJuIEN9ZnVuY3Rpb24gQVplKGQpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToyMDAsaD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50''@;'; put 'put ''c1syXT9hcmd1bWVudHNbMl06MTAsdj1YYmUoZCxnKSx5PWg7ZnVuY3Rpb24gQygpe3k9aH1mdW5jdGlvbiBJKCl7Zm9yKHZhciBaPWFyZ3VtZW50cy5sZW5ndGgsdWU9bmV3IEFycmF5KFopLF9lPTA7X2U8WjtfZSsrKXVlW19lXT1hcmd1bWVudHNbX2VdO3JldHVybiB5Pyh5LT0xLGQuYXBw''@;'; put 'put ''bHkodGhpcyx1ZSkpOnYuYXBwbHkodGhpcyx1ZSl9cmV0dXJuIEkuY2xlYXJIaXRzPUMsSX1mdW5jdGlvbiB3M2UoZCl7dmFyIHYsZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MjAwLGg9bnVsbDtmdW5jdGlvbiB5KCl7Zm9yKHZhciBD''@;'; put 'put ''PXRoaXMsST1hcmd1bWVudHMubGVuZ3RoLFo9bmV3IEFycmF5KEkpLHVlPTA7dWU8STt1ZSsrKVpbdWVdPWFyZ3VtZW50c1t1ZV07cmV0dXJuIGgmJmNsZWFyVGltZW91dChoKSxoPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt2PWQuYXBwbHkoQyxaKX0sZyksdn1yZXR1cm4geX1mdW5jdGlvbiB5''@;'; put 'put ''WmUoKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxnPW5ldyBBcnJheShkKSxoPTA7aDxkO2grKylnW2hdPWFyZ3VtZW50c1toXTt2YXIgdj1nWzBdLHk9Zy5zbGljZSgxKTtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIEk9YXJndW1lbnRzLmxlbmd0aCxaPW5ldyBBcnJheShJKSx1ZT0w''@;'; put 'put ''O3VlPEk7dWUrKylaW3VlXT1hcmd1bWVudHNbdWVdO3JldHVybiBTdSh5LGZ1bmN0aW9uKF9lLEJlKXtyZXR1cm4gQmUoX2UpfSx2LmFwcGx5KHRoaXMsWikpfX1mdW5jdGlvbiBiM2UoZCl7Zm9yKHZhciBnPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZz4xP2ctMTowKSx2PTE7djxn''@;'; put 'put ''O3YrKyloW3YtMV09YXJndW1lbnRzW3ZdO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgQz1hcmd1bWVudHMubGVuZ3RoLEk9bmV3IEFycmF5KEMpLFo9MDtaPEM7WisrKUlbWl09YXJndW1lbnRzW1pdO3JldHVybiBkLmFwcGx5KHRoaXMsaC5jb25jYXQoSSkpfX1mdW5jdGlvbiBLYmUoZCl7''@;'; put 'put ''dmFyIGc9ZC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uIGgodil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBDPWFyZ3VtZW50cy5sZW5ndGgsST1uZXcgQXJyYXkoQyksWj0wO1o8QztaKyspSVtaXT1hcmd1bWVudHNbWl07dmFyIHVlPXYuY29uY2F0KEkpO3JldHVybiB1ZS5sZW5ndGg+PWc/''@;'; put 'put ''ZC5hcHBseSh0aGlzLHVlKTpoKHVlKX19KFtdKX1mdW5jdGlvbiB3WmUoZCl7dmFyIGc9ZC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uIGgodil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBDPWFyZ3VtZW50cy5sZW5ndGgsST1uZXcgQXJyYXkoQyksWj0wO1o8QztaKyspSVtaXT1hcmd1bWVu''@;'; put 'put ''dHNbWl07dmFyIHVlPXYuY29uY2F0KEkucmV2ZXJzZSgpKTtyZXR1cm4gdWUubGVuZ3RoPj1nP2QuYXBwbHkodGhpcyx1ZSk6aCh1ZSl9fShbXSl9ZnVuY3Rpb24gaWVlKGQsZyxoLHYseSxDLEksWil7cmV0dXJuIFRvKFopP2QuY2FsbChnLGgsdix5LEMsSSxaKTpUbyhJKT9kLmNhbGwoZyxo''@;'; put 'put ''LHYseSxDLEkpOlRvKEMpP2QuY2FsbChnLGgsdix5LEMpOlRvKHkpP2QuY2FsbChnLGgsdix5KTpUbyh2KT9kLmNhbGwoZyxoLHYpOlRvKGgpP2QuY2FsbChnLGgpOmQuY2FsbChnKX1MKDY1MTI1KTt2YXIgZV9lLFFvPXtBTFQ6MTgsQVJST1dfRE9XTjo0MCxBUlJPV19MRUZUOjM3LEFSUk9X''@;'; put 'put ''X1JJR0hUOjM5LEFSUk9XX1VQOjM4LEFVRElPX0RPV046WHEoKT8xODI6MTc0LEFVRElPX01VVEU6WHEoKT8xODE6MTczLEFVRElPX1VQOlhxKCk/MTgzOjE3NSxCQUNLU1BBQ0U6OCxDQVBTX0xPQ0s6MjAsQ09NTUE6MTg4LENPTU1BTkRfTEVGVDo5MSxDT01NQU5EX1JJR0hUOjkzLENPTU1B''@;'; put 'put ''TkRfRklSRUZPWDoyMjQsQ09OVFJPTDoxNyxERUxFVEU6NDYsRU5EOjM1LEVOVEVSOjEzLEVTQ0FQRToyNyxGMToxMTIsRjI6MTEzLEYzOjExNCxGNDoxMTUsRjU6MTE2LEY2OjExNyxGNzoxMTgsRjg6MTE5LEY5OjEyMCxGMTA6MTIxLEYxMToxMjIsRjEyOjEyMyxGMTM6MTI0LEYxNDoxMjUs''@;'; put 'put ''RjE1OjEyNixGMTY6MTI3LEYxNzoxMjgsRjE4OjEyOSxGMTk6MTMwLEhPTUU6MzYsSU5TRVJUOjQ1LE1FRElBX05FWFQ6MTc2LE1FRElBX1BMQVlfUEFVU0U6MTc5LE1FRElBX1BSRVY6MTc3LE1FRElBX1NUT1A6MTc4LE5VTEw6MCxOVU1fTE9DSzoxNDQsUEFHRV9ET1dOOjM0LFBBR0VfVVA6''@;'; put 'put ''MzMsUEFVU0U6MTksUEVSSU9EOjE5MCxTQ1JPTExfTE9DSzoxNDUsU0hJRlQ6MTYsU1BBQ0U6MzIsVEFCOjksQTo2NSxDOjY3LEQ6NjgsRjo3MCxMOjc2LE86NzksUDo4MCxTOjgzLFY6ODYsWDo4OCxZOjg5LFo6OTB9LGJaZT1bUW8uQUxULFFvLkFSUk9XX0RPV04sUW8uQVJST1dfTEVGVCxR''@;'; put 'put ''by5BUlJPV19SSUdIVCxRby5BUlJPV19VUCxRby5BVURJT19ET1dOLFFvLkFVRElPX01VVEUsUW8uQVVESU9fVVAsUW8uQkFDS1NQQUNFLFFvLkNBUFNfTE9DSyxRby5ERUxFVEUsUW8uRU5ELFFvLkVOVEVSLFFvLkVTQ0FQRSxRby5GMSxRby5GMixRby5GMyxRby5GNCxRby5GNSxRby5GNixR''@;'; put 'put ''by5GNyxRby5GOCxRby5GOSxRby5GMTAsUW8uRjExLFFvLkYxMixRby5GMTMsUW8uRjE0LFFvLkYxNSxRby5GMTYsUW8uRjE3LFFvLkYxOCxRby5GMTksUW8uSE9NRSxRby5JTlNFUlQsUW8uTUVESUFfTkVYVCxRby5NRURJQV9QTEFZX1BBVVNFLFFvLk1FRElBX1BSRVYsUW8uTUVESUFfU1RP''@;'; put 'put ''UCxRby5OVUxMLFFvLk5VTV9MT0NLLFFvLlBBR0VfRE9XTixRby5QQUdFX1VQLFFvLlBBVVNFLFFvLlNDUk9MTF9MT0NLLFFvLlNISUZULFFvLlRBQl07ZnVuY3Rpb24gJGJlKGQpe3JldHVybiAzMj09PWR8fGQ+PTQ4JiZkPD01N3x8ZD49OTYmJmQ8PTExMXx8ZD49MTg2JiZkPD0xOTJ8fGQ+''@;'; put 'put ''PTIxOSYmZDw9MjIyfHxkPj0yMjZ8fGQ+PTY1JiZkPD05MH1mdW5jdGlvbiBfM2UoZCl7cmV0dXJuIGJaZS5pbmNsdWRlcyhkKX1mdW5jdGlvbiBfWmUoZCl7dmFyIGc9W107cmV0dXJuIEtxKCk/Zy5wdXNoKFFvLkNPTU1BTkRfTEVGVCxRby5DT01NQU5EX1JJR0hULFFvLkNPTU1BTkRfRklS''@;'; put 'put ''RUZPWCk6Zy5wdXNoKFFvLkNPTlRST0wpLGcuaW5jbHVkZXMoZCl9ZnVuY3Rpb24gcWJlKGQpe3JldHVybltRby5DT05UUk9MLFFvLkNPTU1BTkRfTEVGVCxRby5DT01NQU5EX1JJR0hULFFvLkNPTU1BTkRfRklSRUZPWF0uaW5jbHVkZXMoZCl9ZnVuY3Rpb24gZE8oZCxnKXt2YXIgaD1nLnNw''@;'; put 'put ''bGl0KCJ8Iiksdj0hMTtyZXR1cm4gVXIoaCxmdW5jdGlvbih5KXtpZihkPT09UW9beV0pcmV0dXJuIHY9ITAsITF9KSx2fWZ1bmN0aW9uIF84KGQpe2QuaXNJbW1lZGlhdGVQcm9wYWdhdGlvbkVuYWJsZWQ9ITEsZC5jYW5jZWxCdWJibGU9ITB9ZnVuY3Rpb24gVFMoZCl7cmV0dXJuITE9PT1k''@;'; put 'put ''LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25FbmFibGVkfWZ1bmN0aW9uIEV3KGQpe3JldHVybiAyPT09ZC5idXR0b259ZnVuY3Rpb24gb2VlKGQpe3JldHVybiAwPT09ZC5idXR0b259ZnVuY3Rpb24gbDEoKXt2YXIgZDtUbyhjb25zb2xlKSYmKGQ9Y29uc29sZSkud2Fybi5hcHBseShkLGFyZ3Vt''@;'; put 'put ''ZW50cyl9ZnVuY3Rpb24gQzNlKCl7dmFyIGQ7VG8oY29uc29sZSkmJihkPWNvbnNvbGUpLmVycm9yLmFwcGx5KGQsYXJndW1lbnRzKX1mdW5jdGlvbiB0X2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2''@;'; put 'put ''LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgcE89WyJhZnRlckNlbGxNZXRhUmVzZXQiLCJhZnRlckNoYW5nZSIsImFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsImJlZm9yZUNv''@;'; put 'put ''bnRleHRNZW51U2V0SXRlbXMiLCJhZnRlckRyb3Bkb3duTWVudURlZmF1bHRPcHRpb25zIiwiYmVmb3JlRHJvcGRvd25NZW51U2V0SXRlbXMiLCJhZnRlckNvbnRleHRNZW51SGlkZSIsImJlZm9yZUNvbnRleHRNZW51U2hvdyIsImFmdGVyQ29udGV4dE1lbnVTaG93IiwiYWZ0ZXJDb3B5TGlt''@;'; put 'put ''aXQiLCJiZWZvcmVDcmVhdGVDb2wiLCJhZnRlckNyZWF0ZUNvbCIsImJlZm9yZUNyZWF0ZVJvdyIsImFmdGVyQ3JlYXRlUm93IiwiYWZ0ZXJEZXNlbGVjdCIsImFmdGVyRGVzdHJveSIsImFmdGVyRG9jdW1lbnRLZXlEb3duIiwiYWZ0ZXJEcmF3U2VsZWN0aW9uIiwiYmVmb3JlUmVtb3ZlQ2Vs''@;'; put 'put ''bENsYXNzTmFtZXMiLCJhZnRlckdldENlbGxNZXRhIiwiYWZ0ZXJHZXRDb2xIZWFkZXIiLCJhZnRlckdldFJvd0hlYWRlciIsImFmdGVySW5pdCIsImFmdGVyTG9hZERhdGEiLCJhZnRlclVwZGF0ZURhdGEiLCJhZnRlck1vbWVudHVtU2Nyb2xsIiwiYWZ0ZXJPbkNlbGxDb3JuZXJNb3VzZURv''@;'; put 'put ''d24iLCJhZnRlck9uQ2VsbENvcm5lckRibENsaWNrIiwiYWZ0ZXJPbkNlbGxNb3VzZURvd24iLCJhZnRlck9uQ2VsbE1vdXNlVXAiLCJhZnRlck9uQ2VsbENvbnRleHRNZW51IiwiYWZ0ZXJPbkNlbGxNb3VzZU92ZXIiLCJhZnRlck9uQ2VsbE1vdXNlT3V0IiwiYWZ0ZXJSZW1vdmVDb2wiLCJh''@;'; put 'put ''ZnRlclJlbW92ZVJvdyIsImJlZm9yZVJlbmRlcmVyIiwiYWZ0ZXJSZW5kZXJlciIsImFmdGVyU2Nyb2xsSG9yaXpvbnRhbGx5IiwiYWZ0ZXJTY3JvbGxWZXJ0aWNhbGx5IiwiYWZ0ZXJTZWxlY3Rpb24iLCJhZnRlclNlbGVjdGlvbkJ5UHJvcCIsImFmdGVyU2VsZWN0aW9uRW5kIiwiYWZ0ZXJT''@;'; put 'put ''ZWxlY3Rpb25FbmRCeVByb3AiLCJhZnRlclNldENlbGxNZXRhIiwiYWZ0ZXJSZW1vdmVDZWxsTWV0YSIsImFmdGVyU2V0RGF0YUF0Q2VsbCIsImFmdGVyU2V0RGF0YUF0Um93UHJvcCIsImFmdGVyU2V0U291cmNlRGF0YUF0Q2VsbCIsImFmdGVyVXBkYXRlU2V0dGluZ3MiLCJhZnRlclZhbGlk''@;'; put 'put ''YXRlIiwiYmVmb3JlTGFuZ3VhZ2VDaGFuZ2UiLCJhZnRlckxhbmd1YWdlQ2hhbmdlIiwiYmVmb3JlQXV0b2ZpbGwiLCJhZnRlckF1dG9maWxsIiwiYmVmb3JlQ2VsbEFsaWdubWVudCIsImJlZm9yZUNoYW5nZSIsImJlZm9yZUNoYW5nZVJlbmRlciIsImJlZm9yZURyYXdCb3JkZXJzIiwiYmVm''@;'; put 'put ''b3JlR2V0Q2VsbE1ldGEiLCJiZWZvcmVSZW1vdmVDZWxsTWV0YSIsImJlZm9yZUluaXQiLCJiZWZvcmVJbml0V2Fsa29udGFibGUiLCJiZWZvcmVMb2FkRGF0YSIsImJlZm9yZVVwZGF0ZURhdGEiLCJiZWZvcmVLZXlEb3duIiwiYmVmb3JlT25DZWxsTW91c2VEb3duIiwiYmVmb3JlT25DZWxs''@;'; put 'put ''TW91c2VVcCIsImJlZm9yZU9uQ2VsbENvbnRleHRNZW51IiwiYmVmb3JlT25DZWxsTW91c2VPdmVyIiwiYmVmb3JlT25DZWxsTW91c2VPdXQiLCJiZWZvcmVSZW1vdmVDb2wiLCJiZWZvcmVSZW1vdmVSb3ciLCJiZWZvcmVWaWV3UmVuZGVyIiwiYWZ0ZXJWaWV3UmVuZGVyIiwiYmVmb3JlUmVu''@;'; put 'put ''ZGVyIiwiYWZ0ZXJSZW5kZXIiLCJiZWZvcmVTZXRDZWxsTWV0YSIsImJlZm9yZVNldFJhbmdlU3RhcnRPbmx5IiwiYmVmb3JlU2V0UmFuZ2VTdGFydCIsImJlZm9yZVNldFJhbmdlRW5kIiwiYmVmb3JlVG91Y2hTY3JvbGwiLCJiZWZvcmVWYWxpZGF0ZSIsImJlZm9yZVZhbHVlUmVuZGVyIiwi''@;'; put 'put ''Y29uc3RydWN0IiwiaW5pdCIsIm1vZGlmeUNvbEhlYWRlciIsIm1vZGlmeUNvbFdpZHRoIiwibW9kaWZ5Um93SGVhZGVyIiwibW9kaWZ5Um93SGVpZ2h0IiwibW9kaWZ5RGF0YSIsIm1vZGlmeVNvdXJjZURhdGEiLCJtb2RpZnlSb3dEYXRhIiwibW9kaWZ5R2V0Q2VsbENvb3JkcyIsImJlZm9y''@;'; put 'put ''ZUhpZ2hsaWdodGluZ1Jvd0hlYWRlciIsImJlZm9yZUhpZ2hsaWdodGluZ0NvbHVtbkhlYWRlciIsInBlcnNpc3RlbnRTdGF0ZUxvYWQiLCJwZXJzaXN0ZW50U3RhdGVSZXNldCIsInBlcnNpc3RlbnRTdGF0ZVNhdmUiLCJiZWZvcmVDb2x1bW5Tb3J0IiwiYWZ0ZXJDb2x1bW5Tb3J0IiwibW9k''@;'; put 'put ''aWZ5QXV0b2ZpbGxSYW5nZSIsIm1vZGlmeUNvcHlhYmxlUmFuZ2UiLCJiZWZvcmVDdXQiLCJhZnRlckN1dCIsImJlZm9yZUNvcHkiLCJhZnRlckNvcHkiLCJiZWZvcmVQYXN0ZSIsImFmdGVyUGFzdGUiLCJiZWZvcmVDb2x1bW5GcmVlemUiLCJhZnRlckNvbHVtbkZyZWV6ZSIsImJlZm9yZUNv''@;'; put 'put ''bHVtbk1vdmUiLCJhZnRlckNvbHVtbk1vdmUiLCJiZWZvcmVDb2x1bW5VbmZyZWV6ZSIsImFmdGVyQ29sdW1uVW5mcmVlemUiLCJiZWZvcmVSb3dNb3ZlIiwiYWZ0ZXJSb3dNb3ZlIiwiYmVmb3JlQ29sdW1uUmVzaXplIiwiYWZ0ZXJDb2x1bW5SZXNpemUiLCJiZWZvcmVSb3dSZXNpemUiLCJh''@;'; put 'put ''ZnRlclJvd1Jlc2l6ZSIsImFmdGVyR2V0Q29sdW1uSGVhZGVyUmVuZGVyZXJzIiwiYWZ0ZXJHZXRSb3dIZWFkZXJSZW5kZXJlcnMiLCJiZWZvcmVTdHJldGNoaW5nQ29sdW1uV2lkdGgiLCJiZWZvcmVGaWx0ZXIiLCJhZnRlckZpbHRlciIsImFmdGVyRm9ybXVsYXNWYWx1ZXNVcGRhdGUiLCJh''@;'; put 'put ''ZnRlck5hbWVkRXhwcmVzc2lvbkFkZGVkIiwiYWZ0ZXJOYW1lZEV4cHJlc3Npb25SZW1vdmVkIiwiYWZ0ZXJTaGVldEFkZGVkIiwiYWZ0ZXJTaGVldFJlbmFtZWQiLCJhZnRlclNoZWV0UmVtb3ZlZCIsIm1vZGlmeUNvbHVtbkhlYWRlckhlaWdodCIsImJlZm9yZVVuZG8iLCJiZWZvcmVVbmRv''@;'; put 'put ''U3RhY2tDaGFuZ2UiLCJhZnRlclVuZG8iLCJhZnRlclVuZG9TdGFja0NoYW5nZSIsImJlZm9yZVJlZG8iLCJiZWZvcmVSZWRvU3RhY2tDaGFuZ2UiLCJhZnRlclJlZG8iLCJhZnRlclJlZG9TdGFja0NoYW5nZSIsIm1vZGlmeVJvd0hlYWRlcldpZHRoIiwiYmVmb3JlQXV0b2ZpbGxJbnNpZGVQ''@;'; put 'put ''b3B1bGF0ZSIsIm1vZGlmeVRyYW5zZm9ybVN0YXJ0IiwibW9kaWZ5VHJhbnNmb3JtRW5kIiwiYWZ0ZXJNb2RpZnlUcmFuc2Zvcm1TdGFydCIsImFmdGVyTW9kaWZ5VHJhbnNmb3JtRW5kIiwiYWZ0ZXJWaWV3cG9ydFJvd0NhbGN1bGF0b3JPdmVycmlkZSIsImFmdGVyVmlld3BvcnRDb2x1bW5D''@;'; put 'put ''YWxjdWxhdG9yT3ZlcnJpZGUiLCJhZnRlclBsdWdpbnNJbml0aWFsaXplZCIsImJlZm9yZUhpZGVSb3dzIiwiYWZ0ZXJIaWRlUm93cyIsImJlZm9yZVVuaGlkZVJvd3MiLCJhZnRlclVuaGlkZVJvd3MiLCJiZWZvcmVIaWRlQ29sdW1ucyIsImFmdGVySGlkZUNvbHVtbnMiLCJiZWZvcmVVbmhp''@;'; put 'put ''ZGVDb2x1bW5zIiwiYWZ0ZXJVbmhpZGVDb2x1bW5zIiwiYmVmb3JlVHJpbVJvdyIsImFmdGVyVHJpbVJvdyIsImJlZm9yZVVudHJpbVJvdyIsImFmdGVyVW50cmltUm93IiwiYmVmb3JlRHJvcGRvd25NZW51U2hvdyIsImFmdGVyRHJvcGRvd25NZW51U2hvdyIsImFmdGVyRHJvcGRvd25NZW51''@;'; put 'put ''SGlkZSIsImJlZm9yZUFkZENoaWxkIiwiYWZ0ZXJBZGRDaGlsZCIsImJlZm9yZURldGFjaENoaWxkIiwiYWZ0ZXJEZXRhY2hDaGlsZCIsImFmdGVyQmVnaW5FZGl0aW5nIiwiYmVmb3JlTWVyZ2VDZWxscyIsImFmdGVyTWVyZ2VDZWxscyIsImJlZm9yZVVubWVyZ2VDZWxscyIsImFmdGVyVW5t''@;'; put 'put ''ZXJnZUNlbGxzIiwiYWZ0ZXJMaXN0ZW4iLCJhZnRlclVubGlzdGVuIiwiYWZ0ZXJSZWZyZXNoRGltZW5zaW9ucyIsImJlZm9yZVJlZnJlc2hEaW1lbnNpb25zIiwiYmVmb3JlQ29sdW1uQ29sbGFwc2UiLCJhZnRlckNvbHVtbkNvbGxhcHNlIiwiYmVmb3JlQ29sdW1uRXhwYW5kIiwiYWZ0ZXJD''@;'; put 'put ''b2x1bW5FeHBhbmQiLCJtb2RpZnlBdXRvQ29sdW1uU2l6ZVNlZWQiXSxNWmU9UDIoZV9lfHwoZV9lPWZ1bmN0aW9uIFNaZShkLGcpe3JldHVybiBnfHwoZz1kLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6''@;'; put 'put ''ZShnKX19KSl9KFsnVGhlIHBsdWdpbiBob29rICJbaG9va05hbWVdIiB3YXMgcmVtb3ZlZCBpbiBIYW5kc29udGFibGUgW3JlbW92ZWRJblZlcnNpb25dLiBcbiAgUGxlYXNlIGNvbnN1bHQgcmVsZWFzZSBub3RlcyBodHRwczovL2dpdGh1Yi5jb20vaGFuZHNvbnRhYmxlL2hhbmRzb250YWJs''@;'; put 'put ''ZS9yZWxlYXNlcy90YWcvW3JlbW92ZWRJblZlcnNpb25dIHRvIFxuICBsZWFybiBhYm91dCB0aGUgbWlncmF0aW9uIHBhdGguJ10sWydUaGUgcGx1Z2luIGhvb2sgIltob29rTmFtZV0iIHdhcyByZW1vdmVkIGluIEhhbmRzb250YWJsZSBbcmVtb3ZlZEluVmVyc2lvbl0uXFx4MjBcbiAgUGxl''@;'; put 'put ''YXNlIGNvbnN1bHQgcmVsZWFzZSBub3RlcyBodHRwczovL2dpdGh1Yi5jb20vaGFuZHNvbnRhYmxlL2hhbmRzb250YWJsZS9yZWxlYXNlcy90YWcvW3JlbW92ZWRJblZlcnNpb25dIHRvXFx4MjBcbiAgbGVhcm4gYWJvdXQgdGhlIG1pZ3JhdGlvbiBwYXRoLiddKSkpLGszZT1uZXcgTWFwKFtb''@;'; put 'put ''Im1vZGlmeVJvdyIsIjguMC4wIl0sWyJtb2RpZnlDb2wiLCI4LjAuMCJdLFsidW5tb2RpZnlSb3ciLCI4LjAuMCJdLFsidW5tb2RpZnlDb2wiLCI4LjAuMCJdLFsic2tpcExlbmd0aENhY2hlIiwiOC4wLjAiXSxbImhpZGRlbkNvbHVtbiIsIjguMC4wIl0sWyJoaWRkZW5Sb3ciLCI4LjAuMCJd''@;'; put 'put ''XSksUzNlPW5ldyBNYXAoW1siYmVmb3JlQXV0b2ZpbGxJbnNpZGVQb3B1bGF0ZSIsJ1RoZSBwbHVnaW4gaG9vayAiYmVmb3JlQXV0b2ZpbGxJbnNpZGVQb3B1bGF0ZSIgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJ11dKSxuX2U9''@;'; put 'put ''ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKCl7KGZ1bmN0aW9uIENaZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLmdsb2JhbEJ1Y2tldD10aGlzLmNyZWF0ZUVtcHR5''@;'; put 'put ''QnVja2V0KCl9cmV0dXJuIGZ1bmN0aW9uIGtaZShkLGcsaCl7ZyYmdF9lKGQucHJvdG90eXBlLGcpLGgmJnRfZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJjcmVhdGVFbXB0eUJ1Y2tldCIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgaD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBVcihwTyxmdW5jdGlvbih2KXtyZXR1cm4gaFt2XT1bXX0pLGh9fSx7a2V5OiJnZXRCdWNrZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRz''@;'; put 'put ''WzBdOm51bGw7cmV0dXJuIGg/KGgucGx1Z2luSG9va0J1Y2tldHx8KGgucGx1Z2luSG9va0J1Y2tldD10aGlzLmNyZWF0ZUVtcHR5QnVja2V0KCkpLGgucGx1Z2luSG9va0J1Y2tldCk6dGhpcy5nbG9iYWxCdWNrZXR9fSx7a2V5OiJhZGQiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9dGhp''@;'; put 'put ''cyxDPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsO2lmKEFycmF5LmlzQXJyYXkodikpVXIodixmdW5jdGlvbih1ZSl7cmV0dXJuIHkuYWRkKGgsdWUsQyl9KTtlbHNle2szZS5oYXMoaCkmJmwxKGEzZShNWmUse2hvb2tOYW1lOmgs''@;'; put 'put ''cmVtb3ZlZEluVmVyc2lvbjprM2UuZ2V0KGgpfSkpLFMzZS5oYXMoaCkmJmwxKFMzZS5nZXQoaCkpO3ZhciBJPXRoaXMuZ2V0QnVja2V0KEMpO2lmKHZvaWQgMD09PUlbaF0mJih0aGlzLnJlZ2lzdGVyKGgpLElbaF09W10pLHYuc2tpcD0hMSwtMT09PUlbaF0uaW5kZXhPZih2KSl7dmFyIFo9''@;'; put 'put ''ITE7di5pbml0aWFsSG9vayYmVXIoSVtoXSxmdW5jdGlvbih1ZSxfZSl7aWYodWUuaW5pdGlhbEhvb2spcmV0dXJuIElbaF1bX2VdPXYsWj0hMCwhMX0pLFp8fElbaF0ucHVzaCh2KX19cmV0dXJuIHRoaXN9fSx7a2V5OiJvbmNlIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PXRoaXMsQz1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtBcnJheS5pc0FycmF5KHYpP1VyKHYsZnVuY3Rpb24oSSl7cmV0dXJuIHkub25jZShoLEksQyl9KToodi5ydW5PbmNlPSEwLHRoaXMuYWRkKGgsdixDKSl9fSx7a2V5OiJyZW1vdmUiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwsQz10aGlzLmdldEJ1Y2tldCh5KTtyZXR1cm4gdm9pZCAwIT09Q1toXSYmQ1toXS5pbmRleE9mKHYpPj0wJiYodi5za2lwPSEwLCEwKX19LHtr''@;'; put 'put ''ZXk6ImhhcyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwseT10aGlzLmdldEJ1Y2tldCh2KTtyZXR1cm4hKHZvaWQgMD09PXlbaF18fCF5W2hdLmxlbmd0aCl9fSx7a2V5OiJydW4iLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGgsdix5LEMsSSxaLHVlLF9lKXt2YXIgQmU9dGhpcy5nbG9iYWxCdWNrZXRbdl0sTmU9QmU/QmUubGVuZ3RoOjAsS2U9MDtpZihOZSlmb3IoO0tlPE5lOylpZihCZVtLZV0mJiFCZVtLZV0uc2tpcCl7dmFyIHB0PWllZShCZVtLZV0saCx5LEMsSSxaLHVlLF9lKTt2b2lk''@;'; put 'put ''IDAhPT1wdCYmKHk9cHQpLEJlW0tlXSYmQmVbS2VdLnJ1bk9uY2UmJnRoaXMucmVtb3ZlKHYsQmVbS2VdKSxLZSs9MX1lbHNlIEtlKz0xO3ZhciBPdD10aGlzLmdldEJ1Y2tldChoKVt2XSwkdD1PdD9PdC5sZW5ndGg6MCxmbj0wO2lmKCR0KWZvcig7Zm48JHQ7KWlmKE90W2ZuXSYmIU90W2Zu''@;'; put 'put ''XS5za2lwKXt2YXIgTG49aWVlKE90W2ZuXSxoLHksQyxJLFosdWUsX2UpO3ZvaWQgMCE9PUxuJiYoeT1MbiksT3RbZm5dJiZPdFtmbl0ucnVuT25jZSYmdGhpcy5yZW1vdmUodixPdFtmbl0saCksZm4rPTF9ZWxzZSBmbis9MTtyZXR1cm4geX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7R2wodGhpcy5nZXRCdWNrZXQoaCksZnVuY3Rpb24odix5LEMpe3JldHVybiBDW3ldLmxlbmd0aD0wfSl9fSx7a2V5OiJyZWdpc3RlciIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''aCl7dGhpcy5pc1JlZ2lzdGVyZWQoaCl8fHBPLnB1c2goaCl9fSx7a2V5OiJkZXJlZ2lzdGVyIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmlzUmVnaXN0ZXJlZChoKSYmcE8uc3BsaWNlKHBPLmluZGV4T2YoaCksMSl9fSx7a2V5OiJpc0RlcHJlY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKGgpe3Jl''@;'; put 'put ''dHVybiBTM2UuaGFzKGgpfHxrM2UuaGFzKGgpfX0se2tleToiaXNSZWdpc3RlcmVkIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gcE8uaW5kZXhPZihoKT49MH19LHtrZXk6ImdldFJlZ2lzdGVyZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHBPfX1dLFt7a2V5OiJnZXRTaW5nbGV0b24i''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHhaZSgpe3JldHVybiBFWmV9KCl9fV0pLGR9KCksRVplPW5ldyBuX2U7Y29uc3Qgem89bl9lO2Z1bmN0aW9uIHJfZShkKXtyZXR1cm4gZnVuY3Rpb24gTFplKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIE0zZShkKX0oZCl8''@;'; put 'put ''fGZ1bmN0aW9uIERaZShkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBJWmUoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9m''@;'; put 'put ''IGQpcmV0dXJuIE0zZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20o''@;'; put 'put ''ZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gTTNlKGQsZyl9fShkKXx8ZnVuY3Rpb24gVFplKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRl''@;'; put 'put ''cmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gTTNlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZh''@;'; put 'put ''ciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9dmFyIEUzZT1uZXcgTWFwO2Z1bmN0aW9uIExwKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiJjb21tb24iO0UzZS5oYXMoZCl8fEUzZS5z''@;'; put 'put ''ZXQoZCxuZXcgTWFwKTt2YXIgZz1FM2UuZ2V0KGQpO2Z1bmN0aW9uIGgoWix1ZSl7Zy5zZXQoWix1ZSl9ZnVuY3Rpb24gdihaKXtyZXR1cm4gZy5nZXQoWil9ZnVuY3Rpb24geShaKXtyZXR1cm4gZy5oYXMoWil9ZnVuY3Rpb24gQygpe3JldHVybiByX2UoZy5rZXlzKCkpfWZ1bmN0aW9uIEko''@;'; put 'put ''KXtyZXR1cm4gcl9lKGcudmFsdWVzKCkpfXJldHVybntyZWdpc3RlcjpoLGdldEl0ZW06dixoYXNJdGVtOnksZ2V0TmFtZXM6QyxnZXRWYWx1ZXM6SX19dmFyIHgzZT1uZXcgV2Vha01hcCx6Wj1McCgiZWRpdG9ycyIpLE9aZT16Wi5yZWdpc3RlcixpX2U9elouZ2V0SXRlbSxvX2U9elouaGFz''@;'; put 'put ''SXRlbSxSWmU9elouZ2V0TmFtZXM7ZnVuY3Rpb24gQlplKGQpe3ZhciBnPXt9LGg9ZDt0aGlzLmdldENvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIGR9LHRoaXMuZ2V0SW5zdGFuY2U9ZnVuY3Rpb24odil7cmV0dXJuIHYuZ3VpZCBpbiBnfHwoZ1t2Lmd1aWRdPW5ldyBoKHYpKSxnW3Yu''@;'; put 'put ''Z3VpZF19LHpvLmdldFNpbmdsZXRvbigpLmFkZCgiYWZ0ZXJEZXN0cm95IixmdW5jdGlvbigpe2dbdGhpcy5ndWlkXT1udWxsfSl9ZnVuY3Rpb24gYV9lKGQsZyl7dmFyIGg7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGQpeDNlLmdldChkKXx8c2QobnVsbCxkKSxoPXgzZS5nZXQoZCk7ZWxzZXtp''@;'; put 'put ''Zigic3RyaW5nIiE9dHlwZW9mIGQpdGhyb3cgRXJyb3IoJ09ubHkgc3RyaW5ncyBhbmQgZnVuY3Rpb25zIGNhbiBiZSBwYXNzZWQgYXMgImVkaXRvciIgcGFyYW1ldGVyJyk7aD1pX2UoZCl9aWYoIWgpdGhyb3cgRXJyb3IoJ05vIGVkaXRvciByZWdpc3RlcmVkIHVuZGVyIG5hbWUgIicuY29u''@;'; put 'put ''Y2F0KGQsJyInKSk7cmV0dXJuIGguZ2V0SW5zdGFuY2UoZyl9ZnVuY3Rpb24gbF9lKGQpe2lmKCFvX2UoZCkpdGhyb3cgRXJyb3IoJ05vIHJlZ2lzdGVyZWQgZWRpdG9yIGZvdW5kIHVuZGVyICInLmNvbmNhdChkLCciIG5hbWUnKSk7cmV0dXJuIGlfZShkKS5nZXRDb25zdHJ1Y3RvcigpfWZ1''@;'; put 'put ''bmN0aW9uIHNkKGQsZyl7ZCYmInN0cmluZyIhPXR5cGVvZiBkJiYoZD0oZz1kKS5FRElUT1JfVFlQRSk7dmFyIGg9bmV3IEJaZShnKTsic3RyaW5nIj09dHlwZW9mIGQmJk9aZShkLGgpLHgzZS5zZXQoZyxoKX1mdW5jdGlvbiBQWmUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBzX2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4g''@;'; put 'put ''diYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgYWVlPTAsSFplPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZCgpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO1BaZSh0aGlz''@;'; put 'put ''LGQpLHRoaXMuY29udGV4dD1nfHx0aGlzLHRoaXMuY29udGV4dC5ldmVudExpc3RlbmVyc3x8KHRoaXMuY29udGV4dC5ldmVudExpc3RlbmVycz1bXSl9cmV0dXJuIGZ1bmN0aW9uIEZaZShkLGcsaCl7ZyYmc19lKGQucHJvdG90eXBlLGcpLGgmJnNfZShkLGgpLE9iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJhZGRFdmVudExpc3RlbmVyIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7dmFyIEM9dGhpcyxJPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107ZnVuY3Rpb24gWih1''@;'; put 'put ''ZSl7eS5jYWxsKHRoaXMsTlplKHVlKSl9cmV0dXJuImJvb2xlYW4iIT10eXBlb2YgSSYmIWhiZSgpJiYoST0hMSksdGhpcy5jb250ZXh0LmV2ZW50TGlzdGVuZXJzLnB1c2goe2VsZW1lbnQ6aCxldmVudDp2LGNhbGxiYWNrOnksY2FsbGJhY2tQcm94eTpaLG9wdGlvbnM6SSxldmVudE1hbmFn''@;'; put 'put ''ZXI6dGhpc30pLGguYWRkRXZlbnRMaXN0ZW5lcih2LFosSSksYWVlKz0xLGZ1bmN0aW9uKCl7Qy5yZW1vdmVFdmVudExpc3RlbmVyKGgsdix5KX19fSx7a2V5OiJyZW1vdmVFdmVudExpc3RlbmVyIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7Zm9yKHZhciBaLEM9YXJndW1lbnRzLmxlbmd0aD4z''@;'; put 'put ''JiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXSxJPXRoaXMuY29udGV4dC5ldmVudExpc3RlbmVycy5sZW5ndGg7STspaWYoKFo9dGhpcy5jb250ZXh0LmV2ZW50TGlzdGVuZXJzW0ktPTFdKS5ldmVudD09PXYmJlouZWxlbWVudD09PWgpe2lmKHkmJnkhPT1aLmNhbGxiYWNr''@;'; put 'put ''fHxDJiZaLmV2ZW50TWFuYWdlciE9PXRoaXMpY29udGludWU7dGhpcy5jb250ZXh0LmV2ZW50TGlzdGVuZXJzLnNwbGljZShJLDEpLFouZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFouZXZlbnQsWi5jYWxsYmFja1Byb3h5LFoub3B0aW9ucyksYWVlLT0xfX19LHtrZXk6ImNsZWFyRXZl''@;'; put 'put ''bnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07aWYodGhpcy5jb250ZXh0KWZvcih2YXIgdj10aGlzLmNvbnRleHQuZXZlbnRMaXN0ZW5lcnMubGVuZ3RoO3Y7KXt2YXIgeT10aGlzLmNvbnRl''@;'; put 'put ''eHQuZXZlbnRMaXN0ZW5lcnNbdi09MV07aCYmeS5ldmVudE1hbmFnZXIhPT10aGlzfHwodGhpcy5jb250ZXh0LmV2ZW50TGlzdGVuZXJzLnNwbGljZSh2LDEpLHkuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHkuZXZlbnQseS5jYWxsYmFja1Byb3h5LHkub3B0aW9ucyksYWVlLT0xKX19''@;'; put 'put ''fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsZWFyRXZlbnRzKCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2xlYXJFdmVudHMoKSx0aGlzLmNvbnRleHQ9bnVsbH19LHtrZXk6ImRlc3Ryb3lXaXRoT3duRXZlbnRzT25seSIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oKXt0aGlzLmNsZWFyRXZlbnRzKCEwKSx0aGlzLmNvbnRleHQ9bnVsbH19LHtrZXk6ImZpcmVFdmVudCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT1oLmRvY3VtZW50LEM9aDt5fHwoQz0oeT1oLm93bmVyRG9jdW1lbnQ/aC5vd25lckRvY3VtZW50OmgpLmRlZmF1bHRWaWV3KTt2''@;'; put 'put ''YXIgWixJPXtidWJibGVzOiEwLGNhbmNlbGFibGU6Im1vdXNlbW92ZSIhPT12LHZpZXc6QyxkZXRhaWw6MCxzY3JlZW5YOjAsc2NyZWVuWTowLGNsaWVudFg6MSxjbGllbnRZOjEsY3RybEtleTohMSxhbHRLZXk6ITEsc2hpZnRLZXk6ITEsbWV0YUtleTohMSxidXR0b246MCxyZWxhdGVkVGFy''@;'; put 'put ''Z2V0OnZvaWQgMH07eS5jcmVhdGVFdmVudD8oWj15LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpKS5pbml0TW91c2VFdmVudCh2LEkuYnViYmxlcyxJLmNhbmNlbGFibGUsSS52aWV3LEkuZGV0YWlsLEkuc2NyZWVuWCxJLnNjcmVlblksSS5jbGllbnRYLEkuY2xpZW50WSxJLmN0cmxLZXks''@;'; put 'put ''SS5hbHRLZXksSS5zaGlmdEtleSxJLm1ldGFLZXksSS5idXR0b24sSS5yZWxhdGVkVGFyZ2V0fHx5LmJvZHkucGFyZW50Tm9kZSk6Wj15LmNyZWF0ZUV2ZW50T2JqZWN0KCksaC5kaXNwYXRjaEV2ZW50P2guZGlzcGF0Y2hFdmVudChaKTpoLmZpcmVFdmVudCgib24iLmNvbmNhdCh2KSxaKX19''@;'; put 'put ''XSksZH0oKTtmdW5jdGlvbiBOWmUoZCl7dmFyIGc9ZC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb247cmV0dXJuIGQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7Zy5hcHBseSh0aGlzKSxfOCh0aGlzKX0sZH1jb25zdCBMMT1IWmU7ZnVuY3Rpb24gdV9lKGQsZyl7KG51bGw9''@;'; put 'put ''PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gY19lKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJs''@;'; put 'put ''ZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIGxlZT0iZWRpdG9yTWFuYWdlci5uYXZpZ2F0aW9uIixHWj0iZWRpdG9yTWFuYWdlci5oYW5kbGluZ0VkaXRvciIsVDNlPWZ1bmN0''@;'; put 'put ''aW9uKCl7ZnVuY3Rpb24gZChnLGgsdil7dmFyIHk9dGhpczsoZnVuY3Rpb24gWVplKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuaW5zdGFuY2U9Zyx0aGlzLnRh''@;'; put 'put ''YmxlTWV0YT1oLHRoaXMuc2VsZWN0aW9uPXYsdGhpcy5ldmVudE1hbmFnZXI9bmV3IEwxKGcpLHRoaXMuZGVzdHJveWVkPSExLHRoaXMubG9jaz0hMSx0aGlzLmFjdGl2ZUVkaXRvcj12b2lkIDAsdGhpcy5jZWxsUHJvcGVydGllcz12b2lkIDAsdGhpcy5pbnN0YW5jZS5nZXRTaG9ydGN1dE1h''@;'; put 'put ''bmFnZXIoKS5hZGRDb250ZXh0KCJlZGl0b3IiKSx0aGlzLnJlZ2lzdGVyU2hvcnRjdXRzKCksdGhpcy5pbnN0YW5jZS5hZGRIb29rKCJhZnRlckRvY3VtZW50S2V5RG93biIsZnVuY3Rpb24oSSl7cmV0dXJuIHkub25BZnRlckRvY3VtZW50S2V5RG93bihJKX0pLHRoaXMuZXZlbnRNYW5hZ2Vy''@;'; put 'put ''LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5pbnN0YW5jZS5yb290RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCJjb21wb3NpdGlvbnN0YXJ0IixmdW5jdGlvbihJKXsheS5kZXN0cm95ZWQmJnkuYWN0aXZlRWRpdG9yJiYheS5hY3RpdmVFZGl0b3IuaXNPcGVuZWQoKSYmeS5pbnN0YW5jZS5pc0xp''@;'; put 'put ''c3RlbmluZygpJiZ5Lm9wZW5FZGl0b3IoIiIsSSl9KSx0aGlzLmluc3RhbmNlLnZpZXcuX3d0LnVwZGF0ZSgib25DZWxsRGJsQ2xpY2siLGZ1bmN0aW9uKEksWix1ZSl7cmV0dXJuIHkub25DZWxsRGJsQ2xpY2soSSxaLHVlKX0pfXJldHVybiBmdW5jdGlvbiBVWmUoZCxnLGgpe2cmJmNfZShk''@;'; put 'put ''LnByb3RvdHlwZSxnKSxoJiZjX2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToicmVnaXN0ZXJTaG9ydGN1dHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcyx2PXRoaXMuaW5zdGFuY2UuZ2V0U2hvcnRjdXRNYW5h''@;'; put 'put ''Z2VyKCkseT12LmdldENvbnRleHQoImdyaWQiKSxDPXYuZ2V0Q29udGV4dCgiZWRpdG9yIiksST17Z3JvdXA6R1p9O0MuYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJFbnRlciJdLFsiRW50ZXIiLCJTaGlmdCJdLFsiRW50ZXIiLCJDb250cm9sL01ldGEiXSxbIkVudGVyIiwiQ29udHJvbC9NZXRh''@;'; put 'put ''IiwiU2hpZnQiXV0sY2FsbGJhY2s6ZnVuY3Rpb24odWUsX2Upe2guY2xvc2VFZGl0b3JBbmRTYXZlQ2hhbmdlcyh2LmlzQ3RybFByZXNzZWQoKSksaC5tb3ZlU2VsZWN0aW9uQWZ0ZXJFbnRlcihfZS5pbmNsdWRlcygic2hpZnQiKSl9fSx7a2V5czpbWyJFc2NhcGUiXSxbIkVzY2FwZSIsIkNv''@;'; put 'put ''bnRyb2wvTWV0YSJdXSxjYWxsYmFjazpmdW5jdGlvbigpe2guY2xvc2VFZGl0b3JBbmRSZXN0b3JlT3JpZ2luYWxWYWx1ZSh2LmlzQ3RybFByZXNzZWQoKSksaC5hY3RpdmVFZGl0b3IuZm9jdXMoKX19XSxJKSx5LmFkZFNob3J0Y3V0cyhbe2tleXM6W1siRjIiXV0sY2FsbGJhY2s6ZnVuY3Rp''@;'; put 'put ''b24odWUpe2guYWN0aXZlRWRpdG9yJiZoLmFjdGl2ZUVkaXRvci5lbmFibGVGdWxsRWRpdE1vZGUoKSxoLm9wZW5FZGl0b3IobnVsbCx1ZSl9fSx7a2V5czpbWyJCYWNrc3BhY2UiXSxbIkRlbGV0ZSJdXSxjYWxsYmFjazpmdW5jdGlvbigpe2guaW5zdGFuY2UuZW1wdHlTZWxlY3RlZENlbGxz''@;'; put 'put ''KCksaC5wcmVwYXJlRWRpdG9yKCl9fSx7a2V5czpbWyJFbnRlciJdLFsiRW50ZXIiLCJTaGlmdCJdXSxjYWxsYmFjazpmdW5jdGlvbih1ZSxfZSl7aC5pbnN0YW5jZS5nZXRTZXR0aW5ncygpLmVudGVyQmVnaW5zRWRpdGluZz9oLmNlbGxQcm9wZXJ0aWVzLnJlYWRPbmx5P2gubW92ZVNlbGVj''@;'; put 'put ''dGlvbkFmdGVyRW50ZXIoKTpoLmFjdGl2ZUVkaXRvciYmKGguYWN0aXZlRWRpdG9yLmVuYWJsZUZ1bGxFZGl0TW9kZSgpLGgub3BlbkVkaXRvcihudWxsLHVlKSk6aC5tb3ZlU2VsZWN0aW9uQWZ0ZXJFbnRlcihfZS5pbmNsdWRlcygic2hpZnQiKSksXzgodWUpfX1dLEkpfX0se2tleToibG9j''@;'; put 'put ''a0VkaXRvciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmxvY2s9ITB9fSx7a2V5OiJ1bmxvY2tFZGl0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5sb2NrPSExfX0se2tleToiZGVzdHJveUVkaXRvciIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5sb2NrfHx0aGlzLmNsb3NlRWRpdG9yKGgpfX0s''@;'; put 'put ''e2tleToiZ2V0QWN0aXZlRWRpdG9yIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFjdGl2ZUVkaXRvcn19LHtrZXk6InByZXBhcmVFZGl0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcztpZighdGhpcy5sb2NrKXtpZih0aGlzLmFjdGl2ZUVkaXRvciYmdGhpcy5hY3RpdmVF''@;'; put 'put ''ZGl0b3IuaXNXYWl0aW5nKCkpcmV0dXJuIHZvaWQgdGhpcy5jbG9zZUVkaXRvcighMSwhMSxmdW5jdGlvbigkdCl7JHQmJmgucHJlcGFyZUVkaXRvcigpfSk7dmFyIHY9dGhpcy5pbnN0YW5jZS5zZWxlY3Rpb24uc2VsZWN0ZWRSYW5nZS5jdXJyZW50KCkuaGlnaGxpZ2h0LHk9di5yb3csQz12''@;'; put 'put ''LmNvbCxJPXRoaXMuaW5zdGFuY2UucnVuSG9va3MoIm1vZGlmeUdldENlbGxDb29yZHMiLHksQyksWj15LHVlPUM7aWYoQXJyYXkuaXNBcnJheShJKSl7dmFyIF9lPWZ1bmN0aW9uIGpaZShkLGcpe3JldHVybiBmdW5jdGlvbiBXWmUoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0o''@;'; put 'put ''ZCl8fGZ1bmN0aW9uIEdaZShkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksWix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0o''@;'; put 'put ''ST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKHVlKXtDPSEwLFo9dWV9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBafX1yZXR1cm4gdn19KGQsZyl8fGZ1''@;'; put 'put ''bmN0aW9uIHpaZShkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gdV9lKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1l''@;'; put 'put ''KSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiB1X2UoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIFpaZSgpe3Rocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KEksMik7Wj1fZVsw''@;'; put 'put ''XSx1ZT1fZVsxXX10aGlzLmNlbGxQcm9wZXJ0aWVzPXRoaXMuaW5zdGFuY2UuZ2V0Q2VsbE1ldGEoWix1ZSk7dmFyIEJlPXRoaXMuaW5zdGFuY2Uucm9vdERvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7aWYoQmUmJkJlLmJsdXIoKSx0aGlzLmNlbGxQcm9wZXJ0aWVzLnJlYWRPbmx5KXJldHVybiB2''@;'; put 'put ''b2lkIHRoaXMuY2xlYXJBY3RpdmVFZGl0b3IoKTt2YXIgTmU9dGhpcy5pbnN0YW5jZS5nZXRDZWxsRWRpdG9yKHRoaXMuY2VsbFByb3BlcnRpZXMpLEtlPXRoaXMuaW5zdGFuY2UuZ2V0Q2VsbCh5LEMsITApO2lmKE5lJiZLZSl7dmFyIHB0PXRoaXMuaW5zdGFuY2UuY29sVG9Qcm9wKHVlKSxP''@;'; put 'put ''dD10aGlzLmluc3RhbmNlLmdldFNvdXJjZURhdGFBdENlbGwodGhpcy5pbnN0YW5jZS50b1BoeXNpY2FsUm93KFopLHVlKTt0aGlzLmFjdGl2ZUVkaXRvcj1hX2UoTmUsdGhpcy5pbnN0YW5jZSksdGhpcy5hY3RpdmVFZGl0b3IucHJlcGFyZSh5LEMscHQsS2UsT3QsdGhpcy5jZWxsUHJvcGVy''@;'; put 'put ''dGllcyl9ZWxzZSB0aGlzLmNsZWFyQWN0aXZlRWRpdG9yKCl9fX0se2tleToiaXNFZGl0b3JPcGVuZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWN0aXZlRWRpdG9yJiZ0aGlzLmFjdGl2ZUVkaXRvci5pc09wZW5lZCgpfX0se2tleToib3BlbkVkaXRvciIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oaCx2KXshdGhpcy5hY3RpdmVFZGl0b3J8fHRoaXMuYWN0aXZlRWRpdG9yLmJlZ2luRWRpdGluZyhoLHYpfX0se2tleToiY2xvc2VFZGl0b3IiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt0aGlzLmFjdGl2ZUVkaXRvcj90aGlzLmFjdGl2ZUVkaXRvci5maW5pc2hFZGl0aW5nKGgsdix5KTp5''@;'; put 'put ''JiZ5KCExKX19LHtrZXk6ImNsb3NlRWRpdG9yQW5kU2F2ZUNoYW5nZXMiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMuY2xvc2VFZGl0b3IoITEsaCl9fSx7a2V5OiJjbG9zZUVkaXRvckFuZFJlc3RvcmVPcmlnaW5hbFZhbHVlIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmNsb3NlRWRpdG9yKCEw''@;'; put 'put ''LGgpfX0se2tleToiY2xlYXJBY3RpdmVFZGl0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5hY3RpdmVFZGl0b3I9dm9pZCAwfX0se2tleToibW92ZVNlbGVjdGlvbkFmdGVyRW50ZXIiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnRhYmxlTWV0YS5l''@;'; put 'put ''bnRlck1vdmVzP3RoaXMudGFibGVNZXRhLmVudGVyTW92ZXMoZXZlbnQpOnRoaXMudGFibGVNZXRhLmVudGVyTW92ZXM7aD90aGlzLnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCgtdi5yb3csLXYuY29sKTp0aGlzLnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCh2LnJvdyx2LmNvbCwhMCl9fSx7''@;'; put 'put ''a2V5OiJvbkFmdGVyRG9jdW1lbnRLZXlEb3duIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzO2lmKHRoaXMuaW5zdGFuY2UuaXNMaXN0ZW5pbmcoKSl7dmFyIHk9aC5rZXlDb2RlO2lmKDIyOSE9PXkmJnRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQoKSl7dmFyIEM9KGguY3RybEtleXx8''@;'; put 'put ''aC5tZXRhS2V5KSYmIWguYWx0S2V5OyF0aGlzLmFjdGl2ZUVkaXRvcnx8dGhpcy5hY3RpdmVFZGl0b3IuaXNXYWl0aW5nKCl8fF8zZSh5KXx8cWJlKHkpfHxDfHx0aGlzLmlzRWRpdG9yT3BlbmVkKCl8fCh0aGlzLmluc3RhbmNlLmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImVk''@;'; put 'put ''aXRvciIpLmFkZFNob3J0Y3V0cyhbe2tleXM6W1siQXJyb3dVcCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3YuaW5zdGFuY2Uuc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KC0xLDApfX0se2tleXM6W1siQXJyb3dEb3duIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7di5pbnN0YW5jZS5zZWxlY3Rp''@;'; put 'put ''b24udHJhbnNmb3JtU3RhcnQoMSwwKX19LHtrZXlzOltbIkFycm93TGVmdCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3YuaW5zdGFuY2Uuc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KDAsLTEqdi5pbnN0YW5jZS5nZXREaXJlY3Rpb25GYWN0b3IoKSl9fSx7a2V5czpbWyJBcnJvd1JpZ2h0Il1d''@;'; put 'put ''LGNhbGxiYWNrOmZ1bmN0aW9uKCl7di5pbnN0YW5jZS5zZWxlY3Rpb24udHJhbnNmb3JtU3RhcnQoMCx2Lmluc3RhbmNlLmdldERpcmVjdGlvbkZhY3RvcigpKX19XSx7cnVuT25seUlmOmZ1bmN0aW9uKCl7cmV0dXJuIFRvKHYuaW5zdGFuY2UuZ2V0U2VsZWN0ZWQoKSl9LGdyb3VwOmxlZX0p''@;'; put 'put ''LHRoaXMub3BlbkVkaXRvcigiIixoKSl9fX19LHtrZXk6Im9uQ2VsbERibENsaWNrIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7IlREIj09PXkubm9kZU5hbWUmJih0aGlzLmFjdGl2ZUVkaXRvciYmdGhpcy5hY3RpdmVFZGl0b3IuZW5hYmxlRnVsbEVkaXRNb2RlKCksdGhpcy5vcGVuRWRpdG9y''@;'; put 'put ''KG51bGwsaCkpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRlc3Ryb3llZD0hMCx0aGlzLmV2ZW50TWFuYWdlci5kZXN0cm95KCl9fV0pLGR9KCksZl9lPW5ldyBXZWFrTWFwO1QzZS5nZXRJbnN0YW5jZT1mdW5jdGlvbihkLGcsaCl7dmFyIHY9Zl9lLmdldChkKTty''@;'; put 'put ''ZXR1cm4gdnx8KHY9bmV3IFQzZShkLGcsaCksZl9lLnNldChkLHYpKSx2fTtjb25zdCBRWmU9VDNlO2Z1bmN0aW9uIEkzZShkKXtyZXR1cm4gZnVuY3Rpb24gJFplKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIEQzZShkKX0oZCl8fGZ1bmN0aW9uIEtaZShkKXtpZigidW5kZWZpbmVk''@;'; put 'put ''IiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBYWmUoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIEQzZShkLGcpO3ZhciBoPU9iamVj''@;'; put 'put ''dC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVp''@;'; put 'put ''fEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gRDNlKGQsZyl9fShkKXx8ZnVuY3Rpb24gSlplKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBi''@;'; put 'put ''ZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gRDNlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2''@;'; put 'put ''W2hdPWRbaF07cmV0dXJuIHZ9TCg5NjI1MSksTCgyNzYyKSxMKDU4MCksTCg3MTc3MiksTCgzNTgxMCk7dmFyIGhfZT17IiZuYnNwOyI6IiAiLCImYW1wOyI6IiYiLCImbHQ7IjoiPCIsIiZndDsiOiI+In0scVplPW5ldyBSZWdFeHAoT2JqZWN0LmtleXMoaF9lKS5tYXAoZnVuY3Rpb24oZCl7''@;'; put 'put ''cmV0dXJuIigiLmNvbmNhdChkLCIpIil9KS5qb2luKCJ8IiksImdpIik7ZnVuY3Rpb24gZXplKGQpe3JldHVybiJUQUJMRSI9PT0oZCYmZC5ub2RlTmFtZXx8IiIpfWZ1bmN0aW9uIEwzZShkKXtmb3IodmFyIGc9ZC5oYXNDb2xIZWFkZXJzKCksaD1kLmhhc1Jvd0hlYWRlcnMoKSx2PVtnPy0x''@;'; put 'put ''OjAsaD8tMTowLGQuY291bnRSb3dzKCktMSxkLmNvdW50Q29scygpLTFdLHk9ZC5nZXREYXRhLmFwcGx5KGQsdiksQz15Lmxlbmd0aCxJPUM+MD95WzBdLmxlbmd0aDowLFo9WyI8dGFibGU+IiwiPC90YWJsZT4iXSx1ZT1nP1siPHRoZWFkPiIsIjwvdGhlYWQ+Il06W10sX2U9WyI8dGJvZHk+''@;'; put 'put ''IiwiPC90Ym9keT4iXSxCZT1oPzE6MCxOZT1nPzE6MCxLZT0wO0tlPEM7S2UrPTEpe2Zvcih2YXIgcHQ9ZyYmMD09PUtlLE90PVtdLCR0PTA7JHQ8STskdCs9MSl7dmFyIGZuPSFwdCYmaCYmMD09PSR0LExuPSIiO2lmKHB0KUxuPSI8dGg+Ii5jb25jYXQoZC5nZXRDb2xIZWFkZXIoJHQtQmUp''@;'; put 'put ''LCI8L3RoPiIpO2Vsc2UgaWYoZm4pTG49Ijx0aD4iLmNvbmNhdChkLmdldFJvd0hlYWRlcihLZS1OZSksIjwvdGg+Iik7ZWxzZXt2YXIgaXI9eVtLZV1bJHRdLG1yPWQuZ2V0Q2VsbE1ldGEoS2UtTmUsJHQtQmUpLHdyPW1yLnJvd3NwYW4sUXI9bXIuY29sc3BhbjtpZighbXIuaGlkZGVuKXt2''@;'; put 'put ''YXIgeWk9W107aWYod3ImJnlpLnB1c2goJ3Jvd3NwYW49IicuY29uY2F0KHdyLCciJykpLFFyJiZ5aS5wdXNoKCdjb2xzcGFuPSInLmNvbmNhdChRciwnIicpKSxkYyhpcikpTG49Ijx0ZCAiLmNvbmNhdCh5aS5qb2luKCIgIiksIj48L3RkPiIpO2Vsc2V7dmFyIEtpPWlyLnRvU3RyaW5nKCku''@;'; put 'put ''cmVwbGFjZSgiPCIsIiZsdDsiKS5yZXBsYWNlKCI+IiwiJmd0OyIpLnJlcGxhY2UoLyg8YnIoXHMqfFwvKT4oXHJcbnxcbik/fFxyXG58XG4pL2csIjxicj5cclxuIikucmVwbGFjZSgvXHgyMC9naSwiJm5ic3A7IikucmVwbGFjZSgvXHQvZ2ksIiYjOTsiKTtMbj0iPHRkICIuY29uY2F0KHlp''@;'; put 'put ''LmpvaW4oIiAiKSwiPiIpLmNvbmNhdChLaSwiPC90ZD4iKX19fU90LnB1c2goTG4pfXZhciBTbz1bIjx0cj4iXS5jb25jYXQoT3QsWyI8L3RyPiJdKS5qb2luKCIiKTtwdD91ZS5zcGxpY2UoMSwwLFNvKTpfZS5zcGxpY2UoLTEsMCxTbyl9cmV0dXJuIFouc3BsaWNlKDEsMCx1ZS5qb2luKCIi''@;'; put 'put ''KSxfZS5qb2luKCIiKSksWi5qb2luKCIiKX1mdW5jdGlvbiBPM2UoZCl7Zm9yKHZhciBnPWQubGVuZ3RoLGg9WyI8dGFibGU+Il0sdj0wO3Y8Zzt2Kz0xKXt2YXIgeT1kW3ZdLEM9eS5sZW5ndGgsST1bXTswPT09diYmaC5wdXNoKCI8dGJvZHk+Iik7Zm9yKHZhciBaPTA7WjxDO1orPTEpe3Zh''@;'; put 'put ''ciB1ZT15W1pdLF9lPWRjKHVlKT8iIjp1ZS50b1N0cmluZygpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyg8YnIoXHMqfFwvKT4oXHJcbnxcbik/fFxyXG58XG4pL2csIjxicj5cclxuIikucmVwbGFjZSgvXHgyMC9naSwiJm5ic3A7IikucmVw''@;'; put 'put ''bGFjZSgvXHQvZ2ksIiYjOTsiKTtJLnB1c2goIjx0ZD4iLmNvbmNhdChfZSwiPC90ZD4iKSl9aC5wdXNoLmFwcGx5KGgsWyI8dHI+Il0uY29uY2F0KEksWyI8L3RyPiJdKSksdisxPT09ZyYmaC5wdXNoKCI8L3Rib2R5PiIpfXJldHVybiBoLnB1c2goIjwvdGFibGU+IiksaC5qb2luKCIiKX1m''@;'; put 'put ''dW5jdGlvbiBkX2UoZCl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOmRvY3VtZW50LGg9e30sdj1nLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSx5PWcuY3JlYXRlRWxlbWVudCgiZGl2Iik7di5hcHBlbmRDaGlsZCh5KTt2YXIg''@;'; put 'put ''Qz1kO2lmKCJzdHJpbmciPT10eXBlb2YgQyl7dmFyIEk9Qy5yZXBsYWNlKC88dGRcYltePl0qPz4oW1xzXFNdKj8pPFwvXHMqdGQ+L2csZnVuY3Rpb24oWm4pe3ZhciBfcj1abi5tYXRjaCgvPHRkXGJbXj5dKj8+L2cpWzBdLFhyPVpuLnN1YnN0cmluZyhfci5sZW5ndGgsWm4ubGFzdEluZGV4''@;'; put 'put ''T2YoIjwiKSkucmVwbGFjZSgvKDwoPyFicikoW14+XSspPikvZ2ksIiIpO3JldHVybiIiLmNvbmNhdChfcikuY29uY2F0KFhyKS5jb25jYXQoIjwvdGQ+Iil9KTt5Lmluc2VydEFkamFjZW50SFRNTCgiYWZ0ZXJiZWdpbiIsIiIuY29uY2F0KEkpKSxDPXkucXVlcnlTZWxlY3RvcigidGFibGUi''@;'; put 'put ''KX1pZihDJiZlemUoQykpe3ZhciBaPXkucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lJD0iZW5lcmF0b3IiXScpLHVlPW51bGwhPT1DLnF1ZXJ5U2VsZWN0b3IoInRib2R5IHRoIiksX2U9Qy5xdWVyeVNlbGVjdG9yKCJ0ciIpLEJlPV9lP0FycmF5LmZyb20oX2UuY2VsbHMpLnJlZHVjZShmdW5j''@;'; put 'put ''dGlvbihabixfcil7cmV0dXJuIFpuK19yLmNvbFNwYW59LDApLSh1ZT8xOjApOjAsTmU9Qy50Rm9vdCYmQXJyYXkuZnJvbShDLnRGb290LnJvd3MpfHxbXSxLZT1bXSxwdD0hMSxPdD0wLCR0PTA7aWYoQy50SGVhZCl7dmFyIGZuPUFycmF5LmZyb20oQy50SGVhZC5yb3dzKS5maWx0ZXIoZnVu''@;'; put 'put ''Y3Rpb24oWm4pe3ZhciBfcj1udWxsIT09Wm4ucXVlcnlTZWxlY3RvcigidGQiKTtyZXR1cm4gX3ImJktlLnB1c2goWm4pLCFfcn0pO3B0PShPdD1mbi5sZW5ndGgpPjAsT3Q+MT9oLm5lc3RlZEhlYWRlcnM9QXJyYXkuZnJvbShmbikucmVkdWNlKGZ1bmN0aW9uKFpuLF9yKXt2YXIgWHI9QXJy''@;'; put 'put ''YXkuZnJvbShfci5jZWxscykucmVkdWNlKGZ1bmN0aW9uKGNpLGMwLFhpKXtpZih1ZSYmMD09PVhpKXJldHVybiBjaTt2YXIgRTA9YzAuY29sU3Bhbix6MD1jMC5pbm5lckhUTUw7cmV0dXJuIGNpLnB1c2goRTA+MT97bGFiZWw6ejAsY29sc3BhbjpFMH06ejApLGNpfSxbXSk7cmV0dXJuIFpu''@;'; put 'put ''LnB1c2goWHIpLFpufSxbXSk6cHQmJihoLmNvbEhlYWRlcnM9QXJyYXkuZnJvbShmblswXS5jaGlsZHJlbikucmVkdWNlKGZ1bmN0aW9uKFpuLF9yLFhyKXtyZXR1cm4gdWUmJjA9PT1Ycnx8Wm4ucHVzaChfci5pbm5lckhUTUwpLFpufSxbXSkpfUtlLmxlbmd0aCYmKGguZml4ZWRSb3dzVG9w''@;'; put 'put ''PUtlLmxlbmd0aCksTmUubGVuZ3RoJiYoaC5maXhlZFJvd3NCb3R0b209TmUubGVuZ3RoKTt2YXIgTG49W10uY29uY2F0KEtlLEkzZShBcnJheS5mcm9tKEMudEJvZGllcykucmVkdWNlKGZ1bmN0aW9uKFpuLF9yKXtyZXR1cm4gWm4ucHVzaC5hcHBseShabixJM2UoQXJyYXkuZnJvbShfci5y''@;'; put 'put ''b3dzKSkpLFpufSxbXSkpLEkzZShOZSkpOyR0PUxuLmxlbmd0aDtmb3IodmFyIGlyPW5ldyBBcnJheSgkdCksbXI9MDttcjwkdDttcisrKWlyW21yXT1uZXcgQXJyYXkoQmUpO2Zvcih2YXIgU3I9W10sd3I9W10sUXI9MDtRcjwkdDtRcisrKWZvcih2YXIgeWk9TG5bUXJdLEtpPUFycmF5LmZy''@;'; put 'put ''b20oeWkuY2VsbHMpLFNvPUtpLmxlbmd0aCxQbz0wO1BvPFNvO1BvKyspe3ZhciBTYT1LaVtQb10sSmE9U2Eubm9kZU5hbWUsbGE9U2EuaW5uZXJIVE1MLGFsPVNhLnJvd1NwYW4sUnM9U2EuY29sU3BhbixIMD1pcltRcl0uZmluZEluZGV4KGZ1bmN0aW9uKFpuKXtyZXR1cm4gdm9pZCAwPT09''@;'; put 'put ''Wm59KTtpZigiVEQiPT09SmEpe2lmKGFsPjF8fFJzPjEpe2Zvcih2YXIgcm89UXI7cm88UXIrYWw7cm8rKylpZihybzwkdClmb3IodmFyIGZvPUgwO2ZvPEgwK1JzO2ZvKyspaXJbcm9dW2ZvXT1udWxsO3ZhciBJYT1TYS5nZXRBdHRyaWJ1dGUoInN0eWxlIiksWGw9SWEmJklhLmluY2x1ZGVz''@;'; put 'put ''KCJtc28taWdub3JlOmNvbHNwYW4iKTtYbHx8U3IucHVzaCh7Y29sOkgwLHJvdzpRcixyb3dzcGFuOmFsLGNvbHNwYW46UnN9KX12YXIgRm49IiI7Rm49WiYmL2V4Y2VsL2dpLnRlc3QoWi5jb250ZW50KT9sYS5yZXBsYWNlKC9bXHJcbl1bXHgyMF17MCwyfS9nLCIgIikucmVwbGFjZSgvPGJy''@;'; put 'put ''KFxzKnxcLyk+W1xyXG5dP1tceDIwXXswLDN9L2dpbSwiXHJcbiIpOmxhLnJlcGxhY2UoLzxicihccyp8XC8pPltcclxuXT8vZ2ltLCJcclxuIiksaXJbUXJdW0gwXT1Gbi5yZXBsYWNlKHFaZSxmdW5jdGlvbihabil7cmV0dXJuIGhfZVtabl19KX1lbHNlIHdyLnB1c2gobGEpfXJldHVybiBT''@;'; put 'put ''ci5sZW5ndGgmJihoLm1lcmdlQ2VsbHM9U3IpLHdyLmxlbmd0aCYmKGgucm93SGVhZGVycz13ciksaXIubGVuZ3RoJiYoaC5kYXRhPWlyKSxofX1mdW5jdGlvbiB0emUoZCl7cmV0dXJuIGZ1bmN0aW9uIG96ZShkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBSM2UoZCl9KGQpfHxmdW5j''@;'; put 'put ''dGlvbiBpemUoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQpfShkKXx8ZnVuY3Rpb24gcnplKGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJl''@;'; put 'put ''dHVybiBSM2UoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lm''@;'; put 'put ''KCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIFIzZShkLGcpfX0oZCl8fGZ1bmN0aW9uIG56ZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxl''@;'; put 'put ''IGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIFIzZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0w''@;'; put 'put ''LHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIEIzZShkKXtyZXR1cm4oQjNlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rp''@;'; put 'put ''b24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gdjQoZCl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1''@;'; put 'put ''bWVudHNbMV0/YXJndW1lbnRzWzFdOltdLGg9QjNlKGQpO2lmKCJudW1iZXIiPT09aClyZXR1cm4haXNOYU4oZCkmJmlzRmluaXRlKGQpO2lmKCJzdHJpbmciPT09aCl7aWYoMD09PWQubGVuZ3RoKXJldHVybiExO2lmKDE9PT1kLmxlbmd0aClyZXR1cm4vXGQvLnRlc3QoZCk7dmFyIHY9QXJy''@;'; put 'put ''YXkuZnJvbShuZXcgU2V0KFsiLiJdLmNvbmNhdCh0emUoZykpKSkubWFwKGZ1bmN0aW9uKHkpe3JldHVybiJcXCIuY29uY2F0KHkpfSkuam9pbigifCIpO3JldHVybiBuZXcgUmVnRXhwKCJeWystXT9cXHMqKCgoIi5jb25jYXQodiwiKT9cXGQrKCgiKS5jb25jYXQodiwiKVxcZCspPyhlWyst''@;'; put 'put ''XT9cXGQrKT8pfCgweFthLWZcXGRdKykpJCIpLCJpIikudGVzdChkLnRyaW0oKSl9cmV0dXJuIm9iamVjdCI9PT1oJiYhKCFkfHwibnVtYmVyIiE9dHlwZW9mIGQudmFsdWVPZigpfHxkIGluc3RhbmNlb2YgRGF0ZSl9ZnVuY3Rpb24gcF9lKGQpe3JldHVybiB2NChkLFsiLCJdKX1mdW5jdGlv''@;'; put 'put ''biBpYShkLGcsaCl7dmFyIHY9LTE7Zm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBnPyhoPWcsZz1kKTp2PWQtMTsrK3Y8PWcmJiExIT09aCh2KTspO31mdW5jdGlvbiBzZWUoZCxnLGgpe3ZhciB2PWQrMTtmb3IoImZ1bmN0aW9uIj09dHlwZW9mIGcmJihoPWcsZz0wKTstLXY+PWcmJiExIT09aCh2''@;'; put 'put ''KTspO31mdW5jdGlvbiBQM2UoZCxnKXtyZXR1cm4gZz1wYXJzZUludChnLnRvU3RyaW5nKCkucmVwbGFjZSgiJSIsIiIpLDEwKSxnPWlzTmFOKGcpPzA6ZyxwYXJzZUludChkKmcvMTAwLDEwKX1mdW5jdGlvbiBhemUoZCl7cmV0dXJuIGZ1bmN0aW9uIHV6ZShkKXtpZihBcnJheS5pc0FycmF5''@;'; put 'put ''KGQpKXJldHVybiBGM2UoZCl9KGQpfHxmdW5jdGlvbiBzemUoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQpfShkKXx8Z19lKGQpfHxmdW5jdGlvbiBsemUo''@;'; put 'put ''KXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5j''@;'; put 'put ''dGlvbiBjemUoZCxnKXtyZXR1cm4gZnVuY3Rpb24gZHplKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBoemUoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVy''@;'; put 'put ''YXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaCh1ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZu''@;'; put 'put ''dWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgWn19cmV0dXJuIHZ9fShkLGcpfHxnX2UoZCxnKXx8ZnVuY3Rpb24gZnplKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5c''@;'; put 'put ''bkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBnX2UoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIEYzZShkLGcpO3ZhciBoPU9iamVjdC5w''@;'; put 'put ''cm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkp''@;'; put 'put ''bnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gRjNlKGQsZyl9fWZ1bmN0aW9uIEYzZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2''@;'; put 'put ''fXZhciBIM2U9ImFzYyIsbV9lPW5ldyBNYXAoW1tIM2UsWy0xLDFdXSxbImRlc2MiLFsxLC0xXV1dKSxnemU9ZnVuY3Rpb24oZyl7cmV0dXJuIlRoZSBwcmlvcml0eSAnIi5jb25jYXQoZywiJyBpcyBhbHJlYWR5IGRlY2xhcmVkIGluIGEgbWFwLiIpfSxtemU9ZnVuY3Rpb24oZyl7cmV0dXJu''@;'; put 'put ''IlRoZSBwcmlvcml0eSAnIi5jb25jYXQoZywiJyBpcyBub3QgYSBudW1iZXIuIil9O2Z1bmN0aW9uIEF6ZShkKXtyZXR1cm4gZnVuY3Rpb24gYnplKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIE4zZShkKX0oZCl8fGZ1bmN0aW9uIHd6ZShkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9m''@;'; put 'put ''IFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxBX2UoZCl8fGZ1bmN0aW9uIHl6ZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxl''@;'; put 'put ''IGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHZfZShkLGcpe3JldHVybiBmdW5jdGlvbiBremUoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1''@;'; put 'put ''cm4gZH0oZCl8fGZ1bmN0aW9uIEN6ZShkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksWix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQp''@;'; put 'put ''OyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKHVlKXtDPSEwLFo9dWV9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBafX1yZXR1cm4gdn19KGQs''@;'; put 'put ''Zyl8fEFfZShkLGcpfHxmdW5jdGlvbiBfemUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1i''@;'; put 'put ''b2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIEFfZShkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gTjNlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25z''@;'; put 'put ''dHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBOM2UoZCxnKX19ZnVu''@;'; put 'put ''Y3Rpb24gTjNlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9TCg1NDY3OSk7dmFyIFN6ZT1mdW5jdGlvbihnKXtyZXR1cm4iVGhlIGlkICciLmNvbmNhdChnLCInIGlz''@;'; put 'put ''IGFscmVhZHkgZGVjbGFyZWQgaW4gYSBtYXAuIil9O2Z1bmN0aW9uIHVlZSgpe3ZhciBkPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxnPWQuZXJyb3JJZEV4aXN0cyxoPW5ldyBNYXA7ZnVuY3Rpb24gdihCZSxOZSl7aWYoX2UoQmUp''@;'; put 'put ''KXRocm93IG5ldyBFcnJvcihnKEJlKSk7aC5zZXQoQmUsTmUpfWZ1bmN0aW9uIHkoQmUpe3JldHVybiBoLmRlbGV0ZShCZSl9ZnVuY3Rpb24gQygpe2guY2xlYXIoKX1mdW5jdGlvbiBJKEJlKXt2YXIgTmU9dWUoKS5maW5kKGZ1bmN0aW9uKE90KXt2YXIgJHQ9dl9lKE90LDIpO3JldHVybiBC''@;'; put 'put ''ZT09PSR0WzFdJiYkdFswXX0pfHxbbnVsbF07cmV0dXJuIHZfZShOZSwxKVswXX1mdW5jdGlvbiBaKEJlKXtyZXR1cm4gaC5nZXQoQmUpfWZ1bmN0aW9uIHVlKCl7cmV0dXJuIEF6ZShoKX1mdW5jdGlvbiBfZShCZSl7cmV0dXJuIGguaGFzKEJlKX1yZXR1cm4gZz1VMihnKT9nOlN6ZSx7YWRk''@;'; put 'put ''SXRlbTp2LGNsZWFyOkMsZ2V0SWQ6SSxnZXRJdGVtOlosZ2V0SXRlbXM6dWUsaGFzSXRlbTpfZSxyZW1vdmVJdGVtOnl9fWZ1bmN0aW9uIE16ZShkKXtyZXR1cm4gZnVuY3Rpb24gSXplKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIFYzZShkKX0oZCl8fGZ1bmN0aW9uIFR6ZShkKXtp''@;'; put 'put ''ZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiB4emUoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIFYzZShkLGcp''@;'; put 'put ''O3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9''@;'; put 'put ''PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gVjNlKGQsZyl9fShkKXx8ZnVuY3Rpb24gRXplKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5J''@;'; put 'put ''biBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gVjNlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXko''@;'; put 'put ''Zyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9dmFyIER6ZT1mdW5jdGlvbihnKXtyZXR1cm4iJyIuY29uY2F0KGcsIicgdmFsdWUgaXMgYWxyZWFkeSBkZWNsYXJlZCBpbiBhIHVuaXF1ZSBzZXQuIil9O2Z1bmN0aW9uIHlfZShkKXtyZXR1cm4gZnVuY3Rpb24gTnplKGQpe2lmKEFycmF5''@;'; put 'put ''LmlzQXJyYXkoZCkpcmV0dXJuIGozZShkKX0oZCl8fGZ1bmN0aW9uIEh6ZShkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHx3X2UoZCl8fGZ1bmN0''@;'; put 'put ''aW9uIEZ6ZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIp''@;'; put 'put ''fSgpfWZ1bmN0aW9uIHdfZShkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gajNlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rv''@;'; put 'put ''ci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBqM2UoZCxnKX19ZnVuY3Rpb24gajNlKGQsZyl7KG51bGw9PWd8''@;'; put 'put ''fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9dmFyIFozZT1mdW5jdGlvbihnKXtyZXR1cm4nVGhlcmUgaXMgYWxyZWFkeSByZWdpc3RlcmVkICInLmNvbmNhdChnLCciIHBsdWdpbi4nKX0sYl9l''@;'; put 'put ''PWZ1bmN0aW9uIHZ6ZSgpe3ZhciBkPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxnPWQuZXJyb3JQcmlvcml0eUV4aXN0cyxoPWQuZXJyb3JQcmlvcml0eU5hTix2PW5ldyBNYXA7ZnVuY3Rpb24geShJLFope2lmKCF2NChJKSl0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoaChJKSk7aWYodi5oYXMoSSkpdGhyb3cgbmV3IEVycm9yKGcoSSkpO3Yuc2V0KEksWil9ZnVuY3Rpb24gQygpe3ZhciBJPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpIM2UsWj1tX2UuZ2V0KEkpfHxtX2UuZ2V0KEgz''@;'; put 'put ''ZSksdWU9Y3plKFosMiksX2U9dWVbMF0sQmU9dWVbMV07cmV0dXJuIGF6ZSh2KS5zb3J0KGZ1bmN0aW9uKE5lLEtlKXtyZXR1cm4gTmVbMF08S2VbMF0/X2U6QmV9KS5tYXAoZnVuY3Rpb24oTmUpe3JldHVybiBOZVsxXX0pfXJldHVybiBnPVUyKGcpP2c6Z3plLGg9VTIoaCk/aDptemUse2Fk''@;'; put 'put ''ZEl0ZW06eSxnZXRJdGVtczpDfX0oe2Vycm9yUHJpb3JpdHlFeGlzdHM6ZnVuY3Rpb24oZyl7cmV0dXJuJ1RoZXJlIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBwbHVnaW4gb24gcHJpb3JpdHkgIicuY29uY2F0KGcsJyIuJyl9LGVycm9yUHJpb3JpdHlOYU46ZnVuY3Rpb24oZyl7cmV0dXJuJ1Ro''@;'; put 'put ''ZSBwcmlvcml0eSAiJy5jb25jYXQoZywnIiBpcyBub3QgYSBudW1iZXIuJyl9fSksQ19lPWZ1bmN0aW9uIEx6ZSgpe3ZhciBkPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxnPWQuZXJyb3JJdGVtRXhpc3RzLGg9bmV3IFNldDtmdW5j''@;'; put 'put ''dGlvbiB2KEkpe2lmKGguaGFzKEkpKXRocm93IG5ldyBFcnJvcihnKEkpKTtoLmFkZChJKX1mdW5jdGlvbiB5KCl7cmV0dXJuIE16ZShoKX1mdW5jdGlvbiBDKCl7aC5jbGVhcigpfXJldHVybiBnPVUyKGcpP2c6RHplLHthZGRJdGVtOnYsY2xlYXI6QyxnZXRJdGVtczp5fX0oe2Vycm9ySXRl''@;'; put 'put ''bUV4aXN0czpaM2V9KSx6M2U9dWVlKHtlcnJvcklkRXhpc3RzOlozZX0pO2Z1bmN0aW9uIEczZSgpe3JldHVybltdLmNvbmNhdCh5X2UoYl9lLmdldEl0ZW1zKCkpLHlfZShDX2UuZ2V0SXRlbXMoKSkpfWZ1bmN0aW9uIFdaKGQpe3ZhciBnPWxkKGQpO3JldHVybiB6M2UuZ2V0SXRlbShnKX1m''@;'; put 'put ''dW5jdGlvbiBPcyhkLGcsaCl7dmFyIHY9ZnVuY3Rpb24gR3plKGQsZyxoKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZCYmKGQ9KGc9ZCkuUExVR0lOX0tFWSxoPWcuUExVR0lOX1BSSU9SSVRZKSxbZCxnLGhdfShkLGcsaCkseT1mdW5jdGlvbiBPemUoZCxnKXtyZXR1cm4gZnVuY3Rpb24g''@;'; put 'put ''UHplKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBCemUoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLFosdj1b''@;'; put 'put ''XSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaCh1ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5h''@;'; put 'put ''bGx5e2lmKEMpdGhyb3cgWn19cmV0dXJuIHZ9fShkLGcpfHx3X2UoZCxnKXx8ZnVuY3Rpb24gUnplKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24t''@;'; put 'put ''YXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0odiwzKTtnPXlbMV0saD15WzJdLHZvaWQgMD09PVdaKGQ9eVswXSkmJmZ1bmN0aW9uIHp6ZShkLGcsaCl7dmFyIHY9bGQoZCk7aWYoejNlLmhhc0l0ZW0odikpdGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KFozZSh2KSk7dm9pZCAwPT09aD9DX2UuYWRkSXRlbSh2KTpiX2UuYWRkSXRlbShoLHYpLHozZS5hZGRJdGVtKHYsZyl9KGQsZyxoKX12YXIgWVo9THAoInJlbmRlcmVycyIpLFd6ZT1ZWi5yZWdpc3RlcixZemU9WVouZ2V0SXRlbSxrX2U9WVouaGFzSXRlbSxVemU9WVouZ2V0TmFtZXM7ZnVu''@;'; put 'put ''Y3Rpb24gVzNlKGQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBkKXJldHVybiBkO2lmKCFrX2UoZCkpdGhyb3cgRXJyb3IoJ05vIHJlZ2lzdGVyZWQgcmVuZGVyZXIgZm91bmQgdW5kZXIgIicuY29uY2F0KGQsJyIgbmFtZScpKTtyZXR1cm4gWXplKGQpfWZ1bmN0aW9uIE1nKGQsZyl7InN0cmlu''@;'; put 'put ''ZyIhPXR5cGVvZiBkJiYoZD0oZz1kKS5SRU5ERVJFUl9UWVBFKSxXemUoZCxnKX12YXIgVVo9THAoInZhbGlkYXRvcnMiKSxRemU9VVoucmVnaXN0ZXIsSnplPVVaLmdldEl0ZW0sU19lPVVaLmhhc0l0ZW0sWHplPVVaLmdldE5hbWVzO2Z1bmN0aW9uIFkzZShkKXtpZigiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgZClyZXR1cm4gZDtpZighU19lKGQpKXRocm93IEVycm9yKCdObyByZWdpc3RlcmVkIHZhbGlkYXRvciBmb3VuZCB1bmRlciAiJy5jb25jYXQoZCwnIiBuYW1lJykpO3JldHVybiBKemUoZCl9ZnVuY3Rpb24gZ08oZCxnKXsic3RyaW5nIiE9dHlwZW9mIGQmJihkPShnPWQpLlZBTElE''@;'; put 'put ''QVRPUl9UWVBFKSxRemUoZCxnKX1mdW5jdGlvbiBLemUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBNX2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFy''@;'; put 'put ''IHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1MKDE2MTYxKSxMKDkxNjgzKTt2YXIgbU89bmV3IFdlYWtNYXAscXplPWZ1bmN0''@;'; put 'put ''aW9uKCl7ZnVuY3Rpb24gZChnLGgsdix5LEMsSSl7dmFyIFo9YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOm51bGw7S3plKHRoaXMsZCksdGhpcy53dFNldHRpbmdzPXYsdGhpcy5kb21CaW5kaW5ncz1oLHRoaXMud3RUYWJsZT1DLHRoaXMu''@;'; put 'put ''c2VsZWN0aW9ucz1JLHRoaXMucGFyZW50PVosdGhpcy5ldmVudE1hbmFnZXI9eSx0aGlzLmZhY2FkZUdldHRlcj1nLG1PLnNldCh0aGlzLHtzZWxlY3RlZENlbGxCZWZvcmVUb3VjaEVuZDp2b2lkIDAsZGJsQ2xpY2tUaW1lb3V0OltudWxsLG51bGxdLGRibENsaWNrT3JpZ2luOltudWxsLG51''@;'; put 'put ''bGxdfSksdGhpcy5yZWdpc3RlckV2ZW50cygpfXJldHVybiBmdW5jdGlvbiAkemUoZCxnLGgpe2cmJk1fZShkLnByb3RvdHlwZSxnKSxoJiZNX2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToicmVnaXN0ZXJFdmVudHMi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpczt0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHRoaXMud3RUYWJsZS5ob2xkZXIsImNvbnRleHRtZW51IixmdW5jdGlvbihDKXtyZXR1cm4gaC5vbkNvbnRleHRNZW51KEMpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRM''@;'; put 'put ''aXN0ZW5lcih0aGlzLnd0VGFibGUuVEFCTEUsIm1vdXNlb3ZlciIsZnVuY3Rpb24oQyl7cmV0dXJuIGgub25Nb3VzZU92ZXIoQyl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHRoaXMud3RUYWJsZS5UQUJMRSwibW91c2VvdXQiLGZ1bmN0aW9uKEMpe3JldHVybiBoLm9u''@;'; put 'put ''TW91c2VPdXQoQyl9KTt2YXIgdj1mdW5jdGlvbigpe2guZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoaC53dFRhYmxlLmhvbGRlciwidG91Y2hzdGFydCIsZnVuY3Rpb24oSSl7cmV0dXJuIGgub25Ub3VjaFN0YXJ0KEkpfSksaC5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lciho''@;'; put 'put ''Lnd0VGFibGUuaG9sZGVyLCJ0b3VjaGVuZCIsZnVuY3Rpb24oSSl7cmV0dXJuIGgub25Ub3VjaEVuZChJKX0pLGgubW9tZW50dW1TY3JvbGxpbmd8fChoLm1vbWVudHVtU2Nyb2xsaW5nPXt9KSxoLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGgud3RUYWJsZS5ob2xkZXIsInNjcm9s''@;'; put 'put ''bCIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoaC5tb21lbnR1bVNjcm9sbGluZy5fdGltZW91dCksaC5tb21lbnR1bVNjcm9sbGluZy5vbmdvaW5nfHxoLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygib25CZWZvcmVUb3VjaFNjcm9sbCIpLGgubW9tZW50dW1TY3JvbGxpbmcub25nb2luZz0hMCxo''@;'; put 'put ''Lm1vbWVudHVtU2Nyb2xsaW5nLl90aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtoLnRvdWNoQXBwbGllZHx8KGgubW9tZW50dW1TY3JvbGxpbmcub25nb2luZz0hMSxoLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygib25BZnRlck1vbWVudHVtU2Nyb2xsIikpfSwyMDApfSl9O2I4KCk/digp''@;'; put 'put ''OihXaGUoKSYmdigpLGguZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoaC53dFRhYmxlLmhvbGRlciwibW91c2V1cCIsZnVuY3Rpb24oSSl7cmV0dXJuIGgub25Nb3VzZVVwKEkpfSksaC5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihoLnd0VGFibGUuaG9sZGVyLCJtb3VzZWRv''@;'; put 'put ''d24iLGZ1bmN0aW9uKEkpe3JldHVybiBoLm9uTW91c2VEb3duKEkpfSkpfX0se2tleToic2VsZWN0ZWRDZWxsV2FzVG91Y2hlZCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9bU8uZ2V0KHRoaXMpLEM9dGhpcy5wYXJlbnRDZWxsKGgpLmNvb3JkcztpZih2LnNlbGVjdGVkQ2VsbEJlZm9yZVRv''@;'; put 'put ''dWNoRW5kJiZDKXt2YXIgST1bQy5yb3csdi5zZWxlY3RlZENlbGxCZWZvcmVUb3VjaEVuZC5mcm9tLnJvd10sX2U9W0MuY29sLHYuc2VsZWN0ZWRDZWxsQmVmb3JlVG91Y2hFbmQuZnJvbS5jb2xdO3JldHVybiBJWzBdPT09SVsxXSYmX2VbMF09PT1fZVsxXX1yZXR1cm4hMX19LHtrZXk6InBh''@;'; put 'put ''cmVudENlbGwiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXt9LEM9UFooaCxbIlREIiwiVEgiXSx0aGlzLnd0VGFibGUuVEFCTEUpO3JldHVybiBDPyh2LmNvb3Jkcz10aGlzLnd0VGFibGUuZ2V0Q29vcmRzKEMpLHYuVEQ9Qyk6dGwoaCwid3RCb3JkZXIiKSYmdGwoaCwiY3VycmVudCIpPyh2''@;'; put 'put ''LmNvb3Jkcz10aGlzLnNlbGVjdGlvbnMuZ2V0Q2VsbCgpLmNlbGxSYW5nZS5oaWdobGlnaHQsdi5URD10aGlzLnd0VGFibGUuZ2V0Q2VsbCh2LmNvb3JkcykpOnRsKGgsInd0Qm9yZGVyIikmJnRsKGgsImFyZWEiKSYmdGhpcy5zZWxlY3Rpb25zLmNyZWF0ZU9yR2V0QXJlYSgpLmNlbGxSYW5n''@;'; put 'put ''ZSYmKHYuY29vcmRzPXRoaXMuc2VsZWN0aW9ucy5jcmVhdGVPckdldEFyZWEoKS5jZWxsUmFuZ2UudG8sdi5URD10aGlzLnd0VGFibGUuZ2V0Q2VsbCh2LmNvb3JkcykpLHZ9fSx7a2V5OiJvbk1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9bU8uZ2V0KHRoaXMpLHk9dGhpcy5k''@;'; put 'put ''b21CaW5kaW5ncy5yb290RG9jdW1lbnQuYWN0aXZlRWxlbWVudCxDPWIzZShWYmUsaC50YXJnZXQpLEk9aC50YXJnZXQ7aWYoSSE9PXkmJkMoMCkhPT15JiZDKDEpIT09eSl7dmFyIFo9dGhpcy5wYXJlbnRDZWxsKEkpO3RsKEksImNvcm5lciIpP3RoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5n''@;'; put 'put ''KCJvbkNlbGxDb3JuZXJNb3VzZURvd24iLGgsSSk6Wi5URCYmdGhpcy53dFNldHRpbmdzLmhhcygib25DZWxsTW91c2VEb3duIikmJnRoaXMuY2FsbExpc3RlbmVyKCJvbkNlbGxNb3VzZURvd24iLGgsWi5jb29yZHMsWi5URCksKDA9PT1oLmJ1dHRvbnx8dGhpcy50b3VjaEFwcGxpZWQpJiZa''@;'; put 'put ''LlREJiYodi5kYmxDbGlja09yaWdpblswXT1aLlRELGNsZWFyVGltZW91dCh2LmRibENsaWNrVGltZW91dFswXSksdi5kYmxDbGlja1RpbWVvdXRbMF09c2V0VGltZW91dChmdW5jdGlvbigpe3YuZGJsQ2xpY2tPcmlnaW5bMF09bnVsbH0sMWUzKSl9fX0se2tleToib25Db250ZXh0TWVudSIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oaCl7aWYodGhpcy53dFNldHRpbmdzLmhhcygib25DZWxsQ29udGV4dE1lbnUiKSl7dmFyIHY9dGhpcy5wYXJlbnRDZWxsKGgudGFyZ2V0KTt2LlREJiZ0aGlzLmNhbGxMaXN0ZW5lcigib25DZWxsQ29udGV4dE1lbnUiLGgsdi5jb29yZHMsdi5URCl9fX0se2tleToi''@;'; put 'put ''b25Nb3VzZU92ZXIiLHZhbHVlOmZ1bmN0aW9uKGgpe2lmKHRoaXMud3RTZXR0aW5ncy5oYXMoIm9uQ2VsbE1vdXNlT3ZlciIpKXt2YXIgdj10aGlzLnd0VGFibGUuVEFCTEUseT1QWihoLnRhcmdldCxbIlREIiwiVEgiXSx2KSxDPXRoaXMucGFyZW50fHx0aGlzO3kmJnkhPT1DLmxhc3RNb3Vz''@;'; put 'put ''ZU92ZXImJl93KHksdikmJihDLmxhc3RNb3VzZU92ZXI9eSx0aGlzLmNhbGxMaXN0ZW5lcigib25DZWxsTW91c2VPdmVyIixoLHRoaXMud3RUYWJsZS5nZXRDb29yZHMoeSkseSkpfX19LHtrZXk6Im9uTW91c2VPdXQiLHZhbHVlOmZ1bmN0aW9uKGgpe2lmKHRoaXMud3RTZXR0aW5ncy5oYXMo''@;'; put 'put ''Im9uQ2VsbE1vdXNlT3V0Iikpe3ZhciB2PXRoaXMud3RUYWJsZS5UQUJMRSx5PVBaKGgudGFyZ2V0LFsiVEQiLCJUSCJdLHYpLEM9UFooaC5yZWxhdGVkVGFyZ2V0LFsiVEQiLCJUSCJdLHYpO3kmJnkhPT1DJiZfdyh5LHYpJiZ0aGlzLmNhbGxMaXN0ZW5lcigib25DZWxsTW91c2VPdXQiLGgs''@;'; put 'put ''dGhpcy53dFRhYmxlLmdldENvb3Jkcyh5KSx5KX19fSx7a2V5OiJvbk1vdXNlVXAiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PW1PLmdldCh0aGlzKSx5PXRoaXMucGFyZW50Q2VsbChoLnRhcmdldCk7eS5URCYmdGhpcy53dFNldHRpbmdzLmhhcygib25DZWxsTW91c2VVcCIpJiZ0aGlzLmNh''@;'; put 'put ''bGxMaXN0ZW5lcigib25DZWxsTW91c2VVcCIsaCx5LmNvb3Jkcyx5LlREKSwoMD09PWguYnV0dG9ufHx0aGlzLnRvdWNoQXBwbGllZCkmJih5LlREPT09di5kYmxDbGlja09yaWdpblswXSYmeS5URD09PXYuZGJsQ2xpY2tPcmlnaW5bMV0/KHRsKGgudGFyZ2V0LCJjb3JuZXIiKT90aGlzLmNh''@;'; put 'put ''bGxMaXN0ZW5lcigib25DZWxsQ29ybmVyRGJsQ2xpY2siLGgseS5jb29yZHMseS5URCk6dGhpcy5jYWxsTGlzdGVuZXIoIm9uQ2VsbERibENsaWNrIixoLHkuY29vcmRzLHkuVEQpLHYuZGJsQ2xpY2tPcmlnaW5bMF09bnVsbCx2LmRibENsaWNrT3JpZ2luWzFdPW51bGwpOnkuVEQ9PT12LmRi''@;'; put 'put ''bENsaWNrT3JpZ2luWzBdJiYodi5kYmxDbGlja09yaWdpblsxXT15LlRELGNsZWFyVGltZW91dCh2LmRibENsaWNrVGltZW91dFsxXSksdi5kYmxDbGlja1RpbWVvdXRbMV09c2V0VGltZW91dChmdW5jdGlvbigpe3YuZGJsQ2xpY2tPcmlnaW5bMV09bnVsbH0sNTAwKSkpfX0se2tleToib25U''@;'; put 'put ''b3VjaFN0YXJ0Iix2YWx1ZTpmdW5jdGlvbihoKXttTy5nZXQodGhpcykuc2VsZWN0ZWRDZWxsQmVmb3JlVG91Y2hFbmQ9dGhpcy5zZWxlY3Rpb25zLmdldENlbGwoKS5jZWxsUmFuZ2UsdGhpcy50b3VjaEFwcGxpZWQ9ITAsdGhpcy5vbk1vdXNlRG93bihoKX19LHtrZXk6Im9uVG91Y2hFbmQi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2LHk9aC50YXJnZXQsQz1udWxsPT09KHY9dGhpcy5wYXJlbnRDZWxsKHkpKXx8dm9pZCAwPT09dj92b2lkIDA6di5jb29yZHMsST1UbyhDKSYmQy5yb3c+PTAmJkMuY29sPj0wO2guY2FuY2VsYWJsZSYmSSYmdGhpcy53dFNldHRpbmdzLmdldFNldHRp''@;'; put 'put ''bmcoImlzRGF0YVZpZXdJbnN0YW5jZSIpJiYocWhlKCkmJihiYmUoKXx8X2JlKCkpJiZ0aGlzLnNlbGVjdGVkQ2VsbFdhc1RvdWNoZWQoeSkmJiFbIkEiLCJCVVRUT04iLCJJTlBVVCJdLmluY2x1ZGVzKHkudGFnTmFtZSk/aC5wcmV2ZW50RGVmYXVsdCgpOnRoaXMuc2VsZWN0ZWRDZWxsV2Fz''@;'; put 'put ''VG91Y2hlZCh5KXx8aC5wcmV2ZW50RGVmYXVsdCgpKSx0aGlzLm9uTW91c2VVcChoKSx0aGlzLnRvdWNoQXBwbGllZD0hMX19LHtrZXk6ImNhbGxMaXN0ZW5lciIsdmFsdWU6ZnVuY3Rpb24oaCx2LHksQyl7dmFyIEk9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmdQdXJlKGgpO0kmJkkodix5''@;'; put 'put ''LEMsdGhpcy5mYWNhZGVHZXR0ZXIoKSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPW1PLmdldCh0aGlzKTtjbGVhclRpbWVvdXQoaC5kYmxDbGlja1RpbWVvdXRbMF0pLGNsZWFyVGltZW91dChoLmRibENsaWNrVGltZW91dFsxXSksdGhpcy5ldmVudE1hbmFnZXIu''@;'; put 'put ''ZGVzdHJveSgpfX1dKSxkfSgpO2NvbnN0IEVfZT1xemU7ZnVuY3Rpb24geF9lKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEw''@;'; put 'put ''KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIG5HZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyxoLHYpeyhmdW5jdGlvbiBlR2UoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rp''@;'; put 'put ''b24iKX0pKHRoaXMsZCksdGhpcy5vZmZzZXQ9Zyx0aGlzLnRvdGFsPWgsdGhpcy5jb3VudFRIPXZ9cmV0dXJuIGZ1bmN0aW9uIHRHZShkLGcsaCl7ZyYmeF9lKGQucHJvdG90eXBlLGcpLGgmJnhfZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZToh''@;'; put 'put ''MX0pfShkLFt7a2V5OiJvZmZzZXR0ZWQiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBoK3RoaXMub2Zmc2V0fX0se2tleToidW5PZmZzZXR0ZWQiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBoLXRoaXMub2Zmc2V0fX0se2tleToicmVuZGVyZWRUb1NvdXJjZSIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''aCl7cmV0dXJuIHRoaXMub2Zmc2V0dGVkKGgpfX0se2tleToic291cmNlVG9SZW5kZXJlZCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMudW5PZmZzZXR0ZWQoaCl9fSx7a2V5OiJvZmZzZXR0ZWRUSCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIGgtdGhpcy5jb3VudFRIfX0se2tl''@;'; put 'put ''eToidW5PZmZzZXR0ZWRUSCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIGgrdGhpcy5jb3VudFRIfX0se2tleToidmlzaWJsZVJvd0hlYWRlZENvbHVtblRvU291cmNlQ29sdW1uIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5yZW5kZXJlZFRvU291cmNlKHRoaXMub2Zmc2V0dGVk''@;'; put 'put ''VEgoaCkpfX0se2tleToic291cmNlQ29sdW1uVG9WaXNpYmxlUm93SGVhZGVkQ29sdW1uIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy51bk9mZnNldHRlZFRIKHRoaXMuc291cmNlVG9SZW5kZXJlZChoKSl9fV0pLGR9KCk7Y29uc3QgckdlPW5HZTtmdW5jdGlvbiBUX2UoZCxnKXtm''@;'; put 'put ''b3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgYUdlPWZ1bmN0aW9u''@;'; put 'put ''KCl7ZnVuY3Rpb24gZChnLGgsdil7KGZ1bmN0aW9uIGlHZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLm9mZnNldD1nLHRoaXMudG90YWw9aCx0aGlzLmNvdW50''@;'; put 'put ''VEg9dn1yZXR1cm4gZnVuY3Rpb24gb0dlKGQsZyxoKXtnJiZUX2UoZC5wcm90b3R5cGUsZyksaCYmVF9lKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6Im9mZnNldHRlZCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIGgr''@;'; put 'put ''dGhpcy5vZmZzZXR9fSx7a2V5OiJ1bk9mZnNldHRlZCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIGgtdGhpcy5vZmZzZXR9fSx7a2V5OiJyZW5kZXJlZFRvU291cmNlIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5vZmZzZXR0ZWQoaCl9fSx7a2V5OiJzb3VyY2VUb1JlbmRlcmVk''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy51bk9mZnNldHRlZChoKX19LHtrZXk6Im9mZnNldHRlZFRIIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gaC10aGlzLmNvdW50VEh9fSx7a2V5OiJ1bk9mZnNldHRlZFRIIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gaCt0aGlzLmNv''@;'; put 'put ''dW50VEh9fSx7a2V5OiJ2aXNpYmxlQ29sSGVhZGVkUm93VG9Tb3VyY2VSb3ciLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnJlbmRlcmVkVG9Tb3VyY2UodGhpcy5vZmZzZXR0ZWRUSChoKSl9fSx7a2V5OiJzb3VyY2VSb3dUb1Zpc2libGVDb2xIZWFkZWRSb3ciLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKGgpe3JldHVybiB0aGlzLnVuT2Zmc2V0dGVkVEgodGhpcy5zb3VyY2VUb1JlbmRlcmVkKGgpKX19XSksZH0oKTtjb25zdCBsR2U9YUdlO2Z1bmN0aW9uIElfZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8''@;'; put 'put ''fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBEX2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKCl7KGZ1bmN0aW9uIHVHZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLmN1cnJlbnRTaXplPTAsdGhpcy5uZXh0U2l6ZT0wLHRoaXMuY3VycmVudE9mZnNldD0wLHRoaXMubmV4dE9mZnNldD0wfXJldHVybiBmdW5jdGlvbiBjR2UoZCxnLGgpe2cmJklf''@;'; put 'put ''ZShkLnByb3RvdHlwZSxnKSxoJiZJX2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToic2V0U2l6ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5jdXJyZW50U2l6ZT10aGlzLm5leHRTaXplLHRoaXMubmV4dFNpemU9aH19''@;'; put 'put ''LHtrZXk6InNldE9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5jdXJyZW50T2Zmc2V0PXRoaXMubmV4dE9mZnNldCx0aGlzLm5leHRPZmZzZXQ9aH19XSksZH0oKTtmdW5jdGlvbiBMX2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFi''@;'; put 'put ''bGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgZEdlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZCgpeyhmdW5jdGlvbiBmR2UoZCxnKXtpZighKGQgaW5zdGFu''@;'; put 'put ''Y2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5zaXplPW5ldyBEX2UsdGhpcy53b3JraW5nU3BhY2U9MCx0aGlzLnNoYXJlZFNpemU9bnVsbH1yZXR1cm4gZnVuY3Rpb24gaEdlKGQsZyxoKXtnJiZM''@;'; put 'put ''X2UoZC5wcm90b3R5cGUsZyksaCYmTF9lKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InNldFNpemUiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMuc2l6ZS5zZXRTaXplKGgpfX0se2tleToic2V0T2Zmc2V0Iix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbihoKXt0aGlzLnNpemUuc2V0T2Zmc2V0KGgpfX0se2tleToiZ2V0Vmlld1NpemUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l6ZX19LHtrZXk6ImlzU2hhcmVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYXJlZFNpemUgaW5zdGFuY2VvZiBEX2V9fSx7''@;'; put 'put ''a2V5OiJpc1BsYWNlT24iLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLndvcmtpbmdTcGFjZT09PWh9fSx7a2V5OiJhcHBlbmQiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMud29ya2luZ1NwYWNlPTEsaC53b3JraW5nU3BhY2U9Mix0aGlzLnNoYXJlZFNpemU9aC5nZXRWaWV3U2l6ZSgp''@;'; put 'put ''fX0se2tleToicHJlcGVuZCIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy53b3JraW5nU3BhY2U9MixoLndvcmtpbmdTcGFjZT0xLHRoaXMuc2hhcmVkU2l6ZT1oLmdldFZpZXdTaXplKCl9fV0pLGR9KCk7ZnVuY3Rpb24gT19lKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2''@;'; put 'put ''PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIFJfZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyxoLHYpeyhmdW5jdGlvbiBw''@;'; put 'put ''R2UoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5yb290Tm9kZT1nLHRoaXMubm9kZXNQb29sPWgsdGhpcy5zaXplU2V0PW5ldyBkR2UsdGhpcy5jaGlsZE5vZGVU''@;'; put 'put ''eXBlPXYudG9VcHBlckNhc2UoKSx0aGlzLnZpc3VhbEluZGV4PTAsdGhpcy5jb2xsZWN0ZWROb2Rlcz1bXX1yZXR1cm4gZnVuY3Rpb24gZ0dlKGQsZyxoKXtnJiZPX2UoZC5wcm90b3R5cGUsZyksaCYmT19lKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRh''@;'; put 'put ''YmxlOiExfSl9KGQsW3trZXk6InNldFNpemUiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnNpemVTZXQuc2V0U2l6ZShoKSx0aGlzfX0se2tleToic2V0T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5zaXplU2V0LnNldE9mZnNldChoKSx0aGlzfX0se2tleToi''@;'; put 'put ''aXNTaGFyZWRWaWV3U2V0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNpemVTZXQuaXNTaGFyZWQoKX19LHtrZXk6ImdldE5vZGUiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBoPHRoaXMuY29sbGVjdGVkTm9kZXMubGVuZ3RoP3RoaXMuY29sbGVjdGVkTm9kZXNbaF06bnVsbH19''@;'; put 'put ''LHtrZXk6ImdldEN1cnJlbnROb2RlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuY29sbGVjdGVkTm9kZXMubGVuZ3RoO3JldHVybiBoPjA/dGhpcy5jb2xsZWN0ZWROb2Rlc1toLTFdOm51bGx9fSx7a2V5OiJnZXRSZW5kZXJlZENoaWxkQ291bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IGg9dGhpcy5yb290Tm9kZSx2PXRoaXMuc2l6ZVNldCx5PTA7aWYodGhpcy5pc1NoYXJlZFZpZXdTZXQoKSlmb3IodmFyIEM9aC5maXJzdEVsZW1lbnRDaGlsZDtDOyl7aWYoQy50YWdOYW1lPT09dGhpcy5jaGlsZE5vZGVUeXBlKXkrPTE7ZWxzZSBpZih2LmlzUGxhY2VPbigxKSlicmVhaztD''@;'; put 'put ''PUMubmV4dEVsZW1lbnRTaWJsaW5nfWVsc2UgeT1oLmNoaWxkRWxlbWVudENvdW50O3JldHVybiB5fX0se2tleToic3RhcnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jb2xsZWN0ZWROb2Rlcy5sZW5ndGg9MCx0aGlzLnZpc3VhbEluZGV4PTA7Zm9yKHZhciBoPXRoaXMucm9vdE5vZGUsdj10''@;'; put 'put ''aGlzLnNpemVTZXQseT10aGlzLmlzU2hhcmVkVmlld1NldCgpLEk9di5nZXRWaWV3U2l6ZSgpLm5leHRTaXplLFo9dGhpcy5nZXRSZW5kZXJlZENoaWxkQ291bnQoKTtaPEk7KXt2YXIgdWU9dGhpcy5ub2Rlc1Bvb2woKTsheXx8eSYmdi5pc1BsYWNlT24oMik/aC5hcHBlbmRDaGlsZCh1ZSk6''@;'; put 'put ''aC5pbnNlcnRCZWZvcmUodWUsaC5maXJzdENoaWxkKSxaKz0xfWZvcih2YXIgX2U9eSYmdi5pc1BsYWNlT24oMSk7Wj5JOyloLnJlbW92ZUNoaWxkKF9lP2guZmlyc3RDaGlsZDpoLmxhc3RDaGlsZCksWi09MX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLnJv''@;'; put 'put ''b3ROb2RlLHY9dGhpcy5zaXplU2V0LHk9dGhpcy52aXN1YWxJbmRleDt0aGlzLmlzU2hhcmVkVmlld1NldCgpJiZ2LmlzUGxhY2VPbigyKSYmKHkrPXYuc2hhcmVkU2l6ZS5uZXh0U2l6ZSk7dmFyIEM9aC5jaGlsZE5vZGVzW3ldO2lmKEMudGFnTmFtZSE9PXRoaXMuY2hpbGROb2RlVHlwZSl7''@;'; put 'put ''dmFyIEk9dGhpcy5ub2Rlc1Bvb2woKTtoLnJlcGxhY2VDaGlsZChJLEMpLEM9SX10aGlzLmNvbGxlY3RlZE5vZGVzLnB1c2goQyksdGhpcy52aXN1YWxJbmRleCs9MX19LHtrZXk6ImVuZCIsdmFsdWU6ZnVuY3Rpb24oKXt9fV0pLGR9KCk7ZnVuY3Rpb24gVTNlKGQpe3JldHVybihVM2U9ImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5''@;'; put 'put ''bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBtR2UoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBCX2UoZCxnKXtmb3IodmFyIGg9MDto''@;'; put 'put ''PGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBRM2UoZCxnKXtyZXR1cm4oUTNl''@;'; put 'put ''PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gd0dlKGQsZyl7aWYoZyYmKCJvYmplY3QiPT09VTNlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0''@;'; put 'put ''dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBiR2UoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRo''@;'; put 'put ''aXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBoZWUoZCl7cmV0dXJuKGhlZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1''@;'; put 'put ''cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBQX2U9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIEFHZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0''@;'; put 'put ''aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFi''@;'; put 'put ''bGU6ITF9KSxnJiZRM2UoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiB5R2UoZCl7dmFyIGc9ZnVuY3Rpb24gX0dlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9aGVl''@;'; put 'put ''KGQpO2lmKGcpe3ZhciBDPWhlZSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gd0dlKHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7cmV0dXJuIG1HZSh0aGlzLGgpLGcuYXBw''@;'; put 'put ''bHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmdW5jdGlvbiB2R2UoZCxnLGgpe2cmJkJfZShkLnByb3RvdHlwZSxnKSxoJiZCX2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToicHJlcGVuZFZpZXciLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKHkpe3JldHVybiB0aGlzLnNpemVTZXQucHJlcGVuZCh5LnNpemVTZXQpLHkuc2l6ZVNldC5hcHBlbmQodGhpcy5zaXplU2V0KSx0aGlzfX0se2tleToiYXBwZW5kVmlldyIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIHRoaXMuc2l6ZVNldC5hcHBlbmQoeS5zaXplU2V0KSx5LnNpemVT''@;'; put 'put ''ZXQucHJlcGVuZCh0aGlzLnNpemVTZXQpLHRoaXN9fV0pLGh9KFJfZSk7ZnVuY3Rpb24gRl9lKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2Lndy''@;'; put 'put ''aXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIFNHZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7KGZ1bmN0aW9uIENHZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBm''@;'; put 'put ''dW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLm5vZGVUeXBlPWcudG9VcHBlckNhc2UoKX1yZXR1cm4gZnVuY3Rpb24ga0dlKGQsZyxoKXtnJiZGX2UoZC5wcm90b3R5cGUsZyksaCYmRl9lKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQs''@;'; put 'put ''W3trZXk6InNldFJvb3REb2N1bWVudCIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5yb290RG9jdW1lbnQ9aH19LHtrZXk6Im9idGFpbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLm5vZGVUeXBlKX19XSksZH0oKTtmdW5jdGlv''@;'; put 'put ''biBIX2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIg''@;'; put 'put ''UVo9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCl7KGZ1bmN0aW9uIE1HZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLm5vZGVzUG9vbD0ic3RyaW5nIj09dHlw''@;'; put 'put ''ZW9mIGc/bmV3IFNHZShnKTpudWxsLHRoaXMubm9kZVR5cGU9Zyx0aGlzLnJvb3ROb2RlPWgsdGhpcy50YWJsZT1udWxsLHRoaXMucmVuZGVyZWROb2Rlcz0wfXJldHVybiBmdW5jdGlvbiBFR2UoZCxnLGgpe2cmJkhfZShkLnByb3RvdHlwZSxnKSxoJiZIX2UoZCxoKSxPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToic2V0VGFibGUiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMubm9kZXNQb29sJiZ0aGlzLm5vZGVzUG9vbC5zZXRSb290RG9jdW1lbnQoaC5yb290RG9jdW1lbnQpLHRoaXMudGFibGU9aH19LHtrZXk6ImFkanVz''@;'; put 'put ''dCIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7fX1dKSxkfSgpO2Z1bmN0aW9uIEozZShkKXtyZXR1cm4oSjNlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3Jl''@;'; put 'put ''dHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gTl9lKGQsZyl7Zm9yKHZhciBoPTA7aDxn''@;'; put 'put ''Lmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gWDNlKGQsZyl7cmV0dXJuKFgzZT1P''@;'; put 'put ''YmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIExHZShkLGcpe2lmKGcmJigib2JqZWN0Ij09PUozZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVy''@;'; put 'put ''biBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gT0dlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlz''@;'; put 'put ''IGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gZGVlKGQpe3JldHVybihkZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJu''@;'; put 'put ''IGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgQkdlPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBJR2UoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhl''@;'; put 'put ''ciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxl''@;'; put 'put ''OiExfSksZyYmWDNlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gREdlKGQpe3ZhciBnPWZ1bmN0aW9uIFJHZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PWRlZShk''@;'; put 'put ''KTtpZihnKXt2YXIgQz1kZWUodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIExHZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCgpe3ZhciB2O3JldHVybiBmdW5jdGlvbiB4R2Uo''@;'; put 'put ''ZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwodj1nLmNhbGwodGhpcywiVEgiKSkub3JkZXJWaWV3cz1uZXcgV2Vha01hcCx2LnNvdXJjZVJvd0luZGV4PTAsdn1yZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24gVEdlKGQsZyxoKXtnJiZOX2UoZC5wcm90b3R5cGUsZyksaCYmTl9lKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6Im9idGFpbk9yZGVyVmlldyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEksQz10aGlzO3Jl''@;'; put 'put ''dHVybiB0aGlzLm9yZGVyVmlld3MuaGFzKHkpP0k9dGhpcy5vcmRlclZpZXdzLmdldCh5KTooST1uZXcgUF9lKHksZnVuY3Rpb24oWil7cmV0dXJuIEMubm9kZXNQb29sLm9idGFpbihDLnNvdXJjZVJvd0luZGV4LFopfSx0aGlzLm5vZGVUeXBlKSx0aGlzLm9yZGVyVmlld3Muc2V0KHksSSkp''@;'; put 'put ''LEl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB5PXRoaXMudGFibGUsQz15LnJvd3NUb1JlbmRlcixJPXkucm93SGVhZGVyRnVuY3Rpb25zLFo9eS5yb3dIZWFkZXJzQ291bnQsdWU9eS5yb3dzLF9lPXkuY2VsbHMsQmU9MDtCZTxDO0JlKyspe3ZhciBOZT10aGlz''@;'; put 'put ''LnRhYmxlLnJlbmRlcmVkUm93VG9Tb3VyY2UoQmUpLEtlPXVlLmdldFJlbmRlcmVkTm9kZShCZSk7dGhpcy5zb3VyY2VSb3dJbmRleD1OZTt2YXIgcHQ9dGhpcy5vYnRhaW5PcmRlclZpZXcoS2UpLE90PV9lLm9idGFpbk9yZGVyVmlldyhLZSk7cHQuYXBwZW5kVmlldyhPdCkuc2V0U2l6ZSha''@;'; put 'put ''KS5zZXRPZmZzZXQodGhpcy50YWJsZS5yZW5kZXJlZENvbHVtblRvU291cmNlKDApKS5zdGFydCgpO2Zvcih2YXIgJHQ9MDskdDxaOyR0Kyspe3B0LnJlbmRlcigpO3ZhciBmbj1wdC5nZXRDdXJyZW50Tm9kZSgpO2ZuLmNsYXNzTmFtZT0iIixmbi5yZW1vdmVBdHRyaWJ1dGUoInN0eWxlIiks''@;'; put 'put ''SVskdF0oTmUsZm4sJHQpfXB0LmVuZCgpfX19XSksaH0oUVopO2Z1bmN0aW9uIEszZShkKXtyZXR1cm4oSzNlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7''@;'; put 'put ''cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gVl9lKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5l''@;'; put 'put ''bnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gJDNlKGQsZyl7cmV0dXJuKCQzZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0''@;'; put 'put ''LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIFZHZShkLGcpe2lmKGcmJigib2JqZWN0Ij09PUszZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gakdlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0g''@;'; put 'put ''c3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gcGVlKGQpe3JldHVybihwZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJv''@;'; put 'put ''dG90eXBlT2YoaCl9KShkKX12YXIgekdlPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBIR2UoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtk''@;'; put 'put ''LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmJDNlKGQsZyl9KGgsZCk7dmFy''@;'; put 'put ''IGc9ZnVuY3Rpb24gTkdlKGQpe3ZhciBnPWZ1bmN0aW9uIFpHZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7''@;'; put 'put ''cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PXBlZShkKTtpZihnKXt2YXIgQz1wZWUodGhpcykuY29u''@;'; put 'put ''c3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIFZHZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXtyZXR1cm4gZnVuY3Rpb24gUEdlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksZy5jYWxsKHRoaXMsbnVsbCx2KX1yZXR1cm4gZnVuY3Rpb24gRkdlKGQsZyxoKXtnJiZWX2UoZC5wcm90b3R5cGUsZyksaCYmVl9lKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQs''@;'; put 'put ''InByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImFkanVzdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLnRhYmxlLEM9eS5jb2x1bW5IZWFkZXJzQ291bnQsWj10aGlzLnJvb3ROb2RlLmZpcnN0Q2hpbGQ7aWYoQyl7Zm9yKHZhciBfZT10aGlzLnRhYmxlLmNvbHVtbnNU''@;'; put 'put ''b1JlbmRlcit5LnJvd0hlYWRlcnNDb3VudCxCZT0wLE5lPUM7QmU8TmU7QmUrKyl7Zm9yKChaPXRoaXMucm9vdE5vZGUuY2hpbGROb2Rlc1tCZV0pfHwoWj10aGlzLnRhYmxlLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpLHRoaXMucm9vdE5vZGUuYXBwZW5kQ2hpbGQoWikpLHRo''@;'; put 'put ''aXMucmVuZGVyZWROb2Rlcz1aLmNoaWxkTm9kZXMubGVuZ3RoO3RoaXMucmVuZGVyZWROb2RlczxfZTspWi5hcHBlbmRDaGlsZCh0aGlzLnRhYmxlLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpKSx0aGlzLnJlbmRlcmVkTm9kZXMrPTE7Zm9yKDt0aGlzLnJlbmRlcmVkTm9kZXM+''@;'; put 'put ''X2U7KVoucmVtb3ZlQ2hpbGQoWi5sYXN0Q2hpbGQpLHRoaXMucmVuZGVyZWROb2Rlcy09MX12YXIgS2U9dGhpcy5yb290Tm9kZS5jaGlsZE5vZGVzLmxlbmd0aDtpZihLZT5DKWZvcih2YXIgcHQ9QztwdDxLZTtwdCsrKXRoaXMucm9vdE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5yb290Tm9kZS5s''@;'; put 'put ''YXN0Q2hpbGQpfWVsc2UgWiYmRHAoWil9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB5PXRoaXMudGFibGUuY29sdW1uSGVhZGVyc0NvdW50LEM9MDtDPHk7Qys9MSlmb3IodmFyIEk9dGhpcy50YWJsZSxaPUkuY29sdW1uSGVhZGVyRnVuY3Rpb25zLHVlPUkuY29s''@;'; put 'put ''dW1uc1RvUmVuZGVyLF9lPUkucm93SGVhZGVyc0NvdW50LEJlPXRoaXMucm9vdE5vZGUuY2hpbGROb2Rlc1tDXSxOZT0tMSpfZTtOZTx1ZTtOZSs9MSl7dmFyIEtlPXRoaXMudGFibGUucmVuZGVyZWRDb2x1bW5Ub1NvdXJjZShOZSkscHQ9QmUuY2hpbGROb2Rlc1tOZStfZV07cHQuY2xhc3NO''@;'; put 'put ''YW1lPSIiLHB0LnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKSxaW0NdKEtlLHB0LEMpfX19XSksaH0oUVopO2Z1bmN0aW9uIHEzZShkKXtyZXR1cm4ocTNlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVy''@;'; put 'put ''biB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gal9lKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxl''@;'; put 'put ''bmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gZWRlKGQsZyl7cmV0dXJuKGVkZT1PYmpl''@;'; put 'put ''Y3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIFFHZShkLGcpe2lmKGcmJigib2JqZWN0Ij09PXEzZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBn''@;'; put 'put ''O2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gSkdlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhh''@;'; put 'put ''c24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gZ2VlKGQpe3JldHVybihnZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGgu''@;'; put 'put ''X19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgWl9lLEtHZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gWUdlKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRo''@;'; put 'put ''ZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJs''@;'; put 'put ''ZTohMX0pLGcmJmVkZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIFVHZShkKXt2YXIgZz1mdW5jdGlvbiBYR2UoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1nZWUo''@;'; put 'put ''ZCk7aWYoZyl7dmFyIEM9Z2VlKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBRR2UodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7cmV0dXJuIGZ1bmN0aW9uIEdHZShkLGcp''@;'; put 'put ''e2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLGcuY2FsbCh0aGlzLG51bGwsdil9cmV0dXJuIGZ1bmN0aW9uIFdHZShkLGcsaCl7ZyYmal9lKGQucHJvdG90eXBlLGcpLGgmJmpfZShk''@;'; put 'put ''LGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJhZGp1c3QiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB5PXRoaXMudGFibGUsWj15LmNvbHVtbnNUb1JlbmRlcit5LnJvd0hlYWRlcnNDb3VudDt0aGlzLnJlbmRlcmVkTm9k''@;'; put 'put ''ZXM8WjspdGhpcy5yb290Tm9kZS5hcHBlbmRDaGlsZCh0aGlzLnRhYmxlLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjb2wiKSksdGhpcy5yZW5kZXJlZE5vZGVzKz0xO2Zvcig7dGhpcy5yZW5kZXJlZE5vZGVzPlo7KXRoaXMucm9vdE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5yb290Tm9k''@;'; put 'put ''ZS5sYXN0Q2hpbGQpLHRoaXMucmVuZGVyZWROb2Rlcy09MX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmFkanVzdCgpO2Zvcih2YXIgeT10aGlzLnRhYmxlLEM9eS5jb2x1bW5zVG9SZW5kZXIsST15LnJvd0hlYWRlcnNDb3VudCxaPTA7WjxJO1orKyl7dmFyIHVlPXRo''@;'; put 'put ''aXMudGFibGUucmVuZGVyZWRDb2x1bW5Ub1NvdXJjZShaKSxfZT10aGlzLnRhYmxlLmNvbHVtblV0aWxzLmdldEhlYWRlcldpZHRoKHVlKTt0aGlzLnJvb3ROb2RlLmNoaWxkTm9kZXNbWl0uc3R5bGUud2lkdGg9IiIuY29uY2F0KF9lLCJweCIpfWZvcih2YXIgQmU9MDtCZTxDO0JlKyspe3Zh''@;'; put 'put ''ciBOZT10aGlzLnRhYmxlLnJlbmRlcmVkQ29sdW1uVG9Tb3VyY2UoQmUpLEtlPXRoaXMudGFibGUuY29sdW1uVXRpbHMuZ2V0U3RyZXRjaGVkQ29sdW1uV2lkdGgoTmUpO3RoaXMucm9vdE5vZGUuY2hpbGROb2Rlc1tCZStJXS5zdHlsZS53aWR0aD0iIi5jb25jYXQoS2UsInB4Iil9dmFyIHB0''@;'; put 'put ''PXRoaXMucm9vdE5vZGUuZmlyc3RDaGlsZDtwdCYmTzAocHQsInJvd0hlYWRlciIpfX1dKSxofShRWik7ZnVuY3Rpb24gdGRlKGQpe3JldHVybih0ZGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJu''@;'; put 'put ''IHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiB6X2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVu''@;'; put 'put ''Z3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBuZGUoZCxnKXtyZXR1cm4obmRlPU9iamVj''@;'; put 'put ''dC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gcldlKGQsZyl7aWYoZyYmKCJvYmplY3QiPT09dGRlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7''@;'; put 'put ''aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBpV2UoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFz''@;'; put 'put ''bid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBtZWUoZCl7cmV0dXJuKG1lZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5f''@;'; put 'put ''X3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBHX2U9ITEsYVdlPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiB0V2UoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVp''@;'; put 'put ''dGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRh''@;'; put 'put ''YmxlOiExfSksZyYmbmRlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gbldlKGQpe3ZhciBnPWZ1bmN0aW9uIG9XZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PW1l''@;'; put 'put ''ZShkKTtpZihnKXt2YXIgQz1tZWUodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHJXZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24g''@;'; put 'put ''cUdlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKHk9Zy5jYWxsKHRoaXMsIlRSIix2KSkub3JkZXJWaWV3PW5ldyBSX2UodixmdW5jdGlvbihDKXtyZXR1cm4geS5ub2Rl''@;'; put 'put ''c1Bvb2wub2J0YWluKEMpfSx5Lm5vZGVUeXBlKSx5fXJldHVybiBmdW5jdGlvbiBlV2UoZCxnLGgpe2cmJnpfZShkLnByb3RvdHlwZSxnKSxoJiZ6X2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiZ2V0UmVuZGVyZWRO''@;'; put 'put ''b2RlIix2YWx1ZTpmdW5jdGlvbih5KXtyZXR1cm4gdGhpcy5vcmRlclZpZXcuZ2V0Tm9kZSh5KX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLnRhYmxlLnJvd3NUb1JlbmRlcjshR19lJiZ5PjFlMyYmKEdfZT0hMCxsMShQMihaX2V8fChaX2U9ZnVuY3Rpb24g''@;'; put 'put ''JEdlKGQsZyl7cmV0dXJuIGd8fChnPWQuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGcpfX0pKX0oWydQZXJmb3JtYW5jZSB0aXA6IEhhbmRzb250YWJsZSByZW5kZXJlZCBtb3JlIHRoYW4gMTAwMCB2''@;'; put 'put ''aXNpYmxlIHJvd3MuIENvbnNpZGVyIGxpbWl0aW5nIFxuICAgICAgICB0aGUgbnVtYmVyIG9mIHJlbmRlcmVkIHJvd3MgYnkgc3BlY2lmeWluZyB0aGUgdGFibGUgaGVpZ2h0IGFuZC9vciB0dXJuaW5nIG9mZiB0aGUgInJlbmRlckFsbFJvd3MiIG9wdGlvbi4nXSxbJ1BlcmZvcm1hbmNlIHRp''@;'; put 'put ''cDogSGFuZHNvbnRhYmxlIHJlbmRlcmVkIG1vcmUgdGhhbiAxMDAwIHZpc2libGUgcm93cy4gQ29uc2lkZXIgbGltaXRpbmdcXHgyMFxuICAgICAgICB0aGUgbnVtYmVyIG9mIHJlbmRlcmVkIHJvd3MgYnkgc3BlY2lmeWluZyB0aGUgdGFibGUgaGVpZ2h0IGFuZC9vciB0dXJuaW5nIG9mZiB0''@;'; put 'put ''aGUgInJlbmRlckFsbFJvd3MiIG9wdGlvbi4nXSkpKSkpLHRoaXMub3JkZXJWaWV3LnNldFNpemUoeSkuc2V0T2Zmc2V0KHRoaXMudGFibGUucmVuZGVyZWRSb3dUb1NvdXJjZSgwKSkuc3RhcnQoKTtmb3IodmFyIEM9MDtDPHk7QysrKXRoaXMub3JkZXJWaWV3LnJlbmRlcigpO3RoaXMub3Jk''@;'; put 'put ''ZXJWaWV3LmVuZCgpfX1dKSxofShRWik7ZnVuY3Rpb24gcmRlKGQpe3JldHVybihyZGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBXX2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5l''@;'; put 'put ''bnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBpZGUoZCxnKXtyZXR1cm4oaWRlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBl''@;'; put 'put ''T2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gZldlKGQsZyl7aWYoZyYmKCJvYmplY3QiPT09cmRlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJE''@;'; put 'put ''ZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBoV2UoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24n''@;'; put 'put ''dCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiB2ZWUoZCl7cmV0dXJuKHZlZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0p''@;'; put 'put ''KGQpfXZhciBwV2U9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIHVXZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9i''@;'; put 'put ''amVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZpZGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBj''@;'; put 'put ''V2UoZCl7dmFyIGc9ZnVuY3Rpb24gZFdlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVh''@;'; put 'put ''bi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9dmVlKGQpO2lmKGcpe3ZhciBDPXZlZSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJl''@;'; put 'put ''ZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZldlKHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7dmFyIHY7cmV0dXJuIGZ1bmN0aW9uIGxXZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLCh2PWcuY2FsbCh0aGlzLCJURCIpKS5vcmRlclZpZXdzPW5ldyBXZWFrTWFwLHYuc291cmNlUm93SW5kZXg9MCx2fXJldHVybiBmdW5jdGlvbiBzV2UoZCxnLGgpe2cmJldfZShkLnByb3RvdHlwZSxn''@;'; put 'put ''KSxoJiZXX2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToib2J0YWluT3JkZXJWaWV3Iix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgSSxDPXRoaXM7cmV0dXJuIHRoaXMub3JkZXJWaWV3cy5oYXMoeSk/ST10aGlzLm9yZGVy''@;'; put 'put ''Vmlld3MuZ2V0KHkpOihJPW5ldyBQX2UoeSxmdW5jdGlvbihaKXtyZXR1cm4gQy5ub2Rlc1Bvb2wub2J0YWluKEMuc291cmNlUm93SW5kZXgsWil9LHRoaXMubm9kZVR5cGUpLHRoaXMub3JkZXJWaWV3cy5zZXQoeSxJKSksSX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtmb3Io''@;'; put 'put ''dmFyIHk9dGhpcy50YWJsZSxDPXkucm93c1RvUmVuZGVyLEk9eS5jb2x1bW5zVG9SZW5kZXIsWj15LnJvd3MsdWU9eS5yb3dIZWFkZXJzLF9lPTA7X2U8QztfZSsrKXt2YXIgQmU9dGhpcy50YWJsZS5yZW5kZXJlZFJvd1RvU291cmNlKF9lKSxOZT1aLmdldFJlbmRlcmVkTm9kZShfZSk7dGhp''@;'; put 'put ''cy5zb3VyY2VSb3dJbmRleD1CZTt2YXIgS2U9dGhpcy5vYnRhaW5PcmRlclZpZXcoTmUpLHB0PXVlLm9idGFpbk9yZGVyVmlldyhOZSk7S2UucHJlcGVuZFZpZXcocHQpLnNldFNpemUoSSkuc2V0T2Zmc2V0KHRoaXMudGFibGUucmVuZGVyZWRDb2x1bW5Ub1NvdXJjZSgwKSkuc3RhcnQoKTtm''@;'; put 'put ''b3IodmFyIE90PTA7T3Q8STtPdCsrKXtLZS5yZW5kZXIoKTt2YXIgJHQ9S2UuZ2V0Q3VycmVudE5vZGUoKSxmbj10aGlzLnRhYmxlLnJlbmRlcmVkQ29sdW1uVG9Tb3VyY2UoT3QpO3RsKCR0LCJoaWRlIil8fCgkdC5jbGFzc05hbWU9IiIpLCR0LnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKSwk''@;'; put 'put ''dC5yZW1vdmVBdHRyaWJ1dGUoImRpciIpLHRoaXMudGFibGUuY2VsbFJlbmRlcmVyKEJlLGZuLCR0KX1LZS5lbmQoKX19fV0pLGh9KFFaKTtmdW5jdGlvbiBnV2UoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEg''@;'; put 'put ''ZnVuY3Rpb24iKX1mdW5jdGlvbiBZX2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShkLHYua2V5LHYpfX12YXIgdldlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sdj1oLmNlbGxSZW5kZXJlcjtnV2UodGhpcyxkKSx0aGlzLnJvb3ROb2RlPWcsdGhpcy5yb290''@;'; put 'put ''RG9jdW1lbnQ9dGhpcy5yb290Tm9kZS5vd25lckRvY3VtZW50LHRoaXMucm93SGVhZGVycz1udWxsLHRoaXMuY29sdW1uSGVhZGVycz1udWxsLHRoaXMuY29sR3JvdXA9bnVsbCx0aGlzLnJvd3M9bnVsbCx0aGlzLmNlbGxzPW51bGwsdGhpcy5yb3dGaWx0ZXI9bnVsbCx0aGlzLmNvbHVtbkZp''@;'; put 'put ''bHRlcj1udWxsLHRoaXMucm93VXRpbHM9bnVsbCx0aGlzLmNvbHVtblV0aWxzPW51bGwsdGhpcy5yb3dzVG9SZW5kZXI9MCx0aGlzLmNvbHVtbnNUb1JlbmRlcj0wLHRoaXMucm93SGVhZGVyRnVuY3Rpb25zPVtdLHRoaXMucm93SGVhZGVyc0NvdW50PTAsdGhpcy5jb2x1bW5IZWFkZXJGdW5j''@;'; put 'put ''dGlvbnM9W10sdGhpcy5jb2x1bW5IZWFkZXJzQ291bnQ9MCx0aGlzLmNlbGxSZW5kZXJlcj12fXJldHVybiBmdW5jdGlvbiBtV2UoZCxnLGgpe2cmJllfZShkLnByb3RvdHlwZSxnKSxoJiZZX2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9''@;'; put 'put ''KX0oZCxbe2tleToic2V0QXhpc1V0aWxzIix2YWx1ZTpmdW5jdGlvbihoLHYpe3RoaXMucm93VXRpbHM9aCx0aGlzLmNvbHVtblV0aWxzPXZ9fSx7a2V5OiJzZXRWaWV3cG9ydFNpemUiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dGhpcy5yb3dzVG9SZW5kZXI9aCx0aGlzLmNvbHVtbnNUb1JlbmRl''@;'; put 'put ''cj12fX0se2tleToic2V0RmlsdGVycyIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt0aGlzLnJvd0ZpbHRlcj1oLHRoaXMuY29sdW1uRmlsdGVyPXZ9fSx7a2V5OiJzZXRIZWFkZXJDb250ZW50UmVuZGVyZXJzIix2YWx1ZTpmdW5jdGlvbihoLHYpe3RoaXMucm93SGVhZGVyRnVuY3Rpb25zPWgsdGhp''@;'; put 'put ''cy5yb3dIZWFkZXJzQ291bnQ9aC5sZW5ndGgsdGhpcy5jb2x1bW5IZWFkZXJGdW5jdGlvbnM9dix0aGlzLmNvbHVtbkhlYWRlcnNDb3VudD12Lmxlbmd0aH19LHtrZXk6InNldFJlbmRlcmVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFy''@;'; put 'put ''Z3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sdj1oLnJvd0hlYWRlcnMseT1oLmNvbHVtbkhlYWRlcnMsQz1oLmNvbEdyb3VwLEk9aC5yb3dzLFo9aC5jZWxsczt2LnNldFRhYmxlKHRoaXMpLHkuc2V0VGFibGUodGhpcyksQy5zZXRUYWJsZSh0aGlzKSxJLnNldFRhYmxlKHRoaXMpLFouc2V0''@;'; put 'put ''VGFibGUodGhpcyksdGhpcy5yb3dIZWFkZXJzPXYsdGhpcy5jb2x1bW5IZWFkZXJzPXksdGhpcy5jb2xHcm91cD1DLHRoaXMucm93cz1JLHRoaXMuY2VsbHM9Wn19LHtrZXk6InJlbmRlcmVkUm93VG9Tb3VyY2UiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnJvd0ZpbHRlci5yZW5k''@;'; put 'put ''ZXJlZFRvU291cmNlKGgpfX0se2tleToicmVuZGVyZWRDb2x1bW5Ub1NvdXJjZSIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuY29sdW1uRmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2UoaCl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jb2xHcm91cC5hZGp1c3Qo''@;'; put 'put ''KSx0aGlzLmNvbHVtbkhlYWRlcnMuYWRqdXN0KCksdGhpcy5yb3dzLmFkanVzdCgpLHRoaXMucm93SGVhZGVycy5hZGp1c3QoKSx0aGlzLmNvbHVtbkhlYWRlcnMucmVuZGVyKCksdGhpcy5yb3dzLnJlbmRlcigpLHRoaXMucm93SGVhZGVycy5yZW5kZXIoKSx0aGlzLmNlbGxzLnJlbmRlcigp''@;'; put 'put ''LHRoaXMuY29sdW1uVXRpbHMuY2FsY3VsYXRlV2lkdGhzKCksdGhpcy5jb2xHcm91cC5yZW5kZXIoKTtmb3IodmFyIGg9dGhpcy5yb3dzVG9SZW5kZXIsdj10aGlzLnJvd3MseT0wO3k8aDt5Kyspe3ZhciBDPXYuZ2V0UmVuZGVyZWROb2RlKHkpO2lmKEMuZmlyc3RDaGlsZCl7dmFyIEk9dGhp''@;'; put 'put ''cy5yZW5kZXJlZFJvd1RvU291cmNlKHkpLFo9dGhpcy5yb3dVdGlscy5nZXRIZWlnaHQoSSk7Qy5maXJzdENoaWxkLnN0eWxlLmhlaWdodD1aPyIiLmNvbmNhdChaLTEsInB4Iik6IiJ9fX19XSksZH0oKTtmdW5jdGlvbiBBV2UoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBVX2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYm''@;'; put 'put ''KHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgd1dlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZCgpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxoPWcuVEFCTEUsdj1nLlRIRUFE''@;'; put 'put ''LHk9Zy5DT0xHUk9VUCxDPWcuVEJPRFksST1nLnJvd1V0aWxzLFo9Zy5jb2x1bW5VdGlscyx1ZT1nLmNlbGxSZW5kZXJlcjtBV2UodGhpcyxkKSx0aGlzLnJlbmRlcmVyPW5ldyB2V2UoaCx7Y2VsbFJlbmRlcmVyOnVlfSksdGhpcy5yZW5kZXJlci5zZXRSZW5kZXJlcnMoe3Jvd0hlYWRlcnM6''@;'; put 'put ''bmV3IEJHZSxjb2x1bW5IZWFkZXJzOm5ldyB6R2UodiksY29sR3JvdXA6bmV3IEtHZSh5KSxyb3dzOm5ldyBhV2UoQyksY2VsbHM6bmV3IHBXZX0pLHRoaXMucmVuZGVyZXIuc2V0QXhpc1V0aWxzKEksWil9cmV0dXJuIGZ1bmN0aW9uIHlXZShkLGcsaCl7ZyYmVV9lKGQucHJvdG90eXBlLGcp''@;'; put 'put ''LGgmJlVfZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJzZXRGaWx0ZXJzIix2YWx1ZTpmdW5jdGlvbihoLHYpe3JldHVybiB0aGlzLnJlbmRlcmVyLnNldEZpbHRlcnMoaCx2KSx0aGlzfX0se2tleToic2V0Vmlld3Bv''@;'; put 'put ''cnRTaXplIix2YWx1ZTpmdW5jdGlvbihoLHYpe3JldHVybiB0aGlzLnJlbmRlcmVyLnNldFZpZXdwb3J0U2l6ZShoLHYpLHRoaXN9fSx7a2V5OiJzZXRIZWFkZXJDb250ZW50UmVuZGVyZXJzIix2YWx1ZTpmdW5jdGlvbihoLHYpe3JldHVybiB0aGlzLnJlbmRlcmVyLnNldEhlYWRlckNvbnRl''@;'; put 'put ''bnRSZW5kZXJlcnMoaCx2KSx0aGlzfX0se2tleToiYWRqdXN0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucmVuZGVyZXIuYWRqdXN0KCl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlci5yZW5kZXIoKX19XSksZH0oKTtmdW5jdGlvbiBRX2UoZCxnKXtmb3Io''@;'; put 'put ''dmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgQ1dlPWZ1bmN0aW9uKCl7''@;'; put 'put ''ZnVuY3Rpb24gZChnLGgpeyhmdW5jdGlvbiBiV2UoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5kYXRhQWNjZXNzT2JqZWN0PWcsdGhpcy53dFNldHRpbmdzPWgs''@;'; put 'put ''dGhpcy5oZWFkZXJXaWR0aHM9bmV3IE1hcH1yZXR1cm4gZnVuY3Rpb24gX1dlKGQsZyxoKXtnJiZRX2UoZC5wcm90b3R5cGUsZyksaCYmUV9lKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImdldFdpZHRoIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbihoKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImNvbHVtbldpZHRoIixoKXx8dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1bHRDb2x1bW5XaWR0aCIpfX0se2tleToiZ2V0U3RyZXRjaGVkQ29sdW1uV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKGgpe3Zh''@;'; put 'put ''ciB2PXRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLHk9dGhpcy5nZXRXaWR0aChoKTtpZih2KXt2YXIgQz12LmdldFN0cmV0Y2hlZENvbHVtbldpZHRoKGgseSk7QyYmKHk9Qyl9cmV0dXJuIHl9fSx7a2V5OiJnZXRIZWFkZXJIZWlnaHQi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJkZWZhdWx0Um93SGVpZ2h0IikseT10aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydC5vdmVyc2l6ZWRDb2x1bW5IZWFkZXJzW2hdO3JldHVybiB2b2lkIDAhPT15JiYodj12P01hdGgubWF4''@;'; put 'put ''KHYseSk6eSksdn19LHtrZXk6ImdldEhlYWRlcldpZHRoIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5oZWFkZXJXaWR0aHMuZ2V0KHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFRhYmxlLmNvbHVtbkZpbHRlci5zb3VyY2VUb1JlbmRlcmVkKGgpKX19LHtrZXk6ImNhbGN1bGF0ZVdp''@;'; put 'put ''ZHRocyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLnd0U2V0dGluZ3Msdj10aGlzLmRhdGFBY2Nlc3NPYmplY3QsQz12Lnd0Vmlld3BvcnQsST12LmNsb25lU291cmNlLFo9ST9JLnd0VGFibGUuaG9sZGVyOnYud3RUYWJsZS5ob2xkZXIsdWU9Wi5vZmZzZXRIZWlnaHQ8Wi5zY3JvbGxI''@;'; put 'put ''ZWlnaHQ/QmMoKTowLF9lPWguZ2V0U2V0dGluZygicm93SGVhZGVyV2lkdGgiKTtpZihDLmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLnJlZnJlc2hTdHJldGNoaW5nKEMuZ2V0Vmlld3BvcnRXaWR0aCgpLXVlKSxudWxsIT0oX2U9aC5nZXRTZXR0aW5nKCJvbk1vZGlmeVJvd0hlYWRlcldpZHRo''@;'; put 'put ''IixfZSkpKWZvcih2YXIgQmU9aC5nZXRTZXR0aW5nKCJyb3dIZWFkZXJzIikubGVuZ3RoLE5lPWguZ2V0U2V0dGluZygiZGVmYXVsdENvbHVtbldpZHRoIiksS2U9MDtLZTxCZTtLZSsrKXt2YXIgcHQ9QXJyYXkuaXNBcnJheShfZSk/X2VbS2VdOl9lO3RoaXMuaGVhZGVyV2lkdGhzLnNldChL''@;'; put 'put ''ZSxwdD1udWxsPT1wdD9OZTpwdCl9fX1dKSxkfSgpO2Z1bmN0aW9uIEpfZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCks''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBNV2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCl7KGZ1bmN0aW9uIGtXZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIp''@;'; put 'put ''fSkodGhpcyxkKSx0aGlzLmRhdGFBY2Nlc3NPYmplY3Q9Zyx0aGlzLnd0U2V0dGluZ3M9aH1yZXR1cm4gZnVuY3Rpb24gU1dlKGQsZyxoKXtnJiZKX2UoZC5wcm90b3R5cGUsZyksaCYmSl9lKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9''@;'; put 'put ''KGQsW3trZXk6ImdldEhlaWdodCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInJvd0hlaWdodCIsaCkseT10aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydC5vdmVyc2l6ZWRSb3dzW2hdO3JldHVybiB2b2lkIDAhPT15JiYodj12b2lk''@;'; put 'put ''IDA9PT12P3k6TWF0aC5tYXgodix5KSksdn19XSksZH0oKSxJUz0idG9wIixFZz0iYm90dG9tIixEUz0iaW5saW5lX3N0YXJ0IixMUz0idG9wX2lubGluZV9zdGFydF9jb3JuZXIiLHh3PSJib3R0b21faW5saW5lX3N0YXJ0X2Nvcm5lciIsRVdlPVtJUyxFZyxEUyxMUyx4d10seFdlPW5ldyBN''@;'; put 'put ''YXAoW1tJUywiaHRfY2xvbmVfIi5jb25jYXQoSVMpXSxbRWcsImh0X2Nsb25lXyIuY29uY2F0KEVnKV0sW0RTLCJodF9jbG9uZV8iLmNvbmNhdChEUywiIGh0X2Nsb25lX2xlZnQiKV0sW0xTLCJodF9jbG9uZV8iLmNvbmNhdChMUywiIGh0X2Nsb25lX3RvcF9sZWZ0X2Nvcm5lciIpXSxbeHcs''@;'; put 'put ''Imh0X2Nsb25lXyIuY29uY2F0KHh3LCIgaHRfY2xvbmVfYm90dG9tX2xlZnRfY29ybmVyIildXSk7ZnVuY3Rpb24gWF9lKGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBvZGUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2Uo''@;'; put 'put ''OCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQv''@;'; put 'put ''LnRlc3QoaCkpcmV0dXJuIG9kZShkLGcpfX1mdW5jdGlvbiBvZGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBLX2UoZCxnKXtmb3IodmFyIGg9MDto''@;'; put 'put ''PGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiB4ZyhkLGcsaCl7cmV0dXJuIGcg''@;'; put 'put ''aW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9dmFyIE5XZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyxoLHYseSxDKXt2YXIgST10aGlzOyhmdW5jdGlvbiBGV2UoZCxnKXtp''@;'; put 'put ''ZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCkseGcodGhpcywid3RTZXR0aW5ncyIsbnVsbCkseGcodGhpcywiZG9tQmluZGluZ3MiLHZvaWQgMCkseGcodGhpcywiVEJPRFkiLG51bGwp''@;'; put 'put ''LHhnKHRoaXMsIlRIRUFEIixudWxsKSx4Zyh0aGlzLCJDT0xHUk9VUCIsbnVsbCkseGcodGhpcywiaGFzVGFibGVIZWlnaHQiLCEwKSx4Zyh0aGlzLCJoYXNUYWJsZVdpZHRoIiwhMCkseGcodGhpcywiaXNUYWJsZVZpc2libGUiLCExKSx4Zyh0aGlzLCJ0YWJsZU9mZnNldCIsMCkseGcodGhp''@;'; put 'put ''cywiaG9sZGVyT2Zmc2V0IiwwKSx0aGlzLmRvbUJpbmRpbmdzPXYsdGhpcy5pc01hc3Rlcj0ibWFzdGVyIj09PUMsdGhpcy5uYW1lPUMsdGhpcy5kYXRhQWNjZXNzT2JqZWN0PWcsdGhpcy5mYWNhZGVHZXR0ZXI9aCx0aGlzLnd0U2V0dGluZ3M9eSx0aGlzLmluc3RhbmNlPXRoaXMuZGF0YUFj''@;'; put 'put ''Y2Vzc09iamVjdC53b3QsdGhpcy53b3Q9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LndvdCx0aGlzLlRBQkxFPXYucm9vdFRhYmxlLHAzZSh0aGlzLlRBQkxFKSx0aGlzLnNwcmVhZGVyPXRoaXMuY3JlYXRlU3ByZWFkZXIodGhpcy5UQUJMRSksdGhpcy5oaWRlcj10aGlzLmNyZWF0ZUhpZGVyKHRo''@;'; put 'put ''aXMuc3ByZWFkZXIpLHRoaXMuaG9sZGVyPXRoaXMuY3JlYXRlSG9sZGVyKHRoaXMuaGlkZXIpLHRoaXMud3RSb290RWxlbWVudD10aGlzLmhvbGRlci5wYXJlbnROb2RlLHRoaXMuaXNNYXN0ZXImJnRoaXMuYWxpZ25PdmVybGF5c1dpdGhUcmltbWluZ0NvbnRhaW5lcigpLHRoaXMuZml4VGFi''@;'; put 'put ''bGVEb21UcmVlKCksdGhpcy5yb3dGaWx0ZXI9bnVsbCx0aGlzLmNvbHVtbkZpbHRlcj1udWxsLHRoaXMuY29ycmVjdEhlYWRlcldpZHRoPSExO3ZhciBaPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nUHVyZSgicm93SGVhZGVyV2lkdGgiKTt0aGlzLnd0U2V0dGluZ3MudXBkYXRlKCJyb3dI''@;'; put 'put ''ZWFkZXJXaWR0aCIsZnVuY3Rpb24oKXtyZXR1cm4gSS5fbW9kaWZ5Um93SGVhZGVyV2lkdGgoWil9KSx0aGlzLnJvd1V0aWxzPW5ldyBNV2UodGhpcy5kYXRhQWNjZXNzT2JqZWN0LHRoaXMud3RTZXR0aW5ncyksdGhpcy5jb2x1bW5VdGlscz1uZXcgQ1dlKHRoaXMuZGF0YUFjY2Vzc09iamVj''@;'; put 'put ''dCx0aGlzLnd0U2V0dGluZ3MpLHRoaXMudGFibGVSZW5kZXJlcj1uZXcgd1dlKHtUQUJMRTp0aGlzLlRBQkxFLFRIRUFEOnRoaXMuVEhFQUQsQ09MR1JPVVA6dGhpcy5DT0xHUk9VUCxUQk9EWTp0aGlzLlRCT0RZLHJvd1V0aWxzOnRoaXMucm93VXRpbHMsY29sdW1uVXRpbHM6dGhpcy5jb2x1''@;'; put 'put ''bW5VdGlscyxjZWxsUmVuZGVyZXI6dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmdQdXJlKCJjZWxsUmVuZGVyZXIiKX0pfXJldHVybiBmdW5jdGlvbiBIV2UoZCxnLGgpe2cmJktfZShkLnByb3RvdHlwZSxnKSxoJiZLX2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBl''@;'; put 'put ''Iix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiaXMiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLm5hbWU9PT1ofX0se2tleToiZml4VGFibGVEb21UcmVlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50O3RoaXMuVEJPRFk9dGhpcy5U''@;'; put 'put ''QUJMRS5xdWVyeVNlbGVjdG9yKCJ0Ym9keSIpLHRoaXMuVEJPRFl8fCh0aGlzLlRCT0RZPWguY3JlYXRlRWxlbWVudCgidGJvZHkiKSx0aGlzLlRBQkxFLmFwcGVuZENoaWxkKHRoaXMuVEJPRFkpKSx0aGlzLlRIRUFEPXRoaXMuVEFCTEUucXVlcnlTZWxlY3RvcigidGhlYWQiKSx0aGlzLlRI''@;'; put 'put ''RUFEfHwodGhpcy5USEVBRD1oLmNyZWF0ZUVsZW1lbnQoInRoZWFkIiksdGhpcy5UQUJMRS5pbnNlcnRCZWZvcmUodGhpcy5USEVBRCx0aGlzLlRCT0RZKSksdGhpcy5DT0xHUk9VUD10aGlzLlRBQkxFLnF1ZXJ5U2VsZWN0b3IoImNvbGdyb3VwIiksdGhpcy5DT0xHUk9VUHx8KHRoaXMuQ09M''@;'; put 'put ''R1JPVVA9aC5jcmVhdGVFbGVtZW50KCJjb2xncm91cCIpLHRoaXMuVEFCTEUuaW5zZXJ0QmVmb3JlKHRoaXMuQ09MR1JPVVAsdGhpcy5USEVBRCkpfX0se2tleToiY3JlYXRlU3ByZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB5LHY9aC5wYXJlbnROb2RlO3JldHVybighdnx8di5ub2Rl''@;'; put 'put ''VHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFfHwhdGwodiwid3RIb2xkZXIiKSkmJigoeT10aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuY2xhc3NOYW1lPSJ3dFNwcmVhZGVyIix2JiZ2Lmluc2VydEJlZm9yZSh5LGgpLHkuYXBwZW5kQ2hpbGQoaCkp''@;'; put 'put ''LHkuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIix5fX0se2tleToiY3JlYXRlSGlkZXIiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB5LHY9aC5wYXJlbnROb2RlO3JldHVybighdnx8di5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFfHwhdGwodiwid3RIb2xkZXIiKSkmJigoeT10aGlzLmRv''@;'; put 'put ''bUJpbmRpbmdzLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuY2xhc3NOYW1lPSJ3dEhpZGVyIix2JiZ2Lmluc2VydEJlZm9yZSh5LGgpLHkuYXBwZW5kQ2hpbGQoaCkpLHl9fSx7a2V5OiJjcmVhdGVIb2xkZXIiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB5LHY9aC5wYXJlbnRO''@;'; put 'put ''b2RlO3JldHVybighdnx8di5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFfHwhdGwodiwid3RIb2xkZXIiKSkmJigoeT10aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIix5LmNsYXNzTmFtZT0id3RI''@;'; put 'put ''b2xkZXIiLHYmJnYuaW5zZXJ0QmVmb3JlKHksaCksdGhpcy5pc01hc3RlciYmKHkucGFyZW50Tm9kZS5jbGFzc05hbWUrPSJodF9tYXN0ZXIgaGFuZHNvbnRhYmxlIix5LnBhcmVudE5vZGUuc2V0QXR0cmlidXRlKCJkaXIiLHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nUHVyZSgicnRsTW9k''@;'; put 'put ''ZSIpPyJydGwiOiJsdHIiKSkseS5hcHBlbmRDaGlsZChoKSkseX19LHtrZXk6ImRyYXciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSx2PXRoaXMud3RTZXR0aW5ncyx5PXRoaXMuZGF0YUFjY2Vz''@;'; put 'put ''c09iamVjdCxDPXkud3RPdmVybGF5cyxJPXkud3RWaWV3cG9ydCxaPXYuZ2V0U2V0dGluZygidG90YWxSb3dzIiksdWU9di5nZXRTZXR0aW5nKCJ0b3RhbENvbHVtbnMiKSxfZT12LmdldFNldHRpbmcoInJvd0hlYWRlcnMiKSxCZT1fZS5sZW5ndGgsTmU9di5nZXRTZXR0aW5nKCJjb2x1bW5I''@;'; put 'put ''ZWFkZXJzIiksS2U9TmUubGVuZ3RoLHB0PSExLE90PWg7aWYodGhpcy5pc01hc3RlciYmKHRoaXMuaG9sZGVyT2Zmc2V0PWp1KHRoaXMuaG9sZGVyKSxPdD1JLmNyZWF0ZVJlbmRlckNhbGN1bGF0b3JzKE90KSxCZSYmIXYuZ2V0U2V0dGluZygiZml4ZWRDb2x1bW5zU3RhcnQiKSkpe3ZhciAk''@;'; put 'put ''dD1DLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRTY3JvbGxQb3NpdGlvbigpLGZuPXRoaXMuY29ycmVjdEhlYWRlcldpZHRoO3RoaXMuY29ycmVjdEhlYWRlcldpZHRoPTAhPT0kdCxmbiE9PXRoaXMuY29ycmVjdEhlYWRlcldpZHRoJiYoT3Q9ITEpfWlmKHRoaXMuaXNNYXN0ZXImJihwdD1DLnVw''@;'; put 'put ''ZGF0ZVN0YXRlT2ZSZW5kZXJpbmcoKSksT3QpdGhpcy5pc01hc3RlciYmSS5jcmVhdGVWaXNpYmxlQ2FsY3VsYXRvcnMoKSxDJiZDLnJlZnJlc2goITApO2Vsc2V7dGhpcy50YWJsZU9mZnNldD10aGlzLmlzTWFzdGVyP2p1KHRoaXMuVEFCTEUpOnRoaXMuZGF0YUFjY2Vzc09iamVjdC5wYXJl''@;'; put 'put ''bnRUYWJsZU9mZnNldDt2YXIgTG49Wj4wP3RoaXMuZ2V0Rmlyc3RSZW5kZXJlZFJvdygpOjAsaXI9dWU+MD90aGlzLmdldEZpcnN0UmVuZGVyZWRDb2x1bW4oKTowO3RoaXMucm93RmlsdGVyPW5ldyBsR2UoTG4sWixLZSksdGhpcy5jb2x1bW5GaWx0ZXI9bmV3IHJHZShpcix1ZSxCZSk7dmFy''@;'; put 'put ''IHdyLG1yPSEwO2lmKHRoaXMuaXNNYXN0ZXIpe3RoaXMuYWxpZ25PdmVybGF5c1dpdGhUcmltbWluZ0NvbnRhaW5lcigpO3ZhciBTcj17fTt0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiYmVmb3JlRHJhdyIsITAsU3IpLG1yPSEwIT09U3Iuc2tpcFJlbmRlcn1pZihtcilpZih0aGlzLnRh''@;'; put 'put ''YmxlUmVuZGVyZXIuc2V0SGVhZGVyQ29udGVudFJlbmRlcmVycyhfZSxOZSksKHRoaXMuaXMoRWcpfHx0aGlzLmlzKHh3KSkmJnRoaXMudGFibGVSZW5kZXJlci5zZXRIZWFkZXJDb250ZW50UmVuZGVyZXJzKF9lLFtdKSx0aGlzLnJlc2V0T3ZlcnNpemVkUm93cygpLHRoaXMudGFibGVSZW5k''@;'; put 'put ''ZXJlci5zZXRWaWV3cG9ydFNpemUodGhpcy5nZXRSZW5kZXJlZFJvd3NDb3VudCgpLHRoaXMuZ2V0UmVuZGVyZWRDb2x1bW5zQ291bnQoKSkuc2V0RmlsdGVycyh0aGlzLnJvd0ZpbHRlcix0aGlzLmNvbHVtbkZpbHRlcikucmVuZGVyKCksdGhpcy5pc01hc3RlciYmKHdyPXRoaXMuZGF0YUFj''@;'; put 'put ''Y2Vzc09iamVjdC53b3Jrc3BhY2VXaWR0aCx0aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydC5jb250YWluZXJXaWR0aD1udWxsLHRoaXMubWFya092ZXJzaXplZENvbHVtbkhlYWRlcnMoKSksdGhpcy5hZGp1c3RDb2x1bW5IZWFkZXJIZWlnaHRzKCksKHRoaXMuaXNNYXN0ZXJ8fHRo''@;'; put 'put ''aXMuaXMoRWcpKSYmdGhpcy5tYXJrT3ZlcnNpemVkUm93cygpLHRoaXMuaXNNYXN0ZXIpe3RoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0LmNyZWF0ZVZpc2libGVDYWxjdWxhdG9ycygpLHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dE92ZXJsYXlzLnJlZnJlc2goITEpLHRoaXMuZGF0''@;'; put 'put ''YUFjY2Vzc09iamVjdC53dE92ZXJsYXlzLmFwcGx5VG9ET00oKTt2YXIgUXI9RTIodGhpcy5oaWRlcikseWk9RTIodGhpcy5UQUJMRSk7MCE9PVFyJiZ5aSE9PVFyJiYodGhpcy5jb2x1bW5VdGlscy5jYWxjdWxhdGVXaWR0aHMoKSx0aGlzLnRhYmxlUmVuZGVyZXIucmVuZGVyZXIuY29sR3Jv''@;'; put 'put ''dXAucmVuZGVyKCkpLHdyIT09dGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQuZ2V0V29ya3NwYWNlV2lkdGgoKSYmKHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0LmNvbnRhaW5lcldpZHRoPW51bGwsdGhpcy5jb2x1bW5VdGlscy5jYWxjdWxhdGVXaWR0aHMoKSx0aGlz''@;'; put 'put ''LnRhYmxlUmVuZGVyZXIucmVuZGVyZXIuY29sR3JvdXAucmVuZGVyKCkpLHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvbkRyYXciLCEwKX1lbHNlIHRoaXMuaXMoRWcpJiZ0aGlzLmRhdGFBY2Nlc3NPYmplY3QuY2xvbmVTb3VyY2Uud3RPdmVybGF5cy5hZGp1c3RFbGVtZW50c1NpemUo''@;'; put 'put ''KX1pZih0aGlzLmlzTWFzdGVyKXt2YXIgS2k9Qy50b3BPdmVybGF5LnJlc2V0Rml4ZWRQb3NpdGlvbigpO0MuYm90dG9tT3ZlcmxheS5jbG9uZSYmKEtpPUMuYm90dG9tT3ZlcmxheS5yZXNldEZpeGVkUG9zaXRpb24oKXx8S2kpLEtpPUMuaW5saW5lU3RhcnRPdmVybGF5LnJlc2V0Rml4ZWRQ''@;'; put 'put ''b3NpdGlvbigpfHxLaSxDLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSYmQy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkucmVzZXRGaXhlZFBvc2l0aW9uKCksQy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJkMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmNs''@;'; put 'put ''b25lJiZDLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5yZXNldEZpeGVkUG9zaXRpb24oKSxLaSYmKEMucmVmcmVzaEFsbCgpLEMuYWRqdXN0RWxlbWVudHNTaXplKCkpfXJldHVybiB0aGlzLnJlZnJlc2hTZWxlY3Rpb25zKE90KSxwdCYmQy5zeW5jU2Nyb2xsV2l0aE1hc3Rlcigp''@;'; put 'put ''LHRoaXMuZGF0YUFjY2Vzc09iamVjdC5kcmF3bj0hMCx0aGlzfX0se2tleToibWFya0lmT3ZlcnNpemVkQ29sdW1uSGVhZGVyIix2YWx1ZTpmdW5jdGlvbihoKXtmb3IodmFyIEksWix1ZSx2PXRoaXMuY29sdW1uRmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2UoaCkseT10aGlzLnd0U2V0dGluZ3Mu''@;'; put 'put ''Z2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpLmxlbmd0aCxDPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJkZWZhdWx0Um93SGVpZ2h0IiksX2U9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImNvbHVtbkhlYWRlckhlaWdodCIpfHxbXTt5OylJPXRoaXMuZ2V0Q29sdW1uSGVhZGVy''@;'; put 'put ''SGVpZ2h0KHktPTEpLChaPXRoaXMuZ2V0Q29sdW1uSGVhZGVyKHYseSkpJiYodWU9RXYoWiksKCFJJiZDPHVlfHxJPHVlKSYmKHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0Lm92ZXJzaXplZENvbHVtbkhlYWRlcnNbeV09dWUpLEFycmF5LmlzQXJyYXkoX2UpP251bGwhPV9lW3ld''@;'; put 'put ''JiYodGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQub3ZlcnNpemVkQ29sdW1uSGVhZGVyc1t5XT1fZVt5XSk6aXNOYU4oX2UpfHwodGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQub3ZlcnNpemVkQ29sdW1uSGVhZGVyc1t5XT1fZSksdGhpcy5kYXRhQWNjZXNzT2JqZWN0''@;'; put 'put ''Lnd0Vmlld3BvcnQub3ZlcnNpemVkQ29sdW1uSGVhZGVyc1t5XTwoX2VbeV18fF9lKSYmKHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0Lm92ZXJzaXplZENvbHVtbkhlYWRlcnNbeV09X2VbeV18fF9lKSl9fSx7a2V5OiJhZGp1c3RDb2x1bW5IZWFkZXJIZWlnaHRzIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe2Zvcih2YXIgdj10aGlzLlRIRUFELmNoaWxkTm9kZXMseT10aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydC5vdmVyc2l6ZWRDb2x1bW5IZWFkZXJzLEk9MCxaPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIikubGVuZ3RoO0k8WjtJKysp''@;'; put 'put ''aWYoeVtJXSl7aWYoIXZbSV18fDA9PT12W0ldLmNoaWxkTm9kZXMubGVuZ3RoKXJldHVybjt2W0ldLmNoaWxkTm9kZXNbMF0uc3R5bGUuaGVpZ2h0PSIiLmNvbmNhdCh5W0ldLCJweCIpfX19LHtrZXk6InJlc2V0T3ZlcnNpemVkUm93cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLnd0''@;'; put 'put ''U2V0dGluZ3Msdj10aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydDtpZigodGhpcy5pc01hc3Rlcnx8dGhpcy5pcyhFZykpJiYhaC5nZXRTZXR0aW5nKCJleHRlcm5hbFJvd0NhbGN1bGF0b3IiKSlmb3IodmFyIHk9dGhpcy5nZXRSZW5kZXJlZFJvd3NDb3VudCgpLEM9MDtDPHk7Qysr''@;'; put 'put ''KXt2YXIgST10aGlzLnJvd0ZpbHRlci5yZW5kZXJlZFRvU291cmNlKEMpO3Yub3ZlcnNpemVkUm93cyYmdi5vdmVyc2l6ZWRSb3dzW0ldJiYodi5vdmVyc2l6ZWRSb3dzW0ldPXZvaWQgMCl9fX0se2tleToicmVtb3ZlQ2xhc3NGcm9tQ2VsbHMiLHZhbHVlOmZ1bmN0aW9uKGgpe2Zvcih2YXIg''@;'; put 'put ''dj10aGlzLlRBQkxFLnF1ZXJ5U2VsZWN0b3JBbGwoIi4iLmNvbmNhdChoKSkseT0wLEM9di5sZW5ndGg7eTxDO3krKylwbCh2W3ldLGgpfX0se2tleToicmVmcmVzaFNlbGVjdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMud3RTZXR0aW5ncyx5PXRoaXMuZGF0YUFjY2Vzc09i''@;'; put 'put ''amVjdC5zZWxlY3Rpb25zO2lmKHkpe3ZhciBDPUFycmF5LmZyb20oeSksST1DLmxlbmd0aDtpZihoKXtmb3IodmFyIFo9W10sdWU9MDt1ZTxJO3VlKyspe2Zvcih2YXIgX2U9Q1t1ZV0uc2V0dGluZ3MsQmU9X2UuaGlnaGxpZ2h0SGVhZGVyQ2xhc3NOYW1lLE5lPV9lLmhpZ2hsaWdodFJvd0Ns''@;'; put 'put ''YXNzTmFtZSxLZT1fZS5oaWdobGlnaHRDb2x1bW5DbGFzc05hbWUscHQ9Q1t1ZV0uY2xhc3NOYW1lcyxPdD1wdC5sZW5ndGgsJHQ9MDskdDxPdDskdCsrKVouaW5jbHVkZXMocHRbJHRdKXx8Wi5wdXNoKHB0WyR0XSk7QmUmJiFaLmluY2x1ZGVzKEJlKSYmWi5wdXNoKEJlKSxOZSYmIVouaW5j''@;'; put 'put ''bHVkZXMoTmUpJiZaLnB1c2goTmUpLEtlJiYhWi5pbmNsdWRlcyhLZSkmJloucHVzaChLZSl9dmFyIGZuPXYuZ2V0U2V0dGluZygib25CZWZvcmVSZW1vdmVDZWxsQ2xhc3NOYW1lcyIpO2lmKEFycmF5LmlzQXJyYXkoZm4pKWZvcih2YXIgTG49MDtMbjxmbi5sZW5ndGg7TG4rKylaLnB1c2go''@;'; put 'put ''Zm5bTG5dKTtmb3IodmFyIGlyPVoubGVuZ3RoLG1yPTA7bXI8aXI7bXIrKyl0aGlzLnJlbW92ZUNsYXNzRnJvbUNlbGxzKFpbbXJdKX1mb3IodmFyIFNyPTA7U3I8STtTcisrKUNbU3JdLmRyYXcodGhpcy5mYWNhZGVHZXR0ZXIoKSxoKX19fSx7a2V5OiJnZXRDZWxsIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bihoKXt2YXIgWix2PWgucm93LHk9aC5jb2wsQz10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygib25Nb2RpZnlHZXRDZWxsQ29vcmRzIix2LHkpO2lmKEMmJkFycmF5LmlzQXJyYXkoQykpe3ZhciBJPWZ1bmN0aW9uIE9XZShkLGcpe3JldHVybiBmdW5jdGlvbiBQV2UoZCl7aWYoQXJyYXku''@;'; put 'put ''aXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIEJXZShkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksWix2PVtdLHk9ITAsQz0hMTt0cnl7''@;'; put 'put ''Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKHVlKXtDPSEwLFo9dWV9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBa''@;'; put 'put ''fX1yZXR1cm4gdn19KGQsZyl8fFhfZShkLGcpfHxmdW5jdGlvbiBSV2UoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11''@;'; put 'put ''c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShDLDIpO3Y9SVswXSx5PUlbMV19aWYodGhpcy5pc1Jvd0JlZm9yZVJlbmRlcmVkUm93cyh2KSlyZXR1cm4tMTtpZih0aGlzLmlzUm93QWZ0ZXJSZW5kZXJlZFJvd3ModikpcmV0dXJuLTI7aWYodGhpcy5pc0NvbHVt''@;'; put 'put ''bkJlZm9yZVJlbmRlcmVkQ29sdW1ucyh5KSlyZXR1cm4tMztpZih0aGlzLmlzQ29sdW1uQWZ0ZXJSZW5kZXJlZENvbHVtbnMoeSkpcmV0dXJuLTQ7aWYoIShaPXY8MD90aGlzLlRIRUFELmNoaWxkTm9kZXNbdGhpcy5yb3dGaWx0ZXIuc291cmNlUm93VG9WaXNpYmxlQ29sSGVhZGVkUm93KHYp''@;'; put 'put ''XTp0aGlzLlRCT0RZLmNoaWxkTm9kZXNbdGhpcy5yb3dGaWx0ZXIuc291cmNlVG9SZW5kZXJlZCh2KV0pJiZ2Pj0wKXRocm93IG5ldyBFcnJvcigiVFIgd2FzIGV4cGVjdGVkIHRvIGJlIHJlbmRlcmVkIGJ1dCBpcyBub3QiKTt2YXIgdWU9Wi5jaGlsZE5vZGVzW3RoaXMuY29sdW1uRmlsdGVy''@;'; put 'put ''LnNvdXJjZUNvbHVtblRvVmlzaWJsZVJvd0hlYWRlZENvbHVtbih5KV07aWYoIXVlJiZ5Pj0wKXRocm93IG5ldyBFcnJvcigiVEQgb3IgVEggd2FzIGV4cGVjdGVkIHRvIGJlIHJlbmRlcmVkIGJ1dCBpcyBub3QiKTtyZXR1cm4gdWV9fSx7a2V5OiJnZXRDb2x1bW5IZWFkZXIiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKGgpe3ZhciB2PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowLHk9dGhpcy5USEVBRC5jaGlsZE5vZGVzW3ZdO3JldHVybiBudWxsPT15P3ZvaWQgMDp5LmNoaWxkTm9kZXNbdGhpcy5jb2x1bW5GaWx0ZXIuc291cmNlQ29sdW1u''@;'; put 'put ''VG9WaXNpYmxlUm93SGVhZGVkQ29sdW1uKGgpXX19LHtrZXk6ImdldENvbHVtbkhlYWRlcnMiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PVtdLHk9dGhpcy5jb2x1bW5GaWx0ZXIuc291cmNlQ29sdW1uVG9WaXNpYmxlUm93SGVhZGVkQ29sdW1uKGgpO3JldHVybiB0aGlzLlRIRUFELmNoaWxk''@;'; put 'put ''Tm9kZXMuZm9yRWFjaChmdW5jdGlvbihDKXt2YXIgST1DLmNoaWxkTm9kZXNbeV07SSYmdi5wdXNoKEkpfSksdn19LHtrZXk6ImdldFJvd0hlYWRlciIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFd''@;'; put 'put ''OjA7aWYoMCE9PXRoaXMuY29sdW1uRmlsdGVyLnNvdXJjZUNvbHVtblRvVmlzaWJsZVJvd0hlYWRlZENvbHVtbigwKSl7dmFyIHk9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInJvd0hlYWRlcnMiKS5sZW5ndGg7aWYoISh2Pj15KSl7dmFyIEM9dGhpcy5UQk9EWS5jaGlsZE5vZGVzW3Ro''@;'; put 'put ''aXMucm93RmlsdGVyLnNvdXJjZVRvUmVuZGVyZWQoaCldO3JldHVybiBudWxsPT1DP3ZvaWQgMDpDLmNoaWxkTm9kZXNbdl19fX19LHtrZXk6ImdldFJvd0hlYWRlcnMiLHZhbHVlOmZ1bmN0aW9uKGgpe2lmKDA9PT10aGlzLmNvbHVtbkZpbHRlci5zb3VyY2VDb2x1bW5Ub1Zpc2libGVSb3dI''@;'; put 'put ''ZWFkZWRDb2x1bW4oMCkpcmV0dXJuW107Zm9yKHZhciB2PVtdLHk9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInJvd0hlYWRlcnMiKS5sZW5ndGgsQz0wO0M8eTtDKyspe3ZhciBJPXRoaXMuVEJPRFkuY2hpbGROb2Rlc1t0aGlzLnJvd0ZpbHRlci5zb3VyY2VUb1JlbmRlcmVkKGgpXSxa''@;'; put 'put ''PW51bGw9PUk/dm9pZCAwOkkuY2hpbGROb2Rlc1tDXTtaJiZ2LnB1c2goWil9cmV0dXJuIHZ9fSx7a2V5OiJnZXRDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PWg7aWYoIlREIiE9PXYubm9kZU5hbWUmJiJUSCIhPT12Lm5vZGVOYW1lJiYodj1Ndih2LFsiVEQiLCJUSCJdKSksbnVs''@;'; put 'put ''bD09PXYpcmV0dXJuIG51bGw7dmFyIHk9di5wYXJlbnROb2RlLEM9eS5wYXJlbnROb2RlLEk9WmJlKHkpLFo9di5jZWxsSW5kZXg7cmV0dXJuIEN3KExTLHYsdGhpcy53dFJvb3RFbGVtZW50KXx8Q3coSVMsdix0aGlzLnd0Um9vdEVsZW1lbnQpPyJUSEVBRCI9PT1DLm5vZGVOYW1lJiYoSS09''@;'; put 'put ''Qy5jaGlsZE5vZGVzLmxlbmd0aCk6ST1Ddyh4dyx2LHRoaXMud3RSb290RWxlbWVudCl8fEN3KEVnLHYsdGhpcy53dFJvb3RFbGVtZW50KT90aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIiktQy5jaGlsZE5vZGVzLmxlbmd0aCtJOkM9PT10aGlzLlRIRUFEP3RoaXMucm93''@;'; put 'put ''RmlsdGVyLnZpc2libGVDb2xIZWFkZWRSb3dUb1NvdXJjZVJvdyhJKTp0aGlzLnJvd0ZpbHRlci5yZW5kZXJlZFRvU291cmNlKEkpLFo9Q3coTFMsdix0aGlzLnd0Um9vdEVsZW1lbnQpfHxDdyhEUyx2LHRoaXMud3RSb290RWxlbWVudCl8fEN3KHh3LHYsdGhpcy53dFJvb3RFbGVtZW50KT90''@;'; put 'put ''aGlzLmNvbHVtbkZpbHRlci5vZmZzZXR0ZWRUSChaKTp0aGlzLmNvbHVtbkZpbHRlci52aXNpYmxlUm93SGVhZGVkQ29sdW1uVG9Tb3VyY2VDb2x1bW4oWiksdGhpcy53b3QuY3JlYXRlQ2VsbENvb3JkcyhJLFopfX0se2tleToibWFya092ZXJzaXplZFJvd3MiLHZhbHVlOmZ1bmN0aW9uKCl7''@;'; put 'put ''aWYoIXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJleHRlcm5hbFJvd0NhbGN1bGF0b3IiKSl7dmFyIEMsSSxaLHVlLF9lLGg9dGhpcy5UQk9EWS5jaGlsZE5vZGVzLmxlbmd0aDtpZihoKnRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJkZWZhdWx0Um93SGVpZ2h0IikhPUV2KHRoaXMu''@;'; put 'put ''VEJPRFkpLTF8fHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKSlmb3IoO2g7KVo9dGhpcy5yb3dGaWx0ZXIucmVuZGVyZWRUb1NvdXJjZShoLT0xKSxDPXRoaXMuZ2V0Um93SGVpZ2h0KFopLEk9KF9lPSh1ZT10aGlzLmdldFRyRm9yUm93KFopKS5xdWVyeVNl''@;'; put 'put ''bGVjdG9yKCJ0aCIpKT9FdihfZSk6RXYodWUpLTEsKCFDJiZ0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZGVmYXVsdFJvd0hlaWdodCIpPEl8fEM8SSkmJih0aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydC5vdmVyc2l6ZWRSb3dzW1pdPUkrPTEpfX19LHtrZXk6ImdldFRyRm9y''@;'; put 'put ''Um93Iix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5UQk9EWS5jaGlsZE5vZGVzW3RoaXMucm93RmlsdGVyLnNvdXJjZVRvUmVuZGVyZWQoaCldfX0se2tleToiaXNDb2x1bW5IZWFkZXJSZW5kZXJlZCIsdmFsdWU6ZnVuY3Rpb24oaCl7aWYoaD49MClyZXR1cm4hMTt2YXIgeT10aGlz''@;'; put 'put ''Lnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicm93SGVhZGVycyIpLmxlbmd0aDtyZXR1cm4gTWF0aC5hYnMoaCk8PXl9fSx7a2V5OiJpc1Jvd0hlYWRlclJlbmRlcmVkIix2YWx1ZTpmdW5jdGlvbihoKXtpZihoPj0wKXJldHVybiExO3ZhciB5PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJj''@;'; put 'put ''b2x1bW5IZWFkZXJzIikubGVuZ3RoO3JldHVybiBNYXRoLmFicyhoKTw9eX19LHtrZXk6ImlzUm93QmVmb3JlUmVuZGVyZWRSb3dzIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLmdldEZpcnN0UmVuZGVyZWRSb3coKTtyZXR1cm4gaDwwJiZ2PD0wPyF0aGlzLmlzUm93SGVhZGVyUmVu''@;'; put 'put ''ZGVyZWQoaCk6aDx2fX0se2tleToiaXNSb3dBZnRlclJlbmRlcmVkUm93cyIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIGg+dGhpcy5nZXRMYXN0UmVuZGVyZWRSb3coKX19LHtrZXk6ImlzQ29sdW1uQmVmb3JlUmVuZGVyZWRDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlz''@;'; put 'put ''LmdldEZpcnN0UmVuZGVyZWRDb2x1bW4oKTtyZXR1cm4gaDwwJiZ2PD0wPyF0aGlzLmlzQ29sdW1uSGVhZGVyUmVuZGVyZWQoaCk6aDx2fX0se2tleToiaXNDb2x1bW5BZnRlclJlbmRlcmVkQ29sdW1ucyIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuY29sdW1uRmlsdGVyJiZoPnRo''@;'; put 'put ''aXMuZ2V0TGFzdFJlbmRlcmVkQ29sdW1uKCl9fSx7a2V5OiJpc0NvbHVtbkFmdGVyVmlld3BvcnQiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmNvbHVtbkZpbHRlciYmaD50aGlzLmdldExhc3RWaXNpYmxlQ29sdW1uKCl9fSx7a2V5OiJpc1Jvd0FmdGVyVmlld3BvcnQiLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnJvd0ZpbHRlciYmaD50aGlzLmdldExhc3RWaXNpYmxlUm93KCl9fSx7a2V5OiJpc0NvbHVtbkJlZm9yZVZpZXdwb3J0Iix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5jb2x1bW5GaWx0ZXImJnRoaXMuY29sdW1uRmlsdGVyLnNvdXJjZVRv''@;'; put 'put ''UmVuZGVyZWQoaCk8MCYmaD49MH19LHtrZXk6ImlzTGFzdFJvd0Z1bGx5VmlzaWJsZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRMYXN0VmlzaWJsZVJvdygpPT09dGhpcy5nZXRMYXN0UmVuZGVyZWRSb3coKX19LHtrZXk6ImlzTGFzdENvbHVtbkZ1bGx5VmlzaWJsZSIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRMYXN0VmlzaWJsZUNvbHVtbigpPT09dGhpcy5nZXRMYXN0UmVuZGVyZWRDb2x1bW4oKX19LHtrZXk6ImFsbFJvd3NJblZpZXdwb3J0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxS''@;'; put 'put ''b3dzIik9PT10aGlzLmdldFZpc2libGVSb3dzQ291bnQoKX19LHtrZXk6ImFsbENvbHVtbnNJblZpZXdwb3J0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIik9PT10aGlzLmdldFZpc2libGVDb2x1bW5zQ291bnQoKX19''@;'; put 'put ''LHtrZXk6ImdldFJvd0hlaWdodCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMucm93VXRpbHMuZ2V0SGVpZ2h0KGgpfX0se2tleToiZ2V0Q29sdW1uSGVhZGVySGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5jb2x1bW5VdGlscy5nZXRIZWFkZXJIZWlnaHQoaCl9''@;'; put 'put ''fSx7a2V5OiJnZXRDb2x1bW5XaWR0aCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuY29sdW1uVXRpbHMuZ2V0V2lkdGgoaCl9fSx7a2V5OiJnZXRTdHJldGNoZWRDb2x1bW5XaWR0aCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuY29sdW1uVXRpbHMuZ2V0U3RyZXRjaGVk''@;'; put 'put ''Q29sdW1uV2lkdGgoaCl9fSx7a2V5OiJoYXNEZWZpbmVkU2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNUYWJsZUhlaWdodCYmdGhpcy5oYXNUYWJsZVdpZHRofX0se2tleToiZ2V0V2lkdGgiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEUyKHRoaXMuVEFCTEUpfX0se2tl''@;'; put 'put ''eToiZ2V0SGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBEMSh0aGlzLlRBQkxFKX19LHtrZXk6ImdldFRvdGFsV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9RTIodGhpcy5oaWRlcik7cmV0dXJuIDAhPT1oP2g6dGhpcy5nZXRXaWR0aCgpfX0se2tleToiZ2V0VG90YWxIZWln''@;'; put 'put ''aHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9RDEodGhpcy5oaWRlcik7cmV0dXJuIDAhPT1oP2g6dGhpcy5nZXRIZWlnaHQoKX19LHtrZXk6ImlzVmlzaWJsZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gY08odGhpcy5UQUJMRSl9fSx7a2V5OiJfbW9kaWZ5Um93SGVhZGVyV2lkdGgiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGgpe3ZhciB2PVUyKGgpP2goKTpudWxsO3JldHVybiBBcnJheS5pc0FycmF5KHYpPyh2PWZ1bmN0aW9uIFRXZShkKXtyZXR1cm4gZnVuY3Rpb24gTFdlKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIG9kZShkKX0oZCl8fGZ1bmN0aW9uIERXZShkKXtpZigidW5k''@;'; put 'put ''ZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxYX2UoZCl8fGZ1bmN0aW9uIElXZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJl''@;'; put 'put ''YWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfSh2KSlbdi5sZW5ndGgtMV09dGhpcy5fY29ycmVjdFJvd0hlYWRlcldpZHRoKHZbdi5s''@;'; put 'put ''ZW5ndGgtMV0pOnY9dGhpcy5fY29ycmVjdFJvd0hlYWRlcldpZHRoKHYpLHZ9fSx7a2V5OiJfY29ycmVjdFJvd0hlYWRlcldpZHRoIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1oO3JldHVybiJudW1iZXIiIT10eXBlb2YgaCYmKHY9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1''@;'; put 'put ''bHRDb2x1bW5XaWR0aCIpKSx0aGlzLmNvcnJlY3RIZWFkZXJXaWR0aCYmKHYrPTEpLHZ9fV0pLGR9KCk7Y29uc3Qgdk89TldlO3ZhciAkX2U9e2dldEZpcnN0UmVuZGVyZWRSb3c6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKT8t''@;'; put 'put ''MTowfSxnZXRGaXJzdFZpc2libGVSb3c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRGaXJzdFJlbmRlcmVkUm93KCl9LGdldExhc3RSZW5kZXJlZFJvdzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFJlbmRlcmVkUm93c0NvdW50KCktMX0sZ2V0TGFzdFZpc2libGVSb3c6ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5nZXRMYXN0UmVuZGVyZWRSb3coKX0sZ2V0UmVuZGVyZWRSb3dzQ291bnQ6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIik7cmV0dXJuIE1hdGgubWluKHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJv''@;'; put 'put ''d3NUb3AiKSxnKX0sZ2V0VmlzaWJsZVJvd3NDb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFJlbmRlcmVkUm93c0NvdW50KCl9fTtTZygkX2UsIk1JWElOX05BTUUiLCJzdGlja3lSb3dzVG9wIix7d3JpdGFibGU6ITEsZW51bWVyYWJsZTohMX0pO2NvbnN0IHFfZT0kX2U7dmFyIGVD''@;'; put 'put ''ZT17Z2V0Rmlyc3RSZW5kZXJlZENvbHVtbjpmdW5jdGlvbigpe3ZhciBnPXRoaXMuZGF0YUFjY2Vzc09iamVjdC5zdGFydENvbHVtblJlbmRlcmVkO3JldHVybiBudWxsPT09Zz8tMTpnfSxnZXRGaXJzdFZpc2libGVDb2x1bW46ZnVuY3Rpb24oKXt2YXIgZz10aGlzLmRhdGFBY2Nlc3NPYmpl''@;'; put 'put ''Y3Quc3RhcnRDb2x1bW5WaXNpYmxlO3JldHVybiBudWxsPT09Zz8tMTpnfSxnZXRMYXN0UmVuZGVyZWRDb2x1bW46ZnVuY3Rpb24oKXt2YXIgZz10aGlzLmRhdGFBY2Nlc3NPYmplY3QuZW5kQ29sdW1uUmVuZGVyZWQ7cmV0dXJuIG51bGw9PT1nPy0xOmd9LGdldExhc3RWaXNpYmxlQ29sdW1u''@;'; put 'put ''OmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LmVuZENvbHVtblZpc2libGU7cmV0dXJuIG51bGw9PT1nPy0xOmd9LGdldFJlbmRlcmVkQ29sdW1uc0NvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YUFjY2Vzc09iamVjdC5jb3VudENvbHVtbnNSZW5kZXJlZH0s''@;'; put 'put ''Z2V0VmlzaWJsZUNvbHVtbnNDb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGFBY2Nlc3NPYmplY3QuY291bnRDb2x1bW5zVmlzaWJsZX19O1NnKGVDZSwiTUlYSU5fTkFNRSIsImNhbGN1bGF0ZWRDb2x1bW5zIix7d3JpdGFibGU6ITEsZW51bWVyYWJsZTohMX0pO2NvbnN0IGFkZT1l''@;'; put 'put ''Q2U7ZnVuY3Rpb24gbGRlKGQpe3JldHVybihsZGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJv''@;'; put 'put ''bCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiB0Q2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZp''@;'; put 'put ''Z3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBzZGUoZCxnKXtyZXR1cm4oc2RlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYs''@;'; put 'put ''eSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gWVdlKGQsZyl7aWYoZyYmKCJvYmplY3QiPT09bGRlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBt''@;'; put 'put ''YXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBVV2UoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVy''@;'; put 'put ''biBkfShkKX1mdW5jdGlvbiBBZWUoZCl7cmV0dXJuKEFlZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciB1ZGU9ZnVuY3Rpb24o''@;'; put 'put ''ZCl7IWZ1bmN0aW9uIEdXZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90''@;'; put 'put ''b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZzZGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBXV2UoZCl7dmFyIGc9ZnVuY3Rpb24g''@;'; put 'put ''UVdlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5j''@;'; put 'put ''YWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9QWVlKGQpO2lmKGcpe3ZhciBDPUFlZSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJn''@;'; put 'put ''dW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gWVdlKHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYseSxDLEkpe3JldHVybiBmdW5jdGlvbiB6V2UoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBh''@;'; put 'put ''IGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSxnLmNhbGwodGhpcyx2LHksQyxJLElTKX1yZXR1cm4gZnVuY3Rpb24gWldlKGQsZyxoKXtyZXR1cm4gZyYmdENlKGQucHJvdG90eXBlLGcpLGgmJnRDZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0''@;'; put 'put ''YWJsZTohMX0pLGR9KGgpfSh2Tyk7QjIodWRlLHFfZSksQjIodWRlLGFkZSk7Y29uc3QgSldlPXVkZTtmdW5jdGlvbiBuQ2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwi''@;'; put 'put ''dmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBjZGUoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0''@;'; put 'put ''YWJsZTohMH0pOmRbZ109aCxkfXZhciAkV2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpeyhmdW5jdGlvbiBYV2UoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksY2RlKHRo''@;'; put 'put ''aXMsImRhdGFBY2Nlc3NPYmplY3QiLHZvaWQgMCksY2RlKHRoaXMsImxhc3RTY3JvbGxlZENvbHVtblBvcyIsLTEpLGNkZSh0aGlzLCJsYXN0U2Nyb2xsZWRSb3dQb3MiLC0xKSx0aGlzLmRhdGFBY2Nlc3NPYmplY3Q9Z31yZXR1cm4gZnVuY3Rpb24gS1dlKGQsZyxoKXtnJiZuQ2UoZC5wcm90''@;'; put 'put ''b3R5cGUsZyksaCYmbkNlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InNjcm9sbFZpZXdwb3J0Iix2YWx1ZTpmdW5jdGlvbihoLHYseSxDLEkpe3ZhciBaPXRoaXMuc2Nyb2xsVmlld3BvcnRIb3Jpem9udGFsbHkoaC5j''@;'; put 'put ''b2wseSxJKSx1ZT10aGlzLnNjcm9sbFZpZXdwb3J0VmVydGljYWxseShoLnJvdyx2LEMpO3JldHVybiBafHx1ZX19LHtrZXk6InNjcm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5Iix2YWx1ZTpmdW5jdGlvbihoLHYseSl7dmFyIEM9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LFo9Qy50b3RhbENvbHVt''@;'; put 'put ''bnM7aWYoIUMuZHJhd258fCFOdW1iZXIuaXNJbnRlZ2VyKGgpfHxoPDB8fGg+WilyZXR1cm4hMTt2YXIgdWU9dGhpcy5nZXRGaXJzdFZpc2libGVDb2x1bW4oKSxfZT10aGlzLmdldExhc3RWaXNpYmxlQ29sdW1uKCksQmU9dm9pZCAwPT09diYmdm9pZCAwPT09eSxOZT10aGlzLmRhdGFBY2Nl''@;'; put 'put ''c3NPYmplY3QscHQ9TmUuaW5saW5lU3RhcnRPdmVybGF5O2lmKEJlJiZoPE5lLmZpeGVkQ29sdW1uc1N0YXJ0KXJldHVybiExO3ZhciBPdD0hMTtyZXR1cm4tMT09PXVlP090PXB0LnNjcm9sbFRvKGgsQmU/aD50aGlzLmxhc3RTY3JvbGxlZENvbHVtblBvczp2KTooQmUmJihoPHVlfHxoPl9l''@;'; put 'put ''KXx8IUJlKSYmKE90PXB0LnNjcm9sbFRvKGgsQmU/aD5fZTp2KSksT3QmJih0aGlzLmxhc3RTY3JvbGxlZENvbHVtblBvcz1oKSxPdH19LHtrZXk6InNjcm9sbFZpZXdwb3J0VmVydGljYWxseSIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3ZhciBDPXRoaXMuZGF0YUFjY2Vzc09iamVjdCxaPUMu''@;'; put 'put ''dG90YWxSb3dzO2lmKCFDLmRyYXdufHwhTnVtYmVyLmlzSW50ZWdlcihoKXx8aDwwfHxoPlopcmV0dXJuITE7dmFyIHVlPXRoaXMuZ2V0Rmlyc3RWaXNpYmxlUm93KCksX2U9dGhpcy5nZXRMYXN0VmlzaWJsZVJvdygpLEJlPXZvaWQgMD09PXYmJnZvaWQgMD09PXksTmU9dGhpcy5kYXRhQWNj''@;'; put 'put ''ZXNzT2JqZWN0LE90PU5lLnRvcE92ZXJsYXk7aWYoQmUmJihoPE5lLmZpeGVkUm93c1RvcHx8aD5aLU5lLmZpeGVkUm93c0JvdHRvbS0xKSlyZXR1cm4hMTt2YXIgJHQ9ITE7cmV0dXJuLTE9PT11ZT8kdD1PdC5zY3JvbGxUbyhoLEJlP2g+dGhpcy5sYXN0U2Nyb2xsZWRSb3dQb3M6eSk6KEJl''@;'; put 'put ''JiYoaDx1ZXx8aD5fZSl8fCFCZSkmJigkdD1PdC5zY3JvbGxUbyhoLEJlP2g+X2U6eSkpLCR0JiYodGhpcy5sYXN0U2Nyb2xsZWRSb3dQb3M9aCksJHR9fSx7a2V5OiJnZXRGaXJzdFZpc2libGVSb3ciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LHY9aC50''@;'; put 'put ''b3BPdmVybGF5LHk9aC53dFRhYmxlLEM9aC53dFZpZXdwb3J0LEk9aC50b3RhbFJvd3MsWj1oLmZpeGVkUm93c1RvcCx1ZT1oLnJvb3RXaW5kb3csX2U9eS5nZXRGaXJzdFZpc2libGVSb3coKTtpZih2Lm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PT09dWUpe3ZhciBCZT1qdSh5Lnd0Um9v''@;'; put 'put ''dEVsZW1lbnQpLE5lPUV2KHkuaGlkZXIpLEtlPUV2KHVlKSxwdD1GWih1ZSx1ZSk7aWYoQmUudG9wK05lLUtlPD1wdCl7dmFyIE90PUMuZ2V0Q29sdW1uSGVhZGVySGVpZ2h0KCk7T3QrPXYuc3VtQ2VsbFNpemVzKDAsWik7Zm9yKHZhciAkdD1JOyR0PjA7JHQtLSlpZihPdCs9di5zdW1DZWxs''@;'; put 'put ''U2l6ZXMoJHQtMSwkdCksQmUudG9wK05lLU90PD1wdCl7X2U9JHQ7YnJlYWt9fX1yZXR1cm4gX2V9fSx7a2V5OiJnZXRMYXN0VmlzaWJsZVJvdyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmRhdGFBY2Nlc3NPYmplY3Qsdj1oLnRvcE92ZXJsYXkseT1oLnd0VGFibGUsQz1oLnd0Vmll''@;'; put 'put ''d3BvcnQsST1oLnRvdGFsUm93cyxaPWgucm9vdFdpbmRvdyx1ZT15LmdldExhc3RWaXNpYmxlUm93KCk7aWYodi5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudD09PVope3ZhciBfZT1qdSh5Lnd0Um9vdEVsZW1lbnQpLEJlPUZaKFosWik7aWYoX2UudG9wPkJlKWZvcih2YXIgTmU9RXYoWiks''@;'; put 'put ''S2U9Qy5nZXRDb2x1bW5IZWFkZXJIZWlnaHQoKSxwdD0xO3B0PD1JO3B0KyspaWYoS2UrPXYuc3VtQ2VsbFNpemVzKHB0LTEscHQpLF9lLnRvcCtLZS1CZT49TmUpe3VlPXB0LTI7YnJlYWt9fXJldHVybiB1ZX19LHtrZXk6ImdldEZpcnN0VmlzaWJsZUNvbHVtbiIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgaD10aGlzLmRhdGFBY2Nlc3NPYmplY3Qsdj1oLmlubGluZVN0YXJ0T3ZlcmxheSx5PWgud3RUYWJsZSxDPWgud3RWaWV3cG9ydCxJPWgudG90YWxDb2x1bW5zLFo9aC5yb290V2luZG93LHVlPXkuZ2V0Rmlyc3RWaXNpYmxlQ29sdW1uKCk7aWYodi5tYWluVGFibGVTY3JvbGxhYmxl''@;'; put 'put ''RWxlbWVudD09PVope3ZhciBfZT1qdSh5Lnd0Um9vdEVsZW1lbnQpLEJlPU5aKHkuaGlkZXIpLE5lPU5aKFopLEtlPU1hdGguYWJzKHRlZShaLFopKTtpZihfZS5sZWZ0K0JlLU5lPD1LZSlmb3IodmFyIHB0PUMuZ2V0Um93SGVhZGVyV2lkdGgoKSxPdD1JO090PjA7T3QtLSlpZihwdCs9di5z''@;'; put 'put ''dW1DZWxsU2l6ZXMoT3QtMSxPdCksX2UubGVmdCtCZS1wdDw9S2Upe3VlPU90O2JyZWFrfX1yZXR1cm4gdWV9fSx7a2V5OiJnZXRMYXN0VmlzaWJsZUNvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmRhdGFBY2Nlc3NPYmplY3Qsdj1oLmlubGluZVN0YXJ0T3ZlcmxheSx5PWgu''@;'; put 'put ''d3RUYWJsZSxDPWgud3RWaWV3cG9ydCxJPWgudG90YWxDb2x1bW5zLFo9aC5yb290V2luZG93LHVlPXkuZ2V0TGFzdFZpc2libGVDb2x1bW4oKTtpZih2Lm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PT09Wil7dmFyIF9lPWp1KHkud3RSb290RWxlbWVudCksQmU9TWF0aC5hYnModGVlKFos''@;'; put 'put ''WikpO2lmKF9lLmxlZnQ+QmUpZm9yKHZhciBOZT1OWihaKSxLZT1DLmdldFJvd0hlYWRlcldpZHRoKCkscHQ9MTtwdDw9STtwdCsrKWlmKEtlKz12LnN1bUNlbGxTaXplcyhwdC0xLHB0KSxfZS5sZWZ0K0tlLUJlPj1OZSl7dWU9cHQtMjticmVha319cmV0dXJuIHVlfX1dKSxkfSgpO2NvbnN0''@;'; put 'put ''IHFXZT0kV2U7ZnVuY3Rpb24gZVllKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gckNlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5l''@;'; put 'put ''bnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gblllKGQsZyxoKXsoZnVuY3Rpb24gclllKGQsZyl7aWYoZy5oYXMoZCkpdGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKGQsZyksZy5zZXQoZCxoKX1mdW5jdGlvbiBpQ2UoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6''@;'; put 'put ''aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfWZ1bmN0aW9uIEpaKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIGlZZShkLGcpe3JldHVybiBnLmdldD9nLmdldC5jYWxsKGQpOmcudmFsdWV9KGQsb0NlKGQsZywiZ2V0IikpfWZ1bmN0aW9uIG9ZZShk''@;'; put 'put ''LGcsaCl7cmV0dXJuIGZ1bmN0aW9uIGFZZShkLGcsaCl7aWYoZy5zZXQpZy5zZXQuY2FsbChkLGgpO2Vsc2V7aWYoIWcud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2cudmFsdWU9aH19KGQsb0NlKGQsZywi''@;'; put 'put ''c2V0IiksaCksaH1mdW5jdGlvbiBvQ2UoZCxnLGgpe2lmKCFnLmhhcyhkKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIitoKyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZy5nZXQoZCl9dmFyIE9TPW5ldyBXZWFrTWFwLGxZZT1mdW5jdGlvbigp''@;'; put 'put ''e2Z1bmN0aW9uIGQoZyxoKXt2YXIgdj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO2VZZSh0aGlzLGQpLGlDZSh0aGlzLCJyb3ciLG51bGwpLGlDZSh0aGlzLCJjb2wiLG51bGwpLG5ZZSh0aGlzLE9TLHt3cml0YWJsZTohMCx2YWx1ZToh''@;'; put 'put ''MX0pLG9ZZSh0aGlzLE9TLHYpLHZvaWQgMCE9PWcmJnZvaWQgMCE9PWgmJih0aGlzLnJvdz1nLHRoaXMuY29sPWgpfXJldHVybiBmdW5jdGlvbiB0WWUoZCxnLGgpe2cmJnJDZShkLnByb3RvdHlwZSxnKSxoJiZyQ2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7''@;'; put 'put ''d3JpdGFibGU6ITF9KX0oZCxbe2tleToiaXNWYWxpZCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuISh0aGlzLnJvdzwwfHx0aGlzLmNvbDwwfHx0aGlzLnJvdz49aC5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKXx8dGhpcy5jb2w+PWguZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIikpfX0se2tl''@;'; put 'put ''eToiaXNFcXVhbCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIGg9PT10aGlzfHx0aGlzLnJvdz09PWgucm93JiZ0aGlzLmNvbD09PWguY29sfX0se2tleToiaXNTb3V0aEVhc3RPZiIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMucm93Pj1oLnJvdyYmKEpaKHRoaXMsT1MpP3RoaXMu''@;'; put 'put ''Y29sPD1oLmNvbDp0aGlzLmNvbD49aC5jb2wpfX0se2tleToiaXNOb3J0aFdlc3RPZiIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMucm93PD1oLnJvdyYmKEpaKHRoaXMsT1MpP3RoaXMuY29sPj1oLmNvbDp0aGlzLmNvbDw9aC5jb2wpfX0se2tleToiaXNTb3V0aFdlc3RPZiIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMucm93Pj1oLnJvdyYmKEpaKHRoaXMsT1MpP3RoaXMuY29sPj1oLmNvbDp0aGlzLmNvbDw9aC5jb2wpfX0se2tleToiaXNOb3J0aEVhc3RPZiIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMucm93PD1oLnJvdyYmKEpaKHRoaXMsT1MpP3Ro''@;'; put 'put ''aXMuY29sPD1oLmNvbDp0aGlzLmNvbD49aC5jb2wpfX0se2tleToibm9ybWFsaXplIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJvdz1udWxsPT09dGhpcy5yb3c/dGhpcy5yb3c6TWF0aC5tYXgodGhpcy5yb3csMCksdGhpcy5jb2w9bnVsbD09PXRoaXMuY29sP3RoaXMuY29sOk1h''@;'; put 'put ''dGgubWF4KHRoaXMuY29sLDApLHRoaXN9fSx7a2V5OiJjbG9uZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGQodGhpcy5yb3csdGhpcy5jb2wsSloodGhpcyxPUykpfX0se2tleToidG9PYmplY3QiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3Jvdzp0aGlzLnJvdyxjb2w6dGhpcy5j''@;'; put 'put ''b2x9fX1dKSxkfSgpO2NvbnN0IGZkZT1sWWU7ZnVuY3Rpb24gc1llKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gYUNlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDto''@;'; put 'put ''Kyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gY1llKGQsZyxoKXsoZnVuY3Rpb24gZlllKGQsZyl7''@;'; put 'put ''aWYoZy5oYXMoZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKGQsZyksZy5zZXQoZCxoKX1mdW5jdGlvbiBoZGUoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfWZ1bmN0aW9uIFRnKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIGhZZShkLGcpe3JldHVybiBnLmdldD9nLmdldC5jYWxsKGQpOmcudmFsdWV9KGQsbENlKGQsZywiZ2V0''@;'; put 'put ''IikpfWZ1bmN0aW9uIGRZZShkLGcsaCl7cmV0dXJuIGZ1bmN0aW9uIHBZZShkLGcsaCl7aWYoZy5zZXQpZy5zZXQuY2FsbChkLGgpO2Vsc2V7aWYoIWcud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2cudmFs''@;'; put 'put ''dWU9aH19KGQsbENlKGQsZywic2V0IiksaCksaH1mdW5jdGlvbiBsQ2UoZCxnLGgpe2lmKCFnLmhhcyhkKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIitoKyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZy5nZXQoZCl9dmFyIE9wPW5ldyBXZWFr''@;'; put 'put ''TWFwLGdZZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOmcsdj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06Zyx5PWFyZ3VtZW50''@;'; put 'put ''cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107c1llKHRoaXMsZCksaGRlKHRoaXMsImhpZ2hsaWdodCIsbnVsbCksaGRlKHRoaXMsImZyb20iLG51bGwpLGhkZSh0aGlzLCJ0byIsbnVsbCksY1llKHRoaXMsT3Ase3dyaXRhYmxlOiEwLHZhbHVlOiExfSks''@;'; put 'put ''dGhpcy5oaWdobGlnaHQ9Zy5jbG9uZSgpLm5vcm1hbGl6ZSgpLHRoaXMuZnJvbT1oLmNsb25lKCksdGhpcy50bz12LmNsb25lKCksZFllKHRoaXMsT3AseSl9cmV0dXJuIGZ1bmN0aW9uIHVZZShkLGcsaCl7ZyYmYUNlKGQucHJvdG90eXBlLGcpLGgmJmFDZShkLGgpLE9iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJzZXRIaWdobGlnaHQiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmhpZ2hsaWdodD1oLmNsb25lKCkubm9ybWFsaXplKCksdGhpc319LHtrZXk6InNldEZyb20iLHZhbHVlOmZ1bmN0aW9uKGgpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmZyb209aC5jbG9uZSgpLHRoaXN9fSx7a2V5OiJzZXRUbyIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMudG89aC5jbG9uZSgpLHRoaXN9fSx7a2V5OiJpc1ZhbGlkIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5mcm9tLmlzVmFsaWQoaCkmJnRoaXMudG8u''@;'; put 'put ''aXNWYWxpZChoKX19LHtrZXk6ImlzU2luZ2xlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZyb20ucm93Pj0wJiZ0aGlzLmZyb20ucm93PT09dGhpcy50by5yb3cmJnRoaXMuZnJvbS5jb2w+PTAmJnRoaXMuZnJvbS5jb2w9PT10aGlzLnRvLmNvbH19LHtrZXk6ImdldE91dGVySGVp''@;'; put 'put ''Z2h0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBNYXRoLm1heCh0aGlzLmZyb20ucm93LHRoaXMudG8ucm93KS1NYXRoLm1pbih0aGlzLmZyb20ucm93LHRoaXMudG8ucm93KSsxfX0se2tleToiZ2V0T3V0ZXJXaWR0aCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5m''@;'; put 'put ''cm9tLmNvbCx0aGlzLnRvLmNvbCktTWF0aC5taW4odGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCkrMX19LHtrZXk6ImdldEhlaWdodCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1NYXRoLm1heCh0aGlzLmZyb20ucm93LDApLHY9TWF0aC5tYXgodGhpcy50by5yb3csMCk7cmV0dXJuIE1hdGgu''@;'; put 'put ''bWF4KGgsdiktTWF0aC5taW4oaCx2KSsxfX0se2tleToiZ2V0V2lkdGgiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9TWF0aC5tYXgodGhpcy5mcm9tLmNvbCwwKSx2PU1hdGgubWF4KHRoaXMudG8uY29sLDApO3JldHVybiBNYXRoLm1heChoLHYpLU1hdGgubWluKGgsdikrMX19LHtrZXk6Imdl''@;'; put 'put ''dENlbGxzQ291bnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0V2lkdGgoKSp0aGlzLmdldEhlaWdodCgpfX0se2tleToiaW5jbHVkZXMiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PWgucm93LHk9aC5jb2wsQz10aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKSxJPXRoaXMu''@;'; put 'put ''Z2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKTtyZXR1cm4gQy5yb3c8PXYmJkkucm93Pj12JiZDLmNvbDw9eSYmSS5jb2w+PXl9fSx7a2V5OiJpbmNsdWRlc1JhbmdlIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5pbmNsdWRlcyhoLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKSkmJnRo''@;'; put 'put ''aXMuaW5jbHVkZXMoaC5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpKX19LHtrZXk6ImlzRXF1YWwiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBNYXRoLm1pbih0aGlzLmZyb20ucm93LHRoaXMudG8ucm93KT09PU1hdGgubWluKGguZnJvbS5yb3csaC50by5yb3cpJiZNYXRoLm1heCh0aGlz''@;'; put 'put ''LmZyb20ucm93LHRoaXMudG8ucm93KT09PU1hdGgubWF4KGguZnJvbS5yb3csaC50by5yb3cpJiZNYXRoLm1pbih0aGlzLmZyb20uY29sLHRoaXMudG8uY29sKT09PU1hdGgubWluKGguZnJvbS5jb2wsaC50by5jb2wpJiZNYXRoLm1heCh0aGlzLmZyb20uY29sLHRoaXMudG8uY29sKT09PU1h''@;'; put 'put ''dGgubWF4KGguZnJvbS5jb2wsaC50by5jb2wpfX0se2tleToib3ZlcmxhcHMiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBoLmlzU291dGhFYXN0T2YodGhpcy5nZXRPdXRlclRvcExlZnRDb3JuZXIoKSkmJmguaXNOb3J0aFdlc3RPZih0aGlzLmdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIo''@;'; put 'put ''KSl9fSx7a2V5OiJpc1NvdXRoRWFzdE9mIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5nZXRPdXRlclRvcExlZnRDb3JuZXIoKS5pc1NvdXRoRWFzdE9mKGgpfHx0aGlzLmdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIoKS5pc1NvdXRoRWFzdE9mKGgpfX0se2tleToiaXNOb3J0aFdl''@;'; put 'put ''c3RPZiIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuZ2V0T3V0ZXJUb3BMZWZ0Q29ybmVyKCkuaXNOb3J0aFdlc3RPZihoKXx8dGhpcy5nZXRPdXRlckJvdHRvbVJpZ2h0Q29ybmVyKCkuaXNOb3J0aFdlc3RPZihoKX19LHtrZXk6ImlzT3ZlcmxhcHBpbmdIb3Jpem9udGFsbHkiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmdldE91dGVyVG9wUmlnaHRDb3JuZXIoKS5jb2w+PWguZ2V0T3V0ZXJUb3BMZWZ0Q29ybmVyKCkuY29sJiZ0aGlzLmdldE91dGVyVG9wUmlnaHRDb3JuZXIoKS5jb2w8PWguZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpLmNvbHx8dGhpcy5nZXRP''@;'; put 'put ''dXRlclRvcExlZnRDb3JuZXIoKS5jb2w8PWguZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpLmNvbCYmdGhpcy5nZXRPdXRlclRvcExlZnRDb3JuZXIoKS5jb2w+PWguZ2V0T3V0ZXJUb3BMZWZ0Q29ybmVyKCkuY29sfX0se2tleToiaXNPdmVybGFwcGluZ1ZlcnRpY2FsbHkiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKGgpe3JldHVybiB0aGlzLmdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIoKS5yb3c+PWguZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpLnJvdyYmdGhpcy5nZXRPdXRlckJvdHRvbVJpZ2h0Q29ybmVyKCkucm93PD1oLmdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIoKS5yb3d8fHRoaXMuZ2V0''@;'; put 'put ''T3V0ZXJUb3BSaWdodENvcm5lcigpLnJvdzw9aC5nZXRPdXRlckJvdHRvbVJpZ2h0Q29ybmVyKCkucm93JiZ0aGlzLmdldE91dGVyVG9wUmlnaHRDb3JuZXIoKS5yb3c+PWguZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpLnJvd319LHtrZXk6ImV4cGFuZCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFy''@;'; put 'put ''IHY9dGhpcy5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCkseT10aGlzLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCk7cmV0dXJuKGgucm93PHYucm93fHxoLmNvbDx2LmNvbHx8aC5yb3c+eS5yb3d8fGguY29sPnkuY29sKSYmKHRoaXMuZnJvbT10aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1hdGgu''@;'; put 'put ''bWluKHYucm93LGgucm93KSxNYXRoLm1pbih2LmNvbCxoLmNvbCkpLHRoaXMudG89dGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhNYXRoLm1heCh5LnJvdyxoLnJvdyksTWF0aC5tYXgoeS5jb2wsaC5jb2wpKSwhMCl9fSx7a2V5OiJleHBhbmRCeVJhbmdlIix2YWx1ZTpmdW5jdGlvbihoKXtpZih0''@;'; put 'put ''aGlzLmluY2x1ZGVzUmFuZ2UoaCl8fCF0aGlzLm92ZXJsYXBzKGgpKXJldHVybiExO3ZhciB2PXRoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLHk9dGhpcy5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpLEM9dGhpcy5nZXREaXJlY3Rpb24oKSxJPWguZ2V0T3V0ZXJUb3BTdGFydENvcm5l''@;'; put 'put ''cigpLFo9aC5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpLHVlPU1hdGgubWluKHYucm93LEkucm93KSxfZT1NYXRoLm1pbih2LmNvbCxJLmNvbCksQmU9TWF0aC5tYXgoeS5yb3csWi5yb3cpLE5lPU1hdGgubWF4KHkuY29sLFouY29sKSxLZT10aGlzLl9jcmVhdGVDZWxsQ29vcmRzKHVlLF9l''@;'; put 'put ''KSxwdD10aGlzLl9jcmVhdGVDZWxsQ29vcmRzKEJlLE5lKTtyZXR1cm4gdGhpcy5mcm9tPUtlLHRoaXMudG89cHQsdGhpcy5zZXREaXJlY3Rpb24oQyksdGhpcy5oaWdobGlnaHQucm93PT09dGhpcy5nZXRPdXRlckJvdHRvbVJpZ2h0Q29ybmVyKCkucm93JiYiTi1TIj09PXRoaXMuZ2V0VmVy''@;'; put 'put ''dGljYWxEaXJlY3Rpb24oKSYmdGhpcy5mbGlwRGlyZWN0aW9uVmVydGljYWxseSgpLHRoaXMuaGlnaGxpZ2h0LmNvbD09PXRoaXMuZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpLmNvbCYmIlctRSI9PT10aGlzLmdldEhvcml6b250YWxEaXJlY3Rpb24oKSYmdGhpcy5mbGlwRGlyZWN0aW9uSG9y''@;'; put 'put ''aXpvbnRhbGx5KCksITB9fSx7a2V5OiJnZXREaXJlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZnJvbS5pc05vcnRoV2VzdE9mKHRoaXMudG8pPyJOVy1TRSI6dGhpcy5mcm9tLmlzTm9ydGhFYXN0T2YodGhpcy50byk/Ik5FLVNXIjp0aGlzLmZyb20uaXNTb3V0aEVhc3RP''@;'; put 'put ''Zih0aGlzLnRvKT8iU0UtTlciOnRoaXMuZnJvbS5pc1NvdXRoV2VzdE9mKHRoaXMudG8pPyJTVy1ORSI6dm9pZCAwfX0se2tleToic2V0RGlyZWN0aW9uIix2YWx1ZTpmdW5jdGlvbihoKXtzd2l0Y2goaCl7Y2FzZSJOVy1TRSI6dmFyIHY9W3RoaXMuZ2V0T3V0ZXJUb3BMZWZ0Q29ybmVyKCks''@;'; put 'put ''dGhpcy5nZXRPdXRlckJvdHRvbVJpZ2h0Q29ybmVyKCldO3RoaXMuZnJvbT12WzBdLHRoaXMudG89dlsxXTticmVhaztjYXNlIk5FLVNXIjp2YXIgeT1bdGhpcy5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCksdGhpcy5nZXRPdXRlckJvdHRvbUxlZnRDb3JuZXIoKV07dGhpcy5mcm9tPXlbMF0s''@;'; put 'put ''dGhpcy50bz15WzFdO2JyZWFrO2Nhc2UiU0UtTlciOnZhciBDPVt0aGlzLmdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIoKSx0aGlzLmdldE91dGVyVG9wTGVmdENvcm5lcigpXTt0aGlzLmZyb209Q1swXSx0aGlzLnRvPUNbMV07YnJlYWs7Y2FzZSJTVy1ORSI6dmFyIEk9W3RoaXMuZ2V0T3V0''@;'; put 'put ''ZXJCb3R0b21MZWZ0Q29ybmVyKCksdGhpcy5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCldO3RoaXMuZnJvbT1JWzBdLHRoaXMudG89SVsxXX19fSx7a2V5OiJnZXRWZXJ0aWNhbERpcmVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bIk5FLVNXIiwiTlctU0UiXS5pbmRleE9mKHRoaXMu''@;'; put 'put ''Z2V0RGlyZWN0aW9uKCkpPi0xPyJOLVMiOiJTLU4ifX0se2tleToiZ2V0SG9yaXpvbnRhbERpcmVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bIk5XLVNFIiwiU1ctTkUiXS5pbmRleE9mKHRoaXMuZ2V0RGlyZWN0aW9uKCkpPi0xPyJXLUUiOiJFLVcifX0se2tleToiZmxpcERpcmVj''@;'; put 'put ''dGlvblZlcnRpY2FsbHkiLHZhbHVlOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZ2V0RGlyZWN0aW9uKCkpe2Nhc2UiTlctU0UiOnRoaXMuc2V0RGlyZWN0aW9uKCJTVy1ORSIpO2JyZWFrO2Nhc2UiTkUtU1ciOnRoaXMuc2V0RGlyZWN0aW9uKCJTRS1OVyIpO2JyZWFrO2Nhc2UiU0UtTlciOnRo''@;'; put 'put ''aXMuc2V0RGlyZWN0aW9uKCJORS1TVyIpO2JyZWFrO2Nhc2UiU1ctTkUiOnRoaXMuc2V0RGlyZWN0aW9uKCJOVy1TRSIpfX19LHtrZXk6ImZsaXBEaXJlY3Rpb25Ib3Jpem9udGFsbHkiLHZhbHVlOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZ2V0RGlyZWN0aW9uKCkpe2Nhc2UiTlctU0UiOnRo''@;'; put 'put ''aXMuc2V0RGlyZWN0aW9uKCJORS1TVyIpO2JyZWFrO2Nhc2UiTkUtU1ciOnRoaXMuc2V0RGlyZWN0aW9uKCJOVy1TRSIpO2JyZWFrO2Nhc2UiU0UtTlciOnRoaXMuc2V0RGlyZWN0aW9uKCJTVy1ORSIpO2JyZWFrO2Nhc2UiU1ctTkUiOnRoaXMuc2V0RGlyZWN0aW9uKCJTRS1OVyIpfX19LHtr''@;'; put 'put ''ZXk6ImdldFRvcFN0YXJ0Q29ybmVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWluKHRoaXMuZnJvbS5yb3csdGhpcy50by5yb3cpLE1hdGgubWluKHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpKS5ub3JtYWxpemUoKX19LHtrZXk6Imdl''@;'; put 'put ''dFRvcExlZnRDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFRnKHRoaXMsT3ApP3RoaXMuZ2V0VG9wRW5kQ29ybmVyKCk6dGhpcy5nZXRUb3BTdGFydENvcm5lcigpfX0se2tleToiZ2V0Qm90dG9tRW5kQ29ybmVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jcmVhdGVD''@;'; put 'put ''ZWxsQ29vcmRzKE1hdGgubWF4KHRoaXMuZnJvbS5yb3csdGhpcy50by5yb3cpLE1hdGgubWF4KHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpKS5ub3JtYWxpemUoKX19LHtrZXk6ImdldEJvdHRvbVJpZ2h0Q29ybmVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBUZyh0aGlzLE9wKT90aGlz''@;'; put 'put ''LmdldEJvdHRvbVN0YXJ0Q29ybmVyKCk6dGhpcy5nZXRCb3R0b21FbmRDb3JuZXIoKX19LHtrZXk6ImdldFRvcEVuZENvcm5lciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhNYXRoLm1pbih0aGlzLmZyb20ucm93LHRoaXMudG8ucm93KSxNYXRoLm1h''@;'; put 'put ''eCh0aGlzLmZyb20uY29sLHRoaXMudG8uY29sKSkubm9ybWFsaXplKCl9fSx7a2V5OiJnZXRUb3BSaWdodENvcm5lciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gVGcodGhpcyxPcCk/dGhpcy5nZXRUb3BTdGFydENvcm5lcigpOnRoaXMuZ2V0VG9wRW5kQ29ybmVyKCl9fSx7a2V5OiJnZXRC''@;'; put 'put ''b3R0b21TdGFydENvcm5lciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhNYXRoLm1heCh0aGlzLmZyb20ucm93LHRoaXMudG8ucm93KSxNYXRoLm1pbih0aGlzLmZyb20uY29sLHRoaXMudG8uY29sKSkubm9ybWFsaXplKCl9fSx7a2V5OiJnZXRCb3R0''@;'; put 'put ''b21MZWZ0Q29ybmVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBUZyh0aGlzLE9wKT90aGlzLmdldEJvdHRvbUVuZENvcm5lcigpOnRoaXMuZ2V0Qm90dG9tU3RhcnRDb3JuZXIoKX19LHtrZXk6ImdldE91dGVyVG9wU3RhcnRDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''X2NyZWF0ZUNlbGxDb29yZHMoTWF0aC5taW4odGhpcy5mcm9tLnJvdyx0aGlzLnRvLnJvdyksTWF0aC5taW4odGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCkpfX0se2tleToiZ2V0T3V0ZXJUb3BMZWZ0Q29ybmVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBUZyh0aGlzLE9wKT90aGlzLmdl''@;'; put 'put ''dE91dGVyVG9wRW5kQ29ybmVyKCk6dGhpcy5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCl9fSx7a2V5OiJnZXRPdXRlckJvdHRvbUVuZENvcm5lciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhNYXRoLm1heCh0aGlzLmZyb20ucm93LHRoaXMudG8ucm93''@;'; put 'put ''KSxNYXRoLm1heCh0aGlzLmZyb20uY29sLHRoaXMudG8uY29sKSl9fSx7a2V5OiJnZXRPdXRlckJvdHRvbVJpZ2h0Q29ybmVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBUZyh0aGlzLE9wKT90aGlzLmdldE91dGVyQm90dG9tU3RhcnRDb3JuZXIoKTp0aGlzLmdldE91dGVyQm90dG9tRW5k''@;'; put 'put ''Q29ybmVyKCl9fSx7a2V5OiJnZXRPdXRlclRvcEVuZENvcm5lciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhNYXRoLm1pbih0aGlzLmZyb20ucm93LHRoaXMudG8ucm93KSxNYXRoLm1heCh0aGlzLmZyb20uY29sLHRoaXMudG8uY29sKSl9fSx7a2V5''@;'; put 'put ''OiJnZXRPdXRlclRvcFJpZ2h0Q29ybmVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBUZyh0aGlzLE9wKT90aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKTp0aGlzLmdldE91dGVyVG9wRW5kQ29ybmVyKCl9fSx7a2V5OiJnZXRPdXRlckJvdHRvbVN0YXJ0Q29ybmVyIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiB0aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWF4KHRoaXMuZnJvbS5yb3csdGhpcy50by5yb3cpLE1hdGgubWluKHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpKX19LHtrZXk6ImdldE91dGVyQm90dG9tTGVmdENvcm5lciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gVGcodGhpcyxPcCk/dGhpcy5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpOnRoaXMuZ2V0T3V0ZXJCb3R0b21TdGFydENvcm5lcigpfX0se2tleToiaXNDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuISEodiYmdi5pbmNsdWRlcyhoKSYmKHRoaXMuZ2V0T3V0ZXJUb3BMZWZ0''@;'; put 'put ''Q29ybmVyKCkuaXNFcXVhbCh0aGlzLl9jcmVhdGVDZWxsQ29vcmRzKHYuZnJvbS5yb3csdi5mcm9tLmNvbCkpfHx0aGlzLmdldE91dGVyVG9wUmlnaHRDb3JuZXIoKS5pc0VxdWFsKHRoaXMuX2NyZWF0ZUNlbGxDb29yZHModi5mcm9tLnJvdyx2LnRvLmNvbCkpfHx0aGlzLmdldE91dGVyQm90''@;'; put 'put ''dG9tTGVmdENvcm5lcigpLmlzRXF1YWwodGhpcy5fY3JlYXRlQ2VsbENvb3Jkcyh2LnRvLnJvdyx2LmZyb20uY29sKSl8fHRoaXMuZ2V0T3V0ZXJCb3R0b21SaWdodENvcm5lcigpLmlzRXF1YWwodGhpcy5fY3JlYXRlQ2VsbENvb3Jkcyh2LnRvLnJvdyx2LnRvLmNvbCkpKSl8fGguaXNFcXVh''@;'; put 'put ''bCh0aGlzLmdldE91dGVyVG9wTGVmdENvcm5lcigpKXx8aC5pc0VxdWFsKHRoaXMuZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpKXx8aC5pc0VxdWFsKHRoaXMuZ2V0T3V0ZXJCb3R0b21MZWZ0Q29ybmVyKCkpfHxoLmlzRXF1YWwodGhpcy5nZXRPdXRlckJvdHRvbVJpZ2h0Q29ybmVyKCkpfX0s''@;'; put 'put ''e2tleToiZ2V0T3Bwb3NpdGVDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKGgsdil7aWYoIShoIGluc3RhbmNlb2YgZmRlKSlyZXR1cm4hMTtpZih2KXt2YXIgeT12LmZyb20sQz12LnRvO2lmKHYuaW5jbHVkZXMoaCkpe2lmKHRoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLmlzRXF1YWwodGhp''@;'; put 'put ''cy5fY3JlYXRlQ2VsbENvb3Jkcyh5LnJvdyx5LmNvbCkpKXJldHVybiB0aGlzLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCk7aWYodGhpcy5nZXRPdXRlclRvcEVuZENvcm5lcigpLmlzRXF1YWwodGhpcy5fY3JlYXRlQ2VsbENvb3Jkcyh5LnJvdyxDLmNvbCkpKXJldHVybiB0aGlzLmdldE91''@;'; put 'put ''dGVyQm90dG9tU3RhcnRDb3JuZXIoKTtpZih0aGlzLmdldE91dGVyQm90dG9tU3RhcnRDb3JuZXIoKS5pc0VxdWFsKHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoQy5yb3cseS5jb2wpKSlyZXR1cm4gdGhpcy5nZXRPdXRlclRvcEVuZENvcm5lcigpO2lmKHRoaXMuZ2V0T3V0ZXJCb3R0b21FbmRD''@;'; put 'put ''b3JuZXIoKS5pc0VxdWFsKHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoQy5yb3csQy5jb2wpKSlyZXR1cm4gdGhpcy5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCl9fXJldHVybiBoLmlzRXF1YWwodGhpcy5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpKT90aGlzLmdldE91dGVyVG9wU3RhcnRDb3Ju''@;'; put 'put ''ZXIoKTpoLmlzRXF1YWwodGhpcy5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCkpP3RoaXMuZ2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKTpoLmlzRXF1YWwodGhpcy5nZXRPdXRlclRvcEVuZENvcm5lcigpKT90aGlzLmdldE91dGVyQm90dG9tU3RhcnRDb3JuZXIoKTpoLmlzRXF1YWwodGhpcy5n''@;'; put 'put ''ZXRPdXRlckJvdHRvbVN0YXJ0Q29ybmVyKCkpP3RoaXMuZ2V0T3V0ZXJUb3BFbmRDb3JuZXIoKTp2b2lkIDB9fSx7a2V5OiJnZXRCb3JkZXJzU2hhcmVkV2l0aCIsdmFsdWU6ZnVuY3Rpb24oaCl7aWYoIXRoaXMuaW5jbHVkZXNSYW5nZShoKSlyZXR1cm5bXTt2YXIgdl90b3A9TWF0aC5taW4o''@;'; put 'put ''dGhpcy5mcm9tLnJvdyx0aGlzLnRvLnJvdyksdl9ib3R0b209TWF0aC5tYXgodGhpcy5mcm9tLnJvdyx0aGlzLnRvLnJvdyksdl9sZWZ0PU1hdGgubWluKHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpLHZfcmlnaHQ9TWF0aC5tYXgodGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCkseV90b3A9''@;'; put 'put ''TWF0aC5taW4oaC5mcm9tLnJvdyxoLnRvLnJvdykseV9ib3R0b209TWF0aC5tYXgoaC5mcm9tLnJvdyxoLnRvLnJvdykseV9sZWZ0PU1hdGgubWluKGguZnJvbS5jb2wsaC50by5jb2wpLHlfcmlnaHQ9TWF0aC5tYXgoaC5mcm9tLmNvbCxoLnRvLmNvbCksQz1bXTtyZXR1cm4gdl90b3A9PT15''@;'; put 'put ''X3RvcCYmQy5wdXNoKCJ0b3AiKSx2X3JpZ2h0PT09eV9yaWdodCYmQy5wdXNoKCJyaWdodCIpLHZfYm90dG9tPT09eV9ib3R0b20mJkMucHVzaCgiYm90dG9tIiksdl9sZWZ0PT09eV9sZWZ0JiZDLnB1c2goImxlZnQiKSxDfX0se2tleToiZ2V0SW5uZXIiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9y''@;'; put 'put ''KHZhciBoPXRoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLHY9dGhpcy5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpLHk9W10sQz1oLnJvdztDPD12LnJvdztDKyspZm9yKHZhciBJPWguY29sO0k8PXYuY29sO0krKykodGhpcy5mcm9tLnJvdyE9PUN8fHRoaXMuZnJvbS5jb2whPT1JKSYm''@;'; put 'put ''KHRoaXMudG8ucm93IT09Q3x8dGhpcy50by5jb2whPT1JKSYmeS5wdXNoKHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoQyxJKSk7cmV0dXJuIHl9fSx7a2V5OiJnZXRBbGwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBoPXRoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLHY9dGhpcy5nZXRP''@;'; put 'put ''dXRlckJvdHRvbUVuZENvcm5lcigpLHk9W10sQz1oLnJvdztDPD12LnJvdztDKyspZm9yKHZhciBJPWguY29sO0k8PXYuY29sO0krKyl5LnB1c2goaC5yb3c9PT1DJiZoLmNvbD09PUk/aDp2LnJvdz09PUMmJnYuY29sPT09ST92OnRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoQyxJKSk7cmV0dXJu''@;'; put 'put ''IHl9fSx7a2V5OiJmb3JBbGwiLHZhbHVlOmZ1bmN0aW9uKGgpe2Zvcih2YXIgdj10aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKSx5PXRoaXMuZ2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKSxDPXYucm93O0M8PXkucm93O0MrKylmb3IodmFyIEk9di5jb2w7STw9eS5jb2w7SSsrKWlmKCEx''@;'; put 'put ''PT09aChDLEkpKXJldHVybn19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuZXcgZCh0aGlzLmhpZ2hsaWdodCx0aGlzLmZyb20sdGhpcy50byxUZyh0aGlzLE9wKSl9fSx7a2V5OiJ0b09iamVjdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57ZnJvbTp0aGlzLmZyb20u''@;'; put 'put ''dG9PYmplY3QoKSx0bzp0aGlzLnRvLnRvT2JqZWN0KCl9fX0se2tleToiX2NyZWF0ZUNlbGxDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuIG5ldyBmZGUoaCx2LFRnKHRoaXMsT3ApKX19XSksZH0oKTtjb25zdCBzQ2U9Z1llO2Z1bmN0aW9uIHVDZShkLGcpe2Zvcih2YXIgaD0w''@;'; put 'put ''O2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIEM4KGQsZyxoKXtyZXR1cm4g''@;'; put 'put ''ZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgsZH12YXIgZGRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnLGgpeyhmdW5jdGlvbiBtWWUoZCxnKXtpZighKGQgaW5zdGFuY2Vv''@;'; put 'put ''ZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksQzgodGhpcywid3RUYWJsZSIsdm9pZCAwKSxDOCh0aGlzLCJ3dFNjcm9sbCIsdm9pZCAwKSxDOCh0aGlzLCJ3dFZpZXdwb3J0Iix2b2lkIDApLEM4KHRoaXMsInd0''@;'; put 'put ''T3ZlcmxheXMiLHZvaWQgMCksQzgodGhpcywic2VsZWN0aW9ucyIsdm9pZCAwKSxDOCh0aGlzLCJ3dEV2ZW50Iix2b2lkIDApLEM4KHRoaXMsImd1aWQiLCJ3dF8iLmNvbmNhdChpM2UoKSkpLEM4KHRoaXMsImRyYXdJbnRlcnJ1cHRlZCIsITEpLEM4KHRoaXMsImRyYXduIiwhMSksQzgodGhp''@;'; put 'put ''cywiZG9tQmluZGluZ3MiLHZvaWQgMCksQzgodGhpcywid3RTZXR0aW5ncyIsdm9pZCAwKSx0aGlzLmRvbUJpbmRpbmdzPXtyb290VGFibGU6Zyxyb290RG9jdW1lbnQ6Zy5vd25lckRvY3VtZW50LHJvb3RXaW5kb3c6Zy5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fSx0aGlzLnd0U2V0dGlu''@;'; put 'put ''Z3M9aCx0aGlzLnd0U2Nyb2xsPW5ldyBxV2UodGhpcy5jcmVhdGVTY3JvbGxEYW8oKSl9cmV0dXJuIGZ1bmN0aW9uIHZZZShkLGcsaCl7ZyYmdUNlKGQucHJvdG90eXBlLGcpLGgmJnVDZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShk''@;'; put 'put ''LFt7a2V5OiJldmVudE1hbmFnZXIiLGdldDpmdW5jdGlvbigpe3JldHVybiBuZXcgTDEodGhpcyl9fSx7a2V5OiJmaW5kT3JpZ2luYWxIZWFkZXJzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPVtdO2lmKHRoaXMud3RUYWJsZS5USEVBRC5jaGlsZE5vZGVzLmxlbmd0aCYmdGhpcy53dFRhYmxl''@;'; put 'put ''LlRIRUFELmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlcy5sZW5ndGgpe2Zvcih2YXIgdj0wLHk9dGhpcy53dFRhYmxlLlRIRUFELmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlcy5sZW5ndGg7djx5O3YrKyloLnB1c2godGhpcy53dFRhYmxlLlRIRUFELmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1t2''@;'; put 'put ''XS5pbm5lckhUTUwpO3RoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIikubGVuZ3RofHx0aGlzLnd0U2V0dGluZ3MudXBkYXRlKCJjb2x1bW5IZWFkZXJzIixbZnVuY3Rpb24oQyxJKXtTdyhJLGhbQ10pfV0pfX19LHtrZXk6ImNyZWF0ZUNlbGxDb29yZHMiLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKGgsdil7cmV0dXJuIG5ldyBmZGUoaCx2LHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJydGxNb2RlIikpfX0se2tleToiY3JlYXRlQ2VsbFJhbmdlIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7cmV0dXJuIG5ldyBzQ2UoaCx2LHksdGhpcy53dFNldHRpbmdzLmdldFNldHRp''@;'; put 'put ''bmcoInJ0bE1vZGUiKSl9fSx7a2V5OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07cmV0dXJuIHRoaXMuZHJhd0ludGVycnVwdGVkPSExLGh8fHRoaXMud3RUYWJsZS5pc1Zpc2libGUo''@;'; put 'put ''KT90aGlzLnd0VGFibGUuZHJhdyhoKTp0aGlzLmRyYXdJbnRlcnJ1cHRlZD0hMCx0aGlzfX0se2tleToiZ2V0Q2VsbCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtpZighdilyZXR1cm4gdGhp''@;'; put 'put ''cy53dFRhYmxlLmdldENlbGwoaCk7dmFyIHk9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpLEM9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c1RvcCIpLEk9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpLFo9dGhp''@;'; put 'put ''cy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0Iik7aWYoaC5yb3c8QyYmaC5jb2w8WilyZXR1cm4gdGhpcy53dE92ZXJsYXlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5jbG9uZS53dFRhYmxlLmdldENlbGwoaCk7aWYoaC5yb3c8QylyZXR1cm4gdGhpcy53''@;'; put 'put ''dE92ZXJsYXlzLnRvcE92ZXJsYXkuY2xvbmUud3RUYWJsZS5nZXRDZWxsKGgpO2lmKGguY29sPFomJmgucm93Pj15LUkpe2lmKHRoaXMud3RPdmVybGF5cy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJnRoaXMud3RPdmVybGF5cy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJs''@;'; put 'put ''YXkuY2xvbmUpcmV0dXJuIHRoaXMud3RPdmVybGF5cy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkuY2xvbmUud3RUYWJsZS5nZXRDZWxsKGgpfWVsc2V7aWYoaC5jb2w8WilyZXR1cm4gdGhpcy53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5jbG9uZS53dFRhYmxlLmdldENl''@;'; put 'put ''bGwoaCk7aWYoaC5yb3c8eSYmaC5yb3c+PXktSSYmdGhpcy53dE92ZXJsYXlzLmJvdHRvbU92ZXJsYXkmJnRoaXMud3RPdmVybGF5cy5ib3R0b21PdmVybGF5LmNsb25lKXJldHVybiB0aGlzLnd0T3ZlcmxheXMuYm90dG9tT3ZlcmxheS5jbG9uZS53dFRhYmxlLmdldENlbGwoaCl9cmV0dXJu''@;'; put 'put ''IHRoaXMud3RUYWJsZS5nZXRDZWxsKGgpfX0se2tleToic2Nyb2xsVmlld3BvcnQiLHZhbHVlOmZ1bmN0aW9uKGgsdix5LEMsSSl7cmV0dXJuIShoLmNvbDwwfHxoLnJvdzwwKSYmdGhpcy53dFNjcm9sbC5zY3JvbGxWaWV3cG9ydChoLHYseSxDLEkpfX0se2tleToic2Nyb2xsVmlld3BvcnRI''@;'; put 'put ''b3Jpem9udGFsbHkiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXtyZXR1cm4hKGg8MCkmJnRoaXMud3RTY3JvbGwuc2Nyb2xsVmlld3BvcnRIb3Jpem9udGFsbHkoaCx2LHkpfX0se2tleToic2Nyb2xsVmlld3BvcnRWZXJ0aWNhbGx5Iix2YWx1ZTpmdW5jdGlvbihoLHYseSl7cmV0dXJuIShoPDAp''@;'; put 'put ''JiZ0aGlzLnd0U2Nyb2xsLnNjcm9sbFZpZXdwb3J0VmVydGljYWxseShoLHYseSl9fSx7a2V5OiJnZXRWaWV3cG9ydCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bdGhpcy53dFRhYmxlLmdldEZpcnN0VmlzaWJsZVJvdygpLHRoaXMud3RUYWJsZS5nZXRGaXJzdFZpc2libGVDb2x1bW4oKSx0''@;'; put 'put ''aGlzLnd0VGFibGUuZ2V0TGFzdFZpc2libGVSb3coKSx0aGlzLnd0VGFibGUuZ2V0TGFzdFZpc2libGVDb2x1bW4oKV19fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMud3RPdmVybGF5cy5kZXN0cm95KCksdGhpcy53dEV2ZW50LmRlc3Ryb3koKX19LHtrZXk6ImNyZWF0''@;'; put 'put ''ZVNjcm9sbERhbyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzO3JldHVybntnZXQgZHJhd24oKXtyZXR1cm4gaC5kcmF3bn0sZ2V0IHRvcE92ZXJsYXkoKXtyZXR1cm4gaC53dE92ZXJsYXlzLnRvcE92ZXJsYXl9LGdldCBpbmxpbmVTdGFydE92ZXJsYXkoKXtyZXR1cm4gaC53dE92ZXJs''@;'; put 'put ''YXlzLmlubGluZVN0YXJ0T3ZlcmxheX0sZ2V0IHd0VGFibGUoKXtyZXR1cm4gaC53dFRhYmxlfSxnZXQgd3RWaWV3cG9ydCgpe3JldHVybiBoLnd0Vmlld3BvcnR9LGdldCByb290V2luZG93KCl7cmV0dXJuIGguZG9tQmluZGluZ3Mucm9vdFdpbmRvd30sZ2V0IHRvdGFsUm93cygpe3JldHVy''@;'; put 'put ''biBoLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIil9LGdldCB0b3RhbENvbHVtbnMoKXtyZXR1cm4gaC53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpfSxnZXQgZml4ZWRSb3dzVG9wKCl7cmV0dXJuIGgud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJv''@;'; put 'put ''d3NUb3AiKX0sZ2V0IGZpeGVkUm93c0JvdHRvbSgpe3JldHVybiBoLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIil9LGdldCBmaXhlZENvbHVtbnNTdGFydCgpe3JldHVybiBoLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRDb2x1bW5zU3RhcnQiKX19fX0se2tl''@;'; put 'put ''eToiZ2V0VGFibGVEYW8iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcztyZXR1cm57Z2V0IHdvdCgpe3JldHVybiBofSxnZXQgcGFyZW50VGFibGVPZmZzZXQoKXtyZXR1cm4gaC5jbG9uZVNvdXJjZS53dFRhYmxlLnRhYmxlT2Zmc2V0fSxnZXQgY2xvbmVTb3VyY2UoKXtyZXR1cm4gaC5j''@;'; put 'put ''bG9uZVNvdXJjZX0sZ2V0IHdvcmtzcGFjZVdpZHRoKCl7cmV0dXJuIGgud3RWaWV3cG9ydC5nZXRXb3Jrc3BhY2VXaWR0aCgpfSxnZXQgd3RWaWV3cG9ydCgpe3JldHVybiBoLnd0Vmlld3BvcnR9LGdldCB3dE92ZXJsYXlzKCl7cmV0dXJuIGgud3RPdmVybGF5c30sZ2V0IHNlbGVjdGlvbnMo''@;'; put 'put ''KXtyZXR1cm4gaC5zZWxlY3Rpb25zfSxnZXQgZHJhd24oKXtyZXR1cm4gaC5kcmF3bn0sc2V0IGRyYXduKHYpe2guZHJhd249dn0sZ2V0IHd0VGFibGUoKXtyZXR1cm4gaC53dFRhYmxlfSxnZXQgc3RhcnRDb2x1bW5SZW5kZXJlZCgpe3JldHVybiBoLnd0Vmlld3BvcnQuY29sdW1uc1JlbmRl''@;'; put 'put ''ckNhbGN1bGF0b3Iuc3RhcnRDb2x1bW59LGdldCBzdGFydENvbHVtblZpc2libGUoKXtyZXR1cm4gaC53dFZpZXdwb3J0LmNvbHVtbnNWaXNpYmxlQ2FsY3VsYXRvci5zdGFydENvbHVtbn0sZ2V0IGVuZENvbHVtblJlbmRlcmVkKCl7cmV0dXJuIGgud3RWaWV3cG9ydC5jb2x1bW5zUmVuZGVy''@;'; put 'put ''Q2FsY3VsYXRvci5lbmRDb2x1bW59LGdldCBlbmRDb2x1bW5WaXNpYmxlKCl7cmV0dXJuIGgud3RWaWV3cG9ydC5jb2x1bW5zVmlzaWJsZUNhbGN1bGF0b3IuZW5kQ29sdW1ufSxnZXQgY291bnRDb2x1bW5zUmVuZGVyZWQoKXtyZXR1cm4gaC53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxj''@;'; put 'put ''dWxhdG9yLmNvdW50fSxnZXQgY291bnRDb2x1bW5zVmlzaWJsZSgpe3JldHVybiBoLnd0Vmlld3BvcnQuY29sdW1uc1Zpc2libGVDYWxjdWxhdG9yLmNvdW50fSxnZXQgc3RhcnRSb3dSZW5kZXJlZCgpe3JldHVybiBoLnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRSb3d9''@;'; put 'put ''LGdldCBzdGFydFJvd1Zpc2libGUoKXtyZXR1cm4gaC53dFZpZXdwb3J0LnJvd3NWaXNpYmxlQ2FsY3VsYXRvci5zdGFydFJvd30sZ2V0IGVuZFJvd1JlbmRlcmVkKCl7cmV0dXJuIGgud3RWaWV3cG9ydC5yb3dzUmVuZGVyQ2FsY3VsYXRvci5lbmRSb3d9LGdldCBlbmRSb3dWaXNpYmxlKCl7''@;'; put 'put ''cmV0dXJuIGgud3RWaWV3cG9ydC5yb3dzVmlzaWJsZUNhbGN1bGF0b3IuZW5kUm93fSxnZXQgY291bnRSb3dzUmVuZGVyZWQoKXtyZXR1cm4gaC53dFZpZXdwb3J0LnJvd3NSZW5kZXJDYWxjdWxhdG9yLmNvdW50fSxnZXQgY291bnRSb3dzVmlzaWJsZSgpe3JldHVybiBoLnd0Vmlld3BvcnQu''@;'; put 'put ''cm93c1Zpc2libGVDYWxjdWxhdG9yLmNvdW50fX19fV0pLGR9KCk7ZnVuY3Rpb24gcGRlKGQpe3JldHVybihwZGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihn''@;'; put 'put ''KXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBjQ2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2''@;'; put 'put ''LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBnZGUoZCxnKXtyZXR1cm4oZ2RlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmpl''@;'; put 'put ''Y3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gX1llKGQsZyl7aWYoZyYmKCJvYmplY3QiPT09cGRlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiB5ZWUoZCl9ZnVuY3Rpb24geWVlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRp''@;'; put 'put ''YWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiB3ZWUoZCl7cmV0dXJuKHdlZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5n''@;'; put 'put ''ZXRQcm90b3R5cGVPZihoKX0pKGQpfWZ1bmN0aW9uIGZDZShkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9dmFyIGtZZT1mdW5jdGlvbihkKXsh''@;'; put 'put ''ZnVuY3Rpb24gd1llKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlw''@;'; put 'put ''ZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJmdkZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIGJZZShkKXt2YXIgZz1mdW5jdGlvbiBDWWUo''@;'; put 'put ''KXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwo''@;'; put 'put ''UmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj13ZWUoZCk7aWYoZyl7dmFyIEM9d2VlKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVu''@;'; put 'put ''dHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBfWWUodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5LEMpe3ZhciBJOyhmdW5jdGlvbiB5WWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNz''@;'; put 'put ''IGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsaCksZkNlKHllZShJPWcuY2FsbCh0aGlzLHYseSkpLCJjbG9uZVNvdXJjZSIsdm9pZCAwKSxmQ2UoeWVlKEkpLCJjbG9uZU92ZXJsYXkiLHZvaWQgMCk7dmFyIFo9SS53dFNldHRpbmdzLmdldFNldHRpbmcoImZhY2FkZSIseWVlKEkpKTtyZXR1cm4g''@;'; put 'put ''SS5jbG9uZVNvdXJjZT1DLnNvdXJjZSxJLmNsb25lT3ZlcmxheT1DLm92ZXJsYXksSS53dFRhYmxlPUkuY2xvbmVPdmVybGF5LmNyZWF0ZVRhYmxlKEkuZ2V0VGFibGVEYW8oKSxaLEkuZG9tQmluZGluZ3MsSS53dFNldHRpbmdzKSxJLnd0Vmlld3BvcnQ9Qy52aWV3cG9ydCxJLnNlbGVjdGlv''@;'; put 'put ''bnM9Qy5zZWxlY3Rpb25zLEkud3RFdmVudD1uZXcgRV9lKFosSS5kb21CaW5kaW5ncyxJLnd0U2V0dGluZ3MsSS5ldmVudE1hbmFnZXIsSS53dFRhYmxlLEkuc2VsZWN0aW9ucyxDLmV2ZW50KSxJLmZpbmRPcmlnaW5hbEhlYWRlcnMoKSxJfXJldHVybiBmdW5jdGlvbiBBWWUoZCxnLGgpe3Jl''@;'; put 'put ''dHVybiBnJiZjQ2UoZC5wcm90b3R5cGUsZyksaCYmY0NlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZH0oaCl9KGRkZSk7ZnVuY3Rpb24gaENlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVt''@;'; put 'put ''ZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIFhaPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnLGgsdix5LEMpeyhmdW5jdGlvbiBTWWUoZCxnKXtp''@;'; put 'put ''ZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksZnVuY3Rpb24gRVllKGQsZyxoKXtnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNv''@;'; put 'put ''bmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aH0odGhpcywid3RTZXR0aW5ncyIsbnVsbCksU2codGhpcywid290IixnLHt3cml0YWJsZTohMX0pLHRoaXMuZG9tQmluZGluZ3M9Qyx0aGlzLmZhY2FkZUdldHRlcj1oLHRoaXMud3RTZXR0aW5ncz15O3ZhciBJPXRoaXMud290Lnd0''@;'; put 'put ''VGFibGUsWj1JLlRBQkxFLHVlPUkuaGlkZXIsX2U9SS5zcHJlYWRlcixCZT1JLmhvbGRlcixOZT1JLnd0Um9vdEVsZW1lbnQ7dGhpcy5pbnN0YW5jZT10aGlzLndvdCx0aGlzLnR5cGU9dix0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PW51bGwsdGhpcy5UQUJMRT1aLHRoaXMuaGlk''@;'; put 'put ''ZXI9dWUsdGhpcy5zcHJlYWRlcj1fZSx0aGlzLmhvbGRlcj1CZSx0aGlzLnd0Um9vdEVsZW1lbnQ9TmUsdGhpcy50cmltbWluZ0NvbnRhaW5lcj1oTyh0aGlzLmhpZGVyLnBhcmVudE5vZGUucGFyZW50Tm9kZSksdGhpcy51cGRhdGVTdGF0ZU9mUmVuZGVyaW5nKCksdGhpcy5jbG9uZT10aGlz''@;'; put 'put ''Lm1ha2VDbG9uZSgpfXJldHVybiBmdW5jdGlvbiBNWWUoZCxnLGgpe2cmJmhDZShkLnByb3RvdHlwZSxnKSxoJiZoQ2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToidXBkYXRlU3RhdGVPZlJlbmRlcmluZyIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgaD10aGlzLm5lZWRGdWxsUmVuZGVyO3RoaXMubmVlZEZ1bGxSZW5kZXI9dGhpcy5zaG91bGRCZVJlbmRlcmVkKCk7dmFyIHY9aCE9PXRoaXMubmVlZEZ1bGxSZW5kZXI7cmV0dXJuIHYmJiF0aGlzLm5lZWRGdWxsUmVuZGVyJiZ0aGlzLnJlc2V0KCksdn19LHtrZXk6''@;'; put 'put ''InNob3VsZEJlUmVuZGVyZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5OiJ1cGRhdGVUcmltbWluZ0NvbnRhaW5lciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnRyaW1taW5nQ29udGFpbmVyPWhPKHRoaXMuaGlkZXIucGFyZW50Tm9kZS5wYXJlbnROb2RlKX19LHtrZXk6InVw''@;'; put 'put ''ZGF0ZU1haW5TY3JvbGxhYmxlRWxlbWVudCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLndvdC53dFRhYmxlO3RoaXMubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQ9ImhpZGRlbiI9PT10aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShoLnd0Um9vdEVs''@;'; put 'put ''ZW1lbnQucGFyZW50Tm9kZSkuZ2V0UHJvcGVydHlWYWx1ZSgib3ZlcmZsb3ciKT90aGlzLndvdC53dFRhYmxlLmhvbGRlcjpIWihoLlRBQkxFKX19LHtrZXk6ImdldFJlbGF0aXZlQ2VsbFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7aWYoITEhPT10aGlzLmNsb25lLnd0VGFibGUu''@;'; put 'put ''aG9sZGVyLmNvbnRhaW5zKGgpKXt2YXIgQz10aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PT09dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LEk9eTx0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRDb2x1bW5zU3RhcnQiKSxaPXY8dGhpcy53dFNldHRpbmdzLmdldFNl''@;'; put 'put ''dHRpbmcoImZpeGVkUm93c1RvcCIpLHVlPXY+PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKS10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIiksX2U9dGhpcy5jbG9uZS53dFRhYmxlLnNwcmVhZGVyLEJlPXtzdGFydDp0aGlzLmdldFJl''@;'; put 'put ''bGF0aXZlU3RhcnRQb3NpdGlvbihfZSksdG9wOl9lLm9mZnNldFRvcH0sTmU9e3N0YXJ0OnRoaXMuZ2V0UmVsYXRpdmVTdGFydFBvc2l0aW9uKGgpLHRvcDpoLm9mZnNldFRvcH07cmV0dXJuIEM/dGhpcy5nZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbldpdGhpbldpbmRvdyhaLEksTmUsQmUpOnRo''@;'; put 'put ''aXMuZ2V0UmVsYXRpdmVDZWxsUG9zaXRpb25XaXRoaW5Ib2xkZXIoWix1ZSxJLE5lLEJlKX1sMSgiVGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgbm90IGEgY2hpbGQgb2YgdGhlICIuY29uY2F0KHRoaXMudHlwZSwiIG92ZXJsYXkiKSl9fSx7a2V5OiJnZXRSZWxhdGl2ZVN0YXJ0UG9zaXRpb24i''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmlzUnRsKCk/aC5vZmZzZXRQYXJlbnQub2Zmc2V0V2lkdGgtaC5vZmZzZXRMZWZ0LWgub2Zmc2V0V2lkdGg6aC5vZmZzZXRMZWZ0fX0se2tleToiZ2V0UmVsYXRpdmVDZWxsUG9zaXRpb25XaXRoaW5XaW5kb3ciLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KGgsdix5LEMpe3ZhciBJPXRoaXMud290Lnd0VGFibGUud3RSb290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxaPTAsdWU9MDtpZih2KXt2YXIgX2U9SS5sZWZ0O3RoaXMuaXNSdGwoKSYmKF9lPXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdy5pbm5lcldpZHRoLShJLmxlZnQr''@;'; put 'put ''SS53aWR0aCtCYygpKSksWj1fZTw9MD8tMSpfZTowfWVsc2UgWj1DLnN0YXJ0O3JldHVybiB1ZT1oP3RoaXMuY2xvbmUud3RUYWJsZS5UQUJMRS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AtSS50b3A6Qy50b3Ase3N0YXJ0Onkuc3RhcnQrWix0b3A6eS50b3ArdWV9fX0se2tleToiZ2V0''@;'; put 'put ''UmVsYXRpdmVDZWxsUG9zaXRpb25XaXRoaW5Ib2xkZXIiLHZhbHVlOmZ1bmN0aW9uKGgsdix5LEMsSSl7dmFyIFpfaG9yaXpvbnRhbD10aGlzLndvdC53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRTY3JvbGxQb3NpdGlvbigpLFpfdmVydGljYWw9dGhpcy53b3Qud3RPdmVybGF5''@;'; put 'put ''cy50b3BPdmVybGF5LmdldFNjcm9sbFBvc2l0aW9uKCksdWU9MCxfZT0wO2lmKHl8fCh1ZT1aX2hvcml6b250YWwtSS5zdGFydCksdil7dmFyIEJlPXRoaXMud290Lnd0VGFibGUud3RSb290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtfZT0tMSp0aGlzLmNsb25lLnd0VGFibGUu''@;'; put 'put ''VEFCTEUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wK0JlLnRvcH1lbHNlIGh8fChfZT1aX3ZlcnRpY2FsLUkudG9wKTtyZXR1cm57c3RhcnQ6Qy5zdGFydC11ZSx0b3A6Qy50b3AtX2V9fX0se2tleToibWFrZUNsb25lIix2YWx1ZTpmdW5jdGlvbigpe2lmKC0xPT09RVdlLmluZGV4T2Yo''@;'; put 'put ''dGhpcy50eXBlKSl0aHJvdyBuZXcgRXJyb3IoJ0Nsb25lIHR5cGUgIicuY29uY2F0KHRoaXMudHlwZSwnIiBpcyBub3Qgc3VwcG9ydGVkLicpKTt2YXIgaD10aGlzLndvdC53dFRhYmxlLHY9dGhpcy5kb21CaW5kaW5ncyx5PXYucm9vdERvY3VtZW50LEM9di5yb290V2luZG93LEk9eS5jcmVh''@;'; put 'put ''dGVFbGVtZW50KCJESVYiKSxaPXkuY3JlYXRlRWxlbWVudCgiVEFCTEUiKSx1ZT1oLnd0Um9vdEVsZW1lbnQucGFyZW50Tm9kZTtJLmNsYXNzTmFtZT0iIi5jb25jYXQoeFdlLmdldCh0aGlzLnR5cGUpLCIgaGFuZHNvbnRhYmxlIiksSS5zZXRBdHRyaWJ1dGUoImRpciIsdGhpcy5pc1J0bCgp''@;'; put 'put ''PyJydGwiOiJsdHIiKSxJLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsSS5zdHlsZS50b3A9MCxJLnN0eWxlLm92ZXJmbG93PSJ2aXNpYmxlIix0aGlzLmlzUnRsKCk/SS5zdHlsZS5yaWdodD0wOkkuc3R5bGUubGVmdD0wLFouY2xhc3NOYW1lPWguVEFCTEUuY2xhc3NOYW1lLEkuYXBwZW5k''@;'; put 'put ''Q2hpbGQoWiksdWUuYXBwZW5kQ2hpbGQoSSk7dmFyIF9lPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKTtyZXR1cm4gdGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudD0hMD09PV9lfHwiaG9yaXpvbnRhbCI9PT1fZSYmdGhpcy50eXBlPT09SVN8fCJ2''@;'; put 'put ''ZXJ0aWNhbCI9PT1fZSYmdGhpcy50eXBlPT09RFM/QzoiaGlkZGVuIj09PUMuZ2V0Q29tcHV0ZWRTdHlsZSh1ZSkuZ2V0UHJvcGVydHlWYWx1ZSgib3ZlcmZsb3ciKT9oLmhvbGRlcjpIWihoLlRBQkxFKSxuZXcga1llKFosdGhpcy53dFNldHRpbmdzLHtzb3VyY2U6dGhpcy53b3Qsb3Zlcmxh''@;'; put 'put ''eTp0aGlzLHZpZXdwb3J0OnRoaXMud290Lnd0Vmlld3BvcnQsZXZlbnQ6dGhpcy53b3Qud3RFdmVudCxzZWxlY3Rpb25zOnRoaXMud290LnNlbGVjdGlvbnN9KX19LHtrZXk6InJlZnJlc2giLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1''@;'; put 'put ''bWVudHNbMF0mJmFyZ3VtZW50c1swXSx2PXRoaXMuc2hvdWxkQmVSZW5kZXJlZCgpO3RoaXMuY2xvbmUmJih0aGlzLm5lZWRGdWxsUmVuZGVyfHx2KSYmdGhpcy5jbG9uZS5kcmF3KGgpLHRoaXMubmVlZEZ1bGxSZW5kZXI9dn19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe2lmKHRo''@;'; put 'put ''aXMuY2xvbmUpe3ZhciBoPXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXI7VXIoW2guc3R5bGUsdGhpcy5jbG9uZS53dFRhYmxlLmhpZGVyLnN0eWxlLGgucGFyZW50Tm9kZS5zdHlsZV0sZnVuY3Rpb24oWil7Wi53aWR0aD0iIixaLmhlaWdodD0iIn0pfX19LHtrZXk6ImlzUnRsIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicnRsTW9kZSIpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsb25lLmV2ZW50TWFuYWdlci5kZXN0cm95KCl9fV0pLGR9KCk7ZnVuY3Rpb24gbWRlKGQpe3JldHVybihtZGU9ImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJv''@;'; put 'put ''bC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBiZWUoZCxnLGgpe3JldHVybihiZWU9Z0NlKCk/UmVmbGVjdC5jb25zdHJ1Y3QuYmluZCgpOmZ1bmN0aW9uKHksQyxJKXt2YXIgWj1bbnVsbF07Wi5wdXNoLmFwcGx5KFosQyk7dmFyIF9lPW5ldyhGdW5jdGlvbi5i''@;'; put 'put ''aW5kLmFwcGx5KHksWikpO3JldHVybiBJJiZfZWUoX2UsSS5wcm90b3R5cGUpLF9lfSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIGRDZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29u''@;'; put 'put ''ZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIF9lZShkLGcpe3JldHVybihfZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24o''@;'; put 'put ''dix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBMWWUoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1tZGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3Jz''@;'; put 'put ''IG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIHBDZShkKX1mdW5jdGlvbiBwQ2UoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxl''@;'; put 'put ''ZCIpO3JldHVybiBkfWZ1bmN0aW9uIGdDZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xl''@;'; put 'put ''YW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX1mdW5jdGlvbiBDZWUoZCl7cmV0dXJuKENlZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJp''@;'; put 'put ''bmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBSWWU9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIElZZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBl''@;'; put 'put ''ciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''ZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZfZWUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBEWWUoZCl7dmFyIGc9Z0NlKCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1DZWUoZCk7aWYoZyl7dmFyIEM9Q2VlKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1''@;'; put 'put ''Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBMWWUodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5LEMsSSl7dmFyIFo7cmV0dXJuIGZ1bmN0aW9uIHhZZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLGZ1bmN0aW9uIE9ZZShkLGcsaCl7ZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWh9KHBDZSha''@;'; put 'put ''PWcuY2FsbCh0aGlzLHYseSxJUyxDLEkpKSwiY2FjaGVkRml4ZWRSb3dzVG9wIiwtMSksWi5jYWNoZWRGaXhlZFJvd3NUb3A9Wi53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c1RvcCIpLFp9cmV0dXJuIGZ1bmN0aW9uIFRZZShkLGcsaCl7ZyYmZENlKGQucHJvdG90eXBlLGcpLGgm''@;'; put 'put ''JmRDZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJjcmVhdGVUYWJsZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHk9YXJndW1lbnRzLmxlbmd0aCxDPW5ldyBBcnJheSh5KSxJPTA7STx5O0krKylDW0ldPWFyZ3Vt''@;'; put 'put ''ZW50c1tJXTtyZXR1cm4gYmVlKEpXZSxDKX19LHtrZXk6InNob3VsZEJlUmVuZGVyZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJzaG91bGRSZW5kZXJUb3BPdmVybGF5Iil9fSx7a2V5OiJyZXNldEZpeGVkUG9zaXRpb24iLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7aWYoIXRoaXMubmVlZEZ1bGxSZW5kZXJ8fCF0aGlzLndvdC53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlKXJldHVybiExO3ZhciB5PXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSxDPXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxJPXRoaXMud3RTZXR0''@;'; put 'put ''aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKSxaPTAsdWU9ITE7aWYodGhpcy50cmltbWluZ0NvbnRhaW5lciE9PUN8fEkmJiJ2ZXJ0aWNhbCI9PT1JKVo9dGhpcy5nZXRTY3JvbGxQb3NpdGlvbigpLGpaKHkpO2Vsc2V7dmFyIEJlPXRoaXMud290Lnd0VGFibGUuaGlkZXIuZ2V0''@;'; put 'put ''Qm91bmRpbmdDbGllbnRSZWN0KCk7dWU9TWF0aC5jZWlsKEJlLmJvdHRvbSk9PT15Lm9mZnNldEhlaWdodCxaPXRoaXMuZ2V0T3ZlcmxheU9mZnNldCgpLHJlZSh5LCIwcHgiLCIiLmNvbmNhdChaLCJweCIpKX12YXIgcHQ9dGhpcy5hZGp1c3RIZWFkZXJCb3JkZXJzUG9zaXRpb24oWix1ZSk7''@;'; put 'put ''cmV0dXJuIHRoaXMuYWRqdXN0RWxlbWVudHNTaXplKCkscHR9fSx7a2V5OiJzZXRTY3JvbGxQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LEk9ITE7cmV0dXJuIHRoaXMubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQ9PT1DJiZD''@;'; put 'put ''LnNjcm9sbFkhPT15PyhDLnNjcm9sbFRvKHhTKEMpLHkpLEk9ITApOnRoaXMubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsVG9wIT09eSYmKHRoaXMubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsVG9wPXksST0hMCksSX19LHtrZXk6Im9uU2Nyb2xsIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3RoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvblNjcm9sbEhvcml6b250YWxseSIpfX0se2tleToic3VtQ2VsbFNpemVzIix2YWx1ZTpmdW5jdGlvbih5LEMpe2Zvcih2YXIgST10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZGVmYXVsdFJvd0hlaWdodCIpLFo9eSx1''@;'; put 'put ''ZT0wO1o8Qzspe3ZhciBfZT10aGlzLndvdC53dFRhYmxlLmdldFJvd0hlaWdodChaKTt1ZSs9dm9pZCAwPT09X2U/STpfZSxaKz0xfXJldHVybiB1ZX19LHtrZXk6ImFkanVzdEVsZW1lbnRzU2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9''@;'; put 'put ''PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO3RoaXMudXBkYXRlVHJpbW1pbmdDb250YWluZXIoKSwodGhpcy5uZWVkRnVsbFJlbmRlcnx8eSkmJih0aGlzLmFkanVzdFJvb3RFbGVtZW50U2l6ZSgpLHRoaXMuYWRqdXN0Um9vdENoaWxkcmVuU2l6ZSgpKX19LHtrZXk6ImFkanVzdFJvb3RF''@;'; put 'put ''bGVtZW50U2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLndvdC53dFRhYmxlLEM9dGhpcy5kb21CaW5kaW5ncyxaPUMucm9vdFdpbmRvdyx1ZT1CYyhDLnJvb3REb2N1bWVudCksQmU9dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlLnN0eWxlLE5lPXRoaXMud3RT''@;'; put 'put ''ZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKTtpZih0aGlzLnRyaW1taW5nQ29udGFpbmVyIT09Wnx8Imhvcml6b250YWwiPT09TmUpe3ZhciBLZT10aGlzLndvdC53dFZpZXdwb3J0LmdldFdvcmtzcGFjZVdpZHRoKCk7dGhpcy53b3Qud3RPdmVybGF5cy5oYXNTY3JvbGxi''@;'; put 'put ''YXJSaWdodCYmKEtlLT11ZSksS2U9TWF0aC5taW4oS2UseS53dFJvb3RFbGVtZW50LnNjcm9sbFdpZHRoKSxCZS53aWR0aD0iIi5jb25jYXQoS2UsInB4Iil9ZWxzZSBCZS53aWR0aD0iIjt0aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnN0eWxlLndpZHRoPUJlLndpZHRoO3ZhciBwdD1EMSh0''@;'; put 'put ''aGlzLmNsb25lLnd0VGFibGUuVEFCTEUpO3RoaXMud290Lnd0VGFibGUuaGFzRGVmaW5lZFNpemUoKXx8KHB0PTApLEJlLmhlaWdodD0iIi5jb25jYXQocHQsInB4Iil9fSx7a2V5OiJhZGp1c3RSb290Q2hpbGRyZW5TaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5LEM9dGhpcy5jbG9uZS53''@;'; put 'put ''dFRhYmxlLmhvbGRlcixJPXRoaXMud290LnNlbGVjdGlvbnMsWj10aGlzLmZhY2FkZUdldHRlcigpLHVlPU1hdGguYWJzKG51bGwhPT0oeT1udWxsPT1JP3ZvaWQgMDpJLmdldENlbGwoKS5nZXRCb3JkZXIoWikuY29ybmVyQ2VudGVyUG9pbnRPZmZzZXQpJiZ2b2lkIDAhPT15P3k6MCk7dGhp''@;'; put 'put ''cy5jbG9uZS53dFRhYmxlLmhpZGVyLnN0eWxlLndpZHRoPXRoaXMuaGlkZXIuc3R5bGUud2lkdGgsQy5zdHlsZS53aWR0aD1DLnBhcmVudE5vZGUuc3R5bGUud2lkdGgsQy5zdHlsZS5oZWlnaHQ9IiIuY29uY2F0KHBhcnNlSW50KEMucGFyZW50Tm9kZS5zdHlsZS5oZWlnaHQsMTApK3VlLCJw''@;'; put 'put ''eCIpfX0se2tleToiYXBwbHlUb0RPTSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIik7aWYoIm51bWJlciI9PXR5cGVvZiB0aGlzLndvdC53dFZpZXdwb3J0LnJvd3NSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb24pdGhp''@;'; put 'put ''cy5zcHJlYWRlci5zdHlsZS50b3A9IiIuY29uY2F0KHRoaXMud290Lnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRQb3NpdGlvbiwicHgiKTtlbHNle2lmKDAhPT15KXRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IHZhbHVlIG9mIHRoZSByb3dzUmVuZGVyQ2FsY3VsYXRv''@;'; put 'put ''ciIpO3RoaXMuc3ByZWFkZXIuc3R5bGUudG9wPSIwIn10aGlzLnNwcmVhZGVyLnN0eWxlLmJvdHRvbT0iIix0aGlzLm5lZWRGdWxsUmVuZGVyJiZ0aGlzLnN5bmNPdmVybGF5T2Zmc2V0KCl9fSx7a2V5OiJzeW5jT3ZlcmxheU9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmlz''@;'; put 'put ''UnRsKCk/InJpZ2h0IjoibGVmdCI7dGhpcy5jbG9uZS53dFRhYmxlLnNwcmVhZGVyLnN0eWxlW3ldPSJudW1iZXIiPT10eXBlb2YgdGhpcy53b3Qud3RWaWV3cG9ydC5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvci5zdGFydFBvc2l0aW9uPyIiLmNvbmNhdCh0aGlzLndvdC53dFZpZXdwb3J0LmNv''@;'; put 'put ''bHVtbnNSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb24sInB4Iik6IiJ9fSx7a2V5OiJzY3JvbGxUbyIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST10aGlzLndvdCxaPXRoaXMud3RTZXR0aW5ncyxfZT0oSS5jbG9uZVNvdXJjZT9JLmNsb25lU291cmNlOkkpLnd0VGFibGUuaG9sZGVy''@;'; put 'put ''LEJlPXRoaXMuZ2V0VGFibGVQYXJlbnRPZmZzZXQoKSxOZT0wO2lmKEMmJnRoaXMud290Lnd0VGFibGUuZ2V0Um93SGVpZ2h0KHkpPnRoaXMud290Lnd0Vmlld3BvcnQuZ2V0Vmlld3BvcnRIZWlnaHQoKSYmKEM9ITEpLEMmJl9lLm9mZnNldEhlaWdodCE9PV9lLmNsaWVudEhlaWdodCYmKE5l''@;'; put 'put ''PUJjKHRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50KSksQyl7dmFyIE90PVouZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIiksJHQ9Wi5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKTtCZSs9dGhpcy5zdW1DZWxsU2l6ZXMoMCx5KzEpLEJlLT1JLnd0Vmlld3BvcnQuZ2V0Vmlld3BvcnRI''@;'; put 'put ''ZWlnaHQoKS10aGlzLnN1bUNlbGxTaXplcygkdC1PdCwkdCksQmUrPTF9ZWxzZSBCZSs9dGhpcy5zdW1DZWxsU2l6ZXMoWi5nZXRTZXR0aW5nKCJmaXhlZFJvd3NUb3AiKSx5KTtyZXR1cm4gdGhpcy5zZXRTY3JvbGxQb3NpdGlvbihCZSs9TmUpfX0se2tleToiZ2V0VGFibGVQYXJlbnRPZmZz''@;'; put 'put ''ZXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQ9PT10aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3c/dGhpcy53b3Qud3RUYWJsZS5ob2xkZXJPZmZzZXQudG9wOjB9fSx7a2V5OiJnZXRTY3JvbGxQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gRloodGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudCx0aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3cpfX0se2tleToiZ2V0T3ZlcmxheU9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3csQz10aGlzLnd0U2V0''@;'; put 'put ''dGluZ3MuZ2V0U2V0dGluZygicHJldmVudE92ZXJmbG93IiksST0wO2lmKHRoaXMudHJpbW1pbmdDb250YWluZXI9PT15JiYoIUN8fCJ2ZXJ0aWNhbCIhPT1DKSl7dmFyIF9lPXRoaXMud290Lnd0VGFibGUuZ2V0VG90YWxIZWlnaHQoKS10aGlzLmNsb25lLnd0VGFibGUuZ2V0VG90YWxIZWln''@;'; put 'put ''aHQoKTsoST1NYXRoLm1heCh0aGlzLmdldFNjcm9sbFBvc2l0aW9uKCktdGhpcy5nZXRUYWJsZVBhcmVudE9mZnNldCgpLDApKT5fZSYmKEk9MCl9cmV0dXJuIEl9fSx7a2V5OiJhZGp1c3RIZWFkZXJCb3JkZXJzUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPWFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0sST10aGlzLndvdC53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlLFo9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpO1o/cGwoSSwiZW1wdHlDb2x1bW5zIik6TzAoSSwiZW1wdHlDb2x1''@;'; put 'put ''bW5zIik7dmFyIHVlPSExO2lmKCFDKXt2YXIgX2U9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c1RvcCIpLEJlPXRoaXMuY2FjaGVkRml4ZWRSb3dzVG9wIT09X2UsTmU9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKTtpZigoQmV8fDA9PT1f''@;'; put 'put ''ZSkmJk5lLmxlbmd0aD4wKXt2YXIgS2U9dGwoSSwiaW5uZXJCb3JkZXJUb3AiKTt0aGlzLmNhY2hlZEZpeGVkUm93c1RvcD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIikseXx8MD09PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKT8oTzAo''@;'; put 'put ''SSwiaW5uZXJCb3JkZXJUb3AiKSx1ZT0hS2UpOihwbChJLCJpbm5lckJvcmRlclRvcCIpLHVlPUtlKX19cmV0dXJuIHVlfX1dKSxofShYWiksbUNlPXtnZXRGaXJzdFJlbmRlcmVkUm93OmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpLGg9''@;'; put 'put ''dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpLHY9Zy1oO3JldHVybiAwPT09Z3x8MD09PWg/LTE6djwwPzA6dn0sZ2V0Rmlyc3RWaXNpYmxlUm93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0Rmlyc3RSZW5kZXJlZFJvdygpfSxnZXRMYXN0UmVuZGVyZWRS''@;'; put 'put ''b3c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpLTF9LGdldExhc3RWaXNpYmxlUm93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TGFzdFJlbmRlcmVkUm93KCl9LGdldFJlbmRlcmVkUm93c0NvdW50OmZ1bmN0aW9uKCl7dmFyIGc9''@;'; put 'put ''dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpO3JldHVybiBNYXRoLm1pbih0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIiksZyl9LGdldFZpc2libGVSb3dzQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRSZW5kZXJlZFJvd3ND''@;'; put 'put ''b3VudCgpfX07U2cobUNlLCJNSVhJTl9OQU1FIiwic3RpY2t5Um93c0JvdHRvbSIse3dyaXRhYmxlOiExLGVudW1lcmFibGU6ITF9KTtjb25zdCB2Q2U9bUNlO2Z1bmN0aW9uIHZkZShkKXtyZXR1cm4odmRlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rp''@;'; put 'put ''b24gQUNlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVu''@;'; put 'put ''Y3Rpb24gQWRlKGQsZyl7cmV0dXJuKEFkZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIFZZZShkLGcpe2lmKGcmJigib2JqZWN0Ij09PXZkZShnKXx8''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24galllKGQpe2lmKHZvaWQgMD09PWQpdGhy''@;'; put 'put ''b3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24ga2VlKGQpe3JldHVybihrZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVP''@;'; put 'put ''Zi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgeWRlPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBIWWUoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigi''@;'; put 'put ''U3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmQWRlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gTlllKGQpe3ZhciBnPWZ1bmN0aW9uIFpZZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5z''@;'; put 'put ''aGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24oKXt2YXIgeSx2PWtlZShkKTtpZihnKXt2YXIgQz1rZWUodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIFZZZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2''@;'; put 'put ''LHksQyxJKXtyZXR1cm4gZnVuY3Rpb24gRlllKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksZy5jYWxsKHRoaXMsdix5LEMsSSxFZyl9cmV0dXJuIGZ1bmN0aW9uIFBZZShk''@;'; put 'put ''LGcsaCl7cmV0dXJuIGcmJkFDZShkLnByb3RvdHlwZSxnKSxoJiZBQ2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxkfShoKX0odk8pO0IyKHlkZSx2Q2UpLEIyKHlkZSxhZGUpO2NvbnN0IHpZZT15ZGU7ZnVuY3Rpb24gd2RlKGQpe3Jl''@;'; put 'put ''dHVybih3ZGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5''@;'; put 'put ''bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBTZWUoZCxnLGgpe3JldHVybihTZWU9YkNlKCk/UmVmbGVjdC5jb25zdHJ1Y3QuYmluZCgpOmZ1bmN0aW9uKHksQyxJKXt2YXIgWj1bbnVsbF07Wi5wdXNoLmFwcGx5KFosQyk7dmFyIF9l''@;'; put 'put ''PW5ldyhGdW5jdGlvbi5iaW5kLmFwcGx5KHksWikpO3JldHVybiBJJiZNZWUoX2UsSS5wcm90b3R5cGUpLF9lfSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIHlDZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1l''@;'; put 'put ''cmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIE1lZShkLGcpe3JldHVybihNZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5i''@;'; put 'put ''aW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBRWWUoZCxnKXtpZihnJiYoIm9iamVjdCI9PT13ZGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2''@;'; put 'put ''ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIHdDZShkKX1mdW5jdGlvbiB3Q2UoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhh''@;'; put 'put ''c24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIGJDZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0''@;'; put 'put ''cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX1mdW5jdGlvbiBFZWUoZCl7cmV0dXJuKEVlZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0Lmdl''@;'; put 'put ''dFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBYWWU9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIFlZZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZNZWUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBVWWUoZCl7dmFyIGc9YkNlKCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1FZWUoZCk7aWYoZyl7dmFyIEM9RWVlKHRoaXMpLmNvbnN0cnVjdG9yO3k9''@;'; put 'put ''UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBRWWUodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5LEMsSSl7dmFyIFo7cmV0dXJuIGZ1bmN0aW9uIEdZZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLGZ1bmN0aW9uIEpZZShkLGcsaCl7ZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9''@;'; put 'put ''KTpkW2ddPWh9KHdDZShaPWcuY2FsbCh0aGlzLHYseSxFZyxDLEkpKSwiY2FjaGVkRml4ZWRSb3dzQm90dG9tIiwtMSksWi5jYWNoZWRGaXhlZFJvd3NCb3R0b209Wi53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpLFp9cmV0dXJuIGZ1bmN0aW9uIFdZZShkLGcsaCl7''@;'; put 'put ''ZyYmeUNlKGQucHJvdG90eXBlLGcpLGgmJnlDZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJjcmVhdGVUYWJsZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHk9YXJndW1lbnRzLmxlbmd0aCxDPW5ldyBBcnJheSh5''@;'; put 'put ''KSxJPTA7STx5O0krKylDW0ldPWFyZ3VtZW50c1tJXTtyZXR1cm4gU2VlKHpZZSxDKX19LHtrZXk6InNob3VsZEJlUmVuZGVyZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJzaG91bGRSZW5kZXJCb3R0b21PdmVybGF5Iil9fSx7a2V5OiJy''@;'; put 'put ''ZXNldEZpeGVkUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMubmVlZEZ1bGxSZW5kZXJ8fCF0aGlzLndvdC53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlKXJldHVybiExO3ZhciB5PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxDPXRoaXMuY2xvbmUud3RUYWJsZS5ob2xk''@;'; put 'put ''ZXIucGFyZW50Tm9kZTtDLnN0eWxlLnRvcD0iIjt2YXIgST0wLFo9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxvdyIpO3RoaXMudHJpbW1pbmdDb250YWluZXIhPT15fHxaJiYidmVydGljYWwiPT09Wj8oST10aGlzLmdldFNjcm9sbFBvc2l0aW9uKCksdGhpcy5y''@;'; put 'put ''ZXBvc2l0aW9uT3ZlcmxheSgpKTooST10aGlzLmdldE92ZXJsYXlPZmZzZXQoKSxDLnN0eWxlLmJvdHRvbT0iIi5jb25jYXQoSSwicHgiKSk7dmFyIHVlPXRoaXMuYWRqdXN0SGVhZGVyQm9yZGVyc1Bvc2l0aW9uKEkpO3JldHVybiB0aGlzLmFkanVzdEVsZW1lbnRzU2l6ZSgpLHVlfX0se2tl''@;'; put 'put ''eToicmVwb3NpdGlvbk92ZXJsYXkiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy53b3QsQz15Lnd0VGFibGUsST15Lnd0Vmlld3BvcnQsWj10aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudCx1ZT10aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUsX2U9MDtJLmhhc1Zl''@;'; put 'put ''cnRpY2FsU2Nyb2xsKCl8fChfZSs9SS5nZXRXb3Jrc3BhY2VIZWlnaHQoKS1DLmdldFRvdGFsSGVpZ2h0KCkpLEkuaGFzVmVydGljYWxTY3JvbGwoKSYmSS5oYXNIb3Jpem9udGFsU2Nyb2xsKCkmJihfZSs9QmMoWikpLHVlLnN0eWxlLmJvdHRvbT0iIi5jb25jYXQoX2UsInB4Iil9fSx7a2V5''@;'; put 'put ''OiJzZXRTY3JvbGxQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LEk9ITE7cmV0dXJuIHRoaXMubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQ9PT1DPyhDLnNjcm9sbFRvKHhTKEMpLHkpLEk9ITApOnRoaXMubWFpblRhYmxlU2Ny''@;'; put 'put ''b2xsYWJsZUVsZW1lbnQuc2Nyb2xsVG9wIT09eSYmKHRoaXMubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsVG9wPXksST0hMCksSX19LHtrZXk6Im9uU2Nyb2xsIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvblNjcm9sbEhvcml6b250YWxs''@;'; put 'put ''eSIpfX0se2tleToic3VtQ2VsbFNpemVzIix2YWx1ZTpmdW5jdGlvbih5LEMpe2Zvcih2YXIgST10aGlzLndvdCxaPUkud3RUYWJsZSxfZT1JLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZGVmYXVsdFJvd0hlaWdodCIpLEJlPXksTmU9MDtCZTxDOyl7dmFyIEtlPVouZ2V0Um93SGVpZ2h0KEJl''@;'; put 'put ''KTtOZSs9dm9pZCAwPT09S2U/X2U6S2UsQmUrPTF9cmV0dXJuIE5lfX0se2tleToiYWRqdXN0RWxlbWVudHNTaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07dGhpcy51cGRhdGVUcmltbWlu''@;'; put 'put ''Z0NvbnRhaW5lcigpLCh0aGlzLm5lZWRGdWxsUmVuZGVyfHx5KSYmKHRoaXMuYWRqdXN0Um9vdEVsZW1lbnRTaXplKCksdGhpcy5hZGp1c3RSb290Q2hpbGRyZW5TaXplKCkpfX0se2tleToiYWRqdXN0Um9vdEVsZW1lbnRTaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMud290LEM9''@;'; put 'put ''eS53dFRhYmxlLEk9eS53dFZpZXdwb3J0LFo9dGhpcy5kb21CaW5kaW5ncyxfZT1aLnJvb3RXaW5kb3csQmU9QmMoWi5yb290RG9jdW1lbnQpLEtlPXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZS5zdHlsZSxwdD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicHJldmVu''@;'; put 'put ''dE92ZXJmbG93Iik7aWYodGhpcy50cmltbWluZ0NvbnRhaW5lciE9PV9lfHwiaG9yaXpvbnRhbCI9PT1wdCl7dmFyIE90PUkuZ2V0V29ya3NwYWNlV2lkdGgoKTt0aGlzLndvdC53dE92ZXJsYXlzLmhhc1Njcm9sbGJhclJpZ2h0JiYoT3QtPUJlKSxPdD1NYXRoLm1pbihPdCxDLnd0Um9vdEVs''@;'; put 'put ''ZW1lbnQuc2Nyb2xsV2lkdGgpLEtlLndpZHRoPSIiLmNvbmNhdChPdCwicHgiKX1lbHNlIEtlLndpZHRoPSIiO3RoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIuc3R5bGUud2lkdGg9S2Uud2lkdGg7dmFyICR0PUQxKHRoaXMuY2xvbmUud3RUYWJsZS5UQUJMRSk7dGhpcy53b3Qud3RUYWJsZS5o''@;'; put 'put ''YXNEZWZpbmVkU2l6ZSgpfHwoJHQ9MCksS2UuaGVpZ2h0PSIiLmNvbmNhdCgkdCwicHgiKX19LHtrZXk6ImFkanVzdFJvb3RDaGlsZHJlblNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlcjt0aGlzLmNsb25lLnd0VGFibGUuaGlkZXIuc3R5bGUu''@;'; put 'put ''d2lkdGg9dGhpcy5oaWRlci5zdHlsZS53aWR0aCx5LnN0eWxlLndpZHRoPXkucGFyZW50Tm9kZS5zdHlsZS53aWR0aCx5LnN0eWxlLmhlaWdodD15LnBhcmVudE5vZGUuc3R5bGUuaGVpZ2h0fX0se2tleToiYXBwbHlUb0RPTSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLnd0U2V0dGlu''@;'; put 'put ''Z3MuZ2V0U2V0dGluZygidG90YWxSb3dzIik7aWYoIm51bWJlciI9PXR5cGVvZiB0aGlzLndvdC53dFZpZXdwb3J0LnJvd3NSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb24pdGhpcy5zcHJlYWRlci5zdHlsZS50b3A9IiIuY29uY2F0KHRoaXMud290Lnd0Vmlld3BvcnQucm93c1JlbmRl''@;'; put 'put ''ckNhbGN1bGF0b3Iuc3RhcnRQb3NpdGlvbiwicHgiKTtlbHNle2lmKDAhPT15KXRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IHZhbHVlIG9mIHRoZSByb3dzUmVuZGVyQ2FsY3VsYXRvciIpO3RoaXMuc3ByZWFkZXIuc3R5bGUudG9wPSIwIn10aGlzLnNwcmVhZGVyLnN0eWxlLmJvdHRvbT0i''@;'; put 'put ''Iix0aGlzLm5lZWRGdWxsUmVuZGVyJiZ0aGlzLnN5bmNPdmVybGF5T2Zmc2V0KCl9fSx7a2V5OiJzeW5jT3ZlcmxheU9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmlzUnRsKCk/InJpZ2h0IjoibGVmdCI7dGhpcy5jbG9uZS53dFRhYmxlLnNwcmVhZGVyLnN0eWxlW3ldPSJu''@;'; put 'put ''dW1iZXIiPT10eXBlb2YgdGhpcy53b3Qud3RWaWV3cG9ydC5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvci5zdGFydFBvc2l0aW9uPyIiLmNvbmNhdCh0aGlzLndvdC53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb24sInB4Iik6IiJ9fSx7a2V5OiJzY3JvbGxU''@;'; put 'put ''byIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST10aGlzLmdldFRhYmxlUGFyZW50T2Zmc2V0KCksdWU9KHRoaXMud290LmNsb25lU291cmNlP3RoaXMud290LmNsb25lU291cmNlOnRoaXMud290KS53dFRhYmxlLmhvbGRlcixfZT0wO0MmJnVlLm9mZnNldEhlaWdodCE9PXVlLmNsaWVudEhl''@;'; put 'put ''aWdodCYmKF9lPUJjKHRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50KSksQz8oSSs9dGhpcy5zdW1DZWxsU2l6ZXMoMCx5KzEpLEktPXRoaXMud290Lnd0Vmlld3BvcnQuZ2V0Vmlld3BvcnRIZWlnaHQoKSxJKz0xKTpJKz10aGlzLnN1bUNlbGxTaXplcyh0aGlzLnd0U2V0dGluZ3MuZ2V0''@;'; put 'put ''U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIikseSksdGhpcy5zZXRTY3JvbGxQb3NpdGlvbihJKz1fZSl9fSx7a2V5OiJnZXRUYWJsZVBhcmVudE9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudD09PXRoaXMuZG9tQmluZGluZ3Mu''@;'; put 'put ''cm9vdFdpbmRvdz90aGlzLndvdC53dFRhYmxlLmhvbGRlck9mZnNldC50b3A6MH19LHtrZXk6ImdldFNjcm9sbFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBGWih0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LHRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyl9fSx7''@;'; put 'put ''a2V5OiJnZXRPdmVybGF5T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxDPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKSxJPTA7aWYodGhpcy50cmltbWluZ0NvbnRhaW5lcj09PXkmJighQ3x8InZl''@;'; put 'put ''cnRpY2FsIiE9PUMpKXt2YXIgWj10aGlzLndvdC53dFRhYmxlLmdldFRvdGFsSGVpZ2h0KCksX2U9Wi10aGlzLmNsb25lLnd0VGFibGUuZ2V0VG90YWxIZWlnaHQoKSxCZT10aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0OyhJPU1hdGgu''@;'; put 'put ''bWF4KHRoaXMuZ2V0VGFibGVQYXJlbnRPZmZzZXQoKS10aGlzLmdldFNjcm9sbFBvc2l0aW9uKCktQmUrWiwwKSk+X2UmJihJPTApfXJldHVybiBJfX0se2tleToiYWRqdXN0SGVhZGVyQm9yZGVyc1Bvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLnd0U2V0dGluZ3MuZ2V0''@;'; put 'put ''U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIiksST10aGlzLmNhY2hlZEZpeGVkUm93c0JvdHRvbSE9PUMsWj10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpLHVlPSExO2lmKChJfHwwPT09QykmJloubGVuZ3RoPjApe3ZhciBfZT10aGlzLndvdC53dFRhYmxlLmhv''@;'; put 'put ''bGRlci5wYXJlbnROb2RlLEJlPXRsKF9lLCJpbm5lckJvcmRlckJvdHRvbSIpO3RoaXMuY2FjaGVkRml4ZWRSb3dzQm90dG9tPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKSx5fHwwPT09dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIp''@;'; put 'put ''PyhPMChfZSwiaW5uZXJCb3JkZXJCb3R0b20iKSx1ZT0hQmUpOihwbChfZSwiaW5uZXJCb3JkZXJCb3R0b20iKSx1ZT1CZSl9cmV0dXJuIHVlfX1dKSxofShYWiksX0NlPXtnZXRGaXJzdFJlbmRlcmVkUm93OmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LnN0YXJ0Um93''@;'; put 'put ''UmVuZGVyZWQ7cmV0dXJuIG51bGw9PT1nPy0xOmd9LGdldEZpcnN0VmlzaWJsZVJvdzpmdW5jdGlvbigpe3ZhciBnPXRoaXMuZGF0YUFjY2Vzc09iamVjdC5zdGFydFJvd1Zpc2libGU7cmV0dXJuIG51bGw9PT1nPy0xOmd9LGdldExhc3RSZW5kZXJlZFJvdzpmdW5jdGlvbigpe3ZhciBnPXRo''@;'; put 'put ''aXMuZGF0YUFjY2Vzc09iamVjdC5lbmRSb3dSZW5kZXJlZDtyZXR1cm4gbnVsbD09PWc/LTE6Z30sZ2V0TGFzdFZpc2libGVSb3c6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLmRhdGFBY2Nlc3NPYmplY3QuZW5kUm93VmlzaWJsZTtyZXR1cm4gbnVsbD09PWc/LTE6Z30sZ2V0UmVuZGVyZWRSb3dz''@;'; put 'put ''Q291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhQWNjZXNzT2JqZWN0LmNvdW50Um93c1JlbmRlcmVkfSxnZXRWaXNpYmxlUm93c0NvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YUFjY2Vzc09iamVjdC5jb3VudFJvd3NWaXNpYmxlfX07U2coX0NlLCJNSVhJTl9OQU1FIiwi''@;'; put 'put ''Y2FsY3VsYXRlZFJvd3MiLHt3cml0YWJsZTohMSxlbnVtZXJhYmxlOiExfSk7Y29uc3QgQ0NlPV9DZTt2YXIga0NlPXtnZXRGaXJzdFJlbmRlcmVkQ29sdW1uOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIik/LTE6MH0sZ2V0''@;'; put 'put ''Rmlyc3RWaXNpYmxlQ29sdW1uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0Rmlyc3RSZW5kZXJlZENvbHVtbigpfSxnZXRMYXN0UmVuZGVyZWRDb2x1bW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRSZW5kZXJlZENvbHVtbnNDb3VudCgpLTF9LGdldExhc3RWaXNpYmxlQ29sdW1uOmZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TGFzdFJlbmRlcmVkQ29sdW1uKCl9LGdldFJlbmRlcmVkQ29sdW1uc0NvdW50OmZ1bmN0aW9uKCl7dmFyIGc9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpO3JldHVybiBNYXRoLm1pbih0aGlzLnd0U2V0dGluZ3MuZ2V0''@;'; put 'put ''U2V0dGluZygiZml4ZWRDb2x1bW5zU3RhcnQiKSxnKX0sZ2V0VmlzaWJsZUNvbHVtbnNDb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFJlbmRlcmVkQ29sdW1uc0NvdW50KCl9fTtTZyhrQ2UsIk1JWElOX05BTUUiLCJzdGlja3lDb2x1bW5zU3RhcnQiLHt3cml0YWJsZTohMSxlbnVt''@;'; put 'put ''ZXJhYmxlOiExfSk7Y29uc3QgYmRlPWtDZTtmdW5jdGlvbiBfZGUoZCl7cmV0dXJuKF9kZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYi''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIFNDZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12''@;'; put 'put ''LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIENkZShkLGcpe3JldHVybihDZGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5''@;'; put 'put ''cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiByVWUoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1fZGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIGlVZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFz''@;'; put 'put ''bid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIHhlZShkKXtyZXR1cm4oeGVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgp''@;'; put 'put ''fSkoZCl9dmFyIGtkZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gdFVlKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9''@;'; put 'put ''T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJkNkZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9u''@;'; put 'put ''IG5VZShkKXt2YXIgZz1mdW5jdGlvbiBvVWUoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29s''@;'; put 'put ''ZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj14ZWUoZCk7aWYoZyl7dmFyIEM9eGVlKHRoaXMpLmNvbnN0cnVjdG9yO3k9''@;'; put 'put ''UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByVWUodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5LEMsSSl7cmV0dXJuIGZ1bmN0aW9uIGVVZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLGcuY2FsbCh0aGlzLHYseSxDLEksRFMpfXJldHVybiBmdW5jdGlvbiBxWWUoZCxnLGgpe3JldHVybiBnJiZTQ2UoZC5wcm90b3R5cGUsZyksaCYmU0NlKGQsaCksT2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZH0oaCl9KHZPKTtCMihrZGUsQ0NlKSxCMihrZGUsYmRlKTtjb25zdCBhVWU9a2RlO2Z1bmN0aW9uIFNkZShkKXtyZXR1cm4oU2RlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJh''@;'; put 'put ''dG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gVGVlKGQs''@;'; put 'put ''ZyxoKXtyZXR1cm4oVGVlPUVDZSgpP1JlZmxlY3QuY29uc3RydWN0LmJpbmQoKTpmdW5jdGlvbih5LEMsSSl7dmFyIFo9W251bGxdO1oucHVzaC5hcHBseShaLEMpO3ZhciBfZT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseSh5LFopKTtyZXR1cm4gSSYmSWVlKF9lLEkucHJvdG90eXBlKSxfZX0p''@;'; put 'put ''LmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBNQ2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBJZWUoZCxnKXtyZXR1cm4oSWVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gZlVlKGQs''@;'; put 'put ''Zyl7aWYoZyYmKCJvYmplY3QiPT09U2RlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5j''@;'; put 'put ''dGlvbiBoVWUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBFQ2UoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJl''@;'; put 'put ''ZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixb''@;'; put 'put ''XSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19ZnVuY3Rpb24gRGVlKGQpe3JldHVybihEZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90''@;'; put 'put ''eXBlT2YoaCl9KShkKX12YXIgZFVlPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiB1VWUoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnBy''@;'; put 'put ''b3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmSWVlKGQsZyl9KGgsZCk7dmFyIGc9''@;'; put 'put ''ZnVuY3Rpb24gY1VlKGQpe3ZhciBnPUVDZSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9RGVlKGQpO2lmKGcpe3ZhciBDPURlZSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1''@;'; put 'put ''cm4gZlVlKHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYseSxDLEkpe3JldHVybiBmdW5jdGlvbiBsVWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSxnLmNhbGwodGhpcyx2''@;'; put 'put ''LHksRFMsQyxJKX1yZXR1cm4gZnVuY3Rpb24gc1VlKGQsZyxoKXtnJiZNQ2UoZC5wcm90b3R5cGUsZyksaCYmTUNlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImNyZWF0ZVRhYmxlIix2YWx1ZTpmdW5jdGlvbigpe2Zv''@;'; put 'put ''cih2YXIgeT1hcmd1bWVudHMubGVuZ3RoLEM9bmV3IEFycmF5KHkpLEk9MDtJPHk7SSsrKUNbSV09YXJndW1lbnRzW0ldO3JldHVybiBUZWUoYVVlLEMpfX0se2tleToic2hvdWxkQmVSZW5kZXJlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmco''@;'; put 'put ''InNob3VsZFJlbmRlcklubGluZVN0YXJ0T3ZlcmxheSIpfX0se2tleToicmVzZXRGaXhlZFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLm5lZWRGdWxsUmVuZGVyfHwhdGhpcy53b3Qud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSlyZXR1cm4hMTt2YXIgQz10aGlzLmRvbUJp''@;'; put 'put ''bmRpbmdzLnJvb3RXaW5kb3csST10aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUsWj10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicHJldmVudE92ZXJmbG93IiksdWU9MDt0aGlzLnRyaW1taW5nQ29udGFpbmVyIT09Q3x8WiYmImhvcml6b250YWwiPT09Wj8odWU9dGhp''@;'; put 'put ''cy5nZXRTY3JvbGxQb3NpdGlvbigpLGpaKEkpKToodWU9dGhpcy5nZXRPdmVybGF5T2Zmc2V0KCkqKHRoaXMuaXNSdGwoKT8tMToxKSxyZWUoSSwiIi5jb25jYXQodWUsInB4IiksIjBweCIpKTt2YXIgX2U9dGhpcy5hZGp1c3RIZWFkZXJCb3JkZXJzUG9zaXRpb24odWUpO3JldHVybiB0aGlz''@;'; put 'put ''LmFkanVzdEVsZW1lbnRzU2l6ZSgpLF9lfX0se2tleToic2V0U2Nyb2xsUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxJPSExO3JldHVybiB0aGlzLmlzUnRsKCkmJih5PS15KSx0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVt''@;'; put 'put ''ZW50PT09QyYmQy5zY3JvbGxYIT09eT8oQy5zY3JvbGxUbyh5LGZPKEMpKSxJPSEwKTp0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LnNjcm9sbExlZnQhPT15JiYodGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxMZWZ0PXksST0hMCksSX19LHtrZXk6Im9uU2Ny''@;'; put 'put ''b2xsIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvblNjcm9sbFZlcnRpY2FsbHkiKX19LHtrZXk6InN1bUNlbGxTaXplcyIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtmb3IodmFyIEk9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1bHRDb2x1bW5X''@;'; put 'put ''aWR0aCIpLFo9eSx1ZT0wO1o8QzspdWUrPXRoaXMud290Lnd0VGFibGUuZ2V0U3RyZXRjaGVkQ29sdW1uV2lkdGgoWil8fEksWis9MTtyZXR1cm4gdWV9fSx7a2V5OiJhZGp1c3RFbGVtZW50c1NpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAh''@;'; put 'put ''PT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTt0aGlzLnVwZGF0ZVRyaW1taW5nQ29udGFpbmVyKCksKHRoaXMubmVlZEZ1bGxSZW5kZXJ8fHkpJiYodGhpcy5hZGp1c3RSb290RWxlbWVudFNpemUoKSx0aGlzLmFkanVzdFJvb3RDaGlsZHJlblNpemUoKSl9fSx7a2V5OiJhZGp1c3RSb290''@;'; put 'put ''RWxlbWVudFNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy53b3Qud3RUYWJsZSxDPXRoaXMuZG9tQmluZGluZ3MsWj1DLnJvb3RXaW5kb3csdWU9QmMoQy5yb290RG9jdW1lbnQpLEJlPXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZS5zdHlsZSxOZT10aGlzLnd0''@;'; put 'put ''U2V0dGluZ3MuZ2V0U2V0dGluZygicHJldmVudE92ZXJmbG93Iik7aWYodGhpcy50cmltbWluZ0NvbnRhaW5lciE9PVp8fCJ2ZXJ0aWNhbCI9PT1OZSl7dmFyIEtlPXRoaXMud290Lnd0Vmlld3BvcnQuZ2V0V29ya3NwYWNlSGVpZ2h0KCk7dGhpcy53b3Qud3RPdmVybGF5cy5oYXNTY3JvbGxi''@;'; put 'put ''YXJCb3R0b20mJihLZS09dWUpLEtlPU1hdGgubWluKEtlLHkud3RSb290RWxlbWVudC5zY3JvbGxIZWlnaHQpLEJlLmhlaWdodD0iIi5jb25jYXQoS2UsInB4Iil9ZWxzZSBCZS5oZWlnaHQ9IiI7dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5zdHlsZS5oZWlnaHQ9QmUuaGVpZ2h0O3ZhciBw''@;'; put 'put ''dD1FMih0aGlzLmNsb25lLnd0VGFibGUuVEFCTEUpO0JlLndpZHRoPSIiLmNvbmNhdChwdCwicHgiKX19LHtrZXk6ImFkanVzdFJvb3RDaGlsZHJlblNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHksQz10aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLEk9dGhpcy53b3Quc2VsZWN0aW9ucyxa''@;'; put 'put ''PXRoaXMuZmFjYWRlR2V0dGVyKCksdWU9TWF0aC5hYnMobnVsbCE9PSh5PW51bGw9PUk/dm9pZCAwOkkuZ2V0Q2VsbCgpLmdldEJvcmRlcihaKS5jb3JuZXJDZW50ZXJQb2ludE9mZnNldCkmJnZvaWQgMCE9PXk/eTowKTt0aGlzLmNsb25lLnd0VGFibGUuaGlkZXIuc3R5bGUuaGVpZ2h0PXRo''@;'; put 'put ''aXMuaGlkZXIuc3R5bGUuaGVpZ2h0LEMuc3R5bGUuaGVpZ2h0PUMucGFyZW50Tm9kZS5zdHlsZS5oZWlnaHQsQy5zdHlsZS53aWR0aD0iIi5jb25jYXQocGFyc2VJbnQoQy5wYXJlbnROb2RlLnN0eWxlLndpZHRoLDEwKSt1ZSwicHgiKX19LHtrZXk6ImFwcGx5VG9ET00iLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIHk9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpLEM9dGhpcy5pc1J0bCgpPyJyaWdodCI6ImxlZnQiO2lmKCJudW1iZXIiPT10eXBlb2YgdGhpcy53b3Qud3RWaWV3cG9ydC5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvci5zdGFydFBvc2l0aW9uKXRo''@;'; put 'put ''aXMuc3ByZWFkZXIuc3R5bGVbQ109IiIuY29uY2F0KHRoaXMud290Lnd0Vmlld3BvcnQuY29sdW1uc1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRQb3NpdGlvbiwicHgiKTtlbHNle2lmKDAhPT15KXRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IHZhbHVlIG9mIHRoZSBjb2x1bW5zUmVuZGVyQ2Fs''@;'; put 'put ''Y3VsYXRvciIpO3RoaXMuc3ByZWFkZXIuc3R5bGVbQ109IjAifXRoaXMuaXNSdGwoKT90aGlzLnNwcmVhZGVyLnN0eWxlLmxlZnQ9IiI6dGhpcy5zcHJlYWRlci5zdHlsZS5yaWdodD0iIix0aGlzLm5lZWRGdWxsUmVuZGVyJiZ0aGlzLnN5bmNPdmVybGF5T2Zmc2V0KCl9fSx7a2V5OiJzeW5j''@;'; put 'put ''T3ZlcmxheU9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsb25lLnd0VGFibGUuc3ByZWFkZXIuc3R5bGUudG9wPSJudW1iZXIiPT10eXBlb2YgdGhpcy53b3Qud3RWaWV3cG9ydC5yb3dzUmVuZGVyQ2FsY3VsYXRvci5zdGFydFBvc2l0aW9uPyIiLmNvbmNhdCh0aGlzLndvdC53dFZp''@;'; put 'put ''ZXdwb3J0LnJvd3NSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb24sInB4Iik6IiJ9fSx7a2V5OiJzY3JvbGxUbyIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST10aGlzLmdldFRhYmxlUGFyZW50T2Zmc2V0KCksdWU9KHRoaXMud290LmNsb25lU291cmNlP3RoaXMud290LmNsb25lU291''@;'; put 'put ''cmNlOnRoaXMud290KS53dFRhYmxlLmhvbGRlcixfZT0wO3JldHVybiBDJiZ0aGlzLndvdC53dFRhYmxlLmdldENvbHVtbldpZHRoKHkpPnRoaXMud290Lnd0Vmlld3BvcnQuZ2V0Vmlld3BvcnRXaWR0aCgpJiYoQz0hMSksQyYmdWUub2Zmc2V0V2lkdGghPT11ZS5jbGllbnRXaWR0aCYmKF9l''@;'; put 'put ''PUJjKHRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50KSksQz8oSSs9dGhpcy5zdW1DZWxsU2l6ZXMoMCx5KzEpLEktPXRoaXMud290Lnd0Vmlld3BvcnQuZ2V0Vmlld3BvcnRXaWR0aCgpKTpJKz10aGlzLnN1bUNlbGxTaXplcyh0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRD''@;'; put 'put ''b2x1bW5zU3RhcnQiKSx5KSx0aGlzLnNldFNjcm9sbFBvc2l0aW9uKEkrPV9lKX19LHtrZXk6ImdldFRhYmxlUGFyZW50T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBDPTA7cmV0dXJuIXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKSYmdGhpcy50cmlt''@;'; put 'put ''bWluZ0NvbnRhaW5lcj09PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyYmKEM9dGhpcy53b3Qud3RUYWJsZS5ob2xkZXJPZmZzZXQubGVmdCksQ319LHtrZXk6ImdldFNjcm9sbFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBNYXRoLmFicyh0ZWUodGhpcy5tYWluVGFibGVT''@;'; put 'put ''Y3JvbGxhYmxlRWxlbWVudCx0aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3cpKX19LHtrZXk6ImdldE92ZXJsYXlPZmZzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LEM9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRPdmVy''@;'; put 'put ''ZmxvdyIpLEk9MDtyZXR1cm4gdGhpcy50cmltbWluZ0NvbnRhaW5lciE9PXl8fEMmJiJob3Jpem9udGFsIj09PUN8fChJPXRoaXMuaXNSdGwoKT9NYXRoLmFicyhNYXRoLm1pbih0aGlzLmdldFRhYmxlUGFyZW50T2Zmc2V0KCktdGhpcy5nZXRTY3JvbGxQb3NpdGlvbigpLDApKTpNYXRoLm1h''@;'; put 'put ''eCh0aGlzLmdldFNjcm9sbFBvc2l0aW9uKCktdGhpcy5nZXRUYWJsZVBhcmVudE9mZnNldCgpLDApKT50aGlzLndvdC53dFRhYmxlLmdldFRvdGFsV2lkdGgoKS10aGlzLmNsb25lLnd0VGFibGUuZ2V0VG90YWxXaWR0aCgpJiYoST0wKSxJfX0se2tleToiYWRqdXN0SGVhZGVyQm9yZGVyc1Bv''@;'; put 'put ''c2l0aW9uIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLndvdC53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlLEk9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInJvd0hlYWRlcnMiKSxaPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpO3RoaXMu''@;'; put 'put ''d3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKT9wbChDLCJlbXB0eVJvd3MiKTpPMChDLCJlbXB0eVJvd3MiKTt2YXIgX2U9ITE7aWYoWiYmIUkubGVuZ3RoKU8wKEMsImlubmVyQm9yZGVyTGVmdCBpbm5lckJvcmRlcklubGluZVN0YXJ0Iik7ZWxzZSBpZighWiYmSS5sZW5ndGgp''@;'; put 'put ''e3ZhciBCZT10bChDLCJpbm5lckJvcmRlcklubGluZVN0YXJ0Iik7eT8oTzAoQywiaW5uZXJCb3JkZXJMZWZ0IGlubmVyQm9yZGVySW5saW5lU3RhcnQiKSxfZT0hQmUpOihwbChDLCJpbm5lckJvcmRlckxlZnQgaW5uZXJCb3JkZXJJbmxpbmVTdGFydCIpLF9lPUJlKX1yZXR1cm4gX2V9fV0p''@;'; put 'put ''LGh9KFhaKTtmdW5jdGlvbiBNZGUoZCl7cmV0dXJuKE1kZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''U3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIHhDZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYu''@;'; put 'put ''Y29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIEVkZShkLGcpe3JldHVybihFZGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rp''@;'; put 'put ''b24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBBVWUoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1NZGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0''@;'; put 'put ''b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIHlVZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7''@;'; put 'put ''cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIExlZShkKXtyZXR1cm4oTGVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIHhkZT1mdW5j''@;'; put 'put ''dGlvbihkKXshZnVuY3Rpb24gbVVlKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZn''@;'; put 'put ''LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJkVkZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIHZVZShkKXt2YXIgZz1mdW5j''@;'; put 'put ''dGlvbiB3VWUoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1''@;'; put 'put ''ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1MZWUoZCk7aWYoZyl7dmFyIEM9TGVlKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qo''@;'; put 'put ''dixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBBVWUodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5LEMsSSl7cmV0dXJuIGZ1bmN0aW9uIGdVZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBj''@;'; put 'put ''YWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLGcuY2FsbCh0aGlzLHYseSxDLEksTFMpfXJldHVybiBmdW5jdGlvbiBwVWUoZCxnLGgpe3JldHVybiBnJiZ4Q2UoZC5wcm90b3R5cGUsZyksaCYmeENlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIs''@;'; put 'put ''e3dyaXRhYmxlOiExfSksZH0oaCl9KHZPKTtCMih4ZGUscV9lKSxCMih4ZGUsYmRlKTtjb25zdCBiVWU9eGRlO2Z1bmN0aW9uIFRkZShkKXtyZXR1cm4oVGRlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3Jl''@;'; put 'put ''dHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gT2VlKGQsZyxoKXtyZXR1cm4oT2VlPUlD''@;'; put 'put ''ZSgpP1JlZmxlY3QuY29uc3RydWN0LmJpbmQoKTpmdW5jdGlvbih5LEMsSSl7dmFyIFo9W251bGxdO1oucHVzaC5hcHBseShaLEMpO3ZhciBfZT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseSh5LFopKTtyZXR1cm4gSSYmUmVlKF9lLEkucHJvdG90eXBlKSxfZX0pLmFwcGx5KG51bGwsYXJndW1l''@;'; put 'put ''bnRzKX1mdW5jdGlvbiBUQ2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYu''@;'; put 'put ''a2V5LHYpfX1mdW5jdGlvbiBSZWUoZCxnKXtyZXR1cm4oUmVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gTVVlKGQsZyl7aWYoZyYmKCJvYmplY3Qi''@;'; put 'put ''PT09VGRlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBJZGUoZCl9ZnVuY3Rpb24gSWRlKGQp''@;'; put 'put ''e2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiBJQ2UoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0''@;'; put 'put ''LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30p''@;'; put 'put ''KSwhMH1jYXRjaChkKXtyZXR1cm4hMX19ZnVuY3Rpb24gQmVlKGQpe3JldHVybihCZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX1m''@;'; put 'put ''dW5jdGlvbiBEQ2UoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfXZhciBFVWU9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIGtVZShkLGcpe2lmKCJm''@;'; put 'put ''dW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpk''@;'; put 'put ''LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZSZWUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBTVWUoZCl7dmFyIGc9SUNlKCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1CZWUo''@;'; put 'put ''ZCk7aWYoZyl7dmFyIEM9QmVlKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBNVWUodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5LEMsSSxaLHVlKXt2YXIgX2U7cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uIF9VZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLERDZShJZGUoX2U9Zy5jYWxsKHRoaXMsdix5LExTLEMsSSkpLCJ0b3BPdmVybGF5Iix2b2lkIDApLERD''@;'; put 'put ''ZShJZGUoX2UpLCJpbmxpbmVTdGFydE92ZXJsYXkiLHZvaWQgMCksX2UudG9wT3ZlcmxheT1aLF9lLmlubGluZVN0YXJ0T3ZlcmxheT11ZSxfZX1yZXR1cm4gZnVuY3Rpb24gQ1VlKGQsZyxoKXtnJiZUQ2UoZC5wcm90b3R5cGUsZyksaCYmVENlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImNyZWF0ZVRhYmxlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgeT1hcmd1bWVudHMubGVuZ3RoLEM9bmV3IEFycmF5KHkpLEk9MDtJPHk7SSsrKUNbSV09YXJndW1lbnRzW0ldO3JldHVybiBPZWUoYlVlLEMpfX0se2tl''@;'; put 'put ''eToic2hvdWxkQmVSZW5kZXJlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInNob3VsZFJlbmRlclRvcE92ZXJsYXkiKSYmdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInNob3VsZFJlbmRlcklubGluZVN0YXJ0T3ZlcmxheSIpfX0se2tl''@;'; put 'put ''eToicmVzZXRGaXhlZFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMudXBkYXRlVHJpbW1pbmdDb250YWluZXIoKSwhdGhpcy53b3Qud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSlyZXR1cm4hMTt2YXIgeT10aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGU7aWYo''@;'; put 'put ''dGhpcy50cmltbWluZ0NvbnRhaW5lcj09PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyl7dmFyIEM9dGhpcy5pbmxpbmVTdGFydE92ZXJsYXkuZ2V0T3ZlcmxheU9mZnNldCgpKih0aGlzLmlzUnRsKCk/LTE6MSksST10aGlzLnRvcE92ZXJsYXkuZ2V0T3ZlcmxheU9mZnNldCgpO3JlZSh5''@;'; put 'put ''LCIiLmNvbmNhdChDLCJweCIpLCIiLmNvbmNhdChJLCJweCIpKX1lbHNlIGpaKHkpO3ZhciBaPUQxKHRoaXMuY2xvbmUud3RUYWJsZS5UQUJMRSksdWU9RTIodGhpcy5jbG9uZS53dFRhYmxlLlRBQkxFKTtyZXR1cm4gdGhpcy53b3Qud3RUYWJsZS5oYXNEZWZpbmVkU2l6ZSgpfHwoWj0wKSx5''@;'; put 'put ''LnN0eWxlLmhlaWdodD0iIi5jb25jYXQoWiwicHgiKSx5LnN0eWxlLndpZHRoPSIiLmNvbmNhdCh1ZSwicHgiKSwhMX19XSksaH0oWFopO2Z1bmN0aW9uIERkZShkKXtyZXR1cm4oRGRlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9y''@;'; put 'put ''P2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gTENlKGQsZyl7''@;'; put 'put ''Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gTGRlKGQs''@;'; put 'put ''Zyl7cmV0dXJuKExkZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIExVZShkLGcpe2lmKGcmJigib2JqZWN0Ij09PURkZShnKXx8ImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gT1VlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVy''@;'; put 'put ''ZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gUGVlKGQpe3JldHVybihQZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVu''@;'; put 'put ''Y3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgT2RlPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBJVWUoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVz''@;'; put 'put ''c2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3Rv''@;'; put 'put ''dHlwZSIse3dyaXRhYmxlOiExfSksZyYmTGRlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gRFVlKGQpe3ZhciBnPWZ1bmN0aW9uIFJVZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiEx''@;'; put 'put ''O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgeSx2PVBlZShkKTtpZihnKXt2YXIgQz1QZWUodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIExVZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2LHksQyxJKXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24gVFVlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksZy5jYWxsKHRoaXMsdix5LEMsSSx4dyl9cmV0dXJuIGZ1bmN0aW9uIHhVZShkLGcsaCl7cmV0dXJu''@;'; put 'put ''IGcmJkxDZShkLnByb3RvdHlwZSxnKSxoJiZMQ2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxkfShoKX0odk8pO0IyKE9kZSx2Q2UpLEIyKE9kZSxiZGUpO2NvbnN0IEJVZT1PZGU7ZnVuY3Rpb24gUmRlKGQpe3JldHVybihSZGU9ImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5''@;'; put 'put ''bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBGZWUoZCxnLGgpe3JldHVybihGZWU9UkNlKCk/UmVmbGVjdC5jb25zdHJ1Y3QuYmluZCgpOmZ1bmN0aW9uKHksQyxJKXt2YXIgWj1bbnVsbF07Wi5wdXNoLmFwcGx5KFosQyk7dmFyIF9lPW5ldyhGdW5jdGlv''@;'; put 'put ''bi5iaW5kLmFwcGx5KHksWikpO3JldHVybiBJJiZIZWUoX2UsSS5wcm90b3R5cGUpLF9lfSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIE9DZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYu''@;'; put 'put ''Y29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIEhlZShkLGcpe3JldHVybihIZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rp''@;'; put 'put ''b24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBWVWUoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1SZGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0''@;'; put 'put ''b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIGpVZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7''@;'; put 'put ''cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIFJDZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xl''@;'; put 'put ''YW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX1mdW5jdGlvbiBOZWUoZCl7cmV0dXJuKE5lZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJp''@;'; put 'put ''bmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBaVWU9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIEhVZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBl''@;'; put 'put ''ciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''ZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZIZWUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBOVWUoZCl7dmFyIGc9UkNlKCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1OZWUoZCk7aWYoZyl7dmFyIEM9TmVlKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1''@;'; put 'put ''Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBWVWUodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5LEMsSSxaLHVlKXt2YXIgX2U7cmV0dXJuIGZ1bmN0aW9uIFBVZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLChfZT1nLmNhbGwodGhpcyx2LHkseHcsQyxJKSkuYm90dG9tT3ZlcmxheT1aLF9lLmlubGluZVN0YXJ0T3ZlcmxheT11ZSxfZX1yZXR1cm4gZnVuY3Rpb24gRlVlKGQsZyxoKXtnJiZPQ2UoZC5wcm90''@;'; put 'put ''b3R5cGUsZyksaCYmT0NlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImNyZWF0ZVRhYmxlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgeT1hcmd1bWVudHMubGVuZ3RoLEM9bmV3IEFycmF5KHkpLEk9MDtJPHk7SSsr''@;'; put 'put ''KUNbSV09YXJndW1lbnRzW0ldO3JldHVybiBGZWUoQlVlLEMpfX0se2tleToic2hvdWxkQmVSZW5kZXJlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInNob3VsZFJlbmRlckJvdHRvbU92ZXJsYXkiKSYmdGhpcy53dFNldHRpbmdzLmdldFNl''@;'; put 'put ''dHRpbmcoInNob3VsZFJlbmRlcklubGluZVN0YXJ0T3ZlcmxheSIpfX0se2tleToicmVzZXRGaXhlZFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMud290O2lmKHRoaXMudXBkYXRlVHJpbW1pbmdDb250YWluZXIoKSwheS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlKXJl''@;'; put 'put ''dHVybiExO3ZhciBDPXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZTtpZihDLnN0eWxlLnRvcD0iIix0aGlzLnRyaW1taW5nQ29udGFpbmVyPT09dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93KXt2YXIgST10aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRPdmVybGF5T2Zm''@;'; put 'put ''c2V0KCksWj10aGlzLmJvdHRvbU92ZXJsYXkuZ2V0T3ZlcmxheU9mZnNldCgpO0Muc3R5bGVbdGhpcy5pc1J0bCgpPyJyaWdodCI6ImxlZnQiXT0iIi5jb25jYXQoSSwicHgiKSxDLnN0eWxlLmJvdHRvbT0iIi5jb25jYXQoWiwicHgiKX1lbHNlIGpaKEMpLHRoaXMucmVwb3NpdGlvbk92ZXJs''@;'; put 'put ''YXkoKTt2YXIgdWU9RDEodGhpcy5jbG9uZS53dFRhYmxlLlRBQkxFKSxfZT1FMih0aGlzLmNsb25lLnd0VGFibGUuVEFCTEUpO3JldHVybiB0aGlzLndvdC53dFRhYmxlLmhhc0RlZmluZWRTaXplKCl8fCh1ZT0wKSxDLnN0eWxlLmhlaWdodD0iIi5jb25jYXQodWUsInB4IiksQy5zdHlsZS53''@;'; put 'put ''aWR0aD0iIi5jb25jYXQoX2UsInB4IiksITF9fSx7a2V5OiJyZXBvc2l0aW9uT3ZlcmxheSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLndvdCxDPXkud3RUYWJsZSxJPXkud3RWaWV3cG9ydCxaPXRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50LHVlPXRoaXMuY2xvbmUud3RUYWJs''@;'; put 'put ''ZS5ob2xkZXIucGFyZW50Tm9kZSxfZT0wO0kuaGFzVmVydGljYWxTY3JvbGwoKXx8KF9lKz1JLmdldFdvcmtzcGFjZUhlaWdodCgpLUMuZ2V0VG90YWxIZWlnaHQoKSksSS5oYXNWZXJ0aWNhbFNjcm9sbCgpJiZJLmhhc0hvcml6b250YWxTY3JvbGwoKSYmKF9lKz1CYyhaKSksdWUuc3R5bGUu''@;'; put 'put ''Ym90dG9tPSIiLmNvbmNhdChfZSwicHgiKX19XSksaH0oWFopO2Z1bmN0aW9uIFR3KGQsZyxoKXtyZXR1cm4oVHc9elVlKCk/UmVmbGVjdC5jb25zdHJ1Y3QuYmluZCgpOmZ1bmN0aW9uKHksQyxJKXt2YXIgWj1bbnVsbF07Wi5wdXNoLmFwcGx5KFosQyk7dmFyIF9lPW5ldyhGdW5jdGlvbi5i''@;'; put 'put ''aW5kLmFwcGx5KHksWikpO3JldHVybiBJJiZCZGUoX2UsSS5wcm90b3R5cGUpLF9lfSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIHpVZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJl''@;'; put 'put ''dHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX1mdW5jdGlvbiBCZGUo''@;'; put 'put ''ZCxnKXtyZXR1cm4oQmRlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gQkNlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdb''@;'; put 'put ''aF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gSXcoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfXZhciBZVWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCx2LHksQyxJKXsoZnVuY3Rpb24gR1VlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLEl3KHRoaXMsIndvdCIsbnVsbCksSXcodGhpcywidG9wT3ZlcmxheSIsbnVsbCksSXcodGhpcywiYm90dG9tT3ZlcmxheSIsbnVsbCksSXcodGhpcywiaW5saW5lU3RhcnRPdmVybGF5IixudWxs''@;'; put 'put ''KSxJdyh0aGlzLCJ0b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkiLG51bGwpLEl3KHRoaXMsImJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSIsbnVsbCksSXcodGhpcywiYnJvd3NlckxpbmVIZWlnaHQiLHZvaWQgMCksSXcodGhpcywid3RTZXR0aW5ncyIsbnVsbCksdGhpcy53b3Q9''@;'; put 'put ''Zyx0aGlzLnd0U2V0dGluZ3M9eSx0aGlzLmRvbUJpbmRpbmdzPXYsdGhpcy5mYWNhZGVHZXR0ZXI9aCx0aGlzLnd0VGFibGU9STt2YXIgWj10aGlzLmRvbUJpbmRpbmdzLHVlPVoucm9vdERvY3VtZW50LF9lPVoucm9vdFdpbmRvdzt0aGlzLmluc3RhbmNlPXRoaXMud290LHRoaXMuZXZlbnRN''@;'; put 'put ''YW5hZ2VyPUMsdGhpcy5zY3JvbGxiYXJTaXplPUJjKHVlKTt2YXIgQmU9ImhpZGRlbiI9PT1fZS5nZXRDb21wdXRlZFN0eWxlKEkud3RSb290RWxlbWVudC5wYXJlbnROb2RlKS5nZXRQcm9wZXJ0eVZhbHVlKCJvdmVyZmxvdyIpO3RoaXMuc2Nyb2xsYWJsZUVsZW1lbnQ9QmU/SS5ob2xkZXI6''@;'; put 'put ''SFooSS5UQUJMRSksdGhpcy5pbml0T3ZlcmxheXMoKSx0aGlzLmhhc1Njcm9sbGJhckJvdHRvbT0hMSx0aGlzLmhhc1Njcm9sbGJhclJpZ2h0PSExLHRoaXMuZGVzdHJveWVkPSExLHRoaXMua2V5UHJlc3NlZD0hMSx0aGlzLnNwcmVhZGVyTGFzdFNpemU9e3dpZHRoOm51bGwsaGVpZ2h0Om51''@;'; put 'put ''bGx9LHRoaXMudmVydGljYWxTY3JvbGxpbmc9ITEsdGhpcy5ob3Jpem9udGFsU2Nyb2xsaW5nPSExLHRoaXMuaW5pdEJyb3dzZXJMaW5lSGVpZ2h0KCksdGhpcy5yZWdpc3Rlckxpc3RlbmVycygpLHRoaXMubGFzdFNjcm9sbFg9X2Uuc2Nyb2xsWCx0aGlzLmxhc3RTY3JvbGxZPV9lLnNjcm9s''@;'; put 'put ''bFl9cmV0dXJuIGZ1bmN0aW9uIFdVZShkLGcsaCl7ZyYmQkNlKGQucHJvdG90eXBlLGcpLGgmJkJDZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJpbml0QnJvd3NlckxpbmVIZWlnaHQiLHZhbHVlOmZ1bmN0aW9uKCl7''@;'; put 'put ''dmFyIGg9dGhpcy5kb21CaW5kaW5ncyxDPWgucm9vdFdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGgucm9vdERvY3VtZW50LmJvZHkpLEk9cGFyc2VJbnQoQy5saW5lSGVpZ2h0LDEwKSxaPTEuMipwYXJzZUludChDLmZvbnRTaXplLDEwKTt0aGlzLmJyb3dzZXJMaW5lSGVpZ2h0PUl8fFp9fSx7''@;'; put 'put ''a2V5OiJpbml0T3ZlcmxheXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9W3RoaXMud290LHRoaXMuZmFjYWRlR2V0dGVyLHRoaXMud3RTZXR0aW5ncyx0aGlzLmRvbUJpbmRpbmdzXTt0aGlzLnRvcE92ZXJsYXk9VHcoUlllLGgpLHRoaXMuYm90dG9tT3ZlcmxheT1UdyhYWWUsaCksdGhpcy5p''@;'; put 'put ''bmxpbmVTdGFydE92ZXJsYXk9VHcoZFVlLGgpLHRoaXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5PVR3KEVVZSxoLmNvbmNhdChbdGhpcy50b3BPdmVybGF5LHRoaXMuaW5saW5lU3RhcnRPdmVybGF5XSkpLHRoaXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5PVR3KFpVZSxo''@;'; put 'put ''LmNvbmNhdChbdGhpcy5ib3R0b21PdmVybGF5LHRoaXMuaW5saW5lU3RhcnRPdmVybGF5XSkpfX0se2tleToidXBkYXRlU3RhdGVPZlJlbmRlcmluZyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLnRvcE92ZXJsYXkudXBkYXRlU3RhdGVPZlJlbmRlcmluZygpO3JldHVybiBoPXRoaXMu''@;'; put 'put ''Ym90dG9tT3ZlcmxheS51cGRhdGVTdGF0ZU9mUmVuZGVyaW5nKCl8fGgsaD10aGlzLmlubGluZVN0YXJ0T3ZlcmxheS51cGRhdGVTdGF0ZU9mUmVuZGVyaW5nKCl8fGgsdGhpcy5pbmxpbmVTdGFydE92ZXJsYXkubmVlZEZ1bGxSZW5kZXImJih0aGlzLnRvcE92ZXJsYXkubmVlZEZ1bGxSZW5k''@;'; put 'put ''ZXImJihoPXRoaXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LnVwZGF0ZVN0YXRlT2ZSZW5kZXJpbmcoKXx8aCksdGhpcy5ib3R0b21PdmVybGF5Lm5lZWRGdWxsUmVuZGVyJiYoaD10aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS51cGRhdGVTdGF0ZU9mUmVuZGVyaW5n''@;'; put 'put ''KCl8fGgpKSxofX0se2tleToicmVmcmVzaEFsbCIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLndvdC5kcmF3bil7aWYoIXRoaXMud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSlyZXR1cm4gdm9pZCB0aGlzLmRlc3Ryb3koKTt0aGlzLndvdC5kcmF3KCEwKSx0aGlzLnZlcnRpY2FsU2Nyb2xs''@;'; put 'put ''aW5nJiZ0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5vblNjcm9sbCgpLHRoaXMuaG9yaXpvbnRhbFNjcm9sbGluZyYmdGhpcy50b3BPdmVybGF5Lm9uU2Nyb2xsKCksdGhpcy52ZXJ0aWNhbFNjcm9sbGluZz0hMSx0aGlzLmhvcml6b250YWxTY3JvbGxpbmc9ITF9fX0se2tleToicmVnaXN0ZXJM''@;'; put 'put ''aXN0ZW5lcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcyx2PXRoaXMuZG9tQmluZGluZ3MseT12LnJvb3REb2N1bWVudCxDPXYucm9vdFdpbmRvdyxJPXRoaXMudG9wT3ZlcmxheS5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudCxaPXRoaXMuaW5saW5lU3RhcnRPdmVybGF5Lm1haW5U''@;'; put 'put ''YWJsZVNjcm9sbGFibGVFbGVtZW50O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoeS5kb2N1bWVudEVsZW1lbnQsImtleWRvd24iLGZ1bmN0aW9uKE90KXtyZXR1cm4gaC5vbktleURvd24oT3QpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih5LmRvY3Vt''@;'; put 'put ''ZW50RWxlbWVudCwia2V5dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIGgub25LZXlVcCgpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih5LCJ2aXNpYmlsaXR5Y2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBoLm9uS2V5VXAoKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50''@;'; put 'put ''TGlzdGVuZXIoSSwic2Nyb2xsIixmdW5jdGlvbihPdCl7cmV0dXJuIGgub25UYWJsZVNjcm9sbChPdCl9LHtwYXNzaXZlOiEwfSksSSE9PVomJnRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoWiwic2Nyb2xsIixmdW5jdGlvbihPdCl7cmV0dXJuIGgub25UYWJsZVNjcm9sbChP''@;'; put 'put ''dCl9LHtwYXNzaXZlOiEwfSk7dmFyIHB0LHVlPUMuZGV2aWNlUGl4ZWxSYXRpbyYmQy5kZXZpY2VQaXhlbFJhdGlvPjEsX2U9dGhpcy5zY3JvbGxhYmxlRWxlbWVudD09PUMsQmU9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRXaGVlbCIpLE5lPXtwYXNzaXZlOl9lfTsoQmV8''@;'; put 'put ''fHVlfHwhd2JlKCkpJiZ0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHRoaXMud3RUYWJsZS53dFJvb3RFbGVtZW50LCJ3aGVlbCIsZnVuY3Rpb24oT3Qpe3JldHVybiBoLm9uQ2xvbmVXaGVlbChPdCxCZSl9LE5lKSxbdGhpcy50b3BPdmVybGF5LHRoaXMuYm90dG9tT3Zlcmxh''@;'; put 'put ''eSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheSx0aGlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSx0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheV0uZm9yRWFjaChmdW5jdGlvbihPdCl7T3QmJk90Lm5lZWRGdWxsUmVuZGVyJiZoLmV2ZW50TWFuYWdlci5hZGRFdmVudExp''@;'; put 'put ''c3RlbmVyKE90LmNsb25lLnd0VGFibGUuaG9sZGVyLCJ3aGVlbCIsZnVuY3Rpb24oZm4pe3JldHVybiBoLm9uQ2xvbmVXaGVlbChmbixCZSl9LE5lKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoQywicmVzaXplIixmdW5jdGlvbigpe2NsZWFyVGltZW91dChwdCkscHQ9''@;'; put 'put ''c2V0VGltZW91dChmdW5jdGlvbigpe2gud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvbldpbmRvd1Jlc2l6ZSIpfSwyMDApfSl9fSx7a2V5OiJkZXJlZ2lzdGVyTGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZXZlbnRNYW5hZ2VyLmNsZWFyRXZlbnRzKCEwKX19LHtrZXk6Im9uVGFi''@;'; put 'put ''bGVTY3JvbGwiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyx5PXRoaXMuaW5saW5lU3RhcnRPdmVybGF5Lm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LEM9dGhpcy50b3BPdmVybGF5Lm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LEk9aC50''@;'; put 'put ''YXJnZXQ7dGhpcy5rZXlQcmVzc2VkJiYoQyE9PXYmJkkhPT12JiYhaC50YXJnZXQuY29udGFpbnMoQyl8fHkhPT12JiZJIT09diYmIWgudGFyZ2V0LmNvbnRhaW5zKHkpKXx8dGhpcy5zeW5jU2Nyb2xsUG9zaXRpb25zKGgpfX0se2tleToib25DbG9uZVdoZWVsIix2YWx1ZTpmdW5jdGlvbiho''@;'; put 'put ''LHYpe3ZhciB5PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxDPXRoaXMuaW5saW5lU3RhcnRPdmVybGF5Lm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LEk9dGhpcy50b3BPdmVybGF5Lm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LFo9aC50YXJnZXQsdWU9SSE9PXkmJlohPT15JiYh''@;'; put 'put ''Wi5jb250YWlucyhJKSxfZT1DIT09eSYmWiE9PXkmJiFaLmNvbnRhaW5zKEMpO2lmKCF0aGlzLmtleVByZXNzZWR8fCF1ZSYmIV9lKXt2YXIgQmU9dGhpcy50cmFuc2xhdGVNb3VzZVdoZWVsVG9TY3JvbGwoaCk7KHZ8fHRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQhPT15JiZCZSkmJmgucHJldmVu''@;'; put 'put ''dERlZmF1bHQoKX19fSx7a2V5OiJvbktleURvd24iLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMua2V5UHJlc3NlZD1kTyhoLmtleUNvZGUsIkFSUk9XX1VQfEFSUk9XX1JJR0hUfEFSUk9XX0RPV058QVJST1dfTEVGVCIpfX0se2tleToib25LZXlVcCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmtl''@;'; put 'put ''eVByZXNzZWQ9ITF9fSx7a2V5OiJ0cmFuc2xhdGVNb3VzZVdoZWVsVG9TY3JvbGwiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PWlzTmFOKGguZGVsdGFZKT8tMSpoLndoZWVsRGVsdGFZOmguZGVsdGFZLHk9aXNOYU4oaC5kZWx0YVgpPy0xKmgud2hlZWxEZWx0YVg6aC5kZWx0YVg7MT09PWgu''@;'; put 'put ''ZGVsdGFNb2RlJiYoeSs9eSp0aGlzLmJyb3dzZXJMaW5lSGVpZ2h0LHYrPXYqdGhpcy5icm93c2VyTGluZUhlaWdodCk7dmFyIEM9dGhpcy5zY3JvbGxWZXJ0aWNhbGx5KHYpLEk9dGhpcy5zY3JvbGxIb3Jpem9udGFsbHkoeSk7cmV0dXJuIEN8fEl9fSx7a2V5OiJzY3JvbGxWZXJ0aWNhbGx5''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLnNjcm9sbGFibGVFbGVtZW50LnNjcm9sbFRvcDtyZXR1cm4gdGhpcy5zY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxUb3ArPWgsdiE9PXRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsVG9wfX0se2tleToic2Nyb2xsSG9yaXpvbnRhbGx5''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLnNjcm9sbGFibGVFbGVtZW50LnNjcm9sbExlZnQ7cmV0dXJuIHRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsTGVmdCs9aCx2IT09dGhpcy5zY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxMZWZ0fX0se2tleToic3luY1Njcm9sbFBvc2l0''@;'; put 'put ''aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy5kZXN0cm95ZWQpe3ZhciBoPXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyx2PXRoaXMudG9wT3ZlcmxheS5jbG9uZS53dFRhYmxlLmhvbGRlcix5PXRoaXMuaW5saW5lU3RhcnRPdmVybGF5LmNsb25lLnd0VGFibGUuaG9sZGVyLEM9''@;'; put 'put ''W3RoaXMuc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsTGVmdCx0aGlzLnNjcm9sbGFibGVFbGVtZW50LnNjcm9sbFRvcF0sST1DWzBdLFo9Q1sxXTtpZih0aGlzLmhvcml6b250YWxTY3JvbGxpbmc9di5zY3JvbGxMZWZ0IT09SXx8dGhpcy5sYXN0U2Nyb2xsWCE9PWguc2Nyb2xsWCx0aGlzLnZl''@;'; put 'put ''cnRpY2FsU2Nyb2xsaW5nPXkuc2Nyb2xsVG9wIT09Wnx8dGhpcy5sYXN0U2Nyb2xsWSE9PWguc2Nyb2xsWSx0aGlzLmxhc3RTY3JvbGxYPWguc2Nyb2xsWCx0aGlzLmxhc3RTY3JvbGxZPWguc2Nyb2xsWSx0aGlzLmhvcml6b250YWxTY3JvbGxpbmcpe3Yuc2Nyb2xsTGVmdD1JO3ZhciB1ZT10''@;'; put 'put ''aGlzLmJvdHRvbU92ZXJsYXkubmVlZEZ1bGxSZW5kZXI/dGhpcy5ib3R0b21PdmVybGF5LmNsb25lLnd0VGFibGUuaG9sZGVyOm51bGw7dWUmJih1ZS5zY3JvbGxMZWZ0PUkpfXRoaXMudmVydGljYWxTY3JvbGxpbmcmJih5LnNjcm9sbFRvcD1aKSx0aGlzLnJlZnJlc2hBbGwoKX19fSx7a2V5''@;'; put 'put ''OiJzeW5jU2Nyb2xsV2l0aE1hc3RlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLnRvcE92ZXJsYXkubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQsdj1oLnNjcm9sbExlZnQseT1oLnNjcm9sbFRvcDt0aGlzLnRvcE92ZXJsYXkubmVlZEZ1bGxSZW5kZXImJih0aGlzLnRvcE92ZXJs''@;'; put 'put ''YXkuY2xvbmUud3RUYWJsZS5ob2xkZXIuc2Nyb2xsTGVmdD12KSx0aGlzLmJvdHRvbU92ZXJsYXkubmVlZEZ1bGxSZW5kZXImJih0aGlzLmJvdHRvbU92ZXJsYXkuY2xvbmUud3RUYWJsZS5ob2xkZXIuc2Nyb2xsTGVmdD12KSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5uZWVkRnVsbFJlbmRl''@;'; put 'put ''ciYmKHRoaXMuaW5saW5lU3RhcnRPdmVybGF5LmNsb25lLnd0VGFibGUuaG9sZGVyLnNjcm9sbFRvcD15KX19LHtrZXk6InVwZGF0ZU1haW5TY3JvbGxhYmxlRWxlbWVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kZXJlZ2lzdGVyTGlzdGVuZXJzKCksdGhpcy5pbmxpbmVTdGFydE92ZXJs''@;'; put 'put ''YXkudXBkYXRlTWFpblNjcm9sbGFibGVFbGVtZW50KCksdGhpcy50b3BPdmVybGF5LnVwZGF0ZU1haW5TY3JvbGxhYmxlRWxlbWVudCgpLHRoaXMuYm90dG9tT3ZlcmxheS5uZWVkRnVsbFJlbmRlciYmdGhpcy5ib3R0b21PdmVybGF5LnVwZGF0ZU1haW5TY3JvbGxhYmxlRWxlbWVudCgpO3Zh''@;'; put 'put ''ciBoPXRoaXMud3RUYWJsZTt0aGlzLnNjcm9sbGFibGVFbGVtZW50PSJoaWRkZW4iPT09dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LmdldENvbXB1dGVkU3R5bGUoaC53dFJvb3RFbGVtZW50LnBhcmVudE5vZGUpLmdldFByb3BlcnR5VmFsdWUoIm92ZXJmbG93Iik/aC5ob2xkZXI6SFoo''@;'; put 'put ''aC5UQUJMRSksdGhpcy5yZWdpc3Rlckxpc3RlbmVycygpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmV2ZW50TWFuYWdlci5kZXN0cm95KCksdGhpcy50b3BPdmVybGF5LmRlc3Ryb3koKSx0aGlzLmJvdHRvbU92ZXJsYXkuY2xvbmUmJnRoaXMuYm90dG9tT3Zlcmxh''@;'; put 'put ''eS5kZXN0cm95KCksdGhpcy5pbmxpbmVTdGFydE92ZXJsYXkuZGVzdHJveSgpLHRoaXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5JiZ0aGlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5kZXN0cm95KCksdGhpcy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJnRoaXMu''@;'; put 'put ''Ym90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmNsb25lJiZ0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5kZXN0cm95KCksdGhpcy5kZXN0cm95ZWQ9ITB9fSx7a2V5OiJyZWZyZXNoIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9p''@;'; put 'put ''ZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sdj10aGlzLnd0VGFibGUuc3ByZWFkZXIseT12LmNsaWVudFdpZHRoLEM9di5jbGllbnRIZWlnaHQ7KHkhPT10aGlzLnNwcmVhZGVyTGFzdFNpemUud2lkdGh8fEMhPT10aGlzLnNwcmVhZGVyTGFzdFNpemUuaGVpZ2h0KSYmKHRoaXMu''@;'; put 'put ''c3ByZWFkZXJMYXN0U2l6ZS53aWR0aD15LHRoaXMuc3ByZWFkZXJMYXN0U2l6ZS5oZWlnaHQ9Qyx0aGlzLmFkanVzdEVsZW1lbnRzU2l6ZSgpKSx0aGlzLmJvdHRvbU92ZXJsYXkuY2xvbmUmJnRoaXMuYm90dG9tT3ZlcmxheS5yZWZyZXNoKGgpLHRoaXMuaW5saW5lU3RhcnRPdmVybGF5LnJl''@;'; put 'put ''ZnJlc2goaCksdGhpcy50b3BPdmVybGF5LnJlZnJlc2goaCksdGhpcy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJnRoaXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LnJlZnJlc2goaCksdGhpcy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJnRoaXMuYm90dG9tSW5s''@;'; put 'put ''aW5lU3RhcnRDb3JuZXJPdmVybGF5LmNsb25lJiZ0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5yZWZyZXNoKGgpfX0se2tleToiYWRqdXN0RWxlbWVudHNTaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRz''@;'; put 'put ''WzBdJiZhcmd1bWVudHNbMF0sdj10aGlzLndvdC53dFZpZXdwb3J0LHk9dGhpcy53dFRhYmxlLEM9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpLEk9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpLFo9di5nZXRSb3dIZWFkZXJXaWR0aCgp''@;'; put 'put ''LHVlPXYuZ2V0Q29sdW1uSGVhZGVySGVpZ2h0KCksX2U9eS5oaWRlci5zdHlsZTtpZihfZS53aWR0aD0iIi5jb25jYXQoWit0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5zdW1DZWxsU2l6ZXMoMCxDKSwicHgiKSxfZS5oZWlnaHQ9IiIuY29uY2F0KHVlK3RoaXMudG9wT3ZlcmxheS5zdW1DZWxs''@;'; put 'put ''U2l6ZXMoMCxJKSsxLCJweCIpLHRoaXMuc2Nyb2xsYmFyU2l6ZT4wKXt2YXIgQmU9eS53dFJvb3RFbGVtZW50LE5lPUJlLnNjcm9sbEhlaWdodCxLZT1CZS5zY3JvbGxXaWR0aCxwdD15LmhvbGRlcixPdD1wdC5zY3JvbGxIZWlnaHQsJHQ9cHQuc2Nyb2xsV2lkdGg7dGhpcy5oYXNTY3JvbGxi''@;'; put 'put ''YXJSaWdodD1OZTxPdCx0aGlzLmhhc1Njcm9sbGJhckJvdHRvbT1LZTwkdCx0aGlzLmhhc1Njcm9sbGJhclJpZ2h0JiZ5LmhpZGVyLnNjcm9sbFdpZHRoK3RoaXMuc2Nyb2xsYmFyU2l6ZT5LZT90aGlzLmhhc1Njcm9sbGJhckJvdHRvbT0hMDp0aGlzLmhhc1Njcm9sbGJhckJvdHRvbSYmeS5o''@;'; put 'put ''aWRlci5zY3JvbGxIZWlnaHQrdGhpcy5zY3JvbGxiYXJTaXplPk5lJiYodGhpcy5oYXNTY3JvbGxiYXJSaWdodD0hMCl9dGhpcy50b3BPdmVybGF5LmFkanVzdEVsZW1lbnRzU2l6ZShoKSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5hZGp1c3RFbGVtZW50c1NpemUoaCksdGhpcy5ib3R0b21P''@;'; put 'put ''dmVybGF5LmFkanVzdEVsZW1lbnRzU2l6ZShoKX19LHtrZXk6ImFwcGx5VG9ET00iLHZhbHVlOmZ1bmN0aW9uKCl7IXRoaXMud3RUYWJsZS5pc1Zpc2libGUoKXx8KHRoaXMudG9wT3ZlcmxheS5hcHBseVRvRE9NKCksdGhpcy5ib3R0b21PdmVybGF5LmNsb25lJiZ0aGlzLmJvdHRvbU92ZXJs''@;'; put 'put ''YXkuYXBwbHlUb0RPTSgpLHRoaXMuaW5saW5lU3RhcnRPdmVybGF5LmFwcGx5VG9ET00oKSl9fSx7a2V5OiJnZXRQYXJlbnRPdmVybGF5Iix2YWx1ZTpmdW5jdGlvbihoKXtpZighaClyZXR1cm4gbnVsbDt2YXIgeT1udWxsO3JldHVybiBVcihbdGhpcy50b3BPdmVybGF5LHRoaXMuaW5saW5l''@;'; put 'put ''U3RhcnRPdmVybGF5LHRoaXMuYm90dG9tT3ZlcmxheSx0aGlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSx0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheV0sZnVuY3Rpb24oQyl7IUN8fEMuY2xvbmUmJkMuY2xvbmUud3RUYWJsZS5UQUJMRS5jb250YWlucyhoKSYmKHk9''@;'; put 'put ''Qy5jbG9uZSl9KSx5fX0se2tleToic3luY092ZXJsYXlUYWJsZUNsYXNzTmFtZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy53dFRhYmxlLlRBQkxFO1VyKFt0aGlzLnRvcE92ZXJsYXksdGhpcy5pbmxpbmVTdGFydE92ZXJsYXksdGhpcy5ib3R0b21PdmVybGF5LHRoaXMudG9wSW5s''@;'; put 'put ''aW5lU3RhcnRDb3JuZXJPdmVybGF5LHRoaXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5XSxmdW5jdGlvbih5KXsheXx8KHkuY2xvbmUud3RUYWJsZS5UQUJMRS5jbGFzc05hbWU9aC5jbGFzc05hbWUpfSl9fV0pLGR9KCk7Y29uc3QgVVVlPVlVZTtmdW5jdGlvbiBQQ2UoZCxnKXtm''@;'; put 'put ''b3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBGQ2UoZCxn''@;'; put 'put ''LGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfXZhciBYVWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpe3ZhciBoPXRoaXM7KGZ1bmN0aW9uIFFVZShk''@;'; put 'put ''LGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSxGQ2UodGhpcywic2V0dGluZ3MiLHt9KSxGQ2UodGhpcywiZGVmYXVsdHMiLE9iamVjdC5mcmVlemUodGhpcy5nZXREZWZhdWx0''@;'; put 'put ''cygpKSksR2wodGhpcy5kZWZhdWx0cyxmdW5jdGlvbih2LHkpe2lmKHZvaWQgMCE9PWdbeV0paC5zZXR0aW5nc1t5XT1nW3ldO2Vsc2V7aWYodm9pZCAwPT09dil0aHJvdyBuZXcgRXJyb3IoJ0EgcmVxdWlyZWQgc2V0dGluZyAiJy5jb25jYXQoeSwnIiB3YXMgbm90IHByb3ZpZGVkJykpO2gu''@;'; put 'put ''c2V0dGluZ3NbeV09dn19KX1yZXR1cm4gZnVuY3Rpb24gSlVlKGQsZyxoKXtnJiZQQ2UoZC5wcm90b3R5cGUsZyksaCYmUENlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImdldERlZmF1bHRzIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpe3ZhciBoPXRoaXM7cmV0dXJue2ZhY2FkZTp2b2lkIDAsdGFibGU6dm9pZCAwLGlzRGF0YVZpZXdJbnN0YW5jZTohMCxleHRlcm5hbFJvd0NhbGN1bGF0b3I6ITEsc3RyZXRjaEg6Im5vbmUiLGN1cnJlbnRSb3dDbGFzc05hbWU6bnVsbCxjdXJyZW50Q29sdW1uQ2xhc3NOYW1lOm51bGws''@;'; put 'put ''cHJldmVudE92ZXJmbG93OmZ1bmN0aW9uKCl7cmV0dXJuITF9LHByZXZlbnRXaGVlbDohMSxkYXRhOnZvaWQgMCxmcmVlemVPdmVybGF5czohMSxmaXhlZENvbHVtbnNTdGFydDowLGZpeGVkUm93c1RvcDowLGZpeGVkUm93c0JvdHRvbTowLHNob3VsZFJlbmRlcklubGluZVN0YXJ0T3Zlcmxh''@;'; put 'put ''eTpmdW5jdGlvbigpe3JldHVybiBoLmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0Iik+MHx8aC5nZXRTZXR0aW5nKCJyb3dIZWFkZXJzIikubGVuZ3RoPjB9LHNob3VsZFJlbmRlclRvcE92ZXJsYXk6ZnVuY3Rpb24oKXtyZXR1cm4gaC5nZXRTZXR0aW5nKCJmaXhlZFJvd3NUb3AiKT4w''@;'; put 'put ''fHxoLmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGg+MH0sc2hvdWxkUmVuZGVyQm90dG9tT3ZlcmxheTpmdW5jdGlvbigpe3JldHVybiBoLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpPjB9LG1pblNwYXJlUm93czowLHJvd0hlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm5b''@;'; put 'put ''XX0sY29sdW1uSGVhZGVyczpmdW5jdGlvbigpe3JldHVybltdfSx0b3RhbFJvd3M6dm9pZCAwLHRvdGFsQ29sdW1uczp2b2lkIDAsY2VsbFJlbmRlcmVyOmZ1bmN0aW9uKHksQyxJKXt2YXIgWj1oLmdldFNldHRpbmcoImRhdGEiLHksQyk7U3coSSxudWxsPT1aPyIiOlopfSxjb2x1bW5XaWR0''@;'; put 'put ''aDpmdW5jdGlvbigpe30scm93SGVpZ2h0OmZ1bmN0aW9uKCl7fSxkZWZhdWx0Um93SGVpZ2h0OjIzLGRlZmF1bHRDb2x1bW5XaWR0aDo1MCxzZWxlY3Rpb25zOm51bGwsaGlkZUJvcmRlck9uTW91c2VEb3duT3ZlcjohMSx2aWV3cG9ydFJvd0NhbGN1bGF0b3JPdmVycmlkZTpudWxsLHZpZXdw''@;'; put 'put ''b3J0Q29sdW1uQ2FsY3VsYXRvck92ZXJyaWRlOm51bGwsb25DZWxsTW91c2VEb3duOm51bGwsb25DZWxsQ29udGV4dE1lbnU6bnVsbCxvbkNlbGxNb3VzZU92ZXI6bnVsbCxvbkNlbGxNb3VzZU91dDpudWxsLG9uQ2VsbE1vdXNlVXA6bnVsbCxvbkNlbGxEYmxDbGljazpudWxsLG9uQ2VsbENv''@;'; put 'put ''cm5lck1vdXNlRG93bjpudWxsLG9uQ2VsbENvcm5lckRibENsaWNrOm51bGwsYmVmb3JlRHJhdzpudWxsLG9uRHJhdzpudWxsLG9uQmVmb3JlUmVtb3ZlQ2VsbENsYXNzTmFtZXM6bnVsbCxvbkFmdGVyRHJhd1NlbGVjdGlvbjpudWxsLG9uQmVmb3JlRHJhd0JvcmRlcnM6bnVsbCxvblNjcm9s''@;'; put 'put ''bFZlcnRpY2FsbHk6bnVsbCxvblNjcm9sbEhvcml6b250YWxseTpudWxsLG9uQmVmb3JlVG91Y2hTY3JvbGw6bnVsbCxvbkFmdGVyTW9tZW50dW1TY3JvbGw6bnVsbCxvbkJlZm9yZVN0cmV0Y2hpbmdDb2x1bW5XaWR0aDpmdW5jdGlvbih5KXtyZXR1cm4geX0sb25Nb2RpZnlSb3dIZWFkZXJX''@;'; put 'put ''aWR0aDpudWxsLG9uTW9kaWZ5R2V0Q2VsbENvb3JkczpudWxsLG9uQmVmb3JlSGlnaGxpZ2h0aW5nUm93SGVhZGVyOmZ1bmN0aW9uKHkpe3JldHVybiB5fSxvbkJlZm9yZUhpZ2hsaWdodGluZ0NvbHVtbkhlYWRlcjpmdW5jdGlvbih5KXtyZXR1cm4geX0sb25XaW5kb3dSZXNpemU6bnVsbCxy''@;'; put 'put ''ZW5kZXJBbGxSb3dzOiExLGdyb3VwczohMSxyb3dIZWFkZXJXaWR0aDpudWxsLGNvbHVtbkhlYWRlckhlaWdodDpudWxsLGhlYWRlckNsYXNzTmFtZTpudWxsLHJ0bE1vZGU6ITF9fX0se2tleToidXBkYXRlIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PXRoaXM7cmV0dXJuIHZvaWQgMD09''@;'; put 'put ''PXY/R2woaCxmdW5jdGlvbihDLEkpe3kuc2V0dGluZ3NbSV09Q30pOnRoaXMuc2V0dGluZ3NbaF09dix0aGlzfX0se2tleToiZ2V0U2V0dGluZyIsdmFsdWU6ZnVuY3Rpb24oaCx2LHksQyxJKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5zZXR0aW5nc1toXT90aGlzLnNldHRpbmdz''@;'; put 'put ''W2hdKHYseSxDLEkpOnZvaWQgMCE9PXYmJkFycmF5LmlzQXJyYXkodGhpcy5zZXR0aW5nc1toXSk/dGhpcy5zZXR0aW5nc1toXVt2XTp0aGlzLnNldHRpbmdzW2hdfX0se2tleToiZ2V0U2V0dGluZ1B1cmUiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnNldHRpbmdzW2hdfX0se2tl''@;'; put 'put ''eToiaGFzIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4hIXRoaXMuc2V0dGluZ3NbaF19fV0pLGR9KCk7ZnVuY3Rpb24gUGRlKGQpe3JldHVybihQZGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJu''@;'; put 'put ''IHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBIQ2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVu''@;'; put 'put ''Z3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBGZGUoZCxnKXtyZXR1cm4oRmRlPU9iamVj''@;'; put 'put ''dC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gdFFlKGQsZyl7aWYoZyYmKCJvYmplY3QiPT09UGRlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7''@;'; put 'put ''aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBuUWUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFz''@;'; put 'put ''bid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBWZWUoZCl7cmV0dXJuKFZlZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5f''@;'; put 'put ''X3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBIZGU9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIHFVZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJl''@;'; put 'put ''IG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9''@;'; put 'put ''KSxnJiZGZGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBlUWUoZCl7dmFyIGc9ZnVuY3Rpb24gclFlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9VmVlKGQpO2lm''@;'; put 'put ''KGcpe3ZhciBDPVZlZSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gdFFlKHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYseSxDLEkpe3JldHVybiBmdW5jdGlvbiBLVWUoZCxn''@;'; put 'put ''KXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSxnLmNhbGwodGhpcyx2LHksQyxJLCJtYXN0ZXIiKX1yZXR1cm4gZnVuY3Rpb24gJFVlKGQsZyxoKXtnJiZIQ2UoZC5wcm90b3R5cGUs''@;'; put 'put ''ZyksaCYmSENlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImFsaWduT3ZlcmxheXNXaXRoVHJpbW1pbmdDb250YWluZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9aE8odGhpcy53dFJvb3RFbGVtZW50KSxDPXRoaXMu''@;'; put 'put ''ZG9tQmluZGluZ3Mucm9vdFdpbmRvdztpZih5PT09Qyl0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicHJldmVudE92ZXJmbG93Iil8fCh0aGlzLmhvbGRlci5zdHlsZS5vdmVyZmxvdz0idmlzaWJsZSIsdGhpcy53dFJvb3RFbGVtZW50LnN0eWxlLm92ZXJmbG93PSJ2aXNpYmxlIik7ZWxz''@;'; put 'put ''ZXt2YXIgWj15LnBhcmVudEVsZW1lbnQsdWU9bmVlKHksImhlaWdodCIsQyksX2U9bmVlKHksIm92ZXJmbG93IixDKSxCZT10aGlzLmhvbGRlci5zdHlsZSxOZT15LnNjcm9sbFdpZHRoLEtlPXkuc2Nyb2xsSGVpZ2h0LHB0PXkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksT3Q9cHQud2lkdGgs''@;'; put 'put ''JHQ9cHQuaGVpZ2h0O2lmKFomJlsiYXV0byIsImhpZGRlbiIsInNjcm9sbCJdLmluY2x1ZGVzKF9lKSl7dmFyIExuPXkuY2xvbmVOb2RlKCExKTtMbi5zdHlsZS5vdmVyZmxvdz0iYXV0byIseS5uZXh0RWxlbWVudFNpYmxpbmc/Wi5pbnNlcnRCZWZvcmUoTG4seS5uZXh0RWxlbWVudFNpYmxp''@;'; put 'put ''bmcpOlouYXBwZW5kQ2hpbGQoTG4pO3ZhciBpcj1wYXJzZUludChNdyhMbixDKS5oZWlnaHQsMTApO1oucmVtb3ZlQ2hpbGQoTG4pLDA9PT1pciYmKCR0PTApfSR0PU1hdGgubWluKCR0LEtlKSxCZS5oZWlnaHQ9ImF1dG8iPT09dWU/ImF1dG8iOiIiLmNvbmNhdCgkdCwicHgiKSxPdD1NYXRo''@;'; put 'put ''Lm1pbihPdCxOZSksQmUud2lkdGg9IiIuY29uY2F0KE90LCJweCIpLEJlLm92ZXJmbG93PSIiLHRoaXMuaGFzVGFibGVIZWlnaHQ9ImF1dG8iPT09QmUuaGVpZ2h0fHwkdD4wLHRoaXMuaGFzVGFibGVXaWR0aD1PdD4wfXRoaXMuaXNUYWJsZVZpc2libGU9Y08odGhpcy5UQUJMRSl9fSx7a2V5''@;'; put 'put ''OiJtYXJrT3ZlcnNpemVkQ29sdW1uSGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLnd0U2V0dGluZ3MsQz10aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydCxJPSJtYXN0ZXIiLHVlPXkuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpLmxlbmd0aDtpZih1ZSYmIUMu''@;'; put 'put ''aGFzT3ZlcnNpemVkQ29sdW1uSGVhZGVyc01hcmtlZFtJXSl7Zm9yKHZhciBCZT15LmdldFNldHRpbmcoInJvd0hlYWRlcnMiKS5sZW5ndGgsTmU9dGhpcy5nZXRSZW5kZXJlZENvbHVtbnNDb3VudCgpLEtlPTA7S2U8dWU7S2UrKylmb3IodmFyIHB0PS0xKkJlO3B0PE5lO3B0KyspdGhpcy5t''@;'; put 'put ''YXJrSWZPdmVyc2l6ZWRDb2x1bW5IZWFkZXIocHQpO0MuaGFzT3ZlcnNpemVkQ29sdW1uSGVhZGVyc01hcmtlZFtJXT0hMH19fV0pLGh9KHZPKTtCMihIZGUsQ0NlKSxCMihIZGUsYWRlKTtjb25zdCBpUWU9SGRlO2Z1bmN0aW9uIG9RZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIE5DZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJp''@;'; put 'put ''biB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBWQ2U9bmV3IFdlYWtNYXAsbFFlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZCgpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7''@;'; put 'put ''fSxoPWcudmlld3BvcnRTaXplLHY9Zy5zY3JvbGxPZmZzZXQseT1nLnRvdGFsSXRlbXMsQz1nLml0ZW1TaXplRm4sST1nLm92ZXJyaWRlRm4sWj1nLmNhbGN1bGF0aW9uVHlwZSx1ZT1nLnNjcm9sbGJhckhlaWdodDtvUWUodGhpcyxkKSxWQ2Uuc2V0KHRoaXMse3ZpZXdwb3J0SGVpZ2h0Omgs''@;'; put 'put ''c2Nyb2xsT2Zmc2V0OnYsdG90YWxSb3dzOnkscm93SGVpZ2h0Rm46QyxvdmVycmlkZUZuOkksY2FsY3VsYXRpb25UeXBlOlosaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodDp1ZX0pLHRoaXMuY291bnQ9MCx0aGlzLnN0YXJ0Um93PW51bGwsdGhpcy5lbmRSb3c9bnVsbCx0aGlzLnN0YXJ0UG9z''@;'; put 'put ''aXRpb249bnVsbCx0aGlzLmNhbGN1bGF0ZSgpfXJldHVybiBmdW5jdGlvbiBhUWUoZCxnLGgpe2cmJk5DZShkLnByb3RvdHlwZSxnKSxoJiZOQ2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiY2FsY3VsYXRlIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe2Zvcih2YXIgcHQsaD0wLHY9ITAseT1bXSxDPVZDZS5nZXQodGhpcyksST1DLmNhbGN1bGF0aW9uVHlwZSxaPUMub3ZlcnJpZGVGbix1ZT1DLnJvd0hlaWdodEZuLF9lPUMuc2Nyb2xsT2Zmc2V0LEJlPUMudG90YWxSb3dzLE5lPUMudmlld3BvcnRIZWlnaHQsS2U9Qy5o''@;'; put 'put ''b3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0fHwwLE90PTA7T3Q8QmU7T3QrKylpZihwdD11ZShPdCksaXNOYU4ocHQpJiYocHQ9ZC5ERUZBVUxUX0hFSUdIVCksaDw9X2UmJjIhPT1JJiYodGhpcy5zdGFydFJvdz1PdCksaD49X2UmJmgrKDI9PT1JP3B0OjApPD1fZStOZS1LZSYmKG51bGw9PT10''@;'; put 'put ''aGlzLnN0YXJ0Um93JiYodGhpcy5zdGFydFJvdz1PdCksdGhpcy5lbmRSb3c9T3QpLHkucHVzaChoKSxoKz1wdCwyIT09SSYmKHRoaXMuZW5kUm93PU90KSxoPj1fZStOZS1LZSl7dj0hMTticmVha31pZih0aGlzLmVuZFJvdz09PUJlLTEmJnYpZm9yKHRoaXMuc3RhcnRSb3c9dGhpcy5lbmRS''@;'; put 'put ''b3c7dGhpcy5zdGFydFJvdz4wOyl7dmFyICR0PXlbdGhpcy5lbmRSb3ddK3B0LXlbdGhpcy5zdGFydFJvdy0xXTtpZigoJHQ8PU5lLUtlfHwyIT09SSkmJih0aGlzLnN0YXJ0Um93LT0xKSwkdD49TmUtS2UpYnJlYWt9MT09PUkmJm51bGwhPT10aGlzLnN0YXJ0Um93JiZaJiZaKHRoaXMpLHRo''@;'; put 'put ''aXMuc3RhcnRQb3NpdGlvbj15W3RoaXMuc3RhcnRSb3ddLHZvaWQgMD09PXRoaXMuc3RhcnRQb3NpdGlvbiYmKHRoaXMuc3RhcnRQb3NpdGlvbj1udWxsKSxCZTx0aGlzLmVuZFJvdyYmKHRoaXMuZW5kUm93PUJlLTEpLG51bGwhPT10aGlzLnN0YXJ0Um93JiYodGhpcy5jb3VudD10aGlzLmVu''@;'; put 'put ''ZFJvdy10aGlzLnN0YXJ0Um93KzEpfX1dLFt7a2V5OiJERUZBVUxUX0hFSUdIVCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDIzfX1dKSxkfSgpO2NvbnN0IGpDZT1sUWU7ZnVuY3Rpb24gc1FlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNh''@;'; put 'put ''bGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gWkNlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIEFPPW5ldyBXZWFrTWFwLGNRZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30saD1nLnZpZXdwb3J0U2l6ZSx2PWcuc2Ny''@;'; put 'put ''b2xsT2Zmc2V0LHk9Zy50b3RhbEl0ZW1zLEM9Zy5pdGVtU2l6ZUZuLEk9Zy5vdmVycmlkZUZuLFo9Zy5jYWxjdWxhdGlvblR5cGUsdWU9Zy5zdHJldGNoTW9kZSxfZT1nLnN0cmV0Y2hpbmdJdGVtV2lkdGhGbixCZT12b2lkIDA9PT1fZT9mdW5jdGlvbihOZSl7cmV0dXJuIE5lfTpfZTtzUWUo''@;'; put 'put ''dGhpcyxkKSxBTy5zZXQodGhpcyx7dmlld3BvcnRXaWR0aDpoLHNjcm9sbE9mZnNldDp2LHRvdGFsQ29sdW1uczp5LGNvbHVtbldpZHRoRm46QyxvdmVycmlkZUZuOkksY2FsY3VsYXRpb25UeXBlOlosc3RyZXRjaGluZ0NvbHVtbldpZHRoRm46QmV9KSx0aGlzLmNvdW50PTAsdGhpcy5zdGFy''@;'; put 'put ''dENvbHVtbj1udWxsLHRoaXMuZW5kQ29sdW1uPW51bGwsdGhpcy5zdGFydFBvc2l0aW9uPW51bGwsdGhpcy5zdHJldGNoQWxsUmF0aW89MCx0aGlzLnN0cmV0Y2hMYXN0V2lkdGg9MCx0aGlzLnN0cmV0Y2g9dWUsdGhpcy50b3RhbFRhcmdldFdpZHRoPTAsdGhpcy5uZWVkVmVyaWZ5TGFzdENv''@;'; put 'put ''bHVtbldpZHRoPSEwLHRoaXMuc3RyZXRjaEFsbENvbHVtbnNXaWR0aD1bXSx0aGlzLmNhbGN1bGF0ZSgpfXJldHVybiBmdW5jdGlvbiB1UWUoZCxnLGgpe2cmJlpDZShkLnByb3RvdHlwZSxnKSxoJiZaQ2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFi''@;'; put 'put ''bGU6ITF9KX0oZCxbe2tleToiY2FsY3VsYXRlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgQyxoPTAsdj0hMCx5PVtdLEk9QU8uZ2V0KHRoaXMpLFo9SS5jYWxjdWxhdGlvblR5cGUsdWU9SS5vdmVycmlkZUZuLF9lPUkuc2Nyb2xsT2Zmc2V0LEJlPUkudG90YWxDb2x1bW5zLE5lPUkudmll''@;'; put 'put ''d3BvcnRXaWR0aCxLZT0wO0tlPEJlO0tlKyspaWYoQz10aGlzLl9nZXRDb2x1bW5XaWR0aChLZSksaDw9X2UmJjIhPT1aJiYodGhpcy5zdGFydENvbHVtbj1LZSksaD49X2UmJmgrKDI9PT1aP0M6MCk8PV9lKyhfZT4wP05lKzE6TmUpJiYobnVsbD09dGhpcy5zdGFydENvbHVtbiYmKHRoaXMu''@;'; put 'put ''c3RhcnRDb2x1bW49S2UpLHRoaXMuZW5kQ29sdW1uPUtlKSx5LnB1c2goaCksaCs9QywyIT09WiYmKHRoaXMuZW5kQ29sdW1uPUtlKSxoPj1fZStOZSl7dj0hMTticmVha31pZih0aGlzLmVuZENvbHVtbj09PUJlLTEmJnYpZm9yKHRoaXMuc3RhcnRDb2x1bW49dGhpcy5lbmRDb2x1bW47dGhp''@;'; put 'put ''cy5zdGFydENvbHVtbj4wOyl7dmFyIE90PXlbdGhpcy5lbmRDb2x1bW5dK0MteVt0aGlzLnN0YXJ0Q29sdW1uLTFdO2lmKChPdDw9TmV8fDIhPT1aKSYmKHRoaXMuc3RhcnRDb2x1bW4tPTEpLE90Pk5lKWJyZWFrfTE9PT1aJiZudWxsIT09dGhpcy5zdGFydENvbHVtbiYmdWUmJnVlKHRoaXMp''@;'; put 'put ''LHRoaXMuc3RhcnRQb3NpdGlvbj15W3RoaXMuc3RhcnRDb2x1bW5dLHZvaWQgMD09PXRoaXMuc3RhcnRQb3NpdGlvbiYmKHRoaXMuc3RhcnRQb3NpdGlvbj1udWxsKSxCZTx0aGlzLmVuZENvbHVtbiYmKHRoaXMuZW5kQ29sdW1uPUJlLTEpLG51bGwhPT10aGlzLnN0YXJ0Q29sdW1uJiYodGhp''@;'; put 'put ''cy5jb3VudD10aGlzLmVuZENvbHVtbi10aGlzLnN0YXJ0Q29sdW1uKzEpfX0se2tleToicmVmcmVzaFN0cmV0Y2hpbmciLHZhbHVlOmZ1bmN0aW9uKGgpe2lmKCJub25lIiE9PXRoaXMuc3RyZXRjaCl7dmFyIHY9aDt0aGlzLnRvdGFsVGFyZ2V0V2lkdGg9djtmb3IodmFyIHk9QU8uZ2V0KHRo''@;'; put 'put ''aXMpLEM9eS50b3RhbENvbHVtbnMsST0wLFo9MDtaPEM7WisrKXt2YXIgdWU9dGhpcy5fZ2V0Q29sdW1uV2lkdGgoWiksX2U9eS5zdHJldGNoaW5nQ29sdW1uV2lkdGhGbih2b2lkIDAsWik7Im51bWJlciI9PXR5cGVvZiBfZT92LT1fZTpJKz11ZX12YXIgQmU9di1JO2lmKCJhbGwiPT09dGhp''@;'; put 'put ''cy5zdHJldGNoJiZCZT4wKXRoaXMuc3RyZXRjaEFsbFJhdGlvPXYvSSx0aGlzLnN0cmV0Y2hBbGxDb2x1bW5zV2lkdGg9W10sdGhpcy5uZWVkVmVyaWZ5TGFzdENvbHVtbldpZHRoPSEwO2Vsc2UgaWYoImxhc3QiPT09dGhpcy5zdHJldGNoJiZ2IT09MS8wKXt2YXIgTmU9dGhpcy5fZ2V0Q29s''@;'; put 'put ''dW1uV2lkdGgoQy0xKSxLZT1CZStOZTt0aGlzLnN0cmV0Y2hMYXN0V2lkdGg9S2U+PTA/S2U6TmV9fX19LHtrZXk6ImdldFN0cmV0Y2hlZENvbHVtbldpZHRoIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PW51bGw7cmV0dXJuImFsbCI9PT10aGlzLnN0cmV0Y2gmJjAhPT10aGlzLnN0cmV0''@;'; put 'put ''Y2hBbGxSYXRpbz95PXRoaXMuX2dldFN0cmV0Y2hlZEFsbENvbHVtbldpZHRoKGgsdik6Imxhc3QiPT09dGhpcy5zdHJldGNoJiYwIT09dGhpcy5zdHJldGNoTGFzdFdpZHRoJiYoeT10aGlzLl9nZXRTdHJldGNoZWRMYXN0Q29sdW1uV2lkdGgoaCkpLHl9fSx7a2V5OiJfZ2V0U3RyZXRjaGVk''@;'; put 'put ''QWxsQ29sdW1uV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9MCxDPUFPLmdldCh0aGlzKSxJPUMudG90YWxDb2x1bW5zO2lmKCF0aGlzLnN0cmV0Y2hBbGxDb2x1bW5zV2lkdGhbaF0pe3ZhciBaPU1hdGgucm91bmQodip0aGlzLnN0cmV0Y2hBbGxSYXRpbyksdWU9Qy5zdHJldGNo''@;'; put 'put ''aW5nQ29sdW1uV2lkdGhGbihaLGgpO3RoaXMuc3RyZXRjaEFsbENvbHVtbnNXaWR0aFtoXT12b2lkIDA9PT11ZT9aOmlzTmFOKHVlKT90aGlzLl9nZXRDb2x1bW5XaWR0aChoKTp1ZX1pZih0aGlzLnN0cmV0Y2hBbGxDb2x1bW5zV2lkdGgubGVuZ3RoPT09SSYmdGhpcy5uZWVkVmVyaWZ5TGFz''@;'; put 'put ''dENvbHVtbldpZHRoKXt0aGlzLm5lZWRWZXJpZnlMYXN0Q29sdW1uV2lkdGg9ITE7Zm9yKHZhciBfZT0wO19lPHRoaXMuc3RyZXRjaEFsbENvbHVtbnNXaWR0aC5sZW5ndGg7X2UrKyl5Kz10aGlzLnN0cmV0Y2hBbGxDb2x1bW5zV2lkdGhbX2VdO3khPT10aGlzLnRvdGFsVGFyZ2V0V2lkdGgm''@;'; put 'put ''Jih0aGlzLnN0cmV0Y2hBbGxDb2x1bW5zV2lkdGhbdGhpcy5zdHJldGNoQWxsQ29sdW1uc1dpZHRoLmxlbmd0aC0xXSs9dGhpcy50b3RhbFRhcmdldFdpZHRoLXkpfXJldHVybiB0aGlzLnN0cmV0Y2hBbGxDb2x1bW5zV2lkdGhbaF19fSx7a2V5OiJfZ2V0U3RyZXRjaGVkTGFzdENvbHVtbldp''@;'; put 'put ''ZHRoIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gaD09PUFPLmdldCh0aGlzKS50b3RhbENvbHVtbnMtMT90aGlzLnN0cmV0Y2hMYXN0V2lkdGg6bnVsbH19LHtrZXk6Il9nZXRDb2x1bW5XaWR0aCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9QU8uZ2V0KHRoaXMpLmNvbHVtbldpZHRoRm4o''@;'; put 'put ''aCk7cmV0dXJuIGlzTmFOKHYpJiYodj1kLkRFRkFVTFRfV0lEVEgpLHZ9fV0sW3trZXk6IkRFRkFVTFRfV0lEVEgiLGdldDpmdW5jdGlvbigpe3JldHVybiA1MH19XSksZH0oKTtjb25zdCBOZGU9Y1FlO2Z1bmN0aW9uIHpDZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIg''@;'; put 'put ''dj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBkUWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCx2LHksQyl7dmFyIEk9''@;'; put 'put ''dGhpczsoZnVuY3Rpb24gZlFlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuZGF0YUFjY2Vzc09iamVjdD1nLHRoaXMud290PWcud290LHRoaXMuaW5zdGFuY2U9''@;'; put 'put ''dGhpcy53b3QsdGhpcy5kb21CaW5kaW5ncz1oLHRoaXMud3RTZXR0aW5ncz12LHRoaXMud3RUYWJsZT1DLHRoaXMub3ZlcnNpemVkUm93cz1bXSx0aGlzLm92ZXJzaXplZENvbHVtbkhlYWRlcnM9W10sdGhpcy5oYXNPdmVyc2l6ZWRDb2x1bW5IZWFkZXJzTWFya2VkPXt9LHRoaXMuY2xpZW50''@;'; put 'put ''SGVpZ2h0PTAsdGhpcy5jb250YWluZXJXaWR0aD1OYU4sdGhpcy5yb3dIZWFkZXJXaWR0aD1OYU4sdGhpcy5yb3dzVmlzaWJsZUNhbGN1bGF0b3I9bnVsbCx0aGlzLmNvbHVtbnNWaXNpYmxlQ2FsY3VsYXRvcj1udWxsLHRoaXMuZXZlbnRNYW5hZ2VyPXksdGhpcy5ldmVudE1hbmFnZXIuYWRk''@;'; put 'put ''RXZlbnRMaXN0ZW5lcih0aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3csInJlc2l6ZSIsZnVuY3Rpb24oKXtJLmNsaWVudEhlaWdodD1JLmdldFdvcmtzcGFjZUhlaWdodCgpfSl9cmV0dXJuIGZ1bmN0aW9uIGhRZShkLGcsaCl7ZyYmekNlKGQucHJvdG90eXBlLGcpLGgmJnpDZShkLGgpLE9i''@;'; put 'put ''amVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJnZXRXb3Jrc3BhY2VIZWlnaHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHY9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LnRvcE92ZXJsYXlUcmltbWluZ0NvbnRhaW5lcjtyZXR1cm4gdj09PXRo''@;'; put 'put ''aXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdz90aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0OkQxKHYpPjAmJnYuY2xpZW50SGVpZ2h0PjA/di5jbGllbnRIZWlnaHQ6MS8wfX0se2tleToiZ2V0V29ya3NwYWNlV2lkdGgiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIE90LCR0LGg9dGhpcy53dFNldHRpbmdzLHY9dGhpcy5kb21CaW5kaW5ncyx5PXYucm9vdERvY3VtZW50LEM9di5yb290V2luZG93LEk9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LmlubGluZVN0YXJ0T3ZlcmxheVRyaW1taW5nQ29udGFpbmVyLFo9eS5kb2N1bWVudEVsZW1l''@;'; put 'put ''bnQub2Zmc2V0V2lkdGgsdWU9aC5nZXRTZXR0aW5nKCJ0b3RhbENvbHVtbnMiKSxfZT1oLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxvdyIpLEJlPWguZ2V0U2V0dGluZygicnRsTW9kZSIpLE5lPXRoaXMud3RUYWJsZS5UQUJMRS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxwdD1aLShCZT9O''@;'; put 'put ''ZS5yaWdodC1aOk5lLmxlZnQpO2lmKF9lKXJldHVybiBFMih0aGlzLnd0VGFibGUud3RSb290RWxlbWVudCk7aWYoT3Q9aC5nZXRTZXR0aW5nKCJmcmVlemVPdmVybGF5cyIpP01hdGgubWluKHB0LFopOk1hdGgubWluKHRoaXMuZ2V0Q29udGFpbmVyRmlsbFdpZHRoKCkscHQsWiksST09PUMm''@;'; put 'put ''JnVlPjAmJnRoaXMuc3VtQ29sdW1uV2lkdGhzKDAsdWUtMSk+T3QpcmV0dXJuIHkuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO2lmKEkhPT1DJiYoInNjcm9sbCI9PT0oJHQ9bmVlKHRoaXMuZGF0YUFjY2Vzc09iamVjdC5pbmxpbmVTdGFydE92ZXJsYXlUcmltbWluZ0NvbnRhaW5lciwi''@;'; put 'put ''b3ZlcmZsb3ciLEMpKXx8ImhpZGRlbiI9PT0kdHx8ImF1dG8iPT09JHQpKXJldHVybiBNYXRoLm1heChPdCxJLmNsaWVudFdpZHRoKTt2YXIgZm49aC5nZXRTZXR0aW5nKCJzdHJldGNoSCIpO3JldHVybiJub25lIiE9PWZuJiZmbj9PdDpNYXRoLm1heChPdCxFMih0aGlzLnd0VGFibGUuVEFC''@;'; put 'put ''TEUpKX19LHtrZXk6Imhhc1ZlcnRpY2FsU2Nyb2xsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnd0VGFibGUuaGlkZXIub2Zmc2V0SGVpZ2h0PnRoaXMuZ2V0V29ya3NwYWNlSGVpZ2h0KCl9fSx7a2V5OiJoYXNIb3Jpem9udGFsU2Nyb2xsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLnd0VGFibGUuaGlkZXIub2Zmc2V0V2lkdGg+dGhpcy5nZXRXb3Jrc3BhY2VXaWR0aCgpfX0se2tleToic3VtQ29sdW1uV2lkdGhzIix2YWx1ZTpmdW5jdGlvbihoLHYpe2Zvcih2YXIgeT0wLEM9aDtDPHY7KXkrPXRoaXMud3RUYWJsZS5nZXRDb2x1bW5XaWR0aChDKSxDKz0xO3Jl''@;'; put 'put ''dHVybiB5fX0se2tleToiZ2V0Q29udGFpbmVyRmlsbFdpZHRoIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuY29udGFpbmVyV2lkdGgpcmV0dXJuIHRoaXMuY29udGFpbmVyV2lkdGg7dmFyIGg9dGhpcy53dFRhYmxlLmhvbGRlcix2PXRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50LmNy''@;'; put 'put ''ZWF0ZUVsZW1lbnQoImRpdiIpO3Yuc3R5bGUud2lkdGg9IjEwMCUiLHYuc3R5bGUuaGVpZ2h0PSIxcHgiLGguYXBwZW5kQ2hpbGQodik7dmFyIHk9di5vZmZzZXRXaWR0aDtyZXR1cm4gdGhpcy5jb250YWluZXJXaWR0aD15LGgucmVtb3ZlQ2hpbGQodikseX19LHtrZXk6ImdldFdvcmtzcGFj''@;'; put 'put ''ZU9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4ganUodGhpcy53dFRhYmxlLlRBQkxFKX19LHtrZXk6ImdldENvbHVtbkhlYWRlckhlaWdodCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGg/aXNO''@;'; put 'put ''YU4odGhpcy5jb2x1bW5IZWFkZXJIZWlnaHQpJiYodGhpcy5jb2x1bW5IZWFkZXJIZWlnaHQ9RDEodGhpcy53dFRhYmxlLlRIRUFEKSk6dGhpcy5jb2x1bW5IZWFkZXJIZWlnaHQ9MCx0aGlzLmNvbHVtbkhlYWRlckhlaWdodH19LHtrZXk6ImdldFZpZXdwb3J0SGVpZ2h0Iix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbigpe3ZhciBoPXRoaXMuZ2V0V29ya3NwYWNlSGVpZ2h0KCk7aWYoaD09PTEvMClyZXR1cm4gaDt2YXIgdj10aGlzLmdldENvbHVtbkhlYWRlckhlaWdodCgpO3JldHVybiB2PjAmJihoLT12KSxofX0se2tleToiZ2V0Um93SGVhZGVyV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9''@;'; put 'put ''dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInJvd0hlYWRlcldpZHRoIiksdj10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicm93SGVhZGVycyIpO2lmKGgpe3RoaXMucm93SGVhZGVyV2lkdGg9MDtmb3IodmFyIHk9MCxDPXYubGVuZ3RoO3k8Qzt5KyspdGhpcy5yb3dIZWFkZXJXaWR0''@;'; put 'put ''aCs9aFt5XXx8aH1pZihpc05hTih0aGlzLnJvd0hlYWRlcldpZHRoKSlpZih2Lmxlbmd0aCl7dmFyIEk9dGhpcy53dFRhYmxlLlRBQkxFLnF1ZXJ5U2VsZWN0b3IoIlRIIik7dGhpcy5yb3dIZWFkZXJXaWR0aD0wO2Zvcih2YXIgWj0wLHVlPXYubGVuZ3RoO1o8dWU7WisrKUk/KHRoaXMucm93''@;'; put 'put ''SGVhZGVyV2lkdGgrPUUyKEkpLEk9SS5uZXh0U2libGluZyk6dGhpcy5yb3dIZWFkZXJXaWR0aCs9NTB9ZWxzZSB0aGlzLnJvd0hlYWRlcldpZHRoPTA7cmV0dXJuIHRoaXMucm93SGVhZGVyV2lkdGg9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoIm9uTW9kaWZ5Um93SGVhZGVyV2lkdGgi''@;'; put 'put ''LHRoaXMucm93SGVhZGVyV2lkdGgpfHx0aGlzLnJvd0hlYWRlcldpZHRoLHRoaXMucm93SGVhZGVyV2lkdGh9fSx7a2V5OiJnZXRWaWV3cG9ydFdpZHRoIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuZ2V0V29ya3NwYWNlV2lkdGgoKTtpZihoPT09MS8wKXJldHVybiBoO3ZhciB2PXRo''@;'; put 'put ''aXMuZ2V0Um93SGVhZGVyV2lkdGgoKTtyZXR1cm4gdj4wP2gtdjpofX0se2tleToiY3JlYXRlUm93c0NhbGN1bGF0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEMsSSxaLGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjEsdj10aGlzLnd0''@;'; put 'put ''U2V0dGluZ3MseT10aGlzLnd0VGFibGU7dGhpcy5yb3dIZWFkZXJXaWR0aD1OYU4sQz12LmdldFNldHRpbmcoInJlbmRlckFsbFJvd3MiKSYmMT09PWg/MS8wOnRoaXMuZ2V0Vmlld3BvcnRIZWlnaHQoKTt2YXIgdWU9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LnRvcFNjcm9sbFBvc2l0aW9uLXRo''@;'; put 'put ''aXMuZGF0YUFjY2Vzc09iamVjdC50b3BQYXJlbnRPZmZzZXQ7dWU8MCYmKHVlPTApO3ZhciBfZT12LmdldFNldHRpbmcoImZpeGVkUm93c1RvcCIpLEJlPXYuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIiksTmU9di5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKTtyZXR1cm4gX2UmJih1ZSs9''@;'; put 'put ''Wj10aGlzLmRhdGFBY2Nlc3NPYmplY3QudG9wT3ZlcmxheS5zdW1DZWxsU2l6ZXMoMCxfZSksQy09WiksQmUmJnRoaXMuZGF0YUFjY2Vzc09iamVjdC5ib3R0b21PdmVybGF5LmNsb25lJiYoQy09Wj10aGlzLmRhdGFBY2Nlc3NPYmplY3QuYm90dG9tT3ZlcmxheS5zdW1DZWxsU2l6ZXMoTmUt''@;'; put 'put ''QmUsTmUpKSxJPXkuaG9sZGVyLmNsaWVudEhlaWdodD09PXkuaG9sZGVyLm9mZnNldEhlaWdodD8wOkJjKHRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50KSxuZXcgakNlKHt2aWV3cG9ydFNpemU6QyxzY3JvbGxPZmZzZXQ6dWUsdG90YWxJdGVtczp2LmdldFNldHRpbmcoInRvdGFsUm93''@;'; put 'put ''cyIpLGl0ZW1TaXplRm46ZnVuY3Rpb24ocHQpe3JldHVybiB5LmdldFJvd0hlaWdodChwdCl9LG92ZXJyaWRlRm46di5nZXRTZXR0aW5nUHVyZSgidmlld3BvcnRSb3dDYWxjdWxhdG9yT3ZlcnJpZGUiKSxjYWxjdWxhdGlvblR5cGU6aCxzY3JvbGxiYXJIZWlnaHQ6SX0pfX0se2tleToiY3Jl''@;'; put 'put ''YXRlQ29sdW1uc0NhbGN1bGF0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjEsdj10aGlzLnd0U2V0dGluZ3MseT10aGlzLnd0VGFibGUsQz10aGlzLmdldFZpZXdwb3J0V2lkdGgoKSxJPU1h''@;'; put 'put ''dGguYWJzKHRoaXMuZGF0YUFjY2Vzc09iamVjdC5pbmxpbmVTdGFydFNjcm9sbFBvc2l0aW9uKS10aGlzLmRhdGFBY2Nlc3NPYmplY3QuaW5saW5lU3RhcnRQYXJlbnRPZmZzZXQ7dGhpcy5jb2x1bW5IZWFkZXJIZWlnaHQ9TmFOLEk8MCYmKEk9MCk7dmFyIFo9di5nZXRTZXR0aW5nKCJmaXhl''@;'; put 'put ''ZENvbHVtbnNTdGFydCIpO2lmKFope3ZhciB1ZT10aGlzLmRhdGFBY2Nlc3NPYmplY3QuaW5saW5lU3RhcnRPdmVybGF5LnN1bUNlbGxTaXplcygwLFopO0krPXVlLEMtPXVlfXJldHVybiB5LmhvbGRlci5jbGllbnRXaWR0aCE9PXkuaG9sZGVyLm9mZnNldFdpZHRoJiYoQy09QmModGhpcy5k''@;'; put 'put ''b21CaW5kaW5ncy5yb290RG9jdW1lbnQpKSxuZXcgTmRlKHt2aWV3cG9ydFNpemU6QyxzY3JvbGxPZmZzZXQ6TWF0aC5hYnMoSSksdG90YWxJdGVtczp2LmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpLGl0ZW1TaXplRm46ZnVuY3Rpb24oQmUpe3JldHVybiB5LmdldENvbHVtbldpZHRoKEJl''@;'; put 'put ''KX0sb3ZlcnJpZGVGbjp2LmdldFNldHRpbmdQdXJlKCJ2aWV3cG9ydENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZSIpLGNhbGN1bGF0aW9uVHlwZTpoLHN0cmV0Y2hNb2RlOnYuZ2V0U2V0dGluZygic3RyZXRjaEgiKSxzdHJldGNoaW5nSXRlbVdpZHRoRm46ZnVuY3Rpb24oQmUsTmUpe3JldHVy''@;'; put 'put ''biB2LmdldFNldHRpbmcoIm9uQmVmb3JlU3RyZXRjaGluZ0NvbHVtbldpZHRoIixCZSxOZSl9fSl9fSx7a2V5OiJjcmVhdGVSZW5kZXJDYWxjdWxhdG9ycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRz''@;'; put 'put ''WzBdLHY9aDtpZih2KXt2YXIgeT10aGlzLmNyZWF0ZVJvd3NDYWxjdWxhdG9yKDIpLEM9dGhpcy5jcmVhdGVDb2x1bW5zQ2FsY3VsYXRvcigyKTt0aGlzLmFyZUFsbFByb3Bvc2VkVmlzaWJsZVJvd3NBbHJlYWR5UmVuZGVyZWQoeSkmJnRoaXMuYXJlQWxsUHJvcG9zZWRWaXNpYmxlQ29sdW1u''@;'; put 'put ''c0FscmVhZHlSZW5kZXJlZChDKXx8KHY9ITEpfXJldHVybiB2fHwodGhpcy5yb3dzUmVuZGVyQ2FsY3VsYXRvcj10aGlzLmNyZWF0ZVJvd3NDYWxjdWxhdG9yKDEpLHRoaXMuY29sdW1uc1JlbmRlckNhbGN1bGF0b3I9dGhpcy5jcmVhdGVDb2x1bW5zQ2FsY3VsYXRvcigxKSksdGhpcy5yb3dz''@;'; put 'put ''VmlzaWJsZUNhbGN1bGF0b3I9bnVsbCx0aGlzLmNvbHVtbnNWaXNpYmxlQ2FsY3VsYXRvcj1udWxsLHZ9fSx7a2V5OiJjcmVhdGVWaXNpYmxlQ2FsY3VsYXRvcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5yb3dzVmlzaWJsZUNhbGN1bGF0b3I9dGhpcy5jcmVhdGVSb3dzQ2FsY3VsYXRvcigy''@;'; put 'put ''KSx0aGlzLmNvbHVtbnNWaXNpYmxlQ2FsY3VsYXRvcj10aGlzLmNyZWF0ZUNvbHVtbnNDYWxjdWxhdG9yKDIpfX0se2tleToiYXJlQWxsUHJvcG9zZWRWaXNpYmxlUm93c0FscmVhZHlSZW5kZXJlZCIsdmFsdWU6ZnVuY3Rpb24oaCl7aWYoIXRoaXMucm93c1Zpc2libGVDYWxjdWxhdG9yKXJl''@;'; put 'put ''dHVybiExO3ZhciB2PWguc3RhcnRSb3cseT1oLmVuZFJvdztpZihudWxsPT09diYmbnVsbD09PXkpcmV0dXJuITE7dmFyIEM9dGhpcy5yb3dzUmVuZGVyQ2FsY3VsYXRvcixJPUMuc3RhcnRSb3csWj1DLmVuZFJvdztyZXR1cm4hKHY8SXx8dj09PUkmJnY+MHx8eT5afHx5PT09WiYmeTx0aGlz''@;'; put 'put ''Lnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIiktMSl9fSx7a2V5OiJhcmVBbGxQcm9wb3NlZFZpc2libGVDb2x1bW5zQWxyZWFkeVJlbmRlcmVkIix2YWx1ZTpmdW5jdGlvbihoKXtpZighdGhpcy5jb2x1bW5zVmlzaWJsZUNhbGN1bGF0b3IpcmV0dXJuITE7dmFyIHY9aC5zdGFy''@;'; put 'put ''dENvbHVtbix5PWguZW5kQ29sdW1uO2lmKG51bGw9PT12JiZudWxsPT09eSlyZXR1cm4hMTt2YXIgQz10aGlzLmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLEk9Qy5zdGFydENvbHVtbixaPUMuZW5kQ29sdW1uO3JldHVybiEodjxJfHx2PT09SSYmdj4wfHx5Plp8fHk9PT1aJiZ5PHRoaXMud3RT''@;'; put 'put ''ZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbENvbHVtbnMiKS0xKX19LHtrZXk6InJlc2V0SGFzT3ZlcnNpemVkQ29sdW1uSGVhZGVyc01hcmtlZCIsdmFsdWU6ZnVuY3Rpb24oKXtHbCh0aGlzLmhhc092ZXJzaXplZENvbHVtbkhlYWRlcnNNYXJrZWQsZnVuY3Rpb24oaCx2LHkpe3lbdl09dm9p''@;'; put 'put ''ZCAwfSl9fV0pLGR9KCk7Y29uc3QgcFFlPWRRZTtmdW5jdGlvbiBWZGUoZCl7cmV0dXJuKFZkZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBn''@;'; put 'put ''JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIEdDZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJs''@;'; put 'put ''ZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGpkZShkLGcpe3JldHVybihqZGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90''@;'; put 'put ''b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiB5UWUoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1WZGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIFpkZShkKX1mdW5jdGlvbiBaZGUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBz''@;'; put 'put ''dXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIGplZShkKXtyZXR1cm4oamVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlw''@;'; put 'put ''ZU9mKGgpfSkoZCl9dmFyIGJRZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gdlFlKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90''@;'; put 'put ''b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJmpkZShkLGcpfShoLGQpO3ZhciBnPWZ1''@;'; put 'put ''bmN0aW9uIEFRZShkKXt2YXIgZz1mdW5jdGlvbiB3UWUoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVy''@;'; put 'put ''biBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1qZWUoZCk7aWYoZyl7dmFyIEM9amVlKHRoaXMpLmNvbnN0cnVj''@;'; put 'put ''dG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB5UWUodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5KXt2YXIgQzshZnVuY3Rpb24gZ1FlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCk7dmFyIEk9KEM9Zy5jYWxsKHRoaXMsdixuZXcgWFVlKHkpKSkud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmYWNhZGUiLFpkZShDKSk7cmV0dXJuIEMud3RUYWJsZT1uZXcgaVFlKEMuZ2V0VGFi''@;'; put 'put ''bGVEYW8oKSxJLEMuZG9tQmluZGluZ3MsQy53dFNldHRpbmdzKSxDLnd0Vmlld3BvcnQ9bmV3IHBRZShDLmdldFZpZXdwb3J0RGFvKCksQy5kb21CaW5kaW5ncyxDLnd0U2V0dGluZ3MsQy5ldmVudE1hbmFnZXIsQy53dFRhYmxlKSxDLnNlbGVjdGlvbnM9Qy53dFNldHRpbmdzLmdldFNldHRp''@;'; put 'put ''bmcoInNlbGVjdGlvbnMiKSxDLnd0RXZlbnQ9bmV3IEVfZShJLEMuZG9tQmluZGluZ3MsQy53dFNldHRpbmdzLEMuZXZlbnRNYW5hZ2VyLEMud3RUYWJsZSxDLnNlbGVjdGlvbnMpLEMud3RPdmVybGF5cz1uZXcgVVVlKFpkZShDKSxJLEMuZG9tQmluZGluZ3MsQy53dFNldHRpbmdzLEMuZXZl''@;'; put 'put ''bnRNYW5hZ2VyLEMud3RUYWJsZSksQy5leHBvcnRTZXR0aW5nc0FzQ2xhc3NOYW1lcygpLEMuZmluZE9yaWdpbmFsSGVhZGVycygpLEN9cmV0dXJuIGZ1bmN0aW9uIG1RZShkLGcsaCl7ZyYmR0NlKGQucHJvdG90eXBlLGcpLGgmJkdDZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJw''@;'; put 'put ''cm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJleHBvcnRTZXR0aW5nc0FzQ2xhc3NOYW1lcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEk9W10sWj1bXTtHbCh7cm93SGVhZGVyczoiaHRSb3dIZWFkZXJzIixjb2x1bW5IZWFkZXJzOiJodENvbHVtbkhlYWRlcnMifSxm''@;'; put 'put ''dW5jdGlvbih1ZSxfZSl7eS53dFNldHRpbmdzLmdldFNldHRpbmcoX2UpLmxlbmd0aCYmWi5wdXNoKHVlKSxJLnB1c2godWUpfSkscGwodGhpcy53dFRhYmxlLnd0Um9vdEVsZW1lbnQucGFyZW50Tm9kZSxJKSxPMCh0aGlzLnd0VGFibGUud3RSb290RWxlbWVudC5wYXJlbnROb2RlLFopfX0s''@;'; put 'put ''e2tleToiZ2V0Vmlld3BvcnREYW8iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztyZXR1cm57Z2V0IHdvdCgpe3JldHVybiB5fSxnZXQgdG9wT3ZlcmxheVRyaW1taW5nQ29udGFpbmVyKCl7cmV0dXJuIHkud3RPdmVybGF5cy50b3BPdmVybGF5LnRyaW1taW5nQ29udGFpbmVyfSxnZXQg''@;'; put 'put ''aW5saW5lU3RhcnRPdmVybGF5VHJpbW1pbmdDb250YWluZXIoKXtyZXR1cm4geS53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS50cmltbWluZ0NvbnRhaW5lcn0sZ2V0IHRvcFNjcm9sbFBvc2l0aW9uKCl7cmV0dXJuIHkud3RPdmVybGF5cy50b3BPdmVybGF5LmdldFNjcm9sbFBvc2l0''@;'; put 'put ''aW9uKCl9LGdldCB0b3BQYXJlbnRPZmZzZXQoKXtyZXR1cm4geS53dE92ZXJsYXlzLnRvcE92ZXJsYXkuZ2V0VGFibGVQYXJlbnRPZmZzZXQoKX0sZ2V0IGlubGluZVN0YXJ0U2Nyb2xsUG9zaXRpb24oKXtyZXR1cm4geS53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRTY3JvbGxQ''@;'; put 'put ''b3NpdGlvbigpfSxnZXQgaW5saW5lU3RhcnRQYXJlbnRPZmZzZXQoKXtyZXR1cm4geS53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRUYWJsZVBhcmVudE9mZnNldCgpfSxnZXQgdG9wT3ZlcmxheSgpe3JldHVybiB5Lnd0T3ZlcmxheXMudG9wT3ZlcmxheX0sZ2V0IGlubGluZVN0''@;'; put 'put ''YXJ0T3ZlcmxheSgpe3JldHVybiB5Lnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVybGF5fSxnZXQgYm90dG9tT3ZlcmxheSgpe3JldHVybiB5Lnd0T3ZlcmxheXMuYm90dG9tT3ZlcmxheX19fX1dKSxofShkZGUpO2Z1bmN0aW9uIFdDZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsr''@;'; put 'put ''KXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBrUWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpeyhmdW5jdGlv''@;'; put 'put ''biBfUWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksZyBpbnN0YW5jZW9mIGRkZT90aGlzLl93b3Q9Zzp0aGlzLl9pbml0RnJvbVNldHRpbmdzKGcpfXJldHVybiBmdW5j''@;'; put 'put ''dGlvbiBDUWUoZCxnLGgpe2cmJldDZShkLnByb3RvdHlwZSxnKSxoJiZXQ2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiX2luaXRGcm9tU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKGgpe2guZmFjYWRlPWZ1bmN0aW9u''@;'; put 'put ''KHYpe3ZhciB5PW5ldyBkKHYpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB5fX0sdGhpcy5fd290PW5ldyBiUWUoaC50YWJsZSxoKX19LHtrZXk6Imd1aWQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3QuZ3VpZH19LHtrZXk6InJvb3REb2N1bWVudCIsZ2V0OmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX3dvdC5kb21CaW5kaW5ncy5yb290RG9jdW1lbnR9fSx7a2V5OiJyb290V2luZG93IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290LmRvbUJpbmRpbmdzLnJvb3RXaW5kb3d9fSx7a2V5OiJ3dFNldHRpbmdzIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f''@;'; put 'put ''d290Lnd0U2V0dGluZ3N9fSx7a2V5OiJjbG9uZVNvdXJjZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dvdC5jbG9uZVNvdXJjZX19LHtrZXk6ImNsb25lT3ZlcmxheSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dvdC5jbG9uZU92ZXJsYXl9fSx7a2V5OiJzZWxlY3Rpb25z''@;'; put 'put ''IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290LnNlbGVjdGlvbnN9fSx7a2V5OiJ3dFZpZXdwb3J0IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290Lnd0Vmlld3BvcnR9fSx7a2V5OiJ3dE92ZXJsYXlzIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290Lnd0T3Zl''@;'; put 'put ''cmxheXN9fSx7a2V5OiJ3dFRhYmxlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290Lnd0VGFibGV9fSx7a2V5OiJ3dEV2ZW50IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290Lnd0RXZlbnR9fSx7a2V5OiJ3dFNjcm9sbCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''X3dvdC53dFNjcm9sbH19LHtrZXk6ImRyYXduIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290LmRyYXdufSxzZXQ6ZnVuY3Rpb24oaCl7dGhpcy5fd290LmRyYXduPWh9fSx7a2V5OiJkcmF3SW50ZXJydXB0ZWQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3QuZHJhd0lu''@;'; put 'put ''dGVycnVwdGVkfSxzZXQ6ZnVuY3Rpb24oaCl7dGhpcy5fd290LmRyYXdJbnRlcnJ1cHRlZD1ofX0se2tleToibGFzdE1vdXNlT3ZlciIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dvdC5sYXN0TW91c2VPdmVyfSxzZXQ6ZnVuY3Rpb24oaCl7dGhpcy5fd290Lmxhc3RNb3VzZU92ZXI9''@;'; put 'put ''aH19LHtrZXk6Im1vbWVudHVtU2Nyb2xsaW5nIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290Lm1vbWVudHVtU2Nyb2xsaW5nfSxzZXQ6ZnVuY3Rpb24oaCl7dGhpcy5fd290Lm1vbWVudHVtU2Nyb2xsaW5nPWh9fSx7a2V5OiJ0b3VjaEFwcGxpZWQiLGdldDpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl93b3QudG91Y2hBcHBsaWVkfSxzZXQ6ZnVuY3Rpb24oaCl7dGhpcy5fd290LnRvdWNoQXBwbGllZD1ofX0se2tleToiZG9tQmluZGluZ3MiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3QuZG9tQmluZGluZ3N9fSx7a2V5OiJldmVudExpc3RlbmVycyIsZ2V0OmZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dvdC5ldmVudExpc3RlbmVyc30sc2V0OmZ1bmN0aW9uKGgpe3RoaXMuX3dvdC5ldmVudExpc3RlbmVycz1ofX0se2tleToiZXZlbnRNYW5hZ2VyIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290LmV2ZW50TWFuYWdlcn19LHtrZXk6ImNyZWF0''@;'; put 'put ''ZUNlbGxDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuIHRoaXMuX3dvdC5jcmVhdGVDZWxsQ29vcmRzKGgsdil9fSx7a2V5OiJjcmVhdGVDZWxsUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXtyZXR1cm4gdGhpcy5fd290LmNyZWF0ZUNlbGxSYW5nZShoLHYseSl9fSx7a2V5''@;'; put 'put ''OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07cmV0dXJuIHRoaXMuX3dvdC5kcmF3KGgpLHRoaXN9fSx7a2V5OiJnZXRDZWxsIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1hcmd1bWVu''@;'; put 'put ''dHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO3JldHVybiB0aGlzLl93b3QuZ2V0Q2VsbChoLHYpfX0se2tleToic2Nyb2xsVmlld3BvcnQiLHZhbHVlOmZ1bmN0aW9uKGgsdix5LEMsSSl7cmV0dXJuIHRoaXMuX3dvdC5zY3JvbGxWaWV3cG9ydChoLHYs''@;'; put 'put ''eSxDLEkpfX0se2tleToic2Nyb2xsVmlld3BvcnRIb3Jpem9udGFsbHkiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXtyZXR1cm4gdGhpcy5fd290LnNjcm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5KGgsdix5KX19LHtrZXk6InNjcm9sbFZpZXdwb3J0VmVydGljYWxseSIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''aCx2LHkpe3JldHVybiB0aGlzLl93b3Quc2Nyb2xsVmlld3BvcnRWZXJ0aWNhbGx5KGgsdix5KX19LHtrZXk6ImdldFZpZXdwb3J0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3QuZ2V0Vmlld3BvcnQoKX19LHtrZXk6ImdldE92ZXJsYXlOYW1lIix2YWx1ZTpmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiB0aGlzLl93b3QuY2xvbmVPdmVybGF5P3RoaXMuX3dvdC5jbG9uZU92ZXJsYXkudHlwZToibWFzdGVyIn19LHtrZXk6ImV4cG9ydFNldHRpbmdzQXNDbGFzc05hbWVzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3QuZXhwb3J0U2V0dGluZ3NBc0NsYXNzTmFtZXMo''@;'; put 'put ''KX19LHtrZXk6InVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtyZXR1cm4gdGhpcy5fd290Lnd0U2V0dGluZ3MudXBkYXRlKGgsdiksdGhpc319LHtrZXk6ImdldFNldHRpbmciLHZhbHVlOmZ1bmN0aW9uKGgsdix5LEMsSSl7cmV0dXJuIHRoaXMuX3dvdC53dFNldHRpbmdzLmdldFNldHRp''@;'; put 'put ''bmcoaCx2LHksQyxJKX19LHtrZXk6Imhhc1NldHRpbmciLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLl93b3Qud3RTZXR0aW5ncy5oYXNTZXR0aW5nKGgpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl93b3QuZGVzdHJveSgpfX1dKSxkfSgpO2Z1bmN0aW9u''@;'; put 'put ''IFlDZShkKXt2YXIgZz1kLmlzU2hpZnRLZXksaD1kLmlzTGVmdENsaWNrLHY9ZC5pc1JpZ2h0Q2xpY2sseT1kLmNvb3JkcyxDPWQuc2VsZWN0aW9uLEk9ZC5jb250cm9sbGVyLFo9ZC5jZWxsQ29vcmRzRmFjdG9yeSx1ZT1DLmlzU2VsZWN0ZWQoKT9DLmdldFNlbGVjdGVkUmFuZ2UoKS5jdXJy''@;'; put 'put ''ZW50KCk6bnVsbCxfZT1DLmlzU2VsZWN0ZWRCeUNvcm5lcigpLEJlPUMuaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCk7aWYoZyYmdWUpeS5yb3c+PTAmJnkuY29sPj0wJiYhSS5jZWxsP0Muc2V0UmFuZ2VFbmQoeSk6KF9lfHxCZSkmJnkucm93Pj0wJiZ5LmNvbD49MCYmIUkuY2VsbD9DLnNldFJh''@;'; put 'put ''bmdlRW5kKFooeS5yb3cseS5jb2wpKTpfZSYmeS5yb3c8MCYmIUkuY29sdW1uP0Muc2V0UmFuZ2VFbmQoWih1ZS50by5yb3cseS5jb2wpKTpCZSYmeS5jb2w8MCYmIUkucm93P0Muc2V0UmFuZ2VFbmQoWih5LnJvdyx1ZS50by5jb2wpKTooIV9lJiYhQmUmJnkuY29sPDB8fF9lJiZ5LmNvbDww''@;'; put 'put ''KSYmIUkucm93P0Muc2VsZWN0Um93cyhNYXRoLm1heCh1ZS5mcm9tLnJvdywwKSx5LnJvdyx5LmNvbCk6KCFfZSYmIUJlJiZ5LnJvdzwwfHxCZSYmeS5yb3c8MCkmJiFJLmNvbHVtbiYmQy5zZWxlY3RDb2x1bW5zKE1hdGgubWF4KHVlLmZyb20uY29sLDApLHkuY29sLHkucm93KTtlbHNle3Zh''@;'; put 'put ''ciBOZT0hQy5pbkluU2VsZWN0aW9uKHkpLEtlPWh8fHYmJk5lO3kucm93PDAmJnkuY29sPj0wJiYhSS5jb2x1bW4/S2UmJkMuc2VsZWN0Q29sdW1ucyh5LmNvbCx5LmNvbCx5LnJvdyk6eS5jb2w8MCYmeS5yb3c+PTAmJiFJLnJvdz9LZSYmQy5zZWxlY3RSb3dzKHkucm93LHkucm93LHkuY29s''@;'; put 'put ''KTp5LmNvbD49MCYmeS5yb3c+PTAmJiFJLmNlbGw/S2UmJkMuc2V0UmFuZ2VTdGFydCh5KTp5LmNvbDwwJiZ5LnJvdzwwJiZDLnNlbGVjdEFsbCghMCwhMCl9fXZhciBNUWU9bmV3IE1hcChbWyJtb3VzZWRvd24iLFlDZV0sWyJtb3VzZW92ZXIiLGZ1bmN0aW9uIFNRZShkKXt2YXIgaD1kLmNv''@;'; put 'put ''b3Jkcyx2PWQuc2VsZWN0aW9uLHk9ZC5jb250cm9sbGVyLEM9ZC5jZWxsQ29vcmRzRmFjdG9yeTtpZihkLmlzTGVmdENsaWNrKXt2YXIgST12LmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpLFo9di5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKSx1ZT12LnRhYmxlUHJvcHMuY291bnRDb2xzKCks''@;'; put 'put ''X2U9di50YWJsZVByb3BzLmNvdW50Um93cygpO1omJiF5LmNvbHVtbj92LnNldFJhbmdlRW5kKEMoX2UtMSxoLmNvbCkpOkkmJiF5LnJvdz92LnNldFJhbmdlRW5kKEMoaC5yb3csdWUtMSkpOnkuY2VsbHx8di5zZXRSYW5nZUVuZChoKX19XSxbInRvdWNoc3RhcnQiLFlDZV1dKTtmdW5jdGlv''@;'; put 'put ''biBVQ2UoZCxnKXt2YXIgaD1nLmNvb3Jkcyx2PWcuc2VsZWN0aW9uLHk9Zy5jb250cm9sbGVyLEM9Zy5jZWxsQ29vcmRzRmFjdG9yeTtNUWUuZ2V0KGQudHlwZSkoe2Nvb3JkczpoLHNlbGVjdGlvbjp2LGNvbnRyb2xsZXI6eSxjZWxsQ29vcmRzRmFjdG9yeTpDLGlzU2hpZnRLZXk6ZC5zaGlm''@;'; put 'put ''dEtleSxpc0xlZnRDbGljazpvZWUoZCl8fCJ0b3VjaHN0YXJ0Ij09PWQudHlwZSxpc1JpZ2h0Q2xpY2s6RXcoZCl9KX12YXIgUUNlPW5ldyBXZWFrTWFwLHpkZT1TeW1ib2woInJvb3RJbnN0YW5jZSIpO2Z1bmN0aW9uIEVRZShkKXtRQ2Uuc2V0KGQsITApfWZ1bmN0aW9uIHhRZShkKXtyZXR1''@;'; put 'put ''cm4gZD09PXpkZX1mdW5jdGlvbiBHZGUoZCl7cmV0dXJuIFFDZS5oYXMoZCl9ZnVuY3Rpb24gS1ooZCxnKXtyZXR1cm4gZnVuY3Rpb24gRFFlKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBJUWUoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5l''@;'; put 'put ''ZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9''@;'; put 'put ''PWcpO3k9ITApO31jYXRjaCh1ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgWn19cmV0dXJuIHZ9fShkLGcpfHxYQ2UoZCxnKXx8ZnVuY3Rpb24gVFFlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxp''@;'; put 'put ''ZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBKQ2UoZCl7cmV0dXJuIGZ1bmN0''@;'; put 'put ''aW9uIFJRZShkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBXZGUoZCl9KGQpfHxmdW5jdGlvbiBPUWUoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQp''@;'; put 'put ''fShkKXx8WENlKGQpfHxmdW5jdGlvbiBMUWUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0''@;'; put 'put ''ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBYQ2UoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIFdkZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0''@;'; put 'put ''b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gV2RlKGQsZyl9fWZ1bmN0aW9u''@;'; put 'put ''IFdkZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIEtDZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVy''@;'; put 'put ''YWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBCUz1uZXcgV2Vha01hcCxGUWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpeyhmdW5jdGlvbiBCUWUo''@;'; put 'put ''ZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5pbnN0YW5jZT1nLHRoaXMuZXZlbnRNYW5hZ2VyPW5ldyBMMShnKSx0aGlzLnNldHRpbmdzPWcuZ2V0U2V0dGluZ3Mo''@;'; put 'put ''KSx0aGlzLlRIRUFEPXZvaWQgMCx0aGlzLlRCT0RZPXZvaWQgMCx0aGlzLl93dD12b2lkIDAsdGhpcy5hY3RpdmVXdD12b2lkIDAsdGhpcy5wb3N0cG9uZWRBZGp1c3RFbGVtZW50c1NpemU9ITEsQlMuc2V0KHRoaXMse3NlbGVjdGlvbk1vdXNlRG93bjohMSxtb3VzZURvd246dm9pZCAwLHRh''@;'; put 'put ''YmxlOnZvaWQgMCxsYXN0V2lkdGg6MCxsYXN0SGVpZ2h0OjB9KSx0aGlzLmNyZWF0ZUVsZW1lbnRzKCksdGhpcy5yZWdpc3RlckV2ZW50cygpLHRoaXMuaW5pdGlhbGl6ZVdhbGtvbnRhYmxlKCl9cmV0dXJuIGZ1bmN0aW9uIFBRZShkLGcsaCl7ZyYmS0NlKGQucHJvdG90eXBlLGcpLGgmJktD''@;'; put 'put ''ZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pbnN0YW5jZS5pc1JlbmRlclN1c3BlbmRlZCgpfHwodGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlUmVuZGVy''@;'; put 'put ''Iix0aGlzLmluc3RhbmNlLmZvcmNlRnVsbFJlbmRlciksdGhpcy5wb3N0cG9uZWRBZGp1c3RFbGVtZW50c1NpemUmJih0aGlzLnBvc3Rwb25lZEFkanVzdEVsZW1lbnRzU2l6ZT0hMSx0aGlzLmFkanVzdEVsZW1lbnRzU2l6ZSghMCkpLHRoaXMuX3d0LmRyYXcoIXRoaXMuaW5zdGFuY2UuZm9y''@;'; put 'put ''Y2VGdWxsUmVuZGVyKSx0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclJlbmRlciIsdGhpcy5pbnN0YW5jZS5mb3JjZUZ1bGxSZW5kZXIpLHRoaXMuaW5zdGFuY2UuZm9yY2VGdWxsUmVuZGVyPSExLHRoaXMuaW5zdGFuY2UucmVuZGVyQ2FsbD0hMSl9fSx7a2V5OiJhZGp1c3RFbGVtZW50''@;'; put 'put ''c1NpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTt0aGlzLmluc3RhbmNlLmlzUmVuZGVyU3VzcGVuZGVkKCk/dGhpcy5wb3N0cG9uZWRBZGp1c3RFbGVtZW50c1NpemU9ITA6dGhpcy5fd3Qu''@;'; put 'put ''d3RPdmVybGF5cy5hZGp1c3RFbGVtZW50c1NpemUoaCl9fSx7a2V5OiJnZXRDZWxsQXRDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9dGhpcy5fd3QuZ2V0Q2VsbChoLHYpO3JldHVybiB5PDA/bnVsbDp5fX0se2tleToic2Nyb2xsVmlld3BvcnQiLHZhbHVlOmZ1bmN0aW9uKGgs''@;'; put 'put ''dix5LEMsSSl7cmV0dXJuIHRoaXMuX3d0LnNjcm9sbFZpZXdwb3J0KGgsdix5LEMsSSl9fSx7a2V5OiJzY3JvbGxWaWV3cG9ydEhvcml6b250YWxseSIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3JldHVybiB0aGlzLl93dC5zY3JvbGxWaWV3cG9ydEhvcml6b250YWxseShoLHYseSl9fSx7a2V5''@;'; put 'put ''OiJzY3JvbGxWaWV3cG9ydFZlcnRpY2FsbHkiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXtyZXR1cm4gdGhpcy5fd3Quc2Nyb2xsVmlld3BvcnRWZXJ0aWNhbGx5KGgsdix5KX19LHtrZXk6ImNyZWF0ZUVsZW1lbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPUJTLmdldCh0aGlzKSx2PXRoaXMu''@;'; put 'put ''aW5zdGFuY2UseT12LnJvb3RFbGVtZW50LEM9di5yb290RG9jdW1lbnQsST15LmdldEF0dHJpYnV0ZSgic3R5bGUiKTtJJiZ5LnNldEF0dHJpYnV0ZSgiZGF0YS1vcmlnaW5hbHN0eWxlIixJKSxPMCh5LCJoYW5kc29udGFibGUiKSxoLnRhYmxlPUMuY3JlYXRlRWxlbWVudCgiVEFCTEUiKSxP''@;'; put 'put ''MChoLnRhYmxlLCJodENvcmUiKSx0aGlzLmluc3RhbmNlLmdldFNldHRpbmdzKCkudGFibGVDbGFzc05hbWUmJk8wKGgudGFibGUsdGhpcy5pbnN0YW5jZS5nZXRTZXR0aW5ncygpLnRhYmxlQ2xhc3NOYW1lKSx0aGlzLlRIRUFEPUMuY3JlYXRlRWxlbWVudCgiVEhFQUQiKSxoLnRhYmxlLmFw''@;'; put 'put ''cGVuZENoaWxkKHRoaXMuVEhFQUQpLHRoaXMuVEJPRFk9Qy5jcmVhdGVFbGVtZW50KCJUQk9EWSIpLGgudGFibGUuYXBwZW5kQ2hpbGQodGhpcy5UQk9EWSksdGhpcy5pbnN0YW5jZS50YWJsZT1oLnRhYmxlLHRoaXMuaW5zdGFuY2UuY29udGFpbmVyLmluc2VydEJlZm9yZShoLnRhYmxlLHRo''@;'; put 'put ''aXMuaW5zdGFuY2UuY29udGFpbmVyLmZpcnN0Q2hpbGQpfX0se2tleToicmVnaXN0ZXJFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcyx2PUJTLmdldCh0aGlzKSx5PXRoaXMuaW5zdGFuY2UsQz15LnJvb3RFbGVtZW50LEk9eS5yb290RG9jdW1lbnQsWj15LnNlbGVjdGlvbix1''@;'; put 'put ''ZT1JLmRvY3VtZW50RWxlbWVudDt0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKEMsIm1vdXNlZG93biIsZnVuY3Rpb24oX2Upe2lmKHYuc2VsZWN0aW9uTW91c2VEb3duPSEwLCFoLmlzVGV4dFNlbGVjdGlvbkFsbG93ZWQoX2UudGFyZ2V0KSl7dmFyIEJlPWguaW5zdGFuY2Uu''@;'; put 'put ''cm9vdFdpbmRvdzttM2UoQmUpLF9lLnByZXZlbnREZWZhdWx0KCksQmUuZm9jdXMoKX19KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKEMsIm1vdXNldXAiLGZ1bmN0aW9uKCl7di5zZWxlY3Rpb25Nb3VzZURvd249ITF9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExp''@;'; put 'put ''c3RlbmVyKEMsIm1vdXNlbW92ZSIsZnVuY3Rpb24oX2Upe3Yuc2VsZWN0aW9uTW91c2VEb3duJiYhaC5pc1RleHRTZWxlY3Rpb25BbGxvd2VkKF9lLnRhcmdldCkmJihoLnNldHRpbmdzLmZyYWdtZW50U2VsZWN0aW9uJiZtM2UoaC5pbnN0YW5jZS5yb290V2luZG93KSxfZS5wcmV2ZW50RGVm''@;'; put 'put ''YXVsdCgpKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodWUsImtleXVwIixmdW5jdGlvbihfZSl7Wi5pc0luUHJvZ3Jlc3MoKSYmIV9lLnNoaWZ0S2V5JiZaLmZpbmlzaCgpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih1ZSwibW91c2V1cCIsZnVu''@;'; put 'put ''Y3Rpb24oX2Upe1ouaXNJblByb2dyZXNzKCkmJm9lZShfZSkmJlouZmluaXNoKCksdi5tb3VzZURvd249ITEsKEEzZShJLmFjdGl2ZUVsZW1lbnQpfHwhWi5pc1NlbGVjdGVkKCkmJiFaLmlzU2VsZWN0ZWRCeUFueUhlYWRlcigpJiYhQy5jb250YWlucyhfZS50YXJnZXQpJiYhRXcoX2UpKSYm''@;'; put 'put ''aC5pbnN0YW5jZS51bmxpc3RlbigpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih1ZSwiY29udGV4dG1lbnUiLGZ1bmN0aW9uKF9lKXtaLmlzSW5Qcm9ncmVzcygpJiZFdyhfZSkmJihaLmZpbmlzaCgpLHYubW91c2VEb3duPSExKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFk''@;'; put 'put ''ZEV2ZW50TGlzdGVuZXIodWUsInRvdWNoZW5kIixmdW5jdGlvbigpe1ouaXNJblByb2dyZXNzKCkmJlouZmluaXNoKCksdi5tb3VzZURvd249ITF9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHVlLCJtb3VzZWRvd24iLGZ1bmN0aW9uKF9lKXt2YXIgQmU9X2UudGFyZ2V0''@;'; put 'put ''LE5lPV9lLnh8fF9lLmNsaWVudFgsS2U9X2UueXx8X2UuY2xpZW50WSxwdD1fZS50YXJnZXQ7aWYoIXYubW91c2VEb3duJiZDJiZoLmluc3RhbmNlLnZpZXcpe3ZhciBPdD1oLmluc3RhbmNlLnZpZXcuX3d0Lnd0VGFibGUuaG9sZGVyO2lmKHB0PT09T3Qpe3ZhciAkdD1CYyhJKTtpZihJLmVs''@;'; put 'put ''ZW1lbnRGcm9tUG9pbnQoTmUrJHQsS2UpIT09T3R8fEkuZWxlbWVudEZyb21Qb2ludChOZSxLZSskdCkhPT1PdClyZXR1cm59ZWxzZSBmb3IoO3B0IT09dWU7KXtpZihudWxsPT09cHQpe2lmKF9lLmlzVGFyZ2V0V2ViQ29tcG9uZW50KWJyZWFrO3JldHVybn1pZihwdD09PUMpcmV0dXJuO3B0''@;'; put 'put ''PXB0LnBhcmVudE5vZGV9KCJmdW5jdGlvbiI9PXR5cGVvZiBoLnNldHRpbmdzLm91dHNpZGVDbGlja0Rlc2VsZWN0cz9oLnNldHRpbmdzLm91dHNpZGVDbGlja0Rlc2VsZWN0cyhCZSk6aC5zZXR0aW5ncy5vdXRzaWRlQ2xpY2tEZXNlbGVjdHMpP2guaW5zdGFuY2UuZGVzZWxlY3RDZWxsKCk6''@;'; put 'put ''aC5pbnN0YW5jZS5kZXN0cm95RWRpdG9yKCExLCExKX19KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHYudGFibGUsInNlbGVjdHN0YXJ0IixmdW5jdGlvbihfZSl7aC5zZXR0aW5ncy5mcmFnbWVudFNlbGVjdGlvbnx8WlooX2UudGFyZ2V0KXx8X2UucHJldmVudERlZmF1''@;'; put 'put ''bHQoKX0pfX0se2tleToidHJhbnNsYXRlRnJvbVJlbmRlcmFibGVUb1Zpc3VhbENvb3JkcyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY7cmV0dXJuKHY9dGhpcy5pbnN0YW5jZSkuX2NyZWF0ZUNlbGxDb29yZHMuYXBwbHkodixKQ2UodGhpcy50cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlz''@;'; put 'put ''dWFsSW5kZXgoaC5yb3csaC5jb2wpKSl9fSx7a2V5OiJ0cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9aD49MD90aGlzLmluc3RhbmNlLnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoaCk6aCxD''@;'; put 'put ''PXY+PTA/dGhpcy5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHYpOnY7cmV0dXJuIG51bGw9PT15JiYoeT1oKSxudWxsPT09QyYmKEM9diksW3ksQ119fSx7a2V5OiJjb3VudFJlbmRlcmFibGVJbmRleGVzIix2YWx1ZTpmdW5jdGlvbiho''@;'; put 'put ''LHYpe3ZhciB5PU1hdGgubWluKGguZ2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgoKSx2KSxDPWguZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KHktMSwtMSk7cmV0dXJuIG51bGw9PT1DPzA6aC5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KEMpKzF9fSx7a2V5OiJjb3VudFJlbmRlcmFi''@;'; put 'put ''bGVDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvdW50UmVuZGVyYWJsZUluZGV4ZXModGhpcy5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlcix0aGlzLnNldHRpbmdzLm1heENvbHMpfX0se2tleToiY291bnRSZW5kZXJhYmxlUm93cyIsdmFsdWU6ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5jb3VudFJlbmRlcmFibGVJbmRleGVzKHRoaXMuaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIsdGhpcy5zZXR0aW5ncy5tYXhSb3dzKX19LHtrZXk6ImNvdW50Tm90SGlkZGVuUm93SW5kZXhlcyIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtyZXR1cm4gdGhpcy5jb3VudE5vdEhpZGRl''@;'; put 'put ''bkluZGV4ZXMoaCx2LHRoaXMuaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIsdGhpcy5jb3VudFJlbmRlcmFibGVSb3dzKCkpfX0se2tleToiY291bnROb3RIaWRkZW5Db2x1bW5JbmRleGVzIix2YWx1ZTpmdW5jdGlvbihoLHYpe3JldHVybiB0aGlzLmNvdW50Tm90SGlkZGVuSW5kZXhlcyhoLHYs''@;'; put 'put ''dGhpcy5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlcix0aGlzLmNvdW50UmVuZGVyYWJsZUNvbHVtbnMoKSl9fSx7a2V5OiJjb3VudE5vdEhpZGRlbkluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9uKGgsdix5LEMpe2lmKGlzTmFOKGgpfHxoPDApcmV0dXJuIDA7dmFyIEk9eS5nZXROZWFyZXN0Tm90''@;'; put 'put ''SGlkZGVuSW5kZXgoaCx2KSxaPXkuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChJKTtpZighTnVtYmVyLmlzSW50ZWdlcihaKSlyZXR1cm4gMDt2YXIgdWU9MDtyZXR1cm4gdjwwP3VlPVorMTp2PjAmJih1ZT1DLVopLHVlfX0se2tleToiY291bnROb3RIaWRkZW5GaXhlZENvbHVtbnNT''@;'; put 'put ''dGFydCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmluc3RhbmNlLmNvdW50Q29scygpLHY9TWF0aC5taW4ocGFyc2VJbnQodGhpcy5zZXR0aW5ncy5maXhlZENvbHVtbnNTdGFydCwxMCksaCktMTtyZXR1cm4gdGhpcy5jb3VudE5vdEhpZGRlbkNvbHVtbkluZGV4ZXModiwtMSl9fSx7''@;'; put 'put ''a2V5OiJjb3VudE5vdEhpZGRlbkZpeGVkUm93c1RvcCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmluc3RhbmNlLmNvdW50Um93cygpLHY9TWF0aC5taW4ocGFyc2VJbnQodGhpcy5zZXR0aW5ncy5maXhlZFJvd3NUb3AsMTApLGgpLTE7cmV0dXJuIHRoaXMuY291bnROb3RIaWRkZW5S''@;'; put 'put ''b3dJbmRleGVzKHYsLTEpfX0se2tleToiY291bnROb3RIaWRkZW5GaXhlZFJvd3NCb3R0b20iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5pbnN0YW5jZS5jb3VudFJvd3MoKSx2PU1hdGgubWF4KGgtcGFyc2VJbnQodGhpcy5zZXR0aW5ncy5maXhlZFJvd3NCb3R0b20sMTApLDApO3Jl''@;'; put 'put ''dHVybiB0aGlzLmNvdW50Tm90SGlkZGVuUm93SW5kZXhlcyh2LDEpfX0se2tleToiaXNNYWluVGFibGVOb3RGdWxseUNvdmVyZWRCeU92ZXJsYXlzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuY291bnROb3RIaWRkZW5GaXhlZFJvd3NUb3AoKSt0aGlzLmNvdW50Tm90SGlkZGVuRml4''@;'; put 'put ''ZWRSb3dzQm90dG9tKCksdj10aGlzLmNvdW50Tm90SGlkZGVuRml4ZWRDb2x1bW5zU3RhcnQoKTtyZXR1cm4gdGhpcy5pbnN0YW5jZS5jb3VudFJlbmRlcmVkUm93cygpPmgmJnRoaXMuaW5zdGFuY2UuY291bnRSZW5kZXJlZENvbHMoKT52fX0se2tleToiaW5pdGlhbGl6ZVdhbGtvbnRhYmxl''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMsdj1CUy5nZXQodGhpcykseT17cnRsTW9kZTp0aGlzLmluc3RhbmNlLmlzUnRsKCksZXh0ZXJuYWxSb3dDYWxjdWxhdG9yOnRoaXMuaW5zdGFuY2UuZ2V0UGx1Z2luKCJhdXRvUm93U2l6ZSIpJiZ0aGlzLmluc3RhbmNlLmdldFBsdWdpbigi''@;'; put 'put ''YXV0b1Jvd1NpemUiKS5pc0VuYWJsZWQoKSx0YWJsZTp2LnRhYmxlLGlzRGF0YVZpZXdJbnN0YW5jZTpmdW5jdGlvbigpe3JldHVybiBHZGUoaC5pbnN0YW5jZSl9LHByZXZlbnRPdmVyZmxvdzpmdW5jdGlvbigpe3JldHVybiBoLnNldHRpbmdzLnByZXZlbnRPdmVyZmxvd30scHJldmVudFdo''@;'; put 'put ''ZWVsOmZ1bmN0aW9uKCl7cmV0dXJuIGguc2V0dGluZ3MucHJldmVudFdoZWVsfSxzdHJldGNoSDpmdW5jdGlvbigpe3JldHVybiBoLnNldHRpbmdzLnN0cmV0Y2hIfSxkYXRhOmZ1bmN0aW9uKEJlLE5lKXt2YXIgS2U7cmV0dXJuKEtlPWguaW5zdGFuY2UpLmdldERhdGFBdENlbGwuYXBwbHko''@;'; put 'put ''S2UsSkNlKGgudHJhbnNsYXRlRnJvbVJlbmRlcmFibGVUb1Zpc3VhbEluZGV4KEJlLE5lKSkpfSx0b3RhbFJvd3M6ZnVuY3Rpb24oKXtyZXR1cm4gaC5jb3VudFJlbmRlcmFibGVSb3dzKCl9LHRvdGFsQ29sdW1uczpmdW5jdGlvbigpe3JldHVybiBoLmNvdW50UmVuZGVyYWJsZUNvbHVtbnMo''@;'; put 'put ''KX0sZml4ZWRDb2x1bW5zU3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gaC5jb3VudE5vdEhpZGRlbkZpeGVkQ29sdW1uc1N0YXJ0KCl9LGZpeGVkUm93c1RvcDpmdW5jdGlvbigpe3JldHVybiBoLmNvdW50Tm90SGlkZGVuRml4ZWRSb3dzVG9wKCl9LGZpeGVkUm93c0JvdHRvbTpmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBoLmNvdW50Tm90SGlkZGVuRml4ZWRSb3dzQm90dG9tKCl9LHNob3VsZFJlbmRlcklubGluZVN0YXJ0T3ZlcmxheTpmdW5jdGlvbigpe3JldHVybiBoLnNldHRpbmdzLmZpeGVkQ29sdW1uc1N0YXJ0PjB8fHkucm93SGVhZGVycygpLmxlbmd0aD4wfSxzaG91bGRSZW5kZXJUb3BP''@;'; put 'put ''dmVybGF5OmZ1bmN0aW9uKCl7cmV0dXJuIGguc2V0dGluZ3MuZml4ZWRSb3dzVG9wPjB8fHkuY29sdW1uSGVhZGVycygpLmxlbmd0aD4wfSxzaG91bGRSZW5kZXJCb3R0b21PdmVybGF5OmZ1bmN0aW9uKCl7cmV0dXJuIGguc2V0dGluZ3MuZml4ZWRSb3dzQm90dG9tPjB9LG1pblNwYXJlUm93''@;'; put 'put ''czpmdW5jdGlvbigpe3JldHVybiBoLnNldHRpbmdzLm1pblNwYXJlUm93c30scmVuZGVyQWxsUm93czp0aGlzLnNldHRpbmdzLnJlbmRlckFsbFJvd3Mscm93SGVhZGVyczpmdW5jdGlvbigpe3ZhciBCZT1bXTtyZXR1cm4gaC5pbnN0YW5jZS5oYXNSb3dIZWFkZXJzKCkmJkJlLnB1c2goZnVu''@;'; put 'put ''Y3Rpb24oTmUsS2Upe3ZhciBwdD1OZT49MD9oLmluc3RhbmNlLnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoTmUpOk5lO2guYXBwZW5kUm93SGVhZGVyKHB0LEtlKX0pLGguaW5zdGFuY2UucnVuSG9va3MoImFmdGVyR2V0Um93SGVhZGVyUmVuZGVyZXJzIixC''@;'; put 'put ''ZSksQmV9LGNvbHVtbkhlYWRlcnM6ZnVuY3Rpb24oKXt2YXIgQmU9W107cmV0dXJuIGguaW5zdGFuY2UuaGFzQ29sSGVhZGVycygpJiZCZS5wdXNoKGZ1bmN0aW9uKE5lLEtlKXt2YXIgcHQ9TmU+PTA/aC5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJs''@;'; put 'put ''ZUluZGV4KE5lKTpOZTtoLmFwcGVuZENvbEhlYWRlcihwdCxLZSl9KSxoLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlckdldENvbHVtbkhlYWRlclJlbmRlcmVycyIsQmUpLEJlfSxjb2x1bW5XaWR0aDpmdW5jdGlvbihCZSl7dmFyIE5lPWguaW5zdGFuY2UuY29sdW1uSW5kZXhNYXBwZXIuZ2V0''@;'; put 'put ''VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChCZSk7cmV0dXJuIGguaW5zdGFuY2UuZ2V0Q29sV2lkdGgobnVsbD09PU5lP0JlOk5lKX0scm93SGVpZ2h0OmZ1bmN0aW9uKEJlKXt2YXIgTmU9aC5pbnN0YW5jZS5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KEJl''@;'; put 'put ''KTtyZXR1cm4gaC5pbnN0YW5jZS5nZXRSb3dIZWlnaHQobnVsbD09PU5lP0JlOk5lKX0sY2VsbFJlbmRlcmVyOmZ1bmN0aW9uKEJlLE5lLEtlKXt2YXIgT3Q9S1ooaC50cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsSW5kZXgoQmUsTmUpLDIpLCR0PU90WzBdLGZuPU90WzFdLExuPWgu''@;'; put 'put ''aW5zdGFuY2UucnVuSG9va3MoIm1vZGlmeUdldENlbGxDb29yZHMiLCR0LGZuKSxpcj0kdCxtcj1mbjtpZihBcnJheS5pc0FycmF5KExuKSl7dmFyIFNyPUtaKExuLDIpO2lyPVNyWzBdLG1yPVNyWzFdfXZhciB3cj1oLmluc3RhbmNlLmdldENlbGxNZXRhKGlyLG1yKSxRcj1oLmluc3RhbmNl''@;'; put 'put ''LmNvbFRvUHJvcChtcikseWk9aC5pbnN0YW5jZS5nZXREYXRhQXRSb3dQcm9wKGlyLFFyKTtoLmluc3RhbmNlLmhhc0hvb2soImJlZm9yZVZhbHVlUmVuZGVyIikmJih5aT1oLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVWYWx1ZVJlbmRlciIseWksd3IpKSxoLmluc3RhbmNlLnJ1bkhvb2tz''@;'; put 'put ''KCJiZWZvcmVSZW5kZXJlciIsS2UsJHQsZm4sUXIseWksd3IpLGguaW5zdGFuY2UuZ2V0Q2VsbFJlbmRlcmVyKHdyKShoLmluc3RhbmNlLEtlLCR0LGZuLFFyLHlpLHdyKSxoLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclJlbmRlcmVyIixLZSwkdCxmbixRcix5aSx3cil9LHNlbGVjdGlvbnM6''@;'; put 'put ''dGhpcy5pbnN0YW5jZS5zZWxlY3Rpb24uaGlnaGxpZ2h0LGhpZGVCb3JkZXJPbk1vdXNlRG93bk92ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gaC5zZXR0aW5ncy5mcmFnbWVudFNlbGVjdGlvbn0sb25XaW5kb3dSZXNpemU6ZnVuY3Rpb24oKXshaC5pbnN0YW5jZXx8aC5pbnN0YW5jZS5pc0Rlc3Ry''@;'; put 'put ''b3llZHx8aC5pbnN0YW5jZS5yZWZyZXNoRGltZW5zaW9ucygpfSxvbkNlbGxNb3VzZURvd246ZnVuY3Rpb24oQmUsTmUsS2UscHQpe3ZhciBPdD1oLnRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxDb29yZHMoTmUpLCR0PXtyb3c6ITEsY29sdW1uOiExLGNlbGw6ITF9O2guaW5zdGFu''@;'; put 'put ''Y2UubGlzdGVuKCksaC5hY3RpdmVXdD1wdCx2Lm1vdXNlRG93bj0hMCxoLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVPbkNlbGxNb3VzZURvd24iLEJlLE90LEtlLCR0KSwhVFMoQmUpJiYoVUNlKEJlLHtjb29yZHM6T3Qsc2VsZWN0aW9uOmguaW5zdGFuY2Uuc2VsZWN0aW9uLGNvbnRyb2xs''@;'; put 'put ''ZXI6JHQsY2VsbENvb3Jkc0ZhY3Rvcnk6ZnVuY3Rpb24oTG4saXIpe3JldHVybiBoLmluc3RhbmNlLl9jcmVhdGVDZWxsQ29vcmRzKExuLGlyKX19KSxoLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlck9uQ2VsbE1vdXNlRG93biIsQmUsT3QsS2UpLGguYWN0aXZlV3Q9aC5fd3QpfSxvbkNlbGxD''@;'; put 'put ''b250ZXh0TWVudTpmdW5jdGlvbihCZSxOZSxLZSxwdCl7dmFyIE90PWgudHJhbnNsYXRlRnJvbVJlbmRlcmFibGVUb1Zpc3VhbENvb3JkcyhOZSk7aC5hY3RpdmVXdD1wdCx2Lm1vdXNlRG93bj0hMSxoLmluc3RhbmNlLnNlbGVjdGlvbi5pc0luUHJvZ3Jlc3MoKSYmaC5pbnN0YW5jZS5zZWxl''@;'; put 'put ''Y3Rpb24uZmluaXNoKCksaC5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlT25DZWxsQ29udGV4dE1lbnUiLEJlLE90LEtlKSwhVFMoQmUpJiYoaC5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJPbkNlbGxDb250ZXh0TWVudSIsQmUsT3QsS2UpLGguYWN0aXZlV3Q9aC5fd3QpfSxvbkNlbGxNb3Vz''@;'; put 'put ''ZU91dDpmdW5jdGlvbihCZSxOZSxLZSxwdCl7dmFyIE90PWgudHJhbnNsYXRlRnJvbVJlbmRlcmFibGVUb1Zpc3VhbENvb3JkcyhOZSk7aC5hY3RpdmVXdD1wdCxoLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVPbkNlbGxNb3VzZU91dCIsQmUsT3QsS2UpLCFUUyhCZSkmJihoLmluc3RhbmNl''@;'; put 'put ''LnJ1bkhvb2tzKCJhZnRlck9uQ2VsbE1vdXNlT3V0IixCZSxPdCxLZSksaC5hY3RpdmVXdD1oLl93dCl9LG9uQ2VsbE1vdXNlT3ZlcjpmdW5jdGlvbihCZSxOZSxLZSxwdCl7dmFyIE90PWgudHJhbnNsYXRlRnJvbVJlbmRlcmFibGVUb1Zpc3VhbENvb3JkcyhOZSksJHQ9e3JvdzohMSxjb2x1''@;'; put 'put ''bW46ITEsY2VsbDohMX07aC5hY3RpdmVXdD1wdCxoLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVPbkNlbGxNb3VzZU92ZXIiLEJlLE90LEtlLCR0KSwhVFMoQmUpJiYodi5tb3VzZURvd24mJlVDZShCZSx7Y29vcmRzOk90LHNlbGVjdGlvbjpoLmluc3RhbmNlLnNlbGVjdGlvbixjb250cm9s''@;'; put 'put ''bGVyOiR0LGNlbGxDb29yZHNGYWN0b3J5OmZ1bmN0aW9uKExuLGlyKXtyZXR1cm4gaC5pbnN0YW5jZS5fY3JlYXRlQ2VsbENvb3JkcyhMbixpcil9fSksaC5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJPbkNlbGxNb3VzZU92ZXIiLEJlLE90LEtlKSxoLmFjdGl2ZVd0PWguX3d0KX0sb25DZWxs''@;'; put 'put ''TW91c2VVcDpmdW5jdGlvbihCZSxOZSxLZSxwdCl7dmFyIE90PWgudHJhbnNsYXRlRnJvbVJlbmRlcmFibGVUb1Zpc3VhbENvb3JkcyhOZSk7aC5hY3RpdmVXdD1wdCxoLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVPbkNlbGxNb3VzZVVwIixCZSxPdCxLZSksIVRTKEJlKSYmIWguaW5zdGFu''@;'; put 'put ''Y2UuaXNEZXN0cm95ZWQmJihoLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlck9uQ2VsbE1vdXNlVXAiLEJlLE90LEtlKSxoLmFjdGl2ZVd0PWguX3d0KX0sb25DZWxsQ29ybmVyTW91c2VEb3duOmZ1bmN0aW9uKEJlKXtCZS5wcmV2ZW50RGVmYXVsdCgpLGguaW5zdGFuY2UucnVuSG9va3MoImFm''@;'; put 'put ''dGVyT25DZWxsQ29ybmVyTW91c2VEb3duIixCZSl9LG9uQ2VsbENvcm5lckRibENsaWNrOmZ1bmN0aW9uKEJlKXtCZS5wcmV2ZW50RGVmYXVsdCgpLGguaW5zdGFuY2UucnVuSG9va3MoImFmdGVyT25DZWxsQ29ybmVyRGJsQ2xpY2siLEJlKX0sYmVmb3JlRHJhdzpmdW5jdGlvbihCZSxOZSl7''@;'; put 'put ''cmV0dXJuIGguYmVmb3JlUmVuZGVyKEJlLE5lKX0sb25EcmF3OmZ1bmN0aW9uKEJlKXtyZXR1cm4gaC5hZnRlclJlbmRlcihCZSl9LG9uU2Nyb2xsVmVydGljYWxseTpmdW5jdGlvbigpe3JldHVybiBoLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclNjcm9sbFZlcnRpY2FsbHkiKX0sb25TY3Jv''@;'; put 'put ''bGxIb3Jpem9udGFsbHk6ZnVuY3Rpb24oKXtyZXR1cm4gaC5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJTY3JvbGxIb3Jpem9udGFsbHkiKX0sb25CZWZvcmVSZW1vdmVDZWxsQ2xhc3NOYW1lczpmdW5jdGlvbigpe3JldHVybiBoLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVSZW1vdmVDZWxs''@;'; put 'put ''Q2xhc3NOYW1lcyIpfSxvbkJlZm9yZUhpZ2hsaWdodGluZ1Jvd0hlYWRlcjpmdW5jdGlvbihCZSxOZSxLZSl7dmFyIHB0PWguaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIsT3Q9cHQuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChCZSksJHQ9aC5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3Jl''@;'; put 'put ''SGlnaGxpZ2h0aW5nUm93SGVhZGVyIixPdCxOZSxLZSk7cmV0dXJuIHB0LmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgocHQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KCR0LDEpKX0sb25CZWZvcmVIaWdobGlnaHRpbmdDb2x1bW5IZWFkZXI6ZnVuY3Rpb24oQmUsTmUsS2Upe3ZhciBw''@;'; put 'put ''dD1oLmluc3RhbmNlLmNvbHVtbkluZGV4TWFwcGVyLE90PXB0LmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoQmUpLCR0PWguaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZUhpZ2hsaWdodGluZ0NvbHVtbkhlYWRlciIsT3QsTmUsS2UpO3JldHVybiBwdC5nZXRSZW5kZXJhYmxlRnJvbVZp''@;'; put 'put ''c3VhbEluZGV4KHB0LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCgkdCwxKSl9LG9uQWZ0ZXJEcmF3U2VsZWN0aW9uOmZ1bmN0aW9uKEJlLE5lLEtlKXt2YXIgcHQsJHQ9S1ooaC50cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsSW5kZXgoQmUsTmUpLDIpLGZuPSR0WzBdLExuPSR0WzFd''@;'; put 'put ''LGlyPWguaW5zdGFuY2Uuc2VsZWN0aW9uLmdldFNlbGVjdGVkUmFuZ2UoKSxtcj1pci5zaXplKCk7aWYobXI+MCl7dmFyIHdyPWlyLnBlZWtCeUluZGV4KChudWxsIT1LZT9LZTowKSsxLW1yKTtwdD1bd3IuZnJvbS5yb3csd3IuZnJvbS5jb2wsd3IudG8ucm93LHdyLnRvLmNvbF19cmV0dXJu''@;'; put 'put ''IGguaW5zdGFuY2UucnVuSG9va3MoImFmdGVyRHJhd1NlbGVjdGlvbiIsZm4sTG4scHQsS2UpfSxvbkJlZm9yZURyYXdCb3JkZXJzOmZ1bmN0aW9uKEJlLE5lKXt2YXIgS2U9S1ooQmUsNCksT3Q9S2VbMV0sJHQ9S2VbMl0sZm49S2VbM10sTG49W2guaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIu''@;'; put 'put ''Z2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChLZVswXSksaC5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KE90KSxoLmluc3RhbmNlLnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoJHQpLGguaW5zdGFu''@;'; put 'put ''Y2UuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChmbildO3JldHVybiBoLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVEcmF3Qm9yZGVycyIsTG4sTmUpfSxvbkJlZm9yZVRvdWNoU2Nyb2xsOmZ1bmN0aW9uKCl7cmV0dXJuIGguaW5zdGFuY2UucnVuSG9v''@;'; put 'put ''a3MoImJlZm9yZVRvdWNoU2Nyb2xsIil9LG9uQWZ0ZXJNb21lbnR1bVNjcm9sbDpmdW5jdGlvbigpe3JldHVybiBoLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlck1vbWVudHVtU2Nyb2xsIil9LG9uQmVmb3JlU3RyZXRjaGluZ0NvbHVtbldpZHRoOmZ1bmN0aW9uKEJlLE5lKXt2YXIgS2U9aC5p''@;'; put 'put ''bnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KE5lKTtyZXR1cm4gaC5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlU3RyZXRjaGluZ0NvbHVtbldpZHRoIixCZSxLZSl9LG9uTW9kaWZ5Um93SGVhZGVyV2lkdGg6ZnVuY3Rpb24oQmUpe3JldHVy''@;'; put 'put ''biBoLmluc3RhbmNlLnJ1bkhvb2tzKCJtb2RpZnlSb3dIZWFkZXJXaWR0aCIsQmUpfSxvbk1vZGlmeUdldENlbGxDb29yZHM6ZnVuY3Rpb24oQmUsTmUsS2Upe3ZhciBwdD1oLmluc3RhbmNlLnJvd0luZGV4TWFwcGVyLE90PWguaW5zdGFuY2UuY29sdW1uSW5kZXhNYXBwZXIsJHQ9TmU+PTA/''@;'; put 'put ''T3QuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChOZSk6TmUsZm49QmU+PTA/cHQuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChCZSk6QmUsTG49aC5pbnN0YW5jZS5ydW5Ib29rcygibW9kaWZ5R2V0Q2VsbENvb3JkcyIsZm4sJHQsS2UpO2lmKEFycmF5LmlzQXJyYXkoTG4pKXt2''@;'; put 'put ''YXIgaXI9S1ooTG4sNCksbXI9aXJbMF0sU3I9aXJbMV0sd3I9aXJbMl0sUXI9aXJbM107cmV0dXJuW21yPj0wP3B0LmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgocHQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KG1yLDEpKTptcixTcj49MD9PdC5nZXRSZW5kZXJhYmxlRnJvbVZpc3Vh''@;'; put 'put ''bEluZGV4KE90LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChTciwxKSk6U3Isd3I+PTA/cHQuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChwdC5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgod3IsLTEpKTp3cixRcj49MD9PdC5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KE90Lmdl''@;'; put 'put ''dE5lYXJlc3ROb3RIaWRkZW5JbmRleChRciwtMSkpOlFyXX19LHZpZXdwb3J0Um93Q2FsY3VsYXRvck92ZXJyaWRlOmZ1bmN0aW9uKEJlKXt2YXIgTmU9aC5zZXR0aW5ncy52aWV3cG9ydFJvd1JlbmRlcmluZ09mZnNldDtpZigiYXV0byI9PT1OZSYmaC5zZXR0aW5ncy5maXhlZFJvd3NUb3Am''@;'; put 'put ''JihOZT0xMCksTmU+MHx8ImF1dG8iPT09TmUpe3ZhciBLZT1oLmNvdW50UmVuZGVyYWJsZVJvd3MoKSxwdD1CZS5zdGFydFJvdyxPdD1CZS5lbmRSb3c7aWYoIm51bWJlciI9PXR5cGVvZiBOZSlCZS5zdGFydFJvdz1NYXRoLm1heChwdC1OZSwwKSxCZS5lbmRSb3c9TWF0aC5taW4oT3QrTmUs''@;'; put 'put ''S2UtMSk7ZWxzZSBpZigiYXV0byI9PT1OZSl7dmFyICR0PU1hdGguY2VpbChPdC9LZSoxMik7QmUuc3RhcnRSb3c9TWF0aC5tYXgocHQtJHQsMCksQmUuZW5kUm93PU1hdGgubWluKE90KyR0LEtlLTEpfX1oLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclZpZXdwb3J0Um93Q2FsY3VsYXRvck92''@;'; put 'put ''ZXJyaWRlIixCZSl9LHZpZXdwb3J0Q29sdW1uQ2FsY3VsYXRvck92ZXJyaWRlOmZ1bmN0aW9uKEJlKXt2YXIgTmU9aC5zZXR0aW5ncy52aWV3cG9ydENvbHVtblJlbmRlcmluZ09mZnNldDtpZigiYXV0byI9PT1OZSYmaC5zZXR0aW5ncy5maXhlZENvbHVtbnNTdGFydCYmKE5lPTEwKSxOZT4w''@;'; put 'put ''fHwiYXV0byI9PT1OZSl7dmFyIEtlPWguY291bnRSZW5kZXJhYmxlQ29sdW1ucygpLHB0PUJlLnN0YXJ0Q29sdW1uLE90PUJlLmVuZENvbHVtbjtpZigibnVtYmVyIj09dHlwZW9mIE5lJiYoQmUuc3RhcnRDb2x1bW49TWF0aC5tYXgocHQtTmUsMCksQmUuZW5kQ29sdW1uPU1hdGgubWluKE90''@;'; put 'put ''K05lLEtlLTEpKSwiYXV0byI9PT1OZSl7dmFyICR0PU1hdGguY2VpbChPdC9LZSo2KTtCZS5zdGFydENvbHVtbj1NYXRoLm1heChwdC0kdCwwKSxCZS5lbmRDb2x1bW49TWF0aC5taW4oT3QrJHQsS2UtMSl9fWguaW5zdGFuY2UucnVuSG9va3MoImFmdGVyVmlld3BvcnRDb2x1bW5DYWxjdWxh''@;'; put 'put ''dG9yT3ZlcnJpZGUiLEJlKX0scm93SGVhZGVyV2lkdGg6ZnVuY3Rpb24oKXtyZXR1cm4gaC5zZXR0aW5ncy5yb3dIZWFkZXJXaWR0aH0sY29sdW1uSGVhZGVySGVpZ2h0OmZ1bmN0aW9uKCl7dmFyIEJlPWguaW5zdGFuY2UucnVuSG9va3MoIm1vZGlmeUNvbHVtbkhlYWRlckhlaWdodCIpO3Jl''@;'; put 'put ''dHVybiBoLnNldHRpbmdzLmNvbHVtbkhlYWRlckhlaWdodHx8QmV9fTt0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVJbml0V2Fsa29udGFibGUiLHkpLHRoaXMuX3d0PW5ldyBrUWUoeSksdGhpcy5hY3RpdmVXdD10aGlzLl93dDt2YXIgQz10aGlzLl93dC53dFRhYmxlLnNwcmVhZGVy''@;'; put 'put ''LEk9dGhpcy5pbnN0YW5jZS5yb290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLnNldExhc3RTaXplKEkud2lkdGgsSS5oZWlnaHQpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoQywibW91c2Vkb3duIixmdW5jdGlvbihfZSl7X2UudGFyZ2V0PT09QyYm''@;'; put 'put ''Mz09PV9lLndoaWNoJiZfZS5zdG9wUHJvcGFnYXRpb24oKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoQywiY29udGV4dG1lbnUiLGZ1bmN0aW9uKF9lKXtfZS50YXJnZXQ9PT1DJiYzPT09X2Uud2hpY2gmJl9lLnN0b3BQcm9wYWdhdGlvbigpfSksdGhpcy5ldmVudE1h''@;'; put 'put ''bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmluc3RhbmNlLnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsImNsaWNrIixmdW5jdGlvbigpe2guc2V0dGluZ3Mub2JzZXJ2ZURPTVZpc2liaWxpdHkmJmguX3d0LmRyYXdJbnRlcnJ1cHRlZCYmKGguaW5zdGFuY2UuZm9yY2VGdWxsUmVu''@;'; put 'put ''ZGVyPSEwLGgucmVuZGVyKCkpfSl9fSx7a2V5OiJpc1RleHRTZWxlY3Rpb25BbGxvd2VkIix2YWx1ZTpmdW5jdGlvbihoKXtpZihaWihoKSlyZXR1cm4hMDt2YXIgdj1fdyhoLHRoaXMuaW5zdGFuY2Uudmlldy5fd3Qud3RUYWJsZS5zcHJlYWRlcik7cmV0dXJuISEoITA9PT10aGlzLnNldHRp''@;'; put 'put ''bmdzLmZyYWdtZW50U2VsZWN0aW9uJiZ2fHwiY2VsbCI9PT10aGlzLnNldHRpbmdzLmZyYWdtZW50U2VsZWN0aW9uJiZ0aGlzLmlzU2VsZWN0ZWRPbmx5Q2VsbCgpJiZ2fHwhdGhpcy5zZXR0aW5ncy5mcmFnbWVudFNlbGVjdGlvbiYmdGhpcy5pc0NlbGxFZGl0ZWQoKSYmdGhpcy5pc1NlbGVj''@;'; put 'put ''dGVkT25seUNlbGwoKSl9fSx7a2V5OiJpc01vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gQlMuZ2V0KHRoaXMpLm1vdXNlRG93bn19LHtrZXk6ImlzU2VsZWN0ZWRPbmx5Q2VsbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaCx2O3JldHVybiBudWxsIT09KGg9bnVsbD09PSh2PXRo''@;'; put 'put ''aXMuaW5zdGFuY2UuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSl8fHZvaWQgMD09PXY/dm9pZCAwOnYuaXNTaW5nbGUoKSkmJnZvaWQgMCE9PWgmJmh9fSx7a2V5OiJpc0NlbGxFZGl0ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5pbnN0YW5jZS5nZXRBY3RpdmVFZGl0b3IoKTtyZXR1''@;'; put 'put ''cm4gaCYmaC5pc09wZW5lZCgpfX0se2tleToiYmVmb3JlUmVuZGVyIix2YWx1ZTpmdW5jdGlvbihoLHYpe2gmJnRoaXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVZpZXdSZW5kZXIiLHRoaXMuaW5zdGFuY2UuZm9yY2VGdWxsUmVuZGVyLHYpfX0se2tleToiYWZ0ZXJSZW5kZXIiLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKGgpe2gmJnRoaXMuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyVmlld1JlbmRlciIsdGhpcy5pbnN0YW5jZS5mb3JjZUZ1bGxSZW5kZXIpfX0se2tleToiYXBwZW5kUm93SGVhZGVyIix2YWx1ZTpmdW5jdGlvbihoLHYpe2lmKHYuZmlyc3RDaGlsZCl7dmFyIHk9di5maXJzdENo''@;'; put 'put ''aWxkO2lmKCF0bCh5LCJyZWxhdGl2ZSIpKXJldHVybiBEcCh2KSx2b2lkIHRoaXMuYXBwZW5kUm93SGVhZGVyKGgsdik7dGhpcy51cGRhdGVDZWxsSGVhZGVyKHkucXVlcnlTZWxlY3RvcigiLnJvd0hlYWRlciIpLGgsdGhpcy5pbnN0YW5jZS5nZXRSb3dIZWFkZXIpfWVsc2V7dmFyIEM9dGhp''@;'; put 'put ''cy5pbnN0YW5jZSxJPUMucm9vdERvY3VtZW50LFo9Qy5nZXRSb3dIZWFkZXIsdWU9SS5jcmVhdGVFbGVtZW50KCJkaXYiKSxfZT1JLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTt1ZS5jbGFzc05hbWU9InJlbGF0aXZlIixfZS5jbGFzc05hbWU9InJvd0hlYWRlciIsdGhpcy51cGRhdGVDZWxsSGVh''@;'; put 'put ''ZGVyKF9lLGgsWiksdWUuYXBwZW5kQ2hpbGQoX2UpLHYuYXBwZW5kQ2hpbGQodWUpfXRoaXMuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyR2V0Um93SGVhZGVyIixoLHYpfX0se2tleToiYXBwZW5kQ29sSGVhZGVyIix2YWx1ZTpmdW5jdGlvbihoLHYpe2lmKHYuZmlyc3RDaGlsZCl7dmFyIHk9''@;'; put 'put ''di5maXJzdENoaWxkO3RsKHksInJlbGF0aXZlIik/dGhpcy51cGRhdGVDZWxsSGVhZGVyKHkucXVlcnlTZWxlY3RvcigiLmNvbEhlYWRlciIpLGgsdGhpcy5pbnN0YW5jZS5nZXRDb2xIZWFkZXIpOihEcCh2KSx0aGlzLmFwcGVuZENvbEhlYWRlcihoLHYpKX1lbHNle3ZhciBDPXRoaXMuaW5z''@;'; put 'put ''dGFuY2Uucm9vdERvY3VtZW50LEk9Qy5jcmVhdGVFbGVtZW50KCJkaXYiKSxaPUMuY3JlYXRlRWxlbWVudCgic3BhbiIpO0kuY2xhc3NOYW1lPSJyZWxhdGl2ZSIsWi5jbGFzc05hbWU9ImNvbEhlYWRlciIsdGhpcy51cGRhdGVDZWxsSGVhZGVyKFosaCx0aGlzLmluc3RhbmNlLmdldENvbEhl''@;'; put 'put ''YWRlciksSS5hcHBlbmRDaGlsZChaKSx2LmFwcGVuZENoaWxkKEkpfXRoaXMuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyR2V0Q29sSGVhZGVyIixoLHYpfX0se2tleToidXBkYXRlQ2VsbEhlYWRlciIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3ZhciBDPXYsST10aGlzLl93dC53dE92ZXJsYXlz''@;'; put 'put ''LmdldFBhcmVudE92ZXJsYXkoaCl8fHRoaXMuX3d0O2gucGFyZW50Tm9kZSYmKHRsKGgsImNvbEhlYWRlciIpP0M9SS53dFRhYmxlLmNvbHVtbkZpbHRlci5zb3VyY2VUb1JlbmRlcmVkKHYpOnRsKGgsInJvd0hlYWRlciIpJiYoQz1JLnd0VGFibGUucm93RmlsdGVyLnNvdXJjZVRvUmVuZGVy''@;'; put 'put ''ZWQodikpKSxDPi0xP2t3KGgseSh2KSk6KFN3KGgsU3RyaW5nLmZyb21DaGFyQ29kZSgxNjApKSxPMChoLCJjb3JuZXJIZWFkZXIiKSl9fSx7a2V5OiJtYXhpbXVtVmlzaWJsZUVsZW1lbnRXaWR0aCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHk9dGhpcy5fd3Qud3RWaWV3cG9ydC5nZXRXb3Jr''@;'; put 'put ''c3BhY2VXaWR0aCgpLWg7cmV0dXJuIHk+MD95OjB9fSx7a2V5OiJtYXhpbXVtVmlzaWJsZUVsZW1lbnRIZWlnaHQiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB5PXRoaXMuX3d0Lnd0Vmlld3BvcnQuZ2V0V29ya3NwYWNlSGVpZ2h0KCktaDtyZXR1cm4geT4wP3k6MH19LHtrZXk6InNldExhc3RT''@;'; put 'put ''aXplIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PUJTLmdldCh0aGlzKSxDPVtoLHZdO3kubGFzdFdpZHRoPUNbMF0seS5sYXN0SGVpZ2h0PUNbMV19fSx7a2V5OiJnZXRMYXN0U2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1CUy5nZXQodGhpcyk7cmV0dXJue3dpZHRoOmgubGFzdFdp''@;'; put 'put ''ZHRoLGhlaWdodDpoLmxhc3RIZWlnaHR9fX0se2tleToiZ2V0Rmlyc3RGdWxseVZpc2libGVSb3ciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh0aGlzLmluc3RhbmNlLnZpZXcuX3d0Lnd0''@;'; put 'put ''U2Nyb2xsLmdldEZpcnN0VmlzaWJsZVJvdygpKX19LHtrZXk6ImdldExhc3RGdWxseVZpc2libGVSb3ciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh0aGlzLmluc3RhbmNlLnZpZXcuX3d0''@;'; put 'put ''Lnd0U2Nyb2xsLmdldExhc3RWaXNpYmxlUm93KCkpfX0se2tleToiZ2V0Rmlyc3RGdWxseVZpc2libGVDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zdGFuY2UuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh0aGlzLmluc3RhbmNl''@;'; put 'put ''LnZpZXcuX3d0Lnd0U2Nyb2xsLmdldEZpcnN0VmlzaWJsZUNvbHVtbigpKX19LHtrZXk6ImdldExhc3RGdWxseVZpc2libGVDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zdGFuY2UuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh0''@;'; put 'put ''aGlzLmluc3RhbmNlLnZpZXcuX3d0Lnd0U2Nyb2xsLmdldExhc3RWaXNpYmxlQ29sdW1uKCkpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl93dC5kZXN0cm95KCksdGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveSgpfX1dKSxkfSgpO2NvbnN0IEhRZT1GUWU7dmFyICRa''@;'; put 'put ''PUxwKCJjZWxsVHlwZXMiKSxOUWU9JFoucmVnaXN0ZXIsVlFlPSRaLmdldEl0ZW0sJENlPSRaLmhhc0l0ZW0salFlPSRaLmdldE5hbWVzO2Z1bmN0aW9uIFplZShkKXtpZighJENlKGQpKXRocm93IEVycm9yKCdZb3UgZGVjbGFyZWQgY2VsbCB0eXBlICInLmNvbmNhdChkLCciIGFzIGEgc3Ry''@;'; put 'put ''aW5nIHRoYXQgaXMgbm90IG1hcHBlZCB0byBhIGtub3duIG9iamVjdC5cbiAgICAgICAgICAgICAgICAgQ2VsbCB0eXBlIG11c3QgYmUgYW4gb2JqZWN0IG9yIGEgc3RyaW5nIG1hcHBlZCB0byBhbiBvYmplY3QgcmVnaXN0ZXJlZCBieVxuICAgICAgICAgICAgICAgICAiSGFuZHNvbnRhYmxl''@;'; put 'put ''LmNlbGxUeXBlcy5yZWdpc3RlckNlbGxUeXBlIiBtZXRob2QnKSk7cmV0dXJuIFZRZShkKX1mdW5jdGlvbiBrOChkLGcpeyJzdHJpbmciIT10eXBlb2YgZCYmKGQ9KGc9ZCkuQ0VMTF9UWVBFKTt2YXIgdj1nLmVkaXRvcix5PWcucmVuZGVyZXIsQz1nLnZhbGlkYXRvcjt2JiZzZChkLHYpLHkm''@;'; put 'put ''Jk1nKGQseSksQyYmZ08oZCxDKSxOUWUoZCxnKX1mdW5jdGlvbiBZZGUoZCl7cmV0dXJuKFlkZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBn''@;'; put 'put ''JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfXZhciBxQ2U9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIixVZGU9cUNlLmxlbmd0aDtmdW5jdGlvbiB6ZWUoZCl7''@;'; put 'put ''Zm9yKHZhciB2LGc9ZCsxLGg9IiI7Zz4wOyl2PShnLTEpJVVkZSxoPVN0cmluZy5mcm9tQ2hhckNvZGUoNjUrdikraCxnPXBhcnNlSW50KChnLXYpL1VkZSwxMCk7cmV0dXJuIGh9ZnVuY3Rpb24gWlFlKGQpe3ZhciBnPTA7aWYoZClmb3IodmFyIGg9MCx2PWQubGVuZ3RoLTE7aDxkLmxlbmd0''@;'; put 'put ''aDtoKz0xLHYtPTEpZys9TWF0aC5wb3coVWRlLHYpKihxQ2UuaW5kZXhPZihkW2hdKSsxKTtyZXR1cm4gZy0xfWZ1bmN0aW9uIHpRZSgpe3ZhciB2LHksZD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MTAwLGc9YXJndW1lbnRzLmxlbmd0''@;'; put 'put ''aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjQsaD1bXTtmb3Iodj0wO3Y8ZDt2Kyspe3ZhciBDPVtdO2Zvcih5PTA7eTxnO3krKylDLnB1c2goemVlKHkpKyh2KzEpKTtoLnB1c2goQyl9cmV0dXJuIGh9ZnVuY3Rpb24gR1FlKCl7dmFyIHYseSxkPWFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToxMDAsZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NCxoPVtdO2Zvcih2PTA7djxkO3YrKyl7dmFyIEM9e307Zm9yKHk9MDt5PGc7eSsrKUNbInByb3AiLmNv''@;'; put 'put ''bmNhdCh5KV09emVlKHkpKyh2KzEpO2gucHVzaChDKX1yZXR1cm4gaH1mdW5jdGlvbiBXUWUoZCxnKXtmb3IodmFyIHYsaD1bXSx5PTA7eTxkO3krKyl7dj1bXTtmb3IodmFyIEM9MDtDPGc7QysrKXYucHVzaCgiIik7aC5wdXNoKHYpfXJldHVybiBofWZ1bmN0aW9uIHFaKGQsZyl7dmFyIGg9''@;'; put 'put ''dm9pZCAwPT09Z3x8ZztyZXR1cm4gZnVuY3Rpb24oeSxDKXtyZXR1cm4gZnVuY3Rpb24gSShaKXtpZihaKXtpZihvMShaLGQpJiZ2b2lkIDAhPT1aW2RdKXJldHVybiBaW2RdO2lmKG8xKFosInR5cGUiKSYmWi50eXBlKXtpZigic3RyaW5nIiE9dHlwZW9mIFoudHlwZSl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoJ0NlbGwgInR5cGUiIG11c3QgYmUgYSBzdHJpbmcnKTt2YXIgdWU9WmVlKFoudHlwZSk7aWYobzEodWUsZCkpcmV0dXJuIHVlW2RdO2lmKGgpcmV0dXJufXJldHVybiBJKE9iamVjdC5nZXRQcm90b3R5cGVPZihaKSl9fSgibnVtYmVyIj09dHlwZW9mIHk/dGhpcy5nZXRDZWxsTWV0YSh5''@;'; put 'put ''LEMpOnkpfX1mdW5jdGlvbiBRZGUoZCl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjAsaD1kLHY9W107cmV0dXJuKCFBcnJheS5pc0FycmF5KGQpfHwhQXJyYXkuaXNBcnJheShkWzBdKSkmJihoPVtkXSksaC5mb3JFYWNoKGZ1''@;'; put 'put ''bmN0aW9uKHksQyl7QXJyYXkuaXNBcnJheSh5KT95LmZvckVhY2goZnVuY3Rpb24oSSxaKXt2LnB1c2goW0MrZyxaLEldKX0pOk9iamVjdC5rZXlzKHkpLmZvckVhY2goZnVuY3Rpb24oSSl7di5wdXNoKFtDK2csSSx5W0ldXSl9KX0pLHZ9ZnVuY3Rpb24gSmRlKGQpe3ZhciBnPTA7cmV0dXJu''@;'; put 'put ''IEFycmF5LmlzQXJyYXkoZCkmJihkWzBdJiZBcnJheS5pc0FycmF5KGRbMF0pP2c9ZFswXS5sZW5ndGg6ZFswXSYmeGwoZFswXSkmJihnPUpxKGRbMF0pKSksZ31mdW5jdGlvbiBla2UoZCl7cmV0dXJuISEoQXJyYXkuaXNBcnJheShkKSYmZC5sZW5ndGgmJmQuZXZlcnkoZnVuY3Rpb24oZyl7''@;'; put 'put ''cmV0dXJuIEFycmF5LmlzQXJyYXkoZyl9KSl9ZnVuY3Rpb24gdGtlKGQpe3JldHVybiEhKEFycmF5LmlzQXJyYXkoZCkmJmQubGVuZ3RoJiZkLmV2ZXJ5KGZ1bmN0aW9uKGcpe3JldHVybiJvYmplY3QiPT09WWRlKGcpJiYhQXJyYXkuaXNBcnJheShnKSYmbnVsbCE9PWd9KSl9ZnVuY3Rpb24g''@;'; put 'put ''WVFlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbmtlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVy''@;'; put 'put ''YWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIFFRZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVu''@;'; put 'put ''dHNbMV0/YXJndW1lbnRzWzFdOltdO1lRZSh0aGlzLGQpLHRoaXMuaG90PWcsdGhpcy5kYXRhPWgsdGhpcy5kYXRhVHlwZT0iYXJyYXkiLHRoaXMuY29sVG9Qcm9wPWZ1bmN0aW9uKCl7fSx0aGlzLnByb3BUb0NvbD1mdW5jdGlvbigpe319cmV0dXJuIGZ1bmN0aW9uIFVRZShkLGcsaCl7ZyYm''@;'; put 'put ''bmtlKGQucHJvdG90eXBlLGcpLGgmJm5rZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJtb2RpZnlSb3dEYXRhIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdjtyZXR1cm4gdGhpcy5ob3QuaGFzSG9vaygibW9kaWZ5Um93''@;'; put 'put ''RGF0YSIpJiYodj10aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5Um93RGF0YSIsaCkpLHZvaWQgMD09PXZ8fE51bWJlci5pc0ludGVnZXIodik/dGhpcy5kYXRhW2hdOnZ9fSx7a2V5OiJnZXREYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09''@;'; put 'put ''YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07cmV0dXJuIHRoaXMuZGF0YSYmMCE9PXRoaXMuZGF0YS5sZW5ndGg/dGhpcy5nZXRCeVJhbmdlKG51bGwsbnVsbCxoKTp0aGlzLmRhdGF9fSx7a2V5OiJzZXREYXRhIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmRhdGE9aH19LHtrZXk6ImdldEF0''@;'; put 'put ''Q29sdW1uIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLHk9W107cmV0dXJuIFVyKHRoaXMuZGF0YSxmdW5jdGlvbihDLEkpe3ZhciBaPXYuZ2V0QXRDZWxsKEksaCk7eS5wdXNoKFopfSkseX19LHtrZXk6ImdldEF0Um93Iix2YWx1ZTpmdW5jdGlvbihoLHYseSl7dmFyIEM9dGhpcyxJ''@;'; put 'put ''PWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM10sWj12b2lkIDA9PT12JiZ2b2lkIDA9PT15LHVlPW51bGwsX2U9bnVsbDtpZih1ZT10aGlzLm1vZGlmeVJvd0RhdGEoaCksQXJyYXkuaXNBcnJheSh1ZSkpX2U9W10sWj91ZS5mb3JFYWNoKGZ1''@;'; put 'put ''bmN0aW9uKEtlLHB0KXtfZVtwdF09Qy5nZXRBdFBoeXNpY2FsQ2VsbChoLHB0LHVlKX0pOmlhKHYseSxmdW5jdGlvbihLZSl7X2VbS2Utdl09Qy5nZXRBdFBoeXNpY2FsQ2VsbChoLEtlLHVlKX0pO2Vsc2UgaWYoeGwodWUpfHxVMih1ZSkpaWYoX2U9ST9bXTp7fSwhWnx8SSl7dmFyIEJlPTAs''@;'; put 'put ''TmU9dGhpcy5jb3VudEZpcnN0Um93S2V5cygpLTE7aWEoQmUsTmUsZnVuY3Rpb24oS2Upe3ZhciBwdD1DLmNvbFRvUHJvcChLZSk7aWYoS2U+PSh2fHxCZSkmJktlPD0oeXx8TmUpJiYhTnVtYmVyLmlzSW50ZWdlcihwdCkpe3ZhciBPdD1DLmdldEF0UGh5c2ljYWxDZWxsKGgscHQsdWUpO0k/''@;'; put 'put ''X2UucHVzaChPdCk6UXEoX2UscHQsT3QpfX0pfWVsc2UgR2wodWUsZnVuY3Rpb24oS2UscHQpe1FxKF9lLHB0LEMuZ2V0QXRQaHlzaWNhbENlbGwoaCxwdCx1ZSkpfSk7cmV0dXJuIF9lfX0se2tleToic2V0QXRDZWxsIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7aWYoIShoPj10aGlzLmNvdW50''@;'; put 'put ''Um93cygpfHx2Pj10aGlzLmNvdW50Rmlyc3RSb3dLZXlzKCkpKXtpZih0aGlzLmhvdC5oYXNIb29rKCJtb2RpZnlTb3VyY2VEYXRhIikpe3ZhciBDPUVTKHkpO3RoaXMuaG90LnJ1bkhvb2tzKCJtb2RpZnlTb3VyY2VEYXRhIixoLHRoaXMucHJvcFRvQ29sKHYpLEMsInNldCIpLEMuaXNUb3Vj''@;'; put 'put ''aGVkKCkmJih5PUMudmFsdWUpfU51bWJlci5pc0ludGVnZXIodik/dGhpcy5kYXRhW2hdW3ZdPXk6UXEodGhpcy5kYXRhW2hdLHYseSl9fX0se2tleToiZ2V0QXRQaHlzaWNhbENlbGwiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgQz1udWxsO2lmKHkmJihDPSJzdHJpbmciPT10eXBlb2Yg''@;'; put 'put ''dj92YmUoeSx2KToiZnVuY3Rpb24iPT10eXBlb2Ygdj92KHkpOnlbdl0pLHRoaXMuaG90Lmhhc0hvb2soIm1vZGlmeVNvdXJjZURhdGEiKSl7dmFyIEk9RVMoQyk7dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeVNvdXJjZURhdGEiLGgsdGhpcy5jb2xUb1Byb3AodiksSSwiZ2V0IiksSS5pc1Rv''@;'; put 'put ''dWNoZWQoKSYmKEM9SS52YWx1ZSl9cmV0dXJuIEN9fSx7a2V5OiJnZXRBdENlbGwiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9dGhpcy5tb2RpZnlSb3dEYXRhKGgpO3JldHVybiB0aGlzLmdldEF0UGh5c2ljYWxDZWxsKGgsdGhpcy5jb2xUb1Byb3AodikseSl9fSx7a2V5OiJnZXRCeVJh''@;'; put 'put ''bmdlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMsdj1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbCx5PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLEM9YXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxJPSExLFo9bnVsbCx1ZT1udWxsLF9lPW51bGwsQmU9bnVsbDtudWxsPT09dnx8bnVsbD09PXk/KEk9ITAsWj0wLF9lPXRoaXMuY291bnRSb3dzKCktMSk6KFo9TWF0aC5taW4odi5yb3cseS5yb3cpLHVl''@;'; put 'put ''PU1hdGgubWluKHYuY29sLHkuY29sKSxfZT1NYXRoLm1heCh2LnJvdyx5LnJvdyksQmU9TWF0aC5tYXgodi5jb2wseS5jb2wpKTt2YXIgTmU9W107cmV0dXJuIGlhKFosX2UsZnVuY3Rpb24oS2Upe05lLnB1c2goST9oLmdldEF0Um93KEtlLHZvaWQgMCx2b2lkIDAsQyk6aC5nZXRBdFJvdyhL''@;'; put 'put ''ZSx1ZSxCZSxDKSl9KSxOZX19LHtrZXk6ImNvdW50Um93cyIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLmhvdC5oYXNIb29rKCJtb2RpZnlTb3VyY2VMZW5ndGgiKSl7dmFyIGg9dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeVNvdXJjZUxlbmd0aCIpO2lmKE51bWJlci5pc0ludGVnZXIoaCkp''@;'; put 'put ''cmV0dXJuIGh9cmV0dXJuIHRoaXMuZGF0YS5sZW5ndGh9fSx7a2V5OiJjb3VudEZpcnN0Um93S2V5cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gSmRlKHRoaXMuZGF0YSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGF0YT1udWxsLHRoaXMuaG90PW51bGx9fV0p''@;'; put 'put ''LGR9KCk7Y29uc3QgSlFlPVFRZTtMKDIwMjczKSxMKDU0NzQwKTt2YXIgcmtlPXtfbG9jYWxIb29rczpPYmplY3QuY3JlYXRlKG51bGwpLGFkZExvY2FsSG9vazpmdW5jdGlvbihnLGgpe3JldHVybiB0aGlzLl9sb2NhbEhvb2tzW2ddfHwodGhpcy5fbG9jYWxIb29rc1tnXT1bXSksdGhpcy5f''@;'; put 'put ''bG9jYWxIb29rc1tnXS5wdXNoKGgpLHRoaXN9LHJ1bkxvY2FsSG9va3M6ZnVuY3Rpb24oZyxoLHYseSxDLEksWil7aWYodGhpcy5fbG9jYWxIb29rc1tnXSlmb3IodmFyIHVlPXRoaXMuX2xvY2FsSG9va3NbZ10ubGVuZ3RoLF9lPTA7X2U8dWU7X2UrKylpZWUodGhpcy5fbG9jYWxIb29rc1tn''@;'; put 'put ''XVtfZV0sdGhpcyxoLHYseSxDLEksWil9LGNsZWFyTG9jYWxIb29rczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sb2NhbEhvb2tzPXt9LHRoaXN9fTtTZyhya2UsIk1JWElOX05BTUUiLCJsb2NhbEhvb2tzIix7d3JpdGFibGU6ITEsZW51bWVyYWJsZTohMX0pO2NvbnN0IHVkPXJrZTtmdW5j''@;'; put 'put ''dGlvbiBLUWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpa2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5l''@;'; put 'put ''bnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgUFM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKCl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1''@;'; put 'put ''bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7S1FlKHRoaXMsZCksdGhpcy5pbmRleGVkVmFsdWVzPVtdLHRoaXMuaW5pdFZhbHVlT3JGbj1nfXJldHVybiBmdW5jdGlvbiAkUWUoZCxnLGgpe2cmJmlrZShkLnByb3RvdHlwZSxnKSxoJiZpa2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''ZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiZ2V0VmFsdWVzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmluZGV4ZWRWYWx1ZXN9fSx7a2V5OiJnZXRWYWx1ZUF0SW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMuaW5kZXhlZFZhbHVlcztpZiho''@;'; put 'put ''PHYubGVuZ3RoKXJldHVybiB2W2hdfX0se2tleToic2V0VmFsdWVzIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmluZGV4ZWRWYWx1ZXM9aC5zbGljZSgpLHRoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIil9fSx7a2V5OiJzZXRWYWx1ZUF0SW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0''@;'; put 'put ''dXJuIGg8dGhpcy5pbmRleGVkVmFsdWVzLmxlbmd0aCYmKHRoaXMuaW5kZXhlZFZhbHVlc1toXT12LHRoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIiksITApfX0se2tleToiY2xlYXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXREZWZhdWx0VmFsdWVzKCl9fSx7a2V5OiJnZXRMZW5ndGgi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VmFsdWVzKCkubGVuZ3RofX0se2tleToic2V0RGVmYXVsdFZhbHVlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLHY9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMu''@;'; put 'put ''aW5kZXhlZFZhbHVlcy5sZW5ndGg7dGhpcy5pbmRleGVkVmFsdWVzLmxlbmd0aD0wLFUyKHRoaXMuaW5pdFZhbHVlT3JGbik/aWEodi0xLGZ1bmN0aW9uKHkpe3JldHVybiBoLmluZGV4ZWRWYWx1ZXMucHVzaChoLmluaXRWYWx1ZU9yRm4oeSkpfSk6aWEodi0xLGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IGguaW5kZXhlZFZhbHVlcy5wdXNoKGguaW5pdFZhbHVlT3JGbil9KSx0aGlzLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIpfX0se2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuc2V0RGVmYXVsdFZhbHVlcyhoKSx0aGlzLnJ1bkxvY2FsSG9va3MoImluaXQiKSx0aGlz''@;'; put 'put ''fX0se2tleToiaW5zZXJ0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIil9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5j''@;'; put 'put ''bGVhckxvY2FsSG9va3MoKSx0aGlzLmluZGV4ZWRWYWx1ZXM9bnVsbCx0aGlzLmluaXRWYWx1ZU9yRm49bnVsbH19XSksZH0oKTtmdW5jdGlvbiBYZGUoZCl7cmV0dXJuIGZ1bmN0aW9uIG5KZShkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBLZGUoZCl9KGQpfHxmdW5jdGlvbiB0SmUo''@;'; put 'put ''ZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQpfShkKXx8ZnVuY3Rpb24gZUplKGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBLZGUo''@;'; put 'put ''ZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVu''@;'; put 'put ''dHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIEtkZShkLGcpfX0oZCl8fGZ1bmN0aW9uIHFRZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNl''@;'; put 'put ''LlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIEtkZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFy''@;'; put 'put ''cmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uICRkZShkLGcsaCx2KXt2YXIgeT1oLmxlbmd0aD9oWzBdOnZvaWQgMDtyZXR1cm5bXS5jb25jYXQoWGRlKGQuc2xpY2UoMCx5KSksWGRlKGgubWFwKGZ1bmN0aW9uKEMsSSl7cmV0dXJuIFUyKHYpP3YoQyxJKTp2fSkp''@;'; put 'put ''LFhkZSh2b2lkIDA9PT15P1tdOmQuc2xpY2UoeSkpKX1mdW5jdGlvbiBxZGUoZCxnKXtyZXR1cm4gZzQoZCxmdW5jdGlvbihoLHYpe3JldHVybiExPT09Zy5pbmNsdWRlcyh2KX0pfWZ1bmN0aW9uIGU0ZShkKXtyZXR1cm4oZTRlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wi''@;'; put 'put ''PT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBn''@;'; put 'put ''fSkoZCl9ZnVuY3Rpb24gckplKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gb2tlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVt''@;'; put 'put ''ZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gZXooKXtyZXR1cm4gZXo9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0''@;'; put 'put ''LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PW9KZShnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sZXou''@;'; put 'put ''YXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIG9KZShkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9RlMoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gdDRlKGQsZyl7cmV0dXJuKHQ0ZT1PYmplY3Quc2V0UHJvdG90eXBl''@;'; put 'put ''T2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIHNKZShkLGcpe2lmKGcmJigib2JqZWN0Ij09PWU0ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gdUplKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRp''@;'; put 'put ''YWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gRlMoZCl7cmV0dXJuKEZTPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0''@;'; put 'put ''LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9QjIoUFMsdWQpO3ZhciBEdz1mdW5jdGlvbihkKXshZnVuY3Rpb24gYUplKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBv''@;'; put 'put ''ciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJnQ0''@;'; put 'put ''ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIGxKZShkKXt2YXIgZz1mdW5jdGlvbiBjSmUoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJv''@;'; put 'put ''eHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1GUyhkKTtpZihnKXt2YXIg''@;'; put 'put ''Qz1GUyh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gc0plKHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7cmV0dXJuIHJKZSh0aGlzLGgpLGcuYXBwbHkodGhpcyxhcmd1bWVu''@;'; put 'put ''dHMpfXJldHVybiBmdW5jdGlvbiBpSmUoZCxnLGgpe2cmJm9rZShkLnByb3RvdHlwZSxnKSxoJiZva2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaW5zZXJ0Iix2YWx1ZTpmdW5jdGlvbih5LEMpe3RoaXMuaW5kZXhl''@;'; put 'put ''ZFZhbHVlcz0kZGUodGhpcy5pbmRleGVkVmFsdWVzLDAsQyx0aGlzLmluaXRWYWx1ZU9yRm4pLGV6KEZTKGgucHJvdG90eXBlKSwiaW5zZXJ0Iix0aGlzKS5jYWxsKHRoaXMseSxDKX19LHtrZXk6InJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5pbmRleGVkVmFsdWVzPXFkZSh0aGlz''@;'; put 'put ''LmluZGV4ZWRWYWx1ZXMseSksZXooRlMoaC5wcm90b3R5cGUpLCJyZW1vdmUiLHRoaXMpLmNhbGwodGhpcyx5KX19XSksaH0oUFMpO2Z1bmN0aW9uIG40ZShkKXtyZXR1cm4objRlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1''@;'; put 'put ''bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gZkplKGQsZyl7aWYo''@;'; put 'put ''IShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gYWtlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5j''@;'; put 'put ''b25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gcjRlKGQsZyl7cmV0dXJuKHI0ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlv''@;'; put 'put ''bih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIGdKZShkLGcpe2lmKGcmJigib2JqZWN0Ij09PW40ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3Rv''@;'; put 'put ''cnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gbUplKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTty''@;'; put 'put ''ZXR1cm4gZH0oZCl9ZnVuY3Rpb24gR2VlKGQpe3JldHVybihHZWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgV2VlPWZ1bmN0''@;'; put 'put ''aW9uKGQpeyFmdW5jdGlvbiBkSmUoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcu''@;'; put 'put ''cHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmcjRlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gcEplKGQpe3ZhciBnPWZ1bmN0''@;'; put 'put ''aW9uIHZKZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVl''@;'; put 'put ''T2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PUdlZShkKTtpZihnKXt2YXIgQz1HZWUodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2''@;'; put 'put ''LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGdKZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCgpe3ZhciB2PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07cmV0dXJuIGZKZSh0aGlzLGgpLGcu''@;'; put 'put ''Y2FsbCh0aGlzLHYpfXJldHVybiBmdW5jdGlvbiBoSmUoZCxnLGgpe2cmJmFrZShkLnByb3RvdHlwZSxnKSxoJiZha2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiZ2V0SGlkZGVuSW5kZXhlcyIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gU3UodGhpcy5nZXRWYWx1ZXMoKSxmdW5jdGlvbih5LEMsSSl7cmV0dXJuIEMmJnkucHVzaChJKSx5fSxbXSl9fV0pLGh9KER3KTtmdW5jdGlvbiBpNGUoZCl7cmV0dXJuIGZ1bmN0aW9uIGJKZShkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBvNGUoZCl9KGQpfHxm''@;'; put 'put ''dW5jdGlvbiB3SmUoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQpfShkKXx8ZnVuY3Rpb24geUplKGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBk''@;'; put 'put ''KXJldHVybiBvNGUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQp''@;'; put 'put ''O2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIG80ZShkLGcpfX0oZCl8fGZ1bmN0aW9uIEFKZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJh''@;'; put 'put ''YmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIG80ZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIg''@;'; put 'put ''aD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIGE0ZShkLGcsaCl7cmV0dXJuW10uY29uY2F0KGk0ZShkLnNsaWNlKDAsZykpLGk0ZShoKSxpNGUoZC5zbGljZShnKSkpfWZ1bmN0aW9uIHR6KGQsZyl7cmV0dXJuIGc0KGQsZnVuY3Rpb24oaCl7''@;'; put 'put ''cmV0dXJuITE9PT1nLmluY2x1ZGVzKGgpfSl9ZnVuY3Rpb24gbDRlKGQsZyl7cmV0dXJuIE9sKGQsZnVuY3Rpb24oaCl7cmV0dXJuIGgtZy5maWx0ZXIoZnVuY3Rpb24odil7cmV0dXJuIHY8aH0pLmxlbmd0aH0pfWZ1bmN0aW9uIHM0ZShkLGcpe3ZhciBoPWdbMF0sdj1nLmxlbmd0aDtyZXR1''@;'; put 'put ''cm4gT2woZCxmdW5jdGlvbih5KXtyZXR1cm4geT49aD95K3Y6eX0pfWZ1bmN0aW9uIHU0ZShkKXtyZXR1cm4odTRlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24o''@;'; put 'put ''Zyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gYzRlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9y''@;'; put 'put ''KHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gRUplKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbGtlKGQsZyl7''@;'; put 'put ''Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24geHYoKXty''@;'; put 'put ''ZXR1cm4geHY9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PVRKZShnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5n''@;'; put 'put ''ZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0seHYuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFRKZShkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9UzgoZCkpOyk7cmV0dXJuIGR9ZnVu''@;'; put 'put ''Y3Rpb24gZjRlKGQsZyl7cmV0dXJuKGY0ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIExKZShkLGcpe2lmKGcmJigib2JqZWN0Ij09PXU0ZShnKXx8''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gc2tlKGQpfWZ1bmN0aW9uIHNrZShkKXtpZih2b2lkIDA9''@;'; put 'put ''PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gUzgoZCl7cmV0dXJuKFM4PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBl''@;'; put 'put ''T2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9ZnVuY3Rpb24gUkplKGQsZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFi''@;'; put 'put ''bGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgsZH12YXIgWWVlPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBJSmUoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEg''@;'; put 'put ''ZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmZjRlKGQs''@;'; put 'put ''Zyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gREplKGQpe3ZhciBnPWZ1bmN0aW9uIE9KZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSly''@;'; put 'put ''ZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVM4KGQpO2lmKGcpe3ZhciBDPVM4''@;'; put 'put ''KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBMSmUodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXt2YXIgdjtFSmUodGhpcyxoKTtmb3IodmFyIHk9YXJndW1lbnRzLmxlbmd0''@;'; put 'put ''aCxDPW5ldyBBcnJheSh5KSxJPTA7STx5O0krKylDW0ldPWFyZ3VtZW50c1tJXTtyZXR1cm4gUkplKHNrZSh2PWcuY2FsbC5hcHBseShnLFt0aGlzXS5jb25jYXQoQykpKSwib3JkZXJPZkluZGV4ZXMiLFtdKSx2fXJldHVybiBmdW5jdGlvbiB4SmUoZCxnLGgpe2cmJmxrZShkLnByb3RvdHlw''@;'; put 'put ''ZSxnKSxoJiZsa2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiZ2V0VmFsdWVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7cmV0dXJuIHRoaXMub3JkZXJPZkluZGV4ZXMubWFwKGZ1bmN0aW9uKEMpe3JldHVy''@;'; put 'put ''biB5LmluZGV4ZWRWYWx1ZXNbQ119KX19LHtrZXk6InNldFZhbHVlcyIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5vcmRlck9mSW5kZXhlcz1mdW5jdGlvbiBfSmUoZCl7cmV0dXJuIGZ1bmN0aW9uIE1KZShkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBjNGUoZCl9KGQpfHxmdW5jdGlv''@;'; put 'put ''biBTSmUoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQpfShkKXx8ZnVuY3Rpb24ga0plKGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVy''@;'; put 'put ''biBjNGUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJB''@;'; put 'put ''cmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIGM0ZShkLGcpfX0oZCl8fGZ1bmN0aW9uIENKZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGlu''@;'; put 'put ''c3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShBcnJheSh5Lmxlbmd0aCkua2V5cygpKSx4dihTOChoLnByb3RvdHlwZSksInNldFZhbHVlcyIsdGhpcykuY2FsbCh0''@;'; put 'put ''aGlzLHkpfX0se2tleToic2V0VmFsdWVBdEluZGV4Iix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp0aGlzLm9yZGVyT2ZJbmRleGVzLmxlbmd0aDtyZXR1cm4geTx0aGlzLmluZGV4ZWRWYWx1''@;'; put 'put ''ZXMubGVuZ3RoJiYodGhpcy5pbmRleGVkVmFsdWVzW3ldPUMsITE9PT10aGlzLm9yZGVyT2ZJbmRleGVzLmluY2x1ZGVzKHkpJiZ0aGlzLm9yZGVyT2ZJbmRleGVzLnNwbGljZShJLDAseSksdGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiKSwhMCl9fSx7a2V5OiJjbGVhclZhbHVlIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbih5KXt0aGlzLm9yZGVyT2ZJbmRleGVzPXR6KHRoaXMub3JkZXJPZkluZGV4ZXMsW3ldKSxVMih0aGlzLmluaXRWYWx1ZU9yRm4pP3h2KFM4KGgucHJvdG90eXBlKSwic2V0VmFsdWVBdEluZGV4Iix0aGlzKS5jYWxsKHRoaXMseSx0aGlzLmluaXRWYWx1ZU9yRm4oeSkpOnh2''@;'; put 'put ''KFM4KGgucHJvdG90eXBlKSwic2V0VmFsdWVBdEluZGV4Iix0aGlzKS5jYWxsKHRoaXMseSx0aGlzLmluaXRWYWx1ZU9yRm4pfX0se2tleToiZ2V0TGVuZ3RoIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9yZGVyT2ZJbmRleGVzLmxlbmd0aH19LHtrZXk6InNldERlZmF1bHRWYWx1''@;'; put 'put ''ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMuaW5kZXhlZFZhbHVlcy5sZW5ndGg7dGhpcy5vcmRlck9mSW5kZXhlcy5sZW5ndGg9MCx4dihTOChoLnByb3RvdHlwZSksInNldERlZmF1''@;'; put 'put ''bHRWYWx1ZXMiLHRoaXMpLmNhbGwodGhpcyx5KX19LHtrZXk6Imluc2VydCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt0aGlzLmluZGV4ZWRWYWx1ZXM9JGRlKHRoaXMuaW5kZXhlZFZhbHVlcywwLEMsdGhpcy5pbml0VmFsdWVPckZuKSx0aGlzLm9yZGVyT2ZJbmRleGVzPXM0ZSh0aGlzLm9yZGVy''@;'; put 'put ''T2ZJbmRleGVzLEMpLHh2KFM4KGgucHJvdG90eXBlKSwiaW5zZXJ0Iix0aGlzKS5jYWxsKHRoaXMseSxDKX19LHtrZXk6InJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5pbmRleGVkVmFsdWVzPXFkZSh0aGlzLmluZGV4ZWRWYWx1ZXMseSksdGhpcy5vcmRlck9mSW5kZXhlcz10eih0''@;'; put 'put ''aGlzLm9yZGVyT2ZJbmRleGVzLHkpLHRoaXMub3JkZXJPZkluZGV4ZXM9bDRlKHRoaXMub3JkZXJPZkluZGV4ZXMseSkseHYoUzgoaC5wcm90b3R5cGUpLCJyZW1vdmUiLHRoaXMpLmNhbGwodGhpcyx5KX19LHtrZXk6ImdldEVudHJpZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczty''@;'; put 'put ''ZXR1cm4gdGhpcy5vcmRlck9mSW5kZXhlcy5tYXAoZnVuY3Rpb24oQyl7cmV0dXJuW0MseS5nZXRWYWx1ZUF0SW5kZXgoQyldfSl9fV0pLGh9KFBTKTtmdW5jdGlvbiBoNGUoZCl7cmV0dXJuKGg0ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5p''@;'; put 'put ''dGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIEJK''@;'; put 'put ''ZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHVrZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFi''@;'; put 'put ''bGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGQ0ZShkLGcpe3JldHVybihkNGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5k''@;'; put 'put ''KCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBOSmUoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1oNGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQg''@;'; put 'put ''Y29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIFZKZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4g''@;'; put 'put ''Y2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIFVlZShkKXtyZXR1cm4oVWVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFy''@;'; put 'put ''IG56PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBGSmUoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3Jl''@;'; put 'put ''YXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmZDRlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gSEplKGQpe3Zh''@;'; put 'put ''ciBnPWZ1bmN0aW9uIGpKZSgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90''@;'; put 'put ''eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVVlZShkKTtpZihnKXt2YXIgQz1VZWUodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNv''@;'; put 'put ''bnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIE5KZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCgpe3ZhciB2PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07cmV0dXJuIEJKZSh0''@;'; put 'put ''aGlzLGgpLGcuY2FsbCh0aGlzLHYpfXJldHVybiBmdW5jdGlvbiBQSmUoZCxnLGgpe2cmJnVrZShkLnByb3RvdHlwZSxnKSxoJiZ1a2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiZ2V0VHJpbW1lZEluZGV4ZXMiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFN1KHRoaXMuZ2V0VmFsdWVzKCksZnVuY3Rpb24oeSxDLEkpe3JldHVybiBDJiZ5LnB1c2goSSkseX0sW10pfX1dKSxofShEdyksY2tlPW5ldyBNYXAoW1siaGlkaW5nIixXZWVdLFsiaW5kZXgiLFBTXSxbImxpbmtlZFBoeXNpY2FsSW5kZXhUb1ZhbHVl''@;'; put 'put ''IixZZWVdLFsicGh5c2ljYWxJbmRleFRvVmFsdWUiLER3XSxbInRyaW1taW5nIixuel1dKTtmdW5jdGlvbiBwNGUoZCl7cmV0dXJuKHA0ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9m''@;'; put 'put ''IGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIGZrZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsr''@;'; put 'put ''KXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIHJ6KCl7cmV0dXJuIHJ6PSJ1bmRlZmluZWQiIT10eXBl''@;'; put 'put ''b2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1XSmUoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwz''@;'; put 'put ''P2c6dik6Qy52YWx1ZX19LHJ6LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBXSmUoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPUhTKGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIGc0ZShkLGcpe3JldHVybihnNGU9''@;'; put 'put ''T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBRSmUoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1wNGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1''@;'; put 'put ''cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIEpKZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhp''@;'; put 'put ''cyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIEhTKGQpe3JldHVybihIUz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4g''@;'; put 'put ''aC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBoa2U9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIFlKZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVy''@;'; put 'put ''IGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6''@;'; put 'put ''ITF9KSxnJiZnNGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBVSmUoZCl7dmFyIGc9ZnVuY3Rpb24gWEplKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9SFMoZCk7''@;'; put 'put ''aWYoZyl7dmFyIEM9SFModGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIFFKZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCgpe3JldHVybiBmdW5jdGlvbiB6SmUoZCxnKXtpZigh''@;'; put 'put ''KGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSxnLmNhbGwodGhpcyxmdW5jdGlvbih2KXtyZXR1cm4gdn0pfXJldHVybiBmdW5jdGlvbiBHSmUoZCxnLGgpe2cmJmZrZShkLnByb3RvdHlwZSxn''@;'; put 'put ''KSxoJiZma2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaW5zZXJ0Iix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXM0ZSh0aGlzLmluZGV4ZWRWYWx1ZXMsQyk7dGhpcy5pbmRleGVkVmFsdWVzPWE0ZShJLHksQyks''@;'; put 'put ''cnooSFMoaC5wcm90b3R5cGUpLCJpbnNlcnQiLHRoaXMpLmNhbGwodGhpcyx5LEMpfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10eih0aGlzLmluZGV4ZWRWYWx1ZXMseSk7dGhpcy5pbmRleGVkVmFsdWVzPWw0ZShDLHkpLHJ6KEhTKGgucHJvdG90eXBlKSwicmVt''@;'; put 'put ''b3ZlIix0aGlzKS5jYWxsKHRoaXMseSl9fV0pLGh9KFBTKTtmdW5jdGlvbiBka2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9''@;'; put 'put ''ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgbTRlPTAsdjRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZCgpeyhmdW5jdGlvbiBLSmUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVu''@;'; put 'put ''Y3Rpb24iKX0pKHRoaXMsZCksdGhpcy5jb2xsZWN0aW9uPW5ldyBNYXB9cmV0dXJuIGZ1bmN0aW9uICRKZShkLGcsaCl7ZyYmZGtlKGQucHJvdG90eXBlLGcpLGgmJmRrZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJy''@;'; put 'put ''ZWdpc3RlciIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT10aGlzOyExPT09dGhpcy5jb2xsZWN0aW9uLmhhcyhoKSYmKHRoaXMuY29sbGVjdGlvbi5zZXQoaCx2KSx2LmFkZExvY2FsSG9vaygiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiB5LnJ1bkxvY2FsSG9va3MoImNoYW5nZSIsdil9''@;'; put 'put ''KSxtNGUrPTEpfX0se2tleToidW5yZWdpc3RlciIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy5jb2xsZWN0aW9uLmdldChoKTtUbyh2KSYmKHYuZGVzdHJveSgpLHRoaXMuY29sbGVjdGlvbi5kZWxldGUoaCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiLHYpLG00ZS09MSl9fSx7''@;'; put 'put ''a2V5OiJ1bnJlZ2lzdGVyQWxsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXM7dGhpcy5jb2xsZWN0aW9uLmZvckVhY2goZnVuY3Rpb24odix5KXtyZXR1cm4gaC51bnJlZ2lzdGVyKHkpfSksdGhpcy5jb2xsZWN0aW9uLmNsZWFyKCl9fSx7a2V5OiJnZXQiLHZhbHVlOmZ1bmN0aW9uKGgp''@;'; put 'put ''e3JldHVybiBhMShoKT9BcnJheS5mcm9tKHRoaXMuY29sbGVjdGlvbi52YWx1ZXMoKSk6dGhpcy5jb2xsZWN0aW9uLmdldChoKX19LHtrZXk6ImdldExlbmd0aCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb2xsZWN0aW9uLnNpemV9fSx7a2V5OiJyZW1vdmVGcm9tRXZlcnkiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGgpe3RoaXMuY29sbGVjdGlvbi5mb3JFYWNoKGZ1bmN0aW9uKHYpe3YucmVtb3ZlKGgpfSl9fSx7a2V5OiJpbnNlcnRUb0V2ZXJ5Iix2YWx1ZTpmdW5jdGlvbihoLHYpe3RoaXMuY29sbGVjdGlvbi5mb3JFYWNoKGZ1bmN0aW9uKHkpe3kuaW5zZXJ0KGgsdil9KX19LHtr''@;'; put 'put ''ZXk6ImluaXRFdmVyeSIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5jb2xsZWN0aW9uLmZvckVhY2goZnVuY3Rpb24odil7di5pbml0KGgpfSl9fV0pLGR9KCk7ZnVuY3Rpb24gQTRlKGQpe3JldHVybihBNGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1i''@;'; put 'put ''b2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlv''@;'; put 'put ''biBwa2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5j''@;'; put 'put ''dGlvbiB5NGUoZCxnKXtyZXR1cm4oeTRlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gaVhlKGQsZyl7aWYoZyYmKCJvYmplY3QiPT09QTRlKGcpfHwi''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBvWGUoZCl7aWYodm9pZCAwPT09ZCl0aHJv''@;'; put 'put ''dyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBRZWUoZCl7cmV0dXJuKFFlZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9m''@;'; put 'put ''LmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfUIyKHY0ZSx1ZCk7dmFyIGdrZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gblhlKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJnk0ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIHJYZShkKXt2YXIgZz1mdW5jdGlvbiBhWGUoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5j''@;'; put 'put ''b25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4h''@;'; put 'put ''MX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1RZWUoZCk7aWYoZyl7dmFyIEM9UWVlKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBpWGUodGhpcyx5KX19KGgpO2Z1''@;'; put 'put ''bmN0aW9uIGgodix5KXt2YXIgQztyZXR1cm4gZnVuY3Rpb24gZVhlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKEM9Zy5jYWxsKHRoaXMpKS5tZXJnZWRWYWx1ZXNDYWNo''@;'; put 'put ''ZT1bXSxDLmFnZ3JlZ2F0aW9uRnVuY3Rpb249dixDLmZhbGxiYWNrVmFsdWU9eSxDfXJldHVybiBmdW5jdGlvbiB0WGUoZCxnLGgpe2cmJnBrZShkLnByb3RvdHlwZSxnKSxoJiZwa2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxb''@;'; put 'put ''e2tleToiZ2V0TWVyZ2VkVmFsdWVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF07aWYoITA9PT15KXJldHVybiB0aGlzLm1lcmdlZFZhbHVlc0NhY2hlO2lmKDA9PT10aGlzLmdldExlbmd0''@;'; put 'put ''aCgpKXJldHVybltdO2Zvcih2YXIgQz1PbCh0aGlzLmdldCgpLGZ1bmN0aW9uKE5lKXtyZXR1cm4gTmUuZ2V0VmFsdWVzKCl9KSxJPVtdLFo9VG8oQ1swXSkmJkNbMF0ubGVuZ3RofHwwLHVlPTA7dWU8Wjt1ZSs9MSl7Zm9yKHZhciBfZT1bXSxCZT0wO0JlPHRoaXMuZ2V0TGVuZ3RoKCk7QmUr''@;'; put 'put ''PTEpX2UucHVzaChDW0JlXVt1ZV0pO0kucHVzaChfZSl9cmV0dXJuIE9sKEksdGhpcy5hZ2dyZWdhdGlvbkZ1bmN0aW9uKX19LHtrZXk6ImdldE1lcmdlZFZhbHVlQXRJbmRleCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST10aGlzLmdldE1lcmdlZFZhbHVlcyhDKVt5XTtyZXR1cm4gVG8o''@;'; put 'put ''SSk/STp0aGlzLmZhbGxiYWNrVmFsdWV9fSx7a2V5OiJ1cGRhdGVDYWNoZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1lcmdlZFZhbHVlc0NhY2hlPXRoaXMuZ2V0TWVyZ2VkVmFsdWVzKCExKX19XSksaH0odjRlKTtmdW5jdGlvbiBta2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2gr''@;'; put 'put ''Kyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiB2a2UoZCxnLGgpe2lmKCFnLmhhcyhkKSl0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIitoKyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZy5nZXQoZCl9dmFyIHc0ZT1uZXcgV2Vha01hcCxBa2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKCl7KGZ1bmN0aW9uIGxYZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9m''@;'; put 'put ''IGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSxmdW5jdGlvbiB1WGUoZCxnLGgpeyhmdW5jdGlvbiBjWGUoZCxnKXtpZihnLmhhcyhkKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUg''@;'; put 'put ''c2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkoZCxnKSxnLnNldChkLGgpfSh0aGlzLHc0ZSx7d3JpdGFibGU6ITAsdmFsdWU6W119KX1yZXR1cm4gZnVuY3Rpb24gc1hlKGQsZyxoKXtnJiZta2UoZC5wcm90b3R5cGUsZyksaCYmbWtlKGQsaCksT2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InN1YnNjcmliZSIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuYWRkTG9jYWxIb29rKCJjaGFuZ2UiLGgpLHRoaXMuX3dyaXRlKGZ1bmN0aW9uIGRYZShkLGcpe3JldHVybiBmdW5jdGlvbiBw''@;'; put 'put ''WGUoZCxnKXtyZXR1cm4gZy5nZXQ/Zy5nZXQuY2FsbChkKTpnLnZhbHVlfShkLHZrZShkLGcsImdldCIpKX0odGhpcyx3NGUpKSx0aGlzfX0se2tleToidW5zdWJzY3JpYmUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucnVuTG9jYWxIb29rcygidW5zdWJzY3JpYmUiKSx0aGlzLmNs''@;'; put 'put ''ZWFyTG9jYWxIb29rcygpLHRoaXN9fSx7a2V5OiJfd3JpdGUiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBoLmxlbmd0aD4wJiZ0aGlzLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIsaCksdGhpc319LHtrZXk6Il93cml0ZUluaXRpYWxDaGFuZ2VzIix2YWx1ZTpmdW5jdGlvbihoKXshZnVuY3Rp''@;'; put 'put ''b24gZlhlKGQsZyxoKXtyZXR1cm4gZnVuY3Rpb24gaFhlKGQsZyxoKXtpZihnLnNldClnLnNldC5jYWxsKGQsaCk7ZWxzZXtpZighZy53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7Zy52YWx1ZT1ofX0oZCx2''@;'; put 'put ''a2UoZCxnLCJzZXQiKSxoKSxofSh0aGlzLHc0ZSxoKX19XSksZH0oKTtmdW5jdGlvbiB5a2UoZCxnKXtmb3IodmFyIGg9W10sdj0wLHk9MDt2PGQubGVuZ3RoJiZ5PGcubGVuZ3RoO3YrKyx5KyspZFt2XSE9PWdbeV0mJmgucHVzaCh7b3A6InJlcGxhY2UiLGluZGV4Onksb2xkVmFsdWU6ZFt2''@;'; put 'put ''XSxuZXdWYWx1ZTpnW3ldfSk7Zm9yKDt2PGcubGVuZ3RoO3YrKyloLnB1c2goe29wOiJpbnNlcnQiLGluZGV4OnYsb2xkVmFsdWU6dm9pZCAwLG5ld1ZhbHVlOmdbdl19KTtmb3IoO3k8ZC5sZW5ndGg7eSsrKWgucHVzaCh7b3A6InJlbW92ZSIsaW5kZXg6eSxvbGRWYWx1ZTpkW3ldLG5ld1Zh''@;'; put 'put ''bHVlOnZvaWQgMH0pO3JldHVybiBofWZ1bmN0aW9uIGdYZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHdrZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2''@;'; put 'put ''YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGl6KGQsZyxoKXsoZnVuY3Rpb24gdlhlKGQsZyl7aWYoZy5o''@;'; put 'put ''YXMoZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKGQsZyksZy5zZXQoZCxoKX1mdW5jdGlvbiBCcChkLGcpe3JldHVybiBmdW5jdGlvbiBBWGUoZCxnKXtyZXR1cm4gZy5nZXQ/''@;'; put 'put ''Zy5nZXQuY2FsbChkKTpnLnZhbHVlfShkLGJrZShkLGcsImdldCIpKX1mdW5jdGlvbiBKZWUoZCxnLGgpe3JldHVybiBmdW5jdGlvbiB5WGUoZCxnLGgpe2lmKGcuc2V0KWcuc2V0LmNhbGwoZCxoKTtlbHNle2lmKCFnLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0''@;'; put 'put ''byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtnLnZhbHVlPWh9fShkLGJrZShkLGcsInNldCIpLGgpLGh9ZnVuY3Rpb24gYmtlKGQsZyxoKXtpZighZy5oYXMoZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIraCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3Rh''@;'; put 'put ''bmNlIik7cmV0dXJuIGcuZ2V0KGQpfUIyKEFrZSx1ZCk7dmFyIF9rZSxYZWU9bmV3IFdlYWtNYXAsb3o9bmV3IFdlYWtNYXAsS2VlPW5ldyBXZWFrTWFwLCRlZT1uZXcgV2Vha01hcCxxZWU9bmV3IFdlYWtNYXAsd1hlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZCgpe3ZhciBnPWFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxoPWcuaW5pdGlhbEluZGV4VmFsdWU7Z1hlKHRoaXMsZCksaXoodGhpcyxYZWUse3dyaXRhYmxlOiEwLHZhbHVlOm5ldyBTZXR9KSxpeih0aGlzLG96LHt3cml0YWJsZTohMCx2YWx1ZTpbXX0pLGl6KHRoaXMs''@;'; put 'put ''S2VlLHt3cml0YWJsZTohMCx2YWx1ZTpbXX0pLGl6KHRoaXMsJGVlLHt3cml0YWJsZTohMCx2YWx1ZTohMX0pLGl6KHRoaXMscWVlLHt3cml0YWJsZTohMCx2YWx1ZTohMX0pLEplZSh0aGlzLHFlZSxudWxsIT1oJiZoKX1yZXR1cm4gZnVuY3Rpb24gbVhlKGQsZyxoKXtnJiZ3a2UoZC5wcm90''@;'; put 'put ''b3R5cGUsZyksaCYmd2tlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImNyZWF0ZU9ic2VydmVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMsdj1uZXcgQWtlO3JldHVybiBCcCh0aGlzLFhlZSkuYWRkKHYpLHYu''@;'; put 'put ''YWRkTG9jYWxIb29rKCJ1bnN1YnNjcmliZSIsZnVuY3Rpb24oKXtCcChoLFhlZSkuZGVsZXRlKHYpfSksdi5fd3JpdGVJbml0aWFsQ2hhbmdlcyh5a2UoQnAodGhpcyxveiksQnAodGhpcyxLZWUpKSksdn19LHtrZXk6ImVtaXQiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PUJwKHRoaXMsS2Vl''@;'; put 'put ''KTsoIUJwKHRoaXMsJGVlKXx8QnAodGhpcyxveikubGVuZ3RoIT09aC5sZW5ndGgpJiYoMD09PWgubGVuZ3RoP2g9bmV3IEFycmF5KHYubGVuZ3RoKS5maWxsKEJwKHRoaXMscWVlKSk6SmVlKHRoaXMsb3osbmV3IEFycmF5KGgubGVuZ3RoKS5maWxsKEJwKHRoaXMscWVlKSkpLEJwKHRoaXMs''@;'; put 'put ''JGVlKXx8KEplZSh0aGlzLCRlZSwhMCksdj1CcCh0aGlzLG96KSkpO3ZhciB5PXlrZSh2LGgpO0JwKHRoaXMsWGVlKS5mb3JFYWNoKGZ1bmN0aW9uKEMpe3JldHVybiBDLl93cml0ZSh5KX0pLEplZSh0aGlzLEtlZSxoKX19XSksZH0oKTtmdW5jdGlvbiBiNGUoZCl7cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''IGtYZShkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBfNGUoZCl9KGQpfHxmdW5jdGlvbiBDWGUoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQpfShk''@;'; put 'put ''KXx8ZnVuY3Rpb24gX1hlKGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBfNGUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9y''@;'; put 'put ''Lm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIF80ZShkLGcpfX0oZCl8fGZ1bmN0aW9uIGJYZSgpe3Rocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIF80ZShk''@;'; put 'put ''LGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIFNYZShkLGcpe3JldHVybiBnfHwoZz1kLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0aWVzKGQse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZShnKX19KSl9ZnVuY3Rpb24gQ2tlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2''@;'; put 'put ''LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIFNrZSxra2U9bmV3IFNldChbImdldEZpcnN0Tm90SGlkZGVuSW5kZXgiXSksQzRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZCgpe3ZhciBnPXRoaXM7KGZ1bmN0aW9uIE1YZShkLGcpe2lmKCEoZCBpbnN0''@;'; put 'put ''YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLmluZGV4ZXNTZXF1ZW5jZT1uZXcgaGtlLHRoaXMudHJpbW1pbmdNYXBzQ29sbGVjdGlvbj1uZXcgZ2tlKGZ1bmN0aW9uKGgpe3JldHVybiBoLnNv''@;'; put 'put ''bWUoZnVuY3Rpb24odil7cmV0dXJuITA9PT12fSl9LCExKSx0aGlzLmhpZGluZ01hcHNDb2xsZWN0aW9uPW5ldyBna2UoZnVuY3Rpb24oaCl7cmV0dXJuIGguc29tZShmdW5jdGlvbih2KXtyZXR1cm4hMD09PXZ9KX0sITEpLHRoaXMudmFyaW91c01hcHNDb2xsZWN0aW9uPW5ldyB2NGUsdGhp''@;'; put 'put ''cy5oaWRpbmdDaGFuZ2VzT2JzZXJ2YWJsZT1uZXcgd1hlKHtpbml0aWFsSW5kZXhWYWx1ZTohMX0pLHRoaXMubm90VHJpbW1lZEluZGV4ZXNDYWNoZT1bXSx0aGlzLm5vdEhpZGRlbkluZGV4ZXNDYWNoZT1bXSx0aGlzLmlzQmF0Y2hlZD0hMSx0aGlzLmluZGV4ZXNTZXF1ZW5jZUNoYW5nZWQ9''@;'; put 'put ''ITEsdGhpcy50cmltbWVkSW5kZXhlc0NoYW5nZWQ9ITEsdGhpcy5oaWRkZW5JbmRleGVzQ2hhbmdlZD0hMSx0aGlzLnJlbmRlcmFibGVQaHlzaWNhbEluZGV4ZXNDYWNoZT1bXSx0aGlzLmZyb21QaHlzaWNhbFRvVmlzdWFsSW5kZXhlc0NhY2hlPW5ldyBNYXAsdGhpcy5mcm9tVmlzdWFsVG9S''@;'; put 'put ''ZW5kZXJhYmxlSW5kZXhlc0NhY2hlPW5ldyBNYXAsdGhpcy5pbmRleGVzU2VxdWVuY2UuYWRkTG9jYWxIb29rKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7Zy5pbmRleGVzU2VxdWVuY2VDaGFuZ2VkPSEwLGcudXBkYXRlQ2FjaGUoKSxnLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIsZy5pbmRleGVzU2Vx''@;'; put 'put ''dWVuY2UsbnVsbCl9KSx0aGlzLnRyaW1taW5nTWFwc0NvbGxlY3Rpb24uYWRkTG9jYWxIb29rKCJjaGFuZ2UiLGZ1bmN0aW9uKGgpe2cudHJpbW1lZEluZGV4ZXNDaGFuZ2VkPSEwLGcudXBkYXRlQ2FjaGUoKSxnLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIsaCxnLnRyaW1taW5nTWFwc0NvbGxl''@;'; put 'put ''Y3Rpb24pfSksdGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi5hZGRMb2NhbEhvb2soImNoYW5nZSIsZnVuY3Rpb24oaCl7Zy5oaWRkZW5JbmRleGVzQ2hhbmdlZD0hMCxnLnVwZGF0ZUNhY2hlKCksZy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiLGgsZy5oaWRpbmdNYXBzQ29sbGVjdGlvbil9KSx0''@;'; put 'put ''aGlzLnZhcmlvdXNNYXBzQ29sbGVjdGlvbi5hZGRMb2NhbEhvb2soImNoYW5nZSIsZnVuY3Rpb24oaCl7Zy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiLGgsZy52YXJpb3VzTWFwc0NvbGxlY3Rpb24pfSl9cmV0dXJuIGZ1bmN0aW9uIEVYZShkLGcsaCl7ZyYmQ2tlKGQucHJvdG90eXBlLGcpLGgm''@;'; put 'put ''JkNrZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJzdXNwZW5kT3BlcmF0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzQmF0Y2hlZD0hMH19LHtrZXk6InJlc3VtZU9wZXJhdGlvbnMiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KCl7dGhpcy5pc0JhdGNoZWQ9ITEsdGhpcy51cGRhdGVDYWNoZSgpfX0se2tleToiY3JlYXRlQ2hhbmdlc09ic2VydmVyIix2YWx1ZTpmdW5jdGlvbihoKXtpZigiaGlkaW5nIiE9PWgpdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBpbmRleCBtYXAgdHlwZSAiJy5jb25jYXQoaCwnIi4n''@;'; put 'put ''KSk7cmV0dXJuIHRoaXMuaGlkaW5nQ2hhbmdlc09ic2VydmFibGUuY3JlYXRlT2JzZXJ2ZXIoKX19LHtrZXk6ImNyZWF0ZUFuZFJlZ2lzdGVySW5kZXhNYXAiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXtyZXR1cm4gdGhpcy5yZWdpc3Rlck1hcChoLGZ1bmN0aW9uIFpKZShkKXt2YXIgZz1hcmd1''@;'; put 'put ''bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDtpZighY2tlLmhhcyhkKSl0aHJvdyBuZXcgRXJyb3IoJ1RoZSBwcm92aWRlZCBtYXAgdHlwZSAoIicuY29uY2F0KGQsJyIpIGRvZXMgbm90IGV4aXN0LicpKTtyZXR1cm4gbmV3KGNrZS5nZXQo''@;'; put 'put ''ZCkpKGcpfSh2LHkpKX19LHtrZXk6InJlZ2lzdGVyTWFwIix2YWx1ZTpmdW5jdGlvbihoLHYpe2lmKHRoaXMudHJpbW1pbmdNYXBzQ29sbGVjdGlvbi5nZXQoaCl8fHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24uZ2V0KGgpfHx0aGlzLnZhcmlvdXNNYXBzQ29sbGVjdGlvbi5nZXQoaCkpdGhy''@;'; put 'put ''b3cgRXJyb3IoJ01hcCB3aXRoIG5hbWUgIicuY29uY2F0KGgsJyIgaGFzIGJlZW4gYWxyZWFkeSByZWdpc3RlcmVkLicpKTt2IGluc3RhbmNlb2Ygbno/dGhpcy50cmltbWluZ01hcHNDb2xsZWN0aW9uLnJlZ2lzdGVyKGgsdik6diBpbnN0YW5jZW9mIFdlZT90aGlzLmhpZGluZ01hcHNDb2xs''@;'; put 'put ''ZWN0aW9uLnJlZ2lzdGVyKGgsdik6dGhpcy52YXJpb3VzTWFwc0NvbGxlY3Rpb24ucmVnaXN0ZXIoaCx2KTt2YXIgeT10aGlzLmdldE51bWJlck9mSW5kZXhlcygpO3JldHVybiB5PjAmJnYuaW5pdCh5KSx2fX0se2tleToidW5yZWdpc3Rlck1hcCIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy50''@;'; put 'put ''cmltbWluZ01hcHNDb2xsZWN0aW9uLnVucmVnaXN0ZXIoaCksdGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi51bnJlZ2lzdGVyKGgpLHRoaXMudmFyaW91c01hcHNDb2xsZWN0aW9uLnVucmVnaXN0ZXIoaCl9fSx7a2V5OiJ1bnJlZ2lzdGVyQWxsIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudHJp''@;'; put 'put ''bW1pbmdNYXBzQ29sbGVjdGlvbi51bnJlZ2lzdGVyQWxsKCksdGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi51bnJlZ2lzdGVyQWxsKCksdGhpcy52YXJpb3VzTWFwc0NvbGxlY3Rpb24udW5yZWdpc3RlckFsbCgpfX0se2tleToiZ2V0UGh5c2ljYWxGcm9tVmlzdWFsSW5kZXgiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKGgpe3ZhciB2PXRoaXMubm90VHJpbW1lZEluZGV4ZXNDYWNoZVtoXTtyZXR1cm4gVG8odik/djpudWxsfX0se2tleToiZ2V0UGh5c2ljYWxGcm9tUmVuZGVyYWJsZUluZGV4Iix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLnJlbmRlcmFibGVQaHlzaWNhbEluZGV4ZXNDYWNo''@;'; put 'put ''ZVtoXTtyZXR1cm4gVG8odik/djpudWxsfX0se2tleToiZ2V0VmlzdWFsRnJvbVBoeXNpY2FsSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMuZnJvbVBoeXNpY2FsVG9WaXN1YWxJbmRleGVzQ2FjaGUuZ2V0KGgpO3JldHVybiBUbyh2KT92Om51bGx9fSx7a2V5OiJnZXRWaXN1''@;'; put 'put ''YWxGcm9tUmVuZGVyYWJsZUluZGV4Iix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5nZXRWaXN1YWxGcm9tUGh5c2ljYWxJbmRleCh0aGlzLmdldFBoeXNpY2FsRnJvbVJlbmRlcmFibGVJbmRleChoKSl9fSx7a2V5OiJnZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4Iix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbihoKXt2YXIgdj10aGlzLmZyb21WaXN1YWxUb1JlbmRlcmFibGVJbmRleGVzQ2FjaGUuZ2V0KGgpO3JldHVybiBUbyh2KT92Om51bGx9fSx7a2V5OiJnZXRGaXJzdE5vdEhpZGRlbkluZGV4Iix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9p''@;'; put 'put ''ZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sQz1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106aC12O2trZS5oYXMoImdldEZpcnN0Tm90SGlkZGVuSW5kZXgiKSYmKGtrZS5kZWxldGUoImdldEZpcnN0Tm90SGlkZGVuSW5kZXgi''@;'; put 'put ''KSxsMShQMihfa2V8fChfa2U9U1hlKFsnVGhlIG1ldGhvZCAiZ2V0Rmlyc3ROb3RIaWRkZW5JbmRleCIgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFqb3IgcmVsZWFzZS4gUGxlYXNlIHVzZSAiZ2V0TmVh''@;'; put 'put ''cmVzdE5vdEhpZGRlbkluZGV4IiBpbnN0ZWFkLiddLFsnVGhlIG1ldGhvZCAiZ2V0Rmlyc3ROb3RIaWRkZW5JbmRleCIgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0XFx4MjBcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ham9yIHJlbGVhc2UuIFBsZWFz''@;'; put 'put ''ZSB1c2UgImdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCIgaW5zdGVhZC4nXSkpKSkpO3ZhciBJPXRoaXMuZ2V0UGh5c2ljYWxGcm9tVmlzdWFsSW5kZXgoaCk7cmV0dXJuIG51bGw9PT1JPyEwPT09eSYmQyE9PWgtdj90aGlzLmdldEZpcnN0Tm90SGlkZGVuSW5kZXgoQywtdiwhMSxDKTpudWxs''@;'; put 'put ''OiExPT09dGhpcy5pc0hpZGRlbihJKT9oOnRoaXMuZ2V0Rmlyc3ROb3RIaWRkZW5JbmRleChoK3Ysdix5LEMpfX0se2tleToiZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4Iix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJd''@;'; put 'put ''JiZhcmd1bWVudHNbMl0sQz10aGlzLmdldFBoeXNpY2FsRnJvbVZpc3VhbEluZGV4KGgpO2lmKG51bGw9PT1DKXJldHVybiBudWxsO2lmKHRoaXMuZnJvbVZpc3VhbFRvUmVuZGVyYWJsZUluZGV4ZXNDYWNoZS5oYXMoaCkpcmV0dXJuIGg7dmFyIEk9QXJyYXkuZnJvbSh0aGlzLmZyb21WaXN1''@;'; put 'put ''YWxUb1JlbmRlcmFibGVJbmRleGVzQ2FjaGUua2V5cygpKSxaPS0xO3JldHVybi0xPT09KFo9dj4wP0kuZmluZEluZGV4KGZ1bmN0aW9uKHVlKXtyZXR1cm4gdWU+aH0pOkkucmV2ZXJzZSgpLmZpbmRJbmRleChmdW5jdGlvbih1ZSl7cmV0dXJuIHVlPGh9KSk/eT90aGlzLmdldE5lYXJlc3RO''@;'; put 'put ''b3RIaWRkZW5JbmRleChoLC12LCExKTpudWxsOklbWl19fSx7a2V5OiJpbml0VG9MZW5ndGgiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMuZ2V0TnVtYmVyT2ZJbmRleGVzKCk7dGhpcy5u''@;'; put 'put ''b3RUcmltbWVkSW5kZXhlc0NhY2hlPWI0ZShuZXcgQXJyYXkoaCkua2V5cygpKSx0aGlzLm5vdEhpZGRlbkluZGV4ZXNDYWNoZT1iNGUobmV3IEFycmF5KGgpLmtleXMoKSksdGhpcy5zdXNwZW5kT3BlcmF0aW9ucygpLHRoaXMuaW5kZXhlc1NlcXVlbmNlLmluaXQoaCksdGhpcy50cmltbWlu''@;'; put 'put ''Z01hcHNDb2xsZWN0aW9uLmluaXRFdmVyeShoKSx0aGlzLnJlc3VtZU9wZXJhdGlvbnMoKSx0aGlzLnN1c3BlbmRPcGVyYXRpb25zKCksdGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi5pbml0RXZlcnkoaCksdGhpcy52YXJpb3VzTWFwc0NvbGxlY3Rpb24uaW5pdEV2ZXJ5KGgpLHRoaXMucmVz''@;'; put 'put ''dW1lT3BlcmF0aW9ucygpLHRoaXMucnVuTG9jYWxIb29rcygiaW5pdCIpfX0se2tleToiZml0VG9MZW5ndGgiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMuZ2V0TnVtYmVyT2ZJbmRleGVzKCk7aWYoaDx2KXt2YXIgeT1iNGUoQXJyYXkodGhpcy5nZXROdW1iZXJPZkluZGV4ZXMoKS1o''@;'; put 'put ''KS5rZXlzKCkpLm1hcChmdW5jdGlvbihDKXtyZXR1cm4gQytofSk7dGhpcy5yZW1vdmVJbmRleGVzKHkpfWVsc2UgdGhpcy5pbnNlcnRJbmRleGVzKHYsaC12KX19LHtrZXk6ImdldEluZGV4ZXNTZXF1ZW5jZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmRleGVzU2VxdWVuY2Uu''@;'; put 'put ''Z2V0VmFsdWVzKCl9fSx7a2V5OiJzZXRJbmRleGVzU2VxdWVuY2UiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMuaW5kZXhlc1NlcXVlbmNlLnNldFZhbHVlcyhoKX19LHtrZXk6ImdldE5vdFRyaW1tZWRJbmRleGVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMsdj0hKGFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdO2lmKCEwPT09dilyZXR1cm4gdGhpcy5ub3RUcmltbWVkSW5kZXhlc0NhY2hlO3ZhciB5PXRoaXMuZ2V0SW5kZXhlc1NlcXVlbmNlKCk7cmV0dXJuIHkuZmlsdGVyKGZ1bmN0aW9uKEMpe3JldHVybiExPT09aC5p''@;'; put 'put ''c1RyaW1tZWQoQyl9KX19LHtrZXk6ImdldE5vdFRyaW1tZWRJbmRleGVzTGVuZ3RoIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE5vdFRyaW1tZWRJbmRleGVzKCkubGVuZ3RofX0se2tleToiZ2V0Tm90SGlkZGVuSW5kZXhlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlz''@;'; put 'put ''LHY9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXTtpZighMD09PXYpcmV0dXJuIHRoaXMubm90SGlkZGVuSW5kZXhlc0NhY2hlO3ZhciB5PXRoaXMuZ2V0SW5kZXhlc1NlcXVlbmNlKCk7cmV0dXJuIHkuZmlsdGVyKGZ1bmN0aW9uKEMp''@;'; put 'put ''e3JldHVybiExPT09aC5pc0hpZGRlbihDKX0pfX0se2tleToiZ2V0Tm90SGlkZGVuSW5kZXhlc0xlbmd0aCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXROb3RIaWRkZW5JbmRleGVzKCkubGVuZ3RofX0se2tleToiZ2V0UmVuZGVyYWJsZUluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIGg9dGhpcyx2PSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF07aWYoITA9PT12KXJldHVybiB0aGlzLnJlbmRlcmFibGVQaHlzaWNhbEluZGV4ZXNDYWNoZTt2YXIgeT10aGlzLmdldE5vdFRyaW1tZWRJbmRleGVzKCk7cmV0''@;'; put 'put ''dXJuIHkuZmlsdGVyKGZ1bmN0aW9uKEMpe3JldHVybiExPT09aC5pc0hpZGRlbihDKX0pfX0se2tleToiZ2V0UmVuZGVyYWJsZUluZGV4ZXNMZW5ndGgiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0UmVuZGVyYWJsZUluZGV4ZXMoKS5sZW5ndGh9fSx7a2V5OiJnZXROdW1iZXJP''@;'; put 'put ''ZkluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0SW5kZXhlc1NlcXVlbmNlKCkubGVuZ3RofX0se2tleToibW92ZUluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9dGhpczsibnVtYmVyIj09dHlwZW9mIGgmJihoPVtoXSk7dmFyIEM9T2woaCxmdW5jdGlv''@;'; put 'put ''bihOZSl7cmV0dXJuIHkuZ2V0UGh5c2ljYWxGcm9tVmlzdWFsSW5kZXgoTmUpfSksST10aGlzLmdldE5vdFRyaW1tZWRJbmRleGVzTGVuZ3RoKCksWj1oLmxlbmd0aCx1ZT10eih0aGlzLmdldEluZGV4ZXNTZXF1ZW5jZSgpLEMpLF9lPUktWjtpZih2K1o8SSl7dmFyIEJlPXVlLmZpbHRlcihm''@;'; put 'put ''dW5jdGlvbihOZSl7cmV0dXJuITE9PT15LmlzVHJpbW1lZChOZSl9KVt2XTtfZT11ZS5pbmRleE9mKEJlKX10aGlzLnNldEluZGV4ZXNTZXF1ZW5jZShhNGUodWUsX2UsQykpfX0se2tleToiaXNUcmltbWVkIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy50cmltbWluZ01hcHNDb2xs''@;'; put 'put ''ZWN0aW9uLmdldE1lcmdlZFZhbHVlQXRJbmRleChoKX19LHtrZXk6ImlzSGlkZGVuIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi5nZXRNZXJnZWRWYWx1ZUF0SW5kZXgoaCl9fSx7a2V5OiJpbnNlcnRJbmRleGVzIix2YWx1ZTpmdW5jdGlvbiho''@;'; put 'put ''LHYpe3ZhciB5PXRoaXMuZ2V0Tm90VHJpbW1lZEluZGV4ZXMoKVtoXSxDPVRvKHkpP3k6dGhpcy5nZXROdW1iZXJPZkluZGV4ZXMoKSxJPXRoaXMuZ2V0SW5kZXhlc1NlcXVlbmNlKCkuaW5jbHVkZXMoeSk/dGhpcy5nZXRJbmRleGVzU2VxdWVuY2UoKS5pbmRleE9mKHkpOnRoaXMuZ2V0TnVt''@;'; put 'put ''YmVyT2ZJbmRleGVzKCksWj1PbChuZXcgQXJyYXkodikuZmlsbChDKSxmdW5jdGlvbih1ZSxfZSl7cmV0dXJuIHVlK19lfSk7dGhpcy5zdXNwZW5kT3BlcmF0aW9ucygpLHRoaXMuaW5kZXhlc1NlcXVlbmNlLmluc2VydChJLFopLHRoaXMudHJpbW1pbmdNYXBzQ29sbGVjdGlvbi5pbnNlcnRU''@;'; put 'put ''b0V2ZXJ5KEksWiksdGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi5pbnNlcnRUb0V2ZXJ5KEksWiksdGhpcy52YXJpb3VzTWFwc0NvbGxlY3Rpb24uaW5zZXJ0VG9FdmVyeShJLFopLHRoaXMucmVzdW1lT3BlcmF0aW9ucygpfX0se2tleToicmVtb3ZlSW5kZXhlcyIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''aCl7dGhpcy5zdXNwZW5kT3BlcmF0aW9ucygpLHRoaXMuaW5kZXhlc1NlcXVlbmNlLnJlbW92ZShoKSx0aGlzLnRyaW1taW5nTWFwc0NvbGxlY3Rpb24ucmVtb3ZlRnJvbUV2ZXJ5KGgpLHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24ucmVtb3ZlRnJvbUV2ZXJ5KGgpLHRoaXMudmFyaW91c01h''@;'; put 'put ''cHNDb2xsZWN0aW9uLnJlbW92ZUZyb21FdmVyeShoKSx0aGlzLnJlc3VtZU9wZXJhdGlvbnMoKX19LHtrZXk6InVwZGF0ZUNhY2hlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sdj10aGlzLmlu''@;'; put 'put ''ZGV4ZXNTZXF1ZW5jZUNoYW5nZWR8fHRoaXMudHJpbW1lZEluZGV4ZXNDaGFuZ2VkfHx0aGlzLmhpZGRlbkluZGV4ZXNDaGFuZ2VkOyghMD09PWh8fCExPT09dGhpcy5pc0JhdGNoZWQmJiEwPT09dikmJih0aGlzLnRyaW1taW5nTWFwc0NvbGxlY3Rpb24udXBkYXRlQ2FjaGUoKSx0aGlzLmhp''@;'; put 'put ''ZGluZ01hcHNDb2xsZWN0aW9uLnVwZGF0ZUNhY2hlKCksdGhpcy5ub3RUcmltbWVkSW5kZXhlc0NhY2hlPXRoaXMuZ2V0Tm90VHJpbW1lZEluZGV4ZXMoITEpLHRoaXMubm90SGlkZGVuSW5kZXhlc0NhY2hlPXRoaXMuZ2V0Tm90SGlkZGVuSW5kZXhlcyghMSksdGhpcy5yZW5kZXJhYmxlUGh5''@;'; put 'put ''c2ljYWxJbmRleGVzQ2FjaGU9dGhpcy5nZXRSZW5kZXJhYmxlSW5kZXhlcyghMSksdGhpcy5jYWNoZUZyb21QaHlzaWNhbFRvVmlzdWFsSW5kZXhlcygpLHRoaXMuY2FjaGVGcm9tVmlzdWFsVG9SZW5kZXJhYmxlSW5kZXhlcygpLHRoaXMuaGlkZGVuSW5kZXhlc0NoYW5nZWQmJnRoaXMuaGlk''@;'; put 'put ''aW5nQ2hhbmdlc09ic2VydmFibGUuZW1pdCh0aGlzLmhpZGluZ01hcHNDb2xsZWN0aW9uLmdldE1lcmdlZFZhbHVlcygpKSx0aGlzLnJ1bkxvY2FsSG9va3MoImNhY2hlVXBkYXRlZCIse2luZGV4ZXNTZXF1ZW5jZUNoYW5nZWQ6dGhpcy5pbmRleGVzU2VxdWVuY2VDaGFuZ2VkLHRyaW1tZWRJ''@;'; put 'put ''bmRleGVzQ2hhbmdlZDp0aGlzLnRyaW1tZWRJbmRleGVzQ2hhbmdlZCxoaWRkZW5JbmRleGVzQ2hhbmdlZDp0aGlzLmhpZGRlbkluZGV4ZXNDaGFuZ2VkfSksdGhpcy5pbmRleGVzU2VxdWVuY2VDaGFuZ2VkPSExLHRoaXMudHJpbW1lZEluZGV4ZXNDaGFuZ2VkPSExLHRoaXMuaGlkZGVuSW5k''@;'; put 'put ''ZXhlc0NoYW5nZWQ9ITEpfX0se2tleToiY2FjaGVGcm9tUGh5c2ljYWxUb1Zpc3VhbEluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5nZXROb3RUcmltbWVkSW5kZXhlc0xlbmd0aCgpO3RoaXMuZnJvbVBoeXNpY2FsVG9WaXN1YWxJbmRleGVzQ2FjaGUuY2xlYXIoKTtmb3Io''@;'; put 'put ''dmFyIHY9MDt2PGg7dis9MSl7dmFyIHk9dGhpcy5nZXRQaHlzaWNhbEZyb21WaXN1YWxJbmRleCh2KTt0aGlzLmZyb21QaHlzaWNhbFRvVmlzdWFsSW5kZXhlc0NhY2hlLnNldCh5LHYpfX19LHtrZXk6ImNhY2hlRnJvbVZpc3VhbFRvUmVuZGVyYWJsZUluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIGg9dGhpcy5nZXRSZW5kZXJhYmxlSW5kZXhlc0xlbmd0aCgpO3RoaXMuZnJvbVZpc3VhbFRvUmVuZGVyYWJsZUluZGV4ZXNDYWNoZS5jbGVhcigpO2Zvcih2YXIgdj0wO3Y8aDt2Kz0xKXt2YXIgeT10aGlzLmdldFBoeXNpY2FsRnJvbVJlbmRlcmFibGVJbmRleCh2KSxDPXRoaXMu''@;'; put 'put ''Z2V0VmlzdWFsRnJvbVBoeXNpY2FsSW5kZXgoeSk7dGhpcy5mcm9tVmlzdWFsVG9SZW5kZXJhYmxlSW5kZXhlc0NhY2hlLnNldChDLHYpfX19XSksZH0oKTtmdW5jdGlvbiBNa2UoZCl7dmFyIGg9L14oW2EtekEtWl17Mn0pLShbYS16QS1aXXsyfSkkLy5leGVjKGQpO3JldHVybiBoPyIiLmNv''@;'; put 'put ''bmNhdChoWzFdLnRvTG93ZXJDYXNlKCksIi0iKS5jb25jYXQoaFsyXS50b1VwcGVyQ2FzZSgpKTpkfWZ1bmN0aW9uIEVrZShkKXtUbyhkKSYmQzNlKFAyKFNrZXx8KFNrZT1mdW5jdGlvbiB4WGUoZCxnKXtyZXR1cm4gZ3x8KGc9ZC5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydGllcyhkLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUoZyl9fSkpfShbJ0xhbmd1YWdlIHdpdGggY29kZSAiJywnIiB3YXMgbm90IGZvdW5kLiBZb3Ugc2hvdWxkIHJlZ2lzdGVyIHBhcnRpY3VsYXIgbGFuZ3VhZ2UgXG4gICAgYmVmb3JlIHVzaW5nIGl0LiBSZWFkIG1vcmUg''@;'; put 'put ''YWJvdXQgdGhpcyBpc3N1ZSBhdDogaHR0cHM6Ly9kb2NzLmhhbmRzb250YWJsZS5jb20vaTE4bi9taXNzaW5nLWxhbmd1YWdlLWNvZGUuJ10sWydMYW5ndWFnZSB3aXRoIGNvZGUgIicsJyIgd2FzIG5vdCBmb3VuZC4gWW91IHNob3VsZCByZWdpc3RlciBwYXJ0aWN1bGFyIGxhbmd1YWdlXFx4''@;'; put 'put ''MjBcbiAgICBiZWZvcmUgdXNpbmcgaXQuIFJlYWQgbW9yZSBhYm91dCB0aGlzIGlzc3VlIGF0OiBodHRwczovL2RvY3MuaGFuZHNvbnRhYmxlLmNvbS9pMThuL21pc3NpbmctbGFuZ3VhZ2UtY29kZS4nXSkpLGQpKX1CMihDNGUsdWQpO3ZhciB4a2U9THAoInBocmFzZUZvcm1hdHRlcnMiKSxE''@;'; put 'put ''WGU9eGtlLnJlZ2lzdGVyLExYZT14a2UuZ2V0VmFsdWVzOyFmdW5jdGlvbiBPWGUoZCxnKXtEWGUoZCxnKX0oInBsdXJhbGl6ZSIsZnVuY3Rpb24gSVhlKGQsZyl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZCkmJk51bWJlci5pc0ludGVnZXIoZyk/ZFtnXTpkfSk7dmFyIElvLFJsPSJDb250ZXh0''@;'; put 'put ''TWVudTppdGVtcyIsazRlPSIiLmNvbmNhdChSbCwiLm5vSXRlbXMiKSxTNGU9IiIuY29uY2F0KFJsLCIuaW5zZXJ0Um93QWJvdmUiKSxNNGU9IiIuY29uY2F0KFJsLCIuaW5zZXJ0Um93QmVsb3ciKSxFNGU9IiIuY29uY2F0KFJsLCIuaW5zZXJ0Q29sdW1uT25UaGVMZWZ0IikseDRlPSIiLmNv''@;'; put 'put ''bmNhdChSbCwiLmluc2VydENvbHVtbk9uVGhlUmlnaHQiKSxUNGU9IiIuY29uY2F0KFJsLCIucmVtb3ZlUm93IiksSTRlPSIiLmNvbmNhdChSbCwiLnJlbW92ZUNvbHVtbiIpLEQ0ZT0iIi5jb25jYXQoUmwsIi51bmRvIiksTDRlPSIiLmNvbmNhdChSbCwiLnJlZG8iKSxPNGU9IiIuY29uY2F0''@;'; put 'put ''KFJsLCIucmVhZE9ubHkiKSxSNGU9IiIuY29uY2F0KFJsLCIuY2xlYXJDb2x1bW4iKSxCNGU9IiIuY29uY2F0KFJsLCIuY29weSIpLFA0ZT0iIi5jb25jYXQoUmwsIi5jdXQiKSxGNGU9IiIuY29uY2F0KFJsLCIuZnJlZXplQ29sdW1uIiksSDRlPSIiLmNvbmNhdChSbCwiLnVuZnJlZXplQ29s''@;'; put 'put ''dW1uIiksTjRlPSIiLmNvbmNhdChSbCwiLm1lcmdlQ2VsbHMiKSxWNGU9IiIuY29uY2F0KFJsLCIudW5tZXJnZUNlbGxzIiksajRlPSIiLmNvbmNhdChSbCwiLmFkZENvbW1lbnQiKSxaNGU9IiIuY29uY2F0KFJsLCIuZWRpdENvbW1lbnQiKSx6NGU9IiIuY29uY2F0KFJsLCIucmVtb3ZlQ29t''@;'; put 'put ''bWVudCIpLEc0ZT0iIi5jb25jYXQoUmwsIi5yZWFkT25seUNvbW1lbnQiKSxXNGU9IiIuY29uY2F0KFJsLCIuYWxpZ24iKSxZNGU9IiIuY29uY2F0KFJsLCIuYWxpZ24ubGVmdCIpLFU0ZT0iIi5jb25jYXQoUmwsIi5hbGlnbi5jZW50ZXIiKSxRNGU9IiIuY29uY2F0KFJsLCIuYWxpZ24ucmln''@;'; put 'put ''aHQiKSxKNGU9IiIuY29uY2F0KFJsLCIuYWxpZ24uanVzdGlmeSIpLFg0ZT0iIi5jb25jYXQoUmwsIi5hbGlnbi50b3AiKSxLNGU9IiIuY29uY2F0KFJsLCIuYWxpZ24ubWlkZGxlIiksJDRlPSIiLmNvbmNhdChSbCwiLmFsaWduLmJvdHRvbSIpLHE0ZT0iIi5jb25jYXQoUmwsIi5ib3JkZXJz''@;'; put 'put ''IiksZXBlPSIiLmNvbmNhdChSbCwiLmJvcmRlcnMudG9wIiksdHBlPSIiLmNvbmNhdChSbCwiLmJvcmRlcnMucmlnaHQiKSxucGU9IiIuY29uY2F0KFJsLCIuYm9yZGVycy5ib3R0b20iKSxycGU9IiIuY29uY2F0KFJsLCIuYm9yZGVycy5sZWZ0IiksaXBlPSIiLmNvbmNhdChSbCwiLmJvcmRl''@;'; put 'put ''cnMucmVtb3ZlIiksb3BlPSIiLmNvbmNhdChSbCwiLm5lc3RlZEhlYWRlcnMuaW5zZXJ0Q2hpbGRSb3ciKSxhcGU9IiIuY29uY2F0KFJsLCIubmVzdGVkSGVhZGVycy5kZXRhY2hGcm9tUGFyZW50IiksbHBlPSIiLmNvbmNhdChSbCwiLmhpZGVDb2x1bW4iKSxzcGU9IiIuY29uY2F0KFJsLCIu''@;'; put 'put ''c2hvd0NvbHVtbiIpLHVwZT0iIi5jb25jYXQoUmwsIi5oaWRlUm93IiksY3BlPSIiLmNvbmNhdChSbCwiLnNob3dSb3ciKSxsMz0iRmlsdGVyczoiLHR1PSIiLmNvbmNhdChsMywiY29uZGl0aW9ucyIpLGV0ZT0iIi5jb25jYXQodHUsIi5ub25lIiksZnBlPSIiLmNvbmNhdCh0dSwiLmlzRW1w''@;'; put 'put ''dHkiKSxocGU9IiIuY29uY2F0KHR1LCIuaXNOb3RFbXB0eSIpLGRwZT0iIi5jb25jYXQodHUsIi5pc0VxdWFsVG8iKSxwcGU9IiIuY29uY2F0KHR1LCIuaXNOb3RFcXVhbFRvIiksZ3BlPSIiLmNvbmNhdCh0dSwiLmJlZ2luc1dpdGgiKSxtcGU9IiIuY29uY2F0KHR1LCIuZW5kc1dpdGgiKSx2''@;'; put 'put ''cGU9IiIuY29uY2F0KHR1LCIuY29udGFpbnMiKSxBcGU9IiIuY29uY2F0KHR1LCIuZG9lc05vdENvbnRhaW4iKSxCWGU9IiIuY29uY2F0KHR1LCIuYnlWYWx1ZSIpLHlwZT0iIi5jb25jYXQodHUsIi5ncmVhdGVyVGhhbiIpLHdwZT0iIi5jb25jYXQodHUsIi5ncmVhdGVyVGhhbk9yRXF1YWxU''@;'; put 'put ''byIpLGJwZT0iIi5jb25jYXQodHUsIi5sZXNzVGhhbiIpLF9wZT0iIi5jb25jYXQodHUsIi5sZXNzVGhhbk9yRXF1YWxUbyIpLENwZT0iIi5jb25jYXQodHUsIi5pc0JldHdlZW4iKSxrcGU9IiIuY29uY2F0KHR1LCIuaXNOb3RCZXR3ZWVuIiksU3BlPSIiLmNvbmNhdCh0dSwiLmFmdGVyIiks''@;'; put 'put ''TXBlPSIiLmNvbmNhdCh0dSwiLmJlZm9yZSIpLEVwZT0iIi5jb25jYXQodHUsIi50b2RheSIpLHhwZT0iIi5jb25jYXQodHUsIi50b21vcnJvdyIpLFRwZT0iIi5jb25jYXQodHUsIi55ZXN0ZXJkYXkiKSxJcGU9IiIuY29uY2F0KGwzLCJsYWJlbHMuZmlsdGVyQnlDb25kaXRpb24iKSxEcGU9''@;'; put 'put ''IiIuY29uY2F0KGwzLCJsYWJlbHMuZmlsdGVyQnlWYWx1ZSIpLExwZT0iIi5jb25jYXQobDMsImxhYmVscy5jb25qdW5jdGlvbiIpLHR0ZT0iIi5jb25jYXQobDMsImxhYmVscy5kaXNqdW5jdGlvbiIpLG50ZT0iIi5jb25jYXQobDMsInZhbHVlcy5ibGFua0NlbGxzIiksT3BlPSIiLmNvbmNh''@;'; put 'put ''dChsMywiYnV0dG9ucy5zZWxlY3RBbGwiKSxScGU9IiIuY29uY2F0KGwzLCJidXR0b25zLmNsZWFyIiksQnBlPSIiLmNvbmNhdChsMywiYnV0dG9ucy5vayIpLFBwZT0iIi5jb25jYXQobDMsImJ1dHRvbnMuY2FuY2VsIiksRnBlPSIiLmNvbmNhdChsMywiYnV0dG9ucy5wbGFjZWhvbGRlci5z''@;'; put 'put ''ZWFyY2giKSxIcGU9IiIuY29uY2F0KGwzLCJidXR0b25zLnBsYWNlaG9sZGVyLnZhbHVlIiksTnBlPSIiLmNvbmNhdChsMywiYnV0dG9ucy5wbGFjZWhvbGRlci5zZWNvbmRWYWx1ZSIpO2Z1bmN0aW9uIEJvKGQsZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcs''@;'; put 'put ''e3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgsZH1jb25zdCBUa2U9KEJvKElvPXtsYW5ndWFnZUNvZGU6ImVuLVVTIn0sazRlLCJObyBhdmFpbGFibGUgb3B0aW9ucyIpLEJvKElvLFM0ZSwiSW5zZXJ0IHJvdyBhYm92ZSIpLEJvKElv''@;'; put 'put ''LE00ZSwiSW5zZXJ0IHJvdyBiZWxvdyIpLEJvKElvLEU0ZSwiSW5zZXJ0IGNvbHVtbiBsZWZ0IiksQm8oSW8seDRlLCJJbnNlcnQgY29sdW1uIHJpZ2h0IiksQm8oSW8sVDRlLFsiUmVtb3ZlIHJvdyIsIlJlbW92ZSByb3dzIl0pLEJvKElvLEk0ZSxbIlJlbW92ZSBjb2x1bW4iLCJSZW1vdmUg''@;'; put 'put ''Y29sdW1ucyJdKSxCbyhJbyxENGUsIlVuZG8iKSxCbyhJbyxMNGUsIlJlZG8iKSxCbyhJbyxPNGUsIlJlYWQgb25seSIpLEJvKElvLFI0ZSwiQ2xlYXIgY29sdW1uIiksQm8oSW8sVzRlLCJBbGlnbm1lbnQiKSxCbyhJbyxZNGUsIkxlZnQiKSxCbyhJbyxVNGUsIkNlbnRlciIpLEJvKElvLFE0''@;'; put 'put ''ZSwiUmlnaHQiKSxCbyhJbyxKNGUsIkp1c3RpZnkiKSxCbyhJbyxYNGUsIlRvcCIpLEJvKElvLEs0ZSwiTWlkZGxlIiksQm8oSW8sJDRlLCJCb3R0b20iKSxCbyhJbyxGNGUsIkZyZWV6ZSBjb2x1bW4iKSxCbyhJbyxINGUsIlVuZnJlZXplIGNvbHVtbiIpLEJvKElvLHE0ZSwiQm9yZGVycyIp''@;'; put 'put ''LEJvKElvLGVwZSwiVG9wIiksQm8oSW8sdHBlLCJSaWdodCIpLEJvKElvLG5wZSwiQm90dG9tIiksQm8oSW8scnBlLCJMZWZ0IiksQm8oSW8saXBlLCJSZW1vdmUgYm9yZGVyKHMpIiksQm8oSW8sajRlLCJBZGQgY29tbWVudCIpLEJvKElvLFo0ZSwiRWRpdCBjb21tZW50IiksQm8oSW8sejRl''@;'; put 'put ''LCJEZWxldGUgY29tbWVudCIpLEJvKElvLEc0ZSwiUmVhZC1vbmx5IGNvbW1lbnQiKSxCbyhJbyxONGUsIk1lcmdlIGNlbGxzIiksQm8oSW8sVjRlLCJVbm1lcmdlIGNlbGxzIiksQm8oSW8sQjRlLCJDb3B5IiksQm8oSW8sUDRlLCJDdXQiKSxCbyhJbyxvcGUsIkluc2VydCBjaGlsZCByb3ci''@;'; put 'put ''KSxCbyhJbyxhcGUsIkRldGFjaCBmcm9tIHBhcmVudCIpLEJvKElvLGxwZSxbIkhpZGUgY29sdW1uIiwiSGlkZSBjb2x1bW5zIl0pLEJvKElvLHNwZSxbIlNob3cgY29sdW1uIiwiU2hvdyBjb2x1bW5zIl0pLEJvKElvLHVwZSxbIkhpZGUgcm93IiwiSGlkZSByb3dzIl0pLEJvKElvLGNwZSxb''@;'; put 'put ''IlNob3cgcm93IiwiU2hvdyByb3dzIl0pLEJvKElvLGV0ZSwiTm9uZSIpLEJvKElvLGZwZSwiSXMgZW1wdHkiKSxCbyhJbyxocGUsIklzIG5vdCBlbXB0eSIpLEJvKElvLGRwZSwiSXMgZXF1YWwgdG8iKSxCbyhJbyxwcGUsIklzIG5vdCBlcXVhbCB0byIpLEJvKElvLGdwZSwiQmVnaW5zIHdp''@;'; put 'put ''dGgiKSxCbyhJbyxtcGUsIkVuZHMgd2l0aCIpLEJvKElvLHZwZSwiQ29udGFpbnMiKSxCbyhJbyxBcGUsIkRvZXMgbm90IGNvbnRhaW4iKSxCbyhJbyx5cGUsIkdyZWF0ZXIgdGhhbiIpLEJvKElvLHdwZSwiR3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIiksQm8oSW8sYnBlLCJMZXNzIHRoYW4i''@;'; put 'put ''KSxCbyhJbyxfcGUsIkxlc3MgdGhhbiBvciBlcXVhbCB0byIpLEJvKElvLENwZSwiSXMgYmV0d2VlbiIpLEJvKElvLGtwZSwiSXMgbm90IGJldHdlZW4iKSxCbyhJbyxTcGUsIkFmdGVyIiksQm8oSW8sTXBlLCJCZWZvcmUiKSxCbyhJbyxFcGUsIlRvZGF5IiksQm8oSW8seHBlLCJUb21vcnJv''@;'; put 'put ''dyIpLEJvKElvLFRwZSwiWWVzdGVyZGF5IiksQm8oSW8sbnRlLCJCbGFuayBjZWxscyIpLEJvKElvLElwZSwiRmlsdGVyIGJ5IGNvbmRpdGlvbiIpLEJvKElvLERwZSwiRmlsdGVyIGJ5IHZhbHVlIiksQm8oSW8sTHBlLCJBbmQiKSxCbyhJbyx0dGUsIk9yIiksQm8oSW8sT3BlLCJTZWxlY3Qg''@;'; put 'put ''YWxsIiksQm8oSW8sUnBlLCJDbGVhciIpLEJvKElvLEJwZSwiT0siKSxCbyhJbyxQcGUsIkNhbmNlbCIpLEJvKElvLEZwZSwiU2VhcmNoIiksQm8oSW8sSHBlLCJWYWx1ZSIpLEJvKElvLE5wZSwiU2Vjb25kIHZhbHVlIiksSW8pO3ZhciBWcGU9VGtlLmxhbmd1YWdlQ29kZSxydGU9THAoImxh''@;'; put 'put ''bmd1YWdlc0RpY3Rpb25hcmllcyIpLEZYZT1ydGUucmVnaXN0ZXIsSWtlPXJ0ZS5nZXRJdGVtLEhYZT1ydGUuaGFzSXRlbSxOWGU9cnRlLmdldFZhbHVlcztmdW5jdGlvbiBEa2UoZCxnKXt2YXIgaD1kLHY9ZztyZXR1cm4geGwoZCkmJihoPSh2PWQpLmxhbmd1YWdlQ29kZSksZnVuY3Rpb24g''@;'; put 'put ''VlhlKGQsZyl7ZCE9PVZwZSYmZnVuY3Rpb24gVFhlKGQsZyl7R2woZyxmdW5jdGlvbihoLHYpe2ExKGRbdl0pJiYoZFt2XT1oKX0pfShnLElrZShWcGUpKX0oaCx2KSxGWGUoaCxnaCh2KSksZ2godil9ZnVuY3Rpb24gTGtlKGQpe3JldHVybiBqcGUoZCk/Z2goSWtlKGQpKTpudWxsfWZ1bmN0''@;'; put 'put ''aW9uIGpwZShkKXtyZXR1cm4gSFhlKGQpfWZ1bmN0aW9uIE9rZShkLGcsaCl7dmFyIHY9TGtlKGQpO2lmKG51bGw9PT12KXJldHVybiBudWxsO3ZhciB5PXZbZ107aWYoYTEoeSkpcmV0dXJuIG51bGw7dmFyIEM9ZnVuY3Rpb24gWlhlKGQsZyl7dmFyIGg9ZDtyZXR1cm4gVXIoZnVuY3Rpb24g''@;'; put 'put ''UlhlKCl7cmV0dXJuIExYZSgpfSgpLGZ1bmN0aW9uKHYpe2g9dihkLGcpfSksaH0oeSxoKTtyZXR1cm4gQXJyYXkuaXNBcnJheShDKT9DWzBdOkN9ZnVuY3Rpb24gelhlKGQpe3ZhciBnPU1rZShkKTtyZXR1cm4ganBlKGcpfHwoZz1WcGUsRWtlKGQpKSxnfURrZShUa2UpLEwoNTU2MTUpO3Zh''@;'; put 'put ''ciBpdGU9ImFjdGl2ZS1oZWFkZXIiLG90ZT0iYXJlYSIsYXo9ImNlbGwiLGx6PSJoZWFkZXIiLHpwZT0iY3VzdG9tLXNlbGVjdGlvbiI7ZnVuY3Rpb24gR3BlKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIFVYZShkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gWVhl''@;'; put 'put ''KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxaLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25l''@;'; put 'put ''KSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2godWUpe0M9ITAsWj11ZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IFp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24gV1hlKGQsZyl7''@;'; put 'put ''aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBSa2UoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNl''@;'; put 'put ''dCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIFJrZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gR1hlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxp''@;'; put 'put ''ZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBSa2UoZCxnKXsobnVsbD09Z3x8''@;'; put 'put ''Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBCa2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwh''@;'; put 'put ''MSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1MKDgzODU3KTt2YXIgWFhlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnLGgpeyhmdW5jdGlvbiBRWGUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBn''@;'; put 'put ''KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksaCYmKHRoaXMuZXZlbnRNYW5hZ2VyPWcuZXZlbnRNYW5hZ2VyLHRoaXMuaW5zdGFuY2U9Zyx0aGlzLndvdD1nLHRoaXMuc2V0dGluZ3M9aCx0aGlzLm1vdXNlRG93bj0h''@;'; put 'put ''MSx0aGlzLm1haW49bnVsbCx0aGlzLnRvcD1udWxsLHRoaXMuYm90dG9tPW51bGwsdGhpcy5zdGFydD1udWxsLHRoaXMuZW5kPW51bGwsdGhpcy50b3BTdHlsZT1udWxsLHRoaXMuYm90dG9tU3R5bGU9bnVsbCx0aGlzLnN0YXJ0U3R5bGU9bnVsbCx0aGlzLmVuZFN0eWxlPW51bGwsdGhpcy5j''@;'; put 'put ''b3JuZXJEZWZhdWx0U3R5bGU9e3dpZHRoOiI2cHgiLGhlaWdodDoiNnB4Iixib3JkZXJXaWR0aDoiMXB4Iixib3JkZXJTdHlsZToic29saWQiLGJvcmRlckNvbG9yOiIjRkZGIn0sdGhpcy5jb3JuZXJDZW50ZXJQb2ludE9mZnNldD0tcGFyc2VJbnQodGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUu''@;'; put 'put ''d2lkdGgsMTApLzIsdGhpcy5jb3JuZXI9bnVsbCx0aGlzLmNvcm5lclN0eWxlPW51bGwsdGhpcy5jcmVhdGVCb3JkZXJzKGgpLHRoaXMucmVnaXN0ZXJMaXN0ZW5lcnMoKSl9cmV0dXJuIGZ1bmN0aW9uIEpYZShkLGcsaCl7ZyYmQmtlKGQucHJvdG90eXBlLGcpLGgmJkJrZShkLGgpLE9iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJyZWdpc3Rlckxpc3RlbmVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLHY9dGhpcy53b3Qucm9vdERvY3VtZW50LmJvZHk7dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l''@;'; put 'put ''cih2LCJtb3VzZWRvd24iLGZ1bmN0aW9uKCl7cmV0dXJuIGgub25Nb3VzZURvd24oKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodiwibW91c2V1cCIsZnVuY3Rpb24oKXtyZXR1cm4gaC5vbk1vdXNlVXAoKX0pO2Zvcih2YXIgeT1mdW5jdGlvbih1ZSxfZSl7aC5ldmVu''@;'; put 'put ''dE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihoLm1haW4uY2hpbGROb2Rlc1t1ZV0sIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKE5lKXtyZXR1cm4gaC5vbk1vdXNlRW50ZXIoTmUsaC5tYWluLmNoaWxkTm9kZXNbdWVdKX0pfSxDPTAsST10aGlzLm1haW4uY2hpbGROb2Rlcy5sZW5ndGg7QzxJO0Mr''@;'; put 'put ''Kyl5KEMpfX0se2tleToib25Nb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tb3VzZURvd249ITB9fSx7a2V5OiJvbk1vdXNlVXAiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tb3VzZURvd249ITF9fSx7a2V5OiJvbk1vdXNlRW50ZXIiLHZhbHVlOmZ1bmN0aW9uKGgsdil7aWYodGhp''@;'; put 'put ''cy5tb3VzZURvd24mJnRoaXMud290LmdldFNldHRpbmcoImhpZGVCb3JkZXJPbk1vdXNlRG93bk92ZXIiKSl7aC5wcmV2ZW50RGVmYXVsdCgpLF84KGgpO3ZhciB5PXRoaXMsQz10aGlzLndvdC5yb290RG9jdW1lbnQuYm9keSxJPXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7di5zdHlsZS5k''@;'; put 'put ''aXNwbGF5PSJub25lIix0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKEMsIm1vdXNlbW92ZSIsZnVuY3Rpb24gdWUoX2UpeyhmdW5jdGlvbiBaKF9lKXtpZihfZS5jbGllbnRZPE1hdGguZmxvb3IoSS50b3ApfHxfZS5jbGllbnRZPk1hdGguY2VpbChJLnRvcCtJLmhlaWdodCl8''@;'; put 'put ''fF9lLmNsaWVudFg8TWF0aC5mbG9vcihJLmxlZnQpfHxfZS5jbGllbnRYPk1hdGguY2VpbChJLmxlZnQrSS53aWR0aCkpcmV0dXJuITB9KShfZSkmJih5LmV2ZW50TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKEMsIm1vdXNlbW92ZSIsdWUpLHYuc3R5bGUuZGlzcGxheT0iYmxvY2siKX0p''@;'; put 'put ''fX19LHtrZXk6ImNyZWF0ZUJvcmRlcnMiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMud290LnJvb3REb2N1bWVudDt0aGlzLm1haW49di5jcmVhdGVFbGVtZW50KCJkaXYiKTt2YXIgeT1bInRvcCIsInN0YXJ0IiwiYm90dG9tIiwiZW5kIiwiY29ybmVyIl0sQz10aGlzLm1haW4uc3R5''@;'; put 'put ''bGU7Qy5wb3NpdGlvbj0iYWJzb2x1dGUiLEMudG9wPTAsQy5sZWZ0PTA7Zm9yKHZhciBJPTA7STw1O0krKyl7dmFyIFo9eVtJXSx1ZT12LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3VlLmNsYXNzTmFtZT0id3RCb3JkZXIgIi5jb25jYXQodGhpcy5zZXR0aW5ncy5jbGFzc05hbWV8fCIiKSx0aGlz''@;'; put 'put ''LnNldHRpbmdzW1pdJiZ0aGlzLnNldHRpbmdzW1pdLmhpZGUmJih1ZS5jbGFzc05hbWUrPSIgaGlkZGVuIiksKEM9dWUuc3R5bGUpLmJhY2tncm91bmRDb2xvcj10aGlzLnNldHRpbmdzW1pdJiZ0aGlzLnNldHRpbmdzW1pdLmNvbG9yP3RoaXMuc2V0dGluZ3NbWl0uY29sb3I6aC5ib3JkZXIu''@;'; put 'put ''Y29sb3IsQy5oZWlnaHQ9IiIuY29uY2F0KHRoaXMuc2V0dGluZ3NbWl0mJnRoaXMuc2V0dGluZ3NbWl0ud2lkdGg/dGhpcy5zZXR0aW5nc1taXS53aWR0aDpoLmJvcmRlci53aWR0aCwicHgiKSxDLndpZHRoPSIiLmNvbmNhdCh0aGlzLnNldHRpbmdzW1pdJiZ0aGlzLnNldHRpbmdzW1pdLndp''@;'; put 'put ''ZHRoP3RoaXMuc2V0dGluZ3NbWl0ud2lkdGg6aC5ib3JkZXIud2lkdGgsInB4IiksdGhpcy5tYWluLmFwcGVuZENoaWxkKHVlKX10aGlzLnRvcD10aGlzLm1haW4uY2hpbGROb2Rlc1swXSx0aGlzLnN0YXJ0PXRoaXMubWFpbi5jaGlsZE5vZGVzWzFdLHRoaXMuYm90dG9tPXRoaXMubWFpbi5j''@;'; put 'put ''aGlsZE5vZGVzWzJdLHRoaXMuZW5kPXRoaXMubWFpbi5jaGlsZE5vZGVzWzNdLHRoaXMudG9wU3R5bGU9dGhpcy50b3Auc3R5bGUsdGhpcy5zdGFydFN0eWxlPXRoaXMuc3RhcnQuc3R5bGUsdGhpcy5ib3R0b21TdHlsZT10aGlzLmJvdHRvbS5zdHlsZSx0aGlzLmVuZFN0eWxlPXRoaXMuZW5k''@;'; put 'put ''LnN0eWxlLHRoaXMuY29ybmVyPXRoaXMubWFpbi5jaGlsZE5vZGVzWzRdLHRoaXMuY29ybmVyLmNsYXNzTmFtZSs9IiBjb3JuZXIiLHRoaXMuY29ybmVyU3R5bGU9dGhpcy5jb3JuZXIuc3R5bGUsdGhpcy5jb3JuZXJTdHlsZS53aWR0aD10aGlzLmNvcm5lckRlZmF1bHRTdHlsZS53aWR0aCx0''@;'; put 'put ''aGlzLmNvcm5lclN0eWxlLmhlaWdodD10aGlzLmNvcm5lckRlZmF1bHRTdHlsZS5oZWlnaHQsdGhpcy5jb3JuZXJTdHlsZS5ib3JkZXI9W3RoaXMuY29ybmVyRGVmYXVsdFN0eWxlLmJvcmRlcldpZHRoLHRoaXMuY29ybmVyRGVmYXVsdFN0eWxlLmJvcmRlclN0eWxlLHRoaXMuY29ybmVyRGVm''@;'; put 'put ''YXVsdFN0eWxlLmJvcmRlckNvbG9yXS5qb2luKCIgIiksYjgoKSYmdGhpcy5jcmVhdGVNdWx0aXBsZVNlbGVjdG9ySGFuZGxlcygpLHRoaXMuZGlzYXBwZWFyKCk7dmFyIF9lPXRoaXMud290Lnd0VGFibGUsQmU9X2UuYm9yZGVyc0hvbGRlcjtCZXx8KChCZT12LmNyZWF0ZUVsZW1lbnQoImRp''@;'; put 'put ''diIpKS5jbGFzc05hbWU9Imh0Qm9yZGVycyIsX2UuYm9yZGVyc0hvbGRlcj1CZSxfZS5zcHJlYWRlci5hcHBlbmRDaGlsZChCZSkpLEJlLmFwcGVuZENoaWxkKHRoaXMubWFpbil9fSx7a2V5OiJjcmVhdGVNdWx0aXBsZVNlbGVjdG9ySGFuZGxlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10''@;'; put 'put ''aGlzLHY9dGhpcy53b3Qucm9vdERvY3VtZW50O3RoaXMuc2VsZWN0aW9uSGFuZGxlcz17dG9wOnYuY3JlYXRlRWxlbWVudCgiRElWIiksdG9wSGl0QXJlYTp2LmNyZWF0ZUVsZW1lbnQoIkRJViIpLGJvdHRvbTp2LmNyZWF0ZUVsZW1lbnQoIkRJViIpLGJvdHRvbUhpdEFyZWE6di5jcmVhdGVF''@;'; put 'put ''bGVtZW50KCJESVYiKX0sdGhpcy5zZWxlY3Rpb25IYW5kbGVzLnRvcC5jbGFzc05hbWU9InRvcFNlbGVjdGlvbkhhbmRsZSB0b3BMZWZ0U2VsZWN0aW9uSGFuZGxlIix0aGlzLnNlbGVjdGlvbkhhbmRsZXMudG9wSGl0QXJlYS5jbGFzc05hbWU9InRvcFNlbGVjdGlvbkhhbmRsZS1IaXRBcmVh''@;'; put 'put ''IHRvcExlZnRTZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSIsdGhpcy5zZWxlY3Rpb25IYW5kbGVzLmJvdHRvbS5jbGFzc05hbWU9ImJvdHRvbVNlbGVjdGlvbkhhbmRsZSBib3R0b21SaWdodFNlbGVjdGlvbkhhbmRsZSIsdGhpcy5zZWxlY3Rpb25IYW5kbGVzLmJvdHRvbUhpdEFyZWEuY2xhc3NO''@;'; put 'put ''YW1lPSJib3R0b21TZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSBib3R0b21SaWdodFNlbGVjdGlvbkhhbmRsZS1IaXRBcmVhIix0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzPXt0b3A6dGhpcy5zZWxlY3Rpb25IYW5kbGVzLnRvcC5zdHlsZSx0b3BIaXRBcmVhOnRoaXMuc2VsZWN0aW9uSGFu''@;'; put 'put ''ZGxlcy50b3BIaXRBcmVhLnN0eWxlLGJvdHRvbTp0aGlzLnNlbGVjdGlvbkhhbmRsZXMuYm90dG9tLnN0eWxlLGJvdHRvbUhpdEFyZWE6dGhpcy5zZWxlY3Rpb25IYW5kbGVzLmJvdHRvbUhpdEFyZWEuc3R5bGV9LEdsKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGhlaWdodDoiIi5jb25jYXQoNDAs''@;'; put 'put ''InB4Iiksd2lkdGg6IiIuY29uY2F0KDQwLCJweCIpLCJib3JkZXItcmFkaXVzIjoiIi5jb25jYXQocGFyc2VJbnQoNDAvMS41LDEwKSwicHgiKX0sZnVuY3Rpb24odWUsX2Upe2guc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMuYm90dG9tSGl0QXJlYVtfZV09dWUsaC5zZWxlY3Rpb25IYW5kbGVz''@;'; put 'put ''LnN0eWxlcy50b3BIaXRBcmVhW19lXT11ZX0pLEdsKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGhlaWdodDoiIi5jb25jYXQoMTAsInB4Iiksd2lkdGg6IiIuY29uY2F0KDEwLCJweCIpLCJib3JkZXItcmFkaXVzIjoiIi5jb25jYXQocGFyc2VJbnQoMTAvMS41LDEwKSwicHgiKSxiYWNrZ3JvdW5k''@;'; put 'put ''OiIjRjVGNUZGIixib3JkZXI6IjFweCBzb2xpZCAjNDI4NWM4In0sZnVuY3Rpb24odWUsX2Upe2guc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMuYm90dG9tW19lXT11ZSxoLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLnRvcFtfZV09dWV9KSx0aGlzLm1haW4uYXBwZW5kQ2hpbGQodGhpcy5zZWxl''@;'; put 'put ''Y3Rpb25IYW5kbGVzLnRvcCksdGhpcy5tYWluLmFwcGVuZENoaWxkKHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5ib3R0b20pLHRoaXMubWFpbi5hcHBlbmRDaGlsZCh0aGlzLnNlbGVjdGlvbkhhbmRsZXMudG9wSGl0QXJlYSksdGhpcy5tYWluLmFwcGVuZENoaWxkKHRoaXMuc2VsZWN0aW9uSGFu''@;'; put 'put ''ZGxlcy5ib3R0b21IaXRBcmVhKX19LHtrZXk6ImlzUGFydFJhbmdlIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PXRoaXMud290LnNlbGVjdGlvbnMuY3JlYXRlT3JHZXRBcmVhKCk7cmV0dXJuISgheS5jZWxsUmFuZ2V8fGg9PT15LmNlbGxSYW5nZS50by5yb3cmJnY9PT15LmNlbGxSYW5n''@;'; put 'put ''ZS50by5jb2wpfX0se2tleToidXBkYXRlTXVsdGlwbGVTZWxlY3Rpb25IYW5kbGVzUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKGgsdix5LEMsSSxaKXt2YXIgX2U9dGhpcy53b3Qud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJydGxNb2RlIik/InJpZ2h0IjoibGVmdCIsQmU9cGFyc2VJbnQodGhp''@;'; put 'put ''cy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy50b3Aud2lkdGgsMTApLE5lPXBhcnNlSW50KHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMudG9wSGl0QXJlYS53aWR0aCwxMCk7dGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy50b3AudG9wPSIiLmNvbmNhdChwYXJzZUludCh5LUJlLTEs''@;'; put 'put ''MTApLCJweCIpLHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMudG9wW19lXT0iIi5jb25jYXQocGFyc2VJbnQoQy1CZS0xLDEwKSwicHgiKSx0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLnRvcEhpdEFyZWEudG9wPSIiLmNvbmNhdChwYXJzZUludCh5LU5lLzQqMywxMCksInB4Iiks''@;'; put 'put ''dGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy50b3BIaXRBcmVhW19lXT0iIi5jb25jYXQocGFyc2VJbnQoQy1OZS80KjMsMTApLCJweCIpLHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMuYm90dG9tLnRvcD0iIi5jb25jYXQocGFyc2VJbnQoeStaLDEwKSwicHgiKSx0aGlzLnNlbGVj''@;'; put 'put ''dGlvbkhhbmRsZXMuc3R5bGVzLmJvdHRvbVtfZV09IiIuY29uY2F0KHBhcnNlSW50KEMrSSwxMCksInB4IiksdGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy5ib3R0b21IaXRBcmVhLnRvcD0iIi5jb25jYXQocGFyc2VJbnQoeStaLU5lLzQsMTApLCJweCIpLHRoaXMuc2VsZWN0aW9uSGFu''@;'; put 'put ''ZGxlcy5zdHlsZXMuYm90dG9tSGl0QXJlYVtfZV09IiIuY29uY2F0KHBhcnNlSW50KEMrSS1OZS80LDEwKSwicHgiKSx0aGlzLnNldHRpbmdzLmJvcmRlci5jb3JuZXJWaXNpYmxlJiZ0aGlzLnNldHRpbmdzLmJvcmRlci5jb3JuZXJWaXNpYmxlKCk/KHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5z''@;'; put 'put ''dHlsZXMudG9wLmRpc3BsYXk9ImJsb2NrIix0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLnRvcEhpdEFyZWEuZGlzcGxheT0iYmxvY2siLHRoaXMuaXNQYXJ0UmFuZ2UoaCx2KT8odGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy5ib3R0b20uZGlzcGxheT0ibm9uZSIsdGhpcy5zZWxl''@;'; put 'put ''Y3Rpb25IYW5kbGVzLnN0eWxlcy5ib3R0b21IaXRBcmVhLmRpc3BsYXk9Im5vbmUiKToodGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy5ib3R0b20uZGlzcGxheT0iYmxvY2siLHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMuYm90dG9tSGl0QXJlYS5kaXNwbGF5PSJibG9jayIpKToo''@;'; put 'put ''dGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy50b3AuZGlzcGxheT0ibm9uZSIsdGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy5ib3R0b20uZGlzcGxheT0ibm9uZSIsdGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy50b3BIaXRBcmVhLmRpc3BsYXk9Im5vbmUiLHRoaXMuc2VsZWN0''@;'; put 'put ''aW9uSGFuZGxlcy5zdHlsZXMuYm90dG9tSGl0QXJlYS5kaXNwbGF5PSJub25lIiksaD09PXRoaXMud290Lnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIil8fHY9PT10aGlzLndvdC53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0Iik/KHRoaXMuc2Vs''@;'; put 'put ''ZWN0aW9uSGFuZGxlcy5zdHlsZXMudG9wLnpJbmRleD0iOTk5OSIsdGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy50b3BIaXRBcmVhLnpJbmRleD0iOTk5OSIpOih0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLnRvcC56SW5kZXg9IiIsdGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxl''@;'; put 'put ''cy50b3BIaXRBcmVhLnpJbmRleD0iIil9fSx7a2V5OiJhcHBlYXIiLHZhbHVlOmZ1bmN0aW9uKGgpe2lmKCF0aGlzLmRpc2FibGVkKXtmb3IodmFyIFosdWUsX2UsQmUsTmUsS2Usdj10aGlzLndvdCx5PXYud3RUYWJsZSxDPXYucm9vdERvY3VtZW50LEk9di5yb290V2luZG93LHB0PXkuZ2V0''@;'; put 'put ''UmVuZGVyZWRSb3dzQ291bnQoKSxPdD0wO090PHB0O090Kz0xKXt2YXIgJHQ9eS5yb3dGaWx0ZXIucmVuZGVyZWRUb1NvdXJjZShPdCk7aWYoJHQ+PWhbMF0mJiR0PD1oWzJdKXtaPSR0LE5lPWhbMF07YnJlYWt9fWZvcih2YXIgZm49cHQtMTtmbj49MDtmbi09MSl7dmFyIExuPXkucm93Rmls''@;'; put 'put ''dGVyLnJlbmRlcmVkVG9Tb3VyY2UoZm4pO2lmKExuPj1oWzBdJiZMbjw9aFsyXSl7dWU9TG47YnJlYWt9fWZvcih2YXIgaXI9eS5nZXRSZW5kZXJlZENvbHVtbnNDb3VudCgpLG1yPTA7bXI8aXI7bXIrPTEpe3ZhciBTcj15LmNvbHVtbkZpbHRlci5yZW5kZXJlZFRvU291cmNlKG1yKTtpZihT''@;'; put 'put ''cj49aFsxXSYmU3I8PWhbM10pe19lPVNyLEtlPWhbMV07YnJlYWt9fWZvcih2YXIgd3I9aXItMTt3cj49MDt3ci09MSl7dmFyIFFyPXkuY29sdW1uRmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2Uod3IpO2lmKFFyPj1oWzFdJiZRcjw9aFszXSl7QmU9UXI7YnJlYWt9fWlmKHZvaWQgMD09PVp8fHZv''@;'; put 'put ''aWQgMD09PV9lKXJldHVybiB2b2lkIHRoaXMuZGlzYXBwZWFyKCk7dmFyIHlpPXkuZ2V0Q2VsbCh0aGlzLndvdC5jcmVhdGVDZWxsQ29vcmRzKFosX2UpKSxLaT1aIT09dWV8fF9lIT09QmUsU289S2k/eS5nZXRDZWxsKHRoaXMud290LmNyZWF0ZUNlbGxDb29yZHModWUsQmUpKTp5aSxQbz1q''@;'; put 'put ''dSh5aSksU2E9S2k/anUoU28pOlBvLEphPWp1KHkuVEFCTEUpLGxhPUUyKHkuVEFCTEUpLGFsPVBvLnRvcCxScz1Qby5sZWZ0LEgwPXRoaXMud290Lnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicnRsTW9kZSIpLHJvPTAsZm89MDtpZihIMCl7dmFyIElhPUUyKHlpKTtmbz1ScytJYS1TYS5sZWZ0''@;'; put 'put ''LHJvPUkuaW5uZXJXaWR0aC1Scy1JYS0oSS5pbm5lcldpZHRoLUphLmxlZnQtbGEpLTF9ZWxzZSBmbz1TYS5sZWZ0K0UyKFNvKS1Scyxybz1Scy1KYS5sZWZ0LTE7aWYodGhpcy5pc0VudGlyZUNvbHVtblNlbGVjdGVkKFosdWUpKXt2YXIgRm49dGhpcy5nZXREaW1lbnNpb25zRnJvbUhlYWRl''@;'; put 'put ''cigiY29sdW1ucyIsX2UsQmUsTmUsSmEpLFpuPW51bGw7aWYoRm4pe3ZhciBfcj1HcGUoRm4sMyk7Wm49X3JbMF0scm89X3JbMV0sZm89X3JbMl19Wm4mJih5aT1abil9dmFyIFhyPWFsLUphLnRvcC0xLGNpPVNhLnRvcCtEMShTbyktYWw7aWYodGhpcy5pc0VudGlyZVJvd1NlbGVjdGVkKF9l''@;'; put 'put ''LEJlKSl7dmFyIGMwPXRoaXMuZ2V0RGltZW5zaW9uc0Zyb21IZWFkZXIoInJvd3MiLFosdWUsS2UsSmEpLFhpPW51bGw7aWYoYzApe3ZhciBFMD1HcGUoYzAsMyk7WGk9RTBbMF0sWHI9RTBbMV0sY2k9RTBbMl19WGkmJih5aT1YaSl9dmFyIHowPU13KHlpLEkpO3BhcnNlSW50KHowLmJvcmRl''@;'; put 'put ''clRvcFdpZHRoLDEwKT4wJiYoWHIrPTEsY2k9Y2k+MD9jaS0xOjApLHBhcnNlSW50KHowW0gwPyJib3JkZXJSaWdodFdpZHRoIjoiYm9yZGVyTGVmdFdpZHRoIl0sMTApPjAmJihybys9MSxmbz1mbz4wP2ZvLTE6MCk7dmFyIGtvPUgwPyJyaWdodCI6ImxlZnQiO3RoaXMudG9wU3R5bGUudG9w''@;'; put 'put ''PSIiLmNvbmNhdChYciwicHgiKSx0aGlzLnRvcFN0eWxlW2tvXT0iIi5jb25jYXQocm8sInB4IiksdGhpcy50b3BTdHlsZS53aWR0aD0iIi5jb25jYXQoZm8sInB4IiksdGhpcy50b3BTdHlsZS5kaXNwbGF5PSJibG9jayIsdGhpcy5zdGFydFN0eWxlLnRvcD0iIi5jb25jYXQoWHIsInB4Iiks''@;'; put 'put ''dGhpcy5zdGFydFN0eWxlW2tvXT0iIi5jb25jYXQocm8sInB4IiksdGhpcy5zdGFydFN0eWxlLmhlaWdodD0iIi5jb25jYXQoY2ksInB4IiksdGhpcy5zdGFydFN0eWxlLmRpc3BsYXk9ImJsb2NrIjt2YXIgd289TWF0aC5mbG9vcih0aGlzLnNldHRpbmdzLmJvcmRlci53aWR0aC8yKTt0aGlz''@;'; put 'put ''LmJvdHRvbVN0eWxlLnRvcD0iIi5jb25jYXQoWHIrY2ktd28sInB4IiksdGhpcy5ib3R0b21TdHlsZVtrb109IiIuY29uY2F0KHJvLCJweCIpLHRoaXMuYm90dG9tU3R5bGUud2lkdGg9IiIuY29uY2F0KGZvLCJweCIpLHRoaXMuYm90dG9tU3R5bGUuZGlzcGxheT0iYmxvY2siLHRoaXMuZW5k''@;'; put 'put ''U3R5bGUudG9wPSIiLmNvbmNhdChYciwicHgiKSx0aGlzLmVuZFN0eWxlW2tvXT0iIi5jb25jYXQocm8rZm8td28sInB4IiksdGhpcy5lbmRTdHlsZS5oZWlnaHQ9IiIuY29uY2F0KGNpKzEsInB4IiksdGhpcy5lbmRTdHlsZS5kaXNwbGF5PSJibG9jayI7dmFyIFdhPXRoaXMuc2V0dGluZ3Mu''@;'; put 'put ''Ym9yZGVyLmNvcm5lclZpc2libGU7V2E9ImZ1bmN0aW9uIj09dHlwZW9mIFdhP1dhKHRoaXMuc2V0dGluZ3MubGF5ZXJMZXZlbCk6V2E7dmFyIGUyPXRoaXMud290LmdldFNldHRpbmcoIm9uTW9kaWZ5R2V0Q2VsbENvb3JkcyIsdWUsQmUpLEhhPXVlLHQyPUJlO2lmKGUyJiZBcnJheS5pc0Fy''@;'; put 'put ''cmF5KGUyKSl7dmFyIE8xPUdwZShlMiw0KTtIYT1PMVsyXSx0Mj1PMVszXX1pZihiOCgpfHwhV2F8fHRoaXMuaXNQYXJ0UmFuZ2UoSGEsdDIpKXRoaXMuY29ybmVyU3R5bGUuZGlzcGxheT0ibm9uZSI7ZWxzZXt0aGlzLmNvcm5lclN0eWxlLnRvcD0iIi5jb25jYXQoWHIrY2krdGhpcy5jb3Ju''@;'; put 'put ''ZXJDZW50ZXJQb2ludE9mZnNldC0xLCJweCIpLHRoaXMuY29ybmVyU3R5bGVba29dPSIiLmNvbmNhdChybytmbyt0aGlzLmNvcm5lckNlbnRlclBvaW50T2Zmc2V0LTEsInB4IiksdGhpcy5jb3JuZXJTdHlsZS5ib3JkZXJSaWdodFdpZHRoPXRoaXMuY29ybmVyRGVmYXVsdFN0eWxlLmJvcmRl''@;'; put 'put ''cldpZHRoLHRoaXMuY29ybmVyU3R5bGUud2lkdGg9dGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUud2lkdGgsdGhpcy5jb3JuZXJTdHlsZS5kaXNwbGF5PSJub25lIjt2YXIgUjE9aE8oeS5UQUJMRSksenU9UjE9PT1JO2lmKHp1JiYoUjE9Qy5kb2N1bWVudEVsZW1lbnQpLEJlPT09dGhpcy53b3Qu''@;'; put 'put ''Z2V0U2V0dGluZygidG90YWxDb2x1bW5zIiktMSl7dmFyIFBjPXp1P1NvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ6U28ub2Zmc2V0TGVmdDsoSDA/UGMtcGFyc2VJbnQodGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUud2lkdGgsMTApLzI8MDpQYytFMihTbykrcGFyc2VJbnQodGhpcy5j''@;'; put 'put ''b3JuZXJEZWZhdWx0U3R5bGUud2lkdGgsMTApLzI+PU5aKFIxKSkmJih0aGlzLmNvcm5lclN0eWxlW2tvXT0iIi5jb25jYXQoTWF0aC5mbG9vcihybytmbyt0aGlzLmNvcm5lckNlbnRlclBvaW50T2Zmc2V0LXBhcnNlSW50KHRoaXMuY29ybmVyRGVmYXVsdFN0eWxlLndpZHRoLDEwKS8yKSwi''@;'; put 'put ''cHgiKSx0aGlzLmNvcm5lclN0eWxlW0gwPyJib3JkZXJMZWZ0V2lkdGgiOiJib3JkZXJSaWdodFdpZHRoIl09MCl9dWU9PT10aGlzLndvdC5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKS0xJiYoenU/U28uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wOlNvLm9mZnNldFRvcCkrRDEoU28pK3Bh''@;'; put 'put ''cnNlSW50KHRoaXMuY29ybmVyRGVmYXVsdFN0eWxlLmhlaWdodCwxMCkvMj49RXYoUjEpJiYodGhpcy5jb3JuZXJTdHlsZS50b3A9IiIuY29uY2F0KE1hdGguZmxvb3IoWHIrY2krdGhpcy5jb3JuZXJDZW50ZXJQb2ludE9mZnNldC1wYXJzZUludCh0aGlzLmNvcm5lckRlZmF1bHRTdHlsZS5o''@;'; put 'put ''ZWlnaHQsMTApLzIpLCJweCIpLHRoaXMuY29ybmVyU3R5bGUuYm9yZGVyQm90dG9tV2lkdGg9MCksdGhpcy5jb3JuZXJTdHlsZS5kaXNwbGF5PSJibG9jayJ9YjgoKSYmdGhpcy51cGRhdGVNdWx0aXBsZVNlbGVjdGlvbkhhbmRsZXNQb3NpdGlvbih1ZSxCZSxYcixybyxmbyxjaSl9fX0se2tl''@;'; put 'put ''eToiaXNFbnRpcmVDb2x1bW5TZWxlY3RlZCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtyZXR1cm4gaD09PXRoaXMud290Lnd0VGFibGUuZ2V0Rmlyc3RSZW5kZXJlZFJvdygpJiZ2PT09dGhpcy53b3Qud3RUYWJsZS5nZXRMYXN0UmVuZGVyZWRSb3coKX19LHtrZXk6ImlzRW50aXJlUm93U2VsZWN0''@;'; put 'put ''ZWQiLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuIGg9PT10aGlzLndvdC53dFRhYmxlLmdldEZpcnN0UmVuZGVyZWRDb2x1bW4oKSYmdj09PXRoaXMud290Lnd0VGFibGUuZ2V0TGFzdFJlbmRlcmVkQ29sdW1uKCl9fSx7a2V5OiJnZXREaW1lbnNpb25zRnJvbUhlYWRlciIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oaCx2LHksQyxJKXt2YXIgWj10aGlzLndvdC53dFRhYmxlLHVlPVoud3RSb290RWxlbWVudC5wYXJlbnROb2RlLF9lPW51bGwsQmU9bnVsbCxOZT1udWxsLEtlPW51bGwscHQ9bnVsbCxPdD1udWxsLCR0PW51bGwsZm49bnVsbDtzd2l0Y2goaCl7Y2FzZSJyb3dzIjpfZT1mdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiBaLmdldFJvd0hlYWRlci5hcHBseShaLGFyZ3VtZW50cyl9LEJlPWZ1bmN0aW9uKCl7cmV0dXJuIEQxLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfSxOZT0iaHRfX3NlbGVjdGlvbi0tcm93cyIsT3Q9InRvcCI7YnJlYWs7Y2FzZSJjb2x1bW5zIjpfZT1mdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBaLmdldENvbHVtbkhlYWRlci5hcHBseShaLGFyZ3VtZW50cyl9LEJlPWZ1bmN0aW9uKCl7cmV0dXJuIEUyLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfSxOZT0iaHRfX3NlbGVjdGlvbi0tY29sdW1ucyIsT3Q9ImxlZnQifWlmKHVlLmNsYXNzTGlzdC5jb250YWlucyhOZSkpe3ZhciBM''@;'; put 'put ''bj10aGlzLndvdC5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIikubGVuZ3RoO2lmKCR0PV9lKHYsTG4tQyksZm49X2UoeSxMbi1DKSwhJHR8fCFmbilyZXR1cm4hMTt2YXIgaXI9anUoJHQpLG1yPWp1KGZuKTtyZXR1cm4gJHQmJmZuJiYoS2U9aXJbT3RdLUlbT3RdLTEscHQ9bXJbT3RdK0Jl''@;'; put 'put ''KGZuKS1pcltPdF0pLFskdCxLZSxwdF19cmV0dXJuITF9fSx7a2V5OiJjaGFuZ2VCb3JkZXJTdHlsZSIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT10aGlzW2hdLnN0eWxlLEM9dltoXTshQ3x8Qy5oaWRlP08wKHRoaXNbaF0sImhpZGRlbiIpOih0bCh0aGlzW2hdLCJoaWRkZW4iKSYmcGwo''@;'; put 'put ''dGhpc1toXSwiaGlkZGVuIikseS5iYWNrZ3JvdW5kQ29sb3I9Qy5jb2xvciwoInRvcCI9PT1ofHwiYm90dG9tIj09PWgpJiYoeS5oZWlnaHQ9IiIuY29uY2F0KEMud2lkdGgsInB4IikpLCgic3RhcnQiPT09aHx8ImVuZCI9PT1oKSYmKHkud2lkdGg9IiIuY29uY2F0KEMud2lkdGgsInB4Iikp''@;'; put 'put ''KX19LHtrZXk6ImNoYW5nZUJvcmRlclRvRGVmYXVsdFN0eWxlIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgeT10aGlzW2hdLnN0eWxlO3kuYmFja2dyb3VuZENvbG9yPSIjMDAwIix5LndpZHRoPSIiLmNvbmNhdCgxLCJweCIpLHkuaGVpZ2h0PSIiLmNvbmNhdCgxLCJweCIpfX0se2tleToidG9n''@;'; put 'put ''Z2xlSGlkZGVuQ2xhc3MiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dGhpcy5jaGFuZ2VCb3JkZXJUb0RlZmF1bHRTdHlsZShoKSx2P08wKHRoaXNbaF0sImhpZGRlbiIpOnBsKHRoaXNbaF0sImhpZGRlbiIpfX0se2tleToiZGlzYXBwZWFyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudG9wU3R5bGUu''@;'; put 'put ''ZGlzcGxheT0ibm9uZSIsdGhpcy5ib3R0b21TdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLnN0YXJ0U3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5lbmRTdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLmNvcm5lclN0eWxlLmRpc3BsYXk9Im5vbmUiLGI4KCkmJih0aGlzLnNlbGVjdGlvbkhhbmRs''@;'; put 'put ''ZXMuc3R5bGVzLnRvcC5kaXNwbGF5PSJub25lIix0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLmJvdHRvbS5kaXNwbGF5PSJub25lIil9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZXZlbnRNYW5hZ2VyLmRlc3Ryb3lXaXRoT3duRXZlbnRzT25seSgpLHRoaXMu''@;'; put 'put ''bWFpbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMubWFpbil9fV0pLGR9KCk7Y29uc3QgS1hlPVhYZTtmdW5jdGlvbiBQa2UoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1''@;'; put 'put ''cm4gdn1mdW5jdGlvbiBXcGUoZCl7cmV0dXJuKFdwZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIEZrZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29u''@;'; put 'put ''ZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBvS2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCl7KGZ1bmN0aW9uIHJLZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLnNldHRpbmdzPWcsdGhpcy5jZWxsUmFuZ2U9aHx8bnVsbCx0aGlzLmluc3RhbmNlQm9yZGVycz17fSx0aGlzLmNsYXNzTmFtZXM9W3RoaXMuc2V0dGluZ3MuY2xhc3NOYW1lXSx0aGlzLmNs''@;'; put 'put ''YXNzTmFtZUdlbmVyYXRvcj10aGlzLmxpbmVhckNsYXNzTmFtZUdlbmVyYXRvcih0aGlzLnNldHRpbmdzLmNsYXNzTmFtZSx0aGlzLnNldHRpbmdzLmxheWVyTGV2ZWwpfXJldHVybiBmdW5jdGlvbiBpS2UoZCxnLGgpe2cmJkZrZShkLnByb3RvdHlwZSxnKSxoJiZGa2UoZCxoKSxPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiZ2V0Qm9yZGVyIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5pbnN0YW5jZUJvcmRlcnNbaC5ndWlkXXx8KHRoaXMuaW5zdGFuY2VCb3JkZXJzW2guZ3VpZF09bmV3IEtYZShoLHRoaXMu''@;'; put 'put ''c2V0dGluZ3MpKSx0aGlzLmluc3RhbmNlQm9yZGVyc1toLmd1aWRdfX0se2tleToiaXNFbXB0eSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09PXRoaXMuY2VsbFJhbmdlfX0se2tleToiYWRkIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/dGhpcy5jZWxs''@;'; put 'put ''UmFuZ2U9dGhpcy5zZXR0aW5ncy5jcmVhdGVDZWxsUmFuZ2UoaCk6dGhpcy5jZWxsUmFuZ2UuZXhwYW5kKGgpLHRoaXN9fSx7a2V5OiJyZXBsYWNlIix2YWx1ZTpmdW5jdGlvbihoLHYpe2lmKCF0aGlzLmlzRW1wdHkoKSl7aWYodGhpcy5jZWxsUmFuZ2UuZnJvbS5pc0VxdWFsKGgpKXJldHVy''@;'; put 'put ''biB0aGlzLmNlbGxSYW5nZS5mcm9tPXYsITA7aWYodGhpcy5jZWxsUmFuZ2UudG8uaXNFcXVhbChoKSlyZXR1cm4gdGhpcy5jZWxsUmFuZ2UudG89diwhMH1yZXR1cm4hMX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNlbGxSYW5nZT1udWxsLHRoaXN9fSx7''@;'; put 'put ''a2V5OiJnZXRDb3JuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuY2VsbFJhbmdlLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKSx2PXRoaXMuY2VsbFJhbmdlLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCk7cmV0dXJuW2gucm93LGguY29sLHYucm93LHYuY29sXX19LHtrZXk6ImFk''@;'; put 'put ''ZENsYXNzQXRDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKGgsdix5LEMpe3ZhciBJPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdJiZhcmd1bWVudHNbNF0sWj1oLnd0VGFibGUuZ2V0Q2VsbCh0aGlzLnNldHRpbmdzLmNyZWF0ZUNlbGxDb29yZHModix5KSk7aWYoIm9i''@;'; put 'put ''amVjdCI9PT1XcGUoWikpe3ZhciB1ZT1DO0kmJih1ZT10aGlzLmNsYXNzTmFtZUdlbmVyYXRvcihaKSx0aGlzLmNsYXNzTmFtZXMuaW5jbHVkZXModWUpfHx0aGlzLmNsYXNzTmFtZXMucHVzaCh1ZSkpLE8wKFosdWUpfXJldHVybiB0aGlzfX0se2tleToibGluZWFyQ2xhc3NOYW1lR2VuZXJh''@;'; put 'put ''dG9yIix2YWx1ZTpmdW5jdGlvbihoLHYpe3JldHVybiBmdW5jdGlvbiB5KEMpe3ZhciBJPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTotMTtpZigwPT09dnx8MD09PUkpcmV0dXJuIGg7dmFyIFo9ST49MD9JOnYsdWU9aCxfZT0wPT0oWi09''@;'; put 'put ''MSk/aDoiIi5jb25jYXQoaCwiLSIpLmNvbmNhdChaKTtpZih0bChDLF9lKSl7dmFyIEJlPVorMTt1ZT0iIi5jb25jYXQoaCwiLSIpLmNvbmNhdChCZSl9ZWxzZSB1ZT15KEMsWik7cmV0dXJuIHVlfX19LHtrZXk6ImRyYXciLHZhbHVlOmZ1bmN0aW9uKGgpe2lmKHRoaXMuaXNFbXB0eSgpKXRo''@;'; put 'put ''aXMuc2V0dGluZ3MuYm9yZGVyJiZ0aGlzLmdldEJvcmRlcihoKS5kaXNhcHBlYXIoKTtlbHNle3ZhciB2PWgud3RUYWJsZS5nZXRSZW5kZXJlZFJvd3NDb3VudCgpLHk9aC53dFRhYmxlLmdldFJlbmRlcmVkQ29sdW1uc0NvdW50KCksQz10aGlzLmdldENvcm5lcnMoKSxJPWZ1bmN0aW9uICRY''@;'; put 'put ''ZShkLGcpe3JldHVybiBmdW5jdGlvbiBuS2UoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIHRLZShkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07''@;'; put 'put ''aWYobnVsbCE9aCl7dmFyIEksWix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKHVlKXtDPSEwLFo9dWV9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgu''@;'; put 'put ''cmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBafX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIGVLZShkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gUGtlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNl''@;'; put 'put ''KDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkk''@;'; put 'put ''Ly50ZXN0KGgpKXJldHVybiBQa2UoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIHFYZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVj''@;'; put 'put ''dHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KEMsNCksWj1JWzBdLHVlPUlbMV0sX2U9SVsyXSxCZT1JWzNdLE5lPXRoaXMuc2V0dGluZ3MsS2U9TmUuaGlnaGxpZ2h0SGVhZGVyQ2xhc3NOYW1lLHB0PU5lLmhpZ2hsaWdodENvbHVtbkNsYXNzTmFtZSxP''@;'; put 'put ''dD1OZS5oaWdobGlnaHRSb3dDbGFzc05hbWUsJHQ9TmUuaGlnaGxpZ2h0T25seUNsb3Nlc3RIZWFkZXIsZm49TmUuc2VsZWN0aW9uVHlwZSxMbj12b2lkIDA9PT1mbnx8WyJhY3RpdmUtaGVhZGVyIiwiaGVhZGVyIl0uaW5jbHVkZXMoZm4pO2lmKExuJiZudWxsIT09dWUmJm51bGwhPT1CZSlm''@;'; put 'put ''b3IodmFyIGlyPTAsbXI9MDttcjx5O21yKz0xKXt2YXIgU3I9aC53dFRhYmxlLmNvbHVtbkZpbHRlci5yZW5kZXJlZFRvU291cmNlKG1yKTtpZihTcj49dWUmJlNyPD1CZSl7dmFyIHdyPWgud3RUYWJsZS5nZXRDb2x1bW5IZWFkZXJzKFNyKSxRcj13ci5sZW5ndGgtMTskdCYmd3IubGVuZ3Ro''@;'; put 'put ''PjEmJih3cj1bd3JbUXJdXSk7Zm9yKHZhciB5aT0wO3lpPHdyLmxlbmd0aDt5aSs9MSl7dmFyIEtpPVtdLFNvPXdyW3lpXTtLZSYmS2kucHVzaChLZSkscHQmJktpLnB1c2gocHQpO3ZhciBQbz1oLmdldFNldHRpbmcoIm9uQmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyIixTcix5aT0k''@;'; put 'put ''dD9Rcjp5aSx7c2VsZWN0aW9uVHlwZTpmbixjb2x1bW5DdXJzb3I6aXIsc2VsZWN0aW9uV2lkdGg6QmUtdWUrMSxjbGFzc05hbWVzOktpfSk7UG8hPT1TciYmKFNvPWgud3RUYWJsZS5nZXRDb2x1bW5IZWFkZXIoUG8seWkpKSxPMChTbyxLaSl9aXIrPTF9fWlmKG51bGwhPT1aJiZudWxsIT09''@;'; put 'put ''X2UpZm9yKHZhciBTYT0wLEphPTA7SmE8djtKYSs9MSl7dmFyIGxhPWgud3RUYWJsZS5yb3dGaWx0ZXIucmVuZGVyZWRUb1NvdXJjZShKYSk7aWYoTG4mJmxhPj1aJiZsYTw9X2Upe3ZhciBhbD1oLnd0VGFibGUuZ2V0Um93SGVhZGVycyhsYSksUnM9YWwubGVuZ3RoLTE7JHQmJmFsLmxlbmd0''@;'; put 'put ''aD4xJiYoYWw9W2FsW1JzXV0pO2Zvcih2YXIgSDA9MDtIMDxhbC5sZW5ndGg7SDArPTEpe3ZhciBybz1bXSxmbz1hbFtIMF07S2UmJnJvLnB1c2goS2UpLE90JiZyby5wdXNoKE90KTt2YXIgSWE9aC5nZXRTZXR0aW5nKCJvbkJlZm9yZUhpZ2hsaWdodGluZ1Jvd0hlYWRlciIsbGEsSDA9JHQ/''@;'; put 'put ''UnM6SDAse3NlbGVjdGlvblR5cGU6Zm4scm93Q3Vyc29yOlNhLHNlbGVjdGlvbkhlaWdodDpfZS1aKzEsY2xhc3NOYW1lczpyb30pO0lhIT09bGEmJihmbz1oLnd0VGFibGUuZ2V0Um93SGVhZGVyKElhLEgwKSksTzAoZm8scm8pfVNhKz0xfWlmKG51bGwhPT11ZSYmbnVsbCE9PUJlKWZvcih2''@;'; put 'put ''YXIgWGw9MDtYbDx5O1hsKz0xKXt2YXIgRm49aC53dFRhYmxlLmNvbHVtbkZpbHRlci5yZW5kZXJlZFRvU291cmNlKFhsKTtsYT49WiYmbGE8PV9lJiZGbj49dWUmJkZuPD1CZT90aGlzLnNldHRpbmdzLmNsYXNzTmFtZSYmdGhpcy5hZGRDbGFzc0F0Q29vcmRzKGgsbGEsRm4sdGhpcy5zZXR0''@;'; put 'put ''aW5ncy5jbGFzc05hbWUsdGhpcy5zZXR0aW5ncy5tYXJrSW50ZXJzZWN0aW9ucyk6bGE+PVomJmxhPD1fZT9PdCYmdGhpcy5hZGRDbGFzc0F0Q29vcmRzKGgsbGEsRm4sT3QpOkZuPj11ZSYmRm48PUJlJiZwdCYmdGhpcy5hZGRDbGFzc0F0Q29vcmRzKGgsbGEsRm4scHQpO3ZhciBabj1oLmdl''@;'; put 'put ''dFNldHRpbmcoIm9uQWZ0ZXJEcmF3U2VsZWN0aW9uIixsYSxGbix0aGlzLnNldHRpbmdzLmxheWVyTGV2ZWwpOyJzdHJpbmciPT10eXBlb2YgWm4mJnRoaXMuYWRkQ2xhc3NBdENvb3JkcyhoLGxhLEZuLFpuKX19aC5nZXRTZXR0aW5nKCJvbkJlZm9yZURyYXdCb3JkZXJzIixDLHRoaXMuc2V0''@;'; put 'put ''dGluZ3MuY2xhc3NOYW1lKSx0aGlzLnNldHRpbmdzLmJvcmRlciYmdGhpcy5nZXRCb3JkZXIoaCkuYXBwZWFyKEMpfX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7T2JqZWN0LnZhbHVlcyh0aGlzLmluc3RhbmNlQm9yZGVycykuZm9yRWFjaChmdW5jdGlvbihoKXtyZXR1cm4g''@;'; put 'put ''aC5kZXN0cm95KCl9KX19XSksZH0oKTtmdW5jdGlvbiBZcGUoZCl7cmV0dXJuKFlwZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIEhrZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVu''@;'; put 'put ''dW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGF0ZSgpe3JldHVybiBhdGU9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZs''@;'; put 'put ''ZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PXVLZShnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sYXRlLmFwcGx5KHRo''@;'; put 'put ''aXMsYXJndW1lbnRzKX1mdW5jdGlvbiB1S2UoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPXlPKGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIFVwZShkLGcpe3JldHVybihVcGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVj''@;'; put 'put ''dC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBoS2UoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1ZcGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIE5rZShkKX1mdW5jdGlvbiBOa2UoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlh''@;'; put 'put ''bGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIHlPKGQpe3JldHVybih5Tz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQ''@;'; put 'put ''cm90b3R5cGVPZihoKX0pKGQpfXZhciBnS2U9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIGNLZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIp''@;'; put 'put ''O2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZVcGUoZCxnKX0oaCxkKTt2''@;'; put 'put ''YXIgZz1mdW5jdGlvbiBmS2UoZCl7dmFyIGc9ZnVuY3Rpb24gZEtlKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3Ry''@;'; put 'put ''eXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9eU8oZCk7aWYoZyl7dmFyIEM9eU8odGhpcykuY29u''@;'; put 'put ''c3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGhLZSh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2LHkpe3ZhciBDO3JldHVybiBmdW5jdGlvbiBsS2UoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBn''@;'; put 'put ''KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSxmdW5jdGlvbiBwS2UoZCxnLGgpe2cgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRh''@;'; put 'put ''YmxlOiEwfSk6ZFtnXT1ofShOa2UoQz1nLmNhbGwodGhpcyx2LG51bGwpKSwidmlzdWFsQ2VsbFJhbmdlIixudWxsKSxDLnZpc3VhbENlbGxSYW5nZT15fHxudWxsLEMuY29tbWl0KCksQ31yZXR1cm4gZnVuY3Rpb24gc0tlKGQsZyxoKXtnJiZIa2UoZC5wcm90b3R5cGUsZyksaCYmSGtlKGQs''@;'; put 'put ''aCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImFkZCIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIG51bGw9PT10aGlzLnZpc3VhbENlbGxSYW5nZT90aGlzLnZpc3VhbENlbGxSYW5nZT10aGlzLnNldHRpbmdzLmNyZWF0ZUNl''@;'; put 'put ''bGxSYW5nZSh5KTp0aGlzLnZpc3VhbENlbGxSYW5nZS5leHBhbmQoeSksdGhpc319LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZpc3VhbENlbGxSYW5nZT1udWxsLGF0ZSh5TyhoLnByb3RvdHlwZSksImNsZWFyIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToi''@;'; put 'put ''dHJpbVRvVmlzaWJsZUNlbGxzUmFuZ2VPbmx5Iix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz15LmZyb20sST15LnRvLFo9dGhpcy5nZXROZWFyZXN0Tm90SGlkZGVuQ29vcmRzKEMsMSksdWU9dGhpcy5nZXROZWFyZXN0Tm90SGlkZGVuQ29vcmRzKEksLTEpO2lmKG51bGw9PT1afHxudWxsPT09''@;'; put 'put ''dWUpcmV0dXJuIG51bGw7aWYoWi5yb3c+dWUucm93fHxaLmNvbD51ZS5jb2wpe2lmKCJoZWFkZXIiIT09dGhpcy5zZXR0aW5ncy50eXBlJiYiYWN0aXZlLWhlYWRlciIhPT10aGlzLnNldHRpbmdzLnR5cGUpcmV0dXJuIG51bGw7Wj1DLHVlPUl9cmV0dXJuIHRoaXMuc2V0dGluZ3MuY3JlYXRl''@;'; put 'put ''Q2VsbFJhbmdlKFosWix1ZSl9fSx7a2V5OiJnZXROZWFyZXN0Tm90SGlkZGVuQ29vcmRzIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpDLFo9dGhpcy5nZXROZWFyZXN0Tm90SGlkZGVuSW5k''@;'; put 'put ''ZXgodGhpcy5zZXR0aW5ncy5yb3dJbmRleE1hcHBlcigpLHkucm93LEMpO2lmKG51bGw9PT1aKXJldHVybiBudWxsO3ZhciB1ZT10aGlzLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCh0aGlzLnNldHRpbmdzLmNvbHVtbkluZGV4TWFwcGVyKCkseS5jb2wsSSk7cmV0dXJuIG51bGw9PT11ZT9u''@;'; put 'put ''dWxsOnRoaXMuc2V0dGluZ3MuY3JlYXRlQ2VsbENvb3JkcyhaLHVlKX19LHtrZXk6ImdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe2lmKEM8MClyZXR1cm4gQzt2YXIgWj15LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChDLEkpO3JldHVybiJoZWFkZXIi''@;'; put 'put ''IT09dGhpcy5zZXR0aW5ncy50eXBlJiYiYWN0aXZlLWhlYWRlciIhPT10aGlzLnNldHRpbmdzLnR5cGV8fG51bGwhPT1aP1o6LTF9fSx7a2V5OiJjb21taXQiLHZhbHVlOmZ1bmN0aW9uKCl7aWYobnVsbD09PXRoaXMudmlzdWFsQ2VsbFJhbmdlKXJldHVybiB0aGlzO3ZhciB5PXRoaXMudHJp''@;'; put 'put ''bVRvVmlzaWJsZUNlbGxzUmFuZ2VPbmx5KHRoaXMudmlzdWFsQ2VsbFJhbmdlKTtyZXR1cm4gdGhpcy5jZWxsUmFuZ2U9bnVsbD09PXk/bnVsbDp0aGlzLmNyZWF0ZVJlbmRlcmFibGVDZWxsUmFuZ2UoeS5mcm9tLHkudG8pLHRoaXN9fSx7a2V5OiJzeW5jV2l0aCIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''eSl7dmFyIEM9Ik4tUyI9PT15LmdldFZlcnRpY2FsRGlyZWN0aW9uKCk/MTotMSxJPSJXLUUiPT09eS5nZXRIb3Jpem9udGFsRGlyZWN0aW9uKCk/MTotMSxaPXRoaXMuZ2V0TmVhcmVzdE5vdEhpZGRlbkNvb3Jkcyh5LmZyb20uY2xvbmUoKS5ub3JtYWxpemUoKSxDLEkpO2lmKG51bGwhPT1a''@;'; put 'put ''JiZ5Lm92ZXJsYXBzKFopKXtpZihudWxsPT09dGhpcy5jZWxsUmFuZ2Upe3ZhciB1ZT10aGlzLnNldHRpbmdzLnZpc3VhbFRvUmVuZGVyYWJsZUNvb3JkcyhaKTt0aGlzLmNlbGxSYW5nZT10aGlzLnNldHRpbmdzLmNyZWF0ZUNlbGxSYW5nZSh1ZSl9cmV0dXJuIHkuc2V0SGlnaGxpZ2h0KFop''@;'; put 'put ''LHRoaXN9cmV0dXJuIHkuc2V0SGlnaGxpZ2h0KHkuZnJvbSksdGhpc319LHtrZXk6ImdldENvcm5lcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5jZWxsUmFuZ2UsQz15LmZyb20sST15LnRvLFo9bnVsbD09PUMucm93fHxudWxsPT09SS5yb3csdWU9bnVsbD09PUMuY29sfHxudWxs''@;'; put 'put ''PT09SS5jb2wsX2U9dGhpcy5zZXR0aW5ncy5jcmVhdGVDZWxsQ29vcmRzKFo/bnVsbDpNYXRoLm1pbihDLnJvdyxJLnJvdyksdWU/bnVsbDpNYXRoLm1pbihDLmNvbCxJLmNvbCkpLEJlPXRoaXMuc2V0dGluZ3MuY3JlYXRlQ2VsbENvb3JkcyhaP251bGw6TWF0aC5tYXgoQy5yb3csSS5yb3cp''@;'; put 'put ''LHVlP251bGw6TWF0aC5tYXgoQy5jb2wsSS5jb2wpKTtyZXR1cm5bX2Uucm93LF9lLmNvbCxCZS5yb3csQmUuY29sXX19LHtrZXk6ImdldFZpc3VhbENvcm5lcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5zZXR0aW5ncy5yZW5kZXJhYmxlVG9WaXN1YWxDb29yZHModGhpcy5jZWxs''@;'; put 'put ''UmFuZ2UuZ2V0VG9wU3RhcnRDb3JuZXIoKSksQz10aGlzLnNldHRpbmdzLnJlbmRlcmFibGVUb1Zpc3VhbENvb3Jkcyh0aGlzLmNlbGxSYW5nZS5nZXRCb3R0b21FbmRDb3JuZXIoKSk7cmV0dXJuW3kucm93LHkuY29sLEMucm93LEMuY29sXX19LHtrZXk6ImNyZWF0ZVJlbmRlcmFibGVDZWxs''@;'; put 'put ''UmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9dGhpcy5zZXR0aW5ncy52aXN1YWxUb1JlbmRlcmFibGVDb29yZHMoeSksWj10aGlzLnNldHRpbmdzLnZpc3VhbFRvUmVuZGVyYWJsZUNvb3JkcyhDKTtyZXR1cm4gdGhpcy5zZXR0aW5ncy5jcmVhdGVDZWxsUmFuZ2UoSSxJLFopfX1d''@;'; put 'put ''KSxofShvS2UpO2NvbnN0IHdPPWdLZTt2YXIgbUtlPVsiYWN0aXZlSGVhZGVyQ2xhc3NOYW1lIl07ZnVuY3Rpb24gVmtlKGQsZyl7dmFyIGg9T2JqZWN0LmtleXMoZCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhk''@;'; put 'put ''KTtnJiYodj12LmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLHkpLmVudW1lcmFibGV9KSksaC5wdXNoLmFwcGx5KGgsdil9cmV0dXJuIGh9ZnVuY3Rpb24gamtlKGQpe2Zvcih2YXIgZz0xO2c8YXJndW1lbnRzLmxlbmd0aDtnKysp''@;'; put 'put ''e3ZhciBoPW51bGwhPWFyZ3VtZW50c1tnXT9hcmd1bWVudHNbZ106e307ZyUyP1ZrZShPYmplY3QoaCksITApLmZvckVhY2goZnVuY3Rpb24odil7dktlKGQsdixoW3ZdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQsT2JqZWN0''@;'; put 'put ''LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoaCkpOlZrZShPYmplY3QoaCkpLmZvckVhY2goZnVuY3Rpb24odil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGgsdikpfSl9cmV0dXJuIGR9ZnVuY3Rpb24gdktlKGQsZyxoKXtyZXR1''@;'; put 'put ''cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgsZH12YXIgX0tlPVsibGF5ZXJMZXZlbCIsImFyZWFDb3JuZXJWaXNpYmxlIl07ZnVuY3Rpb24gWmtlKGQsZyl7dmFyIGg9''@;'; put 'put ''T2JqZWN0LmtleXMoZCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkKTtnJiYodj12LmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLHkpLmVudW1lcmFi''@;'; put 'put ''bGV9KSksaC5wdXNoLmFwcGx5KGgsdil9cmV0dXJuIGh9ZnVuY3Rpb24gemtlKGQpe2Zvcih2YXIgZz0xO2c8YXJndW1lbnRzLmxlbmd0aDtnKyspe3ZhciBoPW51bGwhPWFyZ3VtZW50c1tnXT9hcmd1bWVudHNbZ106e307ZyUyP1prZShPYmplY3QoaCksITApLmZvckVhY2goZnVuY3Rpb24o''@;'; put 'put ''dil7Q0tlKGQsdixoW3ZdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoaCkpOlprZShPYmplY3QoaCkpLmZvckVhY2goZnVuY3Rpb24odil7T2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGQsdixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGgsdikpfSl9cmV0dXJuIGR9ZnVuY3Rpb24gQ0tlKGQsZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFi''@;'; put 'put ''bGU6ITB9KTpkW2ddPWgsZH12YXIgeEtlPVsiY2VsbENvcm5lclZpc2libGUiXTtmdW5jdGlvbiBHa2UoZCxnKXt2YXIgaD1PYmplY3Qua2V5cyhkKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgdj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGQpO2cmJih2PXYu''@;'; put 'put ''ZmlsdGVyKGZ1bmN0aW9uKHkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQseSkuZW51bWVyYWJsZX0pKSxoLnB1c2guYXBwbHkoaCx2KX1yZXR1cm4gaH1mdW5jdGlvbiBXa2UoZCl7Zm9yKHZhciBnPTE7Zzxhcmd1bWVudHMubGVuZ3RoO2crKyl7dmFyIGg9bnVs''@;'; put 'put ''bCE9YXJndW1lbnRzW2ddP2FyZ3VtZW50c1tnXTp7fTtnJTI/R2tlKE9iamVjdChoKSwhMCkuZm9yRWFjaChmdW5jdGlvbih2KXtUS2UoZCx2LGhbdl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCxPYmplY3QuZ2V0T3duUHJv''@;'; put 'put ''cGVydHlEZXNjcmlwdG9ycyhoKSk6R2tlKE9iamVjdChoKSkuZm9yRWFjaChmdW5jdGlvbih2KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaCx2KSl9KX1yZXR1cm4gZH1mdW5jdGlvbiBUS2UoZCxnLGgpe3JldHVybiBnIGluIGQ/''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfXZhciBSS2U9WyJib3JkZXIiLCJ2aXN1YWxDZWxsUmFuZ2UiXTtmdW5jdGlvbiBZa2UoZCxnKXt2YXIgaD1PYmplY3Qua2V5cyhkKTtp''@;'; put 'put ''ZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgdj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGQpO2cmJih2PXYuZmlsdGVyKGZ1bmN0aW9uKHkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQseSkuZW51bWVyYWJsZX0pKSxoLnB1c2guYXBw''@;'; put 'put ''bHkoaCx2KX1yZXR1cm4gaH1mdW5jdGlvbiBRcGUoZCl7Zm9yKHZhciBnPTE7Zzxhcmd1bWVudHMubGVuZ3RoO2crKyl7dmFyIGg9bnVsbCE9YXJndW1lbnRzW2ddP2FyZ3VtZW50c1tnXTp7fTtnJTI/WWtlKE9iamVjdChoKSwhMCkuZm9yRWFjaChmdW5jdGlvbih2KXtCS2UoZCx2LGhbdl0p''@;'; put 'put ''fSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhoKSk6WWtlKE9iamVjdChoKSkuZm9yRWFjaChmdW5jdGlvbih2KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LE9iamVj''@;'; put 'put ''dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaCx2KSl9KX1yZXR1cm4gZH1mdW5jdGlvbiBCS2UoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxk''@;'; put 'put ''fWZ1bmN0aW9uIFVrZShkLGcpe3ZhciBoPU9iamVjdC5rZXlzKGQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciB2PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZCk7ZyYmKHY9di5maWx0ZXIoZnVuY3Rpb24oeSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0''@;'; put 'put ''eURlc2NyaXB0b3IoZCx5KS5lbnVtZXJhYmxlfSkpLGgucHVzaC5hcHBseShoLHYpfXJldHVybiBofWZ1bmN0aW9uIFFrZShkKXtmb3IodmFyIGc9MTtnPGFyZ3VtZW50cy5sZW5ndGg7ZysrKXt2YXIgaD1udWxsIT1hcmd1bWVudHNbZ10/YXJndW1lbnRzW2ddOnt9O2clMj9Va2UoT2JqZWN0''@;'; put 'put ''KGgpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe1ZLZShkLHYsaFt2XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGgpKTpVa2UoT2JqZWN0KGgpKS5mb3JFYWNoKGZ1''@;'; put 'put ''bmN0aW9uKHYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihoLHYpKX0pfXJldHVybiBkfWZ1bmN0aW9uIFZLZShkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6''@;'; put 'put ''ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9TCgzMzQ3MCk7dmFyIHpLZT1bImhlYWRlckNsYXNzTmFtZSIsInJvd0NsYXNzTmFtZSIsImNvbHVtbkNsYXNzTmFtZSJdO2Z1bmN0aW9uIEprZShkLGcpe3ZhciBoPU9iamVjdC5rZXlzKGQpO2lmKE9iamVjdC5nZXRP''@;'; put 'put ''d25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciB2PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZCk7ZyYmKHY9di5maWx0ZXIoZnVuY3Rpb24oeSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCx5KS5lbnVtZXJhYmxlfSkpLGgucHVzaC5hcHBseShoLHYpfXJldHVy''@;'; put 'put ''biBofWZ1bmN0aW9uIFhrZShkKXtmb3IodmFyIGc9MTtnPGFyZ3VtZW50cy5sZW5ndGg7ZysrKXt2YXIgaD1udWxsIT1hcmd1bWVudHNbZ10/YXJndW1lbnRzW2ddOnt9O2clMj9Ka2UoT2JqZWN0KGgpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe0dLZShkLHYsaFt2XSl9KTpPYmplY3QuZ2V0''@;'; put 'put ''T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGgpKTpKa2UoT2JqZWN0KGgpKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYsT2JqZWN0LmdldE93blByb3Bl''@;'; put 'put ''cnR5RGVzY3JpcHRvcihoLHYpKX0pfXJldHVybiBkfWZ1bmN0aW9uIEdLZShkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9ZnVuY3Rpb24gS2tl''@;'; put 'put ''KGQsZyl7dmFyIGg9T2JqZWN0LmtleXMoZCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkKTtnJiYodj12LmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihk''@;'; put 'put ''LHkpLmVudW1lcmFibGV9KSksaC5wdXNoLmFwcGx5KGgsdil9cmV0dXJuIGh9ZnVuY3Rpb24gWEtlKGQsZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgs''@;'; put 'put ''ZH12YXIgJGtlPUxwKCJoaWdobGlnaHQvdHlwZXMiKSxiTz0ka2UucmVnaXN0ZXIsS0tlPSRrZS5nZXRJdGVtO2Z1bmN0aW9uIF9PKGQsZyl7cmV0dXJuIEtLZShkKShmdW5jdGlvbiBKS2UoZCl7Zm9yKHZhciBnPTE7Zzxhcmd1bWVudHMubGVuZ3RoO2crKyl7dmFyIGg9bnVsbCE9YXJndW1l''@;'; put 'put ''bnRzW2ddP2FyZ3VtZW50c1tnXTp7fTtnJTI/S2tlKE9iamVjdChoKSwhMCkuZm9yRWFjaChmdW5jdGlvbih2KXtYS2UoZCx2LGhbdl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj''@;'; put 'put ''cmlwdG9ycyhoKSk6S2tlKE9iamVjdChoKSkuZm9yRWFjaChmdW5jdGlvbih2KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaCx2KSl9KX1yZXR1cm4gZH0oe3R5cGU6ZH0sZykpfWZ1bmN0aW9uIEx3KGQpe3JldHVybiBmdW5jdGlv''@;'; put 'put ''biB0JGUoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gSnBlKGQpfShkKXx8ZnVuY3Rpb24gZSRlKGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0o''@;'; put 'put ''ZCl8fGZ1bmN0aW9uIHFLZShkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gSnBlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rv''@;'; put 'put ''ci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBKcGUoZCxnKX19KGQpfHxmdW5jdGlvbiAkS2UoKXt0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBKcGUo''@;'; put 'put ''ZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBxa2UoZCxnKXt2YXIgaD1PYmplY3Qua2V5cyhkKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xz''@;'; put 'put ''KXt2YXIgdj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGQpO2cmJih2PXYuZmlsdGVyKGZ1bmN0aW9uKHkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQseSkuZW51bWVyYWJsZX0pKSxoLnB1c2guYXBwbHkoaCx2KX1yZXR1cm4gaH1mdW5jdGlvbiBzeihk''@;'; put 'put ''KXtmb3IodmFyIGc9MTtnPGFyZ3VtZW50cy5sZW5ndGg7ZysrKXt2YXIgaD1udWxsIT1hcmd1bWVudHNbZ10/YXJndW1lbnRzW2ddOnt9O2clMj9xa2UoT2JqZWN0KGgpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe24kZShkLHYsaFt2XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw''@;'; put 'put ''dG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGgpKTpxa2UoT2JqZWN0KGgpKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihoLHYp''@;'; put 'put ''KX0pfXJldHVybiBkfWZ1bmN0aW9uIG4kZShkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9ZnVuY3Rpb24gZVNlKGQsZyl7Zm9yKHZhciBoPTA7''@;'; put 'put ''aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19Yk8oaXRlLGZ1bmN0aW9uIHdLZShkKXt2YXIg''@;'; put 'put ''Zz1kLmFjdGl2ZUhlYWRlckNsYXNzTmFtZSxoPWZ1bmN0aW9uIEFLZShkLGcpe2lmKG51bGw9PWQpcmV0dXJue307dmFyIHYseSxoPWZ1bmN0aW9uIHlLZShkLGcpe2lmKG51bGw9PWQpcmV0dXJue307dmFyIHksQyxoPXt9LHY9T2JqZWN0LmtleXMoZCk7Zm9yKEM9MDtDPHYubGVuZ3RoO0Mr''@;'; put 'put ''KykhKGcuaW5kZXhPZih5PXZbQ10pPj0wKSYmKGhbeV09ZFt5XSk7cmV0dXJuIGh9KGQsZyk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkKTtmb3IoeT0wO3k8Qy5sZW5ndGg7eSsrKSEoZy5pbmRleE9mKHY9Q1t5''@;'; put 'put ''XSk+PTApJiYoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChkLHYpfHwoaFt2XT1kW3ZdKSl9cmV0dXJuIGh9KGQsbUtlKTtyZXR1cm4gbmV3IHdPKGprZShqa2Uoe2hpZ2hsaWdodEhlYWRlckNsYXNzTmFtZTpnfSxoKSx7fSx7c2VsZWN0aW9uVHlwZTppdGV9''@;'; put 'put ''KSl9KSxiTyhvdGUsZnVuY3Rpb24gTUtlKGQpe3ZhciBnPWQubGF5ZXJMZXZlbCxoPWQuYXJlYUNvcm5lclZpc2libGUsdj1mdW5jdGlvbiBrS2UoZCxnKXtpZihudWxsPT1kKXJldHVybnt9O3ZhciB2LHksaD1mdW5jdGlvbiBTS2UoZCxnKXtpZihudWxsPT1kKXJldHVybnt9O3ZhciB5LEMs''@;'; put 'put ''aD17fSx2PU9iamVjdC5rZXlzKGQpO2ZvcihDPTA7Qzx2Lmxlbmd0aDtDKyspIShnLmluZGV4T2YoeT12W0NdKT49MCkmJihoW3ldPWRbeV0pO3JldHVybiBofShkLGcpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMo''@;'; put 'put ''ZCk7Zm9yKHk9MDt5PEMubGVuZ3RoO3krKykhKGcuaW5kZXhPZih2PUNbeV0pPj0wKSYmKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZCx2KXx8KGhbdl09ZFt2XSkpfXJldHVybiBofShkLF9LZSk7cmV0dXJuIG5ldyB3Tyh6a2UoemtlKHtjbGFzc05hbWU6''@;'; put 'put ''ImFyZWEiLG1hcmtJbnRlcnNlY3Rpb25zOiEwLGxheWVyTGV2ZWw6TWF0aC5taW4oZyw3KSxib3JkZXI6e3dpZHRoOjEsY29sb3I6IiM0Yjg5ZmYiLGNvcm5lclZpc2libGU6aH19LHYpLHt9LHtzZWxlY3Rpb25UeXBlOm90ZX0pKX0pLGJPKGF6LGZ1bmN0aW9uIExLZShkKXt2YXIgZz1kLmNl''@;'; put 'put ''bGxDb3JuZXJWaXNpYmxlLGg9ZnVuY3Rpb24gSUtlKGQsZyl7aWYobnVsbD09ZClyZXR1cm57fTt2YXIgdix5LGg9ZnVuY3Rpb24gREtlKGQsZyl7aWYobnVsbD09ZClyZXR1cm57fTt2YXIgeSxDLGg9e30sdj1PYmplY3Qua2V5cyhkKTtmb3IoQz0wO0M8di5sZW5ndGg7QysrKSEoZy5pbmRl''@;'; put 'put ''eE9mKHk9dltDXSk+PTApJiYoaFt5XT1kW3ldKTtyZXR1cm4gaH0oZCxnKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGQpO2Zvcih5PTA7eTxDLmxlbmd0aDt5KyspIShnLmluZGV4T2Yodj1DW3ldKT49MCkmJigh''@;'; put 'put ''T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGQsdil8fChoW3ZdPWRbdl0pKX1yZXR1cm4gaH0oZCx4S2UpO3JldHVybiBuZXcgd08oV2tlKFdrZSh7Y2xhc3NOYW1lOiJjdXJyZW50Iixib3JkZXI6e3dpZHRoOjIsY29sb3I6IiM0Yjg5ZmYiLGNvcm5lclZpc2li''@;'; put 'put ''bGU6Z319LGgpLHt9LHtzZWxlY3Rpb25UeXBlOmF6fSkpfSksYk8oenBlLGZ1bmN0aW9uIEhLZShkKXt2YXIgZz1kLmJvcmRlcixoPWQudmlzdWFsQ2VsbFJhbmdlLHY9ZnVuY3Rpb24gUEtlKGQsZyl7aWYobnVsbD09ZClyZXR1cm57fTt2YXIgdix5LGg9ZnVuY3Rpb24gRktlKGQsZyl7aWYo''@;'; put 'put ''bnVsbD09ZClyZXR1cm57fTt2YXIgeSxDLGg9e30sdj1PYmplY3Qua2V5cyhkKTtmb3IoQz0wO0M8di5sZW5ndGg7QysrKSEoZy5pbmRleE9mKHk9dltDXSk+PTApJiYoaFt5XT1kW3ldKTtyZXR1cm4gaH0oZCxnKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgQz1PYmpl''@;'; put 'put ''Y3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGQpO2Zvcih5PTA7eTxDLmxlbmd0aDt5KyspIShnLmluZGV4T2Yodj1DW3ldKT49MCkmJighT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGQsdil8fChoW3ZdPWRbdl0pKX1yZXR1cm4gaH0oZCxSS2UpO3JldHVybiBu''@;'; put 'put ''ZXcgd08oUXBlKFFwZShRcGUoe30sZyksdikse30se3NlbGVjdGlvblR5cGU6enBlfSksaCl9KSxiTygiZmlsbCIsZnVuY3Rpb24gaktlKGQpe3ZhciBnPU9iamVjdC5hc3NpZ24oe30sZCk7cmV0dXJuIG5ldyB3TyhRa2UoUWtlKHtjbGFzc05hbWU6ImZpbGwiLGJvcmRlcjp7d2lkdGg6MSxj''@;'; put 'put ''b2xvcjoiI2ZmMDAwMCJ9fSxnKSx7fSx7c2VsZWN0aW9uVHlwZToiZmlsbCJ9KSl9KSxiTyhseixmdW5jdGlvbiBVS2UoZCl7dmFyIGc9ZC5oZWFkZXJDbGFzc05hbWUsaD1kLnJvd0NsYXNzTmFtZSx2PWQuY29sdW1uQ2xhc3NOYW1lLHk9ZnVuY3Rpb24gV0tlKGQsZyl7aWYobnVsbD09ZCly''@;'; put 'put ''ZXR1cm57fTt2YXIgdix5LGg9ZnVuY3Rpb24gWUtlKGQsZyl7aWYobnVsbD09ZClyZXR1cm57fTt2YXIgeSxDLGg9e30sdj1PYmplY3Qua2V5cyhkKTtmb3IoQz0wO0M8di5sZW5ndGg7QysrKSEoZy5pbmRleE9mKHk9dltDXSk+PTApJiYoaFt5XT1kW3ldKTtyZXR1cm4gaH0oZCxnKTtpZihP''@;'; put 'put ''YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGQpO2Zvcih5PTA7eTxDLmxlbmd0aDt5KyspIShnLmluZGV4T2Yodj1DW3ldKT49MCkmJighT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGQsdil8''@;'; put 'put ''fChoW3ZdPWRbdl0pKX1yZXR1cm4gaH0oZCx6S2UpO3JldHVybiBuZXcgd08oWGtlKFhrZSh7Y2xhc3NOYW1lOiJoaWdobGlnaHQiLGhpZ2hsaWdodEhlYWRlckNsYXNzTmFtZTpnLGhpZ2hsaWdodFJvd0NsYXNzTmFtZTpoLGhpZ2hsaWdodENvbHVtbkNsYXNzTmFtZTp2fSx5KSx7fSx7aGln''@;'; put 'put ''aGxpZ2h0T25seUNsb3Nlc3RIZWFkZXI6ITAsc2VsZWN0aW9uVHlwZTpsen0pKX0pO3ZhciBvJGU9ZnVuY3Rpb24oZCl7ZnVuY3Rpb24gZyhoKXsoZnVuY3Rpb24gciRlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBh''@;'; put 'put ''cyBhIGZ1bmN0aW9uIil9KSh0aGlzLGcpLHRoaXMub3B0aW9ucz1oLHRoaXMubGF5ZXJMZXZlbD0wLHRoaXMuY2VsbD1fTyhheixoKSx0aGlzLmZpbGw9X08oImZpbGwiLGgpLHRoaXMuYXJlYXM9bmV3IE1hcCx0aGlzLmhlYWRlcnM9bmV3IE1hcCx0aGlzLmFjdGl2ZUhlYWRlcnM9bmV3IE1h''@;'; put 'put ''cCx0aGlzLmN1c3RvbVNlbGVjdGlvbnM9W119cmV0dXJuIGZ1bmN0aW9uIGkkZShkLGcsaCl7ZyYmZVNlKGQucHJvdG90eXBlLGcpLGgmJmVTZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShnLFt7a2V5OiJpc0VuYWJsZWRGb3IiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKHYseSl7dmFyIEM9djt2PT09YXomJihDPSJjdXJyZW50Iik7dmFyIEk9dGhpcy5vcHRpb25zLmRpc2FibGVkQ2VsbFNlbGVjdGlvbih5LnJvdyx5LmNvbCk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBJJiYoST1bSV0pLCExPT09SXx8QXJyYXkuaXNBcnJheShJKSYmIUku''@;'; put 'put ''aW5jbHVkZXMoQyl9fSx7a2V5OiJ1c2VMYXllckxldmVsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB2PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowO3JldHVybiB0aGlzLmxheWVyTGV2ZWw9dix0aGlzfX0se2tleToiZ2V0Q2VsbCIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jZWxsfX0se2tleToiZ2V0RmlsbCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxsfX0se2tleToiY3JlYXRlT3JHZXRBcmVhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5LHY9dGhpcy5sYXllckxldmVsO3JldHVybiB0aGlzLmFyZWFz''@;'; put 'put ''Lmhhcyh2KT95PXRoaXMuYXJlYXMuZ2V0KHYpOih5PV9PKG90ZSxzeih7bGF5ZXJMZXZlbDp2fSx0aGlzLm9wdGlvbnMpKSx0aGlzLmFyZWFzLnNldCh2LHkpKSx5fX0se2tleToiZ2V0QXJlYXMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEx3KHRoaXMuYXJlYXMudmFsdWVzKCkpfX0se2tl''@;'; put 'put ''eToiY3JlYXRlT3JHZXRIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHksdj10aGlzLmxheWVyTGV2ZWw7cmV0dXJuIHRoaXMuaGVhZGVycy5oYXModik/eT10aGlzLmhlYWRlcnMuZ2V0KHYpOih5PV9PKGx6LHN6KHt9LHRoaXMub3B0aW9ucykpLHRoaXMuaGVhZGVycy5zZXQodix5KSks''@;'; put 'put ''eX19LHtrZXk6ImdldEhlYWRlcnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEx3KHRoaXMuaGVhZGVycy52YWx1ZXMoKSl9fSx7a2V5OiJjcmVhdGVPckdldEFjdGl2ZUhlYWRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeSx2PXRoaXMubGF5ZXJMZXZlbDtyZXR1cm4gdGhpcy5hY3RpdmVI''@;'; put 'put ''ZWFkZXJzLmhhcyh2KT95PXRoaXMuYWN0aXZlSGVhZGVycy5nZXQodik6KHk9X08oaXRlLHN6KHt9LHRoaXMub3B0aW9ucykpLHRoaXMuYWN0aXZlSGVhZGVycy5zZXQodix5KSkseX19LHtrZXk6ImdldEFjdGl2ZUhlYWRlcnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEx3KHRoaXMuYWN0''@;'; put 'put ''aXZlSGVhZGVycy52YWx1ZXMoKSl9fSx7a2V5OiJnZXRDdXN0b21TZWxlY3Rpb25zIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBMdyh0aGlzLmN1c3RvbVNlbGVjdGlvbnMudmFsdWVzKCkpfX0se2tleToiYWRkQ3VzdG9tU2VsZWN0aW9uIix2YWx1ZTpmdW5jdGlvbih2KXt0aGlzLmN1c3Rv''@;'; put 'put ''bVNlbGVjdGlvbnMucHVzaChfTyh6cGUsc3ooc3ooe30sdGhpcy5vcHRpb25zKSx2KSkpfX0se2tleToiY2xlYXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jZWxsLmNsZWFyKCksdGhpcy5maWxsLmNsZWFyKCksVXIodGhpcy5hcmVhcy52YWx1ZXMoKSxmdW5jdGlvbih2KXt2LmNsZWFyKCl9''@;'; put 'put ''KSxVcih0aGlzLmhlYWRlcnMudmFsdWVzKCksZnVuY3Rpb24odil7di5jbGVhcigpfSksVXIodGhpcy5hY3RpdmVIZWFkZXJzLnZhbHVlcygpLGZ1bmN0aW9uKHYpe3YuY2xlYXIoKX0pfX0se2tleTpTeW1ib2wuaXRlcmF0b3IsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bdGhpcy5jZWxsLHRo''@;'; put 'put ''aXMuZmlsbF0uY29uY2F0KEx3KHRoaXMuYXJlYXMudmFsdWVzKCkpLEx3KHRoaXMuaGVhZGVycy52YWx1ZXMoKSksTHcodGhpcy5hY3RpdmVIZWFkZXJzLnZhbHVlcygpKSxMdyh0aGlzLmN1c3RvbVNlbGVjdGlvbnMpKVtTeW1ib2wuaXRlcmF0b3JdKCl9fV0pLGd9KCk7Y29uc3QgYSRlPW8k''@;'; put 'put ''ZTtmdW5jdGlvbiB0U2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5''@;'; put 'put ''LHYpfX12YXIgdSRlPWZ1bmN0aW9uKGQpe2Z1bmN0aW9uIGcoaCl7KGZ1bmN0aW9uIGwkZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxnKSx0aGlzLnJhbmdlcz1bXSx0aGlz''@;'; put 'put ''LmNyZWF0ZUNlbGxSYW5nZT1ofXJldHVybiBmdW5jdGlvbiBzJGUoZCxnLGgpe2cmJnRTZShkLnByb3RvdHlwZSxnKSxoJiZ0U2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZyxbe2tleToiaXNFbXB0eSIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gMD09PXRoaXMuc2l6ZSgpfX0se2tleToic2V0Iix2YWx1ZTpmdW5jdGlvbih2KXtyZXR1cm4gdGhpcy5jbGVhcigpLHRoaXMucmFuZ2VzLnB1c2godGhpcy5jcmVhdGVDZWxsUmFuZ2UodikpLHRoaXN9fSx7a2V5OiJhZGQiLHZhbHVlOmZ1bmN0aW9uKHYpe3JldHVybiB0aGlz''@;'; put 'put ''LnJhbmdlcy5wdXNoKHRoaXMuY3JlYXRlQ2VsbFJhbmdlKHYpKSx0aGlzfX0se2tleToicG9wIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJhbmdlcy5wb3AoKSx0aGlzfX0se2tleToiY3VycmVudCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wZWVrQnlJbmRleCgwKX19''@;'; put 'put ''LHtrZXk6InByZXZpb3VzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBlZWtCeUluZGV4KC0xKX19LHtrZXk6ImluY2x1ZGVzIix2YWx1ZTpmdW5jdGlvbih2KXtyZXR1cm4gdGhpcy5yYW5nZXMuc29tZShmdW5jdGlvbih5KXtyZXR1cm4geS5pbmNsdWRlcyh2KX0pfX0se2tleToi''@;'; put 'put ''Y2xlYXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmFuZ2VzLmxlbmd0aD0wLHRoaXN9fSx7a2V5OiJzaXplIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJhbmdlcy5sZW5ndGh9fSx7a2V5OiJwZWVrQnlJbmRleCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQyx2PWFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLHk9dGhpcy5zaXplKCkrdi0xO3JldHVybiB5Pj0wJiYoQz10aGlzLnJhbmdlc1t5XSksQ319LHtrZXk6U3ltYm9sLml0ZXJhdG9yLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmFuZ2VzW1N5''@;'; put 'put ''bWJvbC5pdGVyYXRvcl0oKX19XSksZ30oKTtjb25zdCBjJGU9dSRlO2Z1bmN0aW9uIG5TZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0''@;'; put 'put ''YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciByU2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCl7KGZ1bmN0aW9uIGYkZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBm''@;'; put 'put ''dW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLnJhbmdlPWcsdGhpcy5vcHRpb25zPWh9cmV0dXJuIGZ1bmN0aW9uIGgkZShkLGcsaCl7ZyYmblNlKGQucHJvdG90eXBlLGcpLGgmJm5TZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7''@;'; put 'put ''a2V5OiJ0cmFuc2Zvcm1TdGFydCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLEM9dGhpcy5vcHRpb25zLmNyZWF0ZUNlbGxDb29yZHMoaCx2KSxJPXRoaXMucmFuZ2UuY3VycmVudCgpLmhp''@;'; put 'put ''Z2hsaWdodCxaPXRoaXMub3B0aW9ucy52aXN1YWxUb1JlbmRlcmFibGVDb29yZHMoSSksdWU9Wi5yb3csX2U9Wi5jb2wsQmU9SSxOZT0wLEtlPTA7aWYodGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVUcmFuc2Zvcm1TdGFydCIsQyksbnVsbCE9PXVlJiZudWxsIT09X2Upe3ZhciBwdD10aGlz''@;'; put 'put ''Lm9wdGlvbnMuY291bnRSb3dzKCksT3Q9dGhpcy5vcHRpb25zLmNvdW50Q29scygpLCR0PXRoaXMub3B0aW9ucy5maXhlZFJvd3NCb3R0b20oKSxmbj10aGlzLm9wdGlvbnMubWluU3BhcmVSb3dzKCksTG49dGhpcy5vcHRpb25zLm1pblNwYXJlQ29scygpLGlyPXRoaXMub3B0aW9ucy5hdXRv''@;'; put 'put ''V3JhcFJvdygpLG1yPXRoaXMub3B0aW9ucy5hdXRvV3JhcENvbCgpO3VlK2g+cHQtMT95JiZmbj4wJiYhKCR0JiZ1ZT49cHQtJHQtMSk/KHRoaXMucnVuTG9jYWxIb29rcygiaW5zZXJ0Um93UmVxdWlyZSIscHQpLHB0PXRoaXMub3B0aW9ucy5jb3VudFJvd3MoKSk6bXImJihDLnJvdz0xLXB0''@;'; put 'put ''LEMuY29sPV9lK0MuY29sPT09T3QtMT8xLU90OjEpOm1yJiZ1ZStDLnJvdzwwJiZfZStDLmNvbD49MCYmKEMucm93PXB0LTEsQy5jb2w9X2UrQy5jb2w9PT0wP090LTE6LTEpLF9lK0MuY29sPk90LTE/eSYmTG4+MD8odGhpcy5ydW5Mb2NhbEhvb2tzKCJpbnNlcnRDb2xSZXF1aXJlIixPdCks''@;'; put 'put ''T3Q9dGhpcy5vcHRpb25zLmNvdW50Q29scygpKTppciYmKEMucm93PXVlK0Mucm93PT09cHQtMT8xLXB0OjEsQy5jb2w9MS1PdCk6aXImJl9lK0MuY29sPDAmJnVlK0Mucm93Pj0wJiYoQy5yb3c9dWUrQy5yb3c9PT0wP3B0LTE6LTEsQy5jb2w9T3QtMSk7dmFyIFNyPXRoaXMub3B0aW9ucy5j''@;'; put 'put ''cmVhdGVDZWxsQ29vcmRzKHVlK0Mucm93LF9lK0MuY29sKTtOZT0wLEtlPTAsU3Iucm93PDA/KE5lPS0xLFNyLnJvdz0wKTpTci5yb3c+MCYmU3Iucm93Pj1wdCYmKE5lPTEsU3Iucm93PXB0LTEpLFNyLmNvbDwwPyhLZT0tMSxTci5jb2w9MCk6U3IuY29sPjAmJlNyLmNvbD49T3QmJihLZT0x''@;'; put 'put ''LFNyLmNvbD1PdC0xKSxCZT10aGlzLm9wdGlvbnMucmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzKFNyKX1yZXR1cm4gdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlclRyYW5zZm9ybVN0YXJ0IixCZSxOZSxLZSksQmV9fSx7a2V5OiJ0cmFuc2Zvcm1FbmQiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFy''@;'; put 'put ''IHk9dGhpcy5vcHRpb25zLmNyZWF0ZUNlbGxDb29yZHMoaCx2KSxDPXRoaXMucmFuZ2UuY3VycmVudCgpLEk9Qy50byxaPTAsdWU9MDt0aGlzLnJ1bkxvY2FsSG9va3MoImJlZm9yZVRyYW5zZm9ybUVuZCIseSk7dmFyIF9lPXRoaXMub3B0aW9ucy52aXN1YWxUb1JlbmRlcmFibGVDb29yZHMo''@;'; put 'put ''Qy5oaWdobGlnaHQpO2lmKG51bGwhPT1fZS5yb3cmJm51bGwhPT1fZS5jb2wpe3ZhciBLZT10aGlzLm9wdGlvbnMuY291bnRSb3dzKCkscHQ9dGhpcy5vcHRpb25zLmNvdW50Q29scygpLE90PXRoaXMub3B0aW9ucy52aXN1YWxUb1JlbmRlcmFibGVDb29yZHMoQy50byksTG49dGhpcy5vcHRp''@;'; put 'put ''b25zLmNyZWF0ZUNlbGxDb29yZHMoT3Qucm93K3kucm93LE90LmNvbCt5LmNvbCk7Wj0wLHVlPTAsTG4ucm93PDA/KFo9LTEsTG4ucm93PTApOkxuLnJvdz4wJiZMbi5yb3c+PUtlJiYoWj0xLExuLnJvdz1LZS0xKSxMbi5jb2w8MD8odWU9LTEsTG4uY29sPTApOkxuLmNvbD4wJiZMbi5jb2w+''@;'; put 'put ''PXB0JiYodWU9MSxMbi5jb2w9cHQtMSksST10aGlzLm9wdGlvbnMucmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzKExuKX1yZXR1cm4gdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlclRyYW5zZm9ybUVuZCIsSSxaLHVlKSxJfX1dKSxkfSgpO0IyKHJTZSx1ZCk7Y29uc3QgZCRlPXJTZTtmdW5jdGlv''@;'; put 'put ''biBpU2UoZCxnKXtyZXR1cm4gZnVuY3Rpb24gdiRlKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBtJGUoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRv''@;'; put 'put ''ciJdO2lmKG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaCh1ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxs''@;'; put 'put ''IT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgWn19cmV0dXJuIHZ9fShkLGcpfHxmdW5jdGlvbiBnJGUoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIG9TZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5z''@;'; put 'put ''bGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0Fy''@;'; put 'put ''cmF5JC8udGVzdChoKSlyZXR1cm4gb1NlKGQsZyl9fShkLGcpfHxmdW5jdGlvbiBwJGUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBv''@;'; put 'put ''YmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIG9TZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0''@;'; put 'put ''aW9uIFhwZShkKXtyZXR1cm4oWHBlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29u''@;'; put 'put ''c3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9dmFyIHNTZSxBJGU9WzMsMl0seSRlPVtbIm51bWJlciJdLFsibnVtYmVyIiwic3RyaW5nIl0sWyJudW1iZXIiLCJ1bmRlZmluZWQiXSxbIm51bWJlciIsInN0cmluZyIsInVuZGVm''@;'; put 'put ''aW5lZCJdXSwkcGU9U3ltYm9sKCJyb290IiksbFNlPVN5bWJvbCgiY2hpbGQiKTtmdW5jdGlvbiBDTyhkKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06JHBlO2lmKGchPT0kcGUmJmchPT1sU2UpdGhyb3cgbmV3IEVycm9yKCJU''@;'; put 'put ''aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHVzZWQgaW50ZXJuYWxseSBvbmx5IGFuZCBjYW5ub3QgYmUgb3ZlcndyaXR0ZW4uIik7dmFyIGg9QXJyYXkuaXNBcnJheShkKSx2PWc9PT0kcGUseT0wO2lmKGgpe3ZhciBDPWRbMF07aWYoMD09PWQubGVuZ3RoKXk9MTtlbHNlIGlmKHYmJkMgaW5zdGFu''@;'; put 'put ''Y2VvZiBzQ2UpeT0zO2Vsc2UgaWYodiYmQXJyYXkuaXNBcnJheShDKSl5PUNPKEMsbFNlKTtlbHNlIGlmKGQubGVuZ3RoPj0yJiZkLmxlbmd0aDw9NCl7dmFyIEk9IWQuc29tZShmdW5jdGlvbihaLHVlKXtyZXR1cm4heSRlW3VlXS5pbmNsdWRlcyhYcGUoWikpfSk7SSYmKHk9Mil9fXJldHVy''@;'; put 'put ''biB5fWZ1bmN0aW9uIHV6KGQpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxoPWcua2VlcERpcmVjdGlvbix2PXZvaWQgMCE9PWgmJmgseT1nLnByb3BUb0NvbDtpZighQSRlLmluY2x1ZGVzKGQpKXRocm93IG5ldyBFcnJv''@;'; put 'put ''cigiVW5zdXBwb3J0ZWQgc2VsZWN0aW9uIHJhbmdlcyBzY2hlbWEgdHlwZSB3YXMgcHJvdmlkZWQuIik7cmV0dXJuIGZ1bmN0aW9uKEMpe3ZhciBJPTM9PT1kLFo9ST9DLmZyb20ucm93OkNbMF0sdWU9ST9DLmZyb20uY29sOkNbMV0sX2U9ST9DLnRvLnJvdzpDWzJdLEJlPUk/Qy50by5jb2w6''@;'; put 'put ''Q1szXTtpZigiZnVuY3Rpb24iPT10eXBlb2YgeSYmKCJzdHJpbmciPT10eXBlb2YgdWUmJih1ZT15KHVlKSksInN0cmluZyI9PXR5cGVvZiBCZSYmKEJlPXkoQmUpKSksYTEoX2UpJiYoX2U9WiksYTEoQmUpJiYoQmU9dWUpLCF2KXt2YXIgTmU9WixLZT11ZSxwdD1fZSxPdD1CZTtaPU1hdGgu''@;'; put 'put ''bWluKE5lLHB0KSx1ZT1NYXRoLm1pbihLZSxPdCksX2U9TWF0aC5tYXgoTmUscHQpLEJlPU1hdGgubWF4KEtlLE90KX1yZXR1cm5bWix1ZSxfZSxCZV19fWZ1bmN0aW9uIE93KGQpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTox''@;'; put 'put ''LzA7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBkJiZkPj0wJiZkPGd9ZnVuY3Rpb24gdVNlKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIFMkZShkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gayRlKGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10''@;'; put 'put ''eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxaLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5''@;'; put 'put ''PSEwKTt9Y2F0Y2godWUpe0M9ITAsWj11ZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IFp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24gQyRlKGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBjU2Uo''@;'; put 'put ''ZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVu''@;'; put 'put ''dHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIGNTZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gXyRlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBp''@;'; put 'put ''bnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBjU2UoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2''@;'; put 'put ''PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBmU2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3Jp''@;'; put 'put ''dGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgaFNlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnLGgpe3ZhciB2PXRoaXM7KGZ1bmN0aW9uIEUkZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEg''@;'; put 'put ''Y2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLnNldHRpbmdzPWcsdGhpcy50YWJsZVByb3BzPWgsdGhpcy5pblByb2dyZXNzPSExLHRoaXMuc2VsZWN0ZWRCeUNvcm5lcj0hMSx0aGlzLnNlbGVjdGVkQnlSb3dIZWFkZXI9bmV3IFNldCx0aGlzLnNlbGVjdGVkQnlDb2x1bW5I''@;'; put 'put ''ZWFkZXI9bmV3IFNldCx0aGlzLnNlbGVjdGVkUmFuZ2U9bmV3IGMkZShmdW5jdGlvbih5LEMsSSl7cmV0dXJuIHYudGFibGVQcm9wcy5jcmVhdGVDZWxsUmFuZ2UoeSxDLEkpfSksdGhpcy5oaWdobGlnaHQ9bmV3IGEkZSh7aGVhZGVyQ2xhc3NOYW1lOmcuY3VycmVudEhlYWRlckNsYXNzTmFt''@;'; put 'put ''ZSxhY3RpdmVIZWFkZXJDbGFzc05hbWU6Zy5hY3RpdmVIZWFkZXJDbGFzc05hbWUscm93Q2xhc3NOYW1lOmcuY3VycmVudFJvd0NsYXNzTmFtZSxjb2x1bW5DbGFzc05hbWU6Zy5jdXJyZW50Q29sQ2xhc3NOYW1lLGRpc2FibGVkQ2VsbFNlbGVjdGlvbjpmdW5jdGlvbihDLEkpe3JldHVybiB2''@;'; put 'put ''LnRhYmxlUHJvcHMuaXNEaXNhYmxlZENlbGxTZWxlY3Rpb24oQyxJKX0sY2VsbENvcm5lclZpc2libGU6ZnVuY3Rpb24oKXtyZXR1cm4gdi5pc0NlbGxDb3JuZXJWaXNpYmxlLmFwcGx5KHYsYXJndW1lbnRzKX0sYXJlYUNvcm5lclZpc2libGU6ZnVuY3Rpb24oKXtyZXR1cm4gdi5pc0FyZWFD''@;'; put 'put ''b3JuZXJWaXNpYmxlLmFwcGx5KHYsYXJndW1lbnRzKX0sdmlzdWFsVG9SZW5kZXJhYmxlQ29vcmRzOmZ1bmN0aW9uKEMpe3JldHVybiB2LnRhYmxlUHJvcHMudmlzdWFsVG9SZW5kZXJhYmxlQ29vcmRzKEMpfSxyZW5kZXJhYmxlVG9WaXN1YWxDb29yZHM6ZnVuY3Rpb24oQyl7cmV0dXJuIHYu''@;'; put 'put ''dGFibGVQcm9wcy5yZW5kZXJhYmxlVG9WaXN1YWxDb29yZHMoQyl9LGNyZWF0ZUNlbGxDb29yZHM6ZnVuY3Rpb24oQyxJKXtyZXR1cm4gdi50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoQyxJKX0sY3JlYXRlQ2VsbFJhbmdlOmZ1bmN0aW9uKEMsSSxaKXtyZXR1cm4gdi50YWJsZVByb3Bz''@;'; put 'put ''LmNyZWF0ZUNlbGxSYW5nZShDLEksWil9LHJvd0luZGV4TWFwcGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHYudGFibGVQcm9wcy5yb3dJbmRleE1hcHBlcigpfSxjb2x1bW5JbmRleE1hcHBlcjpmdW5jdGlvbigpe3JldHVybiB2LnRhYmxlUHJvcHMuY29sdW1uSW5kZXhNYXBwZXIoKX19KSx0aGlz''@;'; put 'put ''LnRyYW5zZm9ybWF0aW9uPW5ldyBkJGUodGhpcy5zZWxlY3RlZFJhbmdlLHtjb3VudFJvd3M6ZnVuY3Rpb24oKXtyZXR1cm4gdi50YWJsZVByb3BzLmNvdW50Um93c1RyYW5zbGF0ZWQoKX0sY291bnRDb2xzOmZ1bmN0aW9uKCl7cmV0dXJuIHYudGFibGVQcm9wcy5jb3VudENvbHNUcmFuc2xh''@;'; put 'put ''dGVkKCl9LHZpc3VhbFRvUmVuZGVyYWJsZUNvb3JkczpmdW5jdGlvbihDKXtyZXR1cm4gdi50YWJsZVByb3BzLnZpc3VhbFRvUmVuZGVyYWJsZUNvb3JkcyhDKX0scmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzOmZ1bmN0aW9uKEMpe3JldHVybiB2LnRhYmxlUHJvcHMucmVuZGVyYWJsZVRvVmlz''@;'; put 'put ''dWFsQ29vcmRzKEMpfSxjcmVhdGVDZWxsQ29vcmRzOmZ1bmN0aW9uKEMsSSl7cmV0dXJuIHYudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKEMsSSl9LGZpeGVkUm93c0JvdHRvbTpmdW5jdGlvbigpe3JldHVybiBnLmZpeGVkUm93c0JvdHRvbX0sbWluU3BhcmVSb3dzOmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIGcubWluU3BhcmVSb3dzfSxtaW5TcGFyZUNvbHM6ZnVuY3Rpb24oKXtyZXR1cm4gZy5taW5TcGFyZUNvbHN9LGF1dG9XcmFwUm93OmZ1bmN0aW9uKCl7cmV0dXJuIGcuYXV0b1dyYXBSb3d9LGF1dG9XcmFwQ29sOmZ1bmN0aW9uKCl7cmV0dXJuIGcuYXV0b1dyYXBDb2x9fSksdGhp''@;'; put 'put ''cy50cmFuc2Zvcm1hdGlvbi5hZGRMb2NhbEhvb2soImJlZm9yZVRyYW5zZm9ybVN0YXJ0IixmdW5jdGlvbigpe2Zvcih2YXIgeT1hcmd1bWVudHMubGVuZ3RoLEM9bmV3IEFycmF5KHkpLEk9MDtJPHk7SSsrKUNbSV09YXJndW1lbnRzW0ldO3JldHVybiB2LnJ1bkxvY2FsSG9va3MuYXBwbHko''@;'; put 'put ''dixbImJlZm9yZU1vZGlmeVRyYW5zZm9ybVN0YXJ0Il0uY29uY2F0KEMpKX0pLHRoaXMudHJhbnNmb3JtYXRpb24uYWRkTG9jYWxIb29rKCJhZnRlclRyYW5zZm9ybVN0YXJ0IixmdW5jdGlvbigpe2Zvcih2YXIgeT1hcmd1bWVudHMubGVuZ3RoLEM9bmV3IEFycmF5KHkpLEk9MDtJPHk7SSsr''@;'; put 'put ''KUNbSV09YXJndW1lbnRzW0ldO3JldHVybiB2LnJ1bkxvY2FsSG9va3MuYXBwbHkodixbImFmdGVyTW9kaWZ5VHJhbnNmb3JtU3RhcnQiXS5jb25jYXQoQykpfSksdGhpcy50cmFuc2Zvcm1hdGlvbi5hZGRMb2NhbEhvb2soImJlZm9yZVRyYW5zZm9ybUVuZCIsZnVuY3Rpb24oKXtmb3IodmFy''@;'; put 'put ''IHk9YXJndW1lbnRzLmxlbmd0aCxDPW5ldyBBcnJheSh5KSxJPTA7STx5O0krKylDW0ldPWFyZ3VtZW50c1tJXTtyZXR1cm4gdi5ydW5Mb2NhbEhvb2tzLmFwcGx5KHYsWyJiZWZvcmVNb2RpZnlUcmFuc2Zvcm1FbmQiXS5jb25jYXQoQykpfSksdGhpcy50cmFuc2Zvcm1hdGlvbi5hZGRMb2Nh''@;'; put 'put ''bEhvb2soImFmdGVyVHJhbnNmb3JtRW5kIixmdW5jdGlvbigpe2Zvcih2YXIgeT1hcmd1bWVudHMubGVuZ3RoLEM9bmV3IEFycmF5KHkpLEk9MDtJPHk7SSsrKUNbSV09YXJndW1lbnRzW0ldO3JldHVybiB2LnJ1bkxvY2FsSG9va3MuYXBwbHkodixbImFmdGVyTW9kaWZ5VHJhbnNmb3JtRW5k''@;'; put 'put ''Il0uY29uY2F0KEMpKX0pLHRoaXMudHJhbnNmb3JtYXRpb24uYWRkTG9jYWxIb29rKCJpbnNlcnRSb3dSZXF1aXJlIixmdW5jdGlvbigpe2Zvcih2YXIgeT1hcmd1bWVudHMubGVuZ3RoLEM9bmV3IEFycmF5KHkpLEk9MDtJPHk7SSsrKUNbSV09YXJndW1lbnRzW0ldO3JldHVybiB2LnJ1bkxv''@;'; put 'put ''Y2FsSG9va3MuYXBwbHkodixbImluc2VydFJvd1JlcXVpcmUiXS5jb25jYXQoQykpfSksdGhpcy50cmFuc2Zvcm1hdGlvbi5hZGRMb2NhbEhvb2soImluc2VydENvbFJlcXVpcmUiLGZ1bmN0aW9uKCl7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeSksST0wO0k8eTtJ''@;'; put 'put ''KyspQ1tJXT1hcmd1bWVudHNbSV07cmV0dXJuIHYucnVuTG9jYWxIb29rcy5hcHBseSh2LFsiaW5zZXJ0Q29sUmVxdWlyZSJdLmNvbmNhdChDKSl9KX1yZXR1cm4gZnVuY3Rpb24geCRlKGQsZyxoKXtnJiZmU2UoZC5wcm90b3R5cGUsZyksaCYmZlNlKGQsaCksT2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImdldFNlbGVjdGVkUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0ZWRSYW5nZX19LHtrZXk6ImJlZ2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaW5Qcm9ncmVzcz0hMH19LHtrZXk6ImZp''@;'; put 'put ''bmlzaCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyU2VsZWN0aW9uRmluaXNoZWQiLEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFJhbmdlKSksdGhpcy5pblByb2dyZXNzPSExfX0se2tleToiaXNJblByb2dyZXNzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0''@;'; put 'put ''aGlzLmluUHJvZ3Jlc3N9fSx7a2V5OiJzZXRSYW5nZVN0YXJ0Iix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sQz0ibXVsdGlwbGUiPT09dGhpcy5zZXR0aW5ncy5zZWxlY3Rpb25Nb2RlLEk9''@;'; put 'put ''YTEodik/dGhpcy50YWJsZVByb3BzLmdldFNob3J0Y3V0TWFuYWdlcigpLmlzQ3RybFByZXNzZWQoKTp2LFo9aC5yb3c8MCx1ZT1oLmNvbDwwLF9lPVomJnVlLEJlPWguY2xvbmUoKTt0aGlzLnNlbGVjdGVkQnlDb3JuZXI9X2UsdGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVTZXRSYW5nZVN0''@;'; put 'put ''YXJ0Ii5jb25jYXQoeT8iT25seSI6IiIpLEJlKSwoIUN8fEMmJiFJJiZhMSh2KSkmJnRoaXMuc2VsZWN0ZWRSYW5nZS5jbGVhcigpLHRoaXMuc2VsZWN0ZWRSYW5nZS5hZGQoQmUpLDA9PT10aGlzLmdldExheWVyTGV2ZWwoKSYmKHRoaXMuc2VsZWN0ZWRCeVJvd0hlYWRlci5jbGVhcigpLHRo''@;'; put 'put ''aXMuc2VsZWN0ZWRCeUNvbHVtbkhlYWRlci5jbGVhcigpKSwhX2UmJnVlJiZ0aGlzLnNlbGVjdGVkQnlSb3dIZWFkZXIuYWRkKHRoaXMuZ2V0TGF5ZXJMZXZlbCgpKSwhX2UmJlomJnRoaXMuc2VsZWN0ZWRCeUNvbHVtbkhlYWRlci5hZGQodGhpcy5nZXRMYXllckxldmVsKCkpLHl8fHRoaXMu''@;'; put 'put ''c2V0UmFuZ2VFbmQoaCl9fSx7a2V5OiJzZXRSYW5nZVN0YXJ0T25seSIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt0aGlzLnNldFJhbmdlU3RhcnQoaCx2LCEwKX19LHtrZXk6InNldFJhbmdlRW5kIix2YWx1ZTpmdW5jdGlvbihoKXtpZighdGhpcy5zZWxlY3RlZFJhbmdlLmlzRW1wdHkoKSl7dmFy''@;'; put 'put ''IHY9aC5jbG9uZSgpO3RoaXMucnVuTG9jYWxIb29rcygiYmVmb3JlU2V0UmFuZ2VFbmQiLHYpLHRoaXMuYmVnaW4oKTt2YXIgeT10aGlzLnNlbGVjdGVkUmFuZ2UuY3VycmVudCgpOyJzaW5nbGUiIT09dGhpcy5zZXR0aW5ncy5zZWxlY3Rpb25Nb2RlJiZ5LnNldFRvKHRoaXMudGFibGVQcm9w''@;'; put 'put ''cy5jcmVhdGVDZWxsQ29vcmRzKHYucm93LHYuY29sKSksdGhpcy5oaWdobGlnaHQuZ2V0Q2VsbCgpLmNsZWFyKCksdGhpcy5oaWdobGlnaHQuaXNFbmFibGVkRm9yKGF6LHkuaGlnaGxpZ2h0KSYmdGhpcy5oaWdobGlnaHQuZ2V0Q2VsbCgpLmFkZCh0aGlzLnNlbGVjdGVkUmFuZ2UuY3VycmVu''@;'; put 'put ''dCgpLmhpZ2hsaWdodCkuY29tbWl0KCkuc3luY1dpdGgoeSk7dmFyIEM9dGhpcy5nZXRMYXllckxldmVsKCk7Qzx0aGlzLmhpZ2hsaWdodC5sYXllckxldmVsJiYoVXIodGhpcy5oaWdobGlnaHQuZ2V0QXJlYXMoKSxmdW5jdGlvbigkdCl7JHQuY2xlYXIoKX0pLFVyKHRoaXMuaGlnaGxpZ2h0''@;'; put 'put ''LmdldEhlYWRlcnMoKSxmdW5jdGlvbigkdCl7JHQuY2xlYXIoKX0pLFVyKHRoaXMuaGlnaGxpZ2h0LmdldEFjdGl2ZUhlYWRlcnMoKSxmdW5jdGlvbigkdCl7JHQuY2xlYXIoKX0pKSx0aGlzLmhpZ2hsaWdodC51c2VMYXllckxldmVsKEMpO3ZhciBJPXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZU9y''@;'; put 'put ''R2V0QXJlYSgpLFo9dGhpcy5oaWdobGlnaHQuY3JlYXRlT3JHZXRIZWFkZXIoKSx1ZT10aGlzLmhpZ2hsaWdodC5jcmVhdGVPckdldEFjdGl2ZUhlYWRlcigpO2lmKEkuY2xlYXIoKSxaLmNsZWFyKCksdWUuY2xlYXIoKSx0aGlzLmhpZ2hsaWdodC5pc0VuYWJsZWRGb3Iob3RlLHkuaGlnaGxp''@;'; put 'put ''Z2h0KSYmKHRoaXMuaXNNdWx0aXBsZSgpfHxDPj0xKSYmKEkuYWRkKHkuZnJvbSkuYWRkKHkudG8pLmNvbW1pdCgpLDE9PT1DKSl7dmFyIF9lPXRoaXMuc2VsZWN0ZWRSYW5nZS5wcmV2aW91cygpO3RoaXMuaGlnaGxpZ2h0LnVzZUxheWVyTGV2ZWwoQy0xKS5jcmVhdGVPckdldEFyZWEoKS5h''@;'; put 'put ''ZGQoX2UuZnJvbSkuY29tbWl0KCkuc3luY1dpdGgoX2UpLHRoaXMuaGlnaGxpZ2h0LnVzZUxheWVyTGV2ZWwoQyl9aWYodGhpcy5oaWdobGlnaHQuaXNFbmFibGVkRm9yKGx6LHkuaGlnaGxpZ2h0KSl7dmFyIEJlPTA9PT10aGlzLnRhYmxlUHJvcHMuY291bnRSb3dzVHJhbnNsYXRlZCgpLE5l''@;'; put 'put ''PTA9PT10aGlzLnRhYmxlUHJvcHMuY291bnRDb2xzVHJhbnNsYXRlZCgpLEtlPXk7KEJlfHxOZSkmJihLZT15LmNsb25lKCkpLEJlJiYoS2UuZnJvbS5yb3c9LTEpLE5lJiYoS2UuZnJvbS5jb2w9LTEpLCJzaW5nbGUiPT09dGhpcy5zZXR0aW5ncy5zZWxlY3Rpb25Nb2RlPyh0aGlzLmlzU2Vs''@;'; put 'put ''ZWN0ZWRCeUFueUhlYWRlcigpJiZLZS5mcm9tLm5vcm1hbGl6ZSgpLFouYWRkKEtlLmZyb20pLmNvbW1pdCgpKTpaLmFkZChLZS5mcm9tKS5hZGQoS2UudG8pLmNvbW1pdCgpLHRoaXMuaXNFbnRpcmVSb3dTZWxlY3RlZCgpJiZ0aGlzLnRhYmxlUHJvcHMuY291bnRDb2xzKCk9PT15LmdldFdp''@;'; put 'put ''ZHRoKCkmJnVlLmFkZCh0aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3Jkcyh5LmZyb20ucm93LC0xKSkuYWRkKHRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKHkudG8ucm93LC0xKSkuY29tbWl0KCksdGhpcy5pc0VudGlyZUNvbHVtblNlbGVjdGVkKCkmJnRoaXMudGFibGVQ''@;'; put 'put ''cm9wcy5jb3VudFJvd3MoKT09PXkuZ2V0SGVpZ2h0KCkmJnVlLmFkZCh0aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcygtMSx5LmZyb20uY29sKSkuYWRkKHRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKC0xLHkudG8uY29sKSkuY29tbWl0KCl9dGhpcy5ydW5Mb2NhbEhv''@;'; put 'put ''b2tzKCJhZnRlclNldFJhbmdlRW5kIixoKX19fSx7a2V5OiJpc011bHRpcGxlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPUVTKCF0aGlzLnNlbGVjdGVkUmFuZ2UuY3VycmVudCgpLmlzU2luZ2xlKCkpO3JldHVybiB0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVySXNNdWx0aXBsZVNlbGVjdGlv''@;'; put 'put ''biIsaCksaC52YWx1ZX19LHtrZXk6InRyYW5zZm9ybVN0YXJ0Iix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07dGhpcy5zZXRSYW5nZVN0YXJ0KHRoaXMudHJhbnNmb3JtYXRpb24udHJhbnNm''@;'; put 'put ''b3JtU3RhcnQoaCx2LHkpKX19LHtrZXk6InRyYW5zZm9ybUVuZCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt0aGlzLnNldFJhbmdlRW5kKHRoaXMudHJhbnNmb3JtYXRpb24udHJhbnNmb3JtRW5kKGgsdikpfX0se2tleToiZ2V0TGF5ZXJMZXZlbCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5zZWxlY3RlZFJhbmdlLnNpemUoKS0xfX0se2tleToiaXNTZWxlY3RlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5zZWxlY3RlZFJhbmdlLmlzRW1wdHkoKX19LHtrZXk6ImlzU2VsZWN0ZWRCeVJvd0hlYWRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1hcmd1bWVudHMubGVu''@;'; put 'put ''Z3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5nZXRMYXllckxldmVsKCk7cmV0dXJuIXRoaXMuaXNTZWxlY3RlZEJ5Q29ybmVyKGgpJiZ0aGlzLmlzRW50aXJlUm93U2VsZWN0ZWQoaCl9fSx7a2V5OiJpc0VudGlyZVJvd1NlbGVjdGVkIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0aGlzLmdldExheWVyTGV2ZWwoKTtyZXR1cm4tMT09PWg/dGhpcy5zZWxlY3RlZEJ5Um93SGVhZGVyLnNpemU+MDp0aGlzLnNlbGVjdGVkQnlSb3dIZWFkZXIuaGFzKGgp''@;'; put 'put ''fX0se2tleToiaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0aGlzLmdldExheWVyTGV2ZWwoKTtyZXR1cm4hdGhpcy5pc1NlbGVjdGVkQnlDb3JuZXIo''@;'; put 'put ''KSYmdGhpcy5pc0VudGlyZUNvbHVtblNlbGVjdGVkKGgpfX0se2tleToiaXNFbnRpcmVDb2x1bW5TZWxlY3RlZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5nZXRMYXllckxldmVsKCk7''@;'; put 'put ''cmV0dXJuLTE9PT1oP3RoaXMuc2VsZWN0ZWRCeUNvbHVtbkhlYWRlci5zaXplPjA6dGhpcy5zZWxlY3RlZEJ5Q29sdW1uSGVhZGVyLmhhcyhoKX19LHtrZXk6ImlzU2VsZWN0ZWRCeUFueUhlYWRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1NlbGVjdGVkQnlSb3dIZWFkZXIo''@;'; put 'put ''LTEpfHx0aGlzLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigtMSl8fHRoaXMuaXNTZWxlY3RlZEJ5Q29ybmVyKCl9fSx7a2V5OiJpc1NlbGVjdGVkQnlDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0ZWRCeUNvcm5lcn19LHtrZXk6ImluSW5TZWxlY3Rpb24iLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnNlbGVjdGVkUmFuZ2UuaW5jbHVkZXMoaCl9fSx7a2V5OiJpc0NlbGxDb3JuZXJWaXNpYmxlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNldHRpbmdzLmZpbGxIYW5kbGUmJiF0aGlzLnRhYmxlUHJvcHMuaXNFZGl0b3JPcGVuZWQo''@;'; put 'put ''KSYmIXRoaXMuaXNNdWx0aXBsZSgpfX0se2tleToiaXNBcmVhQ29ybmVyVmlzaWJsZSIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuKCFOdW1iZXIuaXNJbnRlZ2VyKGgpfHxoPT09dGhpcy5nZXRMYXllckxldmVsKCkpJiZ0aGlzLnNldHRpbmdzLmZpbGxIYW5kbGUmJiF0aGlzLnRhYmxlUHJv''@;'; put 'put ''cHMuaXNFZGl0b3JPcGVuZWQoKSYmdGhpcy5pc011bHRpcGxlKCl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkUmFuZ2UuY2xlYXIoKSx0aGlzLmhpZ2hsaWdodC5jbGVhcigpfX0se2tleToiZGVzZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKCl7IXRoaXMuaXNT''@;'; put 'put ''ZWxlY3RlZCgpfHwodGhpcy5pblByb2dyZXNzPSExLHRoaXMuY2xlYXIoKSx0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyRGVzZWxlY3QiKSl9fSx7a2V5OiJzZWxlY3RBbGwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0m''@;'; put 'put ''JmFyZ3VtZW50c1swXSx2PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0seT10aGlzLnRhYmxlUHJvcHMuY291bnRSb3dzKCksQz10aGlzLnRhYmxlUHJvcHMuY291bnRDb2xzKCk7aWYoaHx8dnx8MCE9PXkmJjAhPT1DKXt2YXIgST10aGlz''@;'; put 'put ''LnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3Jkcyh2Py0xOjAsaD8tMTowKTt0aGlzLmNsZWFyKCksdGhpcy5zZXRSYW5nZVN0YXJ0T25seShJKSx0aGlzLnNlbGVjdGVkQnlSb3dIZWFkZXIuYWRkKHRoaXMuZ2V0TGF5ZXJMZXZlbCgpKSx0aGlzLnNlbGVjdGVkQnlDb2x1bW5IZWFkZXIuYWRk''@;'; put 'put ''KHRoaXMuZ2V0TGF5ZXJMZXZlbCgpKSx0aGlzLnNldFJhbmdlRW5kKHRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKHktMSxDLTEpKSx0aGlzLmZpbmlzaCgpfX19LHtrZXk6InNlbGVjdENlbGxzIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLHk9Q08oaCk7aWYoMT09PXkp''@;'; put 'put ''cmV0dXJuITE7aWYoMD09PXkpdGhyb3cgbmV3IEVycm9yKFAyKHNTZXx8KHNTZT1mdW5jdGlvbiBNJGUoZCxnKXtyZXR1cm4gZ3x8KGc9ZC5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUoZyl9fSkpfShb''@;'; put 'put ''IlVuc3VwcG9ydGVkIGZvcm1hdCBvZiB0aGUgc2VsZWN0aW9uIHJhbmdlcyB3YXMgcGFzc2VkLiBUbyBzZWxlY3QgY2VsbHMgcGFzcyBcbiAgICAgICAgdGhlIGNvb3JkaW5hdGVzIGFzIGFuIGFycmF5IG9mIGFycmF5cyAoW1tyb3dTdGFydCwgY29sdW1uU3RhcnQvY29sdW1uUHJvcFN0YXJ0''@;'; put 'put ''LCByb3dFbmQsIFxuICAgICAgICBjb2x1bW5FbmQvY29sdW1uUHJvcEVuZF1dKSBvciBhcyBhbiBhcnJheSBvZiBDZWxsUmFuZ2Ugb2JqZWN0cy4iXSxbIlVuc3VwcG9ydGVkIGZvcm1hdCBvZiB0aGUgc2VsZWN0aW9uIHJhbmdlcyB3YXMgcGFzc2VkLiBUbyBzZWxlY3QgY2VsbHMgcGFzc1xc''@;'; put 'put ''eDIwXG4gICAgICAgIHRoZSBjb29yZGluYXRlcyBhcyBhbiBhcnJheSBvZiBhcnJheXMgKFtbcm93U3RhcnQsIGNvbHVtblN0YXJ0L2NvbHVtblByb3BTdGFydCwgcm93RW5kLFxceDIwXG4gICAgICAgIGNvbHVtbkVuZC9jb2x1bW5Qcm9wRW5kXV0pIG9yIGFzIGFuIGFycmF5IG9mIENlbGxS''@;'; put 'put ''YW5nZSBvYmplY3RzLiJdKSkpKTt2YXIgQz11eih5LHtwcm9wVG9Db2w6ZnVuY3Rpb24oQmUpe3JldHVybiB2LnRhYmxlUHJvcHMucHJvcFRvQ29sKEJlKX0sa2VlcERpcmVjdGlvbjohMH0pLEk9dGhpcy50YWJsZVByb3BzLmNvdW50Um93cygpLFo9dGhpcy50YWJsZVByb3BzLmNvdW50Q29s''@;'; put 'put ''cygpLHVlPSFoLnNvbWUoZnVuY3Rpb24oX2Upe3ZhciBOZT11U2UoQyhfZSksNCkscHQ9TmVbMV0sT3Q9TmVbMl0sJHQ9TmVbM107cmV0dXJuIShPdyhOZVswXSxJKSYmT3cocHQsWikmJk93KE90LEkpJiZPdygkdCxaKSl9KTtyZXR1cm4gdWUmJih0aGlzLmNsZWFyKCksVXIoaCxmdW5jdGlv''@;'; put 'put ''bihfZSl7dmFyIE5lPXVTZShDKF9lKSw0KSxPdD1OZVsyXSwkdD1OZVszXTt2LnNldFJhbmdlU3RhcnRPbmx5KHYudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKE5lWzBdLE5lWzFdKSwhMSksdi5zZXRSYW5nZUVuZCh2LnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhPdCwkdCkpLHYu''@;'; put 'put ''ZmluaXNoKCl9KSksdWV9fSx7a2V5OiJzZWxlY3RDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06aCx5PWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2Fy''@;'; put 'put ''Z3VtZW50c1syXTotMSxDPSJzdHJpbmciPT10eXBlb2YgaD90aGlzLnRhYmxlUHJvcHMucHJvcFRvQ29sKGgpOmgsST0ic3RyaW5nIj09dHlwZW9mIHY/dGhpcy50YWJsZVByb3BzLnByb3BUb0NvbCh2KTp2LFo9dGhpcy50YWJsZVByb3BzLmNvdW50Q29scygpLHVlPXRoaXMudGFibGVQcm9w''@;'; put 'put ''cy5jb3VudFJvd3MoKSxfZT1PdyhDLFopJiZPdyhJLFopO3JldHVybiBfZSYmKHRoaXMuc2V0UmFuZ2VTdGFydE9ubHkodGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoeSxDKSksdGhpcy5zZXRSYW5nZUVuZCh0aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3Jkcyh1ZS0xLEkp''@;'; put 'put ''KSx0aGlzLmZpbmlzaCgpKSxfZX19LHtrZXk6InNlbGVjdFJvd3MiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpoLHk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/''@;'; put 'put ''YXJndW1lbnRzWzJdOi0xLEM9dGhpcy50YWJsZVByb3BzLmNvdW50Um93cygpLEk9dGhpcy50YWJsZVByb3BzLmNvdW50Q29scygpLFo9T3coaCxDKSYmT3codixDKTtyZXR1cm4gWiYmKHRoaXMuc2V0UmFuZ2VTdGFydE9ubHkodGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoaCx5''@;'; put 'put ''KSksdGhpcy5zZXRSYW5nZUVuZCh0aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3Jkcyh2LEktMSkpLHRoaXMuZmluaXNoKCkpLFp9fSx7a2V5OiJyZWZyZXNoIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuaGlnaGxpZ2h0LmdldEN1c3RvbVNlbGVjdGlvbnMoKS5mb3JFYWNoKGZ1bmN0''@;'; put 'put ''aW9uKF9lKXtfZS5jb21taXQoKX0pLHRoaXMuaXNTZWxlY3RlZCgpKXt2YXIgdj10aGlzLmhpZ2hsaWdodC5nZXRDZWxsKCkseT10aGlzLmdldExheWVyTGV2ZWwoKTt2LmNvbW1pdCgpLnN5bmNXaXRoKHRoaXMuc2VsZWN0ZWRSYW5nZS5jdXJyZW50KCkpO2Zvcih2YXIgQz0wO0M8dGhpcy5z''@;'; put 'put ''ZWxlY3RlZFJhbmdlLnNpemUoKTtDKz0xKXt0aGlzLmhpZ2hsaWdodC51c2VMYXllckxldmVsKEMpO3ZhciBJPXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZU9yR2V0QXJlYSgpLFo9dGhpcy5oaWdobGlnaHQuY3JlYXRlT3JHZXRIZWFkZXIoKSx1ZT10aGlzLmhpZ2hsaWdodC5jcmVhdGVPckdldEFj''@;'; put 'put ''dGl2ZUhlYWRlcigpO0kuY29tbWl0KCksWi5jb21taXQoKSx1ZS5jb21taXQoKX10aGlzLmhpZ2hsaWdodC51c2VMYXllckxldmVsKHkpfX19XSksZH0oKTtCMihoU2UsdWQpO2NvbnN0IFQkZT1oU2U7ZnVuY3Rpb24gdXRlKGQsZyl7dmFyIGg9InN0cmluZyI9PXR5cGVvZiBkP1plZShkKTpk''@;'; put 'put ''O2lmKHhsKGgpKXt2YXIgdj14bChnKSx5PXt9O3JldHVybiBHbChoLGZ1bmN0aW9uKEMsSSl7IkNFTExfVFlQRSIhPT1JJiYoIXZ8fHYmJiFvMShnLEkpKSYmKHlbSV09Qyl9KSx5fX1mdW5jdGlvbiBjdGUoZCl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZCkmJmQ+PTB9ZnVuY3Rpb24gZnRl''@;'; put 'put ''KGQsZyl7aWYoIWQoKSl0aHJvdyBuZXcgRXJyb3IoIkFzc2VydGlvbiBmYWlsZWQ6ICIuY29uY2F0KGcpKX1mdW5jdGlvbiBodGUoZCl7cmV0dXJuIG51bGw9PWR9ZnVuY3Rpb24gcXBlKGQpe3JldHVybihxcGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBT''@;'; put 'put ''eW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1jb25z''@;'; put 'put ''dCBkU2U9ZnVuY3Rpb24oKXtyZXR1cm57YWN0aXZlSGVhZGVyQ2xhc3NOYW1lOiJodF9fYWN0aXZlX2hpZ2hsaWdodCIsYWxsb3dFbXB0eTohMCxhbGxvd0h0bWw6ITEsYWxsb3dJbnNlcnRDb2x1bW46ITAsYWxsb3dJbnNlcnRSb3c6ITAsYWxsb3dJbnZhbGlkOiEwLGFsbG93UmVtb3ZlQ29s''@;'; put 'put ''dW1uOiEwLGFsbG93UmVtb3ZlUm93OiEwLGF1dG9Db2x1bW5TaXplOnZvaWQgMCxhdXRvUm93U2l6ZTp2b2lkIDAsYXV0b1dyYXBDb2w6ITEsYXV0b1dyYXBSb3c6ITEsYmluZFJvd3NXaXRoSGVhZGVyczp2b2lkIDAsY2VsbDpbXSxjZWxsczp2b2lkIDAsY2hlY2tlZFRlbXBsYXRlOnZvaWQg''@;'; put 'put ''MCxjbGFzc05hbWU6dm9pZCAwLGNvbEhlYWRlcnM6bnVsbCxjb2xsYXBzaWJsZUNvbHVtbnM6dm9pZCAwLGNvbHVtbkhlYWRlckhlaWdodDp2b2lkIDAsY29sdW1uczp2b2lkIDAsY29sdW1uU29ydGluZzp2b2lkIDAsY29sdW1uU3VtbWFyeTp2b2lkIDAsY29sV2lkdGhzOnZvaWQgMCxjb21t''@;'; put 'put ''ZW50ZWRDZWxsQ2xhc3NOYW1lOiJodENvbW1lbnRDZWxsIixjb21tZW50czohMSxjb250ZXh0TWVudTp2b2lkIDAsY29weWFibGU6ITAsY29weVBhc3RlOiEwLGNvcnJlY3RGb3JtYXQ6ITEsY3VycmVudENvbENsYXNzTmFtZTp2b2lkIDAsY3VycmVudEhlYWRlckNsYXNzTmFtZToiaHRfX2hp''@;'; put 'put ''Z2hsaWdodCIsY3VycmVudFJvd0NsYXNzTmFtZTp2b2lkIDAsY3VzdG9tQm9yZGVyczohMSxkYXRhOnZvaWQgMCxkYXRhU2NoZW1hOnZvaWQgMCxkYXRlRm9ybWF0OiJERC9NTS9ZWVlZIixkYXRlUGlja2VyQ29uZmlnOnZvaWQgMCxkZWZhdWx0RGF0ZTp2b2lkIDAsZGlzYWJsZVZpc3VhbFNl''@;'; put 'put ''bGVjdGlvbjohMSxkcmFnVG9TY3JvbGw6ITAsZHJvcGRvd25NZW51OnZvaWQgMCxlZGl0b3I6dm9pZCAwLGVudGVyQmVnaW5zRWRpdGluZzohMCxlbnRlck1vdmVzOntjb2w6MCxyb3c6MX0sZmlsbEhhbmRsZTp7YXV0b0luc2VydFJvdzohMX0sZmlsdGVyOiEwLGZpbHRlcmluZ0Nhc2VTZW5z''@;'; put 'put ''aXRpdmU6ITEsZmlsdGVyczp2b2lkIDAsZml4ZWRDb2x1bW5zTGVmdDowLGZpeGVkQ29sdW1uc1N0YXJ0OjAsZml4ZWRSb3dzQm90dG9tOjAsZml4ZWRSb3dzVG9wOjAsZm9ybXVsYXM6dm9pZCAwLGZyYWdtZW50U2VsZWN0aW9uOiExLGhlaWdodDp2b2lkIDAsaGlkZGVuQ29sdW1uczp2b2lk''@;'; put 'put ''IDAsaGlkZGVuUm93czp2b2lkIDAsaW52YWxpZENlbGxDbGFzc05hbWU6Imh0SW52YWxpZCIsaXNFbXB0eUNvbDpmdW5jdGlvbihnKXt2YXIgaCx2O2ZvcihoPTAsdj10aGlzLmNvdW50Um93cygpO2g8djtoKyspaWYoITE9PT1kYyh0aGlzLmdldERhdGFBdENlbGwoaCxnKSkpcmV0dXJuITE7''@;'; put 'put ''cmV0dXJuITB9LGlzRW1wdHlSb3c6ZnVuY3Rpb24oZyl7dmFyIGgsdix5LEM7Zm9yKGg9MCx2PXRoaXMuY291bnRDb2xzKCk7aDx2O2grKylpZighMT09PWRjKHk9dGhpcy5nZXREYXRhQXRDZWxsKGcsaCkpKXJldHVybiJvYmplY3QiPT09cXBlKHkpJiYoQz10aGlzLmdldENlbGxNZXRhKGcs''@;'; put 'put ''aCksJGhlKHRoaXMuZ2V0U2NoZW1hKClbQy5wcm9wXSx5KSk7cmV0dXJuITB9LGxhYmVsOnZvaWQgMCxsYW5ndWFnZToiZW4tVVMiLGxheW91dERpcmVjdGlvbjoiaW5oZXJpdCIsbGljZW5zZUtleTp2b2lkIDAsbG9jYWxlOiJlbi1VUyIsbWFudWFsQ29sdW1uRnJlZXplOnZvaWQgMCxtYW51''@;'; put 'put ''YWxDb2x1bW5Nb3ZlOnZvaWQgMCxtYW51YWxDb2x1bW5SZXNpemU6dm9pZCAwLG1hbnVhbFJvd01vdmU6dm9pZCAwLG1hbnVhbFJvd1Jlc2l6ZTp2b2lkIDAsbWF4Q29sczoxLzAsbWF4Um93czoxLzAsbWVyZ2VDZWxsczohMSxtaW5Db2xzOjAsbWluUm93czowLG1pblNwYXJlQ29sczowLG1p''@;'; put 'put ''blNwYXJlUm93czowLG11bHRpQ29sdW1uU29ydGluZzp2b2lkIDAsbmVzdGVkSGVhZGVyczp2b2lkIDAsbmVzdGVkUm93czp2b2lkIDAsbm9Xb3JkV3JhcENsYXNzTmFtZToiaHROb1dyYXAiLG51bWVyaWNGb3JtYXQ6dm9pZCAwLG9ic2VydmVET01WaXNpYmlsaXR5OiEwLG91dHNpZGVDbGlj''@;'; put 'put ''a0Rlc2VsZWN0czohMCxwZXJzaXN0ZW50U3RhdGU6dm9pZCAwLHBsYWNlaG9sZGVyOnZvaWQgMCxwbGFjZWhvbGRlckNlbGxDbGFzc05hbWU6Imh0UGxhY2Vob2xkZXIiLHByZXZlbnRPdmVyZmxvdzohMSxwcmV2ZW50V2hlZWw6ITEscmVhZE9ubHk6ITEscmVhZE9ubHlDZWxsQ2xhc3NOYW1l''@;'; put 'put ''OiJodERpbW1lZCIscmVuZGVyQWxsUm93czp2b2lkIDAscmVuZGVyZXI6dm9pZCAwLHJvd0hlYWRlcnM6dm9pZCAwLHJvd0hlYWRlcldpZHRoOnZvaWQgMCxyb3dIZWlnaHRzOnZvaWQgMCxzZWFyY2g6ITEsc2VsZWN0aW9uTW9kZToibXVsdGlwbGUiLHNlbGVjdE9wdGlvbnM6dm9pZCAwLHNr''@;'; put 'put ''aXBDb2x1bW5PblBhc3RlOiExLHNraXBSb3dPblBhc3RlOiExLHNvcnRCeVJlbGV2YW5jZTohMCxzb3VyY2U6dm9pZCAwLHN0YXJ0Q29sczo1LHN0YXJ0Um93czo1LHN0cmV0Y2hIOiJub25lIixzdHJpY3Q6dm9pZCAwLHRhYmxlQ2xhc3NOYW1lOnZvaWQgMCx0YWJNb3Zlczp7cm93OjAsY29s''@;'; put 'put ''OjF9LHRpdGxlOnZvaWQgMCx0cmltRHJvcGRvd246ITAsdHJpbVJvd3M6dm9pZCAwLHRyaW1XaGl0ZXNwYWNlOiEwLHR5cGU6InRleHQiLHVuY2hlY2tlZFRlbXBsYXRlOnZvaWQgMCx1bmRvOnZvaWQgMCx2YWxpZGF0b3I6dm9pZCAwLHZpZXdwb3J0Q29sdW1uUmVuZGVyaW5nT2Zmc2V0OiJh''@;'; put 'put ''dXRvIix2aWV3cG9ydFJvd1JlbmRlcmluZ09mZnNldDoiYXV0byIsdmlzaWJsZVJvd3M6MTAsd2lkdGg6dm9pZCAwLHdvcmRXcmFwOiEwfX07ZnVuY3Rpb24gcFNlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8''@;'; put 'put ''ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gZ1NlKGQsZyxoKXtyZXR1cm4gZyYmcFNlKGQucHJvdG90eXBlLGcpLGgmJnBTZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGR9ZnVuY3Rpb24gbVNlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9dmFyIEwkZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7bVNl''@;'; put 'put ''KHRoaXMsZCksdGhpcy5tZXRhQ3Rvcj1mdW5jdGlvbiBEJGUoKXtyZXR1cm4gZ1NlKGZ1bmN0aW9uIGQoKXttU2UodGhpcyxkKX0pfSgpLHRoaXMubWV0YT10aGlzLm1ldGFDdG9yLnByb3RvdHlwZSxJMSh0aGlzLm1ldGEsZFNlKCkpLHRoaXMubWV0YS5pbnN0YW5jZT1nfXJldHVybiBnU2Uo''@;'; put 'put ''ZCxbe2tleToiZ2V0TWV0YUNvbnN0cnVjdG9yIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1ldGFDdG9yfX0se2tleToiZ2V0TWV0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXRhfX0se2tleToidXBkYXRlTWV0YSIsdmFsdWU6ZnVuY3Rpb24oaCl7STEodGhpcy5t''@;'; put 'put ''ZXRhLGgpLEkxKHRoaXMubWV0YSx1dGUoaC50eXBlLGgpKX19XSksZH0oKTtmdW5jdGlvbiB2U2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYu''@;'; put 'put ''d3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgQiRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnKXshZnVuY3Rpb24gTyRlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBh''@;'; put 'put ''IGZ1bmN0aW9uIil9KHRoaXMsZCk7dmFyIGg9Zy5nZXRNZXRhQ29uc3RydWN0b3IoKTt0aGlzLm1ldGE9bmV3IGh9cmV0dXJuIGZ1bmN0aW9uIFIkZShkLGcsaCl7ZyYmdlNlKGQucHJvdG90eXBlLGcpLGgmJnZTZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3''@;'; put 'put ''cml0YWJsZTohMX0pfShkLFt7a2V5OiJnZXRNZXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1ldGF9fSx7a2V5OiJ1cGRhdGVNZXRhIix2YWx1ZTpmdW5jdGlvbihoKXtJMSh0aGlzLm1ldGEsaCksSTEodGhpcy5tZXRhLHV0ZShoLnR5cGUsaCkpfX1dKSxkfSgpO2Z1bmN0aW9u''@;'; put 'put ''IEFTZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBl''@;'; put 'put ''NmU9ZnVuY3Rpb24oZCl7ZnVuY3Rpb24gZyhoKXsoZnVuY3Rpb24gUCRlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGcpLHRoaXMudmFsdWVGYWN0b3J5PWgsdGhpcy5kYXRh''@;'; put 'put ''PVtdLHRoaXMuaW5kZXg9W10sdGhpcy5ob2xlcz1uZXcgU2V0fXJldHVybiBmdW5jdGlvbiBGJGUoZCxnLGgpe2cmJkFTZShkLnByb3RvdHlwZSxnKSxoJiZBU2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZyxbe2tleToib2J0YWlu''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbih2KXtmdGUoZnVuY3Rpb24oKXtyZXR1cm4gY3RlKHYpfSwiRXhwZWN0aW5nIGFuIHVuc2lnbmVkIG51bWJlci4iKTt2YXIgQyx5PXRoaXMuX2dldFN0b3JhZ2VJbmRleEJ5S2V5KHYpO2lmKHk+PTApdm9pZCAwPT09KEM9dGhpcy5kYXRhW3ldKSYmKEM9dGhpcy52''@;'; put 'put ''YWx1ZUZhY3RvcnkodiksdGhpcy5kYXRhW3ldPUMpO2Vsc2UgaWYoQz10aGlzLnZhbHVlRmFjdG9yeSh2KSx0aGlzLmhvbGVzLnNpemU+MCl7dmFyIEk9dGhpcy5ob2xlcy52YWx1ZXMoKS5uZXh0KCkudmFsdWU7dGhpcy5ob2xlcy5kZWxldGUoSSksdGhpcy5kYXRhW0ldPUMsdGhpcy5pbmRl''@;'; put 'put ''eFt2XT1JfWVsc2UgdGhpcy5kYXRhLnB1c2goQyksdGhpcy5pbmRleFt2XT10aGlzLmRhdGEubGVuZ3RoLTE7cmV0dXJuIEN9fSx7a2V5OiJpbnNlcnQiLHZhbHVlOmZ1bmN0aW9uKHYpe3ZhciB5LEM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRz''@;'; put 'put ''WzFdOjE7ZnRlKGZ1bmN0aW9uKCl7cmV0dXJuIGN0ZSh2KXx8aHRlKHYpfSwiRXhwZWN0aW5nIGFuIHVuc2lnbmVkIG51bWJlciBvciBudWxsL3VuZGVmaW5lZCBhcmd1bWVudC4iKTtmb3IodmFyIEk9W10sWj10aGlzLmRhdGEubGVuZ3RoLHVlPTA7dWU8Qzt1ZSsrKUkucHVzaChaK3VlKSx0''@;'; put 'put ''aGlzLmRhdGEucHVzaCh2b2lkIDApOyh5PXRoaXMuaW5kZXgpLnNwbGljZS5hcHBseSh5LFtodGUodik/dGhpcy5pbmRleC5sZW5ndGg6diwwXS5jb25jYXQoSSkpfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbih2KXt2YXIgeT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFy''@;'; put 'put ''Z3VtZW50c1sxXT9hcmd1bWVudHNbMV06MTtmdGUoZnVuY3Rpb24oKXtyZXR1cm4gY3RlKHYpfHxodGUodil9LCJFeHBlY3RpbmcgYW4gdW5zaWduZWQgbnVtYmVyIG9yIG51bGwvdW5kZWZpbmVkIGFyZ3VtZW50LiIpO2Zvcih2YXIgQz10aGlzLmluZGV4LnNwbGljZShodGUodik/dGhpcy5p''@;'; put 'put ''bmRleC5sZW5ndGgteTp2LHkpLEk9MDtJPEMubGVuZ3RoO0krKyl7dmFyIFo9Q1tJXTsibnVtYmVyIj09dHlwZW9mIFomJnRoaXMuaG9sZXMuYWRkKFopfX19LHtrZXk6InNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YS5sZW5ndGgtdGhpcy5ob2xlcy5zaXplfX0se2tl''@;'; put 'put ''eToidmFsdWVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB2PXRoaXM7cmV0dXJuIGc0KHRoaXMuZGF0YSxmdW5jdGlvbih5LEMpe3JldHVybiF2LmhvbGVzLmhhcyhDKX0pW1N5bWJvbC5pdGVyYXRvcl0oKX19LHtrZXk6ImVudHJpZXMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB2PVtdLHk9''@;'; put 'put ''MDt5PHRoaXMuZGF0YS5sZW5ndGg7eSsrKXt2YXIgQz10aGlzLl9nZXRLZXlCeVN0b3JhZ2VJbmRleCh5KTstMSE9PUMmJnYucHVzaChbQyx0aGlzLmRhdGFbeV1dKX12YXIgST0wO3JldHVybntuZXh0OmZ1bmN0aW9uKCl7aWYoSTx2Lmxlbmd0aCl7dmFyIHVlPXZbSV07cmV0dXJuIEkrPTEs''@;'; put 'put ''e3ZhbHVlOnVlLGRvbmU6ITF9fXJldHVybntkb25lOiEwfX19fX0se2tleToiY2xlYXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kYXRhPVtdLHRoaXMuaW5kZXg9W10sdGhpcy5ob2xlcy5jbGVhcigpfX0se2tleToiX2dldFN0b3JhZ2VJbmRleEJ5S2V5Iix2YWx1ZTpmdW5jdGlvbih2KXty''@;'; put 'put ''ZXR1cm4gdGhpcy5pbmRleC5sZW5ndGg+dj90aGlzLmluZGV4W3ZdOi0xfX0se2tleToiX2dldEtleUJ5U3RvcmFnZUluZGV4Iix2YWx1ZTpmdW5jdGlvbih2KXtyZXR1cm4gdGhpcy5pbmRleC5pbmRleE9mKHYpfX0se2tleTpTeW1ib2wuaXRlcmF0b3IsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5lbnRyaWVzKCl9fV0pLGd9KCk7ZnVuY3Rpb24geVNlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIFYkZT1bImRhdGEiLCJ3aWR0aCJdLGokZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7dmFyIGg9dGhpczsoZnVuY3Rpb24gSCRlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNh''@;'; put 'put ''bGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuZ2xvYmFsTWV0YT1nLHRoaXMubWV0YXM9bmV3IGU2ZShmdW5jdGlvbigpe3JldHVybiBoLl9jcmVhdGVNZXRhKCl9KX1yZXR1cm4gZnVuY3Rpb24gTiRlKGQsZyxoKXtnJiZ5U2UoZC5wcm90b3R5cGUsZyksaCYmeVNl''@;'; put 'put ''KGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InVwZGF0ZU1ldGEiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9dGhpcy5nZXRNZXRhKGgpO0kxKHksdiksSTEoeSx1dGUodi50eXBlLHkpKX19LHtrZXk6ImNyZWF0ZUNv''@;'; put 'put ''bHVtbiIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt0aGlzLm1ldGFzLmluc2VydChoLHYpfX0se2tleToicmVtb3ZlQ29sdW1uIix2YWx1ZTpmdW5jdGlvbihoLHYpe3RoaXMubWV0YXMucmVtb3ZlKGgsdil9fSx7a2V5OiJnZXRNZXRhIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5tZXRh''@;'; put 'put ''cy5vYnRhaW4oaCl9fSx7a2V5OiJnZXRNZXRhQ29uc3RydWN0b3IiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLm1ldGFzLm9idGFpbihoKS5jb25zdHJ1Y3Rvcn19LHtrZXk6ImNsZWFyQ2FjaGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tZXRhcy5jbGVhcigpfX0se2tleToiX2Ny''@;'; put 'put ''ZWF0ZU1ldGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIEkkZShkKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W107ZnVuY3Rpb24gaCgpe31TdihoLGQpO2Zvcih2YXIgdj0wO3Y8Zy5sZW5ndGg7disrKWgu''@;'; put 'put ''cHJvdG90eXBlW2dbdl1dPXZvaWQgMDtyZXR1cm4gaH0odGhpcy5nbG9iYWxNZXRhLmdldE1ldGFDb25zdHJ1Y3RvcigpLFYkZSkucHJvdG90eXBlfX1dKSxkfSgpO2Z1bmN0aW9uIFokZShkKXtyZXR1cm4gZnVuY3Rpb24gWSRlKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIHQ2ZShk''@;'; put 'put ''KX0oZCl8fGZ1bmN0aW9uIFckZShkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBHJGUoZCxnKXtpZihkKXtpZigic3RyaW5nIj09''@;'; put 'put ''dHlwZW9mIGQpcmV0dXJuIHQ2ZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5''@;'; put 'put ''LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gdDZlKGQsZyl9fShkKXx8ZnVuY3Rpb24geiRlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBu''@;'; put 'put ''b24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gdDZlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7''@;'; put 'put ''Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gd1NlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVl''@;'; put 'put ''ImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIEokZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7dmFyIGg9dGhpczsoZnVuY3Rpb24gVSRlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fu''@;'; put 'put ''bm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuY29sdW1uTWV0YT1nLHRoaXMubWV0YXM9bmV3IGU2ZShmdW5jdGlvbigpe3JldHVybiBoLl9jcmVhdGVSb3coKX0pfXJldHVybiBmdW5jdGlvbiBRJGUoZCxnLGgpe2cmJndTZShkLnByb3RvdHlwZSxnKSxo''@;'; put 'put ''JiZ3U2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToidXBkYXRlTWV0YSIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3ZhciBDPXRoaXMuZ2V0TWV0YShoLHYpO0kxKEMseSksSTEoQyx1dGUoeS50eXBlLEMpKX19LHtrZXk6''@;'; put 'put ''ImNyZWF0ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt0aGlzLm1ldGFzLmluc2VydChoLHYpfX0se2tleToiY3JlYXRlQ29sdW1uIix2YWx1ZTpmdW5jdGlvbihoLHYpe2Zvcih2YXIgeT0wO3k8dGhpcy5tZXRhcy5zaXplKCk7eSsrKXRoaXMubWV0YXMub2J0YWluKHkpLmluc2VydChoLHYp''@;'; put 'put ''fX0se2tleToicmVtb3ZlUm93Iix2YWx1ZTpmdW5jdGlvbihoLHYpe3RoaXMubWV0YXMucmVtb3ZlKGgsdil9fSx7a2V5OiJyZW1vdmVDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGgsdil7Zm9yKHZhciB5PTA7eTx0aGlzLm1ldGFzLnNpemUoKTt5KyspdGhpcy5tZXRhcy5vYnRhaW4oeSkucmVt''@;'; put 'put ''b3ZlKGgsdil9fSx7a2V5OiJnZXRNZXRhIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7dmFyIEM9dGhpcy5tZXRhcy5vYnRhaW4oaCkub2J0YWluKHYpO3JldHVybiB2b2lkIDA9PT15P0M6Q1t5XX19LHtrZXk6InNldE1ldGEiLHZhbHVlOmZ1bmN0aW9uKGgsdix5LEMpe3RoaXMubWV0YXMub2J0''@;'; put 'put ''YWluKGgpLm9idGFpbih2KVt5XT1DfX0se2tleToicmVtb3ZlTWV0YSIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe2RlbGV0ZSB0aGlzLm1ldGFzLm9idGFpbihoKS5vYnRhaW4odilbeV19fSx7a2V5OiJnZXRNZXRhcyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGg9W10sdj1BcnJheS5mcm9t''@;'; put 'put ''KHRoaXMubWV0YXMudmFsdWVzKCkpLHk9MDt5PHYubGVuZ3RoO3krKyloLnB1c2guYXBwbHkoaCxaJGUodlt5XS52YWx1ZXMoKSkpO3JldHVybiBofX0se2tleToiZ2V0TWV0YXNBdFJvdyIsdmFsdWU6ZnVuY3Rpb24oaCl7ZnRlKGZ1bmN0aW9uKCl7cmV0dXJuIGN0ZShoKX0sIkV4cGVjdGlu''@;'; put 'put ''ZyBhbiB1bnNpZ25lZCBudW1iZXIuIik7dmFyIHY9bmV3IE1hcCh0aGlzLm1ldGFzKTtyZXR1cm4gdi5oYXMoaCk/QXJyYXkuZnJvbSh2LmdldChoKS52YWx1ZXMoKSk6W119fSx7a2V5OiJjbGVhckNhY2hlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubWV0YXMuY2xlYXIoKX19LHtrZXk6Il9j''@;'; put 'put ''cmVhdGVSb3ciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcztyZXR1cm4gbmV3IGU2ZShmdW5jdGlvbih2KXtyZXR1cm4gaC5fY3JlYXRlTWV0YSh2KX0pfX0se2tleToiX2NyZWF0ZU1ldGEiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBuZXcodGhpcy5jb2x1bW5NZXRhLmdldE1ldGFD''@;'; put 'put ''b25zdHJ1Y3RvcihoKSl9fV0pLGR9KCk7ZnVuY3Rpb24gWCRlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gYlNlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKysp''@;'; put 'put ''e3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIF9TZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7dmFyIGg9dGhp''@;'; put 'put ''cyx2PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSx5PWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpbXTtYJGUodGhpcyxkKSx0aGlzLmhvdD1nLHRoaXMuZ2xvYmFsTWV0YT1uZXcg''@;'; put 'put ''TCRlKGcpLHRoaXMudGFibGVNZXRhPW5ldyBCJGUodGhpcy5nbG9iYWxNZXRhKSx0aGlzLmNvbHVtbk1ldGE9bmV3IGokZSh0aGlzLmdsb2JhbE1ldGEpLHRoaXMuY2VsbE1ldGE9bmV3IEokZSh0aGlzLmNvbHVtbk1ldGEpLHkuZm9yRWFjaChmdW5jdGlvbihDKXtyZXR1cm4gbmV3IEMoaCl9''@;'; put 'put ''KSx0aGlzLmdsb2JhbE1ldGEudXBkYXRlTWV0YSh2KX1yZXR1cm4gZnVuY3Rpb24gSyRlKGQsZyxoKXtnJiZiU2UoZC5wcm90b3R5cGUsZyksaCYmYlNlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImdldEdsb2JhbE1l''@;'; put 'put ''dGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2xvYmFsTWV0YS5nZXRNZXRhKCl9fSx7a2V5OiJ1cGRhdGVHbG9iYWxNZXRhIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmdsb2JhbE1ldGEudXBkYXRlTWV0YShoKX19LHtrZXk6ImdldFRhYmxlTWV0YSIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gdGhpcy50YWJsZU1ldGEuZ2V0TWV0YSgpfX0se2tleToidXBkYXRlVGFibGVNZXRhIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLnRhYmxlTWV0YS51cGRhdGVNZXRhKGgpfX0se2tleToiZ2V0Q29sdW1uTWV0YSIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuY29sdW1u''@;'; put 'put ''TWV0YS5nZXRNZXRhKGgpfX0se2tleToidXBkYXRlQ29sdW1uTWV0YSIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt0aGlzLmNvbHVtbk1ldGEudXBkYXRlTWV0YShoLHYpfX0se2tleToiZ2V0Q2VsbE1ldGEiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgQz15LnZpc3VhbFJvdyxJPXkudmlzdWFs''@;'; put 'put ''Q29sdW1uLFo9dGhpcy5jZWxsTWV0YS5nZXRNZXRhKGgsdik7cmV0dXJuIFoudmlzdWFsUm93PUMsWi52aXN1YWxDb2w9SSxaLnJvdz1oLFouY29sPXYsdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlckdldENlbGxNZXRhIixaKSxafX0se2tleToiZ2V0Q2VsbE1ldGFLZXlWYWx1ZSIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oaCx2LHkpe2lmKCJzdHJpbmciIT10eXBlb2YgeSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBwYXNzZWQgY2VsbCBtZXRhIG9iamVjdCBrZXkgaXMgbm90IGEgc3RyaW5nIik7cmV0dXJuIHRoaXMuY2VsbE1ldGEuZ2V0TWV0YShoLHYseSl9fSx7a2V5OiJzZXRDZWxsTWV0YSIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oaCx2LHksQyl7dGhpcy5jZWxsTWV0YS5zZXRNZXRhKGgsdix5LEMpfX0se2tleToidXBkYXRlQ2VsbE1ldGEiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt0aGlzLmNlbGxNZXRhLnVwZGF0ZU1ldGEoaCx2LHkpfX0se2tleToicmVtb3ZlQ2VsbE1ldGEiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKGgsdix5KXt0aGlzLmNlbGxNZXRhLnJlbW92ZU1ldGEoaCx2LHkpfX0se2tleToiZ2V0Q2VsbHNNZXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNlbGxNZXRhLmdldE1ldGFzKCl9fSx7a2V5OiJnZXRDZWxsc01ldGFBdFJvdyIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuY2VsbE1ldGEuZ2V0TWV0YXNBdFJvdyhoKX19LHtrZXk6ImNyZWF0ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjE7dGhpcy5jZWxsTWV0YS5jcmVhdGVSb3coaCx2KX19LHtr''@;'; put 'put ''ZXk6InJlbW92ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjE7dGhpcy5jZWxsTWV0YS5yZW1vdmVSb3coaCx2KX19LHtrZXk6ImNyZWF0ZUNvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oaCl7''@;'; put 'put ''dmFyIHY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjE7dGhpcy5jZWxsTWV0YS5jcmVhdGVDb2x1bW4oaCx2KSx0aGlzLmNvbHVtbk1ldGEuY3JlYXRlQ29sdW1uKGgsdil9fSx7a2V5OiJyZW1vdmVDb2x1bW4iLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KGgpe3ZhciB2PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToxO3RoaXMuY2VsbE1ldGEucmVtb3ZlQ29sdW1uKGgsdiksdGhpcy5jb2x1bW5NZXRhLnJlbW92ZUNvbHVtbihoLHYpfX0se2tleToiY2xlYXJDZWxsc0NhY2hlIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3RoaXMuY2VsbE1ldGEuY2xlYXJDYWNoZSgpfX0se2tleToiY2xlYXJDYWNoZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNlbGxNZXRhLmNsZWFyQ2FjaGUoKSx0aGlzLmNvbHVtbk1ldGEuY2xlYXJDYWNoZSgpfX1dKSxkfSgpO2Z1bmN0aW9uIENTZShkLGcpe2Zvcih2YXIg''@;'; put 'put ''aD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fUIyKF9TZSx1ZCk7dmFyIGVxZT1mdW5j''@;'; put 'put ''dGlvbigpe2Z1bmN0aW9uIGQoZyl7dmFyIGg9dGhpczsoZnVuY3Rpb24gJCRlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMubWV0YU1hbmFnZXI9Zyx0aGlzLm1l''@;'; put 'put ''dGFTeW5jTWVtbz1uZXcgTWFwLGcuYWRkTG9jYWxIb29rKCJhZnRlckdldENlbGxNZXRhIixmdW5jdGlvbih2KXtyZXR1cm4gaC5leHRlbmRDZWxsTWV0YSh2KX0pLHpvLmdldFNpbmdsZXRvbigpLmFkZCgiYmVmb3JlUmVuZGVyIixmdW5jdGlvbih2KXt2JiZoLm1ldGFTeW5jTWVtby5jbGVh''@;'; put 'put ''cigpfSx0aGlzLm1ldGFNYW5hZ2VyLmhvdCl9cmV0dXJuIGZ1bmN0aW9uIHEkZShkLGcsaCl7ZyYmQ1NlKGQucHJvdG90eXBlLGcpLGgmJkNTZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJleHRlbmRDZWxsTWV0YSIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHYseT1oLnJvdyxDPWguY29sO2lmKG51bGw9PT0odj10aGlzLm1ldGFTeW5jTWVtby5nZXQoeSkpfHx2b2lkIDA9PT12fHwhdi5oYXMoQykpe3ZhciBJPWgudmlzdWFsUm93LFo9aC52aXN1YWxDb2wsdWU9dGhpcy5tZXRhTWFuYWdlci5ob3QsX2U9dWUu''@;'; put 'put ''Y29sVG9Qcm9wKFopO2gucHJvcD1fZSx1ZS5ydW5Ib29rcygiYmVmb3JlR2V0Q2VsbE1ldGEiLEksWixoKTt2YXIgQmU9bzEoaCwidHlwZSIpP2gudHlwZTpudWxsLE5lPVUyKGguY2VsbHMpP2guY2VsbHMoeSxDLF9lKTpudWxsO2lmKEJlKWlmKE5lKXt2YXIgS2U7TmUudHlwZT1udWxsIT09''@;'; put 'put ''KEtlPU5lLnR5cGUpJiZ2b2lkIDAhPT1LZT9LZTpCZX1lbHNlIE5lPXt0eXBlOkJlfTtOZSYmdGhpcy5tZXRhTWFuYWdlci51cGRhdGVDZWxsTWV0YSh5LEMsTmUpLHVlLnJ1bkhvb2tzKCJhZnRlckdldENlbGxNZXRhIixJLFosaCksdGhpcy5tZXRhU3luY01lbW8uaGFzKHkpfHx0aGlzLm1l''@;'; put 'put ''dGFTeW5jTWVtby5zZXQoeSxuZXcgU2V0KSx0aGlzLm1ldGFTeW5jTWVtby5nZXQoeSkuYWRkKEMpfX19XSksZH0oKTtmdW5jdGlvbiBrU2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3Vy''@;'; put 'put ''YWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgcnFlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnKXsoZnVuY3Rpb24gdHFlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigi''@;'; put 'put ''Q2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMubWV0YU1hbmFnZXI9Zyx0aGlzLnVzYWdlVHJhY2tlcj1uZXcgU2V0LHRoaXMucHJvcERlc2NyaXB0b3JzPW5ldyBNYXAoW1siZml4ZWRDb2x1bW5zTGVmdCIse3RhcmdldDoiZml4ZWRDb2x1bW5zU3Rh''@;'; put 'put ''cnQiLG9uQ2hhbmdlOmZ1bmN0aW9uKHYpe2lmKHRoaXMubWV0YU1hbmFnZXIuaG90LmlzUnRsKCkmJiJmaXhlZENvbHVtbnNMZWZ0Ij09PXYpdGhyb3cgbmV3IEVycm9yKCJUaGUgYGZpeGVkQ29sdW1uc0xlZnRgIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFJUTC4gUGxlYXNlIHVzZSBvcHRpb24g''@;'; put 'put ''YGZpeGVkQ29sdW1uc1N0YXJ0YC4iKTtpZih0aGlzLnVzYWdlVHJhY2tlci5oYXMoImZpeGVkQ29sdW1uc0xlZnQiKSYmdGhpcy51c2FnZVRyYWNrZXIuaGFzKCJmaXhlZENvbHVtbnNTdGFydCIpKXRocm93IG5ldyBFcnJvcigiVGhlIGBmaXhlZENvbHVtbnNMZWZ0YCBhbmQgYGZpeGVkQ29s''@;'; put 'put ''dW1uc1N0YXJ0YCBzaG91bGQgbm90IGJlIHVzZWQgdG9nZXRoZXIuIFBsZWFzZSB1c2Ugb25seSB0aGUgb3B0aW9uIGBmaXhlZENvbHVtbnNTdGFydGAuIil9fV0sWyJsYXlvdXREaXJlY3Rpb24iLHtvbkNoYW5nZTpmdW5jdGlvbih2LHksQyl7aWYoIUMpdGhyb3cgbmV3IEVycm9yKCJUaGUg''@;'; put 'put ''YCIuY29uY2F0KHYsImAgb3B0aW9uIGNhbiBub3QgYmUgdXBkYXRlZCBhZnRlciB0aGUgSGFuZHNvbnRhYmxlIGlzIGluaXRpYWxpemVkLiIpKX19XV0pLHRoaXMuZXh0ZW5kTWV0YVByb3BzKCl9cmV0dXJuIGZ1bmN0aW9uIG5xZShkLGcsaCl7ZyYma1NlKGQucHJvdG90eXBlLGcpLGgmJmtT''@;'; put 'put ''ZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJleHRlbmRNZXRhUHJvcHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpczt0aGlzLnByb3BEZXNjcmlwdG9ycy5mb3JFYWNoKGZ1bmN0aW9uKHYseSl7dmFyIEM9di50''@;'; put 'put ''YXJnZXQsST12Lm9uQ2hhbmdlLFo9dm9pZCAwPT09ST9mdW5jdGlvbigpe306SSx1ZT0ic3RyaW5nIj09dHlwZW9mIEMsX2U9dWU/Qzp5LEJlPSJfIi5jb25jYXQoX2UpO2gubWV0YU1hbmFnZXIuZ2xvYmFsTWV0YS5tZXRhW0JlXT1oLm1ldGFNYW5hZ2VyLmdsb2JhbE1ldGEubWV0YVtfZV0s''@;'; put 'put ''aC5pbnN0YWxsUHJvcFdhdGNoZXIoeSxCZSxaKSx1ZSYmaC5pbnN0YWxsUHJvcFdhdGNoZXIoQyxCZSxaKX0pfX0se2tleToiaW5zdGFsbFByb3BXYXRjaGVyIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7dmFyIEM9dGhpcztPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5tZXRhTWFuYWdlci5n''@;'; put 'put ''bG9iYWxNZXRhLm1ldGEsaCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbdl19LHNldDpmdW5jdGlvbihaKXt2YXIgdWU9IUMudXNhZ2VUcmFja2VyLmhhcyhoKTtDLnVzYWdlVHJhY2tlci5hZGQoaCkseS5jYWxsKEMsaCxaLHVlKSx0aGlzW3ZdPVp9LGVudW1lcmFibGU6ITAsY29uZmln''@;'; put 'put ''dXJhYmxlOiEwfSl9fV0pLGR9KCksU1NlPShMKDg1NzM1KSwvXihcclxufFxuXHJ8XHJ8XG4pLyksaXFlPS9eW15cdFxyXG5dKy8sTVNlPS9eXHQvO2Z1bmN0aW9uIGN6KGQpe3ZhciBnLGgsdix5LEksQz0iIjtmb3IoZz0wLGg9ZC5sZW5ndGg7ZzxoO2crPTEpe2Zvcih5PWRbZ10ubGVuZ3Ro''@;'; put 'put ''LHY9MDt2PHk7dis9MSl2PjAmJihDKz0iXHQiKSwic3RyaW5nIj09dHlwZW9mKEk9ZFtnXVt2XSk/SS5pbmRleE9mKCJcbiIpPi0xP0MrPSciJy5jb25jYXQoSS5yZXBsYWNlKC8iL2csJyIiJyksJyInKTpDKz1JOkMrPW51bGw9PUk/IiI6STtnIT09aC0xJiYoQys9IlxuIil9cmV0dXJuIEN9''@;'; put 'put ''ZnVuY3Rpb24gbjZlKGQpe3JldHVybihuNmU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYm''@;'; put 'put ''Zy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBFU2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3Vy''@;'; put 'put ''YWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgc3FlPXFaKCJjb3B5YWJsZSIsITEpLHVxZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyxoLHYpeyhmdW5jdGlvbiBhcWUoZCxnKXtpZighKGQgaW5zdGFuY2Vv''@;'; put 'put ''ZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5pbnN0YW5jZT1nLHRoaXMudGFibGVNZXRhPXYsdGhpcy5kYXRhU291cmNlPWgsdGhpcy5kdWNrU2NoZW1hPXRoaXMuZGF0YVNvdXJjZSYmdGhpcy5kYXRh''@;'; put 'put ''U291cmNlWzBdP2xPKHRoaXMuZGF0YVNvdXJjZVswXSk6e30sdGhpcy5jb2xUb1Byb3BDYWNoZT12b2lkIDAsdGhpcy5wcm9wVG9Db2xDYWNoZT12b2lkIDAsdGhpcy5jcmVhdGVNYXAoKX1yZXR1cm4gZnVuY3Rpb24gbHFlKGQsZyxoKXtnJiZFU2UoZC5wcm90b3R5cGUsZyksaCYmRVNlKGQs''@;'; put 'put ''aCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImNyZWF0ZU1hcCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmdldFNjaGVtYSgpO2lmKHZvaWQgMD09PWgpdGhyb3cgbmV3IEVycm9yKCJ0cnlpbmcgdG8gY3JlYXRlIGBj''@;'; put 'put ''b2x1bW5zYCBkZWZpbml0aW9uIGJ1dCB5b3UgZGlkbid0IHByb3ZpZGUgYHNjaGVtYWAgbm9yIGBkYXRhYCIpO3ZhciB5LHY9dGhpcy50YWJsZU1ldGEuY29sdW1ucztpZih0aGlzLmNvbFRvUHJvcENhY2hlPVtdLHRoaXMucHJvcFRvQ29sQ2FjaGU9bmV3IE1hcCx2KXt2YXIgQz0wLEk9MCxa''@;'; put 'put ''PSExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB2KXt2YXIgdWU9SnEoaCk7Qz11ZT4wP3VlOnRoaXMuY291bnRGaXJzdFJvd0tleXMoKSxaPSEwfWVsc2UgQz1NYXRoLm1pbih0aGlzLnRhYmxlTWV0YS5tYXhDb2xzLHYubGVuZ3RoKTtmb3IoeT0wO3k8Qzt5Kyspe3ZhciBCZT1aP3YoeSk6dlt5''@;'; put 'put ''XTtpZih4bChCZSkpe2lmKHZvaWQgMCE9PUJlLmRhdGEpe3ZhciBOZT1aP0k6eTt0aGlzLmNvbFRvUHJvcENhY2hlW05lXT1CZS5kYXRhLHRoaXMucHJvcFRvQ29sQ2FjaGUuc2V0KEJlLmRhdGEsTmUpfUkrPTF9fX1lbHNlIHRoaXMucmVjdXJzaXZlRHVja0NvbHVtbnMoaCl9fSx7a2V5OiJj''@;'; put 'put ''b3VudEZpcnN0Um93S2V5cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gSmRlKHRoaXMuZGF0YVNvdXJjZSl9fSx7a2V5OiJyZWN1cnNpdmVEdWNrQ29sdW1ucyIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3ZhciB1ZSxDPXRoaXMsST12LFo9eTtyZXR1cm4gdm9pZCAwPT09SSYmKEk9MCxaPSIi''@;'; put 'put ''KSwib2JqZWN0Ij09PW42ZShoKSYmIUFycmF5LmlzQXJyYXkoaCkmJkdsKGgsZnVuY3Rpb24oX2UsQmUpe251bGw9PT1fZT8oQy5jb2xUb1Byb3BDYWNoZS5wdXNoKHVlPVorQmUpLEMucHJvcFRvQ29sQ2FjaGUuc2V0KHVlLEkpLEkrPTEpOkk9Qy5yZWN1cnNpdmVEdWNrQ29sdW1ucyhfZSxJ''@;'; put 'put ''LCIiLmNvbmNhdChCZSwiLiIpKX0pLEl9fSx7a2V5OiJjb2xUb1Byb3AiLHZhbHVlOmZ1bmN0aW9uKGgpe2lmKCExPT09TnVtYmVyLmlzSW50ZWdlcihoKSlyZXR1cm4gaDt2YXIgdj10aGlzLmluc3RhbmNlLnRvUGh5c2ljYWxDb2x1bW4oaCk7cmV0dXJuIG51bGw9PT12P2g6dGhpcy5jb2xU''@;'; put 'put ''b1Byb3BDYWNoZSYmVG8odGhpcy5jb2xUb1Byb3BDYWNoZVt2XSk/dGhpcy5jb2xUb1Byb3BDYWNoZVt2XTp2fX0se2tleToicHJvcFRvQ29sIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLnByb3BUb0NvbENhY2hlLmdldChoKTtpZihUbyh2KSlyZXR1cm4gdGhpcy5pbnN0YW5jZS50''@;'; put 'put ''b1Zpc3VhbENvbHVtbih2KTt2YXIgeT10aGlzLmluc3RhbmNlLnRvVmlzdWFsQ29sdW1uKGgpO3JldHVybiBudWxsPT09eT9oOnl9fSx7a2V5OiJnZXRTY2hlbWEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy50YWJsZU1ldGEuZGF0YVNjaGVtYTtyZXR1cm4gaD8iZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgaD9oKCk6aDp0aGlzLmR1Y2tTY2hlbWF9fSx7a2V5OiJjcmVhdGVSb3ciLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMseT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MSxDPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVu''@;'; put 'put ''dHNbMl06dm9pZCAwLEk9dGhpcy5pbnN0YW5jZS5jb3VudFNvdXJjZVJvd3MoKSxaPUksdWU9MCxfZT1oOygibnVtYmVyIiE9dHlwZW9mIF9lfHxfZT49SSkmJihfZT1JKSxfZTx0aGlzLmluc3RhbmNlLmNvdW50Um93cygpJiYoWj10aGlzLmluc3RhbmNlLnRvUGh5c2ljYWxSb3coX2UpKTt2''@;'; put 'put ''YXIgQmU9dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlQ3JlYXRlUm93IixfZSx5LEMpO2lmKCExPT09QmV8fG51bGw9PT1aKXJldHVybiAwO2Zvcih2YXIgTmU9dGhpcy50YWJsZU1ldGEubWF4Um93cyxLZT10aGlzLmluc3RhbmNlLmNvdW50Q29scygpLHB0PVtdLE90PWZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIGZuPW51bGw7ImFycmF5Ij09PXYuaW5zdGFuY2UuZGF0YVR5cGU/di50YWJsZU1ldGEuZGF0YVNjaGVtYT9mbj1naCh2LmdldFNjaGVtYSgpKTooZm49W10saWEoS2UtMSxmdW5jdGlvbigpe3JldHVybiBmbi5wdXNoKG51bGwpfSkpOiJmdW5jdGlvbiI9PT12Lmluc3RhbmNlLmRh''@;'; put 'put ''dGFUeXBlP2ZuPXYudGFibGVNZXRhLmRhdGFTY2hlbWEoX2UrdWUpOkxaKGZuPXt9LHYuZ2V0U2NoZW1hKCkpLHB0LnB1c2goZm4pLHVlKz0xfTt1ZTx5JiZJK3VlPE5lOylPdCgpO3JldHVybiB0aGlzLmluc3RhbmNlLnJvd0luZGV4TWFwcGVyLmluc2VydEluZGV4ZXMoX2UsdWUpLHRoaXMu''@;'; put 'put ''c3BsaWNlRGF0YS5hcHBseSh0aGlzLFtaLDBdLmNvbmNhdChwdCkpLHRoaXMuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyQ3JlYXRlUm93IixfZSx1ZSxDKSx0aGlzLmluc3RhbmNlLmZvcmNlRnVsbFJlbmRlcj0hMCx1ZX19LHtrZXk6ImNyZWF0ZUNvbCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFy''@;'; put 'put ''IHY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjEseT1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMDtpZighdGhpcy5pbnN0YW5jZS5pc0NvbHVtbk1vZGlmaWNhdGlvbkFsbG93ZWQoKSl0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''IkNhbm5vdCBjcmVhdGUgbmV3IGNvbHVtbi4gV2hlbiBkYXRhIHNvdXJjZSBpbiBhbiBvYmplY3QsIHlvdSBjYW4gb25seSBoYXZlIGFzIG11Y2ggY29sdW1ucyBhcyBkZWZpbmVkIGluIGZpcnN0IGRhdGEgcm93LCBkYXRhIHNjaGVtYSBvciBpbiB0aGUgJ2NvbHVtbnMnIHNldHRpbmcuSWYg''@;'; put 'put ''eW91IHdhbnQgdG8gYmUgYWJsZSB0byBhZGQgbmV3IGNvbHVtbnMsIHlvdSBoYXZlIHRvIHVzZSBhcnJheSBkYXRhc291cmNlLiIpO3ZhciBDPXRoaXMuZGF0YVNvdXJjZSxJPXRoaXMudGFibGVNZXRhLm1heENvbHMsWj1oOygibnVtYmVyIiE9dHlwZW9mIFp8fFo+PXRoaXMuaW5zdGFuY2Uu''@;'; put 'put ''Y291bnRTb3VyY2VDb2xzKCkpJiYoWj10aGlzLmluc3RhbmNlLmNvdW50U291cmNlQ29scygpKTt2YXIgdWU9dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlQ3JlYXRlQ29sIixaLHYseSk7aWYoITE9PT11ZSlyZXR1cm4gMDt2YXIgX2U9dGhpcy5pbnN0YW5jZS5jb3VudFNvdXJjZUNv''@;'; put 'put ''bHMoKTtaPHRoaXMuaW5zdGFuY2UuY291bnRDb2xzKCkmJihfZT10aGlzLmluc3RhbmNlLnRvUGh5c2ljYWxDb2x1bW4oWikpO2Zvcih2YXIgQmU9dGhpcy5pbnN0YW5jZS5jb3VudFNvdXJjZVJvd3MoKSxOZT10aGlzLmluc3RhbmNlLmNvdW50Q29scygpLEtlPTAscHQ9X2U7S2U8diYmTmU8''@;'; put 'put ''STspe2lmKCJudW1iZXIiIT10eXBlb2YgWnx8Wj49TmUpaWYoQmU+MClmb3IodmFyIE90PTA7T3Q8QmU7T3QrPTEpdm9pZCAwPT09Q1tPdF0mJihDW090XT1bXSksQ1tPdF0ucHVzaChudWxsKTtlbHNlIEMucHVzaChbbnVsbF0pO2Vsc2UgZm9yKHZhciAkdD0wOyR0PEJlOyR0KyspQ1skdF0u''@;'; put 'put ''c3BsaWNlKHB0LDAsbnVsbCk7S2UrPTEscHQrPTEsTmUrPTF9cmV0dXJuIHRoaXMuaW5zdGFuY2UuY29sdW1uSW5kZXhNYXBwZXIuaW5zZXJ0SW5kZXhlcyhaLEtlKSx0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlckNyZWF0ZUNvbCIsWixLZSx5KSx0aGlzLmluc3RhbmNlLmZvcmNlRnVs''@;'; put 'put ''bFJlbmRlcj0hMCxLZX19LHtrZXk6InJlbW92ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjEseT1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxDPU51bWJlci5p''@;'; put 'put ''c0ludGVnZXIoaCk/aDotdixJPXRoaXMudmlzdWFsUm93c1RvUGh5c2ljYWwoQyx2KSxaPXRoaXMuaW5zdGFuY2UuY291bnRTb3VyY2VSb3dzKCksdWU9dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlUmVtb3ZlUm93IixDPShaK0MpJVosSS5sZW5ndGgsSSx5KTtpZighMT09PXVlKXJl''@;'; put 'put ''dHVybiExO3ZhciBfZT1JLmxlbmd0aDtpZih0aGlzLmZpbHRlckRhdGEoQyxfZSxJKSxDPHRoaXMuaW5zdGFuY2UuY291bnRSb3dzKCkpe3RoaXMuaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIucmVtb3ZlSW5kZXhlcyhJKTt2YXIgQmU9VG8odGhpcy50YWJsZU1ldGEuY29sdW1ucyl8fFRvKHRo''@;'; put 'put ''aXMudGFibGVNZXRhLmRhdGFTY2hlbWEpOzA9PT10aGlzLmluc3RhbmNlLnJvd0luZGV4TWFwcGVyLmdldE5vdFRyaW1tZWRJbmRleGVzTGVuZ3RoKCkmJiExPT09QmUmJnRoaXMuaW5zdGFuY2UuY29sdW1uSW5kZXhNYXBwZXIuc2V0SW5kZXhlc1NlcXVlbmNlKFtdKX1yZXR1cm4gdGhpcy5p''@;'; put 'put ''bnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJSZW1vdmVSb3ciLEMsX2UsSSx5KSx0aGlzLmluc3RhbmNlLmZvcmNlRnVsbFJlbmRlcj0hMCwhMH19LHtrZXk6InJlbW92ZUNvbCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/''@;'; put 'put ''YXJndW1lbnRzWzFdOjEseT1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMDtpZigib2JqZWN0Ij09PXRoaXMuaW5zdGFuY2UuZGF0YVR5cGV8fHRoaXMudGFibGVNZXRhLmNvbHVtbnMpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgcmVtb3ZlIGNvbHVtbiB3aXRoIG9iamVj''@;'; put 'put ''dCBkYXRhIHNvdXJjZSBvciBjb2x1bW5zIG9wdGlvbiBzcGVjaWZpZWQiKTt2YXIgQz0ibnVtYmVyIiE9dHlwZW9mIGg/LXY6aDtDPSh0aGlzLmluc3RhbmNlLmNvdW50Q29scygpK0MpJXRoaXMuaW5zdGFuY2UuY291bnRDb2xzKCk7dmFyIEk9dGhpcy52aXN1YWxDb2x1bW5zVG9QaHlzaWNh''@;'; put 'put ''bChDLHYpLFo9SS5zbGljZSgwKS5zb3J0KGZ1bmN0aW9uKGlyLG1yKXtyZXR1cm4gbXItaXJ9KSx1ZT10aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVSZW1vdmVDb2wiLEMsdixJLHkpO2lmKCExPT09dWUpcmV0dXJuITE7Zm9yKHZhciBfZT0hMCxCZT1aLmxlbmd0aCxOZT10aGlzLmRh''@;'; put 'put ''dGFTb3VyY2UsS2U9MDtLZTxCZTtLZSsrKV9lJiZJWzBdIT09SVtLZV0tS2UmJihfZT0hMSk7aWYoX2UpZm9yKHZhciBwdD0wLE90PXRoaXMuaW5zdGFuY2UuY291bnRTb3VyY2VSb3dzKCk7cHQ8T3Q7cHQrKylOZVtwdF0uc3BsaWNlKElbMF0sdik7ZWxzZSBmb3IodmFyICR0PTAsZm49dGhp''@;'; put 'put ''cy5pbnN0YW5jZS5jb3VudFNvdXJjZVJvd3MoKTskdDxmbjskdCsrKWZvcih2YXIgTG49MDtMbjxCZTtMbisrKU5lWyR0XS5zcGxpY2UoWltMbl0sMSk7cmV0dXJuIEM8dGhpcy5pbnN0YW5jZS5jb3VudENvbHMoKSYmKHRoaXMuaW5zdGFuY2UuY29sdW1uSW5kZXhNYXBwZXIucmVtb3ZlSW5k''@;'; put 'put ''ZXhlcyhJKSwwPT09dGhpcy5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlci5nZXROb3RUcmltbWVkSW5kZXhlc0xlbmd0aCgpJiZ0aGlzLmluc3RhbmNlLnJvd0luZGV4TWFwcGVyLnNldEluZGV4ZXNTZXF1ZW5jZShbXSkpLHRoaXMuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyUmVtb3ZlQ29s''@;'; put 'put ''IixDLHYsSSx5KSx0aGlzLmluc3RhbmNlLmZvcmNlRnVsbFJlbmRlcj0hMCwhMH19LHtrZXk6InNwbGljZUNvbCIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe2Zvcih2YXIgQz10aGlzLmluc3RhbmNlLmdldERhdGFBdENvbChoKSxJPUMuc2xpY2Uodix2K3kpLFo9Qy5zbGljZSh2K3kpLHVlPWFy''@;'; put 'put ''Z3VtZW50cy5sZW5ndGgsX2U9bmV3IEFycmF5KHVlPjM/dWUtMzowKSxCZT0zO0JlPHVlO0JlKyspX2VbQmUtM109YXJndW1lbnRzW0JlXTtRaGUoX2UsWik7Zm9yKHZhciBOZT0wO05lPHk7KV9lLnB1c2gobnVsbCksTmUrPTE7cmV0dXJuIGRiZShfZSksdGhpcy5pbnN0YW5jZS5wb3B1bGF0''@;'; put 'put ''ZUZyb21BcnJheSh2LGgsX2UsbnVsbCxudWxsLCJzcGxpY2VDb2wiKSxJfX0se2tleToic3BsaWNlUm93Iix2YWx1ZTpmdW5jdGlvbihoLHYseSl7Zm9yKHZhciBDPXRoaXMuaW5zdGFuY2UuZ2V0U291cmNlRGF0YUF0Um93KGgpLEk9Qy5zbGljZSh2LHYreSksWj1DLnNsaWNlKHYreSksdWU9''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aCxfZT1uZXcgQXJyYXkodWU+Mz91ZS0zOjApLEJlPTM7QmU8dWU7QmUrKylfZVtCZS0zXT1hcmd1bWVudHNbQmVdO1FoZShfZSxaKTtmb3IodmFyIE5lPTA7TmU8eTspX2UucHVzaChudWxsKSxOZSs9MTtyZXR1cm4gdGhpcy5pbnN0YW5jZS5wb3B1bGF0ZUZyb21B''@;'; put 'put ''cnJheShoLHYsW19lXSxudWxsLG51bGwsInNwbGljZVJvdyIpLEl9fSx7a2V5OiJzcGxpY2VEYXRhIix2YWx1ZTpmdW5jdGlvbihoLHYpe2Zvcih2YXIgeT1hcmd1bWVudHMubGVuZ3RoLEM9bmV3IEFycmF5KHk+Mj95LTI6MCksST0yO0k8eTtJKyspQ1tJLTJdPWFyZ3VtZW50c1tJXTt2YXIg''@;'; put 'put ''dWUsWj10aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVEYXRhU3BsaWNlIixoLHYsQyk7ITEhPT1aJiYodWU9dGhpcy5kYXRhU291cmNlKS5zcGxpY2UuYXBwbHkodWUsW2gsdl0uY29uY2F0KEMpKX19LHtrZXk6ImZpbHRlckRhdGEiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgQz10''@;'; put 'put ''aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJmaWx0ZXJEYXRhIixoLHYseSk7ITE9PT1BcnJheS5pc0FycmF5KEMpJiYoQz10aGlzLmRhdGFTb3VyY2UuZmlsdGVyKGZ1bmN0aW9uKEksWil7cmV0dXJuLTE9PT15LmluZGV4T2YoWil9KSksdGhpcy5kYXRhU291cmNlLmxlbmd0aD0wLEFycmF5LnBy''@;'; put 'put ''b3RvdHlwZS5wdXNoLmFwcGx5KHRoaXMuZGF0YVNvdXJjZSxDKX19LHtrZXk6ImdldCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT10aGlzLmluc3RhbmNlLnRvUGh5c2ljYWxSb3coaCksQz10aGlzLmRhdGFTb3VyY2VbeV0sST10aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJtb2RpZnlSb3dE''@;'; put 'put ''YXRhIix5KSxaPW51bGw7aWYoKEM9aXNOYU4oSSk/STpDKSYmQy5oYXNPd25Qcm9wZXJ0eSYmbzEoQyx2KSlaPUNbdl07ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIHYmJnYuaW5kZXhPZigiLiIpPi0xKXt2YXIgdWU9di5zcGxpdCgiLiIpLF9lPUM7aWYoIV9lKXJldHVybiBudWxsO2Zvcih2''@;'; put 'put ''YXIgQmU9MCxOZT11ZS5sZW5ndGg7QmU8TmU7QmUrKylpZih2b2lkIDA9PT0oX2U9X2VbdWVbQmVdXSkpcmV0dXJuIG51bGw7Wj1fZX1lbHNlImZ1bmN0aW9uIj09dHlwZW9mIHYmJihaPXYodGhpcy5kYXRhU291cmNlLnNsaWNlKHkseSsxKVswXSkpO2lmKHRoaXMuaW5zdGFuY2UuaGFzSG9v''@;'; put 'put ''aygibW9kaWZ5RGF0YSIpKXt2YXIgS2U9RVMoWik7dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygibW9kaWZ5RGF0YSIseSx0aGlzLnByb3BUb0NvbCh2KSxLZSwiZ2V0IiksS2UuaXNUb3VjaGVkKCkmJihaPUtlLnZhbHVlKX1yZXR1cm4gWn19LHtrZXk6ImdldENvcHlhYmxlIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbihoLHYpe3JldHVybiBzcWUuY2FsbCh0aGlzLmluc3RhbmNlLGgsdGhpcy5wcm9wVG9Db2wodikpP3RoaXMuZ2V0KGgsdik6IiJ9fSx7a2V5OiJzZXQiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgQz10aGlzLmluc3RhbmNlLnRvUGh5c2ljYWxSb3coaCksST15LFo9dGhpcy5kYXRh''@;'; put 'put ''U291cmNlW0NdLHVlPXRoaXMuaW5zdGFuY2UucnVuSG9va3MoIm1vZGlmeVJvd0RhdGEiLEMpO2lmKFo9aXNOYU4odWUpP3VlOlosdGhpcy5pbnN0YW5jZS5oYXNIb29rKCJtb2RpZnlEYXRhIikpe3ZhciBfZT1FUyhJKTt0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJtb2RpZnlEYXRhIixDLHRo''@;'; put 'put ''aXMucHJvcFRvQ29sKHYpLF9lLCJzZXQiKSxfZS5pc1RvdWNoZWQoKSYmKEk9X2UudmFsdWUpfWlmKFomJlouaGFzT3duUHJvcGVydHkmJm8xKFosdikpWlt2XT1JO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiB2JiZ2LmluZGV4T2YoIi4iKT4tMSl7dmFyIHB0LEJlPXYuc3BsaXQoIi4iKSxO''@;'; put 'put ''ZT1aLEtlPTA7Zm9yKEtlPTAscHQ9QmUubGVuZ3RoLTE7S2U8cHQ7S2UrKyl2b2lkIDA9PT1OZVtCZVtLZV1dJiYoTmVbQmVbS2VdXT17fSksTmU9TmVbQmVbS2VdXTtOZVtCZVtLZV1dPUl9ZWxzZSJmdW5jdGlvbiI9PXR5cGVvZiB2P3YodGhpcy5kYXRhU291cmNlLnNsaWNlKEMsQysxKVsw''@;'; put 'put ''XSxJKTpaW3ZdPUl9fSx7a2V5OiJ2aXN1YWxSb3dzVG9QaHlzaWNhbCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtmb3IodmFyIHVlLHk9dGhpcy5pbnN0YW5jZS5jb3VudFNvdXJjZVJvd3MoKSxDPVtdLEk9KHkraCkleSxaPXY7STx5JiZaOyl1ZT10aGlzLmluc3RhbmNlLnRvUGh5c2ljYWxSb3co''@;'; put 'put ''SSksQy5wdXNoKHVlKSxaLT0xLEkrPTE7cmV0dXJuIEN9fSx7a2V5OiJ2aXN1YWxDb2x1bW5zVG9QaHlzaWNhbCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtmb3IodmFyIHk9dGhpcy5pbnN0YW5jZS5jb3VudENvbHMoKSxDPVtdLEk9KHkraCkleSxaPXY7STx5JiZaOyl7dmFyIHVlPXRoaXMuaW5z''@;'; put 'put ''dGFuY2UudG9QaHlzaWNhbENvbHVtbihJKTtDLnB1c2godWUpLFotPTEsSSs9MX1yZXR1cm4gQ319LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgaD0wO2g8dGhpcy5pbnN0YW5jZS5jb3VudFNvdXJjZVJvd3MoKTtoKyspZm9yKHZhciB2PTA7djx0aGlzLmluc3RhbmNl''@;'; put 'put ''LmNvdW50Q29scygpO3YrKyl0aGlzLnNldChoLHRoaXMuY29sVG9Qcm9wKHYpLCIiKX19LHtrZXk6ImdldExlbmd0aCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdixoPXRoaXMudGFibGVNZXRhLm1heFJvd3M7dj1oPDB8fDA9PT1oPzA6aHx8MS8wO3ZhciB5PXRoaXMuaW5zdGFuY2Uucm93SW5k''@;'; put 'put ''ZXhNYXBwZXIuZ2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgoKTtyZXR1cm4gTWF0aC5taW4oeSx2KX19LHtrZXk6ImdldEFsbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD17cm93OjAsY29sOjB9LHY9e3JvdzpNYXRoLm1heCh0aGlzLmluc3RhbmNlLmNvdW50Um93cygpLTEsMCksY29sOk1h''@;'; put 'put ''dGgubWF4KHRoaXMuaW5zdGFuY2UuY291bnRDb2xzKCktMSwwKX07cmV0dXJuIGgucm93LXYucm93IT0wfHx0aGlzLmluc3RhbmNlLmNvdW50U291cmNlUm93cygpP3RoaXMuZ2V0UmFuZ2UoaCx2LGQuREVTVElOQVRJT05fUkVOREVSRVIpOltdfX0se2tleToiY291bnRDYWNoZWRDb2x1bW5z''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbFRvUHJvcENhY2hlLmxlbmd0aH19LHtrZXk6ImdldFJhbmdlIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7dmFyIEksWix1ZSxDPVtdLF9lPXRoaXMudGFibGVNZXRhLm1heFJvd3MsQmU9dGhpcy50YWJsZU1ldGEubWF4Q29scztpZigw''@;'; put 'put ''PT09X2V8fDA9PT1CZSlyZXR1cm5bXTt2YXIgTmU9eT09PWQuREVTVElOQVRJT05fQ0xJUEJPQVJEX0dFTkVSQVRPUj90aGlzLmdldENvcHlhYmxlOnRoaXMuZ2V0LEtlPU1hdGgubWluKE1hdGgubWF4KF9lLTEsMCksTWF0aC5tYXgoaC5yb3csdi5yb3cpKSxwdD1NYXRoLm1pbihNYXRoLm1h''@;'; put 'put ''eChCZS0xLDApLE1hdGgubWF4KGguY29sLHYuY29sKSk7Zm9yKEk9TWF0aC5taW4oaC5yb3csdi5yb3cpO0k8PUtlO0krKyl7dWU9W107dmFyIE90PUk+PTA/dGhpcy5pbnN0YW5jZS50b1BoeXNpY2FsUm93KEkpOkk7Zm9yKFo9TWF0aC5taW4oaC5jb2wsdi5jb2wpO1o8PXB0JiZudWxsIT09''@;'; put 'put ''T3Q7WisrKXVlLnB1c2goTmUuY2FsbCh0aGlzLEksdGhpcy5jb2xUb1Byb3AoWikpKTtudWxsIT09T3QmJkMucHVzaCh1ZSl9cmV0dXJuIEN9fSx7a2V5OiJnZXRUZXh0Iix2YWx1ZTpmdW5jdGlvbihoLHYpe3JldHVybiBjeih0aGlzLmdldFJhbmdlKGgsdixkLkRFU1RJTkFUSU9OX1JFTkRF''@;'; put 'put ''UkVSKSl9fSx7a2V5OiJnZXRDb3B5YWJsZVRleHQiLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuIGN6KHRoaXMuZ2V0UmFuZ2UoaCx2LGQuREVTVElOQVRJT05fQ0xJUEJPQVJEX0dFTkVSQVRPUikpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmluc3RhbmNlPW51''@;'; put 'put ''bGwsdGhpcy50YWJsZU1ldGE9bnVsbCx0aGlzLmRhdGFTb3VyY2U9bnVsbCx0aGlzLmR1Y2tTY2hlbWE9bnVsbCx0aGlzLmNvbFRvUHJvcENhY2hlLmxlbmd0aD0wLHRoaXMucHJvcFRvQ29sQ2FjaGUuY2xlYXIoKSx0aGlzLnByb3BUb0NvbENhY2hlPXZvaWQgMH19XSxbe2tleToiREVTVElO''@;'; put 'put ''QVRJT05fUkVOREVSRVIiLGdldDpmdW5jdGlvbigpe3JldHVybiAxfX0se2tleToiREVTVElOQVRJT05fQ0xJUEJPQVJEX0dFTkVSQVRPUiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDJ9fV0pLGR9KCk7Y29uc3QgY3FlPXVxZTtmdW5jdGlvbiBkdGUoZCl7cmV0dXJuKGR0ZT0iZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnBy''@;'; put 'put ''b3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIHhTZShkLGcsaCx2KXt2YXIgeT12LmhvdEluc3RhbmNlLEM9di5kYXRhTWFwLEk9di5kYXRhU291cmNlLFo9di5pbnRlcm5hbFNvdXJjZSx1ZT12LnNvdXJjZSxfZT12LmZpcnN0UnVuLEJlPWxkKFopLE5lPXkuZ2V0U2V0''@;'; put 'put ''dGluZ3MoKTt5LmRhdGFUeXBlPUFycmF5LmlzQXJyYXkoTmUuZGF0YVNjaGVtYSk/ImFycmF5IjpVMihOZS5kYXRhU2NoZW1hKT8iZnVuY3Rpb24iOiJvYmplY3QiLEMmJkMuZGVzdHJveSgpLGQ9eS5ydW5Ib29rcygiYmVmb3JlIi5jb25jYXQoQmUpLGQsX2UsdWUpO3ZhciBLZT1uZXcgY3Fl''@;'; put 'put ''KHksZCxOZSk7aWYoZyhLZSksIm9iamVjdCI9PT1kdGUoZCkmJm51bGwhPT1kKWQucHVzaCYmZC5zcGxpY2V8fChkPVtkXSk7ZWxzZXtpZihudWxsIT09ZCl0aHJvdyBuZXcgRXJyb3IoIiIuY29uY2F0KFosIiBvbmx5IGFjY2VwdHMgYXJyYXkgb2Ygb2JqZWN0cyBvciBhcnJheSBvZiBhcnJh''@;'; put 'put ''eXMgKCIpLmNvbmNhdChkdGUoZCksIiBnaXZlbikiKSk7dmFyIHB0PUtlLmdldFNjaGVtYSgpO2Q9W107dmFyIE90LGZuLCR0PTA7Zm9yKCR0PTAsZm49TmUuc3RhcnRSb3dzOyR0PGZuOyR0KyspaWYoIm9iamVjdCIhPT15LmRhdGFUeXBlJiYiZnVuY3Rpb24iIT09eS5kYXRhVHlwZXx8IU5l''@;'; put 'put ''LmRhdGFTY2hlbWEpaWYoImFycmF5Ij09PXkuZGF0YVR5cGUpT3Q9Z2gocHRbMF0pLGQucHVzaChPdCk7ZWxzZXtPdD1bXTtmb3IodmFyIExuPTAsaXI9TmUuc3RhcnRDb2xzO0xuPGlyO0xuKyspT3QucHVzaChudWxsKTtkLnB1c2goT3QpfWVsc2UgT3Q9Z2gocHQpLGQucHVzaChPdCl9QXJy''@;'; put 'put ''YXkuaXNBcnJheShkWzBdKSYmKHkuZGF0YVR5cGU9ImFycmF5IiksTmUuZGF0YT1kLEtlLmRhdGFTb3VyY2U9ZCxJLmRhdGE9ZCxJLmRhdGFUeXBlPXkuZGF0YVR5cGUsSS5jb2xUb1Byb3A9S2UuY29sVG9Qcm9wLmJpbmQoS2UpLEkucHJvcFRvQ29sPUtlLnByb3BUb0NvbC5iaW5kKEtlKSxJ''@;'; put 'put ''LmNvdW50Q2FjaGVkQ29sdW1ucz1LZS5jb3VudENhY2hlZENvbHVtbnMuYmluZChLZSksaChLZSkseS5ydW5Ib29rcygiYWZ0ZXIiLmNvbmNhdChCZSksZCxfZSx1ZSksX2V8fCh5LnJ1bkhvb2tzKCJhZnRlckNoYW5nZSIsbnVsbCxaKSx5LnJlbmRlcigpKX12YXIgRFNlLFRTZT1uZXcgTWFw''@;'; put 'put ''KFtbIiAiLCJzcGFjZSJdLFsic3BhY2ViYXIiLCJzcGFjZSJdLFsic2Nyb2xsIiwic2Nyb2xsbG9jayJdLFsiZGVsIiwiZGVsZXRlIl0sWyJlc2MiLCJlc2NhcGUiXSxbIm1lZGlhbmV4dHRyYWNrIiwibWVkaWF0cmFja25leHQiXSxbIm1lZGlhcHJldmlvdXN0cmFjayIsIm1lZGlhdHJhY2tw''@;'; put 'put ''cmV2aW91cyJdLFsidm9sdW1ldXAiLCJhdWRpb3ZvbHVtZXVwIl0sWyJ2b2x1bWVkb3duIiwiYXVkaW92b2x1bWVkb3duIl0sWyJ2b2x1bWVtdXRlIiwiYXVkaW92b2x1bWVtdXRlIl0sWyJtdWx0aXBseSIsIioiXSxbImFkZCIsIisiXSxbImRpdmlkZSIsIi8iXSxbInN1YnRyYWN0IiwiLSJd''@;'; put 'put ''LFsibGVmdCIsImFycm93bGVmdCJdLFsicmlnaHQiLCJhcnJvd3JpZ2h0Il0sWyJ1cCIsImFycm93dXAiXSxbImRvd24iLCJhcnJvd2Rvd24iXV0pLHB0ZT1mdW5jdGlvbihnKXtyZXR1cm4gZy5tYXAoZnVuY3Rpb24oaCl7dmFyIHY9aC50b0xvd2VyQ2FzZSgpO3JldHVybiBUU2UuaGFzKHYp''@;'; put 'put ''P1RTZS5nZXQodik6dn0pLnNvcnQoKS5qb2luKCIrIil9LElTZT1mdW5jdGlvbihnKXtyZXR1cm4gZy50b0xvd2VyQ2FzZSgpfTtmdW5jdGlvbiBMU2UoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIHI2ZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJp''@;'; put 'put ''bmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/''@;'; put 'put ''OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gcjZlKGQsZyl9fWZ1bmN0aW9uIHI2ZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIHdxZShk''@;'; put 'put ''LGcpe3JldHVybiBnfHwoZz1kLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZShnKX19KSl9dmFyIENxZT1bIm1ldGEiLCJhbHQiLCJzaGlmdCIsImNvbnRyb2wiXSxndGU9ZnVuY3Rpb24gX3FlKCl7dmFy''@;'; put 'put ''IGQ9bmV3IFNldDtyZXR1cm57cHJlc3M6ZnVuY3Rpb24oaCl7ZC5hZGQoaCl9LHJlbGVhc2U6ZnVuY3Rpb24oaCl7ZC5kZWxldGUoaCl9LHJlbGVhc2VBbGw6ZnVuY3Rpb24oKXtkLmNsZWFyKCl9LGlzUHJlc3NlZDpmdW5jdGlvbihoKXtyZXR1cm4gZC5oYXMoaCl9fX0oKSxTcWU9ZnVuY3Rp''@;'; put 'put ''b24oZyl7dmFyIGg9Zy5vd25lcldpbmRvdyx2PWcuaGFuZGxlRXZlbnQseT1nLmJlZm9yZUtleURvd24sQz1nLmFmdGVyS2V5RG93bixJPXVlZSh7ZXJyb3JJZEV4aXN0czpmdW5jdGlvbigkdCl7cmV0dXJuJ1RoZSAiJy5jb25jYXQoJHQsJyIgY29udGV4dCBuYW1lIGlzIGFscmVhZHkgcmVn''@;'; put 'put ''aXN0ZXJlZC4nKX19KSxaPSJncmlkIixfZT1mdW5jdGlvbigpe3JldHVybiBafSxCZT1mdW5jdGlvbigkdCl7cmV0dXJuIEkuZ2V0SXRlbSgkdCl9LEtlPSExLHB0PWZ1bmN0aW9uIGtxZShkLGcsaCx2LHkpe3ZhciBDPWZ1bmN0aW9uKHB0KXtyZXR1cm4gQ3FlLmluY2x1ZGVzKHB0KX0sST1m''@;'; put 'put ''dW5jdGlvbihwdCl7dmFyIE90PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0sJHQ9W107cmV0dXJuIHB0LmFsdEtleSYmJHQucHVzaCgiYWx0IiksT3QmJihwdC5jdHJsS2V5fHxwdC5tZXRhS2V5KT8kdC5wdXNoKCJjb250cm9sL21ldGEi''@;'; put 'put ''KToocHQuY3RybEtleSYmJHQucHVzaCgiY29udHJvbCIpLHB0Lm1ldGFLZXkmJiR0LnB1c2goIm1ldGEiKSkscHQuc2hpZnRLZXkmJiR0LnB1c2goInNoaWZ0IiksJHR9LFo9ZnVuY3Rpb24ocHQpe2lmKCExIT09ZyhwdCkmJiExIT09aChwdCkmJiFUUyhwdCkpe3ZhciAkdD1JU2UocHQua2V5''@;'; put 'put ''KSxmbj1bXTtDKCR0KT9ndGUucHJlc3MoJHQpOmZuPUkocHQpO3ZhciBMbj1bJHRdLmNvbmNhdChmbik7IXkocHQsTG4pJiYoS3EoKSYmZm4uaW5jbHVkZXMoIm1ldGEiKXx8IUtxKCkmJmZuLmluY2x1ZGVzKCJjb250cm9sIikpJiZ5KHB0LFskdF0uY29uY2F0KEkocHQsITApKSksdihwdCl9''@;'; put 'put ''fSx1ZT1mdW5jdGlvbihwdCl7aWYoITEhPT1nKHB0KSl7dmFyIE90PUlTZShwdC5rZXkpOyExIT09QyhPdCkmJmd0ZS5yZWxlYXNlKE90KX19LF9lPWZ1bmN0aW9uKCl7Z3RlLnJlbGVhc2VBbGwoKX07cmV0dXJue21vdW50OmZ1bmN0aW9uKCl7Zm9yKHZhciBwdD1kO3B0OylwdC5hZGRFdmVu''@;'; put 'put ''dExpc3RlbmVyKCJrZXlkb3duIixaKSxwdC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsdWUpLHB0LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLF9lKSxwdD1wdC5mcmFtZUVsZW1lbnR9LHVubW91bnQ6ZnVuY3Rpb24oKXtmb3IodmFyIHB0PWQ7cHQ7KXB0LnJlbW92ZUV2ZW50TGlzdGVuZXIo''@;'; put 'put ''ImtleWRvd24iLFopLHB0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXVwIix1ZSkscHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsX2UpLHB0PXB0LmZyYW1lRWxlbWVudH0saXNQcmVzc2VkOmZ1bmN0aW9uKHB0KXtyZXR1cm4gZ3RlLmlzUHJlc3NlZChwdCl9fX0oaCx2LHksQyxmdW5j''@;'; put 'put ''dGlvbihPdCwkdCl7dmFyIGZuPUJlKF9lKCkpLExuPSExO2lmKCFmbi5oYXNTaG9ydGN1dCgkdCkpcmV0dXJuIExuO2Zvcih2YXIgaXI9Zm4uZ2V0U2hvcnRjdXRzKCR0KSxtcj0wO21yPGlyLmxlbmd0aDttcisrKXt2YXIgU3I9aXJbbXJdLHdyPVNyLmNhbGxiYWNrLHlpPVNyLnByZXZlbnRE''@;'; put 'put ''ZWZhdWx0LEtpPVNyLnN0b3BQcm9wYWdhdGlvbixTbz1Tci5jYXB0dXJlQ3RybDtpZighMSE9PSgwLFNyLnJ1bk9ubHlJZikoT3QpJiYoS2U9U28sTG49ITE9PT13cihPdCwkdCksS2U9ITEseWkmJk90LnByZXZlbnREZWZhdWx0KCksS2kmJk90LnN0b3BQcm9wYWdhdGlvbigpLExuKSlicmVh''@;'; put 'put ''a31yZXR1cm4gTG59KTtyZXR1cm4gcHQubW91bnQoKSx7YWRkQ29udGV4dDpmdW5jdGlvbigkdCl7dmFyIGZuPWZ1bmN0aW9uKGcpe3ZhciBoPXVlZSh7ZXJyb3JJZEV4aXN0czpmdW5jdGlvbihCZSl7cmV0dXJuJ1RoZSAiJy5jb25jYXQoQmUsJyIgc2hvcnRjdXQgaXMgYWxyZWFkeSByZWdp''@;'; put 'put ''c3RlcmVkIGluIHRoZSAiJykuY29uY2F0KGcsJyIgY29udGV4dC4nKX19KSx2PWZ1bmN0aW9uKCl7dmFyIEJlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxOZT1CZS5rZXlzLEtlPUJlLmNhbGxiYWNrLHB0PUJlLmdyb3VwLE90PUJl''@;'; put 'put ''LnJ1bk9ubHlJZiwkdD12b2lkIDA9PT1PdD9mdW5jdGlvbigpe3JldHVybiEwfTpPdCxmbj1CZS5jYXB0dXJlQ3RybCxMbj12b2lkIDAhPT1mbiYmZm4saXI9QmUucHJldmVudERlZmF1bHQsbXI9dm9pZCAwPT09aXJ8fGlyLFNyPUJlLnN0b3BQcm9wYWdhdGlvbix3cj12b2lkIDAhPT1TciYm''@;'; put 'put ''U3IsUXI9QmUucmVsYXRpdmVUb0dyb3VwLHlpPUJlLnBvc2l0aW9uO2lmKGExKHB0KSl0aHJvdyBuZXcgRXJyb3IoIllvdSBuZWVkIHRvIGRlZmluZSB0aGUgc2hvcnRjdXQncyBncm91cC4iKTtpZighMT09PVUyKEtlKSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBzaG9ydGN1dCdzIGNhbGxiYWNr''@;'; put 'put ''IG5lZWRzIHRvIGJlIGEgZnVuY3Rpb24uIik7aWYoITE9PT1BcnJheS5pc0FycmF5KE5lKSl0aHJvdyBuZXcgRXJyb3IoUDIoRFNlfHwoRFNlPXdxZShbIlBhc3MgdGhlIHNob3J0Y3V0J3Mga2V5cyBhcyBhbiBhcnJheSBvZiBhcnJheXMsIFxuICAgICAgdXNpbmcgdGhlIEtleWJvYXJkRXZl''@;'; put 'put ''bnQua2V5IHByb3BlcnRpZXM6IFxuICAgICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0tleWJvYXJkRXZlbnQva2V5L0tleV9WYWx1ZXMuIl0sWyJQYXNzIHRoZSBzaG9ydGN1dFxcJ3Mga2V5cyBhcyBhbiBhcnJheSBvZiBhcnJheXMsXFx4MjBc''@;'; put 'put ''biAgICAgIHVzaW5nIHRoZSBLZXlib2FyZEV2ZW50LmtleSBwcm9wZXJ0aWVzOlxceDIwXG4gICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudC9rZXkvS2V5X1ZhbHVlcy4iXSkpKSk7dmFyIEtpPXtjYWxsYmFjazpLZSxn''@;'; put 'put ''cm91cDpwdCxydW5Pbmx5SWY6JHQsY2FwdHVyZUN0cmw6TG4scHJldmVudERlZmF1bHQ6bXIsc3RvcFByb3BhZ2F0aW9uOndyfTtpZihUbyhRcikpe3ZhciBTbz1bUXIseWldO0tpLnJlbGF0aXZlVG9Hcm91cD1Tb1swXSxLaS5wb3NpdGlvbj1Tb1sxXX1OZS5mb3JFYWNoKGZ1bmN0aW9uKFBv''@;'; put 'put ''KXt2YXIgU2E9cHRlKFBvKTtpZihoLmhhc0l0ZW0oU2EpKXt2YXIgbGE9aC5nZXRJdGVtKFNhKSxhbD1sYS5maW5kSW5kZXgoZnVuY3Rpb24oUnMpe3JldHVybiBScy5ncm91cD09PVFyfSk7LTEhPT1hbD8iYmVmb3JlIj09PXlpP2FsLT0xOmFsKz0xOmFsPWxhLmxlbmd0aCxsYS5zcGxpY2Uo''@;'; put 'put ''YWwsMCxLaSl9ZWxzZSBoLmFkZEl0ZW0oU2EsW0tpXSl9KX0sQz1mdW5jdGlvbihCZSl7dmFyIE5lPXB0ZShCZSk7aC5yZW1vdmVJdGVtKE5lKX07cmV0dXJue2FkZFNob3J0Y3V0OnYsYWRkU2hvcnRjdXRzOmZ1bmN0aW9uKEJlKXt2YXIgTmU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAh''@;'; put 'put ''PT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O0JlLmZvckVhY2goZnVuY3Rpb24oS2Upe0dsKE5lLGZ1bmN0aW9uKHB0LE90KXshMT09PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChLZSxPdCkmJihLZVtPdF09TmVbT3RdKX0pLHYoS2UpfSl9LGdldFNob3J0Y3V0''@;'; put 'put ''czpmdW5jdGlvbihCZSl7dmFyIE5lPXB0ZShCZSksS2U9aC5nZXRJdGVtKE5lKTtyZXR1cm4gVG8oS2UpP0tlLnNsaWNlKCk6W119LGhhc1Nob3J0Y3V0OmZ1bmN0aW9uKEJlKXt2YXIgTmU9cHRlKEJlKTtyZXR1cm4gaC5oYXNJdGVtKE5lKX0scmVtb3ZlU2hvcnRjdXRzQnlLZXlzOkMscmVt''@;'; put 'put ''b3ZlU2hvcnRjdXRzQnlHcm91cDpmdW5jdGlvbihCZSl7aC5nZXRJdGVtcygpLmZvckVhY2goZnVuY3Rpb24oS2Upe3ZhciBwdD1mdW5jdGlvbiBtcWUoZCxnKXtyZXR1cm4gZnVuY3Rpb24geXFlKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBBcWUoZCxn''@;'; put 'put ''KXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYo''@;'; put 'put ''di5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaCh1ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgWn19cmV0dXJuIHZ9fShkLGcpfHxMU2UoZCxnKXx8ZnVuY3Rpb24gdnFl''@;'; put 'put ''KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0o''@;'; put 'put ''KX0oS2UsMiksT3Q9cHRbMF0sJHQ9cHRbMV0sZm49JHQuZmlsdGVyKGZ1bmN0aW9uKExuKXtyZXR1cm4gTG4uZ3JvdXAhPT1CZX0pOzA9PT1mbi5sZW5ndGg/QyhmdW5jdGlvbihnKXtyZXR1cm4gZy5zcGxpdCgiKyIpfShPdCkpOigkdC5sZW5ndGg9MCwkdC5wdXNoLmFwcGx5KCR0LGZ1bmN0''@;'; put 'put ''aW9uIGhxZShkKXtyZXR1cm4gZnVuY3Rpb24gZ3FlKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIHI2ZShkKX0oZCl8fGZ1bmN0aW9uIHBxZShkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9y''@;'; put 'put ''Il0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxMU2UoZCl8fGZ1bmN0aW9uIGRxZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3Rz''@;'; put 'put ''IG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShmbikpKX0pfX19KCR0KTtyZXR1cm4gSS5hZGRJdGVtKCR0LGZuKSxmbn0sZ2V0QWN0aXZlQ29udGV4dE5hbWU6X2UsZ2V0Q29udGV4dDpCZSxzZXRBY3RpdmVDb250ZXh0TmFtZTpmdW5jdGlvbigkdCl7Wj0k''@;'; put 'put ''dH0saXNDdHJsUHJlc3NlZDpmdW5jdGlvbigpe3JldHVybiFLZSYmKHB0LmlzUHJlc3NlZCgiY29udHJvbCIpfHxwdC5pc1ByZXNzZWQoIm1ldGEiKSl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtyZXR1cm4gcHQudW5tb3VudCgpfX19O2Z1bmN0aW9uIGNkKGQpe3JldHVybihjZD0iZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnBy''@;'; put 'put ''b3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIElnKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIHhxZShkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gRXFlKGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxaLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0''@;'; put 'put ''Y2godWUpe0M9ITAsWj11ZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IFp9fXJldHVybiB2fX0oZCxnKXx8T1NlKGQsZyl8fGZ1bmN0aW9uIE1xZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBk''@;'; put 'put ''ZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gUncoZCl7cmV0dXJuIGZ1bmN0aW9uIERxZShkKXtpZihB''@;'; put 'put ''cnJheS5pc0FycmF5KGQpKXJldHVybiBpNmUoZCl9KGQpfHxmdW5jdGlvbiBJcWUoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQpfShkKXx8T1NlKGQpfHxm''@;'; put 'put ''dW5jdGlvbiBUcWUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhv''@;'; put 'put ''ZC4iKX0oKX1mdW5jdGlvbiBPU2UoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIGk2ZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3Ry''@;'; put 'put ''dWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gaTZlKGQsZyl9fWZ1bmN0aW9uIGk2ZShkLGcpeyhudWxs''@;'; put 'put ''PT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fXZhciBMcWU9ImdyaWREZWZhdWx0IixvNmU9bnVsbDtmdW5jdGlvbiBhNmUoZCxnKXt2YXIgaCx1ZSxfZSxCZSxOZSx2PXRoaXMseT1hcmd1''@;'; put 'put ''bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLEM9ITEsST10aGlzLFo9bmV3IEwxKEkpLEtlPSEwO3hRZSh5KSYmRVFlKHRoaXMpLHRoaXMucm9vdEVsZW1lbnQ9ZCx0aGlzLnJvb3REb2N1bWVudD1kLm93bmVyRG9jdW1lbnQsdGhpcy5yb290V2lu''@;'; put 'put ''ZG93PXRoaXMucm9vdERvY3VtZW50LmRlZmF1bHRWaWV3LHRoaXMuaXNEZXN0cm95ZWQ9ITEsdGhpcy5yZW5kZXJTdXNwZW5kZWRDb3VudGVyPTAsdGhpcy5leGVjdXRpb25TdXNwZW5kZWRDb3VudGVyPTA7dmFyIHB0PW51bGwhPT0oaD1udWxsPT1nP3ZvaWQgMDpnLmxheW91dERpcmVjdGlv''@;'; put 'put ''bikmJnZvaWQgMCE9PWg/aDoiaW5oZXJpdCIsT3Q9WyJydGwiLCJsdHIiXS5pbmNsdWRlcyhwdCk/cHQ6dGhpcy5yb290V2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5yb290RWxlbWVudCkuZGlyZWN0aW9uO3RoaXMucm9vdEVsZW1lbnQuc2V0QXR0cmlidXRlKCJkaXIiLE90KSx0aGlz''@;'; put 'put ''LmlzUnRsPWZ1bmN0aW9uKCl7cmV0dXJuInJ0bCI9PT1PdH0sdGhpcy5pc0x0cj1mdW5jdGlvbigpe3JldHVybiFJLmlzUnRsKCl9LHRoaXMuZ2V0RGlyZWN0aW9uRmFjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIEkuaXNMdHIoKT8xOi0xfSxnLmxhbmd1YWdlPXpYZShnLmxhbmd1YWdlKTt2YXIg''@;'; put 'put ''JHQ9bmV3IF9TZShJLGcsW2VxZSxycWVdKSxmbj0kdC5nZXRUYWJsZU1ldGEoKSxMbj0kdC5nZXRHbG9iYWxNZXRhKCksaXI9dWVlKCk7dGhpcy5jb250YWluZXI9dGhpcy5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5yZW5kZXJDYWxsPSExLGQuaW5zZXJ0QmVmb3Jl''@;'; put 'put ''KHRoaXMuY29udGFpbmVyLGQuZmlyc3RDaGlsZCksR2RlKHRoaXMpJiZIYmUoZy5saWNlbnNlS2V5LGQpLHRoaXMuZ3VpZD0iaHRfIi5jb25jYXQoaTNlKCkpLHRoaXMuY29sdW1uSW5kZXhNYXBwZXI9bmV3IEM0ZSx0aGlzLnJvd0luZGV4TWFwcGVyPW5ldyBDNGUsX2U9bmV3IEpRZShJKSwo''@;'; put 'put ''IXRoaXMucm9vdEVsZW1lbnQuaWR8fCJodF8iPT09dGhpcy5yb290RWxlbWVudC5pZC5zdWJzdHJpbmcoMCwzKSkmJih0aGlzLnJvb3RFbGVtZW50LmlkPXRoaXMuZ3VpZCk7dmFyIG1yPWZ1bmN0aW9uKFpuKXt2YXIgX3I9Wm4ucm93LFhyPVpuLmNvbDtyZXR1cm4gSS5fY3JlYXRlQ2VsbENv''@;'; put 'put ''b3Jkcyhfcj49MD9JLnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoX3IpOl9yLFhyPj0wP0kuY29sdW1uSW5kZXhNYXBwZXIuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChYcik6WHIpfSxTcj1mdW5jdGlvbihabil7dmFyIF9yPVpuLnJvdyxYcj1abi5j''@;'; put 'put ''b2w7cmV0dXJuIEkuX2NyZWF0ZUNlbGxDb29yZHMoX3I+PTA/SS5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KF9yKTpfcixYcj49MD9JLmNvbHVtbkluZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoWHIpOlhyKX0sd3I9bmV3IFQkZShm''@;'; put 'put ''bix7cm93SW5kZXhNYXBwZXI6ZnVuY3Rpb24oKXtyZXR1cm4gSS5yb3dJbmRleE1hcHBlcn0sY29sdW1uSW5kZXhNYXBwZXI6ZnVuY3Rpb24oKXtyZXR1cm4gSS5jb2x1bW5JbmRleE1hcHBlcn0sY291bnRDb2xzOmZ1bmN0aW9uKCl7cmV0dXJuIEkuY291bnRDb2xzKCl9LGNvdW50Um93czpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBJLmNvdW50Um93cygpfSxwcm9wVG9Db2w6ZnVuY3Rpb24oWm4pe3JldHVybiB1ZS5wcm9wVG9Db2woWm4pfSxpc0VkaXRvck9wZW5lZDpmdW5jdGlvbigpe3JldHVybiEhSS5nZXRBY3RpdmVFZGl0b3IoKSYmSS5nZXRBY3RpdmVFZGl0b3IoKS5pc09wZW5lZCgp''@;'; put 'put ''fSxjb3VudENvbHNUcmFuc2xhdGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHYudmlldy5jb3VudFJlbmRlcmFibGVDb2x1bW5zKCl9LGNvdW50Um93c1RyYW5zbGF0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi52aWV3LmNvdW50UmVuZGVyYWJsZVJvd3MoKX0sZ2V0U2hvcnRjdXRNYW5hZ2VyOmZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIEkuZ2V0U2hvcnRjdXRNYW5hZ2VyKCl9LGNyZWF0ZUNlbGxDb29yZHM6ZnVuY3Rpb24oWm4sX3Ipe3JldHVybiBJLl9jcmVhdGVDZWxsQ29vcmRzKFpuLF9yKX0sY3JlYXRlQ2VsbFJhbmdlOmZ1bmN0aW9uKFpuLF9yLFhyKXtyZXR1cm4gSS5fY3JlYXRlQ2VsbFJhbmdl''@;'; put 'put ''KFpuLF9yLFhyKX0sdmlzdWFsVG9SZW5kZXJhYmxlQ29vcmRzOm1yLHJlbmRlcmFibGVUb1Zpc3VhbENvb3JkczpTcixpc0Rpc2FibGVkQ2VsbFNlbGVjdGlvbjpmdW5jdGlvbihabixfcil7cmV0dXJuIEkuZ2V0Q2VsbE1ldGEoWm4sX3IpLmRpc2FibGVWaXN1YWxTZWxlY3Rpb259fSk7dGhp''@;'; put 'put ''cy5zZWxlY3Rpb249d3I7dmFyIFFyPWZ1bmN0aW9uKFpuKXtabi5oaWRkZW5JbmRleGVzQ2hhbmdlZCYmdi5zZWxlY3Rpb24ucmVmcmVzaCgpfTtmdW5jdGlvbiB5aShGbil7dmFyIFpuPU1rZShGbik7anBlKFpuKT8oSS5ydW5Ib29rcygiYmVmb3JlTGFuZ3VhZ2VDaGFuZ2UiLFpuKSxMbi5s''@;'; put 'put ''YW5ndWFnZT1abixJLnJ1bkhvb2tzKCJhZnRlckxhbmd1YWdlQ2hhbmdlIixabikpOkVrZShGbil9ZnVuY3Rpb24gS2koRm4sWm4pe3ZhciBfcj0iY2xhc3NOYW1lIj09PUZuP0kucm9vdEVsZW1lbnQ6SS50YWJsZTtpZihLZSlPMChfcixabik7ZWxzZXt2YXIgWHI9W10sY2k9W107TG5bRm5d''@;'; put 'put ''JiYoWHI9QXJyYXkuaXNBcnJheShMbltGbl0pP0xuW0ZuXTpLaGUoTG5bRm5dKSksWm4mJihjaT1BcnJheS5pc0FycmF5KFpuKT9abjpLaGUoWm4pKTt2YXIgYzA9WGhlKFhyLGNpKSxYaT1YaGUoY2ksWHIpO2MwLmxlbmd0aCYmcGwoX3IsYzApLFhpLmxlbmd0aCYmTzAoX3IsWGkpfUxuW0Zu''@;'; put 'put ''XT1abn1mdW5jdGlvbiBTbygpe3ZhciBGbj0hMTtyZXR1cm57dmFsaWRhdG9yc0luUXVldWU6MCx2YWxpZDohMCxhZGRWYWxpZGF0b3JUb1F1ZXVlOmZ1bmN0aW9uKCl7dGhpcy52YWxpZGF0b3JzSW5RdWV1ZSs9MSxGbj0hMX0scmVtb3ZlVmFsaWRhdG9yRm9ybVF1ZXVlOmZ1bmN0aW9uKCl7''@;'; put 'put ''dGhpcy52YWxpZGF0b3JzSW5RdWV1ZT10aGlzLnZhbGlkYXRvcnNJblF1ZXVlLTE8MD8wOnRoaXMudmFsaWRhdG9yc0luUXVldWUtMSx0aGlzLmNoZWNrSWZRdWV1ZUlzRW1wdHkoKX0sb25RdWV1ZUVtcHR5OmZ1bmN0aW9uKCl7fSxjaGVja0lmUXVldWVJc0VtcHR5OmZ1bmN0aW9uKCl7MD09''@;'; put 'put ''PXRoaXMudmFsaWRhdG9yc0luUXVldWUmJiExPT09Rm4mJihGbj0hMCx0aGlzLm9uUXVldWVFbXB0eSh0aGlzLnZhbGlkKSl9fX1mdW5jdGlvbiBQbyhGbil7dmFyIFpuPUZuLnJlcGxhY2UoIiwiLCIuIik7cmV0dXJuITE9PT1pc05hTihwYXJzZUZsb2F0KFpuKSk/cGFyc2VGbG9hdChabik6''@;'; put 'put ''Rm59ZnVuY3Rpb24gU2EoRm4sWm4sX3Ipe2lmKEZuLmxlbmd0aCl7dmFyIFhyPUkuZ2V0QWN0aXZlRWRpdG9yKCksY2k9SS5ydW5Ib29rcygiYmVmb3JlQ2hhbmdlIixGbixabnx8ImVkaXQiKSxjMD0hMDtpZighMT09PWNpKXJldHVybiB2b2lkKFhyJiZYci5jYW5jZWxDaGFuZ2VzKCkpO3Zh''@;'; put 'put ''ciBYaT1uZXcgU287WGkub25RdWV1ZUVtcHR5PWZ1bmN0aW9uKHQyKXtYciYmYzAmJlhyLmNhbmNlbENoYW5nZXMoKSxfcih0Mil9O2Zvcih2YXIgRTA9Rm4ubGVuZ3RoLTE7RTA+PTA7RTAtLSlpZihudWxsPT09Rm5bRTBdKUZuLnNwbGljZShFMCwxKTtlbHNle3ZhciB6MD1JZyhGbltFMF0s''@;'; put 'put ''NCksa289ejBbMF0sV2E9ejBbM10sZTI9dWUucHJvcFRvQ29sKHowWzFdKSxIYT1JLmdldENlbGxNZXRhKGtvLGUyKTsibnVtZXJpYyI9PT1IYS50eXBlJiYic3RyaW5nIj09dHlwZW9mIFdhJiZwX2UoV2EpJiYoRm5bRTBdWzNdPVBvKFdhKSksSS5nZXRDZWxsVmFsaWRhdG9yKEhhKSYmKFhp''@;'; put 'put ''LmFkZFZhbGlkYXRvclRvUXVldWUoKSxJLnZhbGlkYXRlQ2VsbChGbltFMF1bM10sSGEsZnVuY3Rpb24odDIsTzEpe3JldHVybiBmdW5jdGlvbihSMSl7aWYoImJvb2xlYW4iIT10eXBlb2YgUjEpdGhyb3cgbmV3IEVycm9yKCJWYWxpZGF0aW9uIGVycm9yOiByZXN1bHQgaXMgbm90IGJvb2xl''@;'; put 'put ''YW4iKTtpZighMT09PVIxJiYhMT09PU8xLmFsbG93SW52YWxpZCl7YzA9ITEsRm4uc3BsaWNlKHQyLDEpLE8xLnZhbGlkPSEwO3ZhciB6dT1JLmdldENlbGwoTzEudmlzdWFsUm93LE8xLnZpc3VhbENvbCk7bnVsbCE9PXp1JiZwbCh6dSxmbi5pbnZhbGlkQ2VsbENsYXNzTmFtZSl9WGkucmVt''@;'; put 'put ''b3ZlVmFsaWRhdG9yRm9ybVF1ZXVlKCl9fShFMCxIYSksWm4pKX1YaS5jaGVja0lmUXVldWVJc0VtcHR5KCl9fWZ1bmN0aW9uIEphKEZuLFpuKXt2YXIgX3I9Rm4ubGVuZ3RoLTE7aWYoIShfcjwwKSl7Zm9yKDtfcj49MDtfci0tKXt2YXIgWHI9ITE7aWYobnVsbCE9PUZuW19yXSl7aWYobnVs''@;'; put 'put ''bCE9Rm5bX3JdWzJdfHxudWxsIT1Gbltfcl1bM10pe2lmKGZuLmFsbG93SW5zZXJ0Um93KWZvcig7Rm5bX3JdWzBdPkkuY291bnRSb3dzKCktMTspe3ZhciBjaT11ZS5jcmVhdGVSb3codm9pZCAwLHZvaWQgMCxabik7aWYoIShjaT49MSkpe1hyPSEwO2JyZWFrfSR0LmNyZWF0ZVJvdyhudWxs''@;'; put 'put ''LGNpKX1pZigiYXJyYXkiPT09SS5kYXRhVHlwZSYmKCFmbi5jb2x1bW5zfHwwPT09Zm4uY29sdW1ucy5sZW5ndGgpJiZmbi5hbGxvd0luc2VydENvbHVtbilmb3IoO3VlLnByb3BUb0NvbChGbltfcl1bMV0pPkkuY291bnRDb2xzKCktMTspe3ZhciBjMD11ZS5jcmVhdGVDb2wodm9pZCAwLHZv''@;'; put 'put ''aWQgMCxabik7aWYoIShjMD49MSkpe1hyPSEwO2JyZWFrfSR0LmNyZWF0ZUNvbHVtbihudWxsLGMwKX1Ycnx8dWUuc2V0KEZuW19yXVswXSxGbltfcl1bMV0sRm5bX3JdWzNdKX19ZWxzZSBGbi5zcGxpY2UoX3IsMSl9SS5mb3JjZUZ1bGxSZW5kZXI9ITAsQmUuYWRqdXN0Um93c0FuZENvbHMo''@;'; put 'put ''KSxJLnJ1bkhvb2tzKCJiZWZvcmVDaGFuZ2VSZW5kZXIiLEZuLFpuKSxOZS5sb2NrRWRpdG9yKCksSS5fcmVmcmVzaEJvcmRlcnMobnVsbCksTmUudW5sb2NrRWRpdG9yKCksSS52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpLEkucnVuSG9va3MoImFmdGVyQ2hhbmdlIixGbixabnx8ImVkaXQi''@;'; put 'put ''KTt2YXIgWGk9SS5nZXRBY3RpdmVFZGl0b3IoKTtYaSYmVG8oWGkucmVmcmVzaFZhbHVlKSYmWGkucmVmcmVzaFZhbHVlKCl9fWZ1bmN0aW9uIGxhKEZuLFpuLF9yKXtyZXR1cm4gQXJyYXkuaXNBcnJheShGbik/Rm46W1tGbixabixfcl1dfXRoaXMuY29sdW1uSW5kZXhNYXBwZXIuYWRkTG9j''@;'; put 'put ''YWxIb29rKCJjYWNoZVVwZGF0ZWQiLFFyKSx0aGlzLnJvd0luZGV4TWFwcGVyLmFkZExvY2FsSG9vaygiY2FjaGVVcGRhdGVkIixRciksdGhpcy5zZWxlY3Rpb24uYWRkTG9jYWxIb29rKCJiZWZvcmVTZXRSYW5nZVN0YXJ0IixmdW5jdGlvbihGbil7di5ydW5Ib29rcygiYmVmb3JlU2V0UmFu''@;'; put 'put ''Z2VTdGFydCIsRm4pfSksdGhpcy5zZWxlY3Rpb24uYWRkTG9jYWxIb29rKCJiZWZvcmVTZXRSYW5nZVN0YXJ0T25seSIsZnVuY3Rpb24oRm4pe3YucnVuSG9va3MoImJlZm9yZVNldFJhbmdlU3RhcnRPbmx5IixGbil9KSx0aGlzLnNlbGVjdGlvbi5hZGRMb2NhbEhvb2soImJlZm9yZVNldFJh''@;'; put 'put ''bmdlRW5kIixmdW5jdGlvbihGbil7di5ydW5Ib29rcygiYmVmb3JlU2V0UmFuZ2VFbmQiLEZuKSxGbi5yb3c8MCYmKEZuLnJvdz12LnZpZXcuX3d0Lnd0VGFibGUuZ2V0Rmlyc3RWaXNpYmxlUm93KCkpLEZuLmNvbDwwJiYoRm4uY29sPXYudmlldy5fd3Qud3RUYWJsZS5nZXRGaXJzdFZpc2li''@;'; put 'put ''bGVDb2x1bW4oKSl9KSx0aGlzLnNlbGVjdGlvbi5hZGRMb2NhbEhvb2soImFmdGVyU2V0UmFuZ2VFbmQiLGZ1bmN0aW9uKEZuKXt2YXIgWm49RVMoITEpLF9yPXYuc2VsZWN0aW9uLmdldFNlbGVjdGVkUmFuZ2UoKSxYcj1fci5jdXJyZW50KCksY2k9WHIuZnJvbSxjMD1Yci50byxYaT1fci5z''@;'; put 'put ''aXplKCktMTt2LnJ1bkhvb2tzKCJhZnRlclNlbGVjdGlvbiIsY2kucm93LGNpLmNvbCxjMC5yb3csYzAuY29sLFpuLFhpKSx2LnJ1bkhvb2tzKCJhZnRlclNlbGVjdGlvbkJ5UHJvcCIsY2kucm93LEkuY29sVG9Qcm9wKGNpLmNvbCksYzAucm93LEkuY29sVG9Qcm9wKGMwLmNvbCksWm4sWGkp''@;'; put 'put ''O3ZhciBFMD12LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlBbnlIZWFkZXIoKSx6MD12LnNlbGVjdGlvbi5zZWxlY3RlZFJhbmdlLmN1cnJlbnQoKSxrbz0hMDtDJiYoa289ITEpLFpuLmlzVG91Y2hlZCgpJiYoa289IVpuLnZhbHVlKTt2YXIgd289di5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Um93''@;'; put 'put ''SGVhZGVyKCksV2E9di5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCk7ITEhPT1rbyYmKEUwP3dvP3Yudmlldy5zY3JvbGxWaWV3cG9ydFZlcnRpY2FsbHkoSS5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KEZuLnJvdykpOldhJiZ2LnZpZXcu''@;'; put 'put ''c2Nyb2xsVmlld3BvcnRIb3Jpem9udGFsbHkoSS5jb2x1bW5JbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KEZuLmNvbCkpOnowJiYhdi5zZWxlY3Rpb24uaXNNdWx0aXBsZSgpP3Yudmlldy5zY3JvbGxWaWV3cG9ydChtcih6MC5mcm9tKSk6di52aWV3LnNjcm9sbFZp''@;'; put 'put ''ZXdwb3J0KG1yKEZuKSkpLHdvJiZXYT9PMCh2LnJvb3RFbGVtZW50LFsiaHRfX3NlbGVjdGlvbi0tcm93cyIsImh0X19zZWxlY3Rpb24tLWNvbHVtbnMiXSk6d28/KHBsKHYucm9vdEVsZW1lbnQsImh0X19zZWxlY3Rpb24tLWNvbHVtbnMiKSxPMCh2LnJvb3RFbGVtZW50LCJodF9fc2VsZWN0''@;'; put 'put ''aW9uLS1yb3dzIikpOldhPyhwbCh2LnJvb3RFbGVtZW50LCJodF9fc2VsZWN0aW9uLS1yb3dzIiksTzAodi5yb290RWxlbWVudCwiaHRfX3NlbGVjdGlvbi0tY29sdW1ucyIpKTpwbCh2LnJvb3RFbGVtZW50LFsiaHRfX3NlbGVjdGlvbi0tcm93cyIsImh0X19zZWxlY3Rpb24tLWNvbHVtbnMi''@;'; put 'put ''XSksdi5fcmVmcmVzaEJvcmRlcnMobnVsbCl9KSx0aGlzLnNlbGVjdGlvbi5hZGRMb2NhbEhvb2soImFmdGVyU2VsZWN0aW9uRmluaXNoZWQiLGZ1bmN0aW9uKEZuKXt2YXIgWm49Rm4ubGVuZ3RoLTEsX3I9Rm5bWm5dLFhyPV9yLmZyb20sY2k9X3IudG87di5ydW5Ib29rcygiYWZ0ZXJTZWxl''@;'; put 'put ''Y3Rpb25FbmQiLFhyLnJvdyxYci5jb2wsY2kucm93LGNpLmNvbCxabiksdi5ydW5Ib29rcygiYWZ0ZXJTZWxlY3Rpb25FbmRCeVByb3AiLFhyLnJvdyxJLmNvbFRvUHJvcChYci5jb2wpLGNpLnJvdyxJLmNvbFRvUHJvcChjaS5jb2wpLFpuKX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9v''@;'; put 'put ''aygiYWZ0ZXJJc011bHRpcGxlU2VsZWN0aW9uIixmdW5jdGlvbihGbil7dmFyIFpuPXYucnVuSG9va3MoImFmdGVySXNNdWx0aXBsZVNlbGVjdGlvbiIsRm4udmFsdWUpO0ZuLnZhbHVlJiYoRm4udmFsdWU9Wm4pfSksdGhpcy5zZWxlY3Rpb24uYWRkTG9jYWxIb29rKCJiZWZvcmVNb2RpZnlU''@;'; put 'put ''cmFuc2Zvcm1TdGFydCIsZnVuY3Rpb24oRm4pe3YucnVuSG9va3MoIm1vZGlmeVRyYW5zZm9ybVN0YXJ0IixGbil9KSx0aGlzLnNlbGVjdGlvbi5hZGRMb2NhbEhvb2soImFmdGVyTW9kaWZ5VHJhbnNmb3JtU3RhcnQiLGZ1bmN0aW9uKEZuLFpuLF9yKXt2LnJ1bkhvb2tzKCJhZnRlck1vZGlm''@;'; put 'put ''eVRyYW5zZm9ybVN0YXJ0IixGbixabixfcil9KSx0aGlzLnNlbGVjdGlvbi5hZGRMb2NhbEhvb2soImJlZm9yZU1vZGlmeVRyYW5zZm9ybUVuZCIsZnVuY3Rpb24oRm4pe3YucnVuSG9va3MoIm1vZGlmeVRyYW5zZm9ybUVuZCIsRm4pfSksdGhpcy5zZWxlY3Rpb24uYWRkTG9jYWxIb29rKCJh''@;'; put 'put ''ZnRlck1vZGlmeVRyYW5zZm9ybUVuZCIsZnVuY3Rpb24oRm4sWm4sX3Ipe3YucnVuSG9va3MoImFmdGVyTW9kaWZ5VHJhbnNmb3JtRW5kIixGbixabixfcil9KSx0aGlzLnNlbGVjdGlvbi5hZGRMb2NhbEhvb2soImFmdGVyRGVzZWxlY3QiLGZ1bmN0aW9uKCl7TmUuZGVzdHJveUVkaXRvcigp''@;'; put 'put ''LHYuX3JlZnJlc2hCb3JkZXJzKCkscGwodi5yb290RWxlbWVudCxbImh0X19zZWxlY3Rpb24tLXJvd3MiLCJodF9fc2VsZWN0aW9uLS1jb2x1bW5zIl0pLHYucnVuSG9va3MoImFmdGVyRGVzZWxlY3QiKX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9vaygiaW5zZXJ0Um93UmVxdWlyZSIs''@;'; put 'put ''ZnVuY3Rpb24oRm4pe3YuYWx0ZXIoImluc2VydF9yb3ciLEZuLDEsImF1dG8iKX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9vaygiaW5zZXJ0Q29sUmVxdWlyZSIsZnVuY3Rpb24oRm4pe3YuYWx0ZXIoImluc2VydF9jb2wiLEZuLDEsImF1dG8iKX0pLEJlPXthbHRlcjpmdW5jdGlvbiha''@;'; put 'put ''bixfcil7dmFyIFhpLFhyPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToxLGNpPWFyZ3VtZW50cy5sZW5ndGg+Mz9hcmd1bWVudHNbM106dm9pZCAwLGMwPWFyZ3VtZW50cy5sZW5ndGg+ND9hcmd1bWVudHNbNF06dm9pZCAwLEUwPWZ1bmN0''@;'; put 'put ''aW9uKGpnKXtpZigwPT09amcubGVuZ3RoKXJldHVybltdO3ZhciBoZD1SdyhqZyk7cmV0dXJuIGhkLnNvcnQoZnVuY3Rpb24oaDMsR3Upe3ZhciBXdT1JZyhoMywxKVswXSxIcD1JZyhHdSwxKVswXTtyZXR1cm4gV3U9PT1IcD8wOld1PkhwPzE6LTF9KSxTdShoZCxmdW5jdGlvbihoMyxHdSl7''@;'; put 'put ''dmFyIEV1PUlnKEd1LDIpLFd1PUV1WzBdLGRkPUV1WzFdLEhwPWgzW2gzLmxlbmd0aC0xXSxOcD1JZyhIcCwyKSxkUj1OcFswXStOcFsxXTtpZihXdTw9ZFIpe3ZhciBXbmU9TWF0aC5tYXgoZGQtKGRSLVd1KSwwKTtIcFsxXSs9V25lfWVsc2UgaDMucHVzaChbV3UsZGRdKTtyZXR1cm4gaDN9''@;'; put 'put ''LFtoZFswXV0pfTtzd2l0Y2goWm4pe2Nhc2UiaW5zZXJ0X3JvdyI6dmFyIHowPUkuY291bnRTb3VyY2VSb3dzKCk7aWYoZm4ubWF4Um93cz09PXowKXJldHVybjtpZihfcj1Ubyhfcik/X3I6ejAsWGk9dWUuY3JlYXRlUm93KF9yLFhyLGNpKSl7JHQuY3JlYXRlUm93KEkudG9QaHlzaWNhbFJv''@;'; put 'put ''dyhfciksWHIpO3ZhciBrbz13ci5zZWxlY3RlZFJhbmdlLmN1cnJlbnQoKSx3bz1udWxsPT1rbz92b2lkIDA6a28uZnJvbSxXYT1udWxsPT13bz92b2lkIDA6d28ucm93O2lmKFRvKFdhKSYmV2E+PV9yKXt2YXIgZTI9a28udG8sSGE9ZTIucm93LHQyPWUyLmNvbCxPMT13by5jb2w7d3IuaXNT''@;'; put 'put ''ZWxlY3RlZEJ5Um93SGVhZGVyKCkmJihPMT0tMSksd3IuZ2V0U2VsZWN0ZWRSYW5nZSgpLnBvcCgpLHdyLnNldFJhbmdlU3RhcnRPbmx5KEkuX2NyZWF0ZUNlbGxDb29yZHMoV2ErWGksTzEpLCEwKSx3ci5zZXRSYW5nZUVuZChJLl9jcmVhdGVDZWxsQ29vcmRzKEhhK1hpLHQyKSl9ZWxzZSBJ''@;'; put 'put ''Ll9yZWZyZXNoQm9yZGVycygpfWJyZWFrO2Nhc2UiaW5zZXJ0X2NvbCI6aWYoWGk9dWUuY3JlYXRlQ29sKF9yLFhyLGNpKSl7aWYoJHQuY3JlYXRlQ29sdW1uKEkudG9QaHlzaWNhbENvbHVtbihfciksWHIpLEFycmF5LmlzQXJyYXkoZm4uY29sSGVhZGVycykpe3ZhciBSMT1bX3IsMF07UjEu''@;'; put 'put ''bGVuZ3RoKz1YaSxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGZuLmNvbEhlYWRlcnMsUjEpfXZhciB6dT13ci5zZWxlY3RlZFJhbmdlLmN1cnJlbnQoKSxQYz1udWxsPT16dT92b2lkIDA6enUuZnJvbSxpdT1udWxsPT1QYz92b2lkIDA6UGMuY29sO2lmKFRvKGl1KSYmaXU+PV9yKXt2''@;'; put 'put ''YXIgRmM9enUudG8sZmQ9RmMucm93LGhSPUZjLmNvbCxLdz1QYy5yb3c7d3IuaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkmJihLdz0tMSksd3IuZ2V0U2VsZWN0ZWRSYW5nZSgpLnBvcCgpLHdyLnNldFJhbmdlU3RhcnRPbmx5KEkuX2NyZWF0ZUNlbGxDb29yZHMoS3csaXUrWGkpLCEwKSx3''@;'; put 'put ''ci5zZXRSYW5nZUVuZChJLl9jcmVhdGVDZWxsQ29vcmRzKGZkLGhSK1hpKSl9ZWxzZSBJLl9yZWZyZXNoQm9yZGVycygpfWJyZWFrO2Nhc2UicmVtb3ZlX3JvdyI6dmFyIFp6PWZ1bmN0aW9uKGpnKXt2YXIgaGQ9MDtVcihqZyxmdW5jdGlvbihFTSl7dmFyIGgzPUlnKEVNLDIpLEd1PWgzWzBd''@;'; put 'put ''LEV1PWgzWzFdLFd1PWRjKEd1KT9JLmNvdW50Um93cygpLTE6TWF0aC5tYXgoR3UtaGQsMCk7aWYoTnVtYmVyLmlzSW50ZWdlcihHdSkmJihHdT1NYXRoLm1heChHdS1oZCwwKSksdWUucmVtb3ZlUm93KEd1LEV1LGNpKSl7JHQucmVtb3ZlUm93KEkudG9QaHlzaWNhbFJvdyhXdSksRXUpO3Zh''@;'; put 'put ''ciBIcD1JLmNvdW50Um93cygpLE5wPWZuLmZpeGVkUm93c1RvcDtOcD49V3UrMSYmKGZuLmZpeGVkUm93c1RvcC09TWF0aC5taW4oRXUsTnAtV3UpKTt2YXIgYTk9Zm4uZml4ZWRSb3dzQm90dG9tO2E5JiZXdT49SHAtYTkmJihmbi5maXhlZFJvd3NCb3R0b20tPU1hdGgubWluKEV1LGE5KSks''@;'; put 'put ''aGQrPUV1fX0pfTtBcnJheS5pc0FycmF5KF9yKT9aeihFMChfcikpOlp6KFtbX3IsWHJdXSksQmUuYWRqdXN0Um93c0FuZENvbHMoKSxJLl9yZWZyZXNoQm9yZGVycygpO2JyZWFrO2Nhc2UicmVtb3ZlX2NvbCI6dmFyIHp6PWZ1bmN0aW9uKGpnKXt2YXIgaGQ9MDtVcihqZyxmdW5jdGlvbihF''@;'; put 'put ''TSl7dmFyIGgzPUlnKEVNLDIpLEd1PWgzWzBdLEV1PWgzWzFdLFd1PWRjKEd1KT9JLmNvdW50Q29scygpLTE6TWF0aC5tYXgoR3UtaGQsMCksZGQ9SS50b1BoeXNpY2FsQ29sdW1uKFd1KTtpZihOdW1iZXIuaXNJbnRlZ2VyKEd1KSYmKEd1PU1hdGgubWF4KEd1LWhkLDApKSx1ZS5yZW1vdmVD''@;'; put 'put ''b2woR3UsRXUsY2kpKXskdC5yZW1vdmVDb2x1bW4oZGQsRXUpO3ZhciBOcD1mbi5maXhlZENvbHVtbnNTdGFydDtOcD49V3UrMSYmKGZuLmZpeGVkQ29sdW1uc1N0YXJ0LT1NYXRoLm1pbihFdSxOcC1XdSkpLEFycmF5LmlzQXJyYXkoZm4uY29sSGVhZGVycykmJih2b2lkIDA9PT1kZCYmKGRk''@;'; put 'put ''PS0xKSxmbi5jb2xIZWFkZXJzLnNwbGljZShkZCxFdSkpLGhkKz1FdX19KX07QXJyYXkuaXNBcnJheShfcik/enooRTAoX3IpKTp6eihbW19yLFhyXV0pLEJlLmFkanVzdFJvd3NBbmRDb2xzKCksSS5fcmVmcmVzaEJvcmRlcnMoKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcignVGhl''@;'; put 'put ''cmUgaXMgbm8gc3VjaCBhY3Rpb24gIicuY29uY2F0KFpuLCciJykpfWMwfHxCZS5hZGp1c3RSb3dzQW5kQ29scygpfSxhZGp1c3RSb3dzQW5kQ29sczpmdW5jdGlvbigpe3ZhciBrbyxabj1mbi5taW5Sb3dzLF9yPWZuLm1pblNwYXJlUm93cyxYcj1mbi5taW5Db2xzLGNpPWZuLm1pblNwYXJl''@;'; put 'put ''Q29scztpZihabil7dmFyIGMwPUkuY291bnRSb3dzKCk7YzA8Wm4mJnVlLmNyZWF0ZVJvdyhjMCxabi1jMCwiYXV0byIpfWlmKF9yKXt2YXIgWGk9SS5jb3VudEVtcHR5Um93cyghMCk7aWYoWGk8X3Ipe3ZhciB6MD1NYXRoLm1pbihfci1YaSxmbi5tYXhSb3dzLUkuY291bnRTb3VyY2VSb3dz''@;'; put 'put ''KCkpO3VlLmNyZWF0ZVJvdyhJLmNvdW50Um93cygpLHowLCJhdXRvIil9fShYcnx8Y2kpJiYoa289SS5jb3VudEVtcHR5Q29scyghMCkpO3ZhciB3bz1JLmNvdW50Q29scygpO2lmKFhyJiYhZm4uY29sdW1ucyYmd288WHIpe3ZhciBXYT1Yci13bztrbys9V2EsdWUuY3JlYXRlQ29sKHdvLFdh''@;'; put 'put ''LCJhdXRvIil9aWYoY2kmJiFmbi5jb2x1bW5zJiYiYXJyYXkiPT09SS5kYXRhVHlwZSYma288Y2kpe3dvPUkuY291bnRDb2xzKCk7dmFyIEhhPU1hdGgubWluKGNpLWtvLGZuLm1heENvbHMtd28pO3VlLmNyZWF0ZUNvbCh3byxIYSwiYXV0byIpfXZhciB0Mj1JLmNvdW50Um93cygpLE8xPUku''@;'; put 'put ''Y291bnRDb2xzKCk7KDA9PT10Mnx8MD09PU8xKSYmd3IuZGVzZWxlY3QoKSx3ci5pc1NlbGVjdGVkKCkmJlVyKHdyLnNlbGVjdGVkUmFuZ2UsZnVuY3Rpb24oUjEpe3ZhciB6dT0hMSxQYz1SMS5mcm9tLnJvdyxpdT1SMS5mcm9tLmNvbCxGYz1SMS50by5yb3csZmQ9UjEudG8uY29sO1BjPnQy''@;'; put 'put ''LTE/KHp1PSEwLEZjPihQYz10Mi0xKSYmKEZjPVBjKSk6RmM+dDItMSYmKHp1PSEwLFBjPihGYz10Mi0xKSYmKFBjPUZjKSksaXU+TzEtMT8oenU9ITAsZmQ+KGl1PU8xLTEpJiYoZmQ9aXUpKTpmZD5PMS0xJiYoenU9ITAsaXU+KGZkPU8xLTEpJiYoaXU9ZmQpKSx6dSYmSS5zZWxlY3RDZWxs''@;'; put 'put ''KFBjLGl1LEZjLGZkKX0pLEkudmlldyYmSS52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpfSxwb3B1bGF0ZUZyb21BcnJheTpmdW5jdGlvbihabixfcixYcixjaSxjMCxYaSxFMCl7dmFyIHowLGtvLHdvLFdhLGUyPVtdLEhhPXt9LHQyPVtdLE8xPVpuLnJvdyxSMT1abi5jb2w7aWYoMD09PShr''@;'; put 'put ''bz1fci5sZW5ndGgpKXJldHVybiExO3ZhciB6dT0wLFBjPTA7c3dpdGNoKHhsKFhyKSYmKHp1PVhyLmNvbC1SMSsxLFBjPVhyLnJvdy1PMSsxKSxjMCl7Y2FzZSJzaGlmdF9kb3duIjp2YXIgaXU9RFooX3IpLEZjPWl1Lmxlbmd0aCxmZD1NYXRoLm1heChGYyx6dSksaFI9SS5nZXREYXRhKCku''@;'; put 'put ''c2xpY2UoTzEpLEt3PURaKGhSKS5zbGljZShSMSxSMStmZCk7Zm9yKHdvPTA7d288ZmQ7d28rPTEpaWYod288RmMpe2Zvcih6MD0wLGtvPWl1W3dvXS5sZW5ndGg7ejA8UGMta287ejArPTEpaXVbd29dLnB1c2goaXVbd29dW3owJWtvXSk7dDIucHVzaChpdVt3b10uY29uY2F0KHdvPEt3Lmxl''@;'; put 'put ''bmd0aD9Ld1t3b106bmV3IEFycmF5KGhSLmxlbmd0aCkuZmlsbChudWxsKSkpfWVsc2UgdDIucHVzaChpdVt3byVGY10uY29uY2F0KEt3W3dvXSkpO0kucG9wdWxhdGVGcm9tQXJyYXkoTzEsUjEsRFoodDIpKTticmVhaztjYXNlInNoaWZ0X3JpZ2h0Ijp2YXIgWno9X3IubGVuZ3RoLHp6PU1h''@;'; put 'put ''dGgubWF4KFp6LFBjKSwkdz1JLmdldERhdGEoKS5zbGljZShPMSkubWFwKGZ1bmN0aW9uKEhMZSl7cmV0dXJuIEhMZS5zbGljZShSMSl9KTtmb3IoejA9MDt6MDx6ejt6MCs9MSlpZih6MDxaeil7Zm9yKHdvPTAsV2E9X3JbejBdLmxlbmd0aDt3bzx6dS1XYTt3bys9MSlfclt6MF0ucHVzaChf''@;'; put 'put ''clt6MF1bd28lV2FdKTt2YXIgaGQ7aWYoejA8JHcubGVuZ3RoKWZvcih2YXIgamc9MDtqZzwkd1t6MF0ubGVuZ3RoO2pnKz0xKV9yW3owXS5wdXNoKCR3W3owXVtqZ10pO2Vsc2UoaGQ9X3JbejBdKS5wdXNoLmFwcGx5KGhkLFJ3KG5ldyBBcnJheSgkd1swXS5sZW5ndGgpLmZpbGwobnVsbCkp''@;'; put 'put ''KX1lbHNlIF9yLnB1c2goX3JbejAla29dLnNsaWNlKDAsenopLmNvbmNhdCgkd1t6MF0pKTtJLnBvcHVsYXRlRnJvbUFycmF5KE8xLFIxLF9yKTticmVhaztkZWZhdWx0OkhhLnJvdz1abi5yb3csSGEuY29sPVpuLmNvbDt2YXIgV3UsRU09e3JvdzpYciYmWm4/WHIucm93LVpuLnJvdysxOjEs''@;'; put 'put ''Y29sOlhyJiZabj9Yci5jb2wtWm4uY29sKzE6MX0saDM9MCxHdT0wLEV1PSEwLGRkPWZ1bmN0aW9uKFFBdCl7dmFyIE5MZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxCbWU9X3JbUUF0JV9yLmxlbmd0aF07cmV0dXJuIG51bGwh''@;'; put 'put ''PT1OTGU/Qm1lW05MZSVCbWUubGVuZ3RoXTpCbWV9LEhwPV9yLmxlbmd0aCxOcD1Ycj9Yci5yb3ctWm4ucm93KzE6MDtmb3Ioa289WHI/TnA6TWF0aC5tYXgoSHAsTnApLHowPTA7ejA8a28mJiEoWHImJkhhLnJvdz5Yci5yb3cmJk5wPkhwfHwhZm4uYWxsb3dJbnNlcnRSb3cmJkhhLnJvdz5J''@;'; put 'put ''LmNvdW50Um93cygpLTF8fEhhLnJvdz49Zm4ubWF4Um93cyk7ejArKyl7dmFyIGE5PXowLWgzLEduZT1kZChhOSkubGVuZ3RoLGRSPVhyP1hyLmNvbC1abi5jb2wrMTowO2lmKFdhPVhyP2RSOk1hdGgubWF4KEduZSxkUiksSGEuY29sPVpuLmNvbCxXdT1JLmdldENlbGxNZXRhKEhhLnJvdyxI''@;'; put 'put ''YS5jb2wpLCJDb3B5UGFzdGUucGFzdGUiIT09Y2kmJiJBdXRvZmlsbC5maWxsIiE9PWNpfHwhV3Uuc2tpcFJvd09uUGFzdGUpe2ZvcihHdT0wLHdvPTA7d288V2EmJiEoWHImJkhhLmNvbD5Yci5jb2wmJmRSPkduZXx8IWZuLmFsbG93SW5zZXJ0Q29sdW1uJiZIYS5jb2w+SS5jb3VudENvbHMo''@;'; put 'put ''KS0xfHxIYS5jb2w+PWZuLm1heENvbHMpO3dvKyspaWYoV3U9SS5nZXRDZWxsTWV0YShIYS5yb3csSGEuY29sKSwiQ29weVBhc3RlLnBhc3RlIiE9PWNpJiYiQXV0b2ZpbGwuZmlsbCIhPT1jaXx8IVd1LnNraXBDb2x1bW5PblBhc3RlKWlmKFd1LnJlYWRPbmx5JiYiVW5kb1JlZG8udW5kbyIh''@;'; put 'put ''PT1jaSlIYS5jb2wrPTE7ZWxzZXt2YXIgV25lPXdvLUd1LFZwPWRkKGE5LFduZSksWmc9SS5nZXREYXRhQXRDZWxsKEhhLnJvdyxIYS5jb2wpO2lmKCJBdXRvZmlsbC5maWxsIj09PWNpKXt2YXIgUm1lPUkucnVuSG9va3MoImJlZm9yZUF1dG9maWxsSW5zaWRlUG9wdWxhdGUiLHtyb3c6YTks''@;'; put 'put ''Y29sOlduZX0sWGksX3IsRTAse30sRU0pO1JtZSYmKFZwPWExKFJtZS52YWx1ZSk/VnA6Um1lLnZhbHVlKX1udWxsIT09VnAmJiJvYmplY3QiPT09Y2QoVnApPyhBcnJheS5pc0FycmF5KFZwKSYmbnVsbD09PVpnJiYoWmc9W10pLG51bGw9PT1aZ3x8Im9iamVjdCIhPT1jZChaZyk/RXU9ITE6''@;'; put 'put ''JGhlKGxPKEFycmF5LmlzQXJyYXkoWmcpP1pnOlpnWzBdfHxaZyksbE8oQXJyYXkuaXNBcnJheShWcCk/VnA6VnBbMF18fFZwKSk/VnA9Z2goVnApOkV1PSExKTpudWxsIT09WmcmJiJvYmplY3QiPT09Y2QoWmcpJiYoRXU9ITEpLEV1JiZlMi5wdXNoKFtIYS5yb3csSGEuY29sLFZwXSksRXU9''@;'; put 'put ''ITAsSGEuY29sKz0xfWVsc2UgR3UrPTEsSGEuY29sKz0xLFdhKz0xO0hhLnJvdys9MX1lbHNlIGgzKz0xLEhhLnJvdys9MSxrbys9MX1JLnNldERhdGFBdENlbGwoZTIsbnVsbCxudWxsLGNpfHwicG9wdWxhdGVGcm9tQXJyYXkiKX19fSx0aGlzLmluaXQ9ZnVuY3Rpb24oKXtfZS5zZXREYXRh''@;'; put 'put ''KGZuLmRhdGEpLEkucnVuSG9va3MoImJlZm9yZUluaXQiKSwoYjgoKXx8ZTNlKCkpJiZPMChJLnJvb3RFbGVtZW50LCJtb2JpbGUiKSx0aGlzLnVwZGF0ZVNldHRpbmdzKGZuLCEwKSx0aGlzLnZpZXc9bmV3IEhRZSh0aGlzKSxOZT1RWmUuZ2V0SW5zdGFuY2UoSSxmbix3ciksSS5ydW5Ib29r''@;'; put 'put ''cygiaW5pdCIpLHRoaXMuZm9yY2VGdWxsUmVuZGVyPSEwLHRoaXMudmlldy5yZW5kZXIoKSwib2JqZWN0Ij09PWNkKEtlKSYmKEkucnVuSG9va3MoImFmdGVyQ2hhbmdlIixLZVswXSxLZVsxXSksS2U9ITEpLEkucnVuSG9va3MoImFmdGVySW5pdCIpfSx0aGlzLl9jcmVhdGVDZWxsQ29vcmRz''@;'; put 'put ''PWZ1bmN0aW9uKEZuLFpuKXtyZXR1cm4gSS52aWV3Ll93dC5jcmVhdGVDZWxsQ29vcmRzKEZuLFpuKX0sdGhpcy5fY3JlYXRlQ2VsbFJhbmdlPWZ1bmN0aW9uKEZuLFpuLF9yKXtyZXR1cm4gSS52aWV3Ll93dC5jcmVhdGVDZWxsUmFuZ2UoRm4sWm4sX3IpfSx0aGlzLnZhbGlkYXRlQ2VsbD1m''@;'; put 'put ''dW5jdGlvbihGbixabixfcixYcil7dmFyIFhpLGNpPUkuZ2V0Q2VsbFZhbGlkYXRvcihabik7ZnVuY3Rpb24gYzAoWGkpe3ZhciBFMD0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO2lmKEUwJiYhMCE9PVpuLmhpZGRlbil7dmFyIHow''@;'; put 'put ''PVpuLnZpc3VhbENvbCxrbz1abi52aXN1YWxSb3csd289SS5nZXRDZWxsKGtvLHowLCEwKTtpZih3byYmIlRIIiE9PXdvLm5vZGVOYW1lKXt2YXIgV2E9SS5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KGtvKSxlMj1JLmNvbHVtbkluZGV4TWFwcGVyLmdldFJl''@;'; put 'put ''bmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoejApO0kudmlldy5fd3QuZ2V0U2V0dGluZygiY2VsbFJlbmRlcmVyIixXYSxlMix3byl9X3IoWGkpfWVsc2UgX3IoWGkpfU9iZShjaSkmJihYaT1jaSxjaT1mdW5jdGlvbihFMCx6MCl7ejAoWGkudGVzdChFMCkpfSksVTIoY2kpPyhGbj1JLnJ1bkhv''@;'; put 'put ''b2tzKCJiZWZvcmVWYWxpZGF0ZSIsRm4sWm4udmlzdWFsUm93LFpuLnByb3AsWHIpLEkuX3JlZ2lzdGVySW1tZWRpYXRlKGZ1bmN0aW9uKCl7Y2kuY2FsbChabixGbixmdW5jdGlvbihYaSl7IUl8fChYaT1JLnJ1bkhvb2tzKCJhZnRlclZhbGlkYXRlIixYaSxGbixabi52aXN1YWxSb3csWm4u''@;'; put 'put ''cHJvcCxYciksWm4udmFsaWQ9WGksYzAoWGkpLEkucnVuSG9va3MoInBvc3RBZnRlclZhbGlkYXRlIixYaSxGbixabi52aXN1YWxSb3csWm4ucHJvcCxYcikpfSl9KSk6SS5fcmVnaXN0ZXJJbW1lZGlhdGUoZnVuY3Rpb24oKXtabi52YWxpZD0hMCxjMChabi52YWxpZCwhMSl9KX0sdGhpcy5z''@;'; put 'put ''ZXREYXRhQXRDZWxsPWZ1bmN0aW9uKEZuLFpuLF9yLFhyKXt2YXIgRTAsejAsa28sY2k9bGEoRm4sWm4sX3IpLGMwPVtdLFhpPVhyO2ZvcihFMD0wLHowPWNpLmxlbmd0aDtFMDx6MDtFMCsrKXtpZigib2JqZWN0IiE9PWNkKGNpW0UwXSkpdGhyb3cgbmV3IEVycm9yKCJNZXRob2QgYHNldERh''@;'; put 'put ''dGFBdENlbGxgIGFjY2VwdHMgcm93IG51bWJlciBvciBjaGFuZ2VzIGFycmF5IG9mIGFycmF5cyBhcyBpdHMgZmlyc3QgcGFyYW1ldGVyIik7aWYoIm51bWJlciIhPXR5cGVvZiBjaVtFMF1bMV0pdGhyb3cgbmV3IEVycm9yKCJNZXRob2QgYHNldERhdGFBdENlbGxgIGFjY2VwdHMgcm93IGFu''@;'; put 'put ''ZCBjb2x1bW4gbnVtYmVyIGFzIGl0cyBwYXJhbWV0ZXJzLiBJZiB5b3Ugd2FudCB0byB1c2Ugb2JqZWN0IHByb3BlcnR5IG5hbWUsIHVzZSBtZXRob2QgYHNldERhdGFBdFJvd1Byb3BgIik7a289Y2lbRTBdWzFdPj10aGlzLmNvdW50Q29scygpP2NpW0UwXVsxXTp1ZS5jb2xUb1Byb3AoY2lb''@;'; put 'put ''RTBdWzFdKSxjMC5wdXNoKFtjaVtFMF1bMF0sa28sX2UuZ2V0QXRDZWxsKHRoaXMudG9QaHlzaWNhbFJvdyhjaVtFMF1bMF0pLGNpW0UwXVsxXSksY2lbRTBdWzJdXSl9IVhpJiYib2JqZWN0Ij09PWNkKEZuKSYmKFhpPVpuKSxJLnJ1bkhvb2tzKCJhZnRlclNldERhdGFBdENlbGwiLGMwLFhp''@;'; put 'put ''KSxTYShjMCxYaSxmdW5jdGlvbigpe0phKGMwLFhpKX0pfSx0aGlzLnNldERhdGFBdFJvd1Byb3A9ZnVuY3Rpb24oRm4sWm4sX3IsWHIpe3ZhciBFMCx6MCxjaT1sYShGbixabixfciksYzA9W10sWGk9WHI7Zm9yKEUwPTAsejA9Y2kubGVuZ3RoO0UwPHowO0UwKyspYzAucHVzaChbY2lbRTBd''@;'; put 'put ''WzBdLGNpW0UwXVsxXSxfZS5nZXRBdENlbGwodGhpcy50b1BoeXNpY2FsUm93KGNpW0UwXVswXSksY2lbRTBdWzFdKSxjaVtFMF1bMl1dKTshWGkmJiJvYmplY3QiPT09Y2QoRm4pJiYoWGk9Wm4pLEkucnVuSG9va3MoImFmdGVyU2V0RGF0YUF0Um93UHJvcCIsYzAsWGkpLFNhKGMwLFhpLGZ1''@;'; put 'put ''bmN0aW9uKCl7SmEoYzAsWGkpfSl9LHRoaXMubGlzdGVuPWZ1bmN0aW9uKCl7SSYmIUkuaXNMaXN0ZW5pbmcoKSYmKG82ZT1JLmd1aWQsSS5ydW5Ib29rcygiYWZ0ZXJMaXN0ZW4iKSl9LHRoaXMudW5saXN0ZW49ZnVuY3Rpb24oKXt0aGlzLmlzTGlzdGVuaW5nKCkmJihvNmU9bnVsbCxJLnJ1''@;'; put 'put ''bkhvb2tzKCJhZnRlclVubGlzdGVuIikpfSx0aGlzLmlzTGlzdGVuaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIG82ZT09PUkuZ3VpZH0sdGhpcy5kZXN0cm95RWRpdG9yPWZ1bmN0aW9uKCl7dmFyIEZuPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNb''@;'; put 'put ''MF0sWm49IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTtJLl9yZWZyZXNoQm9yZGVycyhGbixabil9LHRoaXMucG9wdWxhdGVGcm9tQXJyYXk9ZnVuY3Rpb24oRm4sWm4sX3IsWHIsY2ksYzAsWGksRTAsejApe2lmKCJvYmplY3QiIT09''@;'; put 'put ''Y2QoX3IpfHwib2JqZWN0IiE9PWNkKF9yWzBdKSl0aHJvdyBuZXcgRXJyb3IoInBvcHVsYXRlRnJvbUFycmF5IHBhcmFtZXRlciBgaW5wdXRgIG11c3QgYmUgYW4gYXJyYXkgb2YgYXJyYXlzIik7dmFyIGtvPSJudW1iZXIiPT10eXBlb2YgWHI/SS5fY3JlYXRlQ2VsbENvb3JkcyhYcixjaSk6''@;'; put 'put ''bnVsbDtyZXR1cm4gQmUucG9wdWxhdGVGcm9tQXJyYXkoSS5fY3JlYXRlQ2VsbENvb3JkcyhGbixabiksX3Isa28sYzAsWGksRTAsejApfSx0aGlzLnNwbGljZUNvbD1mdW5jdGlvbihGbixabixfcil7Zm9yKHZhciBYcixjaT1hcmd1bWVudHMubGVuZ3RoLGMwPW5ldyBBcnJheShjaT4zP2Np''@;'; put 'put ''LTM6MCksWGk9MztYaTxjaTtYaSsrKWMwW1hpLTNdPWFyZ3VtZW50c1tYaV07cmV0dXJuKFhyPXVlKS5zcGxpY2VDb2wuYXBwbHkoWHIsW0ZuLFpuLF9yXS5jb25jYXQoYzApKX0sdGhpcy5zcGxpY2VSb3c9ZnVuY3Rpb24oRm4sWm4sX3Ipe2Zvcih2YXIgWHIsY2k9YXJndW1lbnRzLmxlbmd0''@;'; put 'put ''aCxjMD1uZXcgQXJyYXkoY2k+Mz9jaS0zOjApLFhpPTM7WGk8Y2k7WGkrKyljMFtYaS0zXT1hcmd1bWVudHNbWGldO3JldHVybihYcj11ZSkuc3BsaWNlUm93LmFwcGx5KFhyLFtGbixabixfcl0uY29uY2F0KGMwKSl9LHRoaXMuZ2V0U2VsZWN0ZWQ9ZnVuY3Rpb24oKXtpZih3ci5pc1NlbGVj''@;'; put 'put ''dGVkKCkpcmV0dXJuIE9sKHdyLmdldFNlbGVjdGVkUmFuZ2UoKSxmdW5jdGlvbihGbil7dmFyIFpuPUZuLmZyb20sX3I9Rm4udG87cmV0dXJuW1puLnJvdyxabi5jb2wsX3Iucm93LF9yLmNvbF19KX0sdGhpcy5nZXRTZWxlY3RlZExhc3Q9ZnVuY3Rpb24oKXt2YXIgWm4sRm49dGhpcy5nZXRT''@;'; put 'put ''ZWxlY3RlZCgpO3JldHVybiBGbiYmRm4ubGVuZ3RoPjAmJihabj1GbltGbi5sZW5ndGgtMV0pLFpufSx0aGlzLmdldFNlbGVjdGVkUmFuZ2U9ZnVuY3Rpb24oKXtpZih3ci5pc1NlbGVjdGVkKCkpcmV0dXJuIEFycmF5LmZyb20od3IuZ2V0U2VsZWN0ZWRSYW5nZSgpKX0sdGhpcy5nZXRTZWxl''@;'; put 'put ''Y3RlZFJhbmdlTGFzdD1mdW5jdGlvbigpe3ZhciBabixGbj10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKTtyZXR1cm4gRm4mJkZuLmxlbmd0aD4wJiYoWm49Rm5bRm4ubGVuZ3RoLTFdKSxabn0sdGhpcy5lbXB0eVNlbGVjdGVkQ2VsbHM9ZnVuY3Rpb24oRm4pe3ZhciBabj10aGlzO2lmKHdyLmlz''@;'; put 'put ''U2VsZWN0ZWQoKSYmMCE9PXRoaXMuY291bnRSb3dzKCkmJjAhPT10aGlzLmNvdW50Q29scygpKXt2YXIgX3I9W107VXIod3IuZ2V0U2VsZWN0ZWRSYW5nZSgpLGZ1bmN0aW9uKFhyKXt2YXIgY2k9WHIuZ2V0VG9wU3RhcnRDb3JuZXIoKSxjMD1Yci5nZXRCb3R0b21FbmRDb3JuZXIoKTtpYShj''@;'; put 'put ''aS5yb3csYzAucm93LGZ1bmN0aW9uKFhpKXtpYShjaS5jb2wsYzAuY29sLGZ1bmN0aW9uKEUwKXtabi5nZXRDZWxsTWV0YShYaSxFMCkucmVhZE9ubHl8fF9yLnB1c2goW1hpLEUwLG51bGxdKX0pfSl9KSxfci5sZW5ndGg+MCYmdGhpcy5zZXREYXRhQXRDZWxsKF9yLEZuKX19LHRoaXMuaXNS''@;'; put 'put ''ZW5kZXJTdXNwZW5kZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJTdXNwZW5kZWRDb3VudGVyPjB9LHRoaXMuc3VzcGVuZFJlbmRlcj1mdW5jdGlvbigpe3RoaXMucmVuZGVyU3VzcGVuZGVkQ291bnRlcis9MX0sdGhpcy5yZXN1bWVSZW5kZXI9ZnVuY3Rpb24oKXt2YXIgRm49dGhp''@;'; put 'put ''cy5yZW5kZXJTdXNwZW5kZWRDb3VudGVyLTE7dGhpcy5yZW5kZXJTdXNwZW5kZWRDb3VudGVyPU1hdGgubWF4KEZuLDApLCF0aGlzLmlzUmVuZGVyU3VzcGVuZGVkKCkmJkZuPT09dGhpcy5yZW5kZXJTdXNwZW5kZWRDb3VudGVyJiYodGhpcy5yZW5kZXJDYWxsP3RoaXMucmVuZGVyKCk6dGhp''@;'; put 'put ''cy5fcmVmcmVzaEJvcmRlcnMobnVsbCkpfSx0aGlzLnJlbmRlcj1mdW5jdGlvbigpe3RoaXMudmlldyYmKHRoaXMucmVuZGVyQ2FsbD0hMCx0aGlzLmZvcmNlRnVsbFJlbmRlcj0hMCx0aGlzLmlzUmVuZGVyU3VzcGVuZGVkKCl8fChOZS5sb2NrRWRpdG9yKCksdGhpcy5fcmVmcmVzaEJvcmRl''@;'; put 'put ''cnMobnVsbCksTmUudW5sb2NrRWRpdG9yKCkpKX0sdGhpcy5iYXRjaFJlbmRlcj1mdW5jdGlvbihGbil7dGhpcy5zdXNwZW5kUmVuZGVyKCk7dmFyIFpuPUZuKCk7cmV0dXJuIHRoaXMucmVzdW1lUmVuZGVyKCksWm59LHRoaXMuaXNFeGVjdXRpb25TdXNwZW5kZWQ9ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5leGVjdXRpb25TdXNwZW5kZWRDb3VudGVyPjB9LHRoaXMuc3VzcGVuZEV4ZWN1dGlvbj1mdW5jdGlvbigpe3RoaXMuZXhlY3V0aW9uU3VzcGVuZGVkQ291bnRlcis9MSx0aGlzLmNvbHVtbkluZGV4TWFwcGVyLnN1c3BlbmRPcGVyYXRpb25zKCksdGhpcy5yb3dJbmRleE1hcHBl''@;'; put 'put ''ci5zdXNwZW5kT3BlcmF0aW9ucygpfSx0aGlzLnJlc3VtZUV4ZWN1dGlvbj1mdW5jdGlvbigpe3ZhciBGbj1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLFpuPXRoaXMuZXhlY3V0aW9uU3VzcGVuZGVkQ291bnRlci0xO3RoaXMuZXhlY3V0''@;'; put 'put ''aW9uU3VzcGVuZGVkQ291bnRlcj1NYXRoLm1heChabiwwKSwoIXRoaXMuaXNFeGVjdXRpb25TdXNwZW5kZWQoKSYmWm49PT10aGlzLmV4ZWN1dGlvblN1c3BlbmRlZENvdW50ZXJ8fEZuKSYmKHRoaXMuY29sdW1uSW5kZXhNYXBwZXIucmVzdW1lT3BlcmF0aW9ucygpLHRoaXMucm93SW5kZXhN''@;'; put 'put ''YXBwZXIucmVzdW1lT3BlcmF0aW9ucygpKX0sdGhpcy5iYXRjaEV4ZWN1dGlvbj1mdW5jdGlvbihGbil7dmFyIFpuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07dGhpcy5zdXNwZW5kRXhlY3V0aW9uKCk7dmFyIF9yPUZuKCk7cmV0dXJu''@;'; put 'put ''IHRoaXMucmVzdW1lRXhlY3V0aW9uKFpuKSxfcn0sdGhpcy5iYXRjaD1mdW5jdGlvbihGbil7dGhpcy5zdXNwZW5kUmVuZGVyKCksdGhpcy5zdXNwZW5kRXhlY3V0aW9uKCk7dmFyIFpuPUZuKCk7cmV0dXJuIHRoaXMucmVzdW1lRXhlY3V0aW9uKCksdGhpcy5yZXN1bWVSZW5kZXIoKSxabn0s''@;'; put 'put ''dGhpcy5yZWZyZXNoRGltZW5zaW9ucz1mdW5jdGlvbigpe2lmKEkudmlldyl7dmFyIEZuPUkudmlldy5nZXRMYXN0U2l6ZSgpLFpuPUZuLndpZHRoLF9yPUZuLmhlaWdodCxYcj1JLnJvb3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGNpPVhyLndpZHRoLGMwPVhyLmhlaWdodCxY''@;'; put 'put ''aT1jaSE9PVpufHxjMCE9PV9yOyExPT09SS5ydW5Ib29rcygiYmVmb3JlUmVmcmVzaERpbWVuc2lvbnMiLHt3aWR0aDpabixoZWlnaHQ6X3J9LHt3aWR0aDpjaSxoZWlnaHQ6YzB9LFhpKXx8KChYaXx8SS52aWV3Ll93dC53dE92ZXJsYXlzLnNjcm9sbGFibGVFbGVtZW50PT09SS5yb290V2lu''@;'; put 'put ''ZG93KSYmKEkudmlldy5zZXRMYXN0U2l6ZShjaSxjMCksSS5yZW5kZXIoKSksSS5ydW5Ib29rcygiYWZ0ZXJSZWZyZXNoRGltZW5zaW9ucyIse3dpZHRoOlpuLGhlaWdodDpfcn0se3dpZHRoOmNpLGhlaWdodDpjMH0sWGkpKX19LHRoaXMudXBkYXRlRGF0YT1mdW5jdGlvbihGbixabil7dmFy''@;'; put 'put ''IF9yPXRoaXM7eFNlKEZuLGZ1bmN0aW9uKFhyKXt1ZT1Ycn0sZnVuY3Rpb24oWHIpe3VlPVhyLEkuY29sdW1uSW5kZXhNYXBwZXIuZml0VG9MZW5ndGgoX3IuZ2V0SW5pdGlhbENvbHVtbkNvdW50KCkpLEkucm93SW5kZXhNYXBwZXIuZml0VG9MZW5ndGgoX3IuY291bnRTb3VyY2VSb3dzKCkp''@;'; put 'put ''LEJlLmFkanVzdFJvd3NBbmRDb2xzKCl9LHtob3RJbnN0YW5jZTpJLGRhdGFNYXA6dWUsZGF0YVNvdXJjZTpfZSxpbnRlcm5hbFNvdXJjZToidXBkYXRlRGF0YSIsc291cmNlOlpuLGZpcnN0UnVuOktlfSl9LHRoaXMubG9hZERhdGE9ZnVuY3Rpb24oRm4sWm4pe3hTZShGbixmdW5jdGlvbihf''@;'; put 'put ''cil7dWU9X3J9LGZ1bmN0aW9uKCl7JHQuY2xlYXJDZWxsc0NhY2hlKCksSS5pbml0SW5kZXhNYXBwZXJzKCksQmUuYWRqdXN0Um93c0FuZENvbHMoKSxLZSYmKEtlPVtudWxsLCJsb2FkRGF0YSJdKX0se2hvdEluc3RhbmNlOkksZGF0YU1hcDp1ZSxkYXRhU291cmNlOl9lLGludGVybmFsU291''@;'; put 'put ''cmNlOiJsb2FkRGF0YSIsc291cmNlOlpuLGZpcnN0UnVuOktlfSl9LHRoaXMuZ2V0SW5pdGlhbENvbHVtbkNvdW50PWZ1bmN0aW9uKCl7dmFyIEZuPWZuLmNvbHVtbnMsWm49MDtpZihBcnJheS5pc0FycmF5KEZuKSlabj1Gbi5sZW5ndGg7ZWxzZSBpZihVMihGbikpaWYoImFycmF5Ij09PUku''@;'; put 'put ''ZGF0YVR5cGUpZm9yKHZhciBfcj10aGlzLmNvdW50U291cmNlQ29scygpLFhyPTA7WHI8X3I7WHIrPTEpRm4oWHIpJiYoWm4rPTEpO2Vsc2UoIm9iamVjdCI9PT1JLmRhdGFUeXBlfHwiZnVuY3Rpb24iPT09SS5kYXRhVHlwZSkmJihabj11ZS5jb2xUb1Byb3BDYWNoZS5sZW5ndGgpO2Vsc2Ug''@;'; put 'put ''aWYoVG8oZm4uZGF0YVNjaGVtYSkpe3ZhciBjaT11ZS5nZXRTY2hlbWEoKTtabj1BcnJheS5pc0FycmF5KGNpKT9jaS5sZW5ndGg6SnEoY2kpfWVsc2UgWm49dGhpcy5jb3VudFNvdXJjZUNvbHMoKTtyZXR1cm4gWm59LHRoaXMuaW5pdEluZGV4TWFwcGVycz1mdW5jdGlvbigpe3RoaXMuY29s''@;'; put 'put ''dW1uSW5kZXhNYXBwZXIuaW5pdFRvTGVuZ3RoKHRoaXMuZ2V0SW5pdGlhbENvbHVtbkNvdW50KCkpLHRoaXMucm93SW5kZXhNYXBwZXIuaW5pdFRvTGVuZ3RoKHRoaXMuY291bnRTb3VyY2VSb3dzKCkpfSx0aGlzLmdldERhdGE9ZnVuY3Rpb24oRm4sWm4sX3IsWHIpe3JldHVybiBhMShGbik/''@;'; put 'put ''dWUuZ2V0QWxsKCk6dWUuZ2V0UmFuZ2UoSS5fY3JlYXRlQ2VsbENvb3JkcyhGbixabiksSS5fY3JlYXRlQ2VsbENvb3JkcyhfcixYciksdWUuREVTVElOQVRJT05fUkVOREVSRVIpfSx0aGlzLmdldENvcHlhYmxlVGV4dD1mdW5jdGlvbihGbixabixfcixYcil7cmV0dXJuIHVlLmdldENvcHlh''@;'; put 'put ''YmxlVGV4dChJLl9jcmVhdGVDZWxsQ29vcmRzKEZuLFpuKSxJLl9jcmVhdGVDZWxsQ29vcmRzKF9yLFhyKSl9LHRoaXMuZ2V0Q29weWFibGVEYXRhPWZ1bmN0aW9uKEZuLFpuKXtyZXR1cm4gdWUuZ2V0Q29weWFibGUoRm4sdWUuY29sVG9Qcm9wKFpuKSl9LHRoaXMuZ2V0U2NoZW1hPWZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIHVlLmdldFNjaGVtYSgpfSx0aGlzLnVwZGF0ZVNldHRpbmdzPWZ1bmN0aW9uKEZuKXt2YXIgY2ksYzAsWm49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxfcj0oS2U/SS5sb2FkRGF0YTpJLnVwZGF0ZURhdGEpLmJp''@;'; put 'put ''bmQodGhpcyksWHI9ITE7aWYoVG8oRm4ucm93cykpdGhyb3cgbmV3IEVycm9yKCdUaGUgInJvd3MiIHNldHRpbmcgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gRG8geW91IG1lYW4gc3RhcnRSb3dzLCBtaW5Sb3dzIG9yIG1heFJvd3M/Jyk7aWYoVG8oRm4uY29scykpdGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KCdUaGUgImNvbHMiIHNldHRpbmcgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gRG8geW91IG1lYW4gc3RhcnRDb2xzLCBtaW5Db2xzIG9yIG1heENvbHM/Jyk7aWYoVG8oRm4uZ2FudHRDaGFydCkpdGhyb3cgbmV3IEVycm9yKCdTaW5jZSA4LjAuMCB0aGUgImdhbnR0Q2hhcnQiIHNldHRpbmcg''@;'; put 'put ''aXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4nKTtmb3IoY2kgaW4gRm4pImRhdGEiPT09Y2l8fCgibGFuZ3VhZ2UiPT09Y2k/eWkoRm4ubGFuZ3VhZ2UpOiJjbGFzc05hbWUiPT09Y2k/S2koImNsYXNzTmFtZSIsRm4uY2xhc3NOYW1lKToidGFibGVDbGFzc05hbWUiPT09Y2kmJkkudGFibGU/KEtp''@;'; put 'put ''KCJ0YWJsZUNsYXNzTmFtZSIsRm4udGFibGVDbGFzc05hbWUpLEkudmlldy5fd3Qud3RPdmVybGF5cy5zeW5jT3ZlcmxheVRhYmxlQ2xhc3NOYW1lcygpKTp6by5nZXRTaW5nbGV0b24oKS5pc1JlZ2lzdGVyZWQoY2kpfHx6by5nZXRTaW5nbGV0b24oKS5pc0RlcHJlY2F0ZWQoY2kpPyhVMihG''@;'; put 'put ''bltjaV0pfHxBcnJheS5pc0FycmF5KEZuW2NpXSkpJiYoRm5bY2ldLmluaXRpYWxIb29rPSEwLEkuYWRkSG9vayhjaSxGbltjaV0pKTohWm4mJm8xKEZuLGNpKSYmKExuW2NpXT1GbltjaV0pKTt2b2lkIDA9PT1Gbi5kYXRhJiZ2b2lkIDA9PT1mbi5kYXRhP19yKG51bGwsInVwZGF0ZVNldHRp''@;'; put 'put ''bmdzIik6dm9pZCAwIT09Rm4uZGF0YT9fcihGbi5kYXRhLCJ1cGRhdGVTZXR0aW5ncyIpOnZvaWQgMCE9PUZuLmNvbHVtbnMmJih1ZS5jcmVhdGVNYXAoKSxJLmluaXRJbmRleE1hcHBlcnMoKSk7dmFyIFhpPUkuY291bnRDb2xzKCksRTA9Zm4uY29sdW1ucztpZihFMCYmVTIoRTApJiYoWHI9''@;'; put 'put ''ITApLCh2b2lkIDAhPT1Gbi5jZWxsfHx2b2lkIDAhPT1Gbi5jZWxsc3x8dm9pZCAwIT09Rm4uY29sdW1ucykmJiR0LmNsZWFyQ2FjaGUoKSxYaT4wKWZvcihjaT0wLGMwPTA7Y2k8WGk7Y2krKyl7aWYoRTApe3ZhciB6MD1Ycj9FMChjaSk6RTBbYzBdO3owJiYkdC51cGRhdGVDb2x1bW5NZXRh''@;'; put 'put ''KGMwLHowKX1jMCs9MX1UbyhGbi5jZWxsKSYmR2woRm4uY2VsbCxmdW5jdGlvbih0Mil7SS5zZXRDZWxsTWV0YU9iamVjdCh0Mi5yb3csdDIuY29sLHQyKX0pLEkucnVuSG9va3MoImFmdGVyQ2VsbE1ldGFSZXNldCIpO3ZhciBrbz1JLnJvb3RFbGVtZW50LnN0eWxlLmhlaWdodDsiIiE9PWtv''@;'; put 'put ''JiYoa289cGFyc2VJbnQoSS5yb290RWxlbWVudC5zdHlsZS5oZWlnaHQsMTApKTt2YXIgd289Rm4uaGVpZ2h0O2lmKFUyKHdvKSYmKHdvPXdvKCkpLFpuKXt2YXIgV2E9SS5yb290RWxlbWVudC5nZXRBdHRyaWJ1dGUoInN0eWxlIik7V2EmJkkucm9vdEVsZW1lbnQuc2V0QXR0cmlidXRlKCJk''@;'; put 'put ''YXRhLWluaXRpYWxzdHlsZSIsSS5yb290RWxlbWVudC5nZXRBdHRyaWJ1dGUoInN0eWxlIikpfWlmKG51bGw9PT13byl7dmFyIGUyPUkucm9vdEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkYXRhLWluaXRpYWxzdHlsZSIpO2UyJiYoZTIuaW5kZXhPZigiaGVpZ2h0Iik+LTF8fGUyLmluZGV4T2Yo''@;'; put 'put ''Im92ZXJmbG93Iik+LTEpP0kucm9vdEVsZW1lbnQuc2V0QXR0cmlidXRlKCJzdHlsZSIsZTIpOihJLnJvb3RFbGVtZW50LnN0eWxlLmhlaWdodD0iIixJLnJvb3RFbGVtZW50LnN0eWxlLm92ZXJmbG93PSIiKX1lbHNlIHZvaWQgMCE9PXdvJiYoSS5yb290RWxlbWVudC5zdHlsZS5oZWlnaHQ9''@;'; put 'put ''aXNOYU4od28pPyIiLmNvbmNhdCh3byk6IiIuY29uY2F0KHdvLCJweCIpLEkucm9vdEVsZW1lbnQuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIpO2lmKHZvaWQgMCE9PUZuLndpZHRoKXt2YXIgSGE9Rm4ud2lkdGg7VTIoSGEpJiYoSGE9SGEoKSksSS5yb290RWxlbWVudC5zdHlsZS53aWR0aD1p''@;'; put 'put ''c05hTihIYSk/IiIuY29uY2F0KEhhKToiIi5jb25jYXQoSGEsInB4Iil9Wm58fChJLnZpZXcmJihJLnZpZXcuX3d0Lnd0Vmlld3BvcnQucmVzZXRIYXNPdmVyc2l6ZWRDb2x1bW5IZWFkZXJzTWFya2VkKCksSS52aWV3Ll93dC5leHBvcnRTZXR0aW5nc0FzQ2xhc3NOYW1lcygpKSxJLnJ1bkhv''@;'; put 'put ''b2tzKCJhZnRlclVwZGF0ZVNldHRpbmdzIixGbikpLEJlLmFkanVzdFJvd3NBbmRDb2xzKCksSS52aWV3JiYhS2UmJihJLmZvcmNlRnVsbFJlbmRlcj0hMCxOZS5sb2NrRWRpdG9yKCksSS5fcmVmcmVzaEJvcmRlcnMobnVsbCksSS52aWV3Ll93dC53dE92ZXJsYXlzLmFkanVzdEVsZW1lbnRz''@;'; put 'put ''U2l6ZSgpLE5lLnVubG9ja0VkaXRvcigpKSwhWm4mJkkudmlldyYmKCIiPT09a298fCIiPT09d298fHZvaWQgMD09PXdvKSYma28hPT13byYmSS52aWV3Ll93dC53dE92ZXJsYXlzLnVwZGF0ZU1haW5TY3JvbGxhYmxlRWxlbWVudHMoKX0sdGhpcy5nZXRWYWx1ZT1mdW5jdGlvbigpe3ZhciBG''@;'; put 'put ''bj1JLmdldFNlbGVjdGVkTGFzdCgpO2lmKGZuLmdldFZhbHVlKXtpZihVMihmbi5nZXRWYWx1ZSkpcmV0dXJuIGZuLmdldFZhbHVlLmNhbGwoSSk7aWYoRm4pcmV0dXJuIEkuZ2V0RGF0YSgpW0ZuWzBdWzBdXVtmbi5nZXRWYWx1ZV19ZWxzZSBpZihGbilyZXR1cm4gSS5nZXREYXRhQXRDZWxs''@;'; put 'put ''KEZuWzBdLEZuWzFdKX0sdGhpcy5nZXRTZXR0aW5ncz1mdW5jdGlvbigpe3JldHVybiBmbn0sdGhpcy5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2VsZWN0QWxsKCksdGhpcy5lbXB0eVNlbGVjdGVkQ2VsbHMoKX0sdGhpcy5hbHRlcj1mdW5jdGlvbihGbixabixfcixYcixjaSl7QmUuYWx0ZXIo''@;'; put 'put ''Rm4sWm4sX3IsWHIsY2kpfSx0aGlzLmdldENlbGw9ZnVuY3Rpb24oRm4sWm4pe3ZhciBfcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLFhyPVpuLGNpPUZuO2lmKFpuPj0wKXtpZih0aGlzLmNvbHVtbkluZGV4TWFwcGVyLmlzSGlkZGVu''@;'; put 'put ''KHRoaXMudG9QaHlzaWNhbENvbHVtbihabikpKXJldHVybiBudWxsO1hyPXRoaXMuY29sdW1uSW5kZXhNYXBwZXIuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChabil9aWYoRm4+PTApe2lmKHRoaXMucm93SW5kZXhNYXBwZXIuaXNIaWRkZW4odGhpcy50b1BoeXNpY2FsUm93KEZuKSkp''@;'; put 'put ''cmV0dXJuIG51bGw7Y2k9dGhpcy5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KEZuKX1yZXR1cm4gbnVsbD09PWNpfHxudWxsPT09WHI/bnVsbDpJLnZpZXcuZ2V0Q2VsbEF0Q29vcmRzKEkuX2NyZWF0ZUNlbGxDb29yZHMoY2ksWHIpLF9yKX0sdGhpcy5nZXRD''@;'; put 'put ''b29yZHM9ZnVuY3Rpb24oRm4pe3ZhciBabj10aGlzLnZpZXcuX3d0Lnd0VGFibGUuZ2V0Q29vcmRzKEZuKTtpZihudWxsPT09Wm4pcmV0dXJuIG51bGw7dmFyIF9yPVpuLnJvdyxYcj1abi5jb2wsY2k9X3IsYzA9WHI7cmV0dXJuIF9yPj0wJiYoY2k9dGhpcy5yb3dJbmRleE1hcHBlci5nZXRW''@;'; put 'put ''aXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KF9yKSksWHI+PTAmJihjMD10aGlzLmNvbHVtbkluZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoWHIpKSxJLl9jcmVhdGVDZWxsQ29vcmRzKGNpLGMwKX0sdGhpcy5jb2xUb1Byb3A9ZnVuY3Rpb24oRm4pe3JldHVybiB1ZS5j''@;'; put 'put ''b2xUb1Byb3AoRm4pfSx0aGlzLnByb3BUb0NvbD1mdW5jdGlvbihGbil7cmV0dXJuIHVlLnByb3BUb0NvbChGbil9LHRoaXMudG9WaXN1YWxSb3c9ZnVuY3Rpb24oRm4pe3JldHVybiB2LnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21QaHlzaWNhbEluZGV4KEZuKX0sdGhpcy50b1Zpc3Vh''@;'; put 'put ''bENvbHVtbj1mdW5jdGlvbihGbil7cmV0dXJuIHYuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVBoeXNpY2FsSW5kZXgoRm4pfSx0aGlzLnRvUGh5c2ljYWxSb3c9ZnVuY3Rpb24oRm4pe3JldHVybiB2LnJvd0luZGV4TWFwcGVyLmdldFBoeXNpY2FsRnJvbVZpc3VhbEluZGV4KEZu''@;'; put 'put ''KX0sdGhpcy50b1BoeXNpY2FsQ29sdW1uPWZ1bmN0aW9uKEZuKXtyZXR1cm4gdi5jb2x1bW5JbmRleE1hcHBlci5nZXRQaHlzaWNhbEZyb21WaXN1YWxJbmRleChGbil9LHRoaXMuZ2V0RGF0YUF0Q2VsbD1mdW5jdGlvbihGbixabil7cmV0dXJuIHVlLmdldChGbix1ZS5jb2xUb1Byb3AoWm4p''@;'; put 'put ''KX0sdGhpcy5nZXREYXRhQXRSb3dQcm9wPWZ1bmN0aW9uKEZuLFpuKXtyZXR1cm4gdWUuZ2V0KEZuLFpuKX0sdGhpcy5nZXREYXRhQXRDb2w9ZnVuY3Rpb24oRm4pe3ZhciBabjtyZXR1cm4oWm49W10pLmNvbmNhdC5hcHBseShabixSdyh1ZS5nZXRSYW5nZShJLl9jcmVhdGVDZWxsQ29vcmRz''@;'; put 'put ''KDAsRm4pLEkuX2NyZWF0ZUNlbGxDb29yZHMoZm4uZGF0YS5sZW5ndGgtMSxGbiksdWUuREVTVElOQVRJT05fUkVOREVSRVIpKSl9LHRoaXMuZ2V0RGF0YUF0UHJvcD1mdW5jdGlvbihGbil7dmFyIFpuLF9yPXVlLmdldFJhbmdlKEkuX2NyZWF0ZUNlbGxDb29yZHMoMCx1ZS5wcm9wVG9Db2wo''@;'; put 'put ''Rm4pKSxJLl9jcmVhdGVDZWxsQ29vcmRzKGZuLmRhdGEubGVuZ3RoLTEsdWUucHJvcFRvQ29sKEZuKSksdWUuREVTVElOQVRJT05fUkVOREVSRVIpO3JldHVybihabj1bXSkuY29uY2F0LmFwcGx5KFpuLFJ3KF9yKSl9LHRoaXMuZ2V0U291cmNlRGF0YT1mdW5jdGlvbihGbixabixfcixYcil7''@;'; put 'put ''cmV0dXJuIHZvaWQgMD09PUZuP19lLmdldERhdGEoKTpfZS5nZXRCeVJhbmdlKEkuX2NyZWF0ZUNlbGxDb29yZHMoRm4sWm4pLEkuX2NyZWF0ZUNlbGxDb29yZHMoX3IsWHIpKX0sdGhpcy5nZXRTb3VyY2VEYXRhQXJyYXk9ZnVuY3Rpb24oRm4sWm4sX3IsWHIpe3JldHVybiB2b2lkIDA9PT1G''@;'; put 'put ''bj9fZS5nZXREYXRhKCEwKTpfZS5nZXRCeVJhbmdlKEkuX2NyZWF0ZUNlbGxDb29yZHMoRm4sWm4pLEkuX2NyZWF0ZUNlbGxDb29yZHMoX3IsWHIpLCEwKX0sdGhpcy5nZXRTb3VyY2VEYXRhQXRDb2w9ZnVuY3Rpb24oRm4pe3JldHVybiBfZS5nZXRBdENvbHVtbihGbil9LHRoaXMuc2V0U291''@;'; put 'put ''cmNlRGF0YUF0Q2VsbD1mdW5jdGlvbihGbixabixfcixYcil7dmFyIGNpPWxhKEZuLFpuLF9yKSxjMD10aGlzLmhhc0hvb2soImFmdGVyU2V0U291cmNlRGF0YUF0Q2VsbCIpLFhpPVtdO2MwJiZVcihjaSxmdW5jdGlvbih6MCl7dmFyIGtvPUlnKHowLDMpLHdvPWtvWzBdLFdhPWtvWzFdLGUy''@;'; put 'put ''PWtvWzJdO1hpLnB1c2goW3dvLFdhLF9lLmdldEF0Q2VsbCh3byxXYSksZTJdKX0pLFVyKGNpLGZ1bmN0aW9uKHowKXt2YXIga289SWcoejAsMyk7X2Uuc2V0QXRDZWxsKGtvWzBdLGtvWzFdLGtvWzJdKX0pLGMwJiZ0aGlzLnJ1bkhvb2tzKCJhZnRlclNldFNvdXJjZURhdGFBdENlbGwiLFhp''@;'; put 'put ''LFhyKSx0aGlzLnJlbmRlcigpO3ZhciBFMD1JLmdldEFjdGl2ZUVkaXRvcigpO0UwJiZUbyhFMC5yZWZyZXNoVmFsdWUpJiZFMC5yZWZyZXNoVmFsdWUoKX0sdGhpcy5nZXRTb3VyY2VEYXRhQXRSb3c9ZnVuY3Rpb24oRm4pe3JldHVybiBfZS5nZXRBdFJvdyhGbil9LHRoaXMuZ2V0U291cmNl''@;'; put 'put ''RGF0YUF0Q2VsbD1mdW5jdGlvbihGbixabil7cmV0dXJuIF9lLmdldEF0Q2VsbChGbixabil9LHRoaXMuZ2V0RGF0YUF0Um93PWZ1bmN0aW9uKEZuKXtyZXR1cm4gdWUuZ2V0UmFuZ2UoSS5fY3JlYXRlQ2VsbENvb3JkcyhGbiwwKSxJLl9jcmVhdGVDZWxsQ29vcmRzKEZuLHRoaXMuY291bnRD''@;'; put 'put ''b2xzKCktMSksdWUuREVTVElOQVRJT05fUkVOREVSRVIpWzBdfHxbXX0sdGhpcy5nZXREYXRhVHlwZT1mdW5jdGlvbihGbixabixfcixYcil7dmFyIGNpPXRoaXMsYzA9dm9pZCAwPT09Rm4/WzAsMCx0aGlzLmNvdW50Um93cygpLHRoaXMuY291bnRDb2xzKCldOltGbixabixfcixYcl0sWGk9''@;'; put 'put ''YzBbMF0sRTA9YzBbMV0sejA9YzBbMl0sa289YzBbM10sd289bnVsbCxXYT1udWxsO3ZvaWQgMD09PXowJiYoejA9WGkpLHZvaWQgMD09PWtvJiYoa289RTApO3ZhciBlMj0ibWl4ZWQiO3JldHVybiBpYShNYXRoLm1heChNYXRoLm1pbihYaSx6MCksMCksTWF0aC5tYXgoWGksejApLGZ1bmN0''@;'; put 'put ''aW9uKEhhKXt2YXIgdDI9ITA7cmV0dXJuIGlhKE1hdGgubWF4KE1hdGgubWluKEUwLGtvKSwwKSxNYXRoLm1heChFMCxrbyksZnVuY3Rpb24oTzEpe3ZhciBSMT1jaS5nZXRDZWxsTWV0YShIYSxPMSk7cmV0dXJuIFdhPVIxLnR5cGUsd28/dDI9d289PT1XYTp3bz1XYSx0Mn0pLGUyPXQyP1dh''@;'; put 'put ''OiJtaXhlZCIsdDJ9KSxlMn0sdGhpcy5yZW1vdmVDZWxsTWV0YT1mdW5jdGlvbihGbixabixfcil7dmFyIFhyPVt0aGlzLnRvUGh5c2ljYWxSb3coRm4pLHRoaXMudG9QaHlzaWNhbENvbHVtbihabildLGNpPVhyWzBdLGMwPVhyWzFdLFhpPSR0LmdldENlbGxNZXRhS2V5VmFsdWUoY2ksYzAs''@;'; put 'put ''X3IpOyExIT09SS5ydW5Ib29rcygiYmVmb3JlUmVtb3ZlQ2VsbE1ldGEiLEZuLFpuLF9yLFhpKSYmKCR0LnJlbW92ZUNlbGxNZXRhKGNpLGMwLF9yKSxJLnJ1bkhvb2tzKCJhZnRlclJlbW92ZUNlbGxNZXRhIixGbixabixfcixYaSkpLFhpPW51bGx9LHRoaXMuc3BsaWNlQ2VsbHNNZXRhPWZ1''@;'; put 'put ''bmN0aW9uKEZuKXtmb3IodmFyIFpuPXRoaXMsX3I9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjAsWHI9YXJndW1lbnRzLmxlbmd0aCxjaT1uZXcgQXJyYXkoWHI+Mj9Yci0yOjApLGMwPTI7YzA8WHI7YzArKyljaVtjMC0yXT1hcmd1bWVu''@;'; put 'put ''dHNbYzBdO2lmKGNpLmxlbmd0aD4wJiYhQXJyYXkuaXNBcnJheShjaVswXSkpdGhyb3cgbmV3IEVycm9yKCJUaGUgM3JkIGFyZ3VtZW50IChjZWxsTWV0YVJvd3MpIGhhcyB0byBiZSBwYXNzZWQgYXMgYW4gYXJyYXkgb2YgY2VsbCBtZXRhIG9iamVjdHMgYXJyYXkuIik7X3I+MCYmJHQucmVt''@;'; put 'put ''b3ZlUm93KHRoaXMudG9QaHlzaWNhbFJvdyhGbiksX3IpLGNpLmxlbmd0aD4wJiZVcihjaS5yZXZlcnNlKCksZnVuY3Rpb24oWGkpeyR0LmNyZWF0ZVJvdyhabi50b1BoeXNpY2FsUm93KEZuKSksVXIoWGksZnVuY3Rpb24oRTAsejApe3JldHVybiBabi5zZXRDZWxsTWV0YU9iamVjdChGbix6''@;'; put 'put ''MCxFMCl9KX0pLEkucmVuZGVyKCl9LHRoaXMuc2V0Q2VsbE1ldGFPYmplY3Q9ZnVuY3Rpb24oRm4sWm4sX3Ipe3ZhciBYcj10aGlzOyJvYmplY3QiPT09Y2QoX3IpJiZHbChfcixmdW5jdGlvbihjaSxjMCl7WHIuc2V0Q2VsbE1ldGEoRm4sWm4sYzAsY2kpfSl9LHRoaXMuc2V0Q2VsbE1ldGE9''@;'; put 'put ''ZnVuY3Rpb24oRm4sWm4sX3IsWHIpe2lmKCExIT09SS5ydW5Ib29rcygiYmVmb3JlU2V0Q2VsbE1ldGEiLEZuLFpuLF9yLFhyKSl7dmFyIGMwPUZuLFhpPVpuO0ZuPHRoaXMuY291bnRSb3dzKCkmJihjMD10aGlzLnRvUGh5c2ljYWxSb3coRm4pKSxabjx0aGlzLmNvdW50Q29scygpJiYoWGk9''@;'; put 'put ''dGhpcy50b1BoeXNpY2FsQ29sdW1uKFpuKSksJHQuc2V0Q2VsbE1ldGEoYzAsWGksX3IsWHIpLEkucnVuSG9va3MoImFmdGVyU2V0Q2VsbE1ldGEiLEZuLFpuLF9yLFhyKX19LHRoaXMuZ2V0Q2VsbHNNZXRhPWZ1bmN0aW9uKCl7cmV0dXJuICR0LmdldENlbGxzTWV0YSgpfSx0aGlzLmdldENl''@;'; put 'put ''bGxNZXRhPWZ1bmN0aW9uKEZuLFpuKXt2YXIgX3I9dGhpcy50b1BoeXNpY2FsUm93KEZuKSxYcj10aGlzLnRvUGh5c2ljYWxDb2x1bW4oWm4pO3JldHVybiBudWxsPT09X3ImJihfcj1GbiksbnVsbD09PVhyJiYoWHI9Wm4pLCR0LmdldENlbGxNZXRhKF9yLFhyLHt2aXN1YWxSb3c6Rm4sdmlz''@;'; put 'put ''dWFsQ29sdW1uOlpufSl9LHRoaXMuZ2V0Q2VsbE1ldGFBdFJvdz1mdW5jdGlvbihGbil7cmV0dXJuICR0LmdldENlbGxzTWV0YUF0Um93KEZuKX0sdGhpcy5pc0NvbHVtbk1vZGlmaWNhdGlvbkFsbG93ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hKCJvYmplY3QiPT09SS5kYXRhVHlwZXx8Zm4uY29s''@;'; put 'put ''dW1ucyl9O3ZhciBhbD1xWigicmVuZGVyZXIiKTt0aGlzLmdldENlbGxSZW5kZXJlcj1mdW5jdGlvbihGbixabil7cmV0dXJuIFczZShhbC5jYWxsKHRoaXMsRm4sWm4pKX0sdGhpcy5nZXRDZWxsRWRpdG9yPXFaKCJlZGl0b3IiKTt2YXIgUnM9cVooInZhbGlkYXRvciIpO3RoaXMuZ2V0Q2Vs''@;'; put 'put ''bFZhbGlkYXRvcj1mdW5jdGlvbihGbixabil7dmFyIF9yPVJzLmNhbGwodGhpcyxGbixabik7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBfciYmKF9yPVkzZShfcikpLF9yfSx0aGlzLnZhbGlkYXRlQ2VsbHM9ZnVuY3Rpb24oRm4pe3RoaXMuX3ZhbGlkYXRlQ2VsbHMoRm4pfSx0aGlzLnZhbGlk''@;'; put 'put ''YXRlUm93cz1mdW5jdGlvbihGbixabil7aWYoIUFycmF5LmlzQXJyYXkoRm4pKXRocm93IG5ldyBFcnJvcigidmFsaWRhdGVSb3dzIHBhcmFtZXRlciBgcm93c2AgbXVzdCBiZSBhbiBhcnJheSIpO3RoaXMuX3ZhbGlkYXRlQ2VsbHMoWm4sRm4pfSx0aGlzLnZhbGlkYXRlQ29sdW1ucz1mdW5j''@;'; put 'put ''dGlvbihGbixabil7aWYoIUFycmF5LmlzQXJyYXkoRm4pKXRocm93IG5ldyBFcnJvcigidmFsaWRhdGVDb2x1bW5zIHBhcmFtZXRlciBgY29sdW1uc2AgbXVzdCBiZSBhbiBhcnJheSIpO3RoaXMuX3ZhbGlkYXRlQ2VsbHMoWm4sdm9pZCAwLEZuKX0sdGhpcy5fdmFsaWRhdGVDZWxscz1mdW5j''@;'; put 'put ''dGlvbihGbixabixfcil7dmFyIFhyPW5ldyBTbztGbiYmKFhyLm9uUXVldWVFbXB0eT1Gbik7Zm9yKHZhciBjaT1JLmNvdW50Um93cygpLTE7Y2k+PTA7KWlmKHZvaWQgMD09PVpufHwtMSE9PVpuLmluZGV4T2YoY2kpKXtmb3IodmFyIGMwPUkuY291bnRDb2xzKCktMTtjMD49MDspdm9pZCAw''@;'; put 'put ''PT09X3J8fC0xIT09X3IuaW5kZXhPZihjMCk/KFhyLmFkZFZhbGlkYXRvclRvUXVldWUoKSxJLnZhbGlkYXRlQ2VsbChJLmdldERhdGFBdENlbGwoY2ksYzApLEkuZ2V0Q2VsbE1ldGEoY2ksYzApLGZ1bmN0aW9uKFhpKXtpZigiYm9vbGVhbiIhPXR5cGVvZiBYaSl0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''IlZhbGlkYXRpb24gZXJyb3I6IHJlc3VsdCBpcyBub3QgYm9vbGVhbiIpOyExPT09WGkmJihYci52YWxpZD0hMSksWHIucmVtb3ZlVmFsaWRhdG9yRm9ybVF1ZXVlKCl9LCJ2YWxpZGF0ZUNlbGxzIiksYzAtPTEpOmMwLT0xO2NpLT0xfWVsc2UgY2ktPTE7WHIuY2hlY2tJZlF1ZXVlSXNFbXB0''@;'; put 'put ''eSgpfSx0aGlzLmdldFJvd0hlYWRlcj1mdW5jdGlvbihGbil7dmFyIFpuPWZuLnJvd0hlYWRlcnMsX3I9Rm47cmV0dXJuIHZvaWQgMCE9PV9yJiYoX3I9SS5ydW5Ib29rcygibW9kaWZ5Um93SGVhZGVyIixfcikpLHZvaWQgMD09PV9yPyhabj1bXSxpYShJLmNvdW50Um93cygpLTEsZnVuY3Rp''@;'; put 'put ''b24oWHIpe1puLnB1c2goSS5nZXRSb3dIZWFkZXIoWHIpKX0pKTpBcnJheS5pc0FycmF5KFpuKSYmdm9pZCAwIT09Wm5bX3JdP1puPVpuW19yXTpVMihabik/Wm49Wm4oX3IpOlpuJiYic3RyaW5nIiE9dHlwZW9mIFpuJiYibnVtYmVyIiE9dHlwZW9mIFpuJiYoWm49X3IrMSksWm59LHRoaXMu''@;'; put 'put ''aGFzUm93SGVhZGVycz1mdW5jdGlvbigpe3JldHVybiEhZm4ucm93SGVhZGVyc30sdGhpcy5oYXNDb2xIZWFkZXJzPWZ1bmN0aW9uKCl7aWYobnVsbCE9Zm4uY29sSGVhZGVycylyZXR1cm4hIWZuLmNvbEhlYWRlcnM7Zm9yKHZhciBGbj0wLFpuPUkuY291bnRDb2xzKCk7Rm48Wm47Rm4rKylp''@;'; put 'put ''ZihJLmdldENvbEhlYWRlcihGbikpcmV0dXJuITA7cmV0dXJuITF9LHRoaXMuZ2V0Q29sSGVhZGVyPWZ1bmN0aW9uKEZuKXt2YXIgWm49SS5ydW5Ib29rcygibW9kaWZ5Q29sSGVhZGVyIixGbiksX3I9Zm4uY29sSGVhZGVycztpZih2b2lkIDA9PT1abil7Zm9yKHZhciBYcj1bXSxjaT1JLmNv''@;'; put 'put ''dW50Q29scygpLGMwPTA7YzA8Y2k7YzArKylYci5wdXNoKEkuZ2V0Q29sSGVhZGVyKGMwKSk7X3I9WHJ9ZWxzZXt2YXIgRTA9SS50b1BoeXNpY2FsQ29sdW1uKFpuKSx6MD1mdW5jdGlvbih3byl7Zm9yKHZhciBXYT1bXSxlMj1JLmNvdW50Q29scygpLEhhPTA7SGE8ZTI7SGErKylVMihmbi5j''@;'; put 'put ''b2x1bW5zKSYmZm4uY29sdW1ucyhIYSkmJldhLnB1c2goSGEpO3JldHVybiBXYVt3b119KEUwKTshMT09PWZuLmNvbEhlYWRlcnM/X3I9bnVsbDpmbi5jb2x1bW5zJiZVMihmbi5jb2x1bW5zKSYmZm4uY29sdW1ucyh6MCkmJmZuLmNvbHVtbnMoejApLnRpdGxlP19yPWZuLmNvbHVtbnMoejAp''@;'; put 'put ''LnRpdGxlOmZuLmNvbHVtbnMmJmZuLmNvbHVtbnNbRTBdJiZmbi5jb2x1bW5zW0UwXS50aXRsZT9fcj1mbi5jb2x1bW5zW0UwXS50aXRsZTpBcnJheS5pc0FycmF5KGZuLmNvbEhlYWRlcnMpJiZ2b2lkIDAhPT1mbi5jb2xIZWFkZXJzW0UwXT9fcj1mbi5jb2xIZWFkZXJzW0UwXTpVMihmbi5j''@;'; put 'put ''b2xIZWFkZXJzKT9fcj1mbi5jb2xIZWFkZXJzKEUwKTpmbi5jb2xIZWFkZXJzJiYic3RyaW5nIiE9dHlwZW9mIGZuLmNvbEhlYWRlcnMmJiJudW1iZXIiIT10eXBlb2YgZm4uY29sSGVhZGVycyYmKF9yPXplZShabikpfXJldHVybiBfcn0sdGhpcy5fZ2V0Q29sV2lkdGhGcm9tU2V0dGluZ3M9''@;'; put 'put ''ZnVuY3Rpb24oRm4pe3ZhciBabjtpZihGbj49MCYmKFpuPUkuZ2V0Q2VsbE1ldGEoMCxGbikud2lkdGgpLCh2b2lkIDA9PT1abnx8Wm49PT1mbi53aWR0aCkmJihabj1mbi5jb2xXaWR0aHMpLG51bGwhPVpuKXtzd2l0Y2goY2QoWm4pKXtjYXNlIm9iamVjdCI6Wm49Wm5bRm5dO2JyZWFrO2Nh''@;'; put 'put ''c2UiZnVuY3Rpb24iOlpuPVpuKEZuKX0ic3RyaW5nIj09dHlwZW9mIFpuJiYoWm49cGFyc2VJbnQoWm4sMTApKX1yZXR1cm4gWm59LHRoaXMuZ2V0Q29sV2lkdGg9ZnVuY3Rpb24oRm4pe3ZhciBabj1JLl9nZXRDb2xXaWR0aEZyb21TZXR0aW5ncyhGbik7cmV0dXJuIHZvaWQgMD09PShabj1J''@;'; put 'put ''LnJ1bkhvb2tzKCJtb2RpZnlDb2xXaWR0aCIsWm4sRm4pKSYmKFpuPU5kZS5ERUZBVUxUX1dJRFRIKSxabn0sdGhpcy5fZ2V0Um93SGVpZ2h0RnJvbVNldHRpbmdzPWZ1bmN0aW9uKEZuKXt2YXIgWm49Zm4ucm93SGVpZ2h0cztpZihudWxsIT1abil7c3dpdGNoKGNkKFpuKSl7Y2FzZSJvYmpl''@;'; put 'put ''Y3QiOlpuPVpuW0ZuXTticmVhaztjYXNlImZ1bmN0aW9uIjpabj1abihGbil9InN0cmluZyI9PXR5cGVvZiBabiYmKFpuPXBhcnNlSW50KFpuLDEwKSl9cmV0dXJuIFpufSx0aGlzLmdldFJvd0hlaWdodD1mdW5jdGlvbihGbil7dmFyIFpuPUkuX2dldFJvd0hlaWdodEZyb21TZXR0aW5ncyhG''@;'; put 'put ''bik7cmV0dXJuIEkucnVuSG9va3MoIm1vZGlmeVJvd0hlaWdodCIsWm4sRm4pfSx0aGlzLmNvdW50U291cmNlUm93cz1mdW5jdGlvbigpe3JldHVybiBfZS5jb3VudFJvd3MoKX0sdGhpcy5jb3VudFNvdXJjZUNvbHM9ZnVuY3Rpb24oKXtyZXR1cm4gX2UuY291bnRGaXJzdFJvd0tleXMoKX0s''@;'; put 'put ''dGhpcy5jb3VudFJvd3M9ZnVuY3Rpb24oKXtyZXR1cm4gdWUuZ2V0TGVuZ3RoKCl9LHRoaXMuY291bnRDb2xzPWZ1bmN0aW9uKCl7dmFyIEZuPWZuLm1heENvbHMsWm49dGhpcy5jb2x1bW5JbmRleE1hcHBlci5nZXROb3RUcmltbWVkSW5kZXhlc0xlbmd0aCgpO3JldHVybiBNYXRoLm1pbihG''@;'; put 'put ''bixabil9LHRoaXMuY291bnRSZW5kZXJlZFJvd3M9ZnVuY3Rpb24oKXtyZXR1cm4gSS52aWV3Ll93dC5kcmF3bj9JLnZpZXcuX3d0Lnd0VGFibGUuZ2V0UmVuZGVyZWRSb3dzQ291bnQoKTotMX0sdGhpcy5jb3VudFZpc2libGVSb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIEkudmlldy5fd3QuZHJh''@;'; put 'put ''d24/SS52aWV3Ll93dC53dFRhYmxlLmdldFZpc2libGVSb3dzQ291bnQoKTotMX0sdGhpcy5jb3VudFJlbmRlcmVkQ29scz1mdW5jdGlvbigpe3JldHVybiBJLnZpZXcuX3d0LmRyYXduP0kudmlldy5fd3Qud3RUYWJsZS5nZXRSZW5kZXJlZENvbHVtbnNDb3VudCgpOi0xfSx0aGlzLmNvdW50''@;'; put 'put ''VmlzaWJsZUNvbHM9ZnVuY3Rpb24oKXtyZXR1cm4gSS52aWV3Ll93dC5kcmF3bj9JLnZpZXcuX3d0Lnd0VGFibGUuZ2V0VmlzaWJsZUNvbHVtbnNDb3VudCgpOi0xfSx0aGlzLmNvdW50RW1wdHlSb3dzPWZ1bmN0aW9uKCl7dmFyIEZuPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJn''@;'; put 'put ''dW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sWm49MDtyZXR1cm4gc2VlKEkuY291bnRSb3dzKCktMSxmdW5jdGlvbihfcil7aWYoSS5pc0VtcHR5Um93KF9yKSlabis9MTtlbHNlIGlmKCEwPT09Rm4pcmV0dXJuITF9KSxabn0sdGhpcy5jb3VudEVtcHR5Q29scz1mdW5jdGlvbigpe3ZhciBGbj1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO2lmKEkuY291bnRSb3dzKCk8MSlyZXR1cm4gMDt2YXIgWm49MDtyZXR1cm4gc2VlKEkuY291bnRDb2xzKCktMSxmdW5jdGlvbihfcil7aWYoSS5pc0VtcHR5Q29sKF9yKSlabis9MTtlbHNlIGlm''@;'; put 'put ''KCEwPT09Rm4pcmV0dXJuITF9KSxabn0sdGhpcy5pc0VtcHR5Um93PWZ1bmN0aW9uKEZuKXtyZXR1cm4gZm4uaXNFbXB0eVJvdy5jYWxsKEksRm4pfSx0aGlzLmlzRW1wdHlDb2w9ZnVuY3Rpb24oRm4pe3JldHVybiBmbi5pc0VtcHR5Q29sLmNhbGwoSSxGbil9LHRoaXMuc2VsZWN0Q2VsbD1m''@;'; put 'put ''dW5jdGlvbihGbixabixfcixYcil7dmFyIGNpPSEoYXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0pfHxhcmd1bWVudHNbNF0sYzA9IShhcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XSl8fGFyZ3VtZW50c1s1XTtyZXR1cm4hYTEoRm4pJiYh''@;'; put 'put ''YTEoWm4pJiZ0aGlzLnNlbGVjdENlbGxzKFtbRm4sWm4sX3IsWHJdXSxjaSxjMCl9LHRoaXMuc2VsZWN0Q2VsbHM9ZnVuY3Rpb24oKXt2YXIgRm49YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltbXV0sWm49IShhcmd1bWVudHMubGVuZ3Ro''@;'; put 'put ''PjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxfcj0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdOyExPT09Wm4mJihDPSEwKTt2YXIgWHI9d3Iuc2VsZWN0Q2VsbHMoRm4pO3JldHVybiBYciYmX3ImJkkubGlz''@;'; put 'put ''dGVuKCksQz0hMSxYcn0sdGhpcy5zZWxlY3RDb2x1bW5zPWZ1bmN0aW9uKEZuKXt2YXIgWm49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOkZuO3JldHVybiB3ci5zZWxlY3RDb2x1bW5zKEZuLFpuKX0sdGhpcy5zZWxlY3RSb3dzPWZ1bmN0''@;'; put 'put ''aW9uKEZuKXt2YXIgWm49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOkZuO3JldHVybiB3ci5zZWxlY3RSb3dzKEZuLFpuKX0sdGhpcy5kZXNlbGVjdENlbGw9ZnVuY3Rpb24oKXt3ci5kZXNlbGVjdCgpfSx0aGlzLnNlbGVjdEFsbD1mdW5j''@;'; put 'put ''dGlvbigpe3ZhciBGbj0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdLFpuPUZuJiZ0aGlzLmhhc1Jvd0hlYWRlcnMoKSxfcj1GbiYmdGhpcy5oYXNDb2xIZWFkZXJzKCk7Qz0hMCx3ci5zZWxlY3RBbGwoWm4sX3IpLEM9ITF9O3ZhciBI''@;'; put 'put ''MD1mdW5jdGlvbihabixfcil7cmV0dXJuIFpuLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChfciwxLCEwKX07ZnVuY3Rpb24gcm8oRm4pe3JldHVybiBmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcignVGhlICInLmNvbmNhdChGbiwnIiBtZXRob2QgY2Fubm90IGJlIGNhbGxlZCBiZWNhdXNl''@;'; put 'put ''IHRoaXMgSGFuZHNvbnRhYmxlIGluc3RhbmNlIGhhcyBiZWVuIGRlc3Ryb3llZCcpKX19dGhpcy5zY3JvbGxWaWV3cG9ydFRvPWZ1bmN0aW9uKEZuLFpuKXt2YXIgX3I9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxYcj1hcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdLGNpPSEoYXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0pfHxhcmd1bWVudHNbNF0sYzA9IV9yLFhpPSFYcixFMD1Gbix6MD1abjtpZihjaSl7dmFyIGtvPU51bWJlci5pc0ludGVnZXIo''@;'; put 'put ''Rm4pLHdvPU51bWJlci5pc0ludGVnZXIoWm4pLFdhPWtvP0gwKHRoaXMucm93SW5kZXhNYXBwZXIsRm4pOnZvaWQgMCxlMj13bz9IMCh0aGlzLmNvbHVtbkluZGV4TWFwcGVyLFpuKTp2b2lkIDA7aWYobnVsbD09PVdhfHxudWxsPT09ZTIpcmV0dXJuITE7RTA9a28/SS5yb3dJbmRleE1hcHBl''@;'; put 'put ''ci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KFdhKTp2b2lkIDAsejA9d28/SS5jb2x1bW5JbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KGUyKTp2b2lkIDB9dmFyIEhhPU51bWJlci5pc0ludGVnZXIoRTApLHQyPU51bWJlci5pc0ludGVnZXIoejApO3JldHVy''@;'; put 'put ''biBIYSYmdDI/SS52aWV3LnNjcm9sbFZpZXdwb3J0KEkuX2NyZWF0ZUNlbGxDb29yZHMoRTAsejApLGMwLFhyLF9yLFhpKTpIYSYmITE9PT10Mj9JLnZpZXcuc2Nyb2xsVmlld3BvcnRWZXJ0aWNhbGx5KEUwLGMwLF9yKTohKCF0Mnx8ITEhPT1IYSkmJkkudmlldy5zY3JvbGxWaWV3cG9ydEhv''@;'; put 'put ''cml6b250YWxseSh6MCxYcixYaSl9LHRoaXMuZGVzdHJveT1mdW5jdGlvbigpe2lmKEkuX2NsZWFyVGltZW91dHMoKSxJLl9jbGVhckltbWVkaWF0ZXMoKSxJLnZpZXcmJkkudmlldy5kZXN0cm95KCksX2UmJl9lLmRlc3Ryb3koKSxfZT1udWxsLHRoaXMuZ2V0U2hvcnRjdXRNYW5hZ2VyKCku''@;'; put 'put ''ZGVzdHJveSgpLCR0LmNsZWFyQ2FjaGUoKSxHZGUoSSkpe3ZhciBGbj10aGlzLnJvb3REb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjaG90LWRpc3BsYXktbGljZW5zZS1pbmZvIik7Rm4mJkZuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoRm4pfURwKEkucm9vdEVsZW1lbnQpLFouZGVzdHJveSgp''@;'; put 'put ''LE5lJiZOZS5kZXN0cm95KCksSS5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe0kucm93SW5kZXhNYXBwZXIudW5yZWdpc3RlckFsbCgpLEkuY29sdW1uSW5kZXhNYXBwZXIudW5yZWdpc3RlckFsbCgpLGlyLmdldEl0ZW1zKCkuZm9yRWFjaChmdW5jdGlvbihabil7SWcoWm4sMilbMV0uZGVz''@;'; put 'put ''dHJveSgpfSksaXIuY2xlYXIoKSxJLnJ1bkhvb2tzKCJhZnRlckRlc3Ryb3kiKX0sITApLHpvLmdldFNpbmdsZXRvbigpLmRlc3Ryb3koSSksR2woSSxmdW5jdGlvbihabixfcixYcil7VTIoWm4pP1hyW19yXT1ybyhfcik6Imd1aWQiIT09X3ImJihYcltfcl09bnVsbCl9KSxJLmlzRGVzdHJv''@;'; put 'put ''eWVkPSEwLHVlJiZ1ZS5kZXN0cm95KCksSS5yb3dJbmRleE1hcHBlcj1udWxsLEkuY29sdW1uSW5kZXhNYXBwZXI9bnVsbCx1ZT1udWxsLEJlPW51bGwsd3I9bnVsbCxOZT1udWxsLEk9bnVsbH0sdGhpcy5nZXRBY3RpdmVFZGl0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gTmUuZ2V0QWN0aXZlRWRp''@;'; put 'put ''dG9yKCl9LHRoaXMuZ2V0UGx1Z2luPWZ1bmN0aW9uKEZuKXt2YXIgWm49bGQoRm4pO3JldHVybiJVbmRvUmVkbyI9PT1abj90aGlzLnVuZG9SZWRvOmlyLmdldEl0ZW0oWm4pfSx0aGlzLmdldFBsdWdpbk5hbWU9ZnVuY3Rpb24oRm4pe3JldHVybiBGbj09PXRoaXMudW5kb1JlZG8/dGhpcy51''@;'; put 'put ''bmRvUmVkby5jb25zdHJ1Y3Rvci5QTFVHSU5fS0VZOmlyLmdldElkKEZuKX0sdGhpcy5nZXRJbnN0YW5jZT1mdW5jdGlvbigpe3JldHVybiBJfSx0aGlzLmFkZEhvb2s9ZnVuY3Rpb24oRm4sWm4pe3pvLmdldFNpbmdsZXRvbigpLmFkZChGbixabixJKX0sdGhpcy5oYXNIb29rPWZ1bmN0aW9u''@;'; put 'put ''KEZuKXtyZXR1cm4gem8uZ2V0U2luZ2xldG9uKCkuaGFzKEZuLEkpfHx6by5nZXRTaW5nbGV0b24oKS5oYXMoRm4pfSx0aGlzLmFkZEhvb2tPbmNlPWZ1bmN0aW9uKEZuLFpuKXt6by5nZXRTaW5nbGV0b24oKS5vbmNlKEZuLFpuLEkpfSx0aGlzLnJlbW92ZUhvb2s9ZnVuY3Rpb24oRm4sWm4p''@;'; put 'put ''e3pvLmdldFNpbmdsZXRvbigpLnJlbW92ZShGbixabixJKX0sdGhpcy5ydW5Ib29rcz1mdW5jdGlvbihGbixabixfcixYcixjaSxjMCxYaSl7cmV0dXJuIHpvLmdldFNpbmdsZXRvbigpLnJ1bihJLEZuLFpuLF9yLFhyLGNpLGMwLFhpKX0sdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlPWZ1bmN0''@;'; put 'put ''aW9uKEZuLFpuKXtyZXR1cm4gT2tlKGZuLmxhbmd1YWdlLEZuLFpuKX0sdGhpcy50b0hUTUw9ZnVuY3Rpb24oKXtyZXR1cm4gTDNlKHYpfSx0aGlzLnRvVGFibGVFbGVtZW50PWZ1bmN0aW9uKCl7dmFyIEZuPXYucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBGbi5p''@;'; put 'put ''bnNlcnRBZGphY2VudEhUTUwoImFmdGVyYmVnaW4iLEwzZSh2KSksRm4uZmlyc3RFbGVtZW50Q2hpbGR9LHRoaXMudGltZW91dHM9W10sdGhpcy5fcmVnaXN0ZXJUaW1lb3V0PWZ1bmN0aW9uKEZuKXt2YXIgWm49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJn''@;'; put 'put ''dW1lbnRzWzFdOjAsX3I9Rm47ImZ1bmN0aW9uIj09dHlwZW9mIF9yJiYoX3I9c2V0VGltZW91dChfcixabikpLHRoaXMudGltZW91dHMucHVzaChfcil9LHRoaXMuX2NsZWFyVGltZW91dHM9ZnVuY3Rpb24oKXtVcih0aGlzLnRpbWVvdXRzLGZ1bmN0aW9uKEZuKXtjbGVhclRpbWVvdXQoRm4p''@;'; put 'put ''fSl9LHRoaXMuaW1tZWRpYXRlcz1bXSx0aGlzLl9yZWdpc3RlckltbWVkaWF0ZT1mdW5jdGlvbihGbil7dGhpcy5pbW1lZGlhdGVzLnB1c2goc2V0SW1tZWRpYXRlKEZuKSl9LHRoaXMuX2NsZWFySW1tZWRpYXRlcz1mdW5jdGlvbigpe1VyKHRoaXMuaW1tZWRpYXRlcyxmdW5jdGlvbihGbil7''@;'; put 'put ''Y2xlYXJJbW1lZGlhdGUoRm4pfSl9LHRoaXMuX3JlZnJlc2hCb3JkZXJzPWZ1bmN0aW9uKCl7dmFyIEZuPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sWm49IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8''@;'; put 'put ''fGFyZ3VtZW50c1sxXTtOZS5kZXN0cm95RWRpdG9yKEZuKSxJLnZpZXcucmVuZGVyKCksWm4mJndyLmlzU2VsZWN0ZWQoKSYmTmUucHJlcGFyZUVkaXRvcigpfSx0aGlzLmlzUnRsPWZ1bmN0aW9uKCl7cmV0dXJuInJ0bCI9PT1JLnJvb3RXaW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShJLnJvb3RF''@;'; put 'put ''bGVtZW50KS5kaXJlY3Rpb259LHRoaXMuaXNMdHI9ZnVuY3Rpb24oKXtyZXR1cm4hSS5pc1J0bCgpfSx0aGlzLmdldERpcmVjdGlvbkZhY3Rvcj1mdW5jdGlvbigpe3JldHVybiBJLmlzTHRyKCk/MTotMX07dmFyIGZvPVNxZSh7aGFuZGxlRXZlbnQ6ZnVuY3Rpb24oWm4pe3JldHVybiBJLmlz''@;'; put 'put ''TGlzdGVuaW5nKCkmJnZvaWQgMCE9PShudWxsPT1abj92b2lkIDA6Wm4ua2V5KX0sYmVmb3JlS2V5RG93bjpmdW5jdGlvbihabil7cmV0dXJuIHYucnVuSG9va3MoImJlZm9yZUtleURvd24iLFpuKX0sYWZ0ZXJLZXlEb3duOmZ1bmN0aW9uKFpuKXt2LmlzRGVzdHJveWVkfHxJLnJ1bkhvb2tz''@;'; put 'put ''KCJhZnRlckRvY3VtZW50S2V5RG93biIsWm4pfSxvd25lcldpbmRvdzp0aGlzLnJvb3RXaW5kb3d9KTt0aGlzLmdldFNob3J0Y3V0TWFuYWdlcj1mdW5jdGlvbigpe3JldHVybiBmb307dmFyIElhPWZvLmFkZENvbnRleHQoImdyaWQiKSxYbD17cnVuT25seUlmOmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IFRvKEkuZ2V0U2VsZWN0ZWQoKSkmJkkuY291bnRSZW5kZXJlZFJvd3MoKT4wJiZJLmNvdW50UmVuZGVyZWRDb2xzKCk+MH0sZ3JvdXA6THFlfTtmby5zZXRBY3RpdmVDb250ZXh0TmFtZSgiZ3JpZCIpLElhLmFkZFNob3J0Y3V0cyhbe2tleXM6W1siQ29udHJvbC9NZXRhIiwiQSJdXSxjYWxs''@;'; put 'put ''YmFjazpmdW5jdGlvbigpe0kuc2VsZWN0QWxsKCl9fSx7a2V5czpbWyJDb250cm9sL01ldGEiLCJFbnRlciJdXSxjYWxsYmFjazpmdW5jdGlvbigpe2Zvcih2YXIgWm49SS5nZXRTZWxlY3RlZFJhbmdlKCksX3I9Wm5bWm4ubGVuZ3RoLTFdLmhpZ2hsaWdodCxYcj1fci5yb3csY2k9X3IuY29s''@;'; put 'put ''LGMwPUkuZ2V0RGF0YUF0Q2VsbChYcixjaSksWGk9bmV3IE1hcCxFMD0wO0UwPFpuLmxlbmd0aDtFMCsrKVpuW0UwXS5mb3JBbGwoZnVuY3Rpb24oejAsa28pe3owPj0wJiZrbz49MCYmKHowIT09WHJ8fGtvIT09Y2kpJiYoSS5nZXRDZWxsTWV0YSh6MCxrbykucmVhZE9ubHl8fFhpLnNldCgi''@;'; put 'put ''Ii5jb25jYXQoejAsIngiKS5jb25jYXQoa28pLFt6MCxrbyxjMF0pKX0pO0kuc2V0RGF0YUF0Q2VsbChBcnJheS5mcm9tKFhpLnZhbHVlcygpKSl9LHJ1bk9ubHlJZjpmdW5jdGlvbigpe3JldHVybiBJLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkuZ2V0Q2VsbHNDb3VudCgpPjF9fSx7a2V5czpb''@;'; put 'put ''WyJBcnJvd1VwIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7d3IudHJhbnNmb3JtU3RhcnQoLTEsMCl9fSx7a2V5czpbWyJBcnJvd1VwIiwiQ29udHJvbC9NZXRhIl1dLGNhcHR1cmVDdHJsOiEwLGNhbGxiYWNrOmZ1bmN0aW9uKCl7d3Iuc2V0UmFuZ2VTdGFydChJLl9jcmVhdGVDZWxsQ29vcmRz''@;'; put 'put ''KEkucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KDAsMSksSS5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLmhpZ2hsaWdodC5jb2wpKX19LHtrZXlzOltbIkFycm93VXAiLCJTaGlmdCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3dyLnRyYW5zZm9ybUVuZCgtMSwwKX19LHtr''@;'; put 'put ''ZXlzOltbIkFycm93VXAiLCJTaGlmdCIsIkNvbnRyb2wvTWV0YSJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBabj1JLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksX3I9Wm4uZnJvbSxYcj1abi50byxjaT1JLnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRk''@;'; put 'put ''ZW5JbmRleCgwLDEpO3dyLnNldFJhbmdlU3RhcnQoX3IuY2xvbmUoKSksd3Iuc2V0UmFuZ2VFbmQoSS5fY3JlYXRlQ2VsbENvb3JkcyhjaSxYci5jb2wpKX0scnVuT25seUlmOmZ1bmN0aW9uKCl7cmV0dXJuIShJLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKXx8SS5zZWxlY3Rpb24u''@;'; put 'put ''aXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkpfX0se2tleXM6W1siQXJyb3dEb3duIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7d3IudHJhbnNmb3JtU3RhcnQoMSwwKX19LHtrZXlzOltbIkFycm93RG93biIsIkNvbnRyb2wvTWV0YSJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazpmdW5jdGlv''@;'; put 'put ''bigpe3dyLnNldFJhbmdlU3RhcnQoSS5fY3JlYXRlQ2VsbENvb3JkcyhJLnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChJLmNvdW50Um93cygpLTEsLTEpLEkuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5oaWdobGlnaHQuY29sKSl9fSx7a2V5czpbWyJBcnJvd0Rvd24i''@;'; put 'put ''LCJTaGlmdCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3dyLnRyYW5zZm9ybUVuZCgxLDApfX0se2tleXM6W1siQXJyb3dEb3duIiwiU2hpZnQiLCJDb250cm9sL01ldGEiXV0sY2FwdHVyZUN0cmw6ITAsY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgWm49SS5nZXRTZWxlY3RlZFJhbmdlTGFzdCgp''@;'; put 'put ''LF9yPVpuLmZyb20sWHI9Wm4udG8sY2k9SS5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoSS5jb3VudFJvd3MoKS0xLC0xKTt3ci5zZXRSYW5nZVN0YXJ0KF9yLmNsb25lKCkpLHdyLnNldFJhbmdlRW5kKEkuX2NyZWF0ZUNlbGxDb29yZHMoY2ksWHIuY29sKSl9LHJ1''@;'; put 'put ''bk9ubHlJZjpmdW5jdGlvbigpe3JldHVybiEoSS5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCl8fEkuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpKX19LHtrZXlzOltbIkFycm93TGVmdCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3dyLnRyYW5zZm9ybVN0YXJ0KDAs''@;'; put 'put ''LTEqSS5nZXREaXJlY3Rpb25GYWN0b3IoKSl9fSx7a2V5czpbWyJBcnJvd0xlZnQiLCJDb250cm9sL01ldGEiXV0sY2FwdHVyZUN0cmw6ITAsY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgWm4sX3I9SS5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLmhpZ2hsaWdodC5yb3csWHI9KFpuPUkuY29sdW1u''@;'; put 'put ''SW5kZXhNYXBwZXIpLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleC5hcHBseShabixSdyhJLmlzUnRsKCk/W0kuY291bnRDb2xzKCktMSwtMV06WzAsMV0pKTt3ci5zZXRSYW5nZVN0YXJ0KEkuX2NyZWF0ZUNlbGxDb29yZHMoX3IsWHIpKX19LHtrZXlzOltbIkFycm93TGVmdCIsIlNoaWZ0Il1d''@;'; put 'put ''LGNhbGxiYWNrOmZ1bmN0aW9uKCl7d3IudHJhbnNmb3JtRW5kKDAsLTEqSS5nZXREaXJlY3Rpb25GYWN0b3IoKSl9fSx7a2V5czpbWyJBcnJvd0xlZnQiLCJTaGlmdCIsIkNvbnRyb2wvTWV0YSJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBabixfcj1JLmdldFNl''@;'; put 'put ''bGVjdGVkUmFuZ2VMYXN0KCksWHI9X3IuZnJvbSxjaT1fci50byxjMD0oWm49SS5jb2x1bW5JbmRleE1hcHBlcikuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4LmFwcGx5KFpuLFJ3KEkuaXNSdGwoKT9bSS5jb3VudENvbHMoKS0xLC0xXTpbMCwxXSkpO3dyLnNldFJhbmdlU3RhcnQoWHIuY2xv''@;'; put 'put ''bmUoKSksd3Iuc2V0UmFuZ2VFbmQoSS5fY3JlYXRlQ2VsbENvb3JkcyhjaS5yb3csYzApKX0scnVuT25seUlmOmZ1bmN0aW9uKCl7cmV0dXJuIShJLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKXx8SS5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCkpfX0se2tleXM6W1si''@;'; put 'put ''QXJyb3dSaWdodCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3dyLnRyYW5zZm9ybVN0YXJ0KDAsSS5nZXREaXJlY3Rpb25GYWN0b3IoKSl9fSx7a2V5czpbWyJBcnJvd1JpZ2h0IiwiQ29udHJvbC9NZXRhIl1dLGNhcHR1cmVDdHJsOiEwLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIFpuLF9yPUku''@;'; put 'put ''Z2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5oaWdobGlnaHQucm93LFhyPShabj1JLmNvbHVtbkluZGV4TWFwcGVyKS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXguYXBwbHkoWm4sUncoSS5pc1J0bCgpP1swLDFdOltJLmNvdW50Q29scygpLTEsLTFdKSk7d3Iuc2V0UmFuZ2VTdGFydChJLl9jcmVh''@;'; put 'put ''dGVDZWxsQ29vcmRzKF9yLFhyKSl9fSx7a2V5czpbWyJBcnJvd1JpZ2h0IiwiU2hpZnQiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt3ci50cmFuc2Zvcm1FbmQoMCxJLmdldERpcmVjdGlvbkZhY3RvcigpKX19LHtrZXlzOltbIkFycm93UmlnaHQiLCJTaGlmdCIsIkNvbnRyb2wvTWV0YSJdXSxj''@;'; put 'put ''YXB0dXJlQ3RybDohMCxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBabixfcj1JLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksWHI9X3IuZnJvbSxjaT1fci50byxjMD0oWm49SS5jb2x1bW5JbmRleE1hcHBlcikuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4LmFwcGx5KFpuLFJ3KEkuaXNSdGwoKT9b''@;'; put 'put ''MCwxXTpbSS5jb3VudENvbHMoKS0xLC0xXSkpO3dyLnNldFJhbmdlU3RhcnQoWHIuY2xvbmUoKSksd3Iuc2V0UmFuZ2VFbmQoSS5fY3JlYXRlQ2VsbENvb3JkcyhjaS5yb3csYzApKX0scnVuT25seUlmOmZ1bmN0aW9uKCl7cmV0dXJuIShJLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIo''@;'; put 'put ''KXx8SS5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCkpfX0se2tleXM6W1siSG9tZSJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBabj1wYXJzZUludChJLmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnQsMTApLF9yPUkuZ2V0U2VsZWN0ZWRS''@;'; put 'put ''YW5nZUxhc3QoKS5oaWdobGlnaHQucm93LFhyPUkuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KFpuLDEpO3dyLnNldFJhbmdlU3RhcnQoSS5fY3JlYXRlQ2VsbENvb3JkcyhfcixYcikpfSxydW5Pbmx5SWY6ZnVuY3Rpb24oKXtyZXR1cm4gSS52aWV3LmlzTWFp''@;'; put 'put ''blRhYmxlTm90RnVsbHlDb3ZlcmVkQnlPdmVybGF5cygpfX0se2tleXM6W1siSG9tZSIsIlNoaWZ0Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7d3Iuc2V0UmFuZ2VFbmQoSS5fY3JlYXRlQ2VsbENvb3Jkcyh3ci5zZWxlY3RlZFJhbmdlLmN1cnJlbnQoKS5mcm9tLnJvdyxJLmNvbHVtbkluZGV4''@;'; put 'put ''TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCgwLDEpKSl9fSx7a2V5czpbWyJIb21lIiwiQ29udHJvbC9NZXRhIl1dLGNhcHR1cmVDdHJsOiEwLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIFpuPXBhcnNlSW50KEkuZ2V0U2V0dGluZ3MoKS5maXhlZFJvd3NUb3AsMTApLF9yPXBhcnNl''@;'; put 'put ''SW50KEkuZ2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydCwxMCksWHI9SS5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoWm4sMSksY2k9SS5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoX3IsMSk7d3Iuc2V0UmFuZ2VTdGFydChJ''@;'; put 'put ''Ll9jcmVhdGVDZWxsQ29vcmRzKFhyLGNpKSl9LHJ1bk9ubHlJZjpmdW5jdGlvbigpe3JldHVybiBJLnZpZXcuaXNNYWluVGFibGVOb3RGdWxseUNvdmVyZWRCeU92ZXJsYXlzKCl9fSx7a2V5czpbWyJFbmQiXV0sY2FwdHVyZUN0cmw6ITAsY2FsbGJhY2s6ZnVuY3Rpb24oKXt3ci5zZXRSYW5n''@;'; put 'put ''ZVN0YXJ0KEkuX2NyZWF0ZUNlbGxDb29yZHMoSS5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLmhpZ2hsaWdodC5yb3csSS5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoSS5jb3VudENvbHMoKS0xLC0xKSkpfSxydW5Pbmx5SWY6ZnVuY3Rpb24oKXtyZXR1cm4gSS52''@;'; put 'put ''aWV3LmlzTWFpblRhYmxlTm90RnVsbHlDb3ZlcmVkQnlPdmVybGF5cygpfX0se2tleXM6W1siRW5kIiwiU2hpZnQiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt3ci5zZXRSYW5nZUVuZChJLl9jcmVhdGVDZWxsQ29vcmRzKHdyLnNlbGVjdGVkUmFuZ2UuY3VycmVudCgpLmZyb20ucm93LEkuY29s''@;'; put 'put ''dW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KEkuY291bnRDb2xzKCktMSwtMSkpKX19LHtrZXlzOltbIkVuZCIsIkNvbnRyb2wvTWV0YSJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBabj1wYXJzZUludChJLmdldFNldHRpbmdzKCkuZml4''@;'; put 'put ''ZWRSb3dzQm90dG9tLDEwKSxfcj1JLnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChJLmNvdW50Um93cygpLVpuLTEsLTEpLFhyPUkuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KEkuY291bnRDb2xzKCktMSwtMSk7d3Iuc2V0UmFuZ2VT''@;'; put 'put ''dGFydChJLl9jcmVhdGVDZWxsQ29vcmRzKF9yLFhyKSl9LHJ1bk9ubHlJZjpmdW5jdGlvbigpe3JldHVybiBJLnZpZXcuaXNNYWluVGFibGVOb3RGdWxseUNvdmVyZWRCeU92ZXJsYXlzKCl9fSx7a2V5czpbWyJQYWdlVXAiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt3ci50cmFuc2Zvcm1TdGFy''@;'; put 'put ''dCgtSS5jb3VudFZpc2libGVSb3dzKCksMCl9fSx7a2V5czpbWyJQYWdlVXAiLCJTaGlmdCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBfcj1JLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkudG8sWHI9TWF0aC5tYXgoX3Iucm93LUkuY291bnRWaXNpYmxlUm93cygpLDApLGNpPUkucm93SW5k''@;'; put 'put ''ZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KFhyLDEpO2lmKG51bGwhPT1jaSl7dmFyIGMwPUkuX2NyZWF0ZUNlbGxDb29yZHMoY2ksX3IuY29sKSxYaT1fci5yb3ctSS52aWV3LmdldEZpcnN0RnVsbHlWaXNpYmxlUm93KCksRTA9TWF0aC5tYXgoYzAucm93LVhpLDApO3dyLnNl''@;'; put 'put ''dFJhbmdlRW5kKGMwKSxJLnNjcm9sbFZpZXdwb3J0VG8oRTApfX19LHtrZXlzOltbIlBhZ2VEb3duIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7d3IudHJhbnNmb3JtU3RhcnQoSS5jb3VudFZpc2libGVSb3dzKCksMCl9fSx7a2V5czpbWyJQYWdlRG93biIsIlNoaWZ0Il1dLGNhbGxiYWNrOmZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIF9yPUkuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS50byxYcj1NYXRoLm1pbihfci5yb3crSS5jb3VudFZpc2libGVSb3dzKCksSS5jb3VudFJvd3MoKS0xKSxjaT1JLnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChYciwtMSk7aWYobnVsbCE9PWNp''@;'; put 'put ''KXt2YXIgYzA9SS5fY3JlYXRlQ2VsbENvb3JkcyhjaSxfci5jb2wpLFhpPV9yLnJvdy1JLnZpZXcuZ2V0Rmlyc3RGdWxseVZpc2libGVSb3coKSxFMD1NYXRoLm1pbihjMC5yb3ctWGksSS5jb3VudFJvd3MoKS0xKTt3ci5zZXRSYW5nZUVuZChjMCksSS5zY3JvbGxWaWV3cG9ydFRvKEUwKX19''@;'; put 'put ''fSx7a2V5czpbWyJUYWIiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oWm4pe3ZhciBfcj0iZnVuY3Rpb24iPT10eXBlb2YgZm4udGFiTW92ZXM/Zm4udGFiTW92ZXMoWm4pOmZuLnRhYk1vdmVzO3dyLnRyYW5zZm9ybVN0YXJ0KF9yLnJvdyxfci5jb2wsITApfX0se2tleXM6W1siU2hpZnQiLCJUYWIi''@;'; put 'put ''XV0sY2FsbGJhY2s6ZnVuY3Rpb24oWm4pe3ZhciBfcj0iZnVuY3Rpb24iPT10eXBlb2YgZm4udGFiTW92ZXM/Zm4udGFiTW92ZXMoWm4pOmZuLnRhYk1vdmVzO3dyLnRyYW5zZm9ybVN0YXJ0KC1fci5yb3csLV9yLmNvbCl9fV0sWGwpLEczZSgpLmZvckVhY2goZnVuY3Rpb24oRm4pe3ZhciBa''@;'; put 'put ''bj1XWihGbik7aXIuYWRkSXRlbShGbixuZXcgWm4odikpfSksem8uZ2V0U2luZ2xldG9uKCkucnVuKEksImNvbnN0cnVjdCIpfXZhciBSU2U9e19ob29rc1N0b3JhZ2U6T2JqZWN0LmNyZWF0ZShudWxsKSxhZGRIb29rOmZ1bmN0aW9uKGcsaCl7cmV0dXJuIHRoaXMuX2hvb2tzU3RvcmFnZVtn''@;'; put 'put ''XXx8KHRoaXMuX2hvb2tzU3RvcmFnZVtnXT1bXSksdGhpcy5ob3QuYWRkSG9vayhnLGgpLHRoaXMuX2hvb2tzU3RvcmFnZVtnXS5wdXNoKGgpLHRoaXN9LHJlbW92ZUhvb2tzQnlLZXk6ZnVuY3Rpb24oZyl7dmFyIGg9dGhpcztVcih0aGlzLl9ob29rc1N0b3JhZ2VbZ118fFtdLGZ1bmN0aW9u''@;'; put 'put ''KHYpe2guaG90LnJlbW92ZUhvb2soZyx2KX0pfSxjbGVhckhvb2tzOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcztHbCh0aGlzLl9ob29rc1N0b3JhZ2UsZnVuY3Rpb24oaCx2KXtyZXR1cm4gZy5yZW1vdmVIb29rc0J5S2V5KHYpfSksdGhpcy5faG9va3NTdG9yYWdlPXt9fX07U2coUlNlLCJNSVhJ''@;'; put 'put ''Tl9OQU1FIiwiaG9va3NSZWZSZWdpc3RlcmVyIix7d3JpdGFibGU6ITEsZW51bWVyYWJsZTohMX0pO2NvbnN0IFJxZT1SU2U7ZnVuY3Rpb24gbDZlKGQpe3JldHVybihsNmU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rp''@;'; put 'put ''b24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBCU2UoZCxnKXsobnVsbD09''@;'; put 'put ''Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBzNmUoZCxnKXtyZXR1cm4oczZlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1''@;'; put 'put ''bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gWnFlKGQsZyl7aWYoZyYmKCJvYmplY3QiPT09bDZlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0''@;'; put 'put ''cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiB6cWUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxl''@;'; put 'put ''ZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBtdGUoZCl7cmV0dXJuKG10ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfWZ1bmN0aW9u''@;'; put 'put ''IFBTZShkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIEZTZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1l''@;'; put 'put ''cmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIEhTZShkLGcsaCl7cmV0dXJuIGcmJkZTZShkLnByb3RvdHlwZSxnKSxoJiZGU2UoZCxoKSxPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxkfXZhciByZj1PYmplY3QuZnJlZXplKHtWSVJHSU46IlNUQVRFX1ZJUkdJTiIsRURJVElORzoiU1RBVEVfRURJVElORyIsV0FJVElORzoiU1RBVEVfV0FJVElORyIsRklOSVNIRUQ6IlNUQVRFX0ZJTklTSEVEIn0pLHU2ZT0i''@;'; put 'put ''YmFzZUVkaXRvciIsa089ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpe1BTZSh0aGlzLGQpLHRoaXMuaG90PWcsdGhpcy5pbnN0YW5jZT1nLHRoaXMuc3RhdGU9cmYuVklSR0lOLHRoaXMuX29wZW5lZD0hMSx0aGlzLl9mdWxsRWRpdE1vZGU9ITEsdGhpcy5fY2xvc2VDYWxsYmFjaz1udWxsLHRo''@;'; put 'put ''aXMuVEQ9bnVsbCx0aGlzLnJvdz1udWxsLHRoaXMuY29sPW51bGwsdGhpcy5wcm9wPW51bGwsdGhpcy5vcmlnaW5hbFZhbHVlPW51bGwsdGhpcy5jZWxsUHJvcGVydGllcz1udWxsLHRoaXMuaW5pdCgpfXJldHVybiBIU2UoZCxbe2tleToiX2ZpcmVDYWxsYmFja3MiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KGgpe3RoaXMuX2Nsb3NlQ2FsbGJhY2smJih0aGlzLl9jbG9zZUNhbGxiYWNrKGgpLHRoaXMuX2Nsb3NlQ2FsbGJhY2s9bnVsbCl9fSx7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6ImdldFZhbHVlIix2YWx1ZTpmdW5jdGlvbigpe3Rocm93IEVycm9yKCJFZGl0b3IgZ2V0''@;'; put 'put ''VmFsdWUoKSBtZXRob2QgdW5pbXBsZW1lbnRlZCIpfX0se2tleToic2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoIkVkaXRvciBzZXRWYWx1ZSgpIG1ldGhvZCB1bmltcGxlbWVudGVkIil9fSx7a2V5OiJvcGVuIix2YWx1ZTpmdW5jdGlvbigpe3Rocm93IEVycm9yKCJF''@;'; put 'put ''ZGl0b3Igb3BlbigpIG1ldGhvZCB1bmltcGxlbWVudGVkIil9fSx7a2V5OiJjbG9zZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiRWRpdG9yIGNsb3NlKCkgbWV0aG9kIHVuaW1wbGVtZW50ZWQiKX19LHtrZXk6InByZXBhcmUiLHZhbHVlOmZ1bmN0aW9uKGgsdix5LEMsSSxaKXt0''@;'; put 'put ''aGlzLlREPUMsdGhpcy5yb3c9aCx0aGlzLmNvbD12LHRoaXMucHJvcD15LHRoaXMub3JpZ2luYWxWYWx1ZT1JLHRoaXMuY2VsbFByb3BlcnRpZXM9Wix0aGlzLnN0YXRlPXJmLlZJUkdJTn19LHtrZXk6ImV4dGVuZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oaCl7IWZ1bmN0''@;'; put 'put ''aW9uIFZxZShkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2Nv''@;'; put 'put ''bnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZzNmUoZCxnKX0oeSxoKTt2YXIgdj1mdW5jdGlvbiBqcWUoZCl7dmFyIGc9ZnVuY3Rpb24gR3FlKCl7aWYo''@;'; put 'put ''InVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxl''@;'; put 'put ''Y3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9bXRlKGQpO2lmKGcpe3ZhciBDPW10ZSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMp''@;'; put 'put ''fWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gWnFlKHRoaXMseSl9fSh5KTtmdW5jdGlvbiB5KCl7cmV0dXJuIFBTZSh0aGlzLHkpLHYuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBIU2UoeSl9KHRoaXMuY29uc3RydWN0b3IpfX0se2tleToic2F2ZVZhbHVlIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciBDLEksWix1ZSx5PXRoaXM7aWYodil7dmFyIF9lPXRoaXMuaG90LmdldFNlbGVjdGVkTGFzdCgpO0M9TWF0aC5tYXgoTWF0aC5taW4oX2VbMF0sX2VbMl0pLDApLEk9TWF0aC5tYXgoTWF0aC5taW4oX2VbMV0sX2VbM10pLDApLFo9TWF0aC5tYXgoX2Vb''@;'; put 'put ''MF0sX2VbMl0pLHVlPU1hdGgubWF4KF9lWzFdLF9lWzNdKX1lbHNle3ZhciBCZT1bdGhpcy5yb3csdGhpcy5jb2wsbnVsbCxudWxsXTtDPUJlWzBdLEk9QmVbMV0sWj1CZVsyXSx1ZT1CZVszXX12YXIgTmU9dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeUdldENlbGxDb29yZHMiLEMsSSk7aWYo''@;'; put 'put ''QXJyYXkuaXNBcnJheShOZSkpe3ZhciBLZT1mdW5jdGlvbiBCcWUoZCxnKXtyZXR1cm4gZnVuY3Rpb24gTnFlKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBIcWUoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wm''@;'; put 'put ''JmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaCh1''@;'; put 'put ''ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgWn19cmV0dXJuIHZ9fShkLGcpfHxmdW5jdGlvbiBGcWUoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIEJTZShkLGcpO3ZhciBoPU9i''@;'; put 'put ''amVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/''@;'; put 'put ''OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gQlNlKGQsZyl9fShkLGcpfHxmdW5jdGlvbiBQcWUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4g''@;'; put 'put ''b3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShOZSwyKTtDPUtlWzBdLEk9S2VbMV19dmFyIE90PXRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImVkaXRvciIp''@;'; put 'put ''LCR0PXtydW5Pbmx5SWY6ZnVuY3Rpb24oKXtyZXR1cm4gVG8oeS5ob3QuZ2V0U2VsZWN0ZWQoKSl9LGdyb3VwOnU2ZX07dGhpcy5pc0luRnVsbEVkaXRNb2RlKCkmJk90LmFkZFNob3J0Y3V0cyhbe2tleXM6W1siQXJyb3dVcCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3kuaG90LnNlbGVjdGlv''@;'; put 'put ''bi50cmFuc2Zvcm1TdGFydCgtMSwwKX19LHtrZXlzOltbIkFycm93RG93biJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3kuaG90LnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCgxLDApfX0se2tleXM6W1siQXJyb3dMZWZ0Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7eS5ob3Quc2VsZWN0aW9uLnRy''@;'; put 'put ''YW5zZm9ybVN0YXJ0KDAsLTEqeS5ob3QuZ2V0RGlyZWN0aW9uRmFjdG9yKCkpfX0se2tleXM6W1siQXJyb3dSaWdodCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3kuaG90LnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCgwLHkuaG90LmdldERpcmVjdGlvbkZhY3RvcigpKX19XSwkdCksdGhpcy5o''@;'; put 'put ''b3QucG9wdWxhdGVGcm9tQXJyYXkoQyxJLGgsWix1ZSwiZWRpdCIpfX0se2tleToiYmVnaW5FZGl0aW5nIix2YWx1ZTpmdW5jdGlvbihoLHYpe2lmKHRoaXMuc3RhdGU9PT1yZi5WSVJHSU4pe3ZhciB5PXRoaXMuaG90LEM9eS5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3Vh''@;'; put 'put ''bEluZGV4KHRoaXMucm93KSxJPXkuY29sdW1uSW5kZXhNYXBwZXIuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleCh0aGlzLmNvbCk7aWYoeS52aWV3LnNjcm9sbFZpZXdwb3J0KHkuX2NyZWF0ZUNlbGxDb29yZHMoQyxJKSksdGhpcy5zdGF0ZT1yZi5FRElUSU5HLHRoaXMuaXNJbkZ1bGxF''@;'; put 'put ''ZGl0TW9kZSgpKXt2YXIgWj0ic3RyaW5nIj09dHlwZW9mIGg/aDpldSh0aGlzLm9yaWdpbmFsVmFsdWUpO3RoaXMuc2V0VmFsdWUoWil9dGhpcy5vcGVuKHYpLHRoaXMuX29wZW5lZD0hMCx0aGlzLmZvY3VzKCkseS52aWV3LnJlbmRlcigpLHkucnVuSG9va3MoImFmdGVyQmVnaW5FZGl0aW5n''@;'; put 'put ''Iix0aGlzLnJvdyx0aGlzLmNvbCl9fX0se2tleToiZmluaXNoRWRpdGluZyIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3ZhciBJLEM9dGhpcztpZih5KXt2YXIgWj10aGlzLl9jbG9zZUNhbGxiYWNrO3RoaXMuX2Nsb3NlQ2FsbGJhY2s9ZnVuY3Rpb24oTmUpe1omJlooTmUpLHkoTmUpLEMuaG90''@;'; put 'put ''LnZpZXcucmVuZGVyKCl9fWlmKCF0aGlzLmlzV2FpdGluZygpKXt2YXIgX2U9dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZWRpdG9yIik7aWYoX2UucmVtb3ZlU2hvcnRjdXRzQnlHcm91cCh1NmUpLF9lLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAobGVlKSx0aGlz''@;'; put 'put ''LnN0YXRlPT09cmYuVklSR0lOKXJldHVybiB2b2lkIHRoaXMuaG90Ll9yZWdpc3RlclRpbWVvdXQoZnVuY3Rpb24oKXtDLl9maXJlQ2FsbGJhY2tzKCEwKX0pO2lmKHRoaXMuc3RhdGU9PT1yZi5FRElUSU5HKXtpZihoKXJldHVybiB0aGlzLmNhbmNlbENoYW5nZXMoKSx2b2lkIHRoaXMuaG90''@;'; put 'put ''LnZpZXcucmVuZGVyKCk7dmFyIEJlPXRoaXMuZ2V0VmFsdWUoKTtJPXRoaXMuaG90LmdldFNldHRpbmdzKCkudHJpbVdoaXRlc3BhY2U/W1sic3RyaW5nIj09dHlwZW9mIEJlP1N0cmluZy5wcm90b3R5cGUudHJpbS5jYWxsKEJlfHwiIik6QmVdXTpbW0JlXV0sdGhpcy5zdGF0ZT1yZi5XQUlU''@;'; put 'put ''SU5HLHRoaXMuc2F2ZVZhbHVlKEksdiksdGhpcy5ob3QuZ2V0Q2VsbFZhbGlkYXRvcih0aGlzLmNlbGxQcm9wZXJ0aWVzKT90aGlzLmhvdC5hZGRIb29rT25jZSgicG9zdEFmdGVyVmFsaWRhdGUiLGZ1bmN0aW9uKE5lKXtDLnN0YXRlPXJmLkZJTklTSEVELEMuZGlzY2FyZEVkaXRvcihOZSl9''@;'; put 'put ''KToodGhpcy5zdGF0ZT1yZi5GSU5JU0hFRCx0aGlzLmRpc2NhcmRFZGl0b3IoITApKX19fX0se2tleToiY2FuY2VsQ2hhbmdlcyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnN0YXRlPXJmLkZJTklTSEVELHRoaXMuZGlzY2FyZEVkaXRvcigpfX0se2tleToiZGlzY2FyZEVkaXRvciIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oaCl7dGhpcy5zdGF0ZT09PXJmLkZJTklTSEVEJiYoITE9PT1oJiYhMCE9PXRoaXMuY2VsbFByb3BlcnRpZXMuYWxsb3dJbnZhbGlkPyh0aGlzLmhvdC5zZWxlY3RDZWxsKHRoaXMucm93LHRoaXMuY29sKSx0aGlzLmZvY3VzKCksdGhpcy5zdGF0ZT1yZi5FRElUSU5HLHRoaXMu''@;'; put 'put ''X2ZpcmVDYWxsYmFja3MoITEpKToodGhpcy5jbG9zZSgpLHRoaXMuX29wZW5lZD0hMSx0aGlzLl9mdWxsRWRpdE1vZGU9ITEsdGhpcy5zdGF0ZT1yZi5WSVJHSU4sdGhpcy5fZmlyZUNhbGxiYWNrcyghMCksdGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuc2V0QWN0aXZlQ29udGV4dE5h''@;'; put 'put ''bWUoImdyaWQiKSkpfX0se2tleToiZW5hYmxlRnVsbEVkaXRNb2RlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2Z1bGxFZGl0TW9kZT0hMH19LHtrZXk6ImlzSW5GdWxsRWRpdE1vZGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Z1bGxFZGl0TW9kZX19LHtrZXk6ImlzT3BlbmVk''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vcGVuZWR9fSx7a2V5OiJpc1dhaXRpbmciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGU9PT1yZi5XQUlUSU5HfX0se2tleToiZ2V0RWRpdGVkQ2VsbFJlY3QiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGgsdj10aGlzLmdl''@;'; put 'put ''dEVkaXRlZENlbGwoKTtpZih2KXt2YXIgeT10aGlzLmhvdC52aWV3Ll93dCxDPXkud3RPdmVybGF5cyxJPXkud3RWaWV3cG9ydCxaPXRoaXMuaG90LnJvb3RXaW5kb3csdWU9anUodiksX2U9RTIodiksQmU9anUodGhpcy5ob3Qucm9vdEVsZW1lbnQpLE5lPUUyKHRoaXMuaG90LnJvb3RFbGVt''@;'; put 'put ''ZW50KSxLZT1DLnRvcE92ZXJsYXkuaG9sZGVyLHB0PUMuaW5saW5lU3RhcnRPdmVybGF5LmhvbGRlcixPdD1LZSE9PVo/S2Uuc2Nyb2xsVG9wOjAsJHQ9cHQhPT1aP3B0LnNjcm9sbExlZnQ6MCxmbj1aLmlubmVyV2lkdGgtQmUubGVmdC1OZSxpcj0obnVsbCE9PShoPUMuZ2V0UGFyZW50T3Zl''@;'; put 'put ''cmxheSh2KSkmJnZvaWQgMCE9PWg/aDp0aGlzLmhvdC52aWV3Ll93dCkud3RUYWJsZSxtcj1pci5uYW1lLFNyPVsibWFzdGVyIiwiaW5saW5lX3N0YXJ0Il0uaW5jbHVkZXMobXIpP090OjAsd3I9WyJtYXN0ZXIiLCJ0b3AiLCJib3R0b20iXS5pbmNsdWRlcyhtcik/JHQ6MCx5aT11ZS50b3At''@;'; put 'put ''QmUudG9wLSh1ZS50b3A9PT1CZS50b3A/MDoxKS1TcixLaT0wO0tpPXRoaXMuaG90LmlzUnRsKCk/Wi5pbm5lcldpZHRoLXVlLmxlZnQtX2UtZm4tMSt3cjp1ZS5sZWZ0LUJlLmxlZnQtMS13cixbInRvcCIsInRvcF9pbmxpbmVfc3RhcnRfY29ybmVyIl0uaW5jbHVkZXMobXIpJiYoeWkrPUMu''@;'; put 'put ''dG9wT3ZlcmxheS5nZXRPdmVybGF5T2Zmc2V0KCkpLFsiaW5saW5lX3N0YXJ0IiwidG9wX2lubGluZV9zdGFydF9jb3JuZXIiXS5pbmNsdWRlcyhtcikmJihLaSs9TWF0aC5hYnMoQy5pbmxpbmVTdGFydE92ZXJsYXkuZ2V0T3ZlcmxheU9mZnNldCgpKSk7dmFyIFNvPXRoaXMuaG90Lmhhc0Nv''@;'; put 'put ''bEhlYWRlcnMoKSxQbz10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KHRoaXMucm93KSxTYT10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KHRoaXMuY29sKSxsYT10aGlzLmhvdC5yb3dJbmRl''@;'; put 'put ''eE1hcHBlci5nZXRSZW5kZXJhYmxlSW5kZXhlc0xlbmd0aCgpLXRoaXMuaG90LnZpZXcuX3d0LmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpOyhTbyYmUG88PTB8fFBvPT09bGEpJiYoeWkrPTEpLFNhPD0wJiYoS2krPTEpO3ZhciBhbD1JLnJvd3NSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0''@;'; put 'put ''UG9zaXRpb24sUnM9SS5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvci5zdGFydFBvc2l0aW9uLEgwPU1hdGguYWJzKEMuaW5saW5lU3RhcnRPdmVybGF5LmdldFNjcm9sbFBvc2l0aW9uKCkpLHJvPUMudG9wT3ZlcmxheS5nZXRTY3JvbGxQb3NpdGlvbigpLGZvPUJjKHRoaXMuaG90LnJvb3REb2N1''@;'; put 'put ''bWVudCksSWE9di5vZmZzZXRUb3ArYWwtcm8sWGw9MDtpZih0aGlzLmhvdC5pc1J0bCgpKXt2YXIgRm49di5vZmZzZXRMZWZ0O1hsPUZuPj0wP2lyLmdldFdpZHRoKCktdi5vZmZzZXRMZWZ0Ok1hdGguYWJzKEZuKSxYbCs9UnMtSDAtX2V9ZWxzZSBYbD12Lm9mZnNldExlZnQrUnMtSDA7dmFy''@;'; put 'put ''IFpuPU13KHRoaXMuVEQsdGhpcy5ob3Qucm9vdFdpbmRvdyksX3I9dGhpcy5ob3QuaXNSdGwoKT8iYm9yZGVyUmlnaHRXaWR0aCI6ImJvcmRlckxlZnRXaWR0aCIsWHI9cGFyc2VJbnQoWm5bX3JdLDEwKT4wPzA6MSxjaT1wYXJzZUludChabi5ib3JkZXJUb3BXaWR0aCwxMCk+MD8wOjEsYzA9''@;'; put 'put ''RTIodikrWHIsWGk9RDEodikrY2ksRTA9VWJlKEtlKT9mbzowLHowPVFiZShwdCk/Zm86MCxrbz10aGlzLmhvdC52aWV3Lm1heGltdW1WaXNpYmxlRWxlbWVudFdpZHRoKFhsKS1FMCtYcjtyZXR1cm57dG9wOnlpLHN0YXJ0OktpLGhlaWdodDpYaSxtYXhIZWlnaHQ6TWF0aC5tYXgodGhpcy5o''@;'; put 'put ''b3Qudmlldy5tYXhpbXVtVmlzaWJsZUVsZW1lbnRIZWlnaHQoSWEpLXowK2NpLDIzKSx3aWR0aDpjMCxtYXhXaWR0aDprb319fX0se2tleToiZ2V0RWRpdGVkQ2VsbHNMYXllckNsYXNzIix2YWx1ZTpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmNoZWNrRWRpdG9yU2VjdGlvbigpKXtjYXNlImlu''@;'; put 'put ''bGluZS1zdGFydCI6cmV0dXJuImh0X2Nsb25lX2xlZnQgaHRfY2xvbmVfaW5saW5lX3N0YXJ0IjtjYXNlImJvdHRvbSI6cmV0dXJuImh0X2Nsb25lX2JvdHRvbSI7Y2FzZSJib3R0b20taW5saW5lLXN0YXJ0LWNvcm5lciI6cmV0dXJuImh0X2Nsb25lX2JvdHRvbV9sZWZ0X2Nvcm5lciBodF9j''@;'; put 'put ''bG9uZV9ib3R0b21faW5saW5lX3N0YXJ0X2Nvcm5lciI7Y2FzZSJ0b3AiOnJldHVybiJodF9jbG9uZV90b3AiO2Nhc2UidG9wLWlubGluZS1zdGFydC1jb3JuZXIiOnJldHVybiJodF9jbG9uZV90b3BfbGVmdF9jb3JuZXIgaHRfY2xvbmVfdG9wX2lubGluZV9zdGFydF9jb3JuZXIiO2RlZmF1''@;'; put 'put ''bHQ6cmV0dXJuImh0X2Nsb25lX21hc3RlciJ9fX0se2tleToiZ2V0RWRpdGVkQ2VsbCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ob3QuZ2V0Q2VsbCh0aGlzLnJvdyx0aGlzLmNvbCwhMCl9fSx7a2V5OiJjaGVja0VkaXRvclNlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9''@;'; put 'put ''dGhpcy5ob3QuY291bnRSb3dzKCksdj0iIjtyZXR1cm4gdGhpcy5yb3c8dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maXhlZFJvd3NUb3A/dj10aGlzLmNvbDx0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0PyJ0b3AtaW5saW5lLXN0YXJ0LWNvcm5lciI6InRvcCI6dGhp''@;'; put 'put ''cy5ob3QuZ2V0U2V0dGluZ3MoKS5maXhlZFJvd3NCb3R0b20mJnRoaXMucm93Pj1oLXRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRSb3dzQm90dG9tP3Y9dGhpcy5jb2w8dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydD8iYm90dG9tLWlubGluZS1zdGFydC1jb3Ju''@;'; put 'put ''ZXIiOiJib3R0b20iOnRoaXMuY29sPHRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnQmJih2PSJpbmxpbmUtc3RhcnQiKSx2fX1dLFt7a2V5OiJFRElUT1JfVFlQRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuImJhc2UifX1dKSxkfSgpO2Z1bmN0aW9uIFlxZSgpe3ZhciBn''@;'; put 'put ''LGQ9e21pbkhlaWdodDoyMDAsbWF4SGVpZ2h0OjMwMCxtaW5XaWR0aDoxMDAsbWF4V2lkdGg6MzAwfSxoPWRvY3VtZW50LmJvZHksdj1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIikseT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJTUEFOIiksQz1mdW5jdGlvbihwdCxPdCwkdCl7cHQuYWRk''@;'; put 'put ''RXZlbnRMaXN0ZW5lcihPdCwkdCwhMSl9LEk9ZnVuY3Rpb24ocHQsT3QsJHQpe3B0LnJlbW92ZUV2ZW50TGlzdGVuZXIoT3QsJHQsITEpfSxaPWZ1bmN0aW9uKHB0KXt2YXIgT3QsJHQ7cHQ/L15bYS16QS1aIFwuLFxcXC9cfDAtOV0kLy50ZXN0KHB0KXx8KHB0PSIuIik6cHQ9IiIsdm9pZCAw''@;'; put 'put ''IT09di50ZXh0Q29udGVudD92LnRleHRDb250ZW50PWcudmFsdWUrcHQ6di5kYXRhPWcudmFsdWUrcHQseS5zdHlsZS5mb250U2l6ZT1OZShnKS5mb250U2l6ZSx5LnN0eWxlLmZvbnRGYW1pbHk9TmUoZykuZm9udEZhbWlseSx5LnN0eWxlLndoaXRlU3BhY2U9InByZSIsaC5hcHBlbmRDaGls''@;'; put 'put ''ZCh5KSxPdD15LmNsaWVudFdpZHRoKzIsaC5yZW1vdmVDaGlsZCh5KSxnLnN0eWxlLmhlaWdodD1kLm1pbkhlaWdodCsicHgiLGcuc3R5bGUud2lkdGg9ZC5taW5XaWR0aD5PdD9kLm1pbldpZHRoKyJweCI6T3Q+ZC5tYXhXaWR0aD9kLm1heFdpZHRoKyJweCI6T3QrInB4IixkLm1pbkhlaWdo''@;'; put 'put ''dD4oJHQ9Zy5zY3JvbGxIZWlnaHQ/Zy5zY3JvbGxIZWlnaHQtMTowKT9nLnN0eWxlLmhlaWdodD1kLm1pbkhlaWdodCsicHgiOmQubWF4SGVpZ2h0PCR0PyhnLnN0eWxlLmhlaWdodD1kLm1heEhlaWdodCsicHgiLGcuc3R5bGUub3ZlcmZsb3dZPSJ2aXNpYmxlIik6Zy5zdHlsZS5oZWlnaHQ9''@;'; put 'put ''JHQrInB4In0sdWU9ZnVuY3Rpb24oKXt3aW5kb3cuc2V0VGltZW91dChaLDApfTtmdW5jdGlvbiBOZShLZSl7cmV0dXJuIEtlLmN1cnJlbnRTdHlsZXx8ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShLZSl9cmV0dXJue2luaXQ6ZnVuY3Rpb24ocHQsT3QsJHQpeyFmdW5j''@;'; put 'put ''dGlvbihwdCxPdCwkdCl7Zz1wdCxmdW5jdGlvbihwdCl7aWYocHQmJnB0Lm1pbkhlaWdodClpZigiaW5oZXJpdCI9PXB0Lm1pbkhlaWdodClkLm1pbkhlaWdodD1nLmNsaWVudEhlaWdodDtlbHNle3ZhciBPdD1wYXJzZUludChwdC5taW5IZWlnaHQpO2lzTmFOKE90KXx8KGQubWluSGVpZ2h0''@;'; put 'put ''PU90KX1pZihwdCYmcHQubWF4SGVpZ2h0KWlmKCJpbmhlcml0Ij09cHQubWF4SGVpZ2h0KWQubWF4SGVpZ2h0PWcuY2xpZW50SGVpZ2h0O2Vsc2V7dmFyICR0PXBhcnNlSW50KHB0Lm1heEhlaWdodCk7aXNOYU4oJHQpfHwoZC5tYXhIZWlnaHQ9JHQpfWlmKHB0JiZwdC5taW5XaWR0aClpZigi''@;'; put 'put ''aW5oZXJpdCI9PXB0Lm1pbldpZHRoKWQubWluV2lkdGg9Zy5jbGllbnRXaWR0aDtlbHNle3ZhciBmbj1wYXJzZUludChwdC5taW5XaWR0aCk7aXNOYU4oZm4pfHwoZC5taW5XaWR0aD1mbil9aWYocHQmJnB0Lm1heFdpZHRoKWlmKCJpbmhlcml0Ij09cHQubWF4V2lkdGgpZC5tYXhXaWR0aD1n''@;'; put 'put ''LmNsaWVudFdpZHRoO2Vsc2V7dmFyIExuPXBhcnNlSW50KHB0Lm1heFdpZHRoKTtpc05hTihMbil8fChkLm1heFdpZHRoPUxuKX15LmZpcnN0Q2hpbGR8fCh5LmNsYXNzTmFtZT0iYXV0b1Jlc2l6ZSIseS5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siLHkuYXBwZW5kQ2hpbGQodikpfShP''@;'; put 'put ''dCksIlRFWFRBUkVBIj09Zy5ub2RlTmFtZSYmKGcuc3R5bGUucmVzaXplPSJub25lIixnLnN0eWxlLm92ZXJmbG93WT0iIixnLnN0eWxlLmhlaWdodD1kLm1pbkhlaWdodCsicHgiLGcuc3R5bGUubWluV2lkdGg9ZC5taW5XaWR0aCsicHgiLGcuc3R5bGUubWF4V2lkdGg9ZC5tYXhXaWR0aCsi''@;'; put 'put ''cHgiLGcuc3R5bGUub3ZlcmZsb3dZPSJoaWRkZW4iKSwkdCYmKEMoZywiY2hhbmdlIixaKSxDKGcsImN1dCIsdWUpLEMoZywicGFzdGUiLHVlKSxDKGcsImRyb3AiLHVlKSxDKGcsImtleWRvd24iLHVlKSxDKGcsImZvY3VzIixaKSxDKGcsImNvbXBvc2l0aW9uc3RhcnQiLHVlKSxDKGcsImNv''@;'; put 'put ''bXBvc2l0aW9udXBkYXRlIix1ZSksQyhnLCJjb21wb3NpdGlvbmVuZCIsdWUpKSxaKCl9KHB0LE90LCR0KX0sdW5PYnNlcnZlOmZ1bmN0aW9uKCl7SShnLCJjaGFuZ2UiLFopLEkoZywiY3V0Iix1ZSksSShnLCJwYXN0ZSIsdWUpLEkoZywiZHJvcCIsdWUpLEkoZywia2V5ZG93biIsdWUpLEko''@;'; put 'put ''ZywiZm9jdXMiLFopLEkoZywiY29tcG9zaXRpb25zdGFydCIsdWUpLEkoZywiY29tcG9zaXRpb251cGRhdGUiLHVlKSxJKGcsImNvbXBvc2l0aW9uZW5kIix1ZSl9LHJlc2l6ZTpafX1mdW5jdGlvbiBOU2UoZCxnKXtmb3IodmFyIGg9ZzNlKGcpLHY9Zy52YWx1ZS5zcGxpdCgiXG4iKSx5PWgs''@;'; put 'put ''Qz0wLEk9MDtJPHYubGVuZ3RoO0krKyl7MCE9PUkmJihDKz12W0ktMV0ubGVuZ3RoKzEpO3ZhciB1ZT1DK3ZbSV0ubGVuZ3RoO2lmKCJob21lIj09PWQ/eT1DOiJlbmQiPT09ZCYmKHk9dWUpLGg8PXVlKWJyZWFrfVZaKGcseSl9ZnVuY3Rpb24gYzZlKGQpe3JldHVybihjNmU9ImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5w''@;'; put 'put ''cm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBWU2UoZCxnKXtyZXR1cm4gZnVuY3Rpb24gWHFlKGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBKcWUoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBT''@;'; put 'put ''eW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31j''@;'; put 'put ''YXRjaCh1ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgWn19cmV0dXJuIHZ9fShkLGcpfHxmdW5jdGlvbiBRcWUoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIGpTZShkLGcpO3Zh''@;'; put 'put ''ciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1o''@;'; put 'put ''fHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4galNlKGQsZyl9fShkLGcpfHxmdW5jdGlvbiBVcWUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNl''@;'; put 'put ''LlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGpTZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFy''@;'; put 'put ''cmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIFpTZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0h''@;'; put 'put ''MCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGZ6KCl7cmV0dXJuIGZ6PSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1xcWUoZyxoKTtpZih5KXt2YXIgQz1P''@;'; put 'put ''YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LGZ6LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBxcWUoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093''@;'; put 'put ''blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPU5TKGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIGY2ZShkLGcpe3JldHVybihmNmU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2''@;'; put 'put ''fSkoZCxnKX1mdW5jdGlvbiBuZXQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1jNmUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3Ig''@;'; put 'put ''dW5kZWZpbmVkIik7cmV0dXJuIHpTZShkKX1mdW5jdGlvbiB6U2UoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIE5TKGQp''@;'; put 'put ''e3JldHVybihOUz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfUIyKGtPLFJxZSk7dmFyIHZ0ZT0iaHRfZWRpdG9yX2hpZGRlbiIsR1Nl''@;'; put 'put ''PSJ0ZXh0RWRpdG9yIixWUz1mdW5jdGlvbihkKXshZnVuY3Rpb24gZWV0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5''@;'; put 'put ''cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJmY2ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0''@;'; put 'put ''aW9uIHRldChkKXt2YXIgZz1mdW5jdGlvbiByZXQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBC''@;'; put 'put ''b29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1OUyhkKTtpZihnKXt2YXIgQz1OUyh0aGlzKS5jb25zdHJ1Y3Rvcjt5''@;'; put 'put ''PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbmV0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYpe3ZhciB5O3JldHVybiBmdW5jdGlvbiBLcWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoeT1nLmNhbGwodGhpcyx2KSkuZXZlbnRNYW5hZ2VyPW5ldyBMMSh6U2UoeSkpLHkuYXV0b1Jlc2l6ZT1ZcWUoKSx5LlRFWFRBUkVBPXZvaWQgMCx5LnRleHRhcmVhU3R5bGU9dm9pZCAwLHku''@;'; put 'put ''VEVYVEFSRUFfUEFSRU5UPXZvaWQgMCx5LnRleHRhcmVhUGFyZW50U3R5bGU9dm9pZCAwLHkubGF5ZXJDbGFzcz12b2lkIDAseS5jcmVhdGVFbGVtZW50cygpLHkuYmluZEV2ZW50cygpLHkuaG90LmFkZEhvb2tPbmNlKCJhZnRlckRlc3Ryb3kiLGZ1bmN0aW9uKCl7cmV0dXJuIHkuZGVzdHJv''@;'; put 'put ''eSgpfSkseX1yZXR1cm4gZnVuY3Rpb24gJHFlKGQsZyxoKXtnJiZaU2UoZC5wcm90b3R5cGUsZyksaCYmWlNlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImdldFZhbHVlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0''@;'; put 'put ''aGlzLlRFWFRBUkVBLnZhbHVlfX0se2tleToic2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMuVEVYVEFSRUEudmFsdWU9eX19LHtrZXk6Im9wZW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLnJlZnJlc2hEaW1lbnNpb25zKCksdGhpcy5zaG93RWRpdGFibGVFbGVt''@;'; put 'put ''ZW50KCksdGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuc2V0QWN0aXZlQ29udGV4dE5hbWUoImVkaXRvciIpLHRoaXMuYWRkSG9vaygiYWZ0ZXJEb2N1bWVudEtleURvd24iLGZ1bmN0aW9uKEkpe3JldHVybiB5Lm9uQWZ0ZXJEb2N1bWVudEtleURvd24oSSl9KSx0aGlzLnJlZ2lzdGVy''@;'; put 'put ''U2hvcnRjdXRzKCl9fSx7a2V5OiJjbG9zZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmF1dG9SZXNpemUudW5PYnNlcnZlKCksdGhpcy5ob3Qucm9vdERvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT10aGlzLlRFWFRBUkVBJiZ0aGlzLmhvdC5saXN0ZW4oKSx0aGlzLmhpZGVFZGl0YWJsZUVsZW1l''@;'; put 'put ''bnQoKSx0aGlzLnVucmVnaXN0ZXJTaG9ydGN1dHMoKSx0aGlzLnJlbW92ZUhvb2tzQnlLZXkoImFmdGVyRG9jdW1lbnRLZXlEb3duIil9fSx7a2V5OiJwcmVwYXJlIix2YWx1ZTpmdW5jdGlvbih5LEMsSSxaLHVlLF9lKXt2YXIgQmU9dGhpcy5zdGF0ZTtpZihmeihOUyhoLnByb3RvdHlwZSks''@;'; put 'put ''InByZXBhcmUiLHRoaXMpLmNhbGwodGhpcyx5LEMsSSxaLHVlLF9lKSwhX2UucmVhZE9ubHkpe3RoaXMucmVmcmVzaERpbWVuc2lvbnMoITApO3ZhciBLZT1fZS5mcmFnbWVudFNlbGVjdGlvbjtfZS5hbGxvd0ludmFsaWQmJih0aGlzLlRFWFRBUkVBLnZhbHVlPSIiKSxCZSE9PXJmLkZJTklT''@;'; put 'put ''SEVEJiZ0aGlzLmhpZGVFZGl0YWJsZUVsZW1lbnQoKSwhS2UmJiFiOCgpJiZ0aGlzLmZvY3VzKCl9fX0se2tleToiYmVnaW5FZGl0aW5nIix2YWx1ZTpmdW5jdGlvbih5LEMpe3RoaXMuc3RhdGU9PT1yZi5WSVJHSU4mJih0aGlzLlRFWFRBUkVBLnZhbHVlPSIiLGZ6KE5TKGgucHJvdG90eXBl''@;'; put 'put ''KSwiYmVnaW5FZGl0aW5nIix0aGlzKS5jYWxsKHRoaXMseSxDKSl9fSx7a2V5OiJmb2N1cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLlRFWFRBUkVBLnNlbGVjdCgpLFZaKHRoaXMuVEVYVEFSRUEsdGhpcy5URVhUQVJFQS52YWx1ZS5sZW5ndGgpfX0se2tleToiY3JlYXRlRWxlbWVudHMiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3Qucm9vdERvY3VtZW50O3RoaXMuVEVYVEFSRUE9eS5jcmVhdGVFbGVtZW50KCJURVhUQVJFQSIpLHRoaXMuVEVYVEFSRUEuc2V0QXR0cmlidXRlKCJkYXRhLWhvdC1pbnB1dCIsIiIpLHRoaXMuVEVYVEFSRUEudGFiSW5kZXg9LTEsTzAodGhp''@;'; put 'put ''cy5URVhUQVJFQSwiaGFuZHNvbnRhYmxlSW5wdXQiKSx0aGlzLnRleHRhcmVhU3R5bGU9dGhpcy5URVhUQVJFQS5zdHlsZSx0aGlzLnRleHRhcmVhU3R5bGUud2lkdGg9MCx0aGlzLnRleHRhcmVhU3R5bGUuaGVpZ2h0PTAsdGhpcy50ZXh0YXJlYVN0eWxlLm92ZXJmbG93WT0idmlzaWJsZSIs''@;'; put 'put ''dGhpcy5URVhUQVJFQV9QQVJFTlQ9eS5jcmVhdGVFbGVtZW50KCJESVYiKSxPMCh0aGlzLlRFWFRBUkVBX1BBUkVOVCwiaGFuZHNvbnRhYmxlSW5wdXRIb2xkZXIiKSx0bCh0aGlzLlRFWFRBUkVBX1BBUkVOVCx0aGlzLmxheWVyQ2xhc3MpJiZwbCh0aGlzLlRFWFRBUkVBX1BBUkVOVCx0aGlz''@;'; put 'put ''LmxheWVyQ2xhc3MpLE8wKHRoaXMuVEVYVEFSRUFfUEFSRU5ULHZ0ZSksdGhpcy50ZXh0YXJlYVBhcmVudFN0eWxlPXRoaXMuVEVYVEFSRUFfUEFSRU5ULnN0eWxlLHRoaXMuVEVYVEFSRUFfUEFSRU5ULmFwcGVuZENoaWxkKHRoaXMuVEVYVEFSRUEpLHRoaXMuaG90LnJvb3RFbGVtZW50LmFw''@;'; put 'put ''cGVuZENoaWxkKHRoaXMuVEVYVEFSRUFfUEFSRU5UKX19LHtrZXk6ImhpZGVFZGl0YWJsZUVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7KFNiZSgpfHxrYmUoKSkmJih0aGlzLnRleHRhcmVhU3R5bGUudGV4dEluZGVudD0iLTk5OTk5cHgiKSx0aGlzLnRleHRhcmVhU3R5bGUub3ZlcmZsb3dZ''@;'; put 'put ''PSJ2aXNpYmxlIix0aGlzLnRleHRhcmVhUGFyZW50U3R5bGUub3BhY2l0eT0iMCIsdGhpcy50ZXh0YXJlYVBhcmVudFN0eWxlLmhlaWdodD0iMXB4IixwbCh0aGlzLlRFWFRBUkVBX1BBUkVOVCx0aGlzLmxheWVyQ2xhc3MpLE8wKHRoaXMuVEVYVEFSRUFfUEFSRU5ULHZ0ZSl9fSx7a2V5OiJz''@;'; put 'put ''aG93RWRpdGFibGVFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudGV4dGFyZWFQYXJlbnRTdHlsZS5oZWlnaHQ9IiIsdGhpcy50ZXh0YXJlYVBhcmVudFN0eWxlLm92ZXJmbG93PSIiLHRoaXMudGV4dGFyZWFQYXJlbnRTdHlsZS5wb3NpdGlvbj0iIix0aGlzLnRleHRhcmVhUGFyZW50''@;'; put 'put ''U3R5bGVbdGhpcy5ob3QuaXNSdGwoKT8ibGVmdCI6InJpZ2h0Il09ImF1dG8iLHRoaXMudGV4dGFyZWFQYXJlbnRTdHlsZS5vcGFjaXR5PSIxIix0aGlzLnRleHRhcmVhU3R5bGUudGV4dEluZGVudD0iIix0aGlzLnRleHRhcmVhU3R5bGUub3ZlcmZsb3dZPSJoaWRkZW4iO3ZhciB5PXRoaXMu''@;'; put 'put ''VEVYVEFSRUFfUEFSRU5ULmNoaWxkTm9kZXMsQz0hMTtpYSh5Lmxlbmd0aC0xLGZ1bmN0aW9uKEkpe2lmKHRsKHlbSV0sImhhbmRzb250YWJsZUVkaXRvciIpKXJldHVybiBDPSEwLCExfSksdGwodGhpcy5URVhUQVJFQV9QQVJFTlQsdnRlKSYmcGwodGhpcy5URVhUQVJFQV9QQVJFTlQsdnRl''@;'; put 'put ''KSxDPyh0aGlzLmxheWVyQ2xhc3M9Imh0X2VkaXRvcl92aXNpYmxlIixPMCh0aGlzLlRFWFRBUkVBX1BBUkVOVCx0aGlzLmxheWVyQ2xhc3MpKToodGhpcy5sYXllckNsYXNzPXRoaXMuZ2V0RWRpdGVkQ2VsbHNMYXllckNsYXNzKCksTzAodGhpcy5URVhUQVJFQV9QQVJFTlQsdGhpcy5sYXll''@;'; put 'put ''ckNsYXNzKSl9fSx7a2V5OiJyZWZyZXNoVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyh0aGlzLnJvdyksQz10aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXRDZWxsKHksdGhpcy5jb2wpO3RoaXMub3JpZ2luYWxWYWx1ZT1DLHRoaXMuc2V0VmFsdWUo''@;'; put 'put ''QyksdGhpcy5yZWZyZXNoRGltZW5zaW9ucygpfX0se2tleToicmVmcmVzaERpbWVuc2lvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtpZih0aGlzLnN0YXRlPT09cmYuRURJVElOR3x8eSl7''@;'; put 'put ''aWYodGhpcy5URD10aGlzLmdldEVkaXRlZENlbGwoKSwhdGhpcy5URClyZXR1cm4gdm9pZCh5fHx0aGlzLmNsb3NlKCkpO3ZhciBDPXRoaXMuZ2V0RWRpdGVkQ2VsbFJlY3QoKSxJPUMudG9wLFo9Qy5zdGFydCx1ZT1DLndpZHRoLF9lPUMubWF4V2lkdGgsQmU9Qy5oZWlnaHQsTmU9Qy5tYXhI''@;'; put 'put ''ZWlnaHQ7dGhpcy50ZXh0YXJlYVBhcmVudFN0eWxlLnRvcD0iIi5jb25jYXQoSSwicHgiKSx0aGlzLnRleHRhcmVhUGFyZW50U3R5bGVbdGhpcy5ob3QuaXNSdGwoKT8icmlnaHQiOiJsZWZ0Il09IiIuY29uY2F0KFosInB4IiksdGhpcy5zaG93RWRpdGFibGVFbGVtZW50KCk7dmFyIEtlPU13''@;'; put 'put ''KHRoaXMuVEQsdGhpcy5ob3Qucm9vdFdpbmRvdyk7dGhpcy5URVhUQVJFQS5zdHlsZS5mb250U2l6ZT1LZS5mb250U2l6ZSx0aGlzLlRFWFRBUkVBLnN0eWxlLmZvbnRGYW1pbHk9S2UuZm9udEZhbWlseSx0aGlzLlRFWFRBUkVBLnN0eWxlLmJhY2tncm91bmRDb2xvcj10aGlzLlRELnN0eWxl''@;'; put 'put ''LmJhY2tncm91bmRDb2xvcjt2YXIgcHQ9TXcodGhpcy5URVhUQVJFQSksT3Q9cGFyc2VJbnQocHQucGFkZGluZ0xlZnQsMTApK3BhcnNlSW50KHB0LnBhZGRpbmdSaWdodCwxMCksJHQ9cGFyc2VJbnQocHQucGFkZGluZ1RvcCwxMCkrcGFyc2VJbnQocHQucGFkZGluZ0JvdHRvbSwxMCksZm49''@;'; put 'put ''dWUtT3QsTG49QmUtJHQsaXI9X2UtT3QsbXI9TmUtJHQ7dGhpcy5hdXRvUmVzaXplLmluaXQodGhpcy5URVhUQVJFQSx7bWluV2lkdGg6TWF0aC5taW4oZm4saXIpLG1pbkhlaWdodDpNYXRoLm1pbihMbixtciksbWF4V2lkdGg6aXIsbWF4SGVpZ2h0Om1yfSwhMCl9fX0se2tleToiYmluZEV2''@;'; put 'put ''ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5URVhUQVJFQSwiY3V0IixmdW5jdGlvbihDKXtyZXR1cm4gQy5zdG9wUHJvcGFnYXRpb24oKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo''@;'; put 'put ''dGhpcy5URVhUQVJFQSwicGFzdGUiLGZ1bmN0aW9uKEMpe3JldHVybiBDLnN0b3BQcm9wYWdhdGlvbigpfSkscWhlKCkmJnRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5URVhUQVJFQSwiZm9jdXNvdXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkuZmluaXNoRWRpdGluZygh''@;'; put 'put ''MSl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsSG9yaXpvbnRhbGx5IixmdW5jdGlvbigpe3JldHVybiB5LnJlZnJlc2hEaW1lbnNpb25zKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsVmVydGljYWxseSIsZnVuY3Rpb24oKXtyZXR1cm4geS5yZWZyZXNoRGltZW5zaW9ucygpfSks''@;'; put 'put ''dGhpcy5hZGRIb29rKCJhZnRlckNvbHVtblJlc2l6ZSIsZnVuY3Rpb24oKXt5LnJlZnJlc2hEaW1lbnNpb25zKCkseS5mb2N1cygpfSksdGhpcy5hZGRIb29rKCJhZnRlclJvd1Jlc2l6ZSIsZnVuY3Rpb24oKXt5LnJlZnJlc2hEaW1lbnNpb25zKCkseS5mb2N1cygpfSl9fSx7a2V5OiJhbGxv''@;'; put 'put ''d0tleUV2ZW50UHJvcGFnYXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmV2ZW50TWFuYWdlci5kZXN0cm95KCksdGhpcy5jbGVhckhvb2tzKCl9fSx7a2V5OiJyZWdpc3RlclNob3J0Y3V0cyIsdmFsdWU6ZnVuY3Rpb24oKXt2''@;'; put 'put ''YXIgeT10aGlzLEk9dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZWRpdG9yIiksdWU9ZnVuY3Rpb24oKXt5LmhvdC5yb290RG9jdW1lbnQuZXhlY0NvbW1hbmQoImluc2VydFRleHQiLCExLCJcbiIpfTtJLmFkZFNob3J0Y3V0cyhbe2tleXM6W1siVGFiIl1dLGNh''@;'; put 'put ''bGxiYWNrOmZ1bmN0aW9uKEJlKXt2YXIgTmU9eS5ob3QuZ2V0U2V0dGluZ3MoKSxLZT0iZnVuY3Rpb24iPT10eXBlb2YgTmUudGFiTW92ZXM/TmUudGFiTW92ZXMoQmUpOk5lLnRhYk1vdmVzO3kuaG90LnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydChLZS5yb3csS2UuY29sLCEwKX19LHtrZXlz''@;'; put 'put ''OltbIlNoaWZ0IiwiVGFiIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKEJlKXt2YXIgTmU9eS5ob3QuZ2V0U2V0dGluZ3MoKSxLZT0iZnVuY3Rpb24iPT10eXBlb2YgTmUudGFiTW92ZXM/TmUudGFiTW92ZXMoQmUpOk5lLnRhYk1vdmVzO3kuaG90LnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCgtS2Uu''@;'; put 'put ''cm93LC1LZS5jb2wpfX0se2tleXM6W1siQ29udHJvbCIsIkVudGVyIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHVlKCksITF9LHJ1bk9ubHlJZjpmdW5jdGlvbihCZSl7cmV0dXJuIXkuaG90LnNlbGVjdGlvbi5pc011bHRpcGxlKCkmJiFCZS5hbHRLZXl9LHJlbGF0aXZlVG9Hcm91''@;'; put 'put ''cDpHWixwb3NpdGlvbjoiYmVmb3JlIn0se2tleXM6W1siTWV0YSIsIkVudGVyIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHVlKCksITF9LHJ1bk9ubHlJZjpmdW5jdGlvbigpe3JldHVybiF5LmhvdC5zZWxlY3Rpb24uaXNNdWx0aXBsZSgpfSxyZWxhdGl2ZVRvR3JvdXA6R1oscG9z''@;'; put 'put ''aXRpb246ImJlZm9yZSJ9LHtrZXlzOltbIkFsdCIsIkVudGVyIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHVlKCksITF9LHJlbGF0aXZlVG9Hcm91cDpHWixwb3NpdGlvbjoiYmVmb3JlIn0se2tleXM6W1siUGFnZVVwIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7eS5ob3Quc2VsZWN0''@;'; put 'put ''aW9uLnRyYW5zZm9ybVN0YXJ0KC15LmhvdC5jb3VudFZpc2libGVSb3dzKCksMCl9fSx7a2V5czpbWyJQYWdlRG93biJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3kuaG90LnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCh5LmhvdC5jb3VudFZpc2libGVSb3dzKCksMCl9fSx7a2V5czpbWyJIb21l''@;'; put 'put ''Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKEJlLE5lKXtOU2UoVlNlKE5lLDEpWzBdLHkuVEVYVEFSRUEpfX0se2tleXM6W1siRW5kIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKEJlLE5lKXtOU2UoVlNlKE5lLDEpWzBdLHkuVEVYVEFSRUEpfX0se2tleXM6W1siQ29udHJvbC9NZXRhIiwiWiJdXSxwcmV2''@;'; put 'put ''ZW50RGVmYXVsdDohMSxjYWxsYmFjazpmdW5jdGlvbigpe3kuaG90Ll9yZWdpc3RlclRpbWVvdXQoZnVuY3Rpb24oKXt5LmF1dG9SZXNpemUucmVzaXplKCl9LDEwKX19LHtrZXlzOltbIkNvbnRyb2wvTWV0YSIsIlNoaWZ0IiwiWiJdXSxwcmV2ZW50RGVmYXVsdDohMSxjYWxsYmFjazpmdW5j''@;'; put 'put ''dGlvbigpe3kuaG90Ll9yZWdpc3RlclRpbWVvdXQoZnVuY3Rpb24oKXt5LmF1dG9SZXNpemUucmVzaXplKCl9LDEwKX19XSx7cnVuT25seUlmOmZ1bmN0aW9uKCl7cmV0dXJuIFRvKHkuaG90LmdldFNlbGVjdGVkKCkpfSxncm91cDpHU2V9KX19LHtrZXk6InVucmVnaXN0ZXJTaG9ydGN1dHMi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEM9dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZWRpdG9yIik7Qy5yZW1vdmVTaG9ydGN1dHNCeUdyb3VwKGxlZSksQy5yZW1vdmVTaG9ydGN1dHNCeUdyb3VwKEdTZSksQy5yZW1vdmVTaG9ydGN1dHNCeUdyb3VwKHU2ZSl9''@;'; put 'put ''fSx7a2V5OiJvbkFmdGVyRG9jdW1lbnRLZXlEb3duIix2YWx1ZTpmdW5jdGlvbih5KXstMT09PVtRby5BUlJPV19VUCxRby5BUlJPV19SSUdIVCxRby5BUlJPV19ET1dOLFFvLkFSUk9XX0xFRlRdLmluZGV4T2YoeS5rZXlDb2RlKSYmdGhpcy5hdXRvUmVzaXplLnJlc2l6ZShTdHJpbmcuZnJv''@;'; put 'put ''bUNoYXJDb2RlKHkua2V5Q29kZSkpfX1dLFt7a2V5OiJFRElUT1JfVFlQRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuInRleHQifX1dKSxofShrTyk7ZnVuY3Rpb24gaHooZCxnLGgsdix5LEMsSSl7dmFyIFo9W10sdWU9W107SS5jbGFzc05hbWUmJk8wKGcsSS5jbGFzc05hbWUpLEkucmVhZE9u''@;'; put 'put ''bHkmJloucHVzaChJLnJlYWRPbmx5Q2VsbENsYXNzTmFtZSksITE9PT1JLnZhbGlkJiZJLmludmFsaWRDZWxsQ2xhc3NOYW1lP1oucHVzaChJLmludmFsaWRDZWxsQ2xhc3NOYW1lKTp1ZS5wdXNoKEkuaW52YWxpZENlbGxDbGFzc05hbWUpLCExPT09SS53b3JkV3JhcCYmSS5ub1dvcmRXcmFw''@;'; put 'put ''Q2xhc3NOYW1lJiZaLnB1c2goSS5ub1dvcmRXcmFwQ2xhc3NOYW1lKSwhQyYmSS5wbGFjZWhvbGRlciYmWi5wdXNoKEkucGxhY2Vob2xkZXJDZWxsQ2xhc3NOYW1lKSxwbChnLHVlKSxPMChnLFopfWZ1bmN0aW9uIEJ3KGQsZyxoLHYseSxDLEkpe2h6LmFwcGx5KHRoaXMsW2QsZyxoLHYseSxD''@;'; put 'put ''LEldKTt2YXIgWj1DO2lmKCFaJiZJLnBsYWNlaG9sZGVyJiYoWj1JLnBsYWNlaG9sZGVyKSxaPWV1KFopLGQuZ2V0U2V0dGluZ3MoKS50cmltV2hpdGVzcGFjZSYmKFo9Wi50cmltKCkpLEkucmVuZGVyZXJUZW1wbGF0ZSl7RHAoZyk7dmFyIHVlPWQucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1l''@;'; put 'put ''bnQoIlRFTVBMQVRFIik7dWUuc2V0QXR0cmlidXRlKCJiaW5kIiwie3t9fSIpLHVlLmlubmVySFRNTD1JLnJlbmRlcmVyVGVtcGxhdGUsSFRNTFRlbXBsYXRlRWxlbWVudC5kZWNvcmF0ZSh1ZSksdWUubW9kZWw9ZC5nZXRTb3VyY2VEYXRhQXRSb3coaCksZy5hcHBlbmRDaGlsZCh1ZSl9ZWxz''@;'; put 'put ''ZSBTdyhnLFopfWh6LlJFTkRFUkVSX1RZUEU9ImJhc2UiLEJ3LlJFTkRFUkVSX1RZUEU9InRleHQiO3ZhciBXU2U9e0NFTExfVFlQRToidGV4dCIsZWRpdG9yOlZTLHJlbmRlcmVyOkJ3fTtmdW5jdGlvbiBUdihkLGcpe3ZhciBoPW5ldyBhNmUoZCxnfHx7fSx6ZGUpO3JldHVybiBoLmluaXQo''@;'; put 'put ''KSxofWs4KFdTZSksVHYuZWRpdG9ycz17QmFzZUVkaXRvcjprT30sVHYuQ29yZT1mdW5jdGlvbihkKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuIG5ldyBhNmUoZCxnLHpkZSl9LFR2LkRlZmF1bHRTZXR0aW5n''@;'; put 'put ''cz1kU2UoKSxUdi5ob29rcz16by5nZXRTaW5nbGV0b24oKSxUdi5wYWNrYWdlTmFtZT0iaGFuZHNvbnRhYmxlIixUdi5idWlsZERhdGU9IjA4LzA3LzIwMjIgMTU6MjQ6MDgiLFR2LnZlcnNpb249IjEyLjEuMiIsVHYubGFuZ3VhZ2VzPXtkaWN0aW9uYXJ5S2V5czpLLGdldExhbmd1YWdlRGlj''@;'; put 'put ''dGlvbmFyeTpMa2UsZ2V0TGFuZ3VhZ2VzRGljdGlvbmFyaWVzOmZ1bmN0aW9uIGpYZSgpe3JldHVybiBOWGUoKX0scmVnaXN0ZXJMYW5ndWFnZURpY3Rpb25hcnk6RGtlLGdldFRyYW5zbGF0ZWRQaHJhc2U6T2tlfTtjb25zdCBKbD1UdixjZXQ9WyJjb250YWluZXIiXSxoNmU9bmV3IE1hcCxZ''@;'; put 'put ''U2U9IlRoZSBIYW5kc29udGFibGUgaW5zdGFuY2UgYm91bmQgdG8gdGhpcyBjb21wb25lbnQgd2FzIGRlc3Ryb3llZCBhbmQgY2Fubm90IGJlIHVzZWQgcHJvcGVybHkuIjtsZXQgU089KCgpPT57Y2xhc3MgZHtnZXRJbnN0YW5jZShoKXtjb25zdCB2PWg2ZS5nZXQoaCk7cmV0dXJuIHYuaXNE''@;'; put 'put ''ZXN0cm95ZWQ/KGNvbnNvbGUud2FybihZU2UpLG51bGwpOnZ9cmVnaXN0ZXJJbnN0YW5jZShoLHYpe3JldHVybiBoNmUuc2V0KGgsdil9cmVtb3ZlSW5zdGFuY2UoaCl7cmV0dXJuIGg2ZS5kZWxldGUoaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQp''@;'; put 'put ''fSxkLlx1MDI3NXByb3Y9QWkoe3Rva2VuOmQsZmFjdG9yeTpkLlx1MDI3NWZhY30pLGR9KSgpO2NvbnN0IGZldD1PYmplY3Qua2V5cyhKbC5EZWZhdWx0U2V0dGluZ3MpLFVTZT1KbC5ob29rcy5nZXRSZWdpc3RlcmVkKCk7bGV0IFFTZT0oKCk9PntjbGFzcyBke21lcmdlU2V0dGluZ3MoaCl7''@;'; put 'put ''Y29uc3Qgdj0ib2JqZWN0Ij09dHlwZW9mIGguc2V0dGluZ3MseT12P2guc2V0dGluZ3M6e307cmV0dXJuIFVTZS5jb25jYXQoZmV0KS5mb3JFYWNoKEk9Pntjb25zdCBaPVVTZS5pbmRleE9mKEkpPi0xO2xldCB1ZTt2JiZaJiYodWU9aC5zZXR0aW5nc1tJXSksdm9pZCAwIT09aFtJXSYmKHVl''@;'; put 'put ''PWhbSV0pLHZvaWQgMCE9PXVlJiYoeVtJXT0iZnVuY3Rpb24iPT10eXBlb2YgdWUmJlo/ZnVuY3Rpb24oLi4uX2Upe3JldHVybiBoLl9uZ1pvbmUucnVuKCgpPT51ZS5hcHBseSh0aGlzLF9lKSl9OnVlKX0pLHl9cHJlcGFyZUNoYW5nZXMoaCl7Y29uc3Qgdj17fTtyZXR1cm4gT2JqZWN0Lmtl''@;'; put 'put ''eXMoaCkuZm9yRWFjaChDPT57aC5oYXNPd25Qcm9wZXJ0eShDKSYmKHZbQ109aFtDXS5jdXJyZW50VmFsdWUpfSksdn19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1cHJvdj1BaSh7dG9rZW46ZCxmYWN0b3J5OmQuXHUwMjc1ZmFjfSks''@;'; put 'put ''ZH0pKCksQXRlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHkpe3RoaXMuX25nWm9uZT1oLHRoaXMuX2hvdFRhYmxlUmVnaXN0ZXJlcj12LHRoaXMuX2hvdFNldHRpbmdzUmVzb2x2ZXI9eSx0aGlzLl9faG90SW5zdGFuY2U9bnVsbCx0aGlzLmNvbHVtbnNDb21wb25lbnRzPVtdLHRo''@;'; put 'put ''aXMuaG90SWQ9IiJ9Z2V0IGhvdEluc3RhbmNlKCl7cmV0dXJuIXRoaXMuX19ob3RJbnN0YW5jZXx8dGhpcy5fX2hvdEluc3RhbmNlJiYhdGhpcy5fX2hvdEluc3RhbmNlLmlzRGVzdHJveWVkP3RoaXMuX19ob3RJbnN0YW5jZToodGhpcy5faG90VGFibGVSZWdpc3RlcmVyLnJlbW92ZUluc3Rh''@;'; put 'put ''bmNlKHRoaXMuaG90SWQpLGNvbnNvbGUud2FybihZU2UpLG51bGwpfXNldCBob3RJbnN0YW5jZShoKXt0aGlzLl9faG90SW5zdGFuY2U9aH1uZ0FmdGVyVmlld0luaXQoKXtjb25zdCBoPXRoaXMuX2hvdFNldHRpbmdzUmVzb2x2ZXIubWVyZ2VTZXR0aW5ncyh0aGlzKTtpZih0aGlzLmNvbHVt''@;'; put 'put ''bnNDb21wb25lbnRzLmxlbmd0aD4wKXtjb25zdCB2PVtdO3RoaXMuY29sdW1uc0NvbXBvbmVudHMuZm9yRWFjaCh5PT57di5wdXNoKHRoaXMuX2hvdFNldHRpbmdzUmVzb2x2ZXIubWVyZ2VTZXR0aW5ncyh5KSl9KSxoLmNvbHVtbnM9dn10aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIo''@;'; put 'put ''KCk9Pnt0aGlzLmhvdEluc3RhbmNlPW5ldyBKbC5Db3JlKHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsaCksdGhpcy5ob3RJZCYmdGhpcy5faG90VGFibGVSZWdpc3RlcmVyLnJlZ2lzdGVySW5zdGFuY2UodGhpcy5ob3RJZCx0aGlzLmhvdEluc3RhbmNlKSx0aGlzLmhvdEluc3RhbmNl''@;'; put 'put ''LmluaXQoKX0pfW5nT25DaGFuZ2VzKGgpe2lmKG51bGw9PT10aGlzLmhvdEluc3RhbmNlKXJldHVybjtjb25zdCB2PXRoaXMuX2hvdFNldHRpbmdzUmVzb2x2ZXIucHJlcGFyZUNoYW5nZXMoaCk7dGhpcy51cGRhdGVIb3RUYWJsZSh2KX1uZ09uRGVzdHJveSgpe3RoaXMuX25nWm9uZS5ydW5P''@;'; put 'put ''dXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuaG90SW5zdGFuY2UmJnRoaXMuaG90SW5zdGFuY2UuZGVzdHJveSgpfSksdGhpcy5ob3RJZCYmdGhpcy5faG90VGFibGVSZWdpc3RlcmVyLnJlbW92ZUluc3RhbmNlKHRoaXMuaG90SWQpfXVwZGF0ZUhvdFRhYmxlKGgpeyF0aGlzLmhvdEluc3RhbmNl''@;'; put 'put ''fHx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLmhvdEluc3RhbmNlLnVwZGF0ZVNldHRpbmdzKGgsITEpfSl9b25BZnRlckNvbHVtbnNDaGFuZ2UoKXtpZih2b2lkIDAhPT10aGlzLmNvbHVtbnNDb21wb25lbnRzJiZ0aGlzLmNvbHVtbnNDb21wb25lbnRzLmxlbmd0''@;'; put 'put ''aD4wKXtjb25zdCBoPVtdO3RoaXMuY29sdW1uc0NvbXBvbmVudHMuZm9yRWFjaCh5PT57aC5wdXNoKHRoaXMuX2hvdFNldHRpbmdzUmVzb2x2ZXIubWVyZ2VTZXR0aW5ncyh5KSl9KSx0aGlzLnVwZGF0ZUhvdFRhYmxlKHtjb2x1bW5zOmh9KX19b25BZnRlckNvbHVtbnNOdW1iZXJDaGFuZ2Uo''@;'; put 'put ''KXtjb25zdCBoPVtdO3RoaXMuY29sdW1uc0NvbXBvbmVudHMubGVuZ3RoPjAmJnRoaXMuY29sdW1uc0NvbXBvbmVudHMuZm9yRWFjaCh2PT57aC5wdXNoKHRoaXMuX2hvdFNldHRpbmdzUmVzb2x2ZXIubWVyZ2VTZXR0aW5ncyh2KSl9KSx0aGlzLnVwZGF0ZUhvdFRhYmxlKHtjb2x1bW5zOmh9''@;'; put 'put ''KX1hZGRDb2x1bW4oaCl7dGhpcy5jb2x1bW5zQ29tcG9uZW50cy5wdXNoKGgpLHRoaXMub25BZnRlckNvbHVtbnNOdW1iZXJDaGFuZ2UoKX1yZW1vdmVDb2x1bW4oaCl7Y29uc3Qgdj10aGlzLmNvbHVtbnNDb21wb25lbnRzLmluZGV4T2YoaCk7dGhpcy5jb2x1bW5zQ29tcG9uZW50cy5zcGxp''@;'; put 'put ''Y2UodiwxKSx0aGlzLm9uQWZ0ZXJDb2x1bW5zTnVtYmVyQ2hhbmdlKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KF9sKSxLdChTTyksS3QoUVNlKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImhvdC10YWJsZSJdXSx2''@;'; put 'put ''aWV3UXVlcnk6ZnVuY3Rpb24oaCx2KXtpZigxJmgmJnZvKGNldCw1KSwyJmgpe2xldCB5O0hpKHk9JGkoKSkmJih2LmNvbnRhaW5lcj15LmZpcnN0KX19LGlucHV0czp7aG90SWQ6ImhvdElkIixzZXR0aW5nczoic2V0dGluZ3MiLGFjdGl2ZUhlYWRlckNsYXNzTmFtZToiYWN0aXZlSGVhZGVy''@;'; put 'put ''Q2xhc3NOYW1lIixhbGxvd0VtcHR5OiJhbGxvd0VtcHR5IixhbGxvd0h0bWw6ImFsbG93SHRtbCIsYWxsb3dJbnNlcnRDb2x1bW46ImFsbG93SW5zZXJ0Q29sdW1uIixhbGxvd0luc2VydFJvdzoiYWxsb3dJbnNlcnRSb3ciLGFsbG93SW52YWxpZDoiYWxsb3dJbnZhbGlkIixhbGxvd1JlbW92''@;'; put 'put ''ZUNvbHVtbjoiYWxsb3dSZW1vdmVDb2x1bW4iLGFsbG93UmVtb3ZlUm93OiJhbGxvd1JlbW92ZVJvdyIsYXV0b0NvbHVtblNpemU6ImF1dG9Db2x1bW5TaXplIixhdXRvUm93U2l6ZToiYXV0b1Jvd1NpemUiLGF1dG9XcmFwQ29sOiJhdXRvV3JhcENvbCIsYXV0b1dyYXBSb3c6ImF1dG9XcmFw''@;'; put 'put ''Um93IixiaW5kUm93c1dpdGhIZWFkZXJzOiJiaW5kUm93c1dpdGhIZWFkZXJzIixjZWxsOiJjZWxsIixjZWxsczoiY2VsbHMiLGNoZWNrZWRUZW1wbGF0ZToiY2hlY2tlZFRlbXBsYXRlIixjbGFzc05hbWU6ImNsYXNzTmFtZSIsY29sSGVhZGVyczoiY29sSGVhZGVycyIsY29sbGFwc2libGVD''@;'; put 'put ''b2x1bW5zOiJjb2xsYXBzaWJsZUNvbHVtbnMiLGNvbHVtbkhlYWRlckhlaWdodDoiY29sdW1uSGVhZGVySGVpZ2h0Iixjb2x1bW5zOiJjb2x1bW5zIixjb2x1bW5Tb3J0aW5nOiJjb2x1bW5Tb3J0aW5nIixjb2x1bW5TdW1tYXJ5OiJjb2x1bW5TdW1tYXJ5Iixjb2xXaWR0aHM6ImNvbFdpZHRo''@;'; put 'put ''cyIsY29tbWVudGVkQ2VsbENsYXNzTmFtZToiY29tbWVudGVkQ2VsbENsYXNzTmFtZSIsY29tbWVudHM6ImNvbW1lbnRzIixjb250ZXh0TWVudToiY29udGV4dE1lbnUiLGNvcHlhYmxlOiJjb3B5YWJsZSIsY29weVBhc3RlOiJjb3B5UGFzdGUiLGNvcnJlY3RGb3JtYXQ6ImNvcnJlY3RGb3Jt''@;'; put 'put ''YXQiLGN1cnJlbnRDb2xDbGFzc05hbWU6ImN1cnJlbnRDb2xDbGFzc05hbWUiLGN1cnJlbnRIZWFkZXJDbGFzc05hbWU6ImN1cnJlbnRIZWFkZXJDbGFzc05hbWUiLGN1cnJlbnRSb3dDbGFzc05hbWU6ImN1cnJlbnRSb3dDbGFzc05hbWUiLGN1c3RvbUJvcmRlcnM6ImN1c3RvbUJvcmRlcnMi''@;'; put 'put ''LGRhdGE6ImRhdGEiLGRhdGFTY2hlbWE6ImRhdGFTY2hlbWEiLGRhdGVGb3JtYXQ6ImRhdGVGb3JtYXQiLGRlZmF1bHREYXRlOiJkZWZhdWx0RGF0ZSIsZGlzYWJsZVZpc3VhbFNlbGVjdGlvbjoiZGlzYWJsZVZpc3VhbFNlbGVjdGlvbiIsZHJhZ1RvU2Nyb2xsOiJkcmFnVG9TY3JvbGwiLGRy''@;'; put 'put ''b3Bkb3duTWVudToiZHJvcGRvd25NZW51IixlZGl0b3I6ImVkaXRvciIsZW50ZXJCZWdpbnNFZGl0aW5nOiJlbnRlckJlZ2luc0VkaXRpbmciLGVudGVyTW92ZXM6ImVudGVyTW92ZXMiLGZpbGxIYW5kbGU6ImZpbGxIYW5kbGUiLGZpbHRlcjoiZmlsdGVyIixmaWx0ZXJpbmdDYXNlU2Vuc2l0''@;'; put 'put ''aXZlOiJmaWx0ZXJpbmdDYXNlU2Vuc2l0aXZlIixmaWx0ZXJzOiJmaWx0ZXJzIixmaXhlZENvbHVtbnNMZWZ0OiJmaXhlZENvbHVtbnNMZWZ0IixmaXhlZENvbHVtbnNTdGFydDoiZml4ZWRDb2x1bW5zU3RhcnQiLGZpeGVkUm93c0JvdHRvbToiZml4ZWRSb3dzQm90dG9tIixmaXhlZFJvd3NU''@;'; put 'put ''b3A6ImZpeGVkUm93c1RvcCIsZm9ybXVsYXM6ImZvcm11bGFzIixmcmFnbWVudFNlbGVjdGlvbjoiZnJhZ21lbnRTZWxlY3Rpb24iLGhlaWdodDoiaGVpZ2h0IixoaWRkZW5Db2x1bW5zOiJoaWRkZW5Db2x1bW5zIixoaWRkZW5Sb3dzOiJoaWRkZW5Sb3dzIixpbnZhbGlkQ2VsbENsYXNzTmFt''@;'; put 'put ''ZToiaW52YWxpZENlbGxDbGFzc05hbWUiLGxhYmVsOiJsYWJlbCIsbGFuZ3VhZ2U6Imxhbmd1YWdlIixsYXlvdXREaXJlY3Rpb246ImxheW91dERpcmVjdGlvbiIsbGljZW5zZUtleToibGljZW5zZUtleSIsbWFudWFsQ29sdW1uRnJlZXplOiJtYW51YWxDb2x1bW5GcmVlemUiLG1hbnVhbENv''@;'; put 'put ''bHVtbk1vdmU6Im1hbnVhbENvbHVtbk1vdmUiLG1hbnVhbENvbHVtblJlc2l6ZToibWFudWFsQ29sdW1uUmVzaXplIixtYW51YWxSb3dNb3ZlOiJtYW51YWxSb3dNb3ZlIixtYW51YWxSb3dSZXNpemU6Im1hbnVhbFJvd1Jlc2l6ZSIsbWF4Q29sczoibWF4Q29scyIsbWF4Um93czoibWF4Um93''@;'; put 'put ''cyIsbWVyZ2VDZWxsczoibWVyZ2VDZWxscyIsbWluQ29sczoibWluQ29scyIsbWluUm93czoibWluUm93cyIsbWluU3BhcmVDb2xzOiJtaW5TcGFyZUNvbHMiLG1pblNwYXJlUm93czoibWluU3BhcmVSb3dzIixtdWx0aUNvbHVtblNvcnRpbmc6Im11bHRpQ29sdW1uU29ydGluZyIsbmVzdGVk''@;'; put 'put ''SGVhZGVyczoibmVzdGVkSGVhZGVycyIsbmVzdGVkUm93czoibmVzdGVkUm93cyIsbm9Xb3JkV3JhcENsYXNzTmFtZToibm9Xb3JkV3JhcENsYXNzTmFtZSIsbnVtZXJpY0Zvcm1hdDoibnVtZXJpY0Zvcm1hdCIsb2JzZXJ2ZURPTVZpc2liaWxpdHk6Im9ic2VydmVET01WaXNpYmlsaXR5Iixv''@;'; put 'put ''dXRzaWRlQ2xpY2tEZXNlbGVjdHM6Im91dHNpZGVDbGlja0Rlc2VsZWN0cyIscGVyc2lzdGVudFN0YXRlOiJwZXJzaXN0ZW50U3RhdGUiLHBsYWNlaG9sZGVyOiJwbGFjZWhvbGRlciIscGxhY2Vob2xkZXJDZWxsQ2xhc3NOYW1lOiJwbGFjZWhvbGRlckNlbGxDbGFzc05hbWUiLHByZXZlbnRP''@;'; put 'put ''dmVyZmxvdzoicHJldmVudE92ZXJmbG93IixwcmV2ZW50V2hlZWw6InByZXZlbnRXaGVlbCIscmVhZE9ubHk6InJlYWRPbmx5IixyZWFkT25seUNlbGxDbGFzc05hbWU6InJlYWRPbmx5Q2VsbENsYXNzTmFtZSIscmVuZGVyQWxsUm93czoicmVuZGVyQWxsUm93cyIscmVuZGVyZXI6InJlbmRl''@;'; put 'put ''cmVyIixyb3dIZWFkZXJzOiJyb3dIZWFkZXJzIixyb3dIZWFkZXJXaWR0aDoicm93SGVhZGVyV2lkdGgiLHJvd0hlaWdodHM6InJvd0hlaWdodHMiLHNlYXJjaDoic2VhcmNoIixzZWxlY3Rpb25Nb2RlOiJzZWxlY3Rpb25Nb2RlIixzZWxlY3RPcHRpb25zOiJzZWxlY3RPcHRpb25zIixza2lw''@;'; put 'put ''Q29sdW1uT25QYXN0ZToic2tpcENvbHVtbk9uUGFzdGUiLHNraXBSb3dPblBhc3RlOiJza2lwUm93T25QYXN0ZSIsc29ydEJ5UmVsZXZhbmNlOiJzb3J0QnlSZWxldmFuY2UiLHNvdXJjZToic291cmNlIixzdGFydENvbHM6InN0YXJ0Q29scyIsc3RhcnRSb3dzOiJzdGFydFJvd3MiLHN0cmV0''@;'; put 'put ''Y2hIOiJzdHJldGNoSCIsc3RyaWN0OiJzdHJpY3QiLHRhYmxlQ2xhc3NOYW1lOiJ0YWJsZUNsYXNzTmFtZSIsdGFiTW92ZXM6InRhYk1vdmVzIix0aXRsZToidGl0bGUiLHRyaW1Ecm9wZG93bjoidHJpbURyb3Bkb3duIix0cmltUm93czoidHJpbVJvd3MiLHRyaW1XaGl0ZXNwYWNlOiJ0cmlt''@;'; put 'put ''V2hpdGVzcGFjZSIsdHlwZToidHlwZSIsdW5jaGVja2VkVGVtcGxhdGU6InVuY2hlY2tlZFRlbXBsYXRlIix1bmRvOiJ1bmRvIix2YWxpZGF0b3I6InZhbGlkYXRvciIsdmlld3BvcnRDb2x1bW5SZW5kZXJpbmdPZmZzZXQ6InZpZXdwb3J0Q29sdW1uUmVuZGVyaW5nT2Zmc2V0Iix2aWV3cG9y''@;'; put 'put ''dFJvd1JlbmRlcmluZ09mZnNldDoidmlld3BvcnRSb3dSZW5kZXJpbmdPZmZzZXQiLHZpc2libGVSb3dzOiJ2aXNpYmxlUm93cyIsd2lkdGg6IndpZHRoIix3b3JkV3JhcDoid29yZFdyYXAiLGFmdGVyQWRkQ2hpbGQ6ImFmdGVyQWRkQ2hpbGQiLGFmdGVyQXV0b2ZpbGw6ImFmdGVyQXV0b2Zp''@;'; put 'put ''bGwiLGFmdGVyQmVnaW5FZGl0aW5nOiJhZnRlckJlZ2luRWRpdGluZyIsYWZ0ZXJDZWxsTWV0YVJlc2V0OiJhZnRlckNlbGxNZXRhUmVzZXQiLGFmdGVyQ2hhbmdlOiJhZnRlckNoYW5nZSIsYWZ0ZXJDaGFuZ2VzT2JzZXJ2ZWQ6ImFmdGVyQ2hhbmdlc09ic2VydmVkIixhZnRlckNvbHVtbkNv''@;'; put 'put ''bGxhcHNlOiJhZnRlckNvbHVtbkNvbGxhcHNlIixhZnRlckNvbHVtbkV4cGFuZDoiYWZ0ZXJDb2x1bW5FeHBhbmQiLGFmdGVyQ29sdW1uTW92ZToiYWZ0ZXJDb2x1bW5Nb3ZlIixhZnRlckNvbHVtblJlc2l6ZToiYWZ0ZXJDb2x1bW5SZXNpemUiLGFmdGVyQ29sdW1uU29ydDoiYWZ0ZXJDb2x1''@;'; put 'put ''bW5Tb3J0IixhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnM6ImFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsYWZ0ZXJDb250ZXh0TWVudUhpZGU6ImFmdGVyQ29udGV4dE1lbnVIaWRlIixhZnRlckNvbnRleHRNZW51U2hvdzoiYWZ0ZXJDb250ZXh0TWVudVNob3ciLGFmdGVy''@;'; put 'put ''Q29weToiYWZ0ZXJDb3B5IixhZnRlckNvcHlMaW1pdDoiYWZ0ZXJDb3B5TGltaXQiLGFmdGVyQ3JlYXRlQ29sOiJhZnRlckNyZWF0ZUNvbCIsYWZ0ZXJDcmVhdGVSb3c6ImFmdGVyQ3JlYXRlUm93IixhZnRlckN1dDoiYWZ0ZXJDdXQiLGFmdGVyRGVzZWxlY3Q6ImFmdGVyRGVzZWxlY3QiLGFm''@;'; put 'put ''dGVyRGVzdHJveToiYWZ0ZXJEZXN0cm95IixhZnRlckRldGFjaENoaWxkOiJhZnRlckRldGFjaENoaWxkIixhZnRlckRvY3VtZW50S2V5RG93bjoiYWZ0ZXJEb2N1bWVudEtleURvd24iLGFmdGVyRHJhd1NlbGVjdGlvbjoiYWZ0ZXJEcmF3U2VsZWN0aW9uIixhZnRlckRyb3Bkb3duTWVudURl''@;'; put 'put ''ZmF1bHRPcHRpb25zOiJhZnRlckRyb3Bkb3duTWVudURlZmF1bHRPcHRpb25zIixhZnRlckRyb3Bkb3duTWVudUhpZGU6ImFmdGVyRHJvcGRvd25NZW51SGlkZSIsYWZ0ZXJEcm9wZG93bk1lbnVTaG93OiJhZnRlckRyb3Bkb3duTWVudVNob3ciLGFmdGVyRmlsdGVyOiJhZnRlckZpbHRlciIs''@;'; put 'put ''YWZ0ZXJHZXRDZWxsTWV0YToiYWZ0ZXJHZXRDZWxsTWV0YSIsYWZ0ZXJHZXRDb2xIZWFkZXI6ImFmdGVyR2V0Q29sSGVhZGVyIixhZnRlckdldENvbHVtbkhlYWRlclJlbmRlcmVyczoiYWZ0ZXJHZXRDb2x1bW5IZWFkZXJSZW5kZXJlcnMiLGFmdGVyR2V0Um93SGVhZGVyOiJhZnRlckdldFJv''@;'; put 'put ''d0hlYWRlciIsYWZ0ZXJHZXRSb3dIZWFkZXJSZW5kZXJlcnM6ImFmdGVyR2V0Um93SGVhZGVyUmVuZGVyZXJzIixhZnRlckhpZGVDb2x1bW5zOiJhZnRlckhpZGVDb2x1bW5zIixhZnRlckhpZGVSb3dzOiJhZnRlckhpZGVSb3dzIixhZnRlckluaXQ6ImFmdGVySW5pdCIsYWZ0ZXJMYW5ndWFn''@;'; put 'put ''ZUNoYW5nZToiYWZ0ZXJMYW5ndWFnZUNoYW5nZSIsYWZ0ZXJMaXN0ZW46ImFmdGVyTGlzdGVuIixhZnRlckxvYWREYXRhOiJhZnRlckxvYWREYXRhIixhZnRlck1lcmdlQ2VsbHM6ImFmdGVyTWVyZ2VDZWxscyIsYWZ0ZXJNb2RpZnlUcmFuc2Zvcm1FbmQ6ImFmdGVyTW9kaWZ5VHJhbnNmb3Jt''@;'; put 'put ''RW5kIixhZnRlck1vZGlmeVRyYW5zZm9ybVN0YXJ0OiJhZnRlck1vZGlmeVRyYW5zZm9ybVN0YXJ0IixhZnRlck1vbWVudHVtU2Nyb2xsOiJhZnRlck1vbWVudHVtU2Nyb2xsIixhZnRlck9uQ2VsbENvbnRleHRNZW51OiJhZnRlck9uQ2VsbENvbnRleHRNZW51IixhZnRlck9uQ2VsbENvcm5l''@;'; put 'put ''ckRibENsaWNrOiJhZnRlck9uQ2VsbENvcm5lckRibENsaWNrIixhZnRlck9uQ2VsbENvcm5lck1vdXNlRG93bjoiYWZ0ZXJPbkNlbGxDb3JuZXJNb3VzZURvd24iLGFmdGVyT25DZWxsTW91c2VEb3duOiJhZnRlck9uQ2VsbE1vdXNlRG93biIsYWZ0ZXJPbkNlbGxNb3VzZU91dDoiYWZ0ZXJP''@;'; put 'put ''bkNlbGxNb3VzZU91dCIsYWZ0ZXJPbkNlbGxNb3VzZU92ZXI6ImFmdGVyT25DZWxsTW91c2VPdmVyIixhZnRlck9uQ2VsbE1vdXNlVXA6ImFmdGVyT25DZWxsTW91c2VVcCIsYWZ0ZXJQYXN0ZToiYWZ0ZXJQYXN0ZSIsYWZ0ZXJQbHVnaW5zSW5pdGlhbGl6ZWQ6ImFmdGVyUGx1Z2luc0luaXRp''@;'; put 'put ''YWxpemVkIixhZnRlclJlZG86ImFmdGVyUmVkbyIsYWZ0ZXJSZWRvU3RhY2tDaGFuZ2U6ImFmdGVyUmVkb1N0YWNrQ2hhbmdlIixhZnRlclJlZnJlc2hEaW1lbnNpb25zOiJhZnRlclJlZnJlc2hEaW1lbnNpb25zIixhZnRlclJlbW92ZUNlbGxNZXRhOiJhZnRlclJlbW92ZUNlbGxNZXRhIixh''@;'; put 'put ''ZnRlclJlbW92ZUNvbDoiYWZ0ZXJSZW1vdmVDb2wiLGFmdGVyUmVtb3ZlUm93OiJhZnRlclJlbW92ZVJvdyIsYWZ0ZXJSZW5kZXI6ImFmdGVyUmVuZGVyIixhZnRlclJlbmRlcmVyOiJhZnRlclJlbmRlcmVyIixhZnRlclJvd01vdmU6ImFmdGVyUm93TW92ZSIsYWZ0ZXJSb3dSZXNpemU6ImFm''@;'; put 'put ''dGVyUm93UmVzaXplIixhZnRlclNjcm9sbEhvcml6b250YWxseToiYWZ0ZXJTY3JvbGxIb3Jpem9udGFsbHkiLGFmdGVyU2Nyb2xsVmVydGljYWxseToiYWZ0ZXJTY3JvbGxWZXJ0aWNhbGx5IixhZnRlclNlbGVjdGlvbjoiYWZ0ZXJTZWxlY3Rpb24iLGFmdGVyU2VsZWN0aW9uQnlQcm9wOiJh''@;'; put 'put ''ZnRlclNlbGVjdGlvbkJ5UHJvcCIsYWZ0ZXJTZWxlY3Rpb25FbmQ6ImFmdGVyU2VsZWN0aW9uRW5kIixhZnRlclNlbGVjdGlvbkVuZEJ5UHJvcDoiYWZ0ZXJTZWxlY3Rpb25FbmRCeVByb3AiLGFmdGVyU2V0Q2VsbE1ldGE6ImFmdGVyU2V0Q2VsbE1ldGEiLGFmdGVyU2V0RGF0YUF0Q2VsbDoi''@;'; put 'put ''YWZ0ZXJTZXREYXRhQXRDZWxsIixhZnRlclNldERhdGFBdFJvd1Byb3A6ImFmdGVyU2V0RGF0YUF0Um93UHJvcCIsYWZ0ZXJTZXRTb3VyY2VEYXRhQXRDZWxsOiJhZnRlclNldFNvdXJjZURhdGFBdENlbGwiLGFmdGVyVHJpbVJvdzoiYWZ0ZXJUcmltUm93IixhZnRlclVuZG86ImFmdGVyVW5k''@;'; put 'put ''byIsYWZ0ZXJVbmRvU3RhY2tDaGFuZ2U6ImFmdGVyVW5kb1N0YWNrQ2hhbmdlIixhZnRlclVuaGlkZUNvbHVtbnM6ImFmdGVyVW5oaWRlQ29sdW1ucyIsYWZ0ZXJVbmhpZGVSb3dzOiJhZnRlclVuaGlkZVJvd3MiLGFmdGVyVW5saXN0ZW46ImFmdGVyVW5saXN0ZW4iLGFmdGVyVW5tZXJnZUNl''@;'; put 'put ''bGxzOiJhZnRlclVubWVyZ2VDZWxscyIsYWZ0ZXJVbnRyaW1Sb3c6ImFmdGVyVW50cmltUm93IixhZnRlclVwZGF0ZVNldHRpbmdzOiJhZnRlclVwZGF0ZVNldHRpbmdzIixhZnRlclZhbGlkYXRlOiJhZnRlclZhbGlkYXRlIixhZnRlclZpZXdwb3J0Q29sdW1uQ2FsY3VsYXRvck92ZXJyaWRl''@;'; put 'put ''OiJhZnRlclZpZXdwb3J0Q29sdW1uQ2FsY3VsYXRvck92ZXJyaWRlIixhZnRlclZpZXdwb3J0Um93Q2FsY3VsYXRvck92ZXJyaWRlOiJhZnRlclZpZXdwb3J0Um93Q2FsY3VsYXRvck92ZXJyaWRlIixhZnRlclZpZXdSZW5kZXI6ImFmdGVyVmlld1JlbmRlciIsYmVmb3JlQWRkQ2hpbGQ6ImJl''@;'; put 'put ''Zm9yZUFkZENoaWxkIixiZWZvcmVBdXRvZmlsbDoiYmVmb3JlQXV0b2ZpbGwiLGJlZm9yZUF1dG9maWxsSW5zaWRlUG9wdWxhdGU6ImJlZm9yZUF1dG9maWxsSW5zaWRlUG9wdWxhdGUiLGJlZm9yZUNlbGxBbGlnbm1lbnQ6ImJlZm9yZUNlbGxBbGlnbm1lbnQiLGJlZm9yZUNoYW5nZToiYmVm''@;'; put 'put ''b3JlQ2hhbmdlIixiZWZvcmVDaGFuZ2VSZW5kZXI6ImJlZm9yZUNoYW5nZVJlbmRlciIsYmVmb3JlQ29sdW1uQ29sbGFwc2U6ImJlZm9yZUNvbHVtbkNvbGxhcHNlIixiZWZvcmVDb2x1bW5FeHBhbmQ6ImJlZm9yZUNvbHVtbkV4cGFuZCIsYmVmb3JlQ29sdW1uTW92ZToiYmVmb3JlQ29sdW1u''@;'; put 'put ''TW92ZSIsYmVmb3JlQ29sdW1uUmVzaXplOiJiZWZvcmVDb2x1bW5SZXNpemUiLGJlZm9yZUNvbHVtblNvcnQ6ImJlZm9yZUNvbHVtblNvcnQiLGJlZm9yZUNvbnRleHRNZW51U2V0SXRlbXM6ImJlZm9yZUNvbnRleHRNZW51U2V0SXRlbXMiLGJlZm9yZUNvbnRleHRNZW51U2hvdzoiYmVmb3Jl''@;'; put 'put ''Q29udGV4dE1lbnVTaG93IixiZWZvcmVDb3B5OiJiZWZvcmVDb3B5IixiZWZvcmVDcmVhdGVDb2w6ImJlZm9yZUNyZWF0ZUNvbCIsYmVmb3JlQ3JlYXRlUm93OiJiZWZvcmVDcmVhdGVSb3ciLGJlZm9yZUN1dDoiYmVmb3JlQ3V0IixiZWZvcmVEZXRhY2hDaGlsZDoiYmVmb3JlRGV0YWNoQ2hp''@;'; put 'put ''bGQiLGJlZm9yZURyYXdCb3JkZXJzOiJiZWZvcmVEcmF3Qm9yZGVycyIsYmVmb3JlRHJvcGRvd25NZW51U2V0SXRlbXM6ImJlZm9yZURyb3Bkb3duTWVudVNldEl0ZW1zIixiZWZvcmVEcm9wZG93bk1lbnVTaG93OiJiZWZvcmVEcm9wZG93bk1lbnVTaG93IixiZWZvcmVGaWx0ZXI6ImJlZm9y''@;'; put 'put ''ZUZpbHRlciIsYmVmb3JlR2V0Q2VsbE1ldGE6ImJlZm9yZUdldENlbGxNZXRhIixiZWZvcmVIaWRlQ29sdW1uczoiYmVmb3JlSGlkZUNvbHVtbnMiLGJlZm9yZUhpZGVSb3dzOiJiZWZvcmVIaWRlUm93cyIsYmVmb3JlSW5pdDoiYmVmb3JlSW5pdCIsYmVmb3JlSW5pdFdhbGtvbnRhYmxlOiJi''@;'; put 'put ''ZWZvcmVJbml0V2Fsa29udGFibGUiLGJlZm9yZUtleURvd246ImJlZm9yZUtleURvd24iLGJlZm9yZUxhbmd1YWdlQ2hhbmdlOiJiZWZvcmVMYW5ndWFnZUNoYW5nZSIsYmVmb3JlTG9hZERhdGE6ImJlZm9yZUxvYWREYXRhIixiZWZvcmVNZXJnZUNlbGxzOiJiZWZvcmVNZXJnZUNlbGxzIixi''@;'; put 'put ''ZWZvcmVPbkNlbGxDb250ZXh0TWVudToiYmVmb3JlT25DZWxsQ29udGV4dE1lbnUiLGJlZm9yZU9uQ2VsbE1vdXNlRG93bjoiYmVmb3JlT25DZWxsTW91c2VEb3duIixiZWZvcmVPbkNlbGxNb3VzZU91dDoiYmVmb3JlT25DZWxsTW91c2VPdXQiLGJlZm9yZU9uQ2VsbE1vdXNlT3ZlcjoiYmVm''@;'; put 'put ''b3JlT25DZWxsTW91c2VPdmVyIixiZWZvcmVPbkNlbGxNb3VzZVVwOiJiZWZvcmVPbkNlbGxNb3VzZVVwIixiZWZvcmVQYXN0ZToiYmVmb3JlUGFzdGUiLGJlZm9yZVJlZG86ImJlZm9yZVJlZG8iLGJlZm9yZVJlZG9TdGFja0NoYW5nZToiYmVmb3JlUmVkb1N0YWNrQ2hhbmdlIixiZWZvcmVS''@;'; put 'put ''ZWZyZXNoRGltZW5zaW9uczoiYmVmb3JlUmVmcmVzaERpbWVuc2lvbnMiLGJlZm9yZVJlbW92ZUNlbGxDbGFzc05hbWVzOiJiZWZvcmVSZW1vdmVDZWxsQ2xhc3NOYW1lcyIsYmVmb3JlUmVtb3ZlQ2VsbE1ldGE6ImJlZm9yZVJlbW92ZUNlbGxNZXRhIixiZWZvcmVSZW1vdmVDb2w6ImJlZm9y''@;'; put 'put ''ZVJlbW92ZUNvbCIsYmVmb3JlUmVtb3ZlUm93OiJiZWZvcmVSZW1vdmVSb3ciLGJlZm9yZVJlbmRlcjoiYmVmb3JlUmVuZGVyIixiZWZvcmVSZW5kZXJlcjoiYmVmb3JlUmVuZGVyZXIiLGJlZm9yZVJvd01vdmU6ImJlZm9yZVJvd01vdmUiLGJlZm9yZVJvd1Jlc2l6ZToiYmVmb3JlUm93UmVz''@;'; put 'put ''aXplIixiZWZvcmVTZXRDZWxsTWV0YToiYmVmb3JlU2V0Q2VsbE1ldGEiLGJlZm9yZVNldFJhbmdlRW5kOiJiZWZvcmVTZXRSYW5nZUVuZCIsYmVmb3JlU2V0UmFuZ2VTdGFydDoiYmVmb3JlU2V0UmFuZ2VTdGFydCIsYmVmb3JlU2V0UmFuZ2VTdGFydE9ubHk6ImJlZm9yZVNldFJhbmdlU3Rh''@;'; put 'put ''cnRPbmx5IixiZWZvcmVTdHJldGNoaW5nQ29sdW1uV2lkdGg6ImJlZm9yZVN0cmV0Y2hpbmdDb2x1bW5XaWR0aCIsYmVmb3JlVG91Y2hTY3JvbGw6ImJlZm9yZVRvdWNoU2Nyb2xsIixiZWZvcmVUcmltUm93OiJiZWZvcmVUcmltUm93IixiZWZvcmVVbmRvOiJiZWZvcmVVbmRvIixiZWZvcmVV''@;'; put 'put ''bmRvU3RhY2tDaGFuZ2U6ImJlZm9yZVVuZG9TdGFja0NoYW5nZSIsYmVmb3JlVW5oaWRlQ29sdW1uczoiYmVmb3JlVW5oaWRlQ29sdW1ucyIsYmVmb3JlVW5oaWRlUm93czoiYmVmb3JlVW5oaWRlUm93cyIsYmVmb3JlVW5tZXJnZUNlbGxzOiJiZWZvcmVVbm1lcmdlQ2VsbHMiLGJlZm9yZVVu''@;'; put 'put ''dHJpbVJvdzoiYmVmb3JlVW50cmltUm93IixiZWZvcmVWYWxpZGF0ZToiYmVmb3JlVmFsaWRhdGUiLGJlZm9yZVZhbHVlUmVuZGVyOiJiZWZvcmVWYWx1ZVJlbmRlciIsYmVmb3JlVmlld1JlbmRlcjoiYmVmb3JlVmlld1JlbmRlciIsY29uc3RydWN0OiJjb25zdHJ1Y3QiLGluaXQ6ImluaXQi''@;'; put 'put ''LG1vZGlmeUF1dG9Db2x1bW5TaXplU2VlZDoibW9kaWZ5QXV0b0NvbHVtblNpemVTZWVkIixtb2RpZnlBdXRvZmlsbFJhbmdlOiJtb2RpZnlBdXRvZmlsbFJhbmdlIixtb2RpZnlDb2xIZWFkZXI6Im1vZGlmeUNvbEhlYWRlciIsbW9kaWZ5Q29sdW1uSGVhZGVySGVpZ2h0OiJtb2RpZnlDb2x1''@;'; put 'put ''bW5IZWFkZXJIZWlnaHQiLG1vZGlmeUNvbFdpZHRoOiJtb2RpZnlDb2xXaWR0aCIsbW9kaWZ5Q29weWFibGVSYW5nZToibW9kaWZ5Q29weWFibGVSYW5nZSIsbW9kaWZ5RGF0YToibW9kaWZ5RGF0YSIsbW9kaWZ5R2V0Q2VsbENvb3JkczoibW9kaWZ5R2V0Q2VsbENvb3JkcyIsbW9kaWZ5Um93''@;'; put 'put ''RGF0YToibW9kaWZ5Um93RGF0YSIsbW9kaWZ5Um93SGVhZGVyOiJtb2RpZnlSb3dIZWFkZXIiLG1vZGlmeVJvd0hlYWRlcldpZHRoOiJtb2RpZnlSb3dIZWFkZXJXaWR0aCIsbW9kaWZ5Um93SGVpZ2h0OiJtb2RpZnlSb3dIZWlnaHQiLG1vZGlmeVNvdXJjZURhdGE6Im1vZGlmeVNvdXJjZURh''@;'; put 'put ''dGEiLG1vZGlmeVRyYW5zZm9ybUVuZDoibW9kaWZ5VHJhbnNmb3JtRW5kIixtb2RpZnlUcmFuc2Zvcm1TdGFydDoibW9kaWZ5VHJhbnNmb3JtU3RhcnQiLHBlcnNpc3RlbnRTdGF0ZUxvYWQ6InBlcnNpc3RlbnRTdGF0ZUxvYWQiLHBlcnNpc3RlbnRTdGF0ZVJlc2V0OiJwZXJzaXN0ZW50U3Rh''@;'; put 'put ''dGVSZXNldCIscGVyc2lzdGVudFN0YXRlU2F2ZToicGVyc2lzdGVudFN0YXRlU2F2ZSJ9LGZlYXR1cmVzOltobyhbU08sUVNlXSksRDJdLGRlY2xzOjIsdmFyczoxLGNvbnN0czpbWzMsImlkIl0sWyJjb250YWluZXIiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJkNyKDAsImRp''@;'; put 'put ''diIsMCwxKSwyJmgmJlR0KCJpZCIsdi5ob3RJZCl9LGVuY2Fwc3VsYXRpb246Mn0pLGR9KSgpLGQ2ZT0oKCk9PntjbGFzcyBke3N0YXRpYyBmb3JSb290KCl7cmV0dXJue25nTW9kdWxlOmQscHJvdmlkZXJzOltTT119fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5l''@;'; put 'put ''dyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHt9KSxkLnZlcnNpb249IjEyLjEuMiIsZH0pKCk7ZnVuY3Rpb24gaGV0KGQsZyl7MSZkJiYobnQoMCwic3BhbiIsNiksWXQoMSwiIExvYWRpbmcuLi4gIiksb3QoKSl9ZnVuY3Rpb24gZGV0KGQsZyl7MSZk''@;'; put 'put ''JiYobnQoMCwiZGl2IikoMSwiaDMiKSxZdCgyLCJMb2FkaW5nIHN1Ym1pdHRlZCB0YWJsZSIpLG90KCkoKSl9ZnVuY3Rpb24gcGV0KGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2Iiw0KSxybigxLGhldCwyLDAsInNwYW4iLDUpLHJuKDIsZGV0LDMsMCwiZGl2IiwzKSxvdCgpKSwyJmQpe2NvbnN0''@;'; put 'put ''IGg9UXQoKTt1dCgxKSxUdCgibmdJZiIsIWgubG9hZGVkKSx1dCgxKSxUdCgibmdJZiIsIWgubG9hZGVkKX19Y29uc3QgZ2V0PWZ1bmN0aW9uKGQsZyl7cmV0dXJue3JlamVjdGVkOmQsYWNjZXB0ZWQ6Z319O2Z1bmN0aW9uIG1ldChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImRp''@;'; put 'put ''diIpKDEsImRpdiIsNykoMiwiZGl2Iiw4KSgzLCJoNCIsOSksWXQoNCwiU3RhZ2VkIERhdGEiKSxvdCgpKCkoKSxudCg1LCJkaXYiLDEwKSg2LCJkaXYiLDExKSg3LCJkaXYiLDEyKSg4LCJkaXYiLDgpLFl0KDksIkJhc2ljIFN1Ym1pdHRlZCBEZXRhaWxzIiksb3QoKSgpLG50KDEwLCJkaXYi''@;'; put 'put ''KSgxMSwic3BhbiIpLFl0KDEyLCJUYWJsZSBJZDoiKSxvdCgpLG50KDEzLCJzdHJvbmciKSgxNCwic3BhbiIpLFl0KDE1KSxvdCgpKCkoKSxudCgxNiwiZGl2IikoMTcsInNwYW4iKSxZdCgxOCwiQmFzZSBUYWJsZToiKSxvdCgpLG50KDE5LCJhIiwxMyksR24oImNsaWNrIixmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBpdChoKSxhKFF0KCkudmlld2VyVGFibGVTY3JlZW4oKSl9KSxZdCgyMCksb3QoKSgpLG50KDIxLCJkaXYiKSgyMiwic3BhbiIpLFl0KDIzLCJTdWJtaXQgRGF0ZToiKSxvdCgpLG50KDI0LCJzcGFuIiwxNCksWXQoMjUpLG90KCkoKSxudCgyNiwiZGl2IikoMjcsInNwYW4iKSxZ''@;'; put 'put ''dCgyOCwiUmV2aWV3IFN0YXR1czoiKSxvdCgpLG50KDI5LCJzcGFuIiwxNSksWXQoMzApLG90KCkoKSgpLG50KDMxLCJkaXYiLDE2KSgzMiwiZGl2IiwxMikoMzMsImRpdiIsOCksWXQoMzQsIkFjdGlvbnMiKSxvdCgpKCksbnQoMzUsImRpdiIsMTcpKDM2LCJkaXYiLDE4KSgzNywiYnV0dG9u''@;'; put 'put ''IiwxOSksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkudmlld2VyVGFibGVTY3JlZW4oKSl9KSxZdCgzOCwiIEdvIHRvIGJhc2UgdGFibGUgc2NyZWVuICIpLG90KCksbnQoMzksImJ1dHRvbiIsMjApLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCks''@;'; put 'put ''YShRdCgpLmFwcHJvdmVUYWJsZVNjcmVlbigpKX0pLFl0KDQwLCIgR28gdG8gYXBwcm92YWxzIHNjcmVlbiAiKSxvdCgpLG50KDQxLCJidXR0b24iLDIxKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoKS5nb0JhY2soKSl9KSxZdCg0MiwiIEdvIGJhY2sgdG8gZWRp''@;'; put 'put ''dG9yICIpLG90KCksbnQoNDMsImJ1dHRvbiIsMjIpLEduKCJjbGljayIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KCk7cmV0dXJuIGEoeS5kb3dubG9hZChudWxsPT15LnRhYmxlRGV0YWlscz9udWxsOnkudGFibGVEZXRhaWxzLlRBQkxFX0lEKSl9KSxDcig0NCwiY2xyLWljb24iLDIz''@;'; put 'put ''KSxvdCgpKCkoKSgpKCksbnQoNDUsImRpdiIsMjQpLENyKDQ2LCJob3QtdGFibGUiLDI1KSxvdCgpLENyKDQ3LCJkaXYiLDI2KSxvdCgpfWlmKDImZCl7Y29uc3QgaD1RdCgpO3V0KDE1KSxKaSgiICIsbnVsbD09aC50YWJsZURldGFpbHM/bnVsbDpoLnRhYmxlRGV0YWlscy5UQUJMRV9JRCwi''@;'; put 'put ''IiksdXQoNSksSmkoIiAiLG51bGw9PWgudGFibGVEZXRhaWxzP251bGw6aC50YWJsZURldGFpbHMuQkFTRV9UQUJMRSwiICIpLHV0KDUpLEppKCIgIixudWxsPT1oLnRhYmxlRGV0YWlscz9udWxsOmgudGFibGVEZXRhaWxzLlNVQk1JVFRFRF9PTl9EVFRNLCIgIiksdXQoNCksVHQoIm5nQ2xh''@;'; put 'put ''c3MiLGozKDEzLGdldCwiUkVKRUNURUQiPT09KG51bGw9PWgudGFibGVEZXRhaWxzP251bGw6aC50YWJsZURldGFpbHMuUkVWSUVXX1NUQVRVU19JRCksIkFQUFJPVkVEIj09PShudWxsPT1oLnRhYmxlRGV0YWlscz9udWxsOmgudGFibGVEZXRhaWxzLlJFVklFV19TVEFUVVNfSUQpKSksdXQo''@;'; put 'put ''MSksSmkoIiAiLG51bGw9PWgudGFibGVEZXRhaWxzP251bGw6aC50YWJsZURldGFpbHMuUkVWSUVXX1NUQVRVU19JRCwiICIpLHV0KDkpLFR0KCJkaXNhYmxlZCIsIkFQUFJPVkVEIj09PShudWxsPT1oLnRhYmxlRGV0YWlscz9udWxsOmgudGFibGVEZXRhaWxzLlJFVklFV19TVEFUVVNfSUQp''@;'; put 'put ''fHwiUkVKRUNURUQiPT09KG51bGw9PWgudGFibGVEZXRhaWxzP251bGw6aC50YWJsZURldGFpbHMuUkVWSUVXX1NUQVRVU19JRCkpLHV0KDcpLFR0KCJkYXRhIixoLmhvdFRhYmxlLmRhdGEpKCJjb2xIZWFkZXJzIixoLmhvdFRhYmxlLmNvbEhlYWRlcnMpKCJjb2x1bW5zIixoLmhvdFRhYmxl''@;'; put 'put ''LmNvbHVtbnMpKCJtYXhSb3dzIixoLmhvdFRhYmxlLm1heFJvd3MpKCJoZWlnaHQiLGguaG90VGFibGUuaGVpZ2h0KSgibGljZW5zZUtleSIsaC5ob3RUYWJsZS5saWNlbnNlS2V5KSgiY2VsbHMiLGguaG90VGFibGUuY2VsbHMpfX1jb25zdCB2ZXQ9W3twYXRoOiI6dGFibGVJZCIsY29tcG9u''@;'; put 'put ''ZW50OigoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLFope3RoaXMuYXBwU2VydmljZT1oLHRoaXMuc2FzU3RvcmVTZXJ2aWNlPXYsdGhpcy5ldmVudFNlcnZpY2U9eSx0aGlzLnJvdXRlPUMsdGhpcy5yb3V0ZXI9SSx0aGlzLnNhc1NlcnZpY2U9Wix0aGlzLmxvYWRlZD0hMSx0''@;'; put 'put ''aGlzLmhvdFRhYmxlPXtkYXRhOltdLGNvbEhlYWRlcnM6W10sY29sdW1uczpbXSxoZWlnaHQ6NTAwLHNldHRpbmdzOnt9LGxpY2Vuc2VLZXk6dm9pZCAwLG1heFJvd3M6dGhpcy5hcHBTZXJ2aWNlLmRlbW9MaW1pdHMucm93c19hbGxvd2VkfHwxLzB9fXN1Ym1pdHRlZFRhYmxlU2NyZWVuKCl7''@;'; put 'put ''dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvc3RhZ2UvIit0aGlzLnRhYmxlX2lkKX1hcHByb3ZlVGFibGVTY3JlZW4oKXt0aGlzLnJvdXRlLm5hdmlnYXRlQnlVcmwoIi9hcHByb3ZlL2FwcHJvdmVEZXQvIit0aGlzLnRhYmxlX2lkKX12aWV3ZXJUYWJsZVNjcmVlbigpe3RoaXMucm91dGUu''@;'; put 'put ''bmF2aWdhdGVCeVVybCgiL3ZpZXcvZGF0YS8iK3RoaXMudGFibGVEZXRhaWxzLkJBU0VfVEFCTEUpfWdvQmFjaygpe3RoaXMucm91dGUubmF2aWdhdGVCeVVybCgiL2VkaXRvci8iK3RoaXMudGFibGVEZXRhaWxzLkJBU0VfVEFCTEUpfWRvd25sb2FkKGgpe2xldCB2PXRoaXMuc2FzU2Vydmlj''@;'; put 'put ''ZS5nZXRTYXNqc0NvbmZpZygpLHk9di5zZXJ2ZXJVcmwsQz12LmFwcExvYyxJPXRoaXMuc2FzU2VydmljZS5nZXRFeGVjdXRpb25QYXRoKCk7d2luZG93Lm9wZW4oeStJKyIvP19wcm9ncmFtPSIrQysiL3NlcnZpY2VzL2F1ZGl0b3JzL2dldGF1ZGl0ZmlsZSZ0YWJsZT0iK2gpfW5nT25Jbml0''@;'; put 'put ''KCl7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtpZih0aGlzLmFwcFNlcnZpY2UuaG90X2xpY2Vuc2Vfa2V5LnN1YnNjcmliZShoPT57dGhpcy5ob3RUYWJsZS5saWNlbnNlS2V5PWh9KSx2b2lkIDAhPT10aGlzLnJvdXRlci5zbmFwc2hvdC5wYXJhbXMudGFibGVJ''@;'; put 'put ''ZCl7dGhpcy50YWJsZV9pZD10aGlzLnJvdXRlci5zbmFwc2hvdC5wYXJhbXMudGFibGVJZDt0cnl7bGV0IGg9eWllbGQgdGhpcy5zYXNTdG9yZVNlcnZpY2UuZ2V0Q2hhbmdlSW5mbyh0aGlzLnRhYmxlX2lkKTtpZighaHx8IWguanNwYXJhbXMpdGhyb3cgbmV3IEVycm9yKCJqc3BhcmFtcyBw''@;'; put 'put ''cm9wZXJ0eSBpcyBtaXNzaW5nIGZyb20gcmVzcG9uc2UuIik7dGhpcy50YWJsZURldGFpbHM9aC5qc3BhcmFtc1swXX1jYXRjaChoKXtsZXQgdj17fTtoLk1FU1NBR0U/dj1oOnYuTUVTU0FHRT1oLHRoaXMuZXZlbnRTZXJ2aWNlLmNhdGNoUmVzcG9uc2VFcnJvcigicHVibGljL2dldGNoYW5n''@;'; put 'put ''ZWluZm8iLHYpfXRyeXtsZXQgaD15aWVsZCB0aGlzLnNhc1N0b3JlU2VydmljZS5vcGVuVGFibGUodGhpcy50YWJsZV9pZCk7aWYoIWh8fCFoLnN0YWdldGFibGUpdGhyb3cgbmV3IEVycm9yKCJTdGFnZXRhYmxlIHByb3BlcnR5IGlzIG1pc3NpbmcgZnJvbSByZXNwb25zZS4iKTtsZXQgdj1o''@;'; put 'put ''LnN0YWdldGFibGVbMF0seT1bXSxDPVtdO2ZvcihsZXQgWiBpbiB2KXYmJnkucHVzaChaKTtmb3IobGV0IFo9MDtaPHkubGVuZ3RoO1orKylDLnB1c2goe2RhdGE6eVtaXX0pO2xldCBJPWZ1bmN0aW9uKCl7cmV0dXJue3JlYWRPbmx5OiEwfX07dGhpcy5ob3RUYWJsZS5kYXRhPWguc3RhZ2V0''@;'; put 'put ''YWJsZSx0aGlzLmhvdFRhYmxlLmNvbEhlYWRlcnM9eSx0aGlzLmhvdFRhYmxlLmNvbHVtbnM9Qyx0aGlzLmhvdFRhYmxlLmNlbGxzPUksdGhpcy5sb2FkZWQ9ITAsdGhpcy5zZXRGb2N1cygpfWNhdGNoKGgpe2xldCB2PXt9O2guTUVTU0FHRXx8KHYuTUVTU0FHRT1oKSx0aGlzLmV2ZW50U2Vy''@;'; put 'put ''dmljZS5jYXRjaFJlc3BvbnNlRXJyb3IoImF1ZGl0b3JzL2dldHN0YWdldGFibGUiLHYpLHRoaXMubG9hZGVkPSExfX19KX1zZXRGb2N1cygpe3NldFRpbWVvdXQoKCk9PntsZXQgaD13aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFwcHJvdmFsLWJ0biIpO2gmJmguZm9jdXMoKX0s''@;'; put 'put ''MjAwKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoUjcpLEt0KGtnKSxLdChtdSksS3QoWmwpLEt0KFB1KSxLdChnMikpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtc3RhZ2UiXV0saG9zdEF0dHJzOlsxLCJjb250''@;'; put 'put ''ZW50LWNvbnRhaW5lciJdLGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWzEsImNvbnRlbnQtYXJlYSJdLFsxLCJjbHItY29sLW1kLTEyIiwiY2FyZCJdLFsiY2xhc3MiLCJoLTgwdmggZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIiw0''@;'; put 'put ''LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMSwiaC04MHZoIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImZsZXgtY29sdW1uIiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWyJjbGFzcyIsInNwaW5uZXIiLDQsIm5nSWYiXSxbMSwic3Bpbm5lciJdLFsibmctaWYiLCJsb2FkZWQiLDEs''@;'; put 'put ''ImNhcmQtaGVhZGVyIl0sWzEsImNhcmQtdGl0bGUiLCJ0ZXh0LWNlbnRlciJdLFsxLCJtdC0wIl0sWyJuZy1pZiIsImxvYWRlZCIsMSwiY2xyLXJvdyJdLFsxLCJjYXJkLWJsb2NrIiwiY2xyLWNvbC1tZC02Il0sWzEsImNhcmQtaGVhZGVyIiwicHktNSJdLFsxLCJiYXNlVGFibGVMaW5rIiwz''@;'; put 'put ''LCJjbGljayJdLFsxLCJtdC0xMCJdLFsxLCJtdC0xMCIsMywibmdDbGFzcyJdLFsxLCJjbHItY29sLW1kLTYiLCJjYXJkLWJsb2NrIl0sWzEsIm10LTIwIl0sWzEsInJvdyJdLFsxLCJidG4iLCJidG4tc20iLCJidG4tb3V0bGluZSIsInRleHQtY2VudGVyIiwibXQtMjAiLDMsImNsaWNrIl0s''@;'; put 'put ''WyJpZCIsImFwcHJvdmFsLWJ0biIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsInRleHQtY2VudGVyIiwibXQtMjAiLDMsImRpc2FibGVkIiwiY2xpY2siXSxbMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWluZm8tb3V0bGluZSIsInRleHQtY2VudGVyIiwibXQtMjAiLDMs''@;'; put 'put ''ImNsaWNrIl0sWzEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzIiwidGV4dC1jZW50ZXIiLCJtdC0yMCIsIm1pbi13LTAiLDMsImNsaWNrIl0sWyJzaGFwZSIsImRvd25sb2FkIl0sWzEsImNhcmQtYmxvY2siXSxbImhvdElkIiwiaG90SW5zdGFuY2UiLCJpZCIsImhvdFRhYmxlIiwic3Ry''@;'; put 'put ''ZXRjaEgiLCJhbGwiLDMsImRhdGEiLCJjb2xIZWFkZXJzIiwiY29sdW1ucyIsIm1heFJvd3MiLCJoZWlnaHQiLCJsaWNlbnNlS2V5IiwiY2VsbHMiXSxbMSwiY2FyZC1mb290ZXIiLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZo''@;'; put 'put ''JiYobnQoMCwiZGl2IiwwKSgxLCJkaXYiLDEpLHJuKDIscGV0LDMsMiwiZGl2IiwyKSxybigzLG1ldCw0OCwxNiwiZGl2IiwzKSxvdCgpKCkpLDImaCYmKHV0KDIpLFR0KCJuZ0lmIiwhdi5sb2FkZWQpLHV0KDEpLFR0KCJuZ0lmIix2LmxvYWRlZCkpfSxkZXBlbmRlbmNpZXM6W2xjLE5vLHds''@;'; put 'put ''LEF0ZV0sc3R5bGVzOlsiLnJlamVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjgzMTI2O2ZvbnQtd2VpZ2h0OjcwMH0uYWNjZXB0ZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMzZmM0MjQ7Zm9udC13ZWlnaHQ6NzAwfS5iYXNlVGFibGVMaW5rW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XXtjdXJzb3I6cG9pbnRlcjttYXJnaW4tdG9wOjEwcHg7Y29sb3I6IzAwN2NiYn0iXX0pLGR9KSgpfV07bGV0IEFldD0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1''@;'; put 'put ''aW5qPWIwKHtpbXBvcnRzOltiYSxuTyxYaC5mb3JDaGlsZCh2ZXQpLGQ2ZS5mb3JSb290KCldfSksZH0pKCk7ZnVuY3Rpb24gcDZlKGQpe3JldHVybihwNmU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0''@;'; put 'put ''dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiB5ZXQoZCxnKXtpZighKGQgaW5zdGFuY2Vv''@;'; put 'put ''ZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBKU2UoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0h''@;'; put 'put ''MCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBNOCgpe3JldHVybiBNOD0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7''@;'; put 'put ''dmFyIHk9YmV0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxNOC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYmV0KGQsZyl7''@;'; put 'put ''Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1BNChkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBnNmUoZCxnKXtyZXR1cm4oZzZlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9u''@;'; put 'put ''KHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24ga2V0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09cDZlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9y''@;'; put 'put ''cyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBNZXQoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3Jl''@;'; put 'put ''dHVybiBkfShkKX1mdW5jdGlvbiBBNChkKXtyZXR1cm4oQTQ9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgWFNlPSJoYW5kc29u''@;'; put 'put ''dGFibGVFZGl0b3IiLG02ZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gX2V0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5''@;'; put 'put ''cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJmc2ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0''@;'; put 'put ''aW9uIENldChkKXt2YXIgZz1mdW5jdGlvbiBFZXQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBC''@;'; put 'put ''b29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1BNChkKTtpZihnKXt2YXIgQz1BNCh0aGlzKS5jb25zdHJ1Y3Rvcjt5''@;'; put 'put ''PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4ga2V0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7cmV0dXJuIHlldCh0aGlzLGgpLGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmdW5jdGlvbiB3ZXQo''@;'; put 'put ''ZCxnLGgpe2cmJkpTZShkLnByb3RvdHlwZSxnKSxoJiZKU2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToib3BlbiIsdmFsdWU6ZnVuY3Rpb24oKXtNOChBNChoLnByb3RvdHlwZSksIm9wZW4iLHRoaXMpLmNhbGwodGhp''@;'; put 'put ''cyksdGhpcy5odEVkaXRvciYmdGhpcy5odEVkaXRvci5kZXN0cm95KCksIm5vbmUiPT09dGhpcy5odENvbnRhaW5lci5zdHlsZS5kaXNwbGF5JiYodGhpcy5odENvbnRhaW5lci5zdHlsZS5kaXNwbGF5PSIiKSx0aGlzLmh0RWRpdG9yPW5ldyB0aGlzLmhvdC5jb25zdHJ1Y3Rvcih0aGlzLmh0''@;'; put 'put ''Q29udGFpbmVyLHRoaXMuaHRPcHRpb25zKSx0aGlzLmh0RWRpdG9yLmluaXQoKSx0aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LnN0eWxlLmRpc3BsYXk9IiIsdGhpcy5jZWxsUHJvcGVydGllcy5zdHJpY3Q/dGhpcy5odEVkaXRvci5zZWxlY3RDZWxsKDAsMCk6dGhpcy5odEVkaXRvci5kZXNl''@;'; put 'put ''bGVjdENlbGwoKSxWWih0aGlzLlRFWFRBUkVBLDAsdGhpcy5URVhUQVJFQS52YWx1ZS5sZW5ndGgpLHRoaXMucmVmcmVzaERpbWVuc2lvbnMoKX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaHRFZGl0b3ImJih0aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LnN0eWxlLmRp''@;'; put 'put ''c3BsYXk9Im5vbmUiKSx0aGlzLnJlbW92ZUhvb2tzQnlLZXkoImJlZm9yZUtleURvd24iKSxNOChBNChoLnByb3RvdHlwZSksImNsb3NlIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToicHJlcGFyZSIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksWix1ZSxfZSl7TTgoQTQoaC5wcm90b3R5cGUpLCJw''@;'; put 'put ''cmVwYXJlIix0aGlzKS5jYWxsKHRoaXMseSxDLEksWix1ZSxfZSk7dmFyIEJlPXRoaXMsTmU9e3N0YXJ0Um93czowLHN0YXJ0Q29sczowLG1pblJvd3M6MCxtaW5Db2xzOjAsY2xhc3NOYW1lOiJsaXN0Ym94Iixjb3B5UGFzdGU6ITEsYXV0b0NvbHVtblNpemU6ITEsYXV0b1Jvd1NpemU6ITEs''@;'; put 'put ''cmVhZE9ubHk6ITAsZmlsbEhhbmRsZTohMSxhdXRvV3JhcENvbDohMSxhdXRvV3JhcFJvdzohMSxhZnRlck9uQ2VsbE1vdXNlRG93bjpmdW5jdGlvbihwdCxPdCl7dmFyICR0PXRoaXMuZ2V0U291cmNlRGF0YShPdC5yb3csT3QuY29sKTt2b2lkIDAhPT0kdCYmQmUuc2V0VmFsdWUoJHQpLEJl''@;'; put 'put ''Lmluc3RhbmNlLmRlc3Ryb3lFZGl0b3IoKX0scHJldmVudFdoZWVsOiEwLGxheW91dERpcmVjdGlvbjp0aGlzLmhvdC5pc1J0bCgpPyJydGwiOiJsdHIifTt0aGlzLmNlbGxQcm9wZXJ0aWVzLmhhbmRzb250YWJsZSYmSTEoTmUsX2UuaGFuZHNvbnRhYmxlKSx0aGlzLmh0T3B0aW9ucz1OZX19''@;'; put 'put ''LHtrZXk6ImJlZ2luRWRpdGluZyIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST10aGlzLmhvdC5nZXRTZXR0aW5ncygpLm9uQmVnaW5FZGl0aW5nO0kmJiExPT09SSgpfHxNOChBNChoLnByb3RvdHlwZSksImJlZ2luRWRpdGluZyIsdGhpcykuY2FsbCh0aGlzLHksQyl9fSx7a2V5OiJjcmVh''@;'; put 'put ''dGVFbGVtZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXtNOChBNChoLnByb3RvdHlwZSksImNyZWF0ZUVsZW1lbnRzIix0aGlzKS5jYWxsKHRoaXMpO3ZhciB5PXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKTt5LmNsYXNzTmFtZT0iaGFuZHNvbnRhYmxlRWRpdG9yIix0''@;'; put 'put ''aGlzLlRFWFRBUkVBX1BBUkVOVC5hcHBlbmRDaGlsZCh5KSx0aGlzLmh0Q29udGFpbmVyPXksdGhpcy5hc3NpZ25Ib29rcygpfX0se2tleToiZmluaXNoRWRpdGluZyIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe2lmKHRoaXMuaHRFZGl0b3ImJnRoaXMuaHRFZGl0b3IuaXNMaXN0ZW5pbmcoKSYm''@;'; put 'put ''dGhpcy5ob3QubGlzdGVuKCksdGhpcy5odEVkaXRvciYmdGhpcy5odEVkaXRvci5nZXRTZWxlY3RlZExhc3QoKSl7dmFyIFo9dGhpcy5odEVkaXRvci5nZXRJbnN0YW5jZSgpLmdldFZhbHVlKCk7dm9pZCAwIT09WiYmdGhpcy5zZXRWYWx1ZShaKX1NOChBNChoLnByb3RvdHlwZSksImZpbmlz''@;'; put 'put ''aEVkaXRpbmciLHRoaXMpLmNhbGwodGhpcyx5LEMsSSl9fSx7a2V5OiJhc3NpZ25Ib29rcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuaG90LmFkZEhvb2soImFmdGVyRGVzdHJveSIsZnVuY3Rpb24oKXt5Lmh0RWRpdG9yJiZ5Lmh0RWRpdG9yLmRlc3Ryb3koKX0pfX0se2tl''@;'; put 'put ''eToicmVnaXN0ZXJTaG9ydGN1dHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxJPXRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImVkaXRvciIpO004KEE0KGgucHJvdG90eXBlKSwicmVnaXN0ZXJTaG9ydGN1dHMiLHRoaXMpLmNhbGwodGhpcyk7dmFyIHVl''@;'; put 'put ''PWZ1bmN0aW9uKEJlLE5lKXt2YXIgS2U9eS5odEVkaXRvci5nZXRJbnN0YW5jZSgpO2lmKHZvaWQgMCE9PUJlJiYoQmU8MHx8S2UuZmxpcHBlZCYmQmU+S2UuY291bnRSb3dzKCktMT9LZS5kZXNlbGVjdENlbGwoKTpLZS5zZWxlY3RDZWxsKEJlLDApLEtlLmdldERhdGEoKS5sZW5ndGgpKXJl''@;'; put 'put ''dHVybiBOZS5wcmV2ZW50RGVmYXVsdCgpLF84KE5lKSx5LmhvdC5saXN0ZW4oKSx5LlRFWFRBUkVBLmZvY3VzKCksITF9O0kuYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJBcnJvd1VwIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKEJlKXt2YXIgS2UscHQsTmU9eS5odEVkaXRvci5nZXRJbnN0YW5jZSgp''@;'; put 'put ''O3JldHVybiFOZS5nZXRTZWxlY3RlZExhc3QoKSYmTmUuZmxpcHBlZD9LZT1OZS5jb3VudFJvd3MoKS0xOk5lLmdldFNlbGVjdGVkTGFzdCgpJiYoTmUuZmxpcHBlZD8ocHQ9TmUuZ2V0U2VsZWN0ZWRMYXN0KClbMF0sS2U9TWF0aC5tYXgoMCxwdC0xKSk6S2U9KHB0PU5lLmdldFNlbGVjdGVk''@;'; put 'put ''TGFzdCgpWzBdKS0xKSx1ZShLZSxCZSl9LHByZXZlbnREZWZhdWx0OiExfSx7a2V5czpbWyJBcnJvd0Rvd24iXV0sY2FsbGJhY2s6ZnVuY3Rpb24oQmUpe3ZhciBLZSxwdCxOZT15Lmh0RWRpdG9yLmdldEluc3RhbmNlKCk7aWYoTmUuZ2V0U2VsZWN0ZWRMYXN0KCl8fE5lLmZsaXBwZWQpe2lm''@;'; put 'put ''KE5lLmdldFNlbGVjdGVkTGFzdCgpKWlmKE5lLmZsaXBwZWQpS2U9TmUuZ2V0U2VsZWN0ZWRMYXN0KClbMF0rMTtlbHNlIGlmKCFOZS5mbGlwcGVkKXt2YXIgT3Q9TmUuY291bnRSb3dzKCktMTtwdD1OZS5nZXRTZWxlY3RlZExhc3QoKVswXSxLZT1NYXRoLm1pbihPdCxwdCsxKX19ZWxzZSBL''@;'; put 'put ''ZT0wO3JldHVybiB1ZShLZSxCZSl9LHByZXZlbnREZWZhdWx0OiExfV0se2dyb3VwOlhTZSxyZWxhdGl2ZVRvR3JvdXA6bGVlLHBvc2l0aW9uOiJiZWZvcmUifSl9fSx7a2V5OiJ1bnJlZ2lzdGVyU2hvcnRjdXRzIix2YWx1ZTpmdW5jdGlvbigpe004KEE0KGgucHJvdG90eXBlKSwidW5yZWdp''@;'; put 'put ''c3RlclNob3J0Y3V0cyIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJlZGl0b3IiKS5yZW1vdmVTaG9ydGN1dHNCeUdyb3VwKFhTZSl9fV0sW3trZXk6IkVESVRPUl9UWVBFIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iaGFuZHNvbnRh''@;'; put 'put ''YmxlIn19XSksaH0oVlMpO2Z1bmN0aW9uIHY2ZShkKXtyZXR1cm4odjZlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gS1NlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJs''@;'; put 'put ''ZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24galMoKXtyZXR1cm4galM9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5i''@;'; put 'put ''aW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PURldChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0salMuYXBwbHkodGhpcyxhcmd1bWVu''@;'; put 'put ''dHMpfWZ1bmN0aW9uIERldChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9SXYoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gQTZlKGQsZyl7cmV0dXJuKEE2ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3Rv''@;'; put 'put ''dHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIFJldChkLGcpe2lmKGcmJigib2JqZWN0Ij09PXY2ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJv''@;'; put 'put ''cigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4geTZlKGQpfWZ1bmN0aW9uIHk2ZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1''@;'; put 'put ''cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gSXYoZCl7cmV0dXJuKEl2PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9m''@;'; put 'put ''KGgpfSkoZCl9dmFyIHc2ZT1uZXcgV2Vha01hcCxiNmU9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIExldChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5j''@;'; put 'put ''dGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZBNmUoZCxnKX0o''@;'; put 'put ''aCxkKTt2YXIgZz1mdW5jdGlvbiBPZXQoZCl7dmFyIGc9ZnVuY3Rpb24gQmV0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVy''@;'; put 'put ''biEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9SXYoZCk7aWYoZyl7dmFyIEM9SXYodGhp''@;'; put 'put ''cykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIFJldCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24gVGV0KGQsZyl7aWYoIShkIGluc3RhbmNl''@;'; put 'put ''b2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksZnVuY3Rpb24gUGV0KGQsZyxoKXtnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3''@;'; put 'put ''cml0YWJsZTohMH0pOmRbZ109aH0oeTZlKHk9Zy5jYWxsKHRoaXMsdikpLCJzb3J0QnlSZWxldmFuY2UiLGZ1bmN0aW9uKEMsSSxaKXt2YXIgcHQsT3QsJHQsdWU9W10sX2U9W10sQmU9Qy5sZW5ndGgsTmU9SS5sZW5ndGg7aWYoMD09PUJlKXtmb3IoT3Q9MDtPdDxOZTtPdCsrKV9lLnB1c2go''@;'; put 'put ''T3QpO3JldHVybiBfZX1mb3IoT3Q9MDtPdDxOZTtPdCsrKXtpZihwdD1sM2UoZXUoSVtPdF0pKSxaKSR0PXB0LmluZGV4T2YoQyk7ZWxzZXt2YXIgZm49dGhpcy5jZWxsUHJvcGVydGllcy5sb2NhbGU7JHQ9cHQudG9Mb2NhbGVMb3dlckNhc2UoZm4pLmluZGV4T2YoQy50b0xvY2FsZUxvd2Vy''@;'; put 'put ''Q2FzZShmbikpfS0xIT09JHQmJnVlLnB1c2goe2Jhc2VJbmRleDpPdCxpbmRleDokdCxjaGFyc0xlZnQ6cHQubGVuZ3RoLSR0LUJlLHZhbHVlOnB0fSl9Zm9yKHVlLnNvcnQoZnVuY3Rpb24oTG4saXIpe2lmKC0xPT09aXIuaW5kZXgpcmV0dXJuLTE7aWYoLTE9PT1Mbi5pbmRleClyZXR1cm4g''@;'; put 'put ''MTtpZihMbi5pbmRleDxpci5pbmRleClyZXR1cm4tMTtpZihpci5pbmRleDxMbi5pbmRleClyZXR1cm4gMTtpZihMbi5pbmRleD09PWlyLmluZGV4KXtpZihMbi5jaGFyc0xlZnQ8aXIuY2hhcnNMZWZ0KXJldHVybi0xO2lmKExuLmNoYXJzTGVmdD5pci5jaGFyc0xlZnQpcmV0dXJuIDF9cmV0''@;'; put 'put ''dXJuIDB9KSxPdD0wLE5lPXVlLmxlbmd0aDtPdDxOZTtPdCsrKV9lLnB1c2godWVbT3RdLmJhc2VJbmRleCk7cmV0dXJuIF9lfSkseS5xdWVyeT1udWxsLHkuc3RyaXBwZWRDaG9pY2VzPVtdLHkucmF3Q2hvaWNlcz1bXSx3NmUuc2V0KHk2ZSh5KSx7c2tpcE9uZTohMSxpc01hY09TOnkuaG90''@;'; put 'put ''LnJvb3RXaW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtLmluZGV4T2YoIk1hYyIpPi0xfSkseX1yZXR1cm4gZnVuY3Rpb24gSWV0KGQsZyxoKXtnJiZLU2UoZC5wcm90b3R5cGUsZyksaCYmS1NlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9''@;'; put 'put ''KGgsW3trZXk6ImdldFZhbHVlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz10aGlzLnJhd0Nob2ljZXMuZmluZChmdW5jdGlvbihJKXtyZXR1cm4geS5zdHJpcFZhbHVlSWZOZWVkZWQoSSk9PT15LlRFWFRBUkVBLnZhbHVlfSk7cmV0dXJuIFRvKEMpP0M6dGhpcy5URVhUQVJFQS52''@;'; put 'put ''YWx1ZX19LHtrZXk6ImNyZWF0ZUVsZW1lbnRzIix2YWx1ZTpmdW5jdGlvbigpe2pTKEl2KGgucHJvdG90eXBlKSwiY3JlYXRlRWxlbWVudHMiLHRoaXMpLmNhbGwodGhpcyksTzAodGhpcy5odENvbnRhaW5lciwiYXV0b2NvbXBsZXRlRWRpdG9yIiksTzAodGhpcy5odENvbnRhaW5lciwtMT09''@;'; put 'put ''PXRoaXMuaG90LnJvb3RXaW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtLmluZGV4T2YoIk1hYyIpPyIiOiJodE1hY1Njcm9sbCIpfX0se2tleToib3BlbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9dzZlLmdldCh0aGlzKTtqUyhJdihoLnByb3RvdHlwZSksIm9wZW4iLHRoaXMpLmNh''@;'; put 'put ''bGwodGhpcyk7dmFyIEk9dGhpcy5odEVkaXRvci5nZXRJbnN0YW5jZSgpLFo9dm9pZCAwPT09dGhpcy5jZWxsUHJvcGVydGllcy50cmltRHJvcGRvd258fHRoaXMuY2VsbFByb3BlcnRpZXMudHJpbURyb3Bkb3duO3RoaXMuc2hvd0VkaXRhYmxlRWxlbWVudCgpLHRoaXMuZm9jdXMoKTt2YXIg''@;'; put 'put ''dWU9QmMoKTswPT09dWUmJkMuaXNNYWNPUyYmKHVlKz0xNSksdGhpcy5hZGRIb29rKCJiZWZvcmVLZXlEb3duIixmdW5jdGlvbihfZSl7cmV0dXJuIHkub25CZWZvcmVLZXlEb3duKF9lKX0pLEkudXBkYXRlU2V0dGluZ3Moe2NvbFdpZHRoczpaP1tFMih0aGlzLlRFWFRBUkVBKS0yXTp2b2lk''@;'; put 'put ''IDAsd2lkdGg6Wj9FMih0aGlzLlRFWFRBUkVBKSt1ZTp2b2lkIDAscmVuZGVyZXI6ZnVuY3Rpb24oQmUsTmUsS2UscHQsT3QsJHQsZm4pe0J3KEJlLE5lLEtlLHB0LE90LCR0LGZuKTt2YXIgeWksS2ksTG49eS5jZWxsUHJvcGVydGllcyxpcj1Mbi5maWx0ZXJpbmdDYXNlU2Vuc2l0aXZlLG1y''@;'; put 'put ''PUxuLmFsbG93SHRtbCxTcj1Mbi5sb2NhbGUsd3I9eS5xdWVyeSxRcj1ldSgkdCk7UXImJiFtciYmLTEhPT0oeWk9ITA9PT1pcj9Rci5pbmRleE9mKHdyKTpRci50b0xvY2FsZUxvd2VyQ2FzZShTcikuaW5kZXhPZih3ci50b0xvY2FsZUxvd2VyQ2FzZShTcikpKSYmKEtpPVFyLnN1YnN0cih5''@;'; put 'put ''aSx3ci5sZW5ndGgpLFFyPVFyLnJlcGxhY2UoS2ksIjxzdHJvbmc+Ii5jb25jYXQoS2ksIjwvc3Ryb25nPiIpKSksTmUuaW5uZXJIVE1MPVFyfSxhdXRvQ29sdW1uU2l6ZTohMH0pLEMuc2tpcE9uZSYmKEMuc2tpcE9uZT0hMSksdGhpcy5ob3QuX3JlZ2lzdGVyVGltZW91dChmdW5jdGlvbigp''@;'; put 'put ''e3kucXVlcnlDaG9pY2VzKHkuVEVYVEFSRUEudmFsdWUpfSl9fSx7a2V5OiJjbG9zZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUhvb2tzQnlLZXkoImJlZm9yZUtleURvd24iKSxqUyhJdihoLnByb3RvdHlwZSksImNsb3NlIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZGlzY2Fy''@;'; put 'put ''ZEVkaXRvciIsdmFsdWU6ZnVuY3Rpb24oeSl7alMoSXYoaC5wcm90b3R5cGUpLCJkaXNjYXJkRWRpdG9yIix0aGlzKS5jYWxsKHRoaXMseSksdGhpcy5ob3Qudmlldy5yZW5kZXIoKX19LHtrZXk6InF1ZXJ5Q2hvaWNlcyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPXRoaXMuY2Vs''@;'; put 'put ''bFByb3BlcnRpZXMuc291cmNlO3RoaXMucXVlcnk9eSwiZnVuY3Rpb24iPT10eXBlb2YgST9JLmNhbGwodGhpcy5jZWxsUHJvcGVydGllcyx5LGZ1bmN0aW9uKFope0MucmF3Q2hvaWNlcz1aLEMudXBkYXRlQ2hvaWNlc0xpc3QoQy5zdHJpcFZhbHVlc0lmTmVlZGVkKFopKX0pOkFycmF5Lmlz''@;'; put 'put ''QXJyYXkoSSk/KHRoaXMucmF3Q2hvaWNlcz1JLHRoaXMudXBkYXRlQ2hvaWNlc0xpc3QodGhpcy5zdHJpcFZhbHVlc0lmTmVlZGVkKEkpKSk6dGhpcy51cGRhdGVDaG9pY2VzTGlzdChbXSl9fSx7a2V5OiJ1cGRhdGVDaG9pY2VzTGlzdCIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9ZzNlKHRo''@;'; put 'put ''aXMuVEVYVEFSRUEpLEk9V2JlKHRoaXMuVEVYVEFSRUEpLFo9dGhpcy5jZWxsUHJvcGVydGllcy5zb3J0QnlSZWxldmFuY2UsdWU9dGhpcy5jZWxsUHJvcGVydGllcy5maWx0ZXIsX2U9bnVsbCxCZT1udWxsLE5lPXk7WiYmKF9lPXRoaXMuc29ydEJ5UmVsZXZhbmNlKHRoaXMuc3RyaXBWYWx1''@;'; put 'put ''ZUlmTmVlZGVkKHRoaXMuZ2V0VmFsdWUoKSksTmUsdGhpcy5jZWxsUHJvcGVydGllcy5maWx0ZXJpbmdDYXNlU2Vuc2l0aXZlKSk7dmFyIEtlPUFycmF5LmlzQXJyYXkoX2UpP19lLmxlbmd0aDowO2lmKCExPT09dWUpS2UmJihCZT1fZVswXSk7ZWxzZXtmb3IodmFyIHB0PVtdLE90PTAsJHQ9''@;'; put 'put ''TmUubGVuZ3RoO090PCR0JiYhKFomJktlPD1PdCk7T3QrKylwdC5wdXNoKEtlP05lW19lW090XV06TmVbT3RdKTtCZT0wLE5lPXB0fXRoaXMuc3RyaXBwZWRDaG9pY2VzPU5lLHRoaXMuaHRFZGl0b3IubG9hZERhdGEoRFooW05lXSkpLHRoaXMudXBkYXRlRHJvcGRvd25IZWlnaHQoKSx0aGlz''@;'; put 'put ''LmZsaXBEcm9wZG93bklmTmVlZGVkKCksITA9PT10aGlzLmNlbGxQcm9wZXJ0aWVzLnN0cmljdCYmdGhpcy5oaWdobGlnaHRCZXN0TWF0Y2hpbmdDaG9pY2UoQmUpLHRoaXMuaG90Lmxpc3RlbigpLFZaKHRoaXMuVEVYVEFSRUEsQyxDPT09ST92b2lkIDA6SSl9fSx7a2V5OiJmbGlwRHJvcGRv''@;'; put 'put ''d25JZk5lZWRlZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT1oTyh0aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLlRBQkxFKSxDPXk9PT10aGlzLmhvdC5yb290V2luZG93LEk9dGhpcy5jZWxsUHJvcGVydGllcy5wcmV2ZW50T3ZlcmZsb3c7aWYoQ3x8IUMmJihJfHwiaG9yaXpvbnRhbCI9PT1J''@;'; put 'put ''KSlyZXR1cm4hMTt2YXIgWj1qdSh0aGlzLlRFWFRBUkVBKSx1ZT1EMSh0aGlzLlRFWFRBUkVBKSxfZT10aGlzLmdldERyb3Bkb3duSGVpZ2h0KCksQmU9eS5zY3JvbGxUb3AsTmU9RDEodGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZS5USEVBRCksS2U9anUoeSkscHQ9Wi50b3AtS2UudG9wLU5l''@;'; put 'put ''K0JlLE90PXkuc2Nyb2xsSGVpZ2h0LXB0LU5lLXVlLCR0PV9lPk90JiZwdD5PdDtyZXR1cm4gJHQ/dGhpcy5mbGlwRHJvcGRvd24oX2UpOnRoaXMudW5mbGlwRHJvcGRvd24oKSx0aGlzLmxpbWl0RHJvcGRvd25JZk5lZWRlZCgkdD9wdDpPdCxfZSksJHR9fSx7a2V5OiJsaW1pdERyb3Bkb3du''@;'; put 'put ''SWZOZWVkZWQiLHZhbHVlOmZ1bmN0aW9uKHksQyl7aWYoQz55KXt2YXIgX2UsST0wLFo9MCx1ZT0wO2Rve0krPXVlPXRoaXMuaHRFZGl0b3IuZ2V0Um93SGVpZ2h0KFopfHx0aGlzLmh0RWRpdG9yLnZpZXcuX3d0LmdldFNldHRpbmcoImRlZmF1bHRSb3dIZWlnaHQiKSxaKz0xfXdoaWxlKEk8''@;'; put 'put ''eSk7X2U9SS11ZSx0aGlzLmh0RWRpdG9yLmZsaXBwZWQmJih0aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LnN0eWxlLnRvcD0iIi5jb25jYXQocGFyc2VJbnQodGhpcy5odEVkaXRvci5yb290RWxlbWVudC5zdHlsZS50b3AsMTApK0MtX2UsInB4IikpLHRoaXMuc2V0RHJvcGRvd25IZWlnaHQo''@;'; put 'put ''SS11ZSl9fX0se2tleToiZmxpcERyb3Bkb3duIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LnN0eWxlO0MucG9zaXRpb249ImFic29sdXRlIixDLnRvcD0iIi5jb25jYXQoLXksInB4IiksdGhpcy5odEVkaXRvci5mbGlwcGVkPSEwfX0se2tleToi''@;'; put 'put ''dW5mbGlwRHJvcGRvd24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5odEVkaXRvci5yb290RWxlbWVudC5zdHlsZTt5LnBvc2l0aW9uPSJhYnNvbHV0ZSIseS50b3A9IiIsdGhpcy5odEVkaXRvci5mbGlwcGVkPXZvaWQgMH19LHtrZXk6InVwZGF0ZURyb3Bkb3duSGVpZ2h0Iix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaHRFZGl0b3IuZ2V0Q29sV2lkdGgoMCkrQmModGhpcy5ob3Qucm9vdERvY3VtZW50KSsyLEM9dGhpcy5jZWxsUHJvcGVydGllcy50cmltRHJvcGRvd247dGhpcy5odEVkaXRvci51cGRhdGVTZXR0aW5ncyh7aGVpZ2h0OnRoaXMuZ2V0RHJvcGRvd25I''@;'; put 'put ''ZWlnaHQoKSx3aWR0aDpDP3ZvaWQgMDp5fSksdGhpcy5odEVkaXRvci52aWV3Ll93dC53dFRhYmxlLmFsaWduT3ZlcmxheXNXaXRoVHJpbW1pbmdDb250YWluZXIoKX19LHtrZXk6InNldERyb3Bkb3duSGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbih5KXt0aGlzLmh0RWRpdG9yLnVwZGF0ZVNldHRp''@;'; put 'put ''bmdzKHtoZWlnaHQ6eX0pfX0se2tleToiaGlnaGxpZ2h0QmVzdE1hdGNoaW5nQ2hvaWNlIix2YWx1ZTpmdW5jdGlvbih5KXsibnVtYmVyIj09dHlwZW9mIHk/dGhpcy5odEVkaXRvci5zZWxlY3RDZWxsKHksMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCwhMSk6dGhpcy5odEVkaXRvci5kZXNlbGVj''@;'; put 'put ''dENlbGwoKX19LHtrZXk6ImdldERyb3Bkb3duSGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaHRFZGl0b3IuZ2V0SW5zdGFuY2UoKS5nZXRSb3dIZWlnaHQoMCl8fDIzLEM9dGhpcy5jZWxsUHJvcGVydGllcy52aXNpYmxlUm93cztyZXR1cm4gdGhpcy5zdHJpcHBlZENob2lj''@;'; put 'put ''ZXMubGVuZ3RoPj1DP0MqeTp0aGlzLnN0cmlwcGVkQ2hvaWNlcy5sZW5ndGgqeSs4fX0se2tleToic3RyaXBWYWx1ZUlmTmVlZGVkIix2YWx1ZTpmdW5jdGlvbih5KXtyZXR1cm4gdGhpcy5zdHJpcFZhbHVlc0lmTmVlZGVkKFt5XSlbMF19fSx7a2V5OiJzdHJpcFZhbHVlc0lmTmVlZGVkIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLmNlbGxQcm9wZXJ0aWVzLmFsbG93SHRtbCxJPU9sKHksZnVuY3Rpb24odWUpe3JldHVybiBldSh1ZSl9KTtyZXR1cm4gT2woSSxmdW5jdGlvbih1ZSl7cmV0dXJuIEM/dWU6bDNlKHVlKX0pfX0se2tleToiYWxsb3dLZXlFdmVudFByb3BhZ2F0''@;'; put 'put ''aW9uIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLmh0RWRpdG9yLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksSV9yb3c9Qz9DLmZyb20ucm93Oi0xLFo9ITE7cmV0dXJuIHk9PT1Rby5BUlJPV19ET1dOJiZJX3Jvdz4wJiZJX3Jvdzx0aGlzLmh0RWRpdG9yLmNvdW50Um93cygpLTEmJiha''@;'; put 'put ''PSEwKSx5PT09UW8uQVJST1dfVVAmJklfcm93Pi0xJiYoWj0hMCksWn19LHtrZXk6Im9uQmVmb3JlS2V5RG93biIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPXc2ZS5nZXQodGhpcyk7aWYoSS5za2lwT25lPSExLCRiZSh5LmtleUNvZGUpfHx5LmtleUNvZGU9PT1Rby5CQUNLU1BB''@;'; put 'put ''Q0V8fHkua2V5Q29kZT09PVFvLkRFTEVURXx8eS5rZXlDb2RlPT09UW8uSU5TRVJUKXt2YXIgWj0xMDtpZih5LmtleUNvZGU9PT1Rby5DJiYoeS5jdHJsS2V5fHx5Lm1ldGFLZXkpKXJldHVybjt0aGlzLmlzT3BlbmVkKCl8fChaKz0xMCksdGhpcy5odEVkaXRvciYmdGhpcy5ob3QuX3JlZ2lz''@;'; put 'put ''dGVyVGltZW91dChmdW5jdGlvbigpe0MucXVlcnlDaG9pY2VzKEMuVEVYVEFSRUEudmFsdWUpLEkuc2tpcE9uZT0hMH0sWil9fX1dLFt7a2V5OiJFRElUT1JfVFlQRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuImF1dG9jb21wbGV0ZSJ9fV0pLGh9KG02ZSk7ZnVuY3Rpb24gXzZlKGQpe3JldHVy''@;'; put 'put ''bihfNmU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJv''@;'; put 'put ''bCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBIZXQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiAkU2UoZCxnKXtmb3Io''@;'; put 'put ''dmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBDNmUoZCxnKXty''@;'; put 'put ''ZXR1cm4oQzZlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gWmV0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09XzZlKGcpfHwiZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiB6ZXQoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNl''@;'; put 'put ''RXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiB5dGUoZCl7cmV0dXJuKHl0ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlv''@;'; put 'put ''bihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBxU2U9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIFZldChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9u''@;'; put 'put ''IG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBl''@;'; put 'put ''Iix7d3JpdGFibGU6ITF9KSxnJiZDNmUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBqZXQoZCl7dmFyIGc9ZnVuY3Rpb24gR2V0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYo''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3Zh''@;'; put 'put ''ciB5LHY9eXRlKGQpO2lmKGcpe3ZhciBDPXl0ZSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gWmV0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7cmV0dXJuIEhldCh0aGlz''@;'; put 'put ''LGgpLGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmdW5jdGlvbiBOZXQoZCxnLGgpe2cmJiRTZShkLnByb3RvdHlwZSxnKSxoJiYkU2UoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiYmVnaW5FZGl0aW5nIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbih5LEMpe2lmKEMmJiJtb3VzZXVwIj09PUMudHlwZSl7dmFyIEk9dGhpcy5URC5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdJyk7dGwoSSwiaHRCYWRWYWx1ZSIpfHxJLmNsaWNrKCl9fX0se2tleToiZmluaXNoRWRpdGluZyIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oKXt9fSx7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6Im9wZW4iLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToiY2xvc2UiLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToiZ2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToic2V0VmFsdWUiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7fX0se2tleToiZm9jdXMiLHZhbHVlOmZ1bmN0aW9uKCl7fX1dLFt7a2V5OiJFRElUT1JfVFlQRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuImNoZWNrYm94In19XSksaH0oa08pLGVNZT1MKDQxMDc4KTtmdW5jdGlvbiBrNmUoZCl7cmV0dXJuKGs2ZT0iZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlw''@;'; put 'put ''ZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIHRNZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIER2KCl7cmV0dXJuIER2PSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1RZXQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0''@;'; put 'put ''T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LER2LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBRZXQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5''@;'; put 'put ''LmNhbGwoZCxnKSYmbnVsbCE9PShkPUU4KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIFM2ZShkLGcpe3JldHVybihTNmU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1m''@;'; put 'put ''dW5jdGlvbiBLZXQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1rNmUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVk''@;'; put 'put ''Iik7cmV0dXJuIGZ1bmN0aW9uICRldChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIEU4KGQpe3JldHVybihFOD1P''@;'; put 'put ''YmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciByTWU9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIEpldChkLGcpe2lmKCJmdW5jdGlvbiIh''@;'; put 'put ''PXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxl''@;'; put 'put ''OiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZTNmUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBYZXQoZCl7dmFyIGc9ZnVuY3Rpb24gcWV0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0''@;'; put 'put ''fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVu''@;'; put 'put ''Y3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9RTgoZCk7aWYoZyl7dmFyIEM9RTgodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50''@;'; put 'put ''cyk7cmV0dXJuIEtldCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24gWWV0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKHk9Zy5j''@;'; put 'put ''YWxsKHRoaXMsdikpLmRlZmF1bHREYXRlRm9ybWF0PSJERC9NTS9ZWVlZIix5LmlzQ2VsbEVkaXRlZD0hMSx5LnBhcmVudERlc3Ryb3llZD0hMSx5LiRkYXRlUGlja2VyPW51bGwseX1yZXR1cm4gZnVuY3Rpb24gVWV0KGQsZyxoKXtnJiZ0TWUoZC5wcm90b3R5cGUsZyksaCYmdE1lKGQsaCks''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztpZigiZnVuY3Rpb24iIT10eXBlb2YgVGwpdGhyb3cgbmV3IEVycm9yKCJZb3UgbmVlZCB0byBpbmNsdWRlIG1vbWVudC5q''@;'; put 'put ''cyB0byB5b3VyIHByb2plY3QuIik7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGVNZSl0aHJvdyBuZXcgRXJyb3IoIllvdSBuZWVkIHRvIGluY2x1ZGUgUGlrYWRheSB0byB5b3VyIHByb2plY3QuIik7RHYoRTgoaC5wcm90b3R5cGUpLCJpbml0Iix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuaW5zdGFu''@;'; put 'put ''Y2UuYWRkSG9vaygiYWZ0ZXJEZXN0cm95IixmdW5jdGlvbigpe3kucGFyZW50RGVzdHJveWVkPSEwLHkuZGVzdHJveUVsZW1lbnRzKCl9KX19LHtrZXk6ImNyZWF0ZUVsZW1lbnRzIix2YWx1ZTpmdW5jdGlvbigpe0R2KEU4KGgucHJvdG90eXBlKSwiY3JlYXRlRWxlbWVudHMiLHRoaXMpLmNh''@;'; put 'put ''bGwodGhpcyksdGhpcy5kYXRlUGlja2VyPXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSx0aGlzLmRhdGVQaWNrZXJTdHlsZT10aGlzLmRhdGVQaWNrZXIuc3R5bGUsdGhpcy5kYXRlUGlja2VyU3R5bGUucG9zaXRpb249ImFic29sdXRlIix0aGlzLmRhdGVQaWNr''@;'; put 'put ''ZXJTdHlsZS50b3A9MCx0aGlzLmRhdGVQaWNrZXJTdHlsZS5sZWZ0PTAsdGhpcy5kYXRlUGlja2VyU3R5bGUuekluZGV4PTk5OTksdGhpcy5kYXRlUGlja2VyLnNldEF0dHJpYnV0ZSgiZGlyIix0aGlzLmhvdC5pc1J0bCgpPyJydGwiOiJsdHIiKSxPMCh0aGlzLmRhdGVQaWNrZXIsImh0RGF0''@;'; put 'put ''ZXBpY2tlckhvbGRlciIpLHRoaXMuaG90LnJvb3REb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuZGF0ZVBpY2tlciksbmV3IEwxKHRoaXMpLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5kYXRlUGlja2VyLCJtb3VzZWRvd24iLGZ1bmN0aW9uKEMpe3JldHVybiBDLnN0b3BQcm9wYWdhdGlv''@;'; put 'put ''bigpfSl9fSx7a2V5OiJkZXN0cm95RWxlbWVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5kYXRlUGlja2VyLnBhcmVudE5vZGU7dGhpcy4kZGF0ZVBpY2tlciYmdGhpcy4kZGF0ZVBpY2tlci5kZXN0cm95KCkseSYmeS5yZW1vdmVDaGlsZCh0aGlzLmRhdGVQaWNrZXIpfX0se2tl''@;'; put 'put ''eToicHJlcGFyZSIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksWix1ZSxfZSl7RHYoRTgoaC5wcm90b3R5cGUpLCJwcmVwYXJlIix0aGlzKS5jYWxsKHRoaXMseSxDLEksWix1ZSxfZSl9fSx7a2V5OiJvcGVuIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAw''@;'; put 'put ''IT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO0R2KEU4KGgucHJvdG90eXBlKSwib3BlbiIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLnNob3dEYXRlcGlja2VyKHkpfX0se2tleToiY2xvc2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHksQz10aGlzO3RoaXMuX29wZW5lZD0hMSxudWxs''@;'; put 'put ''IT09KHk9dGhpcy4kZGF0ZVBpY2tlcikmJnZvaWQgMCE9PXkmJnkuZGVzdHJveSYmdGhpcy4kZGF0ZVBpY2tlci5kZXN0cm95KCksdGhpcy5pbnN0YW5jZS5fcmVnaXN0ZXJUaW1lb3V0KGZ1bmN0aW9uKCl7Qy5pbnN0YW5jZS5fcmVmcmVzaEJvcmRlcnMoKX0pLER2KEU4KGgucHJvdG90eXBl''@;'; put 'put ''KSwiY2xvc2UiLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJmaW5pc2hFZGl0aW5nIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sQz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3Vt''@;'; put 'put ''ZW50c1sxXSYmYXJndW1lbnRzWzFdO2lmKHkpe3ZhciBJPXRoaXMub3JpZ2luYWxWYWx1ZTt2b2lkIDAhPT1JJiZ0aGlzLnNldFZhbHVlKEkpfUR2KEU4KGgucHJvdG90eXBlKSwiZmluaXNoRWRpdGluZyIsdGhpcykuY2FsbCh0aGlzLHksQyl9fSx7a2V5OiJzaG93RGF0ZXBpY2tlciIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oeSl7dmFyIF9lLEM9dGhpcy5URC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxJPXRoaXMuY2VsbFByb3BlcnRpZXMuZGF0ZUZvcm1hdHx8dGhpcy5kZWZhdWx0RGF0ZUZvcm1hdCxaPXRoaXMuaW5zdGFuY2Uudmlldy5pc01vdXNlRG93bigpLHVlPSEheSYmXzNlKHkua2V5''@;'; put 'put ''Q29kZSk7dGhpcy5kYXRlUGlja2VyLnN0eWxlLmRpc3BsYXk9ImJsb2NrIix0aGlzLiRkYXRlUGlja2VyPW5ldyBlTWUodGhpcy5nZXREYXRlUGlja2VyQ29uZmlnKCkpLHRoaXMuJGRhdGVQaWNrZXIuX29uSW5wdXRGb2N1cz1mdW5jdGlvbigpe30sdGhpcy5kYXRlUGlja2VyU3R5bGUudG9w''@;'; put 'put ''PSIiLmNvbmNhdCh0aGlzLmhvdC5yb290V2luZG93LnBhZ2VZT2Zmc2V0K0MudG9wK0QxKHRoaXMuVEQpLCJweCIpO3ZhciBCZTtCZT10aGlzLmhvdC5pc1J0bCgpP0MucmlnaHQtRTIodGhpcy5kYXRlUGlja2VyKTpDLmxlZnQsdGhpcy5kYXRlUGlja2VyU3R5bGUubGVmdD0iIi5jb25jYXQo''@;'; put 'put ''QmUsInB4IiksdGhpcy5vcmlnaW5hbFZhbHVlPyhUbChfZT10aGlzLm9yaWdpbmFsVmFsdWUsSSwhMCkuaXNWYWxpZCgpJiZ0aGlzLiRkYXRlUGlja2VyLnNldE1vbWVudChUbChfZSxJKSwhMCksdGhpcy5nZXRWYWx1ZSgpIT09dGhpcy5vcmlnaW5hbFZhbHVlJiZ0aGlzLnNldFZhbHVlKHRo''@;'; put 'put ''aXMub3JpZ2luYWxWYWx1ZSksIXVlJiYhWiYmdGhpcy5zZXRWYWx1ZSgiIikpOnRoaXMuY2VsbFByb3BlcnRpZXMuZGVmYXVsdERhdGU/KFRsKF9lPXRoaXMuY2VsbFByb3BlcnRpZXMuZGVmYXVsdERhdGUsSSwhMCkuaXNWYWxpZCgpJiZ0aGlzLiRkYXRlUGlja2VyLnNldE1vbWVudChUbChf''@;'; put 'put ''ZSxJKSwhMCksIXVlJiYhWiYmdGhpcy5zZXRWYWx1ZSgiIikpOnRoaXMuJGRhdGVQaWNrZXIuZ290b1RvZGF5KCl9fSx7a2V5OiJoaWRlRGF0ZXBpY2tlciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRhdGVQaWNrZXJTdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLiRkYXRlUGlja2VyLmhpZGUo''@;'; put 'put ''KX19LHtrZXk6ImdldERhdGVQaWNrZXJDb25maWciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPXRoaXMuVEVYVEFSRUEsST17fTt0aGlzLmNlbGxQcm9wZXJ0aWVzJiZ0aGlzLmNlbGxQcm9wZXJ0aWVzLmRhdGVQaWNrZXJDb25maWcmJkxaKEksdGhpcy5jZWxsUHJvcGVydGllcy5k''@;'; put 'put ''YXRlUGlja2VyQ29uZmlnKTt2YXIgWj1JLm9uU2VsZWN0LHVlPUkub25DbG9zZTtyZXR1cm4gSS5maWVsZD1DLEkudHJpZ2dlcj1DLEkuY29udGFpbmVyPXRoaXMuZGF0ZVBpY2tlcixJLmJvdW5kPSExLEkuZm9ybWF0PUkuZm9ybWF0fHx0aGlzLmRlZmF1bHREYXRlRm9ybWF0LEkucmVwb3Np''@;'; put 'put ''dGlvbj1JLnJlcG9zaXRpb258fCExLEkuaXNSVEw9ITEsSS5vblNlbGVjdD1mdW5jdGlvbihfZSl7dmFyIEJlPV9lO2lzTmFOKEJlLmdldFRpbWUoKSl8fChCZT1UbChCZSkuZm9ybWF0KHkuY2VsbFByb3BlcnRpZXMuZGF0ZUZvcm1hdHx8eS5kZWZhdWx0RGF0ZUZvcm1hdCkpLHkuc2V0VmFs''@;'; put 'put ''dWUoQmUpLHkuaGlkZURhdGVwaWNrZXIoKSxaJiZaKCl9LEkub25DbG9zZT1mdW5jdGlvbigpe3kucGFyZW50RGVzdHJveWVkfHx5LmZpbmlzaEVkaXRpbmcoITEpLHVlJiZ1ZSgpfSxJfX1dLFt7a2V5OiJFRElUT1JfVFlQRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuImRhdGUifX1dKSxofShW''@;'; put 'put ''Uyk7ZnVuY3Rpb24gTTZlKGQpe3JldHVybihNNmU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJv''@;'; put 'put ''bCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBldHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24i''@;'; put 'put ''KX1mdW5jdGlvbiBpTWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5''@;'; put 'put ''LHYpfX1mdW5jdGlvbiB3dGUoKXtyZXR1cm4gd3RlPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1udHQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y''@;'; put 'put ''KHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LHd0ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbnR0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0o''@;'; put 'put ''ZD1NTyhkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBFNmUoZCxnKXtyZXR1cm4oRTZlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gb3R0KGQsZyl7aWYo''@;'; put 'put ''ZyYmKCJvYmplY3QiPT09TTZlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBh''@;'; put 'put ''dHQoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBNTyhkKXtyZXR1cm4oTU89T2JqZWN0LnNldFByb3RvdHlwZU9m''@;'; put 'put ''P09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgeDZlPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBydHQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9''@;'; put 'put ''fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmRTZlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gaXR0KGQpe3ZhciBnPWZ1bmN0aW9uIGx0dCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0''@;'; put 'put ''fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNo''@;'; put 'put ''KGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PU1PKGQpO2lmKGcpe3ZhciBDPU1PKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBvdHQodGhpcyx5''@;'; put 'put ''KX19KGgpO2Z1bmN0aW9uIGgoKXtyZXR1cm4gZXR0KHRoaXMsaCksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGZ1bmN0aW9uIHR0dChkLGcsaCl7ZyYmaU1lKGQucHJvdG90eXBlLGcpLGgmJmlNZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0''@;'; put 'put ''YWJsZTohMX0pfShoLFt7a2V5OiJwcmVwYXJlIix2YWx1ZTpmdW5jdGlvbih5LEMsSSxaLHVlLF9lKXt3dGUoTU8oaC5wcm90b3R5cGUpLCJwcmVwYXJlIix0aGlzKS5jYWxsKHRoaXMseSxDLEksWix1ZSxfZSksdGhpcy5jZWxsUHJvcGVydGllcy5maWx0ZXI9ITEsdGhpcy5jZWxsUHJvcGVy''@;'; put 'put ''dGllcy5zdHJpY3Q9ITB9fV0sW3trZXk6IkVESVRPUl9UWVBFIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iZHJvcGRvd24ifX1dKSxofShiNmUpO2Z1bmN0aW9uIFQ2ZShkKXtyZXR1cm4oVDZlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJh''@;'; put 'put ''dG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gdXR0KGQs''@;'; put 'put ''Zyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gb01lKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8''@;'; put 'put ''ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gSTZlKGQsZyl7cmV0dXJuKEk2ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpm''@;'; put 'put ''dW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIGR0dChkLGcpe2lmKGcmJigib2JqZWN0Ij09PVQ2ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25z''@;'; put 'put ''dHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gcHR0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxs''@;'; put 'put ''ZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gYnRlKGQpe3JldHVybihidGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX16by5nZXRT''@;'; put 'put ''aW5nbGV0b24oKS5hZGQoImJlZm9yZVZhbGlkYXRlIixmdW5jdGlvbihkLGcsaCl7dmFyIHY9dGhpcy5nZXRDZWxsTWV0YShnLHRoaXMucHJvcFRvQ29sKGgpKTt2LmVkaXRvcj09PXg2ZSYmdm9pZCAwPT09di5zdHJpY3QmJih2LmZpbHRlcj0hMSx2LnN0cmljdD0hMCl9KTt2YXIgYU1lPWZ1''@;'; put 'put ''bmN0aW9uKGQpeyFmdW5jdGlvbiBmdHQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcm''@;'; put 'put ''JmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmSTZlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gaHR0KGQpe3ZhciBnPWZ1''@;'; put 'put ''bmN0aW9uIGd0dCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZh''@;'; put 'put ''bHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PWJ0ZShkKTtpZihnKXt2YXIgQz1idGUodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVj''@;'; put 'put ''dCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGR0dCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCgpe3JldHVybiB1dHQodGhpcyxoKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gZnVuY3Rpb24gY3R0KGQsZyxoKXtnJiZvTWUoZC5w''@;'; put 'put ''cm90b3R5cGUsZyksaCYmb01lKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsbnVsbCxbe2tleToiRURJVE9SX1RZUEUiLGdldDpmdW5jdGlvbigpe3JldHVybiJudW1lcmljIn19XSksaH0oVlMpO2Z1bmN0aW9uIEQ2ZShkKXtyZXR1''@;'; put 'put ''cm4oRDZlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1i''@;'; put 'put ''b2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gdnR0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbE1lKGQsZyl7Zm9y''@;'; put 'put ''KHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gX3RlKCl7cmV0''@;'; put 'put ''dXJuIF90ZT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9eXR0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdl''@;'; put 'put ''dC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxfdGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHl0dChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9RU8oZCkpOyk7cmV0dXJuIGR9ZnVu''@;'; put 'put ''Y3Rpb24gTDZlKGQsZyl7cmV0dXJuKEw2ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIF90dChkLGcpe2lmKGcmJigib2JqZWN0Ij09PUQ2ZShnKXx8''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gQ3R0KGQpe2lmKHZvaWQgMD09PWQpdGhy''@;'; put 'put ''b3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gRU8oZCl7cmV0dXJuKEVPPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Yu''@;'; put 'put ''YmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIHNNZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gd3R0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1''@;'; put 'put ''cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJkw2ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIGJ0dChkKXt2YXIgZz1mdW5jdGlvbiBrdHQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hh''@;'; put 'put ''bSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uKCl7dmFyIHksdj1FTyhkKTtpZihnKXt2YXIgQz1FTyh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gX3R0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7cmV0''@;'; put 'put ''dXJuIHZ0dCh0aGlzLGgpLGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmdW5jdGlvbiBBdHQoZCxnLGgpe2cmJmxNZShkLnByb3RvdHlwZSxnKSxoJiZsTWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiY3Jl''@;'; put 'put ''YXRlRWxlbWVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7X3RlKEVPKGgucHJvdG90eXBlKSwiY3JlYXRlRWxlbWVudHMiLHRoaXMpLmNhbGwodGhpcyksdGhpcy5URVhUQVJFQT10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSx0aGlzLlRFWFRBUkVBLnNldEF0dHJp''@;'; put 'put ''YnV0ZSgidHlwZSIsInBhc3N3b3JkIiksdGhpcy5URVhUQVJFQS5zZXRBdHRyaWJ1dGUoImRhdGEtaG90LWlucHV0IiwiIiksdGhpcy5URVhUQVJFQS5jbGFzc05hbWU9ImhhbmRzb250YWJsZUlucHV0Iix0aGlzLnRleHRhcmVhU3R5bGU9dGhpcy5URVhUQVJFQS5zdHlsZSx0aGlzLnRleHRh''@;'; put 'put ''cmVhU3R5bGUud2lkdGg9MCx0aGlzLnRleHRhcmVhU3R5bGUuaGVpZ2h0PTAsRHAodGhpcy5URVhUQVJFQV9QQVJFTlQpLHRoaXMuVEVYVEFSRUFfUEFSRU5ULmFwcGVuZENoaWxkKHRoaXMuVEVYVEFSRUEpfX1dLFt7a2V5OiJFRElUT1JfVFlQRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuInBh''@;'; put 'put ''c3N3b3JkIn19XSksaH0oVlMpO2Z1bmN0aW9uIEN0ZShkKXtyZXR1cm4oQ3RlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gTXR0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFz''@;'; put 'put ''cyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gdU1lKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24ga3RlKCl7cmV0dXJuIGt0ZT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9eHR0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blBy''@;'; put 'put ''b3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxrdGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHh0dChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2Fs''@;'; put 'put ''bChkLGcpJiZudWxsIT09KGQ9eE8oZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gTzZlKGQsZyl7cmV0dXJuKE82ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0''@;'; put 'put ''aW9uIER0dChkLGcpe2lmKGcmJigib2JqZWN0Ij09PUN0ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24gTHR0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24geE8oZCl7cmV0dXJuKHhPPU9iamVj''@;'; put 'put ''dC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIFI2ZT0iaHRfZWRpdG9yX3Zpc2libGUiLGNNZT0ic2VsZWN0RWRpdG9yIixCdHQ9ZnVuY3Rp''@;'; put 'put ''b24oZCl7IWZ1bmN0aW9uIFR0dChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5w''@;'; put 'put ''cm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZPNmUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBJdHQoZCl7dmFyIGc9ZnVuY3Rp''@;'; put 'put ''b24gT3R0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVP''@;'; put 'put ''Zi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9eE8oZCk7aWYoZyl7dmFyIEM9eE8odGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFy''@;'; put 'put ''Z3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIER0dCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCgpe3JldHVybiBNdHQodGhpcyxoKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gZnVuY3Rpb24gRXR0KGQsZyxoKXtnJiZ1TWUoZC5wcm90b3R5''@;'; put 'put ''cGUsZyksaCYmdU1lKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Q9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlNFTEVDVCIpLE8wKHRo''@;'; put 'put ''aXMuc2VsZWN0LCJodFNlbGVjdEVkaXRvciIpLHRoaXMuc2VsZWN0LnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuaG90LnJvb3RFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc2VsZWN0KSx0aGlzLnJlZ2lzdGVySG9va3MoKX19LHtrZXk6ImdldFZhbHVlIix2YWx1ZTpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLnNlbGVjdC52YWx1ZX19LHtrZXk6InNldFZhbHVlIix2YWx1ZTpmdW5jdGlvbih5KXt0aGlzLnNlbGVjdC52YWx1ZT15fX0se2tleToib3BlbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9vcGVuZWQ9ITAsdGhpcy5yZWZyZXNoRGltZW5zaW9ucygpLHRoaXMuc2VsZWN0LnN0''@;'; put 'put ''eWxlLmRpc3BsYXk9IiIsdGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuc2V0QWN0aXZlQ29udGV4dE5hbWUoImVkaXRvciIpLHRoaXMucmVnaXN0ZXJTaG9ydGN1dHMoKX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX29wZW5lZD0hMSx0aGlzLnNlbGVjdC5zdHls''@;'; put 'put ''ZS5kaXNwbGF5PSJub25lIix0bCh0aGlzLnNlbGVjdCxSNmUpJiZwbCh0aGlzLnNlbGVjdCxSNmUpLHRoaXMudW5yZWdpc3RlclNob3J0Y3V0cygpLHRoaXMuY2xlYXJIb29rcygpfX0se2tleToiZm9jdXMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZWxlY3QuZm9jdXMoKX19LHtrZXk6InJl''@;'; put 'put ''Z2lzdGVySG9va3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsSG9yaXpvbnRhbGx5IixmdW5jdGlvbigpe3JldHVybiB5LnJlZnJlc2hEaW1lbnNpb25zKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsVmVydGljYWxseSIsZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4geS5yZWZyZXNoRGltZW5zaW9ucygpfSksdGhpcy5hZGRIb29rKCJhZnRlckNvbHVtblJlc2l6ZSIsZnVuY3Rpb24oKXtyZXR1cm4geS5yZWZyZXNoRGltZW5zaW9ucygpfSksdGhpcy5hZGRIb29rKCJhZnRlclJvd1Jlc2l6ZSIsZnVuY3Rpb24oKXtyZXR1cm4geS5yZWZy''@;'; put 'put ''ZXNoRGltZW5zaW9ucygpfSl9fSx7a2V5OiJwcmVwYXJlIix2YWx1ZTpmdW5jdGlvbih5LEMsSSxaLHVlLF9lKXt2YXIgQmU9dGhpcztrdGUoeE8oaC5wcm90b3R5cGUpLCJwcmVwYXJlIix0aGlzKS5jYWxsKHRoaXMseSxDLEksWix1ZSxfZSk7dmFyIEtlLE5lPXRoaXMuY2VsbFByb3BlcnRp''@;'; put 'put ''ZXMuc2VsZWN0T3B0aW9ucztLZT10aGlzLnByZXBhcmVPcHRpb25zKCJmdW5jdGlvbiI9PXR5cGVvZiBOZT9OZSh0aGlzLnJvdyx0aGlzLmNvbCx0aGlzLnByb3ApOk5lKSxEcCh0aGlzLnNlbGVjdCksR2woS2UsZnVuY3Rpb24ocHQsT3Qpe3ZhciAkdD1CZS5ob3Qucm9vdERvY3VtZW50LmNy''@;'; put 'put ''ZWF0ZUVsZW1lbnQoIk9QVElPTiIpOyR0LnZhbHVlPU90LGt3KCR0LHB0KSxCZS5zZWxlY3QuYXBwZW5kQ2hpbGQoJHQpfSl9fSx7a2V5OiJwcmVwYXJlT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9e307aWYoQXJyYXkuaXNBcnJheSh5KSlmb3IodmFyIEk9MCxaPXkubGVuZ3Ro''@;'; put 'put ''O0k8WjtJKyspQ1t5W0ldXT15W0ldO2Vsc2Uib2JqZWN0Ij09PUN0ZSh5KSYmKEM9eSk7cmV0dXJuIEN9fSx7a2V5OiJyZWZyZXNoVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0U291cmNlRGF0YUF0Q2VsbCh0aGlzLnJvdyx0aGlzLnByb3ApO3RoaXMub3JpZ2lu''@;'; put 'put ''YWxWYWx1ZT15LHRoaXMuc2V0VmFsdWUoeSksdGhpcy5yZWZyZXNoRGltZW5zaW9ucygpfX0se2tleToicmVmcmVzaERpbWVuc2lvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5zdGF0ZT09PXJmLkVESVRJTkcpe2lmKHRoaXMuVEQ9dGhpcy5nZXRFZGl0ZWRDZWxsKCksIXRoaXMuVEQp''@;'; put 'put ''cmV0dXJuIHZvaWQgdGhpcy5jbG9zZSgpO3ZhciB5PXRoaXMuZ2V0RWRpdGVkQ2VsbFJlY3QoKSxDPXkudG9wLEk9eS5zdGFydCxaPXkud2lkdGgsX2U9dGhpcy5zZWxlY3Quc3R5bGU7X2UuaGVpZ2h0PSIiLmNvbmNhdCh5LmhlaWdodCwicHgiKSxfZS53aWR0aD0iIi5jb25jYXQoWiwicHgi''@;'; put 'put ''KSxfZS50b3A9IiIuY29uY2F0KEMsInB4IiksX2VbdGhpcy5ob3QuaXNSdGwoKT8icmlnaHQiOiJsZWZ0Il09IiIuY29uY2F0KEksInB4IiksX2UubWFyZ2luPSIwcHgiLE8wKHRoaXMuc2VsZWN0LFI2ZSl9fX0se2tleToicmVnaXN0ZXJTaG9ydGN1dHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IHk9dGhpcyxJPXRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImVkaXRvciIpLFo9e2dyb3VwOmNNZX07ITEhPT10aGlzLmlzSW5GdWxsRWRpdE1vZGUoKSYmSS5hZGRTaG9ydGN1dHMoW3trZXlzOltbIkFycm93VXAiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''X2U9eS5zZWxlY3Quc2VsZWN0ZWRJbmRleC0xO19lPj0wJiYoeS5zZWxlY3RbX2VdLnNlbGVjdGVkPSEwKX19LHtrZXlzOltbIkFycm93RG93biJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBfZT15LnNlbGVjdC5zZWxlY3RlZEluZGV4KzE7X2U8PXkuc2VsZWN0Lmxlbmd0aC0xJiYoeS5z''@;'; put 'put ''ZWxlY3RbX2VdLnNlbGVjdGVkPSEwKX19XSxaKX19LHtrZXk6InVucmVnaXN0ZXJTaG9ydGN1dHMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZWRpdG9yIikucmVtb3ZlU2hvcnRjdXRzQnlHcm91cChjTWUpfX1dLFt7a2V5OiJF''@;'; put 'put ''RElUT1JfVFlQRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuInNlbGVjdCJ9fV0pLGh9KGtPKTtmdW5jdGlvbiBCNmUoZCl7cmV0dXJuKEI2ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9m''@;'; put 'put ''IGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIFB0dChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGZNZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJp''@;'; put 'put ''biB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIFN0ZSgpe3JldHVybiBTdGU9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PUh0''@;'; put 'put ''dChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sU3RlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBIdHQoZCxnKXtmb3IoOyFP''@;'; put 'put ''YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPVRPKGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIFA2ZShkLGcpe3JldHVybihQNmU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXty''@;'; put 'put ''ZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBqdHQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1CNmUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBv''@;'; put 'put ''bmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIFp0dChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9''@;'; put 'put ''KGQpfWZ1bmN0aW9uIFRPKGQpe3JldHVybihUTz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBoTWU9ZnVuY3Rpb24oZCl7IWZ1''@;'; put 'put ''bmN0aW9uIE50dChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUs''@;'; put 'put ''e2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZQNmUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBWdHQoZCl7dmFyIGc9ZnVuY3Rpb24genR0KCl7''@;'; put 'put ''aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJl''@;'; put 'put ''ZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9VE8oZCk7aWYoZyl7dmFyIEM9VE8odGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxD''@;'; put 'put ''KX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGp0dCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCgpe3JldHVybiBQdHQodGhpcyxoKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gZnVuY3Rpb24gRnR0KGQsZyxoKXtnJiZmTWUoZC5wcm90b3R5cGUsZyksaCYm''@;'; put 'put ''Zk1lKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6InByZXBhcmUiLHZhbHVlOmZ1bmN0aW9uKHksQyxJLFosdWUsX2Upe1N0ZShUTyhoLnByb3RvdHlwZSksInByZXBhcmUiLHRoaXMpLmNhbGwodGhpcyx5LEMsSSxaLHVl''@;'; put 'put ''LF9lKSx0aGlzLlRFWFRBUkVBLmRpcj0ibHRyIn19XSxbe2tleToiRURJVE9SX1RZUEUiLGdldDpmdW5jdGlvbigpe3JldHVybiJ0aW1lIn19XSksaH0oVlMpO2Z1bmN0aW9uIEY2ZShkLGcsaCx2LHksQyxJKXtoei5hcHBseSh0aGlzLFtkLGcsaCx2LHksQyxJXSksa3coZyxudWxsPT1DPyIi''@;'; put 'put ''OkMsITEpfWZ1bmN0aW9uIElPKGQsZyxoLHYseSxDLEkpe3ZhciBaPWQucm9vdERvY3VtZW50LHVlPUkuYWxsb3dIdG1sP0Y2ZTpCdyxfZT1aLmNyZWF0ZUVsZW1lbnQoIkRJViIpO2lmKF9lLmNsYXNzTmFtZT0iaHRBdXRvY29tcGxldGVBcnJvdyIsX2UuYXBwZW5kQ2hpbGQoWi5jcmVhdGVU''@;'; put 'put ''ZXh0Tm9kZShTdHJpbmcuZnJvbUNoYXJDb2RlKDk2NjApKSksdWUuYXBwbHkodGhpcyxbZCxnLGgsdix5LEMsSV0pLGcuZmlyc3RDaGlsZHx8Zy5hcHBlbmRDaGlsZChaLmNyZWF0ZVRleHROb2RlKFN0cmluZy5mcm9tQ2hhckNvZGUoMTYwKSkpLGcuaW5zZXJ0QmVmb3JlKF9lLGcuZmlyc3RD''@;'; put 'put ''aGlsZCksTzAoZywiaHRBdXRvY29tcGxldGUiKSwhZC5hY0Fycm93TGlzdGVuZXIpe3ZhciBCZT1uZXcgTDEoZCk7ZC5hY0Fycm93TGlzdGVuZXI9ZnVuY3Rpb24oTmUpe3RsKE5lLnRhcmdldCwiaHRBdXRvY29tcGxldGVBcnJvdyIpJiZkLnZpZXcuX3d0LmdldFNldHRpbmcoIm9uQ2VsbERi''@;'; put 'put ''bENsaWNrIixudWxsLGQuX2NyZWF0ZUNlbGxDb29yZHMoaCx2KSxnKX0sQmUuYWRkRXZlbnRMaXN0ZW5lcihkLnJvb3RFbGVtZW50LCJtb3VzZWRvd24iLGQuYWNBcnJvd0xpc3RlbmVyKSxkLmFkZEhvb2tPbmNlKCJhZnRlckRlc3Ryb3kiLGZ1bmN0aW9uKCl7QmUuZGVzdHJveSgpfSl9fUY2''@;'; put 'put ''ZS5SRU5ERVJFUl9UWVBFPSJodG1sIixJTy5SRU5ERVJFUl9UWVBFPSJhdXRvY29tcGxldGUiO3ZhciBkTWU9bmV3IFdlYWtNYXAscE1lPW5ldyBXZWFrTWFwLERPPSJkYXRhLXJvdyIsTE89ImRhdGEtY29sIjtmdW5jdGlvbiBINmUoZCxnLGgsdix5LEMsSSl7dmFyIFo9ZC5yb290RG9jdW1l''@;'; put 'put ''bnQ7aHouYXBwbHkodGhpcyxbZCxnLGgsdix5LEMsSV0pLGZ1bmN0aW9uIFh0dChkKXt2YXIgZz1wTWUuZ2V0KGQpO2lmKCFnKXt2YXIgaD1kLnJvb3RFbGVtZW50OyhnPW5ldyBMMShkKSkuYWRkRXZlbnRMaXN0ZW5lcihoLCJjbGljayIsZnVuY3Rpb24odil7cmV0dXJuIGZ1bmN0aW9uIGVu''@;'; put 'put ''dChkLGcpe3ZhciBoPWQudGFyZ2V0O2lmKE42ZShoKSYmaC5oYXNBdHRyaWJ1dGUoRE8pJiZoLmhhc0F0dHJpYnV0ZShMTykpe3ZhciB2PXBhcnNlSW50KGguZ2V0QXR0cmlidXRlKERPKSwxMCkseT1wYXJzZUludChoLmdldEF0dHJpYnV0ZShMTyksMTApO2cuZ2V0Q2VsbE1ldGEodix5KS5y''@;'; put 'put ''ZWFkT25seSYmZC5wcmV2ZW50RGVmYXVsdCgpfX0odixkKX0pLGcuYWRkRXZlbnRMaXN0ZW5lcihoLCJtb3VzZXVwIixmdW5jdGlvbih2KXtyZXR1cm4gZnVuY3Rpb24gcXR0KGQsZyl7dmFyIGg9ZC50YXJnZXQ7IU42ZShoKXx8IWguaGFzQXR0cmlidXRlKERPKXx8IWguaGFzQXR0cmlidXRl''@;'; put 'put ''KExPKXx8c2V0VGltZW91dChnLmxpc3RlbiwxMCl9KHYsZCl9KSxnLmFkZEV2ZW50TGlzdGVuZXIoaCwiY2hhbmdlIixmdW5jdGlvbih2KXtyZXR1cm4gZnVuY3Rpb24gdG50KGQsZyl7dmFyIGg9ZC50YXJnZXQ7aWYoTjZlKGgpJiZoLmhhc0F0dHJpYnV0ZShETykmJmguaGFzQXR0cmlidXRl''@;'; put 'put ''KExPKSl7dmFyIHY9cGFyc2VJbnQoaC5nZXRBdHRyaWJ1dGUoRE8pLDEwKSx5PXBhcnNlSW50KGguZ2V0QXR0cmlidXRlKExPKSwxMCksQz1nLmdldENlbGxNZXRhKHYseSk7Qy5yZWFkT25seXx8Zy5zZXREYXRhQXRDZWxsKHYseSxkLnRhcmdldC5jaGVja2VkP3ZvaWQgMD09PUMudW5jaGVj''@;'; put 'put ''a2VkVGVtcGxhdGV8fEMuY2hlY2tlZFRlbXBsYXRlOnZvaWQgMCE9PUMudW5jaGVja2VkVGVtcGxhdGUmJkMudW5jaGVja2VkVGVtcGxhdGUpfX0odixkKX0pLHBNZS5zZXQoZCxnKX19KGQpO3ZhciB1ZT1mdW5jdGlvbiBLdHQoZCl7dmFyIGc9ZC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3Jl''@;'; put 'put ''dHVybiBnLmNsYXNzTmFtZT0iaHRDaGVja2JveFJlbmRlcmVySW5wdXQiLGcudHlwZT0iY2hlY2tib3giLGcuc2V0QXR0cmlidXRlKCJhdXRvY29tcGxldGUiLCJvZmYiKSxnLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLGcuY2xvbmVOb2RlKCExKX0oWiksX2U9SS5sYWJlbCxCZT0h''@;'; put 'put ''MTtpZih2b2lkIDA9PT1JLmNoZWNrZWRUZW1wbGF0ZSYmKEkuY2hlY2tlZFRlbXBsYXRlPSEwKSx2b2lkIDA9PT1JLnVuY2hlY2tlZFRlbXBsYXRlJiYoSS51bmNoZWNrZWRUZW1wbGF0ZT0hMSksRHAoZyksQz09PUkuY2hlY2tlZFRlbXBsYXRlfHxldShDKS50b0xvY2FsZUxvd2VyQ2FzZShJ''@;'; put 'put ''LmxvY2FsZSk9PT1ldShJLmNoZWNrZWRUZW1wbGF0ZSkudG9Mb2NhbGVMb3dlckNhc2UoSS5sb2NhbGUpP3VlLmNoZWNrZWQ9ITA6Qz09PUkudW5jaGVja2VkVGVtcGxhdGV8fGV1KEMpLnRvTG9jYWxlTG93ZXJDYXNlKEkubG9jYWxlKT09PWV1KEkudW5jaGVja2VkVGVtcGxhdGUpLnRvTG9j''@;'; put 'put ''YWxlTG93ZXJDYXNlKEkubG9jYWxlKT91ZS5jaGVja2VkPSExOmRjKEMpP08wKHVlLCJub1ZhbHVlIik6KHVlLnN0eWxlLmRpc3BsYXk9Im5vbmUiLE8wKHVlLCJodEJhZFZhbHVlIiksQmU9ITApLHVlLnNldEF0dHJpYnV0ZShETyxoKSx1ZS5zZXRBdHRyaWJ1dGUoTE8sdiksIUJlJiZfZSl7''@;'; put 'put ''dmFyIE5lPSIiO2lmKF9lLnZhbHVlKU5lPSJmdW5jdGlvbiI9PXR5cGVvZiBfZS52YWx1ZT9fZS52YWx1ZS5jYWxsKHRoaXMsaCx2LHksQyk6X2UudmFsdWU7ZWxzZSBpZihfZS5wcm9wZXJ0eSl7dmFyIEtlPWQuZ2V0RGF0YUF0Um93UHJvcChoLF9lLnByb3BlcnR5KTtOZT1udWxsIT09S2U/''@;'; put 'put ''S2U6IiJ9dmFyIHB0PWZ1bmN0aW9uICR0dChkLGcsaCl7dmFyIHY9ZC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpO3JldHVybiB2LmNsYXNzTmFtZT0iaHRDaGVja2JveFJlbmRlcmVyTGFiZWwgIi5jb25jYXQoaD8iZnVsbFdpZHRoIjoiIiksdi5hcHBlbmRDaGlsZChkLmNyZWF0ZVRleHROb2Rl''@;'; put 'put ''KGcpKSx2LmNsb25lTm9kZSghMCl9KFosTmUsITAhPT1fZS5zZXBhcmF0ZWQpOyJiZWZvcmUiPT09X2UucG9zaXRpb24/X2Uuc2VwYXJhdGVkPyhnLmFwcGVuZENoaWxkKHB0KSxnLmFwcGVuZENoaWxkKHVlKSk6KHB0LmFwcGVuZENoaWxkKHVlKSx1ZT1wdCk6KCFfZS5wb3NpdGlvbnx8ImFm''@;'; put 'put ''dGVyIj09PV9lLnBvc2l0aW9uKSYmKF9lLnNlcGFyYXRlZD8oZy5hcHBlbmRDaGlsZCh1ZSksZy5hcHBlbmRDaGlsZChwdCkpOihwdC5pbnNlcnRCZWZvcmUodWUscHQuZmlyc3RDaGlsZCksdWU9cHQpKX1mdW5jdGlvbiAkdCgpe3ZhciBMbj1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9''@;'; put 'put ''PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLGlyPWQuZ2V0U2VsZWN0ZWRSYW5nZSgpO2lmKGlyKWZvcih2YXIgbXI9MDttcjxpci5sZW5ndGg7bXIrKyl7Zm9yKHZhciBTcj1pclttcl0uZ2V0VG9wU3RhcnRDb3JuZXIoKSx3cj1Tci5yb3csUXI9U3IuY29sLHlpPWlyW21yXS5nZXRCb3R0''@;'; put 'put ''b21FbmRDb3JuZXIoKSxLaT15aS5yb3csU289eWkuY29sLFBvPVtdLFNhPXdyO1NhPD1LaTtTYSs9MSlmb3IodmFyIEphPVFyO0phPD1TbztKYSs9MSl7dmFyIGxhPWQuZ2V0Q2VsbE1ldGEoU2EsSmEpO2lmKCJjaGVja2JveCIhPT1sYS50eXBlKXJldHVybjtpZighMCE9PWxhLnJlYWRPbmx5''@;'; put 'put ''KXt2b2lkIDA9PT1sYS5jaGVja2VkVGVtcGxhdGUmJihsYS5jaGVja2VkVGVtcGxhdGU9ITApLHZvaWQgMD09PWxhLnVuY2hlY2tlZFRlbXBsYXRlJiYobGEudW5jaGVja2VkVGVtcGxhdGU9ITEpO3ZhciBhbD1kLmdldERhdGFBdENlbGwoU2EsSmEpOyExPT09TG4/W2xhLmNoZWNrZWRUZW1w''@;'; put 'put ''bGF0ZSxsYS5jaGVja2VkVGVtcGxhdGUudG9TdHJpbmcoKV0uaW5jbHVkZXMoYWwpP1BvLnB1c2goW1NhLEphLGxhLnVuY2hlY2tlZFRlbXBsYXRlXSk6W2xhLnVuY2hlY2tlZFRlbXBsYXRlLGxhLnVuY2hlY2tlZFRlbXBsYXRlLnRvU3RyaW5nKCksbnVsbCx2b2lkIDBdLmluY2x1ZGVzKGFs''@;'; put 'put ''KSYmUG8ucHVzaChbU2EsSmEsbGEuY2hlY2tlZFRlbXBsYXRlXSk6UG8ucHVzaChbU2EsSmEsbGEudW5jaGVja2VkVGVtcGxhdGVdKX19UG8ubGVuZ3RoPjAmJmQuc2V0RGF0YUF0Q2VsbChQbyl9fWZ1bmN0aW9uIGZuKCl7dmFyIExuPWQuZ2V0U2VsZWN0ZWRSYW5nZSgpO2lmKExuKXtmb3Io''@;'; put 'put ''dmFyIGlyPTA7aXI8TG4ubGVuZ3RoO2lyKyspZm9yKHZhciBtcj1Mbltpcl0uZ2V0VG9wU3RhcnRDb3JuZXIoKSxTcj1Mbltpcl0uZ2V0Qm90dG9tRW5kQ29ybmVyKCksd3I9bXIucm93O3dyPD1Tci5yb3c7d3IrKylmb3IodmFyIFFyPW1yLmNvbDtRcjw9U3IuY29sO1FyKyspe3ZhciB5aT1k''@;'; put 'put ''LmdldENlbGxNZXRhKHdyLFFyKTtpZigiY2hlY2tib3giIT09eWkudHlwZSlyZXR1cm4hMTt2YXIgS2k9ZC5nZXRDZWxsKHdyLFFyKTtpZihudWxsPT1LaSlyZXR1cm4hMDtpZihLaS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFt0eXBlPWNoZWNrYm94XSIpLmxlbmd0aD4wJiYheWkucmVhZE9u''@;'; put 'put ''bHkpcmV0dXJuITB9cmV0dXJuITF9fSghX2V8fF9lJiYhX2Uuc2VwYXJhdGVkKSYmZy5hcHBlbmRDaGlsZCh1ZSksQmUmJmcuYXBwZW5kQ2hpbGQoWi5jcmVhdGVUZXh0Tm9kZSgiI2JhZC12YWx1ZSMiKSksZE1lLmhhcyhkKXx8KGRNZS5zZXQoZCwhMCksZnVuY3Rpb24gT3QoKXtkLmdldFNo''@;'; put 'put ''b3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImdyaWQiKS5hZGRTaG9ydGN1dHMoW3trZXlzOltbInNwYWNlIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7cmV0dXJuICR0KCksIWZuKCl9fSx7a2V5czpbWyJlbnRlciJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3JldHVybiAkdCgpLCFmbigpfSxy''@;'; put 'put ''dW5Pbmx5SWY6ZnVuY3Rpb24oKXtyZXR1cm4gZC5nZXRTZXR0aW5ncygpLmVudGVyQmVnaW5zRWRpdGluZ319LHtrZXlzOltbImRlbGV0ZSJdLFsiYmFja3NwYWNlIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7cmV0dXJuICR0KCEwKSwhZm4oKX0scmVsYXRpdmVUb0dyb3VwOkdaLHBvc2l0aW9u''@;'; put 'put ''OiJiZWZvcmUifV0se2dyb3VwOiJjaGVja2JveFJlbmRlcmVyIn0pfSgpKX1mdW5jdGlvbiBONmUoZCl7cmV0dXJuIklOUFVUIj09PWQudGFnTmFtZSYmImNoZWNrYm94Ij09PWQuZ2V0QXR0cmlidXRlKCJ0eXBlIil9em8uZ2V0U2luZ2xldG9uKCkuYWRkKCJtb2RpZnlBdXRvQ29sdW1uU2l6''@;'; put 'put ''ZVNlZWQiLGZ1bmN0aW9uKGQsZyxoKXt2YXIgdj1nLmxhYmVsLEM9Zy5yb3c7aWYoImNoZWNrYm94Ij09PWcudHlwZSl7aWYodil7dmFyIHVlPXYudmFsdWUsX2U9di5wcm9wZXJ0eSxCZT1oO2lmKHVlKUJlPSJmdW5jdGlvbiI9PXR5cGVvZiB1ZT91ZShDLGcuY29sdW1uLGcucHJvcCxoKTp1''@;'; put 'put ''ZTtlbHNlIGlmKF9lKXt2YXIgTmU9dGhpcy5nZXREYXRhQXRSb3dQcm9wKEMsX2UpO0JlPW51bGwhPT1OZT9OZTpofWQ9QmV9cmV0dXJuIGR9fSksSDZlLlJFTkRFUkVSX1RZUEU9ImNoZWNrYm94Ijt2YXIgWlM9TCgyNDcxNSk7ZnVuY3Rpb24gVjZlKGQsZyxoLHYseSxDLEkpe3ZhciBaPUM7''@;'; put 'put ''aWYodjQoWikpe3ZhciB1ZT1JLm51bWVyaWNGb3JtYXQsX2U9dWUmJnVlLmN1bHR1cmV8fCItIixCZT11ZSYmdWUucGF0dGVybixOZT1JLmNsYXNzTmFtZXx8IiIsS2U9TmUubGVuZ3RoP05lLnNwbGl0KCIgIik6W107aWYodm9pZCAwIT09X2UmJiFaUy5sYW5ndWFnZXMoKVtfZV0pe3ZhciBw''@;'; put 'put ''dD1fZS5yZXBsYWNlKCItIiwiIiksT3Q9WlMuYWxsTGFuZ3VhZ2VzP1pTLmFsbExhbmd1YWdlc1tfZV06WlNbcHRdO090JiZaUy5yZWdpc3Rlckxhbmd1YWdlKE90KX1aUy5zZXRMYW5ndWFnZShfZSksWj1aUyhaKS5mb3JtYXQoQmV8fCIwIiksS2UuaW5kZXhPZigiaHRMZWZ0Iik8MCYmS2Uu''@;'; put 'put ''aW5kZXhPZigiaHRDZW50ZXIiKTwwJiZLZS5pbmRleE9mKCJodFJpZ2h0Iik8MCYmS2UuaW5kZXhPZigiaHRKdXN0aWZ5Iik8MCYmS2UucHVzaCgiaHRSaWdodCIpLEtlLmluZGV4T2YoImh0TnVtZXJpYyIpPDAmJktlLnB1c2goImh0TnVtZXJpYyIpLEkuY2xhc3NOYW1lPUtlLmpvaW4oIiAi''@;'; put 'put ''KSxnLmRpcj0ibHRyIn1CdyhkLGcsaCx2LHksWixJKX1mdW5jdGlvbiBqNmUoZCxnLGgsdix5LEMsSSl7QncuYXBwbHkodGhpcyxbZCxnLGgsdix5LEMsSV0pO3ZhciB1ZT1JLmhhc2hTeW1ib2x8fCIqIixfZT0iIjtpYSgoSS5oYXNoTGVuZ3RofHxnLmlubmVySFRNTC5sZW5ndGgpLTEsZnVu''@;'; put 'put ''Y3Rpb24oKXtfZSs9dWV9KSxrdyhnLF9lKX1mdW5jdGlvbiBaNmUoZCxnLGgsdix5LEMsSSl7QncuYXBwbHkodGhpcyxbZCxnLGgsdix5LEMsSV0pLGcuZGlyPSJsdHIifWZ1bmN0aW9uIGR6KGQsZyl7dmFyIGg9ZDtudWxsPT1oJiYoaD0iIiksdGhpcy5hbGxvd0VtcHR5JiYiIj09PWg/Zygh''@;'; put 'put ''MCk6dGhpcy5zdHJpY3QmJnRoaXMuc291cmNlPyJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnNvdXJjZT90aGlzLnNvdXJjZShoLG1NZShoLGcpKTptTWUoaCxnKSh0aGlzLnNvdXJjZSk6ZyghMCl9ZnVuY3Rpb24gbU1lKGQsZyl7dmFyIGg9ZDtyZXR1cm4gZnVuY3Rpb24odil7Zm9yKHZhciB5''@;'; put 'put ''PSExLEM9MCxJPXYubGVuZ3RoO0M8STtDKyspaWYoaD09PXZbQ10pe3k9ITA7YnJlYWt9Zyh5KX19ZnVuY3Rpb24gdk1lKGQpe3ZhciBnPW5ldyBEYXRlKGQpO3JldHVybiBpc05hTihuZXcgRGF0ZSgiIi5jb25jYXQoZCwiVDAwOjAwIikpLmdldERhdGUoKSk/ZzpuZXcgRGF0ZShnLmdldFRp''@;'; put 'put ''bWUoKSs2ZTQqZy5nZXRUaW1lem9uZU9mZnNldCgpKX1mdW5jdGlvbiBNdGUoZCxnKXt2YXIgaD1hX2UoImRhdGUiLHRoaXMuaW5zdGFuY2UpLHY9ZCx5PSEwO251bGw9PXYmJih2PSIiKTt2YXIgQz1UbCh2LHRoaXMuZGF0ZUZvcm1hdHx8aC5kZWZhdWx0RGF0ZUZvcm1hdCwhMCkuaXNWYWxp''@;'; put 'put ''ZCgpLEk9VGwobmV3IERhdGUodikpLmlzVmFsaWQoKXx8QztpZih0aGlzLmFsbG93RW1wdHkmJiIiPT09diYmKEk9ITAsQz0hMCksSXx8KHk9ITEpLCFJJiZDJiYoeT0hMCksSSYmIUMpaWYoITA9PT10aGlzLmNvcnJlY3RGb3JtYXQpe3ZhciBaPWZ1bmN0aW9uIHNudChkLGcpe3ZhciBoPVRs''@;'; put 'put ''KHZNZShkKSksdj1UbChkLGcpLHk9ZC5zZWFyY2goL1tBLXpdL2cpPi0xO3JldHVybihoLmlzVmFsaWQoKSYmaC5mb3JtYXQoIngiKT09PXYuZm9ybWF0KCJ4Iil8fCF2LmlzVmFsaWQoKXx8eT9oOnYpLmZvcm1hdChnKX0odix0aGlzLmRhdGVGb3JtYXQpLHVlPXRoaXMuaW5zdGFuY2UudG9W''@;'; put 'put ''aXN1YWxSb3codGhpcy5yb3cpLF9lPXRoaXMuaW5zdGFuY2UudG9WaXN1YWxDb2x1bW4odGhpcy5jb2wpO3RoaXMuaW5zdGFuY2Uuc2V0RGF0YUF0Q2VsbCh1ZSxfZSxaLCJkYXRlVmFsaWRhdG9yIikseT0hMH1lbHNlIHk9ITE7Zyh5KX1mdW5jdGlvbiB6NmUoZCxnKXt2YXIgaD1kO251bGw9''@;'; put 'put ''PWgmJihoPSIiKSxnKCEoIXRoaXMuYWxsb3dFbXB0eXx8IiIhPT1oKXx8IiIhPT1oJiZ2NChkKSl9VjZlLlJFTkRFUkVSX1RZUEU9Im51bWVyaWMiLGo2ZS5SRU5ERVJFUl9UWVBFPSJwYXNzd29yZCIsWjZlLlJFTkRFUkVSX1RZUEU9InRpbWUiLGR6LlZBTElEQVRPUl9UWVBFPSJhdXRvY29t''@;'; put 'put ''cGxldGUiLEwoNzc5NCksTXRlLlZBTElEQVRPUl9UWVBFPSJkYXRlIix6NmUuVkFMSURBVE9SX1RZUEU9Im51bWVyaWMiO3ZhciBjbnQ9WyJZWVlZLU1NLUREVEhIOm1tOnNzLlNTU1oiLCJYIiwieCJdO2Z1bmN0aW9uIEV0ZShkLGcpe3ZhciBoPXRoaXMudGltZUZvcm1hdHx8Img6bW06c3Mg''@;'; put 'put ''YSIsdj0hMCx5PWQ7bnVsbD09PXkmJih5PSIiKSx5PS9eXGR7Myx9JC8udGVzdCh5KT9wYXJzZUludCh5LDEwKTp5O3ZhciBDPS9eXGR7MSwyfSQvLnRlc3QoeSk7QyYmKHkrPSI6MDAiKTt2YXIgST1UbCh5LGNudCwhMCkuaXNWYWxpZCgpP1RsKHkpOlRsKHksaCksWj1JLmlzVmFsaWQoKSx1''@;'; put 'put ''ZT1UbCh5LGgsITApLmlzVmFsaWQoKSYmIUM7aWYodGhpcy5hbGxvd0VtcHR5JiYiIj09PXkmJihaPSEwLHVlPSEwKSxafHwodj0hMSksIVomJnVlJiYodj0hMCksWiYmIXVlKWlmKCEwPT09dGhpcy5jb3JyZWN0Rm9ybWF0KXt2YXIgX2U9SS5mb3JtYXQoaCksQmU9dGhpcy5pbnN0YW5jZS50''@;'; put 'put ''b1Zpc3VhbFJvdyh0aGlzLnJvdyksTmU9dGhpcy5pbnN0YW5jZS50b1Zpc3VhbENvbHVtbih0aGlzLmNvbCk7dGhpcy5pbnN0YW5jZS5zZXREYXRhQXRDZWxsKEJlLE5lLF9lLCJ0aW1lVmFsaWRhdG9yIiksdj0hMH1lbHNlIHY9ITE7Zyh2KX1FdGUuVkFMSURBVE9SX1RZUEU9InRpbWUiO3Zh''@;'; put 'put ''ciBwbnQ9e0NFTExfVFlQRToiYXV0b2NvbXBsZXRlIixlZGl0b3I6YjZlLHJlbmRlcmVyOklPLHZhbGlkYXRvcjpken0sbW50PXtDRUxMX1RZUEU6ImNoZWNrYm94IixlZGl0b3I6cVNlLHJlbmRlcmVyOkg2ZX0sQW50PXtDRUxMX1RZUEU6ImRhdGUiLGVkaXRvcjpyTWUscmVuZGVyZXI6SU8s''@;'; put 'put ''dmFsaWRhdG9yOk10ZX0sd250PXtDRUxMX1RZUEU6ImRyb3Bkb3duIixlZGl0b3I6eDZlLHJlbmRlcmVyOklPLHZhbGlkYXRvcjpken0sX250PXtDRUxMX1RZUEU6ImhhbmRzb250YWJsZSIsZWRpdG9yOm02ZSxyZW5kZXJlcjpJT30sa250PXtDRUxMX1RZUEU6Im51bWVyaWMiLGVkaXRvcjph''@;'; put 'put ''TWUscmVuZGVyZXI6VjZlLHZhbGlkYXRvcjp6NmUsZGF0YVR5cGU6Im51bWJlciJ9LE1udD17Q0VMTF9UWVBFOiJwYXNzd29yZCIsZWRpdG9yOnNNZSxyZW5kZXJlcjpqNmUsY29weWFibGU6ITF9LHhudD17Q0VMTF9UWVBFOiJ0aW1lIixlZGl0b3I6aE1lLHJlbmRlcmVyOlo2ZSx2YWxpZGF0''@;'; put 'put ''b3I6RXRlfTtmdW5jdGlvbiBBTWUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiB5TWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFy''@;'; put 'put ''IHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1MKDM4MTgzKTt2YXIgd01lPW5ldyBNYXAoW1sicGx1Z2luIixmdW5jdGlvbiBa''@;'; put 'put ''emUoZCl7cmV0dXJuISFXWihkKX1dLFsiY2VsbC10eXBlIiwkQ2VdLFsiZWRpdG9yIixvX2VdLFsicmVuZGVyZXIiLGtfZV0sWyJ2YWxpZGF0b3IiLFNfZV1dKSx6Uz1uZXcgV2Vha01hcCxHNmU9W10sRGc9bnVsbCxiTWU9bmV3IFdlYWtTZXQsWXM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcp''@;'; put 'put ''e3ZhciBoPXRoaXM7KGZ1bmN0aW9uIEJudChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSxmdW5jdGlvbiBGbnQoZCxnKXsoZnVuY3Rpb24gSG50KGQsZyl7aWYoZy5oYXMo''@;'; put 'put ''ZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKGQsZyksZy5hZGQoZCl9KHRoaXMsYk1lKSxTZyh0aGlzLCJob3QiLGcse3dyaXRhYmxlOiExfSkselMuc2V0KHRoaXMse2hvb2tz''@;'; put 'put ''Ont9fSksRGc9bnVsbCx0aGlzLnBsdWdpbk5hbWU9bnVsbCx0aGlzLnBsdWdpbnNJbml0aWFsaXplZENhbGxiYWNrcz1bXSx0aGlzLmlzUGx1Z2luc1JlYWR5PSExLHRoaXMuZW5hYmxlZD0hMSx0aGlzLmluaXRpYWxpemVkPSExLHRoaXMuaG90LmFkZEhvb2soImFmdGVyUGx1Z2luc0luaXRp''@;'; put 'put ''YWxpemVkIixmdW5jdGlvbigpe3JldHVybiBoLm9uQWZ0ZXJQbHVnaW5zSW5pdGlhbGl6ZWQoKX0pLHRoaXMuaG90LmFkZEhvb2soImFmdGVyVXBkYXRlU2V0dGluZ3MiLGZ1bmN0aW9uKHYpe3JldHVybiBoLm9uVXBkYXRlU2V0dGluZ3Modil9KSx0aGlzLmhvdC5hZGRIb29rKCJiZWZvcmVJ''@;'; put 'put ''bml0IixmdW5jdGlvbigpe3JldHVybiBoLmluaXQoKX0pfXJldHVybiBmdW5jdGlvbiBQbnQoZCxnLGgpe2cmJnlNZShkLnByb3RvdHlwZSxnKSxoJiZ5TWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiaW5pdCIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzO3RoaXMucGx1Z2luTmFtZT10aGlzLmhvdC5nZXRQbHVnaW5OYW1lKHRoaXMpO3ZhciB2PXRoaXMuY29uc3RydWN0b3IuUExVR0lOX0RFUFMseT1BcnJheS5pc0FycmF5KHYpP3Y6W107aWYoeS5sZW5ndGg+MCl7dmFyIEM9W107aWYoeS5mb3JFYWNo''@;'; put 'put ''KGZ1bmN0aW9uKF9lKXt2YXIgTmU9ZnVuY3Rpb24gSW50KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIFJudChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gT250KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5''@;'; put 'put ''bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxaLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2godWUpe0M9''@;'; put 'put ''ITAsWj11ZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IFp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24gTG50KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBBTWUoZCxnKTt2YXIgaD1PYmplY3Qu''@;'; put 'put ''cHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJ''@;'; put 'put ''KW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIEFNZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gRG50KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVy''@;'; put 'put ''IHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oX2Uuc3BsaXQoIjoiKSwyKSxLZT1OZVswXSxwdD1OZVsxXTtpZighd01lLmhhcyhLZSkpdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHBsdWdpbiBk''@;'; put 'put ''ZXBlbmRlbmN5IHR5cGUgIicuY29uY2F0KEtlLCciIHdhcyBmb3VuZC4nKSk7d01lLmdldChLZSkocHQpfHxDLnB1c2goIiAtICIuY29uY2F0KHB0LCIgKCIpLmNvbmNhdChLZSwiKSIpKX0pLEMubGVuZ3RoPjApe3ZhciBJPVsiVGhlICIuY29uY2F0KHRoaXMucGx1Z2luTmFtZSwiIHBsdWdp''@;'; put 'put ''biByZXF1aXJlcyB0aGUgZm9sbG93aW5nIG1vZHVsZXM6XG4iKSwiIi5jb25jYXQoQy5qb2luKCJcbiIpLCJcbiIpXS5qb2luKCIiKTtHNmUucHVzaChJKX19aWYoRGd8fChEZz1HM2UoKSksRGcuaW5kZXhPZigiVW5kb1JlZG8iKT49MCYmRGcuc3BsaWNlKERnLmluZGV4T2YoIlVuZG9SZWRv''@;'; put 'put ''IiksMSksRGcuaW5kZXhPZih0aGlzLnBsdWdpbk5hbWUpPj0wJiZEZy5zcGxpY2UoRGcuaW5kZXhPZih0aGlzLnBsdWdpbk5hbWUpLDEpLHRoaXMuaG90LmFkZEhvb2tPbmNlKCJhZnRlclBsdWdpbnNJbml0aWFsaXplZCIsZnVuY3Rpb24oKXtoLmlzRW5hYmxlZCYmaC5pc0VuYWJsZWQoKSYm''@;'; put 'put ''aC5lbmFibGVQbHVnaW4oKX0pLDA9PT1EZy5sZW5ndGgpe2lmKEc2ZS5sZW5ndGg+MCl7dmFyIHVlPVsiIi5jb25jYXQoRzZlLmpvaW4oIlxuIiksIlxuIiksIllvdSBoYXZlIHRvIGltcG9ydCBhbmQgcmVnaXN0ZXIgdGhlbSBtYW51YWxseS4iXS5qb2luKCIiKTt0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''dWUpfXRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclBsdWdpbnNJbml0aWFsaXplZCIpfXRoaXMuaW5pdGlhbGl6ZWQ9ITB9fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSEwfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0''@;'; put 'put ''aGlzLmV2ZW50TWFuYWdlciYmdGhpcy5ldmVudE1hbmFnZXIuY2xlYXIoKSx0aGlzLmNsZWFySG9va3MoKSx0aGlzLmVuYWJsZWQ9ITF9fSx7a2V5OiJhZGRIb29rIix2YWx1ZTpmdW5jdGlvbihoLHYpe3pTLmdldCh0aGlzKS5ob29rc1toXT16Uy5nZXQodGhpcykuaG9va3NbaF18fFtdO3Zh''@;'; put 'put ''ciB5PXpTLmdldCh0aGlzKS5ob29rc1toXTt0aGlzLmhvdC5hZGRIb29rKGgsdikseS5wdXNoKHYpLHpTLmdldCh0aGlzKS5ob29rc1toXT15fX0se2tleToicmVtb3ZlSG9va3MiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXM7VXIoelMuZ2V0KHRoaXMpLmhvb2tzW2hdfHxbXSxmdW5j''@;'; put 'put ''dGlvbih5KXt2LmhvdC5yZW1vdmVIb29rKGgseSl9KX19LHtrZXk6ImNsZWFySG9va3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcyx2PXpTLmdldCh0aGlzKS5ob29rcztHbCh2LGZ1bmN0aW9uKHksQyl7cmV0dXJuIGgucmVtb3ZlSG9va3MoQyl9KSx2Lmxlbmd0aD0wfX0se2tleToi''@;'; put 'put ''Y2FsbE9uUGx1Z2luc1JlYWR5Iix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmlzUGx1Z2luc1JlYWR5P2goKTp0aGlzLnBsdWdpbnNJbml0aWFsaXplZENhbGxiYWNrcy5wdXNoKGgpfX0se2tleToib25BZnRlclBsdWdpbnNJbml0aWFsaXplZCIsdmFsdWU6ZnVuY3Rpb24oKXtVcih0aGlzLnBs''@;'; put 'put ''dWdpbnNJbml0aWFsaXplZENhbGxiYWNrcyxmdW5jdGlvbihoKXtyZXR1cm4gaCgpfSksdGhpcy5wbHVnaW5zSW5pdGlhbGl6ZWRDYWxsYmFja3MubGVuZ3RoPTAsdGhpcy5pc1BsdWdpbnNSZWFkeT0hMH19LHtrZXk6Im9uVXBkYXRlU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2''@;'; put 'put ''PWZ1bmN0aW9uIE5udChkLGcsaCl7aWYoIWcuaGFzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gaH0odGhpcyxiTWUsam50KS5jYWxsKHRoaXMsaCk7dGhpcy5pc0VuYWJsZWQmJih0aGlzLmVu''@;'; put 'put ''YWJsZWQmJiF0aGlzLmlzRW5hYmxlZCgpJiZ0aGlzLmRpc2FibGVQbHVnaW4oKSwhdGhpcy5lbmFibGVkJiZ0aGlzLmlzRW5hYmxlZCgpJiZ0aGlzLmVuYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlZCYmdGhpcy5pc0VuYWJsZWQoKSYmdiYmdGhpcy51cGRhdGVQbHVnaW4oaCkpfX0se2tleToi''@;'; put 'put ''dXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpczt0aGlzLmV2ZW50TWFuYWdlciYmdGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveSgpLHRoaXMuY2xlYXJIb29rcygpLEdsKHRoaXMsZnVuY3Rpb24odix5KXsi''@;'; put 'put ''aG90IiE9PXkmJihoW3ldPW51bGwpfSksZGVsZXRlIHRoaXMudCxkZWxldGUgdGhpcy5ob3R9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiJiYXNlIn19LHtrZXk6IlNFVFRJTkdfS0VZUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMuUExVR0lOX0tFWV19''@;'; put 'put ''fV0pLGR9KCk7ZnVuY3Rpb24gam50KGQpe2lmKCFkKXJldHVybiExO3ZhciBnPXRoaXMuY29uc3RydWN0b3IuU0VUVElOR19LRVlTO2lmKCJib29sZWFuIj09dHlwZW9mIGcpcmV0dXJuIGc7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspaWYodm9pZCAwIT09ZFtnW2hdXSlyZXR1cm4hMDty''@;'; put 'put ''ZXR1cm4hMX1mdW5jdGlvbiBfTWUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBDTWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFy''@;'; put 'put ''IHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgSm50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnKXsoZnVuY3Rpb24gVW50''@;'; put 'put ''KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuaG90PWcsdGhpcy5jb250YWluZXI9bnVsbCx0aGlzLmluamVjdGVkPSExLHRoaXMucm93cz1bXSx0aGlzLmNvbHVt''@;'; put 'put ''bnM9W10sdGhpcy5zYW1wbGVzPW51bGwsdGhpcy5zZXR0aW5ncz17dXNlSGVhZGVyczohMH19cmV0dXJuIGZ1bmN0aW9uIFFudChkLGcsaCl7ZyYmQ01lKGQucHJvdG90eXBlLGcpLGgmJkNNZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0p''@;'; put 'put ''fShkLFt7a2V5OiJhZGRSb3ciLHZhbHVlOmZ1bmN0aW9uKGgsdil7aWYodGhpcy5jb2x1bW5zLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkRvZXNuJ3Qgc3VwcG9ydCBtdWx0aS1kaW1lbnNpb25hbCB0YWJsZSIpO3RoaXMucm93cy5sZW5ndGh8fCh0aGlzLmNvbnRhaW5lcj10aGlzLmNyZWF0''@;'; put 'put ''ZUNvbnRhaW5lcih0aGlzLmhvdC5yb290RWxlbWVudC5jbGFzc05hbWUpKTt2YXIgeT17cm93Omh9O3RoaXMucm93cy5wdXNoKHkpLHRoaXMuc2FtcGxlcz12LHRoaXMudGFibGU9dGhpcy5jcmVhdGVUYWJsZSh0aGlzLmhvdC50YWJsZS5jbGFzc05hbWUpLHRoaXMudGFibGUuY29sR3JvdXAu''@;'; put 'put ''YXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVDb2xHcm91cHNDb2woKSksdGhpcy50YWJsZS50ci5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVJvdyhoKSksdGhpcy5jb250YWluZXIuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMudGFibGUuZnJhZ21lbnQpLHkudGFibGU9dGhpcy50YWJsZS50YWJs''@;'; put 'put ''ZX19LHtrZXk6ImFkZENvbHVtbkhlYWRlcnNSb3ciLHZhbHVlOmZ1bmN0aW9uKGgpe2lmKG51bGwhPXRoaXMuaG90LmdldENvbEhlYWRlcigwKSl7dmFyIHk9e3JvdzotMX07dGhpcy5yb3dzLnB1c2goeSksdGhpcy5jb250YWluZXI9dGhpcy5jcmVhdGVDb250YWluZXIodGhpcy5ob3Qucm9v''@;'; put 'put ''dEVsZW1lbnQuY2xhc3NOYW1lKSx0aGlzLnNhbXBsZXM9aCx0aGlzLnRhYmxlPXRoaXMuY3JlYXRlVGFibGUodGhpcy5ob3QudGFibGUuY2xhc3NOYW1lKSx0aGlzLnRhYmxlLmNvbEdyb3VwLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlQ29sR3JvdXBzQ29sKCkpLHRoaXMuYXBwZW5kQ29sdW1u''@;'; put 'put ''SGVhZGVyc1JvdygpLHRoaXMuY29udGFpbmVyLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnRhYmxlLmZyYWdtZW50KSx5LnRhYmxlPXRoaXMudGFibGUudGFibGV9fX0se2tleToiYWRkQ29sdW1uIix2YWx1ZTpmdW5jdGlvbihoLHYpe2lmKHRoaXMucm93cy5sZW5ndGgpdGhyb3cgbmV3''@;'; put 'put ''IEVycm9yKCJEb2Vzbid0IHN1cHBvcnQgbXVsdGktZGltZW5zaW9uYWwgdGFibGUiKTt0aGlzLmNvbHVtbnMubGVuZ3RofHwodGhpcy5jb250YWluZXI9dGhpcy5jcmVhdGVDb250YWluZXIodGhpcy5ob3Qucm9vdEVsZW1lbnQuY2xhc3NOYW1lKSk7dmFyIHk9e2NvbDpofTt0aGlzLmNvbHVt''@;'; put 'put ''bnMucHVzaCh5KSx0aGlzLnNhbXBsZXM9dix0aGlzLnRhYmxlPXRoaXMuY3JlYXRlVGFibGUodGhpcy5ob3QudGFibGUuY2xhc3NOYW1lKSx0aGlzLmdldFNldHRpbmcoInVzZUhlYWRlcnMiKSYmbnVsbCE9PXRoaXMuaG90LmdldENvbEhlYWRlcihoKSYmdGhpcy5ob3Qudmlldy5hcHBlbmRD''@;'; put 'put ''b2xIZWFkZXIoaCx0aGlzLnRhYmxlLnRoKSx0aGlzLnRhYmxlLnRCb2R5LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlQ29sKGgpKSx0aGlzLmNvbnRhaW5lci5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy50YWJsZS5mcmFnbWVudCkseS50YWJsZT10aGlzLnRhYmxlLnRhYmxlfX0se2tleToi''@;'; put 'put ''Z2V0SGVpZ2h0cyIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5pbmplY3RlZHx8dGhpcy5pbmplY3RUYWJsZSgpLFVyKHRoaXMucm93cyxmdW5jdGlvbih2KXtoKHYucm93LEQxKHYudGFibGUpLTEpfSl9fSx7a2V5OiJnZXRXaWR0aHMiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMuaW5qZWN0ZWR8''@;'; put 'put ''fHRoaXMuaW5qZWN0VGFibGUoKSxVcih0aGlzLmNvbHVtbnMsZnVuY3Rpb24odil7dmFyIHk9di50YWJsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtoKHYuY29sLE1hdGguY2VpbCh5LndpZHRoKSl9KX19LHtrZXk6InNldFNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLnNldHRp''@;'; put 'put ''bmdzPWh9fSx7a2V5OiJzZXRTZXR0aW5nIix2YWx1ZTpmdW5jdGlvbihoLHYpe3RoaXMuc2V0dGluZ3N8fCh0aGlzLnNldHRpbmdzPXt9KSx0aGlzLnNldHRpbmdzW2hdPXZ9fSx7a2V5OiJnZXRTZXR0aW5ncyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXR0aW5nc319LHtrZXk6''@;'; put 'put ''ImdldFNldHRpbmciLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnNldHRpbmdzP3RoaXMuc2V0dGluZ3NbaF06bnVsbH19LHtrZXk6ImNyZWF0ZUNvbEdyb3Vwc0NvbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLHY9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZURvY3Vt''@;'; put 'put ''ZW50RnJhZ21lbnQoKTtyZXR1cm4gdGhpcy5ob3QuaGFzUm93SGVhZGVycygpJiZ2LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlQ29sRWxlbWVudCgtMSkpLHRoaXMuc2FtcGxlcy5mb3JFYWNoKGZ1bmN0aW9uKHkpe1VyKHkuc3RyaW5ncyxmdW5jdGlvbihDKXt2LmFwcGVuZENoaWxkKGguY3Jl''@;'; put 'put ''YXRlQ29sRWxlbWVudChDLmNvbCkpfSl9KSx2fX0se2tleToiY3JlYXRlUm93Iix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLHk9dGhpcy5ob3Qucm9vdERvY3VtZW50LEM9eS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksST15LmNyZWF0ZUVsZW1lbnQoInRoIik7cmV0dXJuIHRoaXMu''@;'; put 'put ''aG90Lmhhc1Jvd0hlYWRlcnMoKSYmKHRoaXMuaG90LnZpZXcuYXBwZW5kUm93SGVhZGVyKGgsSSksQy5hcHBlbmRDaGlsZChJKSksdGhpcy5zYW1wbGVzLmZvckVhY2goZnVuY3Rpb24oWil7VXIoWi5zdHJpbmdzLGZ1bmN0aW9uKHVlKXt2YXIgX2U9dWUuY29sLEJlPXYuaG90LmdldENlbGxN''@;'; put 'put ''ZXRhKGgsX2UpO0JlLmNvbD1fZSxCZS5yb3c9aDt2YXIgTmU9di5ob3QuZ2V0Q2VsbFJlbmRlcmVyKEJlKSxLZT15LmNyZWF0ZUVsZW1lbnQoInRkIik7S2Uuc2V0QXR0cmlidXRlKCJnaG9zdC10YWJsZSIsMSksTmUodi5ob3QsS2UsaCxfZSx2LmhvdC5jb2xUb1Byb3AoX2UpLHVlLnZhbHVl''@;'; put 'put ''LEJlKSxDLmFwcGVuZENoaWxkKEtlKX0pfSksQ319LHtrZXk6ImFwcGVuZENvbHVtbkhlYWRlcnNSb3ciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcyx2PXRoaXMuaG90LnJvb3REb2N1bWVudCx5PXYuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLEM9W107aWYodGhpcy5ob3QuaGFzUm93''@;'; put 'put ''SGVhZGVycygpKXt2YXIgST12LmNyZWF0ZUVsZW1lbnQoInRoIik7Qy5wdXNoKFstMSxJXSkseS5hcHBlbmRDaGlsZChJKX10aGlzLnNhbXBsZXMuZm9yRWFjaChmdW5jdGlvbihaKXtVcihaLnN0cmluZ3MsZnVuY3Rpb24odWUpe3ZhciBfZT11ZS5jb2wsQmU9di5jcmVhdGVFbGVtZW50KCJ0''@;'; put 'put ''aCIpO0MucHVzaChbX2UsQmVdKSx5LmFwcGVuZENoaWxkKEJlKX0pfSksdGhpcy50YWJsZS50SGVhZC5hcHBlbmRDaGlsZCh5KSxVcihDLGZ1bmN0aW9uKFope3ZhciB1ZT1mdW5jdGlvbiBabnQoZCxnKXtyZXR1cm4gZnVuY3Rpb24gWW50KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJu''@;'; put 'put ''IGR9KGQpfHxmdW5jdGlvbiBXbnQoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTsh''@;'; put 'put ''KHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaCh1ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgWn19cmV0dXJuIHZ9fShkLGcp''@;'; put 'put ''fHxmdW5jdGlvbiBHbnQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIF9NZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3Iu''@;'; put 'put ''bmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gX01lKGQsZyl9fShkLGcpfHxmdW5jdGlvbiB6bnQoKXt0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShaLDIpO2gu''@;'; put 'put ''aG90LnZpZXcuYXBwZW5kQ29sSGVhZGVyKHVlWzBdLHVlWzFdKX0pfX0se2tleToiY3JlYXRlQ29sIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLHk9dGhpcy5ob3Qucm9vdERvY3VtZW50LEM9eS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7cmV0dXJuIHRoaXMuc2FtcGxlcy5mb3JF''@;'; put 'put ''YWNoKGZ1bmN0aW9uKEkpe1VyKEkuc3RyaW5ncyxmdW5jdGlvbihaKXt2YXIgdWU9Wi5yb3csX2U9di5ob3QuZ2V0Q2VsbE1ldGEodWUsaCk7X2UuY29sPWgsX2Uucm93PXVlO3ZhciBCZT12LmhvdC5nZXRDZWxsUmVuZGVyZXIoX2UpLE5lPXkuY3JlYXRlRWxlbWVudCgidGQiKSxLZT15LmNy''@;'; put 'put ''ZWF0ZUVsZW1lbnQoInRyIik7TmUuc2V0QXR0cmlidXRlKCJnaG9zdC10YWJsZSIsMSksQmUodi5ob3QsTmUsdWUsaCx2LmhvdC5jb2xUb1Byb3AoaCksWi52YWx1ZSxfZSksS2UuYXBwZW5kQ2hpbGQoTmUpLEMuYXBwZW5kQ2hpbGQoS2UpfSl9KSxDfX0se2tleToiY2xlYW4iLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7dGhpcy5yb3dzLmxlbmd0aD0wLHRoaXMucm93c1stMV09dm9pZCAwLHRoaXMuY29sdW1ucy5sZW5ndGg9MCx0aGlzLnNhbXBsZXMmJnRoaXMuc2FtcGxlcy5jbGVhcigpLHRoaXMuc2FtcGxlcz1udWxsLHRoaXMucmVtb3ZlVGFibGUoKX19LHtrZXk6ImluamVjdFRhYmxlIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO3RoaXMuaW5qZWN0ZWR8fCgoaHx8dGhpcy5ob3Qucm9vdEVsZW1lbnQpLmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyLmZyYWdtZW50KSx0aGlz''@;'; put 'put ''LmluamVjdGVkPSEwKX19LHtrZXk6InJlbW92ZVRhYmxlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaW5qZWN0ZWQmJnRoaXMuY29udGFpbmVyLmNvbnRhaW5lci5wYXJlbnROb2RlJiYodGhpcy5jb250YWluZXIuY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5jb250YWlu''@;'; put 'put ''ZXIuY29udGFpbmVyKSx0aGlzLmNvbnRhaW5lcj1udWxsLHRoaXMuaW5qZWN0ZWQ9ITEpfX0se2tleToiY3JlYXRlQ29sRWxlbWVudCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNvbCIpO3JldHVybiB2LnN0eWxlLndpZHRo''@;'; put 'put ''PSIiLmNvbmNhdCh0aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLmdldFN0cmV0Y2hlZENvbHVtbldpZHRoKGgpLCJweCIpLHZ9fSx7a2V5OiJjcmVhdGVUYWJsZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVu''@;'; put 'put ''dHNbMF06IiIsdj10aGlzLmhvdC5yb290RG9jdW1lbnQseT12LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxDPXYuY3JlYXRlRWxlbWVudCgidGFibGUiKSxJPXYuY3JlYXRlRWxlbWVudCgidGhlYWQiKSxaPXYuY3JlYXRlRWxlbWVudCgidGJvZHkiKSx1ZT12LmNyZWF0ZUVsZW1lbnQoImNv''@;'; put 'put ''bGdyb3VwIiksX2U9di5jcmVhdGVFbGVtZW50KCJ0ciIpLEJlPXYuY3JlYXRlRWxlbWVudCgidGgiKTtyZXR1cm4gdGhpcy5pc1ZlcnRpY2FsKCkmJkMuYXBwZW5kQ2hpbGQodWUpLHRoaXMuaXNIb3Jpem9udGFsKCkmJihfZS5hcHBlbmRDaGlsZChCZSksSS5hcHBlbmRDaGlsZChfZSksQy5z''@;'; put 'put ''dHlsZS50YWJsZUxheW91dD0iYXV0byIsQy5zdHlsZS53aWR0aD0iYXV0byIpLEMuYXBwZW5kQ2hpbGQoSSksdGhpcy5pc1ZlcnRpY2FsKCkmJlouYXBwZW5kQ2hpbGQoX2UpLEMuYXBwZW5kQ2hpbGQoWiksTzAoQyxoKSx5LmFwcGVuZENoaWxkKEMpLHtmcmFnbWVudDp5LHRhYmxlOkMsdEhl''@;'; put 'put ''YWQ6SSx0Qm9keTpaLGNvbEdyb3VwOnVlLHRyOl9lLHRoOkJlfX19LHtrZXk6ImNyZWF0ZUNvbnRhaW5lciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06IiIsdj10aGlzLmhvdC5yb290RG9jdW1l''@;'; put 'put ''bnQseT12LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxDPXYuY3JlYXRlRWxlbWVudCgiZGl2IiksST0iaHRHaG9zdFRhYmxlIGh0QXV0b1NpemUgIi5jb25jYXQoaC50cmltKCkpO3JldHVybiBPMChDLEkpLHkuYXBwZW5kQ2hpbGQoQykse2ZyYWdtZW50OnksY29udGFpbmVyOkN9fX0se2tl''@;'; put 'put ''eToiaXNWZXJ0aWNhbCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hKCF0aGlzLnJvd3MubGVuZ3RofHx0aGlzLmNvbHVtbnMubGVuZ3RoKX19LHtrZXk6ImlzSG9yaXpvbnRhbCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hKCF0aGlzLmNvbHVtbnMubGVuZ3RofHx0aGlzLnJvd3MubGVuZ3Ro''@;'; put 'put ''KX19XSksZH0oKTtjb25zdCBXNmU9Sm50O2Z1bmN0aW9uIGtNZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBxbnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpeyhmdW5jdGlvbiBLbnQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMs''@;'; put 'put ''ZCksdGhpcy5zYW1wbGVzPW51bGwsdGhpcy5kYXRhRmFjdG9yeT1nLHRoaXMuY3VzdG9tU2FtcGxlQ291bnQ9bnVsbCx0aGlzLmFsbG93RHVwbGljYXRlcz0hMX1yZXR1cm4gZnVuY3Rpb24gJG50KGQsZyxoKXtnJiZrTWUoZC5wcm90b3R5cGUsZyksaCYma01lKGQsaCksT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImdldFNhbXBsZUNvdW50Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN1c3RvbVNhbXBsZUNvdW50P3RoaXMuY3VzdG9tU2FtcGxlQ291bnQ6ZC5TQU1QTEVfQ09VTlR9fSx7a2V5OiJzZXRTYW1w''@;'; put 'put ''bGVDb3VudCIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5jdXN0b21TYW1wbGVDb3VudD1ofX0se2tleToic2V0QWxsb3dEdXBsaWNhdGVzIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmFsbG93RHVwbGljYXRlcz1ofX0se2tleToiZ2VuZXJhdGVSb3dTYW1wbGVzIix2YWx1ZTpmdW5jdGlvbiho''@;'; put 'put ''LHYpe3JldHVybiB0aGlzLmdlbmVyYXRlU2FtcGxlcygicm93Iix2LGgpfX0se2tleToiZ2VuZXJhdGVDb2x1bW5TYW1wbGVzIix2YWx1ZTpmdW5jdGlvbihoLHYpe3JldHVybiB0aGlzLmdlbmVyYXRlU2FtcGxlcygiY29sIix2LGgpfX0se2tleToiZ2VuZXJhdGVTYW1wbGVzIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbihoLHYseSl7dmFyIEM9dGhpcyxJPW5ldyBNYXAsWj0ibnVtYmVyIj09dHlwZW9mIHk/e2Zyb206eSx0bzp5fTp5O3JldHVybiBpYShaLmZyb20sWi50byxmdW5jdGlvbihCZSl7dmFyIE5lPUMuZ2VuZXJhdGVTYW1wbGUoaCx2LEJlKTtJLnNldChCZSxOZSl9KSxJfX0se2tleToi''@;'; put 'put ''Z2VuZXJhdGVTYW1wbGUiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgQz10aGlzO2lmKCJyb3ciIT09aCYmImNvbCIhPT1oKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgc2FtcGxlIHR5cGUiKTt2YXIgST1uZXcgTWFwLFo9InJvdyI9PT1oPyJjb2wiOiJyb3ciLHVlPVtdO3JldHVy''@;'; put 'put ''biBpYSh2LmZyb20sdi50byxmdW5jdGlvbihfZSl7dmFyIE90LEJlPSJyb3ciPT09aD9DLmRhdGFGYWN0b3J5KHksX2UpOkMuZGF0YUZhY3RvcnkoX2UseSksTmU9QmUudmFsdWUsS2U9QmUuYnVuZGxlU2VlZCxwdD0ic3RyaW5nIj09dHlwZW9mIEtlJiZLZS5sZW5ndGg+MDtPdD1wdD9LZTp4''@;'; put 'put ''bChOZSk/IiIuY29uY2F0KE9iamVjdC5rZXlzKE5lKS5sZW5ndGgpOkFycmF5LmlzQXJyYXkoTmUpPyIiLmNvbmNhdChOZS5sZW5ndGgpOiIiLmNvbmNhdChldShOZSkubGVuZ3RoKSxJLmhhcyhPdCl8fEkuc2V0KE90LHtuZWVkZWQ6Qy5nZXRTYW1wbGVDb3VudCgpLHN0cmluZ3M6W119KTt2''@;'; put 'put ''YXIgJHQ9SS5nZXQoT3QpOyR0Lm5lZWRlZCYmKCEodWUuaW5kZXhPZihOZSk+LTEpfHxDLmFsbG93RHVwbGljYXRlc3x8cHQpJiYoJHQuc3RyaW5ncy5wdXNoKGZ1bmN0aW9uIFhudChkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1l''@;'; put 'put ''cmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9KHt2YWx1ZTpOZX0sWixfZSkpLHVlLnB1c2goTmUpLCR0Lm5lZWRlZC09MSl9KSxJfX1dLFt7a2V5OiJTQU1QTEVfQ09VTlQiLGdldDpmdW5jdGlvbigpe3JldHVybiAzfX1dKSxkfSgpO2NvbnN0IFNNZT1x''@;'; put 'put ''bnQ7ZnVuY3Rpb24gWTZlKGQpe3JldHVybihZNmU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJv''@;'; put 'put ''bCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBNTWUoZCxnKXtyZXR1cm4gZnVuY3Rpb24gcnJ0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBucnQoZCxnKXt2''@;'; put 'put ''YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5w''@;'; put 'put ''dXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaCh1ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgWn19cmV0dXJuIHZ9fShkLGcpfHxmdW5jdGlvbiB0cnQoZCxnKXtpZihkKXtp''@;'; put 'put ''Zigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIEVNZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgp''@;'; put 'put ''cmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gRU1lKGQsZyl9fShkLGcpfHxmdW5jdGlvbiBlcnQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVt''@;'; put 'put ''cHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIEVNZShkLGcpeyhudWxsPT1nfHxnPmQubGVu''@;'; put 'put ''Z3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIHhNZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29u''@;'; put 'put ''ZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIEdTKCl7cmV0dXJuIEdTPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0''@;'; put 'put ''aW9uKGcsaCx2KXt2YXIgeT1hcnQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LEdTLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlv''@;'; put 'put ''biBhcnQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPUx2KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIFU2ZShkLGcpe3JldHVybihVNmU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5k''@;'; put 'put ''KCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiB1cnQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1ZNmUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQg''@;'; put 'put ''Y29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIFRNZShkKX1mdW5jdGlvbiBUTWUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24n''@;'; put 'put ''dCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIEx2KGQpe3JldHVybihMdj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXpv''@;'; put 'put ''LmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJtb2RpZnlBdXRvQ29sdW1uU2l6ZVNlZWQiKTt2YXIgcHo9ImF1dG9Db2x1bW5TaXplIixRNmU9bmV3IFdlYWtNYXAsZHJ0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBscnQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhy''@;'; put 'put ''b3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSks''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmVTZlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gc3J0KGQpe3ZhciBnPWZ1bmN0aW9uIGNydCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxS''@;'; put 'put ''ZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQp''@;'; put 'put ''e3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PUx2KGQpO2lmKGcpe3ZhciBDPUx2KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB1cnQodGhpcyx5KX19''@;'; put 'put ''KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7cmV0dXJuIGZ1bmN0aW9uIGlydChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLHk9Zy5jYWxsKHRoaXMsdiksUTZlLnNldChUTWUo''@;'; put 'put ''eSkse2NhY2hlZENvbHVtbkhlYWRlcnM6W119KSx5Lmdob3N0VGFibGU9bmV3IFc2ZSh5LmhvdCkseS5zYW1wbGVzR2VuZXJhdG9yPW5ldyBTTWUoZnVuY3Rpb24oQyxJKXt2YXIgWj15LmhvdC5nZXRDZWxsTWV0YShDLEkpLHVlPSIiO1ouc3Bhbm5lZHx8KHVlPXkuaG90LmdldERhdGFBdENl''@;'; put 'put ''bGwoQyxJKSk7dmFyIF9lPSIiO3JldHVybiB5LmhvdC5oYXNIb29rKCJtb2RpZnlBdXRvQ29sdW1uU2l6ZVNlZWQiKSYmKF9lPXkuaG90LnJ1bkhvb2tzKCJtb2RpZnlBdXRvQ29sdW1uU2l6ZVNlZWQiLF9lLFosdWUpKSx7dmFsdWU6dWUsYnVuZGxlU2VlZDpfZX19KSx5LmZpcnN0Q2FsY3Vs''@;'; put 'put ''YXRpb249ITAseS5pblByb2dyZXNzPSExLHkubWVhc3VyZWRDb2x1bW5zPTAseS5jb2x1bW5XaWR0aHNNYXA9bmV3IER3LHkuaG90LmNvbHVtbkluZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKCJhdXRvQ29sdW1uU2l6ZSIseS5jb2x1bW5XaWR0aHNNYXApLHkuYWRkSG9vaygiYmVmb3JlQ29sdW1u''@;'; put 'put ''UmVzaXplIixmdW5jdGlvbihDLEksWil7cmV0dXJuIHkub25CZWZvcmVDb2x1bW5SZXNpemUoQyxJLFopfSkseX1yZXR1cm4gZnVuY3Rpb24gb3J0KGQsZyxoKXtnJiZ4TWUoZC5wcm90b3R5cGUsZyksaCYmeE1lKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dy''@;'; put 'put ''aXRhYmxlOiExfSl9KGgsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hMSE9PXRoaXMuaG90LmdldFNldHRpbmdzKClbcHpdJiYhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5jb2xXaWR0aHN9fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IHk9dGhpcztpZighdGhpcy5lbmFibGVkKXt2YXIgQz10aGlzLmhvdC5nZXRTZXR0aW5ncygpW3B6XTtDJiZudWxsIT1DLnVzZUhlYWRlcnMmJnRoaXMuZ2hvc3RUYWJsZS5zZXRTZXR0aW5nKCJ1c2VIZWFkZXJzIixDLnVzZUhlYWRlcnMpLHRoaXMuc2V0U2FtcGxpbmdPcHRpb25zKCksdGhp''@;'; put 'put ''cy5hZGRIb29rKCJhZnRlckxvYWREYXRhIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJMb2FkRGF0YS5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZUNoYW5nZVJlbmRlciIsZnVuY3Rpb24oSSl7cmV0dXJuIHkub25CZWZvcmVDaGFuZ2UoSSl9KSx0aGlzLmFk''@;'; put 'put ''ZEhvb2soImFmdGVyRm9ybXVsYXNWYWx1ZXNVcGRhdGUiLGZ1bmN0aW9uKEkpe3JldHVybiB5Lm9uQWZ0ZXJGb3JtdWxhc1ZhbHVlc1VwZGF0ZShJKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlVmlld1JlbmRlciIsZnVuY3Rpb24oSSl7cmV0dXJuIHkub25CZWZvcmVWaWV3UmVuZGVyKEkpfSks''@;'; put 'put ''dGhpcy5hZGRIb29rKCJtb2RpZnlDb2xXaWR0aCIsZnVuY3Rpb24oSSxaKXtyZXR1cm4geS5nZXRDb2x1bW5XaWR0aChaLEkpfSksdGhpcy5hZGRIb29rKCJhZnRlckluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckluaXQoKX0pLEdTKEx2KGgucHJvdG90eXBlKSwiZW5hYmxlUGx1''@;'; put 'put ''Z2luIix0aGlzKS5jYWxsKHRoaXMpfX19LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmZpbmRDb2x1bW5zV2hlcmVIZWFkZXJXYXNDaGFuZ2VkKCk7eS5sZW5ndGgmJih0aGlzLmNsZWFyQ2FjaGUoeSksdGhpcy5jYWxjdWxhdGVWaXNpYmxlQ29sdW1u''@;'; put 'put ''c1dpZHRoKCkpLEdTKEx2KGgucHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO0dTKEx2KGgucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSx0''@;'; put 'put ''aGlzLmFkZEhvb2soImJlZm9yZUNvbHVtblJlc2l6ZSIsZnVuY3Rpb24oQyxJLFope3JldHVybiB5Lm9uQmVmb3JlQ29sdW1uUmVzaXplKEMsSSxaKX0pfX0se2tleToiY2FsY3VsYXRlVmlzaWJsZUNvbHVtbnNXaWR0aCIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLmhvdC5jb3VudFJvd3Mo''@;'; put 'put ''KSl7dmFyIEM9dGhpcy5ob3QucmVuZGVyQ2FsbCxJPXRoaXMuZ2V0Rmlyc3RWaXNpYmxlQ29sdW1uKCksWj10aGlzLmdldExhc3RWaXNpYmxlQ29sdW1uKCk7LTE9PT1JfHwtMT09PVp8fHRoaXMuY2FsY3VsYXRlQ29sdW1uc1dpZHRoKHtmcm9tOkksdG86Wn0sdm9pZCAwLEMpfX19LHtrZXk6''@;'; put 'put ''ImNhbGN1bGF0ZUNvbHVtbnNXaWR0aCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOntmcm9tOjAsdG86dGhpcy5ob3QuY291bnRDb2xzKCktMX0sST1hcmd1bWVudHMubGVuZ3RoPjEm''@;'; put 'put ''JnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e2Zyb206MCx0bzp0aGlzLmhvdC5jb3VudFJvd3MoKS0xfSxaPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sdWU9Im51bWJlciI9PXR5cGVvZiBDP3tmcm9tOkMsdG86Q306''@;'; put 'put ''QyxfZT0ibnVtYmVyIj09dHlwZW9mIEk/e2Zyb206SSx0bzpJfTpJO2lhKHVlLmZyb20sdWUudG8sZnVuY3Rpb24oQmUpe3ZhciBOZT15LmhvdC50b1BoeXNpY2FsQ29sdW1uKEJlKTtudWxsPT09TmUmJihOZT1CZSksKFp8fG51bGw9PT15LmNvbHVtbldpZHRoc01hcC5nZXRWYWx1ZUF0SW5k''@;'; put 'put ''ZXgoTmUpJiYheS5ob3QuX2dldENvbFdpZHRoRnJvbVNldHRpbmdzKE5lKSkmJlVyKHkuc2FtcGxlc0dlbmVyYXRvci5nZW5lcmF0ZUNvbHVtblNhbXBsZXMoQmUsX2UpLGZ1bmN0aW9uKHB0KXt2YXIgT3Q9TU1lKHB0LDIpO3JldHVybiB5Lmdob3N0VGFibGUuYWRkQ29sdW1uKE90WzBdLE90''@;'; put 'put ''WzFdKX0pfSksdGhpcy5naG9zdFRhYmxlLmNvbHVtbnMubGVuZ3RoJiYodGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oZnVuY3Rpb24oKXt5Lmdob3N0VGFibGUuZ2V0V2lkdGhzKGZ1bmN0aW9uKEJlLE5lKXt2YXIgS2U9eS5ob3QudG9QaHlzaWNhbENvbHVtbihCZSk7eS5jb2x1bW5XaWR0aHNN''@;'; put 'put ''YXAuc2V0VmFsdWVBdEluZGV4KEtlLE5lKX0pfSwhMCksdGhpcy5tZWFzdXJlZENvbHVtbnM9dWUudG8rMSx0aGlzLmdob3N0VGFibGUuY2xlYW4oKSl9fSx7a2V5OiJjYWxjdWxhdGVBbGxDb2x1bW5zV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPWFyZ3VtZW50cy5sZW5n''@;'; put 'put ''dGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7ZnJvbTowLHRvOnRoaXMuaG90LmNvdW50Um93cygpLTF9LEk9MCxaPXRoaXMuaG90LmNvdW50Q29scygpLTEsdWU9bnVsbDt0aGlzLmluUHJvZ3Jlc3M9ITA7dmFyIF9lPWZ1bmN0aW9uIE5lKCl7aWYoIXkuaG90KXJl''@;'; put 'put ''dHVybiBUWih1ZSksdm9pZCh5LmluUHJvZ3Jlc3M9ITEpO3kuY2FsY3VsYXRlQ29sdW1uc1dpZHRoKHtmcm9tOkksdG86TWF0aC5taW4oSStoLkNBTENVTEFUSU9OX1NURVAsWil9LEMpLChJPUkraC5DQUxDVUxBVElPTl9TVEVQKzEpPFo/dWU9R2hlKE5lKTooVFoodWUpLHkuaW5Qcm9ncmVz''@;'; put 'put ''cz0hMSx5LmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpKX0sQmU9dGhpcy5nZXRTeW5jQ2FsY3VsYXRpb25MaW1pdCgpO3RoaXMuZmlyc3RDYWxjdWxhdGlvbiYmQmU+PTAmJih0aGlzLmNhbGN1bGF0ZUNvbHVtbnNXaWR0aCh7ZnJvbTowLHRvOkJlfSxDKSx0aGlzLmZpcnN0Q2FsY3Vs''@;'; put 'put ''YXRpb249ITEsST1CZSsxKSxJPFo/X2UoKTp0aGlzLmluUHJvZ3Jlc3M9ITF9fSx7a2V5OiJzZXRTYW1wbGluZ09wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtwel0sQz15JiZvMSh5LCJzYW1wbGluZ1JhdGlvIik/eS5zYW1wbGluZ1JhdGlv''@;'; put 'put ''OnZvaWQgMCxJPXkmJm8xKHksImFsbG93U2FtcGxlRHVwbGljYXRlcyIpP3kuYWxsb3dTYW1wbGVEdXBsaWNhdGVzOnZvaWQgMDtDJiYhaXNOYU4oQykmJnRoaXMuc2FtcGxlc0dlbmVyYXRvci5zZXRTYW1wbGVDb3VudChwYXJzZUludChDLDEwKSksSSYmdGhpcy5zYW1wbGVzR2VuZXJhdG9y''@;'; put 'put ''LnNldEFsbG93RHVwbGljYXRlcyhJKX19LHtrZXk6InJlY2FsY3VsYXRlQWxsQ29sdW1uc1dpZHRoIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90LnZpZXcmJnRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUuaXNWaXNpYmxlKCkmJih0aGlzLmNsZWFyQ2FjaGUoKSx0aGlzLmNhbGN1bGF0ZUFs''@;'; put 'put ''bENvbHVtbnNXaWR0aCgpKX19LHtrZXk6ImdldFN5bmNDYWxjdWxhdGlvbkxpbWl0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaG90LmdldFNldHRpbmdzKClbcHpdLEM9aC5TWU5DX0NBTENVTEFUSU9OX0xJTUlULEk9dGhpcy5ob3QuY291bnRDb2xzKCktMTtyZXR1cm4geGwoeSkm''@;'; put 'put ''JihvM2UoQz15LnN5bmNMaW1pdCk/Qz1QM2UoSSxDKTpDPj49MCksTWF0aC5taW4oQyxJKX19LHtrZXk6ImdldENvbHVtbldpZHRoIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dm9pZCAwLEk9''@;'; put 'put ''IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxaPUM7cmV0dXJuIHZvaWQgMD09PVomJihaPXRoaXMuY29sdW1uV2lkdGhzTWFwLmdldFZhbHVlQXRJbmRleCh0aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKHkpKSxJJiYibnVtYmVyIj09''@;'; put 'put ''dHlwZW9mIFomJihaPU1hdGgubWF4KFosTmRlLkRFRkFVTFRfV0lEVEgpKSksWn19LHtrZXk6ImdldEZpcnN0VmlzaWJsZUNvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmhvdC52aWV3Ll93dDtpZih5Lnd0Vmlld3BvcnQuY29sdW1uc1Zpc2libGVDYWxjdWxhdG9yKXt2YXIg''@;'; put 'put ''Qz15Lnd0VGFibGUuZ2V0Rmlyc3RWaXNpYmxlQ29sdW1uKCk7aWYoLTEhPT1DKXJldHVybiB0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KEMpfWlmKHkud3RWaWV3cG9ydC5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvcil7dmFyIEk9eS53dFRh''@;'; put 'put ''YmxlLmdldEZpcnN0UmVuZGVyZWRDb2x1bW4oKTtpZigtMSE9PUkpcmV0dXJuIHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoSSl9cmV0dXJuLTF9fSx7a2V5OiJnZXRMYXN0VmlzaWJsZUNvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''eT10aGlzLmhvdC52aWV3Ll93dDtpZih5Lnd0Vmlld3BvcnQuY29sdW1uc1Zpc2libGVDYWxjdWxhdG9yKXt2YXIgQz15Lnd0VGFibGUuZ2V0TGFzdFZpc2libGVDb2x1bW4oKTtpZigtMSE9PUMpcmV0dXJuIHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJh''@;'; put 'put ''YmxlSW5kZXgoQyl9aWYoeS53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yKXt2YXIgST15Lnd0VGFibGUuZ2V0TGFzdFJlbmRlcmVkQ29sdW1uKCk7aWYoLTEhPT1JKXJldHVybiB0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4''@;'; put 'put ''KEkpfXJldHVybi0xfX0se2tleToiZmluZENvbHVtbnNXaGVyZUhlYWRlcldhc0NoYW5nZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0Q29sSGVhZGVyKCksST1RNmUuZ2V0KHRoaXMpLmNhY2hlZENvbHVtbkhlYWRlcnM7cmV0dXJuIFN1KHksZnVuY3Rpb24odWUsX2Us''@;'; put 'put ''QmUpe3ZhciBOZT1JLmxlbmd0aDtyZXR1cm4oTmUtMTxCZXx8SVtCZV0hPT1fZSkmJnVlLnB1c2goQmUpLE5lLTE8QmU/SS5wdXNoKF9lKTpJW0JlXT1fZSx1ZX0sW10pfX0se2tleToiY2xlYXJDYWNoZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9YXJndW1lbnRzLmxlbmd0aD4w''@;'; put 'put ''JiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltdO0MubGVuZ3RoP3RoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7VXIoQyxmdW5jdGlvbihJKXt5LmNvbHVtbldpZHRoc01hcC5zZXRWYWx1ZUF0SW5kZXgoSSxudWxsKX0pfSwhMCk6dGhpcy5jb2x1bW5XaWR0''@;'; put 'put ''aHNNYXAuY2xlYXIoKX19LHtrZXk6ImlzTmVlZFJlY2FsY3VsYXRlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhZzQodGhpcy5jb2x1bW5XaWR0aHNNYXAuZ2V0VmFsdWVzKCkuc2xpY2UoMCx0aGlzLm1lYXN1cmVkQ29sdW1ucyksZnVuY3Rpb24oeSl7cmV0dXJuIG51bGw9PT15fSkubGVu''@;'; put 'put ''Z3RofX0se2tleToib25CZWZvcmVWaWV3UmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2FsY3VsYXRlVmlzaWJsZUNvbHVtbnNXaWR0aCgpLHRoaXMuaXNOZWVkUmVjYWxjdWxhdGUoKSYmIXRoaXMuaW5Qcm9ncmVzcyYmdGhpcy5jYWxjdWxhdGVBbGxDb2x1bW5zV2lkdGgoKX19LHtr''@;'; put 'put ''ZXk6Im9uQWZ0ZXJMb2FkRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuaG90LnZpZXc/dGhpcy5yZWNhbGN1bGF0ZUFsbENvbHVtbnNXaWR0aCgpOnNldFRpbWVvdXQoZnVuY3Rpb24oKXt5LmhvdCYmeS5yZWNhbGN1bGF0ZUFsbENvbHVtbnNXaWR0aCgpfSwwKX19LHtr''@;'; put 'put ''ZXk6Im9uQmVmb3JlQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9T2woeSxmdW5jdGlvbihaKXt2YXIgdWU9TU1lKFosMik7cmV0dXJuIEMuaG90LnRvUGh5c2ljYWxDb2x1bW4oQy5ob3QucHJvcFRvQ29sKHVlWzFdKSl9KTt0aGlzLmNsZWFyQ2FjaGUoQXJyYXkuZnJv''@;'; put 'put ''bShuZXcgU2V0KEkpKSl9fSx7a2V5OiJvbkJlZm9yZUNvbHVtblJlc2l6ZSIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe3ZhciBaPXk7cmV0dXJuIEkmJih0aGlzLmNhbGN1bGF0ZUNvbHVtbnNXaWR0aChDLHZvaWQgMCwhMCksWj10aGlzLmdldENvbHVtbldpZHRoKEMsdm9pZCAwLCExKSksWn19''@;'; put 'put ''LHtrZXk6Im9uQWZ0ZXJJbml0Iix2YWx1ZTpmdW5jdGlvbigpe1E2ZS5nZXQodGhpcykuY2FjaGVkQ29sdW1uSGVhZGVycz10aGlzLmhvdC5nZXRDb2xIZWFkZXIoKX19LHtrZXk6Im9uQWZ0ZXJGb3JtdWxhc1ZhbHVlc1VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEk9T2woZzQoeSxm''@;'; put 'put ''dW5jdGlvbihaKXt2YXIgdWU7cmV0dXJuIFRvKG51bGw9PT0odWU9Wi5hZGRyZXNzKXx8dm9pZCAwPT09dWU/dm9pZCAwOnVlLmNvbCl9KSxmdW5jdGlvbihaKXtyZXR1cm4gWi5hZGRyZXNzLmNvbH0pO3RoaXMuY2xlYXJDYWNoZShBcnJheS5mcm9tKG5ldyBTZXQoSSkpKX19LHtrZXk6ImRl''@;'; put 'put ''c3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5naG9zdFRhYmxlLmNsZWFuKCksR1MoTHYoaC5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcHp9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFki''@;'; put 'put ''LGdldDpmdW5jdGlvbigpe3JldHVybiAxMH19LHtrZXk6IlNFVFRJTkdfS0VZUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5OiJDQUxDVUxBVElPTl9TVEVQIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gNTB9fSx7a2V5OiJTWU5DX0NBTENVTEFUSU9OX0xJTUlUIixnZXQ6ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gNTB9fV0pLGh9KFlzKSxXUz17aG9yaXpvbnRhbDoiaG9yaXpvbnRhbCIsdmVydGljYWw6InZlcnRpY2FsIn07ZnVuY3Rpb24gSjZlKGQpe3JldHVybihKNmU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVu''@;'; put 'put ''Y3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBJTWUoZCxnKXtpZihk''@;'; put 'put ''KXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIFg2ZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09''@;'; put 'put ''PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gWDZlKGQsZyl9fWZ1bmN0aW9uIFg2ZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgp''@;'; put 'put ''O2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIERNZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1''@;'; put 'put ''ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIFlTKCl7cmV0dXJuIFlTPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1F''@;'; put 'put ''cnQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LFlTLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBFcnQoZCxnKXtmb3IoOyFP''@;'; put 'put ''YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPU92KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIEs2ZShkLGcpe3JldHVybihLNmU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXty''@;'; put 'put ''ZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBJcnQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1KNmUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBv''@;'; put 'put ''bmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIExNZShkKX1mdW5jdGlvbiBMTWUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3Jl''@;'; put 'put ''dHVybiBkfWZ1bmN0aW9uIE92KGQpe3JldHVybihPdj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXpvLmdldFNpbmdsZXRvbigpLnJl''@;'; put 'put ''Z2lzdGVyKCJtb2RpZnlBdXRvZmlsbFJhbmdlIiksem8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZUF1dG9maWxsIiksem8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyQXV0b2ZpbGwiKTt2YXIgT01lPSJhdXRvZmlsbCIsT3J0PVsiZmlsbEhhbmRsZSJdLFBydD1mdW5j''@;'; put 'put ''dGlvbihkKXshZnVuY3Rpb24geHJ0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZn''@;'; put 'put ''LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJks2ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIFRydChkKXt2YXIgZz1mdW5j''@;'; put 'put ''dGlvbiBEcnQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1''@;'; put 'put ''ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1PdihkKTtpZihnKXt2YXIgQz1Pdih0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYs''@;'; put 'put ''YXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gSXJ0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYpe3ZhciB5O3JldHVybiBmdW5jdGlvbiBTcnQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2Fs''@;'; put 'put ''bCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoeT1nLmNhbGwodGhpcyx2KSkuZXZlbnRNYW5hZ2VyPW5ldyBMMShMTWUoeSkpLHkuYWRkaW5nU3RhcnRlZD0hMSx5Lm1vdXNlRG93bk9uQ2VsbENvcm5lcj0hMSx5Lm1vdXNlRHJhZ091dHNpZGU9ITEseS5oYW5kbGVEcmFnZ2Vk''@;'; put 'put ''Q2VsbHM9MCx5LmRpcmVjdGlvbnM9W10seS5hdXRvSW5zZXJ0Um93PSExLHl9cmV0dXJuIGZ1bmN0aW9uIE1ydChkLGcsaCl7ZyYmRE1lKGQucHJvdG90eXBlLGcpLGgmJkRNZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5''@;'; put 'put ''OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaG90LmdldFNldHRpbmdzKCkuZmlsbEhhbmRsZX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuZW5hYmxlZHx8KHRoaXMubWFwU2V0dGluZ3MoKSx0aGlzLnJlZ2lz''@;'; put 'put ''dGVyRXZlbnRzKCksdGhpcy5hZGRIb29rKCJhZnRlck9uQ2VsbENvcm5lck1vdXNlRG93biIsZnVuY3Rpb24oQyl7cmV0dXJuIHkub25BZnRlckNlbGxDb3JuZXJNb3VzZURvd24oQyl9KSx0aGlzLmFkZEhvb2soImFmdGVyT25DZWxsQ29ybmVyRGJsQ2xpY2siLGZ1bmN0aW9uKEMpe3JldHVy''@;'; put 'put ''biB5Lm9uQ2VsbENvcm5lckRibENsaWNrKEMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZU92ZXIiLGZ1bmN0aW9uKEMsSSl7cmV0dXJuIHkub25CZWZvcmVDZWxsTW91c2VPdmVyKEkpfSksWVMoT3YoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhp''@;'; put 'put ''cykpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksWVMoT3YoaC5wcm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3RoaXMuY2xlYXJNYXBwZWRTZXR0aW5ncygpLFlTKE92KGgucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImdldFNlbGVjdGlvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPXRoaXMuaG90LmdldFNlbGVjdGVk''@;'; put 'put ''UmFuZ2VMYXN0KCksST1DLmdldFRvcFN0YXJ0Q29ybmVyKCksWj1JLnJvdyx1ZT1JLmNvbCxfZT1DLmdldEJvdHRvbUVuZENvcm5lcigpLEtlPXRoaXMuaG90LnJ1bkhvb2tzKCJtb2RpZnlDb3B5YWJsZVJhbmdlIixbe3N0YXJ0Um93Olosc3RhcnRDb2w6dWUsZW5kUm93Ol9lLnJvdyxlbmRD''@;'; put 'put ''b2w6X2UuY29sfV0pLHB0PVtdLE90PVtdLCR0PVtdO3JldHVybiBVcihLZSxmdW5jdGlvbihmbil7Zm9yKHZhciBMbj1mbi5zdGFydFJvdztMbjw9Zm4uZW5kUm93O0xuKz0xKS0xPT09cHQuaW5kZXhPZihMbikmJnB0LnB1c2goTG4pO2Zvcih2YXIgaXI9Zm4uc3RhcnRDb2w7aXI8PWZuLmVu''@;'; put 'put ''ZENvbDtpcis9MSktMT09PU90LmluZGV4T2YoaXIpJiZPdC5wdXNoKGlyKX0pLFVyKHB0LGZ1bmN0aW9uKGZuKXt2YXIgTG49W107VXIoT3QsZnVuY3Rpb24oaXIpe0xuLnB1c2goeS5ob3QuZ2V0Q29weWFibGVEYXRhKGZuLGlyKSl9KSwkdC5wdXNoKExuKX0pLCR0fX0se2tleToiZmlsbElu''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7aWYodGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5nZXRGaWxsKCkuaXNFbXB0eSgpKXJldHVybiExO3ZhciBJPWZ1bmN0aW9uIGJydChkLGcpe3JldHVybiBmdW5jdGlvbiBrcnQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4g''@;'; put 'put ''ZH0oZCl8fGZ1bmN0aW9uIENydChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksWix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEo''@;'; put 'put ''eT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKHVlKXtDPSEwLFo9dWV9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBafX1yZXR1cm4gdn19KGQsZyl8''@;'; put 'put ''fElNZShkLGcpfHxmdW5jdGlvbiBfcnQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wu''@;'; put 'put ''aXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfSh0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmdldEZpbGwoKS5nZXRWaXN1YWxDb3JuZXJzKCksNCksWj1JWzBdLHVlPUlbMV0sX2U9SVsyXSxCZT1JWzNdLE5lPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksS2U9TmUuZ2V0VG9w''@;'; put 'put ''U3RhcnRDb3JuZXIoKSxwdD1OZS5nZXRCb3R0b21FbmRDb3JuZXIoKTt0aGlzLnJlc2V0U2VsZWN0aW9uT2ZEcmFnZ2VkQXJlYSgpO3ZhciBPdD1bS2Uucm93LEtlLmNvbCxwdC5yb3cscHQuY29sXSwkdD10aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5QXV0b2ZpbGxSYW5nZSIsW01hdGgubWlu''@;'; put 'put ''KEtlLnJvdyxaKSxNYXRoLm1pbihLZS5jb2wsdWUpLE1hdGgubWF4KHB0LnJvdyxfZSksTWF0aC5tYXgocHQuY29sLEJlKV0sT3QpLGZuPWZ1bmN0aW9uIGdydChkLGcsaCl7dmFyIHYseSxDO3JldHVybiBnWzBdPT09ZFswXSYmZ1sxXTxkWzFdPyhDPSJsZWZ0Iix2PWgoZ1swXSxnWzFdKSx5''@;'; put 'put ''PWgoZ1syXSxkWzFdLTEpKTpnWzJdPT09ZFsyXSYmZ1swXT09PWRbMF0mJmdbM10+ZFszXT8oQz0icmlnaHQiLHY9aChnWzBdLGRbM10rMSkseT1oKGdbMl0sZ1szXSkpOmdbMF08ZFswXSYmZ1sxXT09PWRbMV0/KEM9InVwIix2PWgoZ1swXSxnWzFdKSx5PWgoZFswXS0xLGdbM10pKTpnWzJd''@;'; put 'put ''PmRbMl0mJmdbMV09PT1kWzFdJiYoQz0iZG93biIsdj1oKGRbMl0rMSxnWzFdKSx5PWgoZ1syXSxnWzNdKSksdiYmdi5ub3JtYWxpemUoKSx5JiZ5Lm5vcm1hbGl6ZSgpLHtkaXJlY3Rpb25PZkRyYWc6QyxzdGFydE9mRHJhZ0Nvb3Jkczp2LGVuZE9mRHJhZ0Nvb3Jkczp5fX0oT3QsJHQsZnVu''@;'; put 'put ''Y3Rpb24oZm8sSWEpe3JldHVybiB5LmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhmbyxJYSl9KSxMbj1mbi5kaXJlY3Rpb25PZkRyYWcsaXI9Zm4uc3RhcnRPZkRyYWdDb29yZHMsbXI9Zm4uZW5kT2ZEcmFnQ29vcmRzO2lmKGlyJiZpci5yb3c+LTEmJmlyLmNvbD4tMSl7dmFyIFNyPXRoaXMuZ2V0''@;'; put 'put ''U2VsZWN0aW9uRGF0YSgpLHdyPU5lLmNsb25lKCksUXI9dGhpcy5ob3QuX2NyZWF0ZUNlbGxSYW5nZShpcixpcixtcikseWk9dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUF1dG9maWxsIixTcix3cixRcixMbik7aWYoITE9PT15aSlyZXR1cm4gdGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdo''@;'; put 'put ''dC5nZXRGaWxsKCkuY2xlYXIoKSx0aGlzLmhvdC5yZW5kZXIoKSwhMTt2YXIgS2k9ZnVuY3Rpb24gcHJ0KGQsZyxoLHYpe3ZhciB5PWgubGVuZ3RoLEM9aD9oWzBdLmxlbmd0aDowLEk9W10sWj1nLnJvdy1kLnJvdyx1ZT1nLmNvbC1kLmNvbDtpZigtMSE9PVsiZG93biIsInVwIl0uaW5kZXhP''@;'; put 'put ''Zih2KSl7Zm9yKHZhciBfZT1bXSxCZT0wO0JlPHVlO0JlKyspe3ZhciBOZT1wYXJzZUludChoWzBdW0JlXSwxMCksS2U9cGFyc2VJbnQoaFt5LTFdW0JlXSwxMCk7X2UucHVzaCgoImRvd24iPT09dj9LZS1OZTpOZS1LZSkvKHktMSl8fDApfUkucHVzaChfZSl9aWYoLTEhPT1bInJpZ2h0Iiwi''@;'; put 'put ''bGVmdCJdLmluZGV4T2YodikpZm9yKHZhciBPdD0wO090PFo7T3QrKyl7dmFyICR0PXBhcnNlSW50KGhbT3RdWzBdLDEwKSxmbj1wYXJzZUludChoW090XVtDLTFdLDEwKTtJLnB1c2goWygicmlnaHQiPT09dj9mbi0kdDokdC1mbikvKEMtMSl8fDBdKX1yZXR1cm4gSX0oaXIsbXIsU3IsTG4p''@;'; put 'put ''LFNvPXlpLFBvPXlpO2lmKFsidXAiLCJsZWZ0Il0uaW5kZXhPZihMbik+LTEmJigxIT09UG8ubGVuZ3RofHwwIT09UG9bMF0ubGVuZ3RoKSlpZihTbz1bXSwidXAiPT09TG4pZm9yKHZhciBTYT1tci5yb3ctaXIucm93KzEsSmE9U2ElUG8ubGVuZ3RoLGxhPTA7bGE8U2E7bGErKylTby5wdXNo''@;'; put 'put ''KFBvWyhsYSsoUG8ubGVuZ3RoLUphKSklUG8ubGVuZ3RoXSk7ZWxzZSBmb3IodmFyIGFsPW1yLmNvbC1pci5jb2wrMSxScz1hbCVQb1swXS5sZW5ndGgsSDA9MDtIMDxQby5sZW5ndGg7SDArKyl7U28ucHVzaChbXSk7Zm9yKHZhciBybz0wO3JvPGFsO3JvKyspU29bSDBdLnB1c2goUG9bSDBd''@;'; put 'put ''WyhybysoUG9bSDBdLmxlbmd0aC1ScykpJVBvW0gwXS5sZW5ndGhdKX10aGlzLmhvdC5wb3B1bGF0ZUZyb21BcnJheShpci5yb3csaXIuY29sLFNvLG1yLnJvdyxtci5jb2wsIiIuY29uY2F0KHRoaXMucGx1Z2luTmFtZSwiLmZpbGwiKSxudWxsLExuLEtpKSx0aGlzLnNldFNlbGVjdGlvbigk''@;'; put 'put ''dCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQXV0b2ZpbGwiLFNvLHdyLFFyLExuKSx0aGlzLmhvdC5yZW5kZXIoKX1lbHNlIHRoaXMuaG90Ll9yZWZyZXNoQm9yZGVycygpO3JldHVybiEwfX0se2tleToicmVkdWNlU2VsZWN0aW9uQXJlYUlmTmVlZGVkIix2YWx1ZTpmdW5jdGlvbih5KXty''@;'; put 'put ''ZXR1cm4geS5yb3c8MCYmKHkucm93PTApLHkuY29sPDAmJih5LmNvbD0wKSx5fX0se2tleToiZ2V0Q29vcmRzT2ZEcmFnQW5kRHJvcEJvcmRlcnMiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksST1DLmdldEJvdHRvbUVuZENvcm5lcigp''@;'; put 'put ''LFo9eTtpZih0aGlzLmRpcmVjdGlvbnMuaW5jbHVkZXMoV1MudmVydGljYWwpJiZ0aGlzLmRpcmVjdGlvbnMuaW5jbHVkZXMoV1MuaG9yaXpvbnRhbCkpe3ZhciB1ZT1DLmdldFRvcFN0YXJ0Q29ybmVyKCk7KEkuY29sPD15LmNvbHx8dWUuY29sPj15LmNvbCkmJihaPXRoaXMuaG90Ll9jcmVh''@;'; put 'put ''dGVDZWxsQ29vcmRzKEkucm93LHkuY29sKSksKEkucm93PHkucm93fHx1ZS5yb3c+eS5yb3cpJiYoWj10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3Jkcyh5LnJvdyxJLmNvbCkpfWVsc2UgaWYodGhpcy5kaXJlY3Rpb25zLmluY2x1ZGVzKFdTLnZlcnRpY2FsKSlaPXRoaXMuaG90Ll9jcmVhdGVD''@;'; put 'put ''ZWxsQ29vcmRzKHkucm93LEkuY29sKTtlbHNle2lmKCF0aGlzLmRpcmVjdGlvbnMuaW5jbHVkZXMoV1MuaG9yaXpvbnRhbCkpcmV0dXJuO1o9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoSS5yb3cseS5jb2wpfXJldHVybiB0aGlzLnJlZHVjZVNlbGVjdGlvbkFyZWFJZk5lZWRlZChaKX19''@;'; put 'put ''LHtrZXk6InNob3dCb3JkZXIiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMuZ2V0Q29vcmRzT2ZEcmFnQW5kRHJvcEJvcmRlcnMoeSk7QyYmdGhpcy5yZWRyYXdCb3JkZXJzKEMpfX0se2tleToiYWRkUm93Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5ob3QuX3JlZ2lz''@;'; put 'put ''dGVyVGltZW91dChmdW5jdGlvbigpe3kuaG90LmFsdGVyKCJpbnNlcnRfcm93Iix2b2lkIDAsMSwiIi5jb25jYXQoeS5wbHVnaW5OYW1lLCIuZmlsbCIpKSx5LmFkZGluZ1N0YXJ0ZWQ9ITF9LDIwMCl9fSx7a2V5OiJhZGROZXdSb3dJZk5lZWRlZCIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhp''@;'; put 'put ''cy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5nZXRGaWxsKCkuaXNFbXB0eSgpJiYhMT09PXRoaXMuYWRkaW5nU3RhcnRlZCYmdGhpcy5hdXRvSW5zZXJ0Um93KXt2YXIgeT10aGlzLmhvdC5nZXRTZWxlY3RlZExhc3QoKSxDPXRoaXMuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQuZ2V0RmlsbCgp''@;'; put 'put ''LmdldFZpc3VhbENvcm5lcnMoKSxJPXRoaXMuaG90LmNvdW50Um93cygpO3lbMl08SS0xJiZDWzJdPT09SS0xJiYodGhpcy5hZGRpbmdTdGFydGVkPSEwLHRoaXMuYWRkUm93KCkpfX19LHtrZXk6ImdldEluZGV4T2ZMYXN0QWRqYWNlbnRGaWxsZWRJblJvdyIsdmFsdWU6ZnVuY3Rpb24oeSl7''@;'; put 'put ''Zm9yKHZhciBaLEM9dGhpcy5ob3QuZ2V0RGF0YSgpLEk9dGhpcy5ob3QuY291bnRSb3dzKCksdWU9eVsyXSsxO3VlPEk7dWUrKyl7Zm9yKHZhciBfZT15WzFdO19lPD15WzNdO19lKyspaWYoQ1t1ZV1bX2VdKXJldHVybi0xOyhDW3VlXVt5WzFdLTFdfHxDW3VlXVt5WzNdKzFdKSYmKFo9dWUp''@;'; put 'put ''fXJldHVybiBafX0se2tleToiYWRkU2VsZWN0aW9uRnJvbVN0YXJ0QXJlYVRvU3BlY2lmaWNSb3dJbmRleCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmdldEZpbGwoKS5jbGVhcigpLmFkZCh0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3Jkcyh5WzBd''@;'; put 'put ''LHlbMV0pKS5hZGQodGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoQyx5WzNdKSkuY29tbWl0KCl9fSx7a2V5OiJzZXRTZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDOyhDPXRoaXMuaG90KS5zZWxlY3RDZWxsLmFwcGx5KEMsZnVuY3Rpb24gdnJ0KGQpe3JldHVybiBmdW5jdGlv''@;'; put 'put ''biB3cnQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gWDZlKGQpfShkKXx8ZnVuY3Rpb24geXJ0KGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0o''@;'; put 'put ''ZCl8fElNZShkKXx8ZnVuY3Rpb24gQXJ0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVy''@;'; put 'put ''YXRvcl0oKSBtZXRob2QuIil9KCl9KE9sKHksZnVuY3Rpb24oSSl7cmV0dXJuIE1hdGgubWF4KEksMCl9KSkuY29uY2F0KFshMSwhMV0pKX19LHtrZXk6InNlbGVjdEFkamFjZW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaG90LmdldFNlbGVjdGVkTGFzdCgpLEM9dGhpcy5nZXRJ''@;'; put 'put ''bmRleE9mTGFzdEFkamFjZW50RmlsbGVkSW5Sb3coeSk7cmV0dXJuLTEhPT1DJiZ2b2lkIDAhPT1DJiYodGhpcy5hZGRTZWxlY3Rpb25Gcm9tU3RhcnRBcmVhVG9TcGVjaWZpY1Jvd0luZGV4KHksQyksITApfX0se2tleToicmVzZXRTZWxlY3Rpb25PZkRyYWdnZWRBcmVhIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbigpe3RoaXMuaGFuZGxlRHJhZ2dlZENlbGxzPTAsdGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5nZXRGaWxsKCkuY2xlYXIoKX19LHtrZXk6InJlZHJhd0JvcmRlcnMiLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQuZ2V0RmlsbCgpLmNsZWFy''@;'; put 'put ''KCkuYWRkKHRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkuZnJvbSkuYWRkKHRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkudG8pLmFkZCh5KS5jb21taXQoKSx0aGlzLmhvdC52aWV3LnJlbmRlcigpfX0se2tleToiZ2V0SWZNb3VzZVdhc0RyYWdnZWRPdXRzaWRlIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLmhvdC5yb290RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LEk9anUodGhpcy5ob3QudGFibGUpLnRvcC0odGhpcy5ob3Qucm9vdFdpbmRvdy5wYWdlWU9mZnNldHx8Qy5zY3JvbGxUb3ApK0QxKHRoaXMuaG90LnRhYmxlKSxaPWp1KHRoaXMuaG90LnRh''@;'; put 'put ''YmxlKS5sZWZ0LSh0aGlzLmhvdC5yb290V2luZG93LnBhZ2VYT2Zmc2V0fHxDLnNjcm9sbExlZnQpK0UyKHRoaXMuaG90LnRhYmxlKTtyZXR1cm4geS5jbGllbnRZPkkmJnkuY2xpZW50WDw9Wn19LHtrZXk6InJlZ2lzdGVyRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz10''@;'; put 'put ''aGlzLmhvdC5yb290RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoQywibW91c2V1cCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbk1vdXNlVXAoKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoQywibW91c2Vtb3Zl''@;'; put 'put ''IixmdW5jdGlvbihJKXtyZXR1cm4geS5vbk1vdXNlTW92ZShJKX0pfX0se2tleToib25DZWxsQ29ybmVyRGJsQ2xpY2siLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RBZGphY2VudCgpJiZ0aGlzLmZpbGxJbigpfX0se2tleToib25BZnRlckNlbGxDb3JuZXJNb3VzZURvd24iLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKCl7dGhpcy5oYW5kbGVEcmFnZ2VkQ2VsbHM9MSx0aGlzLm1vdXNlRG93bk9uQ2VsbENvcm5lcj0hMH19LHtrZXk6Im9uQmVmb3JlQ2VsbE1vdXNlT3ZlciIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5tb3VzZURvd25PbkNlbGxDb3JuZXImJiF0aGlzLmhvdC52aWV3LmlzTW91''@;'; put 'put ''c2VEb3duKCkmJnRoaXMuaGFuZGxlRHJhZ2dlZENlbGxzJiYodGhpcy5oYW5kbGVEcmFnZ2VkQ2VsbHMrPTEsdGhpcy5zaG93Qm9yZGVyKHkpLHRoaXMuYWRkTmV3Um93SWZOZWVkZWQoKSl9fSx7a2V5OiJvbk1vdXNlVXAiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5oYW5kbGVEcmFnZ2VkQ2Vs''@;'; put 'put ''bHMmJih0aGlzLmhhbmRsZURyYWdnZWRDZWxscz4xJiZ0aGlzLmZpbGxJbigpLHRoaXMuaGFuZGxlRHJhZ2dlZENlbGxzPTAsdGhpcy5tb3VzZURvd25PbkNlbGxDb3JuZXI9ITEpfX0se2tleToib25Nb3VzZU1vdmUiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMuZ2V0SWZNb3VzZVdh''@;'; put 'put ''c0RyYWdnZWRPdXRzaWRlKHkpOyExPT09dGhpcy5hZGRpbmdTdGFydGVkJiZ0aGlzLmhhbmRsZURyYWdnZWRDZWxscz4wJiZDPyh0aGlzLm1vdXNlRHJhZ091dHNpZGU9ITAsdGhpcy5hZGRpbmdTdGFydGVkPSEwKTp0aGlzLm1vdXNlRHJhZ091dHNpZGU9ITEsdGhpcy5tb3VzZURyYWdPdXRz''@;'; put 'put ''aWRlJiZ0aGlzLmF1dG9JbnNlcnRSb3cmJnRoaXMuYWRkUm93KCl9fSx7a2V5OiJjbGVhck1hcHBlZFNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlyZWN0aW9ucy5sZW5ndGg9MCx0aGlzLmF1dG9JbnNlcnRSb3c9ITF9fSx7a2V5OiJtYXBTZXR0aW5ncyIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgeT1mdW5jdGlvbiBtcnQoZCl7dmFyIGc9e307cmV0dXJuITA9PT1kPyhnLmRpcmVjdGlvbnM9T2JqZWN0LmtleXMoV1MpLGcuYXV0b0luc2VydFJvdz0hMCk6eGwoZCk/KGcuYXV0b0luc2VydFJvdz0hIVRvKGQuYXV0b0luc2VydFJvdykmJmQuZGlyZWN0aW9uIT09V1MuaG9y''@;'; put 'put ''aXpvbnRhbCYmZC5hdXRvSW5zZXJ0Um93LGcuZGlyZWN0aW9ucz1UbyhkLmRpcmVjdGlvbik/W2QuZGlyZWN0aW9uXTpPYmplY3Qua2V5cyhXUykpOiJzdHJpbmciPT10eXBlb2YgZD8oZy5kaXJlY3Rpb25zPVtkXSxnLmF1dG9JbnNlcnRSb3c9ITApOihnLmRpcmVjdGlvbnM9W10sZy5hdXRv''@;'; put 'put ''SW5zZXJ0Um93PSExKSxnfSh0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpbGxIYW5kbGUpO3RoaXMuZGlyZWN0aW9ucz15LmRpcmVjdGlvbnMsdGhpcy5hdXRvSW5zZXJ0Um93PXkuYXV0b0luc2VydFJvd319LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7WVMoT3YoaC5wcm90b3R5''@;'; put 'put ''cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gT01lfX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMjB9fSx7a2V5OiJTRVRUSU5HX0tFWVMiLGdldDpmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybltPTWVdLmNvbmNhdChPcnQpfX1dKSxofShZcyk7ZnVuY3Rpb24gJDZlKGQpe3JldHVybigkNmU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXty''@;'; put 'put ''ZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBGcnQoZCxnKXtyZXR1cm4gZnVuY3Rpb24ganJ0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkp''@;'; put 'put ''cmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBWcnQoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2Fs''@;'; put 'put ''bChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaCh1ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgWn19cmV0dXJuIHZ9''@;'; put 'put ''fShkLGcpfHxmdW5jdGlvbiBOcnQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIFJNZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3Ry''@;'; put 'put ''dWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gUk1lKGQsZyl9fShkLGcpfHxmdW5jdGlvbiBIcnQoKXt0''@;'; put 'put ''aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1''@;'; put 'put ''bmN0aW9uIFJNZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIEJNZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3Yu''@;'; put 'put ''ZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIE9PKCl7cmV0dXJuIE9PPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVm''@;'; put 'put ''bGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1HcnQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19''@;'; put 'put ''LE9PLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBHcnQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPVB3KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIHE2ZShkLGcpe3JldHVybihxNmU9T2JqZWN0LnNldFByb3Rv''@;'; put 'put ''dHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBVcnQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT0kNmUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAh''@;'; put 'put ''PT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIFFydChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBp''@;'; put 'put ''bml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIFB3KGQpe3JldHVybihQdz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9i''@;'; put 'put ''amVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciB4dGU9ImF1dG9Sb3dTaXplIiwkcnQ9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIFdydChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0''@;'; put 'put ''aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFi''@;'; put 'put ''bGU6ITF9KSxnJiZxNmUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBZcnQoZCl7dmFyIGc9ZnVuY3Rpb24gSnJ0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9UHco''@;'; put 'put ''ZCk7aWYoZyl7dmFyIEM9UHcodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIFVydCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24gWnJ0''@;'; put 'put ''KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKHk9Zy5jYWxsKHRoaXMsdikpLnJvd0hlaWdodHNNYXA9dm9pZCAwLHkuaGVhZGVySGVpZ2h0PW51bGwseS5naG9zdFRhYmxl''@;'; put 'put ''PW5ldyBXNmUoeS5ob3QpLHkuc2FtcGxlc0dlbmVyYXRvcj1uZXcgU01lKGZ1bmN0aW9uKEMsSSl7dmFyIFo7cmV0dXJuIEM+PTA/Wj15LmhvdC5nZXREYXRhQXRDZWxsKEMsSSk6LTE9PT1DJiYoWj15LmhvdC5nZXRDb2xIZWFkZXIoSSkpLHt2YWx1ZTpafX0pLHkuZmlyc3RDYWxjdWxhdGlv''@;'; put 'put ''bj0hMCx5LmluUHJvZ3Jlc3M9ITEseS5tZWFzdXJlZFJvd3M9MCx5LnJvd0hlaWdodHNNYXA9bmV3IER3LHkuaG90LnJvd0luZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKCJhdXRvUm93U2l6ZSIseS5yb3dIZWlnaHRzTWFwKSx5LmFkZEhvb2soImJlZm9yZVJvd1Jlc2l6ZSIsZnVuY3Rpb24oQyxJ''@;'; put 'put ''LFope3JldHVybiB5Lm9uQmVmb3JlUm93UmVzaXplKEMsSSxaKX0pLHl9cmV0dXJuIGZ1bmN0aW9uIHpydChkLGcsaCl7ZyYmQk1lKGQucHJvdG90eXBlLGcpLGgmJkJNZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJp''@;'; put 'put ''c0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVt4dGVdO3JldHVybiEwPT09eXx8eGwoeSl9fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLnNldFNhbXBsaW5nT3B0''@;'; put 'put ''aW9ucygpLHRoaXMuYWRkSG9vaygiYWZ0ZXJMb2FkRGF0YSIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyTG9hZERhdGEuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVDaGFuZ2VSZW5kZXIiLGZ1bmN0aW9uKEMpe3JldHVybiB5Lm9uQmVmb3JlQ2hhbmdlKEMp''@;'; put 'put ''fSksdGhpcy5hZGRIb29rKCJiZWZvcmVDb2x1bW5SZXNpemUiLGZ1bmN0aW9uKCl7cmV0dXJuIHkucmVjYWxjdWxhdGVBbGxSb3dzSGVpZ2h0KCl9KSx0aGlzLmFkZEhvb2soImJlZm9yZVZpZXdSZW5kZXIiLGZ1bmN0aW9uKEMpe3JldHVybiB5Lm9uQmVmb3JlVmlld1JlbmRlcihDKX0pLHRo''@;'; put 'put ''aXMuYWRkSG9vaygibW9kaWZ5Um93SGVpZ2h0IixmdW5jdGlvbihDLEkpe3JldHVybiB5LmdldFJvd0hlaWdodChJLEMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlDb2x1bW5IZWFkZXJIZWlnaHQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkuZ2V0Q29sdW1uSGVhZGVySGVpZ2h0KCl9KSxPTyhQdyho''@;'; put 'put ''LnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5oZWFkZXJIZWlnaHQ9bnVsbCxPTyhQdyhoLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMpLmNhbGwo''@;'; put 'put ''dGhpcyksdGhpcy5hZGRIb29rKCJiZWZvcmVSb3dSZXNpemUiLGZ1bmN0aW9uKEMsSSxaKXtyZXR1cm4geS5vbkJlZm9yZVJvd1Jlc2l6ZShDLEksWil9KX19LHtrZXk6ImNhbGN1bGF0ZVJvd3NIZWlnaHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPWFyZ3VtZW50cy5sZW5ndGg+''@;'; put 'put ''MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7ZnJvbTowLHRvOnRoaXMuaG90LmNvdW50Um93cygpLTF9LEk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOntmcm9tOjAsdG86dGhpcy5ob3QuY291bnRDb2xzKCktMX0s''@;'; put 'put ''Wj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLHVlPSJudW1iZXIiPT10eXBlb2YgQz97ZnJvbTpDLHRvOkN9OkMsX2U9Im51bWJlciI9PXR5cGVvZiBJP3tmcm9tOkksdG86SX06STtpZihudWxsIT09dGhpcy5ob3QuZ2V0Q29sSGVhZGVy''@;'; put 'put ''KDApKXt2YXIgQmU9dGhpcy5zYW1wbGVzR2VuZXJhdG9yLmdlbmVyYXRlUm93U2FtcGxlcygtMSxfZSk7dGhpcy5naG9zdFRhYmxlLmFkZENvbHVtbkhlYWRlcnNSb3coQmUuZ2V0KC0xKSl9aWEodWUuZnJvbSx1ZS50byxmdW5jdGlvbihOZSl7KFp8fG51bGw9PT15LnJvd0hlaWdodHNNYXAu''@;'; put 'put ''Z2V0VmFsdWVBdEluZGV4KE5lKSkmJlVyKHkuc2FtcGxlc0dlbmVyYXRvci5nZW5lcmF0ZVJvd1NhbXBsZXMoTmUsX2UpLGZ1bmN0aW9uKHB0KXt2YXIgT3Q9RnJ0KHB0LDIpO3JldHVybiB5Lmdob3N0VGFibGUuYWRkUm93KE90WzBdLE90WzFdKX0pfSksdGhpcy5naG9zdFRhYmxlLnJvd3Mu''@;'; put 'put ''bGVuZ3RoJiYodGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oZnVuY3Rpb24oKXt5Lmdob3N0VGFibGUuZ2V0SGVpZ2h0cyhmdW5jdGlvbihOZSxLZSl7TmU8MD95LmhlYWRlckhlaWdodD1LZTp5LnJvd0hlaWdodHNNYXAuc2V0VmFsdWVBdEluZGV4KHkuaG90LnRvUGh5c2ljYWxSb3coTmUpLEtl''@;'; put 'put ''KX0pfSwhMCksdGhpcy5tZWFzdXJlZFJvd3M9dWUudG8rMSx0aGlzLmdob3N0VGFibGUuY2xlYW4oKSl9fSx7a2V5OiJjYWxjdWxhdGVBbGxSb3dzSGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9h''@;'; put 'put ''cmd1bWVudHNbMF06e2Zyb206MCx0bzp0aGlzLmhvdC5jb3VudENvbHMoKS0xfSxJPTAsWj10aGlzLmhvdC5jb3VudFJvd3MoKS0xLHVlPW51bGw7dGhpcy5pblByb2dyZXNzPSEwO3ZhciBfZT1mdW5jdGlvbiBOZSgpe2lmKCF5LmhvdClyZXR1cm4gVFoodWUpLHZvaWQoeS5pblByb2dyZXNz''@;'; put 'put ''PSExKTt5LmNhbGN1bGF0ZVJvd3NIZWlnaHQoe2Zyb206SSx0bzpNYXRoLm1pbihJK2guQ0FMQ1VMQVRJT05fU1RFUCxaKX0sQyksKEk9SStoLkNBTENVTEFUSU9OX1NURVArMSk8Wj91ZT1HaGUoTmUpOihUWih1ZSkseS5pblByb2dyZXNzPSExLHkuaG90LnZpZXcuYWRqdXN0RWxlbWVudHNT''@;'; put 'put ''aXplKCEwKSx5LmhvdC52aWV3Ll93dC53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5uZWVkRnVsbFJlbmRlciYmeS5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy5pbmxpbmVTdGFydE92ZXJsYXkuY2xvbmUuZHJhdygpKX0sQmU9dGhpcy5nZXRTeW5jQ2FsY3VsYXRpb25MaW1pdCgpO3Ro''@;'; put 'put ''aXMuZmlyc3RDYWxjdWxhdGlvbiYmQmU+PTAmJih0aGlzLmNhbGN1bGF0ZVJvd3NIZWlnaHQoe2Zyb206MCx0bzpCZX0sQyksdGhpcy5maXJzdENhbGN1bGF0aW9uPSExLEk9QmUrMSksSTxaP19lKCk6KHRoaXMuaW5Qcm9ncmVzcz0hMSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6''@;'; put 'put ''ZSghMSkpfX0se2tleToic2V0U2FtcGxpbmdPcHRpb25zIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaG90LmdldFNldHRpbmdzKClbeHRlXSxDPXkmJm8xKHksInNhbXBsaW5nUmF0aW8iKT95LnNhbXBsaW5nUmF0aW86dm9pZCAwLEk9eSYmbzEoeSwiYWxsb3dTYW1wbGVEdXBsaWNh''@;'; put 'put ''dGVzIik/eS5hbGxvd1NhbXBsZUR1cGxpY2F0ZXM6dm9pZCAwO0MmJiFpc05hTihDKSYmdGhpcy5zYW1wbGVzR2VuZXJhdG9yLnNldFNhbXBsZUNvdW50KHBhcnNlSW50KEMsMTApKSxJJiZ0aGlzLnNhbXBsZXNHZW5lcmF0b3Iuc2V0QWxsb3dEdXBsaWNhdGVzKEkpfX0se2tleToicmVjYWxj''@;'; put 'put ''dWxhdGVBbGxSb3dzSGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbigpe2NPKHRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUuVEFCTEUpJiYodGhpcy5jbGVhckNhY2hlKCksdGhpcy5jYWxjdWxhdGVBbGxSb3dzSGVpZ2h0KCkpfX0se2tleToiZ2V0U3luY0NhbGN1bGF0aW9uTGltaXQiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVt4dGVdLEM9aC5TWU5DX0NBTENVTEFUSU9OX0xJTUlULEk9dGhpcy5ob3QuY291bnRSb3dzKCktMTtyZXR1cm4geGwoeSkmJihvM2UoQz15LnN5bmNMaW1pdCk/Qz1QM2UoSSxDKTpDPj49MCksTWF0aC5taW4oQyxJKX19LHtr''@;'; put 'put ''ZXk6ImdldFJvd0hlaWdodCIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnZvaWQgMCxJPXk8MD90aGlzLmhlYWRlckhlaWdodDp0aGlzLnJvd0hlaWdodHNNYXAuZ2V0VmFsdWVBdEluZGV4KHRo''@;'; put 'put ''aXMuaG90LnRvUGh5c2ljYWxSb3coeSkpLFo9QztyZXR1cm4gbnVsbCE9PUkmJkk+KEN8fDApJiYoWj1JKSxafX0se2tleToiZ2V0Q29sdW1uSGVhZGVySGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlYWRlckhlaWdodH19LHtrZXk6ImdldEZpcnN0VmlzaWJsZVJvdyIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmhvdC52aWV3Ll93dDtyZXR1cm4geS53dFZpZXdwb3J0LnJvd3NWaXNpYmxlQ2FsY3VsYXRvcj95Lnd0VGFibGUuZ2V0Rmlyc3RWaXNpYmxlUm93KCk6eS53dFZpZXdwb3J0LnJvd3NSZW5kZXJDYWxjdWxhdG9yP3kud3RUYWJsZS5nZXRGaXJz''@;'; put 'put ''dFJlbmRlcmVkUm93KCk6LTF9fSx7a2V5OiJnZXRMYXN0VmlzaWJsZVJvdyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmhvdC52aWV3Ll93dDtyZXR1cm4geS53dFZpZXdwb3J0LnJvd3NWaXNpYmxlQ2FsY3VsYXRvcj95Lnd0VGFibGUuZ2V0TGFzdFZpc2libGVSb3coKTp5Lnd0Vmll''@;'; put 'put ''d3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3I/eS53dFRhYmxlLmdldExhc3RSZW5kZXJlZFJvdygpOi0xfX0se2tleToiY2xlYXJDYWNoZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhlYWRlckhlaWdodD1udWxsLHRoaXMucm93SGVpZ2h0c01hcC5pbml0KCl9fSx7a2V5OiJjbGVhckNhY2hl''@;'; put 'put ''QnlSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPSJudW1iZXIiPT10eXBlb2YgeT97ZnJvbTp5LHRvOnl9OnksWj1JLmZyb20sdWU9SS50bzt0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe2lhKE1hdGgubWluKFosdWUpLE1hdGgubWF4KFosdWUpLGZ1bmN0''@;'; put 'put ''aW9uKF9lKXtDLnJvd0hlaWdodHNNYXAuc2V0VmFsdWVBdEluZGV4KF9lLG51bGwpfSl9LCEwKX19LHtrZXk6ImlzTmVlZFJlY2FsY3VsYXRlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhZzQodGhpcy5yb3dIZWlnaHRzTWFwLmdldFZhbHVlcygpLnNsaWNlKDAsdGhpcy5tZWFzdXJlZFJv''@;'; put 'put ''d3MpLGZ1bmN0aW9uKHkpe3JldHVybiBudWxsPT09eX0pLmxlbmd0aH19LHtrZXk6Im9uQmVmb3JlVmlld1JlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmhvdC5yZW5kZXJDYWxsLEM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maXhlZFJvd3NCb3R0b20sST10aGlzLmdldEZp''@;'; put 'put ''cnN0VmlzaWJsZVJvdygpLFo9dGhpcy5nZXRMYXN0VmlzaWJsZVJvdygpO2lmKC0xIT09SSYmLTEhPT1aKXtpZih0aGlzLmNhbGN1bGF0ZVJvd3NIZWlnaHQoe2Zyb206SSx0bzpafSx2b2lkIDAseSksQyl7dmFyIHVlPXRoaXMuaG90LmNvdW50Um93cygpLTE7dGhpcy5jYWxjdWxhdGVSb3dz''@;'; put 'put ''SGVpZ2h0KHtmcm9tOnVlLUMsdG86dWV9KX10aGlzLmlzTmVlZFJlY2FsY3VsYXRlKCkmJiF0aGlzLmluUHJvZ3Jlc3MmJnRoaXMuY2FsY3VsYXRlQWxsUm93c0hlaWdodCgpfX19LHtrZXk6Im9uQmVmb3JlUm93TW92ZSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt0aGlzLmNsZWFyQ2FjaGVCeVJh''@;'; put 'put ''bmdlKHtmcm9tOnksdG86Q30pLHRoaXMuY2FsY3VsYXRlQWxsUm93c0hlaWdodCgpfX0se2tleToib25CZWZvcmVSb3dSZXNpemUiLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXt2YXIgWj15O3JldHVybiBJJiYodGhpcy5jYWxjdWxhdGVSb3dzSGVpZ2h0KEMsdm9pZCAwLCEwKSxaPXRoaXMuZ2V0''@;'; put 'put ''Um93SGVpZ2h0KEMpKSxafX0se2tleToib25BZnRlckxvYWREYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5ob3Qudmlldz90aGlzLnJlY2FsY3VsYXRlQWxsUm93c0hlaWdodCgpOnNldFRpbWVvdXQoZnVuY3Rpb24oKXt5LmhvdCYmeS5yZWNhbGN1bGF0ZUFsbFJvd3NI''@;'; put 'put ''ZWlnaHQoKX0sMCl9fSx7a2V5OiJvbkJlZm9yZUNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9bnVsbDsxPT09eS5sZW5ndGg/Qz15WzBdWzBdOnkubGVuZ3RoPjEmJihDPXtmcm9tOnlbMF1bMF0sdG86eVt5Lmxlbmd0aC0xXVswXX0pLG51bGwhPT1DJiZ0aGlzLmNsZWFyQ2FjaGVC''@;'; put 'put ''eVJhbmdlKEMpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmdob3N0VGFibGUuY2xlYW4oKSxPTyhQdyhoLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiB4dGV9fSx7''@;'; put 'put ''a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiA0MH19LHtrZXk6IlNFVFRJTkdfS0VZUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5OiJDQUxDVUxBVElPTl9TVEVQIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gNTB9fSx7a2V5OiJTWU5DX0NBTENVTEFU''@;'; put 'put ''SU9OX0xJTUlUIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gNTAwfX1dKSxofShZcyksUE1lPW5ldyBNYXAoW1siaW5kZXhlc1NlcXVlbmNlIix7Z2V0TGlzdFdpdGhJbnNlcnRlZEl0ZW1zOmE0ZSxnZXRMaXN0V2l0aFJlbW92ZWRJdGVtczp0en1dLFsicGh5c2ljYWxseUluZGV4ZWQiLHtnZXRM''@;'; put 'put ''aXN0V2l0aEluc2VydGVkSXRlbXM6JGRlLGdldExpc3RXaXRoUmVtb3ZlZEl0ZW1zOnFkZX1dXSksRk1lPWZ1bmN0aW9uKGcpe2lmKCExPT09UE1lLmhhcyhnKSl0aHJvdyBuZXcgRXJyb3IoIkFsdGVyIHN0cmF0ZWd5IHdpdGggSUQgJyIuY29uY2F0KGcsIicgZG9lcyBub3QgZXhpc3QuIikp''@;'; put 'put ''O3JldHVybiBQTWUuZ2V0KGcpfTtmdW5jdGlvbiBlOGUoZCl7cmV0dXJuKGU4ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIEhNZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1l''@;'; put 'put ''cmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGd6KCl7cmV0dXJuIGd6PSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5n''@;'; put 'put ''ZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT10aXQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LGd6LmFwcGx5KHRoaXMsYXJn''@;'; put 'put ''dW1lbnRzKX1mdW5jdGlvbiB0aXQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPVVTKGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIHQ4ZShkLGcpe3JldHVybih0OGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQ''@;'; put 'put ''cm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBpaXQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1lOGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIG9pdChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVy''@;'; put 'put ''KCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIFVTKGQpe3JldHVybihVUz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVP''@;'; put 'put ''ZihoKX0pKGQpfXZhciBOTWU9Rk1lKCJwaHlzaWNhbGx5SW5kZXhlZCIpLGxpdD1OTWUuZ2V0TGlzdFdpdGhJbnNlcnRlZEl0ZW1zLHNpdD1OTWUuZ2V0TGlzdFdpdGhSZW1vdmVkSXRlbXMsdWl0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBuaXQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2Yg''@;'; put 'put ''ZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25m''@;'; put 'put ''aWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmdDhlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gcml0KGQpe3ZhciBnPWZ1bmN0aW9uIGFpdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxl''@;'; put 'put ''Y3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7''@;'; put 'put ''fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVVTKGQpO2lmKGcpe3ZhciBDPVVTKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVy''@;'; put 'put ''biBpaXQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXtyZXR1cm4gZnVuY3Rpb24gcXJ0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksZy5jYWxsKHRoaXMsZnVuY3Rpb24o''@;'; put 'put ''dil7cmV0dXJuIHZ9KX1yZXR1cm4gZnVuY3Rpb24gZWl0KGQsZyxoKXtnJiZITWUoZC5wcm90b3R5cGUsZyksaCYmSE1lKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6Imluc2VydCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2''@;'; put 'put ''YXIgST1zNGUodGhpcy5pbmRleGVkVmFsdWVzLEMpO3RoaXMuaW5kZXhlZFZhbHVlcz1saXQoSSx5LEMsdGhpcy5pbml0VmFsdWVPckZuKSxneihVUyhoLnByb3RvdHlwZSksImluc2VydCIsdGhpcykuY2FsbCh0aGlzLHksQyl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKHkpe3Zh''@;'; put 'put ''ciBDPXNpdCh0aGlzLmluZGV4ZWRWYWx1ZXMseSk7dGhpcy5pbmRleGVkVmFsdWVzPWw0ZShDLHkpLGd6KFVTKGgucHJvdG90eXBlKSwicmVtb3ZlIix0aGlzKS5jYWxsKHRoaXMseSl9fV0pLGh9KFBTKTtjb25zdCBjaXQ9dWl0O2Z1bmN0aW9uIG44ZShkKXtyZXR1cm4objhlPSJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wu''@;'; put 'put ''cHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gcjhlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gVk1lKGQsZyl7Zm9yKHZh''@;'; put 'put ''ciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gbXooKXtyZXR1cm4g''@;'; put 'put ''bXo9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PUFpdChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2Fs''@;'; put 'put ''bChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sbXouYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIEFpdChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9UVMoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24g''@;'; put 'put ''aThlKGQsZyl7cmV0dXJuKGk4ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIGJpdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PW44ZShnKXx8ImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gX2l0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3''@;'; put 'put ''IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gUVMoZCl7cmV0dXJuKFFTPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgp''@;'; put 'put ''OmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIGpNZT1GTWUoInBoeXNpY2FsbHlJbmRleGVkIiksa2l0PWpNZS5nZXRMaXN0V2l0aEluc2VydGVkSXRlbXMsU2l0PWpNZS5nZXRMaXN0V2l0aFJlbW92ZWRJdGVtcyxNaXQ9''@;'; put 'put ''ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIHlpdChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUo''@;'; put 'put ''ZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZpOGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiB3aXQoZCl7dmFyIGc9''@;'; put 'put ''ZnVuY3Rpb24gQ2l0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUu''@;'; put 'put ''dmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9UVMoZCk7aWYoZyl7dmFyIEM9UVModGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVj''@;'; put 'put ''dCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGJpdCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCgpe3JldHVybiBmdW5jdGlvbiBtaXQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBh''@;'; put 'put ''IGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSxnLmNhbGwodGhpcyxmdW5jdGlvbih2KXtyZXR1cm4gdn0pfXJldHVybiBmdW5jdGlvbiB2aXQoZCxnLGgpe2cmJlZNZShkLnByb3RvdHlwZSxnKSxoJiZWTWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7''@;'; put 'put ''d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaW5zZXJ0Iix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXRoaXM7dGhpcy5pbmRleGVkVmFsdWVzPWtpdCh0aGlzLmluZGV4ZWRWYWx1ZXMseSxDLGZ1bmN0aW9uKFosdWUpe3JldHVybiBJLmdldE5leHRWYWx1ZSh1ZSl9KSxteihRUyhoLnByb3Rv''@;'; put 'put ''dHlwZSksImluc2VydCIsdGhpcykuY2FsbCh0aGlzLHksQyl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMuaW5kZXhlZFZhbHVlcz1TaXQodGhpcy5pbmRleGVkVmFsdWVzLHkpLG16KFFTKGgucHJvdG90eXBlKSwicmVtb3ZlIix0aGlzKS5jYWxsKHRoaXMseSl9fSx7''@;'; put 'put ''a2V5OiJnZXROZXh0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKHkpe3JldHVybiBNYXRoLm1heC5hcHBseShNYXRoLGZ1bmN0aW9uIGZpdChkKXtyZXR1cm4gZnVuY3Rpb24gZ2l0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIHI4ZShkKX0oZCl8fGZ1bmN0aW9uIHBpdChkKXtpZigidW5k''@;'; put 'put ''ZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBkaXQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIHI4ZShkLGcpO3ZhciBo''@;'; put 'put ''PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwv''@;'; put 'put ''Xig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gcjhlKGQsZyl9fShkKXx8ZnVuY3Rpb24gaGl0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRl''@;'; put 'put ''ciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KHRoaXMuZ2V0VmFsdWVzKCkpKSsxK3l9fV0pLGh9KFBTKTtmdW5jdGlvbiBvOGUoZCl7cmV0dXJuKG84ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3lt''@;'; put 'put ''Ym9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIFpNZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIFJPKCl7cmV0dXJuIFJPPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1JaXQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJv''@;'; put 'put ''cGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LFJPLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBJaXQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwo''@;'; put 'put ''ZCxnKSYmbnVsbCE9PShkPUZ3KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIGE4ZShkLGcpe3JldHVybihhOGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlv''@;'; put 'put ''biBPaXQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1vOGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0''@;'; put 'put ''dXJuIGZ1bmN0aW9uIFJpdChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIEZ3KGQpe3JldHVybihGdz1PYmplY3Qu''@;'; put 'put ''c2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBsOGU9ImJpbmRSb3dzV2l0aEhlYWRlcnMiLEhpdD1uZXcgTWFwKFtbImxvb3NlIixjaXRdLFsi''@;'; put 'put ''c3RyaWN0IixNaXRdXSksTml0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBEaXQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3Rv''@;'; put 'put ''dHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmYThlKGQsZyl9KGgsZCk7dmFyIGc9ZnVu''@;'; put 'put ''Y3Rpb24gTGl0KGQpe3ZhciBnPWZ1bmN0aW9uIEJpdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJu''@;'; put 'put ''IEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PUZ3KGQpO2lmKGcpe3ZhciBDPUZ3KHRoaXMpLmNvbnN0cnVjdG9y''@;'; put 'put ''O3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBPaXQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7cmV0dXJuIGZ1bmN0aW9uIHhpdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLCh5PWcuY2FsbCh0aGlzLHYpKS5oZWFkZXJJbmRleGVzPW51bGwseX1yZXR1cm4gZnVuY3Rpb24gVGl0KGQsZyxoKXtnJiZaTWUoZC5wcm90b3R5cGUsZyksaCYmWk1lKGQsaCksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbbDhlXX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10''@;'; put 'put ''aGlzO2lmKCF0aGlzLmVuYWJsZWQpe3ZhciBDPXRoaXMuaG90LmdldFNldHRpbmdzKClbbDhlXTsic3RyaW5nIiE9dHlwZW9mIEMmJihDPSJsb29zZSIpO3ZhciBJPUhpdC5nZXQoQyk7dGhpcy5oZWFkZXJJbmRleGVzPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKCJiaW5k''@;'; put 'put ''Um93c1dpdGhIZWFkZXJzIixuZXcgSSksdGhpcy5hZGRIb29rKCJtb2RpZnlSb3dIZWFkZXIiLGZ1bmN0aW9uKFope3JldHVybiB5Lm9uTW9kaWZ5Um93SGVhZGVyKFopfSksUk8oRncoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fX0se2tleToiZGlzYWJs''@;'; put 'put ''ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhvdC5yb3dJbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKCJiaW5kUm93c1dpdGhIZWFkZXJzIiksUk8oRncoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToib25Nb2RpZnlSb3dIZWFkZXIi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLmhlYWRlckluZGV4ZXMuZ2V0VmFsdWVBdEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxSb3coeSkpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXtSTyhGdyhoLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhp''@;'; put 'put ''cyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBsOGV9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAyMTB9fV0pLGh9KFlzKTtmdW5jdGlvbiBzOGUoZCl7cmV0dXJuKHM4ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9s''@;'; put 'put ''JiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9s''@;'; put 'put ''Ijp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIHpNZShkKXtyZXR1cm4gZnVuY3Rpb24geml0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIHU4ZShkKX0oZCl8fGZ1bmN0aW9uIFppdChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3Jd''@;'; put 'put ''fHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBqaXQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIHU4ZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtp''@;'; put 'put ''ZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCho''@;'; put 'put ''KSlyZXR1cm4gdThlKGQsZyl9fShkKXx8ZnVuY3Rpb24gVml0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEg''@;'; put 'put ''W1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gdThlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gR2l0KGQsZyl7aWYoIShk''@;'; put 'put ''IGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gR01lKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25m''@;'; put 'put ''aWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gSlMoKXtyZXR1cm4gSlM9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rp''@;'; put 'put ''b24oZyxoLHYpe3ZhciB5PVlpdChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sSlMuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9u''@;'; put 'put ''IFlpdChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9UnYoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gYzhlKGQsZyl7cmV0dXJuKGM4ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQo''@;'; put 'put ''KTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIEppdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PXM4ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBj''@;'; put 'put ''b25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gQk8oZCl9ZnVuY3Rpb24gQk8oZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBi''@;'; put 'put ''ZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIFJ2KGQpe3JldHVybihSdj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfWZ1bmN0''@;'; put 'put ''aW9uIEtpdChkLGcsaCl7KGZ1bmN0aW9uICRpdChkLGcpe2lmKGcuaGFzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShkLGcpLGcuc2V0KGQsaCl9ZnVuY3Rpb24gZjhlKGQs''@;'; put 'put ''ZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgsZH1mdW5jdGlvbiBXTWUoZCxnKXtyZXR1cm4gZnVuY3Rpb24gcWl0KGQsZyl7cmV0dXJuIGcuZ2V0P2cu''@;'; put 'put ''Z2V0LmNhbGwoZCk6Zy52YWx1ZX0oZCxZTWUoZCxnLCJnZXQiKSl9ZnVuY3Rpb24gaDhlKGQsZyxoKXtyZXR1cm4gZnVuY3Rpb24gZTB0KGQsZyxoKXtpZihnLnNldClnLnNldC5jYWxsKGQsaCk7ZWxzZXtpZighZy53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8g''@;'; put 'put ''c2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7Zy52YWx1ZT1ofX0oZCxZTWUoZCxnLCJzZXQiKSxoKSxofWZ1bmN0aW9uIFlNZShkLGcsaCl7aWYoIWcuaGFzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK2grIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5j''@;'; put 'put ''ZSIpO3JldHVybiBnLmdldChkKX12YXIgZDhlPSJjb2xsYXBzaWJsZUNvbHVtbnMiLG4wdD1bIm5lc3RlZEhlYWRlcnMiXSxVTWU9bmV3IE1hcChbWyJjb2xsYXBzZSIse2hpZGVDb2x1bW46ITAsYmVmb3JlSG9vazoiYmVmb3JlQ29sdW1uQ29sbGFwc2UiLGFmdGVySG9vazoiYWZ0ZXJDb2x1''@;'; put 'put ''bW5Db2xsYXBzZSJ9XSxbImV4cGFuZCIse2hpZGVDb2x1bW46ITEsYmVmb3JlSG9vazoiYmVmb3JlQ29sdW1uRXhwYW5kIixhZnRlckhvb2s6ImFmdGVyQ29sdW1uRXhwYW5kIn1dXSksUE89bmV3IFdlYWtNYXAscjB0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBVaXQoZCxnKXtpZigiZnVuY3Rp''@;'; put 'put ''b24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0''@;'; put 'put ''YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmYzhlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gUWl0KGQpe3ZhciBnPWZ1bmN0aW9uIFhpdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVm''@;'; put 'put ''bGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtd''@;'; put 'put ''LGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVJ2KGQpO2lmKGcpe3ZhciBDPVJ2KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1''@;'; put 'put ''bWVudHMpO3JldHVybiBKaXQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXt2YXIgdjtHaXQodGhpcyxoKTtmb3IodmFyIHk9YXJndW1lbnRzLmxlbmd0aCxDPW5ldyBBcnJheSh5KSxJPTA7STx5O0krKylDW0ldPWFyZ3VtZW50c1tJXTtyZXR1cm4gZjhlKEJPKHY9Zy5jYWxsLmFwcGx5KGcs''@;'; put 'put ''W3RoaXNdLmNvbmNhdChDKSkpLCJuZXN0ZWRIZWFkZXJzUGx1Z2luIixudWxsKSxmOGUoQk8odiksImV2ZW50TWFuYWdlciIsbmV3IEwxKEJPKHYpKSksZjhlKEJPKHYpLCJoZWFkZXJTdGF0ZU1hbmFnZXIiLG51bGwpLEtpdChCTyh2KSxQTyx7d3JpdGFibGU6ITAsdmFsdWU6bnVsbH0pLHZ9''@;'; put 'put ''cmV0dXJuIGZ1bmN0aW9uIFdpdChkLGcsaCl7ZyYmR01lKGQucHJvdG90eXBlLGcpLGgmJkdNZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmhv''@;'; put 'put ''dC5nZXRTZXR0aW5ncygpW2Q4ZV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLmhvdC5nZXRTZXR0aW5ncygpLm5lc3RlZEhlYWRlcnN8fGwxKCJZb3UgbmVlZCB0byBjb25maWd1cmUgdGhlIE5lc3RlZCBIZWFk''@;'; put 'put ''ZXJzIHBsdWdpbiBpbiBvcmRlciB0byB1c2UgY29sbGFwc2libGUgaGVhZGVycy4iKSxoOGUodGhpcyxQTyx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5jcmVhdGVBbmRSZWdpc3RlckluZGV4TWFwKHRoaXMucGx1Z2luTmFtZSwiaGlkaW5nIikpLHRoaXMubmVzdGVkSGVhZGVyc1BsdWdp''@;'; put 'put ''bj10aGlzLmhvdC5nZXRQbHVnaW4oIm5lc3RlZEhlYWRlcnMiKSx0aGlzLmhlYWRlclN0YXRlTWFuYWdlcj10aGlzLm5lc3RlZEhlYWRlcnNQbHVnaW4uZ2V0U3RhdGVNYW5hZ2VyKCksdGhpcy5hZGRIb29rKCJpbml0IixmdW5jdGlvbigpe3JldHVybiB5Lm9uSW5pdCgpfSksdGhpcy5hZGRI''@;'; put 'put ''b29rKCJhZnRlckxvYWREYXRhIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJMb2FkRGF0YS5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyR2V0Q29sSGVhZGVyIixmdW5jdGlvbihaLHVlKXtyZXR1cm4geS5vbkFmdGVyR2V0Q29sSGVhZGVyKFosdWUpfSksdGhp''@;'; put 'put ''cy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZURvd24iLGZ1bmN0aW9uKFosdWUsX2Upe3JldHVybiB5Lm9uQmVmb3JlT25DZWxsTW91c2VEb3duKFosdWUsX2UpfSksSlMoUnYoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyksdGhpcy51cGRhdGVQbHVnaW4o''@;'; put 'put ''KSl9fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5ob3Qudmlldyl7aWYoIXRoaXMubmVzdGVkSGVhZGVyc1BsdWdpbi5kZXRlY3RlZE92ZXJsYXBwZWRIZWFkZXJzKXt2YXIgQz10aGlzLmhvdC5nZXRTZXR0aW5ncygpLmNvbGxhcHNpYmxlQ29sdW1uczsi''@;'; put 'put ''Ym9vbGVhbiI9PXR5cGVvZiBDP3RoaXMuaGVhZGVyU3RhdGVNYW5hZ2VyLm1hcFN0YXRlKGZ1bmN0aW9uKEkpe3JldHVybntjb2xsYXBzaWJsZTpJLm9yaWdDb2xzcGFuPjF9fSk6QXJyYXkuaXNBcnJheShDKSYmKHRoaXMuaGVhZGVyU3RhdGVNYW5hZ2VyLm1hcFN0YXRlKGZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJue2NvbGxhcHNpYmxlOiExfX0pLHRoaXMuaGVhZGVyU3RhdGVNYW5hZ2VyLm1lcmdlU3RhdGVXaXRoKEMpKX1KUyhSdihoLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMu''@;'; put 'put ''aG90LmNvbHVtbkluZGV4TWFwcGVyLnVucmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5OYW1lKSxoOGUodGhpcyxQTyxudWxsKSx0aGlzLm5lc3RlZEhlYWRlcnNQbHVnaW49bnVsbCx0aGlzLmNsZWFyQnV0dG9ucygpLEpTKFJ2KGgucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2Fs''@;'; put 'put ''bCh0aGlzKX19LHtrZXk6ImNsZWFyQnV0dG9ucyIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLmhvdC52aWV3KXt2YXIgeT10aGlzLmhvdC52aWV3Ll93dC5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIikubGVuZ3RoLEM9dGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZS5USEVBRCxJPXRoaXMu''@;'; put 'put ''aG90LnZpZXcuX3d0Lnd0T3ZlcmxheXMudG9wT3ZlcmxheS5jbG9uZS53dFRhYmxlLlRIRUFELFo9dGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXk/dGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy50b3BJbmxpbmVTdGFydENvcm5lck92''@;'; put 'put ''ZXJsYXkuY2xvbmUud3RUYWJsZS5USEVBRDpudWxsLHVlPWZ1bmN0aW9uKEJlKXtCZSYmQmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChCZSl9O2lhKDAseS0xLGZ1bmN0aW9uKF9lKXt2YXIgQmU9Qy5jaGlsZE5vZGVzW19lXSxOZT1JLmNoaWxkTm9kZXNbX2VdLEtlPVo/Wi5jaGlsZE5vZGVz''@;'; put 'put ''W19lXTpudWxsO2lhKDAsQmUuY2hpbGROb2Rlcy5sZW5ndGgtMSxmdW5jdGlvbihwdCl7dmFyIE90PUJlLmNoaWxkTm9kZXNbcHRdLnF1ZXJ5U2VsZWN0b3IoIi5jb2xsYXBzaWJsZUluZGljYXRvciIpO3VlKE90KSxOZSYmTmUuY2hpbGROb2Rlc1twdF0mJihPdD1OZS5jaGlsZE5vZGVzW3B0''@;'; put 'put ''XS5xdWVyeVNlbGVjdG9yKCIuY29sbGFwc2libGVJbmRpY2F0b3IiKSx1ZShPdCkpLFomJktlJiZLZS5jaGlsZE5vZGVzW3B0XSYmKE90PUtlLmNoaWxkTm9kZXNbcHRdLnF1ZXJ5U2VsZWN0b3IoIi5jb2xsYXBzaWJsZUluZGljYXRvciIpLHVlKE90KSl9KX0pfX19LHtrZXk6ImV4cGFuZFNl''@;'; put 'put ''Y3Rpb24iLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMudG9nZ2xlQ29sbGFwc2libGVTZWN0aW9uKFt5XSwiZXhwYW5kIil9fSx7a2V5OiJjb2xsYXBzZVNlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMudG9nZ2xlQ29sbGFwc2libGVTZWN0aW9uKFt5XSwiY29sbGFwc2UiKX19LHtrZXk6''@;'; put 'put ''InRvZ2dsZUFsbENvbGxhcHNpYmxlU2VjdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST10aGlzLmhlYWRlclN0YXRlTWFuYWdlci5tYXBOb2RlcyhmdW5jdGlvbihaKXt2YXIgTmU9Wi5jb2x1bW5JbmRleCxLZT1aLmlzQ29sbGFwc2VkO2lmKCEwPT09Wi5jb2xsYXBzaWJs''@;'; put 'put ''ZSYmWi5vcmlnQ29sc3Bhbj4xJiYoS2UmJiJleHBhbmQiPT09eXx8IUtlJiYiY29sbGFwc2UiPT09eSkpcmV0dXJue3JvdzpDLmhlYWRlclN0YXRlTWFuYWdlci5sZXZlbFRvUm93Q29vcmRzKFouaGVhZGVyTGV2ZWwpLGNvbDpOZX19KTt0aGlzLnRvZ2dsZUNvbGxhcHNpYmxlU2VjdGlvbihJ''@;'; put 'put ''LHkpfX0se2tleToiY29sbGFwc2VBbGwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy50b2dnbGVBbGxDb2xsYXBzaWJsZVNlY3Rpb25zKCJjb2xsYXBzZSIpfX0se2tleToiZXhwYW5kQWxsIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudG9nZ2xlQWxsQ29sbGFwc2libGVTZWN0aW9ucygiZXhwYW5k''@;'; put 'put ''Iil9fSx7a2V5OiJ0b2dnbGVDb2xsYXBzaWJsZVNlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9dGhpcztpZighVU1lLmhhcyhDKSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIGFjdGlvbiBpcyBwYXNzZWQgKCIuY29uY2F0KEMsIikuIikpO2lmKEFycmF5LmlzQXJyYXko''@;'; put 'put ''eSkpe3ZhciBaPWc0KHksZnVuY3Rpb24oZm4pe3JldHVybiBmbi5yb3c8MH0pLHVlPVoubGVuZ3RoPjA7VXIoWixmdW5jdGlvbihmbil7dmFyIExuLFNyPW51bGwhPT0oTG49SS5oZWFkZXJTdGF0ZU1hbmFnZXIuZ2V0SGVhZGVyU2V0dGluZ3MoZm4ucm93LGZuLmNvbCkpJiZ2b2lkIDAhPT1M''@;'; put 'put ''bj9Mbjp7fSxRcj1Tci5pc0NvbGxhcHNlZDtpZighU3IuY29sbGFwc2libGV8fFFyJiYiY29sbGFwc2UiPT09Q3x8IVFyJiYiZXhwYW5kIj09PUMpcmV0dXJuIHVlPSExLCExfSk7dmFyIF9lPVtdLEJlPVtdO3VlJiZVcihaLGZ1bmN0aW9uKGZuKXt2YXIgbXI9SS5oZWFkZXJTdGF0ZU1hbmFn''@;'; put 'put ''ZXIudHJpZ2dlck5vZGVNb2RpZmljYXRpb24oQyxmbi5yb3csZm4uY29sKSxRcj1tci5yb2xsYmFja01vZGlmaWNhdGlvbjttci5jb2xzcGFuQ29tcGVuc2F0aW9uPjAmJihCZS5wdXNoLmFwcGx5KEJlLHpNZShtci5hZmZlY3RlZENvbHVtbnMpKSxfZS5wdXNoKFFyKSl9KTt2YXIgTmU9dGhp''@;'; put 'put ''cy5nZXRDb2xsYXBzZWRDb2x1bW5zKCksS2U9W107ImNvbGxhcHNlIj09PUM/S2U9SmhlKFtdLmNvbmNhdCh6TWUoTmUpLEJlKSk6ImV4cGFuZCI9PT1DJiYoS2U9ZzQoTmUsZnVuY3Rpb24oZm4pe3JldHVybiFCZS5pbmNsdWRlcyhmbil9KSk7dmFyIHB0PVVNZS5nZXQoQyk7aWYoITE9PT10''@;'; put 'put ''aGlzLmhvdC5ydW5Ib29rcyhwdC5iZWZvcmVIb29rLE5lLEtlLHVlKSlyZXR1cm4gdm9pZCBVcihfZSxmdW5jdGlvbihmbil7Zm4oKX0pO3RoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7VXIoQmUsZnVuY3Rpb24oZm4pe1dNZShJLFBPKS5zZXRWYWx1ZUF0SW5kZXgoSS5ob3Qu''@;'; put 'put ''dG9QaHlzaWNhbENvbHVtbihmbikscHQuaGlkZUNvbHVtbil9KX0sITApO3ZhciAkdD10aGlzLmdldENvbGxhcHNlZENvbHVtbnMoKS5sZW5ndGghPT1OZS5sZW5ndGg7dGhpcy5ob3QucnVuSG9va3MocHQuYWZ0ZXJIb29rLE5lLEtlLHVlLCR0KSx0aGlzLmhvdC5yZW5kZXIoKSx0aGlzLmhv''@;'; put 'put ''dC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSghMCl9fX0se2tleToiZ2V0Q29sbGFwc2VkQ29sdW1ucyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gV01lKHRoaXMsUE8pLmdldEhpZGRlbkluZGV4ZXMoKX19LHtrZXk6ImdlbmVyYXRlSW5kaWNhdG9yIix2YWx1ZTpmdW5jdGlvbih5LEMpe3Zh''@;'; put 'put ''ciBJPXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxaPXRoaXMuaGVhZGVyU3RhdGVNYW5hZ2VyLmdldEhlYWRlclNldHRpbmdzKHksQyk7cmV0dXJuIE8wKEksImNvbGxhcHNpYmxlSW5kaWNhdG9yIiksWi5pc0NvbGxhcHNlZD8oTzAoSSwiY29sbGFwc2VkIiks''@;'; put 'put ''U3coSSwiKyIpKTooTzAoSSwiZXhwYW5kZWQiKSxTdyhJLCItIikpLEl9fSx7a2V5OiJvbkFmdGVyR2V0Q29sSGVhZGVyIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJLFo9Qy5wYXJlbnROb2RlLHVlPVoucGFyZW50Tm9kZSxfZT0tMSp1ZS5jaGlsZE5vZGVzLmxlbmd0aCtBcnJheS5wcm90''@;'; put 'put ''b3R5cGUuaW5kZXhPZi5jYWxsKHVlLmNoaWxkTm9kZXMsWiksQmU9bnVsbCE9PShJPXRoaXMuaGVhZGVyU3RhdGVNYW5hZ2VyLmdldEhlYWRlclNldHRpbmdzKF9lLHkpKSYmdm9pZCAwIT09ST9JOnt9O2lmKEJlLmNvbGxhcHNpYmxlJiZCZS5vcmlnQ29sc3Bhbj4xJiZ5Pj10aGlzLmhvdC5n''@;'; put 'put ''ZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0KXt2YXIgcHQ9dGhpcy5nZW5lcmF0ZUluZGljYXRvcihfZSx5KTtDLnF1ZXJ5U2VsZWN0b3IoImRpdjpmaXJzdC1jaGlsZCIpLmFwcGVuZENoaWxkKHB0KX19fSx7a2V5OiJvbkJlZm9yZU9uQ2VsbE1vdXNlRG93biIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oeSxDKXt0bCh5LnRhcmdldCwiY29sbGFwc2libGVJbmRpY2F0b3IiKSYmKHRsKHkudGFyZ2V0LCJleHBhbmRlZCIpPyh0aGlzLmV2ZW50TWFuYWdlci5maXJlRXZlbnQoeS50YXJnZXQsIm1vdXNldXAiKSx0aGlzLnRvZ2dsZUNvbGxhcHNpYmxlU2VjdGlvbihbQ10sImNvbGxhcHNlIikp''@;'; put 'put ''OnRsKHkudGFyZ2V0LCJjb2xsYXBzZWQiKSYmKHRoaXMuZXZlbnRNYW5hZ2VyLmZpcmVFdmVudCh5LnRhcmdldCwibW91c2V1cCIpLHRoaXMudG9nZ2xlQ29sbGFwc2libGVTZWN0aW9uKFtDXSwiZXhwYW5kIikpLF84KHkpKX19LHtrZXk6Im9uSW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlz''@;'; put 'put ''LnVwZGF0ZVBsdWdpbigpfX0se2tleToib25BZnRlckxvYWREYXRhIix2YWx1ZTpmdW5jdGlvbih5LEMpe0N8fHRoaXMudXBkYXRlUGx1Z2luKCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe2g4ZSh0aGlzLFBPLG51bGwpLEpTKFJ2KGgucHJvdG90eXBlKSwiZGVzdHJveSIs''@;'; put 'put ''dGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGQ4ZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDI5MH19LHtrZXk6IlBMVUdJTl9ERVBTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5bInBsdWdp''@;'; put 'put ''bjpOZXN0ZWRIZWFkZXJzIl19fSx7a2V5OiJTRVRUSU5HX0tFWVMiLGdldDpmdW5jdGlvbigpe3JldHVybltkOGVdLmNvbmNhdChuMHQpfX1dKSxofShZcyk7ZnVuY3Rpb24gUU1lKGQsZyl7dmFyIGg9T2JqZWN0LmtleXMoZCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFy''@;'; put 'put ''IHY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkKTtnJiYodj12LmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLHkpLmVudW1lcmFibGV9KSksaC5wdXNoLmFwcGx5KGgsdil9cmV0dXJuIGh9ZnVuY3Rpb24gbzB0KGQsZyxo''@;'; put 'put ''KXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgsZH1mdW5jdGlvbiBKTWUoZCxnKXtyZXR1cm4gZnVuY3Rpb24gdTB0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkp''@;'; put 'put ''cmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBzMHQoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2Fs''@;'; put 'put ''bChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaCh1ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgWn19cmV0dXJuIHZ9''@;'; put 'put ''fShkLGcpfHxmdW5jdGlvbiBsMHQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIFhNZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3Ry''@;'; put 'put ''dWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gWE1lKGQsZyl9fShkLGcpfHxmdW5jdGlvbiBhMHQoKXt0''@;'; put 'put ''aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1''@;'; put 'put ''bmN0aW9uIFhNZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIEtNZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3Yu''@;'; put 'put ''ZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBoMHQ9WyJzb3J0RW1wdHlDZWxscyIsImluZGljYXRvciIsImhlYWRlckFjdGlvbiIsImNv''@;'; put 'put ''bXBhcmVGdW5jdGlvbkZhY3RvcnkiXSxtMHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCl7KGZ1bmN0aW9uIGMwdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlz''@;'; put 'put ''LmhvdD1nLHRoaXMuc29ydGluZ1N0YXRlcz1uZXcgWWVlLHRoaXMuc29ydEVtcHR5Q2VsbHM9ITEsdGhpcy5pbmRpY2F0b3I9ITAsdGhpcy5oZWFkZXJBY3Rpb249ITAsdGhpcy5jb21wYXJlRnVuY3Rpb25GYWN0b3J5PXZvaWQgMCx0aGlzLm1hcE5hbWU9aCx0aGlzLmhvdC5jb2x1bW5JbmRl''@;'; put 'put ''eE1hcHBlci5yZWdpc3Rlck1hcChoLHRoaXMuc29ydGluZ1N0YXRlcyl9cmV0dXJuIGZ1bmN0aW9uIGYwdChkLGcsaCl7ZyYmS01lKGQucHJvdG90eXBlLGcpLGgmJktNZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJ1''@;'; put 'put ''cGRhdGVBbGxDb2x1bW5zUHJvcGVydGllcyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpczsheGwoaCl8fEdsKGgsZnVuY3Rpb24oeSxDKXtoMHQuaW5jbHVkZXMoQykmJih2W0NdPXkpfSl9fSx7a2V5OiJnZXRBbGxDb2x1bW5zUHJvcGVydGllcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''aD17c29ydEVtcHR5Q2VsbHM6dGhpcy5zb3J0RW1wdHlDZWxscyxpbmRpY2F0b3I6dGhpcy5pbmRpY2F0b3IsaGVhZGVyQWN0aW9uOnRoaXMuaGVhZGVyQWN0aW9ufTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5jb21wYXJlRnVuY3Rpb25GYWN0b3J5JiYoaC5jb21wYXJlRnVuY3Rp''@;'; put 'put ''b25GYWN0b3J5PXRoaXMuY29tcGFyZUZ1bmN0aW9uRmFjdG9yeSksaH19LHtrZXk6ImdldFNvcnRPcmRlck9mQ29sdW1uIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdjtyZXR1cm4gbnVsbD09PSh2PXRoaXMuc29ydGluZ1N0YXRlcy5nZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNh''@;'; put 'put ''bENvbHVtbihoKSkpfHx2b2lkIDA9PT12P3ZvaWQgMDp2LnNvcnRPcmRlcn19LHtrZXk6ImdldEluZGV4T2ZDb2x1bW5JblNvcnRRdWV1ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIGg9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihoKSx0aGlzLnNvcnRpbmdTdGF0ZXMuZ2V0RW50cmll''@;'; put 'put ''cygpLmZpbmRJbmRleChmdW5jdGlvbih2KXtyZXR1cm4gSk1lKHYsMSlbMF09PT1ofSl9fSx7a2V5OiJnZXROdW1iZXJPZlNvcnRlZENvbHVtbnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc29ydGluZ1N0YXRlcy5nZXRMZW5ndGgoKX19LHtrZXk6ImlzTGlzdE9mU29ydGVkQ29s''@;'; put 'put ''dW1uc0VtcHR5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5nZXROdW1iZXJPZlNvcnRlZENvbHVtbnMoKX19LHtrZXk6ImlzQ29sdW1uU29ydGVkIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4geGwodGhpcy5zb3J0aW5nU3RhdGVzLmdldFZhbHVlQXRJbmRleCh0aGlzLmhv''@;'; put 'put ''dC50b1BoeXNpY2FsQ29sdW1uKGgpKSl9fSx7a2V5OiJnZXRTb3J0U3RhdGVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXM7cmV0dXJuIG51bGw9PT10aGlzLnNvcnRpbmdTdGF0ZXM/W106dGhpcy5zb3J0aW5nU3RhdGVzLmdldEVudHJpZXMoKS5tYXAoZnVuY3Rpb24oeSl7dmFyIEM9''@;'; put 'put ''Sk1lKHksMiksWj1DWzFdO3JldHVybiBmdW5jdGlvbiBpMHQoZCl7Zm9yKHZhciBnPTE7Zzxhcmd1bWVudHMubGVuZ3RoO2crKyl7dmFyIGg9bnVsbCE9YXJndW1lbnRzW2ddP2FyZ3VtZW50c1tnXTp7fTtnJTI/UU1lKE9iamVjdChoKSwhMCkuZm9yRWFjaChmdW5jdGlvbih2KXtvMHQoZCx2''@;'; put 'put ''LGhbdl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhoKSk6UU1lKE9iamVjdChoKSkuZm9yRWFjaChmdW5jdGlvbih2KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2''@;'; put 'put ''LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaCx2KSl9KX1yZXR1cm4gZH0oe2NvbHVtbjpoLmhvdC50b1Zpc3VhbENvbHVtbihDWzBdKX0sWil9KX19LHtrZXk6ImdldENvbHVtblNvcnRTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy5nZXRTb3J0T3JkZXJPZkNv''@;'; put 'put ''bHVtbihoKTtpZihUbyh2KSlyZXR1cm57Y29sdW1uOmgsc29ydE9yZGVyOnZ9fX0se2tleToic2V0U29ydFN0YXRlcyIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5zb3J0aW5nU3RhdGVzLmNsZWFyKCk7Zm9yKHZhciB2PTA7djxoLmxlbmd0aDt2Kz0xKXRoaXMuc29ydGluZ1N0YXRlcy5zZXRW''@;'; put 'put ''YWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihoW3ZdLmNvbHVtbikse3NvcnRPcmRlcjpoW3ZdLnNvcnRPcmRlcn0pfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHRoaXMubWFwTmFt''@;'; put 'put ''ZSksdGhpcy5zb3J0aW5nU3RhdGVzPW51bGx9fV0pLGR9KCksVHRlPSJhc2MiLEl0ZT0iZGVzYyI7ZnVuY3Rpb24gJE1lKGQpe2lmKGQhPT1JdGUpcmV0dXJuIGQ9PT1UdGU/SXRlOlR0ZX1mdW5jdGlvbiBxTWUoZCl7cmV0dXJuIGQucXVlcnlTZWxlY3RvcigiLiIuY29uY2F0KCJjb2xIZWFk''@;'; put 'put ''ZXIiKSl9ZnVuY3Rpb24gZUVlKGQsZyl7aWYoZDwwfHwhZy5wYXJlbnROb2RlKXJldHVybiExO3ZhciBoPWcucGFyZW50Tm9kZS5wYXJlbnROb2RlLmNoaWxkTm9kZXM7cmV0dXJuLTE9PUFycmF5LmZyb20oaCkuaW5kZXhPZihnLnBhcmVudE5vZGUpLWgubGVuZ3RofWZ1bmN0aW9uIHA4ZShk''@;'; put 'put ''LGcsaCl7cmV0dXJuLTE9PT1kJiZnPj0wJiYhMT09PUV3KGgpfXZhciB0RWU9ImluZGljYXRvckRpc2FibGVkIixuRWU9ImNvbHVtblNvcnRpbmciLHJFZT0ic29ydEFjdGlvbiIsaUVlPW5ldyBNYXAoW1tUdGUsImFzY2VuZGluZyJdLFtJdGUsImRlc2NlbmRpbmciXV0pO2Z1bmN0aW9uIF8w''@;'; put 'put ''dChkLGcsaCx2KXt2YXIgeT1bbkVlXTtpZih2JiZ5LnB1c2gockVlKSwhMT09PWgpcmV0dXJuIHkucHVzaCh0RWUpLHk7dmFyIEM9ZC5nZXRTb3J0T3JkZXJPZkNvbHVtbihnKTtyZXR1cm4gVG8oQykmJnkucHVzaChpRWUuZ2V0KEMpKSx5fWZ1bmN0aW9uIEMwdCgpe3JldHVybiBBcnJheS5m''@;'; put 'put ''cm9tKGlFZS52YWx1ZXMoKSkuY29uY2F0KHJFZSx0RWUsbkVlKX1mdW5jdGlvbiBvRWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFi''@;'; put 'put ''bGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBhRWUoZCxnLGgpe3JldHVybiBnJiZvRWUoZC5wcm90b3R5cGUsZyksaCYmb0VlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZH1mdW5jdGlvbiBs''@;'; put 'put ''RWUoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX12YXIgc0VlPWFFZShmdW5jdGlvbiBkKGcpe2xFZSh0aGlzLGQpLHRoaXMuZGF0YT1nLHRoaXMubmV4dD1udWxsLHRoaXMucHJldj1udWxs''@;'; put 'put ''fSksazB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZCgpe2xFZSh0aGlzLGQpLHRoaXMuZmlyc3Q9bnVsbCx0aGlzLmxhc3Q9bnVsbH1yZXR1cm4gYUVlKGQsW3trZXk6InB1c2giLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PW5ldyBzRWUoaCk7aWYobnVsbD09PXRoaXMuZmlyc3QpdGhpcy5maXJz''@;'; put 'put ''dD12LHRoaXMubGFzdD12O2Vsc2V7dmFyIHk9dGhpcy5sYXN0O3RoaXMubGFzdD12LHYucHJldj15LHkubmV4dD12fX19LHtrZXk6InVuc2hpZnQiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PW5ldyBzRWUoaCk7aWYobnVsbD09PXRoaXMuZmlyc3QpdGhpcy5maXJzdD12LHRoaXMubGFzdD12''@;'; put 'put ''O2Vsc2V7dmFyIHk9dGhpcy5maXJzdDt0aGlzLmZpcnN0PXYsdi5uZXh0PXkseS5wcmV2PXZ9fX0se2tleToiaW5vcmRlciIsdmFsdWU6ZnVuY3Rpb24oaCl7Zm9yKHZhciB2PXRoaXMuZmlyc3Q7djspaCh2KSx2PXYubmV4dH19LHtrZXk6InJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7aWYo''@;'; put 'put ''bnVsbD09PXRoaXMuZmlyc3QpcmV0dXJuITE7Zm9yKHZhciB5LEMsdj10aGlzLmZpcnN0O3Y7KXtpZih2LmRhdGE9PT1oKXJldHVybiBDPXYucHJldiwoeT12Lm5leHQpJiYoeS5wcmV2PUMpLEMmJihDLm5leHQ9eSksdj09PXRoaXMuZmlyc3QmJih0aGlzLmZpcnN0PXkpLHY9PT10aGlzLmxh''@;'; put 'put ''c3QmJih0aGlzLmxhc3Q9QyksITA7dj12Lm5leHR9cmV0dXJuITF9fSx7a2V5OiJoYXNDeWNsZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGg9dGhpcy5maXJzdCx2PXRoaXMuZmlyc3Q7Oyl7aWYobnVsbD09PWh8fG51bGw9PT0oaD1oLm5leHQpKXJldHVybiExO2lmKChoPWgubmV4dCk9''@;'; put 'put ''PT0odj12Lm5leHQpKXJldHVybiEwfX19LHtrZXk6InBvcCIsdmFsdWU6ZnVuY3Rpb24oKXtpZihudWxsPT09dGhpcy5sYXN0KXJldHVybiBudWxsO3ZhciBoPXRoaXMubGFzdDtyZXR1cm4gdGhpcy5sYXN0PXRoaXMubGFzdC5wcmV2LGh9fSx7a2V5OiJzaGlmdCIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXtpZihudWxsPT09dGhpcy5maXJzdClyZXR1cm4gbnVsbDt2YXIgaD10aGlzLmZpcnN0O3JldHVybiB0aGlzLmZpcnN0PXRoaXMuZmlyc3QubmV4dCxofX0se2tleToicmVjdXJzaXZlUmV2ZXJzZSIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLmZpcnN0KXsoZnVuY3Rpb24gaCh5LEMpeyFD''@;'; put 'put ''fHwoaChDLEMubmV4dCksQy5uZXh0PXkpfSkodGhpcy5maXJzdCx0aGlzLmZpcnN0Lm5leHQpLHRoaXMuZmlyc3QubmV4dD1udWxsO3ZhciB2PXRoaXMuZmlyc3Q7dGhpcy5maXJzdD10aGlzLmxhc3QsdGhpcy5sYXN0PXZ9fX0se2tleToicmV2ZXJzZSIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0''@;'; put 'put ''aGlzLmZpcnN0JiZ0aGlzLmZpcnN0Lm5leHQpe2Zvcih2YXIgeSxoPXRoaXMuZmlyc3QubmV4dCx2PXRoaXMuZmlyc3Q7aDspeT1oLm5leHQsaC5uZXh0PXYsdi5wcmV2PWgsdj1oLGg9eTt0aGlzLmZpcnN0Lm5leHQ9bnVsbCx0aGlzLmxhc3QucHJldj1udWxsLHk9dGhpcy5maXJzdCx0aGlz''@;'; put 'put ''LmZpcnN0PXYsdGhpcy5sYXN0PXl9fX1dKSxkfSgpO2NvbnN0IHVFZT1rMHQ7dmFyIFMwdD1mdW5jdGlvbihnLGgpe3ZhciB2PWcudG9TdHJpbmcoKSx5PWgudG9TdHJpbmcoKTtyZXR1cm4gdj09PXk/MDp2PHk/LTE6MX07ZnVuY3Rpb24gZzhlKGQpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+''@;'; put 'put ''MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpTMHQsaD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MCx2PWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpkLmxlbmd0''@;'; put 'put ''aDtpZihNYXRoLmFicyh2LWgpPD0xKXJldHVybltdO3ZhciB5PU1hdGguY2VpbCgoaCt2KS8yKTtyZXR1cm4gZzhlKGQsZyxoLHkpLGc4ZShkLGcseSx2KSxNMHQoZCxnLGgseSx2KX1mdW5jdGlvbiBNMHQoZCxnLGgsdix5KXtmb3IodmFyIEM9bmV3IHVFZSxJPW5ldyB1RWUsWj12LWgsdWU9''@;'; put 'put ''eS12LF9lPU1hdGgubWF4KFosdWUpLEJlPXktaCxOZT0wO05lPF9lO05lKz0xKU5lPFomJkMucHVzaChkW2grTmVdKSxOZTx1ZSYmSS5wdXNoKGRbditOZV0pO2Zvcih2YXIgS2U9MDtLZTxCZTspZFtoK0tlXT1DLmZpcnN0JiZJLmZpcnN0P2coQy5maXJzdC5kYXRhLEkuZmlyc3QuZGF0YSk+''@;'; put 'put ''MD9JLnNoaWZ0KCkuZGF0YTpDLnNoaWZ0KCkuZGF0YTpDLmZpcnN0P0Muc2hpZnQoKS5kYXRhOkkuc2hpZnQoKS5kYXRhLEtlKz0xO3JldHVybiBkfWZ1bmN0aW9uIGNFZShkLGcsaCl7dmFyIHY9Zy5sb2NhbGU7cmV0dXJuIGZ1bmN0aW9uKHksQyl7dmFyIEk9aC5zb3J0RW1wdHlDZWxsczty''@;'; put 'put ''ZXR1cm4ic3RyaW5nIj09dHlwZW9mIHkmJih5PXkudG9Mb2NhbGVMb3dlckNhc2UodikpLCJzdHJpbmciPT10eXBlb2YgQyYmKEM9Qy50b0xvY2FsZUxvd2VyQ2FzZSh2KSkseT09PUM/MDpkYyh5KT9kYyhDKT8wOkkmJiJhc2MiPT09ZD8tMToxOmRjKEMpP0kmJiJhc2MiPT09ZD8xOi0xOmlz''@;'; put 'put ''TmFOKHkpJiYhaXNOYU4oQyk/ImFzYyI9PT1kPzE6LTE6IWlzTmFOKHkpJiZpc05hTihDKXx8KGlzTmFOKHkpfHxpc05hTihDKXx8KHk9cGFyc2VGbG9hdCh5KSxDPXBhcnNlRmxvYXQoQykpLHk8Qyk/ImFzYyI9PT1kPy0xOjE6eT5DPyJhc2MiPT09ZD8xOi0xOjB9fXZhciBtOGU9THAoInNv''@;'; put 'put ''cnRpbmcuY29tcGFyZUZ1bmN0aW9uRmFjdG9yeSIpLER0ZT1tOGUucmVnaXN0ZXIsaEVlPW04ZS5nZXRJdGVtLFIwdD1tOGUuaGFzSXRlbSxkRWU9THAoInNvcnRpbmcubWFpblNvcnRDb21wYXJhdG9yIikscEVlPWRFZS5yZWdpc3RlcixCMHQ9ZEVlLmdldEl0ZW07ZnVuY3Rpb24gZ0VlKGQp''@;'; put 'put ''e3JldHVybiBSMHQoZCk/aEVlKGQpOmhFZSgiZGVmYXVsdCIpfWZ1bmN0aW9uIG1FZShkKXtyZXR1cm4gZnVuY3Rpb24gTjB0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBIMHQoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRb''@;'; put 'put ''U3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQpfShkKXx8ZnVuY3Rpb24gRjB0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiB2RWUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwo''@;'; put 'put ''ZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVk''@;'; put 'put ''KT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIHZFZShkLGcpfX0oZCl8fGZ1bmN0aW9uIFAwdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5''@;'; put 'put ''IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gdkVlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVu''@;'; put 'put ''Y3Rpb24gdjhlKGQpe3JldHVybih2OGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5j''@;'; put 'put ''b25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1EdGUoIm51bWVyaWMiLGZ1bmN0aW9uIHgwdChkLGcsaCl7cmV0dXJuIGZ1bmN0aW9uKHYseSl7dmFyIEM9cGFyc2VGbG9hdCh2KSxJPXBhcnNlRmxvYXQoeSksWj1oLnNvcnRF''@;'; put 'put ''bXB0eUNlbGxzO2lmKEM9PT1JfHxpc05hTihDKSYmaXNOYU4oSSkpcmV0dXJuIDA7aWYoWil7aWYoZGModikpcmV0dXJuImFzYyI9PT1kPy0xOjE7aWYoZGMoeSkpcmV0dXJuImFzYyI9PT1kPzE6LTF9cmV0dXJuIGlzTmFOKEMpPzE6aXNOYU4oSSk/LTE6QzxJPyJhc2MiPT09ZD8tMToxOkM+''@;'; put 'put ''ST8iYXNjIj09PWQ/MTotMTowfX0pLER0ZSgiY2hlY2tib3giLGZ1bmN0aW9uIEkwdChkLGcsaCl7dmFyIHY9Zy5jaGVja2VkVGVtcGxhdGUseT1nLnVuY2hlY2tlZFRlbXBsYXRlLEM9aC5zb3J0RW1wdHlDZWxscztyZXR1cm4gZnVuY3Rpb24oSSxaKXt2YXIgdWU9ZGMoSSksX2U9ZGMoWiks''@;'; put 'put ''QmU9dWU/eTpJLE5lPV9lP3k6WixLZT1CZT09PXl8fEJlPT09dixwdD1OZT09PXl8fE5lPT09djtpZighMT09PUMpe2lmKHVlJiYhMT09PV9lKXJldHVybiAxO2lmKCExPT09dWUmJl9lKXJldHVybi0xfXJldHVybiExPT09S2UmJnB0PyJhc2MiPT09ZD8tMToxOktlJiYhMT09PXB0PyJhc2Mi''@;'; put 'put ''PT09ZD8xOi0xOiExPT09S2UmJiExPT09cHQ/Y0VlKGQsZyxoKShJLFopOkJlPT09eSYmTmU9PT12PyJhc2MiPT09ZD8tMToxOkJlPT09diYmTmU9PT15PyJhc2MiPT09ZD8xOi0xOjB9fSksRHRlKCJkYXRlIixmdW5jdGlvbiBMMHQoZCxnLGgpe3JldHVybiBmdW5jdGlvbih2LHkpe3ZhciBD''@;'; put 'put ''PWguc29ydEVtcHR5Q2VsbHM7aWYodj09PXkpcmV0dXJuIDA7aWYoZGModikpcmV0dXJuIGRjKHkpPzA6QyYmImFzYyI9PT1kPy0xOjE7aWYoZGMoeSkpcmV0dXJuIEMmJiJhc2MiPT09ZD8xOi0xO3ZhciBJPWcuZGF0ZUZvcm1hdCxaPVRsKHYsSSksdWU9VGwoeSxJKTtyZXR1cm4gWi5pc1Zh''@;'; put 'put ''bGlkKCk/dWUuaXNWYWxpZCgpP3VlLmlzQWZ0ZXIoWik/ImFzYyI9PT1kPy0xOjE6dWUuaXNCZWZvcmUoWik/ImFzYyI9PT1kPzE6LTE6MDotMToxfX0pLER0ZSgiZGVmYXVsdCIsY0VlKTt2YXIgajB0PVsiY29sdW1uIl0sWjB0PVsiY29sdW1uIl07ZnVuY3Rpb24gRk8oZCl7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uIFkwdChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBBOGUoZCl9KGQpfHxmdW5jdGlvbiBXMHQoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9t''@;'; put 'put ''KGQpfShkKXx8ZnVuY3Rpb24gRzB0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBBOGUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0''@;'; put 'put ''cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIEE4ZShkLGcpfX0oZCl8fGZ1bmN0aW9uIHowdCgpe3Ro''@;'; put 'put ''cm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9u''@;'; put 'put ''IEE4ZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIEFFZShkLGcpe3ZhciBoPU9iamVjdC5rZXlzKGQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5''@;'; put 'put ''bWJvbHMpe3ZhciB2PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZCk7ZyYmKHY9di5maWx0ZXIoZnVuY3Rpb24oeSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCx5KS5lbnVtZXJhYmxlfSkpLGgucHVzaC5hcHBseShoLHYpfXJldHVybiBofWZ1bmN0aW9u''@;'; put 'put ''IHlFZShkKXtmb3IodmFyIGc9MTtnPGFyZ3VtZW50cy5sZW5ndGg7ZysrKXt2YXIgaD1udWxsIT1hcmd1bWVudHNbZ10/YXJndW1lbnRzW2ddOnt9O2clMj9BRWUoT2JqZWN0KGgpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe1UwdChkLHYsaFt2XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlE''@;'; put 'put ''ZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGgpKTpBRWUoT2JqZWN0KGgpKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv''@;'; put 'put ''cihoLHYpKX0pfXJldHVybiBkfWZ1bmN0aW9uIFUwdChkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9ZnVuY3Rpb24gd0VlKGQsZyl7aWYobnVs''@;'; put 'put ''bD09ZClyZXR1cm57fTt2YXIgdix5LGg9ZnVuY3Rpb24gUTB0KGQsZyl7aWYobnVsbD09ZClyZXR1cm57fTt2YXIgeSxDLGg9e30sdj1PYmplY3Qua2V5cyhkKTtmb3IoQz0wO0M8di5sZW5ndGg7QysrKSEoZy5pbmRleE9mKHk9dltDXSk+PTApJiYoaFt5XT1kW3ldKTtyZXR1cm4gaH0oZCxn''@;'; put 'put ''KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGQpO2Zvcih5PTA7eTxDLmxlbmd0aDt5KyspIShnLmluZGV4T2Yodj1DW3ldKT49MCkmJighT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxs''@;'; put 'put ''KGQsdil8fChoW3ZdPWRbdl0pKX1yZXR1cm4gaH1mdW5jdGlvbiBiRWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9i''@;'; put 'put ''amVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBYUygpe3JldHVybiBYUz0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9SzB0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0''@;'; put 'put ''LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxYUy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gSzB0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w''@;'; put 'put ''ZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1CdihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiB5OGUoZCxnKXtyZXR1cm4oeThlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQs''@;'; put 'put ''Zyl9ZnVuY3Rpb24gZW90KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09djhlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVm''@;'; put 'put ''aW5lZCIpO3JldHVybiBmdW5jdGlvbiB0b3QoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBCdihkKXtyZXR1cm4o''@;'; put 'put ''QnY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgdzhlPSJjb2x1bW5Tb3J0aW5nIixfRWU9ImFwcGVuZCI7cEVlKHc4ZSxmdW5j''@;'; put 'put ''dGlvbiBWMHQoZCxnKXtyZXR1cm4gZnVuY3Rpb24oaCx2KXt2YXIgQmUsTmUsS2UscHQsT3QsQz1tRWUoaCkuc2xpY2UoMSksWj1tRWUodikuc2xpY2UoMSk7cmV0dXJuIEJlPWRbMF0sS2U9Q1swXSxwdD1aWzBdLCgoT3Q9KE5lPWdbMF0pLmNvbHVtblNvcnRpbmcpLmNvbXBhcmVGdW5jdGlv''@;'; put 'put ''bkZhY3Rvcnk/T3QuY29tcGFyZUZ1bmN0aW9uRmFjdG9yeTpnRWUoTmUudHlwZSkpKEJlLE5lLE90KShLZSxwdCl9fSksem8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZUNvbHVtblNvcnQiKSx6by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJDb2x1bW5Tb3J0Iik7dmFy''@;'; put 'put ''IENFZT1mdW5jdGlvbihkKXshZnVuY3Rpb24gJDB0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNy''@;'; put 'put ''ZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJnk4ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIHEwdChkKXt2''@;'; put 'put ''YXIgZz1mdW5jdGlvbiBub3QoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3Rv''@;'; put 'put ''dHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1CdihkKTtpZihnKXt2YXIgQz1Cdih0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29u''@;'; put 'put ''c3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZW90KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYpe3ZhciB5O3JldHVybiBmdW5jdGlvbiBKMHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJD''@;'; put 'put ''YW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoeT1nLmNhbGwodGhpcyx2KSkuY29sdW1uU3RhdGVzTWFuYWdlcj1udWxsLHkuY29sdW1uTWV0YUNhY2hlPW51bGwseS5wbHVnaW5LZXk9dzhlLHkuaW5kZXhlc1NlcXVlbmNlQ2FjaGU9bnVsbCx5fXJldHVybiBm''@;'; put 'put ''dW5jdGlvbiBYMHQoZCxnLGgpe2cmJmJFZShkLnByb3RvdHlwZSxnKSxoJiZiRWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0''@;'; put 'put ''dGluZ3MoKVt0aGlzLnBsdWdpbktleV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLmNvbHVtblN0YXRlc01hbmFnZXI9bmV3IG0wdCh0aGlzLmhvdCwiIi5jb25jYXQodGhpcy5wbHVnaW5LZXksIi5zb3J0aW5n''@;'; put 'put ''U3RhdGVzIikpLHRoaXMuY29sdW1uTWV0YUNhY2hlPW5ldyBEdyhmdW5jdGlvbihDKXt2YXIgST15LmhvdC50b1Zpc3VhbENvbHVtbihDKTtyZXR1cm4gbnVsbD09PUkmJihJPUMpLHkuZ2V0TWVyZ2VkUGx1Z2luU2V0dGluZ3MoSSl9KSx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5yZWdp''@;'; put 'put ''c3Rlck1hcCgiIi5jb25jYXQodGhpcy5wbHVnaW5LZXksIi5jb2x1bW5NZXRhIiksdGhpcy5jb2x1bW5NZXRhQ2FjaGUpLHRoaXMuYWRkSG9vaygiYWZ0ZXJHZXRDb2xIZWFkZXIiLGZ1bmN0aW9uKEMsSSl7cmV0dXJuIHkub25BZnRlckdldENvbEhlYWRlcihDLEkpfSksdGhpcy5hZGRIb29r''@;'; put 'put ''KCJiZWZvcmVPbkNlbGxNb3VzZURvd24iLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVPbkNlbGxNb3VzZURvd24uYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlck9uQ2VsbE1vdXNlRG93biIsZnVuY3Rpb24oQyxJKXtyZXR1cm4geS5vbkFmdGVyT25DZWxsTW91''@;'; put 'put ''c2VEb3duKEMsSSl9KSx0aGlzLmFkZEhvb2soImFmdGVySW5pdCIsZnVuY3Rpb24oKXtyZXR1cm4geS5sb2FkT3JTb3J0QnlTZXR0aW5ncygpfSksdGhpcy5hZGRIb29rKCJhZnRlckxvYWREYXRhIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJMb2FkRGF0YS5hcHBseSh5LGFyZ3VtZW50''@;'; put 'put ''cyl9KSx0aGlzLmhvdC52aWV3JiZ0aGlzLmxvYWRPclNvcnRCeVNldHRpbmdzKCksWFMoQnYoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9ZnVuY3Rpb24oWix1''@;'; put 'put ''ZSl7dmFyIF9lPXFNZSh1ZSk7ITE9PT1lRWUoWix1ZSl8fG51bGw9PT1fZXx8eS51cGRhdGVIZWFkZXJDbGFzc2VzKF9lKX07dGhpcy5ob3QuYWRkSG9vaygiYWZ0ZXJHZXRDb2xIZWFkZXIiLEMpLHRoaXMuaG90LmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGZ1bmN0aW9uKCl7eS5o''@;'; put 'put ''b3QucmVtb3ZlSG9vaygiYWZ0ZXJHZXRDb2xIZWFkZXIiLEMpfSksdGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oZnVuY3Rpb24oKXtudWxsIT09eS5pbmRleGVzU2VxdWVuY2VDYWNoZSYmKHkuaG90LnJvd0luZGV4TWFwcGVyLnNldEluZGV4ZXNTZXF1ZW5jZSh5LmluZGV4ZXNTZXF1ZW5jZUNh''@;'; put 'put ''Y2hlLmdldFZhbHVlcygpKSx5LmhvdC5yb3dJbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHkucGx1Z2luS2V5KSl9LCEwKSx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKCIiLmNvbmNhdCh0aGlzLnBsdWdpbktleSwiLmNvbHVtbk1ldGEiKSksdGhpcy5jb2x1bW5T''@;'; put 'put ''dGF0ZXNNYW5hZ2VyLmRlc3Ryb3koKSx0aGlzLmNvbHVtbk1ldGFDYWNoZT1udWxsLHRoaXMuY29sdW1uU3RhdGVzTWFuYWdlcj1udWxsLFhTKEJ2KGgucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6InNvcnQiLHZhbHVlOmZ1bmN0aW9uKHkpe3Zh''@;'; put 'put ''ciBDPXRoaXMuZ2V0U29ydENvbmZpZygpLEk9dGhpcy5nZXROb3JtYWxpemVkU29ydENvbmZpZ3MoeSksWj10aGlzLmFyZVZhbGlkU29ydENvbmZpZ3MoSSk7ITEhPT10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQ29sdW1uU29ydCIsQyxJLFopJiYoMD09PUMubGVuZ3RoJiZudWxsPT09dGhp''@;'; put 'put ''cy5pbmRleGVzU2VxdWVuY2VDYWNoZSYmKHRoaXMuaW5kZXhlc1NlcXVlbmNlQ2FjaGU9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5LZXksbmV3IGhrZSksdGhpcy5pbmRleGVzU2VxdWVuY2VDYWNoZS5zZXRWYWx1ZXModGhpcy5ob3Qucm93SW5kZXhN''@;'; put 'put ''YXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNlKCkpKSxaJiYodGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLnNldFNvcnRTdGF0ZXMoSSksdGhpcy5zb3J0QnlQcmVzZXRTb3J0U3RhdGVzKEkpLHRoaXMuc2F2ZUFsbFNvcnRTZXR0aW5ncyhJKSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ29sdW1u''@;'; put 'put ''U29ydCIsQyxaP0k6QyxaKSxaJiYodGhpcy5ob3QucmVuZGVyKCksdGhpcy5ob3QuZm9yY2VGdWxsUmVuZGVyPSExLHRoaXMuaG90LnZpZXcucmVuZGVyKCkpKX19LHtrZXk6ImNsZWFyU29ydCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNvcnQoW10pfX0se2tleToiaXNTb3J0ZWQiLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5hYmxlZCYmIXRoaXMuY29sdW1uU3RhdGVzTWFuYWdlci5pc0xpc3RPZlNvcnRlZENvbHVtbnNFbXB0eSgpfX0se2tleToiZ2V0U29ydENvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIFRvKHkpP3RoaXMuY29sdW1uU3RhdGVzTWFuYWdl''@;'; put 'put ''ci5nZXRDb2x1bW5Tb3J0U3RhdGUoeSk6dGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLmdldFNvcnRTdGF0ZXMoKX19LHtrZXk6InNldFNvcnRDb25maWciLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMuZ2V0Tm9ybWFsaXplZFNvcnRDb25maWdzKHkpO3RoaXMuYXJlVmFsaWRTb3J0Q29u''@;'; put 'put ''ZmlncyhDKSYmdGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLnNldFNvcnRTdGF0ZXMoQyl9fSx7a2V5OiJnZXROb3JtYWxpemVkU29ydENvbmZpZ3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltd''@;'; put 'put ''O3JldHVybiBBcnJheS5pc0FycmF5KHkpP3kuc2xpY2UoMCwxKTpbeV19fSx7a2V5OiJhcmVWYWxpZFNvcnRDb25maWdzIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLmhvdC5jb3VudENvbHMoKTtyZXR1cm4gZnVuY3Rpb24geTB0KGQpe2lmKGQuc29tZShmdW5jdGlvbihoKXtyZXR1''@;'; put 'put ''cm4hMT09PWZ1bmN0aW9uIEEwdChkKXtpZighMT09PXhsKGQpKXJldHVybiExO3ZhciBoPWQuc29ydE9yZGVyO3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGQuY29sdW1uKSYmW1R0ZSxJdGVdLmluY2x1ZGVzKGgpfShoKX0pKXJldHVybiExO3ZhciBnPWQubWFwKGZ1bmN0aW9uKGgpe3JldHVy''@;'; put 'put ''biBoLmNvbHVtbn0pO3JldHVybiBuZXcgU2V0KGcpLnNpemU9PT1nLmxlbmd0aH0oeSkmJnkuZXZlcnkoZnVuY3Rpb24oSSl7dmFyIFo9SS5jb2x1bW47cmV0dXJuIFo8PUMmJlo+PTB9KX19LHtrZXk6InNhdmVBbGxTb3J0U2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMs''@;'; put 'put ''ST10aGlzLmNvbHVtblN0YXRlc01hbmFnZXIuZ2V0QWxsQ29sdW1uc1Byb3BlcnRpZXMoKTtJLmluaXRpYWxDb25maWc9T2woeSxmdW5jdGlvbihfZSl7dmFyIEJlPV9lLmNvbHVtbixOZT13RWUoX2UsajB0KTtyZXR1cm4geUVlKHtjb2x1bW46Qy5ob3QudG9QaHlzaWNhbENvbHVtbihCZSl9''@;'; put 'put ''LE5lKX0pLHRoaXMuaG90LnJ1bkhvb2tzKCJwZXJzaXN0ZW50U3RhdGVTYXZlIiwiY29sdW1uU29ydGluZyIsSSl9fSx7a2V5OiJnZXRBbGxTYXZlZFNvcnRTZXR0aW5ncyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9e307dGhpcy5ob3QucnVuSG9va3MoInBlcnNpc3RlbnRTdGF0''@;'; put 'put ''ZUxvYWQiLCJjb2x1bW5Tb3J0aW5nIixDKTt2YXIgST1DLnZhbHVlO3JldHVybiBUbyhJKSYmQXJyYXkuaXNBcnJheShJLmluaXRpYWxDb25maWcpJiYoSS5pbml0aWFsQ29uZmlnPU9sKEkuaW5pdGlhbENvbmZpZyxmdW5jdGlvbihfZSl7dmFyIEJlPV9lLmNvbHVtbixOZT13RWUoX2UsWjB0''@;'; put 'put ''KTtyZXR1cm4geUVlKHtjb2x1bW46eS5ob3QudG9WaXN1YWxDb2x1bW4oQmUpfSxOZSl9KSksSX19LHtrZXk6ImdldENvbHVtbk5leHRDb25maWciLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMuY29sdW1uU3RhdGVzTWFuYWdlci5nZXRTb3J0T3JkZXJPZkNvbHVtbih5KTtpZihUbyhD''@;'; put 'put ''KSl7dmFyIEk9JE1lKEMpO3JldHVybiBUbyhJKT97Y29sdW1uOnksc29ydE9yZGVyOkl9OnZvaWQgMH12YXIgWj10aGlzLmhvdC5jb3VudENvbHMoKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHkpJiZ5Pj0wJiZ5PFopcmV0dXJue2NvbHVtbjp5LHNvcnRPcmRlcjokTWUoKX19fSx7a2V5OiJnZXRO''@;'; put 'put ''ZXh0U29ydENvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOl9FZSxJPXRoaXMuY29sdW1uU3RhdGVzTWFuYWdlci5nZXRJbmRleE9mQ29sdW1uSW5Tb3J0UXVldWUoeSksWj0tMSE9PUks''@;'; put 'put ''dWU9dGhpcy5nZXRTb3J0Q29uZmlnKCksX2U9dGhpcy5nZXRDb2x1bW5OZXh0Q29uZmlnKHkpO2lmKFope2lmKGExKF9lKSlyZXR1cm5bXS5jb25jYXQoRk8odWUuc2xpY2UoMCxJKSksRk8odWUuc2xpY2UoSSsxKSkpO2lmKEM9PT1fRWUpcmV0dXJuW10uY29uY2F0KEZPKHVlLnNsaWNlKDAs''@;'; put 'put ''SSkpLEZPKHVlLnNsaWNlKEkrMSkpLFtfZV0pO2lmKCJyZXBsYWNlIj09PUMpcmV0dXJuW10uY29uY2F0KEZPKHVlLnNsaWNlKDAsSSkpLFtfZV0sRk8odWUuc2xpY2UoSSsxKSkpfXJldHVybiBUbyhfZSk/dWUuY29uY2F0KF9lKTp1ZX19LHtrZXk6ImdldFBsdWdpbkNvbHVtbkNvbmZpZyIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oeSl7aWYoeGwoeSkpe3ZhciBDPXlbdGhpcy5wbHVnaW5LZXldO2lmKHhsKEMpKXJldHVybiBDfXJldHVybnt9fX0se2tleToiZ2V0TWVyZ2VkUGx1Z2luU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMuaG90LmdldFNldHRpbmdzKClbdGhpcy5w''@;'; put 'put ''bHVnaW5LZXldLEk9dGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLmdldEFsbENvbHVtbnNQcm9wZXJ0aWVzKCksWj10aGlzLmhvdC5nZXRDZWxsTWV0YSgwLHkpLHVlPU9iamVjdC5nZXRQcm90b3R5cGVPZihaKTtyZXR1cm4gQXJyYXkuaXNBcnJheSh1ZS5jb2x1bW5zKT9PYmplY3QuYXNzaWdu''@;'; put 'put ''KEksQyx0aGlzLmdldFBsdWdpbkNvbHVtbkNvbmZpZyh1ZS5jb2x1bW5zW3ldKSk6VTIodWUuY29sdW1ucyk/T2JqZWN0LmFzc2lnbihJLEMsdGhpcy5nZXRQbHVnaW5Db2x1bW5Db25maWcodWUuY29sdW1ucyh5KSkpOk9iamVjdC5hc3NpZ24oSSxDKX19LHtrZXk6ImdldEZpcnN0Q2VsbFNl''@;'; put 'put ''dHRpbmdzIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLmhvdC5nZXRDZWxsTWV0YSgwLHkpLEk9T2JqZWN0LmNyZWF0ZShDKTtyZXR1cm4gSVt0aGlzLnBsdWdpbktleV09dGhpcy5jb2x1bW5NZXRhQ2FjaGUuZ2V0VmFsdWVBdEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4o''@;'; put 'put ''eSkpLEl9fSx7a2V5OiJnZXROdW1iZXJPZlJvd3NUb1NvcnQiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMuaG90LmdldFNldHRpbmdzKCk7cmV0dXJuIEMubWF4Um93czw9eT9DLm1heFJvd3M6eS1DLm1pblNwYXJlUm93c319LHtrZXk6InNvcnRCeVByZXNldFNvcnRTdGF0ZXMiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXM7aWYoMCE9PXkubGVuZ3RoKXtmb3IodmFyIEk9W10sWj10aGlzLmhvdC5jb3VudFJvd3MoKSx1ZT1mdW5jdGlvbihmbil7cmV0dXJuIE9sKHksZnVuY3Rpb24oTG4pe3JldHVybiBDLmhvdC5nZXREYXRhQXRDZWxsKGZuLExuLmNvbHVtbil9KX0s''@;'; put 'put ''X2U9MDtfZTx0aGlzLmdldE51bWJlck9mUm93c1RvU29ydChaKTtfZSs9MSlJLnB1c2goW3RoaXMuaG90LnRvUGh5c2ljYWxSb3coX2UpXS5jb25jYXQodWUoX2UpKSk7dmFyIEJlPU9sKEksZnVuY3Rpb24oJHQpe3JldHVybiAkdFswXX0pOyFmdW5jdGlvbiBFMHQoZCxnKXtmb3IodmFyIGg9''@;'; put 'put ''QjB0KGcpLHY9YXJndW1lbnRzLmxlbmd0aCx5PW5ldyBBcnJheSh2PjI/di0yOjApLEM9MjtDPHY7QysrKXlbQy0yXT1hcmd1bWVudHNbQ107ZzhlKGQsaC5hcHBseSh2b2lkIDAseSkpfShJLHRoaXMucGx1Z2luS2V5LE9sKHksZnVuY3Rpb24oJHQpe3JldHVybiAkdC5zb3J0T3JkZXJ9KSxP''@;'; put 'put ''bCh5LGZ1bmN0aW9uKCR0KXtyZXR1cm4gQy5nZXRGaXJzdENlbGxTZXR0aW5ncygkdC5jb2x1bW4pfSkpO2Zvcih2YXIgTmU9SS5sZW5ndGg7TmU8WjtOZSs9MSlJLnB1c2goW05lXS5jb25jYXQodWUoTmUpKSk7dmFyIEtlPU9sKEksZnVuY3Rpb24oJHQpe3JldHVybiAkdFswXX0pLHB0PW5l''@;'; put 'put ''dyBNYXAoT2woQmUsZnVuY3Rpb24oJHQsZm4pe3JldHVyblskdCxLZVtmbl1dfSkpLE90PU9sKHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldEluZGV4ZXNTZXF1ZW5jZSgpLGZ1bmN0aW9uKCR0KXtyZXR1cm4gcHQuaGFzKCR0KT9wdC5nZXQoJHQpOiR0fSk7dGhpcy5ob3Qucm93SW5kZXhN''@;'; put 'put ''YXBwZXIuc2V0SW5kZXhlc1NlcXVlbmNlKE90KX1lbHNlIHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnNldEluZGV4ZXNTZXF1ZW5jZSh0aGlzLmluZGV4ZXNTZXF1ZW5jZUNhY2hlLmdldFZhbHVlcygpKX19LHtrZXk6ImxvYWRPclNvcnRCeVNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbigpe3Zh''@;'; put 'put ''ciB5PXRoaXMuZ2V0QWxsU2F2ZWRTb3J0U2V0dGluZ3MoKTtpZih4bCh5KSl0aGlzLnNvcnRCeVNldHRpbmdzKHkpO2Vsc2V7dmFyIEM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVt0aGlzLnBsdWdpbktleV07dGhpcy5zb3J0QnlTZXR0aW5ncyhDKX19fSx7a2V5OiJzb3J0QnlTZXR0aW5ncyIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oeSl7aWYoeGwoeSkpe3RoaXMuY29sdW1uU3RhdGVzTWFuYWdlci51cGRhdGVBbGxDb2x1bW5zUHJvcGVydGllcyh5KTt2YXIgQz15LmluaXRpYWxDb25maWc7KEFycmF5LmlzQXJyYXkoQyl8fHhsKEMpKSYmdGhpcy5zb3J0KEMpfWVsc2UgdGhpcy5ob3QucmVuZGVy''@;'; put 'put ''KCl9fSx7a2V5OiJvbkFmdGVyR2V0Q29sSGVhZGVyIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXFNZShDKTtpZighMSE9PWVFZSh5LEMpJiZudWxsIT09SSl7dmFyIFo9dGhpcy5nZXRGaXJzdENlbGxTZXR0aW5ncyh5KVt0aGlzLnBsdWdpbktleV07dGhpcy51cGRhdGVIZWFkZXJDbGFz''@;'; put 'put ''c2VzKEksdGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLHksWi5pbmRpY2F0b3IsWi5oZWFkZXJBY3Rpb24pfX19LHtrZXk6InVwZGF0ZUhlYWRlckNsYXNzZXMiLHZhbHVlOmZ1bmN0aW9uKHkpe2lmKHBsKHksQzB0KCkpLCExIT09dGhpcy5lbmFibGVkKXtmb3IodmFyIEM9YXJndW1lbnRzLmxl''@;'; put 'put ''bmd0aCxJPW5ldyBBcnJheShDPjE/Qy0xOjApLFo9MTtaPEM7WisrKUlbWi0xXT1hcmd1bWVudHNbWl07TzAoeSxfMHQuYXBwbHkodm9pZCAwLEkpKX19fSx7a2V5OiJvblVwZGF0ZVNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbih5KXtYUyhCdihoLnByb3RvdHlwZSksIm9uVXBkYXRlU2V0dGlu''@;'; put 'put ''Z3MiLHRoaXMpLmNhbGwodGhpcyksbnVsbCE9PXRoaXMuY29sdW1uTWV0YUNhY2hlJiZ0aGlzLmNvbHVtbk1ldGFDYWNoZS5pbml0KHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldE51bWJlck9mSW5kZXhlcygpKSxUbyh5W3RoaXMucGx1Z2luS2V5XSkmJnRoaXMuc29ydEJ5U2V0dGlu''@;'; put 'put ''Z3MoeVt0aGlzLnBsdWdpbktleV0pfX0se2tleToib25BZnRlckxvYWREYXRhIix2YWx1ZTpmdW5jdGlvbih5KXshMD09PXkmJnRoaXMuaG90LnZpZXcmJnRoaXMubG9hZE9yU29ydEJ5U2V0dGluZ3MoKX19LHtrZXk6Indhc0NsaWNrYWJsZUhlYWRlckNsaWNrZWQiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KHksQyl7cmV0dXJuIHRoaXMuZ2V0Rmlyc3RDZWxsU2V0dGluZ3MoQylbdGhpcy5wbHVnaW5LZXldLmhlYWRlckFjdGlvbiYmIlNQQU4iPT09eS50YXJnZXQubm9kZU5hbWV9fSx7a2V5OiJvbkJlZm9yZU9uQ2VsbE1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksWil7ITEhPT1wOGUo''@;'; put 'put ''Qy5yb3csQy5jb2wseSkmJnRoaXMud2FzQ2xpY2thYmxlSGVhZGVyQ2xpY2tlZCh5LEMuY29sKSYmdGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuaXNDdHJsUHJlc3NlZCgpJiYoWi5jb2x1bW49ITApfX0se2tleToib25BZnRlck9uQ2VsbE1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''eSxDKXshMSE9PXA4ZShDLnJvdyxDLmNvbCx5KSYmdGhpcy53YXNDbGlja2FibGVIZWFkZXJDbGlja2VkKHksQy5jb2wpJiYodGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuaXNDdHJsUHJlc3NlZCgpJiYodGhpcy5ob3QuZGVzZWxlY3RDZWxsKCksdGhpcy5ob3Quc2VsZWN0Q29sdW1u''@;'; put 'put ''cyhDLmNvbCkpLHRoaXMuc29ydCh0aGlzLmdldENvbHVtbk5leHRDb25maWcoQy5jb2wpKSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5O251bGw9PT0oeT10aGlzLmNvbHVtblN0YXRlc01hbmFnZXIpfHx2b2lkIDA9PT15fHx5LmRlc3Ryb3koKSxYUyhCdihoLnBy''@;'; put 'put ''b3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiB3OGV9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiA1MH19XSksaH0oWXMpO2Z1bmN0aW9uIGtFZShkLGcpe2Zv''@;'; put 'put ''cih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fUwoNDIxNDApO3ZhciBsb3Q9''@;'; put 'put ''ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCl7KGZ1bmN0aW9uIG9vdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLnBsdWdpbj1nLHRoaXMuaG90PXRoaXMucGx1''@;'; put 'put ''Z2luLmhvdCx0aGlzLmVuZHBvaW50cz1bXSx0aGlzLnNldHRpbmdzPWgsdGhpcy5zZXR0aW5nc1R5cGU9ImFycmF5Iix0aGlzLmN1cnJlbnRFbmRwb2ludD1udWxsLHRoaXMuY2VsbHNUb1NldENhY2hlPVtdfXJldHVybiBmdW5jdGlvbiBhb3QoZCxnLGgpe2cmJmtFZShkLnByb3RvdHlwZSxn''@;'; put 'put ''KSxoJiZrRWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiZ2V0RW5kcG9pbnQiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiJmdW5jdGlvbiI9PT10aGlzLnNldHRpbmdzVHlwZT90aGlzLmZpbGxNaXNzaW5nRW5kcG9p''@;'; put 'put ''bnREYXRhKHRoaXMuc2V0dGluZ3MpW2hdOnRoaXMuZW5kcG9pbnRzW2hdfX0se2tleToiZ2V0QWxsRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PT10aGlzLnNldHRpbmdzVHlwZT90aGlzLmZpbGxNaXNzaW5nRW5kcG9pbnREYXRhKHRoaXMuc2V0dGluZ3Mp''@;'; put 'put ''OnRoaXMuZW5kcG9pbnRzfX0se2tleToiZmlsbE1pc3NpbmdFbmRwb2ludERhdGEiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnBhcnNlU2V0dGluZ3MoaC5jYWxsKHRoaXMpKX19LHtrZXk6InBhcnNlU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMseT1bXSxD''@;'; put 'put ''PWg7aWYoQ3x8ImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuc2V0dGluZ3MpcmV0dXJuIEN8fChDPXRoaXMuc2V0dGluZ3MpLFVyKEMsZnVuY3Rpb24oSSl7dmFyIFo9e307di5hc3NpZ25TZXR0aW5nKEksWiwicmFuZ2VzIixbWzAsdi5ob3QuY291bnRSb3dzKCktMV1dKSx2LmFzc2lnblNldHRp''@;'; put 'put ''bmcoSSxaLCJyZXZlcnNlZFJvd0Nvb3JkcyIsITEpLHYuYXNzaWduU2V0dGluZyhJLFosImRlc3RpbmF0aW9uUm93IixuZXcgRXJyb3IoIlxuICAgICAgICBZb3UgbXVzdCBwcm92aWRlIGEgZGVzdGluYXRpb24gcm93IGZvciB0aGUgQ29sdW1uIFN1bW1hcnkgcGx1Z2luIGluIG9yZGVyIHRv''@;'; put 'put ''IHdvcmsgcHJvcGVybHkhXG4gICAgICAiKSksdi5hc3NpZ25TZXR0aW5nKEksWiwiZGVzdGluYXRpb25Db2x1bW4iLG5ldyBFcnJvcigiXG4gICAgICAgIFlvdSBtdXN0IHByb3ZpZGUgYSBkZXN0aW5hdGlvbiBjb2x1bW4gZm9yIHRoZSBDb2x1bW4gU3VtbWFyeSBwbHVnaW4gaW4gb3JkZXIg''@;'; put 'put ''dG8gd29yayBwcm9wZXJseSFcbiAgICAgICIpKSx2LmFzc2lnblNldHRpbmcoSSxaLCJzb3VyY2VDb2x1bW4iLEkuZGVzdGluYXRpb25Db2x1bW4pLHYuYXNzaWduU2V0dGluZyhJLFosInR5cGUiLCJzdW0iKSx2LmFzc2lnblNldHRpbmcoSSxaLCJmb3JjZU51bWVyaWMiLCExKSx2LmFzc2ln''@;'; put 'put ''blNldHRpbmcoSSxaLCJzdXBwcmVzc0RhdGFUeXBlRXJyb3JzIiwhMCksdi5hc3NpZ25TZXR0aW5nKEksWiwic3VwcHJlc3NEYXRhVHlwZUVycm9ycyIsITApLHYuYXNzaWduU2V0dGluZyhJLFosImN1c3RvbUZ1bmN0aW9uIixudWxsKSx2LmFzc2lnblNldHRpbmcoSSxaLCJyZWFkT25seSIs''@;'; put 'put ''ITApLHYuYXNzaWduU2V0dGluZyhJLFosInJvdW5kRmxvYXQiLCExKSx5LnB1c2goWil9KSx5O3RoaXMuc2V0dGluZ3NUeXBlPSJmdW5jdGlvbiJ9fSx7a2V5OiJhc3NpZ25TZXR0aW5nIix2YWx1ZTpmdW5jdGlvbihoLHYseSxDKXtpZigicmFuZ2VzIiE9PXl8fHZvaWQgMCE9PWhbeV0pe2lm''@;'; put 'put ''KCJyYW5nZXMiIT09eXx8MCE9PWhbeV0ubGVuZ3RoKWlmKHZvaWQgMD09PWhbeV0pe2lmKEMgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBDO3ZbeV09Q31lbHNlIHZbeV09ImRlc3RpbmF0aW9uUm93Ij09PXkmJnYucmV2ZXJzZWRSb3dDb29yZHM/dGhpcy5ob3QuY291bnRSb3dzKCktaFt5XS0x''@;'; put 'put ''OmhbeV19ZWxzZSB2W3ldPUN9fSx7a2V5OiJyZXNldFNldHVwQmVmb3JlU3RydWN0dXJlQWx0ZXJhdGlvbiIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe2lmKCJmdW5jdGlvbiI9PT10aGlzLnNldHRpbmdzVHlwZSl7dmFyIEM9aC5pbmRleE9mKCJyb3ciKT4tMT8icm93IjoiY29sIixJPXRoaXMu''@;'; put 'put ''Z2V0QWxsRW5kcG9pbnRzKCk7VXIoSSxmdW5jdGlvbihaKXsicm93Ij09PUMmJlouZGVzdGluYXRpb25Sb3c+PXYmJigiaW5zZXJ0X3JvdyI9PT1oP1ouYWx0ZXJSb3dPZmZzZXQ9eToicmVtb3ZlX3JvdyI9PT1oJiYoWi5hbHRlclJvd09mZnNldD0tMSp5KSksImNvbCI9PT1DJiZaLmRlc3Rp''@;'; put 'put ''bmF0aW9uQ29sdW1uPj12JiYoImluc2VydF9jb2wiPT09aD9aLmFsdGVyQ29sdW1uT2Zmc2V0PXk6InJlbW92ZV9jb2wiPT09aCYmKFouYWx0ZXJDb2x1bW5PZmZzZXQ9LTEqeSkpfSksdGhpcy5yZXNldEFsbEVuZHBvaW50cyhJLCExKX19fSx7a2V5OiJyZXNldFNldHVwQWZ0ZXJTdHJ1Y3R1''@;'; put 'put ''cmVBbHRlcmF0aW9uIix2YWx1ZTpmdW5jdGlvbihoLHYseSxDLEkpe3ZhciBaPXRoaXMsdWU9IShhcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XSl8fGFyZ3VtZW50c1s1XTtpZigiZnVuY3Rpb24iIT09dGhpcy5zZXR0aW5nc1R5cGUpe3ZhciBCZT1oLmluZGV4T2Yo''@;'; put 'put ''InJvdyIpPi0xPyJyb3ciOiJjb2wiLE5lPWguaW5kZXhPZigicmVtb3ZlIik+LTE/LTE6MSxLZT10aGlzLmdldEFsbEVuZHBvaW50cygpLHB0PTA9PT1oLmluZGV4T2YoIm1vdmVfcm93IiksT3Q9djtVcihLZSxmdW5jdGlvbigkdCl7InJvdyI9PT1CZSYmJHQuZGVzdGluYXRpb25Sb3c+PU90''@;'; put 'put ''JiYoJHQuYWx0ZXJSb3dPZmZzZXQ9TmUqeSksImNvbCI9PT1CZSYmJHQuZGVzdGluYXRpb25Db2x1bW4+PU90JiYoJHQuYWx0ZXJDb2x1bW5PZmZzZXQ9TmUqeSl9KSx0aGlzLnJlc2V0QWxsRW5kcG9pbnRzKEtlLCFwdCksVXIoS2UscHQ/ZnVuY3Rpb24oJHQpe1ouZXh0ZW5kRW5kcG9pbnRS''@;'; put 'put ''YW5nZXMoJHQsT3QsQ1swXSxDLmxlbmd0aCksWi5yZWNyZWF0ZVBoeXNpY2FsUmFuZ2VzKCR0KSxaLmNsZWFyT2Zmc2V0SW5mb3JtYXRpb24oJHQpfTpmdW5jdGlvbigkdCl7Wi5zaGlmdEVuZHBvaW50Q29vcmRpbmF0ZXMoJHQsT3QpfSksdWUmJnRoaXMucmVmcmVzaEFsbEVuZHBvaW50cygp''@;'; put 'put ''fWVsc2V7dmFyIF9lPWZ1bmN0aW9uICR0KCl7cmV0dXJuIFouaG90LnJlbW92ZUhvb2soImJlZm9yZVZpZXdSZW5kZXIiLCR0KSxaLnJlZnJlc2hBbGxFbmRwb2ludHMoKX07dGhpcy5ob3QuYWRkSG9va09uY2UoImJlZm9yZVZpZXdSZW5kZXIiLF9lKX19fSx7a2V5OiJjbGVhck9mZnNldElu''@;'; put 'put ''Zm9ybWF0aW9uIix2YWx1ZTpmdW5jdGlvbihoKXtoLmFsdGVyUm93T2Zmc2V0PXZvaWQgMCxoLmFsdGVyQ29sdW1uT2Zmc2V0PXZvaWQgMH19LHtrZXk6ImV4dGVuZEVuZHBvaW50UmFuZ2VzIix2YWx1ZTpmdW5jdGlvbihoLHYseSxDKXtVcihoLnJhbmdlcyxmdW5jdGlvbihJKXtJWzFdJiYo''@;'; put 'put ''dj49SVswXSYmdjw9SVsxXT95PklbMV0/SVsxXSs9Qzp5PElbMF0mJihJWzBdLT1DKTp5Pj1JWzBdJiZ5PD1JWzFdJiYoSVsxXS09Qyx2PD1JWzBdJiYoSVswXSs9MSxJWzFdKz0xKSkpfSl9fSx7a2V5OiJyZWNyZWF0ZVBoeXNpY2FsUmFuZ2VzIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10''@;'; put 'put ''aGlzLEM9W10sST1bXTtVcihoLnJhbmdlcyxmdW5jdGlvbihaKXt2YXIgdWU9W107aWYoWlsxXSlmb3IodmFyIF9lPVpbMF07X2U8PVpbMV07X2UrKyl1ZS5wdXNoKHYuaG90LnRvUGh5c2ljYWxSb3coX2UpKTtlbHNlIHVlLnB1c2godi5ob3QudG9QaHlzaWNhbFJvdyhaWzBdKSk7SS5wdXNo''@;'; put 'put ''KHVlKX0pLFVyKEksZnVuY3Rpb24oWil7dmFyIHVlPVtdO1VyKFosZnVuY3Rpb24oX2UsQmUpezA9PT1CZT91ZS5wdXNoKF9lKTpaW0JlXSE9PVpbQmUtMV0rMSYmKHVlLnB1c2goWltCZS0xXSksQy5wdXNoKHVlKSwodWU9W10pLnB1c2goX2UpKSxCZT09PVoubGVuZ3RoLTEmJih1ZS5wdXNo''@;'; put 'put ''KF9lKSxDLnB1c2godWUpKX0pfSksaC5yYW5nZXM9Q319LHtrZXk6InNoaWZ0RW5kcG9pbnRDb29yZGluYXRlcyIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtoLmFsdGVyUm93T2Zmc2V0JiYwIT09aC5hbHRlclJvd09mZnNldD8oaC5kZXN0aW5hdGlvblJvdys9aC5hbHRlclJvd09mZnNldHx8MCxV''@;'; put 'put ''cihoLnJhbmdlcyxmdW5jdGlvbih5KXtVcih5LGZ1bmN0aW9uKEMsSSl7Qz49diYmKHlbSV0rPWguYWx0ZXJSb3dPZmZzZXR8fDApfSl9KSk6aC5hbHRlckNvbHVtbk9mZnNldCYmMCE9PWguYWx0ZXJDb2x1bW5PZmZzZXQmJihoLmRlc3RpbmF0aW9uQ29sdW1uKz1oLmFsdGVyQ29sdW1uT2Zm''@;'; put 'put ''c2V0fHwwLGguc291cmNlQ29sdW1uKz1oLmFsdGVyQ29sdW1uT2Zmc2V0fHwwKX19LHtrZXk6InJlc2V0QWxsRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMsdj1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5n''@;'; put 'put ''ZXRBbGxFbmRwb2ludHMoKSx5PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sQz12LnNvbWUoZnVuY3Rpb24oSSl7dmFyIHVlPUkuYWx0ZXJDb2x1bW5PZmZzZXR8fDA7cmV0dXJuIEkuZGVzdGluYXRpb25Sb3crKEkuYWx0ZXJSb3dP''@;'; put 'put ''ZmZzZXR8fDApPj1oLmhvdC5jb3VudFJvd3MoKXx8SS5kZXN0aW5hdGlvbkNvbHVtbit1ZT49aC5ob3QuY291bnRDb2xzKCl9KTtDfHwodGhpcy5jZWxsc1RvU2V0Q2FjaGU9W10sVXIodixmdW5jdGlvbihJKXtoLnJlc2V0RW5kcG9pbnRWYWx1ZShJLHkpfSksdGhpcy5ob3Quc2V0RGF0YUF0''@;'; put 'put ''Q2VsbCh0aGlzLmNlbGxzVG9TZXRDYWNoZSwiQ29sdW1uU3VtbWFyeS5yZXNldCIpLHRoaXMuY2VsbHNUb1NldENhY2hlPVtdKX19LHtrZXk6InJlZnJlc2hBbGxFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpczt0aGlzLmNlbGxzVG9TZXRDYWNoZT1bXSxVcih0aGlzLmdl''@;'; put 'put ''dEFsbEVuZHBvaW50cygpLGZ1bmN0aW9uKHYpe2guY3VycmVudEVuZHBvaW50PXYsaC5wbHVnaW4uY2FsY3VsYXRlKHYpLGguc2V0RW5kcG9pbnRWYWx1ZSh2LCJpbml0Iil9KSx0aGlzLmN1cnJlbnRFbmRwb2ludD1udWxsLHRoaXMuaG90LnNldERhdGFBdENlbGwodGhpcy5jZWxsc1RvU2V0''@;'; put 'put ''Q2FjaGUsIkNvbHVtblN1bW1hcnkucmVzZXQiKSx0aGlzLmNlbGxzVG9TZXRDYWNoZT1bXX19LHtrZXk6InJlZnJlc2hDaGFuZ2VkRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLHk9W107dGhpcy5jZWxsc1RvU2V0Q2FjaGU9W10sVXIoaCxmdW5jdGlvbihDLEksWil7''@;'; put 'put ''IiIuY29uY2F0KENbMl18fCIiKSE9PSIiLmNvbmNhdChDWzNdKSYmVXIodi5nZXRBbGxFbmRwb2ludHMoKSxmdW5jdGlvbih1ZSxfZSl7di5ob3QucHJvcFRvQ29sKFpbSV1bMV0pPT09dWUuc291cmNlQ29sdW1uJiYtMT09PXkuaW5kZXhPZihfZSkmJnkucHVzaChfZSl9KX0pLFVyKHksZnVu''@;'; put 'put ''Y3Rpb24oQyl7di5yZWZyZXNoRW5kcG9pbnQodi5nZXRFbmRwb2ludChDKSl9KSx0aGlzLmhvdC5zZXREYXRhQXRDZWxsKHRoaXMuY2VsbHNUb1NldENhY2hlLCJDb2x1bW5TdW1tYXJ5LnJlc2V0IiksdGhpcy5jZWxsc1RvU2V0Q2FjaGU9W119fSx7a2V5OiJyZWZyZXNoRW5kcG9pbnQiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGgpe3RoaXMuY3VycmVudEVuZHBvaW50PWgsdGhpcy5wbHVnaW4uY2FsY3VsYXRlKGgpLHRoaXMuc2V0RW5kcG9pbnRWYWx1ZShoKSx0aGlzLmN1cnJlbnRFbmRwb2ludD1udWxsfX0se2tleToicmVzZXRFbmRwb2ludFZhbHVlIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIg''@;'; put 'put ''dj0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLHk9aC5hbHRlclJvd09mZnNldHx8MCxDPWguYWx0ZXJDb2x1bW5PZmZzZXR8fDAsST1bdGhpcy5ob3QudG9WaXN1YWxSb3coaC5kZXN0aW5hdGlvblJvdyksdGhpcy5ob3QudG9WaXN1''@;'; put 'put ''YWxDb2x1bW4oaC5kZXN0aW5hdGlvbkNvbHVtbildLFo9SVswXSx1ZT1JWzFdO2lmKG51bGwhPT11ZSYmbnVsbCE9PVope3ZhciBfZT10aGlzLmhvdC5nZXRDZWxsTWV0YShaLHVlKTtfZS5yZWFkT25seT0hMSxfZS5jbGFzc05hbWU9IiJ9dGhpcy5jZWxsc1RvU2V0Q2FjaGUucHVzaChbdGhp''@;'; put 'put ''cy5ob3QudG9WaXN1YWxSb3coaC5kZXN0aW5hdGlvblJvdysodj95OjApKSx0aGlzLmhvdC50b1Zpc3VhbENvbHVtbihoLmRlc3RpbmF0aW9uQ29sdW1uKyh2P0M6MCkpLCIiXSl9fSx7a2V5OiJzZXRFbmRwb2ludFZhbHVlIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PWFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sQz0tMSpoLmFsdGVyUm93T2Zmc2V0fHwwLEk9LTEqaC5hbHRlckNvbHVtbk9mZnNldHx8MCxaPXRoaXMuaG90LnRvVmlzdWFsUm93KGguZGVzdGluYXRpb25Sb3cpO2lmKGguZGVzdGluYXRpb25Sb3c+PXRoaXMu''@;'; put 'put ''aG90LmNvdW50Um93cygpfHxoLmRlc3RpbmF0aW9uQ29sdW1uPj10aGlzLmhvdC5jb3VudENvbHMoKSl0aGlzLnRocm93T3V0T2ZCb3VuZHNXYXJuaW5nKCk7ZWxzZXt2YXIgdWU9dGhpcy5ob3QudG9WaXN1YWxSb3coaC5kZXN0aW5hdGlvblJvdytDKTtpZihudWxsIT09dWUpe3ZhciBfZT10''@;'; put 'put ''aGlzLmhvdC5nZXRDZWxsTWV0YSh1ZSxoLmRlc3RpbmF0aW9uQ29sdW1uK0kpOygiaW5pdCI9PT12fHxfZS5yZWFkT25seSE9PWgucmVhZE9ubHkpJiYoX2UucmVhZE9ubHk9aC5yZWFkT25seSxfZS5jbGFzc05hbWU9ImNvbHVtblN1bW1hcnlSZXN1bHQiKX1oLnJvdW5kRmxvYXQmJiFpc05h''@;'; put 'put ''TihoLnJlc3VsdCkmJihoLnJlc3VsdD1oLnJlc3VsdC50b0ZpeGVkKGgucm91bmRGbG9hdCkpLHk/dGhpcy5ob3Quc2V0RGF0YUF0Q2VsbChaLGguZGVzdGluYXRpb25Db2x1bW4saC5yZXN1bHQsIkNvbHVtblN1bW1hcnkuc2V0Iik6dGhpcy5jZWxsc1RvU2V0Q2FjaGUucHVzaChbWixoLmRl''@;'; put 'put ''c3RpbmF0aW9uQ29sdW1uLGgucmVzdWx0XSksaC5hbHRlclJvd09mZnNldD12b2lkIDAsaC5hbHRlckNvbHVtbk9mZnNldD12b2lkIDB9fX0se2tleToidGhyb3dPdXRPZkJvdW5kc1dhcm5pbmciLHZhbHVlOmZ1bmN0aW9uKCl7bDEoIk9uZSBvZiB0aGUgQ29sdW1uIFN1bW1hcnkgcGx1Z2lu''@;'; put 'put ''cycgZGVzdGluYXRpb24gcG9pbnRzIHlvdSBwcm92aWRlZCBpcyBiZXlvbmQgdGhlIHRhYmxlIGJvdW5kYXJpZXMhIil9fV0pLGR9KCk7Y29uc3Qgc290PWxvdDtmdW5jdGlvbiBiOGUoZCl7cmV0dXJuKGI4ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5''@;'; put 'put ''bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfXZhciBT''@;'; put 'put ''RWU7ZnVuY3Rpb24gTUVlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2Lmtl''@;'; put 'put ''eSx2KX19ZnVuY3Rpb24gTHRlKCl7cmV0dXJuIEx0ZT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9aG90KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv''@;'; put 'put ''cih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxMdGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGhvdChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09''@;'; put 'put ''KGQ9SE8oZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gXzhlKGQsZyl7cmV0dXJuKF84ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIGdvdChkLGcpe2lm''@;'; put 'put ''KGcmJigib2JqZWN0Ij09PWI4ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24g''@;'; put 'put ''bW90KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gSE8oZCl7cmV0dXJuKEhPPU9iamVjdC5zZXRQcm90b3R5cGVP''@;'; put 'put ''Zj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIEM4ZT0iY29sdW1uU3VtbWFyeSIseW90PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBkb3QoZCxnKXtpZigiZnVuY3Rpb24i''@;'; put 'put ''IT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJs''@;'; put 'put ''ZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmXzhlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gcG90KGQpe3ZhciBnPWZ1bmN0aW9uIHZvdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVj''@;'; put 'put ''dHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1''@;'; put 'put ''bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PUhPKGQpO2lmKGcpe3ZhciBDPUhPKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVu''@;'; put 'put ''dHMpO3JldHVybiBnb3QodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7cmV0dXJuIGZ1bmN0aW9uIGNvdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLCh5PWcu''@;'; put 'put ''Y2FsbCh0aGlzLHYpKS5lbmRwb2ludHM9bnVsbCx5fXJldHVybiBmdW5jdGlvbiBmb3QoZCxnLGgpe2cmJk1FZShkLnByb3RvdHlwZSxnKSxoJiZNRWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtDOGVdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5lbmFibGVkfHwodGhpcy5zZXR0aW5ncz10aGlzLmhvdC5nZXRTZXR0aW5ncygpW0M4ZV0sdGhpcy5l''@;'; put 'put ''bmRwb2ludHM9bmV3IHNvdCh0aGlzLHRoaXMuc2V0dGluZ3MpLHRoaXMuYWRkSG9vaygiYWZ0ZXJJbml0IixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJJbml0LmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJDaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25B''@;'; put 'put ''ZnRlckNoYW5nZS5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZUNyZWF0ZVJvdyIsZnVuY3Rpb24oQyxJLFope3JldHVybiB5LmVuZHBvaW50cy5yZXNldFNldHVwQmVmb3JlU3RydWN0dXJlQWx0ZXJhdGlvbigiaW5zZXJ0X3JvdyIsQyxJLG51bGwsWil9KSx0aGlz''@;'; put 'put ''LmFkZEhvb2soImJlZm9yZUNyZWF0ZUNvbCIsZnVuY3Rpb24oQyxJLFope3JldHVybiB5LmVuZHBvaW50cy5yZXNldFNldHVwQmVmb3JlU3RydWN0dXJlQWx0ZXJhdGlvbigiaW5zZXJ0X2NvbCIsQyxJLG51bGwsWil9KSx0aGlzLmFkZEhvb2soImJlZm9yZVJlbW92ZVJvdyIsZnVuY3Rpb24o''@;'; put 'put ''KXtmb3IodmFyIEMsST1hcmd1bWVudHMubGVuZ3RoLFo9bmV3IEFycmF5KEkpLHVlPTA7dWU8STt1ZSsrKVpbdWVdPWFyZ3VtZW50c1t1ZV07cmV0dXJuKEM9eS5lbmRwb2ludHMpLnJlc2V0U2V0dXBCZWZvcmVTdHJ1Y3R1cmVBbHRlcmF0aW9uLmFwcGx5KEMsWyJyZW1vdmVfcm93Il0uY29u''@;'; put 'put ''Y2F0KFopKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUmVtb3ZlQ29sIixmdW5jdGlvbigpe2Zvcih2YXIgQyxJPWFyZ3VtZW50cy5sZW5ndGgsWj1uZXcgQXJyYXkoSSksdWU9MDt1ZTxJO3VlKyspWlt1ZV09YXJndW1lbnRzW3VlXTtyZXR1cm4oQz15LmVuZHBvaW50cykucmVzZXRTZXR1cEJl''@;'; put 'put ''Zm9yZVN0cnVjdHVyZUFsdGVyYXRpb24uYXBwbHkoQyxbInJlbW92ZV9jb2wiXS5jb25jYXQoWikpfSksdGhpcy5hZGRIb29rKCJhZnRlckNyZWF0ZVJvdyIsZnVuY3Rpb24oQyxJLFope3JldHVybiB5LmVuZHBvaW50cy5yZXNldFNldHVwQWZ0ZXJTdHJ1Y3R1cmVBbHRlcmF0aW9uKCJpbnNl''@;'; put 'put ''cnRfcm93IixDLEksbnVsbCxaKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJDcmVhdGVDb2wiLGZ1bmN0aW9uKEMsSSxaKXtyZXR1cm4geS5lbmRwb2ludHMucmVzZXRTZXR1cEFmdGVyU3RydWN0dXJlQWx0ZXJhdGlvbigiaW5zZXJ0X2NvbCIsQyxJLG51bGwsWil9KSx0aGlzLmFkZEhvb2soImFm''@;'; put 'put ''dGVyUmVtb3ZlUm93IixmdW5jdGlvbigpe2Zvcih2YXIgQyxJPWFyZ3VtZW50cy5sZW5ndGgsWj1uZXcgQXJyYXkoSSksdWU9MDt1ZTxJO3VlKyspWlt1ZV09YXJndW1lbnRzW3VlXTtyZXR1cm4oQz15LmVuZHBvaW50cykucmVzZXRTZXR1cEFmdGVyU3RydWN0dXJlQWx0ZXJhdGlvbi5hcHBs''@;'; put 'put ''eShDLFsicmVtb3ZlX3JvdyJdLmNvbmNhdChaKSl9KSx0aGlzLmFkZEhvb2soImFmdGVyUmVtb3ZlQ29sIixmdW5jdGlvbigpe2Zvcih2YXIgQyxJPWFyZ3VtZW50cy5sZW5ndGgsWj1uZXcgQXJyYXkoSSksdWU9MDt1ZTxJO3VlKyspWlt1ZV09YXJndW1lbnRzW3VlXTtyZXR1cm4oQz15LmVu''@;'; put 'put ''ZHBvaW50cykucmVzZXRTZXR1cEFmdGVyU3RydWN0dXJlQWx0ZXJhdGlvbi5hcHBseShDLFsicmVtb3ZlX2NvbCJdLmNvbmNhdChaKSl9KSx0aGlzLmFkZEhvb2soImFmdGVyUm93TW92ZSIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyUm93TW92ZS5hcHBseSh5LGFyZ3VtZW50cyl9KSxM''@;'; put 'put ''dGUoSE8oaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVuZHBvaW50cz1udWxsLHRoaXMuc2V0dGluZ3M9bnVsbCx0aGlzLmN1cnJlbnRFbmRwb2ludD1udWxsfX0se2tleToi''@;'; put 'put ''Y2FsY3VsYXRlIix2YWx1ZTpmdW5jdGlvbih5KXtzd2l0Y2goeS50eXBlLnRvTG93ZXJDYXNlKCkpe2Nhc2Uic3VtIjp5LnJlc3VsdD10aGlzLmNhbGN1bGF0ZVN1bSh5KTticmVhaztjYXNlIm1pbiI6Y2FzZSJtYXgiOnkucmVzdWx0PXRoaXMuY2FsY3VsYXRlTWluTWF4KHkseS50eXBlKTti''@;'; put 'put ''cmVhaztjYXNlImNvdW50Ijp5LnJlc3VsdD10aGlzLmNvdW50RW50cmllcyh5KTticmVhaztjYXNlImF2ZXJhZ2UiOnkucmVzdWx0PXRoaXMuY2FsY3VsYXRlQXZlcmFnZSh5KTticmVhaztjYXNlImN1c3RvbSI6eS5yZXN1bHQ9eS5jdXN0b21GdW5jdGlvbi5jYWxsKHRoaXMseSl9fX0se2tl''@;'; put 'put ''eToiY2FsY3VsYXRlU3VtIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9MDtyZXR1cm4gR2woeS5yYW5nZXMsZnVuY3Rpb24oWil7SSs9Qy5nZXRQYXJ0aWFsU3VtKFoseS5zb3VyY2VDb2x1bW4pfSksSX19LHtrZXk6ImdldFBhcnRpYWxTdW0iLHZhbHVlOmZ1bmN0aW9uKHksQyl7''@;'; put 'put ''dmFyIEk9MCxaPXlbMV18fHlbMF0sdWU9bnVsbCxfZT0wO2Rve3VlPXRoaXMuZ2V0Q2VsbFZhbHVlKFosQyl8fDA7dmFyIEJlPSgiIi5jb25jYXQodWUpLnNwbGl0KCIuIilbMV18fFtdKS5sZW5ndGh8fDE7QmU+X2UmJihfZT1CZSksSSs9dWV8fDAsWi09MX13aGlsZShaPj15WzBdKTtyZXR1''@;'; put 'put ''cm4gTWF0aC5yb3VuZChJKk1hdGgucG93KDEwLF9lKSkvTWF0aC5wb3coMTAsX2UpfX0se2tleToiY2FsY3VsYXRlTWluTWF4Iix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXRoaXMsWj1udWxsO3JldHVybiBHbCh5LnJhbmdlcyxmdW5jdGlvbih1ZSl7dmFyIF9lPUkuZ2V0UGFydGlhbE1p''@;'; put 'put ''bk1heCh1ZSx5LnNvdXJjZUNvbHVtbixDKTtpZihudWxsPT09WiYmbnVsbCE9PV9lJiYoWj1fZSksbnVsbCE9PV9lKXN3aXRjaChDKXtjYXNlIm1pbiI6Wj1NYXRoLm1pbihaLF9lKTticmVhaztjYXNlIm1heCI6Wj1NYXRoLm1heChaLF9lKX19KSxudWxsPT09Wj8iTm90IGVub3VnaCBkYXRh''@;'; put 'put ''IjpafX0se2tleToiZ2V0UGFydGlhbE1pbk1heCIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe3ZhciBfZSxaPW51bGwsdWU9eVsxXXx8eVswXTtkb3tpZihfZT10aGlzLmdldENlbGxWYWx1ZSh1ZSxDKXx8bnVsbCxudWxsPT09WilaPV9lO2Vsc2UgaWYobnVsbCE9PV9lKXN3aXRjaChJKXtjYXNl''@;'; put 'put ''Im1pbiI6Wj1NYXRoLm1pbihaLF9lKTticmVhaztjYXNlIm1heCI6Wj1NYXRoLm1heChaLF9lKX11ZS09MX13aGlsZSh1ZT49eVswXSk7cmV0dXJuIFp9fSx7a2V5OiJjb3VudEVtcHR5Iix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBaPTAsdWU9eVsxXXx8eVswXTtkb3t0aGlzLmdldENlbGxW''@;'; put 'put ''YWx1ZSh1ZSxDKXx8KForPTEpLHVlLT0xfXdoaWxlKHVlPj15WzBdKTtyZXR1cm4gWn19LHtrZXk6ImNvdW50RW50cmllcyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPTA7cmV0dXJuIEdsKHkucmFuZ2VzLGZ1bmN0aW9uKHVlKXt2YXIgX2U9dm9pZCAwPT09dWVbMV0/MTp1ZVsx''@;'; put 'put ''XS11ZVswXSsxLEJlPUMuY291bnRFbXB0eSh1ZSx5LnNvdXJjZUNvbHVtbik7SSs9X2UsSS09QmV9KSxJfX0se2tleToiY2FsY3VsYXRlQXZlcmFnZSIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIHRoaXMuY2FsY3VsYXRlU3VtKHkpL3RoaXMuY291bnRFbnRyaWVzKHkpfX0se2tleToiZ2V0''@;'; put 'put ''Q2VsbFZhbHVlIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXRoaXMuaG90LnRvVmlzdWFsUm93KHkpLFo9dGhpcy5ob3QudG9WaXN1YWxDb2x1bW4oQyksdWU9dGhpcy5ob3QuZ2V0U291cmNlRGF0YUF0Q2VsbCh5LEMpLF9lPSIiO2lmKG51bGwhPT1JJiZudWxsIT09WiYmKF9lPXRoaXMu''@;'; put 'put ''aG90LmdldENlbGxNZXRhKEksWikuY2xhc3NOYW1lfHwiIiksX2UuaW5kZXhPZigiY29sdW1uU3VtbWFyeVJlc3VsdCIpPi0xKXJldHVybiBudWxsO2lmKHRoaXMuZW5kcG9pbnRzLmN1cnJlbnRFbmRwb2ludC5mb3JjZU51bWVyaWMmJigic3RyaW5nIj09dHlwZW9mIHVlJiYodWU9dWUucmVw''@;'; put 'put ''bGFjZSgvLC8sIi4iKSksdWU9cGFyc2VGbG9hdCh1ZSkpLGlzTmFOKHVlKSYmIXRoaXMuZW5kcG9pbnRzLmN1cnJlbnRFbmRwb2ludC5zdXBwcmVzc0RhdGFUeXBlRXJyb3JzKXRocm93IG5ldyBFcnJvcihQMihTRWV8fChTRWU9ZnVuY3Rpb24gdW90KGQsZyl7cmV0dXJuIGd8fChnPWQuc2xp''@;'; put 'put ''Y2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGcpfX0pKX0oWyJDb2x1bW5TdW1tYXJ5IHBsdWdpbjogY2VsbCBhdCAoIiwiLCAiLCIpIGlzIG5vdCBpbiBhIFxuICAgICAgICAgIG51bWVyaWMgZm9ybWF0LiBD''@;'; put 'put ''YW5ub3QgZG8gdGhlIGNhbGN1bGF0aW9uLiJdLFsiQ29sdW1uU3VtbWFyeSBwbHVnaW46IGNlbGwgYXQgKCIsIiwgIiwiKSBpcyBub3QgaW4gYVxceDIwXG4gICAgICAgICAgbnVtZXJpYyBmb3JtYXQuIENhbm5vdCBkbyB0aGUgY2FsY3VsYXRpb24uIl0pKSx5LEMpKTtyZXR1cm4gdWV9fSx7''@;'; put 'put ''a2V5OiJvbkFmdGVySW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVuZHBvaW50cy5lbmRwb2ludHM9dGhpcy5lbmRwb2ludHMucGFyc2VTZXR0aW5ncygpLHRoaXMuZW5kcG9pbnRzLnJlZnJlc2hBbGxFbmRwb2ludHMoITApfX0se2tleToib25BZnRlckNoYW5nZSIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oeSxDKXt5JiYiQ29sdW1uU3VtbWFyeS5yZXNldCIhPT1DJiYiQ29sdW1uU3VtbWFyeS5zZXQiIT09QyYmImxvYWREYXRhIiE9PUMmJnRoaXMuZW5kcG9pbnRzLnJlZnJlc2hDaGFuZ2VkRW5kcG9pbnRzKHkpfX0se2tleToib25BZnRlclJvd01vdmUiLHZhbHVlOmZ1bmN0aW9uKHksQyl7''@;'; put 'put ''dGhpcy5lbmRwb2ludHMucmVzZXRTZXR1cEJlZm9yZVN0cnVjdHVyZUFsdGVyYXRpb24oIm1vdmVfcm93Iix5WzBdLHkubGVuZ3RoLHksdGhpcy5wbHVnaW5OYW1lKSx0aGlzLmVuZHBvaW50cy5yZXNldFNldHVwQWZ0ZXJTdHJ1Y3R1cmVBbHRlcmF0aW9uKCJtb3ZlX3JvdyIsQyx5Lmxlbmd0''@;'; put 'put ''aCx5LHRoaXMucGx1Z2luTmFtZSl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBDOGV9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAyMjB9fV0pLGh9KFlzKTtmdW5jdGlvbiBFRWUoZCxnKXtmb3IodmFyIGg9MDtoPGcu''@;'; put 'put ''bGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgX290PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChn''@;'; put 'put ''LGgpeyhmdW5jdGlvbiB3b3QoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5yb290RG9jdW1lbnQ9Zyx0aGlzLmlzUnRsPWgsdGhpcy5jb250YWluZXI9bnVsbCx0''@;'; put 'put ''aGlzLmVkaXRvcj10aGlzLmNyZWF0ZUVkaXRvcigpLHRoaXMuZWRpdG9yU3R5bGU9dGhpcy5lZGl0b3Iuc3R5bGUsdGhpcy5oaWRkZW49ITAsdGhpcy5oaWRlKCl9cmV0dXJuIGZ1bmN0aW9uIGJvdChkLGcsaCl7ZyYmRUVlKGQucHJvdG90eXBlLGcpLGgmJkVFZShkLGgpLE9iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJzZXRQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt0aGlzLmVkaXRvclN0eWxlLmxlZnQ9IiIuY29uY2F0KGgsInB4IiksdGhpcy5lZGl0b3JTdHlsZS50b3A9IiIuY29uY2F0KHYsInB4Iil9fSx7''@;'; put 'put ''a2V5OiJzZXRTaXplIix2YWx1ZTpmdW5jdGlvbihoLHYpe2lmKGgmJnYpe3ZhciB5PXRoaXMuZ2V0SW5wdXRFbGVtZW50KCk7eS5zdHlsZS53aWR0aD0iIi5jb25jYXQoaCwicHgiKSx5LnN0eWxlLmhlaWdodD0iIi5jb25jYXQodiwicHgiKX19fSx7a2V5OiJnZXRTaXplIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybnt3aWR0aDpFMih0aGlzLmdldElucHV0RWxlbWVudCgpKSxoZWlnaHQ6RDEodGhpcy5nZXRJbnB1dEVsZW1lbnQoKSl9fX0se2tleToicmVzZXRTaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuZ2V0SW5wdXRFbGVtZW50KCk7aC5zdHlsZS53aWR0aD0iIixo''@;'; put 'put ''LnN0eWxlLmhlaWdodD0iIn19LHtrZXk6InNldFJlYWRPbmx5U3RhdGUiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMuZ2V0SW5wdXRFbGVtZW50KCkucmVhZE9ubHk9aH19LHtrZXk6InNob3ciLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lZGl0b3JTdHlsZS5kaXNwbGF5PSJibG9jayIsdGhpcy5o''@;'; put 'put ''aWRkZW49ITF9fSx7a2V5OiJoaWRlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaGlkZGVufHwodGhpcy5lZGl0b3JTdHlsZS5kaXNwbGF5PSJub25lIiksdGhpcy5oaWRkZW49ITB9fSx7a2V5OiJpc1Zpc2libGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuImJsb2NrIj09PXRoaXMuZWRpdG9y''@;'; put 'put ''U3R5bGUuZGlzcGxheX19LHtrZXk6InNldFZhbHVlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToiIix2PWh8fCIiO3RoaXMuZ2V0SW5wdXRFbGVtZW50KCkudmFsdWU9dn19LHtrZXk6ImdldFZh''@;'; put 'put ''bHVlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldElucHV0RWxlbWVudCgpLnZhbHVlfX0se2tleToiaXNGb2N1c2VkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJvb3REb2N1bWVudC5hY3RpdmVFbGVtZW50PT09dGhpcy5nZXRJbnB1dEVsZW1lbnQoKX19LHtrZXk6''@;'; put 'put ''ImZvY3VzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZ2V0SW5wdXRFbGVtZW50KCkuZm9jdXMoKX19LHtrZXk6ImNyZWF0ZUVkaXRvciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx2PXRoaXMucm9vdERvY3VtZW50LmNyZWF0''@;'; put 'put ''ZUVsZW1lbnQoInRleHRhcmVhIik7cmV0dXJuIGguc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5jb250YWluZXI9dGhpcy5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5jb250YWluZXIuc2V0QXR0cmlidXRlKCJkaXIiLHRoaXMuaXNSdGw/InJ0bCI6Imx0ciIpLE8w''@;'; put 'put ''KHRoaXMuY29udGFpbmVyLGQuQ0xBU1NfRURJVE9SX0NPTlRBSU5FUiksdGhpcy5yb290RG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmNvbnRhaW5lciksTzAoaCxkLkNMQVNTX0VESVRPUiksTzAodixkLkNMQVNTX0lOUFVUKSxoLmFwcGVuZENoaWxkKHYpLHRoaXMuY29udGFpbmVy''@;'; put 'put ''LmFwcGVuZENoaWxkKGgpLGh9fSx7a2V5OiJnZXRJbnB1dEVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRpdG9yLnF1ZXJ5U2VsZWN0b3IoIi4iLmNvbmNhdChkLkNMQVNTX0lOUFVUKSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMu''@;'; put 'put ''Y29udGFpbmVyP3RoaXMuY29udGFpbmVyLnBhcmVudE5vZGU6bnVsbDt0aGlzLmVkaXRvci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZWRpdG9yKSx0aGlzLmVkaXRvcj1udWxsLHRoaXMuZWRpdG9yU3R5bGU9bnVsbCxoJiZoLnJlbW92ZUNoaWxkKHRoaXMuY29udGFpbmVyKX19XSxb''@;'; put 'put ''e2tleToiQ0xBU1NfRURJVE9SX0NPTlRBSU5FUiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuImh0Q29tbWVudHNDb250YWluZXIifX0se2tleToiQ0xBU1NfRURJVE9SIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iaHRDb21tZW50cyJ9fSx7a2V5OiJDTEFTU19JTlBVVCIsZ2V0OmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuImh0Q29tbWVudFRleHRBcmVhIn19LHtrZXk6IkNMQVNTX0NFTEwiLGdldDpmdW5jdGlvbigpe3JldHVybiJodENvbW1lbnRDZWxsIn19XSksZH0oKTtjb25zdCBDb3Q9X290O3ZhciBXbD0iLS0tLS0tLS0tIjtmdW5jdGlvbiBPdGUoZCl7cmV0dXJuIHRsKGQsImh0U2VwYXJhdG9y''@;'; put 'put ''Iil9ZnVuY3Rpb24gUnRlKGQpe3JldHVybiB0bChkLCJodERpc2FibGVkIil9ZnVuY3Rpb24gQnRlKGQpe3JldHVybiB0bChkLCJodFNlbGVjdGlvbkRpc2FibGVkIil9ZnVuY3Rpb24gS1MoZCl7dmFyIGc9ZC5nZXRTZWxlY3RlZCgpO3JldHVybiFnfHxnWzBdPDA/bnVsbDpnfWZ1bmN0aW9u''@;'; put 'put ''ICRTKGQsZyl7dmFyIGg9e307cmV0dXJuIFVyKGQsZnVuY3Rpb24odil7di5mb3JBbGwoZnVuY3Rpb24oeSxDKXt5Pj0wJiZDPj0wJiYoaFt5XXx8KGhbeV09W10pLGhbeV1bQ109Zyh5LEMpKX0pfSksaH1mdW5jdGlvbiBIdyhkLGcsaCx2LHkpe1VyKGQsZnVuY3Rpb24oQyl7Qy5mb3JBbGwo''@;'; put 'put ''ZnVuY3Rpb24oSSxaKXtJPj0wJiZaPj0wJiZmdW5jdGlvbiBUb3QoZCxnLGgsdix5LEMpe3ZhciBJPXkoZCxnKSxaPXY7SS5jbGFzc05hbWUmJihaPSJ2ZXJ0aWNhbCI9PT1oP2Z1bmN0aW9uIEVvdChkLGcpe2lmKC0xIT09ZC5pbmRleE9mKGcpKXJldHVybiBkO3ZhciBoPWQucmVwbGFjZSgi''@;'; put 'put ''aHRUb3AiLCIiKS5yZXBsYWNlKCJodE1pZGRsZSIsIiIpLnJlcGxhY2UoImh0Qm90dG9tIiwiIikucmVwbGFjZSgiICAiLCIiKTtyZXR1cm4iIi5jb25jYXQoaCwiICIpLmNvbmNhdChnKX0oSS5jbGFzc05hbWUsdik6ZnVuY3Rpb24geG90KGQsZyl7aWYoLTEhPT1kLmluZGV4T2YoZykpcmV0''@;'; put 'put ''dXJuIGQ7dmFyIGg9ZC5yZXBsYWNlKCJodExlZnQiLCIiKS5yZXBsYWNlKCJodENlbnRlciIsIiIpLnJlcGxhY2UoImh0UmlnaHQiLCIiKS5yZXBsYWNlKCJodEp1c3RpZnkiLCIiKS5yZXBsYWNlKCIgICIsIiIpO3JldHVybiIiLmNvbmNhdChoLCIgIikuY29uY2F0KGcpfShJLmNsYXNzTmFt''@;'; put 'put ''ZSx2KSksQyhkLGcsImNsYXNzTmFtZSIsWil9KEksWixnLGgsdix5KX0pfSl9ZnVuY3Rpb24gT2coZCxnKXt2YXIgaD0hMTtyZXR1cm4gQXJyYXkuaXNBcnJheShkKSYmVXIoZCxmdW5jdGlvbih2KXtyZXR1cm4gdi5mb3JBbGwoZnVuY3Rpb24oeSxDKXtpZih5Pj0wJiZDPj0wJiZnKHksQykp''@;'; put 'put ''cmV0dXJuIGg9ITAsITF9KSxofSksaH1mdW5jdGlvbiBQdihkKXtyZXR1cm4nPHNwYW4gY2xhc3M9InNlbGVjdGVkIj4nLmNvbmNhdChTdHJpbmcuZnJvbUNoYXJDb2RlKDEwMDAzKSwiPC9zcGFuPiIpLmNvbmNhdChkKX1mdW5jdGlvbiB4RWUoZCxnKXtmb3IodmFyIGg9ZC5zbGljZSgwKTsw''@;'; put 'put ''PGgubGVuZ3RoJiZoWzBdLm5hbWU9PT1nOyloLnNoaWZ0KCk7cmV0dXJuIGh9ZnVuY3Rpb24gRG90KGQsZyl7dmFyIGg9ZC5zbGljZSgwKTtyZXR1cm4gaC5yZXZlcnNlKCksKGg9eEVlKGgsZykpLnJldmVyc2UoKSxofWZ1bmN0aW9uIExvdChkKXt2YXIgZz1bXTtyZXR1cm4gVXIoZCxmdW5j''@;'; put 'put ''dGlvbihoLHYpe3Y+MD9nW2cubGVuZ3RoLTFdLm5hbWUhPT1oLm5hbWUmJmcucHVzaChoKTpnLnB1c2goaCl9KSxnfWZ1bmN0aW9uIFRFZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJh''@;'; put 'put ''YmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBJRWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpeyhmdW5jdGlvbiBSb3QoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJD''@;'; put 'put ''YW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy53YXNMYXN0QWN0aW9uU2hvdz0hMCx0aGlzLnNob3dEZWJvdW5jZWQ9bnVsbCx0aGlzLmhpZGluZ1RpbWVyPW51bGwsdGhpcy51cGRhdGVEZWxheShnKX1yZXR1cm4gZnVuY3Rpb24gQm90KGQsZyxoKXtn''@;'; put 'put ''JiZURWUoZC5wcm90b3R5cGUsZyksaCYmVEVlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImhpZGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpczt0aGlzLndhc0xhc3RBY3Rpb25TaG93PSExLHRoaXMuaGlkaW5n''@;'; put 'put ''VGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpeyExPT09aC53YXNMYXN0QWN0aW9uU2hvdyYmaC5ydW5Mb2NhbEhvb2tzKCJoaWRlIil9LDI1MCl9fSx7a2V5OiJzaG93Iix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLndhc0xhc3RBY3Rpb25TaG93PSEwLHRoaXMuc2hvd0RlYm91bmNlZChoKX19''@;'; put 'put ''LHtrZXk6ImNhbmNlbEhpZGluZyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLndhc0xhc3RBY3Rpb25TaG93PSEwLGNsZWFyVGltZW91dCh0aGlzLmhpZGluZ1RpbWVyKSx0aGlzLmhpZGluZ1RpbWVyPW51bGx9fSx7a2V5OiJ1cGRhdGVEZWxheSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlz''@;'; put 'put ''LHY9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjI1MDt0aGlzLnNob3dEZWJvdW5jZWQ9dzNlKGZ1bmN0aW9uKHkpe2gud2FzTGFzdEFjdGlvblNob3cmJmgucnVuTG9jYWxIb29rcygic2hvdyIseS5mcm9tLnJvdyx5LmZyb20uY29sKX0s''@;'; put 'put ''dil9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2xlYXJMb2NhbEhvb2tzKCl9fV0pLGR9KCk7QjIoSUVlLHVkKTtjb25zdCBIb3Q9SUVlO2Z1bmN0aW9uIGs4ZShkKXtyZXR1cm4oazhlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2Yg''@;'; put 'put ''U3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVu''@;'; put 'put ''Y3Rpb24gUzhlKGQsZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgsZH1mdW5jdGlvbiBERWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7''@;'; put 'put ''dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBxUygpe3JldHVybiBxUz0idW5kZWZpbmVkIiE9dHlwZW9m''@;'; put 'put ''IFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9am90KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9n''@;'; put 'put ''OnYpOkMudmFsdWV9fSxxUy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gam90KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1GdihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBNOGUoZCxnKXtyZXR1cm4oTThlPU9i''@;'; put 'put ''amVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gR290KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09azhlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJu''@;'; put 'put ''IGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBMRWUoZCl9ZnVuY3Rpb24gTEVlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9y''@;'; put 'put ''KCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiBGdihkKXtyZXR1cm4oRnY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJu''@;'; put 'put ''IGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgRThlPSJjb21tZW50cyIsUHRlPW5ldyBXZWFrTWFwLFJnPSJjb21tZW50IixOTz0idmFsdWUiLEZ0ZT0icmVhZE9ubHkiLFVvdD1mdW5jdGlvbihkKXshZnVuY3Rpb24gWm90KGQsZyl7aWYoImZ1bmN0aW9u''@;'; put 'put ''IiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFi''@;'; put 'put ''bGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJk04ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIHpvdChkKXt2YXIgZz1mdW5jdGlvbiBXb3QoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxl''@;'; put 'put ''Y3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxm''@;'; put 'put ''dW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1GdihkKTtpZihnKXt2YXIgQz1Gdih0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1l''@;'; put 'put ''bnRzKTtyZXR1cm4gR290KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYpe3ZhciB5O3JldHVybiBmdW5jdGlvbiBOb3QoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoeT1n''@;'; put 'put ''LmNhbGwodGhpcyx2KSkuZWRpdG9yPW51bGwseS5kaXNwbGF5U3dpdGNoPW51bGwseS5ldmVudE1hbmFnZXI9bnVsbCx5LnJhbmdlPXt9LHkucHJldmVudEVkaXRvckF1dG9Td2l0Y2g9ITEsUHRlLnNldChMRWUoeSkse3RlbXBFZGl0b3JEaW1lbnNpb25zOnt9LGNlbGxCZWxvd0N1cnNvcjpu''@;'; put 'put ''dWxsfSkseX1yZXR1cm4gZnVuY3Rpb24gVm90KGQsZyxoKXtnJiZERWUoZC5wcm90b3R5cGUsZyksaCYmREVlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4h''@;'; put 'put ''IXRoaXMuaG90LmdldFNldHRpbmdzKClbRThlXX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuZW5hYmxlZHx8KHRoaXMuZWRpdG9yfHwodGhpcy5lZGl0b3I9bmV3IENvdCh0aGlzLmhvdC5yb290RG9jdW1lbnQsdGhpcy5ob3QuaXNSdGwo''@;'; put 'put ''KSkpLHRoaXMuZXZlbnRNYW5hZ2VyfHwodGhpcy5ldmVudE1hbmFnZXI9bmV3IEwxKHRoaXMpKSx0aGlzLmRpc3BsYXlTd2l0Y2h8fCh0aGlzLmRpc3BsYXlTd2l0Y2g9bmV3IEhvdCh0aGlzLmdldERpc3BsYXlEZWxheVNldHRpbmcoKSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJDb250ZXh0TWVu''@;'; put 'put ''dURlZmF1bHRPcHRpb25zIixmdW5jdGlvbihDKXtyZXR1cm4geS5hZGRUb0NvbnRleHRNZW51KEMpfSksdGhpcy5hZGRIb29rKCJhZnRlclJlbmRlcmVyIixmdW5jdGlvbihDLEksWix1ZSxfZSxCZSl7cmV0dXJuIHkub25BZnRlclJlbmRlcmVyKEMsQmUpfSksdGhpcy5hZGRIb29rKCJhZnRl''@;'; put 'put ''clNjcm9sbEhvcml6b250YWxseSIsZnVuY3Rpb24oKXtyZXR1cm4geS5oaWRlKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsVmVydGljYWxseSIsZnVuY3Rpb24oKXtyZXR1cm4geS5oaWRlKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyQmVnaW5FZGl0aW5nIixmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB5LmhpZGUoKX0pLHRoaXMuZGlzcGxheVN3aXRjaC5hZGRMb2NhbEhvb2soImhpZGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHkuaGlkZSgpfSksdGhpcy5kaXNwbGF5U3dpdGNoLmFkZExvY2FsSG9vaygic2hvdyIsZnVuY3Rpb24oQyxJKXtyZXR1cm4geS5zaG93QXRDZWxsKEMsSSl9KSx0aGlz''@;'; put 'put ''LnJlZ2lzdGVyTGlzdGVuZXJzKCkscVMoRnYoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCkscVMoRnYoaC5wcm90''@;'; put 'put ''b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyksdGhpcy5kaXNwbGF5U3dpdGNoLnVwZGF0ZURlbGF5KHRoaXMuZ2V0RGlzcGxheURlbGF5U2V0dGluZygpKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7cVMoRnYoaC5wcm90b3R5cGUpLCJkaXNh''@;'; put 'put ''YmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToicmVnaXN0ZXJMaXN0ZW5lcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPXRoaXMuaG90LnJvb3REb2N1bWVudDt0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKEMsIm1vdXNlb3ZlciIsZnVuY3Rpb24o''@;'; put 'put ''SSl7cmV0dXJuIHkub25Nb3VzZU92ZXIoSSl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKEMsIm1vdXNlZG93biIsZnVuY3Rpb24oSSl7cmV0dXJuIHkub25Nb3VzZURvd24oSSl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKEMsIm1vdXNldXAiLGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIHkub25Nb3VzZVVwKCl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHRoaXMuZWRpdG9yLmdldElucHV0RWxlbWVudCgpLCJibHVyIixmdW5jdGlvbigpe3JldHVybiB5Lm9uRWRpdG9yQmx1cigpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZl''@;'; put 'put ''bnRMaXN0ZW5lcih0aGlzLmVkaXRvci5nZXRJbnB1dEVsZW1lbnQoKSwibW91c2Vkb3duIixmdW5jdGlvbihJKXtyZXR1cm4geS5vbkVkaXRvck1vdXNlRG93bihJKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5lZGl0b3IuZ2V0SW5wdXRFbGVtZW50KCksIm1v''@;'; put 'put ''dXNldXAiLGZ1bmN0aW9uKEkpe3JldHVybiB5Lm9uRWRpdG9yTW91c2VVcChJKX0pfX0se2tleToic2V0UmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMucmFuZ2U9eX19LHtrZXk6ImNsZWFyUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5yYW5nZT17fX19LHtrZXk6InRhcmdldElz''@;'; put 'put ''Q2VsbFdpdGhDb21tZW50Iix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1Ndih5LnRhcmdldCwiVEQiLCJUQk9EWSIpO3JldHVybiEhKEMmJnRsKEMsImh0Q29tbWVudENlbGwiKSYmTXYoQyxbdGhpcy5ob3Qucm9vdEVsZW1lbnRdKSl9fSx7a2V5OiJ0YXJnZXRJc0NvbW1lbnRUZXh0QXJlYSIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIHRoaXMuZWRpdG9yLmdldElucHV0RWxlbWVudCgpPT09eS50YXJnZXR9fSx7a2V5OiJzZXRDb21tZW50Iix2YWx1ZTpmdW5jdGlvbih5KXtpZighdGhpcy5yYW5nZS5mcm9tKXRocm93IG5ldyBFcnJvcignQmVmb3JlIHVzaW5nIHRoaXMgbWV0aG9k''@;'; put 'put ''LCBmaXJzdCBzZXQgY2VsbCByYW5nZSAoaG90LmdldFBsdWdpbigiY29tbWVudCIpLnNldFJhbmdlKCkpJyk7dmFyIEM9dGhpcy5lZGl0b3IuZ2V0VmFsdWUoKSxJPSIiO251bGwhPXk/ST15Om51bGwhPUMmJihJPUMpLHRoaXMudXBkYXRlQ29tbWVudE1ldGEodGhpcy5yYW5nZS5mcm9tLnJv''@;'; put 'put ''dyx0aGlzLnJhbmdlLmZyb20uY29sLFM4ZSh7fSxOTyxJKSksdGhpcy5ob3QucmVuZGVyKCl9fSx7a2V5OiJzZXRDb21tZW50QXRDZWxsIix2YWx1ZTpmdW5jdGlvbih5LEMsSSl7dGhpcy5zZXRSYW5nZSh7ZnJvbTp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3Jkcyh5LEMpfSksdGhpcy5zZXRD''@;'; put 'put ''b21tZW50KEkpfX0se2tleToicmVtb3ZlQ29tbWVudCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdO2lmKCF0aGlzLnJhbmdlLmZyb20pdGhyb3cgbmV3IEVycm9yKCdCZWZvcmUgdXNpbmcg''@;'; put 'put ''dGhpcyBtZXRob2QsIGZpcnN0IHNldCBjZWxsIHJhbmdlIChob3QuZ2V0UGx1Z2luKCJjb21tZW50Iikuc2V0UmFuZ2UoKSknKTt0aGlzLmhvdC5zZXRDZWxsTWV0YSh0aGlzLnJhbmdlLmZyb20ucm93LHRoaXMucmFuZ2UuZnJvbS5jb2wsUmcpLHkmJnRoaXMuaG90LnJlbmRlcigpLHRoaXMu''@;'; put 'put ''aGlkZSgpfX0se2tleToicmVtb3ZlQ29tbWVudEF0Q2VsbCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdO3RoaXMuc2V0UmFuZ2Uoe2Zyb206dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29y''@;'; put 'put ''ZHMoeSxDKX0pLHRoaXMucmVtb3ZlQ29tbWVudChJKX19LHtrZXk6ImdldENvbW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0Q29tbWVudE1ldGEodGhpcy5yYW5nZS5mcm9tLnJvdyx0aGlzLnJhbmdlLmZyb20uY29sLE5PKX19LHtrZXk6ImdldENvbW1lbnRBdENlbGwi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKHksQyl7cmV0dXJuIHRoaXMuZ2V0Q29tbWVudE1ldGEoeSxDLE5PKX19LHtrZXk6InNob3ciLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMucmFuZ2UuZnJvbSl0aHJvdyBuZXcgRXJyb3IoJ0JlZm9yZSB1c2luZyB0aGlzIG1ldGhvZCwgZmlyc3Qgc2V0IGNlbGwg''@;'; put 'put ''cmFuZ2UgKGhvdC5nZXRQbHVnaW4oImNvbW1lbnQiKS5zZXRSYW5nZSgpKScpO3ZhciB5PXRoaXMucmFuZ2UuZnJvbSxDPXkucm93LEk9eS5jb2w7aWYoQzwwfHxDPnRoaXMuaG90LmNvdW50U291cmNlUm93cygpLTF8fEk8MHx8ST50aGlzLmhvdC5jb3VudFNvdXJjZUNvbHMoKS0xKXJldHVy''@;'; put 'put ''biExO3ZhciBaPXRoaXMuaG90LmdldENlbGxNZXRhKHRoaXMucmFuZ2UuZnJvbS5yb3csdGhpcy5yYW5nZS5mcm9tLmNvbCk7cmV0dXJuIHRoaXMuZWRpdG9yLnNldFZhbHVlKFpbUmddP1pbUmddW05PXToiIiksdGhpcy5lZGl0b3Iuc2hvdygpLHRoaXMucmVmcmVzaEVkaXRvcighMCksITB9''@;'; put 'put ''fSx7a2V5OiJzaG93QXRDZWxsIix2YWx1ZTpmdW5jdGlvbih5LEMpe3JldHVybiB0aGlzLnNldFJhbmdlKHtmcm9tOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHksQyl9KSx0aGlzLnNob3coKX19LHtrZXk6ImhpZGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lZGl0b3IuaGlkZSgpfX0s''@;'; put 'put ''e2tleToicmVmcmVzaEVkaXRvciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeSxDLEk9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtpZihJfHx0aGlzLnJhbmdlLmZyb20mJnRoaXMuZWRpdG9yLmlzVmlzaWJsZSgpKXt2YXIgWj10aGlzLmhv''@;'; put 'put ''dCx1ZT1aLnJvd0luZGV4TWFwcGVyLF9lPVouY29sdW1uSW5kZXhNYXBwZXIsQmU9dGhpcy5yYW5nZS5mcm9tLE5lPUJlLnJvdyxLZT1CZS5jb2wscHQ9dWUuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChOZSksT3Q9X2UuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChLZSksJHQ9''@;'; put 'put ''bnVsbD09PXB0O251bGw9PT1wdCYmKHB0PXVlLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgodWUuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KE5lLC0xKSkpLG51bGw9PT1PdCYmKE90PV9lLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoX2UuZ2V0TmVhcmVzdE5vdEhpZGRlbklu''@;'; put 'put ''ZGV4KEtlLC0xKSkpO3ZhciBmbj1udWxsPT09cHQsTG49bnVsbD09PU90O3B0PW51bGwhPT0oeT1wdCkmJnZvaWQgMCE9PXk/eTowLE90PW51bGwhPT0oQz1PdCkmJnZvaWQgMCE9PUM/QzowO3ZhciBpcj10aGlzLmhvdCxtcj1pci5yb290V2luZG93LFNyPWlyLnZpZXcuX3d0LHdyPVNyLnd0''@;'; put 'put ''VGFibGUsUXI9d3IuZ2V0Q2VsbCh7cm93OnB0LGNvbDpPdH0pLHlpPXRoaXMuZ2V0Q29tbWVudE1ldGEoTmUsS2UsInN0eWxlIik7eWk/dGhpcy5lZGl0b3Iuc2V0U2l6ZSh5aS53aWR0aCx5aS5oZWlnaHQpOnRoaXMuZWRpdG9yLnJlc2V0U2l6ZSgpO3ZhciBLaT1Mbj8wOndyLmdldFN0cmV0''@;'; put 'put ''Y2hlZENvbHVtbldpZHRoKE90KSxTbz0kdCYmIWZuP0QxKFFyKTowLFBvPVFyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFNhPVBvLmxlZnQsSmE9UG8udG9wLGxhPVBvLndpZHRoLGFsPVBvLmhlaWdodCxScz10aGlzLmVkaXRvci5nZXRTaXplKCksSDA9UnMud2lkdGgscm89UnMuaGVpZ2h0''@;'; put 'put ''LGZvPXRoaXMuaG90LnJvb3RXaW5kb3csSWE9Zm8uaW5uZXJXaWR0aCxYbD1mby5pbm5lckhlaWdodCxGbj10aGlzLmhvdC5yb290RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFpuPVNhK21yLnNjcm9sbFgrS2ksX3I9SmErbXIuc2Nyb2xsWStTbzt0aGlzLmhvdC5pc1J0bCgpJiYoWm4tPUgw''@;'; put 'put ''K0tpKSx0aGlzLmhvdC5pc0x0cigpJiZTYStsYStIMD5JYT9abj1TYSttci5zY3JvbGxYLUgwLTE6dGhpcy5ob3QuaXNSdGwoKSYmWm48LShGbi5zY3JvbGxXaWR0aC1Gbi5jbGllbnRXaWR0aCkmJihabj1TYSttci5zY3JvbGxYK0tpKzEpLEphK3JvPlhsJiYoX3ItPXJvLWFsKzEpLHRoaXMu''@;'; put 'put ''ZWRpdG9yLnNldFBvc2l0aW9uKFpuLF9yKSx0aGlzLmVkaXRvci5zZXRSZWFkT25seVN0YXRlKHRoaXMuZ2V0Q29tbWVudE1ldGEoTmUsS2UsRnRlKSl9fX0se2tleToiY2hlY2tTZWxlY3Rpb25Db21tZW50c0NvbnNpc3RlbmN5Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaG90Lmdl''@;'; put 'put ''dFNlbGVjdGVkUmFuZ2VMYXN0KCk7aWYoIXkpcmV0dXJuITE7dmFyIEM9ITEsST15LmdldFRvcFN0YXJ0Q29ybmVyKCk7cmV0dXJuIHRoaXMuZ2V0Q29tbWVudE1ldGEoSS5yb3csSS5jb2wsTk8pJiYoQz0hMCksQ319LHtrZXk6InVwZGF0ZUNvbW1lbnRNZXRhIix2YWx1ZTpmdW5jdGlvbih5''@;'; put 'put ''LEMsSSl7dmFyIHVlLFo9dGhpcy5ob3QuZ2V0Q2VsbE1ldGEoeSxDKVtSZ107Wj9MWih1ZT1naChaKSxJKTp1ZT1JLHRoaXMuaG90LnNldENlbGxNZXRhKHksQyxSZyx1ZSl9fSx7a2V5OiJnZXRDb21tZW50TWV0YSIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe3ZhciBaPXRoaXMuaG90LmdldENl''@;'; put 'put ''bGxNZXRhKHksQyk7aWYoWltSZ10pcmV0dXJuIFpbUmddW0ldfX0se2tleToib25Nb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKHkpe2lmKHRoaXMuaG90LnZpZXcmJnRoaXMuaG90LnZpZXcuX3d0JiYhdGhpcy5wcmV2ZW50RWRpdG9yQXV0b1N3aXRjaCYmIXRoaXMudGFyZ2V0SXNDb21tZW50''@;'; put 'put ''VGV4dEFyZWEoeSkpe3ZhciBDPU12KHkudGFyZ2V0LCJURCIsIlRCT0RZIiksST1udWxsO0MmJihJPXRoaXMuaG90LmdldENvb3JkcyhDKSksKCFDfHx0aGlzLnJhbmdlLmZyb20mJkkmJih0aGlzLnJhbmdlLmZyb20ucm93IT09SS5yb3d8fHRoaXMucmFuZ2UuZnJvbS5jb2whPT1JLmNvbCkp''@;'; put 'put ''JiZ0aGlzLmhpZGUoKX19fSx7a2V5OiJvbk1vdXNlT3ZlciIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9UHRlLmdldCh0aGlzKSxJPXRoaXMuaG90LnJvb3REb2N1bWVudDtpZighKHRoaXMucHJldmVudEVkaXRvckF1dG9Td2l0Y2h8fHRoaXMuZWRpdG9yLmlzRm9jdXNlZCgpfHx0bCh5LnRh''@;'; put 'put ''cmdldCwid3RCb3JkZXIiKXx8Qy5jZWxsQmVsb3dDdXJzb3I9PT15LnRhcmdldCkmJnRoaXMuZWRpdG9yKWlmKEMuY2VsbEJlbG93Q3Vyc29yPUkuZWxlbWVudEZyb21Qb2ludCh5LmNsaWVudFgseS5jbGllbnRZKSx0aGlzLnRhcmdldElzQ2VsbFdpdGhDb21tZW50KHkpKXt2YXIgWj10aGlz''@;'; put 'put ''LmhvdC5fY3JlYXRlQ2VsbFJhbmdlKHRoaXMuaG90LmdldENvb3Jkcyh5LnRhcmdldCkpO3RoaXMuZGlzcGxheVN3aXRjaC5zaG93KFopfWVsc2UgX3coeS50YXJnZXQsSSkmJiF0aGlzLnRhcmdldElzQ29tbWVudFRleHRBcmVhKHkpJiZ0aGlzLmRpc3BsYXlTd2l0Y2guaGlkZSgpfX0se2tl''@;'; put 'put ''eToib25Nb3VzZVVwIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucHJldmVudEVkaXRvckF1dG9Td2l0Y2g9ITF9fSx7a2V5OiJvbkFmdGVyUmVuZGVyZXIiLHZhbHVlOmZ1bmN0aW9uKHksQyl7Q1tSZ10mJkNbUmddW05PXSYmTzAoeSxDLmNvbW1lbnRlZENlbGxDbGFzc05hbWUpfX0se2tleToi''@;'; put 'put ''b25FZGl0b3JCbHVyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0Q29tbWVudCgpfX0se2tleToib25FZGl0b3JNb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKHkpe1B0ZS5nZXQodGhpcykudGVtcEVkaXRvckRpbWVuc2lvbnM9e3dpZHRoOkUyKHkudGFyZ2V0KSxoZWlnaHQ6RDEoeS50YXJn''@;'; put 'put ''ZXQpfX19LHtrZXk6Im9uRWRpdG9yTW91c2VVcCIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9UHRlLmdldCh0aGlzKSxJPUUyKHkudGFyZ2V0KSxaPUQxKHkudGFyZ2V0KTsoSSE9PUMudGVtcEVkaXRvckRpbWVuc2lvbnMud2lkdGgrMXx8WiE9PUMudGVtcEVkaXRvckRpbWVuc2lvbnMuaGVp''@;'; put 'put ''Z2h0KzIpJiZ0aGlzLnVwZGF0ZUNvbW1lbnRNZXRhKHRoaXMucmFuZ2UuZnJvbS5yb3csdGhpcy5yYW5nZS5mcm9tLmNvbCxTOGUoe30sInN0eWxlIix7d2lkdGg6SSxoZWlnaHQ6Wn0pKX19LHtrZXk6Im9uQ29udGV4dE1lbnVBZGRDb21tZW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRo''@;'; put 'put ''aXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7dGhpcy5wcmV2ZW50RWRpdG9yQXV0b1N3aXRjaD0hMCx0aGlzLmRpc3BsYXlTd2l0Y2guY2FuY2VsSGlkaW5nKCksdGhpcy5zZXRSYW5nZSh7ZnJvbTp5LmhpZ2hsaWdodH0pLHRoaXMuc2hvdygpLHRoaXMuaG90LmRlc2VsZWN0Q2VsbCgp''@;'; put 'put ''LHRoaXMuZWRpdG9yLmZvY3VzKCl9fSx7a2V5OiJvbkNvbnRleHRNZW51UmVtb3ZlQ29tbWVudCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTt0aGlzLnByZXZlbnRFZGl0b3JBdXRvU3dpdGNoPSEwLEMuZm9yQWxsKGZ1bmN0''@;'; put 'put ''aW9uKEksWil7ST49MCYmWj49MCYmeS5yZW1vdmVDb21tZW50QXRDZWxsKEksWiwhMSl9KSx0aGlzLmhvdC5yZW5kZXIoKX19LHtrZXk6Im9uQ29udGV4dE1lbnVNYWtlUmVhZE9ubHkiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0''@;'; put 'put ''KCk7dGhpcy5wcmV2ZW50RWRpdG9yQXV0b1N3aXRjaD0hMCxDLmZvckFsbChmdW5jdGlvbihJLFope2lmKEk+PTAmJlo+PTApe3ZhciB1ZT0hIXkuZ2V0Q29tbWVudE1ldGEoSSxaLEZ0ZSk7eS51cGRhdGVDb21tZW50TWV0YShJLFosUzhlKHt9LEZ0ZSwhdWUpKX19KX19LHtrZXk6ImFkZFRv''@;'; put 'put ''Q29udGV4dE1lbnUiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST1mdW5jdGlvbigpe3JldHVybiBDLmhvdC5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlSW5kZXhlc0xlbmd0aCgpPjAmJkMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldFJlbmRlcmFibGVJbmRleGVzTGVuZ3Ro''@;'; put 'put ''KCk+MH07eS5pdGVtcy5wdXNoKHtuYW1lOiItLS0tLS0tLS0ifSx7a2V5OiJjb21tZW50c0FkZEVkaXQiLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gQy5jaGVja1NlbGVjdGlvbkNvbW1lbnRzQ29uc2lzdGVuY3koKT9DLmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKFo0ZSk6Qy5ob3QuZ2V0VHJh''@;'; put 'put ''bnNsYXRlZFBocmFzZShqNGUpfSxjYWxsYmFjazpmdW5jdGlvbigpe3JldHVybiBDLm9uQ29udGV4dE1lbnVBZGRDb21tZW50KCl9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIUkoKXx8IShDLmhvdC5nZXRTZWxlY3RlZExhc3QoKSYmIUMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlD''@;'; put 'put ''b3JuZXIoKSl9fSx7a2V5OiJjb21tZW50c1JlbW92ZSIsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoejRlKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gQy5vbkNvbnRleHRNZW51UmVtb3ZlQ29tbWVudCgpfSxkaXNhYmxlZDpmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiFJKCl8fCEoQy5ob3QuZ2V0U2VsZWN0ZWRMYXN0KCkmJiFDLmhvdC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCkpfX0se2tleToiY29tbWVudHNSZWFkT25seSIsbmFtZTpmdW5jdGlvbigpe3ZhciB1ZT10aGlzLF9lPXRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShHNGUp''@;'; put 'put ''O3JldHVybiBPZyh0aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksZnVuY3Rpb24oTmUsS2Upe3ZhciBwdD11ZS5nZXRDZWxsTWV0YShOZSxLZSlbUmddO2lmKHB0JiYocHQ9cHRbRnRlXSkscHQpcmV0dXJuITB9KSYmKF9lPVB2KF9lKSksX2V9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IEMub25Db250ZXh0TWVudU1ha2VSZWFkT25seSgpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFJKCl8fCEoQy5ob3QuZ2V0U2VsZWN0ZWRMYXN0KCkmJiFDLmhvdC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCkmJkMuY2hlY2tTZWxlY3Rpb25Db21tZW50c0NvbnNpc3RlbmN5''@;'; put 'put ''KCkpfX0pfX0se2tleToiZ2V0RGlzcGxheURlbGF5U2V0dGluZyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmhvdC5nZXRTZXR0aW5ncygpW0U4ZV07aWYoeGwoeSkpcmV0dXJuIHkuZGlzcGxheURlbGF5fX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVkaXRv''@;'; put 'put ''ciYmdGhpcy5lZGl0b3IuZGVzdHJveSgpLHRoaXMuZGlzcGxheVN3aXRjaCYmdGhpcy5kaXNwbGF5U3dpdGNoLmRlc3Ryb3koKSxxUyhGdihoLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBF''@;'; put 'put ''OGV9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiA2MH19XSksaH0oWXMpO2Z1bmN0aW9uIFJFZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxl''@;'; put 'put ''PSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBYb3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpeyhmdW5jdGlvbiBRb3QoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5u''@;'; put 'put ''b3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5ob3Q9Zyx0aGlzLmNvbW1hbmRzPXt9LHRoaXMuY29tbW9uQ2FsbGJhY2s9bnVsbH1yZXR1cm4gZnVuY3Rpb24gSm90KGQsZyxoKXtnJiZSRWUoZC5wcm90b3R5cGUsZyksaCYmUkVlKGQsaCksT2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InJlZ2lzdGVyQ29tbWFuZCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt0aGlzLmNvbW1hbmRzW2hdPXZ9fSx7a2V5OiJzZXRDb21tb25DYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5jb21tb25D''@;'; put 'put ''YWxsYmFjaz1ofX0se2tleToiZXhlY3V0ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7Zm9yKHZhciB2PXRoaXMseT1hcmd1bWVudHMubGVuZ3RoLEM9bmV3IEFycmF5KHk+MT95LTE6MCksST0xO0k8eTtJKyspQ1tJLTFdPWFyZ3VtZW50c1tJXTt2YXIgWj1oLnNwbGl0KCI6IiksdWU9WlswXSxfZT0y''@;'; put 'put ''PT09Wi5sZW5ndGg/WlsxXTpudWxsLEJlPXRoaXMuY29tbWFuZHNbdWVdO2lmKCFCZSl0aHJvdyBuZXcgRXJyb3IoIk1lbnUgY29tbWFuZCAnIi5jb25jYXQodWUsIicgbm90IGV4aXN0cy4iKSk7aWYoX2UmJkJlLnN1Ym1lbnUmJihCZT1Lb3QoX2UsQmUuc3VibWVudS5pdGVtcykpLCEwIT09''@;'; put 'put ''QmUuZGlzYWJsZWQmJigiZnVuY3Rpb24iIT10eXBlb2YgQmUuZGlzYWJsZWR8fCEwIT09QmUuZGlzYWJsZWQuY2FsbCh0aGlzLmhvdCkpJiYhbzEoQmUsInN1Ym1lbnUiKSl7dmFyIE5lPVtdOyJmdW5jdGlvbiI9PXR5cGVvZiBCZS5jYWxsYmFjayYmTmUucHVzaChCZS5jYWxsYmFjayksImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIHRoaXMuY29tbW9uQ2FsbGJhY2smJk5lLnB1c2godGhpcy5jb21tb25DYWxsYmFjayksQy51bnNoaWZ0KFouam9pbigiOiIpKSxVcihOZSxmdW5jdGlvbihLZSl7cmV0dXJuIEtlLmFwcGx5KHYuaG90LEMpfSl9fX1dKSxkfSgpO2Z1bmN0aW9uIEtvdChkLGcpe3Zh''@;'; put 'put ''ciBoO3JldHVybiBVcihnLGZ1bmN0aW9uKHYpe3ZhciB5PXYua2V5P3Yua2V5LnNwbGl0KCI6Iik6bnVsbDtpZihBcnJheS5pc0FycmF5KHkpJiZ5WzFdPT09ZClyZXR1cm4gaD12LCExfSksaH1jb25zdCBCRWU9WG90O3ZhciBQcD0iYWxpZ25tZW50IixIdGU9ImNsZWFyX2NvbHVtbiIsdno9''@;'; put 'put ''ImNvbF9sZWZ0IixBej0iY29sX3JpZ2h0Iix5ej0ibWFrZV9yZWFkX29ubHkiLE50ZT0icmVkbyI7ZnVuY3Rpb24gUEVlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9''@;'; put 'put ''dmFyIHd6PSJyZW1vdmVfY29sIjtmdW5jdGlvbiBGRWUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn12YXIgczMsVnRlPSJyZW1vdmVfcm93IixqdGU9InJvd19hYm92''@;'; put 'put ''ZSIsWnRlPSJyb3dfYmVsb3ciLGJ6PSJub19pdGVtcyIsenRlPSJ1bmRvIjtmdW5jdGlvbiB5NChkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9''@;'; put 'put ''dmFyIEhFZT1banRlLFp0ZSx2eixBeixIdGUsVnRlLHd6LHp0ZSxOdGUseXosUHAsV2wsYnpdLE5FZT0oeTQoczM9e30sV2wsZnVuY3Rpb24ga290KCl7cmV0dXJue25hbWU6V2x9fSkseTQoczMsYnosZnVuY3Rpb24gQWF0KCl7cmV0dXJue2tleTpieixuYW1lOmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShrNGUpfSxkaXNhYmxlZDohMCxpc0NvbW1hbmQ6ITF9fSkseTQoczMsanRlLGZ1bmN0aW9uIG1hdCgpe3JldHVybntrZXk6anRlLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKFM0ZSl9LGNhbGxiYWNrOmZ1''@;'; put 'put ''bmN0aW9uKGcsaCl7dmFyIHY9dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCkseT0wO3Z8fCh5PWhbTWF0aC5tYXgoaC5sZW5ndGgtMSwwKV0uc3RhcnQucm93KSx0aGlzLmFsdGVyKCJpbnNlcnRfcm93Iix5LDEsIkNvbnRleHRNZW51LnJvd0Fib3ZlIiksdiYmdGhpcy5zZWxl''@;'; put 'put ''Y3RBbGwoKX0sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hS1ModGhpcyl8fCh0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKT8wPT09dGhpcy5jb3VudFJvd3MoKTp0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKXx8dGhpcy5jb3VudFJvd3MoKT49''@;'; put 'put ''dGhpcy5nZXRTZXR0aW5ncygpLm1heFJvd3MpfSxoaWRkZW46ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5nZXRTZXR0aW5ncygpLmFsbG93SW5zZXJ0Um93fX19KSx5NChzMyxadGUsZnVuY3Rpb24gdmF0KCl7cmV0dXJue2tleTpadGUsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRy''@;'; put 'put ''YW5zbGF0ZWRQaHJhc2UoTTRlKX0sY2FsbGJhY2s6ZnVuY3Rpb24oZyxoKXt2YXIgdj10aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKSx5PTA7aWYodil5PXRoaXMuY291bnRSb3dzKCk7ZWxzZXt2YXIgQyxJPWhbTWF0aC5tYXgoaC5sZW5ndGgtMSwwKV0sWj1udWxsPT1JfHxu''@;'; put 'put ''dWxsPT09KEM9SS5lbmQpfHx2b2lkIDA9PT1DP3ZvaWQgMDpDLnJvdzt5PVRvKFopP1orMTowfXRoaXMuYWx0ZXIoImluc2VydF9yb3ciLHksMSwiQ29udGV4dE1lbnUucm93QmVsb3ciKSx2JiZ0aGlzLnNlbGVjdEFsbCgpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFLUyh0aGlzKXx8''@;'; put 'put ''IXRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpJiYodGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCl8fHRoaXMuY291bnRSb3dzKCk+PXRoaXMuZ2V0U2V0dGluZ3MoKS5tYXhSb3dzKX0saGlkZGVuOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZ2V0U2V0''@;'; put 'put ''dGluZ3MoKS5hbGxvd0luc2VydFJvd319fSkseTQoczMsdnosZnVuY3Rpb24gZWF0KCl7cmV0dXJue2tleTp2eixuYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShFNGUpfSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBnPXRoaXMuc2VsZWN0aW9uLmlzU2Vs''@;'; put 'put ''ZWN0ZWRCeUNvcm5lcigpLGg9dGhpcy5pc1J0bCgpP3RoaXMuY291bnRDb2xzKCk6MDtpZighZyl7dmFyIHY9dGhpcy5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO2lmKFRvKHYpKXt2YXIgQz12LmdldFRvcExlZnRDb3JuZXIoKS5jb2w7aD10aGlzLmlzUnRsKCk/QysxOkN9fXRoaXMuYWx0ZXIo''@;'; put 'put ''Imluc2VydF9jb2wiLGgsMSwiQ29udGV4dE1lbnUuY29sdW1uTGVmdCIpLGcmJnRoaXMuc2VsZWN0QWxsKCl9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNDb2x1bW5Nb2RpZmljYXRpb25BbGxvd2VkKCl8fCFLUyh0aGlzKXx8KHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRC''@;'; put 'put ''eUNvcm5lcigpPzA9PT10aGlzLmNvdW50Q29scygpOnRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpfHx0aGlzLmNvdW50Q29scygpPj10aGlzLmdldFNldHRpbmdzKCkubWF4Q29scyl9LGhpZGRlbjpmdW5jdGlvbigpe3JldHVybiF0aGlzLmdldFNldHRpbmdzKCkuYWxs''@;'; put 'put ''b3dJbnNlcnRDb2x1bW59fX0pLHk0KHMzLEF6LGZ1bmN0aW9uIHRhdCgpe3JldHVybntrZXk6QXosbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoeDRlKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlD''@;'; put 'put ''b3JuZXIoKSxoPXRoaXMuaXNSdGwoKT8wOnRoaXMuY291bnRDb2xzKCk7aWYoIWcpe3ZhciB2PXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtpZihUbyh2KSl7dmFyIEM9di5nZXRUb3BSaWdodENvcm5lcigpLmNvbDtoPXRoaXMuaXNSdGwoKT9DOkMrMX19dGhpcy5hbHRlcigiaW5zZXJ0''@;'; put 'put ''X2NvbCIsaCwxLCJDb250ZXh0TWVudS5jb2x1bW5SaWdodCIpLGcmJnRoaXMuc2VsZWN0QWxsKCl9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNDb2x1bW5Nb2RpZmljYXRpb25BbGxvd2VkKCl8fCFLUyh0aGlzKXx8IXRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5l''@;'; put 'put ''cigpJiYodGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCl8fHRoaXMuY291bnRDb2xzKCk+PXRoaXMuZ2V0U2V0dGluZ3MoKS5tYXhDb2xzKX0saGlkZGVuOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZ2V0U2V0dGluZ3MoKS5hbGxvd0luc2VydENvbHVtbn19fSkseTQoczMs''@;'; put 'put ''SHRlLGZ1bmN0aW9uIHFvdCgpe3JldHVybntrZXk6SHRlLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKFI0ZSl9LGNhbGxiYWNrOmZ1bmN0aW9uKGcsaCl7dmFyIHY9aFswXS5zdGFydC5jb2wseT1oWzBdLmVuZC5jb2w7dGhpcy5jb3VudFJvd3MoKSYm''@;'; put 'put ''dGhpcy5wb3B1bGF0ZUZyb21BcnJheSgwLHYsW1tudWxsXV0sTWF0aC5tYXgoaFswXS5zdGFydC5yb3csaFswXS5lbmQucm93KSx5LCJDb250ZXh0TWVudS5jbGVhckNvbHVtbiIpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFLUyh0aGlzKXx8IXRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0''@;'; put 'put ''ZWRCeUNvbHVtbkhlYWRlcigpfX19KSx5NChzMyxWdGUsZnVuY3Rpb24gZ2F0KCl7cmV0dXJue2tleTpWdGUsbmFtZTpmdW5jdGlvbigpe3ZhciBnPXRoaXMuZ2V0U2VsZWN0ZWQoKSxoPTA7aWYoZylpZihnLmxlbmd0aD4xKWg9MTtlbHNle3ZhciB2PWZ1bmN0aW9uIGNhdChkLGcpe3JldHVy''@;'; put 'put ''biBmdW5jdGlvbiBwYXQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIGRhdChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7''@;'; put 'put ''dmFyIEksWix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKHVlKXtDPSEwLFo9dWV9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJl''@;'; put 'put ''dHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBafX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIGhhdChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gRkVlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJP''@;'; put 'put ''YmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJl''@;'; put 'put ''dHVybiBGRWUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIGZhdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZl''@;'; put 'put ''IGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGdbMF0sMyk7dlswXS12WzJdIT0wJiYoaD0xKX1yZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKFQ0ZSxoKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt0aGlzLmFsdGVyKCJyZW1vdmVfcm93IixmdW5jdGlvbiBiJGUoZCl7''@;'; put 'put ''dmFyIGc9Q08oZCk7aWYoMD09PWd8fDE9PT1nKXJldHVybltdO3ZhciBoPXV6KGcpLHY9bmV3IFNldDtyZXR1cm4gVXIoZCxmdW5jdGlvbihJKXt2YXIgdWU9aVNlKGgoSSksMyksQmU9dWVbMl0sTmU9TWF0aC5tYXgodWVbMF0sMCk7VXIoQXJyYXkuZnJvbShuZXcgQXJyYXkoQmUtTmUrMSks''@;'; put 'put ''ZnVuY3Rpb24ocHQsT3Qpe3JldHVybiBOZStPdH0pLGZ1bmN0aW9uKHB0KXt2LmhhcyhwdCl8fHYuYWRkKHB0KX0pfSksU3UoQXJyYXkuZnJvbSh2KS5zb3J0KGZ1bmN0aW9uKEksWil7cmV0dXJuIEktWn0pLGZ1bmN0aW9uKEksWix1ZSxfZSl7cmV0dXJuIDAhPT11ZSYmWj09PV9lW3VlLTFd''@;'; put 'put ''KzE/SVtJLmxlbmd0aC0xXVsxXSs9MTpJLnB1c2goW1osMV0pLEl9LFtdKX0odGhpcy5nZXRTZWxlY3RlZCgpKSwxLCJDb250ZXh0TWVudS5yZW1vdmVSb3ciKX0sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtpZighS1ModGhpcykpcmV0dXJuITA7dmFyIGg9dGhpcy5jb3VudFJvd3MoKTtyZXR1cm4g''@;'; put 'put ''dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCk/MD09PWg6dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCl8fDA9PT1ofSxoaWRkZW46ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5nZXRTZXR0aW5ncygpLmFsbG93UmVtb3ZlUm93fX19KSx5NChzMyx3eixm''@;'; put 'put ''dW5jdGlvbiB1YXQoKXtyZXR1cm57a2V5Ond6LG5hbWU6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLmdldFNlbGVjdGVkKCksaD0wO2lmKGcpaWYoZy5sZW5ndGg+MSloPTE7ZWxzZXt2YXIgdj1mdW5jdGlvbiBpYXQoZCxnKXtyZXR1cm4gZnVuY3Rpb24gc2F0KGQpe2lmKEFycmF5LmlzQXJyYXko''@;'; put 'put ''ZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBsYXQoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWgu''@;'; put 'put ''Y2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaCh1ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgWn19cmV0dXJu''@;'; put 'put ''IHZ9fShkLGcpfHxmdW5jdGlvbiBhYXQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIFBFZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29u''@;'; put 'put ''c3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gUEVlKGQsZyl9fShkLGcpfHxmdW5jdGlvbiBvYXQo''@;'; put 'put ''KXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgp''@;'; put 'put ''fShnWzBdLDQpO3ZbMV0tdlszXSE9MCYmKGg9MSl9cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShJNGUsaCl9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7dGhpcy5hbHRlcigicmVtb3ZlX2NvbCIsZnVuY3Rpb24gdyRlKGQpe3ZhciBnPUNPKGQpO2lmKDA9PT1nfHwxPT09ZylyZXR1cm5b''@;'; put 'put ''XTt2YXIgaD11eihnKSx2PW5ldyBTZXQ7cmV0dXJuIFVyKGQsZnVuY3Rpb24oSSl7dmFyIHVlPWlTZShoKEkpLDQpLEJlPXVlWzNdLE5lPU1hdGgubWF4KHVlWzFdLDApO1VyKEFycmF5LmZyb20obmV3IEFycmF5KEJlLU5lKzEpLGZ1bmN0aW9uKHB0LE90KXtyZXR1cm4gTmUrT3R9KSxmdW5j''@;'; put 'put ''dGlvbihwdCl7di5oYXMocHQpfHx2LmFkZChwdCl9KX0pLFN1KEFycmF5LmZyb20odikuc29ydChmdW5jdGlvbihJLFope3JldHVybiBJLVp9KSxmdW5jdGlvbihJLFosdWUsX2Upe3JldHVybiAwIT09dWUmJlo9PT1fZVt1ZS0xXSsxP0lbSS5sZW5ndGgtMV1bMV0rPTE6SS5wdXNoKFtaLDFd''@;'; put 'put ''KSxJfSxbXSl9KHRoaXMuZ2V0U2VsZWN0ZWQoKSksbnVsbCwiQ29udGV4dE1lbnUucmVtb3ZlQ29sdW1uIil9LGRpc2FibGVkOmZ1bmN0aW9uKCl7aWYoIXRoaXMuaXNDb2x1bW5Nb2RpZmljYXRpb25BbGxvd2VkKCkpcmV0dXJuITA7aWYoIUtTKHRoaXMpKXJldHVybiEwO3ZhciBoPXRoaXMu''@;'; put 'put ''Y291bnRDb2xzKCk7cmV0dXJuIHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpPzA9PT1oOnRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpfHwwPT09aH0saGlkZGVuOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZ2V0U2V0dGluZ3MoKS5hbGxvd1JlbW92ZUNv''@;'; put 'put ''bHVtbn19fSkseTQoczMsenRlLGZ1bmN0aW9uIHlhdCgpe3JldHVybntrZXk6enRlLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKEQ0ZSl9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7dGhpcy51bmRvKCl9LGhpZGRlbjpmdW5jdGlvbigpe3ZhciBnPXRoaXMu''@;'; put 'put ''Z2V0UGx1Z2luKCJ1bmRvUmVkbyIpO3JldHVybiFnfHwhZy5pc0VuYWJsZWQoKX0sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5nZXRQbHVnaW4oInVuZG9SZWRvIikuaXNVbmRvQXZhaWxhYmxlKCl9fX0pLHk0KHMzLE50ZSxmdW5jdGlvbiByYXQoKXtyZXR1cm57a2V5Ok50ZSxu''@;'; put 'put ''YW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShMNGUpfSxjYWxsYmFjazpmdW5jdGlvbigpe3RoaXMucmVkbygpfSxoaWRkZW46ZnVuY3Rpb24oKXt2YXIgZz10aGlzLmdldFBsdWdpbigidW5kb1JlZG8iKTtyZXR1cm4hZ3x8IWcuaXNFbmFibGVkKCl9LGRp''@;'; put 'put ''c2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZ2V0UGx1Z2luKCJ1bmRvUmVkbyIpLmlzUmVkb0F2YWlsYWJsZSgpfX19KSx5NChzMyx5eixmdW5jdGlvbiBuYXQoKXtyZXR1cm57a2V5Onl6LG5hbWU6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLGg9dGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNl''@;'; put 'put ''KE80ZSk7cmV0dXJuIE9nKHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLGZ1bmN0aW9uKHksQyl7cmV0dXJuIGcuZ2V0Q2VsbE1ldGEoeSxDKS5yZWFkT25seX0pJiYoaD1QdihoKSksaH0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLGg9dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksdj1P''@;'; put 'put ''ZyhoLGZ1bmN0aW9uKHksQyl7cmV0dXJuIGcuZ2V0Q2VsbE1ldGEoeSxDKS5yZWFkT25seX0pO1VyKGgsZnVuY3Rpb24oeSl7eS5mb3JBbGwoZnVuY3Rpb24oQyxJKXtDPj0wJiZJPj0wJiZnLnNldENlbGxNZXRhKEMsSSwicmVhZE9ubHkiLCF2KX0pfSksdGhpcy5yZW5kZXIoKX0sZGlzYWJs''@;'; put 'put ''ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hKCF0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKSYmMCE9PXRoaXMuY291bnRSb3dzKCkmJjAhPT10aGlzLmNvdW50Q29scygpJiZ0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSYmMCE9PXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLmxlbmd0aCl9''@;'; put 'put ''fX0pLHk0KHMzLFBwLGZ1bmN0aW9uICRvdCgpe3JldHVybntrZXk6UHAsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoVzRlKX0sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuY291bnRSb3dzKCl8fDA9PT10aGlzLmNvdW50Q29scygp''@;'; put 'put ''fHwhKHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpJiYhdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCkpfSxzdWJtZW51OntpdGVtczpbe2tleToiIi5jb25jYXQoUHAsIjpsZWZ0IiksbmFtZTpmdW5jdGlvbigpe3ZhciBnPXRoaXMsaD10aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2Uo''@;'; put 'put ''WTRlKTtyZXR1cm4gT2codGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksZnVuY3Rpb24oeSxDKXt2YXIgST1nLmdldENlbGxNZXRhKHksQykuY2xhc3NOYW1lO2lmKEkmJi0xIT09SS5pbmRleE9mKCJodExlZnQiKSlyZXR1cm4hMH0pJiYoaD1QdihoKSksaH0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2''@;'; put 'put ''YXIgZz10aGlzLGg9dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksdj0kUyhoLGZ1bmN0aW9uKEksWil7cmV0dXJuIGcuZ2V0Q2VsbE1ldGEoSSxaKS5jbGFzc05hbWV9KSx5PSJob3Jpem9udGFsIixDPSJodExlZnQiO3RoaXMucnVuSG9va3MoImJlZm9yZUNlbGxBbGlnbm1lbnQiLHYsaCx5LEMp''@;'; put 'put ''LEh3KGgseSxDLGZ1bmN0aW9uKEksWil7cmV0dXJuIGcuZ2V0Q2VsbE1ldGEoSSxaKX0sZnVuY3Rpb24oSSxaLHVlLF9lKXtyZXR1cm4gZy5zZXRDZWxsTWV0YShJLFosdWUsX2UpfSksdGhpcy5yZW5kZXIoKX0sZGlzYWJsZWQ6ITF9LHtrZXk6IiIuY29uY2F0KFBwLCI6Y2VudGVyIiksbmFt''@;'; put 'put ''ZTpmdW5jdGlvbigpe3ZhciBnPXRoaXMsaD10aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoVTRlKTtyZXR1cm4gT2codGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksZnVuY3Rpb24oeSxDKXt2YXIgST1nLmdldENlbGxNZXRhKHksQykuY2xhc3NOYW1lO2lmKEkmJi0xIT09SS5pbmRleE9mKCJodENl''@;'; put 'put ''bnRlciIpKXJldHVybiEwfSkmJihoPVB2KGgpKSxofSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBnPXRoaXMsaD10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSx2PSRTKGgsZnVuY3Rpb24oSSxaKXtyZXR1cm4gZy5nZXRDZWxsTWV0YShJLFopLmNsYXNzTmFtZX0pLHk9Imhvcml6b250YWwiLEM9''@;'; put 'put ''Imh0Q2VudGVyIjt0aGlzLnJ1bkhvb2tzKCJiZWZvcmVDZWxsQWxpZ25tZW50Iix2LGgseSxDKSxIdyhoLHksQyxmdW5jdGlvbihJLFope3JldHVybiBnLmdldENlbGxNZXRhKEksWil9LGZ1bmN0aW9uKEksWix1ZSxfZSl7cmV0dXJuIGcuc2V0Q2VsbE1ldGEoSSxaLHVlLF9lKX0pLHRoaXMu''@;'; put 'put ''cmVuZGVyKCl9LGRpc2FibGVkOiExfSx7a2V5OiIiLmNvbmNhdChQcCwiOnJpZ2h0IiksbmFtZTpmdW5jdGlvbigpe3ZhciBnPXRoaXMsaD10aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoUTRlKTtyZXR1cm4gT2codGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksZnVuY3Rpb24oeSxDKXt2YXIgST1n''@;'; put 'put ''LmdldENlbGxNZXRhKHksQykuY2xhc3NOYW1lO2lmKEkmJi0xIT09SS5pbmRleE9mKCJodFJpZ2h0IikpcmV0dXJuITB9KSYmKGg9UHYoaCkpLGh9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcyxoPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLHY9JFMoaCxmdW5jdGlvbihJLFope3Jl''@;'; put 'put ''dHVybiBnLmdldENlbGxNZXRhKEksWikuY2xhc3NOYW1lfSkseT0iaG9yaXpvbnRhbCIsQz0iaHRSaWdodCI7dGhpcy5ydW5Ib29rcygiYmVmb3JlQ2VsbEFsaWdubWVudCIsdixoLHksQyksSHcoaCx5LEMsZnVuY3Rpb24oSSxaKXtyZXR1cm4gZy5nZXRDZWxsTWV0YShJLFopfSxmdW5jdGlv''@;'; put 'put ''bihJLFosdWUsX2Upe3JldHVybiBnLnNldENlbGxNZXRhKEksWix1ZSxfZSl9KSx0aGlzLnJlbmRlcigpfSxkaXNhYmxlZDohMX0se2tleToiIi5jb25jYXQoUHAsIjpqdXN0aWZ5IiksbmFtZTpmdW5jdGlvbigpe3ZhciBnPXRoaXMsaD10aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoSjRlKTty''@;'; put 'put ''ZXR1cm4gT2codGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksZnVuY3Rpb24oeSxDKXt2YXIgST1nLmdldENlbGxNZXRhKHksQykuY2xhc3NOYW1lO2lmKEkmJi0xIT09SS5pbmRleE9mKCJodEp1c3RpZnkiKSlyZXR1cm4hMH0pJiYoaD1QdihoKSksaH0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''Zz10aGlzLGg9dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksdj0kUyhoLGZ1bmN0aW9uKEksWil7cmV0dXJuIGcuZ2V0Q2VsbE1ldGEoSSxaKS5jbGFzc05hbWV9KSx5PSJob3Jpem9udGFsIixDPSJodEp1c3RpZnkiO3RoaXMucnVuSG9va3MoImJlZm9yZUNlbGxBbGlnbm1lbnQiLHYsaCx5LEMp''@;'; put 'put ''LEh3KGgseSxDLGZ1bmN0aW9uKEksWil7cmV0dXJuIGcuZ2V0Q2VsbE1ldGEoSSxaKX0sZnVuY3Rpb24oSSxaLHVlLF9lKXtyZXR1cm4gZy5zZXRDZWxsTWV0YShJLFosdWUsX2UpfSksdGhpcy5yZW5kZXIoKX0sZGlzYWJsZWQ6ITF9LHtuYW1lOldsfSx7a2V5OiIiLmNvbmNhdChQcCwiOnRv''@;'; put 'put ''cCIpLG5hbWU6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLGg9dGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKFg0ZSk7cmV0dXJuIE9nKHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLGZ1bmN0aW9uKHksQyl7dmFyIEk9Zy5nZXRDZWxsTWV0YSh5LEMpLmNsYXNzTmFtZTtpZihJJiYtMSE9PUkuaW5kZXhP''@;'; put 'put ''ZigiaHRUb3AiKSlyZXR1cm4hMH0pJiYoaD1QdihoKSksaH0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgZz10aGlzLGg9dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksdj0kUyhoLGZ1bmN0aW9uKEksWil7cmV0dXJuIGcuZ2V0Q2VsbE1ldGEoSSxaKS5jbGFzc05hbWV9KSx5PSJ2ZXJ0aWNhbCIs''@;'; put 'put ''Qz0iaHRUb3AiO3RoaXMucnVuSG9va3MoImJlZm9yZUNlbGxBbGlnbm1lbnQiLHYsaCx5LEMpLEh3KGgseSxDLGZ1bmN0aW9uKEksWil7cmV0dXJuIGcuZ2V0Q2VsbE1ldGEoSSxaKX0sZnVuY3Rpb24oSSxaLHVlLF9lKXtyZXR1cm4gZy5zZXRDZWxsTWV0YShJLFosdWUsX2UpfSksdGhpcy5y''@;'; put 'put ''ZW5kZXIoKX0sZGlzYWJsZWQ6ITF9LHtrZXk6IiIuY29uY2F0KFBwLCI6bWlkZGxlIiksbmFtZTpmdW5jdGlvbigpe3ZhciBnPXRoaXMsaD10aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoSzRlKTtyZXR1cm4gT2codGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksZnVuY3Rpb24oeSxDKXt2YXIgST1n''@;'; put 'put ''LmdldENlbGxNZXRhKHksQykuY2xhc3NOYW1lO2lmKEkmJi0xIT09SS5pbmRleE9mKCJodE1pZGRsZSIpKXJldHVybiEwfSkmJihoPVB2KGgpKSxofSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBnPXRoaXMsaD10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSx2PSRTKGgsZnVuY3Rpb24oSSxaKXty''@;'; put 'put ''ZXR1cm4gZy5nZXRDZWxsTWV0YShJLFopLmNsYXNzTmFtZX0pLHk9InZlcnRpY2FsIixDPSJodE1pZGRsZSI7dGhpcy5ydW5Ib29rcygiYmVmb3JlQ2VsbEFsaWdubWVudCIsdixoLHksQyksSHcoaCx5LEMsZnVuY3Rpb24oSSxaKXtyZXR1cm4gZy5nZXRDZWxsTWV0YShJLFopfSxmdW5jdGlv''@;'; put 'put ''bihJLFosdWUsX2Upe3JldHVybiBnLnNldENlbGxNZXRhKEksWix1ZSxfZSl9KSx0aGlzLnJlbmRlcigpfSxkaXNhYmxlZDohMX0se2tleToiIi5jb25jYXQoUHAsIjpib3R0b20iKSxuYW1lOmZ1bmN0aW9uKCl7dmFyIGc9dGhpcyxoPXRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZSgkNGUpO3Jl''@;'; put 'put ''dHVybiBPZyh0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSxmdW5jdGlvbih5LEMpe3ZhciBJPWcuZ2V0Q2VsbE1ldGEoeSxDKS5jbGFzc05hbWU7aWYoSSYmLTEhPT1JLmluZGV4T2YoImh0Qm90dG9tIikpcmV0dXJuITB9KSYmKGg9UHYoaCkpLGh9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGc9''@;'; put 'put ''dGhpcyxoPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLHY9JFMoaCxmdW5jdGlvbihJLFope3JldHVybiBnLmdldENlbGxNZXRhKEksWikuY2xhc3NOYW1lfSkseT0idmVydGljYWwiLEM9Imh0Qm90dG9tIjt0aGlzLnJ1bkhvb2tzKCJiZWZvcmVDZWxsQWxpZ25tZW50Iix2LGgseSxDKSxIdyho''@;'; put 'put ''LHksQyxmdW5jdGlvbihJLFope3JldHVybiBnLmdldENlbGxNZXRhKEksWil9LGZ1bmN0aW9uKEksWix1ZSxfZSl7cmV0dXJuIGcuc2V0Q2VsbE1ldGEoSSxaLHVlLF9lKX0pLHRoaXMucmVuZGVyKCl9LGRpc2FibGVkOiExfV19fX0pLHMzKTtmdW5jdGlvbiBWRWUoKXt2YXIgZD17fTtyZXR1''@;'; put 'put ''cm4gR2woTkVlLGZ1bmN0aW9uKGcsaCl7ZFtoXT1nKCl9KSxkfWZ1bmN0aW9uIHdhdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGpFZShkLGcpe2Zvcih2YXIgaD0wO2g8''@;'; put 'put ''Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBfYXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBk''@;'; put 'put ''KGcpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO3dhdCh0aGlzLGQpLHRoaXMuaG90PWcsdGhpcy5wcmVkZWZpbmVkSXRlbXM9VkVlKCksdGhpcy5kZWZhdWx0T3JkZXJQYXR0ZXJuPWh9cmV0dXJuIGZ1bmN0aW9uIGJh''@;'; put 'put ''dChkLGcsaCl7ZyYmakVlKGQucHJvdG90eXBlLGcpLGgmJmpFZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJzZXRQcmVkZWZpbmVkSXRlbXMiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMseT17fTt0aGlzLmRl''@;'; put 'put ''ZmF1bHRPcmRlclBhdHRlcm4ubGVuZ3RoPTAsR2woaCxmdW5jdGlvbihDLEkpe3ZhciBaPSIiO0MubmFtZT09PVdsPyh5W1dsXT1DLFo9V2wpOmlzTmFOKHBhcnNlSW50KEksMTApKT8oQy5rZXk9dm9pZCAwPT09Qy5rZXk/STpDLmtleSx5W0ldPUMsWj1DLmtleSk6KHlbQy5rZXldPUMsWj1D''@;'; put 'put ''LmtleSksdi5kZWZhdWx0T3JkZXJQYXR0ZXJuLnB1c2goWil9KSx0aGlzLnByZWRlZmluZWRJdGVtcz15fX0se2tleToiZ2V0SXRlbXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7cmV0''@;'; put 'put ''dXJuIENhdChoLHRoaXMuZGVmYXVsdE9yZGVyUGF0dGVybix0aGlzLnByZWRlZmluZWRJdGVtcyl9fV0pLGR9KCk7ZnVuY3Rpb24gQ2F0KCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwsZz1hcmd1bWVudHMubGVuZ3Ro''@;'; put 'put ''PjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10saD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30sdj1bXSx5PWQ7cmV0dXJuIHkmJnkuaXRlbXM/eT15Lml0ZW1zOkFycmF5LmlzQXJyYXkoeSl8fCh5PWcpLHhs''@;'; put 'put ''KHkpP0dsKHksZnVuY3Rpb24oQyxJKXt2YXIgWj1oWyJzdHJpbmciPT10eXBlb2YgQz9DOkldO1p8fChaPUMpLHhsKEMpP0kxKFosQyk6InN0cmluZyI9PXR5cGVvZiBaJiYoWj17bmFtZTpafSksdm9pZCAwPT09Wi5rZXkmJihaLmtleT1JKSx2LnB1c2goWil9KTpVcih5LGZ1bmN0aW9uKEMs''@;'; put 'put ''SSl7dmFyIFo9aFtDXTshWiYmSEVlLmluZGV4T2YoQyk+PTB8fChafHwoWj17bmFtZTpDLGtleToiIi5jb25jYXQoSSl9KSx4bChDKSYmSTEoWixDKSx2b2lkIDA9PT1aLmtleSYmKFoua2V5PUkpLHYucHVzaChaKSl9KSx2fWNvbnN0IFpFZT1fYXQ7ZnVuY3Rpb24gekVlKGQsZyl7Zm9yKHZh''@;'; put 'put ''ciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIE1hdD1mdW5jdGlvbigpe2Z1''@;'; put 'put ''bmN0aW9uIGQoZyxoKXshZnVuY3Rpb24ga2F0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsZCk7dmFyIEMsSSxaLHVlLF9lLEJlLHY9Zk8oaCkseT14UyhoKTt0aGlzLnJvb3RX''@;'; put 'put ''aW5kb3c9aCx0aGlzLnR5cGU9dGhpcy5nZXRTb3VyY2VUeXBlKGcpLCJsaXRlcmFsIj09PXRoaXMudHlwZT8oQz1wYXJzZUludChnLnRvcCwxMCksWj1wYXJzZUludChnLmxlZnQsMTApLF9lPWcuaGVpZ2h0fHwwLEJlPWcud2lkdGh8fDAsST1DLHVlPVosQys9dixaKz15KToiZXZlbnQiPT09''@;'; put 'put ''dGhpcy50eXBlJiYoQz1wYXJzZUludChnLnBhZ2VZLDEwKSxaPXBhcnNlSW50KGcucGFnZVgsMTApLF9lPWcudGFyZ2V0LmNsaWVudEhlaWdodCxCZT1nLnRhcmdldC5jbGllbnRXaWR0aCxJPUMtdix1ZT1aLXkpLHRoaXMudG9wPUMsdGhpcy50b3BSZWxhdGl2ZT1JLHRoaXMubGVmdD1aLHRo''@;'; put 'put ''aXMubGVmdFJlbGF0aXZlPXVlLHRoaXMuc2Nyb2xsVG9wPXYsdGhpcy5zY3JvbGxMZWZ0PXksdGhpcy5jZWxsSGVpZ2h0PV9lLHRoaXMuY2VsbFdpZHRoPUJlfXJldHVybiBmdW5jdGlvbiBTYXQoZCxnLGgpe2cmJnpFZShkLnByb3RvdHlwZSxnKSxoJiZ6RWUoZCxoKSxPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiZ2V0U291cmNlVHlwZSIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9ImxpdGVyYWwiO3JldHVybiBoIGluc3RhbmNlb2YgRXZlbnQmJih2PSJldmVudCIpLHZ9fSx7a2V5OiJmaXRzQWJvdmUiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKGgpe3JldHVybiB0aGlzLnRvcFJlbGF0aXZlPj1oLm9mZnNldEhlaWdodH19LHtrZXk6ImZpdHNCZWxvdyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoaXMucm9vdFdpbmRvdy5p''@;'; put 'put ''bm5lckhlaWdodDtyZXR1cm4gdGhpcy50b3BSZWxhdGl2ZStoLm9mZnNldEhlaWdodDw9dn19LHtrZXk6ImZpdHNPblJpZ2h0Iix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5yb290V2lu''@;'; put 'put ''ZG93LmlubmVyV2lkdGg7cmV0dXJuIHRoaXMubGVmdFJlbGF0aXZlK3RoaXMuY2VsbFdpZHRoK2gub2Zmc2V0V2lkdGg8PXZ9fSx7a2V5OiJmaXRzT25MZWZ0Iix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5sZWZ0UmVsYXRpdmU+PWgub2Zmc2V0V2lkdGh9fV0pLGR9KCk7Y29uc3Qg''@;'; put 'put ''RWF0PU1hdDtmdW5jdGlvbiBHRWUoZCxnKXt2YXIgaD1PYmplY3Qua2V5cyhkKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgdj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGQpO2cmJih2PXYuZmlsdGVyKGZ1bmN0aW9uKHkpe3JldHVybiBPYmplY3QuZ2V0T3du''@;'; put 'put ''UHJvcGVydHlEZXNjcmlwdG9yKGQseSkuZW51bWVyYWJsZX0pKSxoLnB1c2guYXBwbHkoaCx2KX1yZXR1cm4gaH1mdW5jdGlvbiBXRWUoZCl7Zm9yKHZhciBnPTE7Zzxhcmd1bWVudHMubGVuZ3RoO2crKyl7dmFyIGg9bnVsbCE9YXJndW1lbnRzW2ddP2FyZ3VtZW50c1tnXTp7fTtnJTI/R0Vl''@;'; put 'put ''KE9iamVjdChoKSwhMCkuZm9yRWFjaChmdW5jdGlvbih2KXt4YXQoZCx2LGhbdl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhoKSk6R0VlKE9iamVjdChoKSkuZm9y''@;'; put 'put ''RWFjaChmdW5jdGlvbih2KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaCx2KSl9KX1yZXR1cm4gZH1mdW5jdGlvbiB4YXQoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVt''@;'; put 'put ''ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfWZ1bmN0aW9uIFlFZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2''@;'; put 'put ''JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBKRWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCl7KGZ1bmN0aW9uIFRhdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xh''@;'; put 'put ''c3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLmhvdD1nLHRoaXMub3B0aW9ucz1ofHx7cGFyZW50Om51bGwsbmFtZTpudWxsLGNsYXNzTmFtZToiIixrZWVwSW5WaWV3cG9ydDohMCxzdGFuZGFsb25lOiExLG1pbldpZHRoOjIxNSxjb250YWluZXI6dGhpcy5ob3Qucm9vdERvY3Vt''@;'; put 'put ''ZW50LmRvY3VtZW50RWxlbWVudH0sdGhpcy5ldmVudE1hbmFnZXI9bmV3IEwxKHRoaXMpLHRoaXMuY29udGFpbmVyPXRoaXMuY3JlYXRlQ29udGFpbmVyKHRoaXMub3B0aW9ucy5uYW1lKSx0aGlzLmhvdE1lbnU9bnVsbCx0aGlzLmhvdFN1Yk1lbnVzPXt9LHRoaXMucGFyZW50TWVudT10aGlz''@;'; put 'put ''Lm9wdGlvbnMucGFyZW50fHxudWxsLHRoaXMubWVudUl0ZW1zPW51bGwsdGhpcy5vcmlnT3V0c2lkZUNsaWNrRGVzZWxlY3RzPW51bGwsdGhpcy5rZXlFdmVudD0hMSx0aGlzLm9mZnNldD17YWJvdmU6MCxiZWxvdzowLGxlZnQ6MCxyaWdodDowfSx0aGlzLl9hZnRlclNjcm9sbENhbGxiYWNr''@;'; put 'put ''PW51bGwsdGhpcy5yZWdpc3RlckV2ZW50cygpfXJldHVybiBmdW5jdGlvbiBJYXQoZCxnLGgpe2cmJllFZShkLnByb3RvdHlwZSxnKSxoJiZZRWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToicmVnaXN0ZXJFdmVudHMi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBoPXRoaXMsdj10aGlzLmhvdC5yb290V2luZG93O3Y7KXRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodi5kb2N1bWVudCwibW91c2Vkb3duIixmdW5jdGlvbih5KXtyZXR1cm4gaC5vbkRvY3VtZW50TW91c2VEb3duKHkpfSksdGhp''@;'; put 'put ''cy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih2LmRvY3VtZW50LCJjb250ZXh0bWVudSIsZnVuY3Rpb24oeSl7cmV0dXJuIGgub25Eb2N1bWVudENvbnRleHRNZW51KHkpfSksdj11M2Uodil9fSx7a2V5OiJzZXRNZW51SXRlbXMiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMubWVudUl0''@;'; put 'put ''ZW1zPWh9fSx7a2V5OiJnZXRTZWxlY3RlZEl0ZW0iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFzU2VsZWN0ZWRJdGVtKCk/dGhpcy5ob3RNZW51LmdldFNvdXJjZURhdGFBdFJvdyh0aGlzLmhvdE1lbnUuZ2V0U2VsZWN0ZWRMYXN0KClbMF0pOm51bGx9fSx7a2V5OiJoYXNTZWxl''@;'; put 'put ''Y3RlZEl0ZW0iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5ob3RNZW51LmdldFNlbGVjdGVkTGFzdCgpKX19LHtrZXk6InNldE9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/''@;'; put 'put ''YXJndW1lbnRzWzFdOjA7dGhpcy5vZmZzZXRbaF09dn19LHtrZXk6ImlzU3ViTWVudSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PXRoaXMucGFyZW50TWVudX19LHtrZXk6Im9wZW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpczt0aGlzLnJ1bkxvY2FsSG9va3MoImJlZm9y''@;'; put 'put ''ZU9wZW4iKSx0aGlzLmNvbnRhaW5lci5yZW1vdmVBdHRyaWJ1dGUoInN0eWxlIiksdGhpcy5jb250YWluZXIuc3R5bGUuZGlzcGxheT0iYmxvY2siO3ZhciB2PXczZShmdW5jdGlvbihwdCl7cmV0dXJuIGgub3BlblN1Yk1lbnUocHQpfSwzMDApLHk9dGhpcy5vcHRpb25zLm1pbldpZHRofHwy''@;'; put 'put ''MTUsQz0hMSxJPWc0KHRoaXMubWVudUl0ZW1zLGZ1bmN0aW9uKHB0KXtyZXR1cm4gcHQua2V5PT09YnomJihDPSEwKSxmdW5jdGlvbiBJb3QoZCxnKXtyZXR1cm4hZC5oaWRkZW58fCEoImZ1bmN0aW9uIj09dHlwZW9mIGQuaGlkZGVuJiZkLmhpZGRlbi5jYWxsKGcpKX0ocHQsaC5ob3QpfSk7''@;'; put 'put ''aWYoSS5sZW5ndGg8MSYmIUMpSS5wdXNoKFZFZSgpW2J6XSk7ZWxzZSBpZigwPT09SS5sZW5ndGgpcmV0dXJuO0k9ZnVuY3Rpb24gT290KGQpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpXbCxoPWQuc2xpY2UoMCk7cmV0dXJu''@;'; put 'put ''IExvdChoPURvdChoPXhFZShoLGcpLGcpKX0oSSxXbCk7dmFyIFo9ITEsdWU9e2RhdGE6SSxjb2xIZWFkZXJzOiExLGF1dG9Db2x1bW5TaXplOiEwLGF1dG9XcmFwUm93OiExLG1vZGlmeUNvbFdpZHRoOmZ1bmN0aW9uKE90KXtyZXR1cm4gVG8oT3QpJiZPdDx5P3k6T3R9LGF1dG9Sb3dTaXpl''@;'; put 'put ''OiExLHJlYWRPbmx5OiEwLGVkaXRvcjohMSxjb3B5UGFzdGU6ITEsbWF4Q29sczoxLGNvbHVtbnM6W3tkYXRhOiJuYW1lIixyZW5kZXJlcjpmdW5jdGlvbihPdCwkdCxmbixMbixpcixtcil7cmV0dXJuIGgubWVudUl0ZW1SZW5kZXJlcihPdCwkdCxmbixMbixpcixtcil9fV0scmVuZGVyQWxs''@;'; put 'put ''Um93czohMCxmcmFnbWVudFNlbGVjdGlvbjohMSxvdXRzaWRlQ2xpY2tEZXNlbGVjdHM6ITEsZGlzYWJsZVZpc3VhbFNlbGVjdGlvbjoiYXJlYSIsbGF5b3V0RGlyZWN0aW9uOnRoaXMuaG90LmlzUnRsKCk/InJ0bCI6Imx0ciIsYWZ0ZXJPbkNlbGxNb3VzZU92ZXI6ZnVuY3Rpb24oT3QsJHQp''@;'; put 'put ''e2guaXNBbGxTdWJNZW51c0Nsb3NlZCgpP3YoJHQucm93KTpoLm9wZW5TdWJNZW51KCR0LnJvdyl9LHJvd0hlaWdodHM6ZnVuY3Rpb24oT3Qpe3JldHVybiBJW090XS5uYW1lPT09V2w/MToyM30sYWZ0ZXJPbkNlbGxDb250ZXh0TWVudTpmdW5jdGlvbihPdCl7T3QucHJldmVudERlZmF1bHQo''@;'; put 'put ''KSx0M2UoKSYmWiYmaC5oYXNTZWxlY3RlZEl0ZW0oKSYmaC5jbG9zZSghMCl9LGJlZm9yZU9uQ2VsbE1vdXNlVXA6ZnVuY3Rpb24oT3Qpe2guaGFzU2VsZWN0ZWRJdGVtKCkmJihaPSFoLmlzQ29tbWFuZFBhc3NpdmUoaC5nZXRTZWxlY3RlZEl0ZW0oKSksaC5leGVjdXRlQ29tbWFuZChPdCkp''@;'; put 'put ''fSxhZnRlck9uQ2VsbE1vdXNlVXA6ZnVuY3Rpb24oT3QpeyghdDNlKCl8fCFFdyhPdCkpJiZaJiZoLmhhc1NlbGVjdGVkSXRlbSgpJiYoYjgoKXx8ZTNlKCk/c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBoLmNsb3NlKCEwKX0sMzI1KTpoLmNsb3NlKCEwKSl9LGFmdGVyVW5saXN0ZW46''@;'; put 'put ''ZnVuY3Rpb24oKXshaC5oYXNTZWxlY3RlZEl0ZW0oKSYmaC5pc09wZW5lZCgpJiZoLmhvdE1lbnUubGlzdGVuKCl9fTt0aGlzLm9yaWdPdXRzaWRlQ2xpY2tEZXNlbGVjdHM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5vdXRzaWRlQ2xpY2tEZXNlbGVjdHMsdGhpcy5ob3QuZ2V0U2V0dGluZ3Mo''@;'; put 'put ''KS5vdXRzaWRlQ2xpY2tEZXNlbGVjdHM9ITEsdGhpcy5ob3RNZW51PW5ldyBhNmUodGhpcy5jb250YWluZXIsdWUpLHRoaXMuaG90TWVudS5hZGRIb29rKCJhZnRlckluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGgub25BZnRlckluaXQoKX0pLHRoaXMuaG90TWVudS5hZGRIb29rKCJhZnRlclNl''@;'; put 'put ''bGVjdGlvbiIsZnVuY3Rpb24oKXtyZXR1cm4gaC5vbkFmdGVyU2VsZWN0aW9uLmFwcGx5KGgsYXJndW1lbnRzKX0pLHRoaXMuaG90TWVudS5pbml0KCksdGhpcy5ob3RNZW51Lmxpc3RlbigpO3ZhciBfZT10aGlzLmhvdE1lbnUuZ2V0U2hvcnRjdXRNYW5hZ2VyKCksQmU9X2UuYWRkQ29udGV4''@;'; put 'put ''dCgibWVudSIpLEtlPVdFZShXRWUoe30se2dyb3VwOiJtZW51In0pLHt9LHtydW5Pbmx5SWY6ZnVuY3Rpb24oT3Qpe3JldHVybiExPT09WlooT3QudGFyZ2V0KXx8ITE9PT1oLmNvbnRhaW5lci5jb250YWlucyhPdC50YXJnZXQpfX0pO19lLnNldEFjdGl2ZUNvbnRleHROYW1lKCJtZW51Iiks''@;'; put 'put ''QmUuYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJFc2NhcGUiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtoLmtleUV2ZW50PSEwLGguY2xvc2UoKSxoLmtleUV2ZW50PSExfX0se2tleXM6W1siQXJyb3dEb3duIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIE90PWguaG90TWVudS5nZXRTZWxlY3Rl''@;'; put 'put ''ZExhc3QoKTtoLmtleUV2ZW50PSEwLE90P2guc2VsZWN0TmV4dENlbGwoT3RbMF0sT3RbMV0pOmguc2VsZWN0Rmlyc3RDZWxsKCksaC5rZXlFdmVudD0hMX19LHtrZXlzOltbIkFycm93VXAiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgT3Q9aC5ob3RNZW51LmdldFNlbGVjdGVkTGFzdCgp''@;'; put 'put ''O2gua2V5RXZlbnQ9ITAsT3Q/aC5zZWxlY3RQcmV2Q2VsbChPdFswXSxPdFsxXSk6aC5zZWxlY3RMYXN0Q2VsbCgpLGgua2V5RXZlbnQ9ITF9fSx7a2V5czpbWyJBcnJvd1JpZ2h0Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIE90PWguaG90TWVudS5nZXRTZWxlY3RlZExhc3QoKTtpZiho''@;'; put 'put ''LmtleUV2ZW50PSEwLE90KXt2YXIgJHQ9aC5vcGVuU3ViTWVudShPdFswXSk7JHQmJiR0LnNlbGVjdEZpcnN0Q2VsbCgpfWgua2V5RXZlbnQ9ITF9fSx7a2V5czpbWyJBcnJvd0xlZnQiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgT3Q9aC5ob3RNZW51LmdldFNlbGVjdGVkTGFzdCgpO2gu''@;'; put 'put ''a2V5RXZlbnQ9ITAsT3QmJmguaXNTdWJNZW51KCkmJihoLmNsb3NlKCksaC5wYXJlbnRNZW51JiZoLnBhcmVudE1lbnUuaG90TWVudS5saXN0ZW4oKSksaC5rZXlFdmVudD0hMX19LHtrZXlzOltbIkVudGVyIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKE90KXt2YXIgJHQ9aC5ob3RNZW51LmdldFNl''@;'; put 'put ''bGVjdGVkTGFzdCgpO2gua2V5RXZlbnQ9ITAsaC5ob3RNZW51LmdldFNvdXJjZURhdGFBdFJvdygkdFswXSkuc3VibWVudXx8KGguZXhlY3V0ZUNvbW1hbmQoT3QpLGguY2xvc2UoITApKSxoLmtleUV2ZW50PSExfX0se2tleXM6W1siUGFnZVVwIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IE90PWguaG90TWVudS5nZXRTZWxlY3RlZExhc3QoKTtoLmtleUV2ZW50PSEwLE90P2guaG90TWVudS5zZWxlY3Rpb24udHJhbnNmb3JtU3RhcnQoLWguaG90TWVudS5jb3VudFZpc2libGVSb3dzKCksMCk6aC5zZWxlY3RGaXJzdENlbGwoKSxoLmtleUV2ZW50PSExfX0se2tleXM6W1siUGFn''@;'; put 'put ''ZURvd24iXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgT3Q9aC5ob3RNZW51LmdldFNlbGVjdGVkTGFzdCgpO2gua2V5RXZlbnQ9ITAsT3Q/aC5ob3RNZW51LnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydChoLmhvdE1lbnUuY291bnRWaXNpYmxlUm93cygpLDApOmguc2VsZWN0TGFzdENlbGwo''@;'; put 'put ''KSxoLmtleUV2ZW50PSExfX1dLEtlKSx0aGlzLmJsb2NrTWFpblRhYmxlQ2FsbGJhY2tzKCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlck9wZW4iKX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBd''@;'; put 'put ''JiZhcmd1bWVudHNbMF07IXRoaXMuaXNPcGVuZWQoKXx8KGgmJnRoaXMucGFyZW50TWVudT90aGlzLnBhcmVudE1lbnUuY2xvc2UoKToodGhpcy5jbG9zZUFsbFN1Yk1lbnVzKCksdGhpcy5jb250YWluZXIuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5yZWxlYXNlTWFpblRhYmxlQ2FsbGJh''@;'; put 'put ''Y2tzKCksdGhpcy5ob3RNZW51LmRlc3Ryb3koKSx0aGlzLmhvdE1lbnU9bnVsbCx0aGlzLmhvdC5nZXRTZXR0aW5ncygpLm91dHNpZGVDbGlja0Rlc2VsZWN0cz10aGlzLm9yaWdPdXRzaWRlQ2xpY2tEZXNlbGVjdHMsdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlckNsb3NlIiksdGhpcy5wYXJl''@;'; put 'put ''bnRNZW51JiZ0aGlzLnBhcmVudE1lbnUuaG90TWVudS5saXN0ZW4oKSkpfX0se2tleToib3BlblN1Yk1lbnUiLHZhbHVlOmZ1bmN0aW9uKGgpe2lmKCF0aGlzLmhvdE1lbnUpcmV0dXJuITE7dmFyIHY9dGhpcy5ob3RNZW51LmdldENlbGwoaCwwKTtpZih0aGlzLmNsb3NlQWxsU3ViTWVudXMo''@;'; put 'put ''KSwhdnx8IWZ1bmN0aW9uIE1vdChkKXtyZXR1cm4gdGwoZCwiaHRTdWJtZW51Iil9KHYpKXJldHVybiExO3ZhciB5PXRoaXMuaG90TWVudS5nZXRTb3VyY2VEYXRhQXRSb3coaCksQz1uZXcgZCh0aGlzLmhvdCx7cGFyZW50OnRoaXMsbmFtZTp5Lm5hbWUsY2xhc3NOYW1lOnRoaXMub3B0aW9u''@;'; put 'put ''cy5jbGFzc05hbWUsa2VlcEluVmlld3BvcnQ6ITAsY29udGFpbmVyOnRoaXMub3B0aW9ucy5jb250YWluZXJ9KTtyZXR1cm4gQy5zZXRNZW51SXRlbXMoeS5zdWJtZW51Lml0ZW1zKSxDLm9wZW4oKSxDLnNldFBvc2l0aW9uKHYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLHRoaXMuaG90U3Vi''@;'; put 'put ''TWVudXNbeS5rZXldPUMsQ319LHtrZXk6ImNsb3NlU3ViTWVudSIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy5ob3RNZW51LmdldFNvdXJjZURhdGFBdFJvdyhoKSx5PXRoaXMuaG90U3ViTWVudXNbdi5rZXldO3kmJih5LmRlc3Ryb3koKSxkZWxldGUgdGhpcy5ob3RTdWJNZW51c1t2''@;'; put 'put ''LmtleV0pfX0se2tleToiY2xvc2VBbGxTdWJNZW51cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzO1VyKHRoaXMuaG90TWVudS5nZXREYXRhKCksZnVuY3Rpb24odix5KXtyZXR1cm4gaC5jbG9zZVN1Yk1lbnUoeSl9KX19LHtrZXk6ImlzQWxsU3ViTWVudXNDbG9zZWQiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIDA9PT1PYmplY3Qua2V5cyh0aGlzLmhvdFN1Yk1lbnVzKS5sZW5ndGh9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuY29udGFpbmVyLnBhcmVudE5vZGU7dGhpcy5jbGVhckxvY2FsSG9va3MoKSx0aGlzLmNsb3NlKCksdGhpcy5w''@;'; put 'put ''YXJlbnRNZW51PW51bGwsdGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveSgpLGgmJmgucmVtb3ZlQ2hpbGQodGhpcy5jb250YWluZXIpfX0se2tleToiaXNPcGVuZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlzLmhvdE1lbnV9fSx7a2V5OiJleGVjdXRlQ29tbWFuZCIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oaCl7aWYodGhpcy5pc09wZW5lZCgpJiZ0aGlzLmhhc1NlbGVjdGVkSXRlbSgpKXt2YXIgdj10aGlzLmdldFNlbGVjdGVkSXRlbSgpO2lmKHRoaXMucnVuTG9jYWxIb29rcygic2VsZWN0Iix2LGgpLCF0aGlzLmlzQ29tbWFuZFBhc3NpdmUodikpe3ZhciB5PXRoaXMuaG90''@;'; put 'put ''LmdldFNlbGVjdGVkUmFuZ2UoKSxDPXk/ZnVuY3Rpb24gU290KGQpe3JldHVybiBPbChkLGZ1bmN0aW9uKGcpe3JldHVybntzdGFydDpnLmdldFRvcFN0YXJ0Q29ybmVyKCksZW5kOmcuZ2V0Qm90dG9tRW5kQ29ybmVyKCl9fSl9KHkpOltdO3RoaXMucnVuTG9jYWxIb29rcygiZXhlY3V0ZUNv''@;'; put 'put ''bW1hbmQiLHYua2V5LEMsaCksdGhpcy5pc1N1Yk1lbnUoKSYmdGhpcy5wYXJlbnRNZW51LnJ1bkxvY2FsSG9va3MoImV4ZWN1dGVDb21tYW5kIix2LmtleSxDLGgpfX19fSx7a2V5OiJpc0NvbW1hbmRQYXNzaXZlIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1oLmlzQ29tbWFuZCx5PWgubmFt''@;'; put 'put ''ZSxDPWguZGlzYWJsZWQsST1oLnN1Ym1lbnUsWj0hMD09PUN8fCJmdW5jdGlvbiI9PXR5cGVvZiBDJiYhMD09PUMuY2FsbCh0aGlzLmhvdCk7cmV0dXJuITE9PT12fHx5PT09V2x8fCEwPT09Wnx8SX19LHtrZXk6InNldFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj1uZXcgRWF0''@;'; put 'put ''KGgsdGhpcy5jb250YWluZXIub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldyk7dGhpcy5vcHRpb25zLmtlZXBJblZpZXdwb3J0Pyh2LmZpdHNCZWxvdyh0aGlzLmNvbnRhaW5lcik/dGhpcy5zZXRQb3NpdGlvbkJlbG93Q3Vyc29yKHYpOnYuZml0c0Fib3ZlKHRoaXMuY29udGFpbmVyKT90aGlz''@;'; put 'put ''LnNldFBvc2l0aW9uQWJvdmVDdXJzb3Iodik6dGhpcy5zZXRQb3NpdGlvbkJlbG93Q3Vyc29yKHYpLHRoaXMuaG90LmlzTHRyKCk/dGhpcy5zZXRIb3Jpem9udGFsUG9zaXRpb25Gb3JMdHIodik6dGhpcy5zZXRIb3Jpem9udGFsUG9zaXRpb25Gb3JSdGwodikpOih0aGlzLnNldFBvc2l0aW9u''@;'; put 'put ''QmVsb3dDdXJzb3IodiksdGhpcy5zZXRQb3NpdGlvbk9uUmlnaHRPZkN1cnNvcih2KSl9fSx7a2V5OiJzZXRIb3Jpem9udGFsUG9zaXRpb25Gb3JSdGwiLHZhbHVlOmZ1bmN0aW9uKGgpe2guZml0c09uTGVmdCh0aGlzLmNvbnRhaW5lcik/dGhpcy5zZXRQb3NpdGlvbk9uTGVmdE9mQ3Vyc29y''@;'; put 'put ''KGgpOnRoaXMuc2V0UG9zaXRpb25PblJpZ2h0T2ZDdXJzb3IoaCl9fSx7a2V5OiJzZXRIb3Jpem9udGFsUG9zaXRpb25Gb3JMdHIiLHZhbHVlOmZ1bmN0aW9uKGgpe2guZml0c09uUmlnaHQodGhpcy5jb250YWluZXIpP3RoaXMuc2V0UG9zaXRpb25PblJpZ2h0T2ZDdXJzb3IoaCk6dGhpcy5z''@;'; put 'put ''ZXRQb3NpdGlvbk9uTGVmdE9mQ3Vyc29yKGgpfX0se2tleToic2V0UG9zaXRpb25BYm92ZUN1cnNvciIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy5vZmZzZXQuYWJvdmUraC50b3AtdGhpcy5jb250YWluZXIub2Zmc2V0SGVpZ2h0O3RoaXMuaXNTdWJNZW51KCkmJih2PWgudG9wK2gu''@;'; put 'put ''Y2VsbEhlaWdodC10aGlzLmNvbnRhaW5lci5vZmZzZXRIZWlnaHQrMyksdGhpcy5jb250YWluZXIuc3R5bGUudG9wPSIiLmNvbmNhdCh2LCJweCIpfX0se2tleToic2V0UG9zaXRpb25CZWxvd0N1cnNvciIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy5vZmZzZXQuYmVsb3craC50b3Ar''@;'; put 'put ''MTt0aGlzLmlzU3ViTWVudSgpJiYodj1oLnRvcC0xKSx0aGlzLmNvbnRhaW5lci5zdHlsZS50b3A9IiIuY29uY2F0KHYsInB4Iil9fSx7a2V5OiJzZXRQb3NpdGlvbk9uUmlnaHRPZkN1cnNvciIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9aC5sZWZ0O2lmKHRoaXMuaXNTdWJNZW51KCkpe3Zh''@;'; put 'put ''ciB5PXRoaXMucGFyZW50TWVudS5jb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dis9aC5jZWxsV2lkdGgreS5yaWdodC0oaC5sZWZ0K2guY2VsbFdpZHRoKX1lbHNlIHYrPXRoaXMub2Zmc2V0LnJpZ2h0O3RoaXMuY29udGFpbmVyLnN0eWxlLmxlZnQ9IiIuY29uY2F0KHYsInB4''@;'; put 'put ''Iil9fSx7a2V5OiJzZXRQb3NpdGlvbk9uTGVmdE9mQ3Vyc29yIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzLm9mZnNldC5sZWZ0K2gubGVmdC10aGlzLmNvbnRhaW5lci5vZmZzZXRXaWR0aDtpZih0aGlzLmlzU3ViTWVudSgpKXt2YXIgeT10aGlzLnBhcmVudE1lbnUuY29udGFpbmVy''@;'; put 'put ''LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3YtPWgubGVmdC15LmxlZnR9dGhpcy5jb250YWluZXIuc3R5bGUubGVmdD0iIi5jb25jYXQodiwicHgiKX19LHtrZXk6InNlbGVjdEZpcnN0Q2VsbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmhvdE1lbnUuZ2V0Q2VsbCgwLDApO090ZSho''@;'; put 'put ''KXx8UnRlKGgpfHxCdGUoaCk/dGhpcy5zZWxlY3ROZXh0Q2VsbCgwLDApOnRoaXMuaG90TWVudS5zZWxlY3RDZWxsKDAsMCl9fSx7a2V5OiJzZWxlY3RMYXN0Q2VsbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmhvdE1lbnUuY291bnRSb3dzKCktMSx2PXRoaXMuaG90TWVudS5nZXRD''@;'; put 'put ''ZWxsKGgsMCk7T3RlKHYpfHxSdGUodil8fEJ0ZSh2KT90aGlzLnNlbGVjdFByZXZDZWxsKGgsMCk6KHRoaXMuaG90TWVudS5zZWxlY3RDZWxsKGgsMCx2b2lkIDAsdm9pZCAwLCExKSx0aGlzLmhvdE1lbnUuc2Nyb2xsVmlld3BvcnRUbyhoLDAsITAsITEpKX19LHtrZXk6InNlbGVjdE5leHRD''@;'; put 'put ''ZWxsIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PWgrMSxDPXk8dGhpcy5ob3RNZW51LmNvdW50Um93cygpP3RoaXMuaG90TWVudS5nZXRDZWxsKHksdik6bnVsbDshQ3x8KE90ZShDKXx8UnRlKEMpfHxCdGUoQyk/dGhpcy5zZWxlY3ROZXh0Q2VsbCh5LHYpOnRoaXMuaG90TWVudS5zZWxl''@;'; put 'put ''Y3RDZWxsKHksdikpfX0se2tleToic2VsZWN0UHJldkNlbGwiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9aC0xLEM9eT49MD90aGlzLmhvdE1lbnUuZ2V0Q2VsbCh5LHYpOm51bGw7IUN8fChPdGUoQyl8fFJ0ZShDKXx8QnRlKEMpP3RoaXMuc2VsZWN0UHJldkNlbGwoeSx2KTp0aGlzLmhv''@;'; put 'put ''dE1lbnUuc2VsZWN0Q2VsbCh5LHYpKX19LHtrZXk6Im1lbnVJdGVtUmVuZGVyZXIiLHZhbHVlOmZ1bmN0aW9uKGgsdix5LEMsSSxaKXt2YXIgTG4sdWU9dGhpcyxfZT1oLmdldFNvdXJjZURhdGFBdFJvdyh5KSxCZT10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iiks''@;'; put 'put ''T3Q9ZnVuY3Rpb24oTG4pe3JldHVybiBMbi5kaXNhYmxlU2VsZWN0aW9ufSwkdD1aOyJmdW5jdGlvbiI9PXR5cGVvZiAkdCYmKCR0PSR0LmNhbGwodGhpcy5ob3QpKSxEcCh2KSxPMChCZSwiaHRJdGVtV3JhcHBlciIpLHYuYXBwZW5kQ2hpbGQoQmUpLExuPV9lLG5ldyBSZWdFeHAoV2wsImki''@;'; put 'put ''KS50ZXN0KExuLm5hbWUpP08wKHYsImh0U2VwYXJhdG9yIik6ImZ1bmN0aW9uIj09dHlwZW9mIF9lLnJlbmRlcmVyPyhPMCh2LCJodEN1c3RvbU1lbnVSZW5kZXJlciIpLHYuYXBwZW5kQ2hpbGQoX2UucmVuZGVyZXIoaCxCZSx5LEMsSSwkdCkpKTprdyhCZSwkdCksZnVuY3Rpb24oTG4pe3Jl''@;'; put 'put ''dHVybiEwPT09TG4uZGlzYWJsZWR8fCJmdW5jdGlvbiI9PXR5cGVvZiBMbi5kaXNhYmxlZCYmITA9PT1Mbi5kaXNhYmxlZC5jYWxsKHVlLmhvdCl9KF9lKT8oTzAodiwiaHREaXNhYmxlZCIpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodiwibW91c2VlbnRlciIsZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gaC5kZXNlbGVjdENlbGwoKX0pKTpPdChfZSk/KE8wKHYsImh0U2VsZWN0aW9uRGlzYWJsZWQiKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHYsIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGguZGVzZWxlY3RDZWxsKCl9KSk6ZnVuY3Rpb24o''@;'; put 'put ''TG4pe3JldHVybiBvMShMbiwic3VibWVudSIpfShfZSk/KE8wKHYsImh0U3VibWVudSIpLE90KF9lKT90aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHYsIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGguZGVzZWxlY3RDZWxsKCl9KTp0aGlzLmV2ZW50TWFuYWdlci5h''@;'; put 'put ''ZGRFdmVudExpc3RlbmVyKHYsIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGguc2VsZWN0Q2VsbCh5LEMsdm9pZCAwLHZvaWQgMCwhMSwhMSl9KSk6KHBsKHYsWyJodFN1Ym1lbnUiLCJodERpc2FibGVkIl0pLE90KF9lKT90aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVy''@;'; put 'put ''KHYsIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGguZGVzZWxlY3RDZWxsKCl9KTp0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHYsIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGguc2VsZWN0Q2VsbCh5LEMsdm9pZCAwLHZvaWQgMCwhMSwhMSl9KSl9fSx7''@;'; put 'put ''a2V5OiJjcmVhdGVDb250YWluZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEMsaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbCx2PXRoaXMub3B0aW9ucy5jb250YWluZXIub3duZXJEb2N1bWVudCx5PWg7cmV0dXJuIHkmJihVMih5''@;'; put 'put ''KSYmKHk9bnVsbD09PSh5PXkuY2FsbCh0aGlzLmhvdCkpfHxhMSh5KT8iIjp5LnRvU3RyaW5nKCkpLHk9eS5yZXBsYWNlKC9bXkEtejAtOV0vZywiXyIpLHk9IiIuY29uY2F0KHRoaXMub3B0aW9ucy5jbGFzc05hbWUsIlN1Yl8iKS5jb25jYXQoeSksQz12LnF1ZXJ5U2VsZWN0b3IoIi4iLmNv''@;'; put 'put ''bmNhdCh0aGlzLm9wdGlvbnMuY2xhc3NOYW1lLCIuIikuY29uY2F0KHkpKSksQ3x8KE8wKEM9di5jcmVhdGVFbGVtZW50KCJkaXYiKSwiaHRNZW51ICIuY29uY2F0KHRoaXMub3B0aW9ucy5jbGFzc05hbWUpKSx5JiZPMChDLHkpLHRoaXMub3B0aW9ucy5jb250YWluZXIuYXBwZW5kQ2hpbGQo''@;'; put 'put ''QykpLEN9fSx7a2V5OiJibG9ja01haW5UYWJsZUNhbGxiYWNrcyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9hZnRlclNjcm9sbENhbGxiYWNrPWZ1bmN0aW9uKCl7fSx0aGlzLmhvdC5hZGRIb29rKCJhZnRlclNjcm9sbFZlcnRpY2FsbHkiLHRoaXMuX2FmdGVyU2Nyb2xsQ2FsbGJhY2spLHRo''@;'; put 'put ''aXMuaG90LmFkZEhvb2soImFmdGVyU2Nyb2xsSG9yaXpvbnRhbGx5Iix0aGlzLl9hZnRlclNjcm9sbENhbGxiYWNrKX19LHtrZXk6InJlbGVhc2VNYWluVGFibGVDYWxsYmFja3MiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fYWZ0ZXJTY3JvbGxDYWxsYmFjayYmKHRoaXMuaG90LnJlbW92ZUhv''@;'; put 'put ''b2soImFmdGVyU2Nyb2xsVmVydGljYWxseSIsdGhpcy5fYWZ0ZXJTY3JvbGxDYWxsYmFjayksdGhpcy5ob3QucmVtb3ZlSG9vaygiYWZ0ZXJTY3JvbGxIb3Jpem9udGFsbHkiLHRoaXMuX2FmdGVyU2Nyb2xsQ2FsbGJhY2spLHRoaXMuX2FmdGVyU2Nyb2xsQ2FsbGJhY2s9bnVsbCl9fSx7a2V5''@;'; put 'put ''OiJvbkFmdGVySW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmhvdE1lbnUudmlldy5fd3Qud3RUYWJsZSx2PXRoaXMuaG90TWVudS5nZXRTZXR0aW5ncygpLmRhdGEseT1oLmhpZGVyLnN0eWxlLEM9aC5ob2xkZXIuc3R5bGUsST1wYXJzZUludCh5LndpZHRoLDEwKSxaPVN1KHYs''@;'; put 'put ''ZnVuY3Rpb24odWUsX2Upe3JldHVybiB1ZSsoX2UubmFtZT09PVdsPzE6MjYpfSwwKTtDLndpZHRoPSIiLmNvbmNhdChJKzMsInB4IiksQy5oZWlnaHQ9IiIuY29uY2F0KForMywicHgiKSx5LmhlaWdodD1DLmhlaWdodH19LHtrZXk6Im9uQWZ0ZXJTZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KGgsdix5LEMsSSl7ITE9PT10aGlzLmtleUV2ZW50JiYoSS52YWx1ZT0hMCl9fSx7a2V5OiJvbkRvY3VtZW50TW91c2VEb3duIix2YWx1ZTpmdW5jdGlvbihoKXshdGhpcy5pc09wZW5lZCgpfHwodGhpcy5vcHRpb25zLnN0YW5kYWxvbmUmJnRoaXMuaG90TWVudSYmIV93KGgudGFyZ2V0LHRo''@;'; put 'put ''aXMuaG90TWVudS5yb290RWxlbWVudCl8fCh0aGlzLmlzQWxsU3ViTWVudXNDbG9zZWQoKXx8dGhpcy5pc1N1Yk1lbnUoKSkmJiFfdyhoLnRhcmdldCwiLmh0TWVudSIpKSYmdGhpcy5jbG9zZSghMCl9fSx7a2V5OiJvbkRvY3VtZW50Q29udGV4dE1lbnUiLHZhbHVlOmZ1bmN0aW9uKGgpeyF0''@;'; put 'put ''aGlzLmlzT3BlbmVkKCl8fHRsKGgudGFyZ2V0LCJodENvcmUiKSYmX3coaC50YXJnZXQsdGhpcy5ob3RNZW51LnJvb3RFbGVtZW50KSYmaC5wcmV2ZW50RGVmYXVsdCgpfX1dKSxkfSgpO0IyKEpFZSx1ZCk7Y29uc3QgeDhlPUpFZTtmdW5jdGlvbiBUOGUoZCl7cmV0dXJuKFQ4ZT0iZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9s''@;'; put 'put ''LnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIFhFZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0h''@;'; put 'put ''MCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGVNKCl7cmV0dXJuIGVNPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1SYXQoZyxoKTtpZih5KXt2YXIgQz1P''@;'; put 'put ''YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LGVNLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBSYXQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093''@;'; put 'put ''blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPUh2KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIEk4ZShkLGcpe3JldHVybihJOGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2''@;'; put 'put ''fSkoZCxnKX1mdW5jdGlvbiBGYXQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1UOGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3Ig''@;'; put 'put ''dW5kZWZpbmVkIik7cmV0dXJuIEtFZShkKX1mdW5jdGlvbiBLRWUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIEh2KGQp''@;'; put 'put ''e3JldHVybihIdj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBHdGU9ImNvbnRleHRNZW51Ijt6by5nZXRTaW5nbGV0b24oKS5y''@;'; put 'put ''ZWdpc3RlcigiYWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIiksem8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZUNvbnRleHRNZW51U2hvdyIpLHpvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckNvbnRleHRNZW51U2hvdyIpLHpvLmdldFNpbmdsZXRvbigpLnJl''@;'; put 'put ''Z2lzdGVyKCJhZnRlckNvbnRleHRNZW51SGlkZSIpLHpvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckNvbnRleHRNZW51RXhlY3V0ZSIpO3ZhciAkRWU9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIEJhdChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZJOGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBQYXQoZCl7dmFyIGc9ZnVuY3Rpb24gSGF0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxl''@;'; put 'put ''Y3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0''@;'; put 'put ''dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9SHYoZCk7aWYoZyl7dmFyIEM9SHYodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIEZhdCh0aGlzLHkpfX0oaCk7''@;'; put 'put ''ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24gTGF0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKHk9Zy5jYWxsKHRoaXMsdikpLmV2ZW50TWFuYWdlcj1u''@;'; put 'put ''ZXcgTDEoS0VlKHkpKSx5LmNvbW1hbmRFeGVjdXRvcj1uZXcgQkVlKHkuaG90KSx5Lml0ZW1zRmFjdG9yeT1udWxsLHkubWVudT1udWxsLHl9cmV0dXJuIGZ1bmN0aW9uIE9hdChkLGcsaCl7ZyYmWEVlKGQucHJvdG90eXBlLGcpLGgmJlhFZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShk''@;'; put 'put ''LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW0d0ZV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztpZighdGhpcy5lbmFi''@;'; put 'put ''bGVkKXt2YXIgQz10aGlzLmhvdC5nZXRTZXR0aW5ncygpW0d0ZV07ImZ1bmN0aW9uIj09dHlwZW9mIEMuY2FsbGJhY2smJnRoaXMuY29tbWFuZEV4ZWN1dG9yLnNldENvbW1vbkNhbGxiYWNrKEMuY2FsbGJhY2spLHRoaXMubWVudT1uZXcgeDhlKHRoaXMuaG90LHtjbGFzc05hbWU6Imh0Q29u''@;'; put 'put ''dGV4dE1lbnUiLGtlZXBJblZpZXdwb3J0OiEwLGNvbnRhaW5lcjpDLnVpQ29udGFpbmVyfHx0aGlzLmhvdC5yb290RG9jdW1lbnQuYm9keX0pLHRoaXMubWVudS5hZGRMb2NhbEhvb2soImJlZm9yZU9wZW4iLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25NZW51QmVmb3JlT3BlbigpfSksdGhpcy5t''@;'; put 'put ''ZW51LmFkZExvY2FsSG9vaygiYWZ0ZXJPcGVuIixmdW5jdGlvbigpe3JldHVybiB5Lm9uTWVudUFmdGVyT3BlbigpfSksdGhpcy5tZW51LmFkZExvY2FsSG9vaygiYWZ0ZXJDbG9zZSIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbk1lbnVBZnRlckNsb3NlKCl9KSx0aGlzLm1lbnUuYWRkTG9jYWxI''@;'; put 'put ''b29rKCJleGVjdXRlQ29tbWFuZCIsZnVuY3Rpb24oKXtmb3IodmFyIEksWj1hcmd1bWVudHMubGVuZ3RoLHVlPW5ldyBBcnJheShaKSxfZT0wO19lPFo7X2UrKyl1ZVtfZV09YXJndW1lbnRzW19lXTtyZXR1cm4oST15LmV4ZWN1dGVDb21tYW5kKS5jYWxsLmFwcGx5KEksW3ldLmNvbmNhdCh1''@;'; put 'put ''ZSkpfSksdGhpcy5hZGRIb29rKCJhZnRlck9uQ2VsbENvbnRleHRNZW51IixmdW5jdGlvbihJKXtyZXR1cm4geS5vbkFmdGVyT25DZWxsQ29udGV4dE1lbnUoSSl9KSxlTShIdihoLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19fSx7a2V5OiJ1cGRhdGVQbHVn''@;'; put 'put ''aW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSxlTShIdihoLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbG9zZSgp''@;'; put 'put ''LHRoaXMubWVudSYmKHRoaXMubWVudS5kZXN0cm95KCksdGhpcy5tZW51PW51bGwpLGVNKEh2KGgucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6Im9wZW4iLHZhbHVlOmZ1bmN0aW9uKHkpe2lmKHRoaXMubWVudSYmKHRoaXMucHJlcGFyZU1lbnVJ''@;'; put 'put ''dGVtcygpLHRoaXMubWVudS5vcGVuKCksdGhpcy5tZW51LmlzT3BlbmVkKCkpKXt2YXIgQz0wLEk9MDtpZih0aGlzLmhvdC5yb290RG9jdW1lbnQhPT10aGlzLm1lbnUuY29udGFpbmVyLm93bmVyRG9jdW1lbnQpe3ZhciB1ZT10aGlzLmhvdC5yb290V2luZG93LmZyYW1lRWxlbWVudC5nZXRC''@;'; put 'put ''b3VuZGluZ0NsaWVudFJlY3QoKSxCZT11ZS5sZWZ0O0M9dWUudG9wLWZPKHkudmlldyksST1CZS14Uyh5LnZpZXcpfWVsc2UgQz0tMSpmTyh0aGlzLm1lbnUuaG90TWVudS5yb290V2luZG93KSxJPS0xKnhTKHRoaXMubWVudS5ob3RNZW51LnJvb3RXaW5kb3cpO3RoaXMubWVudS5zZXRQb3Np''@;'; put 'put ''dGlvbih7dG9wOnBhcnNlSW50KHkucGFnZVksMTApK0MsbGVmdDpwYXJzZUludCh5LnBhZ2VYLDEwKStJfSl9fX0se2tleToiY2xvc2UiLHZhbHVlOmZ1bmN0aW9uKCl7IXRoaXMubWVudXx8KHRoaXMubWVudS5jbG9zZSgpLHRoaXMuaXRlbXNGYWN0b3J5PW51bGwpfX0se2tleToiZXhlY3V0''@;'; put 'put ''ZUNvbW1hbmQiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDO251bGw9PT10aGlzLml0ZW1zRmFjdG9yeSYmdGhpcy5wcmVwYXJlTWVudUl0ZW1zKCk7Zm9yKHZhciBJPWFyZ3VtZW50cy5sZW5ndGgsWj1uZXcgQXJyYXkoST4xP0ktMTowKSx1ZT0xO3VlPEk7dWUrKylaW3VlLTFdPWFyZ3VtZW50''@;'; put 'put ''c1t1ZV07KEM9dGhpcy5jb21tYW5kRXhlY3V0b3IpLmV4ZWN1dGUuYXBwbHkoQyxbeV0uY29uY2F0KFopKX19LHtrZXk6InByZXBhcmVNZW51SXRlbXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLml0ZW1zRmFjdG9yeT1uZXcgWkVlKHRoaXMuaG90LGguREVGQVVMVF9JVEVN''@;'; put 'put ''Uyk7dmFyIEM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtHdGVdLEk9e2l0ZW1zOnRoaXMuaXRlbXNGYWN0b3J5LmdldEl0ZW1zKEMpfTt0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIixJKSx0aGlzLml0ZW1zRmFjdG9yeS5zZXRQcmVkZWZpbmVkSXRl''@;'; put 'put ''bXMoSS5pdGVtcyk7dmFyIFo9dGhpcy5pdGVtc0ZhY3RvcnkuZ2V0SXRlbXMoQyk7dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvbnRleHRNZW51U2V0SXRlbXMiLFopLHRoaXMubWVudS5zZXRNZW51SXRlbXMoWiksVXIoWixmdW5jdGlvbih1ZSl7cmV0dXJuIHkuY29tbWFuZEV4ZWN1dG9y''@;'; put 'put ''LnJlZ2lzdGVyQ29tbWFuZCh1ZS5rZXksdWUpfSl9fSx7a2V5OiJvbkFmdGVyT25DZWxsQ29udGV4dE1lbnUiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMuaG90LmdldFNldHRpbmdzKCksST1DLnJvd0hlYWRlcnMsWj1DLmNvbEhlYWRlcnMsX2U9eS50YXJnZXQ7dGhpcy5jbG9zZSgp''@;'; put 'put ''LCF0bChfZSwiaGFuZHNvbnRhYmxlSW5wdXQiKSYmKHkucHJldmVudERlZmF1bHQoKSx5LnN0b3BQcm9wYWdhdGlvbigpLChJfHxafHxmdW5jdGlvbiB1ZShCZSl7cmV0dXJuIlREIj09PUJlLm5vZGVOYW1lfHwiVEQiPT09QmUucGFyZW50Tm9kZS5ub2RlTmFtZX0oX2UpfHx0bChfZSwiY3Vy''@;'; put 'put ''cmVudCIpJiZ0bChfZSwid3RCb3JkZXIiKSkmJnRoaXMub3Blbih5KSl9fSx7a2V5OiJvbk1lbnVCZWZvcmVPcGVuIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDb250ZXh0TWVudVNob3ciLHRoaXMpfX0se2tleToib25NZW51QWZ0ZXJPcGVuIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNvbnRleHRNZW51U2hvdyIsdGhpcyl9fSx7a2V5OiJvbk1lbnVBZnRlckNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90Lmxpc3RlbigpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNvbnRleHRNZW51SGlkZSIsdGhpcyl9''@;'; put 'put ''fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2xvc2UoKSx0aGlzLm1lbnUmJnRoaXMubWVudS5kZXN0cm95KCksZU0oSHYoaC5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gR3RlfX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gNzB9fSx7a2V5OiJQTFVHSU5fREVQUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuWyJwbHVnaW46QXV0b0NvbHVtblNpemUiXX19LHtrZXk6IkRFRkFVTFRfSVRFTVMiLGdldDpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybltqdGUsWnRlLFdsLHZ6LEF6LFdsLFZ0ZSx3eixXbCx6dGUsTnRlLFdsLHl6LFdsLFBwXX19XSksaH0oWXMpO2Z1bmN0aW9uIHFFZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJh''@;'; put 'put ''YmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fSRFZS5TRVBBUkFUT1I9e25hbWU6V2x9O3ZhciBHYXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKCl7KGZ1bmN0aW9uIFphdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcp''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLmRhdGE9e319cmV0dXJuIGZ1bmN0aW9uIHphdChkLGcsaCl7ZyYmcUVlKGQucHJvdG90eXBlLGcpLGgmJnFFZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShk''@;'; put 'put ''LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJzZXREYXRhIix2YWx1ZTpmdW5jdGlvbihoLHYpe3RoaXMuZGF0YVtoXT12fX0se2tleToiZ2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuZGF0YVtoXXx8dm9pZCAwfX1dKSxkfSgpO2Z1bmN0aW9uIGV4''@;'; put 'put ''ZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9u''@;'; put 'put ''IFdhdChkLGcsaCl7cmV0dXJuIGcmJmV4ZShkLnByb3RvdHlwZSxnKSxoJiZleGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxkfXZhciBVYXQ9V2F0KGZ1bmN0aW9uIGQoKXsoZnVuY3Rpb24gWWF0KGQsZyl7aWYoIShkIGluc3RhbmNl''@;'; put 'put ''b2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuY2xpcGJvYXJkRGF0YT1uZXcgR2F0fSk7ZnVuY3Rpb24gdHhlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVt''@;'; put 'put ''ZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIEQ4ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7KGZ1bmN0aW9uIFFhdChkLGcpe2lmKCEoZCBp''@;'; put 'put ''bnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLnJvb3REb2N1bWVudD1nLmRlZmF1bHRWaWV3P2c6Zy5vd25lckRvY3VtZW50LHRoaXMubWFpbkVsZW1lbnQ9bnVsbCx0aGlzLmV2ZW50TWFu''@;'; put 'put ''YWdlcj1uZXcgTDEodGhpcyksdGhpcy5saXN0ZW5lcnNDb3VudD1uZXcgV2Vha1NldCx0aGlzLmNvbnRhaW5lcj1nfXJldHVybiBmdW5jdGlvbiBKYXQoZCxnLGgpe2cmJnR4ZShkLnByb3RvdHlwZSxnKSxoJiZ0eGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7''@;'; put 'put ''d3JpdGFibGU6ITF9KX0oZCxbe2tleToidXNlU2Vjb25kYXJ5RWxlbWVudCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD1mdW5jdGlvbiAkYXQoZCl7dmFyIGc9WXRlLmdldChkKTtpZihnKXJldHVybiBnLnBhcmVudEVsZW1lbnR8fGQuYXBwZW5kQ2hpbGQoZyksZzt2YXIgdj0oZC5kZWZhdWx0''@;'; put 'put ''Vmlldz9kOmQub3duZXJEb2N1bWVudCkuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTtyZXR1cm4gWXRlLnNldChkLHYpLHYuc2V0QXR0cmlidXRlKCJkYXRhLWhvdC1pbnB1dCIsIiIpLHYuY2xhc3NOYW1lPSJIYW5kc29udGFibGVDb3B5UGFzdGUiLHYudGFiSW5kZXg9LTEsdi5hdXRvY29t''@;'; put 'put ''cGxldGU9Im9mZiIsdi53cmFwPSJoYXJkIix2LnZhbHVlPSIgIixkLmFwcGVuZENoaWxkKHYpLHZ9KHRoaXMuY29udGFpbmVyKTt0aGlzLmxpc3RlbmVyc0NvdW50LmhhcyhoKXx8KHRoaXMubGlzdGVuZXJzQ291bnQuYWRkKGgpLG54ZSh0aGlzLmV2ZW50TWFuYWdlcixoLHRoaXMpKSx0aGlz''@;'; put 'put ''Lm1haW5FbGVtZW50PWh9fSx7a2V5OiJzZXRGb2N1c2FibGVFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmxpc3RlbmVyc0NvdW50LmhhcyhoKXx8KHRoaXMubGlzdGVuZXJzQ291bnQuYWRkKGgpLG54ZSh0aGlzLmV2ZW50TWFuYWdlcixoLHRoaXMpKSx0aGlzLm1haW5FbGVtZW50''@;'; put 'put ''PWh9fSx7a2V5OiJnZXRGb2N1c2FibGVFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1haW5FbGVtZW50fX0se2tleToiZm9jdXMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tYWluRWxlbWVudC52YWx1ZT0iICIsYjgoKXx8SmJlKHRoaXMubWFpbkVsZW1lbnQpfX1dKSxk''@;'; put 'put ''fSgpO0IyKEQ4ZSx1ZCk7dmFyIFd0ZT1uZXcgV2Vha01hcCxMOGU9ZnVuY3Rpb24oZyxoKXtyZXR1cm4gZnVuY3Rpb24odil7cmV0dXJuIGgucnVuTG9jYWxIb29rcyhnLHYpfX07ZnVuY3Rpb24gbnhlKGQsZyxoKXtkLmFkZEV2ZW50TGlzdGVuZXIoZywiY29weSIsTDhlKCJjb3B5IixoKSks''@;'; put 'put ''ZC5hZGRFdmVudExpc3RlbmVyKGcsImN1dCIsTDhlKCJjdXQiLGgpKSxkLmFkZEV2ZW50TGlzdGVuZXIoZywicGFzdGUiLEw4ZSgicGFzdGUiLGgpKX12YXIgWXRlPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHJ4ZShkKXtpZihkIGluc3RhbmNlb2YgRDhlKXt2YXIgZz1XdGUuZ2V0KGQuY29udGFp''@;'; put 'put ''bmVyKTtpZigoZz1pc05hTihnKT8wOmcpPjAmJihnLT0xKSxmdW5jdGlvbiBLYXQoZCl7ZC5ldmVudE1hbmFnZXIuY2xlYXIoKX0oZCksZzw9MCl7Zz0wO3ZhciBoPVl0ZS5nZXQoZC5jb250YWluZXIpO2gmJmgucGFyZW50Tm9kZSYmKGgucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChoKSxZdGUu''@;'; put 'put ''ZGVsZXRlKGQuY29udGFpbmVyKSksZC5tYWluRWxlbWVudD1udWxsfVd0ZS5zZXQoZC5jb250YWluZXIsZyl9fWZ1bmN0aW9uIGl4ZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3Jl''@;'; put 'put ''dHVybiB2fWZ1bmN0aW9uIFV0ZShkKXtyZXR1cm4oVXRlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBT''@;'; put 'put ''eW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gb3hlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5j''@;'; put 'put ''b25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gdE0oKXtyZXR1cm4gdE09InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVu''@;'; put 'put ''Y3Rpb24oZyxoLHYpe3ZhciB5PWFsdChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sdE0uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0''@;'; put 'put ''aW9uIGFsdChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9TnYoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gTzhlKGQsZyl7cmV0dXJuKE84ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJp''@;'; put 'put ''bmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIHVsdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PVV0ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZl''@;'; put 'put ''ZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gYXhlKGQpfWZ1bmN0aW9uIGF4ZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFz''@;'; put 'put ''bid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gTnYoZCl7cmV0dXJuKE52PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9''@;'; put 'put ''em8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyQ29weUxpbWl0Iiksem8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoIm1vZGlmeUNvcHlhYmxlUmFuZ2UiKSx6by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlQ3V0Iiksem8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFm''@;'; put 'put ''dGVyQ3V0Iiksem8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZVBhc3RlIiksem8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyUGFzdGUiKSx6by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlQ29weSIpLHpvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRl''@;'; put 'put ''ckNvcHkiKTt2YXIgUXRlPSJjb3B5UGFzdGUiLGhsdD1bImZyYWdtZW50U2VsZWN0aW9uIl0sbk09bmV3IFdlYWtNYXAsbHhlPVsnPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJIYW5kc29udGFibGUiLz4nLCc8c3R5bGUgdHlwZT0idGV4dC9jc3MiPnRke3doaXRlLXNwYWNlOm5v''@;'; put 'put ''cm1hbH1icnttc28tZGF0YS1wbGFjZW1lbnQ6c2FtZS1jZWxsfTwvc3R5bGU+J10uam9pbigiIiksZ2x0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBsbHQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBt''@;'; put 'put ''dXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIs''@;'; put 'put ''e3dyaXRhYmxlOiExfSksZyYmTzhlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gc2x0KGQpe3ZhciBnPWZ1bmN0aW9uIGNsdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''eSx2PU52KGQpO2lmKGcpe3ZhciBDPU52KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB1bHQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7cmV0dXJuIGZ1bmN0''@;'; put 'put ''aW9uIGlsdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLCh5PWcuY2FsbCh0aGlzLHYpKS5jb2x1bW5zTGltaXQ9MS8wLHkuY29weWFibGVSYW5nZXM9W10seS5mb2N1c2Fi''@;'; put 'put ''bGVFbGVtZW50PXZvaWQgMCx5LnBhc3RlTW9kZT0ib3ZlcndyaXRlIix5LnJvd3NMaW1pdD0xLzAseS51aUNvbnRhaW5lcj15LmhvdC5yb290RG9jdW1lbnQuYm9keSxuTS5zZXQoYXhlKHkpLHtpc1RyaWdnZXJlZEJ5Q29weTohMSxpc1RyaWdnZXJlZEJ5Q3V0OiExLGlzQmVnaW5FZGl0aW5n''@;'; put 'put ''OiExLGlzRnJhZ21lbnRTZWxlY3Rpb25FbmFibGVkOiExfSkseX1yZXR1cm4gZnVuY3Rpb24gb2x0KGQsZyxoKXtnJiZveGUoZC5wcm90b3R5cGUsZyksaCYmb3hlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImlzRW5h''@;'; put 'put ''YmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbUXRlXX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO2lmKCF0aGlzLmVuYWJsZWQpe3ZhciBDPXRoaXMuaG90LmdldFNldHRpbmdzKCksST1DW1F0ZV0s''@;'; put 'put ''Wj1DLmZyYWdtZW50U2VsZWN0aW9uO25NLmdldCh0aGlzKS5pc0ZyYWdtZW50U2VsZWN0aW9uRW5hYmxlZD0hIVosIm9iamVjdCI9PT1VdGUoSSkmJih0aGlzLnBhc3RlTW9kZT1JLnBhc3RlTW9kZXx8dGhpcy5wYXN0ZU1vZGUsdGhpcy5yb3dzTGltaXQ9aXNOYU4oSS5yb3dzTGltaXQpP3Ro''@;'; put 'put ''aXMucm93c0xpbWl0Okkucm93c0xpbWl0LHRoaXMuY29sdW1uc0xpbWl0PWlzTmFOKEkuY29sdW1uc0xpbWl0KT90aGlzLmNvbHVtbnNMaW1pdDpJLmNvbHVtbnNMaW1pdCx0aGlzLnVpQ29udGFpbmVyPUkudWlDb250YWluZXJ8fHRoaXMudWlDb250YWluZXIpLHRoaXMuYWRkSG9vaygiYWZ0''@;'; put 'put ''ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIixmdW5jdGlvbihfZSl7cmV0dXJuIHkub25BZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMoX2UpfSksdGhpcy5hZGRIb29rKCJhZnRlck9uQ2VsbE1vdXNlVXAiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlck9uQ2VsbE1vdXNlVXAo''@;'; put 'put ''KX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJTZWxlY3Rpb25FbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlclNlbGVjdGlvbkVuZCgpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVLZXlEb3duIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQmVmb3JlS2V5RG93bigpfSksdGhpcy5mb2N1c2FibGVF''@;'; put 'put ''bGVtZW50PWZ1bmN0aW9uIFhhdChkKXt2YXIgZz1uZXcgRDhlKGQpLGg9V3RlLmdldChkKTtyZXR1cm4gaD1pc05hTihoKT8wOmgsV3RlLnNldChkLGgrMSksZ30odGhpcy51aUNvbnRhaW5lciksdGhpcy5mb2N1c2FibGVFbGVtZW50LmFkZExvY2FsSG9vaygiY29weSIsZnVuY3Rpb24oX2Up''@;'; put 'put ''e3JldHVybiB5Lm9uQ29weShfZSl9KS5hZGRMb2NhbEhvb2soImN1dCIsZnVuY3Rpb24oX2Upe3JldHVybiB5Lm9uQ3V0KF9lKX0pLmFkZExvY2FsSG9vaygicGFzdGUiLGZ1bmN0aW9uKF9lKXtyZXR1cm4geS5vblBhc3RlKF9lKX0pLHRNKE52KGgucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2lu''@;'; put 'put ''Iix0aGlzKS5jYWxsKHRoaXMpfX19LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLHRoaXMuZ2V0T3JDcmVhdGVGb2N1c2FibGVFbGVtZW50KCksdE0oTnYoaC5wcm90b3R5cGUpLCJ1cGRhdGVQbHVn''@;'; put 'put ''aW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZm9jdXNhYmxlRWxlbWVudCYmcnhlKHRoaXMuZm9jdXNhYmxlRWxlbWVudCksdE0oTnYoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0s''@;'; put 'put ''e2tleToiY29weSIsdmFsdWU6ZnVuY3Rpb24oKXtuTS5nZXQodGhpcykuaXNUcmlnZ2VyZWRCeUNvcHk9ITAsdGhpcy5nZXRPckNyZWF0ZUZvY3VzYWJsZUVsZW1lbnQoKSx0aGlzLmZvY3VzYWJsZUVsZW1lbnQuZm9jdXMoKSx0aGlzLmhvdC5yb290RG9jdW1lbnQuZXhlY0NvbW1hbmQoImNv''@;'; put 'put ''cHkiKX19LHtrZXk6ImN1dCIsdmFsdWU6ZnVuY3Rpb24oKXtuTS5nZXQodGhpcykuaXNUcmlnZ2VyZWRCeUN1dD0hMCx0aGlzLmdldE9yQ3JlYXRlRm9jdXNhYmxlRWxlbWVudCgpLHRoaXMuZm9jdXNhYmxlRWxlbWVudC5mb2N1cygpLHRoaXMuaG90LnJvb3REb2N1bWVudC5leGVjQ29tbWFu''@;'; put 'put ''ZCgiY3V0Iil9fSx7a2V5OiJnZXRSYW5nZWRDb3B5YWJsZURhdGEiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST1bXSxaPVtdLHVlPVtdO3JldHVybiBVcih5LGZ1bmN0aW9uKF9lKXtpYShfZS5zdGFydFJvdyxfZS5lbmRSb3csZnVuY3Rpb24oQmUpey0xPT09Wi5pbmRleE9mKEJl''@;'; put 'put ''KSYmWi5wdXNoKEJlKX0pLGlhKF9lLnN0YXJ0Q29sLF9lLmVuZENvbCxmdW5jdGlvbihCZSl7LTE9PT11ZS5pbmRleE9mKEJlKSYmdWUucHVzaChCZSl9KX0pLFVyKFosZnVuY3Rpb24oX2Upe3ZhciBCZT1bXTtVcih1ZSxmdW5jdGlvbihOZSl7QmUucHVzaChDLmhvdC5nZXRDb3B5YWJsZURh''@;'; put 'put ''dGEoX2UsTmUpKX0pLEkucHVzaChCZSl9KSxjeihJKX19LHtrZXk6ImdldFJhbmdlZERhdGEiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST1bXSxaPVtdLHVlPVtdO3JldHVybiBVcih5LGZ1bmN0aW9uKF9lKXtpYShfZS5zdGFydFJvdyxfZS5lbmRSb3csZnVuY3Rpb24oQmUpey0x''@;'; put 'put ''PT09Wi5pbmRleE9mKEJlKSYmWi5wdXNoKEJlKX0pLGlhKF9lLnN0YXJ0Q29sLF9lLmVuZENvbCxmdW5jdGlvbihCZSl7LTE9PT11ZS5pbmRleE9mKEJlKSYmdWUucHVzaChCZSl9KX0pLFVyKFosZnVuY3Rpb24oX2Upe3ZhciBCZT1bXTtVcih1ZSxmdW5jdGlvbihOZSl7QmUucHVzaChDLmhv''@;'; put 'put ''dC5nZXRDb3B5YWJsZURhdGEoX2UsTmUpKX0pLEkucHVzaChCZSl9KSxJfX0se2tleToicGFzdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiIiLEM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lk''@;'; put 'put ''IDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnk7aWYoeXx8Qyl7dmFyIEk9bmV3IFVhdDt5JiZJLmNsaXBib2FyZERhdGEuc2V0RGF0YSgidGV4dC9wbGFpbiIseSksQyYmSS5jbGlwYm9hcmREYXRhLnNldERhdGEoInRleHQvaHRtbCIsQyksdGhpcy5nZXRPckNyZWF0ZUZvY3VzYWJs''@;'; put 'put ''ZUVsZW1lbnQoKSx0aGlzLm9uUGFzdGUoSSl9fX0se2tleToic2V0Q29weWFibGVUZXh0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7aWYoeSl7dmFyIEM9eS5nZXRUb3BTdGFydENvcm5lcigpLEk9eS5nZXRCb3R0b21FbmRDb3JuZXIo''@;'; put 'put ''KSxaPUMucm93LHVlPUMuY29sLF9lPUkucm93LEJlPUkuY29sLE5lPU1hdGgubWluKF9lLFordGhpcy5yb3dzTGltaXQtMSksS2U9TWF0aC5taW4oQmUsdWUrdGhpcy5jb2x1bW5zTGltaXQtMSk7dGhpcy5jb3B5YWJsZVJhbmdlcy5sZW5ndGg9MCx0aGlzLmNvcHlhYmxlUmFuZ2VzLnB1c2go''@;'; put 'put ''e3N0YXJ0Um93Olosc3RhcnRDb2w6dWUsZW5kUm93Ok5lLGVuZENvbDpLZX0pLHRoaXMuY29weWFibGVSYW5nZXM9dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeUNvcHlhYmxlUmFuZ2UiLHRoaXMuY29weWFibGVSYW5nZXMpLChfZSE9PU5lfHxCZSE9PUtlKSYmdGhpcy5ob3QucnVuSG9va3Mo''@;'; put 'put ''ImFmdGVyQ29weUxpbWl0IixfZS1aKzEsQmUtdWUrMSx0aGlzLnJvd3NMaW1pdCx0aGlzLmNvbHVtbnNMaW1pdCl9fX0se2tleToiZ2V0T3JDcmVhdGVGb2N1c2FibGVFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaG90LmdldEFjdGl2ZUVkaXRvcigpLEM9eT95LlRFWFRB''@;'; put 'put ''UkVBOnZvaWQgMDtDP3RoaXMuZm9jdXNhYmxlRWxlbWVudC5zZXRGb2N1c2FibGVFbGVtZW50KEMpOnRoaXMuZm9jdXNhYmxlRWxlbWVudC51c2VTZWNvbmRhcnlFbGVtZW50KCl9fSx7a2V5OiJpc0VkaXRvck9wZW5lZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmhvdC5nZXRBY3Rp''@;'; put 'put ''dmVFZGl0b3IoKTtyZXR1cm4geSYmeS5pc09wZW5lZCgpfX0se2tleToicG9wdWxhdGVWYWx1ZXMiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFz''@;'; put 'put ''dCgpO2lmKHkubGVuZ3RoKXtmb3IodmFyIEk9eS5sZW5ndGgsWj15WzBdLmxlbmd0aCx1ZT1bXSxfZT1DLmdldFRvcFN0YXJ0Q29ybmVyKCksQmU9X2Uucm93LE5lPV9lLmNvbCxLZT1DLmdldEJvdHRvbUVuZENvcm5lcigpLHB0PUtlLnJvdyxPdD1LZS5jb2wsJHQ9QmUsZm49TmUsTG49QmUs''@;'; put 'put ''aXI9TmU7dWUubGVuZ3RoPEl8fCR0PD1wdDspe3ZhciBtcj10aGlzLmhvdC5nZXRDZWxsTWV0YSgkdCxOZSksU3I9bXIuc2tpcFJvd09uUGFzdGUsd3I9bXIudmlzdWFsUm93O2lmKCR0PXdyKzEsITAhPT1Tcil7TG49d3IsZm49TmU7Zm9yKHZhciBRcj1bXSx5aT11ZS5sZW5ndGglSTtRci5s''@;'; put 'put ''ZW5ndGg8Wnx8Zm48PU90Oyl7dmFyIEtpPXRoaXMuaG90LmdldENlbGxNZXRhKEJlLGZuKSxTbz1LaS5za2lwQ29sdW1uT25QYXN0ZSxQbz1LaS52aXN1YWxDb2w7aWYoZm49UG8rMSwhMCE9PVNvKXtpcj1Qbzt2YXIgU2E9UXIubGVuZ3RoJVo7UXIucHVzaCh5W3lpXVtTYV0pfX11ZS5wdXNo''@;'; put 'put ''KFFyKX19cmV0dXJuIHRoaXMuaG90LnBvcHVsYXRlRnJvbUFycmF5KEJlLE5lLHVlLHZvaWQgMCx2b2lkIDAsIkNvcHlQYXN0ZS5wYXN0ZSIsdGhpcy5wYXN0ZU1vZGUpLFtCZSxOZSxMbixpcl19fX0se2tleToib25Db3B5Iix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1uTS5nZXQodGhpcyk7''@;'; put 'put ''aWYoKHRoaXMuaG90LmlzTGlzdGVuaW5nKCl8fEMuaXNUcmlnZ2VyZWRCeUNvcHkpJiYhdGhpcy5pc0VkaXRvck9wZW5lZCgpKXt0aGlzLnNldENvcHlhYmxlVGV4dCgpLEMuaXNUcmlnZ2VyZWRCeUNvcHk9ITE7dmFyIEk9dGhpcy5nZXRSYW5nZWREYXRhKHRoaXMuY29weWFibGVSYW5nZXMp''@;'; put 'put ''O2lmKHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDb3B5IixJLHRoaXMuY29weWFibGVSYW5nZXMpKXt2YXIgdWU9Y3ooSSk7aWYoeSYmeS5jbGlwYm9hcmREYXRhKXt2YXIgX2U9TzNlKEkpO3kuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJ0ZXh0L3BsYWluIix1ZSkseS5jbGlwYm9hcmREYXRh''@;'; put 'put ''LnNldERhdGEoInRleHQvaHRtbCIsW2x4ZSxfZV0uam9pbigiIikpfWVsc2UidW5kZWZpbmVkIj09dHlwZW9mIENsaXBib2FyZEV2ZW50JiZ0aGlzLmhvdC5yb290V2luZG93LmNsaXBib2FyZERhdGEuc2V0RGF0YSgiVGV4dCIsdWUpO3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNvcHkiLEks''@;'; put 'put ''dGhpcy5jb3B5YWJsZVJhbmdlcyl9eS5wcmV2ZW50RGVmYXVsdCgpfX19LHtrZXk6Im9uQ3V0Iix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1uTS5nZXQodGhpcyk7aWYoKHRoaXMuaG90LmlzTGlzdGVuaW5nKCl8fEMuaXNUcmlnZ2VyZWRCeUN1dCkmJiF0aGlzLmlzRWRpdG9yT3BlbmVkKCkp''@;'; put 'put ''e3RoaXMuc2V0Q29weWFibGVUZXh0KCksQy5pc1RyaWdnZXJlZEJ5Q3V0PSExO3ZhciBJPXRoaXMuZ2V0UmFuZ2VkRGF0YSh0aGlzLmNvcHlhYmxlUmFuZ2VzKTtpZih0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQ3V0IixJLHRoaXMuY29weWFibGVSYW5nZXMpKXt2YXIgdWU9Y3ooSSk7aWYo''@;'; put 'put ''eSYmeS5jbGlwYm9hcmREYXRhKXt2YXIgX2U9TzNlKEkpO3kuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJ0ZXh0L3BsYWluIix1ZSkseS5jbGlwYm9hcmREYXRhLnNldERhdGEoInRleHQvaHRtbCIsW2x4ZSxfZV0uam9pbigiIikpfWVsc2UidW5kZWZpbmVkIj09dHlwZW9mIENsaXBib2FyZEV2''@;'; put 'put ''ZW50JiZ0aGlzLmhvdC5yb290V2luZG93LmNsaXBib2FyZERhdGEuc2V0RGF0YSgiVGV4dCIsdWUpO3RoaXMuaG90LmVtcHR5U2VsZWN0ZWRDZWxscygiQ29weVBhc3RlLmN1dCIpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckN1dCIsSSx0aGlzLmNvcHlhYmxlUmFuZ2VzKX15LnByZXZlbnRE''@;'; put 'put ''ZWZhdWx0KCl9fX0se2tleToib25QYXN0ZSIsdmFsdWU6ZnVuY3Rpb24oeSl7aWYodGhpcy5ob3QuaXNMaXN0ZW5pbmcoKSYmIXRoaXMuaXNFZGl0b3JPcGVuZWQoKSl7dmFyIEM7aWYoeSYmeS5wcmV2ZW50RGVmYXVsdCYmeS5wcmV2ZW50RGVmYXVsdCgpLHkmJnZvaWQgMCE9PXkuY2xpcGJv''@;'; put 'put ''YXJkRGF0YSl7dmFyIEk9cXEoeS5jbGlwYm9hcmREYXRhLmdldERhdGEoInRleHQvaHRtbCIpLHtBRERfVEFHUzpbIm1ldGEiXSxBRERfQVRUUjpbImNvbnRlbnQiXSxGT1JDRV9CT0RZOiEwfSk7Qz1JJiYvKDx0YWJsZSl8KDxUQUJMRSkvZy50ZXN0KEkpP2RfZShJLHRoaXMuaG90LnJvb3RE''@;'; put 'put ''b2N1bWVudCkuZGF0YTp5LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgidGV4dC9wbGFpbiIpfWVsc2UidW5kZWZpbmVkIj09dHlwZW9mIENsaXBib2FyZEV2ZW50JiZ2b2lkIDAhPT10aGlzLmhvdC5yb290V2luZG93LmNsaXBib2FyZERhdGEmJihDPXRoaXMuaG90LnJvb3RXaW5kb3cuY2xpcGJv''@;'; put 'put ''YXJkRGF0YS5nZXREYXRhKCJUZXh0IikpO2lmKCJzdHJpbmciPT10eXBlb2YgQyYmKEM9ZnVuY3Rpb24gb3FlKGQpe3ZhciBnPVtbIiJdXTtpZigwPT09ZC5sZW5ndGgpcmV0dXJuIGc7Zm9yKHZhciB5LGg9MCx2PTA7ZC5sZW5ndGg+MCYmeSE9PWQubGVuZ3RoOylpZih5PWQubGVuZ3RoLGQu''@;'; put 'put ''bWF0Y2goTVNlKSlkPWQucmVwbGFjZShNU2UsIiIpLGdbdl1baCs9MV09IiI7ZWxzZSBpZihkLm1hdGNoKFNTZSkpZD1kLnJlcGxhY2UoU1NlLCIiKSxoPTAsZ1t2Kz0xXT1bIiJdO2Vsc2V7dmFyIEM9IiI7aWYoZC5zdGFydHNXaXRoKCciJykpe2Zvcih2YXIgST0wLFo9ITA7Wjspe3ZhciB1''@;'; put 'put ''ZT1kLnNsaWNlKDAsMSk7JyInPT09dWUmJihJKz0xKSxDKz11ZSwoMD09PShkPWQuc2xpY2UoMSkpLmxlbmd0aHx8ZC5tYXRjaCgvXltcdFxyXG5dLykmJkklMj09MCkmJihaPSExKX1DPUMucmVwbGFjZSgvXiIvLCIiKS5yZXBsYWNlKC8iJC8sIiIpLnJlcGxhY2UoL1siXSovZyxmdW5jdGlv''@;'; put 'put ''bihCZSl7cmV0dXJuIG5ldyBBcnJheShNYXRoLmZsb29yKEJlLmxlbmd0aC8yKSkuZmlsbCgnIicpLmpvaW4oIiIpfSl9ZWxzZXt2YXIgX2U9ZC5tYXRjaChpcWUpO2Q9ZC5zbGljZSgoQz1fZT9fZVswXToiIikubGVuZ3RoKX1nW3ZdW2hdPUN9cmV0dXJuIGd9KEMpKSwoIUN8fDAhPT1DLmxl''@;'; put 'put ''bmd0aCkmJiExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVBhc3RlIixDLHRoaXMuY29weWFibGVSYW5nZXMpKXt2YXIgX2U9ZnVuY3Rpb24gcWF0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIHJsdChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gbmx0KGQs''@;'; put 'put ''Zyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxaLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYm''@;'; put 'put ''KHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2godWUpe0M9ITAsWj11ZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IFp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24gdGx0KGQsZyl7aWYo''@;'; put 'put ''ZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBpeGUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9''@;'; put 'put ''PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIGl4ZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gZWx0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBh''@;'; put 'put ''dHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0odGhpcy5wb3B1bGF0ZVZhbHVlcyhDKSw0KSxLZT1f''@;'; put 'put ''ZVsyXSxwdD1fZVszXTt0aGlzLmhvdC5zZWxlY3RDZWxsKF9lWzBdLF9lWzFdLE1hdGgubWluKHRoaXMuaG90LmNvdW50Um93cygpLTEsS2UpLE1hdGgubWluKHRoaXMuaG90LmNvdW50Q29scygpLTEscHQpKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJQYXN0ZSIsQyx0aGlzLmNvcHlhYmxl''@;'; put 'put ''UmFuZ2VzKX19fX0se2tleToib25BZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHkpe3kuaXRlbXMucHVzaCh7bmFtZToiLS0tLS0tLS0tIn0sZnVuY3Rpb24gVmF0KGQpe3JldHVybntrZXk6ImNvcHkiLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5n''@;'; put 'put ''ZXRUcmFuc2xhdGVkUGhyYXNlKEI0ZSl9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7ZC5jb3B5KCl9LGRpc2FibGVkOmZ1bmN0aW9uKCl7aWYoMD09PXRoaXMuY291bnRSb3dzKCl8fDA9PT10aGlzLmNvdW50Q29scygpKXJldHVybiEwO3ZhciBoPXRoaXMuZ2V0U2VsZWN0ZWQoKTtyZXR1cm4haHx8''@;'; put 'put ''aC5sZW5ndGg+MX0saGlkZGVuOiExfX0odGhpcyksZnVuY3Rpb24gamF0KGQpe3JldHVybntrZXk6ImN1dCIsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoUDRlKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtkLmN1dCgpfSxkaXNhYmxlZDpmdW5jdGlvbigp''@;'; put 'put ''e2lmKDA9PT10aGlzLmNvdW50Um93cygpfHwwPT09dGhpcy5jb3VudENvbHMoKSlyZXR1cm4hMDt2YXIgaD10aGlzLmdldFNlbGVjdGVkKCk7cmV0dXJuIWh8fGgubGVuZ3RoPjF9LGhpZGRlbjohMX19KHRoaXMpKX19LHtrZXk6Im9uQWZ0ZXJPbkNlbGxNb3VzZVVwIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpeyF0aGlzLmhvdC5pc0xpc3RlbmluZygpfHx0aGlzLmlzRWRpdG9yT3BlbmVkKCl8fHRoaXMuaG90LmdldFNldHRpbmdzKCkuZnJhZ21lbnRTZWxlY3Rpb258fCh0aGlzLmdldE9yQ3JlYXRlRm9jdXNhYmxlRWxlbWVudCgpLHRoaXMuZm9jdXNhYmxlRWxlbWVudC5mb2N1cygpKX19LHtr''@;'; put 'put ''ZXk6Im9uQWZ0ZXJTZWxlY3Rpb25FbmQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEM9bk0uZ2V0KHRoaXMpLmlzRnJhZ21lbnRTZWxlY3Rpb25FbmFibGVkO3RoaXMuaXNFZGl0b3JPcGVuZWQoKXx8KHRoaXMuZ2V0T3JDcmVhdGVGb2N1c2FibGVFbGVtZW50KCksKCFDfHx0aGlzLmZvY3VzYWJs''@;'; put 'put ''ZUVsZW1lbnQuZ2V0Rm9jdXNhYmxlRWxlbWVudCgpPT09dGhpcy5ob3Qucm9vdERvY3VtZW50LmFjdGl2ZUVsZW1lbnR8fCFZYmUoKSkmJih0aGlzLnNldENvcHlhYmxlVGV4dCgpLHRoaXMuZm9jdXNhYmxlRWxlbWVudC5mb2N1cygpKSl9fSx7a2V5OiJvbkJlZm9yZUtleURvd24iLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKCl7aWYodGhpcy5ob3QuaXNMaXN0ZW5pbmcoKSYmIXRoaXMuaXNFZGl0b3JPcGVuZWQoKSl7dmFyIHk9dGhpcy5ob3Qucm9vdERvY3VtZW50LmFjdGl2ZUVsZW1lbnQsQz10aGlzLmhvdC5nZXRBY3RpdmVFZGl0b3IoKTshQ3x8eSE9PXRoaXMuZm9jdXNhYmxlRWxlbWVudC5n''@;'; put 'put ''ZXRGb2N1c2FibGVFbGVtZW50KCkmJnkhPT1DLnNlbGVjdHx8KHRoaXMuZ2V0T3JDcmVhdGVGb2N1c2FibGVFbGVtZW50KCksdGhpcy5mb2N1c2FibGVFbGVtZW50LmZvY3VzKCkpfX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5mb2N1c2FibGVFbGVtZW50JiYocnhl''@;'; put 'put ''KHRoaXMuZm9jdXNhYmxlRWxlbWVudCksdGhpcy5mb2N1c2FibGVFbGVtZW50PW51bGwpLHRNKE52KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFF0ZX19LHtrZXk6IlNFVFRJTkdfS0VZ''@;'; put 'put ''UyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuW1F0ZV0uY29uY2F0KGhsdCl9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiA4MH19XSksaH0oWXMpO2Z1bmN0aW9uIHN4ZShkLGcpe3JldHVybiJib3JkZXJfcm93Ii5jb25jYXQoZCwiY29sIikuY29uY2F0KGcp''@;'; put 'put ''fWZ1bmN0aW9uIFI4ZShkKXt2YXIgZyxoO3JldHVybihUbyhkLnN0YXJ0KXx8VG8oZC5sZWZ0KSkmJihkLnN0YXJ0PW51bGwhPT0oZz1kLnN0YXJ0KSYmdm9pZCAwIT09Zz9nOmQubGVmdCksKFRvKGQuZW5kKXx8VG8oZC5yaWdodCkpJiYoZC5lbmQ9bnVsbCE9PShoPWQuZW5kKSYmdm9pZCAw''@;'; put 'put ''IT09aD9oOmQucmlnaHQpLGRlbGV0ZSBkLmxlZnQsZGVsZXRlIGQucmlnaHQsZH1mdW5jdGlvbiBDeihkKXtyZXR1cm4gVG8oZC5zdGFydCkmJihkLmxlZnQ9ZC5zdGFydCksVG8oZC5lbmQpJiYoZC5yaWdodD1kLmVuZCksZH1mdW5jdGlvbiBCOGUoZCxnKXtyZXR1cm57aWQ6c3hlKGQsZyks''@;'; put 'put ''Ym9yZGVyOnt3aWR0aDoxLGNvbG9yOiIjMDAwIixjb3JuZXJWaXNpYmxlOiExfSxyb3c6ZCxjb2w6Zyx0b3A6e2hpZGU6ITB9LGJvdHRvbTp7aGlkZTohMH0sc3RhcnQ6e2hpZGU6ITB9LGVuZDp7aGlkZTohMH19fWZ1bmN0aW9uIGp2KGQsZyl7dmFyIGg9ITE7cmV0dXJuIFVyKGQuZ2V0U2Vs''@;'; put 'put ''ZWN0ZWRSYW5nZSgpLGZ1bmN0aW9uKHYpe3YuZm9yQWxsKGZ1bmN0aW9uKHksQyl7aWYoISh5PDB8fEM8MCkpe3ZhciBJPWQuZ2V0Q2VsbE1ldGEoeSxDKS5ib3JkZXJzO2lmKEkpe2lmKCFnKXJldHVybiBoPSEwLCExO2lmKCFvMShJW2ddLCJoaWRlIil8fCExPT09SVtnXS5oaWRlKXJldHVy''@;'; put 'put ''biBoPSEwLCExfX19KX0pLGh9ZnVuY3Rpb24gSnRlKGQpe3JldHVybic8c3BhbiBjbGFzcz0ic2VsZWN0ZWQiPicuY29uY2F0KFN0cmluZy5mcm9tQ2hhckNvZGUoMTAwMDMpLCI8L3NwYW4+IikuY29uY2F0KGQpfXZhciB3bHQ9bmV3IE1hcChbWyJsZWZ0Iiwic3RhcnQiXSxbInJpZ2h0Iiwi''@;'; put 'put ''ZW5kIl1dKTtmdW5jdGlvbiBfbHQoZCl7cmV0dXJue2tleToiYm9yZGVyczp0b3AiLG5hbWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoZXBlKTtyZXR1cm4ganYodGhpcywidG9wIikmJihoPUp0ZShoKSksaH0sY2FsbGJhY2s6ZnVuY3Rpb24oaCx2KXt2YXIg''@;'; put 'put ''eT1qdih0aGlzLCJ0b3AiKTtkLnByZXBhcmVCb3JkZXIodiwidG9wIix5KX19fWZ1bmN0aW9uIENsdChkKXt2YXIgZz1kLmhvdC5pc1J0bCgpPyJzdGFydCI6ImVuZCI7cmV0dXJue2tleToiYm9yZGVyczpyaWdodCIsbmFtZTpmdW5jdGlvbigpe3ZhciB2PXRoaXMuZ2V0VHJhbnNsYXRlZFBo''@;'; put 'put ''cmFzZSh0cGUpO3JldHVybiBqdih0aGlzLGcpJiYodj1KdGUodikpLHZ9LGNhbGxiYWNrOmZ1bmN0aW9uKHYseSl7dmFyIEM9anYodGhpcyxnKTtkLnByZXBhcmVCb3JkZXIoeSxnLEMpfX19ZnVuY3Rpb24ga2x0KGQpe3JldHVybntrZXk6ImJvcmRlcnM6Ym90dG9tIixuYW1lOmZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIGg9dGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKG5wZSk7cmV0dXJuIGp2KHRoaXMsImJvdHRvbSIpJiYoaD1KdGUoaCkpLGh9LGNhbGxiYWNrOmZ1bmN0aW9uKGgsdil7dmFyIHk9anYodGhpcywiYm90dG9tIik7ZC5wcmVwYXJlQm9yZGVyKHYsImJvdHRvbSIseSl9fX1mdW5jdGlv''@;'; put 'put ''biBTbHQoZCl7dmFyIGc9ZC5ob3QuaXNSdGwoKT8iZW5kIjoic3RhcnQiO3JldHVybntrZXk6ImJvcmRlcnM6bGVmdCIsbmFtZTpmdW5jdGlvbigpe3ZhciB2PXRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShycGUpO3JldHVybiBqdih0aGlzLGcpJiYodj1KdGUodikpLHZ9LGNhbGxiYWNrOmZ1''@;'; put 'put ''bmN0aW9uKHYseSl7dmFyIEM9anYodGhpcyxnKTtkLnByZXBhcmVCb3JkZXIoeSxnLEMpfX19ZnVuY3Rpb24gTWx0KGQpe3JldHVybntrZXk6ImJvcmRlcnM6bm9fYm9yZGVycyIsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoaXBlKX0sY2FsbGJhY2s6''@;'; put 'put ''ZnVuY3Rpb24oaCx2KXtkLnByZXBhcmVCb3JkZXIodiwibm9Cb3JkZXJzIil9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIWp2KHRoaXMpfX19ZnVuY3Rpb24gUDhlKGQpe3JldHVybihQOGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRl''@;'; put 'put ''cmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiB1eGUo''@;'; put 'put ''ZCxnKXtyZXR1cm4gZnVuY3Rpb24gSWx0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBUbHQoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lm''@;'; put 'put ''KG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaCh1ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJl''@;'; put 'put ''dHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgWn19cmV0dXJuIHZ9fShkLGcpfHxmdW5jdGlvbiB4bHQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIGN4ZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4''@;'; put 'put ''LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8u''@;'; put 'put ''dGVzdChoKSlyZXR1cm4gY3hlKGQsZyl9fShkLGcpfHxmdW5jdGlvbiBFbHQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3Rz''@;'; put 'put ''IG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGN4ZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIERs''@;'; put 'put ''dChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGZ4ZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFi''@;'; put 'put ''bGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIHJNKCl7cmV0dXJuIHJNPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQu''@;'; put 'put ''YmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1PbHQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LHJNLmFwcGx5KHRoaXMsYXJndW1l''@;'; put 'put ''bnRzKX1mdW5jdGlvbiBPbHQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPVp2KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIEY4ZShkLGcpe3JldHVybihGOGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90''@;'; put 'put ''b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBQbHQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1QOGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGh4ZShkKX1mdW5jdGlvbiBoeGUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBz''@;'; put 'put ''dXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIFp2KGQpe3JldHVybihadj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVP''@;'; put 'put ''ZihoKX0pKGQpfWZ1bmN0aW9uIEhsdChkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9dmFyIFh0ZT0iY3VzdG9tQm9yZGVycyIsVmx0PWZ1bmN0''@;'; put 'put ''aW9uKGQpeyFmdW5jdGlvbiBSbHQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcu''@;'; put 'put ''cHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmRjhlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gQmx0KGQpe3ZhciBnPWZ1bmN0''@;'; put 'put ''aW9uIEZsdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVl''@;'; put 'put ''T2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVp2KGQpO2lmKGcpe3ZhciBDPVp2KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixh''@;'; put 'put ''cmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBQbHQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXt2YXIgdjtEbHQodGhpcyxoKTtmb3IodmFyIHk9YXJndW1lbnRzLmxlbmd0aCxDPW5ldyBBcnJheSh5KSxJPTA7STx5O0krKylDW0ldPWFyZ3VtZW50''@;'; put 'put ''c1tJXTtyZXR1cm4gSGx0KGh4ZSh2PWcuY2FsbC5hcHBseShnLFt0aGlzXS5jb25jYXQoQykpKSwic2F2ZWRCb3JkZXJzIixbXSksdn1yZXR1cm4gZnVuY3Rpb24gTGx0KGQsZyxoKXtnJiZmeGUoZC5wcm90b3R5cGUsZyksaCYmZnhlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInBy''@;'; put 'put ''b3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbWHRlXX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuZW5hYmxlZHx8KHRo''@;'; put 'put ''aXMuYWRkSG9vaygiYWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIixmdW5jdGlvbihDKXtyZXR1cm4geS5vbkFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyhDKX0pLHRoaXMuYWRkSG9vaygiaW5pdCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVySW5pdCgpfSksck0oWnYo''@;'; put 'put ''aC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhpZGVCb3JkZXJzKCksck0oWnYoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToi''@;'; put 'put ''dXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksdGhpcy5jaGFuZ2VCb3JkZXJTZXR0aW5ncygpLHJNKFp2KGgucHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToic2V0Qm9y''@;'; put 'put ''ZGVycyIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST10aGlzLFo9WyJ0b3AiLCJib3R0b20iLCJzdGFydCIsImVuZCJdLHVlPW51bGw7QyYmKHRoaXMuY2hlY2tTZXR0aW5nc0NvaGVzaW9uKFtDXSksWj1PYmplY3Qua2V5cyhDKSx1ZT1SOGUoQykpO3ZhciBCZT11eihDTyh5KSk7VXIoeSxm''@;'; put 'put ''dW5jdGlvbihOZSl7Zm9yKHZhciBwdD11eGUoQmUoTmUpLDQpLCR0PXB0WzFdLGZuPXB0WzJdLExuPXB0WzNdLGlyPWZ1bmN0aW9uKHdyKXtmb3IodmFyIFFyPWZ1bmN0aW9uKFNvKXtVcihaLGZ1bmN0aW9uKFBvKXtJLnByZXBhcmVCb3JkZXJGcm9tQ3VzdG9tQWRkZWQod3IsU28sdWUsZnVu''@;'; put 'put ''Y3Rpb24gYmx0KGQpe3ZhciBnO3JldHVybiBudWxsIT09KGc9d2x0LmdldChkKSkmJnZvaWQgMCE9PWc/ZzpkfShQbykpfSl9LHlpPSR0O3lpPD1Mbjt5aSs9MSlRcih5aSl9LG1yPXB0WzBdO21yPD1mbjttcis9MSlpcihtcil9KSx0aGlzLmhvdC52aWV3LnJlbmRlcigpfX0se2tleToiZ2V0''@;'; put 'put ''Qm9yZGVycyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcztpZighQXJyYXkuaXNBcnJheSh5KSlyZXR1cm4gdGhpcy5zYXZlZEJvcmRlcnM7dmFyIFo9dXooQ08oeSkpLHVlPVtdO3JldHVybiBVcih5LGZ1bmN0aW9uKF9lKXtmb3IodmFyIE5lPXV4ZShaKF9lKSw0KSxwdD1OZVsxXSxP''@;'; put 'put ''dD1OZVsyXSwkdD1OZVszXSxmbj1mdW5jdGlvbihtcil7Zm9yKHZhciBTcj1mdW5jdGlvbih5aSl7VXIoQy5zYXZlZEJvcmRlcnMsZnVuY3Rpb24oS2kpe0tpLnJvdz09PW1yJiZLaS5jb2w9PT15aSYmdWUucHVzaChDeihLaSkpfSl9LHdyPXB0O3dyPD0kdDt3cis9MSlTcih3cil9LExuPU5l''@;'; put 'put ''WzBdO0xuPD1PdDtMbis9MSlmbihMbil9KSx1ZX19LHtrZXk6ImNsZWFyQm9yZGVycyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpczt5P3RoaXMuc2V0Qm9yZGVycyh5KTooVXIodGhpcy5zYXZlZEJvcmRlcnMsZnVuY3Rpb24oSSl7Qy5jbGVhckJvcmRlcnNGcm9tU2VsZWN0aW9uU2V0''@;'; put 'put ''dGluZ3MoSS5pZCksQy5jbGVhck51bGxDZWxsUmFuZ2UoKSxDLmhvdC5yZW1vdmVDZWxsTWV0YShJLnJvdyxJLmNvbCwiYm9yZGVycyIpfSksdGhpcy5zYXZlZEJvcmRlcnMubGVuZ3RoPTApfX0se2tleToiaW5zZXJ0Qm9yZGVySW50b1NldHRpbmdzIix2YWx1ZTpmdW5jdGlvbih5LEMpe3Ro''@;'; put 'put ''aXMuY2hlY2tTYXZlZEJvcmRlcnMoeSl8fHRoaXMuc2F2ZWRCb3JkZXJzLnB1c2goeSk7dmFyIFo9dGhpcy5ob3QuX2NyZWF0ZUNlbGxSYW5nZSh0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3Jkcyh5LnJvdyx5LmNvbCkpO3RoaXMuY2hlY2tDdXN0b21TZWxlY3Rpb25zKHksWixDKXx8dGhpcy5o''@;'; put 'put ''b3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5hZGRDdXN0b21TZWxlY3Rpb24oe2JvcmRlcjp5LHZpc3VhbENlbGxSYW5nZTpafSl9fSx7a2V5OiJwcmVwYXJlQm9yZGVyRnJvbUN1c3RvbUFkZGVkIix2YWx1ZTpmdW5jdGlvbih5LEMsSSxaKXt2YXIgdWU9dGhpcy5ob3QuY291bnRSb3dzKCksX2U9''@;'; put 'put ''dGhpcy5ob3QuY291bnRDb2xzKCk7aWYoISh5Pj11ZXx8Qz49X2UpKXt2YXIgQmU9QjhlKHksQyk7SSYmKEJlPWZ1bmN0aW9uIHZsdChkLGcpe3JldHVybiBvMShnLCJib3JkZXIiKSYmZy5ib3JkZXImJihkLmJvcmRlcj1nLmJvcmRlciksbzEoZywidG9wIikmJlRvKGcudG9wKSYmKGcudG9w''@;'; put 'put ''Pyh4bChnLnRvcCl8fChnLnRvcD17d2lkdGg6MSxjb2xvcjoiIzAwMCJ9KSxkLnRvcD1nLnRvcCk6KGcudG9wPXtoaWRlOiEwfSxkLnRvcD1nLnRvcCkpLG8xKGcsImJvdHRvbSIpJiZUbyhnLmJvdHRvbSkmJihnLmJvdHRvbT8oeGwoZy5ib3R0b20pfHwoZy5ib3R0b209e3dpZHRoOjEsY29s''@;'; put 'put ''b3I6IiMwMDAifSksZC5ib3R0b209Zy5ib3R0b20pOihnLmJvdHRvbT17aGlkZTohMH0sZC5ib3R0b209Zy5ib3R0b20pKSxvMShnLCJzdGFydCIpJiZUbyhnLnN0YXJ0KSYmKGcuc3RhcnQ/KHhsKGcuc3RhcnQpfHwoZy5zdGFydD17d2lkdGg6MSxjb2xvcjoiIzAwMCJ9KSxkLnN0YXJ0PWcu''@;'; put 'put ''c3RhcnQpOihnLnN0YXJ0PXtoaWRlOiEwfSxkLnN0YXJ0PWcuc3RhcnQpKSxvMShnLCJlbmQiKSYmVG8oZy5lbmQpJiYoZy5lbmQ/KHhsKGcuZW5kKXx8KGcuZW5kPXt3aWR0aDoxLGNvbG9yOiIjMDAwIn0pLGQuZW5kPWcuZW5kKTooZy5lbmQ9e2hpZGU6ITB9LGQuZW5kPWcuZW5kKSksZH0o''@;'; put 'put ''QmUsSSksVXIodGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5jdXN0b21TZWxlY3Rpb25zLGZ1bmN0aW9uKE5lKXtpZihCZS5pZD09PU5lLnNldHRpbmdzLmlkKXJldHVybiBPYmplY3QuYXNzaWduKE5lLnNldHRpbmdzLEkpLEJlLmlkPU5lLnNldHRpbmdzLmlkLEJlLnRvcD1OZS5zZXR0''@;'; put 'put ''aW5ncy50b3AsQmUuYm90dG9tPU5lLnNldHRpbmdzLmJvdHRvbSxCZS5zdGFydD1OZS5zZXR0aW5ncy5zdGFydCxCZS5lbmQ9TmUuc2V0dGluZ3MuZW5kLCExfSkpLHRoaXMuaG90LnNldENlbGxNZXRhKHksQywiYm9yZGVycyIsQ3ooQmUpKSx0aGlzLmluc2VydEJvcmRlckludG9TZXR0aW5n''@;'; put 'put ''cyhCZSxaKX19fSx7a2V5OiJwcmVwYXJlQm9yZGVyRnJvbUN1c3RvbUFkZGVkUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9dGhpcyxaPU1hdGgubWluKHkudG8ucm93LHRoaXMuaG90LmNvdW50Um93cygpLTEpLHVlPU1hdGgubWluKHkudG8uY29sLHRoaXMuaG90LmNvdW50Q29s''@;'; put 'put ''cygpLTEpO2lhKHkuZnJvbS5yb3csWixmdW5jdGlvbihfZSl7aWEoeS5mcm9tLmNvbCx1ZSxmdW5jdGlvbihCZSl7dmFyIE5lPUI4ZShfZSxCZSksS2U9MDtfZT09PXkuZnJvbS5yb3cmJm8xKEMsInRvcCIpJiYoS2UrPTEsTmUudG9wPUMudG9wKSxfZT09PXkudG8ucm93JiZvMShDLCJib3R0''@;'; put 'put ''b20iKSYmKEtlKz0xLE5lLmJvdHRvbT1DLmJvdHRvbSksQmU9PT15LmZyb20uY29sJiZvMShDLCJzdGFydCIpJiYoS2UrPTEsTmUuc3RhcnQ9Qy5zdGFydCksQmU9PT15LnRvLmNvbCYmbzEoQywiZW5kIikmJihLZSs9MSxOZS5lbmQ9Qy5lbmQpLEtlPjAmJihJLmhvdC5zZXRDZWxsTWV0YShf''@;'; put 'put ''ZSxCZSwiYm9yZGVycyIsQ3ooTmUpKSxJLmluc2VydEJvcmRlckludG9TZXR0aW5ncyhOZSkpfSl9KX19LHtrZXk6InJlbW92ZUFsbEJvcmRlcnMiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9c3hlKHksQyk7dGhpcy5zcGxpY2VCb3JkZXIoSSksdGhpcy5jbGVhckJvcmRlcnNGcm9tU2Vs''@;'; put 'put ''ZWN0aW9uU2V0dGluZ3MoSSksdGhpcy5jbGVhck51bGxDZWxsUmFuZ2UoKSx0aGlzLmhvdC5yZW1vdmVDZWxsTWV0YSh5LEMsImJvcmRlcnMiKX19LHtrZXk6InNldEJvcmRlciIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksWil7dmFyIHVlPXRoaXMuaG90LmdldENlbGxNZXRhKHksQykuYm9yZGVy''@;'; put 'put ''czt1ZT11ZSYmdm9pZCAwIT09dWUuYm9yZGVyP1I4ZSh1ZSk6QjhlKHksQyksWj8odWVbSV09e2hpZGU6ITB9LDQ9PT10aGlzLmNvdW50SGlkZSh1ZSk/dGhpcy5yZW1vdmVBbGxCb3JkZXJzKHksQyk6KHRoaXMuY2hlY2tDdXN0b21TZWxlY3Rpb25zRnJvbUNvbnRleHRNZW51KHVlLEksWil8''@;'; put 'put ''fHRoaXMuaW5zZXJ0Qm9yZGVySW50b1NldHRpbmdzKHVlKSx0aGlzLmhvdC5zZXRDZWxsTWV0YSh5LEMsImJvcmRlcnMiLEN6KHVlKSkpKToodWVbSV09e3dpZHRoOjEsY29sb3I6IiMwMDAifSx0aGlzLmNoZWNrQ3VzdG9tU2VsZWN0aW9uc0Zyb21Db250ZXh0TWVudSh1ZSxJLFopfHx0aGlz''@;'; put 'put ''Lmluc2VydEJvcmRlckludG9TZXR0aW5ncyh1ZSksdGhpcy5ob3Quc2V0Q2VsbE1ldGEoeSxDLCJib3JkZXJzIixDeih1ZSkpKX19LHtrZXk6InByZXBhcmVCb3JkZXIiLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXt2YXIgWj10aGlzO1VyKHksZnVuY3Rpb24odWUpe3ZhciBfZT11ZS5zdGFydCxC''@;'; put 'put ''ZT11ZS5lbmQ7aWYoX2Uucm93PT09QmUucm93JiZfZS5jb2w9PT1CZS5jb2wpIm5vQm9yZGVycyI9PT1DP1oucmVtb3ZlQWxsQm9yZGVycyhfZS5yb3csX2UuY29sKTpaLnNldEJvcmRlcihfZS5yb3csX2UuY29sLEMsSSk7ZWxzZSBzd2l0Y2goQyl7Y2FzZSJub0JvcmRlcnMiOmlhKF9lLmNv''@;'; put 'put ''bCxCZS5jb2wsZnVuY3Rpb24oTmUpe2lhKF9lLnJvdyxCZS5yb3csZnVuY3Rpb24oS2Upe1oucmVtb3ZlQWxsQm9yZGVycyhLZSxOZSl9KX0pO2JyZWFrO2Nhc2UidG9wIjppYShfZS5jb2wsQmUuY29sLGZ1bmN0aW9uKE5lKXtaLnNldEJvcmRlcihfZS5yb3csTmUsQyxJKX0pO2JyZWFrO2Nh''@;'; put 'put ''c2UiYm90dG9tIjppYShfZS5jb2wsQmUuY29sLGZ1bmN0aW9uKE5lKXtaLnNldEJvcmRlcihCZS5yb3csTmUsQyxJKX0pO2JyZWFrO2Nhc2Uic3RhcnQiOmlhKF9lLnJvdyxCZS5yb3csZnVuY3Rpb24oTmUpe1ouc2V0Qm9yZGVyKE5lLF9lLmNvbCxDLEkpfSk7YnJlYWs7Y2FzZSJlbmQiOmlh''@;'; put 'put ''KF9lLnJvdyxCZS5yb3csZnVuY3Rpb24oTmUpe1ouc2V0Qm9yZGVyKE5lLEJlLmNvbCxDLEkpfSl9fSl9fSx7a2V5OiJjcmVhdGVDdXN0b21Cb3JkZXJzIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzO1VyKHksZnVuY3Rpb24oSSl7dmFyIFo9UjhlKEkpO0kucmFuZ2U/Qy5wcmVwYXJl''@;'; put 'put ''Qm9yZGVyRnJvbUN1c3RvbUFkZGVkUmFuZ2UoSS5yYW5nZSxaKTpDLnByZXBhcmVCb3JkZXJGcm9tQ3VzdG9tQWRkZWQoSS5yb3csSS5jb2wsWil9KX19LHtrZXk6ImNvdW50SGlkZSIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIFN1KFt5LnRvcCx5LmJvdHRvbSx5LnN0YXJ0LHkuZW5kXSxm''@;'; put 'put ''dW5jdGlvbihCZSxOZSl7dmFyIEtlPUJlO3JldHVybiBOZSYmTmUuaGlkZSYmKEtlKz0xKSxLZX0sMCl9fSx7a2V5OiJjbGVhckJvcmRlcnNGcm9tU2VsZWN0aW9uU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPU9sKHRoaXMuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQuY3VzdG9t''@;'; put 'put ''U2VsZWN0aW9ucyxmdW5jdGlvbihJKXtyZXR1cm4gSS5zZXR0aW5ncy5pZH0pLmluZGV4T2YoeSk7Qz4tMSYmdGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5jdXN0b21TZWxlY3Rpb25zW0NdLmNsZWFyKCl9fSx7a2V5OiJjbGVhck51bGxDZWxsUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKCl7''@;'; put 'put ''dmFyIHk9dGhpcztVcih0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmN1c3RvbVNlbGVjdGlvbnMsZnVuY3Rpb24oQyxJKXtpZihudWxsPT09Qy5jZWxsUmFuZ2UpcmV0dXJuIHkuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQuY3VzdG9tU2VsZWN0aW9uc1tJXS5kZXN0cm95KCkseS5ob3Qu''@;'; put 'put ''c2VsZWN0aW9uLmhpZ2hsaWdodC5jdXN0b21TZWxlY3Rpb25zLnNwbGljZShJLDEpLCExfSl9fSx7a2V5OiJoaWRlQm9yZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO1VyKHRoaXMuc2F2ZWRCb3JkZXJzLGZ1bmN0aW9uKEMpe3kuY2xlYXJCb3JkZXJzRnJvbVNlbGVjdGlvblNl''@;'; put 'put ''dHRpbmdzKEMuaWQpLHkuY2xlYXJOdWxsQ2VsbFJhbmdlKCl9KX19LHtrZXk6InNwbGljZUJvcmRlciIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9T2wodGhpcy5zYXZlZEJvcmRlcnMsZnVuY3Rpb24oSSl7cmV0dXJuIEkuaWR9KS5pbmRleE9mKHkpO0M+LTEmJnRoaXMuc2F2ZWRCb3JkZXJz''@;'; put 'put ''LnNwbGljZShDLDEpfX0se2tleToiY2hlY2tTYXZlZEJvcmRlcnMiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST0hMTtyZXR1cm4gND09PXRoaXMuY291bnRIaWRlKHkpPyh0aGlzLnNwbGljZUJvcmRlcih5LmlkKSxJPSEwKTpVcih0aGlzLnNhdmVkQm9yZGVycyxmdW5jdGlvbih1''@;'; put 'put ''ZSxfZSl7aWYoeS5pZD09PXVlLmlkKXJldHVybiBDLnNhdmVkQm9yZGVyc1tfZV09eSxJPSEwLCExfSksSX19LHtrZXk6ImNoZWNrQ3VzdG9tU2VsZWN0aW9uc0Zyb21Db250ZXh0TWVudSIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe3ZhciBaPSExO3JldHVybiBVcih0aGlzLmhvdC5zZWxlY3Rp''@;'; put 'put ''b24uaGlnaGxpZ2h0LmN1c3RvbVNlbGVjdGlvbnMsZnVuY3Rpb24odWUpe2lmKHkuaWQ9PT11ZS5zZXR0aW5ncy5pZClyZXR1cm4gR2wodWUuaW5zdGFuY2VCb3JkZXJzLGZ1bmN0aW9uKF9lKXtfZS50b2dnbGVIaWRkZW5DbGFzcyhDLEkpfSksWj0hMCwhMX0pLFp9fSx7a2V5OiJjaGVja0N1''@;'; put 'put ''c3RvbVNlbGVjdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXt2YXIgWj10aGlzLmNvdW50SGlkZSh5KSx1ZT0hMTtyZXR1cm4gND09PVo/KHRoaXMucmVtb3ZlQWxsQm9yZGVycyh5LnJvdyx5LmNvbCksdWU9ITApOlVyKHRoaXMuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQuY3VzdG9tU2Vs''@;'; put 'put ''ZWN0aW9ucyxmdW5jdGlvbihfZSl7aWYoeS5pZD09PV9lLnNldHRpbmdzLmlkKXJldHVybiBfZS52aXN1YWxDZWxsUmFuZ2U9QyxfZS5jb21taXQoKSxJJiZHbChfZS5pbnN0YW5jZUJvcmRlcnMsZnVuY3Rpb24oQmUpe0JlLmNoYW5nZUJvcmRlclN0eWxlKEkseSl9KSx1ZT0hMCwhMX0pLHVl''@;'; put 'put ''fX0se2tleToiY2hhbmdlQm9yZGVyU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtYdGVdO2lmKEFycmF5LmlzQXJyYXkoeSkpe3ZhciBDPWdoKHkpO3RoaXMuY2hlY2tTZXR0aW5nc0NvaGVzaW9uKEMpLEMubGVuZ3RofHwodGhpcy5zYXZl''@;'; put 'put ''ZEJvcmRlcnM9QyksdGhpcy5jcmVhdGVDdXN0b21Cb3JkZXJzKEMpfWVsc2Ugdm9pZCAwIT09eSYmdGhpcy5jcmVhdGVDdXN0b21Cb3JkZXJzKHRoaXMuc2F2ZWRCb3JkZXJzKX19LHtrZXk6ImNoZWNrU2V0dGluZ3NDb2hlc2lvbiIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9ZnVuY3Rpb24g''@;'; put 'put ''QWx0KGQpe3JldHVybiBkLnNvbWUoZnVuY3Rpb24oZyl7cmV0dXJuIFRvKGcubGVmdCl8fFRvKGcucmlnaHQpfSl9KHkpLEk9ZnVuY3Rpb24geWx0KGQpe3JldHVybiBkLnNvbWUoZnVuY3Rpb24oZyl7cmV0dXJuIFRvKGcuc3RhcnQpfHxUbyhnLmVuZCl9KX0oeSk7aWYoQyYmSSl0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoJ1RoZSAibGVmdCIvInJpZ2h0IiBhbmQgInN0YXJ0Ii8iZW5kIiBvcHRpb25zIHNob3VsZCBub3QgYmUgdXNlZCB0b2dldGhlci4gUGxlYXNlIHVzZSBvbmx5IHRoZSBvcHRpb24gInN0YXJ0Ii8iZW5kIi4nKTtpZih0aGlzLmhvdC5pc1J0bCgpJiZDKXRocm93IG5ldyBFcnJv''@;'; put 'put ''cignVGhlICJsZWZ0Ii8icmlnaHQiIHByb3BlcnRpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIFJUTC4gUGxlYXNlIHVzZSBvcHRpb24gInN0YXJ0Ii8iZW5kIi4nKX19LHtrZXk6Im9uQWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih5KXshdGhpcy5ob3Qu''@;'; put 'put ''Z2V0U2V0dGluZ3MoKVtYdGVdfHx5Lml0ZW1zLnB1c2goe25hbWU6Ii0tLS0tLS0tLSJ9LHtrZXk6ImJvcmRlcnMiLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKHE0ZSl9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uLmlz''@;'; put 'put ''U2VsZWN0ZWRCeUNvcm5lcigpfSxzdWJtZW51OntpdGVtczpbX2x0KHRoaXMpLENsdCh0aGlzKSxrbHQodGhpcyksU2x0KHRoaXMpLE1sdCh0aGlzKV19fSl9fSx7a2V5OiJvbkFmdGVySW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNoYW5nZUJvcmRlclNldHRpbmdzKCl9fSx7a2V5OiJk''@;'; put 'put ''ZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3JNKFp2KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFh0ZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IDkwfX1dKSxofShZcyk7ZnVuY3Rpb24gSDhlKGQpe3JldHVybihIOGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBkeGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxl''@;'; put 'put ''fHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBpTSgpe3JldHVybiBpTT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJp''@;'; put 'put ''bmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9emx0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxpTS5hcHBseSh0aGlzLGFyZ3VtZW50''@;'; put 'put ''cyl9ZnVuY3Rpb24gemx0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD16dihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBOOGUoZCxnKXtyZXR1cm4oTjhlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90''@;'; put 'put ''eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gWWx0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09SDhlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBweGUoZCl9ZnVuY3Rpb24gcHhlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3Vw''@;'; put 'put ''ZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiB6dihkKXtyZXR1cm4oenY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2Yo''@;'; put 'put ''aCl9KShkKX12YXIgZ3hlPSJkcmFnVG9TY3JvbGwiLEpsdD1mdW5jdGlvbihkKXshZnVuY3Rpb24gR2x0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1''@;'; put 'put ''bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJk44ZShkLGcp''@;'; put 'put ''fShoLGQpO3ZhciBnPWZ1bmN0aW9uIFdsdChkKXt2YXIgZz1mdW5jdGlvbiBVbHQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0''@;'; put 'put ''dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj16dihkKTtpZihnKXt2YXIgQz16dih0''@;'; put 'put ''aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gWWx0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYpe3ZhciB5O3JldHVybiBmdW5jdGlvbiBqbHQoZCxnKXtpZighKGQgaW5zdGFu''@;'; put 'put ''Y2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoeT1nLmNhbGwodGhpcyx2KSkuZXZlbnRNYW5hZ2VyPW5ldyBMMShweGUoeSkpLHkuYm91bmRhcmllcz1udWxsLHkuY2FsbGJhY2s9bnVsbCx5Lmxpc3Rlbmlu''@;'; put 'put ''Zz0hMSx5fXJldHVybiBmdW5jdGlvbiBabHQoZCxnLGgpe2cmJmR4ZShkLnByb3RvdHlwZSxnKSxoJiZkeGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEh''@;'; put 'put ''dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtneGVdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5lbmFibGVkfHwodGhpcy5hZGRIb29rKCJhZnRlck9uQ2VsbE1vdXNlRG93biIsZnVuY3Rpb24oQyl7cmV0dXJuIHkuc2V0dXBMaXN0ZW5pbmco''@;'; put 'put ''Qyl9KSx0aGlzLmFkZEhvb2soImFmdGVyT25DZWxsQ29ybmVyTW91c2VEb3duIixmdW5jdGlvbihDKXtyZXR1cm4geS5zZXR1cExpc3RlbmluZyhDKX0pLHRoaXMucmVnaXN0ZXJFdmVudHMoKSxpTSh6dihoLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSl9fSx7''@;'; put 'put ''a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSxpTSh6dihoLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KCl7dGhpcy51bnJlZ2lzdGVyRXZlbnRzKCksaU0oenYoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToic2V0Qm91bmRhcmllcyIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5ib3VuZGFyaWVzPXl9fSx7a2V5OiJzZXRDYWxsYmFjayIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oeSl7dGhpcy5jYWxsYmFjaz15fX0se2tleToiY2hlY2siLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9MCxaPTA7Qzx0aGlzLmJvdW5kYXJpZXMudG9wP1o9Qy10aGlzLmJvdW5kYXJpZXMudG9wOkM+dGhpcy5ib3VuZGFyaWVzLmJvdHRvbSYmKFo9Qy10aGlzLmJvdW5kYXJp''@;'; put 'put ''ZXMuYm90dG9tKSx5PHRoaXMuYm91bmRhcmllcy5sZWZ0P0k9eS10aGlzLmJvdW5kYXJpZXMubGVmdDp5PnRoaXMuYm91bmRhcmllcy5yaWdodCYmKEk9eS10aGlzLmJvdW5kYXJpZXMucmlnaHQpLHRoaXMuY2FsbGJhY2soSSxaKX19LHtrZXk6Imxpc3RlbiIsdmFsdWU6ZnVuY3Rpb24oKXt0''@;'; put 'put ''aGlzLmxpc3RlbmluZz0hMH19LHtrZXk6InVubGlzdGVuIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubGlzdGVuaW5nPSExfX0se2tleToiaXNMaXN0ZW5pbmciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGlzdGVuaW5nfX0se2tleToicmVnaXN0ZXJFdmVudHMiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7Zm9yKHZhciB5PXRoaXMsST10aGlzLmhvdC5yb290V2luZG93O0k7KXRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoSS5kb2N1bWVudCwiY29udGV4dG1lbnUiLGZ1bmN0aW9uKCl7cmV0dXJuIHkudW5saXN0ZW4oKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50''@;'; put 'put ''TGlzdGVuZXIoSS5kb2N1bWVudCwibW91c2V1cCIsZnVuY3Rpb24oKXtyZXR1cm4geS51bmxpc3RlbigpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihJLmRvY3VtZW50LCJtb3VzZW1vdmUiLGZ1bmN0aW9uKFope3JldHVybiB5Lm9uTW91c2VNb3ZlKFopfSksST11M2Uo''@;'; put 'put ''SSl9fSx7a2V5OiJ1bnJlZ2lzdGVyRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZXZlbnRNYW5hZ2VyLmNsZWFyKCl9fSx7a2V5OiJzZXR1cExpc3RlbmluZyIsdmFsdWU6ZnVuY3Rpb24oeSl7aWYoIUV3KHkpKXt2YXIgQz10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLmhvbGRlcjtD''@;'; put 'put ''IT09dGhpcy5ob3Qucm9vdFdpbmRvdyYmKHRoaXMuc2V0Qm91bmRhcmllcyhDLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSx0aGlzLnNldENhbGxiYWNrKGZ1bmN0aW9uKEksWil7STwwP0Muc2Nyb2xsTGVmdC09NTA6ST4wJiYoQy5zY3JvbGxMZWZ0Kz01MCksWjwwP0Muc2Nyb2xsVG9wLT0y''@;'; put 'put ''MDpaPjAmJihDLnNjcm9sbFRvcCs9MjApfSksdGhpcy5saXN0ZW4oKSl9fX0se2tleToib25Nb3VzZU1vdmUiLHZhbHVlOmZ1bmN0aW9uKHkpeyF0aGlzLmlzTGlzdGVuaW5nKCl8fHRoaXMuY2hlY2soeS5jbGllbnRYLHkuY2xpZW50WSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpe2lNKHp2KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGd4ZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDEwMH19XSksaH0oWXMpO2Z1bmN0''@;'; put 'put ''aW9uIFY4ZShkKXtyZXR1cm4oVjhlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29u''@;'; put 'put ''c3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gbXhlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9''@;'; put 'put ''ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gb00oKXtyZXR1cm4gb009InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYp''@;'; put 'put ''e3ZhciB5PSRsdChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sb00uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uICRsdChkLGcp''@;'; put 'put ''e2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9R3YoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gajhlKGQsZyl7cmV0dXJuKGo4ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlv''@;'; put 'put ''bih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIHRzdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PVY4ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3Rv''@;'; put 'put ''cnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gdnhlKGQpfWZ1bmN0aW9uIHZ4ZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2Fs''@;'; put 'put ''bGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gR3YoZCl7cmV0dXJuKEd2PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9em8uZ2V0U2luZ2xl''@;'; put 'put ''dG9uKCkucmVnaXN0ZXIoImFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMiKSx6by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlRHJvcGRvd25NZW51U2hvdyIpLHpvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckRyb3Bkb3duTWVudVNob3ciKSx6by5nZXRTaW5n''@;'; put 'put ''bGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJEcm9wZG93bk1lbnVIaWRlIiksem8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyRHJvcGRvd25NZW51RXhlY3V0ZSIpO3ZhciBaOGU9ImRyb3Bkb3duTWVudSIsejhlPSJjaGFuZ2VUeXBlIixBeGU9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIHFs''@;'; put 'put ''dChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVj''@;'; put 'put ''dG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZqOGUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBlc3QoZCl7dmFyIGc9ZnVuY3Rpb24gbnN0KCl7aWYoInVuZGVm''@;'; put 'put ''aW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29u''@;'; put 'put ''c3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9R3YoZCk7aWYoZyl7dmFyIEM9R3YodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9''@;'; put 'put ''di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHRzdCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24gWGx0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0''@;'; put 'put ''aW9uIil9KHRoaXMsaCksKHk9Zy5jYWxsKHRoaXMsdikpLmV2ZW50TWFuYWdlcj1uZXcgTDEodnhlKHkpKSx5LmNvbW1hbmRFeGVjdXRvcj1uZXcgQkVlKHkuaG90KSx5Lml0ZW1zRmFjdG9yeT1udWxsLHkubWVudT1udWxsLHkuaG90LmFkZEhvb2soImFmdGVyR2V0Q29sSGVhZGVyIixmdW5j''@;'; put 'put ''dGlvbihDLEkpe3JldHVybiB5Lm9uQWZ0ZXJHZXRDb2xIZWFkZXIoQyxJKX0pLHl9cmV0dXJuIGZ1bmN0aW9uIEtsdChkLGcsaCl7ZyYmbXhlKGQucHJvdG90eXBlLGcpLGgmJm14ZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7''@;'; put 'put ''a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaG90LmdldFNldHRpbmdzKClbWjhlXX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO2lmKCF0aGlzLmVuYWJsZWQpe3RoaXMuaXRlbXNGYWN0b3J5PW5ldyBaRWUodGhp''@;'; put 'put ''cy5ob3QsaC5ERUZBVUxUX0lURU1TKTt2YXIgQz10aGlzLmhvdC5nZXRTZXR0aW5ncygpW1o4ZV0sST17aXRlbXM6dGhpcy5pdGVtc0ZhY3RvcnkuZ2V0SXRlbXMoQyl9O3RoaXMucmVnaXN0ZXJFdmVudHMoKSwiZnVuY3Rpb24iPT10eXBlb2YgQy5jYWxsYmFjayYmdGhpcy5jb21tYW5kRXhl''@;'; put 'put ''Y3V0b3Iuc2V0Q29tbW9uQ2FsbGJhY2soQy5jYWxsYmFjayksb00oR3YoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyksdGhpcy5jYWxsT25QbHVnaW5zUmVhZHkoZnVuY3Rpb24oKXt5LmhvdC5ydW5Ib29rcygiYWZ0ZXJEcm9wZG93bk1lbnVEZWZhdWx0T3B0''@;'; put 'put ''aW9ucyIsSSkseS5pdGVtc0ZhY3Rvcnkuc2V0UHJlZGVmaW5lZEl0ZW1zKEkuaXRlbXMpO3ZhciBaPXkuaXRlbXNGYWN0b3J5LmdldEl0ZW1zKEMpO3kubWVudSYmeS5tZW51LmRlc3Ryb3koKSx5Lm1lbnU9bmV3IHg4ZSh5LmhvdCx7Y2xhc3NOYW1lOiJodERyb3Bkb3duTWVudSIsa2VlcElu''@;'; put 'put ''Vmlld3BvcnQ6ITAsY29udGFpbmVyOkMudWlDb250YWluZXJ8fHkuaG90LnJvb3REb2N1bWVudC5ib2R5fSkseS5ob3QucnVuSG9va3MoImJlZm9yZURyb3Bkb3duTWVudVNldEl0ZW1zIixaKSx5Lm1lbnUuc2V0TWVudUl0ZW1zKFopLHkubWVudS5hZGRMb2NhbEhvb2soImJlZm9yZU9wZW4i''@;'; put 'put ''LGZ1bmN0aW9uKCl7cmV0dXJuIHkub25NZW51QmVmb3JlT3BlbigpfSkseS5tZW51LmFkZExvY2FsSG9vaygiYWZ0ZXJPcGVuIixmdW5jdGlvbigpe3JldHVybiB5Lm9uTWVudUFmdGVyT3BlbigpfSkseS5tZW51LmFkZExvY2FsSG9vaygiYWZ0ZXJDbG9zZSIsZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''eS5vbk1lbnVBZnRlckNsb3NlKCl9KSx5Lm1lbnUuYWRkTG9jYWxIb29rKCJleGVjdXRlQ29tbWFuZCIsZnVuY3Rpb24oKXtmb3IodmFyIHVlLF9lPWFyZ3VtZW50cy5sZW5ndGgsQmU9bmV3IEFycmF5KF9lKSxOZT0wO05lPF9lO05lKyspQmVbTmVdPWFyZ3VtZW50c1tOZV07cmV0dXJuKHVl''@;'; put 'put ''PXkuZXhlY3V0ZUNvbW1hbmQpLmNhbGwuYXBwbHkodWUsW3ldLmNvbmNhdChCZSkpfSksVXIoWixmdW5jdGlvbih1ZSl7cmV0dXJuIHkuY29tbWFuZEV4ZWN1dG9yLnJlZ2lzdGVyQ29tbWFuZCh1ZS5rZXksdWUpfSl9KX19fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7''@;'; put 'put ''dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSxvTShHdihoLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbG9zZSgpLHRoaXMubWVudSYmdGhpcy5tZW51''@;'; put 'put ''LmRlc3Ryb3koKSxvTShHdihoLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJyZWdpc3RlckV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5ob3Qucm9vdEVs''@;'; put 'put ''ZW1lbnQsImNsaWNrIixmdW5jdGlvbihDKXtyZXR1cm4geS5vblRhYmxlQ2xpY2soQyl9KX19LHtrZXk6Im9wZW4iLHZhbHVlOmZ1bmN0aW9uKHkpeyF0aGlzLm1lbnV8fCh0aGlzLm1lbnUub3BlbigpLHkud2lkdGgmJnRoaXMubWVudS5zZXRPZmZzZXQoImxlZnQiLHkud2lkdGgpLHRoaXMu''@;'; put 'put ''bWVudS5zZXRQb3NpdGlvbih5KSl9fSx7a2V5OiJjbG9zZSIsdmFsdWU6ZnVuY3Rpb24oKXshdGhpcy5tZW51fHx0aGlzLm1lbnUuY2xvc2UoKX19LHtrZXk6ImV4ZWN1dGVDb21tYW5kIix2YWx1ZTpmdW5jdGlvbih5KXtmb3IodmFyIEMsST1hcmd1bWVudHMubGVuZ3RoLFo9bmV3IEFycmF5''@;'; put 'put ''KEk+MT9JLTE6MCksdWU9MTt1ZTxJO3VlKyspWlt1ZS0xXT1hcmd1bWVudHNbdWVdOyhDPXRoaXMuY29tbWFuZEV4ZWN1dG9yKS5leGVjdXRlLmFwcGx5KEMsW3ldLmNvbmNhdChaKSl9fSx7a2V5OiJzZXRMaXN0ZW5pbmciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9IShhcmd1bWVudHMubGVu''@;'; put 'put ''Z3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXTt0aGlzLm1lbnUuaXNPcGVuZWQoKSYmKHk/dGhpcy5tZW51LmhvdE1lbnUubGlzdGVuKCk6dGhpcy5tZW51LmhvdE1lbnUudW5saXN0ZW4oKSl9fSx7a2V5OiJvblRhYmxlQ2xpY2siLHZhbHVlOmZ1bmN0aW9uKHkp''@;'; put 'put ''e2lmKHkuc3RvcFByb3BhZ2F0aW9uKCksdGwoeS50YXJnZXQsejhlKSYmIXRoaXMubWVudS5pc09wZW5lZCgpKXt2YXIgQz0wLEk9MDtpZih0aGlzLmhvdC5yb290RG9jdW1lbnQhPT10aGlzLm1lbnUuY29udGFpbmVyLm93bmVyRG9jdW1lbnQpe3ZhciB1ZT10aGlzLmhvdC5yb290V2luZG93''@;'; put 'put ''LmZyYW1lRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtDPXVlLnRvcCxJPXVlLmxlZnR9dmFyIE5lPXkudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMub3Blbih7bGVmdDpOZS5sZWZ0K0ksdG9wOk5lLnRvcCt5LnRhcmdldC5vZmZzZXRIZWlnaHQrMytDLHdpZHRo''@;'; put 'put ''Ok5lLndpZHRoLGhlaWdodDpOZS5oZWlnaHR9KX19fSx7a2V5OiJvbkFmdGVyR2V0Q29sSGVhZGVyIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPUMucGFyZW50Tm9kZTtpZihJKXt2YXIgWj1JLnBhcmVudE5vZGUuY2hpbGROb2Rlcyx1ZT1BcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxs''@;'; put 'put ''KFosSSk7aWYoISh5PDB8fHVlIT09Wi5sZW5ndGgtMSkpe3ZhciBfZT1DLnF1ZXJ5U2VsZWN0b3IoIi4iLmNvbmNhdCh6OGUpKTtpZighdGhpcy5lbmFibGVkfHwhX2Upe2lmKCF0aGlzLmVuYWJsZWQpcmV0dXJuIHZvaWQoX2UmJl9lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoX2UpKTt2YXIg''@;'; put 'put ''QmU9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpO0JlLmNsYXNzTmFtZT16OGUsQmUudHlwZT0iYnV0dG9uIixCZS5vbmNsaWNrPWZ1bmN0aW9uKCl7cmV0dXJuITF9LEMuZmlyc3RDaGlsZC5pbnNlcnRCZWZvcmUoQmUsQy5maXJzdENoaWxkLmZpcnN0Q2hp''@;'; put 'put ''bGQpfX19fX0se2tleToib25NZW51QmVmb3JlT3BlbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlRHJvcGRvd25NZW51U2hvdyIsdGhpcyl9fSx7a2V5OiJvbk1lbnVBZnRlck9wZW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QucnVuSG9va3MoImFmdGVy''@;'; put 'put ''RHJvcGRvd25NZW51U2hvdyIsdGhpcyl9fSx7a2V5OiJvbk1lbnVBZnRlckNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90Lmxpc3RlbigpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckRyb3Bkb3duTWVudUhpZGUiLHRoaXMpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXt0aGlzLmNsb3NlKCksdGhpcy5tZW51JiZ0aGlzLm1lbnUuZGVzdHJveSgpLG9NKEd2KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFo4ZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIs''@;'; put 'put ''Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDIzMH19LHtrZXk6IlBMVUdJTl9ERVBTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5bInBsdWdpbjpBdXRvQ29sdW1uU2l6ZSJdfX0se2tleToiREVGQVVMVF9JVEVNUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuW3Z6LEF6LFdsLHd6LFdsLEh0ZSxXbCx5eixX''@;'; put 'put ''bCxQcF19fV0pLGh9KFlzKTtmdW5jdGlvbiB5eGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiB3eGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3Ro''@;'; put 'put ''O2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1BeGUuU0VQQVJBVE9SPXtuYW1lOldsfTt2YXIgZnN0PWZ1bmN0''@;'; put 'put ''aW9uKCl7ZnVuY3Rpb24gZChnKXsoZnVuY3Rpb24gdXN0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuaG90PWcsdGhpcy5vcHRpb25zPXt9fXJldHVybiBmdW5j''@;'; put 'put ''dGlvbiBjc3QoZCxnLGgpe2cmJnd4ZShkLnByb3RvdHlwZSxnKSxoJiZ3eGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToic2V0T3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5vcHRpb25zPWh9fSx7a2V5OiJn''@;'; put 'put ''ZXREYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMsdj10aGlzLl9nZXREYXRhUmFuZ2UoKSxDPXYuc3RhcnRDb2wsWj12LmVuZENvbCx1ZT10aGlzLm9wdGlvbnMsX2U9W107cmV0dXJuIGlhKHYuc3RhcnRSb3csdi5lbmRSb3csZnVuY3Rpb24oQmUpe3ZhciBOZT1bXTshdWUuZXhw''@;'; put 'put ''b3J0SGlkZGVuUm93cyYmaC5faXNIaWRkZW5Sb3coQmUpfHwoaWEoQyxaLGZ1bmN0aW9uKEtlKXshdWUuZXhwb3J0SGlkZGVuQ29sdW1ucyYmaC5faXNIaWRkZW5Db2x1bW4oS2UpfHxOZS5wdXNoKGguaG90LmdldERhdGFBdENlbGwoQmUsS2UpKX0pLF9lLnB1c2goTmUpKX0pLF9lfX0se2tl''@;'; put 'put ''eToiZ2V0Um93SGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLHY9W107aWYodGhpcy5vcHRpb25zLnJvd0hlYWRlcnMpe3ZhciB5PXRoaXMuX2dldERhdGFSYW5nZSgpLEM9eS5zdGFydFJvdyxJPXkuZW5kUm93LFo9dGhpcy5ob3QuZ2V0Um93SGVhZGVyKCk7aWEoQyxJLGZ1''@;'; put 'put ''bmN0aW9uKHVlKXshaC5vcHRpb25zLmV4cG9ydEhpZGRlblJvd3MmJmguX2lzSGlkZGVuUm93KHVlKXx8di5wdXNoKFpbdWVdKX0pfXJldHVybiB2fX0se2tleToiZ2V0Q29sdW1uSGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLHY9W107aWYodGhpcy5vcHRpb25zLmNvbHVt''@;'; put 'put ''bkhlYWRlcnMpe3ZhciB5PXRoaXMuX2dldERhdGFSYW5nZSgpLEM9eS5zdGFydENvbCxJPXkuZW5kQ29sLFo9dGhpcy5ob3QuZ2V0Q29sSGVhZGVyKCk7aWEoQyxJLGZ1bmN0aW9uKHVlKXshaC5vcHRpb25zLmV4cG9ydEhpZGRlbkNvbHVtbnMmJmguX2lzSGlkZGVuQ29sdW1uKHVlKXx8di5w''@;'; put 'put ''dXNoKFpbdWVdKX0pfXJldHVybiB2fX0se2tleToiX2dldERhdGFSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmhvdC5jb3VudENvbHMoKS0xLHY9dGhpcy5ob3QuY291bnRSb3dzKCktMSx5PWZ1bmN0aW9uIGlzdChkLGcpe3JldHVybiBmdW5jdGlvbiBzc3QoZCl7aWYoQXJy''@;'; put 'put ''YXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIGxzdChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksWix2PVtdLHk9ITAsQz0hMTt0''@;'; put 'put ''cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKHVlKXtDPSEwLFo9dWV9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJv''@;'; put 'put ''dyBafX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIGFzdChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4geXhlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3Rv''@;'; put 'put ''ciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiB5eGUoZCxnKX19KGQsZyl8fGZ1''@;'; put 'put ''bmN0aW9uIG9zdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBt''@;'; put 'put ''ZXRob2QuIil9KCl9KHRoaXMub3B0aW9ucy5yYW5nZSw0KSxDPXlbMF0sST12b2lkIDA9PT1DPzA6QyxaPXlbMV0sdWU9dm9pZCAwPT09Wj8wOlosX2U9eVsyXSxCZT12b2lkIDA9PT1fZT92Ol9lLE5lPXlbM10sS2U9dm9pZCAwPT09TmU/aDpOZTtyZXR1cm57c3RhcnRSb3c6ST1NYXRoLm1h''@;'; put 'put ''eChJLDApLHN0YXJ0Q29sOnVlPU1hdGgubWF4KHVlLDApLGVuZFJvdzpCZT1NYXRoLm1pbihCZSx2KSxlbmRDb2w6S2U9TWF0aC5taW4oS2UsaCl9fX0se2tleToiX2lzSGlkZGVuUm93Iix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuaXNIaWRkZW4o''@;'; put 'put ''dGhpcy5ob3QudG9QaHlzaWNhbFJvdyhoKSl9fSx7a2V5OiJfaXNIaWRkZW5Db2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5pc0hpZGRlbih0aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGgpKX19XSksZH0oKTtjb25zdCBoc3Q9ZnN0''@;'; put 'put ''O2Z1bmN0aW9uIGJ4ZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXks''@;'; put 'put ''dil9fXZhciBnc3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcsaCl7KGZ1bmN0aW9uIGRzdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLmRhdGFQcm92aWRlcj1n''@;'; put 'put ''LHRoaXMub3B0aW9ucz10aGlzLl9tZXJnZU9wdGlvbnMoaCksdGhpcy5kYXRhUHJvdmlkZXIuc2V0T3B0aW9ucyh0aGlzLm9wdGlvbnMpfXJldHVybiBmdW5jdGlvbiBwc3QoZCxnLGgpe2cmJmJ4ZShkLnByb3RvdHlwZSxnKSxoJiZieGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwi''@;'; put 'put ''cHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiX21lcmdlT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9YTModGhpcy5jb25zdHJ1Y3Rvci5ERUZBVUxUX09QVElPTlMpLHk9bmV3IERhdGU7cmV0dXJuIHY9STEoYTMoZC5ERUZBVUxUX09QVElPTlMpLHYpLCh2PUkx''@;'; put 'put ''KHYsaCkpLmZpbGVuYW1lPWEzZSh2LmZpbGVuYW1lLHtZWVlZOnkuZ2V0RnVsbFllYXIoKSxNTToiIi5jb25jYXQoeS5nZXRNb250aCgpKzEpLnBhZFN0YXJ0KDIsIjAiKSxERDoiIi5jb25jYXQoeS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsIjAiKX0pLHZ9fV0sW3trZXk6IkRFRkFVTFRfT1BU''@;'; put 'put ''SU9OUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue21pbWVUeXBlOiJ0ZXh0L3BsYWluIixmaWxlRXh0ZW5zaW9uOiJ0eHQiLGZpbGVuYW1lOiJIYW5kc29udGFibGUgW1lZWVldLVtNTV0tW0REXSIsZW5jb2Rpbmc6InV0Zi04Iixib206ITEsY29sdW1uSGVhZGVyczohMSxyb3dIZWFkZXJzOiEx''@;'; put 'put ''LGV4cG9ydEhpZGRlbkNvbHVtbnM6ITEsZXhwb3J0SGlkZGVuUm93czohMSxyYW5nZTpbXX19fV0pLGR9KCk7Y29uc3QgbXN0PWdzdDtmdW5jdGlvbiBHOGUoZCl7cmV0dXJuKEc4ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9m''@;'; put 'put ''dW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIHZzdChkLGcpe2lm''@;'; put 'put ''KCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIF94ZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYu''@;'; put 'put ''Y29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIFc4ZShkLGcpe3JldHVybihXOGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rp''@;'; put 'put ''b24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBic3QoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1HOGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0''@;'; put 'put ''b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIF9zdChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7''@;'; put 'put ''cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIEt0ZShkKXtyZXR1cm4oS3RlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIGtzdD1TdHJp''@;'; put 'put ''bmcuZnJvbUNoYXJDb2RlKDEzKSxTc3Q9U3RyaW5nLmZyb21DaGFyQ29kZSgzNCksTXN0PVN0cmluZy5mcm9tQ2hhckNvZGUoMTApLEVzdD1mdW5jdGlvbihkKXshZnVuY3Rpb24geXN0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJlc4ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIHdzdChkKXt2YXIgZz1mdW5jdGlvbiBDc3QoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Qu''@;'; put 'put ''c2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0''@;'; put 'put ''dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1LdGUoZCk7aWYoZyl7dmFyIEM9S3RlKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBic3QodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgo''@;'; put 'put ''KXtyZXR1cm4gdnN0KHRoaXMsaCksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGZ1bmN0aW9uIEFzdChkLGcsaCl7ZyYmX3hlKGQucHJvdG90eXBlLGcpLGgmJl94ZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5''@;'; put 'put ''OiJleHBvcnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPXRoaXMub3B0aW9ucyxJPXRoaXMuZGF0YVByb3ZpZGVyLmdldERhdGEoKSxaPXRoaXMuZGF0YVByb3ZpZGVyLmdldENvbHVtbkhlYWRlcnMoKSx1ZT1aLmxlbmd0aD4wLF9lPXRoaXMuZGF0YVByb3ZpZGVyLmdldFJvd0hl''@;'; put 'put ''YWRlcnMoKSxCZT1fZS5sZW5ndGg+MCxOZT1DLmJvbT9TdHJpbmcuZnJvbUNoYXJDb2RlKDY1Mjc5KToiIjtyZXR1cm4gdWUmJihaPU9sKFosZnVuY3Rpb24oS2Upe3JldHVybiB5Ll9lc2NhcGVDZWxsKEtlLCEwKX0pLEJlJiYoTmUrPUMuY29sdW1uRGVsaW1pdGVyKSxOZSs9Wi5qb2luKEMu''@;'; put 'put ''Y29sdW1uRGVsaW1pdGVyKSxOZSs9Qy5yb3dEZWxpbWl0ZXIpLFVyKEksZnVuY3Rpb24oS2UscHQpe3B0PjAmJihOZSs9Qy5yb3dEZWxpbWl0ZXIpLEJlJiYoTmUrPXkuX2VzY2FwZUNlbGwoX2VbcHRdKStDLmNvbHVtbkRlbGltaXRlciksTmUrPUtlLm1hcChmdW5jdGlvbihPdCl7cmV0dXJu''@;'; put 'put ''IHkuX2VzY2FwZUNlbGwoT3QpfSkuam9pbihDLmNvbHVtbkRlbGltaXRlcil9KSxOZX19LHtrZXk6Il9lc2NhcGVDZWxsIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLEk9ZXUoeSk7cmV0dXJu''@;'; put 'put ''IiIhPT1JJiYoQ3x8SS5pbmRleE9mKGtzdCk+PTB8fEkuaW5kZXhPZihTc3QpPj0wfHxJLmluZGV4T2YoTXN0KT49MHx8SS5pbmRleE9mKHRoaXMub3B0aW9ucy5jb2x1bW5EZWxpbWl0ZXIpPj0wKSYmKEk9SS5yZXBsYWNlKG5ldyBSZWdFeHAoJyInLCJnIiksJyIiJyksST0nIicuY29uY2F0''@;'; put 'put ''KEksJyInKSksSX19XSxbe2tleToiREVGQVVMVF9PUFRJT05TIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57bWltZVR5cGU6InRleHQvY3N2IixmaWxlRXh0ZW5zaW9uOiJjc3YiLGJvbTohMCxjb2x1bW5EZWxpbWl0ZXI6IiwiLHJvd0RlbGltaXRlcjoiXHJcbiJ9fX1dKSxofShtc3QpLFk4ZT1m''@;'; put 'put ''dW5jdGlvbiBUc3QoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfSh7fSwiY3N2IixFc3QpO2Z1bmN0aW9uIERzdChkLGcsaCl7cmV0dXJuImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIFk4ZVtkXT9uZXcgWThlW2RdKGcsaCk6bnVsbH1mdW5jdGlvbiBVOGUoZCl7cmV0dXJuKFU4ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0''@;'; put 'put ''aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIExzdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIEN4ZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53''@;'; put 'put ''cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIFE4ZShkLGcpe3JldHVybihROGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSko''@;'; put 'put ''ZCxnKX1mdW5jdGlvbiBQc3QoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1VOGUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5k''@;'; put 'put ''ZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIEZzdChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uICR0ZShkKXtyZXR1''@;'; put 'put ''cm4oJHRlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIGpzdD1mdW5jdGlvbihkKXshZnVuY3Rpb24gUnN0KGQsZyl7aWYoImZ1''@;'; put 'put ''bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQs''@;'; put 'put ''d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJlE4ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIEJzdChkKXt2YXIgZz1mdW5jdGlvbiBIc3QoKXtpZigidW5kZWZpbmVkIj09dHlwZW9m''@;'; put 'put ''IFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVh''@;'; put 'put ''bixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj0kdGUoZCk7aWYoZyl7dmFyIEM9JHRlKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhp''@;'; put 'put ''cyxhcmd1bWVudHMpO3JldHVybiBQc3QodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXtyZXR1cm4gTHN0KHRoaXMsaCksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGZ1bmN0aW9uIE9zdChkLGcsaCl7ZyYmQ3hlKGQucHJvdG90eXBlLGcpLGgmJkN4ZShkLGgpLE9iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5OiJleHBvcnRBc1N0cmluZyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1h''@;'; put 'put ''cmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O3JldHVybiB0aGlzLl9jcmVhdGVUeXBlRm9ybWF0dGVyKHksQykuZXhwb3J0KCl9fSx7a2V5OiJleHBvcnRBc0Jsb2IiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2Fy''@;'; put 'put ''Z3VtZW50c1sxXTp7fTtyZXR1cm4gdGhpcy5fY3JlYXRlQmxvYih0aGlzLl9jcmVhdGVUeXBlRm9ybWF0dGVyKHksQykpfX0se2tleToiZG93bmxvYWRGaWxlIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVu''@;'; put 'put ''dHNbMV06e30sST10aGlzLmhvdCxaPUkucm9vdERvY3VtZW50LHVlPUkucm9vdFdpbmRvdyxfZT10aGlzLl9jcmVhdGVUeXBlRm9ybWF0dGVyKHksQyksQmU9dGhpcy5fY3JlYXRlQmxvYihfZSksTmU9dWUuVVJMfHx1ZS53ZWJraXRVUkwsS2U9Wi5jcmVhdGVFbGVtZW50KCJhIikscHQ9IiIu''@;'; put 'put ''Y29uY2F0KF9lLm9wdGlvbnMuZmlsZW5hbWUsIi4iKS5jb25jYXQoX2Uub3B0aW9ucy5maWxlRXh0ZW5zaW9uKTtpZih2b2lkIDAhPT1LZS5kb3dubG9hZCl7dmFyIE90PU5lLmNyZWF0ZU9iamVjdFVSTChCZSk7S2Uuc3R5bGUuZGlzcGxheT0ibm9uZSIsS2Uuc2V0QXR0cmlidXRlKCJocmVm''@;'; put 'put ''IixPdCksS2Uuc2V0QXR0cmlidXRlKCJkb3dubG9hZCIscHQpLFouYm9keS5hcHBlbmRDaGlsZChLZSksS2UuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgiY2xpY2siKSksWi5ib2R5LnJlbW92ZUNoaWxkKEtlKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7TmUucmV2b2tlT2JqZWN0VVJM''@;'; put 'put ''KE90KX0sMTAwKX1lbHNlIG5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iJiZuYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihCZSxwdCl9fSx7a2V5OiJfY3JlYXRlVHlwZUZvcm1hdHRlciIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1''@;'; put 'put ''bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2lmKCFZOGVbeV0pdGhyb3cgbmV3IEVycm9yKCdFeHBvcnQgZm9ybWF0IHR5cGUgIicuY29uY2F0KHksJyIgaXMgbm90IHN1cHBvcnRlZC4nKSk7cmV0dXJuIERzdCh5LG5ldyBoc3QodGhpcy5ob3QpLEMpfX0se2tleToiX2NyZWF0ZUJsb2IiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKHkpe3ZhciBDPW51bGw7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiYoQz1uZXcgQmxvYihbeS5leHBvcnQoKV0se3R5cGU6IiIuY29uY2F0KHkub3B0aW9ucy5taW1lVHlwZSwiO2NoYXJzZXQ9IikuY29uY2F0KHkub3B0aW9ucy5lbmNvZGluZyl9KSksQ319''@;'; put 'put ''XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuImV4cG9ydEZpbGUifX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMjQwfX1dKSxofShZcyk7ZnVuY3Rpb24ga3hlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3Zh''@;'; put 'put ''ciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIFN4ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyxoKXt2YXIgdj1oLmlk''@;'; put 'put ''LHk9aC5zdGF0ZWxlc3MsQz12b2lkIDA9PT15fHx5OyhmdW5jdGlvbiBac3QoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5ob3Q9Zyx0aGlzLmlkPXYsdGhpcy5l''@;'; put 'put ''bGVtZW50cz1bXSx0aGlzLmhpZGRlbj0hMSx0aGlzLnN0YXRlSWQ9IkZpbHRlcnMuY29tcG9uZW50LiIuY29uY2F0KHRoaXMuaWQpLHRoaXMuc3RhdGU9Qz9udWxsOnRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKHRoaXMuc3RhdGVJZCxuZXcgWWVlKX1yZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24genN0KGQsZyxoKXtnJiZreGUoZC5wcm90b3R5cGUsZyksaCYma3hlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe1VyKHRoaXMuZWxlbWVudHMsZnVuY3Rpb24oaCl7''@;'; put 'put ''cmV0dXJuIGgucmVzZXQoKX0pfX0se2tleToiaGlkZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhpZGRlbj0hMH19LHtrZXk6InNob3ciLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5oaWRkZW49ITF9fSx7a2V5OiJpc0hpZGRlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09PXRoaXMu''@;'; put 'put ''aG90fHx0aGlzLmhpZGRlbn19LHtrZXk6InJlc3RvcmVTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5zdGF0ZSYmdGhpcy5zZXRTdGF0ZSh0aGlzLnN0YXRlLmdldFZhbHVlQXRJbmRleChoKSl9fSx7a2V5OiJzZXRTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''IlRoZSBzdGF0ZSBzZXR0aW5nIGxvZ2ljIGlzIG5vdCBpbXBsZW1lbnRlZCIpfX0se2tleToic2F2ZVN0YXRlIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLnN0YXRlJiZ0aGlzLnN0YXRlLnNldFZhbHVlQXRJbmRleChoLHRoaXMuZ2V0U3RhdGUoKSl9fSx7a2V5OiJnZXRTdGF0ZSIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlRoZSBzdGF0ZSBnYXRoZXJpbmcgbG9naWMgaXMgbm90IGltcGxlbWVudGVkIil9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLnVucmVnaXN0ZXJNYXAodGhpcy5zdGF0ZUlkKSx0''@;'; put 'put ''aGlzLmNsZWFyTG9jYWxIb29rcygpLFVyKHRoaXMuZWxlbWVudHMsZnVuY3Rpb24oaCl7cmV0dXJuIGguZGVzdHJveSgpfSksdGhpcy5zdGF0ZT1udWxsLHRoaXMuZWxlbWVudHM9bnVsbCx0aGlzLmhvdD1udWxsfX1dKSxkfSgpO0IyKFN4ZSx1ZCk7Y29uc3QgcXRlPVN4ZTt2YXIga3o9e307''@;'; put 'put ''ZnVuY3Rpb24gTncoZCxnKXtpZigha3pbZF0pdGhyb3cgRXJyb3IoJ0ZpbHRlciBjb25kaXRpb24gIicuY29uY2F0KGQsJyIgZG9lcyBub3QgZXhpc3QuJykpO3ZhciBoPWt6W2RdLHY9aC5jb25kaXRpb24seT1oLmRlc2NyaXB0b3IsQz1nO3JldHVybiB5LmlucHV0VmFsdWVzRGVjb3JhdG9y''@;'; put 'put ''JiYoQz15LmlucHV0VmFsdWVzRGVjb3JhdG9yKEMpKSxmdW5jdGlvbihJKXtyZXR1cm4gdi5hcHBseShJLm1ldGEuaW5zdGFuY2UsW10uY29uY2F0KFtJXSxbQ10pKX19ZnVuY3Rpb24gVk8oZCl7aWYoIWt6W2RdKXRocm93IEVycm9yKCdGaWx0ZXIgY29uZGl0aW9uICInLmNvbmNhdChkLCci''@;'; put 'put ''IGRvZXMgbm90IGV4aXN0LicpKTtyZXR1cm4ga3pbZF0uZGVzY3JpcHRvcn1mdW5jdGlvbiBadShkLGcsaCl7aC5rZXk9ZCxreltkXT17Y29uZGl0aW9uOmcsZGVzY3JpcHRvcjpofX12YXIgSGY9Im5vbmUiO1p1KEhmLGZ1bmN0aW9uIEdzdCgpe3JldHVybiEwfSx7bmFtZTpldGUsaW5wdXRz''@;'; put 'put ''Q291bnQ6MCxzaG93T3BlcmF0b3JzOiExfSk7dmFyIFN6PSJlbXB0eSI7WnUoU3osZnVuY3Rpb24gV3N0KGQpe3JldHVybiBkYyhkLnZhbHVlKX0se25hbWU6ZnBlLGlucHV0c0NvdW50OjAsc2hvd09wZXJhdG9yczohMH0pO3ZhciBlbmU9Im5vdF9lbXB0eSI7ZnVuY3Rpb24gTXhlKGQsZyl7''@;'; put 'put ''KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9WnUoZW5lLGZ1bmN0aW9uIFlzdChkLGcpe3JldHVybiFOdyhTeixnKShkKX0se25hbWU6aHBlLGlucHV0c0NvdW50OjAsc2hvd09w''@;'; put 'put ''ZXJhdG9yczohMH0pO3ZhciBNej0iZXEiO2Z1bmN0aW9uIEV4ZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIFR4ZShkLGcpeyhudWxsPT1nfHxnPmQu''@;'; put 'put ''bGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIER4ZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKysp''@;'; put 'put ''dltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIE94ZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIEJ4ZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3Ro''@;'; put 'put ''KSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fVp1KE16LGZ1bmN0aW9uICRzdChkLGcpe3ZhciB2PWZ1bmN0aW9uIFVzdChkLGcpe3JldHVybiBmdW5jdGlvbiBLc3QoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1''@;'; put 'put ''cm4gZH0oZCl8fGZ1bmN0aW9uIFhzdChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksWix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQp''@;'; put 'put ''OyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKHVlKXtDPSEwLFo9dWV9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBafX1yZXR1cm4gdn19KGQs''@;'; put 'put ''Zyl8fGZ1bmN0aW9uIEpzdChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gTXhlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rv''@;'; put 'put ''ci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBNeGUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIFFzdCgpe3Rocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGcsMSlb''@;'; put 'put ''MF07cmV0dXJuIGV1KGQudmFsdWUpLnRvTG9jYWxlTG93ZXJDYXNlKGQubWV0YS5sb2NhbGUpPT09ZXUodil9LHtuYW1lOmRwZSxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KSxadSgibmVxIixmdW5jdGlvbiBxc3QoZCxnKXtyZXR1cm4hTncoTXosZykoZCl9LHtuYW1lOnBwZSxp''@;'; put 'put ''bnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KSxadSgiZ3QiLGZ1bmN0aW9uIG8ydChkLGcpe3ZhciB5PWZ1bmN0aW9uIGUydChkLGcpe3JldHVybiBmdW5jdGlvbiBpMnQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIHIydChkLGcpe3ZhciBoPW51''@;'; put 'put ''bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksWix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52''@;'; put 'put ''YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKHVlKXtDPSEwLFo9dWV9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBafX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIG4ydChkLGcpe2lmKGQpe2lmKCJzdHJp''@;'; put 'put ''bmciPT10eXBlb2YgZClyZXR1cm4gRXhlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4g''@;'; put 'put ''QXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBFeGUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIHQydCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBk''@;'; put 'put ''ZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGcsMSlbMF07cmV0dXJuIm51bWVyaWMiPT09ZC5tZXRhLnR5cGUmJih5''@;'; put 'put ''PXBhcnNlRmxvYXQoeSwxMCkpLGQudmFsdWU+eX0se25hbWU6eXBlLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMH0pLFp1KCJndGUiLGZ1bmN0aW9uIGYydChkLGcpe3ZhciB5PWZ1bmN0aW9uIGEydChkLGcpe3JldHVybiBmdW5jdGlvbiBjMnQoZCl7aWYoQXJyYXkuaXNBcnJheShk''@;'; put 'put ''KSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIHUydChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksWix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5j''@;'; put 'put ''YWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKHVlKXtDPSEwLFo9dWV9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBafX1yZXR1cm4g''@;'; put 'put ''dn19KGQsZyl8fGZ1bmN0aW9uIHMydChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gVHhlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25z''@;'; put 'put ''dHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBUeGUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIGwydCgp''@;'; put 'put ''e3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9''@;'; put 'put ''KGcsMSlbMF07cmV0dXJuIm51bWVyaWMiPT09ZC5tZXRhLnR5cGUmJih5PXBhcnNlRmxvYXQoeSwxMCkpLGQudmFsdWU+PXl9LHtuYW1lOndwZSxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KSxadSgibHQiLGZ1bmN0aW9uIHYydChkLGcpe3ZhciB5PWZ1bmN0aW9uIGgydChkLGcp''@;'; put 'put ''e3JldHVybiBmdW5jdGlvbiBtMnQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIGcydChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVs''@;'; put 'put ''bCE9aCl7dmFyIEksWix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKHVlKXtDPSEwLFo9dWV9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJu''@;'; put 'put ''JiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBafX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIHAydChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gRHhlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEp''@;'; put 'put ''O2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0''@;'; put 'put ''KGgpKXJldHVybiBEeGUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIGQydCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVz''@;'; put 'put ''dCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGcsMSlbMF07cmV0dXJuIm51bWVyaWMiPT09ZC5tZXRhLnR5cGUmJih5PXBhcnNlRmxvYXQoeSwxMCkpLGQudmFsdWU8eX0se25hbWU6YnBlLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMH0pLFp1KCJsdGUi''@;'; put 'put ''LGZ1bmN0aW9uIEMydChkLGcpe3ZhciB5PWZ1bmN0aW9uIEEydChkLGcpe3JldHVybiBmdW5jdGlvbiBfMnQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIGIydChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYm''@;'; put 'put ''ZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksWix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKHVl''@;'; put 'put ''KXtDPSEwLFo9dWV9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBafX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIHcydChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gT3hlKGQsZyk7dmFyIGg9T2Jq''@;'; put 'put ''ZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86''@;'; put 'put ''VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBPeGUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIHkydCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBv''@;'; put 'put ''cmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGcsMSlbMF07cmV0dXJuIm51bWVyaWMiPT09ZC5tZXRhLnR5cGUmJih5PXBhcnNlRmxvYXQoeSwxMCkpLGQudmFsdWU8PXl9LHtuYW1lOl9w''@;'; put 'put ''ZSxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KTt2YXIgSjhlPSJkYXRlX2FmdGVyIjtmdW5jdGlvbiBQeGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1a''@;'; put 'put ''dShKOGUsZnVuY3Rpb24gVDJ0KGQsZyl7dmFyIHY9ZnVuY3Rpb24gazJ0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIHgydChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gRTJ0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxaLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0''@;'; put 'put ''Y2godWUpe0M9ITAsWj11ZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IFp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24gTTJ0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBCeGUoZCxnKTt2YXIg''@;'; put 'put ''aD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8''@;'; put 'put ''L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIEJ4ZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gUzJ0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5c''@;'; put 'put ''bkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oZywxKVswXSx5PVRsKGQudmFsdWUsZC5tZXRhLmRhdGVGb3JtYXQpLEM9VGwodixkLm1ldGEuZGF0ZUZvcm1hdCk7cmV0dXJuISgh''@;'; put 'put ''eS5pc1ZhbGlkKCl8fCFDLmlzVmFsaWQoKSkmJnkuZGlmZihDKT49MH0se25hbWU6U3BlLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMH0pO3ZhciBYOGU9ImRhdGVfYmVmb3JlIjtmdW5jdGlvbiBGeGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3Io''@;'; put 'put ''dmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1adShYOGUsZnVuY3Rpb24gQjJ0KGQsZyl7dmFyIHY9ZnVuY3Rpb24gSTJ0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIFIydChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24g''@;'; put 'put ''TzJ0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxaLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5k''@;'; put 'put ''b25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2godWUpe0M9ITAsWj11ZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IFp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24gTDJ0KGQs''@;'; put 'put ''Zyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBQeGUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8''@;'; put 'put ''IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIFB4ZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gRDJ0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52''@;'; put 'put ''YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oZywxKVswXSx5PVRsKGQudmFsdWUsZC5t''@;'; put 'put ''ZXRhLmRhdGVGb3JtYXQpLEM9VGwodixkLm1ldGEuZGF0ZUZvcm1hdCk7cmV0dXJuISgheS5pc1ZhbGlkKCl8fCFDLmlzVmFsaWQoKSkmJnkuZGlmZihDKTw9MH0se25hbWU6TXBlLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMH0pO3ZhciBubmU9ImJldHdlZW4iO1p1KG5uZSxmdW5j''@;'; put 'put ''dGlvbiBqMnQoZCxnKXt2YXIgaD1mdW5jdGlvbiBQMnQoZCxnKXtyZXR1cm4gZnVuY3Rpb24gVjJ0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBOMnQoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3lt''@;'; put 'put ''Ym9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaCh1ZSl7Qz0h''@;'; put 'put ''MCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgWn19cmV0dXJuIHZ9fShkLGcpfHxmdW5jdGlvbiBIMnQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIEZ4ZShkLGcpO3ZhciBoPU9iamVjdC5w''@;'; put 'put ''cm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkp''@;'; put 'put ''bnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gRnhlKGQsZyl9fShkLGcpfHxmdW5jdGlvbiBGMnQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIg''@;'; put 'put ''dG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShnLDIpLEM9aFswXSxJPWhbMV07aWYoIm51bWVyaWMiPT09ZC5tZXRhLnR5cGUpe3ZhciBaPXBhcnNlRmxvYXQoQywxMCksdWU9cGFyc2VGbG9hdChJ''@;'; put 'put ''LDEwKTtDPU1hdGgubWluKFosdWUpLEk9TWF0aC5tYXgoWix1ZSl9ZWxzZSBpZigiZGF0ZSI9PT1kLm1ldGEudHlwZSl7dmFyIF9lPU53KFg4ZSxbSV0pLEJlPU53KEo4ZSxbQ10pO3JldHVybiBfZShkKSYmQmUoZCl9cmV0dXJuIGQudmFsdWU+PUMmJmQudmFsdWU8PUl9LHtuYW1lOkNwZSxp''@;'; put 'put ''bnB1dHNDb3VudDoyLHNob3dPcGVyYXRvcnM6ITB9KTt2YXIgSHhlPSJub3RfYmV0d2VlbiI7ZnVuY3Rpb24gTnhlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9WnUo''@;'; put 'put ''SHhlLGZ1bmN0aW9uIFoydChkLGcpe3JldHVybiFOdyhubmUsZykoZCl9LHtuYW1lOmtwZSxpbnB1dHNDb3VudDoyLHNob3dPcGVyYXRvcnM6ITB9KTt2YXIgVnhlPSJiZWdpbnNfd2l0aCI7ZnVuY3Rpb24ganhlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9y''@;'; put 'put ''KHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24genhlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9WnUoVnhl''@;'; put 'put ''LGZ1bmN0aW9uIFEydChkLGcpe3ZhciB2PWZ1bmN0aW9uIHoydChkLGcpe3JldHVybiBmdW5jdGlvbiBVMnQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIFkydChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYm''@;'; put 'put ''ZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksWix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKHVl''@;'; put 'put ''KXtDPSEwLFo9dWV9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBafX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIFcydChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gTnhlKGQsZyk7dmFyIGg9T2Jq''@;'; put 'put ''ZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86''@;'; put 'put ''VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBOeGUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIEcydCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBv''@;'; put 'put ''cmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGcsMSlbMF07cmV0dXJuIGV1KGQudmFsdWUpLnRvTG9jYWxlTG93ZXJDYXNlKGQubWV0YS5sb2NhbGUpLnN0YXJ0c1dpdGgoZXUodikpfSx7''@;'; put 'put ''bmFtZTpncGUsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwfSksTCgzNzQ5OSksWnUoImVuZHNfd2l0aCIsZnVuY3Rpb24gZTF0KGQsZyl7dmFyIHY9ZnVuY3Rpb24gSjJ0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIHEydChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8''@;'; put 'put ''ZnVuY3Rpb24gJDJ0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxaLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgu''@;'; put 'put ''bmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2godWUpe0M9ITAsWj11ZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IFp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rp''@;'; put 'put ''b24gSzJ0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBqeGUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJN''@;'; put 'put ''YXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIGp4ZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gWDJ0KCl7dGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oZywxKVswXTtyZXR1cm4g''@;'; put 'put ''ZXUoZC52YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoZC5tZXRhLmxvY2FsZSkuZW5kc1dpdGgoZXUodikpfSx7bmFtZTptcGUsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwfSk7dmFyIEs4ZT0iY29udGFpbnMiO1p1KEs4ZSxmdW5jdGlvbiBhMXQoZCxnKXt2YXIgdj1mdW5jdGlvbiB0''@;'; put 'put ''MXQoZCxnKXtyZXR1cm4gZnVuY3Rpb24gbzF0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBpMXQoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJd''@;'; put 'put ''O2lmKG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaCh1ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1o''@;'; put 'put ''LnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgWn19cmV0dXJuIHZ9fShkLGcpfHxmdW5jdGlvbiByMXQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIHp4ZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGlj''@;'; put 'put ''ZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5''@;'; put 'put ''JC8udGVzdChoKSlyZXR1cm4genhlKGQsZyl9fShkLGcpfHxmdW5jdGlvbiBuMXQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmpl''@;'; put 'put ''Y3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShnLDEpWzBdO3JldHVybiBldShkLnZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZShkLm1ldGEubG9jYWxlKS5pbmRleE9mKGV1KHYpKT49MH0se25hbWU6dnBlLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9y''@;'; put 'put ''czohMH0pO3ZhciBHeGU9Im5vdF9jb250YWlucyI7WnUoR3hlLGZ1bmN0aW9uIGwxdChkLGcpe3JldHVybiFOdyhLOGUsZykoZCl9LHtuYW1lOkFwZSxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KTt2YXIgV3hlPSJkYXRlX3RvbW9ycm93IjtadShXeGUsZnVuY3Rpb24gczF0KGQp''@;'; put 'put ''e3ZhciBnPVRsKGQudmFsdWUsZC5tZXRhLmRhdGVGb3JtYXQpO3JldHVybiEhZy5pc1ZhbGlkKCkmJmcuaXNTYW1lKFRsKCkuc3VidHJhY3QoLTEsImRheXMiKS5zdGFydE9mKCJkYXkiKSwiZCIpfSx7bmFtZTp4cGUsaW5wdXRzQ291bnQ6MH0pO3ZhciBZeGU9ImRhdGVfdG9kYXkiO1p1KFl4''@;'; put 'put ''ZSxmdW5jdGlvbiB1MXQoZCl7dmFyIGc9VGwoZC52YWx1ZSxkLm1ldGEuZGF0ZUZvcm1hdCk7cmV0dXJuISFnLmlzVmFsaWQoKSYmZy5pc1NhbWUoVGwoKS5zdGFydE9mKCJkYXkiKSwiZCIpfSx7bmFtZTpFcGUsaW5wdXRzQ291bnQ6MH0pO3ZhciBFeixVeGU9ImRhdGVfeWVzdGVyZGF5Ijtm''@;'; put 'put ''dW5jdGlvbiAkOGUoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfVp1KFV4ZSxmdW5jdGlvbiBjMXQoZCl7dmFyIGc9VGwoZC52YWx1ZSxkLm1l''@;'; put 'put ''dGEuZGF0ZUZvcm1hdCk7cmV0dXJuISFnLmlzVmFsaWQoKSYmZy5pc1NhbWUoVGwoKS5zdWJ0cmFjdCgxLCJkYXlzIikuc3RhcnRPZigiZGF5IiksImQiKX0se25hbWU6VHBlLGlucHV0c0NvdW50OjB9KTt2YXIgSnhlPSgkOGUoRXo9e30sIm51bWVyaWMiLFtIZixXbCxTeixlbmUsV2wsTXos''@;'; put 'put ''Im5lcSIsV2wsImd0IiwiZ3RlIiwibHQiLCJsdGUiLG5uZSxIeGVdKSwkOGUoRXosInRleHQiLFtIZixXbCxTeixlbmUsV2wsTXosIm5lcSIsV2wsVnhlLCJlbmRzX3dpdGgiLFdsLEs4ZSxHeGVdKSwkOGUoRXosImRhdGUiLFtIZixXbCxTeixlbmUsV2wsTXosIm5lcSIsV2wsWDhlLEo4ZSxu''@;'; put 'put ''bmUsV2wsV3hlLFl4ZSxVeGVdKSxFeik7ZnVuY3Rpb24gWHhlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIGU1ZT0iYnVpbGRpbmciLEt4ZT1bImNsaWNrIiwiaW5wdXQiLCJrZXlkb3duIiwia2V5cHJlc3MiLCJrZXl1cCIsImZvY3VzIiwiYmx1ciIsImNoYW5nZSJdLCR4ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyxoKXsoZnVuY3Rpb24gcDF0''@;'; put 'put ''KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuaG90PWcsdGhpcy5ldmVudE1hbmFnZXI9bmV3IEwxKHRoaXMpLHRoaXMub3B0aW9ucz1JMShkLkRFRkFVTFRTLGgp''@;'; put 'put ''LHRoaXMuX2VsZW1lbnQ9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy5vcHRpb25zLndyYXBJdD8iZGl2Ijp0aGlzLm9wdGlvbnMudGFnTmFtZSksdGhpcy5idWlsZFN0YXRlPW51bGx9cmV0dXJuIGZ1bmN0aW9uIGcxdChkLGcsaCl7ZyYmWHhlKGQucHJvdG90eXBl''@;'; put 'put ''LGcpLGgmJlh4ZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJzZXRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5vcHRpb25zLnZhbHVlPWgsdGhpcy51cGRhdGUoKX19LHtrZXk6ImdldFZhbHVlIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMudmFsdWV9fSx7a2V5OiJlbGVtZW50IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5idWlsZFN0YXRlPT09ZTVlP3RoaXMuX2VsZW1lbnQ6ImJ1aWx0Ij09PXRoaXMuYnVpbGRTdGF0ZT8odGhpcy51cGRhdGUoKSx0aGlzLl9lbGVtZW50''@;'; put 'put ''KToodGhpcy5idWlsZFN0YXRlPWU1ZSx0aGlzLmJ1aWxkKCksdGhpcy5idWlsZFN0YXRlPSJidWlsdCIsdGhpcy5fZWxlbWVudCl9fSx7a2V5OiJpc0J1aWx0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiJidWlsdCI9PT10aGlzLmJ1aWxkU3RhdGV9fSx7a2V5OiJ0cmFuc2xhdGVJZlBvc3Np''@;'; put 'put ''YmxlIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGgmJmguc3RhcnRzV2l0aChsMyk/dGhpcy5ob3QuZ2V0VHJhbnNsYXRlZFBocmFzZShoKTpofX0se2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcyx2PWZ1bmN0aW9uKEksWil7aC5ldmVu''@;'; put 'put ''dE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihJLFosZnVuY3Rpb24odWUpe3JldHVybiBoLnJ1bkxvY2FsSG9va3MoWix1ZSxoKX0pfTtpZih0aGlzLmJ1aWxkU3RhdGV8fCh0aGlzLmJ1aWxkU3RhdGU9ZTVlKSx0aGlzLm9wdGlvbnMuY2xhc3NOYW1lJiZPMCh0aGlzLl9lbGVtZW50LHRoaXMu''@;'; put 'put ''b3B0aW9ucy5jbGFzc05hbWUpLHRoaXMub3B0aW9ucy5jaGlsZHJlbi5sZW5ndGgpVXIodGhpcy5vcHRpb25zLmNoaWxkcmVuLGZ1bmN0aW9uKEMpe3JldHVybiBoLl9lbGVtZW50LmFwcGVuZENoaWxkKEMuZWxlbWVudCl9KTtlbHNlIGlmKHRoaXMub3B0aW9ucy53cmFwSXQpe3ZhciB5PXRo''@;'; put 'put ''aXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMub3B0aW9ucy50YWdOYW1lKTtHbCh0aGlzLm9wdGlvbnMsZnVuY3Rpb24oQyxJKXt2b2lkIDAhPT15W0ldJiYiY2xhc3NOYW1lIiE9PUkmJiJ0YWdOYW1lIiE9PUkmJiJjaGlsZHJlbiIhPT1JJiYoeVtJXT1oLnRyYW5zbGF0''@;'; put 'put ''ZUlmUG9zc2libGUoQykpfSksdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh5KSxVcihLeGUsZnVuY3Rpb24oQyl7cmV0dXJuIHYoeSxDKX0pfWVsc2UgVXIoS3hlLGZ1bmN0aW9uKEMpe3JldHVybiB2KGguX2VsZW1lbnQsQyl9KX19LHtrZXk6InVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt9''@;'; put 'put ''fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMudmFsdWU9IiIsdGhpcy51cGRhdGUoKX19LHtrZXk6InNob3ciLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnN0eWxlLmRpc3BsYXk9IiJ9fSx7a2V5OiJoaWRlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMu''@;'; put 'put ''ZWxlbWVudC5zdHlsZS5kaXNwbGF5PSJub25lIn19LHtrZXk6ImZvY3VzIix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveSgpLHRoaXMuZXZlbnRNYW5hZ2VyPW51bGwsdGhpcy5ob3Q9bnVsbCx0aGlz''@;'; put 'put ''Ll9lbGVtZW50LnBhcmVudE5vZGUmJnRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9lbGVtZW50KSx0aGlzLl9lbGVtZW50PW51bGx9fV0sW3trZXk6IkRFRkFVTFRTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYTMoe2NsYXNzTmFtZToiIix2YWx1ZToiIix0YWdO''@;'; put 'put ''YW1lOiJkaXYiLGNoaWxkcmVuOltdLHdyYXBJdDohMH0pfX1dKSxkfSgpO0IyKCR4ZSx1ZCk7Y29uc3QgVnc9JHhlO2Z1bmN0aW9uIHQ1ZShkKXtyZXR1cm4odDVlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcp''@;'; put 'put ''e3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gcXhlKGQsZyl7Zm9yKHZhciBoPTA7''@;'; put 'put ''aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gcm5lKCl7cmV0dXJuIHJuZT0i''@;'; put 'put ''dW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9QTF0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFy''@;'; put 'put ''Z3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxybmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIEExdChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9ak8oZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gbjVl''@;'; put 'put ''KGQsZyl7cmV0dXJuKG41ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIGIxdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PXQ1ZShnKXx8ImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZVRlKGQpfWZ1bmN0aW9uIGVUZShkKXtpZih2b2lkIDA9PT1kKXRocm93''@;'; put 'put ''IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gak8oZCl7cmV0dXJuKGpPPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgp''@;'; put 'put ''OmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIGluZT1uZXcgV2Vha01hcCxDMXQ9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIHkxdChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZuNWUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiB3MXQoZCl7dmFyIGc9ZnVuY3Rpb24gXzF0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29u''@;'; put 'put ''c3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9''@;'; put 'put ''fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9ak8oZCk7aWYoZyl7dmFyIEM9ak8odGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGIxdCh0aGlzLHkpfX0oaCk7ZnVuY3Rp''@;'; put 'put ''b24gaCh2LHkpe3ZhciBDO3JldHVybiBmdW5jdGlvbiBtMXQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSxDPWcuY2FsbCh0aGlzLHYsSTEoaC5ERUZBVUxUUyx5KSksaW5l''@;'; put 'put ''LnNldChlVGUoQykse30pLEMucmVnaXN0ZXJIb29rcygpLEN9cmV0dXJuIGZ1bmN0aW9uIHYxdChkLGcsaCl7ZyYmcXhlKGQucHJvdG90eXBlLGcpLGgmJnF4ZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJyZWdpc3Rl''@;'; put 'put ''ckhvb2tzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5hZGRMb2NhbEhvb2soImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQ2xpY2soKX0pLHRoaXMuYWRkTG9jYWxIb29rKCJrZXl1cCIsZnVuY3Rpb24oQyl7cmV0dXJuIHkub25LZXl1cChDKX0pfX0se2tleToiYnVp''@;'; put 'put ''bGQiLHZhbHVlOmZ1bmN0aW9uKCl7cm5lKGpPKGgucHJvdG90eXBlKSwiYnVpbGQiLHRoaXMpLmNhbGwodGhpcyk7dmFyIHk9aW5lLmdldCh0aGlzKSxDPXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt5LmlucHV0PXRoaXMuX2VsZW1lbnQuZmlyc3RDaGlsZCxP''@;'; put 'put ''MCh0aGlzLl9lbGVtZW50LCJodFVJSW5wdXQiKSxPMChDLCJodFVJSW5wdXRJY29uIiksdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChDKSx0aGlzLnVwZGF0ZSgpfX0se2tleToidXBkYXRlIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuaXNCdWlsdCgpKXt2YXIgeT1pbmUuZ2V0KHRoaXMp''@;'; put 'put ''LmlucHV0O3kudHlwZT10aGlzLm9wdGlvbnMudHlwZSx5LnBsYWNlaG9sZGVyPXRoaXMudHJhbnNsYXRlSWZQb3NzaWJsZSh0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXIpLHkudmFsdWU9dGhpcy50cmFuc2xhdGVJZlBvc3NpYmxlKHRoaXMub3B0aW9ucy52YWx1ZSl9fX0se2tleToiZm9jdXMi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pc0J1aWx0KCkmJmluZS5nZXQodGhpcykuaW5wdXQuZm9jdXMoKX19LHtrZXk6Im9uQ2xpY2siLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToib25LZXl1cCIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5vcHRpb25zLnZhbHVlPXkudGFyZ2V0LnZhbHVl''@;'; put 'put ''fX1dLFt7a2V5OiJERUZBVUxUUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEzKHtwbGFjZWhvbGRlcjoiIix0eXBlOiJ0ZXh0Iix0YWdOYW1lOiJpbnB1dCJ9KX19XSksaH0oVncpO2NvbnN0IFpPPUMxdDtmdW5jdGlvbiByNWUoZCl7cmV0dXJuKHI1ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3lt''@;'; put 'put ''Ym9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIHRUZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIHpPKCl7cmV0dXJuIHpPPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1NMXQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJv''@;'; put 'put ''cGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LHpPLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBNMXQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwo''@;'; put 'put ''ZCxnKSYmbnVsbCE9PShkPWp3KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIGk1ZShkLGcpe3JldHVybihpNWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlv''@;'; put 'put ''biBUMXQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1yNWUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0''@;'; put 'put ''dXJuIG5UZShkKX1mdW5jdGlvbiBuVGUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIGp3KGQpe3JldHVybihqdz1PYmpl''@;'; put 'put ''Y3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBvbmU9bmV3IFdlYWtNYXAsRDF0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBFMXQoZCxnKXtp''@;'; put 'put ''ZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFs''@;'; put 'put ''dWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmaTVlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24geDF0KGQpe3ZhciBnPWZ1bmN0aW9uIEkxdCgpe2lmKCJ1bmRlZmluZWQiPT10''@;'; put 'put ''eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChC''@;'; put 'put ''b29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PWp3KGQpO2lmKGcpe3ZhciBDPWp3KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHko''@;'; put 'put ''dGhpcyxhcmd1bWVudHMpO3JldHVybiBUMXQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5KXt2YXIgQztyZXR1cm4gZnVuY3Rpb24gazF0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9''@;'; put 'put ''KHRoaXMsaCksQz1nLmNhbGwodGhpcyx2LEkxKGguREVGQVVMVFMseSkpLG9uZS5zZXQoblRlKEMpLHt9KSxDLm1lbnU9bnVsbCxDLml0ZW1zPVtdLEMucmVnaXN0ZXJIb29rcygpLEN9cmV0dXJuIGZ1bmN0aW9uIFMxdChkLGcsaCl7ZyYmdFRlKGQucHJvdG90eXBlLGcpLGgmJnRUZShkLGgp''@;'; put 'put ''LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJyZWdpc3Rlckhvb2tzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5hZGRMb2NhbEhvb2soImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQ2xpY2soKX0pfX0s''@;'; put 'put ''e2tleToic2V0SXRlbXMiLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMuaXRlbXM9dGhpcy50cmFuc2xhdGVOYW1lcyh5KSx0aGlzLm1lbnUmJnRoaXMubWVudS5zZXRNZW51SXRlbXModGhpcy5pdGVtcyl9fSx7a2V5OiJ0cmFuc2xhdGVOYW1lcyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhp''@;'; put 'put ''cztyZXR1cm4gVXIoeSxmdW5jdGlvbihJKXtJLm5hbWU9Qy50cmFuc2xhdGVJZlBvc3NpYmxlKEkubmFtZSl9KSx5fX0se2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt6TyhqdyhoLnByb3RvdHlwZSksImJ1aWxkIix0aGlzKS5jYWxsKHRoaXMpLHRoaXMubWVudT1u''@;'; put 'put ''ZXcgeDhlKHRoaXMuaG90LHtjbGFzc05hbWU6Imh0U2VsZWN0VUkgaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUiLGtlZXBJblZpZXdwb3J0OiExLHN0YW5kYWxvbmU6ITAsY29udGFpbmVyOnRoaXMub3B0aW9ucy5tZW51Q29udGFpbmVyfSksdGhpcy5tZW51LnNldE1lbnVJdGVtcyh0aGlzLml0''@;'; put 'put ''ZW1zKTt2YXIgQz1uZXcgVncodGhpcy5ob3Qse2NsYXNzTmFtZToiaHRVSVNlbGVjdENhcHRpb24ifSksST1uZXcgVncodGhpcy5ob3Qse2NsYXNzTmFtZToiaHRVSVNlbGVjdERyb3Bkb3duIn0pLFo9b25lLmdldCh0aGlzKTtaLmNhcHRpb249QyxaLmNhcHRpb25FbGVtZW50PUMuZWxlbWVu''@;'; put 'put ''dCxaLmRyb3Bkb3duPUksVXIoW0MsSV0sZnVuY3Rpb24odWUpe3JldHVybiB5Ll9lbGVtZW50LmFwcGVuZENoaWxkKHVlLmVsZW1lbnQpfSksdGhpcy5tZW51LmFkZExvY2FsSG9vaygic2VsZWN0IixmdW5jdGlvbih1ZSl7cmV0dXJuIHkub25NZW51U2VsZWN0KHVlKX0pLHRoaXMubWVudS5h''@;'; put 'put ''ZGRMb2NhbEhvb2soImFmdGVyQ2xvc2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25NZW51Q2xvc2VkKCl9KSx0aGlzLnVwZGF0ZSgpfX0se2tleToidXBkYXRlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5O3RoaXMuaXNCdWlsdCgpJiYoeT10aGlzLm9wdGlvbnMudmFsdWU/dGhpcy5vcHRpb25z''@;'; put 'put ''LnZhbHVlLm5hbWU6dGhpcy5tZW51LmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKGV0ZSksb25lLmdldCh0aGlzKS5jYXB0aW9uRWxlbWVudC50ZXh0Q29udGVudD15LHpPKGp3KGgucHJvdG90eXBlKSwidXBkYXRlIix0aGlzKS5jYWxsKHRoaXMpKX19LHtrZXk6Im9wZW5PcHRpb25zIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLm1lbnUmJih0aGlzLm1lbnUub3BlbigpLHRoaXMubWVudS5zZXRQb3NpdGlvbih7bGVmdDp0aGlzLmhvdC5pc0x0cigpP3kubGVmdC01OnkubGVmdC0zMSx0b3A6eS50b3AtMSx3aWR0''@;'; put 'put ''aDp5LndpZHRoLGhlaWdodDp5LmhlaWdodH0pKX19LHtrZXk6ImNsb3NlT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1lbnUmJnRoaXMubWVudS5jbG9zZSgpfX0se2tleToib25NZW51U2VsZWN0Iix2YWx1ZTpmdW5jdGlvbih5KXt5Lm5hbWUhPT1XbCYmKHRoaXMub3B0aW9ucy52''@;'; put 'put ''YWx1ZT15LHRoaXMudXBkYXRlKCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJzZWxlY3QiLHRoaXMub3B0aW9ucy52YWx1ZSkpfX0se2tleToib25NZW51Q2xvc2VkIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJDbG9zZSIpfX0se2tleToib25DbGljayIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXt0aGlzLm9wZW5PcHRpb25zKCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubWVudSYmKHRoaXMubWVudS5kZXN0cm95KCksdGhpcy5tZW51PW51bGwpO3ZhciB5PW9uZS5nZXQodGhpcyksQz15LmNhcHRpb24sST15LmRyb3Bkb3duO0MmJkMuZGVz''@;'; put 'put ''dHJveSgpLEkmJkkuZGVzdHJveSgpLHpPKGp3KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiREVGQVVMVFMiLGdldDpmdW5jdGlvbigpe3JldHVybiBhMyh7Y2xhc3NOYW1lOiJodFVJU2VsZWN0Iix3cmFwSXQ6ITF9KX19XSksaH0oVncpO2NvbnN0''@;'; put 'put ''IHJUZT1EMXQ7ZnVuY3Rpb24gbzVlKGQpe3JldHVybihvNWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBhNWUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsr''@;'; put 'put ''KXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBpVGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBhbmUoKXtyZXR1cm4gYW5lPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1OMXQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3du''@;'; put 'put ''UHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LGFuZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gTjF0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j''@;'; put 'put ''YWxsKGQsZykmJm51bGwhPT0oZD1HTyhkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBsNWUoZCxnKXtyZXR1cm4obDVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVu''@;'; put 'put ''Y3Rpb24gWjF0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09bzVlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIp''@;'; put 'put ''O3JldHVybiBmdW5jdGlvbiB6MXQoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBHTyhkKXtyZXR1cm4oR089T2Jq''@;'; put 'put ''ZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgVzF0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBWMXQoZCxnKXtpZigiZnVuY3Rpb24iIT10''@;'; put 'put ''eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZToh''@;'; put 'put ''MCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmbDVlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gajF0KGQpe3ZhciBnPWZ1bmN0aW9uIEcxdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8''@;'; put 'put ''IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0''@;'; put 'put ''aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PUdPKGQpO2lmKGcpe3ZhciBDPUdPKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMp''@;'; put 'put ''O3JldHVybiBaMXQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5KXt2YXIgQztyZXR1cm4gZnVuY3Rpb24gRjF0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKEM9Zy5j''@;'; put 'put ''YWxsKHRoaXMsdix7aWQ6eS5pZCxzdGF0ZWxlc3M6ITF9KSkubmFtZT15Lm5hbWUsQy5hZGRTZXBhcmF0b3I9eS5hZGRTZXBhcmF0b3IsQy5lbGVtZW50cy5wdXNoKG5ldyByVGUoQy5ob3Qse21lbnVDb250YWluZXI6eS5tZW51Q29udGFpbmVyfSkpLEMuZWxlbWVudHMucHVzaChuZXcgWk8o''@;'; put 'put ''Qy5ob3Qse3BsYWNlaG9sZGVyOkhwZX0pKSxDLmVsZW1lbnRzLnB1c2gobmV3IFpPKEMuaG90LHtwbGFjZWhvbGRlcjpOcGV9KSksQy5yZWdpc3Rlckhvb2tzKCksQ31yZXR1cm4gZnVuY3Rpb24gSDF0KGQsZyxoKXtnJiZpVGUoZC5wcm90b3R5cGUsZyksaCYmaVRlKGQsaCksT2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6InJlZ2lzdGVySG9va3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmdldFNlbGVjdEVsZW1lbnQoKS5hZGRMb2NhbEhvb2soInNlbGVjdCIsZnVuY3Rpb24oQyl7cmV0dXJuIHkub25D''@;'; put 'put ''b25kaXRpb25TZWxlY3QoQyl9KSx0aGlzLmdldFNlbGVjdEVsZW1lbnQoKS5hZGRMb2NhbEhvb2soImFmdGVyQ2xvc2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25TZWxlY3RVSUNsb3NlZCgpfSksVXIodGhpcy5nZXRJbnB1dEVsZW1lbnRzKCksZnVuY3Rpb24oQyl7Qy5hZGRMb2NhbEhvb2so''@;'; put 'put ''ImtleWRvd24iLGZ1bmN0aW9uKEkpe3JldHVybiB5Lm9uSW5wdXRLZXlEb3duKEkpfSl9KX19LHtrZXk6InNldFN0YXRlIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzO2lmKHRoaXMucmVzZXQoKSx5KXt2YXIgST1hMyh5LmNvbW1hbmQpO0kubmFtZS5zdGFydHNXaXRoKHR1KSYmKEku''@;'; put 'put ''bmFtZT10aGlzLmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKEkubmFtZSkpLHRoaXMuZ2V0U2VsZWN0RWxlbWVudCgpLnNldFZhbHVlKEkpLFVyKHkuYXJncyxmdW5jdGlvbihaLHVlKXtpZih1ZT5JLmlucHV0c0NvdW50LTEpcmV0dXJuITE7dmFyIF9lPUMuZ2V0SW5wdXRFbGVtZW50KHVlKTtf''@;'; put 'put ''ZS5zZXRWYWx1ZShaKSxfZVtJLmlucHV0c0NvdW50PnVlPyJzaG93IjoiaGlkZSJdKCksdWV8fHNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gX2UuZm9jdXMoKX0sMTApfSl9fX0se2tleToiZ2V0U3RhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5nZXRTZWxlY3RFbGVtZW50''@;'; put 'put ''KCkuZ2V0VmFsdWUoKXx8Vk8oSGYpLEM9W107cmV0dXJuIFVyKHRoaXMuZ2V0SW5wdXRFbGVtZW50cygpLGZ1bmN0aW9uKEksWil7eS5pbnB1dHNDb3VudD5aJiZDLnB1c2goSS5nZXRWYWx1ZSgpKX0pLHtjb21tYW5kOnksYXJnczpDfX19LHtrZXk6InVwZGF0ZVN0YXRlIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbih5LEMpe3ZhciBJPVZPKHk/eS5uYW1lOkhmKTt0aGlzLnN0YXRlLnNldFZhbHVlQXRJbmRleChDLHtjb21tYW5kOkksYXJnczp5P3kuYXJnczpbXX0pLHl8fFVyKHRoaXMuZ2V0SW5wdXRFbGVtZW50cygpLGZ1bmN0aW9uKFope3JldHVybiBaLnNldFZhbHVlKG51bGwpfSl9fSx7a2V5''@;'; put 'put ''OiJnZXRTZWxlY3RFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnRzLmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4geSBpbnN0YW5jZW9mIHJUZX0pWzBdfX0se2tleToiZ2V0SW5wdXRFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PWFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowO3JldHVybiB0aGlzLmdldElucHV0RWxlbWVudHMoKVt5XX19LHtrZXk6ImdldElucHV0RWxlbWVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudHMuZmlsdGVyKGZ1bmN0aW9uKHkpe3Jl''@;'; put 'put ''dHVybiB5IGluc3RhbmNlb2YgWk99KX19LHtrZXk6ImdldE1lbnVJdGVtRGVzY3JpcHRvciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3JldHVybntrZXk6dGhpcy5pZCxuYW1lOnRoaXMubmFtZSxpc0NvbW1hbmQ6ITEsZGlzYWJsZVNlbGVjdGlvbjohMCxoaWRkZW46ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4geS5pc0hpZGRlbigpfSxyZW5kZXJlcjpmdW5jdGlvbihJLFosdWUsX2UsQmUsTmUpe08wKFoucGFyZW50Tm9kZSwiaHRGaWx0ZXJzTWVudUNvbmRpdGlvbiIpLHkuYWRkU2VwYXJhdG9yJiZPMChaLnBhcmVudE5vZGUsImJvcmRlciIpO3ZhciBLZT15LmhvdC5yb290RG9jdW1l''@;'; put 'put ''bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIE8wKEtlLCJodEZpbHRlcnNNZW51TGFiZWwiKSxLZS50ZXh0Q29udGVudD1OZSxaLmFwcGVuZENoaWxkKEtlKSxaLnBhcmVudE5vZGUuaGFzQXR0cmlidXRlKCJnaG9zdC10YWJsZSIpfHxVcih5LmVsZW1lbnRzLGZ1bmN0aW9uKHB0KXty''@;'; put 'put ''ZXR1cm4gWi5hcHBlbmRDaGlsZChwdC5lbGVtZW50KX0pLFp9fX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5LEM9dGhpcy5ob3QuZ2V0UGx1Z2luKCJmaWx0ZXJzIikuZ2V0U2VsZWN0ZWRDb2x1bW4oKSxJPUMmJkMudmlzdWFsSW5kZXgsdWU9ZnVuY3Rpb24gZDF0KGQp''@;'; put 'put ''e3ZhciBnPVtdLGg9ZDtyZXR1cm4gSnhlW2hdfHwoaD0idGV4dCIpLFVyKEp4ZVtoXSxmdW5jdGlvbih2KXt2YXIgeTt5PXY9PT1XbD97bmFtZTpXbH06YTMoVk8odikpLGcucHVzaCh5KX0pLGd9KCh5PXRoaXMuaG90KS5nZXREYXRhVHlwZS5hcHBseSh5LGZ1bmN0aW9uIEwxdChkKXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24gUDF0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGE1ZShkKX0oZCl8fGZ1bmN0aW9uIEIxdChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5''@;'; put 'put ''LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBSMXQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIGE1ZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQu''@;'; put 'put ''Y29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gYTVlKGQsZyl9fShkKXx8ZnVuY3Rpb24gTzF0''@;'; put 'put ''KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KHRo''@;'; put 'put ''aXMuaG90LmdldFNlbGVjdGVkTGFzdCgpfHxbMCxJXSkpKTtVcih0aGlzLmdldElucHV0RWxlbWVudHMoKSxmdW5jdGlvbihfZSl7cmV0dXJuIF9lLmhpZGUoKX0pLHRoaXMuZ2V0U2VsZWN0RWxlbWVudCgpLnNldEl0ZW1zKHVlKSxhbmUoR08oaC5wcm90b3R5cGUpLCJyZXNldCIsdGhpcyku''@;'; put 'put ''Y2FsbCh0aGlzKSx0aGlzLmdldFNlbGVjdEVsZW1lbnQoKS5zZXRWYWx1ZSh1ZVswXSl9fSx7a2V5OiJvbkNvbmRpdGlvblNlbGVjdCIsdmFsdWU6ZnVuY3Rpb24oeSl7VXIodGhpcy5nZXRJbnB1dEVsZW1lbnRzKCksZnVuY3Rpb24oQyxJKXtDW3kuaW5wdXRzQ291bnQ+ST8ic2hvdyI6Imhp''@;'; put 'put ''ZGUiXSgpLDA9PT1JJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIEMuZm9jdXMoKX0sMTApfSksdGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiLHkpfX0se2tleToib25TZWxlY3RVSUNsb3NlZCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyQ2xvc2Ui''@;'; put 'put ''KX19LHtrZXk6Im9uSW5wdXRLZXlEb3duIix2YWx1ZTpmdW5jdGlvbih5KXtkTyh5LmtleUNvZGUsIkVOVEVSIik/KHRoaXMucnVuTG9jYWxIb29rcygiYWNjZXB0IiksXzgoeSkpOmRPKHkua2V5Q29kZSwiRVNDQVBFIikmJih0aGlzLnJ1bkxvY2FsSG9va3MoImNhbmNlbCIpLF84KHkpKX19''@;'; put 'put ''XSksaH0ocXRlKTtjb25zdCBzNWU9VzF0O3ZhciB4ej17fTtmdW5jdGlvbiBZMXQoZCl7aWYoIXh6W2RdKXRocm93IEVycm9yKCdPcGVyYXRpb24gd2l0aCBpZCAiJy5jb25jYXQoZCwnIiBkb2VzIG5vdCBleGlzdC4nKSk7dmFyIGc9eHpbZF0uZnVuYztyZXR1cm4gZnVuY3Rpb24oaCx2KXty''@;'; put 'put ''ZXR1cm4gZyhoLHYpfX1mdW5jdGlvbiBVMXQoZCl7cmV0dXJuIHh6W2RdLm5hbWV9ZnVuY3Rpb24gdTVlKGQsZyxoKXt4eltkXT17bmFtZTpnLGZ1bmM6aH19dmFyIFp3PSJjb25qdW5jdGlvbiI7dTVlKFp3LExwZSxmdW5jdGlvbiBKMXQoZCxnKXtyZXR1cm4gZC5ldmVyeShmdW5jdGlvbiho''@;'; put 'put ''KXtyZXR1cm4gaC5mdW5jKGcpfSl9KTt2YXIgbG5lPSJkaXNqdW5jdGlvbiI7dTVlKGxuZSx0dGUsZnVuY3Rpb24gSzF0KGQsZyl7cmV0dXJuIGQuc29tZShmdW5jdGlvbihoKXtyZXR1cm4gaC5mdW5jKGcpfSl9KTt2YXIgYzVlPSJkaXNqdW5jdGlvbldpdGhFeHRyYUNvbmRpdGlvbiI7ZnVu''@;'; put 'put ''Y3Rpb24gZjVlKGQpe3JldHVybihmNWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5j''@;'; put 'put ''b25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBvVGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJs''@;'; put 'put ''ZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBzbmUoKXtyZXR1cm4gc25lPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcs''@;'; put 'put ''aCx2KXt2YXIgeT1udXQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LHNuZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbnV0''@;'; put 'put ''KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1XTyhkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBoNWUoZCxnKXtyZXR1cm4oaDVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1''@;'; put 'put ''bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gb3V0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09ZjVlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0''@;'; put 'put ''cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBhVGUoZCl9ZnVuY3Rpb24gYVRlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVl''@;'; put 'put ''biBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiBXTyhkKXtyZXR1cm4oV089T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX11NWUoYzVl''@;'; put 'put ''LHR0ZSxmdW5jdGlvbiBxMXQoZCxnKXtpZihkLmxlbmd0aDwzKXRocm93IEVycm9yKCJPcGVyYXRpb24gZG9lc24ndCB3b3JrIG9uIGxlc3MgdGhlbiB0aHJlZSBjb25kaXRpb25zLiIpO3JldHVybiBkLnNsaWNlKDAsZC5sZW5ndGgtMSkuc29tZShmdW5jdGlvbihoKXtyZXR1cm4gaC5mdW5j''@;'; put 'put ''KGcpfSkmJmRbZC5sZW5ndGgtMV0uZnVuYyhnKX0pO3ZhciB1bmU9bmV3IFdlYWtNYXAsbHV0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBydXQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVp''@;'; put 'put ''dGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRh''@;'; put 'put ''YmxlOiExfSksZyYmaDVlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gaXV0KGQpe3ZhciBnPWZ1bmN0aW9uIGF1dCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVdP''@;'; put 'put ''KGQpO2lmKGcpe3ZhciBDPVdPKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBvdXQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5KXt2YXIgQztyZXR1cm4gZnVuY3Rpb24g''@;'; put 'put ''ZXV0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksQz1nLmNhbGwodGhpcyx2LEkxKGguREVGQVVMVFMseSkpLHVuZS5zZXQoYVRlKEMpLHt9KSxDfXJldHVybiBmdW5jdGlv''@;'; put 'put ''biB0dXQoZCxnLGgpe2cmJm9UZShkLnByb3RvdHlwZSxnKSxoJiZvVGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7c25lKFdPKGgucHJvdG90eXBlKSwiYnVpbGQiLHRoaXMp''@;'; put 'put ''LmNhbGwodGhpcyk7dmFyIHk9dW5lLmdldCh0aGlzKTt5LmlucHV0PXRoaXMuX2VsZW1lbnQuZmlyc3RDaGlsZDt2YXIgQz10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTtDLnRleHRDb250ZW50PXRoaXMudHJhbnNsYXRlSWZQb3NzaWJsZSh0aGlzLm9wdGlv''@;'; put 'put ''bnMubGFiZWwudGV4dENvbnRlbnQpLEMuaHRtbEZvcj10aGlzLnRyYW5zbGF0ZUlmUG9zc2libGUodGhpcy5vcHRpb25zLmxhYmVsLmh0bWxGb3IpLHkubGFiZWw9Qyx0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKEMpLHRoaXMudXBkYXRlKCl9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7aWYodGhpcy5pc0J1aWx0KCkpe3ZhciB5PXVuZS5nZXQodGhpcyk7eS5pbnB1dC5jaGVja2VkPXRoaXMub3B0aW9ucy5jaGVja2VkLHkubGFiZWwudGV4dENvbnRlbnQ9dGhpcy50cmFuc2xhdGVJZlBvc3NpYmxlKHRoaXMub3B0aW9ucy5sYWJlbC50ZXh0Q29udGVudCl9fX0se2tl''@;'; put 'put ''eToiaXNDaGVja2VkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuY2hlY2tlZH19LHtrZXk6InNldENoZWNrZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXTt0aGlz''@;'; put 'put ''Lm9wdGlvbnMuY2hlY2tlZD15LHRoaXMudXBkYXRlKCl9fSx7a2V5OiJmb2N1cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzQnVpbHQoKSYmdW5lLmdldCh0aGlzKS5pbnB1dC5mb2N1cygpfX1dLFt7a2V5OiJERUZBVUxUUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEzKHt0eXBlOiJyYWRp''@;'; put 'put ''byIsdGFnTmFtZToiaW5wdXQiLGNsYXNzTmFtZToiaHRVSVJhZGlvIixsYWJlbDp7fX0pfX1dKSxofShWdyk7Y29uc3QgbFRlPWx1dDtmdW5jdGlvbiBkNWUoZCl7cmV0dXJuKGQ1ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9m''@;'; put 'put ''dW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfXZhciBzVGU7ZnVuY3Rpb24gdVRl''@;'; put 'put ''KGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24g''@;'; put 'put ''cDVlKGQsZyl7cmV0dXJuKHA1ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIGR1dChkLGcpe2lmKGcmJigib2JqZWN0Ij09PWQ1ZShnKXx8ImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gcHV0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3''@;'; put 'put ''IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gY25lKGQpe3JldHVybihjbmU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5k''@;'; put 'put ''KCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgbXV0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBmdXQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIg''@;'; put 'put ''ZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQs''@;'; put 'put ''InByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmcDVlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gaHV0KGQpe3ZhciBnPWZ1bmN0aW9uIGd1dCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJl''@;'; put 'put ''dHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgeSx2PWNuZShkKTtpZihnKXt2YXIgQz1jbmUodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGR1dCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2LHkpe3Zh''@;'; put 'put ''ciBDO3JldHVybiBmdW5jdGlvbiB1dXQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoQz1nLmNhbGwodGhpcyx2LHtpZDp5LmlkLHN0YXRlbGVzczohMX0pKS5uYW1lPXku''@;'; put 'put ''bmFtZSxDLmJ1aWxkT3BlcmF0b3JzRWxlbWVudCgpLEN9cmV0dXJuIGZ1bmN0aW9uIGN1dChkLGcsaCl7ZyYmdVRlKGQucHJvdG90eXBlLGcpLGgmJnVUZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJnZXRNZW51SXRl''@;'; put 'put ''bURlc2NyaXB0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztyZXR1cm57a2V5OnRoaXMuaWQsbmFtZTp0aGlzLm5hbWUsaXNDb21tYW5kOiExLGRpc2FibGVTZWxlY3Rpb246ITAsaGlkZGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHkuaXNIaWRkZW4oKX0scmVuZGVyZXI6ZnVuY3Rpb24o''@;'; put 'put ''SSxaKXtyZXR1cm4gTzAoWi5wYXJlbnROb2RlLCJodEZpbHRlcnNNZW51T3BlcmF0b3JzIiksWi5wYXJlbnROb2RlLmhhc0F0dHJpYnV0ZSgiZ2hvc3QtdGFibGUiKXx8VXIoeS5lbGVtZW50cyxmdW5jdGlvbih1ZSl7cmV0dXJuIFouYXBwZW5kQ2hpbGQodWUuZWxlbWVudCl9KSxafX19fSx7''@;'; put 'put ''a2V5OiJidWlsZE9wZXJhdG9yc0VsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPVtadyxsbmVdO1VyKEMsZnVuY3Rpb24oSSl7dmFyIFo9bmV3IGxUZSh5LmhvdCx7bmFtZToib3BlcmF0b3IiLGxhYmVsOntodG1sRm9yOkksdGV4dENvbnRlbnQ6VTF0KEkpfSx2YWx1ZTpJ''@;'; put 'put ''LGNoZWNrZWQ6ST09PUNbMF0saWQ6SX0pO1ouYWRkTG9jYWxIb29rKCJjaGFuZ2UiLGZ1bmN0aW9uKHVlKXtyZXR1cm4geS5vblJhZGlvSW5wdXRDaGFuZ2UodWUpfSkseS5lbGVtZW50cy5wdXNoKFopfSl9fSx7a2V5OiJzZXRDaGVja2VkIix2YWx1ZTpmdW5jdGlvbih5KXtpZih0aGlzLmVs''@;'; put 'put ''ZW1lbnRzLmxlbmd0aDx5KXRocm93IEVycm9yKFAyKHNUZXx8KHNUZT1mdW5jdGlvbiBzdXQoZCxnKXtyZXR1cm4gZ3x8KGc9ZC5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUoZyl9fSkpfShbIlJhZGlv''@;'; put 'put ''IGJ1dHRvbiB3aXRoIGluZGV4ICIsIiBkb2Vzbid0IGV4aXN0LiJdKSkseSkpO1VyKHRoaXMuZWxlbWVudHMsZnVuY3Rpb24oQyxJKXtDLnNldENoZWNrZWQoST09PXkpfSl9fSx7a2V5OiJnZXRBY3RpdmVPcGVyYXRpb25JZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmVsZW1lbnRz''@;'; put 'put ''LmZpbmQoZnVuY3Rpb24oQyl7cmV0dXJuIEMgaW5zdGFuY2VvZiBsVGUmJkMuaXNDaGVja2VkKCl9KTtyZXR1cm4geT95LmdldFZhbHVlKCk6Wnd9fSx7a2V5OiJnZXRTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRBY3RpdmVPcGVyYXRpb25JZCgpfX0se2tleToic2V0''@;'; put 'put ''U3RhdGUiLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMucmVzZXQoKSx5JiZ0aGlzLmdldEFjdGl2ZU9wZXJhdGlvbklkKCkhPT15JiZVcih0aGlzLmVsZW1lbnRzLGZ1bmN0aW9uKEMpe0Muc2V0Q2hlY2tlZChDLmdldFZhbHVlKCk9PT15KX0pfX0se2tleToidXBkYXRlU3RhdGUiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOlp3LEM9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsST15O0k9PT1jNWUmJihJPWxuZSksdGhpcy5zdGF0ZS5zZXRWYWx1ZUF0SW5kZXgoQyxJ''@;'; put 'put ''KX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0Q2hlY2tlZCgwKX19LHtrZXk6Im9uUmFkaW9JbnB1dENoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5zZXRTdGF0ZSh5LnRhcmdldC52YWx1ZSl9fV0pLGh9KHF0ZSk7Y29uc3QgdnV0PW11dDtmdW5jdGlvbiB5''@;'; put 'put ''dXQoZCxnKXt2YXIgaD1kO3JldHVybiIiPT09aCYmKGg9IigiLmNvbmNhdChnLCIpIikpLGh9ZmJlKCk7dmFyIGc1ZT1uZXcgU2V0KFsxXSkuaGFzKDEpLHd1dD1nNWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBBcnJheS5mcm9tO2Z1bmN0aW9uIFR6KGQpe3ZhciBnPWQ7cmV0dXJuIGc1ZSYmKGc9''@;'; put 'put ''bmV3IFNldChnKSksZnVuY3Rpb24oaCl7cmV0dXJuIGc1ZT9nLmhhcyhoKTohIX5nLmluZGV4T2YoaCl9fWZ1bmN0aW9uIGZUZShkKXtyZXR1cm4gbnVsbD09ZD8iIjpkfWZ1bmN0aW9uIG01ZShkKXt2YXIgZz1kO3JldHVybihnPXd1dD9BcnJheS5mcm9tKG5ldyBTZXQoZykpOkpoZShnKSku''@;'; put 'put ''c29ydChmdW5jdGlvbihoLHYpe3JldHVybiJudW1iZXIiPT10eXBlb2YgaCYmIm51bWJlciI9PXR5cGVvZiB2P2gtdjpoPT09dj8wOmg+dj8xOi0xfSl9ZnVuY3Rpb24gaFRlKGQsZyxoLHYpe3ZhciBJLHk9W10sQz1kPT09ZztyZXR1cm4gQ3x8KEk9VHooZykpLFVyKGQsZnVuY3Rpb24oWil7''@;'; put 'put ''dmFyIHVlPSExOyhDfHxJKFopKSYmKHVlPSEwKTt2YXIgX2U9e2NoZWNrZWQ6dWUsdmFsdWU6Wix2aXN1YWxWYWx1ZTp5dXQoWixoKX07diYmdihfZSkseS5wdXNoKF9lKX0pLHl9ZnVuY3Rpb24gdjVlKGQpe3JldHVybih2NWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9''@;'; put 'put ''PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9''@;'; put 'put ''KShkKX1mdW5jdGlvbiBkVGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYu''@;'; put 'put ''a2V5LHYpfX1mdW5jdGlvbiBmbmUoKXtyZXR1cm4gZm5lPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1DdXQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw''@;'; put 'put ''dG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LGZuZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gQ3V0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwh''@;'; put 'put ''PT0oZD1ZTyhkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBBNWUoZCxnKXtyZXR1cm4oQTVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gTXV0KGQsZyl7''@;'; put 'put ''aWYoZyYmKCJvYmplY3QiPT09djVlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBwVGUoZCl9''@;'; put 'put ''ZnVuY3Rpb24gcFRlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiBZTyhkKXtyZXR1cm4oWU89T2JqZWN0LnNldFByb3Rv''@;'; put 'put ''dHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX1MKDQ5Mjk1KTt2YXIgeTVlPW5ldyBXZWFrTWFwLHh1dD1mdW5jdGlvbihkKXshZnVuY3Rpb24ga3V0KGQsZyl7aWYo''@;'; put 'put ''ImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVl''@;'; put 'put ''OmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJkE1ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIFN1dChkKXt2YXIgZz1mdW5jdGlvbiBFdXQoKXtpZigidW5kZWZpbmVkIj09dHlw''@;'; put 'put ''ZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9v''@;'; put 'put ''bGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1ZTyhkKTtpZihnKXt2YXIgQz1ZTyh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRo''@;'; put 'put ''aXMsYXJndW1lbnRzKTtyZXR1cm4gTXV0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYseSl7dmFyIEM7cmV0dXJuIGZ1bmN0aW9uIGJ1dChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0''@;'; put 'put ''aGlzLGgpLEM9Zy5jYWxsKHRoaXMsdixJMShoLkRFRkFVTFRTLHkpKSx5NWUuc2V0KHBUZShDKSx7fSksQ31yZXR1cm4gZnVuY3Rpb24gX3V0KGQsZyxoKXtnJiZkVGUoZC5wcm90b3R5cGUsZyksaCYmZFRlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRh''@;'; put 'put ''YmxlOiExfSl9KGgsW3trZXk6ImJ1aWxkIix2YWx1ZTpmdW5jdGlvbigpe2ZuZShZTyhoLnByb3RvdHlwZSksImJ1aWxkIix0aGlzKS5jYWxsKHRoaXMpLHk1ZS5nZXQodGhpcykubGluaz10aGlzLl9lbGVtZW50LmZpcnN0Q2hpbGR9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7''@;'; put 'put ''IXRoaXMuaXNCdWlsdCgpfHwoeTVlLmdldCh0aGlzKS5saW5rLnRleHRDb250ZW50PXRoaXMudHJhbnNsYXRlSWZQb3NzaWJsZSh0aGlzLm9wdGlvbnMudGV4dENvbnRlbnQpKX19XSxbe2tleToiREVGQVVMVFMiLGdldDpmdW5jdGlvbigpe3JldHVybiBhMyh7aHJlZjoiIyIsdGFnTmFtZToi''@;'; put 'put ''YSJ9KX19XSksaH0oVncpO2NvbnN0IGdUZT14dXQ7ZnVuY3Rpb24gdzVlKGQpe3JldHVybih3NWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4g''@;'; put 'put ''ZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBtVGUoZCl7cmV0dXJuIGZ1bmN0aW9uIEx1dChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBi''@;'; put 'put ''NWUoZCl9KGQpfHxmdW5jdGlvbiBEdXQoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQpfShkKXx8ZnVuY3Rpb24gSXV0KGQsZyl7aWYoZCl7aWYoInN0cmlu''@;'; put 'put ''ZyI9PXR5cGVvZiBkKXJldHVybiBiNWUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBB''@;'; put 'put ''cnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIGI1ZShkLGcpfX0oZCl8fGZ1bmN0aW9uIFR1dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJl''@;'; put 'put ''YWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGI1ZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5n''@;'; put 'put ''dGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIHZUZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2''@;'; put 'put ''YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIFVPKCl7cmV0dXJuIFVPPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIg''@;'; put 'put ''eT1CdXQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LFVPLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBCdXQoZCxnKXtmb3Io''@;'; put 'put ''OyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPXp3KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIF81ZShkLGcpe3JldHVybihfNWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5''@;'; put 'put ''KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBIdXQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT13NWUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1h''@;'; put 'put ''eSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIEFUZShkKX1mdW5jdGlvbiBBVGUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIp''@;'; put 'put ''O3JldHVybiBkfWZ1bmN0aW9uIHp3KGQpe3JldHVybih6dz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZhciBWdXQ9bmV3IFdlYWtN''@;'; put 'put ''YXAsWnV0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBQdXQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3Qu''@;'; put 'put ''Y3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmXzVlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gRnV0KGQp''@;'; put 'put ''e3ZhciBnPWZ1bmN0aW9uIE51dCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJv''@;'; put 'put ''dG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PXp3KGQpO2lmKGcpe3ZhciBDPXp3KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5j''@;'; put 'put ''b25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBIdXQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5KXt2YXIgQztyZXR1cm4gZnVuY3Rpb24gT3V0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJv''@;'; put 'put ''cigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksQz1nLmNhbGwodGhpcyx2LEkxKGguREVGQVVMVFMseSkpLFZ1dC5zZXQoQVRlKEMpLHt9KSxDLnNlYXJjaElucHV0PW5ldyBaTyhDLmhvdCx7cGxhY2Vob2xkZXI6RnBlLGNsYXNzTmFtZToiaHRVSU11bHRp''@;'; put 'put ''cGxlU2VsZWN0U2VhcmNoIn0pLEMuc2VsZWN0QWxsVUk9bmV3IGdUZShDLmhvdCx7dGV4dENvbnRlbnQ6T3BlLGNsYXNzTmFtZToiaHRVSVNlbGVjdEFsbCJ9KSxDLmNsZWFyQWxsVUk9bmV3IGdUZShDLmhvdCx7dGV4dENvbnRlbnQ6UnBlLGNsYXNzTmFtZToiaHRVSUNsZWFyQWxsIn0pLEMu''@;'; put 'put ''aXRlbXM9W10sQy5pdGVtc0JveD1udWxsLEMucmVnaXN0ZXJIb29rcygpLEN9cmV0dXJuIGZ1bmN0aW9uIFJ1dChkLGcsaCl7ZyYmdlRlKGQucHJvdG90eXBlLGcpLGgmJnZUZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5''@;'; put 'put ''OiJyZWdpc3Rlckhvb2tzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5zZWFyY2hJbnB1dC5hZGRMb2NhbEhvb2soImtleWRvd24iLGZ1bmN0aW9uKEMpe3JldHVybiB5Lm9uSW5wdXRLZXlEb3duKEMpfSksdGhpcy5zZWFyY2hJbnB1dC5hZGRMb2NhbEhvb2soImlucHV0Iixm''@;'; put 'put ''dW5jdGlvbihDKXtyZXR1cm4geS5vbklucHV0KEMpfSksdGhpcy5zZWxlY3RBbGxVSS5hZGRMb2NhbEhvb2soImNsaWNrIixmdW5jdGlvbihDKXtyZXR1cm4geS5vblNlbGVjdEFsbENsaWNrKEMpfSksdGhpcy5jbGVhckFsbFVJLmFkZExvY2FsSG9vaygiY2xpY2siLGZ1bmN0aW9uKEMpe3Jl''@;'; put 'put ''dHVybiB5Lm9uQ2xlYXJBbGxDbGljayhDKX0pfX0se2tleToic2V0SXRlbXMiLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMuaXRlbXM9eSx0aGlzLml0ZW1zQm94JiZ0aGlzLml0ZW1zQm94LmxvYWREYXRhKHRoaXMuaXRlbXMpfX0se2tleToic2V0TG9jYWxlIix2YWx1ZTpmdW5jdGlvbih5KXt0''@;'; put 'put ''aGlzLmxvY2FsZT15fX0se2tleToiZ2V0TG9jYWxlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZX19LHtrZXk6ImdldEl0ZW1zIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBtVGUodGhpcy5pdGVtcyl9fSx7a2V5OiJnZXRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24gR3V0KGQpe3ZhciBnPVtdO3JldHVybiBVcihkLGZ1bmN0aW9uKGgpe2guY2hlY2tlZCYmZy5wdXNoKGgudmFsdWUpfSksZ30odGhpcy5pdGVtcyl9fSx7a2V5OiJpc1NlbGVjdGVkQWxsVmFsdWVzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZW1zLmxlbmd0''@;'; put 'put ''aD09PXRoaXMuZ2V0VmFsdWUoKS5sZW5ndGh9fSx7a2V5OiJidWlsZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO1VPKHp3KGgucHJvdG90eXBlKSwiYnVpbGQiLHRoaXMpLmNhbGwodGhpcyk7dmFyIEM9dGhpcy5ob3Qucm9vdERvY3VtZW50LEk9Qy5jcmVhdGVFbGVtZW50KCJkaXYi''@;'; put 'put ''KSxaPW5ldyBWdyh0aGlzLmhvdCx7Y2xhc3NOYW1lOiJodFVJU2VsZWN0aW9uQ29udHJvbHMiLGNoaWxkcmVuOlt0aGlzLnNlbGVjdEFsbFVJLHRoaXMuY2xlYXJBbGxVSV19KTt0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc2VhcmNoSW5wdXQuZWxlbWVudCksdGhpcy5fZWxlbWVu''@;'; put 'put ''dC5hcHBlbmRDaGlsZChaLmVsZW1lbnQpLHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoSSk7dmFyIHVlPWZ1bmN0aW9uKEJlKXt5Ll9lbGVtZW50JiYoeS5pdGVtc0JveCYmeS5pdGVtc0JveC5kZXN0cm95KCksTzAoQmUsImh0VUlNdWx0aXBsZVNlbGVjdEhvdCIpLHkuaXRlbXNCb3g9bmV3''@;'; put 'put ''IHkuaG90LmNvbnN0cnVjdG9yKEJlLHtkYXRhOnkuaXRlbXMsY29sdW1uczpbe2RhdGE6ImNoZWNrZWQiLHR5cGU6ImNoZWNrYm94IixsYWJlbDp7cHJvcGVydHk6InZpc3VhbFZhbHVlIixwb3NpdGlvbjoiYWZ0ZXIifX1dLGJlZm9yZVJlbmRlcmVyOmZ1bmN0aW9uKE90LCR0LGZuLExuLGly''@;'; put 'put ''LG1yKXtPdC50aXRsZT1tci5pbnN0YW5jZS5nZXREYXRhQXRSb3dQcm9wKCR0LG1yLmxhYmVsLnByb3BlcnR5KX0sbWF4Q29sczoxLGF1dG9XcmFwQ29sOiEwLGhlaWdodDoxMTAsY29sV2lkdGhzOmZ1bmN0aW9uKCl7cmV0dXJuIHkuaXRlbXNCb3guY29udGFpbmVyLnNjcm9sbFdpZHRoLUJj''@;'; put 'put ''KEMpfSxjb3B5UGFzdGU6ITEsZGlzYWJsZVZpc3VhbFNlbGVjdGlvbjoiYXJlYSIsZmlsbEhhbmRsZTohMSxmcmFnbWVudFNlbGVjdGlvbjoiY2VsbCIsdGFiTW92ZXM6e3JvdzoxLGNvbDowfSxsYXlvdXREaXJlY3Rpb246eS5ob3QuaXNSdGwoKT8icnRsIjoibHRyIn0pLHkuaXRlbXNCb3gu''@;'; put 'put ''aW5pdCgpLHkuaXRlbXNCb3guZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpLmFkZFNob3J0Y3V0KHtrZXlzOltbIkVzY2FwZSJdXSxjYWxsYmFjazpmdW5jdGlvbihPdCl7eS5ydW5Mb2NhbEhvb2tzKCJrZXlkb3duIixPdCx5KX0sZ3JvdXA6Im11bHRpcGxlU2VsZWN0''@;'; put 'put ''Lml0ZW1Cb3gifSkpfTt1ZShJKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIHVlKEkpfSwxMDApfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZWFyY2hJbnB1dC5yZXNldCgpLHRoaXMuc2VsZWN0QWxsVUkucmVzZXQoKSx0aGlzLmNsZWFyQWxsVUkucmVzZXQo''@;'; put 'put ''KX19LHtrZXk6InVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXshdGhpcy5pc0J1aWx0KCl8fCh0aGlzLml0ZW1zQm94LmxvYWREYXRhKGZ1bmN0aW9uIHp1dChkLGcpe3ZhciBoPVR6KGcpO3JldHVybiBPbChkLGZ1bmN0aW9uKHYpe3JldHVybiB2LmNoZWNrZWQ9aCh2LnZhbHVlKSx2fSl9KHRo''@;'; put 'put ''aXMuaXRlbXMsdGhpcy5vcHRpb25zLnZhbHVlKSksVU8oencoaC5wcm90b3R5cGUpLCJ1cGRhdGUiLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLml0ZW1zQm94JiZ0aGlzLml0ZW1zQm94LmRlc3Ryb3koKSx0aGlzLnNlYXJjaElucHV0''@;'; put 'put ''LmRlc3Ryb3koKSx0aGlzLmNsZWFyQWxsVUkuZGVzdHJveSgpLHRoaXMuc2VsZWN0QWxsVUkuZGVzdHJveSgpLHRoaXMuc2VhcmNoSW5wdXQ9bnVsbCx0aGlzLmNsZWFyQWxsVUk9bnVsbCx0aGlzLnNlbGVjdEFsbFVJPW51bGwsdGhpcy5pdGVtc0JveD1udWxsLHRoaXMuaXRlbXM9bnVsbCxV''@;'; put 'put ''Tyh6dyhoLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJvbklucHV0Iix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgWixDPXRoaXMsST15LnRhcmdldC52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSh0aGlzLmdldExvY2FsZSgpKTtaPSIiPT09ST9tVGUodGhpcy5p''@;'; put 'put ''dGVtcyk6ZzQodGhpcy5pdGVtcyxmdW5jdGlvbih1ZSl7cmV0dXJuIiIuY29uY2F0KHVlLnZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZShDLmdldExvY2FsZSgpKS5pbmRleE9mKEkpPj0wfSksdGhpcy5pdGVtc0JveC5sb2FkRGF0YShaKX19LHtrZXk6Im9uSW5wdXRLZXlEb3duIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbih5KXt0aGlzLnJ1bkxvY2FsSG9va3MoImtleWRvd24iLHksdGhpcyksYjNlKGRPLHkua2V5Q29kZSkoIkFSUk9XX0RPV058VEFCIikmJiF0aGlzLml0ZW1zQm94LmlzTGlzdGVuaW5nKCkmJihfOCh5KSx0aGlzLml0ZW1zQm94Lmxpc3RlbigpLHRoaXMuaXRlbXNCb3guc2VsZWN0''@;'; put 'put ''Q2VsbCgwLDApKX19LHtrZXk6Im9uU2VsZWN0QWxsQ2xpY2siLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPVtdO3kucHJldmVudERlZmF1bHQoKSxVcih0aGlzLml0ZW1zQm94LmdldFNvdXJjZURhdGEoKSxmdW5jdGlvbihJLFope0kuY2hlY2tlZD0hMCxDLnB1c2goUWRlKEksWilbMF0pfSks''@;'; put 'put ''dGhpcy5pdGVtc0JveC5zZXRTb3VyY2VEYXRhQXRDZWxsKEMpfX0se2tleToib25DbGVhckFsbENsaWNrIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1bXTt5LnByZXZlbnREZWZhdWx0KCksVXIodGhpcy5pdGVtc0JveC5nZXRTb3VyY2VEYXRhKCksZnVuY3Rpb24oSSxaKXtJLmNoZWNrZWQ9''@;'; put 'put ''ITEsQy5wdXNoKFFkZShJLFopWzBdKX0pLHRoaXMuaXRlbXNCb3guc2V0U291cmNlRGF0YUF0Q2VsbChDKX19XSxbe2tleToiREVGQVVMVFMiLGdldDpmdW5jdGlvbigpe3JldHVybiBhMyh7Y2xhc3NOYW1lOiJodFVJTXVsdGlwbGVTZWxlY3QiLHZhbHVlOltdfSl9fV0pLGh9KFZ3KTtjb25z''@;'; put 'put ''dCB5VGU9WnV0O2Z1bmN0aW9uIHdUZShkLGcpe3JldHVybiBmdW5jdGlvbiBRdXQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIFV1dChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0''@;'; put 'put ''b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksWix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKHVlKXtDPSEwLFo9dWV9Zmlu''@;'; put 'put ''YWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBafX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uIFl1dChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gYlRlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50''@;'; put 'put ''b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8''@;'; put 'put ''MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBiVGUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIFd1dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVy''@;'; put 'put ''YWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYlRlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRb''@;'; put 'put ''aF07cmV0dXJuIHZ9dmFyIGFNPSJieV92YWx1ZSI7ZnVuY3Rpb24gQzVlKGQpe3JldHVybihDNWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4g''@;'; put 'put ''ZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBfVGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2''@;'; put 'put ''PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBDVGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3Jp''@;'; put 'put ''dGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBobmUoKXtyZXR1cm4gaG5lPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1yY3QoZyxoKTtpZih5''@;'; put 'put ''KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LGhuZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcmN0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3Rv''@;'; put 'put ''dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1RTyhkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBrNWUoZCxnKXtyZXR1cm4oazVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19w''@;'; put 'put ''cm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gYWN0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09QzVlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4g''@;'; put 'put ''b2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBsY3QoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlv''@;'; put 'put ''biBRTyhkKXtyZXR1cm4oUU89T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX1adShhTSxmdW5jdGlvbiBKdXQoZCxnKXtyZXR1cm4oMCx3''@;'; put 'put ''VGUoZywxKVswXSkoZC52YWx1ZSl9LHtuYW1lOiJCeSB2YWx1ZSIsaW5wdXRzQ291bnQ6MCxpbnB1dFZhbHVlc0RlY29yYXRvcjpmdW5jdGlvbihnKXtyZXR1cm5bVHood1RlKGcsMSlbMF0pXX0sc2hvd09wZXJhdG9yczohMX0pO3ZhciB1Y3Q9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIGljdChk''@;'; put 'put ''LGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9y''@;'; put 'put ''Ont2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZrNWUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBvY3QoZCl7dmFyIGc9ZnVuY3Rpb24gc2N0KCl7aWYoInVuZGVmaW5l''@;'; put 'put ''ZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3Ry''@;'; put 'put ''dWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9UU8oZCk7aWYoZyl7dmFyIEM9UU8odGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5h''@;'; put 'put ''cHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGFjdCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2LHkpe3ZhciBDO3JldHVybiBmdW5jdGlvbiB0Y3QoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rp''@;'; put 'put ''b24iKX0odGhpcyxoKSwoQz1nLmNhbGwodGhpcyx2LHtpZDp5LmlkLHN0YXRlbGVzczohMX0pKS5uYW1lPXkubmFtZSxDLmVsZW1lbnRzLnB1c2gobmV3IHlUZShDLmhvdCkpLEMucmVnaXN0ZXJIb29rcygpLEN9cmV0dXJuIGZ1bmN0aW9uIG5jdChkLGcsaCl7ZyYmQ1RlKGQucHJvdG90eXBl''@;'; put 'put ''LGcpLGgmJkNUZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJyZWdpc3Rlckhvb2tzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5nZXRNdWx0aXBsZVNlbGVjdEVsZW1lbnQoKS5hZGRMb2NhbEhvb2so''@;'; put 'put ''ImtleWRvd24iLGZ1bmN0aW9uKEMpe3JldHVybiB5Lm9uSW5wdXRLZXlEb3duKEMpfSl9fSx7a2V5OiJzZXRTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oeSl7aWYodGhpcy5yZXNldCgpLHkmJnkuY29tbWFuZC5rZXk9PT1hTSl7dmFyIEM9dGhpcy5nZXRNdWx0aXBsZVNlbGVjdEVsZW1lbnQoKTtD''@;'; put 'put ''LnNldEl0ZW1zKHkuaXRlbXNTbmFwc2hvdCksQy5zZXRWYWx1ZSh5LmFyZ3NbMF0pLEMuc2V0TG9jYWxlKHkubG9jYWxlKX19fSx7a2V5OiJnZXRTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmdldE11bHRpcGxlU2VsZWN0RWxlbWVudCgpLEM9eS5nZXRJdGVtcygpO3JldHVy''@;'; put 'put ''bntjb21tYW5kOntrZXk6eS5pc1NlbGVjdGVkQWxsVmFsdWVzKCl8fCFDLmxlbmd0aD9IZjphTX0sYXJnczpbeS5nZXRWYWx1ZSgpXSxpdGVtc1NuYXBzaG90OkN9fX0se2tleToidXBkYXRlU3RhdGUiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST1mdW5jdGlvbih1ZSxfZSxCZSxO''@;'; put 'put ''ZSxLZSl7dmFyICR0PWZ1bmN0aW9uIFh1dChkLGcpe3JldHVybiBmdW5jdGlvbiBlY3QoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIHF1dChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRl''@;'; put 'put ''cmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksWix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxsKGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKHVlKXtDPSEwLFo9dWV9''@;'; put 'put ''ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBafX1yZXR1cm4gdn19KGQsZyl8fGZ1bmN0aW9uICR1dChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gX1RlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlw''@;'; put 'put ''ZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8''@;'; put 'put ''MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBfVGUoZCxnKX19KGQsZyl8fGZ1bmN0aW9uIEt1dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBp''@;'; put 'put ''dGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGc0KF9lLGZ1bmN0aW9uKFFyKXtyZXR1cm4gUXIubmFtZT09PWFNfSksMSlbMF0sZm49e30sTG49Qy5ob3QuZ2V0VHJhbnNsYXRlZFBocmFzZShudGUpO2lmKCR0''@;'; put 'put ''KXt2YXIgaXI9bTVlKE9sKE5lKHVlLEtlKSxmdW5jdGlvbihRcil7cmV0dXJuIFFyLnZhbHVlfSkpO0JlJiYoJHQuYXJnc1swXT1CZSk7dmFyIG1yPVtdLFNyPWhUZShpciwkdC5hcmdzWzBdLExuLGZ1bmN0aW9uKFFyKXtRci5jaGVja2VkJiZtci5wdXNoKFFyLnZhbHVlKX0pO2ZuLmxvY2Fs''@;'; put 'put ''ZT1DLmhvdC5nZXRDZWxsTWV0YSgwLHkuZWRpdGVkQ29uZGl0aW9uU3RhY2suY29sdW1uKS5sb2NhbGUsZm4uYXJncz1bbXJdLGZuLmNvbW1hbmQ9Vk8oYU0pLGZuLml0ZW1zU25hcHNob3Q9U3J9ZWxzZSBmbi5hcmdzPVtdLGZuLmNvbW1hbmQ9Vk8oSGYpO0Muc3RhdGUuc2V0VmFsdWVBdElu''@;'; put 'put ''ZGV4KHVlLGZuKX07SSh5LmVkaXRlZENvbmRpdGlvblN0YWNrLmNvbHVtbix5LmVkaXRlZENvbmRpdGlvblN0YWNrLmNvbmRpdGlvbnMseS5jb25kaXRpb25BcmdzQ2hhbmdlLHkuZmlsdGVyZWRSb3dzRmFjdG9yeSkseS5kZXBlbmRlbnRDb25kaXRpb25TdGFja3MubGVuZ3RoJiZJKHkuZGVw''@;'; put 'put ''ZW5kZW50Q29uZGl0aW9uU3RhY2tzWzBdLmNvbHVtbix5LmRlcGVuZGVudENvbmRpdGlvblN0YWNrc1swXS5jb25kaXRpb25zLHkuY29uZGl0aW9uQXJnc0NoYW5nZSx5LmZpbHRlcmVkUm93c0ZhY3RvcnkseS5lZGl0ZWRDb25kaXRpb25TdGFjayl9fSx7a2V5OiJnZXRNdWx0aXBsZVNlbGVj''@;'; put 'put ''dEVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudHMuZmlsdGVyKGZ1bmN0aW9uKHkpe3JldHVybiB5IGluc3RhbmNlb2YgeVRlfSlbMF19fSx7a2V5OiJnZXRNZW51SXRlbURlc2NyaXB0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztyZXR1cm57a2V5''@;'; put 'put ''OnRoaXMuaWQsbmFtZTp0aGlzLm5hbWUsaXNDb21tYW5kOiExLGRpc2FibGVTZWxlY3Rpb246ITAsaGlkZGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHkuaXNIaWRkZW4oKX0scmVuZGVyZXI6ZnVuY3Rpb24oSSxaLHVlLF9lLEJlLE5lKXtPMChaLnBhcmVudE5vZGUsImh0RmlsdGVyc01lbnVWYWx1''@;'; put 'put ''ZSIpO3ZhciBLZT15LmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIE8wKEtlLCJodEZpbHRlcnNNZW51TGFiZWwiKSxLZS50ZXh0Q29udGVudD1OZSxaLmFwcGVuZENoaWxkKEtlKSxaLnBhcmVudE5vZGUuaGFzQXR0cmlidXRlKCJnaG9zdC10YWJsZSIpfHxV''@;'; put 'put ''cih5LmVsZW1lbnRzLGZ1bmN0aW9uKHB0KXtyZXR1cm4gWi5hcHBlbmRDaGlsZChwdC5lbGVtZW50KX0pLFp9fX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaG90LmdldFRyYW5zbGF0ZWRQaHJhc2UobnRlKSxDPW01ZSh0aGlzLl9nZXRDb2x1bW5WaXNpYmxl''@;'; put 'put ''VmFsdWVzKCkpLEk9aFRlKEMsQyx5KTt0aGlzLmdldE11bHRpcGxlU2VsZWN0RWxlbWVudCgpLnNldEl0ZW1zKEkpLGhuZShRTyhoLnByb3RvdHlwZSksInJlc2V0Iix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuZ2V0TXVsdGlwbGVTZWxlY3RFbGVtZW50KCkuc2V0VmFsdWUoQyk7dmFyIFo9dGhp''@;'; put 'put ''cy5ob3QuZ2V0UGx1Z2luKCJmaWx0ZXJzIikuZ2V0U2VsZWN0ZWRDb2x1bW4oKS52aXN1YWxJbmRleDt0aGlzLmdldE11bHRpcGxlU2VsZWN0RWxlbWVudCgpLnNldExvY2FsZSh0aGlzLmhvdC5nZXRDZWxsTWV0YSgwLFopLmxvY2FsZSl9fSx7a2V5OiJvbklucHV0S2V5RG93biIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oeSl7ZE8oeS5rZXlDb2RlLCJFU0NBUEUiKSYmKHRoaXMucnVuTG9jYWxIb29rcygiY2FuY2VsIiksXzgoeSkpfX0se2tleToiX2dldENvbHVtblZpc2libGVWYWx1ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0UGx1Z2luKCJmaWx0ZXJzIikuZ2V0U2Vs''@;'; put 'put ''ZWN0ZWRDb2x1bW4oKTtyZXR1cm4gT2wodGhpcy5ob3QuZ2V0RGF0YUF0Q29sKHkmJnkudmlzdWFsSW5kZXgpLGZ1bmN0aW9uKEkpe3JldHVybiBmVGUoSSl9KX19XSksaH0ocXRlKTtjb25zdCBjY3Q9dWN0O2Z1bmN0aW9uIFM1ZShkKXtyZXR1cm4oUzVlPSJmdW5jdGlvbiI9PXR5cGVvZiBT''@;'; put 'put ''eW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJz''@;'; put 'put ''eW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24ga1RlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gTTVlKGQsZyl7cmV0dXJuKE01ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIGdjdChkLGcp''@;'; put 'put ''e2lmKGcmJigib2JqZWN0Ij09PVM1ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24gbWN0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gZG5lKGQpe3JldHVybihkbmU9T2JqZWN0LnNldFByb3Rv''@;'; put 'put ''dHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgQWN0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBkY3QoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVs''@;'; put 'put ''bCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFi''@;'; put 'put ''bGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmTTVlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gcGN0KGQpe3ZhciBnPWZ1bmN0aW9uIHZjdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29u''@;'; put 'put ''c3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEw''@;'; put 'put ''fWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PWRuZShkKTtpZihnKXt2YXIgQz1kbmUodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGdj''@;'; put 'put ''dCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2LHkpe3ZhciBDO3JldHVybiBmdW5jdGlvbiBmY3QoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoQz1nLmNhbGwodGhpcyx2''@;'; put 'put ''LHtpZDp5LmlkLHN0YXRlbGVzczohMH0pKS5uYW1lPXkubmFtZSxDLmVsZW1lbnRzLnB1c2gobmV3IFpPKEMuaG90LHt0eXBlOiJidXR0b24iLHZhbHVlOkJwZSxjbGFzc05hbWU6Imh0VUlCdXR0b24gaHRVSUJ1dHRvbk9LIixpZGVudGlmaWVyOmguQlVUVE9OX09LfSkpLEMuZWxlbWVudHMu''@;'; put 'put ''cHVzaChuZXcgWk8oQy5ob3Qse3R5cGU6ImJ1dHRvbiIsdmFsdWU6UHBlLGNsYXNzTmFtZToiaHRVSUJ1dHRvbiBodFVJQnV0dG9uQ2FuY2VsIixpZGVudGlmaWVyOmguQlVUVE9OX0NBTkNFTH0pKSxDLnJlZ2lzdGVySG9va3MoKSxDfXJldHVybiBmdW5jdGlvbiBoY3QoZCxnLGgpe2cmJmtU''@;'; put 'put ''ZShkLnByb3RvdHlwZSxnKSxoJiZrVGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToicmVnaXN0ZXJIb29rcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO1VyKHRoaXMuZWxlbWVudHMsZnVuY3Rpb24oQyl7Qy5h''@;'; put 'put ''ZGRMb2NhbEhvb2soImNsaWNrIixmdW5jdGlvbihJLFope3JldHVybiB5Lm9uQnV0dG9uQ2xpY2soSSxaKX0pfSl9fSx7a2V5OiJnZXRNZW51SXRlbURlc2NyaXB0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztyZXR1cm57a2V5OnRoaXMuaWQsbmFtZTp0aGlzLm5hbWUsaXNDb21t''@;'; put 'put ''YW5kOiExLGRpc2FibGVTZWxlY3Rpb246ITAsaGlkZGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHkuaXNIaWRkZW4oKX0scmVuZGVyZXI6ZnVuY3Rpb24oSSxaKXtyZXR1cm4gTzAoWi5wYXJlbnROb2RlLCJodEZpbHRlcnNNZW51QWN0aW9uQmFyIiksWi5wYXJlbnROb2RlLmhhc0F0dHJpYnV0ZSgi''@;'; put 'put ''Z2hvc3QtdGFibGUiKXx8VXIoeS5lbGVtZW50cyxmdW5jdGlvbih1ZSl7cmV0dXJuIFouYXBwZW5kQ2hpbGQodWUuZWxlbWVudCl9KSxafX19fSx7a2V5OiJhY2NlcHQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ydW5Mb2NhbEhvb2tzKCJhY2NlcHQiKX19LHtrZXk6ImNhbmNlbCIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXt0aGlzLnJ1bkxvY2FsSG9va3MoImNhbmNlbCIpfX0se2tleToib25CdXR0b25DbGljayIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtDLm9wdGlvbnMuaWRlbnRpZmllcj09PWguQlVUVE9OX09LP3RoaXMuYWNjZXB0KCk6dGhpcy5jYW5jZWwoKX19XSxbe2tleToiQlVUVE9OX09L''@;'; put 'put ''IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ib2sifX0se2tleToiQlVUVE9OX0NBTkNFTCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuImNhbmNlbCJ9fV0pLGh9KHF0ZSk7Y29uc3QgeWN0PUFjdDt2YXIgU1RlLE1UZTtmdW5jdGlvbiBFVGUoZCxnKXtyZXR1cm4gZnVuY3Rpb24gQ2N0KGQpe2lmKEFy''@;'; put 'put ''cmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBfY3QoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEwLEM9ITE7''@;'; put 'put ''dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaCh1ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhy''@;'; put 'put ''b3cgWn19cmV0dXJuIHZ9fShkLGcpfHxmdW5jdGlvbiBiY3QoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIHhUZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0''@;'; put 'put ''b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4geFRlKGQsZyl9fShkLGcpfHxm''@;'; put 'put ''dW5jdGlvbiB3Y3QoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkg''@;'; put 'put ''bWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHhUZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIFRUZShkLGcpe3JldHVybiBnfHwoZz1kLnNsaWNlKDApKSxP''@;'; put 'put ''YmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZShnKX19KSl9ZnVuY3Rpb24ga2N0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9u''@;'; put 'put ''Iil9ZnVuY3Rpb24gSVRlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2Lmtl''@;'; put 'put ''eSx2KX19dmFyIERUZT0iQ29uZGl0aW9uQ29sbGVjdGlvbi5maWx0ZXJpbmdTdGF0ZXMiLExUZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7dmFyIGg9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTtrY3QodGhpcyxkKSx0aGlzLmhv''@;'; put 'put ''dD1nLHRoaXMuaXNNYXBSZWdpc3RyYWJsZT1oLHRoaXMuZmlsdGVyaW5nU3RhdGVzPW5ldyBZZWUsITA9PT10aGlzLmlzTWFwUmVnaXN0cmFibGU/dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAoRFRlLHRoaXMuZmlsdGVyaW5nU3RhdGVzKTp0aGlzLmZpbHRlcmluZ1N0''@;'; put 'put ''YXRlcy5pbml0KHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldE51bWJlck9mSW5kZXhlcygpKX1yZXR1cm4gZnVuY3Rpb24gU2N0KGQsZyxoKXtnJiZJVGUoZC5wcm90b3R5cGUsZyksaCYmSVRlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxl''@;'; put 'put ''OiExfSl9KGQsW3trZXk6ImlzRW1wdHkiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmdldEZpbHRlcmVkQ29sdW1ucygpLmxlbmd0aH19LHtrZXk6ImlzTWF0Y2giLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHksQz10aGlzLmZpbHRlcmluZ1N0YXRlcy5nZXRWYWx1ZUF0SW5k''@;'; put 'put ''ZXgodiksST1udWxsIT09KHk9bnVsbD09Qz92b2lkIDA6Qy5jb25kaXRpb25zKSYmdm9pZCAwIT09eT95OltdO3JldHVybiB0aGlzLmlzTWF0Y2hJbkNvbmRpdGlvbnMoSSxoLG51bGw9PUM/dm9pZCAwOkMub3BlcmF0aW9uKX19LHtrZXk6ImlzTWF0Y2hJbkNvbmRpdGlvbnMiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKGgsdil7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOlp3O3JldHVybiFoLmxlbmd0aHx8WTF0KHkpKGgsdil9fSx7a2V5OiJhZGRDb25kaXRpb24iLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9YXJndW1lbnRzLmxl''@;'; put 'put ''bmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOlp3LEM9YXJndW1lbnRzLmxlbmd0aD4zP2FyZ3VtZW50c1szXTp2b2lkIDAsST10aGlzLmhvdC5nZXRDZWxsTWV0YSgwLGgpLmxvY2FsZSxaPU9sKHYuYXJncyxmdW5jdGlvbihOZSl7cmV0dXJuInN0cmluZyI9PXR5''@;'; put 'put ''cGVvZiBOZT9OZS50b0xvY2FsZUxvd2VyQ2FzZShJKTpOZX0pLHVlPXYubmFtZXx8di5jb21tYW5kLmtleTt0aGlzLnJ1bkxvY2FsSG9va3MoImJlZm9yZUFkZCIsaCk7dmFyIF9lPXRoaXMuZ2V0T3BlcmF0aW9uKGgpO2lmKF9lKXtpZihfZSE9PXkpdGhyb3cgRXJyb3IoUDIoU1RlfHwoU1Rl''@;'; put 'put ''PVRUZShbIlRoZSBjb2x1bW4gb2YgaW5kZXggIiwiIGhhcyBiZWVuIGFscmVhZHkgYXBwbGllZCB3aXRoIGEgYCIsImAgXG4gICAgICAgIGZpbHRlciBvcGVyYXRpb24uIFVzZSBgcmVtb3ZlQ29uZGl0aW9uc2AgdG8gY2xlYXIgdGhlIGN1cnJlbnQgY29uZGl0aW9ucyBhbmQgdGhlbiBhZGQg''@;'; put 'put ''bmV3IG9uZXMuIFxuICAgICAgICBNaW5kIHRoYXQgeW91IGNhbm5vdCBtaXggZGlmZmVyZW50IHR5cGVzIG9mIG9wZXJhdGlvbnMgKGZvciBpbnN0YW5jZSwgaWYgeW91IHVzZSBgY29uanVuY3Rpb25gLCBcbiAgICAgICAgdXNlIGl0IGNvbnNlcXVlbnRseSBmb3IgYSBwYXJ0aWN1bGFyIGNv''@;'; put 'put ''bHVtbikuIl0sWyJUaGUgY29sdW1uIG9mIGluZGV4ICIsIiBoYXMgYmVlbiBhbHJlYWR5IGFwcGxpZWQgd2l0aCBhIFxcYCIsIlxcYFxceDIwXG4gICAgICAgIGZpbHRlciBvcGVyYXRpb24uIFVzZSBcXGByZW1vdmVDb25kaXRpb25zXFxgIHRvIGNsZWFyIHRoZSBjdXJyZW50IGNvbmRpdGlv''@;'; put 'put ''bnMgYW5kIHRoZW4gYWRkIG5ldyBvbmVzLlxceDIwXG4gICAgICAgIE1pbmQgdGhhdCB5b3UgY2Fubm90IG1peCBkaWZmZXJlbnQgdHlwZXMgb2Ygb3BlcmF0aW9ucyAoZm9yIGluc3RhbmNlLCBpZiB5b3UgdXNlIFxcYGNvbmp1bmN0aW9uXFxgLFxceDIwXG4gICAgICAgIHVzZSBpdCBjb25z''@;'; put 'put ''ZXF1ZW50bHkgZm9yIGEgcGFydGljdWxhciBjb2x1bW4pLiJdKSksaCxfZSkpfWVsc2UgaWYoYTEoeHpbeV0pKXRocm93IG5ldyBFcnJvcihQMihNVGV8fChNVGU9VFRlKFsiVW5leHBlY3RlZCBvcGVyYXRpb24gbmFtZWQgYCIsImAuIFBvc3NpYmxlIG9uZXMgYXJlIFxuICAgICAgICBgZGlz''@;'; put 'put ''anVuY3Rpb25gIGFuZCBgY29uanVuY3Rpb25gLiJdLFsiVW5leHBlY3RlZCBvcGVyYXRpb24gbmFtZWQgXFxgIiwiXFxgLiBQb3NzaWJsZSBvbmVzIGFyZVxceDIwXG4gICAgICAgIFxcYGRpc2p1bmN0aW9uXFxgIGFuZCBcXGBjb25qdW5jdGlvblxcYC4iXSkpLHkpKTt2YXIgQmU9dGhpcy5n''@;'; put 'put ''ZXRDb25kaXRpb25zKGgpOzA9PT1CZS5sZW5ndGg/dGhpcy5maWx0ZXJpbmdTdGF0ZXMuc2V0VmFsdWVBdEluZGV4KGgse29wZXJhdGlvbjp5LGNvbmRpdGlvbnM6W3tuYW1lOnVlLGFyZ3M6WixmdW5jOk53KHVlLFopfV19LEMpOkJlLnB1c2goe25hbWU6dWUsYXJnczpaLGZ1bmM6TncodWUs''@;'; put 'put ''Wil9KSx0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyQWRkIixoKX19LHtrZXk6ImdldENvbmRpdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2LHk7cmV0dXJuIG51bGwhPT0odj1udWxsPT09KHk9dGhpcy5maWx0ZXJpbmdTdGF0ZXMuZ2V0VmFsdWVBdEluZGV4KGgpKXx8dm9pZCAwPT09''@;'; put 'put ''eT92b2lkIDA6eS5jb25kaXRpb25zKSYmdm9pZCAwIT09dj92OltdfX0se2tleToiZ2V0T3BlcmF0aW9uIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdjtyZXR1cm4gbnVsbD09PSh2PXRoaXMuZmlsdGVyaW5nU3RhdGVzLmdldFZhbHVlQXRJbmRleChoKSl8fHZvaWQgMD09PXY/dm9pZCAwOnYu''@;'; put 'put ''b3BlcmF0aW9ufX0se2tleToiZ2V0RmlsdGVyZWRDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbHRlcmluZ1N0YXRlcy5nZXRFbnRyaWVzKCkubWFwKGZ1bmN0aW9uKGgpe3JldHVybiBFVGUoaCwxKVswXX0pfX0se2tleToiZ2V0Q29sdW1uU3RhY2tQb3NpdGlvbiIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuZ2V0RmlsdGVyZWRDb2x1bW5zKCkuaW5kZXhPZihoKX19LHtrZXk6ImV4cG9ydEFsbENvbmRpdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFN1KHRoaXMuZmlsdGVyaW5nU3RhdGVzLmdldEVudHJpZXMoKSxmdW5jdGlvbihoLHYp''@;'; put 'put ''e3ZhciB5PUVUZSh2LDIpLEk9eVsxXTtyZXR1cm4gaC5wdXNoKHtjb2x1bW46eVswXSxvcGVyYXRpb246SS5vcGVyYXRpb24sY29uZGl0aW9uczpPbChJLmNvbmRpdGlvbnMsZnVuY3Rpb24oX2Upe3JldHVybntuYW1lOl9lLm5hbWUsYXJnczpfZS5hcmdzfX0pfSksaH0sW10pfX0se2tleToi''@;'; put 'put ''aW1wb3J0QWxsQ29uZGl0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpczt0aGlzLmNsZWFuKCksVXIoaCxmdW5jdGlvbih5KXtVcih5LmNvbmRpdGlvbnMsZnVuY3Rpb24oQyl7cmV0dXJuIHYuYWRkQ29uZGl0aW9uKHkuY29sdW1uLEMpfSl9KX19LHtrZXk6InJlbW92ZUNvbmRp''@;'; put 'put ''dGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGgpe3RoaXMucnVuTG9jYWxIb29rcygiYmVmb3JlUmVtb3ZlIixoKSx0aGlzLmZpbHRlcmluZ1N0YXRlcy5jbGVhclZhbHVlKGgpLHRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJSZW1vdmUiLGgpfX0se2tleToiY2xlYW4iLHZhbHVlOmZ1bmN0aW9uKCl7''@;'; put 'put ''dGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVDbGVhbiIpLHRoaXMuZmlsdGVyaW5nU3RhdGVzLmNsZWFyKCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlckNsZWFuIil9fSx7a2V5OiJoYXNDb25kaXRpb25zIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PXRoaXMuZ2V0Q29uZGl0aW9ucyho''@;'; put 'put ''KTtyZXR1cm4gdj95LnNvbWUoZnVuY3Rpb24oQyl7cmV0dXJuIEMubmFtZT09PXZ9KTp5Lmxlbmd0aD4wfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzTWFwUmVnaXN0cmFibGUmJnRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLnVucmVnaXN0ZXJNYXAoRFRlKSx0''@;'; put 'put ''aGlzLmZpbHRlcmluZ1N0YXRlcz1udWxsLHRoaXMuY2xlYXJMb2NhbEhvb2tzKCl9fV0pLGR9KCk7QjIoTFRlLHVkKTtjb25zdCBPVGU9TFRlO2Z1bmN0aW9uIE1jdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMg''@;'; put 'put ''YSBmdW5jdGlvbiIpfWZ1bmN0aW9uIFJUZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KGQsdi5rZXksdil9fXZhciB4Y3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpmdW5jdGlvbigpe3JldHVybltdfTtNY3QodGhpcyxkKSx0aGlzLmNvbmRpdGlvbkNvbGxlY3Rp''@;'; put 'put ''b249Zyx0aGlzLmNvbHVtbkRhdGFGYWN0b3J5PWh9cmV0dXJuIGZ1bmN0aW9uIEVjdChkLGcsaCl7ZyYmUlRlKGQucHJvdG90eXBlLGcpLGgmJlJUZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJmaWx0ZXIiLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKCl7dmFyIGg9dGhpcyx2PVtdO3JldHVybiBVcih0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uZ2V0RmlsdGVyZWRDb2x1bW5zKCksZnVuY3Rpb24oeSxDKXt2YXIgST1oLmNvbHVtbkRhdGFGYWN0b3J5KHkpO0MmJihJPWguX2dldEludGVyc2VjdERhdGEoSSx2KSksdj1oLmZp''@;'; put 'put ''bHRlckJ5Q29sdW1uKHksSSl9KSx2fX0se2tleToiZmlsdGVyQnlDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMseT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10sQz1bXTtyZXR1cm4gVXIoeSxmdW5jdGlvbihJKXt2''@;'; put 'put ''b2lkIDAhPT1JJiZ2LmNvbmRpdGlvbkNvbGxlY3Rpb24uaXNNYXRjaChJLGgpJiZDLnB1c2goSSl9KSxDfX0se2tleToiX2dldEludGVyc2VjdERhdGEiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9W107cmV0dXJuIFVyKHYsZnVuY3Rpb24oQyl7dmFyIEk9Qy5tZXRhLnZpc3VhbFJvdzt2''@;'; put 'put ''b2lkIDAhPT1oW0ldJiYoeVtJXT1oW0ldKX0pLHl9fV0pLGR9KCk7Y29uc3QgQlRlPXhjdDtmdW5jdGlvbiBUY3QoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBQVGUoZCxn''@;'; put 'put ''KXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgRlRlPWZ1bmN0''@;'; put 'put ''aW9uKCl7ZnVuY3Rpb24gZChnLGgpe3ZhciB2PXRoaXMseT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06ZnVuY3Rpb24oKXtyZXR1cm5bXX07VGN0KHRoaXMsZCksdGhpcy5ob3Q9Zyx0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb249aCx0aGlz''@;'; put 'put ''LmNvbHVtbkRhdGFGYWN0b3J5PXksdGhpcy5jaGFuZ2VzPVtdLHRoaXMuZ3JvdXBpbmc9ITEsdGhpcy5sYXRlc3RFZGl0ZWRDb2x1bW5Qb3NpdGlvbj0tMSx0aGlzLmxhdGVzdE9yZGVyU3RhY2s9W10sdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmFkZExvY2FsSG9vaygiYmVmb3JlUmVtb3Zl''@;'; put 'put ''IixmdW5jdGlvbihDKXtyZXR1cm4gdi5fb25Db25kaXRpb25CZWZvcmVNb2RpZnkoQyl9KSx0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uYWRkTG9jYWxIb29rKCJhZnRlclJlbW92ZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYudXBkYXRlU3RhdGVzQXRDb2x1bW4oQyl9KSx0aGlzLmNvbmRpdGlv''@;'; put 'put ''bkNvbGxlY3Rpb24uYWRkTG9jYWxIb29rKCJhZnRlckFkZCIsZnVuY3Rpb24oQyl7cmV0dXJuIHYudXBkYXRlU3RhdGVzQXRDb2x1bW4oQyl9KSx0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uYWRkTG9jYWxIb29rKCJiZWZvcmVDbGVhbiIsZnVuY3Rpb24oKXtyZXR1cm4gdi5fb25Db25kaXRp''@;'; put 'put ''b25CZWZvcmVDbGVhbigpfSksdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmFkZExvY2FsSG9vaygiYWZ0ZXJDbGVhbiIsZnVuY3Rpb24oKXtyZXR1cm4gdi5fb25Db25kaXRpb25BZnRlckNsZWFuKCl9KX1yZXR1cm4gZnVuY3Rpb24gSWN0KGQsZyxoKXtnJiZQVGUoZC5wcm90b3R5cGUsZyks''@;'; put 'put ''aCYmUFRlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6Imdyb3VwQ2hhbmdlcyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmdyb3VwaW5nPSEwfX0se2tleToiZmx1c2giLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpczt0''@;'; put 'put ''aGlzLmdyb3VwaW5nPSExLFVyKHRoaXMuY2hhbmdlcyxmdW5jdGlvbih2KXtoLnVwZGF0ZVN0YXRlc0F0Q29sdW1uKHYpfSksdGhpcy5jaGFuZ2VzLmxlbmd0aD0wfX0se2tleToiX29uQ29uZGl0aW9uQmVmb3JlTW9kaWZ5Iix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmxhdGVzdEVkaXRlZENv''@;'; put 'put ''bHVtblBvc2l0aW9uPXRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5nZXRDb2x1bW5TdGFja1Bvc2l0aW9uKGgpfX0se2tleToidXBkYXRlU3RhdGVzQXRDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9dGhpcztpZih0aGlzLmdyb3VwaW5nKS0xPT09dGhpcy5jaGFuZ2VzLmluZGV4''@;'; put 'put ''T2YoaCkmJnRoaXMuY2hhbmdlcy5wdXNoKGgpO2Vsc2V7dmFyIEM9dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmV4cG9ydEFsbENvbmRpdGlvbnMoKSxJPXRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5nZXRDb2x1bW5TdGFja1Bvc2l0aW9uKGgpOy0xPT09SSYmKEk9dGhpcy5sYXRlc3RFZGl0''@;'; put 'put ''ZWRDb2x1bW5Qb3NpdGlvbik7dmFyIFo9Qy5zbGljZSgwLEkpLHVlPUMuc2xpY2UoSSk7dWUubGVuZ3RoJiZ1ZVswXS5jb2x1bW49PT1oJiZ1ZS5zaGlmdCgpO3ZhciBfZT1LYmUoZnVuY3Rpb24oTmUsS2Upe3ZhciBwdD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1sy''@;'; put 'put ''XT9hcmd1bWVudHNbMl06W10sT3Q9bmV3IE9UZSh5LmhvdCwhMSksJHQ9W10uY29uY2F0KE5lLHB0KTtPdC5pbXBvcnRBbGxDb25kaXRpb25zKCR0KTt2YXIgZm49eS5jb2x1bW5EYXRhRmFjdG9yeShLZSksaXI9VHooT2woT3QuaXNFbXB0eSgpP2ZuOm5ldyBCVGUoT3QsZnVuY3Rpb24obXIp''@;'; put 'put ''e3JldHVybiB5LmNvbHVtbkRhdGFGYWN0b3J5KG1yKX0pLmZpbHRlcigpLGZ1bmN0aW9uKG1yKXtyZXR1cm4gbXIubWV0YS52aXN1YWxSb3d9KSk7cmV0dXJuIE90LmRlc3Ryb3koKSxnNChmbixmdW5jdGlvbihtcil7cmV0dXJuIGlyKG1yLm1ldGEudmlzdWFsUm93KX0pfSkoWiksQmU9W10u''@;'; put 'put ''Y29uY2F0KHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5nZXRDb25kaXRpb25zKGgpKTt0aGlzLnJ1bkxvY2FsSG9va3MoInVwZGF0ZSIse2VkaXRlZENvbmRpdGlvblN0YWNrOntjb2x1bW46aCxjb25kaXRpb25zOkJlfSxkZXBlbmRlbnRDb25kaXRpb25TdGFja3M6dWUsZmlsdGVyZWRSb3dz''@;'; put 'put ''RmFjdG9yeTpfZSxjb25kaXRpb25BcmdzQ2hhbmdlOnZ9KX19fSx7a2V5OiJfb25Db25kaXRpb25CZWZvcmVDbGVhbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmxhdGVzdE9yZGVyU3RhY2s9dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmdldEZpbHRlcmVkQ29sdW1ucygpfX0se2tleToiX29u''@;'; put 'put ''Q29uZGl0aW9uQWZ0ZXJDbGVhbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzO1VyKHRoaXMubGF0ZXN0T3JkZXJTdGFjayxmdW5jdGlvbih2KXtoLnVwZGF0ZVN0YXRlc0F0Q29sdW1uKHYpfSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXM7dGhpcy5j''@;'; put 'put ''bGVhckxvY2FsSG9va3MoKSxHbCh0aGlzLGZ1bmN0aW9uKHYseSl7aFt5XT1udWxsfSl9fV0pLGR9KCk7QjIoRlRlLHVkKTtjb25zdCBEY3Q9RlRlO2Z1bmN0aW9uIEU1ZShkKXtyZXR1cm4oRTVlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0''@;'; put 'put ''ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9dmFyIEhUZTtmdW5j''@;'; put 'put ''dGlvbiBOVGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBWVGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVu''@;'; put 'put ''dW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBKTygpe3JldHVybiBKTz0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxl''@;'; put 'put ''Y3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9VmN0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxK''@;'; put 'put ''Ty5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gVmN0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1HdyhkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiB4NWUoZCxnKXtyZXR1cm4oeDVlPU9iamVjdC5zZXRQcm90b3R5''@;'; put 'put ''cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gemN0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09RTVlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09''@;'; put 'put ''Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBqVGUoZCl9ZnVuY3Rpb24galRlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBi''@;'; put 'put ''ZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiBHdyhkKXtyZXR1cm4oR3c9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxP''@;'; put 'put ''YmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgWWN0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBqY3QoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEg''@;'; put 'put ''ZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmeDVlKGQs''@;'; put 'put ''Zyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gWmN0KGQpe3ZhciBnPWZ1bmN0aW9uIEdjdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSly''@;'; put 'put ''ZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PUd3KGQpO2lmKGcpe3ZhciBDPUd3''@;'; put 'put ''KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB6Y3QodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7cmV0dXJuIGZ1bmN0aW9uIEhjdChkLGcpe2lmKCEoZCBpbnN0''@;'; put 'put ''YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLCh5PWcuY2FsbCh0aGlzLHYpKS5ldmVudE1hbmFnZXI9bmV3IEwxKGpUZSh5KSkseS5kcm9wZG93bk1lbnVQbHVnaW49bnVsbCx5LmNvbmRpdGlvbkNvbGxl''@;'; put 'put ''Y3Rpb249bnVsbCx5LmNvbmRpdGlvblVwZGF0ZU9ic2VydmVyPW51bGwseS5jb21wb25lbnRzPW5ldyBNYXAoW1siZmlsdGVyX2J5X2NvbmRpdGlvbiIsbnVsbF0sWyJmaWx0ZXJfb3BlcmF0b3JzIixudWxsXSxbImZpbHRlcl9ieV9jb25kaXRpb24yIixudWxsXSxbImZpbHRlcl9ieV92YWx1''@;'; put 'put ''ZSIsbnVsbF0sWyJmaWx0ZXJfYWN0aW9uX2JhciIsbnVsbF1dKSx5Lmxhc3RTZWxlY3RlZENvbHVtbj1udWxsLHkuZmlsdGVyc1Jvd3NNYXA9bnVsbCx5LmhvdC5hZGRIb29rKCJhZnRlckdldENvbEhlYWRlciIsZnVuY3Rpb24oQyxJKXtyZXR1cm4geS5vbkFmdGVyR2V0Q29sSGVhZGVyKEMs''@;'; put 'put ''SSl9KSx5fXJldHVybiBmdW5jdGlvbiBOY3QoZCxnLGgpe2cmJlZUZShkLnByb3RvdHlwZSxnKSxoJiZWVGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEh''@;'; put 'put ''dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maWx0ZXJzfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7aWYoIXRoaXMuZW5hYmxlZCl7dGhpcy5maWx0ZXJzUm93c01hcD10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5yZWdpc3Rlck1hcCh0aGlzLnBsdWdp''@;'; put 'put ''bk5hbWUsbmV3IG56KSx0aGlzLmRyb3Bkb3duTWVudVBsdWdpbj10aGlzLmhvdC5nZXRQbHVnaW4oImRyb3Bkb3duTWVudSIpO3ZhciBDPXRoaXMuaG90LmdldFNldHRpbmdzKCkuZHJvcGRvd25NZW51LEk9QyYmQy51aUNvbnRhaW5lcnx8dGhpcy5ob3Qucm9vdERvY3VtZW50LmJvZHksWj1m''@;'; put 'put ''dW5jdGlvbihwdCl7cmV0dXJuIHB0LmFkZExvY2FsSG9vaygiYWNjZXB0IixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWN0aW9uQmFyU3VibWl0KCJhY2NlcHQiKX0pLHB0LmFkZExvY2FsSG9vaygiY2FuY2VsIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWN0aW9uQmFyU3VibWl0KCJjYW5jZWwi''@;'; put 'put ''KX0pLHB0LmFkZExvY2FsSG9vaygiY2hhbmdlIixmdW5jdGlvbihPdCl7cmV0dXJuIHkub25Db21wb25lbnRDaGFuZ2UocHQsT3QpfSkscHR9O2lmKCF0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uIikpe3ZhciBCZT1uZXcgczVlKHRoaXMuaG90LHtpZDoiZmlsdGVy''@;'; put 'put ''X2J5X2NvbmRpdGlvbiIsbmFtZTpmdW5jdGlvbigpe3JldHVybiIiLmNvbmNhdCh5LmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKElwZSksIjoiKX0sYWRkU2VwYXJhdG9yOiExLG1lbnVDb250YWluZXI6SX0pO0JlLmFkZExvY2FsSG9vaygiYWZ0ZXJDbG9zZSIsZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''eS5vblNlbGVjdFVJQ2xvc2VkKCl9KSx0aGlzLmNvbXBvbmVudHMuc2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uIixaKEJlKSl9aWYodGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX29wZXJhdG9ycyIpfHx0aGlzLmNvbXBvbmVudHMuc2V0KCJmaWx0ZXJfb3BlcmF0b3JzIixuZXcgdnV0KHRo''@;'; put 'put ''aXMuaG90LHtpZDoiZmlsdGVyX29wZXJhdG9ycyIsbmFtZToiT3BlcmF0b3JzIn0pKSwhdGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X2NvbmRpdGlvbjIiKSl7dmFyIE5lPW5ldyBzNWUodGhpcy5ob3Qse2lkOiJmaWx0ZXJfYnlfY29uZGl0aW9uMiIsbmFtZToiIixhZGRTZXBhcmF0''@;'; put 'put ''b3I6ITAsbWVudUNvbnRhaW5lcjpJfSk7TmUuYWRkTG9jYWxIb29rKCJhZnRlckNsb3NlIixmdW5jdGlvbigpe3JldHVybiB5Lm9uU2VsZWN0VUlDbG9zZWQoKX0pLHRoaXMuY29tcG9uZW50cy5zZXQoImZpbHRlcl9ieV9jb25kaXRpb24yIixaKE5lKSl9dGhpcy5jb21wb25lbnRzLmdldCgi''@;'; put 'put ''ZmlsdGVyX2J5X3ZhbHVlIil8fHRoaXMuY29tcG9uZW50cy5zZXQoImZpbHRlcl9ieV92YWx1ZSIsWihuZXcgY2N0KHRoaXMuaG90LHtpZDoiZmlsdGVyX2J5X3ZhbHVlIixuYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIiIuY29uY2F0KHkuaG90LmdldFRyYW5zbGF0ZWRQaHJhc2UoRHBlKSwiOiIp''@;'; put 'put ''fX0pKSksdGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2FjdGlvbl9iYXIiKXx8dGhpcy5jb21wb25lbnRzLnNldCgiZmlsdGVyX2FjdGlvbl9iYXIiLFoobmV3IHljdCh0aGlzLmhvdCx7aWQ6ImZpbHRlcl9hY3Rpb25fYmFyIixuYW1lOiJBY3Rpb24gYmFyIn0pKSksdGhpcy5jb25kaXRp''@;'; put 'put ''b25Db2xsZWN0aW9ufHwodGhpcy5jb25kaXRpb25Db2xsZWN0aW9uPW5ldyBPVGUodGhpcy5ob3QpKSx0aGlzLmNvbmRpdGlvblVwZGF0ZU9ic2VydmVyfHwodGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlcj1uZXcgRGN0KHRoaXMuaG90LHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbixmdW5j''@;'; put 'put ''dGlvbihLZSl7cmV0dXJuIHkuZ2V0RGF0YU1hcEF0Q29sdW1uKEtlKX0pLHRoaXMuY29uZGl0aW9uVXBkYXRlT2JzZXJ2ZXIuYWRkTG9jYWxIb29rKCJ1cGRhdGUiLGZ1bmN0aW9uKEtlKXtyZXR1cm4geS51cGRhdGVDb21wb25lbnRzKEtlKX0pKSx0aGlzLmNvbXBvbmVudHMuZm9yRWFjaChm''@;'; put 'put ''dW5jdGlvbihLZSl7cmV0dXJuIEtlLnNob3coKX0pLHRoaXMucmVnaXN0ZXJFdmVudHMoKSx0aGlzLmFkZEhvb2soImJlZm9yZURyb3Bkb3duTWVudVNldEl0ZW1zIixmdW5jdGlvbihLZSl7cmV0dXJuIHkub25CZWZvcmVEcm9wZG93bk1lbnVTZXRJdGVtcyhLZSl9KSx0aGlzLmFkZEhvb2so''@;'; put 'put ''ImFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMiLGZ1bmN0aW9uKEtlKXtyZXR1cm4geS5vbkFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMoS2UpfSksdGhpcy5hZGRIb29rKCJhZnRlckRyb3Bkb3duTWVudVNob3ciLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckRyb3Bk''@;'; put 'put ''b3duTWVudVNob3coKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJEcm9wZG93bk1lbnVIaWRlIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJEcm9wZG93bk1lbnVIaWRlKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ2hhbmdlIixmdW5jdGlvbihLZSl7cmV0dXJuIHkub25BZnRlckNoYW5nZShL''@;'; put 'put ''ZSl9KSx0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmRyb3Bkb3duTWVudSYmdGhpcy5kcm9wZG93bk1lbnVQbHVnaW4mJih0aGlzLmRyb3Bkb3duTWVudVBsdWdpbi5kaXNhYmxlUGx1Z2luKCksdGhpcy5kcm9wZG93bk1lbnVQbHVnaW4uZW5hYmxlUGx1Z2luKCkpLEpPKEd3KGgucHJvdG90eXBl''@;'; put 'put ''KSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX19LHtrZXk6InJlZ2lzdGVyRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmhvdC5yb290RWxlbWVudCwiY2xpY2siLGZ1bmN0aW9uKEMpe3Jl''@;'; put 'put ''dHVybiB5Lm9uVGFibGVDbGljayhDKX0pfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQyx5PXRoaXM7dGhpcy5lbmFibGVkJiYobnVsbCE9PShDPXRoaXMuZHJvcGRvd25NZW51UGx1Z2luKSYmdm9pZCAwIT09QyYmQy5lbmFibGVkJiZ0aGlzLmRyb3Bkb3du''@;'; put 'put ''TWVudVBsdWdpbi5tZW51LmNsZWFyTG9jYWxIb29rcygpLHRoaXMuY29tcG9uZW50cy5mb3JFYWNoKGZ1bmN0aW9uKEksWil7SS5kZXN0cm95KCkseS5jb21wb25lbnRzLnNldChaLG51bGwpfSksdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmRlc3Ryb3koKSx0aGlzLmNvbmRpdGlvbkNvbGxl''@;'; put 'put ''Y3Rpb249bnVsbCx0aGlzLmhvdC5yb3dJbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZSkpLEpPKEd3KGgucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImFkZENvbmRpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe3Zh''@;'; put 'put ''ciBaPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpadyx1ZT10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKHkpO3RoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5hZGRDb25kaXRpb24odWUse2NvbW1hbmQ6e2tleTpDfSxhcmdzOkl9LFopfX0s''@;'; put 'put ''e2tleToicmVtb3ZlQ29uZGl0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbih5KTt0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24ucmVtb3ZlQ29uZGl0aW9ucyhDKX19LHtrZXk6ImNsZWFyQ29uZGl0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oeSl7''@;'; put 'put ''aWYodm9pZCAwPT09eSl0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uY2xlYW4oKTtlbHNle3ZhciBDPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oeSk7dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLnJlbW92ZUNvbmRpdGlvbnMoQyl9fX0se2tleToiZmlsdGVyIix2YWx1ZTpmdW5jdGlvbigp''@;'; put 'put ''e3ZhciB5PXRoaXMsQz10aGlzLl9jcmVhdGVEYXRhRmlsdGVyKCksST0hdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmlzRW1wdHkoKSxaPVtdLHVlPXRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5leHBvcnRBbGxDb25kaXRpb25zKCk7aWYoITEhPT10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3Jl''@;'; put 'put ''RmlsdGVyIix1ZSkpaWYoSSl7dmFyIEJlPVtdO3RoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7eS5maWx0ZXJzUm93c01hcC5jbGVhcigpO3ZhciBOZT1UeihaPU9sKEMuZmlsdGVyKCksZnVuY3Rpb24oS2Upe3JldHVybiBLZS5tZXRhLnZpc3VhbFJvd30pKTtpYSh5LmhvdC5j''@;'; put 'put ''b3VudFNvdXJjZVJvd3MoKS0xLGZ1bmN0aW9uKEtlKXtOZShLZSl8fEJlLnB1c2goS2UpfSksVXIoQmUsZnVuY3Rpb24oS2Upe3kuZmlsdGVyc1Jvd3NNYXAuc2V0VmFsdWVBdEluZGV4KEtlLCEwKX0pfSwhMCksWi5sZW5ndGh8fHRoaXMuaG90LmRlc2VsZWN0Q2VsbCgpfWVsc2UgdGhpcy5m''@;'; put 'put ''aWx0ZXJzUm93c01hcC5jbGVhcigpO3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckZpbHRlciIsdWUpLHRoaXMuaG90LnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCEwKSx0aGlzLmhvdC5yZW5kZXIoKSx0aGlzLmNsZWFyQ29sdW1uU2VsZWN0aW9uKCl9fSx7a2V5OiJnZXRTZWxlY3RlZENvbHVt''@;'; put 'put ''biIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYXN0U2VsZWN0ZWRDb2x1bW59fSx7a2V5OiJjbGVhckNvbHVtblNlbGVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeSxDPW51bGw9PT0oeT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpKXx8dm9pZCAwPT09eT92b2lk''@;'; put 'put ''IDA6eS5nZXRUb3BTdGFydENvcm5lcigpO3ZvaWQgMCE9PUMmJnRoaXMuaG90LnNlbGVjdENlbGwoQy5yb3csQy5jb2wpfX0se2tleToiZ2V0RGF0YU1hcEF0Q29sdW1uIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9dGhpcy5ob3QudG9WaXN1YWxDb2x1bW4oeSksWj1bXTtyZXR1''@;'; put 'put ''cm4gVXIodGhpcy5ob3QuZ2V0U291cmNlRGF0YUF0Q29sKEkpLGZ1bmN0aW9uKHVlLF9lKXt2YXIgQmUsTmU9Qy5ob3QuZ2V0Q2VsbE1ldGEoX2UsSSksS2U9TmUucm93LHB0PU5lLmNvbCxPdD1OZS52aXN1YWxDb2wsJHQ9TmUudmlzdWFsUm93LGZuPU5lLnR5cGUsTG49TmUuaW5zdGFuY2Us''@;'; put 'put ''aXI9TmUuZGF0ZUZvcm1hdCxtcj1OZS5sb2NhbGUsU3I9bnVsbCE9PShCZT1DLmhvdC5nZXREYXRhQXRDZWxsKEMuaG90LnRvVmlzdWFsUm93KF9lKSxJKSkmJnZvaWQgMCE9PUJlP0JlOnVlO1oucHVzaCh7bWV0YTp7cm93OktlLGNvbDpwdCx2aXN1YWxDb2w6T3QsdmlzdWFsUm93OiR0LHR5''@;'; put 'put ''cGU6Zm4saW5zdGFuY2U6TG4sZGF0ZUZvcm1hdDppcixsb2NhbGU6bXJ9LHZhbHVlOmZUZShTcil9KX0pLFp9fSx7a2V5OiJvbkFmdGVyQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzO3kmJlVyKHksZnVuY3Rpb24oSSl7dmFyIFo9ZnVuY3Rpb24gT2N0KGQsZyl7cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uIEZjdChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gUGN0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2''@;'; put 'put ''YXIgSSxaLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2godWUpe0M9ITAsWj11ZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0''@;'; put 'put ''dXJuKCl9ZmluYWxseXtpZihDKXRocm93IFp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24gQmN0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBOVGUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9i''@;'; put 'put ''amVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0''@;'; put 'put ''dXJuIE5UZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gUmN0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUg''@;'; put 'put ''YSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oSSwyKSxfZT1DLmhvdC5wcm9wVG9Db2woWlsxXSk7Qy5jb25kaXRpb25Db2xsZWN0aW9uLmhhc0NvbmRpdGlvbnMoX2UpJiZDLnVwZGF0ZVZhbHVlQ29tcG9uZW50Q29uZGl0aW9uKF9lKX0pfX0se2tleToidXBkYXRlVmFsdWVD''@;'; put 'put ''b21wb25lbnRDb25kaXRpb24iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBJPW01ZSh0aGlzLmhvdC5nZXREYXRhQXRDb2woeSkpO3RoaXMuY29uZGl0aW9uVXBkYXRlT2JzZXJ2ZXIudXBkYXRlU3RhdGVzQXRDb2x1bW4oeSxJKX19LHtrZXk6InJlc3RvcmVDb21wb25lbnRzIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbih5KXt2YXIgQyxJPW51bGw9PT0oQz10aGlzLmdldFNlbGVjdGVkQ29sdW1uKCkpfHx2b2lkIDA9PT1DP3ZvaWQgMDpDLnBoeXNpY2FsSW5kZXg7eS5mb3JFYWNoKGZ1bmN0aW9uKFope1ouaXNIaWRkZW4oKXx8Wi5yZXN0b3JlU3RhdGUoSSl9KSx0aGlzLnVwZGF0ZURlcGVuZGVudENv''@;'; put 'put ''bXBvbmVudHNWaXNpYmlsaXR5KCl9fSx7a2V5OiJvbkFmdGVyRHJvcGRvd25NZW51U2hvdyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJlc3RvcmVDb21wb25lbnRzKEFycmF5LmZyb20odGhpcy5jb21wb25lbnRzLnZhbHVlcygpKSl9fSx7a2V5OiJvbkFmdGVyRHJvcGRvd25NZW51SGlkZSIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uIikuZ2V0U2VsZWN0RWxlbWVudCgpLmNsb3NlT3B0aW9ucygpLHRoaXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9ieV9jb25kaXRpb24yIikuZ2V0U2VsZWN0RWxlbWVudCgpLmNsb3NlT3B0''@;'; put 'put ''aW9ucygpfX0se2tleToib25CZWZvcmVEcm9wZG93bk1lbnVTZXRJdGVtcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuZHJvcGRvd25NZW51UGx1Z2luJiZ0aGlzLmRyb3Bkb3duTWVudVBsdWdpbi5tZW51LmFkZExvY2FsSG9vaygiYWZ0ZXJPcGVuIixmdW5jdGlvbigpe3ku''@;'; put 'put ''ZHJvcGRvd25NZW51UGx1Z2luLm1lbnUuaG90TWVudS51cGRhdGVTZXR0aW5ncyh7aGlkZGVuUm93czohMH0pfSl9fSx7a2V5OiJvbkFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHkpe3kuaXRlbXMucHVzaCh7bmFtZTpXbH0pLHRoaXMuY29tcG9uZW50''@;'; put 'put ''cy5mb3JFYWNoKGZ1bmN0aW9uKEMpe3kuaXRlbXMucHVzaChDLmdldE1lbnVJdGVtRGVzY3JpcHRvcigpKX0pfX0se2tleToiZ2V0T3BlcmF0aW9uQmFzZWRPbkFyZ3VtZW50cyIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksWil7dmFyIHVlPXk7cmV0dXJuIHVlPT09bG5lJiZDLmNvbW1hbmQua2V5''@;'; put 'put ''IT09SGYmJkkuY29tbWFuZC5rZXkhPT1IZiYmWi5jb21tYW5kLmtleSE9PUhmP3VlPWM1ZTpaLmNvbW1hbmQua2V5IT09SGYmJihDLmNvbW1hbmQua2V5PT09SGZ8fEkuY29tbWFuZC5rZXk9PT1IZikmJih1ZT1adyksdWV9fSx7a2V5OiJvbkFjdGlvbkJhclN1Ym1pdCIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oeSl7aWYoImFjY2VwdCI9PT15KXt2YXIgQyxJPW51bGw9PT0oQz10aGlzLmdldFNlbGVjdGVkQ29sdW1uKCkpfHx2b2lkIDA9PT1DP3ZvaWQgMDpDLnBoeXNpY2FsSW5kZXgsWj10aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uIikuZ2V0U3RhdGUoKSx1ZT10aGlz''@;'; put 'put ''LmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uMiIpLmdldFN0YXRlKCksX2U9dGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X3ZhbHVlIikuZ2V0U3RhdGUoKSxCZT10aGlzLmdldE9wZXJhdGlvbkJhc2VkT25Bcmd1bWVudHModGhpcy5jb21wb25lbnRzLmdldCgiZmls''@;'; put 'put ''dGVyX29wZXJhdG9ycyIpLmdldEFjdGl2ZU9wZXJhdGlvbklkKCksWix1ZSxfZSk7dGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlci5ncm91cENoYW5nZXMoKTt2YXIgTmU9dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmdldENvbHVtblN0YWNrUG9zaXRpb24oSSk7LTE9PT1OZSYmKE5lPXZv''@;'; put 'put ''aWQgMCksdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLnJlbW92ZUNvbmRpdGlvbnMoSSksWi5jb21tYW5kLmtleSE9PUhmJiYodGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmFkZENvbmRpdGlvbihJLFosQmUsTmUpLHVlLmNvbW1hbmQua2V5IT09SGYmJnRoaXMuY29uZGl0aW9uQ29sbGVjdGlv''@;'; put 'put ''bi5hZGRDb25kaXRpb24oSSx1ZSxCZSxOZSkpLF9lLmNvbW1hbmQua2V5IT09SGYmJnRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5hZGRDb25kaXRpb24oSSxfZSxCZSxOZSksdGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlci5mbHVzaCgpLHRoaXMuY29tcG9uZW50cy5mb3JFYWNoKGZ1bmN0''@;'; put 'put ''aW9uKEtlKXtyZXR1cm4gS2Uuc2F2ZVN0YXRlKEkpfSksdGhpcy5maWx0ZXJzUm93c01hcC5jbGVhcigpLHRoaXMuZmlsdGVyKCl9dGhpcy5kcm9wZG93bk1lbnVQbHVnaW4mJnRoaXMuZHJvcGRvd25NZW51UGx1Z2luLmNsb3NlKCl9fSx7a2V5OiJvbkNvbXBvbmVudENoYW5nZSIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oeSxDKXt0aGlzLnVwZGF0ZURlcGVuZGVudENvbXBvbmVudHNWaXNpYmlsaXR5KCkseS5jb25zdHJ1Y3Rvcj09PXM1ZSYmIUMuaW5wdXRzQ291bnQmJnRoaXMuc2V0TGlzdGVuaW5nRHJvcGRvd25NZW51KCl9fSx7a2V5OiJvblNlbGVjdFVJQ2xvc2VkIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpe3RoaXMuc2V0TGlzdGVuaW5nRHJvcGRvd25NZW51KCl9fSx7a2V5OiJzZXRMaXN0ZW5pbmdEcm9wZG93bk1lbnUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kcm9wZG93bk1lbnVQbHVnaW4mJnRoaXMuZHJvcGRvd25NZW51UGx1Z2luLnNldExpc3RlbmluZygpfX0se2tleToidXBkYXRl''@;'; put 'put ''RGVwZW5kZW50Q29tcG9uZW50c1Zpc2liaWxpdHkiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEk9dGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X2NvbmRpdGlvbiIpLmdldFN0YXRlKCkuY29tbWFuZCxaPVt0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uMiIpLHRo''@;'; put 'put ''aXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9vcGVyYXRvcnMiKV07SS5zaG93T3BlcmF0b3JzP3RoaXMuc2hvd0NvbXBvbmVudHMuYXBwbHkodGhpcyxaKTp0aGlzLmhpZGVDb21wb25lbnRzLmFwcGx5KHRoaXMsWil9fSx7a2V5OiJvbkFmdGVyR2V0Q29sSGVhZGVyIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bih5LEMpe3ZhciBJPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oeSk7dGhpcy5lbmFibGVkJiZ0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uaGFzQ29uZGl0aW9ucyhJKT9PMChDLCJodEZpbHRlcnNBY3RpdmUiKTpwbChDLCJodEZpbHRlcnNBY3RpdmUiKX19LHtrZXk6Im9uVGFibGVDbGlj''@;'; put 'put ''ayIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9TXYoeS50YXJnZXQsIlRIIik7aWYoQyl7dmFyIEk9dGhpcy5ob3QuZ2V0Q29vcmRzKEMpLmNvbCxaPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oSSk7dGhpcy5sYXN0U2VsZWN0ZWRDb2x1bW49e3Zpc3VhbEluZGV4OkkscGh5c2ljYWxJbmRl''@;'; put 'put ''eDpafX19fSx7a2V5OiJfY3JlYXRlRGF0YUZpbHRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbjtyZXR1cm4gbmV3IEJUZShDLGZ1bmN0''@;'; put 'put ''aW9uKEkpe3JldHVybiB5LmdldERhdGFNYXBBdENvbHVtbihJKX0pfX0se2tleToidXBkYXRlQ29tcG9uZW50cyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM7aWYobnVsbCE9PShDPXRoaXMuZHJvcGRvd25NZW51UGx1Z2luKSYmdm9pZCAwIT09QyYmQy5lbmFibGVkKXt2YXIgST15LmVkaXRl''@;'; put 'put ''ZENvbmRpdGlvblN0YWNrLFo9SS5jb25kaXRpb25zLHVlPUkuY29sdW1uLF9lPVouZmlsdGVyKGZ1bmN0aW9uKEtlKXtyZXR1cm4gS2UubmFtZT09PWFNfSksQmU9Wi5maWx0ZXIoZnVuY3Rpb24oS2Upe3JldHVybiBLZS5uYW1lIT09YU19KTtpZihfZS5sZW5ndGg+PTJ8fEJlLmxlbmd0aD49''@;'; put 'put ''MylsMShQMihIVGV8fChIVGU9ZnVuY3Rpb24gTGN0KGQsZyl7cmV0dXJuIGd8fChnPWQuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGcpfX0pKX0oWyJUaGUgZmlsdGVyIGNvbmRpdGlvbnMgaGF2ZSBi''@;'; put 'put ''ZWVuIGFwcGxpZWQgcHJvcGVybHksIGJ1dCBjb3VsZG5cdTIwMTl0IGJlIGRpc3BsYXllZCB2aXN1YWxseS4gXG4gICAgICAgIFRoZSBvdmVyYWxsIGFtb3VudCBvZiBjb25kaXRpb25zIGV4Y2VlZCB0aGUgY2FwYWJpbGl0eSBvZiB0aGUgZHJvcGRvd24gbWVudS4gXG4gICAgICAgIEZvciBt''@;'; put 'put ''b3JlIGRldGFpbHMgc2VlIHRoZSBkb2N1bWVudGF0aW9uLiJdLFsiVGhlIGZpbHRlciBjb25kaXRpb25zIGhhdmUgYmVlbiBhcHBsaWVkIHByb3Blcmx5LCBidXQgY291bGRuXHUyMDE5dCBiZSBkaXNwbGF5ZWQgdmlzdWFsbHkuXFx4MjBcbiAgICAgICAgVGhlIG92ZXJhbGwgYW1vdW50IG9m''@;'; put 'put ''IGNvbmRpdGlvbnMgZXhjZWVkIHRoZSBjYXBhYmlsaXR5IG9mIHRoZSBkcm9wZG93biBtZW51LlxceDIwXG4gICAgICAgIEZvciBtb3JlIGRldGFpbHMgc2VlIHRoZSBkb2N1bWVudGF0aW9uLiJdKSkpKTtlbHNle3ZhciBOZT10aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uZ2V0T3BlcmF0aW9u''@;'; put 'put ''KHVlKTt0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uIikudXBkYXRlU3RhdGUoQmVbMF0sdWUpLHRoaXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9ieV9jb25kaXRpb24yIikudXBkYXRlU3RhdGUoQmVbMV0sdWUpLHRoaXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9v''@;'; put 'put ''cGVyYXRvcnMiKS51cGRhdGVTdGF0ZShOZSx1ZSksdGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X3ZhbHVlIikudXBkYXRlU3RhdGUoeSl9fX19LHtrZXk6ImdldEluZGV4ZXNPZkNvbXBvbmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9W107aWYoIXRoaXMuZHJvcGRvd25NZW51''@;'; put 'put ''UGx1Z2luKXJldHVybiB5O2Zvcih2YXIgQz10aGlzLmRyb3Bkb3duTWVudVBsdWdpbi5tZW51LEk9YXJndW1lbnRzLmxlbmd0aCxaPW5ldyBBcnJheShJKSx1ZT0wO3VlPEk7dWUrKylaW3VlXT1hcmd1bWVudHNbdWVdO3JldHVybiBVcihaLGZ1bmN0aW9uKF9lKXtVcihDLm1lbnVJdGVtcyxm''@;'; put 'put ''dW5jdGlvbihCZSxOZSl7QmUua2V5PT09X2UuZ2V0TWVudUl0ZW1EZXNjcmlwdG9yKCkua2V5JiZ5LnB1c2goTmUpfSl9KSx5fX0se2tleToiY2hhbmdlQ29tcG9uZW50c1Zpc2liaWxpdHkiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFy''@;'; put 'put ''Z3VtZW50c1swXSl8fGFyZ3VtZW50c1swXTtpZih0aGlzLmRyb3Bkb3duTWVudVBsdWdpbil7Zm9yKHZhciBDPXRoaXMuZHJvcGRvd25NZW51UGx1Z2luLm1lbnUsST1DLmhvdE1lbnUsWj1JLmdldFBsdWdpbigiaGlkZGVuUm93cyIpLHVlPWFyZ3VtZW50cy5sZW5ndGgsX2U9bmV3IEFycmF5''@;'; put 'put ''KHVlPjE/dWUtMTowKSxCZT0xO0JlPHVlO0JlKyspX2VbQmUtMV09YXJndW1lbnRzW0JlXTt2YXIgTmU9dGhpcy5nZXRJbmRleGVzT2ZDb21wb25lbnRzLmFwcGx5KHRoaXMsX2UpO3k/Wi5zaG93Um93cyhOZSk6Wi5oaWRlUm93cyhOZSksSS5yZW5kZXIoKX19fSx7a2V5OiJoaWRlQ29tcG9u''@;'; put 'put ''ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHk9YXJndW1lbnRzLmxlbmd0aCxDPW5ldyBBcnJheSh5KSxJPTA7STx5O0krKylDW0ldPWFyZ3VtZW50c1tJXTt0aGlzLmNoYW5nZUNvbXBvbmVudHNWaXNpYmlsaXR5LmFwcGx5KHRoaXMsWyExXS5jb25jYXQoQykpfX0se2tleToic2hv''@;'; put 'put ''d0NvbXBvbmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeSksST0wO0k8eTtJKyspQ1tJXT1hcmd1bWVudHNbSV07dGhpcy5jaGFuZ2VDb21wb25lbnRzVmlzaWJpbGl0eS5hcHBseSh0aGlzLFshMF0uY29uY2F0KEMpKX19LHtr''@;'; put 'put ''ZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmVuYWJsZWQmJih0aGlzLmNvbXBvbmVudHMuZm9yRWFjaChmdW5jdGlvbihDLEkpe251bGwhPT1DJiYoQy5kZXN0cm95KCkseS5jb21wb25lbnRzLnNldChJLG51bGwpKX0pLHRoaXMuY29uZGl0aW9uQ29sbGVj''@;'; put 'put ''dGlvbi5kZXN0cm95KCksdGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlci5kZXN0cm95KCksdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbk5hbWUpKSxKTyhHdyhoLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6''@;'; put 'put ''IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiJmaWx0ZXJzIn19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDI1MH19LHtrZXk6IlBMVUdJTl9ERVBTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5bInBsdWdpbjpEcm9wZG93bk1lbnUiLCJwbHVn''@;'; put 'put ''aW46SGlkZGVuUm93cyIsImNlbGwtdHlwZTpjaGVja2JveCJdfX1dKSxofShZcyk7ZnVuY3Rpb24gelRlKGQsZyl7dmFyIGg9T2JqZWN0LmtleXMoZCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkKTtnJiYodj12''@;'; put 'put ''LmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLHkpLmVudW1lcmFibGV9KSksaC5wdXNoLmFwcGx5KGgsdil9cmV0dXJuIGh9ZnVuY3Rpb24gSXooZCl7Zm9yKHZhciBnPTE7Zzxhcmd1bWVudHMubGVuZ3RoO2crKyl7dmFyIGg9bnVs''@;'; put 'put ''bCE9YXJndW1lbnRzW2ddP2FyZ3VtZW50c1tnXTp7fTtnJTI/elRlKE9iamVjdChoKSwhMCkuZm9yRWFjaChmdW5jdGlvbih2KXtVY3QoZCx2LGhbdl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCxPYmplY3QuZ2V0T3duUHJv''@;'; put 'put ''cGVydHlEZXNjcmlwdG9ycyhoKSk6elRlKE9iamVjdChoKSkuZm9yRWFjaChmdW5jdGlvbih2KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaCx2KSl9KX1yZXR1cm4gZH1mdW5jdGlvbiBVY3QoZCxnLGgpe3JldHVybiBnIGluIGQ/''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfXZhciBHVGU9ImludGVybmFsLXVzZS1pbi1oYW5kc29udGFibGUiLFFjdD17bGljZW5zZUtleTpHVGUsdXNlQXJyYXlBcml0aG1ldGlj''@;'; put 'put ''OiEwLHVzZUNvbHVtbkluZGV4OiExLHVzZVN0YXRzOiExLGV2YWx1YXRlTnVsbFRvWmVybzohMCxwcmVjaXNpb25FcHNpbG9uOjFlLTEzLHByZWNpc2lvblJvdW5kaW5nOjE0LHNtYXJ0Um91bmRpbmc6ITAsbGVhcFllYXIxOTAwOiEwLG51bGxEYXRlOnt5ZWFyOjE4OTksbW9udGg6MTIsZGF5''@;'; put 'put ''OjMxfSxudWxsWWVhcjozMCxkYXRlRm9ybWF0czpbIkREL01NL1lZWVkiLCJERC9NTS9ZWSJdLHRpbWVGb3JtYXRzOlsiaGg6bW0iLCJoaDptbTpzcy5zc3MiXSxtYXRjaFdob2xlQ2VsbDohMCx1c2VSZWd1bGFyRXhwcmVzc2lvbnM6ITEsdXNlV2lsZGNhcmRzOiEwLGZ1bmN0aW9uQXJnU2Vw''@;'; put 'put ''YXJhdG9yOiIsIix0aG91c2FuZFNlcGFyYXRvcjoiIixkZWNpbWFsU2VwYXJhdG9yOiIuIixsYW5ndWFnZToiZW5HQiJ9O2Z1bmN0aW9uIFdUZShkKXt2YXIgZyxoO3JldHVybnttYXhDb2x1bW5zOmQubWF4Q29sdW1ucyxtYXhSb3dzOmQubWF4Um93cyxsYW5ndWFnZTpudWxsPT09KGc9ZFt1''@;'; put 'put ''M10pfHx2b2lkIDA9PT1nfHxudWxsPT09KGg9Zy5sYW5ndWFnZSl8fHZvaWQgMD09PWg/dm9pZCAwOmgubGFuZ0NvZGV9fWZ1bmN0aW9uIFlUZShkKXtyZXR1cm4gT2JqZWN0LmtleXMoZCkucmVkdWNlKGZ1bmN0aW9uKGcsaCl7cmV0dXJuImh5cGVyZm9ybXVsYSIhPT1oJiYoZ1toXT1kW2hd''@;'; put 'put ''KSxnfSx7fSl9ZnVuY3Rpb24gVDVlKGQpe3JldHVybihUNWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBwbmUoKXt2YXIgZD0iZW5naW5lX3JlbGF0aW9uc2hpcCIsZz1McCh1Myk7cmV0dXJuIGcuaGFzSXRlbShkKXx8Zy5yZWdpc3RlcihkLG5l''@;'; put 'put ''dyBNYXApLGcuZ2V0SXRlbShkKX1mdW5jdGlvbiBJNWUoKXt2YXIgZD0ic2hhcmVkX2VuZ2luZV91c2FnZSIsZz1McCh1Myk7cmV0dXJuIGcuaGFzSXRlbShkKXx8Zy5yZWdpc3RlcihkLG5ldyBNYXApLGcuZ2V0SXRlbShkKX1mdW5jdGlvbiBVVGUoZCl7dmFyIGcsaD1wbmUoKSx2PTA9PT1o''@;'; put 'put ''LnNpemU/W106QXJyYXkuZnJvbShudWxsIT09KGc9aC5nZXQoZCkpJiZ2b2lkIDAhPT1nP2c6W10pO3JldHVybiBuZXcgTWFwKHYubWFwKGZ1bmN0aW9uKHkpe3JldHVyblt5LmdldFBsdWdpbigiZm9ybXVsYXMiKS5zaGVldElkLHldfSkpfWZ1bmN0aW9uIFFUZShkLGcpe2lmKGQpe3ZhciBo''@;'; put 'put ''PXBuZSgpLHY9aC5nZXQoZCkseT1JNWUoKSxDPXkuZ2V0KGQpO3YmJnYuaW5jbHVkZXMoZykmJih2LnNwbGljZSh2LmluZGV4T2YoZyksMSksMD09PXYubGVuZ3RoJiZoLmRlbGV0ZShkKSksQyYmQy5pbmNsdWRlcyhnLmd1aWQpJiYoQy5zcGxpY2UoQy5pbmRleE9mKGcuZ3VpZCksMSksMD09''@;'; put 'put ''PUMubGVuZ3RoJiYoeS5kZWxldGUoZCksZC5kZXN0cm95KCkpKX19ZnVuY3Rpb24gbmZ0KGQsZyl7cmV0dXJuKGExKGcpfHwhZC5kb2VzU2hlZXRFeGlzdChnKSkmJihnPWQuYWRkU2hlZXQoZykpLGd9ZnVuY3Rpb24gSlRlKGQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZCYmIiciPT09ZC5j''@;'; put 'put ''aGFyQXQoMCkmJiI9Ij09PWQuY2hhckF0KDEpfWZ1bmN0aW9uIFhUZShkLGcpe3ZhciBoPU9iamVjdC5rZXlzKGQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciB2PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZCk7ZyYmKHY9di5maWx0ZXIoZnVuY3Rpb24oeSl7''@;'; put 'put ''cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCx5KS5lbnVtZXJhYmxlfSkpLGgucHVzaC5hcHBseShoLHYpfXJldHVybiBofWZ1bmN0aW9uIEtUZShkKXtmb3IodmFyIGc9MTtnPGFyZ3VtZW50cy5sZW5ndGg7ZysrKXt2YXIgaD1udWxsIT1hcmd1bWVudHNbZ10/YXJn''@;'; put 'put ''dW1lbnRzW2ddOnt9O2clMj9YVGUoT2JqZWN0KGgpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe2duZShkLHYsaFt2XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGgp''@;'; put 'put ''KTpYVGUoT2JqZWN0KGgpKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihoLHYpKX0pfXJldHVybiBkfWZ1bmN0aW9uIER6KGQpe3JldHVybihEej0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYi''@;'; put 'put ''c3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0''@;'; put 'put ''eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIFhPKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIGNmdChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gdWZ0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVy''@;'; put 'put ''YXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxaLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2godWUpe0M9ITAsWj11ZX1m''@;'; put 'put ''aW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IFp9fXJldHVybiB2fX0oZCxnKXx8JFRlKGQsZyl8fGZ1bmN0aW9uIHNmdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRl''@;'; put 'put ''cmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gJFRlKGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBENWUoZCxn''@;'; put 'put ''KTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMi''@;'; put 'put ''PT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIEQ1ZShkLGcpfX1mdW5jdGlvbiBENWUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZb''@;'; put 'put ''aF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBmZnQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBxVGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9''@;'; put 'put ''Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBsTSgpe3JldHVybiBsTT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxl''@;'; put 'put ''Y3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9ZGZ0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMu''@;'; put 'put ''dmFsdWV9fSxsTS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gZGZ0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1XdihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBMNWUoZCxnKXtyZXR1cm4oTDVlPU9iamVjdC5z''@;'; put 'put ''ZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gbWZ0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09RHooZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2''@;'; put 'put ''b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIHNNKGQpfWZ1bmN0aW9uIHNNKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhh''@;'; put 'put ''c24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiBXdihkKXtyZXR1cm4oV3Y9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90''@;'; put 'put ''b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX1mdW5jdGlvbiBnbmUoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfWZ1bmN0aW9u''@;'; put 'put ''IE81ZShkLGcsaCl7KGZ1bmN0aW9uIEFmdChkLGcpe2lmKGcuaGFzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShkLGcpLGcuc2V0KGQsaCl9ZnVuY3Rpb24gS08oZCxnLGgp''@;'; put 'put ''e3JldHVybiBmdW5jdGlvbiB5ZnQoZCxnLGgpe2lmKGcuc2V0KWcuc2V0LmNhbGwoZCxoKTtlbHNle2lmKCFnLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtnLnZhbHVlPWh9fShkLGVJZShkLGcsInNldCIp''@;'; put 'put ''LGgpLGh9ZnVuY3Rpb24gJE8oZCxnKXtyZXR1cm4gZnVuY3Rpb24gd2Z0KGQsZyl7cmV0dXJuIGcuZ2V0P2cuZ2V0LmNhbGwoZCk6Zy52YWx1ZX0oZCxlSWUoZCxnLCJnZXQiKSl9ZnVuY3Rpb24gZUllKGQsZyxoKXtpZighZy5oYXMoZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVk''@;'; put 'put ''IHRvICIraCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGcuZ2V0KGQpfXZhciB1Mz0iZm9ybXVsYXMiO3pvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlck5hbWVkRXhwcmVzc2lvbkFkZGVkIiksem8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVy''@;'; put 'put ''TmFtZWRFeHByZXNzaW9uUmVtb3ZlZCIpLHpvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlclNoZWV0QWRkZWQiKSx6by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJTaGVldFJlbW92ZWQiKSx6by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJTaGVldFJlbmFtZWQi''@;'; put 'put ''KSx6by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJGb3JtdWxhc1ZhbHVlc1VwZGF0ZSIpO3ZhciBxTz1mdW5jdGlvbihnKXtyZXR1cm4iVW5kb1JlZG8udW5kbyI9PT1nfHwiVW5kb1JlZG8ucmVkbyI9PT1nfHwiYXV0byI9PT1nfSx1TT1uZXcgV2Vha01hcCxSNWU9bmV3IFdlYWtN''@;'; put 'put ''YXAsTHo9bmV3IFdlYWtNYXAsX2Z0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBwZnQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnBy''@;'; put 'put ''b3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmTDVlKGQsZyl9KGgsZCk7dmFyIGc9''@;'; put 'put ''ZnVuY3Rpb24gZ2Z0KGQpe3ZhciBnPWZ1bmN0aW9uIHZmdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0''@;'; put 'put ''dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVd2KGQpO2lmKGcpe3ZhciBDPVd2KHRoaXMpLmNvbnN0cnVj''@;'; put 'put ''dG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBtZnQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXt2YXIgdjtmZnQodGhpcyxoKTtmb3IodmFyIHk9YXJndW1lbnRzLmxlbmd0aCxDPW5ldyBBcnJheSh5''@;'; put 'put ''KSxJPTA7STx5O0krKylDW0ldPWFyZ3VtZW50c1tJXTtyZXR1cm4gTzVlKHNNKHY9Zy5jYWxsLmFwcGx5KGcsW3RoaXNdLmNvbmNhdChDKSkpLHVNLHt3cml0YWJsZTohMCx2YWx1ZTohMX0pLE81ZShzTSh2KSxSNWUse3dyaXRhYmxlOiEwLHZhbHVlOiExfSksTzVlKHNNKHYpLEx6LHt3cml0''@;'; put 'put ''YWJsZTohMCx2YWx1ZTpbWyJ2YWx1ZXNVcGRhdGVkIixmdW5jdGlvbigpe3ZhciBaO3JldHVybihaPXYpLm9uRW5naW5lVmFsdWVzVXBkYXRlZC5hcHBseShaLGFyZ3VtZW50cyl9XSxbIm5hbWVkRXhwcmVzc2lvbkFkZGVkIixmdW5jdGlvbigpe3ZhciBaO3JldHVybihaPXYpLm9uRW5naW5l''@;'; put 'put ''TmFtZWRFeHByZXNzaW9uc0FkZGVkLmFwcGx5KFosYXJndW1lbnRzKX1dLFsibmFtZWRFeHByZXNzaW9uUmVtb3ZlZCIsZnVuY3Rpb24oKXt2YXIgWjtyZXR1cm4oWj12KS5vbkVuZ2luZU5hbWVkRXhwcmVzc2lvbnNSZW1vdmVkLmFwcGx5KFosYXJndW1lbnRzKX1dLFsic2hlZXRBZGRlZCIs''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgWjtyZXR1cm4oWj12KS5vbkVuZ2luZVNoZWV0QWRkZWQuYXBwbHkoWixhcmd1bWVudHMpfV0sWyJzaGVldFJlbmFtZWQiLGZ1bmN0aW9uKCl7dmFyIFo7cmV0dXJuKFo9dikub25FbmdpbmVTaGVldFJlbmFtZWQuYXBwbHkoWixhcmd1bWVudHMpfV0sWyJzaGVldFJl''@;'; put 'put ''bW92ZWQiLGZ1bmN0aW9uKCl7dmFyIFo7cmV0dXJuKFo9dikub25FbmdpbmVTaGVldFJlbW92ZWQuYXBwbHkoWixhcmd1bWVudHMpfV1dfSksZ25lKHNNKHYpLCJzdGF0aWNSZWdpc3RlciIsTHAoImZvcm11bGFzIikpLGduZShzTSh2KSwiZW5naW5lIixudWxsKSxnbmUoc00odiksInNoZWV0''@;'; put 'put ''TmFtZSIsbnVsbCksdn1yZXR1cm4gZnVuY3Rpb24gaGZ0KGQsZyxoKXtnJiZxVGUoZC5wcm90b3R5cGUsZyksaCYmcVRlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6InNoZWV0SWQiLGdldDpmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBudWxsPT09dGhpcy5zaGVldE5hbWU/bnVsbDp0aGlzLmVuZ2luZS5nZXRTaGVldElkKHRoaXMuc2hlZXROYW1lKX19LHtrZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbdTNdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe3ZhciB5LEM9dGhpcztpZighdGhpcy5lbmFibGVkKXtpZih0aGlzLmVuZ2luZT1udWxsIT09KHk9ZnVuY3Rpb24gS2N0KGQpe3ZhciB5LGc9ZC5nZXRTZXR0aW5ncygpLGg9Z1t1M10sdj1udWxsPT1oP3ZvaWQgMDpoLmVuZ2luZTtpZighMD09PWh8fGExKHYpKXJldHVy''@;'; put 'put ''biBudWxsO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB2Lmh5cGVyZm9ybXVsYXx8ImZ1bmN0aW9uIj09dHlwZW9mIHYpcmV0dXJuIGZ1bmN0aW9uICRjdChkLGcsaCl7dmFyIHY9Z1t1M10seT1mdW5jdGlvbiBKY3QoZCl7dmFyIGcsaD1kW3UzXSx2PVlUZShudWxsIT1oJiZudWxsIT09KGc9aC5l''@;'; put 'put ''bmdpbmUpJiZ2b2lkIDAhPT1nJiZnLmh5cGVyZm9ybXVsYT9oLmVuZ2luZTp7fSkseT1XVGUoZCk7cmV0dXJuIEl6KEl6KEl6KHt9LFFjdCksdikseSl9KGcpLEM9cG5lKCksST1JNWUoKTsoZnVuY3Rpb24gcWN0KGQsZyl7ZyYmZy5mb3JFYWNoKGZ1bmN0aW9uKGgpe3ZhciB2PWgubmFtZSx5''@;'; put 'put ''PWgucGx1Z2luLEM9aC50cmFuc2xhdGlvbnM7dHJ5e2QucmVnaXN0ZXJGdW5jdGlvbih2LHksQyl9Y2F0Y2goSSl7bDEoSS5tZXNzYWdlKX19KX0pKGQsdi5mdW5jdGlvbnMpLGZ1bmN0aW9uIGVmdChkLGcpe2lmKGcpe3ZhciBoPWcubGFuZ0NvZGU7dHJ5e2QucmVnaXN0ZXJMYW5ndWFnZSho''@;'; put 'put ''LGcpfWNhdGNoKHYpe2wxKHYubWVzc2FnZSl9fX0oZCx2Lmxhbmd1YWdlKTt2YXIgWj1kLmJ1aWxkRW1wdHkoeSk7cmV0dXJuIEMuc2V0KFosW2hdKSxJLnNldChaLFtoLmd1aWRdKSxmdW5jdGlvbiB0ZnQoZCxnKXtnJiYoZC5zdXNwZW5kRXZhbHVhdGlvbigpLGcuZm9yRWFjaChmdW5jdGlv''@;'; put 'put ''bihoKXt2YXIgdj1oLm5hbWUseT1oLmV4cHJlc3Npb24sQz1oLnNjb3BlLEk9aC5vcHRpb25zO3RyeXtkLmFkZE5hbWVkRXhwcmVzc2lvbih2LHksQyxJKX1jYXRjaChaKXtsMShaLm1lc3NhZ2UpfX0pLGQucmVzdW1lRXZhbHVhdGlvbigpKX0oWix2Lm5hbWVkRXhwcmVzc2lvbnMpLFoub24o''@;'; put 'put ''InNoZWV0QWRkZWQiLGZ1bmN0aW9uKCl7Wi5yZWJ1aWxkQW5kUmVjYWxjdWxhdGUoKX0pLFoub24oInNoZWV0UmVtb3ZlZCIsZnVuY3Rpb24oKXtaLnJlYnVpbGRBbmRSZWNhbGN1bGF0ZSgpfSksWn0obnVsbCE9PSh5PXYuaHlwZXJmb3JtdWxhKSYmdm9pZCAwIT09eT95OnYsZyxkKTtpZigi''@;'; put 'put ''b2JqZWN0Ij09PVQ1ZSh2KSYmYTEodi5oeXBlcmZvcm11bGEpKXt2YXIgQz1wbmUoKSxJPUk1ZSgpLmdldCh2KTtyZXR1cm4gQy5oYXModil8fEMuc2V0KHYsW10pLEMuZ2V0KHYpLnB1c2goZCksSSYmSS5wdXNoKGQuZ3VpZCksdi5nZXRDb25maWcoKS5saWNlbnNlS2V5fHx2LnVwZGF0ZUNv''@;'; put 'put ''bmZpZyh7bGljZW5zZUtleTpHVGV9KSx2fXJldHVybiBudWxsfSh0aGlzLmhvdCkpJiZ2b2lkIDAhPT15P3k6dGhpcy5lbmdpbmUsIXRoaXMuZW5naW5lKXJldHVybiB2b2lkIGwxKCJNaXNzaW5nIHRoZSByZXF1aXJlZCBgZW5naW5lYCBrZXkgaW4gdGhlIEZvcm11bGFzIHNldHRpbmdzLiBQ''@;'; put 'put ''bGVhc2UgZmlsbCBpdCB3aXRoIGVpdGhlciBhbiBlbmdpbmUgY2xhc3Mgb3IgYW4gZW5naW5lIGluc3RhbmNlLiIpO2lmKG51bGwhPT10aGlzLnNoZWV0TmFtZSYmIXRoaXMuZW5naW5lLmRvZXNTaGVldEV4aXN0KHRoaXMuc2hlZXROYW1lKSl7dmFyIEk9dGhpcy5hZGRTaGVldCh0aGlzLnNo''@;'; put 'put ''ZWV0TmFtZSx0aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXJyYXkoKSk7ITEhPT1JJiYodGhpcy5zaGVldE5hbWU9SSl9dGhpcy5hZGRIb29rKCJiZWZvcmVMb2FkRGF0YSIsZnVuY3Rpb24oKXtyZXR1cm4gQy5vbkJlZm9yZUxvYWREYXRhLmFwcGx5KEMsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9v''@;'; put 'put ''aygiYWZ0ZXJMb2FkRGF0YSIsZnVuY3Rpb24oKXtyZXR1cm4gQy5vbkFmdGVyTG9hZERhdGEuYXBwbHkoQyxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlEYXRhIixmdW5jdGlvbigpe3JldHVybiBDLm9uTW9kaWZ5RGF0YS5hcHBseShDLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhv''@;'; put 'put ''b2soIm1vZGlmeVNvdXJjZURhdGEiLGZ1bmN0aW9uKCl7cmV0dXJuIEMub25Nb2RpZnlTb3VyY2VEYXRhLmFwcGx5KEMsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlVmFsaWRhdGUiLGZ1bmN0aW9uKCl7cmV0dXJuIEMub25CZWZvcmVWYWxpZGF0ZS5hcHBseShDLGFyZ3VtZW50''@;'; put 'put ''cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2V0U291cmNlRGF0YUF0Q2VsbCIsZnVuY3Rpb24oKXtyZXR1cm4gQy5vbkFmdGVyU2V0U291cmNlRGF0YUF0Q2VsbC5hcHBseShDLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2V0RGF0YUF0Q2VsbCIsZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''Qy5vbkFmdGVyU2V0RGF0YUF0Q2VsbC5hcHBseShDLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2V0RGF0YUF0Um93UHJvcCIsZnVuY3Rpb24oKXtyZXR1cm4gQy5vbkFmdGVyU2V0RGF0YUF0Q2VsbC5hcHBseShDLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZUNy''@;'; put 'put ''ZWF0ZVJvdyIsZnVuY3Rpb24oKXtyZXR1cm4gQy5vbkJlZm9yZUNyZWF0ZVJvdy5hcHBseShDLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZUNyZWF0ZUNvbCIsZnVuY3Rpb24oKXtyZXR1cm4gQy5vbkJlZm9yZUNyZWF0ZUNvbC5hcHBseShDLGFyZ3VtZW50cyl9KSx0aGlzLmFk''@;'; put 'put ''ZEhvb2soImFmdGVyQ3JlYXRlUm93IixmdW5jdGlvbigpe3JldHVybiBDLm9uQWZ0ZXJDcmVhdGVSb3cuYXBwbHkoQyxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlckNyZWF0ZUNvbCIsZnVuY3Rpb24oKXtyZXR1cm4gQy5vbkFmdGVyQ3JlYXRlQ29sLmFwcGx5KEMsYXJndW1lbnRz''@;'; put 'put ''KX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUmVtb3ZlUm93IixmdW5jdGlvbigpe3JldHVybiBDLm9uQmVmb3JlUmVtb3ZlUm93LmFwcGx5KEMsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUmVtb3ZlQ29sIixmdW5jdGlvbigpe3JldHVybiBDLm9uQmVmb3JlUmVtb3ZlQ29sLmFw''@;'; put 'put ''cGx5KEMsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJSZW1vdmVSb3ciLGZ1bmN0aW9uKCl7cmV0dXJuIEMub25BZnRlclJlbW92ZVJvdy5hcHBseShDLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyUmVtb3ZlQ29sIixmdW5jdGlvbigpe3JldHVybiBDLm9uQWZ0ZXJS''@;'; put 'put ''ZW1vdmVDb2wuYXBwbHkoQyxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVVbmRvIixmdW5jdGlvbihaKXsicm93X21vdmUiIT09KG51bGw9PVo/dm9pZCAwOlouYWN0aW9uVHlwZSkmJkMuZW5naW5lLnVuZG8oKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUmVkbyIsZnVuY3Rpb24o''@;'; put 'put ''Wil7InJvd19tb3ZlIiE9PShudWxsPT1aP3ZvaWQgMDpaLmFjdGlvblR5cGUpJiZDLmVuZ2luZS5yZWRvKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyRGV0YWNoQ2hpbGQiLGZ1bmN0aW9uKCl7cmV0dXJuIEMub25BZnRlckRldGFjaENoaWxkLmFwcGx5KEMsYXJndW1lbnRzKX0pLHRoaXMuYWRk''@;'; put 'put ''SG9vaygiYmVmb3JlQXV0b2ZpbGwiLGZ1bmN0aW9uKCl7cmV0dXJuIEMub25CZWZvcmVBdXRvZmlsbC5hcHBseShDLGFyZ3VtZW50cyl9KSwkTyh0aGlzLEx6KS5mb3JFYWNoKGZ1bmN0aW9uKFope3ZhciB1ZT1YTyhaLDIpO3JldHVybiBDLmVuZ2luZS5vbih1ZVswXSx1ZVsxXSl9KSxsTShX''@;'; put 'put ''dihoLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7JE8odGhpcyxMeikuZm9yRWFjaChmdW5jdGlvbihDKXt2YXIgST1YTyhDLDIpO3JldHVybiB5LmVuZ2luZS5vZmYo''@;'; put 'put ''SVswXSxJWzFdKX0pLFFUZSh0aGlzLmVuZ2luZSx0aGlzLmhvdCksdGhpcy5lbmdpbmU9bnVsbCxsTShXdihoLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMuZW5naW5lLnVwZGF0''@;'; put 'put ''ZUNvbmZpZyhmdW5jdGlvbiBYY3QoZCl7dmFyIGcsaD1kW3UzXSx2PVlUZShudWxsIT1oJiZudWxsIT09KGc9aC5lbmdpbmUpJiZ2b2lkIDAhPT1nJiZnLmh5cGVyZm9ybXVsYT9oLmVuZ2luZTp7fSkseT1XVGUoZCk7cmV0dXJuIEl6KEl6KHt9LHYpLHkpfSh0aGlzLmhvdC5nZXRTZXR0aW5n''@;'; put 'put ''cygpKSk7dmFyIEM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVt1M107aWYoVG8oQykmJlRvKEMuc2hlZXROYW1lKSYmQy5zaGVldE5hbWUhPT10aGlzLnNoZWV0TmFtZSYmdGhpcy5zd2l0Y2hTaGVldChDLnNoZWV0TmFtZSksIXkuZGF0YSYmbnVsbD09PXRoaXMuc2hlZXROYW1lKXt2YXIgST10''@;'; put 'put ''aGlzLmhvdC5nZXRTZXR0aW5ncygpW3UzXS5zaGVldE5hbWU7SSYmdGhpcy5lbmdpbmUuZG9lc1NoZWV0RXhpc3QoSSk/dGhpcy5zd2l0Y2hTaGVldCh0aGlzLnNoZWV0TmFtZSk6dGhpcy5zaGVldE5hbWU9dGhpcy5hZGRTaGVldChudWxsIT1JP0k6dm9pZCAwLHRoaXMuaG90LmdldFNvdXJj''@;'; put 'put ''ZURhdGFBcnJheSgpKX1sTShXdihoLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzLHkpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzOyRPKHRoaXMsTHopLmZvckVhY2goZnVuY3Rpb24oQyl7dmFyIEksWj1YTyhDLDIpO3JldHVy''@;'; put 'put ''biBudWxsPT09KEk9eS5lbmdpbmUpfHx2b2lkIDA9PT1JP3ZvaWQgMDpJLm9mZihaWzBdLFpbMV0pfSksS08odGhpcyxMeixudWxsKSxRVGUodGhpcy5lbmdpbmUsdGhpcy5ob3QpLHRoaXMuZW5naW5lPW51bGwsbE0oV3YoaC5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMp''@;'; put 'put ''fX0se2tleToiZ2V0UGh5c2ljYWxJbmRleFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbih5LEMsSSxaLHVlKXtyZXR1cm4hdWUmJnk+PUk/WisoeS1JKTpDfX0se2tleToidG9QaHlzaWNhbFJvd1Bvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1hcmd1bWVudHMubGVuZ3RoPjEmJnZv''@;'; put 'put ''aWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO3JldHVybiB0aGlzLmdldFBoeXNpY2FsSW5kZXhQb3NpdGlvbih5LHRoaXMuaG90LnRvUGh5c2ljYWxSb3coeSksdGhpcy5ob3QuY291bnRSb3dzKCksdGhpcy5ob3QuY291bnRTb3VyY2VSb3dzKCksQyl9fSx7a2V5OiJ0b1BoeXNp''@;'; put 'put ''Y2FsQ29sdW1uUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07cmV0dXJuIHRoaXMuZ2V0UGh5c2ljYWxJbmRleFBvc2l0aW9uKHksdGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbih5''@;'; put 'put ''KSx0aGlzLmhvdC5jb3VudENvbHMoKSx0aGlzLmhvdC5jb3VudFNvdXJjZUNvbHMoKSxDKX19LHtrZXk6ImFkZFNoZWV0Iix2YWx1ZTpmdW5jdGlvbih5LEMpe2lmKFRvKEMpJiYhZWtlKEMpKXJldHVybiBsMSgiVGhlIHByb3ZpZGVkIGRhdGEgc2hvdWxkIGJlIGFuIGFycmF5IG9mIGFycmF5''@;'; put 'put ''cy4iKSwhMTtpZihudWxsIT15JiZ0aGlzLmVuZ2luZS5kb2VzU2hlZXRFeGlzdCh5KSlyZXR1cm4gbDEoIlNoZWV0IHdpdGggdGhlIHByb3ZpZGVkIG5hbWUgYWxyZWFkeSBleGlzdHMuIiksITE7dHJ5e3ZhciBJPXRoaXMuZW5naW5lLmFkZFNoZWV0KG51bGwhPXk/eTp2b2lkIDApO3JldHVy''@;'; put 'put ''biBDJiZ0aGlzLmVuZ2luZS5zZXRTaGVldENvbnRlbnQodGhpcy5lbmdpbmUuZ2V0U2hlZXRJZChJKSxDKSxJfWNhdGNoKFope3JldHVybiBsMShaLm1lc3NhZ2UpLCExfX19LHtrZXk6InN3aXRjaFNoZWV0Iix2YWx1ZTpmdW5jdGlvbih5KXtpZih0aGlzLmVuZ2luZS5kb2VzU2hlZXRFeGlz''@;'; put 'put ''dCh5KSl7dGhpcy5zaGVldE5hbWU9eTt2YXIgQz10aGlzLmVuZ2luZS5nZXRTaGVldFNlcmlhbGl6ZWQodGhpcy5zaGVldElkKTtDLmxlbmd0aD4wJiZ0aGlzLmhvdC5sb2FkRGF0YShDLCIiLmNvbmNhdChsZCh1MyksIi5zd2l0Y2hTaGVldCIpKX1lbHNlIEMzZSgiVGhlIHNoZWV0IG5hbWVk''@;'; put 'put ''IGAiLmNvbmNhdCh5LCJgIGRvZXMgbm90IGV4aXN0LCBzd2l0Y2ggYWJvcnRlZC4iKSl9fSx7a2V5OiJnZXRDZWxsVHlwZSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dGhpcy5zaGVldElk''@;'; put 'put ''LFo9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyh5KSx1ZT10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKEMpO3JldHVybiBudWxsIT09WiYmbnVsbCE9PXVlP3RoaXMuZW5naW5lLmdldENlbGxUeXBlKHtzaGVldDpJLHJvdzpaLGNvbDp1ZX0pOiJFTVBUWSJ9fSx7a2V5OiJpc0Zvcm11bGFDZWxs''@;'; put 'put ''VHlwZSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dGhpcy5zaGVldElkLFo9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyh5KSx1ZT10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKEMpO3JldHVy''@;'; put 'put ''biBudWxsIT09WiYmbnVsbCE9PXVlJiZ0aGlzLmVuZ2luZS5kb2VzQ2VsbEhhdmVGb3JtdWxhKHtzaGVldDpJLHJvdzpaLGNvbDp1ZX0pfX0se2tleToicmVuZGVyRGVwZW5kZW50U2hlZXRzIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lk''@;'; put 'put ''IDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxaPW5ldyBTZXQ7eS5mb3JFYWNoKGZ1bmN0aW9uKHVlKXt2YXIgX2UsQmU9bnVsbD09dWV8fG51bGw9PT0oX2U9dWUuYWRkcmVzcyl8fHZvaWQgMD09PV9lP3ZvaWQgMDpfZS5zaGVldDt2b2lkIDAhPT1CZSYmKFouaGFzKEJlKXx8Wi5h''@;'; put 'put ''ZGQoQmUpKX0pLFVUZSh0aGlzLmVuZ2luZSkuZm9yRWFjaChmdW5jdGlvbih1ZSxfZSl7dmFyIEJlOyhJfHxfZSE9PUMuc2hlZXRJZCkmJlouaGFzKF9lKSYmKHVlLnJlbmRlcigpLG51bGw9PT0oQmU9dWUudmlldyl8fHZvaWQgMD09PUJlfHxCZS5hZGp1c3RFbGVtZW50c1NpemUoKSl9KX19''@;'; put 'put ''LHtrZXk6InZhbGlkYXRlRGVwZW5kZW50Q2VsbHMiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10sWj1mdW5jdGlvbihCZSl7dmFyIE5lLEtlPW51bGwhPT0oTmU9bnVsbD09QmU/''@;'; put 'put ''dm9pZCAwOkJlLmFkZHJlc3MpJiZ2b2lkIDAhPT1OZT9OZTp7fSxwdD1LZS5yb3csT3Q9S2UuY29sLCR0PUtlLnNoZWV0O3JldHVybiBUbygkdCk/IiIuY29uY2F0KCR0LCI6IikuY29uY2F0KHB0LCJ4IikuY29uY2F0KE90KToiIn0sdWU9bmV3IFNldChJLm1hcChmdW5jdGlvbihfZSl7cmV0''@;'; put 'put ''dXJuIFooX2UpfSkpO3kuZm9yRWFjaChmdW5jdGlvbihfZSl7dmFyIEJlLE5lLEtlPW51bGwhPT0oQmU9X2UuYWRkcmVzcykmJnZvaWQgMCE9PUJlP0JlOnt9LHB0PUtlLnJvdyxPdD1LZS5jb2wsJHQ9VG8ocHQpP0MuaG90LnRvVmlzdWFsUm93KHB0KTpudWxsLGZuPVRvKE90KT9DLmhvdC50''@;'; put 'put ''b1Zpc3VhbENvbHVtbihPdCk6bnVsbDtpZihudWxsIT09JHQmJm51bGwhPT1mbil7dmFyIExuPW51bGw9PV9lfHxudWxsPT09KE5lPV9lLmFkZHJlc3MpfHx2b2lkIDA9PT1OZT92b2lkIDA6TmUuc2hlZXQsaXI9WihfZSk7aWYodm9pZCAwIT09TG4mJiF1ZS5oYXMoaXIpKXt2YXIgbXI9VVRl''@;'; put 'put ''KEMuZW5naW5lKS5nZXQoTG4pO2lmKCFtcilyZXR1cm47bXIudmFsaWRhdGVDZWxsKG1yLmdldERhdGFBdENlbGwoJHQsZm4pLG1yLmdldENlbGxNZXRhKCR0LGZuKSxmdW5jdGlvbigpe30pfX19KX19LHtrZXk6InN5bmNDaGFuZ2VXaXRoRW5naW5lIix2YWx1ZTpmdW5jdGlvbih5LEMsSSl7''@;'; put 'put ''dmFyIFo9e3Jvdzp0aGlzLnRvUGh5c2ljYWxSb3dQb3NpdGlvbih5KSxjb2w6dGhpcy50b1BoeXNpY2FsQ29sdW1uUG9zaXRpb24oQyksc2hlZXQ6dGhpcy5zaGVldElkfTtpZih0aGlzLmVuZ2luZS5pc0l0UG9zc2libGVUb1NldENlbGxDb250ZW50cyhaKSlyZXR1cm4gdGhpcy5lbmdpbmUu''@;'; put 'put ''c2V0Q2VsbENvbnRlbnRzKFosSSk7bDEoIk5vdCBwb3NzaWJsZSB0byBzZXQgY2VsbCBkYXRhIGF0ICIuY29uY2F0KEpTT04uc3RyaW5naWZ5KFopKSl9fSx7a2V5OiJvbkJlZm9yZVZhbGlkYXRlIix2YWx1ZTpmdW5jdGlvbih5LEMsSSl7dmFyIFo9dGhpcy5ob3QucHJvcFRvQ29sKEkpO2lm''@;'; put 'put ''KHRoaXMuaXNGb3JtdWxhQ2VsbFR5cGUoQyxaKSl7dmFyIHVlPXtyb3c6dGhpcy5ob3QudG9QaHlzaWNhbFJvdyhDKSxjb2w6dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihaKSxzaGVldDp0aGlzLnNoZWV0SWR9LF9lPXRoaXMuZW5naW5lLmdldENlbGxWYWx1ZSh1ZSk7cmV0dXJuIm9iamVj''@;'; put 'put ''dCI9PT1EeihfZSkmJm51bGwhPT1fZT9fZS52YWx1ZTpfZX1yZXR1cm4geX19LHtrZXk6Im9uQmVmb3JlQXV0b2ZpbGwiLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXt2YXIgWj10aGlzLHVlPWZ1bmN0aW9uKEtlKXtyZXR1cm4gS1RlKEtUZSh7fSxLZSkse30se3NoZWV0Olouc2hlZXRJZH0pfSxf''@;'; put 'put ''ZT17c3RhcnQ6dWUoQy5nZXRUb3BTdGFydENvcm5lcigpKSxlbmQ6dWUoQy5nZXRCb3R0b21FbmRDb3JuZXIoKSl9LEJlPXtzdGFydDp1ZShJLmdldFRvcFN0YXJ0Q29ybmVyKCkpLGVuZDp1ZShJLmdldEJvdHRvbUVuZENvcm5lcigpKX07cmV0dXJuITEhPT10aGlzLmVuZ2luZS5pc0l0UG9z''@;'; put 'put ''c2libGVUb1NldENlbGxDb250ZW50cyhCZSkmJnRoaXMuZW5naW5lLmdldEZpbGxSYW5nZURhdGEoX2UsQmUpfX0se2tleToib25CZWZvcmVMb2FkRGF0YSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVu''@;'; put 'put ''dHNbMl06IiI7SS5pbmNsdWRlcyhsZCh1MykpfHxLTyh0aGlzLFI1ZSxhMSh0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmRhdGEpKX19LHtrZXk6Im9uQWZ0ZXJMb2FkRGF0YSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1sy''@;'; put 'put ''XT9hcmd1bWVudHNbMl06IiI7aWYoIUkuaW5jbHVkZXMobGQodTMpKSlpZih0aGlzLnNoZWV0TmFtZT1uZnQodGhpcy5lbmdpbmUsdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVt1M10uc2hlZXROYW1lKSwkTyh0aGlzLFI1ZSkpdGhpcy5zd2l0Y2hTaGVldCh0aGlzLnNoZWV0TmFtZSk7ZWxzZXt2''@;'; put 'put ''YXIgWj10aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXJyYXkoKTtpZih0aGlzLmVuZ2luZS5pc0l0UG9zc2libGVUb1JlcGxhY2VTaGVldENvbnRlbnQodGhpcy5zaGVldElkLFopKXtLTyh0aGlzLHVNLCEwKTt2YXIgdWU9dGhpcy5lbmdpbmUuc2V0U2hlZXRDb250ZW50KHRoaXMuc2hlZXRJZCx0''@;'; put 'put ''aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXJyYXkoKSk7dGhpcy5yZW5kZXJEZXBlbmRlbnRTaGVldHModWUpLEtPKHRoaXMsdU0sITEpfX19fSx7a2V5OiJvbk1vZGlmeURhdGEiLHZhbHVlOmZ1bmN0aW9uKHksQyxJLFope2lmKCJnZXQiPT09WiYmISRPKHRoaXMsdU0pJiZudWxsIT09dGhpcy5z''@;'; put 'put ''aGVldE5hbWUmJnRoaXMuZW5naW5lLmRvZXNTaGVldEV4aXN0KHRoaXMuc2hlZXROYW1lKSl7dmFyIHVlPXRoaXMuaG90LnRvVmlzdWFsUm93KHkpO2lmKCF0aGlzLmlzRm9ybXVsYUNlbGxUeXBlKHVlLEMpJiYiQVJSQVkiIT09dGhpcy5nZXRDZWxsVHlwZSh1ZSxDKSlyZXR1cm4gdm9pZChK''@;'; put 'put ''VGUoSS52YWx1ZSkmJihJLnZhbHVlPWZ1bmN0aW9uIHJmdChkKXtyZXR1cm4gSlRlKGQpP2Quc3Vic3RyKDEpOmR9KEkudmFsdWUpKSk7dmFyIE5lPXtyb3c6eSxjb2w6dGhpcy50b1BoeXNpY2FsQ29sdW1uUG9zaXRpb24oQyksc2hlZXQ6dGhpcy5zaGVldElkfSxLZT10aGlzLmVuZ2luZS5n''@;'; put 'put ''ZXRDZWxsVmFsdWUoTmUpLHB0PSJvYmplY3QiPT09RHooS2UpJiZudWxsIT09S2U/S2UudmFsdWU6S2U7SS52YWx1ZT1wdH19fSx7a2V5OiJvbk1vZGlmeVNvdXJjZURhdGEiLHZhbHVlOmZ1bmN0aW9uKHksQyxJLFope2lmKCJnZXQiPT09WiYmISRPKHRoaXMsdU0pJiZudWxsIT09dGhpcy5z''@;'; put 'put ''aGVldE5hbWUmJnRoaXMuZW5naW5lLmRvZXNTaGVldEV4aXN0KHRoaXMuc2hlZXROYW1lKSl7dmFyIHVlPXRoaXMuaG90LnRvVmlzdWFsUm93KHkpLF9lPXRoaXMuaG90LnByb3BUb0NvbChDKTtpZighdGhpcy5pc0Zvcm11bGFDZWxsVHlwZSh1ZSxfZSkmJiJBUlJBWSIhPT10aGlzLmdldENl''@;'; put 'put ''bGxUeXBlKHVlLF9lKSlyZXR1cm47dmFyIEtlPXRoaXMuZW5naW5lLmdldFNoZWV0RGltZW5zaW9ucyh0aGlzLmVuZ2luZS5nZXRTaGVldElkKHRoaXMuc2hlZXROYW1lKSk7aWYoMCE9PUtlLndpZHRofHwwIT09S2UuaGVpZ2h0KXt2YXIgcHQ9e3Jvdzp5LGNvbDp0aGlzLnRvUGh5c2ljYWxD''@;'; put 'put ''b2x1bW5Qb3NpdGlvbihfZSksc2hlZXQ6dGhpcy5zaGVldElkfTtJLnZhbHVlPXRoaXMuZW5naW5lLmdldENlbGxTZXJpYWxpemVkKHB0KX19fX0se2tleToib25BZnRlclNldERhdGFBdENlbGwiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9dGhpcztpZighcU8oQykpe3ZhciBaPVtdLHVl''@;'; put 'put ''PVtdLF9lPXRoaXMuZW5naW5lLmJhdGNoKGZ1bmN0aW9uKCl7eS5mb3JFYWNoKGZ1bmN0aW9uKEJlKXt2YXIgTmU9WE8oQmUsNCksS2U9TmVbMF0sT3Q9TmVbM10sJHQ9SS5ob3QucHJvcFRvQ29sKE5lWzFdKSxmbj1JLmhvdC50b1BoeXNpY2FsUm93KEtlKSxMbj1JLmhvdC50b1BoeXNpY2Fs''@;'; put 'put ''Q29sdW1uKCR0KSxpcj17cm93OmZuLGNvbDpMbixzaGVldDpJLnNoZWV0SWR9O251bGwhPT1mbiYmbnVsbCE9PUxuP0kuc3luY0NoYW5nZVdpdGhFbmdpbmUoS2UsJHQsT3QpOloucHVzaChbS2UsJHQsT3RdKSx1ZS5wdXNoKHthZGRyZXNzOmlyfSl9KX0pO1oubGVuZ3RoJiZ0aGlzLmhvdC5h''@;'; put 'put ''ZGRIb29rT25jZSgiYWZ0ZXJDaGFuZ2UiLGZ1bmN0aW9uKCl7dmFyIEJlPUkuZW5naW5lLmJhdGNoKGZ1bmN0aW9uKCl7Wi5mb3JFYWNoKGZ1bmN0aW9uKE5lKXt2YXIgS2U9WE8oTmUsMyk7SS5zeW5jQ2hhbmdlV2l0aEVuZ2luZShLZVswXSxLZVsxXSxLZVsyXSl9KX0pO0kucmVuZGVyRGVw''@;'; put 'put ''ZW5kZW50U2hlZXRzKEJlLCEwKX0pLHRoaXMucmVuZGVyRGVwZW5kZW50U2hlZXRzKF9lKSx0aGlzLnZhbGlkYXRlRGVwZW5kZW50Q2VsbHMoX2UsdWUpfX19LHtrZXk6Im9uQWZ0ZXJTZXRTb3VyY2VEYXRhQXRDZWxsIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXRoaXM7aWYoIXFPKEMp''@;'; put 'put ''KXt2YXIgWj1bXSx1ZT1bXTt5LmZvckVhY2goZnVuY3Rpb24oX2Upe3ZhciBCZT1YTyhfZSw0KSxOZT1CZVswXSxwdD1CZVszXSxPdD1JLmhvdC5wcm9wVG9Db2woQmVbMV0pO2lmKHY0KE90KSl7dmFyICR0PXtyb3c6TmUsY29sOkkudG9QaHlzaWNhbENvbHVtblBvc2l0aW9uKE90KSxzaGVl''@;'; put 'put ''dDpJLnNoZWV0SWR9O2lmKCFJLmVuZ2luZS5pc0l0UG9zc2libGVUb1NldENlbGxDb250ZW50cygkdCkpcmV0dXJuIHZvaWQgbDEoIk5vdCBwb3NzaWJsZSB0byBzZXQgc291cmNlIGNlbGwgZGF0YSBhdCAiLmNvbmNhdChKU09OLnN0cmluZ2lmeSgkdCkpKTt1ZS5wdXNoKHthZGRyZXNzOiR0''@;'; put 'put ''fSksWi5wdXNoLmFwcGx5KFosZnVuY3Rpb24gaWZ0KGQpe3JldHVybiBmdW5jdGlvbiBsZnQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gRDVlKGQpfShkKXx8ZnVuY3Rpb24gYWZ0KGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRv''@;'; put 'put ''cl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0oZCl8fCRUZShkKXx8ZnVuY3Rpb24gb2Z0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVy''@;'; put 'put ''YWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KEkuZW5naW5lLnNldENlbGxDb250ZW50cygkdCxwdCkpKX19KSx0aGlzLnJlbmRlckRlcGVuZGVudFNoZWV0cyhaKSx0aGlzLnZhbGlkYXRlRGVwZW5kZW50Q2VsbHMo''@;'; put 'put ''Wix1ZSl9fX0se2tleToib25CZWZvcmVDcmVhdGVSb3ciLHZhbHVlOmZ1bmN0aW9uKHksQyl7aWYobnVsbD09PXRoaXMuc2hlZXRJZHx8IXRoaXMuZW5naW5lLmRvZXNTaGVldEV4aXN0KHRoaXMuc2hlZXROYW1lKXx8IXRoaXMuZW5naW5lLmlzSXRQb3NzaWJsZVRvQWRkUm93cyh0aGlzLnNo''@;'; put 'put ''ZWV0SWQsW3RoaXMudG9QaHlzaWNhbFJvd1Bvc2l0aW9uKHkpLENdKSlyZXR1cm4hMX19LHtrZXk6Im9uQmVmb3JlQ3JlYXRlQ29sIix2YWx1ZTpmdW5jdGlvbih5LEMpe2lmKG51bGw9PT10aGlzLnNoZWV0SWR8fCF0aGlzLmVuZ2luZS5kb2VzU2hlZXRFeGlzdCh0aGlzLnNoZWV0TmFtZSl8''@;'; put 'put ''fCF0aGlzLmVuZ2luZS5pc0l0UG9zc2libGVUb0FkZENvbHVtbnModGhpcy5zaGVldElkLFt0aGlzLnRvUGh5c2ljYWxDb2x1bW5Qb3NpdGlvbih5KSxDXSkpcmV0dXJuITF9fSx7a2V5OiJvbkJlZm9yZVJlbW92ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe3ZhciBaPXRoaXM7cmV0dXJu''@;'; put 'put ''ITEhPT1JLmV2ZXJ5KGZ1bmN0aW9uKF9lKXtyZXR1cm4gWi5lbmdpbmUuaXNJdFBvc3NpYmxlVG9SZW1vdmVSb3dzKFouc2hlZXRJZCxbX2UsMV0pfSkmJnZvaWQgMH19LHtrZXk6Im9uQmVmb3JlUmVtb3ZlQ29sIix2YWx1ZTpmdW5jdGlvbih5LEMsSSl7dmFyIFo9dGhpcztyZXR1cm4hMSE9''@;'; put 'put ''PUkuZXZlcnkoZnVuY3Rpb24oX2Upe3JldHVybiBaLmVuZ2luZS5pc0l0UG9zc2libGVUb1JlbW92ZUNvbHVtbnMoWi5zaGVldElkLFtfZSwxXSl9KSYmdm9pZCAwfX0se2tleToib25BZnRlckNyZWF0ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe2lmKCFxTyhJKSl7dmFyIFo9dGhpcy5l''@;'; put 'put ''bmdpbmUuYWRkUm93cyh0aGlzLnNoZWV0SWQsW3RoaXMudG9QaHlzaWNhbFJvd1Bvc2l0aW9uKHkpLENdKTt0aGlzLnJlbmRlckRlcGVuZGVudFNoZWV0cyhaKX19fSx7a2V5OiJvbkFmdGVyQ3JlYXRlQ29sIix2YWx1ZTpmdW5jdGlvbih5LEMsSSl7aWYoIXFPKEkpKXt2YXIgWj10aGlzLmVu''@;'; put 'put ''Z2luZS5hZGRDb2x1bW5zKHRoaXMuc2hlZXRJZCxbdGhpcy50b1BoeXNpY2FsQ29sdW1uUG9zaXRpb24oeSksQ10pO3RoaXMucmVuZGVyRGVwZW5kZW50U2hlZXRzKFopfX19LHtrZXk6Im9uQWZ0ZXJSZW1vdmVSb3ciLHZhbHVlOmZ1bmN0aW9uKHksQyxJLFope3ZhciB1ZT10aGlzO2lmKCFx''@;'; put 'put ''TyhaKSl7dmFyIF9lPUkuc29ydCgpLnJldmVyc2UoKSxCZT10aGlzLmVuZ2luZS5iYXRjaChmdW5jdGlvbigpe19lLmZvckVhY2goZnVuY3Rpb24oTmUpe3VlLmVuZ2luZS5yZW1vdmVSb3dzKHVlLnNoZWV0SWQsW05lLDFdKX0pfSk7dGhpcy5yZW5kZXJEZXBlbmRlbnRTaGVldHMoQmUpfX19''@;'; put 'put ''LHtrZXk6Im9uQWZ0ZXJSZW1vdmVDb2wiLHZhbHVlOmZ1bmN0aW9uKHksQyxJLFope3ZhciB1ZT10aGlzO2lmKCFxTyhaKSl7dmFyIF9lPUkuc29ydCgpLnJldmVyc2UoKSxCZT10aGlzLmVuZ2luZS5iYXRjaChmdW5jdGlvbigpe19lLmZvckVhY2goZnVuY3Rpb24oTmUpe3VlLmVuZ2luZS5y''@;'; put 'put ''ZW1vdmVDb2x1bW5zKHVlLnNoZWV0SWQsW05lLDFdKX0pfSk7dGhpcy5yZW5kZXJEZXBlbmRlbnRTaGVldHMoQmUpfX19LHtrZXk6Im9uQWZ0ZXJEZXRhY2hDaGlsZCIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe3ZhciBaLHVlPXRoaXM7S08odGhpcyx1TSwhMCk7dmFyIF9lPXRoaXMuaG90Lmdl''@;'; put 'put ''dFNvdXJjZURhdGFBcnJheShJLDAsSSsoKG51bGw9PT0oWj1DLl9fY2hpbGRyZW4pfHx2b2lkIDA9PT1aP3ZvaWQgMDpaLmxlbmd0aCl8fDApLHRoaXMuaG90LmNvdW50U291cmNlQ29scygpKTtLTyh0aGlzLHVNLCExKSxfZS5mb3JFYWNoKGZ1bmN0aW9uKEJlLE5lKXtCZS5mb3JFYWNoKGZ1''@;'; put 'put ''bmN0aW9uKEtlLHB0KXt1ZS5lbmdpbmUuc2V0Q2VsbENvbnRlbnRzKHtjb2w6cHQscm93OkkrTmUsc2hlZXQ6dWUuc2hlZXRJZH0sW1tLZV1dKX0pfSl9fSx7a2V5OiJvbkVuZ2luZVZhbHVlc1VwZGF0ZWQiLHZhbHVlOmZ1bmN0aW9uKHkpe3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckZvcm11''@;'; put 'put ''bGFzVmFsdWVzVXBkYXRlIix5KX19LHtrZXk6Im9uRW5naW5lTmFtZWRFeHByZXNzaW9uc0FkZGVkIix2YWx1ZTpmdW5jdGlvbih5LEMpe3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlck5hbWVkRXhwcmVzc2lvbkFkZGVkIix5LEMpfX0se2tleToib25FbmdpbmVOYW1lZEV4cHJlc3Npb25zUmVt''@;'; put 'put ''b3ZlZCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJOYW1lZEV4cHJlc3Npb25SZW1vdmVkIix5LEMpfX0se2tleToib25FbmdpbmVTaGVldEFkZGVkIix2YWx1ZTpmdW5jdGlvbih5KXt0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJTaGVldEFkZGVkIix5KX19''@;'; put 'put ''LHtrZXk6Im9uRW5naW5lU2hlZXRSZW5hbWVkIix2YWx1ZTpmdW5jdGlvbih5LEMpe3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclNoZWV0UmVuYW1lZCIseSxDKX19LHtrZXk6Im9uRW5naW5lU2hlZXRSZW1vdmVkIix2YWx1ZTpmdW5jdGlvbih5LEMpe3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRl''@;'; put 'put ''clNoZWV0UmVtb3ZlZCIseSxDKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHUzfX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMjYwfX1dKSxofShZcyk7ZnVuY3Rpb24gbkllKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5n''@;'; put 'put ''dGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gbW5lKGQpe3JldHVybiBmdW5jdGlvbiBMZnQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gQjVlKGQpfShkKXx8ZnVuY3Rpb24gRGZ0KGQp''@;'; put 'put ''e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0oZCl8fGZ1bmN0aW9uIElmdChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gQjVlKGQs''@;'; put 'put ''Zyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRz''@;'; put 'put ''Ij09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBCNWUoZCxnKX19KGQpfHxmdW5jdGlvbiBUZnQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5c''@;'; put 'put ''bkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBCNWUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJh''@;'; put 'put ''eShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBQNWUoZCl7cmV0dXJuKFA1ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVy''@;'; put 'put ''biBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIFJmdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5v''@;'; put 'put ''dCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIHJJZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCks''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGNNKCl7cmV0dXJuIGNNPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1QZnQoZyxoKTtpZih5KXt2YXIgQz1PYmpl''@;'; put 'put ''Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LGNNLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBQZnQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blBy''@;'; put 'put ''b3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPVl2KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIEY1ZShkLGcpe3JldHVybihGNWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSko''@;'; put 'put ''ZCxnKX1mdW5jdGlvbiBOZnQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1QNWUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5k''@;'; put 'put ''ZWZpbmVkIik7cmV0dXJuIEg1ZShkKX1mdW5jdGlvbiBINWUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIFl2KGQpe3Jl''@;'; put 'put ''dHVybihZdj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfWZ1bmN0aW9uIGlJZShkLGcsaCl7KGZ1bmN0aW9uIGpmdChkLGcpe2lmKGcu''@;'; put 'put ''aGFzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShkLGcpLGcuc2V0KGQsaCl9ZnVuY3Rpb24gdzQoZCxnKXtyZXR1cm4gZnVuY3Rpb24gWmZ0KGQsZyl7cmV0dXJuIGcuZ2V0''@;'; put 'put ''P2cuZ2V0LmNhbGwoZCk6Zy52YWx1ZX0oZCxvSWUoZCxnLCJnZXQiKSl9ZnVuY3Rpb24gT3ooZCxnLGgpe3JldHVybiBmdW5jdGlvbiB6ZnQoZCxnLGgpe2lmKGcuc2V0KWcuc2V0LmNhbGwoZCxoKTtlbHNle2lmKCFnLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0''@;'; put 'put ''byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtnLnZhbHVlPWh9fShkLG9JZShkLGcsInNldCIpLGgpLGh9ZnVuY3Rpb24gb0llKGQsZyxoKXtpZighZy5oYXMoZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIraCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3Rh''@;'; put 'put ''bmNlIik7cmV0dXJuIGcuZ2V0KGQpfXpvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVIaWRlQ29sdW1ucyIpLHpvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckhpZGVDb2x1bW5zIiksem8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZVVuaGlkZUNvbHVtbnMi''@;'; put 'put ''KSx6by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJVbmhpZGVDb2x1bW5zIik7dmFyIE41ZT0iaGlkZGVuQ29sdW1ucyIsQmc9bmV3IFdlYWtNYXAsUGc9bmV3IFdlYWtNYXAsV2Z0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBGZnQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYm''@;'; put 'put ''bnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1''@;'; put 'put ''cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmRjVlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gSGZ0KGQpe3ZhciBnPWZ1bmN0aW9uIFZmdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3Qu''@;'; put 'put ''Y29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkp''@;'; put 'put ''LCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVl2KGQpO2lmKGcpe3ZhciBDPVl2KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBO''@;'; put 'put ''ZnQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXt2YXIgdjtSZnQodGhpcyxoKTtmb3IodmFyIHk9YXJndW1lbnRzLmxlbmd0aCxDPW5ldyBBcnJheSh5KSxJPTA7STx5O0krKylDW0ldPWFyZ3VtZW50c1tJXTtyZXR1cm4gaUllKEg1ZSh2PWcuY2FsbC5hcHBseShnLFt0aGlzXS5jb25jYXQo''@;'; put 'put ''QykpKSxCZyx7d3JpdGFibGU6ITAsdmFsdWU6e319KSxpSWUoSDVlKHYpLFBnLHt3cml0YWJsZTohMCx2YWx1ZTpudWxsfSksdn1yZXR1cm4gZnVuY3Rpb24gQmZ0KGQsZyxoKXtnJiZySWUoZC5wcm90b3R5cGUsZyksaCYmckllKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3Rv''@;'; put 'put ''dHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbTjVlXX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO2lmKCF0aGlzLmVuYWJsZWQpe3Zh''@;'; put 'put ''ciBDPXRoaXMuaG90LmdldFNldHRpbmdzKClbTjVlXTt4bChDKSYmKE96KHRoaXMsQmcsQyksYTEoQy5jb3B5UGFzdGVFbmFibGVkKSYmKEMuY29weVBhc3RlRW5hYmxlZD0hMCkpLE96KHRoaXMsUGcsbmV3IFdlZSksdzQodGhpcyxQZykuYWRkTG9jYWxIb29rKCJpbml0IixmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiB5Lm9uTWFwSW5pdCgpfSksdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5OYW1lLHc0KHRoaXMsUGcpKSx0aGlzLmFkZEhvb2soImFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVy''@;'; put 'put ''Q29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucy5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyR2V0Q2VsbE1ldGEiLGZ1bmN0aW9uKEksWix1ZSl7cmV0dXJuIHkub25BZnRlckdldENlbGxNZXRhKEksWix1ZSl9KSx0aGlzLmFkZEhvb2soIm1vZGlmeUNvbFdpZHRoIixm''@;'; put 'put ''dW5jdGlvbihJLFope3JldHVybiB5Lm9uTW9kaWZ5Q29sV2lkdGgoSSxaKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJHZXRDb2xIZWFkZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckdldENvbEhlYWRlci5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soIm1vZGlmeUNvcHlh''@;'; put 'put ''YmxlUmFuZ2UiLGZ1bmN0aW9uKEkpe3JldHVybiB5Lm9uTW9kaWZ5Q29weWFibGVSYW5nZShJKX0pLGNNKFl2KGgucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX19LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVQbHVn''@;'; put 'put ''aW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLGNNKFl2KGgucHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHRoaXMucGx1''@;'; put 'put ''Z2luTmFtZSksT3oodGhpcyxCZyx7fSksY00oWXYoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpLHRoaXMucmVzZXRDZWxsc01ldGEoKX19LHtrZXk6InNob3dDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9dGhpcy5nZXRIaWRkZW5D''@;'; put 'put ''b2x1bW5zKCksWj10aGlzLmlzVmFsaWRDb25maWcoeSksdWU9SSxfZT13NCh0aGlzLFBnKS5nZXRWYWx1ZXMoKS5zbGljZSgpLEJlPXkubGVuZ3RoPjA7WiYmQmUmJihVcih5Lm1hcChmdW5jdGlvbihwdCl7cmV0dXJuIEMuaG90LnRvUGh5c2ljYWxDb2x1bW4ocHQpfSksZnVuY3Rpb24ocHQp''@;'; put 'put ''e19lW3B0XT0hMX0pLHVlPVN1KF9lLGZ1bmN0aW9uKHB0LE90LCR0KXtyZXR1cm4gT3QmJnB0LnB1c2goQy5ob3QudG9WaXN1YWxDb2x1bW4oJHQpKSxwdH0sW10pKSwhMSE9PXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVVbmhpZGVDb2x1bW5zIixJLHVlLFomJkJlKSYmKFomJkJlJiZ3NCh0''@;'; put 'put ''aGlzLFBnKS5zZXRWYWx1ZXMoX2UpLHRoaXMuaG90LnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyVW5oaWRlQ29sdW1ucyIsSSx1ZSxaJiZCZSxaJiZ1ZS5sZW5ndGg8SS5sZW5ndGgpKX19LHtrZXk6InNob3dDb2x1bW4iLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KCl7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeSksST0wO0k8eTtJKyspQ1tJXT1hcmd1bWVudHNbSV07dGhpcy5zaG93Q29sdW1ucyhDKX19LHtrZXk6ImhpZGVDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9dGhpcy5nZXRIaWRkZW5Db2x1''@;'; put 'put ''bW5zKCksWj10aGlzLmlzVmFsaWRDb25maWcoeSksdWU9STtaJiYodWU9QXJyYXkuZnJvbShuZXcgU2V0KEkuY29uY2F0KHkpKSkpLCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUhpZGVDb2x1bW5zIixJLHVlLFopJiYoWiYmdGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oZnVuY3Rpb24o''@;'; put 'put ''KXtVcih5LGZ1bmN0aW9uKEJlKXt3NChDLFBnKS5zZXRWYWx1ZUF0SW5kZXgoQy5ob3QudG9QaHlzaWNhbENvbHVtbihCZSksITApfSl9LCEwKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJIaWRlQ29sdW1ucyIsSSx1ZSxaLFomJnVlLmxlbmd0aD5JLmxlbmd0aCkpfX0se2tleToiaGlkZUNv''@;'; put 'put ''bHVtbiIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHk9YXJndW1lbnRzLmxlbmd0aCxDPW5ldyBBcnJheSh5KSxJPTA7STx5O0krKylDW0ldPWFyZ3VtZW50c1tJXTt0aGlzLmhpZGVDb2x1bW5zKEMpfX0se2tleToiZ2V0SGlkZGVuQ29sdW1ucyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10''@;'; put 'put ''aGlzO3JldHVybiBPbCh3NCh0aGlzLFBnKS5nZXRIaWRkZW5JbmRleGVzKCksZnVuY3Rpb24oQyl7cmV0dXJuIHkuaG90LnRvVmlzdWFsQ29sdW1uKEMpfSl9fSx7a2V5OiJpc0hpZGRlbiIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIHc0KHRoaXMsUGcpLmdldFZhbHVlQXRJbmRleCh0aGlz''@;'; put 'put ''LmhvdC50b1BoeXNpY2FsQ29sdW1uKHkpKXx8ITF9fSx7a2V5OiJpc1ZhbGlkQ29uZmlnIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLmhvdC5jb3VudENvbHMoKTtyZXR1cm4hIShBcnJheS5pc0FycmF5KHkpJiZ5Lmxlbmd0aD4wKSYmeS5ldmVyeShmdW5jdGlvbihJKXtyZXR1cm4g''@;'; put 'put ''TnVtYmVyLmlzSW50ZWdlcihJKSYmST49MCYmSTxDfSl9fSx7a2V5OiJyZXNldENlbGxzTWV0YSIsdmFsdWU6ZnVuY3Rpb24oKXtVcih0aGlzLmhvdC5nZXRDZWxsc01ldGEoKSxmdW5jdGlvbih5KXt5JiYoeS5za2lwQ29sdW1uT25QYXN0ZT0hMSl9KX19LHtrZXk6Im9uTW9kaWZ5Q29sV2lk''@;'; put 'put ''dGgiLHZhbHVlOmZ1bmN0aW9uKHksQyl7cmV0dXJuIHRoaXMuaXNIaWRkZW4oQyk/MDp3NCh0aGlzLEJnKS5pbmRpY2F0b3JzJiYodGhpcy5pc0hpZGRlbihDKzEpfHx0aGlzLmlzSGlkZGVuKEMtMSkpJiYibnVtYmVyIj09dHlwZW9mIHkmJnRoaXMuaG90Lmhhc0NvbEhlYWRlcnMoKT95KzE1''@;'; put 'put ''OnZvaWQgMH19LHtrZXk6Im9uQWZ0ZXJHZXRDZWxsTWV0YSIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe2lmKCExPT09dzQodGhpcyxCZykuY29weVBhc3RlRW5hYmxlZCYmdGhpcy5pc0hpZGRlbihDKSYmKEkuc2tpcENvbHVtbk9uUGFzdGU9ITApLHRoaXMuaXNIaWRkZW4oQy0xKSlJLmNsYXNz''@;'; put 'put ''TmFtZT1JLmNsYXNzTmFtZXx8IiIsLTE9PT1JLmNsYXNzTmFtZS5pbmRleE9mKCJhZnRlckhpZGRlbkNvbHVtbiIpJiYoSS5jbGFzc05hbWUrPSIgYWZ0ZXJIaWRkZW5Db2x1bW4iKTtlbHNlIGlmKEkuY2xhc3NOYW1lKXt2YXIgWj1JLmNsYXNzTmFtZS5zcGxpdCgiICIpO2lmKFoubGVuZ3Ro''@;'; put 'put ''PjApe3ZhciB1ZT1aLmluZGV4T2YoImFmdGVySGlkZGVuQ29sdW1uIik7dWU+LTEmJlouc3BsaWNlKHVlLDEpLEkuY2xhc3NOYW1lPVouam9pbigiICIpfX19fSx7a2V5OiJvbk1vZGlmeUNvcHlhYmxlUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXM7aWYodzQodGhpcyxCZyku''@;'; put 'put ''Y29weVBhc3RlRW5hYmxlZClyZXR1cm4geTt2YXIgST1bXSxaPWZ1bmN0aW9uKF9lLEJlLE5lLEtlKXtJLnB1c2goe3N0YXJ0Um93Ol9lLGVuZFJvdzpCZSxzdGFydENvbDpOZSxlbmRDb2w6S2V9KX07cmV0dXJuIFVyKHksZnVuY3Rpb24odWUpe3ZhciBfZT0hMCxCZT0wO2lhKHVlLnN0YXJ0''@;'; put 'put ''Q29sLHVlLmVuZENvbCxmdW5jdGlvbihOZSl7Qy5pc0hpZGRlbihOZSk/KF9lfHxaKHVlLnN0YXJ0Um93LHVlLmVuZFJvdyxCZSxOZS0xKSxfZT0hMCk6KF9lJiYoQmU9TmUpLE5lPT09dWUuZW5kQ29sJiZaKHVlLnN0YXJ0Um93LHVlLmVuZFJvdyxCZSxOZSksX2U9ITEpfSl9KSxJfX0se2tl''@;'; put 'put ''eToib25BZnRlckdldENvbEhlYWRlciIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtpZih3NCh0aGlzLEJnKS5pbmRpY2F0b3JzJiYhKHk8MCkpe3ZhciBJPVtdO3k+PTEmJnRoaXMuaXNIaWRkZW4oeS0xKSYmSS5wdXNoKCJhZnRlckhpZGRlbkNvbHVtbiIpLHk8dGhpcy5ob3QuY291bnRDb2xzKCkt''@;'; put 'put ''MSYmdGhpcy5pc0hpZGRlbih5KzEpJiZJLnB1c2goImJlZm9yZUhpZGRlbkNvbHVtbiIpLE8wKEMsSSl9fX0se2tleToib25BZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHkpe3kuaXRlbXMucHVzaCh7bmFtZTpXbH0sZnVuY3Rpb24geGZ0KGQpe3JldHVy''@;'; put 'put ''bntrZXk6ImhpZGRlbl9jb2x1bW5zX2hpZGUiLG5hbWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmdldFNlbGVjdGVkTGFzdCgpLHY9MDtpZihBcnJheS5pc0FycmF5KGgpKXt2YXIgeT1mdW5jdGlvbiBDZnQoZCxnKXtyZXR1cm4gZnVuY3Rpb24gRWZ0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkp''@;'; put 'put ''cmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBNZnQoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2Fs''@;'; put 'put ''bChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaCh1ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgWn19cmV0dXJuIHZ9''@;'; put 'put ''fShkLGcpfHxmdW5jdGlvbiBTZnQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIG5JZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3Ry''@;'; put 'put ''dWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gbkllKGQsZyl9fShkLGcpfHxmdW5jdGlvbiBrZnQoKXt0''@;'; put 'put ''aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfSho''@;'; put 'put ''LDQpO3lbMV0teVszXSE9MCYmKHY9MSl9cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShscGUsdil9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7Zm9yKHZhciBoPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSx2PWguZnJvbSx5PWgudG8sQz1NYXRoLm1heChNYXRoLm1pbih2LmNvbCx5''@;'; put 'put ''LmNvbCksMCksST1NYXRoLm1heCh2LmNvbCx5LmNvbCksWj1bXSx1ZT1DO3VlPD1JO3VlKz0xKVoucHVzaCh1ZSk7ZC5oaWRlQ29sdW1ucyhaKTt2YXIgQmU9dGhpcy5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoWltaLmxlbmd0aC0xXSwxLCEwKTtOdW1iZXIu''@;'; put 'put ''aXNJbnRlZ2VyKEJlKSYmQmU+PTA/dGhpcy5zZWxlY3RDb2x1bW5zKEJlKTp0aGlzLmRlc2VsZWN0Q2VsbCgpLHRoaXMucmVuZGVyKCksdGhpcy52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSghMCl9LGRpc2FibGVkOiExLGhpZGRlbjpmdW5jdGlvbigpe3JldHVybiEodGhpcy5zZWxlY3Rpb24u''@;'; put 'put ''aXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCl8fHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpKX19fSh0aGlzKSxmdW5jdGlvbiBPZnQoZCl7dmFyIGc9W107cmV0dXJue2tleToiaGlkZGVuX2NvbHVtbnNfc2hvdyIsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRy''@;'; put 'put ''YW5zbGF0ZWRQaHJhc2Uoc3BlLGcubGVuZ3RoPjE/MTowKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgdix5O2lmKDAhPT1nLmxlbmd0aCl7dmFyIEM9Z1swXSxJPWdbZy5sZW5ndGgtMV07Qz1udWxsIT09KHY9dGhpcy5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5k''@;'; put 'put ''ZXgoQy0xLC0xKSkmJnZvaWQgMCE9PXY/djowLEk9bnVsbCE9PSh5PXRoaXMuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KEkrMSwxKSkmJnZvaWQgMCE9PXk/eTp0aGlzLmNvdW50Q29scygpLTEsZC5zaG93Q29sdW1ucyhnKSx0aGlzLnJlbmRlcigpLHRoaXMu''@;'; put 'put ''dmlldy5hZGp1c3RFbGVtZW50c1NpemUoITApLEktQysxPT09dGhpcy5jb3VudENvbHMoKXx8dGhpcy5zZWxlY3RDb2x1bW5zKEMsSSl9fSxkaXNhYmxlZDohMSxoaWRkZW46ZnVuY3Rpb24oKXt2YXIgdj10aGlzLHk9T2woZC5nZXRIaWRkZW5Db2x1bW5zKCksZnVuY3Rpb24oaXIpe3JldHVy''@;'; put 'put ''biB2LnRvUGh5c2ljYWxDb2x1bW4oaXIpfSk7aWYoIXRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpJiYhdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCl8fHkubGVuZ3RoPDEpcmV0dXJuITA7Zy5sZW5ndGg9MDt2YXIgQz10aGlzLmdldFNlbGVjdGVk''@;'; put 'put ''UmFuZ2VMYXN0KCksST1DLmdldFRvcFN0YXJ0Q29ybmVyKCkuY29sLFo9Qy5nZXRCb3R0b21FbmRDb3JuZXIoKS5jb2wsdWU9dGhpcy5jb2x1bW5JbmRleE1hcHBlcixfZT11ZS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KEkpLEJlPXVlLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5k''@;'; put 'put ''ZXgoWiksTmU9dWUuZ2V0Tm90VHJpbW1lZEluZGV4ZXMoKSxLZT1bXTtpZihJIT09Wil7aWYoWi1JKzE+QmUtX2UrMSl7dmFyICR0PU5lLnNsaWNlKEksWisxKTtLZS5wdXNoLmFwcGx5KEtlLG1uZSgkdC5maWx0ZXIoZnVuY3Rpb24oaXIpe3JldHVybiB5LmluY2x1ZGVzKGlyKX0pKSl9fWVs''@;'; put 'put ''c2UgaWYoMD09PV9lJiZfZTxJKUtlLnB1c2guYXBwbHkoS2UsbW5lKE5lLnNsaWNlKDAsSSkpKTtlbHNlIGlmKG51bGw9PT1fZSlLZS5wdXNoLmFwcGx5KEtlLG1uZShOZS5zbGljZSgwLHRoaXMuY291bnRDb2xzKCkpKSk7ZWxzZXt2YXIgZm49dGhpcy5jb3VudENvbHMoKS0xO0JlPT09dWUu''@;'; put 'put ''Z2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleCh1ZS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoZm4sLTEpKSYmZm4+WiYmS2UucHVzaC5hcHBseShLZSxtbmUoTmUuc2xpY2UoWisxKSkpfXJldHVybiBVcihLZSxmdW5jdGlvbihpcil7Zy5wdXNoKHYudG9WaXN1YWxDb2x1bW4oaXIpKX0p''@;'; put 'put ''LDA9PT1nLmxlbmd0aH19fSh0aGlzKSl9fSx7a2V5OiJvbk1hcEluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7QXJyYXkuaXNBcnJheSh3NCh0aGlzLEJnKS5jb2x1bW5zKSYmdGhpcy5oaWRlQ29sdW1ucyh3NCh0aGlzLEJnKS5jb2x1bW5zKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KCl7T3oodGhpcyxCZyxudWxsKSxPeih0aGlzLFBnLG51bGwpLGNNKFl2KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE41ZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIDMxMH19XSksaH0oWXMpO2Z1bmN0aW9uIGFJZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIHZuZShkKXtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24gdGh0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIFY1ZShkKX0oZCl8fGZ1bmN0aW9uIGVodChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9''@;'; put 'put ''KGQpfHxmdW5jdGlvbiBxZnQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIFY1ZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0''@;'; put 'put ''b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gVjVlKGQsZyl9fShkKXx8ZnVuY3Rpb24gJGZ0KCl7dGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gVjVl''@;'; put 'put ''KGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gajVlKGQpe3JldHVybihqNWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVv''@;'; put 'put ''ZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1m''@;'; put 'put ''dW5jdGlvbiByaHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBsSWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9''@;'; put 'put ''di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBmTSgpe3JldHVybiBmTT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1Jl''@;'; put 'put ''ZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9b2h0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxmTS5hcHBseSh0''@;'; put 'put ''aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gb2h0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1VdihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBaNWUoZCxnKXtyZXR1cm4oWjVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmpl''@;'; put 'put ''Y3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gc2h0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09ajVlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiB6NWUoZCl9ZnVuY3Rpb24gejVlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRp''@;'; put 'put ''YWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiBVdihkKXtyZXR1cm4oVXY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0''@;'; put 'put ''UHJvdG90eXBlT2YoaCl9KShkKX1mdW5jdGlvbiBzSWUoZCxnLGgpeyhmdW5jdGlvbiBjaHQoZCxnKXtpZihnLmhhcyhkKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkoZCxnKSxn''@;'; put 'put ''LnNldChkLGgpfWZ1bmN0aW9uIEZwKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIGZodChkLGcpe3JldHVybiBnLmdldD9nLmdldC5jYWxsKGQpOmcudmFsdWV9KGQsdUllKGQsZywiZ2V0IikpfWZ1bmN0aW9uIFJ6KGQsZyxoKXtyZXR1cm4gZnVuY3Rpb24gaGh0KGQsZyxoKXtpZihnLnNldClnLnNl''@;'; put 'put ''dC5jYWxsKGQsaCk7ZWxzZXtpZighZy53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7Zy52YWx1ZT1ofX0oZCx1SWUoZCxnLCJzZXQiKSxoKSxofWZ1bmN0aW9uIHVJZShkLGcsaCl7aWYoIWcuaGFzKGQpKXRo''@;'; put 'put ''cm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK2grIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBnLmdldChkKX16by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlSGlkZVJvd3MiKSx6by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJI''@;'; put 'put ''aWRlUm93cyIpLHpvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVVbmhpZGVSb3dzIiksem8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyVW5oaWRlUm93cyIpO3ZhciBHNWU9ImhpZGRlblJvd3MiLFF2PW5ldyBXZWFrTWFwLEZnPW5ldyBXZWFrTWFwLHBodD1mdW5jdGlv''@;'; put 'put ''bihkKXshZnVuY3Rpb24gYWh0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnBy''@;'; put 'put ''b3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJlo1ZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIGxodChkKXt2YXIgZz1mdW5jdGlv''@;'; put 'put ''biB1aHQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9m''@;'; put 'put ''LmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1VdihkKTtpZihnKXt2YXIgQz1Vdih0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJn''@;'; put 'put ''dW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gc2h0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7dmFyIHY7cmh0KHRoaXMsaCk7Zm9yKHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeSksST0wO0k8eTtJKyspQ1tJXT1hcmd1bWVudHNb''@;'; put 'put ''SV07cmV0dXJuIHNJZSh6NWUodj1nLmNhbGwuYXBwbHkoZyxbdGhpc10uY29uY2F0KEMpKSksUXYse3dyaXRhYmxlOiEwLHZhbHVlOnt9fSksc0llKHo1ZSh2KSxGZyx7d3JpdGFibGU6ITAsdmFsdWU6bnVsbH0pLHZ9cmV0dXJuIGZ1bmN0aW9uIGlodChkLGcsaCl7ZyYmbEllKGQucHJvdG90''@;'; put 'put ''eXBlLGcpLGgmJmxJZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW0c1ZV19fSx7a2V5OiJlbmFibGVQbHVnaW4i''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztpZighdGhpcy5lbmFibGVkKXt2YXIgQz10aGlzLmhvdC5nZXRTZXR0aW5ncygpW0c1ZV07eGwoQykmJihSeih0aGlzLFF2LEMpLGExKEMuY29weVBhc3RlRW5hYmxlZCkmJihDLmNvcHlQYXN0ZUVuYWJsZWQ9ITApKSxSeih0aGlzLEZnLG5l''@;'; put 'put ''dyBXZWUpLEZwKHRoaXMsRmcpLmFkZExvY2FsSG9vaygiaW5pdCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbk1hcEluaXQoKX0pLHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZSxGcCh0aGlzLEZnKSksdGhpcy5hZGRIb29rKCJhZnRlckNvbnRleHRN''@;'; put 'put ''ZW51RGVmYXVsdE9wdGlvbnMiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlckdldENlbGxNZXRhIixmdW5jdGlvbihJLFosdWUpe3JldHVybiB5Lm9uQWZ0ZXJHZXRDZWxs''@;'; put 'put ''TWV0YShJLFosdWUpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlSb3dIZWlnaHQiLGZ1bmN0aW9uKEksWil7cmV0dXJuIHkub25Nb2RpZnlSb3dIZWlnaHQoSSxaKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJHZXRSb3dIZWFkZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckdldFJvd0hlYWRl''@;'; put 'put ''ci5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soIm1vZGlmeUNvcHlhYmxlUmFuZ2UiLGZ1bmN0aW9uKEkpe3JldHVybiB5Lm9uTW9kaWZ5Q29weWFibGVSYW5nZShJKX0pLGZNKFV2KGgucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX19LHtrZXk6''@;'; put 'put ''InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLGZNKFV2KGgucHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0''@;'; put 'put ''aGlzLmhvdC5yb3dJbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZSksUnoodGhpcyxRdix7fSksZk0oVXYoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpLHRoaXMucmVzZXRDZWxsc01ldGEoKX19LHtrZXk6InNob3dSb3dzIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9dGhpcy5nZXRIaWRkZW5Sb3dzKCksWj10aGlzLmlzVmFsaWRDb25maWcoeSksdWU9SSxfZT1GcCh0aGlzLEZnKS5nZXRWYWx1ZXMoKS5zbGljZSgpLEJlPXkubGVuZ3RoPjA7WiYmQmUmJihVcih5Lm1hcChmdW5jdGlvbihwdCl7cmV0dXJuIEMu''@;'; put 'put ''aG90LnRvUGh5c2ljYWxSb3cocHQpfSksZnVuY3Rpb24ocHQpe19lW3B0XT0hMX0pLHVlPVN1KF9lLGZ1bmN0aW9uKHB0LE90LCR0KXtyZXR1cm4gT3QmJnB0LnB1c2goQy5ob3QudG9WaXN1YWxSb3coJHQpKSxwdH0sW10pKSwhMSE9PXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVVbmhpZGVS''@;'; put 'put ''b3dzIixJLHVlLFomJkJlKSYmKFomJkJlJiZGcCh0aGlzLEZnKS5zZXRWYWx1ZXMoX2UpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclVuaGlkZVJvd3MiLEksdWUsWiYmQmUsWiYmdWUubGVuZ3RoPEkubGVuZ3RoKSl9fSx7a2V5OiJzaG93Um93Iix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIg''@;'; put 'put ''eT1hcmd1bWVudHMubGVuZ3RoLEM9bmV3IEFycmF5KHkpLEk9MDtJPHk7SSsrKUNbSV09YXJndW1lbnRzW0ldO3RoaXMuc2hvd1Jvd3MoQyl9fSx7a2V5OiJoaWRlUm93cyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPXRoaXMuZ2V0SGlkZGVuUm93cygpLFo9dGhpcy5pc1ZhbGlk''@;'; put 'put ''Q29uZmlnKHkpLHVlPUk7WiYmKHVlPUFycmF5LmZyb20obmV3IFNldChJLmNvbmNhdCh5KSkpKSwhMSE9PXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVIaWRlUm93cyIsSSx1ZSxaKSYmKFomJnRoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7VXIoeSxmdW5jdGlvbihCZSl7RnAo''@;'; put 'put ''QyxGZykuc2V0VmFsdWVBdEluZGV4KEMuaG90LnRvUGh5c2ljYWxSb3coQmUpLCEwKX0pfSwhMCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVySGlkZVJvd3MiLEksdWUsWixaJiZ1ZS5sZW5ndGg+SS5sZW5ndGgpKX19LHtrZXk6ImhpZGVSb3ciLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB5''@;'; put 'put ''PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeSksST0wO0k8eTtJKyspQ1tJXT1hcmd1bWVudHNbSV07dGhpcy5oaWRlUm93cyhDKX19LHtrZXk6ImdldEhpZGRlblJvd3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztyZXR1cm4gT2woRnAodGhpcyxGZykuZ2V0SGlkZGVuSW5k''@;'; put 'put ''ZXhlcygpLGZ1bmN0aW9uKEMpe3JldHVybiB5LmhvdC50b1Zpc3VhbFJvdyhDKX0pfX0se2tleToiaXNIaWRkZW4iLHZhbHVlOmZ1bmN0aW9uKHkpe3JldHVybiBGcCh0aGlzLEZnKS5nZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbFJvdyh5KSl8fCExfX0se2tleToiaXNWYWxp''@;'; put 'put ''ZENvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5ob3QuY291bnRSb3dzKCk7cmV0dXJuISEoQXJyYXkuaXNBcnJheSh5KSYmeS5sZW5ndGg+MCkmJnkuZXZlcnkoZnVuY3Rpb24oSSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoSSkmJkk+PTAmJkk8Q30pfX0se2tleToicmVz''@;'; put 'put ''ZXRDZWxsc01ldGEiLHZhbHVlOmZ1bmN0aW9uKCl7VXIodGhpcy5ob3QuZ2V0Q2VsbHNNZXRhKCksZnVuY3Rpb24oeSl7eSYmKHkuc2tpcFJvd09uUGFzdGU9ITEpfSl9fSx7a2V5OiJvbk1vZGlmeVJvd0hlaWdodCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtyZXR1cm4gdGhpcy5pc0hpZGRlbihD''@;'; put 'put ''KT8wOnl9fSx7a2V5OiJvbkFmdGVyR2V0Q2VsbE1ldGEiLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXtpZighMT09PUZwKHRoaXMsUXYpLmNvcHlQYXN0ZUVuYWJsZWQmJnRoaXMuaXNIaWRkZW4oeSkmJihJLnNraXBSb3dPblBhc3RlPSEwKSx0aGlzLmlzSGlkZGVuKHktMSkpSS5jbGFzc05hbWU9''@;'; put 'put ''SS5jbGFzc05hbWV8fCIiLC0xPT09SS5jbGFzc05hbWUuaW5kZXhPZigiYWZ0ZXJIaWRkZW5Sb3ciKSYmKEkuY2xhc3NOYW1lKz0iIGFmdGVySGlkZGVuUm93Iik7ZWxzZSBpZihJLmNsYXNzTmFtZSl7dmFyIFo9SS5jbGFzc05hbWUuc3BsaXQoIiAiKTtpZihaLmxlbmd0aD4wKXt2YXIgdWU9''@;'; put 'put ''Wi5pbmRleE9mKCJhZnRlckhpZGRlblJvdyIpO3VlPi0xJiZaLnNwbGljZSh1ZSwxKSxJLmNsYXNzTmFtZT1aLmpvaW4oIiAiKX19fX0se2tleToib25Nb2RpZnlDb3B5YWJsZVJhbmdlIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzO2lmKEZwKHRoaXMsUXYpLmNvcHlQYXN0ZUVuYWJs''@;'; put 'put ''ZWQpcmV0dXJuIHk7dmFyIEk9W10sWj1mdW5jdGlvbihfZSxCZSxOZSxLZSl7SS5wdXNoKHtzdGFydFJvdzpfZSxlbmRSb3c6QmUsc3RhcnRDb2w6TmUsZW5kQ29sOktlfSl9O3JldHVybiBVcih5LGZ1bmN0aW9uKHVlKXt2YXIgX2U9ITAsQmU9MDtpYSh1ZS5zdGFydFJvdyx1ZS5lbmRSb3cs''@;'; put 'put ''ZnVuY3Rpb24oTmUpe0MuaXNIaWRkZW4oTmUpPyhfZXx8WihCZSxOZS0xLHVlLnN0YXJ0Q29sLHVlLmVuZENvbCksX2U9ITApOihfZSYmKEJlPU5lKSxOZT09PXVlLmVuZFJvdyYmWihCZSxOZSx1ZS5zdGFydENvbCx1ZS5lbmRDb2wpLF9lPSExKX0pfSksSX19LHtrZXk6Im9uQWZ0ZXJHZXRS''@;'; put 'put ''b3dIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKHksQyl7aWYoRnAodGhpcyxRdikuaW5kaWNhdG9ycyYmISh5PDApKXt2YXIgST1bXTt5Pj0xJiZ0aGlzLmlzSGlkZGVuKHktMSkmJkkucHVzaCgiYWZ0ZXJIaWRkZW5Sb3ciKSx5PHRoaXMuaG90LmNvdW50Um93cygpLTEmJnRoaXMuaXNIaWRkZW4o''@;'; put 'put ''eSsxKSYmSS5wdXNoKCJiZWZvcmVIaWRkZW5Sb3ciKSxPMChDLEkpfX19LHtrZXk6Im9uQWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih5KXt5Lml0ZW1zLnB1c2goe25hbWU6V2x9LGZ1bmN0aW9uIEtmdChkKXtyZXR1cm57a2V5OiJoaWRkZW5fcm93c19o''@;'; put 'put ''aWRlIixuYW1lOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5nZXRTZWxlY3RlZExhc3QoKSx2PTA7aWYoQXJyYXkuaXNBcnJheShoKSl7dmFyIHk9ZnVuY3Rpb24gWWZ0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIFhmdChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24g''@;'; put 'put ''SmZ0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxaLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5k''@;'; put 'put ''b25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2godWUpe0M9ITAsWj11ZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IFp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24gUWZ0KGQs''@;'; put 'put ''Zyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBhSWUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8''@;'; put 'put ''IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIGFJZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gVWZ0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52''@;'; put 'put ''YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oaCwzKTt5WzBdLXlbMl0hPTAmJih2PTEp''@;'; put 'put ''fXJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UodXBlLHYpfSxjYWxsYmFjazpmdW5jdGlvbigpe2Zvcih2YXIgaD10aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksdj1oLmZyb20seT1oLnRvLEM9TWF0aC5tYXgoTWF0aC5taW4odi5yb3cseS5yb3cpLDApLEk9TWF0aC5tYXgodi5y''@;'; put 'put ''b3cseS5yb3cpLFo9W10sdWU9Qzt1ZTw9STt1ZSs9MSlaLnB1c2godWUpO2QuaGlkZVJvd3MoWik7dmFyIEJlPXRoaXMucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KFpbWi5sZW5ndGgtMV0sMSwhMCk7TnVtYmVyLmlzSW50ZWdlcihCZSkmJkJlPj0wP3RoaXMuc2Vs''@;'; put 'put ''ZWN0Um93cyhCZSk6dGhpcy5kZXNlbGVjdENlbGwoKSx0aGlzLnJlbmRlcigpLHRoaXMudmlldy5hZGp1c3RFbGVtZW50c1NpemUoITApfSxkaXNhYmxlZDohMSxoaWRkZW46ZnVuY3Rpb24oKXtyZXR1cm4hKHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpfHx0aGlzLnNl''@;'; put 'put ''bGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKSl9fX0odGhpcyksZnVuY3Rpb24gbmh0KGQpe3ZhciBnPVtdO3JldHVybntrZXk6ImhpZGRlbl9yb3dzX3Nob3ciLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKGNwZSxnLmxlbmd0aD4xPzE6MCl9LGNh''@;'; put 'put ''bGxiYWNrOmZ1bmN0aW9uKCl7dmFyIHYseTtpZigwIT09Zy5sZW5ndGgpe3ZhciBDPWdbMF0sST1nW2cubGVuZ3RoLTFdO0M9bnVsbCE9PSh2PXRoaXMucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KEMtMSwtMSkpJiZ2b2lkIDAhPT12P3Y6MCxJPW51bGwhPT0oeT10''@;'; put 'put ''aGlzLnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChJKzEsMSkpJiZ2b2lkIDAhPT15P3k6dGhpcy5jb3VudFJvd3MoKS0xLGQuc2hvd1Jvd3MoZyksdGhpcy5yZW5kZXIoKSx0aGlzLnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCEwKSxJLUMrMT09PXRoaXMuY291bnRS''@;'; put 'put ''b3dzKCl8fHRoaXMuc2VsZWN0Um93cyhDLEkpfX0sZGlzYWJsZWQ6ITEsaGlkZGVuOmZ1bmN0aW9uKCl7dmFyIHY9dGhpcyx5PU9sKGQuZ2V0SGlkZGVuUm93cygpLGZ1bmN0aW9uKGlyKXtyZXR1cm4gdi50b1BoeXNpY2FsUm93KGlyKX0pO2lmKCF0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVk''@;'; put 'put ''QnlSb3dIZWFkZXIoKSYmIXRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpfHx5Lmxlbmd0aDwxKXJldHVybiEwO2cubGVuZ3RoPTA7dmFyIEM9dGhpcy5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLEk9Qy5nZXRUb3BTdGFydENvcm5lcigpLnJvdyxaPUMuZ2V0Qm90dG9tRW5kQ29y''@;'; put 'put ''bmVyKCkucm93LHVlPXRoaXMucm93SW5kZXhNYXBwZXIsX2U9dWUuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChJKSxCZT11ZS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KFopLE5lPXVlLmdldE5vdFRyaW1tZWRJbmRleGVzKCksS2U9W107aWYoSSE9PVope2lmKFotSSsxPkJl''@;'; put 'put ''LV9lKzEpe3ZhciAkdD1OZS5zbGljZShJLForMSk7S2UucHVzaC5hcHBseShLZSx2bmUoJHQuZmlsdGVyKGZ1bmN0aW9uKGlyKXtyZXR1cm4geS5pbmNsdWRlcyhpcil9KSkpfX1lbHNlIGlmKDA9PT1fZSYmX2U8SSlLZS5wdXNoLmFwcGx5KEtlLHZuZShOZS5zbGljZSgwLEkpKSk7ZWxzZSBp''@;'; put 'put ''ZihudWxsPT09X2UpS2UucHVzaC5hcHBseShLZSx2bmUoTmUuc2xpY2UoMCx0aGlzLmNvdW50Um93cygpKSkpO2Vsc2V7dmFyIGZuPXRoaXMuY291bnRSb3dzKCktMTtCZT09PXVlLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgodWUuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGZuLC0x''@;'; put 'put ''KSkmJmZuPlomJktlLnB1c2guYXBwbHkoS2Usdm5lKE5lLnNsaWNlKForMSkpKX1yZXR1cm4gVXIoS2UsZnVuY3Rpb24oaXIpe2cucHVzaCh2LnRvVmlzdWFsUm93KGlyKSl9KSwwPT09Zy5sZW5ndGh9fX0odGhpcykpfX0se2tleToib25NYXBJbml0Iix2YWx1ZTpmdW5jdGlvbigpe0FycmF5''@;'; put 'put ''LmlzQXJyYXkoRnAodGhpcyxRdikucm93cykmJnRoaXMuaGlkZVJvd3MoRnAodGhpcyxRdikucm93cyl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe1J6KHRoaXMsUXYsbnVsbCksUnoodGhpcyxGZyxudWxsKSxmTShVdihoLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNh''@;'; put 'put ''bGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBHNWV9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAzMjB9fV0pLGh9KFlzKTtmdW5jdGlvbiBjSWUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQu''@;'; put 'put ''bGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBmSWUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1''@;'; put 'put ''cm4gdn1mdW5jdGlvbiBXNWUoZCl7cmV0dXJuKFc1ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIGhJZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29u''@;'; put 'put ''ZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGVSKCl7cmV0dXJuIGVSPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0''@;'; put 'put ''aW9uKGcsaCx2KXt2YXIgeT1UaHQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LGVSLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlv''@;'; put 'put ''biBUaHQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPVd3KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIFk1ZShkLGcpe3JldHVybihZNWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5k''@;'; put 'put ''KCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBMaHQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1XNWUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQg''@;'; put 'put ''Y29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGRJZShkKX1mdW5jdGlvbiBkSWUoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24n''@;'; put 'put ''dCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIFd3KGQpe3JldHVybihXdz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXpv''@;'; put 'put ''LmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVDb2x1bW5GcmVlemUiKSx6by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJDb2x1bW5GcmVlemUiKSx6by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlQ29sdW1uVW5mcmVlemUiKSx6by5nZXRTaW5nbGV0b24oKS5y''@;'; put 'put ''ZWdpc3RlcigiYWZ0ZXJDb2x1bW5VbmZyZWV6ZSIpO3ZhciBwSWU9Im1hbnVhbENvbHVtbkZyZWV6ZSIsQno9bmV3IFdlYWtNYXAsQmh0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBJaHQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigi''@;'; put 'put ''U3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmWTVlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gRGh0KGQpe3ZhciBnPWZ1bmN0aW9uIE9odCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5z''@;'; put 'put ''aGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVd3KGQpO2lmKGcpe3ZhciBDPVd3KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBMaHQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7''@;'; put 'put ''dmFyIHk7cmV0dXJuIGZ1bmN0aW9uIEVodChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLHk9Zy5jYWxsKHRoaXMsdiksQnouc2V0KGRJZSh5KSx7YWZ0ZXJGaXJzdFVzZToh''@;'; put 'put ''MX0pLHl9cmV0dXJuIGZ1bmN0aW9uIHhodChkLGcsaCl7ZyYmaEllKGQucHJvdG90eXBlLGcpLGgmJmhJZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISF0''@;'; put 'put ''aGlzLmhvdC5nZXRTZXR0aW5ncygpW3BJZV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLmFkZEhvb2soImFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsZnVuY3Rpb24oQyl7cmV0dXJuIHkuYWRkQ29u''@;'; put 'put ''dGV4dE1lbnVFbnRyeShDKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlQ29sdW1uTW92ZSIsZnVuY3Rpb24oQyxJKXtyZXR1cm4geS5vbkJlZm9yZUNvbHVtbk1vdmUoQyxJKX0pLGVSKFd3KGgucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpKX19LHtrZXk6ImRpc2Fi''@;'; put 'put ''bGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7QnouZ2V0KHRoaXMpLmFmdGVyRmlyc3RVc2U9ITEsZVIoV3coaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdp''@;'; put 'put ''bigpLHRoaXMuZW5hYmxlUGx1Z2luKCksZVIoV3coaC5wcm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJmcmVlemVDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPUJ6LmdldCh0aGlzKSxJPXRoaXMuaG90LmdldFNldHRpbmdzKCksWj1JLmZp''@;'; put 'put ''eGVkQ29sdW1uc1N0YXJ0PHRoaXMuaG90LmNvdW50Q29scygpJiZ5PkkuZml4ZWRDb2x1bW5zU3RhcnQtMTtDLmFmdGVyRmlyc3RVc2V8fChDLmFmdGVyRmlyc3RVc2U9ITApLCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvbHVtbkZyZWV6ZSIseSxaKSYmKFomJih0aGlzLmhvdC5j''@;'; put 'put ''b2x1bW5JbmRleE1hcHBlci5tb3ZlSW5kZXhlcyh5LEkuZml4ZWRDb2x1bW5zU3RhcnQpLEkuX2ZpeGVkQ29sdW1uc1N0YXJ0Kz0xKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDb2x1bW5GcmVlemUiLHksWikpfX0se2tleToidW5mcmVlemVDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKHkpe3Zh''@;'; put 'put ''ciBDPUJ6LmdldCh0aGlzKSxJPXRoaXMuaG90LmdldFNldHRpbmdzKCksWj1JLmZpeGVkQ29sdW1uc1N0YXJ0PjAmJnk8PUkuZml4ZWRDb2x1bW5zU3RhcnQtMTtDLmFmdGVyRmlyc3RVc2V8fChDLmFmdGVyRmlyc3RVc2U9ITApLCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvbHVt''@;'; put 'put ''blVuZnJlZXplIix5LFopJiYoWiYmKEkuX2ZpeGVkQ29sdW1uc1N0YXJ0LT0xLHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLm1vdmVJbmRleGVzKHksSS5maXhlZENvbHVtbnNTdGFydCkpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNvbHVtblVuZnJlZXplIix5LFopKX19LHtrZXk6ImFk''@;'; put 'put ''ZENvbnRleHRNZW51RW50cnkiLHZhbHVlOmZ1bmN0aW9uKHkpe3kuaXRlbXMucHVzaCh7bmFtZToiLS0tLS0tLS0tIn0sZnVuY3Rpb24gd2h0KGQpe3JldHVybntrZXk6ImZyZWV6ZV9jb2x1bW4iLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKEY0ZSl9''@;'; put 'put ''LGNhbGxiYWNrOmZ1bmN0aW9uKGgsdil7dmFyIHk9ZnVuY3Rpb24gZ2h0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIHlodChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24gQWh0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxaLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0''@;'; put 'put ''Y2godWUpe0M9ITAsWj11ZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IFp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24gdmh0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBjSWUoZCxnKTt2YXIg''@;'; put 'put ''aD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8''@;'; put 'put ''L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIGNJZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gbWh0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5c''@;'; put 'put ''bkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0odiwxKTtkLmZyZWV6ZUNvbHVtbih5WzBdLnN0YXJ0LmNvbCksdGhpcy5yZW5kZXIoKSx0aGlzLnZpZXcuYWRqdXN0RWxlbWVudHNT''@;'; put 'put ''aXplKCEwKX0saGlkZGVuOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksdj0hMTtyZXR1cm4odm9pZCAwPT09aHx8aC5sZW5ndGg+MXx8aFswXS5mcm9tLmNvbCE9PWhbMF0udG8uY29sfHxoWzBdLmZyb20uY29sPD10aGlzLmdldFNldHRpbmdzKCkuZml4ZWRDb2x1''@;'; put 'put ''bW5zU3RhcnQtMSkmJih2PSEwKSx2fX19KHRoaXMpLGZ1bmN0aW9uIE1odChkKXtyZXR1cm57a2V5OiJ1bmZyZWV6ZV9jb2x1bW4iLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKEg0ZSl9LGNhbGxiYWNrOmZ1bmN0aW9uKGgsdil7dmFyIHk9ZnVuY3Rp''@;'; put 'put ''b24gYmh0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uIFNodChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24ga2h0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0''@;'; put 'put ''b3IiXTtpZihudWxsIT1oKXt2YXIgSSxaLHY9W10seT0hMCxDPSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2godWUpe0M9ITAsWj11ZX1maW5hbGx5e3RyeXsheSYmbnVs''@;'; put 'put ''bCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihDKXRocm93IFp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24gQ2h0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBmSWUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCku''@;'; put 'put ''c2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9B''@;'; put 'put ''cnJheSQvLnRlc3QoaCkpcmV0dXJuIGZJZShkLGcpfX0oZCxnKXx8ZnVuY3Rpb24gX2h0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkg''@;'; put 'put ''b2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0odiwxKTtkLnVuZnJlZXplQ29sdW1uKHlbMF0uc3RhcnQuY29sKSx0aGlzLnJlbmRlcigpLHRoaXMudmlldy5hZGp1c3RFbGVtZW50c1NpemUoITApfSxoaWRkZW46ZnVuY3Rpb24oKXt2YXIgaD10''@;'; put 'put ''aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSx2PSExO3JldHVybih2b2lkIDA9PT1ofHxoLmxlbmd0aD4xfHxoWzBdLmZyb20uY29sIT09aFswXS50by5jb2x8fGhbMF0uZnJvbS5jb2w+PXRoaXMuZ2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydCkmJih2PSEwKSx2fX19KHRoaXMpKX19LHtr''@;'; put 'put ''ZXk6Im9uQmVmb3JlQ29sdW1uTW92ZSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtpZihCei5nZXQodGhpcykuYWZ0ZXJGaXJzdFVzZSl7dmFyIFo9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydDtpZihDPFp8fHkuc29tZShmdW5jdGlvbih1ZSl7cmV0dXJuIHVlPFp9KSly''@;'; put 'put ''ZXR1cm4hMX19fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBwSWV9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAxMTB9fV0pLGh9KFlzKTtmdW5jdGlvbiBnSWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7''@;'; put 'put ''dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgdFI9InB4IixIaHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpeyhm''@;'; put 'put ''dW5jdGlvbiBQaHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5ob3Q9Zyx0aGlzLl9lbGVtZW50PW51bGwsdGhpcy5zdGF0ZT0wLHRoaXMuaW5saW5lUHJvcGVy''@;'; put 'put ''dHk9Zy5pc1J0bCgpPyJyaWdodCI6ImxlZnQifXJldHVybiBmdW5jdGlvbiBGaHQoZCxnLGgpe2cmJmdJZShkLnByb3RvdHlwZSxnKSxoJiZnSWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiYXBwZW5kVG8iLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKGgpe2guYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudCksdGhpcy5zdGF0ZT0yfX0se2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7MD09PXRoaXMuc3RhdGUmJih0aGlzLl9lbGVtZW50PXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlz''@;'; put 'put ''LnN0YXRlPTEpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzQXBwZW5kZWQoKSYmdGhpcy5fZWxlbWVudC5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuX2VsZW1lbnQpLHRoaXMuX2VsZW1lbnQ9bnVsbCx0aGlzLnN0YXRlPTB9fSx7a2V5OiJpc0FwcGVu''@;'; put 'put ''ZGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiAyPT09dGhpcy5zdGF0ZX19LHtrZXk6ImlzQnVpbHQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGU+PTF9fSx7a2V5OiJzZXRQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2NChoKSYmKHRoaXMuX2VsZW1lbnQuc3R5''@;'; put 'put ''bGUudG9wPWgrdFIpLHY0KHYpJiYodGhpcy5fZWxlbWVudC5zdHlsZVt0aGlzLmlubGluZVByb3BlcnR5XT12K3RSKX19LHtrZXk6ImdldFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuX2VsZW1lbnQuc3R5bGU7cmV0dXJue3RvcDpoLnRvcD9wYXJzZUludChoLnRvcCwx''@;'; put 'put ''MCk6MCxzdGFydDpoW3RoaXMuaW5saW5lUHJvcGVydHldP3BhcnNlSW50KGhbdGhpcy5pbmxpbmVQcm9wZXJ0eV0sMTApOjB9fX0se2tleToic2V0U2l6ZSIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2NChoKSYmKHRoaXMuX2VsZW1lbnQuc3R5bGUud2lkdGg9aCt0UiksdjQodikmJih0aGlzLl9l''@;'; put 'put ''bGVtZW50LnN0eWxlLmhlaWdodD12K3RSKX19LHtrZXk6ImdldFNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3dpZHRoOnRoaXMuX2VsZW1lbnQuc3R5bGUud2lkdGg/cGFyc2VJbnQodGhpcy5fZWxlbWVudC5zdHlsZS53aWR0aCwxMCk6MCxoZWlnaHQ6dGhpcy5fZWxlbWVudC5zdHls''@;'; put 'put ''ZS5oZWlnaHQ/cGFyc2VJbnQodGhpcy5fZWxlbWVudC5zdHlsZS5oZWlnaHQsMTApOjB9fX0se2tleToic2V0T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbihoLHYpe3Y0KGgpJiYodGhpcy5fZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3A9aCt0UiksdjQodikmJih0aGlzLl9lbGVtZW50LnN0eWxlWyJt''@;'; put 'put ''YXJnaW4iLmNvbmNhdChsZCh0aGlzLmlubGluZVByb3BlcnR5KSldPXYrdFIpfX0se2tleToiZ2V0T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuX2VsZW1lbnQuc3R5bGUsdj0ibWFyZ2luIi5jb25jYXQobGQodGhpcy5pbmxpbmVQcm9wZXJ0eSkpO3JldHVybnt0b3A6aC5t''@;'; put 'put ''YXJnaW5Ub3A/cGFyc2VJbnQoaC5tYXJnaW5Ub3AsMTApOjAsc3RhcnQ6aFt2XT9wYXJzZUludChoW3ZdLDEwKTowfX19XSksZH0oKTtjb25zdCBBSWU9SGh0O2Z1bmN0aW9uIFE1ZShkKXtyZXR1cm4oUTVlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rp''@;'; put 'put ''b24gTmh0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24geUllKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51''@;'; put 'put ''bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gQW5lKCl7cmV0dXJuIEFuZT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxl''@;'; put 'put ''Y3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9amh0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxBbmUuYXBwbHkodGhp''@;'; put 'put ''cyxhcmd1bWVudHMpfWZ1bmN0aW9uIGpodChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9blIoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gSjVlKGQsZyl7cmV0dXJuKEo1ZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0''@;'; put 'put ''LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIEdodChkLGcpe2lmKGcmJigib2JqZWN0Ij09PVE1ZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gV2h0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0g''@;'; put 'put ''c3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gblIoZCl7cmV0dXJuKG5SPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3Rv''@;'; put 'put ''dHlwZU9mKGgpfSkoZCl9dmFyIFFodD1mdW5jdGlvbihkKXshZnVuY3Rpb24gWmh0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5w''@;'; put 'put ''cm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJko1ZShkLGcpfShoLGQpO3ZhciBn''@;'; put 'put ''PWZ1bmN0aW9uIHpodChkKXt2YXIgZz1mdW5jdGlvbiBZaHQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3Jl''@;'; put 'put ''dHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1uUihkKTtpZihnKXt2YXIgQz1uUih0aGlzKS5jb25zdHJ1''@;'; put 'put ''Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gR2h0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7cmV0dXJuIE5odCh0aGlzLGgpLGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmdW5jdGlv''@;'; put 'put ''biBWaHQoZCxnLGgpe2cmJnlJZShkLnByb3RvdHlwZSxnKSxoJiZ5SWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7QW5lKG5SKGgucHJvdG90eXBlKSwiYnVpbGQiLHRoaXMp''@;'; put 'put ''LmNhbGwodGhpcyksTzAodGhpcy5fZWxlbWVudCwiaHRfX21hbnVhbENvbHVtbk1vdmUtLWJhY2tsaWdodCIpfX1dKSxofShBSWUpO2NvbnN0IEpodD1RaHQ7ZnVuY3Rpb24gWDVlKGQpe3JldHVybihYNWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1i''@;'; put 'put ''b2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlv''@;'; put 'put ''biBYaHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiB3SWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVt''@;'; put 'put ''ZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiB5bmUoKXtyZXR1cm4geW5lPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVj''@;'; put 'put ''dC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT0kaHQoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LHluZS5hcHBseSh0aGlz''@;'; put 'put ''LGFyZ3VtZW50cyl9ZnVuY3Rpb24gJGh0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1yUihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBLNWUoZCxnKXtyZXR1cm4oSzVlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Qu''@;'; put 'put ''c2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gdDN0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09WDVlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBuM3QoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBz''@;'; put 'put ''dXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiByUihkKXtyZXR1cm4oclI9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90''@;'; put 'put ''eXBlT2YoaCl9KShkKX12YXIgbzN0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBxaHQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnBy''@;'; put 'put ''b3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmSzVlKGQsZyl9KGgsZCk7dmFyIGc9''@;'; put 'put ''ZnVuY3Rpb24gZTN0KGQpe3ZhciBnPWZ1bmN0aW9uIHIzdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0''@;'; put 'put ''dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PXJSKGQpO2lmKGcpe3ZhciBDPXJSKHRoaXMpLmNvbnN0cnVj''@;'; put 'put ''dG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB0M3QodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXtyZXR1cm4gWGh0KHRoaXMsaCksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''IEtodChkLGcsaCl7ZyYmd0llKGQucHJvdG90eXBlLGcpLGgmJndJZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJidWlsZCIsdmFsdWU6ZnVuY3Rpb24oKXt5bmUoclIoaC5wcm90b3R5cGUpLCJidWlsZCIsdGhpcyku''@;'; put 'put ''Y2FsbCh0aGlzKSxPMCh0aGlzLl9lbGVtZW50LCJodF9fbWFudWFsQ29sdW1uTW92ZS0tZ3VpZGVsaW5lIil9fV0pLGh9KEFJZSk7Y29uc3QgYTN0PW8zdDtmdW5jdGlvbiAkNWUoZCl7cmV0dXJuKCQ1ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJv''@;'; put 'put ''bC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9u''@;'; put 'put ''IGJJZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0''@;'; put 'put ''aW9uIGhNKCl7cmV0dXJuIGhNPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT11M3QoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJu''@;'; put 'put ''IEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LGhNLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiB1M3QoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPUp2KGQpKTspO3Jl''@;'; put 'put ''dHVybiBkfWZ1bmN0aW9uIHE1ZShkLGcpe3JldHVybihxNWU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBoM3QoZCxnKXtpZihnJiYoIm9iamVjdCI9''@;'; put 'put ''PT0kNWUoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGVnZShkKX1mdW5jdGlvbiBlZ2UoZCl7''@;'; put 'put ''aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIEp2KGQpe3JldHVybihKdj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0Lmdl''@;'; put 'put ''dFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXpvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVDb2x1bW5Nb3ZlIiksem8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyQ29s''@;'; put 'put ''dW1uTW92ZSIpO3ZhciB0Z2U9Im1hbnVhbENvbHVtbk1vdmUiLFl3PW5ldyBXZWFrTWFwLF9JZT0iaHRfX21hbnVhbENvbHVtbk1vdmUiLHduZT0ic2hvdy11aSIsbmdlPSJvbi1tb3ZpbmctLWNvbHVtbnMiLHJnZT0iYWZ0ZXItc2VsZWN0aW9uLS1jb2x1bW5zIixnM3Q9ZnVuY3Rpb24oZCl7''@;'; put 'put ''IWZ1bmN0aW9uIGMzdChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5''@;'; put 'put ''cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZxNWUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBmM3QoZCl7dmFyIGc9ZnVuY3Rpb24gZDN0''@;'; put 'put ''KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxs''@;'; put 'put ''KFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9SnYoZCk7aWYoZyl7dmFyIEM9SnYodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50''@;'; put 'put ''cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGgzdCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24gbDN0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFz''@;'; put 'put ''cyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCkseT1nLmNhbGwodGhpcyx2KSxZdy5zZXQoZWdlKHkpLHtjb2x1bW5zVG9Nb3ZlOltdLGNvdW50Q29sczowLGZpeGVkQ29sdW1uczowLHByZXNzZWQ6dm9pZCAwLHRhcmdldDp7ZXZlbnRQYWdlWDp2b2lkIDAsY29vcmRzOnZvaWQgMCxURDp2b2lk''@;'; put 'put ''IDAsY29sOnZvaWQgMH0sY2FjaGVkRHJvcEluZGV4OnZvaWQgMH0pLHkuZXZlbnRNYW5hZ2VyPW5ldyBMMShlZ2UoeSkpLHkuYmFja2xpZ2h0PW5ldyBKaHQodikseS5ndWlkZWxpbmU9bmV3IGEzdCh2KSx5fXJldHVybiBmdW5jdGlvbiBzM3QoZCxnLGgpe2cmJmJJZShkLnByb3RvdHlwZSxn''@;'; put 'put ''KSxoJiZiSWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVt0Z2VdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5lbmFibGVkfHwodGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZURvd24iLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVPbkNlbGxNb3VzZURvd24uYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVPbkNl''@;'; put 'put ''bGxNb3VzZU92ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVPbkNlbGxNb3VzZU92ZXIuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlclNjcm9sbFZlcnRpY2FsbHkiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlclNjcm9sbFZlcnRpY2FsbHkoKX0pLHRo''@;'; put 'put ''aXMuYWRkSG9vaygiYWZ0ZXJMb2FkRGF0YSIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyTG9hZERhdGEuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5idWlsZFBsdWdpblVJKCksdGhpcy5yZWdpc3RlckV2ZW50cygpLE8wKHRoaXMuaG90LnJvb3RFbGVtZW50LF9JZSksaE0oSnYoaC5w''@;'; put 'put ''cm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksdGhpcy5tb3ZlQnlTZXR0aW5nc09yTG9hZCgpLGhNKEp2KGgucHJvdG90''@;'; put 'put ''eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXtwbCh0aGlzLmhvdC5yb290RWxlbWVudCxfSWUpLHRoaXMudW5yZWdpc3RlckV2ZW50cygpLHRoaXMuYmFja2xpZ2h0LmRlc3Ryb3koKSx0aGlzLmd1aWRl''@;'; put 'put ''bGluZS5kZXN0cm95KCksaE0oSnYoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToibW92ZUNvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtyZXR1cm4gdGhpcy5tb3ZlQ29sdW1ucyhbeV0sQyl9fSx7a2V5OiJtb3ZlQ29sdW1ucyIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oeSxDKXt2YXIgST1Zdy5nZXQodGhpcyksWj1JLmNhY2hlZERyb3BJbmRleCx1ZT10aGlzLmlzTW92ZVBvc3NpYmxlKHksQyksX2U9dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvbHVtbk1vdmUiLHksQyxaLHVlKTtpZihJLmNhY2hlZERyb3BJbmRleD12b2lkIDAsITEhPT1f''@;'; put 'put ''ZSl7dWUmJnRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLm1vdmVJbmRleGVzKHksQyk7dmFyIEJlPXVlJiZ0aGlzLmlzQ29sdW1uT3JkZXJDaGFuZ2VkKHksQyk7cmV0dXJuIHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNvbHVtbk1vdmUiLHksQyxaLHVlLEJlKSxCZX19fSx7a2V5OiJkcmFn''@;'; put 'put ''Q29sdW1uIix2YWx1ZTpmdW5jdGlvbih5LEMpe3JldHVybiB0aGlzLmRyYWdDb2x1bW5zKFt5XSxDKX19LHtrZXk6ImRyYWdDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXRoaXMuY291bnRGaW5hbEluZGV4KHksQyk7cmV0dXJuIFl3LmdldCh0aGlzKS5jYWNoZWREcm9wSW5k''@;'; put 'put ''ZXg9Qyx0aGlzLm1vdmVDb2x1bW5zKHksSSl9fSx7a2V5OiJpc01vdmVQb3NzaWJsZSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXROb3RUcmltbWVkSW5kZXhlc0xlbmd0aCgpLFo9eS5sZW5ndGgrQz5JLHVlPUM8MCxfZT15LnNvbWUo''@;'; put 'put ''ZnVuY3Rpb24oTmUpe3JldHVybiBOZTwwfSksQmU9eS5zb21lKGZ1bmN0aW9uKE5lKXtyZXR1cm4gTmU+PUl9KTtyZXR1cm4hKFp8fHVlfHxfZXx8QmUpfX0se2tleToiaXNDb2x1bW5PcmRlckNoYW5nZWQiLHZhbHVlOmZ1bmN0aW9uKHksQyl7cmV0dXJuIHkuc29tZShmdW5jdGlvbihJLFop''@;'; put 'put ''e3JldHVybiBJLVohPT1DfSl9fSx7a2V5OiJjb3VudEZpbmFsSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9U3UoeSxmdW5jdGlvbihaLHVlKXtyZXR1cm4gdWU8QyYmKForPTEpLFp9LDApO3JldHVybiBDLUl9fSx7a2V5OiJnZXRDb2x1bW5zV2lkdGgiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KHksQyl7Zm9yKHZhciBJPXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLFo9MCx1ZT15O3VlPD1DO3VlKz0xKXt2YXIgX2U9SS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KHVlKTt1ZTwwP1orPXRoaXMuaG90LnZpZXcuX3d0Lnd0Vmlld3BvcnQuZ2V0Um93SGVhZGVyV2lkdGgoKXx8''@;'; put 'put ''MDpudWxsIT09X2UmJihaKz10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLmdldFN0cmV0Y2hlZENvbHVtbldpZHRoKF9lKXx8MCl9cmV0dXJuIFp9fSx7a2V5OiJtb3ZlQnlTZXR0aW5nc09yTG9hZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmhvdC5nZXRTZXR0aW5ncygpW3RnZV07''@;'; put 'put ''aWYoQXJyYXkuaXNBcnJheSh5KSl0aGlzLm1vdmVDb2x1bW5zKHksMCk7ZWxzZSBpZih2b2lkIDAhPT15KXt2YXIgQz10aGlzLnBlcnNpc3RlbnRTdGF0ZUxvYWQoKTtDLmxlbmd0aCYmdGhpcy5tb3ZlQ29sdW1ucyhDLDApfX19LHtrZXk6ImlzRml4ZWRDb2x1bW5zU3RhcnQiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKHkpe3JldHVybiB5PHRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnR9fSx7a2V5OiJwZXJzaXN0ZW50U3RhdGVTYXZlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90LnJ1bkhvb2tzKCJwZXJzaXN0ZW50U3RhdGVTYXZlIiwibWFudWFsQ29sdW1uTW92ZSIs''@;'; put 'put ''dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNlKCkpfX0se2tleToicGVyc2lzdGVudFN0YXRlTG9hZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT17fTtyZXR1cm4gdGhpcy5ob3QucnVuSG9va3MoInBlcnNpc3RlbnRTdGF0ZUxvYWQiLCJtYW51YWxDb2x1bW5N''@;'; put 'put ''b3ZlIix5KSx5LnZhbHVlP3kudmFsdWU6W119fSx7a2V5OiJwcmVwYXJlQ29sdW1uc1RvTW92aW5nIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPVtdO3JldHVybiBpYSh5LEMsZnVuY3Rpb24oWil7SS5wdXNoKFopfSksSX19LHtrZXk6InJlZnJlc2hQb3NpdGlvbnMiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIHk9WXcuZ2V0KHRoaXMpLEM9dGhpcy5ob3Qudmlldy5nZXRGaXJzdEZ1bGx5VmlzaWJsZUNvbHVtbigpO3RoaXMuaXNGaXhlZENvbHVtbnNTdGFydCh5LmhvdmVyZWRDb2x1bW4pJiZDPjAmJnRoaXMuaG90LnNjcm9sbFZpZXdwb3J0VG8odm9pZCAwLHRoaXMuaG90LmNvbHVt''@;'; put 'put ''bkluZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChDLTEsLTEpKTt2YXIgST10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLFo9dGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy5zY3JvbGxhYmxlRWxlbWVudCx1ZT0ibnVtYmVyIj09dHlwZW9mIFouc2Nyb2xsWD9aLnNjcm9s''@;'; put 'put ''bFg6Wi5zY3JvbGxMZWZ0LF9lPXRoaXMuaG90LnZpZXcuVEhFQUQub2Zmc2V0TGVmdCt0aGlzLmdldENvbHVtbnNXaWR0aCgwLHkuaG92ZXJlZENvbHVtbi0xKSxCZT1JLmhpZGVyLm9mZnNldFdpZHRoLE5lPUkuVEJPRFkub2Zmc2V0TGVmdCxLZT10aGlzLmJhY2tsaWdodC5nZXRPZmZzZXQo''@;'; put 'put ''KS5zdGFydCxwdD10aGlzLmJhY2tsaWdodC5nZXRTaXplKCkud2lkdGgsT3Q9MCwkdD0wO2lmKHRoaXMuaG90LmlzUnRsKCkpe3ZhciBmbj10aGlzLmhvdC5yb290V2luZG93LExuPUUyKHRoaXMuaG90LnJvb3RFbGVtZW50KTskdD1mbi5pbm5lcldpZHRoLXkudGFyZ2V0LmV2ZW50UGFnZVgt''@;'; put 'put ''KGZuLmlubmVyV2lkdGgteS5yb290RWxlbWVudE9mZnNldC1MbiktKHZvaWQgMD09PVouc2Nyb2xsWD91ZTowKX1lbHNlICR0PXkudGFyZ2V0LmV2ZW50UGFnZVgtKHkucm9vdEVsZW1lbnRPZmZzZXQtKHZvaWQgMD09PVouc2Nyb2xsWD91ZTowKSk7eS5oYXNSb3dIZWFkZXJzJiYoT3Q9dGhp''@;'; put 'put ''cy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy5pbmxpbmVTdGFydE92ZXJsYXkuY2xvbmUud3RUYWJsZS5nZXRDb2x1bW5IZWFkZXIoLTEpLm9mZnNldFdpZHRoKSx0aGlzLmlzRml4ZWRDb2x1bW5zU3RhcnQoeS5ob3ZlcmVkQ29sdW1uKSYmKF9lKz11ZSksX2UrPU90LHkuaG92ZXJlZENvbHVt''@;'; put 'put ''bjwwP3kudGFyZ2V0LmNvbD15LmZpeGVkQ29sdW1uc1N0YXJ0PjA/MDpDPjA/Qy0xOkM6eS50YXJnZXQuVEQub2Zmc2V0V2lkdGgvMitfZTw9JHQ/KHkudGFyZ2V0LmNvbD0oeS5ob3ZlcmVkQ29sdW1uPj15LmNvdW50Q29scz95LmNvdW50Q29scy0xOnkuaG92ZXJlZENvbHVtbikrMSxfZSs9''@;'; put 'put ''eS50YXJnZXQuVEQub2Zmc2V0V2lkdGgpOnkudGFyZ2V0LmNvbD15LmhvdmVyZWRDb2x1bW47dmFyIFNyPSR0LHdyPV9lOyR0K3B0K0tlPj1CZT9Tcj1CZS1wdC1LZTokdCtLZTxOZStPdCYmKFNyPU5lK090K01hdGguYWJzKEtlKSksX2U+PUJlLTE/d3I9QmUtMTowPT09d3I/d3I9MTp2b2lk''@;'; put 'put ''IDAhPT1aLnNjcm9sbFgmJnkuaG92ZXJlZENvbHVtbjx5LmZpeGVkQ29sdW1uc1N0YXJ0JiYod3ItPXkucm9vdEVsZW1lbnRPZmZzZXQ8PVouc2Nyb2xsWD95LnJvb3RFbGVtZW50T2Zmc2V0OjApLHRoaXMuYmFja2xpZ2h0LnNldFBvc2l0aW9uKG51bGwsU3IpLHRoaXMuZ3VpZGVsaW5lLnNl''@;'; put 'put ''dFBvc2l0aW9uKG51bGwsd3IpfX0se2tleToicmVnaXN0ZXJFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPXRoaXMuaG90LnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihDLCJtb3VzZW1vdmUiLGZ1bmN0''@;'; put 'put ''aW9uKEkpe3JldHVybiB5Lm9uTW91c2VNb3ZlKEkpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihDLCJtb3VzZXVwIixmdW5jdGlvbigpe3JldHVybiB5Lm9uTW91c2VVcCgpfSl9fSx7a2V5OiJ1bnJlZ2lzdGVyRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZXZl''@;'; put 'put ''bnRNYW5hZ2VyLmNsZWFyKCl9fSx7a2V5OiJvbkJlZm9yZU9uQ2VsbE1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksWil7dmFyIHVlPXRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUsX2U9dGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpLEJlPXRoaXMu''@;'; put 'put ''aG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksTmU9WXcuZ2V0KHRoaXMpLEtlPXRsKHkudGFyZ2V0LCJzb3J0QWN0aW9uIik7aWYoIUJlfHwhX2V8fE5lLnByZXNzZWR8fDAhPT15LmJ1dHRvbnx8S2UpcmV0dXJuIE5lLnByZXNzZWQ9ITEsTmUuY29sdW1uc1RvTW92ZS5sZW5ndGg9MCx2b2lk''@;'; put 'put ''IHBsKHRoaXMuaG90LnJvb3RFbGVtZW50LFtuZ2Usd25lXSk7dmFyIHB0PXRoaXMuZ3VpZGVsaW5lLmlzQnVpbHQoKSYmIXRoaXMuZ3VpZGVsaW5lLmlzQXBwZW5kZWQoKSxPdD10aGlzLmJhY2tsaWdodC5pc0J1aWx0KCkmJiF0aGlzLmJhY2tsaWdodC5pc0FwcGVuZGVkKCk7cHQmJk90JiYo''@;'; put 'put ''dGhpcy5ndWlkZWxpbmUuYXBwZW5kVG8odWUuaGlkZXIpLHRoaXMuYmFja2xpZ2h0LmFwcGVuZFRvKHVlLmhpZGVyKSk7dmFyICR0PUJlLmZyb20sZm49QmUudG8sTG49TWF0aC5taW4oJHQuY29sLGZuLmNvbCksaXI9TWF0aC5tYXgoJHQuY29sLGZuLmNvbCk7aWYoQy5yb3c8MCYmQy5jb2w+''@;'; put 'put ''PUxuJiZDLmNvbDw9aXIpe1ouY29sdW1uPSEwLE5lLnByZXNzZWQ9ITAsTmUudGFyZ2V0LmV2ZW50UGFnZVg9eS5wYWdlWCxOZS50YXJnZXQuZXZlbnRPZmZzZXRYPXkub2Zmc2V0WCxOZS5ob3ZlcmVkQ29sdW1uPUMuY29sLE5lLnRhcmdldC5URD1JLE5lLnRhcmdldC5jb2w9Qy5jb2wsTmUu''@;'; put 'put ''Y29sdW1uc1RvTW92ZT10aGlzLnByZXBhcmVDb2x1bW5zVG9Nb3ZpbmcoTG4saXIpLE5lLmhhc1Jvd0hlYWRlcnM9ISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpLnJvd0hlYWRlcnMsTmUuY291bnRDb2xzPXRoaXMuaG90LmNvdW50Q29scygpLE5lLmZpeGVkQ29sdW1uc1N0YXJ0PXRoaXMuaG90''@;'; put 'put ''LmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnQsTmUucm9vdEVsZW1lbnRPZmZzZXQ9anUodGhpcy5ob3Qucm9vdEVsZW1lbnQpLmxlZnQ7dmFyIG1yPU5lLmhhc1Jvd0hlYWRlcnM/LTE6MCxTcj11ZS5ob2xkZXIuc2Nyb2xsVG9wK3VlLmdldENvbHVtbkhlYWRlckhlaWdodCgwKSsx''@;'; put 'put ''LHdyPUMuY29sPE5lLmZpeGVkQ29sdW1uc1N0YXJ0LFFyPU1hdGguYWJzKHRoaXMuaG90LnZpZXcuX3d0Lnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVybGF5LmdldFNjcm9sbFBvc2l0aW9uKCkpLHlpPU1hdGguYWJzKHkub2Zmc2V0WC0odGhpcy5ob3QuaXNSdGwoKT95LnRhcmdldC5vZmZz''@;'; put 'put ''ZXRXaWR0aDowKSksS2k9dGhpcy5nZXRDb2x1bW5zV2lkdGgoTG4sQy5jb2wtMSkreWksU289dGhpcy5nZXRDb2x1bW5zV2lkdGgobXIsTG4tMSkrKHdyP1FyOjApK0tpO3RoaXMuYmFja2xpZ2h0LnNldFBvc2l0aW9uKFNyLFNvKSx0aGlzLmJhY2tsaWdodC5zZXRTaXplKHRoaXMuZ2V0Q29s''@;'; put 'put ''dW1uc1dpZHRoKExuLGlyKSx1ZS5oaWRlci5vZmZzZXRIZWlnaHQtU3IpLHRoaXMuYmFja2xpZ2h0LnNldE9mZnNldChudWxsLC1LaSksTzAodGhpcy5ob3Qucm9vdEVsZW1lbnQsbmdlKX1lbHNlIHBsKHRoaXMuaG90LnJvb3RFbGVtZW50LHJnZSksTmUucHJlc3NlZD0hMSxOZS5jb2x1bW5z''@;'; put 'put ''VG9Nb3ZlLmxlbmd0aD0wfX0se2tleToib25Nb3VzZU1vdmUiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPVl3LmdldCh0aGlzKTtpZihDLnByZXNzZWQpe2lmKHkudGFyZ2V0PT09dGhpcy5iYWNrbGlnaHQuZWxlbWVudCl7dmFyIEk9dGhpcy5iYWNrbGlnaHQuZ2V0U2l6ZSgpLndpZHRoO3Ro''@;'; put 'put ''aXMuYmFja2xpZ2h0LnNldFNpemUoMCksc2V0VGltZW91dChmdW5jdGlvbigpe3RoaXMuYmFja2xpZ2h0LnNldFBvc2l0aW9uKEkpfSl9Qy50YXJnZXQuZXZlbnRQYWdlWD15LnBhZ2VYLHRoaXMucmVmcmVzaFBvc2l0aW9ucygpfX19LHtrZXk6Im9uQmVmb3JlT25DZWxsTW91c2VPdmVyIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbih5LEMsSSxaKXt2YXIgdWU9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxfZT1Zdy5nZXQodGhpcyk7IXVlfHwhX2UucHJlc3NlZHx8KF9lLmNvbHVtbnNUb01vdmUuaW5kZXhPZihDLmNvbCk+LTE/cGwodGhpcy5ob3Qucm9vdEVsZW1lbnQsd25lKTpPMCh0''@;'; put 'put ''aGlzLmhvdC5yb290RWxlbWVudCx3bmUpLFoucm93PSEwLFouY29sdW1uPSEwLFouY2VsbD0hMCxfZS5ob3ZlcmVkQ29sdW1uPUMuY29sLF9lLnRhcmdldC5URD1JKX19LHtrZXk6Im9uTW91c2VVcCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT1Zdy5nZXQodGhpcyksQz15LnRhcmdldC5jb2ws''@;'; put 'put ''ST15LmNvbHVtbnNUb01vdmUubGVuZ3RoO2lmKHkuaG92ZXJlZENvbHVtbj12b2lkIDAseS5wcmVzc2VkPSExLHkuYmFja2xpZ2h0V2lkdGg9MCxwbCh0aGlzLmhvdC5yb290RWxlbWVudCxbbmdlLHduZSxyZ2VdKSx0aGlzLmhvdC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVy''@;'; put 'put ''KCkmJk8wKHRoaXMuaG90LnJvb3RFbGVtZW50LHJnZSksIShJPDF8fHZvaWQgMD09PUMpKXt2YXIgdWU9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbih5LmNvbHVtbnNUb01vdmVbMF0pLF9lPXRoaXMuZHJhZ0NvbHVtbnMoeS5jb2x1bW5zVG9Nb3ZlLEMpO2lmKHkuY29sdW1uc1RvTW92ZS5s''@;'; put 'put ''ZW5ndGg9MCwhMD09PV9lKXt0aGlzLnBlcnNpc3RlbnRTdGF0ZVNhdmUoKSx0aGlzLmhvdC5yZW5kZXIoKSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSghMCk7dmFyIEJlPXRoaXMuaG90LnRvVmlzdWFsQ29sdW1uKHVlKTt0aGlzLmhvdC5zZWxlY3RDb2x1bW5zKEJlLEJlK0kt''@;'; put 'put ''MSl9fX19LHtrZXk6Im9uQWZ0ZXJTY3JvbGxWZXJ0aWNhbGx5Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUsWj15LmdldENvbHVtbkhlYWRlckhlaWdodCgwKSsxK3kuaG9sZGVyLnNjcm9sbFRvcDt0aGlzLmJhY2tsaWdodC5zZXRQb3NpdGlvbiha''@;'; put 'put ''KSx0aGlzLmJhY2tsaWdodC5zZXRTaXplKG51bGwseS5oaWRlci5vZmZzZXRIZWlnaHQtWil9fSx7a2V5OiJidWlsZFBsdWdpblVJIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYmFja2xpZ2h0LmJ1aWxkKCksdGhpcy5ndWlkZWxpbmUuYnVpbGQoKX19LHtrZXk6Im9uQWZ0ZXJMb2FkRGF0YSIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1vdmVCeVNldHRpbmdzT3JMb2FkKCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYmFja2xpZ2h0LmRlc3Ryb3koKSx0aGlzLmd1aWRlbGluZS5kZXN0cm95KCksaE0oSnYoaC5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5j''@;'; put 'put ''YWxsKHRoaXMpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGdlfX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMTIwfX1dKSxofShZcyk7ZnVuY3Rpb24gaWdlKGQpe3JldHVybihpZ2U9ImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/''@;'; put 'put ''InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBDSWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBkTSgpe3JldHVybiBkTT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9QTN0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93''@;'; put 'put ''blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxkTS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gQTN0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j''@;'; put 'put ''YWxsKGQsZykmJm51bGwhPT0oZD1YdihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBvZ2UoZCxnKXtyZXR1cm4ob2dlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVu''@;'; put 'put ''Y3Rpb24gYjN0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09aWdlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIp''@;'; put 'put ''O3JldHVybiBhZ2UoZCl9ZnVuY3Rpb24gYWdlKGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH1mdW5jdGlvbiBYdihkKXtyZXR1cm4oWHY9''@;'; put 'put ''T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgYm5lPSJtYW51YWxDb2x1bW5SZXNpemUiLGtJZT0ibWFudWFsQ29sdW1uV2lkdGhz''@;'; put 'put ''IixsZ2U9bmV3IFdlYWtNYXAsazN0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiB5M3QoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnBy''@;'; put 'put ''b3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmb2dlKGQsZyl9KGgsZCk7dmFyIGc9''@;'; put 'put ''ZnVuY3Rpb24gdzN0KGQpe3ZhciBnPWZ1bmN0aW9uIF8zdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0''@;'; put 'put ''dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVh2KGQpO2lmKGcpe3ZhciBDPVh2KHRoaXMpLmNvbnN0cnVj''@;'; put 'put ''dG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBiM3QodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7IWZ1bmN0aW9uIG0zdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpO3ZhciBDPSh5PWcuY2FsbCh0aGlzLHYpKS5ob3Qucm9vdERvY3VtZW50O3JldHVybiB5LmN1cnJlbnRUSD1udWxsLHkuY3VycmVudENvbD1udWxsLHkuc2VsZWN0ZWRDb2xzPVtdLHkuY3VycmVu''@;'; put 'put ''dFdpZHRoPW51bGwseS5uZXdTaXplPW51bGwseS5zdGFydFk9bnVsbCx5LnN0YXJ0V2lkdGg9bnVsbCx5LnN0YXJ0T2Zmc2V0PW51bGwseS5oYW5kbGU9Qy5jcmVhdGVFbGVtZW50KCJESVYiKSx5Lmd1aWRlPUMuY3JlYXRlRWxlbWVudCgiRElWIikseS5ldmVudE1hbmFnZXI9bmV3IEwxKGFn''@;'; put 'put ''ZSh5KSkseS5wcmVzc2VkPW51bGwseS5kYmxjbGljaz0wLHkuYXV0b3Jlc2l6ZVRpbWVvdXQ9bnVsbCx5LmNvbHVtbldpZHRoc01hcD12b2lkIDAsbGdlLnNldChhZ2UoeSkse2NvbmZpZzp2b2lkIDB9KSxPMCh5LmhhbmRsZSwibWFudWFsQ29sdW1uUmVzaXplciIpLE8wKHkuZ3VpZGUsIm1h''@;'; put 'put ''bnVhbENvbHVtblJlc2l6ZXJHdWlkZSIpLHl9cmV0dXJuIGZ1bmN0aW9uIHYzdChkLGcsaCl7ZyYmQ0llKGQucHJvdG90eXBlLGcpLGgmJkNJZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpbmxpbmVEaXIiLGdldDpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB0aGlzLmhvdC5pc1J0bCgpPyJyaWdodCI6ImxlZnQifX0se2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhvdC5nZXRTZXR0aW5ncygpW2JuZV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9''@;'; put 'put ''dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLmNvbHVtbldpZHRoc01hcD1uZXcgRHcsdGhpcy5jb2x1bW5XaWR0aHNNYXAuYWRkTG9jYWxIb29rKCJpbml0IixmdW5jdGlvbigpe3JldHVybiB5Lm9uTWFwSW5pdCgpfSksdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAodGhp''@;'; put 'put ''cy5wbHVnaW5OYW1lLHRoaXMuY29sdW1uV2lkdGhzTWFwKSx0aGlzLmFkZEhvb2soIm1vZGlmeUNvbFdpZHRoIixmdW5jdGlvbihDLEkpe3JldHVybiB5Lm9uTW9kaWZ5Q29sV2lkdGgoQyxJKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlU3RyZXRjaGluZ0NvbHVtbldpZHRoIixmdW5jdGlvbihD''@;'; put 'put ''LEkpe3JldHVybiB5Lm9uQmVmb3JlU3RyZXRjaGluZ0NvbHVtbldpZHRoKEMsSSl9KSx0aGlzLmFkZEhvb2soImJlZm9yZUNvbHVtblJlc2l6ZSIsZnVuY3Rpb24oQyxJLFope3JldHVybiB5Lm9uQmVmb3JlQ29sdW1uUmVzaXplKEMsSSxaKX0pLHRoaXMuYmluZEV2ZW50cygpLGRNKFh2KGgu''@;'; put 'put ''cHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpKX19LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLGRNKFh2KGgucHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5j''@;'; put 'put ''YWxsKHRoaXMpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXtsZ2UuZ2V0KHRoaXMpLmNvbmZpZz10aGlzLmNvbHVtbldpZHRoc01hcC5nZXRWYWx1ZXMoKSx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZSksZE0o''@;'; put 'put ''WHYoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToic2F2ZU1hbnVhbENvbHVtbldpZHRocyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhvdC5ydW5Ib29rcygicGVyc2lzdGVudFN0YXRlU2F2ZSIsa0llLHRoaXMuY29sdW1uV2lkdGhzTWFwLmdl''@;'; put 'put ''dFZhbHVlcygpKX19LHtrZXk6ImxvYWRNYW51YWxDb2x1bW5XaWR0aHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9e307cmV0dXJuIHRoaXMuaG90LnJ1bkhvb2tzKCJwZXJzaXN0ZW50U3RhdGVMb2FkIixrSWUseSkseS52YWx1ZX19LHtrZXk6InNldE1hbnVhbFNpemUiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKHksQyl7dmFyIEk9TWF0aC5tYXgoQywyMCksWj10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKHkpO3JldHVybiB0aGlzLmNvbHVtbldpZHRoc01hcC5zZXRWYWx1ZUF0SW5kZXgoWixJKSxJfX0se2tleToiY2xlYXJNYW51YWxTaXplIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlz''@;'; put 'put ''LmhvdC50b1BoeXNpY2FsQ29sdW1uKHkpO3RoaXMuY29sdW1uV2lkdGhzTWFwLnNldFZhbHVlQXRJbmRleChDLG51bGwpfX0se2tleToib25NYXBJbml0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz1sZ2UuZ2V0KHRoaXMpLEk9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtibmVdLFo9''@;'; put 'put ''dGhpcy5sb2FkTWFudWFsQ29sdW1uV2lkdGhzKCk7dm9pZCAwIT09Wj90aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe1ouZm9yRWFjaChmdW5jdGlvbih1ZSxfZSl7eS5jb2x1bW5XaWR0aHNNYXAuc2V0VmFsdWVBdEluZGV4KF9lLHVlKX0pfSwhMCk6QXJyYXkuaXNBcnJheShJ''@;'; put 'put ''KT8odGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oZnVuY3Rpb24oKXtJLmZvckVhY2goZnVuY3Rpb24odWUsX2Upe3kuY29sdW1uV2lkdGhzTWFwLnNldFZhbHVlQXRJbmRleChfZSx1ZSl9KX0sITApLEMuY29uZmlnPUkpOiEwPT09SSYmQXJyYXkuaXNBcnJheShDLmNvbmZpZykmJnRoaXMuaG90''@;'; put 'put ''LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7Qy5jb25maWcuZm9yRWFjaChmdW5jdGlvbih1ZSxfZSl7eS5jb2x1bW5XaWR0aHNNYXAuc2V0VmFsdWVBdEluZGV4KF9lLHVlKX0pfSwhMCl9fSx7a2V5OiJzZXR1cEhhbmRsZVBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlz''@;'; put 'put ''O2lmKHkucGFyZW50Tm9kZSl7dGhpcy5jdXJyZW50VEg9eTt2YXIgST10aGlzLmhvdC52aWV3Ll93dCxaPUkud3RUYWJsZS5nZXRDb29yZHModGhpcy5jdXJyZW50VEgpLHVlPVouY29sO2lmKCEodWU8MCkpe3ZhciBLZSxfZT1EMSh0aGlzLmN1cnJlbnRUSCksQmU9dGhpcy5jdXJyZW50VEgu''@;'; put 'put ''Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dWU8SS5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpJiYoS2U9SS53dE92ZXJsYXlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5nZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbih0aGlzLmN1cnJlbnRUSCxaLnJvdyxaLmNvbCkpLEtlfHwo''@;'; put 'put ''S2U9SS53dE92ZXJsYXlzLnRvcE92ZXJsYXkuZ2V0UmVsYXRpdmVDZWxsUG9zaXRpb24odGhpcy5jdXJyZW50VEgsWi5yb3csWi5jb2wpKSx0aGlzLmN1cnJlbnRDb2w9dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh1ZSksdGhpcy5zZWxl''@;'; put 'put ''Y3RlZENvbHM9W107dmFyIHB0PXRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKXx8dGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpO3RoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkKCkmJnB0JiZVcih0aGlzLmhvdC5nZXRTZWxlY3Rl''@;'; put 'put ''ZFJhbmdlKCksZnVuY3Rpb24oJHQpe2lhKCR0LmdldFRvcFN0YXJ0Q29ybmVyKCkuY29sLCR0LmdldEJvdHRvbUVuZENvcm5lcigpLmNvbCxmdW5jdGlvbihpcil7Qy5zZWxlY3RlZENvbHMuaW5jbHVkZXMoaXIpfHxDLnNlbGVjdGVkQ29scy5wdXNoKGlyKX0pfSksdGhpcy5zZWxlY3RlZENv''@;'; put 'put ''bHMuaW5jbHVkZXModGhpcy5jdXJyZW50Q29sKXx8KHRoaXMuc2VsZWN0ZWRDb2xzPVt0aGlzLmN1cnJlbnRDb2xdKSx0aGlzLnN0YXJ0T2Zmc2V0PUtlLnN0YXJ0LTYsdGhpcy5zdGFydFdpZHRoPXBhcnNlSW50KEJlLndpZHRoLDEwKSx0aGlzLmhhbmRsZS5zdHlsZS50b3A9IiIuY29uY2F0''@;'; put 'put ''KEtlLnRvcCwicHgiKSx0aGlzLmhhbmRsZS5zdHlsZVt0aGlzLmlubGluZURpcl09IiIuY29uY2F0KHRoaXMuc3RhcnRPZmZzZXQrdGhpcy5zdGFydFdpZHRoLCJweCIpLHRoaXMuaGFuZGxlLnN0eWxlLmhlaWdodD0iIi5jb25jYXQoX2UsInB4IiksdGhpcy5ob3Qucm9vdEVsZW1lbnQuYXBw''@;'; put 'put ''ZW5kQ2hpbGQodGhpcy5oYW5kbGUpfX19fSx7a2V5OiJyZWZyZXNoSGFuZGxlUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5oYW5kbGUuc3R5bGVbdGhpcy5pbmxpbmVEaXJdPSIiLmNvbmNhdCh0aGlzLnN0YXJ0T2Zmc2V0K3RoaXMuY3VycmVudFdpZHRoLCJweCIpfX0se2tleToi''@;'; put 'put ''c2V0dXBHdWlkZVBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXBhcnNlSW50KEQxKHRoaXMuaGFuZGxlKSwxMCksQz1wYXJzZUludCh0aGlzLmhhbmRsZS5zdHlsZS50b3AsMTApK3ksST1wYXJzZUludCh0aGlzLmhvdC52aWV3Lm1heGltdW1WaXNpYmxlRWxlbWVudEhlaWdodCgw''@;'; put 'put ''KSwxMCk7TzAodGhpcy5oYW5kbGUsImFjdGl2ZSIpLE8wKHRoaXMuZ3VpZGUsImFjdGl2ZSIpLHRoaXMuZ3VpZGUuc3R5bGUudG9wPSIiLmNvbmNhdChDLCJweCIpLHRoaXMucmVmcmVzaEd1aWRlUG9zaXRpb24oKSx0aGlzLmd1aWRlLnN0eWxlLmhlaWdodD0iIi5jb25jYXQoSS15LCJweCIp''@;'; put 'put ''LHRoaXMuaG90LnJvb3RFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZ3VpZGUpfX0se2tleToicmVmcmVzaEd1aWRlUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ndWlkZS5zdHlsZVt0aGlzLmlubGluZURpcl09dGhpcy5oYW5kbGUuc3R5bGVbdGhpcy5pbmxpbmVEaXJdfX0se2tl''@;'; put 'put ''eToiaGlkZUhhbmRsZUFuZEd1aWRlIix2YWx1ZTpmdW5jdGlvbigpe3BsKHRoaXMuaGFuZGxlLCJhY3RpdmUiKSxwbCh0aGlzLmd1aWRlLCJhY3RpdmUiKX19LHtrZXk6ImNoZWNrSWZDb2x1bW5IZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKHkpe3JldHVybiEhTXYoeSxbIlRIRUFEIl0sdGhpcy5o''@;'; put 'put ''b3Qucm9vdEVsZW1lbnQpfX0se2tleToiZ2V0Q2xvc2VzdFRIUGFyZW50Iix2YWx1ZTpmdW5jdGlvbih5KXtyZXR1cm4iVEFCTEUiIT09eS50YWdOYW1lPyJUSCI9PT15LnRhZ05hbWU/eTp0aGlzLmdldENsb3Nlc3RUSFBhcmVudCh5LnBhcmVudE5vZGUpOm51bGx9fSx7a2V5OiJvbk1vdXNl''@;'; put 'put ''T3ZlciIsdmFsdWU6ZnVuY3Rpb24oeSl7aWYoIXkzZSh5LnRhcmdldCkmJnRoaXMuY2hlY2tJZkNvbHVtbkhlYWRlcih5LnRhcmdldCkpe3ZhciBDPXRoaXMuZ2V0Q2xvc2VzdFRIUGFyZW50KHkudGFyZ2V0KTtpZighQylyZXR1cm47dmFyIEk9Qy5nZXRBdHRyaWJ1dGUoImNvbHNwYW4iKTtD''@;'; put 'put ''JiYobnVsbD09PUl8fCIxIj09PUkpJiYodGhpcy5wcmVzc2VkfHx0aGlzLnNldHVwSGFuZGxlUG9zaXRpb24oQykpfX19LHtrZXk6ImFmdGVyTW91c2VEb3duVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9ZnVuY3Rpb24oKXt5LmhvdC5mb3JjZUZ1bGxSZW5kZXI9ITAs''@;'; put 'put ''eS5ob3Qudmlldy5yZW5kZXIoKSx5LmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSghMCl9LEk9ZnVuY3Rpb24oX2UsQmUpe3ZhciBOZT15LmhvdC5ydW5Ib29rcygiYmVmb3JlQ29sdW1uUmVzaXplIix5Lm5ld1NpemUsX2UsITApO3ZvaWQgMCE9PU5lJiYoeS5uZXdTaXplPU5lKSwiYWxs''@;'; put 'put ''Ij09PXkuaG90LmdldFNldHRpbmdzKCkuc3RyZXRjaEg/eS5jbGVhck1hbnVhbFNpemUoX2UpOnkuc2V0TWFudWFsU2l6ZShfZSx5Lm5ld1NpemUpLHkuc2F2ZU1hbnVhbENvbHVtbldpZHRocygpLHkuaG90LnJ1bkhvb2tzKCJhZnRlckNvbHVtblJlc2l6ZSIseS5uZXdTaXplLF9lLCEwKSxC''@;'; put 'put ''ZSYmQygpfTt0aGlzLmRibGNsaWNrPj0yJiYodGhpcy5zZWxlY3RlZENvbHMubGVuZ3RoPjE/KFVyKHRoaXMuc2VsZWN0ZWRDb2xzLGZ1bmN0aW9uKHVlKXtJKHVlKX0pLEMoKSk6VXIodGhpcy5zZWxlY3RlZENvbHMsZnVuY3Rpb24odWUpe0kodWUsITApfSkpLHRoaXMuZGJsY2xpY2s9MCx0''@;'; put 'put ''aGlzLmF1dG9yZXNpemVUaW1lb3V0PW51bGx9fSx7a2V5OiJvbk1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpczt0bCh5LnRhcmdldCwibWFudWFsQ29sdW1uUmVzaXplciIpJiYodGhpcy5zZXR1cEhhbmRsZVBvc2l0aW9uKHRoaXMuY3VycmVudFRIKSx0aGlzLnNldHVw''@;'; put 'put ''R3VpZGVQb3NpdGlvbigpLHRoaXMucHJlc3NlZD0hMCxudWxsPT09dGhpcy5hdXRvcmVzaXplVGltZW91dCYmKHRoaXMuYXV0b3Jlc2l6ZVRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBDLmFmdGVyTW91c2VEb3duVGltZW91dCgpfSw1MDApLHRoaXMuaG90Ll9yZWdpc3Rl''@;'; put 'put ''clRpbWVvdXQodGhpcy5hdXRvcmVzaXplVGltZW91dCkpLHRoaXMuZGJsY2xpY2srPTEsdGhpcy5zdGFydFg9eS5wYWdlWCx0aGlzLm5ld1NpemU9dGhpcy5zdGFydFdpZHRoKX19LHtrZXk6Im9uTW91c2VNb3ZlIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzO2lmKHRoaXMucHJlc3Nl''@;'; put 'put ''ZCl7dmFyIEk9KHkucGFnZVgtdGhpcy5zdGFydFgpKnRoaXMuaG90LmdldERpcmVjdGlvbkZhY3RvcigpO3RoaXMuY3VycmVudFdpZHRoPXRoaXMuc3RhcnRXaWR0aCtJLFVyKHRoaXMuc2VsZWN0ZWRDb2xzLGZ1bmN0aW9uKFope0MubmV3U2l6ZT1DLnNldE1hbnVhbFNpemUoWixDLmN1cnJl''@;'; put 'put ''bnRXaWR0aCl9KSx0aGlzLnJlZnJlc2hIYW5kbGVQb3NpdGlvbigpLHRoaXMucmVmcmVzaEd1aWRlUG9zaXRpb24oKX19fSx7a2V5OiJvbk1vdXNlVXAiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPWZ1bmN0aW9uKCl7eS5ob3QuZm9yY2VGdWxsUmVuZGVyPSEwLHkuaG90LnZpZXcu''@;'; put 'put ''cmVuZGVyKCkseS5ob3Qudmlldy5hZGp1c3RFbGVtZW50c1NpemUoITApfSxJPWZ1bmN0aW9uKF9lLEJlKXt5LmhvdC5ydW5Ib29rcygiYmVmb3JlQ29sdW1uUmVzaXplIix5Lm5ld1NpemUsX2UsITEpLEJlJiZDKCkseS5zYXZlTWFudWFsQ29sdW1uV2lkdGhzKCkseS5ob3QucnVuSG9va3Mo''@;'; put 'put ''ImFmdGVyQ29sdW1uUmVzaXplIix5Lm5ld1NpemUsX2UsITEpfTt0aGlzLnByZXNzZWQmJih0aGlzLmhpZGVIYW5kbGVBbmRHdWlkZSgpLHRoaXMucHJlc3NlZD0hMSx0aGlzLm5ld1NpemUhPT10aGlzLnN0YXJ0V2lkdGgmJih0aGlzLnNlbGVjdGVkQ29scy5sZW5ndGg+MT8oVXIodGhpcy5z''@;'; put 'put ''ZWxlY3RlZENvbHMsZnVuY3Rpb24odWUpe0kodWUpfSksQygpKTpVcih0aGlzLnNlbGVjdGVkQ29scyxmdW5jdGlvbih1ZSl7SSh1ZSwhMCl9KSksdGhpcy5zZXR1cEhhbmRsZVBvc2l0aW9uKHRoaXMuY3VycmVudFRIKSl9fSx7a2V5OiJiaW5kRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3Zh''@;'; put 'put ''ciB5PXRoaXMsQz10aGlzLmhvdCxJPUMucm9vdFdpbmRvdyxaPUMucm9vdEVsZW1lbnQ7dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihaLCJtb3VzZW92ZXIiLGZ1bmN0aW9uKHVlKXtyZXR1cm4geS5vbk1vdXNlT3Zlcih1ZSl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVu''@;'; put 'put ''dExpc3RlbmVyKFosIm1vdXNlZG93biIsZnVuY3Rpb24odWUpe3JldHVybiB5Lm9uTW91c2VEb3duKHVlKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoSSwibW91c2Vtb3ZlIixmdW5jdGlvbih1ZSl7cmV0dXJuIHkub25Nb3VzZU1vdmUodWUpfSksdGhpcy5ldmVudE1h''@;'; put 'put ''bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihJLCJtb3VzZXVwIixmdW5jdGlvbigpe3JldHVybiB5Lm9uTW91c2VVcCgpfSl9fSx7a2V5OiJvbk1vZGlmeUNvbFdpZHRoIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXk7aWYodGhpcy5lbmFibGVkKXt2YXIgWj10aGlzLmhvdC50b1BoeXNpY2Fs''@;'; put 'put ''Q29sdW1uKEMpLHVlPXRoaXMuY29sdW1uV2lkdGhzTWFwLmdldFZhbHVlQXRJbmRleChaKTt0aGlzLmhvdC5nZXRTZXR0aW5ncygpW2JuZV0mJnVlJiYoST11ZSl9cmV0dXJuIEl9fSx7a2V5OiJvbkJlZm9yZVN0cmV0Y2hpbmdDb2x1bW5XaWR0aCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIg''@;'; put 'put ''ST10aGlzLmNvbHVtbldpZHRoc01hcC5nZXRWYWx1ZUF0SW5kZXgoQyk7cmV0dXJuIG51bGw9PT1JJiYoST15KSxJfX0se2tleToib25CZWZvcmVDb2x1bW5SZXNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3Qudmlldy5fd3Qud3RWaWV3cG9ydC5yZXNldEhhc092ZXJzaXplZENvbHVt''@;'; put 'put ''bkhlYWRlcnNNYXJrZWQoKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7ZE0oWHYoaC5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYm5lfX0se2tleToiUExVR0lOX1BSSU9S''@;'; put 'put ''SVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMTMwfX1dKSxofShZcyk7ZnVuY3Rpb24gU0llKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2Lndy''@;'; put 'put ''aXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIGlSPSJweCIsRTN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnKXsoZnVuY3Rpb24gUzN0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFz''@;'; put 'put ''cyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMuaG90PWcsdGhpcy5fZWxlbWVudD1udWxsLHRoaXMuc3RhdGU9MH1yZXR1cm4gZnVuY3Rpb24gTTN0KGQsZyxoKXtnJiZTSWUoZC5wcm90b3R5cGUsZyksaCYmU0llKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlw''@;'; put 'put ''ZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6ImFwcGVuZFRvIix2YWx1ZTpmdW5jdGlvbihoKXtoLmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnQpLHRoaXMuc3RhdGU9Mn19LHtrZXk6ImJ1aWxkIix2YWx1ZTpmdW5jdGlvbigpezA9PT10aGlzLnN0YXRlJiYodGhpcy5fZWxlbWVudD10aGlz''@;'; put 'put ''LmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5zdGF0ZT0xKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pc0FwcGVuZGVkKCkmJnRoaXMuX2VsZW1lbnQucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLl9lbGVtZW50KSx0aGlz''@;'; put 'put ''Ll9lbGVtZW50PW51bGwsdGhpcy5zdGF0ZT0wfX0se2tleToiaXNBcHBlbmRlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRoaXMuc3RhdGV9fSx7a2V5OiJpc0J1aWx0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXRlPj0xfX0se2tleToic2V0UG9zaXRpb24iLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGgsdil7dm9pZCAwIT09aCYmKHRoaXMuX2VsZW1lbnQuc3R5bGUudG9wPWgraVIpLHZvaWQgMCE9PXYmJih0aGlzLl9lbGVtZW50LnN0eWxlLmxlZnQ9ditpUil9fSx7a2V5OiJnZXRQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57dG9wOnRoaXMuX2VsZW1l''@;'; put 'put ''bnQuc3R5bGUudG9wP3BhcnNlSW50KHRoaXMuX2VsZW1lbnQuc3R5bGUudG9wLDEwKTowLGxlZnQ6dGhpcy5fZWxlbWVudC5zdHlsZS5sZWZ0P3BhcnNlSW50KHRoaXMuX2VsZW1lbnQuc3R5bGUubGVmdCwxMCk6MH19fSx7a2V5OiJzZXRTaXplIix2YWx1ZTpmdW5jdGlvbihoLHYpe2gmJih0''@;'; put 'put ''aGlzLl9lbGVtZW50LnN0eWxlLndpZHRoPWgraVIpLHYmJih0aGlzLl9lbGVtZW50LnN0eWxlLmhlaWdodD12K2lSKX19LHtrZXk6ImdldFNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3dpZHRoOnRoaXMuX2VsZW1lbnQuc3R5bGUud2lkdGg/cGFyc2VJbnQodGhpcy5fZWxlbWVudC5z''@;'; put 'put ''dHlsZS53aWR0aCwxMCk6MCxoZWlnaHQ6dGhpcy5fZWxlbWVudC5zdHlsZS5oZWlnaHQ/cGFyc2VJbnQodGhpcy5fZWxlbWVudC5zdHlsZS5oZWlnaHQsMTApOjB9fX0se2tleToic2V0T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbihoLHYpe2gmJih0aGlzLl9lbGVtZW50LnN0eWxlLm1hcmdpblRv''@;'; put 'put ''cD1oK2lSKSx2JiYodGhpcy5fZWxlbWVudC5zdHlsZS5tYXJnaW5MZWZ0PXYraVIpfX0se2tleToiZ2V0T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybnt0b3A6dGhpcy5fZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3A/cGFyc2VJbnQodGhpcy5fZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3As''@;'; put 'put ''MTApOjAsbGVmdDp0aGlzLl9lbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQ/cGFyc2VJbnQodGhpcy5fZWxlbWVudC5zdHlsZS5tYXJnaW5MZWZ0LDEwKTowfX19XSksZH0oKTtjb25zdCB4SWU9RTN0O2Z1bmN0aW9uIHVnZShkKXtyZXR1cm4odWdlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wm''@;'; put 'put ''JiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wi''@;'; put 'put ''OnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24geDN0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gVEllKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdb''@;'; put 'put ''aF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gX25lKCl7cmV0dXJuIF9uZT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxl''@;'; put 'put ''Y3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9STN0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMu''@;'; put 'put ''dmFsdWV9fSxfbmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIEkzdChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9b1IoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gY2dlKGQsZyl7cmV0dXJuKGNnZT1PYmplY3Qu''@;'; put 'put ''c2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIE8zdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PXVnZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lm''@;'; put 'put ''KHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gUjN0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24n''@;'; put 'put ''dCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gb1IoZCl7cmV0dXJuKG9SPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJv''@;'; put 'put ''dG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIEYzdD1mdW5jdGlvbihkKXshZnVuY3Rpb24gRDN0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVs''@;'; put 'put ''bCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcm''@;'; put 'put ''JmNnZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIEwzdChkKXt2YXIgZz1mdW5jdGlvbiBCM3QoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''UHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1vUihkKTtpZihnKXt2''@;'; put 'put ''YXIgQz1vUih0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gTzN0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7cmV0dXJuIHgzdCh0aGlzLGgpLGcuYXBwbHkodGhpcyxhcmd1''@;'; put 'put ''bWVudHMpfXJldHVybiBmdW5jdGlvbiBUM3QoZCxnLGgpe2cmJlRJZShkLnByb3RvdHlwZSxnKSxoJiZUSWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7X25lKG9SKGgucHJv''@;'; put 'put ''dG90eXBlKSwiYnVpbGQiLHRoaXMpLmNhbGwodGhpcyksTzAodGhpcy5fZWxlbWVudCwiaHRfX21hbnVhbFJvd01vdmUtLWJhY2tsaWdodCIpfX1dKSxofSh4SWUpO2NvbnN0IEgzdD1GM3Q7ZnVuY3Rpb24gZmdlKGQpe3JldHVybihmZ2U9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5''@;'; put 'put ''bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlw''@;'; put 'put ''ZW9mIGd9KShkKX1mdW5jdGlvbiBOM3QoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBJSWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2''@;'; put 'put ''LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBDbmUoKXtyZXR1cm4gQ25lPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYm''@;'; put 'put ''UmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT1qM3QoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1''@;'; put 'put ''ZX19LENuZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gajN0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1hUihkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBoZ2UoZCxnKXtyZXR1cm4oaGdlPU9iamVjdC5zZXRQ''@;'; put 'put ''cm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gRzN0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09ZmdlKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9p''@;'; put 'put ''ZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBXM3QoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJl''@;'; put 'put ''ZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBhUihkKXtyZXR1cm4oYVI9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19f''@;'; put 'put ''fHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgUTN0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBaM3QoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9y''@;'; put 'put ''IGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmaGdl''@;'; put 'put ''KGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gejN0KGQpe3ZhciBnPWZ1bmN0aW9uIFkzdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94''@;'; put 'put ''eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PWFSKGQpO2lmKGcpe3ZhciBD''@;'; put 'put ''PWFSKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBHM3QodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgoKXtyZXR1cm4gTjN0KHRoaXMsaCksZy5hcHBseSh0aGlzLGFyZ3VtZW50''@;'; put 'put ''cyl9cmV0dXJuIGZ1bmN0aW9uIFYzdChkLGcsaCl7ZyYmSUllKGQucHJvdG90eXBlLGcpLGgmJklJZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJidWlsZCIsdmFsdWU6ZnVuY3Rpb24oKXtDbmUoYVIoaC5wcm90b3R5''@;'; put 'put ''cGUpLCJidWlsZCIsdGhpcykuY2FsbCh0aGlzKSxPMCh0aGlzLl9lbGVtZW50LCJodF9fbWFudWFsUm93TW92ZS0tZ3VpZGVsaW5lIil9fV0pLGh9KHhJZSk7Y29uc3QgSjN0PVEzdDtmdW5jdGlvbiBkZ2UoZCl7cmV0dXJuKGRnZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9s''@;'; put 'put ''Ij09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2Yg''@;'; put 'put ''Z30pKGQpfWZ1bmN0aW9uIERJZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQs''@;'; put 'put ''di5rZXksdil9fWZ1bmN0aW9uIHBNKCl7cmV0dXJuIHBNPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGcsaCx2KXt2YXIgeT0kM3QoZyxoKTtpZih5KXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw''@;'; put 'put ''dG9yKHksaCk7cmV0dXJuIEMuZ2V0P0MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2c6dik6Qy52YWx1ZX19LHBNLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiAkM3QoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9''@;'; put 'put ''PShkPUt2KGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIHBnZShkLGcpe3JldHVybihwZ2U9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiB0ZHQoZCxnKXtp''@;'; put 'put ''ZihnJiYoIm9iamVjdCI9PT1kZ2UoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGdnZShkKX1m''@;'; put 'put ''dW5jdGlvbiBnZ2UoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfWZ1bmN0aW9uIEt2KGQpe3JldHVybihLdj1PYmplY3Quc2V0UHJvdG90''@;'; put 'put ''eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXpvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVSb3dNb3ZlIiksem8uZ2V0U2luZ2xldG9uKCkucmVnaXN0''@;'; put 'put ''ZXIoImFmdGVyUm93TW92ZSIpO3ZhciBtZ2U9Im1hbnVhbFJvd01vdmUiLFV3PW5ldyBXZWFrTWFwLExJZT0iaHRfX21hbnVhbFJvd01vdmUiLGtuZT0ic2hvdy11aSIsdmdlPSJvbi1tb3ZpbmctLXJvd3MiLEFnZT0iYWZ0ZXItc2VsZWN0aW9uLS1yb3dzIixpZHQ9ZnVuY3Rpb24oZCl7IWZ1''@;'; put 'put ''bmN0aW9uIHEzdChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUs''@;'; put 'put ''e2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZwZ2UoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBlZHQoZCl7dmFyIGc9ZnVuY3Rpb24gbmR0KCl7''@;'; put 'put ''aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJl''@;'; put 'put ''ZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9S3YoZCk7aWYoZyl7dmFyIEM9S3YodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxD''@;'; put 'put ''KX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHRkdCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24gWDN0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBh''@;'; put 'put ''cyBhIGZ1bmN0aW9uIil9KHRoaXMsaCkseT1nLmNhbGwodGhpcyx2KSxVdy5zZXQoZ2dlKHkpLHtyb3dzVG9Nb3ZlOltdLHByZXNzZWQ6dm9pZCAwLHRhcmdldDp7ZXZlbnRQYWdlWTp2b2lkIDAsY29vcmRzOnZvaWQgMCxURDp2b2lkIDAscm93OnZvaWQgMH0sY2FjaGVkRHJvcEluZGV4OnZv''@;'; put 'put ''aWQgMH0pLHkuZXZlbnRNYW5hZ2VyPW5ldyBMMShnZ2UoeSkpLHkuYmFja2xpZ2h0PW5ldyBIM3QodikseS5ndWlkZWxpbmU9bmV3IEozdCh2KSx5fXJldHVybiBmdW5jdGlvbiBLM3QoZCxnLGgpe2cmJkRJZShkLnByb3RvdHlwZSxnKSxoJiZESWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVttZ2VdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5lbmFi''@;'; put 'put ''bGVkfHwodGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZURvd24iLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVPbkNlbGxNb3VzZURvd24uYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZU92ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHku''@;'; put 'put ''b25CZWZvcmVPbkNlbGxNb3VzZU92ZXIuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlclNjcm9sbEhvcml6b250YWxseSIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyU2Nyb2xsSG9yaXpvbnRhbGx5KCl9KSx0aGlzLmFkZEhvb2soImFmdGVyTG9hZERhdGEiLGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckxvYWREYXRhLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYnVpbGRQbHVnaW5VSSgpLHRoaXMucmVnaXN0ZXJFdmVudHMoKSxPMCh0aGlzLmhvdC5yb290RWxlbWVudCxMSWUpLHBNKEt2KGgucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlz''@;'; put 'put ''KS5jYWxsKHRoaXMpKX19LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLHRoaXMubW92ZUJ5U2V0dGluZ3NPckxvYWQoKSxwTShLdihoLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2Fs''@;'; put 'put ''bCh0aGlzKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7cGwodGhpcy5ob3Qucm9vdEVsZW1lbnQsTEllKSx0aGlzLnVucmVnaXN0ZXJFdmVudHMoKSx0aGlzLmJhY2tsaWdodC5kZXN0cm95KCksdGhpcy5ndWlkZWxpbmUuZGVzdHJveSgpLHBNKEt2KGgucHJvdG90''@;'; put 'put ''eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6Im1vdmVSb3ciLHZhbHVlOmZ1bmN0aW9uKHksQyl7cmV0dXJuIHRoaXMubW92ZVJvd3MoW3ldLEMpfX0se2tleToibW92ZVJvd3MiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9VXcuZ2V0KHRoaXMpLFo9SS5j''@;'; put 'put ''YWNoZWREcm9wSW5kZXgsdWU9dGhpcy5pc01vdmVQb3NzaWJsZSh5LEMpLF9lPXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVSb3dNb3ZlIix5LEMsWix1ZSk7aWYoSS5jYWNoZWREcm9wSW5kZXg9dm9pZCAwLCExIT09X2Upe3VlJiZ0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5tb3ZlSW5kZXhl''@;'; put 'put ''cyh5LEMpO3ZhciBCZT11ZSYmdGhpcy5pc1Jvd09yZGVyQ2hhbmdlZCh5LEMpO3JldHVybiB0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJSb3dNb3ZlIix5LEMsWix1ZSxCZSksQmV9fX0se2tleToiZHJhZ1JvdyIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtyZXR1cm4gdGhpcy5kcmFnUm93cyhbeV0s''@;'; put 'put ''Qyl9fSx7a2V5OiJkcmFnUm93cyIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST10aGlzLmNvdW50RmluYWxJbmRleCh5LEMpO3JldHVybiBVdy5nZXQodGhpcykuY2FjaGVkRHJvcEluZGV4PUMsdGhpcy5tb3ZlUm93cyh5LEkpfX0se2tleToiaXNNb3ZlUG9zc2libGUiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKHksQyl7dmFyIEk9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgoKSxaPXkubGVuZ3RoK0M+SSx1ZT1DPDAsX2U9eS5zb21lKGZ1bmN0aW9uKE5lKXtyZXR1cm4gTmU8MH0pLEJlPXkuc29tZShmdW5jdGlvbihOZSl7cmV0dXJuIE5lPj1JfSk7''@;'; put 'put ''cmV0dXJuIShafHx1ZXx8X2V8fEJlKX19LHtrZXk6ImlzUm93T3JkZXJDaGFuZ2VkIix2YWx1ZTpmdW5jdGlvbih5LEMpe3JldHVybiB5LnNvbWUoZnVuY3Rpb24oSSxaKXtyZXR1cm4gSS1aIT09Q30pfX0se2tleToiY291bnRGaW5hbEluZGV4Iix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJ''@;'; put 'put ''PVN1KHksZnVuY3Rpb24oWix1ZSl7cmV0dXJuIHVlPEMmJihaKz0xKSxafSwwKTtyZXR1cm4gQy1JfX0se2tleToiZ2V0Um93c0hlaWdodCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtmb3IodmFyIEk9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIsWj0wLHVlPXk7dWU8PUM7dWUrKyl7dmFyIF9lPUku''@;'; put 'put ''Z2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleCh1ZSk7bnVsbCE9PV9lJiYoWis9dGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZS5nZXRSb3dIZWlnaHQoX2UpfHwyMyl9cmV0dXJuIFp9fSx7a2V5OiJtb3ZlQnlTZXR0aW5nc09yTG9hZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLmhv''@;'; put 'put ''dC5nZXRTZXR0aW5ncygpW21nZV07aWYoQXJyYXkuaXNBcnJheSh5KSl0aGlzLm1vdmVSb3dzKHksMCk7ZWxzZSBpZih2b2lkIDAhPT15KXt2YXIgQz10aGlzLnBlcnNpc3RlbnRTdGF0ZUxvYWQoKTtDLmxlbmd0aCYmdGhpcy5tb3ZlUm93cyhDLDApfX19LHtrZXk6ImlzRml4ZWRSb3dUb3Ai''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKHkpe3JldHVybiB5PHRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRSb3dzVG9wfX0se2tleToiaXNGaXhlZFJvd0JvdHRvbSIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIHk+dGhpcy5ob3QuY291bnRSb3dzKCktMS10aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZp''@;'; put 'put ''eGVkUm93c0JvdHRvbX19LHtrZXk6InBlcnNpc3RlbnRTdGF0ZVNhdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QucnVuSG9va3MoInBlcnNpc3RlbnRTdGF0ZVNhdmUiLCJtYW51YWxSb3dNb3ZlIix0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXRJbmRleGVzU2VxdWVuY2UoKSl9fSx7''@;'; put 'put ''a2V5OiJwZXJzaXN0ZW50U3RhdGVMb2FkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXt9O3JldHVybiB0aGlzLmhvdC5ydW5Ib29rcygicGVyc2lzdGVudFN0YXRlTG9hZCIsIm1hbnVhbFJvd01vdmUiLHkpLHkudmFsdWU/eS52YWx1ZTpbXX19LHtrZXk6InByZXBhcmVSb3dzVG9Nb3Zpbmci''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxDPVtdO2lmKCF5KXJldHVybiBDO3ZhciBJPXkuZnJvbSxaPXkudG87cmV0dXJuIGlhKE1hdGgubWluKEkucm93LFoucm93KSxNYXRoLm1heChJLnJvdyxaLnJvdyksZnVuY3Rpb24oQmUpe0Mu''@;'; put 'put ''cHVzaChCZSl9KSxDfX0se2tleToicmVmcmVzaFBvc2l0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT1Vdy5nZXQodGhpcyksQz15LnRhcmdldC5jb29yZHMsST10aGlzLmhvdC52aWV3LmdldEZpcnN0RnVsbHlWaXNpYmxlUm93KCksWj10aGlzLmhvdC52aWV3LmdldExhc3RGdWxseVZp''@;'; put 'put ''c2libGVSb3coKSx1ZT10aGlzLmhvdC5jb3VudFJvd3MoKTt0aGlzLmlzRml4ZWRSb3dUb3AoQy5yb3cpJiZJPjAmJnRoaXMuaG90LnNjcm9sbFZpZXdwb3J0VG8odGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KEktMSwtMSkpLHRoaXMuaXNGaXhlZFJv''@;'; put 'put ''d0JvdHRvbShDLnJvdykmJlo8dWUmJnRoaXMuaG90LnNjcm9sbFZpZXdwb3J0VG8odGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KForMSwxKSx2b2lkIDAsITApO3ZhciBfZT10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLEJlPXkudGFyZ2V0LlRELE5l''@;'; put 'put ''PWp1KHRoaXMuaG90LnJvb3RFbGVtZW50KSxLZT10aGlzLmhvdC52aWV3LlRIRUFELm9mZnNldEhlaWdodCt0aGlzLmdldFJvd3NIZWlnaHQoMCxDLnJvdy0xKSxwdD15LnRhcmdldC5ldmVudFBhZ2VZLU5lLnRvcCtfZS5ob2xkZXIuc2Nyb2xsVG9wLE90PV9lLmhpZGVyLm9mZnNldEhlaWdo''@;'; put 'put ''dCwkdD1fZS5UQk9EWS5vZmZzZXRUb3AsZm49dGhpcy5iYWNrbGlnaHQuZ2V0T2Zmc2V0KCkudG9wLExuPXRoaXMuYmFja2xpZ2h0LmdldFNpemUoKS5oZWlnaHQ7dGhpcy5pc0ZpeGVkUm93VG9wKEMucm93KSYmKEtlKz1fZS5ob2xkZXIuc2Nyb2xsVG9wKSxDLnJvdzwwP3kudGFyZ2V0LnJv''@;'; put 'put ''dz1JPjA/SS0xOkk6QmUub2Zmc2V0SGVpZ2h0LzIrS2U8PXB0Pyh5LnRhcmdldC5yb3c9Qy5yb3crMSxLZSs9MD09PUMucm93P0JlLm9mZnNldEhlaWdodC0xOkJlLm9mZnNldEhlaWdodCk6eS50YXJnZXQucm93PUMucm93O3ZhciBpcj1wdCxtcj1LZTtwdCtMbitmbj49T3Q/aXI9T3QtTG4t''@;'; put 'put ''Zm46cHQrZm48JHQmJihpcj0kdCtNYXRoLmFicyhmbikpLEtlPj1PdC0xJiYobXI9T3QtMSksdGhpcy5iYWNrbGlnaHQuc2V0UG9zaXRpb24oaXIpLHRoaXMuZ3VpZGVsaW5lLnNldFBvc2l0aW9uKG1yKX19LHtrZXk6InJlZ2lzdGVyRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRo''@;'; put 'put ''aXMsQz10aGlzLmhvdC5yb290RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoQywibW91c2Vtb3ZlIixmdW5jdGlvbihJKXtyZXR1cm4geS5vbk1vdXNlTW92ZShJKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo''@;'; put 'put ''QywibW91c2V1cCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbk1vdXNlVXAoKX0pfX0se2tleToidW5yZWdpc3RlckV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmV2ZW50TWFuYWdlci5jbGVhcigpfX0se2tleToib25CZWZvcmVPbkNlbGxNb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKHks''@;'; put 'put ''QyxJLFope3ZhciB1ZT10aGlzLmhvdC52aWV3Ll93dCxfZT11ZS53dFRhYmxlLEJlPXVlLnd0Vmlld3BvcnQsTmU9dGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpLEtlPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkscHQ9VXcuZ2V0KHRoaXMpO2lmKCFL''@;'; put 'put ''ZXx8IU5lfHxwdC5wcmVzc2VkfHwwIT09eS5idXR0b24pcmV0dXJuIHB0LnByZXNzZWQ9ITEscHQucm93c1RvTW92ZS5sZW5ndGg9MCx2b2lkIHBsKHRoaXMuaG90LnJvb3RFbGVtZW50LFt2Z2Usa25lXSk7dmFyIE90PXRoaXMuZ3VpZGVsaW5lLmlzQnVpbHQoKSYmIXRoaXMuZ3VpZGVsaW5l''@;'; put 'put ''LmlzQXBwZW5kZWQoKSwkdD10aGlzLmJhY2tsaWdodC5pc0J1aWx0KCkmJiF0aGlzLmJhY2tsaWdodC5pc0FwcGVuZGVkKCk7T3QmJiR0JiYodGhpcy5ndWlkZWxpbmUuYXBwZW5kVG8oX2UuaGlkZXIpLHRoaXMuYmFja2xpZ2h0LmFwcGVuZFRvKF9lLmhpZGVyKSk7dmFyIGZuPUtlLmZyb20s''@;'; put 'put ''TG49S2UudG8saXI9TWF0aC5taW4oZm4ucm93LExuLnJvdyksbXI9TWF0aC5tYXgoZm4ucm93LExuLnJvdyk7aWYoQy5jb2w8MCYmQy5yb3c+PWlyJiZDLnJvdzw9bXIpe1oucm93PSEwLHB0LnByZXNzZWQ9ITAscHQudGFyZ2V0LmV2ZW50UGFnZVk9eS5wYWdlWSxwdC50YXJnZXQuY29vcmRz''@;'; put 'put ''PUMscHQudGFyZ2V0LlREPUkscHQucm93c1RvTW92ZT10aGlzLnByZXBhcmVSb3dzVG9Nb3ZpbmcoKTt2YXIgU3I9X2UuaG9sZGVyLnNjcm9sbExlZnQrQmUuZ2V0Um93SGVhZGVyV2lkdGgoKTt0aGlzLmJhY2tsaWdodC5zZXRQb3NpdGlvbihudWxsLFNyKSx0aGlzLmJhY2tsaWdodC5zZXRT''@;'; put 'put ''aXplKF9lLmhpZGVyLm9mZnNldFdpZHRoLVNyLHRoaXMuZ2V0Um93c0hlaWdodChpcixtcikpLHRoaXMuYmFja2xpZ2h0LnNldE9mZnNldCgtMSoodGhpcy5nZXRSb3dzSGVpZ2h0KGlyLEMucm93LTEpK3kub2Zmc2V0WSksbnVsbCksTzAodGhpcy5ob3Qucm9vdEVsZW1lbnQsdmdlKSx0aGlz''@;'; put 'put ''LnJlZnJlc2hQb3NpdGlvbnMoKX1lbHNlIHBsKHRoaXMuaG90LnJvb3RFbGVtZW50LEFnZSkscHQucHJlc3NlZD0hMSxwdC5yb3dzVG9Nb3ZlLmxlbmd0aD0wfX0se2tleToib25Nb3VzZU1vdmUiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPVV3LmdldCh0aGlzKTtpZihDLnByZXNzZWQpe2lm''@;'; put 'put ''KHkudGFyZ2V0PT09dGhpcy5iYWNrbGlnaHQuZWxlbWVudCl7dmFyIEk9dGhpcy5iYWNrbGlnaHQuZ2V0U2l6ZSgpLmhlaWdodDt0aGlzLmJhY2tsaWdodC5zZXRTaXplKG51bGwsMCksc2V0VGltZW91dChmdW5jdGlvbigpe3RoaXMuYmFja2xpZ2h0LnNldFBvc2l0aW9uKG51bGwsSSl9KX1D''@;'; put 'put ''LnRhcmdldC5ldmVudFBhZ2VZPXkucGFnZVksdGhpcy5yZWZyZXNoUG9zaXRpb25zKCl9fX0se2tleToib25CZWZvcmVPbkNlbGxNb3VzZU92ZXIiLHZhbHVlOmZ1bmN0aW9uKHksQyxJLFope3ZhciB1ZT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLF9lPVV3LmdldCh0aGlzKTsh''@;'; put 'put ''dWV8fCFfZS5wcmVzc2VkfHwoX2Uucm93c1RvTW92ZS5pbmRleE9mKEMucm93KT4tMT9wbCh0aGlzLmhvdC5yb290RWxlbWVudCxrbmUpOk8wKHRoaXMuaG90LnJvb3RFbGVtZW50LGtuZSksWi5yb3c9ITAsWi5jb2x1bW49ITAsWi5jZWxsPSEwLF9lLnRhcmdldC5jb29yZHM9QyxfZS50YXJn''@;'; put 'put ''ZXQuVEQ9SSl9fSx7a2V5OiJvbk1vdXNlVXAiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9VXcuZ2V0KHRoaXMpLEM9eS50YXJnZXQucm93LEk9eS5yb3dzVG9Nb3ZlLmxlbmd0aDtpZih5LnByZXNzZWQ9ITEseS5iYWNrbGlnaHRIZWlnaHQ9MCxwbCh0aGlzLmhvdC5yb290RWxlbWVudCxbdmdl''@;'; put 'put ''LGtuZSxBZ2VdKSx0aGlzLmhvdC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCkmJk8wKHRoaXMuaG90LnJvb3RFbGVtZW50LEFnZSksIShJPDF8fHZvaWQgMD09PUMpKXt2YXIgdWU9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyh5LnJvd3NUb01vdmVbMF0pLF9lPXRoaXMuZHJhZ1Jv''@;'; put 'put ''d3MoeS5yb3dzVG9Nb3ZlLEMpO2lmKHkucm93c1RvTW92ZS5sZW5ndGg9MCwhMD09PV9lKXt0aGlzLnBlcnNpc3RlbnRTdGF0ZVNhdmUoKSx0aGlzLmhvdC5yZW5kZXIoKSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSghMCk7dmFyIEJlPXRoaXMuaG90LnRvVmlzdWFsUm93KHVl''@;'; put 'put ''KTt0aGlzLmhvdC5zZWxlY3RSb3dzKEJlLEJlK0ktMSl9fX19LHtrZXk6Im9uQWZ0ZXJTY3JvbGxIb3Jpem9udGFsbHkiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZSxaPXRoaXMuaG90LnZpZXcuX3d0Lnd0Vmlld3BvcnQuZ2V0Um93SGVhZGVyV2lk''@;'; put 'put ''dGgoKSt5LmhvbGRlci5zY3JvbGxMZWZ0O3RoaXMuYmFja2xpZ2h0LnNldFBvc2l0aW9uKG51bGwsWiksdGhpcy5iYWNrbGlnaHQuc2V0U2l6ZSh5LmhpZGVyLm9mZnNldFdpZHRoLVopfX0se2tleToiYnVpbGRQbHVnaW5VSSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmJhY2tsaWdodC5idWls''@;'; put 'put ''ZCgpLHRoaXMuZ3VpZGVsaW5lLmJ1aWxkKCl9fSx7a2V5OiJvbkFmdGVyTG9hZERhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tb3ZlQnlTZXR0aW5nc09yTG9hZCgpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmJhY2tsaWdodC5kZXN0cm95KCksdGhpcy5ndWlk''@;'; put 'put ''ZWxpbmUuZGVzdHJveSgpLHBNKEt2KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG1nZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDE0MH19XSks''@;'; put 'put ''aH0oWXMpO2Z1bmN0aW9uIHlnZShkKXtyZXR1cm4oeWdlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBT''@;'; put 'put ''eW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gT0llKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5j''@;'; put 'put ''b25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gZ00oKXtyZXR1cm4gZ009InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVu''@;'; put 'put ''Y3Rpb24oZyxoLHYpe3ZhciB5PWxkdChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sZ00uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0''@;'; put 'put ''aW9uIGxkdChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9JHYoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gd2dlKGQsZyl7cmV0dXJuKHdnZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJp''@;'; put 'put ''bmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIGNkdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PXlnZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZl''@;'; put 'put ''ZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gYmdlKGQpfWZ1bmN0aW9uIGJnZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFz''@;'; put 'put ''bid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gJHYoZCl7cmV0dXJuKCR2PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9''@;'; put 'put ''dmFyIEJJZSxQSWUsRkllLEhJZSxTbmU9Im1hbnVhbFJvd1Jlc2l6ZSIsUkllPSJtYW51YWxSb3dIZWlnaHRzIixfZ2U9bmV3IFdlYWtNYXAsZGR0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBzZHQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmd2dlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gdWR0KGQpe3ZhciBnPWZ1bmN0aW9uIGZkdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0''@;'; put 'put ''cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0o''@;'; put 'put ''KTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PSR2KGQpO2lmKGcpe3ZhciBDPSR2KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBjZHQodGhpcyx5KX19KGgpO2Z1bmN0aW9u''@;'; put 'put ''IGgodil7dmFyIHk7IWZ1bmN0aW9uIG9kdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpO3ZhciBDPSh5PWcuY2FsbCh0aGlzLHYpKS5ob3Qucm9vdERvY3VtZW50O3JldHVy''@;'; put 'put ''biB5LmN1cnJlbnRUSD1udWxsLHkuY3VycmVudFJvdz1udWxsLHkuc2VsZWN0ZWRSb3dzPVtdLHkuY3VycmVudEhlaWdodD1udWxsLHkubmV3U2l6ZT1udWxsLHkuc3RhcnRZPW51bGwseS5zdGFydEhlaWdodD1udWxsLHkuc3RhcnRPZmZzZXQ9bnVsbCx5LmhhbmRsZT1DLmNyZWF0ZUVsZW1l''@;'; put 'put ''bnQoIkRJViIpLHkuZ3VpZGU9Qy5jcmVhdGVFbGVtZW50KCJESVYiKSx5LmV2ZW50TWFuYWdlcj1uZXcgTDEoYmdlKHkpKSx5LnByZXNzZWQ9bnVsbCx5LmRibGNsaWNrPTAseS5hdXRvcmVzaXplVGltZW91dD1udWxsLHkucm93SGVpZ2h0c01hcD12b2lkIDAsX2dlLnNldChiZ2UoeSkse2Nv''@;'; put 'put ''bmZpZzp2b2lkIDB9KSxPMCh5LmhhbmRsZSwibWFudWFsUm93UmVzaXplciIpLE8wKHkuZ3VpZGUsIm1hbnVhbFJvd1Jlc2l6ZXJHdWlkZSIpLHl9cmV0dXJuIGZ1bmN0aW9uIGFkdChkLGcsaCl7ZyYmT0llKGQucHJvdG90eXBlLGcpLGgmJk9JZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpbmxpbmVEaXIiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhvdC5pc1J0bCgpPyJyaWdodCI6ImxlZnQifX0se2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhvdC5nZXRTZXR0''@;'; put 'put ''aW5ncygpW1NuZV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLnJvd0hlaWdodHNNYXA9bmV3IER3LHRoaXMucm93SGVpZ2h0c01hcC5hZGRMb2NhbEhvb2soImluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25N''@;'; put 'put ''YXBJbml0KCl9KSx0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbk5hbWUsdGhpcy5yb3dIZWlnaHRzTWFwKSx0aGlzLmFkZEhvb2soIm1vZGlmeVJvd0hlaWdodCIsZnVuY3Rpb24oQyxJKXtyZXR1cm4geS5vbk1vZGlmeVJvd0hlaWdodChDLEkpfSksdGhp''@;'; put 'put ''cy5iaW5kRXZlbnRzKCksZ00oJHYoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksZ00oJHYoaC5wcm90b3R5cGUp''@;'; put 'put ''LCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe19nZS5nZXQodGhpcykuY29uZmlnPXRoaXMucm93SGVpZ2h0c01hcC5nZXRWYWx1ZXMoKSx0aGlzLmhvdC5yb3dJbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHRo''@;'; put 'put ''aXMucGx1Z2luTmFtZSksZ00oJHYoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToic2F2ZU1hbnVhbFJvd0hlaWdodHMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QucnVuSG9va3MoInBlcnNpc3RlbnRTdGF0ZVNhdmUiLFJJZSx0aGlzLnJv''@;'; put 'put ''d0hlaWdodHNNYXAuZ2V0VmFsdWVzKCkpfX0se2tleToibG9hZE1hbnVhbFJvd0hlaWdodHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9e307cmV0dXJuIHRoaXMuaG90LnJ1bkhvb2tzKCJwZXJzaXN0ZW50U3RhdGVMb2FkIixSSWUseSkseS52YWx1ZX19LHtrZXk6InNldE1hbnVhbFNpemUi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyh5KSxaPU1hdGgubWF4KEMsakNlLkRFRkFVTFRfSEVJR0hUKTtyZXR1cm4gdGhpcy5yb3dIZWlnaHRzTWFwLnNldFZhbHVlQXRJbmRleChJLFopLFp9fSx7a2V5OiJzZXR1cEhhbmRsZVBvc2l0aW9uIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzO3RoaXMuY3VycmVudFRIPXk7dmFyIEk9dGhpcy5ob3QudmlldyxaPUkuX3d0LHVlPVoud3RUYWJsZS5nZXRDb29yZHModGhpcy5jdXJyZW50VEgpLF9lPXVlLnJvdztpZighKF9lPDApKXt2YXIgT3QsQmU9RTIodGhpcy5jdXJyZW50VEgpLE5l''@;'; put 'put ''PXRoaXMuY3VycmVudFRILmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEtlPV9lPFouZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIikscHQ9X2U+PUkuY291bnROb3RIaWRkZW5Sb3dJbmRleGVzKDAsMSktWi5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKTtLZT9PdD1aLnd0T3ZlcmxheXMu''@;'; put 'put ''dG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmdldFJlbGF0aXZlQ2VsbFBvc2l0aW9uKHRoaXMuY3VycmVudFRILHVlLnJvdyx1ZS5jb2wpOnB0JiYoT3Q9Wi53dE92ZXJsYXlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5nZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbih0aGlzLmN1''@;'; put 'put ''cnJlbnRUSCx1ZS5yb3csdWUuY29sKSksT3R8fChPdD1aLnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVybGF5LmdldFJlbGF0aXZlQ2VsbFBvc2l0aW9uKHRoaXMuY3VycmVudFRILHVlLnJvdyx1ZS5jb2wpKSx0aGlzLmN1cnJlbnRSb3c9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0Vmlz''@;'; put 'put ''dWFsRnJvbVJlbmRlcmFibGVJbmRleChfZSksdGhpcy5zZWxlY3RlZFJvd3M9W107dmFyICR0PXRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKXx8dGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpO3RoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVj''@;'; put 'put ''dGVkKCkmJiR0JiZVcih0aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlKCksZnVuY3Rpb24oTG4pe2lhKExuLmdldFRvcFN0YXJ0Q29ybmVyKCkucm93LExuLmdldEJvdHRvbVN0YXJ0Q29ybmVyKCkucm93LGZ1bmN0aW9uKFNyKXtDLnNlbGVjdGVkUm93cy5pbmNsdWRlcyhTcil8fEMuc2VsZWN0''@;'; put 'put ''ZWRSb3dzLnB1c2goU3IpfSl9KSx0aGlzLnNlbGVjdGVkUm93cy5pbmNsdWRlcyh0aGlzLmN1cnJlbnRSb3cpfHwodGhpcy5zZWxlY3RlZFJvd3M9W3RoaXMuY3VycmVudFJvd10pLHRoaXMuc3RhcnRPZmZzZXQ9T3QudG9wLTYsdGhpcy5zdGFydEhlaWdodD1wYXJzZUludChOZS5oZWlnaHQs''@;'; put 'put ''MTApLHRoaXMuaGFuZGxlLnN0eWxlLnRvcD0iIi5jb25jYXQodGhpcy5zdGFydE9mZnNldCt0aGlzLnN0YXJ0SGVpZ2h0LCJweCIpLHRoaXMuaGFuZGxlLnN0eWxlW3RoaXMuaW5saW5lRGlyXT0iIi5jb25jYXQoT3Quc3RhcnQsInB4IiksdGhpcy5oYW5kbGUuc3R5bGUud2lkdGg9IiIuY29u''@;'; put 'put ''Y2F0KEJlLCJweCIpLHRoaXMuaG90LnJvb3RFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaGFuZGxlKX19fSx7a2V5OiJyZWZyZXNoSGFuZGxlUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5oYW5kbGUuc3R5bGUudG9wPSIiLmNvbmNhdCh0aGlzLnN0YXJ0T2Zmc2V0K3RoaXMuY3Vy''@;'; put 'put ''cmVudEhlaWdodCwicHgiKX19LHtrZXk6InNldHVwR3VpZGVQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT1wYXJzZUludChFMih0aGlzLmhhbmRsZSksMTApLEM9cGFyc2VJbnQodGhpcy5oYW5kbGUuc3R5bGVbdGhpcy5pbmxpbmVEaXJdLDEwKSt5LEk9cGFyc2VJbnQodGhpcy5o''@;'; put 'put ''b3Qudmlldy5tYXhpbXVtVmlzaWJsZUVsZW1lbnRXaWR0aCgwKSwxMCk7TzAodGhpcy5oYW5kbGUsImFjdGl2ZSIpLE8wKHRoaXMuZ3VpZGUsImFjdGl2ZSIpLHRoaXMuZ3VpZGUuc3R5bGUudG9wPXRoaXMuaGFuZGxlLnN0eWxlLnRvcCx0aGlzLmd1aWRlLnN0eWxlW3RoaXMuaW5saW5lRGly''@;'; put 'put ''XT0iIi5jb25jYXQoQywicHgiKSx0aGlzLmd1aWRlLnN0eWxlLndpZHRoPSIiLmNvbmNhdChJLXksInB4IiksdGhpcy5ob3Qucm9vdEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5ndWlkZSl9fSx7a2V5OiJyZWZyZXNoR3VpZGVQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmd1aWRl''@;'; put 'put ''LnN0eWxlLnRvcD10aGlzLmhhbmRsZS5zdHlsZS50b3B9fSx7a2V5OiJoaWRlSGFuZGxlQW5kR3VpZGUiLHZhbHVlOmZ1bmN0aW9uKCl7cGwodGhpcy5oYW5kbGUsImFjdGl2ZSIpLHBsKHRoaXMuZ3VpZGUsImFjdGl2ZSIpfX0se2tleToiY2hlY2tJZlJvd0hlYWRlciIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oeSl7dmFyIEMsSTtyZXR1cm4gTXYoeSxbIlRIIl0sdGhpcy5ob3Qucm9vdEVsZW1lbnQpJiYiVEJPRFkiPT09KG51bGw9PT0oQz15LnBhcmVudE5vZGUpfHx2b2lkIDA9PT1DfHxudWxsPT09KEk9Qy5wYXJlbnROb2RlKXx8dm9pZCAwPT09ST92b2lkIDA6SS50YWdOYW1lKX19LHtrZXk6''@;'; put 'put ''ImdldENsb3Nlc3RUSFBhcmVudCIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIlRBQkxFIiE9PXkudGFnTmFtZT8iVEgiPT09eS50YWdOYW1lP3k6dGhpcy5nZXRDbG9zZXN0VEhQYXJlbnQoeS5wYXJlbnROb2RlKTpudWxsfX0se2tleToiZ2V0QWN0dWFsUm93SGVpZ2h0Iix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbih5KXt2YXIgQz10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLmdldFJvd0hlaWdodCh5KTtyZXR1cm4gdm9pZCAwIT09QyYmdGhpcy5uZXdTaXplPEM/Qzp0aGlzLm5ld1NpemV9fSx7a2V5OiJvbk1vdXNlT3ZlciIsdmFsdWU6ZnVuY3Rpb24oeSl7aWYoIXkzZSh5LnRhcmdldCkmJnRo''@;'; put 'put ''aXMuY2hlY2tJZlJvd0hlYWRlcih5LnRhcmdldCkpe3ZhciBDPXRoaXMuZ2V0Q2xvc2VzdFRIUGFyZW50KHkudGFyZ2V0KTtDJiYodGhpcy5wcmVzc2VkfHx0aGlzLnNldHVwSGFuZGxlUG9zaXRpb24oQykpfX19LHtrZXk6ImFmdGVyTW91c2VEb3duVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgeT10aGlzLEM9ZnVuY3Rpb24oKXt5LmhvdC5mb3JjZUZ1bGxSZW5kZXI9ITAseS5ob3Qudmlldy5yZW5kZXIoKSx5LmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSghMCl9LEk9ZnVuY3Rpb24oX2UsQmUpe3ZhciBOZT15LmhvdC5ydW5Ib29rcygiYmVmb3JlUm93UmVzaXplIix5''@;'; put 'put ''LmdldEFjdHVhbFJvd0hlaWdodChfZSksX2UsITApO3ZvaWQgMCE9PU5lJiYoeS5uZXdTaXplPU5lKSx5LnNldE1hbnVhbFNpemUoX2UseS5uZXdTaXplKSx5LmhvdC5ydW5Ib29rcygiYWZ0ZXJSb3dSZXNpemUiLHkuZ2V0QWN0dWFsUm93SGVpZ2h0KF9lKSxfZSwhMCksQmUmJkMoKX07dGhp''@;'; put 'put ''cy5kYmxjbGljaz49MiYmKHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aD4xPyhVcih0aGlzLnNlbGVjdGVkUm93cyxmdW5jdGlvbih1ZSl7SSh1ZSl9KSxDKCkpOlVyKHRoaXMuc2VsZWN0ZWRSb3dzLGZ1bmN0aW9uKHVlKXtJKHVlLCEwKX0pKSx0aGlzLmRibGNsaWNrPTAsdGhpcy5hdXRvcmVz''@;'; put 'put ''aXplVGltZW91dD1udWxsfX0se2tleToib25Nb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXM7dGwoeS50YXJnZXQsIm1hbnVhbFJvd1Jlc2l6ZXIiKSYmKHRoaXMuc2V0dXBIYW5kbGVQb3NpdGlvbih0aGlzLmN1cnJlbnRUSCksdGhpcy5zZXR1cEd1aWRlUG9zaXRpb24o''@;'; put 'put ''KSx0aGlzLnByZXNzZWQ9ITAsbnVsbD09PXRoaXMuYXV0b3Jlc2l6ZVRpbWVvdXQmJih0aGlzLmF1dG9yZXNpemVUaW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gQy5hZnRlck1vdXNlRG93blRpbWVvdXQoKX0sNTAwKSx0aGlzLmhvdC5fcmVnaXN0ZXJUaW1lb3V0KHRoaXMu''@;'; put 'put ''YXV0b3Jlc2l6ZVRpbWVvdXQpKSx0aGlzLmRibGNsaWNrKz0xLHRoaXMuc3RhcnRZPXkucGFnZVksdGhpcy5uZXdTaXplPXRoaXMuc3RhcnRIZWlnaHQpfX0se2tleToib25Nb3VzZU1vdmUiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXM7dGhpcy5wcmVzc2VkJiYodGhpcy5jdXJyZW50''@;'; put 'put ''SGVpZ2h0PXRoaXMuc3RhcnRIZWlnaHQrKHkucGFnZVktdGhpcy5zdGFydFkpLFVyKHRoaXMuc2VsZWN0ZWRSb3dzLGZ1bmN0aW9uKEkpe0MubmV3U2l6ZT1DLnNldE1hbnVhbFNpemUoSSxDLmN1cnJlbnRIZWlnaHQpfSksdGhpcy5yZWZyZXNoSGFuZGxlUG9zaXRpb24oKSx0aGlzLnJlZnJl''@;'; put 'put ''c2hHdWlkZVBvc2l0aW9uKCkpfX0se2tleToib25Nb3VzZVVwIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz1mdW5jdGlvbigpe3kuaG90LmZvcmNlRnVsbFJlbmRlcj0hMCx5LmhvdC52aWV3LnJlbmRlcigpLHkuaG90LnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCEwKX0sST1mdW5j''@;'; put 'put ''dGlvbihfZSxCZSl7eS5ob3QucnVuSG9va3MoImJlZm9yZVJvd1Jlc2l6ZSIseS5nZXRBY3R1YWxSb3dIZWlnaHQoX2UpLF9lLCExKSxCZSYmQygpLHkuc2F2ZU1hbnVhbFJvd0hlaWdodHMoKSx5LmhvdC5ydW5Ib29rcygiYWZ0ZXJSb3dSZXNpemUiLHkuZ2V0QWN0dWFsUm93SGVpZ2h0KF9l''@;'; put 'put ''KSxfZSwhMSl9O3RoaXMucHJlc3NlZCYmKHRoaXMuaGlkZUhhbmRsZUFuZEd1aWRlKCksdGhpcy5wcmVzc2VkPSExLHRoaXMubmV3U2l6ZSE9PXRoaXMuc3RhcnRIZWlnaHQmJih0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGg+MT8oVXIodGhpcy5zZWxlY3RlZFJvd3MsZnVuY3Rpb24odWUpe0ko''@;'; put 'put ''dWUpfSksQygpKTpVcih0aGlzLnNlbGVjdGVkUm93cyxmdW5jdGlvbih1ZSl7SSh1ZSwhMCl9KSksdGhpcy5zZXR1cEhhbmRsZVBvc2l0aW9uKHRoaXMuY3VycmVudFRIKSl9fSx7a2V5OiJiaW5kRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz10aGlzLmhvdCxJPUMucm9v''@;'; put 'put ''dEVsZW1lbnQsWj1DLnJvb3RXaW5kb3c7dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihJLCJtb3VzZW92ZXIiLGZ1bmN0aW9uKHVlKXtyZXR1cm4geS5vbk1vdXNlT3Zlcih1ZSl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKEksIm1vdXNlZG93biIsZnVu''@;'; put 'put ''Y3Rpb24odWUpe3JldHVybiB5Lm9uTW91c2VEb3duKHVlKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoWiwibW91c2Vtb3ZlIixmdW5jdGlvbih1ZSl7cmV0dXJuIHkub25Nb3VzZU1vdmUodWUpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihaLCJt''@;'; put 'put ''b3VzZXVwIixmdW5jdGlvbigpe3JldHVybiB5Lm9uTW91c2VVcCgpfSl9fSx7a2V5OiJvbk1vZGlmeVJvd0hlaWdodCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST15O2lmKHRoaXMuZW5hYmxlZCl7dmFyIFo9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyhDKSx1ZT10aGlzLnJvd0hlaWdodHNN''@;'; put 'put ''YXAuZ2V0VmFsdWVBdEluZGV4KFopO3RoaXMuaG90LmdldFNldHRpbmdzKClbU25lXSYmdWUmJihJPXVlKX1yZXR1cm4gSX19LHtrZXk6Im9uTWFwSW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9X2dlLmdldCh0aGlzKSxJPXRoaXMuaG90LmdldFNldHRpbmdzKClbU25lXSxa''@;'; put 'put ''PXRoaXMubG9hZE1hbnVhbFJvd0hlaWdodHMoKTt0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe3ZvaWQgMCE9PVo/Wi5mb3JFYWNoKGZ1bmN0aW9uKHVlLF9lKXt5LnJvd0hlaWdodHNNYXAuc2V0VmFsdWVBdEluZGV4KF9lLHVlKX0pOkFycmF5LmlzQXJyYXkoSSk/KEkuZm9y''@;'; put 'put ''RWFjaChmdW5jdGlvbih1ZSxfZSl7eS5yb3dIZWlnaHRzTWFwLnNldFZhbHVlQXRJbmRleChfZSx1ZSl9KSxDLmNvbmZpZz1JKTohMD09PUkmJkFycmF5LmlzQXJyYXkoQy5jb25maWcpJiZDLmNvbmZpZy5mb3JFYWNoKGZ1bmN0aW9uKHVlLF9lKXt5LnJvd0hlaWdodHNNYXAuc2V0VmFsdWVB''@;'; put 'put ''dEluZGV4KF9lLHVlKX0pfSwhMCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe2dNKCR2KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFNuZX19LHtrZXk6IlBMVUdJTl9Q''@;'; put 'put ''UklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDMwfX1dKSxofShZcyk7ZnVuY3Rpb24gTW5lKGQsZyl7cmV0dXJuIGd8fChnPWQuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGcpfX0pKX1mdW5j''@;'; put 'put ''dGlvbiBOSWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12''@;'; put 'put ''YXIgbWR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnLGgsdix5LEMsSSl7KGZ1bmN0aW9uIHBkdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLnJvdz1nLHRoaXMu''@;'; put 'put ''Y29sPWgsdGhpcy5yb3dzcGFuPXYsdGhpcy5jb2xzcGFuPXksdGhpcy5yZW1vdmVkPSExLHRoaXMuY2VsbENvb3Jkc0ZhY3Rvcnk9Qyx0aGlzLmNlbGxSYW5nZUZhY3Rvcnk9SX1yZXR1cm4gZnVuY3Rpb24gZ2R0KGQsZyxoKXtnJiZOSWUoZC5wcm90b3R5cGUsZyksaCYmTkllKGQsaCksT2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6Im5vcm1hbGl6ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9aC5jb3VudFJvd3MoKSx5PWguY291bnRDb2xzKCk7dGhpcy5yb3c8MD90aGlzLnJvdz0wOnRoaXMucm93PnYtMSYmKHRoaXMu''@;'; put 'put ''cm93PXYtMSksdGhpcy5jb2w8MD90aGlzLmNvbD0wOnRoaXMuY29sPnktMSYmKHRoaXMuY29sPXktMSksdGhpcy5yb3crdGhpcy5yb3dzcGFuPnYtMSYmKHRoaXMucm93c3Bhbj12LXRoaXMucm93KSx0aGlzLmNvbCt0aGlzLmNvbHNwYW4+eS0xJiYodGhpcy5jb2xzcGFuPXktdGhpcy5jb2wp''@;'; put 'put ''fX0se2tleToiaW5jbHVkZXMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuIHRoaXMucm93PD1oJiZ0aGlzLmNvbDw9diYmdGhpcy5yb3crdGhpcy5yb3dzcGFuLTE+PWgmJnRoaXMuY29sK3RoaXMuY29sc3Bhbi0xPj12fX0se2tleToiaW5jbHVkZXNIb3Jpem9udGFsbHkiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKGgpe3JldHVybiB0aGlzLmNvbDw9aCYmdGhpcy5jb2wrdGhpcy5jb2xzcGFuLTE+PWh9fSx7a2V5OiJpbmNsdWRlc1ZlcnRpY2FsbHkiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnJvdzw9aCYmdGhpcy5yb3crdGhpcy5yb3dzcGFuLTE+PWh9fSx7a2V5OiJzaGlmdCIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT1oWzBdfHxoWzFdLEM9ditNYXRoLmFicyhoWzBdfHxoWzFdKS0xLEk9aFswXT8iY29sc3BhbiI6InJvd3NwYW4iLFo9aFswXT8iY29sIjoicm93Iix1ZT1NYXRoLm1pbih2LEMpLF9lPU1hdGgubWF4KHYsQyksQmU9dGhpc1taXSxOZT10aGlzW1pd''@;'; put 'put ''K3RoaXNbSV0tMTtpZihCZT49diYmKHRoaXNbWl0rPXkpLHk+MCl2PD1OZSYmdj5CZSYmKHRoaXNbSV0rPXkpO2Vsc2UgaWYoeTwwKXtpZih1ZTw9QmUmJl9lPj1OZSlyZXR1cm4gdGhpcy5yZW1vdmVkPSEwLCExO2lmKEJlPj11ZSYmQmU8PV9lKXt2YXIgS2U9X2UtQmUrMSxwdD1NYXRoLmFi''@;'; put 'put ''cyh5KS1LZTt0aGlzW1pdLT1wdCt5LHRoaXNbSV0tPUtlfWVsc2UgQmU8PXVlJiZOZT49X2U/dGhpc1tJXSs9eTpCZTw9dWUmJk5lPj11ZSYmTmU8X2UmJih0aGlzW0ldLT1OZS11ZSsxKX1yZXR1cm4hMH19LHtrZXk6ImlzRmFydGhlciIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtyZXR1cm4haHx8''@;'; put 'put ''KCJkb3duIj09PXY/aC5yb3craC5yb3dzcGFuLTE8dGhpcy5yb3crdGhpcy5yb3dzcGFuLTE6InVwIj09PXY/aC5yb3c+dGhpcy5yb3c6InJpZ2h0Ij09PXY/aC5jb2wraC5jb2xzcGFuLTE8dGhpcy5jb2wrdGhpcy5jb2xzcGFuLTE6ImxlZnQiPT09dj9oLmNvbD50aGlzLmNvbDpudWxsKX19''@;'; put 'put ''LHtrZXk6ImdldExhc3RSb3ciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucm93K3RoaXMucm93c3Bhbi0xfX0se2tleToiZ2V0TGFzdENvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb2wrdGhpcy5jb2xzcGFuLTF9fSx7a2V5OiJnZXRSYW5nZSIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gdGhpcy5jZWxsUmFuZ2VGYWN0b3J5KHRoaXMuY2VsbENvb3Jkc0ZhY3RvcnkodGhpcy5yb3csdGhpcy5jb2wpLHRoaXMuY2VsbENvb3Jkc0ZhY3RvcnkodGhpcy5yb3csdGhpcy5jb2wpLHRoaXMuY2VsbENvb3Jkc0ZhY3RvcnkodGhpcy5nZXRMYXN0Um93KCksdGhp''@;'; put 'put ''cy5nZXRMYXN0Q29sdW1uKCkpKX19XSxbe2tleToiTkVHQVRJVkVfVkFMVUVTX1dBUk5JTkciLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBQMihCSWV8fChCSWU9TW5lKFsiVGhlIG1lcmdlZCBjZWxsIGRlY2xhcmVkIHdpdGgge3JvdzogIiwiLCBjb2w6ICIsIiwgXG4gICAgICByb3dzcGFu''@;'; put 'put ''OiAiLCIsIGNvbHNwYW46ICIsIn0gY29udGFpbnMgbmVnYXRpdmUgdmFsdWVzLCB3aGljaCBpcyBcbiAgICAgIG5vdCBzdXBwb3J0ZWQuIEl0IHdpbGwgbm90IGJlIGFkZGVkIHRvIHRoZSBjb2xsZWN0aW9uLiJdLFsiVGhlIG1lcmdlZCBjZWxsIGRlY2xhcmVkIHdpdGgge3JvdzogIiwiLCBj''@;'; put 'put ''b2w6ICIsIixcXHgyMFxuICAgICAgcm93c3BhbjogIiwiLCBjb2xzcGFuOiAiLCJ9IGNvbnRhaW5zIG5lZ2F0aXZlIHZhbHVlcywgd2hpY2ggaXNcXHgyMFxuICAgICAgbm90IHN1cHBvcnRlZC4gSXQgd2lsbCBub3QgYmUgYWRkZWQgdG8gdGhlIGNvbGxlY3Rpb24uIl0pKSxoLnJvdyxoLmNv''@;'; put 'put ''bCxoLnJvd3NwYW4saC5jb2xzcGFuKX19LHtrZXk6IklTX09VVF9PRl9CT1VORFNfV0FSTklORyIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIFAyKFBJZXx8KFBJZT1NbmUoWyJUaGUgbWVyZ2VkIGNlbGwgZGVjbGFyZWQgYXQgWyIsIiwgIiwiXSBpcyBwb3NpdGlvbmVkIFxuICAgICAgKG9y''@;'; put 'put ''IHBvc2l0aW9uZWQgcGFydGlhbGx5KSBvdXRzaWRlIG9mIHRoZSB0YWJsZSByYW5nZS4gSXQgd2FzIG5vdCBhZGRlZCB0byB0aGUgdGFibGUsIHBsZWFzZSBmaXggeW91ciBzZXR1cC4iXSxbIlRoZSBtZXJnZWQgY2VsbCBkZWNsYXJlZCBhdCBbIiwiLCAiLCJdIGlzIHBvc2l0aW9uZWRcXHgy''@;'; put 'put ''MFxuICAgICAgKG9yIHBvc2l0aW9uZWQgcGFydGlhbGx5KSBvdXRzaWRlIG9mIHRoZSB0YWJsZSByYW5nZS4gSXQgd2FzIG5vdCBhZGRlZCB0byB0aGUgdGFibGUsIHBsZWFzZSBmaXggeW91ciBzZXR1cC4iXSkpLGgucm93LGguY29sKX19LHtrZXk6IklTX1NJTkdMRV9DRUxMIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbihoKXtyZXR1cm4gUDIoRkllfHwoRkllPU1uZShbIlRoZSBtZXJnZWQgY2VsbCBkZWNsYXJlZCBhdCBbIiwiLCAiLCddIGhhcyBib3RoICJyb3dzcGFuIiBcbiAgICAgIGFuZCAiY29sc3BhbiIgZGVjbGFyZWQgYXMgIjEiLCB3aGljaCBtYWtlcyBpdCBhIHNpbmdsZSBjZWxsLiBJ''@;'; put 'put ''dCBjYW5ub3QgYmUgYWRkZWQgdG8gdGhlIGNvbGxlY3Rpb24uJ10sWyJUaGUgbWVyZ2VkIGNlbGwgZGVjbGFyZWQgYXQgWyIsIiwgIiwnXSBoYXMgYm90aCAicm93c3BhbiJcXHgyMFxuICAgICAgYW5kICJjb2xzcGFuIiBkZWNsYXJlZCBhcyAiMSIsIHdoaWNoIG1ha2VzIGl0IGEgc2luZ2xl''@;'; put 'put ''IGNlbGwuIEl0IGNhbm5vdCBiZSBhZGRlZCB0byB0aGUgY29sbGVjdGlvbi4nXSkpLGgucm93LGguY29sKX19LHtrZXk6IlpFUk9fU1BBTl9XQVJOSU5HIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gUDIoSEllfHwoSEllPU1uZShbIlRoZSBtZXJnZWQgY2VsbCBkZWNsYXJlZCBhdCBbIiwi''@;'; put 'put ''LCAiLCddIGhhcyAicm93c3BhbiIgXG4gICAgICBvciAiY29sc3BhbiIgZGVjbGFyZWQgYXMgIjAiLCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkLiBJdCBjYW5ub3QgYmUgYWRkZWQgdG8gdGhlIGNvbGxlY3Rpb24uJ10sWyJUaGUgbWVyZ2VkIGNlbGwgZGVjbGFyZWQgYXQgWyIsIiwgIiwnXSBo''@;'; put 'put ''YXMgInJvd3NwYW4iXFx4MjBcbiAgICAgIG9yICJjb2xzcGFuIiBkZWNsYXJlZCBhcyAiMCIsIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQuIEl0IGNhbm5vdCBiZSBhZGRlZCB0byB0aGUgY29sbGVjdGlvbi4nXSkpLGgucm93LGguY29sKX19LHtrZXk6ImNvbnRhaW5zTmVnYXRpdmVWYWx1ZXMi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBoLnJvdzwwfHxoLmNvbDwwfHxoLnJvd3NwYW48MHx8aC5jb2xzcGFuPDB9fSx7a2V5OiJpc1NpbmdsZUNlbGwiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiAxPT09aC5jb2xzcGFuJiYxPT09aC5yb3dzcGFufX0se2tleToiY29udGFpbnNaZXJv''@;'; put 'put ''U3BhbiIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIDA9PT1oLmNvbHNwYW58fDA9PT1oLnJvd3NwYW59fSx7a2V5OiJpc091dE9mQm91bmRzIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7cmV0dXJuIGgucm93PDB8fGguY29sPDB8fGgucm93Pj12fHxoLnJvdytoLnJvd3NwYW4tMT49dnx8aC5j''@;'; put 'put ''b2w+PXl8fGguY29sK2guY29sc3Bhbi0xPj15fX1dKSxkfSgpO2NvbnN0IEhnPW1kdDtmdW5jdGlvbiBDZ2UoZCxnLGgsdil7Zz9nLnJvdz09PWgmJmcuY29sPT09dj8oZC5zZXRBdHRyaWJ1dGUoInJvd3NwYW4iLGcucm93c3Bhbi50b1N0cmluZygpKSxkLnNldEF0dHJpYnV0ZSgiY29sc3Bh''@;'; put 'put ''biIsZy5jb2xzcGFuLnRvU3RyaW5nKCkpKTooZC5yZW1vdmVBdHRyaWJ1dGUoInJvd3NwYW4iKSxkLnJlbW92ZUF0dHJpYnV0ZSgiY29sc3BhbiIpLGQuc3R5bGUuZGlzcGxheT0ibm9uZSIpOihkLnJlbW92ZUF0dHJpYnV0ZSgicm93c3BhbiIpLGQucmVtb3ZlQXR0cmlidXRlKCJjb2xzcGFu''@;'; put 'put ''IiksZC5zdHlsZS5kaXNwbGF5PSIiKX12YXIgVkllO2Z1bmN0aW9uIGpJZShkKXtyZXR1cm4gZnVuY3Rpb24gYmR0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGtnZShkKX0oZCl8fGZ1bmN0aW9uIHdkdChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtT''@;'; put 'put ''eW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiB5ZHQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIGtnZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChk''@;'; put 'put ''KS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQp''@;'; put 'put ''P0FycmF5JC8udGVzdChoKSlyZXR1cm4ga2dlKGQsZyl9fShkKXx8ZnVuY3Rpb24gQWR0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVj''@;'; put 'put ''dHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24ga2dlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24g''@;'; put 'put ''WkllKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19dmFyIGtk''@;'; put 'put ''dD1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7KGZ1bmN0aW9uIF9kdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx0aGlzLnBsdWdpbj1nLHRoaXMubWVyZ2VkQ2VsbHM9''@;'; put 'put ''W10sdGhpcy5ob3Q9Zy5ob3R9cmV0dXJuIGZ1bmN0aW9uIENkdChkLGcsaCl7ZyYmWkllKGQucHJvdG90eXBlLGcpLGgmJlpJZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJnZXQiLHZhbHVlOmZ1bmN0aW9uKGgsdil7''@;'; put 'put ''dmFyIEM9ITE7cmV0dXJuIFVyKHRoaXMubWVyZ2VkQ2VsbHMsZnVuY3Rpb24oSSl7cmV0dXJuIShJLnJvdzw9aCYmSS5yb3crSS5yb3dzcGFuLTE+PWgmJkkuY29sPD12JiZJLmNvbCtJLmNvbHNwYW4tMT49diYmKEM9SSwxKSl9KSxDfX0se2tleToiZ2V0QnlSYW5nZSIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oaCl7dmFyIHk9ITE7cmV0dXJuIFVyKHRoaXMubWVyZ2VkQ2VsbHMsZnVuY3Rpb24oQyl7cmV0dXJuIShDLnJvdzw9aC5mcm9tLnJvdyYmQy5yb3crQy5yb3dzcGFuLTE+PWgudG8ucm93JiZDLmNvbDw9aC5mcm9tLmNvbCYmQy5jb2wrQy5jb2xzcGFuLTE+PWgudG8uY29sKXx8KHk9Qyl9''@;'; put 'put ''KSx5fX0se2tleToiZ2V0V2l0aGluUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMseT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLEM9dGhpcy5tZXJnZWRDZWxscyxJPVtdLFo9aDtpZighWi5pbmNsdWRlc1JhbmdlKXt2''@;'; put 'put ''YXIgdWU9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoWi5mcm9tLnJvdyxaLmZyb20uY29sKSxfZT10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhaLnRvLnJvdyxaLnRvLmNvbCk7Wj10aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKHVlLHVlLF9lKX1yZXR1cm4gVXIoQyxmdW5jdGlvbihC''@;'; put 'put ''ZSl7dmFyIE5lPXYuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKEJlLnJvdyxCZS5jb2wpLEtlPXYuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKEJlLnJvdytCZS5yb3dzcGFuLTEsQmUuY29sK0JlLmNvbHNwYW4tMSkscHQ9di5ob3QuX2NyZWF0ZUNlbGxSYW5nZShOZSxOZSxLZSk7eT9aLm92ZXJsYXBz''@;'; put 'put ''KHB0KSYmSS5wdXNoKEJlKTpaLmluY2x1ZGVzUmFuZ2UocHQpJiZJLnB1c2goQmUpfSksISFJLmxlbmd0aCYmSX19LHtrZXk6ImFkZCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcy5tZXJnZWRDZWxscyx5PWgucm93LEM9aC5jb2wsdWU9bmV3IEhnKHksQyxoLnJvd3NwYW4saC5jb2xz''@;'; put 'put ''cGFuLHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzLHRoaXMuaG90Ll9jcmVhdGVDZWxsUmFuZ2UpLF9lPXRoaXMuZ2V0KHksQyksQmU9dGhpcy5pc092ZXJsYXBwaW5nKHVlKTtyZXR1cm4gX2V8fEJlPyhsMShkLklTX09WRVJMQVBQSU5HX1dBUk5JTkcodWUpKSwhMSk6KHRoaXMuaG90JiZ1''@;'; put 'put ''ZS5ub3JtYWxpemUodGhpcy5ob3QpLHYucHVzaCh1ZSksdWUpfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PXRoaXMubWVyZ2VkQ2VsbHMsQz10aGlzLmdldChoLHYpLEk9Qz90aGlzLm1lcmdlZENlbGxzLmluZGV4T2YoQyk6LTE7cmV0dXJuISghQ3x8LTE9PT1J''@;'; put 'put ''KSYmKHkuc3BsaWNlKEksMSksQyl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLHk9W10sQz1bXTtVcih0aGlzLm1lcmdlZENlbGxzLGZ1bmN0aW9uKEkpe3ZhciBaPWguaG90LmdldENlbGwoSS5yb3csSS5jb2wpO1omJnkucHVzaChbWixoLmdldChJLnJvdyxJ''@;'; put 'put ''LmNvbCksSS5yb3csSS5jb2xdKX0pLHRoaXMubWVyZ2VkQ2VsbHMubGVuZ3RoPTAsVXIoeSxmdW5jdGlvbihJLFope2lhKDAsSS5yb3dzcGFuLTEsZnVuY3Rpb24odWUpe2lhKDAsSS5jb2xzcGFuLTEsZnVuY3Rpb24oX2Upe2lmKDAhPT1fZXx8MCE9PXVlKXt2YXIgQmU9aC5ob3QuZ2V0Q2Vs''@;'; put 'put ''bChJLnJvdyt1ZSxJLmNvbCtfZSk7QmUmJkMucHVzaChbQmUsbnVsbCxudWxsLG51bGxdKX19KX0pLHlbWl1bMV09bnVsbH0pLFVyKHksZnVuY3Rpb24oSSl7Q2dlLmFwcGx5KHZvaWQgMCxqSWUoSSkpfSksVXIoQyxmdW5jdGlvbihJKXtDZ2UuYXBwbHkodm9pZCAwLGpJZShJKSl9KX19LHtr''@;'; put 'put ''ZXk6ImlzT3ZlcmxhcHBpbmciLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXMseT10aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKDAsMCksdGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoaC5yb3csaC5jb2wpLHRoaXMuaG90Ll9jcmVhdGVD''@;'; put 'put ''ZWxsQ29vcmRzKGgucm93K2gucm93c3Bhbi0xLGguY29sK2guY29sc3Bhbi0xKSksQz0hMTtyZXR1cm4gVXIodGhpcy5tZXJnZWRDZWxscyxmdW5jdGlvbihJKXtyZXR1cm4hdi5ob3QuX2NyZWF0ZUNlbGxSYW5nZSh2LmhvdC5fY3JlYXRlQ2VsbENvb3JkcygwLDApLHYuaG90Ll9jcmVhdGVD''@;'; put 'put ''ZWxsQ29vcmRzKEkucm93LEkuY29sKSx2LmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhJLnJvdytJLnJvd3NwYW4tMSxJLmNvbCtJLmNvbHNwYW4tMSkpLm92ZXJsYXBzKHkpfHwoQz0hMCwhMSl9KSxDfX0se2tleToiaXNGaXJzdFJlbmRlcmFibGVNZXJnZWRDZWxsIix2YWx1ZTpmdW5jdGlvbiho''@;'; put 'put ''LHYpe3ZhciB5PXRoaXMuZ2V0KGgsdik7cmV0dXJuIHkmJnRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCh5LnJvdywxKT09PWgmJnRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCh5LmNvbCwxKT09PXZ9fSx7''@;'; put 'put ''a2V5OiJnZXRGaXJzdFJlbmRlcmFibGVDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHk9dGhpcy5nZXQoaCx2KTtpZigheXx8dGhpcy5pc0ZpcnN0UmVuZGVyYWJsZU1lcmdlZENlbGwoaCx2KSlyZXR1cm4gdGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoaCx2KTt2YXIgQz10aGlz''@;'; put 'put ''LmhvdC5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoeS5yb3csMSksST10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoeS5jb2wsMSk7cmV0dXJuIHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKEMsSSl9fSx7a2V5OiJz''@;'; put 'put ''aGlmdENvbGxlY3Rpb25zIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7dmFyIEM9dGhpcyxJPVswLDBdO3N3aXRjaChoKXtjYXNlInJpZ2h0IjpJWzBdKz15O2JyZWFrO2Nhc2UibGVmdCI6SVswXS09eTticmVhaztjYXNlImRvd24iOklbMV0rPXk7YnJlYWs7Y2FzZSJ1cCI6SVsxXS09eX1Vcih0''@;'; put 'put ''aGlzLm1lcmdlZENlbGxzLGZ1bmN0aW9uKFope1ouc2hpZnQoSSx2KX0pLHNlZSh0aGlzLm1lcmdlZENlbGxzLmxlbmd0aC0xLDAsZnVuY3Rpb24oWil7dmFyIHVlPUMubWVyZ2VkQ2VsbHNbWl07dWUmJnVlLnJlbW92ZWQmJkMubWVyZ2VkQ2VsbHMuc3BsaWNlKEMubWVyZ2VkQ2VsbHMuaW5k''@;'; put 'put ''ZXhPZih1ZSksMSl9KX19XSxbe2tleToiSVNfT1ZFUkxBUFBJTkdfV0FSTklORyIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIFAyKFZJZXx8KFZJZT1mdW5jdGlvbiB2ZHQoZCxnKXtyZXR1cm4gZ3x8KGc9ZC5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGll''@;'; put 'put ''cyhkLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUoZyl9fSkpfShbIlRoZSBtZXJnZWQgY2VsbCBkZWNsYXJlZCBhdCBbIiwiLCAiLCJdLCBvdmVybGFwcyBcbiAgICAgIHdpdGggdGhlIG90aGVyIGRlY2xhcmVkIG1lcmdlZCBjZWxsLiBUaGUgb3ZlcmxhcHBpbmcgbWVyZ2VkIGNlbGwgd2Fz''@;'; put 'put ''IG5vdCBhZGRlZCB0byB0aGUgdGFibGUsIHBsZWFzZSBcbiAgICAgIGZpeCB5b3VyIHNldHVwLiJdLFsiVGhlIG1lcmdlZCBjZWxsIGRlY2xhcmVkIGF0IFsiLCIsICIsIl0sIG92ZXJsYXBzXFx4MjBcbiAgICAgIHdpdGggdGhlIG90aGVyIGRlY2xhcmVkIG1lcmdlZCBjZWxsLiBUaGUgb3Zl''@;'; put 'put ''cmxhcHBpbmcgbWVyZ2VkIGNlbGwgd2FzIG5vdCBhZGRlZCB0byB0aGUgdGFibGUsIHBsZWFzZVxceDIwXG4gICAgICBmaXggeW91ciBzZXR1cC4iXSkpLGgucm93LGguY29sKX19XSksZH0oKTtjb25zdCBTZHQ9a2R0O2Z1bmN0aW9uIG1NKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIFRkdChkKXtp''@;'; put 'put ''ZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBkfShkKXx8ZnVuY3Rpb24geGR0KGQsZyl7dmFyIGg9bnVsbD09ZD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZkW1N5bWJvbC5pdGVyYXRvcl18fGRbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1oKXt2YXIgSSxaLHY9W10seT0hMCxD''@;'; put 'put ''PSExO3RyeXtmb3IoaD1oLmNhbGwoZCk7ISh5PShJPWgubmV4dCgpKS5kb25lKSYmKHYucHVzaChJLnZhbHVlKSwhZ3x8di5sZW5ndGghPT1nKTt5PSEwKTt9Y2F0Y2godWUpe0M9ITAsWj11ZX1maW5hbGx5e3RyeXsheSYmbnVsbCE9aC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihD''@;'; put 'put ''KXRocm93IFp9fXJldHVybiB2fX0oZCxnKXx8ZnVuY3Rpb24gRWR0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiB6SWUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0''@;'; put 'put ''cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIHpJZShkLGcpfX0oZCxn''@;'; put 'put ''KXx8ZnVuY3Rpb24gTWR0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9y''@;'; put 'put ''XSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiB6SWUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBHSWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3Ro''@;'; put 'put ''O2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgTGR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnKXsoZnVu''@;'; put 'put ''Y3Rpb24gSWR0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMucGx1Z2luPWcsdGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb249dGhpcy5wbHVnaW4ubWVyZ2VkQ2Vs''@;'; put 'put ''bHNDb2xsZWN0aW9uLHRoaXMuY3VycmVudEZpbGxEYXRhPW51bGx9cmV0dXJuIGZ1bmN0aW9uIERkdChkLGcsaCl7ZyYmR0llKGQucHJvdG90eXBlLGcpLGgmJkdJZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJjb3Jy''@;'; put 'put ''ZWN0U2VsZWN0aW9uQXJlYVNpemUiLHZhbHVlOmZ1bmN0aW9uKGgpe2lmKGhbMF09PT1oWzJdJiZoWzFdPT09aFszXSl7dmFyIHY9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KGhbMF0saFsxXSk7diYmKGhbMl09aFswXSt2LnJvd3NwYW4tMSxoWzNdPWhbMV0rdi5jb2xzcGFuLTEp''@;'; put 'put ''fX19LHtrZXk6ImdldERpcmVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtyZXR1cm4gdlswXT09PWhbMF0mJnZbMV09PT1oWzFdJiZ2WzNdPT09aFszXT8iZG93biI6dlsyXT09PWhbMl0mJnZbMV09PT1oWzFdJiZ2WzNdPT09aFszXT8idXAiOnZbMV09PT1oWzFdJiZ2WzJdPT09aFsyXT8i''@;'; put 'put ''cmlnaHQiOiJsZWZ0In19LHtrZXk6InNuYXBEcmFnQXJlYSIsdmFsdWU6ZnVuY3Rpb24oaCx2LHksQyl7dmFyIEk9di5zbGljZSgwKSxaPXRoaXMuZ2V0QXV0b2ZpbGxTaXplKGgsdix5KSx1ZT1tTShoLDQpLF9lPXVlWzBdLEJlPXVlWzFdLE5lPXVlWzJdLEtlPXVlWzNdLE90PVsidXAiLCJk''@;'; put 'put ''b3duIl0uaW5kZXhPZih5KT4tMT9OZS1fZSsxOktlLUJlKzEsZm49Wi1NYXRoLmZsb29yKFovT3QpKk90LExuPXRoaXMuZ2V0RmFydGhlc3RDb2xsZWN0aW9uKGgsdix5LEMpO2lmKExuKWlmKCJkb3duIj09PXkpe3ZhciBpcj1Mbi5yb3crTG4ucm93c3Bhbi1fZS1mbjtJWzJdK2lyPj10aGlz''@;'; put 'put ''LnBsdWdpbi5ob3QuY291bnRSb3dzKCk/SVsyXS09Zm46SVsyXSs9Zm4/aXI6MH1lbHNlIGlmKCJyaWdodCI9PT15KXt2YXIgU3I9TG4uY29sK0xuLmNvbHNwYW4tQmUtZm47SVszXStTcj49dGhpcy5wbHVnaW4uaG90LmNvdW50Q29scygpP0lbM10tPWZuOklbM10rPWZuP1NyOjB9ZWxzZSBp''@;'; put 'put ''ZigidXAiPT09eSl7dmFyIFFyPU5lLWZuLUxuLnJvdysxO0lbMF0rUXI8MD9JWzBdKz1mbjpJWzBdLT1mbj9RcjowfWVsc2UgaWYoImxlZnQiPT09eSl7dmFyIEtpPUtlLWZuLUxuLmNvbCsxO0lbMV0rS2k8MD9JWzFdKz1mbjpJWzFdLT1mbj9LaTowfXJldHVybiB0aGlzLnVwZGF0ZUN1cnJl''@;'; put 'put ''bnRGaWxsQ2FjaGUoe2Jhc2VBcmVhOmgsZHJhZ0RpcmVjdGlvbjp5LGZvdW5kTWVyZ2VkQ2VsbHM6QyxmaWxsU2l6ZTpaLGRyYWdBcmVhOkksY3ljbGVMZW5ndGg6T3R9KSxJfX0se2tleToidXBkYXRlQ3VycmVudEZpbGxDYWNoZSIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5jdXJyZW50Rmls''@;'; put 'put ''bERhdGF8fCh0aGlzLmN1cnJlbnRGaWxsRGF0YT17fSksSTEodGhpcy5jdXJyZW50RmlsbERhdGEsaCl9fSx7a2V5OiJnZXRBdXRvZmlsbFNpemUiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgQz1tTShoLDQpLEk9Q1swXSxaPUNbMV0sdWU9Q1syXSxfZT1DWzNdLEJlPW1NKHYsNCksTmU9''@;'; put 'put ''QmVbMF0sS2U9QmVbMV0scHQ9QmVbMl0sT3Q9QmVbM107c3dpdGNoKHkpe2Nhc2UidXAiOnJldHVybiBJLU5lO2Nhc2UiZG93biI6cmV0dXJuIHB0LXVlO2Nhc2UibGVmdCI6cmV0dXJuIFotS2U7Y2FzZSJyaWdodCI6cmV0dXJuIE90LV9lO2RlZmF1bHQ6cmV0dXJuIG51bGx9fX0se2tleToi''@;'; put 'put ''Z2V0RHJhZ0FyZWEiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgQz1tTShoLDQpLEk9Q1swXSxaPUNbMV0sdWU9Q1syXSxfZT1DWzNdLEJlPW1NKHYsNCksTmU9QmVbMF0sS2U9QmVbMV0scHQ9QmVbMl0sT3Q9QmVbM107c3dpdGNoKHkpe2Nhc2UidXAiOnJldHVybltOZSxLZSxJLTEsX2Vd''@;'; put 'put ''O2Nhc2UiZG93biI6cmV0dXJuW3VlKzEsWixwdCxfZV07Y2FzZSJsZWZ0IjpyZXR1cm5bTmUsS2UsdWUsWi0xXTtjYXNlInJpZ2h0IjpyZXR1cm5bSSxfZSsxLHB0LE90XTtkZWZhdWx0OnJldHVybiBudWxsfX19LHtrZXk6ImdldEZhcnRoZXN0Q29sbGVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''aCx2LHksQyl7dmFyIEk9bU0oaCw0KSxaPUlbMF0sdWU9SVsxXSxfZT1JWzJdLEJlPUlbM10sTmU9WyJ1cCIsImRvd24iXS5pbmRleE9mKHkpPi0xLEtlPU5lP19lOkJlLHB0PU5lP1o6dWUsT3Q9dGhpcy5nZXRBdXRvZmlsbFNpemUoaCx2LHkpLCR0PU5lP19lLVorMTpCZS11ZSsxLExuPU90''@;'; put 'put ''LU1hdGguZmxvb3IoT3QvJHQpKiR0LGlyPW51bGwsbXI9bnVsbCxTcj1udWxsO3N3aXRjaCh5KXtjYXNlInVwIjppcj0iaW5jbHVkZXNWZXJ0aWNhbGx5IixTcj1LZS1MbisxO2JyZWFrO2Nhc2UibGVmdCI6aXI9ImluY2x1ZGVzSG9yaXpvbnRhbGx5IixTcj1LZS1MbisxO2JyZWFrO2Nhc2Ui''@;'; put 'put ''ZG93biI6aXI9ImluY2x1ZGVzVmVydGljYWxseSIsU3I9cHQrTG4tMTticmVhaztjYXNlInJpZ2h0Ijppcj0iaW5jbHVkZXNIb3Jpem9udGFsbHkiLFNyPXB0K0xuLTF9cmV0dXJuIFVyKEMsZnVuY3Rpb24od3Ipe3dyW2lyXShTcikmJndyLmlzRmFydGhlcihtcix5KSYmKG1yPXdyKX0pLG1y''@;'; put 'put ''fX0se2tleToicmVjcmVhdGVBZnRlckRhdGFQb3B1bGF0aW9uIix2YWx1ZTpmdW5jdGlvbihoKXtpZih0aGlzLmN1cnJlbnRGaWxsRGF0YSl7dmFyIHY9dGhpcy5nZXRSYW5nZUZyb21DaGFuZ2VzKGgpLHk9dGhpcy5jdXJyZW50RmlsbERhdGEuZm91bmRNZXJnZWRDZWxscyxDPXRoaXMuY3Vy''@;'; put 'put ''cmVudEZpbGxEYXRhLmRyYWdEaXJlY3Rpb24sST1mdW5jdGlvbihLZSxwdCl7c3dpdGNoKEMpe2Nhc2UidXAiOnJldHVybiBLZS5yb3ctcHQ+PXYuZnJvbS5yb3c7Y2FzZSJkb3duIjpyZXR1cm4gS2Uucm93K0tlLnJvd3NwYW4tMStwdDw9di50by5yb3c7Y2FzZSJsZWZ0IjpyZXR1cm4gS2Uu''@;'; put 'put ''Y29sLXB0Pj12LmZyb20uY29sdW1uO2Nhc2UicmlnaHQiOnJldHVybiBLZS5jb2wrS2UuY29sc3Bhbi0xK3B0PD12LnRvLmNvbHVtbjtkZWZhdWx0OnJldHVybiBudWxsfX0sWj0wLHVlPW51bGwsX2U9MTtkb3tmb3IodmFyIEJlPTA7QmU8eS5sZW5ndGg7QmUrPTEpe2lmKEkodWU9eVtCZV0s''@;'; put 'put ''Wj1fZSp0aGlzLmN1cnJlbnRGaWxsRGF0YS5jeWNsZUxlbmd0aCkpc3dpdGNoKEMpe2Nhc2UidXAiOnRoaXMucGx1Z2luLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5hZGQoe3Jvdzp1ZS5yb3ctWixyb3dzcGFuOnVlLnJvd3NwYW4sY29sOnVlLmNvbCxjb2xzcGFuOnVlLmNvbHNwYW59KTticmVh''@;'; put 'put ''aztjYXNlImRvd24iOnRoaXMucGx1Z2luLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5hZGQoe3Jvdzp1ZS5yb3crWixyb3dzcGFuOnVlLnJvd3NwYW4sY29sOnVlLmNvbCxjb2xzcGFuOnVlLmNvbHNwYW59KTticmVhaztjYXNlImxlZnQiOnRoaXMucGx1Z2luLm1lcmdlZENlbGxzQ29sbGVjdGlv''@;'; put 'put ''bi5hZGQoe3Jvdzp1ZS5yb3cscm93c3Bhbjp1ZS5yb3dzcGFuLGNvbDp1ZS5jb2wtWixjb2xzcGFuOnVlLmNvbHNwYW59KTticmVhaztjYXNlInJpZ2h0Ijp0aGlzLnBsdWdpbi5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uYWRkKHtyb3c6dWUucm93LHJvd3NwYW46dWUucm93c3Bhbixjb2w6dWUu''@;'; put 'put ''Y29sK1osY29sc3Bhbjp1ZS5jb2xzcGFufSl9QmU9PT15Lmxlbmd0aC0xJiYoX2UrPTEpfX13aGlsZShJKHVlLFopKTt0aGlzLmN1cnJlbnRGaWxsRGF0YT1udWxsLHRoaXMucGx1Z2luLmhvdC5yZW5kZXIoKX19fSx7a2V5OiJnZXRSYW5nZUZyb21DaGFuZ2VzIix2YWx1ZTpmdW5jdGlvbiho''@;'; put 'put ''KXt2YXIgdj10aGlzLHk9e21pbjpudWxsLG1heDpudWxsfSxDPXttaW46bnVsbCxtYXg6bnVsbH07cmV0dXJuIFVyKGgsZnVuY3Rpb24oSSl7dmFyIFo9SVswXSx1ZT12LnBsdWdpbi5ob3QucHJvcFRvQ29sKElbMV0pOyhudWxsPT09eS5taW58fFo8eS5taW4pJiYoeS5taW49WiksKG51bGw9''@;'; put 'put ''PT15Lm1heHx8Wj55Lm1heCkmJih5Lm1heD1aKSwobnVsbD09PUMubWlufHx1ZTxDLm1pbikmJihDLm1pbj11ZSksKG51bGw9PT1DLm1heHx8dWU+Qy5tYXgpJiYoQy5tYXg9dWUpfSkse2Zyb206e3Jvdzp5Lm1pbixjb2x1bW46Qy5taW59LHRvOntyb3c6eS5tYXgsY29sdW1uOkMubWF4fX19''@;'; put 'put ''fSx7a2V5OiJkcmFnQXJlYU92ZXJsYXBzQ29sbGVjdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgST1tTSh0aGlzLmdldERyYWdBcmVhKGgsdix5KSw0KSxfZT1JWzJdLEJlPUlbM10sTmU9dGhpcy5wbHVnaW4uaG90Ll9jcmVhdGVDZWxsQ29vcmRzKElbMF0sSVsxXSksS2U9dGhp''@;'; put 'put ''cy5wbHVnaW4uaG90Ll9jcmVhdGVDZWxsQ29vcmRzKF9lLEJlKSxwdD10aGlzLnBsdWdpbi5ob3QuX2NyZWF0ZUNlbGxSYW5nZShOZSxOZSxLZSk7cmV0dXJuISF0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXRXaXRoaW5SYW5nZShwdCwhMCl9fV0pLGR9KCk7Y29uc3QgT2R0PUxkdDtm''@;'; put 'put ''dW5jdGlvbiBXSWUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYp''@;'; put 'put ''fX12YXIgUGR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnKXsoZnVuY3Rpb24gUmR0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLHRoaXMucGx1Z2luPWcsdGhpcy5ob3Q9''@;'; put 'put ''Zy5ob3QsdGhpcy5mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbENsYXNzTmFtZT0iZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwifXJldHVybiBmdW5jdGlvbiBCZHQoZCxnLGgpe2cmJldJZShkLnByb3RvdHlwZSxnKSxoJiZXSWUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBl''@;'; put 'put ''Iix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToic25hcERlbHRhIix2YWx1ZTpmdW5jdGlvbihoLHYseSl7dmFyIEM9di50byxaPUMuY29sK2guY29sO2gucm93P3RoaXMuanVtcE92ZXJNZXJnZWRDZWxsKGgseSxDLnJvdytoLnJvdyk6aC5jb2wmJnRoaXMuanVtcE92ZXJNZXJnZWRDZWxsKGgs''@;'; put 'put ''eSxaKX19LHtrZXk6Imp1bXBPdmVyTWVyZ2VkQ2VsbCIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3ZhciBDPWgucm93fHxoLmNvbCxJPW51bGwsWj1udWxsLHVlPW51bGw7aC5yb3c/KEk9di5pbmNsdWRlc1ZlcnRpY2FsbHkoeSksWj12LnJvdyx1ZT12LmdldExhc3RSb3coKSk6aC5jb2wmJihJ''@;'; put 'put ''PXYuaW5jbHVkZXNIb3Jpem9udGFsbHkoeSksWj12LmNvbCx1ZT12LmdldExhc3RDb2x1bW4oKSksMCE9PUMmJihDPjA/SSYmeSE9PVomJihDKz11ZS15KzEpOkkmJnkhPT11ZSYmKEMtPXktWisxKSxoLnJvdz9oLnJvdz1DOmguY29sJiYoaC5jb2w9QykpfX0se2tleToiZ2V0VXBkYXRlZFNl''@;'; put 'put ''bGVjdGlvblJhbmdlIix2YWx1ZTpmdW5jdGlvbihoLHYpe3JldHVybiB0aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKGguaGlnaGxpZ2h0LGguZnJvbSx0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhoLnRvLnJvdyt2LnJvdyxoLnRvLmNvbCt2LmNvbCkpfX0se2tleToiZ2V0U2VsZWN0ZWRN''@;'; put 'put ''ZXJnZWRDZWxsQ2xhc3NOYW1lIix2YWx1ZTpmdW5jdGlvbihoLHYseSxDKXt2YXIgST1NYXRoLm1pbih5WzBdLHlbMl0pLFo9TWF0aC5taW4oeVsxXSx5WzNdKSx1ZT1NYXRoLm1heCh5WzBdLHlbMl0pLF9lPU1hdGgubWF4KHlbMV0seVszXSk7aWYodm9pZCAwIT09QyYmdGhpcy5wbHVnaW4u''@;'; put 'put ''bWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmlzRmlyc3RSZW5kZXJhYmxlTWVyZ2VkQ2VsbChoLHYpKXt2YXIgTmU9dGhpcy5wbHVnaW4ubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChoLHYpO2lmKE5lKXt2YXIgS2U9TmUuZ2V0TGFzdFJvdygpLHB0PU5lLmdldExhc3RDb2x1bW4oKTtpZihJPD1O''@;'; put 'put ''ZS5yb3cmJlo8PU5lLmNvbCYmdWU+PUtlJiZfZT49cHQpcmV0dXJuIiIuY29uY2F0KHRoaXMuZnVsbHlTZWxlY3RlZE1lcmdlZENlbGxDbGFzc05hbWUsIi0iKS5jb25jYXQoQyk7aWYodGhpcy5wbHVnaW4uc2VsZWN0aW9uQ2FsY3VsYXRpb25zLmlzTWVyZ2VDZWxsRnVsbHlTZWxlY3RlZChO''@;'; put 'put ''ZSx0aGlzLnBsdWdpbi5ob3QuZ2V0U2VsZWN0ZWRSYW5nZSgpKSlyZXR1cm4iIi5jb25jYXQodGhpcy5mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbENsYXNzTmFtZSwiLW11bHRpcGxlIil9fX19LHtrZXk6ImlzTWVyZ2VDZWxsRnVsbHlTZWxlY3RlZCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIg''@;'; put 'put ''eT1bXTtpZighdnx8IWgpcmV0dXJuITE7Zm9yKHZhciBDPTA7QzxoLnJvd3NwYW47Qys9MSlmb3IodmFyIEk9MDtJPGguY29sc3BhbjtJKz0xKXkucHVzaCh0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhoLnJvdytDLGguY29sK0kpKTtmb3IodmFyIFo9MDtaPHkubGVuZ3RoO1orPTEpe2Zv''@;'; put 'put ''cih2YXIgdWU9W10sX2U9MDtfZTx2Lmxlbmd0aDtfZSs9MSl1ZVtfZV09dltfZV0uaW5jbHVkZXMoeVtaXSk7aWYoIXVlLmluY2x1ZGVzKCEwKSlyZXR1cm4hMX1yZXR1cm4hMH19LHtrZXk6ImdldFNlbGVjdGVkTWVyZ2VkQ2VsbENsYXNzTmFtZVRvUmVtb3ZlIix2YWx1ZTpmdW5jdGlvbigp''@;'; put 'put ''e2Zvcih2YXIgaD1bXSx2PTA7djw9Nzt2Kz0xKWgucHVzaCgiIi5jb25jYXQodGhpcy5mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbENsYXNzTmFtZSwiLSIpLmNvbmNhdCh2KSk7cmV0dXJuIGgucHVzaCgiIi5jb25jYXQodGhpcy5mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbENsYXNzTmFtZSwiLW11''@;'; put 'put ''bHRpcGxlIikpLGh9fV0pLGR9KCk7Y29uc3QgRmR0PVBkdDtmdW5jdGlvbiBTZ2UoZCl7cmV0dXJuKFNnZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3Jl''@;'; put 'put ''dHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIFlJZShkLGcpe3JldHVybiBmdW5jdGlvbiBqZHQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSly''@;'; put 'put ''ZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIFZkdChkLGcpe3ZhciBoPW51bGw9PWQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZFtTeW1ib2wuaXRlcmF0b3JdfHxkWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9aCl7dmFyIEksWix2PVtdLHk9ITAsQz0hMTt0cnl7Zm9yKGg9aC5jYWxs''@;'; put 'put ''KGQpOyEoeT0oST1oLm5leHQoKSkuZG9uZSkmJih2LnB1c2goSS52YWx1ZSksIWd8fHYubGVuZ3RoIT09Zyk7eT0hMCk7fWNhdGNoKHVlKXtDPSEwLFo9dWV9ZmluYWxseXt0cnl7IXkmJm51bGwhPWgucmV0dXJuJiZoLnJldHVybigpfWZpbmFsbHl7aWYoQyl0aHJvdyBafX1yZXR1cm4gdn19''@;'; put 'put ''KGQsZyl8fFFJZShkLGcpfHxmdW5jdGlvbiBOZHQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtT''@;'; put 'put ''eW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIFVJZShkKXtyZXR1cm4gZnVuY3Rpb24gR2R0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIE1nZShkKX0oZCl8fGZ1bmN0aW9uIHpkdChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtT''@;'; put 'put ''eW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxRSWUoZCl8fGZ1bmN0aW9uIFpkdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3Jk''@;'; put 'put ''ZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIFFJZShkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gTWdlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlw''@;'; put 'put ''ZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8''@;'; put 'put ''MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBNZ2UoZCxnKX19ZnVuY3Rpb24gTWdlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rp''@;'; put 'put ''b24gSkllKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVu''@;'; put 'put ''Y3Rpb24gbFIoKXtyZXR1cm4gbFI9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PVVkdChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1''@;'; put 'put ''cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sbFIuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFVkdChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9UXcoZCkpOyk7''@;'; put 'put ''cmV0dXJuIGR9ZnVuY3Rpb24gRWdlKGQsZyl7cmV0dXJuKEVnZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIFhkdChkLGcpe2lmKGcmJigib2JqZWN0''@;'; put 'put ''Ij09PVNnZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gWEllKGQpfWZ1bmN0aW9uIFhJZShk''@;'; put 'put ''KXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gUXcoZCl7cmV0dXJuKFF3PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Qu''@;'; put 'put ''Z2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9em8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZU1lcmdlQ2VsbHMiKSx6by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJN''@;'; put 'put ''ZXJnZUNlbGxzIiksem8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZVVubWVyZ2VDZWxscyIpLHpvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlclVubWVyZ2VDZWxscyIpO3ZhciB0RGUsUHo9Im1lcmdlQ2VsbHMiLEtJZT1uZXcgV2Vha01hcCwkSWU9UHoscWR0PWZ1bmN0''@;'; put 'put ''aW9uKGQpeyFmdW5jdGlvbiBRZHQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcu''@;'; put 'put ''cHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmRWdlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gSmR0KGQpe3ZhciBnPWZ1bmN0''@;'; put 'put ''aW9uIEtkdCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVl''@;'; put 'put ''T2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PVF3KGQpO2lmKGcpe3ZhciBDPVF3KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixh''@;'; put 'put ''cmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBYZHQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7cmV0dXJuIGZ1bmN0aW9uIFdkdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxs''@;'; put 'put ''IGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLHk9Zy5jYWxsKHRoaXMsdiksS0llLnNldChYSWUoeSkse2xhc3REZXNpcmVkQ29vcmRzOm51bGx9KSx5Lm1lcmdlZENlbGxzQ29sbGVjdGlvbj1udWxsLHkuYXV0b2ZpbGxDYWxjdWxhdGlvbnM9bnVsbCx5LnNlbGVjdGlvbkNhbGN1''@;'; put 'put ''bGF0aW9ucz1udWxsLHl9cmV0dXJuIGZ1bmN0aW9uIFlkdChkLGcsaCl7ZyYmSkllKGQucHJvdG90eXBlLGcpLGgmJkpJZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW1B6XX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuZW5hYmxlZHx8KHRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uPW5ldyBTZHQodGhpcyksdGhpcy5hdXRvZmlsbENhbGN1bGF0aW9u''@;'; put 'put ''cz1uZXcgT2R0KHRoaXMpLHRoaXMuc2VsZWN0aW9uQ2FsY3VsYXRpb25zPW5ldyBGZHQodGhpcyksdGhpcy5hZGRIb29rKCJhZnRlckluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckluaXQuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlUcmFuc2Zvcm1T''@;'; put 'put ''dGFydCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbk1vZGlmeVRyYW5zZm9ybVN0YXJ0LmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJNb2RpZnlUcmFuc2Zvcm1TdGFydCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyTW9kaWZ5VHJhbnNmb3JtU3RhcnQuYXBwbHko''@;'; put 'put ''eSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlUcmFuc2Zvcm1FbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25Nb2RpZnlUcmFuc2Zvcm1FbmQuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlHZXRDZWxsQ29vcmRzIixmdW5jdGlvbigpe3JldHVybiB5''@;'; put 'put ''Lm9uTW9kaWZ5R2V0Q2VsbENvb3Jkcy5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZVNldFJhbmdlU3RhcnQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVTZXRSYW5nZVN0YXJ0LmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlU2V0''@;'; put 'put ''UmFuZ2VTdGFydE9ubHkiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVTZXRSYW5nZVN0YXJ0LmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlU2V0UmFuZ2VFbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVTZXRSYW5nZUVuZC5hcHBseSh5LGFyZ3Vt''@;'; put 'put ''ZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVySXNNdWx0aXBsZVNlbGVjdGlvbiIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVySXNNdWx0aXBsZVNlbGVjdGlvbi5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyUmVuZGVyZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHku''@;'; put 'put ''b25BZnRlclJlbmRlcmVyLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIixmdW5jdGlvbigpe3JldHVybiB5LmFkZE1lcmdlQWN0aW9uc1RvQ29udGV4dE1lbnUuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29r''@;'; put 'put ''KCJhZnRlckdldENlbGxNZXRhIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJHZXRDZWxsTWV0YS5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyVmlld3BvcnRSb3dDYWxjdWxhdG9yT3ZlcnJpZGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlclZpZXdwb3J0''@;'; put 'put ''Um93Q2FsY3VsYXRvck92ZXJyaWRlLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJWaWV3cG9ydENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZSIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyVmlld3BvcnRDb2x1bW5DYWxjdWxhdG9yT3ZlcnJpZGUuYXBwbHkoeSxh''@;'; put 'put ''cmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlBdXRvZmlsbFJhbmdlIixmdW5jdGlvbigpe3JldHVybiB5Lm9uTW9kaWZ5QXV0b2ZpbGxSYW5nZS5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ3JlYXRlQ29sIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0''@;'; put 'put ''ZXJDcmVhdGVDb2wuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlclJlbW92ZUNvbCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyUmVtb3ZlQ29sLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJDcmVhdGVSb3ciLGZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIHkub25BZnRlckNyZWF0ZVJvdy5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyUmVtb3ZlUm93IixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJSZW1vdmVSb3cuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlckNoYW5nZSIsZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4geS5vbkFmdGVyQ2hhbmdlLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlRHJhd0JvcmRlcnMiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVEcmF3QXJlYUJvcmRlcnMuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRl''@;'; put 'put ''ckRyYXdTZWxlY3Rpb24iLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckRyYXdTZWxlY3Rpb24uYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVSZW1vdmVDZWxsQ2xhc3NOYW1lcyIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkJlZm9yZVJlbW92ZUNlbGxDbGFzc05h''@;'; put 'put ''bWVzLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlVW5kb1N0YWNrQ2hhbmdlIixmdW5jdGlvbihDLEkpe2lmKCJNZXJnZUNlbGxzIj09PUkpcmV0dXJuITF9KSx0aGlzLnJlZ2lzdGVyU2hvcnRjdXRzKCksbFIoUXcoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4i''@;'; put 'put ''LHRoaXMpLmNhbGwodGhpcykpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsZWFyQ29sbGVjdGlvbnMoKSx0aGlzLnVucmVnaXN0ZXJTaG9ydGN1dHMoKSx0aGlzLmhvdC5yZW5kZXIoKSxsUihRdyhoLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRo''@;'; put 'put ''aXMpLmNhbGwodGhpcyl9fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtQel07dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSx0aGlzLmdlbmVyYXRlRnJvbVNldHRpbmdzKHkpLGxSKFF3KGgu''@;'; put 'put ''cHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToidmFsaWRhdGVTZXR0aW5nIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz0hMDtyZXR1cm4hIXkmJihIZy5jb250YWluc05lZ2F0aXZlVmFsdWVzKHkpPyhsMShIZy5ORUdBVElWRV9WQUxVRVNfV0FSTklO''@;'; put 'put ''Ryh5KSksQz0hMSk6SGcuaXNPdXRPZkJvdW5kcyh5LHRoaXMuaG90LmNvdW50Um93cygpLHRoaXMuaG90LmNvdW50Q29scygpKT8obDEoSGcuSVNfT1VUX09GX0JPVU5EU19XQVJOSU5HKHkpKSxDPSExKTpIZy5pc1NpbmdsZUNlbGwoeSk/KGwxKEhnLklTX1NJTkdMRV9DRUxMKHkpKSxDPSEx''@;'; put 'put ''KTpIZy5jb250YWluc1plcm9TcGFuKHkpJiYobDEoSGcuWkVST19TUEFOX1dBUk5JTkcoeSkpLEM9ITEpLEMpfX0se2tleToiZ2VuZXJhdGVGcm9tU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXM7aWYoQXJyYXkuaXNBcnJheSh5KSl7dmFyIEksWj1bXTtVcih5LGZ1bmN0''@;'; put 'put ''aW9uKF9lKXtpZihDLnZhbGlkYXRlU2V0dGluZyhfZSkpe3ZhciBCZT1DLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhfZS5yb3csX2UuY29sKSxOZT1DLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhfZS5yb3crX2Uucm93c3Bhbi0xLF9lLmNvbCtfZS5jb2xzcGFuLTEpLEtlPUMuaG90Ll9jcmVhdGVD''@;'; put 'put ''ZWxsUmFuZ2UoQmUsQmUsTmUpO1oucHVzaChDLm1lcmdlUmFuZ2UoS2UsITAsITApKX19KSxaPVouZmlsdGVyKGZ1bmN0aW9uKF9lKXtyZXR1cm4hMCE9PV9lfSk7dmFyIHVlPXRoaXMuZ2V0QnVsa0NvbGxlY3Rpb25EYXRhKFopOyhJPXRoaXMuaG90KS5wb3B1bGF0ZUZyb21BcnJheS5hcHBs''@;'; put 'put ''eShJLFVJZSh1ZSkpfX19LHtrZXk6ImdldEJ1bGtDb2xsZWN0aW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEMsST10aGlzLmdldEJ1bGtDb2xsZWN0aW9uRGF0YVJhbmdlKHkpLHVlPShDPXRoaXMuaG90KS5nZXREYXRhLmFwcGx5KEMsVUllKEkpKS5zcGxpY2UoMCk7cmV0dXJuIFVy''@;'; put 'put ''KHksZnVuY3Rpb24oX2Upe3ZhciBCZT1ZSWUoX2UsMyksTmU9QmVbMF0sS2U9QmVbMV07VXIoQmVbMl0sZnVuY3Rpb24oT3QsJHQpe1VyKE90LGZ1bmN0aW9uKGZuLExuKXt1ZVtOZS1JWzBdKyR0XVtLZS1JWzFdK0xuXT1mbn0pfSl9KSxbSVswXSxJWzFdLHVlXX19LHtrZXk6ImdldEJ1bGtD''@;'; put 'put ''b2xsZWN0aW9uRGF0YVJhbmdlIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz1bMCwwXSxJPVswLDBdLFo9bnVsbCx1ZT1udWxsLF9lPW51bGw7cmV0dXJuIFVyKHksZnVuY3Rpb24oQmUpe1o9QmVbMF0sdWU9QmVbMV0sX2U9QmVbMl0sQ1swXT1NYXRoLm1pbihaLENbMF0pLENbMV09TWF0aC5t''@;'; put 'put ''aW4odWUsQ1sxXSksSVswXT1NYXRoLm1heChaK19lLmxlbmd0aC0xLElbMF0pLElbMV09TWF0aC5tYXgodWUrX2VbMF0ubGVuZ3RoLTEsSVsxXSl9KSxbXS5jb25jYXQoQyxJKX19LHtrZXk6ImNsZWFyQ29sbGVjdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tZXJnZWRDZWxsc0NvbGxl''@;'; put 'put ''Y3Rpb24uY2xlYXIoKX19LHtrZXk6ImNhbk1lcmdlUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07cmV0dXJuISFDfHx0aGlzLnZhbGlkYXRlU2V0dGluZyh5KX19LHtrZXk6InRvZ2ds''@;'; put 'put ''ZU1lcmdlT25TZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtpZih5KXt5LnNldERpcmVjdGlvbih0aGlzLmhvdC5pc1J0bCgpPyJORS1TVyI6Ik5XLVNFIik7dmFyIEM9eS5mcm9tLEk9eS50bzt0aGlzLnRvZ2dsZU1lcmdl''@;'; put 'put ''KHkpLHRoaXMuaG90LnNlbGVjdENlbGwoQy5yb3csQy5jb2wsSS5yb3csSS5jb2wsITEpfX19LHtrZXk6Im1lcmdlU2VsZWN0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0aGlzLmhvdC5n''@;'; put 'put ''ZXRTZWxlY3RlZFJhbmdlTGFzdCgpO2lmKHkpe3kuc2V0RGlyZWN0aW9uKHRoaXMuaG90LmlzUnRsKCk/Ik5FLVNXIjoiTlctU0UiKTt2YXIgQz15LmZyb20sST15LnRvO3RoaXMudW5tZXJnZVJhbmdlKHksITApLHRoaXMubWVyZ2VSYW5nZSh5KSx0aGlzLmhvdC5zZWxlY3RDZWxsKEMucm93''@;'; put 'put ''LEMuY29sLEkucm93LEkuY29sLCExKX19fSx7a2V5OiJ1bm1lcmdlU2VsZWN0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO2lmKHkp''@;'; put 'put ''e3ZhciBDPXkuZnJvbSxJPXkudG87dGhpcy51bm1lcmdlUmFuZ2UoeSwhMCksdGhpcy5ob3Quc2VsZWN0Q2VsbChDLnJvdyxDLmNvbCxJLnJvdyxJLmNvbCwhMSl9fX0se2tleToibWVyZ2VSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPWFyZ3VtZW50cy5sZW5ndGg+MSYm''@;'; put 'put ''dm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0sWj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLHVlPXkuZ2V0VG9wU3RhcnRDb3JuZXIoKSxfZT15LmdldEJvdHRvbUVuZENvcm5lcigpLEJlPXtyb3c6dWUucm93LGNvbDp1''@;'; put 'put ''ZS5jb2wscm93c3BhbjpfZS5yb3ctdWUucm93KzEsY29sc3BhbjpfZS5jb2wtdWUuY29sKzF9LE5lPVtdLEtlPW51bGw7aWYoIXRoaXMuY2FuTWVyZ2VSYW5nZShCZSxJKSlyZXR1cm4hMTt0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlTWVyZ2VDZWxscyIseSxJKSxpYSgwLEJlLnJvd3NwYW4t''@;'; put 'put ''MSxmdW5jdGlvbihPdCl7aWEoMCxCZS5jb2xzcGFuLTEsZnVuY3Rpb24oJHQpe3ZhciBmbj1udWxsO05lW090XXx8KE5lW090XT1bXSksMD09PU90JiYwPT09JHQ/Zm49Qy5ob3QuZ2V0RGF0YUF0Q2VsbChCZS5yb3csQmUuY29sKTpDLmhvdC5zZXRDZWxsTWV0YShCZS5yb3crT3QsQmUuY29s''@;'; put 'put ''KyR0LCJoaWRkZW4iLCEwKSxOZVtPdF1bJHRdPWZufSl9KSx0aGlzLmhvdC5zZXRDZWxsTWV0YShCZS5yb3csQmUuY29sLCJzcGFubmVkIiwhMCk7dmFyIHB0PXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmFkZChCZSk7cmV0dXJuIXB0fHwoWj9LZT1bQmUucm93LEJlLmNvbCxOZV06dGhp''@;'; put 'put ''cy5ob3QucG9wdWxhdGVGcm9tQXJyYXkoQmUucm93LEJlLmNvbCxOZSx2b2lkIDAsdm9pZCAwLHRoaXMucGx1Z2luTmFtZSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyTWVyZ2VDZWxscyIseSxCZSxJKSxLZSl9fSx7a2V5OiJ1bm1lcmdlUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBD''@;'; put 'put ''PXRoaXMsST1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLFo9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0V2l0aGluUmFuZ2UoeSk7IVp8fCh0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlVW5tZXJnZUNlbGxzIix5LEkpLFVyKFos''@;'; put 'put ''ZnVuY3Rpb24odWUpe0MubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLnJlbW92ZSh1ZS5yb3csdWUuY29sKSxpYSgwLHVlLnJvd3NwYW4tMSxmdW5jdGlvbihfZSl7aWEoMCx1ZS5jb2xzcGFuLTEsZnVuY3Rpb24oQmUpe0MuaG90LnJlbW92ZUNlbGxNZXRhKHVlLnJvdytfZSx1ZS5jb2wrQmUsImhp''@;'; put 'put ''ZGRlbiIpfSl9KSxDLmhvdC5yZW1vdmVDZWxsTWV0YSh1ZS5yb3csdWUuY29sLCJzcGFubmVkIil9KSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJVbm1lcmdlQ2VsbHMiLHksSSksdGhpcy5ob3QucmVuZGVyKCkpfX0se2tleToidG9nZ2xlTWVyZ2UiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBD''@;'; put 'put ''PXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldCh5LmZyb20ucm93LHkuZnJvbS5jb2wpO0Mucm93PT09eS5mcm9tLnJvdyYmQy5jb2w9PT15LmZyb20uY29sJiZDLnJvdytDLnJvd3NwYW4tMT09PXkudG8ucm93JiZDLmNvbCtDLmNvbHNwYW4tMT09PXkudG8uY29sP3RoaXMudW5tZXJn''@;'; put 'put ''ZVJhbmdlKHkpOnRoaXMubWVyZ2VTZWxlY3Rpb24oeSl9fSx7a2V5OiJtZXJnZSIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksWil7dmFyIHVlPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHksQyksX2U9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoSSxaKTt0aGlzLm1lcmdlUmFuZ2UodGhp''@;'; put 'put ''cy5ob3QuX2NyZWF0ZUNlbGxSYW5nZSh1ZSx1ZSxfZSkpfX0se2tleToidW5tZXJnZSIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksWil7dmFyIHVlPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHksQyksX2U9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoSSxaKTt0aGlzLnVubWVyZ2VSYW5n''@;'; put 'put ''ZSh0aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKHVlLHVlLF9lKSl9fSx7a2V5OiJvbkFmdGVySW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmdlbmVyYXRlRnJvbVNldHRpbmdzKHRoaXMuaG90LmdldFNldHRpbmdzKClbUHpdKSx0aGlzLmhvdC5yZW5kZXIoKX19LHtrZXk6InJlZ2lzdGVy''@;'; put 'put ''U2hvcnRjdXRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpLmFkZFNob3J0Y3V0KHtrZXlzOltbIkNvbnRyb2wiLCJtIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7eS50b2dnbGVNZXJnZSh5LmhvdC5n''@;'; put 'put ''ZXRTZWxlY3RlZFJhbmdlTGFzdCgpKSx5LmhvdC5yZW5kZXIoKX0scnVuT25seUlmOmZ1bmN0aW9uKHVlKXtyZXR1cm4hdWUuYWx0S2V5fSxncm91cDokSWV9KX19LHtrZXk6InVucmVnaXN0ZXJTaG9ydGN1dHMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2Vy''@;'; put 'put ''KCkuZ2V0Q29udGV4dCgiZ3JpZCIpLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoJEllKX19LHtrZXk6Im9uQWZ0ZXJJc011bHRpcGxlU2VsZWN0aW9uIix2YWx1ZTpmdW5jdGlvbih5KXtpZih5KWZvcih2YXIgQz10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5tZXJnZWRDZWxscyxJPXRoaXMu''@;'; put 'put ''aG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksWj0wO1o8Qy5sZW5ndGg7Wis9MSlpZihJLmZyb20ucm93PT09Q1taXS5yb3cmJkkuZnJvbS5jb2w9PT1DW1pdLmNvbCYmSS50by5yb3c9PT1DW1pdLnJvdytDW1pdLnJvd3NwYW4tMSYmSS50by5jb2w9PT1DW1pdLmNvbCtDW1pdLmNvbHNwYW4t''@;'; put 'put ''MSlyZXR1cm4hMTtyZXR1cm4geX19LHtrZXk6Im9uTW9kaWZ5VHJhbnNmb3JtU3RhcnQiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciB1ZSxDPUtJZS5nZXQodGhpcyksST10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLFo9e3Jvdzp5LnJvdyxjb2w6eS5jb2x9LF9lPXRoaXMuaG90Ll9j''@;'; put 'put ''cmVhdGVDZWxsQ29vcmRzKEkuaGlnaGxpZ2h0LnJvdyxJLmhpZ2hsaWdodC5jb2wpLEJlPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChfZS5yb3csX2UuY29sKTtpZihDLmxhc3REZXNpcmVkQ29vcmRzfHwoQy5sYXN0RGVzaXJlZENvb3Jkcz10aGlzLmhvdC5fY3JlYXRlQ2VsbENv''@;'; put 'put ''b3JkcyhudWxsLG51bGwpKSxCZSl7dmFyIE5lPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKEJlLnJvdyxCZS5jb2wpLEtlPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKEJlLnJvdytCZS5yb3dzcGFuLTEsQmUuY29sK0JlLmNvbHNwYW4tMSk7dGhpcy5ob3QuX2NyZWF0ZUNlbGxSYW5n''@;'; put 'put ''ZShOZSxOZSxLZSkuaW5jbHVkZXMoQy5sYXN0RGVzaXJlZENvb3Jkcyl8fChDLmxhc3REZXNpcmVkQ29vcmRzPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKG51bGwsbnVsbCkpLFoucm93PUMubGFzdERlc2lyZWRDb29yZHMucm93P0MubGFzdERlc2lyZWRDb29yZHMucm93LV9lLnJvdzpa''@;'; put 'put ''LnJvdyxaLmNvbD1DLmxhc3REZXNpcmVkQ29vcmRzLmNvbD9DLmxhc3REZXNpcmVkQ29vcmRzLmNvbC1fZS5jb2w6Wi5jb2wseS5yb3c+MD9aLnJvdz1CZS5yb3crQmUucm93c3Bhbi0xLV9lLnJvdyt5LnJvdzp5LnJvdzwwJiYoWi5yb3c9X2Uucm93LUJlLnJvdyt5LnJvdykseS5jb2w+MD9a''@;'; put 'put ''LmNvbD1CZS5jb2wrQmUuY29sc3Bhbi0xLV9lLmNvbCt5LmNvbDp5LmNvbDwwJiYoWi5jb2w9X2UuY29sLUJlLmNvbCt5LmNvbCl9dWU9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoSS5oaWdobGlnaHQucm93K1oucm93LEkuaGlnaGxpZ2h0LmNvbCtaLmNvbCk7dmFyIE90PXRoaXMubWVy''@;'; put 'put ''Z2VkQ2VsbHNDb2xsZWN0aW9uLmdldCh1ZS5yb3csdWUuY29sKTtpZihPdCl7dmFyICR0PXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldEZpcnN0UmVuZGVyYWJsZUNvb3JkcyhPdC5yb3csT3QuY29sKTtDLmxhc3REZXNpcmVkQ29vcmRzPXVlLFo9e3JvdzokdC5yb3ctX2Uucm93LGNv''@;'; put 'put ''bDokdC5jb2wtX2UuY29sfX0wIT09Wi5yb3cmJih5LnJvdz1aLnJvdyksMCE9PVouY29sJiYoeS5jb2w9Wi5jb2wpfX0se2tleToib25Nb2RpZnlUcmFuc2Zvcm1FbmQiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLFo9YTMo''@;'; put 'put ''eSksdWU9dGhpcy5zZWxlY3Rpb25DYWxjdWxhdGlvbnMuZ2V0VXBkYXRlZFNlbGVjdGlvblJhbmdlKEkseSksX2U9YTMoWiksQmU9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0V2l0aGluUmFuZ2UodWUsITApO2Rve19lPWEzKFopLHRoaXMuc2VsZWN0aW9uQ2FsY3VsYXRpb25zLmdl''@;'; put 'put ''dFVwZGF0ZWRTZWxlY3Rpb25SYW5nZShJLFopLFVyKEJlLGZ1bmN0aW9uKE5lKXtDLnNlbGVjdGlvbkNhbGN1bGF0aW9ucy5zbmFwRGVsdGEoWixJLE5lKX0pfXdoaWxlKFoucm93IT09X2Uucm93fHxaLmNvbCE9PV9lLmNvbCk7eS5yb3c9Wi5yb3cseS5jb2w9Wi5jb2x9fSx7a2V5OiJvbk1v''@;'; put 'put ''ZGlmeUdldENlbGxDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKHksQyl7aWYoISh5PDB8fEM8MCkpe3ZhciBJPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldCh5LEMpO2lmKEkpe3ZhciBaPUkucm93LHVlPUkuY29sO3JldHVybltaLHVlLForSS5yb3dzcGFuLTEsdWUrSS5jb2xzcGFuLTFd''@;'; put 'put ''fX19fSx7a2V5OiJhZGRNZXJnZUFjdGlvbnNUb0NvbnRleHRNZW51Iix2YWx1ZTpmdW5jdGlvbih5KXt5Lml0ZW1zLnB1c2goe25hbWU6Ii0tLS0tLS0tLSJ9LGZ1bmN0aW9uIEhkdChkKXtyZXR1cm57a2V5OiJtZXJnZUNlbGxzIixuYW1lOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5nZXRTZWxl''@;'; put 'put ''Y3RlZExhc3QoKTtpZihoKXt2YXIgdj1kLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQoaFswXSxoWzFdKTtpZih2LnJvdz09PWhbMF0mJnYuY29sPT09aFsxXSYmdi5yb3crdi5yb3dzcGFuLTE9PT1oWzJdJiZ2LmNvbCt2LmNvbHNwYW4tMT09PWhbM10pcmV0dXJuIHRoaXMuZ2V0VHJhbnNs''@;'; put 'put ''YXRlZFBocmFzZShWNGUpfXJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoTjRlKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtkLnRvZ2dsZU1lcmdlT25TZWxlY3Rpb24oKX0sZGlzYWJsZWQ6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmdldFNlbGVjdGVkTGFzdCgpO3JldHVybiFofHxIZy5p''@;'; put 'put ''c1NpbmdsZUNlbGwoe3JvdzpoWzBdLGNvbDpoWzFdLHJvd3NwYW46aFsyXS1oWzBdKzEsY29sc3BhbjpoWzNdLWhbMV0rMX0pfHx0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKX0saGlkZGVuOiExfX0odGhpcykpfX0se2tleToib25BZnRlclJlbmRlcmVyIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbih5LEMsSSl7dmFyIFo9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KEMsSSksdWU9eGwoWik/YTMoWik6dm9pZCAwO2lmKHhsKHVlKSl7dmFyIF9lPXRoaXMuaG90LEJlPV9lLnJvd0luZGV4TWFwcGVyLE5lPV9lLmNvbHVtbkluZGV4TWFwcGVyLExuPVlJZSh0aGlzLnRyYW5z''@;'; put 'put ''bGF0ZU1lcmdlZENlbGxUb1JlbmRlcmFibGUodWUucm93LHVlLnJvd3NwYW4sdWUuY29sLHVlLmNvbHNwYW4pLDIpLG1yPUxuWzFdLFFyPUxuWzBdLUJlLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoQykrMSx5aT1tci1OZS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KEkpKzE7''@;'; put 'put ''dWUucm93PUJlLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCh1ZS5yb3csMSksdWUuY29sPU5lLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCh1ZS5jb2wsMSksdWUucm93c3Bhbj1NYXRoLm1pbih1ZS5yb3dzcGFuLFFyKSx1ZS5jb2xzcGFuPU1hdGgubWluKHVlLmNvbHNwYW4seWkpfUNnZSh5''@;'; put 'put ''LHVlLEMsSSl9fSx7a2V5OiJvbkJlZm9yZVNldFJhbmdlU3RhcnQiLHZhbHVlOmZ1bmN0aW9uKHkpe2lmKHRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmlzRmlyc3RSZW5kZXJhYmxlTWVyZ2VkQ2VsbCh5LnJvdyx5LmNvbCkpe3ZhciBDPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdl''@;'; put 'put ''dCh5LnJvdyx5LmNvbCksST1bQy5yb3csQy5jb2xdO3kucm93PUlbMF0seS5jb2w9SVsxXX19fSx7a2V5OiJvbkJlZm9yZVNldFJhbmdlRW5kIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO0MuaGlnaGxpZ2h0PXRoaXMuaG90Ll9jcmVh''@;'; put 'put ''dGVDZWxsQ29vcmRzKEMuaGlnaGxpZ2h0LnJvdyxDLmhpZ2hsaWdodC5jb2wpLEMudG89eTt2YXIgST0hMTtpZighdGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpJiYhdGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpKWRve0k9ITE7''@;'; put 'put ''Zm9yKHZhciBaPTA7Wjx0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5tZXJnZWRDZWxscy5sZW5ndGg7Wis9MSl7dmFyIF9lPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLm1lcmdlZENlbGxzW1pdLmdldFJhbmdlKCk7Qy5leHBhbmRCeVJhbmdlKF9lKSYmKHkucm93PUMudG8ucm93LHku''@;'; put 'put ''Y29sPUMudG8uY29sLEk9ITApfX13aGlsZShJKX19LHtrZXk6Im9uQWZ0ZXJHZXRDZWxsTWV0YSIsdmFsdWU6ZnVuY3Rpb24oeSxDLEkpe3ZhciBaPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldCh5LEMpO1omJihaLnJvdyE9PXl8fFouY29sIT09Qz9JLmNvcHlhYmxlPSExOihJLnJv''@;'; put 'put ''d3NwYW49Wi5yb3dzcGFuLEkuY29sc3Bhbj1aLmNvbHNwYW4pKX19LHtrZXk6Im9uQWZ0ZXJWaWV3cG9ydFJvd0NhbGN1bGF0b3JPdmVycmlkZSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5ob3QuY291bnRDb2xzKCk7dGhpcy5tb2RpZnlWaWV3cG9ydFJvd1N0YXJ0KHksQyksdGhp''@;'; put 'put ''cy5tb2RpZnlWaWV3cG9ydFJvd0VuZCh5LEMpfX0se2tleToibW9kaWZ5Vmlld3BvcnRSb3dTdGFydCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtmb3IodmFyIEk9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIsWj1JLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoeS5zdGFydFJvdyksdWU9MDt1''@;'; put 'put ''ZTxDO3VlKz0xKXt2YXIgX2U9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KFosdWUpO2lmKHhsKF9lKSl7dmFyIEJlPUkuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChJLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChfZS5yb3csMSkpO2lmKEJlPHkuc3RhcnRSb3cpcmV0dXJu''@;'; put 'put ''IHkuc3RhcnRSb3c9QmUsdm9pZCB0aGlzLm1vZGlmeVZpZXdwb3J0Um93U3RhcnQoeSxDKX19fX0se2tleToibW9kaWZ5Vmlld3BvcnRSb3dFbmQiLHZhbHVlOmZ1bmN0aW9uKHksQyl7Zm9yKHZhciBJPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLFo9SS5nZXRWaXN1YWxGcm9tUmVuZGVyYWJs''@;'; put 'put ''ZUluZGV4KHkuZW5kUm93KSx1ZT0wO3VlPEM7dWUrPTEpe3ZhciBfZT10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQoWix1ZSk7aWYoeGwoX2UpKXt2YXIgTmU9SS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KEkuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KF9lLnJvdytfZS5y''@;'; put 'put ''b3dzcGFuLTEsLTEpKTtpZihOZT55LmVuZFJvdylyZXR1cm4geS5lbmRSb3c9TmUsdm9pZCB0aGlzLm1vZGlmeVZpZXdwb3J0Um93RW5kKHksQyl9fX19LHtrZXk6Im9uQWZ0ZXJWaWV3cG9ydENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5o''@;'; put 'put ''b3QuY291bnRSb3dzKCk7dGhpcy5tb2RpZnlWaWV3cG9ydENvbHVtblN0YXJ0KHksQyksdGhpcy5tb2RpZnlWaWV3cG9ydENvbHVtbkVuZCh5LEMpfX0se2tleToibW9kaWZ5Vmlld3BvcnRDb2x1bW5TdGFydCIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtmb3IodmFyIEk9dGhpcy5ob3QuY29sdW1u''@;'; put 'put ''SW5kZXhNYXBwZXIsWj1JLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoeS5zdGFydENvbHVtbiksdWU9MDt1ZTxDO3VlKz0xKXt2YXIgX2U9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KHVlLFopO2lmKHhsKF9lKSl7dmFyIEJlPUkuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJ''@;'; put 'put ''bmRleChJLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChfZS5jb2wsMSkpO2lmKEJlPHkuc3RhcnRDb2x1bW4pcmV0dXJuIHkuc3RhcnRDb2x1bW49QmUsdm9pZCB0aGlzLm1vZGlmeVZpZXdwb3J0Q29sdW1uU3RhcnQoeSxDKX19fX0se2tleToibW9kaWZ5Vmlld3BvcnRDb2x1bW5FbmQiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKHksQyl7Zm9yKHZhciBJPXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLFo9SS5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHkuZW5kQ29sdW1uKSx1ZT0wO3VlPEM7dWUrPTEpe3ZhciBfZT10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQodWUsWik7aWYo''@;'; put 'put ''eGwoX2UpKXt2YXIgTmU9SS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KEkuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KF9lLmNvbCtfZS5jb2xzcGFuLTEsLTEpKTtpZihOZT55LmVuZENvbHVtbilyZXR1cm4geS5lbmRDb2x1bW49TmUsdm9pZCB0aGlzLm1vZGlmeVZpZXdwb3J0Q29s''@;'; put 'put ''dW1uRW5kKHksQyl9fX19LHtrZXk6InRyYW5zbGF0ZU1lcmdlZENlbGxUb1JlbmRlcmFibGUiLHZhbHVlOmZ1bmN0aW9uKHksQyxJLFope3ZhciBOZSxLZSx1ZT10aGlzLmhvdCxfZT11ZS5yb3dJbmRleE1hcHBlcixCZT11ZS5jb2x1bW5JbmRleE1hcHBlcjtyZXR1cm4gTmU9MD09PUM/X2Uu''@;'; put 'put ''Z2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KHksMSk6X2UuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KHkrQy0xLC0xKSxLZT0wPT09Wj9CZS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoSSwxKTpCZS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoSStaLTEsLTEpLFt5Pj0wP19lLmdldFJlbmRl''@;'; put 'put ''cmFibGVGcm9tVmlzdWFsSW5kZXgoTmUpOnksST49MD9CZS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KEtlKTpJXX19LHtrZXk6Im9uTW9kaWZ5QXV0b2ZpbGxSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt0aGlzLmF1dG9maWxsQ2FsY3VsYXRpb25zLmNvcnJlY3RTZWxlY3Rpb25B''@;'; put 'put ''cmVhU2l6ZShDKTt2YXIgST10aGlzLmF1dG9maWxsQ2FsY3VsYXRpb25zLmdldERpcmVjdGlvbihDLHkpLFo9eTtpZih0aGlzLmF1dG9maWxsQ2FsY3VsYXRpb25zLmRyYWdBcmVhT3ZlcmxhcHNDb2xsZWN0aW9ucyhDLFosSSkpcmV0dXJuIEM7dmFyIHVlPXRoaXMubWVyZ2VkQ2VsbHNDb2xs''@;'; put 'put ''ZWN0aW9uLmdldFdpdGhpblJhbmdlKHtmcm9tOntyb3c6Q1swXSxjb2w6Q1sxXX0sdG86e3JvdzpDWzJdLGNvbDpDWzNdfX0pO3JldHVybiB1ZSYmKFo9dGhpcy5hdXRvZmlsbENhbGN1bGF0aW9ucy5zbmFwRHJhZ0FyZWEoQyxaLEksdWUpKSxafX0se2tleToib25BZnRlckNyZWF0ZUNvbCIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oeSxDKXt0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5zaGlmdENvbGxlY3Rpb25zKCJyaWdodCIseSxDKX19LHtrZXk6Im9uQWZ0ZXJSZW1vdmVDb2wiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uc2hpZnRDb2xsZWN0aW9u''@;'; put 'put ''cygibGVmdCIseSxDKX19LHtrZXk6Im9uQWZ0ZXJDcmVhdGVSb3ciLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXsiYXV0byIhPT1JJiZ0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5zaGlmdENvbGxlY3Rpb25zKCJkb3duIix5LEMpfX0se2tleToib25BZnRlclJlbW92ZVJvdyIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oeSxDKXt0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5zaGlmdENvbGxlY3Rpb25zKCJ1cCIseSxDKX19LHtrZXk6Im9uQWZ0ZXJDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHksQyl7IkF1dG9maWxsLmZpbGwiPT09QyYmdGhpcy5hdXRvZmlsbENhbGN1bGF0aW9ucy5yZWNyZWF0ZUFm''@;'; put 'put ''dGVyRGF0YVBvcHVsYXRpb24oeSl9fSx7a2V5OiJvbkJlZm9yZURyYXdBcmVhQm9yZGVycyIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtpZihDJiYiYXJlYSI9PT1DKXt2YXIgST10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO1VyKHRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldFdp''@;'; put 'put ''dGhpblJhbmdlKEkpLGZ1bmN0aW9uKHVlKXtJLmdldEJvdHRvbUVuZENvcm5lcigpLnJvdz09PXVlLmdldExhc3RSb3coKSYmSS5nZXRCb3R0b21FbmRDb3JuZXIoKS5jb2w9PT11ZS5nZXRMYXN0Q29sdW1uKCkmJih5WzJdPXVlLnJvdyx5WzNdPXVlLmNvbCl9KX19fSx7a2V5OiJvbkFmdGVy''@;'; put 'put ''TW9kaWZ5VHJhbnNmb3JtU3RhcnQiLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXtpZih0aGlzLmVuYWJsZWQpe3ZhciBaPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldCh5LnJvdyx5LmNvbCk7aWYoWil7dmFyIHVlPUM+MCxfZT1DPDAsQmU9STwwLE5lPUk+MCxLZT1aLnJvdytaLnJvd3Nw''@;'; put 'put ''YW4tMT09dGhpcy5ob3QuY291bnRSb3dzKCktMSxwdD0wPT09Wi5yb3csT3Q9Wi5jb2wrWi5jb2xzcGFuLTE9PXRoaXMuaG90LmNvdW50Q29scygpLTE7KHVlJiZLZXx8X2UmJnB0fHxOZSYmT3R8fEJlJiYwPT09Wi5jb2wpJiYoeS5yb3c9Wi5yb3cseS5jb2w9Wi5jb2wpfX19fSx7a2V5OiJv''@;'; put 'put ''bkFmdGVyRHJhd1NlbGVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksWil7aWYoSSlyZXR1cm4gdGhpcy5zZWxlY3Rpb25DYWxjdWxhdGlvbnMuZ2V0U2VsZWN0ZWRNZXJnZWRDZWxsQ2xhc3NOYW1lKHksQyxJLFopfX0se2tleToib25CZWZvcmVSZW1vdmVDZWxsQ2xhc3NOYW1lcyIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb25DYWxjdWxhdGlvbnMuZ2V0U2VsZWN0ZWRNZXJnZWRDZWxsQ2xhc3NOYW1lVG9SZW1vdmUoKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFB6fX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gMTUwfX1dKSxofShZcyk7ZnVuY3Rpb24gcUllKGQpe3JldHVybiBmdW5jdGlvbiByNHQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gZH0oZCl8fGZ1bmN0aW9uIG40dChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1i''@;'; put 'put ''b2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiB0NHQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIGVEZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5z''@;'; put 'put ''bGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0Fy''@;'; put 'put ''cmF5JC8udGVzdChoKSlyZXR1cm4gZURlKGQsZyl9fShkKXx8ZnVuY3Rpb24gZTR0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2Jq''@;'; put 'put ''ZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBlRGUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlv''@;'; put 'put ''biBuRGUoKXtsMShQMih0RGV8fCh0RGU9ZnVuY3Rpb24gbzR0KGQsZyl7cmV0dXJuIGd8fChnPWQuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGcpfX0pKX0oWyJQbHVnaW5zIGBjb2x1bW5Tb3J0aW5n''@;'; put 'put ''YCBhbmQgYG11bHRpQ29sdW1uU29ydGluZ2Agc2hvdWxkIG5vdCBiZSBlbmFibGVkIHNpbXVsdGFuZW91c2x5LiBcbiAgICBPbmx5IGBtdWx0aUNvbHVtblNvcnRpbmdgIHdpbGwgd29yay4iXSxbIlBsdWdpbnMgXFxgY29sdW1uU29ydGluZ1xcYCBhbmQgXFxgbXVsdGlDb2x1bW5Tb3J0aW5n''@;'; put 'put ''XFxgIHNob3VsZCBub3QgYmUgZW5hYmxlZCBzaW11bHRhbmVvdXNseS4gXG4gICAgT25seSBcXGBtdWx0aUNvbHVtblNvcnRpbmdcXGAgd2lsbCB3b3JrLiJdKSkpKX1mdW5jdGlvbiBhNHQoZCxnLGgpe3ZhciB2PVtdO3JldHVybiExPT09aHx8ZC5pc0NvbHVtblNvcnRlZChnKSYmZC5nZXRO''@;'; put 'put ''dW1iZXJPZlNvcnRlZENvbHVtbnMoKT4xJiZ2LnB1c2goIiIuY29uY2F0KCJzb3J0IiwiLSIpLmNvbmNhdChkLmdldEluZGV4T2ZDb2x1bW5JblNvcnRRdWV1ZShnKSsxKSksdn1mdW5jdGlvbiBsNHQoZCl7dmFyIGc9ZC5jbGFzc05hbWUuc3BsaXQoIiAiKSxoPW5ldyBSZWdFeHAoIl4iLmNv''@;'; put 'put ''bmNhdCgic29ydCIsIi1bMC05XXsxLDJ9JCIpKTtyZXR1cm4gZy5maWx0ZXIoZnVuY3Rpb24odil7cmV0dXJuIGgudGVzdCh2KX0pfWZ1bmN0aW9uIHhnZShkKXtyZXR1cm4oeGdlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1''@;'; put 'put ''bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gaURlKGQsZyl7Zm9y''@;'; put 'put ''KHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gYjQoKXtyZXR1''@;'; put 'put ''cm4gYjQ9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PWM0dChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQu''@;'; put 'put ''Y2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sYjQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGM0dChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9YzMoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rp''@;'; put 'put ''b24gVGdlKGQsZyl7cmV0dXJuKFRnZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIGQ0dChkLGcpe2lmKGcmJigib2JqZWN0Ij09PXhnZShnKXx8ImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gcDR0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cg''@;'; put 'put ''bmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gYzMoZCl7cmV0dXJuKGMzPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmlu''@;'; put 'put ''ZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIElnZT0ibXVsdGlDb2x1bW5Tb3J0aW5nIixvRGU9ImNvbHVtblNvcnRpbmciO3BFZShJZ2UsZnVuY3Rpb24gaTR0KGQsZyl7cmV0dXJuIGZ1bmN0aW9uKGgsdil7dmFy''@;'; put 'put ''IEM9cUllKGgpLnNsaWNlKDEpLFo9cUllKHYpLnNsaWNlKDEpO3JldHVybiBmdW5jdGlvbiB1ZShfZSl7dmFyIEJlPWRbX2VdLE5lPWdbX2VdLEtlPUNbX2VdLHB0PVpbX2VdLE90PU5lLm11bHRpQ29sdW1uU29ydGluZyxmbj0oT3QuY29tcGFyZUZ1bmN0aW9uRmFjdG9yeT9PdC5jb21wYXJl''@;'; put 'put ''RnVuY3Rpb25GYWN0b3J5OmdFZShOZS50eXBlKSkoQmUsTmUsT3QpKEtlLHB0KTtpZigwPT09Zm4pe3ZhciBMbj1fZSsxO2lmKHZvaWQgMCE9PWdbTG5dKXJldHVybiB1ZShMbil9cmV0dXJuIGZufSgwKX19KTt2YXIgQTR0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBmNHQoZCxnKXtpZigiZnVu''@;'; put 'put ''Y3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3''@;'; put 'put ''cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmVGdlKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gaDR0KGQpe3ZhciBnPWZ1bmN0aW9uIGc0dCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Yg''@;'; put 'put ''UmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFu''@;'; put 'put ''LFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PWMzKGQpO2lmKGcpe3ZhciBDPWMzKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxh''@;'; put 'put ''cmd1bWVudHMpO3JldHVybiBkNHQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7cmV0dXJuIGZ1bmN0aW9uIHM0dChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgp''@;'; put 'put ''LCh5PWcuY2FsbCh0aGlzLHYpKS5wbHVnaW5LZXk9SWdlLHl9cmV0dXJuIGZ1bmN0aW9uIHU0dChkLGcsaCl7ZyYmaURlKGQucHJvdG90eXBlLGcpLGgmJmlEZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpc0VuYWJs''@;'; put 'put ''ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGI0KGMzKGgucHJvdG90eXBlKSwiaXNFbmFibGVkIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpeyF0aGlzLmVuYWJsZWQmJnRoaXMuaG90LmdldFNldHRpbmdzKClbdGhpcy5wbHVnaW5L''@;'; put 'put ''ZXldJiZ0aGlzLmhvdC5nZXRTZXR0aW5ncygpW29EZV0mJm5EZSgpLGI0KGMzKGgucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXtiNChjMyhoLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4i''@;'; put 'put ''LHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJzb3J0Iix2YWx1ZTpmdW5jdGlvbih5KXtiNChjMyhoLnByb3RvdHlwZSksInNvcnQiLHRoaXMpLmNhbGwodGhpcyx5KX19LHtrZXk6ImNsZWFyU29ydCIsdmFsdWU6ZnVuY3Rpb24oKXtiNChjMyhoLnByb3RvdHlwZSksImNsZWFyU29ydCIsdGhp''@;'; put 'put ''cykuY2FsbCh0aGlzKX19LHtrZXk6ImlzU29ydGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBiNChjMyhoLnByb3RvdHlwZSksImlzU29ydGVkIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZ2V0U29ydENvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIGI0KGMzKGgucHJvdG90''@;'; put 'put ''eXBlKSwiZ2V0U29ydENvbmZpZyIsdGhpcykuY2FsbCh0aGlzLHkpfX0se2tleToic2V0U29ydENvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oeSl7YjQoYzMoaC5wcm90b3R5cGUpLCJzZXRTb3J0Q29uZmlnIix0aGlzKS5jYWxsKHRoaXMseSl9fSx7a2V5OiJnZXROb3JtYWxpemVkU29ydENvbmZp''@;'; put 'put ''Z3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltdO3JldHVybiBBcnJheS5pc0FycmF5KHkpP3k6W3ldfX0se2tleToidXBkYXRlSGVhZGVyQ2xhc3NlcyIsdmFsdWU6ZnVuY3Rpb24oeSl7Zm9y''@;'; put 'put ''KHZhciBDLEk9YXJndW1lbnRzLmxlbmd0aCxaPW5ldyBBcnJheShJPjE/SS0xOjApLHVlPTE7dWU8STt1ZSsrKVpbdWUtMV09YXJndW1lbnRzW3VlXTsoQz1iNChjMyhoLnByb3RvdHlwZSksInVwZGF0ZUhlYWRlckNsYXNzZXMiLHRoaXMpKS5jYWxsLmFwcGx5KEMsW3RoaXMseV0uY29uY2F0''@;'; put 'put ''KFopKSxwbCh5LGw0dCh5KSksITEhPT10aGlzLmVuYWJsZWQmJk8wKHksYTR0LmFwcGx5KHZvaWQgMCxaKSl9fSx7a2V5OiJvblVwZGF0ZVNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbih5KXt0aGlzLmhvdC5nZXRTZXR0aW5ncygpW3RoaXMucGx1Z2luS2V5XSYmdGhpcy5ob3QuZ2V0U2V0dGlu''@;'; put 'put ''Z3MoKVtvRGVdJiZuRGUoKSxiNChjMyhoLnByb3RvdHlwZSksIm9uVXBkYXRlU2V0dGluZ3MiLHRoaXMpLmNhbGwodGhpcyx5KX19LHtrZXk6Im9uQWZ0ZXJPbkNlbGxNb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKHksQyl7ITEhPT1wOGUoQy5yb3csQy5jb2wseSkmJnRoaXMud2FzQ2xpY2th''@;'; put 'put ''YmxlSGVhZGVyQ2xpY2tlZCh5LEMuY29sKSYmKHRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmlzQ3RybFByZXNzZWQoKT8odGhpcy5ob3QuZGVzZWxlY3RDZWxsKCksdGhpcy5ob3Quc2VsZWN0Q29sdW1ucyhDLmNvbCksdGhpcy5zb3J0KHRoaXMuZ2V0TmV4dFNvcnRDb25maWcoQy5j''@;'; put 'put ''b2wsImFwcGVuZCIpKSk6dGhpcy5zb3J0KHRoaXMuZ2V0Q29sdW1uTmV4dENvbmZpZyhDLmNvbCkpKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIElnZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDE3MH19XSksaH0o''@;'; put 'put ''Q0VlKTtmdW5jdGlvbiBEZ2UoZCl7cmV0dXJuKERnZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIGFEZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29u''@;'; put 'put ''ZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIEVuZSgpe3JldHVybiBFbmU9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVu''@;'; put 'put ''Y3Rpb24oZyxoLHYpe3ZhciB5PWI0dChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sRW5lLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5j''@;'; put 'put ''dGlvbiBiNHQoZCxnKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxnKSYmbnVsbCE9PShkPXNSKGQpKTspO3JldHVybiBkfWZ1bmN0aW9uIExnZShkLGcpe3JldHVybihMZ2U9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5i''@;'; put 'put ''aW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBrNHQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1EZ2UoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2''@;'; put 'put ''ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIFM0dChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJl''@;'; put 'put ''ZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIHNSKGQpe3JldHVybihzUj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfXZh''@;'; put 'put ''ciBUNHQ9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIF80dChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5j''@;'; put 'put ''cmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZMZ2UoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBDNHQoZCl7''@;'; put 'put ''dmFyIGc9ZnVuY3Rpb24gTTR0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90''@;'; put 'put ''b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9c1IoZCk7aWYoZyl7dmFyIEM9c1IodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNv''@;'; put 'put ''bnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGs0dCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24geTR0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigi''@;'; put 'put ''Q2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKHk9Zy5jYWxsKHRoaXMsdikpLmRyYWdnZWQ9W10seS5ldmVudE1hbmFnZXI9bnVsbCx5Lmxhc3RTZXRDZWxsPW51bGwseX1yZXR1cm4gZnVuY3Rpb24gdzR0KGQsZyxoKXtnJiZhRGUoZC5wcm90b3R5cGUsZyks''@;'; put 'put ''aCYmYURlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGgsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gYjgoKX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWR8''@;'; put 'put ''fCh0aGlzLmV2ZW50TWFuYWdlcnx8KHRoaXMuZXZlbnRNYW5hZ2VyPW5ldyBMMSh0aGlzKSksdGhpcy5yZWdpc3Rlckxpc3RlbmVycygpLEVuZShzUihoLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJyZWdpc3Rlckxpc3RlbmVycyIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9dGhpcyxJPXRoaXMuaG90LnJvb3RFbGVtZW50O2Z1bmN0aW9uIFoodWUpe2lmKDE9PT1DLmRyYWdnZWQubGVuZ3RoKXJldHVybiBDLmRyYWdnZWQuc3BsaWNlKDAsQy5kcmFnZ2VkLmxlbmd0aCksITA7dmFyIF9lPUMuZHJhZ2dlZC5pbmRleE9mKHVl''@;'; put 'put ''KTtpZigtMT09PV9lKXJldHVybiExOzA9PT1fZT9DLmRyYWdnZWQ9Qy5kcmFnZ2VkLnNsaWNlKDAsMSk6MT09PV9lJiYoQy5kcmFnZ2VkPUMuZHJhZ2dlZC5zbGljZSgtMSkpfXRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoSSwidG91Y2hzdGFydCIsZnVuY3Rpb24odWUpe3Zh''@;'; put 'put ''ciBfZTtyZXR1cm4gdGwodWUudGFyZ2V0LCJ0b3BTZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSIpPyhfZT1DLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLEMuZHJhZ2dlZC5wdXNoKCJ0b3AiKSxDLnRvdWNoU3RhcnRSYW5nZT17d2lkdGg6X2UuZ2V0V2lkdGgoKSxoZWlnaHQ6X2UuZ2V0SGVp''@;'; put 'put ''Z2h0KCksZGlyZWN0aW9uOl9lLmdldERpcmVjdGlvbigpfSx1ZS5wcmV2ZW50RGVmYXVsdCgpLCExKTp0bCh1ZS50YXJnZXQsImJvdHRvbVNlbGVjdGlvbkhhbmRsZS1IaXRBcmVhIik/KF9lPUMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksQy5kcmFnZ2VkLnB1c2goImJvdHRvbSIpLEMu''@;'; put 'put ''dG91Y2hTdGFydFJhbmdlPXt3aWR0aDpfZS5nZXRXaWR0aCgpLGhlaWdodDpfZS5nZXRIZWlnaHQoKSxkaXJlY3Rpb246X2UuZ2V0RGlyZWN0aW9uKCl9LHVlLnByZXZlbnREZWZhdWx0KCksITEpOnZvaWQgMH0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoSSwidG91Y2hl''@;'; put 'put ''bmQiLGZ1bmN0aW9uKHVlKXtyZXR1cm4gdGwodWUudGFyZ2V0LCJ0b3BTZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSIpPyhaLmNhbGwoQywidG9wIiksQy50b3VjaFN0YXJ0UmFuZ2U9dm9pZCAwLHVlLnByZXZlbnREZWZhdWx0KCksITEpOnRsKHVlLnRhcmdldCwiYm90dG9tU2VsZWN0aW9uSGFu''@;'; put 'put ''ZGxlLUhpdEFyZWEiKT8oWi5jYWxsKEMsImJvdHRvbSIpLEMudG91Y2hTdGFydFJhbmdlPXZvaWQgMCx1ZS5wcmV2ZW50RGVmYXVsdCgpLCExKTp2b2lkIDB9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKEksInRvdWNobW92ZSIsZnVuY3Rpb24odWUpe3ZhciBCZSxOZSxL''@;'; put 'put ''ZSxwdCxPdCwkdDtpZigwIT09Qy5kcmFnZ2VkLmxlbmd0aCl7dmFyIGZuPXkuaG90LnJvb3REb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHVlLnRvdWNoZXNbMF0uY2xpZW50WCx1ZS50b3VjaGVzWzBdLmNsaWVudFkpOyFmbnx8Zm49PT1DLmxhc3RTZXRDZWxsfHwoKCJURCI9PT1mbi5ub2Rl''@;'; put 'put ''TmFtZXx8IlRIIj09PWZuLm5vZGVOYW1lKSYmKC0xPT09KEJlPUMuaG90LmdldENvb3JkcyhmbikpLmNvbCYmKEJlLmNvbD0wKSxLZT0oTmU9Qy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSkuZ2V0V2lkdGgoKSxwdD1OZS5nZXRIZWlnaHQoKSxPdD1OZS5nZXREaXJlY3Rpb24oKSwxPT09''@;'; put 'put ''S2UmJjE9PT1wdCYmQy5ob3Quc2VsZWN0aW9uLnNldFJhbmdlRW5kKEJlKSxudWxsIT09KCR0PUMuZ2V0Q3VycmVudFJhbmdlQ29vcmRzKE5lLEJlLEMudG91Y2hTdGFydFJhbmdlLmRpcmVjdGlvbixPdCxDLmRyYWdnZWRbMF0pKS5zdGFydCYmQy5ob3Quc2VsZWN0aW9uLnNldFJhbmdlU3Rh''@;'; put 'put ''cnQoJHQuc3RhcnQpLEMuaG90LnNlbGVjdGlvbi5zZXRSYW5nZUVuZCgkdC5lbmQpLEMubGFzdFNldENlbGw9Zm4pLHVlLnByZXZlbnREZWZhdWx0KCkpfX0pfX0se2tleToiZ2V0Q3VycmVudFJhbmdlQ29vcmRzIix2YWx1ZTpmdW5jdGlvbih5LEMsSSxaLHVlKXt2YXIgX2U9eS5nZXRUb3BT''@;'; put 'put ''dGFydENvcm5lcigpLEJlPXkuZ2V0Qm90dG9tRW5kQ29ybmVyKCksTmU9eS5nZXRCb3R0b21TdGFydENvcm5lcigpLEtlPXkuZ2V0VG9wRW5kQ29ybmVyKCkscHQ9e3N0YXJ0Om51bGwsZW5kOm51bGx9O3N3aXRjaChJKXtjYXNlIk5FLVNXIjpzd2l0Y2goWil7Y2FzZSJORS1TVyI6Y2FzZSJO''@;'; put 'put ''Vy1TRSI6cHQ9InRvcCI9PT11ZT97c3RhcnQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoQy5yb3cseS5oaWdobGlnaHQuY29sKSxlbmQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoTmUucm93LEMuY29sKX06e3N0YXJ0OnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHkuaGlnaGxp''@;'; put 'put ''Z2h0LnJvdyxDLmNvbCksZW5kOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKEMucm93LF9lLmNvbCl9O2JyZWFrO2Nhc2UiU0UtTlciOiJib3R0b20iPT09dWUmJihwdD17c3RhcnQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoQmUucm93LEMuY29sKSxlbmQ6dGhpcy5ob3QuX2NyZWF0''@;'; put 'put ''ZUNlbGxDb29yZHMoQy5yb3csX2UuY29sKX0pfWJyZWFrO2Nhc2UiTlctU0UiOnN3aXRjaChaKXtjYXNlIk5FLVNXIjoidG9wIj09PXVlP3B0PXtzdGFydDpDLGVuZDpOZX06cHQuZW5kPUM7YnJlYWs7Y2FzZSJOVy1TRSI6InRvcCI9PT11ZT9wdD17c3RhcnQ6QyxlbmQ6QmV9OnB0LmVuZD1D''@;'; put 'put ''O2JyZWFrO2Nhc2UiU0UtTlciOiJ0b3AiPT09dWU/cHQ9e3N0YXJ0OkMsZW5kOl9lfTpwdC5lbmQ9QzticmVhaztjYXNlIlNXLU5FIjoidG9wIj09PXVlP3B0PXtzdGFydDpDLGVuZDpLZX06cHQuZW5kPUN9YnJlYWs7Y2FzZSJTVy1ORSI6c3dpdGNoKFope2Nhc2UiTlctU0UiOnB0PSJib3R0''@;'; put 'put ''b20iPT09dWU/e3N0YXJ0OnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKEMucm93LF9lLmNvbCksZW5kOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKE5lLnJvdyxDLmNvbCl9OntzdGFydDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhfZS5yb3csQy5jb2wpLGVuZDp0aGlzLmhvdC5f''@;'; put 'put ''Y3JlYXRlQ2VsbENvb3JkcyhDLnJvdyxCZS5jb2wpfTticmVhaztjYXNlIlNXLU5FIjpwdD0idG9wIj09PXVlP3tzdGFydDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3Jkcyh5LmhpZ2hsaWdodC5yb3csQy5jb2wpLGVuZDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhDLnJvdyxCZS5jb2wp''@;'; put 'put ''fTp7c3RhcnQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoQy5yb3csX2UuY29sKSxlbmQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoX2Uucm93LEMuY29sKX07YnJlYWs7Y2FzZSJTRS1OVyI6ImJvdHRvbSI9PT11ZT9wdD17c3RhcnQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMo''@;'; put 'put ''Qy5yb3csS2UuY29sKSxlbmQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoX2Uucm93LEMuY29sKX06InRvcCI9PT11ZSYmKHB0PXtzdGFydDpOZSxlbmQ6Q30pfWJyZWFrO2Nhc2UiU0UtTlciOnN3aXRjaChaKXtjYXNlIk5XLVNFIjpjYXNlIk5FLVNXIjpjYXNlIlNXLU5FIjoidG9wIj09''@;'; put 'put ''PXVlJiYocHQuZW5kPUMpO2JyZWFrO2Nhc2UiU0UtTlciOiJ0b3AiPT09dWU/cHQuZW5kPUM6cHQ9e3N0YXJ0OkMsZW5kOl9lfX19cmV0dXJuIHB0fX0se2tleToiaXNEcmFnZ2VkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRyYWdnZWQubGVuZ3RoPjB9fV0sW3trZXk6IlBMVUdJ''@;'; put 'put ''Tl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiJtdWx0aXBsZVNlbGVjdGlvbkhhbmRsZXMifX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMTYwfX1dKSxofShZcyk7ZnVuY3Rpb24gT2dlKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAh''@;'; put 'put ''PT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGc9ZC5sYWJlbCxoPXZvaWQgMD09PWc/IiI6Zyx2PWQuY29sc3Bhbix5PXZvaWQgMD09PXY/MTp2LEM9ZC5vcmlnQ29sc3BhbixJPXZvaWQgMD09PUM/MTpDLFo9ZC5jb2xsYXBzaWJsZSx1ZT12b2lkIDAhPT1aJiZaLF9lPWQuY3Jvc3NI''@;'; put 'put ''aWRkZW5Db2x1bW5zLEJlPXZvaWQgMD09PV9lP1tdOl9lLE5lPWQuaXNDb2xsYXBzZWQsS2U9dm9pZCAwIT09TmUmJk5lLHB0PWQuaXNIaWRkZW4sT3Q9dm9pZCAwIT09cHQmJnB0LCR0PWQuaXNSb290LGZuPXZvaWQgMCE9PSR0JiYkdCxMbj1kLmlzUGxhY2Vob2xkZXIsaXI9dm9pZCAwIT09''@;'; put 'put ''TG4mJkxuO3JldHVybntsYWJlbDpoLGNvbHNwYW46eSxvcmlnQ29sc3BhbjpJLGNvbGxhcHNpYmxlOnVlLGlzQ29sbGFwc2VkOktlLGNyb3NzSGlkZGVuQ29sdW1uczpCZSxpc0hpZGRlbjpPdCxpc1Jvb3Q6Zm4saXNQbGFjZWhvbGRlcjppcn19ZnVuY3Rpb24gc0RlKGQpe3JldHVybiBmdW5j''@;'; put 'put ''dGlvbiBPNHQoZCl7aWYoQXJyYXkuaXNBcnJheShkKSlyZXR1cm4gUmdlKGQpfShkKXx8ZnVuY3Rpb24gTDR0KGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShk''@;'; put 'put ''KX0oZCl8fGZ1bmN0aW9uIEQ0dChkLGcpe2lmKGQpe2lmKCJzdHJpbmciPT10eXBlb2YgZClyZXR1cm4gUmdlKGQsZyk7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09aCYmZC5jb25zdHJ1Y3RvciYmKGg9ZC5jb25zdHJ1''@;'; put 'put ''Y3Rvci5uYW1lKSwiTWFwIj09PWh8fCJTZXQiPT09aClyZXR1cm4gQXJyYXkuZnJvbShkKTtpZigiQXJndW1lbnRzIj09PWh8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGgpKXJldHVybiBSZ2UoZCxnKX19KGQpfHxmdW5jdGlvbiBJNHQoKXt0aHJv''@;'; put 'put ''dyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBS''@;'; put 'put ''Z2UoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBSNHQoZCl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJn''@;'; put 'put ''dW1lbnRzWzFdOjEvMCxoPVtdO2lmKDA9PT1nKXJldHVybiBoO1VyKGQsZnVuY3Rpb24oeSl7dmFyIEM9W10sST0wO2gucHVzaChDKSxVcih5LGZ1bmN0aW9uKFope3ZhciB1ZT1PZ2UoKTtpZih4bChaKSl7dmFyIEJlPVouY29sc3Bhbjt1ZS5sYWJlbD1ldShaLmxhYmVsKSwibnVtYmVyIj09''@;'; put 'put ''dHlwZW9mIEJlJiZCZT4xJiYodWUuY29sc3Bhbj1CZSx1ZS5vcmlnQ29sc3Bhbj1CZSl9ZWxzZSB1ZS5sYWJlbD1ldShaKTt2YXIgTmU9ITE7aWYoKEkrPXVlLm9yaWdDb2xzcGFuKT49ZyYmKHVlLmNvbHNwYW49dWUub3JpZ0NvbHNwYW4tKEktZyksdWUub3JpZ0NvbHNwYW49dWUuY29sc3Bh''@;'; put 'put ''bixOZT0hMCksQy5wdXNoKHVlKSx1ZS5jb2xzcGFuPjEpZm9yKHZhciBLZT0wO0tlPHVlLmNvbHNwYW4tMTtLZSsrKUMucHVzaCh7bGFiZWw6IiIsaXNQbGFjZWhvbGRlcjohMH0pO3JldHVybiFOZX0pfSk7dmFyIHY9TWF0aC5tYXguYXBwbHkoTWF0aCxzRGUoT2woaCxmdW5jdGlvbih5KXty''@;'; put 'put ''ZXR1cm4geS5sZW5ndGh9KSkpO3JldHVybiBVcihoLGZ1bmN0aW9uKHkpe2lmKHkubGVuZ3RoPHYpe3ZhciBDPU9sKG5ldyBBcnJheSh2LXkubGVuZ3RoKSxmdW5jdGlvbigpe3JldHVybiBPZ2UoKX0pO3kuc3BsaWNlLmFwcGx5KHksW3kubGVuZ3RoLDBdLmNvbmNhdChzRGUoQykpKX19KSxo''@;'; put 'put ''fXZhciBCNHQ9WyJyb3ciLCJjb2wiXTtmdW5jdGlvbiB1RGUoZCxnKXt2YXIgaD1PYmplY3Qua2V5cyhkKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgdj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGQpO2cmJih2PXYuZmlsdGVyKGZ1bmN0aW9uKHkpe3JldHVy''@;'; put 'put ''biBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQseSkuZW51bWVyYWJsZX0pKSxoLnB1c2guYXBwbHkoaCx2KX1yZXR1cm4gaH1mdW5jdGlvbiBGNHQoZCxnLGgpe3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNv''@;'; put 'put ''bmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfWZ1bmN0aW9uIGNEZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJs''@;'; put 'put ''ZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIEJnZShkLGcsaCl7KGZ1bmN0aW9uIFo0dChkLGcpe2lmKGcuaGFzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24g''@;'; put 'put ''YW4gb2JqZWN0Iil9KShkLGcpLGcuc2V0KGQsaCl9ZnVuY3Rpb24geDgoZCxnKXtyZXR1cm4gZnVuY3Rpb24gejR0KGQsZyl7cmV0dXJuIGcuZ2V0P2cuZ2V0LmNhbGwoZCk6Zy52YWx1ZX0oZCxmRGUoZCxnLCJnZXQiKSl9ZnVuY3Rpb24gRnooZCxnLGgpe3JldHVybiBmdW5jdGlvbiBHNHQo''@;'; put 'put ''ZCxnLGgpe2lmKGcuc2V0KWcuc2V0LmNhbGwoZCxoKTtlbHNle2lmKCFnLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtnLnZhbHVlPWh9fShkLGZEZShkLGcsInNldCIpLGgpLGh9ZnVuY3Rpb24gZkRlKGQs''@;'; put 'put ''ZyxoKXtpZighZy5oYXMoZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIraCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGcuZ2V0KGQpfXZhciBoRGU9WyJsYWJlbCIsImNvbGxhcHNpYmxlIl0scXY9bmV3IFdlYWtNYXAsdk09bmV3IFdlYWtN''@;'; put 'put ''YXAsUGdlPW5ldyBXZWFrTWFwLFc0dD1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoKXsoZnVuY3Rpb24gVjR0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLEJnZSh0aGlzLHF2''@;'; put 'put ''LHt3cml0YWJsZTohMCx2YWx1ZTpbXX0pLEJnZSh0aGlzLHZNLHt3cml0YWJsZTohMCx2YWx1ZTowfSksQmdlKHRoaXMsUGdlLHt3cml0YWJsZTohMCx2YWx1ZToxLzB9KX1yZXR1cm4gZnVuY3Rpb24gajR0KGQsZyxoKXtnJiZjRGUoZC5wcm90b3R5cGUsZyksaCYmY0RlKGQsaCksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InNldENvbHVtbnNMaW1pdCIsdmFsdWU6ZnVuY3Rpb24oaCl7RnoodGhpcyxQZ2UsaCl9fSx7a2V5OiJzZXREYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYm''@;'; put 'put ''dm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXTtGeih0aGlzLHF2LFI0dChoLHg4KHRoaXMsUGdlKSkpLEZ6KHRoaXMsdk0seDgodGhpcyxxdikubGVuZ3RoKX19LHtrZXk6ImdldERhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHg4KHRoaXMscXYpfX0se2tleToibWVy''@;'; put 'put ''Z2VXaXRoIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdj10aGlzO1VyKGgsZnVuY3Rpb24oeSl7dmFyIEM9eS5yb3csST15LmNvbCxaPWZ1bmN0aW9uIEg0dChkLGcpe2lmKG51bGw9PWQpcmV0dXJue307dmFyIHYseSxoPWZ1bmN0aW9uIE40dChkLGcpe2lmKG51bGw9PWQpcmV0dXJue307dmFy''@;'; put 'put ''IHksQyxoPXt9LHY9T2JqZWN0LmtleXMoZCk7Zm9yKEM9MDtDPHYubGVuZ3RoO0MrKykhKGcuaW5kZXhPZih5PXZbQ10pPj0wKSYmKGhbeV09ZFt5XSk7cmV0dXJuIGh9KGQsZyk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5U3lt''@;'; put 'put ''Ym9scyhkKTtmb3IoeT0wO3k8Qy5sZW5ndGg7eSsrKSEoZy5pbmRleE9mKHY9Q1t5XSk+PTApJiYoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChkLHYpfHwoaFt2XT1kW3ZdKSl9cmV0dXJuIGh9KHksQjR0KSx1ZT12LmdldEhlYWRlclNldHRpbmdzKEMsSSk7''@;'; put 'put ''bnVsbCE9PXVlJiZJMSh1ZSxaLGhEZSl9KX19LHtrZXk6Im1hcCIsdmFsdWU6ZnVuY3Rpb24oaCl7VXIoeDgodGhpcyxxdiksZnVuY3Rpb24odil7VXIodixmdW5jdGlvbih5KXt2YXIgQz1oKGZ1bmN0aW9uIFA0dChkKXtmb3IodmFyIGc9MTtnPGFyZ3VtZW50cy5sZW5ndGg7ZysrKXt2YXIg''@;'; put 'put ''aD1udWxsIT1hcmd1bWVudHNbZ10/YXJndW1lbnRzW2ddOnt9O2clMj91RGUoT2JqZWN0KGgpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe0Y0dChkLHYsaFt2XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLE9iamVjdC5nZXRP''@;'; put 'put ''d25Qcm9wZXJ0eURlc2NyaXB0b3JzKGgpKTp1RGUoT2JqZWN0KGgpKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihoLHYpKX0pfXJldHVybiBkfSh7fSx5KSk7eGwoQykmJkkxKHksQyxoRGUpfSl9''@;'; put 'put ''KX19LHtrZXk6ImdldEhlYWRlclNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5O2lmKGg+PXg4KHRoaXMsdk0pfHxoPDApcmV0dXJuIG51bGw7dmFyIEM9eDgodGhpcyxxdilbaF07cmV0dXJuIHY+PUMubGVuZ3RoP251bGw6bnVsbCE9PSh5PUNbdl0pJiZ2b2lkIDAhPT15P3k6''@;'; put 'put ''bnVsbH19LHtrZXk6ImdldEhlYWRlcnNTZXR0aW5ncyIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MSxDPVtdO2lmKGg+PXg4KHRoaXMsdk0pfHxoPDApcmV0dXJuIEM7Zm9yKHZhciBJPXg4''@;'; put 'put ''KHRoaXMscXYpW2hdLFo9MCx1ZT12O3VlPEkubGVuZ3RoO3VlKyspe3ZhciBfZT1JW3VlXTtpZihfZS5pc1BsYWNlaG9sZGVyKXRocm93IG5ldyBFcnJvcigiVGhlIGZpcnN0IGNvbHVtbiBzZXR0aW5ncyBjYW5ub3Qgb3ZlcmxhcCB0aGUgb3RoZXIgaGVhZGVyIGxheWVycyIpO2lmKForPV9l''@;'; put 'put ''LmNvbHNwYW4sQy5wdXNoKF9lKSxfZS5jb2xzcGFuPjEmJih1ZSs9X2UuY29sc3Bhbi0xKSxaPT09eSlicmVhaztpZihaPnkpdGhyb3cgbmV3IEVycm9yKCJUaGUgbGFzdCBjb2x1bW4gc2V0dGluZ3MgY2Fubm90IG92ZXJsYXAgdGhlIG90aGVyIGhlYWRlciBsYXllcnMiKX1yZXR1cm4gQ319''@;'; put 'put ''LHtrZXk6ImdldExheWVyc0NvdW50Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4OCh0aGlzLHZNKX19LHtrZXk6ImdldENvbHVtbnNDb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4geDgodGhpcyx2TSk+MD94OCh0aGlzLHF2KVswXS5sZW5ndGg6MH19LHtrZXk6ImNsZWFyIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe0Z6KHRoaXMscXYsW10pLEZ6KHRoaXMsdk0sMCl9fV0pLGR9KCk7ZnVuY3Rpb24gZERlKGQsZyl7dmFyIGg9T2JqZWN0LmtleXMoZCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkKTtnJiYo''@;'; put 'put ''dj12LmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLHkpLmVudW1lcmFibGV9KSksaC5wdXNoLmFwcGx5KGgsdil9cmV0dXJuIGh9ZnVuY3Rpb24gcERlKGQpe2Zvcih2YXIgZz0xO2c8YXJndW1lbnRzLmxlbmd0aDtnKyspe3ZhciBo''@;'; put 'put ''PW51bGwhPWFyZ3VtZW50c1tnXT9hcmd1bWVudHNbZ106e307ZyUyP2REZShPYmplY3QoaCksITApLmZvckVhY2goZnVuY3Rpb24odil7eG5lKGQsdixoW3ZdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQsT2JqZWN0LmdldE93''@;'; put 'put ''blByb3BlcnR5RGVzY3JpcHRvcnMoaCkpOmREZShPYmplY3QoaCkpLmZvckVhY2goZnVuY3Rpb24odil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGgsdikpfSl9cmV0dXJuIGR9ZnVuY3Rpb24gZ0RlKGQsZyl7Zm9yKHZhciBoPTA7''@;'; put 'put ''aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24geG5lKGQsZyxoKXtyZXR1cm4g''@;'; put 'put ''ZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgsZH1mdW5jdGlvbiBGZ2UoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5l''@;'; put 'put ''dyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn12YXIgeURlPW5ldyBNYXAoW1siREYtcHJlLW9yZGVyIixmdW5jdGlvbiBtRGUoZCxnKXtmb3IodmFyIGg9ZC5jYWxsKGcsdGhpcyksdj0wO3Y8dGhpcy5jaGlsZHMubGVuZ3RoO3YrKyl7aWYoITE9PT1oKXJldHVybiExO2g9''@;'; put 'put ''bURlLmNhbGwodGhpcy5jaGlsZHNbdl0sZCxnKX1yZXR1cm4gaH1dLFsiREYtcG9zdC1vcmRlciIsZnVuY3Rpb24gdkRlKGQsZyl7Zm9yKHZhciBoPTA7aDx0aGlzLmNoaWxkcy5sZW5ndGg7aCsrKWlmKCExPT09dkRlLmNhbGwodGhpcy5jaGlsZHNbaF0sZCxnKSlyZXR1cm4hMTtyZXR1cm4g''@;'; put 'put ''ZC5jYWxsKGcsdGhpcyl9XSxbIkJGIixmdW5jdGlvbiB0cHQoZCxnKXt2YXIgaD1bdGhpc107IWZ1bmN0aW9uIHYoKXtpZigwIT09aC5sZW5ndGgpe3ZhciB5PWguc2hpZnQoKTtoLnB1c2guYXBwbHkoaCxmdW5jdGlvbiBRNHQoZCl7cmV0dXJuIGZ1bmN0aW9uICQ0dChkKXtpZihBcnJheS5p''@;'; put 'put ''c0FycmF5KGQpKXJldHVybiBGZ2UoZCl9KGQpfHxmdW5jdGlvbiBLNHQoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQpfShkKXx8ZnVuY3Rpb24gWDR0KGQs''@;'; put 'put ''Zyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBGZ2UoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8''@;'; put 'put ''IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIEZnZShkLGcpfX0oZCl8fGZ1bmN0aW9uIEo0dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFs''@;'; put 'put ''aWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfSh5LmNoaWxkcykpLCExIT09ZC5jYWxsKGcseSkmJnYo''@;'; put 'put ''KX19KCl9XV0pLHdEZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZyl7KGZ1bmN0aW9uIFk0dChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSx4bmUodGhpcywiZGF0YSIse30p''@;'; put 'put ''LHhuZSh0aGlzLCJwYXJlbnQiLG51bGwpLHhuZSh0aGlzLCJjaGlsZHMiLFtdKSx0aGlzLmRhdGE9Z31yZXR1cm4gZnVuY3Rpb24gVTR0KGQsZyxoKXtnJiZnRGUoZC5wcm90b3R5cGUsZyksaCYmZ0RlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxl''@;'; put 'put ''OiExfSl9KGQsW3trZXk6ImFkZENoaWxkIix2YWx1ZTpmdW5jdGlvbihoKXtoLnBhcmVudD10aGlzLHRoaXMuY2hpbGRzLnB1c2goaCl9fSx7a2V5OiJjbG9uZVRyZWUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBd''@;'; put 'put ''P2FyZ3VtZW50c1swXTp0aGlzLHY9bmV3IGQocERlKHt9LGguZGF0YSkpLHk9MDt5PGguY2hpbGRzLmxlbmd0aDt5Kyspdi5hZGRDaGlsZCh0aGlzLmNsb25lVHJlZShoLmNoaWxkc1t5XSkpO3JldHVybiB2fX0se2tleToicmVwbGFjZVRyZWVXaXRoIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlz''@;'; put 'put ''LmRhdGE9cERlKHt9LGguZGF0YSksdGhpcy5jaGlsZHM9W107Zm9yKHZhciB2PTA7djxoLmNoaWxkcy5sZW5ndGg7disrKXRoaXMuYWRkQ2hpbGQoaC5jaGlsZHNbdl0pfX0se2tleToid2Fsa0Rvd24iLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAw''@;'; put 'put ''IT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiQkYiO2lmKCF5RGUuaGFzKHYpKXRocm93IG5ldyBFcnJvcignVHJhdmVyc2FsIHN0cmF0ZWd5ICInLmNvbmNhdCh2LCciIGRvZXMgbm90IGV4aXN0JykpO3lEZS5nZXQodikuY2FsbCh0aGlzLGgsdGhpcyl9fSx7a2V5OiJ3YWxrVXAiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGgpe3ZhciB2PXRoaXM7IWZ1bmN0aW9uIEMoSSl7ITEhPT1oLmNhbGwodixJKSYmbnVsbCE9PUkucGFyZW50JiZDKEkucGFyZW50KX0odGhpcyl9fV0pLGR9KCk7ZnVuY3Rpb24gYkRlKGQsZyl7dmFyIGg9T2JqZWN0LmtleXMoZCk7aWYoT2JqZWN0LmdldE93blByb3Bl''@;'; put 'put ''cnR5U3ltYm9scyl7dmFyIHY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkKTtnJiYodj12LmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLHkpLmVudW1lcmFibGV9KSksaC5wdXNoLmFwcGx5KGgsdil9cmV0dXJuIGh9ZnVu''@;'; put 'put ''Y3Rpb24gX0RlKGQpe2Zvcih2YXIgZz0xO2c8YXJndW1lbnRzLmxlbmd0aDtnKyspe3ZhciBoPW51bGwhPWFyZ3VtZW50c1tnXT9hcmd1bWVudHNbZ106e307ZyUyP2JEZShPYmplY3QoaCksITApLmZvckVhY2goZnVuY3Rpb24odil7cnB0KGQsdixoW3ZdKX0pOk9iamVjdC5nZXRPd25Qcm9w''@;'; put 'put ''ZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoaCkpOmJEZShPYmplY3QoaCkpLmZvckVhY2goZnVuY3Rpb24odil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj''@;'; put 'put ''cmlwdG9yKGgsdikpfSl9cmV0dXJuIGR9ZnVuY3Rpb24gcnB0KGQsZyxoKXtyZXR1cm4gZyBpbiBkP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLGcse3ZhbHVlOmgsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkW2ddPWgsZH1mdW5jdGlvbiBDRGUoZCxnKXso''@;'; put 'put ''bnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBrRGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVt''@;'; put 'put ''ZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBIZ2UoZCxnLGgpeyhmdW5jdGlvbiBmcHQoZCxnKXtpZihnLmhhcyhkKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJD''@;'; put 'put ''YW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkoZCxnKSxnLnNldChkLGgpfWZ1bmN0aW9uIGYzKGQsZyl7cmV0dXJuIGZ1bmN0aW9uIGhwdChkLGcpe3JldHVybiBnLmdldD9nLmdldC5jYWxsKGQpOmcudmFsdWV9KGQsU0Rl''@;'; put 'put ''KGQsZywiZ2V0IikpfWZ1bmN0aW9uIFNEZShkLGcsaCl7aWYoIWcuaGFzKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK2grIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBnLmdldChkKX12YXIgRURlLHhEZSx1Uj1uZXcgV2Vha01hcCxBTT1u''@;'; put 'put ''ZXcgV2Vha01hcCxjUj1uZXcgV2Vha01hcCxncHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpeyhmdW5jdGlvbiB1cHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksSGdl''@;'; put 'put ''KHRoaXMsdVIse3dyaXRhYmxlOiEwLHZhbHVlOm5ldyBNYXB9KSxIZ2UodGhpcyxBTSx7d3JpdGFibGU6ITAsdmFsdWU6bmV3IE1hcH0pLEhnZSh0aGlzLGNSLHt3cml0YWJsZTohMCx2YWx1ZTpudWxsfSksZnVuY3Rpb24gZHB0KGQsZyxoKXtyZXR1cm4gZnVuY3Rpb24gcHB0KGQsZyxoKXtp''@;'; put 'put ''ZihnLnNldClnLnNldC5jYWxsKGQsaCk7ZWxzZXtpZighZy53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7Zy52YWx1ZT1ofX0oZCxTRGUoZCxnLCJzZXQiKSxoKSxofSh0aGlzLGNSLGcpfXJldHVybiBmdW5j''@;'; put 'put ''dGlvbiBjcHQoZCxnLGgpe2cmJmtEZShkLnByb3RvdHlwZSxnKSxoJiZrRGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oZCxbe2tleToiZ2V0Um9vdHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20oZjModGhpcyx1''@;'; put 'put ''UikudmFsdWVzKCkpfX0se2tleToiZ2V0Um9vdEJ5Q29sdW1uIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdjtyZXR1cm4gZjModGhpcyxBTSkuaGFzKGgpJiYodj1mMyh0aGlzLHVSKS5nZXQoZjModGhpcyxBTSkuZ2V0KGgpKSksdn19LHtrZXk6ImdldE5vZGUiLHZhbHVlOmZ1bmN0aW9uKGgs''@;'; put 'put ''dil7dmFyIHk9dGhpcy5nZXRSb290QnlDb2x1bW4odik7aWYoeSl7dmFyIFosQz12LWYzKHRoaXMsQU0pLmdldCh2KSxJPTA7cmV0dXJuIHkud2Fsa0Rvd24oZnVuY3Rpb24odWUpe3ZhciBfZT11ZS5kYXRhLEJlPV9lLm9yaWdDb2xzcGFuO2lmKGg9PT1fZS5oZWFkZXJMZXZlbCl7aWYoQz49''@;'; put 'put ''SSYmQzw9SStCZS0xKXJldHVybiBaPXVlLCExO0krPUJlfX0pLFp9fX0se2tleToicmVidWlsZFRyZWVJbmRleCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLHY9MDtmMyh0aGlzLEFNKS5jbGVhcigpLFVyKGYzKHRoaXMsdVIpLGZ1bmN0aW9uKHkpe2Zvcih2YXIgST1mdW5jdGlvbiBp''@;'; put 'put ''cHQoZCxnKXtyZXR1cm4gZnVuY3Rpb24gc3B0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBscHQoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJd''@;'; put 'put ''O2lmKG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEwLEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaCh1ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1o''@;'; put 'put ''LnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lmKEMpdGhyb3cgWn19cmV0dXJuIHZ9fShkLGcpfHxmdW5jdGlvbiBhcHQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIENEZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGlj''@;'; put 'put ''ZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5''@;'; put 'put ''JC8udGVzdChoKSlyZXR1cm4gQ0RlKGQsZyl9fShkLGcpfHxmdW5jdGlvbiBvcHQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmpl''@;'; put 'put ''Y3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfSh5LDIpWzFdLmRhdGEuY29sc3BhbixaPXY7Wjx2K0k7WisrKWYzKGgsQU0pLnNldChaLHYpO3YrPUl9KX19LHtrZXk6ImJ1aWxkVHJlZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKCk7Zm9yKHZh''@;'; put 'put ''ciBoPWYzKHRoaXMsY1IpLmdldENvbHVtbnNDb3VudCgpLHY9MDt2PGg7KXt2YXIgeT1mMyh0aGlzLGNSKS5nZXRIZWFkZXJTZXR0aW5ncygwLHYpLEM9bmV3IHdEZTtmMyh0aGlzLHVSKS5zZXQodixDKSx0aGlzLmJ1aWxkTGVhdmVzKEMsdiwwLHkub3JpZ0NvbHNwYW4pLHYrPXkub3JpZ0Nv''@;'; put 'put ''bHNwYW59dGhpcy5yZWJ1aWxkVHJlZUluZGV4KCl9fSx7a2V5OiJidWlsZExlYXZlcyIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3ZhciBDPXRoaXMsST1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106MSxaPWYzKHRoaXMsY1IpLmdldEhlYWRl''@;'; put 'put ''cnNTZXR0aW5ncyh5LHYsSSk7eSs9MSxVcihaLGZ1bmN0aW9uKHVlKXt2YXIgQmUsX2U9X0RlKF9EZSh7fSx1ZSkse30se2hlYWRlckxldmVsOnktMSxjb2x1bW5JbmRleDp2fSk7MT09PXk/KGguZGF0YT1fZSxCZT1oKTooQmU9bmV3IHdEZShfZSksaC5hZGRDaGlsZChCZSkpLHk8ZjMoQyxj''@;'; put 'put ''UikuZ2V0TGF5ZXJzQ291bnQoKSYmQy5idWlsZExlYXZlcyhCZSx2LHksdWUub3JpZ0NvbHNwYW4pLHYrPXVlLm9yaWdDb2xzcGFufSl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXtmMyh0aGlzLHVSKS5jbGVhcigpLGYzKHRoaXMsQU0pLmNsZWFyKCl9fV0pLGR9KCk7ZnVuY3Rp''@;'; put 'put ''b24gTURlKGQsZyl7ZC53YWxrRG93bihmdW5jdGlvbihoKXt2YXIgdj1oLmRhdGEseT1oLmNoaWxkcztpZighdi5pc0hpZGRlbiYmKGcodi5jb2x1bW5JbmRleCksMD09PXkubGVuZ3RoKSlmb3IodmFyIEM9MTtDPHYuY29sc3BhbjtDKyspZyh2LmNvbHVtbkluZGV4K0MpfSl9ZnVuY3Rpb24g''@;'; put 'put ''VG5lKGQsZyl7dmFyIGg9ZC5jaGlsZHM7aWYoMCE9PWgubGVuZ3RoKXJldHVybiBoWzBdLmRhdGFbZ119ZnVuY3Rpb24gSW5lKGQpe3JldHVybiBUbmUoZCwib3JpZ0NvbHNwYW4iKT09PWQuZGF0YS5vcmlnQ29sc3Bhbn1mdW5jdGlvbiBOZ2UoZCl7dmFyIGc9ZC5kYXRhLGg9ZC5jaGlsZHM7''@;'; put 'put ''aWYoIWcuaXNDb2xsYXBzZWR8fGcuaXNIaWRkZW58fGcub3JpZ0NvbHNwYW48PTEpcmV0dXJue3JvbGxiYWNrTW9kaWZpY2F0aW9uOmZ1bmN0aW9uKCl7fSxhZmZlY3RlZENvbHVtbnM6W10sY29sc3BhbkNvbXBlbnNhdGlvbjowfTtpZihJbmUoZCkpcmV0dXJuIE5nZShoWzBdKTtnLmlzQ29s''@;'; put 'put ''bGFwc2VkPSExO3ZhciB5PWguc2xpY2UoMSksQz1uZXcgU2V0LEk9MDtpZih5Lmxlbmd0aD4wKVVyKHksZnVuY3Rpb24oTmUpe05lLnJlcGxhY2VUcmVlV2l0aChOZS5kYXRhLmNsb25lZFRyZWUpLE5lLmRhdGEuY2xvbmVkVHJlZT1udWxsLEkrPU5lLmRhdGEuY29sc3BhbixNRGUoTmUsZnVu''@;'; put 'put ''Y3Rpb24ocHQpe0MuYWRkKHB0KX0pfSk7ZWxzZXt2YXIgdWU9Zy5vcmlnQ29sc3BhbixfZT1nLmNvbHVtbkluZGV4O0k9dWUtZy5jb2xzcGFuO2Zvcih2YXIgQmU9MTtCZTx1ZTtCZSsrKUMuYWRkKF9lK0JlKX1yZXR1cm4gZC53YWxrVXAoZnVuY3Rpb24oTmUpe3ZhciBLZT1OZS5kYXRhO0tl''@;'; put 'put ''LmNvbHNwYW4rPUksS2UuY29sc3Bhbj49S2Uub3JpZ0NvbHNwYW4/KEtlLmNvbHNwYW49S2Uub3JpZ0NvbHNwYW4sS2UuaXNDb2xsYXBzZWQ9ITEpOkluZShOZSkmJihLZS5pc0NvbGxhcHNlZD1UbmUoTmUsImlzQ29sbGFwc2VkIikpfSkse3JvbGxiYWNrTW9kaWZpY2F0aW9uOmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIFZnZShkKX0sYWZmZWN0ZWRDb2x1bW5zOkFycmF5LmZyb20oQyksY29sc3BhbkNvbXBlbnNhdGlvbjpJfX1mdW5jdGlvbiBWZ2UoZCl7dmFyIGcsaD1kLmRhdGEsdj1kLmNoaWxkcztpZihoLmlzQ29sbGFwc2VkfHxoLmlzSGlkZGVufHxoLm9yaWdDb2xzcGFuPD0xKXJldHVy''@;'; put 'put ''bntyb2xsYmFja01vZGlmaWNhdGlvbjpmdW5jdGlvbigpe30sYWZmZWN0ZWRDb2x1bW5zOltdLGNvbHNwYW5Db21wZW5zYXRpb246MH07aWYoSW5lKGQpKXJldHVybiBWZ2UodlswXSk7aC5pc0NvbGxhcHNlZD0hMDt2YXIgQz12LnNsaWNlKDEpLEk9bmV3IFNldDtpZihDLmxlbmd0aD4wKVVy''@;'; put 'put ''KEMsZnVuY3Rpb24oS2Upe01EZShLZSxmdW5jdGlvbihwdCl7SS5hZGQocHQpfSksS2UuZGF0YS5jbG9uZWRUcmVlPUtlLmNsb25lVHJlZSgpLEtlLndhbGtEb3duKGZ1bmN0aW9uKHB0KXtwdC5kYXRhLmlzSGlkZGVuPSEwfSl9KTtlbHNlIGZvcih2YXIgWj1oLm9yaWdDb2xzcGFuLHVlPWgu''@;'; put 'put ''Y29sdW1uSW5kZXgsX2U9MTtfZTxaO19lKyspSS5hZGQodWUrX2UpO3ZhciBOZT1oLmNvbHNwYW4tKG51bGwhPT0oZz1UbmUoZCwiY29sc3BhbiIpKSYmdm9pZCAwIT09Zz9nOjEpO3JldHVybiBkLndhbGtVcChmdW5jdGlvbihLZSl7dmFyIHB0PUtlLmRhdGE7cHQuY29sc3Bhbi09TmUscHQu''@;'; put 'put ''Y29sc3Bhbjw9MT8ocHQuY29sc3Bhbj0xLHB0LmlzQ29sbGFwc2VkPSEwKTpJbmUoS2UpJiYocHQuaXNDb2xsYXBzZWQ9VG5lKEtlLCJpc0NvbGxhcHNlZCIpKX0pLHtyb2xsYmFja01vZGlmaWNhdGlvbjpmdW5jdGlvbigpe3JldHVybiBOZ2UoZCl9LGFmZmVjdGVkQ29sdW1uczpBcnJheS5m''@;'; put 'put ''cm9tKEkpLGNvbHNwYW5Db21wZW5zYXRpb246TmV9fXZhciBURGU9bmV3IE1hcChbWyJjb2xsYXBzZSIsVmdlXSxbImV4cGFuZCIsTmdlXSxbImhpZGUtY29sdW1uIixmdW5jdGlvbiB2cHQoZCxnKXtpZighTnVtYmVyLmlzSW50ZWdlcihnKSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBwYXNzZWQg''@;'; put 'put ''Z3JpZENvbHVtbkluZGV4IGFyZ3VtZW50IGhhcyBpbnZhbGlkIHR5cGUuIik7aWYoZC5jaGlsZHMubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKFAyKEVEZXx8KEVEZT1mdW5jdGlvbiBtcHQoZCxnKXtyZXR1cm4gZ3x8KGc9ZC5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydGllcyhkLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUoZyl9fSkpfShbIlRoZSBwYXNzZWQgbm9kZSBpcyBub3QgdGhlIGxhc3Qgbm9kZSBvbiB0aGUgdHJlZS4gT25seSBmb3IgXG50aGUgbGFzdCBub2RlLCB0aGUgaGlkZSBjb2x1bW4gbW9kaWZpY2F0aW9uIGNhbiBiZSBhcHBs''@;'; put 'put ''aWVkLiJdLFsiVGhlIHBhc3NlZCBub2RlIGlzIG5vdCB0aGUgbGFzdCBub2RlIG9uIHRoZSB0cmVlLiBPbmx5IGZvclxceDIwXG50aGUgbGFzdCBub2RlLCB0aGUgaGlkZSBjb2x1bW4gbW9kaWZpY2F0aW9uIGNhbiBiZSBhcHBsaWVkLiJdKSkpKTtpZighZC5kYXRhLmNyb3NzSGlkZGVuQ29s''@;'; put 'put ''dW1ucy5pbmNsdWRlcyhnKSl7dmFyIHY9ITE7ZC53YWxrVXAoZnVuY3Rpb24oeSl7aWYoeS5kYXRhLmNvbGxhcHNpYmxlKXJldHVybiB2PSEwLCExfSksIXYmJmQud2Fsa1VwKGZ1bmN0aW9uKHkpe3ZhciBDPXkuZGF0YTtDLmNyb3NzSGlkZGVuQ29sdW1ucy5wdXNoKGcpLEMuY29sc3Bhbj4x''@;'; put 'put ''P0MuY29sc3Bhbi09MTpDLmlzSGlkZGVuPSEwfSl9fV0sWyJzaG93LWNvbHVtbiIsZnVuY3Rpb24geXB0KGQsZyl7aWYoIU51bWJlci5pc0ludGVnZXIoZykpdGhyb3cgbmV3IEVycm9yKCJUaGUgcGFzc2VkIGdyaWRDb2x1bW5JbmRleCBhcmd1bWVudCBoYXMgaW52YWxpZCB0eXBlLiIpO2lm''@;'; put 'put ''KGQuY2hpbGRzLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcihQMih4RGV8fCh4RGU9ZnVuY3Rpb24gQXB0KGQsZyl7cmV0dXJuIGd8fChnPWQuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGcpfX0pKX0o''@;'; put 'put ''WyJUaGUgcGFzc2VkIG5vZGUgaXMgbm90IHRoZSBsYXN0IG5vZGUgb24gdGhlIHRyZWUuIE9ubHkgZm9yIFxudGhlIGxhc3Qgbm9kZSwgdGhlIHNob3cgY29sdW1uIG1vZGlmaWNhdGlvbiBjYW4gYmUgYXBwbGllZC4iXSxbIlRoZSBwYXNzZWQgbm9kZSBpcyBub3QgdGhlIGxhc3Qgbm9kZSBv''@;'; put 'put ''biB0aGUgdHJlZS4gT25seSBmb3JcXHgyMFxudGhlIGxhc3Qgbm9kZSwgdGhlIHNob3cgY29sdW1uIG1vZGlmaWNhdGlvbiBjYW4gYmUgYXBwbGllZC4iXSkpKSk7aWYoZC5kYXRhLmNyb3NzSGlkZGVuQ29sdW1ucy5pbmNsdWRlcyhnKSl7dmFyIHY9ITE7ZC53YWxrVXAoZnVuY3Rpb24oeSl7''@;'; put 'put ''aWYoeS5kYXRhLmNvbGxhcHNpYmxlKXJldHVybiB2PSEwLCExfSksIXYmJmQud2Fsa1VwKGZ1bmN0aW9uKHkpe3ZhciBDPXkuZGF0YTtDLmNyb3NzSGlkZGVuQ29sdW1ucy5zcGxpY2UoQy5jcm9zc0hpZGRlbkNvbHVtbnMuaW5kZXhPZihnKSwxKSwhQy5pc0hpZGRlbiYmQy5jb2xzcGFuPEMu''@;'; put 'put ''b3JpZ0NvbHNwYW4mJihDLmNvbHNwYW4rPTEpLEMuaXNIaWRkZW49ITF9KX19XV0pLGJwdD1bImNyb3NzSGlkZGVuQ29sdW1ucyJdO2Z1bmN0aW9uIERuZShkKXt2YXIgZz1bXTtyZXR1cm4gVXIoZCxmdW5jdGlvbihoKXtoLndhbGtEb3duKGZ1bmN0aW9uKHYpe2Zvcih2YXIgeT12LmRhdGEs''@;'; put 'put ''Qz15Lm9yaWdDb2xzcGFuLEk9eS5jb2x1bW5JbmRleCx1ZT15LmNyb3NzSGlkZGVuQ29sdW1ucyxfZT1mdW5jdGlvbiBTcHQoZCxnKXt2YXIgaDtyZXR1cm4gQXJyYXkuaXNBcnJheShkW2ddKT9oPWRbZ106ZFtnXT1oPVtdLGh9KGcseS5oZWFkZXJMZXZlbCksQmU9ITEsTmU9STtOZTxJK0M7''@;'; put 'put ''TmUrKylpZih1ZS5pbmNsdWRlcyhOZSl8fEJlKV9lLnB1c2goe2xhYmVsOiIiLGlzUGxhY2Vob2xkZXI6ITB9KTtlbHNle3ZhciBwdD1rcHQoeSk7cHQuaXNSb290PSEwLF9lLnB1c2gocHQpLEJlPSEwfX0pfSksZ31mdW5jdGlvbiBrcHQoZCl7cmV0dXJuIGZ1bmN0aW9uIF9wdChkLGcpe2lm''@;'; put 'put ''KG51bGw9PWQpcmV0dXJue307dmFyIHYseSxoPWZ1bmN0aW9uIENwdChkLGcpe2lmKG51bGw9PWQpcmV0dXJue307dmFyIHksQyxoPXt9LHY9T2JqZWN0LmtleXMoZCk7Zm9yKEM9MDtDPHYubGVuZ3RoO0MrKykhKGcuaW5kZXhPZih5PXZbQ10pPj0wKSYmKGhbeV09ZFt5XSk7cmV0dXJuIGh9''@;'; put 'put ''KGQsZyk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkKTtmb3IoeT0wO3k8Qy5sZW5ndGg7eSsrKSEoZy5pbmRleE9mKHY9Q1t5XSk+PTApJiYoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUu''@;'; put 'put ''Y2FsbChkLHYpfHwoaFt2XT1kW3ZdKSl9cmV0dXJuIGh9KE9nZShkKSxicHQpfXZhciBNcHQ9WyJyb3ciXTtmdW5jdGlvbiBJRGUoZCxnKXt2YXIgaD1PYmplY3Qua2V5cyhkKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgdj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i''@;'; put 'put ''b2xzKGQpO2cmJih2PXYuZmlsdGVyKGZ1bmN0aW9uKHkpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQseSkuZW51bWVyYWJsZX0pKSxoLnB1c2guYXBwbHkoaCx2KX1yZXR1cm4gaH1mdW5jdGlvbiBERGUoZCl7Zm9yKHZhciBnPTE7Zzxhcmd1bWVudHMubGVuZ3Ro''@;'; put 'put ''O2crKyl7dmFyIGg9bnVsbCE9YXJndW1lbnRzW2ddP2FyZ3VtZW50c1tnXTp7fTtnJTI/SURlKE9iamVjdChoKSwhMCkuZm9yRWFjaChmdW5jdGlvbih2KXtFcHQoZCx2LGhbdl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCxP''@;'; put 'put ''YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhoKSk6SURlKE9iamVjdChoKSkuZm9yRWFjaChmdW5jdGlvbih2KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaCx2KSl9KX1yZXR1cm4gZH1mdW5jdGlvbiBFcHQoZCxnLGgp''@;'; put 'put ''e3JldHVybiBnIGluIGQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZyx7dmFsdWU6aCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmRbZ109aCxkfWZ1bmN0aW9uIExEZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51''@;'; put 'put ''bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIGpnZShkLGcsaCl7KGZ1bmN0aW9uIExwdChkLGcpe2lmKGcuaGFzKGQpKXRocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShkLGcpLGcuc2V0KGQsaCl9ZnVuY3Rpb24gSHooZCxnLGgpe3JldHVybiBmdW5jdGlvbiBPcHQoZCxnLGgpe2lmKGcuc2V0KWcuc2V0LmNhbGwoZCxo''@;'; put 'put ''KTtlbHNle2lmKCFnLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtnLnZhbHVlPWh9fShkLE9EZShkLGcsInNldCIpLGgpLGh9ZnVuY3Rpb24gTXUoZCxnKXtyZXR1cm4gZnVuY3Rpb24gUnB0KGQsZyl7cmV0''@;'; put 'put ''dXJuIGcuZ2V0P2cuZ2V0LmNhbGwoZCk6Zy52YWx1ZX0oZCxPRGUoZCxnLCJnZXQiKSl9ZnVuY3Rpb24gT0RlKGQsZyxoKXtpZighZy5oYXMoZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIraCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGcu''@;'; put 'put ''Z2V0KGQpfXZhciBOZz1uZXcgV2Vha01hcCxfND1uZXcgV2Vha01hcCx5TT1uZXcgV2Vha01hcCxCcHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKCl7KGZ1bmN0aW9uIElwdChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3Mg''@;'; put 'put ''YXMgYSBmdW5jdGlvbiIpfSkodGhpcyxkKSxqZ2UodGhpcyxOZyx7d3JpdGFibGU6ITAsdmFsdWU6bmV3IFc0dH0pLGpnZSh0aGlzLF80LHt3cml0YWJsZTohMCx2YWx1ZTpuZXcgZ3B0KE11KHRoaXMsTmcpKX0pLGpnZSh0aGlzLHlNLHt3cml0YWJsZTohMCx2YWx1ZTpbW11dfSl9cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uIERwdChkLGcsaCl7ZyYmTERlKGQucHJvdG90eXBlLGcpLGgmJkxEZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJzZXRTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oaCl7TXUodGhpcyxOZykuc2V0RGF0YSho''@;'; put 'put ''KTt2YXIgdj0hMTt0cnl7TXUodGhpcyxfNCkuYnVpbGRUcmVlKCl9Y2F0Y2goeSl7TXUodGhpcyxfNCkuY2xlYXIoKSxNdSh0aGlzLE5nKS5jbGVhcigpLHY9ITB9cmV0dXJuIEh6KHRoaXMseU0sRG5lKE11KHRoaXMsXzQpLmdldFJvb3RzKCkpKSx2fX0se2tleToic2V0Q29sdW1uc0xpbWl0''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbihoKXtNdSh0aGlzLE5nKS5zZXRDb2x1bW5zTGltaXQoaCl9fSx7a2V5OiJtZXJnZVN0YXRlV2l0aCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcyx5PU9sKGgsZnVuY3Rpb24oQyl7dmFyIEk9Qy5yb3csWj1mdW5jdGlvbiB4cHQoZCxnKXtpZihudWxsPT1k''@;'; put 'put ''KXJldHVybnt9O3ZhciB2LHksaD1mdW5jdGlvbiBUcHQoZCxnKXtpZihudWxsPT1kKXJldHVybnt9O3ZhciB5LEMsaD17fSx2PU9iamVjdC5rZXlzKGQpO2ZvcihDPTA7Qzx2Lmxlbmd0aDtDKyspIShnLmluZGV4T2YoeT12W0NdKT49MCkmJihoW3ldPWRbeV0pO3JldHVybiBofShkLGcpO2lm''@;'; put 'put ''KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZCk7Zm9yKHk9MDt5PEMubGVuZ3RoO3krKykhKGcuaW5kZXhPZih2PUNbeV0pPj0wKSYmKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZCx2''@;'; put 'put ''KXx8KGhbdl09ZFt2XSkpfXJldHVybiBofShDLE1wdCk7cmV0dXJuIEREZSh7cm93Okk8MD92LnJvd0Nvb3Jkc1RvTGV2ZWwoSSk6SX0sWil9KTtNdSh0aGlzLE5nKS5tZXJnZVdpdGgoeSksTXUodGhpcyxfNCkuYnVpbGRUcmVlKCksSHoodGhpcyx5TSxEbmUoTXUodGhpcyxfNCkuZ2V0Um9v''@;'; put 'put ''dHMoKSkpfX0se2tleToibWFwU3RhdGUiLHZhbHVlOmZ1bmN0aW9uKGgpe011KHRoaXMsTmcpLm1hcChoKSxNdSh0aGlzLF80KS5idWlsZFRyZWUoKSxIeih0aGlzLHlNLERuZShNdSh0aGlzLF80KS5nZXRSb290cygpKSl9fSx7a2V5OiJtYXBOb2RlcyIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0''@;'; put 'put ''dXJuIFN1KE11KHRoaXMsXzQpLmdldFJvb3RzKCksZnVuY3Rpb24odix5KXtyZXR1cm4geS53YWxrRG93bihmdW5jdGlvbihDKXt2YXIgST1oKEMuZGF0YSk7dm9pZCAwIT09SSYmdi5wdXNoKEkpfSksdn0sW10pfX0se2tleToidHJpZ2dlck5vZGVNb2RpZmljYXRpb24iLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKGgsdix5KXt2PDAmJih2PXRoaXMucm93Q29vcmRzVG9MZXZlbCh2KSk7dmFyIEksQz1NdSh0aGlzLF80KS5nZXROb2RlKHYseSk7cmV0dXJuIEMmJihJPWZ1bmN0aW9uIHdwdChkLGcsaCl7aWYoIVREZS5oYXMoZCkpdGhyb3cgbmV3IEVycm9yKCdUaGUgbm9kZSBtb2RpZmllciBhY3Rp''@;'; put 'put ''b24gKCInLmNvbmNhdChkLCciKSBkb2VzIG5vdCBleGlzdC4nKSk7cmV0dXJuIFREZS5nZXQoZCkoZyxoKX0oaCxDLHkpLEh6KHRoaXMseU0sRG5lKE11KHRoaXMsXzQpLmdldFJvb3RzKCkpKSksSX19LHtrZXk6InRyaWdnZXJDb2x1bW5Nb2RpZmljYXRpb24iLHZhbHVlOmZ1bmN0aW9uKGgs''@;'; put 'put ''dil7cmV0dXJuIHRoaXMudHJpZ2dlck5vZGVNb2RpZmljYXRpb24oaCwtMSx2KX19LHtrZXk6InJvd0Nvb3Jkc1RvTGV2ZWwiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PU1hdGgubWF4KHRoaXMuZ2V0TGF5ZXJzQ291bnQoKSwxKSx5PXYtMTtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoaCt2''@;'; put 'put ''LDApLHkpfX0se2tleToibGV2ZWxUb1Jvd0Nvb3JkcyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9TWF0aC5tYXgodGhpcy5nZXRMYXllcnNDb3VudCgpLDEpO3JldHVybiBNYXRoLm1pbihNYXRoLm1heChoLXYsLXYpLC0xKX19LHtrZXk6ImdldEhlYWRlclNldHRpbmdzIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbihoLHYpe3ZhciB5LEM7cmV0dXJuIGg8MCYmKGg9dGhpcy5yb3dDb29yZHNUb0xldmVsKGgpKSxoPj10aGlzLmdldExheWVyc0NvdW50KCk/bnVsbDpudWxsIT09KHk9bnVsbD09PShDPU11KHRoaXMseU0pW2hdKXx8dm9pZCAwPT09Qz92b2lkIDA6Q1t2XSkmJnZvaWQgMCE9PXk/eTpu''@;'; put 'put ''dWxsfX0se2tleToiZ2V0SGVhZGVyVHJlZU5vZGVEYXRhIix2YWx1ZTpmdW5jdGlvbihoLHYpe2g8MCYmKGg9dGhpcy5yb3dDb29yZHNUb0xldmVsKGgpKTt2YXIgeT1NdSh0aGlzLF80KS5nZXROb2RlKGgsdik7cmV0dXJuIHk/RERlKHt9LHkuZGF0YSk6bnVsbH19LHtrZXk6ImZpbmRMZWZ0''@;'; put 'put ''TW9zdENvbHVtbkluZGV4Iix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5O2lmKChudWxsIT09KHk9dGhpcy5nZXRIZWFkZXJTZXR0aW5ncyhoLHYpKSYmdm9pZCAwIT09eT95Ontpc1Jvb3Q6ITB9KS5pc1Jvb3QpcmV0dXJuIHY7Zm9yKHZhciBaPXYtMTtaPj0wOyl7dmFyIHVlO2lmKChudWxs''@;'; put 'put ''IT09KHVlPXRoaXMuZ2V0SGVhZGVyU2V0dGluZ3MoaCxaKSkmJnZvaWQgMCE9PXVlP3VlOntpc1Jvb3Q6ITB9KS5pc1Jvb3QpYnJlYWs7Wi09MX1yZXR1cm4gWn19LHtrZXk6ImdldExheWVyc0NvdW50Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBNdSh0aGlzLE5nKS5nZXRMYXllcnNDb3Vu''@;'; put 'put ''dCgpfX0se2tleToiZ2V0Q29sdW1uc0NvdW50Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBNdSh0aGlzLE5nKS5nZXRDb2x1bW5zQ291bnQoKX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe0h6KHRoaXMseU0sW10pLE11KHRoaXMsTmcpLmNsZWFyKCksTXUodGhpcyxfNCkuY2xl''@;'; put 'put ''YXIoKX19XSksZH0oKTtmdW5jdGlvbiBSRGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBOeihkLGcsaCl7cmV0dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9dmFyIEhwdD1mdW5jdGlvbigpe2Z1bmN0aW9u''@;'; put 'put ''IGQoZyxoKXsoZnVuY3Rpb24gUHB0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGQpLE56KHRoaXMsImhvdCIsdm9pZCAwKSxOeih0aGlzLCJuZXN0ZWRIZWFkZXJTZXR0aW5n''@;'; put 'put ''c0dldHRlciIsdm9pZCAwKSxOeih0aGlzLCJsYXllcnNDb3VudCIsMCksTnoodGhpcywiY29udGFpbmVyIix2b2lkIDApLE56KHRoaXMsIndpZHRoc01hcCIsdm9pZCAwKSx0aGlzLmhvdD1nLHRoaXMubmVzdGVkSGVhZGVyU2V0dGluZ3NHZXR0ZXI9aCx0aGlzLndpZHRoc01hcD10aGlzLmhv''@;'; put 'put ''dC5jb2x1bW5JbmRleE1hcHBlci5jcmVhdGVBbmRSZWdpc3RlckluZGV4TWFwKCJuZXN0ZWRIZWFkZXJzLndpZHRoc01hcCIsInBoeXNpY2FsSW5kZXhUb1ZhbHVlIil9cmV0dXJuIGZ1bmN0aW9uIEZwdChkLGcsaCl7ZyYmUkRlKGQucHJvdG90eXBlLGcpLGgmJlJEZShkLGgpLE9iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJzZXRMYXllcnNDb3VudCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMubGF5ZXJzQ291bnQ9aCx0aGlzfX0se2tleToiZ2V0V2lkdGgiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlz''@;'; put 'put ''LndpZHRoc01hcC5nZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihoKSl9fSx7a2V5OiJidWlsZFdpZHRoc01hcCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNvbnRhaW5lcj10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5jb250''@;'; put 'put ''YWluZXIuY2xhc3NMaXN0LmFkZCgiaGFuZHNvbnRhYmxlIiwiaHRHaG9zdFRhYmxlIiwiaHRBdXRvU2l6ZSIpLHRoaXMuX2J1aWxkR2hvc3RUYWJsZSh0aGlzLmNvbnRhaW5lciksdGhpcy5ob3Qucm9vdERvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXIpO3ZhciBoPXRo''@;'; put 'put ''aXMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoInRyOmxhc3Qtb2YtdHlwZSB0aCIpLHY9aC5sZW5ndGg7dGhpcy53aWR0aHNNYXAuY2xlYXIoKTtmb3IodmFyIHk9MDt5PHY7eSsrKXt2YXIgQz10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUlu''@;'; put 'put ''ZGV4KHkpLEk9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihDKTt0aGlzLndpZHRoc01hcC5zZXRWYWx1ZUF0SW5kZXgoSSxoW3ldLm9mZnNldFdpZHRoKX10aGlzLmNvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuY29udGFpbmVyKSx0aGlzLmNvbnRhaW5lcj1udWxsfX0s''@;'; put 'put ''e2tleToiX2J1aWxkR2hvc3RUYWJsZSIsdmFsdWU6ZnVuY3Rpb24oaCl7Zm9yKHZhciB2PXRoaXMuaG90LHk9di5yb290RG9jdW1lbnQsQz12LmNvbHVtbkluZGV4TWFwcGVyLEk9eS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksWj15LmNyZWF0ZUVsZW1lbnQoInRhYmxlIiksdWU9ISF0aGlz''@;'; put 'put ''LmhvdC5nZXRTZXR0aW5ncygpLmRyb3Bkb3duTWVudSxfZT1DLmdldFJlbmRlcmFibGVJbmRleGVzTGVuZ3RoKCksQmU9MDtCZTx0aGlzLmxheWVyc0NvdW50O0JlKyspe2Zvcih2YXIgTmU9eS5jcmVhdGVFbGVtZW50KCJ0ciIpLEtlPTA7S2U8X2U7S2UrKyl7dmFyIHB0PUMuZ2V0VmlzdWFs''@;'; put 'put ''RnJvbVJlbmRlcmFibGVJbmRleChLZSk7bnVsbD09PXB0JiYocHQ9S2UpO3ZhciBPdD15LmNyZWF0ZUVsZW1lbnQoInRoIiksJHQ9dGhpcy5uZXN0ZWRIZWFkZXJTZXR0aW5nc0dldHRlcihCZSxwdCk7aWYoJHQmJighJHQuaXNQbGFjZWhvbGRlcnx8JHQuaXNIaWRkZW4pKXt2YXIgZm49JHQu''@;'; put 'put ''bGFiZWw7dWUmJihmbis9JzxidXR0b24gY2xhc3M9ImNoYW5nZVR5cGUiPjwvYnV0dG9uPicpLGt3KE90LGZuKSxPdC5jb2xTcGFuPSR0LmNvbHNwYW4sTmUuYXBwZW5kQ2hpbGQoT3QpfX1aLmFwcGVuZENoaWxkKE5lKX1JLmFwcGVuZENoaWxkKFopLGguYXBwZW5kQ2hpbGQoSSl9fSx7a2V5''@;'; put 'put ''OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLndpZHRoc01hcC5jbGVhcigpLHRoaXMuY29udGFpbmVyPW51bGx9fV0pLGR9KCk7Y29uc3QgTnB0PUhwdDtmdW5jdGlvbiBaZ2UoZCl7cmV0dXJuKFpnZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5''@;'; put 'put ''bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfXZhciBC''@;'; put 'put ''RGUsUERlO2Z1bmN0aW9uIEZEZShkLGcpe3JldHVybiBnfHwoZz1kLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGQse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZShnKX19KSl9ZnVuY3Rpb24gVnB0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhy''@;'; put 'put ''b3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gSERlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVl''@;'; put 'put ''ImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gd00oKXtyZXR1cm4gd009InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PVpw''@;'; put 'put ''dChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sd00uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFpwdChkLGcpe2Zvcig7IU9i''@;'; put 'put ''amVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9ZTkoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gemdlKGQsZyl7cmV0dXJuKHpnZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3Jl''@;'; put 'put ''dHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIFdwdChkLGcpe2lmKGcmJigib2JqZWN0Ij09PVpnZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9u''@;'; put 'put ''bHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gVnooZCl9ZnVuY3Rpb24gVnooZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVy''@;'; put 'put ''biBkfWZ1bmN0aW9uIGU5KGQpe3JldHVybihlOT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihoKXtyZXR1cm4gaC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihoKX0pKGQpfWZ1bmN0aW9uIE5EZShkLGcsaCl7cmV0''@;'; put 'put ''dXJuIGcgaW4gZD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZCxnLHt2YWx1ZTpoLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZFtnXT1oLGR9ZnVuY3Rpb24gVkRlKGQsZyxoKXsoZnVuY3Rpb24gVXB0KGQsZyl7aWYoZy5oYXMoZCkpdGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKGQsZyksZy5zZXQoZCxoKX1mdW5jdGlvbiBMbmUoZCxnLGgpe3JldHVybiBmdW5jdGlvbiBRcHQoZCxnLGgpe2lmKGcuc2V0KWcuc2V0LmNhbGwoZCxoKTtlbHNl''@;'; put 'put ''e2lmKCFnLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtnLnZhbHVlPWh9fShkLGpEZShkLGcsInNldCIpLGgpLGh9ZnVuY3Rpb24gcGMoZCxnKXtyZXR1cm4gZnVuY3Rpb24gSnB0KGQsZyl7cmV0dXJuIGcu''@;'; put 'put ''Z2V0P2cuZ2V0LmNhbGwoZCk6Zy52YWx1ZX0oZCxqRGUoZCxnLCJnZXQiKSl9ZnVuY3Rpb24gakRlKGQsZyxoKXtpZighZy5oYXMoZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIraCsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGcuZ2V0KGQp''@;'; put 'put ''fXZhciBaRGU9Im5lc3RlZEhlYWRlcnMiLGFmPW5ldyBXZWFrTWFwLEp3PW5ldyBXZWFrTWFwLEtwdD1mdW5jdGlvbihkKXshZnVuY3Rpb24genB0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVz''@;'; put 'put ''dCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3''@;'; put 'put ''cml0YWJsZTohMX0pLGcmJnpnZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIEdwdChkKXt2YXIgZz1mdW5jdGlvbiBZcHQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHks''@;'; put 'put ''dj1lOShkKTtpZihnKXt2YXIgQz1lOSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gV3B0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKCl7dmFyIHY7VnB0KHRoaXMsaCk7Zm9y''@;'; put 'put ''KHZhciB5PWFyZ3VtZW50cy5sZW5ndGgsQz1uZXcgQXJyYXkoeSksST0wO0k8eTtJKyspQ1tJXT1hcmd1bWVudHNbSV07cmV0dXJuIFZEZShWeih2PWcuY2FsbC5hcHBseShnLFt0aGlzXS5jb25jYXQoQykpKSxhZix7d3JpdGFibGU6ITAsdmFsdWU6bmV3IEJwdH0pLFZEZShWeih2KSxKdyx7''@;'; put 'put ''d3JpdGFibGU6ITAsdmFsdWU6bnVsbH0pLE5EZShWeih2KSwiZ2hvc3RUYWJsZSIsbmV3IE5wdCh2LmhvdCxmdW5jdGlvbihaLHVlKXtyZXR1cm4gdi5nZXRIZWFkZXJTZXR0aW5ncyhaLHVlKX0pKSxORGUoVnoodiksImRldGVjdGVkT3ZlcmxhcHBlZEhlYWRlcnMiLCExKSx2fXJldHVybiBm''@;'; put 'put ''dW5jdGlvbiBqcHQoZCxnLGgpe2cmJkhEZShkLnByb3RvdHlwZSxnKSxoJiZIRGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0''@;'; put 'put ''dGluZ3MoKVtaRGVdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7aWYoIXRoaXMuZW5hYmxlZCl7dmFyIEk9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5uZXN0ZWRIZWFkZXJzOyghQXJyYXkuaXNBcnJheShJKXx8IUFycmF5LmlzQXJyYXkoSVswXSkp''@;'; put 'put ''JiZsMShQMihCRGV8fChCRGU9RkRlKFsiWW91ciBOZXN0ZWQgSGVhZGVycyBwbHVnaW4gY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkLiBUaGUgc2V0dGluZ3MgaGFzIHRvIGJlIFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkIGFzIGFuIGFycmF5IG9mIGFycmF5cyBlLnEuIFtbJ0Ex''@;'; put 'put ''JywgeyBsYWJlbDogJ0EyJywgY29sc3BhbjogMiB9XV0iXSxbIllvdXIgTmVzdGVkIEhlYWRlcnMgcGx1Z2luIGNvbmZpZ3VyYXRpb24gaXMgaW52YWxpZC4gVGhlIHNldHRpbmdzIGhhcyB0byBiZVxceDIwXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgYXMgYW4gYXJyYXkgb2Yg''@;'; put 'put ''YXJyYXlzIGUucS4gW1snQTEnLCB7IGxhYmVsOiAnQTInLCBjb2xzcGFuOiAyIH1dXSJdKSkpKSx0aGlzLmFkZEhvb2soImluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25Jbml0KCl9KSx0aGlzLmFkZEhvb2soImFmdGVyTG9hZERhdGEiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckxv''@;'; put 'put ''YWREYXRhLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VEb3duIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQmVmb3JlT25DZWxsTW91c2VEb3duLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJPbkNlbGxNb3VzZURvd24i''@;'; put 'put ''LGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlck9uQ2VsbE1vdXNlRG93bi5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZU9uQ2VsbE1vdXNlT3ZlciIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkJlZm9yZU9uQ2VsbE1vdXNlT3Zlci5hcHBseSh5LGFyZ3VtZW50cyl9''@;'; put 'put ''KSx0aGlzLmFkZEhvb2soImFmdGVyR2V0Q29sdW1uSGVhZGVyUmVuZGVyZXJzIixmdW5jdGlvbihaKXtyZXR1cm4geS5vbkFmdGVyR2V0Q29sdW1uSGVhZGVyUmVuZGVyZXJzKFopfSksdGhpcy5hZGRIb29rKCJtb2RpZnlDb2xXaWR0aCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbk1vZGlmeUNv''@;'; put 'put ''bFdpZHRoLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0''@;'; put 'put ''ZXJWaWV3cG9ydENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZSIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyVmlld3BvcnRDb2x1bW5DYWxjdWxhdG9yT3ZlcnJpZGUuYXBwbHkoeSxhcmd1bWVudHMpfSksd00oZTkoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhp''@;'; put 'put ''cyksdGhpcy51cGRhdGVQbHVnaW4oKX19fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztpZih0aGlzLmhvdC52aWV3KXt2YXIgST10aGlzLmhvdC5nZXRTZXR0aW5ncygpLm5lc3RlZEhlYWRlcnM7cGModGhpcyxhZikuc2V0Q29sdW1uc0xpbWl0KHRo''@;'; put 'put ''aXMuaG90LmNvdW50Q29scygpKSxBcnJheS5pc0FycmF5KEkpJiYodGhpcy5kZXRlY3RlZE92ZXJsYXBwZWRIZWFkZXJzPXBjKHRoaXMsYWYpLnNldFN0YXRlKEkpKSx0aGlzLmRldGVjdGVkT3ZlcmxhcHBlZEhlYWRlcnMmJmwxKFAyKFBEZXx8KFBEZT1GRGUoWyJZb3VyIE5lc3RlZCBIZWFk''@;'; put 'put ''ZXJzIHBsdWdpbiBzZXR1cCBjb250YWlucyBvdmVybGFwcGluZyBoZWFkZXJzLiBUaGlzIGtpbmQgb2YgY29uZmlndXJhdGlvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLiJdLFsiWW91ciBOZXN0ZWQgSGVhZGVycyBwbHVnaW4gc2V0dXAg''@;'; put 'put ''Y29udGFpbnMgb3ZlcmxhcHBpbmcgaGVhZGVycy4gVGhpcyBraW5kIG9mIGNvbmZpZ3VyYXRpb25cXHgyMFxuICAgICAgICAgICAgICAgICAgICAgICAgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuIl0pKSkpLHRoaXMuZW5hYmxlZCYmdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuaGlk''@;'; put 'put ''aW5nTWFwc0NvbGxlY3Rpb24uZ2V0TWVyZ2VkVmFsdWVzKCkuZm9yRWFjaChmdW5jdGlvbihaLHVlKXt2YXIgX2U9ITA9PT1aPyJoaWRlLWNvbHVtbiI6InNob3ctY29sdW1uIjtwYyh5LGFmKS50cmlnZ2VyQ29sdW1uTW9kaWZpY2F0aW9uKF9lLHVlKX0pLCFwYyh0aGlzLEp3KSYmdGhpcy5l''@;'; put 'put ''bmFibGVkJiZMbmUodGhpcyxKdyx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5jcmVhdGVDaGFuZ2VzT2JzZXJ2ZXIoImhpZGluZyIpLnN1YnNjcmliZShmdW5jdGlvbihaKXtaLmZvckVhY2goZnVuY3Rpb24odWUpe3ZhciBCZT11ZS5pbmRleDtpZigicmVwbGFjZSI9PT11ZS5vcCl7dmFy''@;'; put 'put ''IEtlPSEwPT09dWUubmV3VmFsdWU/ImhpZGUtY29sdW1uIjoic2hvdy1jb2x1bW4iO3BjKHksYWYpLnRyaWdnZXJDb2x1bW5Nb2RpZmljYXRpb24oS2UsQmUpfX0pLHkuZ2hvc3RUYWJsZS5idWlsZFdpZHRoc01hcCgpfSkpLHRoaXMuZ2hvc3RUYWJsZS5zZXRMYXllcnNDb3VudCh0aGlzLmdl''@;'; put 'put ''dExheWVyc0NvdW50KCkpLmJ1aWxkV2lkdGhzTWFwKCksd00oZTkoaC5wcm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsZWFyQ29sc3BhbnMoKSxwYyh0aGlzLGFmKS5jbGVhcigp''@;'; put 'put ''LHBjKHRoaXMsSncpLnVuc3Vic2NyaWJlKCksTG5lKHRoaXMsSncsbnVsbCksdGhpcy5naG9zdFRhYmxlLmNsZWFyKCksd00oZTkoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZ2V0U3RhdGVNYW5hZ2VyIix2YWx1ZTpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBwYyh0aGlzLGFmKX19LHtrZXk6ImdldExheWVyc0NvdW50Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBwYyh0aGlzLGFmKS5nZXRMYXllcnNDb3VudCgpfX0se2tleToiZ2V0SGVhZGVyU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKHksQyl7cmV0dXJuIHBjKHRoaXMsYWYpLmdldEhl''@;'; put 'put ''YWRlclNldHRpbmdzKHksQyl9fSx7a2V5OiJjbGVhckNvbHNwYW5zIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuaG90LnZpZXcpZm9yKHZhciB5PXRoaXMuaG90LnZpZXcuX3d0LEM9eS5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIikubGVuZ3RoLEk9eS53dFRhYmxlLlRIRUFELFo9eS53''@;'; put 'put ''dE92ZXJsYXlzLnRvcE92ZXJsYXkuY2xvbmUud3RUYWJsZS5USEVBRCx1ZT15Lnd0T3ZlcmxheXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5P3kud3RPdmVybGF5cy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkuY2xvbmUud3RUYWJsZS5USEVBRDpudWxsLF9lPTA7X2U8QztfZSsr''@;'; put 'put ''KXt2YXIgQmU9SS5jaGlsZE5vZGVzW19lXTtpZighQmUpYnJlYWs7Zm9yKHZhciBOZT1aLmNoaWxkTm9kZXNbX2VdLEtlPXVlP3VlLmNoaWxkTm9kZXNbX2VdOm51bGwscHQ9MCxPdD1CZS5jaGlsZE5vZGVzLmxlbmd0aDtwdDxPdDtwdCsrKUJlLmNoaWxkTm9kZXNbcHRdLnJlbW92ZUF0dHJp''@;'; put 'put ''YnV0ZSgiY29sc3BhbiIpLHBsKEJlLmNoaWxkTm9kZXNbcHRdLCJoaWRkZW5IZWFkZXIiKSxOZSYmTmUuY2hpbGROb2Rlc1twdF0mJihOZS5jaGlsZE5vZGVzW3B0XS5yZW1vdmVBdHRyaWJ1dGUoImNvbHNwYW4iKSxwbChOZS5jaGlsZE5vZGVzW3B0XSwiaGlkZGVuSGVhZGVyIikpLHVlJiZL''@;'; put 'put ''ZSYmS2UuY2hpbGROb2Rlc1twdF0mJihLZS5jaGlsZE5vZGVzW3B0XS5yZW1vdmVBdHRyaWJ1dGUoImNvbHNwYW4iKSxwbChLZS5jaGlsZE5vZGVzW3B0XSwiaGlkZGVuSGVhZGVyIikpfX19LHtrZXk6ImhlYWRlclJlbmRlcmVyRmFjdG9yeSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhp''@;'; put 'put ''cyxJPXRoaXMuaG90LnZpZXcuX3d0LmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0Iik7cmV0dXJuIGZ1bmN0aW9uKFosdWUpe3ZhciBfZSxCZT1DLmhvdCxOZT1CZS5yb290RG9jdW1lbnQscHQ9QmUudmlldyxPdD1CZS5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVy''@;'; put 'put ''YWJsZUluZGV4KFopO251bGw9PT1PdCYmKE90PVopLHVlLnJlbW92ZUF0dHJpYnV0ZSgiY29sc3BhbiIpLHBsKHVlLCJoaWRkZW5IZWFkZXIiKTt2YXIgJHQ9bnVsbCE9PShfZT1wYyhDLGFmKS5nZXRIZWFkZXJTZXR0aW5ncyh5LE90KSkmJnZvaWQgMCE9PV9lP19lOntsYWJlbDoiIn0sZm49''@;'; put 'put ''JHQuY29sc3BhbixMbj0kdC5sYWJlbDtpZigkdC5pc1BsYWNlaG9sZGVyfHwkdC5pc0hpZGRlbilPMCh1ZSwiaGlkZGVuSGVhZGVyIik7ZWxzZSBpZihmbj4xKXt2YXIgU3Isd3IsUXI9cHQuX3d0Lnd0T3ZlcmxheXMseWk9bnVsbD09PShTcj1Rci50b3BJbmxpbmVTdGFydENvcm5lck92ZXJs''@;'; put 'put ''YXkpfHx2b2lkIDA9PT1Tcj92b2lkIDA6U3IuY2xvbmUud3RUYWJsZS5USEVBRC5jb250YWlucyh1ZSksS2k9bnVsbD09PSh3cj1Rci5pbmxpbmVTdGFydE92ZXJsYXkpfHx2b2lkIDA9PT13cj92b2lkIDA6d3IuY2xvbmUud3RUYWJsZS5USEVBRC5jb250YWlucyh1ZSksU289eWl8fEtpP01h''@;'; put 'put ''dGgubWluKGZuLEktWik6Zm47U28+MSYmdWUuc2V0QXR0cmlidXRlKCJjb2xzcGFuIixTbyl9dmFyIFBvPU5lLmNyZWF0ZUVsZW1lbnQoImRpdiIpLFNhPU5lLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtPMChQbywicmVsYXRpdmUiKSxPMChTYSwiY29sSGVhZGVyIiksa3coU2EsTG4pLFBvLmFw''@;'; put 'put ''cGVuZENoaWxkKFNhKSxEcCh1ZSksdWUuYXBwZW5kQ2hpbGQoUG8pLEMuaG90LnJ1bkhvb2tzKCJhZnRlckdldENvbEhlYWRlciIsT3QsdWUpfX19LHtrZXk6Im9uQmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyIix2YWx1ZTpmdW5jdGlvbih5LEMsSSl7dmFyIFo9cGModGhpcyxhZiku''@;'; put 'put ''Z2V0SGVhZGVyVHJlZU5vZGVEYXRhKEMseSk7aWYoIVopcmV0dXJuIHk7dmFyIHVlPUkuY2xhc3NOYW1lcyxfZT1JLmNvbHVtbkN1cnNvcixCZT1JLnNlbGVjdGlvblR5cGUsTmU9SS5zZWxlY3Rpb25XaWR0aCxLZT1wYyh0aGlzLGFmKS5nZXRIZWFkZXJTZXR0aW5ncyhDLHkpLHB0PUtlLmlz''@;'; put 'put ''Um9vdDtpZihCZT09PWx6KXtpZighcHQpcmV0dXJuIFouY29sdW1uSW5kZXh9ZWxzZSBCZT09PWl0ZSYmKEtlLmNvbHNwYW4+TmUtX2V8fCFwdCkmJih1ZS5sZW5ndGg9MCk7cmV0dXJuIHl9fSx7a2V5OiJvbkJlZm9yZU9uQ2VsbE1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksWil7''@;'; put 'put ''dGhpcy5fZ2V0SGVhZGVyVHJlZU5vZGVEYXRhQnlDb29yZHMoQykmJihaLmNvbHVtbj0hMCl9fSx7a2V5OiJvbkFmdGVyT25DZWxsTW91c2VEb3duIix2YWx1ZTpmdW5jdGlvbih5LEMpe3ZhciBJPXRoaXMuX2dldEhlYWRlclRyZWVOb2RlRGF0YUJ5Q29vcmRzKEMpO2lmKEkpe3ZhciBaPXRo''@;'; put 'put ''aXMuaG90LnNlbGVjdGlvbix1ZT1aLmlzU2VsZWN0ZWQoKT9aLmdldFNlbGVjdGVkUmFuZ2UoKS5jdXJyZW50KCk6bnVsbCxfZT1bXSxCZT1JLmNvbHVtbkluZGV4LE5lPUkub3JpZ0NvbHNwYW4sS2U9IVouaW5JblNlbGVjdGlvbihDKTt5LnNoaWZ0S2V5JiZ1ZT9DLmNvbDx1ZS5mcm9tLmNv''@;'; put 'put ''bD9fZS5wdXNoKHVlLmdldFRvcEVuZENvcm5lcigpLmNvbCxCZSxDLnJvdyk6X2UucHVzaChDLmNvbD51ZS5mcm9tLmNvbD91ZS5nZXRUb3BTdGFydENvcm5lcigpLmNvbDpCZSxCZStOZS0xLEMucm93KToob2VlKHkpfHxFdyh5KSYmS2UpJiZfZS5wdXNoKEJlLEJlK05lLTEsQy5yb3cpLFou''@;'; put 'put ''c2VsZWN0Q29sdW1ucy5hcHBseShaLF9lKX19fSx7a2V5OiJvbkJlZm9yZU9uQ2VsbE1vdXNlT3ZlciIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksWil7dmFyIHVlO2lmKHRoaXMuaG90LnZpZXcuaXNNb3VzZURvd24oKSl7dmFyIF9lPXRoaXMuX2dldEhlYWRlclRyZWVOb2RlRGF0YUJ5Q29vcmRz''@;'; put 'put ''KEMpO2lmKF9lKXt2YXIgQmU9X2UuY29sdW1uSW5kZXgsTmU9X2Uub3JpZ0NvbHNwYW4sS2U9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxwdD1LZS5nZXRUb3BTdGFydENvcm5lcigpLE90PUtlLmdldEJvdHRvbUVuZENvcm5lcigpLCR0PUtlLmZyb207Wi5jb2x1bW49ITAsWi5j''@;'; put 'put ''ZWxsPSEwO3ZhciBmbj1bXTtDLmNvbDwkdC5jb2w/Zm4ucHVzaChPdC5jb2wsQmUpOmZuLnB1c2goQy5jb2w+JHQuY29sP3B0LmNvbDpCZSxCZStOZS0xKSwodWU9dGhpcy5ob3QpLnNlbGVjdENvbHVtbnMuYXBwbHkodWUsZm4pfX19fSx7a2V5OiJvbkFmdGVyR2V0Q29sdW1uSGVhZGVyUmVu''@;'; put 'put ''ZGVyZXJzIix2YWx1ZTpmdW5jdGlvbih5KXtpZih5KXt5Lmxlbmd0aD0wO2Zvcih2YXIgQz0wO0M8cGModGhpcyxhZikuZ2V0TGF5ZXJzQ291bnQoKTtDKyspeS5wdXNoKHRoaXMuaGVhZGVyUmVuZGVyZXJGYWN0b3J5KEMpKX19fSx7a2V5OiJvbkFmdGVyVmlld3BvcnRDb2x1bW5DYWxjdWxh''@;'; put 'put ''dG9yT3ZlcnJpZGUiLHZhbHVlOmZ1bmN0aW9uKHkpe2Zvcih2YXIgQz1wYyh0aGlzLGFmKS5nZXRMYXllcnNDb3VudCgpLEk9eS5zdGFydENvbHVtbixaPSEhQyx1ZT0wO3VlPEM7dWUrKyl7dmFyIF9lPXBjKHRoaXMsYWYpLmZpbmRMZWZ0TW9zdENvbHVtbkluZGV4KHVlLHkuc3RhcnRDb2x1''@;'; put 'put ''bW4pLEJlPXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoX2UpO2lmKF9lPj0wJiYoWj0hMSksdjQoQmUpJiZCZTx5LnN0YXJ0Q29sdW1uKXtJPUJlO2JyZWFrfX15LnN0YXJ0Q29sdW1uPVo/cGModGhpcyxhZikuZ2V0SGVhZGVyVHJlZU5v''@;'; put 'put ''ZGVEYXRhKDAsSSkuY29sdW1uSW5kZXg6SX19LHtrZXk6Im9uTW9kaWZ5Q29sV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9dGhpcy5naG9zdFRhYmxlLmdldFdpZHRoKEMpO3JldHVybiB5Pkk/eTpJfX0se2tleToib25Jbml0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudXBkYXRl''@;'; put 'put ''UGx1Z2luKCl9fSx7a2V5OiJvbkFmdGVyTG9hZERhdGEiLHZhbHVlOmZ1bmN0aW9uKHksQyl7Q3x8dGhpcy51cGRhdGVQbHVnaW4oKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7TG5lKHRoaXMsYWYsbnVsbCksbnVsbCE9PXBjKHRoaXMsSncpJiYocGModGhpcyxKdykudW5z''@;'; put 'put ''dWJzY3JpYmUoKSxMbmUodGhpcyxKdyxudWxsKSksd00oZTkoaC5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiX2dldEhlYWRlclRyZWVOb2RlRGF0YUJ5Q29vcmRzIix2YWx1ZTpmdW5jdGlvbih5KXtpZighKHkucm93Pj0wfHx5LmNvbDwwKSlyZXR1cm4g''@;'; put 'put ''cGModGhpcyxhZikuZ2V0SGVhZGVyVHJlZU5vZGVEYXRhKHkucm93LHkuY29sKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpEZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDI4MH19XSksaH0oWXMpO2Z1bmN0aW9u''@;'; put 'put ''IHpEZShkKXtyZXR1cm4gZnVuY3Rpb24gdDZ0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIEdnZShkKX0oZCl8fGZ1bmN0aW9uIGU2dChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0p''@;'; put 'put ''cmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBxcHQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIEdnZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3Ry''@;'; put 'put ''dWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChoKSlyZXR1cm4gR2dlKGQsZyl9fShkKXx8''@;'; put 'put ''ZnVuY3Rpb24gJHB0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRo''@;'; put 'put ''b2QuIil9KCl9ZnVuY3Rpb24gR2dlKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gV2dlKGQpe3JldHVybihXZ2U9ImZ1bmN0aW9uIj09dHlwZW9mIFN5''@;'; put 'put ''bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5''@;'; put 'put ''bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBHRGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShkLHYua2V5LHYpfX12YXIgaTZ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChnLGgpeyhmdW5jdGlvbiBuNnQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCks''@;'; put 'put ''dGhpcy5ob3Q9aCx0aGlzLmRhdGE9bnVsbCx0aGlzLnBsdWdpbj1nLHRoaXMucGFyZW50UmVmZXJlbmNlPW5ldyBXZWFrTWFwLHRoaXMuY2FjaGU9e2xldmVsczpbXSxsZXZlbENvdW50OjAscm93czpbXSxub2RlSW5mbzpuZXcgV2Vha01hcH19cmV0dXJuIGZ1bmN0aW9uIHI2dChkLGcsaCl7''@;'; put 'put ''ZyYmR0RlKGQucHJvdG90eXBlLGcpLGgmJkdEZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJzZXREYXRhIix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLmRhdGE9aH19LHtrZXk6ImdldERhdGEiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMuZGF0YX19LHtrZXk6ImdldFJhd1NvdXJjZURhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg7cmV0dXJuIHRoaXMucGx1Z2luLmRpc2FibGVDb3JlQVBJTW9kaWZpZXJzKCksaD10aGlzLmhvdC5nZXRTb3VyY2VEYXRhKCksdGhpcy5wbHVnaW4uZW5hYmxlQ29yZUFQ''@;'; put 'put ''SU1vZGlmaWVycygpLGh9fSx7a2V5OiJ1cGRhdGVXaXRoRGF0YSIsdmFsdWU6ZnVuY3Rpb24oaCl7dGhpcy5zZXREYXRhKGgpLHRoaXMucmV3cml0ZUNhY2hlKCl9fSx7a2V5OiJyZXdyaXRlQ2FjaGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGg9dGhpczt0aGlzLmNhY2hlPXtsZXZlbHM6W10s''@;'; put 'put ''bGV2ZWxDb3VudDowLHJvd3M6W10sbm9kZUluZm86bmV3IFdlYWtNYXB9LGlhKDAsdGhpcy5kYXRhLmxlbmd0aC0xLGZ1bmN0aW9uKHYpe2guY2FjaGVOb2RlKGguZGF0YVt2XSwwLG51bGwpfSl9fSx7a2V5OiJjYWNoZU5vZGUiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgQz10aGlzO3Ro''@;'; put 'put ''aXMuY2FjaGUubGV2ZWxzW3ZdfHwodGhpcy5jYWNoZS5sZXZlbHNbdl09W10sdGhpcy5jYWNoZS5sZXZlbENvdW50Kz0xKSx0aGlzLmNhY2hlLmxldmVsc1t2XS5wdXNoKGgpLHRoaXMuY2FjaGUucm93cy5wdXNoKGgpLHRoaXMuY2FjaGUubm9kZUluZm8uc2V0KGgse3BhcmVudDp5LHJvdzp0''@;'; put 'put ''aGlzLmNhY2hlLnJvd3MubGVuZ3RoLTEsbGV2ZWw6dn0pLHRoaXMuaGFzQ2hpbGRyZW4oaCkmJlVyKGguX19jaGlsZHJlbixmdW5jdGlvbihJKXtDLmNhY2hlTm9kZShJLHYrMSxoKX0pfX0se2tleToiZ2V0RGF0YU9iamVjdCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIG51bGw9PWg/bnVs''@;'; put 'put ''bDp0aGlzLmNhY2hlLnJvd3NbaF19fSx7a2V5OiJyZWFkVHJlZU5vZGVzIix2YWx1ZTpmdW5jdGlvbihoLHYseSxDKXt2YXIgST10aGlzLFo9ITEsdWU9djtpZihpc05hTih1ZSkmJnVlLmVuZClyZXR1cm4gdWU7dmFyIF9lPWg7cmV0dXJuIF9lfHwoX2U9e19fY2hpbGRyZW46dGhpcy5kYXRh''@;'; put 'put ''fSxaPSEwLHVlLT0xKSxudWxsIT15JiZ1ZT09PXk/e3Jlc3VsdDpfZSxlbmQ6ITB9Om51bGwhPUMmJl9lPT09Qz97cmVzdWx0OnVlLGVuZDohMH06KHVlKz0xLF9lLl9fY2hpbGRyZW4mJlVyKF9lLl9fY2hpbGRyZW4sZnVuY3Rpb24oQmUpe2lmKEkucGFyZW50UmVmZXJlbmNlLnNldChCZSxa''@;'; put 'put ''P251bGw6X2UpLHVlPUkucmVhZFRyZWVOb2RlcyhCZSx1ZSx5LEMpLGlzTmFOKHVlKSYmdWUuZW5kKXJldHVybiExfSksdWUpfX0se2tleToibW9ja1BhcmVudCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLm1vY2tOb2RlKCk7cmV0dXJuIGguX19jaGlsZHJlbj10aGlzLmRhdGEsaH19''@;'; put 'put ''LHtrZXk6Im1vY2tOb2RlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXt9O3JldHVybiBHbCh0aGlzLmRhdGFbMF0sZnVuY3Rpb24odix5KXtoW3ldPW51bGx9KSxofX0se2tleToiZ2V0Um93SW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBudWxsPT1oP251bGw6dGhpcy5jYWNoZS5u''@;'; put 'put ''b2RlSW5mby5nZXQoaCkucm93fX0se2tleToiZ2V0Um93SW5kZXhXaXRoaW5QYXJlbnQiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2O3Y9aXNOYU4oaCk/aDp0aGlzLmdldERhdGFPYmplY3QoaCk7dmFyIHk9dGhpcy5nZXRSb3dQYXJlbnQoaCk7cmV0dXJuIG51bGw9PXk/dGhpcy5kYXRhLmlu''@;'; put 'put ''ZGV4T2Yodik6eS5fX2NoaWxkcmVuLmluZGV4T2Yodil9fSx7a2V5OiJjb3VudEFsbFJvd3MiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY291bnRDaGlsZHJlbih7X19jaGlsZHJlbjp0aGlzLmRhdGF9KX19LHtrZXk6ImNvdW50Q2hpbGRyZW4iLHZhbHVlOmZ1bmN0aW9uKGgpe3Zh''@;'; put 'put ''ciB2PXRoaXMseT0wLEM9aDtyZXR1cm4gaXNOYU4oQyl8fChDPXRoaXMuZ2V0RGF0YU9iamVjdChDKSksQyYmQy5fX2NoaWxkcmVuPyhVcihDLl9fY2hpbGRyZW4sZnVuY3Rpb24oSSl7eSs9MSxJLl9fY2hpbGRyZW4mJih5Kz12LmNvdW50Q2hpbGRyZW4oSSkpfSkseSk6MH19LHtrZXk6Imdl''@;'; put 'put ''dFJvd1BhcmVudCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY7cmV0dXJuIHY9aXNOYU4oaCk/aDp0aGlzLmdldERhdGFPYmplY3QoaCksdGhpcy5nZXRSb3dPYmplY3RQYXJlbnQodil9fSx7a2V5OiJnZXRSb3dPYmplY3RQYXJlbnQiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBoJiYib2Jq''@;'; put 'put ''ZWN0Ij09PVdnZShoKT90aGlzLmNhY2hlLm5vZGVJbmZvLmdldChoKS5wYXJlbnQ6bnVsbH19LHtrZXk6ImdldFJvd0xldmVsIix2YWx1ZTpmdW5jdGlvbihoKXt2YXIgdjtyZXR1cm4odj1pc05hTihoKT9oOnRoaXMuZ2V0RGF0YU9iamVjdChoKSk/dGhpcy5nZXRSb3dPYmplY3RMZXZlbCh2''@;'; put 'put ''KTpudWxsfX0se2tleToiZ2V0Um93T2JqZWN0TGV2ZWwiLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiBudWxsPT1oP251bGw6dGhpcy5jYWNoZS5ub2RlSW5mby5nZXQoaCkubGV2ZWx9fSx7a2V5OiJoYXNDaGlsZHJlbiIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9aDtyZXR1cm4gaXNOYU4o''@;'; put 'put ''dil8fCh2PXRoaXMuZ2V0RGF0YU9iamVjdCh2KSksISghdi5fX2NoaWxkcmVufHwhdi5fX2NoaWxkcmVuLmxlbmd0aCl9fSx7a2V5OiJpc0NoaWxkIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZ2V0Um93UGFyZW50KGgpfX0se2tleToiZ2V0Q2hpbGQiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKGgsdil7dmFyIHk7cmV0dXJuKG51bGw9PT0oeT1oLl9fY2hpbGRyZW4pfHx2b2lkIDA9PT15P3ZvaWQgMDp5W3ZdKXx8bnVsbH19LHtrZXk6ImlzUm93SGlnaGVzdExldmVsIix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4hdGhpcy5pc0NoaWxkKGgpfX0se2tleToiaXNQYXJlbnQi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2LHk9aDtyZXR1cm4gaXNOYU4oeSl8fCh5PXRoaXMuZ2V0RGF0YU9iamVjdCh5KSkseSYmISF5Ll9fY2hpbGRyZW4mJjAhPT0obnVsbD09PSh2PXkuX19jaGlsZHJlbil8fHZvaWQgMD09PXY/dm9pZCAwOnYubGVuZ3RoKX19LHtrZXk6ImFkZENoaWxk''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PXY7dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUFkZENoaWxkIixoLHkpO3ZhciBDPW51bGw7aCYmKEM9dGhpcy5nZXRSb3dJbmRleChoKSksdGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNyZWF0ZVJvdyIsQyt0aGlzLmNvdW50Q2hpbGRyZW4o''@;'; put 'put ''aCkrMSwxKTt2YXIgST1oO2h8fChJPXRoaXMubW9ja1BhcmVudCgpKSxJLl9fY2hpbGRyZW58fChJLl9fY2hpbGRyZW49W10pLHl8fCh5PXRoaXMubW9ja05vZGUoKSksSS5fX2NoaWxkcmVuLnB1c2goeSksdGhpcy5yZXdyaXRlQ2FjaGUoKTt2YXIgWj10aGlzLmdldFJvd0luZGV4KHkpO3Ro''@;'; put 'put ''aXMuaG90LnJvd0luZGV4TWFwcGVyLmluc2VydEluZGV4ZXMoWiwxKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDcmVhdGVSb3ciLFosMSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQWRkQ2hpbGQiLGgseSl9fSx7a2V5OiJhZGRDaGlsZEF0SW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGgsdix5''@;'; put 'put ''KXt2YXIgSSxDPXk7aWYoQ3x8KEM9dGhpcy5tb2NrTm9kZSgpKSx0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQWRkQ2hpbGQiLGgsQyx2KSxoKXt2YXIgdWU9dGhpcy5nZXRSb3dJbmRleChoKSt2KzE7dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNyZWF0ZVJvdyIsdWUsMSksaC5fX2NoaWxk''@;'; put 'put ''cmVuLnNwbGljZSh2LG51bGwsQyksdGhpcy5yZXdyaXRlQ2FjaGUoKSx0aGlzLnBsdWdpbi5kaXNhYmxlQ29yZUFQSU1vZGlmaWVycygpLHRoaXMuaG90LnNldFNvdXJjZURhdGFBdENlbGwodGhpcy5nZXRSb3dJbmRleFdpdGhpblBhcmVudChoKSwiX19jaGlsZHJlbiIsaC5fX2NoaWxkcmVu''@;'; put 'put ''LCJOZXN0ZWRSb3dzLmFkZENoaWxkQXRJbmRleCIpLHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmluc2VydEluZGV4ZXModWUsMSksdGhpcy5wbHVnaW4uZW5hYmxlQ29yZUFQSU1vZGlmaWVycygpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNyZWF0ZVJvdyIsdWUsMSksST11ZX1lbHNlIHRo''@;'; put 'put ''aXMucGx1Z2luLmRpc2FibGVDb3JlQVBJTW9kaWZpZXJzKCksdGhpcy5ob3QuYWx0ZXIoImluc2VydF9yb3ciLHYsMSwiTmVzdGVkUm93cy5hZGRDaGlsZEF0SW5kZXgiKSx0aGlzLnBsdWdpbi5lbmFibGVDb3JlQVBJTW9kaWZpZXJzKCksST10aGlzLmdldFJvd0luZGV4KHRoaXMuZGF0YVt2''@;'; put 'put ''XSk7Qz10aGlzLmdldERhdGFPYmplY3QoSSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQWRkQ2hpbGQiLGgsQyx2KX19LHtrZXk6ImFkZFNpYmxpbmciLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sx''@;'; put 'put ''XToiYmVsb3ciLHk9dGhpcy50cmFuc2xhdGVUcmltbWVkUm93KGgpLEM9dGhpcy5nZXRSb3dQYXJlbnQoeSksST10aGlzLmdldFJvd0luZGV4V2l0aGluUGFyZW50KHkpO3N3aXRjaCh2KXtjYXNlImJlbG93Ijp0aGlzLmFkZENoaWxkQXRJbmRleChDLEkrMSxudWxsKTticmVhaztjYXNlImFi''@;'; put 'put ''b3ZlIjp0aGlzLmFkZENoaWxkQXRJbmRleChDLEksbnVsbCl9fX0se2tleToiZGV0YWNoRnJvbVBhcmVudCIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9dGhpcyx5PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sQz1udWxsLEk9W107''@;'; put 'put ''QXJyYXkuaXNBcnJheShoKT8oaWEoaFswXSxoWzJdLGZ1bmN0aW9uKExuKXt2YXIgaXI9di50cmFuc2xhdGVUcmltbWVkUm93KExuKTtJLnB1c2godi5nZXREYXRhT2JqZWN0KGlyKSl9KSxpYSgwLEkubGVuZ3RoLTIsZnVuY3Rpb24oTG4pe3YuZGV0YWNoRnJvbVBhcmVudChJW0xuXSwhMSl9''@;'; put 'put ''KSxDPUlbSS5sZW5ndGgtMV0pOkM9aDt2YXIgWj10aGlzLmdldFJvd0luZGV4KEMpLHVlPXRoaXMuY291bnRDaGlsZHJlbihDKSxfZT10aGlzLmdldFJvd0luZGV4V2l0aGluUGFyZW50KEMpLEJlPXRoaXMuZ2V0Um93UGFyZW50KEMpLE5lPXRoaXMuZ2V0Um93UGFyZW50KEJlKSxLZT10aGlz''@;'; put 'put ''LmdldFJvd0luZGV4KE5lKSxwdD1udWxsO2lmKHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVEZXRhY2hDaGlsZCIsQmUsQyksbnVsbCE9X2Upe3ZhciBPdD1BcnJheS5mcm9tKG5ldyBBcnJheShaK3VlKzEpLmtleXMoKSkuc3BsaWNlKC0xKih1ZSsxKSk7aWYodGhpcy5ob3QucnVuSG9va3Mo''@;'; put 'put ''ImJlZm9yZVJlbW92ZVJvdyIsWix1ZSsxLE90LHRoaXMucGx1Z2luLnBsdWdpbk5hbWUpLEJlLl9fY2hpbGRyZW4uc3BsaWNlKF9lLDEpLHRoaXMucmV3cml0ZUNhY2hlKCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUmVtb3ZlUm93IixaLHVlKzEsT3QsdGhpcy5wbHVnaW4ucGx1Z2luTmFt''@;'; put 'put ''ZSksTmUpe3B0PUtlK3RoaXMuY291bnRDaGlsZHJlbihOZSk7dmFyICR0PXRoaXMuZ2V0Q2hpbGQoTmUsdGhpcy5jb3VudENoaWxkcmVuKE5lKS0xKSxmbj10aGlzLmdldFJvd0luZGV4KCR0KTt0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQ3JlYXRlUm93IixmbisxLHVlKzEsdGhpcy5wbHVn''@;'; put 'put ''aW4ucGx1Z2luTmFtZSksTmUuX19jaGlsZHJlbi5wdXNoKEMpfWVsc2UgcHQ9dGhpcy5ob3QuY291bnRSb3dzKCkrMSx0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQ3JlYXRlUm93IixwdC0yLHVlKzEsdGhpcy5wbHVnaW4ucGx1Z2luTmFtZSksdGhpcy5kYXRhLnB1c2goQyl9dGhpcy5yZXdy''@;'; put 'put ''aXRlQ2FjaGUoKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDcmVhdGVSb3ciLHB0LTIsdWUrMSx0aGlzLnBsdWdpbi5wbHVnaW5OYW1lKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJEZXRhY2hDaGlsZCIsQmUsQyx0aGlzLmdldFJvd0luZGV4KEMpKSx5JiZ0aGlzLmhvdC5yZW5kZXIoKX19''@;'; put 'put ''LHtrZXk6ImZpbHRlckRhdGEiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt2YXIgQz10aGlzLEk9W107VXIoeSxmdW5jdGlvbihaKXtJLnB1c2goQy5nZXREYXRhT2JqZWN0KFopKX0pLFVyKEksZnVuY3Rpb24oWil7dmFyIHVlPUMuZ2V0Um93SW5kZXhXaXRoaW5QYXJlbnQoWiksX2U9Qy5nZXRS''@;'; put 'put ''b3dQYXJlbnQoWik7bnVsbD09PV9lP0MuZGF0YS5zcGxpY2UodWUsMSk6X2UuX19jaGlsZHJlbi5zcGxpY2UodWUsMSl9KSx0aGlzLnJld3JpdGVDYWNoZSgpfX0se2tleToic3BsaWNlRGF0YSIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3ZhciBDPXRoaXMuZ2V0RGF0YU9iamVjdChoLTEpLEk9''@;'; put 'put ''bnVsbCxaPWg7aWYoQyYmQy5fX2NoaWxkcmVuJiYwPT09Qy5fX2NoaWxkcmVuLmxlbmd0aD8oST1DLFo9MCk6aDx0aGlzLmNvdW50QWxsUm93cygpJiYoST10aGlzLmdldFJvd1BhcmVudChoKSxaPXRoaXMuZ2V0Um93SW5kZXhXaXRoaW5QYXJlbnQoaCkpLEkpaWYoeSl7dmFyIHVlOyh1ZT1J''@;'; put 'put ''Ll9fY2hpbGRyZW4pLnNwbGljZS5hcHBseSh1ZSxbWix2XS5jb25jYXQoekRlKHkpKSl9ZWxzZSBJLl9fY2hpbGRyZW4uc3BsaWNlKFosdik7ZWxzZSBpZih5KXt2YXIgX2U7KF9lPXRoaXMuZGF0YSkuc3BsaWNlLmFwcGx5KF9lLFtaLHZdLmNvbmNhdCh6RGUoeSkpKX1lbHNlIHRoaXMuZGF0''@;'; put 'put ''YS5zcGxpY2UoWix2KTt0aGlzLnJld3JpdGVDYWNoZSgpfX0se2tleToic3luY1Jvd1dpdGhSYXdTb3VyY2UiLHZhbHVlOmZ1bmN0aW9uKGgpe3ZhciB2PWgseT1udWxsO2Rve251bGwhPT0oeT10aGlzLmdldFJvd1BhcmVudCh5KSkmJih2PXkpfXdoaWxlKG51bGwhPT15KTt0aGlzLnBsdWdp''@;'; put 'put ''bi5kaXNhYmxlQ29yZUFQSU1vZGlmaWVycygpLHRoaXMuaG90LnNldFNvdXJjZURhdGFBdENlbGwodGhpcy5nZXRSb3dJbmRleCh2KSwiX19jaGlsZHJlbiIsdi5fX2NoaWxkcmVuLCJOZXN0ZWRSb3dzLnN5bmNSb3dXaXRoUmF3U291cmNlIiksdGhpcy5wbHVnaW4uZW5hYmxlQ29yZUFQSU1v''@;'; put 'put ''ZGlmaWVycygpfX0se2tleToibW92ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oaCx2LHksQyl7dmFyIEk9dj09PXRoaXMuaG90LmNvdW50Um93cygpLFo9dGhpcy5nZXRSb3dQYXJlbnQoaCksdWU9dGhpcy5nZXRSb3dJbmRleFdpdGhpblBhcmVudChoKSxfZT1aLl9fY2hpbGRyZW4uc2xpY2UodWUs''@;'; put 'put ''dWUrMSksQmU9aD52LE5lPXRoaXMuZ2V0Um93UGFyZW50KEk/di0xOnYpO251bGw9PU5lJiYoTmU9dGhpcy5nZXRSb3dQYXJlbnQodi0xKSksbnVsbD09TmUmJihOZT10aGlzLmdldERhdGFPYmplY3Qodi0xKSksTmU/TmUuX19jaGlsZHJlbnx8KE5lLl9fY2hpbGRyZW49W10pOihOZT10aGlz''@;'; put 'put ''LmdldERhdGFPYmplY3QodikpLl9fY2hpbGRyZW49W107dmFyIEtlPUl8fHl8fEM/TmUuX19jaGlsZHJlbi5sZW5ndGg6dGhpcy5nZXRSb3dJbmRleFdpdGhpblBhcmVudCh2KSxwdD1aPT09TmU7TmUuX19jaGlsZHJlbi5zcGxpY2UoS2UsMCxfZVswXSksWi5fX2NoaWxkcmVuLnNwbGljZSh1''@;'; put 'put ''ZSsoQmUmJnB0PzE6MCksMSksdGhpcy5zeW5jUm93V2l0aFJhd1NvdXJjZShaKSxwdHx8dGhpcy5zeW5jUm93V2l0aFJhd1NvdXJjZShOZSl9fSx7a2V5OiJ0cmFuc2xhdGVUcmltbWVkUm93Iix2YWx1ZTpmdW5jdGlvbihoKXtyZXR1cm4gdGhpcy5wbHVnaW4uY29sbGFwc2luZ1VJP3RoaXMu''@;'; put 'put ''cGx1Z2luLmNvbGxhcHNpbmdVSS50cmFuc2xhdGVUcmltbWVkUm93KGgpOmh9fSx7a2V5OiJ1bnRyYW5zbGF0ZVRyaW1tZWRSb3ciLHZhbHVlOmZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLnBsdWdpbi5jb2xsYXBzaW5nVUk/dGhpcy5wbHVnaW4uY29sbGFwc2luZ1VJLnVudHJhbnNsYXRlVHJp''@;'; put 'put ''bW1lZFJvdyhoKTpofX1dKSxkfSgpO2NvbnN0IG82dD1pNnQ7ZnVuY3Rpb24gV0RlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxl''@;'; put 'put ''PSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gYTZ0KGQsZyxoKXtyZXR1cm4gZyYmV0RlKGQucHJvdG90eXBlLGcpLGgmJldEZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGR9dmFyIHM2dD1hNnQo''@;'; put 'put ''ZnVuY3Rpb24gZChnLGgpeyhmdW5jdGlvbiBsNnQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsZCksdGhpcy5ob3Q9aCx0aGlzLnBsdWdpbj1nfSk7Y29uc3QgWWdlPXM2dDtm''@;'; put 'put ''dW5jdGlvbiBVZ2UoZCl7cmV0dXJuKFVnZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZn''@;'; put 'put ''LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIFlEZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJh''@;'; put 'put ''YmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9uIFFnZShkLGcpe3JldHVybihRZ2U9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXty''@;'; put 'put ''ZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBkNnQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1VZ2UoZyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBv''@;'; put 'put ''bmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIHA2dChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9''@;'; put 'put ''KGQpfWZ1bmN0aW9uIE9uZShkKXtyZXR1cm4oT25lPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIG02dD1mdW5jdGlvbihkKXsh''@;'; put 'put ''ZnVuY3Rpb24gZjZ0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlw''@;'; put 'put ''ZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJlFnZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIGg2dChkKXt2YXIgZz1mdW5jdGlvbiBnNnQo''@;'; put 'put ''KXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwo''@;'; put 'put ''UmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1PbmUoZCk7aWYoZyl7dmFyIEM9T25lKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVu''@;'; put 'put ''dHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBkNnQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5KXt2YXIgQztyZXR1cm4gZnVuY3Rpb24gdTZ0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj''@;'; put 'put ''bGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKEM9Zy5jYWxsKHRoaXMsdix5KSkuZGF0YU1hbmFnZXI9Qy5wbHVnaW4uZGF0YU1hbmFnZXIsQy5jb2xsYXBzaW5nVUk9Qy5wbHVnaW4uY29sbGFwc2luZ1VJLEMucm93SGVhZGVyV2lkdGhDYWNoZT1udWxsLEN9cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''IGM2dChkLGcsaCl7ZyYmWURlKGQucHJvdG90eXBlLGcpLGgmJllEZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJhcHBlbmRMZXZlbEluZGljYXRvcnMiLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9dGhpcy5ob3Qu''@;'; put 'put ''dG9QaHlzaWNhbFJvdyh5KSxaPXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93TGV2ZWwoSSksdWU9dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhT2JqZWN0KEkpLF9lPUMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIkRJViIpWzBdLEJlPV9lLnF1ZXJ5U2VsZWN0b3IoInNwYW4ucm93SGVhZGVyIik7aWYo''@;'; put 'put ''VXIoX2UucXVlcnlTZWxlY3RvckFsbCgnW2NsYXNzXj0iaHRfbmVzdGluZyJdJyksZnVuY3Rpb24oJHQpeyR0JiZfZS5yZW1vdmVDaGlsZCgkdCl9KSxPMChDLGguQ1NTX0NMQVNTRVMuaW5kaWNhdG9yQ29udGFpbmVyKSxaKXt2YXIgS2U9dGhpcy5ob3Qucm9vdERvY3VtZW50LHB0PUJlLmNs''@;'; put 'put ''b25lTm9kZSghMCk7X2UuaW5uZXJIVE1MPSIiLGlhKDAsWi0xLGZ1bmN0aW9uKCl7dmFyICR0PUtlLmNyZWF0ZUVsZW1lbnQoIlNQQU4iKTtPMCgkdCxoLkNTU19DTEFTU0VTLmVtcHR5SW5kaWNhdG9yKSxfZS5hcHBlbmRDaGlsZCgkdCl9KSxfZS5hcHBlbmRDaGlsZChwdCl9aWYodGhpcy5k''@;'; put 'put ''YXRhTWFuYWdlci5oYXNDaGlsZHJlbih1ZSkpe3ZhciBPdD10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIik7TzAoQyxoLkNTU19DTEFTU0VTLnBhcmVudCksdGhpcy5jb2xsYXBzaW5nVUkuYXJlQ2hpbGRyZW5Db2xsYXBzZWQoSSk/TzAoT3QsIiIuY29uY2F0KGgu''@;'; put 'put ''Q1NTX0NMQVNTRVMuYnV0dG9uLCIgIikuY29uY2F0KGguQ1NTX0NMQVNTRVMuZXhwYW5kQnV0dG9uKSk6TzAoT3QsIiIuY29uY2F0KGguQ1NTX0NMQVNTRVMuYnV0dG9uLCIgIikuY29uY2F0KGguQ1NTX0NMQVNTRVMuY29sbGFwc2VCdXR0b24pKSxfZS5hcHBlbmRDaGlsZChPdCl9fX0se2tl''@;'; put 'put ''eToidXBkYXRlUm93SGVhZGVyV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXk7Q3x8KEM9dGhpcy5kYXRhTWFuYWdlci5jYWNoZS5sZXZlbENvdW50KSx0aGlzLnJvd0hlYWRlcldpZHRoQ2FjaGU9TWF0aC5tYXgoNTAsMTErMTAqQysyNSksdGhpcy5ob3QucmVuZGVyKCl9fV0sW3tr''@;'; put 'put ''ZXk6IkNTU19DTEFTU0VTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57aW5kaWNhdG9yQ29udGFpbmVyOiJodF9uZXN0aW5nTGV2ZWxzIixwYXJlbnQ6Imh0X25lc3RpbmdQYXJlbnQiLGluZGljYXRvcjoiaHRfbmVzdGluZ0xldmVsIixlbXB0eUluZGljYXRvcjoiaHRfbmVzdGluZ0xldmVsX2Vt''@;'; put 'put ''cHR5IixidXR0b246Imh0X25lc3RpbmdCdXR0b24iLGV4cGFuZEJ1dHRvbjoiaHRfbmVzdGluZ0V4cGFuZCIsY29sbGFwc2VCdXR0b246Imh0X25lc3RpbmdDb2xsYXBzZSJ9fX1dKSxofShZZ2UpO2NvbnN0IFVEZT1tNnQ7ZnVuY3Rpb24gSmdlKGQpe3JldHVybihKZ2U9ImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90''@;'; put 'put ''b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBRRGUoZCl7cmV0dXJuIGZ1bmN0aW9uIHc2dChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBYZ2UoZCl9KGQpfHxmdW5jdGlvbiB5NnQoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3lt''@;'; put 'put ''Ym9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQpfShkKXx8ZnVuY3Rpb24gQTZ0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBYZ2UoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCku''@;'; put 'put ''c2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9B''@;'; put 'put ''cnJheSQvLnRlc3QoaCkpcmV0dXJuIFhnZShkLGcpfX0oZCl8fGZ1bmN0aW9uIHY2dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3Rz''@;'; put 'put ''IG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIFhnZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIEpE''@;'; put 'put ''ZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fWZ1bmN0aW9u''@;'; put 'put ''IEtnZShkLGcpe3JldHVybihLZ2U9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBTNnQoZCxnKXtpZihnJiYoIm9iamVjdCI9PT1KZ2UoZyl8fCJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBnKSlyZXR1cm4gZztpZih2b2lkIDAhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIE02dChkKXtpZih2b2lkIDA9PT1kKXRocm93IG5l''@;'; put 'put ''dyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9KGQpfWZ1bmN0aW9uIFJuZShkKXtyZXR1cm4oUm5lPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmlu''@;'; put 'put ''ZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIHg2dD1mdW5jdGlvbihkKXshZnVuY3Rpb24gQzZ0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVy''@;'; put 'put ''IGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShk''@;'; put 'put ''LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJktnZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIGs2dChkKXt2YXIgZz1mdW5jdGlvbiBFNnQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSly''@;'; put 'put ''ZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIHksdj1SbmUoZCk7aWYoZyl7dmFyIEM9Um5lKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBTNnQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5KXt2''@;'; put 'put ''YXIgQztyZXR1cm4gZnVuY3Rpb24gYjZ0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKEM9Zy5jYWxsKHRoaXMsdix5KSkuZGF0YU1hbmFnZXI9Qy5wbHVnaW4uZGF0YU1h''@;'; put 'put ''bmFnZXIsQy5jb2xsYXBzZWRSb3dzPVtdLEMuY29sbGFwc2VkUm93c1N0YXNoPXtzdGFzaDpmdW5jdGlvbigpe3ZhciBaPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07Qy5sYXN0Q29sbGFwc2VkUm93cz1DLmNvbGxhcHNlZFJvd3Muc2xp''@;'; put 'put ''Y2UoMCksQy5leHBhbmRNdWx0aXBsZUNoaWxkcmVuKEMubGFzdENvbGxhcHNlZFJvd3MsWil9LHNoaWZ0U3Rhc2g6ZnVuY3Rpb24oWix1ZSl7dmFyIF9lPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToxO251bGw9PXVlJiYodWU9MS8wKSxV''@;'; put 'put ''cihDLmxhc3RDb2xsYXBzZWRSb3dzLGZ1bmN0aW9uKEJlLE5lKXtCZT49WiYmQmU8dWUmJihDLmxhc3RDb2xsYXBzZWRSb3dzW05lXT1CZStfZSl9KX0sYXBwbHlTdGFzaDpmdW5jdGlvbigpe3ZhciBaPSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1''@;'; put 'put ''bWVudHNbMF07Qy5jb2xsYXBzZU11bHRpcGxlQ2hpbGRyZW4oQy5sYXN0Q29sbGFwc2VkUm93cyxaKSxDLmxhc3RDb2xsYXBzZWRSb3dzPXZvaWQgMH0sdHJpbVN0YXNoOmZ1bmN0aW9uKFosdWUpe2lhKFosWit1ZS0xLGZ1bmN0aW9uKF9lKXt2YXIgQmU9Qy5sYXN0Q29sbGFwc2VkUm93cy5p''@;'; put 'put ''bmRleE9mKF9lKTtCZT4tMSYmQy5sYXN0Q29sbGFwc2VkUm93cy5zcGxpY2UoQmUsMSl9KX19LEN9cmV0dXJuIGZ1bmN0aW9uIF82dChkLGcsaCl7ZyYmSkRlKGQucHJvdG90eXBlLGcpLGgmJkpEZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZToh''@;'; put 'put ''MX0pfShoLFt7a2V5OiJjb2xsYXBzZUNoaWxkcmVuIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxaPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNb''@;'; put 'put ''Ml0pfHxhcmd1bWVudHNbMl0sdWU9W10sX2U9bnVsbCxCZT1udWxsLE5lPW51bGw7cmV0dXJuIGlzTmFOKHkpP0JlPXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93SW5kZXgoX2U9eSk6KF9lPXRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YU9iamVjdCh5KSxCZT15KSx0aGlzLmRhdGFNYW5hZ2VyLmhh''@;'; put 'put ''c0NoaWxkcmVuKF9lKSYmVXIoX2UuX19jaGlsZHJlbixmdW5jdGlvbihLZSl7dWUucHVzaChDLmRhdGFNYW5hZ2VyLmdldFJvd0luZGV4KEtlKSl9KSxOZT10aGlzLmNvbGxhcHNlUm93cyh1ZSwhMCwhMSksWiYmdGhpcy50cmltUm93cyhOZSksSSYmdGhpcy5yZW5kZXJBbmRBZGp1c3QoKSwt''@;'; put 'put ''MT09PXRoaXMuY29sbGFwc2VkUm93cy5pbmRleE9mKEJlKSYmdGhpcy5jb2xsYXBzZWRSb3dzLnB1c2goQmUpLE5lfX0se2tleToiY29sbGFwc2VNdWx0aXBsZUNoaWxkcmVuIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFy''@;'; put 'put ''Z3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxaPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sdWU9W107VXIoeSxmdW5jdGlvbihfZSl7dWUucHVzaC5hcHBseSh1ZSxRRGUoQy5jb2xsYXBzZUNoaWxkcmVuKF9lLCExLCExKSkpfSks''@;'; put 'put ''WiYmdGhpcy50cmltUm93cyh1ZSksSSYmdGhpcy5yZW5kZXJBbmRBZGp1c3QoKX19LHtrZXk6ImNvbGxhcHNlUm93Iix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO3RoaXMuY29sbGFwc2VS''@;'; put 'put ''b3dzKFt5XSxDKX19LHtrZXk6ImNvbGxhcHNlUm93cyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sWj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1sy''@;'; put 'put ''XSYmYXJndW1lbnRzWzJdLHVlPVtdO3JldHVybiBVcih5LGZ1bmN0aW9uKF9lKXt1ZS5wdXNoKF9lKSxJJiZDLmNvbGxhcHNlQ2hpbGRSb3dzKF9lLHVlKX0pLFomJnRoaXMudHJpbVJvd3ModWUpLHVlfX0se2tleToiY29sbGFwc2VDaGlsZFJvd3MiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBD''@;'; put 'put ''PXRoaXMsST1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10sdWU9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXTtpZih0aGlzLmRhdGFNYW5hZ2VyLmhhc0NoaWxkcmVuKHkpKXt2YXIg''@;'; put 'put ''X2U9dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhT2JqZWN0KHkpO1VyKF9lLl9fY2hpbGRyZW4sZnVuY3Rpb24oQmUpe3ZhciBOZT1DLmRhdGFNYW5hZ2VyLmdldFJvd0luZGV4KEJlKTtJLnB1c2goTmUpLEMuY29sbGFwc2VDaGlsZFJvd3MoTmUsSSl9KX11ZSYmdGhpcy50cmltUm93cyhJKX19''@;'; put 'put ''LHtrZXk6ImV4cGFuZFJvdyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTt0aGlzLmV4cGFuZFJvd3MoW3ldLEMpfX0se2tleToiZXhwYW5kUm93cyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFy''@;'; put 'put ''IEM9dGhpcyxJPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sWj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLHVlPVtdO3JldHVybiBVcih5LGZ1bmN0aW9uKF9lKXt1ZS5wdXNo''@;'; put 'put ''KF9lKSxJJiZDLmV4cGFuZENoaWxkUm93cyhfZSx1ZSl9KSxaJiZ0aGlzLnVudHJpbVJvd3ModWUpLHVlfX0se2tleToiZXhwYW5kQ2hpbGRSb3dzIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1l''@;'; put 'put ''bnRzWzFdOltdLHVlPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107aWYodGhpcy5kYXRhTWFuYWdlci5oYXNDaGlsZHJlbih5KSl7dmFyIF9lPXRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YU9iamVjdCh5KTtVcihfZS5fX2NoaWxkcmVuLGZ1''@;'; put 'put ''bmN0aW9uKEJlKXtpZighQy5pc0FueVBhcmVudENvbGxhcHNlZChCZSkpe3ZhciBOZT1DLmRhdGFNYW5hZ2VyLmdldFJvd0luZGV4KEJlKTtJLnB1c2goTmUpLEMuZXhwYW5kQ2hpbGRSb3dzKE5lLEkpfX0pfXVlJiZ0aGlzLnVudHJpbVJvd3MoSSl9fSx7a2V5OiJleHBhbmRDaGlsZHJlbiIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sWj0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLHVlPVtdLF9lPW51bGws''@;'; put 'put ''QmU9bnVsbCxOZT1udWxsO3JldHVybiBpc05hTih5KT8oX2U9eSxCZT10aGlzLmRhdGFNYW5hZ2VyLmdldFJvd0luZGV4KHkpKTooX2U9dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhT2JqZWN0KHkpLEJlPXkpLHRoaXMuY29sbGFwc2VkUm93cy5zcGxpY2UodGhpcy5jb2xsYXBzZWRSb3dzLmlu''@;'; put 'put ''ZGV4T2YoQmUpLDEpLHRoaXMuZGF0YU1hbmFnZXIuaGFzQ2hpbGRyZW4oX2UpJiZVcihfZS5fX2NoaWxkcmVuLGZ1bmN0aW9uKEtlKXt2YXIgcHQ9Qy5kYXRhTWFuYWdlci5nZXRSb3dJbmRleChLZSk7dWUucHVzaChwdCl9KSxOZT10aGlzLmV4cGFuZFJvd3ModWUsITAsITEpLFomJnRoaXMu''@;'; put 'put ''dW50cmltUm93cyhOZSksSSYmdGhpcy5yZW5kZXJBbmRBZGp1c3QoKSxOZX19LHtrZXk6ImV4cGFuZE11bHRpcGxlQ2hpbGRyZW4iLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFd''@;'; put 'put ''LFo9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSx1ZT1bXTtVcih5LGZ1bmN0aW9uKF9lKXt1ZS5wdXNoLmFwcGx5KHVlLFFEZShDLmV4cGFuZENoaWxkcmVuKF9lLCExLCExKSkpfSksWiYmdGhpcy51bnRyaW1Sb3dzKHVlKSxJJiZ0''@;'; put 'put ''aGlzLnJlbmRlckFuZEFkanVzdCgpfX0se2tleToiY29sbGFwc2VBbGwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPXRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YSgpLEk9W107VXIoQyxmdW5jdGlvbihaKXt5LmRhdGFNYW5hZ2VyLmhhc0NoaWxkcmVuKFopJiZJLnB1c2goWil9KSx0''@;'; put 'put ''aGlzLmNvbGxhcHNlTXVsdGlwbGVDaGlsZHJlbihJKSx0aGlzLnJlbmRlckFuZEFkanVzdCgpfX0se2tleToiZXhwYW5kQWxsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXMsQz10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGEoKSxJPVtdO1VyKEMsZnVuY3Rpb24oWil7eS5kYXRhTWFuYWdl''@;'; put 'put ''ci5oYXNDaGlsZHJlbihaKSYmSS5wdXNoKFopfSksdGhpcy5leHBhbmRNdWx0aXBsZUNoaWxkcmVuKEkpLHRoaXMucmVuZGVyQW5kQWRqdXN0KCl9fSx7a2V5OiJ0cmltUm93cyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpczt0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigp''@;'; put 'put ''e1VyKHksZnVuY3Rpb24oSSl7Qy5wbHVnaW4uY29sbGFwc2VkUm93c01hcC5zZXRWYWx1ZUF0SW5kZXgoSSwhMCl9KX0sITApfX0se2tleToidW50cmltUm93cyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpczt0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe1VyKHksZnVu''@;'; put 'put ''Y3Rpb24oSSl7Qy5wbHVnaW4uY29sbGFwc2VkUm93c01hcC5zZXRWYWx1ZUF0SW5kZXgoSSwhMSl9KX0sITApfX0se2tleToiYXJlQ2hpbGRyZW5Db2xsYXBzZWQiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST1pc05hTih5KT95OnRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YU9iamVj''@;'; put 'put ''dCh5KSxaPSEwO3JldHVybiBudWxsPT09SSYmKEk9e19fY2hpbGRyZW46dGhpcy5kYXRhTWFuYWdlci5kYXRhfSksdGhpcy5kYXRhTWFuYWdlci5oYXNDaGlsZHJlbihJKSYmVXIoSS5fX2NoaWxkcmVuLGZ1bmN0aW9uKHVlKXt2YXIgX2U9Qy5kYXRhTWFuYWdlci5nZXRSb3dJbmRleCh1ZSk7''@;'; put 'put ''aWYoIUMucGx1Z2luLmNvbGxhcHNlZFJvd3NNYXAuZ2V0VmFsdWVBdEluZGV4KF9lKSlyZXR1cm4gWj0hMSwhMX0pLFp9fSx7a2V5OiJpc0FueVBhcmVudENvbGxhcHNlZCIsdmFsdWU6ZnVuY3Rpb24oeSl7Zm9yKHZhciBDPXk7bnVsbCE9PUM7KXtDPXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93''@;'; put 'put ''UGFyZW50KEMpO3ZhciBJPXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93SW5kZXgoQyk7aWYodGhpcy5jb2xsYXBzZWRSb3dzLmluZGV4T2YoSSk+LTEpcmV0dXJuITB9cmV0dXJuITF9fSx7a2V5OiJ0b2dnbGVTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtpZighKEMuY29sPj0wKSl7dmFyIEk9''@;'; put 'put ''dGhpcy50cmFuc2xhdGVUcmltbWVkUm93KEMucm93KTt0bCh5LnRhcmdldCxVRGUuQ1NTX0NMQVNTRVMuYnV0dG9uKSYmKHRoaXMuYXJlQ2hpbGRyZW5Db2xsYXBzZWQoSSk/dGhpcy5leHBhbmRDaGlsZHJlbihJKTp0aGlzLmNvbGxhcHNlQ2hpbGRyZW4oSSksXzgoeSkpfX19LHtrZXk6InRy''@;'; put 'put ''YW5zbGF0ZVRyaW1tZWRSb3ciLHZhbHVlOmZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLmhvdC50b1BoeXNpY2FsUm93KHkpfX0se2tleToidW50cmFuc2xhdGVUcmltbWVkUm93Iix2YWx1ZTpmdW5jdGlvbih5KXtyZXR1cm4gdGhpcy5ob3QudG9WaXN1YWxSb3coeSl9fSx7a2V5OiJyZW5kZXJB''@;'; put 'put ''bmRBZGp1c3QiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QucmVuZGVyKCksdGhpcy5ob3Qudmlldy5hZGp1c3RFbGVtZW50c1NpemUoKX19XSksaH0oWWdlKTtjb25zdCBUNnQ9eDZ0O2Z1bmN0aW9uICRnZShkKXtyZXR1cm4oJGdlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1i''@;'; put 'put ''b2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVv''@;'; put 'put ''ZiBnfSkoZCl9ZnVuY3Rpb24gWERlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''ZCx2LmtleSx2KX19ZnVuY3Rpb24gcWdlKGQsZyl7cmV0dXJuKHFnZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIFI2dChkLGcpe2lmKGcmJigib2Jq''@;'; put 'put ''ZWN0Ij09PSRnZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gS0RlKGQpfWZ1bmN0aW9uIEtE''@;'; put 'put ''ZShkKXtpZih2b2lkIDA9PT1kKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gQm5lKGQpe3JldHVybihCbmU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09i''@;'; put 'put ''amVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgJERlPW5ldyBXZWFrTWFwLFA2dD1mdW5jdGlvbihkKXshZnVuY3Rpb24gTDZ0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9m''@;'; put 'put ''IGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29u''@;'; put 'put ''ZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJnFnZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIE82dChkKXt2YXIgZz1mdW5jdGlvbiBCNnQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZs''@;'; put 'put ''ZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigp''@;'; put 'put ''e30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1CbmUoZCk7aWYoZyl7dmFyIEM9Qm5lKHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3Jl''@;'; put 'put ''dHVybiBSNnQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodix5KXt2YXIgQztyZXR1cm4gZnVuY3Rpb24gSTZ0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksQz1nLmNhbGwo''@;'; put 'put ''dGhpcyx2LHkpLCREZS5zZXQoS0RlKEMpLHtyb3dfYWJvdmU6ZnVuY3Rpb24oWix1ZSl7Qy5kYXRhTWFuYWdlci5hZGRTaWJsaW5nKHVlW3VlLmxlbmd0aC0xXS5zdGFydC5yb3csImFib3ZlIil9LHJvd19iZWxvdzpmdW5jdGlvbihaLHVlKXtDLmRhdGFNYW5hZ2VyLmFkZFNpYmxpbmcodWVb''@;'; put 'put ''dWUubGVuZ3RoLTFdLnN0YXJ0LnJvdywiYmVsb3ciKX19KSxDLmRhdGFNYW5hZ2VyPUMucGx1Z2luLmRhdGFNYW5hZ2VyLEN9cmV0dXJuIGZ1bmN0aW9uIEQ2dChkLGcsaCl7ZyYmWERlKGQucHJvdG90eXBlLGcpLGgmJlhEZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5''@;'; put 'put ''cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJhcHBlbmRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz10aGlzLEk9W3trZXk6ImFkZF9jaGlsZCIsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2Uob3BlKX0sY2FsbGJhY2s6ZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgdWU9Qy5kYXRhTWFuYWdlci50cmFuc2xhdGVUcmltbWVkUm93KEMuaG90LmdldFNlbGVjdGVkTGFzdCgpWzBdKSxfZT1DLmRhdGFNYW5hZ2VyLmdldERhdGFPYmplY3QodWUpO0MuZGF0YU1hbmFnZXIuYWRkQ2hpbGQoX2UpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3ZhciB1ZT1DLmhv''@;'; put 'put ''dC5nZXRTZWxlY3RlZExhc3QoKTtyZXR1cm4hdWV8fHVlWzBdPDB8fEMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKXx8Qy5ob3QuY291bnRSb3dzKCk+PUMuaG90LmdldFNldHRpbmdzKCkubWF4Um93c319LHtrZXk6ImRldGFjaF9mcm9tX3BhcmVudCIsbmFtZTpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoYXBlKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtDLmRhdGFNYW5hZ2VyLmRldGFjaEZyb21QYXJlbnQoQy5ob3QuZ2V0U2VsZWN0ZWRMYXN0KCkpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3ZhciB1ZT1DLmhvdC5nZXRTZWxl''@;'; put 'put ''Y3RlZExhc3QoKSxfZT1DLmRhdGFNYW5hZ2VyLnRyYW5zbGF0ZVRyaW1tZWRSb3codWVbMF0pO3JldHVybiFDLmRhdGFNYW5hZ2VyLmdldFJvd1BhcmVudChfZSl8fCF1ZXx8dWVbMF08MHx8Qy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpfHxDLmhvdC5jb3VudFJv''@;'; put 'put ''d3MoKT49Qy5ob3QuZ2V0U2V0dGluZ3MoKS5tYXhSb3dzfX0se25hbWU6Ii0tLS0tLS0tLSJ9XTtyZXR1cm4gaWEoMCx5Lml0ZW1zLmxlbmd0aC0xLGZ1bmN0aW9uKFope2lmKDA9PT1aKXJldHVybiBVcihJLGZ1bmN0aW9uKHVlLF9lKXt5Lml0ZW1zLnNwbGljZShaK19lLDAsdWUpfSksITF9''@;'; put 'put ''KSx0aGlzLm1vZGlmeVJvd0luc2VydGluZ09wdGlvbnMoeSl9fSx7a2V5OiJtb2RpZnlSb3dJbnNlcnRpbmdPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih5KXt2YXIgQz0kRGUuZ2V0KHRoaXMpO3JldHVybiBpYSgwLHkuaXRlbXMubGVuZ3RoLTEsZnVuY3Rpb24oSSl7dmFyIFo9Q1t5Lml0ZW1z''@;'; put 'put ''W0ldLmtleV07bnVsbCE9WiYmKHkuaXRlbXNbSV0uY2FsbGJhY2s9Wil9KSx5fX1dKSxofShZZ2UpO2NvbnN0IEY2dD1QNnQ7dmFyIHFEZTtmdW5jdGlvbiBlTGUoZCl7cmV0dXJuIGZ1bmN0aW9uIGo2dChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBlbWUoZCl9KGQpfHxmdW5jdGlv''@;'; put 'put ''biBWNnQoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQpfShkKXx8ZnVuY3Rpb24gTjZ0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVy''@;'; put 'put ''biBlbWUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJB''@;'; put 'put ''cmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIGVtZShkLGcpfX0oZCl8fGZ1bmN0aW9uIEg2dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGlu''@;'; put 'put ''c3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGVtZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9''@;'; put 'put ''bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIHRMZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0''@;'; put 'put ''YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBXNnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpeyhmdW5jdGlvbiB6NnQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVu''@;'; put 'put ''Y3Rpb24iKX0pKHRoaXMsZCksdGhpcy5wbHVnaW49Zyx0aGlzLmhvdD1nLmhvdCx0aGlzLmRhdGFNYW5hZ2VyPWcuZGF0YU1hbmFnZXIsdGhpcy5jb2xsYXBzaW5nVUk9Zy5jb2xsYXBzaW5nVUl9cmV0dXJuIGZ1bmN0aW9uIEc2dChkLGcsaCl7ZyYmdExlKGQucHJvdG90eXBlLGcpLGgmJnRM''@;'; put 'put ''ZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShkLFt7a2V5OiJvbkJlZm9yZVJvd01vdmUiLHZhbHVlOmZ1bmN0aW9uKGgsdix5LEMpe3ZhciBJPXRoaXM7aWYodGhpcy5kaXNwbGF5QVBJQ29tcGF0aWJpbGl0eVdhcm5pbmcoe3Jvd3M6''@;'; put 'put ''aCxmaW5hbEluZGV4OnYsZHJvcEluZGV4OnksbW92ZVBvc3NpYmxlOkN9KSlyZXR1cm4hMTt0aGlzLm1vdmVkVG9Db2xsYXBzZWQ9ITE7dmFyIHVlPXk9PT10aGlzLmhvdC5jb3VudFJvd3MoKSxfZT11ZT90aGlzLmhvdC5jb3VudFNvdXJjZVJvd3MoKTp0aGlzLmRhdGFNYW5hZ2VyLnRyYW5z''@;'; put 'put ''bGF0ZVRyaW1tZWRSb3coeSksQmU9ITAsTmU9aC5tYXAoZnVuY3Rpb24oZm4pe2lmKCFCZSlyZXR1cm4hMTt2YXIgTG49SS5kYXRhTWFuYWdlci50cmFuc2xhdGVUcmltbWVkUm93KGZuKTtyZXR1cm4gQmU9SS5zaG91bGRBbGxvd01vdmluZyhMbixfZSksTG59KSxLZT0tMT09PU5lLmluZGV4''@;'; put 'put ''T2YoX2UpO2lmKCFCZXx8IUtlKXJldHVybiExO3ZhciBwdD10aGlzLmdldEJhc2VQYXJlbnQoTmUpLE90PXRoaXMuZ2V0VGFyZ2V0UGFyZW50KHVlLF9lKSwkdD1wdD09PU90O3JldHVybiB0aGlzLm1vdmVkVG9Db2xsYXBzZWQ9dGhpcy5jb2xsYXBzaW5nVUkuYXJlQ2hpbGRyZW5Db2xsYXBz''@;'; put 'put ''ZWQoT3QpLHRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5zdGFzaCgpLHRoaXMuc2hpZnRDb2xsYXBzaWJsZVBhcmVudHNMb2NhdGlvbnMoTmUsX2UsJHQpLHRoaXMubW92ZVJvd3MoTmUsX2UsT3QpLHRoaXMuZGF0YU1hbmFnZXIucmV3cml0ZUNhY2hlKCksdGhpcy5tb3Zl''@;'; put 'put ''Q2VsbHNNZXRhKE5lLF9lKSx0aGlzLmNvbGxhcHNpbmdVSS5jb2xsYXBzZWRSb3dzU3Rhc2guYXBwbHlTdGFzaCghMSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUm93TW92ZSIsaCx2LHksQyxDJiZ0aGlzLmlzUm93T3JkZXJDaGFuZ2VkKGgsdikpLHRoaXMuaG90LnJlbmRlcigpLHRoaXMu''@;'; put 'put ''c2VsZWN0Q2VsbHMoaCx5KSwhMX19LHtrZXk6ImRpc3BsYXlBUElDb21wYXRpYmlsaXR5V2FybmluZyIsdmFsdWU6ZnVuY3Rpb24oaCl7dmFyIHY9aC5yb3dzLHk9aC5maW5hbEluZGV4LEM9aC5kcm9wSW5kZXgsST1oLm1vdmVQb3NzaWJsZSxaPSExO3JldHVybiBhMShDKSYmKGwxKFAyKHFE''@;'; put 'put ''ZXx8KHFEZT1mdW5jdGlvbiBaNnQoZCxnKXtyZXR1cm4gZ3x8KGc9ZC5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUoZyl9fSkpfShbIlNpbmNlIHZlcnNpb24gOC4wLjAgb2YgdGhlIEhhbmRzb250YWJs''@;'; put 'put ''ZSB0aGUgJ21vdmVSb3dzJyBtZXRob2QgaXNuJ3QgdXNlZCBmb3IgbW92aW5nIHJvd3MgXG4gICAgICB3aGVuIHRoZSBOZXN0ZWRSb3dzIHBsdWdpbiBpcyBlbmFibGVkLiBQbGVhc2UgdXNlIHRoZSAnZHJhZ1Jvd3MnIG1ldGhvZCBpbnN0ZWFkLiJdLFsiU2luY2UgdmVyc2lvbiA4LjAuMCBv''@;'; put 'put ''ZiB0aGUgSGFuZHNvbnRhYmxlIHRoZSAnbW92ZVJvd3MnIG1ldGhvZCBpc24ndCB1c2VkIGZvciBtb3Zpbmcgcm93c1xceDIwXG4gICAgICB3aGVuIHRoZSBOZXN0ZWRSb3dzIHBsdWdpbiBpcyBlbmFibGVkLiBQbGVhc2UgdXNlIHRoZSAnZHJhZ1Jvd3MnIG1ldGhvZCBpbnN0ZWFkLiJdKSkp''@;'; put 'put ''KSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJSb3dNb3ZlIix2LHksQyxJLCExKSxaPSEwKSxafX0se2tleToic2hvdWxkQWxsb3dNb3ZpbmciLHZhbHVlOmZ1bmN0aW9uKGgsdil7cmV0dXJuISh0aGlzLmRhdGFNYW5hZ2VyLmlzUGFyZW50KGgpfHx0aGlzLmRhdGFNYW5hZ2VyLmlzUm93SGln''@;'; put 'put ''aGVzdExldmVsKGgpfHxoPT09dnx8MD09PXYpfX0se2tleToiZ2V0QmFzZVBhcmVudCIsdmFsdWU6ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93UGFyZW50KGhbMF0pfX0se2tleToiZ2V0VGFyZ2V0UGFyZW50Iix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciB5PXRo''@;'; put 'put ''aXMuZGF0YU1hbmFnZXIuZ2V0Um93UGFyZW50KGg/di0xOnYpO3JldHVybiBudWxsPT15JiYoeT10aGlzLmRhdGFNYW5hZ2VyLmdldFJvd1BhcmVudCh2LTEpKSx5fX0se2tleToic2hpZnRDb2xsYXBzaWJsZVBhcmVudHNMb2NhdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGgsdix5KXt5fHwoTWF0''@;'; put 'put ''aC5tYXguYXBwbHkoTWF0aCxlTGUoaCkpPD12P3RoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5zaGlmdFN0YXNoKGhbMF0sdiwtMSpoLmxlbmd0aCk6dGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLnNoaWZ0U3Rhc2godixoWzBdLGgubGVuZ3RoKSl9fSx7''@;'; put 'put ''a2V5OiJtb3ZlUm93cyIsdmFsdWU6ZnVuY3Rpb24oaCx2LHkpe3ZhciBDPXRoaXMsST12PT09dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dJbmRleCh5KSt0aGlzLmRhdGFNYW5hZ2VyLmNvdW50Q2hpbGRyZW4oeSkrMTt0aGlzLmhvdC5iYXRjaFJlbmRlcihmdW5jdGlvbigpe2guZm9yRWFjaChm''@;'; put 'put ''dW5jdGlvbihaKXtDLmRhdGFNYW5hZ2VyLm1vdmVSb3coWix2LEMubW92ZWRUb0NvbGxhcHNlZCxJKX0pfSl9fSx7a2V5OiJtb3ZlQ2VsbHNNZXRhIix2YWx1ZTpmdW5jdGlvbihoLHYpe3ZhciBDLHk9dGhpcyxJPVtdLFo9TWF0aC5tYXguYXBwbHkoTWF0aCxlTGUoaCkpPHY7aC5mb3JFYWNo''@;'; put 'put ''KGZ1bmN0aW9uKHVlKXtJLnB1c2goeS5ob3QuZ2V0Q2VsbE1ldGFBdFJvdyh1ZSkpfSksdGhpcy5ob3Quc3BsaWNlQ2VsbHNNZXRhKGhbMF0saC5sZW5ndGgpLChDPXRoaXMuaG90KS5zcGxpY2VDZWxsc01ldGEuYXBwbHkoQyxbdi0oWj9JLmxlbmd0aDowKSwwXS5jb25jYXQoSSkpfX0se2tl''@;'; put 'put ''eToic2VsZWN0Q2VsbHMiLHZhbHVlOmZ1bmN0aW9uKGgsdil7dmFyIHVlLHk9aC5sZW5ndGgsQz0wLEk9MCxaPW51bGw7aWYodGhpcy5tb3ZlZFRvQ29sbGFwc2VkKXt2YXIgX2U7X2U9dGhpcy5kYXRhTWFuYWdlci50cmFuc2xhdGVUcmltbWVkUm93KGhbeS0xXTx2P3YteTp2KTt2YXIgQmU9''@;'; put 'put ''dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dQYXJlbnQobnVsbD09PV9lP3RoaXMuaG90LmNvdW50U291cmNlUm93cygpLTE6X2UtMSksTmU9dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dJbmRleChCZSk7ST1DPXRoaXMuZGF0YU1hbmFnZXIudW50cmFuc2xhdGVUcmltbWVkUm93KE5lKX1lbHNlIGhb''@;'; put 'put ''eS0xXTx2P0M9KEk9di0xKS15KzE6ST0oQz12KSt5LTE7Wj10aGlzLmhvdC5zZWxlY3Rpb24sdWU9dGhpcy5ob3QuY291bnRDb2xzKCktMSxaLnNldFJhbmdlU3RhcnQodGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoQywwKSksWi5zZXRSYW5nZUVuZCh0aGlzLmhvdC5fY3JlYXRlQ2VsbENv''@;'; put 'put ''b3JkcyhJLHVlKSwhMCl9fSx7a2V5OiJpc1Jvd09yZGVyQ2hhbmdlZCIsdmFsdWU6ZnVuY3Rpb24oaCx2KXtyZXR1cm4gaC5zb21lKGZ1bmN0aW9uKHksQyl7cmV0dXJuIHktQyE9PXZ9KX19XSksZH0oKTtmdW5jdGlvbiB0bWUoZCl7cmV0dXJuKHRtZT0iZnVuY3Rpb24iPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIGd9OmZ1bmN0aW9uKGcpe3JldHVybiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZnLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZnIT09U3ltYm9sLnByb3RvdHlwZT8ic3lt''@;'; put 'put ''Ym9sIjp0eXBlb2YgZ30pKGQpfWZ1bmN0aW9uIG5MZShkKXtyZXR1cm4gZnVuY3Rpb24gSjZ0KGQpe2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIG5tZShkKX0oZCl8fGZ1bmN0aW9uIFE2dChkKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZFtTeW1ib2wuaXRlcmF0''@;'; put 'put ''b3JdfHxudWxsIT1kWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZCl9KGQpfHxmdW5jdGlvbiBVNnQoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIG5tZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0x''@;'; put 'put ''KTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVz''@;'; put 'put ''dChoKSlyZXR1cm4gbm1lKGQsZyl9fShkKXx8ZnVuY3Rpb24gWTZ0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZl''@;'; put 'put ''IGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gbm1lKGQsZyl7KG51bGw9PWd8fGc+ZC5sZW5ndGgpJiYoZz1kLmxlbmd0aCk7Zm9yKHZhciBoPTAsdj1uZXcgQXJyYXkoZyk7aDxnO2grKyl2W2hdPWRbaF07cmV0dXJuIHZ9ZnVuY3Rpb24gckxlKGQsZyl7Zm9y''@;'; put 'put ''KHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gYk0oKXtyZXR1''@;'; put 'put ''cm4gYk09InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PSQ2dChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQu''@;'; put 'put ''Y2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sYk0uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uICQ2dChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9dDkoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rp''@;'; put 'put ''b24gcm1lKGQsZyl7cmV0dXJuKHJtZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIHQ4dChkLGcpe2lmKGcmJigib2JqZWN0Ij09PXRtZShnKXx8ImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gaUxlKGQpfWZ1bmN0aW9uIGlMZShkKXtpZih2b2lkIDA9PT1k''@;'; put 'put ''KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGR9ZnVuY3Rpb24gdDkoZCl7cmV0dXJuKHQ5PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Yu''@;'; put 'put ''YmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIGltZT0ibmVzdGVkUm93cyIsbjk9bmV3IFdlYWtNYXAsbzh0PWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBxNnQoZCxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYm''@;'; put 'put ''bnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZCx3cml0YWJsZTohMCxjb25maWd1''@;'; put 'put ''cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmcm1lKGQsZyl9KGgsZCk7dmFyIGc9ZnVuY3Rpb24gZTh0KGQpe3ZhciBnPWZ1bmN0aW9uIG44dCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3Qu''@;'; put 'put ''Y29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkp''@;'; put 'put ''LCEwfWNhdGNoKGQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgeSx2PXQ5KGQpO2lmKGcpe3ZhciBDPXQ5KHRoaXMpLmNvbnN0cnVjdG9yO3k9UmVmbGVjdC5jb25zdHJ1Y3Qodixhcmd1bWVudHMsQyl9ZWxzZSB5PXYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB0''@;'; put 'put ''OHQodGhpcyx5KX19KGgpO2Z1bmN0aW9uIGgodil7dmFyIHk7cmV0dXJuIGZ1bmN0aW9uIFg2dChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGgpLCh5PWcuY2FsbCh0aGlzLHYp''@;'; put 'put ''KS5kYXRhTWFuYWdlcj1udWxsLHkuaGVhZGVyc1VJPW51bGwseS5jb2xsYXBzZWRSb3dzTWFwPW51bGwsbjkuc2V0KGlMZSh5KSx7bW92ZWRUb0NvbGxhcHNlZDohMSxza2lwUmVuZGVyOm51bGwsc2tpcENvcmVBUElNb2RpZmllcnM6ITF9KSx5fXJldHVybiBmdW5jdGlvbiBLNnQoZCxnLGgp''@;'; put 'put ''e2cmJnJMZShkLnByb3RvdHlwZSxnKSxoJiZyTGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtpbWVdfX0se2tl''@;'; put 'put ''eToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5lbmFibGVkfHwodGhpcy5jb2xsYXBzZWRSb3dzTWFwPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKCJuZXN0ZWRSb3dzIixuZXcgbnopLHRoaXMuZGF0YU1hbmFnZXI9bmV3IG82dCh0''@;'; put 'put ''aGlzLHRoaXMuaG90KSx0aGlzLmNvbGxhcHNpbmdVST1uZXcgVDZ0KHRoaXMsdGhpcy5ob3QpLHRoaXMuaGVhZGVyc1VJPW5ldyBVRGUodGhpcyx0aGlzLmhvdCksdGhpcy5jb250ZXh0TWVudVVJPW5ldyBGNnQodGhpcyx0aGlzLmhvdCksdGhpcy5yb3dNb3ZlQ29udHJvbGxlcj1uZXcgVzZ0''@;'; put 'put ''KHRoaXMpLHRoaXMuYWRkSG9vaygiYWZ0ZXJJbml0IixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJJbml0LmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlVmlld1JlbmRlciIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkJlZm9yZVZpZXdSZW5kZXIuYXBwbHkoeSxh''@;'; put 'put ''cmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlSb3dEYXRhIixmdW5jdGlvbigpe3JldHVybiB5Lm9uTW9kaWZ5Um93RGF0YS5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soIm1vZGlmeVNvdXJjZUxlbmd0aCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbk1vZGlmeVNvdXJj''@;'; put 'put ''ZUxlbmd0aC5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZURhdGFTcGxpY2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25CZWZvcmVEYXRhU3BsaWNlLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiZmlsdGVyRGF0YSIsZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''eS5vbkZpbHRlckRhdGEuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25BZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRI''@;'; put 'put ''b29rKCJhZnRlckdldFJvd0hlYWRlciIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyR2V0Um93SGVhZGVyLmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VEb3duIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQmVmb3JlT25DZWxsTW91c2VEb3du''@;'; put 'put ''LmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUmVtb3ZlUm93IixmdW5jdGlvbigpe3JldHVybiB5Lm9uQmVmb3JlUmVtb3ZlUm93LmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJSZW1vdmVSb3ciLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25B''@;'; put 'put ''ZnRlclJlbW92ZVJvdy5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZUFkZENoaWxkIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQmVmb3JlQWRkQ2hpbGQuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlckFkZENoaWxkIixmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB5Lm9uQWZ0ZXJBZGRDaGlsZC5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZURldGFjaENoaWxkIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQmVmb3JlRGV0YWNoQ2hpbGQuYXBwbHkoeSxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlckRldGFjaENo''@;'; put 'put ''aWxkIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJEZXRhY2hDaGlsZC5hcHBseSh5LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soIm1vZGlmeVJvd0hlYWRlcldpZHRoIixmdW5jdGlvbigpe3JldHVybiB5Lm9uTW9kaWZ5Um93SGVhZGVyV2lkdGguYXBwbHkoeSxhcmd1bWVudHMpfSks''@;'; put 'put ''dGhpcy5hZGRIb29rKCJhZnRlckNyZWF0ZVJvdyIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyQ3JlYXRlUm93LmFwcGx5KHksYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUm93TW92ZSIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkJlZm9yZVJvd01vdmUuYXBwbHkoeSxhcmd1''@;'; put 'put ''bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVMb2FkRGF0YSIsZnVuY3Rpb24oQyl7cmV0dXJuIHkub25CZWZvcmVMb2FkRGF0YShDKX0pLGJNKHQ5KGgucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCgibmVzdGVkUm93cyIpLGJNKHQ5KGgucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVQ''@;'; put 'put ''bHVnaW4oKTt2YXIgeT10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGEoKTt0aGlzLmVuYWJsZVBsdWdpbigpLHRoaXMuZGF0YU1hbmFnZXIudXBkYXRlV2l0aERhdGEoeSksYk0odDkoaC5wcm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJvbkJlZm9yZVJv''@;'; put 'put ''d01vdmUiLHZhbHVlOmZ1bmN0aW9uKHksQyxJLFope3JldHVybiB0aGlzLnJvd01vdmVDb250cm9sbGVyLm9uQmVmb3JlUm93TW92ZSh5LEMsSSxaKX19LHtrZXk6ImRpc2FibGVDb3JlQVBJTW9kaWZpZXJzIix2YWx1ZTpmdW5jdGlvbigpe245LmdldCh0aGlzKS5za2lwQ29yZUFQSU1vZGlm''@;'; put 'put ''aWVycz0hMH19LHtrZXk6ImVuYWJsZUNvcmVBUElNb2RpZmllcnMiLHZhbHVlOmZ1bmN0aW9uKCl7bjkuZ2V0KHRoaXMpLnNraXBDb3JlQVBJTW9kaWZpZXJzPSExfX0se2tleToib25CZWZvcmVPbkNlbGxNb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXt0aGlzLmNvbGxhcHNpbmdV''@;'; put 'put ''SS50b2dnbGVTdGF0ZSh5LEMsSSl9fSx7a2V5OiJvbk1vZGlmeVJvd0RhdGEiLHZhbHVlOmZ1bmN0aW9uKHkpe2lmKCFuOS5nZXQodGhpcykuc2tpcENvcmVBUElNb2RpZmllcnMpcmV0dXJuIHRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YU9iamVjdCh5KX19LHtrZXk6Im9uTW9kaWZ5U291cmNl''@;'; put 'put ''TGVuZ3RoIix2YWx1ZTpmdW5jdGlvbigpe2lmKCFuOS5nZXQodGhpcykuc2tpcENvcmVBUElNb2RpZmllcnMpcmV0dXJuIHRoaXMuZGF0YU1hbmFnZXIuY291bnRBbGxSb3dzKCl9fSx7a2V5OiJvbkJlZm9yZURhdGFTcGxpY2UiLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXtyZXR1cm4hKCFuOS5n''@;'; put 'put ''ZXQodGhpcykuc2tpcENvcmVBUElNb2RpZmllcnMmJiF0aGlzLmRhdGFNYW5hZ2VyLmlzUm93SGlnaGVzdExldmVsKHkpJiYodGhpcy5kYXRhTWFuYWdlci5zcGxpY2VEYXRhKHksQyxJKSwxKSl9fSx7a2V5OiJvbkZpbHRlckRhdGEiLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXt2YXIgWj1uOS5n''@;'; put 'put ''ZXQodGhpcyk7cmV0dXJuIHRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5zdGFzaCgpLHRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC50cmltU3Rhc2goSVswXSxDKSx0aGlzLmNvbGxhcHNpbmdVSS5jb2xsYXBzZWRSb3dzU3Rhc2guc2hpZnRTdGFzaChJ''@;'; put 'put ''WzBdLG51bGwsLTEqQyksdGhpcy5kYXRhTWFuYWdlci5maWx0ZXJEYXRhKHksQyxJKSxaLnNraXBSZW5kZXI9ITAsdGhpcy5kYXRhTWFuYWdlci5nZXREYXRhKCkuc2xpY2UoKX19LHtrZXk6Im9uQWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih5KXtyZXR1''@;'; put 'put ''cm4gdGhpcy5jb250ZXh0TWVudVVJLmFwcGVuZE9wdGlvbnMoeSl9fSx7a2V5OiJvbkFmdGVyR2V0Um93SGVhZGVyIix2YWx1ZTpmdW5jdGlvbih5LEMpe3RoaXMuaGVhZGVyc1VJLmFwcGVuZExldmVsSW5kaWNhdG9ycyh5LEMpfX0se2tleToib25Nb2RpZnlSb3dIZWFkZXJXaWR0aCIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oeSl7cmV0dXJuIHRoaXMuaGVhZGVyc1VJLnJvd0hlYWRlcldpZHRoQ2FjaGV8fHl9fSx7a2V5OiJvbkFmdGVyUmVtb3ZlUm93Iix2YWx1ZTpmdW5jdGlvbih5LEMsSSxaKXt2YXIgdWU9dGhpcztpZihaIT09dGhpcy5wbHVnaW5OYW1lKXt2YXIgX2U9bjkuZ2V0KHRoaXMp''@;'; put 'put ''O3NldFRpbWVvdXQoZnVuY3Rpb24oKXtfZS5za2lwUmVuZGVyPW51bGwsdWUuaGVhZGVyc1VJLnVwZGF0ZVJvd0hlYWRlcldpZHRoKCksdWUuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5hcHBseVN0YXNoKCl9LDApfX19LHtrZXk6Im9uQmVmb3JlUmVtb3ZlUm93Iix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbih5LEMsSSl7dmFyIFo9dGhpcyx1ZT1BcnJheS5mcm9tKEkucmVkdWNlKGZ1bmN0aW9uKF9lLEJlKXtpZihaLmRhdGFNYW5hZ2VyLmlzUGFyZW50KEJlKSl7dmFyIE5lPVouZGF0YU1hbmFnZXIuZ2V0RGF0YU9iamVjdChCZSkuX19jaGlsZHJlbjtyZXR1cm4gX2UuYWRkKEJlKSxB''@;'; put 'put ''cnJheS5pc0FycmF5KE5lKSYmTmUuZm9yRWFjaChmdW5jdGlvbihLZSl7cmV0dXJuIF9lLmFkZChaLmRhdGFNYW5hZ2VyLmdldFJvd0luZGV4KEtlKSl9KSxfZX1yZXR1cm4gX2UuYWRkKEJlKX0sbmV3IFNldCkpO0kubGVuZ3RoPTAsSS5wdXNoLmFwcGx5KEksbkxlKHVlKSl9fSx7a2V5OiJv''@;'; put 'put ''bkJlZm9yZUFkZENoaWxkIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5zdGFzaCgpfX0se2tleToib25BZnRlckFkZENoaWxkIix2YWx1ZTpmdW5jdGlvbih5LEMpe3RoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5zaGlm''@;'; put 'put ''dFN0YXNoKHRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93SW5kZXgoQykpLHRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5hcHBseVN0YXNoKCksdGhpcy5oZWFkZXJzVUkudXBkYXRlUm93SGVhZGVyV2lkdGgoKX19LHtrZXk6Im9uQmVmb3JlRGV0YWNoQ2hpbGQiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7dGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLnN0YXNoKCl9fSx7a2V5OiJvbkFmdGVyRGV0YWNoQ2hpbGQiLHZhbHVlOmZ1bmN0aW9uKHksQyxJKXt0aGlzLmNvbGxhcHNpbmdVSS5jb2xsYXBzZWRSb3dzU3Rhc2guc2hpZnRTdGFzaChJLG51bGwsLTEpLHRo''@;'; put 'put ''aXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5hcHBseVN0YXNoKCksdGhpcy5oZWFkZXJzVUkudXBkYXRlUm93SGVhZGVyV2lkdGgoKX19LHtrZXk6Im9uQWZ0ZXJDcmVhdGVSb3ciLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kYXRhTWFuYWdlci5yZXdyaXRlQ2FjaGUoKX19LHtr''@;'; put 'put ''ZXk6Im9uQWZ0ZXJJbml0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PU1hdGgubWF4LmFwcGx5KE1hdGgsbkxlKHRoaXMuZGF0YU1hbmFnZXIuY2FjaGUubGV2ZWxzKSk7eT4wJiZ0aGlzLmhlYWRlcnNVSS51cGRhdGVSb3dIZWFkZXJXaWR0aCh5KX19LHtrZXk6Im9uQmVmb3JlVmlld1JlbmRl''@;'; put 'put ''ciIsdmFsdWU6ZnVuY3Rpb24oeSxDKXtuOS5nZXQodGhpcykuc2tpcFJlbmRlciYmKEMuc2tpcFJlbmRlcj0hMCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe2JNKHQ5KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6Im9uQmVmb3JlTG9h''@;'; put 'put ''ZERhdGEiLHZhbHVlOmZ1bmN0aW9uKHkpe2lmKCF0a2UoeSkpcmV0dXJuIEMzZSgiVGhlIE5lc3RlZCBSb3dzIHBsdWdpbiByZXF1aXJlcyBhbiBBcnJheSBvZiBPYmplY3RzIGFzIGEgZGF0YXNldCB0byBiZSBwcm92aWRlZC4gVGhlIHBsdWdpbiBoYXMgYmVlbiBkaXNhYmxlZC4iKSx0aGlz''@;'; put 'put ''LmhvdC5nZXRTZXR0aW5ncygpW2ltZV09ITEsdm9pZCB0aGlzLmRpc2FibGVQbHVnaW4oKTt0aGlzLmRhdGFNYW5hZ2VyLnNldERhdGEoeSksdGhpcy5kYXRhTWFuYWdlci5yZXdyaXRlQ2FjaGUoKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGltZX19LHtr''@;'; put 'put ''ZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDMwMH19XSksaH0oWXMpO2Z1bmN0aW9uIGE4dChkLGcpe2lmKCEoZCBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG9M''@;'; put 'put ''ZShkLGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgdj1nW2hdO3YuZW51bWVyYWJsZT12LmVudW1lcmFibGV8fCExLHYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiB2JiYodi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsdi5rZXksdil9fXZhciBzOHQ9''@;'; put 'put ''ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGcpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp3aW5kb3c7YTh0KHRoaXMsZCksdGhpcy5yb290V2luZG93PWgsdGhpcy5wcmVmaXg9Zyx0aGlzLnNhdmVkS2V5cz1bXSx0aGlzLmxvYWRT''@;'; put 'put ''YXZlZEtleXMoKX1yZXR1cm4gZnVuY3Rpb24gbDh0KGQsZyxoKXtnJiZvTGUoZC5wcm90b3R5cGUsZyksaCYmb0xlKGQsaCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGQsW3trZXk6InNhdmVWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt0''@;'; put 'put ''aGlzLnJvb3RXaW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oIiIuY29uY2F0KHRoaXMucHJlZml4LCJfIikuY29uY2F0KGgpLEpTT04uc3RyaW5naWZ5KHYpKSwtMT09PXRoaXMuc2F2ZWRLZXlzLmluZGV4T2YoaCkmJih0aGlzLnNhdmVkS2V5cy5wdXNoKGgpLHRoaXMuc2F2ZVNhdmVkS2V5''@;'; put 'put ''cygpKX19LHtrZXk6ImxvYWRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oaCx2KXt2YXIgeT12b2lkIDA9PT1oP3Y6aCxDPXRoaXMucm9vdFdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiIi5jb25jYXQodGhpcy5wcmVmaXgsIl8iKS5jb25jYXQoeSkpO3JldHVybiBudWxsPT09Qz92b2lkIDA6''@;'; put 'put ''SlNPTi5wYXJzZShDKX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbihoKXt0aGlzLnJvb3RXaW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oIiIuY29uY2F0KHRoaXMucHJlZml4LCJfIikuY29uY2F0KGgpKX19LHtrZXk6InJlc2V0QWxsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBo''@;'; put 'put ''PXRoaXM7VXIodGhpcy5zYXZlZEtleXMsZnVuY3Rpb24odix5KXtoLnJvb3RXaW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oIiIuY29uY2F0KGgucHJlZml4LCJfIikuY29uY2F0KGguc2F2ZWRLZXlzW3ldKSl9KSx0aGlzLmNsZWFyU2F2ZWRLZXlzKCl9fSx7a2V5OiJsb2FkU2F2ZWRL''@;'; put 'put ''ZXlzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMucm9vdFdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiIi5jb25jYXQodGhpcy5wcmVmaXgsIl9fcGVyc2lzdGVudFN0YXRlS2V5cyIpKSx2PSJzdHJpbmciPT10eXBlb2YgaD9KU09OLnBhcnNlKGgpOnZvaWQgMDt0aGlzLnNhdmVk''@;'; put 'put ''S2V5cz12fHxbXX19LHtrZXk6InNhdmVTYXZlZEtleXMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5yb290V2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCIiLmNvbmNhdCh0aGlzLnByZWZpeCwiX19wZXJzaXN0ZW50U3RhdGVLZXlzIiksSlNPTi5zdHJpbmdpZnkodGhpcy5zYXZlZEtleXMp''@;'; put 'put ''KX19LHtrZXk6ImNsZWFyU2F2ZWRLZXlzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2F2ZWRLZXlzLmxlbmd0aD0wLHRoaXMuc2F2ZVNhdmVkS2V5cygpfX1dKSxkfSgpO2NvbnN0IHU4dD1zOHQ7ZnVuY3Rpb24gb21lKGQpe3JldHVybihvbWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYm''@;'; put 'put ''InN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6''@;'; put 'put ''dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBhTGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlvbiBfTSgpe3JldHVybiBfTT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9aDh0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5''@;'; put 'put ''RGVzY3JpcHRvcih5LGgpO3JldHVybiBDLmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxfTS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gaDh0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykm''@;'; put 'put ''Jm51bGwhPT0oZD1yOShkKSk7KTtyZXR1cm4gZH1mdW5jdGlvbiBhbWUoZCxnKXtyZXR1cm4oYW1lPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gZzh0''@;'; put 'put ''KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09b21lKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBm''@;'; put 'put ''dW5jdGlvbiBtOHQoZCl7aWYodm9pZCAwPT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiByOShkKXtyZXR1cm4ocjk9T2JqZWN0LnNldFBy''@;'; put 'put ''b3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX16by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigicGVyc2lzdGVudFN0YXRlU2F2ZSIpLHpvLmdldFNpbmdsZXRv''@;'; put 'put ''bigpLnJlZ2lzdGVyKCJwZXJzaXN0ZW50U3RhdGVMb2FkIiksem8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoInBlcnNpc3RlbnRTdGF0ZVJlc2V0Iik7dmFyIGxMZT0icGVyc2lzdGVudFN0YXRlIix5OHQ9ZnVuY3Rpb24oZCl7IWZ1bmN0aW9uIGQ4dChkLGcpe2lmKCJmdW5jdGlvbiIhPXR5''@;'; put 'put ''cGVvZiBnJiZudWxsIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyYmZy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpkLHdyaXRhYmxlOiEw''@;'; put 'put ''LGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxnJiZhbWUoZCxnKX0oaCxkKTt2YXIgZz1mdW5jdGlvbiBwOHQoZCl7dmFyIGc9ZnVuY3Rpb24gdjh0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwh''@;'; put 'put ''UmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rp''@;'; put 'put ''b24oKXt9KSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9cjkoZCk7aWYoZyl7dmFyIEM9cjkodGhpcykuY29uc3RydWN0b3I7eT1SZWZsZWN0LmNvbnN0cnVjdCh2LGFyZ3VtZW50cyxDKX1lbHNlIHk9di5hcHBseSh0aGlzLGFyZ3VtZW50cyk7''@;'; put 'put ''cmV0dXJuIGc4dCh0aGlzLHkpfX0oaCk7ZnVuY3Rpb24gaCh2KXt2YXIgeTtyZXR1cm4gZnVuY3Rpb24gYzh0KGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsaCksKHk9Zy5jYWxs''@;'; put 'put ''KHRoaXMsdikpLnN0b3JhZ2U9dm9pZCAwLHl9cmV0dXJuIGZ1bmN0aW9uIGY4dChkLGcsaCl7ZyYmYUxlKGQucHJvdG90eXBlLGcpLGgmJmFMZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShoLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW2xMZV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLnN0b3JhZ2V8fCh0aGlzLnN0b3JhZ2U9bmV3IHU4dCh0aGlzLmhvdC5yb290RWxl''@;'; put 'put ''bWVudC5pZCx0aGlzLmhvdC5yb290V2luZG93KSksdGhpcy5hZGRIb29rKCJwZXJzaXN0ZW50U3RhdGVTYXZlIixmdW5jdGlvbihDLEkpe3JldHVybiB5LnNhdmVWYWx1ZShDLEkpfSksdGhpcy5hZGRIb29rKCJwZXJzaXN0ZW50U3RhdGVMb2FkIixmdW5jdGlvbihDLEkpe3JldHVybiB5Lmxv''@;'; put 'put ''YWRWYWx1ZShDLEkpfSksdGhpcy5hZGRIb29rKCJwZXJzaXN0ZW50U3RhdGVSZXNldCIsZnVuY3Rpb24oKXtyZXR1cm4geS5yZXNldFZhbHVlKCl9KSxfTShyOShoLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe3RoaXMuc3RvcmFnZT12b2lkIDAsX00ocjkoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCks''@;'; put 'put ''X00ocjkoaC5wcm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJsb2FkVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKHksQyl7Qy52YWx1ZT10aGlzLnN0b3JhZ2UubG9hZFZhbHVlKHkpfX0se2tleToic2F2ZVZhbHVlIix2YWx1ZTpmdW5jdGlvbih5LEMpe3Ro''@;'; put 'put ''aXMuc3RvcmFnZS5zYXZlVmFsdWUoeSxDKX19LHtrZXk6InJlc2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZvaWQgMD09PXk/dGhpcy5zdG9yYWdlLnJlc2V0QWxsKCk6dGhpcy5zdG9yYWdlLnJlc2V0KHkpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXtfTShyOShoLnBy''@;'; put 'put ''b3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBsTGV9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAwfX1dKSxofShZcyk7ZnVuY3Rpb24gbG1lKGQpe3JldHVy''@;'; put 'put ''bihsbWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJv''@;'; put 'put ''bCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGd9KShkKX1mdW5jdGlvbiBzbWUoZCxnKXsobnVsbD09Z3x8Zz5kLmxlbmd0aCkmJihnPWQubGVuZ3RoKTtmb3IodmFyIGg9MCx2PW5ldyBBcnJheShnKTtoPGc7aCsrKXZbaF09ZFtoXTtyZXR1cm4gdn1mdW5jdGlvbiBz''@;'; put 'put ''TGUoZCxnKXtmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIHY9Z1toXTt2LmVudW1lcmFibGU9di5lbnVtZXJhYmxlfHwhMSx2LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gdiYmKHYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLHYua2V5LHYpfX1mdW5jdGlv''@;'; put 'put ''biBDTSgpe3JldHVybiBDTT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihnLGgsdil7dmFyIHk9RTh0KGcsaCk7aWYoeSl7dmFyIEM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LGgpO3JldHVybiBD''@;'; put 'put ''LmdldD9DLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9nOnYpOkMudmFsdWV9fSxDTS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gRTh0KGQsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZykmJm51bGwhPT0oZD1pOShkKSk7KTtyZXR1''@;'; put 'put ''cm4gZH1mdW5jdGlvbiB1bWUoZCxnKXtyZXR1cm4odW1lPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKHYseSl7cmV0dXJuIHYuX19wcm90b19fPXksdn0pKGQsZyl9ZnVuY3Rpb24gSTh0KGQsZyl7aWYoZyYmKCJvYmplY3QiPT09''@;'; put 'put ''bG1lKGcpfHwiZnVuY3Rpb24iPT10eXBlb2YgZykpcmV0dXJuIGc7aWYodm9pZCAwIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBEOHQoZCl7aWYodm9pZCAw''@;'; put 'put ''PT09ZCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkfShkKX1mdW5jdGlvbiBpOShkKXtyZXR1cm4oaTk9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90''@;'; put 'put ''b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX12YXIgY21lPSJzZWFyY2giLEI4dD1mdW5jdGlvbihnLGgsdix5LEMpe2cuZ2V0Q2VsbE1ldGEoaCx2KS5pc1NlYXJjaFJlc3VsdD1DfSxQOHQ9ZnVuY3Rp''@;'; put 'put ''b24oZyxoLHYpe3JldHVybiEoYTEoZyl8fG51bGw9PT1nfHwhZy50b0xvY2FsZUxvd2VyQ2FzZXx8MD09PWcubGVuZ3RofHxhMShoKXx8bnVsbD09PWgpJiYtMSE9PWgudG9TdHJpbmcoKS50b0xvY2FsZUxvd2VyQ2FzZSh2LmxvY2FsZSkuaW5kZXhPZihnLnRvTG9jYWxlTG93ZXJDYXNlKHYu''@;'; put 'put ''bG9jYWxlKSl9LEY4dD1mdW5jdGlvbihkKXshZnVuY3Rpb24geDh0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9''@;'; put 'put ''T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJnVtZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9u''@;'; put 'put ''IFQ4dChkKXt2YXIgZz1mdW5jdGlvbiBMOHQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29s''@;'; put 'put ''ZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1pOShkKTtpZihnKXt2YXIgQz1pOSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJl''@;'; put 'put ''ZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gSTh0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYpe3ZhciB5O3JldHVybiBmdW5jdGlvbiBTOHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoeT1nLmNhbGwodGhpcyx2KSkuY2FsbGJhY2s9Qjh0LHkucXVlcnlNZXRob2Q9UDh0LHkuc2VhcmNoUmVzdWx0Q2xhc3M9Imh0U2VhcmNoUmVzdWx0Iix5fXJldHVybiBmdW5jdGlvbiBNOHQoZCxn''@;'; put 'put ''LGgpe2cmJnNMZShkLnByb3RvdHlwZSxnKSxoJiZzTGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhvdC5nZXRTZXR0aW5ncygpW2NtZV19fSx7''@;'; put 'put ''a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcztpZighdGhpcy5lbmFibGVkKXt2YXIgQz10aGlzLmhvdC5nZXRTZXR0aW5ncygpW2NtZV07dGhpcy51cGRhdGVQbHVnaW5TZXR0aW5ncyhDKSx0aGlzLmFkZEhvb2soImJlZm9yZVJlbmRlcmVyIixmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiB5Lm9uQmVmb3JlUmVuZGVyZXIuYXBwbHkoeSxhcmd1bWVudHMpfSksQ00oaTkoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4geS5vbkJlZm9yZVJlbmRlcmVyLmFwcGx5KHksYXJndW1lbnRzKX07dGhpcy5ob3QuYWRkSG9vaygiYmVmb3JlUmVuZGVyZXIiLEMpLHRoaXMuaG90LmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGZ1bmN0aW9uKCl7eS5ob3QucmVtb3ZlSG9vaygiYmVmb3JlUmVuZGVy''@;'; put 'put ''ZXIiLEMpfSksQ00oaTkoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksQ00oaTkoaC5wcm90b3R5cGUpLCJ1cGRh''@;'; put 'put ''dGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJxdWVyeSIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcyxJPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLmdldENhbGxiYWNrKCksWj1hcmd1bWVudHMubGVuZ3Ro''@;'; put 'put ''PjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dGhpcy5nZXRRdWVyeU1ldGhvZCgpLHVlPXRoaXMuaG90LmNvdW50Um93cygpLF9lPXRoaXMuaG90LmNvdW50Q29scygpLEJlPVtdLE5lPXRoaXMuaG90O3JldHVybiBpYSgwLHVlLTEsZnVuY3Rpb24oS2Upe2lhKDAsX2Ut''@;'; put 'put ''MSxmdW5jdGlvbihwdCl7dmFyIE90PUMuaG90LmdldERhdGFBdENlbGwoS2UscHQpLCR0PUMuaG90LmdldENlbGxNZXRhKEtlLHB0KSxmbj0kdC5zZWFyY2guY2FsbGJhY2t8fEksaXI9KCR0LnNlYXJjaC5xdWVyeU1ldGhvZHx8WikoeSxPdCwkdCk7aXImJkJlLnB1c2goe3JvdzpLZSxjb2w6''@;'; put 'put ''cHQsZGF0YTpPdH0pLGZuJiZmbihOZSxLZSxwdCxPdCxpcil9KX0pLEJlfX0se2tleToiZ2V0Q2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FsbGJhY2t9fSx7a2V5OiJzZXRDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5jYWxsYmFjaz15fX0se2tleToi''@;'; put 'put ''Z2V0UXVlcnlNZXRob2QiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlNZXRob2R9fSx7a2V5OiJzZXRRdWVyeU1ldGhvZCIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5xdWVyeU1ldGhvZD15fX0se2tleToiZ2V0U2VhcmNoUmVzdWx0Q2xhc3MiLHZhbHVlOmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuc2VhcmNoUmVzdWx0Q2xhc3N9fSx7a2V5OiJzZXRTZWFyY2hSZXN1bHRDbGFzcyIsdmFsdWU6ZnVuY3Rpb24oeSl7dGhpcy5zZWFyY2hSZXN1bHRDbGFzcz15fX0se2tleToidXBkYXRlUGx1Z2luU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKHkpe3hsKHkpJiYoeS5zZWFy''@;'; put 'put ''Y2hSZXN1bHRDbGFzcyYmdGhpcy5zZXRTZWFyY2hSZXN1bHRDbGFzcyh5LnNlYXJjaFJlc3VsdENsYXNzKSx5LnF1ZXJ5TWV0aG9kJiZ0aGlzLnNldFF1ZXJ5TWV0aG9kKHkucXVlcnlNZXRob2QpLHkuY2FsbGJhY2smJnRoaXMuc2V0Q2FsbGJhY2soeS5jYWxsYmFjaykpfX0se2tleToib25C''@;'; put 'put ''ZWZvcmVSZW5kZXJlciIsdmFsdWU6ZnVuY3Rpb24oeSxDLEksWix1ZSxfZSl7dmFyIEtlLEJlPV9lLmNsYXNzTmFtZXx8W10sTmU9W107InN0cmluZyI9PXR5cGVvZiBCZT9OZT1CZS5zcGxpdCgiICIpOihLZT1OZSkucHVzaC5hcHBseShLZSxmdW5jdGlvbiB3OHQoZCl7cmV0dXJuIGZ1bmN0''@;'; put 'put ''aW9uIGs4dChkKXtpZihBcnJheS5pc0FycmF5KGQpKXJldHVybiBzbWUoZCl9KGQpfHxmdW5jdGlvbiBDOHQoZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGQp''@;'; put 'put ''fShkKXx8ZnVuY3Rpb24gXzh0KGQsZyl7aWYoZCl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBzbWUoZCxnKTt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1oJiZkLmNvbnN0cnVjdG9yJiYoaD1kLmNvbnN0cnVj''@;'; put 'put ''dG9yLm5hbWUpLCJNYXAiPT09aHx8IlNldCI9PT1oKXJldHVybiBBcnJheS5mcm9tKGQpO2lmKCJBcmd1bWVudHMiPT09aHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoaCkpcmV0dXJuIHNtZShkLGcpfX0oZCl8fGZ1bmN0aW9uIGI4dCgpe3Rocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShCZSkpLHRoaXMu''@;'; put 'put ''aXNFbmFibGVkKCkmJl9lLmlzU2VhcmNoUmVzdWx0P05lLmluY2x1ZGVzKHRoaXMuc2VhcmNoUmVzdWx0Q2xhc3MpfHxOZS5wdXNoKCIiLmNvbmNhdCh0aGlzLnNlYXJjaFJlc3VsdENsYXNzKSk6TmUuaW5jbHVkZXModGhpcy5zZWFyY2hSZXN1bHRDbGFzcykmJk5lLnNwbGljZShOZS5pbmRl''@;'; put 'put ''eE9mKHRoaXMuc2VhcmNoUmVzdWx0Q2xhc3MpLDEpLF9lLmNsYXNzTmFtZT1OZS5qb2luKCIgIil9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe0NNKGk5KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIGNtZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDE5MH19XSksaH0oWXMpO2Z1bmN0aW9uIGZtZShkKXtyZXR1cm4oZm1lPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJh''@;'; put 'put ''dG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gdUxlKGQs''@;'; put 'put ''Zyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gZlIo''@;'; put 'put ''KXtyZXR1cm4gZlI9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PVY4dChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/''@;'; put 'put ''Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sZlIuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFY4dChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZudWxsIT09KGQ9WHcoZCkpOyk7cmV0dXJuIGR9''@;'; put 'put ''ZnVuY3Rpb24gaG1lKGQsZyl7cmV0dXJuKGhtZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIHo4dChkLGcpe2lmKGcmJigib2JqZWN0Ij09PWZtZShn''@;'; put 'put ''KXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gRzh0KGQpe2lmKHZvaWQgMD09PWQp''@;'; put 'put ''dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gWHcoZCl7cmV0dXJuKFh3PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBl''@;'; put 'put ''T2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIFE4dD1mdW5jdGlvbihkKXshZnVuY3Rpb24gajh0KGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJmhtZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIFo4dChkKXt2YXIgZz1mdW5jdGlvbiBXOHQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Qu''@;'; put 'put ''c2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0''@;'; put 'put ''dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1YdyhkKTtpZihnKXt2YXIgQz1Ydyh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gejh0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYp''@;'; put 'put ''e3ZhciB5O3JldHVybiBmdW5jdGlvbiBIOHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoeT1nLmNhbGwodGhpcyx2KSkuc2Nyb2xsYmFycz1bXSx5LmNsb25lcz1bXSx5''@;'; put 'put ''LmxvY2tlZENvbGxlY3Rpb249ITEseS5mcmVlemVPdmVybGF5cz0hMSx5fXJldHVybiBmdW5jdGlvbiBOOHQoZCxnLGgpe2cmJnVMZShkLnByb3RvdHlwZSxnKSxoJiZ1TGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToi''@;'; put 'put ''aXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBXaGUoKX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuZW5hYmxlZHx8KHRoaXMuYWRkSG9vaygiYWZ0ZXJWaWV3UmVuZGVyIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQWZ0ZXJW''@;'; put 'put ''aWV3UmVuZGVyKCl9KSx0aGlzLnJlZ2lzdGVyRXZlbnRzKCksZlIoWHcoaC5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubG9ja2VkQ29sbGVjdGlvbj0hMSxmUihYdyhoLnByb3Rv''@;'; put 'put ''dHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7ZlIoWHcoaC5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToicmVnaXN0ZXJFdmVudHMiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIHk9dGhpczt0aGlzLmFkZEhvb2soImJlZm9yZVRvdWNoU2Nyb2xsIixmdW5jdGlvbigpe3JldHVybiB5Lm9uQmVmb3JlVG91Y2hTY3JvbGwoKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJNb21lbnR1bVNjcm9sbCIsZnVuY3Rpb24oKXtyZXR1cm4geS5vbkFmdGVyTW9tZW50dW1T''@;'; put 'put ''Y3JvbGwoKX0pfX0se2tleToib25BZnRlclZpZXdSZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMubG9ja2VkQ29sbGVjdGlvbil7dmFyIHk9dGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cyxDPXkudG9wT3ZlcmxheSxJPXkuYm90dG9tT3ZlcmxheSxaPXkuaW5saW5lU3RhcnRP''@;'; put 'put ''dmVybGF5LHVlPXkudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LF9lPXkuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5O3RoaXMubG9ja2VkQ29sbGVjdGlvbj0hMCx0aGlzLnNjcm9sbGJhcnMubGVuZ3RoPTAsdGhpcy5zY3JvbGxiYXJzLnB1c2goQyksSS5jbG9uZSYmdGhpcy5z''@;'; put 'put ''Y3JvbGxiYXJzLnB1c2goSSksdGhpcy5zY3JvbGxiYXJzLnB1c2goWiksdWUmJnRoaXMuc2Nyb2xsYmFycy5wdXNoKHVlKSxfZSYmX2UuY2xvbmUmJnRoaXMuc2Nyb2xsYmFycy5wdXNoKF9lKSx0aGlzLmNsb25lcz1bXSxDLm5lZWRGdWxsUmVuZGVyJiZ0aGlzLmNsb25lcy5wdXNoKEMuY2xv''@;'; put 'put ''bmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSksSS5uZWVkRnVsbFJlbmRlciYmdGhpcy5jbG9uZXMucHVzaChJLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUpLFoubmVlZEZ1bGxSZW5kZXImJnRoaXMuY2xvbmVzLnB1c2goWi5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnRO''@;'; put 'put ''b2RlKSx1ZSYmdGhpcy5jbG9uZXMucHVzaCh1ZS5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlKSxfZSYmX2UuY2xvbmUmJnRoaXMuY2xvbmVzLnB1c2goX2UuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSl9fX0se2tleToib25CZWZvcmVUb3VjaFNjcm9sbCIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXt0aGlzLmZyZWV6ZU92ZXJsYXlzPSEwLFVyKHRoaXMuY2xvbmVzLGZ1bmN0aW9uKHkpe08wKHksImhpZGUtdHdlZW4iKX0pfX0se2tleToib25BZnRlck1vbWVudHVtU2Nyb2xsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5mcmVlemVPdmVybGF5cz0hMSxV''@;'; put 'put ''cih0aGlzLmNsb25lcyxmdW5jdGlvbihDKXtwbChDLCJoaWRlLXR3ZWVuIiksTzAoQywic2hvdy10d2VlbiIpfSksdGhpcy5ob3QuX3JlZ2lzdGVyVGltZW91dChmdW5jdGlvbigpe1VyKHkuY2xvbmVzLGZ1bmN0aW9uKEMpe3BsKEMsInNob3ctdHdlZW4iKX0pfSw0MDApLFVyKHRoaXMuc2Ny''@;'; put 'put ''b2xsYmFycyxmdW5jdGlvbihDKXtDLnJlZnJlc2goKSxDLnJlc2V0Rml4ZWRQb3NpdGlvbigpfSksdGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy5zeW5jU2Nyb2xsV2l0aE1hc3RlcigpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4idG91Y2hTY3JvbGwi''@;'; put 'put ''fX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMjAwfX0se2tleToiU0VUVElOR19LRVlTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19XSksaH0oWXMpO2Z1bmN0aW9uIGRtZShkKXtyZXR1cm4oZG1lPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJz''@;'; put 'put ''eW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBlb2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5''@;'; put 'put ''cGVvZiBnfSkoZCl9ZnVuY3Rpb24gY0xlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoZCx2LmtleSx2KX19ZnVuY3Rpb24ga00oKXtyZXR1cm4ga009InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oZyxoLHYpe3ZhciB5PUs4dChnLGgpO2lmKHkpe3ZhciBDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURl''@;'; put 'put ''c2NyaXB0b3IoeSxoKTtyZXR1cm4gQy5nZXQ/Qy5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/Zzp2KTpDLnZhbHVlfX0sa00uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIEs4dChkLGcpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGcpJiZu''@;'; put 'put ''dWxsIT09KGQ9bzkoZCkpOyk7cmV0dXJuIGR9ZnVuY3Rpb24gcG1lKGQsZyl7cmV0dXJuKHBtZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih2LHkpe3JldHVybiB2Ll9fcHJvdG9fXz15LHZ9KShkLGcpfWZ1bmN0aW9uIGU1dChk''@;'; put 'put ''LGcpe2lmKGcmJigib2JqZWN0Ij09PWRtZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24gdDV0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gbzkoZCl7cmV0dXJuKG85PU9iamVjdC5zZXRQcm90''@;'; put 'put ''b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGgpe3JldHVybiBoLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpfSkoZCl9dmFyIFBuZT0idHJpbVJvd3MiLGk1dD1mdW5jdGlvbihkKXshZnVuY3Rpb24gJDh0KGQsZyl7aWYoImZ1bmN0aW9u''@;'; put 'put ''IiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFi''@;'; put 'put ''bGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJnBtZShkLGcpfShoLGQpO3ZhciBnPWZ1bmN0aW9uIHE4dChkKXt2YXIgZz1mdW5jdGlvbiBuNXQoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxl''@;'; put 'put ''Y3R8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxm''@;'; put 'put ''dW5jdGlvbigpe30pKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHksdj1vOShkKTtpZihnKXt2YXIgQz1vOSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1l''@;'; put 'put ''bnRzKTtyZXR1cm4gZTV0KHRoaXMseSl9fShoKTtmdW5jdGlvbiBoKHYpe3ZhciB5O3JldHVybiBmdW5jdGlvbiBKOHQoZCxnKXtpZighKGQgaW5zdGFuY2VvZiBnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxoKSwoeT1n''@;'; put 'put ''LmNhbGwodGhpcyx2KSkudHJpbW1lZFJvd3NNYXA9bnVsbCx5fXJldHVybiBmdW5jdGlvbiBYOHQoZCxnLGgpe2cmJmNMZShkLnByb3RvdHlwZSxnKSxoJiZjTGUoZCxoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oaCxbe2tleToiaXNFbmFi''@;'; put 'put ''bGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtQbmVdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB5PXRoaXM7dGhpcy5lbmFibGVkfHwodGhpcy50cmltbWVkUm93c01hcD10aGlzLmhvdC5yb3dJbmRleE1hcHBl''@;'; put 'put ''ci5yZWdpc3Rlck1hcCgidHJpbVJvd3MiLG5ldyBueiksdGhpcy50cmltbWVkUm93c01hcC5hZGRMb2NhbEhvb2soImluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHkub25NYXBJbml0KCl9KSxrTShvOShoLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5''@;'; put 'put ''OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyxDPXRoaXMuaG90LmdldFNldHRpbmdzKClbUG5lXTtBcnJheS5pc0FycmF5KEMpJiZ0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe3kudHJpbW1lZFJvd3NNYXAuY2xlYXIoKSxVcihDLGZ1bmN0aW9u''@;'; put 'put ''KEkpe3kudHJpbW1lZFJvd3NNYXAuc2V0VmFsdWVBdEluZGV4KEksITApfSl9LCEwKSxrTShvOShoLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIu''@;'; put 'put ''dW5yZWdpc3Rlck1hcCgidHJpbVJvd3MiKSxrTShvOShoLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJnZXRUcmltbWVkUm93cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmltbWVkUm93c01hcC5nZXRUcmltbWVkSW5kZXhlcygp''@;'; put 'put ''fX0se2tleToidHJpbVJvd3MiLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMsST10aGlzLmdldFRyaW1tZWRSb3dzKCksWj10aGlzLmlzVmFsaWRDb25maWcoeSksdWU9STtaJiYodWU9QXJyYXkuZnJvbShuZXcgU2V0KEkuY29uY2F0KHkpKSkpLCExIT09dGhpcy5ob3QucnVuSG9va3Mo''@;'; put 'put ''ImJlZm9yZVRyaW1Sb3ciLEksdWUsWikmJihaJiZ0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe1VyKHksZnVuY3Rpb24oQmUpe0MudHJpbW1lZFJvd3NNYXAuc2V0VmFsdWVBdEluZGV4KEJlLCEwKX0pfSwhMCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyVHJpbVJvdyIsSSx1''@;'; put 'put ''ZSxaLFomJnVlLmxlbmd0aD5JLmxlbmd0aCkpfX0se2tleToidHJpbVJvdyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHk9YXJndW1lbnRzLmxlbmd0aCxDPW5ldyBBcnJheSh5KSxJPTA7STx5O0krKylDW0ldPWFyZ3VtZW50c1tJXTt0aGlzLnRyaW1Sb3dzKEMpfX0se2tleToidW50cmlt''@;'; put 'put ''Um93cyIsdmFsdWU6ZnVuY3Rpb24oeSl7dmFyIEM9dGhpcy5nZXRUcmltbWVkUm93cygpLEk9dGhpcy5pc1ZhbGlkQ29uZmlnKHkpLFo9Qyx1ZT10aGlzLnRyaW1tZWRSb3dzTWFwLmdldFZhbHVlcygpLnNsaWNlKCksX2U9eS5sZW5ndGg+MDtJJiZfZSYmKFVyKHksZnVuY3Rpb24oTmUpe3Vl''@;'; put 'put ''W05lXT0hMX0pLFo9U3UodWUsZnVuY3Rpb24oTmUsS2UscHQpe3JldHVybiBLZSYmTmUucHVzaChwdCksTmV9LFtdKSksITEhPT10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlVW50cmltUm93IixDLFosSSYmX2UpJiYoSSYmX2UmJnRoaXMudHJpbW1lZFJvd3NNYXAuc2V0VmFsdWVzKHVlKSx0''@;'; put 'put ''aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJVbnRyaW1Sb3ciLEMsWixJJiZfZSxJJiZaLmxlbmd0aDxDLmxlbmd0aCkpfX0se2tleToidW50cmltUm93Iix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgeT1hcmd1bWVudHMubGVuZ3RoLEM9bmV3IEFycmF5KHkpLEk9MDtJPHk7SSsrKUNbSV09YXJn''@;'; put 'put ''dW1lbnRzW0ldO3RoaXMudW50cmltUm93cyhDKX19LHtrZXk6ImlzVHJpbW1lZCIsdmFsdWU6ZnVuY3Rpb24oeSl7cmV0dXJuIHRoaXMudHJpbW1lZFJvd3NNYXAuZ2V0VmFsdWVBdEluZGV4KHkpfHwhMX19LHtrZXk6InVudHJpbUFsbCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnVudHJpbVJv''@;'; put 'put ''d3ModGhpcy5nZXRUcmltbWVkUm93cygpKX19LHtrZXk6ImlzVmFsaWRDb25maWciLHZhbHVlOmZ1bmN0aW9uKHkpe3ZhciBDPXRoaXMuaG90LmNvdW50U291cmNlUm93cygpO3JldHVybiB5LmV2ZXJ5KGZ1bmN0aW9uKEkpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKEkpJiZJPj0wJiZJPEN9''@;'; put 'put ''KX19LHtrZXk6Im9uTWFwSW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLEM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtQbmVdO0FycmF5LmlzQXJyYXkoQykmJnRoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7VXIoQyxmdW5jdGlvbihJKXt5LnRyaW1tZWRSb3dzTWFw''@;'; put 'put ''LnNldFZhbHVlQXRJbmRleChJLCEwKX0pfSwhMCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe2tNKG85KGgucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFBuZX19LHtrZXk6''@;'; put 'put ''IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDMzMH19XSksaH0oWXMpO2Z1bmN0aW9uIGdtZShkKXtyZXR1cm4oZ21lPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBl''@;'; put 'put ''b2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoZCl9ZnVuY3Rpb24gZkxlKGQsZyl7aWYoIShkIGluc3RhbmNlb2YgZykpdGhy''@;'; put 'put ''b3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaExlKGQsZyl7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciB2PWdbaF07di5lbnVtZXJhYmxlPXYuZW51bWVyYWJsZXx8ITEsdi5jb25maWd1cmFibGU9ITAsInZhbHVl''@;'; put 'put ''ImluIHYmJih2LndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCx2LmtleSx2KX19ZnVuY3Rpb24gZExlKGQsZyxoKXtyZXR1cm4gZyYmaExlKGQucHJvdG90eXBlLGcpLGgmJmhMZShkLGgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZToh''@;'; put 'put ''MX0pLGR9ZnVuY3Rpb24gcExlKGQsZyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcmJm51bGwhPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShnJiZnLnBy''@;'; put 'put ''b3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGcmJm1tZShkLGcpfWZ1bmN0aW9uIG1tZShkLGcpe3JldHVybihtbWU9T2JqZWN0LnNldFBy''@;'; put 'put ''b3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24odix5KXtyZXR1cm4gdi5fX3Byb3RvX189eSx2fSkoZCxnKX1mdW5jdGlvbiBnTGUoZCl7dmFyIGc9ZnVuY3Rpb24gbDV0KCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25z''@;'; put 'put ''dHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9''@;'; put 'put ''Y2F0Y2goZCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB5LHY9Rm5lKGQpO2lmKGcpe3ZhciBDPUZuZSh0aGlzKS5jb25zdHJ1Y3Rvcjt5PVJlZmxlY3QuY29uc3RydWN0KHYsYXJndW1lbnRzLEMpfWVsc2UgeT12LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbzV0''@;'; put 'put ''KHRoaXMseSl9fWZ1bmN0aW9uIG81dChkLGcpe2lmKGcmJigib2JqZWN0Ij09PWdtZShnKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBv''@;'; put 'put ''ciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gYTV0KGQpe2lmKHZvaWQgMD09PWQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZH0oZCl9ZnVuY3Rpb24gRm5lKGQp''@;'; put 'put ''e3JldHVybihGbmU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oaCl7cmV0dXJuIGguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9KShkKX1mdW5jdGlvbiBtTGUoZCxnKXtyZXR1cm4gZnVuY3Rpb24gcDV0KGQp''@;'; put 'put ''e2lmKEFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIGR9KGQpfHxmdW5jdGlvbiBkNXQoZCxnKXt2YXIgaD1udWxsPT1kP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmRbU3ltYm9sLml0ZXJhdG9yXXx8ZFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWgpe3ZhciBJLFosdj1bXSx5PSEw''@;'; put 'put ''LEM9ITE7dHJ5e2ZvcihoPWguY2FsbChkKTshKHk9KEk9aC5uZXh0KCkpLmRvbmUpJiYodi5wdXNoKEkudmFsdWUpLCFnfHx2Lmxlbmd0aCE9PWcpO3k9ITApO31jYXRjaCh1ZSl7Qz0hMCxaPXVlfWZpbmFsbHl7dHJ5eyF5JiZudWxsIT1oLnJldHVybiYmaC5yZXR1cm4oKX1maW5hbGx5e2lm''@;'; put 'put ''KEMpdGhyb3cgWn19cmV0dXJuIHZ9fShkLGcpfHx2TGUoZCxnKXx8ZnVuY3Rpb24gaDV0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkg''@;'; put 'put ''b2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiB2TGUoZCxnKXtpZihkKXtpZigic3RyaW5nIj09dHlwZW9mIGQpcmV0dXJuIHZtZShkLGcpO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkKS5zbGljZSg4LC0x''@;'; put 'put ''KTtpZigiT2JqZWN0Ij09PWgmJmQuY29uc3RydWN0b3ImJihoPWQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ofHwiU2V0Ij09PWgpcmV0dXJuIEFycmF5LmZyb20oZCk7aWYoIkFyZ3VtZW50cyI9PT1ofHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVz''@;'; put 'put ''dChoKSlyZXR1cm4gdm1lKGQsZyl9fWZ1bmN0aW9uIHZtZShkLGcpeyhudWxsPT1nfHxnPmQubGVuZ3RoKSYmKGc9ZC5sZW5ndGgpO2Zvcih2YXIgaD0wLHY9bmV3IEFycmF5KGcpO2g8ZztoKyspdltoXT1kW2hdO3JldHVybiB2fWZ1bmN0aW9uIFZvKGQpe3ZhciBnPXRoaXM7dGhpcy5pbnN0''@;'; put 'put ''YW5jZT1kLHRoaXMuZG9uZUFjdGlvbnM9W10sdGhpcy51bmRvbmVBY3Rpb25zPVtdLHRoaXMuaWdub3JlTmV3QWN0aW9ucz0hMSx0aGlzLmVuYWJsZWQ9ITEsZC5hZGRIb29rKCJhZnRlckNoYW5nZSIsZnVuY3Rpb24oaCx2KXt2YXIgeT10aGlzLEM9aCYmaC5sZW5ndGg7QyYmaC5maW5kKGZ1''@;'; put 'put ''bmN0aW9uKHVlKXt2YXIgX2U9bUxlKHVlLDQpO3JldHVybiBfZVsyXSE9PV9lWzNdfSkmJmcuZG9uZShmdW5jdGlvbigpe3ZhciBfZT1oLnJlZHVjZShmdW5jdGlvbihOZSxLZSl7cmV0dXJuIE5lLnB1c2goZnVuY3Rpb24gczV0KGQpe3JldHVybiBmdW5jdGlvbiBmNXQoZCl7aWYoQXJyYXku''@;'; put 'put ''aXNBcnJheShkKSlyZXR1cm4gdm1lKGQpfShkKXx8ZnVuY3Rpb24gYzV0KGQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1kW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShkKX0oZCl8fHZMZShkKXx8ZnVuY3Rp''@;'; put 'put ''b24gdTV0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9''@;'; put 'put ''KCl9KEtlKSksTmV9LFtdKTtVcihfZSxmdW5jdGlvbihOZSl7TmVbMV09ZC5wcm9wVG9Db2woTmVbMV0pfSk7dmFyIEJlPUM+MT95LmdldFNlbGVjdGVkKCk6W1tfZVswXVswXSxfZVswXVsxXV1dO3JldHVybiBuZXcgVm8uQ2hhbmdlQWN0aW9uKF9lLEJlKX0sdil9KSxkLmFkZEhvb2soImFm''@;'; put 'put ''dGVyQ3JlYXRlUm93IixmdW5jdGlvbihoLHYseSl7Zy5kb25lKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBWby5DcmVhdGVSb3dBY3Rpb24oaCx2KX0seSl9KSxkLmFkZEhvb2soImJlZm9yZVJlbW92ZVJvdyIsZnVuY3Rpb24oaCx2LHksQyl7Zy5kb25lKGZ1bmN0aW9uKCl7dmFyIHVlPWcuaW5z''@;'; put 'put ''dGFuY2UuZ2V0U291cmNlRGF0YUFycmF5KCksX2U9KHVlLmxlbmd0aCtoKSV1ZS5sZW5ndGgsQmU9ZC50b1BoeXNpY2FsUm93KF9lKSxOZT1naCh1ZS5zbGljZShCZSxCZSt2KSk7cmV0dXJuIG5ldyBWby5SZW1vdmVSb3dBY3Rpb24oX2UsTmUsZC5nZXRTZXR0aW5ncygpLmZpeGVkUm93c0Jv''@;'; put 'put ''dHRvbSxkLmdldFNldHRpbmdzKCkuZml4ZWRSb3dzVG9wKX0sQyl9KSxkLmFkZEhvb2soImFmdGVyQ3JlYXRlQ29sIixmdW5jdGlvbihoLHYseSl7Zy5kb25lKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBWby5DcmVhdGVDb2x1bW5BY3Rpb24oaCx2KX0seSl9KSxkLmFkZEhvb2soImJlZm9yZVJl''@;'; put 'put ''bW92ZUNvbCIsZnVuY3Rpb24oaCx2LHksQyl7Zy5kb25lKGZ1bmN0aW9uKCl7dmFyIHVlPWcuaW5zdGFuY2UuZ2V0U291cmNlRGF0YUFycmF5KCksX2U9KGcuaW5zdGFuY2UuY291bnRDb2xzKCkraCklZy5pbnN0YW5jZS5jb3VudENvbHMoKSxCZT1bXSxOZT1bXSxLZT1bXTtpYSh1ZS5sZW5n''@;'; put 'put ''dGgtMSxmdW5jdGlvbigkdCl7dmFyIGZuPVtdLExuPXVlWyR0XTtpYShfZSxfZSsodi0xKSxmdW5jdGlvbihpcil7Zm4ucHVzaChMbltkLnRvUGh5c2ljYWxDb2x1bW4oaXIpXSl9KSxCZS5wdXNoKGZuKX0pLGlhKHYtMSxmdW5jdGlvbigkdCl7S2UucHVzaChkLnRvUGh5c2ljYWxDb2x1bW4o''@;'; put 'put ''X2UrJHQpKX0pLEFycmF5LmlzQXJyYXkoZC5nZXRTZXR0aW5ncygpLmNvbEhlYWRlcnMpJiZpYSh2LTEsZnVuY3Rpb24oJHQpe05lLnB1c2goZC5nZXRTZXR0aW5ncygpLmNvbEhlYWRlcnNbZC50b1BoeXNpY2FsQ29sdW1uKF9lKyR0KV18fG51bGwpfSk7dmFyIHB0PWQuY29sdW1uSW5kZXhN''@;'; put 'put ''YXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNlKCksT3Q9ZC5yb3dJbmRleE1hcHBlci5nZXRJbmRleGVzU2VxdWVuY2UoKTtyZXR1cm4gbmV3IFZvLlJlbW92ZUNvbHVtbkFjdGlvbihfZSxLZSxCZSxOZSxwdCxPdCxkLmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnQpfSxDKX0pLGQuYWRk''@;'; put 'put ''SG9vaygiYmVmb3JlQ2VsbEFsaWdubWVudCIsZnVuY3Rpb24oaCx2LHksQyl7Zy5kb25lKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBWby5DZWxsQWxpZ25tZW50QWN0aW9uKGgsdix5LEMpfSl9KSxkLmFkZEhvb2soImJlZm9yZUZpbHRlciIsZnVuY3Rpb24oaCl7Zy5kb25lKGZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIG5ldyBWby5GaWx0ZXJzQWN0aW9uKGgpfSl9KSxkLmFkZEhvb2soImJlZm9yZVJvd01vdmUiLGZ1bmN0aW9uKGgsdil7ITEhPT1oJiZnLmRvbmUoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFZvLlJvd01vdmVBY3Rpb24oaCx2KX0pfSksZC5hZGRIb29rKCJiZWZvcmVNZXJnZUNlbGxz''@;'; put 'put ''IixmdW5jdGlvbihoLHYpe3Z8fGcuZG9uZShmdW5jdGlvbigpe3JldHVybiBuZXcgVm8uTWVyZ2VDZWxsc0FjdGlvbihkLGgpfSl9KSxkLmFkZEhvb2soImFmdGVyVW5tZXJnZUNlbGxzIixmdW5jdGlvbihoLHYpe3Z8fGcuZG9uZShmdW5jdGlvbigpe3JldHVybiBuZXcgVm8uVW5tZXJnZUNl''@;'; put 'put ''bGxzQWN0aW9uKGQsaCl9KX0pLGQuYWRkSG9vaygiYWZ0ZXJJbml0IixmdW5jdGlvbigpe2cuaW5pdCgpfSl9Vm8ucHJvdG90eXBlLmRvbmU9ZnVuY3Rpb24oZCxnKXtpZighdGhpcy5pZ25vcmVOZXdBY3Rpb25zJiYiVW5kb1JlZG8udW5kbyIhPT1nJiYiVW5kb1JlZG8ucmVkbyIhPT1nJiYi''@;'; put 'put ''YXV0byIhPT1nKXt2YXIgdj10aGlzLmRvbmVBY3Rpb25zLnNsaWNlKCk7aWYoITEhPT10aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVVbmRvU3RhY2tDaGFuZ2UiLHYsZykpe3ZhciBDPWQoKSxJPXRoaXMudW5kb25lQWN0aW9ucy5zbGljZSgpO3RoaXMuZG9uZUFjdGlvbnMucHVzaChD''@;'; put 'put ''KSx0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclVuZG9TdGFja0NoYW5nZSIsdix0aGlzLmRvbmVBY3Rpb25zLnNsaWNlKCkpLHRoaXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVJlZG9TdGFja0NoYW5nZSIsSSksdGhpcy51bmRvbmVBY3Rpb25zLmxlbmd0aD0wLHRoaXMuaW5zdGFu''@;'; put 'put ''Y2UucnVuSG9va3MoImFmdGVyUmVkb1N0YWNrQ2hhbmdlIixJLHRoaXMudW5kb25lQWN0aW9ucy5zbGljZSgpKX19fSxWby5wcm90b3R5cGUudW5kbz1mdW5jdGlvbigpe2lmKHRoaXMuaXNVbmRvQXZhaWxhYmxlKCkpe3ZhciBkPXRoaXMuZG9uZUFjdGlvbnMuc2xpY2UoKTt0aGlzLmluc3Rh''@;'; put 'put ''bmNlLnJ1bkhvb2tzKCJiZWZvcmVVbmRvU3RhY2tDaGFuZ2UiLGQpO3ZhciBnPXRoaXMuZG9uZUFjdGlvbnMucG9wKCk7dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJVbmRvU3RhY2tDaGFuZ2UiLGQsdGhpcy5kb25lQWN0aW9ucy5zbGljZSgpKTt2YXIgaD1naChnKTtpZighMT09PXRo''@;'; put 'put ''aXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVVuZG8iLGgpKXJldHVybjt0aGlzLmlnbm9yZU5ld0FjdGlvbnM9ITA7dmFyIHk9dGhpcyxDPXRoaXMudW5kb25lQWN0aW9ucy5zbGljZSgpO3RoaXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVJlZG9TdGFja0NoYW5nZSIsQyksZy51bmRv''@;'; put 'put ''KHRoaXMuaW5zdGFuY2UsZnVuY3Rpb24oKXt5Lmlnbm9yZU5ld0FjdGlvbnM9ITEseS51bmRvbmVBY3Rpb25zLnB1c2goZyl9KSx0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclJlZG9TdGFja0NoYW5nZSIsQyx0aGlzLnVuZG9uZUFjdGlvbnMuc2xpY2UoKSksdGhpcy5pbnN0YW5jZS5y''@;'; put 'put ''dW5Ib29rcygiYWZ0ZXJVbmRvIixoKX19LFZvLnByb3RvdHlwZS5yZWRvPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1JlZG9BdmFpbGFibGUoKSl7dmFyIGQ9dGhpcy51bmRvbmVBY3Rpb25zLnNsaWNlKCk7dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlUmVkb1N0YWNrQ2hhbmdlIixkKTt2''@;'; put 'put ''YXIgZz10aGlzLnVuZG9uZUFjdGlvbnMucG9wKCk7dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJSZWRvU3RhY2tDaGFuZ2UiLGQsdGhpcy51bmRvbmVBY3Rpb25zLnNsaWNlKCkpO3ZhciBoPWdoKGcpO2lmKCExPT09dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlUmVkbyIsaCkp''@;'; put 'put ''cmV0dXJuO3RoaXMuaWdub3JlTmV3QWN0aW9ucz0hMDt2YXIgeT10aGlzLEM9dGhpcy5kb25lQWN0aW9ucy5zbGljZSgpO3RoaXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVVuZG9TdGFja0NoYW5nZSIsQyksZy5yZWRvKHRoaXMuaW5zdGFuY2UsZnVuY3Rpb24oKXt5Lmlnbm9yZU5ld0Fj''@;'; put 'put ''dGlvbnM9ITEseS5kb25lQWN0aW9ucy5wdXNoKGcpfSksdGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJVbmRvU3RhY2tDaGFuZ2UiLEMsdGhpcy5kb25lQWN0aW9ucy5zbGljZSgpKSx0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclJlZG8iLGgpfX0sVm8ucHJvdG90eXBlLmlzVW5k''@;'; put 'put ''b0F2YWlsYWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbmVBY3Rpb25zLmxlbmd0aD4wfSxWby5wcm90b3R5cGUuaXNSZWRvQXZhaWxhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5kb25lQWN0aW9ucy5sZW5ndGg+MH0sVm8ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhp''@;'; put 'put ''cy5kb25lQWN0aW9ucy5sZW5ndGg9MCx0aGlzLnVuZG9uZUFjdGlvbnMubGVuZ3RoPTB9LFZvLnByb3RvdHlwZS5pc0VuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmFibGVkfSxWby5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKCl7aWYoIXRoaXMuaXNFbmFibGVkKCkpe3ZhciBk''@;'; put 'put ''PXRoaXMuaW5zdGFuY2U7dGhpcy5lbmFibGVkPSEwLGZ1bmN0aW9uIEE1dChkKXtkLnVuZG89ZnVuY3Rpb24oKXtyZXR1cm4gZC51bmRvUmVkby51bmRvKCl9LGQucmVkbz1mdW5jdGlvbigpe3JldHVybiBkLnVuZG9SZWRvLnJlZG8oKX0sZC5pc1VuZG9BdmFpbGFibGU9ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gZC51bmRvUmVkby5pc1VuZG9BdmFpbGFibGUoKX0sZC5pc1JlZG9BdmFpbGFibGU9ZnVuY3Rpb24oKXtyZXR1cm4gZC51bmRvUmVkby5pc1JlZG9BdmFpbGFibGUoKX0sZC5jbGVhclVuZG89ZnVuY3Rpb24oKXtyZXR1cm4gZC51bmRvUmVkby5jbGVhcigpfX0oZCksdGhpcy5yZWdp''@;'; put 'put ''c3RlclNob3J0Y3V0cygpLGQuYWRkSG9vaygiYWZ0ZXJDaGFuZ2UiLHlMZSl9fSxWby5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe2lmKHRoaXMuaXNFbmFibGVkKCkpe3ZhciBkPXRoaXMuaW5zdGFuY2U7dGhpcy5lbmFibGVkPSExLGZ1bmN0aW9uIHk1dChkKXtkZWxldGUgZC51bmRv''@;'; put 'put ''LGRlbGV0ZSBkLnJlZG8sZGVsZXRlIGQuaXNVbmRvQXZhaWxhYmxlLGRlbGV0ZSBkLmlzUmVkb0F2YWlsYWJsZSxkZWxldGUgZC5jbGVhclVuZG99KGQpLHRoaXMudW5yZWdpc3RlclNob3J0Y3V0cygpLGQucmVtb3ZlSG9vaygiYWZ0ZXJDaGFuZ2UiLHlMZSl9fSxWby5wcm90b3R5cGUuZGVz''@;'; put 'put ''dHJveT1mdW5jdGlvbigpe3RoaXMuY2xlYXIoKSx0aGlzLmluc3RhbmNlPW51bGwsdGhpcy5kb25lQWN0aW9ucz1udWxsLHRoaXMudW5kb25lQWN0aW9ucz1udWxsfSwoVm8uQWN0aW9uPWZ1bmN0aW9uKCl7fSkucHJvdG90eXBlLnVuZG89ZnVuY3Rpb24oKXt9LFZvLkFjdGlvbi5wcm90b3R5''@;'; put 'put ''cGUucmVkbz1mdW5jdGlvbigpe30sU3YoVm8uQ2hhbmdlQWN0aW9uPWZ1bmN0aW9uKGQsZyl7dGhpcy5jaGFuZ2VzPWQsdGhpcy5zZWxlY3RlZD1nLHRoaXMuYWN0aW9uVHlwZT0iY2hhbmdlIn0sVm8uQWN0aW9uKSxWby5DaGFuZ2VBY3Rpb24ucHJvdG90eXBlLnVuZG89ZnVuY3Rpb24oZCxn''@;'; put 'put ''KXtmb3IodmFyIGg9Z2godGhpcy5jaGFuZ2VzKSx2PWQuY291bnRFbXB0eVJvd3MoITApLHk9ZC5jb3VudEVtcHR5Q29scyghMCksQz0wLEk9aC5sZW5ndGg7QzxJO0MrKyloW0NdLnNwbGljZSgzLDEpO2QuYWRkSG9va09uY2UoImFmdGVyQ2hhbmdlIixnKSxkLnNldERhdGFBdENlbGwoaCxu''@;'; put 'put ''dWxsLG51bGwsIlVuZG9SZWRvLnVuZG8iKTtmb3IodmFyIFo9MCx1ZT1oLmxlbmd0aDtaPHVlO1orKyl7dmFyIF9lPW1MZShoW1pdLDIpLEJlPV9lWzBdLE5lPV9lWzFdO2QuZ2V0U2V0dGluZ3MoKS5taW5TcGFyZVJvd3MmJkJlKzErZC5nZXRTZXR0aW5ncygpLm1pblNwYXJlUm93cz09PWQu''@;'; put 'put ''Y291bnRSb3dzKCkmJnY9PT1kLmdldFNldHRpbmdzKCkubWluU3BhcmVSb3dzJiYoZC5hbHRlcigicmVtb3ZlX3JvdyIscGFyc2VJbnQoQmUrMSwxMCksZC5nZXRTZXR0aW5ncygpLm1pblNwYXJlUm93cyksZC51bmRvUmVkby5kb25lQWN0aW9ucy5wb3AoKSksZC5nZXRTZXR0aW5ncygpLm1p''@;'; put 'put ''blNwYXJlQ29scyYmTmUrMStkLmdldFNldHRpbmdzKCkubWluU3BhcmVDb2xzPT09ZC5jb3VudENvbHMoKSYmeT09PWQuZ2V0U2V0dGluZ3MoKS5taW5TcGFyZUNvbHMmJihkLmFsdGVyKCJyZW1vdmVfY29sIixwYXJzZUludChOZSsxLDEwKSxkLmdldFNldHRpbmdzKCkubWluU3BhcmVDb2xz''@;'; put 'put ''KSxkLnVuZG9SZWRvLmRvbmVBY3Rpb25zLnBvcCgpKX1kLnNlbGVjdENlbGxzKHRoaXMuc2VsZWN0ZWQsITEsITEpfSxWby5DaGFuZ2VBY3Rpb24ucHJvdG90eXBlLnJlZG89ZnVuY3Rpb24oZCxnKXtmb3IodmFyIGg9Z2godGhpcy5jaGFuZ2VzKSx2PTAseT1oLmxlbmd0aDt2PHk7disrKWhb''@;'; put 'put ''dl0uc3BsaWNlKDIsMSk7ZC5hZGRIb29rT25jZSgiYWZ0ZXJDaGFuZ2UiLGcpLGQuc2V0RGF0YUF0Q2VsbChoLG51bGwsbnVsbCwiVW5kb1JlZG8ucmVkbyIpLHRoaXMuc2VsZWN0ZWQmJmQuc2VsZWN0Q2VsbHModGhpcy5zZWxlY3RlZCwhMSwhMSl9LFN2KFZvLkNyZWF0ZVJvd0FjdGlvbj1m''@;'; put 'put ''dW5jdGlvbihkLGcpe3RoaXMuaW5kZXg9ZCx0aGlzLmFtb3VudD1nLHRoaXMuYWN0aW9uVHlwZT0iaW5zZXJ0X3JvdyJ9LFZvLkFjdGlvbiksVm8uQ3JlYXRlUm93QWN0aW9uLnByb3RvdHlwZS51bmRvPWZ1bmN0aW9uKGQsZyl7dmFyIGg9ZC5jb3VudFJvd3MoKSx2PWQuZ2V0U2V0dGluZ3Mo''@;'; put 'put ''KS5taW5TcGFyZVJvd3M7dGhpcy5pbmRleD49aCYmdGhpcy5pbmRleC12PGgmJih0aGlzLmluZGV4LT12KSxkLmFkZEhvb2tPbmNlKCJhZnRlclJlbW92ZVJvdyIsZyksZC5hbHRlcigicmVtb3ZlX3JvdyIsdGhpcy5pbmRleCx0aGlzLmFtb3VudCwiVW5kb1JlZG8udW5kbyIpfSxWby5DcmVh''@;'; put 'put ''dGVSb3dBY3Rpb24ucHJvdG90eXBlLnJlZG89ZnVuY3Rpb24oZCxnKXtkLmFkZEhvb2tPbmNlKCJhZnRlckNyZWF0ZVJvdyIsZyksZC5hbHRlcigiaW5zZXJ0X3JvdyIsdGhpcy5pbmRleCx0aGlzLmFtb3VudCwiVW5kb1JlZG8ucmVkbyIpfSxTdihWby5SZW1vdmVSb3dBY3Rpb249ZnVuY3Rp''@;'; put 'put ''b24oZCxnLGgsdil7dGhpcy5pbmRleD1kLHRoaXMuZGF0YT1nLHRoaXMuYWN0aW9uVHlwZT0icmVtb3ZlX3JvdyIsdGhpcy5maXhlZFJvd3NCb3R0b209aCx0aGlzLmZpeGVkUm93c1RvcD12fSxWby5BY3Rpb24pLFZvLlJlbW92ZVJvd0FjdGlvbi5wcm90b3R5cGUudW5kbz1mdW5jdGlvbihk''@;'; put 'put ''LGcpe3ZhciBoPWQuZ2V0U2V0dGluZ3MoKTtoLmZpeGVkUm93c0JvdHRvbT10aGlzLmZpeGVkUm93c0JvdHRvbSxoLmZpeGVkUm93c1RvcD10aGlzLmZpeGVkUm93c1RvcCxkLmFsdGVyKCJpbnNlcnRfcm93Iix0aGlzLmluZGV4LHRoaXMuZGF0YS5sZW5ndGgsIlVuZG9SZWRvLnVuZG8iKSxk''@;'; put 'put ''LmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGcpLGQucG9wdWxhdGVGcm9tQXJyYXkodGhpcy5pbmRleCwwLHRoaXMuZGF0YSx2b2lkIDAsdm9pZCAwLCJVbmRvUmVkby51bmRvIil9LFZvLlJlbW92ZVJvd0FjdGlvbi5wcm90b3R5cGUucmVkbz1mdW5jdGlvbihkLGcpe2QuYWRkSG9v''@;'; put 'put ''a09uY2UoImFmdGVyUmVtb3ZlUm93IixnKSxkLmFsdGVyKCJyZW1vdmVfcm93Iix0aGlzLmluZGV4LHRoaXMuZGF0YS5sZW5ndGgsIlVuZG9SZWRvLnJlZG8iKX0sU3YoVm8uQ3JlYXRlQ29sdW1uQWN0aW9uPWZ1bmN0aW9uKGQsZyl7dGhpcy5pbmRleD1kLHRoaXMuYW1vdW50PWcsdGhpcy5h''@;'; put 'put ''Y3Rpb25UeXBlPSJpbnNlcnRfY29sIn0sVm8uQWN0aW9uKSxWby5DcmVhdGVDb2x1bW5BY3Rpb24ucHJvdG90eXBlLnVuZG89ZnVuY3Rpb24oZCxnKXtkLmFkZEhvb2tPbmNlKCJhZnRlclJlbW92ZUNvbCIsZyksZC5hbHRlcigicmVtb3ZlX2NvbCIsdGhpcy5pbmRleCx0aGlzLmFtb3VudCwi''@;'; put 'put ''VW5kb1JlZG8udW5kbyIpfSxWby5DcmVhdGVDb2x1bW5BY3Rpb24ucHJvdG90eXBlLnJlZG89ZnVuY3Rpb24oZCxnKXtkLmFkZEhvb2tPbmNlKCJhZnRlckNyZWF0ZUNvbCIsZyksZC5hbHRlcigiaW5zZXJ0X2NvbCIsdGhpcy5pbmRleCx0aGlzLmFtb3VudCwiVW5kb1JlZG8ucmVkbyIpfSxT''@;'; put 'put ''dihWby5SZW1vdmVDb2x1bW5BY3Rpb249ZnVuY3Rpb24oZCxnLGgsdix5LEMsSSl7dGhpcy5pbmRleD1kLHRoaXMuaW5kZXhlcz1nLHRoaXMuZGF0YT1oLHRoaXMuYW1vdW50PXRoaXMuZGF0YVswXS5sZW5ndGgsdGhpcy5oZWFkZXJzPXYsdGhpcy5jb2x1bW5Qb3NpdGlvbnM9eS5zbGljZSgw''@;'; put 'put ''KSx0aGlzLnJvd1Bvc2l0aW9ucz1DLnNsaWNlKDApLHRoaXMuYWN0aW9uVHlwZT0icmVtb3ZlX2NvbCIsdGhpcy5maXhlZENvbHVtbnNTdGFydD1JfSxWby5BY3Rpb24pLFZvLlJlbW92ZUNvbHVtbkFjdGlvbi5wcm90b3R5cGUudW5kbz1mdW5jdGlvbihkLGcpe3ZhciBoPXRoaXM7ZC5nZXRT''@;'; put 'put ''ZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0PXRoaXMuZml4ZWRDb2x1bW5zU3RhcnQ7Zm9yKHZhciB5PXRoaXMuaW5kZXhlcy5zbGljZSgwKS5zb3J0KCksQz1mdW5jdGlvbihLZSxwdCxPdCl7cmV0dXJuIE90W2guaW5kZXhlcy5pbmRleE9mKHlbcHRdKV19LEk9dGhpcy5kYXRhLmxlbmd0''@;'; put 'put ''aCxaPVtdLHVlPTA7dWU8STt1ZSsrKVoucHVzaChPbCh0aGlzLmRhdGFbdWVdLEMpKTt2YXIgX2U9T2wodGhpcy5oZWFkZXJzLEMpLEJlPVtdO2QuYWx0ZXIoImluc2VydF9jb2wiLHRoaXMuaW5kZXhlc1swXSx0aGlzLmluZGV4ZXMubGVuZ3RoLCJVbmRvUmVkby51bmRvIiksVXIoZC5nZXRT''@;'; put 'put ''b3VyY2VEYXRhQXJyYXkoKSxmdW5jdGlvbihOZSxLZSl7VXIoeSxmdW5jdGlvbihwdCxPdCl7TmVbcHRdPVpbS2VdW090XSxCZS5wdXNoKFtLZSxwdCxOZVtwdF1dKX0pfSksZC5zZXRTb3VyY2VEYXRhQXRDZWxsKEJlLHZvaWQgMCx2b2lkIDAsIlVuZG9SZWRvLnVuZG8iKSxkLmNvbHVtbklu''@;'; put 'put ''ZGV4TWFwcGVyLmluc2VydEluZGV4ZXMoeVswXSx5Lmxlbmd0aCksdm9pZCAwIT09dGhpcy5oZWFkZXJzJiZVcihfZSxmdW5jdGlvbihOZSxLZSl7ZC5nZXRTZXR0aW5ncygpLmNvbEhlYWRlcnNbeVtLZV1dPU5lfSksZC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe2Qucm93SW5kZXhNYXBw''@;'; put 'put ''ZXIuc2V0SW5kZXhlc1NlcXVlbmNlKGgucm93UG9zaXRpb25zKSxkLmNvbHVtbkluZGV4TWFwcGVyLnNldEluZGV4ZXNTZXF1ZW5jZShoLmNvbHVtblBvc2l0aW9ucyl9LCEwKSxkLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGcpLGQucmVuZGVyKCl9LFZvLlJlbW92ZUNvbHVtbkFj''@;'; put 'put ''dGlvbi5wcm90b3R5cGUucmVkbz1mdW5jdGlvbihkLGcpe2QuYWRkSG9va09uY2UoImFmdGVyUmVtb3ZlQ29sIixnKSxkLmFsdGVyKCJyZW1vdmVfY29sIix0aGlzLmluZGV4LHRoaXMuYW1vdW50LCJVbmRvUmVkby5yZWRvIil9LChWby5DZWxsQWxpZ25tZW50QWN0aW9uPWZ1bmN0aW9uKGQs''@;'; put 'put ''ZyxoLHYpe3RoaXMuc3RhdGVCZWZvcmU9ZCx0aGlzLnJhbmdlPWcsdGhpcy50eXBlPWgsdGhpcy5hbGlnbm1lbnQ9dn0pLnByb3RvdHlwZS51bmRvPWZ1bmN0aW9uKGQsZyl7dmFyIGg9dGhpcztVcih0aGlzLnJhbmdlLGZ1bmN0aW9uKHYpe3YuZm9yQWxsKGZ1bmN0aW9uKHksQyl7eT49MCYm''@;'; put 'put ''Qz49MCYmZC5zZXRDZWxsTWV0YSh5LEMsImNsYXNzTmFtZSIsaC5zdGF0ZUJlZm9yZVt5XVtDXXx8IiBodExlZnQiKX0pfSksZC5hZGRIb29rT25jZSgiYWZ0ZXJWaWV3UmVuZGVyIixnKSxkLnJlbmRlcigpfSxWby5DZWxsQWxpZ25tZW50QWN0aW9uLnByb3RvdHlwZS5yZWRvPWZ1bmN0aW9u''@;'; put 'put ''KGQsZyl7SHcodGhpcy5yYW5nZSx0aGlzLnR5cGUsdGhpcy5hbGlnbm1lbnQsZnVuY3Rpb24oaCx2KXtyZXR1cm4gZC5nZXRDZWxsTWV0YShoLHYpfSxmdW5jdGlvbihoLHYseSxDKXtyZXR1cm4gZC5zZXRDZWxsTWV0YShoLHYseSxDKX0pLGQuYWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRl''@;'; put 'put ''ciIsZyksZC5yZW5kZXIoKX0sU3YoVm8uRmlsdGVyc0FjdGlvbj1mdW5jdGlvbihkKXt0aGlzLmNvbmRpdGlvbnNTdGFjaz1kLHRoaXMuYWN0aW9uVHlwZT0iZmlsdGVyIn0sVm8uQWN0aW9uKSxWby5GaWx0ZXJzQWN0aW9uLnByb3RvdHlwZS51bmRvPWZ1bmN0aW9uKGQsZyl7dmFyIGg9ZC5n''@;'; put 'put ''ZXRQbHVnaW4oImZpbHRlcnMiKTtkLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGcpLGguY29uZGl0aW9uQ29sbGVjdGlvbi5pbXBvcnRBbGxDb25kaXRpb25zKHRoaXMuY29uZGl0aW9uc1N0YWNrLnNsaWNlKDAsdGhpcy5jb25kaXRpb25zU3RhY2subGVuZ3RoLTEpKSxoLmZpbHRl''@;'; put 'put ''cigpfSxWby5GaWx0ZXJzQWN0aW9uLnByb3RvdHlwZS5yZWRvPWZ1bmN0aW9uKGQsZyl7dmFyIGg9ZC5nZXRQbHVnaW4oImZpbHRlcnMiKTtkLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGcpLGguY29uZGl0aW9uQ29sbGVjdGlvbi5pbXBvcnRBbGxDb25kaXRpb25zKHRoaXMuY29u''@;'; put 'put ''ZGl0aW9uc1N0YWNrKSxoLmZpbHRlcigpfTt2YXIgbTV0PWZ1bmN0aW9uKGQpe3BMZShoLGQpO3ZhciBnPWdMZShoKTtmdW5jdGlvbiBoKHYseSl7dmFyIEM7ZkxlKHRoaXMsaCksKEM9Zy5jYWxsKHRoaXMpKS5jZWxsUmFuZ2U9eTt2YXIgST1DLmNlbGxSYW5nZS5nZXRUb3BTdGFydENvcm5l''@;'; put 'put ''cigpLFo9Qy5jZWxsUmFuZ2UuZ2V0Qm90dG9tRW5kQ29ybmVyKCk7cmV0dXJuIEMucmFuZ2VEYXRhPXYuZ2V0RGF0YShJLnJvdyxJLmNvbCxaLnJvdyxaLmNvbCksQ31yZXR1cm4gZExlKGgsW3trZXk6InVuZG8iLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9eS5nZXRQbHVnaW4oIm1lcmdl''@;'; put 'put ''Q2VsbHMiKTt5LmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLEMpLEkudW5tZXJnZVJhbmdlKHRoaXMuY2VsbFJhbmdlLCEwKTt2YXIgWj10aGlzLmNlbGxSYW5nZS5nZXRUb3BTdGFydENvcm5lcigpO3kucG9wdWxhdGVGcm9tQXJyYXkoWi5yb3csWi5jb2wsdGhpcy5yYW5nZURhdGEs''@;'; put 'put ''dm9pZCAwLHZvaWQgMCwiTWVyZ2VDZWxscyIpfX0se2tleToicmVkbyIsdmFsdWU6ZnVuY3Rpb24oeSxDKXt2YXIgST15LmdldFBsdWdpbigibWVyZ2VDZWxscyIpO3kuYWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRlciIsQyksSS5tZXJnZVJhbmdlKHRoaXMuY2VsbFJhbmdlKX19XSksaH0o''@;'; put 'put ''Vm8uQWN0aW9uKTtWby5NZXJnZUNlbGxzQWN0aW9uPW01dDt2YXIgdjV0PWZ1bmN0aW9uKGQpe3BMZShoLGQpO3ZhciBnPWdMZShoKTtmdW5jdGlvbiBoKHYseSl7dmFyIEM7cmV0dXJuIGZMZSh0aGlzLGgpLChDPWcuY2FsbCh0aGlzKSkuY2VsbFJhbmdlPXksQ31yZXR1cm4gZExlKGgsW3tr''@;'; put 'put ''ZXk6InVuZG8iLHZhbHVlOmZ1bmN0aW9uKHksQyl7dmFyIEk9eS5nZXRQbHVnaW4oIm1lcmdlQ2VsbHMiKTt5LmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLEMpLEkubWVyZ2VSYW5nZSh0aGlzLmNlbGxSYW5nZSwhMCl9fSx7a2V5OiJyZWRvIix2YWx1ZTpmdW5jdGlvbih5LEMpe3Zh''@;'; put 'put ''ciBJPXkuZ2V0UGx1Z2luKCJtZXJnZUNlbGxzIik7eS5hZGRIb29rT25jZSgiYWZ0ZXJWaWV3UmVuZGVyIixDKSxJLnVubWVyZ2VSYW5nZSh0aGlzLmNlbGxSYW5nZSwhMCkseS5yZW5kZXIoKX19XSksaH0oVm8uQWN0aW9uKTtmdW5jdGlvbiB5TGUoZCxnKXtpZigibG9hZERhdGEiPT09Zyly''@;'; put 'put ''ZXR1cm4gdGhpcy51bmRvUmVkby5jbGVhcigpfVZvLlVubWVyZ2VDZWxsc0FjdGlvbj12NXQsU3YoVm8uUm93TW92ZUFjdGlvbj1mdW5jdGlvbihkLGcpe3RoaXMucm93cz1kLnNsaWNlKCksdGhpcy5maW5hbEluZGV4PWcsdGhpcy5hY3Rpb25UeXBlPSJyb3dfbW92ZSJ9LFZvLkFjdGlvbiks''@;'; put 'put ''Vm8uUm93TW92ZUFjdGlvbi5wcm90b3R5cGUudW5kbz1mdW5jdGlvbihkLGcpe3ZhciBoPXRoaXMsdj1kLmdldFBsdWdpbigibWFudWFsUm93TW92ZSIpLHk9W10uY29uY2F0KHRoaXMucm93cyksQz15LmZpbHRlcihmdW5jdGlvbihCZSl7cmV0dXJuIEJlPmguZmluYWxJbmRleH0pLEk9eS5m''@;'; put 'put ''aWx0ZXIoZnVuY3Rpb24oQmUpe3JldHVybiBCZTw9aC5maW5hbEluZGV4fSksWj1DLnNvcnQoZnVuY3Rpb24oQmUsTmUpe3JldHVybiBOZS1CZX0pLmNvbmNhdChJLnNvcnQoZnVuY3Rpb24oQmUsTmUpe3JldHVybiBCZS1OZX0pKTtkLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGcp''@;'; put 'put ''O2Zvcih2YXIgdWU9MDt1ZTxaLmxlbmd0aDt1ZSs9MSl7dmFyIF9lPWQudG9WaXN1YWxSb3coWlt1ZV0pO3YubW92ZVJvdyhfZSxaW3VlXSl9ZC5yZW5kZXIoKSxkLmRlc2VsZWN0Q2VsbCgpLGQuc2VsZWN0Um93cyh0aGlzLnJvd3NbMF0sdGhpcy5yb3dzWzBdK3RoaXMucm93cy5sZW5ndGgt''@;'; put 'put ''MSl9LFZvLlJvd01vdmVBY3Rpb24ucHJvdG90eXBlLnJlZG89ZnVuY3Rpb24oZCxnKXt2YXIgaD1kLmdldFBsdWdpbigibWFudWFsUm93TW92ZSIpO2QuYWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRlciIsZyksaC5tb3ZlUm93cyh0aGlzLnJvd3Muc2xpY2UoKSx0aGlzLmZpbmFsSW5kZXgp''@;'; put 'put ''LGQucmVuZGVyKCksZC5kZXNlbGVjdENlbGwoKSxkLnNlbGVjdFJvd3ModGhpcy5maW5hbEluZGV4LHRoaXMuZmluYWxJbmRleCt0aGlzLnJvd3MubGVuZ3RoLTEpfSxWby5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3ZhciBkPXRoaXMuaW5zdGFuY2UuZ2V0U2V0dGluZ3MoKS51bmRvLGc9''@;'; put 'put ''dm9pZCAwPT09ZHx8ZDt0aGlzLmluc3RhbmNlLnVuZG9SZWRvfHwodGhpcy5pbnN0YW5jZS51bmRvUmVkbz10aGlzKSxnP3RoaXMuaW5zdGFuY2UudW5kb1JlZG8uZW5hYmxlKCk6dGhpcy5pbnN0YW5jZS51bmRvUmVkby5kaXNhYmxlKCl9LFZvLnByb3RvdHlwZS5yZWdpc3RlclNob3J0Y3V0''@;'; put 'put ''cz1mdW5jdGlvbigpe3ZhciBkPXRoaXM7dGhpcy5pbnN0YW5jZS5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIikuYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJDb250cm9sL01ldGEiLCJ6Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7ZC51bmRvKCl9fSx7a2V5czpbWyJDb250''@;'; put 'put ''cm9sL01ldGEiLCJ5Il0sWyJDb250cm9sL01ldGEiLCJTaGlmdCIsInoiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtkLnJlZG8oKX19XSx7cnVuT25seUlmOmZ1bmN0aW9uKEkpe3JldHVybiFJLmFsdEtleX0sZ3JvdXA6InVuZG9SZWRvIn0pfSxWby5wcm90b3R5cGUudW5yZWdpc3RlclNob3J0''@;'; put 'put ''Y3V0cz1mdW5jdGlvbigpe3RoaXMuaW5zdGFuY2UuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoInVuZG9SZWRvIil9O3ZhciBqej16by5nZXRTaW5nbGV0b24oKTtqei5hZGQoImFmdGVyVXBkYXRlU2V0dGluZ3MiLGZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIGQ7bnVsbD09PShkPXRoaXMuZ2V0UGx1Z2luKCJ1bmRvUmVkbyIpKXx8dm9pZCAwPT09ZHx8ZC5pbml0KCl9KSxqei5yZWdpc3RlcigiYmVmb3JlVW5kbyIpLGp6LnJlZ2lzdGVyKCJhZnRlclVuZG8iKSxqei5yZWdpc3RlcigiYmVmb3JlUmVkbyIpLGp6LnJlZ2lzdGVyKCJh''@;'; put 'put ''ZnRlclJlZG8iKSxWby5QTFVHSU5fS0VZPSJ1bmRvUmVkbyIsVm8uU0VUVElOR19LRVlTPSEwO2NvbnN0IHc1dD1WbztmdW5jdGlvbiB3TGUoKXsoZnVuY3Rpb24gV3R0KCl7c2Qoa08pLHNkKGI2ZSksc2QocVNlKSxzZChyTWUpLHNkKHg2ZSksc2QobTZlKSxzZChhTWUpLHNkKHNNZSksc2Qo''@;'; put 'put ''QnR0KSxzZChWUyksc2QoaE1lKX0pKCksZnVuY3Rpb24gb250KCl7TWcoSU8pLE1nKGh6KSxNZyhINmUpLE1nKEY2ZSksTWcoVjZlKSxNZyhqNmUpLE1nKEJ3KSxNZyhaNmUpfSgpLGZ1bmN0aW9uIGhudCgpe2dPKGR6KSxnTyhNdGUpLGdPKHo2ZSksZ08oRXRlKX0oKSxmdW5jdGlvbiBUbnQo''@;'; put 'put ''KXtrOChwbnQpLGs4KG1udCksazgoQW50KSxrOCh3bnQpLGs4KF9udCksazgoa250KSxrOChNbnQpLGs4KFdTZSksazgoeG50KX0oKSxmdW5jdGlvbiBiNXQoKXtPcyhkcnQpLE9zKFBydCksT3MoJHJ0KSxPcyhOaXQpLE9zKHIwdCksT3MoQ0VlKSxPcyh5b3QpLE9zKFVvdCksT3MoJEVlKSxP''@;'; put 'put ''cyhnbHQpLE9zKFZsdCksT3MoSmx0KSxPcyhBeGUpLE9zKGpzdCksT3MoWWN0KSxPcyhfZnQpLE9zKFdmdCksT3MocGh0KSxPcyhCaHQpLE9zKGczdCksT3MoazN0KSxPcyhpZHQpLE9zKGRkdCksT3MocWR0KSxPcyhBNHQpLE9zKFQ0dCksT3MoS3B0KSxPcyhvOHQpLE9zKHk4dCksT3MoRjh0''@;'; put 'put ''KSxPcyhROHQpLE9zKGk1dCksT3ModzV0KX0oKX1jbGFzcyBBbWV7Y29uc3RydWN0b3IoZyl7dGhpcy5yYXdGaWxlPWc7bGV0IHY9ZnVuY3Rpb24gXzV0KGQpe3JldHVybiEoIWR8fCEoZC5ub2RlTmFtZXx8ZC5wcm9wJiZkLmF0dHImJmQuZmluZCkpfShnKT9nLnZhbHVlOmc7dGhpc1siX2Ny''@;'; put 'put ''ZWF0ZUZyb20iKygic3RyaW5nIj09dHlwZW9mIHY/IkZha2VQYXRoIjoiT2JqZWN0IildKHYpfV9jcmVhdGVGcm9tRmFrZVBhdGgoZyl7dGhpcy5sYXN0TW9kaWZpZWREYXRlPXZvaWQgMCx0aGlzLnNpemU9dm9pZCAwLHRoaXMudHlwZT0ibGlrZS8iK2cuc2xpY2UoZy5sYXN0SW5kZXhPZigi''@;'; put 'put ''LiIpKzEpLnRvTG93ZXJDYXNlKCksdGhpcy5uYW1lPWcuc2xpY2UoZy5sYXN0SW5kZXhPZigiLyIpK2cubGFzdEluZGV4T2YoIlxcIikrMil9X2NyZWF0ZUZyb21PYmplY3QoZyl7dGhpcy5zaXplPWcuc2l6ZSx0aGlzLnR5cGU9Zy50eXBlLHRoaXMubmFtZT1nLm5hbWV9fWNsYXNzIEM1dHtj''@;'; put 'put ''b25zdHJ1Y3RvcihnLGgsdil7dGhpcy51cmw9Ii8iLHRoaXMuaGVhZGVycz1bXSx0aGlzLndpdGhDcmVkZW50aWFscz0hMCx0aGlzLmZvcm1EYXRhPVtdLHRoaXMuaXNSZWFkeT0hMSx0aGlzLmlzVXBsb2FkaW5nPSExLHRoaXMuaXNVcGxvYWRlZD0hMSx0aGlzLmlzU3VjY2Vzcz0hMSx0aGlz''@;'; put 'put ''LmlzQ2FuY2VsPSExLHRoaXMuaXNFcnJvcj0hMSx0aGlzLnByb2dyZXNzPTAsdGhpcy5pbmRleD12b2lkIDAsdGhpcy51cGxvYWRlcj1nLHRoaXMuc29tZT1oLHRoaXMub3B0aW9ucz12LHRoaXMuZmlsZT1uZXcgQW1lKGgpLHRoaXMuX2ZpbGU9aCxnLm9wdGlvbnMmJih0aGlzLm1ldGhvZD1n''@;'; put 'put ''Lm9wdGlvbnMubWV0aG9kfHwiUE9TVCIsdGhpcy5hbGlhcz1nLm9wdGlvbnMuaXRlbUFsaWFzfHwiZmlsZSIpLHRoaXMudXJsPWcub3B0aW9ucy51cmx9dXBsb2FkKCl7dHJ5e3RoaXMudXBsb2FkZXIudXBsb2FkSXRlbSh0aGlzKX1jYXRjaChnKXt0aGlzLnVwbG9hZGVyLl9vbkNvbXBsZXRl''@;'; put 'put ''SXRlbSh0aGlzLCIiLDAse30pLHRoaXMudXBsb2FkZXIuX29uRXJyb3JJdGVtKHRoaXMsIiIsMCx7fSl9fWNhbmNlbCgpe3RoaXMudXBsb2FkZXIuY2FuY2VsSXRlbSh0aGlzKX1yZW1vdmUoKXt0aGlzLnVwbG9hZGVyLnJlbW92ZUZyb21RdWV1ZSh0aGlzKX1vbkJlZm9yZVVwbG9hZCgpe31v''@;'; put 'put ''bkJ1aWxkRm9ybShnKXtyZXR1cm57Zm9ybTpnfX1vblByb2dyZXNzKGcpe3JldHVybntwcm9ncmVzczpnfX1vblN1Y2Nlc3MoZyxoLHYpe3JldHVybntyZXNwb25zZTpnLHN0YXR1czpoLGhlYWRlcnM6dn19b25FcnJvcihnLGgsdil7cmV0dXJue3Jlc3BvbnNlOmcsc3RhdHVzOmgsaGVhZGVy''@;'; put 'put ''czp2fX1vbkNhbmNlbChnLGgsdil7cmV0dXJue3Jlc3BvbnNlOmcsc3RhdHVzOmgsaGVhZGVyczp2fX1vbkNvbXBsZXRlKGcsaCx2KXtyZXR1cm57cmVzcG9uc2U6ZyxzdGF0dXM6aCxoZWFkZXJzOnZ9fV9vbkJlZm9yZVVwbG9hZCgpe3RoaXMuaXNSZWFkeT0hMCx0aGlzLmlzVXBsb2FkaW5n''@;'; put 'put ''PSEwLHRoaXMuaXNVcGxvYWRlZD0hMSx0aGlzLmlzU3VjY2Vzcz0hMSx0aGlzLmlzQ2FuY2VsPSExLHRoaXMuaXNFcnJvcj0hMSx0aGlzLnByb2dyZXNzPTAsdGhpcy5vbkJlZm9yZVVwbG9hZCgpfV9vbkJ1aWxkRm9ybShnKXt0aGlzLm9uQnVpbGRGb3JtKGcpfV9vblByb2dyZXNzKGcpe3Ro''@;'; put 'put ''aXMucHJvZ3Jlc3M9Zyx0aGlzLm9uUHJvZ3Jlc3MoZyl9X29uU3VjY2VzcyhnLGgsdil7dGhpcy5pc1JlYWR5PSExLHRoaXMuaXNVcGxvYWRpbmc9ITEsdGhpcy5pc1VwbG9hZGVkPSEwLHRoaXMuaXNTdWNjZXNzPSEwLHRoaXMuaXNDYW5jZWw9ITEsdGhpcy5pc0Vycm9yPSExLHRoaXMucHJv''@;'; put 'put ''Z3Jlc3M9MTAwLHRoaXMuaW5kZXg9dm9pZCAwLHRoaXMub25TdWNjZXNzKGcsaCx2KX1fb25FcnJvcihnLGgsdil7dGhpcy5pc1JlYWR5PSExLHRoaXMuaXNVcGxvYWRpbmc9ITEsdGhpcy5pc1VwbG9hZGVkPSEwLHRoaXMuaXNTdWNjZXNzPSExLHRoaXMuaXNDYW5jZWw9ITEsdGhpcy5pc0Vy''@;'; put 'put ''cm9yPSEwLHRoaXMucHJvZ3Jlc3M9MCx0aGlzLmluZGV4PXZvaWQgMCx0aGlzLm9uRXJyb3IoZyxoLHYpfV9vbkNhbmNlbChnLGgsdil7dGhpcy5pc1JlYWR5PSExLHRoaXMuaXNVcGxvYWRpbmc9ITEsdGhpcy5pc1VwbG9hZGVkPSExLHRoaXMuaXNTdWNjZXNzPSExLHRoaXMuaXNDYW5jZWw9''@;'; put 'put ''ITAsdGhpcy5pc0Vycm9yPSExLHRoaXMucHJvZ3Jlc3M9MCx0aGlzLmluZGV4PXZvaWQgMCx0aGlzLm9uQ2FuY2VsKGcsaCx2KX1fb25Db21wbGV0ZShnLGgsdil7dGhpcy5vbkNvbXBsZXRlKGcsaCx2KSx0aGlzLnVwbG9hZGVyLm9wdGlvbnMucmVtb3ZlQWZ0ZXJVcGxvYWQmJnRoaXMucmVt''@;'; put 'put ''b3ZlKCl9X3ByZXBhcmVUb1VwbG9hZGluZygpe3RoaXMuaW5kZXg9dGhpcy5pbmRleHx8Kyt0aGlzLnVwbG9hZGVyLl9uZXh0SW5kZXgsdGhpcy5pc1JlYWR5PSEwfX1sZXQgazV0PSgoKT0+e2NsYXNzIGR7c3RhdGljIGdldE1pbWVDbGFzcyhoKXtsZXQgdj0iYXBwbGljYXRpb24iO3JldHVy''@;'; put 'put ''bi0xIT09dGhpcy5taW1lX3BzZC5pbmRleE9mKGgudHlwZSl8fGgudHlwZS5tYXRjaCgiaW1hZ2UuKiIpP3Y9ImltYWdlIjpoLnR5cGUubWF0Y2goInZpZGVvLioiKT92PSJ2aWRlbyI6aC50eXBlLm1hdGNoKCJhdWRpby4qIik/dj0iYXVkaW8iOiJhcHBsaWNhdGlvbi9wZGYiPT09aC50eXBl''@;'; put 'put ''P3Y9InBkZiI6LTEhPT10aGlzLm1pbWVfY29tcHJlc3MuaW5kZXhPZihoLnR5cGUpP3Y9ImNvbXByZXNzIjotMSE9PXRoaXMubWltZV9kb2MuaW5kZXhPZihoLnR5cGUpP3Y9ImRvYyI6LTEhPT10aGlzLm1pbWVfeHNsLmluZGV4T2YoaC50eXBlKT92PSJ4bHMiOi0xIT09dGhpcy5taW1lX3Bw''@;'; put 'put ''dC5pbmRleE9mKGgudHlwZSkmJih2PSJwcHQiKSwiYXBwbGljYXRpb24iPT09diYmKHY9dGhpcy5maWxlVHlwZURldGVjdGlvbihoLm5hbWUpKSx2fXN0YXRpYyBmaWxlVHlwZURldGVjdGlvbihoKXtsZXQgdj17anBnOiJpbWFnZSIsanBlZzoiaW1hZ2UiLHRpZjoiaW1hZ2UiLHBzZDoiaW1h''@;'; put 'put ''Z2UiLGJtcDoiaW1hZ2UiLHBuZzoiaW1hZ2UiLG5lZjoiaW1hZ2UiLHRpZmY6ImltYWdlIixjcjI6ImltYWdlIixkd2c6ImltYWdlIixjZHI6ImltYWdlIixhaToiaW1hZ2UiLGluZGQ6ImltYWdlIixwaW46ImltYWdlIixjZHA6ImltYWdlIixza3A6ImltYWdlIixzdHA6ImltYWdlIiwiM2Rt''@;'; put 'put ''IjoiaW1hZ2UiLG1wMzoiYXVkaW8iLHdhdjoiYXVkaW8iLHdtYToiYXVkaW8iLG1vZDoiYXVkaW8iLG00YToiYXVkaW8iLGNvbXByZXNzOiJjb21wcmVzcyIsemlwOiJjb21wcmVzcyIscmFyOiJjb21wcmVzcyIsIjd6IjoiY29tcHJlc3MiLGx6OiJjb21wcmVzcyIsejAxOiJjb21wcmVzcyIs''@;'; put 'put ''YnoyOiJjb21wcmVzcyIsZ3o6ImNvbXByZXNzIixwZGY6InBkZiIseGxzOiJ4bHMiLHhsc3g6InhscyIsb2RzOiJ4bHMiLG1wNDoidmlkZW8iLGF2aToidmlkZW8iLHdtdjoidmlkZW8iLG1wZzoidmlkZW8iLG10czoidmlkZW8iLGZsdjoidmlkZW8iLCIzZ3AiOiJ2aWRlbyIsdm9iOiJ2aWRl''@;'; put 'put ''byIsbTR2OiJ2aWRlbyIsbXBlZzoidmlkZW8iLG0ydHM6InZpZGVvIixtb3Y6InZpZGVvIixkb2M6ImRvYyIsZG9jeDoiZG9jIixlcHM6ImRvYyIsdHh0OiJkb2MiLG9kdDoiZG9jIixydGY6ImRvYyIscHB0OiJwcHQiLHBwdHg6InBwdCIscHBzOiJwcHQiLHBwc3g6InBwdCIsb2RwOiJwcHQi''@;'; put 'put ''fSx5PWguc3BsaXQoIi4iKTtpZih5Lmxlbmd0aDwyKXJldHVybiJhcHBsaWNhdGlvbiI7bGV0IEM9eVt5Lmxlbmd0aC0xXS50b0xvd2VyQ2FzZSgpO3JldHVybiB2b2lkIDA9PT12W0NdPyJhcHBsaWNhdGlvbiI6dltDXX19cmV0dXJuIGQubWltZV9kb2M9WyJhcHBsaWNhdGlvbi9tc3dvcmQi''@;'; put 'put ''LCJhcHBsaWNhdGlvbi9tc3dvcmQiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLnRlbXBs''@;'; put 'put ''YXRlIiwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQuZG9jdW1lbnQubWFjcm9FbmFibGVkLjEyIiwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQudGVtcGxhdGUubWFjcm9FbmFibGVkLjEyIl0sZC5taW1lX3hzbD1bImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCIsImFwcGxpY2F0aW9uL3ZuZC5t''@;'; put 'put ''cy1leGNlbCIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0IiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwu''@;'; put 'put ''dGVtcGxhdGUiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQubWFjcm9FbmFibGVkLjEyIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnRlbXBsYXRlLm1hY3JvRW5hYmxlZC4xMiIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb0VuYWJsZWQuMTIiLCJhcHBs''@;'; put 'put ''aWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQuYmluYXJ5Lm1hY3JvRW5hYmxlZC4xMiJdLGQubWltZV9wcHQ9WyJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCIsImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50IiwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQiLCJhcHBs''@;'; put 'put ''aWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwu''@;'; put 'put ''dGVtcGxhdGUiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVzaG93IiwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuYWRkaW4ubWFjcm9FbmFibGVkLjEyIiwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9p''@;'; put 'put ''bnQucHJlc2VudGF0aW9uLm1hY3JvRW5hYmxlZC4xMiIsImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnByZXNlbnRhdGlvbi5tYWNyb0VuYWJsZWQuMTIiLCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5zbGlkZXNob3cubWFjcm9FbmFibGVkLjEyIl0sZC5taW1lX3BzZD1b''@;'; put 'put ''ImltYWdlL3Bob3Rvc2hvcCIsImltYWdlL3gtcGhvdG9zaG9wIiwiaW1hZ2UvcHNkIiwiYXBwbGljYXRpb24vcGhvdG9zaG9wIiwiYXBwbGljYXRpb24vcHNkIiwienotYXBwbGljYXRpb24venotd2luYXNzb2MtcHNkIl0sZC5taW1lX2NvbXByZXNzPVsiYXBwbGljYXRpb24veC1ndGFyIiwi''@;'; put 'put ''YXBwbGljYXRpb24veC1nY29tcHJlc3MiLCJhcHBsaWNhdGlvbi9jb21wcmVzcyIsImFwcGxpY2F0aW9uL3gtdGFyIiwiYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZCIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsImFwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQiLCJhcHBsaWNh''@;'; put 'put ''dGlvbi96aXAtY29tcHJlc3NlZCIsImFwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZCIsImFwcGxpY2F0aW9uL2d6aXAiLCJhcHBsaWNhdGlvbi94LWJ6aXAyIl0sZH0pKCk7Y2xhc3MgTTV0e2NvbnN0cnVjdG9yKGcpe3RoaXMuaXNVcGxvYWRpbmc9ITEsdGhpcy5xdWV1ZT1bXSx0aGlzLnBy''@;'; put 'put ''b2dyZXNzPTAsdGhpcy5fbmV4dEluZGV4PTAsdGhpcy5vcHRpb25zPXthdXRvVXBsb2FkOiExLGlzSFRNTDU6ITAsZmlsdGVyczpbXSxyZW1vdmVBZnRlclVwbG9hZDohMSxkaXNhYmxlTXVsdGlwYXJ0OiExLGZvcm1hdERhdGFGdW5jdGlvbjpoPT5oLl9maWxlLGZvcm1hdERhdGFGdW5jdGlv''@;'; put 'put ''bklzQXN5bmM6ITF9LHRoaXMuc2V0T3B0aW9ucyhnKSx0aGlzLnJlc3BvbnNlPW5ldyBhcn1zZXRPcHRpb25zKGcpe3RoaXMub3B0aW9ucz1PYmplY3QuYXNzaWduKHRoaXMub3B0aW9ucyxnKSx0aGlzLmF1dGhUb2tlbj10aGlzLm9wdGlvbnMuYXV0aFRva2VuLHRoaXMuYXV0aFRva2VuSGVh''@;'; put 'put ''ZGVyPXRoaXMub3B0aW9ucy5hdXRoVG9rZW5IZWFkZXJ8fCJBdXRob3JpemF0aW9uIix0aGlzLmF1dG9VcGxvYWQ9dGhpcy5vcHRpb25zLmF1dG9VcGxvYWQsdGhpcy5vcHRpb25zLmZpbHRlcnMudW5zaGlmdCh7bmFtZToicXVldWVMaW1pdCIsZm46dGhpcy5fcXVldWVMaW1pdEZpbHRlcn0p''@;'; put 'put ''LHRoaXMub3B0aW9ucy5tYXhGaWxlU2l6ZSYmdGhpcy5vcHRpb25zLmZpbHRlcnMudW5zaGlmdCh7bmFtZToiZmlsZVNpemUiLGZuOnRoaXMuX2ZpbGVTaXplRmlsdGVyfSksdGhpcy5vcHRpb25zLmFsbG93ZWRGaWxlVHlwZSYmdGhpcy5vcHRpb25zLmZpbHRlcnMudW5zaGlmdCh7bmFtZToi''@;'; put 'put ''ZmlsZVR5cGUiLGZuOnRoaXMuX2ZpbGVUeXBlRmlsdGVyfSksdGhpcy5vcHRpb25zLmFsbG93ZWRNaW1lVHlwZSYmdGhpcy5vcHRpb25zLmZpbHRlcnMudW5zaGlmdCh7bmFtZToibWltZVR5cGUiLGZuOnRoaXMuX21pbWVUeXBlRmlsdGVyfSk7Zm9yKGxldCBoPTA7aDx0aGlzLnF1ZXVlLmxl''@;'; put 'put ''bmd0aDtoKyspdGhpcy5xdWV1ZVtoXS51cmw9dGhpcy5vcHRpb25zLnVybH1hZGRUb1F1ZXVlKGcsaCx2KXtsZXQgeT1bXTtmb3IobGV0IHVlIG9mIGcpeS5wdXNoKHVlKTtsZXQgQz10aGlzLl9nZXRGaWx0ZXJzKHYpLEk9dGhpcy5xdWV1ZS5sZW5ndGgsWj1bXTt5Lm1hcCh1ZT0+e2h8fCho''@;'; put 'put ''PXRoaXMub3B0aW9ucyk7bGV0IF9lPW5ldyBBbWUodWUpO2lmKHRoaXMuX2lzVmFsaWRGaWxlKF9lLEMsaCkpe2xldCBCZT1uZXcgQzV0KHRoaXMsdWUsaCk7Wi5wdXNoKEJlKSx0aGlzLnF1ZXVlLnB1c2goQmUpLHRoaXMuX29uQWZ0ZXJBZGRpbmdGaWxlKEJlKX1lbHNlIHRoaXMuX29uV2hl''@;'; put 'put ''bkFkZGluZ0ZpbGVGYWlsZWQoX2UsQ1t0aGlzLl9mYWlsRmlsdGVySW5kZXhdLGgpfSksdGhpcy5xdWV1ZS5sZW5ndGghPT1JJiYodGhpcy5fb25BZnRlckFkZGluZ0FsbChaKSx0aGlzLnByb2dyZXNzPXRoaXMuX2dldFRvdGFsUHJvZ3Jlc3MoKSksdGhpcy5fcmVuZGVyKCksdGhpcy5vcHRp''@;'; put 'put ''b25zLmF1dG9VcGxvYWQmJnRoaXMudXBsb2FkQWxsKCl9cmVtb3ZlRnJvbVF1ZXVlKGcpe2xldCBoPXRoaXMuZ2V0SW5kZXhPZkl0ZW0oZyksdj10aGlzLnF1ZXVlW2hdO3YuaXNVcGxvYWRpbmcmJnYuY2FuY2VsKCksdGhpcy5xdWV1ZS5zcGxpY2UoaCwxKSx0aGlzLnByb2dyZXNzPXRoaXMu''@;'; put 'put ''X2dldFRvdGFsUHJvZ3Jlc3MoKX1jbGVhclF1ZXVlKCl7Zm9yKDt0aGlzLnF1ZXVlLmxlbmd0aDspdGhpcy5xdWV1ZVswXS5yZW1vdmUoKTt0aGlzLnByb2dyZXNzPTB9dXBsb2FkSXRlbShnKXtsZXQgaD10aGlzLmdldEluZGV4T2ZJdGVtKGcpLHY9dGhpcy5xdWV1ZVtoXSx5PXRoaXMub3B0''@;'; put 'put ''aW9ucy5pc0hUTUw1PyJfeGhyVHJhbnNwb3J0IjoiX2lmcmFtZVRyYW5zcG9ydCI7di5fcHJlcGFyZVRvVXBsb2FkaW5nKCksIXRoaXMuaXNVcGxvYWRpbmcmJih0aGlzLmlzVXBsb2FkaW5nPSEwLHRoaXNbeV0odikpfWNhbmNlbEl0ZW0oZyl7bGV0IGg9dGhpcy5nZXRJbmRleE9mSXRlbShn''@;'; put 'put ''KSx2PXRoaXMucXVldWVbaF07diYmdi5pc1VwbG9hZGluZyYmKHRoaXMub3B0aW9ucy5pc0hUTUw1P3YuX3hocjp2Ll9mb3JtKS5hYm9ydCgpfXVwbG9hZEFsbCgpe2xldCBnPXRoaXMuZ2V0Tm90VXBsb2FkZWRJdGVtcygpLmZpbHRlcihoPT4haC5pc1VwbG9hZGluZyk7IWcubGVuZ3RofHwo''@;'; put 'put ''Zy5tYXAoaD0+aC5fcHJlcGFyZVRvVXBsb2FkaW5nKCkpLGdbMF0udXBsb2FkKCkpfWNhbmNlbEFsbCgpe3RoaXMuZ2V0Tm90VXBsb2FkZWRJdGVtcygpLm1hcChoPT5oLmNhbmNlbCgpKX1pc0ZpbGUoZyl7cmV0dXJuIGZ1bmN0aW9uIFM1dChkKXtyZXR1cm4gRmlsZSYmZCBpbnN0YW5jZW9m''@;'; put 'put ''IEZpbGV9KGcpfWlzRmlsZUxpa2VPYmplY3QoZyl7cmV0dXJuIGcgaW5zdGFuY2VvZiBBbWV9Z2V0SW5kZXhPZkl0ZW0oZyl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBnP2c6dGhpcy5xdWV1ZS5pbmRleE9mKGcpfWdldE5vdFVwbG9hZGVkSXRlbXMoKXtyZXR1cm4gdGhpcy5xdWV1ZS5maWx0''@;'; put 'put ''ZXIoZz0+IWcuaXNVcGxvYWRlZCl9Z2V0UmVhZHlJdGVtcygpe3JldHVybiB0aGlzLnF1ZXVlLmZpbHRlcihnPT5nLmlzUmVhZHkmJiFnLmlzVXBsb2FkaW5nKS5zb3J0KChnLGgpPT5nLmluZGV4LWguaW5kZXgpfWRlc3Ryb3koKXt9b25BZnRlckFkZGluZ0FsbChnKXtyZXR1cm57ZmlsZUl0''@;'; put 'put ''ZW1zOmd9fW9uQnVpbGRJdGVtRm9ybShnLGgpe3JldHVybntmaWxlSXRlbTpnLGZvcm06aH19b25BZnRlckFkZGluZ0ZpbGUoZyl7cmV0dXJue2ZpbGVJdGVtOmd9fW9uV2hlbkFkZGluZ0ZpbGVGYWlsZWQoZyxoLHYpe3JldHVybntpdGVtOmcsZmlsdGVyOmgsb3B0aW9uczp2fX1vbkJlZm9y''@;'; put 'put ''ZVVwbG9hZEl0ZW0oZyl7cmV0dXJue2ZpbGVJdGVtOmd9fW9uUHJvZ3Jlc3NJdGVtKGcsaCl7cmV0dXJue2ZpbGVJdGVtOmcscHJvZ3Jlc3M6aH19b25Qcm9ncmVzc0FsbChnKXtyZXR1cm57cHJvZ3Jlc3M6Z319b25TdWNjZXNzSXRlbShnLGgsdix5KXtyZXR1cm57aXRlbTpnLHJlc3BvbnNl''@;'; put 'put ''Omgsc3RhdHVzOnYsaGVhZGVyczp5fX1vbkVycm9ySXRlbShnLGgsdix5KXtyZXR1cm57aXRlbTpnLHJlc3BvbnNlOmgsc3RhdHVzOnYsaGVhZGVyczp5fX1vbkNhbmNlbEl0ZW0oZyxoLHYseSl7cmV0dXJue2l0ZW06ZyxyZXNwb25zZTpoLHN0YXR1czp2LGhlYWRlcnM6eX19b25Db21wbGV0''@;'; put 'put ''ZUl0ZW0oZyxoLHYseSl7cmV0dXJue2l0ZW06ZyxyZXNwb25zZTpoLHN0YXR1czp2LGhlYWRlcnM6eX19b25Db21wbGV0ZUFsbCgpe31fbWltZVR5cGVGaWx0ZXIoZyl7cmV0dXJuISh0aGlzLm9wdGlvbnMuYWxsb3dlZE1pbWVUeXBlJiYtMT09PXRoaXMub3B0aW9ucy5hbGxvd2VkTWltZVR5''@;'; put 'put ''cGUuaW5kZXhPZihnLnR5cGUpKX1fZmlsZVNpemVGaWx0ZXIoZyl7cmV0dXJuISh0aGlzLm9wdGlvbnMubWF4RmlsZVNpemUmJmcuc2l6ZT50aGlzLm9wdGlvbnMubWF4RmlsZVNpemUpfV9maWxlVHlwZUZpbHRlcihnKXtyZXR1cm4hKHRoaXMub3B0aW9ucy5hbGxvd2VkRmlsZVR5cGUmJi0x''@;'; put 'put ''PT09dGhpcy5vcHRpb25zLmFsbG93ZWRGaWxlVHlwZS5pbmRleE9mKGs1dC5nZXRNaW1lQ2xhc3MoZykpKX1fb25FcnJvckl0ZW0oZyxoLHYseSl7Zy5fb25FcnJvcihoLHYseSksdGhpcy5vbkVycm9ySXRlbShnLGgsdix5KX1fb25Db21wbGV0ZUl0ZW0oZyxoLHYseSl7Zy5fb25Db21wbGV0''@;'; put 'put ''ZShoLHYseSksdGhpcy5vbkNvbXBsZXRlSXRlbShnLGgsdix5KTtsZXQgQz10aGlzLmdldFJlYWR5SXRlbXMoKVswXTt0aGlzLmlzVXBsb2FkaW5nPSExLEM/Qy51cGxvYWQoKToodGhpcy5vbkNvbXBsZXRlQWxsKCksdGhpcy5wcm9ncmVzcz10aGlzLl9nZXRUb3RhbFByb2dyZXNzKCksdGhp''@;'; put 'put ''cy5fcmVuZGVyKCkpfV9oZWFkZXJzR2V0dGVyKGcpe3JldHVybiBoPT5oP2dbaC50b0xvd2VyQ2FzZSgpXXx8dm9pZCAwOmd9X3hoclRyYW5zcG9ydChnKXtsZXQgeSxoPXRoaXMsdj1nLl94aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKHRoaXMuX29uQmVmb3JlVXBsb2FkSXRlbShnKSwibnVt''@;'; put 'put ''YmVyIiE9dHlwZW9mIGcuX2ZpbGUuc2l6ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgZmlsZSBzcGVjaWZpZWQgaXMgbm8gbG9uZ2VyIHZhbGlkIik7aWYodGhpcy5vcHRpb25zLmRpc2FibGVNdWx0aXBhcnQpeT10aGlzLm9wdGlvbnMuZm9ybWF0RGF0YUZ1bmN0aW9uKGcpO2Vsc2V7eT1u''@;'; put 'put ''ZXcgRm9ybURhdGEsdGhpcy5fb25CdWlsZEl0ZW1Gb3JtKGcseSk7Y29uc3QgQz0oKT0+eS5hcHBlbmQoZy5hbGlhcyxnLl9maWxlLGcuZmlsZS5uYW1lKTt0aGlzLm9wdGlvbnMucGFyYW1ldGVyc0JlZm9yZUZpbGVzfHxDKCksdm9pZCAwIT09dGhpcy5vcHRpb25zLmFkZGl0aW9uYWxQYXJh''@;'; put 'put ''bWV0ZXImJk9iamVjdC5rZXlzKHRoaXMub3B0aW9ucy5hZGRpdGlvbmFsUGFyYW1ldGVyKS5mb3JFYWNoKEk9PntsZXQgWj10aGlzLm9wdGlvbnMuYWRkaXRpb25hbFBhcmFtZXRlcltJXTsic3RyaW5nIj09dHlwZW9mIFomJlouaW5kZXhPZigie3tmaWxlX25hbWV9fSIpPj0wJiYoWj1aLnJl''@;'; put 'put ''cGxhY2UoInt7ZmlsZV9uYW1lfX0iLGcuZmlsZS5uYW1lKSkseS5hcHBlbmQoSSxaKX0pLHRoaXMub3B0aW9ucy5wYXJhbWV0ZXJzQmVmb3JlRmlsZXMmJkMoKX1pZih2LnVwbG9hZC5vbnByb2dyZXNzPUM9PntsZXQgST1NYXRoLnJvdW5kKEMubGVuZ3RoQ29tcHV0YWJsZT8xMDAqQy5sb2Fk''@;'; put 'put ''ZWQvQy50b3RhbDowKTt0aGlzLl9vblByb2dyZXNzSXRlbShnLEkpfSx2Lm9ubG9hZD0oKT0+e2xldCBDPXRoaXMuX3BhcnNlSGVhZGVycyh2LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxJPXRoaXMuX3RyYW5zZm9ybVJlc3BvbnNlKHYucmVzcG9uc2UsQyk7dGhpc1siX29uIisodGhpcy5f''@;'; put 'put ''aXNTdWNjZXNzQ29kZSh2LnN0YXR1cyk/IlN1Y2Nlc3MiOiJFcnJvciIpKyJJdGVtIl0oZyxJLHYuc3RhdHVzLEMpLHRoaXMuX29uQ29tcGxldGVJdGVtKGcsSSx2LnN0YXR1cyxDKX0sdi5vbmVycm9yPSgpPT57bGV0IEM9dGhpcy5fcGFyc2VIZWFkZXJzKHYuZ2V0QWxsUmVzcG9uc2VIZWFk''@;'; put 'put ''ZXJzKCkpLEk9dGhpcy5fdHJhbnNmb3JtUmVzcG9uc2Uodi5yZXNwb25zZSxDKTt0aGlzLl9vbkVycm9ySXRlbShnLEksdi5zdGF0dXMsQyksdGhpcy5fb25Db21wbGV0ZUl0ZW0oZyxJLHYuc3RhdHVzLEMpfSx2Lm9uYWJvcnQ9KCk9PntsZXQgQz10aGlzLl9wYXJzZUhlYWRlcnModi5nZXRB''@;'; put 'put ''bGxSZXNwb25zZUhlYWRlcnMoKSksST10aGlzLl90cmFuc2Zvcm1SZXNwb25zZSh2LnJlc3BvbnNlLEMpO3RoaXMuX29uQ2FuY2VsSXRlbShnLEksdi5zdGF0dXMsQyksdGhpcy5fb25Db21wbGV0ZUl0ZW0oZyxJLHYuc3RhdHVzLEMpfSx2Lm9wZW4oZy5tZXRob2QsZy51cmwsITApLHYud2l0''@;'; put 'put ''aENyZWRlbnRpYWxzPWcud2l0aENyZWRlbnRpYWxzLHRoaXMub3B0aW9ucy5oZWFkZXJzKWZvcihsZXQgQyBvZiB0aGlzLm9wdGlvbnMuaGVhZGVycyl2LnNldFJlcXVlc3RIZWFkZXIoQy5uYW1lLEMudmFsdWUpO2lmKGcuaGVhZGVycy5sZW5ndGgpZm9yKGxldCBDIG9mIGcuaGVhZGVycyl2''@;'; put 'put ''LnNldFJlcXVlc3RIZWFkZXIoQy5uYW1lLEMudmFsdWUpO3RoaXMuYXV0aFRva2VuJiZ2LnNldFJlcXVlc3RIZWFkZXIodGhpcy5hdXRoVG9rZW5IZWFkZXIsdGhpcy5hdXRoVG9rZW4pLHYub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7di5yZWFkeVN0YXRlPT1YTUxIdHRwUmVxdWVz''@;'; put 'put ''dC5ET05FJiZoLnJlc3BvbnNlLmVtaXQodi5yZXNwb25zZVRleHQpfSx0aGlzLm9wdGlvbnMuZm9ybWF0RGF0YUZ1bmN0aW9uSXNBc3luYz95LnRoZW4oQz0+di5zZW5kKEpTT04uc3RyaW5naWZ5KEMpKSk6di5zZW5kKHkpLHRoaXMuX3JlbmRlcigpfV9nZXRUb3RhbFByb2dyZXNzKGc9MCl7''@;'; put 'put ''aWYodGhpcy5vcHRpb25zLnJlbW92ZUFmdGVyVXBsb2FkKXJldHVybiBnO2xldCBoPXRoaXMuZ2V0Tm90VXBsb2FkZWRJdGVtcygpLmxlbmd0aCx5PTEwMC90aGlzLnF1ZXVlLmxlbmd0aDtyZXR1cm4gTWF0aC5yb3VuZCgoaD90aGlzLnF1ZXVlLmxlbmd0aC1oOnRoaXMucXVldWUubGVuZ3Ro''@;'; put 'put ''KSp5K2cqeS8xMDApfV9nZXRGaWx0ZXJzKGcpe2lmKCFnKXJldHVybiB0aGlzLm9wdGlvbnMuZmlsdGVycztpZihBcnJheS5pc0FycmF5KGcpKXJldHVybiBnO2lmKCJzdHJpbmciPT10eXBlb2YgZyl7bGV0IGg9Zy5tYXRjaCgvW15ccyxdKy9nKTtyZXR1cm4gdGhpcy5vcHRpb25zLmZpbHRl''@;'; put 'put ''cnMuZmlsdGVyKHY9Pi0xIT09aC5pbmRleE9mKHYubmFtZSkpfXJldHVybiB0aGlzLm9wdGlvbnMuZmlsdGVyc31fcmVuZGVyKCl7fV9xdWV1ZUxpbWl0RmlsdGVyKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMub3B0aW9ucy5xdWV1ZUxpbWl0fHx0aGlzLnF1ZXVlLmxlbmd0aDx0aGlzLm9wdGlv''@;'; put 'put ''bnMucXVldWVMaW1pdH1faXNWYWxpZEZpbGUoZyxoLHYpe3JldHVybiB0aGlzLl9mYWlsRmlsdGVySW5kZXg9LTEsIWgubGVuZ3RofHxoLmV2ZXJ5KHk9Pih0aGlzLl9mYWlsRmlsdGVySW5kZXgrKyx5LmZuLmNhbGwodGhpcyxnLHYpKSl9X2lzU3VjY2Vzc0NvZGUoZyl7cmV0dXJuIGc+PTIw''@;'; put 'put ''MCYmZzwzMDB8fDMwND09PWd9X3RyYW5zZm9ybVJlc3BvbnNlKGcsaCl7cmV0dXJuIGd9X3BhcnNlSGVhZGVycyhnKXtsZXQgdix5LEMsaD17fTtyZXR1cm4gZyYmZy5zcGxpdCgiXG4iKS5tYXAoST0+e0M9SS5pbmRleE9mKCI6Iiksdj1JLnNsaWNlKDAsQykudHJpbSgpLnRvTG93ZXJDYXNl''@;'; put 'put ''KCkseT1JLnNsaWNlKEMrMSkudHJpbSgpLHYmJihoW3ZdPWhbdl0/aFt2XSsiLCAiK3k6eSl9KSxofV9vbldoZW5BZGRpbmdGaWxlRmFpbGVkKGcsaCx2KXt0aGlzLm9uV2hlbkFkZGluZ0ZpbGVGYWlsZWQoZyxoLHYpfV9vbkFmdGVyQWRkaW5nRmlsZShnKXt0aGlzLm9uQWZ0ZXJBZGRpbmdG''@;'; put 'put ''aWxlKGcpfV9vbkFmdGVyQWRkaW5nQWxsKGcpe3RoaXMub25BZnRlckFkZGluZ0FsbChnKX1fb25CZWZvcmVVcGxvYWRJdGVtKGcpe2cuX29uQmVmb3JlVXBsb2FkKCksdGhpcy5vbkJlZm9yZVVwbG9hZEl0ZW0oZyl9X29uQnVpbGRJdGVtRm9ybShnLGgpe2cuX29uQnVpbGRGb3JtKGgpLHRo''@;'; put 'put ''aXMub25CdWlsZEl0ZW1Gb3JtKGcsaCl9X29uUHJvZ3Jlc3NJdGVtKGcsaCl7bGV0IHY9dGhpcy5fZ2V0VG90YWxQcm9ncmVzcyhoKTt0aGlzLnByb2dyZXNzPXYsZy5fb25Qcm9ncmVzcyhoKSx0aGlzLm9uUHJvZ3Jlc3NJdGVtKGcsaCksdGhpcy5vblByb2dyZXNzQWxsKHYpLHRoaXMuX3Jl''@;'; put 'put ''bmRlcigpfV9vblN1Y2Nlc3NJdGVtKGcsaCx2LHkpe2cuX29uU3VjY2VzcyhoLHYseSksdGhpcy5vblN1Y2Nlc3NJdGVtKGcsaCx2LHkpfV9vbkNhbmNlbEl0ZW0oZyxoLHYseSl7Zy5fb25DYW5jZWwoaCx2LHkpLHRoaXMub25DYW5jZWxJdGVtKGcsaCx2LHkpfX1sZXQgRTV0PSgoKT0+e2Ns''@;'; put 'put ''YXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5vbkZpbGVTZWxlY3RlZD1uZXcgYXIsdGhpcy5lbGVtZW50PWh9Z2V0T3B0aW9ucygpe3JldHVybiB0aGlzLnVwbG9hZGVyLm9wdGlvbnN9Z2V0RmlsdGVycygpe3JldHVybnt9fWlzRW1wdHlBZnRlclNlbGVjdGlvbigpe3JldHVybiEhdGhpcy5l''@;'; put 'put ''bGVtZW50Lm5hdGl2ZUVsZW1lbnQuYXR0cmlidXRlcy5tdWx0aXBsZX1vbkNoYW5nZSgpe2xldCBoPXRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZpbGVzLHY9dGhpcy5nZXRPcHRpb25zKCkseT10aGlzLmdldEZpbHRlcnMoKTt0aGlzLnVwbG9hZGVyLmFkZFRvUXVldWUoaCx2LHkpLHRo''@;'; put 'put ''aXMub25GaWxlU2VsZWN0ZWQuZW1pdChoKSx0aGlzLmlzRW1wdHlBZnRlclNlbGVjdGlvbigpJiYodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWU9IiIpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChibykpfSxkLlx1MDI3NWRpcj1X''@;'; put 'put ''aSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJuZzJGaWxlU2VsZWN0IiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezEmaCYmR24oImNoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gdi5vbkNoYW5nZSgpfSl9LGlucHV0czp7dXBsb2FkZXI6InVwbG9hZGVyIn0sb3V0cHV0czp7b25G''@;'; put 'put ''aWxlU2VsZWN0ZWQ6Im9uRmlsZVNlbGVjdGVkIn19KSxkfSkoKSx4NXQ9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmZpbGVPdmVyPW5ldyBhcix0aGlzLm9uRmlsZURyb3A9bmV3IGFyLHRoaXMuZWxlbWVudD1ofWdldE9wdGlvbnMoKXtyZXR1cm4gdGhpcy51cGxvYWRlci5v''@;'; put 'put ''cHRpb25zfWdldEZpbHRlcnMoKXtyZXR1cm57fX1vbkRyb3AoaCl7bGV0IHY9dGhpcy5fZ2V0VHJhbnNmZXIoaCk7aWYoIXYpcmV0dXJuO2xldCB5PXRoaXMuZ2V0T3B0aW9ucygpLEM9dGhpcy5nZXRGaWx0ZXJzKCk7dGhpcy5fcHJldmVudEFuZFN0b3AoaCksdGhpcy51cGxvYWRlci5hZGRU''@;'; put 'put ''b1F1ZXVlKHYuZmlsZXMseSxDKSx0aGlzLmZpbGVPdmVyLmVtaXQoITEpLHRoaXMub25GaWxlRHJvcC5lbWl0KHYuZmlsZXMpfW9uRHJhZ092ZXIoaCl7bGV0IHY9dGhpcy5fZ2V0VHJhbnNmZXIoaCk7IXRoaXMuX2hhdmVGaWxlcyh2LnR5cGVzKXx8KHYuZHJvcEVmZmVjdD0iY29weSIsdGhp''@;'; put 'put ''cy5fcHJldmVudEFuZFN0b3AoaCksdGhpcy5maWxlT3Zlci5lbWl0KCEwKSl9b25EcmFnTGVhdmUoaCl7dGhpcy5lbGVtZW50JiZoLmN1cnJlbnRUYXJnZXQ9PT10aGlzLmVsZW1lbnRbMF18fCh0aGlzLl9wcmV2ZW50QW5kU3RvcChoKSx0aGlzLmZpbGVPdmVyLmVtaXQoITEpKX1fZ2V0VHJh''@;'; put 'put ''bnNmZXIoaCl7cmV0dXJuIGguZGF0YVRyYW5zZmVyP2guZGF0YVRyYW5zZmVyOmgub3JpZ2luYWxFdmVudC5kYXRhVHJhbnNmZXJ9X3ByZXZlbnRBbmRTdG9wKGgpe2gucHJldmVudERlZmF1bHQoKSxoLnN0b3BQcm9wYWdhdGlvbigpfV9oYXZlRmlsZXMoaCl7cmV0dXJuISFoJiYoaC5pbmRl''@;'; put 'put ''eE9mPy0xIT09aC5pbmRleE9mKCJGaWxlcyIpOiEhaC5jb250YWlucyYmaC5jb250YWlucygiRmlsZXMiKSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGJvKSl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsIm5nMkZp''@;'; put 'put ''bGVEcm9wIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezEmaCYmR24oImRyb3AiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uRHJvcChDKX0pKCJkcmFnb3ZlciIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25EcmFnT3ZlcihDKX0pKCJkcmFnbGVhdmUiLGZ1bmN0aW9uKEMpe3JldHVy''@;'; put 'put ''biB2Lm9uRHJhZ0xlYXZlKEMpfSl9LGlucHV0czp7dXBsb2FkZXI6InVwbG9hZGVyIn0sb3V0cHV0czp7ZmlsZU92ZXI6ImZpbGVPdmVyIixvbkZpbGVEcm9wOiJvbkZpbGVEcm9wIn19KSxkfSkoKSxUNXQ9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3Jl''@;'; put 'put ''dHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbYmFdfSksZH0pKCkseW1lPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlw''@;'; put 'put ''ZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W2JhXX0pLGR9KSgpLEhuZT0oKCk9PntjbGFzcyBke25nT25Jbml0KCl7fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHtw''@;'; put 'put ''cm92aWRlcnM6W09ILExIXSxpbXBvcnRzOltiYSx0ZCxYaCxuTyx5bWUsUGplLmZvclJvb3QoKV19KSxkfSkoKSxObmU9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3''@;'; put 'put ''NWluaj1iMCh7aW1wb3J0czpbYmFdfSksZH0pKCksd21lPSgoKT0+e2NsYXNzIGR7fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkfSksZC5cdTAyNzVpbmo9YjAoe2ltcG9ydHM6W2JhLHRkLG5PLFhoLEhuZSxO''@;'; put 'put ''bmUseW1lXX0pLGR9KSgpO3ZhciBibWUsX21lLENtZSxrbWUsU21lLFNNPUwoMzA2MjgpO0woNDM5OSksd0xlKCksZnVuY3Rpb24gSTV0KGQpe3ZhciBnPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cualF1ZXJ5OyFnfHwoZy5mbi5oYW5kc29udGFibGU9ZnVuY3Rpb24oaCl7''@;'; put 'put ''dmFyIEksdj10aGlzLmZpcnN0KCkseT12LmRhdGEoImhhbmRzb250YWJsZSIpO2lmKCJzdHJpbmciIT10eXBlb2YgaCl7dmFyIEM9aHx8e307cmV0dXJuIHk/eS51cGRhdGVTZXR0aW5ncyhDKTooeT1uZXcgZC5Db3JlKHZbMF0sQyksdi5kYXRhKCJoYW5kc29udGFibGUiLHkpLHkuaW5pdCgp''@;'; put 'put ''KSx2fWlmKHkpe2lmKHZvaWQgMD09PXlbaF0pdGhyb3cgbmV3IEVycm9yKCJIYW5kc29udGFibGUgZG8gbm90IHByb3ZpZGUgYWN0aW9uOiAiLmNvbmNhdChoKSk7Zm9yKHZhciBaLHVlPWFyZ3VtZW50cy5sZW5ndGgsX2U9bmV3IEFycmF5KHVlPjE/dWUtMTowKSxCZT0xO0JlPHVlO0JlKysp''@;'; put 'put ''X2VbQmUtMV09YXJndW1lbnRzW0JlXTtJPShaPXlbaF0pLmNhbGwuYXBwbHkoWixbeV0uY29uY2F0KF9lKSksImRlc3Ryb3kiPT09aCYmdi5yZW1vdmVEYXRhKCl9cmV0dXJuIEl9KX0oSmwpLEpsLl9fR2hvc3RUYWJsZT1XNmUsSmwuX2dldExpc3RlbmVyc0NvdW50ZXI9ZnVuY3Rpb24gVlpl''@;'; put 'put ''KCl7cmV0dXJuIGFlZX0sSmwuX2dldFJlZ2lzdGVyZWRNYXBzQ291bnRlcj1mdW5jdGlvbiBxSmUoKXtyZXR1cm4gbTRlfSxKbC5FdmVudE1hbmFnZXI9TDE7dmFyIEQ1dD1bQixFZSx0ZSxKLG1lLHJlLFUsTixFLFEsYWUsV10sTDV0PVtqLFldO0psLmhlbHBlcj17fSxKbC5kb209e30sVXIo''@;'; put 'put ''RDV0LGZ1bmN0aW9uKGQpe1VyKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGQpLGZ1bmN0aW9uKGcpeyJfIiE9PWcuY2hhckF0KDApJiYoSmwuaGVscGVyW2ddPWRbZ10pfSl9KSxVcihMNXQsZnVuY3Rpb24oZCl7VXIoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZCksZnVuY3Rpb24o''@;'; put 'put ''Zyl7Il8iIT09Zy5jaGFyQXQoMCkmJihKbC5kb21bZ109ZFtnXSl9KX0pLEpsLmNlbGxUeXBlcz1udWxsIT09KGJtZT1KbC5jZWxsVHlwZXMpJiZ2b2lkIDAhPT1ibWU/Ym1lOnt9LFVyKGpRZSgpLGZ1bmN0aW9uKGQpe0psLmNlbGxUeXBlc1tkXT1aZWUoZCl9KSxKbC5jZWxsVHlwZXMucmVn''@;'; put 'put ''aXN0ZXJDZWxsVHlwZT1rOCxKbC5jZWxsVHlwZXMuZ2V0Q2VsbFR5cGU9WmVlLEpsLmVkaXRvcnM9bnVsbCE9PShfbWU9SmwuZWRpdG9ycykmJnZvaWQgMCE9PV9tZT9fbWU6e30sVXIoUlplKCksZnVuY3Rpb24oZCl7SmwuZWRpdG9yc1siIi5jb25jYXQobGQoZCksIkVkaXRvciIpXT1sX2Uo''@;'; put 'put ''ZCl9KSxKbC5lZGl0b3JzLnJlZ2lzdGVyRWRpdG9yPXNkLEpsLmVkaXRvcnMuZ2V0RWRpdG9yPWxfZSxKbC5yZW5kZXJlcnM9bnVsbCE9PShDbWU9SmwucmVuZGVyZXJzKSYmdm9pZCAwIT09Q21lP0NtZTp7fSxVcihVemUoKSxmdW5jdGlvbihkKXt2YXIgZz1XM2UoZCk7ImJhc2UiPT09ZCYm''@;'; put 'put ''KEpsLnJlbmRlcmVycy5jZWxsRGVjb3JhdG9yPWcpLEpsLnJlbmRlcmVyc1siIi5jb25jYXQobGQoZCksIlJlbmRlcmVyIildPWd9KSxKbC5yZW5kZXJlcnMucmVnaXN0ZXJSZW5kZXJlcj1NZyxKbC5yZW5kZXJlcnMuZ2V0UmVuZGVyZXI9VzNlLEpsLnZhbGlkYXRvcnM9bnVsbCE9PShrbWU9''@;'; put 'put ''SmwudmFsaWRhdG9ycykmJnZvaWQgMCE9PWttZT9rbWU6e30sVXIoWHplKCksZnVuY3Rpb24oZCl7SmwudmFsaWRhdG9yc1siIi5jb25jYXQobGQoZCksIlZhbGlkYXRvciIpXT1ZM2UoZCl9KSxKbC52YWxpZGF0b3JzLnJlZ2lzdGVyVmFsaWRhdG9yPWdPLEpsLnZhbGlkYXRvcnMuZ2V0VmFs''@;'; put 'put ''aWRhdG9yPVkzZSxKbC5wbHVnaW5zPW51bGwhPT0oU21lPUpsLnBsdWdpbnMpJiZ2b2lkIDAhPT1TbWU/U21lOnt9LFVyKEczZSgpLGZ1bmN0aW9uKGQpe0psLnBsdWdpbnNbZF09V1ooZCl9KSxKbC5wbHVnaW5zWyIiLmNvbmNhdChsZChZcy5QTFVHSU5fS0VZKSwiUGx1Z2luIildPVlzLEps''@;'; put 'put ''LnBsdWdpbnMucmVnaXN0ZXJQbHVnaW49T3MsSmwucGx1Z2lucy5nZXRQbHVnaW49V1o7Y29uc3QgTzV0PUpsLGJMZT0oZCxnLGgpPT57Zm9yKGxldCB2IG9mIGQpe2NvbnN0IHk9Zy5maW5kKEk9PkkuZGF0YT09PXYuTkFNRSksQz1oLnZhcnNbdi5OQU1FXTtDJiYodi5UWVBFPVsiREFURSIs''@;'; put 'put ''IkRBVEVUSU1FIiwiVElNRSJdLmluY2x1ZGVzKHYuRERUWVBFKT8ibnVtIjpDLnR5cGUpLHkmJnYuREVTQyYmKHkuZGVzYz12LkRFU0MpLHkmJkMubGVuZ3RoJiYoeS5sZW5ndGg9cGFyc2VJbnQoQy5sZW5ndGgpKSx5JiZ2LkNMU19SVUxFJiYoeS5jbHNSdWxlPXYuQ0xTX1JVTEUpfXJldHVy''@;'; put 'put ''biBnfTtmdW5jdGlvbiBNbWUoZCxnKXtpZihudWxsPT1kfHwhaXNOYU4oZCkmJmlzRmluaXRlKGQpKXJldHVybiBnJiZnKCEwKSwhMDtjb25zdCBoPSgwLGJ3LmlzU3BlY2lhbE1pc3NpbmcpKGQpO3JldHVybiBnJiZnKGgpLGh9Y29uc3QgX0xlPXtDQVNFOihkLGcpPT57c3dpdGNoKGcpe2Nh''@;'; put 'put ''c2UiVVBDQVNFIjpyZXR1cm4hIVt2b2lkIDAsbnVsbF0uaW5jbHVkZXMoZCl8fCJzdHJpbmciPT10eXBlb2YgZCYmZC50b1N0cmluZygpPT09ZC50b1N0cmluZygpLnRvVXBwZXJDYXNlKCk7Y2FzZSJMT1dDQVNFIjpyZXR1cm4hIVt2b2lkIDAsbnVsbF0uaW5jbHVkZXMoZCl8fCJzdHJpbmci''@;'; put 'put ''PT10eXBlb2YgZCYmZC50b1N0cmluZygpPT09ZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCl9cmV0dXJuITB9LE1JTlZBTDooZCxnKT0+e2NvbnN0IGg9TW1lKGQpLHY9cGFyc2VGbG9hdChkKTtyZXR1cm4oIWh8fCFpc05hTih2KSkmJnY+PU51bWJlcihnLnRvU3RyaW5nKCkpfSxNQVhWQUw6''@;'; put 'put ''KGQsZyk9Pntjb25zdCBoPU1tZShkKSx2PXBhcnNlRmxvYXQoZCk7cmV0dXJuISghaHx8IWlzTmFOKHYpKXx8djw9TnVtYmVyKGcudG9TdHJpbmcoKSl9LE5PVE5VTEw6KGQsZyk9Pm51bGwhPWQmJmQudG9TdHJpbmcoKS5sZW5ndGg+MH07Y2xhc3MgRjV0e2NvbnN0cnVjdG9yKGcsaCx2LHks''@;'; put 'put ''QyxJKXt0aGlzLnJ1bGVzPVtdLHRoaXMuZHFydWxlcz1bXSx0aGlzLmRxZGF0YT1bXSx0aGlzLmhpZGRlbkNvbHVtbnM9W10sdGhpcy5wcmltYXJ5S2V5cz1bXSx0aGlzLmV4ZWN1dGVIb3RWYWxpZGF0b3I9KFosdWUsX2UpPT57Y29uc3QgQmU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWdu''@;'; put 'put ''KHt9LFopLHt2YWxpZGF0b3I6dm9pZCAwLGNvcnJlY3RGb3JtYXQ6ITEscm93OjAsY29sOjAsaW5zdGFuY2U6bmV3IE81dChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx7fSksdmlzdWFsUm93OjAsdmlzdWFsQ29sOjAscHJvcDowfSk7bnVsbD09dWUmJih1ZT0iIiksWiYmWi52YWxp''@;'; put 'put ''ZGF0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiBaLnZhbGlkYXRvcj9aLnZhbGlkYXRvci5jYWxsKEJlLHVlLE5lPT57X2UmJl9lKE5lKX0pOl9lJiZfZSghMSl9LHRoaXMuc2FzcGFyYW1zPWcsdGhpcy5ob3RJbnN0YW5jZT1JLHRoaXMucnVsZXM9KGQ9Pnt0cnl7cmV0dXJuIEpTT04ucGFyc2Uo''@;'; put 'put ''YFske2R9XWApfWNhdGNoKGcpe3JldHVybltdfX0pKGcuQ09MVFlQRSksdGhpcy5ydWxlcz1iTGUodix0aGlzLnJ1bGVzLGgpLHRoaXMuZHFydWxlcz15LHRoaXMuZHFkYXRhPUMsdGhpcy5wcmltYXJ5S2V5cz1nLlBLLnNwbGl0KCIgIiksdGhpcy51cGRhdGVEcURhdGEoKSx0aGlzLnNldHVw''@;'; put 'put ''VmFsaWRhdGlvbnMoKX1nZXRSdWxlcygpe3JldHVybiB0aGlzLnJ1bGVzfWdldFJ1bGUoZyl7Y29uc3QgaD10aGlzLmdldFJ1bGVJbmRleChnKTtyZXR1cm4gdGhpcy5ydWxlc1toXX1nZXRIaWRkZW5Db2x1bW5zKCl7cmV0dXJuIHRoaXMuaGlkZGVuQ29sdW1uc311cGRhdGVSdWxlKGcsaCl7''@;'; put 'put ''bGV0IHY9dGhpcy5nZXRSdWxlSW5kZXgoZyk7dGhpcy5ydWxlc1t2XT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5ydWxlc1t2XSksaCl9cmVtb3ZlUnVsZShnKXtjb25zdCBoPXRoaXMuZ2V0UnVsZUluZGV4KGcpO3RoaXMucnVsZXMuc3BsaWNlKGgsMSl9Z2V0RHFEZXRh''@;'; put 'put ''aWxzKGcpe3JldHVybiBnP3RoaXMuZHFydWxlcy5maWx0ZXIoaD0+aC5CQVNFX0NPTD09PWcpOnRoaXMuZHFydWxlc31pc0RxQ29sKGcpe3JldHVybiEhdGhpcy5kcXJ1bGVzLmZpbmQoaD0+aC5CQVNFX0NPTD09PWcpfWhhc0RxUnVsZXMoZyxoLHY9ITEpe3JldHVybiB2P3RoaXMuZHFydWxl''@;'; put 'put ''cy5maWx0ZXIoeT0+eS5CQVNFX0NPTD09PWcmJmguaW5jbHVkZXMoeS5SVUxFX1RZUEUpKS5sZW5ndGg9PT1oLmxlbmd0aDohIXRoaXMuZHFydWxlcy5maW5kKHk9PnkuQkFTRV9DT0w9PT1nJiZoLmluY2x1ZGVzKHkuUlVMRV9UWVBFKSl9Z2V0RHFEcm9wZG93blNvdXJjZShnKXtsZXQgaD1b''@;'; put 'put ''XTtyZXR1cm4gdGhpcy5kcXJ1bGVzLmZvckVhY2godj0+e3YuQkFTRV9DT0wudG9TdHJpbmcoKT09PWcuZGF0YSYmZy5kYXRhLnRvU3RyaW5nKCkmJlsiSEFSRFNFTEVDVCIsIlNPRlRTRUxFQ1QiLCJIQVJEU0VMRUNUX0hPT0siLCJTT0ZUU0VMRUNUX0hPT0siXS5pbmNsdWRlcyh2LlJVTEVf''@;'; put 'put ''VFlQRS50b1N0cmluZygpKSYmdGhpcy5kcWRhdGEuZmlsdGVyKHk9PnkuQkFTRV9DT0w9PT12LkJBU0VfQ09MKS5mb3JFYWNoKHk9PntoLnB1c2goZy50eXBlJiYibnVtZXJpYyI9PT1nLnR5cGU/TnVtYmVyKHkuUlVMRV9EQVRBKTp5LlJVTEVfREFUQSl9KX0pLGh9dXBkYXRlRHFEYXRhKCl7''@;'; put 'put ''dGhpcy5kcWRhdGEubGVuZ3RoPjAmJihkPT57Y29uc3QgZz1bXTtyZXR1cm4gdGhpcy5kcWRhdGEuZm9yRWFjaChoPT57Zy5pbmNsdWRlcyhoLkJBU0VfQ09MKXx8Zy5wdXNoKGguQkFTRV9DT0wpfSksZ30pKCkuZm9yRWFjaChoPT57bGV0IHY9ITE7dGhpcy5kcXJ1bGVzLmxlbmd0aD4wJiZ0''@;'; put 'put ''aGlzLmRxcnVsZXMuZm9yRWFjaCh5PT57eS5CQVNFX0NPTD09PWgmJigiU09GVFNFTEVDVCI9PT15LlJVTEVfVFlQRXx8IkhBUkRTRUxFQ1QiPT09eS5SVUxFX1RZUEUpJiYodj0hMCl9KSx2fHx0aGlzLmRxcnVsZXMucHVzaCh7QkFTRV9DT0w6aCxSVUxFX1RZUEU6IlNPRlRTRUxFQ1QiLFJV''@;'; put 'put ''TEVfVkFMVUU6aCxYOjF9KX0pfXNldHVwVmFsaWRhdGlvbnMoKXt2YXIgZztmb3IobGV0IGg9MDtoPHRoaXMucnVsZXMubGVuZ3RoO2grKyl7Y29uc3Qgdj10aGlzLnJ1bGVzW2hdLmRhdGF8fCIiO2lmKCJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18iIT09dil7aWYodGhpcy5pc0Rx''@;'; put 'put ''Q29sKHYpKXtsZXQgQz10aGlzLmdldERxRHJvcGRvd25Tb3VyY2UodGhpcy5ydWxlc1toXSk7Qy5sZW5ndGg+MCYmKHRoaXMucnVsZXNbaF0uc291cmNlPUMsdGhpcy5ydWxlc1toXS50eXBlPSJhdXRvY29tcGxldGUiLHRoaXMucnVsZXNbaF0uZmlsdGVyPSExKSx0aGlzLmhhc0RxUnVsZXMo''@;'; put 'put ''dixbIlNPRlRTRUxFQ1QiXSkmJih0aGlzLnJ1bGVzW2hdLnN0cmljdD0hMSksdGhpcy5oYXNEcVJ1bGVzKHYsWyJIQVJEU0VMRUNUIl0pJiYodGhpcy5ydWxlc1toXS5zdHJpY3Q9ITApLHRoaXMuaGFzRHFSdWxlcyh2LFsiU09GVFNFTEVDVF9IT09LIl0pJiYodGhpcy5ydWxlc1toXS5zdHJp''@;'; put 'put ''Y3Q9ITEpLHRoaXMuaGFzRHFSdWxlcyh2LFsiSEFSRFNFTEVDVF9IT09LIl0pJiYodGhpcy5ydWxlc1toXS5zdHJpY3Q9ITApLHRoaXMuaGFzRHFSdWxlcyh2LFsiTk9UTlVMTCJdKSYmKHRoaXMucnVsZXNbaF0uYWxsb3dFbXB0eT0hMSl9InRydWUiPT09dGhpcy5ydWxlc1toXS5jb3JyZWN0''@;'; put 'put ''Rm9ybWF0JiYodGhpcy5ydWxlc1toXS5jb3JyZWN0Rm9ybWF0PSEwKSx0aGlzLnNldERlZmF1bHRWYWxpZGF0b3IodGhpcyxoKSx0aGlzLnNldENvbHVtbkxldmVsU2VjdXJpdHkoaCl9fW51bGwhPT0oZz10aGlzLnNhc3BhcmFtcykmJnZvaWQgMCE9PWcmJmcuQ0xTX0ZMQUcmJnRoaXMuaGlk''@;'; put 'put ''ZGVuQ29sdW1ucy5wdXNoKDApfXNldERlZmF1bHRWYWxpZGF0b3IoZyxoKXt0aGlzLnJ1bGVzW2hdLnZhbGlkYXRvcj1mdW5jdGlvbih2LHkpe3ZhciBDO2NvbnN0IEk9bnVsbD09PShDPWcucnVsZXNbaF0uZGF0YSl8fHZvaWQgMD09PUM/dm9pZCAwOkMudG9TdHJpbmcoKSxaPWcucnVsZXNb''@;'; put 'put ''aF0udHlwZXx8IiI7bGV0IHVlPW51bGw7cmV0dXJuImF1dG9jb21wbGV0ZSIhPT10aGlzLmVkaXRvcnx8KGcuZ2V0SGFuZHNvbnRhYmxlVmFsaWRhdG9yKCJhdXRvY29tcGxldGUiKS5jYWxsKHRoaXMsdixfZT0+e3VlPV9lfSksdWUpPyhnLmdldEhhbmRzb250YWJsZVZhbGlkYXRvcihaKS5j''@;'; put 'put ''YWxsKHRoaXMsdixfZT0+e3VlPV9lfSksdWU/Zy5sZW5ndGhDaGVjayh2LGcucnVsZXNbaF0ubGVuZ3RoLFopP2cuaXNEcUNvbChJfHwiIikmJiEoKGQsZyk9Pntmb3IobGV0IGggb2YgZClpZihfTGVbaC5SVUxFX1RZUEVdJiYhX0xlW2guUlVMRV9UWVBFXShnLGguUlVMRV9WQUxVRSkpcmV0''@;'; put 'put ''dXJuIGNvbnNvbGUud2FybihgRFEgSW52YWxpZCBSZWFzb246ICR7aC5SVUxFX1RZUEV9XG5WYWx1ZTogJHtnfSlcblJ1bGUgVmFsdWU6ICR7aC5SVUxFX1ZBTFVFLmxlbmd0aD4wJiYiICIhPT1oLlJVTEVfVkFMVUU/aC5SVUxFX1ZBTFVFOiJOb3QgZGVmaW5lZCJ9YCksITE7cmV0dXJuITB9''@;'; put 'put ''KShnLmdldERxRGV0YWlscyhJfHwiIiksdik/KGNvbnNvbGUud2FybihgRFEgVmFsaWRhdGlvbiAtIGludmFsaWQgKFZhbHVlOiAke3Z9KWApLHZvaWQgeSghMSkpOnZvaWQgeSghMCk6KGNvbnNvbGUud2FybihgTGVuZ3RoIFZhbGlkYXRpb24gLSBpbnZhbGlkIChWYWx1ZTogJHt2fSlgKSx2''@;'; put 'put ''b2lkIHkoITEpKTooY29uc29sZS53YXJuKGBIT1QgTmF0aXZlIFZhbGlkYXRpb24gLSBpbnZhbGlkIChWYWx1ZTogJHt2fSlgKSx2b2lkIHkoITEpKSk6KGNvbnNvbGUud2FybihgSE9UIE5hdGl2ZSBWYWxpZGF0aW9uIChhdXRvY29tcGxldGUpIC0gaW52YWxpZCAoVmFsdWU6ICR7dn0pYCks''@;'; put 'put ''dm9pZCB5KCExKSl9fWxlbmd0aENoZWNrKGcsaCx2KXtpZigoMCxidy5pc1NwZWNpYWxNaXNzaW5nKShnKXx8bnVsbD09Z3x8bnVsbD09aClyZXR1cm4hMDtpZigibnVtZXJpYyI9PT12KXtpZig4PT09aClyZXR1cm4hMDtpZihoPDN8fGg+OHx8IU51bWJlci5pc0ludGVnZXIoaCkpcmV0dXJu''@;'; put 'put ''IGNvbnNvbGUud2FybigiaW52YWxpZCBsZW5ndGggZnJvbSBTQVMsIHJ1bGUgbGVuZ3RoIGNhbiBvbmx5IGJlIGFuIGludGVnZXIgYmV0d2VlbiAzLTgiKSwhMTtjb25zdCB5PU51bWJlcihnKT09PWcmJmclMSE9MDtpZihoPDgmJnkpcmV0dXJuIGNvbnNvbGUud2FybigicmVkdWNlZCBsZW5n''@;'; put 'put ''dGggbnVtZXJpY3MgY2Fubm90IGNvbnRhaW4gZGVjaW1hbHMgZWxzZSBwcmVjaXNpb24gd2lsbCBiZSBhZmZlY3RlZCIpLCExO3N3aXRjaChoKXtjYXNlIDM6cmV0dXJuIGc8PTgxOTI7Y2FzZSA0OnJldHVybiBnPD0yMDk3MTUyO2Nhc2UgNTpyZXR1cm4gZzw9NTM2ODcwOTEyO2Nhc2UgNjpy''@;'; put 'put ''ZXR1cm4gZzw9MTM3NDM4OTUzNDcyO2Nhc2UgNzpyZXR1cm4gZzw9MzUxODQzNzIwODg4MzJ9fXJldHVybiBnLnRvU3RyaW5nKCkubGVuZ3RoPD1ofWdldEhhbmRzb250YWJsZVZhbGlkYXRvcihnKXtzd2l0Y2goZyl7Y2FzZSJhdXRvY29tcGxldGUiOnJldHVybiBkejtjYXNlIm51bWVyaWMi''@;'; put 'put ''OnJldHVybiBNbWU7Y2FzZSJkYXRlIjpyZXR1cm4gTXRlO2Nhc2UidGltZSI6cmV0dXJuIEV0ZTtkZWZhdWx0OnJldHVybihoLHYpPT52P3YoITApOm51bGx9fWdldFJ1bGVJbmRleChnKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGc/Zzp0aGlzLnJ1bGVzLmZpbmRJbmRleChoPT5oLmRhdGE9''@;'; put 'put ''PT1nKX1zZXRDb2x1bW5MZXZlbFNlY3VyaXR5KGcpe3ZhciBoO2lmKG51bGw9PT0oaD10aGlzLnNhc3BhcmFtcyl8fHZvaWQgMD09PWh8fCFoLkNMU19GTEFHKXJldHVybjtjb25zdCB2PXRoaXMucnVsZXNbZ107aWYodGhpcy5wcmltYXJ5S2V5cy5pbmNsdWRlcyh2LmRhdGEpJiYodi5jbHNS''@;'; put 'put ''dWxlPSJSRUFEIiksIkhJREUiPT09di5jbHNSdWxlJiZ0aGlzLmhpZGRlbkNvbHVtbnMucHVzaChnKSwiUkVBRCI9PT12LmNsc1J1bGUmJih2LnJlYWRPbmx5PSEwKSwiRURJVCI9PT12LmNsc1J1bGUpe3YucmVhZE9ubHk9ITE7Y29uc3QgeT10aGlzLmhpZGRlbkNvbHVtbnMuaW5kZXhPZihn''@;'; put 'put ''KTt0aGlzLmhpZGRlbkNvbHVtbnMuc3BsaWNlKHksMSl9fX1jb25zdCBWbmU9e251bWVyaWM6MCxkZWZhdWx0OiIifSxINXQ9KGQsZyk9PmQ/ImF1dG9jb21wbGV0ZSI9PT1kP2cmJmcuc291cmNlP2cuc291cmNlWzBdOltdOlZuZS5oYXNPd25Qcm9wZXJ0eShkKT9WbmVbZF06Vm5lLmRlZmF1''@;'; put 'put ''bHQ6Vm5lLmRlZmF1bHQsQ0xlPWQ9PntsZXQgZz0oIjAiK2QuZ2V0VVRDSG91cnMoKSkuc2xpY2UoLTIpKyI6IjtyZXR1cm4gZz1nKygiMCIrZC5nZXRVVENNaW51dGVzKCkpLnNsaWNlKC0yKSsiOiIsZys9KCIwIitkLmdldFVUQ1NlY29uZHMoKSkuc2xpY2UoLTIpLGd9LEVtZT1kPT5kLmdl''@;'; put 'put ''dEZ1bGxZZWFyKCkrIi0iKygiMCIrKGQuZ2V0TW9udGgoKSsxKSkuc2xpY2UoLTIpKyItIisoIjAiK2QuZ2V0RGF0ZSgpKS5zbGljZSgtMikseG1lPWQ9Pm5ldyBEYXRlKE1hdGgucm91bmQoODY0MDAqKGQtMjU1NjkpKjFlMykpLGo1dD0oZCxnKT0+e2NvbnN0IGg9W10sdj1bXTtyZXR1cm4g''@;'; put 'put ''Zy5mb3JFYWNoKHk9PnstMT09PWQuaW5kZXhPZih5KT9oLnB1c2goeSk6di5wdXNoKHkpfSksW2gsdl19LFo1dD0oZCxnLGgsdix5LEMsSSk9PihnLmlubmVySFRNTD1gJHtDP0MudG9TdHJpbmcoKToiIn0gPGNkcy1pY29uIHNoYXBlPSJleGNsYW1hdGlvbi1jaXJjbGUiIHN0YXR1cz0id2Fy''@;'; put 'put ''bmluZyI+PC9jZHMtaWNvbj5gLGcpLFRtZT0oZCxnLGgsdix5LEMsSSk9PihnLmlubmVySFRNTD1DfHwiIixnKSx6NXQ9KGQsZyxoLHYseSxDLEkpPT4oZy5pbm5lckhUTUw9YCR7Qz9DLnRvU3RyaW5nKCk6IiJ9IDxzcGFuIGNsYXNzPSJzcGlubmVyIHNwaW5uZXItc20gdmVydGljYWwtYWxp''@;'; put 'put ''Z24tbWlkZGxlIj48L3NwYW4+YCxnKSxJbWU9ZD0+ISEvXi17MCwxfVxkKyQvLnRlc3QoZCksa0xlPWQ9PiEhL15cZCtcLlxkKyQvLnRlc3QoZCksTU09dm9pZCAwLFc1dD1bImVuLUdCIixbWyJhIiwicCJdLFsiYW0iLCJwbSJdLE1NXSxbWyJhbSIsInBtIl0sTU0sTU1dLFtbIlMiLCJNIiwi''@;'; put 'put ''VCIsIlciLCJUIiwiRiIsIlMiXSxbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLFsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJG''@;'; put 'put ''ciIsIlNhIl1dLE1NLFtbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdLFsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwdCIsIk9jdCIsIk5vdiIsIkRlYyJdLFsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFy''@;'; put 'put ''Y2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXV0sTU0sW1siQiIsIkEiXSxbIkJDIiwiQUQiXSxbIkJlZm9yZSBDaHJpc3QiLCJBbm5vIERvbWluaSJdXSwxLFs2LDBdLFsiZGQvTU0veSIs''@;'; put 'put ''ImQgTU1NIHkiLCJkIE1NTU0geSIsIkVFRUUsIGQgTU1NTSB5Il0sWyJISDptbSIsIkhIOm1tOnNzIiwiSEg6bW06c3MgeiIsIkhIOm1tOnNzIHp6enoiXSxbInsxfSwgezB9IixNTSwiezF9ICdhdCcgezB9IixNTV0sWyIuIiwiLCIsIjsiLCIlIiwiKyIsIi0iLCJFIiwiXHhkNyIsIlx1MjAz''@;'; put 'put ''MCIsIlx1MjIxZSIsIk5hTiIsIjoiXSxbIiMsIyMwLiMjIyIsIiMsIyMwJSIsIlx4YTQjLCMjMC4wMCIsIiNFMCJdLCJHQlAiLCJceGEzIiwiQnJpdGlzaCBQb3VuZCIse0pQWTpbIkpQXHhhNSIsIlx4YTUiXSxVU0Q6WyJVUyQiLCIkIl19LCJsdHIiLGZ1bmN0aW9uIEc1dChkKXtjb25zdCBo''@;'; put 'put ''PU1hdGguZmxvb3IoTWF0aC5hYnMoZCkpLHY9ZC50b1N0cmluZygpLnJlcGxhY2UoL15bXi5dKlwuPy8sIiIpLmxlbmd0aDtyZXR1cm4gMT09PWgmJjA9PT12PzE6NX1dO2xldCBTTGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMudGVtcGxhdGVSZWY9aCx0aGlzLnZjUmVm''@;'; put 'put ''PXYsdGhpcy5jb250ZXh0PXskaW1wbGljaXQ6bnVsbCxuZ1ZhcjpudWxsfSx0aGlzLmhhc1ZpZXc9ITF9c2V0IG5nVmFyKGgpe3RoaXMuY29udGV4dC4kaW1wbGljaXQ9dGhpcy5jb250ZXh0Lm5nVmFyPWgsdGhpcy5oYXNWaWV3fHwodGhpcy52Y1JlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhp''@;'; put 'put ''cy50ZW1wbGF0ZVJlZix0aGlzLmNvbnRleHQpLHRoaXMuaGFzVmlldz0hMCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KHFyKSxLdChVaSkpfSxkLlx1MDI3NWRpcj1XaSh7dHlwZTpkLHNlbGVjdG9yczpbWyIiLCJuZ1ZhciIsIiJdXSxpbnB1''@;'; put 'put ''dHM6e25nVmFyOiJuZ1ZhciJ9fSksZH0pKCk7Y29uc3QgWTV0PVsiaW5wdXQiXSxVNXQ9ZnVuY3Rpb24oZCxnKXtyZXR1cm57IndpZHRoLnB4IjpkLCJtYXgtaGVpZ2h0LnB4IjpnfX0sUTV0PVsiKiJdO2xldCBKNXQ9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmNkcj1oLHRo''@;'; put 'put ''aXMuaW5wdXRJZD0iIix0aGlzLnBsYWNlaG9sZGVyPSIiLHRoaXMudmFsdWU9IiIsdGhpcy5kaXNhYmxlZD0hMSx0aGlzLnR5cGU9InRleHQiLHRoaXMuYXV0b2NvbXBsZXRlPSJvZmYiLHRoaXMudGFiaW5kZXg9IiIsdGhpcy5lbWl0T25seVNlbGVjdGVkPSExLHRoaXMub25JbnB1dEtleWRv''@;'; put 'put ''d249bmV3IGFyLHRoaXMub25JbnB1dENoYW5nZT1uZXcgYXIsdGhpcy52YWx1ZUNoYW5nZT1uZXcgYXIsdGhpcy5kYXRhbGlzdE9wZW49ITEsdGhpcy5pbnB1dEZvY3VzZWQ9ITEsdGhpcy5pbnB1dENsaWVudFJlY3Q9e30sdGhpcy5wcmV2ZW50RGF0YWxpc3RDbG9zZT0hMX1uZ09uSW5pdCgp''@;'; put 'put ''e31uZ0FmdGVyVmlld0luaXQoKXtzZXRUaW1lb3V0KCgpPT57dGhpcy5jYWxjdWxhdGVJbnB1dFBvc2l0aW9uKCl9LDUwMCl9b25JbnB1dEZpcmVkKGgsdil7dGhpcy5kYXRhbGlzdE9wZW49ITAsdGhpcy51bnNlbGVjdEFsbE9wdGlvbnMoKSx0aGlzLmZpbHRlck9wdGlvbnNMaXN0KCksKCF0''@;'; put 'put ''aGlzLmVtaXRPbmx5U2VsZWN0ZWR8fHYpJiYodGhpcy5vbklucHV0Q2hhbmdlLmVtaXQoe3RhcmdldDp7dmFsdWU6dGhpcy52YWx1ZX19KSx0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSkpfW9uSW5wdXRDbGljayhoKXt0aGlzLmRhdGFsaXN0T3Blbj0hMH1yZXNldERhdGFsaXN0''@;'; put 'put ''RmlsdGVyKCl7dGhpcy5maWx0ZXJPcHRpb25zTGlzdCghMCl9b25JbnB1dEZvY3VzaW4oaCl7dGhpcy5pbnB1dEZvY3VzZWQ9ITB9b25JbnB1dEZvY3Vzb3V0KGgpe3RoaXMuaW5wdXRGb2N1c2VkPSExLHRoaXMuc2V0VG9DbG9zZURhdGFsaXN0KCl9ZmlsdGVyT3B0aW9uc0xpc3QoaCl7Y29u''@;'; put 'put ''c3Qgdj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAjZGF0YWxpc3RfJHt0aGlzLmlucHV0SWR9IG9wdGlvbmApO2ZvcihsZXQgeT0wO3k8di5sZW5ndGg7eSsrKXtjb25zdCBDPXZbeV07aWYoMD09PXRoaXMudmFsdWUubGVuZ3RoKXtDLmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpO2Nv''@;'; put 'put ''bnRpbnVlfWlmKGgpe0MuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7Y29udGludWV9Y29uc3QgdWU9KEMuaW5uZXJUZXh0fHwiIikrKEMudmFsdWV8fCIiKTtudWxsIT11ZSYmdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnZhbHVlLnRvTG93ZXJDYXNlKCkpP0MuY2xhc3NMaXN0''@;'; put 'put ''LnJlbW92ZSgiaGlkZGVuIik6Qy5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKX19c2V0VG9DbG9zZURhdGFsaXN0KCl7dGhpcy5kYXRhbGlzdENsb3NlVGltZW91dD1zZXRUaW1lb3V0KCgpPT57dGhpcy5wcmV2ZW50RGF0YWxpc3RDbG9zZXx8KHRoaXMuZGF0YWxpc3RPcGVuPSExLHRoaXMudW5z''@;'; put 'put ''ZWxlY3RBbGxPcHRpb25zKCksdGhpcy5yZXNldERhdGFsaXN0RmlsdGVyKCkpfSwxMDApfWNhbGN1bGF0ZUlucHV0UG9zaXRpb24oKXtjb25zdCBoPXRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsdj1udWxsPT1oP3ZvaWQgMDpoLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMu''@;'; put 'put ''aW5wdXRDbGllbnRSZWN0PXt3aWR0aDp2LndpZHRoLGJvdHRvbTp2LmJvdHRvbX0sdGhpcy5pbm5lckhlaWdodD13aW5kb3cuaW5uZXJIZWlnaHR9b25EYXRhTGlzdE1vdXNlRW50ZXIoaCl7dGhpcy5wcmV2ZW50RGF0YWxpc3RDbG9zZT0hMH1vbkRhdGFMaXN0TW91c2VMZWF2ZShoKXt0aGlz''@;'; put 'put ''LnByZXZlbnREYXRhbGlzdENsb3NlPSExLHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX1vbkRhdGFMaXN0U2Nyb2xsKGgpe3RoaXMuc2V0VG9DbG9zZURhdGFsaXN0KCl9b25EYXRhTGlzdENsaWNrKGgpe2NvbnN0IHY9aC50YXJnZXQ7aWYoIk9QVElPTiIhPT12LnRh''@;'; put 'put ''Z05hbWUpcmV0dXJuO2xldCB5PXYuaW5uZXJUZXh0LEM9di52YWx1ZTsoeXx8QykmJihDfHwoQz15KSksQyYmKHRoaXMucHJldmVudERhdGFsaXN0Q2xvc2U9ITEsdGhpcy52YWx1ZT1DLHRoaXMub25JbnB1dEZpcmVkKG51bGwsITApLHRoaXMuc2V0VG9DbG9zZURhdGFsaXN0KCkpfW9uTWFp''@;'; put 'put ''bktleWRvd24oaCl7c3dpdGNoKGgua2V5KXtjYXNlIkFycm93VXAiOnRoaXMuZ2V0T3B0aW9uc01vdmVGb2N1cygidXAiKTticmVhaztjYXNlIkFycm93RG93biI6dGhpcy5nZXRPcHRpb25zTW92ZUZvY3VzKCJkb3duIik7YnJlYWs7Y2FzZSJFbnRlciI6dGhpcy5zZWxlY3RGb2N1c2VkT3B0''@;'; put 'put ''aW9uKCk7YnJlYWs7Y2FzZSJFc2NhcGUiOnRoaXMuc2V0VG9DbG9zZURhdGFsaXN0KCl9fXVuc2VsZWN0QWxsT3B0aW9ucygpe2NvbnN0IGg9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgI2RhdGFsaXN0XyR7dGhpcy5pbnB1dElkfSBvcHRpb25gKTtmb3IobGV0IHY9MDt2PGgubGVuZ3Ro''@;'; put 'put ''O3YrKyloW3ZdLmNsYXNzTGlzdC5yZW1vdmUoImZvY3VzZWQiKX1zZWxlY3RGb2N1c2VkT3B0aW9uKCl7Y29uc3QgaD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjZGF0YWxpc3RfJHt0aGlzLmlucHV0SWR9IG9wdGlvbi5mb2N1c2VkYCk7aCYmdGhpcy5vbkRhdGFMaXN0Q2xpY2soe3Rhcmdl''@;'; put 'put ''dDpofSksdGhpcy5zZXRUb0Nsb3NlRGF0YWxpc3QoKX1nZXRPcHRpb25zTW92ZUZvY3VzKGgpe2NvbnN0IHY9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgI2RhdGFsaXN0XyR7dGhpcy5pbnB1dElkfSBvcHRpb246bm90KC5oaWRkZW4pYCk7bGV0IHk9MDtmb3IobGV0IEM9MDtDPHYubGVu''@;'; put 'put ''Z3RoO0MrKyl7Y29uc3QgST12W0NdO2lmKEkuY2xhc3NMaXN0LmNvbnRhaW5zKCJmb2N1c2VkIikpe3k9ImRvd24iPT09aD9DKzE6Qy0xLHk8MCYmKHk9di5sZW5ndGgtMSkseT52Lmxlbmd0aC0xJiYoeT0wKSxJLmNsYXNzTGlzdC5yZW1vdmUoImZvY3VzZWQiKTticmVha319dlt5XS5jbGFz''@;'; put 'put ''c0xpc3QuYWRkKCJmb2N1c2VkIil9b25SZXNpemUoaCl7dGhpcy5jYWxjdWxhdGVJbnB1dFBvc2l0aW9uKCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KGQxKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1hdXRv''@;'; put 'put ''Y29tcGxldGUiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGgsdil7aWYoMSZoJiZ2byhZNXQsNSksMiZoKXtsZXQgeTtIaSh5PSRpKCkpJiYodi5pbnB1dEVsZW1lbnQ9eS5maXJzdCl9fSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oaCx2KXsxJmgmJkduKCJyZXNpemUiLGZ1bmN0aW9uKEMpe3JldHVy''@;'; put 'put ''biB2Lm9uUmVzaXplKEMpfSwwLExiKX0saW5wdXRzOntpbnB1dElkOiJpbnB1dElkIixwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIiLHZhbHVlOiJ2YWx1ZSIsZGlzYWJsZWQ6ImRpc2FibGVkIix0eXBlOiJ0eXBlIixhdXRvY29tcGxldGU6ImF1dG9jb21wbGV0ZSIsdGFiaW5kZXg6InRhYmlu''@;'; put 'put ''ZGV4IixlbWl0T25seVNlbGVjdGVkOiJlbWl0T25seVNlbGVjdGVkIn0sb3V0cHV0czp7b25JbnB1dEtleWRvd246Im9uSW5wdXRLZXlkb3duIixvbklucHV0Q2hhbmdlOiJvbklucHV0Q2hhbmdlIix2YWx1ZUNoYW5nZToidmFsdWVDaGFuZ2UifSxuZ0NvbnRlbnRTZWxlY3RvcnM6UTV0LGRl''@;'; put 'put ''Y2xzOjYsdmFyczoxNCxjb25zdHM6W1sxLCJhdXRvY29tcGxldGUtd3JhcHBlciIsMywia2V5ZG93biJdLFsidHlwZSIsInRleHQiLCJhdXRvY29tcGxldGUiLCJvZmYiLCJhdXRvZm9jdXMiLCIiLCJ0YWJpbmRleCIsIjAiLDEsImlucHV0LXZhbCIsMywiaWQiLCJwbGFjZWhvbGRlciIsIm5n''@;'; put 'put ''TW9kZWwiLCJkaXNhYmxlZCIsIm5nTW9kZWxDaGFuZ2UiLCJjbGljayIsImZvY3VzIiwiZm9jdXNvdXQiXSxbImlucHV0IiwiIl0sWzEsIm92ZXJsYXkiXSxbMSwiZGF0YWxpc3QiLDMsIm5nU3R5bGUiLCJpZCIsImNsaWNrIiwibW91c2VlbnRlciIsIm1vdXNlbGVhdmUiLCJzY3JvbGwiXV0s''@;'; put 'put ''dGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihLMCgpLG50KDAsImRpdiIsMCksR24oImtleWRvd24iLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uTWFpbktleWRvd24oQyl9KSxudCgxLCJpbnB1dCIsMSwyKSxHbigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYudmFsdWU9''@;'; put 'put ''Q30pKCJjbGljayIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25JbnB1dENsaWNrKEMpfSkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uSW5wdXRGaXJlZChDKX0pKCJmb2N1cyIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25JbnB1dEZvY3VzaW4oQyl9KSgiZm9jdXNvdXQi''@;'; put 'put ''LGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uSW5wdXRGb2N1c291dChDKX0pLG90KCksQ3IoMywiZGl2IiwzKSxudCg0LCJkaXYiLDQpLEduKCJjbGljayIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25EYXRhTGlzdENsaWNrKEMpfSkoIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9u''@;'; put 'put ''RGF0YUxpc3RNb3VzZUVudGVyKEMpfSkoIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uRGF0YUxpc3RNb3VzZUxlYXZlKEMpfSkoInNjcm9sbCIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25EYXRhTGlzdFNjcm9sbChDKX0pLE5pKDUpLG90KCkoKSksMiZoJiYodXQoMSksVHQo''@;'; put 'put ''ImlkIix2LmlucHV0SWQpKCJwbGFjZWhvbGRlciIsdi5wbGFjZWhvbGRlcikoIm5nTW9kZWwiLHYudmFsdWUpKCJkaXNhYmxlZCIsdi5kaXNhYmxlZCksR2koImxpc3QiLCJkYXRhbGlzdF8iK3YuaW5wdXRJZCksdXQoMiksRmkoImhpZGRlbiIsIXYuZGF0YWxpc3RPcGVuKSx1dCgxKSxGaSgi''@;'; put 'put ''aGlkZGVuIiwhdi5kYXRhbGlzdE9wZW4pLFR0KCJuZ1N0eWxlIixqMygxMSxVNXQsdi5pbnB1dENsaWVudFJlY3Qud2lkdGgsdi5pbm5lckhlaWdodCYmdi5pbnB1dENsaWVudFJlY3QuYm90dG9tP3YuaW5uZXJIZWlnaHQtdi5pbnB1dENsaWVudFJlY3QuYm90dG9tOnZvaWQgMCkpKCJpZCIs''@;'; put 'put ''ImRhdGFsaXN0XyIrdi5pbnB1dElkKSl9LGRlcGVuZGVuY2llczpbRVcsbTEsVHMsSXNdLHN0eWxlczpbIi5pbnB1dC12YWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowcHg7YmFja2dyb3VuZDojZmJmOGY4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM5OTk5OTl9aW5wdXRbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde3dpZHRoOjEwMCU7b3V0bGluZTpub25lfWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXTo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9ye21hcmdpbi10b3A6LTVweH0uYXV0b2NvbXBsZXRlLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm92ZXJsYXlb''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MDt0b3A6MDtyaWdodDowO2JvdHRvbTowO3otaW5kZXg6MTUwMH0uYXV0b2NvbXBsZXRlLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGFsaXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDti''@;'; put 'put ''YWNrZ3JvdW5kOndoaXRlO2JveC1zaGFkb3c6MCAzcHggMTBweCAtMXB4ICMwMDAwMDAyYjtvdmVyZmxvdzphdXRvO3otaW5kZXg6MjAwMH0uYXV0b2NvbXBsZXRlLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGFsaXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgb3B0aW9ue3Bh''@;'; put 'put ''ZGRpbmc6NXB4IDEwcHg7Y3Vyc29yOnBvaW50ZXJ9LmF1dG9jb21wbGV0ZS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kYXRhbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAgIG9wdGlvbjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA1ODgyMzUyOTQpfS5hdXRvY29tcGxl''@;'; put 'put ''dGUtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAuZGF0YWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgICBvcHRpb24uZm9jdXNlZHtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA1ODgyMzUyOTQpfSJdfSksZH0pKCksWDV0PSgoKT0+e2NsYXNzIGR7dHJhbnNmb3JtKGgsdil7aWYoInN0''@;'; put 'put ''cmluZyI9PXR5cGVvZiBoJiZoLmxlbmd0aDwxKXJldHVybiBoO3N3aXRjaCh2KXtjYXNlImRhdGUiOnJldHVybiBUbChoLCJERE1NTVlZWVk6aGg6bW06c3MiKS5mb3JtYXQoIkREL01NL1lZWVkiKTtjYXNlInRpbWUiOntpZigic3RyaW5nIiE9dHlwZW9mIGgpdGhyb3cgbmV3IEVycm9yKCJF''@;'; put 'put ''cnJvciBwYXJzaW5nIHRpbWUuIFZhbHVlIGlzIG5vdCBzdHJpbmcuIik7Y29uc3QgeT1wYXJzZUludChoLnNwbGl0KCI6IilbMF0pLEM9cGFyc2VJbnQoaC5zcGxpdCgiOiIpWzFdKSxJPXBhcnNlSW50KGguc3BsaXQoIjoiKVsyXSk7cmV0dXJuYCR7eTwxMD8iMCIreTp5fToke0M8MTA/IjAi''@;'; put 'put ''K0M6Q306JHtJPDEwPyIwIitJOkl9YH19cmV0dXJuInN0cmluZyI9PXR5cGVvZiBoP2g6aC50b1N0cmluZygpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwaXBlPVVzKHtuYW1lOiJkYXRlVGltZUZvcm1hdHRlciIsdHlwZTpkLHB1''@;'; put 'put ''cmU6ITB9KSxkfSkoKTtjb25zdCBLNXQ9WyJpbnB1dCJdO2Z1bmN0aW9uICQ1dChkLGcpe2lmKDEmZCYmKG50KDAsImxhYmVsIiwzKSxZdCgxKSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoKTt1dCgxKSxqaShoLmxhYmVsKX19ZnVuY3Rpb24gcTV0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7''@;'; put 'put ''QjAoMCksbnQoMSwiY2xyLWRhdGUtY29udGFpbmVyIikoMiwiaW5wdXQiLDQpLEduKCJjbHJEYXRlQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gaXQoaCksYShRdCgpLm9uRGF0ZUlucHV0RmlyZWQoeSkpfSkoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkuaW5wdXRG''@;'; put 'put ''b2N1c2VkPSEwKX0pKCJmb2N1c291dCIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgpLmlucHV0Rm9jdXNlZD0hMSl9KSgiZm9jdXNpbiIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoKS5vbkZvY3VzaW5JbnB1dCh5KSl9KSgibW91c2VvdmVyIixmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBpdChoKSxhKFF0KCkub25JbnB1dE1vdXNlT3ZlcigpKX0pKCJtb3VzZW91dCIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgpLm9uSW5wdXRNb3VzZU91dCgpKX0pLG5uKDMsImRhdGVUaW1lRm9ybWF0dGVyIiksb3QoKSgpLFAwKCl9aWYoMiZkKXtjb25zdCBoPVF0KCk7dXQoMiks''@;'; put 'put ''VHQoImlkIixoLmlucHV0SWQpKCJwbGFjZWhvbGRlciIsUG4oMyw1LGgudGVtcCwiZGF0ZSIpKSgiY2xyRGF0ZSIsaC52YWx1ZSkoImRpc2FibGVkIixoLmRpc2FibGVkKSxHaSgibGlzdCIsImRhdGFsaXN0XyIraC5pbnB1dElkKX19ZnVuY3Rpb24gZWd0KGQsZyl7aWYoMSZkKXtjb25zdCBo''@;'; put 'put ''PXdpKCk7QjAoMCksbnQoMSwiaW5wdXQiLDUpLEduKCJpbnB1dCIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoKS5vbklucHV0RmlyZWQoeSkpfSkoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkuaW5wdXRGb2N1c2VkPSEwKX0pKCJmb2N1c291dCIsZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gaXQoaCksYShRdCgpLmlucHV0Rm9jdXNlZD0hMSl9KSgiZm9jdXNpbiIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoKS5vbkZvY3VzaW5JbnB1dCh5KSl9KSgibW91c2VvdmVyIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkub25JbnB1dE1vdXNlT3Zl''@;'; put 'put ''cigpKX0pKCJtb3VzZW91dCIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgpLm9uSW5wdXRNb3VzZU91dCgpKX0pLG90KCksUDAoKX1pZigyJmQpe2NvbnN0IGg9UXQoKTt1dCgxKSxUdCgidmFsdWUiLGgudmFsdWUpKCJpZCIsaC5pbnB1dElkKSgiZGlzYWJsZWQiLGguZGlzYWJsZWQp''@;'; put 'put ''LEdpKCJsaXN0IiwiZGF0YWxpc3RfIitoLmlucHV0SWQpfX1mdW5jdGlvbiB0Z3QoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtCMCgwKSxudCgxLCJhcHAtYXV0b2NvbXBsZXRlIiw2LDcpLEduKCJvbklucHV0Q2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gaXQoaCksYShRdCgpLm9uSW5w''@;'; put 'put ''dXRGaXJlZCh5KSl9KSxOaSgzKSxvdCgpLFAwKCl9aWYoMiZkKXtjb25zdCBoPVF0KCk7dXQoMSksVHQoImlucHV0SWQiLGguaW5wdXRJZCkoInZhbHVlIiwobnVsbD09aC52YWx1ZT9udWxsOmgudmFsdWUudG9TdHJpbmcoKSl8fCIiKSgiZW1pdE9ubHlTZWxlY3RlZCIsaC5lbWl0T25seVNl''@;'; put 'put ''bGVjdGVkKSgiZGlzYWJsZWQiLGguZGlzYWJsZWQpfX1jb25zdCBuZ3Q9WyIqIl07bGV0IE1MZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5pbnB1dElkPSIiLHRoaXMudmFsdWU9IiIsdGhpcy5kaXNhYmxlZD0hMSx0aGlzLnR5cGU9InRleHQiLHRoaXMuZGlzYWJsZVNvZnRz''@;'; put 'put ''ZWxlY3Q9ITEsdGhpcy5lbWl0T25seVNlbGVjdGVkPSExLHRoaXMudmFsdWVDaGFuZ2U9bmV3IGFyLHRoaXMub25JbnB1dEV2ZW50PW5ldyBhcix0aGlzLmZvY3VzaW5JbnB1dD1uZXcgYXIsdGhpcy50ZW1wPSIiLHRoaXMuaW5wdXRGb2N1c2VkPSExfW5nT25DaGFuZ2VzKGgpe2gudmFsdWUm''@;'; put 'put ''JmgudmFsdWUuY3VycmVudFZhbHVlIT09aC52YWx1ZS5wcmV2aW91c1ZhbHVlJiZ0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoaC52YWx1ZS5jdXJyZW50VmFsdWUpfW5nT25Jbml0KCl7fW9uSW5wdXRGaXJlZChoKXtjb25zdCB2PWgudGFyZ2V0LnZhbHVlO3RoaXMudGVtcD12LHRoaXMudmFsdWVD''@;'; put 'put ''aGFuZ2UuZW1pdCh2KSx0aGlzLm9uSW5wdXRFdmVudC5lbWl0KGgpfW9uRGF0ZUlucHV0RmlyZWQoaCl7dGhpcy50ZW1wPWgsdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGgpLHRoaXMub25JbnB1dEV2ZW50LmVtaXQoaCl9b25JbnB1dE1vdXNlT3V0KCl7dGhpcy5kaXNhYmxlU29mdHNlbGVjdHx8''@;'; put 'put ''KHRoaXMudmFsdWU9dGhpcy50ZW1wLHRoaXMudGVtcD0iIil9b25JbnB1dE1vdXNlT3Zlcigpe3RoaXMuZGlzYWJsZVNvZnRzZWxlY3R8fCh0aGlzLnRlbXA9dGhpcy52YWx1ZT90aGlzLnZhbHVlOiIiLHRoaXMudmFsdWU9IiIpfW9uRm9jdXNpbklucHV0KGgpe3RoaXMuZm9jdXNpbklucHV0''@;'; put 'put ''LmVtaXQoaCl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtc29mdC1zZWxlY3QiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGgsdil7aWYoMSZoJiZ2byhLNXQsNSksMiZoKXtsZXQg''@;'; put 'put ''eTtIaSh5PSRpKCkpJiYodi5pbnB1dEVsZW1lbnQ9eS5maXJzdCl9fSxpbnB1dHM6e2lucHV0SWQ6ImlucHV0SWQiLGxhYmVsOiJsYWJlbCIsdmFsdWU6InZhbHVlIixkaXNhYmxlZDoiZGlzYWJsZWQiLHR5cGU6InR5cGUiLGRpc2FibGVTb2Z0c2VsZWN0OiJkaXNhYmxlU29mdHNlbGVjdCIs''@;'; put 'put ''ZW1pdE9ubHlTZWxlY3RlZDoiZW1pdE9ubHlTZWxlY3RlZCJ9LG91dHB1dHM6e3ZhbHVlQ2hhbmdlOiJ2YWx1ZUNoYW5nZSIsb25JbnB1dEV2ZW50OiJvbklucHV0RXZlbnQiLGZvY3VzaW5JbnB1dDoiZm9jdXNpbklucHV0In0sZmVhdHVyZXM6W0QyXSxuZ0NvbnRlbnRTZWxlY3RvcnM6bmd0''@;'; put 'put ''LGRlY2xzOjUsdmFyczo1LGNvbnN0czpbWyJjbGFzcyIsImNsci1jb250cm9sLWxhYmVsIiw0LCJuZ0lmIl0sWzMsIm5nU3dpdGNoIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFsxLCJjbHItY29udHJvbC1sYWJlbCJdLFsidHlwZSIsImRhdGUiLCJjbHJEYXRlIiwiIiwzLCJpZCIsInBsYWNlaG9s''@;'; put 'put ''ZGVyIiwiY2xyRGF0ZSIsImRpc2FibGVkIiwiY2xyRGF0ZUNoYW5nZSIsImZvY3VzIiwiZm9jdXNvdXQiLCJmb2N1c2luIiwibW91c2VvdmVyIiwibW91c2VvdXQiXSxbInR5cGUiLCJ0aW1lIiwic3RlcCIsIjEiLDEsImlucHV0LXZhbCIsMywidmFsdWUiLCJpZCIsImRpc2FibGVkIiwiaW5w''@;'; put 'put ''dXQiLCJmb2N1cyIsImZvY3Vzb3V0IiwiZm9jdXNpbiIsIm1vdXNlb3ZlciIsIm1vdXNlb3V0Il0sWyJ0eXBlIiwidGV4dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsImF1dG9mb2N1cyIsIiIsInRhYmluZGV4IiwiMCIsMSwiaW5wdXQtdmFsIiwzLCJpbnB1dElkIiwidmFsdWUiLCJlbWl0T25s''@;'; put 'put ''eVNlbGVjdGVkIiwiZGlzYWJsZWQiLCJvbklucHV0Q2hhbmdlIl0sWyJpbnB1dCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKEswKCkscm4oMCwkNXQsMiwxLCJsYWJlbCIsMCksQjAoMSwxKSxybigyLHE1dCw0LDgsIm5nLWNvbnRhaW5lciIsMikscm4oMyxlZ3QsMiw0LCJu''@;'; put 'put ''Zy1jb250YWluZXIiLDIpLHJuKDQsdGd0LDQsNCwibmctY29udGFpbmVyIiwyKSxQMCgpKSwyJmgmJihUdCgibmdJZiIsdi5sYWJlbCksdXQoMSksVHQoIm5nU3dpdGNoIix2LnR5cGUpLHV0KDEpLFR0KCJuZ1N3aXRjaENhc2UiLCJkYXRlIiksdXQoMSksVHQoIm5nU3dpdGNoQ2FzZSIsInRp''@;'; put 'put ''bWUiKSx1dCgxKSxUdCgibmdTd2l0Y2hDYXNlIiwidGV4dCIpKX0sZGVwZW5kZW5jaWVzOltObyxKZCxpcCxhdCxyWixJZmUsSjV0LFg1dF0sc3R5bGVzOlsiLmlucHV0LXZhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjBweDtiYWNrZ3JvdW5kOiNmYmY4Zjg7Ym9yZGVyLWJvdHRvbTox''@;'; put 'put ''cHggc29saWQgIzk5OTk5OX1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTtvdXRsaW5lOm5vbmV9aW5wdXRbX25nY29udGVudC0lQ09NUCVdOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3J7bWFyZ2luLXRvcDotNXB4fWNsci1kYXRlLWNvbnRhaW5lcltfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLXRvcDoycHghaW1wb3J0YW50fWNsci1kYXRlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb257cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTVweH1jbHItZGF0''@;'; put 'put ''ZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgICBpbnB1dDo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9ye21hcmdpbi1yaWdodDoyMHB4O21hcmdpbi10b3A6LTVweH0iXX0pLGR9KSgpLHJndD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMuaGVscGVy''@;'; put 'put ''U2VydmljZT1ofXRyYW5zZm9ybShoLHY9ImRheXMiLHk9ITEpe2lmKHZvaWQgMD09PWgmJihoPSIiKSwic3RyaW5nIiE9dHlwZW9mIGgmJihoPWgudG9TdHJpbmcoKSksMD09PWgubGVuZ3RoKXtpZigiZGF5cyI9PT12KXJldHVybiBudWxsO2lmKCJzZWNvbmRzIj09PXYpcmV0dXJuIHk/IjEx''@;'; put 'put ''OjAwOjAwIjpudWxsfWxldCBDPXRoaXMuaGVscGVyU2VydmljZS5jb252ZXJ0U2FzRGF5c1RvSnNEYXRlKGgsdik7aWYoND09PWguc3BsaXQoIjoiKS5sZW5ndGgpe2NvbnN0IFo9aC5zcGxpdCgiOiIpO0M9bmV3IERhdGUoWlswXSksQy5zZXRIb3VycyhwYXJzZUludChaWzFdKSksQy5zZXRN''@;'; put 'put ''aW51dGVzKHBhcnNlSW50KFpbMl0pKSxDLnNldFNlY29uZHMocGFyc2VJbnQoWlszXSkpfWVsc2UgaXNOYU4oTnVtYmVyKGgpKSYmKEM9bmV3IERhdGUoaCkpO2xldCBJPWAke3RoaXMuaGVscGVyU2VydmljZS5hZGRMZWFkaW5nWmVybyhDLmdldEhvdXJzKCkudG9TdHJpbmcoKSl9OiR7dGhp''@;'; put 'put ''cy5oZWxwZXJTZXJ2aWNlLmFkZExlYWRpbmdaZXJvKEMuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkpfToke3RoaXMuaGVscGVyU2VydmljZS5hZGRMZWFkaW5nWmVybyhDLmdldFNlY29uZHMoKS50b1N0cmluZygpKX1gO3JldHVybiB5P0k6Q319cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9u''@;'; put 'put ''KGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoWGMsMTYpKX0sZC5cdTAyNzVwaXBlPVVzKHtuYW1lOiJzYXNUb0pzRGF0ZSIsdHlwZTpkLHB1cmU6ITB9KSxkfSkoKSxpZ3Q9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoKXt0aGlzLmhlbHBlclNlcnZpY2U9aH10cmFuc2Zvcm0oaCl7aWYobnVs''@;'; put 'put ''bD09aHx8IiI9PT1oKXJldHVybiIiO2xldCB2LHksQztpZigic3RyaW5nIj09dHlwZW9mIGgmJjM9PT1oLnNwbGl0KCI6IikubGVuZ3RoKXtjb25zdCBJPWguc3BsaXQoIjoiKTt2PUlbMF0seT1JWzFdLEM9SVsyXX1lbHNlIm51bWJlciIhPXR5cGVvZiBoJiYoaD1wYXJzZUludChoKSksdj1N''@;'; put 'put ''YXRoLmZsb29yKGgvMzYwMCkseT1NYXRoLmZsb29yKGglMzYwMC82MCksQz1NYXRoLmZsb29yKGglMzYwMCU2MCk7cmV0dXJuYCR7dGhpcy5oZWxwZXJTZXJ2aWNlLmFkZExlYWRpbmdaZXJvKHYpfToke3RoaXMuaGVscGVyU2VydmljZS5hZGRMZWFkaW5nWmVybyh5KX06JHt0aGlzLmhlbHBl''@;'; put 'put ''clNlcnZpY2UuYWRkTGVhZGluZ1plcm8oQyl9YH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoWGMsMTYpKX0sZC5cdTAyNzVwaXBlPVVzKHtuYW1lOiJzZWNvbmRzUGFyc2VyIix0eXBlOmQscHVyZTohMH0pLGR9KSgpO2Z1bmN0aW9uIG9ndChk''@;'; put 'put ''LGcpe2lmKDEmZCYmKG50KDAsIm9wdGlvbiIsMjQpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDtUdCgic2VsZWN0ZWQiLFF0KCkubG9naWNPcGVyYXRvcnNbMF0pLHV0KDEpLEppKCIgIixoLCIgIil9fWZ1bmN0aW9uIGFndChkLGcpezEmZCYmKG50KDAsImRpdiIsMjUp''@;'; put 'put ''LFl0KDEsIlxuICAgICAgICAiKSxDcigyLCJwcm9ncmVzcyIpLFl0KDMsIlxuICAgICAgIiksb3QoKSl9ZnVuY3Rpb24gbGd0KGQsZyl7MSZkJiZDcigwLCJkaXYiKX1mdW5jdGlvbiBzZ3QoZCxnKXtpZigxJmQmJihudCgwLCJvcHRpb24iLDI0KSxZdCgxKSxvdCgpKSwyJmQpe2NvbnN0IGg9''@;'; put 'put ''Zy4kaW1wbGljaXQ7VHQoInNlbGVjdGVkIixRdCgyKS5sb2dpY09wZXJhdG9yc1swXSksdXQoMSksSmkoIiAiLGgsIiAiKX19ZnVuY3Rpb24gdWd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiYnV0dG9uIiwzNCksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxh''@;'; put 'put ''KFF0KDIpLmFkZEdyb3VwQ2xhdXNlKCkpfSksQ3IoMSwiY2xyLWljb24iLDM1KSxudCgyLCJzcGFuIiksWXQoMywiR3JvdXAiKSxvdCgpKCl9fWZ1bmN0aW9uIGNndChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci1pY29uIiwzNiksR24oImNsaWNrIixmdW5jdGlvbigpe2l0''@;'; put 'put ''KGgpO2NvbnN0IHk9UXQoKS5pbmRleDtyZXR1cm4gYShRdCgpLnJlbW92ZUdyb3VwQ2xhdXNlKHkpKX0pLG90KCl9fWZ1bmN0aW9uIGZndChkLGcpe2lmKDEmZCYmKG50KDAsIm9wdGlvbiIpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDt1dCgxKSxKaSgiICIsaC5OQU1F''@;'; put 'put ''LCIgIil9fWZ1bmN0aW9uIGhndChkLGcpe2lmKDEmZCYmKG50KDAsIm9wdGlvbiIpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDt1dCgxKSxqaShoKX19ZnVuY3Rpb24gZGd0KGQsZyl7MSZkJiZmMSgwKX1jb25zdCBwZ3Q9ZnVuY3Rpb24oZCxnLGgpe3JldHVybntxdWVy''@;'; put 'put ''eTpkLHF1ZXJ5SW5kZXg6ZyxjbGF1c2VJbmRleDpofX07ZnVuY3Rpb24gZ2d0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiZGl2Iiw1MykoMSwiYnV0dG9uIiw1NCksR24oImNsaWNrIixmdW5jdGlvbigpe2l0KGgpO2NvbnN0IHk9UXQoMikuaW5kZXgsQz1RdCgpLmluZGV4LEk9''@;'; put 'put ''UXQoKTtyZXR1cm4gSS5jdXJyZW50UXVlcnlJbmRleD15LGEoSS5jdXJyZW50Q2xhdXNlSW5kZXg9Qyl9KSxZdCgyLCIgQ2hvb3NlIHZhbHVlcyAiKSxvdCgpLHJuKDMsZGd0LDEsMCwibmctY29udGFpbmVyIiw1NSksb3QoKX1pZigyJmQpe2NvbnN0IGg9UXQoMiksdj1oLiRpbXBsaWNpdCx5''@;'; put 'put ''PWguaW5kZXgsQz1RdCgpLmluZGV4O1F0KCk7Y29uc3QgST12YSgzNyk7dXQoMyksVHQoIm5nVGVtcGxhdGVPdXRsZXQiLEkpKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsSCgyLHBndCx2LHksQykpfX1mdW5jdGlvbiBtZ3QoZCxnKXsxJmQmJmYxKDApfWNvbnN0IHZndD1mdW5jdGlvbihk''@;'; put 'put ''LGcsaCx2KXtyZXR1cm57cXVlcnk6ZCxxdWVyeUluZGV4OmcsY2xhdXNlSW5kZXg6aCxpc0RhdGVUaW1lOnZ9fTtmdW5jdGlvbiBBZ3QoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDU2KSxybigxLG1ndCwxLDAsIm5nLWNvbnRhaW5lciIsNTUpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgpLm5n''@;'; put 'put ''VmFyLHY9UXQoKSx5PXYuJGltcGxpY2l0LEM9di5pbmRleCxJPVF0KCkuaW5kZXgsWj1RdCgpLHVlPXZhKDMxKSxfZT12YSgzMyk7dXQoMSksVHQoIm5nVGVtcGxhdGVPdXRsZXQiLGgmJloudXNlUGlja2Vycz91ZTpfZSkoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixpZSgyLHZndCx5LEMs''@;'; put 'put ''SSxoKSl9fWZ1bmN0aW9uIHlndChkLGcpezEmZCYmZjEoMCl9ZnVuY3Rpb24gd2d0KGQsZyl7MSZkJiZmMSgwKX1jb25zdCBiZ3Q9ZnVuY3Rpb24oZCxnLGgsdil7cmV0dXJue3JhbmdlOiJzdGFydCIscXVlcnk6ZCxxdWVyeVZhbHVlSW5kZXg6MCxxdWVyeUluZGV4OmcsY2xhdXNlSW5kZXg6''@;'; put 'put ''aCxpc0RhdGVUaW1lOnZ9fSxfZ3Q9ZnVuY3Rpb24oZCxnLGgsdil7cmV0dXJue3JhbmdlOiJlbmQiLHF1ZXJ5OmQscXVlcnlWYWx1ZUluZGV4OjEscXVlcnlJbmRleDpnLGNsYXVzZUluZGV4OmgsaXNEYXRlVGltZTp2fX07ZnVuY3Rpb24gQ2d0KGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2Iiw1''@;'; put 'put ''NykoMSwiZGl2Iiw1OCkscm4oMix5Z3QsMSwwLCJuZy1jb250YWluZXIiLDU1KSxvdCgpLG50KDMsImRpdiIsNTkpLHJuKDQsd2d0LDEsMCwibmctY29udGFpbmVyIiw1NSksb3QoKSgpKSwyJmQpe2NvbnN0IGg9UXQoKS5uZ1Zhcix2PVF0KCkseT12LiRpbXBsaWNpdCxDPXYuaW5kZXgsST1R''@;'; put 'put ''dCgpLmluZGV4LFo9UXQoKSx1ZT12YSgzMSksX2U9dmEoMzUpO3V0KDIpLFR0KCJuZ1RlbXBsYXRlT3V0bGV0IixoJiZaLnVzZVBpY2tlcnM/dWU6X2UpKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsaWUoNCxiZ3QseSxDLEksaCkpLHV0KDIpLFR0KCJuZ1RlbXBsYXRlT3V0bGV0IixoJiZa''@;'; put 'put ''LnVzZVBpY2tlcnM/dWU6X2UpKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsaWUoOSxfZ3QseSxDLEksaCkpfX1mdW5jdGlvbiBrZ3QoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJkaXYiLDYwKSgxLCJsYWJlbCIsNjEpLFl0KDIsIlZhbHVlIiksb3QoKSxudCgzLCJpbnB1dCIs''@;'; put 'put ''NjIpLEduKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gaXQoaCksYShRdCgyKS4kaW1wbGljaXQudmFsdWU9eSl9KSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7aXQoaCk7Y29uc3QgQz1RdCgyKS5pbmRleCxJPVF0KCkuaW5kZXg7cmV0dXJuIGEoUXQoKS5zZXRWYXJp''@;'; put 'put ''YWJsZVZhbHVlcyh5LEMsSSkpfSksb3QoKSgpfWlmKDImZCl7Y29uc3QgaD1RdCgyKS4kaW1wbGljaXQ7dXQoMyksVHQoIm5nTW9kZWwiLGgudmFsdWUpfX1mdW5jdGlvbiBTZ3QoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDQ4KSxybigxLGdndCw0LDYsImRpdiIsNDkpLHJuKDIsQWd0LDIs''@;'; put 'put ''NywiZGl2Iiw1MCkscm4oMyxDZ3QsNSwxNCwiZGl2Iiw1MSkscm4oNCxrZ3QsNCwxLCJkaXYiLDUyKSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoKS4kaW1wbGljaXQ7dXQoMSksVHQoIm5nSWYiLCJJTiI9PT1oLm9wZXJhdG9yfHwiTk9UIElOIj09PWgub3BlcmF0b3IpLHV0KDEpLFR0KCJuZ0lm''@;'; put 'put ''IiwiQkVUV0VFTiIhPT1oLm9wZXJhdG9yJiYiSU4iIT09aC5vcGVyYXRvciYmIk5PVCBJTiIhPT1oLm9wZXJhdG9yJiYiTElLRSIhPT1oLm9wZXJhdG9yJiYiQ09OVEFJTlMiIT09aC5vcGVyYXRvciYmIkJFR0lOU19XSVRIIiE9PWgub3BlcmF0b3IpLHV0KDEpLFR0KCJuZ0lmIiwiQkVUV0VF''@;'; put 'put ''TiI9PT1oLm9wZXJhdG9yKSx1dCgxKSxUdCgibmdJZiIsIkxJS0UiPT09aC5vcGVyYXRvcnx8IkJFR0lOU19XSVRIIj09PWgub3BlcmF0b3J8fCJDT05UQUlOUyI9PT1oLm9wZXJhdG9yKX19ZnVuY3Rpb24gTWd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiZGl2Iiw4KSgxLCJk''@;'; put 'put ''aXYiLDM3KSgyLCJkaXYiLDM4KSgzLCJhcHAtc29mdC1zZWxlY3QiLDM5KSxHbigidmFsdWVDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBhKGl0KGgpLiRpbXBsaWNpdC52YXJpYWJsZT15KX0pKCJvbklucHV0RXZlbnQiLGZ1bmN0aW9uKHkpe2NvbnN0IEM9aXQoaCksST1DLiRpbXBsaWNp''@;'; put 'put ''dCxaPUMuaW5kZXgsdWU9UXQoKS5pbmRleDtyZXR1cm4gYShRdCgpLnZhcmlhYmxlSW5wdXRDaGFuZ2UoSS52YXJpYWJsZSxaLHVlLHkpKX0pLHJuKDQsZmd0LDIsMSwib3B0aW9uIiw0MCksb3QoKSgpKCksbnQoNSwiZGl2Iiw0MSkoNiwiY2xyLXNlbGVjdC1jb250YWluZXIiKSg3LCJsYWJl''@;'; put 'put ''bCIpLFl0KDgsIk9wZXJhdG9yIiksb3QoKSxudCg5LCJzZWxlY3QiLDQyKSxHbigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaXQoaCkuJGltcGxpY2l0Lm9wZXJhdG9yPXkpfSkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKCl7Y29uc3QgeT1pdChoKSxDPXkuaW5kZXgs''@;'; put 'put ''ST15LiRpbXBsaWNpdCxaPVF0KCkuaW5kZXg7cmV0dXJuIGEoUXQoKS5zZXRWYXJpYWJsZU9wZXJhdG9yKEMsSS5vcGVyYXRvcixaKSl9KSxybigxMCxoZ3QsMiwxLCJvcHRpb24iLDQwKSxvdCgpKCkoKSxybigxMSxTZ3QsNSw0LCJkaXYiLDQzKSxudCgxMiwiZGl2Iiw0NCkoMTMsImJ1dHRv''@;'; put 'put ''biIsNDUpLEduKCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBDPWl0KGgpLmluZGV4LEk9UXQoKS5pbmRleDtyZXR1cm4gYShRdCgpLnJlbW92ZUNsYXVzZShDLEkpKX0pLENyKDE0LCJjbHItaWNvbiIsNDYpKDE1LCJzcGFuIiksb3QoKSxudCgxNiwiYnV0dG9uIiw0NyksR24oImNsaWNrIixm''@;'; put 'put ''dW5jdGlvbigpe2l0KGgpO2NvbnN0IHk9UXQoKS5pbmRleDtyZXR1cm4gYShRdCgpLmFkZENsYXVzZSh5KSl9KSxDcigxNywiY2xyLWljb24iLDM1KSgxOCwic3BhbiIpLG90KCkoKSgpfWlmKDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PWcuaW5kZXgseT1RdCgpLmluZGV4LEM9UXQoKTtG''@;'; put 'put ''aSgiaW52YWxpZC1jbGF1c2UiLGguaW52YWxpZENsYXVzZSksdXQoMyksVHQoImlkIiwic2VsZWN0X3ZhbHNfdmFyX2lkIit2KyJfIit5KSgiaW5wdXRJZCIsInZhbHNfdmFyX2lkIit2KyJfIit5KSgiZW1pdE9ubHlTZWxlY3RlZCIsITApKCJ2YWx1ZSIsaC52YXJpYWJsZSksdXQoMSksVHQo''@;'; put 'put ''Im5nRm9yT2YiLEMuY29scyksdXQoNSksVHQoIm5nTW9kZWwiLGgub3BlcmF0b3IpLHV0KDEpLFR0KCJuZ0Zvck9mIixoLm9wZXJhdG9ycyksdXQoMSksVHQoIm5nVmFyIiwiREFURSI9PT1oLmRkdHlwZXx8IkRBVEVUSU1FIj09PWguZGR0eXBlfHwiVElNRSI9PT1oLmRkdHlwZSksdXQoMiks''@;'; put 'put ''VHQoImRpc2FibGVkIiwxPT09Qy5jbGF1c2VzLnF1ZXJ5T2JqW3ldLmVsZW1lbnRzLmxlbmd0aCl9fWZ1bmN0aW9uIEVndChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImRpdiIsMjYpKDEsImRpdiIsOCkoMiwiZGl2IiwyNykoMywiZGl2IiwyOCkoNCwiY2xyLXNlbGVjdC1jb250''@;'; put 'put ''YWluZXIiKSg1LCJsYWJlbCIpLFl0KDYsIkxvZ2ljIiksb3QoKSxudCg3LCJzZWxlY3QiLDI5KSxHbigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGEoaXQoaCkuJGltcGxpY2l0LmNsYXVzZUxvZ2ljPXkpfSkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGl0''@;'; put 'put ''KGgpLGEoUXQoKS5zZXRMb2dpYygpKX0pLHJuKDgsc2d0LDIsMiwib3B0aW9uIiwxMSksb3QoKSgpKCksQ3IoOSwiYnIiKSxybigxMCx1Z3QsNCwwLCJidXR0b24iLDMwKSxvdCgpLG50KDExLCJkaXYiLDMxKSxybigxMixjZ3QsMSwwLCJjbHItaWNvbiIsMzIpLHJuKDEzLE1ndCwxOSwxMSwi''@;'; put 'put ''ZGl2IiwzMyksb3QoKSgpLENyKDE0LCJiciIpLG90KCl9aWYoMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0LHY9UXQoKTt1dCgxKSxGaSgiaW52YWxpZC1jbGF1c2UiLGguaW52YWxpZENsYXVzZSksdXQoNiksVHQoIm5nTW9kZWwiLGguY2xhdXNlTG9naWMpKCJkaXNhYmxlZCIsaC5lbGVtZW50''@;'; put 'put ''cy5sZW5ndGg8MiksdXQoMSksVHQoIm5nRm9yT2YiLHYubG9naWNPcGVyYXRvcnMpLHV0KDIpLFR0KCJuZ0lmIix2LmlubmVyV2lkdGg+NzY4KSx1dCgyKSxUdCgibmdJZiIsdi5jbGF1c2VzLnF1ZXJ5T2JqLmxlbmd0aD4xKSx1dCgxKSxUdCgibmdGb3JPZiIsaC5lbGVtZW50cyl9fWZ1bmN0''@;'; put 'put ''aW9uIHhndChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO0IwKDApLG50KDEsImFwcC1zb2Z0LXNlbGVjdCIsNjUpLEduKCJ2YWx1ZUNoYW5nZSIsZnVuY3Rpb24oeSl7aXQoaCk7Y29uc3QgQz1RdCgpLEk9Qy5xdWVyeSxaPUMucXVlcnlJbmRleCx1ZT1DLmNsYXVzZUluZGV4LF9lPUMucXVl''@;'; put 'put ''cnlWYWx1ZUluZGV4O3JldHVybiBhKFF0KCkuZGF0ZUNoYW5nZSh5LEksWix1ZSxfZSkpfSksbm4oMiwic2FzVG9Kc0RhdGUiKSxubigzLCJzYXNUb0pzRGF0ZSIpLG90KCksUDAoKX1pZigyJmQpe2NvbnN0IGg9UXQoKSx2PWgucXVlcnlJbmRleCx5PWguY2xhdXNlSW5kZXgsQz1oLnF1ZXJ5''@;'; put 'put ''VmFsdWVJbmRleCxJPWgucXVlcnk7dXQoMSksVHQoImRpc2FibGVTb2Z0c2VsZWN0IiwhMCkoImlucHV0SWQiLCJ2YWxzX2RhdGUiK3YrIl8iK3kpKCJ2YWx1ZSIsdm9pZCAwIT09Qz96dCgyLDMsSS52YWx1ZVtDXSk6enQoMyw1LEkudmFsdWUpKX19ZnVuY3Rpb24gVGd0KGQsZyl7aWYoMSZk''@;'; put 'put ''KXtjb25zdCBoPXdpKCk7QjAoMCksbnQoMSwiYXBwLXNvZnQtc2VsZWN0Iiw2NiksR24oInZhbHVlQ2hhbmdlIixmdW5jdGlvbih5KXtpdChoKTtjb25zdCBDPVF0KCksST1DLmNsYXVzZUluZGV4LFo9Qy5xdWVyeUluZGV4O3JldHVybiBhKFF0KCkuZ2V0UXVlcnlEYXRlVGltZShJLFopLmRh''@;'; put 'put ''dGU9eSl9KSgib25JbnB1dEV2ZW50IixmdW5jdGlvbigpe2l0KGgpO2NvbnN0IHk9UXQoKSxDPXkucXVlcnksST15LnF1ZXJ5SW5kZXgsWj15LmNsYXVzZUluZGV4LHVlPXkucXVlcnlWYWx1ZUluZGV4O3JldHVybiBhKFF0KCkuZGF0ZVRpbWVDaGFuZ2UoQyxJLFosdWUpKX0pLG5uKDIsInNh''@;'; put 'put ''c1RvSnNEYXRlIiksbm4oMywic2FzVG9Kc0RhdGUiKSxvdCgpLG50KDQsImFwcC1zb2Z0LXNlbGVjdCIsNjcpLEduKCJ2YWx1ZUNoYW5nZSIsZnVuY3Rpb24oeSl7aXQoaCk7Y29uc3QgQz1RdCgpLEk9Qy5jbGF1c2VJbmRleCxaPUMucXVlcnlJbmRleDtyZXR1cm4gYShRdCgpLmdldFF1ZXJ5''@;'; put 'put ''RGF0ZVRpbWUoSSxaKS50aW1lPXkpfSkoIm9uSW5wdXRFdmVudCIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KCksQz15LnF1ZXJ5LEk9eS5xdWVyeUluZGV4LFo9eS5jbGF1c2VJbmRleCx1ZT15LnF1ZXJ5VmFsdWVJbmRleDtyZXR1cm4gYShRdCgpLmRhdGVUaW1lQ2hhbmdlKEMsSSxa''@;'; put 'put ''LHVlKSl9KSxubig1LCJzYXNUb0pzRGF0ZSIpLG5uKDYsInNhc1RvSnNEYXRlIiksb3QoKSxQMCgpfWlmKDImZCl7Y29uc3QgaD1RdCgpLHY9aC5xdWVyeUluZGV4LHk9aC5jbGF1c2VJbmRleCxDPWgucXVlcnlWYWx1ZUluZGV4LEk9aC5xdWVyeTt1dCgxKSxUdCgiZGlzYWJsZVNvZnRzZWxl''@;'; put 'put ''Y3QiLCEwKSgiaW5wdXRJZCIsInZhbHNfZGF0ZSIrdisiXyIreSkoInZhbHVlIix2b2lkIDAhPT1DP1BuKDIsNixJLnZhbHVlW0NdLCJzZWNvbmRzIik6UG4oMyw5LEkudmFsdWUsInNlY29uZHMiKSksdXQoMyksVHQoImRpc2FibGVTb2Z0c2VsZWN0IiwhMCkoImlucHV0SWQiLCJ2YWxzX3Rp''@;'; put 'put ''bWUiK3YrIl8iK3kpKCJ2YWx1ZSIsdm9pZCAwIT09Qz9Ubig1LDEyLEkudmFsdWVbQ10sInNlY29uZHMiLCEwKTpUbig2LDE2LEkudmFsdWUsInNlY29uZHMiLCEwKSl9fWZ1bmN0aW9uIElndChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO0IwKDApLG50KDEsImFwcC1zb2Z0LXNlbGVjdCIs''@;'; put 'put ''NjgpLEduKCJvbklucHV0RXZlbnQiLGZ1bmN0aW9uKHkpe2l0KGgpO2NvbnN0IEM9UXQoKSxJPUMucXVlcnksWj1DLnF1ZXJ5SW5kZXgsdWU9Qy5jbGF1c2VJbmRleCxfZT1DLnF1ZXJ5VmFsdWVJbmRleDtyZXR1cm4gYShRdCgpLnRpbWVDaGFuZ2UoeSxJLFosdWUsX2UpKX0pLG5uKDIsInNl''@;'; put 'put ''Y29uZHNQYXJzZXIiKSxubigzLCJzZWNvbmRzUGFyc2VyIiksb3QoKSxQMCgpfWlmKDImZCl7Y29uc3QgaD1RdCgpLHY9aC5xdWVyeUluZGV4LHk9aC5jbGF1c2VJbmRleCxDPWgucXVlcnlWYWx1ZUluZGV4LEk9aC5xdWVyeTt1dCgxKSxUdCgiZGlzYWJsZVNvZnRzZWxlY3QiLCEwKSgiaW5w''@;'; put 'put ''dXRJZCIsInZhbHNfIit2KyJfIit5KSgidmFsdWUiLHZvaWQgMCE9PUM/enQoMiwzLEkudmFsdWVbQ10pOnp0KDMsNSxJLnZhbHVlKSl9fWZ1bmN0aW9uIERndChkLGcpezEmZCYmKEIwKDAsNjMpLHJuKDEseGd0LDQsNywibmctY29udGFpbmVyIiw2NCkscm4oMixUZ3QsNywyMCwibmctY29u''@;'; put 'put ''dGFpbmVyIiw2NCkscm4oMyxJZ3QsNCw3LCJuZy1jb250YWluZXIiLDY0KSxQMCgpKSwyJmQmJihUdCgibmdTd2l0Y2giLGcucXVlcnkuZGR0eXBlKSx1dCgxKSxUdCgibmdTd2l0Y2hDYXNlIiwiREFURSIpLHV0KDEpLFR0KCJuZ1N3aXRjaENhc2UiLCJEQVRFVElNRSIpLHV0KDEpLFR0KCJu''@;'; put 'put ''Z1N3aXRjaENhc2UiLCJUSU1FIikpfWZ1bmN0aW9uIExndChkLGcpe2lmKDEmZCYmKG50KDAsIm9wdGlvbiIsNzEpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDtUdCgidmFsdWUiLGgudW5mb3JtYXR0ZWQpLHV0KDEpLEppKCIgIixoLmZvcm1hdHRlZC50cmltKCksIiAi''@;'; put 'put ''KX19ZnVuY3Rpb24gT2d0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiYXBwLXNvZnQtc2VsZWN0Iiw2OSksR24oInZhbHVlQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYShpdChoKS5xdWVyeS52YWx1ZT15KX0pKCJvbklucHV0RXZlbnQiLGZ1bmN0aW9uKHkpe2NvbnN0IEM9''@;'; put 'put ''aXQoaCksST1DLnF1ZXJ5SW5kZXgsWj1DLmNsYXVzZUluZGV4O3JldHVybiBhKFF0KCkuc2V0VmFyaWFibGVWYWx1ZXMoeS50YXJnZXQudmFsdWUsSSxaKSl9KSxybigxLExndCwyLDIsIm9wdGlvbiIsNzApLG90KCl9aWYoMiZkKXtjb25zdCBoPWcucXVlcnk7VHQoImlucHV0SWQiLCJ2YWxz''@;'; put 'put ''XyIrZy5xdWVyeUluZGV4KyJfIitnLmNsYXVzZUluZGV4KSgidmFsdWUiLGgudmFsdWUpLHV0KDEpLFR0KCJuZ0Zvck9mIixoLnZhbHVlcyl9fWZ1bmN0aW9uIFJndChkLGcpe2lmKDEmZCYmKG50KDAsIm9wdGlvbiIsNzEpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDtU''@;'; put 'put ''dCgidmFsdWUiLGguZm9ybWF0dGVkKSx1dCgxKSxKaSgiICIsaC5mb3JtYXR0ZWQsIiAiKX19ZnVuY3Rpb24gQmd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiYXBwLXNvZnQtc2VsZWN0Iiw3MiksR24oInZhbHVlQ2hhbmdlIixmdW5jdGlvbih5KXtjb25zdCBDPWl0KGgpO3Jl''@;'; put 'put ''dHVybiBhKEMucXVlcnkudmFsdWVbQy5xdWVyeVZhbHVlSW5kZXhdPXkpfSkoIm9uSW5wdXRFdmVudCIsZnVuY3Rpb24oKXtjb25zdCB5PWl0KGgpLEM9eS5xdWVyeSxJPXkucXVlcnlJbmRleCxaPXkuY2xhdXNlSW5kZXg7cmV0dXJuIGEoUXQoKS5zZXRWYXJpYWJsZVZhbHVlcyhDLnZhbHVl''@;'; put 'put ''LEksWikpfSkscm4oMSxSZ3QsMiwyLCJvcHRpb24iLDcwKSxvdCgpfWlmKDImZCl7Y29uc3QgaD1nLnJhbmdlLHY9Zy5xdWVyeSx5PWcucXVlcnlWYWx1ZUluZGV4O1R0KCJpbnB1dElkIiwidmFscy0iK2grIl8iK2cucXVlcnlJbmRleCsiXyIrZy5jbGF1c2VJbmRleCkoInZhbHVlIix2LnZh''@;'; put 'put ''bHVlW3ldKSgiZGlzYWJsZWQiLHZvaWQgMCE9PXkmJiJzdGFydCIhPT1oJiYhdi52YWx1ZVswXSksdXQoMSksVHQoIm5nRm9yT2YiLHYudmFsdWVzKX19ZnVuY3Rpb24gUGd0KGQsZyl7MSZkJiYobnQoMCwiaDUiLDgwKSxZdCgxLCIgTm8gdmFsdWVzIGF2YWlsYWJsZS4gIiksb3QoKSl9ZnVu''@;'; put 'put ''Y3Rpb24gRmd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiY2xyLWNoZWNrYm94LXdyYXBwZXIiKSgxLCJpbnB1dCIsODIpLEduKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXtjb25zdCBJPWl0KGgpLmluZGV4O3JldHVybiBhKFF0KDIpLnF1ZXJ5LnZhbHVlW0ldLmNoZWNr''@;'; put 'put ''ZWQ9eSl9KSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7aXQoaCk7Y29uc3QgQz1RdCgyKSxJPUMucXVlcnlJbmRleCxaPUMuY2xhdXNlSW5kZXg7cmV0dXJuIGEoUXQoKS5zZXRWYXJpYWJsZVZhbHVlcyh5LEksWikpfSksb3QoKSxudCgyLCJsYWJlbCIpLFl0KDMpLG90KCkoKX1pZigy''@;'; put 'put ''JmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1nLmluZGV4LHk9UXQoMikucXVlcnk7dXQoMSksVHQoIm5nTW9kZWwiLHkudmFsdWVbdl0uY2hlY2tlZCksdXQoMiksSmkoIiAiLGguZm9ybWF0dGVkLCIgIil9fWZ1bmN0aW9uIEhndChkLGcpe2lmKDEmZCYmKG50KDAsInNlY3Rpb24iLDgxKSgx''@;'; put 'put ''LCJjbHItY2hlY2tib3gtY29udGFpbmVyIikscm4oMixGZ3QsNCwyLCJjbHItY2hlY2tib3gtd3JhcHBlciIsNDApLG90KCkoKSksMiZkKXtjb25zdCBoPVF0KCkucXVlcnk7dXQoMiksVHQoIm5nRm9yT2YiLGgudmFsdWVzKX19ZnVuY3Rpb24gTmd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdp''@;'; put 'put ''KCk7bnQoMCwiY2xyLW1vZGFsIiw3MykoMSwiaDMiLDc0KSxZdCgyLCJTZWxlY3QgdmFsdWVzIiksb3QoKSxudCgzLCJkaXYiLDc1KSxybig0LFBndCwyLDAsImg1Iiw3Nikscm4oNSxIZ3QsMywxLCJzZWN0aW9uIiw3Nyksb3QoKSxudCg2LCJkaXYiLDc4KSg3LCJidXR0b24iLDc5KSxHbigi''@;'; put 'put ''Y2xpY2siLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3QgeT1RdCgpO3JldHVybiB5LmN1cnJlbnRRdWVyeUluZGV4PS0xLGEoeS5jdXJyZW50Q2xhdXNlSW5kZXg9LTEpfSksWXQoOCwiIEFwcGx5ICIpLG90KCkoKSgpfWlmKDImZCl7Y29uc3QgaD1nLnF1ZXJ5LHY9Zy5xdWVyeUluZGV4LHk9Zy5j''@;'; put 'put ''bGF1c2VJbmRleCxDPVF0KCk7VHQoImNsck1vZGFsT3BlbiIsQy5jdXJyZW50UXVlcnlJbmRleD09PXYmJkMuY3VycmVudENsYXVzZUluZGV4PT09eSkoImNsck1vZGFsQ2xvc2FibGUiLCExKSx1dCg0KSxUdCgibmdJZiIsIUMuaXNBcnIoaC52YWx1ZSkpLHV0KDEpLFR0KCJuZ0lmIixDLmlz''@;'; put 'put ''QXJyKGgudmFsdWUpKX19IWZ1bmN0aW9uICRyZShkLGcsaCl7KGZ1bmN0aW9uIFRQKGQsZyxoKXsic3RyaW5nIiE9dHlwZW9mIGcmJihoPWcsZz1kW01vLkxvY2FsZUlkXSksZz1nLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXy9nLCItIiksazVbZ109ZCxoJiYoazVbZ11bTW8uRXh0cmFEYXRh''@;'; put 'put ''XT1oKX0pKGQsZyxoKX0oVzV0KTtsZXQgRUxlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyl7dGhpcy5zYXNTdG9yZVNlcnZpY2U9aCx0aGlzLmV2ZW50U2VydmljZT12LHRoaXMuaGVscGVyU2VydmljZT15LHRoaXMuY2RmPUMsdGhpcy5jbGF1c2VBbXQ9WyIiXSx0aGlzLm51''@;'; put 'put ''bU9wZXJhdG9ycz1bIj0iLCI8IiwiPiIsIjw9IiwiPj0iLCJCRVRXRUVOIiwiSU4iLCJOT1QgSU4iLCJORSJdLHRoaXMuY2hhck9wZXJhdG9ycz1bIj0iLCI8IiwiPiIsIjw9IiwiPj0iLCJDT05UQUlOUyIsIklOIiwiTk9UIElOIiwiTkUiXSx0aGlzLm5vdEluPSExLHRoaXMubm90QXJyPSEw''@;'; put 'put ''LHRoaXMud2FzQmV0d2Vlbj0hMSx0aGlzLndoZXJlQ2xhdXNlTG9hZGluZz0hMSx0aGlzLmR5bmFtaWNXaGVyZUNsYXVzZT0hMCx0aGlzLnVzZVBpY2tlcnM9ITEsdGhpcy5xdWVyeU9iaj17ZWxlbWVudHM6W3tsb2dpYzpudWxsLHR5cGU6bnVsbCxkZHR5cGU6bnVsbCx2YXJpYWJsZTpudWxs''@;'; put 'put ''LG9wZXJhdG9yOm51bGwsdmFsdWU6bnVsbCx2YWx1ZXM6W10sb3BlcmF0b3JzOltdfV0sY2xhdXNlTG9naWM6IiIsaW52YWxpZENsYXVzZTohMX0sdGhpcy5zZWxWYXI9e2luZGV4Om51bGwsZm9ybWF0Om51bGwsdHlwZTpudWxsfSx0aGlzLmluT2JqPVt7Y2hlY2tlZDohMSx2YWx1ZTpudWxs''@;'; put 'put ''fV0sdGhpcy5ncm91cExvZ2ljPSJBTkQiLHRoaXMuY2xhdXNlcz17cXVlcnlPYmo6W3RoaXMucXVlcnlPYmpdLGNsYXVzZUxvZ2ljOltdLGdyb3VwTG9naWM6dGhpcy5ncm91cExvZ2ljfSx0aGlzLmxvZ2ljT3BlcmF0b3JzPVsiQU5EIiwiT1IiXSx0aGlzLnF1ZXJ5RGF0ZVRpbWU9W10sdGhp''@;'; put 'put ''cy5jdXJyZW50Q2xhdXNlSW5kZXg9LTEsdGhpcy5jdXJyZW50UXVlcnlJbmRleD0tMSx0aGlzLnBlbmRpbmdJTlZhbHVlc1NldD1udWxsLHRoaXMuaW5uZXJXaWR0aD13aW5kb3cuc2NyZWVuLndpZHRoLHRoaXMuaW5uZXJXaWR0aD43NjgmJih0aGlzLm5vQm9yZGVyPSJib3JkZXItbGVmdDog''@;'; put 'put ''MnB4IHNvbGlkIGdyYXk7Iil9Z2V0UXVlcnlEYXRlVGltZShoLHYpe2xldCB5PXRoaXMucXVlcnlEYXRlVGltZS5maW5kKEM9PkMuY2xhdXNlSW5kZXg9PT1oJiZDLnF1ZXJ5SW5kZXg9PT12KTtpZigheSl7Y29uc3QgQz10aGlzLnF1ZXJ5RGF0ZVRpbWUucHVzaCh7Y2xhdXNlSW5kZXg6aCxx''@;'; put 'put ''dWVyeUluZGV4OnYsZGF0ZToiIix0aW1lOiIifSktMTt5PXRoaXMucXVlcnlEYXRlVGltZVtDXX1yZXR1cm4geX11c2VQaWNrZXJzQ2hhbmdlKCl7dGhpcy5xdWVyeURhdGVUaW1lPVtdfXJlc2V0RmlsdGVyKCl7dGhpcy53aGVyZVN0cmluZz12b2lkIDAsdGhpcy53aGVyZUNsYXVzZT12b2lk''@;'; put 'put ''IDAsdGhpcy5xdWVyeU9iaj17ZWxlbWVudHM6W3tsb2dpYzpudWxsLHR5cGU6bnVsbCxkZHR5cGU6bnVsbCx2YXJpYWJsZTpudWxsLG9wZXJhdG9yOm51bGwsdmFsdWU6bnVsbCx2YWx1ZXM6W10sb3BlcmF0b3JzOltdfV19LHRoaXMuY2xhdXNlcz17cXVlcnlPYmo6W3RoaXMucXVlcnlPYmpd''@;'; put 'put ''LGNsYXVzZUxvZ2ljOltdLGdyb3VwTG9naWM6dGhpcy5ncm91cExvZ2ljfSx0aGlzLndoZXJlQ2xhdXNlRm4oITApfXNldFRvR2xvYmFscygpeygiaG9tZSI9PT1uaS5yb290UGFyYW18fCJlZGl0b3IiPT09bmkucm9vdFBhcmFtKSYmKG5pLmVkaXRvci5maWx0ZXIuZ3JvdXBMb2dpYz10aGlz''@;'; put 'put ''Lmdyb3VwTG9naWMsInN0cmluZyI9PXR5cGVvZiB0aGlzLndoZXJlQ2xhdXNlJiYobmkuZWRpdG9yLmZpbHRlci53aGVyZUNsYXVzZT10aGlzLndoZXJlQ2xhdXNlKSwic3RyaW5nIj09dHlwZW9mIHRoaXMubGliZHMmJihuaS5lZGl0b3IuZmlsdGVyLmxpYmRzPXRoaXMubGliZHMpLG5pLmVk''@;'; put 'put ''aXRvci5maWx0ZXIuY2xhdXNlcz10aGlzLmNsYXVzZXMpLCJ2aWV3Ij09PW5pLnJvb3RQYXJhbSYmKG5pLnZpZXdlci5maWx0ZXIuZ3JvdXBMb2dpYz10aGlzLmdyb3VwTG9naWMsInN0cmluZyI9PXR5cGVvZiB0aGlzLndoZXJlQ2xhdXNlJiYobmkudmlld2VyLmZpbHRlci53aGVyZUNsYXVz''@;'; put 'put ''ZT10aGlzLndoZXJlQ2xhdXNlKSwic3RyaW5nIj09dHlwZW9mIHRoaXMubGliZHMmJihuaS52aWV3ZXIuZmlsdGVyLmxpYmRzPXRoaXMubGliZHMpLG5pLnZpZXdlci5maWx0ZXIuY2xhdXNlcz10aGlzLmNsYXVzZXMpfWdldEZyb21HbG9iYWxzKCl7KCJob21lIj09PW5pLnJvb3RQYXJhbXx8''@;'; put 'put ''ImVkaXRvciI9PT1uaS5yb290UGFyYW0pJiYobmkuZWRpdG9yLmZpbHRlci5jb2xzLmxlbmd0aD4wJiYodGhpcy5jb2xzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobmkuZWRpdG9yLmZpbHRlci5jb2xzKSkpLG5pLmVkaXRvci5maWx0ZXIudmFscy5sZW5ndGg+MCYmKHRoaXMudmFscz1K''@;'; put 'put ''U09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG5pLmVkaXRvci5maWx0ZXIudmFscykpKSwiIiE9PW5pLmVkaXRvci5maWx0ZXIuZ3JvdXBMb2dpYyYmKHRoaXMuZ3JvdXBMb2dpYz1uaS5lZGl0b3IuZmlsdGVyLmdyb3VwTG9naWMsdGhpcy53aGVyZUNsYXVzZT1uaS5lZGl0b3IuZmlsdGVyLndo''@;'; put 'put ''ZXJlQ2xhdXNlLHRoaXMubGliZHM9bmkuZWRpdG9yLmZpbHRlci5saWJkcyx0aGlzLmNsYXVzZXM9bmkuZWRpdG9yLmZpbHRlci5jbGF1c2VzLHRoaXMud2hlcmVDbGF1c2VGbigpKSksInZpZXciPT09bmkucm9vdFBhcmFtJiYobmkudmlld2VyLmZpbHRlci5jb2xzLmxlbmd0aD4wJiYodGhp''@;'; put 'put ''cy5jb2xzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobmkudmlld2VyLmZpbHRlci5jb2xzKSkpLG5pLnZpZXdlci5maWx0ZXIudmFscy5sZW5ndGg+MCYmKHRoaXMudmFscz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG5pLnZpZXdlci5maWx0ZXIudmFscykpKSwiIiE9PW5pLnZpZXdl''@;'; put 'put ''ci5maWx0ZXIuZ3JvdXBMb2dpYyYmKHRoaXMuZ3JvdXBMb2dpYz1uaS52aWV3ZXIuZmlsdGVyLmdyb3VwTG9naWMsdGhpcy53aGVyZUNsYXVzZT1uaS52aWV3ZXIuZmlsdGVyLndoZXJlQ2xhdXNlLHRoaXMubGliZHM9bmkudmlld2VyLmZpbHRlci5saWJkcyx0aGlzLmNsYXVzZXM9bmkudmll''@;'; put 'put ''d2VyLmZpbHRlci5jbGF1c2VzLHRoaXMud2hlcmVDbGF1c2VGbigpKSl9c2V0R3JvdXBMb2dpYyhoKXt0aGlzLmdyb3VwTG9naWM9aCx0aGlzLmNsYXVzZXMuZ3JvdXBMb2dpYz1oLHRoaXMud2hlcmVDbGF1c2VGbigpLHRoaXMuc2V0VG9HbG9iYWxzKCl9ZGF0ZUNoYW5nZShoLHYseSxDLEkp''@;'; put 'put ''e2xldCBaPXRoaXMuaGVscGVyU2VydmljZS5jb252ZXJ0SnNEYXRlVG9TYXNEYXRlKGgpOyJCRVRXRUVOIj09PXYub3BlcmF0b3ImJnZvaWQgMCE9PUkmJih0aGlzLmNsYXVzZXMucXVlcnlPYmpbQ10uZWxlbWVudHNbeV0udmFsdWVbSV09WiksdGhpcy5zZXRWYXJpYWJsZVZhbHVlcyhaLHks''@;'; put 'put ''Qyl9ZGF0ZVRpbWVDaGFuZ2UoaCx2LHksQyl7Y29uc3QgST10aGlzLmdldFF1ZXJ5RGF0ZVRpbWUoeSx2KTtpZigiIj09PUkuZGF0ZSl7aWYoIiI9PT1oLnZhbHVlKXJldHVybjtJLmRhdGU9aC52YWx1ZS5zcGxpdCgiOiIpWzBdfWNvbnN0IFo9cGFyc2VJbnQoSS50aW1lLnNwbGl0KCI6Iilb''@;'; put 'put ''MF0pLHVlPXBhcnNlSW50KEkudGltZS5zcGxpdCgiOiIpWzFdKSxfZT1wYXJzZUludChJLnRpbWUuc3BsaXQoIjoiKVsyXSl8fDA7bGV0IEJlPW5ldyBEYXRlKEkuZGF0ZSksTmU9bmV3IERhdGUoQmUuZ2V0RnVsbFllYXIoKSxCZS5nZXRNb250aCgpLEJlLmdldERhdGUoKSxaLHVlLF9lKSxL''@;'; put 'put ''ZT10aGlzLmhlbHBlclNlcnZpY2UuY29udmVydEpzRGF0ZVRvU2FzRGF0ZShOZSwic2Vjb25kcyIpOyJCRVRXRUVOIj09PWgub3BlcmF0b3ImJnZvaWQgMCE9PUMmJih0aGlzLmNsYXVzZXMucXVlcnlPYmpbeV0uZWxlbWVudHNbdl0udmFsdWVbQ109S2UpLHRoaXMuc2V0VmFyaWFibGVWYWx1''@;'; put 'put ''ZXMoS2Usdix5KX10aW1lQ2hhbmdlKGgsdix5LEMsSSl7aD1oLnRhcmdldC52YWx1ZTtsZXQgS2U9NjAqcGFyc2VJbnQoaC5zcGxpdCgiOiIpWzBdKSo2MCs2MCpwYXJzZUludChoLnNwbGl0KCI6IilbMV0pKyhwYXJzZUludChoLnNwbGl0KCI6IilbMl0pfHwwKTsiQkVUV0VFTiI9PT12Lm9w''@;'; put 'put ''ZXJhdG9yJiZ2b2lkIDAhPT1JJiYodGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW0NdLmVsZW1lbnRzW3ldLnZhbHVlW0ldPUtlKSx0aGlzLnNldFZhcmlhYmxlVmFsdWVzKEtlLHksQyl9ZHluYW1pY1doZXJlQ2xhdXNlQ3JlYXRvcihoLHYpe2xldCB5PVtdO2lmKHRoaXMuY2xhdXNlcy5xdWVyeU9i''@;'; put 'put ''ai5sZW5ndGg+MXx8dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1lbnRzLmxlbmd0aD4xKWZvcihsZXQgQz0wO0M8dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqLmxlbmd0aDtDKyspZm9yKGxldCBJPTA7STx0aGlzLmNsYXVzZXMucXVlcnlPYmpbQ10uZWxlbWVudHMubGVuZ3RoO0krKyl7aWYo''@;'; put 'put ''Qz09PWgmJkk9PT12fHxbbnVsbCx2b2lkIDBdLmluY2x1ZGVzKHRoaXMuY2xhdXNlcy5xdWVyeU9ialtDXS5lbGVtZW50c1tJXS52YXJpYWJsZSl8fFtudWxsLHZvaWQgMF0uaW5jbHVkZXModGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW0NdLmVsZW1lbnRzW0ldLm9wZXJhdG9yKXx8W251bGwsdm9p''@;'; put 'put ''ZCAwXS5pbmNsdWRlcyh0aGlzLmNsYXVzZXMucXVlcnlPYmpbQ10uZWxlbWVudHNbSV0udmFsdWUpKWNvbnRpbnVlO2xldCBaPSIiO2NvbnN0IHVlPXRoaXMuY2xhdXNlcy5xdWVyeU9ialtDXS5lbGVtZW50c1tJXS5vcGVyYXRvcixfZT10aGlzLmNsYXVzZXMucXVlcnlPYmpbQ10uZWxlbWVu''@;'; put 'put ''dHNbSV0udmFyaWFibGU7IkJFVFdFRU4iPT09dWU/Wj1gJHt0aGlzLmNsYXVzZXMucXVlcnlPYmpbQ10uZWxlbWVudHNbSV0udmFsdWVbMF19IEFORCAke3RoaXMuY2xhdXNlcy5xdWVyeU9ialtDXVtJXS52YWx1ZVsxXX1gOiJJTiI9PT11ZXx8Ik5PVCBJTiI9PT11ZT8odGhpcy5jbGF1c2Vz''@;'; put 'put ''LnF1ZXJ5T2JqW0NdW0ldLnZhbHVlLmZvckVhY2goQmU9PntpZihCZS5jaGVja2VkKXtsZXQgTmU9QmUudmFsOyJzdHJpbmciIT10eXBlb2YgTmV8fCgwLGJ3LmlzU3BlY2lhbE1pc3NpbmcpKE5lKT9aLmxlbmd0aD4wP1orPWAsJHtOZX1gOlo9YCgke05lfWA6Wi5sZW5ndGg+MD9aKz1gLCck''@;'; put 'put ''e05lfSdgOlo9YCgnJHtOZX0nYH19KSxaLmxlbmd0aD4wJiYoWis9IikiKSk6IiI9PT10aGlzLmNsYXVzZXMucXVlcnlPYmpbQ10uZWxlbWVudHNbSV0udmFsdWU/Wj0iY2hhciI9PT10aGlzLmNsYXVzZXMucXVlcnlPYmpbQ10uZWxlbWVudHNbSV0udHlwZT8iJyAnIjoiLiI6ImNoYXIiPT09''@;'; put 'put ''dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW0NdLmVsZW1lbnRzW0ldLnR5cGUmJihaPWAnJHt0aGlzLmNsYXVzZXMucXVlcnlPYmpbQ10uZWxlbWVudHNbSV0udmFsdWV9J2ApLHkucHVzaCh7R1JPVVBfTE9HSUM6dGhpcy5jbGF1c2VzLmdyb3VwTG9naWMsU1VCR1JPVVBfTE9HSUM6dGhpcy5jbGF1''@;'; put 'put ''c2VzLnF1ZXJ5T2JqW0NdLmNsYXVzZUxvZ2ljfHwiQU5EIixTVUJHUk9VUF9JRDpDLFZBUklBQkxFX05NOl9lLE9QRVJBVE9SX05NOnVlLFJBV19WQUxVRTpafHx0aGlzLmNsYXVzZXMucXVlcnlPYmpbQ10uZWxlbWVudHNbSV0udmFsdWV9KX1yZXR1cm4geX1nZXRWYWx1ZXMoaCx2LHkpe3Jl''@;'; put 'put ''dHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy53aGVyZUNsYXVzZUxvYWRpbmc9ITA7bGV0IEM9IiI7dm9pZCAwIT09dGhpcy5saWJkcyYmKEM9dGhpcy5saWJkcyksdGhpcy5jbGVhclZhbHVlcyh2LHkpLHRoaXMuY2xhdXNlcy5xdWVyeU9ialt5XS5lbGVtZW50''@;'; put 'put ''c1t2XS52YWx1ZXM9W10sdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ldLmVsZW1lbnRzW3ZdLnZhbHVlPSIiLHRoaXMuY2xhdXNlcy5xdWVyeU9ialt5XS5lbGVtZW50c1t2XS5vcGVyYXRvcj0iPSIsdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ldLmVsZW1lbnRzW3ZdLnZhcmlhYmxlPWg7dHJ5e2lm''@;'; put 'put ''KHZvaWQgMCE9PXRoaXMuY29scyl7Zm9yKGxldCBfZT0wO19lPHRoaXMuY29scy5sZW5ndGg7X2UrKyl0aGlzLmNvbHNbX2VdLk5BTUU9PT1oJiYodGhpcy5zZWxWYXIuaW5kZXg9X2UpO2NvbnN0IEk9dGhpcy5jb2xzW3RoaXMuc2VsVmFyLmluZGV4XS5ERFRZUEU7dGhpcy5jbGF1c2VzLnF1''@;'; put 'put ''ZXJ5T2JqW3ldLmVsZW1lbnRzW3ZdLmRkdHlwZT1JLHRoaXMuY2xhdXNlcy5xdWVyeU9ialt5XS5lbGVtZW50c1t2XS50eXBlPXRoaXMuY29sc1t0aGlzLnNlbFZhci5pbmRleF0uVFlQRSx0aGlzLmNsYXVzZXMucXVlcnlPYmpbeV0uZWxlbWVudHNbdl0ub3BlcmF0b3JzPSJudW0iPT09dGhp''@;'; put 'put ''cy5jbGF1c2VzLnF1ZXJ5T2JqW3ldLmVsZW1lbnRzW3ZdLnR5cGU/dGhpcy5udW1PcGVyYXRvcnM6dGhpcy5jaGFyT3BlcmF0b3JzO2xldCBaPVtdO3RoaXMuZHluYW1pY1doZXJlQ2xhdXNlJiYoWj10aGlzLmR5bmFtaWNXaGVyZUNsYXVzZUNyZWF0b3IoeSx2KSk7Y29uc3QgdWU9WyJEQVRF''@;'; put 'put ''VElNRSIsIlRJTUUiLCJEQVRFIl0uaW5jbHVkZXMoSSk7dGhpcy5zYXNTdG9yZVNlcnZpY2UuZ2V0UXVlcnlWYWx1ZXMoaCxDLFopLnRoZW4oX2U9PntpZih0aGlzLmNsYXVzZXMucXVlcnlPYmpbeV0uZWxlbWVudHNbdl0udmFsdWVzPV9lLnZhbHMubWFwKE5lPT57Y29uc3QgS2U9Im51bSI9''@;'; put 'put ''PT1fZS4kdmFscy52YXJzLlVORk9STUFUVEVELnR5cGU7bGV0IE90PUtlJiYoMCxidy5pc1NwZWNpYWxNaXNzaW5nKShOZS5VTkZPUk1BVFRFRCk/Ii4iK05lLlVORk9STUFUVEVEOk5lLlVORk9STUFUVEVEO3JldHVybiBLZSYmbnVsbD09PU90JiYoT3Q9Ii4iKSx7Zm9ybWF0dGVkOnVlP05l''@;'; put 'put ''LkZPUk1BVFRFRC5zcGxpdCgiLiIpWzBdOk5lLkZPUk1BVFRFRCx1bmZvcm1hdHRlZDpPdH19KS5zbGljZSgwLDJlMyksdGhpcy53aGVyZUNsYXVzZUZuKCksdGhpcy5zZXRUb0dsb2JhbHMoKSx0aGlzLndoZXJlQ2xhdXNlTG9hZGluZz0hMSxudWxsIT09dGhpcy5wZW5kaW5nSU5WYWx1ZXNT''@;'; put 'put ''ZXQpe2NvbnN0e2NsYXVzZUluZGV4Ok5lLHF1ZXJ5SW5kZXg6S2V9PXRoaXMucGVuZGluZ0lOVmFsdWVzU2V0O3RoaXMuc2V0SU5WYWx1ZXMoTmUsS2UpLHRoaXMucGVuZGluZ0lOVmFsdWVzU2V0PW51bGx9dGhpcy5jZGYuZGV0ZWN0Q2hhbmdlcygpfSkuY2F0Y2goX2U9Pnt0aGlzLndoZXJl''@;'; put 'put ''Q2xhdXNlTG9hZGluZz0hMX0pfX1jYXRjaChJKXt0aGlzLmV2ZW50U2VydmljZS5jYXRjaFJlc3BvbnNlRXJyb3IoInB1YmxpYy9nZXRjb2x2YWxzIixJKX19KX1nZXRsb2dpYyhoKXt0aGlzLmxvZ2ljPWgsdGhpcy53aGVyZUNsYXVzZUZuKCl9c2V0TG9naWMoKXt0aGlzLndoZXJlQ2xhdXNl''@;'; put 'put ''Rm4oKSx0aGlzLnNldFRvR2xvYmFscygpfWlzQXJyKGgpe3JldHVybiBoIGluc3RhbmNlb2YgQXJyYXkmJmgubGVuZ3RoPjAmJnZvaWQgMCE9PWhbMF0uY2hlY2tlZH12YXJpYWJsZUlucHV0Q2hhbmdlKGgsdix5LEMpe3RoaXMuZ2V0VmFsdWVzKGgsdix5KX1zZXRWYXJpYWJsZVZhbHVlcyho''@;'; put 'put ''LHYseSl7bGV0IEM9dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ldLmVsZW1lbnRzW3ZdLm9wZXJhdG9yOyJCRVRXRUVOIiE9PUMmJiJJTiIhPT1DJiYiTk9UIElOIiE9PUMmJih0aGlzLmNsYXVzZXMucXVlcnlPYmpbeV0uZWxlbWVudHNbdl0udmFsdWU9aC50b1N0cmluZygpKSx0aGlzLndoZXJl''@;'; put 'put ''Q2xhdXNlRm4oKSx0aGlzLnNldFRvR2xvYmFscygpfXNldFZhcmlhYmxlT3BlcmF0b3IoaCx2LHkpe2xldCBDPXRoaXMuY2xhdXNlcy5xdWVyeU9ialt5XS5lbGVtZW50c1toXS52YWx1ZTtDIGluc3RhbmNlb2YgQXJyYXkmJiJJTiIhPT12JiYiTk9UIElOIiE9PXYmJihDPUMgaW5zdGFuY2Vv''@;'; put 'put ''ZiBBcnJheSYmMj09PUMubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mIENbMF0/Q1swXToiIiksdGhpcy5jbGVhclZhbHVlc09wZXJhdG9yKGgseSksdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ldLmVsZW1lbnRzW2hdLm9wZXJhdG9yPXYsKCI9Ij09PXZ8fCI+Ij09PXZ8fCI8Ij09PXZ8fCI8PSI9''@;'; put 'put ''PT12fHwiPj0iPT09dnx8Ik5FIj09PXYpJiYodGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ldLmVsZW1lbnRzW2hdLnZhbHVlPUMpLCJCRVRXRUVOIj09PXYmJih0aGlzLmNsYXVzZXMucXVlcnlPYmpbeV0uZWxlbWVudHNbaF0udmFsdWU9W10sdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ldLmVsZW1l''@;'; put 'put ''bnRzW2hdLnZhbHVlLnB1c2goQyksdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ldLmVsZW1lbnRzW2hdLnZhbHVlLnB1c2goIiIpKSwoIklOIj09PXZ8fCJOT1QgSU4iPT09dikmJnRoaXMuc2V0SU5WYWx1ZXMoeSxoKSx0aGlzLndoZXJlQ2xhdXNlRm4oKSx0aGlzLnNldFRvR2xvYmFscygpfXNl''@;'; put 'put ''dElOVmFsdWVzKGgsdil7Y29uc3QgeT1bXSxDPXRoaXMuY2xhdXNlcy5xdWVyeU9ialtoXS5lbGVtZW50c1t2XS52YWx1ZXM7Qy5sZW5ndGg8MSYmKHRoaXMucGVuZGluZ0lOVmFsdWVzU2V0PXtjbGF1c2VJbmRleDpoLHF1ZXJ5SW5kZXg6dn0pO2ZvcihsZXQgST0wO0k8Qy5sZW5ndGg7SSsr''@;'; put 'put ''KXkucHVzaCh7Y2hlY2tlZDohMSx2YWw6Q1tJXS5mb3JtYXR0ZWR9KTt0aGlzLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxlbWVudHNbdl0udmFsdWU9eX1jbGVhclZhbHVlcyhoLHYpe3RoaXMuY2xhdXNlcy5xdWVyeU9ialt2XS5lbGVtZW50c1toXS52YWx1ZT0iIn1jbGVhclZhbHVlc09wZXJh''@;'; put 'put ''dG9yKGgsdil7bGV0IHk9dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ZdLmVsZW1lbnRzW2hdLm9wZXJhdG9yOygiQkVUV0VFTiI9PT15fHwiSU4iPT09eXx8Ik5PVCBJTiI9PT15fHwiQ09OVEFJTlMiPT09eSkmJnRoaXMuY2xlYXJWYWx1ZXMoaCx2KX1oYXNJbnZhbGlkQ2x1YXNlKGgpe2Zvcihs''@;'; put 'put ''ZXQgdiBvZiBoKXtpZihudWxsPT09di52YXJpYWJsZXx8bnVsbD09PXYub3BlcmF0b3J8fG51bGw9PT12LnZhbHVlfHwiIj09PXYudmFsdWUpcmV0dXJuIHYuaW52YWxpZENsYXVzZT0hMCwhMDt2LmludmFsaWRDbGF1c2U9ITF9cmV0dXJuIGguaW52YWxpZENsYXVzZT0hMSwhMX1oYXNJbnZh''@;'; put 'put ''bGlkR3JvdXBDbHVhc2UoKXtmb3IobGV0IGg9MDtoPHRoaXMuY2xhdXNlcy5xdWVyeU9iai5sZW5ndGg7aCsrKXtpZih0aGlzLmhhc0ludmFsaWRDbHVhc2UodGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1lbnRzKSlyZXR1cm4gdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmludmFsaWRD''@;'; put 'put ''bGF1c2U9ITAsITA7dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmludmFsaWRDbGF1c2U9ITF9cmV0dXJuITF9YWRkQ2xhdXNlKGgpe2lmKHRoaXMuaGFzSW52YWxpZENsdWFzZSh0aGlzLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxlbWVudHMpKXJldHVybiB2b2lkIHRoaXMuZXZlbnRTZXJ2aWNl''@;'; put 'put ''LnNob3dJbmZvTW9kYWwoIkVycm9yIiwiQ2Fubm90IGFkZCBuZXcgY2xhdXNlLCB3aGVuIG9uZSBvciBtb3JlIGNsYXVzZXMgYXJlIGludmFsaWQgb3IgZW1wdHkuIik7dGhpcy5jbGF1c2VBbXQucHVzaCgiIiksdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1lbnRzLnB1c2goe2xvZ2lj''@;'; put 'put ''Om51bGwsdHlwZTpudWxsLHZhcmlhYmxlOm51bGwsb3BlcmF0b3I6bnVsbCx2YWx1ZTpudWxsLHZhbHVlczpbXSxvcGVyYXRvcnM6W119KTtsZXQgdj10aGlzLmNsYXVzZXMucXVlcnlPYmpbaF0uY2xhdXNlTG9naWM7dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmNsYXVzZUxvZ2ljPXZvaWQg''@;'; put 'put ''MD09PXY/IkFORCI6Ik9SIj09PXY/Ik9SIjoiQU5EIix0aGlzLndoZXJlQ2xhdXNlRm4oKSx0aGlzLnNldFRvR2xvYmFscygpfWFkZEdyb3VwQ2xhdXNlKCl7dGhpcy5oYXNJbnZhbGlkR3JvdXBDbHVhc2UoKT90aGlzLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFsKCJFcnJvciIsIkNhbm5v''@;'; put 'put ''dCBhZGQgbmV3IGNsYXVzZSwgd2hlbiBvbmUgb3IgbW9yZSBjbGF1c2VzIGFyZSBpbnZhbGlkIG9yIGVtcHR5LiIpOih0aGlzLmNsYXVzZXMucXVlcnlPYmoucHVzaCh7ZWxlbWVudHM6W3tsb2dpYzpudWxsLHR5cGU6bnVsbCx2YXJpYWJsZTpudWxsLG9wZXJhdG9yOm51bGwsdmFsdWU6bnVs''@;'; put 'put ''bCx2YWx1ZXM6W10sb3BlcmF0b3JzOltdfV19KSx0aGlzLnNldFRvR2xvYmFscygpKX1pc0luSHRtbENvbGxlY3Rpb24oaCx2KXtmb3IobGV0IHk9MDt5PHYubGVuZ3RoO3krKylpZih2W3ldLnZhbHVlPT09aClyZXR1cm4hMDtyZXR1cm4hMX1yZW1vdmVHcm91cENsYXVzZShoKXt0aGlzLmNs''@;'; put 'put ''YXVzZXMucXVlcnlPYmouc3BsaWNlKGgsMSksdGhpcy53aGVyZUNsYXVzZUZuKCl9cmVtb3ZlQ2xhdXNlKGgsdil7dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW3ZdLmVsZW1lbnRzLnNwbGljZShoLDEpLHRoaXMud2hlcmVDbGF1c2VGbigpLHRoaXMuc2V0VG9HbG9iYWxzKCl9d2hlcmVDbGF1c2VG''@;'; put 'put ''bihoPSExKXtjb25zdCB2PXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5jbGF1c2VzKTtpZihoJiYodi5xdWVyeU9ialswXS5lbGVtZW50cz1bXSksdm9pZCAwIT09dGhpcy5saWJkcyl7bGV0IHk9dGhpcy5zYXNTdG9yZVNlcnZpY2Uud2hlcmVDbGF1c2VDcmVhdG9yKHYsdGhp''@;'; put 'put ''cy5ncm91cExvZ2ljLHRoaXMubGliZHMpO2h8fCh0aGlzLndoZXJlQ2xhdXNlPXkud2hlcmVDbGF1c2UsdGhpcy53aGVyZVN0cmluZz15LnN0cmluZyl9fW5nQWZ0ZXJWaWV3SW5pdCgpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5fcmVtb3ZlUXJ5PXRo''@;'; put 'put ''aXMuc2FzU3RvcmVTZXJ2aWNlLnJlbW92ZVF1ZXJ5LnN1YnNjcmliZShoPT57dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqLmxlbmd0aD49MSYmKHRoaXMuY2xhdXNlcy5xdWVyeU9iai5sZW5ndGg9MSx0aGlzLmNsYXVzZXMucXVlcnlPYmpbMF0uZWxlbWVudHMubGVuZ3RoPj0xJiYodGhpcy5jbGF1''@;'; put 'put ''c2VzLnF1ZXJ5T2JqWzBdLmVsZW1lbnRzLmxlbmd0aD0xLHRoaXMuY2xhdXNlcy5xdWVyeU9ialswXS5lbGVtZW50cz1bXSx0aGlzLmNsYXVzZXMucXVlcnlPYmpbMF0uZWxlbWVudHMucHVzaCh7bG9naWM6bnVsbCx0eXBlOm51bGwsdmFyaWFibGU6bnVsbCxvcGVyYXRvcjpudWxsLHZhbHVl''@;'; put 'put ''Om51bGwsdmFsdWVzOltdLG9wZXJhdG9yczpbXX0pLHRoaXMud2hlcmVDbGF1c2VGbigpKSl9KSx0aGlzLmNvbHVtbnNTdWI9dGhpcy5zYXNTdG9yZVNlcnZpY2UuY29sdW1ucy5zdWJzY3JpYmUoaD0+e2xldCB2PWguZGF0YS5jb2xzOygiaG9tZSI9PT1uaS5yb290UGFyYW18fCJlZGl0b3Ii''@;'; put 'put ''PT09bmkucm9vdFBhcmFtKSYmbmkuZWRpdG9yLmZpbHRlci5jb2xzLmxlbmd0aDwxJiYodGhpcy5jb2xzPXYsdGhpcy5saWJkcz1oLmxpYmRzLG5pLmVkaXRvci5maWx0ZXIuY29scz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHYpKSksInZpZXciPT09bmkucm9vdFBhcmFtJiZuaS52aWV3''@;'; put 'put ''ZXIuZmlsdGVyLmNvbHMubGVuZ3RoPDEmJih0aGlzLmNvbHM9dix0aGlzLmxpYmRzPWgubGliZHMsbmkudmlld2VyLmZpbHRlci5jb2xzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodikpKSx0aGlzLmxpYmRzfHwodGhpcy5saWJkcz1oLmxpYmRzKX0pLHRoaXMudmFsdWVzU3ViPXRoaXMu''@;'; put 'put ''c2FzU3RvcmVTZXJ2aWNlLnZhbHVlcy5zdWJzY3JpYmUoaD0+eygiaG9tZSI9PT1uaS5yb290UGFyYW18fCJlZGl0b3IiPT09bmkucm9vdFBhcmFtKSYmbmkuZWRpdG9yLmZpbHRlci52YWxzLmxlbmd0aDwxJiYodGhpcy52YWxzPWgudmFscyxuaS5lZGl0b3IuZmlsdGVyLnZhbHM9SlNPTi5w''@;'; put 'put ''YXJzZShKU09OLnN0cmluZ2lmeShoLnZhbHMpKSksInZpZXciPT09bmkucm9vdFBhcmFtJiZuaS52aWV3ZXIuZmlsdGVyLnZhbHMubGVuZ3RoPDEmJih0aGlzLnZhbHM9aC52YWxzLG5pLnZpZXdlci5maWx0ZXIudmFscz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGgudmFscykpKX0pfSl9''@;'; put 'put ''bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5nZXRGcm9tR2xvYmFscygpLHNldFRpbWVvdXQoKCk9PntsZXQgaD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdmFsc192YXJfaWQwXzAiKTtoJiZoLmZvY3VzKCl9LDUwMCl9bmdPbkRlc3Ryb3koKXt0aGlzLmNvbHVtbnNTdWImJnRoaXMuY29s''@;'; put 'put ''dW1uc1N1Yi51bnN1YnNjcmliZSgpLHRoaXMudmFsdWVzU3ViJiZ0aGlzLnZhbHVlc1N1Yi51bnN1YnNjcmliZSgpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChrZyksS3QobXUpLEt0KFhjKSxLdChkMSkpfSxkLlx1MDI3NWNtcD1UaSh7dHlw''@;'; put 'put ''ZTpkLHNlbGVjdG9yczpbWyJhcHAtcXVlcnkiXV0sZmVhdHVyZXM6W2hvKFt7cHJvdmlkZTpZZCx1c2VWYWx1ZToiZW4tR0IifV0pXSxkZWNsczozOCx2YXJzOjExLGNvbnN0czpbWzEsImNsci1mbGV4LXJvdyIsImNsci1mb3JtLWNvbnRyb2wiLCJtLTAiXSxbMSwiY2xyLWNvbnRyb2wtY29u''@;'; put 'put ''dGFpbmVyIl0sWzEsImNsci1jaGVja2JveC13cmFwcGVyIl0sWyJuYW1lIiwiZHluYW1pYy13aGVyZS1jbGF1c2UiLCJ0eXBlIiwiY2hlY2tib3giLCJpZCIsImR5bmFtaWNXaGVyZUNsYXVzZSIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbImZvciIsImR5bmFtaWNXaGVyZUNsYXVz''@;'; put 'put ''ZSIsMSwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbMSwiY2xyLWNvbnRyb2wtY29udGFpbmVyIiwibWwtMTUiXSxbIm5hbWUiLCJkeW5hbWljLXdoZXJlLWNsYXVzZSIsInR5cGUiLCJjaGVja2JveCIsImlkIiwidXNlUGlja2VycyIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiLCJjaGFuZ2Ui''@;'; put 'put ''XSxbImZvciIsInVzZVBpY2tlcnMiLDEsImNsci1jb250cm9sLWxhYmVsIl0sWzEsImNsci1yb3ciXSxbMSwic2VsZWN0IiwiY2xyLWNvbC1tZC0yIiwibWItMzAiXSxbImNsclNlbGVjdCIsIiIsMywiZGlzYWJsZWQiLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSJdLFszLCJzZWxlY3RlZCIs''@;'; put 'put ''NCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImNsci1jb2wtbWQtMTAiLCJtYi0zMCJdLFsxLCJsaW5lLW51bWJlcnMiLCJsYW5ndWFnZS1tYXJrdXAiXSxbImNsYXNzIiwicHJvZ3Jlc1N0YXRpYyBwcm9ncmVzcyBsb29wIiw0LCJuZ0lmIl0sWzEsImxhbmd1YWdlLXNxbCJdLFsxLCJjb250ZW50''@;'; put 'put ''Il0sWzEsImNsYXVzZXMtY29udGFpbmVyIiwiY2xyLWNvbC1tZC0xMiJdLFs0LCJuZ0lmIl0sWyJjbGFzcyIsImNsYXVzZS1yb3ciLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsicGlja2VyIiwiIl0sWyJub3RQaWNrZXIiLCIiXSxbIm5vdFBpY2tlclJhbmdlIiwiIl0sWyJjaGVja2JveFZhbHVl''@;'; put 'put ''cyIsIiJdLFszLCJzZWxlY3RlZCJdLFsxLCJwcm9ncmVzU3RhdGljIiwicHJvZ3Jlc3MiLCJsb29wIl0sWzEsImNsYXVzZS1yb3ciXSxbMSwiY2xhdXNlLWxvZ2ljIiwiY2xyLWNvbC1tZC0yIl0sWzEsInNlbGVjdCJdLFsiY2xyU2VsZWN0IiwiIiwzLCJuZ01vZGVsIiwiZGlzYWJsZWQiLCJu''@;'; put 'put ''Z01vZGVsQ2hhbmdlIl0sWyJjbGFzcyIsImJ0biBidG4tcHJpbWFyeSBidG4tYmxvY2sgbXQtMTAiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWzEsImNsYXVzZS1xdWVyeSIsImNsci1jb2wtbWQtMTAiXSxbInNoYXBlIiwidGltZXMiLCJzaXplIiwiMzYiLCJjbGFzcyIsInJlbW92ZS1ncm91cC1j''@;'; put 'put ''bGF1c2UtYnV0dG9uIiwzLCJjbGljayIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItcm93IiwzLCJpbnZhbGlkLWNsYXVzZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImJ0biIsImJ0bi1wcmltYXJ5IiwiYnRuLWJsb2NrIiwibXQtMTAiLDMsImNsaWNrIl0sWyJzaGFwZSIsInBsdXMiXSxb''@;'; put 'put ''InNoYXBlIiwidGltZXMiLCJzaXplIiwiMzYiLDEsInJlbW92ZS1ncm91cC1jbGF1c2UtYnV0dG9uIiwzLCJjbGljayJdLFsxLCJ2YXJpYWJsZS1jb2wiLCJmb3JtLWdyb3VwIiwiY2xyLWNvbC1tZC0zIl0sWzEsImRhdGFsaXN0LXdyYXBwZXIiXSxbImxhYmVsIiwiVmFyaWFibGUiLDMsImlk''@;'; put 'put ''IiwiaW5wdXRJZCIsImVtaXRPbmx5U2VsZWN0ZWQiLCJ2YWx1ZSIsInZhbHVlQ2hhbmdlIiwib25JbnB1dEV2ZW50Il0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJvcGVyYXRvci1jb2wiLCJmb3JtLWdyb3VwIiwiY2xyLWNvbC1tZC0zIl0sWyJjbHJTZWxlY3QiLCIiLDEsIm10LTIiLDMs''@;'; put 'put ''Im5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIl0sWyJjbGFzcyIsInZhbHVlLWNvbCBmb3JtLWdyb3VwIGNsci1jb2wtbWQtMyIsNCwibmdWYXIiXSxbMSwiY2xhdXNlLWJ1dHRvbnMiLCJjbHItY29sLW1kLTIiLCJidG4tZ3JvdXAiXSxbMSwiYnRuIiwiYnRuLXdhcm5pbmciLCJidG4tYmxvY2si''@;'; put 'put ''LDMsImRpc2FibGVkIiwiY2xpY2siXSxbInNoYXBlIiwibWludXMiXSxbMSwiYnRuIiwiYnRuLXN1Y2Nlc3MiLCJidG4tYmxvY2siLDMsImNsaWNrIl0sWzEsInZhbHVlLWNvbCIsImZvcm0tZ3JvdXAiLCJjbHItY29sLW1kLTMiXSxbImNsYXNzIiwiY2hlY2tib3gtdmFscyIsNCwibmdJZiJd''@;'; put 'put ''LFsiY2xhc3MiLCJzaW5nbGUtZmllbGQtdmFscyIsNCwibmdJZiJdLFsiY2xhc3MiLCJyYW5nZS12YWxzIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNvbnRhaW5zLXZhbHMiLDQsIm5nSWYiXSxbMSwiY2hlY2tib3gtdmFscyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLWxpbmsiLDMs''@;'; put 'put ''ImNsaWNrIl0sWzQsIm5nVGVtcGxhdGVPdXRsZXQiLCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCJdLFsxLCJzaW5nbGUtZmllbGQtdmFscyJdLFsxLCJyYW5nZS12YWxzIl0sWzEsImZyb20iXSxbMSwidG8iXSxbMSwiY29udGFpbnMtdmFscyJdLFsxLCJjbHItY29udHJvbC1sYWJlbCJdLFsi''@;'; put 'put ''dHlwZSIsInRleHQiLDEsImlucHV0LXZhbCIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbMywibmdTd2l0Y2giXSxbNCwibmdTd2l0Y2hDYXNlIl0sWyJsYWJlbCIsIlZhbHVlIiwidHlwZSIsImRhdGUiLDMsImRpc2FibGVTb2Z0c2VsZWN0IiwiaW5wdXRJZCIsInZhbHVlIiwidmFs''@;'; put 'put ''dWVDaGFuZ2UiXSxbImxhYmVsIiwiVmFsdWUiLCJ0eXBlIiwiZGF0ZSIsMywiZGlzYWJsZVNvZnRzZWxlY3QiLCJpbnB1dElkIiwidmFsdWUiLCJ2YWx1ZUNoYW5nZSIsIm9uSW5wdXRFdmVudCJdLFsidHlwZSIsInRpbWUiLDMsImRpc2FibGVTb2Z0c2VsZWN0IiwiaW5wdXRJZCIsInZhbHVl''@;'; put 'put ''IiwidmFsdWVDaGFuZ2UiLCJvbklucHV0RXZlbnQiXSxbImxhYmVsIiwiVmFsdWUiLCJ0eXBlIiwidGltZSIsMywiZGlzYWJsZVNvZnRzZWxlY3QiLCJpbnB1dElkIiwidmFsdWUiLCJvbklucHV0RXZlbnQiXSxbImxhYmVsIiwiVmFsdWUiLDMsImlucHV0SWQiLCJ2YWx1ZSIsInZhbHVlQ2hh''@;'; put 'put ''bmdlIiwib25JbnB1dEV2ZW50Il0sWzMsInZhbHVlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywidmFsdWUiXSxbImxhYmVsIiwiVmFsdWUiLDMsImlucHV0SWQiLCJ2YWx1ZSIsImRpc2FibGVkIiwidmFsdWVDaGFuZ2UiLCJvbklucHV0RXZlbnQiXSxbMSwiaW4tdmFsdWVzLW1vZGFsIiwz''@;'; put 'put ''LCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbENsb3NhYmxlIl0sWzEsIm1vZGFsLXRpdGxlIl0sWzEsIm1vZGFsLWJvZHkiXSxbImNsYXNzIiwibm8tdmFsdWVzIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImZvcm0tYmxvY2siLDQsIm5nSWYiXSxbMSwibW9kYWwtZm9vdGVyIl0sWyJ0eXBlIiwiYnV0''@;'; put 'put ''dG9uIiwxLCJidG4iLCJidG4tb3V0bGluZSIsMywiY2xpY2siXSxbMSwibm8tdmFsdWVzIl0sWzEsImZvcm0tYmxvY2siXSxbInR5cGUiLCJjaGVja2JveCIsImNsckNoZWNrYm94IiwiIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYm''@;'; put 'put ''KG50KDAsImRpdiIsMCkoMSwiZGl2IiwxKSgyLCJkaXYiLDIpKDMsImlucHV0IiwzKSxHbigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYuZHluYW1pY1doZXJlQ2xhdXNlPUN9KSxvdCgpLG50KDQsImxhYmVsIiw0KSxZdCg1LCJEeW5hbWljIHdoZXJlIGNsYXVzZSIpLG90''@;'; put 'put ''KCkoKSgpLG50KDYsImRpdiIsNSkoNywiZGl2IiwyKSg4LCJpbnB1dCIsNiksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2LnVzZVBpY2tlcnM9Q30pKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHYudXNlUGlja2Vyc0NoYW5nZSgpfSksb3QoKSxudCg5LCJsYWJl''@;'; put 'put ''bCIsNyksWXQoMTAsIiBVc2UgcGlja2VycyAiKSxvdCgpKCkoKSgpLG50KDExLCJkaXYiLDgpKDEyLCJkaXYiLDkpKDEzLCJjbHItc2VsZWN0LWNvbnRhaW5lciIpKDE0LCJsYWJlbCIpLFl0KDE1LCJHcm91cCBsb2dpYyIpLG90KCksbnQoMTYsInNlbGVjdCIsMTApLEduKCJuZ01vZGVsQ2hh''@;'; put 'put ''bmdlIixmdW5jdGlvbihDKXtyZXR1cm4gdi5ncm91cExvZ2ljPUN9KSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gdi5zZXRHcm91cExvZ2ljKHYuZ3JvdXBMb2dpYyl9KSxybigxNyxvZ3QsMiwyLCJvcHRpb24iLDExKSxvdCgpKCkoKSxudCgxOCwiZGl2IiwxMikoMTksInBy''@;'; put 'put ''ZSIsMTMpLFl0KDIwLCIgICAgICAiKSxybigyMSxhZ3QsNCwwLCJkaXYiLDE0KSxZdCgyMiwiXG5cbiAgICAgICIpLG50KDIzLCJjb2RlIiwxNSksWXQoMjQpLG90KCksWXQoMjUsIlxuICAgICIpLG90KCkoKSgpLG50KDI2LCJkaXYiLDE2KSgyNywiZGl2IiwxNykscm4oMjgsbGd0LDEsMCwi''@;'; put 'put ''ZGl2IiwxOCkscm4oMjksRWd0LDE1LDgsImRpdiIsMTkpLG90KCkoKSxybigzMCxEZ3QsNCw0LCJuZy10ZW1wbGF0ZSIsbnVsbCwyMCxacikscm4oMzIsT2d0LDIsMywibmctdGVtcGxhdGUiLG51bGwsMjEsWnIpLHJuKDM0LEJndCwyLDQsIm5nLXRlbXBsYXRlIixudWxsLDIyLFpyKSxybigz''@;'; put 'put ''NixOZ3QsOSw0LCJuZy10ZW1wbGF0ZSIsbnVsbCwyMyxacikpLDImaCYmKHV0KDMpLFR0KCJuZ01vZGVsIix2LmR5bmFtaWNXaGVyZUNsYXVzZSksdXQoNSksVHQoIm5nTW9kZWwiLHYudXNlUGlja2VycyksdXQoOCksVHQoImRpc2FibGVkIiwobnVsbD09di5jbGF1c2VzfHxudWxsPT12LmNs''@;'; put 'put ''YXVzZXMucXVlcnlPYmo/bnVsbDp2LmNsYXVzZXMucXVlcnlPYmoubGVuZ3RoKTwxKSgibmdNb2RlbCIsdi5ncm91cExvZ2ljKSx1dCgxKSxUdCgibmdGb3JPZiIsdi5sb2dpY09wZXJhdG9ycyksdXQoNCksVHQoIm5nSWYiLHYud2hlcmVDbGF1c2VMb2FkaW5nKSx1dCgzKSxqaSh2LndoZXJl''@;'; put 'put ''Q2xhdXNlKSx1dCgzKSxGaSgiY2xyLWNvbC1tZC0xMCIsKG51bGw9PXYuY2xhdXNlc3x8bnVsbD09di5jbGF1c2VzLnF1ZXJ5T2JqP251bGw6di5jbGF1c2VzLnF1ZXJ5T2JqLmxlbmd0aCk+MSksdXQoMSksVHQoIm5nSWYiLChudWxsPT12LmNsYXVzZXN8fG51bGw9PXYuY2xhdXNlcy5xdWVy''@;'; put 'put ''eU9iaj9udWxsOnYuY2xhdXNlcy5xdWVyeU9iai5sZW5ndGgpPjEpLHV0KDEpLFR0KCJuZ0Zvck9mIix2LmNsYXVzZXMucXVlcnlPYmopKX0sZGVwZW5kZW5jaWVzOlt4cyxObyxYZCxKZCxpcCwkMyxxMyxtMSxJZixPZixUcyxJcyx3bCxpZCxvZCxhdCxSbyxsbyxPaSxvWixpWixTTGUsTUxl''@;'; put 'put ''LHJndCxpZ3RdLHN0eWxlczpbJ0BjaGFyc2V0ICJVVEYtOCI7LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRp''@;'; put 'put ''cmVjdGlvbjpjb2x1bW59LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtbG9naWNbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0''@;'; put 'put ''aW9uOmNvbHVtbjtiYWNrZ3JvdW5kOiNlOWU5ZTk7cGFkZGluZzoxNXB4fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjMwcHggMCAyMHB4''@;'; put 'put ''IDIwcHg7YmFja2dyb3VuZDojZmJmOGY4O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwb3NpdGlvbjpyZWxhdGl2ZX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gPiAuY2xyLXJvd1tfbmdjb250ZW50LSVDT01QJV17anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdID4gLmNsci1yb3dbX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFzdC1jaGlsZCl7cGFkZGluZy1ib3R0b206MTVweDttYXJnaW4tYm90dG9tOjE1cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTYpfS5j''@;'; put 'put ''b250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yZW1vdmUtZ3JvdXAtY2xhdXNlLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1''@;'; put 'put ''dGU7dG9wOjBweDtyaWdodDoxMHB4O2NvbG9yOmdyYXl9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhcmlhYmxlLWNvbFtfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7cGFkZGluZy1ib3R0b206MXB4fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAg''@;'; put 'put ''IC52YXJpYWJsZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGFsaXN0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdLCAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0gICAudmFyaWFibGUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kYXRhbGlzdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNv''@;'; put 'put ''bnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5vcGVyYXRvci1jb2xbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5j''@;'; put 'put ''bGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5vcGVyYXRvci1jb2xbX25nY29udGVudC0lQ09NUCVdICAgY2xyLXNlbGVjdC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo0NXB4O21hcmdp''@;'; put 'put ''bi10b3A6MDt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6Zmxl''@;'; put 'put ''eDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O3BhZGRpbmctYm90dG9tOjFweH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXSAgIC5jaGVja2JveC12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlO3BhZGRpbmc6MCA1cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMyl9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuY2hlY2tib3gtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICBjbHItY2hlY2tib3gtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtt''@;'; put 'put ''YXJnaW4tdG9wOjB9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuY2hlY2tib3gtdmFsc1tf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV0gICBzZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXttYXgtaGVpZ2h0OjEyMHB4O292ZXJmbG93LXk6c2Nyb2xsfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnNpbmdsZS1maWVsZC12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnNpbmdsZS1maWVsZC12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lcnt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnNpbmdsZS1maWVsZC12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAg''@;'; put 'put ''LmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLWlucHV0LXdyYXBwZXJ7bWF4LXdpZHRoOm5vbmV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZh''@;'; put 'put ''bHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuc2luZ2xlLWZpZWxkLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlciAuY2xyLWlucHV0LWdyb3Vwe3dpZHRoOjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuc2luZ2xlLWZpZWxkLXZhbHNbX25nY29udGVudC0lQ09NUCVdID4gaW5wdXRbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuc2lu''@;'; put 'put ''Z2xlLWZpZWxkLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbdHlwZT10aW1lXVtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTtwYWRkaW5nLXJpZ2h0OjE3cHh9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAucmFuZ2UtdmFsc1tfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJb''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yYW5nZS12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lcnt3aWR0aDoxMDAlfS5jb250ZW50''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgICAu''@;'; put 'put ''Y2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlcnttYXgtd2lkdGg6bm9uZX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFs''@;'; put 'put ''dWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yYW5nZS12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLWlucHV0LXdyYXBwZXIgLmNsci1pbnB1dC1ncm91cHt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5j''@;'; put 'put ''bGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgLmZyb21bX25nY29udGVudC0lQ09NUCVde21h''@;'; put 'put ''cmdpbi1ib3R0b206MTBweH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yYW5nZS12YWxz''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5mcm9tW19uZ2NvbnRlbnQtJUNPTVAlXSA+IGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1''@;'; put 'put ''ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgLmZyb21bX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbdHlwZT10aW1lXVtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTtw''@;'; put 'put ''YWRkaW5nLXJpZ2h0OjE3cHh9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAucmFuZ2UtdmFs''@;'; put 'put ''c1tfbmdjb250ZW50LSVDT01QJV0gICAuZnJvbVtfbmdjb250ZW50LSVDT01QJV0sIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xb''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgLnRvW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4td2lkdGg6MTAwcHh9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5j''@;'; put 'put ''bGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAucmFuZ2UtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAuZnJvbVtfbmdjb250ZW50LSVDT01QJV0gPiBpbnB1dFtfbmdjb250ZW50LSVDT01QJV0sIC5jb250ZW50W19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgLnRvW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXSA+IGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1j''@;'; put 'put ''b2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgLmZyb21bX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbdHlwZT10aW1lXVtfbmdjb250ZW50LSVDT01QJV0sIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRh''@;'; put 'put ''aW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgLnRvW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0W3R5cGU9dGlt''@;'; put 'put ''ZV1bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7cGFkZGluZy1yaWdodDoxN3B4fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1j''@;'; put 'put ''b2xbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRhaW5zLXZhbHNbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGFpbnMtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItY29udHJvbC1jb250YWluZXJ7d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250YWlucy12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLWlucHV0LXdyYXBwZXJ7''@;'; put 'put ''bWF4LXdpZHRoOm5vbmV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGFpbnMtdmFs''@;'; put 'put ''c1tfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItY29udHJvbC1jb250YWluZXIgLmNsci1pbnB1dC13cmFwcGVyIC5jbHItaW5wdXQtZ3JvdXB7d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAg''@;'; put 'put ''LmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250YWlucy12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSA+IGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRhaW5zLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbdHlwZT10aW1lXVtf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTtwYWRkaW5nLXJpZ2h0OjE3cHh9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1idXR0''@;'; put 'put ''b25zW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZDtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6Y2VudGVyfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtYnV0dG9uc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde21pbi13aWR0aDphdXRvfS5pbnZhbGlkLWNsYXVzZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxl''@;'; put 'put ''ZnQ6MnB4IHNvbGlkICNkOTRiMzF9LmNsYXVzZS1yb3dbX25nY29udGVudC0lQ09NUCVdICAgY2xyLWljb25bX25nY29udGVudC0lQ09NUCVde21hcmdpbjowfS5jbGF1c2Utcm93W19uZ2NvbnRlbnQtJUNPTVAlXTphZnRlcntwb3NpdGlvbjpyZWxhdGl2ZTtjb250ZW50OiIiO2hlaWdodDou''@;'; put 'put ''NDE2NjdyZW07d2lkdGg6LjQxNjY3cmVtO3RvcDouMjkxNjdyZW07cmlnaHQ6LjI1cmVtO2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZ1xcMjAyNiUyQzkuODQlMkMz''@;'; put 'put ''LjI0YTAuNjglMkMwLjY4JTJDMCUyQzElMkMxJTJDMSUyQzFaJTIyJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW47dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbjowfVtfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV06bm90KHByZSkgPiBjb2RlW2NsYXNzKj1sYW5ndWFnZS1dW19uZ2NvbnRlbnQtJUNPTVAlXSwgcHJlW2NsYXNzKj1sYW5ndWFnZS1dW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYmY4Zjh9cHJlW2NsYXNzKj1sYW5ndWFnZS1dW19uZ2NvbnRlbnQtJUNPTVAlXXtw''@;'; put 'put ''YWRkaW5nOjhweDttYXJnaW46MDtib3JkZXItcmFkaXVzOjFweDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWluLWhlaWdodDo2NnB4O3Bvc2l0aW9uOnJlbGF0aXZlfXByZVtjbGFzcyo9bGFuZ3VhZ2UtXVtfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV0gICBzcGFuLnNwaW5uZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MTBweDt0b3A6MTBweH1wcmVbY2xhc3MqPWxhbmd1YWdlLV1bX25nY29udGVudC0lQ09NUCVdICAgY29kZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6cHJlLXdyYXA7d29y''@;'; put 'put ''ZC1icmVhazpicmVhay13b3JkfS5pbnB1dC12YWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowcHg7YmFja2dyb3VuZDojZmJmOGY4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM5OTk5OTl9Y2xyLWRhdGUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjJweCFp''@;'; put 'put ''bXBvcnRhbnR9aW5wdXRbdHlwZT10aW1lXVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYjNiM2IzfWlucHV0W3R5cGU9dGltZV1bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze291dGxpbmU6bm9uZX0u''@;'; put 'put ''aW4tdmFsdWVzLW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tb2RhbC1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICNkOGQ4ZDg7bWFyZ2luLXRvcDoxMHB4fS5wcm9ncmVzc1tfbmdjb250ZW50LSVDT01QJV0sIC5wcm9ncmVzcy1zdGF0aWNbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7d2lkdGg6MTAwJTtoZWlnaHQ6NHB4O3RvcDozcHh9J119KSxkfSkoKSxWZ3Q9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuZmlsZU92ZXI9ITEsdGhpcy5maWxlRHJvcHBlZD1uZXcgYXIsdGhpcy5m''@;'; put 'put ''aWxlRHJhZ2dlZE92ZXI9bmV3IGFyfW9uRHJhZ092ZXIoaCl7aC5wcmV2ZW50RGVmYXVsdCgpLGguc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5jb250YWluc0ZpbGVzKGgpJiYhdGhpcy5maWxlT3ZlciYmKHRoaXMuZmlsZU92ZXI9ITAsdGhpcy5maWxlRHJhZ2dlZE92ZXIuZW1pdCgpKX1vbkRy''@;'; put 'put ''YWdMZWF2ZShoKXtoLnByZXZlbnREZWZhdWx0KCksaC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmZpbGVPdmVyPSExfW9uZHJvcChoKXtoLnByZXZlbnREZWZhdWx0KCksaC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmZpbGVPdmVyPSExO2NvbnN0IHY9aC5kYXRhVHJhbnNmZXIuZmlsZXM7di5s''@;'; put 'put ''ZW5ndGg+MCYmdGhpcy5maWxlRHJvcHBlZC5lbWl0KHYpfWNvbnRhaW5zRmlsZXMoaCl7aWYoaCYmaC5kYXRhVHJhbnNmZXImJmguZGF0YVRyYW5zZmVyLnR5cGVzKWZvcihsZXQgdj0wO3Y8aC5kYXRhVHJhbnNmZXIudHlwZXMubGVuZ3RoO3YrKylpZigiRmlsZXMiPT1oLmRhdGFUcmFuc2Zl''@;'; put 'put ''ci50eXBlc1t2XSlyZXR1cm4hMH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1ZGlyPVdpKHt0eXBlOmQsc2VsZWN0b3JzOltbIiIsImFwcERyYWdOZHJvcCIsIiJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYp''@;'; put 'put ''ezEmaCYmR24oImRyYWdvdmVyIixmdW5jdGlvbihDKXtyZXR1cm4gdi5vbkRyYWdPdmVyKEMpfSkoImRyYWdsZWF2ZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25EcmFnTGVhdmUoQyl9KSgiZHJvcCIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25kcm9wKEMpfSksMiZoJiZGaSgiZmlsZW92ZXIi''@;'; put 'put ''LHYuZmlsZU92ZXIpfSxvdXRwdXRzOntmaWxlRHJvcHBlZDoiZmlsZURyb3BwZWQiLGZpbGVEcmFnZ2VkT3ZlcjoiZmlsZURyYWdnZWRPdmVyIn19KSxkfSkoKTtmdW5jdGlvbiBqZ3QoZCxnKXsxJmQmJihudCgwLCJwIiw4KSxZdCgxLCIgTm8gZGF0YXNldCBtZXRhIHRvIHNob3cuICIpLG90''@;'; put 'put ''KCkpfWZ1bmN0aW9uIFpndChkLGcpe2lmKDEmZCYmKG50KDAsImNsci1kZy1yb3ciKSgxLCJjbHItZGctY2VsbCIpLFl0KDIpLG90KCksbnQoMywiY2xyLWRnLWNlbGwiKSxZdCg0KSxvdCgpKCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDt1dCgyKSxqaShoLk5BTUUpLHV0KDIpLGppKGgu''@;'; put 'put ''VkFMVUUpfX1mdW5jdGlvbiB6Z3QoZCxnKXtpZigxJmQmJihudCgwLCJjbHItdGFiLWNvbnRlbnQiLDExKSgxLCJjbHItZGF0YWdyaWQiKSgyLCJjbHItZGctY29sdW1uIiksWXQoMywiTmFtZSIpLG90KCksbnQoNCwiY2xyLWRnLWNvbHVtbiIpLFl0KDUsIlZhbHVlIiksb3QoKSxybig2LFpn''@;'; put 'put ''dCw1LDIsImNsci1kZy1yb3ciLDUpLG90KCkoKSksMiZkKXtjb25zdCBoPVF0KCkuJGltcGxpY2l0O3V0KDYpLFR0KCJuZ0Zvck9mIixoLmRzbWV0YSl9fWZ1bmN0aW9uIEdndChkLGcpe2lmKDEmZCYmKG50KDAsImNsci10YWIiKSgxLCJidXR0b24iLDkpLFl0KDIpLG90KCkscm4oMyx6Z3Qs''@;'; put 'put ''NywxLCJjbHItdGFiLWNvbnRlbnQiLDEwKSxvdCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1nLmluZGV4O3V0KDIpLGppKGguZ3JvdXApLHV0KDEpLFR0KCJjbHJJZkFjdGl2ZSIsMD09PXYpfX1sZXQgeExlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoKXt0aGlzLm9wZW49ITEs''@;'; put 'put ''dGhpcy5kc21ldGE9W10sdGhpcy5vcGVuQ2hhbmdlPW5ldyBhcix0aGlzLmRzbWV0YUdyb3VwcGVkPVtdfW5nT25Jbml0KCl7fW5nT25DaGFuZ2VzKGgpe3ZhciB2LHk7KG51bGw9PT0oeT1udWxsPT09KHY9aC5kc21ldGEpfHx2b2lkIDA9PT12P3ZvaWQgMDp2LmN1cnJlbnRWYWx1ZSl8fHZv''@;'; put 'put ''aWQgMD09PXk/dm9pZCAwOnkubGVuZ3RoKT4wJiZ0aGlzLnBhcnNlRFNNZXRhKCl9cGFyc2VEU01ldGEoKXt0aGlzLmRzbWV0YUdyb3VwcGVkPVtdO2ZvcihsZXQgaCBvZiB0aGlzLmRzbWV0YSl7bGV0IHY9dGhpcy5kc21ldGFHcm91cHBlZC5maW5kSW5kZXgoeT0+eS5ncm91cD09PWguT0RT''@;'; put 'put ''X1RBQkxFKTt2PDAmJih2PXRoaXMuZHNtZXRhR3JvdXBwZWQucHVzaCh7Z3JvdXA6aC5PRFNfVEFCTEUsZHNtZXRhOltdfSktMSksdGhpcy5kc21ldGFHcm91cHBlZFt2XS5kc21ldGEucHVzaChoKX19b25PcGVuQ2hhbmdlKGgpe3RoaXMub3Blbj1oLHRoaXMub3BlbkNoYW5nZS5lbWl0KGgp''@;'; put 'put ''fW9uQ2xvc2VDbGljaygpe3RoaXMub25PcGVuQ2hhbmdlKCExKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1kYXRhc2V0LWluZm8iXV0saW5wdXRzOntvcGVuOiJvcGVuIixk''@;'; put 'put ''c21ldGE6ImRzbWV0YSJ9LG91dHB1dHM6e29wZW5DaGFuZ2U6Im9wZW5DaGFuZ2UifSxmZWF0dXJlczpbRDJdLGRlY2xzOjEwLHZhcnM6NSxjb25zdHM6W1szLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbFNpemUiLCJjbHJNb2RhbENsb3NhYmxlIiwiY2xyTW9kYWxPcGVuQ2hhbmdlIl0sWzEs''@;'; put 'put ''Im1vZGFsLXRpdGxlIiwiY2VudGVyIiwidGV4dC1jZW50ZXIiLCJjb2xvci1kYXJrZXItZ3JheSJdLFsxLCJtb2RhbC1ib2R5Il0sWyJjbGFzcyIsInRleHQtY2VudGVyIiw0LCJuZ0lmIl0sWyJjbHJMYXlvdXQiLCJ2ZXJ0aWNhbCJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwibW9kYWwt''@;'; put 'put ''Zm9vdGVyIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4taW5mby1vdXRsaW5lIiwzLCJjbGljayJdLFsxLCJ0ZXh0LWNlbnRlciJdLFsiY2xyVGFiTGluayIsIiIsImlkIiwibGluazEiXSxbImlkIiwiY29udGVudDEiLCJjbGFzcyIsImQtZmxleCBjbHItanVzdGlm''@;'; put 'put ''eS1jb250ZW50LWNlbnRlciB3LTEwMCIsNCwiY2xySWZBY3RpdmUiXSxbImlkIiwiY29udGVudDEiLDEsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwidy0xMDAiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihudCgwLCJjbHItbW9kYWwiLDApLEduKCJjbHJN''@;'; put 'put ''b2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2Lm9uT3BlbkNoYW5nZShDKX0pLG50KDEsImgzIiwxKSxZdCgyLCJEYXRhc2V0IE1ldGEiKSxvdCgpLG50KDMsImRpdiIsMikscm4oNCxqZ3QsMiwwLCJwIiwzKSxudCg1LCJjbHItdGFicyIsNCkscm4oNixHZ3QsNCwyLCJjbHIt''@;'; put 'put ''dGFiIiw1KSxvdCgpKCksbnQoNywiZGl2Iiw2KSg4LCJidXR0b24iLDcpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5vbkNsb3NlQ2xpY2soKX0pLFl0KDksIiBDbG9zZSAiKSxvdCgpKCkoKSksMiZoJiYoVHQoImNsck1vZGFsT3BlbiIsdi5vcGVuKSgiY2xyTW9kYWxTaXplIiwi''@;'; put 'put ''eGwiKSgiY2xyTW9kYWxDbG9zYWJsZSIsITApLHV0KDQpLFR0KCJuZ0lmIix2LmRzbWV0YUdyb3VwcGVkLmxlbmd0aDwxKSx1dCgyKSxUdCgibmdGb3JPZiIsdi5kc21ldGFHcm91cHBlZCkpfSxkZXBlbmRlbmNpZXM6W3hzLE5vLEdMLGdTLG1TLG13LFlMLEFTLHlTLHZTLHB3LFZMLFpMLGlk''@;'; put 'put ''LG9kLEcyLEtMLHFMLEFaLCRMLFhMLG1aXSxzdHlsZXM6WyIubW9kYWwtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBjbHItdGFic1tfbmdjb250ZW50LSVDT01QJV17bWF4LWhlaWdodDo3MHZofS5tb2RhbC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLnRhYi1jb250ZW50e3dpZHRo''@;'; put 'put ''OjEwMCU7b3ZlcmZsb3c6YXV0b30ubW9kYWwtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICAgIC50YWItY29udGVudCAuZGF0YWdyaWQtb3V0ZXItd3JhcHBlcnt3aWR0aDoxMDAlfSJdfSksZH0pKCk7ZnVuY3Rpb24gV2d0KGQsZyl7aWYoMSZkJiYobnQoMCwic3BhbiIsMTMpLFl0KDEpLG90''@;'; put 'put ''KCkpLDImZCl7Y29uc3QgaD1RdCgyKTt1dCgxKSxqaShoLmdlbmVyYXRlZFJlY29yZFVybCl9fWZ1bmN0aW9uIFlndChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImJ1dHRvbiIsMTQpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgyKS5nZW5lcmF0ZUVk''@;'; put 'put ''aXRSZWNvcmRVcmwoKSl9KSxZdCgxKSxvdCgpfWlmKDImZCl7Y29uc3QgaD1RdCgyKTtUdCgiZGlzYWJsZWQiLGguZ2VuZXJhdGVFZGl0UmVjb3JkVXJsTG9hZGluZyksdXQoMSksSmkoIiAiLGguZ2VuZXJhdGVkUmVjb3JkVXJsPyJjb3B5IHRvIGNsaXBib2FyZCI6aC5nZW5lcmF0ZUVkaXRS''@;'; put 'put ''ZWNvcmRVcmxMb2FkaW5nPyJHZW5lcmF0aW5nIHVybC4uLiI6IkxpbmsgdG8gdGhpcyByZWNvcmQiLCIgIil9fWZ1bmN0aW9uIFVndChkLGcpe2lmKDEmZCYmKEIwKDApLHJuKDEsV2d0LDIsMSwic3BhbiIsMTEpLHJuKDIsWWd0LDIsMiwiYnV0dG9uIiwxMiksUDAoKSksMiZkKXtjb25zdCBo''@;'; put 'put ''PVF0KCk7dXQoMSksVHQoIm5nSWYiLCEobnVsbCE9aC5jdXJyZW50UmVjb3JkJiZoLmN1cnJlbnRSZWNvcmQubm9MaW5rT3B0aW9uKSksdXQoMSksVHQoIm5nSWYiLCEobnVsbCE9aC5jdXJyZW50UmVjb3JkJiZoLmN1cnJlbnRSZWNvcmQubm9MaW5rT3B0aW9uKSl9fWZ1bmN0aW9uIFFndChk''@;'; put 'put ''LGcpezEmZCYmKG50KDAsImRpdiIsMTUpKDEsInNwYW4iLDE2KSxZdCgyLCIgTG9hZGluZy4uLiAiKSxvdCgpKCkpfWZ1bmN0aW9uIEpndChkLGcpezEmZCYmQ3IoMCwiY2xyLWljb24iLDI5KX1mdW5jdGlvbiBYZ3QoZCxnKXsxJmQmJihudCgwLCJzcGFuIiwzMCksWXQoMSwiIExvYWRpbmcu''@;'; put 'put ''Li4gIiksb3QoKSl9ZnVuY3Rpb24gS2d0KGQsZyl7MSZkJiZDcigwLCJjZHMtaWNvbiIsMzEpfWZ1bmN0aW9uICRndChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci1pbnB1dC1jb250YWluZXIiLDMzKSgxLCJpbnB1dCIsMzQpLEduKCJmb2N1c2luIixmdW5jdGlvbih5KXtp''@;'; put 'put ''dChoKTtjb25zdCBDPVF0KDMpLmluZGV4O3JldHVybiBhKFF0KDIpLm9uUmVjb3JkSW5wdXRGb2N1cyh5LEMpKX0pKCJwYXN0ZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoNSkucmVjb3JkSW5wdXRQYXN0ZSh5KSl9KSgiaW5wdXQiLGZ1bmN0aW9uKHkpe2l0KGgpO2NvbnN0IEM9''@;'; put 'put ''UXQoMykuJGltcGxpY2l0LEk9UXQoMik7cmV0dXJuIEkucmVjb3JkSW5wdXRDaGFuZ2UoeSxDLmtleSksYShJLmN1cnJlbnRSZWNvcmQubm9MaW5rT3B0aW9uPSEwKX0pKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXtpdChoKTtjb25zdCBDPVF0KDMpLiRpbXBsaWNpdDtyZXR1cm4gYShR''@;'; put 'put ''dCgyKS5jdXJyZW50UmVjb3JkW0Mua2V5XT15KX0pLG90KCkoKX1pZigyJmQpe2NvbnN0IGg9UXQoMykuJGltcGxpY2l0LHY9UXQoMik7RmkoImludmFsaWQtZGF0YSIsdi5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMuaW5jbHVkZXMoaC5rZXkpKSx1dCgxKSxUdCgibmdNb2RlbCIsdi5jdXJy''@;'; put 'put ''ZW50UmVjb3JkW2gua2V5XSl9fWZ1bmN0aW9uIHFndChkLGcpezEmZCYmZjEoMCl9Y29uc3QgRG1lPWZ1bmN0aW9uKGQsZyl7cmV0dXJue2NvbDpkLGNvbEluZGV4Omd9fTtmdW5jdGlvbiBlbXQoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiKSxybigxLHFndCwxLDAsIm5nLWNvbnRhaW5lciIs''@;'; put 'put ''MzUpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgzKSx2PWguJGltcGxpY2l0LHk9aC5pbmRleDtRdCgyKTtjb25zdCBDPXZhKDE2KTt1dCgxKSxUdCgibmdUZW1wbGF0ZU91dGxldCIsQykoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixqMygyLERtZSx2LHkpKX19Y29uc3QgdG10PWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuWyJudW1lcmljIix2b2lkIDBdfSxUTGU9ZnVuY3Rpb24oKXtyZXR1cm5bImF1dG9jb21wbGV0ZSJdfTtmdW5jdGlvbiBubXQoZCxnKXtpZigxJmQmJihCMCgwKSxybigxLCRndCwyLDMsImNsci1pbnB1dC1jb250YWluZXIiLDMyKSxybigyLGVtdCwyLDUsImRpdiIsMiksUDAo''@;'; put 'put ''KSksMiZkKXtjb25zdCBoPVF0KDIpLiRpbXBsaWNpdCx2PVF0KDIpO2xldCB5LEM7dXQoMSksVHQoIm5nSWYiLGNzKDIsdG10KS5pbmNsdWRlcyhudWxsPT12LmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PSh5PXYuY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKGgua2V5KSk/''@;'; put 'put ''bnVsbDp5LmVkaXRvcikpLHV0KDEpLFR0KCJuZ0lmIixjcygzLFRMZSkuaW5jbHVkZXMobnVsbD09di5jdXJyZW50UmVjb3JkVmFsaWRhdG9yfHxudWxsPT0oQz12LmN1cnJlbnRSZWNvcmRWYWxpZGF0b3IuZ2V0UnVsZShoLmtleSkpP251bGw6Qy5lZGl0b3IpKX19ZnVuY3Rpb24gcm10KGQs''@;'; put 'put ''Zyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiY2xyLXRleHRhcmVhLWNvbnRhaW5lciIpKDEsInRleHRhcmVhIiwzNiwzNyksR24oImZvY3VzaW4iLGZ1bmN0aW9uKHkpe2l0KGgpO2NvbnN0IEM9UXQoMykuaW5kZXg7cmV0dXJuIGEoUXQoMikub25SZWNvcmRJbnB1dEZvY3VzKHksQykp''@;'; put 'put ''fSkoInBhc3RlIixmdW5jdGlvbih5KXtyZXR1cm4gaXQoaCksYShRdCg1KS5yZWNvcmRJbnB1dFBhc3RlKHkpKX0pKCJpbnB1dCIsZnVuY3Rpb24oeSl7aXQoaCk7Y29uc3QgQz1RdCgzKS4kaW1wbGljaXQ7cmV0dXJuIGEoUXQoMikucmVjb3JkSW5wdXRDaGFuZ2UoeSxDLmtleSkpfSkoIm5n''@;'; put 'put ''TW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe2l0KGgpO2NvbnN0IEM9UXQoMykuJGltcGxpY2l0O3JldHVybiBhKFF0KDIpLmN1cnJlbnRSZWNvcmRbQy5rZXldPXkpfSksWXQoMywiICAgICAgICAgICAgICAgICAgIiksb3QoKSxudCg0LCJjbHItY29udHJvbC1oZWxwZXIiKSxZdCg1KSxvdCgp''@;'; put 'put ''KCl9aWYoMiZkKXtjb25zdCBoPXZhKDIpLHY9UXQoMykuJGltcGxpY2l0LHk9UXQoMik7bGV0IEMsSSxaO3V0KDEpLEZpKCJpbnZhbGlkLWRhdGEiLHkuY3VycmVudFJlY29yZEludmFsaWRDb2xzLmluY2x1ZGVzKHYua2V5KSkoIm5vdC1jaGFyIixudWxsPT15LmN1cnJlbnRSZWNvcmRWYWxp''@;'; put 'put ''ZGF0b3J8fG51bGw9PShDPXkuY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKHYua2V5KSk/bnVsbDpDLnR5cGUpLFR0KCJyb3dzIix2LnZhbHVlLmxlbmd0aD44MD82OjEpKCJuZ01vZGVsIix5LmN1cnJlbnRSZWNvcmRbdi5rZXldKSgibWF4TGVuZ3RoIixudWxsPT15LmN1cnJlbnRS''@;'; put 'put ''ZWNvcmRWYWxpZGF0b3J8fG51bGw9PShJPXkuY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKHYua2V5KSk/bnVsbDpJLmxlbmd0aCksdXQoNCksRmgoIiIsaC52YWx1ZS5sZW5ndGgsIiAvICIsbnVsbD09eS5jdXJyZW50UmVjb3JkVmFsaWRhdG9yfHxudWxsPT0oWj15LmN1cnJlbnRS''@;'; put 'put ''ZWNvcmRWYWxpZGF0b3IuZ2V0UnVsZSh2LmtleSkpP251bGw6Wi5sZW5ndGgsIiIpfX1mdW5jdGlvbiBpbXQoZCxnKXsxJmQmJmYxKDApfWZ1bmN0aW9uIG9tdChkLGcpe2lmKDEmZCYmKG50KDAsImRpdiIpLHJuKDEsaW10LDEsMCwibmctY29udGFpbmVyIiwzNSksb3QoKSksMiZkKXtjb25z''@;'; put 'put ''dCBoPVF0KDMpLHY9aC4kaW1wbGljaXQseT1oLmluZGV4O1F0KDIpO2NvbnN0IEM9dmEoMTYpO3V0KDEpLFR0KCJuZ1RlbXBsYXRlT3V0bGV0IixDKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLGozKDIsRG1lLHYseSkpfX1jb25zdCBhbXQ9ZnVuY3Rpb24oKXtyZXR1cm5bdm9pZCAwXX07''@;'; put 'put ''ZnVuY3Rpb24gbG10KGQsZyl7aWYoMSZkJiYoQjAoMCkscm4oMSxybXQsNiw5LCJjbHItdGV4dGFyZWEtY29udGFpbmVyIiwyKSxybigyLG9tdCwyLDUsImRpdiIsMiksUDAoKSksMiZkKXtjb25zdCBoPVF0KDIpLiRpbXBsaWNpdCx2PVF0KDIpO2xldCB5LEM7dXQoMSksVHQoIm5nSWYiLGNz''@;'; put 'put ''KDIsYW10KS5pbmNsdWRlcyhudWxsPT12LmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PSh5PXYuY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKGgua2V5KSk/bnVsbDp5LmVkaXRvcikpLHV0KDEpLFR0KCJuZ0lmIixjcygzLFRMZSkuaW5jbHVkZXMobnVsbD09di5jdXJyZW50''@;'; put 'put ''UmVjb3JkVmFsaWRhdG9yfHxudWxsPT0oQz12LmN1cnJlbnRSZWNvcmRWYWxpZGF0b3IuZ2V0UnVsZShoLmtleSkpP251bGw6Qy5lZGl0b3IpKX19ZnVuY3Rpb24gc210KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiY2xyLXRleHRhcmVhLWNvbnRhaW5lciIsMzgpKDEsInRleHRh''@;'; put 'put ''cmVhIiwzOSksR24oInBhc3RlIixmdW5jdGlvbih5KXtyZXR1cm4gaXQoaCksYShRdCg0KS5yZWNvcmRJbnB1dFBhc3RlKHkpKX0pKCJpbnB1dCIsZnVuY3Rpb24oeSl7aXQoaCk7Y29uc3QgQz1RdCgyKS4kaW1wbGljaXQ7cmV0dXJuIGEoUXQoMikucmVjb3JkSW5wdXRDaGFuZ2UoeSxDLmtl''@;'; put 'put ''eSkpfSkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe2l0KGgpO2NvbnN0IEM9UXQoMikuJGltcGxpY2l0O3JldHVybiBhKFF0KDIpLmN1cnJlbnRSZWNvcmRbQy5rZXldPXkpfSksb3QoKSxudCgyLCJjbHItY29udHJvbC1oZWxwZXIiKSxZdCgzLCJISDptbTpzcyIpLG90KCkoKX1pZigy''@;'; put 'put ''JmQpe2NvbnN0IGg9UXQoMikuJGltcGxpY2l0LHY9UXQoMik7bGV0IHk7dXQoMSksRmkoImludmFsaWQtZGF0YSIsdi5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMuaW5jbHVkZXMoaC5rZXkpKSgibm90LWNoYXIiLG51bGw9PXYuY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KHk9di5j''@;'; put 'put ''dXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUoaC5rZXkpKT9udWxsOnkudHlwZSksVHQoInJvd3MiLGgudmFsdWUubGVuZ3RoPjgwPzY6MSkoIm5nTW9kZWwiLHYuY3VycmVudFJlY29yZFtoLmtleV0pfX1mdW5jdGlvbiB1bXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJk''@;'; put 'put ''aXYiLDM4KSgxLCJ0ZXh0YXJlYSIsNDApLEduKCJwYXN0ZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoNCkucmVjb3JkSW5wdXRQYXN0ZSh5KSl9KSgiaW5wdXQiLGZ1bmN0aW9uKHkpe2l0KGgpO2NvbnN0IEM9UXQoMikuJGltcGxpY2l0O3JldHVybiBhKFF0KDIpLnJlY29yZElu''@;'; put 'put ''cHV0Q2hhbmdlKHksQy5rZXkpKX0pKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXtpdChoKTtjb25zdCBDPVF0KDIpLiRpbXBsaWNpdDtyZXR1cm4gYShRdCgyKS5jdXJyZW50UmVjb3JkW0Mua2V5XT15KX0pLG90KCksbnQoMiwiY2xyLWRhdGUtY29udGFpbmVyIiw0MSkoMywiaW5wdXQi''@;'; put 'put ''LDQyKSxHbigiY2xyRGF0ZUNoYW5nZSIsZnVuY3Rpb24oeSl7aXQoaCk7Y29uc3QgQz1RdCgyKS4kaW1wbGljaXQ7cmV0dXJuIGEoUXQoMikucmVjb3JkRGF0ZUNoYW5nZSh5LEMua2V5KSl9KSxvdCgpKCkoKX1pZigyJmQpe2NvbnN0IGg9UXQoMikuJGltcGxpY2l0LHY9UXQoMik7dXQoMSks''@;'; put 'put ''RmkoImludmFsaWQtZGF0YSIsdi5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMuaW5jbHVkZXMoaC5rZXkpKSxUdCgibmdNb2RlbCIsdi5jdXJyZW50UmVjb3JkW2gua2V5XSl9fWZ1bmN0aW9uIGNtdChkLGcpezEmZCYmZjEoMCl9ZnVuY3Rpb24gZm10KGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2''@;'; put 'put ''Iikscm4oMSxjbXQsMSwwLCJuZy1jb250YWluZXIiLDM1KSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoMiksdj1oLiRpbXBsaWNpdCx5PWguaW5kZXg7UXQoMik7Y29uc3QgQz12YSgxNik7dXQoMSksVHQoIm5nVGVtcGxhdGVPdXRsZXQiLEMpKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsajMo''@;'; put 'put ''MixEbWUsdix5KSl9fWZ1bmN0aW9uIGhtdChkLGcpe2lmKDEmZCYmKEIwKDApLG50KDEsImRpdiIsMTgpKDIsImRpdiIsMTkpKDMsInAiLDIwKSxZdCg0KSxybig1LEpndCwxLDAsImNsci1pY29uIiwyMSksb3QoKSxudCg2LCJwIiwyMiksWXQoNyksb3QoKSgpLG50KDgsImRpdiIsMjMpLHJu''@;'; put 'put ''KDksWGd0LDIsMCwic3BhbiIsMjQpLHJuKDEwLEtndCwxLDAsImNkcy1pY29uIiwyNSkscm4oMTEsbm10LDMsNCwibmctY29udGFpbmVyIiwyNikscm4oMTIsbG10LDMsNCwibmctY29udGFpbmVyIiwyNikscm4oMTMsc210LDQsNiwiY2xyLXRleHRhcmVhLWNvbnRhaW5lciIsMjcpLHJuKDE0''@;'; put 'put ''LHVtdCw0LDMsImRpdiIsMjcpLHJuKDE1LGZtdCwyLDUsImRpdiIsMjYpLG90KCkoKSxDcigxNiwiaHIiLDI4KSxQMCgpKSwyJmQpe2NvbnN0IGg9UXQoKSx2PWguJGltcGxpY2l0LHk9aC5pbmRleCxDPVF0KDIpO2xldCBJLFo7dXQoNCksSmkoIiAiLHYua2V5LCIgIiksdXQoMSksVHQoIm5n''@;'; put 'put ''SWYiLEMuaXNDb2xQayh2LmtleSkpLHV0KDIpLEppKCIgIixudWxsPT1DLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PShJPUMuY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKHYua2V5KSk/bnVsbDpJLmRlc2MsIiAiKSx1dCgxKSxUdCgibmdTd2l0Y2giLG51bGw9PUMuY3Vy''@;'; put 'put ''cmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KFo9Qy5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUodi5rZXkpKT9udWxsOloudHlwZSksdXQoMSksVHQoIm5nSWYiLEMuY3VycmVudFJlY29yZExvYWRpbmdzLmluY2x1ZGVzKHkpKSx1dCgxKSxUdCgibmdJZiIsQy5jdXJyZW50UmVj''@;'; put 'put ''b3JkRXJyb3JzLmluY2x1ZGVzKHkpKSx1dCgxKSxUdCgibmdTd2l0Y2hDYXNlIiwibnVtZXJpYyIpLHV0KDEpLFR0KCJuZ1N3aXRjaENhc2UiLHZvaWQgMCksdXQoMSksVHQoIm5nU3dpdGNoQ2FzZSIsInRpbWUiKSx1dCgxKSxUdCgibmdTd2l0Y2hDYXNlIiwiZGF0ZSIpLHV0KDEpLFR0KCJu''@;'; put 'put ''Z1N3aXRjaENhc2UiLCJhdXRvY29tcGxldGUiKX19ZnVuY3Rpb24gZG10KGQsZyl7aWYoMSZkJiYoQjAoMCkscm4oMSxobXQsMTcsMTEsIm5nLWNvbnRhaW5lciIsMiksUDAoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3V0KDEpLFR0KCJuZ0lmIiwiQWN0aW9uIiE9PWgua2V5JiYiX19f''@;'; put 'put ''X19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fIiE9PWgua2V5JiYibm9MaW5rT3B0aW9uIiE9PWgua2V5KX19ZnVuY3Rpb24gcG10KGQsZyl7aWYoMSZkJiYoQjAoMCkscm4oMSxkbXQsMiwxLCJuZy1jb250YWluZXIiLDE3KSxubigyLCJrZXl2YWx1ZSIpLFAwKCkpLDImZCl7Y29uc3QgaD1R''@;'; put 'put ''dCgpO3V0KDEpLFR0KCJuZ0Zvck9mIixQbigyLDIsaC5jdXJyZW50UmVjb3JkLGgub3JpZ2luYWxPcmRlcikpKCJuZ0ZvclRyYWNrQnkiLGgudHJhY2tCeUZuKX19ZnVuY3Rpb24gZ210KGQsZyl7MSZkJiYobnQoMCwiY2xyLWFsZXJ0Iiw0MykoMSwiY2xyLWFsZXJ0LWl0ZW0iKSgyLCJzcGFu''@;'; put 'put ''Iiw0NCksWXQoMywiIERhdGEgVmFsaWRhdGlvbiBFcnJvcnMgLSBQbGVhc2UgUmV2aWV3ICIpLG90KCkoKSgpKSwyJmQmJihOZCgidmlzaWJpbGl0eSIsUXQoKS5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMubGVuZ3RoPjA/InZpc2libGUiOiJoaWRkZW4iKSxUdCgiY2xyQWxlcnRDbG9zYWJs''@;'; put 'put ''ZSIsITEpKCJjbHJBbGVydFR5cGUiLCJkYW5nZXIiKSl9ZnVuY3Rpb24gbW10KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiZGl2Iiw0NSkoMSwiYnV0dG9uIiw0NiksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkub25QcmV2aW91c1JlY29yZENsaWNr''@;'; put 'put ''KCkpfSksQ3IoMiwiY2xyLWljb24iLDQ3KSxvdCgpLG50KDMsInAiKSxZdCg0LCIgQ3VycmVudCByb3c6ICIpLG50KDUsInN0cm9uZyIpLFl0KDYpLG90KCkoKSxudCg3LCJidXR0b24iLDQ2KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoKS5vbk5leHRSZWNvcmRD''@;'; put 'put ''bGljaygpKX0pLENyKDgsImNsci1pY29uIiw0OCksb3QoKSgpfWlmKDImZCl7Y29uc3QgaD1RdCgpO3V0KDEpLFR0KCJkaXNhYmxlZCIsaC5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMubGVuZ3RoPjApLHV0KDUpLEppKCIgIixoLmN1cnJlbnRSZWNvcmRJbmRleCsxLCIgIiksdXQoMSksVHQo''@;'; put 'put ''ImRpc2FibGVkIixoLmN1cnJlbnRSZWNvcmRJbnZhbGlkQ29scy5sZW5ndGg+MCl9fWZ1bmN0aW9uIHZtdChkLGcpe2lmKDEmZCYmKG50KDAsIm9wdGlvbiIsNTMpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDtUdCgibmdWYWx1ZSIsaCksdXQoMSksSmkoIiAiLGgsIiAi''@;'; put 'put ''KX19ZnVuY3Rpb24gQW10KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiZGl2IikoMSwiYXBwLXNvZnQtc2VsZWN0Iiw1MSksR24oImZvY3VzaW4iLGZ1bmN0aW9uKHkpe2l0KGgpO2NvbnN0IEM9UXQoKS5jb2xJbmRleDtyZXR1cm4gYShRdCgpLm9uUmVjb3JkSW5wdXRGb2N1cyh5''@;'; put 'put ''LEMpKX0pKCJ2YWx1ZUNoYW5nZSIsZnVuY3Rpb24oeSl7aXQoaCk7Y29uc3QgQz1RdCgpLmNvbDtyZXR1cm4gYShRdCgpLmN1cnJlbnRSZWNvcmRbQy5rZXldPXkpfSkoIm9uSW5wdXRFdmVudCIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KCksQz15LmNvbCxJPXkuY29sSW5kZXg7cmV0''@;'; put 'put ''dXJuIGEoUXQoKS5vblJlY29yZERyb3Bkb3duQ2hhbmdlKEMua2V5LEkpKX0pLHJuKDIsdm10LDIsMiwib3B0aW9uIiw1Miksb3QoKSgpfWlmKDImZCl7Y29uc3QgaD1RdCgpLmNvbCx2PVF0KCk7bGV0IHk7dXQoMSksVHQoInZhbHVlIix2LmN1cnJlbnRSZWNvcmRbaC5rZXldKSgiaW5wdXRJ''@;'; put 'put ''ZCIsaC5rZXkpLHV0KDEpLFR0KCJuZ0Zvck9mIixudWxsPT12LmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PSh5PXYuY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKGgua2V5KSk/bnVsbDp5LnNvdXJjZSl9fWZ1bmN0aW9uIHltdChkLGcpe2lmKDEmZCYmKG50KDAsIm9wdGlv''@;'; put 'put ''biIsNTYpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDtUdCgidmFsdWUiLGgpLHV0KDEpLEppKCIgIixoLCIgIil9fWZ1bmN0aW9uIHdtdChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsInNlbGVjdCIsNTQpLEduKCJmb2N1c2luIixmdW5jdGlvbih5KXtpdCho''@;'; put 'put ''KTtjb25zdCBDPVF0KCkuY29sSW5kZXg7cmV0dXJuIGEoUXQoKS5vblJlY29yZElucHV0Rm9jdXMoeSxDKSl9KSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7aXQoaCk7Y29uc3QgQz1RdCgpLmNvbDtyZXR1cm4gYShRdCgpLmN1cnJlbnRSZWNvcmRbQy5rZXldPXkpfSkscm4oMSx5bXQs''@;'; put 'put ''MiwyLCJvcHRpb24iLDU1KSxvdCgpfWlmKDImZCl7Y29uc3QgaD1RdCgpLmNvbCx2PVF0KCk7bGV0IHk7VHQoIm5nTW9kZWwiLHYuY3VycmVudFJlY29yZFtoLmtleV0pLHV0KDEpLFR0KCJuZ0Zvck9mIixudWxsPT12LmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PSh5PXYuY3VycmVu''@;'; put 'put ''dFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKGgua2V5KSk/bnVsbDp5LnNvdXJjZSl9fWNvbnN0IGJtdD1mdW5jdGlvbigpe3JldHVyblsiU09GVFNFTEVDVCIsIlNPRlRTRUxFQ1RfSE9PSyJdfTtmdW5jdGlvbiBfbXQoZCxnKXtpZigxJmQmJihybigwLEFtdCwzLDMsImRpdiIsNDkpLHJuKDEs''@;'; put 'put ''d210LDIsMiwibmctdGVtcGxhdGUiLG51bGwsNTAsWnIpKSwyJmQpe2NvbnN0IGg9Zy5jb2wsdj12YSgyKSx5PVF0KCk7VHQoIm5nSWYiLG51bGw9PXkuY3VycmVudFJlY29yZFZhbGlkYXRvcj9udWxsOnkuY3VycmVudFJlY29yZFZhbGlkYXRvci5oYXNEcVJ1bGVzKGgua2V5LGNzKDIsYm10''@;'; put 'put ''KSkpKCJuZ0lmRWxzZSIsdil9fWxldCBDbXQ9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYpe3RoaXMuc2FzU3RvcmVTZXJ2aWNlPWgsdGhpcy5oZWxwZXJTZXJ2aWNlPXYsdGhpcy5yZWNvcmRBY3Rpb249bnVsbCx0aGlzLmZpbHRlcj0hMSx0aGlzLnN1Ym1pdExvYWRpbmc9ITEsdGhp''@;'; put 'put ''cy5oZWFkZXJQa3M9W10sdGhpcy5jZWxsVmFsaWRhdGlvbj1bXSx0aGlzLmN1cnJlbnRSZWNvcmRJbmRleD0tMSx0aGlzLmN1cnJlbnRSZWNvcmRMb2FkaW5ncz1bXSx0aGlzLmN1cnJlbnRSZWNvcmRFcnJvcnM9W10sdGhpcy5vblJlY29yZENoYW5nZT1uZXcgYXIsdGhpcy5vblJlY29yZElu''@;'; put 'put ''cHV0Rm9jdXNlZD1uZXcgYXIsdGhpcy5vblJlY29yZERyb3Bkb3duQ2hhbmdlZD1uZXcgYXIsdGhpcy5vblJlY29yZEVkaXRDbG9zZT1uZXcgYXIsdGhpcy5vblJlY29yZEVkaXRDb25maXJtPW5ldyBhcix0aGlzLm9uTmV4dFJlY29yZD1uZXcgYXIsdGhpcy5vblByZXZpb3VzUmVjb3JkPW5l''@;'; put 'put ''dyBhcix0aGlzLmN1cnJlbnRSZWNvcmRJbnZhbGlkQ29scz1bXSx0aGlzLmdlbmVyYXRlRWRpdFJlY29yZFVybExvYWRpbmc9ITEsdGhpcy5nZW5lcmF0ZWRSZWNvcmRVcmw9bnVsbCx0aGlzLmFkZFJlY29yZFVybD1udWxsLHRoaXMucmVjb3JkTmV3T3JQa01vZGlmaWVkPSExLHRoaXMuYWRk''@;'; put 'put ''UmVjb3JkTG9hZGluZz0hMSx0aGlzLm9yaWdpbmFsT3JkZXI9KHksQyk9PjB9bmdPbkluaXQoKXt9dmFsaWRhdGVSZWNvcmRDb2woaCx2KXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiBuZXcgUHJvbWlzZSgoeSxDKT0+e3ZhciBJO251bGw9PT0oST10''@;'; put 'put ''aGlzLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3IpfHx2b2lkIDA9PT1JfHxJLmV4ZWN1dGVIb3RWYWxpZGF0b3IoaCx2LFo9Pnt5KFopfSl9KX0pfXJlY29yZERhdGVDaGFuZ2UoaCx2KXt2YXIgeTtsZXQgQz1udWxsPT09KHk9dGhpcy5jdXJyZW50UmVjb3JkVmFsaWRhdG9yKXx8dm9pZCAwPT09''@;'; put 'put ''eT92b2lkIDA6eS5nZXRSdWxlKHYpLEk9Qz9DLmRhdGVGb3JtYXQ6IiI7dGhpcy5jdXJyZW50UmVjb3JkJiYodGhpcy5jdXJyZW50UmVjb3JkW3ZdPW5JKCkoaCkuZm9ybWF0KEkpKX1pc1JlY29yZE1vZGFsSW52YWxpZCgpe3JldHVybiB0aGlzLmN1cnJlbnRSZWNvcmRJbnZhbGlkQ29scy5s''@;'; put 'put ''ZW5ndGg+MH1jb25maXJtUmVjb3JkRWRpdCgpe3RoaXMuY3VycmVudFJlY29yZEludmFsaWRDb2xzLmxlbmd0aDwxJiZ0aGlzLm9uUmVjb3JkQ2hhbmdlLmVtaXQodGhpcy5jdXJyZW50UmVjb3JkKX1jbG9zZVJlY29yZEVkaXQoKXt0aGlzLm9uUmVjb3JkRWRpdENsb3NlLmVtaXQoKX1vblJl''@;'; put 'put ''Y29yZERyb3Bkb3duQ2hhbmdlKGgsdil7dGhpcy5vblJlY29yZERyb3Bkb3duQ2hhbmdlZC5lbWl0KHtjb2xOYW1lOmgsY29sOnZ9KX1vblJlY29yZElucHV0Rm9jdXMoaCx2KXt0aGlzLm9uUmVjb3JkSW5wdXRGb2N1c2VkLmVtaXQoe2V2ZW50OmgsY29sTmFtZTp2fSl9cmVjb3JkSW5wdXRQ''@;'; put 'put ''YXN0ZShoKXtzZXRUaW1lb3V0KCgpPT57aC50YXJnZXQudmFsdWU9aC50YXJnZXQudmFsdWUucmVwbGFjZSgvXHMrJC8sIiIpfSwwKX1yZWNvcmRJbnB1dENoYW5nZShoLHYpe3ZhciB5O3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgQz1udWxsPT09KHk9''@;'; put 'put ''dGhpcy5jdXJyZW50UmVjb3JkVmFsaWRhdG9yKXx8dm9pZCAwPT09eT92b2lkIDA6eS5nZXRSdWxlKHYpLEk9aC50YXJnZXQudmFsdWU7dGhpcy5oZWxwZXJTZXJ2aWNlLmRlYm91bmNlQ2FsbCgzMDAsKCk9Pnt0aGlzLnZhbGlkYXRlUmVjb3JkQ29sKEMsSSkudGhlbihaPT57Y29uc3QgdWU9''@;'; put 'put ''dGhpcy5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMuaW5kZXhPZih2KTtaP3VlPi0xJiZ0aGlzLmN1cnJlbnRSZWNvcmRJbnZhbGlkQ29scy5zcGxpY2UodWUsMSk6dWU8MCYmdGhpcy5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMucHVzaCh2KX0pfSl9KX1vbk5leHRSZWNvcmRDbGljaygpe3Ro''@;'; put 'put ''aXMub25OZXh0UmVjb3JkLmVtaXQoKX1vblByZXZpb3VzUmVjb3JkQ2xpY2soKXt0aGlzLm9uUHJldmlvdXNSZWNvcmQuZW1pdCgpfWNvcHlUb0NsaXAoaCl7Y29uc3Qgdj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcmVjb3JkTW9kYWxSZWYgLm1vZGFsLXRpdGxlIik7aWYodil7Y29uc3Qg''@;'; put 'put ''eT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpO3kuc3R5bGUucG9zaXRpb249ImZpeGVkIix5LnN0eWxlLmxlZnQ9IjAiLHkuc3R5bGUudG9wPSIwIix5LnN0eWxlLm9wYWNpdHk9IjAiLHkuc3R5bGUuekluZGV4PSI1MDAwIix5LnZhbHVlPWgsdi5hcHBlbmRDaGlsZCh5KSx5''@;'; put 'put ''LmZvY3VzKCkseS5zZWxlY3QoKSxkb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpLHYucmVtb3ZlQ2hpbGQoeSksdGhpcy5nZW5lcmF0ZWRSZWNvcmRVcmw9aH19Z2VuZXJhdGVFZGl0UmVjb3JkVXJsKCl7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtpZih0aGlz''@;'; put 'put ''LmdlbmVyYXRlZFJlY29yZFVybCl0aGlzLmNvcHlUb0NsaXAodGhpcy5nZW5lcmF0ZWRSZWNvcmRVcmwpO2Vsc2V7dGhpcy5nZW5lcmF0ZUVkaXRSZWNvcmRVcmxMb2FkaW5nPSEwO2NvbnN0IGg9W107dGhpcy5oZWFkZXJQa3MuZm9yRWFjaCh2PT57bGV0IHk9IkMiLEM9IiI7Zm9yKGxldCBJ''@;'; put 'put ''PTA7STx0aGlzLmNlbGxWYWxpZGF0aW9uLmxlbmd0aDtJKyspe2NvbnN0IFo9dGhpcy5jZWxsVmFsaWRhdGlvbltJXTtpZihaLmRhdGE9PT12KXsoIm51bWVyaWMiPT09Wi50eXBlfHwiZGF0ZSI9PT1aLnR5cGV8fCJ0aW1lIj09PVoudHlwZSkmJih5PSJOIik7YnJlYWt9fUM9IkMiPT09eT9g''@;'; put 'put ''JyR7dGhpcy5jdXJyZW50UmVjb3JkW3ZdfSdgOnRoaXMuY3VycmVudFJlY29yZFt2XS50b1N0cmluZygpLGgucHVzaCh7R1JPVVBfTE9HSUM6IkFORCIsU1VCR1JPVVBfTE9HSUM6IkFORCIsU1VCR1JPVVBfSUQ6MCxWQVJJQUJMRV9OTTp2LE9QRVJBVE9SX05NOiI9IixSQVdfVkFMVUU6Q30p''@;'; put 'put ''fSksaC5sZW5ndGg+MCYmdGhpcy5saWJkcyYmKHlpZWxkIHRoaXMuc2FzU3RvcmVTZXJ2aWNlLnNhdmVRdWVyeSh0aGlzLmxpYmRzLGgpLnRoZW4odj0+e3RoaXMucXVlcnlGaWx0ZXI9e2lkOnYucmVzdWx0WzBdLkZJTFRFUl9SSyx0YWJsZTp2LnJlc3VsdFswXS5GSUxURVJfVEFCTEV9O2Nv''@;'; put 'put ''bnN0IEk9bG9jYXRpb24uaHJlZi5zcGxpdCgiIyIpWzBdKyIjL2VkaXRvci9lZGl0LXJlY29yZC8iK3RoaXMucXVlcnlGaWx0ZXIudGFibGUrIi8iK3RoaXMucXVlcnlGaWx0ZXIuaWQ7dGhpcy5jb3B5VG9DbGlwKEkpLHRoaXMuZ2VuZXJhdGVFZGl0UmVjb3JkVXJsTG9hZGluZz0hMSx0aGlz''@;'; put 'put ''LmZpbHRlcj0hMX0pLmNhdGNoKHY9Pnt0aGlzLnN1Ym1pdExvYWRpbmc9ITF9KSl9fSl9aXNDb2xQayhoKXtyZXR1cm4gdGhpcy5oZWFkZXJQa3MuaW5kZXhPZihoKT4tMX10cmFja0J5Rm4oaCx2KXtyZXR1cm4gaH19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXco''@;'; put 'put ''aHx8ZCkoS3Qoa2cpLEt0KFhjKSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1lZGl0LXJlY29yZCJdXSxpbnB1dHM6e2N1cnJlbnRSZWNvcmQ6ImN1cnJlbnRSZWNvcmQiLHJlY29yZEFjdGlvbjoicmVjb3JkQWN0aW9uIixsaWJkczoibGliZHMiLHF1ZXJ5Rmls''@;'; put 'put ''dGVyOiJxdWVyeUZpbHRlciIsZmlsdGVyOiJmaWx0ZXIiLHN1Ym1pdExvYWRpbmc6InN1Ym1pdExvYWRpbmciLGhlYWRlclBrczoiaGVhZGVyUGtzIixjZWxsVmFsaWRhdGlvbjoiY2VsbFZhbGlkYXRpb24iLGN1cnJlbnRSZWNvcmRJbmRleDoiY3VycmVudFJlY29yZEluZGV4IixjdXJyZW50''@;'; put 'put ''UmVjb3JkTG9hZGluZ3M6ImN1cnJlbnRSZWNvcmRMb2FkaW5ncyIsY3VycmVudFJlY29yZEVycm9yczoiY3VycmVudFJlY29yZEVycm9ycyIsY3VycmVudFJlY29yZFZhbGlkYXRvcjoiY3VycmVudFJlY29yZFZhbGlkYXRvciJ9LG91dHB1dHM6e29uUmVjb3JkQ2hhbmdlOiJvblJlY29yZENo''@;'; put 'put ''YW5nZSIsb25SZWNvcmRJbnB1dEZvY3VzZWQ6Im9uUmVjb3JkSW5wdXRGb2N1c2VkIixvblJlY29yZERyb3Bkb3duQ2hhbmdlZDoib25SZWNvcmREcm9wZG93bkNoYW5nZWQiLG9uUmVjb3JkRWRpdENsb3NlOiJvblJlY29yZEVkaXRDbG9zZSIsb25SZWNvcmRFZGl0Q29uZmlybToib25SZWNv''@;'; put 'put ''cmRFZGl0Q29uZmlybSIsb25OZXh0UmVjb3JkOiJvbk5leHRSZWNvcmQiLG9uUHJldmlvdXNSZWNvcmQ6Im9uUHJldmlvdXNSZWNvcmQifSxkZWNsczoxNyx2YXJzOjExLGNvbnN0czpbWyJpZCIsInJlY29yZE1vZGFsUmVmIiwxLCJyZWNvcmQtZWRpdC1tb2RhbCIsInBvc2l0aW9uLXJlbGF0''@;'; put 'put ''aXZlIiwzLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbENsb3NhYmxlIl0sWzEsIm1vZGFsLXRpdGxlIl0sWzQsIm5nSWYiXSxbMSwibW9kYWwtYm9keSJdLFsiY2xhc3MiLCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDAgcHktMTAiLDQsIm5n''@;'; put 'put ''SWYiXSxbMSwibW9kYWwtZm9vdGVyIiwicC0wIiwiY2xyLWdhcC01IiwiY2xyLWdhcC1tZC0wIiwiY2xyLWZsZXgtY29sdW1uIiwiY2xyLWZsZXgtbWQtcm93Il0sWyJjbGFzcyIsInZhbGlkYXRpb24taW5mby1hbGVydCIsMywidmlzaWJpbGl0eSIsImNsckFsZXJ0Q2xvc2FibGUiLCJjbHJB''@;'; put 'put ''bGVydFR5cGUiLDQsIm5nSWYiXSxbImNsYXNzIiwicHJldi1uZXh0Iiw0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tb3V0bGluZSIsImZvY3VzYWJsZSIsMywiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1wcmltYXJ5IiwiZm9jdXNhYmxlIiwz''@;'; put 'put ''LCJkaXNhYmxlZCIsImNsaWNrIl0sWyJhdXRvY29tcGxldGUiLCIiXSxbImNsYXNzIiwicG9zaXRpb24tYWJzb2x1dGUgZ2VuZXJhdGUtcmVjb3JkLXVybCIsNCwibmdJZiJdLFsiY2xhc3MiLCJidG4gYnRuLWxpbmsgZ2VuZXJhdGUtcmVjb3JkLXVybC1idXR0b24gcG9zaXRpb24tYWJzb2x1''@;'; put 'put ''dGUiLDMsImRpc2FibGVkIiwiY2xpY2siLDQsIm5nSWYiXSxbMSwicG9zaXRpb24tYWJzb2x1dGUiLCJnZW5lcmF0ZS1yZWNvcmQtdXJsIl0sWzEsImJ0biIsImJ0bi1saW5rIiwiZ2VuZXJhdGUtcmVjb3JkLXVybC1idXR0b24iLCJwb3NpdGlvbi1hYnNvbHV0ZSIsMywiZGlzYWJsZWQiLCJj''@;'; put 'put ''bGljayJdLFsxLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiYWxpZ24taXRlbXMtY2VudGVyIiwidy0xMDAiLCJweS0xMCJdLFsxLCJzcGlubmVyIl0sWzQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsxLCJjb2x1bW4tZW50cnkiLCJjbHItZmxleC1jb2x1''@;'; put 'put ''bW4iLCJjbHItZmxleC1tZC1yb3ciXSxbMSwibmFtZS1pbnB1dC1yb3ciXSxbMSwiZm9udC13ZWlnaHQtYm9sZCJdLFsic2hhcGUiLCJrZXkiLDQsIm5nSWYiXSxbMSwiY2VsbC1kZXNjIl0sWzEsImlucHV0cy13cmFwcGVyIiwicG9zaXRpb24tcmVsYXRpdmUiLDMsIm5nU3dpdGNoIl0sWyJj''@;'; put 'put ''bGFzcyIsInNwaW5uZXIgc3Bpbm5lci1pbmxpbmUgZmxleC11bnNldCBwb3NpdGlvbi1hYnNvbHV0ZSBlbnRyeS1pbnB1dC1sZWZ0LW9mZnNldCIsNCwibmdJZiJdLFsiY2xhc3MiLCJmbGV4LXVuc2V0IHBvc2l0aW9uLWFic29sdXRlIGVudHJ5LWlucHV0LWxlZnQtb2Zmc2V0Iiwic2hhcGUi''@;'; put 'put ''LCJlcnJvci1zdGFuZGFyZCIsInN0YXR1cyIsIndhcm5pbmciLDQsIm5nSWYiXSxbNCwibmdTd2l0Y2hDYXNlIl0sWyJjbGFzcyIsImRhdGUtZmllbGQiLDQsIm5nU3dpdGNoQ2FzZSJdLFsxLCJtdC0xMCJdLFsic2hhcGUiLCJrZXkiXSxbMSwic3Bpbm5lciIsInNwaW5uZXItaW5saW5lIiwi''@;'; put 'put ''ZmxleC11bnNldCIsInBvc2l0aW9uLWFic29sdXRlIiwiZW50cnktaW5wdXQtbGVmdC1vZmZzZXQiXSxbInNoYXBlIiwiZXJyb3Itc3RhbmRhcmQiLCJzdGF0dXMiLCJ3YXJuaW5nIiwxLCJmbGV4LXVuc2V0IiwicG9zaXRpb24tYWJzb2x1dGUiLCJlbnRyeS1pbnB1dC1sZWZ0LW9mZnNldCJd''@;'; put 'put ''LFsiY2xhc3MiLCJudW1lcmljLWlucHV0IiwzLCJpbnZhbGlkLWRhdGEiLDQsIm5nSWYiXSxbMSwibnVtZXJpYy1pbnB1dCJdLFsiY2xySW5wdXQiLCIiLCJ0eXBlIiwidGV4dCIsMSwibm90LWNoYXIiLDMsIm5nTW9kZWwiLCJmb2N1c2luIiwicGFzdGUiLCJpbnB1dCIsIm5nTW9kZWxDaGFu''@;'; put 'put ''Z2UiXSxbNCwibmdUZW1wbGF0ZU91dGxldCIsIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Il0sWyJjbHJUZXh0YXJlYSIsIiIsMywicm93cyIsIm5nTW9kZWwiLCJtYXhMZW5ndGgiLCJmb2N1c2luIiwicGFzdGUiLCJpbnB1dCIsIm5nTW9kZWxDaGFuZ2UiXSxbImNoYXJUZXh0YXJlYSIsIiJd''@;'; put 'put ''LFsxLCJkYXRlLWZpZWxkIl0sWyJjbHJUZXh0YXJlYSIsIiIsMywicm93cyIsIm5nTW9kZWwiLCJwYXN0ZSIsImlucHV0IiwibmdNb2RlbENoYW5nZSJdLFsiY2xyVGV4dGFyZWEiLCIiLCJyb3dzIiwiMSIsImNvbHMiLCJhdXRvIiwxLCJub3QtY2hhciIsMywibmdNb2RlbCIsInBhc3RlIiwi''@;'; put 'put ''aW5wdXQiLCJuZ01vZGVsQ2hhbmdlIl0sWzEsImRhdGUtcGlja2VyIl0sWyJ0eXBlIiwiZGF0ZSIsIm5hbWUiLCJkYXRlIiwiY2xyRGF0ZSIsIiIsMSwiZC1ub25lIiwzLCJjbHJEYXRlQ2hhbmdlIl0sWzEsInZhbGlkYXRpb24taW5mby1hbGVydCIsMywiY2xyQWxlcnRDbG9zYWJsZSIsImNs''@;'; put 'put ''ckFsZXJ0VHlwZSJdLFsxLCJhbGVydC10ZXh0Il0sWzEsInByZXYtbmV4dCJdLFsidHlwZSIsImJ1dHRvbiIsInRhYmluZGV4IiwiMCIsMSwiYnRuIiwiYnRuLW91dGxpbmUiLCJmb2N1c2FibGUiLDMsImRpc2FibGVkIiwiY2xpY2siXSxbInNoYXBlIiwiYW5nbGUgbGVmdCIsInNpemUiLCIy''@;'; put 'put ''MyJdLFsic2hhcGUiLCJhbmdsZSByaWdodCIsInNpemUiLCIyMyJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm90aGVyX3RoYW5fc29mdF9zZWxlY3QiLCIiXSxbMywidmFsdWUiLCJpbnB1dElkIiwiZm9jdXNpbiIsInZhbHVlQ2hhbmdlIiwib25JbnB1dEV2ZW50Il0sWzMsIm5nVmFsdWUi''@;'; put 'put ''LDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJuZ1ZhbHVlIl0sWyJjbHJTZWxlY3QiLCIiLDMsIm5nTW9kZWwiLCJmb2N1c2luIiwibmdNb2RlbENoYW5nZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsInZhbHVlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiYo''@;'; put 'put ''bnQoMCwiY2xyLW1vZGFsIiwwKSgxLCJoMyIsMSksWXQoMikscm4oMyxVZ3QsMywyLCJuZy1jb250YWluZXIiLDIpLG90KCksbnQoNCwiZGl2IiwzKSxybig1LFFndCwzLDAsImRpdiIsNCkscm4oNixwbXQsMyw1LCJuZy1jb250YWluZXIiLDIpLG90KCksbnQoNywiZGl2Iiw1KSxybig4LGdt''@;'; put 'put ''dCw0LDQsImNsci1hbGVydCIsNikscm4oOSxtbXQsOSwzLCJkaXYiLDcpLG50KDEwLCJkaXYiKSgxMSwiYnV0dG9uIiw4KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuY3VycmVudFJlY29yZC5ub0xpbmtPcHRpb249ITEsdi5jbG9zZVJlY29yZEVkaXQoKX0pLFl0KDEyLCIgQ2Fu''@;'; put 'put ''Y2VsICIpLG90KCksbnQoMTMsImJ1dHRvbiIsOSksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LmNvbmZpcm1SZWNvcmRFZGl0KCl9KSxZdCgxNCwiIENvbmZpcm0gIiksb3QoKSgpKCkscm4oMTUsX210LDMsMywibmctdGVtcGxhdGUiLG51bGwsMTAsWnIpLG90KCkpLDImaCYmKFR0''@;'; put 'put ''KCJjbHJNb2RhbE9wZW4iLCEwKSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLHV0KDIpLGtmKCIgIiwiQUREIj09PXYucmVjb3JkQWN0aW9uPyJBZGQiOiJFZGl0IiwiIHJlY29yZCBpbiAiLChudWxsPT12LmxpYmRzP251bGw6di5saWJkcy5zcGxpdCgiLiIpKVswXSwiLiIsKG51bGw9PXYubGli''@;'; put 'put ''ZHM/bnVsbDp2LmxpYmRzLnNwbGl0KCIuIikpWzFdLCIgIiksdXQoMSksVHQoIm5nSWYiLCJFRElUIj09PXYucmVjb3JkQWN0aW9uKSx1dCgyKSxUdCgibmdJZiIsdi5hZGRSZWNvcmRMb2FkaW5nKSx1dCgxKSxUdCgibmdJZiIsIXYuYWRkUmVjb3JkTG9hZGluZyksdXQoMiksVHQoIm5nSWYi''@;'; put 'put ''LHYuY3VycmVudFJlY29yZEludmFsaWRDb2xzLmxlbmd0aD4wKSx1dCgxKSxUdCgibmdJZiIsdi5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMubGVuZ3RoPDEpLHV0KDQpLFR0KCJkaXNhYmxlZCIsdi5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMubGVuZ3RoPjApKX0sZGVwZW5kZW5jaWVzOlt4''@;'; put 'put ''cyxObyxYZCxKZCxpcCwkMyxxMyxtMSxPZixUcyxJcyxwWixTeWUsZ1osSmZlLHdsLFpvLGlkLG9kLFJlLHJaLElmZSxwdixCQWUsb1oseU9lLFVBZSxNTGUsWVRdLHN0eWxlczpbIi5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uLWVudHJ5W19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdICAgLm5hbWUtaW5wdXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXt3''@;'; put 'put ''aWR0aDoxMDAlO21heC13aWR0aDoyNjBweH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV0gICAubmFtZS1pbnB1dC1yb3dbX25nY29udGVudC0lQ09NUCVdICAgLmNlbGwtZGVzY1tfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV17bWFyZ2luLXJpZ2h0OjMwcHg7bWFyZ2luLXRvcDoxMHB4fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uLWVudHJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5pbnB1dHMtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxO2Rpc3BsYXk6Zmxl''@;'; put 'put ''eDthbGlnbi1pdGVtczpjZW50ZXJ9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdICAgLmlucHV0cy13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICA+Kjpub3QoLmRhdGUtZmllbGQpOm5vdChjbHItc2Vs''@;'; put 'put ''ZWN0LWNvbnRhaW5lcil7ZmxleDoxfS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uLWVudHJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItdGV4dGFyZWEtd3JhcHBlcnttYXJnaW4tdG9wOjAhaW1wb3J0YW50fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uLWVudHJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAg''@;'; put 'put ''LmNsci1mb3JtLWNvbnRyb2x7bWFyZ2luLXRvcDowIWltcG9ydGFudH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV0gICAgIGFwcC1zb2Z0LXNlbGVjdHtkaXNwbGF5OmJsb2NrO3dpZHRoOjIyNHB4O2JhY2tn''@;'; put 'put ''cm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICM5OTk7Y29sb3I6IzAwMDtwYWRkaW5nOmNhbGMoLjI1cmVtICsgMnB4KSAuNXJlbTtib3JkZXItcmFkaXVzOi4xMjVyZW07Zm9udC1zaXplOi41NDE2NjdyZW07bWFyZ2luLXJpZ2h0OjZweH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV0gICAgIGFwcC1zb2Z0LXNlbGVjdCBpbnB1dHt3aWR0aDoxMDAlO2JvcmRlcjowO2JhY2tncm91bmQtY29sb3I6I2ZmZn0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbi1lbnRy''@;'; put 'put ''eVtfbmdjb250ZW50LSVDT01QJV0gICAgIGFwcC1zb2Z0LXNlbGVjdCBpbnB1dDpmb2N1c3tiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOjAhaW1wb3J0YW50fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uLWVudHJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAg''@;'; put 'put ''YXBwLXNvZnQtc2VsZWN0IGlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLCAucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV0gICAgIGFwcC1zb2Z0LXNlbGVjdCBpbnB1dDo6LXdlYmtpdC1pbm5lci1z''@;'; put 'put ''cGluLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV06Zmlyc3QtY2hpbGQgICBwW19uZ2NvbnRlbnQtJUNPTVAlXTpmaXJzdC1jaGlsZHtt''@;'; put 'put ''YXJnaW4tdG9wOjB9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kYXRlLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9ja30ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmRh''@;'; put 'put ''dGUtZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgdGV4dGFyZWFbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIzMHB4fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAuZGF0ZS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAuZGF0ZS1waWNrZXJbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjRweH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGUtZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGUtcGlja2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1pbnB1dC1n''@;'; put 'put ''cm91cHtib3JkZXI6MCFpbXBvcnRhbnR9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tb2RhbC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxMHB4fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1zZWxl''@;'; put 'put ''Y3QtY29udGFpbmVye2JvcmRlcjoxcHggc29saWQgIzk5OTtjb2xvcjojMDAwO2JvcmRlci1yYWRpdXM6LjEyNXJlbTttYXJnaW4tcmlnaHQ6NXB4fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1zZWxlY3QtY29udGFpbmVyIC5jbHItc2VsZWN0LXdyYXBw''@;'; put 'put ''ZXJ7bWF4LWhlaWdodDp1bnNldH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICBjbHItc2VsZWN0LWNvbnRhaW5lciAuY2xyLXNlbGVjdC13cmFwcGVyOmFmdGVye3RvcDoxNXB4fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1z''@;'; put 'put ''ZWxlY3QtY29udGFpbmVyIHNlbGVjdHtoZWlnaHQ6YXV0bztwYWRkaW5nOjEwcHggMjBweCAxMHB4IDEwcHg7Ym9yZGVyOjAhaW1wb3J0YW50fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1zZWxlY3QtY29udGFpbmVyIHNlbGVjdDpmb2N1c3tiYWNrZ3Jv''@;'; put 'put ''dW5kOjAgMCFpbXBvcnRhbnR9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLXNlbGVjdC1jb250YWluZXIgc2VsZWN0OmhvdmVye2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLWlu''@;'; put 'put ''cHV0LWNvbnRhaW5lcnt3aWR0aDoyMjRweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjOTk5O2NvbG9yOiMwMDA7cGFkZGluZzpjYWxjKC4yNXJlbSArIDJweCkgLjVyZW07Ym9yZGVyLXJhZGl1czouMTI1cmVtO2ZvbnQtc2l6ZTouNTQxNjY3cmVtO21hcmdpbi1yaWdodDo2''@;'; put 'put ''cHh9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLWlucHV0LWNvbnRhaW5lciBpbnB1dHt3aWR0aDoxMDAlO2JvcmRlcjowfS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1pbnB1dC1jb250YWluZXIgaW5wdXQ6Zm9jdXN7''@;'; put 'put ''YmFja2dyb3VuZDpub25lO2JvcmRlcjowIWltcG9ydGFudH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICBjbHItaW5wdXQtY29udGFpbmVyIGlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLCAucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgICBjbHItaW5wdXQtY29udGFpbmVyIGlucHV0Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lO21hcmdpbjowfS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1pbnB1dC1jb250YWluZXIuaW52YWxpZC1k''@;'; put 'put ''YXRhe2JvcmRlci1jb2xvcjpyZWR9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLm1vZGFsLWRpYWxvZ3t3aWR0aDo4MHZ3fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItY29udHJvbC1jb250YWluZXJ7d2lkdGg6MTAwJX0u''@;'; put 'put ''cmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLWNvbnRyb2wtY29udGFpbmVyIHRleHRhcmVhe3dpZHRoOjEwMCU7cmVzaXplOm5vbmU7Ym9yZGVyLWNvbG9yOiM5OTl9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250''@;'; put 'put ''cm9sLWNvbnRhaW5lciB0ZXh0YXJlYS5pbnZhbGlkLWRhdGF7Ym9yZGVyLWNvbG9yOnJlZDtvdXRsaW5lOjB9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lciB0ZXh0YXJlYS5ub3QtY2hhcntmb250LWZhbWlseTpMdWNpZGEg''@;'; put 'put ''Q29uc29sZSxNb25hY28sbW9ub3NwYWNlfS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5nZW5lcmF0ZS1yZWNvcmQtdXJse3JpZ2h0OjQwcHg7dG9wOjQwcHg7Zm9udC1zaXplOjEycHh9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAg''@;'; put 'put ''LmdlbmVyYXRlLXJlY29yZC11cmwtYnV0dG9ue3JpZ2h0OjI1cHg7dG9wOjVweH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAubW9kYWwtaGVhZGVye3BhZGRpbmc6MCAwIDFyZW19LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLm1v''@;'; put 'put ''ZGFsLWZvb3RlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5tb2RhbC1mb290ZXIgLmFsZXJ0e21hcmdpbjowfS5wcmV2LW5leHRbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LnByZXYtbmV4dFtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MH0ucHJldi1uZXh0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17bWFy''@;'; put 'put ''Z2luOjAgMTBweH0uZm9jdXNhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tib3gtc2hhZG93OjAgMCAzcHggIzVhYTIyMH0uZW50cnktaW5wdXQtbGVmdC1vZmZzZXRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTMwcHh9LnZhbGlkYXRpb24taW5mby1hbGVydFtfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV17d2lkdGg6MzEwcHh9Il19KSxkfSkoKTtmdW5jdGlvbiBrbXQoZCxnKXtpZigxJmQmJihudCgwLCJwIiwzKSxZdCgxKSxvdCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7dXQoMSksSmkoIiAiLGgsIiAiKX19bGV0IFNtdD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhp''@;'; put 'put ''cy5zdGF0ZXNMaXN0PVtdLHRoaXMucHJvY2Vzc2VkU3RhdGVzPVtdLHRoaXMuc3RhdGVySW5Qcm9ncmVzcz0hMSx0aGlzLm1pbkRlbGF5PTFlM31uZ09uSW5pdCgpe31hcHBlbmRTdGF0ZShoKXtpZigie2ZpbmlzaH0iPT09aClyZXR1cm4gdGhpcy5zdGF0ZXJJblByb2dyZXNzPSExLHZvaWQg''@;'; put 'put ''Y2xlYXJJbnRlcnZhbCh0aGlzLnN0YXRlSW50ZXJ2YWwpO3RoaXMuc3RhdGVzTGlzdC5wdXNoKGgpLHRoaXMucHJvY2Vzc2VkU3RhdGVzLnB1c2goaCl9cmVwbGFjZUxhc3RTdGF0ZShoKXt0aGlzLnN0YXRlc0xpc3QubGVuZ3RoPjA/KHRoaXMuc3RhdGVzTGlzdC5wb3AoKSx0aGlzLnN0YXRl''@;'; put 'put ''c0xpc3QucHVzaChoKSk6dGhpcy5wcm9jZXNzZWRTdGF0ZXNbdGhpcy5wcm9jZXNzZWRTdGF0ZXMubGVuZ3RoLTFdPWh9Y2xlYXJTdGF0ZXMoKXt0aGlzLnByb2Nlc3NlZFN0YXRlcz1bXX1zdGFydFN0YXRlcigpe3RoaXMuc3RhdGVySW5Qcm9ncmVzcz0hMCx0aGlzLnN0YXRlc0xpc3QubGVu''@;'; put 'put ''Z3RoPjAmJnRoaXMucHJvY2Vzc2VkU3RhdGVzLnB1c2godGhpcy5zdGF0ZXNMaXN0LnNoaWZ0KCl8fCIiKSx0aGlzLnN0YXRlSW50ZXJ2YWw9c2V0SW50ZXJ2YWwoKCk9Pnt0aGlzLnN0YXRlc0xpc3QubGVuZ3RoPjAmJnRoaXMucHJvY2Vzc2VkU3RhdGVzLnB1c2godGhpcy5zdGF0ZXNMaXN0''@;'; put 'put ''LnNoaWZ0KCl8fCIiKX0sdGhpcy5taW5EZWxheSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtdXBsb2FkLXN0YXRlciJdXSxkZWNsczo1LHZhcnM6MSxjb25zdHM6W1siY2xh''@;'; put 'put ''c3MiLCJtLTAiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJ0ZXh0LWNlbnRlciJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1zbSIsInZlcnRpY2FsLWFsaWduLW1pZGRsZSJdLFsxLCJtLTAiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihudCgwLCJkaXYiKSxybigxLGttdCwyLDEs''@;'; put 'put ''InAiLDApLG90KCksbnQoMiwiZGl2IiwxKSgzLCJzcGFuIiwyKSxZdCg0LCJMb2FkaW5nLi4uIiksb3QoKSgpKSwyJmgmJih1dCgxKSxUdCgibmdGb3JPZiIsdi5wcm9jZXNzZWRTdGF0ZXMpKX0sZGVwZW5kZW5jaWVzOlt4c10sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmJs''@;'; put 'put ''b2NrfXBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowO3RleHQtYWxpZ246Y2VudGVyfSJdfSksZH0pKCksTW10PSgoKT0+e2NsYXNzIGR7dHJhbnNmb3JtKGgpe3JldHVybiBoLnJlcGxhY2UoL1x8L2csIiB8ICIpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5l''@;'; put 'put ''dyhofHxkKX0sZC5cdTAyNzVwaXBlPVVzKHtuYW1lOiJwa1NwYWNlU2VwYXJhdGUiLHR5cGU6ZCxwdXJlOiEwfSksZH0pKCksSUxlPSgoKT0+e2NsYXNzIGR7dHJhbnNmb3JtKGgsdil7cmV0dXJuIHRoaXMuYWRkU2VwYXJhdG9ycyhoLnRvU3RyaW5nKCksdil9YWRkU2VwYXJhdG9ycyhoLHY9''@;'; put 'put ''IiAiKXtjb25zdCB5PShoKz0iIikuc3BsaXQoIi4iKTtsZXQgQz15WzBdO2NvbnN0IEk9eS5sZW5ndGg+MT8iLiIreVsxXToiIixaPS8oXGQrKShcZHszfSkvO2Zvcig7Wi50ZXN0KEMpOylDPUMucmVwbGFjZShaLCIkMSIrdisiJDIiKTtyZXR1cm4gQytJfX1yZXR1cm4gZC5cdTAyNzVmYWM9''@;'; put 'put ''ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwaXBlPVVzKHtuYW1lOiJ0aG91c2FuZFNlcGFyYXRvciIsdHlwZTpkLHB1cmU6ITB9KSxkfSkoKTtjb25zdCBFbXQ9WyJodCJdLHhtdD1bInVwbG9hZFN0YXRlciJdLFRtdD1bInF1ZXJ5RmlsdGVyIl0sSW10PVsiaG90SW5z''@;'; put 'put ''dGFuY2UiXSxEbXQ9WyJmaWxlVXBsb2FkSW5wdXQiXTtmdW5jdGlvbiBMbXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJkaXYiLDU4KSgxLCJzcGFuIiw1OSkoMiwibGFiZWwiLDYwKSxZdCgzLCIgQnJvd3NlICIpLG90KCkoKSxudCg0LCJpbnB1dCIsNjEsNjIpLEduKCJjaGFu''@;'; put 'put ''Z2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KCkuZ2V0RmlsZURlc2MoeSkpfSksb3QoKSgpfWlmKDImZCl7Y29uc3QgaD1RdCgpO3V0KDQpLFR0KCJ1cGxvYWRlciIsaC51cGxvYWRlcil9fWZ1bmN0aW9uIE9tdChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImRpdiIs''@;'; put 'put ''NjMpKDEsImJ1dHRvbiIsNjQpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgpLmdldEZpbGUoKSl9KSxZdCgyLCIgVXBsb2FkICIpLG90KCkoKX0yJmQmJih1dCgxKSxUdCgiZGlzYWJsZWQiLCEwKSl9ZnVuY3Rpb24gUm10KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdp''@;'; put 'put ''KCk7bnQoMCwiYnV0dG9uIiw2NSksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkuc2hvd1VwbG9hZE1vZGFsPSExKX0pLFl0KDEsIiBDbG9zZSAiKSxvdCgpfWlmKDImZCl7Y29uc3QgaD1RdCgpO1R0KCJkaXNhYmxlZCIsaC5leGNlbEZpbGVQYXJzaW5nfHxoLnVw''@;'; put 'put ''bG9hZExvYWRpbmcpfX1mdW5jdGlvbiBCbXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJidXR0b24iLDY2KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoKS5zaG93VXBsb2FkTW9kYWw9ITEpfSksWXQoMSwiIFNraXAgIiksb3QoKX19ZnVuY3Rpb24g''@;'; put 'put ''UG10KGQsZyl7MSZkJiYobnQoMCwiZGl2Iiw2NyksQ3IoMSwiYXBwLXVwbG9hZC1zdGF0ZXIiLG51bGwsNjgpLG90KCkpfWZ1bmN0aW9uIEZtdChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImFwcC1lZGl0LXJlY29yZCIsNjkpLEduKCJvblJlY29yZENoYW5nZSIsZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gaXQoaCksYShRdCgpLmNvbmZpcm1SZWNvcmRFZGl0KCkpfSkoIm9uUmVjb3JkSW5wdXRGb2N1c2VkIixmdW5jdGlvbih5KXtyZXR1cm4gaXQoaCksYShRdCgpLm9uUmVjb3JkSW5wdXRGb2N1cyh5KSl9KSgib25SZWNvcmRFZGl0Q2xvc2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGl0''@;'; put 'put ''KGgpLGEoUXQoKS5jbG9zZVJlY29yZEVkaXQoKSl9KSgib25OZXh0UmVjb3JkIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkub25OZXh0UmVjb3JkKCkpfSkoIm9uUHJldmlvdXNSZWNvcmQiLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoKS5vblByZXZpb3VzUmVjb3JkKCkp''@;'; put 'put ''fSksb3QoKX1pZigyJmQpe2NvbnN0IGg9UXQoKTtUdCgiY3VycmVudFJlY29yZCIsaC5jdXJyZW50RWRpdFJlY29yZCkoInJlY29yZEFjdGlvbiIsaC5yZWNvcmRBY3Rpb24pKCJsaWJkcyIsaC5saWJkcykoInF1ZXJ5RmlsdGVyIixoLnF1ZXJ5RmlsdGVyKSgiZmlsdGVyIixoLmZpbHRlciko''@;'; put 'put ''InN1Ym1pdExvYWRpbmciLGguc3VibWl0TG9hZGluZykoImhlYWRlclBrcyIsaC5oZWFkZXJQa3MpKCJjZWxsVmFsaWRhdGlvbiIsaC5jZWxsVmFsaWRhdGlvbikoImN1cnJlbnRSZWNvcmRJbmRleCIsaC5jdXJyZW50RWRpdFJlY29yZEluZGV4KSgiY3VycmVudFJlY29yZExvYWRpbmdzIixo''@;'; put 'put ''LmN1cnJlbnRFZGl0UmVjb3JkTG9hZGluZ3MpKCJjdXJyZW50UmVjb3JkRXJyb3JzIixoLmN1cnJlbnRFZGl0UmVjb3JkRXJyb3JzKSgiY3VycmVudFJlY29yZFZhbGlkYXRvciIsaC5jdXJyZW50RWRpdFJlY29yZFZhbGlkYXRvcil9fWZ1bmN0aW9uIEhtdChkLGcpezEmZCYmKG50KDAsImRp''@;'; put 'put ''diIsNzApLENyKDEsInByb2dyZXNzIiksb3QoKSl9Y29uc3QgTm10PWZ1bmN0aW9uKCl7cmV0dXJuWyIvaG9tZSJdfTtmdW5jdGlvbiBWbXQoZCxnKXsxJmQmJihudCgwLCJkaXYiLDcxKSgxLCJzcGFuIiw3MiksQ3IoMiwiY2xyLWljb24iLDczKSxZdCgzLCJCYWNrIHRvIHRhYmxlIHNlbGVj''@;'; put 'put ''dGlvbiAiKSxvdCgpKCkpLDImZCYmKHV0KDEpLFR0KCJyb3V0ZXJMaW5rIixjcygxLE5tdCkpKX1mdW5jdGlvbiBqbXQoZCxnKXsxJmQmJkNyKDAsImNsci1pY29uIiw3OCl9ZnVuY3Rpb24gWm10KGQsZyl7aWYoMSZkJiYoQjAoMCksWXQoMSksbm4oMiwidGhvdXNhbmRTZXBhcmF0b3IiKSxQ''@;'; put 'put ''MCgpKSwyJmQpe2NvbnN0IGg9UXQoMyk7dXQoMSksRmgoIiAoIixQbigyLDIsaC5kYXRhU291cmNlLmxlbmd0aCwiLCIpLCIgIiwxPT09aC5kYXRhU291cmNlLmxlbmd0aD8icm93Ijoicm93cyIsIikgIil9fWZ1bmN0aW9uIHptdChkLGcpezEmZCYmKEIwKDApLFl0KDEsIiAoMCByb3dzKSAi''@;'; put 'put ''KSxQMCgpKX1mdW5jdGlvbiBHbXQoZCxnKXtpZigxJmQmJihCMCgwKSxybigxLFptdCwzLDUsIm5nLWNvbnRhaW5lciIsNDUpLHJuKDIsem10LDIsMCwibmctY29udGFpbmVyIiw0NSksUDAoKSksMiZkKXtjb25zdCBoPVF0KDIpO3V0KDEpLFR0KCJuZ0lmIiwhaC56ZXJvRmlsdGVyUm93cyks''@;'; put 'put ''dXQoMSksVHQoIm5nSWYiLGguemVyb0ZpbHRlclJvd3MpfX1mdW5jdGlvbiBXbXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJoNCIsNzQpKDEsImNsci1pY29uIiw3NSksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkuZGF0YXNldEluZm89ITApfSks''@;'; put 'put ''b3QoKSxybigyLGptdCwxLDAsImNsci1pY29uIiw3NiksWXQoMyksbnQoNCwiYSIsNzcpLFl0KDUpLG90KCkscm4oNixHbXQsMywyLCJuZy1jb250YWluZXIiLDQ1KSxvdCgpfWlmKDImZCl7Y29uc3QgaD1nLm5nVmFyLHY9UXQoKTt1dCgyKSxUdCgibmdJZiIsaC50YWJsZU5hbWUuaW5jbHVk''@;'; put 'put ''ZXMoIi1GQyIpKSx1dCgxKSxKaSgiICIsaC5saWJOYW1lLCIuIiksdXQoMSksVHQoInJvdXRlckxpbmsiLCIvdmlldy9kYXRhLyIrdi5saWJkcyksdXQoMSksamkoaC50YWJsZU5hbWUucmVwbGFjZSgiLUZDIiwiIikpLHV0KDEpLFR0KCJuZ0lmIix2LmRhdGFTb3VyY2UpfX1mdW5jdGlvbiBZ''@;'; put 'put ''bXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJidXR0b24iLDg1KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoMykub25TaG93VXBsb2FkTW9kYWwoKSl9KSxDcigxLCJjbHItaWNvbiIsODYpLG50KDIsInNwYW4iKSxZdCgzLCJVcGxvYWQiKSxvdCgp''@;'; put 'put ''KCl9fWZ1bmN0aW9uIFVtdChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO0IwKDApLG50KDEsImJ1dHRvbiIsODApLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgyKS5vcGVuUWIoKSl9KSxDcigyLCJjbHItaWNvbiIsODEpLG50KDMsInNwYW4iKSxZdCg0LCJGaWx0''@;'; put 'put ''ZXIiKSxvdCgpKCksbnQoNSwiYnV0dG9uIiw4MiksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KDIpLmVkaXRUYWJsZSgpKX0pLENyKDYsImNsci1pY29uIiw4MyksbnQoNywic3BhbiIpLFl0KDgsIkVkaXQiKSxvdCgpKCkscm4oOSxZbXQsNCwwLCJidXR0b24iLDg0''@;'; put 'put ''KSxQMCgpfWlmKDImZCl7Y29uc3QgaD1RdCgyKTt1dCg5KSxUdCgibmdJZiIsIWguY29sdW1uTGV2ZWxTZWN1cml0eUZsYWcpfX1mdW5jdGlvbiBRbXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJidXR0b24iLDkxKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgp''@;'; put 'put ''LGEoUXQoMykuYWRkUm93KCkpfSksQ3IoMSwiY2xyLWljb24iLDkyKSxZdCgyLCJBZGQgUm93ICIpLG90KCl9MiZkJiZUdCgiY2xyTG9hZGluZyIsUXQoMykuYWRkaW5nTmV3Um93KX1mdW5jdGlvbiBKbXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtCMCgwKSxudCgxLCJidXR0b24iLDg3''@;'; put 'put ''KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoMikuY2FuY2VsRWRpdCgpKX0pLENyKDIsImNsci1pY29uIiw4OCksbnQoMywic3BhbiIpLFl0KDQsIkNhbmNlbCIpLG90KCkoKSxybig1LFFtdCwzLDEsImJ1dHRvbiIsODkpLG50KDYsImJ1dHRvbiIsMzgpLEduKCJj''@;'; put 'put ''bGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgyKS5jaGVja1NhdmUoKSl9KSxDcig3LCJjbHItaWNvbiIsOTApLFl0KDgsIlN1Ym1pdCAiKSxvdCgpLFAwKCl9aWYoMiZkKXtjb25zdCBoPVF0KDIpO3V0KDUpLFR0KCJuZ0lmIiwhaC5yZXN0cmljdGlvbnMucmVzdHJpY3RBZGRS''@;'; put 'put ''b3cpfX1mdW5jdGlvbiBYbXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJidXR0b24iLDk2KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoMykubWFudWFsRmlsZUVkaXRNb2RhbD0hMCl9KSxDcigxLCJjbHItaWNvbiIsODMpLG50KDIsInNwYW4iKSxZ''@;'; put 'put ''dCgzLCJFZGl0Iiksb3QoKSgpfX1mdW5jdGlvbiBLbXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtCMCgwKSxudCgxLCJidXR0b24iLDkzKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoMikuZGlzY2FyZFNvdXJjZUZpbGU9ITApfSksQ3IoMiwiY2xyLWljb24i''@;'; put 'put ''LDg4KSxudCgzLCJzcGFuIiksWXQoNCwiRGlzY2FyZCBmaWxlIiksb3QoKSgpLHJuKDUsWG10LDQsMCwiYnV0dG9uIiw5NCksbnQoNiwiYnV0dG9uIiw5NSksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KDIpLmdldEZpbGUoKSl9KSxDcig3LCJjbHItaWNvbiIsOTAp''@;'; put 'put ''LFl0KDgsIiBTdWJtaXQgIiksb3QoKSxQMCgpfWlmKDImZCl7Y29uc3QgaD1RdCgyKTt1dCg1KSxUdCgibmdJZiIsaC5ob3RUYWJsZS5yZWFkT25seSksdXQoMSksVHQoImNsckxvYWRpbmciLGgudXBsb2FkTG9hZGluZyl9fWZ1bmN0aW9uICRtdChkLGcpe2lmKDEmZCYmKG50KDAsImRpdiIs''@;'; put 'put ''NzkpLHJuKDEsVW10LDEwLDEsIm5nLWNvbnRhaW5lciIsNDUpLHJuKDIsSm10LDksMSwibmctY29udGFpbmVyIiw0NSkscm4oMyxLbXQsOSwyLCJuZy1jb250YWluZXIiLDQ1KSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoKTt1dCgxKSxUdCgibmdJZiIsaC5ob3RUYWJsZS5yZWFkT25seSYmIWgu''@;'; put 'put ''dXBsb2FkUHJldmlldyksdXQoMSksVHQoIm5nSWYiLCFoLmhvdFRhYmxlLnJlYWRPbmx5JiYhaC51cGxvYWRQcmV2aWV3KSx1dCgxKSxUdCgibmdJZiIsaC51cGxvYWRQcmV2aWV3KX19ZnVuY3Rpb24gcW10KGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2Iiw5NykoMSwic3BhbiIpLFl0KDIsIkZJ''@;'; put 'put ''TFRFUiA6ICIpLG50KDMsImIiKSxZdCg0KSxvdCgpKCkoKSksMiZkKXtjb25zdCBoPVF0KCk7dXQoNCksamkoaC5xdWVyeVRleHQpfX1mdW5jdGlvbiBlN3QoZCxnKXsxJmQmJihCMCgwKSxudCgxLCJzcGFuIiwxMDApLFl0KDIsIiBMb2FkaW5nLi4uICIpLG90KCksbnQoMywiZGl2IikoNCwi''@;'; put 'put ''aDMiKSxZdCg1LCJMb2FkaW5nIHRhYmxlIiksb3QoKSgpLFAwKCkpfWZ1bmN0aW9uIHQ3dChkLGcpezEmZCYmKEIwKDApLG50KDEsInNwYW4iKSxDcigyLCJjbHItaWNvbiIsMTAxKSxvdCgpLG50KDMsImRpdiIpKDQsImgzIiksWXQoNSwiTG9hZGluZyB0YWJsZSBlcnJvciIpLG90KCkoKSxQ''@;'; put 'put ''MCgpKX1mdW5jdGlvbiBuN3QoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDk4KSgxLCJkaXYiLDk5KSxybigyLGU3dCw2LDAsIm5nLWNvbnRhaW5lciIsNDUpLHJuKDMsdDd0LDYsMCwibmctY29udGFpbmVyIiw0NSksb3QoKSgpKSwyJmQpe2NvbnN0IGg9UXQoKTt1dCgyKSxUdCgibmdJZiIs''@;'; put 'put ''IWguZ2V0ZGF0YUVycm9yKSx1dCgxKSxUdCgibmdJZiIsaC5nZXRkYXRhRXJyb3IpfX1mdW5jdGlvbiByN3QoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJidXR0b24iLDEwMiksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkuYWRkUmVjb3JkQnV0dG9u''@;'; put 'put ''Q2xpY2soKSl9KSxDcigxLCJjbHItaWNvbiIsOTIpLFl0KDIsIiBBZGQgUmVjb3JkICIpLG90KCl9fWZ1bmN0aW9uIGk3dChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImRpdiIsMTEzKSgxLCJkaXYiLDExNCkoMiwibGFiZWwiLDExNSksWXQoMywiTWVzc2FnZSIpLG90KCksbnQo''@;'; put 'put ''NCwidGV4dGFyZWEiLDExNiksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KDIpLm1lc3NhZ2U9eSl9KSxvdCgpKCkoKX1pZigyJmQpe2NvbnN0IGg9UXQoMik7dXQoNCksVHQoIm5nTW9kZWwiLGgubWVzc2FnZSkoImRpc2FibGVkIiwhaC52YWxpZGF0''@;'; put 'put ''aW9uRG9uZSkoInZhbHVlIixoLnZhbGlkYXRpb25Eb25lPyIiOiJQbGVhc2Ugd2FpdCB3aGlsZSB3ZSB2YWxpZGF0ZSAiK2guY29scy5sZW5ndGgqaC5tb2RpZmVkUm93c0luZGV4ZXMubGVuZ3RoKyIgY2VsbHMuIil9fWZ1bmN0aW9uIG83dChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250''@;'; put 'put ''KDAsImRpdiIsMTAzKSgxLCJkaXYiLDEwNCkoMiwiZGl2IiwxMDUpKDMsImRpdiIsMTA2KSg0LCJidXR0b24iLDEwNyksQ3IoNSwiY2xyLWljb24iLDEwOCksb3QoKSxudCg2LCJoMyIsMiksWXQoNyksb3QoKSgpLG50KDgsImRpdiIsMykscm4oOSxpN3QsNSwzLCJkaXYiLDEwOSksb3QoKSxu''@;'; put 'put ''dCgxMCwiZGl2IiwxMTApKDExLCJidXR0b24iLDExMSksR24oImNsaWNrIixmdW5jdGlvbigpe2l0KGgpO2NvbnN0IHk9UXQoKTtyZXR1cm4gYSh5LnNhdmVUYWJsZSh5LmhvdFRhYmxlLmRhdGEpKX0pLFl0KDEyLCIgU3VibWl0ICIpLG90KCksbnQoMTMsImJ1dHRvbiIsMTEyKSxHbigiY2xp''@;'; put 'put ''Y2siLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3QgeT1RdCgpO3JldHVybiB5LmNhbmNlbFN1Ym1pdCgpLHkuc3VibWl0PSExLGEoeS52YWxpZGF0aW9uRG9uZT0wKX0pLFl0KDE0LCIgQ2FuY2VsICIpLG90KCkoKSgpKCkoKX1pZigyJmQpe2NvbnN0IGg9UXQoKTt1dCg3KSxrZigiIFN1Ym1pdCBm''@;'; put 'put ''b3IgQXBwcm92YWwgKCIsaC5yb3dzQ2hhbmdlZC5yb3dzQWRkZWQsIiBhZGRlZCwgIixoLnJvd3NDaGFuZ2VkLnJvd3NVcGRhdGVkLCIgdXBkYXRlZCwgIixoLnJvd3NDaGFuZ2VkLnJvd3NEZWxldGVkLCIgZGVsZXRlZCkgIiksdXQoMiksVHQoIm5nSWYiLGgudGFibGVUcnVlKSx1dCgyKSxU''@;'; put 'put ''dCgiZGlzYWJsZWQiLCFoLnZhbGlkYXRpb25Eb25lKX19ZnVuY3Rpb24gYTd0KGQsZyl7aWYoMSZkJiYobnQoMCwic3BhbiIsMTE3KSxZdCgxKSxubigyLCJwa1NwYWNlU2VwYXJhdGUiKSxvdCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1RdCgpO3V0KDEpLEZoKCIgT24gcm93ICIs''@;'; put 'put ''aCsxLCI6ICIsenQoMiwyLHYucGtGaWVsZHNbaF0ucmVwbGFjZSgifCIsIiIpKSwiICIpfX1mdW5jdGlvbiBsN3QoZCxnKXtpZigxJmQmJihudCgwLCJwIiksWXQoMSksb3QoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3V0KDEpLGtmKCIgIixoLmNvbCwiKCIsaC5sZW4sIiksICIsaC52''@;'; put 'put ''YWwsIiAiKX19ZnVuY3Rpb24gczd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiZGl2IiwxMTgpKDEsImRpdiIsMTE5KSgyLCJkaXYiLDEwNSkoMywiZGl2IiwxMDYpKDQsImJ1dHRvbiIsMTA3KSxDcig1LCJjbHItaWNvbiIsMTA4KSxvdCgpLG50KDYsImgzIiwyKSxZdCg3LCJF''@;'; put 'put ''cnJvciIpLG90KCkoKSxudCg4LCJkaXYiLDMpKDksInAiKSxZdCgxMCwiWW91IGNhbm5vdCBzdWJtaXQgZW1wdHkgY2xhdXNlcyIpLG90KCkoKSxudCgxMSwiZGl2IiwxNykoMTIsImJ1dHRvbiIsMzgpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgpLm51bGxWYXJp''@;'; put 'put ''YWJsZXM9ITEpfSksWXQoMTMsIiBPayAiKSxvdCgpKCkoKSgpKCl9fWZ1bmN0aW9uIHU3dChkLGcpezEmZCYmQ3IoMCwiYXBwLXF1ZXJ5IixudWxsLDEyMCl9ZnVuY3Rpb24gYzd0KGQsZyl7MSZkJiYobnQoMCwicCIsMTIxKSxZdCgxLCIgU29ycnkgdGhhdCBkaWRuJ3Qgd29yaywgdHJ5IGFn''@;'; put 'put ''YWluLiAiKSxvdCgpKX1jb25zdCBmN3Q9ZnVuY3Rpb24oZCxnKXtyZXR1cm57bGliTmFtZTpkLHRhYmxlTmFtZTpnfX0sRExlPWZ1bmN0aW9uKCl7cmV0dXJuWyIiLCIgIl19LGg3dD1mdW5jdGlvbihkKXtyZXR1cm57aGVhZGVyQmFyRmlsdGVyOmR9fSxMTGU9TCg0MTkyNSksT0xlPUwoOTMx''@;'; put 'put ''NzIpLkJ1ZmZlcjtsZXQgam5lPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJLFosdWUsX2UsQmUsTmUpe3RoaXMuYXBwU2VydmljZT1oLHRoaXMuZXZlbnRTZXJ2aWNlPXYsdGhpcy5sb2dnZXJTZXJ2aWNlPXksdGhpcy5zYXNTdG9yZVNlcnZpY2U9Qyx0aGlzLmhlbHBlclNl''@;'; put 'put ''cnZpY2U9SSx0aGlzLnJvdXRlcj1aLHRoaXMucm91dGU9dWUsdGhpcy5zYXNTZXJ2aWNlPV9lLHRoaXMuY2RmPUJlLHRoaXMuaG90UmVnaXN0ZXJlcj1OZSx0aGlzLnVwbG9hZFN0YXRlckNvbXBMaXN0PW5ldyB6cix0aGlzLnF1ZXJ5RmlsdGVyQ29tcExpc3Q9bmV3IHpyLHRoaXMuaG90SW5z''@;'; put 'put ''dGFuY2VDb21wTGlzdD1uZXcgenIsdGhpcy5maWxlVXBsb2FkSW5wdXRDb21wTGlzdD1uZXcgenIsdGhpcy5tZXNzYWdlPSIiLHRoaXMuJGRhdGFGb3JtYXRzPW51bGwsdGhpcy5jb2xzPVtdLHRoaXMuZGVtb0xpbWl0cz10aGlzLmFwcFNlcnZpY2UuZGVtb0xpbWl0cyx0aGlzLnJlc3RyaWN0''@;'; put 'put ''aW9ucz17fSx0aGlzLmRhdGFzZXRJbmZvPSExLHRoaXMuZHNtZXRhPVtdLHRoaXMuaG90VGFibGU9e2RhdGE6W10sY29sSGVhZGVyczpbXSxoaWRkZW46ITAsY29sdW1uczpbXSxoZWlnaHQ6IjEwMCUiLG1pblNwYXJlUm93czoxLGxpY2Vuc2VLZXk6dm9pZCAwLHJlYWRPbmx5OiEwLHNldHRp''@;'; put 'put ''bmdzOntjb250ZXh0TWVudTp7aXRlbXM6e2VkaXRfcm93OntuYW1lOiJFZGl0IHJvdyIsaGlkZGVuKCl7Y29uc3QgcHQ9dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCk7aWYoIXB0KXJldHVybiExO2NvbnN0IE90PXB0WzBdO3JldHVybiBPdC5mcm9tLnJvdyE9PU90LnRvLnJvd30sY2FsbGJhY2s6''@;'; put 'put ''KEtlLHB0LE90KT0+e2xldCAkdD1wdFswXTskdC5zdGFydC5yb3c9PT0kdC5lbmQucm93JiZ0aGlzLmVkaXRSZWNvcmQobnVsbCwkdC5zdGFydC5yb3cpfX0scm93X2Fib3ZlOntuYW1lOiJSb3cgYWJvdmUifSxyb3dfYmVsb3c6e25hbWU6IlJvdyBiZWxvdyJ9LHJlbW92ZV9yb3c6e25hbWU6''@;'; put 'put ''Iklnbm9yZSByb3cifSxzcDE6e25hbWU6Ii0tLS0tLS0tLSJ9LHVuZG86e25hbWU6IlVuZG8ifSxyZWRvOntuYW1lOiJSZWRvIn19fX19LHRoaXMuaG90Q2VsbHNQcm9wUm93PW51bGwsdGhpcy5maWx0ZXI9ITEsdGhpcy5zdWJtaXRMb2FkaW5nPSExLHRoaXMudXBsb2FkTG9hZGluZz0hMSx0''@;'; put 'put ''aGlzLnJvd3NDaGFuZ2VkPXtyb3dzVXBkYXRlZDowLHJvd3NEZWxldGVkOjAscm93c0FkZGVkOjB9LHRoaXMubW9kaWZlZFJvd3NJbmRleGVzPVtdLHRoaXMucXVlcnlFcnI9ITEsdGhpcy5zdWNjZXNzRW5hYmxlPSExLHRoaXMubnVsbFZhcmlhYmxlcz0hMSx0aGlzLnBrRmllbGRzPVtdLHRo''@;'; put 'put ''aXMuZmlsZW5hbWU9IiIsdGhpcy5iYWRFZGl0PSExLHRoaXMuc2F2ZUxvYWRpbmc9ITEsdGhpcy5hcHByb3ZlcnM9W10sdGhpcy5lcnJWYWxpZGF0aW9uPSExLHRoaXMucGtOdWxsPSExLHRoaXMubm9Qa051bGw9ITEsdGhpcy50YWJsZURhdGE9W10sdGhpcy5xdWVyeVRleHQ9IiIsdGhpcy5x''@;'; put 'put ''dWVyeVRleHRTYXZlZD0iIix0aGlzLnNob3dBcHByb3ZlcnM9ITEsdGhpcy5wa0R1cHM9ITEsdGhpcy52YWxpZGF0aW9uRG9uZT0wLHRoaXMuZHVwbGljYXRlUGtJbmRleGVzPVtdLHRoaXMuY29sdW1uSGVhZGVyPVtdLHRoaXMuc3BlY0luZm89W10sdGhpcy50b29Mb25nPSExLHRoaXMuZXhj''@;'; put 'put ''ZWVkQ2VsbHM9W10sdGhpcy51cGxvYWRlcj1uZXcgTTV0KHt1cmw6IiJ9KSx0aGlzLnVwbG9hZFVybD0iIix0aGlzLmV4Y2VsRmlsZVJlYWR5PSExLHRoaXMudXBsb2FkUHJldmlldz0hMSx0aGlzLmV4Y2VsRmlsZVBhcnNpbmc9ITEsdGhpcy5leGNlbFVwbG9hZFN0YXRlPW51bGwsdGhpcy5k''@;'; put 'put ''YXRhPVtdLHRoaXMuaGVhZGVyQXJyYXk9W10sdGhpcy5ob3REYXRhU2NoZW1hPXt9LHRoaXMuaGVhZGVyU2hvdz1bXSx0aGlzLmhlYWRlclZpc2libGU9ITEsdGhpcy5oYXNCYXNlRHJvcFpvbmVPdmVyPSExLHRoaXMuaGFzQW5vdGhlckRyb3Bab25lT3Zlcj0hMSx0aGlzLmhlYWRlclBrcz1b''@;'; put 'put ''XSx0aGlzLmNvbHVtbkxldmVsU2VjdXJpdHlGbGFnPSExLHRoaXMuZGF0ZVRpbWVIZWFkZXJzPVtdLHRoaXMudGltZUhlYWRlcnM9W10sdGhpcy5kYXRlSGVhZGVycz1bXSx0aGlzLnhsUnVsZXM9W10sdGhpcy5lbmNvZGluZz0iVVRGLTgiLHRoaXMuaGVhZGVyQ29sdW1ucz1bXSx0aGlzLmNl''@;'; put 'put ''bGxWYWxpZGF0aW9uPVtdLHRoaXMuZmlsZVBhc3N3b3JkU3ViamVjdD1uZXcgJGUsdGhpcy5maWxlVW5sb2NrRXJyb3I9ITEsdGhpcy5maWxlUGFzc3dvcmRNb2RhbD0hMSx0aGlzLnNob3dVcGxvYWRNb2RhbD0hMSx0aGlzLmRpc2NhcmRTb3VyY2VGaWxlPSExLHRoaXMubWFudWFsRmlsZUVk''@;'; put 'put ''aXRNb2RhbD0hMSx0aGlzLnJlY29yZEFjdGlvbj1udWxsLHRoaXMuY3VycmVudEVkaXRSZWNvcmRMb2FkaW5ncz1bXSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkRXJyb3JzPVtdLHRoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleD0tMSx0aGlzLmdlbmVyYXRlRWRpdFJlY29yZFVybExvYWRpbmc9''@;'; put 'put ''ITEsdGhpcy5nZW5lcmF0ZWRSZWNvcmRVcmw9bnVsbCx0aGlzLmFkZFJlY29yZFVybD1udWxsLHRoaXMucmVjb3JkTmV3T3JQa01vZGlmaWVkPSExLHRoaXMuYWRkUmVjb3JkTG9hZGluZz0hMSx0aGlzLnNpbmdsZVJvd1NlbGVjdGVkPSExLHRoaXMuYWRkaW5nTmV3Um93PSExLHRoaXMuZ2V0''@;'; put 'put ''ZGF0YUVycm9yPSExLHRoaXMuemVyb0ZpbHRlclJvd3M9ITEsdGhpcy50YWJsZUZpbGVEcmFnT3Zlcj0hMSx0aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlPVtdLHRoaXMudmFsaWRhdGlvblRhYmxlTGltaXQ9MjAsdGhpcy5leHRlbmRlZENlbGxWYWxpZGF0aW9uRmllbGRzPXtESVNQTEFZX0lO''@;'; put 'put ''REVYOjAsRVhUUkFfQ09MX05BTUU6MSxESVNQTEFZX1ZBTFVFOjIsRElTUExBWV9UWVBFOjMsUkFXX1ZBTFVFX05VTTo0LFJBV19WQUxVRV9DSEFSOjUsRk9SQ0VfRkxBRzo2fSx0aGlzLmNlbGxWYWxpZGF0aW9uRmllbGRzPXtESVNQTEFZX0lOREVYOjAsRElTUExBWV9WQUxVRToxLFJBV19W''@;'; put 'put ''QUxVRToyfSx0aGlzLmRpc2FibGVkQmFzaWNEeW5hbWljQ2VsbFZhbGlkYXRpb25NYXA9W10sdGhpcy50aW1lc0NsaWNrZWQ9MCx0aGlzLmhvdFJlZ2lzdGVyZXI9bmV3IFNPLHRoaXMucGFyc2VSZXN0cmljdGlvbnMoKSx0aGlzLnNldFJlc3RyaWN0aW9ucygpfXBhcnNlUmVzdHJpY3Rpb25z''@;'; put 'put ''KCl7dGhpcy5hcHBTZXJ2aWNlLnJlc3RyaWN0RWRpdFJlY29yZCYmKHRoaXMucmVzdHJpY3Rpb25zLnJlbW92ZUFkZFJlY29yZEJ1dHRvbj0hMCx0aGlzLnJlc3RyaWN0aW9ucy5yZW1vdmVFZGl0UmVjb3JkQnV0dG9uPSEwKSx0aGlzLmRlbW9MaW1pdHMuZGlzYWJsZWRFZGl0UmVjb3JkJiYo''@;'; put 'put ''dGhpcy5yZXN0cmljdGlvbnMucmVzdHJpY3RBZGRSZWNvcmQ9ITApfXNldFJlc3RyaWN0aW9ucyhoKXt2YXIgdix5LEMsSSxaLHVlLF9lLEJlO2gmJih0aGlzLnJlc3RyaWN0aW9ucz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5yZXN0cmljdGlvbnMpLGgpKSx0aGlzLnJl''@;'; put 'put ''c3RyaWN0aW9ucy5yZW1vdmVFZGl0UmVjb3JkQnV0dG9uJiZkZWxldGUobnVsbD09PSh5PW51bGw9PT0odj10aGlzLmhvdFRhYmxlKXx8dm9pZCAwPT09dj92b2lkIDA6di5zZXR0aW5ncyl8fHZvaWQgMD09PXk/dm9pZCAwOnkuY29udGV4dE1lbnUpLml0ZW1zLmVkaXRfcm93LHRoaXMucmVz''@;'; put 'put ''dHJpY3Rpb25zLnJlc3RyaWN0QWRkUm93JiYoZGVsZXRlKG51bGw9PT0oST1udWxsPT09KEM9dGhpcy5ob3RUYWJsZSl8fHZvaWQgMD09PUM/dm9pZCAwOkMuc2V0dGluZ3MpfHx2b2lkIDA9PT1JP3ZvaWQgMDpJLmNvbnRleHRNZW51KS5pdGVtcy5yb3dfYWJvdmUsZGVsZXRlKG51bGw9PT0o''@;'; put 'put ''dWU9bnVsbD09PShaPXRoaXMuaG90VGFibGUpfHx2b2lkIDA9PT1aP3ZvaWQgMDpaLnNldHRpbmdzKXx8dm9pZCAwPT09dWU/dm9pZCAwOnVlLmNvbnRleHRNZW51KS5pdGVtcy5yb3dfYmVsb3csZGVsZXRlKG51bGw9PT0oQmU9bnVsbD09PShfZT10aGlzLmhvdFRhYmxlKXx8dm9pZCAwPT09''@;'; put 'put ''X2U/dm9pZCAwOl9lLnNldHRpbmdzKXx8dm9pZCAwPT09QmU/dm9pZCAwOkJlLmNvbnRleHRNZW51KS5pdGVtcy5yZW1vdmVfcm93KX1jaGVja1Jvd0xpbWl0KCl7dmFyIGg7dGhpcy5kZW1vTGltaXRzLnJvd3NfYWxsb3dlZCYmKHRoaXMucmVzdHJpY3Rpb25zLnJlc3RyaWN0QWRkUm93PShu''@;'; put 'put ''dWxsPT09KGg9dGhpcy5kYXRhU291cmNlKXx8dm9pZCAwPT09aD92b2lkIDA6aC5sZW5ndGgpPj10aGlzLmRlbW9MaW1pdHMucm93c19hbGxvd2VkKX1yZXNldEZpbHRlcigpe3RoaXMucXVlcnlGaWx0ZXJDb21wTGlzdC5maXJzdCYmdGhpcy5xdWVyeUZpbHRlckNvbXBMaXN0LmZpcnN0LnJl''@;'; put 'put ''c2V0RmlsdGVyKCl9b25TaG93VXBsb2FkTW9kYWwoKXt0aGlzLmRlbW9MaW1pdHMuZGlzYWJsZWRGaWxlVXBsb2FkP3RoaXMuZXZlbnRTZXJ2aWNlLnNob3dEZW1vTGltaXRNb2RhbCgpOnRoaXMuY29sdW1uTGV2ZWxTZWN1cml0eUZsYWc/dGhpcy5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2Rh''@;'; put 'put ''bCgiSW5mb3JtYXRpb24iLCJVcGxvYWQgZmVhdHVyZSBpcyBkaXNhYmxlZCB3aGlsZSBDb2x1bW4gTGV2ZWwgU2VjdXJpdHkgcnVsZXMgYXJlIGFjdGl2ZSIpOnRoaXMudXBsb2FkUHJldmlld3x8KHRoaXMuc2hvd1VwbG9hZE1vZGFsPSEwKX1maWxlT3ZlckJhc2UoaCl7dGhpcy5oYXNCYXNl''@;'; put 'put ''RHJvcFpvbmVPdmVyPWh9dXBkYXRlX3NoZWV0X3JhbmdlKGgpe3ZhciB2PXtzOntyOjEvMCxjOjEvMH0sZTp7cjowLGM6MH19O09iamVjdC5rZXlzKGgpLmZpbHRlcihmdW5jdGlvbih5KXtyZXR1cm4iISIhPXkuY2hhckF0KDApfSkubWFwKFNNLnV0aWxzLmRlY29kZV9jZWxsKS5mb3JFYWNo''@;'; put 'put ''KGZ1bmN0aW9uKHkpe3Yucy5jPU1hdGgubWluKHYucy5jLHkuYyksdi5zLnI9TWF0aC5taW4odi5zLnIseS5yKSx2LmUuYz1NYXRoLm1heCh2LmUuYyx5LmMpLHYuZS5yPU1hdGgubWF4KHYuZS5yLHkucil9KSxoWyIhcmVmIl09U00udXRpbHMuZW5jb2RlX3JhbmdlKHYpfWdldFJhbmdlQW5k''@;'; put 'put ''U2hlZXQoaCl7bGV0IHY9MCx5PTAsQz0tMSxJPS0xLFo9IiIsdWU9ITEsX2U9W10sTmU9WyJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18iLC4uLnRoaXMuaGVhZGVyQXJyYXldLm1hcChPdD0+T3QudG9Mb3dlckNhc2UoKSksS2U9TmUucmVkdWNlKChPdCwkdCk9PihPdFskdF09LTEs''@;'; put 'put ''T3QpLHt9KTtyZXR1cm4gaC5TaGVldE5hbWVzLmZvckVhY2goT3Q9PntpZih1ZSlyZXR1cm47X2U9W10sWj1PdDtjb25zdCAkdD1oLlNoZWV0c1taXTtpZih0aGlzLmRhdGE9U00udXRpbHMuc2hlZXRfdG9fanNvbigkdCx7aGVhZGVyOjEsYmxhbmtyb3dzOiExLGRlZnZhbDoiIn0pLHRoaXMu''@;'; put 'put ''ZGF0YS5sZW5ndGg8PTEpcmV0dXJuO2xldCBmbj1bXTt0aGlzLmhlYWRlckFycmF5LmZvckVhY2goKCk9PmZuLnB1c2goIiIpKSx0aGlzLmRhdGEucHVzaChmbik7bGV0IExuPSExO2lmKHRoaXMuZGF0YS5mb3JFYWNoKChpcixtcik9PntpZighdWUpaWYoTG4pe2xldCBTcj0hMCx3cj0hMTtO''@;'; put 'put ''ZS5mb3JFYWNoKFFyPT57Y29uc3QgeWk9S2VbUXJdOyIiIT09aXJbeWldJiZ2b2lkIDAhPT1pclt5aV0/U3I9ITE6LTEhPT10aGlzLmhlYWRlclBrcy5pbmRleE9mKFFyLnRvVXBwZXJDYXNlKCkpJiYod3I9ITApfSksU3J8fHdyPyhJPW1yLHVlPSEwKTotMT09PUMmJihDPW1yKX1lbHNle2Nv''@;'; put 'put ''bnN0IFNyPWlyLm1hcChRcj0+UXIudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKTtpZighU3IuaW5jbHVkZXMoIl9fX19fZGVsZXRlX190aGlzX19yZWNvcmRfX19fXyIpKXtjb25zdCBRcj1OZS5pbmRleE9mKCJfX19fX2RlbGV0ZV9fdGhpc19fcmVjb3JkX19fX18iKTtRcj4tMSYmTmUuc3Bs''@;'; put 'put ''aWNlKFFyLDEpfUxuPSEwLE5lLmZvckVhY2goUXI9PnstMT09PVNyLmluZGV4T2YoUXIpJiYoTG49ITEpfSk7bGV0IHdyPVtdO3dyPXRoaXMuZmluZFZhbGlkSGVhZGVycyhTcixOZSxtcixaKSwhMT09PXdyWzBdPyhMbj0hMSx3clsxXS5sZW5ndGg+MCYmd3JbMV0uZm9yRWFjaChRcj0+e19l''@;'; put 'put ''LnB1c2goUXIpfSkpOktlPXdyWzFdfX0pLHVlJiYodGhpcy51cGRhdGVfc2hlZXRfcmFuZ2UoJHQpLCR0WyIhcmVmIl0pKXtjb25zdCBtcj1TTS51dGlscy5kZWNvZGVfcmFuZ2UoJHRbIiFyZWYiXXx8IiIpO3Y9bXIucy5yLHk9bXIucy5jfX0pLC0xPT09QyYmKHVlPSExKSx7Zm91bmREYXRh''@;'; put 'put ''OnVlLHNoZWV0TmFtZTpaLHN0YXJ0Um93OkMsZW5kUm93OkksY3N2QXJyYXlIZWFkZXJzTWFwOktlLG1pc3NpbmdIZWFkZXJzOl9lLHJhbmdlU3RhcnRSb3c6dixyYW5nZVN0YXJ0Q29sOnl9fXByb21wdEV4Y2VsUGFzc3dvcmQoKXtyZXR1cm4gbmV3IFByb21pc2UoKGgsdik9Pnt0aGlzLmZp''@;'; put 'put ''bGVQYXNzd29yZE1vZGFsPSEwLHNldFRpbWVvdXQoKCk9Pntjb25zdCB5PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNmaWxlUGFzc3dvcmRJbnB1dCIpO3kmJih5LmZvY3VzKCkseS52YWx1ZT0iIil9LDEwMCksdGhpcy5maWxlUGFzc3dvcmRTdWJqZWN0LnN1YnNjcmliZSh5PT57dGhpcy5m''@;'; put 'put ''aWxlVW5sb2NrRXJyb3I9ITEsaCh5fHx2b2lkIDApfSl9KX1nZXRGaWxlRGVzYyhoLHY9ITEpe2xldCB5O3RoaXMuZXhjZWxVcGxvYWRTdGF0ZT0iTG9hZGluZyIsdGhpcy5leGNlbEZpbGVQYXJzaW5nPSEwLHk9dj9oWzBdOmgudGFyZ2V0LmZpbGVzWzBdLHRoaXMuZXhjZWxGaWxlUmVhZHk9''@;'; put 'put ''ITEsdGhpcy5maWxlbmFtZT0iIjtsZXQgQz15Lm5hbWU7dGhpcy5maWxlbmFtZT1DLHRoaXMuYXBwZW5kVXBsb2FkU3RhdGUoYExvYWRpbmcgJHtDfSBpbnRvIHRoZSBicm93c2VyYCk7bGV0IFo9Qy5zbGljZShDLmxhc3RJbmRleE9mKCIuIikrMSxDLmxhc3RJbmRleE9mKCIuIikrNCk7aWYo''@;'; put 'put ''InhscyI9PT1aLnRvTG93ZXJDYXNlKCkpe2xldCB1ZT1uZXcgRmlsZVJlYWRlcjt1ZS5vbmxvYWQ9QmU9Pm5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBOZT10aGlzLnRvQnN0cihCZS50YXJnZXQucmVzdWx0KTtsZXQgS2UscHQ9ITE7Y29uc3QgT3Q9e3R5cGU6ImJp''@;'; put 'put ''bmFyeSIsY2VsbERhdGVzOiExLGNlbGxGb3JtdWxhOiEwLGNlbGxTdHlsZXM6ITAsY2VsbE5GOiExLGNlbGxUZXh0OiExfTt0cnl7S2U9U00ucmVhZChOZSxPYmplY3QuYXNzaWduKHt9LE90KSl9Y2F0Y2goUXIpe2lmKFFyLm1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygicGFzc3dv''@;'; put 'put ''cmQiKSlmb3IocHQ9ITA7cHQ7KXtjb25zdCB5aT15aWVsZCB0aGlzLnByb21wdEV4Y2VsUGFzc3dvcmQoKTtpZih5aSl0cnl7S2U9U00ucmVhZChOZSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sT3QpLHtwYXNzd29yZDp5aX0pKSxwdD0hMSx0aGlzLmZpbGVVbmxvY2tFcnJvcj0h''@;'; put 'put ''MX1jYXRjaChLaSl7dGhpcy5maWxlVW5sb2NrRXJyb3I9ITAsS2kubWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCJwYXNzd29yZCIpfHwocHQ9ITEpfWVsc2UgcHQ9ITF9ZWxzZSB0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLFFyLHZvaWQgMCwiRXJyb3IgcmVh''@;'; put 'put ''ZGluZyBmaWxlIil9aWYoIUtlKXJldHVybiB0aGlzLmV4Y2VsRmlsZVBhcnNpbmc9ITEsdm9pZCh0aGlzLnNob3dVcGxvYWRNb2RhbD0hMSk7bGV0ICR0PSExLGZuPVtdO2NvbnN0IExuPVsiX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fIiwuLi50aGlzLmhlYWRlckFycmF5XTtsZXQg''@;'; put 'put ''aXI9TG4ubWFwKFFyPT5Rci50b0xvd2VyQ2FzZSgpKSxtcj1pci5yZWR1Y2UoKFFyLHlpKT0+KFFyW3lpXT0tMSxRcikse30pLFNyPVtdO2NvbnN0IHdyPXRoaXMuZ2V0UmFuZ2VBbmRTaGVldChLZSk7aWYoZm49d3IubWlzc2luZ0hlYWRlcnMsd3IuZm91bmREYXRhKXskdD0hMCxtcj13ci5j''@;'; put 'put ''c3ZBcnJheUhlYWRlcnNNYXA7Y29uc3QgUXI9S2UuU2hlZXRzW3dyLnNoZWV0TmFtZV07dGhpcy5hcHBlbmRVcGxvYWRTdGF0ZShgVGFibGUgZm91bmQgb24gc2hlZXQgJHt3ci5zaGVldE5hbWV9IG9uIHJvdyAke3dyLnN0YXJ0Um93fWApO2xldCB5aT0iIixLaT0iIjtmb3IobGV0IFNvPXdy''@;'; put 'put ''LnN0YXJ0Um93O1NvPHdyLmVuZFJvdzsrK1NvKXtjb25zdCBQbz1bXTtpci5mb3JFYWNoKEphPT57Y29uc3QgYWw9U00udXRpbHMuZW5jb2RlX2NlbGwoe3I6d3IucmFuZ2VTdGFydFJvdytTbyxjOndyLnJhbmdlU3RhcnRDb2wrbXJbSmFdfSk7bGV0IFJzOyIiPT09eWkmJih5aT1hbCksS2k9''@;'; put 'put ''YWwsUnM9UXJbYWxdP1FyW2FsXTp7djoiIn0sUG8ucHVzaChScyl9KSxQby5maW5kKEphPT4iIiE9PUphLnYpJiZTci5wdXNoKFBvKX10aGlzLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFsKCJUYWJsZSBGb3VuZCIsYFNoZWV0OiAke3dyLnNoZWV0TmFtZX1cblJhbmdlOiAke3lpfToke0tp''@;'; put 'put ''fWApfWVsc2UgZm49d3IubWlzc2luZ0hlYWRlcnM7aWYoZm4ubGVuZ3RoPjApe2ZuLnNvcnQoZnVuY3Rpb24oS2ksU28pe3JldHVybiBLaVsxXT09PVNvWzFdPzA6S2lbMV0+U29bMV0/LTE6MX0pO2xldCBRcj1mbi5tYXAoeWk9PnlpWzBdKS5zbGljZSgwLDUpLmpvaW4oIlxuIik7cmV0dXJu''@;'; put 'put ''IHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKG51bGwsUXIpLHNldFRpbWVvdXQoKCk9Pnt0aGlzLmZpbGVuYW1lPSIifSksdGhpcy5leGNlbEZpbGVQYXJzaW5nPSExLHZvaWQgdGhpcy51cGxvYWRlci5xdWV1ZS5wb3AoKX1pZigwPT09U3IubGVuZ3RofHwwPT09U3JbMF0ubGVu''@;'; put 'put ''Z3RoKXJldHVybiB0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLCJObyByZWxldmFudCBkYXRhIGZvdW5kIGluIEZpbGUgISIpLHNldFRpbWVvdXQoKCk9Pnt0aGlzLmZpbGVuYW1lPSIifSksdGhpcy5leGNlbEZpbGVQYXJzaW5nPSExLHZvaWQgdGhpcy51cGxvYWRlci5x''@;'; put 'put ''dWV1ZS5wb3AoKTtpZigodGhpcy5kYXRlVGltZUhlYWRlcnMubGVuZ3RoPjB8fHRoaXMuZGF0ZUhlYWRlcnMubGVuZ3RoPjB8fHRoaXMudGltZUhlYWRlcnMubGVuZ3RoPjApJiYoU3I9dGhpcy51cGRhdGVEYXRlVGltZUNvbHMoTG4sU3IpKSx0aGlzLnhsUnVsZXMubGVuZ3RoPjAmJihTcj10''@;'; put 'put ''aGlzLnVwZGF0ZVhMUnVsZUNvbHMoTG4sU3IpKSwhJHQpe2lmKDA9PT1mbi5sZW5ndGgpdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwobnVsbCwiTm8gcmVsZXZhbnQgZGF0YSBmb3VuZCBpbiBGaWxlICEiKSxzZXRUaW1lb3V0KCgpPT57dGhpcy5maWxlbmFtZT0iIn0pO2Vsc2V7''@;'; put 'put ''Zm4uc29ydChmdW5jdGlvbihLaSxTbyl7cmV0dXJuIEtpWzFdPT09U29bMV0/MDpLaVsxXT5Tb1sxXT8tMToxfSk7bGV0IFFyPWZuLm1hcCh5aT0+eWlbMF0pLnNsaWNlKDAsNSkuam9pbigiXG4iKTt0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLFFyKX1yZXR1cm4gdGhp''@;'; put 'put ''cy5leGNlbEZpbGVQYXJzaW5nPSExLHZvaWQgdGhpcy51cGxvYWRlci5xdWV1ZS5wb3AoKX17dGhpcy5oZWFkZXJTaG93PUxuLFNyPVNyLm1hcCh5aT0+eWkubWFwKEtpPT4ibiI9PT1LaS50P0tpLnY6S2kudykpLFNyPVNyLm1hcCh5aT0+eWkubWFwKChLaSxTbyk9Pnt2YXIgUG87IUtpJiYw''@;'; put 'put ''IT09S2kmJihLaT0iIiksaXNOYU4oS2kpJiYoS2k9S2kucmVwbGFjZSgvIi9nLCciIicpKS5zZWFyY2goLywvZyk+LTEmJihLaT0nIicrS2krJyInKTtjb25zdCBKYT1udWxsPT09KFBvPXRoaXMuZGNWYWxpZGF0b3IpfHx2b2lkIDA9PT1Qbz92b2lkIDA6UG8uZ2V0UnVsZSh0aGlzLmhlYWRl''@;'; put 'put ''clNob3dbU29dKTtyZXR1cm4ibnVtZXJpYyI9PT0obnVsbD09SmE/dm9pZCAwOkphLnR5cGUpJiYoMCxidy5pc1NwZWNpYWxNaXNzaW5nKShLaSkmJiFLaS5pbmNsdWRlcygiLiIpJiYoS2k9Ii4iK0tpKSxLaX0pKSx0aGlzLmRhdGE9U3I7bGV0IFFyPUxuLmpvaW4oIiwiKSsiXG4iO2lmKFFy''@;'; put 'put ''Kz1Tci5tYXAoeWk9PnlpLmpvaW4oIiwiKSkuam9pbigiXG4iKSwiV0xBVElOMSI9PT10aGlzLmVuY29kaW5nKXtsZXQgeWk9TExlLmRlY29kZShPTGUuZnJvbShRciksIkNQLTEyNTIiKSxLaT1uZXcgQmxvYihbeWldLHt0eXBlOiJhcHBsaWNhdGlvbi9jc3YifSksU289dGhpcy5ibG9iVG9G''@;'; put 'put ''aWxlKEtpLHRoaXMuZmlsZW5hbWUrIi5jc3YiKTt0aGlzLnVwbG9hZGVyLmFkZFRvUXVldWUoW1NvXSl9ZWxzZXtsZXQgeWk9bmV3IEJsb2IoW1FyXSx7dHlwZToiYXBwbGljYXRpb24vY3N2In0pLEtpPXRoaXMuYmxvYlRvRmlsZSh5aSx0aGlzLmZpbGVuYW1lKyIuY3N2Iik7dGhpcy51cGxv''@;'; put 'put ''YWRlci5hZGRUb1F1ZXVlKFtLaV0pfXRoaXMuZXhjZWxGaWxlUmVhZHk9ITB9aWYoMD09PXRoaXMuZGF0YS5sZW5ndGgpcmV0dXJuIHRoaXMuc2hvd1VwbG9hZE1vZGFsPSExLHRoaXMudXBsb2FkUHJldmlldz0hMSx0aGlzLmV4Y2VsRmlsZVBhcnNpbmc9ITEsdm9pZCB0aGlzLmV2ZW50U2Vy''@;'; put 'put ''dmljZS5zaG93QWJvcnRNb2RhbChudWxsLCJUYWJsZSBpbiB0aGUgZmlsZSBpcyBlbXB0eS4gRGF0YSBmb3VuZCBvbiBzaGVldDogIik7dGhpcy5leGNlbEZpbGVSZWFkeT0hMCx0aGlzLmdldFBlbmRpbmdFeGNlbFByZXZpZXcoKX0pLHVlLnJlYWRBc0FycmF5QnVmZmVyKHkpfWVsc2UgaWYo''@;'; put 'put ''ImNzdiI9PT1aLnRvTG93ZXJDYXNlKCkpaWYoIldMQVRJTjEiPT09dGhpcy5lbmNvZGluZyl7bGV0IHVlPW5ldyBGaWxlUmVhZGVyO3VlLm9ubG9hZD1CZT0+e2xldCBOZT1MTGUuZGVjb2RlKE9MZS5mcm9tKEJlLnRhcmdldC5yZXN1bHQpLCJDUC0xMjUyIiksS2U9bmV3IEJsb2IoW05lXSx7''@;'; put 'put ''dHlwZTpafSkscHQ9dGhpcy5ibG9iVG9GaWxlKEtlLHRoaXMuZmlsZW5hbWUpO3RoaXMudXBsb2FkZXIucXVldWUucG9wKCksdGhpcy51cGxvYWRlci5hZGRUb1F1ZXVlKFtwdF0pLHRoaXMuZXhjZWxGaWxlUmVhZHk9ITB9LHRoaXMuZXhjZWxGaWxlUmVhZHk9ITAsdGhpcy5leGNlbEZpbGVQ''@;'; put 'put ''YXJzaW5nPSExLHVlLnJlYWRBc0FycmF5QnVmZmVyKHkpLHRoaXMuZ2V0RmlsZSgpfWVsc2UgdGhpcy5leGNlbEZpbGVSZWFkeT0hMCx0aGlzLmV4Y2VsRmlsZVBhcnNpbmc9ITEsdGhpcy5nZXRGaWxlKCk7ZWxzZSB0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLCdJbnZh''@;'; put 'put ''bGlkIGZpbGUgdHlwZSAiPGI+Jyt0aGlzLmZpbGVuYW1lKyc8L2I+Ii4gUGxlYXNlIHVwbG9hZCBjc3Ygb3IgZXhjZWwgZmlsZS4nKSx0aGlzLmV4Y2VsRmlsZVJlYWR5PSEwLHRoaXMuZXhjZWxGaWxlUGFyc2luZz0hMSx0aGlzLnVwbG9hZGVyLnF1ZXVlLnBvcCgpfWdldEZpbGUoKXtpZih0''@;'; put 'put ''aGlzLmNoZWNrSW52YWxpZCgpKXJldHVybiB2b2lkIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKG51bGwsIkludmFsaWQgdmFsdWVzIGFyZSBwcmVzZW50LiIpO3RoaXMudXBsb2FkTG9hZGluZz0hMDtsZXQgaD1bXTtmb3IoY29uc3QgdiBvZiB0aGlzLnVwbG9hZGVyLnF1ZXVl''@;'; put 'put ''KWgucHVzaCh7ZmlsZTp2Ll9maWxlLGZpbGVOYW1lOnYuX2ZpbGUubmFtZX0pO3RoaXMuc2FzU2VydmljZS51cGxvYWRGaWxlKHRoaXMudXBsb2FkVXJsLGgse3RhYmxlOnRoaXMubGliZHN9KS50aGVuKHY9PntpZih2b2lkIDA9PT12LnNhc2pzQWJvcnQpe2lmKHZvaWQgMD09PXYuc2FzcGFy''@;'; put 'put ''YW1zKXJldHVybjt7dGhpcy51cGxvYWRMb2FkaW5nPSExO2xldCB5PXYuc2FzcGFyYW1zWzBdO3RoaXMuc3VjY2Vzc0VuYWJsZT0hMCx0aGlzLnRhYmxlSWQ9eS5EU0lELHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9zdGFnZS8iK3RoaXMudGFibGVJZCl9fWVsc2V7Y29uc3QgeT12LEM9''@;'; put 'put ''eS5zYXNqc0Fib3J0WzBdLk1TRyxJPXkuc2FzanNBYm9ydFswXS5NQUM7dGhpcy51cGxvYWRMb2FkaW5nPSExLHRoaXMuZmlsZW5hbWU9IiIsdGhpcy5maWxlVXBsb2FkSW5wdXRDb21wTGlzdC5maXJzdCYmKHRoaXMuZmlsZVVwbG9hZElucHV0Q29tcExpc3QuZmlyc3QubmF0aXZlRWxlbWVu''@;'; put 'put ''dC52YWx1ZT0iIiksdGhpcy51cGxvYWRlci5xdWV1ZT1bXSx0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbCgiIixDLHtTWVNXQVJOSU5HVEVYVDp5LlNZU1dBUk5JTkdURVhULFNZU0VSUk9SVEVYVDp5LlNZU0VSUk9SVEVYVCxNQUM6SX0pfX0sdj0+e3RoaXMudXBsb2FkTG9hZGlu''@;'; put 'put ''Zz0hMSx0aGlzLmZpbGVVcGxvYWRJbnB1dENvbXBMaXN0LmZpcnN0JiYodGhpcy5maWxlVXBsb2FkSW5wdXRDb21wTGlzdC5maXJzdC5uYXRpdmVFbGVtZW50LnZhbHVlPSIiKSx0aGlzLnVwbG9hZGVyLnF1ZXVlPVtdLHRoaXMuZXZlbnRTZXJ2aWNlLmNhdGNoUmVzcG9uc2VFcnJvcigiZmls''@;'; put 'put ''ZSB1cGxvYWQiLHYpfSl9Z2V0UGVuZGluZ0V4Y2VsUHJldmlldygpe3RoaXMucXVlcnlUZXh0U2F2ZWQ9dGhpcy5xdWVyeVRleHQsdGhpcy5xdWVyeVRleHQ9IiIsdGhpcy5leGNlbFVwbG9hZFN0YXRlPSJQYXJzaW5nIix0aGlzLnRvZ2dsZUhvdFBsdWdpbigiY29udGV4dE1lbnUiLCExKTts''@;'; put 'put ''ZXQgaD1bXTt0aGlzLmRhdGEubWFwKHk9PntsZXQgQz17fTt0aGlzLmhlYWRlclNob3cubWFwKChJLFopPT57Q1tJXT15W1pdfSksQy5fX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX198fChDLl9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fXz0iTm8iKSxoLnB1c2goQyl9KSx0aGlz''@;'; put 'put ''LmRhdGFTb3VyY2VVbmNoYW5nZWQ9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLmRhdGFTb3VyY2UpLHRoaXMuZGF0YVNvdXJjZT1oLHRoaXMuaG90VGFibGUuZGF0YT1oO2NvbnN0IHY9dGhpcy5ob3RJbnN0YW5jZTt0aGlzLmV4Y2VsVXBsb2FkU3RhdGU9IlZhbGlkYXRpbmct''@;'; put 'put ''SE9UIix2LnVwZGF0ZVNldHRpbmdzKHtkYXRhOnRoaXMuZGF0YVNvdXJjZX0sITEpLHYucmVuZGVyKCksdGhpcy5hcHBlbmRVcGxvYWRTdGF0ZSgiVmFsaWRhdGluZyByb3dzIiksdi52YWxpZGF0ZUNlbGxzKCgpPT57dGhpcy5zaG93VXBsb2FkTW9kYWw9ITEsdGhpcy51cGxvYWRQcmV2aWV3''@;'; put 'put ''PSEwLHRoaXMuZXhjZWxGaWxlUGFyc2luZz0hMSx0aGlzLmV4Y2VsVXBsb2FkU3RhdGU9bnVsbH0pfWRpc2NhcmRQZW5kaW5nRXhjZWwoaCl7aCYmdGhpcy5jYW5jZWxFZGl0KCksdGhpcy5maWxlVXBsb2FkSW5wdXRDb21wTGlzdC5maXJzdCYmKHRoaXMuZmlsZVVwbG9hZElucHV0Q29tcExp''@;'; put 'put ''c3QuZmlyc3QubmF0aXZlRWxlbWVudC52YWx1ZT0iIiksdGhpcy51cGxvYWRQcmV2aWV3PSExLHRoaXMuZXhjZWxGaWxlUmVhZHk9ITEsdGhpcy51cGxvYWRlci5xdWV1ZT1bXSxpc05hTihwYXJzZUludCh0aGlzLnJvdXRlci51cmwuc3BsaXQoIi8iKS5wb3AoKXx8IiIpKXx8dGhpcy5xdWVy''@;'; put 'put ''eVRleHRTYXZlZC5sZW5ndGg+MCYmKHRoaXMucXVlcnlUZXh0PXRoaXMucXVlcnlUZXh0U2F2ZWQsdGhpcy5xdWVyeVRleHRTYXZlZD0iIil9cHJldmlld1RhYmxlRWRpdENvbmZpcm0oKXt0aGlzLmRpc2NhcmRQZW5kaW5nRXhjZWwoKSx0aGlzLmNvbnZlcnRUb0NvcnJlY3RUeXBlcyh0aGlz''@;'; put 'put ''LmRhdGFTb3VyY2UpLHRoaXMuZWRpdFRhYmxlKCEwKX1hcHBlbmRVcGxvYWRTdGF0ZShoLHY9ITEpe3RoaXMuY2RmLmRldGVjdENoYW5nZXMoKSx0aGlzLnVwbG9hZFN0YXRlckNvbXBMaXN0LmZpcnN0JiYodj90aGlzLnVwbG9hZFN0YXRlckNvbXBMaXN0LmZpcnN0LnJlcGxhY2VMYXN0U3Rh''@;'; put 'put ''dGUoaCk6dGhpcy51cGxvYWRTdGF0ZXJDb21wTGlzdC5maXJzdC5hcHBlbmRTdGF0ZShoKSl9ZmluZFZhbGlkSGVhZGVycyhoLHYseSxDKXtsZXQgST0hMSxaPVtdLHVlPTA7Zm9yKDt1ZTxoLmxlbmd0aDspe2lmKCFJJiYtMSE9PXYuaW5kZXhPZihoW3VlXSkpe2xldCBfZSxCZT0wLE5lPTAs''@;'; put 'put ''S2U9MCxwdD1bXSxPdD0hMTtmb3IobGV0IExuPXVlO0xuPGgubGVuZ3RoO0xuKyspe2lmKCIiPT09aFtMbl18fC0xIT09cHQuaW5kZXhPZihoW0xuXSkmJnRoaXMuaXNDb2xIZWFkZXIoaFtMbl0pKXsiIj09PWhbTG5dJiYoT3Q9ITApLF9lPUxuO2JyZWFrfXB0LnB1c2goaFtMbl0pfWxldCAk''@;'; put 'put ''dD1bXTt2b2lkIDAhPT1fZT8oJHQ9aC5zbGljZSh1ZSxfZSksS2U9dWUsTmU9X2UsT3Q/KEJlPXVlLHVlPV9lKTooQmU9dWUsdWU9X2UtMSkpOigkdD1oLnNsaWNlKHVlKSxCZT11ZSxLZT11ZSxOZT1oLmxlbmd0aCx1ZT1oLmxlbmd0aCk7bGV0IGZuPSEwO2lmKHYuZm9yRWFjaChMbj0+ey0x''@;'; put 'put ''PT09JHQuaW5kZXhPZihMbikmJihmbj0hMSl9KSxmbil7ST0hMDtsZXQgaXI9di5yZWR1Y2UoZnVuY3Rpb24oU3Isd3Ipe3JldHVybiBTclt3cl09LTEsU3J9LHt9KSxtcj1oLnNsaWNlKEJlLE5lKTtyZXR1cm4gdi5mb3JFYWNoKFNyPT57aXJbU3JdPW1yLmluZGV4T2YoU3IpK0JlfSksWyEw''@;'; put 'put ''LGlyXX17bGV0IExuPWo1dCgkdCx2KTtaLnB1c2goWyI8Yj5UQUIoIitDKyIpPC9iPiAtICIrTG5bMV0uam9pbigiLCIpKyIgKCBtaXNzaW5nICIrTG5bMF0uam9pbigiLCIpKyIgKSIsTG5bMV0ubGVuZ3RoXSl9fXVlKyt9cmV0dXJuWyExLFpdfWlzQ29sUGsoaCl7cmV0dXJuIHRoaXMuaGVh''@;'; put 'put ''ZGVyUGtzLmluZGV4T2YoaCk+LTF9aXNSZWFkb25seUNvbChoKXt2YXIgdjtjb25zdCB5PW51bGw9PT0odj10aGlzLmRjVmFsaWRhdG9yKXx8dm9pZCAwPT09dj92b2lkIDA6di5nZXRSdWxlKGgpO3JldHVybiBudWxsPT15P3ZvaWQgMDp5LnJlYWRPbmx5fWlzQ29sSGVhZGVyKGgpe3JldHVy''@;'; put 'put ''biB0aGlzLmhlYWRlckFycmF5LmluZGV4T2YoaC50b1VwcGVyQ2FzZSgpKT4tMX1yZW1vdmVRdWVyeSgpe3RoaXMuc2FzU3RvcmVTZXJ2aWNlLnJlbW92ZUNsYXVzZSgpfXVwZGF0ZURhdGVUaW1lQ29scyhoLHYpe2lmKHRoaXMuZGF0ZUhlYWRlcnMubGVuZ3RoPjApe2xldCB5PVtdO3RoaXMu''@;'; put 'put ''ZGF0ZUhlYWRlcnMuZm9yRWFjaChDPT57LTEhPT1oLmluZGV4T2YoQykmJnkucHVzaChoLmluZGV4T2YoQykpfSksdi5mb3JFYWNoKEM9Pnt5LmZvckVhY2goST0+e2NvbnN0IFo9Q1tJXTtpZihJbWUoWi52KSl7Y29uc3QgdWU9eG1lKE51bWJlcihaLnYpKTtaLnY9dWUuZ2V0RnVsbFllYXIo''@;'; put 'put ''KSsiLSIrKCIwIisodWUuZ2V0TW9udGgoKSsxKSkuc2xpY2UoLTIpKyItIisoIjAiK3VlLmdldERhdGUoKSkuc2xpY2UoLTIpfWVsc2UgaWYoWiYmWi52JiYtMT09PVoudi50b1N0cmluZygpLmluZGV4T2YoIjoiKSl7Y29uc3QgdWU9bmV3IERhdGUoWi52KTsiSW52YWxpZCBEYXRlIiE9PXVl''@;'; put 'put ''LnRvVVRDU3RyaW5nKCkmJihaLnY9RW1lKHVlKSl9Q1tJXT1afSl9KX1pZih0aGlzLnRpbWVIZWFkZXJzLmxlbmd0aD4wKXtsZXQgeT1bXTt0aGlzLnRpbWVIZWFkZXJzLmZvckVhY2goQz0+ey0xIT09aC5pbmRleE9mKEMpJiZ5LnB1c2goaC5pbmRleE9mKEMpKX0pLHYuZm9yRWFjaChDPT57''@;'; put 'put ''eS5mb3JFYWNoKEk9Pntjb25zdCBaPUNbSV07aWYoSW1lKFoudil8fGtMZShaLnYpfHxaLnYuaW5jbHVkZXMoIkUtIikpe2NvbnN0IHVlPXhtZShOdW1iZXIoWi52KSk7Wi52PUNMZSh1ZSl9Q1tJXT1afSl9KX1pZih0aGlzLmRhdGVUaW1lSGVhZGVycy5sZW5ndGg+MCl7bGV0IHk9W107dGhp''@;'; put 'put ''cy5kYXRlVGltZUhlYWRlcnMuZm9yRWFjaChDPT57LTEhPT1oLmluZGV4T2YoQykmJnkucHVzaChoLmluZGV4T2YoQykpfSksdi5mb3JFYWNoKEM9Pnt5LmZvckVhY2goST0+e2NvbnN0IFo9Q1tJXTtpZihJbWUoWi52KXx8a0xlKFoudikpe2xldCB1ZT14bWUoTnVtYmVyKFoudikpO1oudj1F''@;'; put 'put ''bWUodWUpKyIgIitDTGUodWUpfWVsc2V7aWYoLTE9PT1aLnYuaW5kZXhPZigiICIpJiYtMSE9PVoudi5pbmRleE9mKCI6Iikpe2xldCBfZT1aLnYuc3Vic3RyaW5nKDAsWi52LmluZGV4T2YoIjoiKSk7X2U9X2UrIiAiK1oudi5zdWJzdHJpbmcoWi52LmluZGV4T2YoIjoiKSsxKSxaLnY9X2V9''@;'; put 'put ''bGV0IHVlPW5ldyBEYXRlKFoudik7IkludmFsaWQgRGF0ZSIhPT11ZS50b1VUQ1N0cmluZygpJiYoWi52PUVtZSh1ZSkrIiAiKyhkPT57bGV0IGc9KCIwIitkLmdldEhvdXJzKCkpLnNsaWNlKC0yKSsiOiI7cmV0dXJuIGc9ZysoIjAiK2QuZ2V0TWludXRlcygpKS5zbGljZSgtMikrIjoiLGcr''@;'; put 'put ''PSgiMCIrZC5nZXRTZWNvbmRzKCkpLnNsaWNlKC0yKSxnfSkodWUpKX1DW0ldPVp9KX0pfXJldHVybiB2fXVwZGF0ZVhMUnVsZUNvbHMoaCx2KXtpZih0aGlzLnhsUnVsZXMubGVuZ3RoPjApe2NvbnN0IHk9W107dGhpcy54bFJ1bGVzLmZvckVhY2goQz0+ey0xIT09aC5pbmRleE9mKEMuWExf''@;'; put 'put ''Q09MVU1OKSYmKEMuaW5kZXg9aC5pbmRleE9mKEMuWExfQ09MVU1OKSx5LnB1c2goQykpfSksdi5mb3JFYWNoKEM9Pnt5LmZvckVhY2goST0+e2NvbnN0IFo9Q1tJLmluZGV4XTsiRk9STVVMQSI9PT1JLlhMX1JVTEUmJiJmImluIFomJigibiI9PT1aLnQ/Wi52PSI9IitaLmY6Wi53PSI9Iita''@;'; put 'put ''LmYpLENbSV09Wn0pfSl9cmV0dXJuIHZ9YmxvYlRvRmlsZShoLHYpe2NvbnN0IHk9aDtyZXR1cm4geS5sYXN0TW9kaWZpZWREYXRlPW5ldyBEYXRlLHkubmFtZT12LHl9dG9Cc3RyKGgpe2xldCB2PW5ldyBVaW50OEFycmF5KGgpLHk9IiIsQz12LmJ5dGVMZW5ndGg7Zm9yKGxldCBJPTA7STxD''@;'; put 'put ''O0krKyl5Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKHZbSV0pO3JldHVybiB5fXNlbmRDbGF1c2UoKXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMuc3VibWl0TG9hZGluZz0hMDtsZXQgaD1bXSx2PVtdO2lmKHZvaWQgMD09PXRoaXMuY2xhdXNlcylyZXR1cm4g''@;'; put 'put ''dGhpcy5udWxsVmFyaWFibGVzPSEwLHZvaWQodGhpcy5zdWJtaXRMb2FkaW5nPSExKTt7bGV0IHk9dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqO2lmKHlbMF0uZWxlbWVudHMubGVuZ3RoPDEpcmV0dXJuKCJob21lIj09PW5pLnJvb3RQYXJhbXx8ImVkaXRvciI9PT1uaS5yb290UGFyYW0pJiYobmku''@;'; put 'put ''ZWRpdG9yLmZpbHRlci5jbGF1c2VzPVtdLG5pLmVkaXRvci5maWx0ZXIucXVlcnk9W10sbmkuZWRpdG9yLmZpbHRlci5ncm91cExvZ2ljPSIiKSx2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9lZGl0b3IvIit0aGlzLmxpYmRzKTtmb3IobGV0IEM9MDtDPHkubGVuZ3RoO0MrKyl7''@;'; put 'put ''Y29uc3QgST15W0NdLmVsZW1lbnRzO2g9SS5maWx0ZXIoZnVuY3Rpb24oWil7cmV0dXJuIG51bGw9PT1aLnZhcmlhYmxlfSksaC5sZW5ndGgmJnYucHVzaChJKX19aWYodi5sZW5ndGgpcmV0dXJuIHRoaXMubnVsbFZhcmlhYmxlcz0hMCx2b2lkKHRoaXMuc3VibWl0TG9hZGluZz0hMSk7dHJ5''@;'; put 'put ''e2lmKHZvaWQgMCE9PXRoaXMuY2xhdXNlcyYmdGhpcy5saWJkcyl7Y29uc3QgeT17Z3JvdXBMb2dpYzp0aGlzLmNsYXVzZXMuZ3JvdXBMb2dpYyxmaWx0ZXJHcm91cHM6W119O3RoaXMuY2xhdXNlcy5xdWVyeU9iai5mb3JFYWNoKEk9Pntjb25zdCBaPXtmaWx0ZXJDbGF1c2VzOltdfTtJLmVs''@;'; put 'put ''ZW1lbnRzLmZvckVhY2godWU9PntaLmZpbHRlckNsYXVzZXMucHVzaCh0aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHVlKSl9KSxaLmNsYXVzZUxvZ2ljPUkuY2xhdXNlTG9naWMseS5maWx0ZXJHcm91cHMucHVzaCh0aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKFopKX0pO2NvbnN0''@;'; put 'put ''IEM9dGhpcy5zYXNTdG9yZVNlcnZpY2UuY3JlYXRlRmlsdGVyUXVlcnlUYWJsZSh5KTt5aWVsZCB0aGlzLnNhc1N0b3JlU2VydmljZS5zYXZlUXVlcnkodGhpcy5saWJkcyxDKS50aGVuKEk9Pnt0aGlzLnF1ZXJ5RmlsdGVyPXtpZDpJLnJlc3VsdFswXS5GSUxURVJfUkssdGFibGU6SS5yZXN1''@;'; put 'put ''bHRbMF0uRklMVEVSX1RBQkxFfSx0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvIix7c2tpcExvY2F0aW9uQ2hhbmdlOiEwfSkudGhlbigoKT0+dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2VkaXRvci8iK3RoaXMucXVlcnlGaWx0ZXIudGFibGUrIi8iK3RoaXMucXVlcnlGaWx0ZXIu''@;'; put 'put ''aWQpKSx0aGlzLmZpbHRlcj0hMX0pLmNhdGNoKEk9Pnt0aGlzLnN1Ym1pdExvYWRpbmc9ITF9KX19Y2F0Y2goeSl7dGhpcy5xdWVyeUVycj0hMCx0aGlzLnN1Ym1pdExvYWRpbmc9ITEsdGhpcy5xdWVyeUVyck1lc3NhZ2U9eX19KX1vcGVuUWIoKXt0aGlzLmxpYmRzJiYodGhpcy5maWx0ZXI9''@;'; put 'put ''ITAsdGhpcy5jZGYuZGV0ZWN0Q2hhbmdlcygpLHRoaXMuc3VibWl0TG9hZGluZz0hMSx0aGlzLnNhc1N0b3JlU2VydmljZS5zZXRRdWVyeVZhcmlhYmxlcyh0aGlzLmxpYmRzLHRoaXMuY29scykpfWVkaXRUYWJsZShoLHYpe3RoaXMudG9nZ2xlSG90UGx1Z2luKCJjb250ZXh0TWVudSIsITAp''@;'; put 'put ''O2NvbnN0IHk9dGhpcy5ob3RJbnN0YW5jZTtsZXQgQz15LmdldFBsdWdpbigibXVsdGlDb2x1bW5Tb3J0aW5nIiksST1DLmdldFNvcnRDb25maWcoKSxaPUFycmF5LmlzQXJyYXkoSSk/STpbSV07c2V0VGltZW91dCgoKT0+e2h8fCh0aGlzLmRhdGFTb3VyY2VVbmNoYW5nZWQ9dGhpcy5oZWxw''@;'; put 'put ''ZXJTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLmRhdGFTb3VyY2UpLHYmJnRoaXMuZGF0YVNvdXJjZVVuY2hhbmdlZC5wb3AoKSksdGhpcy5ob3RUYWJsZS5yZWFkT25seT0hMSx0aGlzLmhvdFRhYmxlLmRhdGE9dGhpcy5kYXRhU291cmNlLHkudXBkYXRlU2V0dGluZ3Moe3JlYWRPbmx5OnRoaXMu''@;'; put 'put ''aG90VGFibGUucmVhZE9ubHl9LCExKSx5LnJlbmRlcigpO2ZvcihsZXQgdWUgb2YgWilDLnNvcnQodWUpO3RoaXMucmVTZXRDZWxsVmFsaWRhdGlvblZhbHVlcygpfSwwKX1jb252ZXJ0VG9Db3JyZWN0VHlwZXMoaCl7Zm9yKGxldCB2IG9mIGgpZm9yKGxldCB5IGluIHYpe2xldCBDPXRoaXMu''@;'; put 'put ''Y29scy5maW5kKEk9PkkuTkFNRT09PXkpO0MmJiIiIT09dlt5XSYmIm51bSI9PT1DLlRZUEUmJiFDLkREVFlQRS5pbmNsdWRlcygiVElNRSIpJiYhQy5ERFRZUEUuaW5jbHVkZXMoIkRBVEUiKSYmKHZbeV09cGFyc2VJbnQodlt5XSkpfX1jYW5jZWxFZGl0KCl7dGhpcy50b2dnbGVIb3RQbHVn''@;'; put 'put ''aW4oImNvbnRleHRNZW51IiwhMSksdGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZT1bXTtjb25zdCBoPXRoaXMuaG90SW5zdGFuY2U7bGV0IHY9aC5nZXRQbHVnaW4oIm11bHRpQ29sdW1uU29ydGluZyIpLHk9di5nZXRTb3J0Q29uZmlnKCksQz1BcnJheS5pc0FycmF5KHkpP3k6W3ldO3RoaXMu''@;'; put 'put ''ZGF0YVNvdXJjZVVuY2hhbmdlZCYmKHRoaXMuZGF0YVNvdXJjZT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZGF0YVNvdXJjZVVuY2hhbmdlZCkpLHRoaXMuaG90VGFibGUuZGF0YT10aGlzLmRhdGFTb3VyY2UsdGhpcy5ob3RUYWJsZS5yZWFkT25seT0hMCxoLnVwZGF0ZVNl''@;'; put 'put ''dHRpbmdzKHtyZWFkT25seTp0aGlzLmhvdFRhYmxlLnJlYWRPbmx5LGRhdGE6dGhpcy5kYXRhU291cmNlfSwhMSksaC52YWxpZGF0ZVJvd3ModGhpcy5tb2RpZmVkUm93c0luZGV4ZXMpO2ZvcihsZXQgSSBvZiBDKXYuc29ydChJKTt0aGlzLmNoZWNrUm93TGltaXQoKX1ob3RDbGlja2VkKCl7''@;'; put 'put ''MT09PXRoaXMudGltZXNDbGlja2VkJiZ0aGlzLmhvdFRhYmxlLnJlYWRPbmx5JiZ0aGlzLmVkaXRUYWJsZSgpLDA9PT10aGlzLnRpbWVzQ2xpY2tlZCYmKHRoaXMudGltZXNDbGlja2VkKyssc2V0VGltZW91dCgoKT0+e3RoaXMudGltZXNDbGlja2VkPTB9LDIwMCkpfWNsZWFuRXhjZWVkKCl7''@;'; put 'put ''dGhpcy5leGNlZWRDZWxscz1bXX1hcHByb3ZlcnNUb2dnbGUoKXt0aGlzLnNob3dBcHByb3ZlcnM9IXRoaXMuc2hvd0FwcHJvdmVyc31hZGRSb3coKXt0aGlzLmFkZGluZ05ld1Jvdz0hMCxzZXRUaW1lb3V0KCgpPT57Y29uc3QgaD10aGlzLmhvdEluc3RhbmNlO2xldCB2PXRoaXMuZGF0YVNv''@;'; put 'put ''dXJjZS5sZW5ndGg7aC5hbHRlcigiaW5zZXJ0X3JvdyIsdiwxKSxoLnVwZGF0ZVNldHRpbmdzKHtkYXRhOnRoaXMuZGF0YVNvdXJjZX0sITEpLGguc2VsZWN0Q2VsbCh0aGlzLmRhdGFTb3VyY2UubGVuZ3RoLTEsMCksaC5yZW5kZXIoKSx0aGlzLmRhdGFTb3VyY2Vbdl0mJih0aGlzLmRhdGFT''@;'; put 'put ''b3VyY2Vbdl0ubm9MaW5rT3B0aW9uPSEwKSx0aGlzLmFkZGluZ05ld1Jvdz0hMSx0aGlzLnJlU2V0Q2VsbFZhbGlkYXRpb25WYWx1ZXMoKX0pfWNhbmNlbFN1Ym1pdCgpe3RoaXMuZGF0YVNvdXJjZT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZGF0YVNvdXJjZUJlZm9yZVN1''@;'; put 'put ''Ym1pdCksdGhpcy5kYXRhU291cmNlQmVmb3JlU3VibWl0PVtdLHRoaXMuaG90VGFibGUuZGF0YT10aGlzLmRhdGFTb3VyY2U7Y29uc3QgaD10aGlzLmhvdEluc3RhbmNlO2gudXBkYXRlU2V0dGluZ3Moe2RhdGE6dGhpcy5kYXRhU291cmNlLGNvbEhlYWRlcnM6dGhpcy5oZWFkZXJDb2x1bW5z''@;'; put 'put ''LGNvbHVtbnM6dGhpcy5jZWxsVmFsaWRhdGlvbixtb2RpZnlDb2xXaWR0aDpmdW5jdGlvbih2LHkpe3JldHVybiAwPT09eT82MDp2PjUwMD81MDA6dn19LCExKSxoLnNlbGVjdENlbGwoMCwwKSxoLnJlbmRlcigpLGgudmFsaWRhdGVSb3dzKHRoaXMubW9kaWZlZFJvd3NJbmRleGVzKSx0aGlz''@;'; put 'put ''LnJlU2V0Q2VsbFZhbGlkYXRpb25WYWx1ZXMoKX1nZXRSb3dzU3VibWl0dGluZ0NvdW50KCl7dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCkuZGVidWcmJih0aGlzLmxvZ2dlclNlcnZpY2UubG9nKHRoaXMuZGF0YVNvdXJjZSksdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZyh0aGlzLmRh''@;'; put 'put ''dGFTb3VyY2VVbmNoYW5nZWQpKTtsZXQgaD0wLHY9MCx5PTA7dGhpcy5tb2RpZmVkUm93c0luZGV4ZXM9W10sdGhpcy5kYXRhTW9kaWZpZWQ9W107Zm9yKGxldCBDPTA7Qzx0aGlzLmRhdGFTb3VyY2UubGVuZ3RoO0MrKyl7bGV0IEk9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh0aGlz''@;'; put 'put ''LmRhdGFTb3VyY2VbQ10pO2lmKCJZZXMiPT09SS5fX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18pdGhpcy5kYXRhTW9kaWZpZWQucHVzaChJKSx2Kys7ZWxzZXtsZXQgWj10aGlzLmRhdGFTb3VyY2VVbmNoYW5nZWQuZmluZCh1ZT0+e2ZvcihsZXQgX2Ugb2YgdGhpcy5oZWFkZXJQa3Mp''@;'; put 'put ''aWYodWVbX2VdIT09SVtfZV0pcmV0dXJuITE7cmV0dXJuITB9KTtaP0pTT04uc3RyaW5naWZ5KEkpIT09SlNPTi5zdHJpbmdpZnkoWikmJih0aGlzLmRhdGFNb2RpZmllZC5wdXNoKEkpLHRoaXMubW9kaWZlZFJvd3NJbmRleGVzLnB1c2goQyksaCsrKToodGhpcy5kYXRhTW9kaWZpZWQucHVz''@;'; put 'put ''aChJKSx0aGlzLm1vZGlmZWRSb3dzSW5kZXhlcy5wdXNoKEMpLHkrKyl9fXRoaXMucm93c0NoYW5nZWQ9e3Jvd3NVcGRhdGVkOmgscm93c0RlbGV0ZWQ6dixyb3dzQWRkZWQ6eX19dmFsaWRhdGVQcmltYXJ5S2V5cygpe2NvbnN0IGg9dGhpcy5ob3RJbnN0YW5jZTtsZXQgdj1oLmdldERhdGEo''@;'; put 'put ''KTt0aGlzLnBrRmllbGRzPVtdO2ZvcihsZXQgWj0wO1o8di5sZW5ndGg7WisrKXtsZXQgdWU9IiI7Zm9yKGxldCBfZT0xO19lPHRoaXMucmVhZE9ubHlGaWVsZHMrMTtfZSsrKXVlPXVlKyJ8Iit2W1pdW19lXTt0aGlzLnBrRmllbGRzLnB1c2godWUpfWxldCBJLHk9W10sQz10aGlzLmRhdGFT''@;'; put 'put ''b3VyY2UubGVuZ3RoO2ZvcihsZXQgWj0wO1o8dGhpcy5wa0ZpZWxkcy5sZW5ndGg7WisrKWZvcihsZXQgdWU9MDt1ZTx0aGlzLnBrRmllbGRzLmxlbmd0aDt1ZSsrKXRoaXMucGtGaWVsZHNbWl09PT10aGlzLnBrRmllbGRzW3VlXSYmdWUhPT1aJiZ5LnB1c2godWUpO2lmKHRoaXMucGtGaWVs''@;'; put 'put ''ZHMubGVuZ3RoPkMpZm9yKGxldCBaPUM7Wjx0aGlzLnBrRmllbGRzLmxlbmd0aDtaKyspZm9yKGxldCB1ZT1DO3VlPHRoaXMucGtGaWVsZHMubGVuZ3RoO3VlKyspWjx1ZSYmdGhpcy5wa0ZpZWxkc1taXT09PXRoaXMucGtGaWVsZHNbdWVdJiZ5LnB1c2godWUpO2ZvcihsZXQgWj0wO1o8eS5s''@;'; put 'put ''ZW5ndGg7WisrKWZvcihsZXQgdWU9MTt1ZTx0aGlzLnJlYWRPbmx5RmllbGRzKzE7dWUrKylJPWguZ2V0Q2VsbE1ldGEoeVtaXSx1ZSksSS52YWxpZD0hMSxJLmR1cEtleT0hMCxoLnJlbmRlcigpO3RoaXMuZHVwbGljYXRlUGtJbmRleGVzPVsuLi5uZXcgU2V0KHkuc29ydCgpKV19cmVTZXRD''@;'; put 'put ''ZWxsVmFsaWRhdGlvblZhbHVlcyhoPSExLHYpe2NvbnN0IHk9dGhpcy5ob3RJbnN0YW5jZTtmb3IobGV0IEMgb2YgdGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZSl7Y29uc3QgST1DLnZhbHVlcy5tYXAoWj0+Wlt0aGlzLmNlbGxWYWxpZGF0aW9uRmllbGRzLlJBV19WQUxVRV0pO3kuYmF0Y2go''@;'; put 'put ''KCk9Pnt2YXIgWix1ZSxfZSxCZTtjb25zdCBOZT15LmdldENlbGxNZXRhKEMucm93LEMuY29sKSxLZT1udWxsPT09KFo9dGhpcy5kY1ZhbGlkYXRvcil8fHZvaWQgMD09PVo/dm9pZCAwOlouZ2V0UnVsZShOZS5kYXRhfHwiIik7bGV0IHB0O0tlJiYocHQ9bnVsbD09PSh1ZT10aGlzLmRjVmFs''@;'; put 'put ''aWRhdG9yKXx8dm9pZCAwPT09dWU/dm9pZCAwOnVlLmdldERxRHJvcGRvd25Tb3VyY2UoS2UpKSxwdHx8KHB0PVtdKTtjb25zdCBPdD1bLi4ubmV3IFNldChbLi4ucHQsLi4uSV0pXTtudWxsPT09KF9lPXRoaXMuY3VycmVudEVkaXRSZWNvcmRWYWxpZGF0b3IpfHx2b2lkIDA9PT1fZXx8X2Uu''@;'; put 'put ''dXBkYXRlUnVsZShDLmNvbCx7c291cmNlOk90fSkseS5zZXRDZWxsTWV0YShDLnJvdyxDLmNvbCwic291cmNlIixPdCksQy52YWx1ZXMubGVuZ3RoPjAmJih5LnNldENlbGxNZXRhKEMucm93LEMuY29sLCJyZW5kZXJlciIsImF1dG9jb21wbGV0ZSIpLHkuc2V0Q2VsbE1ldGEoQy5yb3csQy5j''@;'; put 'put ''b2wsImVkaXRvciIsImF1dG9jb21wbGV0ZSIpLHkuc2V0Q2VsbE1ldGEoQy5yb3csQy5jb2wsInN0cmljdCIsQy5zdHJpY3QpLHkuc2V0Q2VsbE1ldGEoQy5yb3csQy5jb2wsImZpbHRlciIsITEpLG51bGw9PT0oQmU9dGhpcy5jdXJyZW50RWRpdFJlY29yZFZhbGlkYXRvcil8fHZvaWQgMD09''@;'; put 'put ''PUJlfHxCZS51cGRhdGVSdWxlKEMuY29sLHtyZW5kZXJlcjoiYXV0b2NvbXBsZXRlIixlZGl0b3I6ImF1dG9jb21wbGV0ZSIsc3RyaWN0OkMuc3RyaWN0LGZpbHRlcjohMX0pKSx0aGlzLnJlU2V0RXh0ZW5kZWRDZWxsVmFsaWRhdGlvblZhbHVlcyhDLHZvaWQgMCxoLHYpLHkucmVuZGVyKCl9''@;'; put 'put ''KX19cmVTZXRFeHRlbmRlZENlbGxWYWxpZGF0aW9uVmFsdWVzKGgsdix5PSExLEMpe2lmKGgpe3Z8fCh2PWgucm93KTtjb25zdCBaPXRoaXMuZ2V0RXh0ZW5kZWRWYWx1ZXNCeUNlbGxWYWx1ZShoKTt0aGlzLnNldEV4dGVuZGVkVmFsdWVzVG9DZWxscyhoLHYsWix5LEMpfWVsc2UgZm9yKGxl''@;'; put 'put ''dCBaIG9mIHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2Upe2NvbnN0IHVlPXRoaXMuZ2V0RXh0ZW5kZWRWYWx1ZXNCeUNlbGxWYWx1ZShaKTt0aGlzLnNldEV4dGVuZGVkVmFsdWVzVG9DZWxscyhaLFoucm93LHVlLHksQyl9fXNldEV4dGVuZGVkVmFsdWVzVG9DZWxscyhoLHYseSxDPSExLEkp''@;'; put 'put ''e3ZhciBaLHVlLF9lLEJlO2NvbnN0IE5lPXRoaXMuaG90SW5zdGFuY2U7bGV0IEtlPVtdO2ZvcihsZXQgcHQgb2YgeSlLZS5pbmRleE9mKHB0LkVYVFJBX0NPTF9OQU1FKTwwJiZLZS5wdXNoKHB0LkVYVFJBX0NPTF9OQU1FKTtmb3IobGV0IHB0IG9mIEtlKXtjb25zdCBPdD15LmZpbHRlcihR''@;'; put 'put ''cj0+UXIuRVhUUkFfQ09MX05BTUU9PT1wdCk7bGV0ICR0PU90Lm1hcChRcj0+IkMiPT09UXIuRElTUExBWV9UWVBFP1FyLlJBV19WQUxVRV9DSEFSOlFyLlJBV19WQUxVRV9OVU0pO2NvbnN0IGZuPU5lLnByb3BUb0NvbChwdCk7dGhpcy5kaXNhYmxlZEJhc2ljRHluYW1pY0NlbGxWYWxpZGF0''@;'; put 'put ''aW9uTWFwLmZpbmQoUXI9PlFyLnJvdz09PXYmJlFyLmNvbD09PWZuKXx8dGhpcy5kaXNhYmxlZEJhc2ljRHluYW1pY0NlbGxWYWxpZGF0aW9uTWFwLnB1c2goe3Jvdzp2LGNvbDpmbixhY3RpdmU6ITF9KSxOZS5zZXRDZWxsTWV0YSh2LGZuLCJyZW5kZXJlciIsImF1dG9jb21wbGV0ZSIpLE5l''@;'; put 'put ''LnNldENlbGxNZXRhKHYsZm4sImVkaXRvciIsImF1dG9jb21wbGV0ZSIpLE5lLnNldENlbGxNZXRhKHYsZm4sInN0cmljdCIsaC5zdHJpY3QpLE5lLnNldENlbGxNZXRhKHYsZm4sImZpbHRlciIsITEpLG51bGw9PT0oWj10aGlzLmN1cnJlbnRFZGl0UmVjb3JkVmFsaWRhdG9yKXx8dm9pZCAw''@;'; put 'put ''PT09Wnx8Wi51cGRhdGVSdWxlKGZuLHtyZW5kZXJlcjoiYXV0b2NvbXBsZXRlIixlZGl0b3I6ImF1dG9jb21wbGV0ZSIsc3RyaWN0Omguc3RyaWN0LGZpbHRlcjohMX0pO2NvbnN0IGlyPU5lLmdldENlbGxNZXRhKHYsZm4pLG1yPW51bGw9PT0odWU9dGhpcy5kY1ZhbGlkYXRvcil8fHZvaWQg''@;'; put 'put ''MD09PXVlP3ZvaWQgMDp1ZS5nZXRSdWxlKGlyLmRhdGF8fCIiKTtsZXQgU3I7bXImJihTcj1udWxsPT09KF9lPXRoaXMuZGNWYWxpZGF0b3IpfHx2b2lkIDA9PT1fZT92b2lkIDA6X2UuZ2V0RHFEcm9wZG93blNvdXJjZShtcikpLFNyfHwoU3I9W10pLCJudW1lcmljIj09PShudWxsPT1tcj92''@;'; put 'put ''b2lkIDA6bXIudHlwZSk/KFNyPXRoaXMuaGVscGVyU2VydmljZS5jb252ZXJ0QXJyYXlWYWx1ZXMoU3IsIm51bWJlciIpLCR0PXRoaXMuaGVscGVyU2VydmljZS5jb252ZXJ0QXJyYXlWYWx1ZXMoJHQsIm51bWJlciIpKTooU3I9dGhpcy5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVl''@;'; put 'put ''cyhTciwic3RyaW5nIiksJHQ9dGhpcy5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVlcygkdCwic3RyaW5nIikpO2NvbnN0IHdyPVsuLi5uZXcgU2V0KFsuLi5TciwuLi4kdF0pXTtpZihOZS5zZXRDZWxsTWV0YSh2LGZuLCJzb3VyY2UiLHdyKSxudWxsPT09KEJlPXRoaXMuY3VycmVu''@;'; put 'put ''dEVkaXRSZWNvcmRWYWxpZGF0b3IpfHx2b2lkIDA9PT1CZXx8QmUudXBkYXRlUnVsZShmbix7c291cmNlOndyfSksQyl7aWYoSSYmSSE9PXYpcmV0dXJuO2NvbnN0IFFyPU90LmZpbmQoeWk9PjE9PT15aS5GT1JDRV9GTEFHKTtRciYmc2V0VGltZW91dCgoKT0+e05lLnNldERhdGFBdENlbGwo''@;'; put 'put ''dixmbiwiQyI9PT1Rci5ESVNQTEFZX1RZUEU/UXIuUkFXX1ZBTFVFX0NIQVI6UXIuUkFXX1ZBTFVFX05VTSwiZm9yY2VfY2VsbF92YWxpZGF0aW9uX3ZhbHVlIiksdGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4PT09diYmKHRoaXMuZGF0YVNvdXJjZVt0aGlzLmN1cnJlbnRFZGl0UmVjb3Jk''@;'; put 'put ''SW5kZXhdW3B0XT0iQyI9PT1Rci5ESVNQTEFZX1RZUEU/UXIuUkFXX1ZBTFVFX0NIQVI6UXIuUkFXX1ZBTFVFX05VTSl9KX19fWdldEV4dGVuZGVkVmFsdWVzQnlDZWxsVmFsdWUoaCx2KXt2YXIgeTtjb25zdCBJPXRoaXMuaG90SW5zdGFuY2UuZ2V0RGF0YUF0Q2VsbCh2fHxoLnJvdyxoLmNv''@;'; put 'put ''bCksWj0oaC52YWx1ZXMuZmluZChOZT0+TmVbdGhpcy5jZWxsVmFsaWRhdGlvbkZpZWxkcy5SQVdfVkFMVUVdPT09SSl8fFtdKVt0aGlzLmNlbGxWYWxpZGF0aW9uRmllbGRzLkRJU1BMQVlfSU5ERVhdLHVlPW51bGw9PT0oeT1oLmV4dGVuZGVkX3ZhbHVlcyl8fHZvaWQgMD09PXk/dm9pZCAw''@;'; put 'put ''OnkuZmlsdGVyKE5lPT5OZVswXT09PVopLF9lPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5leHRlbmRlZENlbGxWYWxpZGF0aW9uRmllbGRzKSxCZT1bXTtmb3IobGV0IE5lIG9mIHVlfHxbXSl7bGV0IEtlPXt9O2ZvcihsZXQgcHQgb2YgT2JqZWN0LmtleXMoX2UpKUtlW3B0''@;'; put 'put ''XT1OZVtfZVtwdF1dO0JlLnB1c2goS2UpfXJldHVybiBCZX1jaGVja1NhdmUoKXtpZih0aGlzLmdldFJvd3NTdWJtaXR0aW5nQ291bnQoKSwwPT09dGhpcy5yb3dzQ2hhbmdlZC5yb3dzQWRkZWQmJjA9PT10aGlzLnJvd3NDaGFuZ2VkLnJvd3NVcGRhdGVkJiYwPT09dGhpcy5yb3dzQ2hhbmdl''@;'; put 'put ''ZC5yb3dzRGVsZXRlZClyZXR1cm4gdGhpcy5iYWRFZGl0VGl0bGU9Ik5vIGNoYW5nZXMgdG8gc3VibWl0Iix0aGlzLmJhZEVkaXRDYXVzZT0iUGxlYXNlIG1vZGlmeSBzb21lIHZhbHVlcyBhbmQgdHJ5IGFnYWluLiIsdm9pZCh0aGlzLmJhZEVkaXQ9ITApO2NvbnN0IGg9dGhpcy5ob3RJbnN0''@;'; put 'put ''YW5jZTt0aGlzLmRhdGFTb3VyY2VCZWZvcmVTdWJtaXQ9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLmRhdGFTb3VyY2UpO2ZvcihsZXQgeT0wO3k8dGhpcy5kYXRhU291cmNlLmxlbmd0aDt5KyspZGVsZXRlIHRoaXMuZGF0YVNvdXJjZVt5XS5ub0xpbmtPcHRpb247aC51cGRh''@;'; put 'put ''dGVTZXR0aW5ncyh7ZGF0YTp0aGlzLmRhdGFTb3VyY2UsY29sSGVhZGVyczp0aGlzLmhlYWRlckNvbHVtbnMsY29sdW1uczp0aGlzLmNlbGxWYWxpZGF0aW9uLG1vZGlmeUNvbFdpZHRoOmZ1bmN0aW9uKHksQyl7cmV0dXJuIHk+NTAwPzUwMDp5fX0sITEpLHRoaXMucmVTZXRDZWxsVmFsaWRh''@;'; put 'put ''dGlvblZhbHVlcygpLGQuY250PTAsZC5ub25Qa0NudD0wO2xldCB2PWguZ2V0RGF0YSgpO2lmKHYubGVuZ3RoPjEmJmguaXNFbXB0eVJvdyh2Lmxlbmd0aC0xKSYmaC5hbHRlcigicmVtb3ZlX3JvdyIsdi5sZW5ndGgtMSksdGhpcy52YWxpZGF0ZVByaW1hcnlLZXlzKCksMCE9PXRoaXMuZHVw''@;'; put 'put ''bGljYXRlUGtJbmRleGVzLmxlbmd0aClyZXR1cm4gdGhpcy5wa0R1cHM9ITAsdGhpcy5zdWJtaXQ9ITEsdm9pZCB0aGlzLmNhbmNlbFN1Ym1pdCgpO3RoaXMucGtEdXBzPSExLGgudmFsaWRhdGVSb3dzKHRoaXMubW9kaWZlZFJvd3NJbmRleGVzLCgpPT57dGhpcy5jaGVja0ludmFsaWQoKT90''@;'; put 'put ''aGlzLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFsKCJWYWxpZGF0aW9uIGVycm9yIiwiSW52YWxpZCBWYWx1ZXMgYXJlIFByZXNlbnQiKToodGhpcy5zdWJtaXQ9ITAsdGhpcy52YWxpZGF0aW9uRG9uZT0xLHNldFRpbWVvdXQoKCk9Pntkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9ybUZp''@;'; put 'put ''ZWxkc184IikuZm9jdXMoKX0pKX0pfXNhdmVUYWJsZShoKXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2lmKHRoaXMuaG90SW5zdGFuY2UuZ2V0RGF0YSgpLGg9KGg9aC5maWx0ZXIoQz0+ISF0aGlzLmRhdGFNb2RpZmllZC5maW5kKFo9Pntmb3IobGV0IHVlIG9m''@;'; put 'put ''IHRoaXMuaGVhZGVyUGtzKWlmKFpbdWVdIT09Q1t1ZV0pcmV0dXJuITE7cmV0dXJuITB9KSkpLm1hcChDPT57bGV0IEk9Qy5fX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX187cmV0dXJuIGRlbGV0ZSBDLl9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fXyxDLl9fX19fREVMRVRFX19U''@;'; put 'put ''SElTX19SRUNPUkRfX19fXz1JLE9iamVjdC5rZXlzKEMpLm1hcChaPT57dmFyIHVlO2NvbnN0IF9lPW51bGw9PT0odWU9dGhpcy5kY1ZhbGlkYXRvcil8fHZvaWQgMD09PXVlP3ZvaWQgMDp1ZS5nZXRSdWxlKFopOyJudW1lcmljIj09PShudWxsPT1fZT92b2lkIDA6X2UudHlwZSkmJiIuIj09''@;'; put 'put ''PUNbWl0mJihDW1pdPW51bGwpfSksQ30pLHRoaXMubG9nZ2VyU2VydmljZS5sb2coIkRhdGEgc3VibWl0dGVkIixoKSx0aGlzLmNoZWNrSW52YWxpZCgpKXJldHVybiB0aGlzLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFsKCJWYWxpZGF0aW9uIGVycm9yIiwiSW52YWxpZCBWYWx1ZXMgYXJl''@;'; put 'put ''IFByZXNlbnQiKSx0aGlzLmNhbmNlbFN1Ym1pdCgpLHZvaWQodGhpcy5zdWJtaXQ9ITEpO2lmKHRoaXMudmFsaWRhdGlvbkRvbmU9MCx0aGlzLnNhdmVMb2FkaW5nPSEwLGQuY250PDEmJjA9PT10aGlzLmR1cGxpY2F0ZVBrSW5kZXhlcy5sZW5ndGgmJmQubm9uUGtDbnQ8MSl7dGhpcy5zYXZl''@;'; put 'put ''TG9hZGluZz0hMCx0aGlzLmRpc2FibGVTdWJtaXQ9ITEsdGhpcy5zdWJtaXQ9ITA7bGV0IEM9e0FDVElPTjoiTE9BRCJ9O2lmKHRoaXMubWVzc2FnZT10aGlzLm1lc3NhZ2UucmVwbGFjZSgvXG4vZywiLiAiKSxDLk1FU1NBR0U9dGhpcy5tZXNzYWdlLEMuTElCRFM9dGhpcy5saWJkcyx0aGlz''@;'; put 'put ''LmNvbHMmJih5aWVsZCB0aGlzLnNhc1N0b3JlU2VydmljZS51cGRhdGVUYWJsZShDLGgsIlNBU0NvbnRyb2xUYWJsZSIsImVkaXRvcnMvc3RhZ2VkYXRhIix0aGlzLiRkYXRhRm9ybWF0cykudGhlbihaPT57aWYodm9pZCAwIT09Wi5zYXNwYXJhbXMpcmV0dXJuIHRoaXMucm91dGVyLm5hdmln''@;'; put 'put ''YXRlQnlVcmwoIi9zdGFnZS8iK1ouc2FzcGFyYW1zWzBdLkRTSUQpLCEwfSkuY2F0Y2goWj0+KGNvbnNvbGUubG9nKCJlcnIiLFopLGQuY250PTAsZC5ub25Qa0NudD0wLHRoaXMuZGlzYWJsZVN1Ym1pdD0hMCx0aGlzLnN1Ym1pdD0hMSwhMSkpKSlyZXR1cm59ZC5jbnQ+PTE/KHRoaXMucGtO''@;'; put 'put ''dWxsPSEwLHRoaXMuc3VibWl0PSEwKTp0aGlzLnN1Ym1pdD0hMSxkLm5vblBrQ250Pj0xPyh0aGlzLm5vUGtOdWxsPSEwLHRoaXMuc3VibWl0PSEwKTp0aGlzLnN1Ym1pdD0hMSx0aGlzLmNhbmNlbFN1Ym1pdCgpLGQuY250PTAsZC5ub25Qa0NudD0wLHRoaXMuZGlzYWJsZVN1Ym1pdD0hMH0p''@;'; put 'put ''fXZhbGlkYXRvclJ1bGVTb3VyY2UoaCl7dmFyIHY7cmV0dXJuIG51bGw9PT0odj10aGlzLmRjVmFsaWRhdG9yKXx8dm9pZCAwPT09dj92b2lkIDA6di5nZXRSdWxlKGgpfWNoZWNrSW52YWxpZCgpe3JldHVybiB0aGlzLmhvdEluc3RhbmNlQ29tcExpc3QuZmlyc3QuY29udGFpbmVyLm5hdGl2''@;'; put 'put ''ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmh0SW52YWxpZCIpLmxlbmd0aD4wfWdvVG9FZGl0b3IoKXt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvIil9Y2xvc2VSZWNvcmRFZGl0KGgpe3RoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleD0tMSx0aGlzLmN1cnJlbnRFZGl0UmVjb3Jk''@;'; put 'put ''PXZvaWQgMCx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkVmFsaWRhdG9yPXZvaWQgMCwiQUREIj09PXRoaXMucmVjb3JkQWN0aW9uJiYhaCYmKHRoaXMuZGF0YVNvdXJjZT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMucHJldkRhdGFTb3VyY2UpLHRoaXMuaG90SW5zdGFuY2UudXBk''@;'; put 'put ''YXRlU2V0dGluZ3Moe2RhdGE6dGhpcy5kYXRhU291cmNlfSwhMSkpfWNvbmZpcm1SZWNvcmRFZGl0KGg9ITApe2NvbnN0IHY9dGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4O2gmJih0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXg9LTEpLHRoaXMuY29sdW1uSGVhZGVyLm1hcChDPT57dmFy''@;'; put 'put ''IEksWjtjb25zdCB1ZT10aGlzLmN1cnJlbnRFZGl0UmVjb3JkW0NdLF9lPSJudW0iPT09KG51bGw9PT0oWj1udWxsPT09KEk9dGhpcy4kZGF0YUZvcm1hdHMpfHx2b2lkIDA9PT1JP3ZvaWQgMDpJLnZhcnNbQ10pfHx2b2lkIDA9PT1aP3ZvaWQgMDpaLnR5cGUpLEJlPSgwLGJ3LmlzU3BlY2lh''@;'; put 'put ''bE1pc3NpbmcpKHVlKTtfZSYmIWlzTmFOKHVlKSYmIUJlJiYodGhpcy5jdXJyZW50RWRpdFJlY29yZFtDXT0xKnVlKX0pLHRoaXMuZGF0YVNvdXJjZVt2XT10aGlzLmN1cnJlbnRFZGl0UmVjb3JkLHRoaXMuaG90VGFibGUuZGF0YVt2XT10aGlzLmN1cnJlbnRFZGl0UmVjb3JkLHRoaXMuaG90''@;'; put 'put ''SW5zdGFuY2UudXBkYXRlU2V0dGluZ3Moe2RhdGE6dGhpcy5kYXRhU291cmNlfSwhMSksaCYmKHRoaXMuY3VycmVudEVkaXRSZWNvcmQ9dm9pZCAwKX1vbk5leHRSZWNvcmQoKXt0aGlzLmNvbmZpcm1SZWNvcmRFZGl0KCExKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXg9dGhpcy5jdXJy''@;'; put 'put ''ZW50RWRpdFJlY29yZEluZGV4Pj10aGlzLmRhdGFTb3VyY2UubGVuZ3RoLTE/MDp0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXgrMSx0aGlzLmVkaXRSZWNvcmQobnVsbCx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXgpfW9uUHJldmlvdXNSZWNvcmQoKXt0aGlzLmNvbmZpcm1SZWNvcmRF''@;'; put 'put ''ZGl0KCExKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXg9dGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4PD0wP3RoaXMuZGF0YVNvdXJjZS5sZW5ndGgtMTp0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXgtMSx0aGlzLmVkaXRSZWNvcmQobnVsbCx0aGlzLmN1cnJlbnRFZGl0UmVjb3Jk''@;'; put 'put ''SW5kZXgpfWFkZFJlY29yZEJ1dHRvbkNsaWNrKCl7dGhpcy5yZXN0cmljdGlvbnMucmVzdHJpY3RBZGRSZWNvcmQ/dGhpcy5ldmVudFNlcnZpY2Uuc2hvd0RlbW9MaW1pdE1vZGFsKCk6dGhpcy5hZGRFZGl0TmV3UmVjb3JkKCl9YWRkRWRpdE5ld1JlY29yZCgpe3RoaXMuYWRkUmVjb3JkKCks''@;'; put 'put ''c2V0VGltZW91dCgoKT0+e3RoaXMuZWRpdFJlY29yZChudWxsLHRoaXMuZGF0YVNvdXJjZS5sZW5ndGgtMSwhMCl9LDFlMyl9YWRkUmVjb3JkKCl7dGhpcy5hZGRSb3coKX1lZGl0UmVjb3JkKGgsdix5KXt2YXIgQyxJO2lmKCEodm9pZCAwPT09dnx8djwwfHx0aGlzLnJlc3RyaWN0aW9ucy5y''@;'; put 'put ''ZXN0cmljdEVkaXRSZWNvcmQpKXtpZih0aGlzLnJlY29yZEFjdGlvbj15PyJBREQiOiJFRElUIix0aGlzLmhvdFRhYmxlLnJlYWRPbmx5JiZ0aGlzLmVkaXRUYWJsZSghMSx5KSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkVmFsaWRhdG9yPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhp''@;'; put 'put ''cy5kY1ZhbGlkYXRvcikseSl0aGlzLnByZXZEYXRhU291cmNlPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5kYXRhU291cmNlKSx0aGlzLnByZXZEYXRhU291cmNlLnBvcCgpO2Vsc2V7Y29uc3QgWj10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuaG90SW5zdGFu''@;'; put 'put ''Y2UuZ2V0Q2VsbE1ldGFBdFJvdyh2KSk7Zm9yKGxldCB1ZSBvZiBaKWlmKHVlKXtjb25zdCBfZT1udWxsPT09KEM9dWUucHJvcCl8fHZvaWQgMD09PUM/dm9pZCAwOkMudG9TdHJpbmcoKTtkZWxldGUgdWUucHJvcCxkZWxldGUgdWUuZGF0YSxudWxsPT09KEk9dGhpcy5jdXJyZW50RWRpdFJl''@;'; put 'put ''Y29yZFZhbGlkYXRvcil8fHZvaWQgMD09PUl8fEkudXBkYXRlUnVsZSh1ZS5jb2wsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHVlKSx7ZGF0YTpfZX0pKX19dGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4PXYsdGhpcy5jdXJyZW50RWRpdFJlY29yZD10aGlzLmhlbHBlclNlcnZp''@;'; put 'put ''Y2UuZGVlcENsb25lKHRoaXMuZGF0YVNvdXJjZVt2XSl9fXRvZ2dsZUhvdFBsdWdpbihoLHYpe2NvbnN0IHk9dGhpcy5ob3RJbnN0YW5jZTt5LmJhdGNoKCgpPT57bGV0IEM9eS5nZXRQbHVnaW4oaCk7Qz8oc2V0VGltZW91dCgoKT0+e3Y/Qy5lbmFibGVQbHVnaW4oKTpDLmRpc2FibGVQbHVn''@;'; put 'put ''aW4oKX0sMTAwKSx5LnJlbmRlcigpKTpjb25zb2xlLndhcm4oIlRvZ2dsZSBIb3QgUGx1Z2luIGZhaWxlZCAtIFBsdWdpbiBuYW1lZDogIitoKyIgLSBjb3VsZCBub3QgYmUgZm91bmQuIil9KX1keW5hbWljQ2VsbFZhbGlkYXRpb25EaXNhYmxlZChoLHYpe3JldHVybiEhdGhpcy5kaXNhYmxl''@;'; put 'put ''ZEJhc2ljRHluYW1pY0NlbGxWYWxpZGF0aW9uTWFwLmZpbmQoQz0+Qy5yb3c9PT1oJiZDLmNvbD09PXYmJiFDLmFjdGl2ZSl9ZHluYW1pY0NlbGxWYWxpZGF0aW9uKGgsdil7dmFyIHk7aWYodGhpcy5keW5hbWljQ2VsbFZhbGlkYXRpb25EaXNhYmxlZChoLHYpKXJldHVybjtjb25zdCBDPXRo''@;'; put 'put ''aXMuaG90SW5zdGFuY2U7aWYoQy5nZXRDZWxsTWV0YShoLHYpLnJlYWRPbmx5KXJldHVybjtjb25zdCBaPUMuZ2V0RGF0YUF0Q2VsbChoLHYpLHVlPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5kYXRhU291cmNlW2hdKSxfZT1PYmplY3Qua2V5cyh1ZSlbdl0sQmU9dGhpcy5o''@;'; put 'put ''ZWxwZXJTZXJ2aWNlLmRlbGV0ZUtleXNBbmRIYXNoKHVlLFtfZSwibm9MaW5rT3B0aW9uIl0sITEpLE5lPXRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2UuZmluZEluZGV4KEtlPT5LZS5oYXNoPT09QmUpO2lmKE5lPi0xKXtsZXQgS2U9dGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZVtOZV0udmFs''@;'; put 'put ''dWVzLm1hcCgkdD0+JHRbdGhpcy5jZWxsVmFsaWRhdGlvbkZpZWxkcy5SQVdfVkFMVUVdKTtjb25zdCBwdD0oQy5nZXRDZWxsTWV0YShoLHYpLnNvdXJjZXx8W10pLmxlbmd0aDwxLE90PSIgIiE9PVo7Qy5iYXRjaCgoKT0+e3ZhciAkdCxmbixMbixpcjtjb25zdCBtcj1DLmdldENlbGxNZXRh''@;'; put 'put ''KGgsdiksU3I9bnVsbD09PSgkdD10aGlzLmRjVmFsaWRhdG9yKXx8dm9pZCAwPT09JHQ/dm9pZCAwOiR0LmdldFJ1bGUobXIuZGF0YXx8IiIpO2xldCB3cjtTciYmKHdyPW51bGw9PT0oZm49dGhpcy5kY1ZhbGlkYXRvcil8fHZvaWQgMD09PWZuP3ZvaWQgMDpmbi5nZXREcURyb3Bkb3duU291''@;'; put 'put ''cmNlKFNyKSksd3J8fCh3cj1bXSksIm51bWVyaWMiPT09KG51bGw9PVNyP3ZvaWQgMDpTci50eXBlKT8od3I9dGhpcy5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVlcyh3ciwibnVtYmVyIiksS2U9dGhpcy5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVlcyhLZSwibnVtYmVy''@;'; put 'put ''IikpOih3cj10aGlzLmhlbHBlclNlcnZpY2UuY29udmVydEFycmF5VmFsdWVzKHdyLCJzdHJpbmciKSxLZT10aGlzLmhlbHBlclNlcnZpY2UuY29udmVydEFycmF5VmFsdWVzKEtlLCJzdHJpbmciKSk7Y29uc3QgUXI9Wy4uLm5ldyBTZXQoWy4uLndyLC4uLktlXSldO2lmKEMuc2V0Q2VsbE1l''@;'; put 'put ''dGEoaCx2LCJzb3VyY2UiLFFyKSxudWxsPT09KExuPXRoaXMuY3VycmVudEVkaXRSZWNvcmRWYWxpZGF0b3IpfHx2b2lkIDA9PT1Mbnx8TG4udXBkYXRlUnVsZSh2LHtzb3VyY2U6UXJ9KSx0aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlW05lXS52YWx1ZXMubGVuZ3RoPjApe2NvbnN0IHlpPXRo''@;'; put 'put ''aXMuY2VsbFZhbGlkYXRpb25Tb3VyY2VbTmVdLnN0cmljdDtDLnNldENlbGxNZXRhKGgsdiwicmVuZGVyZXIiLCJhdXRvY29tcGxldGUiKSxDLnNldENlbGxNZXRhKGgsdiwiZWRpdG9yIiwiYXV0b2NvbXBsZXRlIiksQy5zZXRDZWxsTWV0YShoLHYsInN0cmljdCIseWkpLEMuc2V0Q2VsbE1l''@;'; put 'put ''dGEoaCx2LCJmaWx0ZXIiLCExKSxudWxsPT09KGlyPXRoaXMuY3VycmVudEVkaXRSZWNvcmRWYWxpZGF0b3IpfHx2b2lkIDA9PT1pcnx8aXIudXBkYXRlUnVsZSh2LHtyZW5kZXJlcjoiYXV0b2NvbXBsZXRlIixlZGl0b3I6ImF1dG9jb21wbGV0ZSIsc3RyaWN0OnlpLGZpbHRlcjohMX0pfXRo''@;'; put 'put ''aXMucmVTZXRFeHRlbmRlZENlbGxWYWxpZGF0aW9uVmFsdWVzKHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2VbTmVdLGgscHQmJk90KSxDLnJlbmRlcigpfSl9aWYoTmU8MCl7Y29uc3QgS2U9e1NBU0NvbnRyb2xUYWJsZTpbe2xpYmRzOnRoaXMubGliZHMsdmFyaWFibGVfbm06X2V9XSxzb3Vy''@;'; put 'put ''Y2Vfcm93Olt1ZV19LHB0PW51bGw9PT0oeT10aGlzLmRjVmFsaWRhdG9yKXx8dm9pZCAwPT09eT92b2lkIDA6eS5nZXREcURldGFpbHMoX2UpLmZpbmQoT3Q9PiJTT0ZUU0VMRUNUX0hPT0siPT09T3QuUlVMRV9UWVBFfHwiSEFSRFNFTEVDVF9IT09LIj09PU90LlJVTEVfVFlQRSk7cHQmJih0''@;'; put 'put ''aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlLnB1c2goe3JvdzpoLGNvbDp2LHN0cmljdDoiSEFSRFNFTEVDVF9IT09LIj09PXB0LlJVTEVfVFlQRSx2YWx1ZXM6W10saGFzaDpCZSxjb3VudDp0aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlLmxlbmd0aCsxfSksQy5zZXRDZWxsTWV0YShoLHYsInJl''@;'; put 'put ''bmRlcmVyIix6NXQpLHRoaXMuY3VycmVudEVkaXRSZWNvcmRMb2FkaW5ncy5wdXNoKHYpLEMucmVuZGVyKCksdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoImVkaXRvcnMvZ2V0ZHluYW1pY2NvbHZhbHMiLEtlLHZvaWQgMCx7c3VwcHJlc3NTdWNjZXNzQWJvcnRNb2RhbDohMCxzdXBwcmVzc0Vy''@;'; put 'put ''cm9yQWJvcnRNb2RhbDohMH0pLnRoZW4oT3Q9PntpZihPdC5keW5hbWljX3ZhbHVlcy5tYXAoZm49PmZuW3RoaXMuY2VsbFZhbGlkYXRpb25GaWVsZHMuUkFXX1ZBTFVFXSkubGVuZ3RoPjApe2NvbnN0IGZuPXRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2UuZmluZEluZGV4KExuPT5Mbi5oYXNo''@;'; put 'put ''PT09QmUpO2ZuPi0xJiYodGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZVtmbl09T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2VbZm5dKSx7cm93OmgsY29sOnYsdmFsdWVzOk90LmR5bmFtaWNfdmFsdWVzLGV4dGVuZGVkX3ZhbHVlczpPdC5k''@;'; put 'put ''eW5hbWljX2V4dGVuZGVkX3ZhbHVlc30pKSxDLnNldENlbGxNZXRhKGgsdiwicmVuZGVyZXIiLFRtZSksdGhpcy5jdXJyZW50RWRpdFJlY29yZExvYWRpbmdzLnNwbGljZSh0aGlzLmN1cnJlbnRFZGl0UmVjb3JkTG9hZGluZ3MuaW5kZXhPZih2KSwxKSxDLmRlc2VsZWN0Q2VsbCgpLEMucmVu''@;'; put 'put ''ZGVyKCksQy5iYXRjaCgoKT0+e3NldFRpbWVvdXQoKCk9Pnt0aGlzLnJlU2V0Q2VsbFZhbGlkYXRpb25WYWx1ZXMoITAsaCksQy5yZW5kZXIoKSxDLnZhbGlkYXRlUm93cyhbaF0pfSwxMDApfSl9aWYoQy5zZXRDZWxsTWV0YShoLHYsInJlbmRlcmVyIixUbWUpLHRoaXMuY3VycmVudEVkaXRS''@;'; put 'put ''ZWNvcmRMb2FkaW5ncy5zcGxpY2UodGhpcy5jdXJyZW50RWRpdFJlY29yZExvYWRpbmdzLmluZGV4T2YodiksMSksQy5kZXNlbGVjdENlbGwoKSxDLnJlbmRlcigpLHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2UubGVuZ3RoPnRoaXMudmFsaWRhdGlvblRhYmxlTGltaXQpe2NvbnN0IGZuPXRo''@;'; put 'put ''aXMuY2VsbFZhbGlkYXRpb25Tb3VyY2UucmVkdWNlKChpcixtcik9PmlyLmNvdW50PG1yLmNvdW50P2lyOm1yKSxMbj10aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlLmluZGV4T2YoZm4pO3RoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2Uuc3BsaWNlKExuLDEpfX0pLmNhdGNoKE90PT57Y29uc3Qg''@;'; put 'put ''JHQ9dGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZS5maW5kSW5kZXgoZm49PmZuLmhhc2g9PT1CZSk7dGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZS5zcGxpY2UoJHQsMSksQy5iYXRjaCgoKT0+e0Muc2V0Q2VsbE1ldGEoaCx2LCJyZW5kZXJlciIsWjV0KSxDLnJlbmRlcigpfSksdGhpcy5jdXJy''@;'; put 'put ''ZW50RWRpdFJlY29yZExvYWRpbmdzLnNwbGljZSh0aGlzLmN1cnJlbnRFZGl0UmVjb3JkTG9hZGluZ3MuaW5kZXhPZih2KSwxKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkRXJyb3JzLnB1c2godiksc2V0VGltZW91dCgoKT0+e0Muc2V0Q2VsbE1ldGEoaCx2LCJyZW5kZXJlciIsVG1lKSxDLnJl''@;'; put 'put ''bmRlcigpLHRoaXMuY3VycmVudEVkaXRSZWNvcmRFcnJvcnMuc3BsaWNlKHRoaXMuY3VycmVudEVkaXRSZWNvcmRFcnJvcnMuaW5kZXhPZih2KSwxKX0sM2UzKSx0aGlzLnJlU2V0Q2VsbFZhbGlkYXRpb25WYWx1ZXMoKSx0aGlzLmxvZ2dlclNlcnZpY2UubG9nKCJnZXRkeW5hbWljY29sdmFs''@;'; put 'put ''cyBlcnJvcjoiLE90KX0pKX19Y2hlY2tFbXB0eVJvd1doZW5GaWx0ZXIoKXt0aGlzLnplcm9GaWx0ZXJSb3dzPSExLHZvaWQgMCE9PXRoaXMuZmlsdGVyX3BrJiYxPT09dGhpcy5ob3RUYWJsZS5kYXRhLmxlbmd0aCYmW251bGwsIiJdLmluY2x1ZGVzKHRoaXMuaG90VGFibGUuZGF0YVswXVt0''@;'; put 'put ''aGlzLmhlYWRlclBrc1swXV0pJiYodGhpcy56ZXJvRmlsdGVyUm93cz0hMCl9b25SZWNvcmRJbnB1dEZvY3VzKGgpe3RoaXMuZHluYW1pY0NlbGxWYWxpZGF0aW9uKHRoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleCxoLmNvbE5hbWUpfWV4ZWN1dGVEeW5hbWljQ2VsbFZhbGlkYXRpb25JZkFw''@;'; put 'put ''cGxpY2FibGUoaCx2LHkpe2NvbnN0IEM9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlbGV0ZUtleXNBbmRIYXNoKHRoaXMuZGF0YVNvdXJjZVt5XSxbaCwibm9MaW5rT3B0aW9uIl0pLEk9dGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZS5maW5kKFo9PlouaGFzaD09PUMmJnY9PT1aLmNvbCk7aWYoSSYm''@;'; put 'put ''SS5leHRlbmRlZF92YWx1ZXMmJkkuZXh0ZW5kZWRfdmFsdWVzLmxlbmd0aD4wKXtjb25zdCBaPXRoaXMuZ2V0RXh0ZW5kZWRWYWx1ZXNCeUNlbGxWYWx1ZShJLHkpO3RoaXMuc2V0RXh0ZW5kZWRWYWx1ZXNUb0NlbGxzKEkseSxaLCEwKX19bmdPbkluaXQoKXtyZXR1cm4gbm8odGhpcyx2b2lk''@;'; put 'put ''IDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMuYXBwU2VydmljZS5ob3RfbGljZW5zZV9rZXkuc3Vic2NyaWJlKHY9Pnt0aGlzLmhvdFRhYmxlLmxpY2Vuc2VLZXk9dn0pLHRoaXMuX3F1ZXJ5PXRoaXMuc2FzU3RvcmVTZXJ2aWNlLnF1ZXJ5LnN1YnNjcmliZSh2PT57dGhpcy53aGVyZVN0cmlu''@;'; put 'put ''Zz12LnN0cmluZyx0aGlzLmNsYXVzZXM9di5vYmosdGhpcy5saWJkcz12LmxpYmRzfSk7bGV0IGg9e307dm9pZCAwIT09dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMubGliTWVtJiYodGhpcy5saWJkcz10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5saWJNZW0sdGhpcy5maWx0ZXJfcGs9''@;'; put 'put ''dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuZmlsdGVySWQsImVkaXQtcmVjb3JkIj09PXRoaXMucm91dGUuc25hcHNob3QudXJsWzBdLnBhdGgmJih0aGlzLnJlY29yZEFjdGlvbj12b2lkIDAhPT10aGlzLmZpbHRlcl9waz8iRURJVCI6IkFERCIpLGguTElCRFM9dGhpcy5saWJkcyx2b2lk''@;'; put 'put ''IDAhPT10aGlzLmZpbHRlcl9wayYmKGguRklMVEVSX1JLPXBhcnNlSW50KHRoaXMuZmlsdGVyX3BrKSksaC5PVVRERVNUPSJXRUIiLHRoaXMubGliZHMmJihuaS5lZGl0b3IubGlicmFyeT10aGlzLmxpYmRzLnNwbGl0KCIuIilbMF0sbmkuZWRpdG9yLnRhYmxlPXRoaXMubGliZHMuc3BsaXQo''@;'; put 'put ''Ii4iKVsxXSkpLHRoaXMubGliZHMmJih0aGlzLmdldGRhdGFFcnJvcj0hMSx5aWVsZCB0aGlzLnNhc1N0b3JlU2VydmljZS5jYWxsU2VydmljZShoLCJTQVNDb250cm9sVGFibGUiLCJlZGl0b3JzL2dldGRhdGEiLHRoaXMubGliZHMpLnRoZW4odj0+e3RoaXMuaW5pdFNldHVwKHYpfSkuY2F0''@;'; put 'put ''Y2godj0+e3RoaXMuZ2V0ZGF0YUVycm9yPSEwLHRoaXMudGFibGVUcnVlPSEwfSkpfSl9bmdBZnRlclZpZXdJbml0KCl7fWluaXRTZXR1cChoKXtpZih0aGlzLmhvdEluc3RhbmNlPXRoaXMuaG90UmVnaXN0ZXJlci5nZXRJbnN0YW5jZSgiaG90SW5zdGFuY2UiKSx0aGlzLmdldGRhdGFFcnJv''@;'; put 'put ''cnx8IWh8fCFoLmRhdGEpcmV0dXJuO3RoaXMuY29scz1oLmRhdGEuY29scyx0aGlzLmRzbWV0YT1oLmRhdGEuZHNtZXRhO2NvbnN0IHY9dGhpcy5ob3RJbnN0YW5jZSx5PWguZGF0YS5hcHByb3ZlcnM7dGhpcy5jb2xzJiYodGhpcy5oZWFkZXJBcnJheT0oZD0+e2NvbnN0IGc9W107Zm9yKGxl''@;'; put 'put ''dCBoIG9mIGQpIl9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fXyIhPT1oLk5BTUUmJmcucHVzaChoLk5BTUUpO3JldHVybiBnfSkodGhpcy5jb2xzKSkseS5mb3JFYWNoKEk9Pnt0aGlzLmFwcHJvdmVycy5wdXNoKEkuUEVSU09OTkFNRSl9KSx0aGlzLnRhYmxlVHJ1ZT0hMCx0aGlzLmxp''@;'; put 'put ''YmRzPWgubGliZHMsdGhpcy5ob3RUYWJsZS5kYXRhPWguZGF0YS5zYXNkYXRhLHRoaXMuaGVhZGVyQ29sdW1ucz1oLmRhdGEuc2FzcGFyYW1zWzBdLkNPTEhFQURFUlMuc3BsaXQoIiwiKSx0aGlzLmhlYWRlclBrcz1oLmRhdGEuc2FzcGFyYW1zWzBdLlBLLnNwbGl0KCIgIiksdGhpcy5jb2x1''@;'; put 'put ''bW5MZXZlbFNlY3VyaXR5RmxhZz0hIWguZGF0YS5zYXNwYXJhbXNbMF0uQ0xTX0ZMQUcsdGhpcy5jb2x1bW5MZXZlbFNlY3VyaXR5RmxhZyYmdGhpcy5zZXRSZXN0cmljdGlvbnMoe3Jlc3RyaWN0QWRkUm93OiEwLHJlbW92ZUVkaXRSZWNvcmRCdXR0b246ITAscmVtb3ZlQWRkUmVjb3JkQnV0''@;'; put 'put ''dG9uOiEwfSksdGhpcy5jaGVja0VtcHR5Um93V2hlbkZpbHRlcigpLC0xIT09dGhpcy5oZWFkZXJDb2x1bW5zLmluZGV4T2YoIl9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fXyIpJiYodGhpcy5oZWFkZXJDb2x1bW5zW3RoaXMuaGVhZGVyQ29sdW1ucy5pbmRleE9mKCJfX19fX0RFTEVU''@;'; put 'put ''RV9fVEhJU19fUkVDT1JEX19fX18iKV09IkRlbGV0ZT8iKSx0aGlzLmhlYWRlckFycmF5PXRoaXMuaGVhZGVyQ29sdW1ucy5zbGljZSgxKSwiIiE9PWguZGF0YS5zYXNwYXJhbXNbMF0uRFRWQVJTJiYodGhpcy5kYXRlSGVhZGVycz1oLmRhdGEuc2FzcGFyYW1zWzBdLkRUVkFSUy5zcGxpdCgi''@;'; put 'put ''ICIpKSwiIiE9PWguZGF0YS5zYXNwYXJhbXNbMF0uVE1WQVJTJiYodGhpcy50aW1lSGVhZGVycz1oLmRhdGEuc2FzcGFyYW1zWzBdLlRNVkFSUy5zcGxpdCgiICIpKSwiIiE9PWguZGF0YS5zYXNwYXJhbXNbMF0uRFRUTVZBUlMmJih0aGlzLmRhdGVUaW1lSGVhZGVycz1oLmRhdGEuc2FzcGFy''@;'; put 'put ''YW1zWzBdLkRUVE1WQVJTLnNwbGl0KCIgIikpLGguZGF0YS54bF9ydWxlcy5sZW5ndGg+MCYmKHRoaXMueGxSdWxlcz10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKGguZGF0YS54bF9ydWxlcykpLHRoaXMuZGNWYWxpZGF0b3I9bmV3IEY1dChoLmRhdGEuc2FzcGFyYW1zWzBdLGguZGF0''@;'; put 'put ''YS4kc2FzZGF0YSx0aGlzLmNvbHMsaC5kYXRhLmRxcnVsZXMsaC5kYXRhLmRxZGF0YSksdGhpcy5jZWxsVmFsaWRhdGlvbj10aGlzLmRjVmFsaWRhdG9yLmdldFJ1bGVzKCksdGhpcy5kYXRhU291cmNlPWguZGF0YS5zYXNkYXRhLHRoaXMuJGRhdGFGb3JtYXRzPWguZGF0YS4kc2FzZGF0YTtm''@;'; put 'put ''b3IobGV0IEk9MDtJPHRoaXMuaGVhZGVyQ29sdW1ucy5sZW5ndGg7SSsrKXRoaXMuaG90RGF0YVNjaGVtYVt0aGlzLmNlbGxWYWxpZGF0aW9uW0ldLmRhdGFdPUg1dCh0aGlzLmNlbGxWYWxpZGF0aW9uW0ldLnR5cGUsdGhpcy5jZWxsVmFsaWRhdGlvbltJXSk7dGhpcy5jaGVja1Jvd0xpbWl0''@;'; put 'put ''KCksdi51cGRhdGVTZXR0aW5ncyh7ZGF0YTp0aGlzLmRhdGFTb3VyY2UsY29sSGVhZGVyczp0aGlzLmhlYWRlckNvbHVtbnMsY29sdW1uczp0aGlzLmNlbGxWYWxpZGF0aW9uLGhlaWdodDp0aGlzLmhvdFRhYmxlLmhlaWdodCxzdHJldGNoSDoiYWxsIixyZWFkT25seTp0aGlzLmhvdFRhYmxl''@;'; put 'put ''LnJlYWRPbmx5LGhpZGRlbkNvbHVtbnM6e2luZGljYXRvcnM6ITAsY29sdW1uczp0aGlzLmRjVmFsaWRhdG9yLmdldEhpZGRlbkNvbHVtbnMoKX0sbW9kaWZ5Q29sV2lkdGg6ZnVuY3Rpb24oSSxaKXtyZXR1cm4gMD09PVo/NjA6ST41MDA/NTAwOkl9LG1hbnVhbENvbHVtbkZyZWV6ZTohMSxt''@;'; put 'put ''dWx0aUNvbHVtblNvcnRpbmc6ITAsbWFudWFsQ29sdW1uUmVzaXplOiEwLGZpbHRlcnM6ITEsbWFudWFsUm93UmVzaXplOiEwLHZpZXdwb3J0Um93UmVuZGVyaW5nT2Zmc2V0OjUwLHJvd0hlYWRlcnM6ST0+IiAiLHJvd0hlYWRlcldpZHRoOjE1LHJvd0hlaWdodHM6MjQsbWF4Um93czp0aGlz''@;'; put 'put ''LmFwcFNlcnZpY2UuZGVtb0xpbWl0cy5yb3dzX2FsbG93ZWR8fDEvMCxpbnZhbGlkQ2VsbENsYXNzTmFtZToiaHRJbnZhbGlkIixkcm9wZG93bk1lbnU6e2l0ZW1zOnttYWtlX3JlYWRfb25seTp7bmFtZToibWFrZV9yZWFkX29ubHkifSxhbGlnbm1lbnQ6e25hbWU6ImFsaWdubWVudCJ9LHNw''@;'; put 'put ''MTp7bmFtZToiLS0tLS0tLS0tIn0saW5mbzp7bmFtZToidGVzdCBpbmZvIixyZW5kZXJlcjooSSxaLHVlLF9lLEJlLE5lKT0+e3ZhciBLZSxwdDtjb25zdCBPdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7bGV0ICR0LGZuPSJObyBpbmZvIGZvdW5kIjtpZih0aGlzLmhvdEluc3Rh''@;'; put 'put ''bmNlKXtjb25zdCBMbj10aGlzLmhvdEluc3RhbmNlLmdldFNlbGVjdGVkKCl8fFtdLGlyPUxuP0xuWzBdWzFdOi0xLG1yPW51bGw9PT0oS2U9dGhpcy5ob3RJbnN0YW5jZSl8fHZvaWQgMD09PUtlP3ZvaWQgMDpLZS5jb2xUb1Byb3AoaXIpOyR0PW51bGw9PT0ocHQ9dGhpcy4kZGF0YUZvcm1h''@;'; put 'put ''dHMpfHx2b2lkIDA9PT1wdD92b2lkIDA6cHQudmFyc1ttcl0sJHQmJihmbj1gTEFCRUw6ICR7bnVsbD09JHQ/dm9pZCAwOiR0LmxhYmVsfTxicj5UWVBFOiAke251bGw9PSR0P3ZvaWQgMDokdC50eXBlfTxicj5MRU5HVEg6ICR7bnVsbD09JHQ/dm9pZCAwOiR0Lmxlbmd0aH08YnI+Rk9STUFU''@;'; put 'put ''OiAke251bGw9PSR0P3ZvaWQgMDokdC5mb3JtYXR9YCl9cmV0dXJuIE90LmlubmVySFRNTD1mbixPdH19fX0sZGF0YVNjaGVtYTp0aGlzLmhvdERhdGFTY2hlbWEsY29udGV4dE1lbnU6dGhpcy5ob3RUYWJsZS5zZXR0aW5ncy5jb250ZXh0TWVudSxjdXJyZW50SGVhZGVyQ2xhc3NOYW1lOiJj''@;'; put 'put ''dXN0b21IIixhZnRlckdldENvbEhlYWRlcjooSSxaKT0+e2NvbnN0IHVlPXRoaXMuY29sdW1uSGVhZGVyW0ldLF9lPXVlJiZ0aGlzLmlzQ29sUGsodWUpLEJlPXVlJiZ0aGlzLmlzUmVhZG9ubHlDb2wodWUpO19lJiZaLmNsYXNzTGlzdC5hZGQoInByaW1hcnlLZXlIZWFkZXJTdHlsZSIpLEJl''@;'; put 'put ''JiYhX2UmJlouY2xhc3NMaXN0LmFkZCgicmVhZG9ubHlDZWxsIiksMD09PUkmJlouY2xhc3NMaXN0LmFkZCgiZmlyc3RDb2x1bW5IZWFkZXJTdHlsZSIpfSxhZnRlckdldENlbGxNZXRhOihJLFosdWUpPT57WiYmdGhpcy5pc1JlYWRvbmx5Q29sKFopJiYodWUuY2xhc3NOYW1lPSJyZWFkb25s''@;'; put 'put ''eUNlbGwiKX19LCExKSx0aGlzLmhvdFRhYmxlLmhpZGRlbj0hMSx0aGlzLnRvZ2dsZUhvdFBsdWdpbigiY29udGV4dE1lbnUiLCExKSx0aGlzLnF1ZXJ5VGV4dD1oLmRhdGEuc2FzcGFyYW1zWzBdLkZJTFRFUl9URVhULHRoaXMuY29sdW1uSGVhZGVyPWguZGF0YS5zYXNwYXJhbXNbMF0uQ09M''@;'; put 'put ''SEVBREVSUy5zcGxpdCgiLCIpLHRoaXMuY29sdW1uSGVhZGVyWzBdPSJEZWxldGU/Iix0aGlzLnJlYWRPbmx5RmllbGRzPWguZGF0YS5zYXNwYXJhbXNbMF0uUEtDTlQ7bGV0IEM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvdEluc3RhbmNlIik7QyYmQy5hZGRFdmVudExpc3RlbmVyKCJt''@;'; put 'put ''b3VzZWRvd24iLEk9Pnt0aGlzLnVwbG9hZFByZXZpZXd8fHRoaXMuaG90Q2xpY2tlZCgpLHNldFRpbWVvdXQoKCk9PntsZXQgWj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZGVidWctc3dpdGNoLWl0ZW0iKXx8dm9pZCAwO1omJlouY2xpY2soKX0sMTAwKX0pLHYuYWRkSG9vaygiYWZ0ZXJT''@;'; put 'put ''ZWxlY3Rpb24iLChJLFosdWUsX2UsQmUsTmUpPT57ST09PXVlJiZaPT09X2UmJiExPT09dGhpcy5ob3RUYWJsZS5yZWFkT25seSYmdGhpcy5keW5hbWljQ2VsbFZhbGlkYXRpb24oSSxaKX0pLHYuYWRkSG9vaygiYmVmb3JlS2V5RG93biIsST0+e2NvbnN0IFo9dGhpcy5ob3RJbnN0YW5jZS5n''@;'; put 'put ''ZXRTZWxlY3RlZCgpLHVlPVomJlpbMF07aWYodWUpe2NvbnN0IF9lPXVlWzBdLE5lPXVlWzFdLEtlPXVlWzNdO2lmKF9lPT09dWVbMl0mJk5lPT09S2Upe2NvbnN0IHB0PXRoaXMuaG90SW5zdGFuY2UuZ2V0Q2VsbE1ldGEoX2UsTmUpO3B0JiYhMT09PXB0LmZpbHRlciYmdGhpcy5ob3RJbnN0''@;'; put 'put ''YW5jZS5zZXRDZWxsTWV0YShfZSxOZSwiZmlsdGVyIiwhMCl9fX0pLHYuYWRkSG9vaygiYWZ0ZXJDaGFuZ2UiLChJLFopPT57aWYoImVkaXQiPT09Wil7Y29uc3QgdWU9dGhpcy5ob3RJbnN0YW5jZSxfZT1JWzBdWzBdLEJlPUlbMF1bMV0sTmU9dWUucHJvcFRvQ29sKEJlKSxLZT11ZS5nZXRD''@;'; put 'put ''ZWxsTWV0YShfZSxOZSk7S2UmJiExPT09S2UuZmlsdGVyJiZ1ZS5zZXRDZWxsTWV0YShfZSxOZSwiZmlsdGVyIiwhMCksdGhpcy5leGVjdXRlRHluYW1pY0NlbGxWYWxpZGF0aW9uSWZBcHBsaWNhYmxlKEJlLE5lLF9lKX19KSx2LmFkZEhvb2soImFmdGVyUmVuZGVyIixJPT57dGhpcy5ldmVu''@;'; put 'put ''dFNlcnZpY2UuZGlzcGF0Y2hFdmVudCgicmVzaXplIil9KSx2LmFkZEhvb2soImFmdGVyQ3JlYXRlUm93IiwoSSxaKT0+e2xldCB1ZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIud3RIb2xkZXIiKTtzZXRUaW1lb3V0KCgpPT57dWUmJih1ZS5zY3JvbGxUb3A9dWUuc2Nyb2xsSGVpZ2h0KX0p''@;'; put 'put ''fSksdi5hZGRIb29rKCJiZWZvcmVQYXN0ZSIsKEksWik9Pntjb25zdCB1ZT1aWzBdLnN0YXJ0Q29sO0lbMF09SVswXS5tYXAoKF9lLEJlKT0+e3ZhciBOZSxLZTtjb25zdCBPdD0ibnVtIj09PShudWxsPT09KEtlPW51bGw9PT0oTmU9dGhpcy4kZGF0YUZvcm1hdHMpfHx2b2lkIDA9PT1OZT92''@;'; put 'put ''b2lkIDA6TmUudmFyc1t0aGlzLmNvbHVtbkhlYWRlclt1ZStCZV1dKXx8dm9pZCAwPT09S2U/dm9pZCAwOktlLnR5cGUpLCR0PSgwLGJ3LmlzU3BlY2lhbE1pc3NpbmcpKF9lKTtyZXR1cm4gT3QmJiFpc05hTihfZSkmJiEkdCYmKF9lKj0xKSxfZX0pfSksdi5hZGRIb29rKCJhZnRlclJlbW92''@;'; put 'put ''ZVJvdyIsKCk9Pnt0aGlzLmNoZWNrUm93TGltaXQoKX0pLHYuYWRkSG9vaygiYWZ0ZXJDcmVhdGVSb3ciLCgpPT57dGhpcy5jaGVja1Jvd0xpbWl0KCl9KSx0aGlzLnVwbG9hZFVybD0ic2VydmljZXMvZWRpdG9ycy9sb2FkZmlsZSIsbnVsbCE9PXRoaXMucmVjb3JkQWN0aW9uJiYoIkFERCI9''@;'; put 'put ''PT10aGlzLnJlY29yZEFjdGlvbj8odGhpcy5hZGRSZWNvcmQoKSx0aGlzLmVkaXRSZWNvcmQobnVsbCx0aGlzLmRhdGFTb3VyY2UubGVuZ3RoLTEsITApKToxPT09dGhpcy5kYXRhU291cmNlLmxlbmd0aCYmdGhpcy5lZGl0UmVjb3JkKG51bGwsMCkpLGguZGF0YS5xdWVyeS5sZW5ndGg+MCYm''@;'; put 'put ''KCJob21lIj09PW5pLnJvb3RQYXJhbXx8ImVkaXRvciI9PT1uaS5yb290UGFyYW0pJiYwPT09bmkuZWRpdG9yLmZpbHRlci5jbGF1c2VzLmxlbmd0aCYmKG5pLmVkaXRvci5maWx0ZXIucXVlcnk9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShoLmRhdGEucXVlcnkpLG5pLmVkaXRvci5m''@;'; put 'put ''aWx0ZXIubGliZHM9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMubGliTWVtLHRoaXMuc2FzU3RvcmVTZXJ2aWNlLmluaXRpYWxpemVHbG9iYWxGaWx0ZXJDbGF1c2UoImVkaXQiLHRoaXMuY29scykpLHYucmVuZGVyKCl9fXJldHVybiBkLmNudD0wLGQubm9uUGtDbnQ9MCxkLmxhc3RDZWxs''@;'; put 'put ''PTAsZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChSNyksS3QobXUpLEt0KHNjKSxLdChrZyksS3QoWGMpLEt0KFpsKSxLdChQdSksS3QoZzIpLEt0KGQxKSxLdChTTykpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtZWRpdG9yIl1d''@;'; put 'put ''LHZpZXdRdWVyeTpmdW5jdGlvbihoLHYpe2lmKDEmaCYmKHZvKEVtdCw3KSx2byh4bXQsNSksdm8oVG10LDUpLHZvKEltdCw1KSx2byhEbXQsNSkpLDImaCl7bGV0IHk7SGkoeT0kaSgpKSYmKHYuaHQ9eS5maXJzdCksSGkoeT0kaSgpKSYmKHYudXBsb2FkU3RhdGVyQ29tcExpc3Q9eSksSGko''@;'; put 'put ''eT0kaSgpKSYmKHYucXVlcnlGaWx0ZXJDb21wTGlzdD15KSxIaSh5PSRpKCkpJiYodi5ob3RJbnN0YW5jZUNvbXBMaXN0PXkpLEhpKHk9JGkoKSkmJih2LmZpbGVVcGxvYWRJbnB1dENvbXBMaXN0PXkpfX0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjE2Myx2YXJz''@;'; put 'put ''OjY5LGNvbnN0czpbWzEsImNvbnRlbnQtYXJlYSIsImQtZmxleCIsImNsci1mbGV4LWNvbHVtbiJdLFsibmcyRmlsZURyb3AiLCIiLDEsInJlbGF0aXZlIiwzLCJ1cGxvYWRlciIsImNsck1vZGFsU2l6ZSIsImNsck1vZGFsU3RhdGljQmFja2Ryb3AiLCJjbHJNb2RhbENsb3NhYmxlIiwiY2xy''@;'; put 'put ''TW9kYWxPcGVuIiwiZmlsZU92ZXIiLCJvbkZpbGVEcm9wIiwiY2xyTW9kYWxPcGVuQ2hhbmdlIl0sWzEsIm1vZGFsLXRpdGxlIl0sWzEsIm1vZGFsLWJvZHkiXSxbMSwiZHJvcC1hcmVhIl0sWzEsImNsci1jb2wtbWQtMTIiXSxbMSwiY2xyLXJvdyIsImNhcmQtYmxvY2siLCJtdC0xNSIsImQt''@;'; put 'put ''ZmxleCIsImp1c3RpZnktY29udGVudC1iZXR3ZWVuIl0sWzEsImNsci1jb2wtbWQtYXV0byJdLFsxLCJlbmNvZGluZy1ibG9jayJdLFsiY2xySW5saW5lIiwiIiwxLCJtdC0wLWkiXSxbInR5cGUiLCJyYWRpbyIsImNsclJhZGlvIiwiIiwidmFsdWUiLCJVVEYtOCIsIm5hbWUiLCJlbmNvZGlu''@;'; put 'put ''ZyIsMywibmdNb2RlbCIsImRpc2FibGVkIiwibmdNb2RlbENoYW5nZSJdLFsidHlwZSIsInJhZGlvIiwiY2xyUmFkaW8iLCIiLCJ2YWx1ZSIsIldMQVRJTjEiLCJuYW1lIiwiZW5jb2RpbmciLDMsIm5nTW9kZWwiLCJkaXNhYmxlZCIsIm5nTW9kZWxDaGFuZ2UiXSxbImNsYXNzIiwiY2xyLWNv''@;'; put 'put ''bC1tZC0zIGZpbHRlckJ0biIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItY29sLW1kLTMgZWRpdEJ0biIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwiYnRuIGJ0bi1wcmltYXJ5IG1yLTAiLDMsImRpc2FibGVkIiwiY2xpY2siLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24i''@;'; put 'put ''LCJjbGFzcyIsImJ0biBidG4tcHJpbWFyeSBtci0wIiwzLCJjbGljayIsNCwibmdJZiJdLFsiY2xhc3MiLCJleGNlbC1wYXJzaW5nIGNsci1jb2wtbWQtMTIiLDQsIm5nSWYiXSxbMSwibW9kYWwtZm9vdGVyIl0sWzMsImN1cnJlbnRSZWNvcmQiLCJyZWNvcmRBY3Rpb24iLCJsaWJkcyIsInF1''@;'; put 'put ''ZXJ5RmlsdGVyIiwiZmlsdGVyIiwic3VibWl0TG9hZGluZyIsImhlYWRlclBrcyIsImNlbGxWYWxpZGF0aW9uIiwiY3VycmVudFJlY29yZEluZGV4IiwiY3VycmVudFJlY29yZExvYWRpbmdzIiwiY3VycmVudFJlY29yZEVycm9ycyIsImN1cnJlbnRSZWNvcmRWYWxpZGF0b3IiLCJvblJlY29y''@;'; put 'put ''ZENoYW5nZSIsIm9uUmVjb3JkSW5wdXRGb2N1c2VkIiwib25SZWNvcmRFZGl0Q2xvc2UiLCJvbk5leHRSZWNvcmQiLCJvblByZXZpb3VzUmVjb3JkIiw0LCJuZ0lmIl0sWzEsImNsci1mbGV4LTEiXSxbImh0IiwiIl0sWyJjbGFzcyIsInByb2dyZXNTdGF0aWMgcHJvZ3Jlc3MgbG9vcCIsNCwi''@;'; put 'put ''bmdJZiJdLFsiYXBwRHJhZ05kcm9wIiwiIiwxLCJjYXJkIiwiYm9yZGVyLTAiLCJib3gtc2hhZG93LW5vbmUtaSIsInBvc2l0aW9uLXJlbGF0aXZlIiwiaC0xMDAiLCJkLWZsZXgiLCJjbHItZmxleC1jb2x1bW4iLCJiYWNrZ3JvdW5kLXRyYW5zcGFyZW50IiwzLCJmaWxlRHJhZ2dlZE92ZXIi''@;'; put 'put ''XSxbMSwiY2FyZC1oZWFkZXIiLCJjbHItcm93IiwiYnV0dG9uQmFyIiwiaGVhZGVyQmFyIiwiY2xyLWZsZXgtbWQtcm93IiwiY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIiLCJjbHItanVzdGlmeS1jb250ZW50LWxnLWVuZCJdLFsiY2xhc3MiLCJjbHItY29sLTEyIGNsci1jb2wtbGctNCBi''@;'; put 'put ''YWNrQnRuIiw0LCJuZ0lmIl0sWzEsImNsci1jb2wtMTIiLCJjbHItY29sLWxnLTQiLCJkLWZsZXgiLCJmbGV4LWNvbHVtbiIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsiY2xhc3MiLCJlZGl0b3ItdGl0bGUgdGV4dC1jZW50ZXIgbXQtMC1pIiw0LCJuZ1ZhciJdLFsiY2xhc3MiLCJjbHItY29s''@;'; put 'put ''LTEyIGNsci1jb2wtbGctNCBidG5DdHJsIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci1jb2wtbWQtMTIgaW5mb0JhciIsNCwibmdJZiJdLFsxLCJjYXJkLWJsb2NrIiwicC0wIiwiY2xyLWZsZXgtMSIsImJhY2tncm91bmQtdHJhbnNwYXJlbnQiLDMsIm5nQ2xhc3MiXSxbImNsYXNzIiwiY2Fy''@;'; put 'put ''ZC10ZXh0Iiw0LCJuZ0lmIl0sWzEsImNhcmQtdGV4dCIsImhvdEVkaXRvciIsImgtMTAwIiwiZC1mbGV4IiwiY2xyLWZsZXgtY29sdW1uIiwiYmFja2dyb3VuZC10cmFuc3BhcmVudCJdLFsxLCJob3Qtd3JhcHBlciIsImNsci1mbGV4LTEiXSxbImhvdElkIiwiaG90SW5zdGFuY2UiLCJpZCIs''@;'; put 'put ''ImhvdFRhYmxlIiwxLCJlZGl0LWhvdCIsMywibGljZW5zZUtleSJdLFsiaG90SW5zdGFuY2UiLCIiXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImJ0biBidG4tc20gYnRuLXN1Y2Nlc3MgbXQtNS1pIiwzLCJjbGljayIsNCwibmdJZiJdLFsiY2xhc3MiLCJtb2RhbCIsNCwibmdJZiJdLFsz''@;'; put 'put ''LCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbE9wZW5DaGFuZ2UiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1wcmltYXJ5IiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXByaW1hcnkiLDMsImNsaWNrIl0sWyJjbGFzcyIsImQtYmxvY2si''@;'; put 'put ''LDQsIm5nRm9yIiwibmdGb3JPZiJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwibW9kYWwgei1pbmRleC1oaWdoZXN0Iiw0LCJuZ0lmIl0sWzMsImNsck1vZGFsT3BlbiIsImNsck1vZGFsU2l6ZSIsImNsck1vZGFsQ2xvc2FibGUiLCJjbHJNb2RhbE9wZW5DaGFuZ2UiXSxbMSwi''@;'; put 'put ''bW9kYWwtdGl0bGUiLCJjZW50ZXIiLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWRhcmtlci1ncmF5Il0sWzQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1saW5rIiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLW91''@;'; put 'put ''dGxpbmUiLDMsImNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2Vzcy1vdXRsaW5lIiwzLCJjbHJMb2FkaW5nIiwiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIs''@;'; put 'put ''MSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsMywiY2xpY2siXSxbMSwibW9kYWwtYm9keSIsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl0sWzEsIm0tMCJdLFsiZGF0YS1scGlnbm9yZSIsInRydWUiLCJhdXRvY29tcGxldGUiLCJvZmYiLCJpZCIs''@;'; put 'put ''ImZpbGVQYXNzd29yZElucHV0IiwidHlwZSIsInRleHQiLDEsImNsci1pbnB1dCIsImRpc2FibGUtcGFzc3dvcmQtbWFuYWdlciJdLFsiZmlsZVBhc3N3b3JkSW5wdXQiLCIiXSxbImNsYXNzIiwibS0wIGNvbG9yLXJlZCIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRu''@;'; put 'put ''LXNtIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsMywiZGlzYWJsZWQiLCJjbGljayJdLFszLCJvcGVuIiwiZHNtZXRhIiwib3BlbkNoYW5nZSJdLFsxLCJjbHItY29sLW1kLTMiLCJmaWx0ZXJCdG4iXSxbMSwiZmlsdGVyQnRuIiwidy0xMDAiXSxbImZvciIsImZpbGUtdXBsb2FkIiwxLCJidG4i''@;'; put 'put ''LCJidG4tc20iLCJidG4tb3V0bGluZSIsInByb2ZpbGUtYnV0dG9ucyIsInctMTAwIl0sWyJoaWRkZW4iLCIiLCJpZCIsImZpbGUtdXBsb2FkIiwidHlwZSIsImZpbGUiLCJuZzJGaWxlU2VsZWN0IiwiIiwzLCJ1cGxvYWRlciIsImNoYW5nZSJdLFsiZmlsZVVwbG9hZElucHV0IiwiIl0sWzEs''@;'; put 'put ''ImNsci1jb2wtbWQtMyIsImVkaXRCdG4iXSxbMSwiYnRuVmlldyIsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzIiwicHJvZmlsZS1idXR0b25zIiwidy0xMDAiLDMsImRpc2FibGVkIiwiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1wcmltYXJ5IiwibXItMCIsMywi''@;'; put 'put ''ZGlzYWJsZWQiLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJtci0wIiwzLCJjbGljayJdLFsxLCJleGNlbC1wYXJzaW5nIiwiY2xyLWNvbC1tZC0xMiJdLFsidXBsb2FkU3RhdGVyIiwiIl0sWzMsImN1cnJlbnRSZWNvcmQiLCJyZWNvcmRBY3Rpb24i''@;'; put 'put ''LCJsaWJkcyIsInF1ZXJ5RmlsdGVyIiwiZmlsdGVyIiwic3VibWl0TG9hZGluZyIsImhlYWRlclBrcyIsImNlbGxWYWxpZGF0aW9uIiwiY3VycmVudFJlY29yZEluZGV4IiwiY3VycmVudFJlY29yZExvYWRpbmdzIiwiY3VycmVudFJlY29yZEVycm9ycyIsImN1cnJlbnRSZWNvcmRWYWxpZGF0''@;'; put 'put ''b3IiLCJvblJlY29yZENoYW5nZSIsIm9uUmVjb3JkSW5wdXRGb2N1c2VkIiwib25SZWNvcmRFZGl0Q2xvc2UiLCJvbk5leHRSZWNvcmQiLCJvblByZXZpb3VzUmVjb3JkIl0sWzEsInByb2dyZXNTdGF0aWMiLCJwcm9ncmVzcyIsImxvb3AiXSxbMSwiY2xyLWNvbC0xMiIsImNsci1jb2wtbGct''@;'; put 'put ''NCIsImJhY2tCdG4iXSxbMSwiYnRuIiwiYnRuLXNtIiwzLCJyb3V0ZXJMaW5rIl0sWyJzaGFwZSIsImNhcmV0IiwiZGlyIiwibGVmdCIsInNpemUiLCIyMCJdLFsxLCJlZGl0b3ItdGl0bGUiLCJ0ZXh0LWNlbnRlciIsIm10LTAtaSJdLFsic2hhcGUiLCJpbmZvLWNpcmNsZSIsInNpemUiLCIy''@;'; put 'put ''NCIsMSwiaXMtaGlnaGxpZ2h0IiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsImJvbHQiLCJjbGFzcyIsImNvbG9yLXllbGxvdyIsNCwibmdJZiJdLFsxLCJtci0xMCIsMywicm91dGVyTGluayJdLFsic2hhcGUiLCJib2x0IiwxLCJjb2xvci15ZWxsb3ciXSxbMSwiY2xy''@;'; put 'put ''LWNvbC0xMiIsImNsci1jb2wtbGctNCIsImJ0bkN0cmwiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0blZpZXciLCJidG4iLCJidG4tc20iLCJidG4taWNvbiIsImJ0bi1ibG9jayIsMywiY2xpY2siXSxbInNoYXBlIiwiZmlsdGVyIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20i''@;'; put 'put ''LCJidG4tcHJpbWFyeSIsImJ0bi1ibG9jayIsMywiY2xpY2siXSxbInNoYXBlIiwibm90ZSJdLFsidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwiYnRuIGJ0bi1zbSBidG4tc3VjY2VzcyBidG4tYmxvY2sgbXItMCIsMywiY2xpY2siLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIs''@;'; put 'put ''ImJ0bi1zbSIsImJ0bi1zdWNjZXNzIiwiYnRuLWJsb2NrIiwibXItMCIsMywiY2xpY2siXSxbInNoYXBlIiwidXBsb2FkIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4taWNvbiIsImJ0bi1vdXRsaW5lLWRhbmdlciIsMywiY2xpY2siXSxbInNoYXBlIiwidGltZXMi''@;'; put 'put ''XSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImJ0biBidG4tc20gYnRuLXN1Y2Nlc3MiLDMsImNsckxvYWRpbmciLCJjbGljayIsNCwibmdJZiJdLFsic2hhcGUiLCJjaGVjayIsInNpemUiLCIyMCJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLDMs''@;'; put 'put ''ImNsckxvYWRpbmciLCJjbGljayJdLFsic2hhcGUiLCJwbHVzIiwic2l6ZSIsIjE2Il0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4taWNvbiIsImJ0bi1vdXRsaW5lLWRhbmdlciIsImJ0bi11cGxvYWQtcHJldmlldyIsMywiY2xpY2siXSxbInR5cGUiLCJidXR0b24i''@;'; put 'put ''LCJjbGFzcyIsImJ0biBidG4tc20gYnRuLXByaW1hcnkgYnRuLXVwbG9hZC1wcmV2aWV3IiwzLCJjbGljayIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLCJwcmV2aWV3LXN1Ym1pdCIsMywiY2xyTG9hZGluZyIsImNsaWNrIl0sWyJ0''@;'; put 'put ''eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tcHJpbWFyeSIsImJ0bi11cGxvYWQtcHJldmlldyIsMywiY2xpY2siXSxbMSwiY2xyLWNvbC1tZC0xMiIsImluZm9CYXIiXSxbMSwiY2FyZC10ZXh0Il0sWzEsImgtNzB2aCIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50''@;'; put 'put ''ZXIiLCJmbGV4LWNvbHVtbiIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJzcGlubmVyIl0sWyJzaGFwZSIsImVycm9yLXN0YW5kYXJkIiwxLCJlcnJvci1pY29uIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2VzcyIsIm10LTUtaSIsMywiY2xpY2siXSxb''@;'; put 'put ''MSwibW9kYWwiXSxbInJvbGUiLCJkaWFsb2ciLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsIm1vZGFsLWRpYWxvZyIsIm1vZGFsLWxnIl0sWzEsIm1vZGFsLWNvbnRlbnQiXSxbMSwibW9kYWwtaGVhZGVyIl0sWyJhcmlhLWxhYmVsIiwiQ2xvc2UiLCJ0eXBlIiwiYnV0dG9uIiwxLCJjbG9zZSJd''@;'; put 'put ''LFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwic2hhcGUiLCJjbG9zZSJdLFsiY2xhc3MiLCJjbHItb2Zmc2V0LW1kLTIgY2xyLWNvbC1tZC04Iiw0LCJuZ0lmIl0sWzEsIm1vZGFsLWZvb3RlciIsImp1c3RpZnktY29udGVudC1jZW50ZXItaSJdLFsiaWQiLCJzdWJtaXRCdG4iLCJ0eXBlIiwic3Vi''@;'; put 'put ''bWl0IiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2Vzcy1vdXRsaW5lIiwibS0wIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJpZCIsImNhbmNlbFN1Ym1pdEJ0biIsInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsxLCJjbHItb2Zm''@;'; put 'put ''c2V0LW1kLTIiLCJjbHItY29sLW1kLTgiXSxbMSwiZm9ybS1ncm91cCJdLFsiZm9yIiwiZm9ybUZpZWxkc184Il0sWyJ0eXBlIiwidGV4dCIsImlkIiwiZm9ybUZpZWxkc184Iiwicm93cyIsIjUiLDEsInctMTAwIiwzLCJuZ01vZGVsIiwiZGlzYWJsZWQiLCJ2YWx1ZSIsIm5nTW9kZWxDaGFu''@;'; put 'put ''Z2UiXSxbMSwiZC1ibG9jayJdLFsxLCJtb2RhbCIsInotaW5kZXgtaGlnaGVzdCJdLFsicm9sZSIsImRpYWxvZyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwibW9kYWwtZGlhbG9nIl0sWyJxdWVyeUZpbHRlciIsIiJdLFsxLCJtLTAiLCJjb2xvci1yZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24o''@;'; put 'put ''aCx2KXtpZigxJmgpe2NvbnN0IHk9d2koKTtudCgwLCJkaXYiLDApKDEsImNsci1tb2RhbCIsMSksR24oImZpbGVPdmVyIixmdW5jdGlvbihJKXtyZXR1cm4gdi5maWxlT3ZlckJhc2UoSSl9KSgib25GaWxlRHJvcCIsZnVuY3Rpb24oSSl7cmV0dXJuIHYuZ2V0RmlsZURlc2MoSSwhMCl9KSgi''@;'; put 'put ''Y2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihJKXtyZXR1cm4gdi5zaG93VXBsb2FkTW9kYWw9SX0pLG50KDIsImgzIiwyKSxZdCgzLCJVcGxvYWQgRmlsZSIpLG90KCksbnQoNCwiZGl2IiwzKSg1LCJkaXYiLDQpKDYsInNwYW4iKSxZdCg3LCJEcm9wIGZpbGUgYW55d2hlcmUgdG8gdXBs''@;'; put 'put ''b2FkISIpLG90KCkoKSxudCg4LCJkaXYiLDUpKDksImRpdiIsNikoMTAsImRpdiIsNykoMTEsImRpdiIsOCkoMTIsImNsci1yYWRpby1jb250YWluZXIiLDkpKDEzLCJjbHItcmFkaW8td3JhcHBlciIpKDE0LCJpbnB1dCIsMTApLEduKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihJKXtyZXR1''@;'; put 'put ''cm4gdi5lbmNvZGluZz1JfSksb3QoKSxudCgxNSwibGFiZWwiKSxZdCgxNiwiVVRGLTgiKSxvdCgpKCksbnQoMTcsImNsci1yYWRpby13cmFwcGVyIikoMTgsImlucHV0IiwxMSksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKEkpe3JldHVybiB2LmVuY29kaW5nPUl9KSxvdCgpLG50KDE5''@;'; put 'put ''LCJsYWJlbCIpLFl0KDIwLCJXTEFUSU4xIiksb3QoKSgpKCkoKSgpLHJuKDIxLExtdCw2LDEsImRpdiIsMTIpLHJuKDIyLE9tdCwzLDEsImRpdiIsMTMpLG50KDIzLCJkaXYiLDcpLHJuKDI0LFJtdCwyLDEsImJ1dHRvbiIsMTQpLHJuKDI1LEJtdCwyLDAsImJ1dHRvbiIsMTUpLG90KCkscm4o''@;'; put 'put ''MjYsUG10LDMsMCwiZGl2IiwxNiksb3QoKSgpKCksQ3IoMjcsImRpdiIsMTcpLG90KCkscm4oMjgsRm10LDEsMTIsImFwcC1lZGl0LXJlY29yZCIsMTgpLG50KDI5LCJkaXYiLDE5LDIwKSxybigzMSxIbXQsMiwwLCJkaXYiLDIxKSxudCgzMiwiZGl2IiwyMiksR24oImZpbGVEcmFnZ2VkT3Zl''@;'; put 'put ''ciIsZnVuY3Rpb24oKXtyZXR1cm4gdi5vblNob3dVcGxvYWRNb2RhbCgpfSksbnQoMzMsImRpdiIsMjMpLHJuKDM0LFZtdCw0LDIsImRpdiIsMjQpLG50KDM1LCJkaXYiLDI1KSxybigzNixXbXQsNyw1LCJoNCIsMjYpLG90KCkscm4oMzcsJG10LDQsMywiZGl2IiwyNykscm4oMzgscW10LDUs''@;'; put 'put ''MSwiZGl2IiwyOCksb3QoKSxudCgzOSwiZGl2IiwyOSkscm4oNDAsbjd0LDQsMiwiZGl2IiwzMCksbnQoNDEsImRpdiIsMzEpKDQyLCJkaXYiLDMyKSxDcig0MywiaG90LXRhYmxlIiwzMywzNCksb3QoKSxybig0NSxyN3QsMywwLCJidXR0b24iLDM1KSxybig0NixvN3QsMTUsNSwiZGl2Iiwz''@;'; put 'put ''NiksbnQoNDcsImNsci1tb2RhbCIsMzcpLEduKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKEkpe3JldHVybiB2LmJhZEVkaXQ9SX0pLG50KDQ4LCJoMyIsMiksWXQoNDkpLG90KCksbnQoNTAsImRpdiIsMykoNTEsInAiKSxZdCg1Miksb3QoKSgpLG50KDUzLCJkaXYiLDE3KSg1NCwi''@;'; put 'put ''YnV0dG9uIiwzOCksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LmJhZEVkaXQ9ITF9KSxZdCg1NSwiIE9rICIpLG90KCkoKSgpLG50KDU2LCJjbHItbW9kYWwiLDM3KSxHbigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihJKXtyZXR1cm4gdi5wa051bGw9SX0pLG50KDU3LCJo''@;'; put 'put ''MyIsMiksWXQoNTgsIkVycm9yIiksb3QoKSxudCg1OSwiZGl2IiwzKSg2MCwicCIpLFl0KDYxLCIgTnVsbCB2YWx1ZXMgb3IgaW5jb3JyZWN0IGRhdGEgdHlwZXMgY2Fubm90IGJlIHN1Ym1pdHRlZCBmb3IgUHJpbWFyeSBLZXkgY29sdW1ucyAiKSxvdCgpKCksbnQoNjIsImRpdiIsMTcpKDYz''@;'; put 'put ''LCJidXR0b24iLDM5KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYucGtOdWxsPSExLHYuYmFkRWRpdD0hMX0pLFl0KDY0LCIgT2sgIiksb3QoKSgpKCksbnQoNjUsImNsci1tb2RhbCIsMzcpLEduKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKEkpe3JldHVybiB2Lm5vUGtO''@;'; put 'put ''dWxsPUl9KSxudCg2NiwiaDMiLDIpLFl0KDY3LCJFcnJvciIpLG90KCksbnQoNjgsImRpdiIsMykoNjksInAiKSxZdCg3MCwiSW5jb3JyZWN0IGRhdGEgdHlwZXMgaW4gbm9uLVByaW1hcnkgS2V5IGNvbHVtbnMiKSxvdCgpKCksbnQoNzEsImRpdiIsMTcpKDcyLCJidXR0b24iLDM5KSxHbigi''@;'; put 'put ''Y2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYubm9Qa051bGw9ITEsdi5iYWRFZGl0PSExfSksWXQoNzMsIiBPayAiKSxvdCgpKCkoKSxudCg3NCwiY2xyLW1vZGFsIiwzNyksR24oImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oSSl7cmV0dXJuIHYucGtEdXBzPUl9KSxudCg3NSwiaDMi''@;'; put 'put ''LDIpLFl0KDc2LCJFcnJvciIpLG90KCksbnQoNzcsImRpdiIsMykoNzgsInAiKSxZdCg3OSwiIER1cGxpY2F0ZSB2YWx1ZXMgY2Fubm90IGJlIHN1Ym1pdHRlZCBmb3IgUHJpbWFyeSBLZXkgY29sdW1ucyAiKSxvdCgpLG50KDgwLCJwIiksWXQoODEsIkR1cGxpY2F0ZXMgZm91bmQ6Iiksb3Qo''@;'; put 'put ''KSxybig4MixhN3QsMyw0LCJzcGFuIiw0MCksb3QoKSxudCg4MywiZGl2IiwxNykoODQsImJ1dHRvbiIsMzkpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5wa0R1cHM9ITF9KSxZdCg4NSwiIE9rICIpLG90KCkoKSgpLG50KDg2LCJjbHItbW9kYWwiLDM3KSxHbigiY2xyTW9kYWxP''@;'; put 'put ''cGVuQ2hhbmdlIixmdW5jdGlvbihJKXtyZXR1cm4gdi50b29Mb25nPUl9KSxudCg4NywiaDMiLDIpLFl0KDg4LCJFcnJvciIpLG90KCksbnQoODksImRpdiIsMykoOTAsInAiKSxZdCg5MSwiIFRoZSBmb2xsb3dpbmcgY29sdW1ucyBoYXZlIHZhbHVlcyB0aGF0IGV4Y2VlZCBsZW5ndGggbGlt''@;'; put 'put ''aXRzOiAiKSxvdCgpLHJuKDkyLGw3dCwyLDMsInAiLDQxKSxvdCgpLG50KDkzLCJkaXYiLDE3KSg5NCwiYnV0dG9uIiwzOSksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LnRvb0xvbmc9ITEsdi5jbGVhbkV4Y2VlZCgpfSksWXQoOTUsIiBPayAiKSxvdCgpKCkoKSgpKCkoKSgpKCks''@;'; put 'put ''cm4oOTYsczd0LDE0LDAsImRpdiIsNDIpLG50KDk3LCJjbHItbW9kYWwiLDQzKSxHbigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihJKXtyZXR1cm4gdi5maWx0ZXI9SX0pLG50KDk4LCJoMyIsNDQpLFl0KDk5LCIgRmlsdGVyIGZvciB0YWJsZTogIiksbnQoMTAwLCJzcGFuIiksWXQo''@;'; put 'put ''MTAxKSxvdCgpKCksbnQoMTAyLCJkaXYiLDMpLHJuKDEwMyx1N3QsMiwwLCJhcHAtcXVlcnkiLDQ1KSxvdCgpLG50KDEwNCwiZGl2IiwxNykoMTA1LCJidXR0b24iLDQ2KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYucmVzZXRGaWx0ZXIoKX0pLFl0KDEwNiwiIHJlc2V0IGZpbHRl''@;'; put 'put ''ciAiKSxvdCgpLG50KDEwNywiYnV0dG9uIiw0NyksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LmZpbHRlcj0hMX0pLFl0KDEwOCwiIENhbmNlbCAiKSxvdCgpLG50KDEwOSwiYnV0dG9uIiw0OCksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LnNlbmRDbGF1c2UoKX0pLFl0''@;'; put 'put ''KDExMCwiIE9rICIpLG90KCkoKSgpLG50KDExMSwiY2xyLW1vZGFsIiwzNyksR24oImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oSSl7cmV0dXJuIHYucXVlcnlFcnI9SX0pLG50KDExMiwiaDMiLDIpLFl0KDExMywiRXJyb3IiKSxvdCgpLG50KDExNCwiZGl2IiwzKSgxMTUsInAiKSxZ''@;'; put 'put ''dCgxMTYpLG90KCkoKSxudCgxMTcsImRpdiIsMTcpKDExOCwiYnV0dG9uIiw0OSksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LnF1ZXJ5RXJyPSExfSksWXQoMTE5LCIgQ2FuY2VsICIpLG90KCksbnQoMTIwLCJidXR0b24iLDM5KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHYucXVlcnlFcnI9ITF9KSxZdCgxMjEsIiBPayAiKSxvdCgpKCkoKSxudCgxMjIsImNsci1tb2RhbCIsNDMpLEduKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKEkpe3JldHVybiB2LmRpc2NhcmRTb3VyY2VGaWxlPUl9KSxudCgxMjMsImgzIiw0NCksWXQoMTI0LCJXYXJuaW5nIiks''@;'; put 'put ''b3QoKSxudCgxMjUsImRpdiIsMyksWXQoMTI2LCIgVGhpcyBhY3Rpb24gd2lsbCBkaXNjYXJkIHRoZSBzb3VyY2UgZmlsZSBhbmQgaXQncyBsb2FkZWQgZGF0YSAiKSxudCgxMjcsImIiKSxZdCgxMjgpLG90KCksWXQoMTI5LCIgRG8geW91IHdpc2ggdG8gcHJvY2VlZD8gIiksb3QoKSxudCgx''@;'; put 'put ''MzAsImRpdiIsMTcpKDEzMSwiYnV0dG9uIiw0NyksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LmRpc2NhcmRTb3VyY2VGaWxlPSExfSksWXQoMTMyLCIgQ2FuY2VsICIpLG90KCksbnQoMTMzLCJidXR0b24iLDUwKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuZGlzY2Fy''@;'; put 'put ''ZFNvdXJjZUZpbGU9ITEsdi5kaXNjYXJkUGVuZGluZ0V4Y2VsKCEwKX0pLFl0KDEzNCwiIE9rICIpLG90KCkoKSgpLG50KDEzNSwiY2xyLW1vZGFsIiw0MyksR24oImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oSSl7cmV0dXJuIHYuZmlsZVBhc3N3b3JkTW9kYWw9SX0pLG50KDEzNiwi''@;'; put 'put ''aDMiLDQ0KSxZdCgxMzcsIiBQYXNzd29yZCBQcm90ZWN0ZWQgRmlsZSAiKSxvdCgpLG50KDEzOCwiZGl2Iiw1MSkoMTM5LCJwIiw1MiksWXQoMTQwLCJQbGVhc2UgZW50ZXIgcGFzc3dvcmQ6Iiksb3QoKSxDcigxNDEsImlucHV0Iiw1Myw1NCksb3QoKSxudCgxNDMsImRpdiIsMTcpLHJuKDE0''@;'; put 'put ''NCxjN3QsMiwwLCJwIiw1NSksbnQoMTQ1LCJidXR0b24iLDQ3KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuZmlsZVBhc3N3b3JkTW9kYWw9ITEsdi5maWxlUGFzc3dvcmRTdWJqZWN0Lm5leHQodm9pZCAwKX0pLFl0KDE0NiwiIENhbmNlbCB1cGxvYWQgIiksb3QoKSxudCgxNDcs''@;'; put 'put ''ImJ1dHRvbiIsNTYpLEduKCJjbGljayIsZnVuY3Rpb24oKXtpdCh5KTtjb25zdCBJPXZhKDE0Mik7cmV0dXJuIHYuZmlsZVBhc3N3b3JkTW9kYWw9ITEsYSh2LmZpbGVQYXNzd29yZFN1YmplY3QubmV4dChJLnZhbHVlKSl9KSxZdCgxNDgsIiBVbmxvY2sgIiksb3QoKSgpKCksbnQoMTQ5LCJj''@;'; put 'put ''bHItbW9kYWwiLDQzKSxHbigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihJKXtyZXR1cm4gdi5tYW51YWxGaWxlRWRpdE1vZGFsPUl9KSxudCgxNTAsImgzIiw0NCksWXQoMTUxLCJXYXJuaW5nIiksb3QoKSxudCgxNTIsImRpdiIsMyksWXQoMTUzLCIgTWFudWFsbHkgZWRpdGluZyB0''@;'; put 'put ''aGlzIGRhdGEgd2lsbCBtZWFuIHRoZSBzb3VyY2UgZmlsZSAiKSxudCgxNTQsImIiKSxZdCgxNTUpLG90KCksWXQoMTU2LCIgd2lsbCBiZSBkaXNjYXJkZWQuIERvIHlvdSB3aXNoIHRvIHByb2NlZWQ/ICIpLG90KCksbnQoMTU3LCJkaXYiLDE3KSgxNTgsImJ1dHRvbiIsNDcpLEduKCJjbGlj''@;'; put 'put ''ayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5tYW51YWxGaWxlRWRpdE1vZGFsPSExfSksWXQoMTU5LCIgQ2FuY2VsICIpLG90KCksbnQoMTYwLCJidXR0b24iLDUwKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYubWFudWFsRmlsZUVkaXRNb2RhbD0hMSx2LnByZXZpZXdUYWJsZUVkaXRD''@;'; put 'put ''b25maXJtKCl9KSxZdCgxNjEsIiBPayAiKSxvdCgpKCkoKSxudCgxNjIsImFwcC1kYXRhc2V0LWluZm8iLDU3KSxHbigib3BlbkNoYW5nZSIsZnVuY3Rpb24oSSl7cmV0dXJuIHYuZGF0YXNldEluZm89SX0pLG90KCl9aWYoMiZoKXtjb25zdCB5PXZhKDE0Mik7dXQoMSksVHQoInVwbG9hZGVy''@;'; put 'put ''Iix2LnVwbG9hZGVyKSgiY2xyTW9kYWxTaXplIiwieGwiKSgiY2xyTW9kYWxTdGF0aWNCYWNrZHJvcCIsITEpKCJjbHJNb2RhbENsb3NhYmxlIiwiVmFsaWRhdGluZy1EUSI9PT12LmV4Y2VsVXBsb2FkU3RhdGUpKCJjbHJNb2RhbE9wZW4iLHYuc2hvd1VwbG9hZE1vZGFsKSx1dCgxMyksVHQo''@;'; put 'put ''Im5nTW9kZWwiLHYuZW5jb2RpbmcpKCJkaXNhYmxlZCIsIiIhPXYuZmlsZW5hbWUpLHV0KDQpLFR0KCJuZ01vZGVsIix2LmVuY29kaW5nKSgiZGlzYWJsZWQiLCIiIT12LmZpbGVuYW1lKSx1dCgzKSxUdCgibmdJZiIsIXYuZXhjZWxGaWxlUGFyc2luZyYmIXYudXBsb2FkTG9hZGluZyksdXQo''@;'; put 'put ''MSksVHQoIm5nSWYiLCF2LmV4Y2VsRmlsZVBhcnNpbmcmJiF2LnVwbG9hZExvYWRpbmcpLHV0KDIpLFR0KCJuZ0lmIiwiVmFsaWRhdGluZyIhPT12LmV4Y2VsVXBsb2FkU3RhdGUpLHV0KDEpLFR0KCJuZ0lmIiwiVmFsaWRhdGluZy1EUSI9PT12LmV4Y2VsVXBsb2FkU3RhdGUpLHV0KDEpLFR0''@;'; put 'put ''KCJuZ0lmIix2LmV4Y2VsRmlsZVBhcnNpbmcpLHV0KDIpLFR0KCJuZ0lmIix2LmN1cnJlbnRFZGl0UmVjb3JkSW5kZXg+LTEpLHV0KDMpLFR0KCJuZ0lmIiwhdi52YWxpZGF0aW9uRG9uZSYmdi5zdWJtaXQpLHV0KDMpLFR0KCJuZ0lmIix2LnRhYmxlVHJ1ZSksdXQoMSksRmkoImNsci1jb2wt''@;'; put 'put ''bGctMTIiLCF2LnRhYmxlVHJ1ZSksdXQoMSksVHQoIm5nVmFyIixqMyg2MixmN3QsKG51bGw9PXYubGliZHM/bnVsbDp2LmxpYmRzLnNwbGl0KCIuIikpWzBdLChudWxsPT12LmxpYmRzP251bGw6di5saWJkcy5zcGxpdCgiLiIpKVsxXSkpLHV0KDEpLFR0KCJuZ0lmIix2LnRhYmxlVHJ1ZSks''@;'; put 'put ''dXQoMSksVHQoIm5nSWYiLCFjcyg2NSxETGUpLmluY2x1ZGVzKHYucXVlcnlUZXh0KSksdXQoMSksVHQoIm5nQ2xhc3MiLEdkKDY3LGg3dCwhY3MoNjYsRExlKS5pbmNsdWRlcyh2LnF1ZXJ5VGV4dCkpKSx1dCgxKSxUdCgibmdJZiIsIXYudGFibGVUcnVlKSx1dCgzKSxGaSgiaGlkZGVuIix2''@;'; put 'put ''LmhvdFRhYmxlLmhpZGRlbiksVHQoImxpY2Vuc2VLZXkiLHYuaG90VGFibGUubGljZW5zZUtleSksdXQoMiksVHQoIm5nSWYiLHYudGFibGVUcnVlJiYhdi5yZXN0cmljdGlvbnMucmVtb3ZlQWRkUmVjb3JkQnV0dG9uKSx1dCgxKSxUdCgibmdJZiIsdi5zdWJtaXQpLHV0KDEpLFR0KCJjbHJN''@;'; put 'put ''b2RhbE9wZW4iLHYuYmFkRWRpdCksdXQoMiksamkodi5iYWRFZGl0VGl0bGV8fCJFcnJvciIpLHV0KDMpLGppKHYuYmFkRWRpdENhdXNlKSx1dCg0KSxUdCgiY2xyTW9kYWxPcGVuIix2LnBrTnVsbCksdXQoOSksVHQoImNsck1vZGFsT3BlbiIsdi5ub1BrTnVsbCksdXQoOSksVHQoImNsck1v''@;'; put 'put ''ZGFsT3BlbiIsdi5wa0R1cHMpLHV0KDgpLFR0KCJuZ0Zvck9mIix2LmR1cGxpY2F0ZVBrSW5kZXhlcyksdXQoNCksVHQoImNsck1vZGFsT3BlbiIsdi50b29Mb25nKSx1dCg2KSxUdCgibmdGb3JPZiIsdi5leGNlZWRDZWxscyksdXQoNCksVHQoIm5nSWYiLHYubnVsbFZhcmlhYmxlcyksdXQo''@;'; put 'put ''MSksVHQoImNsck1vZGFsT3BlbiIsdi5maWx0ZXIpKCJjbHJNb2RhbFNpemUiLCJ4bCIpKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksdXQoNCksSmkoIiAiLHYubGliZHMsIiAiKSx1dCgyKSxUdCgibmdJZiIsdi5maWx0ZXIpLHV0KDYpLFR0KCJjbHJMb2FkaW5nIix2LnN1Ym1pdExvYWRpbmcp''@;'; put 'put ''LHV0KDIpLFR0KCJjbHJNb2RhbE9wZW4iLHYucXVlcnlFcnIpLHV0KDUpLGppKHYucXVlcnlFcnJNZXNzYWdlKSx1dCg2KSxUdCgiY2xyTW9kYWxPcGVuIix2LmRpc2NhcmRTb3VyY2VGaWxlKSgiY2xyTW9kYWxTaXplIiwieGwiKSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLHV0KDYpLGppKHYu''@;'; put 'put ''ZmlsZW5hbWUpLHV0KDcpLFR0KCJjbHJNb2RhbE9wZW4iLHYuZmlsZVBhc3N3b3JkTW9kYWwpKCJjbHJNb2RhbFNpemUiLCJtZCIpKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksdXQoOSksVHQoIm5nSWYiLHYuZmlsZVVubG9ja0Vycm9yKSx1dCgzKSxUdCgiZGlzYWJsZWQiLHkudmFsdWUubGVu''@;'; put 'put ''Z3RoPDEpLHV0KDIpLFR0KCJjbHJNb2RhbE9wZW4iLHYubWFudWFsRmlsZUVkaXRNb2RhbCkoImNsck1vZGFsU2l6ZSIsInhsIikoImNsck1vZGFsQ2xvc2FibGUiLCExKSx1dCg2KSxqaSh2LmZpbGVuYW1lKSx1dCg3KSxUdCgib3BlbiIsdi5kYXRhc2V0SW5mbykoImRzbWV0YSIsdi5kc21l''@;'; put 'put ''dGEpfX0sZGVwZW5kZW5jaWVzOltsYyx4cyxObyxtMSxxaCxUcyxJcyxZNix2Nyx3bCxpZCxvZCxnbyx3LGF0LERmZSxnT2UsWUFlLHg1dCxFNXQsQXRlLEVMZSxTTGUsVmd0LHhMZSxDbXQsU210LE1tdCxJTGVdLHN0eWxlczpbIi5jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9w''@;'; put 'put ''OjA7Ym9yZGVyOjB9LmJ1dHRvbkJhcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMTBweDthbGlnbi1pdGVtczpjZW50ZXJ9LnRlc3RSZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDpyZ2JhKDI1NSwwLDAsLjgpIWltcG9ydGFudH1ob3QtdGFibGVb''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVdICAgICAuZmlyc3RDb2x1bW5IZWFkZXJTdHlsZSBidXR0b24uY2hhbmdlVHlwZXtkaXNwbGF5Om5vbmV9aG90LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmhhbmRzb250YWJsZSB0Ym9keSB0aC5odF9faGlnaGxpZ2h0LnByaW1hcnlLZXlIZWFkZXJT''@;'; put 'put ''dHlsZSwgaG90LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmhhbmRzb250YWJsZSB0aGVhZCB0aC5odF9faGlnaGxpZ2h0LnByaW1hcnlLZXlIZWFkZXJTdHlsZXtiYWNrZ3JvdW5kOnJnYmEoNDgsMTA3LDAsLjY5MDE5NjA3ODQpfWhvdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAgIC5wcmltYXJ5S2V5SGVhZGVyU3R5bGV7YmFja2dyb3VuZDpyZ2JhKDQ4LDEwNywwLC40MzEzNzI1NDkpfWhvdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICAgIHRoLnJlYWRvbmx5Q2VsbCBkaXZ7b3BhY2l0eTouNH1ob3QtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgICB0ZC5y''@;'; put 'put ''ZWFkb25seUNlbGx7b3BhY2l0eTouNX0uaW5mb0Jhcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDoxNHB4O2JhY2tncm91bmQ6IzQ5NTk2Nztjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6M3B4O2ZvbnQtc2l6ZToxNnB4O2hlaWdodDozMHB4O3RleHQtb3ZlcmZs''@;'; put 'put ''b3c6ZWxsaXBzaXM7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcH0uaW5mb0Jhcltfbmdjb250ZW50LSVDT01QJV0gICBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDo4MCV9LmluZm9CYXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2hlaWdodDp1bnNldDt3aGl0ZS1z''@;'; put 'put ''cGFjZTpub3JtYWx9LmluZm9CYXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6dW5zZXR9LnBrSGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM2ODc2ODI7Y29sb3I6I2ZmZjttYXJnaW46LTFweH0uaGVhZGVyQmFy''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDojZmZmZmZmO2JhY2tncm91bmQ6I2Y1ZjZmZX0uZXJyb3ItaWNvbltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MzBweDtoZWlnaHQ6MzBweDtjb2xvcjpyZWR9LmJ0bkN0cmxbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCB0cmFuc3BhcmVudH0uaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXt2aXNpYmlsaXR5OmhpZGRlbn0ubXktZHJvcC16''@;'; put 'put ''b25lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6c29saWQgMXB4IGxpZ2h0Z3JheTtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDp3aGl0ZXNtb2tlO2JveC1zaGFkb3c6aW5zZXQgMCAwIDRweCAycHggI2E3YTVhNTJiO2hlaWdodDo1MHZofS5udi1maWxlLW92ZXJbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVde2JvcmRlcjpzb2xpZCAycHggZ3JlZW59LmZpbGUtZHJvcC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWFsaWduOmNlbnRlcn1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCl7LnByb2dyZXNTdGF0aWNbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10''@;'; put 'put ''b3A6OXB4IWltcG9ydGFudH0ucHJvZ3Jlc3NbX25nY29udGVudC0lQ09NUCVdLCAucHJvZ3Jlc3Mtc3RhdGljW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDpjYWxjKDEwMCUgLSAxNHB4KX19LmhvdEVkaXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmV4Y2VsLXBh''@;'; put 'put ''cnNpbmdbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlfS5leGNlbC1wYXJzaW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kZXRhaWxzW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJn''@;'; put 'put ''aW46MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTQ1cHh9LmVkaXQtcmVjb3JkLXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjYpO3Bvc2l0''@;'; put 'put ''aW9uOmFic29sdXRlO3RvcDowcHg7Ym90dG9tOjBweDt3aWR0aDoxMDAlO3otaW5kZXg6NTAwfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ4MHB4KXsucHJvZ3Jlc1N0YXRpY1tfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDozMnB4IWltcG9ydGFudH0uY2FyZC1ibG9ja1tf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV0sIC5jYXJkLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxMHB4IDAgMH19LmNvbnRlbnQtYXJlYVtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzowIC44cmVtIC44cmVtIWltcG9ydGFudDtwYWRkaW5nLXRvcDowfS5kcm9wLWFyZWFbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDtib3R0b206MDtyaWdodDowO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbjoxcHg7Ym9yZGVyOjJweCBkYXNoZWQgI2ZmZjt6LWluZGV4Oi0xfS5kcm9wLWFyZWFbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHg7bWFyZ2luLXRvcDoyMHB4O2NvbG9yOiNmZmZ9I3N1Ym1pdEJ0bltfbmdjb250ZW50LSVDT01QJV0sICNjYW5jZWxTdWJtaXRCdG5bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE1MHB4fSJdfSksZH0pKCk7Y29u''@;'; put 'put ''c3QgZDd0PVt7cGF0aDoiOmxpYk1lbSIsY29tcG9uZW50OmpuZX0se3BhdGg6IjpsaWJNZW0vOmZpbHRlcklkIixjb21wb25lbnQ6am5lfSx7cGF0aDoiZWRpdC1yZWNvcmQvOmxpYk1lbSIsY29tcG9uZW50OmpuZX0se3BhdGg6ImVkaXQtcmVjb3JkLzpsaWJNZW0vOmZpbHRlcklkIixjb21w''@;'; put 'put ''b25lbnQ6am5lfV07bGV0IHA3dD0oKCk9PntjbGFzcyBke31yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVtb2Q9Y28oe3R5cGU6ZH0pLGQuXHUwMjc1aW5qPWIwKHtpbXBvcnRzOltiYSxYaC5mb3JDaGlsZChkN3QpLFhoXX0pLGR9KSgp''@;'; put 'put ''O3dMZSgpO2xldCBnN3Q9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbYmEsdGQscDd0LG5PLFQ1dCxkNmUuZm9yUm9vdCgpLHdtZSx5''@;'; put 'put ''bWUsSG5lLE5uZV19KSxkfSkoKTtmdW5jdGlvbiBtN3QoZCxnKXsxJmQmJkNyKDAsImNsci1pY29uIiwxMil9ZnVuY3Rpb24gdjd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiY2xyLWljb24iLDEzKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3QgeT1RdCgyKTty''@;'; put 'put ''ZXR1cm4geS5ncm91cFNlYXJjaD0iIixhKHkuZ3JvdXBMaXN0T25GaWx0ZXIoKSl9KSxvdCgpfX1mdW5jdGlvbiBBN3QoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJjbHItdHJlZS1ub2RlIiw2KSgxLCJkaXYiLDcpKDIsImlucHV0Iiw4LDkpLEduKCJuZ01vZGVsQ2hhbmdlIixm''@;'; put 'put ''dW5jdGlvbih5KXtyZXR1cm4gaXQoaCksYShRdCgpLmdyb3VwU2VhcmNoPXkpfSkoImtleXVwIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkuZ3JvdXBMaXN0T25GaWx0ZXIoKSl9KSxvdCgpLHJuKDQsbTd0LDEsMCwiY2xyLWljb24iLDEwKSxybig1LHY3dCwxLDAsImNsci1pY29u''@;'; put 'put ''IiwxMSksb3QoKSgpfWlmKDImZCl7Y29uc3QgaD12YSgzKSx2PVF0KCk7dXQoMiksVHQoIm5nTW9kZWwiLHYuZ3JvdXBTZWFyY2gpLHV0KDIpLFR0KCJuZ0lmIixoLnZhbHVlLmxlbmd0aDwxKSx1dCgxKSxUdCgibmdJZiIsaC52YWx1ZS5sZW5ndGg+MCl9fWZ1bmN0aW9uIHk3dChkLGcpe2lm''@;'; put 'put ''KDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci10cmVlLW5vZGUiLDE1KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3QgeT1RdCgpLiRpbXBsaWNpdDtyZXR1cm4gYShRdCgpLmdyb3VwT25DbGljayh5KSl9KSxudCgxLCJwIiwxNiksQ3IoMiwiY2xyLWljb24iLDE3KSxZdCgz''@;'; put 'put ''KSxvdCgpKCl9aWYoMiZkKXtjb25zdCBoPVF0KCkuJGltcGxpY2l0LHY9UXQoKTtGaSgidGFibGUtYWN0aXZlIixoLkdST1VQVVJJPT09di5ncm91cFVyaSksdXQoMyksSmkoIiAiLGguR1JPVVBOQU1FLCIgIil9fWZ1bmN0aW9uIHc3dChkLGcpe2lmKDEmZCYmKEIwKDApLHJuKDEseTd0LDQs''@;'; put 'put ''MywiY2xyLXRyZWUtbm9kZSIsMTQpLFAwKCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDt1dCgxKSxUdCgibmdJZiIsIWguaGlkZGVuKX19ZnVuY3Rpb24gYjd0KGQsZyl7MSZkJiYobnQoMCwiZGl2IiwxOCkoMSwic3BhbiIsMTkpLFl0KDIsIiBMb2FkaW5nLi4uICIpLG90KCkoKSl9ZnVu''@;'; put 'put ''Y3Rpb24gXzd0KGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2IiwyMSkoMSwiZGl2IiwyMikoMiwidGFibGUiLDI0KSgzLCJ0Ym9keSIpKDQsInRyIikoNSwidGQiLDI1KSg2LCJwIiwyNikoNywiYiIpLFl0KDgpLG90KCkoKSgpKCksbnQoOSwidHIiKSgxMCwidGQiLDI1KSgxMSwiaSIpLFl0KDEy''@;'; put 'put ''KSxvdCgpKCkoKSgpKCkoKSgpKSwyJmQpe2NvbnN0IGg9UXQoMik7dXQoOCksamkoaC5ncm91cE5hbWUpLHV0KDQpLGppKGguZ3JvdXBEZXNjfHwibm8gZGVzY3JpcHRpb24iKX19ZnVuY3Rpb24gQzd0KGQsZyl7MSZkJiYobnQoMCwiaDUiKSxZdCgxLCJObyBNZW1iZXJzIFByZXNlbnQiKSxv''@;'; put 'put ''dCgpKX1mdW5jdGlvbiBrN3QoZCxnKXsxJmQmJihCMCgwKSxudCgxLCJ0ZCIsMzEpKDIsImIiKSxZdCgzLCJOQU1FIiksb3QoKSgpLG50KDQsInRkIiwzMSkoNSwiYiIpLFl0KDYsIkVNQUlMIiksb3QoKSgpLG50KDcsInRkIiwzMSkoOCwiYiIpLFl0KDksIkNSRUFURUQiKSxvdCgpKCksbnQo''@;'; put 'put ''MTAsInRkIiwzMikoMTEsImIiKSxZdCgxMiwiVVBEQVRFRCIpLG90KCkoKSxQMCgpKX1mdW5jdGlvbiBTN3QoZCxnKXsxJmQmJihCMCgwKSxudCgxLCJ0ZCIsMzEpKDIsImIiKSxZdCgzLCJJRCIpLG90KCkoKSxudCg0LCJ0ZCIsMzEpKDUsImIiKSxZdCg2LCJESVNQTEFZIE5BTUUiKSxvdCgp''@;'; put 'put ''KCksbnQoNywidGQiLDMxKSg4LCJiIiksWXQoOSwiVVNFUiBOQU1FIiksb3QoKSgpLFAwKCkpfWZ1bmN0aW9uIE03dChkLGcpe2lmKDEmZCYmKEIwKDApLG50KDEsInRkIiwzMiksWXQoMiksb3QoKSxudCgzLCJ0ZCIsMzIpLFl0KDQpLG90KCksbnQoNSwidGQiLDMyKSxZdCg2KSxvdCgpLG50''@;'; put 'put ''KDcsInRkIiwzMiksWXQoOCksb3QoKSxQMCgpKSwyJmQpe2NvbnN0IGg9UXQoKS4kaW1wbGljaXQ7dXQoMiksamkoaC5NRU1CRVJOQU1FKSx1dCgyKSxqaShoLkVNQUlMKSx1dCgyKSxqaShoLk1FTUJFUkNSRUFURUQpLHV0KDIpLGppKGguTUVNQkVSVVBEQVRFRCl9fWZ1bmN0aW9uIEU3dChk''@;'; put 'put ''LGcpe2lmKDEmZCYmKEIwKDApLG50KDEsInRkIiwzMiksWXQoMiksb3QoKSxudCgzLCJ0ZCIsMzIpLFl0KDQpLG90KCksbnQoNSwidGQiLDMyKSxZdCg2KSxvdCgpLFAwKCkpLDImZCl7Y29uc3QgaD1RdCgpLiRpbXBsaWNpdDt1dCgyKSxqaShoLklEKSx1dCgyKSxqaShoLkRJU1BMQVlOQU1F''@;'; put 'put ''KSx1dCgyKSxqaShoLlVTRVJOQU1FKX19ZnVuY3Rpb24geDd0KGQsZyl7aWYoMSZkJiYobnQoMCwidHIiLDMzKSxybigxLE03dCw5LDQsIm5nLWNvbnRhaW5lciIsNSkscm4oMixFN3QsNywzLCJuZy1jb250YWluZXIiLDUpLG90KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PVF0KDQp''@;'; put 'put ''O1R0KCJyb3V0ZXJMaW5rIiwiL3ZpZXcvdXNlcm5hdi91c2Vycy8iKyhoLlVSSU1FTXx8aC5JRCkpLHV0KDEpLFR0KCJuZ0lmIix2LnNlcnZlclR5cGU9PT12LlNlcnZlclR5cGUuU2FzOSksdXQoMSksVHQoIm5nSWYiLHYuc2VydmVyVHlwZT09PXYuU2VydmVyVHlwZS5TYXNqcyl9fWZ1bmN0''@;'; put 'put ''aW9uIFQ3dChkLGcpe2lmKDEmZCYmKG50KDAsInRhYmxlIiwyOSkoMSwidGhlYWQiKSgyLCJ0ciIpLHJuKDMsazd0LDEzLDAsIm5nLWNvbnRhaW5lciIsNSkscm4oNCxTN3QsMTAsMCwibmctY29udGFpbmVyIiw1KSxvdCgpKCksbnQoNSwidGJvZHkiKSxybig2LHg3dCwzLDMsInRyIiwzMCks''@;'; put 'put ''b3QoKSgpKSwyJmQpe2NvbnN0IGg9UXQoMyk7dXQoMyksVHQoIm5nSWYiLGguc2VydmVyVHlwZT09PWguU2VydmVyVHlwZS5TYXM5KSx1dCgxKSxUdCgibmdJZiIsaC5zZXJ2ZXJUeXBlPT09aC5TZXJ2ZXJUeXBlLlNhc2pzKSx1dCgyKSxUdCgibmdGb3JPZiIsaC5ncm91cE1lbWJlcnMpfX1m''@;'; put 'put ''dW5jdGlvbiBJN3QoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiKSgxLCJoMyIpLFl0KDIpLG90KCkscm4oMyxDN3QsMiwwLCJoNSIsNSksbnQoNCwiZGl2IiwyNykscm4oNSxUN3QsNywzLCJ0YWJsZSIsMjgpLG90KCkoKSksMiZkKXtjb25zdCBoPVF0KDIpO3V0KDIpLEppKCJNRU1CRVJTICgi''@;'; put 'put ''LGguZ3JvdXBNZW1iZXJDb3VudCwiKSIpLHV0KDEpLFR0KCJuZ0lmIiwwPT1oLmdyb3VwTWVtYmVyQ291bnQpLHV0KDIpLFR0KCJuZ0lmIiwwIT1oLmdyb3VwTWVtYmVyQ291bnQpfX1mdW5jdGlvbiBEN3QoZCxnKXsxJmQmJihudCgwLCJoNSIpLFl0KDEsIk5vIE1lbWJlcnMgUHJlc2VudCIp''@;'; put 'put ''LG90KCkpfWZ1bmN0aW9uIEw3dChkLGcpe2lmKDEmZCYmKG50KDAsInRyIiwzMykoMSwidGQiLDMyKSxZdCgyKSxvdCgpKCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDtUdCgicm91dGVyTGluayIsIi92aWV3L3VzZXJuYXYvdXNlcnMvIitoLk1FTUJFUklEKSx1dCgyKSxqaShoLk1FTUJF''@;'; put 'put ''Uk5BTUUpfX1mdW5jdGlvbiBPN3QoZCxnKXtpZigxJmQmJihudCgwLCJ0YWJsZSIsMjkpKDEsInRoZWFkIikoMiwidHIiKSgzLCJ0ZCIpKDQsImIiKSxZdCg1KSxvdCgpKCkoKSgpLG50KDYsInRib2R5Iikscm4oNyxMN3QsMywyLCJ0ciIsMzApLG90KCkoKSksMiZkKXtjb25zdCBoPVF0KDMp''@;'; put 'put ''O3V0KDUpLEppKCJNRU1CRVJTICgiLGguZ3JvdXBNZW1iZXJDb3VudCwiKSIpLHV0KDIpLFR0KCJuZ0Zvck9mIixoLmdyb3VwTWVtYmVycyl9fWZ1bmN0aW9uIFI3dChkLGcpe2lmKDEmZCYmKG50KDAsImRpdiIpKDEsImgzIiksWXQoMiksb3QoKSxybigzLEQ3dCwyLDAsImg1Iiw1KSxudCg0''@;'; put 'put ''LCJkaXYiLDI3KSxybig1LE83dCw4LDIsInRhYmxlIiwyOCksb3QoKSgpKSwyJmQpe2NvbnN0IGg9UXQoMik7dXQoMiksamkoaC5ncm91cE5hbWUpLHV0KDEpLFR0KCJuZ0lmIiwwPT1oLmdyb3VwTWVtYmVyQ291bnQpLHV0KDIpLFR0KCJuZ0lmIiwwIT1oLmdyb3VwTWVtYmVyQ291bnQpfX1m''@;'; put 'put ''dW5jdGlvbiBCN3QoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiKSxybigxLF83dCwxMywyLCJkaXYiLDIwKSxudCgyLCJkaXYiLDIxKSgzLCJkaXYiLDIyKSg0LCJkaXYiLDIzKSxybig1LEk3dCw2LDMsImRpdiIsNSkscm4oNixSN3QsNiwzLCJkaXYiLDUpLENyKDcsImJyIiksb3QoKSgpKCko''@;'; put 'put ''KSksMiZkKXtjb25zdCBoPVF0KCk7dXQoMSksVHQoIm5nSWYiLGguc2VydmVyVHlwZSE9PWguU2VydmVyVHlwZS5TYXNWaXlhKSx1dCg0KSxUdCgibmdJZiIsaC5zZXJ2ZXJUeXBlIT09aC5TZXJ2ZXJUeXBlLlNhc1ZpeWEpLHV0KDEpLFR0KCJuZ0lmIixoLnNlcnZlclR5cGU9PT1oLlNlcnZl''@;'; put 'put ''clR5cGUuU2FzVml5YSl9fWxldCBSTGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEkpe3RoaXMuc2FzU2VydmljZT1oLHRoaXMuaGVscGVyU2VydmljZT12LHRoaXMucm91dGVyPXksdGhpcy5sb2NhdGlvbj1DLHRoaXMucm91dGU9SSx0aGlzLmdyb3VwU2VhcmNoPSIiLHRo''@;'; put 'put ''aXMucGFyYW1QcmVzZW50PSExLHRoaXMucGFyYW1VUkk9IiIsdGhpcy5ncm91cFVyaT0iIix0aGlzLmdyb3VwTmFtZT0iIix0aGlzLmdyb3VwRGVzYz0iIix0aGlzLnNhc2pzQ29uZmlnPW5ldyBVMy5TQVNqc0NvbmZpZyx0aGlzLmlzVml5YT0hMSx0aGlzLmxvYWRpbmc9ITEsdGhpcy5TZXJ2''@;'; put 'put ''ZXJUeXBlPUh1LkQsdGhpcy5zYXNqc0NvbmZpZz10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKSx0aGlzLnNlcnZlclR5cGU9dGhpcy5zYXNTZXJ2aWNlLmdldFNlcnZlclR5cGUoKSwiU0FTVklZQSI9PT10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUmJih0aGlzLmlzVml5YT0h''@;'; put 'put ''MCl9bmdPbkluaXQoKXtuaS52aWV3ZXIuY3VycmVudFNlbGVjdGlvbj0idmlldy91c2VybmF2L2dyb3VwcyIsdm9pZCAwIT09dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMudXJpJiYodGhpcy5wYXJhbVByZXNlbnQ9ITAsdGhpcy5wYXJhbVVSST10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFt''@;'; put 'put ''cy51cmkpLG5pLnVzZXJuYXYuZ3JvdXBMaXN0JiYhdGhpcy5wYXJhbVByZXNlbnQ/KHRoaXMuZ3JvdXBzPW5pLnVzZXJuYXYuZ3JvdXBMaXN0LHRoaXMuZ3JvdXBTZWFyY2g9bmkudXNlcm5hdi5ncm91cFNlYXJjaCk6KHZvaWQgMD09PW5pLnVzZXJuYXYuZ3JvdXBMaXN0Pyh0aGlzLmxvYWRp''@;'; put 'put ''bmc9ITAsdGhpcy5pc1ZpeWE/ZmV0Y2godGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwrIi9pZGVudGl0aWVzL2dyb3Vwcz9saW1pdD0yMDAwIix7aGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19KS50aGVuKGg9PmgudGV4dCgpKS50aGVuKGg9PntsZXQgeT1KU09OLnBhcnNl''@;'; put 'put ''KGgpLml0ZW1zLm1hcChDPT4oe0dST1VQVVJJOkMuaWQsR1JPVVBOQU1FOkMubmFtZSxHUk9VUERFU0M6Qy5kZXNjcmlwdGlvbn0pKTt0aGlzLmxvYWRpbmc9ITEsdGhpcy5ncm91cHM9eSxuaS51c2VybmF2Lmdyb3VwTGlzdD15fSk6dGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy9n''@;'; put 'put ''ZXRncm91cHMiLG51bGwpLnRoZW4oaD0+e3RoaXMubG9hZGluZz0hMSx0aGlzLmdyb3Vwcz1oLmdyb3VwcyxuaS51c2VybmF2Lmdyb3VwTGlzdD1oLmdyb3Vwc30pKToodGhpcy5ncm91cHM9bmkudXNlcm5hdi5ncm91cExpc3QsdGhpcy5ncm91cFNlYXJjaD1uaS51c2VybmF2Lmdyb3VwU2Vh''@;'; put 'put ''cmNoKSx0aGlzLnBhcmFtUHJlc2VudCYmKHRoaXMubG9hZGluZz0hMCx0aGlzLmlzVml5YT9mZXRjaCh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCsiL2lkZW50aXRpZXMvZ3JvdXBzLyIrdGhpcy5wYXJhbVVSSSsiL21lbWJlcnM/bGltaXQ9MjAwMCIse2hlYWRlcnM6e0FjY2VwdDoiYXBw''@;'; put 'put ''bGljYXRpb24vanNvbiJ9fSkudGhlbihoPT5oLnRleHQoKSkudGhlbihoPT57bGV0IHY9SlNPTi5wYXJzZShoKTt0aGlzLmxvYWRpbmc9ITE7bGV0IHk9di5pdGVtcy5tYXAoQz0+KHtNRU1CRVJOQU1FOkMubmFtZSxNRU1CRVJJRDpDLmlkfSkpO3RoaXMuZ3JvdXBNZW1iZXJzPXksdGhpcy5n''@;'; put 'put ''cm91cE1lbWJlckNvdW50PXkubGVuZ3RoLHRoaXMuZ3JvdXBVcmk9dGhpcy5wYXJhbVVSSSx0aGlzLmdyb3VwTmFtZT10aGlzLnBhcmFtVVJJfSk6dGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJuYXYvdXNlcm1lbWJlcnNieWdyb3VwIix7aXdhbnQ6W3tncm91cGlkOnRoaXMucGFyYW1V''@;'; put 'put ''Ukl9XX0pLnRoZW4odj0+e3RoaXMuZ3JvdXBNZW1iZXJzPXYuc2FzbWVtYmVycyx0aGlzLmdyb3VwTWVtYmVyQ291bnQ9di5zYXNtZW1iZXJzLmxlbmd0aCx2b2lkIDAhPT12LnNhc21lbWJlcnNbMF0mJih0aGlzLmxvYWRpbmc9ITEsdGhpcy5ncm91cFVyaT12LnNhc21lbWJlcnNbMF0uVVJJ''@;'; put 'put ''TUVNfHx0aGlzLnBhcmFtVVJJLHRoaXMuZ3JvdXBOYW1lPXYuc2FzbWVtYmVyc1swXS5HUk9VUE5BTUUsdGhpcy5ncm91cERlc2M9di5zYXNtZW1iZXJzWzBdLkdST1VQREVTQyx0aGlzLmdyb3VwTmFtZXx8KHRoaXMuZ3JvdXBOYW1lPXRoaXMucGFyYW1VUkkpKX0pKSl9Z3JvdXBMaXN0T25G''@;'; put 'put ''aWx0ZXIoKXt0aGlzLmhlbHBlclNlcnZpY2UubGlicmFyeU9uRmlsdGVyKHRoaXMuZ3JvdXBzLHRoaXMuZ3JvdXBTZWFyY2gsIkdST1VQTkFNRSIpLG5pLnVzZXJuYXYuZ3JvdXBTZWFyY2g9dGhpcy5ncm91cFNlYXJjaH1ncm91cE9uQ2xpY2soaCl7dGhpcy5sb2FkaW5nPSEwO2xldCB2PXRo''@;'; put 'put ''aXMucm91dGVyLnVybDt0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0aGlzLnBhcmFtUHJlc2VudD92LnNsaWNlKDAsdi5sYXN0SW5kZXhPZigiLyIpKSsiLyIrZW5jb2RlVVJJKGguR1JPVVBVUkkpOnYrIi8iK2VuY29kZVVSSShoLkdST1VQVVJJKSksdGhpcy5pc1ZpeWE/ZmV0Y2godGhp''@;'; put 'put ''cy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwrIi9pZGVudGl0aWVzL2dyb3Vwcy8iK2guR1JPVVBVUkkrIi9tZW1iZXJzP2xpbWl0PTIwMDAiLHtoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifX0pLnRoZW4oeT0+eS50ZXh0KCkpLnRoZW4oeT0+e2xldCBDPUpTT04ucGFyc2UoeSk7''@;'; put 'put ''dGhpcy5sb2FkaW5nPSExLHRoaXMuZ3JvdXBVcmk9aC5HUk9VUFVSSSx0aGlzLmdyb3VwTmFtZT1oLkdST1VQTkFNRSx0aGlzLmdyb3VwRGVzYz1oLkdST1VQREVTQztsZXQgST1DLml0ZW1zLm1hcChaPT4oe01FTUJFUk5BTUU6Wi5uYW1lLE1FTUJFUklEOlouaWR9KSk7dGhpcy5ncm91cE1l''@;'; put 'put ''bWJlcnM9SSx0aGlzLmdyb3VwTWVtYmVyQ291bnQ9SS5sZW5ndGh9KTp0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgidXNlcm5hdi91c2VybWVtYmVyc2J5Z3JvdXAiLHtpd2FudDpbe2dyb3VwaWQ6aC5HUk9VUFVSSX1dfSkudGhlbihDPT57dGhpcy5sb2FkaW5nPSExLHRoaXMuZ3JvdXBVcmk9''@;'; put 'put ''aC5HUk9VUFVSSSx0aGlzLmdyb3VwTmFtZT1oLkdST1VQTkFNRSx0aGlzLmdyb3VwRGVzYz1oLkdST1VQREVTQyx0aGlzLmdyb3VwTWVtYmVycz1DLnNhc21lbWJlcnMsdGhpcy5ncm91cE1lbWJlckNvdW50PUMuc2FzbWVtYmVycy5sZW5ndGh9KX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0''@;'; put 'put ''aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoZzIpLEt0KFhjKSxLdChabCksS3QoVjYpLEt0KFB1KSl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC1ncm91cCJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6Nyx2YXJzOjQsY29uc3Rz''@;'; put 'put ''OltbMSwic2lkZWJhci1oZWlnaHQiXSxbImNsYXNzIiwic2VhcmNoLW5vZGUiLDQsIm5nSWYiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImNvbnRlbnQtYXJlYSJdLFsiY2xhc3MiLCJsb2FkaW5nU3Bpbm5lciIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzEsInNlYXJjaC1ub2RlIl0sWzEs''@;'; put 'put ''InRyZWUtc2VhcmNoLXdyYXBwZXIiXSxbImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIiLCJGaWx0ZXIgYnkgR3JvdXBzIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImtleXVwIl0sWyJzZWFyY2hMaWJUcmVlSW5wdXQi''@;'; put 'put ''LCIiXSxbInNoYXBlIiwic2VhcmNoIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayIsNCwibmdJZiJdLFsic2hhcGUiLCJzZWFyY2giXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIl0sWzMsInRhYmxlLWFjdGl2ZSIsImNsaWNrIiw0LCJuZ0lmIl0sWzMsImNsaWNrIl0s''@;'; put 'put ''WzEsIm0tMCIsImN1cnNvci1wb2ludGVyIiwibGlzdC1wYWRkaW5nIl0sWyJzaGFwZSIsInVzZXJzIl0sWzEsImxvYWRpbmdTcGlubmVyIl0sWzEsInNwaW5uZXIiXSxbImNsYXNzIiwiY2xyLXJvdyIsNCwibmdJZiJdLFsxLCJjbHItcm93Il0sWzEsImNsci1jb2wtOCJdLFsxLCJjYXJkIiwi''@;'; put 'put ''Z3JvdXAtZGF0YSJdLFsxLCJ0YWJsZSIsImdyb3VwLWluZm8iXSxbMSwibGVmdCJdLFsxLCJncm91cC1pbmZvLXRleHQiXSxbMSwidGFibGUtY29udGFpbmVyIl0sWyJjbGFzcyIsInRhYmxlIG1lbWJlci10YWJsZSIsNCwibmdJZiJdLFsxLCJ0YWJsZSIsIm1lbWJlci10YWJsZSJdLFszLCJy''@;'; put 'put ''b3V0ZXJMaW5rIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwid2lkdGgtMjUiXSxbMSwiIl0sWzMsInJvdXRlckxpbmsiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihudCgwLCJhcHAtc2lkZWJhciIsMCkoMSwiY2xyLXRyZWUiKSxybigyLEE3dCw2LDMsImNsci10cmVlLW5vZGUi''@;'; put 'put ''LDEpLHJuKDMsdzd0LDIsMSwibmctY29udGFpbmVyIiwyKSxvdCgpKCksbnQoNCwiZGl2IiwzKSxybig1LGI3dCwzLDAsImRpdiIsNCkscm4oNixCN3QsOCwzLCJkaXYiLDUpLG90KCkpLDImaCYmKHV0KDIpLFR0KCJuZ0lmIix2Lmdyb3VwcyksdXQoMSksVHQoIm5nRm9yT2YiLHYuZ3JvdXBz''@;'; put 'put ''KSx1dCgyKSxUdCgibmdJZiIsdi5sb2FkaW5nKSx1dCgxKSxUdCgibmdJZiIsdi5ncm91cE1lbWJlcnMmJiF2LmxvYWRpbmcpKX0sZGVwZW5kZW5jaWVzOlt4cyxObyxtMSxUcyxJcyxZNix5dixfZyx3bCxwdixNU10sc3R5bGVzOlsiLnNpZGViYXItaGVpZ2h0W19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XXtoZWlnaHQ6MTAwJX0uZ3JvdXAtaW5mby10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZTtmb250LXNpemU6MjBweH0uZ3JvdXAtaW5mb1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5O2JvcmRlcjoxcHggc29saWQgI2E3YTdhNztib3Jk''@;'; put 'put ''ZXItcmFkaXVzOjNweDtib3gtc2hhZG93OjAgMnB4IDVweCAjZGFkN2Q3fS5ncm91cC1pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRkW19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWFsaWduOmNlbnRlcn0uZ3JvdXAtZGF0YVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjoj''@;'; put 'put ''ZjlmOWY5O2JvcmRlcjoxcHggc29saWQgI2E3YTdhNztib3JkZXItcmFkaXVzOjNweDtib3gtc2hhZG93OjAgMnB4IDVweCAjZGFkN2Q3fS5ncm91cC1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OmF1dG99Lmdyb3VwLWRhdGFbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVdLCAuZ3JvdXAtZGF0YVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpjZW50ZXJ9Lmdyb3VwLWRhdGFbX25nY29udGVudC0lQ09NUCVdICAgLm1lbWJlci10YWJsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3Vu''@;'; put 'put ''ZC1jb2xvcjojZjlmOWY5O3dpZHRoOjEwMCV9Lmdyb3VwLWRhdGFbX25nY29udGVudC0lQ09NUCVdICAgLm1lbWJlci10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aGVhZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZGFkYWRhfS5ncm91cC1kYXRhW19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSAgIC5tZW1iZXItdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGJvZHlbX25nY29udGVudC0lQ09NUCVdICAgdHJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNjtjdXJzb3I6cG9pbnRlcn0udGFibGUtY29udGFpbmVyW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXXtvdmVyZmxvdzphdXRvfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KXsuZ3JvdXAtZGF0YVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDp1bnNldCFpbXBvcnRhbnR9fSJdfSksZH0pKCk7dmFyIExtZT1MKDk5MjEpLFA3dD1MKDIwMzMpO2Z1''@;'; put 'put ''bmN0aW9uIEY3dChkLGcpezEmZCYmQ3IoMCwiY2xyLWljb24iLDI4KX1mdW5jdGlvbiBIN3QoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJjbHItaWNvbiIsMjkpLEduKCJjbGljayIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KDIpO3JldHVybiB5LmxpYnJhcmllc1NlYXJj''@;'; put 'put ''aD0iIixhKHkubGlicmFyeU9uRmlsdGVyKCkpfSksb3QoKX19ZnVuY3Rpb24gTjd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiY2xyLXRyZWUtbm9kZSIsMjIpKDEsImRpdiIsMjMpKDIsImlucHV0IiwyNCwyNSksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVy''@;'; put 'put ''biBpdChoKSxhKFF0KCkubGlicmFyaWVzU2VhcmNoPXkpfSkoImtleXVwIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkubGlicmFyeU9uRmlsdGVyKCkpfSksb3QoKSxybig0LEY3dCwxLDAsImNsci1pY29uIiwyNikscm4oNSxIN3QsMSwwLCJjbHItaWNvbiIsMjcpLG90KCkoKX1p''@;'; put 'put ''ZigyJmQpe2NvbnN0IGg9dmEoMyksdj1RdCgpO3V0KDIpLFR0KCJuZ01vZGVsIix2LmxpYnJhcmllc1NlYXJjaCksdXQoMiksVHQoIm5nSWYiLGgudmFsdWUubGVuZ3RoPDEpLHV0KDEpLFR0KCJuZ0lmIixoLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gVjd0KGQsZyl7MSZkJiZDcigwLCJj''@;'; put 'put ''bHItaWNvbiIsMjgpfWZ1bmN0aW9uIGo3dChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci1pY29uIiwyOSksR24oImNsaWNrIixmdW5jdGlvbigpe2l0KGgpLFF0KCk7Y29uc3QgeT12YSgzKSxDPVF0KDIpLiRpbXBsaWNpdCxJPVF0KCk7cmV0dXJuIHkudmFsdWU9IiIsQy5z''@;'; put 'put ''ZWFyY2hTdHJpbmc9IiIsYShJLnRyZWVPbkZpbHRlcihDLCJ0YWJsZXMuVEFCTEVOQU1FIikpfSksb3QoKX19ZnVuY3Rpb24gWjd0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiY2xyLXRyZWUtbm9kZSIsMjIpKDEsImRpdiIsMjMpKDIsImlucHV0IiwzNSwzNiksR24oIm5nTW9k''@;'; put 'put ''ZWxDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KDIpLiRpbXBsaWNpdC5zZWFyY2hTdHJpbmc9eSl9KSgia2V5dXAiLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3QgeT1RdCgyKS4kaW1wbGljaXQ7cmV0dXJuIGEoUXQoKS50cmVlT25GaWx0ZXIoeSwidGFibGVzLlRBQkxFTkFN''@;'; put 'put ''RSIpKX0pLG90KCkscm4oNCxWN3QsMSwwLCJjbHItaWNvbiIsMjYpLHJuKDUsajd0LDEsMCwiY2xyLWljb24iLDI3KSxvdCgpKCl9aWYoMiZkKXtjb25zdCBoPXZhKDMpLHY9UXQoMikuJGltcGxpY2l0O3V0KDIpLFR0KCJuZ01vZGVsIix2LnNlYXJjaFN0cmluZyksdXQoMiksVHQoIm5nSWYi''@;'; put 'put ''LGgudmFsdWUubGVuZ3RoPDEpLHV0KDEpLFR0KCJuZ0lmIixoLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gejd0KGQsZyl7MSZkJiZDcigwLCJjbHItaWNvbiIsMjgpfWZ1bmN0aW9uIEc3dChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci1pY29uIiwyOSksR24oImNsaWNr''@;'; put 'put ''IixmdW5jdGlvbigpe2l0KGgpLFF0KCk7Y29uc3QgeT12YSgzKSxDPVF0KCkuJGltcGxpY2l0LEk9UXQoMyk7cmV0dXJuIHkudmFsdWU9IiIsQy5zZWFyY2hTdHJpbmc9IiIsYShJLnRyZWVPbkZpbHRlcihDLCJjb2x1bW5zLkNPTE5BTUUiKSl9KSxvdCgpfX1mdW5jdGlvbiBXN3QoZCxnKXtp''@;'; put 'put ''ZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJjbHItdHJlZS1ub2RlIiwyMikoMSwiZGl2IiwyMykoMiwiaW5wdXQiLDM5LDM2KSxHbigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoKS4kaW1wbGljaXQuc2VhcmNoU3RyaW5nPXkpfSkoImtleXVwIixmdW5j''@;'; put 'put ''dGlvbigpe2l0KGgpO2NvbnN0IHk9UXQoKS4kaW1wbGljaXQ7cmV0dXJuIGEoUXQoMykudHJlZU9uRmlsdGVyKHksImNvbHVtbnMuQ09MTkFNRSIpKX0pLG90KCkscm4oNCx6N3QsMSwwLCJjbHItaWNvbiIsMjYpLHJuKDUsRzd0LDEsMCwiY2xyLWljb24iLDI3KSxvdCgpKCl9aWYoMiZkKXtj''@;'; put 'put ''b25zdCBoPXZhKDMpLHY9UXQoKS4kaW1wbGljaXQ7dXQoMiksVHQoIm5nTW9kZWwiLHYuc2VhcmNoU3RyaW5nKSx1dCgyKSxUdCgibmdJZiIsaC52YWx1ZS5sZW5ndGg8MSksdXQoMSksVHQoIm5nSWYiLGgudmFsdWUubGVuZ3RoPjApfX1mdW5jdGlvbiBZN3QoZCxnKXtpZigxJmQpe2NvbnN0''@;'; put 'put ''IGg9d2koKTtudCgwLCJjbHItdHJlZS1ub2RlIikoMSwiYnV0dG9uIiw0MCksR24oImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IEM9aXQoaCkuJGltcGxpY2l0LEk9UXQoKS4kaW1wbGljaXQsWj1RdCgyKS4kaW1wbGljaXQ7cmV0dXJuIGEoUXQoKS5jb2x1bW5PbkNsaWNrKEMsWixJKSl9KSxD''@;'; put 'put ''cigyLCJjbHItaWNvbiIsNDEpLFl0KDMpLG90KCkoKX1pZigyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1RdCg0KTt1dCgxKSxGaSgiY29sdW1uLWFjdGl2ZSIsdi5saWJDb2x1bW5BY3RpdmUoaC5DT0xVUkkpKSx1dCgyKSxKaSgiICIsaC5DT0xOQU1FLCIgIil9fWZ1bmN0aW9uIFU3dChk''@;'; put 'put ''LGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci10cmVlLW5vZGUiLDMxKSxHbigiY2xpY2siLGZ1bmN0aW9uKHkpe2NvbnN0IEk9aXQoaCkuJGltcGxpY2l0LFo9UXQoMikuJGltcGxpY2l0O3JldHVybiBhKFF0KCkudHJlZU5vZGVDbGlja2VkKHksSSxaLnRhYmxlcykpfSkoImNs''@;'; put 'put ''ckV4cGFuZGVkQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gYShpdChoKS4kaW1wbGljaXQuZXhwYW5kZWQ9eSl9KSxudCgxLCJwIiwzNyksR24oImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IEM9aXQoaCkuJGltcGxpY2l0LEk9UXQoMikuJGltcGxpY2l0O3JldHVybiBhKFF0KCkudGFibGVP''@;'; put 'put ''bkNsaWNrKEMuVEFCTEVVUkksQyxJKSl9KSxDcigyLCJjbHItaWNvbiIsMzgpLFl0KDMpLG90KCkscm4oNCxXN3QsNiwzLCJjbHItdHJlZS1ub2RlIiwxKSxybig1LFk3dCw0LDMsImNsci10cmVlLW5vZGUiLDIpLG90KCl9aWYoMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O0ZpKCJjbHItZXhw''@;'; put 'put ''YW5kZWQiLGguZXhwYW5kZWQpLFR0KCJjbHJFeHBhbmRlZCIsaC5leHBhbmRlZCkoImNsckxvYWRpbmciLGgubG9hZGluZ0NvbHVtbnMmJiFoLmNvbHVtbnMpLHV0KDEpLFR0KCJpZCIsaC5UQUJMRVVSSSksdXQoMiksSmkoIiAiLGguVEFCTEVOQU1FLCIgIiksdXQoMSksVHQoIm5nSWYiLGgu''@;'; put 'put ''Y29sdW1ucyksdXQoMSksVHQoIm5nRm9yT2YiLGguY29sdW1ucyl9fWZ1bmN0aW9uIFE3dChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci10cmVlLW5vZGUiLDMxKSxHbigiY2xpY2siLGZ1bmN0aW9uKHkpe2l0KGgpO2NvbnN0IEM9UXQoKS4kaW1wbGljaXQsST1RdCgpO3Jl''@;'; put 'put ''dHVybiBhKEkudHJlZU5vZGVDbGlja2VkKHksQyxJLmxpYnJhcnlMaXN0KSl9KSgiY2xyRXhwYW5kZWRDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KCkuJGltcGxpY2l0LmV4cGFuZGVkPXkpfSksbnQoMSwicCIsMzIpLEduKCJjbGljayIsZnVuY3Rpb24oKXtpdChoKTtj''@;'; put 'put ''b25zdCB5PVF0KCkuJGltcGxpY2l0LEM9UXQoKTtyZXR1cm4gQy5saWI9eS5MSUJSQVJZSUQsYShDLmxpYnJhcnlPbkNsaWNrKEMubGlifHwiIix5KSl9KSxDcigyLCJjbHItaWNvbiIsMzMpLFl0KDMpLG90KCkscm4oNCxaN3QsNiwzLCJjbHItdHJlZS1ub2RlIiwxKSxybig1LFU3dCw2LDgs''@;'; put 'put ''ImNsci10cmVlLW5vZGUiLDM0KSxvdCgpfWlmKDImZCl7Y29uc3QgaD1RdCgpLiRpbXBsaWNpdDtGaSgiY2xyLWV4cGFuZGVkIixoLmV4cGFuZGVkKSxUdCgiY2xyRXhwYW5kZWQiLGguZXhwYW5kZWQpKCJjbHJMb2FkaW5nIixoLmxvYWRpbmdUYWJsZXMmJiFoLnRhYmxlcyksdXQoMyksSmko''@;'; put 'put ''IiAiLGguTElCUkFSWU5BTUUsIiAiKSx1dCgxKSxUdCgibmdJZiIsaC50YWJsZXMpLHV0KDEpLFR0KCJuZ0Zvck9mIixoLnRhYmxlcyl9fWZ1bmN0aW9uIEo3dChkLGcpe2lmKDEmZCYmKEIwKDApLHJuKDEsUTd0LDYsNywiY2xyLXRyZWUtbm9kZSIsMzApLFAwKCkpLDImZCl7Y29uc3QgaD1n''@;'; put 'put ''LiRpbXBsaWNpdDt1dCgxKSxUdCgibmdJZiIsIWguaGlkZGVuJiZoLmluRm9yZWdyb3VuZCl9fWZ1bmN0aW9uIFg3dChkLGcpezEmZCYmKG50KDAsImRpdiIsNDIpKDEsInNwYW4iLDQzKSxZdCgyLCIgTG9hZGluZy4uLiAiKSxvdCgpKCkpfWZ1bmN0aW9uIEs3dChkLGcpezEmZCYmKG50KDAs''@;'; put 'put ''ImRpdiIsNDQpLENyKDEsImNsci1pY29uIiw0NSksbnQoMiwiaDMiLDQ2KSxZdCgzLCJQbGVhc2Ugc2VsZWN0IGEgY29sdW1uIG9yIHRhYmxlIiksb3QoKSgpKX1mdW5jdGlvbiAkN3QoZCxnKXtpZigxJmQmJihudCgwLCJoMyIsNTUpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgzKTt1''@;'; put 'put ''dCgxKSxKaSgiICIsaC5jdXJyZW50TGluZWFnZVBhdGhDb2x1bW4/aC5jdXJyZW50TGluZWFnZVBhdGhMaWJUYWJsZSsiLiIraC5jdXJyZW50TGluZWFnZVBhdGhDb2x1bW46aC5jdXJyZW50TGluZWFnZVBhdGhMaWJUYWJsZSwiICIpfX1mdW5jdGlvbiBxN3QoZCxnKXtpZigxJmQmJihudCgw''@;'; put 'put ''LCJkaXYiLDUzKSxybigxLCQ3dCwyLDEsImgzIiw1NCksb3QoKSksMiZkKXtjb25zdCBoPVF0KDIpO3V0KDEpLFR0KCJuZ0lmIiwhaC5jdXJyZW50TGluZWFnZVBhdGhDb2x1bW4mJiFoLmN1cnJlbnRMaW5lYWdlUGF0aExpYlRhYmxlKX19ZnVuY3Rpb24gZXZ0KGQsZyl7aWYoMSZkJiYobnQo''@;'; put 'put ''MCwic3BhbiIpLFl0KDEpLG50KDIsImEiLDU2KSxZdCgzKSxvdCgpLFl0KDQpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgyKTt1dCgxKSxKaSgiICIsaC5saW5lYWdlVGFibGVOYW1lLnNwbGl0KCIuIilbMF0sIi4iKSx1dCgxKSxUdCgicm91dGVyTGluayIsIi92aWV3L2RhdGEvIitoLmxpbmVh''@;'; put 'put ''Z2VUYWJsZU5hbWUpLHV0KDEpLGppKGgubGluZWFnZVRhYmxlTmFtZS5zcGxpdCgiLiIpWzFdKSx1dCgxKSxKaSgiIixoLmxpbmVhZ2VDb2x1bW5OYW1lLmxlbmd0aD4wPyIuIitoLmxpbmVhZ2VDb2x1bW5OYW1lOiIiLCIgIil9fWZ1bmN0aW9uIHR2dChkLGcpe2lmKDEmZCl7Y29uc3QgaD13''@;'; put 'put ''aSgpO250KDAsImRpdiIsNjYpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCg0KS5kb3dubG9hZFBORygpKX0pLFl0KDEsIiBQTkcgIiksb3QoKX19ZnVuY3Rpb24gbnZ0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiZGl2Iiw2NiksR24oImNsaWNrIixm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KDQpLmRvd25sb2FkQ1NWKCkpfSksWXQoMSwiIENTViAiKSxvdCgpfX1mdW5jdGlvbiBydnQoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJjbHItZHJvcGRvd24tbWVudSIsNjUpKDEsImRpdiIsNjYpLEduKCJjbGljayIsZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gaXQoaCksYShRdCgzKS5kb3dubG9hZFNWRygpKX0pLFl0KDIsIlNWRyIpLG90KCkscm4oMyx0dnQsMiwwLCJkaXYiLDY3KSxudCg0LCJkaXYiLDY2KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoMykuZG93bmxvYWREb3QoKSl9KSxZdCg1LCJE''@;'; put 'put ''b3QiKSxvdCgpLHJuKDYsbnZ0LDIsMCwiZGl2Iiw2Nyksb3QoKX1pZigyJmQpe2NvbnN0IGg9UXQoMyk7dXQoMyksVHQoIm5nSWYiLCFoLmhlbHBlclNlcnZpY2UuaXNNaWNyb3NvZnQpLHV0KDMpLFR0KCJuZ0lmIixoLmZsYXRkYXRhKX19ZnVuY3Rpb24gaXZ0KGQsZyl7aWYoMSZkKXtjb25z''@;'; put 'put ''dCBoPXdpKCk7bnQoMCwiY2xyLWNoZWNrYm94LXdyYXBwZXIiLDY4KSgxLCJpbnB1dCIsNjkpLEduKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoMykuZ2VuZXJhdGVHcmFwaCgpKX0pKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gaXQoaCksYShRdCgz''@;'; put 'put ''KS5yZWZyZXNoQ2FjaGU9eSl9KSxvdCgpLG50KDIsImxhYmVsIiksWXQoMywiUmVmcmVzaCBDYWNoZSIpLG90KCkoKX1pZigyJmQpe2NvbnN0IGg9UXQoMyk7dXQoMSksVHQoIm5nTW9kZWwiLGgucmVmcmVzaENhY2hlKX19ZnVuY3Rpb24gb3Z0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7''@;'; put 'put ''bnQoMCwiZGl2Iiw1NykoMSwiYnV0dG9uIiw1OCksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KDIpLmxpbWl0RG90RGVwdGg9ITApfSksWXQoMiwiIExpbWl0IGRlcHRoICIpLG90KCksbnQoMywiZGl2Iiw1OSkoNCwiZGl2Iiw2MCksR24oImNsaWNrIixmdW5jdGlv''@;'; put 'put ''bigpe2l0KGgpO2NvbnN0IHk9UXQoMik7cmV0dXJuIHkuZm9yd2FyZExpbmVhZ2U9ITEsYSh5LnJvdXRlci51cmwuaW5jbHVkZXMoImNvbHVtbiIpP3kub25HZW5lcmF0ZUNsaWNrKCk6eS5vbkdlbmVyYXRlR3JhcGhUYWJsZUNsaWNrKCkpfSksQ3IoNSwiaW5wdXQiLDYxKSxudCg2LCJsYWJl''@;'; put 'put ''bCIpLFl0KDcsIkJhY2t3YXJkIiksb3QoKSgpLG50KDgsImRpdiIsNjApLEduKCJjbGljayIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KDIpO3JldHVybiB5LmZvcndhcmRMaW5lYWdlPSEwLGEoeS5yb3V0ZXIudXJsLmluY2x1ZGVzKCJjb2x1bW4iKT95Lm9uR2VuZXJhdGVDbGljaygp''@;'; put 'put ''Onkub25HZW5lcmF0ZUdyYXBoVGFibGVDbGljaygpKX0pLENyKDksImlucHV0Iiw2MSksbnQoMTAsImxhYmVsIiksWXQoMTEsIkZvcndhcmQiKSxvdCgpKCkoKSxudCgxMiwiY2xyLWRyb3Bkb3duIiw2MikoMTMsImJ1dHRvbiIsNjMpLFl0KDE0LCIgRG93bmxvYWQgIiksQ3IoMTUsImNsci1p''@;'; put 'put ''Y29uIiwxOSksb3QoKSxybigxNixydnQsNywyLCJjbHItZHJvcGRvd24tbWVudSIsMjApLG90KCkscm4oMTcsaXZ0LDQsMSwiY2xyLWNoZWNrYm94LXdyYXBwZXIiLDY0KSxvdCgpfWlmKDImZCl7Y29uc3QgaD1RdCgyKTt1dCg1KSxUdCgiY2hlY2tlZCIsIWguZm9yd2FyZExpbmVhZ2UpLHV0''@;'; put 'put ''KDQpLFR0KCJjaGVja2VkIixoLmZvcndhcmRMaW5lYWdlKSx1dCg0KSxUdCgiZGlzYWJsZWQiLCFoLmNvbHVtbiYmIWgudGFibGUpLHV0KDQpLFR0KCJuZ0lmIixoLmNvbHVtbil9fWZ1bmN0aW9uIGF2dChkLGcpezEmZCYmKG50KDAsInNwYW4iLDczKSxZdCgxLCIgTG9hZGluZy4uLiAiKSxv''@;'; put 'put ''dCgpKX1mdW5jdGlvbiBsdnQoZCxnKXsxJmQmJkNyKDAsInNwYW4iLDQzKX1mdW5jdGlvbiBzdnQoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDc0KSgxLCJkaXYiLDc1KSxybigyLGx2dCwxLDAsInNwYW4iLDc2KSxvdCgpLENyKDMsImRpdiIsNzcpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgz''@;'; put 'put ''KTt1dCgyKSxUdCgibmdJZiIsaC5ncmFwaFJlbmRlcmluZyl9fWZ1bmN0aW9uIHV2dChkLGcpe2lmKDEmZCYmKG50KDAsImRpdiIpKDEsImRpdiIsNzApLHJuKDIsYXZ0LDIsMCwic3BhbiIsNzEpLHJuKDMsc3Z0LDQsMSwiZGl2Iiw3Miksb3QoKSgpKSwyJmQpe2NvbnN0IGg9UXQoMik7Rmko''@;'; put 'put ''Im10LTIiLGgudGFibGVGbGFnKSx1dCgyKSxUdCgibmdJZiIsaC5ncmFwaExvYWRpbmcpLHV0KDEpLFR0KCJuZ0lmIiwhaC5ncmFwaExvYWRpbmcpfX1mdW5jdGlvbiBjdnQoZCxnKXtpZigxJmQmJihCMCgwKSxybigxLHE3dCwyLDEsImRpdiIsNDcpLG50KDIsImRpdiIsNDgpKDMsInNlY3Rp''@;'; put 'put ''b24iLDQ5KSg0LCJkaXYiLDUwKSxybig1LGV2dCw1LDQsInNwYW4iLDcpLG90KCkscm4oNixvdnQsMTgsNCwiZGl2Iiw1MSksb3QoKSxybig3LHV2dCw0LDQsImRpdiIsNTIpLG90KCksUDAoKSksMiZkKXtjb25zdCBoPVF0KCk7dXQoMSksVHQoIm5nSWYiLCFoLmdyYXBoQ29udGFpbmVyKSx1''@;'; put 'put ''dCg0KSxUdCgibmdJZiIsaC5saW5lYWdlVGFibGVOYW1lLmxlbmd0aD4wKSx1dCgxKSxUdCgibmdJZiIsaC5ncmFwaENvbnRhaW5lciksdXQoMSksVHQoIm5nSWYiLGguZ3JhcGhDb250YWluZXIpfX1mdW5jdGlvbiBmdnQoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJkaXYiLDY2''@;'; put 'put ''KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoMikucmVuZGVyVG9Eb3dubG9hZCgiUE5HIikpfSksWXQoMSwiIFBORyAiKSxvdCgpfX1mdW5jdGlvbiBodnQoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJjbHItZHJvcGRvd24tbWVudSIsNjUpKDEsImRp''@;'; put 'put ''diIsNjYpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgpLnJlbmRlclRvRG93bmxvYWQoIlNWRyIpKX0pLFl0KDIsIlNWRyIpLG90KCkscm4oMyxmdnQsMiwwLCJkaXYiLDY3KSxudCg0LCJkaXYiLDY2KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3Qg''@;'; put 'put ''eT1RdCgpO3JldHVybiB5LmRvd25sb2FkRG90KCksYSh5LmNhbmNlbFJlbmRlcmluZ0dyYXBoKCkpfSksWXQoNSwiIERvdCAiKSxvdCgpKCl9aWYoMiZkKXtjb25zdCBoPVF0KCk7dXQoMyksVHQoIm5nSWYiLCFoLmhlbHBlclNlcnZpY2UuaXNNaWNyb3NvZnQpfX1jb25zdCBkdnQ9TCgxNTQz''@;'; put 'put ''OSk7bGV0IFpuZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSxaLHVlKXt0aGlzLnNhc1NlcnZpY2U9aCx0aGlzLnJvdXRlPXYsdGhpcy5yb3V0ZXI9eSx0aGlzLmxvY2F0aW9uPUMsdGhpcy5ldmVudFNlcnZpY2U9SSx0aGlzLmxvZ2dlclNlcnZpY2U9Wix0aGlzLmhlbHBl''@;'; put 'put ''clNlcnZpY2U9dWUsdGhpcy5zd2l0Y2hGbGFnPSExLHRoaXMudGFibGVGbGFnPSEwLHRoaXMuZm9yd2FyZExpbmVhZ2U9ITEsdGhpcy5mbGF0ZGF0YT1bXSx0aGlzLmdyYXBoTG9hZGluZz0hMSx0aGlzLmdyYXBoUmVuZGVyaW5nPSExLHRoaXMuZ3JhcGhDb250YWluZXI9ITEsdGhpcy52aXpJ''@;'; put 'put ''bnB1dD0iIix0aGlzLmxpYnJhcmllc1BhZ2luZz0hMSx0aGlzLmxpYnJhcnlUYWJsZXNSZWY9IiIsdGhpcy5saWJyYXJpZXNTZWFyY2g9IiIsdGhpcy50YWJsZUNvbHVtbnNSZWY9IiIsdGhpcy5saW5lYWdlVGFibGVOYW1lPSIiLHRoaXMubGluZWFnZUNvbHVtbk5hbWU9IiIsdGhpcy5saWI9''@;'; put 'put ''bnVsbCx0aGlzLnRhYmxlRGlzYWJsZT0hMSx0aGlzLnJlZnJlc2hDYWNoZT0hMSx0aGlzLmN1cnJlbnRMaW5lYWdlUGF0aExpYlRhYmxlPSIiLHRoaXMuY3VycmVudExpbmVhZ2VQYXRoQ29sdW1uPSIiLHRoaXMubGFyZ2VEb3RGaWxlTGluZXM9bnVsbCx0aGlzLmxhcmdlRG90RmlsZUxpbWl0''@;'; put 'put ''PTFlMyx0aGlzLmxpbWl0RG90RGVwdGg9ITEsdGhpcy5wZW5kaW5nUmVuZGVyRG93bmxvYWQ9bnVsbCx0aGlzLmRlYm91bmNlVGltZT0yMDB9c2hvd1RhYmxlU2VsZWN0KCl7dGhpcy50YWJsZUZsYWc9IXRoaXMudGFibGVGbGFnfXRhYmxlT25DbGljayhoLHYseSxDPSExKXtyZXR1cm4gbm8o''@;'; put 'put ''dGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3YuY29sdW1ucz8odi5leHBhbmRlZD0hdi5leHBhbmRlZCwhMD09PXYuZXhwYW5kZWQmJih0aGlzLnRhYmxlPWgsQ3x8dGhpcy5vbkdlbmVyYXRlR3JhcGhUYWJsZUNsaWNrKCkpKToodi5leHBhbmRlZD0hdi5leHBhbmRlZCx2LmxvYWRp''@;'; put 'put ''bmdDb2x1bW5zPSEwLHRoaXMudGFibGU9aCx0aGlzLmN1cnJlbnRMaW5lYWdlUGF0aExpYlRhYmxlPXYuTElCTkFNRSsiLiIrdi5UQUJMRU5BTUUseWllbGQgdGhpcy5zZWxlY3RUYWJsZShoLHYpLEN8fHRoaXMub25HZW5lcmF0ZUdyYXBoVGFibGVDbGljaygpKSx0aGlzLmNvbGxhcHNlVHJl''@;'; put 'put ''ZUl0ZW1zKHkudGFibGVzLHYpfSl9c2VsZWN0VGFibGUoaCx2KXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMuY29sdW1uc0xpc3Q9W107bGV0IHk9e1NBU0NvbnRyb2xUYWJsZTpbe3RhYmxldXJpOmh9XX07eWllbGQgdGhpcy5zYXNTZXJ2aWNlLnJlcXVl''@;'; put 'put ''c3QoImxpbmVhZ2UvZ2V0bWV0YWNvbHMiLHkpLnRoZW4oQz0+e3RoaXMuY29sdW1uc0xpc3Q9Qy5tZXRhY29scyx0aGlzLmNvbHVtbnNMaXN0JiZ0aGlzLmNvbHVtbnNMaXN0Lmxlbmd0aD4wJiYodi5jb2x1bW5zPXRoaXMuY29sdW1uc0xpc3Qsdi5leHBhbmRlZD0hMCx2LmxvYWRpbmdDb2x1''@;'; put 'put ''bW5zPSExKX0pLmNhdGNoKEM9PkMpLHRoaXMuc2V0R2xvYmFsRGF0YSgpfSl9bG9hZE1vcmVMaWJyYXJpZXMoKXt0aGlzLmxpYnJhcmllc1BhZ2luZ3x8KHRoaXMubGlicmFyaWVzUGFnaW5nPSEwLHRoaXMuaGVscGVyU2VydmljZS5kaXNwbGF5TGlicmFyaWVzKHRoaXMubGlicmFyeUxpc3Qs''@;'; put 'put ''ITApLHRoaXMubGlicmFyaWVzUGFnaW5nPSExKX1jb2xsYXBzZVRyZWVJdGVtcyhoLHYpe2guZm9yRWFjaCh5PT57SlNPTi5zdHJpbmdpZnkoeSkhPT1KU09OLnN0cmluZ2lmeSh2KSYmKHkuZXhwYW5kZWQ9ITEpfSl9dHJlZU5vZGVDbGlja2VkKGgsdix5KXsiQ29sbGFwc2UiPT09aC50YXJn''@;'; put 'put ''ZXQudGl0bGUmJnRoaXMuY29sbGFwc2VUcmVlSXRlbXMoeSx2KX1saWJyYXJ5T25DbGljayhoLHYpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7di50YWJsZXM/di5leHBhbmRlZD0hdi5leHBhbmRlZDoodi5sb2FkaW5nVGFibGVzPSEwLHlpZWxkIHRoaXMuc2Vs''@;'; put 'put ''ZWN0TGlicmFyeShoLHYpKSx0aGlzLmNvbGxhcHNlVHJlZUl0ZW1zKHRoaXMubGlicmFyeUxpc3Qsdil9KX1zZWxlY3RMaWJyYXJ5KGgsdil7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt0aGlzLnRhYmxlc0xpc3Q9W10sdGhpcy5jb2x1bW5zTGlzdD1bXTtsZXQg''@;'; put 'put ''eT17U0FTQ29udHJvbFRhYmxlOlt7bGlidXJpOmh9XX07eWllbGQgdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoImxpbmVhZ2UvZ2V0bWV0YXRhYmxlcyIseSkudGhlbihDPT57dGhpcy50YWJsZXNMaXN0PUMubWV0YXRhYmxlcyx0aGlzLnRhYmxlc0xpc3QmJnRoaXMudGFibGVzTGlzdC5sZW5n''@;'; put 'put ''dGg+MCYmKHYudGFibGVzPXRoaXMudGFibGVzTGlzdCx2LmV4cGFuZGVkPSEwKSx0aGlzLnNldEdsb2JhbERhdGEoKX0pLmNhdGNoKEM9PkMpLHYubG9hZGluZ1RhYmxlcz0hMX0pfWNvbHVtbk9uQ2xpY2soaCx2LHkpe3RoaXMubGliPXYuTElCUkFSWUlELHRoaXMudGFibGU9eS5UQUJMRVVS''@;'; put 'put ''SSx0aGlzLmNvbHVtbj1oLkNPTFVSSSx0aGlzLnNldEdsb2JhbERhdGEoKSx0aGlzLm9uR2VuZXJhdGVDbGljaygpfXRyZWVPbkZpbHRlcihoLHYpe3RoaXMuaGVscGVyU2VydmljZS50cmVlT25GaWx0ZXIoaCx2KX1saWJyYXJ5T25GaWx0ZXIoKXt0aGlzLmhlbHBlclNlcnZpY2UubGlicmFy''@;'; put 'put ''eU9uRmlsdGVyKHRoaXMubGlicmFyeUxpc3QsdGhpcy5saWJyYXJpZXNTZWFyY2gsIkxJQlJBUllOQU1FIiksbmkubGluZWFnZS5saWJyYXJpZXNTZWFyY2g9dGhpcy5saWJyYXJpZXNTZWFyY2h9bGliQ29sdW1uQWN0aXZlKGgpe2lmKCF0aGlzLmNvbHVtbilyZXR1cm4hMTtsZXQgdj1oLnNw''@;'; put 'put ''bGl0KCJcXCIpLHk9dGhpcy5jb2x1bW4uc3BsaXQoIlxcIik7cmV0dXJuIHZbdi5sZW5ndGgtMV09PXlbeS5sZW5ndGgtMV19c2V0R2xvYmFsRGF0YSgpe25pLmxpbmVhZ2UubGlicmFyeUxpc3Q9dGhpcy5saWJyYXJ5TGlzdCxuaS5saW5lYWdlLnRhYmxlc0xpc3Q9dGhpcy50YWJsZXNMaXN0''@;'; put 'put ''LG5pLmxpbmVhZ2UuY29sdW1uc0xpc3Q9dGhpcy5jb2x1bW5zTGlzdCxuaS5saW5lYWdlLmxpYj10aGlzLmxpYixuaS5saW5lYWdlLnRhYmxlPXRoaXMudGFibGUsbmkubGluZWFnZS5jb2x1bW49dGhpcy5jb2x1bW59bG9hZEdsb2JhbERhdGEoKXt0aGlzLmxpYnJhcnlMaXN0PW5pLmxpbmVh''@;'; put 'put ''Z2UubGlicmFyeUxpc3QsdGhpcy50YWJsZXNMaXN0PW5pLmxpbmVhZ2UudGFibGVzTGlzdCx0aGlzLmNvbHVtbnNMaXN0PW5pLmxpbmVhZ2UuY29sdW1uc0xpc3QsdGhpcy5saWJyYXJpZXNTZWFyY2g9bmkubGluZWFnZS5saWJyYXJpZXNTZWFyY2h9cmVzdWJtaXRXaXRoTWF4RGVwdGgoaCl7''@;'; put 'put ''bGV0IHY7dGhpcy5jYW5jZWxSZW5kZXJpbmdHcmFwaCgpLGgmJih2PXttYXhfZGVwdGg6aH0pLHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLHtyZWxhdGl2ZVRvOnRoaXMucm91dGUscXVlcnlQYXJhbXM6dn0pfW5nT25Jbml0KCl7bmkudmlld2VyLmN1cnJlbnRTZWxlY3Rpb249InZpZXcvbGlu''@;'; put 'put ''ZWFnZSI7bGV0IGg9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMucmVsb2FkO2lmKHZvaWQgMCE9PWgpe2xldCB2PXRoaXMucm91dGVyLnVybDsicmVsb2FkIj09PWg/bG9jYWxTdG9yYWdlLmdldEl0ZW0oImZpcnN0TG9hZCIpPyhsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiZmlyc3RMb2Fk''@;'; put 'put ''IiksdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodi5zbGljZSgwLHYubGFzdEluZGV4T2YoIi8iKSkpKToobG9jYWxTdG9yYWdlLmZpcnN0TG9hZD0hMCxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpfSwyZTMpKTp0aGlzLmxvY2F0aW9uLnJlcGxhY2VT''@;'; put 'put ''dGF0ZSh2LnNsaWNlKDAsdi5sYXN0SW5kZXhPZigiLyIpKSl9dGhpcy5pbml0RGF0YSgpfWluaXREYXRhKCl7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtuaS5saW5lYWdlLmxpYnJhcnlMaXN0JiYobmkubGluZWFnZS5saWJyYXJ5TGlzdC5sZW5ndGg+MD90aGlz''@;'; put 'put ''LmxvYWRHbG9iYWxEYXRhKCk6eWllbGQgdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy92aWV3bGlicyIsbnVsbCkudGhlbihDPT57dGhpcy5saWJyYXJ5TGlzdD1DLnNhc2xpYnMsdGhpcy5oZWxwZXJTZXJ2aWNlLmRpc3BsYXlMaWJyYXJpZXModGhpcy5saWJyYXJ5TGlzdCksdGhp''@;'; put 'put ''cy5saWJyYXJ5TGlzdCYmdGhpcy5saWJyYXJ5TGlzdC5sZW5ndGg+MCYmKHRoaXMubGliPXRoaXMubGlicmFyeUxpc3RbMF0uTElCUkFSWUlEKSx0aGlzLnNldEdsb2JhbERhdGEoKX0pLmNhdGNoKEM9PkMpLHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKEM9Pnt0aGlzLm9uUm91''@;'; put 'put ''dGVDaGFuZ2UoKX0pLHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShDPT57dGhpcy5vblJvdXRlQ2hhbmdlKCl9KSl9KX1vblJvdXRlQ2hhbmdlKCl7Y2xlYXJUaW1lb3V0KHRoaXMuZGVib3VuY2VUaW1lb3V0KSx0aGlzLmRlYm91bmNlVGltZW91dD1zZXRUaW1lb3V0KCgpPT57Y29uc3Qg''@;'; put 'put ''aD10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5jb2x1cmksdj10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5kaXJlY3Rpb24seT10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy50YWJsZWlkLEM9dGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5tYXhfZGVwdGg7aCYmdiYmKHRo''@;'; put 'put ''aXMuZm9yd2FyZExpbmVhZ2U9IkZPUldBUkQiPT09dix0aGlzLmNvbHVtbj1oLHRoaXMuZ2VuZXJhdGVHcmFwaChoLHYsQykpLCF0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoImNvbHVtbiIpJiZ5JiZ2JiYodGhpcy5mb3J3YXJkTGluZWFnZT0iRk9SV0FSRCI9PT12LHRoaXMudGFibGU9eSx0''@;'; put 'put ''aGlzLmdlbmVyYXRlR3JhcGhUYWJsZUxldmVsKHksdixDKSl9LHRoaXMuZGVib3VuY2VUaW1lKX1uZ0FmdGVyQ29udGVudEluaXQoKXt9ZGlyZWN0aW9uVGV4dCgpe3JldHVybiB0aGlzLmZvcndhcmRMaW5lYWdlPyJGT1JXQVJEIjoiUkVWRVJTRSJ9b25HZW5lcmF0ZUNsaWNrKCl7bGV0IGg9''@;'; put 'put ''dGhpcy5kaXJlY3Rpb25UZXh0KCksdj10aGlzLmNvbHVtbj90aGlzLmNvbHVtbi5zdWJzdHJpbmcodGhpcy5jb2x1bW4uaW5kZXhPZigiXFwiKSsxKTpudWxsO3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi92aWV3L2xpbmVhZ2UvY29sdW1uLyIrdisiLyIraCl9b25HZW5lcmF0ZUdyYXBo''@;'; put 'put ''VGFibGVDbGljaygpe2xldCBoPXRoaXMuZGlyZWN0aW9uVGV4dCgpLHY9dGhpcy50YWJsZS5pbmNsdWRlcygiXFwiKT90aGlzLnRhYmxlLnNwbGl0KCJcXCIpWzFdOnRoaXMudGFibGU7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3ZpZXcvbGluZWFnZS8iK3YrIi8iK2gpfWdlbmVyYXRl''@;'; put 'put ''R3JhcGhUYWJsZUxldmVsKGgsdix5KXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCBDPXtTQVNDb250cm9sVGFibGU6W3t0YWJsZV9pZDpoLGRpcmVjdGlvbjp2fHx0aGlzLmRpcmVjdGlvblRleHQoKX1dfTtyZXR1cm4idW5kZWZpbmVkIj09PUMuU0FTQ29u''@;'; put 'put ''dHJvbFRhYmxlWzBdLnRhYmxlX2lkJiZ0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbCgiZ2VuZXJhdGVHcmFwaFRhYmxlTGV2ZWwoKSIsInRhYmxlX2lkIGlzIHVuZGVmaW5lZC4iLHZvaWQgMCwiRnJvbnRlbmQgZXJyb3IiKSx5JiYoQy5TQVNDb250cm9sVGFibGVbMF0ubWF4X2Rl''@;'; put 'put ''cHRoPXkpLHRoaXMudGFibGVGbGFnPSExLHRoaXMuc3dpdGNoRmxhZz0hMCx0aGlzLmdyYXBoQ29udGFpbmVyPSEwLHRoaXMuZ3JhcGhMb2FkaW5nPSEwLHRoaXMudml6SW5wdXQ9IiIsbmV3IFByb21pc2UoKEksWik9Pnt0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgibGluZWFnZS9mZXRjaHRh''@;'; put 'put ''YmxlbGluZWFnZSIsQykudGhlbih1ZT0+bm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2lmKCJzdHJpbmciPT10eXBlb2YgdWUpcmV0dXJuIHRoaXMudml6SW5wdXQ9ImRpZ3JhcGggRyB7U0FTIEVycm9yfSIsdm9pZCB0aGlzLmJ1aWxkR3JhcGgoKTt0aGlzLmxpbmVhZ2VUYWJs''@;'; put 'put ''ZU5hbWU9dWUuaW5mb1swXS5MSUJSRUYrIi4iK3VlLmluZm9bMF0uVEFCTEVOQU1FO2xldCBfZT11ZS5maW5hbGZpbmFsLEJlPSIiO2ZvcihsZXQgTmU9MDtOZTxfZS5sZW5ndGg7TmUrKylCZSs9dW5lc2NhcGUoX2VbTmVdLkxJTkUpKyJcbiI7aWYodGhpcy5mbGF0ZGF0YT11ZS5mbGF0ZGF0''@;'; put 'put ''YSx0aGlzLmxpYnJhcnlMaXN0KXtsZXQgTmU9dGhpcy5saWJyYXJ5TGlzdC5maW5kKEtlPT5LZS5MSUJSQVJZUkVGLnRvTG93ZXJDYXNlKCk9PT11ZS5pbmZvWzBdLkxJQlJFRi50b0xvd2VyQ2FzZSgpKTtpZihOZSl7bGV0IEtlO2lmKHlpZWxkIHRoaXMubGlicmFyeU9uQ2xpY2soTmUuTElC''@;'; put 'put ''UkFSWUlELE5lKSxOZS50YWJsZXMmJihLZT1OZS50YWJsZXMuZmluZChwdD0+cHQuVEFCTEVVUkkuc3BsaXQoIlxcIilbMV09PT11ZS5pbmZvWzBdLlRBQkxFSUQpLEtlKSl7aWYodGhpcy50YWJsZT1LZS5UQUJMRVVSSSx0aGlzLnRhYmxlKXtjb25zdCBwdD10aGlzLnRhYmxlLnJlcGxhY2Uo''@;'; put 'put ''IlxcIiwiXFxcXCIpO2xldCBPdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbaWQ9JyR7cHR9J11gKTtzZXRUaW1lb3V0KCgpPT57T3QmJk90LnNjcm9sbEludG9WaWV3KCl9LDFlMyl9dGhpcy50YWJsZU9uQ2xpY2soS2UuVEFCTEVVUkksS2UsTmUsdm9pZCAwIT09dil9TmUmJihOZS5leHBh''@;'; put 'put ''bmRlZD0hMCksS2UmJihLZS5leHBhbmRlZD0hMCl9fXRoaXMudml6SW5wdXQ9QmV8fCJkaWdyYXBoIEcge05vIExpbmVhZ2UgQXZhaWxhYmxlfSIsdGhpcy52aXpJbnB1dD10aGlzLnZpeklucHV0LnJlcGxhY2UoL1xzZHM6L2csIlxuZHM6IikucmVwbGFjZSgvXHNcbi9nLCJcbiIpLHRoaXMu''@;'; put 'put ''aWRsb29rdXA9dWUuaWRsb29rdXAsdWUuZmluYWxmaW5hbC5sZW5ndGg+dGhpcy5sYXJnZURvdEZpbGVMaW1pdD90aGlzLmxhcmdlRG90RmlsZUxpbmVzPXVlLmZpbmFsZmluYWwubGVuZ3RoOnRoaXMuYnVpbGRHcmFwaCgpLEkoKX0pKS5jYXRjaCh1ZT0+e3RoaXMuZ3JhcGhMb2FkaW5nPSEx''@;'; put 'put ''LHRoaXMuZ3JhcGhDb250YWluZXI9ITF9KX0pfSl9Y2FuY2VsUmVuZGVyaW5nR3JhcGgoKXt0aGlzLnZpeklucHV0PSJkaWdyYXBoIEcge05vIExpbmVhZ2UgQXZhaWxhYmxlfSIsdGhpcy5sYXJnZURvdEZpbGVMaW5lcz1udWxsLHRoaXMuYnVpbGRHcmFwaCgpfWNvbnRpbnVlUmVuZGVyaW5n''@;'; put 'put ''R3JhcGgoKXt0aGlzLmxhcmdlRG90RmlsZUxpbmVzPW51bGwsdGhpcy5idWlsZEdyYXBoKCgpPT57aWYobnVsbCE9PXRoaXMucGVuZGluZ1JlbmRlckRvd25sb2FkKXtzd2l0Y2godGhpcy5wZW5kaW5nUmVuZGVyRG93bmxvYWQpe2Nhc2UiUE5HIjp0aGlzLmRvd25sb2FkUE5HKCk7YnJlYWs7''@;'; put 'put ''Y2FzZSJTVkciOnRoaXMuZG93bmxvYWRTVkcoKX10aGlzLnBlbmRpbmdSZW5kZXJEb3dubG9hZD1udWxsLHRoaXMudml6SW5wdXQ9ImRpZ3JhcGggRyB7Tm8gTGluZWFnZSBBdmFpbGFibGV9Iix0aGlzLmJ1aWxkR3JhcGgoKX19KX1yZW5kZXJUb0Rvd25sb2FkKGgpe3N3aXRjaChoKXtjYXNl''@;'; put 'put ''IlBORyI6dGhpcy5wZW5kaW5nUmVuZGVyRG93bmxvYWQ9IlBORyIsdGhpcy5jb250aW51ZVJlbmRlcmluZ0dyYXBoKCk7YnJlYWs7Y2FzZSJTVkciOnRoaXMucGVuZGluZ1JlbmRlckRvd25sb2FkPSJTVkciLHRoaXMuY29udGludWVSZW5kZXJpbmdHcmFwaCgpfX1tYWtlR3JhcGhMaW5rYWJs''@;'; put 'put ''ZShoKXtsZXQgdj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjZ3JhcGggLm5vZGUiKTtmb3IobGV0IHkgb2Ygdil7bGV0IFosQz15LnF1ZXJ5U2VsZWN0b3IoInRpdGxlIikuaW5uZXJIVE1MLEk9aC5maW5kKHVlPT51ZS5NRVRBSUQ9PT1DKTtJJiYoWj0iVEFCTEUiPT09SS5NRVRBVFlQ''@;'; put 'put ''RT8iL3ZpZXcvZGF0YS8iK0kuTUVUQU5BTUU6Ii92aWV3L21ldGFkYXRhL29iamVjdC8iK0kuTUVUQUlELHkuY2xhc3NMaXN0LmFkZCgiY3Vyc29yLXBvaW50ZXIiKSx5LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix1ZT0+e3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoWil9KSl9fWdlbmVy''@;'; put 'put ''YXRlR3JhcGgoaCx2LHkpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7bGV0IEM9e1NBU0NvbnRyb2xUYWJsZTpbe2NvbHVyaTpofHx0aGlzLmNvbHVtbixkaXJlY3Rpb246dnx8dGhpcy5kaXJlY3Rpb25UZXh0KCkscmVmcmVzaDp0aGlzLnJlZnJlc2hDYWNoZT8x''@;'; put 'put ''OjB9XX07cmV0dXJuInVuZGVmaW5lZCI9PT1DLlNBU0NvbnRyb2xUYWJsZVswXS5jb2x1cmkmJnRoaXMuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKCJnZW5lcmF0ZUdyYXBoKCkiLCJjb2x1cmkgaXMgdW5kZWZpbmVkLiIsdm9pZCAwLCJGcm9udGVuZCBlcnJvciIpLHkmJihDLlNBU0Nv''@;'; put 'put ''bnRyb2xUYWJsZVswXS5tYXhfZGVwdGg9eSksdGhpcy50YWJsZUZsYWc9ITEsdGhpcy5zd2l0Y2hGbGFnPSEwLHRoaXMuZ3JhcGhDb250YWluZXI9ITAsdGhpcy5ncmFwaExvYWRpbmc9ITAsdGhpcy52aXpJbnB1dD0iIixuZXcgUHJvbWlzZSgoSSxaKT0+e3RoaXMuc2FzU2VydmljZS5yZXF1''@;'; put 'put ''ZXN0KCJsaW5lYWdlL2ZldGNobGluZWFnZSIsQykudGhlbih1ZT0+bm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2lmKCJzdHJpbmciPT10eXBlb2YgdWUpcmV0dXJuIHRoaXMudml6SW5wdXQ9ImRpZ3JhcGggRyB7U0FTIEVycm9yfSIsdm9pZCB0aGlzLmJ1aWxkR3JhcGgoKTt0''@;'; put 'put ''aGlzLmxpbmVhZ2VUYWJsZU5hbWU9dWUuaW5mb1swXS5MSUJSRUYrIi4iK3VlLmluZm9bMF0uVEFCTkFNRSx0aGlzLmxpbmVhZ2VDb2x1bW5OYW1lPXVlLmluZm9bMF0uQ09MTkFNRSx0aGlzLmlkbG9va3VwPXVlLmlkbG9va3VwO2xldCBfZT11ZS5mcm9tc2FzLEJlPSIiO2ZvcihsZXQgTmU9''@;'; put 'put ''MDtOZTxfZS5sZW5ndGg7TmUrKylCZSs9dW5lc2NhcGUoX2VbTmVdLlNUUklORykrIlxuIjtpZih0aGlzLnZpeklucHV0PUJlfHwiZGlncmFwaCBHIHtObyBMaW5lYWdlIEF2YWlsYWJsZX0iLHRoaXMudml6SW5wdXQ9dGhpcy52aXpJbnB1dC5yZXBsYWNlKC9cc2RzOi9nLCJcbmRzOiIpLnJl''@;'; put 'put ''cGxhY2UoL1xzXG4vZywiXG4iKSx0aGlzLmZsYXRkYXRhPXVlLmZsYXRkYXRhLHRoaXMubGlicmFyeUxpc3Qpe2xldCBLZSxOZT10aGlzLmxpYnJhcnlMaXN0LmZpbmQocHQ9PnB0LkxJQlJBUllSRUY9PT11ZS5pbmZvWzBdLkxJQlJFRik7TmV8fChOZT10aGlzLmxpYnJhcnlMaXN0LmZpbmQo''@;'; put 'put ''cHQ9PnB0LmxpYnJhcnlyZWY9PT11ZS5pbmZvWzBdLmxpYnJlZikpLE5lJiYoeWllbGQgdGhpcy5saWJyYXJ5T25DbGljayhOZS5MSUJSQVJZSUQsTmUpLE5lLnRhYmxlcyYmKEtlPU5lLnRhYmxlcy5maW5kKHB0PT5wdC5UQUJMRVVSST09PXVlLmluZm9bMF0uVEFCVVJJKSxLZSYmdGhpcy50''@;'; put 'put ''YWJsZU9uQ2xpY2soS2UuVEFCTEVVUkksS2UsTmUsITApLnRoZW4oKCk9PntsZXQgcHQ9S2UuVEFCTEVVUkk7aWYocHQpe2NvbnN0IE90PXB0LnJlcGxhY2UoIlxcIiwiXFxcXCIpO2xldCAkdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbaWQ9JyR7T3R9J11gKTtzZXRUaW1lb3V0KCgpPT57''@;'; put 'put ''JHQmJih0aGlzLmxvZ2dlclNlcnZpY2UubG9nKCJsaWJyYXJ5VG9TZWxlY3QiLE5lKSwkdC5zY3JvbGxJbnRvVmlldygpKX0sMWUzKX19KSksTmUmJihOZS5leHBhbmRlZD0hMCksS2UmJihLZS5leHBhbmRlZD0hMCkpfXVlLmZyb21zYXMubGVuZ3RoPnRoaXMubGFyZ2VEb3RGaWxlTGltaXQ/''@;'; put 'put ''dGhpcy5sYXJnZURvdEZpbGVMaW5lcz11ZS5mcm9tc2FzLmxlbmd0aDp0aGlzLmJ1aWxkR3JhcGgoKSxJKCl9KSkuY2F0Y2godWU9Pnt0aGlzLmdyYXBoTG9hZGluZz0hMSx0aGlzLmdyYXBoQ29udGFpbmVyPSExfSl9KX0pfWdldFNWR1VSTCgpe2xldCBoPWRvY3VtZW50LmdldEVsZW1lbnRC''@;'; put 'put ''eUlkKCJncmFwaCIpLHY9bmV3IFhNTFNlcmlhbGl6ZXIseT1uZXcgQmxvYihbdi5zZXJpYWxpemVUb1N0cmluZyhoKV0se3R5cGU6ImltYWdlL3N2Zyt4bWwifSk7cmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwoeSl9Z2V0U1ZHQmxvYigpe2xldCBoPWRvY3VtZW50LmdldEVsZW1lbnRCeUlk''@;'; put 'put ''KCJncmFwaCIpLHY9bmV3IFhNTFNlcmlhbGl6ZXI7cmV0dXJuIG5ldyBCbG9iKFt2LnNlcmlhbGl6ZVRvU3RyaW5nKGgpXSx7dHlwZToiaW1hZ2Uvc3ZnK3htbCJ9KX1kb3dubG9hZFNWRygpe2lmKExtZS5ncmFwaHZpeigiI2dyYXBoIikucmVzZXRab29tKCksbmF2aWdhdG9yLmFwcFZlcnNp''@;'; put 'put ''b24udG9TdHJpbmcoKS5pbmRleE9mKCIuTkVUIik+MCl3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZUJsb2IodGhpcy5nZXRTVkdCbG9iKCksdGhpcy5jb25zdHJ1Y3ROYW1lKCJzdmciKSk7ZWxzZXtsZXQgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7aC5ocmVmPXRoaXMuZ2V0U1ZHVVJM''@;'; put 'put ''KCksaC5kb3dubG9hZD10aGlzLmNvbnN0cnVjdE5hbWUoInN2ZyIpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaCksaC5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaCl9fWRvd25sb2FkUE5HKCl7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtM''@;'; put 'put ''bWUuZ3JhcGh2aXooIiNncmFwaCIpLnJlc2V0Wm9vbSgpLFA3dC5zYXZlU3ZnQXNQbmcoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2dyYXBoIHN2ZyIpLHRoaXMuY29uc3RydWN0TmFtZSgicG5nIikpfSl9ZG93bmxvYWRDU1YoKXtsZXQgaD10aGlzLmZsYXRkYXRhO2NvbnN0IHY9KEJlLE5l''@;'; put 'put ''KT0+bnVsbD09PU5lPyIiOk5lLHk9T2JqZWN0LmtleXMoaFswXSk7bGV0IEM9aC5tYXAoQmU9PnkubWFwKE5lPT5KU09OLnN0cmluZ2lmeShCZVtOZV0sdikpLmpvaW4oIiwiKSk7Qy51bnNoaWZ0KHkuam9pbigiLCIpKTtsZXQgST1DLmpvaW4oIlxyXG4iKTt2YXIgWj1kb2N1bWVudC5jcmVh''@;'; put 'put ''dGVFbGVtZW50KCJhIiksdWU9bmV3IEJsb2IoW0ldLHt0eXBlOiJ0ZXh0L2NzdiJ9KTtpZihuYXZpZ2F0b3IuYXBwVmVyc2lvbi50b1N0cmluZygpLmluZGV4T2YoIi5ORVQiKT4wKXdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlQmxvYih1ZSx0aGlzLmNvbnN0cnVjdE5hbWUoImNzdiIpKTtlbHNl''@;'; put 'put ''e3ZhciBfZT13aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTCh1ZSk7Wi5ocmVmPV9lLFouZG93bmxvYWQ9dGhpcy5jb25zdHJ1Y3ROYW1lKCJjc3YiKSxaLmNsaWNrKCksd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwoX2UpLFoucmVtb3ZlKCl9fWdldERvdFVybCgpe2xldCB2PW5ldyBCbG9i''@;'; put 'put ''KFt0aGlzLnZpeklucHV0XSx7dHlwZToidGV4dC9wbGFpbiJ9KTtyZXR1cm4gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwodil9Z2V0RG90QmxvYigpe3JldHVybiBuZXcgQmxvYihbdGhpcy52aXpJbnB1dF0se3R5cGU6InRleHQvcGxhaW4ifSl9ZG93bmxvYWREb3QoKXtpZihuYXZpZ2F0''@;'; put 'put ''b3IuYXBwVmVyc2lvbi50b1N0cmluZygpLmluZGV4T2YoIi5ORVQiKT4wKXdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlQmxvYih0aGlzLmdldERvdEJsb2IoKSx0aGlzLmNvbnN0cnVjdE5hbWUoInR4dCIpKTtlbHNle2xldCBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtoLmhyZWY9dGhp''@;'; put 'put ''cy5nZXREb3RVcmwoKSxoLmRvd25sb2FkPXRoaXMuY29uc3RydWN0TmFtZSgidHh0IiksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChoKSxoLmNsaWNrKCksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChoKX19c2hvd1N2Zygpe3dpbmRvdy5vcGVuKHRoaXMuZ2V0U1ZHVVJMKCksIl9ibGFu''@;'; put 'put ''ayIpfWJ1aWxkR3JhcGgoaCl7dGhpcy5ldmVudFNlcnZpY2UuY2xvc2VTaWRlYmFyKCksdGhpcy5ncmFwaExvYWRpbmc9ITEsdGhpcy5ncmFwaFJlbmRlcmluZz0hMCxzZXRUaW1lb3V0KCgpPT57TG1lLmdyYXBodml6KCIjZ3JhcGgiKS56b29tKCEwKS50b3RhbE1lbW9yeSg2NzEwODg2NCku''@;'; put 'put ''YWRkSW1hZ2UoImh0dHBzOi8vZGF0YWNvbnRyb2xsZXIuaW8vd3AtY29udGVudC91cGxvYWRzLzIwMjAvMDEvZmMxLnBuZyIsIjMwcHgiLCIzMHB4IikucmVuZGVyRG90KHRoaXMudml6SW5wdXQsKCk9Pnt0aGlzLmdyYXBoUmVuZGVyaW5nPSExLHRoaXMuaWRsb29rdXAmJnRoaXMubWFrZUdy''@;'; put 'put ''YXBoTGlua2FibGUodGhpcy5pZGxvb2t1cCksaCYmaCgpfSl9LDEwMCl9Y29uc3RydWN0TmFtZShoKXtsZXQgdj0iIix5PSIiLEM9IiIsST1kdnQoKS5mb3JtYXQoIllZTU1ERF9ISG1tIik7aWYodGhpcy5saWJyYXJ5TGlzdCYmdGhpcy5saWJyYXJ5TGlzdC5sZW5ndGgpe2xldCBaPXRoaXMu''@;'; put 'put ''bGlicmFyeUxpc3QuZmluZCh1ZT0+dWUuTElCUkFSWUlEPT10aGlzLmxpYik7WiYmKHY9YF8ke1ouTElCUkFSWU5BTUV9YCl9aWYodGhpcy50YWJsZXNMaXN0JiZ0aGlzLnRhYmxlc0xpc3QubGVuZ3RoKXtsZXQgWj10aGlzLnRhYmxlc0xpc3QuZmluZCh1ZT0+dWUuVEFCTEVVUkk9PXRoaXMu''@;'; put 'put ''dGFibGUpO1omJih5PWBfJHtaLlRBQkxFTkFNRX1gKX1pZih0aGlzLmNvbHVtbnNMaXN0JiZ0aGlzLmNvbHVtbnNMaXN0Lmxlbmd0aCl7bGV0IFo9dGhpcy5jb2x1bW5zTGlzdC5maW5kKHVlPT51ZS5DT0xVUkk9PXRoaXMuY29sdW1uKTtaJiYoQz1gXyR7Wi5DT0xOQU1FfWApfXJldHVybmAk''@;'; put 'put ''e3RoaXMuZGlyZWN0aW9uVGV4dCgpfSR7dn0ke3l9JHtDfV8ke0l9LiR7aH1gfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChnMiksS3QoUHUpLEt0KFpsKSxLdChWNiksS3QobXUpLEt0KHNjKSxLdChYYykpfSxkLlx1MDI3NWNtcD1UaSh7dHlw''@;'; put 'put ''ZTpkLHNlbGVjdG9yczpbWyJhcHAtbGluZWFnZSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6NTgsdmFyczoxMSxjb25zdHM6W1szLCJzY3JvbGxlZFRvQm90dG9tIl0sWyJjbGFzcyIsInNlYXJjaC1ub2RlIiw0LCJuZ0lmIl0sWzQsIm5nRm9yIiwibmdGb3JP''@;'; put 'put ''ZiJdLFsiY2xhc3MiLCJ3LTEwMCB0ZXh0LWNlbnRlciIsNCwibmdJZiJdLFsxLCJjb250ZW50LWFyZWEiXSxbMSwiY2FyZCJdLFsiY2xhc3MiLCJuby10YWJsZS1zZWxlY3RlZCIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzMsImNsck1vZGFsT3BlbiIsImNsck1vZGFsQ2xvc2FibGUiXSxbMSwi''@;'; put 'put ''bW9kYWwtdGl0bGUiXSxbMSwibW9kYWwtYm9keSJdLFsxLCJtb2RhbC1mb290ZXIiLCJkLWZsZXgiLCJmbGV4LWNvbHVtbiJdLFsxLCJiaWdsaW5lYWdlLXJvdyIsIm1iLTBpIl0sWyJ0eXBlIiwibnVtYmVyIiwibWluIiwiMSIsInBsYWNlaG9sZGVyIiwiTWF4IGRlcHRoIHZhbHVlIiwxLCJj''@;'; put 'put ''bHItaW5wdXQiLCJtYXgtZGVwdGgtaW5wdXQiXSxbIm1heERlcHRoRG90IiwiIl0sWzEsIm1iLTIwIl0sWzEsImJpZ2xpbmVhZ2Utcm93Il0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tcHJpbWFyeSIsMywiY2xpY2siXSxbImNsckRyb3Bkb3duVHJpZ2dlciIsIiIs''@;'; put 'put ''MSwiYnRuIiwiYnRuLXNtIiwiYnRuLXByaW1hcnkiLCJtdC0zLW5lZ2F0aXZlIiwzLCJkaXNhYmxlZCJdLFsic2hhcGUiLCJjYXJldCBkb3duIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1sZWZ0Iiw0LCJjbHJJZk9wZW4iXSxbIm1heERlcHRoIiwiIl0sWzEsInNlYXJjaC1ub2RlIl0sWzEs''@;'; put 'put ''InRyZWUtc2VhcmNoLXdyYXBwZXIiXSxbImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIiLCJMaWJyYXJpZXMiLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiXSxbInNlYXJjaExpYlRyZWVJbnB1dCIsIiJdLFsi''@;'; put 'put ''c2hhcGUiLCJzZWFyY2giLDQsIm5nSWYiXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInNlYXJjaCJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siXSxbMywiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIiwiY2xyLWV4cGFuZGVkIiwiY2xpY2siLCJj''@;'; put 'put ''bHJFeHBhbmRlZENoYW5nZSIsNCwibmdJZiJdLFszLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmciLCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIl0sWzEsIm0tMCIsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsic2hhcGUiLCJyYWNrLXNlcnZlciJdLFszLCJjbHJFeHBhbmRlZCIs''@;'; put 'put ''ImNsckxvYWRpbmciLCJjbHItZXhwYW5kZWQiLCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIiLCJUYWJsZXMiLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWwiLCJu''@;'; put 'put ''Z01vZGVsQ2hhbmdlIiwia2V5dXAiXSxbInNlYXJjaFRyZWVJbnB1dCIsIiJdLFsxLCJtLTAiLCJjdXJzb3ItcG9pbnRlciIsMywiaWQiLCJjbGljayJdLFsic2hhcGUiLCJ0YWJsZSJdLFsiY2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsIkNvbHVtbnMiLCJuYW1lIiwiaW5wdXQiLCJhdXRv''@;'; put 'put ''Y29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiXSxbMSwiY2xyLXRyZWVub2RlLWxpbmsiLDMsImNsaWNrIl0sWyJzaGFwZSIsIm9iamVjdHMiXSxbMSwidy0xMDAiLCJ0ZXh0LWNlbnRlciJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1zbSJdLFsxLCJu''@;'; put 'put ''by10YWJsZS1zZWxlY3RlZCJdLFsic2hhcGUiLCJ3YXJuaW5nLXN0YW5kYXJkIiwic2l6ZSIsIjYwIiwxLCJpcy1pbmZvIiwiaWNvbi1kYy1maWxsIl0sWzEsInRleHQtY2VudGVyIiwiY29sb3ItZ3JheSJdLFsiY2xhc3MiLCJjYXJkLWhlYWRlciBkLWZsZXggZmxleC1jb2x1bW4ganVzdGlm''@;'; put 'put ''eS1jb250ZW50LWNlbnRlciIsNCwibmdJZiJdLFsxLCJjYXJkLWJsb2NrIl0sWzEsImZvcm0tYmxvY2siLCJzdyIsInBvc2l0aW9uLXJlbGF0aXZlIiwiZC1mbGV4IiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWzEsImxpbmFnZS10aXRsZS13cmFwcGVyIiwiZC1mbGV4IiwiYWxpZ24taXRlbXMt''@;'; put 'put ''Y2VudGVyIiwiZm9udC13ZWlnaHQtYm9sZCIsInBvc2l0aW9uLWFic29sdXRlIl0sWyJjbGFzcyIsImNsci1jb2wtbWQtMTIgdGV4dC1jZW50ZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQiLDQsIm5nSWYiXSxbMywibXQtMiIsNCwibmdJZiJdLFsxLCJjYXJkLWhlYWRlciIsImQtZmxl''@;'; put 'put ''eCIsImZsZXgtY29sdW1uIiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsiY2xhc3MiLCJ0ZXh0LWNlbnRlciBwYi0xMCIsNCwibmdJZiJdLFsxLCJ0ZXh0LWNlbnRlciIsInBiLTEwIl0sWzMsInJvdXRlckxpbmsiXSxbMSwiY2xyLWNvbC1tZC0xMiIsInRleHQtY2VudGVyIiwiZC1mbGV4''@;'; put 'put ''IiwianVzdGlmeS1jb250ZW50LWVuZCJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0sWzEsImJ0bi1ncm91cCIsImQtYmxvY2siXSxbMSwicmFkaW8iLCJidG4iLDMsImNsaWNrIl0sWyJ0eXBlIiwicmFkaW8iLCJuYW1lIiwiYnRuLWdyb3VwLWRl''@;'; put 'put ''bW8tcmFkaW9zIiwzLCJjaGVja2VkIl0sWzEsIm1yLTEwIl0sWyJjbHJEcm9wZG93blRyaWdnZXIiLCIiLDEsImJ0biIsImJ0bi1pbmZvLW91dGxpbmUiLDMsImRpc2FibGVkIl0sWyJjbGFzcyIsImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIiLDQsIm5nSWYiXSxbImNsclBvc2l0aW9uIiwi''@;'; put 'put ''Ym90dG9tLWxlZnQiXSxbImNsckRyb3Bkb3duSXRlbSIsIiIsMywiY2xpY2siXSxbImNsckRyb3Bkb3duSXRlbSIsIiIsMywiY2xpY2siLDQsIm5nSWYiXSxbMSwiZC1mbGV4IiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWyJ0eXBlIiwiY2hlY2tib3giLCJjbHJDaGVja2JveCIsIiIsIm5hbWUi''@;'; put 'put ''LCJyZWZyZXNoQ2FjaGUiLDMsIm5nTW9kZWwiLCJjaGFuZ2UiLCJuZ01vZGVsQ2hhbmdlIl0sWzEsInRleHQtY2VudGVyIl0sWyJjbGFzcyIsInNwaW5uZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwicG9zaXRpb24tcmVsYXRpdmUiLDQsIm5nSWYiXSxbMSwic3Bpbm5lciJdLFsxLCJwb3NpdGlv''@;'; put 'put ''bi1yZWxhdGl2ZSJdLFsxLCJncmFwaC1yZW5kZXItc3Bpbm5lciJdLFsiY2xhc3MiLCJzcGlubmVyIHNwaW5uZXItc20iLDQsIm5nSWYiXSxbImlkIiwiZ3JhcGgiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXtpZigxJmgpe2NvbnN0IHk9d2koKTtudCgwLCJhcHAtc2lkZWJhciIsMCksR24o''@;'; put 'put ''InNjcm9sbGVkVG9Cb3R0b20iLGZ1bmN0aW9uKCl7cmV0dXJuIHYubG9hZE1vcmVMaWJyYXJpZXMoKX0pLG50KDEsImNsci10cmVlIikscm4oMixON3QsNiwzLCJjbHItdHJlZS1ub2RlIiwxKSxybigzLEo3dCwyLDEsIm5nLWNvbnRhaW5lciIsMiksb3QoKSxybig0LFg3dCwzLDAsImRpdiIs''@;'; put 'put ''Myksb3QoKSxudCg1LCJkaXYiLDQpKDYsImRpdiIsNSkscm4oNyxLN3QsNCwwLCJkaXYiLDYpLHJuKDgsY3Z0LDgsNCwibmctY29udGFpbmVyIiw3KSxvdCgpKCksbnQoOSwiY2xyLW1vZGFsIiw4KSgxMCwiaDMiLDkpLFl0KDExLCJMaW1pdCBEb3QgRGVwdGgiKSxvdCgpLG50KDEyLCJkaXYi''@;'; put 'put ''LDEwKSgxMywicCIpLFl0KDE0LCJFbnRlciB0aGUgZGVwdGggbnVtYmVyIHlvdSB3b3VsZCBsaWtlIHRvIGxpbWl0IERPVCByZW5kZXJpbmcgdG86Iiksb3QoKSgpLG50KDE1LCJkaXYiLDExKSgxNiwiZGl2IiwxMiksQ3IoMTcsImlucHV0IiwxMywxNCksb3QoKSxudCgxOSwiY2xyLWNvbnRy''@;'; put 'put ''b2wtaGVscGVyIiwxNSksWXQoMjAsIlRvIHJlbmRlciB3aXRoIHVubGltaXRlZCBkZXB0aCwgbGVhdmUgdGhlIGlucHV0IGVtcHR5Iiksb3QoKSxudCgyMSwiZGl2IiwxNikoMjIsImJ1dHRvbiIsMTcpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5saW1pdERvdERlcHRoPSExfSks''@;'; put 'put ''WXQoMjMsIiBDYW5jZWwgIiksb3QoKSxudCgyNCwiYnV0dG9uIiwxNyksR24oImNsaWNrIixmdW5jdGlvbigpe2l0KHkpO2NvbnN0IEk9dmEoMTgpO3JldHVybiB2LnJlc3VibWl0V2l0aE1heERlcHRoKEkudmFsdWUpLGEodi5saW1pdERvdERlcHRoPSExKX0pLFl0KDI1LCIgUmVzdWJtaXQg''@;'; put 'put ''Iiksb3QoKSgpKCkoKSxudCgyNiwiY2xyLW1vZGFsIiw4KSgyNywiaDMiLDkpLFl0KDI4LCJXYXJuaW5nIiksb3QoKSxudCgyOSwiZGl2IiwxMCkoMzAsInAiKSxZdCgzMSksb3QoKSgpLG50KDMyLCJkaXYiLDExKSgzMywiZGl2IiwxNikoMzQsInAiKSxZdCgzNSwiUmVuZGVyIGFueXdheSAo''@;'; put 'put ''dGhpcyBtYXkgdGFrZSBhIGxvbmcgdGltZSkiKSxvdCgpLG50KDM2LCJidXR0b24iLDE3KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuY29udGludWVSZW5kZXJpbmdHcmFwaCgpfSksWXQoMzcsIiBSZW5kZXIgIiksb3QoKSgpLG50KDM4LCJkaXYiLDE2KSgzOSwicCIpLFl0KDQw''@;'; put 'put ''LCJEb3dubG9hZCB0aGUgcmVzdWx0IChQTkcgJiBTVkcgcmVxdWlyZSByZW5kZXJpbmcpIiksb3QoKSxudCg0MSwiY2xyLWRyb3Bkb3duIikoNDIsImJ1dHRvbiIsMTgpLFl0KDQzLCIgRG93bmxvYWQgIiksQ3IoNDQsImNsci1pY29uIiwxOSksb3QoKSxybig0NSxodnQsNiwxLCJjbHItZHJv''@;'; put 'put ''cGRvd24tbWVudSIsMjApLG90KCkoKSxudCg0NiwiZGl2IiwxNikoNDcsInAiKSxZdCg0OCwiUmVzdWJtaXQgd2l0aCBhIG1heC1kZXB0aCAoc3BlY2lmeSBkZXB0aCkiKSxvdCgpLENyKDQ5LCJpbnB1dCIsMTMsMjEpLG50KDUxLCJidXR0b24iLDE3KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7''@;'; put 'put ''aXQoeSk7Y29uc3QgST12YSg1MCk7cmV0dXJuIGEodi5yZXN1Ym1pdFdpdGhNYXhEZXB0aChJLnZhbHVlKSl9KSxZdCg1MiwiIFJlc3VibWl0ICIpLG90KCkoKSxudCg1MywiZGl2IiwxNikoNTQsInAiKSxZdCg1NSwiQ2FuY2VsIHRoaXMgc3VibWlzc2lvbiIpLG90KCksbnQoNTYsImJ1dHRv''@;'; put 'put ''biIsMTcpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5jYW5jZWxSZW5kZXJpbmdHcmFwaCgpfSksWXQoNTcsIiBDYW5jZWwgIiksb3QoKSgpKCkoKX0yJmgmJih1dCgyKSxUdCgibmdJZiIsdi5saWJyYXJ5TGlzdCksdXQoMSksVHQoIm5nRm9yT2YiLHYubGlicmFyeUxpc3QpLHV0''@;'; put 'put ''KDEpLFR0KCJuZ0lmIix2LmxpYnJhcmllc1BhZ2luZyksdXQoMyksVHQoIm5nSWYiLCF2LmNvbHVtbiYmIXYudGFibGUpLHV0KDEpLFR0KCJuZ0lmIix2LmNvbHVtbnx8di50YWJsZSksdXQoMSksVHQoImNsck1vZGFsT3BlbiIsdi5saW1pdERvdERlcHRoKSgiY2xyTW9kYWxDbG9zYWJsZSIs''@;'; put 'put ''ITEpLHV0KDE3KSxUdCgiY2xyTW9kYWxPcGVuIixudWxsIT09di5sYXJnZURvdEZpbGVMaW5lcykoImNsck1vZGFsQ2xvc2FibGUiLCExKSx1dCg1KSxKaSgiIFRoZSBnZW5lcmF0ZWQgZG90IGZpbGUgaGFzICIsdi5sYXJnZURvdEZpbGVMaW5lcywiIGxpbmVzLiBSZW5kZXJpbmcgbWF5IHRh''@;'; put 'put ''a2UgYSBsb25nIHRpbWUsIGhvdyB3b3VsZCB5b3UgbGlrZSB0byBwcm9jZWVkPyAiKSx1dCgxMSksVHQoImRpc2FibGVkIiwhdi5jb2x1bW4mJiF2LnRhYmxlKSl9LGRlcGVuZGVuY2llczpbeHMsTm8sbTEsSWYsVHMsSXMsdjcseXYsX2csUUwsd2wsaWQsb2QsZ28sUGEsYXQsUmUsUm8sT2ks''@;'; put 'put ''cHYsd3YsYlMsX1MsSkwsTVNdLHN0eWxlczpbIi50b2dnbGUtc3dpdGNoW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0W3R5cGU9Y2hlY2tib3hdW19uZ2NvbnRlbnQtJUNPTVAlXTpjaGVja2VkICsgbGFiZWxbX25nY29udGVudC0lQ09NUCVdOmJlZm9yZXtib3JkZXItY29sb3I6IzMxNDM1''@;'; put 'put ''MTtiYWNrZ3JvdW5kLWNvbG9yOiMzMTQzNTEhaW1wb3J0YW50O3RyYW5zaXRpb246LjE1cyBlYXNlLWluO3RyYW5zaXRpb24tcHJvcGVydHk6Ym9yZGVyLWNvbG9yLGJhY2tncm91bmQtY29sb3J9I2dyYXBoW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6Y2FsYygxMDB2aCAtIDE5NXB4KTtv''@;'; put 'put ''dmVyZmxvdzpoaWRkZW47dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2JvcmRlcjoxcHggc29saWQgI2U0ZTRlNDttYXJnaW4tdG9wOjEwcHh9LnNlbGVjdGlvbi13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlO21heC13aWR0aDo2NzBweH0u''@;'; put 'put ''Y29sdW1uLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZDhlM2U5O2NvbG9yOiMwMDB9LmNvbnRlbnQtYXJlYVtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNXJlbSFpbXBvcnRhbnR9LmNvbnRlbnQtYXJlYVtfbmdjb250ZW50LSVDT01QJV0gICAuY2FyZFtfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV17bWluLWhlaWdodDpjYWxjKDEwMHZoIC0gMTIwcHgpfS5jb250ZW50LWFyZWFbX25nY29udGVudC0lQ09NUCVdICAgLmNhcmRbX25nY29udGVudC0lQ09NUCVdICAgLmNhcmQtYmxvY2tbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVyZW0gLjM1cmVtIWltcG9y''@;'; put 'put ''dGFudH1jbHItdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwfS5ncmFwaC1yZW5kZXItc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7d2lkdGg6MTAwJTtkaXNw''@;'; put 'put ''bGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tdG9wOjEwcHh9LmJpZ2xpbmVhZ2Utcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206MjBweH0u''@;'; put 'put ''bW9kYWwtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowfS5saW5lYWdlLXRpdGxlLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2xlZnQ6MTJweH0ubWF4LWRlcHRoLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfUBt''@;'; put 'put ''ZWRpYSAobWF4LXdpZHRoOiA3NjhweCl7LnRvZ2dsZS1zd2l0Y2gtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tYm90dG9tOjIwcHh9fSJdfSksZH0pKCk7ZnVuY3Rpb24gcHZ0KGQsZyl7aWYoMSZkJiYobnQoMCwib3B0aW9uIiwxMCksWXQoMSksb3QoKSksMiZkKXtjb25z''@;'; put 'put ''dCBoPWcuJGltcGxpY2l0O0k2KCJ2YWx1ZSIsaCksdXQoMSksSmkoIiAiLGgsIiAiKX19ZnVuY3Rpb24gZ3Z0KGQsZyl7MSZkJiZDcigwLCJjbHItaWNvbiIsMTcpfWZ1bmN0aW9uIG12dChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci1pY29uIiwxOCksR24oImNsaWNrIixm''@;'; put 'put ''dW5jdGlvbigpe2l0KGgpO2NvbnN0IHk9UXQoMik7cmV0dXJuIHkubWV0YURhdGFTZWFyY2g9IiIsYSh5Lm1ldGFMaXN0T25GaWx0ZXIoKSl9KSxvdCgpfX1mdW5jdGlvbiB2dnQoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJjbHItdHJlZS1ub2RlIiwxMSkoMSwiZGl2IiwxMiko''@;'; put 'put ''MiwiaW5wdXQiLDEzLDE0KSxHbigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoKS5tZXRhRGF0YVNlYXJjaD15KX0pKCJrZXl1cCIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgpLm1ldGFMaXN0T25GaWx0ZXIoKSl9KSxvdCgpLHJuKDQsZ3Z0LDEs''@;'; put 'put ''MCwiY2xyLWljb24iLDE1KSxybig1LG12dCwxLDAsImNsci1pY29uIiwxNiksb3QoKSgpfWlmKDImZCl7Y29uc3QgaD12YSgzKSx2PVF0KCk7dXQoMiksVHQoIm5nTW9kZWwiLHYubWV0YURhdGFTZWFyY2gpLHV0KDIpLFR0KCJuZ0lmIixoLnZhbHVlLmxlbmd0aDwxKSx1dCgxKSxUdCgibmdJ''@;'; put 'put ''ZiIsaC52YWx1ZS5sZW5ndGg+MCl9fWZ1bmN0aW9uIEF2dChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci10cmVlLW5vZGUiLDIwKSxHbigiY2xpY2siLGZ1bmN0aW9uKHkpe2l0KGgpO2NvbnN0IEM9UXQoKS4kaW1wbGljaXQsST1RdCgpO3JldHVybiBhKEkudHJlZU5vZGVD''@;'; put 'put ''bGlja2VkKHksQyxJLm1ldGFEYXRhTGlzdCkpfSkoImNsckV4cGFuZGVkQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gaXQoaCksYShRdCgpLiRpbXBsaWNpdC5leHBhbmRlZD15KX0pLG50KDEsInAiLDIxKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3QgeT1RdCgpLiRpbXBs''@;'; put 'put ''aWNpdCxDPVF0KCk7cmV0dXJuIEMubWV0YURhdGFJZD15LklELGEoQy5tZXRhRGF0YU9uQ2xpY2soQy5tZXRhRGF0YUlkLHkpKX0pLENyKDIsImNsci1pY29uIiwyMiksWXQoMyksb3QoKSgpfWlmKDImZCl7Y29uc3QgaD1RdCgpLiRpbXBsaWNpdDtUdCgiY2xyRXhwYW5kZWQiLGguZXhwYW5k''@;'; put 'put ''ZWQpKCJjbHJMb2FkaW5nIixoLmxvYWRpbmdUYWJsZXMmJiFoLnRhYmxlcyksdXQoMyksSmkoIiAiLGguSUQsIiAiKX19ZnVuY3Rpb24geXZ0KGQsZyl7aWYoMSZkJiYoQjAoMCkscm4oMSxBdnQsNCwzLCJjbHItdHJlZS1ub2RlIiwxOSksUDAoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0''@;'; put 'put ''O3V0KDEpLFR0KCJuZ0lmIiwhaC5oaWRkZW4pfX1mdW5jdGlvbiB3dnQoZCxnKXsxJmQmJihudCgwLCJkaXYiLDIzKSxDcigxLCJjbHItaWNvbiIsMjQpLG50KDIsImgzIiwyNSksWXQoMywiUGxlYXNlIHNlbGVjdCBhIHR5cGUiKSxvdCgpKCkpfWZ1bmN0aW9uIGJ2dChkLGcpezEmZCYmKG50''@;'; put 'put ''KDAsImg0IiksWXQoMSwiTG9hZGluZyBtZXRhZGF0YSB0eXBlcyIpLG90KCkpfWZ1bmN0aW9uIF92dChkLGcpezEmZCYmKG50KDAsImg0IiksWXQoMSwiTG9hZGluZyBtZXRhZGF0YSBvYmplY3RzIiksb3QoKSl9ZnVuY3Rpb24gQ3Z0KGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2Iikscm4oMSxi''@;'; put 'put ''dnQsMiwwLCJoNCIsMjgpLHJuKDIsX3Z0LDIsMCwiaDQiLDI4KSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoMik7dXQoMSksVHQoIm5nSWYiLGgubWV0YXR5cGVzTG9hZGluZyksdXQoMSksVHQoIm5nSWYiLCFoLm1ldGF0eXBlc0xvYWRpbmcpfX1mdW5jdGlvbiBrdnQoZCxnKXtpZigxJmQmJihu''@;'; put 'put ''dCgwLCJkaXYiLDI2KSgxLCJzcGFuIiwyNyksWXQoMiwiIExvYWRpbmcuLi4gIiksb3QoKSxybigzLEN2dCwzLDIsImRpdiIsMjgpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgpO3V0KDMpLFR0KCJuZ0lmIixoLmxvYWRpbmcpfX1mdW5jdGlvbiBTdnQoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2ko''@;'; put 'put ''KTtudCgwLCJkaXYiLDM1KSgxLCJpbnB1dCIsMzYsMzcpLEduKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gaXQoaCksYShRdCgyKS5tZXRhT2JqZWN0U2VhcmNoPXkpfSkoImtleXVwIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KDIpLm1ldGFPYmplY3RPbkZpbHRl''@;'; put 'put ''cigpKX0pLG90KCkoKX1pZigyJmQpe2NvbnN0IGg9UXQoMik7dXQoMSksVHQoIm5nTW9kZWwiLGgubWV0YU9iamVjdFNlYXJjaCl9fWZ1bmN0aW9uIE12dChkLGcpezEmZCYmQ3IoMCwiY2xyLWljb24iLDQxKX1mdW5jdGlvbiBFdnQoZCxnKXsxJmQmJkNyKDAsImNsci1pY29uIiwyMil9ZnVu''@;'; put 'put ''Y3Rpb24geHZ0KGQsZyl7aWYoMSZkJiYobnQoMCwicCIsNTIpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgpLiRpbXBsaWNpdDt1dCgxKSxKaSgiICIsaC5VUkksIiAiKX19ZnVuY3Rpb24gVHZ0KGQsZyl7aWYoMSZkJiYobnQoMCwiY2xyLXRyZWUtbm9kZSIsNDcpKDEsImRpdiIsNDgp''@;'; put 'put ''LHJuKDIsTXZ0LDEsMCwiY2xyLWljb24iLDQ5KSxybigzLEV2dCwxLDAsImNsci1pY29uIiw1MCksWXQoNCkscm4oNSx4dnQsMiwxLCJwIiw1MSksb3QoKSgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7VHQoImNsckV4cGFuZGFibGUiLCEwKSx1dCgxKSxGaSgib2JqZWN0LWhlYWRlciIs''@;'; put 'put ''IWguY291bnQpLHV0KDEpLFR0KCJuZ0lmIiwhaC5jb3VudCksdXQoMSksVHQoIm5nSWYiLGguY291bnQpLHV0KDEpLEppKCIgIixoLmRpc3BsYXksIiAiKSx1dCgxKSxUdCgibmdJZiIsIWguY291bnQpfX1mdW5jdGlvbiBJdnQoZCxnKXtpZigxJmQmJihudCgwLCJjbHItdHJlZSIsNDUpLHJu''@;'; put 'put ''KDEsVHZ0LDYsNywiY2xyLXRyZWUtbm9kZSIsNDYpLG5uKDIsImFzeW5jIiksb3QoKSksMiZkKXtjb25zdCBoPVF0KDYpO1R0KCJjbHJMYXp5IiwhMCksdXQoMSksVHQoImNsclJlY3Vyc2l2ZUZvck9mIix6dCgyLDMsaC5yb290JCkpKCJjbHJSZWN1cnNpdmVGb3JHZXRDaGlsZHJlbiIsaC5n''@;'; put 'put ''ZXRDaGlsZHJlbil9fWZ1bmN0aW9uIER2dChkLGcpe2lmKDEmZCYmKG50KDAsImNsci1hY2NvcmRpb24tY29udGVudCIpLHJuKDEsSXZ0LDMsNSwiY2xyLXRyZWUiLDQ0KSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoNSk7dXQoMSksVHQoIm5nSWYiLGguc2hvd0FjYyl9fWZ1bmN0aW9uIEx2dChk''@;'; put 'put ''LGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci1hY2NvcmRpb24tcGFuZWwiLDQwKSxHbigiY2xyQWNjb3JkaW9uUGFuZWxPcGVuQ2hhbmdlIixmdW5jdGlvbih5KXtpdChoKTtjb25zdCBDPVF0KCkuJGltcGxpY2l0LEk9UXQoMyk7cmV0dXJuIGEoeT9JLnBhbmVsQ2hhbmdlKHks''@;'; put 'put ''Qyk6IiIpfSksbnQoMSwiY2xyLWFjY29yZGlvbi10aXRsZSIpLENyKDIsImNsci1pY29uIiw0MSksWXQoMyksbnQoNCwicCIsNDIpLFl0KDUpLG90KCkoKSxybig2LER2dCwyLDEsImNsci1hY2NvcmRpb24tY29udGVudCIsNDMpLG90KCl9aWYoMiZkKXtjb25zdCBoPVF0KCkuJGltcGxpY2l0''@;'; put 'put ''O3V0KDMpLEppKCIgIixoLk5BTUUsIiAiKSx1dCgyKSxqaShoLklEKX19ZnVuY3Rpb24gT3Z0KGQsZyl7aWYoMSZkJiYoQjAoMCkscm4oMSxMdnQsNywyLCJjbHItYWNjb3JkaW9uLXBhbmVsIiwzOSksUDAoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3V0KDEpLFR0KCJuZ0lmIiwhaC5o''@;'; put 'put ''aWRkZW4pfX1mdW5jdGlvbiBSdnQoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDM4KSgxLCJjbHItYWNjb3JkaW9uIikscm4oMixPdnQsMiwxLCJuZy1jb250YWluZXIiLDQpLG90KCkoKSksMiZkKXtjb25zdCBoPVF0KDIpO3V0KDIpLFR0KCJuZ0Zvck9mIixoLm1ldGFPYmplY3RTaG93TGlz''@;'; put 'put ''dCl9fWZ1bmN0aW9uIEJ2dChkLGcpezEmZCYmQ3IoMCwiY2xyLWljb24iLDQxKX1mdW5jdGlvbiBQdnQoZCxnKXsxJmQmJkNyKDAsImNsci1pY29uIiwyMil9ZnVuY3Rpb24gRnZ0KGQsZyl7aWYoMSZkJiYobnQoMCwicCIsNTIpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgpLiRpbXBs''@;'; put 'put ''aWNpdDt1dCgxKSxKaSgiICIsaC5VUkksIiAiKX19ZnVuY3Rpb24gSHZ0KGQsZyl7aWYoMSZkJiYobnQoMCwiY2xyLXRyZWUtbm9kZSIsNDcpKDEsImRpdiIsNDgpLHJuKDIsQnZ0LDEsMCwiY2xyLWljb24iLDQ5KSxybigzLFB2dCwxLDAsImNsci1pY29uIiw1MCksWXQoNCkscm4oNSxGdnQs''@;'; put 'put ''MiwxLCJwIiw1MSksb3QoKSgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7VHQoImNsckV4cGFuZGFibGUiLCEwKSx1dCgxKSxGaSgib2JqZWN0LWhlYWRlciIsIWguY291bnQpLHV0KDEpLFR0KCJuZ0lmIiwhaC5jb3VudCksdXQoMSksVHQoIm5nSWYiLGguY291bnQpLHV0KDEpLEppKCIg''@;'; put 'put ''IixoLmRpc3BsYXksIiAiKSx1dCgxKSxUdCgibmdJZiIsIWguY291bnQpfX1mdW5jdGlvbiBOdnQoZCxnKXtpZigxJmQmJihudCgwLCJjbHItdHJlZSIsNDUpLHJuKDEsSHZ0LDYsNywiY2xyLXRyZWUtbm9kZSIsNDYpLG5uKDIsImFzeW5jIiksb3QoKSksMiZkKXtjb25zdCBoPVF0KDQpO1R0''@;'; put 'put ''KCJjbHJMYXp5IiwhMCksdXQoMSksVHQoImNsclJlY3Vyc2l2ZUZvck9mIix6dCgyLDMsaC5yb290JCkpKCJjbHJSZWN1cnNpdmVGb3JHZXRDaGlsZHJlbiIsaC5nZXRDaGlsZHJlbil9fWZ1bmN0aW9uIFZ2dChkLGcpe2lmKDEmZCYmKEIwKDApLG50KDEsImRpdiIsNTMpLENyKDIsImNsci1p''@;'; put 'put ''Y29uIiw0MSksbnQoMywiZGl2Iiw1NCkoNCwicCIsNTUpLFl0KDUpLG90KCksbnQoNiwicCIsNTYpLFl0KDcpLG90KCkoKSgpLHJuKDgsTnZ0LDMsNSwiY2xyLXRyZWUiLDQ0KSxQMCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQsdj1RdCgzKTt1dCg1KSxKaSgiICIsaC5OQU1FLCIgIiks''@;'; put 'put ''dXQoMiksSmkoIiAiLGguSUQsIiAiKSx1dCgxKSxUdCgibmdJZiIsdi5zaG93QWNjKX19ZnVuY3Rpb24ganZ0KGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2IiwzOCkscm4oMSxWdnQsOSwzLCJuZy1jb250YWluZXIiLDQpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgyKTt1dCgxKSxUdCgibmdGb3JP''@;'; put 'put ''ZiIsaC5tZXRhT2JqZWN0U2hvd0xpc3QpfX1mdW5jdGlvbiBadnQoZCxnKXtpZigxJmQmJihudCgwLCJjbHItZGctcm93IikoMSwiY2xyLWRnLWNlbGwiKSxZdCgyKSxvdCgpLG50KDMsImNsci1kZy1jZWxsIiksWXQoNCksb3QoKSxudCg1LCJjbHItZGctY2VsbCIpLFl0KDYpLG90KCkoKSks''@;'; put 'put ''MiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3V0KDIpLGppKGguVFlQRSksdXQoMiksamkoaC5OQU1FKSx1dCgyKSxqaShoLlZBTFVFKX19Y29uc3QgenZ0PWZ1bmN0aW9uKCl7cmV0dXJuWzEwLDIwLDUwLDEwMF19O2Z1bmN0aW9uIEd2dChkLGcpe2lmKDEmZCYmKG50KDAsImNsci1kYXRhZ3Jp''@;'; put 'put ''ZCIsNTcpKDEsImNsci1kZy1jb2x1bW4iKSxZdCgyLCIgVFlQRSAiKSxDcigzLCJjbHItZGctc3RyaW5nLWZpbHRlciIsNTgpLG90KCksbnQoNCwiY2xyLWRnLWNvbHVtbiIpLFl0KDUsIiBOQU1FICIpLENyKDYsImNsci1kZy1zdHJpbmctZmlsdGVyIiw1OCksb3QoKSxudCg3LCJjbHItZGct''@;'; put 'put ''Y29sdW1uIiksWXQoOCwiIFZBTFVFICIpLENyKDksImNsci1kZy1zdHJpbmctZmlsdGVyIiw1OCksb3QoKSxybigxMCxadnQsNywzLCJjbHItZGctcm93Iiw1OSksbnQoMTEsImNsci1kZy1mb290ZXIiKSgxMiwiY2xyLWRnLXBhZ2luYXRpb24iLDYwLDYxKSgxNCwiY2xyLWRnLXBhZ2Utc2l6''@;'; put 'put ''ZSIsNjIpLFl0KDE1LCJBdHRyaWJ1dGVzIHBlciBwYWdlIiksb3QoKSxZdCgxNiksb3QoKSgpKCkpLDImZCl7Y29uc3QgaD12YSgxMyksdj1RdCgyKTt1dCgzKSxUdCgiY2xyRGdTdHJpbmdGaWx0ZXIiLHYudHlwZUZpbHRlciksdXQoMyksVHQoImNsckRnU3RyaW5nRmlsdGVyIix2Lm5hbWVG''@;'; put 'put ''aWx0ZXIpLHV0KDMpLFR0KCJjbHJEZ1N0cmluZ0ZpbHRlciIsdi52YWx1ZUZpbHRlciksdXQoMSksVHQoImNsckRnSXRlbXNPZiIsdi5tZXRhT2JqZWN0QXR0cmlidXRlcyksdXQoMiksVHQoImNsckRnUGFnZVNpemUiLDEwKSx1dCgyKSxUdCgiY2xyUGFnZVNpemVPcHRpb25zIixjcyg5LHp2''@;'; put 'put ''dCkpLHV0KDIpLGtmKCIgIixoLmZpcnN0SXRlbSsxLCIgLSAiLGgubGFzdEl0ZW0rMSwiIG9mICIsaC50b3RhbEl0ZW1zLCIgQXR0cmlidXRlcyAiKX19ZnVuY3Rpb24gV3Z0KGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2IiwyOSkoMSwiZGl2IiwzMCkscm4oMixTdnQsMywxLCJkaXYiLDMxKSxD''@;'; put 'put ''cigzLCJiciIpLHJuKDQsUnZ0LDMsMSwiZGl2IiwzMikscm4oNSxqdnQsMiwxLCJkaXYiLDMyKSxvdCgpLG50KDYsImRpdiIsMzMpKDcsImgzIiksWXQoOCksb3QoKSxybig5LEd2dCwxNywxMCwiY2xyLWRhdGFncmlkIiwzNCksb3QoKSgpKSwyJmQpe2NvbnN0IGg9UXQoKTt1dCgyKSxUdCgi''@;'; put 'put ''bmdJZiIsaC5tZXRhT2JqZWN0TGlzdCYmIWgub2JqZWN0Um91dGUpLHV0KDIpLFR0KCJuZ0lmIiwhaC5vYmplY3RWaWV3KSx1dCgxKSxUdCgibmdJZiIsaC5vYmplY3RWaWV3KSx1dCgzKSxqaShoLmFzc29PYmplY3RTZWxlY3RlZCksdXQoMSksVHQoIm5nSWYiLGguc2hvd1RhYmxlKX19bGV0''@;'; put 'put ''IE9tZT0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKGgsdix5LEMsSSxaKXt0aGlzLmV2ZW50U2VydmljZT1oLHRoaXMuc2FzU2VydmljZT12LHRoaXMuaGVscGVyU2VydmljZT15LHRoaXMubG9jYXRpb249Qyx0aGlzLnJvdXRlcj1JLHRoaXMucm91dGU9Wix0aGlzLm1ldGFEYXRhU2VhcmNo''@;'; put 'put ''PSIiLHRoaXMubWV0YU9iamVjdFNlYXJjaD0iIix0aGlzLm1ldGFPYmplY3RBc3NvY2lhdGlvbnM9W10sdGhpcy5tZXRhT2JqZWN0QXR0cmlidXRlcz1bXSx0aGlzLnNob3dUYWJsZT0hMSx0aGlzLnNob3dBY2M9ITEsdGhpcy5tZXRhRGF0YUlkPSIiLHRoaXMubG9hZGluZz0hMCx0aGlzLm1l''@;'; put 'put ''dGF0eXBlc0xvYWRpbmc9ITAsdGhpcy5tZXRhT2JqZWN0U2l6ZT0yMDAsdGhpcy5hc3NvVHlwZVNlbGVjdGVkPSIiLHRoaXMuYXNzb09iamVjdFNlbGVjdGVkPSIiLHRoaXMucmVwb3NpdG9yeT0iIix0aGlzLm9iamVjdFJvdXRlPSExLHRoaXMuc2hvd0RhdGE9ITEsdGhpcy5vYmplY3RWaWV3''@;'; put 'put ''PSExLHRoaXMuZ2V0Q2hpbGRyZW49dWU9PnVlLmNvdW50P2FhKHVlLmRldGFpbHMpOnRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJtZXRhbmF2L21ldGFkZXRhaWxzIix7U0FTQ29udHJvbFRhYmxlOlt7b2JqZWN0dXJpOnVlLkFTU09DVVJJfV19KS50aGVuKEJlPT57dGhpcy5zaG93VGFibGU9''@;'; put 'put ''ITAsdGhpcy5tZXRhT2JqZWN0QXR0cmlidXRlcz1CZS5hdHRyaWJ1dGVzLHRoaXMuYXNzb09iamVjdFNlbGVjdGVkPXVlLk5BTUU7bGV0IE5lPXRoaXMucm91dGVyLnVybDtyZXR1cm4gdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodGhpcy5vYmplY3RSb3V0ZT9OZS5zbGljZSgwLE5lLmxh''@;'; put 'put ''c3RJbmRleE9mKCJvYmplY3QiKSkrIm9iamVjdC8iK3VlLkFTU09DVVJJLnNsaWNlKDErdWUuQVNTT0NVUkkuaW5kZXhPZigiXFwiKSk6TmUrIi9vYmplY3QvIit1ZS5BU1NPQ1VSSS5zbGljZSgxK3VlLkFTU09DVVJJLmluZGV4T2YoIlxcIikpKSx0aGlzLmdldEFzc29zaWF0aW9uc0NvdW50''@;'; put 'put ''KEJlLmFzc29jaWF0aW9ucyl9KSx0aGlzLmRlYm91bmNlPSExfW5nT25Jbml0KCl7bmkudmlld2VyLmN1cnJlbnRTZWxlY3Rpb249InZpZXcvbWV0YWRhdGEiLHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygiL3ZpZXcvbWV0YWRhdGEvb2JqZWN0LyIpJiYodGhpcy5vYmplY3RSb3V0ZT0hMCx0''@;'; put 'put ''aGlzLm9iamVjdFZpZXc9ITApLHRoaXMucGFnZVNpemU9NSxuaS5tZXRhZGF0YS5tZXRhRGF0YUxpc3QmJm5pLm1ldGFkYXRhLm1ldGFSZXBvc2l0b3JpZXMmJiF0aGlzLm9iamVjdFJvdXRlPyh0aGlzLm1ldGFEYXRhTGlzdD1uaS5tZXRhZGF0YS5tZXRhRGF0YUxpc3QsdGhpcy5yZXBvc2l0''@;'; put 'put ''b3JpZXM9bmkubWV0YWRhdGEubWV0YVJlcG9zaXRvcmllcyx0aGlzLnJlcG9zaXRvcnk9bmkubWV0YWRhdGEuc2VsZWN0ZWRSZXBvc2l0b3J5LHRoaXMubG9hZGluZz0hMSx0aGlzLm1ldGF0eXBlc0xvYWRpbmc9ITEsdGhpcy5tZXRhRGF0YVNlYXJjaD1uaS5tZXRhZGF0YS5tZXRhRGF0YVNl''@;'; put 'put ''YXJjaCk6KHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJtZXRhbmF2L21ldGF0eXBlcyIsbnVsbCkudGhlbihoPT57dGhpcy5tZXRhRGF0YUxpc3Q9aC50eXBlcyxuaS5tZXRhZGF0YS5tZXRhRGF0YUxpc3Q9dGhpcy5tZXRhRGF0YUxpc3QsdGhpcy5sb2FkaW5nPSExLHRoaXMubWV0YXR5cGVz''@;'; put 'put ''TG9hZGluZz0hMX0pLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJtZXRhbmF2L21ldGFyZXBvcyIsbnVsbCkudGhlbihoPT57bGV0IHY9ITE7dGhpcy5yZXBvc2l0b3JpZXM9W107Zm9yKGxldCB5PTA7eTxoLm91dHJlcG9zLmxlbmd0aDt5KyspdGhpcy5yZXBvc2l0b3JpZXMucHVzaChoLm91''@;'; put 'put ''dHJlcG9zW3ldLk5BTUUpLCJGb3VuZGF0aW9uIj09PWgub3V0cmVwb3NbeV0uTkFNRSYmKHY9ITApO2lmKHRoaXMucmVwb3NpdG9yeT12PyJGb3VuZGF0aW9uIjpoLm91dHJlcG9zWzBdLk5BTUUsbmkubWV0YWRhdGEubWV0YVJlcG9zaXRvcmllcz10aGlzLnJlcG9zaXRvcmllcyxuaS5tZXRh''@;'; put 'put ''ZGF0YS5zZWxlY3RlZFJlcG9zaXRvcnk9dGhpcy5yZXBvc2l0b3J5LHRoaXMub2JqZWN0Um91dGUpe3RoaXMuZXZlbnRTZXJ2aWNlLmNsb3NlU2lkZWJhcigpLHRoaXMuc2hvd0RhdGE9ITA7bGV0IHk9IiIsQz10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5vYmplY3RJRDt0aGlzLm1ldGFP''@;'; put 'put ''YmplY3RMaXN0PVtdLHRoaXMubWV0YU9iamVjdExpc3QucHVzaCh7SUQ6QyxOQU1FOnl9KSx0aGlzLm1ldGFPYmplY3RTaG93TGlzdD10aGlzLm1ldGFPYmplY3RMaXN0LHRoaXMubWV0YU9iamVjdE9uQ2xpY2sodGhpcy5tZXRhT2JqZWN0U2hvd0xpc3RbMF0uSUQsdGhpcy5tZXRhT2JqZWN0''@;'; put 'put ''U2hvd0xpc3RbMF0pfX0pKX10cmVlTm9kZUNsaWNrZWQoaCx2LHkpeyJDb2xsYXBzZSI9PT1oLnRhcmdldC50aXRsZSYmdGhpcy5jb2xsYXBzZVRyZWVJdGVtcyh5LHYpfWNvbGxhcHNlVHJlZUl0ZW1zKGgsdil7aC5mb3JFYWNoKHk9PntKU09OLnN0cmluZ2lmeSh5KSE9PUpTT04uc3RyaW5n''@;'; put 'put ''aWZ5KHYpJiYoeS5leHBhbmRlZD0hMSl9KX1tZXRhRGF0YU9uQ2xpY2soaCx2KXt0aGlzLm9iamVjdFZpZXc9ITEsdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoIi92aWV3L21ldGFkYXRhIiksdGhpcy5zaG93RGF0YT0hMSx0aGlzLmxvYWRpbmc9ITAsdGhpcy5zZWxlY3RtZXRhRGF0YSho''@;'; put 'put ''LHYpfW1ldGFPYmplY3RPbkNsaWNrKGgsdil7dGhpcy5hc3NvT2JqZWN0U2VsZWN0ZWQ9IiAuICIsdGhpcy5zaG93QWNjPSExLHRoaXMubWV0YU9iamVjdEF0dHJpYnV0ZXM9W10sdGhpcy5zZWxlY3RtZXRhT2JqZWN0KGgsdil9c2VsZWN0bWV0YURhdGEoaCx2KXtyZXR1cm4gbm8odGhpcyx2''@;'; put 'put ''b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJtZXRhbmF2L21ldGFvYmplY3RzIix7U0FTQ29udHJvbFRhYmxlOlt7bWV0YXR5cGU6aCxyZXBvOnRoaXMucmVwb3NpdG9yeX1dfSkudGhlbihDPT57dGhpcy5tZXRhT2JqZWN0TGlzdD1DLm9iamVjdHMs''@;'; put 'put ''dGhpcy5nZXRNZXRhT2JqZWN0QXR0cmlidXRlcyh0aGlzLm1ldGFPYmplY3RTaXplKSx0aGlzLmxvYWRpbmc9ITEsdGhpcy5hc3NvVHlwZVNlbGVjdGVkPWgsdGhpcy5ldmVudFNlcnZpY2UuY2xvc2VTaWRlYmFyKCksdGhpcy5zaG93RGF0YT0hMH0pfSl9c2VsZWN0bWV0YU9iamVjdChoLHYp''@;'; put 'put ''e3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoIm1ldGFuYXYvbWV0YWRldGFpbHMiLHtTQVNDb250cm9sVGFibGU6W3tvYmplY3R1cmk6aH1dfSkudGhlbihDPT57dGhpcy5tZXRhT2JqZWN0QXNzb2NpYXRpb25zPUMuYXNz''@;'; put 'put ''b2NpYXRpb25zLHRoaXMucm9vdCQ9YWEodGhpcy5nZXRBc3Nvc2lhdGlvbnNDb3VudChDLmFzc29jaWF0aW9ucykpLHRoaXMuc2hvd0FjYz0hMCx0aGlzLnNob3dUYWJsZT0hMDtsZXQgST1DLmF0dHJpYnV0ZXMuZmluZCh1ZT0+Ik5hbWUiPT09dWUuTkFNRSkuVkFMVUU7dGhpcy5hc3NvT2Jq''@;'; put 'put ''ZWN0U2VsZWN0ZWQ9SSx2Lk5BTUU9STtsZXQgWj10aGlzLnJvdXRlci51cmw7dGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodGhpcy5vYmplY3RSb3V0ZT9aLnNsaWNlKDAsWi5sYXN0SW5kZXhPZigib2JqZWN0IikpKyJvYmplY3QvIitoLnNsaWNlKDEraC5pbmRleE9mKCJcXCIpKTpaKyIv''@;'; put 'put ''b2JqZWN0LyIraC5zbGljZSgxK2guaW5kZXhPZigiXFwiKSkpLHRoaXMubWV0YU9iamVjdEF0dHJpYnV0ZXM9Qy5hdHRyaWJ1dGVzfSl9KX1zZWxlY3RBc3Nvc2lhdGlvbnNEZXRhaWxzKGgsdil7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt0aGlzLnNhc1NlcnZp''@;'; put 'put ''Y2UucmVxdWVzdCgibWV0YW5hdi9tZXRhZGV0YWlscyIse1NBU0NvbnRyb2xUYWJsZTpbe29iamVjdHVyaTpofV19KS50aGVuKEM9Pnt0aGlzLm1ldGFPYmplY3RBdHRyaWJ1dGVzPUMuYXR0cmlidXRlcyx0aGlzLnNob3dUYWJsZT0hMH0pfSl9Z2V0QXNzb3NpYXRpb25zQ291bnQoaCl7bGV0''@;'; put 'put ''IHY9bmV3IE1hcDtmb3IobGV0IEMgb2YgaCl7di5oYXMoQy5BU1NPQyl8fHYuc2V0KEMuQVNTT0Mse2NvdW50OjAsZGV0YWlsczpbXX0pO2xldCBJPXYuZ2V0KEMuQVNTT0MpO0kuY291bnQrKyxJLmRldGFpbHMucHVzaCh7QVNTT0NVUkk6Qy5BU1NPQ1VSSSxOQU1FOkMuTkFNRSxkaXNwbGF5''@;'; put 'put ''OkMuTkFNRSxVUkk6Qy5BU1NPQ1VSSS5zbGljZShDLkFTU09DVVJJLmluZGV4T2YoIjoiKSsxKX0pfWxldCB5PVtdO3JldHVybiB2LmZvckVhY2goZnVuY3Rpb24oQyxJKXt5LnB1c2goe0FTU09DOkksY291bnQ6Qy5jb3VudCxkZXRhaWxzOkMuZGV0YWlscyxkaXNwbGF5OkkrIiAoICIrQy5j''@;'; put 'put ''b3VudCsiICkifSl9KSx5fXNldFR5cGVBc3Nvc2lhdGlvbnMoaCl7bGV0IHY9W107Zm9yKGxldCB5IG9mIHRoaXMubWV0YU9iamVjdEFzc29jaWF0aW9ucyl5LkFTU09DPT09aCYmdi5wdXNoKHkpO3JldHVybiB0aGlzLmFzc29zaWF0aW9uTmFtZXM9dix2fWFzc29zaWF0aW9uTmFtZU9uQ2xp''@;'; put 'put ''Y2soaCl7dGhpcy5hc3NvT2JqZWN0U2VsZWN0ZWQ9IiAuICIsdGhpcy5tZXRhT2JqZWN0QXR0cmlidXRlcz1bXSx0aGlzLnNob3dUYWJsZT0hMSx0aGlzLnNlbGVjdEFzc29zaWF0aW9uc0RldGFpbHMoaCl9bWV0YUxpc3RPbkZpbHRlcigpe3RoaXMuaGVscGVyU2VydmljZS5saWJyYXJ5T25G''@;'; put 'put ''aWx0ZXIodGhpcy5tZXRhRGF0YUxpc3QsdGhpcy5tZXRhRGF0YVNlYXJjaCwiSUQiKSxuaS5tZXRhZGF0YS5tZXRhRGF0YVNlYXJjaD10aGlzLm1ldGFEYXRhU2VhcmNofW1ldGFPYmplY3RPbkZpbHRlcigpe3RoaXMubWV0YU9iamVjdEF0dHJpYnV0ZXM9W10sdGhpcy5oZWxwZXJTZXJ2aWNl''@;'; put 'put ''Lm1ldGFPYmplY3RPbkZpbHRlcih0aGlzLm1ldGFPYmplY3RMaXN0LHRoaXMubWV0YU9iamVjdFNlYXJjaCwiTkFNRSIpLHRoaXMuZ2V0TWV0YU9iamVjdEF0dHJpYnV0ZXModGhpcy5tZXRhT2JqZWN0U2l6ZSksbmkubWV0YWRhdGEubWV0YU9iamVjdFNlYXJjaD10aGlzLm1ldGFPYmplY3RT''@;'; put 'put ''ZWFyY2h9Z2V0TWV0YU9iamVjdEF0dHJpYnV0ZXMoaCl7aWYodm9pZCAwIT09dGhpcy5tZXRhT2JqZWN0TGlzdCYmdGhpcy5tZXRhT2JqZWN0TGlzdC5sZW5ndGg+aCl7bGV0IHY9MCx5PS0xO2ZvcihsZXQgQz0wO0M8dGhpcy5tZXRhT2JqZWN0TGlzdC5sZW5ndGg7QysrKWlmKCh2b2lkIDA9''@;'; put 'put ''PT10aGlzLm1ldGFPYmplY3RMaXN0W0NdLmhpZGRlbnx8ITE9PT10aGlzLm1ldGFPYmplY3RMaXN0W0NdLmhpZGRlbikmJnYrKyx2PT09aCl7eT1DO2JyZWFrfXRoaXMubWV0YU9iamVjdFNob3dMaXN0PS0xIT09eT90aGlzLm1ldGFPYmplY3RMaXN0LnNsaWNlKDAseSk6dGhpcy5tZXRhT2Jq''@;'; put 'put ''ZWN0TGlzdH1lbHNlIHRoaXMubWV0YU9iamVjdFNob3dMaXN0PXRoaXMubWV0YU9iamVjdExpc3R9cGFuZWxDaGFuZ2UoaCx2KXt0aGlzLmRlYm91bmNlfHwodGhpcy5tZXRhT2JqZWN0T25DbGljayh2LklELHYpLHRoaXMuZGVib3VuY2U9ITAsc2V0VGltZW91dCgoKT0+e3RoaXMuZGVib3Vu''@;'; put 'put ''Y2U9ITF9LDYwMCkpfXVwZGF0ZVNlbGVjdGVkUmVwb3NpdG9yeSgpe25pLm1ldGFkYXRhLnNlbGVjdGVkUmVwb3NpdG9yeT10aGlzLnJlcG9zaXRvcnl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KG11KSxLdChnMiksS3QoWGMpLEt0KFY2KSxL''@;'; put 'put ''dChabCksS3QoUHUpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLW1ldGFkYXRhIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczoxNSx2YXJzOjcsY29uc3RzOltbMSwicmVwby1kcm9wZG93biJdLFsiY2xyU2VsZWN0IiwiIiwiaWQi''@;'; put 'put ''LCJyZXBvc2l0b3J5IiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImNoYW5nZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsInNlYXJjaC1ub2RlIiw0LCJuZ0lmIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjb250ZW50LWFyZWEiXSxbMSwiY2Fy''@;'; put 'put ''ZCIsImJhY2tncm91bmQtdHJhbnNwYXJlbnQtaSJdLFsiY2xhc3MiLCJuby10YWJsZS1zZWxlY3RlZCIsNCwibmdJZiJdLFsiY2xhc3MiLCJsb2FkaW5nU3Bpbm5lciIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItcm93IGNsci1mbGV4LWdyb3ctMSIsNCwibmdJZiJdLFszLCJ2YWx1ZSJdLFsx''@;'; put 'put ''LCJzZWFyY2gtbm9kZSJdLFsxLCJ0cmVlLXNlYXJjaC13cmFwcGVyIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwic2VhcmNoIFNBUyBUeXBlcyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCJdLFsi''@;'; put 'put ''c2VhcmNoTGliVHJlZUlucHV0IiwiIl0sWyJzaGFwZSIsInNlYXJjaCIsNCwibmdJZiJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siLDQsIm5nSWYiXSxbInNoYXBlIiwic2VhcmNoIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayJdLFszLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmci''@;'; put 'put ''LCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIiw0LCJuZ0lmIl0sWzMsImNsckV4cGFuZGVkIiwiY2xyTG9hZGluZyIsImNsaWNrIiwiY2xyRXhwYW5kZWRDaGFuZ2UiXSxbMSwibS0wIiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsImJsb2NrIl0sWzEsIm5vLXRhYmxl''@;'; put 'put ''LXNlbGVjdGVkIl0sWyJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQiLCJzaXplIiwiNjAiLDEsImlzLWluZm8iLCJpY29uLWRjLWZpbGwiXSxbMSwidGV4dC1jZW50ZXIiLCJjb2xvci1ncmF5Il0sWzEsImxvYWRpbmdTcGlubmVyIl0sWzEsInNwaW5uZXIiXSxbNCwibmdJZiJdLFsxLCJjbHIt''@;'; put 'put ''cm93IiwiY2xyLWZsZXgtZ3Jvdy0xIl0sWzEsImNsci1jb2wtNiJdLFsiY2xhc3MiLCJzZWFyY2gtaW5wdXQiLDQsIm5nSWYiXSxbImNsYXNzIiwib2JqZWN0cy1jb2wiLDQsIm5nSWYiXSxbMSwiY2xyLWNvbC02IiwidGV4dC1jZW50ZXIiXSxbImNsYXNzIiwiZGF0YWdyaWQtY3VzdG9tLWZv''@;'; put 'put ''b3RlciIsNCwibmdJZiJdLFsxLCJzZWFyY2gtaW5wdXQiXSxbImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIiLCJzZWFyY2giLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiXSxbInNlYXJjaE9ialRyZWVJbnB1''@;'; put 'put ''dCIsIiJdLFsxLCJvYmplY3RzLWNvbCJdLFszLCJjbHJBY2NvcmRpb25QYW5lbE9wZW5DaGFuZ2UiLDQsIm5nSWYiXSxbMywiY2xyQWNjb3JkaW9uUGFuZWxPcGVuQ2hhbmdlIl0sWyJzaGFwZSIsInJhY2stc2VydmVyIl0sWzEsImZsb2F0LXJpZ2h0Il0sWzQsImNscklmRXhwYW5kZWQiXSxb''@;'; put 'put ''MywiY2xyTGF6eSIsNCwibmdJZiJdLFszLCJjbHJMYXp5Il0sWzMsImNsckV4cGFuZGFibGUiLDQsImNsclJlY3Vyc2l2ZUZvciIsImNsclJlY3Vyc2l2ZUZvck9mIiwiY2xyUmVjdXJzaXZlRm9yR2V0Q2hpbGRyZW4iXSxbMywiY2xyRXhwYW5kYWJsZSJdLFsxLCJmdWxsLXdpZHRoIl0sWyJz''@;'; put 'put ''aGFwZSIsInJhY2stc2VydmVyIiw0LCJuZ0lmIl0sWyJzaGFwZSIsImJsb2NrIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImZsb2F0LXJpZ2h0IG9iamVjdC11cmkiLDQsIm5nSWYiXSxbMSwiZmxvYXQtcmlnaHQiLCJvYmplY3QtdXJpIl0sWzEsImNvbHMtaGVhZCJdLFsxLCJvYmplY3QtdGV4dCJd''@;'; put 'put ''LFsxLCJtLTAiLCJ3b3JkLWJyZWFrIiwibXItMjAiXSxbMSwiZmxvYXQtcmlnaHQiLCJtbC0zIl0sWzEsImRhdGFncmlkLWN1c3RvbS1mb290ZXIiXSxbMywiY2xyRGdTdHJpbmdGaWx0ZXIiXSxbNCwiY2xyRGdJdGVtcyIsImNsckRnSXRlbXNPZiJdLFszLCJjbHJEZ1BhZ2VTaXplIl0sWyJw''@;'; put 'put ''YWdpbmF0aW9uIiwiIl0sWzMsImNsclBhZ2VTaXplT3B0aW9ucyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYmKG50KDAsImFwcC1zaWRlYmFyIikoMSwiZGl2IiwwKSgyLCJjbHItc2VsZWN0LWNvbnRhaW5lciIpKDMsImxhYmVsIiksWXQoNCwiTWV0YWRhdGEgUmVwb3NpdG9yeSIp''@;'; put 'put ''LG90KCksbnQoNSwic2VsZWN0IiwxKSxHbigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYucmVwb3NpdG9yeT1DfSkoImNoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gdi51cGRhdGVTZWxlY3RlZFJlcG9zaXRvcnkoKX0pLHJuKDYscHZ0LDIsMiwib3B0aW9uIiwyKSxvdCgp''@;'; put 'put ''KCkoKSxudCg3LCJjbHItdHJlZSIpLHJuKDgsdnZ0LDYsMywiY2xyLXRyZWUtbm9kZSIsMykscm4oOSx5dnQsMiwxLCJuZy1jb250YWluZXIiLDQpLG90KCkoKSxudCgxMCwiZGl2Iiw1KSgxMSwiZGl2Iiw2KSxybigxMix3dnQsNCwwLCJkaXYiLDcpLHJuKDEzLGt2dCw0LDEsImRpdiIsOCks''@;'; put 'put ''cm4oMTQsV3Z0LDEwLDUsImRpdiIsOSksb3QoKSgpKSwyJmgmJih1dCg1KSxUdCgibmdNb2RlbCIsdi5yZXBvc2l0b3J5KSx1dCgxKSxUdCgibmdGb3JPZiIsdi5yZXBvc2l0b3JpZXMpLHV0KDIpLFR0KCJuZ0lmIix2Lm1ldGFEYXRhTGlzdCksdXQoMSksVHQoIm5nRm9yT2YiLHYubWV0YURh''@;'; put 'put ''dGFMaXN0KSx1dCgzKSxUdCgibmdJZiIsIXYubG9hZGluZyYmIXYubWV0YU9iamVjdExpc3QpLHV0KDEpLFR0KCJuZ0lmIix2LmxvYWRpbmcpLHV0KDEpLFR0KCJuZ0lmIix2LnNob3dEYXRhKSl9LGRlcGVuZGVuY2llczpbeHMsTm8sJDMscTMsbTEsT2YsVHMsSXMsR0wsZ1MsekwsbVMsaHll''@;'; put 'put ''LG13LGZaLGhaLCRmZSxZTCxBUyx5Uyx2UyxwdyxWTCxaTCxGZmUseXYsX2cseXllLHdsLGdvLEZmLGF0LHB2LG9aLGlaLEskLE9MLHEkLCQkLGVxLFFqLE1TLFdoXSxzdHlsZXM6WyIub2JqZWN0cy1jb2xbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo3NXZoO292ZXJmbG93OnNjcm9sbDti''@;'; put 'put ''b3JkZXI6MXB4IHNvbGlkICNjY2NjY2M7YmFja2dyb3VuZDp3aGl0ZTtib3JkZXItcmFkaXVzOjRweH0uY29scy1oZWFkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmYWZhZmE7Ym9yZGVyOjFweCBzb2xpZCAjY2NjY2NjO3BhZGRpbmc6MTBweDtkaXNwbGF5OmZsZXh9Lm9iamVj''@;'; put 'put ''dC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjttYXJnaW4tbGVmdDoxMHB4O2ZsZXg6MX0ucmVwby1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXJpZ2h0OjE1''@;'; put 'put ''cHg7bWFyZ2luLWxlZnQ6MTVweDttYXJnaW4tYm90dG9tOjEwcHh9LmNsci1hY2NvcmRpb24tdGl0bGVbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LmZsb2F0LXJpZ2h0W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MDtmbG9hdDpyaWdodH0uZnVsbC13aWR0aFtfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV17d2lkdGg6MTAwJX0ub2JqZWN0LXVyaVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjVweCAwIDB9Lm9iamVjdC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctbGVmdDozcHg7cGFkZGluZy1yaWdodDozcHh9Lm9iamVjdC1oZWFkZXJbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2Q4ZTNlOTtib3JkZXItcmFkaXVzOjNweH0uZGF0YWdyaWQtaG9zdFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTp1bnNldCFpbXBvcnRhbnR9LmNhcmRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MDtmbGV4OjE7ZGlzcGxheTpm''@;'; put 'put ''bGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY29udGVudC1hcmVhW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41cmVtIWltcG9ydGFudDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufSJdfSksZC5cdTAyNzVwcm92PUFpKHt0b2tlbjpkLGZhY3Rvcnk6ZC5cdTAyNzVm''@;'; put 'put ''YWMscHJvdmlkZWRJbjoicm9vdCJ9KSxkfSkoKTtmdW5jdGlvbiBZdnQoZCxnKXsxJmQmJkNyKDAsImNsci1pY29uIiwxMil9ZnVuY3Rpb24gVXZ0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiY2xyLWljb24iLDEzKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3Qg''@;'; put 'put ''eT1RdCgyKTtyZXR1cm4geS5yb2xlU2VhcmNoPSIiLGEoeS5yb2xlTGlzdE9uRmlsdGVyKCkpfSksb3QoKX19ZnVuY3Rpb24gUXZ0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiY2xyLXRyZWUtbm9kZSIsNikoMSwiZGl2Iiw3KSgyLCJpbnB1dCIsOCw5KSxHbigibmdNb2RlbENo''@;'; put 'put ''YW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoKS5yb2xlU2VhcmNoPXkpfSkoImtleXVwIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KCkucm9sZUxpc3RPbkZpbHRlcigpKX0pLG90KCkscm4oNCxZdnQsMSwwLCJjbHItaWNvbiIsMTApLHJuKDUsVXZ0LDEsMCwiY2xy''@;'; put 'put ''LWljb24iLDExKSxvdCgpKCl9aWYoMiZkKXtjb25zdCBoPXZhKDMpLHY9UXQoKTt1dCgyKSxUdCgibmdNb2RlbCIsdi5yb2xlU2VhcmNoKSx1dCgyKSxUdCgibmdJZiIsaC52YWx1ZS5sZW5ndGg8MSksdXQoMSksVHQoIm5nSWYiLGgudmFsdWUubGVuZ3RoPjApfX1mdW5jdGlvbiBKdnQoZCxn''@;'; put 'put ''KXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJjbHItdHJlZS1ub2RlIiwxNSksR24oImNsaWNrIixmdW5jdGlvbigpe2l0KGgpO2NvbnN0IHk9UXQoKS4kaW1wbGljaXQ7cmV0dXJuIGEoUXQoKS5yb2xlT25DbGljayh5KSl9KSxudCgxLCJwIiwxNiksQ3IoMiwiY2xyLWljb24iLDE3KSxZ''@;'; put 'put ''dCgzKSxvdCgpKCl9aWYoMiZkKXtjb25zdCBoPVF0KCkuJGltcGxpY2l0LHY9UXQoKTtGaSgidGFibGUtYWN0aXZlIixoLlJPTEVVUkk9PT12LnJvbGVVcmkpLHV0KDMpLEppKCIgIixoLlJPTEVOQU1FLCIgIil9fWZ1bmN0aW9uIFh2dChkLGcpe2lmKDEmZCYmKEIwKDApLHJuKDEsSnZ0LDQs''@;'; put 'put ''MywiY2xyLXRyZWUtbm9kZSIsMTQpLFAwKCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDt1dCgxKSxUdCgibmdJZiIsIWguaGlkZGVuKX19ZnVuY3Rpb24gS3Z0KGQsZyl7MSZkJiYobnQoMCwiZGl2IiwxOCkoMSwic3BhbiIsMTkpLFl0KDIsIiBMb2FkaW5nLi4uICIpLG90KCkoKSl9ZnVu''@;'; put 'put ''Y3Rpb24gJHZ0KGQsZyl7MSZkJiYobnQoMCwiaDUiKSxZdCgxLCJObyBNZW1iZXJzIFByZXNlbnQiKSxvdCgpKX1mdW5jdGlvbiBxdnQoZCxnKXtpZigxJmQmJihudCgwLCJ0ciIsMzIpKDEsInRkIiwzMCksWXQoMiksb3QoKSxudCgzLCJ0ZCIsMzApLFl0KDQpLG90KCksbnQoNSwidGQiLDMw''@;'; put 'put ''KSxZdCg2KSxvdCgpLG50KDcsInRkIiwzMCksWXQoOCksb3QoKSgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7VHQoInJvdXRlckxpbmsiLCIvdmlldy91c2VybmF2L3VzZXJzLyIraC5VUklNRU0pLHV0KDIpLGppKGguTUVNQkVSTkFNRSksdXQoMiksamkoaC5FTUFJTCksdXQoMiksamko''@;'; put 'put ''aC5NRU1CRVJDUkVBVEVEKSx1dCgyKSxqaShoLk1FTUJFUlVQREFURUQpfX1mdW5jdGlvbiBlOXQoZCxnKXtpZigxJmQmJihudCgwLCJ0YWJsZSIsMjgpKDEsInRoZWFkIikoMiwidHIiKSgzLCJ0ZCIsMjkpKDQsImIiKSxZdCg1LCJOQU1FIiksb3QoKSgpLG50KDYsInRkIiwyOSkoNywiYiIp''@;'; put 'put ''LFl0KDgsIkVNQUlMIiksb3QoKSgpLG50KDksInRkIiwyOSkoMTAsImIiKSxZdCgxMSwiQ1JFQVRFRCIpLG90KCkoKSxudCgxMiwidGQiLDMwKSgxMywiYiIpLFl0KDE0LCJVUERBVEVEIiksb3QoKSgpKCkoKSxudCgxNSwidGJvZHkiKSxybigxNixxdnQsOSw1LCJ0ciIsMzEpLG90KCkoKSks''@;'; put 'put ''MiZkKXtjb25zdCBoPVF0KDIpO3V0KDE2KSxUdCgibmdGb3JPZiIsaC5yb2xlTWVtYmVycyl9fWZ1bmN0aW9uIHQ5dChkLGcpezEmZCYmKG50KDAsImg1IiksWXQoMSwiTm8gR3JvdXBzIFByZXNlbnQgISIpLG90KCkpfWZ1bmN0aW9uIG45dChkLGcpe2lmKDEmZCYmKG50KDAsInRyIiwzMiko''@;'; put 'put ''MSwidGQiLDMwKSxZdCgyKSxvdCgpLG50KDMsInRkIiwzMCksWXQoNCksb3QoKSxudCg1LCJ0ZCIsMzApLFl0KDYpLG90KCksbnQoNywidGQiLDMwKSxZdCg4KSxvdCgpKCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDtUdCgicm91dGVyTGluayIsIi92aWV3L3VzZXJuYXYvZ3JvdXBzLyIr''@;'; put 'put ''aC5VUklNRU0pLHV0KDIpLGppKGguTUVNQkVSTkFNRSksdXQoMiksamkoaC5FTUFJTCksdXQoMiksamkoaC5NRU1CRVJDUkVBVEVEKSx1dCgyKSxqaShoLk1FTUJFUlVQREFURUQpfX1mdW5jdGlvbiByOXQoZCxnKXtpZigxJmQmJihudCgwLCJ0YWJsZSIsMjgpKDEsInRoZWFkIikoMiwidHIi''@;'; put 'put ''KSgzLCJ0ZCIsMjkpKDQsImIiKSxZdCg1LCJOQU1FIiksb3QoKSgpLG50KDYsInRkIiwyOSkoNywiYiIpLFl0KDgsIkVNQUlMIiksb3QoKSgpLG50KDksInRkIiwyOSkoMTAsImIiKSxZdCgxMSwiQ1JFQVRFRCIpLG90KCkoKSxudCgxMiwidGQiLDMwKSgxMywiYiIpLFl0KDE0LCJVUERBVEVE''@;'; put 'put ''Iiksb3QoKSgpKCkoKSxudCgxNSwidGJvZHkiKSxybigxNixuOXQsOSw1LCJ0ciIsMzEpLG90KCkoKSksMiZkKXtjb25zdCBoPVF0KDIpO3V0KDE2KSxUdCgibmdGb3JPZiIsaC5yb2xlR3JvdXBzKX19ZnVuY3Rpb24gaTl0KGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2IikoMSwiZGl2IiwyMCko''@;'; put 'put ''MiwiZGl2IiwyMSkoMywidGFibGUiLDIyKSg0LCJ0Ym9keSIpKDUsInRyIikoNiwidGQiLDIzKSg3LCJwIiwyNCkoOCwiYiIpLFl0KDkpLG90KCkoKSgpKCksbnQoMTAsInRyIikoMTEsInRkIiwyMykoMTIsImkiKSxZdCgxMyksb3QoKSgpKCkoKSgpKCkoKSxudCgxNCwiZGl2IiwyMCkoMTUs''@;'; put 'put ''ImRpdiIsMjEpKDE2LCJkaXYiLDI1KSgxNywiZGl2IikoMTgsImgzIiksWXQoMTkpLG90KCkscm4oMjAsJHZ0LDIsMCwiaDUiLDUpLG50KDIxLCJkaXYiLDI2KSxybigyMixlOXQsMTcsMSwidGFibGUiLDI3KSxvdCgpKCksQ3IoMjMsImhyIiksbnQoMjQsImRpdiIpKDI1LCJoMyIpLFl0KDI2''@;'; put 'put ''KSxvdCgpLHJuKDI3LHQ5dCwyLDAsImg1Iiw1KSxudCgyOCwiZGl2IiwyNikscm4oMjkscjl0LDE3LDEsInRhYmxlIiwyNyksb3QoKSgpLENyKDMwLCJiciIpLG90KCkoKSgpKCkpLDImZCl7Y29uc3QgaD1RdCgpO3V0KDkpLGppKGgucm9sZU5hbWUpLHV0KDQpLGppKGgucm9sZURlc2MpLHV0''@;'; put 'put ''KDYpLEppKCJNRU1CRVJTICgiLGgucm9sZU1lbWJlcnNDb3VudCwiKSIpLHV0KDEpLFR0KCJuZ0lmIiwwPT1oLnJvbGVNZW1iZXJzQ291bnQpLHV0KDIpLFR0KCJuZ0lmIiwwIT1oLnJvbGVNZW1iZXJzQ291bnQpLHV0KDQpLEppKCJHcm91cHMgKCIsaC5yb2xlR3JvdXBzQ291bnQsIikiKSx1''@;'; put 'put ''dCgxKSxUdCgibmdJZiIsMD09aC5yb2xlR3JvdXBzQ291bnQpLHV0KDIpLFR0KCJuZ0lmIiwwIT1oLnJvbGVHcm91cHNDb3VudCl9fWxldCBCTGU9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLHYseSxDLEkpe3RoaXMuc2FzU2VydmljZT1oLHRoaXMuaGVscGVyU2VydmljZT12LHRoaXMu''@;'; put 'put ''cm91dGVyPXksdGhpcy5sb2NhdGlvbj1DLHRoaXMucm91dGU9SSx0aGlzLnJvbGVTZWFyY2g9IiIsdGhpcy5yb2xlVXJpPSIiLHRoaXMucm9sZU5hbWU9IiIsdGhpcy5yb2xlRGVzYz0iIix0aGlzLnBhcmFtUHJlc2VudD0hMSx0aGlzLnBhcmFtVVJJPSIiLHRoaXMubG9hZGluZz0hMX1uZ09u''@;'; put 'put ''SW5pdCgpe25pLnZpZXdlci5jdXJyZW50U2VsZWN0aW9uPSJ2aWV3L3VzZXJuYXYvcm9sZXMiLHZvaWQgMCE9PXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnVyaSYmKHRoaXMucGFyYW1QcmVzZW50PSEwLHRoaXMucGFyYW1VUkk9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMudXJpKSxu''@;'; put 'put ''aS51c2VybmF2LnJvbGVMaXN0JiYhdGhpcy5wYXJhbVByZXNlbnQ/KHRoaXMucm9sZXM9bmkudXNlcm5hdi5yb2xlTGlzdCx0aGlzLnJvbGVTZWFyY2g9bmkudXNlcm5hdi5yb2xlU2VhcmNoKTp2b2lkIDA9PT1uaS51c2VybmF2LnJvbGVMaXN0Pyh0aGlzLmxvYWRpbmc9ITAsdGhpcy5zYXNT''@;'; put 'put ''ZXJ2aWNlLnJlcXVlc3QoInVzZXJuYXYvdXNlcnJvbGVzIixudWxsKS50aGVuKGg9PntpZih0aGlzLmxvYWRpbmc9ITEsdGhpcy5yb2xlcz1oLnJvbGVzLG5pLnVzZXJuYXYucm9sZUxpc3Q9aC5yb2xlcyx0aGlzLnBhcmFtUHJlc2VudCYmdm9pZCAwIT09dGhpcy5yb2xlcyl7bGV0IHY9dGhp''@;'; put 'put ''cy5maW5kUm9sZSh0aGlzLnJvbGVzLHRoaXMucGFyYW1VUkkpOyExIT09diYmKHRoaXMubG9hZGluZz0hMCx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgidXNlcm5hdi91c2VybWVtYmVyc2J5cm9sZSIse2l3YW50Olt7cm9sZWlkOnRoaXMucGFyYW1VUkl9XX0pLnRoZW4oQz0+e3RoaXMubG9h''@;'; put 'put ''ZGluZz0hMSx0aGlzLnJvbGVNZW1iZXJzPUMuc2FzbWVtYmVycyx0aGlzLnJvbGVNZW1iZXJzQ291bnQ9Qy5zYXNtZW1iZXJzLmxlbmd0aCx0aGlzLnJvbGVHcm91cHM9Qy5zYXNncm91cHMsdGhpcy5yb2xlR3JvdXBzQ291bnQ9Qy5zYXNncm91cHMubGVuZ3RoLHRoaXMucm9sZVVyaT12LlJP''@;'; put 'put ''TEVVUkksdGhpcy5yb2xlTmFtZT12LlJPTEVOQU1FLHRoaXMucm9sZURlc2M9di5ST0xFREVTQ30pKX19KSk6KHRoaXMucm9sZXM9bmkudXNlcm5hdi5yb2xlTGlzdCx0aGlzLnJvbGVTZWFyY2g9bmkudXNlcm5hdi5yb2xlU2VhcmNoLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJ1c2VybmF2''@;'; put 'put ''L3VzZXJyb2xlcyIsbnVsbCkudGhlbihoPT57aWYodGhpcy5yb2xlcz1oLnJvbGVzLG5pLnVzZXJuYXYucm9sZUxpc3Q9aC5yb2xlcyx0aGlzLnBhcmFtUHJlc2VudCYmdm9pZCAwIT09dGhpcy5yb2xlcyl7bGV0IHY9dGhpcy5maW5kUm9sZSh0aGlzLnJvbGVzLHRoaXMucGFyYW1VUkkpOyEx''@;'; put 'put ''IT09diYmKHRoaXMubG9hZGluZz0hMCx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgidXNlcm5hdi91c2VybWVtYmVyc2J5cm9sZSIse2l3YW50Olt7cm9sZWlkOnRoaXMucGFyYW1VUkl9XX0pLnRoZW4oQz0+e3RoaXMubG9hZGluZz0hMSx0aGlzLnJvbGVNZW1iZXJzPUMuc2FzbWVtYmVycyx0''@;'; put 'put ''aGlzLnJvbGVNZW1iZXJzQ291bnQ9Qy5zYXNtZW1iZXJzLmxlbmd0aCx0aGlzLnJvbGVHcm91cHM9Qy5zYXNncm91cHMsdGhpcy5yb2xlR3JvdXBzQ291bnQ9Qy5zYXNncm91cHMubGVuZ3RoLHRoaXMucm9sZVVyaT12LlJPTEVVUkksdGhpcy5yb2xlTmFtZT12LlJPTEVOQU1FLHRoaXMucm9s''@;'; put 'put ''ZURlc2M9di5ST0xFREVTQ30pKX19KSl9cm9sZUxpc3RPbkZpbHRlcigpe3RoaXMuaGVscGVyU2VydmljZS5saWJyYXJ5T25GaWx0ZXIodGhpcy5yb2xlcyx0aGlzLnJvbGVTZWFyY2gsIlJPTEVOQU1FIiksbmkudXNlcm5hdi5yb2xlU2VhcmNoPXRoaXMucm9sZVNlYXJjaH1yb2xlT25DbGlj''@;'; put 'put ''ayhoKXt0aGlzLmxvYWRpbmc9ITA7bGV0IHY9dGhpcy5yb3V0ZXIudXJsO3RoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKHRoaXMucGFyYW1QcmVzZW50P3Yuc2xpY2UoMCx2Lmxhc3RJbmRleE9mKCIvIikpKyIvIitlbmNvZGVVUkkoaC5ST0xFVVJJKTp2KyIvIitlbmNvZGVVUkkoaC5ST0xF''@;'; put 'put ''VVJJKSksdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJuYXYvdXNlcm1lbWJlcnNieXJvbGUiLHtpd2FudDpbe3JvbGVpZDpoLlJPTEVVUkl9XX0pLnRoZW4oQz0+e3RoaXMubG9hZGluZz0hMSx0aGlzLnJvbGVNZW1iZXJzPUMuc2FzbWVtYmVycyx0aGlzLnJvbGVNZW1iZXJzQ291bnQ9''@;'; put 'put ''Qy5zYXNtZW1iZXJzLmxlbmd0aCx0aGlzLnJvbGVHcm91cHM9Qy5zYXNncm91cHMsdGhpcy5yb2xlR3JvdXBzQ291bnQ9Qy5zYXNncm91cHMubGVuZ3RoLHRoaXMucm9sZVVyaT1oLlJPTEVVUkksdGhpcy5yb2xlTmFtZT1oLlJPTEVOQU1FLHRoaXMucm9sZURlc2M9aC5ST0xFREVTQ30pfWZp''@;'; put 'put ''bmRSb2xlKGgsdil7bGV0IHk9ITE7cmV0dXJuIGguZm9yRWFjaChDPT57Qy5ST0xFVVJJPT09diYmKHk9Qyl9KSx5fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKShLdChnMiksS3QoWGMpLEt0KFpsKSxLdChWNiksS3QoUHUpKX0sZC5cdTAyNzVjbXA9''@;'; put 'put ''VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLXJvbGUiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjcsdmFyczo0LGNvbnN0czpbWzEsInNpZGViYXItaGVpZ2h0Il0sWyJjbGFzcyIsInNlYXJjaC1ub2RlIiw0LCJuZ0lmIl0sWzQsIm5nRm9yIiwibmdGb3JP''@;'; put 'put ''ZiJdLFsxLCJjb250ZW50LWFyZWEiXSxbImNsYXNzIiwibG9hZGluZ1NwaW5uZXIiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsxLCJzZWFyY2gtbm9kZSJdLFsxLCJ0cmVlLXNlYXJjaC13cmFwcGVyIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiRmlsdGVyIGJ5IFJvbGVzIiwibmFt''@;'; put 'put ''ZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImtleXVwIl0sWyJzZWFyY2hMaWJUcmVlSW5wdXQiLCIiXSxbInNoYXBlIiwic2VhcmNoIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayIsNCwibmdJZiJdLFsic2hh''@;'; put 'put ''cGUiLCJzZWFyY2giXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIl0sWzMsInRhYmxlLWFjdGl2ZSIsImNsaWNrIiw0LCJuZ0lmIl0sWzMsImNsaWNrIl0sWzEsIm0tMCIsImN1cnNvci1wb2ludGVyIiwibGlzdC1wYWRkaW5nIl0sWyJzaGFwZSIsImJsb2Nrcy1ncm91cCJdLFsxLCJsb2Fk''@;'; put 'put ''aW5nU3Bpbm5lciJdLFsxLCJzcGlubmVyIl0sWzEsImNsci1yb3ciXSxbMSwiY2xyLWNvbC04Il0sWzEsInRhYmxlIiwicm9sZS1pbmZvIl0sWzEsImxlZnQiXSxbMSwicm9sZS1pbmZvLXRleHQiXSxbMSwiY2FyZCIsInJvbGUtZGF0YSJdLFsxLCJ0YWJsZS1jb250YWluZXIiXSxbImNsYXNz''@;'; put 'put ''IiwidGFibGUgbWVtYmVyLXRhYmxlIiw0LCJuZ0lmIl0sWzEsInRhYmxlIiwibWVtYmVyLXRhYmxlIl0sWzEsIndpZHRoLTI1Il0sWzEsIiJdLFszLCJyb3V0ZXJMaW5rIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywicm91dGVyTGluayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihoLHYpezEmaCYm''@;'; put 'put ''KG50KDAsImFwcC1zaWRlYmFyIiwwKSgxLCJjbHItdHJlZSIpLHJuKDIsUXZ0LDYsMywiY2xyLXRyZWUtbm9kZSIsMSkscm4oMyxYdnQsMiwxLCJuZy1jb250YWluZXIiLDIpLG90KCkoKSxudCg0LCJkaXYiLDMpLHJuKDUsS3Z0LDMsMCwiZGl2Iiw0KSxybig2LGk5dCwzMSw4LCJkaXYiLDUp''@;'; put 'put ''LG90KCkpLDImaCYmKHV0KDIpLFR0KCJuZ0lmIix2LnJvbGVzKSx1dCgxKSxUdCgibmdGb3JPZiIsdi5yb2xlcyksdXQoMiksVHQoIm5nSWYiLHYubG9hZGluZyksdXQoMSksVHQoIm5nSWYiLHYucm9sZU1lbWJlcnMmJiF2LmxvYWRpbmcpKX0sZGVwZW5kZW5jaWVzOlt4cyxObyxtMSxUcyxJ''@;'; put 'put ''cyxZNix5dixfZyx3bCxwdixNU10sc3R5bGVzOlsiLnNpZGViYXItaGVpZ2h0W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJX0ucm9sZS1pbmZvLXRleHRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lO2ZvbnQtc2l6ZToyMHB4fS5yb2xlLWluZm9bX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTtib3JkZXI6MXB4IHNvbGlkICNhN2E3YTc7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNoYWRvdzowIDJweCA1cHggI2RhZDdkN30ucm9sZS1pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRkW19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWFs''@;'; put 'put ''aWduOmNlbnRlcn0ucm9sZS1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmOWY5Zjk7Ym9yZGVyOjFweCBzb2xpZCAjYTdhN2E3O2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaGFkb3c6MCAycHggNXB4ICNkYWQ3ZDd9LnJvbGUtZGF0YVtfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV17bWluLWhlaWdodDp1bnNldH0ucm9sZS1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnJvbGUtZGF0YVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpjZW50ZXJ9Lm1lbWJlci10YWJsZVtfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5O3dpZHRoOjEwMCV9Lm1lbWJlci10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aGVhZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZGFkYWRhfS5tZW1iZXItdGFibGVbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgdGJvZHlbX25nY29udGVudC0lQ09NUCVdICAgdHJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNjtjdXJzb3I6cG9pbnRlcn0udGFibGUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdy15OnNjcm9sbDttYXgtaGVpZ2h0''@;'; put 'put ''OjcwMHB4fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KXsucm9sZS1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OnVuc2V0IWltcG9ydGFudH19Il19KSxkfSkoKSxvOXQ9KCgpPT57Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe31uZ09uSW5pdCgpe319cmV0dXJu''@;'; put 'put ''IGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1Y21wPVRpKHt0eXBlOmQsc2VsZWN0b3JzOltbImFwcC11c2VybmF2LXJvdXRlIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlv''@;'; put 'put ''bihoLHYpezEmaCYmQ3IoMCwicm91dGVyLW91dGxldCIpfSxkZXBlbmRlbmNpZXM6W2F5XX0pLGR9KSgpLGE5dD0oKCk9PntjbGFzcyBke2NvbnN0cnVjdG9yKCl7fW5nT25Jbml0KCl7fW5nT25EZXN0cm95KCl7fX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyho''@;'; put 'put ''fHxkKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1siYXBwLXZpZXctcm91dGUiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGgsdil7MSZoJiZDcigwLCJyb3V0ZXItb3V0bGV0Iil9LGRlcGVu''@;'; put 'put ''ZGVuY2llczpbYXldfSksZH0pKCk7ZnVuY3Rpb24gbDl0KGQsZyl7MSZkJiZDcigwLCJjbHItaWNvbiIsMTIpfWZ1bmN0aW9uIHM5dChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci1pY29uIiwxMyksR24oImNsaWNrIixmdW5jdGlvbigpe2l0KGgpO2NvbnN0IHk9UXQoMik7''@;'; put 'put ''cmV0dXJuIHkudXNlclNlYXJjaD0iIixhKHkudXNlckxpc3RPbkZpbHRlcigpKX0pLG90KCl9fWZ1bmN0aW9uIHU5dChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci10cmVlLW5vZGUiLDYpKDEsImRpdiIsNykoMiwiaW5wdXQiLDgsOSksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1''@;'; put 'put ''bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KCkudXNlclNlYXJjaD15KX0pKCJrZXl1cCIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgpLnVzZXJMaXN0T25GaWx0ZXIoKSl9KSxvdCgpLHJuKDQsbDl0LDEsMCwiY2xyLWljb24iLDEwKSxybig1LHM5dCwxLDAsImNsci1pY29uIiwx''@;'; put 'put ''MSksb3QoKSgpfWlmKDImZCl7Y29uc3QgaD12YSgzKSx2PVF0KCk7dXQoMiksVHQoIm5nTW9kZWwiLHYudXNlclNlYXJjaCksdXQoMiksVHQoIm5nSWYiLGgudmFsdWUubGVuZ3RoPDEpLHV0KDEpLFR0KCJuZ0lmIixoLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gYzl0KGQsZyl7aWYoMSZk''@;'; put 'put ''KXtjb25zdCBoPXdpKCk7bnQoMCwiY2xyLXRyZWUtbm9kZSIsMTUpLEduKCJjbGljayIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KCkuJGltcGxpY2l0O3JldHVybiBhKFF0KCkudXNlck9uQ2xpY2soeSkpfSksbnQoMSwicCIsMTYpLENyKDIsImNsci1pY29uIiwxNyksWXQoMyksb3Qo''@;'; put 'put ''KSgpfWlmKDImZCl7Y29uc3QgaD1RdCgpLiRpbXBsaWNpdCx2PVF0KCk7RmkoInRhYmxlLWFjdGl2ZSIsKG51bGw9PXYudXNlckluZm8/bnVsbDp2LnVzZXJJbmZvLlVSSSk9PT1oLlVSSSksdXQoMyksSmkoIiAiLGguTkFNRSwiICIpfX1mdW5jdGlvbiBmOXQoZCxnKXtpZigxJmQmJihCMCgw''@;'; put 'put ''KSxybigxLGM5dCw0LDMsImNsci10cmVlLW5vZGUiLDE0KSxQMCgpKSwyJmQpe2NvbnN0IGg9Zy4kaW1wbGljaXQ7dXQoMSksVHQoIm5nSWYiLCFoLmhpZGRlbil9fWZ1bmN0aW9uIGg5dChkLGcpezEmZCYmKG50KDAsImRpdiIsMTgpKDEsInNwYW4iLDE5KSxZdCgyLCIgTG9hZGluZy4uLiAi''@;'; put 'put ''KSxvdCgpKCkpfWZ1bmN0aW9uIGQ5dChkLGcpe2lmKDEmZCYmKEIwKDApLG50KDEsInRyIikoMiwidGQiLDI3KSxZdCgzLCIgTWV0YWRhdGEgQ3JlYXRlZDogIiksbnQoNCwiYiIpLFl0KDUpLG90KCkoKSgpLG50KDYsInRyIikoNywidGQiLDI3KSxZdCg4LCIgTWV0YWRhdGEgVXBkYXRlZDog''@;'; put 'put ''IiksbnQoOSwiYiIpLFl0KDEwKSxvdCgpKCkoKSxQMCgpKSwyJmQpe2NvbnN0IGg9UXQoMyk7dXQoNSksamkoaC51c2VySW5mby5NRVRBREFUQUNSRUFURUQpLHV0KDUpLGppKGgudXNlckluZm8uTUVUQURBVEFVUERBVEVEKX19ZnVuY3Rpb24gcDl0KGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2''@;'; put 'put ''IiwyMSkoMSwiZGl2IiwyMikoMiwidGFibGUiLDI2KSgzLCJ0Ym9keSIpKDQsInRyIikoNSwidGQiLDI3KSg2LCJwIiwyOCkoNywiYiIpLFl0KDgpLG90KCkoKSgpKCksbnQoOSwidHIiKSgxMCwidGQiLDI3KSgxMSwicCIsMjgpKDEyLCJiIiksWXQoMTMpLG90KCkoKSgpKCkscm4oMTQsZDl0''@;'; put 'put ''LDExLDIsIm5nLWNvbnRhaW5lciIsNSksb3QoKSgpKCkoKSksMiZkKXtjb25zdCBoPVF0KDIpO3V0KDgpLGppKGgudXNlckluZm8uTkFNRSksdXQoNSksamkoaC51c2VySW5mby5ESVNQTEFZTkFNRSksdXQoMSksVHQoIm5nSWYiLGguc2VydmVyVHlwZT09PWguU2VydmVyVHlwZS5TYXM5KX19''@;'; put 'put ''ZnVuY3Rpb24gZzl0KGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2IiwyMSkoMSwiZGl2IiwyMikoMiwidGFibGUiLDI2KSgzLCJ0Ym9keSIpKDQsInRyIikoNSwidGQiLDI3KSg2LCJwIiwyOCkoNywiYiIpLFl0KDgpLG90KCkoKSgpKCksbnQoOSwidHIiKSgxMCwidGQiLDI3KSxZdCgxMSwiIFVz''@;'; put 'put ''ZXIgSUQ6ICIpLG50KDEyLCJiIiksWXQoMTMpLG90KCkoKSgpLG50KDE0LCJ0ciIpKDE1LCJ0ZCIsMjcpLFl0KDE2LCIgVXNlciBwcm92aWRlciBJRDogIiksbnQoMTcsImIiKSxZdCgxOCksb3QoKSgpKCkoKSgpKCkoKSksMiZkKXtjb25zdCBoPVF0KDIpO3V0KDgpLGppKGgudXNlckluZm8u''@;'; put 'put ''TkFNRSksdXQoNSksamkoaC51c2VySW5mby5VUkkpLHV0KDUpLGppKGgudXNlckluZm8uUFJPVklERVIpfX1mdW5jdGlvbiBtOXQoZCxnKXsxJmQmJihudCgwLCJoNSIpLFl0KDEsIk5vIEVtYWlscyBQcmVzZW50Iiksb3QoKSl9ZnVuY3Rpb24gdjl0KGQsZyl7aWYoMSZkJiYobnQoMCwidHIi''@;'; put 'put ''KSgxLCJ0ZCIsMzEpLFl0KDIpLG90KCksbnQoMywidGQiLDMxKSxZdCg0KSxvdCgpKCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDt1dCgyKSxqaShoLkVNQUlMKSx1dCgyKSxqaShoLlRZUEUpfX1mdW5jdGlvbiBBOXQoZCxnKXtpZigxJmQmJihudCgwLCJ0YWJsZSIsMjkpKDEsInRoZWFk''@;'; put 'put ''IikoMiwidHIiKSgzLCJ0ZCIsMzApKDQsImIiKSxZdCg1LCJFTUFJTCIpLG90KCkoKSxudCg2LCJ0ZCIsMzEpKDcsImIiKSxZdCg4LCJUWVBFIiksb3QoKSgpKCkoKSxudCg5LCJ0Ym9keSIpLHJuKDEwLHY5dCw1LDIsInRyIiwyKSxvdCgpKCkpLDImZCl7Y29uc3QgaD1RdCgzKTt1dCgxMCks''@;'; put 'put ''VHQoIm5nRm9yT2YiLGgudXNlckVtYWlscyl9fWZ1bmN0aW9uIHk5dChkLGcpe2lmKDEmZCYmKG50KDAsImRpdiIpKDEsImgzIiksWXQoMiksb3QoKSxybigzLG05dCwyLDAsImg1Iiw1KSxudCg0LCJkaXYiLDI0KSxybig1LEE5dCwxMSwxLCJ0YWJsZSIsMjUpLG90KCkoKSksMiZkKXtjb25z''@;'; put 'put ''dCBoPVF0KDIpO3V0KDIpLEppKCJFTUFJTFMgKCIsaC51c2VyRW1haWxzQ291bnR8fCIwIiwiKSIpLHV0KDEpLFR0KCJuZ0lmIiwwPT1oLnVzZXJFbWFpbHNDb3VudCksdXQoMiksVHQoIm5nSWYiLDAhPWgudXNlckVtYWlsc0NvdW50KX19ZnVuY3Rpb24gdzl0KGQsZyl7MSZkJiZDcigwLCJo''@;'; put 'put ''ciIpfWZ1bmN0aW9uIGI5dChkLGcpezEmZCYmKG50KDAsImg1IiksWXQoMSwiTm8gR3JvdXBzIFByZXNlbnQiKSxvdCgpKX1mdW5jdGlvbiBfOXQoZCxnKXtpZigxJmQmJihudCgwLCJ0ZCIsMzMpLFl0KDEpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgpLiRpbXBsaWNpdDtUdCgicm91dGVyTGlu''@;'; put 'put ''ayIsIi92aWV3L3VzZXJuYXYvZ3JvdXBzLyIraC5VUkkpLHV0KDEpLEppKCIgIixoLkdST1VQTkFNRSwiICIpfX1mdW5jdGlvbiBDOXQoZCxnKXtpZigxJmQmJihCMCgwKSxudCgxLCJ0ZCIsMzMpLFl0KDIpLG90KCksUDAoKSksMiZkKXtjb25zdCBoPVF0KCkuJGltcGxpY2l0O3V0KDEpLFR0''@;'; put 'put ''KCJyb3V0ZXJMaW5rIiwiL3ZpZXcvdXNlcm5hdi9ncm91cHMvIisoaC5HUk9VUFVSSXx8aC5VUkkpKSx1dCgxKSxKaSgiICIsaC5HUk9VUE5BTUUsIiAiKX19ZnVuY3Rpb24gazl0KGQsZyl7aWYoMSZkJiYobnQoMCwidHIiKSxybigxLF85dCwyLDIsInRkIiwzMikscm4oMixDOXQsMywyLCJu''@;'; put 'put ''Zy1jb250YWluZXIiLDUpLG90KCkpLDImZCl7Y29uc3QgaD1RdCgzKTt1dCgxKSxUdCgibmdJZiIsaC5zZXJ2ZXJUeXBlPT09aC5TZXJ2ZXJUeXBlLlNhc1ZpeWEpLHV0KDEpLFR0KCJuZ0lmIixoLnNlcnZlclR5cGUhPT1oLlNlcnZlclR5cGUuU2FzVml5YSl9fWZ1bmN0aW9uIFM5dChkLGcp''@;'; put 'put ''e2lmKDEmZCYmKG50KDAsInRhYmxlIiwyOSkoMSwidGJvZHkiKSxybigyLGs5dCwzLDIsInRyIiwyKSxvdCgpKCkpLDImZCl7Y29uc3QgaD1RdCgyKTt1dCgyKSxUdCgibmdGb3JPZiIsaC51c2VyR3JvdXBzKX19ZnVuY3Rpb24gTTl0KGQsZyl7MSZkJiZDcigwLCJociIpfWZ1bmN0aW9uIEU5''@;'; put 'put ''dChkLGcpezEmZCYmKG50KDAsImg1IiksWXQoMSwiTm8gUm9sZXMgUHJlc2VudCIpLG90KCkpfWZ1bmN0aW9uIHg5dChkLGcpe2lmKDEmZCYmKG50KDAsInRyIikoMSwidGQiLDM0KSxZdCgyKSxvdCgpKCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdCx2PVF0KDQpO3V0KDEpLFR0KCJyb3V0''@;'; put 'put ''ZXJMaW5rIiwiL3ZpZXcvdXNlcm5hdi9yb2xlcy8iK3YuZ2V0Um9sZVVSSShoLlJPTEVVUkkpKSx1dCgxKSxKaSgiICIsaC5ST0xFTkFNRSwiICIpfX1mdW5jdGlvbiBUOXQoZCxnKXtpZigxJmQmJihudCgwLCJ0YWJsZSIsMjkpKDEsInRib2R5Iikscm4oMix4OXQsMywyLCJ0ciIsMiksb3Qo''@;'; put 'put ''KSgpKSwyJmQpe2NvbnN0IGg9UXQoMyk7dXQoMiksVHQoIm5nRm9yT2YiLGgudXNlclJvbGVzKX19ZnVuY3Rpb24gSTl0KGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2IikoMSwiaDMiKSxZdCgyKSxvdCgpLHJuKDMsRTl0LDIsMCwiaDUiLDUpLG50KDQsImRpdiIsMjQpLHJuKDUsVDl0LDMsMSwi''@;'; put 'put ''dGFibGUiLDI1KSxvdCgpKCkpLDImZCl7Y29uc3QgaD1RdCgyKTt1dCgyKSxKaSgiUk9MRVMgKCIsaC51c2VyUm9sZXNDb3VudHx8IjAiLCIpIiksdXQoMSksVHQoIm5nSWYiLDA9PWgudXNlclJvbGVzQ291bnQpLHV0KDIpLFR0KCJuZ0lmIiwwIT1oLnVzZXJSb2xlc0NvdW50KX19ZnVuY3Rp''@;'; put 'put ''b24gRDl0KGQsZyl7MSZkJiZDcigwLCJociIpfWZ1bmN0aW9uIEw5dChkLGcpezEmZCYmKG50KDAsImg1IiksWXQoMSwiTm8gTG9naW5zIFByZXNlbnQiKSxvdCgpKX1mdW5jdGlvbiBPOXQoZCxnKXtpZigxJmQmJihudCgwLCJ0ciIpKDEsInRkIiwzMSksWXQoMiksb3QoKSxudCgzLCJ0ZCIs''@;'; put 'put ''MzEpLFl0KDQpLG90KCkoKSksMiZkKXtjb25zdCBoPWcuJGltcGxpY2l0O3V0KDIpLGppKGguRE9NQUlOKSx1dCgyKSxqaShoLlVTRVJJRCl9fWZ1bmN0aW9uIFI5dChkLGcpe2lmKDEmZCYmKG50KDAsInRhYmxlIiwyOSkoMSwidGhlYWQiKSgyLCJ0ciIpKDMsInRkIiwzMCkoNCwiYiIpLFl0''@;'; put 'put ''KDUsIkRPTUFJTiIpLG90KCkoKSxudCg2LCJ0ZCIpKDcsImIiKSxZdCg4LCJVU0VSIElEIiksb3QoKSgpKCkoKSxudCg5LCJ0Ym9keSIpLHJuKDEwLE85dCw1LDIsInRyIiwyKSxvdCgpKCkpLDImZCl7Y29uc3QgaD1RdCgzKTt1dCgxMCksVHQoIm5nRm9yT2YiLGgudXNlckxvZ2lucyl9fWZ1''@;'; put 'put ''bmN0aW9uIEI5dChkLGcpe2lmKDEmZCYmKG50KDAsImRpdiIpKDEsImgzIiksWXQoMiksb3QoKSxybigzLEw5dCwyLDAsImg1Iiw1KSxudCg0LCJkaXYiLDI0KSxybig1LFI5dCwxMSwxLCJ0YWJsZSIsMjUpLG90KCkoKSksMiZkKXtjb25zdCBoPVF0KDIpO3V0KDIpLEppKCJMT0dJTlMgKCIs''@;'; put 'put ''aC51c2VyTG9naW5zQ291bnR8fCIwIiwiKSIpLHV0KDEpLFR0KCJuZ0lmIiwwPT1oLnVzZXJMb2dpbnNDb3VudCksdXQoMiksVHQoIm5nSWYiLDAhPWgudXNlckxvZ2luc0NvdW50KX19ZnVuY3Rpb24gUDl0KGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2Iikscm4oMSxwOXQsMTUsMywiZGl2Iiwy''@;'; put 'put ''MCkscm4oMixnOXQsMTksMywiZGl2IiwyMCksbnQoMywiZGl2IiwyMSkoNCwiZGl2IiwyMikoNSwiZGl2IiwyMykscm4oNix5OXQsNiwzLCJkaXYiLDUpLHJuKDcsdzl0LDEsMCwiaHIiLDUpLG50KDgsImRpdiIpKDksImgzIiksWXQoMTApLG90KCkscm4oMTEsYjl0LDIsMCwiaDUiLDUpLG50''@;'; put 'put ''KDEyLCJkaXYiLDI0KSxybigxMyxTOXQsMywxLCJ0YWJsZSIsMjUpLG90KCkoKSxybigxNCxNOXQsMSwwLCJociIsNSkscm4oMTUsSTl0LDYsMywiZGl2Iiw1KSxybigxNixEOXQsMSwwLCJociIsNSkscm4oMTcsQjl0LDYsMywiZGl2Iiw1KSxDcigxOCwiYnIiKSxvdCgpKCkoKSgpKSwyJmQp''@;'; put 'put ''e2NvbnN0IGg9UXQoKTt1dCgxKSxUdCgibmdJZiIsaC5zZXJ2ZXJUeXBlIT09aC5TZXJ2ZXJUeXBlLlNhc1ZpeWEpLHV0KDEpLFR0KCJuZ0lmIixoLnNlcnZlclR5cGU9PT1oLlNlcnZlclR5cGUuU2FzVml5YSYmaC51c2VySW5mbyksdXQoNCksVHQoIm5nSWYiLGguc2VydmVyVHlwZT09PWgu''@;'; put 'put ''U2VydmVyVHlwZS5TYXM5KSx1dCgxKSxUdCgibmdJZiIsaC5zZXJ2ZXJUeXBlPT09aC5TZXJ2ZXJUeXBlLlNhczkpLHV0KDMpLEppKCJHUk9VUFMgKCIsaC51c2VyR3JvdXBzQ291bnR8fCIwIiwiKSIpLHV0KDEpLFR0KCJuZ0lmIiwwPT1oLnVzZXJHcm91cHNDb3VudCksdXQoMiksVHQoIm5n''@;'; put 'put ''SWYiLDAhPWgudXNlckdyb3Vwc0NvdW50KSx1dCgxKSxUdCgibmdJZiIsaC5zZXJ2ZXJUeXBlPT09aC5TZXJ2ZXJUeXBlLlNhczkpLHV0KDEpLFR0KCJuZ0lmIixoLnNlcnZlclR5cGU9PT1oLlNlcnZlclR5cGUuU2FzOSksdXQoMSksVHQoIm5nSWYiLGguc2VydmVyVHlwZT09PWguU2VydmVy''@;'; put 'put ''VHlwZS5TYXM5KSx1dCgxKSxUdCgibmdJZiIsaC5zZXJ2ZXJUeXBlPT09aC5TZXJ2ZXJUeXBlLlNhczkpfX1sZXQgUExlPSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCx2LHksQyxJKXt0aGlzLmhlbHBlclNlcnZpY2U9aCx0aGlzLnNhc1NlcnZpY2U9dix0aGlzLnJvdXRlPXksdGhpcy5s''@;'; put 'put ''b2NhdGlvbj1DLHRoaXMucm91dGVyPUksdGhpcy5sb2FkaW5nPSExLHRoaXMudXNlclNlYXJjaD0iIix0aGlzLnBhcmFtUHJlc2VudD0hMSx0aGlzLnBhcmFtTmFtZT0iIix0aGlzLnNhc2pzQ29uZmlnPW5ldyBVMy5TQVNqc0NvbmZpZyx0aGlzLmlzVml5YT0hMSx0aGlzLnNlcnZlclR5cGU9''@;'; put 'put ''IiIsdGhpcy5TZXJ2ZXJUeXBlPUh1LkQsdGhpcy5zZXJ2ZXJUeXBlPXRoaXMuc2FzU2VydmljZS5nZXRTZXJ2ZXJUeXBlKCksdGhpcy5zYXNqc0NvbmZpZz10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKSwiU0FTVklZQSI9PT10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUmJih0''@;'; put 'put ''aGlzLmlzVml5YT0hMCl9bmdPbkluaXQoKXtpZihuaS52aWV3ZXIuY3VycmVudFNlbGVjdGlvbj0idmlldy91c2VybmF2L3VzZXJzIix2b2lkIDAhPT10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy51cmkmJih0aGlzLnBhcmFtUHJlc2VudD0hMCx0aGlzLnBhcmFtTmFtZT10aGlzLnJvdXRl''@;'; put 'put ''LnNuYXBzaG90LnBhcmFtcy51cmkpLG5pLnVzZXJuYXYudXNlckxpc3QmJiF0aGlzLnBhcmFtUHJlc2VudCl0aGlzLnVzZXJzPW5pLnVzZXJuYXYudXNlckxpc3QsdGhpcy51c2VyU2VhcmNoPW5pLnVzZXJuYXYudXNlclNlYXJjaDtlbHNlIGlmKHZvaWQgMD09PW5pLnVzZXJuYXYudXNlckxp''@;'; put 'put ''c3Q/KHRoaXMubG9hZGluZz0hMCx0aGlzLmlzVml5YT9mZXRjaCh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCsiL2lkZW50aXRpZXMvdXNlcnM/bGltaXQ9MjAwMCIse2hlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9fSkudGhlbihoPT5oLnRleHQoKSkudGhlbihoPT57bGV0''@;'; put 'put ''IHk9SlNPTi5wYXJzZShoKS5pdGVtcy5tYXAoQz0+KHtOQU1FOkMubmFtZSxVUkk6Qy5pZCxQUk9WSURFUjpDLnByb3ZpZGVySWR9KSk7dGhpcy5sb2FkaW5nPSExLHRoaXMudXNlcnM9eSxuaS51c2VybmF2LnVzZXJMaXN0PXl9KTp0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgidXNlcm5hdi91''@;'; put 'put ''c2VybWVtYmVycyIsbnVsbCkudGhlbihoPT57dGhpcy5sb2FkaW5nPSExLHRoaXMudXNlcnM9aC51c2VycyxuaS51c2VybmF2LnVzZXJMaXN0PWgudXNlcnN9KSk6KHRoaXMudXNlcnM9bmkudXNlcm5hdi51c2VyTGlzdCx0aGlzLnVzZXJTZWFyY2g9bmkudXNlcm5hdi51c2VyU2VhcmNoKSx0''@;'; put 'put ''aGlzLnBhcmFtUHJlc2VudClpZih0aGlzLmxvYWRpbmc9ITAsdGhpcy5pc1ZpeWEpe2xldCBoPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnVyaTtmZXRjaCh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCsiL2lkZW50aXRpZXMvdXNlcnMvIitoKyIvbWVtYmVyc2hpcHM/bGltaXQ9MjAw''@;'; put 'put ''MCIse2hlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9fSkudGhlbih2PT52LnRleHQoKSkudGhlbih2PT57bGV0IHk9SlNPTi5wYXJzZSh2KTt0aGlzLnVzZXJEYXRhPXksdGhpcy5sb2FkaW5nPSExO2xldCBDPXkuaXRlbXMubWFwKEk9Pih7R1JPVVBOQU1FOkkubmFtZSxVUkk6''@;'; put 'put ''SS5pZH0pKTt0aGlzLnVzZXJHcm91cHM9Qyx0aGlzLnVzZXJHcm91cHNDb3VudD1DLmxlbmd0aCx0aGlzLnVzZXJzJiYodGhpcy51c2VySW5mbz10aGlzLnVzZXJzLmZpbmQoST0+SS5VUkk9PT1oKSl9KX1lbHNle2NvbnN0IGg9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMudXJpO3RoaXMu''@;'; put 'put ''c2FzU2VydmljZS5yZXF1ZXN0KCJ1c2VybmF2L3VzZXJncm91cHNieW1lbWJlciIse2l3YW50Olt7dXJpOmh9XX0pLnRoZW4oeT0+e3N3aXRjaCh0aGlzLmxvYWRpbmc9ITEsdGhpcy5zZXJ2ZXJUeXBlKXtjYXNlIEh1LkQuU2FzOTp0aGlzLnVzZXJJbmZvPXkuaW5mb1swXSx0aGlzLnVzZXJF''@;'; put 'put ''bWFpbHM9eS5lbWFpbHMsdGhpcy51c2VyRW1haWxzQ291bnQ9eS5lbWFpbHMubGVuZ3RoLHRoaXMudXNlclJvbGVzPXkucm9sZXMsdGhpcy51c2VyUm9sZXNDb3VudD15LnJvbGVzLmxlbmd0aCx0aGlzLnVzZXJMb2dpbnM9eS5sb2dpbnMsdGhpcy51c2VyTG9naW5zQ291bnQ9eS5sb2dpbnMu''@;'; put 'put ''bGVuZ3RoO2JyZWFrO2Nhc2UgSHUuRC5TYXNqczppZih0aGlzLnVzZXJzKXRoaXMudXNlckluZm89dGhpcy51c2Vycy5maW5kKEM9PkMuVVJJPT09aCk7ZWxzZXtjb25zdCBDPXkuZ3JvdXBzWzBdO3RoaXMudXNlckluZm89e1VSSTpDLklELE5BTUU6Qy5OQU1FLERJU1BMQVlOQU1FOkMuTkFN''@;'; put 'put ''RX19fXRoaXMudXNlckRhdGE9eSx0aGlzLnVzZXJHcm91cHM9eS5ncm91cHMsdGhpcy51c2VyR3JvdXBzQ291bnQ9eS5ncm91cHMubGVuZ3RofSl9fXVzZXJMaXN0T25GaWx0ZXIoKXt0aGlzLmhlbHBlclNlcnZpY2UubGlicmFyeU9uRmlsdGVyKHRoaXMudXNlcnMsdGhpcy51c2VyU2VhcmNo''@;'; put 'put ''LCJOQU1FIiksbmkudXNlcm5hdi51c2VyU2VhcmNoPXRoaXMudXNlclNlYXJjaH11c2VyT25DbGljayhoKXt0aGlzLmxvYWRpbmc9ITA7bGV0IHY9dGhpcy5yb3V0ZXIudXJsO3RoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKHRoaXMucGFyYW1QcmVzZW50P3Yuc2xpY2UoMCx2Lmxhc3RJbmRl''@;'; put 'put ''eE9mKCIvIikpKyIvIitlbmNvZGVVUkkoaC5VUkkpOnYrIi8iK2VuY29kZVVSSShoLlVSSSkpLHRoaXMuaXNWaXlhP2ZldGNoKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsKyIvaWRlbnRpdGllcy91c2Vycy8iK2guVVJJKyIvbWVtYmVyc2hpcHM/bGltaXQ9MjAwMCIse2hlYWRlcnM6e0Fj''@;'; put 'put ''Y2VwdDoiYXBwbGljYXRpb24vanNvbiJ9fSkudGhlbih5PT55LnRleHQoKSkudGhlbih5PT57bGV0IEM9SlNPTi5wYXJzZSh5KTt0aGlzLnVzZXJEYXRhPUMsdGhpcy5sb2FkaW5nPSExO2xldCBJPUMuaXRlbXMubWFwKFo9Pih7R1JPVVBOQU1FOloubmFtZSxVUkk6Wi5pZH0pKTt0aGlzLnVz''@;'; put 'put ''ZXJHcm91cHM9SSx0aGlzLnVzZXJHcm91cHNDb3VudD1JLmxlbmd0aCx0aGlzLnVzZXJzJiYodGhpcy51c2VySW5mbz10aGlzLnVzZXJzLmZpbmQoWj0+Wi5VUkk9PT1oLlVSSSkpfSk6dGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJuYXYvdXNlcmdyb3Vwc2J5bWVtYmVyIix7aXdhbnQ6''@;'; put 'put ''W3t1cmk6aC5VUkl9XX0pLnRoZW4oQz0+e3N3aXRjaCh0aGlzLmxvYWRpbmc9ITEsdGhpcy5zZXJ2ZXJUeXBlKXtjYXNlIEh1LkQuU2FzOTp0aGlzLnVzZXJJbmZvPUMuaW5mb1swXSx0aGlzLnVzZXJFbWFpbHM9Qy5lbWFpbHMsdGhpcy51c2VyRW1haWxzQ291bnQ9Qy5lbWFpbHMubGVuZ3Ro''@;'; put 'put ''LHRoaXMudXNlclJvbGVzPUMucm9sZXMsdGhpcy51c2VyUm9sZXNDb3VudD1DLnJvbGVzLmxlbmd0aCx0aGlzLnVzZXJMb2dpbnM9Qy5sb2dpbnMsdGhpcy51c2VyTG9naW5zQ291bnQ9Qy5sb2dpbnMubGVuZ3RoO2JyZWFrO2Nhc2UgSHUuRC5TYXNqczppZih0aGlzLnVzZXJzKXRoaXMudXNl''@;'; put 'put ''ckluZm89dGhpcy51c2Vycy5maW5kKEk9PkkuVVJJPT09aC5VUkkpO2Vsc2V7Y29uc3QgST1DLmdyb3Vwc1swXTt0aGlzLnVzZXJJbmZvPXtVUkk6SS5JRCxOQU1FOkkuTkFNRSxESVNQTEFZTkFNRTpJLk5BTUV9fX10aGlzLnVzZXJEYXRhPUMsdGhpcy51c2VyR3JvdXBzPUMuZ3JvdXBzLHRo''@;'; put 'put ''aXMudXNlckdyb3Vwc0NvdW50PUMuZ3JvdXBzLmxlbmd0aH0pfWdldFJvbGVVUkkoaCl7cmV0dXJuIGguc3BsaXQoIk9NU09CSjpJZGVudGl0eUdyb3VwIilbMV0uc2xpY2UoMSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KFhjKSxLdChnMiks''@;'; put 'put ''S3QoUHUpLEt0KFY2KSxLdChabCkpfSxkLlx1MDI3NWNtcD1UaSh7dHlwZTpkLHNlbGVjdG9yczpbWyJhcHAtdXNlciJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6Nyx2YXJzOjQsY29uc3RzOltbMSwic2lkZWJhci1oZWlnaHQiXSxbImNsYXNzIiwic2VhcmNo''@;'; put 'put ''LW5vZGUiLDQsIm5nSWYiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImNvbnRlbnQtYXJlYSJdLFsiY2xhc3MiLCJsb2FkaW5nU3Bpbm5lciIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzEsInNlYXJjaC1ub2RlIl0sWzEsInRyZWUtc2VhcmNoLXdyYXBwZXIiXSxbImNscklucHV0IiwiIiwi''@;'; put 'put ''cGxhY2Vob2xkZXIiLCJGaWx0ZXIgYnkgVXNlcnMiLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiXSxbInNlYXJjaExpYlRyZWVJbnB1dCIsIiJdLFsic2hhcGUiLCJzZWFyY2giLDQsIm5nSWYiXSxbInNoYXBl''@;'; put 'put ''IiwidGltZXMiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInNlYXJjaCJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siXSxbMywidGFibGUtYWN0aXZlIiwiY2xpY2siLDQsIm5nSWYiXSxbMywiY2xpY2siXSxbMSwibS0wIiwiY3Vyc29yLXBvaW50ZXIiLCJsaXN0LXBhZGRpbmci''@;'; put 'put ''XSxbInNoYXBlIiwidXNlciJdLFsxLCJsb2FkaW5nU3Bpbm5lciJdLFsxLCJzcGlubmVyIl0sWyJjbGFzcyIsImNsci1yb3ciLDQsIm5nSWYiXSxbMSwiY2xyLXJvdyJdLFsxLCJjbHItY29sLTgiXSxbMSwiY2FyZCIsInVzZXItZGF0YSJdLFsxLCJ0YWJsZS1jb250YWluZXIiXSxbImNsYXNz''@;'; put 'put ''IiwidGFibGUgdXNlci10YWJsZSIsNCwibmdJZiJdLFsxLCJ0YWJsZSIsInVzZXItaW5mbyJdLFsxLCJsZWZ0Il0sWzEsInVzZXItaW5mby10ZXh0Il0sWzEsInRhYmxlIiwidXNlci10YWJsZSJdLFsxLCJ3aWR0aC01MCJdLFsxLCIiXSxbInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiLCJj''@;'; put 'put ''bGFzcyIsIiIsMywicm91dGVyTGluayIsNCwibmdJZiJdLFsicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSIsMSwiIiwzLCJyb3V0ZXJMaW5rIl0sWzMsInJvdXRlckxpbmsiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXsxJmgmJihudCgwLCJhcHAtc2lkZWJhciIsMCkoMSwiY2xyLXRyZWUi''@;'; put 'put ''KSxybigyLHU5dCw2LDMsImNsci10cmVlLW5vZGUiLDEpLHJuKDMsZjl0LDIsMSwibmctY29udGFpbmVyIiwyKSxvdCgpKCksbnQoNCwiZGl2IiwzKSxybig1LGg5dCwzLDAsImRpdiIsNCkscm4oNixQOXQsMTksMTEsImRpdiIsNSksb3QoKSksMiZoJiYodXQoMiksVHQoIm5nSWYiLHYudXNl''@;'; put 'put ''cnMpLHV0KDEpLFR0KCJuZ0Zvck9mIix2LnVzZXJzKSx1dCgyKSxUdCgibmdJZiIsdi5sb2FkaW5nKSx1dCgxKSxUdCgibmdJZiIsdi51c2VyRGF0YSYmIXYubG9hZGluZykpfSxkZXBlbmRlbmNpZXM6W3hzLE5vLG0xLFRzLElzLFk2LGxrLHl2LF9nLHdsLHB2LE1TXSxzdHlsZXM6WyIuc2lk''@;'; put 'put ''ZWJhci1oZWlnaHRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlfS51c2VyLWluZm8tdGV4dFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmU7Zm9udC1zaXplOjIwcHh9LnVzZXItaW5mb1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5O2Jv''@;'; put 'put ''cmRlcjoxcHggc29saWQgI2E3YTdhNztib3JkZXItcmFkaXVzOjNweDtib3gtc2hhZG93OjAgMnB4IDVweCAjZGFkN2Q3fS51c2VyLWluZm9bX25nY29udGVudC0lQ09NUCVdICAgdGRbX25nY29udGVudC0lQ09NUCVde3RleHQtYWxpZ246Y2VudGVyfS51c2VyLWRhdGFbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTtib3JkZXI6MXB4IHNvbGlkICNhN2E3YTc7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNoYWRvdzowIDJweCA1cHggI2RhZDdkN30udXNlci1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OmF1dG99LnVzZXItZGF0YVtfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC51c2VyLWRhdGFbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde3RleHQtYWxpZ246Y2VudGVyfS51c2VyLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmOWY5''@;'; put 'put ''Zjk7d2lkdGg6MTAwJX0udXNlci10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aGVhZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZGFkYWRhfS51c2VyLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRyW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTY7Y3Vyc29yOnBvaW50ZXJ9LndpZHRoLTUwW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDo1MCV9LndpZHRoLTMzW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDozMyV9LnRhYmxlLWNvbnRhaW5lcltfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV17b3ZlcmZsb3cteTpzY3JvbGw7bWF4LWhlaWdodDo1MDBweH1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCl7LnVzZXItZGF0YVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDp1bnNldCFpbXBvcnRhbnR9fSJdfSksZH0pKCk7Y29uc3QgRkxlPW5ldyB6''@;'; put 'put ''ZSgiV2luZG93VG9rZW4iLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuZG9jdW1lbnQ/e3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9PndpbmRvd306dm9pZCAwKTtjbGFzcyBWZ3tjb25zdHJ1Y3RvcihnLGgpe3RoaXMuZG9jdW1lbnQ9Zyx0aGlzLndpbmRvdz1oLHRo''@;'; put 'put ''aXMuY29weVN1YmplY3Q9bmV3ICRlLHRoaXMuY29weVJlc3BvbnNlJD10aGlzLmNvcHlTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLHRoaXMuY29uZmlnPXt9fWNvbmZpZ3VyZShnKXt0aGlzLmNvbmZpZz1nfWNvcHkoZyl7aWYoIXRoaXMuaXNTdXBwb3J0ZWR8fCFnKXJldHVybiB0aGlzLnB1c2hD''@;'; put 'put ''b3B5UmVzcG9uc2Uoe2lzU3VjY2VzczohMSxjb250ZW50Omd9KTtjb25zdCBoPXRoaXMuY29weUZyb21Db250ZW50KGcpO3JldHVybiB0aGlzLnB1c2hDb3B5UmVzcG9uc2UoaD97Y29udGVudDpnLGlzU3VjY2VzczpofTp7aXNTdWNjZXNzOiExLGNvbnRlbnQ6Z30pfWdldCBpc1N1cHBvcnRl''@;'; put 'put ''ZCgpe3JldHVybiEhdGhpcy5kb2N1bWVudC5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQmJiEhdGhpcy5kb2N1bWVudC5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQoImNvcHkiKSYmISF0aGlzLndpbmRvd31pc1RhcmdldFZhbGlkKGcpe2lmKGcgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50fHxnIGlu''@;'; put 'put ''c3RhbmNlb2YgSFRNTFRleHRBcmVhRWxlbWVudCl7aWYoZy5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIikpdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkICJ0YXJnZXQiIGF0dHJpYnV0ZS4gUGxlYXNlIHVzZSAicmVhZG9ubHkiIGluc3RlYWQgb2YgImRpc2FibGVkIiBhdHRyaWJ1dGUnKTtyZXR1''@;'; put 'put ''cm4hMH10aHJvdyBuZXcgRXJyb3IoIlRhcmdldCBzaG91bGQgYmUgaW5wdXQgb3IgdGV4dGFyZWEiKX1jb3B5RnJvbUlucHV0RWxlbWVudChnLGg9ITApe3RyeXt0aGlzLnNlbGVjdFRhcmdldChnKTtjb25zdCB2PXRoaXMuY29weVRleHQoKTtyZXR1cm4gdGhpcy5jbGVhclNlbGVjdGlvbiho''@;'; put 'put ''P2c6dm9pZCAwLHRoaXMud2luZG93KSx2JiZ0aGlzLmlzQ29weVN1Y2Nlc3NJbklFMTEoKX1jYXRjaCh2KXtyZXR1cm4hMX19aXNDb3B5U3VjY2Vzc0luSUUxMSgpe2NvbnN0IGc9dGhpcy53aW5kb3cuY2xpcGJvYXJkRGF0YTtyZXR1cm4hKGcmJmcuZ2V0RGF0YSYmIWcuZ2V0RGF0YSgiVGV4''@;'; put 'put ''dCIpKX1jb3B5RnJvbUNvbnRlbnQoZyxoPXRoaXMuZG9jdW1lbnQuYm9keSl7aWYodGhpcy50ZW1wVGV4dEFyZWEmJiFoLmNvbnRhaW5zKHRoaXMudGVtcFRleHRBcmVhKSYmdGhpcy5kZXN0cm95KHRoaXMudGVtcFRleHRBcmVhLnBhcmVudEVsZW1lbnQpLCF0aGlzLnRlbXBUZXh0QXJlYSl7''@;'; put 'put ''dGhpcy50ZW1wVGV4dEFyZWE9dGhpcy5jcmVhdGVUZW1wVGV4dEFyZWEodGhpcy5kb2N1bWVudCx0aGlzLndpbmRvdyk7dHJ5e2guYXBwZW5kQ2hpbGQodGhpcy50ZW1wVGV4dEFyZWEpfWNhdGNoKHkpe3Rocm93IG5ldyBFcnJvcigiQ29udGFpbmVyIHNob3VsZCBiZSBhIERvbSBlbGVtZW50''@;'; put 'put ''Iil9fXRoaXMudGVtcFRleHRBcmVhLnZhbHVlPWc7Y29uc3Qgdj10aGlzLmNvcHlGcm9tSW5wdXRFbGVtZW50KHRoaXMudGVtcFRleHRBcmVhLCExKTtyZXR1cm4gdGhpcy5jb25maWcuY2xlYW5VcEFmdGVyQ29weSYmdGhpcy5kZXN0cm95KHRoaXMudGVtcFRleHRBcmVhLnBhcmVudEVsZW1l''@;'; put 'put ''bnQpLHZ9ZGVzdHJveShnPXRoaXMuZG9jdW1lbnQuYm9keSl7dGhpcy50ZW1wVGV4dEFyZWEmJihnLnJlbW92ZUNoaWxkKHRoaXMudGVtcFRleHRBcmVhKSx0aGlzLnRlbXBUZXh0QXJlYT12b2lkIDApfXNlbGVjdFRhcmdldChnKXtyZXR1cm4gZy5zZWxlY3QoKSxnLnNldFNlbGVjdGlvblJh''@;'; put 'put ''bmdlKDAsZy52YWx1ZS5sZW5ndGgpLGcudmFsdWUubGVuZ3RofWNvcHlUZXh0KCl7cmV0dXJuIHRoaXMuZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKX1jbGVhclNlbGVjdGlvbihnLGgpe2cmJmcuZm9jdXMoKSxoLmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpfWNyZWF0ZVRl''@;'; put 'put ''bXBUZXh0QXJlYShnLGgpe2NvbnN0IHY9InJ0bCI9PT1nLmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoImRpciIpO2xldCB5O3JldHVybiB5PWcuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKSx5LnN0eWxlLmZvbnRTaXplPSIxMnB0Iix5LnN0eWxlLmJvcmRlcj0iMCIseS5zdHlsZS5w''@;'; put 'put ''YWRkaW5nPSIwIix5LnN0eWxlLm1hcmdpbj0iMCIseS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHkuc3R5bGVbdj8icmlnaHQiOiJsZWZ0Il09Ii05OTk5cHgiLHkuc3R5bGUudG9wPShoLnBhZ2VZT2Zmc2V0fHxnLmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3ApKyJweCIseS5zZXRBdHRy''@;'; put 'put ''aWJ1dGUoInJlYWRvbmx5IiwiIikseX1wdXNoQ29weVJlc3BvbnNlKGcpe3RoaXMuY29weVN1YmplY3QubmV4dChnKX1wdXNoQ29weVJlcG9uc2UoZyl7dGhpcy5wdXNoQ29weVJlc3BvbnNlKGcpfX1WZy5cdTAyNzVmYWM9ZnVuY3Rpb24oZyl7cmV0dXJuIG5ldyhnfHxWZykoQ2koZ3MpLENp''@;'; put 'put ''KEZMZSw4KSl9LFZnLlx1MDI3NXByb3Y9QWkoe3Rva2VuOlZnLGZhY3Rvcnk6VmcuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksVmcubmdJbmplY3RhYmxlRGVmPXZpKHtmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBWZyhoMihncyksaDIoRkxlLDgpKX0sdG9rZW46VmcscHJv''@;'; put 'put ''dmlkZWRJbjoicm9vdCJ9KTtsZXQgRjl0PSgoKT0+e2NsYXNzIGR7Y29uc3RydWN0b3IoaCl7dGhpcy5jbGlwYm9hcmRTcnY9aCx0aGlzLmNiT25TdWNjZXNzPW5ldyBhcix0aGlzLmNiT25FcnJvcj1uZXcgYXJ9bmdPbkluaXQoKXt9bmdPbkRlc3Ryb3koKXt0aGlzLmNsaXBib2FyZFNydi5k''@;'; put 'put ''ZXN0cm95KHRoaXMuY29udGFpbmVyKX1vbkNsaWNrKGgpe3RoaXMuY2xpcGJvYXJkU3J2LmlzU3VwcG9ydGVkP3RoaXMudGFyZ2V0RWxtJiZ0aGlzLmNsaXBib2FyZFNydi5pc1RhcmdldFZhbGlkKHRoaXMudGFyZ2V0RWxtKT90aGlzLmhhbmRsZVJlc3VsdCh0aGlzLmNsaXBib2FyZFNydi5j''@;'; put 'put ''b3B5RnJvbUlucHV0RWxlbWVudCh0aGlzLnRhcmdldEVsbSksdGhpcy50YXJnZXRFbG0udmFsdWUsaCk6dGhpcy5jYkNvbnRlbnQmJnRoaXMuaGFuZGxlUmVzdWx0KHRoaXMuY2xpcGJvYXJkU3J2LmNvcHlGcm9tQ29udGVudCh0aGlzLmNiQ29udGVudCx0aGlzLmNvbnRhaW5lciksdGhpcy5j''@;'; put 'put ''YkNvbnRlbnQsaCk6dGhpcy5oYW5kbGVSZXN1bHQoITEsdm9pZCAwLGgpfWhhbmRsZVJlc3VsdChoLHYseSl7bGV0IEM9e2lzU3VjY2VzczpoLGV2ZW50Onl9O2g/KEM9T2JqZWN0LmFzc2lnbihDLHtjb250ZW50OnYsc3VjY2Vzc01lc3NhZ2U6dGhpcy5jYlN1Y2Nlc3NNc2d9KSx0aGlzLmNi''@;'; put 'put ''T25TdWNjZXNzLmVtaXQoQykpOnRoaXMuY2JPbkVycm9yLmVtaXQoQyksdGhpcy5jbGlwYm9hcmRTcnYucHVzaENvcHlSZXNwb25zZShDKX19cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCkoS3QoVmcpKX0sZC5cdTAyNzVkaXI9V2koe3R5cGU6ZCxzZWxl''@;'; put 'put ''Y3RvcnM6W1siIiwibmd4Q2xpcGJvYXJkIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihoLHYpezEmaCYmR24oImNsaWNrIixmdW5jdGlvbihDKXtyZXR1cm4gdi5vbkNsaWNrKEMudGFyZ2V0KX0pfSxpbnB1dHM6e3RhcmdldEVsbTpbIm5neENsaXBib2FyZCIsInRhcmdldEVsbSJdLGNv''@;'; put 'put ''bnRhaW5lcjoiY29udGFpbmVyIixjYkNvbnRlbnQ6ImNiQ29udGVudCIsY2JTdWNjZXNzTXNnOiJjYlN1Y2Nlc3NNc2cifSxvdXRwdXRzOntjYk9uU3VjY2VzczoiY2JPblN1Y2Nlc3MiLGNiT25FcnJvcjoiY2JPbkVycm9yIn19KSxkfSkoKSxIOXQ9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQu''@;'; put 'put ''XHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbYmFdfSksZH0pKCk7dmFyIE45dD1MKDM2NjI1KTtsZXQgVjl0PSgoKT0+e2NsYXNzIGR7dHJhbnNmb3JtKGgsLi4udil7Y29uc3Qg''@;'; put 'put ''eT1wYXJzZUludCh2WzBdKXx8MixDPSJudW1iZXIiIT10eXBlb2YgaD9wYXJzZUludChoKTpoO3JldHVybigwLE45dC5SKShDLHkpfX1yZXR1cm4gZC5cdTAyNzVmYWM9ZnVuY3Rpb24oaCl7cmV0dXJuIG5ldyhofHxkKX0sZC5cdTAyNzVwaXBlPVVzKHtuYW1lOiJjb252ZXJ0U2l6ZSIsdHlw''@;'; put 'put ''ZTpkLHB1cmU6ITB9KSxkfSkoKTtjb25zdCBqOXQ9WyJxdWVyeUZpbHRlciJdO2Z1bmN0aW9uIFo5dChkLGcpezEmZCYmKG50KDAsImRpdiIsNDkpLENyKDEsImNsci1zcGlubmVyIiw1MCksb3QoKSl9ZnVuY3Rpb24gejl0KGQsZyl7MSZkJiZDcigwLCJjbHItaWNvbiIsNTcpfWZ1bmN0aW9u''@;'; put 'put ''IEc5dChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci1pY29uIiw1OCksR24oImNsaWNrIixmdW5jdGlvbigpe2l0KGgpO2NvbnN0IHk9UXQoMik7cmV0dXJuIHkubGlicmFyaWVzU2VhcmNoPSIiLGEoeS5saWJyYXJ5T25GaWx0ZXIoKSl9KSxvdCgpfX1mdW5jdGlvbiBXOXQo''@;'; put 'put ''ZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJjbHItdHJlZS1ub2RlIiw1MSkoMSwiZGl2Iiw1MikoMiwiaW5wdXQiLDUzLDU0KSxHbigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oeSl7cmV0dXJuIGl0KGgpLGEoUXQoKS5saWJyYXJpZXNTZWFyY2g9eSl9KSgia2V5dXAiLGZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIGl0KGgpLGEoUXQoKS5saWJyYXJ5T25GaWx0ZXIoKSl9KSxvdCgpLHJuKDQsejl0LDEsMCwiY2xyLWljb24iLDU1KSxybig1LEc5dCwxLDAsImNsci1pY29uIiw1Niksb3QoKSgpfWlmKDImZCl7Y29uc3QgaD12YSgzKSx2PVF0KCk7dXQoMiksVHQoIm5nTW9kZWwiLHYu''@;'; put 'put ''bGlicmFyaWVzU2VhcmNoKSx1dCgyKSxUdCgibmdJZiIsaC52YWx1ZS5sZW5ndGg8MSksdXQoMSksVHQoIm5nSWYiLGgudmFsdWUubGVuZ3RoPjApfX1mdW5jdGlvbiBZOXQoZCxnKXsxJmQmJkNyKDAsImNsci1pY29uIiw1Nyl9ZnVuY3Rpb24gVTl0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdp''@;'; put 'put ''KCk7bnQoMCwiY2xyLWljb24iLDU4KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7aXQoaCksUXQoKTtjb25zdCB5PXZhKDMpLEM9UXQoMikuJGltcGxpY2l0LEk9UXQoKTtyZXR1cm4geS52YWx1ZT0iIixDLnNlYXJjaFN0cmluZz0iIixhKEkudHJlZU9uRmlsdGVyKEMsInRhYmxlcyIpKX0pLG90''@;'; put 'put ''KCl9fWZ1bmN0aW9uIFE5dChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci10cmVlLW5vZGUiLDUxKSgxLCJkaXYiLDUyKSgyLCJpbnB1dCIsNjMsNjQpLEduKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gaXQoaCksYShRdCgyKS4kaW1wbGljaXQuc2VhcmNo''@;'; put 'put ''U3RyaW5nPXkpfSkoImtleXVwIixmdW5jdGlvbigpe2l0KGgpO2NvbnN0IHk9UXQoMikuJGltcGxpY2l0O3JldHVybiBhKFF0KCkudHJlZU9uRmlsdGVyKHksInRhYmxlcyIpKX0pLG90KCkscm4oNCxZOXQsMSwwLCJjbHItaWNvbiIsNTUpLHJuKDUsVTl0LDEsMCwiY2xyLWljb24iLDU2KSxv''@;'; put 'put ''dCgpKCl9aWYoMiZkKXtjb25zdCBoPXZhKDMpLHY9UXQoMikuJGltcGxpY2l0O3V0KDIpLFR0KCJpZCIsInNlYXJjaF8iK3YuTElCUkFSWVJFRikoIm5nTW9kZWwiLHYuc2VhcmNoU3RyaW5nKSx1dCgyKSxUdCgibmdJZiIsaC52YWx1ZS5sZW5ndGg8MSksdXQoMSksVHQoIm5nSWYiLGgudmFs''@;'; put 'put ''dWUubGVuZ3RoPjApfX1mdW5jdGlvbiBKOXQoZCxnKXsxJmQmJkNyKDAsImNsci1pY29uIiw3MCl9ZnVuY3Rpb24gWDl0KGQsZyl7MSZkJiZDcigwLCJjbHItaWNvbiIsNzEpfWZ1bmN0aW9uIEs5dChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImJ1dHRvbiIsNjYpLEduKCJjbGlj''@;'; put 'put ''ayIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KCkuJGltcGxpY2l0LEM9UXQoMikuJGltcGxpY2l0LEk9UXQoKTtyZXR1cm4gSS5saWI9Qy5MSUJSQVJZUkVGLEkudGFibGU9eSxJLnNlbGVjdExpYlRhYmxlKHkpLGEoSS52aWV3RGF0YSgwKSl9KSxCMCgxLDY3KSxybigyLEo5dCwxLDAs''@;'; put 'put ''ImNsci1pY29uIiw2OCkscm4oMyxYOXQsMSwwLCJjbHItaWNvbiIsNjkpLFAwKCksWXQoNCksb3QoKX1pZigyJmQpe2NvbnN0IGg9UXQoKS4kaW1wbGljaXQsdj1RdCgyKS4kaW1wbGljaXQ7RmkoInRhYmxlLWFjdGl2ZSIsUXQoKS5saWJUYWJBY3RpdmUodi5MSUJSQVJZUkVGLGgpKSx1dCgx''@;'; put 'put ''KSxUdCgibmdTd2l0Y2giLGguaW5jbHVkZXMoIi1GQyIpKSx1dCgxKSxUdCgibmdTd2l0Y2hDYXNlIiwhMCksdXQoMSksVHQoIm5nU3dpdGNoQ2FzZSIsITEpLHV0KDEpLEppKCIgIixoLnJlcGxhY2UoIi1GQyIsIiIpLCIgIil9fWZ1bmN0aW9uICQ5dChkLGcpe2lmKDEmZCYmKG50KDAsImNs''@;'; put 'put ''ci10cmVlLW5vZGUiKSxybigxLEs5dCw1LDYsImJ1dHRvbiIsNjUpLG90KCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDt1dCgxKSxUdCgibmdJZiIsaC5sZW5ndGg+MCl9fWZ1bmN0aW9uIHE5dChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImNsci10cmVlLW5vZGUiLDYwKSxH''@;'; put 'put ''bigiY2xpY2siLGZ1bmN0aW9uKHkpe2l0KGgpO2NvbnN0IEM9UXQoKS4kaW1wbGljaXQ7cmV0dXJuIGEoUXQoKS50cmVlTm9kZUNsaWNrZWQoeSxDKSl9KSgiY2xyRXhwYW5kZWRDaGFuZ2UiLGZ1bmN0aW9uKHkpe3JldHVybiBpdChoKSxhKFF0KCkuJGltcGxpY2l0LmV4cGFuZGVkPXkpfSks''@;'; put 'put ''bnQoMSwicCIsNjEpLEduKCJjbGljayIsZnVuY3Rpb24oKXtpdChoKTtjb25zdCB5PVF0KCkuJGltcGxpY2l0LEM9UXQoKTtyZXR1cm4gQy5saWI9eS5MSUJSQVJZUkVGLGEoQy5saWJyYXJ5T25DbGljayh5LkxJQlJBUllSRUYseSkpfSksQ3IoMiwiY2xyLWljb24iLDYyKSxZdCgzKSxvdCgp''@;'; put 'put ''LHJuKDQsUTl0LDYsNCwiY2xyLXRyZWUtbm9kZSIsMikscm4oNSwkOXQsMiwxLCJjbHItdHJlZS1ub2RlIiwzKSxvdCgpfWlmKDImZCl7Y29uc3QgaD1RdCgpLiRpbXBsaWNpdDtGaSgiY2xyLWV4cGFuZGVkIixoLmV4cGFuZGVkKSxUdCgiY2xyRXhwYW5kZWQiLGguZXhwYW5kZWQpKCJjbHJM''@;'; put 'put ''b2FkaW5nIixoLmxvYWRpbmdUYWJsZXMmJiFoLnRhYmxlcyksdXQoMyksSmkoIiAiLGguTElCUkFSWU5BTUUsIiAiKSx1dCgxKSxUdCgibmdJZiIsaC50YWJsZXMpLHV0KDEpLFR0KCJuZ0Zvck9mIixoLnRhYmxlcyl9fWZ1bmN0aW9uIGVBdChkLGcpe2lmKDEmZCYmKEIwKDApLHJuKDEscTl0''@;'; put 'put ''LDYsNywiY2xyLXRyZWUtbm9kZSIsNTkpLFAwKCkpLDImZCl7Y29uc3QgaD1nLiRpbXBsaWNpdDt1dCgxKSxUdCgibmdJZiIsIWguaGlkZGVuJiZoLmluRm9yZWdyb3VuZCl9fWZ1bmN0aW9uIHRBdChkLGcpezEmZCYmKG50KDAsImRpdiIsNzIpKDEsInNwYW4iLDczKSxZdCgyLCIgTG9hZGlu''@;'; put 'put ''Zy4uLiAiKSxvdCgpKCkpfWZ1bmN0aW9uIG5BdChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImRpdiIsNzQpKDEsImRpdiIsNzUpKDIsImRpdiIsNzYpKDMsImRpdiIsNzcpKDQsImJ1dHRvbiIsNzgpLENyKDUsImNsci1pY29uIiw3OSksb3QoKSxudCg2LCJoMyIsNDMpLFl0KDcs''@;'; put 'put ''IkVycm9yIiksb3QoKSgpLG50KDgsImRpdiIsMTApKDksInAiKSxZdCgxMCwiWW91IGNhbm5vdCBzdWJtaXQgZW1wdHkgY2xhdXNlcyIpLG90KCkoKSxudCgxMSwiZGl2IiwyMSkoMTIsImJ1dHRvbiIsODApLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgpLm51bGxW''@;'; put 'put ''YXJpYWJsZXM9ITEpfSksWXQoMTMsIiBPayAiKSxvdCgpKCkoKSgpKCl9fWZ1bmN0aW9uIHJBdChkLGcpezEmZCYmQ3IoMCwiZGl2Iiw4MSl9ZnVuY3Rpb24gaUF0KGQsZyl7MSZkJiZDcigwLCJhcHAtcXVlcnkiLG51bGwsODIpfWZ1bmN0aW9uIG9BdChkLGcpezEmZCYmKG50KDAsImRpdiIs''@;'; put 'put ''ODMpKDEsInNwYW4iLDg0KSxZdCgyLCIgTG9hZGluZy4uLiAiKSxvdCgpLG50KDMsImRpdiIpKDQsImg0IiksWXQoNSwiTG9hZGluZyB0YWJsZSB2aWV3ZXIiKSxvdCgpKCkoKSl9ZnVuY3Rpb24gYUF0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiY2xyLWljb24iLDEwNiksR24o''@;'; put 'put ''ImNsaWNrIixmdW5jdGlvbigpe2l0KGgpLFF0KCk7Y29uc3QgeT12YSg1KTtyZXR1cm4gYShRdCgyKS5zZWFyY2hUYWJsZSh5KSl9KSxvdCgpfX1mdW5jdGlvbiBsQXQoZCxnKXsxJmQmJihudCgwLCJzcGFuIiwxMDcpLFl0KDEsIiBMb2FkaW5nLi4uICIpLG90KCkpfWZ1bmN0aW9uIHNBdChk''@;'; put 'put ''LGcpezEmZCYmQ3IoMCwiY2xyLWljb24iLDEwOCl9ZnVuY3Rpb24gdUF0KGQsZyl7aWYoMSZkJiYobnQoMCwic3BhbiIpLFl0KDEpLG5uKDIsInRob3VzYW5kU2VwYXJhdG9yIiksb3QoKSksMiZkKXtjb25zdCBoPVF0KDQpO3V0KDEpLEZoKCIgKCIsUG4oMiwyLGgubnVtYmVyT2ZSb3dzLCIs''@;'; put 'put ''IiksIiAiLDE9PT1oLm51bWJlck9mUm93cz8icm93Ijoicm93cyIsIikgIil9fWZ1bmN0aW9uIGNBdChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImgzIiwxMDkpLFl0KDEpLHJuKDIsdUF0LDMsNSwic3BhbiIsMzgpLG50KDMsImNsci1pY29uIiwxMTApLEduKCJjbGljayIsZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgzKS5yZWxvYWRUYWJsZURhdGEoKSl9KSxvdCgpKCl9aWYoMiZkKXtjb25zdCBoPVF0KDMpO3V0KDEpLEppKCIgIixudWxsPT1oLnRhYmxlVGl0bGU/bnVsbDpoLnRhYmxlVGl0bGUucmVwbGFjZSgiLUZDIiwiIiksIiAiKSx1dCgxKSxUdCgibmdJ''@;'; put 'put ''ZiIsbnVsbCE9PWgubnVtYmVyT2ZSb3dzKX19ZnVuY3Rpb24gZkF0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiYnV0dG9uIiwxMTkpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCg1KS5lZGl0VGFibGUoKSl9KSxDcigxLCJjbHItaWNvbiIsMTIyKSxu''@;'; put 'put ''dCgyLCJzcGFuIiksWXQoMywiRWRpdCIpLG90KCkoKX19ZnVuY3Rpb24gaEF0KGQsZyl7aWYoMSZkKXtjb25zdCBoPXdpKCk7bnQoMCwiYnV0dG9uIiwxMTkpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCg1KS5nb1RvTGluZWFnZSgpKX0pLENyKDEsImNsci1pY29u''@;'; put 'put ''IiwxMjMpLG50KDIsInNwYW4iKSxZdCgzLCJMaW5lYWdlIiksb3QoKSgpfX1mdW5jdGlvbiBkQXQoZCxnKXtpZigxJmQpe2NvbnN0IGg9d2koKTtudCgwLCJjbHItZHJvcGRvd24tbWVudSIsMTE1KSxybigxLGZBdCw0LDAsImJ1dHRvbiIsMTE2KSxybigyLGhBdCw0LDAsImJ1dHRvbiIsMTE2''@;'; put 'put ''KSxudCgzLCJidXR0b24iLDExNyksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KDQpLm9wZW5RYigpKX0pLENyKDQsImNsci1pY29uIiwxMTgpLG50KDUsInNwYW4iKSxZdCg2LCJGaWx0ZXIiKSxvdCgpKCksbnQoNywiYnV0dG9uIiwxMTkpLEduKCJjbGljayIsZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCg0KS5vcGVuRG93bmxvYWQ9ITApfSksQ3IoOCwiY2xyLWljb24iLDEyMCksbnQoOSwic3BhbiIpLFl0KDEwLCJEb3dubG9hZCIpLG90KCkoKSxudCgxMSwiYnV0dG9uIiwxMTkpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShR''@;'; put 'put ''dCg0KS5zaG93V2ViUXVlcnkoKSl9KSxDcigxMiwiY2xyLWljb24iLDEyMSksbnQoMTMsInNwYW4iKSxZdCgxNCwiV2ViIFF1ZXJ5IFVSTCIpLG90KCkoKSgpfWlmKDImZCl7Y29uc3QgaD1RdCg0KTt1dCgxKSxUdCgibmdJZiIsaC50YWJsZUVkaXRFeGlzdHMoKSksdXQoMSksVHQoIm5nSWYi''@;'; put 'put ''LGgudGFibGV1cmkpfX1mdW5jdGlvbiBwQXQoZCxnKXsxJmQmJihudCgwLCJjbHItZHJvcGRvd24iLDExMSkoMSwiYnV0dG9uIiwxMTIpLENyKDIsImNsci1pY29uIiwxMTMpLFl0KDMsIiBvcHRpb25zICIpLG90KCkscm4oNCxkQXQsMTUsMiwiY2xyLWRyb3Bkb3duLW1lbnUiLDExNCksb3Qo''@;'; put 'put ''KSksMiZkJiZUdCgiY2xyQ2xvc2VNZW51T25JdGVtQ2xpY2siLCEwKX1mdW5jdGlvbiBnQXQoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDEyNCkoMSwic3BhbiIpLFl0KDIsIkZJTFRFUiA6ICIpLG50KDMsImIiKSxZdCg0KSxvdCgpKCkoKSksMiZkKXtjb25zdCBoPVF0KDMpO3V0KDQpLGpp''@;'; put 'put ''KGgucXVlcnlUZXh0KX19Y29uc3QgbUF0PWZ1bmN0aW9uKCl7cmV0dXJuWyIiLCIgIl19O2Z1bmN0aW9uIHZBdChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO250KDAsImRpdiIsOTApKDEsInNlY3Rpb24iLDkxKSgyLCJmb3JtIiw5MikoMywiZGl2Iiw5MykoNCwiaW5wdXQiLDk0LDk1KSxH''@;'; put 'put ''bigia2V5dXAuZW50ZXIiLGZ1bmN0aW9uKCl7aXQoaCk7Y29uc3QgeT12YSg1KTtyZXR1cm4gYShRdCgyKS5zZWFyY2hUYWJsZSh5KSl9KSxvdCgpLHJuKDYsYUF0LDEsMCwiY2xyLWljb24iLDk2KSxybig3LGxBdCwyLDAsInNwYW4iLDk3KSxvdCgpLG50KDgsImNsci1jaGVja2JveC1jb250''@;'; put 'put ''YWluZXIiKSg5LCJjbHItY2hlY2tib3gtd3JhcHBlciIpKDEwLCJpbnB1dCIsOTgpLEduKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih5KXtyZXR1cm4gaXQoaCksYShRdCgyKS5zZWFyY2hOdW1lcmljPXkpfSksb3QoKSxudCgxMSwibGFiZWwiKSxZdCgxMiwiTnVtZXJpYyIpLG90KCkoKSgp''@;'; put 'put ''KCkoKSxudCgxMywiZGl2Iiw5OSkoMTQsImNsci1pY29uIiwxMDApLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaXQoaCksYShRdCgyKS5kYXRhc2V0SW5mbz0hMCl9KSxvdCgpLHJuKDE1LHNBdCwxLDAsImNsci1pY29uIiwxMDEpLHJuKDE2LGNBdCw0LDIsImgzIiwxMDIpLG90KCks''@;'; put 'put ''bnQoMTcsImRpdiIsMTAzKSxybigxOCxwQXQsNSwxLCJjbHItZHJvcGRvd24iLDEwNCksb3QoKSxybigxOSxnQXQsNSwxLCJkaXYiLDEwNSksb3QoKX1pZigyJmQpe2NvbnN0IGg9UXQoMik7dXQoNCksVHQoInR5cGUiLGguc2VhcmNoTnVtZXJpYz8ibnVtYmVyIjoidGV4dCIpLHV0KDIpLFR0''@;'; put 'put ''KCJuZ0lmIiwhaC5zZWFyY2hMb2FkaW5nKSx1dCgxKSxUdCgibmdJZiIsaC5zZWFyY2hMb2FkaW5nKSx1dCgzKSxUdCgibmdNb2RlbCIsaC5zZWFyY2hOdW1lcmljKSx1dCg1KSxUdCgibmdJZiIsbnVsbD09aC50YWJsZVRpdGxlP251bGw6aC50YWJsZVRpdGxlLmluY2x1ZGVzKCItRkMiKSks''@;'; put 'put ''dXQoMSksVHQoIm5nSWYiLGgudGFibGVUaXRsZSYmaC50YWJsZVRpdGxlLmxlbmd0aD4wKSx1dCgyKSxUdCgibmdJZiIsaC50YWJsZVRpdGxlJiYhaC5hYm9ydEFjdGl2ZSksdXQoMSksVHQoIm5nSWYiLCIxPTEiIT09aC5xdWVyeVRleHQmJiFjcyg4LG1BdCkuaW5jbHVkZXMoaC5xdWVyeVRl''@;'; put 'put ''eHQpJiYhaC5hYm9ydEFjdGl2ZSl9fWZ1bmN0aW9uIEFBdChkLGcpezEmZCYmKG50KDAsImRpdiIsMTI1KSxDcigxLCJjbHItaWNvbiIsMTI2KSxudCgyLCJoMyIsMTI3KSxZdCgzLCJQbGVhc2Ugc2VsZWN0IGEgbGlicmFyeSIpLG90KCkoKSl9ZnVuY3Rpb24geUF0KGQsZyl7MSZkJiZDcigw''@;'; put 'put ''LCJjbHItc3Bpbm5lciIsNTApfWZ1bmN0aW9uIHdBdChkLGcpezEmZCYmKG50KDAsImRpdiIsMTM1KSxDcigxLCJjbHItaWNvbiIsMTM2KSxudCgyLCJoMyIsMTI3KSxZdCgzLCJQbGVhc2Ugc2VsZWN0IGEgdGFibGUiKSxvdCgpKCkpfWZ1bmN0aW9uIGJBdChkLGcpe2lmKDEmZCl7Y29uc3Qg''@;'; put 'put ''aD13aSgpO250KDAsInAiLDEzOSksWXQoMSwiIE5vIGxpYnJhcnkgaW5mbyBmb3VuZC4gQ2xpY2sgIiksbnQoMiwiY2xyLWljb24iLDE0MCksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBpdChoKSxhKFF0KDQpLnJlbG9hZExpYkluZm8oKSl9KSxvdCgpLFl0KDMsIiBidXR0b24gdG8g''@;'; put 'put ''cmVmcmVzaC4gIiksb3QoKX19ZnVuY3Rpb24gX0F0KGQsZyl7aWYoMSZkJiYobnQoMCwidHIiKSgxLCJ0ZCIsMTQxKSxZdCgyLCJFTkdJTkU6Iiksb3QoKSxudCgzLCJ0ZCIsMTQyKSxZdCg0KSxvdCgpKCkpLDImZCl7Y29uc3QgaD1RdCg1KTt1dCg0KSxKaSgiICIsaC5saWJpbmZvWzBdP2gu''@;'; put 'put ''bGliaW5mb1swXS5FTkdJTkU6IiIsIiAiKX19ZnVuY3Rpb24gQ0F0KGQsZyl7aWYoMSZkJiYobnQoMCwidHIiKSgxLCJ0ZCIsMTQxKSxZdCgyLCJMSUJJRDoiKSxvdCgpLG50KDMsInRkIiwxNDIpLFl0KDQpLG90KCkoKSksMiZkKXtjb25zdCBoPVF0KDUpO3V0KDQpLEppKCIgIixoLmxpYmlu''@;'; put 'put ''Zm9bMF0/aC5saWJpbmZvWzBdLkxJQklEOiIiLCIgIil9fWZ1bmN0aW9uIGtBdChkLGcpe2lmKDEmZCYmKG50KDAsInRyIikoMSwidGQiLDE0MSksWXQoMiwiTElCTkFNRToiKSxvdCgpLG50KDMsInRkIiwxNDIpLFl0KDQpLG90KCkoKSksMiZkKXtjb25zdCBoPVF0KDUpO3V0KDQpLEppKCIg''@;'; put 'put ''IixoLmxpYmluZm9bMF0/aC5saWJpbmZvWzBdLkxJQk5BTUU6IiIsIiAiKX19ZnVuY3Rpb24gU0F0KGQsZyl7aWYoMSZkJiYobnQoMCwidHIiKSgxLCJ0ZCIsMTQxKSxZdCgyLCJMSUJTSVpFOiIpLG90KCksbnQoMywidGQiLDE0MiksWXQoNCksbm4oNSwiY29udmVydFNpemUiKSxvdCgpKCkp''@;'; put 'put ''LDImZCl7Y29uc3QgaD1RdCg1KTt1dCg0KSxKaSgiICIsaC5saWJpbmZvWzBdP3p0KDUsMSxoLmxpYmluZm9bMF0uTElCU0laRSk6IiIsIiAiKX19ZnVuY3Rpb24gTUF0KGQsZyl7aWYoMSZkJiYobnQoMCwidHIiKSgxLCJ0ZCIsMTQxKSxZdCgyLCJPV05FUlM6Iiksb3QoKSxudCgzLCJ0ZCIs''@;'; put 'put ''MTQyKSxZdCg0KSxvdCgpKCkpLDImZCl7Y29uc3QgaD1RdCg1KTt1dCg0KSxKaSgiICIsaC5saWJpbmZvWzBdP2gubGliaW5mb1swXS5PV05FUlM6IiIsIiAiKX19ZnVuY3Rpb24gRUF0KGQsZyl7aWYoMSZkJiYobnQoMCwidHIiKSgxLCJ0ZCIsMTQxKSxZdCgyLCJQQVRIUzoiKSxvdCgpLG50''@;'; put 'put ''KDMsInRkIiwxNDIpLFl0KDQpLG90KCkoKSksMiZkKXtjb25zdCBoPVF0KDUpO3V0KDQpLEppKCIgIixoLmxpYmluZm9bMF0/aC5saWJpbmZvWzBdLlBBVEhTOiIiLCIgIil9fWZ1bmN0aW9uIHhBdChkLGcpe2lmKDEmZCYmKG50KDAsInRyIikoMSwidGQiLDE0MSksWXQoMiwiUEVSTVM6Iiks''@;'; put 'put ''b3QoKSxudCgzLCJ0ZCIsMTQyKSxZdCg0KSxvdCgpKCkpLDImZCl7Y29uc3QgaD1RdCg1KTt1dCg0KSxKaSgiICIsaC5saWJpbmZvWzBdP2gubGliaW5mb1swXS5QRVJNUzoiIiwiICIpfX1mdW5jdGlvbiBUQXQoZCxnKXtpZigxJmQmJihudCgwLCJ0ciIpKDEsInRkIiwxNDEpLFl0KDIsIlND''@;'; put 'put ''SEVNQVM6Iiksb3QoKSxudCgzLCJ0ZCIsMTQyKSxZdCg0KSxvdCgpKCkpLDImZCl7Y29uc3QgaD1RdCg1KTt1dCg0KSxKaSgiICIsaC5saWJpbmZvWzBdP2gubGliaW5mb1swXS5TQ0hFTUFTOiIiLCIgIil9fWZ1bmN0aW9uIElBdChkLGcpe2lmKDEmZCYmKG50KDAsInRyIikoMSwidGQiLDE0''@;'; put 'put ''MSksWXQoMiwiVEFCTEVfQ05UOiIpLG90KCksbnQoMywidGQiLDE0MiksWXQoNCksb3QoKSgpKSwyJmQpe2NvbnN0IGg9UXQoNSk7dXQoNCksSmkoIiAiLGgubGliaW5mb1swXT9oLmxpYmluZm9bMF0uVEFCTEVfQ05UOiIiLCIgIil9fWZ1bmN0aW9uIERBdChkLGcpe2lmKDEmZCYmKEIwKDAp''@;'; put 'put ''LG50KDEsInRhYmxlIikscm4oMixfQXQsNSwxLCJ0ciIsMzgpLHJuKDMsQ0F0LDUsMSwidHIiLDM4KSxybig0LGtBdCw1LDEsInRyIiwzOCkscm4oNSxTQXQsNiwzLCJ0ciIsMzgpLHJuKDYsTUF0LDUsMSwidHIiLDM4KSxybig3LEVBdCw1LDEsInRyIiwzOCkscm4oOCx4QXQsNSwxLCJ0ciIs''@;'; put 'put ''MzgpLHJuKDksVEF0LDUsMSwidHIiLDM4KSxybigxMCxJQXQsNSwxLCJ0ciIsMzgpLG90KCksUDAoKSksMiZkKXtjb25zdCBoPVF0KDQpO3V0KDIpLFR0KCJuZ0lmIiwiIiE9PWgubGliaW5mb1swXS5FTkdJTkUpLHV0KDEpLFR0KCJuZ0lmIiwiIiE9PWgubGliaW5mb1swXS5MSUJJRCksdXQo''@;'; put 'put ''MSksVHQoIm5nSWYiLCIiIT09aC5saWJpbmZvWzBdLkxJQk5BTUUpLHV0KDEpLFR0KCJuZ0lmIixudWxsIT09aC5saWJpbmZvWzBdLkxJQlNJWkUpLHV0KDEpLFR0KCJuZ0lmIiwiIiE9PWgubGliaW5mb1swXS5PV05FUlMpLHV0KDEpLFR0KCJuZ0lmIiwiIiE9PWgubGliaW5mb1swXS5QQVRI''@;'; put 'put ''UyksdXQoMSksVHQoIm5nSWYiLCIiIT09aC5saWJpbmZvWzBdLlBFUk1TKSx1dCgxKSxUdCgibmdJZiIsIiIhPT1oLmxpYmluZm9bMF0uU0NIRU1BUyksdXQoMSksVHQoIm5nSWYiLG51bGwhPT1oLmxpYmluZm9bMF0uVEFCTEVfQ05UKX19ZnVuY3Rpb24gTEF0KGQsZyl7aWYoMSZkJiYobnQo''@;'; put 'put ''MCwiZGl2IiwxMzcpLHJuKDEsYkF0LDQsMCwicCIsMTM4KSxybigyLERBdCwxMSw5LCJuZy1jb250YWluZXIiLDM4KSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoMyk7dXQoMSksVHQoIm5nSWYiLGgubGliaW5mby5sZW5ndGg8MSksdXQoMSksVHQoIm5nSWYiLGgubGliaW5mby5sZW5ndGg+MCl9''@;'; put 'put ''fWZ1bmN0aW9uIE9BdChkLGcpe2lmKDEmZCl7Y29uc3QgaD13aSgpO0IwKDApLG50KDEsImRpdiIsMTI4KSxDcigyLCJzZWN0aW9uIiw5MSksbnQoMywiZGl2IiwxMjkpKDQsImgzIiwxMzApLFl0KDUpLG90KCksbnQoNiwiY2xyLWljb24iLDExMCksR24oImNsaWNrIixmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBpdChoKSxhKFF0KDIpLnJlbG9hZExpYkluZm8oKSl9KSxvdCgpKCksQ3IoNywiZGl2IiwxMDMpLG90KCksbnQoOCwiZGl2IiwxMzEpLHJuKDkseUF0LDEsMCwiY2xyLXNwaW5uZXIiLDEzMiksb3QoKSxybigxMCx3QXQsNCwwLCJkaXYiLDEzMykscm4oMTEsTEF0LDMsMiwiZGl2Iiwx''@;'; put 'put ''MzQpLFAwKCl9aWYoMiZkKXtjb25zdCBoPVF0KDIpO3V0KDUpLEppKCIgIixoLmxpYiwiICIpLHV0KDQpLFR0KCJuZ0lmIixudWxsPT09aC5saWJpbmZvKSx1dCgxKSxUdCgibmdJZiIsbnVsbCE9PWgubGliaW5mbyksdXQoMSksVHQoIm5nSWYiLG51bGwhPT1oLmxpYmluZm8pfX1mdW5jdGlv''@;'; put 'put ''biBSQXQoZCxnKXsxJmQmJihudCgwLCJoMyIsMTI3KSxZdCgxLCIgTm8gZGF0YSBmb3VuZCB3aXRoIGdpdmVuIGNvbmRpdGlvbnMgIiksb3QoKSl9ZnVuY3Rpb24gQkF0KGQsZyl7MSZkJiYobnQoMCwiaDMiLDEyNyksWXQoMSwiIE5vIGRhdGEgZm91bmQgZHVlIHRvIHNhcyByZXF1ZXN0IGVy''@;'; put 'put ''cm9yICIpLG90KCkpfWZ1bmN0aW9uIFBBdChkLGcpe2lmKDEmZCYmKG50KDAsImRpdiIsMTQzKSxDcigxLCJjbHItaWNvbiIsMTQ0KSxybigyLFJBdCwyLDAsImgzIiwxNDUpLHJuKDMsQkF0LDIsMCwiaDMiLDE0NSksb3QoKSksMiZkKXtjb25zdCBoPVF0KDIpO3V0KDIpLFR0KCJuZ0lmIixo''@;'; put 'put ''Lm5vRGF0YSksdXQoMSksVHQoIm5nSWYiLGgubm9EYXRhUmVxRXJyKX19ZnVuY3Rpb24gRkF0KGQsZyl7aWYoMSZkJiYobnQoMCwiZGl2IiwxNDYpLENyKDEsImhvdC10YWJsZSIsMTQ3KSxvdCgpKSwyJmQpe2NvbnN0IGg9UXQoMik7dXQoMSksVHQoIm11bHRpQ29sdW1uU29ydGluZyIsITAp''@;'; put 'put ''KCJ2aWV3cG9ydFJvd1JlbmRlcmluZ09mZnNldCIsNTApKCJkYXRhIixoLmhvdFRhYmxlLmRhdGEpKCJjb2xIZWFkZXJzIixoLmhvdFRhYmxlLmNvbEhlYWRlcnMpKCJjb2x1bW5zIixoLmhvdFRhYmxlLmNvbHVtbnMpKCJmaWx0ZXJzIiwhMCkoImRyb3Bkb3duTWVudSIsaC5ob3RUYWJsZS5k''@;'; put 'put ''cm9wZG93bk1lbnUpKCJoZWlnaHQiLGguaG90VGFibGUuaGVpZ2h0KSgibW9kaWZ5Q29sV2lkdGgiLGgubWF4V2lkdGhDaGVrZXIpKCJjZWxscyIsaC5ob3RUYWJsZS5jZWxscykoIm1heFJvd3MiLGguaG90VGFibGUubWF4Um93cykoIm1hbnVhbENvbHVtblJlc2l6ZSIsITApKCJsaWNlbnNl''@;'; put 'put ''S2V5IixoLmhvdFRhYmxlLmxpY2Vuc2VLZXkpfX1mdW5jdGlvbiBIQXQoZCxnKXtpZigxJmQmJihudCgwLCJkaXYiLDg1KSxybigxLHZBdCwyMCw5LCJkaXYiLDg2KSxybigyLEFBdCw0LDAsImRpdiIsODcpLHJuKDMsT0F0LDEyLDQsIm5nLWNvbnRhaW5lciIsMzgpLHJuKDQsUEF0LDQsMiwi''@;'; put 'put ''ZGl2Iiw4OCkscm4oNSxGQXQsMiwxMywiZGl2Iiw4OSksb3QoKSksMiZkKXtjb25zdCBoPVF0KCk7dXQoMSksVHQoIm5nSWYiLGgudGFibGUpLHV0KDEpLFR0KCJuZ0lmIiwhKGgubGlifHxoLnRhYmxlfHxoLm5vRGF0YVJlcUVycnx8aC5ub0RhdGEpKSx1dCgxKSxUdCgibmdJZiIsIWgubm9E''@;'; put 'put ''YXRhJiYhaC5ub0RhdGFSZXFFcnImJiFoLnRhYmxlJiZoLmxpYiksdXQoMSksVHQoIm5nSWYiLGgubm9EYXRhfHxoLm5vRGF0YVJlcUVyciksdXQoMSksVHQoIm5nSWYiLCFoLm5vRGF0YSYmIWgubm9EYXRhUmVxRXJyJiZoLnRhYmxlKX19bGV0IHpuZT0oKCk9PntjbGFzcyBke2NvbnN0cnVj''@;'; put 'put ''dG9yKGgsdix5LEMsSSxaLHVlLF9lLEJlKXt0aGlzLmFwcFNlcnZpY2U9aCx0aGlzLnNhc1N0b3JlU2VydmljZT12LHRoaXMuc2FzU2VydmljZT15LHRoaXMucm91dGVyPUMsdGhpcy5yb3V0ZT1JLHRoaXMuZXZlbnRTZXJ2aWNlPVosdGhpcy5sb2dnZXJTZXJ2aWNlPXVlLHRoaXMuaGVscGVy''@;'; put 'put ''U2VydmljZT1fZSx0aGlzLmNkZj1CZSx0aGlzLnF1ZXJ5RmlsdGVyQ29tcExpc3Q9bmV3IHpyLHRoaXMubGlicmFyaWVzUGFnaW5nPSExLHRoaXMubGlicmFyaWVzU2VhcmNoPSIiLHRoaXMubGlicmFyeVRhYmxlc1JlZj0iIix0aGlzLmxpYnJhcmllc1RyZWVFeHBhbmRlZD0hMSx0aGlzLmxp''@;'; put 'put ''YmluZm89bnVsbCx0aGlzLnRhYmxldXJpPW51bGwsdGhpcy5maWx0ZXI9ITEsdGhpcy5maWx0ZXJDb2xzPVtdLHRoaXMubnVsbFZhcmlhYmxlcz0hMSx0aGlzLmFib3J0QWN0aXZlPSExLHRoaXMudXJsRmlsdGVyUGs9bnVsbCx0aGlzLnF1ZXJ5VGV4dD0iIix0aGlzLndlYlF1ZXJ5VGV4dD0i''@;'; put 'put ''Iix0aGlzLnF1ZXJ5RXJyPSExLHRoaXMudGFibGVGbGFnPSEwLHRoaXMubGlicmFyaWVzTG9hZGluZz0hMSx0aGlzLmxvYWRpbmdUYWJsZVZpZXc9ITEsdGhpcy5zd2l0Y2hGbGFnPSExLHRoaXMubm9EYXRhPSExLHRoaXMubm9EYXRhUmVxRXJyPSExLHRoaXMudGFibGVEaXNhYmxlPSExLHRo''@;'; put 'put ''aXMuYWN0aW9uRGlzYWJsZT0hMSx0aGlzLm9wZW5Eb3dubG9hZD0hMSx0aGlzLndlYlF1ZXJ5PSExLHRoaXMud2ViUXVlcnlUYWI9ITEsdGhpcy5kb3dubG9hZEZvcm1hdD0iQ1NWIix0aGlzLnNhc2pzQ29uZmlnPW5ldyBVMy5TQVNqc0NvbmZpZyx0aGlzLnNlYXJjaExvYWRpbmc9ITEsdGhp''@;'; put 'put ''cy5zZWFyY2hOdW1lcmljPSExLHRoaXMubnVtYmVyT2ZSb3dzPW51bGwsdGhpcy5oZWFkZXJQa3M9W10sdGhpcy4kZGF0YUZvcm1hdHM9bnVsbCx0aGlzLmRhdGFzZXRJbmZvPSExLHRoaXMuZHNtZXRhPVtdLHRoaXMuaG90VGFibGU9e2RhdGE6W10sY29sSGVhZGVyczpbXSxjb2x1bW5zOltd''@;'; put 'put ''LGhlaWdodDoiMTAwJSIsbWF4Um93czp0aGlzLmFwcFNlcnZpY2UuZGVtb0xpbWl0cy5yb3dzX2FsbG93ZWR8fDEvMCxzZXR0aW5nczp7fSxhZnRlckdldENvbEhlYWRlcjp2b2lkIDAsbGljZW5zZUtleTp2b2lkIDAsZHJvcGRvd25NZW51OntpdGVtczp7bWFrZV9yZWFkX29ubHk6e25hbWU6''@;'; put 'put ''Im1ha2VfcmVhZF9vbmx5In0sYWxpZ25tZW50OntuYW1lOiJhbGlnbm1lbnQifSxzcDE6e25hbWU6Ii0tLS0tLS0tLSJ9LGluZm86e25hbWU6InRlc3QgaW5mbyIscmVuZGVyZXI6KE5lLEtlLHB0LE90LCR0LGZuKT0+e3ZhciBMbixpcjtjb25zdCBtcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50''@;'; put 'put ''KCJzcGFuIik7bGV0IFNyLHdyPSJObyBpbmZvIGZvdW5kIjtpZih0aGlzLmhvdEluc3RhbmNlKXtjb25zdCBRcj10aGlzLmhvdEluc3RhbmNlLmdldFNlbGVjdGVkKCl8fFtdLHlpPVFyP1FyWzBdWzFdOi0xLEtpPW51bGw9PT0oTG49dGhpcy5ob3RJbnN0YW5jZSl8fHZvaWQgMD09PUxuP3Zv''@;'; put 'put ''aWQgMDpMbi5jb2xUb1Byb3AoeWkpO1NyPW51bGw9PT0oaXI9dGhpcy4kZGF0YUZvcm1hdHMpfHx2b2lkIDA9PT1pcj92b2lkIDA6aXIudmFyc1tLaV0sU3ImJih3cj1gTEFCRUw6ICR7bnVsbD09U3I/dm9pZCAwOlNyLmxhYmVsfTxicj5UWVBFOiAke251bGw9PVNyP3ZvaWQgMDpTci50eXBl''@;'; put 'put ''fTxicj5MRU5HVEg6ICR7bnVsbD09U3I/dm9pZCAwOlNyLmxlbmd0aH08YnI+Rk9STUFUOiAke251bGw9PVNyP3ZvaWQgMDpTci5mb3JtYXR9YCl9cmV0dXJuIG1yLmlubmVySFRNTD13cixtcn19fX19LHRoaXMuaG90SW5zdGFuY2U9bnVsbCx0aGlzLmhvdEluc3RhbmNlQ2xpY2tMaXN0ZW5l''@;'; put 'put ''cj0hMSx0aGlzLmhvdFRhYmxlUmVnaXN0ZXJlcj1uZXcgU08sdGhpcy5zYXNqc0NvbmZpZz10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKX1uZ09uSW5pdCgpeyIiIT09bmkudmlld2VyLmN1cnJlbnRTZWxlY3Rpb24mJjA9PT1PYmplY3Qua2V5cyh0aGlzLnJvdXRlLnNuYXBzaG90''@;'; put 'put ''LnBhcmFtcykubGVuZ3RoJiZ0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKG5pLnZpZXdlci5jdXJyZW50U2VsZWN0aW9uKSx2b2lkIDAhPT10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5saWJNZW0mJihuaS52aWV3ZXIuY3VycmVudFNlbGVjdGlvbj0idmlldy9kYXRhIiksdGhpcy5hcHBT''@;'; put 'put ''ZXJ2aWNlLmhvdF9saWNlbnNlX2tleS5zdWJzY3JpYmUoaD0+e3RoaXMuaG90VGFibGUubGljZW5zZUtleT1ofSl9cmVzZXRGaWx0ZXIoKXt0aGlzLnF1ZXJ5RmlsdGVyQ29tcExpc3QuZmlyc3QmJnRoaXMucXVlcnlGaWx0ZXJDb21wTGlzdC5maXJzdC5yZXNldEZpbHRlcigpfXNlYXJjaFRh''@;'; put 'put ''YmxlKGgpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5zZWFyY2hMb2FkaW5nPSEwO2xldCB2PWgudmFsdWUseT10aGlzLmxpYisiLiIrdGhpcy50YWJsZSxDPXBhcnNlSW50KHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmZpbHRlcklkKXx8MDt5aWVs''@;'; put 'put ''ZCB0aGlzLnNhc1N0b3JlU2VydmljZS52aWV3RGF0YVNlYXJjaCh2LHRoaXMuc2VhcmNoTnVtZXJpYyx5LEMpLnRoZW4oST0+e0kuc2FzcGFyYW1zfHxJLnZpZXdEYXRhPyh0aGlzLmhvdFRhYmxlLmRhdGE9SS52aWV3ZGF0YSx0aGlzLiRkYXRhRm9ybWF0cz1JLiR2aWV3ZGF0YSx0aGlzLmRz''@;'; put 'put ''bWV0YT1JLmRzbWV0YSx0aGlzLm51bWJlck9mUm93cz1JLnNhc3BhcmFtc1swXS5OT0JTLHRoaXMucXVlcnlUZXh0PUkuc2FzcGFyYW1zWzBdLkZJTFRFUl9URVhULHRoaXMuaGVhZGVyUGtzPUkuc2FzcGFyYW1zWzBdLlBLX0ZJRUxEUy5zcGxpdCgiICIpLDA9PT10aGlzLmhvdFRhYmxlLmRh''@;'; put 'put ''dGEubGVuZ3RoP3RoaXMubm9EYXRhPSEwOih0aGlzLm5vRGF0YT0hMSx0aGlzLnRhYmxlRmxhZz0hMSx0aGlzLnNldHVwSG90KCkpKTp0aGlzLnNlYXJjaExvYWRpbmc9ITF9KS5jYXRjaChJPT57dGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKEkpfSksdGhpcy5zZWFyY2hMb2FkaW5nPSExfSl9''@;'; put 'put ''cmVsb2FkVGFibGVEYXRhKCl7dGhpcy52aWV3RGF0YSh0aGlzLnVybEZpbHRlclBrfHwwKX1yZWxvYWRMaWJJbmZvKCl7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt0aGlzLmxpYmluZm89bnVsbCx0aGlzLnNhc1N0b3JlU2VydmljZS5yZWZyZXNoTGliSW5mbyh0''@;'; put 'put ''aGlzLmxpYikudGhlbihoPT5ubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5saWJpbmZvPWgubGliaW5mbyxuaS52aWV3ZXIubGliaW5mbz10aGlzLmxpYmluZm87Y29uc3Qgdj10aGlzLmxpYnJhcmllcy5maW5kKHk9PnkuTElCUkFSWVJFRj09PXRoaXMubGliKTt2JiYo''@;'; put 'put ''di5saWJpbmZvPXRoaXMubGliaW5mbyl9KSxoPT57dGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKGgpLG51bGw9PT10aGlzLmxpYmluZm8mJih0aGlzLmxpYmluZm89W10pfSl9KX1maWx0ZXJGbihoKXt0aGlzLmxpYnJhcmllcz10aGlzLmxpYnJhcmllcy5maWx0ZXIoeT0+LTEhPT15LkxJQlJB''@;'; put 'put ''UllOQU1FLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihoLnRvTG9jYWxlTG93ZXJDYXNlKCkpKX1kb3dubG9hZERhdGEoKXtsZXQgaD10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCx2PXRoaXMuc2FzanNDb25maWcuYXBwTG9jO2NvbnN0IHk9dGhpcy5zYXNTZXJ2aWNlLmdldEV4ZWN1dGlvblBh''@;'; put 'put ''dGgoKTtsZXQgdWUsQz0iJnR5cGU9Iit0aGlzLmRvd25sb2FkRm9ybWF0LEk9IiZ0YWJsZT0iK3RoaXMudGFibGVUaXRsZSxaPSJTQVNWSVlBIj09PXRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT9gJl9jb250ZXh0bmFtZT0ke3RoaXMuc2FzanNDb25maWcuY29udGV4dE5hbWV9YDoiIjt1''@;'; put 'put ''ZT12b2lkIDA9PT10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5maWx0ZXJJZD8wOnBhcnNlSW50KHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmZpbHRlcklkKSx3aW5kb3cub3BlbihoK3krIi8/X3Byb2dyYW09Iit2KyIvc2VydmljZXMvcHVibGljL2dldHJhd2RhdGEiK0MrSStaKyIm''@;'; put 'put ''ZmlsdGVyPSIrdWUpLHRoaXMub3BlbkRvd25sb2FkPSExfWRvd25sb2FkRERMKCl7bGV0IGg9dGhpcy5saWIsdj10aGlzLnRhYmxlLHk9dGhpcy5kb3dubG9hZEZvcm1hdC5yZXBsYWNlKCJfRERMIiwiIiksQz10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCxJPXRoaXMuc2FzanNDb25maWcu''@;'; put 'put ''YXBwTG9jO2NvbnN0IFo9dGhpcy5zYXNTZXJ2aWNlLmdldEV4ZWN1dGlvblBhdGgoKTt3aW5kb3cub3BlbihDK1orIi8/X3Byb2dyYW09IitJKyIvc2VydmljZXMvcHVibGljL2dldGRkbCIrYCZkcz0ke3Z9JmxpYnJlZj0ke2h9JmZsYXZvdXI9JHt5fSR7IlNBU1ZJWUEiPT09dGhpcy5zYXNq''@;'; put 'put ''c0NvbmZpZy5zZXJ2ZXJUeXBlP2AmX2NvbnRleHRuYW1lPSR7dGhpcy5zYXNqc0NvbmZpZy5jb250ZXh0TmFtZX1gOiIifWApLHRoaXMub3BlbkRvd25sb2FkPSExfW9uQ2xpQ29tbWFuZEZvY3VzKGgpe2gucHJldmVudERlZmF1bHQoKSxoLnRhcmdldC5zZWxlY3QoKX1lZGl0VGFibGUoKXt0''@;'; put 'put ''aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvZWRpdG9yLyIrdGhpcy5saWJUYWIpfXRhYmxlRWRpdEV4aXN0cygpe2xldCBoPXt9O2g9bmkuZWRpdG9yLmxpYnNBbmRUYWJsZXM7bGV0IHY9dGhpcy5saWJUYWIuc3BsaXQoIi4iKVsxXSx5PXRoaXMubGliVGFiLnNwbGl0KCIuIilbMF07cmV0''@;'; put 'put ''dXJuISFoW3ldJiZoW3ldLmluY2x1ZGVzKHYpfWdvVG9MaW5lYWdlKCl7bGV0IHY9YC92aWV3L2xpbmVhZ2UvJHt0aGlzLnRhYmxldXJpLnNwbGl0KCJcXCIpWzFdfS9SRVZFUlNFYDt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHYpfXNob3dXZWJRdWVyeSgpe2xldCBoO3RoaXMud2ViUXVl''@;'; put 'put ''cnk9ITAsaD12b2lkIDA9PT10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5maWx0ZXJJZD8wOnBhcnNlSW50KHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmZpbHRlcklkKTtsZXQgdj13aW5kb3cubG9jYXRpb24ucG9ydC5sZW5ndGg+MD8iOiIrd2luZG93LmxvY2F0aW9uLnBvcnQ6IiI7''@;'; put 'put ''Y29uc3QgeT10aGlzLnNhc1NlcnZpY2UuZ2V0RXhlY3V0aW9uUGF0aCgpO2xldCBJPWAke3dpbmRvdy5sb2NhdGlvbi5wcm90b2NvbH0vLyR7d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lfSR7dn0vJHt5fS8/X3Byb2dyYW09JHt0aGlzLnNhc2pzQ29uZmlnLmFwcExvY30vc2VydmljZXMvcHVi''@;'; put 'put ''bGljL2dldHJhd2RhdGEmdHlwZT1XRUIke3RoaXMud2ViUXVlcnlUYWI/IlRBQiI6IkNTViJ9JnRhYmxlPSR7dGhpcy50YWJsZVRpdGxlfSR7IiZmaWx0ZXI9IitofWA7dGhpcy53ZWJRdWVyeVRleHQ9SS5yZXBsYWNlKC8gL2dpbSwiJTIwIil9Y29weVRvQ2xpcCgpe2xldCBoPWRvY3VtZW50''@;'; put 'put ''LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIik7aC5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiLGguc3R5bGUubGVmdD0iMCIsaC5zdHlsZS50b3A9IjAiLGguc3R5bGUub3BhY2l0eT0iMCIsaC52YWx1ZT10aGlzLndlYlF1ZXJ5VGV4dCxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGgpLGguZm9j''@;'; put 'put ''dXMoKSxoLnNlbGVjdCgpLGRvY3VtZW50LmV4ZWNDb21tYW5kKCJjb3B5IiksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChoKX1nb1RvVmlld2VyKCl7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3ZpZXcvZGF0YSIpfXNob3dUYWJsZVNlbGVjdCgpe3RoaXMudGFibGVGbGFnPSF0aGlz''@;'; put 'put ''LnRhYmxlRmxhZ31jaGVja0V4cGFuZChoKXt9Y29sbGFwc2VMaWJyYXJ5SXRlbXMoaCx2KXtoLmZvckVhY2goeT0+e3kuTElCUkFSWVJFRiE9PXYuTElCUkFSWVJFRiYmKHkuZXhwYW5kZWQ9ITEpfSl9bG9hZE1vcmVMaWJyYXJpZXMoKXt0aGlzLmxpYnJhcmllc1BhZ2luZ3x8KHRoaXMubGli''@;'; put 'put ''cmFyaWVzUGFnaW5nPSEwLHRoaXMuaGVscGVyU2VydmljZS5kaXNwbGF5TGlicmFyaWVzKHRoaXMubGlicmFyaWVzLCEwKSx0aGlzLmxpYnJhcmllc1BhZ2luZz0hMSl9dHJlZU5vZGVDbGlja2VkKGgsdil7IkNvbGxhcHNlIj09PWgudGFyZ2V0LnRpdGxlJiZ0aGlzLmNvbGxhcHNlTGlicmFy''@;'; put 'put ''eUl0ZW1zKHRoaXMubGlicmFyaWVzLHYpfWxpYnJhcnlFeHBhbmRlZENoYW5nZShoLHYpe2gmJnRoaXMuY29sbGFwc2VMaWJyYXJ5SXRlbXModGhpcy5saWJyYXJpZXMsdil9bGlicmFyeU9uQ2xpY2soaCx2LHkpe3JldHVybiBubyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7aWYo''@;'; put 'put ''di50YWJsZXM/di5leHBhbmRlZD0hIXl8fCF2LmV4cGFuZGVkOnlpZWxkIHRoaXMuc2VsZWN0VGFibGUoaCwhMSx2KSx2LmV4cGFuZGVkKXt0aGlzLmNkZi5kZXRlY3RDaGFuZ2VzKCk7bGV0IEM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgI3NlYXJjaF8ke3YuTElCUkFSWVJFRn1gKTt0aGlz''@;'; put 'put ''LmxvZ2dlclNlcnZpY2UubG9nKCJbbGliVHJlZVNlYXJjaElucHV0XSIsQyksQyYmQy5mb2N1cygpLHYmJnYubGliaW5mbyYmKHRoaXMubGliaW5mbz12LmxpYmluZm8pLHRoaXMubGliJiZ0aGlzLnRhYmxlJiYheSYmdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3ZpZXcvZGF0YSIse3Nr''@;'; put 'put ''aXBMb2NhdGlvbkNoYW5nZTohMH0pLnRoZW4oKCk9Pnt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9kYXRhLyIrdGhpcy5saWIpfSl9dGhpcy5jb2xsYXBzZUxpYnJhcnlJdGVtcyh0aGlzLmxpYnJhcmllcyx2KX0pfXNlbGVjdFRhYmxlKGgsdix5KXtyZXR1cm4gbm8odGhpcyx2''@;'; put 'put ''b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3kubG9hZGluZ1RhYmxlcz0hMCx0aGlzLnRhYmxlPSExLHRoaXMudGFibGVEaXNhYmxlPSEwLCJQbGVhc2Ugc2VsZWN0IGxpYnJhcnkiIT09aD9uaS52aWV3ZXIudGFibGVzU2V0JiZ2Pyh0aGlzLmFib3J0QWN0aXZlPSExLHRoaXMudGFibGVEaXNh''@;'; put 'put ''YmxlPSExLHRoaXMudGFibGVzPW5pLnZpZXdlci50YWJsZXMsdGhpcy5saWJpbmZvPW5pLnZpZXdlci5saWJpbmZvKToodGhpcy5saWJpbmZvPW51bGwseWllbGQgdGhpcy5zYXNTdG9yZVNlcnZpY2Uudmlld1RhYmxlcyhoKS50aGVuKEM9Pnt0aGlzLmFib3J0QWN0aXZlPSExLHRoaXMudGFi''@;'; put 'put ''bGVEaXNhYmxlPSExO2xldCBJPUMubXB0YWJsZXMubWFwKGZ1bmN0aW9uKFope3JldHVybiBaLk1FTU5BTUV9KTt0aGlzLmxpYmluZm89Qy5saWJpbmZvfHxbXSx0aGlzLnRhYmxlcz1JLHkmJih5LnRhYmxlcz1JLHkubGliaW5mbz10aGlzLmxpYmluZm8pLHRoaXMucm91dGVyLnVybC5zcGxp''@;'; put 'put ''dCgiLyIpLmxlbmd0aD4zJiZ0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9kYXRhLyIpLG5pLnZpZXdlci5saWJyYXJpZXM9dGhpcy5saWJyYXJpZXMsbmkudmlld2VyLmxpYnJhcnk9dGhpcy5saWIsbmkudmlld2VyLnRhYmxlcz10aGlzLnRhYmxlcyxuaS52aWV3ZXIubGliaW5m''@;'; put 'put ''bz10aGlzLmxpYmluZm8sbmkudmlld2VyLnRhYmxlc1NldD0hMH0pLmNhdGNoKEM9Pnt0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoQyksdGhpcy5hYm9ydEFjdGl2ZT0hMCx0aGlzLm5vRGF0YT0hMCx0aGlzLnRhYmxlVGl0bGU9IiIsdGhpcy50YWJsZURpc2FibGU9ITB9KSk6dGhpcy50YWJs''@;'; put 'put ''ZURpc2FibGU9ITAsbmkudmlld2VyLmxpYnJhcnk9dGhpcy5saWIsdnx8dGhpcy5jbGVhckdsb2JhbHNGaWx0ZXIoKSx5LmxvYWRpbmdUYWJsZXM9ITEseS5leHBhbmRlZD0heS5leHBhbmRlZH0pfXNlbGVjdExpYlRhYmxlKGgsdil7IlBsZWFzZSBzZWxlY3QgdGFibGUiIT09aD8odGhpcy5h''@;'; put 'put ''Y3Rpb25EaXNhYmxlPSExLHRoaXMubGliVGFiPXRoaXMubGliKyIuIit0aGlzLnRhYmxlKTp0aGlzLmFjdGlvbkRpc2FibGU9ITAsbmkudmlld2VyLnRhYmxlPWgsdnx8dGhpcy5jbGVhckdsb2JhbHNGaWx0ZXIoKSx0aGlzLmxvZ2dlclNlcnZpY2UubG9nKHRoaXMubGliVGFiKX1jbGVhckds''@;'; put 'put ''b2JhbHNGaWx0ZXIoKXtuaS52aWV3ZXIuZmlsdGVyLmxpYmRzPSIiLG5pLnZpZXdlci5maWx0ZXIud2hlcmVDbGF1c2U9IiIsbmkudmlld2VyLmZpbHRlci5ncm91cExvZ2ljPSIiLG5pLnZpZXdlci5maWx0ZXIuY2xhdXNlcz1bXSxuaS52aWV3ZXIuZmlsdGVyLmNvbHM9W10sbmkudmlld2Vy''@;'; put 'put ''LmZpbHRlci52YWxzPVtdfWxpYlRhYkFjdGl2ZShoLHYpe3JldHVybiEhdGhpcy5saWJUYWImJmgrIi4iK3Y9PT10aGlzLmxpYlRhYn10cmVlT25GaWx0ZXIoaCx2KXt0aGlzLmhlbHBlclNlcnZpY2UudHJlZU9uRmlsdGVyKGgsdil9bGlicmFyeU9uRmlsdGVyKCl7dGhpcy5oZWxwZXJTZXJ2''@;'; put 'put ''aWNlLmxpYnJhcnlPbkZpbHRlcih0aGlzLmxpYnJhcmllcyx0aGlzLmxpYnJhcmllc1NlYXJjaCwiTElCUkFSWU5BTUUiKSxuaS52aWV3ZXIubGlicmFyaWVzU2VhcmNoPXRoaXMubGlicmFyaWVzU2VhcmNofWxpYnJhcnlSZXNldEZpbHRlcigpe3RoaXMuaGVscGVyU2VydmljZS5yZXNldEFy''@;'; put 'put ''cmF5RmlsdGVyKHRoaXMubGlicmFyaWVzKX12aWV3RGF0YShoKXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCB2O2lmKHRoaXMubG9hZGluZ1RhYmxlVmlldz0hMCx2b2lkIDA9PT10aGlzLmxpYkRhdGFzZXQpdj10aGlzLmxpYisiLiIrdGhpcy50YWJsZTtl''@;'; put 'put ''bHNlIGlmKHZvaWQgMD09PXRoaXMubGliJiZ2b2lkIDA9PT10aGlzLnRhYmxlKXtsZXQgST1bXTtpZihJPXRoaXMubGliRGF0YXNldC5zcGxpdCgiLiIpLG5pLnZpZXdlci5zdGFydHVwU2V0P3RoaXMubGlicmFyaWVzPW5pLnZpZXdlci5saWJyYXJpZXM6eWllbGQgdGhpcy5zYXNTdG9yZVNl''@;'; put 'put ''cnZpY2Uudmlld0xpYnMoKS50aGVuKFo9Pnt0aGlzLmxpYnJhcmllcz1aLnNhc2xpYnN9KS5jYXRjaChaPT57dGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKFopfSksdGhpcy5saWI9SVswXSxuaS52aWV3ZXIuc3RhcnR1cFNldCl0aGlzLnRhYmxlcz1uaS52aWV3ZXIudGFibGVzO2Vsc2V7bGV0''@;'; put 'put ''IFo9dGhpcy5saWJyYXJpZXMuZmluZCh1ZT0+dWUuTElCUkFSWVJFRi50b0xvd2VyQ2FzZSgpPT09dGhpcy5saWIudG9Mb3dlckNhc2UoKSk7eWllbGQgdGhpcy5zYXNTdG9yZVNlcnZpY2Uudmlld1RhYmxlcyh0aGlzLmxpYikudGhlbih1ZT0+e3RoaXMudGFibGVzPXVlLm1wdGFibGVzLm1h''@;'; put 'put ''cChmdW5jdGlvbihfZSl7cmV0dXJuIF9lLk1FTU5BTUV9KSxaLnRhYmxlcz10aGlzLnRhYmxlcyxuaS52aWV3ZXIubGlicmFyaWVzPXRoaXMubGlicmFyaWVzLG5pLnZpZXdlci50YWJsZXM9dGhpcy50YWJsZXMsbmkudmlld2VyLnN0YXJ0dXBTZXQ9ITB9KS5jYXRjaCh1ZT0+e3RoaXMubG9n''@;'; put 'put ''Z2VyU2VydmljZS5lcnJvcih1ZSl9KX10aGlzLnRhYmxlPUlbMV0sdGhpcy50YWJsZUZsYWc9ITEsdj10aGlzLmxpYkRhdGFzZXQsdGhpcy5saWJUYWI9dn1lbHNlIG5pLnZpZXdlci5zdGFydHVwU2V0P3RoaXMubGlicmFyaWVzPW5pLnZpZXdlci5saWJyYXJpZXM6eWllbGQgdGhpcy5zYXNT''@;'; put 'put ''dG9yZVNlcnZpY2Uudmlld0xpYnMoKS50aGVuKEk9Pnt0aGlzLmxpYnJhcmllcz1JLnNhc2xpYnN9KS5jYXRjaChJPT57dGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKEkpfSksdm9pZCAwIT09dGhpcy50YWJsZSYmKG5pLnZpZXdlci5zdGFydHVwU2V0P3RoaXMudGFibGVzPW5pLnZpZXdlci50''@;'; put 'put ''YWJsZXM6eWllbGQgdGhpcy5zYXNTdG9yZVNlcnZpY2Uudmlld1RhYmxlcyh0aGlzLmxpYikudGhlbihJPT57dGhpcy50YWJsZXM9SS5tcHRhYmxlcy5tYXAoZnVuY3Rpb24oWil7cmV0dXJuIFouTUVNTkFNRX0pfSkuY2F0Y2goST0+e3RoaXMubG9nZ2VyU2VydmljZS5lcnJvcihJKSx0aGlz''@;'; put 'put ''LnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9kYXRhIil9KSx0aGlzLnRhYmxlRmxhZz0hMSx2PXRoaXMubGliKyIuIit0aGlzLnRhYmxlLHRoaXMudGFibGVUaXRsZT12LHRoaXMubGliVGFiPXYpO3RoaXMucm91dGVyLnVybC5zcGxpdCgiLyIpLmxlbmd0aD4zJiZ2JiYoeWllbGQgdGhp''@;'; put 'put ''cy5zYXNTdG9yZVNlcnZpY2Uudmlld0RhdGEodixoKS50aGVuKEk9PntpZihJLnF1ZXJ5Lmxlbmd0aD4wJiYidmlldyI9PT1uaS5yb290UGFyYW0mJjA9PT1uaS52aWV3ZXIuZmlsdGVyLmNsYXVzZXMubGVuZ3RoJiYobmkudmlld2VyLmZpbHRlci5xdWVyeT10aGlzLmhlbHBlclNlcnZpY2Uu''@;'; put 'put ''ZGVlcENsb25lKEkucXVlcnkpLG5pLnZpZXdlci5maWx0ZXIubGliZHM9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMubGliTWVtLHRoaXMuc2FzU3RvcmVTZXJ2aWNlLmluaXRpYWxpemVHbG9iYWxGaWx0ZXJDbGF1c2UoInZpZXciLEkuY29scykpLHRoaXMuYWJvcnRBY3RpdmU9ITEsdGhp''@;'; put 'put ''cy5maWx0ZXJDb2xzPUkuY29scyxiTGUodGhpcy5maWx0ZXJDb2xzLFtdLEkuJHZpZXdkYXRhKSx0aGlzLm51bWJlck9mUm93cz1JLnNhc3BhcmFtc1swXS5OT0JTLHRoaXMuaGVhZGVyUGtzPUkuc2FzcGFyYW1zWzBdLlBLX0ZJRUxEUy5zcGxpdCgiICIpLCJTQVM5Ij09PXRoaXMuc2FzanND''@;'; put 'put ''b25maWcuc2VydmVyVHlwZSl7bGV0IE5lPUkuc2FzcGFyYW1zWzBdLlRBQkxFVVJJO05lJiZOZS5sZW5ndGg+MCYmKHRoaXMudGFibGV1cmk9TmUpfXRoaXMuaG90VGFibGUuZGF0YT1JLnZpZXdkYXRhLHRoaXMuJGRhdGFGb3JtYXRzPUkuJHZpZXdkYXRhLHRoaXMuZHNtZXRhPUkuZHNtZXRh''@;'; put 'put ''LHRoaXMucXVlcnlUZXh0PUkuc2FzcGFyYW1zWzBdLkZJTFRFUl9URVhUO2xldCBaPVtdLHVlPVtdO2ZvcihsZXQgTmUgaW4gSS52aWV3ZGF0YVswXSlOZSYmdWUucHVzaChOZSk7Zm9yKGxldCBOZT0wO05lPHVlLmxlbmd0aDtOZSsrKVoucHVzaCh7ZGF0YTp1ZVtOZV19KTt0aGlzLmhvdFRh''@;'; put 'put ''YmxlLmNvbEhlYWRlcnM9dWUsdGhpcy5ob3RUYWJsZS5jb2x1bW5zPVosdGhpcy5ob3RUYWJsZS5jZWxscz1mdW5jdGlvbigpe3JldHVybntyZWFkT25seTohMH19LHRoaXMudGFibGVGbGFnPSExO2xldCBCZT1bXTtCZT12LnNwbGl0KCIuIiksdGhpcy5saWI9QmVbMF0sdGhpcy50YWJsZT1C''@;'; put 'put ''ZVsxXSwwPT09dGhpcy5ob3RUYWJsZS5kYXRhLmxlbmd0aD8odGhpcy5ub0RhdGE9ITAsdGhpcy50YWJsZUZsYWc9ITApOih0aGlzLm5vRGF0YT0hMSx0aGlzLnRhYmxlRmxhZz0hMSksdGhpcy5ub0RhdGFSZXFFcnI9ITF9KS5jYXRjaChJPT57dGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKEkp''@;'; put 'put ''LHRoaXMuYWJvcnRBY3RpdmU9ITAsdGhpcy5ub0RhdGFSZXFFcnI9ITB9KSksdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCIvZGF0YSIpJiZ2JiZ0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKDAhPT1oPyIvdmlldy9kYXRhLyIrdisiLyIraDoiL3ZpZXcvZGF0YS8iK3YpO2xldCB5PXRoaXMu''@;'; put 'put ''dGFibGUsQz10aGlzLmxpYnJhcmllcy5maW5kKEk9PkkuTElCUkFSWVJFRi50b0xvd2VyQ2FzZSgpPT09dGhpcy5saWIudG9Mb3dlckNhc2UoKSk7Qz9uaS52aWV3ZXIubGlicmFyaWVzLmxlbmd0aD4wPyh0aGlzLmxpYnJhcmllcz1uaS52aWV3ZXIubGlicmFyaWVzLHRoaXMubGlicmFyaWVz''@;'; put 'put ''U2VhcmNoPW5pLnZpZXdlci5saWJyYXJpZXNTZWFyY2gsdGhpcy5saWJyYXJ5T25DbGljayh0aGlzLmxpYixDLCEwKSk6dGhpcy5zZWxlY3RUYWJsZSh0aGlzLmxpYiwhMSxDKTp0aGlzLmxpYmluZm89W10sdGhpcy50YWJsZT15fHx0aGlzLnRhYmxlLHRoaXMubGlicmFyaWVzJiZ0aGlzLmhl''@;'; put 'put ''bHBlclNlcnZpY2UuZGlzcGxheUxpYnJhcmllcyh0aGlzLmxpYnJhcmllcyksdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCIvZGF0YSIpJiZ0aGlzLmV2ZW50U2VydmljZS5jbG9zZVNpZGViYXIoKSx0aGlzLmxvYWRpbmdUYWJsZVZpZXc9ITEsIXRoaXMubm9EYXRhJiYhdGhpcy5ub0RhdGFS''@;'; put 'put ''ZXFFcnImJnYmJnRoaXMuc2V0dXBIb3QoKSx0aGlzLmhvdEluc3RhbmNlQ2xpY2tMaXN0ZW5lcnx8c2V0VGltZW91dCgoKT0+e2xldCBJPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJob3RJbnN0YW5jZSIpO0kmJihJLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsWj0+e3NldFRpbWVv''@;'; put 'put ''dXQoKCk9PntsZXQgdWU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmRlYnVnLXN3aXRjaC1pdGVtIil8fHZvaWQgMDt1ZSYmdWUuY2xpY2soKX0sMTAwKX0pLHRoaXMuaG90SW5zdGFuY2VDbGlja0xpc3RlbmVyPSEwKX0sMmUzKX0pfW1heFdpZHRoQ2hla2VyKGgsdil7cmV0dXJuIGg+MjAw''@;'; put 'put ''PzIwMDpofW9wZW5RYigpe3RoaXMuZmlsdGVyPSEwLHRoaXMuY2RmLmRldGVjdENoYW5nZXMoKSx0aGlzLnNhc1N0b3JlU2VydmljZS5zZXRRdWVyeVZhcmlhYmxlcyh0aGlzLmxpYisiLiIrdGhpcy50YWJsZSx0aGlzLmZpbHRlckNvbHMpfXNlbmRDbGF1c2UoKXtyZXR1cm4gbm8odGhpcyx2''@;'; put 'put ''b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMuc3VibWl0TG9hZGluZz0hMDtsZXQgaD1bXSx2PVtdO2lmKHZvaWQgMD09PXRoaXMuY2xhdXNlcylyZXR1cm4gdGhpcy5udWxsVmFyaWFibGVzPSEwLHZvaWQodGhpcy5zdWJtaXRMb2FkaW5nPSExKTt7bGV0IHk9dGhpcy5jbGF1c2VzLnF1''@;'; put 'put ''ZXJ5T2JqO2lmKHlbMF0uZWxlbWVudHMubGVuZ3RoPDEpcmV0dXJuInZpZXciPT09bmkucm9vdFBhcmFtJiYobmkudmlld2VyLmZpbHRlci5jbGF1c2VzPVtdLG5pLnZpZXdlci5maWx0ZXIucXVlcnk9W10sbmkudmlld2VyLmZpbHRlci5ncm91cExvZ2ljPSIiKSx2b2lkIHRoaXMucm91dGVy''@;'; put 'put ''Lm5hdmlnYXRlQnlVcmwoIi92aWV3L2RhdGEvIit0aGlzLmxpYmRzKTtmb3IobGV0IEM9MDtDPHkubGVuZ3RoO0MrKyl7Y29uc3QgST15W0NdLmVsZW1lbnRzO2g9SS5maWx0ZXIoZnVuY3Rpb24oWil7cmV0dXJuIG51bGw9PT1aLnZhcmlhYmxlfSksaC5sZW5ndGgmJnYucHVzaChJKX19aWYo''@;'; put 'put ''di5sZW5ndGgpcmV0dXJuIHRoaXMubnVsbFZhcmlhYmxlcz0hMCx2b2lkKHRoaXMuc3VibWl0TG9hZGluZz0hMSk7e2NvbnN0IHk9e2dyb3VwTG9naWM6dGhpcy5jbGF1c2VzLmdyb3VwTG9naWMsZmlsdGVyR3JvdXBzOltdfTt0aGlzLmNsYXVzZXMucXVlcnlPYmouZm9yRWFjaChJPT57Y29u''@;'; put 'put ''c3QgWj17ZmlsdGVyQ2xhdXNlczpbXX07SS5lbGVtZW50cy5mb3JFYWNoKHVlPT57Wi5maWx0ZXJDbGF1c2VzLnB1c2godGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh1ZSkpfSksWi5jbGF1c2VMb2dpYz1JLmNsYXVzZUxvZ2ljLHkuZmlsdGVyR3JvdXBzLnB1c2godGhpcy5oZWxwZXJT''@;'; put 'put ''ZXJ2aWNlLmRlZXBDbG9uZShaKSl9KTtjb25zdCBDPXRoaXMuc2FzU3RvcmVTZXJ2aWNlLmNyZWF0ZUZpbHRlclF1ZXJ5VGFibGUoeSk7eWllbGQgdGhpcy5zYXNTdG9yZVNlcnZpY2Uuc2F2ZVF1ZXJ5KHRoaXMubGliZHMsQykudGhlbihJPT57dGhpcy5xdWVyeVRleHQ9SS5yZXN1bHRbMF0u''@;'; put 'put ''RklMVEVSX1RFWFQ7bGV0IFo9SS5yZXN1bHRbMF0uRklMVEVSX1JLO3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi92aWV3L2RhdGEvIit0aGlzLmxpYmRzKyIvIitaKSx0aGlzLnZpZXdEYXRhKFopLHRoaXMuZmlsdGVyPSExfSkuY2F0Y2goST0+e3RoaXMubG9nZ2VyU2VydmljZS5lcnJv''@;'; put 'put ''cihJKX0pLHRoaXMuc3VibWl0TG9hZGluZz0hMX19KX1yZW1vdmVRdWVyeSgpe3RoaXMuc2FzU3RvcmVTZXJ2aWNlLnJlbW92ZUNsYXVzZSgpfXNldHVwSG90KCl7c2V0VGltZW91dCgoKT0+eyF0aGlzLmxvYWRpbmdUYWJsZVZpZXcmJnRoaXMubGliRGF0YXNldCYmKHRoaXMuaG90SW5zdGFu''@;'; put 'put ''Y2U9dGhpcy5ob3RUYWJsZVJlZ2lzdGVyZXIuZ2V0SW5zdGFuY2UoImhvdEluc3RhbmNlIiksdGhpcy5ob3RJbnN0YW5jZSYmdGhpcy5ob3RJbnN0YW5jZS51cGRhdGVTZXR0aW5ncyh7aGVpZ2h0OnRoaXMuaG90VGFibGUuaGVpZ2h0LG1vZGlmeUNvbFdpZHRoOmZ1bmN0aW9uKGgsdil7cmV0''@;'; put 'put ''dXJuIGg+NTAwPzUwMDpofSxhZnRlckdldENvbEhlYWRlcjooaCx2KT0+e3ZhciB5O2NvbnN0IEM9bnVsbD09PSh5PXRoaXMuaG90SW5zdGFuY2UpfHx2b2lkIDA9PT15P3ZvaWQgMDp5LmNvbFRvUHJvcChoKTtDJiZ0aGlzLmhlYWRlclBrcy5pbmRleE9mKEMpPi0xJiZ2LmNsYXNzTGlzdC5h''@;'; put 'put ''ZGQoInByaW1hcnlLZXlIZWFkZXJTdHlsZSIpfX0pKX0sMWUzKX1sb2FkV2l0aFBhcmFtZXRlcnMoKXtyZXR1cm4gbm8odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMuc3dpdGNoRmxhZz0hMCx0aGlzLnRhYmxlVGl0bGU9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMubGli''@;'; put 'put ''TWVtfHwwLHRoaXMudXJsRmlsdGVyUGs9cGFyc2VJbnQodGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuZmlsdGVySWR8fCIwIik7bGV0IHY9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMubGliTWVtO3RoaXMubGliRGF0YXNldD12LHYuaW5jbHVkZXMoIi4iKXx8KHRoaXMubGliPXYpLHlp''@;'; put 'put ''ZWxkIHRoaXMudmlld0RhdGEodGhpcy51cmxGaWx0ZXJQayksdGhpcy5ub0RhdGE/c2V0VGltZW91dCgoKT0+e3RoaXMudGFibGVGbGFnPSEwfSwxMjAwKTpzZXRUaW1lb3V0KCgpPT57dGhpcy50YWJsZUZsYWc9ITF9LDEyMDApfSl9bG9hZFdpdGhvdXRQYXJhbWV0ZXJzKCl7cmV0dXJuIG5v''@;'; put 'put ''KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt0aGlzLnN3aXRjaEZsYWc9ITEsdGhpcy5saWJyYXJpZXNMb2FkaW5nPSEwLG5pLnZpZXdlci5zdGFydHVwU2V0P3NldFRpbWVvdXQoKCk9Pnt0aGlzLmxpYnJhcmllcz1uaS52aWV3ZXIubGlicmFyaWVzLHRoaXMubGlicmFyaWVzU2Vh''@;'; put 'put ''cmNoPW5pLnZpZXdlci5saWJyYXJpZXNTZWFyY2gsdGhpcy5saWI9bmkudmlld2VyLmxpYnJhcnksdGhpcy5saWJyYXJpZXNUcmVlRXhwYW5kZWQ9ITAsdGhpcy5saWJyYXJpZXNMb2FkaW5nPSExLHRoaXMuaGVscGVyU2VydmljZS5kaXNwbGF5TGlicmFyaWVzKHRoaXMubGlicmFyaWVzKX0s''@;'; put 'put ''MTAwKToodGhpcy5ub0RhdGFSZXFFcnI9ITEseWllbGQgdGhpcy5zYXNTdG9yZVNlcnZpY2Uudmlld0xpYnMoKS50aGVuKGg9Pnt0aGlzLmxpYnJhcmllcz1oLnNhc2xpYnMsbmkudmlld2VyLmxpYnJhcmllcz10aGlzLmxpYnJhcmllcyxuaS52aWV3ZXIuc3RhcnR1cFNldD0hMCx0aGlzLmxp''@;'; put 'put ''YnJhcmllc0xvYWRpbmc9ITEsdGhpcy5oZWxwZXJTZXJ2aWNlLmRpc3BsYXlMaWJyYXJpZXModGhpcy5saWJyYXJpZXMpfSkuY2F0Y2goaD0+e3RoaXMubG9nZ2VyU2VydmljZS5lcnJvcihoKSx0aGlzLmxpYnJhcmllc0xvYWRpbmc9ITEsdGhpcy5ub0RhdGFSZXFFcnI9ITB9KSl9KX1uZ0Fm''@;'; put 'put ''dGVyVmlld0luaXQoKXt9bmdBZnRlckNvbnRlbnRJbml0KCl7cmV0dXJuIG5vKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt0aGlzLmhvdFRhYmxlLmRhdGEubGVuZ3RoPjAmJih0aGlzLnRhYmxlRmxhZz0hMCksdGhpcy5fcXVlcnk9dGhpcy5zYXNTdG9yZVNlcnZpY2UucXVlcnku''@;'; put 'put ''c3Vic2NyaWJlKGg9Pnt0aGlzLndoZXJlU3RyaW5nPWguc3RyaW5nLHRoaXMuY2xhdXNlcz1oLm9iaix0aGlzLmxpYmRzPWgubGliZHN9KSx2b2lkIDAhPT10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5saWJNZW0/dGhpcy5sb2FkV2l0aFBhcmFtZXRlcnMoKTp0aGlzLmxvYWRXaXRob3V0''@;'; put 'put ''UGFyYW1ldGVycygpfSl9fXJldHVybiBkLlx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpKEt0KFI3KSxLdChrZyksS3QoZzIpLEt0KFpsKSxLdChQdSksS3QobXUpLEt0KHNjKSxLdChYYyksS3QoZDEpKX0sZC5cdTAyNzVjbXA9VGkoe3R5cGU6ZCxzZWxlY3RvcnM6W1si''@;'; put 'put ''YXBwLXZpZXdlciJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24oaCx2KXtpZigxJmgmJnZvKGo5dCw1KSwyJmgpe2xldCB5O0hpKHk9JGkoKSkmJih2LnF1ZXJ5RmlsdGVyQ29tcExpc3Q9eSl9fSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6OTQsdmFyczoyOCxjb25zdHM6''@;'; put 'put ''W1szLCJzY3JvbGxlZFRvQm90dG9tIl0sWyJjbGFzcyIsIm15LTEwLW14LWF1dG8gdGV4dC1jZW50ZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwic2VhcmNoLW5vZGUiLDQsIm5nSWYiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsInctMTAwIHRleHQtY2VudGVyIiw0LCJuZ0lmIl0s''@;'; put 'put ''WzEsImNvbnRlbnQtYXJlYSJdLFsiY2xhc3MiLCJtb2RhbCB6LWluZGV4LWhpZ2hlc3QiLDQsIm5nSWYiXSxbImNsYXNzIiwibW9kYWwtYmFja2Ryb3AiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbMywiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxTaXplIiwiY2xyTW9kYWxPcGVu''@;'; put 'put ''Q2hhbmdlIl0sWzEsIm1vZGFsLXRpdGxlIiwiY2VudGVyIiwidGV4dC1jZW50ZXIiLCJjb2xvci1kYXJrZXItZ3JheSJdLFsxLCJtb2RhbC1ib2R5Il0sWzEsImNsci1jb2wtbWQtNiJdLFsxLCJkb3dubG9hZC1zZWxlY3QiXSxbImNsclNlbGVjdCIsIiIsMywibmdNb2RlbCIsIm5nTW9kZWxD''@;'; put 'put ''aGFuZ2UiXSxbInZhbHVlIiwiQ1NWIl0sWyJ2YWx1ZSIsIlNBUyJdLFsidmFsdWUiLCJQR1NRTF9EREwiXSxbInZhbHVlIiwiU0FTX0RETCJdLFsidmFsdWUiLCJUU1FMX0RETCJdLFsidmFsdWUiLCJFWENFTCJdLFsidmFsdWUiLCJNQVJLRE9XTiJdLFsxLCJtb2RhbC1mb290ZXIiXSxbInR5''@;'; put 'put ''cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsidHlwZSIsInN1Ym1pdCIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsMywiaWQiLCJjbGljayJdLFsxLCJtb2RhbC1ib2R5Iiwid2ViLXF1ZXJ5Il0sWzEsInJvdyJd''@;'; put 'put ''LFsxLCJjbHItY29sLWxnLTEyIiwiY2xyLWNvbC1tZC0xMiIsImNsci1jb2wtc20tMTIiLCJjbHItY29sLXhzLTEyIl0sWzEsImNhcmQiXSxbMSwiY2FyZC1oZWFkZXIiLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiJdLFsxLCJidG4tZ3JvdXAiXSxbMSwicmFkaW8iLCJidG4i''@;'; put 'put ''LDMsImNsaWNrIl0sWyJ0eXBlIiwicmFkaW8iLCJuYW1lIiwiYnRuLWdyb3VwLWRlbW8tcmFkaW9zIiwzLCJjaGVja2VkIl0sWzEsImNhcmQtYmxvY2siLCJ3b3JkLWJyZWFrLWFsbCJdLFsicm93cyIsIjQiLCJjb2xzIiwiNTAiLCJ0eXBlIiwidGV4dCIsInJlYWRvbmx5IiwiIiwxLCJ3ZWIt''@;'; put 'put ''cXVlcnktdGV4dCIsInctMTAwIiwzLCJ2YWx1ZSIsImZvY3VzIl0sWyJjbGlDb21tYW5kSW5wdXQiLCIiXSxbMSwiY2FyZC1mb290ZXIiXSxbMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWxpbmsiLDMsIm5neENsaXBib2FyZCIsImNsaWNrIl0sWyJhcmlhLW1vZGFsIiwidHJ1ZSIsMywiY2xyTW9k''@;'; put 'put ''YWxPcGVuIiwiY2xyTW9kYWxTaXplIiwiY2xyTW9kYWxDbG9zYWJsZSIsImNsck1vZGFsT3BlbkNoYW5nZSJdLFs0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tbGluayIsMywiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1vdXRs''@;'; put 'put ''aW5lIiwiYnRuLXNtIiwzLCJjbGljayJdLFsidHlwZSIsInN1Ym1pdCIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsMywiY2xyTG9hZGluZyIsImNsaWNrIl0sWzMsImNsck1vZGFsT3BlbiIsImNsck1vZGFsT3BlbkNoYW5nZSJdLFsxLCJtb2RhbC10aXRsZSJdLFsi''@;'; put 'put ''dHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tcHJpbWFyeSIsMywiY2xpY2siXSxbImNsYXNzIiwibG9hZGluZ1NwaW5uZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2FyZCBoLTEwMCBkLWZsZXggY2xy''@;'; put 'put ''LWZsZXgtY29sdW1uIiw0LCJuZ0lmIl0sWzMsIm9wZW4iLCJkc21ldGEiLCJvcGVuQ2hhbmdlIl0sWzEsIm15LTEwLW14LWF1dG8iLCJ0ZXh0LWNlbnRlciJdLFsiY2xyTWVkaXVtIiwiIl0sWzEsInNlYXJjaC1ub2RlIl0sWzEsInRyZWUtc2VhcmNoLXdyYXBwZXIiXSxbImNscklucHV0Iiwi''@;'; put 'put ''IiwicGxhY2Vob2xkZXIiLCJMaWJyYXJpZXMiLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiXSxbInNlYXJjaExpYlRyZWVJbnB1dCIsIiJdLFsic2hhcGUiLCJzZWFyY2giLDQsIm5nSWYiXSxbInNoYXBlIiwi''@;'; put 'put ''dGltZXMiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInNlYXJjaCJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siXSxbMywiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIiwiY2xyLWV4cGFuZGVkIiwiY2xpY2siLCJjbHJFeHBhbmRlZENoYW5nZSIsNCwibmdJZiJdLFszLCJjbHJF''@;'; put 'put ''eHBhbmRlZCIsImNsckxvYWRpbmciLCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIl0sWzEsIm0tMCIsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsic2hhcGUiLCJyYWNrLXNlcnZlciJdLFsiY2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsIlRhYmxlcyIsIm5hbWUiLCJpbnB1dCIs''@;'; put 'put ''ImF1dG9jb21wbGV0ZSIsIm9mZiIsMywiaWQiLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImtleXVwIl0sWyJzZWFyY2hUcmVlSW5wdXQiLCIiXSxbImNsYXNzIiwiY2xyLXRyZWVub2RlLWxpbmsiLDMsInRhYmxlLWFjdGl2ZSIsImNsaWNrIiw0LCJuZ0lmIl0sWzEsImNsci10cmVlbm9k''@;'; put 'put ''ZS1saW5rIiwzLCJjbGljayJdLFszLCJuZ1N3aXRjaCJdLFsic2hhcGUiLCJib2x0Iiw0LCJuZ1N3aXRjaENhc2UiXSxbInNoYXBlIiwidGFibGUiLDQsIm5nU3dpdGNoQ2FzZSJdLFsic2hhcGUiLCJib2x0Il0sWyJzaGFwZSIsInRhYmxlIl0sWzEsInctMTAwIiwidGV4dC1jZW50ZXIiXSxb''@;'; put 'put ''MSwic3Bpbm5lciIsInNwaW5uZXItc20iXSxbMSwibW9kYWwiLCJ6LWluZGV4LWhpZ2hlc3QiXSxbInJvbGUiLCJkaWFsb2ciLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsIm1vZGFsLWRpYWxvZyJdLFsxLCJtb2RhbC1jb250ZW50Il0sWzEsIm1vZGFsLWhlYWRlciJdLFsiYXJpYS1sYWJlbCIs''@;'; put 'put ''IkNsb3NlIiwidHlwZSIsImJ1dHRvbiIsMSwiY2xvc2UiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInNoYXBlIiwiY2xvc2UiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1wcmltYXJ5IiwzLCJjbGljayJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtb2RhbC1i''@;'; put 'put ''YWNrZHJvcCJdLFsicXVlcnlGaWx0ZXIiLCIiXSxbMSwibG9hZGluZ1NwaW5uZXIiXSxbMSwic3Bpbm5lciJdLFsxLCJjYXJkIiwiaC0xMDAiLCJkLWZsZXgiLCJjbHItZmxleC1jb2x1bW4iXSxbImNsYXNzIiwiaGVhZGVyLXJvdyBjbHItcm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGNs''@;'; put 'put ''ci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctMTAwIG0tMCIsNCwibmdJZiJdLFsiY2xhc3MiLCJuby10YWJsZS1zZWxlY3RlZCIsNCwibmdJZiJdLFsiY2xhc3MiLCJjYXJkLWJsb2NrIG5vRGF0YSIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItZmxleC0xIiw0LCJuZ0lmIl0sWzEsImhlYWRl''@;'; put 'put ''ci1yb3ciLCJjbHItcm93IiwianVzdGlmeS1jb250ZW50LWJldHdlZW4iLCJjbHItanVzdGlmeS1jb250ZW50LWNlbnRlciIsInctMTAwIiwibS0wIl0sWzEsImZvcm0tYmxvY2siLCJzZWFyY2gtd3JhcHBlciIsInN3IiwiY2xyLWNvbC1tZCJdLFsiY2xyRm9ybSIsIiIsMSwiZC1mbGV4Iiwi''@;'; put 'put ''YWxpZ24taXRlbXMtY2VudGVyIl0sWzEsImlucHV0LXdyYXBwZXIiXSxbImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIiLCJTZWFyY2giLCJuYW1lIiwic2VhcmNoLWlucHV0IiwzLCJ0eXBlIiwia2V5dXAuZW50ZXIiXSxbInNlYXJjaEVsIiwiIl0sWyJzaGFwZSIsInNlYXJjaCIsMywiY2xp''@;'; put 'put ''Y2siLDQsIm5nSWYiXSxbImNsYXNzIiwic3Bpbm5lciBzcGlubmVyLWlubGluZSIsNCwibmdJZiJdLFsidHlwZSIsImNoZWNrYm94IiwiY2xyQ2hlY2tib3giLCIiLCJuYW1lIiwibnVtZXJpY19jaGVjayIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbMSwidGl0bGUtY29sIiwiY2xy''@;'; put 'put ''LWNvbC1hdXRvIiwiY2xyLWZsZXgtY29sdW1uIiwiY2xyLWZsZXgtc20tcm93Il0sWyJzaGFwZSIsImluZm8tY2lyY2xlIiwic2l6ZSIsIjI0IiwxLCJpcy1oaWdobGlnaHQiLCJjdXJzb3ItcG9pbnRlciIsMywiY2xpY2siXSxbInNoYXBlIiwiYm9sdCIsImNsYXNzIiwiY29sb3IteWVsbG93''@;'; put 'put ''IG10LTUgbXItNSIsNCwibmdJZiJdLFsiY2xhc3MiLCJ2aWV3ZXJUaXRsZSBjbHItZmxleC1jb2x1bW4gZC1mbGV4IGNsci1mbGV4LXNtLXJvdyBjbHItYWxpZ24taXRlbXMtY2VudGVyIiw0LCJuZ0lmIl0sWzEsIm9wdGlvbnMtY29sIiwiY2xyLWNvbC1tZCJdLFsiY2xhc3MiLCJvcHRpb25z''@;'; put 'put ''LWRyb3Bkb3duIiwzLCJjbHJDbG9zZU1lbnVPbkl0ZW1DbGljayIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItY29sLW1kLTEyIGluZm9CYXIiLDQsIm5nSWYiXSxbInNoYXBlIiwic2VhcmNoIiwzLCJjbGljayJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1pbmxpbmUiXSxbInNoYXBlIiwiYm9s''@;'; put 'put ''dCIsMSwiY29sb3IteWVsbG93IiwibXQtNSIsIm1yLTUiXSxbMSwidmlld2VyVGl0bGUiLCJjbHItZmxleC1jb2x1bW4iLCJkLWZsZXgiLCJjbHItZmxleC1zbS1yb3ciLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIl0sWyJzaGFwZSIsInJlZnJlc2giLDEsInJlZnJlc2gtdGFibGUiLDMsImNs''@;'; put 'put ''aWNrIl0sWzEsIm9wdGlvbnMtZHJvcGRvd24iLDMsImNsckNsb3NlTWVudU9uSXRlbUNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xyRHJvcGRvd25UcmlnZ2VyIiwiIiwxLCJidG4iLCJidG4tc20iLCJidG4tb3V0bGluZSIsImZpbHRlclNpZGUiXSxbInNoYXBlIiwiY29nIiwic2l6ZSIs''@;'; put 'put ''IjE1Il0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1yaWdodCIsNCwiY2xySWZPcGVuIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1yaWdodCJdLFsidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwiYnRuIGJ0bi1zbSBidG4tc3VjY2Vzcy1vdXRsaW5lIiwiY2xyRHJvcGRvd25JdGVtIiwiIiwzLCJj''@;'; put 'put ''bGljayIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsImNsckRyb3Bkb3duSXRlbSIsIiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLW91dGxpbmUiLCJidG4tYmxvY2siLDMsImNsaWNrIl0sWyJzaGFwZSIsImZpbHRlciJdLFsidHlwZSIsImJ1dHRvbiIsImNsckRyb3Bkb3duSXRlbSIsIiIs''@;'; put 'put ''MSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsMywiY2xpY2siXSxbInNoYXBlIiwiZG93bmxvYWQiXSxbInNoYXBlIiwiZG93bmxvYWQtY2xvdWQiXSxbInNoYXBlIiwicGVuY2lsIl0sWyJzaGFwZSIsInN3aXRjaCJdLFsxLCJjbHItY29sLW1kLTEyIiwiaW5mb0JhciJd''@;'; put 'put ''LFsxLCJuby10YWJsZS1zZWxlY3RlZCJdLFsic2hhcGUiLCJ3YXJuaW5nLXN0YW5kYXJkIiwic2l6ZSIsIjYwIiwxLCJpcy1pbmZvIiwiaWNvbi1kYy1maWxsIl0sWzEsInRleHQtY2VudGVyIiwiY29sb3ItZ3JheSJdLFsxLCJoZWFkZXItcm93IiwiY2xyLXJvdyIsImJvcmRlci1ib3R0b20t''@;'; put 'put ''ZGl2aWRlciIsImp1c3RpZnktY29udGVudC1iZXR3ZWVuIiwidy0xMDAiLCJtLTAiXSxbMSwidGl0bGUtY29sIiwiY2xyLWNvbC1hdXRvIl0sWzEsInZpZXdlclRpdGxlIiwibXQtMTciXSxbMSwidGV4dC1jZW50ZXIiLCJtdC0xMCJdLFsiY2xyTWVkaXVtIiwiIiw0LCJuZ0lmIl0sWyJjbGFz''@;'; put 'put ''cyIsIm5vLXRhYmxlLXNlbGVjdGVkLWluZm8gcG9pbnRlci1ldmVudHMtbm9uZSIsNCwibmdJZiJdLFsiY2xhc3MiLCJsaWJpbmZvIG0tMCBjbHItcm93Iiw0LCJuZ0lmIl0sWzEsIm5vLXRhYmxlLXNlbGVjdGVkLWluZm8iLCJwb2ludGVyLWV2ZW50cy1ub25lIl0sWyJzaGFwZSIsImluZm8t''@;'; put 'put ''c3RhbmRhcmQiLCJzaXplIiwiNDAiLDEsImlzLWluZm8iLCJpY29uLWRjLWZpbGwiXSxbMSwibGliaW5mbyIsIm0tMCIsImNsci1yb3ciXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgbS0wIHctMTAwIiw0LCJuZ0lmIl0sWzEsInRleHQtY2VudGVyIiwibS0wIiwidy0xMDAiXSxbInNoYXBlIiwi''@;'; put 'put ''cmVmcmVzaCIsMSwicmVmcmVzaC10YWJsZSIsIm0tMCIsMywiY2xpY2siXSxbMSwibS0wIl0sWzEsIm0tMCIsImZvbnQtYm9sZCJdLFsxLCJjYXJkLWJsb2NrIiwibm9EYXRhIl0sWyJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQiLCJzaXplIiwiNjAiLDEsImlzLWluZm8iXSxbImNsYXNzIiwi''@;'; put 'put ''dGV4dC1jZW50ZXIgY29sb3ItZ3JheSIsNCwibmdJZiJdLFsxLCJjbHItZmxleC0xIl0sWyJob3RJZCIsImhvdEluc3RhbmNlIiwiaWQiLCJob3RUYWJsZSIsInN0cmV0Y2hIIiwiYWxsIiwzLCJtdWx0aUNvbHVtblNvcnRpbmciLCJ2aWV3cG9ydFJvd1JlbmRlcmluZ09mZnNldCIsImRhdGEi''@;'; put 'put ''LCJjb2xIZWFkZXJzIiwiY29sdW1ucyIsImZpbHRlcnMiLCJkcm9wZG93bk1lbnUiLCJoZWlnaHQiLCJtb2RpZnlDb2xXaWR0aCIsImNlbGxzIiwibWF4Um93cyIsIm1hbnVhbENvbHVtblJlc2l6ZSIsImxpY2Vuc2VLZXkiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oaCx2KXtpZigxJmgmJihudCgw''@;'; put 'put ''LCJhcHAtc2lkZWJhciIsMCksR24oInNjcm9sbGVkVG9Cb3R0b20iLGZ1bmN0aW9uKCl7cmV0dXJuIHYubG9hZE1vcmVMaWJyYXJpZXMoKX0pLHJuKDEsWjl0LDIsMCwiZGl2IiwxKSxudCgyLCJjbHItdHJlZSIpLHJuKDMsVzl0LDYsMywiY2xyLXRyZWUtbm9kZSIsMikscm4oNCxlQXQsMiwx''@;'; put 'put ''LCJuZy1jb250YWluZXIiLDMpLG90KCkscm4oNSx0QXQsMywwLCJkaXYiLDQpLG90KCksbnQoNiwiZGl2Iiw1KSxybig3LG5BdCwxNCwwLCJkaXYiLDYpLHJuKDgsckF0LDEsMCwiZGl2Iiw3KSxudCg5LCJjbHItbW9kYWwiLDgpLEduKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKEMp''@;'; put 'put ''e3JldHVybiB2Lm9wZW5Eb3dubG9hZD1DfSksbnQoMTAsImgzIiw5KSxZdCgxMSwiRG93bmxvYWQiKSxvdCgpLG50KDEyLCJkaXYiLDEwKSgxMywiZGl2IiwxMSkoMTQsImNsci1zZWxlY3QtY29udGFpbmVyIiwxMikoMTUsImxhYmVsIiksWXQoMTYsIlBsZWFzZSBjaG9vc2UgZG93bmxvYWQg''@;'; put 'put ''Zm9ybWF0Iiksb3QoKSxudCgxNywic2VsZWN0IiwxMyksR24oIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2LmRvd25sb2FkRm9ybWF0PUN9KSxudCgxOCwib3B0aW9uIiwxNCksWXQoMTksIkNTViIpLG90KCksbnQoMjAsIm9wdGlvbiIsMTUpLFl0KDIxLCJEYXRhbGluZXMg''@;'; put 'put ''KGNhcmRzIGZpbGUpIiksb3QoKSxudCgyMiwib3B0aW9uIiwxNiksWXQoMjMsIkRETCAoUEdTUUwgRmxhdm91cikiKSxvdCgpLG50KDI0LCJvcHRpb24iLDE3KSxZdCgyNSwiRERMIChTQVMgRmxhdm91cikiKSxvdCgpLG50KDI2LCJvcHRpb24iLDE4KSxZdCgyNywiRERMIChUU1FMIEZsYXZv''@;'; put 'put ''dXIpIiksb3QoKSxudCgyOCwib3B0aW9uIiwxOSksWXQoMjksIkV4Y2VsICgueGxzeCkiKSxvdCgpLG50KDMwLCJvcHRpb24iLDIwKSxZdCgzMSwiTWFya2Rvd24gKC5tZCkiKSxvdCgpKCkoKSgpKCksbnQoMzIsImRpdiIsMjEpKDMzLCJidXR0b24iLDIyKSxHbigiY2xpY2siLGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHYub3BlbkRvd25sb2FkPSExfSksWXQoMzQsIiBDYW5jZWwgIiksb3QoKSxudCgzNSwiYnV0dG9uIiwyMyksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LmRvd25sb2FkRm9ybWF0LmluY2x1ZGVzKCJEREwiKT92LmRvd25sb2FkRERMKCk6di5kb3dubG9hZERhdGEo''@;'; put 'put ''KX0pLFl0KDM2LCIgT2sgIiksb3QoKSgpKCksbnQoMzcsImNsci1tb2RhbCIsOCksR24oImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oQyl7cmV0dXJuIHYud2ViUXVlcnk9Q30pLG50KDM4LCJoMyIsOSksWXQoMzksIiBXZWIgUXVlcnkgVVJMICIpLG90KCksbnQoNDAsImRpdiIsMjQp''@;'; put 'put ''KDQxLCJkaXYiLDI1KSg0MiwiZGl2IiwyNikoNDMsImRpdiIsMjcpKDQ0LCJkaXYiLDI4KSg0NSwic3BhbiIpLFl0KDQ2LCJDb3B5IHRoZSBiZWxvdyBpbnRvIHlvdXIgcHJlZmVycmVkIGNsaWVudCB0b29sOiIpLG90KCksbnQoNDcsImRpdiIsMjkpKDQ4LCJkaXYiLDMwKSxHbigiY2xpY2si''@;'; put 'put ''LGZ1bmN0aW9uKCl7cmV0dXJuIHYud2ViUXVlcnlUYWI9ITAsdi5zaG93V2ViUXVlcnkoKX0pLENyKDQ5LCJpbnB1dCIsMzEpLG50KDUwLCJsYWJlbCIpLFl0KDUxLCJUQUIiKSxvdCgpKCksbnQoNTIsImRpdiIsMzApLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi53ZWJRdWVyeVRh''@;'; put 'put ''Yj0hMSx2LnNob3dXZWJRdWVyeSgpfSksQ3IoNTMsImlucHV0IiwzMSksbnQoNTQsImxhYmVsIiksWXQoNTUsIkNTViIpLG90KCkoKSgpKCksbnQoNTYsImRpdiIsMzIpKDU3LCJ0ZXh0YXJlYSIsMzMsMzQpLEduKCJmb2N1cyIsZnVuY3Rpb24oQyl7cmV0dXJuIHYub25DbGlDb21tYW5kRm9j''@;'; put 'put ''dXMoQyl9KSxZdCg1OSwiICAgICAgICAgICAgICAiKSxvdCgpKCksbnQoNjAsImRpdiIsMzUpKDYxLCJidXR0b24iLDM2KSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuY29weVRvQ2xpcCgpfSksWXQoNjIsIiBjb3B5IHRvIGNsaXBib2FyZCAiKSxvdCgpKCkoKSgpKCkoKSxudCg2''@;'; put 'put ''MywiZGl2IiwyMSkoNjQsImJ1dHRvbiIsMjIpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi53ZWJRdWVyeT0hMX0pLFl0KDY1LCIgY2xvc2UgIiksb3QoKSgpKCksbnQoNjYsImNsci1tb2RhbCIsMzcpLEduKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2''@;'; put 'put ''LmZpbHRlcj1DfSksbnQoNjcsImgzIiw5KSxZdCg2OCwiIEZpbHRlciBmb3IgdGFibGU6IiksbnQoNjksInNwYW4iKSxZdCg3MCksb3QoKSgpLG50KDcxLCJkaXYiLDEwKSxybig3MixpQXQsMiwwLCJhcHAtcXVlcnkiLDM4KSxvdCgpLG50KDczLCJkaXYiLDIxKSg3NCwiYnV0dG9uIiwzOSks''@;'; put 'put ''R24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LnJlc2V0RmlsdGVyKCl9KSxZdCg3NSwiIHJlc2V0IGZpbHRlciAiKSxvdCgpLG50KDc2LCJidXR0b24iLDQwKSxHbigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHYuZmlsdGVyPSExLHYucmVtb3ZlUXVlcnkoKX0pLFl0KDc3LCIgQ2Fu''@;'; put 'put ''Y2VsICIpLG90KCksbnQoNzgsImJ1dHRvbiIsNDEpLEduKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdi5zZW5kQ2xhdXNlKCl9KSxZdCg3OSwiIE9rICIpLG90KCkoKSgpLG50KDgwLCJjbHItbW9kYWwiLDQyKSxHbigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihDKXtyZXR1cm4g''@;'; put 'put ''di5xdWVyeUVycj1DfSksbnQoODEsImgzIiw0MyksWXQoODIsIkVycm9yIiksb3QoKSxudCg4MywiZGl2IiwxMCkoODQsInAiKSxZdCg4NSksb3QoKSgpLG50KDg2LCJkaXYiLDIxKSg4NywiYnV0dG9uIiw0NCksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LnF1ZXJ5RXJyPSExfSks''@;'; put 'put ''WXQoODgsIiBDYW5jZWwgIiksb3QoKSxudCg4OSwiYnV0dG9uIiw0NSksR24oImNsaWNrIixmdW5jdGlvbigpe3JldHVybiB2LnF1ZXJ5RXJyPSExfSksWXQoOTAsIiBPayAiKSxvdCgpKCkoKSxybig5MSxvQXQsNiwwLCJkaXYiLDQ2KSxybig5MixIQXQsNiw1LCJkaXYiLDQ3KSxvdCgpLG50''@;'; put 'put ''KDkzLCJhcHAtZGF0YXNldC1pbmZvIiw0OCksR24oIm9wZW5DaGFuZ2UiLGZ1bmN0aW9uKEMpe3JldHVybiB2LmRhdGFzZXRJbmZvPUN9KSxvdCgpKSwyJmgpe2NvbnN0IHk9dmEoNTgpO3V0KDEpLFR0KCJuZ0lmIix2LmxpYnJhcmllc0xvYWRpbmcpLHV0KDIpLFR0KCJuZ0lmIix2LmxpYnJh''@;'; put 'put ''cmllcyksdXQoMSksVHQoIm5nRm9yT2YiLHYubGlicmFyaWVzKSx1dCgxKSxUdCgibmdJZiIsdi5saWJyYXJpZXNQYWdpbmcpLHV0KDIpLFR0KCJuZ0lmIix2Lm51bGxWYXJpYWJsZXMpLHV0KDEpLFR0KCJuZ0lmIix2Lm51bGxWYXJpYWJsZXMpLHV0KDEpLFR0KCJjbHJNb2RhbE9wZW4iLHYu''@;'; put 'put ''b3BlbkRvd25sb2FkKSgiY2xyTW9kYWxTaXplIiwibWQiKSx1dCg4KSxUdCgibmdNb2RlbCIsdi5kb3dubG9hZEZvcm1hdCksdXQoMTgpLFR0KCJpZCIsdi50YWJsZVRpdGxlKSx1dCgyKSxUdCgiY2xyTW9kYWxPcGVuIix2LndlYlF1ZXJ5KSgiY2xyTW9kYWxTaXplIiwibGciKSx1dCgxMiks''@;'; put 'put ''VHQoImNoZWNrZWQiLHYud2ViUXVlcnlUYWIpLHV0KDQpLFR0KCJjaGVja2VkIiwhdi53ZWJRdWVyeVRhYiksdXQoNCksSTYoInZhbHVlIix2LndlYlF1ZXJ5VGV4dCksdXQoNCksVHQoIm5neENsaXBib2FyZCIseSksdXQoNSksVHQoImNsck1vZGFsT3BlbiIsdi5maWx0ZXIpKCJjbHJNb2Rh''@;'; put 'put ''bFNpemUiLCJ4bCIpKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksdXQoNCksSmkoIiAiLHYubGliVGFiLCIgIiksdXQoMiksVHQoIm5nSWYiLHYuZmlsdGVyKSx1dCg2KSxUdCgiY2xyTG9hZGluZyIsdi5zdWJtaXRMb2FkaW5nKSx1dCgyKSxUdCgiY2xyTW9kYWxPcGVuIix2LnF1ZXJ5RXJyKSx1''@;'; put 'put ''dCg1KSxqaSh2LnF1ZXJ5RXJyTWVzc2FnZSksdXQoNiksVHQoIm5nSWYiLHYubG9hZGluZ1RhYmxlVmlldyksdXQoMSksVHQoIm5nSWYiLCF2LmxvYWRpbmdUYWJsZVZpZXcpLHV0KDEpLFR0KCJvcGVuIix2LmRhdGFzZXRJbmZvKSgiZHNtZXRhIix2LmRzbWV0YSl9fSxkZXBlbmRlbmNpZXM6''@;'; put 'put ''W3hzLE5vLEpkLGlwLEY5dCxwZywkMyxxMyxtMSxJZixPZixUcyxkZyxJcyxMYyx5dixfZyxRTCx3bCxpZCxvZCxnbyxQYSx3LGF0LHVyLFJvLGxvLE9pLHB2LG9aLGlaLHd2LGJTLF9TLEpMLGdhLEF0ZSxFTGUsTVMseExlLElMZSxWOXRdLHN0eWxlczpbIi5jYXJkW19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXXttYXJnaW4tdG9wOjA7ZmxleDoxO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Y2xyLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcH0udG9nZ2xlLXN3aXRjaFtfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV0gICBpbnB1dFt0eXBlPWNoZWNrYm94XVtfbmdjb250ZW50LSVDT01QJV06Y2hlY2tlZCArIGxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpiZWZvcmV7Ym9yZGVyLWNvbG9yOiMzMTQzNTE7YmFja2dyb3VuZC1jb2xvcjojMzE0MzUxIWltcG9ydGFudDt0cmFuc2l0aW9uOi4xNXMg''@;'; put 'put ''ZWFzZS1pbjt0cmFuc2l0aW9uLXByb3BlcnR5OmJvcmRlci1jb2xvcixiYWNrZ3JvdW5kLWNvbG9yfS5oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aXRsZS1jb2xbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmhlYWRlci1yb3db''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVdICAgLm9wdGlvbnMtY29sW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5zZWFyY2gtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAgIC5pbnB1dC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO21p''@;'; put 'put ''bi13aWR0aDoxNzBweH0uc2VhcmNoLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgICAuaW5wdXQtd3JhcHBlciBjbHItaWNvbiwgLnNlYXJjaC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmlucHV0LXdyYXBwZXIgLnNwaW5uZXJ7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6''@;'; put 'put ''MTlweDt0b3A6MHB4fS5zZWFyY2gtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAgIC5pbnB1dC13cmFwcGVyIGNsci1pY29ue2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6d2hpdGV9LnNlYXJjaC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLWlucHV0LWNvbnRhaW5l''@;'; put 'put ''cnttYXJnaW4tdG9wOi01cHg7bWFyZ2luLXJpZ2h0OjB9LnNlYXJjaC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLWlucHV0LWNvbnRhaW5lciBsYWJlbHtkaXNwbGF5Om5vbmV9LnNlYXJjaC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLWNoZWNrYm94LWNv''@;'; put 'put ''bnRhaW5lcnttYXJnaW4tdG9wOjB9LnNlYXJjaC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgaW5wdXR7Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlcjoxcHggc29saWQgIzk5OX0uc2VhcmNoLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgICBpbnB1dDo6LXdlYmtpdC1vdXRl''@;'; put 'put ''ci1zcGluLWJ1dHRvbiwgLnNlYXJjaC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9LnNlYXJjaC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgaW5wdXRb''@;'; put 'put ''dHlwZT1udW1iZXJdey1tb3otYXBwZWFyYW5jZTp0ZXh0ZmllbGR9LnN3W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MXJlbSAwcmVtIC41cmVtIDFyZW19LmluZm9CYXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MTBweDtiYWNrZ3JvdW5kOiM0OTU5Njc7Y29sb3I6I2ZmZjt0''@;'; put 'put ''ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjNweDtmb250LXNpemU6MTZweH0uZmlsdGVyU2lkZVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDoyNnB4O21hcmdpbi1ib3R0b206MTlweH0ub3B0aW9ucy1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1pY29ue21hcmdp''@;'; put 'put ''bi1yaWdodDo1cHh9LnZpZXdlclRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjE1cHh9LmRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE4MHB4O21hcmdpbi10b3A6LTE4cHg7cGFkZGluZzowfS5kcm9wZG93bi1t''@;'; put 'put ''ZW51W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5idG5bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7dGV4dC10cmFuc2Zvcm06bm9uZX0uY2FyZEZsZXhbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5ub0RhdGFbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxfS5maWx0ZXJCdG5bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmVkaXRC''@;'; put 'put ''dG5bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0uYnRuVmlld1tfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAhaW1wb3J0YW50fS5jb250ZW50LWFyZWFbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVyZW0haW1wb3J0YW50''@;'; put 'put ''O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmRvd25sb2FkLXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItc2VsZWN0LXdyYXBwZXJ7bWF4LWhlaWdodDp1bnNldCFpbXBvcnRhbnR9LnJlZnJlc2gtdGFibGVbX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpw''@;'; put 'put ''b2ludGVyO21hcmdpbi1sZWZ0OjVweH0ubGliaW5mb1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxMHB4IDIwcHg7b3ZlcmZsb3c6YXV0b31ob3QtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgICAucHJpbWFyeUtleUhlYWRlclN0eWxle2JhY2tncm91bmQ6cmdiYSg0OCwxMDcsMCwu''@;'; put 'put ''NDMxMzcyNTQ5KX0ubm8tdGFibGUtc2VsZWN0ZWQtaW5mb1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpub25lO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS53ZWItcXVlcnlbX25nY29udGVudC0lQ09NUCVde21heC1oZWlnaHQ6''@;'; put 'put ''MzV2aH0ud2ViLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC53ZWItcXVlcnktdGV4dFtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDoxMDBweDttYXgtaGVpZ2h0OjEwMHB4fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KXsuZmlsdGVyQnRuW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXSwgLmVkaXRCdG5bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfX1AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpey5yb3dbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1yaWdodDowcmVtO21hcmdpbi1sZWZ0OjByZW19fSJdfSks''@;'; put 'put ''ZH0pKCk7Y29uc3QgTkF0PVt7cGF0aDoiIixjb21wb25lbnQ6YTl0LGNoaWxkcmVuOlt7cGF0aDoiIixwYXRoTWF0Y2g6ImZ1bGwiLHJlZGlyZWN0VG86ImRhdGEifSx7cGF0aDoiZGF0YSIsY29tcG9uZW50OnpuZX0se3BhdGg6ImRhdGEiLGNvbXBvbmVudDp6bmV9LHtwYXRoOiJkYXRhLzps''@;'; put 'put ''aWJNZW0vOmZpbHRlcklkIixjb21wb25lbnQ6em5lfSx7cGF0aDoiZGF0YS86bGliTWVtIixjb21wb25lbnQ6em5lfSx7cGF0aDoibGluZWFnZSIsY29tcG9uZW50OlpuZX0se3BhdGg6ImxpbmVhZ2UvOnRhYmxlaWQvOmRpcmVjdGlvbiIsY29tcG9uZW50OlpuZX0se3BhdGg6ImxpbmVhZ2Uv''@;'; put 'put ''Y29sdW1uLzpjb2x1cmkvOmRpcmVjdGlvbiIsY29tcG9uZW50OlpuZX0se3BhdGg6ImxpbmVhZ2UvY29sdW1uLzpjb2x1cmkvOmRpcmVjdGlvbi86cmVsb2FkIixjb21wb25lbnQ6Wm5lfSx7cGF0aDoibWV0YWRhdGEiLGNvbXBvbmVudDpPbWV9LHtwYXRoOiJtZXRhZGF0YS9vYmplY3QvOm9i''@;'; put 'put ''amVjdElEIixjb21wb25lbnQ6T21lfSx7cGF0aDoibWV0YWRhdGEvb2JqZWN0LzpvYmplY3RJRC86b2JqZWN0TmFtZSIsY29tcG9uZW50Ok9tZX0se3BhdGg6InVzZXJuYXYiLGNvbXBvbmVudDpvOXQsY2hpbGRyZW46W3twYXRoOiIiLHBhdGhNYXRjaDoiZnVsbCIscmVkaXJlY3RUbzoiZ3Jv''@;'; put 'put ''dXBzIn0se3BhdGg6InVzZXJzIixjb21wb25lbnQ6UExlfSx7cGF0aDoidXNlcnMvOnVyaSIsY29tcG9uZW50OlBMZX0se3BhdGg6Imdyb3VwcyIsY29tcG9uZW50OlJMZX0se3BhdGg6Imdyb3Vwcy86dXJpIixjb21wb25lbnQ6UkxlfSx7cGF0aDoicm9sZXMiLGNvbXBvbmVudDpCTGV9LHtw''@;'; put 'put ''YXRoOiJyb2xlcy86dXJpIixjb21wb25lbnQ6QkxlfV19XX1dO2xldCBWQXQ9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbWGguZm9y''@;'; put 'put ''Q2hpbGQoTkF0KSxYaF19KSxkfSkoKSxqQXQ9KCgpPT57Y2xhc3MgZHt9cmV0dXJuIGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKGgpe3JldHVybiBuZXcoaHx8ZCl9LGQuXHUwMjc1bW9kPWNvKHt0eXBlOmR9KSxkLlx1MDI3NWluaj1iMCh7aW1wb3J0czpbYmEsVkF0LEg5dCx0ZCxuTyxkNmUuZm9y''@;'; put 'put ''Um9vdCgpLHdtZSxIbmUsTm5lXX0pLGR9KSgpO2NvbnN0IHpBdD1YaC5mb3JSb290KFt7cGF0aDoiIixyZWRpcmVjdFRvOiJob21lIixwYXRoTWF0Y2g6ImZ1bGwifSx7cGF0aDoidmlldyIsbG9hZENoaWxkcmVuOigpPT5qQXR9LHtwYXRoOiJhcHByb3ZlIixjb21wb25lbnQ6d1ZlLGNoaWxk''@;'; put 'put ''cmVuOlt7cGF0aDoiIixwYXRoTWF0Y2g6ImZ1bGwiLHJlZGlyZWN0VG86InRvYXBwcm92ZSJ9LHtwYXRoOiJ0b2FwcHJvdmUiLGNvbXBvbmVudDpOd2V9LHtwYXRoOiJhcHByb3ZlRGV0Lzp0YWJsZUlkIixjb21wb25lbnQ6WndlfSx7cGF0aDoic3VibWl0dGVkIixjb21wb25lbnQ6endlfV19''@;'; put 'put ''LHtwYXRoOiJsaWNlbnNpbmcvOmFjdGlvbiIsY29tcG9uZW50OlVqZSxjYW5BY3RpdmF0ZTpbWmhlXSxjYW5EZWFjdGl2YXRlOltaaGVdfSx7cGF0aDoiaG9tZSIsY29tcG9uZW50OlVIZX0se3BhdGg6ImVkaXRvciIsbG9hZENoaWxkcmVuOigpPT5nN3R9LHtwYXRoOiJzdGFnZSIsbG9hZENo''@;'; put 'put ''aWxkcmVuOigpPT5BZXR9LHtwYXRoOiJhYm91dCIsY29tcG9uZW50OmRIZX0se3BhdGg6ImFjdGlvbnMvOmxpYmRzLzpkc2lkIixjb21wb25lbnQ6V05lfSx7cGF0aDoiaGlzdG9yeSIsY29tcG9uZW50Om9WZX0se3BhdGg6InN1Ym1pdHRlZCIsY29tcG9uZW50Onp3ZX0se3BhdGg6ImRlcGxv''@;'; put 'put ''eSIsY29tcG9uZW50Old3ZX0se3BhdGg6ImRlcGxveS9tYW51YWxkZXBsb3kiLGNvbXBvbmVudDpXd2V9LHtwYXRoOiIqKiIsY29tcG9uZW50OmFWZX1dLHt1c2VIYXNoOiEwLHJlbGF0aXZlTGlua1Jlc29sdXRpb246ImxlZ2FjeSJ9KTtsZXQgR0F0PSgoKT0+e2NsYXNzIGR7fXJldHVybiBk''@;'; put 'put ''Llx1MDI3NWZhYz1mdW5jdGlvbihoKXtyZXR1cm4gbmV3KGh8fGQpfSxkLlx1MDI3NW1vZD1jbyh7dHlwZTpkLGJvb3RzdHJhcDpbZFBlXX0pLGQuXHUwMjc1aW5qPWIwKHtwcm92aWRlcnM6W1I3LGtnLE53ZSxaaGVdLGltcG9ydHM6W2hIZSwkVyx0ZCxQMmUsekksekF0LEhuZSxuTyx3bWUs''@;'; put 'put ''Tm5lXX0pLGR9KSgpOyhmdW5jdGlvbiBndSgpe0lUPSExfSkoKSxPaWUoKS5ib290c3RyYXBNb2R1bGUoR0F0KX0sMTE0MDooWGUsSmUsTCk9Pnt2YXIgbWU9TCgxNzE1NikuZGVmYXVsdDtzZWxmLFhlLmV4cG9ydHM9KCgpPT57dmFyIEI9ezI2NTY6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3Ry''@;'; put 'put ''aWN0Ijt2YXIgcmU9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKFcpe3JldHVybiBXJiZXLl9fZXNNb2R1bGU/Vzp7ZGVmYXVsdDpXfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuZGVjb2RlVG9rZW49US5oYXNUb2tlbkV4''@;'; put 'put ''cGlyZWQ9US5pc1JlZnJlc2hUb2tlbkV4cGlyaW5nPVEuaXNBY2Nlc3NUb2tlbkV4cGlyaW5nPXZvaWQgMDt2YXIgYWU9cmUoaig2MjQ1KSk7ZnVuY3Rpb24gWShXLE4pe3JldHVybigwLGFlLmRlZmF1bHQpKFcpLmV4cC0obmV3IERhdGUpLnZhbHVlT2YoKS8xZTM8PU59US5pc0FjY2Vzc1Rv''@;'; put 'put ''a2VuRXhwaXJpbmc9ZnVuY3Rpb24oVyxOKXtyZXR1cm4gdm9pZCAwPT09TiYmKE49MzYwMCksIVd8fFkoVyxOKX0sUS5pc1JlZnJlc2hUb2tlbkV4cGlyaW5nPWZ1bmN0aW9uKFcsTil7cmV0dXJuIHZvaWQgMD09PU4mJihOPTMwKSwhV3x8WShXLE4pfSxRLmhhc1Rva2VuRXhwaXJlZD1mdW5j''@;'; put 'put ''dGlvbihXKXtyZXR1cm4hV3x8WShXLDApfSxRLmRlY29kZVRva2VuPWZ1bmN0aW9uKFcpe3ZhciBOO3RyeXtOPSgwLGFlLmRlZmF1bHQpKFcpfWNhdGNoKHRlKXt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdG9rZW4gc3VwcGxpZWQuIil9cmV0dXJuIE59fSw2Nzk5OmZ1bmN0aW9uKFUsUSxq''@;'; put 'put ''KXsidXNlIHN0cmljdCI7dmFyIHJlPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihZLFcsTix0ZSl7dm9pZCAwPT09dGUmJih0ZT1OKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoWSx0ZSx7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gV1tOXX19KX06ZnVuY3Rpb24oWSxXLE4sdGUpe3ZvaWQgMD09PXRlJiYodGU9TiksWVt0ZV09V1tOXX0pLGFlPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihZLFcpe2Zvcih2YXIgTiBpbiBZKSJkZWZhdWx0Ij09PU58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy''@;'; put 'put ''dHkuY2FsbChXLE4pfHxyZShXLFksTil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxhZShqKDI2NTYpLFEpfSwzMjU5OmZ1bmN0aW9uKFUsUSl7InVzZSBzdHJpY3QiO3ZhciBqPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IGo9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24ocmUpe2Zvcih2YXIgYWUsWT0xLFc9YXJndW1lbnRzLmxlbmd0aDtZPFc7WSsrKWZvcih2YXIgTiBpbiBhZT1hcmd1bWVudHNbWV0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFlLE4pJiYocmVbTl09YWVbTl0pO3JldHVy''@;'; put 'put ''biByZX0sai5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLnByZWZpeE1lc3NhZ2U9dm9pZCAwLFEucHJlZml4TWVzc2FnZT1mdW5jdGlvbihyZSxhZSl7aWYoIm9iamVjdCI9PXR5cGVvZiByZSlpZihyZS5o''@;'; put 'put ''YXNPd25Qcm9wZXJ0eSgibWVzc2FnZSIpKXJlLm1lc3NhZ2U9YWUrcmUubWVzc2FnZTtlbHNle2lmKCFyZS5oYXNPd25Qcm9wZXJ0eSgiYm9keSIpKXJldHVybiBqKGooe30scmUpLHttZXNzYWdlOmFlfSk7aWYoIm9iamVjdCI9PXR5cGVvZiByZS5ib2R5JiYocmUubWVzc2FnZT1yZS5ib2R5''@;'; put 'put ''Lm1lc3NhZ2U/YWUrcmUuYm9keS5tZXNzYWdlOmFlKSwic3RyaW5nIj09dHlwZW9mIHJlLmJvZHkpe3ZhciBZPXZvaWQgMDt0cnl7WT1KU09OLnBhcnNlKHJlLmJvZHkpfWNhdGNoKFcpe3JldHVybiByZS5tZXNzYWdlPWFlLHJlfXJldHVybiBZLm1lc3NhZ2U9WS5tZXNzYWdlP2FlK1kubWVz''@;'; put 'put ''c2FnZTphZSxyZS5ib2R5PVkscmV9fXJldHVybiJzdHJpbmciPT10eXBlb2YgcmUmJihyZT1hZStyZSkscmV9fSw5Nzc4OmZ1bmN0aW9uKFUsUSxqKXsidXNlIHN0cmljdCI7dmFyIHJlPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihZLFcsTix0''@;'; put 'put ''ZSl7dm9pZCAwPT09dGUmJih0ZT1OKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoWSx0ZSx7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gV1tOXX19KX06ZnVuY3Rpb24oWSxXLE4sdGUpe3ZvaWQgMD09PXRlJiYodGU9TiksWVt0ZV09V1tOXX0pLGFlPXRoaXMmJnRoaXMuX19l''@;'; put 'put ''eHBvcnRTdGFyfHxmdW5jdGlvbihZLFcpe2Zvcih2YXIgTiBpbiBZKSJkZWZhdWx0Ij09PU58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChXLE4pfHxyZShXLFksTil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxhZShqKDMy''@;'; put 'put ''NTkpLFEpLGFlKGooMTA2NCksUSl9LDEwNjQ6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmUsYWU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChyZT1mdW5jdGlvbihLLEope3JldHVybihyZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBB''@;'; put 'put ''cnJheSYmZnVuY3Rpb24oc2Usb2Upe3NlLl9fcHJvdG9fXz1vZX18fGZ1bmN0aW9uKHNlLG9lKXtmb3IodmFyIGNlIGluIG9lKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvZSxjZSkmJihzZVtjZV09b2VbY2VdKX0pKEssSil9LGZ1bmN0aW9uKEssSil7aWYoImZ1bmN0''@;'; put 'put ''aW9uIiE9dHlwZW9mIEomJm51bGwhPT1KKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoSikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gc2UoKXt0aGlzLmNvbnN0cnVjdG9yPUt9cmUoSyxKKSxLLnByb3RvdHlwZT1u''@;'; put 'put ''dWxsPT09Sj9PYmplY3QuY3JlYXRlKEopOihzZS5wcm90b3R5cGU9Si5wcm90b3R5cGUsbmV3IHNlKX0pLFk9dGhpcyYmdGhpcy5fX3JlYWR8fGZ1bmN0aW9uKEssSil7dmFyIHNlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJktbU3ltYm9sLml0ZXJhdG9yXTtpZighc2UpcmV0dXJuIEs7''@;'; put 'put ''dmFyIG9lLGNlLGRlPXNlLmNhbGwoSyksdmU9W107dHJ5e2Zvcig7KHZvaWQgMD09PUp8fEotLSA+MCkmJiEob2U9ZGUubmV4dCgpKS5kb25lOyl2ZS5wdXNoKG9lLnZhbHVlKX1jYXRjaChBZSl7Y2U9e2Vycm9yOkFlfX1maW5hbGx5e3RyeXtvZSYmIW9lLmRvbmUmJihzZT1kZS5yZXR1cm4p''@;'; put 'put ''JiZzZS5jYWxsKGRlKX1maW5hbGx5e2lmKGNlKXRocm93IGNlLmVycm9yfX1yZXR1cm4gdmV9LFc9dGhpcyYmdGhpcy5fX3NwcmVhZEFycmF5fHxmdW5jdGlvbihLLEosc2Upe2lmKHNlfHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIG9lLGNlPTAsZGU9Si5sZW5ndGg7Y2U8ZGU7Y2Ur''@;'; put 'put ''Kykhb2UmJmNlIGluIEp8fChvZXx8KG9lPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKEosMCxjZSkpLG9lW2NlXT1KW2NlXSk7cmV0dXJuIEsuY29uY2F0KG9lfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChKKSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7''@;'; put 'put ''dmFsdWU6ITB9KSxRLlNlcnZlclR5cGVFcnJvcj12b2lkIDA7dmFyIE49aigzOTAwKSx0ZT1mdW5jdGlvbihLKXtmdW5jdGlvbiBKKHNlKXt2b2lkIDA9PT1zZSYmKHNlPVtdKTt2YXIgb2U9dGhpcyxjZT0oc2U9VyhbXSxZKG5ldyBTZXQoc2UpKSwhMSkpLmxlbmd0aD9zZS5qb2luKCIsICIp''@;'; put 'put ''LnRyaW0oKTpbTi5TZXJ2ZXJUeXBlLlNhc1ZpeWEsTi5TZXJ2ZXJUeXBlLlNhczksTi5TZXJ2ZXJUeXBlLlNhc2pzXS5qb2luKCIsICIpLnRyaW0oKTtyZXR1cm4gY2U9Y2UucmVwbGFjZSgvLFxzKFteLF0qKSQvLCIgYW5kICQxIiksKG9lPUsuY2FsbCh0aGlzLCJJbnZhbGlkIHNlcnZlciB0''@;'; put 'put ''eXBlOiB2YWxpZCBvcHRpb24iLmNvbmNhdCgxIT09c2UubGVuZ3RoPyJzIjoiIiwiICIpLmNvbmNhdCgxIT09c2UubGVuZ3RoPyJhcmUiOiJpcyIsIiAiKS5jb25jYXQoY2UpKXx8dGhpcykubmFtZT0iU2VydmVyVHlwZUVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2Yob2UsSi5wcm90b3R5''@;'; put 'put ''cGUpLG9lfXJldHVybiBhZShKLEspLEp9KEVycm9yKTtRLlNlcnZlclR5cGVFcnJvcj10ZX0sMzkwNjpmdW5jdGlvbihVLFEsail7InVzZSBzdHJpY3QiO3ZhciByZT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oc2Usb2UsY2UsZGUpe3JldHVybiBuZXcoY2V8fChjZT1Qcm9taXNl''@;'; put 'put ''KSkoZnVuY3Rpb24odmUsQWUpe2Z1bmN0aW9uIGtlKFRlKXt0cnl7SWUoZGUubmV4dChUZSkpfWNhdGNoKE1lKXtBZShNZSl9fWZ1bmN0aW9uIFNlKFRlKXt0cnl7SWUoZGUudGhyb3coVGUpKX1jYXRjaChNZSl7QWUoTWUpfX1mdW5jdGlvbiBJZShUZSl7dmFyIE1lO1RlLmRvbmU/dmUoVGUu''@;'; put 'put ''dmFsdWUpOihNZT1UZS52YWx1ZSxNZSBpbnN0YW5jZW9mIGNlP01lOm5ldyBjZShmdW5jdGlvbihoZSl7aGUoTWUpfSkpLnRoZW4oa2UsU2UpfUllKChkZT1kZS5hcHBseShzZSxvZXx8W10pKS5uZXh0KCkpfSl9LGFlPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHNlLG9lKXt2''@;'; put 'put ''YXIgY2UsZGUsdmUsQWUsa2U9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmdmVbMF0pdGhyb3cgdmVbMV07cmV0dXJuIHZlWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIEFlPXtuZXh0OlNlKDApLHRocm93OlNlKDEpLHJldHVybjpTZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5''@;'; put 'put ''bWJvbCYmKEFlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLEFlO2Z1bmN0aW9uIFNlKEllKXtyZXR1cm4gZnVuY3Rpb24oVGUpe3JldHVybiBmdW5jdGlvbihNZSl7aWYoY2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0''@;'; put 'put ''aW5nLiIpO2Zvcig7a2U7KXRyeXtpZihjZT0xLGRlJiYodmU9MiZNZVswXT9kZS5yZXR1cm46TWVbMF0/ZGUudGhyb3d8fCgodmU9ZGUucmV0dXJuKSYmdmUuY2FsbChkZSksMCk6ZGUubmV4dCkmJiEodmU9dmUuY2FsbChkZSxNZVsxXSkpLmRvbmUpcmV0dXJuIHZlO3N3aXRjaChkZT0wLHZl''@;'; put 'put ''JiYoTWU9WzImTWVbMF0sdmUudmFsdWVdKSxNZVswXSl7Y2FzZSAwOmNhc2UgMTp2ZT1NZTticmVhaztjYXNlIDQ6cmV0dXJuIGtlLmxhYmVsKysse3ZhbHVlOk1lWzFdLGRvbmU6ITF9O2Nhc2UgNTprZS5sYWJlbCsrLGRlPU1lWzFdLE1lPVswXTtjb250aW51ZTtjYXNlIDc6TWU9a2Uub3Bz''@;'; put 'put ''LnBvcCgpLGtlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKCh2ZT0odmU9a2UudHJ5cykubGVuZ3RoPjAmJnZlW3ZlLmxlbmd0aC0xXSl8fDYhPT1NZVswXSYmMiE9PU1lWzBdKSl7a2U9MDtjb250aW51ZX1pZigzPT09TWVbMF0mJighdmV8fE1lWzFdPnZlWzBdJiZNZVsxXTx2''@;'; put 'put ''ZVszXSkpe2tlLmxhYmVsPU1lWzFdO2JyZWFrfWlmKDY9PT1NZVswXSYma2UubGFiZWw8dmVbMV0pe2tlLmxhYmVsPXZlWzFdLHZlPU1lO2JyZWFrfWlmKHZlJiZrZS5sYWJlbDx2ZVsyXSl7a2UubGFiZWw9dmVbMl0sa2Uub3BzLnB1c2goTWUpO2JyZWFrfXZlWzJdJiZrZS5vcHMucG9wKCks''@;'; put 'put ''a2UudHJ5cy5wb3AoKTtjb250aW51ZX1NZT1vZS5jYWxsKHNlLGtlKX1jYXRjaChoZSl7TWU9WzYsaGVdLGRlPTB9ZmluYWxseXtjZT12ZT0wfWlmKDUmTWVbMF0pdGhyb3cgTWVbMV07cmV0dXJue3ZhbHVlOk1lWzBdP01lWzFdOnZvaWQgMCxkb25lOiEwfX0oW0llLFRlXSl9fX0sWT10aGlz''@;'; put 'put ''JiZ0aGlzLl9fcmVhZHx8ZnVuY3Rpb24oc2Usb2Upe3ZhciBjZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZzZVtTeW1ib2wuaXRlcmF0b3JdO2lmKCFjZSlyZXR1cm4gc2U7dmFyIGRlLHZlLEFlPWNlLmNhbGwoc2UpLGtlPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1vZXx8b2UtLSA+MCkm''@;'; put 'put ''JiEoZGU9QWUubmV4dCgpKS5kb25lOylrZS5wdXNoKGRlLnZhbHVlKX1jYXRjaChTZSl7dmU9e2Vycm9yOlNlfX1maW5hbGx5e3RyeXtkZSYmIWRlLmRvbmUmJihjZT1BZS5yZXR1cm4pJiZjZS5jYWxsKEFlKX1maW5hbGx5e2lmKHZlKXRocm93IHZlLmVycm9yfX1yZXR1cm4ga2V9LFc9dGhp''@;'; put 'put ''cyYmdGhpcy5fX3NwcmVhZEFycmF5fHxmdW5jdGlvbihzZSxvZSxjZSl7aWYoY2V8fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgZGUsdmU9MCxBZT1vZS5sZW5ndGg7dmU8QWU7dmUrKykhZGUmJnZlIGluIG9lfHwoZGV8fChkZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChvZSww''@;'; put 'put ''LHZlKSksZGVbdmVdPW9lW3ZlXSk7cmV0dXJuIHNlLmNvbmNhdChkZXx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwob2UpKX0sTj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oc2Upe3JldHVybiBzZSYmc2UuX19lc01vZHVsZT9zZTp7ZGVmYXVsdDpzZX19O09iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLnVwZGF0ZUNzdj1RLmNyZWF0ZUNzdj1RLnJlYWRDc3Y9dm9pZCAwO3ZhciB0ZT1qKDE1NTkpLEs9TihqKDc1NjUpKTtRLnJlYWRDc3Y9ZnVuY3Rpb24oc2Upe3JldHVybiByZSh2b2lkIDAsdm9pZCAwLHZvaWQg''@;'; put 'put ''MCxmdW5jdGlvbigpe3JldHVybiBhZSh0aGlzLGZ1bmN0aW9uKG9lKXtzd2l0Y2gob2UubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCwoMCx0ZS5yZWFkRmlsZSkoc2UpXTtjYXNlIDE6cmV0dXJuWzIsb2Uuc2VudCgpLnNwbGl0KCJcbiIpLmZpbHRlcihmdW5jdGlvbihjZSl7cmV0dXJuIGNlLmxl''@;'; put 'put ''bmd0aH0pLm1hcChmdW5jdGlvbihjZSl7cmV0dXJuIGNlLnNwbGl0KCIsIil9KV19fSl9KX0sUS5jcmVhdGVDc3Y9ZnVuY3Rpb24oc2Usb2UsY2Upe3JldHVybiByZSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBkZTtyZXR1cm4gYWUodGhpcyxmdW5jdGlvbih2ZSl7c3dp''@;'; put 'put ''dGNoKHZlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIGRlPSgwLEsuZGVmYXVsdCkob2Use2hlYWRlcjoxPT09b2UubGVuZ3RoLGNvbHVtbnM6Y2V9KSxbNCwoMCx0ZS5jcmVhdGVGaWxlKShzZSxkZSldO2Nhc2UgMTpyZXR1cm4gdmUuc2VudCgpLFsyXX19KX0pfSxRLnVwZGF0ZUNzdj1mdW5jdGlv''@;'; put 'put ''bihzZSxvZSxjZSxkZSl7cmV0dXJuIHJlKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHZlLEFlLGtlO3JldHVybiBhZSh0aGlzLGZ1bmN0aW9uKFNlKXtzd2l0Y2goU2UubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxKKHNlLG9lLGNlLGRlKV07Y2FzZSAxOnJldHVybiB2ZT1T''@;'; put 'put ''ZS5zZW50KCksZGUmJihBZT0wPT09dmUubGVuZ3RoPzE6dmUubGVuZ3RoLChrZT1jZS5maW5kSW5kZXgoZnVuY3Rpb24oSWUpe3JldHVybiBJZT09PWRlfSkpPi0xP29lLnNwbGljZShrZSwwLEFlKTooY2Uuc3BsaWNlKDAsMCxkZSksb2Uuc3BsaWNlKDAsMCxBZSkpKSx2ZS5wdXNoKG9lKSxb''@;'; put 'put ''NCwoMCxRLmNyZWF0ZUNzdikoc2UsdmUsY2UpXTtjYXNlIDI6cmV0dXJuIFNlLnNlbnQoKSxbMl19fSl9KX07dmFyIEo9ZnVuY3Rpb24oc2Usb2UsY2UsZGUpe3JldHVybiByZSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB2ZSxBZSxrZSxTZTtyZXR1cm4gYWUodGhpcyxm''@;'; put 'put ''dW5jdGlvbihJZSl7c3dpdGNoKEllLmxhYmVsKXtjYXNlIDA6aWYob2UubGVuZ3RoIT09Y2UubGVuZ3RoKXtpZihvZS5sZW5ndGg+Y2UubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiYSByZWNvcmQgY2FuIG5vdCBoYXZlIG1vcmUgZmllbGRzIHRoYW4gcHJvdmlkZWQgY29sdW1ucyIpO2lmKCFk''@;'; put 'put ''ZXx8b2UubGVuZ3RoKzEhPT1jZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJhIHJlY29yZCBjYW4gbm90IGhhdmUgbGVzcyBmaWVsZHMgdGhhbiBwcm92aWRlZCBjb2x1bW5zIil9ZWxzZSBpZihkZSYmY2UuaW5jbHVkZXMoZGUpKXRocm93IG5ldyBFcnJvcigiYSByZWNvcmQgY2FuIG5vdCBo''@;'; put 'put ''YXZlIG1vcmUgZmllbGRzIHRoYW4gcHJvdmlkZWQgY29sdW1ucyIpO3JldHVybls0LCgwLFEucmVhZENzdikoc2UpLmNhdGNoKGZ1bmN0aW9uKFRlKXtyZXR1cm5bXX0pXTtjYXNlIDE6aWYodmU9SWUuc2VudCgpLEFlPXZlWzBdKXtpZihjZS5sZW5ndGg+QWUubGVuZ3RoKXRocm93IG5ldyBF''@;'; put 'put ''cnJvcigibnVtYmVyIG9mIHByb3ZpZGVkIGNvbHVtbnMgYXJlIGdyZWF0ZXIgdGhhbiBudW1iZXIgb2YgZXhpc3RpbmcgY29sdW1ucyIpO2lmKGNlLmxlbmd0aDxBZS5sZW5ndGgpe2lmKCFkZXx8Y2UubGVuZ3RoKzEhPT1BZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJudW1iZXIgb2YgcHJv''@;'; put 'put ''dmlkZWQgY29sdW1ucyBhcmUgbGVzcyB0aGFuIG51bWJlciBvZiBleGlzdGluZyBjb2x1bW5zIik7aWYoa2U9QWUuZmluZEluZGV4KGZ1bmN0aW9uKFRlKXtyZXR1cm4gVGU9PT1kZX0pLFNlPVcoW10sWShjZSksITEpLCEoa2U+LTEpKXRocm93IG5ldyBFcnJvcigicHJvdmlkZWQgY29sdW1u''@;'; put 'put ''cyBkb2VzIG5vdCBtYXRjaCBleGlzdGluZyBjb2x1bW5zIik7aWYoU2Uuc3BsaWNlKGtlLDAsZGUpLEpTT04uc3RyaW5naWZ5KGNlKSE9PUpTT04uc3RyaW5naWZ5KFNlKSl0aHJvdyBuZXcgRXJyb3IoInByb3ZpZGVkIGNvbHVtbnMgZG9lcyBub3QgbWF0Y2ggZXhpc3RpbmcgY29sdW1ucyIp''@;'; put 'put ''fWVsc2V7aWYoSlNPTi5zdHJpbmdpZnkoY2UpIT09SlNPTi5zdHJpbmdpZnkoQWUpKXRocm93IG5ldyBFcnJvcigicHJvdmlkZWQgY29sdW1ucyBkb2VzIG5vdCBtYXRjaCBleGlzdGluZyBjb2x1bW5zIik7aWYoZGUmJiFjZS5pbmNsdWRlcyhkZSkpdGhyb3cgbmV3IEVycm9yKCJjYW4gbm90''@;'; put 'put ''IGFkZCBuZXcgaWQgdG8gZXhpc3RpbmcgZGF0YSIpfX1yZXR1cm5bMix2ZV19fSl9KX19LDE1NTk6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKE1lLGhlLE8seil7dm9pZCAwPT09''@;'; put 'put ''eiYmKHo9TyksT2JqZWN0LmRlZmluZVByb3BlcnR5KE1lLHose2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGhlW09dfX0pfTpmdW5jdGlvbihNZSxoZSxPLHope3ZvaWQgMD09PXomJih6PU8pLE1lW3pdPWhlW09dfSksYWU9dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1''@;'; put 'put ''bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKE1lLGhlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoTWUsImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmhlfSl9OmZ1bmN0aW9uKE1lLGhlKXtNZS5kZWZhdWx0PWhlfSksWT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24o''@;'; put 'put ''TWUpe2lmKE1lJiZNZS5fX2VzTW9kdWxlKXJldHVybiBNZTt2YXIgaGU9e307aWYobnVsbCE9TWUpZm9yKHZhciBPIGluIE1lKSJkZWZhdWx0IiE9PU8mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChNZSxPKSYmcmUoaGUsTWUsTyk7cmV0dXJuIGFlKGhlLE1lKSxoZX0s''@;'; put 'put ''Vz10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oTWUsaGUsTyx6KXtyZXR1cm4gbmV3KE98fChPPVByb21pc2UpKShmdW5jdGlvbihlZSxuZSl7ZnVuY3Rpb24geChUKXt0cnl7Vih6Lm5leHQoVCkpfWNhdGNoKFMpe25lKFMpfX1mdW5jdGlvbiBQKFQpe3RyeXtWKHoudGhyb3coVCkp''@;'; put 'put ''fWNhdGNoKFMpe25lKFMpfX1mdW5jdGlvbiBWKFQpe3ZhciBTO1QuZG9uZT9lZShULnZhbHVlKTooUz1ULnZhbHVlLFMgaW5zdGFuY2VvZiBPP1M6bmV3IE8oZnVuY3Rpb24oRil7RihTKX0pKS50aGVuKHgsUCl9Vigoej16LmFwcGx5KE1lLGhlfHxbXSkpLm5leHQoKSl9KX0sTj10aGlzJiZ0''@;'; put 'put ''aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihNZSxoZSl7dmFyIE8seixlZSxuZSx4PXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmVlWzBdKXRocm93IGVlWzFdO3JldHVybiBlZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBuZT17bmV4dDpQKDApLHRocm93OlAoMSkscmV0dXJu''@;'; put 'put ''OlAoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihuZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxuZTtmdW5jdGlvbiBQKFYpe3JldHVybiBmdW5jdGlvbihUKXtyZXR1cm4gZnVuY3Rpb24oUyl7aWYoTyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5l''@;'; put 'put ''cmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDt4Oyl0cnl7aWYoTz0xLHomJihlZT0yJlNbMF0/ei5yZXR1cm46U1swXT96LnRocm93fHwoKGVlPXoucmV0dXJuKSYmZWUuY2FsbCh6KSwwKTp6Lm5leHQpJiYhKGVlPWVlLmNhbGwoeixTWzFdKSkuZG9uZSlyZXR1cm4gZWU7c3dp''@;'; put 'put ''dGNoKHo9MCxlZSYmKFM9WzImU1swXSxlZS52YWx1ZV0pLFNbMF0pe2Nhc2UgMDpjYXNlIDE6ZWU9UzticmVhaztjYXNlIDQ6cmV0dXJuIHgubGFiZWwrKyx7dmFsdWU6U1sxXSxkb25lOiExfTtjYXNlIDU6eC5sYWJlbCsrLHo9U1sxXSxTPVswXTtjb250aW51ZTtjYXNlIDc6Uz14Lm9wcy5w''@;'; put 'put ''b3AoKSx4LnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChlZT0oZWU9eC50cnlzKS5sZW5ndGg+MCYmZWVbZWUubGVuZ3RoLTFdKXx8NiE9PVNbMF0mJjIhPT1TWzBdKSl7eD0wO2NvbnRpbnVlfWlmKDM9PT1TWzBdJiYoIWVlfHxTWzFdPmVlWzBdJiZTWzFdPGVlWzNdKSl7eC5s''@;'; put 'put ''YWJlbD1TWzFdO2JyZWFrfWlmKDY9PT1TWzBdJiZ4LmxhYmVsPGVlWzFdKXt4LmxhYmVsPWVlWzFdLGVlPVM7YnJlYWt9aWYoZWUmJngubGFiZWw8ZWVbMl0pe3gubGFiZWw9ZWVbMl0seC5vcHMucHVzaChTKTticmVha31lZVsyXSYmeC5vcHMucG9wKCkseC50cnlzLnBvcCgpO2NvbnRpbnVl''@;'; put 'put ''fVM9aGUuY2FsbChNZSx4KX1jYXRjaChGKXtTPVs2LEZdLHo9MH1maW5hbGx5e089ZWU9MH1pZig1JlNbMF0pdGhyb3cgU1sxXTtyZXR1cm57dmFsdWU6U1swXT9TWzFdOnZvaWQgMCxkb25lOiEwfX0oW1YsVF0pfX19LHRlPXRoaXMmJnRoaXMuX19yZWFkfHxmdW5jdGlvbihNZSxoZSl7dmFy''@;'; put 'put ''IE89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTWVbU3ltYm9sLml0ZXJhdG9yXTtpZighTylyZXR1cm4gTWU7dmFyIHosZWUsbmU9Ty5jYWxsKE1lKSx4PVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1oZXx8aGUtLSA+MCkmJiEoej1uZS5uZXh0KCkpLmRvbmU7KXgucHVzaCh6LnZhbHVlKX1j''@;'; put 'put ''YXRjaChQKXtlZT17ZXJyb3I6UH19ZmluYWxseXt0cnl7eiYmIXouZG9uZSYmKE89bmUucmV0dXJuKSYmTy5jYWxsKG5lKX1maW5hbGx5e2lmKGVlKXRocm93IGVlLmVycm9yfX1yZXR1cm4geH0sSz10aGlzJiZ0aGlzLl9fc3ByZWFkQXJyYXl8fGZ1bmN0aW9uKE1lLGhlLE8pe2lmKE98fDI9''@;'; put 'put ''PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgeixlZT0wLG5lPWhlLmxlbmd0aDtlZTxuZTtlZSsrKSF6JiZlZSBpbiBoZXx8KHp8fCh6PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGhlLDAsZWUpKSx6W2VlXT1oZVtlZV0pO3JldHVybiBNZS5jb25jYXQoenx8QXJyYXkucHJvdG90eXBl''@;'; put 'put ''LnNsaWNlLmNhbGwoaGUpKX0sSj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oTWUpe3JldHVybiBNZSYmTWUuX19lc01vZHVsZT9NZTp7ZGVmYXVsdDpNZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmlzVGVzdEZpbGU9''@;'; put 'put ''US50ZXN0RmlsZVJlZ0V4cD1RLmNyZWF0ZVJlYWRTdHJlYW09US5jcmVhdGVXcml0ZVN0cmVhbT1RLmdldFJlYWxQYXRoPVEuYmFzZTY0RW5jb2RlRmlsZT1RLmJhc2U2NEVuY29kZUltYWdlRmlsZT1RLnBhdGhTZXBFc2NhcGVkPVEuY29weT1RLm1vdmVGaWxlPVEuZ2V0UmVsYXRpdmVQYXRo''@;'; put 'put ''PVEudW5pZnlGaWxlUGF0aD1RLmRlbGV0ZUZvbGRlcj1RLmRlbGV0ZUZpbGU9US5jcmVhdGVGaWxlPVEuY3JlYXRlRm9sZGVyPVEubGlzdEZpbGVzQW5kU3ViRm9sZGVyc0luRm9sZGVyPVEubGlzdFN1YkZvbGRlcnNJbkZvbGRlcj1RLmxpc3RJbmlGaWxlc0luRm9sZGVyPVEubGlzdEZpbGVz''@;'; put 'put ''SW5Gb2xkZXI9US5yZWFkRmlsZUJpbmFyeT1RLnJlYWRGaWxlPVEuaXNGb2xkZXI9US5mb2xkZXJFeGlzdHM9US5maWxlRXhpc3RzPXZvaWQgMDt2YXIgc2U9SihqKDU2NzQpKSxvZT1KKGooOTg0KSksY2U9SihqKDI1MjApKSxkZT1qKDYyNjYpLHZlPVkoaigyOTc1KSk7ZnVuY3Rpb24gQWUo''@;'; put 'put ''TWUpe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBOKHRoaXMsZnVuY3Rpb24oaGUpe3JldHVyblsyLHNlLmRlZmF1bHQucHJvbWlzZXMuYWNjZXNzKE1lLHNlLmRlZmF1bHQuY29uc3RhbnRzLkZfT0spLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4hMH0pLmNh''@;'; put 'put ''dGNoKGZ1bmN0aW9uKCl7cmV0dXJuITF9KV19KX0pfWZ1bmN0aW9uIGtlKE1lKXtyZXR1cm4gVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKGhlKXtyZXR1cm5bMixzZS5kZWZhdWx0LnByb21pc2VzLnJlYWRGaWxlKE1lKV19KX0pfWZ1bmN0''@;'; put 'put ''aW9uIFNlKE1lKXtyZXR1cm4gVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKGhlKXtyZXR1cm5bMixzZS5kZWZhdWx0LnByb21pc2VzLnJlYWRkaXIoTWUse3dpdGhGaWxlVHlwZXM6ITB9KS50aGVuKGZ1bmN0aW9uKE8pe3JldHVybiBPLmZp''@;'; put 'put ''bHRlcihmdW5jdGlvbih6KXtyZXR1cm4hei5pc0RpcmVjdG9yeSgpfSkubWFwKGZ1bmN0aW9uKHope3JldHVybiB6Lm5hbWV9KX0pXX0pfSl9ZnVuY3Rpb24gSWUoTWUpe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBOKHRoaXMsZnVuY3Rpb24oaGUpe3Jl''@;'; put 'put ''dHVyblsyLHNlLmRlZmF1bHQucHJvbWlzZXMubWtkaXIoTWUse3JlY3Vyc2l2ZTohMH0pXX0pfSl9ZnVuY3Rpb24gVGUoTWUsaGUsTyl7dm9pZCAwPT09aGUmJihoZT1jZS5kZWZhdWx0LnNlcCksdm9pZCAwPT09TyYmKE89Ii8iKTt2YXIgej17dW5peDoiLyIsd2luOiJcXCJ9LGVlPU9iamVj''@;'; put 'put ''dC5rZXlzKHopLmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuIHpbeF09PT1oZX0pO2lmKGVlKXt2YXIgbmU9eltPYmplY3Qua2V5cyh6KS5maW5kKGZ1bmN0aW9uKHgpe3JldHVybiB4IT09ZWV9KV07cmV0dXJuIGVlPXpbZWVdLE1lLnNwbGl0KG5lKS5qb2luKGVlKX1yZXR1cm4gTWUuc3BsaXQo''@;'; put 'put ''Tykuam9pbihoZSl9US5maWxlRXhpc3RzPWZ1bmN0aW9uKE1lKXtyZXR1cm4gVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKGhlKXtyZXR1cm5bMixzZS5kZWZhdWx0LnByb21pc2VzLmFjY2VzcyhNZSxzZS5kZWZhdWx0LmNvbnN0YW50cy5G''@;'; put 'put ''X09LKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuITB9KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiExfSldfSl9KX0sUS5mb2xkZXJFeGlzdHM9QWUsUS5pc0ZvbGRlcj1mdW5jdGlvbihNZSl7cmV0dXJuIFcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIE4odGhpcyxmdW5j''@;'; put 'put ''dGlvbihoZSl7cmV0dXJuWzIsc2UuZGVmYXVsdC5wcm9taXNlcy5sc3RhdChNZSkudGhlbihmdW5jdGlvbihPKXtyZXR1cm4gTy5pc0RpcmVjdG9yeSgpfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4hMX0pXX0pfSl9LFEucmVhZEZpbGU9ZnVuY3Rpb24oTWUsaGUpe3JldHVybiB2b2lkIDA9''@;'; put 'put ''PT1oZSYmKGhlPSJ1dGY4IiksVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKE8pe3JldHVyblsyLHNlLmRlZmF1bHQucHJvbWlzZXMucmVhZEZpbGUoTWUsaGUpXX0pfSl9LFEucmVhZEZpbGVCaW5hcnk9a2UsUS5saXN0RmlsZXNJbkZvbGRl''@;'; put 'put ''cj1TZSxRLmxpc3RJbmlGaWxlc0luRm9sZGVyPWZ1bmN0aW9uKE1lKXtyZXR1cm4gVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKGhlKXtzd2l0Y2goaGUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxTZShNZSldO2Nhc2UgMTpyZXR1cm5bMixo''@;'; put 'put ''ZS5zZW50KCkuZmlsdGVyKGZ1bmN0aW9uKE8pe3JldHVybiBPLmVuZHNXaXRoKCIuaW5pIil9KV19fSl9KX0sUS5saXN0U3ViRm9sZGVyc0luRm9sZGVyPWZ1bmN0aW9uKE1lKXtyZXR1cm4gVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKGhl''@;'; put 'put ''KXtyZXR1cm5bMixzZS5kZWZhdWx0LnByb21pc2VzLnJlYWRkaXIoTWUse3dpdGhGaWxlVHlwZXM6ITB9KS50aGVuKGZ1bmN0aW9uKE8pe3JldHVybiBPLmZpbHRlcihmdW5jdGlvbih6KXtyZXR1cm4gei5pc0RpcmVjdG9yeSgpfSkubWFwKGZ1bmN0aW9uKHope3JldHVybiB6Lm5hbWV9KX0p''@;'; put 'put ''XX0pfSl9LFEubGlzdEZpbGVzQW5kU3ViRm9sZGVyc0luRm9sZGVyPWZ1bmN0aW9uIE1lKGhlLE8pe3JldHVybiB2b2lkIDA9PT1PJiYoTz0hMCksVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgej10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oZWUpe3JldHVyblsyLHNl''@;'; put 'put ''LmRlZmF1bHQucHJvbWlzZXMucmVhZGRpcihoZSx7d2l0aEZpbGVUeXBlczohMH0pLnRoZW4oZnVuY3Rpb24obmUpe3JldHVybiBXKHosdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB4LFA9dGhpcztyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKFYpe3N3aXRjaChWLmxhYmVsKXtjYXNlIDA6''@;'; put 'put ''cmV0dXJuIE8mJm5lLmZpbHRlcihmdW5jdGlvbihUKXtyZXR1cm4gVC5pc0RpcmVjdG9yeSgpfSkubGVuZ3RoPyh4PVtdLFs0LCgwLGRlLmFzeW5jRm9yRWFjaCkobmUuZmlsdGVyKGZ1bmN0aW9uKFQpe3JldHVybiBULmlzRGlyZWN0b3J5KCl9KSxmdW5jdGlvbihUKXtyZXR1cm4gVyhQLHZv''@;'; put 'put ''aWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgUyxGLHllO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oQ2Upe3N3aXRjaChDZS5sYWJlbCl7Y2FzZSAwOnJldHVybiBGPWNlLmRlZmF1bHQuam9pbihoZSxTPVQubmFtZSkseWU9W0soW10sdGUoeCksITEpXSxbNCxNZShGKV07Y2FzZSAxOnJldHVy''@;'; put 'put ''biB4PUsuYXBwbHkodm9pZCAwLHllLmNvbmNhdChbdGUuYXBwbHkodm9pZCAwLFtDZS5zZW50KCkubWFwKGZ1bmN0aW9uKERlKXtyZXR1cm4gY2UuZGVmYXVsdC5qb2luKFMsRGUpfSldKSwhMV0pKSxbMl19fSl9KX0pXSk6WzMsMl07Y2FzZSAxOnJldHVybiBWLnNlbnQoKSxbMixLKEsoW10s''@;'; put 'put ''dGUobmUuZmlsdGVyKGZ1bmN0aW9uKFQpe3JldHVybiFULmlzRGlyZWN0b3J5KCl9KS5tYXAoZnVuY3Rpb24oVCl7cmV0dXJuIFQubmFtZX0pKSwhMSksdGUoeCksITEpXTtjYXNlIDI6cmV0dXJuWzIsbmUubWFwKGZ1bmN0aW9uKFQpe3JldHVybiBULm5hbWV9KV19fSl9KX0pXX0pfSl9LFEu''@;'; put 'put ''Y3JlYXRlRm9sZGVyPUllLFEuY3JlYXRlRmlsZT1mdW5jdGlvbihNZSxoZSxPKXtyZXR1cm4gVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgeixlZTtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKG5lKXtzd2l0Y2gobmUubGFiZWwpe2Nhc2UgMDpyZXR1cm4oTWU9VGUoTWUpKS5z''@;'; put 'put ''cGxpdChjZS5kZWZhdWx0LnNlcCkubGVuZ3RoPjE/KCh6PU1lLnNwbGl0KGNlLmRlZmF1bHQuc2VwKSkucG9wKCksWzQsQWUoZWU9ei5qb2luKGNlLmRlZmF1bHQuc2VwKSldKTpbMywzXTtjYXNlIDE6cmV0dXJuIG5lLnNlbnQoKT9bMywzXTpbNCxJZShlZSldO2Nhc2UgMjpuZS5zZW50KCks''@;'; put 'put ''bmUubGFiZWw9MztjYXNlIDM6cmV0dXJuWzIsc2UuZGVmYXVsdC5wcm9taXNlcy53cml0ZUZpbGUoTWUsaGUsTyldfX0pfSl9LFEuZGVsZXRlRmlsZT1mdW5jdGlvbihNZSl7cmV0dXJuIFcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIE4odGhpcyxmdW5jdGlvbihoZSl7''@;'; put 'put ''cmV0dXJuWzIsc2UuZGVmYXVsdC5yZW1vdmUoTWUpXX0pfSl9LFEuZGVsZXRlRm9sZGVyPWZ1bmN0aW9uKE1lKXtyZXR1cm4gVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKGhlKXtyZXR1cm5bMixuZXcgUHJvbWlzZShmdW5jdGlvbihPLHop''@;'; put 'put ''eygwLG9lLmRlZmF1bHQpKE1lLHt9LGZ1bmN0aW9uKGVlKXtyZXR1cm4gZWU/eihlZSk6TygpfSl9KV19KX0pfSxRLnVuaWZ5RmlsZVBhdGg9VGUsUS5nZXRSZWxhdGl2ZVBhdGg9ZnVuY3Rpb24oTWUsaGUpe3ZhciBPPU1lLnNwbGl0KGNlLmRlZmF1bHQuc2VwKSx6PWhlLnNwbGl0KGNlLmRl''@;'; put 'put ''ZmF1bHQuc2VwKSxlZT1bXSxuZT1bXTtPLmZvckVhY2goZnVuY3Rpb24oVCxTKXt2b2lkIDAhPT16W1NdJiZPW1NdPT09eltTXT9lZS5wdXNoKFQpOlQmJm5lLnB1c2goVCl9KTt2YXIgeD1lZS5qb2luKGNlLmRlZmF1bHQuc2VwKSxQPW5ldyBSZWdFeHAoIl4iLmNvbmNhdChjZS5kZWZhdWx0''@;'; put 'put ''LnNlcC5yZXBsYWNlKC9cXC9nLCJcXFxcIikpKSxWPW5ldyBSZWdFeHAoIiIuY29uY2F0KGNlLmRlZmF1bHQuc2VwLnJlcGxhY2UoL1xcL2csIlxcXFwiKSwiJCIpKTtyZXR1cm4obmUubGVuZ3RoPyIuLiIuY29uY2F0KGNlLmRlZmF1bHQuc2VwKS5yZXBlYXQobmUubGVuZ3RoKToiLiIuY29u''@;'; put 'put ''Y2F0KGNlLmRlZmF1bHQuc2VwKSkraGUucmVwbGFjZSh4LCIiKS5yZXBsYWNlKFAsIiIpLnJlcGxhY2UoViwiIil9LFEubW92ZUZpbGU9ZnVuY3Rpb24oTWUsaGUpe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBOKHRoaXMsZnVuY3Rpb24oTyl7cmV0dXJu''@;'; put 'put ''WzIsc2UuZGVmYXVsdC5wcm9taXNlcy5yZW5hbWUoTWUsaGUpXX0pfSl9LFEuY29weT1mdW5jdGlvbihNZSxoZSl7cmV0dXJuIFcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIE4odGhpcyxmdW5jdGlvbihPKXtyZXR1cm5bMixzZS5kZWZhdWx0LmNvcHkoTWUsaGUpXX0p''@;'; put 'put ''fSl9LFEucGF0aFNlcEVzY2FwZWQ9Y2UuZGVmYXVsdC5zZXAucmVwbGFjZSgvXFwvZywiXFxcXCIpLFEuYmFzZTY0RW5jb2RlSW1hZ2VGaWxlPWZ1bmN0aW9uKE1lKXtyZXR1cm4gVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKGhlKXtyZXR1''@;'; put 'put ''cm5bMixrZShNZSkudGhlbihmdW5jdGlvbihPKXt2YXIgej1jZS5kZWZhdWx0LmV4dG5hbWUoTWUpLnN1YnN0cigxKXx8InBuZyI7cmV0dXJuInN2ZyI9PT16JiYoej0ic3ZnK3htbCIpLCJkYXRhOmltYWdlLyIreisiO2Jhc2U2NCwiK08udG9TdHJpbmcoImJhc2U2NCIpfSldfSl9KX0sUS5i''@;'; put 'put ''YXNlNjRFbmNvZGVGaWxlPWZ1bmN0aW9uKE1lKXtyZXR1cm4gVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKGhlKXtyZXR1cm5bMixzZS5kZWZhdWx0LnByb21pc2VzLnJlYWRGaWxlKE1lLHtlbmNvZGluZzoiYmFzZTY0In0pXX0pfSl9LFEu''@;'; put 'put ''Z2V0UmVhbFBhdGg9ZnVuY3Rpb24oTWUpe3JldHVybiBzZS5kZWZhdWx0LnJlYWxwYXRoU3luYyhNZSl9LFEuY3JlYXRlV3JpdGVTdHJlYW09ZnVuY3Rpb24oTWUpe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBOKHRoaXMsZnVuY3Rpb24oaGUpe3N3aXRj''@;'; put 'put ''aChoZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHZlLmZpbGVFeGlzdHMoTWUpXTtjYXNlIDE6cmV0dXJuIGhlLnNlbnQoKT9bMixzZS5kZWZhdWx0LmNyZWF0ZVdyaXRlU3RyZWFtKE1lLHtmbGFnczoiYSJ9KV06WzQsdmUuY3JlYXRlRmlsZShNZSwiIildO2Nhc2UgMjpyZXR1cm4gaGUuc2Vu''@;'; put 'put ''dCgpLFsyLHNlLmRlZmF1bHQuY3JlYXRlV3JpdGVTdHJlYW0oTWUse2ZsYWdzOiJhIn0pXX19KX0pfSxRLmNyZWF0ZVJlYWRTdHJlYW09ZnVuY3Rpb24oTWUpe3JldHVybiBXKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIE4odGhpcyxmdW5jdGlvbihoZSl7cmV0dXJu''@;'; put 'put ''WzIsc2UuZGVmYXVsdC5jcmVhdGVSZWFkU3RyZWFtKE1lKV19KX0pfSxRLnRlc3RGaWxlUmVnRXhwPS9cLnRlc3RcLihcZCtcLik/c2FzJC9pLFEuaXNUZXN0RmlsZT1mdW5jdGlvbihNZSl7cmV0dXJuIFEudGVzdEZpbGVSZWdFeHAudGVzdChNZSl9fSw1NjI2OmZ1bmN0aW9uKFUsUSxqKXsi''@;'; put 'put ''dXNlIHN0cmljdCI7dmFyIHJlPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihXKXtyZXR1cm4gVyYmVy5fX2VzTW9kdWxlP1c6e2RlZmF1bHQ6V319O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmdldEFic29sdXRlUGF0aD12''@;'; put 'put ''b2lkIDA7dmFyIGFlPXJlKGooMjUyMCkpLFk9cmUoaig3NDM1KSk7US5nZXRBYnNvbHV0ZVBhdGg9ZnVuY3Rpb24oVyxOKXtyZXR1cm4gYWUuZGVmYXVsdC5pc0Fic29sdXRlKFcpfHwvXn4vLmV4ZWMoVyk/YWUuZGVmYXVsdC5ub3JtYWxpemUoVy5yZXBsYWNlKC9efi8sWS5kZWZhdWx0Lmhv''@;'; put 'put ''bWVkaXIoKSkpOmFlLmRlZmF1bHQuam9pbihOLFcpfX0sMjk3NTpmdW5jdGlvbihVLFEsail7InVzZSBzdHJpY3QiO3ZhciByZT10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oTix0ZSxLLEope3ZvaWQgMD09PUomJihKPUspLE9iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShOLEose2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRlW0tdfX0pfTpmdW5jdGlvbihOLHRlLEssSil7dm9pZCAwPT09SiYmKEo9SyksTltKXT10ZVtLXX0pLGFlPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihOLHRlKXtmb3IodmFyIEsg''@;'; put 'put ''aW4gTikiZGVmYXVsdCI9PT1LfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGUsSyl8fHJlKHRlLE4sSyl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLnJlYWRDc3Y9US5jcmVhdGVDc3Y9US51cGRhdGVDc3Y9US50ZXN0''@;'; put 'put ''RmlsZVJlZ0V4cD1RLmlzVGVzdEZpbGU9US5nZXRSZWFsUGF0aD1RLmJhc2U2NEVuY29kZUZpbGU9US5iYXNlNjRFbmNvZGVJbWFnZUZpbGU9US5jb3B5PVEucGF0aFNlcEVzY2FwZWQ9US5tb3ZlRmlsZT1RLnVuaWZ5RmlsZVBhdGg9US5nZXRSZWxhdGl2ZVBhdGg9US5kZWxldGVGb2xkZXI9''@;'; put 'put ''US5kZWxldGVGaWxlPVEuY3JlYXRlV3JpdGVTdHJlYW09US5jcmVhdGVSZWFkU3RyZWFtPVEuY3JlYXRlRm9sZGVyPVEuY3JlYXRlRmlsZT1RLmxpc3RGaWxlc0FuZFN1YkZvbGRlcnNJbkZvbGRlcj1RLmxpc3RTdWJGb2xkZXJzSW5Gb2xkZXI9US5saXN0SW5pRmlsZXNJbkZvbGRlcj1RLmxp''@;'; put 'put ''c3RGaWxlc0luRm9sZGVyPVEucmVhZEZpbGVCaW5hcnk9US5yZWFkRmlsZT1RLmlzRm9sZGVyPVEuZm9sZGVyRXhpc3RzPVEuZmlsZUV4aXN0cz12b2lkIDA7dmFyIFk9aigxNTU5KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiZmlsZUV4aXN0cyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIFkuZmlsZUV4aXN0c319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiZm9sZGVyRXhpc3RzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS5mb2xkZXJFeGlzdHN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImlzRm9sZGVyIix7ZW51bWVy''@;'; put 'put ''YWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS5pc0ZvbGRlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwicmVhZEZpbGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLnJlYWRGaWxlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJyZWFkRmlsZUJp''@;'; put 'put ''bmFyeSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFkucmVhZEZpbGVCaW5hcnl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImxpc3RGaWxlc0luRm9sZGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS5saXN0RmlsZXNJbkZvbGRlcn19''@;'; put 'put ''KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwibGlzdEluaUZpbGVzSW5Gb2xkZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLmxpc3RJbmlGaWxlc0luRm9sZGVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJsaXN0U3ViRm9sZGVyc0luRm9sZGVyIix7ZW51''@;'; put 'put ''bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS5saXN0U3ViRm9sZGVyc0luRm9sZGVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJsaXN0RmlsZXNBbmRTdWJGb2xkZXJzSW5Gb2xkZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLmxpc3RGaWxl''@;'; put 'put ''c0FuZFN1YkZvbGRlcnNJbkZvbGRlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiY3JlYXRlRmlsZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFkuY3JlYXRlRmlsZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiY3JlYXRlRm9sZGVyIix7ZW51bWVyYWJs''@;'; put 'put ''ZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS5jcmVhdGVGb2xkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImNyZWF0ZVJlYWRTdHJlYW0iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLmNyZWF0ZVJlYWRTdHJlYW19fSksT2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KFEsImNyZWF0ZVdyaXRlU3RyZWFtIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS5jcmVhdGVXcml0ZVN0cmVhbX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiZGVsZXRlRmlsZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFkuZGVs''@;'; put 'put ''ZXRlRmlsZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiZGVsZXRlRm9sZGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS5kZWxldGVGb2xkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImdldFJlbGF0aXZlUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0''@;'; put 'put ''OmZ1bmN0aW9uKCl7cmV0dXJuIFkuZ2V0UmVsYXRpdmVQYXRofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJ1bmlmeUZpbGVQYXRoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS51bmlmeUZpbGVQYXRofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJtb3Zl''@;'; put 'put ''RmlsZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFkubW92ZUZpbGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsInBhdGhTZXBFc2NhcGVkIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS5wYXRoU2VwRXNjYXBlZH19KSxPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkoUSwiY29weSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFkuY29weX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiYmFzZTY0RW5jb2RlSW1hZ2VGaWxlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS5iYXNlNjRFbmNv''@;'; put 'put ''ZGVJbWFnZUZpbGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImJhc2U2NEVuY29kZUZpbGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLmJhc2U2NEVuY29kZUZpbGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImdldFJlYWxQYXRoIix7ZW51bWVyYWJs''@;'; put 'put ''ZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS5nZXRSZWFsUGF0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiaXNUZXN0RmlsZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFkuaXNUZXN0RmlsZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwidGVzdEZp''@;'; put 'put ''bGVSZWdFeHAiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLnRlc3RGaWxlUmVnRXhwfX0pO3ZhciBXPWooMzkwNik7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsInVwZGF0ZUNzdiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFcudXBkYXRlQ3N2''@;'; put 'put ''fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJjcmVhdGVDc3YiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBXLmNyZWF0ZUNzdn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwicmVhZENzdiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFcu''@;'; put 'put ''cmVhZENzdn19KSxhZShqKDU2MjYpLFEpfSwyNzc3OihVLFEsaik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEubmV3TGluZT1RLmNhcGl0YWxpemVGaXJzdENoYXI9US5zYW5pdGl6ZVNwZWNpYWxDaGFycz1RLnBhZFdp''@;'; put 'put ''dGhOdW1iZXI9dm9pZCAwO3ZhciByZT1qKDUzMDYpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJwYWRXaXRoTnVtYmVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcmUucGFkV2l0aE51bWJlcn19KTt2YXIgYWU9aig5MDE3KTtPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''USwic2FuaXRpemVTcGVjaWFsQ2hhcnMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhZS5zYW5pdGl6ZVNwZWNpYWxDaGFyc319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiY2FwaXRhbGl6ZUZpcnN0Q2hhciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIGFlLmNhcGl0YWxpemVGaXJzdENoYXJ9fSk7dmFyIFk9aigxNjI4KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwibmV3TGluZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFkubmV3TGluZX19KX0sNTMwNjooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5wYWRXaXRoTnVtYmVyPXZvaWQgMCxRLnBhZFdpdGhOdW1iZXI9ZnVuY3Rpb24oaixyZSl7cmV0dXJuIHZvaWQgMD09PXJlJiYocmU9MCksaj45P2o6IiIuY29uY2F0KHJlKS5jb25jYXQoail9fSwxNjI4OihVLFEs''@;'; put 'put ''aik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNDE1NSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEubmV3TGluZT12b2lkIDAsUS5uZXdMaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIndpbjMyIj09PXJlLnBsYXRmb3JtPyJcXHJcXG4iOiJcXG4ifX0s''@;'; put 'put ''OTAxNzooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5jYXBpdGFsaXplRmlyc3RDaGFyPVEuc2FuaXRpemVTcGVjaWFsQ2hhcnM9dm9pZCAwLFEuc2FuaXRpemVTcGVjaWFsQ2hhcnM9ZnVuY3Rpb24oail7cmV0''@;'; put 'put ''dXJuIGoucmVwbGFjZSgvW1x1MDAxYlx1MDA5Yl1bWygpIzs/XSooPzpbMC05XXsxLDR9KD86O1swLTldezAsNH0pKik/WzAtOUEtT1JaY2YtbnFyeT0+PF0vZywiIil9LFEuY2FwaXRhbGl6ZUZpcnN0Q2hhcj1mdW5jdGlvbihqKXtyZXR1cm4gai5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStq''@;'; put 'put ''LnNsaWNlKDEpfX0sNjQ2NzpmdW5jdGlvbihVLFEsail7InVzZSBzdHJpY3QiO3ZhciByZT10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oWSl7cmV0dXJuIFkmJlkuX19lc01vZHVsZT9ZOntkZWZhdWx0Oll9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVs''@;'; put 'put ''ZSIse3ZhbHVlOiEwfSksUS5pc1NwZWNpYWxNaXNzaW5nPVEuY2hvaWNlVmFsaWRhdG9yPVEuY29uZmlybWF0aW9uVmFsaWRhdG9yPVEudXJsVmFsaWRhdG9yPXZvaWQgMDt2YXIgYWU9cmUoaig0ODEpKTtRLnVybFZhbGlkYXRvcj1mdW5jdGlvbihZLFcpe3JldHVybiEhYWUuZGVmYXVsdC5p''@;'; put 'put ''c0h0dHBVcmkoWSl8fCEhYWUuZGVmYXVsdC5pc0h0dHBzVXJpKFkpfHwiIj09PVl8fFd9LFEuY29uZmlybWF0aW9uVmFsaWRhdG9yPWZ1bmN0aW9uKFkpe3JldHVybiEwPT09WXx8ITE9PT1ZfSxRLmNob2ljZVZhbGlkYXRvcj1mdW5jdGlvbihZLFcsTil7cmV0dXJuIFk+MCYmWTw9V3x8Tn0s''@;'; put 'put ''US5pc1NwZWNpYWxNaXNzaW5nPWZ1bmN0aW9uKFkpe3JldHVybigic3RyaW5nIiE9dHlwZW9mIFl8fCFZLmluY2x1ZGVzKCIuLiIpKSYmbmV3IFJlZ0V4cCgiXihcXC4pP1thLXpfLl17MX0kIiwiaSIpLnRlc3QoWSl9fSw3NzU3OihVLFEsaik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuZ2VuZXJhdGVUaW1lc3RhbXA9US50aW1lc3RhbXBUb1lZWVlNTURESEhNTVNTPXZvaWQgMDt2YXIgcmU9aigxMzAyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwidGltZXN0YW1wVG9ZWVlZTU1EREhITU1TUyIse2VudW1l''@;'; put 'put ''cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHJlLnRpbWVzdGFtcFRvWVlZWU1NRERISE1NU1N9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImdlbmVyYXRlVGltZXN0YW1wIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcmUuZ2VuZXJhdGVUaW1lc3RhbXB9''@;'; put 'put ''fSl9LDEzMDI6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5nZW5lcmF0ZVRpbWVzdGFtcD1RLnRpbWVzdGFtcFRvWVlZWU1NRERISE1NU1M9dm9pZCAwO3ZhciByZT1qKDI3NzcpO1EudGltZXN0YW1wVG9Z''@;'; put 'put ''WVlZTU1EREhITU1TUz1mdW5jdGlvbihhZSl7dm9pZCAwPT09YWUmJihhZT1EYXRlLm5vdygpKTt2YXIgWT1uZXcgRGF0ZShhZSk7cmV0dXJuW1kuZ2V0RnVsbFllYXIoKSwoMCxyZS5wYWRXaXRoTnVtYmVyKShZLmdldE1vbnRoKCkrMSksKDAscmUucGFkV2l0aE51bWJlcikoWS5nZXREYXRl''@;'; put 'put ''KCkpXS5qb2luKCIvIikrIiAiK1soMCxyZS5wYWRXaXRoTnVtYmVyKShZLmdldEhvdXJzKCkpLCgwLHJlLnBhZFdpdGhOdW1iZXIpKFkuZ2V0TWludXRlcygpKSwoMCxyZS5wYWRXaXRoTnVtYmVyKShZLmdldFNlY29uZHMoKSldLmpvaW4oIjoiKX0sUS5nZW5lcmF0ZVRpbWVzdGFtcD1mdW5j''@;'; put 'put ''dGlvbihhZSxZKXt2b2lkIDA9PT1hZSYmKGFlPSIiKTt2YXIgVz1uZXcgRGF0ZSxOPVtXLmdldFVUQ0Z1bGxZZWFyKCksVy5nZXRVVENNb250aCgpKzEsVy5nZXRVVENEYXRlKCksVy5nZXRVVENIb3VycygpLFcuZ2V0VVRDTWludXRlcygpLFcuZ2V0VVRDU2Vjb25kcygpXTtyZXR1cm4gTj1O''@;'; put 'put ''Lm1hcChmdW5jdGlvbih0ZSl7cmV0dXJuKDAscmUucGFkV2l0aE51bWJlcikodGUpfSksWSYmYWUmJlk8Ti5sZW5ndGgmJlk+PTAmJk4uc3BsaWNlKFksMCxhZSksTi5qb2luKFk/IiI6YWUpfX0sODIzOTooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19l''@;'; put 'put ''c01vZHVsZSIse3ZhbHVlOiEwfSl9LDI0Mjc6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSwxODk6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1''@;'; put 'put ''ZTohMH0pfSwzNjkyOihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sNjkzOTooVSxRKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgajtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSks''@;'; put 'put ''US5NZW1iZXJUeXBlPXZvaWQgMCwoaj1RLk1lbWJlclR5cGV8fChRLk1lbWJlclR5cGU9e30pKS5zZXJ2aWNlPSJzZXJ2aWNlIixqLmZpbGU9ImZpbGUiLGouZm9sZGVyPSJmb2xkZXIifSw1MTY1OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9k''@;'; put 'put ''dWxlIix7dmFsdWU6ITB9KX0sMzkwMDpmdW5jdGlvbihVLFEsail7InVzZSBzdHJpY3QiO3ZhciByZT10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oWSxXLE4sdGUpe3ZvaWQgMD09PXRlJiYodGU9TiksT2JqZWN0LmRlZmluZVByb3BlcnR5KFks''@;'; put 'put ''dGUse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFdbTl19fSl9OmZ1bmN0aW9uKFksVyxOLHRlKXt2b2lkIDA9PT10ZSYmKHRlPU4pLFlbdGVdPVdbTl19KSxhZT10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oWSxXKXtmb3IodmFyIE4gaW4gWSkiZGVmYXVs''@;'; put 'put ''dCI9PT1OfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVyxOKXx8cmUoVyxZLE4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksYWUoaig4MjM5KSxRKSxhZShqKDI0MjcpLFEpLGFlKGooMTg5KSxRKSxhZShqKDM2OTIpLFEp''@;'; put 'put ''LGFlKGooNjkzOSksUSksYWUoaig1MTY1KSxRKSxhZShqKDQwNjkpLFEpLGFlKGooODkzMiksUSksYWUoaig0KSxRKSxhZShqKDIwMTUpLFEpLGFlKGooODUxNSksUSksYWUoaig1MzEzKSxRKSxhZShqKDg5NzkpLFEpfSw0MDY5OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmlzTWFjcm9WYXJzPXZvaWQgMCxRLmlzTWFjcm9WYXJzPWZ1bmN0aW9uKGope3JldHVybiBqJiYib2JqZWN0Ij09dHlwZW9mIGoubWFjcm9WYXJzJiYhQXJyYXkuaXNBcnJheShqLm1hY3JvVmFycyl9fSw4OTMyOihVLFEpPT57''@;'; put 'put ''InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sNDooVSxRKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgajtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5TQVNKc0ZpbGVUeXBlPXZvaWQgMCwo''@;'; put 'put ''aj1RLlNBU0pzRmlsZVR5cGV8fChRLlNBU0pzRmlsZVR5cGU9e30pKS5zZXJ2aWNlPSJTZXJ2aWNlIixqLmpvYj0iSm9iIixqLnRlc3Q9IlRlc3QiLGouZmlsZT0iRmlsZSJ9LDIwMTU6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2''@;'; put 'put ''YWx1ZTohMH0pfSw4NTE1OihVLFEpPT57InVzZSBzdHJpY3QiO3ZhciBqO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLlNlcnZlclR5cGU9dm9pZCAwLChqPVEuU2VydmVyVHlwZXx8KFEuU2VydmVyVHlwZT17fSkpLlNhc1ZpeWE9IlNBU1ZJWUEi''@;'; put 'put ''LGouU2FzOT0iU0FTOSIsai5TYXNqcz0iU0FTSlMifSw1MzEzOihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sODk3OTooVSxRLGopPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2Vz''@;'; put 'put ''TW9kdWxlIix7dmFsdWU6ITB9KSxRLlRhcmdldD12b2lkIDA7dmFyIHJlPWooODUxNSksYWU9aig2NzgxKSxZPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gVyhOKXt0aGlzLl9zZXJ2ZXJUeXBlPXJlLlNlcnZlclR5cGUuU2FzVml5YTt0cnl7aWYoIU4pdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHRh''@;'; put 'put ''cmdldDogSW5wdXQgSlNPTiBpcyBudWxsIG9yIHVuZGVmaW5lZC4iKTt0aGlzLl9uYW1lPSgwLGFlLnZhbGlkYXRlVGFyZ2V0TmFtZSkoTi5uYW1lKSx0aGlzLl9zZXJ2ZXJVcmw9KDAsYWUudmFsaWRhdGVTZXJ2ZXJVcmwpKE4uc2VydmVyVXJsKSx0aGlzLl9zZXJ2ZXJUeXBlPSgwLGFlLnZh''@;'; put 'put ''bGlkYXRlU2VydmVyVHlwZSkoTi5zZXJ2ZXJUeXBlKSx0aGlzLl9odHRwc0FnZW50T3B0aW9ucz0oMCxhZS52YWxpZGF0ZUh0dHBzQWdlbnRPcHRpb25zKShOLmh0dHBzQWdlbnRPcHRpb25zKSx0aGlzLl9hcHBMb2M9KDAsYWUudmFsaWRhdGVBcHBMb2MpKE4uYXBwTG9jKSx0aGlzLl9jb250''@;'; put 'put ''ZXh0TmFtZT0oMCxhZS52YWxpZGF0ZUNvbnRleHROYW1lKShOLmNvbnRleHROYW1lLHRoaXMuX3NlcnZlclR5cGUpLHRoaXMuX3NlcnZlck5hbWU9KDAsYWUudmFsaWRhdGVTZXJ2ZXJOYW1lKShOLnNlcnZlck5hbWUsdGhpcy5fc2VydmVyVHlwZSksdGhpcy5fc3luY0ZvbGRlcj0oMCxhZS52''@;'; put 'put ''YWxpZGF0ZVN5bmNGb2xkZXIpKE4uc3luY0ZvbGRlciksdGhpcy5fcmVwb3NpdG9yeU5hbWU9KDAsYWUudmFsaWRhdGVSZXBvc2l0b3J5TmFtZSkoTi5yZXBvc2l0b3J5TmFtZSx0aGlzLl9zZXJ2ZXJUeXBlKSxOLmRvY0NvbmZpZyYmKHRoaXMuX2RvY0NvbmZpZz0oMCxhZS52YWxpZGF0ZURv''@;'; put 'put ''Y0NvbmZpZykoTi5kb2NDb25maWcpKSxOLmF1dGhDb25maWcmJih0aGlzLl9hdXRoQ29uZmlnPSgwLGFlLnZhbGlkYXRlQXV0aENvbmZpZykoTi5hdXRoQ29uZmlnKSksTi5hdXRoQ29uZmlnU2FzOSYmKHRoaXMuX2F1dGhDb25maWdTYXM5PSgwLGFlLnZhbGlkYXRlQXV0aENvbmZpZ1Nhczkp''@;'; put 'put ''KE4uYXV0aENvbmZpZ1NhczkpKSxOLmJ1aWxkQ29uZmlnJiYodGhpcy5fYnVpbGRDb25maWc9KDAsYWUudmFsaWRhdGVCdWlsZENvbmZpZykoTi5idWlsZENvbmZpZyx0aGlzLl9uYW1lKSksdGhpcy5fZGVwbG95Q29uZmlnPSgwLGFlLnZhbGlkYXRlRGVwbG95Q29uZmlnKShOLmRlcGxveUNv''@;'; put 'put ''bmZpZz9OLmRlcGxveUNvbmZpZzp7ZGVwbG95U2VydmljZVBhY2s6ITAsZGVwbG95U2NyaXB0czpbXX0pLE4uc2VydmljZUNvbmZpZyYmKHRoaXMuX3NlcnZpY2VDb25maWc9KDAsYWUudmFsaWRhdGVTZXJ2aWNlQ29uZmlnKShOLnNlcnZpY2VDb25maWcpKSxOLmpvYkNvbmZpZyYmKHRoaXMu''@;'; put 'put ''X2pvYkNvbmZpZz0oMCxhZS52YWxpZGF0ZUpvYkNvbmZpZykoTi5qb2JDb25maWcpKSxOLnN0cmVhbUNvbmZpZyYmKHRoaXMuX3N0cmVhbUNvbmZpZz0oMCxhZS52YWxpZGF0ZVN0cmVhbUNvbmZpZykoTi5zdHJlYW1Db25maWcpKSxOLnRlc3RDb25maWcmJih0aGlzLl90ZXN0Q29uZmlnPSgw''@;'; put 'put ''LGFlLnZhbGlkYXRlVGVzdENvbmZpZykoTi50ZXN0Q29uZmlnKSksTi5tYWNyb0ZvbGRlcnMmJk4ubWFjcm9Gb2xkZXJzLmxlbmd0aCYmKHRoaXMuX21hY3JvRm9sZGVycz1OLm1hY3JvRm9sZGVycyksTi5wcm9ncmFtRm9sZGVycyYmTi5wcm9ncmFtRm9sZGVycy5sZW5ndGgmJih0aGlzLl9w''@;'; put 'put ''cm9ncmFtRm9sZGVycz1OLnByb2dyYW1Gb2xkZXJzKSxOLmJpbmFyeUZvbGRlcnMmJk4uYmluYXJ5Rm9sZGVycy5sZW5ndGgmJih0aGlzLl9iaW5hcnlGb2xkZXJzPU4uYmluYXJ5Rm9sZGVycyl9Y2F0Y2godGUpe3Rocm93IG5ldyBFcnJvcigiRXJyb3IgcGFyc2luZyB0YXJnZXQ6ICIuY29u''@;'; put 'put ''Y2F0KHRlLm1lc3NhZ2UpKX19cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLnByb3RvdHlwZSwibmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uYW1lfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLnByb3RvdHlw''@;'; put 'put ''ZSwic2VydmVyVXJsIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NlcnZlclVybH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVy5wcm90b3R5cGUsInNlcnZlclR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2Vy''@;'; put 'put ''dmVyVHlwZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVy5wcm90b3R5cGUsImh0dHBzQWdlbnRPcHRpb25zIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2h0dHBzQWdlbnRPcHRpb25zfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3Vy''@;'; put 'put ''YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLnByb3RvdHlwZSwiYXBwTG9jIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcExvY30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVy5wcm90b3R5cGUsImRvY0NvbmZp''@;'; put 'put ''ZyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kb2NDb25maWd9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFcucHJvdG90eXBlLCJhdXRoQ29uZmlnIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2F1dGhDb25maWd9LGVu''@;'; put 'put ''dW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFcucHJvdG90eXBlLCJhdXRoQ29uZmlnU2FzOSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hdXRoQ29uZmlnU2FzOX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkoVy5wcm90b3R5cGUsImJ1aWxkQ29uZmlnIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J1aWxkQ29uZmlnfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLnByb3RvdHlwZSwiZGVwbG95Q29uZmlnIix7''@;'; put 'put ''Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlcGxveUNvbmZpZ30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVy5wcm90b3R5cGUsInNlcnZpY2VDb25maWciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2VydmljZUNvbmZp''@;'; put 'put ''Z30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVy5wcm90b3R5cGUsImpvYkNvbmZpZyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9qb2JDb25maWd9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KFcucHJvdG90eXBlLCJzdHJlYW1Db25maWciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RyZWFtQ29uZmlnfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLnByb3RvdHlwZSwibWFjcm9Gb2xkZXJzIix7Z2V0''@;'; put 'put ''OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hY3JvRm9sZGVyc30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVy5wcm90b3R5cGUsInByb2dyYW1Gb2xkZXJzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb2dyYW1Gb2xkZXJz''@;'; put 'put ''fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLnByb3RvdHlwZSwiYmluYXJ5Rm9sZGVycyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9iaW5hcnlGb2xkZXJzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShXLnByb3RvdHlwZSwiY29udGV4dE5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGV4dE5hbWV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFcucHJvdG90eXBlLCJzZXJ2ZXJOYW1lIix7''@;'; put 'put ''Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NlcnZlck5hbWV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFcucHJvdG90eXBlLCJyZXBvc2l0b3J5TmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXBvc2l0b3J5TmFt''@;'; put 'put ''ZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVy5wcm90b3R5cGUsInRlc3RDb25maWciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdGVzdENvbmZpZ30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkoVy5wcm90b3R5cGUsInN5bmNGb2xkZXIiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3luY0ZvbGRlcn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxXLnByb3RvdHlwZS50b0pzb249ZnVuY3Rpb24oTil7dmFyIHRlLEssSjt2b2lkIDA9PT1OJiYo''@;'; put 'put ''Tj0hMCk7dmFyIHNlPXtuYW1lOnRoaXMubmFtZSxzZXJ2ZXJVcmw6dGhpcy5zZXJ2ZXJVcmwsc2VydmVyVHlwZTp0aGlzLnNlcnZlclR5cGUsaHR0cHNBZ2VudE9wdGlvbnM6dGhpcy5odHRwc0FnZW50T3B0aW9ucyxhcHBMb2M6dGhpcy5hcHBMb2MsZG9jQ29uZmlnOnRoaXMuZG9jQ29uZmln''@;'; put 'put ''LGRlcGxveUNvbmZpZzp0aGlzLmRlcGxveUNvbmZpZ307cmV0dXJuIShudWxsPT09KHRlPXRoaXMubWFjcm9Gb2xkZXJzKXx8dm9pZCAwPT09dGUpJiZ0ZS5sZW5ndGgmJihzZS5tYWNyb0ZvbGRlcnM9dGhpcy5tYWNyb0ZvbGRlcnMpLCEobnVsbD09PShLPXRoaXMucHJvZ3JhbUZvbGRlcnMp''@;'; put 'put ''fHx2b2lkIDA9PT1LKSYmSy5sZW5ndGgmJihzZS5wcm9ncmFtRm9sZGVycz10aGlzLnByb2dyYW1Gb2xkZXJzKSwhKG51bGw9PT0oSj10aGlzLmJpbmFyeUZvbGRlcnMpfHx2b2lkIDA9PT1KKSYmSi5sZW5ndGgmJihzZS5iaW5hcnlGb2xkZXJzPXRoaXMuYmluYXJ5Rm9sZGVycyksdGhpcy5h''@;'; put 'put ''dXRoQ29uZmlnJiYoc2UuYXV0aENvbmZpZz10aGlzLmF1dGhDb25maWcpLHRoaXMuYXV0aENvbmZpZ1NhczkmJihzZS5hdXRoQ29uZmlnU2FzOT10aGlzLmF1dGhDb25maWdTYXM5KSx0aGlzLmJ1aWxkQ29uZmlnP3NlLmJ1aWxkQ29uZmlnPXRoaXMuYnVpbGRDb25maWc6TiYmKHNlLmJ1aWxk''@;'; put 'put ''Q29uZmlnPXtpbml0UHJvZ3JhbToiIix0ZXJtUHJvZ3JhbToiIixidWlsZE91dHB1dEZpbGVOYW1lOiIiLmNvbmNhdCh0aGlzLm5hbWUsIi5zYXMiKSxidWlsZE91dHB1dEZvbGRlcjoic2FzanNidWlsZCIsYnVpbGRSZXN1bHRzRm9sZGVyOiJzYXNqc3Jlc3VsdHMiLG1hY3JvVmFyczp7fX0p''@;'; put 'put ''LHRoaXMuam9iQ29uZmlnP3NlLmpvYkNvbmZpZz10aGlzLmpvYkNvbmZpZzpOJiYoc2Uuam9iQ29uZmlnPXtqb2JGb2xkZXJzOltdLGluaXRQcm9ncmFtOiIiLHRlcm1Qcm9ncmFtOiIiLG1hY3JvVmFyczp7fX0pLHRoaXMuc2VydmljZUNvbmZpZz9zZS5zZXJ2aWNlQ29uZmlnPXRoaXMuc2Vy''@;'; put 'put ''dmljZUNvbmZpZzpOJiYoc2Uuc2VydmljZUNvbmZpZz17c2VydmljZUZvbGRlcnM6W10saW5pdFByb2dyYW06IiIsdGVybVByb2dyYW06IiIsbWFjcm9WYXJzOnt9fSksdGhpcy5zdHJlYW1Db25maWc/c2Uuc3RyZWFtQ29uZmlnPXRoaXMuc3RyZWFtQ29uZmlnOk4mJihzZS5zdHJlYW1Db25m''@;'; put 'put ''aWc9e3N0cmVhbVdlYkZvbGRlcjoiIixzdHJlYW1XZWI6ITEsd2ViU291cmNlUGF0aDoiIixzdHJlYW1TZXJ2aWNlTmFtZToiIixhc3NldFBhdGhzOltdfSksdGhpcy50ZXN0Q29uZmlnP3NlLnRlc3RDb25maWc9dGhpcy50ZXN0Q29uZmlnOk4mJihzZS50ZXN0Q29uZmlnPXtpbml0UHJvZ3Jh''@;'; put 'put ''bToiIix0ZXJtUHJvZ3JhbToiIixtYWNyb1ZhcnM6e30sdGVzdFNldFVwOiIiLHRlc3RUZWFyRG93bjoiIn0pLHRoaXMuc2VydmVyVHlwZT09PXJlLlNlcnZlclR5cGUuU2FzVml5YT9zZS5jb250ZXh0TmFtZT10aGlzLmNvbnRleHROYW1lOnRoaXMuc2VydmVyVHlwZT09PXJlLlNlcnZlclR5''@;'; put 'put ''cGUuU2FzOSYmKHNlLnNlcnZlck5hbWU9dGhpcy5zZXJ2ZXJOYW1lLHNlLnJlcG9zaXRvcnlOYW1lPXRoaXMucmVwb3NpdG9yeU5hbWUpLHNlfSxXfSgpO1EuVGFyZ2V0PVl9LDY3ODE6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1''@;'; put 'put ''bHR8fGZ1bmN0aW9uKFcpe3JldHVybiBXJiZXLl9fZXNNb2R1bGU/Vzp7ZGVmYXVsdDpXfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEudmFsaWRhdGVSZXBvc2l0b3J5TmFtZT1RLnZhbGlkYXRlU3luY0ZvbGRlcj1RLnZhbGlkYXRlU2VydmVy''@;'; put 'put ''TmFtZT1RLnZhbGlkYXRlQ29udGV4dE5hbWU9US52YWxpZGF0ZVN0cmVhbUNvbmZpZz1RLnZhbGlkYXRlRGVwbG95Q29uZmlnPVEudmFsaWRhdGVKb2JDb25maWc9US52YWxpZGF0ZVRlc3RDb25maWc9US52YWxpZGF0ZVNlcnZpY2VDb25maWc9US52YWxpZGF0ZUJ1aWxkQ29uZmlnPVEudmFs''@;'; put 'put ''aWRhdGVBdXRoQ29uZmlnU2FzOT1RLnZhbGlkYXRlQXV0aENvbmZpZz1RLnZhbGlkYXRlRG9jQ29uZmlnPVEudmFsaWRhdGVBcHBMb2M9US52YWxpZGF0ZUh0dHBzQWdlbnRPcHRpb25zPVEudmFsaWRhdGVTZXJ2ZXJVcmw9US52YWxpZGF0ZVRhcmdldE5hbWU9US52YWxpZGF0ZVNlcnZlclR5''@;'; put 'put ''cGU9dm9pZCAwO3ZhciBhZT1yZShqKDQ4MSkpLFk9aigzOTAwKTtRLnZhbGlkYXRlU2VydmVyVHlwZT1mdW5jdGlvbihXKXtpZighVyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2VydmVyIHR5cGU6IGBzZXJ2ZXJUeXBlYCBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuIik7aWYoVyE9''@;'; put 'put ''PVkuU2VydmVyVHlwZS5TYXM5JiZXIT09WS5TZXJ2ZXJUeXBlLlNhc1ZpeWEmJlchPT1ZLlNlcnZlclR5cGUuU2FzanMpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNlcnZlciB0eXBlOiBTdXBwb3J0ZWQgdmFsdWVzIGZvciAgYHNlcnZlclR5cGVgIGFyZSAiLmNvbmNhdChZLlNlcnZlclR5''@;'; put 'put ''cGUuU2FzVml5YSwiLCAiKS5jb25jYXQoWS5TZXJ2ZXJUeXBlLlNhczksIiBhbmQgIikuY29uY2F0KFkuU2VydmVyVHlwZS5TYXNqcywiLiIpKTtyZXR1cm4gV30sUS52YWxpZGF0ZVRhcmdldE5hbWU9ZnVuY3Rpb24oVyl7aWYoIVcpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHRhcmdldCBu''@;'; put 'put ''YW1lOiBgbmFtZWAgY2Fubm90IGJlIGVtcHR5LCBudWxsIG9yIHVuZGVmaW5lZC4iKTtpZihXLnRyaW0oKS5pbmNsdWRlcygiICIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB0YXJnZXQgbmFtZTogYG5hbWVgIGNhbm5vdCBpbmNsdWRlIHNwYWNlcy4iKTtpZighL15bYS16QS1aMC05XC1d''@;'; put 'put ''KyQvaS50ZXN0KFcpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB0YXJnZXQgbmFtZTogYG5hbWVgIGNhbiBvbmx5IGNvbnRhaW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIGRhc2hlcy4iKTtyZXR1cm4gV30sUS52YWxpZGF0ZVNlcnZlclVybD1mdW5jdGlvbihXKXtpZihudWxsPT1X''@;'; put 'put ''JiYoVz0iIiksIiIhPT1XJiYhYWUuZGVmYXVsdC5pc0h0dHBVcmkoVykmJiFhZS5kZWZhdWx0LmlzSHR0cHNVcmkoVykpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNlcnZlciBVUkw6IGBzZXJ2ZXJVcmxgIHNob3VsZCBlaXRoZXIgYmUgYW4gZW1wdHkgc3RyaW5nIG9yIGEgdmFsaWQgVVJM''@;'; put 'put ''IG9mIHRoZSBmb3JtIGh0dHAocyk6Ly95b3VyLXNlcnZlci5jb20oOnBvcnQpLiIpO3JldHVybiBXfSxRLnZhbGlkYXRlSHR0cHNBZ2VudE9wdGlvbnM9ZnVuY3Rpb24oVyl7aWYoVyl7aWYoIm9iamVjdCIhPXR5cGVvZiBXKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB2YWx1ZTogYGh0dHBz''@;'; put 'put ''QWdlbnRPcHRpb25zYCBzaG91bGQgZWl0aGVyIGJlIGFuIGVtcHR5IG9yIGFuIG9iamVjdCBvZiBgSHR0cHNBZ2VudE9wdGlvbnNgIik7aWYobnVsbD09Vy5hbGxvd0luc2VjdXJlUmVxdWVzdHMpVy5hbGxvd0luc2VjdXJlUmVxdWVzdHM9ITE7ZWxzZSBpZigiYm9vbGVhbiIhPXR5cGVvZiBX''@;'; put 'put ''LmFsbG93SW5zZWN1cmVSZXF1ZXN0cyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdmFsdWU6IGBodHRwc0FnZW50T3B0aW9ucy5hbGxvd0luc2VjdXJlUmVxdWVzdHNgIHNob3VsZCBlaXRoZXIgYmUgYW4gZW1wdHkgb3IgYSBib29sZWFuIik7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBXLmNh''@;'; put 'put ''UGF0aCYmKFcuY2FQYXRoPXZvaWQgMCksInN0cmluZyIhPXR5cGVvZiBXLmtleVBhdGgmJihXLmtleVBhdGg9dm9pZCAwKSwic3RyaW5nIiE9dHlwZW9mIFcuY2VydFBhdGgmJihXLmNlcnRQYXRoPXZvaWQgMCksV319LFEudmFsaWRhdGVBcHBMb2M9ZnVuY3Rpb24oVyl7aWYoIVcpdGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCJJbnZhbGlkIGFwcCBsb2NhdGlvbjogYGFwcExvY2AgY2Fubm90IGJlIGVtcHR5LCBudWxsIG9yIHVuZGVmaW5lZC4iKTtpZighVy5zdGFydHNXaXRoKCIvIikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFwcCBsb2NhdGlvbjogYGFwcExvY2AgbXVzdCBzdGFydCB3aXRo''@;'; put 'put ''IGEgYC9gLiIpO3JldHVybiBXfSxRLnZhbGlkYXRlRG9jQ29uZmlnPWZ1bmN0aW9uKFcpe2lmKFd8fChXPXt9KSwiYm9vbGVhbiIhPXR5cGVvZiBXLmRpc3BsYXlNYWNyb0NvcmUmJihXLmRpc3BsYXlNYWNyb0NvcmU9dm9pZCAwKSwiYm9vbGVhbiIhPXR5cGVvZiBXLmVuYWJsZUxpbmVhZ2Um''@;'; put 'put ''JihXLmVuYWJsZUxpbmVhZ2U9dm9pZCAwKSwic3RyaW5nIiE9dHlwZW9mIFcub3V0RGlyZWN0b3J5JiYoVy5vdXREaXJlY3Rvcnk9dm9pZCAwKSwic3RyaW5nIj09dHlwZW9mIFcuZGF0YUNvbnRyb2xsZXJVcmwpe2lmKCIiIT09Vy5kYXRhQ29udHJvbGxlclVybCYmIWFlLmRlZmF1bHQuaXNI''@;'; put 'put ''dHRwVXJpKFcuZGF0YUNvbnRyb2xsZXJVcmwpJiYhYWUuZGVmYXVsdC5pc0h0dHBzVXJpKFcuZGF0YUNvbnRyb2xsZXJVcmwpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBEYXRhIENvbnRyb2xsZXIgVXJsOiBgZGF0YUNvbnRyb2xsZXJVcmxgIHNob3VsZCBlaXRoZXIgYmUgYW4gZW1wdHkg''@;'; put 'put ''c3RyaW5nIG9yIGEgdmFsaWQgVVJMIG9mIHRoZSBmb3JtIGh0dHAocyk6Ly95b3VyLXNlcnZlci5jb20oOnBvcnQpLiIpfWVsc2UgVy5kYXRhQ29udHJvbGxlclVybD12b2lkIDA7cmV0dXJuIFd9LFEudmFsaWRhdGVBdXRoQ29uZmlnPWZ1bmN0aW9uKFcpe2lmKCFXKXRocm93IG5ldyBFcnJv''@;'; put 'put ''cigiSW52YWxpZCBhdXRoIGNvbmZpZzogSlNPTiBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuIik7cmV0dXJuIFd9LFEudmFsaWRhdGVBdXRoQ29uZmlnU2FzOT1mdW5jdGlvbihXKXtpZighVyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXV0aCBjb25maWcgZm9yIHNhczk6IEpTT04g''@;'; put 'put ''Y2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO2lmKCFXLnVzZXJOYW1lfHwhVy5wYXNzd29yZCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXV0aCBjb25maWcgZm9yIHNhczk6IHVzZXJOYW1lIGFuZCBwYXNzd29yZCBjYW4gbm90IGJlIGVtcHR5Iik7cmV0dXJuIFd9LFEudmFsaWRh''@;'; put 'put ''dGVCdWlsZENvbmZpZz1mdW5jdGlvbihXLE4pe2lmKCFXKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBidWlsZCBjb25maWc6IEpTT04gY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVybiBXLmJ1aWxkUmVzdWx0c0ZvbGRlcnx8KFcuYnVpbGRSZXN1bHRzRm9sZGVyPSJzYXNq''@;'; put 'put ''c3Jlc3VsdHMiKSxXLmJ1aWxkT3V0cHV0Rm9sZGVyfHwoVy5idWlsZE91dHB1dEZvbGRlcj0ic2FzanNidWlsZCIpLFcuYnVpbGRPdXRwdXRGaWxlTmFtZXx8KFcuYnVpbGRPdXRwdXRGaWxlTmFtZT0iIi5jb25jYXQoTiwiLnNhcyIpKSxXLmluaXRQcm9ncmFtfHwoVy5pbml0UHJvZ3JhbT0i''@;'; put 'put ''IiksVy50ZXJtUHJvZ3JhbXx8KFcudGVybVByb2dyYW09IiIpLFcubWFjcm9WYXJzfHwoVy5tYWNyb1ZhcnM9e30pLFd9LFEudmFsaWRhdGVTZXJ2aWNlQ29uZmlnPWZ1bmN0aW9uKFcpe2lmKCFXKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzZXJ2aWNlIGNvbmZpZzogSlNPTiBjYW5ub3Qg''@;'; put 'put ''YmUgbnVsbCBvciB1bmRlZmluZWQuIik7cmV0dXJuIFcuaW5pdFByb2dyYW18fChXLmluaXRQcm9ncmFtPSIiKSxXLnRlcm1Qcm9ncmFtfHwoVy50ZXJtUHJvZ3JhbT0iIiksVy5zZXJ2aWNlRm9sZGVyc3x8KFcuc2VydmljZUZvbGRlcnM9W10pLFcubWFjcm9WYXJzfHwoVy5tYWNyb1ZhcnM9''@;'; put 'put ''e30pLFd9LFEudmFsaWRhdGVUZXN0Q29uZmlnPWZ1bmN0aW9uKFcpe2lmKCFXKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB0ZXN0IGNvbmZpZzogSlNPTiBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuIik7cmV0dXJuIFcuaW5pdFByb2dyYW18fChXLmluaXRQcm9ncmFtPSIiKSxXLnRl''@;'; put 'put ''cm1Qcm9ncmFtfHwoVy50ZXJtUHJvZ3JhbT0iIiksVy5tYWNyb1ZhcnN8fChXLm1hY3JvVmFycz17fSksVy50ZXN0U2V0VXB8fChXLnRlc3RTZXRVcD0iIiksVy50ZXN0VGVhckRvd258fChXLnRlc3RUZWFyRG93bj0iIiksV30sUS52YWxpZGF0ZUpvYkNvbmZpZz1mdW5jdGlvbihXKXtpZigh''@;'; put 'put ''Vyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgam9iIGNvbmZpZzogSlNPTiBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuIik7cmV0dXJuIFcuaW5pdFByb2dyYW18fChXLmluaXRQcm9ncmFtPSIiKSxXLnRlcm1Qcm9ncmFtfHwoVy50ZXJtUHJvZ3JhbT0iIiksVy5qb2JGb2xkZXJzfHwo''@;'; put 'put ''Vy5qb2JGb2xkZXJzPVtdKSxXLm1hY3JvVmFyc3x8KFcubWFjcm9WYXJzPXt9KSxXfSxRLnZhbGlkYXRlRGVwbG95Q29uZmlnPWZ1bmN0aW9uKFcpe2lmKCFXKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBkZXBsb3kgY29uZmlnOiBKU09OIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4i''@;'; put 'put ''KTtyZXR1cm4gVy5kZXBsb3lTZXJ2aWNlUGFjaz0hIVcuZGVwbG95U2VydmljZVBhY2ssVy5kZXBsb3lTY3JpcHRzfHwoVy5kZXBsb3lTY3JpcHRzPVtdKSxXfSxRLnZhbGlkYXRlU3RyZWFtQ29uZmlnPWZ1bmN0aW9uKFcpe2lmKCFXKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJlYW0g''@;'; put 'put ''Y29uZmlnOiBKU09OIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4iKTtpZighMCE9PVcuc3RyZWFtV2ViJiYhMSE9PVcuc3RyZWFtV2ViKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJlYW0gY29uZmlnOiBgc3RyZWFtV2ViYCBjYW5ub3QgYmUgYSBub24tYm9vbGVhbiB2YWx1ZS4i''@;'; put 'put ''KTtpZihXLnN0cmVhbVdlYiYmIVcuc3RyZWFtV2ViRm9sZGVyKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJlYW0gY29uZmlnOiBgc3RyZWFtV2ViRm9sZGVyYCBjYW5ub3QgYmUgZW1wdHksIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gYHN0cmVhbVdlYmAgaXMgdHJ1ZS4iKTtpZihXLnN0''@;'; put 'put ''cmVhbVdlYiYmIVcud2ViU291cmNlUGF0aCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyZWFtIGNvbmZpZzogYHdlYlNvdXJjZVBhdGhgIGNhbm5vdCBiZSBlbXB0eSwgbnVsbCBvciB1bmRlZmluZWQuIik7cmV0dXJuIFcuc3RyZWFtTG9nbyYmInN0cmluZyIhPXR5cGVvZiBXLnN0cmVh''@;'; put 'put ''bUxvZ28mJihXLnN0cmVhbUxvZ289dm9pZCAwKSxXLmFzc2V0UGF0aHN8fChXLmFzc2V0UGF0aHM9W10pLFcuc3RyZWFtU2VydmljZU5hbWV8fChXLnN0cmVhbVNlcnZpY2VOYW1lPSJjbGlja21lIiksV30sUS52YWxpZGF0ZUNvbnRleHROYW1lPWZ1bmN0aW9uKFcsTil7cmV0dXJuIE4hPT1Z''@;'; put 'put ''LlNlcnZlclR5cGUuU2FzVml5YXx8Vz9XOiJTQVMgSm9iIEV4ZWN1dGlvbiBjb21wdXRlIGNvbnRleHQifSxRLnZhbGlkYXRlU2VydmVyTmFtZT1mdW5jdGlvbihXLE4pe3JldHVybiBOIT09WS5TZXJ2ZXJUeXBlLlNhczl8fFc/VzoiU0FTQXBwIn0sUS52YWxpZGF0ZVN5bmNGb2xkZXI9ZnVu''@;'; put 'put ''Y3Rpb24oVyl7aWYoInN0cmluZyI9PXR5cGVvZiBXJiZXKXJldHVybiBXfSxRLnZhbGlkYXRlUmVwb3NpdG9yeU5hbWU9ZnVuY3Rpb24oVyxOKXtyZXR1cm4gTiE9PVkuU2VydmVyVHlwZS5TYXM5fHxXP1c6IkZvdW5kYXRpb24ifX0sMjkyNzpmdW5jdGlvbihVLFEsail7InVzZSBzdHJpY3Qi''@;'; put 'put ''O3ZhciByZT1qKDg3NjQpLkJ1ZmZlcixhZT10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oTil7cmV0dXJuIE4mJk4uX19lc01vZHVsZT9OOntkZWZhdWx0Ok59fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5kZWNvZGVGcm9t''@;'; put 'put ''QmFzZTY0PVEuZW5jb2RlVG9CYXNlNjQ9dm9pZCAwO3ZhciBZPWFlKGooNTgzNSkpLFc9IntzYXNqc19lbmNvZGVkfSI7US5lbmNvZGVUb0Jhc2U2ND1mdW5jdGlvbihOKXt2YXIgdGU9WS5kZWZhdWx0LnJhbmRvbUJ5dGVzKDEwMCkudG9TdHJpbmcoImhleCIpLEs9cmUuZnJvbSh0ZStOKS50''@;'; put 'put ''b1N0cmluZygiYmFzZTY0Iik7cmV0dXJuIFcrS30sUS5kZWNvZGVGcm9tQmFzZTY0PWZ1bmN0aW9uKE4pe3JldHVybiBOLnN0YXJ0c1dpdGgoVyk/KE49Ti5yZXBsYWNlKC9ee3Nhc2pzX2VuY29kZWR9LywiIikscmUuZnJvbShOLCJiYXNlNjQiKS50b1N0cmluZygpLnN1YnN0cmluZygyMDAp''@;'; put 'put ''KTpOfX0sNTgxOihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmJ5dGVzVG9TaXplPXZvaWQgMCxRLmJ5dGVzVG9TaXplPWZ1bmN0aW9uKGoscmUsYWUpe2lmKHZvaWQgMD09PXJlJiYocmU9MSksdm9pZCAwPT09''@;'; put 'put ''YWUmJihhZT0xMDk5NTExNjI3Nzc2KSwwPT09ailyZXR1cm4iMCBCIjtqPWo+YWU/YWU6ajt2YXIgWT1yZTwwPzA6cmUsVz1NYXRoLmZsb29yKE1hdGgubG9nKGopL01hdGgubG9nKDEwMjQpKTtyZXR1cm4oai9NYXRoLnBvdygxMDI0LFcpKS50b0ZpeGVkKFkpKyIgIitbIkIiLCJLQiIsIk1C''@;'; put 'put ''IiwiR0IiLCJUQiJdW1ddfX0sODY1MzooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5jaHVuaz12b2lkIDAsUS5jaHVuaz1mdW5jdGlvbihqLHJlKXtyZXR1cm4gdm9pZCAwPT09cmUmJihyZT0yMjApLGoubGVu''@;'; put 'put ''Z3RoPD1yZT9bal06KGoubWF0Y2gobmV3IFJlZ0V4cCgiLnsxLCIrcmUrIn0iLCJnIikpfHxbXSkuZmlsdGVyKGZ1bmN0aW9uKGFlKXtyZXR1cm4hIWFlfSl9fSw2NDU3OmZ1bmN0aW9uKFUsUSl7InVzZSBzdHJpY3QiO3ZhciBqPXRoaXMmJnRoaXMuX19yZWFkfHxmdW5jdGlvbihhZSxZKXt2''@;'; put 'put ''YXIgVz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZhZVtTeW1ib2wuaXRlcmF0b3JdO2lmKCFXKXJldHVybiBhZTt2YXIgTix0ZSxLPVcuY2FsbChhZSksSj1bXTt0cnl7Zm9yKDsodm9pZCAwPT09WXx8WS0tID4wKSYmIShOPUsubmV4dCgpKS5kb25lOylKLnB1c2goTi52YWx1ZSl9Y2F0''@;'; put 'put ''Y2goc2Upe3RlPXtlcnJvcjpzZX19ZmluYWxseXt0cnl7TiYmIU4uZG9uZSYmKFc9Sy5yZXR1cm4pJiZXLmNhbGwoSyl9ZmluYWxseXtpZih0ZSl0aHJvdyB0ZS5lcnJvcn19cmV0dXJuIEp9LHJlPXRoaXMmJnRoaXMuX19zcHJlYWRBcnJheXx8ZnVuY3Rpb24oYWUsWSxXKXtpZihXfHwyPT09''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIE4sdGU9MCxLPVkubGVuZ3RoO3RlPEs7dGUrKykhTiYmdGUgaW4gWXx8KE58fChOPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFksMCx0ZSkpLE5bdGVdPVlbdGVdKTtyZXR1cm4gYWUuY29uY2F0KE58fEFycmF5LnByb3RvdHlwZS5zbGljZS5j''@;'; put 'put ''YWxsKFkpKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuZGlmZj12b2lkIDAsUS5kaWZmPWZ1bmN0aW9uKGFlLFkpe3ZhciBXPWFlLmZpbHRlcihmdW5jdGlvbih0ZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0ZT8hSlNPTi5zdHJpbmdpZnko''@;'; put 'put ''WSkuaW5jbHVkZXMoSlNPTi5zdHJpbmdpZnkodGUpKTohWS5pbmNsdWRlcyh0ZSl9KSxOPVkuZmlsdGVyKGZ1bmN0aW9uKHRlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHRlPyFKU09OLnN0cmluZ2lmeShhZSkuaW5jbHVkZXMoSlNPTi5zdHJpbmdpZnkodGUpKTohYWUuaW5jbHVkZXModGUp''@;'; put 'put ''fSk7cmV0dXJuIHJlKHJlKFtdLGooVyksITEpLGooTiksITEpfX0sMTUyOTooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5nZXRFeGVjdXRvclBhdGg9dm9pZCAwO3ZhciBqPXtTQVNWSVlBOiIvU0FTSm9iRXhl''@;'; put 'put ''Y3V0aW9uIixTQVM5OiIvU0FTU3RvcmVkUHJvY2Vzcy9kbyJ9O1EuZ2V0RXhlY3V0b3JQYXRoPWZ1bmN0aW9uKHJlKXtyZXR1cm4gcmU/KHJlPXJlLnRvVXBwZXJDYXNlKCksaltyZV18fCIiKToiIn19LDMzMTY6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''USwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5nZXRUcmVlRXhhbXBsZT1RLmlzRmlsZVRyZWU9dm9pZCAwO3ZhciByZT1qKDM5MDApO1EuaXNGaWxlVHJlZT1mdW5jdGlvbihOKXtyZXR1cm4gTiYmTi5tZW1iZXJzJiZBcnJheS5pc0FycmF5KE4ubWVtYmVycykmJjA9PT1OLm1lbWJlcnMu''@;'; put 'put ''ZmlsdGVyKGZ1bmN0aW9uKHRlKXtyZXR1cm4hYWUodGUpJiYhWSh0ZSkmJiFXKHRlKX0pLmxlbmd0aH07dmFyIGFlPWZ1bmN0aW9uKE4pe3JldHVybiBOJiYic3RyaW5nIj09dHlwZW9mIE4ubmFtZSYmTi50eXBlPT09cmUuTWVtYmVyVHlwZS5zZXJ2aWNlJiYic3RyaW5nIj09dHlwZW9mIE4u''@;'; put 'put ''Y29kZX0sWT1mdW5jdGlvbihOKXtyZXR1cm4gTiYmInN0cmluZyI9PXR5cGVvZiBOLm5hbWUmJk4udHlwZT09PXJlLk1lbWJlclR5cGUuZmlsZSYmInN0cmluZyI9PXR5cGVvZiBOLmNvZGV9LFc9ZnVuY3Rpb24oTil7cmV0dXJuIE4mJiJzdHJpbmciPT10eXBlb2YgTi5uYW1lJiZOLnR5cGU9''@;'; put 'put ''PT1yZS5NZW1iZXJUeXBlLmZvbGRlciYmTi5tZW1iZXJzJiZBcnJheS5pc0FycmF5KE4ubWVtYmVycykmJjA9PT1OLm1lbWJlcnMuZmlsdGVyKGZ1bmN0aW9uKHRlKXtyZXR1cm4hYWUodGUpJiYhWSh0ZSkmJiFXKHRlKX0pLmxlbmd0aH07US5nZXRUcmVlRXhhbXBsZT1mdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybnttZW1iZXJzOlt7bmFtZToiam9icyIsdHlwZTpyZS5NZW1iZXJUeXBlLmZvbGRlcixtZW1iZXJzOlt7bmFtZToiZXh0cmFjdCIsdHlwZTpyZS5NZW1iZXJUeXBlLmZvbGRlcixtZW1iZXJzOlt7bmFtZToibWFrZWRhdGExIix0eXBlOnJlLk1lbWJlclR5cGUuc2VydmljZSxjb2RlOiIl''@;'; put 'put ''cHV0IEhlbGxvIFdvcmxkITsifV19XX1dfX19LDYyNjY6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKG9lLGNlLGRlLHZlKXt2b2lkIDA9PT12ZSYmKHZlPWRlKSxPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkob2UsdmUse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNlW2RlXX19KX06ZnVuY3Rpb24ob2UsY2UsZGUsdmUpe3ZvaWQgMD09PXZlJiYodmU9ZGUpLG9lW3ZlXT1jZVtkZV19KSxhZT10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24ob2Us''@;'; put 'put ''Y2Upe2Zvcih2YXIgZGUgaW4gb2UpImRlZmF1bHQiPT09ZGV8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjZSxkZSl8fHJlKGNlLG9lLGRlKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuY2h1bms9US5kaWZmPVEuYnl0''@;'; put 'put ''ZXNUb1NpemU9US5nZXRFeGVjdXRvclBhdGg9US5kZWNvZGVGcm9tQmFzZTY0PVEuZW5jb2RlVG9CYXNlNjQ9US51cmxPcmlnaW49US5lc2NhcGVXaW5TbGFzaGVzPVEuaXNMaW51eD1RLmlzV2luZG93cz1RLnVuaXFBcnJheT1RLmFzeW5jRm9yRWFjaD1RLnV1aWR2ND12b2lkIDA7dmFyIFk9''@;'; put 'put ''aigxMTMxKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwidXVpZHY0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWS51dWlkdjR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImFzeW5jRm9yRWFjaCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IFkuYXN5bmNGb3JFYWNofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJ1bmlxQXJyYXkiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLnVuaXFBcnJheX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiaXNXaW5kb3dzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gWS5pc1dpbmRvd3N9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImlzTGludXgiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLmlzTGludXh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImVzY2FwZVdpblNsYXNoZXMiLHtlbnVtZXJh''@;'; put 'put ''YmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBZLmVzY2FwZVdpblNsYXNoZXN9fSksYWUoaigzMzE2KSxRKTt2YXIgVz1qKDk2NTIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJ1cmxPcmlnaW4iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBXLnVybE9yaWdpbn19''@;'; put 'put ''KTt2YXIgTj1qKDI5MjcpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJlbmNvZGVUb0Jhc2U2NCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE4uZW5jb2RlVG9CYXNlNjR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImRlY29kZUZyb21CYXNlNjQiLHtlbnVtZXJh''@;'; put 'put ''YmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBOLmRlY29kZUZyb21CYXNlNjR9fSk7dmFyIHRlPWooMTUyOSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImdldEV4ZWN1dG9yUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRlLmdldEV4ZWN1dG9yUGF0aH19''@;'; put 'put ''KTt2YXIgSz1qKDU4MSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsImJ5dGVzVG9TaXplIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSy5ieXRlc1RvU2l6ZX19KTt2YXIgSj1qKDY0NTcpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJkaWZmIix7ZW51bWVyYWJsZToh''@;'; put 'put ''MCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSi5kaWZmfX0pO3ZhciBzZT1qKDg2NTMpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJjaHVuayIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHNlLmNodW5rfX0pfSw5NjUyOihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLnVybE9yaWdpbj12b2lkIDAsUS51cmxPcmlnaW49ZnVuY3Rpb24oail7aWYoIiI9PT1qKXJldHVybiBqO3ZhciByZTt0cnl7cmU9bmV3IFVSTChqKS5vcmlnaW59Y2F0Y2goYWUpe3Rocm93IG5ldyBFcnJvcigiSW52''@;'; put 'put ''YWxpZCBVUkwuIil9cmV0dXJuIHJlfX0sMTEzMTpmdW5jdGlvbihVLFEsail7InVzZSBzdHJpY3QiO3ZhciByZT1qKDQxNTUpLGFlPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihXLE4sdGUsSyl7cmV0dXJuIG5ldyh0ZXx8KHRlPVByb21pc2UpKShmdW5jdGlvbihKLHNlKXtmdW5j''@;'; put 'put ''dGlvbiBvZSh2ZSl7dHJ5e2RlKEsubmV4dCh2ZSkpfWNhdGNoKEFlKXtzZShBZSl9fWZ1bmN0aW9uIGNlKHZlKXt0cnl7ZGUoSy50aHJvdyh2ZSkpfWNhdGNoKEFlKXtzZShBZSl9fWZ1bmN0aW9uIGRlKHZlKXt2YXIgQWU7dmUuZG9uZT9KKHZlLnZhbHVlKTooQWU9dmUudmFsdWUsQWUgaW5z''@;'; put 'put ''dGFuY2VvZiB0ZT9BZTpuZXcgdGUoZnVuY3Rpb24oa2Upe2tlKEFlKX0pKS50aGVuKG9lLGNlKX1kZSgoSz1LLmFwcGx5KFcsTnx8W10pKS5uZXh0KCkpfSl9LFk9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oVyxOKXt2YXIgdGUsSyxKLHNlLG9lPXtsYWJlbDowLHNlbnQ6ZnVu''@;'; put 'put ''Y3Rpb24oKXtpZigxJkpbMF0pdGhyb3cgSlsxXTtyZXR1cm4gSlsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBzZT17bmV4dDpjZSgwKSx0aHJvdzpjZSgxKSxyZXR1cm46Y2UoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihzZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIHRoaXN9KSxzZTtmdW5jdGlvbiBjZShkZSl7cmV0dXJuIGZ1bmN0aW9uKHZlKXtyZXR1cm4gZnVuY3Rpb24oQWUpe2lmKHRlKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO29lOyl0cnl7aWYodGU9MSxLJiYoSj0yJkFl''@;'; put 'put ''WzBdP0sucmV0dXJuOkFlWzBdP0sudGhyb3d8fCgoSj1LLnJldHVybikmJkouY2FsbChLKSwwKTpLLm5leHQpJiYhKEo9Si5jYWxsKEssQWVbMV0pKS5kb25lKXJldHVybiBKO3N3aXRjaChLPTAsSiYmKEFlPVsyJkFlWzBdLEoudmFsdWVdKSxBZVswXSl7Y2FzZSAwOmNhc2UgMTpKPUFlO2Jy''@;'; put 'put ''ZWFrO2Nhc2UgNDpyZXR1cm4gb2UubGFiZWwrKyx7dmFsdWU6QWVbMV0sZG9uZTohMX07Y2FzZSA1Om9lLmxhYmVsKyssSz1BZVsxXSxBZT1bMF07Y29udGludWU7Y2FzZSA3OkFlPW9lLm9wcy5wb3AoKSxvZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoSj0oSj1vZS50cnlz''@;'; put 'put ''KS5sZW5ndGg+MCYmSltKLmxlbmd0aC0xXSl8fDYhPT1BZVswXSYmMiE9PUFlWzBdKSl7b2U9MDtjb250aW51ZX1pZigzPT09QWVbMF0mJighSnx8QWVbMV0+SlswXSYmQWVbMV08SlszXSkpe29lLmxhYmVsPUFlWzFdO2JyZWFrfWlmKDY9PT1BZVswXSYmb2UubGFiZWw8SlsxXSl7b2UubGFi''@;'; put 'put ''ZWw9SlsxXSxKPUFlO2JyZWFrfWlmKEomJm9lLmxhYmVsPEpbMl0pe29lLmxhYmVsPUpbMl0sb2Uub3BzLnB1c2goQWUpO2JyZWFrfUpbMl0mJm9lLm9wcy5wb3AoKSxvZS50cnlzLnBvcCgpO2NvbnRpbnVlfUFlPU4uY2FsbChXLG9lKX1jYXRjaChrZSl7QWU9WzYsa2VdLEs9MH1maW5hbGx5''@;'; put 'put ''e3RlPUo9MH1pZig1JkFlWzBdKXRocm93IEFlWzFdO3JldHVybnt2YWx1ZTpBZVswXT9BZVsxXTp2b2lkIDAsZG9uZTohMH19KFtkZSx2ZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmVzY2FwZVdpblNsYXNoZXM9US5pc0xpbnV4PVEu''@;'; put 'put ''aXNXaW5kb3dzPVEudW5pcUFycmF5PVEudXVpZHY0PVEuYXN5bmNGb3JFYWNoPXZvaWQgMCxRLmFzeW5jRm9yRWFjaD1mdW5jdGlvbihXLE4pe3JldHVybiBhZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdGU7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihLKXtzd2l0Y2goSy5s''@;'; put 'put ''YWJlbCl7Y2FzZSAwOnRlPTAsSy5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gdGU8Vy5sZW5ndGg/WzQsTihXW3RlXSx0ZSxXKV06WzMsNF07Y2FzZSAyOksuc2VudCgpLEsubGFiZWw9MztjYXNlIDM6cmV0dXJuIHRlKyssWzMsMV07Y2FzZSA0OnJldHVyblsyXX19KX0pfSxRLnV1aWR2ND1mdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiJ4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgiLnJlcGxhY2UoL1t4eV0vZyxmdW5jdGlvbihXKXt2YXIgTj0xNipNYXRoLnJhbmRvbSgpfDA7cmV0dXJuKCJ4Ij09Vz9OOjMmTnw4KS50b1N0cmluZygxNil9KX0sUS51bmlxQXJyYXk9ZnVuY3Rpb24o''@;'; put 'put ''Vyl7cmV0dXJuIEFycmF5LmZyb20obmV3IFNldChXKSl9LFEuaXNXaW5kb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIndpbjMyIj09PXJlLnBsYXRmb3JtfSxRLmlzTGludXg9ZnVuY3Rpb24oKXtyZXR1cm4ibGludXgiPT09cmUucGxhdGZvcm19LFEuZXNjYXBlV2luU2xhc2hlcz1mdW5jdGlvbihX''@;'; put 'put ''KXtyZXR1cm4oMCxRLmlzV2luZG93cykoKT9XLnJlcGxhY2UoL1xcL2csIlxcXFwiKTpXfX0sOTgwOTooVSxRLGopPT57InVzZSBzdHJpY3QiO2NvbnN0IHJlPVE7cmUuYmlnbnVtPWooNDU5MCkscmUuZGVmaW5lPWooMjUwMCkuZGVmaW5lLHJlLmJhc2U9aigxOTc5KSxyZS5jb25zdGFudHM9''@;'; put 'put ''aig2ODI2KSxyZS5kZWNvZGVycz1qKDgzMDcpLHJlLmVuY29kZXJzPWooNjU3OSl9LDI1MDA6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCByZT1qKDY1NzkpLGFlPWooODMwNyksWT1qKDU3MTcpO2Z1bmN0aW9uIFcoTix0ZSl7dGhpcy5uYW1lPU4sdGhpcy5ib2R5PXRlLHRoaXMuZGVj''@;'; put 'put ''b2RlcnM9e30sdGhpcy5lbmNvZGVycz17fX1RLmRlZmluZT1mdW5jdGlvbihOLHRlKXtyZXR1cm4gbmV3IFcoTix0ZSl9LFcucHJvdG90eXBlLl9jcmVhdGVOYW1lZD1mdW5jdGlvbihOKXtjb25zdCB0ZT10aGlzLm5hbWU7ZnVuY3Rpb24gSyhKKXt0aGlzLl9pbml0TmFtZWQoSix0ZSl9cmV0''@;'; put 'put ''dXJuIFkoSyxOKSxLLnByb3RvdHlwZS5faW5pdE5hbWVkPWZ1bmN0aW9uKEosc2Upe04uY2FsbCh0aGlzLEosc2UpfSxuZXcgSyh0aGlzKX0sVy5wcm90b3R5cGUuX2dldERlY29kZXI9ZnVuY3Rpb24oTil7cmV0dXJuIHRoaXMuZGVjb2RlcnMuaGFzT3duUHJvcGVydHkoTj1OfHwiZGVyIil8''@;'; put 'put ''fCh0aGlzLmRlY29kZXJzW05dPXRoaXMuX2NyZWF0ZU5hbWVkKGFlW05dKSksdGhpcy5kZWNvZGVyc1tOXX0sVy5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKE4sdGUsSyl7cmV0dXJuIHRoaXMuX2dldERlY29kZXIodGUpLmRlY29kZShOLEspfSxXLnByb3RvdHlwZS5fZ2V0RW5jb2Rlcj1m''@;'; put 'put ''dW5jdGlvbihOKXtyZXR1cm4gdGhpcy5lbmNvZGVycy5oYXNPd25Qcm9wZXJ0eShOPU58fCJkZXIiKXx8KHRoaXMuZW5jb2RlcnNbTl09dGhpcy5fY3JlYXRlTmFtZWQocmVbTl0pKSx0aGlzLmVuY29kZXJzW05dfSxXLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24oTix0ZSxLKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5fZ2V0RW5jb2Rlcih0ZSkuZW5jb2RlKE4sSyl9fSw2NjI1OihVLFEsaik9PnsidXNlIHN0cmljdCI7Y29uc3QgcmU9aig1NzE3KSxhZT1qKDg0NjUpLmIsWT1qKDIzOTkpLkJ1ZmZlcjtmdW5jdGlvbiBXKHRlLEspe2FlLmNhbGwodGhpcyxLKSxZLmlzQnVmZmVyKHRlKT8odGhpcy5i''@;'; put 'put ''YXNlPXRlLHRoaXMub2Zmc2V0PTAsdGhpcy5sZW5ndGg9dGUubGVuZ3RoKTp0aGlzLmVycm9yKCJJbnB1dCBub3QgQnVmZmVyIil9ZnVuY3Rpb24gTih0ZSxLKXtpZihBcnJheS5pc0FycmF5KHRlKSl0aGlzLmxlbmd0aD0wLHRoaXMudmFsdWU9dGUubWFwKGZ1bmN0aW9uKEope3JldHVybiBO''@;'; put 'put ''LmlzRW5jb2RlckJ1ZmZlcihKKXx8KEo9bmV3IE4oSixLKSksdGhpcy5sZW5ndGgrPUoubGVuZ3RoLEp9LHRoaXMpO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiB0ZSl7aWYoISgwPD10ZSYmdGU8PTI1NSkpcmV0dXJuIEsuZXJyb3IoIm5vbi1ieXRlIEVuY29kZXJCdWZmZXIgdmFsdWUiKTt0''@;'; put 'put ''aGlzLnZhbHVlPXRlLHRoaXMubGVuZ3RoPTF9ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIHRlKXRoaXMudmFsdWU9dGUsdGhpcy5sZW5ndGg9WS5ieXRlTGVuZ3RoKHRlKTtlbHNle2lmKCFZLmlzQnVmZmVyKHRlKSlyZXR1cm4gSy5lcnJvcigiVW5zdXBwb3J0ZWQgdHlwZTogIit0eXBlb2Yg''@;'; put 'put ''dGUpO3RoaXMudmFsdWU9dGUsdGhpcy5sZW5ndGg9dGUubGVuZ3RofX1yZShXLGFlKSxRLkM9VyxXLmlzRGVjb2RlckJ1ZmZlcj1mdW5jdGlvbih0ZSl7cmV0dXJuIHRlIGluc3RhbmNlb2YgV3x8Im9iamVjdCI9PXR5cGVvZiB0ZSYmWS5pc0J1ZmZlcih0ZS5iYXNlKSYmIkRlY29kZXJCdWZm''@;'; put 'put ''ZXIiPT09dGUuY29uc3RydWN0b3IubmFtZSYmIm51bWJlciI9PXR5cGVvZiB0ZS5vZmZzZXQmJiJudW1iZXIiPT10eXBlb2YgdGUubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgdGUuc2F2ZSYmImZ1bmN0aW9uIj09dHlwZW9mIHRlLnJlc3RvcmUmJiJmdW5jdGlvbiI9PXR5cGVvZiB0ZS5p''@;'; put 'put ''c0VtcHR5JiYiZnVuY3Rpb24iPT10eXBlb2YgdGUucmVhZFVJbnQ4JiYiZnVuY3Rpb24iPT10eXBlb2YgdGUuc2tpcCYmImZ1bmN0aW9uIj09dHlwZW9mIHRlLnJhd30sVy5wcm90b3R5cGUuc2F2ZT1mdW5jdGlvbigpe3JldHVybntvZmZzZXQ6dGhpcy5vZmZzZXQscmVwb3J0ZXI6YWUucHJv''@;'; put 'put ''dG90eXBlLnNhdmUuY2FsbCh0aGlzKX19LFcucHJvdG90eXBlLnJlc3RvcmU9ZnVuY3Rpb24odGUpe2NvbnN0IEs9bmV3IFcodGhpcy5iYXNlKTtyZXR1cm4gSy5vZmZzZXQ9dGUub2Zmc2V0LEsubGVuZ3RoPXRoaXMub2Zmc2V0LHRoaXMub2Zmc2V0PXRlLm9mZnNldCxhZS5wcm90b3R5cGUu''@;'; put 'put ''cmVzdG9yZS5jYWxsKHRoaXMsdGUucmVwb3J0ZXIpLEt9LFcucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vZmZzZXQ9PT10aGlzLmxlbmd0aH0sVy5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKHRlKXtyZXR1cm4gdGhpcy5vZmZzZXQrMTw9dGhpcy5sZW5n''@;'; put 'put ''dGg/dGhpcy5iYXNlLnJlYWRVSW50OCh0aGlzLm9mZnNldCsrLCEwKTp0aGlzLmVycm9yKHRlfHwiRGVjb2RlckJ1ZmZlciBvdmVycnVuIil9LFcucHJvdG90eXBlLnNraXA9ZnVuY3Rpb24odGUsSyl7aWYoISh0aGlzLm9mZnNldCt0ZTw9dGhpcy5sZW5ndGgpKXJldHVybiB0aGlzLmVycm9y''@;'; put 'put ''KEt8fCJEZWNvZGVyQnVmZmVyIG92ZXJydW4iKTtjb25zdCBKPW5ldyBXKHRoaXMuYmFzZSk7cmV0dXJuIEouX3JlcG9ydGVyU3RhdGU9dGhpcy5fcmVwb3J0ZXJTdGF0ZSxKLm9mZnNldD10aGlzLm9mZnNldCxKLmxlbmd0aD10aGlzLm9mZnNldCt0ZSx0aGlzLm9mZnNldCs9dGUsSn0sVy5w''@;'; put 'put ''cm90b3R5cGUucmF3PWZ1bmN0aW9uKHRlKXtyZXR1cm4gdGhpcy5iYXNlLnNsaWNlKHRlP3RlLm9mZnNldDp0aGlzLm9mZnNldCx0aGlzLmxlbmd0aCl9LFEuUj1OLE4uaXNFbmNvZGVyQnVmZmVyPWZ1bmN0aW9uKHRlKXtyZXR1cm4gdGUgaW5zdGFuY2VvZiBOfHwib2JqZWN0Ij09dHlwZW9m''@;'; put 'put ''IHRlJiYiRW5jb2RlckJ1ZmZlciI9PT10ZS5jb25zdHJ1Y3Rvci5uYW1lJiYibnVtYmVyIj09dHlwZW9mIHRlLmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHRlLmpvaW59LE4ucHJvdG90eXBlLmpvaW49ZnVuY3Rpb24odGUsSyl7cmV0dXJuIHRlfHwodGU9WS5hbGxvYyh0aGlzLmxlbmd0''@;'; put 'put ''aCkpLEt8fChLPTApLDA9PT10aGlzLmxlbmd0aHx8KEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSk/dGhpcy52YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKEope0ouam9pbih0ZSxLKSxLKz1KLmxlbmd0aH0pOigibnVtYmVyIj09dHlwZW9mIHRoaXMudmFsdWU/dGVbS109dGhpcy52YWx1ZToic3Ry''@;'; put 'put ''aW5nIj09dHlwZW9mIHRoaXMudmFsdWU/dGUud3JpdGUodGhpcy52YWx1ZSxLKTpZLmlzQnVmZmVyKHRoaXMudmFsdWUpJiZ0aGlzLnZhbHVlLmNvcHkodGUsSyksSys9dGhpcy5sZW5ndGgpKSx0ZX19LDE5Nzk6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCByZT1RO3JlLlJlcG9ydGVy''@;'; put 'put ''PWooODQ2NSkuYixyZS5EZWNvZGVyQnVmZmVyPWooNjYyNSkuQyxyZS5FbmNvZGVyQnVmZmVyPWooNjYyNSkuUixyZS5Ob2RlPWooMTk0OSl9LDE5NDk6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCByZT1qKDg0NjUpLmIsYWU9aig2NjI1KS5SLFk9aig2NjI1KS5DLFc9aig5NzQ2KSxO''@;'; put 'put ''PVsic2VxIiwic2Vxb2YiLCJzZXQiLCJzZXRvZiIsIm9iamlkIiwiYm9vbCIsImdlbnRpbWUiLCJ1dGN0aW1lIiwibnVsbF8iLCJlbnVtIiwiaW50Iiwib2JqRGVzYyIsImJpdHN0ciIsImJtcHN0ciIsImNoYXJzdHIiLCJnZW5zdHIiLCJncmFwaHN0ciIsImlhNXN0ciIsImlzbzY0NnN0ciIs''@;'; put 'put ''Im51bXN0ciIsIm9jdHN0ciIsInByaW50c3RyIiwidDYxc3RyIiwidW5pc3RyIiwidXRmOHN0ciIsInZpZGVvc3RyIl0sdGU9WyJrZXkiLCJvYmoiLCJ1c2UiLCJvcHRpb25hbCIsImV4cGxpY2l0IiwiaW1wbGljaXQiLCJkZWYiLCJjaG9pY2UiLCJhbnkiLCJjb250YWlucyJdLmNvbmNhdChO''@;'; put 'put ''KTtmdW5jdGlvbiBLKHNlLG9lLGNlKXtjb25zdCBkZT17fTt0aGlzLl9iYXNlU3RhdGU9ZGUsZGUubmFtZT1jZSxkZS5lbmM9c2UsZGUucGFyZW50PW9lfHxudWxsLGRlLmNoaWxkcmVuPW51bGwsZGUudGFnPW51bGwsZGUuYXJncz1udWxsLGRlLnJldmVyc2VBcmdzPW51bGwsZGUuY2hvaWNl''@;'; put 'put ''PW51bGwsZGUub3B0aW9uYWw9ITEsZGUuYW55PSExLGRlLm9iaj0hMSxkZS51c2U9bnVsbCxkZS51c2VEZWNvZGVyPW51bGwsZGUua2V5PW51bGwsZGUuZGVmYXVsdD1udWxsLGRlLmV4cGxpY2l0PW51bGwsZGUuaW1wbGljaXQ9bnVsbCxkZS5jb250YWlucz1udWxsLGRlLnBhcmVudHx8KGRl''@;'; put 'put ''LmNoaWxkcmVuPVtdLHRoaXMuX3dyYXAoKSl9VS5leHBvcnRzPUs7Y29uc3QgSj1bImVuYyIsInBhcmVudCIsImNoaWxkcmVuIiwidGFnIiwiYXJncyIsInJldmVyc2VBcmdzIiwiY2hvaWNlIiwib3B0aW9uYWwiLCJhbnkiLCJvYmoiLCJ1c2UiLCJhbHRlcmVkVXNlIiwia2V5IiwiZGVmYXVs''@;'; put 'put ''dCIsImV4cGxpY2l0IiwiaW1wbGljaXQiLCJjb250YWlucyJdO0sucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7Y29uc3Qgc2U9dGhpcy5fYmFzZVN0YXRlLG9lPXt9O0ouZm9yRWFjaChmdW5jdGlvbihkZSl7b2VbZGVdPXNlW2RlXX0pO2NvbnN0IGNlPW5ldyB0aGlzLmNvbnN0cnVjdG9y''@;'; put 'put ''KG9lLnBhcmVudCk7cmV0dXJuIGNlLl9iYXNlU3RhdGU9b2UsY2V9LEsucHJvdG90eXBlLl93cmFwPWZ1bmN0aW9uKCl7Y29uc3Qgc2U9dGhpcy5fYmFzZVN0YXRlO3RlLmZvckVhY2goZnVuY3Rpb24ob2Upe3RoaXNbb2VdPWZ1bmN0aW9uKCl7Y29uc3QgY2U9bmV3IHRoaXMuY29uc3RydWN0''@;'; put 'put ''b3IodGhpcyk7cmV0dXJuIHNlLmNoaWxkcmVuLnB1c2goY2UpLGNlW29lXS5hcHBseShjZSxhcmd1bWVudHMpfX0sdGhpcyl9LEsucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKHNlKXtjb25zdCBvZT10aGlzLl9iYXNlU3RhdGU7VyhudWxsPT09b2UucGFyZW50KSxzZS5jYWxsKHRoaXMpLG9l''@;'; put 'put ''LmNoaWxkcmVuPW9lLmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbihjZSl7cmV0dXJuIGNlLl9iYXNlU3RhdGUucGFyZW50PT09dGhpc30sdGhpcyksVy5lcXVhbChvZS5jaGlsZHJlbi5sZW5ndGgsMSwiUm9vdCBub2RlIGNhbiBoYXZlIG9ubHkgb25lIGNoaWxkIil9LEsucHJvdG90eXBlLl91''@;'; put 'put ''c2VBcmdzPWZ1bmN0aW9uKHNlKXtjb25zdCBvZT10aGlzLl9iYXNlU3RhdGUsY2U9c2UuZmlsdGVyKGZ1bmN0aW9uKGRlKXtyZXR1cm4gZGUgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yfSx0aGlzKTtzZT1zZS5maWx0ZXIoZnVuY3Rpb24oZGUpe3JldHVybiEoZGUgaW5zdGFuY2VvZiB0''@;'; put 'put ''aGlzLmNvbnN0cnVjdG9yKX0sdGhpcyksMCE9PWNlLmxlbmd0aCYmKFcobnVsbD09PW9lLmNoaWxkcmVuKSxvZS5jaGlsZHJlbj1jZSxjZS5mb3JFYWNoKGZ1bmN0aW9uKGRlKXtkZS5fYmFzZVN0YXRlLnBhcmVudD10aGlzfSx0aGlzKSksMCE9PXNlLmxlbmd0aCYmKFcobnVsbD09PW9lLmFy''@;'; put 'put ''Z3MpLG9lLmFyZ3M9c2Usb2UucmV2ZXJzZUFyZ3M9c2UubWFwKGZ1bmN0aW9uKGRlKXtpZigib2JqZWN0IiE9dHlwZW9mIGRlfHxkZS5jb25zdHJ1Y3RvciE9PU9iamVjdClyZXR1cm4gZGU7Y29uc3QgdmU9e307cmV0dXJuIE9iamVjdC5rZXlzKGRlKS5mb3JFYWNoKGZ1bmN0aW9uKEFlKXtB''@;'; put 'put ''ZT09KDB8QWUpJiYoQWV8PTApLHZlW2RlW0FlXV09QWV9KSx2ZX0pKX0sWyJfcGVla1RhZyIsIl9kZWNvZGVUYWciLCJfdXNlIiwiX2RlY29kZVN0ciIsIl9kZWNvZGVPYmppZCIsIl9kZWNvZGVUaW1lIiwiX2RlY29kZU51bGwiLCJfZGVjb2RlSW50IiwiX2RlY29kZUJvb2wiLCJfZGVjb2Rl''@;'; put 'put ''TGlzdCIsIl9lbmNvZGVDb21wb3NpdGUiLCJfZW5jb2RlU3RyIiwiX2VuY29kZU9iamlkIiwiX2VuY29kZVRpbWUiLCJfZW5jb2RlTnVsbCIsIl9lbmNvZGVJbnQiLCJfZW5jb2RlQm9vbCJdLmZvckVhY2goZnVuY3Rpb24oc2Upe0sucHJvdG90eXBlW3NlXT1mdW5jdGlvbigpe3Rocm93IG5l''@;'; put 'put ''dyBFcnJvcihzZSsiIG5vdCBpbXBsZW1lbnRlZCBmb3IgZW5jb2Rpbmc6ICIrdGhpcy5fYmFzZVN0YXRlLmVuYyl9fSksTi5mb3JFYWNoKGZ1bmN0aW9uKHNlKXtLLnByb3RvdHlwZVtzZV09ZnVuY3Rpb24oKXtjb25zdCBvZT10aGlzLl9iYXNlU3RhdGUsY2U9QXJyYXkucHJvdG90eXBlLnNs''@;'; put 'put ''aWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gVyhudWxsPT09b2UudGFnKSxvZS50YWc9c2UsdGhpcy5fdXNlQXJncyhjZSksdGhpc319KSxLLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24oc2Upe1coc2UpO2NvbnN0IG9lPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gVyhudWxsPT09b2UudXNlKSxv''@;'; put 'put ''ZS51c2U9c2UsdGhpc30sSy5wcm90b3R5cGUub3B0aW9uYWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFzZVN0YXRlLm9wdGlvbmFsPSEwLHRoaXN9LEsucHJvdG90eXBlLmRlZj1mdW5jdGlvbihzZSl7Y29uc3Qgb2U9dGhpcy5fYmFzZVN0YXRlO3JldHVybiBXKG51bGw9PT1vZS5kZWZh''@;'; put 'put ''dWx0KSxvZS5kZWZhdWx0PXNlLG9lLm9wdGlvbmFsPSEwLHRoaXN9LEsucHJvdG90eXBlLmV4cGxpY2l0PWZ1bmN0aW9uKHNlKXtjb25zdCBvZT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIFcobnVsbD09PW9lLmV4cGxpY2l0JiZudWxsPT09b2UuaW1wbGljaXQpLG9lLmV4cGxpY2l0PXNlLHRo''@;'; put 'put ''aXN9LEsucHJvdG90eXBlLmltcGxpY2l0PWZ1bmN0aW9uKHNlKXtjb25zdCBvZT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIFcobnVsbD09PW9lLmV4cGxpY2l0JiZudWxsPT09b2UuaW1wbGljaXQpLG9lLmltcGxpY2l0PXNlLHRoaXN9LEsucHJvdG90eXBlLm9iaj1mdW5jdGlvbigpe2NvbnN0''@;'; put 'put ''IHNlPXRoaXMuX2Jhc2VTdGF0ZSxvZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO3JldHVybiBzZS5vYmo9ITAsMCE9PW9lLmxlbmd0aCYmdGhpcy5fdXNlQXJncyhvZSksdGhpc30sSy5wcm90b3R5cGUua2V5PWZ1bmN0aW9uKHNlKXtjb25zdCBvZT10aGlzLl9iYXNl''@;'; put 'put ''U3RhdGU7cmV0dXJuIFcobnVsbD09PW9lLmtleSksb2Uua2V5PXNlLHRoaXN9LEsucHJvdG90eXBlLmFueT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYXNlU3RhdGUuYW55PSEwLHRoaXN9LEsucHJvdG90eXBlLmNob2ljZT1mdW5jdGlvbihzZSl7Y29uc3Qgb2U9dGhpcy5fYmFzZVN0YXRl''@;'; put 'put ''O3JldHVybiBXKG51bGw9PT1vZS5jaG9pY2UpLG9lLmNob2ljZT1zZSx0aGlzLl91c2VBcmdzKE9iamVjdC5rZXlzKHNlKS5tYXAoZnVuY3Rpb24oY2Upe3JldHVybiBzZVtjZV19KSksdGhpc30sSy5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24oc2Upe2NvbnN0IG9lPXRoaXMuX2Jhc2VT''@;'; put 'put ''dGF0ZTtyZXR1cm4gVyhudWxsPT09b2UudXNlKSxvZS5jb250YWlucz1zZSx0aGlzfSxLLnByb3RvdHlwZS5fZGVjb2RlPWZ1bmN0aW9uKHNlLG9lKXtjb25zdCBjZT10aGlzLl9iYXNlU3RhdGU7aWYobnVsbD09PWNlLnBhcmVudClyZXR1cm4gc2Uud3JhcFJlc3VsdChjZS5jaGlsZHJlblsw''@;'; put 'put ''XS5fZGVjb2RlKHNlLG9lKSk7bGV0IGRlLHZlPWNlLmRlZmF1bHQsQWU9ITAsa2U9bnVsbDtpZihudWxsIT09Y2Uua2V5JiYoa2U9c2UuZW50ZXJLZXkoY2Uua2V5KSksY2Uub3B0aW9uYWwpe2xldCBTZT1udWxsO2lmKG51bGwhPT1jZS5leHBsaWNpdD9TZT1jZS5leHBsaWNpdDpudWxsIT09''@;'; put 'put ''Y2UuaW1wbGljaXQ/U2U9Y2UuaW1wbGljaXQ6bnVsbCE9PWNlLnRhZyYmKFNlPWNlLnRhZyksbnVsbCE9PVNlfHxjZS5hbnkpe2lmKEFlPXRoaXMuX3BlZWtUYWcoc2UsU2UsY2UuYW55KSxzZS5pc0Vycm9yKEFlKSlyZXR1cm4gQWV9ZWxzZXtjb25zdCBJZT1zZS5zYXZlKCk7dHJ5e251bGw9''@;'; put 'put ''PT1jZS5jaG9pY2U/dGhpcy5fZGVjb2RlR2VuZXJpYyhjZS50YWcsc2Usb2UpOnRoaXMuX2RlY29kZUNob2ljZShzZSxvZSksQWU9ITB9Y2F0Y2goVGUpe0FlPSExfXNlLnJlc3RvcmUoSWUpfX1pZihjZS5vYmomJkFlJiYoZGU9c2UuZW50ZXJPYmplY3QoKSksQWUpe2lmKG51bGwhPT1jZS5l''@;'; put 'put ''eHBsaWNpdCl7Y29uc3QgSWU9dGhpcy5fZGVjb2RlVGFnKHNlLGNlLmV4cGxpY2l0KTtpZihzZS5pc0Vycm9yKEllKSlyZXR1cm4gSWU7c2U9SWV9Y29uc3QgU2U9c2Uub2Zmc2V0O2lmKG51bGw9PT1jZS51c2UmJm51bGw9PT1jZS5jaG9pY2Upe2xldCBJZTtjZS5hbnkmJihJZT1zZS5zYXZl''@;'; put 'put ''KCkpO2NvbnN0IFRlPXRoaXMuX2RlY29kZVRhZyhzZSxudWxsIT09Y2UuaW1wbGljaXQ/Y2UuaW1wbGljaXQ6Y2UudGFnLGNlLmFueSk7aWYoc2UuaXNFcnJvcihUZSkpcmV0dXJuIFRlO2NlLmFueT92ZT1zZS5yYXcoSWUpOnNlPVRlfWlmKG9lJiZvZS50cmFjayYmbnVsbCE9PWNlLnRhZyYm''@;'; put 'put ''b2UudHJhY2soc2UucGF0aCgpLFNlLHNlLmxlbmd0aCwidGFnZ2VkIiksb2UmJm9lLnRyYWNrJiZudWxsIT09Y2UudGFnJiZvZS50cmFjayhzZS5wYXRoKCksc2Uub2Zmc2V0LHNlLmxlbmd0aCwiY29udGVudCIpLGNlLmFueXx8KHZlPW51bGw9PT1jZS5jaG9pY2U/dGhpcy5fZGVjb2RlR2Vu''@;'; put 'put ''ZXJpYyhjZS50YWcsc2Usb2UpOnRoaXMuX2RlY29kZUNob2ljZShzZSxvZSkpLHNlLmlzRXJyb3IodmUpKXJldHVybiB2ZTtpZihjZS5hbnl8fG51bGwhPT1jZS5jaG9pY2V8fG51bGw9PT1jZS5jaGlsZHJlbnx8Y2UuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihJZSl7SWUuX2RlY29kZShz''@;'; put 'put ''ZSxvZSl9KSxjZS5jb250YWlucyYmKCJvY3RzdHIiPT09Y2UudGFnfHwiYml0c3RyIj09PWNlLnRhZykpe2NvbnN0IEllPW5ldyBZKHZlKTt2ZT10aGlzLl9nZXRVc2UoY2UuY29udGFpbnMsc2UuX3JlcG9ydGVyU3RhdGUub2JqKS5fZGVjb2RlKEllLG9lKX19cmV0dXJuIGNlLm9iaiYmQWUm''@;'; put 'put ''Jih2ZT1zZS5sZWF2ZU9iamVjdChkZSkpLG51bGw9PT1jZS5rZXl8fG51bGw9PT12ZSYmITAhPT1BZT9udWxsIT09a2UmJnNlLmV4aXRLZXkoa2UpOnNlLmxlYXZlS2V5KGtlLGNlLmtleSx2ZSksdmV9LEsucHJvdG90eXBlLl9kZWNvZGVHZW5lcmljPWZ1bmN0aW9uKHNlLG9lLGNlKXtjb25z''@;'; put 'put ''dCBkZT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuInNlcSI9PT1zZXx8InNldCI9PT1zZT9udWxsOiJzZXFvZiI9PT1zZXx8InNldG9mIj09PXNlP3RoaXMuX2RlY29kZUxpc3Qob2Usc2UsZGUuYXJnc1swXSxjZSk6L3N0ciQvLnRlc3Qoc2UpP3RoaXMuX2RlY29kZVN0cihvZSxzZSxjZSk6Im9i''@;'; put 'put ''amlkIj09PXNlJiZkZS5hcmdzP3RoaXMuX2RlY29kZU9iamlkKG9lLGRlLmFyZ3NbMF0sZGUuYXJnc1sxXSxjZSk6Im9iamlkIj09PXNlP3RoaXMuX2RlY29kZU9iamlkKG9lLG51bGwsbnVsbCxjZSk6ImdlbnRpbWUiPT09c2V8fCJ1dGN0aW1lIj09PXNlP3RoaXMuX2RlY29kZVRpbWUob2Us''@;'; put 'put ''c2UsY2UpOiJudWxsXyI9PT1zZT90aGlzLl9kZWNvZGVOdWxsKG9lLGNlKToiYm9vbCI9PT1zZT90aGlzLl9kZWNvZGVCb29sKG9lLGNlKToib2JqRGVzYyI9PT1zZT90aGlzLl9kZWNvZGVTdHIob2Usc2UsY2UpOiJpbnQiPT09c2V8fCJlbnVtIj09PXNlP3RoaXMuX2RlY29kZUludChvZSxk''@;'; put 'put ''ZS5hcmdzJiZkZS5hcmdzWzBdLGNlKTpudWxsIT09ZGUudXNlP3RoaXMuX2dldFVzZShkZS51c2Usb2UuX3JlcG9ydGVyU3RhdGUub2JqKS5fZGVjb2RlKG9lLGNlKTpvZS5lcnJvcigidW5rbm93biB0YWc6ICIrc2UpfSxLLnByb3RvdHlwZS5fZ2V0VXNlPWZ1bmN0aW9uKHNlLG9lKXtjb25z''@;'; put 'put ''dCBjZT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIGNlLnVzZURlY29kZXI9dGhpcy5fdXNlKHNlLG9lKSxXKG51bGw9PT1jZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUucGFyZW50KSxjZS51c2VEZWNvZGVyPWNlLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5jaGlsZHJlblswXSxjZS5pbXBsaWNpdCE9''@;'; put 'put ''PWNlLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5pbXBsaWNpdCYmKGNlLnVzZURlY29kZXI9Y2UudXNlRGVjb2Rlci5jbG9uZSgpLGNlLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5pbXBsaWNpdD1jZS5pbXBsaWNpdCksY2UudXNlRGVjb2Rlcn0sSy5wcm90b3R5cGUuX2RlY29kZUNob2ljZT1mdW5j''@;'; put 'put ''dGlvbihzZSxvZSl7Y29uc3QgY2U9dGhpcy5fYmFzZVN0YXRlO2xldCBkZT1udWxsLHZlPSExO3JldHVybiBPYmplY3Qua2V5cyhjZS5jaG9pY2UpLnNvbWUoZnVuY3Rpb24oQWUpe2NvbnN0IGtlPXNlLnNhdmUoKSxTZT1jZS5jaG9pY2VbQWVdO3RyeXtjb25zdCBJZT1TZS5fZGVjb2RlKHNl''@;'; put 'put ''LG9lKTtpZihzZS5pc0Vycm9yKEllKSlyZXR1cm4hMTtkZT17dHlwZTpBZSx2YWx1ZTpJZX0sdmU9ITB9Y2F0Y2goSWUpe3JldHVybiBzZS5yZXN0b3JlKGtlKSwhMX1yZXR1cm4hMH0sdGhpcyksdmU/ZGU6c2UuZXJyb3IoIkNob2ljZSBub3QgbWF0Y2hlZCIpfSxLLnByb3RvdHlwZS5fY3Jl''@;'; put 'put ''YXRlRW5jb2RlckJ1ZmZlcj1mdW5jdGlvbihzZSl7cmV0dXJuIG5ldyBhZShzZSx0aGlzLnJlcG9ydGVyKX0sSy5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbihzZSxvZSxjZSl7Y29uc3QgZGU9dGhpcy5fYmFzZVN0YXRlO2lmKG51bGwhPT1kZS5kZWZhdWx0JiZkZS5kZWZhdWx0PT09c2Up''@;'; put 'put ''cmV0dXJuO2NvbnN0IHZlPXRoaXMuX2VuY29kZVZhbHVlKHNlLG9lLGNlKTtyZXR1cm4gdm9pZCAwPT09dmV8fHRoaXMuX3NraXBEZWZhdWx0KHZlLG9lLGNlKT92b2lkIDA6dmV9LEsucHJvdG90eXBlLl9lbmNvZGVWYWx1ZT1mdW5jdGlvbihzZSxvZSxjZSl7Y29uc3QgZGU9dGhpcy5fYmFz''@;'; put 'put ''ZVN0YXRlO2lmKG51bGw9PT1kZS5wYXJlbnQpcmV0dXJuIGRlLmNoaWxkcmVuWzBdLl9lbmNvZGUoc2Usb2V8fG5ldyByZSk7bGV0IHZlPW51bGw7aWYodGhpcy5yZXBvcnRlcj1vZSxkZS5vcHRpb25hbCYmdm9pZCAwPT09c2Upe2lmKG51bGw9PT1kZS5kZWZhdWx0KXJldHVybjtzZT1kZS5k''@;'; put 'put ''ZWZhdWx0fWxldCBBZT1udWxsLGtlPSExO2lmKGRlLmFueSl2ZT10aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHNlKTtlbHNlIGlmKGRlLmNob2ljZSl2ZT10aGlzLl9lbmNvZGVDaG9pY2Uoc2Usb2UpO2Vsc2UgaWYoZGUuY29udGFpbnMpQWU9dGhpcy5fZ2V0VXNlKGRlLmNvbnRhaW5zLGNl''@;'; put 'put ''KS5fZW5jb2RlKHNlLG9lKSxrZT0hMDtlbHNlIGlmKGRlLmNoaWxkcmVuKUFlPWRlLmNoaWxkcmVuLm1hcChmdW5jdGlvbihTZSl7aWYoIm51bGxfIj09PVNlLl9iYXNlU3RhdGUudGFnKXJldHVybiBTZS5fZW5jb2RlKG51bGwsb2Usc2UpO2lmKG51bGw9PT1TZS5fYmFzZVN0YXRlLmtleSly''@;'; put 'put ''ZXR1cm4gb2UuZXJyb3IoIkNoaWxkIHNob3VsZCBoYXZlIGEga2V5Iik7Y29uc3QgSWU9b2UuZW50ZXJLZXkoU2UuX2Jhc2VTdGF0ZS5rZXkpO2lmKCJvYmplY3QiIT10eXBlb2Ygc2UpcmV0dXJuIG9lLmVycm9yKCJDaGlsZCBleHBlY3RlZCwgYnV0IGlucHV0IGlzIG5vdCBvYmplY3QiKTtj''@;'; put 'put ''b25zdCBUZT1TZS5fZW5jb2RlKHNlW1NlLl9iYXNlU3RhdGUua2V5XSxvZSxzZSk7cmV0dXJuIG9lLmxlYXZlS2V5KEllKSxUZX0sdGhpcykuZmlsdGVyKGZ1bmN0aW9uKFNlKXtyZXR1cm4gU2V9KSxBZT10aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKEFlKTtlbHNlIGlmKCJzZXFvZiI9PT1k''@;'; put 'put ''ZS50YWd8fCJzZXRvZiI9PT1kZS50YWcpe2lmKCFkZS5hcmdzfHwxIT09ZGUuYXJncy5sZW5ndGgpcmV0dXJuIG9lLmVycm9yKCJUb28gbWFueSBhcmdzIGZvciA6ICIrZGUudGFnKTtpZighQXJyYXkuaXNBcnJheShzZSkpcmV0dXJuIG9lLmVycm9yKCJzZXFvZi9zZXRvZiwgYnV0IGRhdGEg''@;'; put 'put ''aXMgbm90IEFycmF5Iik7Y29uc3QgU2U9dGhpcy5jbG9uZSgpO1NlLl9iYXNlU3RhdGUuaW1wbGljaXQ9bnVsbCxBZT10aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHNlLm1hcChmdW5jdGlvbihJZSl7cmV0dXJuIHRoaXMuX2dldFVzZSh0aGlzLl9iYXNlU3RhdGUuYXJnc1swXSxzZSkuX2Vu''@;'; put 'put ''Y29kZShJZSxvZSl9LFNlKSl9ZWxzZSBudWxsIT09ZGUudXNlP3ZlPXRoaXMuX2dldFVzZShkZS51c2UsY2UpLl9lbmNvZGUoc2Usb2UpOihBZT10aGlzLl9lbmNvZGVQcmltaXRpdmUoZGUudGFnLHNlKSxrZT0hMCk7aWYoIWRlLmFueSYmbnVsbD09PWRlLmNob2ljZSl7Y29uc3QgU2U9bnVs''@;'; put 'put ''bCE9PWRlLmltcGxpY2l0P2RlLmltcGxpY2l0OmRlLnRhZyxJZT1udWxsPT09ZGUuaW1wbGljaXQ/InVuaXZlcnNhbCI6ImNvbnRleHQiO251bGw9PT1TZT9udWxsPT09ZGUudXNlJiZvZS5lcnJvcigiVGFnIGNvdWxkIGJlIG9taXR0ZWQgb25seSBmb3IgLnVzZSgpIik6bnVsbD09PWRlLnVz''@;'; put 'put ''ZSYmKHZlPXRoaXMuX2VuY29kZUNvbXBvc2l0ZShTZSxrZSxJZSxBZSkpfXJldHVybiBudWxsIT09ZGUuZXhwbGljaXQmJih2ZT10aGlzLl9lbmNvZGVDb21wb3NpdGUoZGUuZXhwbGljaXQsITEsImNvbnRleHQiLHZlKSksdmV9LEsucHJvdG90eXBlLl9lbmNvZGVDaG9pY2U9ZnVuY3Rpb24o''@;'; put 'put ''c2Usb2Upe2NvbnN0IGNlPXRoaXMuX2Jhc2VTdGF0ZSxkZT1jZS5jaG9pY2Vbc2UudHlwZV07cmV0dXJuIGRlfHxXKCExLHNlLnR5cGUrIiBub3QgZm91bmQgaW4gIitKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyhjZS5jaG9pY2UpKSksZGUuX2VuY29kZShzZS52YWx1ZSxvZSl9LEsucHJv''@;'; put 'put ''dG90eXBlLl9lbmNvZGVQcmltaXRpdmU9ZnVuY3Rpb24oc2Usb2Upe2NvbnN0IGNlPXRoaXMuX2Jhc2VTdGF0ZTtpZigvc3RyJC8udGVzdChzZSkpcmV0dXJuIHRoaXMuX2VuY29kZVN0cihvZSxzZSk7aWYoIm9iamlkIj09PXNlJiZjZS5hcmdzKXJldHVybiB0aGlzLl9lbmNvZGVPYmppZChv''@;'; put 'put ''ZSxjZS5yZXZlcnNlQXJnc1swXSxjZS5hcmdzWzFdKTtpZigib2JqaWQiPT09c2UpcmV0dXJuIHRoaXMuX2VuY29kZU9iamlkKG9lLG51bGwsbnVsbCk7aWYoImdlbnRpbWUiPT09c2V8fCJ1dGN0aW1lIj09PXNlKXJldHVybiB0aGlzLl9lbmNvZGVUaW1lKG9lLHNlKTtpZigibnVsbF8iPT09''@;'; put 'put ''c2UpcmV0dXJuIHRoaXMuX2VuY29kZU51bGwoKTtpZigiaW50Ij09PXNlfHwiZW51bSI9PT1zZSlyZXR1cm4gdGhpcy5fZW5jb2RlSW50KG9lLGNlLmFyZ3MmJmNlLnJldmVyc2VBcmdzWzBdKTtpZigiYm9vbCI9PT1zZSlyZXR1cm4gdGhpcy5fZW5jb2RlQm9vbChvZSk7aWYoIm9iakRlc2Mi''@;'; put 'put ''PT09c2UpcmV0dXJuIHRoaXMuX2VuY29kZVN0cihvZSxzZSk7dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCB0YWc6ICIrc2UpfSxLLnByb3RvdHlwZS5faXNOdW1zdHI9ZnVuY3Rpb24oc2Upe3JldHVybi9eWzAtOSBdKiQvLnRlc3Qoc2UpfSxLLnByb3RvdHlwZS5faXNQcmludHN0cj1m''@;'; put 'put ''dW5jdGlvbihzZSl7cmV0dXJuL15bQS1aYS16MC05ICcoKSssLS4vOj0/XSokLy50ZXN0KHNlKX19LDg0NjU6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCByZT1qKDU3MTcpO2Z1bmN0aW9uIGFlKFcpe3RoaXMuX3JlcG9ydGVyU3RhdGU9e29iajpudWxsLHBhdGg6W10sb3B0aW9uczpX''@;'; put 'put ''fHx7fSxlcnJvcnM6W119fWZ1bmN0aW9uIFkoVyxOKXt0aGlzLnBhdGg9Vyx0aGlzLnJldGhyb3coTil9US5iPWFlLGFlLnByb3RvdHlwZS5pc0Vycm9yPWZ1bmN0aW9uKFcpe3JldHVybiBXIGluc3RhbmNlb2YgWX0sYWUucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24oKXtjb25zdCBXPXRoaXMu''@;'; put 'put ''X3JlcG9ydGVyU3RhdGU7cmV0dXJue29iajpXLm9iaixwYXRoTGVuOlcucGF0aC5sZW5ndGh9fSxhZS5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbihXKXtjb25zdCBOPXRoaXMuX3JlcG9ydGVyU3RhdGU7Ti5vYmo9Vy5vYmosTi5wYXRoPU4ucGF0aC5zbGljZSgwLFcucGF0aExlbil9LGFl''@;'; put 'put ''LnByb3RvdHlwZS5lbnRlcktleT1mdW5jdGlvbihXKXtyZXR1cm4gdGhpcy5fcmVwb3J0ZXJTdGF0ZS5wYXRoLnB1c2goVyl9LGFlLnByb3RvdHlwZS5leGl0S2V5PWZ1bmN0aW9uKFcpe2NvbnN0IE49dGhpcy5fcmVwb3J0ZXJTdGF0ZTtOLnBhdGg9Ti5wYXRoLnNsaWNlKDAsVy0xKX0sYWUu''@;'; put 'put ''cHJvdG90eXBlLmxlYXZlS2V5PWZ1bmN0aW9uKFcsTix0ZSl7Y29uc3QgSz10aGlzLl9yZXBvcnRlclN0YXRlO3RoaXMuZXhpdEtleShXKSxudWxsIT09Sy5vYmomJihLLm9ialtOXT10ZSl9LGFlLnByb3RvdHlwZS5wYXRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUu''@;'; put 'put ''cGF0aC5qb2luKCIvIil9LGFlLnByb3RvdHlwZS5lbnRlck9iamVjdD1mdW5jdGlvbigpe2NvbnN0IFc9dGhpcy5fcmVwb3J0ZXJTdGF0ZSxOPVcub2JqO3JldHVybiBXLm9iaj17fSxOfSxhZS5wcm90b3R5cGUubGVhdmVPYmplY3Q9ZnVuY3Rpb24oVyl7Y29uc3QgTj10aGlzLl9yZXBvcnRl''@;'; put 'put ''clN0YXRlLHRlPU4ub2JqO3JldHVybiBOLm9iaj1XLHRlfSxhZS5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24oVyl7bGV0IE47Y29uc3QgdGU9dGhpcy5fcmVwb3J0ZXJTdGF0ZSxLPVcgaW5zdGFuY2VvZiBZO2lmKE49Sz9XOm5ldyBZKHRlLnBhdGgubWFwKGZ1bmN0aW9uKEope3JldHVybiJb''@;'; put 'put ''IitKU09OLnN0cmluZ2lmeShKKSsiXSJ9KS5qb2luKCIiKSxXLm1lc3NhZ2V8fFcsVy5zdGFjayksIXRlLm9wdGlvbnMucGFydGlhbCl0aHJvdyBOO3JldHVybiBLfHx0ZS5lcnJvcnMucHVzaChOKSxOfSxhZS5wcm90b3R5cGUud3JhcFJlc3VsdD1mdW5jdGlvbihXKXtjb25zdCBOPXRoaXMu''@;'; put 'put ''X3JlcG9ydGVyU3RhdGU7cmV0dXJuIE4ub3B0aW9ucy5wYXJ0aWFsP3tyZXN1bHQ6dGhpcy5pc0Vycm9yKFcpP251bGw6VyxlcnJvcnM6Ti5lcnJvcnN9Old9LHJlKFksRXJyb3IpLFkucHJvdG90eXBlLnJldGhyb3c9ZnVuY3Rpb24oVyl7aWYodGhpcy5tZXNzYWdlPVcrIiBhdDogIisodGhp''@;'; put 'put ''cy5wYXRofHwiKHNoYWxsb3cpIiksRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UmJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsWSksIXRoaXMuc3RhY2spdHJ5e3Rocm93IG5ldyBFcnJvcih0aGlzLm1lc3NhZ2UpfWNhdGNoKE4pe3RoaXMuc3RhY2s9Ti5zdGFja31yZXR1cm4gdGhpc319''@;'; put 'put ''LDE2MDooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBqKHJlKXtjb25zdCBhZT17fTtyZXR1cm4gT2JqZWN0LmtleXMocmUpLmZvckVhY2goZnVuY3Rpb24oWSl7KDB8WSk9PVkmJihZfD0wKSxhZVtyZVtZXV09WX0pLGFlfVEudGFnQ2xhc3M9ezA6InVuaXZlcnNhbCIsMToiYXBwbGlj''@;'; put 'put ''YXRpb24iLDI6ImNvbnRleHQiLDM6InByaXZhdGUifSxRLnRhZ0NsYXNzQnlOYW1lPWooUS50YWdDbGFzcyksUS50YWc9ezA6ImVuZCIsMToiYm9vbCIsMjoiaW50IiwzOiJiaXRzdHIiLDQ6Im9jdHN0ciIsNToibnVsbF8iLDY6Im9iamlkIiw3OiJvYmpEZXNjIiw4OiJleHRlcm5hbCIsOToi''@;'; put 'put ''cmVhbCIsMTA6ImVudW0iLDExOiJlbWJlZCIsMTI6InV0ZjhzdHIiLDEzOiJyZWxhdGl2ZU9pZCIsMTY6InNlcSIsMTc6InNldCIsMTg6Im51bXN0ciIsMTk6InByaW50c3RyIiwyMDoidDYxc3RyIiwyMToidmlkZW9zdHIiLDIyOiJpYTVzdHIiLDIzOiJ1dGN0aW1lIiwyNDoiZ2VudGltZSIs''@;'; put 'put ''MjU6ImdyYXBoc3RyIiwyNjoiaXNvNjQ2c3RyIiwyNzoiZ2Vuc3RyIiwyODoidW5pc3RyIiwyOToiY2hhcnN0ciIsMzA6ImJtcHN0ciJ9LFEudGFnQnlOYW1lPWooUS50YWcpfSw2ODI2OihVLFEsaik9PnsidXNlIHN0cmljdCI7Y29uc3QgcmU9UTtyZS5fcmV2ZXJzZT1mdW5jdGlvbihhZSl7''@;'; put 'put ''Y29uc3QgWT17fTtyZXR1cm4gT2JqZWN0LmtleXMoYWUpLmZvckVhY2goZnVuY3Rpb24oVyl7KDB8Vyk9PVcmJihXfD0wKSxZW2FlW1ddXT1XfSksWX0scmUuZGVyPWooMTYwKX0sMTY3MTooVSxRLGopPT57InVzZSBzdHJpY3QiO2NvbnN0IHJlPWooNTcxNyksYWU9aig0NTkwKSxZPWooNjYy''@;'; put 'put ''NSkuQyxXPWooMTk0OSksTj1qKDE2MCk7ZnVuY3Rpb24gdGUob2Upe3RoaXMuZW5jPSJkZXIiLHRoaXMubmFtZT1vZS5uYW1lLHRoaXMuZW50aXR5PW9lLHRoaXMudHJlZT1uZXcgSyx0aGlzLnRyZWUuX2luaXQob2UuYm9keSl9ZnVuY3Rpb24gSyhvZSl7Vy5jYWxsKHRoaXMsImRlciIsb2Up''@;'; put 'put ''fWZ1bmN0aW9uIEoob2UsY2Upe2xldCBkZT1vZS5yZWFkVUludDgoY2UpO2lmKG9lLmlzRXJyb3IoZGUpKXJldHVybiBkZTtjb25zdCB2ZT1OLnRhZ0NsYXNzW2RlPj42XSxBZT0wPT0oMzImZGUpO2lmKDMxPT0oMzEmZGUpKXtsZXQga2U9ZGU7Zm9yKGRlPTA7MTI4PT0oMTI4JmtlKTspe2lm''@;'; put 'put ''KGtlPW9lLnJlYWRVSW50OChjZSksb2UuaXNFcnJvcihrZSkpcmV0dXJuIGtlO2RlPDw9NyxkZXw9MTI3JmtlfX1lbHNlIGRlJj0zMTtyZXR1cm57Y2xzOnZlLHByaW1pdGl2ZTpBZSx0YWc6ZGUsdGFnU3RyOk4udGFnW2RlXX19ZnVuY3Rpb24gc2Uob2UsY2UsZGUpe2xldCB2ZT1vZS5yZWFk''@;'; put 'put ''VUludDgoZGUpO2lmKG9lLmlzRXJyb3IodmUpKXJldHVybiB2ZTtpZighY2UmJjEyOD09PXZlKXJldHVybiBudWxsO2lmKDA9PSgxMjgmdmUpKXJldHVybiB2ZTtjb25zdCBBZT0xMjcmdmU7aWYoQWU+NClyZXR1cm4gb2UuZXJyb3IoImxlbmd0aCBvY3RlY3QgaXMgdG9vIGxvbmciKTt2ZT0w''@;'; put 'put ''O2ZvcihsZXQga2U9MDtrZTxBZTtrZSsrKXt2ZTw8PTg7Y29uc3QgU2U9b2UucmVhZFVJbnQ4KGRlKTtpZihvZS5pc0Vycm9yKFNlKSlyZXR1cm4gU2U7dmV8PVNlfXJldHVybiB2ZX1VLmV4cG9ydHM9dGUsdGUucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihvZSxjZSl7cmV0dXJuIFkuaXNE''@;'; put 'put ''ZWNvZGVyQnVmZmVyKG9lKXx8KG9lPW5ldyBZKG9lLGNlKSksdGhpcy50cmVlLl9kZWNvZGUob2UsY2UpfSxyZShLLFcpLEsucHJvdG90eXBlLl9wZWVrVGFnPWZ1bmN0aW9uKG9lLGNlLGRlKXtpZihvZS5pc0VtcHR5KCkpcmV0dXJuITE7Y29uc3QgdmU9b2Uuc2F2ZSgpLEFlPUoob2UsJ0Zh''@;'; put 'put ''aWxlZCB0byBwZWVrIHRhZzogIicrY2UrJyInKTtyZXR1cm4gb2UuaXNFcnJvcihBZSk/QWU6KG9lLnJlc3RvcmUodmUpLEFlLnRhZz09PWNlfHxBZS50YWdTdHI9PT1jZXx8QWUudGFnU3RyKyJvZiI9PT1jZXx8ZGUpfSxLLnByb3RvdHlwZS5fZGVjb2RlVGFnPWZ1bmN0aW9uKG9lLGNlLGRl''@;'; put 'put ''KXtjb25zdCB2ZT1KKG9lLCdGYWlsZWQgdG8gZGVjb2RlIHRhZyBvZiAiJytjZSsnIicpO2lmKG9lLmlzRXJyb3IodmUpKXJldHVybiB2ZTtsZXQgQWU9c2Uob2UsdmUucHJpbWl0aXZlLCdGYWlsZWQgdG8gZ2V0IGxlbmd0aCBvZiAiJytjZSsnIicpO2lmKG9lLmlzRXJyb3IoQWUpKXJldHVy''@;'; put 'put ''biBBZTtpZighZGUmJnZlLnRhZyE9PWNlJiZ2ZS50YWdTdHIhPT1jZSYmdmUudGFnU3RyKyJvZiIhPT1jZSlyZXR1cm4gb2UuZXJyb3IoJ0ZhaWxlZCB0byBtYXRjaCB0YWc6ICInK2NlKyciJyk7aWYodmUucHJpbWl0aXZlfHxudWxsIT09QWUpcmV0dXJuIG9lLnNraXAoQWUsJ0ZhaWxlZCB0''@;'; put 'put ''byBtYXRjaCBib2R5IG9mOiAiJytjZSsnIicpO2NvbnN0IGtlPW9lLnNhdmUoKSxTZT10aGlzLl9za2lwVW50aWxFbmQob2UsJ0ZhaWxlZCB0byBza2lwIGluZGVmaW5pdGUgbGVuZ3RoIGJvZHk6ICInK3RoaXMudGFnKyciJyk7cmV0dXJuIG9lLmlzRXJyb3IoU2UpP1NlOihBZT1vZS5vZmZz''@;'; put 'put ''ZXQta2Uub2Zmc2V0LG9lLnJlc3RvcmUoa2UpLG9lLnNraXAoQWUsJ0ZhaWxlZCB0byBtYXRjaCBib2R5IG9mOiAiJytjZSsnIicpKX0sSy5wcm90b3R5cGUuX3NraXBVbnRpbEVuZD1mdW5jdGlvbihvZSxjZSl7Zm9yKDs7KXtjb25zdCBkZT1KKG9lLGNlKTtpZihvZS5pc0Vycm9yKGRlKSly''@;'; put 'put ''ZXR1cm4gZGU7Y29uc3QgdmU9c2Uob2UsZGUucHJpbWl0aXZlLGNlKTtpZihvZS5pc0Vycm9yKHZlKSlyZXR1cm4gdmU7bGV0IEFlO2lmKEFlPWRlLnByaW1pdGl2ZXx8bnVsbCE9PXZlP29lLnNraXAodmUpOnRoaXMuX3NraXBVbnRpbEVuZChvZSxjZSksb2UuaXNFcnJvcihBZSkpcmV0dXJu''@;'; put 'put ''IEFlO2lmKCJlbmQiPT09ZGUudGFnU3RyKWJyZWFrfX0sSy5wcm90b3R5cGUuX2RlY29kZUxpc3Q9ZnVuY3Rpb24ob2UsY2UsZGUsdmUpe2NvbnN0IEFlPVtdO2Zvcig7IW9lLmlzRW1wdHkoKTspe2NvbnN0IGtlPXRoaXMuX3BlZWtUYWcob2UsImVuZCIpO2lmKG9lLmlzRXJyb3Ioa2UpKXJl''@;'; put 'put ''dHVybiBrZTtjb25zdCBTZT1kZS5kZWNvZGUob2UsImRlciIsdmUpO2lmKG9lLmlzRXJyb3IoU2UpJiZrZSlicmVhaztBZS5wdXNoKFNlKX1yZXR1cm4gQWV9LEsucHJvdG90eXBlLl9kZWNvZGVTdHI9ZnVuY3Rpb24ob2UsY2Upe2lmKCJiaXRzdHIiPT09Y2Upe2NvbnN0IGRlPW9lLnJlYWRV''@;'; put 'put ''SW50OCgpO3JldHVybiBvZS5pc0Vycm9yKGRlKT9kZTp7dW51c2VkOmRlLGRhdGE6b2UucmF3KCl9fWlmKCJibXBzdHIiPT09Y2Upe2NvbnN0IGRlPW9lLnJhdygpO2lmKGRlLmxlbmd0aCUyPT0xKXJldHVybiBvZS5lcnJvcigiRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IGJtcHN0ciBsZW5n''@;'; put 'put ''dGggbWlzbWF0Y2giKTtsZXQgdmU9IiI7Zm9yKGxldCBBZT0wO0FlPGRlLmxlbmd0aC8yO0FlKyspdmUrPVN0cmluZy5mcm9tQ2hhckNvZGUoZGUucmVhZFVJbnQxNkJFKDIqQWUpKTtyZXR1cm4gdmV9aWYoIm51bXN0ciI9PT1jZSl7Y29uc3QgZGU9b2UucmF3KCkudG9TdHJpbmcoImFzY2lp''@;'; put 'put ''Iik7cmV0dXJuIHRoaXMuX2lzTnVtc3RyKGRlKT9kZTpvZS5lcnJvcigiRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IG51bXN0ciB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzIil9aWYoIm9jdHN0ciI9PT1jZXx8Im9iakRlc2MiPT09Y2UpcmV0dXJuIG9lLnJhdygpO2lmKCJwcmludHN0ciI9PT1j''@;'; put 'put ''ZSl7Y29uc3QgZGU9b2UucmF3KCkudG9TdHJpbmcoImFzY2lpIik7cmV0dXJuIHRoaXMuX2lzUHJpbnRzdHIoZGUpP2RlOm9lLmVycm9yKCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogcHJpbnRzdHIgdW5zdXBwb3J0ZWQgY2hhcmFjdGVycyIpfXJldHVybi9zdHIkLy50ZXN0KGNlKT9vZS5y''@;'; put 'put ''YXcoKS50b1N0cmluZygpOm9lLmVycm9yKCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogIitjZSsiIHVuc3VwcG9ydGVkIil9LEsucHJvdG90eXBlLl9kZWNvZGVPYmppZD1mdW5jdGlvbihvZSxjZSxkZSl7bGV0IHZlO2NvbnN0IEFlPVtdO2xldCBrZT0wLFNlPTA7Zm9yKDshb2UuaXNFbXB0''@;'; put 'put ''eSgpOylTZT1vZS5yZWFkVUludDgoKSxrZTw8PTcsa2V8PTEyNyZTZSwwPT0oMTI4JlNlKSYmKEFlLnB1c2goa2UpLGtlPTApO2lmKDEyOCZTZSYmQWUucHVzaChrZSksdmU9ZGU/QWU6W0FlWzBdLzQwfDAsQWVbMF0lNDBdLmNvbmNhdChBZS5zbGljZSgxKSksY2Upe2xldCBNZT1jZVt2ZS5q''@;'; put 'put ''b2luKCIgIildO3ZvaWQgMD09PU1lJiYoTWU9Y2VbdmUuam9pbigiLiIpXSksdm9pZCAwIT09TWUmJih2ZT1NZSl9cmV0dXJuIHZlfSxLLnByb3RvdHlwZS5fZGVjb2RlVGltZT1mdW5jdGlvbihvZSxjZSl7Y29uc3QgZGU9b2UucmF3KCkudG9TdHJpbmcoKTtsZXQgdmUsQWUsa2UsU2UsSWUs''@;'; put 'put ''VGU7aWYoImdlbnRpbWUiPT09Y2UpdmU9MHxkZS5zbGljZSgwLDQpLEFlPTB8ZGUuc2xpY2UoNCw2KSxrZT0wfGRlLnNsaWNlKDYsOCksU2U9MHxkZS5zbGljZSg4LDEwKSxJZT0wfGRlLnNsaWNlKDEwLDEyKSxUZT0wfGRlLnNsaWNlKDEyLDE0KTtlbHNle2lmKCJ1dGN0aW1lIiE9PWNlKXJl''@;'; put 'put ''dHVybiBvZS5lcnJvcigiRGVjb2RpbmcgIitjZSsiIHRpbWUgaXMgbm90IHN1cHBvcnRlZCB5ZXQiKTt2ZT0wfGRlLnNsaWNlKDAsMiksQWU9MHxkZS5zbGljZSgyLDQpLGtlPTB8ZGUuc2xpY2UoNCw2KSxTZT0wfGRlLnNsaWNlKDYsOCksSWU9MHxkZS5zbGljZSg4LDEwKSxUZT0wfGRlLnNs''@;'; put 'put ''aWNlKDEwLDEyKSx2ZT12ZTw3MD8yZTMrdmU6MTkwMCt2ZX1yZXR1cm4gRGF0ZS5VVEModmUsQWUtMSxrZSxTZSxJZSxUZSwwKX0sSy5wcm90b3R5cGUuX2RlY29kZU51bGw9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sSy5wcm90b3R5cGUuX2RlY29kZUJvb2w9ZnVuY3Rpb24ob2Upe2NvbnN0''@;'; put 'put ''IGNlPW9lLnJlYWRVSW50OCgpO3JldHVybiBvZS5pc0Vycm9yKGNlKT9jZTowIT09Y2V9LEsucHJvdG90eXBlLl9kZWNvZGVJbnQ9ZnVuY3Rpb24ob2UsY2Upe2NvbnN0IGRlPW9lLnJhdygpO2xldCB2ZT1uZXcgYWUoZGUpO3JldHVybiBjZSYmKHZlPWNlW3ZlLnRvU3RyaW5nKDEwKV18fHZl''@;'; put 'put ''KSx2ZX0sSy5wcm90b3R5cGUuX3VzZT1mdW5jdGlvbihvZSxjZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG9lJiYob2U9b2UoY2UpKSxvZS5fZ2V0RGVjb2RlcigiZGVyIikudHJlZX19LDgzMDc6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCByZT1RO3JlLmRlcj1qKDE2NzEpLHJl''@;'; put 'put ''LnBlbT1qKDk2MzEpfSw5NjMxOihVLFEsaik9PnsidXNlIHN0cmljdCI7Y29uc3QgcmU9aig1NzE3KSxhZT1qKDIzOTkpLkJ1ZmZlcixZPWooMTY3MSk7ZnVuY3Rpb24gVyhOKXtZLmNhbGwodGhpcyxOKSx0aGlzLmVuYz0icGVtIn1yZShXLFkpLFUuZXhwb3J0cz1XLFcucHJvdG90eXBlLmRl''@;'; put 'put ''Y29kZT1mdW5jdGlvbihOLHRlKXtjb25zdCBLPU4udG9TdHJpbmcoKS5zcGxpdCgvW1xyXG5dKy9nKSxKPXRlLmxhYmVsLnRvVXBwZXJDYXNlKCksc2U9L14tLS0tLShCRUdJTnxFTkQpIChbXi1dKyktLS0tLSQvO2xldCBvZT0tMSxjZT0tMTtmb3IobGV0IEFlPTA7QWU8Sy5sZW5ndGg7QWUr''@;'; put 'put ''Kyl7Y29uc3Qga2U9S1tBZV0ubWF0Y2goc2UpO2lmKG51bGwhPT1rZSYma2VbMl09PT1KKXtpZigtMSE9PW9lKXtpZigiRU5EIiE9PWtlWzFdKWJyZWFrO2NlPUFlO2JyZWFrfWlmKCJCRUdJTiIhPT1rZVsxXSlicmVhaztvZT1BZX19aWYoLTE9PT1vZXx8LTE9PT1jZSl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIlBFTSBzZWN0aW9uIG5vdCBmb3VuZCBmb3I6ICIrSik7Y29uc3QgZGU9Sy5zbGljZShvZSsxLGNlKS5qb2luKCIiKTtkZS5yZXBsYWNlKC9bXmEtejAtOSsvPV0rL2dpLCIiKTtjb25zdCB2ZT1hZS5mcm9tKGRlLCJiYXNlNjQiKTtyZXR1cm4gWS5wcm90b3R5cGUuZGVjb2RlLmNhbGwo''@;'; put 'put ''dGhpcyx2ZSx0ZSl9fSw2OTg0OihVLFEsaik9PnsidXNlIHN0cmljdCI7Y29uc3QgcmU9aig1NzE3KSxhZT1qKDIzOTkpLkJ1ZmZlcixZPWooMTk0OSksVz1qKDE2MCk7ZnVuY3Rpb24gTihKKXt0aGlzLmVuYz0iZGVyIix0aGlzLm5hbWU9Si5uYW1lLHRoaXMuZW50aXR5PUosdGhpcy50cmVl''@;'; put 'put ''PW5ldyB0ZSx0aGlzLnRyZWUuX2luaXQoSi5ib2R5KX1mdW5jdGlvbiB0ZShKKXtZLmNhbGwodGhpcywiZGVyIixKKX1mdW5jdGlvbiBLKEope3JldHVybiBKPDEwPyIwIitKOkp9VS5leHBvcnRzPU4sTi5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKEosc2Upe3JldHVybiB0aGlzLnRyZWUu''@;'; put 'put ''X2VuY29kZShKLHNlKS5qb2luKCl9LHJlKHRlLFkpLHRlLnByb3RvdHlwZS5fZW5jb2RlQ29tcG9zaXRlPWZ1bmN0aW9uKEosc2Usb2UsY2Upe2NvbnN0IGRlPWZ1bmN0aW9uKGtlLFNlLEllLFRlKXtsZXQgTWU7aWYoInNlcW9mIj09PWtlP2tlPSJzZXEiOiJzZXRvZiI9PT1rZSYmKGtlPSJz''@;'; put 'put ''ZXQiKSxXLnRhZ0J5TmFtZS5oYXNPd25Qcm9wZXJ0eShrZSkpTWU9Vy50YWdCeU5hbWVba2VdO2Vsc2V7aWYoIm51bWJlciIhPXR5cGVvZiBrZXx8KDB8a2UpIT09a2UpcmV0dXJuIFRlLmVycm9yKCJVbmtub3duIHRhZzogIitrZSk7TWU9a2V9cmV0dXJuIE1lPj0zMT9UZS5lcnJvcigiTXVs''@;'; put 'put ''dGktb2N0ZXQgdGFnIGVuY29kaW5nIHVuc3VwcG9ydGVkIik6KFNlfHwoTWV8PTMyKSxNZXw9Vy50YWdDbGFzc0J5TmFtZVtJZXx8InVuaXZlcnNhbCJdPDw2LE1lKX0oSixzZSxvZSx0aGlzLnJlcG9ydGVyKTtpZihjZS5sZW5ndGg8MTI4KXtjb25zdCBrZT1hZS5hbGxvYygyKTtyZXR1cm4g''@;'; put 'put ''a2VbMF09ZGUsa2VbMV09Y2UubGVuZ3RoLHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoW2tlLGNlXSl9bGV0IHZlPTE7Zm9yKGxldCBrZT1jZS5sZW5ndGg7a2U+PTI1NjtrZT4+PTgpdmUrKztjb25zdCBBZT1hZS5hbGxvYygyK3ZlKTtBZVswXT1kZSxBZVsxXT0xMjh8dmU7Zm9yKGxldCBr''@;'; put 'put ''ZT0xK3ZlLFNlPWNlLmxlbmd0aDtTZT4wO2tlLS0sU2U+Pj04KUFlW2tlXT0yNTUmU2U7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoW0FlLGNlXSl9LHRlLnByb3RvdHlwZS5fZW5jb2RlU3RyPWZ1bmN0aW9uKEosc2Upe2lmKCJiaXRzdHIiPT09c2UpcmV0dXJuIHRoaXMuX2Ny''@;'; put 'put ''ZWF0ZUVuY29kZXJCdWZmZXIoWzB8Si51bnVzZWQsSi5kYXRhXSk7aWYoImJtcHN0ciI9PT1zZSl7Y29uc3Qgb2U9YWUuYWxsb2MoMipKLmxlbmd0aCk7Zm9yKGxldCBjZT0wO2NlPEoubGVuZ3RoO2NlKyspb2Uud3JpdGVVSW50MTZCRShKLmNoYXJDb2RlQXQoY2UpLDIqY2UpO3JldHVybiB0''@;'; put 'put ''aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG9lKX1yZXR1cm4ibnVtc3RyIj09PXNlP3RoaXMuX2lzTnVtc3RyKEopP3RoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoSik6dGhpcy5yZXBvcnRlci5lcnJvcigiRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IG51bXN0ciBzdXBwb3J0cyBvbmx5IGRp''@;'; put 'put ''Z2l0cyBhbmQgc3BhY2UiKToicHJpbnRzdHIiPT09c2U/dGhpcy5faXNQcmludHN0cihKKT90aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKEopOnRoaXMucmVwb3J0ZXIuZXJyb3IoIkVuY29kaW5nIG9mIHN0cmluZyB0eXBlOiBwcmludHN0ciBzdXBwb3J0cyBvbmx5IGxhdGluIHVwcGVyIGFu''@;'; put 'put ''ZCBsb3dlciBjYXNlIGxldHRlcnMsIGRpZ2l0cywgc3BhY2UsIGFwb3N0cm9waGUsIGxlZnQgYW5kIHJpZ3RoIHBhcmVudGhlc2lzLCBwbHVzIHNpZ24sIGNvbW1hLCBoeXBoZW4sIGRvdCwgc2xhc2gsIGNvbG9uLCBlcXVhbCBzaWduLCBxdWVzdGlvbiBtYXJrIik6L3N0ciQvLnRlc3Qoc2Up''@;'; put 'put ''fHwib2JqRGVzYyI9PT1zZT90aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKEopOnRoaXMucmVwb3J0ZXIuZXJyb3IoIkVuY29kaW5nIG9mIHN0cmluZyB0eXBlOiAiK3NlKyIgdW5zdXBwb3J0ZWQiKX0sdGUucHJvdG90eXBlLl9lbmNvZGVPYmppZD1mdW5jdGlvbihKLHNlLG9lKXtpZigic3Ry''@;'; put 'put ''aW5nIj09dHlwZW9mIEope2lmKCFzZSlyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigic3RyaW5nIG9iamlkIGdpdmVuLCBidXQgbm8gdmFsdWVzIG1hcCBmb3VuZCIpO2lmKCFzZS5oYXNPd25Qcm9wZXJ0eShKKSlyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigib2JqaWQgbm90IGZvdW5k''@;'; put 'put ''IGluIHZhbHVlcyBtYXAiKTtKPXNlW0pdLnNwbGl0KC9bXHMuXSsvZyk7Zm9yKGxldCBBZT0wO0FlPEoubGVuZ3RoO0FlKyspSltBZV18PTB9ZWxzZSBpZihBcnJheS5pc0FycmF5KEopKXtKPUouc2xpY2UoKTtmb3IobGV0IEFlPTA7QWU8Si5sZW5ndGg7QWUrKylKW0FlXXw9MH1pZighQXJy''@;'; put 'put ''YXkuaXNBcnJheShKKSlyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigib2JqaWQoKSBzaG91bGQgYmUgZWl0aGVyIGFycmF5IG9yIHN0cmluZywgZ290OiAiK0pTT04uc3RyaW5naWZ5KEopKTtpZighb2Upe2lmKEpbMV0+PTQwKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCJTZWNvbmQg''@;'; put 'put ''b2JqaWQgaWRlbnRpZmllciBPT0IiKTtKLnNwbGljZSgwLDIsNDAqSlswXStKWzFdKX1sZXQgY2U9MDtmb3IobGV0IEFlPTA7QWU8Si5sZW5ndGg7QWUrKyl7bGV0IGtlPUpbQWVdO2ZvcihjZSsrO2tlPj0xMjg7a2U+Pj03KWNlKyt9Y29uc3QgZGU9YWUuYWxsb2MoY2UpO2xldCB2ZT1kZS5s''@;'; put 'put ''ZW5ndGgtMTtmb3IobGV0IEFlPUoubGVuZ3RoLTE7QWU+PTA7QWUtLSl7bGV0IGtlPUpbQWVdO2ZvcihkZVt2ZS0tXT0xMjcma2U7KGtlPj49Nyk+MDspZGVbdmUtLV09MTI4fDEyNyZrZX1yZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihkZSl9LHRlLnByb3RvdHlwZS5fZW5jb2Rl''@;'; put 'put ''VGltZT1mdW5jdGlvbihKLHNlKXtsZXQgb2U7Y29uc3QgY2U9bmV3IERhdGUoSik7cmV0dXJuImdlbnRpbWUiPT09c2U/b2U9W0soY2UuZ2V0VVRDRnVsbFllYXIoKSksSyhjZS5nZXRVVENNb250aCgpKzEpLEsoY2UuZ2V0VVRDRGF0ZSgpKSxLKGNlLmdldFVUQ0hvdXJzKCkpLEsoY2UuZ2V0''@;'; put 'put ''VVRDTWludXRlcygpKSxLKGNlLmdldFVUQ1NlY29uZHMoKSksIloiXS5qb2luKCIiKToidXRjdGltZSI9PT1zZT9vZT1bSyhjZS5nZXRVVENGdWxsWWVhcigpJTEwMCksSyhjZS5nZXRVVENNb250aCgpKzEpLEsoY2UuZ2V0VVRDRGF0ZSgpKSxLKGNlLmdldFVUQ0hvdXJzKCkpLEsoY2UuZ2V0''@;'; put 'put ''VVRDTWludXRlcygpKSxLKGNlLmdldFVUQ1NlY29uZHMoKSksIloiXS5qb2luKCIiKTp0aGlzLnJlcG9ydGVyLmVycm9yKCJFbmNvZGluZyAiK3NlKyIgdGltZSBpcyBub3Qgc3VwcG9ydGVkIHlldCIpLHRoaXMuX2VuY29kZVN0cihvZSwib2N0c3RyIil9LHRlLnByb3RvdHlwZS5fZW5jb2Rl''@;'; put 'put ''TnVsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKCIiKX0sdGUucHJvdG90eXBlLl9lbmNvZGVJbnQ9ZnVuY3Rpb24oSixzZSl7aWYoInN0cmluZyI9PXR5cGVvZiBKKXtpZighc2UpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoIlN0cmluZyBpbnQgb3Ig''@;'; put 'put ''ZW51bSBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXAiKTtpZighc2UuaGFzT3duUHJvcGVydHkoSikpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoIlZhbHVlcyBtYXAgZG9lc24ndCBjb250YWluOiAiK0pTT04uc3RyaW5naWZ5KEopKTtKPXNlW0pdfWlmKCJudW1iZXIiIT10eXBlb2YgSiYm''@;'; put 'put ''IWFlLmlzQnVmZmVyKEopKXtjb25zdCBkZT1KLnRvQXJyYXkoKTshSi5zaWduJiYxMjgmZGVbMF0mJmRlLnVuc2hpZnQoMCksSj1hZS5mcm9tKGRlKX1pZihhZS5pc0J1ZmZlcihKKSl7bGV0IGRlPUoubGVuZ3RoOzA9PT1KLmxlbmd0aCYmZGUrKztjb25zdCB2ZT1hZS5hbGxvYyhkZSk7cmV0''@;'; put 'put ''dXJuIEouY29weSh2ZSksMD09PUoubGVuZ3RoJiYodmVbMF09MCksdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcih2ZSl9aWYoSjwxMjgpcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoSik7aWYoSjwyNTYpcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWzAsSl0pO2xl''@;'; put 'put ''dCBvZT0xO2ZvcihsZXQgZGU9SjtkZT49MjU2O2RlPj49OClvZSsrO2NvbnN0IGNlPW5ldyBBcnJheShvZSk7Zm9yKGxldCBkZT1jZS5sZW5ndGgtMTtkZT49MDtkZS0tKWNlW2RlXT0yNTUmSixKPj49ODtyZXR1cm4gMTI4JmNlWzBdJiZjZS51bnNoaWZ0KDApLHRoaXMuX2NyZWF0ZUVuY29k''@;'; put 'put ''ZXJCdWZmZXIoYWUuZnJvbShjZSkpfSx0ZS5wcm90b3R5cGUuX2VuY29kZUJvb2w9ZnVuY3Rpb24oSil7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoSj8yNTU6MCl9LHRlLnByb3RvdHlwZS5fdXNlPWZ1bmN0aW9uKEosc2Upe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBKJiYo''@;'; put 'put ''Sj1KKHNlKSksSi5fZ2V0RW5jb2RlcigiZGVyIikudHJlZX0sdGUucHJvdG90eXBlLl9za2lwRGVmYXVsdD1mdW5jdGlvbihKLHNlLG9lKXtjb25zdCBjZT10aGlzLl9iYXNlU3RhdGU7bGV0IGRlO2lmKG51bGw9PT1jZS5kZWZhdWx0KXJldHVybiExO2NvbnN0IHZlPUouam9pbigpO2lmKHZv''@;'; put 'put ''aWQgMD09PWNlLmRlZmF1bHRCdWZmZXImJihjZS5kZWZhdWx0QnVmZmVyPXRoaXMuX2VuY29kZVZhbHVlKGNlLmRlZmF1bHQsc2Usb2UpLmpvaW4oKSksdmUubGVuZ3RoIT09Y2UuZGVmYXVsdEJ1ZmZlci5sZW5ndGgpcmV0dXJuITE7Zm9yKGRlPTA7ZGU8dmUubGVuZ3RoO2RlKyspaWYodmVb''@;'; put 'put ''ZGVdIT09Y2UuZGVmYXVsdEJ1ZmZlcltkZV0pcmV0dXJuITE7cmV0dXJuITB9fSw2NTc5OihVLFEsaik9PnsidXNlIHN0cmljdCI7Y29uc3QgcmU9UTtyZS5kZXI9aig2OTg0KSxyZS5wZW09aigyODgzKX0sMjg4MzooVSxRLGopPT57InVzZSBzdHJpY3QiO2NvbnN0IHJlPWooNTcxNyksYWU9''@;'; put 'put ''aig2OTg0KTtmdW5jdGlvbiBZKFcpe2FlLmNhbGwodGhpcyxXKSx0aGlzLmVuYz0icGVtIn1yZShZLGFlKSxVLmV4cG9ydHM9WSxZLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24oVyxOKXtjb25zdCB0ZT1hZS5wcm90b3R5cGUuZW5jb2RlLmNhbGwodGhpcyxXKS50b1N0cmluZygiYmFzZTY0''@;'; put 'put ''IiksSz1bIi0tLS0tQkVHSU4gIitOLmxhYmVsKyItLS0tLSJdO2ZvcihsZXQgSj0wO0o8dGUubGVuZ3RoO0orPTY0KUsucHVzaCh0ZS5zbGljZShKLEorNjQpKTtyZXR1cm4gSy5wdXNoKCItLS0tLUVORCAiK04ubGFiZWwrIi0tLS0tIiksSy5qb2luKCJcbiIpfX0sNDU5MDpmdW5jdGlvbihV''@;'; put 'put ''LFEsail7IWZ1bmN0aW9uKHJlLGFlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gWSh4LFApe2lmKCF4KXRocm93IG5ldyBFcnJvcihQfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIFcoeCxQKXt4LnN1cGVyXz1QO3ZhciBWPWZ1bmN0aW9uKCl7fTtWLnByb3RvdHlwZT1QLnByb3RvdHlw''@;'; put 'put ''ZSx4LnByb3RvdHlwZT1uZXcgVix4LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj14fWZ1bmN0aW9uIE4oeCxQLFYpe2lmKE4uaXNCTih4KSlyZXR1cm4geDt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCxudWxsIT09eCYmKCJsZSIhPT1Q''@;'; put 'put ''JiYiYmUiIT09UHx8KFY9UCxQPTEwKSx0aGlzLl9pbml0KHh8fDAsUHx8MTAsVnx8ImJlIikpfXZhciB0ZTsib2JqZWN0Ij09dHlwZW9mIHJlP3JlLmV4cG9ydHM9TjphZS5CTj1OLE4uQk49TixOLndvcmRTaXplPTI2O3RyeXt0ZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAw''@;'; put 'put ''IT09d2luZG93LkJ1ZmZlcj93aW5kb3cuQnVmZmVyOmooOTUwKS5CdWZmZXJ9Y2F0Y2goeCl7fWZ1bmN0aW9uIEsoeCxQKXt2YXIgVj14LmNoYXJDb2RlQXQoUCk7cmV0dXJuIFY+PTY1JiZWPD03MD9WLTU1OlY+PTk3JiZWPD0xMDI/Vi04NzpWLTQ4JjE1fWZ1bmN0aW9uIEooeCxQLFYpe3Zh''@;'; put 'put ''ciBUPUsoeCxWKTtyZXR1cm4gVi0xPj1QJiYoVHw9Syh4LFYtMSk8PDQpLFR9ZnVuY3Rpb24gc2UoeCxQLFYsVCl7Zm9yKHZhciBTPTAsRj1NYXRoLm1pbih4Lmxlbmd0aCxWKSx5ZT1QO3llPEY7eWUrKyl7dmFyIENlPXguY2hhckNvZGVBdCh5ZSktNDg7Uyo9VCxTKz1DZT49NDk/Q2UtNDkr''@;'; put 'put ''MTA6Q2U+PTE3P0NlLTE3KzEwOkNlfXJldHVybiBTfU4uaXNCTj1mdW5jdGlvbih4KXtyZXR1cm4geCBpbnN0YW5jZW9mIE58fG51bGwhPT14JiYib2JqZWN0Ij09dHlwZW9mIHgmJnguY29uc3RydWN0b3Iud29yZFNpemU9PT1OLndvcmRTaXplJiZBcnJheS5pc0FycmF5KHgud29yZHMpfSxO''@;'; put 'put ''Lm1heD1mdW5jdGlvbih4LFApe3JldHVybiB4LmNtcChQKT4wP3g6UH0sTi5taW49ZnVuY3Rpb24oeCxQKXtyZXR1cm4geC5jbXAoUCk8MD94OlB9LE4ucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKHgsUCxWKXtpZigibnVtYmVyIj09dHlwZW9mIHgpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIo''@;'; put 'put ''eCxQLFYpO2lmKCJvYmplY3QiPT10eXBlb2YgeClyZXR1cm4gdGhpcy5faW5pdEFycmF5KHgsUCxWKTsiaGV4Ij09PVAmJihQPTE2KSxZKFA9PT0oMHxQKSYmUD49MiYmUDw9MzYpO3ZhciBUPTA7Ii0iPT09KHg9eC50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJihUKyssdGhp''@;'; put 'put ''cy5uZWdhdGl2ZT0xKSxUPHgubGVuZ3RoJiYoMTY9PT1QP3RoaXMuX3BhcnNlSGV4KHgsVCxWKToodGhpcy5fcGFyc2VCYXNlKHgsUCxUKSwibGUiPT09ViYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLFAsVikpKX0sTi5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oeCxQ''@;'; put 'put ''LFYpe3g8MCYmKHRoaXMubmVnYXRpdmU9MSx4PS14KSx4PDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ4XSx0aGlzLmxlbmd0aD0xKTp4PDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJngseC82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KFko''@;'; put 'put ''eDw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZ4LHgvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PVYmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxQLFYpfSxOLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKHgsUCxW''@;'; put 'put ''KXtpZihZKCJudW1iZXIiPT10eXBlb2YgeC5sZW5ndGgpLHgubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKHgubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIFQ9''@;'; put 'put ''MDtUPHRoaXMubGVuZ3RoO1QrKyl0aGlzLndvcmRzW1RdPTA7dmFyIFMsRix5ZT0wO2lmKCJiZSI9PT1WKWZvcihUPXgubGVuZ3RoLTEsUz0wO1Q+PTA7VC09Myl0aGlzLndvcmRzW1NdfD0oRj14W1RdfHhbVC0xXTw8OHx4W1QtMl08PDE2KTw8eWUmNjcxMDg4NjMsdGhpcy53b3Jkc1tTKzFd''@;'; put 'put ''PUY+Pj4yNi15ZSY2NzEwODg2MywoeWUrPTI0KT49MjYmJih5ZS09MjYsUysrKTtlbHNlIGlmKCJsZSI9PT1WKWZvcihUPTAsUz0wO1Q8eC5sZW5ndGg7VCs9Myl0aGlzLndvcmRzW1NdfD0oRj14W1RdfHhbVCsxXTw8OHx4W1QrMl08PDE2KTw8eWUmNjcxMDg4NjMsdGhpcy53b3Jkc1tTKzFd''@;'; put 'put ''PUY+Pj4yNi15ZSY2NzEwODg2MywoeWUrPTI0KT49MjYmJih5ZS09MjYsUysrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oeCxQLFYpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoeC5sZW5ndGgtUCkvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXko''@;'; put 'put ''dGhpcy5sZW5ndGgpO2Zvcih2YXIgVD0wO1Q8dGhpcy5sZW5ndGg7VCsrKXRoaXMud29yZHNbVF09MDt2YXIgUyxGPTAseWU9MDtpZigiYmUiPT09Vilmb3IoVD14Lmxlbmd0aC0xO1Q+PVA7VC09MilTPUooeCxQLFQpPDxGLHRoaXMud29yZHNbeWVdfD02NzEwODg2MyZTLEY+PTE4PyhGLT0x''@;'; put 'put ''OCx0aGlzLndvcmRzW3llKz0xXXw9Uz4+PjI2KTpGKz04O2Vsc2UgZm9yKFQ9KHgubGVuZ3RoLVApJTI9PTA/UCsxOlA7VDx4Lmxlbmd0aDtUKz0yKVM9Sih4LFAsVCk8PEYsdGhpcy53b3Jkc1t5ZV18PTY3MTA4ODYzJlMsRj49MTg/KEYtPTE4LHRoaXMud29yZHNbeWUrPTFdfD1TPj4+MjYp''@;'; put 'put ''OkYrPTg7dGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKHgsUCxWKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgVD0wLFM9MTtTPD02NzEwODg2MztTKj1QKVQrKztULS0sUz1TL1B8MDtmb3IodmFyIEY9eC5sZW5ndGgtVix5ZT1GJVQs''@;'; put 'put ''Q2U9TWF0aC5taW4oRixGLXllKStWLERlPTAsUGU9VjtQZTxDZTtQZSs9VClEZT1zZSh4LFBlLFBlK1QsUCksdGhpcy5pbXVsbihTKSx0aGlzLndvcmRzWzBdK0RlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPURlOnRoaXMuX2lhZGRuKERlKTtpZigwIT09eWUpe3ZhciBRZT0xO2ZvcihEZT1z''@;'; put 'put ''ZSh4LFBlLHgubGVuZ3RoLFApLFBlPTA7UGU8eWU7UGUrKylRZSo9UDt0aGlzLmltdWxuKFFlKSx0aGlzLndvcmRzWzBdK0RlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPURlOnRoaXMuX2lhZGRuKERlKX10aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oeCl7eC53b3Jk''@;'; put 'put ''cz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgUD0wO1A8dGhpcy5sZW5ndGg7UCsrKXgud29yZHNbUF09dGhpcy53b3Jkc1tQXTt4Lmxlbmd0aD10aGlzLmxlbmd0aCx4Lm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUseC5yZWQ9dGhpcy5yZWR9LE4ucHJvdG90eXBlLmNsb25lPWZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIHg9bmV3IE4obnVsbCk7cmV0dXJuIHRoaXMuY29weSh4KSx4fSxOLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKHgpe2Zvcig7dGhpcy5sZW5ndGg8eDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxOLnByb3RvdHlwZS5zdHJpcD1mdW5jdGlv''@;'; put 'put ''bigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LE4ucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRz''@;'; put 'put ''WzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSxOLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBvZT1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAw''@;'; put 'put ''MCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxjZT1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxkZT1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYw''@;'; put 'put ''NDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDEx''@;'; put 'put ''ODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiB2ZSh4LFAsVil7Vi5uZWdhdGl2ZT1QLm5lZ2F0aXZlXngubmVnYXRpdmU7dmFyIFQ9eC5sZW5ndGgrUC5s''@;'; put 'put ''ZW5ndGh8MDtWLmxlbmd0aD1ULFQ9VC0xfDA7dmFyIFM9MHx4LndvcmRzWzBdLEY9MHxQLndvcmRzWzBdLHllPVMqRixEZT15ZS82NzEwODg2NHwwO1Yud29yZHNbMF09NjcxMDg4NjMmeWU7Zm9yKHZhciBQZT0xO1BlPFQ7UGUrKyl7Zm9yKHZhciBRZT1EZT4+PjI2LCRlPTY3MTA4ODYzJkRl''@;'; put 'put ''LGd0PU1hdGgubWluKFBlLFAubGVuZ3RoLTEpLHd0PU1hdGgubWF4KDAsUGUteC5sZW5ndGgrMSk7d3Q8PWd0O3d0KyspUWUrPSh5ZT0oUz0wfHgud29yZHNbUGUtd3R8MF0pKihGPTB8UC53b3Jkc1t3dF0pKyRlKS82NzEwODg2NHwwLCRlPTY3MTA4ODYzJnllO1Yud29yZHNbUGVdPTB8JGUs''@;'; put 'put ''RGU9MHxRZX1yZXR1cm4gMCE9PURlP1Yud29yZHNbUGVdPTB8RGU6Vi5sZW5ndGgtLSxWLnN0cmlwKCl9Ti5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oeCxQKXt2YXIgVjtpZihQPTB8UHx8MSwxNj09PSh4PXh8fDEwKXx8ImhleCI9PT14KXtWPSIiO2Zvcih2YXIgVD0wLFM9MCxGPTA7''@;'; put 'put ''Rjx0aGlzLmxlbmd0aDtGKyspe3ZhciB5ZT10aGlzLndvcmRzW0ZdLENlPSgxNjc3NzIxNSYoeWU8PFR8UykpLnRvU3RyaW5nKDE2KTtWPTAhPShTPXllPj4+MjQtVCYxNjc3NzIxNSl8fEYhPT10aGlzLmxlbmd0aC0xP29lWzYtQ2UubGVuZ3RoXStDZStWOkNlK1YsKFQrPTIpPj0yNiYmKFQt''@;'; put 'put ''PTI2LEYtLSl9Zm9yKDAhPT1TJiYoVj1TLnRvU3RyaW5nKDE2KStWKTtWLmxlbmd0aCVQIT0wOylWPSIwIitWO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKFY9Ii0iK1YpLFZ9aWYoeD09PSgwfHgpJiZ4Pj0yJiZ4PD0zNil7dmFyIERlPWNlW3hdLFBlPWRlW3hdO1Y9IiI7dmFyIFFlPXRo''@;'; put 'put ''aXMuY2xvbmUoKTtmb3IoUWUubmVnYXRpdmU9MDshUWUuaXNaZXJvKCk7KXt2YXIgJGU9UWUubW9kbihQZSkudG9TdHJpbmcoeCk7Vj0oUWU9UWUuaWRpdm4oUGUpKS5pc1plcm8oKT8kZStWOm9lW0RlLSRlLmxlbmd0aF0rJGUrVn1mb3IodGhpcy5pc1plcm8oKSYmKFY9IjAiK1YpO1YubGVu''@;'; put 'put ''Z3RoJVAhPTA7KVY9IjAiK1Y7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoVj0iLSIrViksVn1ZKCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LE4ucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMu''@;'; put 'put ''bGVuZ3RoP3grPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT94Kz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmWSghMSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0''@;'; put 'put ''byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LXg6eH0sTi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpfSxOLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbih4LFApe3JldHVybiBZKHZvaWQgMCE9PXRlKSx0aGlzLnRvQXJyYXlMaWtl''@;'; put 'put ''KHRlLHgsUCl9LE4ucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSx4LFApfSxOLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbih4LFAsVil7dmFyIFQ9dGhpcy5ieXRlTGVuZ3RoKCksUz1WfHxNYXRoLm1heCgxLFQpO1ko''@;'; put 'put ''VDw9UywiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLFkoUz4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIEYseWUsQ2U9ImxlIj09PVAsRGU9bmV3IHgoUyksUGU9dGhpcy5jbG9uZSgpO2lmKENlKXtmb3IoeWU9MDshUGUu''@;'; put 'put ''aXNaZXJvKCk7eWUrKylGPVBlLmFuZGxuKDI1NSksUGUuaXVzaHJuKDgpLERlW3llXT1GO2Zvcig7eWU8Uzt5ZSsrKURlW3llXT0wfWVsc2V7Zm9yKHllPTA7eWU8Uy1UO3llKyspRGVbeWVdPTA7Zm9yKHllPTA7IVBlLmlzWmVybygpO3llKyspRj1QZS5hbmRsbigyNTUpLFBlLml1c2hybig4''@;'; put 'put ''KSxEZVtTLXllLTFdPUZ9cmV0dXJuIERlfSxOLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oeCl7cmV0dXJuIDMyLU1hdGguY2x6MzIoeCl9OmZ1bmN0aW9uKHgpe3ZhciBQPXgsVj0wO3JldHVybiBQPj00MDk2JiYoVis9MTMsUD4+Pj0xMyksUD49NjQmJihWKz03''@;'; put 'put ''LFA+Pj49NyksUD49OCYmKFYrPTQsUD4+Pj00KSxQPj0yJiYoVis9MixQPj4+PTIpLFYrUH0sTi5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKHgpe2lmKDA9PT14KXJldHVybiAyNjt2YXIgUD14LFY9MDtyZXR1cm4gMD09KDgxOTEmUCkmJihWKz0xMyxQPj4+PTEzKSwwPT0oMTI3JlAp''@;'; put 'put ''JiYoVis9NyxQPj4+PTcpLDA9PSgxNSZQKSYmKFYrPTQsUD4+Pj00KSwwPT0oMyZQKSYmKFYrPTIsUD4+Pj0yKSwwPT0oMSZQKSYmVisrLFZ9LE4ucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciBQPXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTty''@;'; put 'put ''ZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK1B9LE4ucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIHg9MCxQPTA7UDx0aGlzLmxlbmd0aDtQKyspe3ZhciBWPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbUF0pO2lmKHgrPVYs''@;'; put 'put ''MjYhPT1WKWJyZWFrfXJldHVybiB4fSxOLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxOLnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oeCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5v''@;'; put 'put ''dG4oeCkuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxOLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy50ZXN0bih4LTEpP3RoaXMubm90bih4KS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxOLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAw''@;'; put 'put ''IT09dGhpcy5uZWdhdGl2ZX0sTi5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LE4ucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LE4ucHJvdG90eXBlLml1b3I9''@;'; put 'put ''ZnVuY3Rpb24oeCl7Zm9yKDt0aGlzLmxlbmd0aDx4Lmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgUD0wO1A8eC5sZW5ndGg7UCsrKXRoaXMud29yZHNbUF09dGhpcy53b3Jkc1tQXXx4LndvcmRzW1BdO3JldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBl''@;'; put 'put ''Lmlvcj1mdW5jdGlvbih4KXtyZXR1cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXx4Lm5lZ2F0aXZlKSksdGhpcy5pdW9yKHgpfSxOLnByb3RvdHlwZS5vcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcih4KTp4LmNsb25lKCkuaW9yKHRoaXMp''@;'; put 'put ''fSxOLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKHgpOnguY2xvbmUoKS5pdW9yKHRoaXMpfSxOLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbih4KXt2YXIgUDtQPXRoaXMubGVuZ3RoPngubGVuZ3RoP3g6dGhp''@;'; put 'put ''cztmb3IodmFyIFY9MDtWPFAubGVuZ3RoO1YrKyl0aGlzLndvcmRzW1ZdPXRoaXMud29yZHNbVl0meC53b3Jkc1tWXTtyZXR1cm4gdGhpcy5sZW5ndGg9UC5sZW5ndGgsdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKHgpe3JldHVybiBZKDA9PSh0aGlzLm5lZ2F0aXZl''@;'; put 'put ''fHgubmVnYXRpdmUpKSx0aGlzLml1YW5kKHgpfSxOLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKHgpOnguY2xvbmUoKS5pYW5kKHRoaXMpfSxOLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKHgpe3JldHVybiB0''@;'; put 'put ''aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoeCk6eC5jbG9uZSgpLml1YW5kKHRoaXMpfSxOLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbih4KXt2YXIgUCxWO3RoaXMubGVuZ3RoPngubGVuZ3RoPyhQPXRoaXMsVj14KTooUD14LFY9dGhpcyk7Zm9yKHZhciBUPTA7VDxW''@;'; put 'put ''Lmxlbmd0aDtUKyspdGhpcy53b3Jkc1tUXT1QLndvcmRzW1RdXlYud29yZHNbVF07aWYodGhpcyE9PVApZm9yKDtUPFAubGVuZ3RoO1QrKyl0aGlzLndvcmRzW1RdPVAud29yZHNbVF07cmV0dXJuIHRoaXMubGVuZ3RoPVAubGVuZ3RoLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaXhvcj1m''@;'; put 'put ''dW5jdGlvbih4KXtyZXR1cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXx4Lm5lZ2F0aXZlKSksdGhpcy5pdXhvcih4KX0sTi5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcih4KTp4LmNsb25lKCkuaXhvcih0aGlzKX0s''@;'; put 'put ''Ti5wcm90b3R5cGUudXhvcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKHgpOnguY2xvbmUoKS5pdXhvcih0aGlzKX0sTi5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBQ''@;'; put 'put ''PTB8TWF0aC5jZWlsKHgvMjYpLFY9eCUyNjt0aGlzLl9leHBhbmQoUCksVj4wJiZQLS07Zm9yKHZhciBUPTA7VDxQO1QrKyl0aGlzLndvcmRzW1RdPTY3MTA4ODYzJn50aGlzLndvcmRzW1RdO3JldHVybiBWPjAmJih0aGlzLndvcmRzW1RdPX50aGlzLndvcmRzW1RdJjY3MTA4ODYzPj4yNi1W''@;'; put 'put ''KSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bih4KX0sTi5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbih4LFApe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgVj14LzI2fDAsVD14JTI2O3JldHVybiB0aGlz''@;'; put 'put ''Ll9leHBhbmQoVisxKSx0aGlzLndvcmRzW1ZdPVA/dGhpcy53b3Jkc1tWXXwxPDxUOnRoaXMud29yZHNbVl0mfigxPDxUKSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oeCl7dmFyIFAsVixUO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09eC5uZWdhdGl2ZSlyZXR1''@;'; put 'put ''cm4gdGhpcy5uZWdhdGl2ZT0wLFA9dGhpcy5pc3ViKHgpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXgubmVnYXRpdmUpcmV0dXJuIHgubmVnYXRpdmU9MCxQPXRoaXMuaXN1Yih4KSx4Lm5lZ2F0aXZlPTEsUC5fbm9ybVNpZ24o''@;'; put 'put ''KTt0aGlzLmxlbmd0aD54Lmxlbmd0aD8oVj10aGlzLFQ9eCk6KFY9eCxUPXRoaXMpO2Zvcih2YXIgUz0wLEY9MDtGPFQubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPTY3MTA4ODYzJihQPSgwfFYud29yZHNbRl0pKygwfFQud29yZHNbRl0pK1MpLFM9UD4+PjI2O2Zvcig7MCE9PVMmJkY8Vi5s''@;'; put 'put ''ZW5ndGg7RisrKXRoaXMud29yZHNbRl09NjcxMDg4NjMmKFA9KDB8Vi53b3Jkc1tGXSkrUyksUz1QPj4+MjY7aWYodGhpcy5sZW5ndGg9Vi5sZW5ndGgsMCE9PVMpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09Uyx0aGlzLmxlbmd0aCsrO2Vsc2UgaWYoViE9PXRoaXMpZm9yKDtGPFYubGVuZ3Ro''@;'; put 'put ''O0YrKyl0aGlzLndvcmRzW0ZdPVYud29yZHNbRl07cmV0dXJuIHRoaXN9LE4ucHJvdG90eXBlLmFkZD1mdW5jdGlvbih4KXt2YXIgUDtyZXR1cm4gMCE9PXgubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyh4Lm5lZ2F0aXZlPTAsUD10aGlzLnN1Yih4KSx4Lm5lZ2F0aXZlXj0xLFApOjA9''@;'; put 'put ''PT14Lm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLFA9eC5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLFApOnRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKHgpOnguY2xvbmUoKS5pYWRkKHRoaXMpfSxOLnByb3RvdHlwZS5pc3ViPWZ1''@;'; put 'put ''bmN0aW9uKHgpe2lmKDAhPT14Lm5lZ2F0aXZlKXt4Lm5lZ2F0aXZlPTA7dmFyIFA9dGhpcy5pYWRkKHgpO3JldHVybiB4Lm5lZ2F0aXZlPTEsUC5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZCh4KSx0aGlzLm5lZ2F0aXZl''@;'; put 'put ''PTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgVixULFM9dGhpcy5jbXAoeCk7aWYoMD09PVMpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO1M+MD8oVj10aGlzLFQ9eCk6KFY9eCxUPXRoaXMpO2Zvcih2YXIgRj0wLHllPTA7eWU8VC5sZW5n''@;'; put 'put ''dGg7eWUrKylGPShQPSgwfFYud29yZHNbeWVdKS0oMHxULndvcmRzW3llXSkrRik+PjI2LHRoaXMud29yZHNbeWVdPTY3MTA4ODYzJlA7Zm9yKDswIT09RiYmeWU8Vi5sZW5ndGg7eWUrKylGPShQPSgwfFYud29yZHNbeWVdKStGKT4+MjYsdGhpcy53b3Jkc1t5ZV09NjcxMDg4NjMmUDtpZigw''@;'; put 'put ''PT09RiYmeWU8Vi5sZW5ndGgmJlYhPT10aGlzKWZvcig7eWU8Vi5sZW5ndGg7eWUrKyl0aGlzLndvcmRzW3llXT1WLndvcmRzW3llXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgseWUpLFYhPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LE4u''@;'; put 'put ''cHJvdG90eXBlLnN1Yj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoeCl9O3ZhciBBZT1mdW5jdGlvbih4LFAsVil7dmFyIFQsUyxGLHllPXgud29yZHMsQ2U9UC53b3JkcyxEZT1WLndvcmRzLFBlPTAsUWU9MHx5ZVswXSwkZT04MTkxJlFlLGd0PVFlPj4+MTMsd3Q9MHx5''@;'; put 'put ''ZVsxXSxtdD04MTkxJnd0LHZ0PXd0Pj4+MTMsQXQ9MHx5ZVsyXSxodD04MTkxJkF0LEJ0PUF0Pj4+MTMsb249MHx5ZVszXSxfdD04MTkxJm9uLHR0PW9uPj4+MTMsZXQ9MHx5ZVs0XSxsdD04MTkxJmV0LEx0PWV0Pj4+MTMsQ3Q9MHx5ZVs1XSxmdD04MTkxJkN0LEh0PUN0Pj4+MTMsR2U9MHx5''@;'; put 'put ''ZVs2XSxVZT04MTkxJkdlLHl0PUdlPj4+MTMsanQ9MHx5ZVs3XSxKdD04MTkxJmp0LGduPWp0Pj4+MTMsZG49MHx5ZVs4XSx5bj04MTkxJmRuLGxuPWRuPj4+MTMsTm49MHx5ZVs5XSxibj04MTkxJk5uLGVyPU5uPj4+MTMsc3I9MHxDZVswXSxYbj04MTkxJnNyLEZyPXNyPj4+MTMseHI9MHxD''@;'; put 'put ''ZVsxXSxxdD04MTkxJnhyLHByPXhyPj4+MTMsbnI9MHxDZVsyXSxBbj04MTkxJm5yLHFuPW5yPj4+MTMsV3Q9MHxDZVszXSxwbj04MTkxJld0LEtuPVd0Pj4+MTMsTnQ9MHxDZVs0XSxzbj04MTkxJk50LFVuPU50Pj4+MTMsd249MHxDZVs1XSx0bj04MTkxJnduLHpuPXduPj4+MTMsVHI9MHxD''@;'; put 'put ''ZVs2XSxCbj04MTkxJlRyLGtyPVRyPj4+MTMsbW49MHxDZVs3XSx1bj04MTkxJm1uLGNuPW1uPj4+MTMsX249MHxDZVs4XSxHdD04MTkxJl9uLGtuPV9uPj4+MTMsVm49MHxDZVs5XSxlbj04MTkxJlZuLEluPVZuPj4+MTM7Vi5uZWdhdGl2ZT14Lm5lZ2F0aXZlXlAubmVnYXRpdmUsVi5sZW5n''@;'; put 'put ''dGg9MTk7dmFyIEpuPShQZSsoVD1NYXRoLmltdWwoJGUsWG4pKXwwKSsoKDgxOTEmKFM9KFM9TWF0aC5pbXVsKCRlLEZyKSkrTWF0aC5pbXVsKGd0LFhuKXwwKSk8PDEzKXwwO1BlPSgoRj1NYXRoLmltdWwoZ3QsRnIpKSsoUz4+PjEzKXwwKSsoSm4+Pj4yNil8MCxKbiY9NjcxMDg4NjMsVD1N''@;'; put 'put ''YXRoLmltdWwobXQsWG4pLFM9KFM9TWF0aC5pbXVsKG10LEZyKSkrTWF0aC5pbXVsKHZ0LFhuKXwwLEY9TWF0aC5pbXVsKHZ0LEZyKTt2YXIgb3I9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUscHIpfDApK01hdGguaW11bChndCxx''@;'; put 'put ''dCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QscHIpfDApKyhTPj4+MTMpfDApKyhvcj4+PjI2KXwwLG9yJj02NzEwODg2MyxUPU1hdGguaW11bChodCxYbiksUz0oUz1NYXRoLmltdWwoaHQsRnIpKStNYXRoLmltdWwoQnQsWG4pfDAsRj1NYXRoLmltdWwoQnQsRnIpLFQ9VCtN''@;'; put 'put ''YXRoLmltdWwobXQscXQpfDAsUz0oUz1TK01hdGguaW11bChtdCxwcil8MCkrTWF0aC5pbXVsKHZ0LHF0KXwwLEY9RitNYXRoLmltdWwodnQscHIpfDA7dmFyIGdyPShQZSsoVD1UK01hdGguaW11bCgkZSxBbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLHFuKXwwKStNYXRo''@;'; put 'put ''LmltdWwoZ3QsQW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LHFuKXwwKSsoUz4+PjEzKXwwKSsoZ3I+Pj4yNil8MCxnciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoX3QsWG4pLFM9KFM9TWF0aC5pbXVsKF90LEZyKSkrTWF0aC5pbXVsKHR0LFhuKXwwLEY9TWF0aC5pbXVsKHR0''@;'; put 'put ''LEZyKSxUPVQrTWF0aC5pbXVsKGh0LHF0KXwwLFM9KFM9UytNYXRoLmltdWwoaHQscHIpfDApK01hdGguaW11bChCdCxxdCl8MCxGPUYrTWF0aC5pbXVsKEJ0LHByKXwwLFQ9VCtNYXRoLmltdWwobXQsQW4pfDAsUz0oUz1TK01hdGguaW11bChtdCxxbil8MCkrTWF0aC5pbXVsKHZ0LEFuKXww''@;'; put 'put ''LEY9RitNYXRoLmltdWwodnQscW4pfDA7dmFyIEtyPShQZSsoVD1UK01hdGguaW11bCgkZSxwbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLEtuKXwwKStNYXRoLmltdWwoZ3QscG4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LEtuKXwwKSsoUz4+PjEzKXww''@;'; put 'put ''KSsoS3I+Pj4yNil8MCxLciY9NjcxMDg4NjMsVD1NYXRoLmltdWwobHQsWG4pLFM9KFM9TWF0aC5pbXVsKGx0LEZyKSkrTWF0aC5pbXVsKEx0LFhuKXwwLEY9TWF0aC5pbXVsKEx0LEZyKSxUPVQrTWF0aC5pbXVsKF90LHF0KXwwLFM9KFM9UytNYXRoLmltdWwoX3QscHIpfDApK01hdGguaW11''@;'; put 'put ''bCh0dCxxdCl8MCxGPUYrTWF0aC5pbXVsKHR0LHByKXwwLFQ9VCtNYXRoLmltdWwoaHQsQW4pfDAsUz0oUz1TK01hdGguaW11bChodCxxbil8MCkrTWF0aC5pbXVsKEJ0LEFuKXwwLEY9RitNYXRoLmltdWwoQnQscW4pfDAsVD1UK01hdGguaW11bChtdCxwbil8MCxTPShTPVMrTWF0aC5pbXVs''@;'; put 'put ''KG10LEtuKXwwKStNYXRoLmltdWwodnQscG4pfDAsRj1GK01hdGguaW11bCh2dCxLbil8MDt2YXIgVnI9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLHNuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsVW4pfDApK01hdGguaW11bChndCxzbil8MCkpPDwxMyl8MDtQZT0oKEY9RitN''@;'; put 'put ''YXRoLmltdWwoZ3QsVW4pfDApKyhTPj4+MTMpfDApKyhWcj4+PjI2KXwwLFZyJj02NzEwODg2MyxUPU1hdGguaW11bChmdCxYbiksUz0oUz1NYXRoLmltdWwoZnQsRnIpKStNYXRoLmltdWwoSHQsWG4pfDAsRj1NYXRoLmltdWwoSHQsRnIpLFQ9VCtNYXRoLmltdWwobHQscXQpfDAsUz0oUz1T''@;'; put 'put ''K01hdGguaW11bChsdCxwcil8MCkrTWF0aC5pbXVsKEx0LHF0KXwwLEY9RitNYXRoLmltdWwoTHQscHIpfDAsVD1UK01hdGguaW11bChfdCxBbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LHFuKXwwKStNYXRoLmltdWwodHQsQW4pfDAsRj1GK01hdGguaW11bCh0dCxxbil8MCxUPVQrTWF0aC5p''@;'; put 'put ''bXVsKGh0LHBuKXwwLFM9KFM9UytNYXRoLmltdWwoaHQsS24pfDApK01hdGguaW11bChCdCxwbil8MCxGPUYrTWF0aC5pbXVsKEJ0LEtuKXwwLFQ9VCtNYXRoLmltdWwobXQsc24pfDAsUz0oUz1TK01hdGguaW11bChtdCxVbil8MCkrTWF0aC5pbXVsKHZ0LHNuKXwwLEY9RitNYXRoLmltdWwo''@;'; put 'put ''dnQsVW4pfDA7dmFyIGlpPShQZSsoVD1UK01hdGguaW11bCgkZSx0bil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLHpuKXwwKStNYXRoLmltdWwoZ3QsdG4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LHpuKXwwKSsoUz4+PjEzKXwwKSsoaWk+Pj4yNil8MCxp''@;'; put 'put ''aSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoVWUsWG4pLFM9KFM9TWF0aC5pbXVsKFVlLEZyKSkrTWF0aC5pbXVsKHl0LFhuKXwwLEY9TWF0aC5pbXVsKHl0LEZyKSxUPVQrTWF0aC5pbXVsKGZ0LHF0KXwwLFM9KFM9UytNYXRoLmltdWwoZnQscHIpfDApK01hdGguaW11bChIdCxxdCl8MCxGPUYr''@;'; put 'put ''TWF0aC5pbXVsKEh0LHByKXwwLFQ9VCtNYXRoLmltdWwobHQsQW4pfDAsUz0oUz1TK01hdGguaW11bChsdCxxbil8MCkrTWF0aC5pbXVsKEx0LEFuKXwwLEY9RitNYXRoLmltdWwoTHQscW4pfDAsVD1UK01hdGguaW11bChfdCxwbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LEtuKXwwKStNYXRo''@;'; put 'put ''LmltdWwodHQscG4pfDAsRj1GK01hdGguaW11bCh0dCxLbil8MCxUPVQrTWF0aC5pbXVsKGh0LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoaHQsVW4pfDApK01hdGguaW11bChCdCxzbil8MCxGPUYrTWF0aC5pbXVsKEJ0LFVuKXwwLFQ9VCtNYXRoLmltdWwobXQsdG4pfDAsUz0oUz1TK01hdGgu''@;'; put 'put ''aW11bChtdCx6bil8MCkrTWF0aC5pbXVsKHZ0LHRuKXwwLEY9RitNYXRoLmltdWwodnQsem4pfDA7dmFyIFJyPShQZSsoVD1UK01hdGguaW11bCgkZSxCbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLGtyKXwwKStNYXRoLmltdWwoZ3QsQm4pfDApKTw8MTMpfDA7UGU9KChG''@;'; put 'put ''PUYrTWF0aC5pbXVsKGd0LGtyKXwwKSsoUz4+PjEzKXwwKSsoUnI+Pj4yNil8MCxSciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoSnQsWG4pLFM9KFM9TWF0aC5pbXVsKEp0LEZyKSkrTWF0aC5pbXVsKGduLFhuKXwwLEY9TWF0aC5pbXVsKGduLEZyKSxUPVQrTWF0aC5pbXVsKFVlLHF0KXwwLFM9''@;'; put 'put ''KFM9UytNYXRoLmltdWwoVWUscHIpfDApK01hdGguaW11bCh5dCxxdCl8MCxGPUYrTWF0aC5pbXVsKHl0LHByKXwwLFQ9VCtNYXRoLmltdWwoZnQsQW4pfDAsUz0oUz1TK01hdGguaW11bChmdCxxbil8MCkrTWF0aC5pbXVsKEh0LEFuKXwwLEY9RitNYXRoLmltdWwoSHQscW4pfDAsVD1UK01h''@;'; put 'put ''dGguaW11bChsdCxwbil8MCxTPShTPVMrTWF0aC5pbXVsKGx0LEtuKXwwKStNYXRoLmltdWwoTHQscG4pfDAsRj1GK01hdGguaW11bChMdCxLbil8MCxUPVQrTWF0aC5pbXVsKF90LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoX3QsVW4pfDApK01hdGguaW11bCh0dCxzbil8MCxGPUYrTWF0aC5p''@;'; put 'put ''bXVsKHR0LFVuKXwwLFQ9VCtNYXRoLmltdWwoaHQsdG4pfDAsUz0oUz1TK01hdGguaW11bChodCx6bil8MCkrTWF0aC5pbXVsKEJ0LHRuKXwwLEY9RitNYXRoLmltdWwoQnQsem4pfDAsVD1UK01hdGguaW11bChtdCxCbil8MCxTPShTPVMrTWF0aC5pbXVsKG10LGtyKXwwKStNYXRoLmltdWwo''@;'; put 'put ''dnQsQm4pfDAsRj1GK01hdGguaW11bCh2dCxrcil8MDt2YXIgbGk9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLHVuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsY24pfDApK01hdGguaW11bChndCx1bil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QsY24pfDApKyhT''@;'; put 'put ''Pj4+MTMpfDApKyhsaT4+PjI2KXwwLGxpJj02NzEwODg2MyxUPU1hdGguaW11bCh5bixYbiksUz0oUz1NYXRoLmltdWwoeW4sRnIpKStNYXRoLmltdWwobG4sWG4pfDAsRj1NYXRoLmltdWwobG4sRnIpLFQ9VCtNYXRoLmltdWwoSnQscXQpfDAsUz0oUz1TK01hdGguaW11bChKdCxwcil8MCkr''@;'; put 'put ''TWF0aC5pbXVsKGduLHF0KXwwLEY9RitNYXRoLmltdWwoZ24scHIpfDAsVD1UK01hdGguaW11bChVZSxBbil8MCxTPShTPVMrTWF0aC5pbXVsKFVlLHFuKXwwKStNYXRoLmltdWwoeXQsQW4pfDAsRj1GK01hdGguaW11bCh5dCxxbil8MCxUPVQrTWF0aC5pbXVsKGZ0LHBuKXwwLFM9KFM9UytN''@;'; put 'put ''YXRoLmltdWwoZnQsS24pfDApK01hdGguaW11bChIdCxwbil8MCxGPUYrTWF0aC5pbXVsKEh0LEtuKXwwLFQ9VCtNYXRoLmltdWwobHQsc24pfDAsUz0oUz1TK01hdGguaW11bChsdCxVbil8MCkrTWF0aC5pbXVsKEx0LHNuKXwwLEY9RitNYXRoLmltdWwoTHQsVW4pfDAsVD1UK01hdGguaW11''@;'; put 'put ''bChfdCx0bil8MCxTPShTPVMrTWF0aC5pbXVsKF90LHpuKXwwKStNYXRoLmltdWwodHQsdG4pfDAsRj1GK01hdGguaW11bCh0dCx6bil8MCxUPVQrTWF0aC5pbXVsKGh0LEJuKXwwLFM9KFM9UytNYXRoLmltdWwoaHQsa3IpfDApK01hdGguaW11bChCdCxCbil8MCxGPUYrTWF0aC5pbXVsKEJ0''@;'; put 'put ''LGtyKXwwLFQ9VCtNYXRoLmltdWwobXQsdW4pfDAsUz0oUz1TK01hdGguaW11bChtdCxjbil8MCkrTWF0aC5pbXVsKHZ0LHVuKXwwLEY9RitNYXRoLmltdWwodnQsY24pfDA7dmFyIE1pPShQZSsoVD1UK01hdGguaW11bCgkZSxHdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRl''@;'; put 'put ''LGtuKXwwKStNYXRoLmltdWwoZ3QsR3QpfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LGtuKXwwKSsoUz4+PjEzKXwwKSsoTWk+Pj4yNil8MCxNaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sWG4pLFM9KFM9TWF0aC5pbXVsKGJuLEZyKSkrTWF0aC5pbXVsKGVyLFhuKXwwLEY9''@;'; put 'put ''TWF0aC5pbXVsKGVyLEZyKSxUPVQrTWF0aC5pbXVsKHluLHF0KXwwLFM9KFM9UytNYXRoLmltdWwoeW4scHIpfDApK01hdGguaW11bChsbixxdCl8MCxGPUYrTWF0aC5pbXVsKGxuLHByKXwwLFQ9VCtNYXRoLmltdWwoSnQsQW4pfDAsUz0oUz1TK01hdGguaW11bChKdCxxbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKGduLEFuKXwwLEY9RitNYXRoLmltdWwoZ24scW4pfDAsVD1UK01hdGguaW11bChVZSxwbil8MCxTPShTPVMrTWF0aC5pbXVsKFVlLEtuKXwwKStNYXRoLmltdWwoeXQscG4pfDAsRj1GK01hdGguaW11bCh5dCxLbil8MCxUPVQrTWF0aC5pbXVsKGZ0LHNuKXwwLFM9KFM9UytNYXRoLmlt''@;'; put 'put ''dWwoZnQsVW4pfDApK01hdGguaW11bChIdCxzbil8MCxGPUYrTWF0aC5pbXVsKEh0LFVuKXwwLFQ9VCtNYXRoLmltdWwobHQsdG4pfDAsUz0oUz1TK01hdGguaW11bChsdCx6bil8MCkrTWF0aC5pbXVsKEx0LHRuKXwwLEY9RitNYXRoLmltdWwoTHQsem4pfDAsVD1UK01hdGguaW11bChfdCxC''@;'; put 'put ''bil8MCxTPShTPVMrTWF0aC5pbXVsKF90LGtyKXwwKStNYXRoLmltdWwodHQsQm4pfDAsRj1GK01hdGguaW11bCh0dCxrcil8MCxUPVQrTWF0aC5pbXVsKGh0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwoaHQsY24pfDApK01hdGguaW11bChCdCx1bil8MCxGPUYrTWF0aC5pbXVsKEJ0LGNuKXww''@;'; put 'put ''LFQ9VCtNYXRoLmltdWwobXQsR3QpfDAsUz0oUz1TK01hdGguaW11bChtdCxrbil8MCkrTWF0aC5pbXVsKHZ0LEd0KXwwLEY9RitNYXRoLmltdWwodnQsa24pfDA7dmFyIG8wPShQZSsoVD1UK01hdGguaW11bCgkZSxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLEluKXww''@;'; put 'put ''KStNYXRoLmltdWwoZ3QsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LEluKXwwKSsoUz4+PjEzKXwwKSsobzA+Pj4yNil8MCxvMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4scXQpLFM9KFM9TWF0aC5pbXVsKGJuLHByKSkrTWF0aC5pbXVsKGVyLHF0KXwwLEY9TWF0aC5p''@;'; put 'put ''bXVsKGVyLHByKSxUPVQrTWF0aC5pbXVsKHluLEFuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4scW4pfDApK01hdGguaW11bChsbixBbil8MCxGPUYrTWF0aC5pbXVsKGxuLHFuKXwwLFQ9VCtNYXRoLmltdWwoSnQscG4pfDAsUz0oUz1TK01hdGguaW11bChKdCxLbil8MCkrTWF0aC5pbXVsKGdu''@;'; put 'put ''LHBuKXwwLEY9RitNYXRoLmltdWwoZ24sS24pfDAsVD1UK01hdGguaW11bChVZSxzbil8MCxTPShTPVMrTWF0aC5pbXVsKFVlLFVuKXwwKStNYXRoLmltdWwoeXQsc24pfDAsRj1GK01hdGguaW11bCh5dCxVbil8MCxUPVQrTWF0aC5pbXVsKGZ0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQs''@;'; put 'put ''em4pfDApK01hdGguaW11bChIdCx0bil8MCxGPUYrTWF0aC5pbXVsKEh0LHpuKXwwLFQ9VCtNYXRoLmltdWwobHQsQm4pfDAsUz0oUz1TK01hdGguaW11bChsdCxrcil8MCkrTWF0aC5pbXVsKEx0LEJuKXwwLEY9RitNYXRoLmltdWwoTHQsa3IpfDAsVD1UK01hdGguaW11bChfdCx1bil8MCxT''@;'; put 'put ''PShTPVMrTWF0aC5pbXVsKF90LGNuKXwwKStNYXRoLmltdWwodHQsdW4pfDAsRj1GK01hdGguaW11bCh0dCxjbil8MCxUPVQrTWF0aC5pbXVsKGh0LEd0KXwwLFM9KFM9UytNYXRoLmltdWwoaHQsa24pfDApK01hdGguaW11bChCdCxHdCl8MCxGPUYrTWF0aC5pbXVsKEJ0LGtuKXwwO3ZhciBu''@;'; put 'put ''MD0oUGUrKFQ9VCtNYXRoLmltdWwobXQsZW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChtdCxJbil8MCkrTWF0aC5pbXVsKHZ0LGVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bCh2dCxJbil8MCkrKFM+Pj4xMyl8MCkrKG4wPj4+MjYpfDAsbjAmPTY3MTA4ODYzLFQ9''@;'; put 'put ''TWF0aC5pbXVsKGJuLEFuKSxTPShTPU1hdGguaW11bChibixxbikpK01hdGguaW11bChlcixBbil8MCxGPU1hdGguaW11bChlcixxbiksVD1UK01hdGguaW11bCh5bixwbil8MCxTPShTPVMrTWF0aC5pbXVsKHluLEtuKXwwKStNYXRoLmltdWwobG4scG4pfDAsRj1GK01hdGguaW11bChsbixL''@;'; put 'put ''bil8MCxUPVQrTWF0aC5pbXVsKEp0LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsVW4pfDApK01hdGguaW11bChnbixzbil8MCxGPUYrTWF0aC5pbXVsKGduLFVuKXwwLFQ9VCtNYXRoLmltdWwoVWUsdG4pfDAsUz0oUz1TK01hdGguaW11bChVZSx6bil8MCkrTWF0aC5pbXVsKHl0LHRuKXww''@;'; put 'put ''LEY9RitNYXRoLmltdWwoeXQsem4pfDAsVD1UK01hdGguaW11bChmdCxCbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LGtyKXwwKStNYXRoLmltdWwoSHQsQm4pfDAsRj1GK01hdGguaW11bChIdCxrcil8MCxUPVQrTWF0aC5pbXVsKGx0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwobHQsY24pfDAp''@;'; put 'put ''K01hdGguaW11bChMdCx1bil8MCxGPUYrTWF0aC5pbXVsKEx0LGNuKXwwLFQ9VCtNYXRoLmltdWwoX3QsR3QpfDAsUz0oUz1TK01hdGguaW11bChfdCxrbil8MCkrTWF0aC5pbXVsKHR0LEd0KXwwLEY9RitNYXRoLmltdWwodHQsa24pfDA7dmFyIGQwPShQZSsoVD1UK01hdGguaW11bChodCxl''@;'; put 'put ''bil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKGh0LEluKXwwKStNYXRoLmltdWwoQnQsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKEJ0LEluKXwwKSsoUz4+PjEzKXwwKSsoZDA+Pj4yNil8MCxkMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4scG4pLFM9KFM9TWF0''@;'; put 'put ''aC5pbXVsKGJuLEtuKSkrTWF0aC5pbXVsKGVyLHBuKXwwLEY9TWF0aC5pbXVsKGVyLEtuKSxUPVQrTWF0aC5pbXVsKHluLHNuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4sVW4pfDApK01hdGguaW11bChsbixzbil8MCxGPUYrTWF0aC5pbXVsKGxuLFVuKXwwLFQ9VCtNYXRoLmltdWwoSnQsdG4p''@;'; put 'put ''fDAsUz0oUz1TK01hdGguaW11bChKdCx6bil8MCkrTWF0aC5pbXVsKGduLHRuKXwwLEY9RitNYXRoLmltdWwoZ24sem4pfDAsVD1UK01hdGguaW11bChVZSxCbil8MCxTPShTPVMrTWF0aC5pbXVsKFVlLGtyKXwwKStNYXRoLmltdWwoeXQsQm4pfDAsRj1GK01hdGguaW11bCh5dCxrcil8MCxU''@;'; put 'put ''PVQrTWF0aC5pbXVsKGZ0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsY24pfDApK01hdGguaW11bChIdCx1bil8MCxGPUYrTWF0aC5pbXVsKEh0LGNuKXwwLFQ9VCtNYXRoLmltdWwobHQsR3QpfDAsUz0oUz1TK01hdGguaW11bChsdCxrbil8MCkrTWF0aC5pbXVsKEx0LEd0KXwwLEY9RitN''@;'; put 'put ''YXRoLmltdWwoTHQsa24pfDA7dmFyIG0wPShQZSsoVD1UK01hdGguaW11bChfdCxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKF90LEluKXwwKStNYXRoLmltdWwodHQsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKHR0LEluKXwwKSsoUz4+PjEzKXwwKSsobTA+''@;'; put 'put ''Pj4yNil8MCxtMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sc24pLFM9KFM9TWF0aC5pbXVsKGJuLFVuKSkrTWF0aC5pbXVsKGVyLHNuKXwwLEY9TWF0aC5pbXVsKGVyLFVuKSxUPVQrTWF0aC5pbXVsKHluLHRuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4sem4pfDApK01hdGguaW11bChsbix0''@;'; put 'put ''bil8MCxGPUYrTWF0aC5pbXVsKGxuLHpuKXwwLFQ9VCtNYXRoLmltdWwoSnQsQm4pfDAsUz0oUz1TK01hdGguaW11bChKdCxrcil8MCkrTWF0aC5pbXVsKGduLEJuKXwwLEY9RitNYXRoLmltdWwoZ24sa3IpfDAsVD1UK01hdGguaW11bChVZSx1bil8MCxTPShTPVMrTWF0aC5pbXVsKFVlLGNu''@;'; put 'put ''KXwwKStNYXRoLmltdWwoeXQsdW4pfDAsRj1GK01hdGguaW11bCh5dCxjbil8MCxUPVQrTWF0aC5pbXVsKGZ0LEd0KXwwLFM9KFM9UytNYXRoLmltdWwoZnQsa24pfDApK01hdGguaW11bChIdCxHdCl8MCxGPUYrTWF0aC5pbXVsKEh0LGtuKXwwO3ZhciBHMD0oUGUrKFQ9VCtNYXRoLmltdWwo''@;'; put 'put ''bHQsZW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChsdCxJbil8MCkrTWF0aC5pbXVsKEx0LGVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChMdCxJbil8MCkrKFM+Pj4xMyl8MCkrKEcwPj4+MjYpfDAsRzAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGJuLHRuKSxTPShT''@;'; put 'put ''PU1hdGguaW11bChibix6bikpK01hdGguaW11bChlcix0bil8MCxGPU1hdGguaW11bChlcix6biksVD1UK01hdGguaW11bCh5bixCbil8MCxTPShTPVMrTWF0aC5pbXVsKHluLGtyKXwwKStNYXRoLmltdWwobG4sQm4pfDAsRj1GK01hdGguaW11bChsbixrcil8MCxUPVQrTWF0aC5pbXVsKEp0''@;'; put 'put ''LHVuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsY24pfDApK01hdGguaW11bChnbix1bil8MCxGPUYrTWF0aC5pbXVsKGduLGNuKXwwLFQ9VCtNYXRoLmltdWwoVWUsR3QpfDAsUz0oUz1TK01hdGguaW11bChVZSxrbil8MCkrTWF0aC5pbXVsKHl0LEd0KXwwLEY9RitNYXRoLmltdWwoeXQsa24p''@;'; put 'put ''fDA7dmFyIERpPShQZSsoVD1UK01hdGguaW11bChmdCxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKGZ0LEluKXwwKStNYXRoLmltdWwoSHQsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKEh0LEluKXwwKSsoUz4+PjEzKXwwKSsoRGk+Pj4yNil8MCxEaSY9Njcx''@;'; put 'put ''MDg4NjMsVD1NYXRoLmltdWwoYm4sQm4pLFM9KFM9TWF0aC5pbXVsKGJuLGtyKSkrTWF0aC5pbXVsKGVyLEJuKXwwLEY9TWF0aC5pbXVsKGVyLGtyKSxUPVQrTWF0aC5pbXVsKHluLHVuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4sY24pfDApK01hdGguaW11bChsbix1bil8MCxGPUYrTWF0aC5p''@;'; put 'put ''bXVsKGxuLGNuKXwwLFQ9VCtNYXRoLmltdWwoSnQsR3QpfDAsUz0oUz1TK01hdGguaW11bChKdCxrbil8MCkrTWF0aC5pbXVsKGduLEd0KXwwLEY9RitNYXRoLmltdWwoZ24sa24pfDA7dmFyIFcwPShQZSsoVD1UK01hdGguaW11bChVZSxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5p''@;'; put 'put ''bXVsKFVlLEluKXwwKStNYXRoLmltdWwoeXQsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKHl0LEluKXwwKSsoUz4+PjEzKXwwKSsoVzA+Pj4yNil8MCxXMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sdW4pLFM9KFM9TWF0aC5pbXVsKGJuLGNuKSkrTWF0aC5pbXVsKGVyLHVu''@;'; put 'put ''KXwwLEY9TWF0aC5pbXVsKGVyLGNuKSxUPVQrTWF0aC5pbXVsKHluLEd0KXwwLFM9KFM9UytNYXRoLmltdWwoeW4sa24pfDApK01hdGguaW11bChsbixHdCl8MCxGPUYrTWF0aC5pbXVsKGxuLGtuKXwwO3ZhciBFbz0oUGUrKFQ9VCtNYXRoLmltdWwoSnQsZW4pfDApfDApKygoODE5MSYoUz0o''@;'; put 'put ''Uz1TK01hdGguaW11bChKdCxJbil8MCkrTWF0aC5pbXVsKGduLGVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChnbixJbil8MCkrKFM+Pj4xMyl8MCkrKEVvPj4+MjYpfDAsRW8mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGJuLEd0KSxTPShTPU1hdGguaW11bChibixrbikpK01hdGgu''@;'; put 'put ''aW11bChlcixHdCl8MCxGPU1hdGguaW11bChlcixrbik7dmFyIHFvPShQZSsoVD1UK01hdGguaW11bCh5bixlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKHluLEluKXwwKStNYXRoLmltdWwobG4sZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGxuLEluKXwwKSso''@;'; put 'put ''Uz4+PjEzKXwwKSsocW8+Pj4yNil8MCxxbyY9NjcxMDg4NjM7dmFyIGNhPShQZSsoVD1NYXRoLmltdWwoYm4sZW4pKXwwKSsoKDgxOTEmKFM9KFM9TWF0aC5pbXVsKGJuLEluKSkrTWF0aC5pbXVsKGVyLGVuKXwwKSk8PDEzKXwwO3JldHVybiBQZT0oKEY9TWF0aC5pbXVsKGVyLEluKSkrKFM+''@;'; put 'put ''Pj4xMyl8MCkrKGNhPj4+MjYpfDAsY2EmPTY3MTA4ODYzLERlWzBdPUpuLERlWzFdPW9yLERlWzJdPWdyLERlWzNdPUtyLERlWzRdPVZyLERlWzVdPWlpLERlWzZdPVJyLERlWzddPWxpLERlWzhdPU1pLERlWzldPW8wLERlWzEwXT1uMCxEZVsxMV09ZDAsRGVbMTJdPW0wLERlWzEzXT1HMCxE''@;'; put 'put ''ZVsxNF09RGksRGVbMTVdPVcwLERlWzE2XT1FbyxEZVsxN109cW8sRGVbMThdPWNhLDAhPT1QZSYmKERlWzE5XT1QZSxWLmxlbmd0aCsrKSxWfTtmdW5jdGlvbiBrZSh4LFAsVil7cmV0dXJuKG5ldyBTZSkubXVscCh4LFAsVil9ZnVuY3Rpb24gU2UoeCxQKXt0aGlzLng9eCx0aGlzLnk9UH1N''@;'; put 'put ''YXRoLmltdWx8fChBZT12ZSksTi5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oeCxQKXt2YXIgVD10aGlzLmxlbmd0aCt4Lmxlbmd0aDtyZXR1cm4gMTA9PT10aGlzLmxlbmd0aCYmMTA9PT14Lmxlbmd0aD9BZSh0aGlzLHgsUCk6VDw2Mz92ZSh0aGlzLHgsUCk6VDwxMDI0P2Z1bmN0aW9uKFMs''@;'; put 'put ''Rix5ZSl7eWUubmVnYXRpdmU9Ri5uZWdhdGl2ZV5TLm5lZ2F0aXZlLHllLmxlbmd0aD1TLmxlbmd0aCtGLmxlbmd0aDtmb3IodmFyIENlPTAsRGU9MCxQZT0wO1BlPHllLmxlbmd0aC0xO1BlKyspe3ZhciBRZT1EZTtEZT0wO2Zvcih2YXIgJGU9NjcxMDg4NjMmQ2UsZ3Q9TWF0aC5taW4oUGUs''@;'; put 'put ''Ri5sZW5ndGgtMSksd3Q9TWF0aC5tYXgoMCxQZS1TLmxlbmd0aCsxKTt3dDw9Z3Q7d3QrKyl7dmFyIHZ0PSgwfFMud29yZHNbUGUtd3RdKSooMHxGLndvcmRzW3d0XSksQXQ9NjcxMDg4NjMmdnQ7JGU9NjcxMDg4NjMmKEF0PUF0KyRlfDApLERlKz0oUWU9KFFlPVFlKyh2dC82NzEwODg2NHww''@;'; put 'put ''KXwwKSsoQXQ+Pj4yNil8MCk+Pj4yNixRZSY9NjcxMDg4NjN9eWUud29yZHNbUGVdPSRlLENlPVFlLFFlPURlfXJldHVybiAwIT09Q2U/eWUud29yZHNbUGVdPUNlOnllLmxlbmd0aC0tLHllLnN0cmlwKCl9KHRoaXMseCxQKTprZSh0aGlzLHgsUCl9LFNlLnByb3RvdHlwZS5tYWtlUkJUPWZ1''@;'; put 'put ''bmN0aW9uKHgpe2Zvcih2YXIgUD1uZXcgQXJyYXkoeCksVj1OLnByb3RvdHlwZS5fY291bnRCaXRzKHgpLTEsVD0wO1Q8eDtUKyspUFtUXT10aGlzLnJldkJpbihULFYseCk7cmV0dXJuIFB9LFNlLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oeCxQLFYpe2lmKDA9PT14fHx4PT09Vi0xKXJl''@;'; put 'put ''dHVybiB4O2Zvcih2YXIgVD0wLFM9MDtTPFA7UysrKVR8PSgxJngpPDxQLVMtMSx4Pj49MTtyZXR1cm4gVH0sU2UucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oeCxQLFYsVCxTLEYpe2Zvcih2YXIgeWU9MDt5ZTxGO3llKyspVFt5ZV09UFt4W3llXV0sU1t5ZV09Vlt4W3llXV19LFNlLnBy''@;'; put 'put ''b3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oeCxQLFYsVCxTLEYpe3RoaXMucGVybXV0ZShGLHgsUCxWLFQsUyk7Zm9yKHZhciB5ZT0xO3llPFM7eWU8PD0xKWZvcih2YXIgQ2U9eWU8PDEsRGU9TWF0aC5jb3MoMipNYXRoLlBJL0NlKSxQZT1NYXRoLnNpbigyKk1hdGguUEkvQ2UpLFFlPTA7''@;'; put 'put ''UWU8UztRZSs9Q2UpZm9yKHZhciAkZT1EZSxndD1QZSx3dD0wO3d0PHllO3d0Kyspe3ZhciBtdD1WW1FlK3d0XSx2dD1UW1FlK3d0XSxBdD1WW1FlK3d0K3llXSxodD1UW1FlK3d0K3llXSxCdD0kZSpBdC1ndCpodDtodD0kZSpodCtndCpBdCxWW1FlK3d0XT1tdCsoQXQ9QnQpLFRbUWUrd3Rd''@;'; put 'put ''PXZ0K2h0LFZbUWUrd3QreWVdPW10LUF0LFRbUWUrd3QreWVdPXZ0LWh0LHd0IT09Q2UmJihCdD1EZSokZS1QZSpndCxndD1EZSpndCtQZSokZSwkZT1CdCl9fSxTZS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oeCxQKXt2YXIgVj0xfE1hdGgubWF4KFAseCksVD0xJlYsUz0wO2Zv''@;'; put 'put ''cihWPVYvMnwwO1Y7Vj4+Pj0xKVMrKztyZXR1cm4gMTw8UysxK1R9LFNlLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oeCxQLFYpe2lmKCEoVjw9MSkpZm9yKHZhciBUPTA7VDxWLzI7VCsrKXt2YXIgUz14W1RdO3hbVF09eFtWLVQtMV0seFtWLVQtMV09UyxTPVBbVF0sUFtUXT0tUFtW''@;'; put 'put ''LVQtMV0sUFtWLVQtMV09LVN9fSxTZS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKHgsUCl7Zm9yKHZhciBWPTAsVD0wO1Q8UC8yO1QrKyl7dmFyIFM9ODE5MipNYXRoLnJvdW5kKHhbMipUKzFdL1ApK01hdGgucm91bmQoeFsyKlRdL1ApK1Y7eFtUXT02NzEwODg2MyZTLFY9Uzw2''@;'; put 'put ''NzEwODg2ND8wOlMvNjcxMDg4NjR8MH1yZXR1cm4geH0sU2UucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oeCxQLFYsVCl7Zm9yKHZhciBTPTAsRj0wO0Y8UDtGKyspVlsyKkZdPTgxOTEmKFMrPTB8eFtGXSksVlsyKkYrMV09ODE5MSYoUz4+Pj0xMyksUz4+Pj0xMztmb3IoRj0yKlA7''@;'; put 'put ''RjxUOysrRilWW0ZdPTA7WSgwPT09UyksWSgwPT0oLTgxOTImUykpfSxTZS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbih4KXtmb3IodmFyIFA9bmV3IEFycmF5KHgpLFY9MDtWPHg7VisrKVBbVl09MDtyZXR1cm4gUH0sU2UucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oeCxQLFYpe3ZhciBUPTIq''@;'; put 'put ''dGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCxQLmxlbmd0aCksUz10aGlzLm1ha2VSQlQoVCksRj10aGlzLnN0dWIoVCkseWU9bmV3IEFycmF5KFQpLENlPW5ldyBBcnJheShUKSxEZT1uZXcgQXJyYXkoVCksUGU9bmV3IEFycmF5KFQpLFFlPW5ldyBBcnJheShUKSwkZT1uZXcgQXJyYXkoVCks''@;'; put 'put ''Z3Q9Vi53b3JkcztndC5sZW5ndGg9VCx0aGlzLmNvbnZlcnQxM2IoeC53b3Jkcyx4Lmxlbmd0aCx5ZSxUKSx0aGlzLmNvbnZlcnQxM2IoUC53b3JkcyxQLmxlbmd0aCxQZSxUKSx0aGlzLnRyYW5zZm9ybSh5ZSxGLENlLERlLFQsUyksdGhpcy50cmFuc2Zvcm0oUGUsRixRZSwkZSxULFMpO2Zv''@;'; put 'put ''cih2YXIgd3Q9MDt3dDxUO3d0Kyspe3ZhciBtdD1DZVt3dF0qUWVbd3RdLURlW3d0XSokZVt3dF07RGVbd3RdPUNlW3d0XSokZVt3dF0rRGVbd3RdKlFlW3d0XSxDZVt3dF09bXR9cmV0dXJuIHRoaXMuY29uanVnYXRlKENlLERlLFQpLHRoaXMudHJhbnNmb3JtKENlLERlLGd0LEYsVCxTKSx0''@;'; put 'put ''aGlzLmNvbmp1Z2F0ZShndCxGLFQpLHRoaXMubm9ybWFsaXplMTNiKGd0LFQpLFYubmVnYXRpdmU9eC5uZWdhdGl2ZV5QLm5lZ2F0aXZlLFYubGVuZ3RoPXgubGVuZ3RoK1AubGVuZ3RoLFYuc3RyaXAoKX0sTi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHgpe3ZhciBQPW5ldyBOKG51bGwpO3Jl''@;'; put 'put ''dHVybiBQLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCt4Lmxlbmd0aCksdGhpcy5tdWxUbyh4LFApfSxOLnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKHgpe3ZhciBQPW5ldyBOKG51bGwpO3JldHVybiBQLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCt4Lmxlbmd0aCksa2UodGhpcyx4''@;'; put 'put ''LFApfSxOLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oeCx0aGlzKX0sTi5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgpLFkoeDw2NzEwODg2NCk7Zm9yKHZhciBQPTAsVj0wO1Y8dGhpcy5sZW5ndGg7''@;'; put 'put ''VisrKXt2YXIgVD0oMHx0aGlzLndvcmRzW1ZdKSp4LFM9KDY3MTA4ODYzJlQpKyg2NzEwODg2MyZQKTtQPj49MjYsUCs9VC82NzEwODg2NHwwLFArPVM+Pj4yNix0aGlzLndvcmRzW1ZdPTY3MTA4ODYzJlN9cmV0dXJuIDAhPT1QJiYodGhpcy53b3Jkc1tWXT1QLHRoaXMubGVuZ3RoKyspLHRo''@;'; put 'put ''aXN9LE4ucHJvdG90eXBlLm11bG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbih4KX0sTi5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVsKHRoaXMpfSxOLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNs''@;'; put 'put ''b25lKCkpfSxOLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oeCl7dmFyIFA9ZnVuY3Rpb24oRil7Zm9yKHZhciB5ZT1uZXcgQXJyYXkoRi5iaXRMZW5ndGgoKSksQ2U9MDtDZTx5ZS5sZW5ndGg7Q2UrKyl7dmFyIFBlPUNlJTI2O3llW0NlXT0oRi53b3Jkc1tDZS8yNnwwXSYxPDxQZSk+Pj5QZX1y''@;'; put 'put ''ZXR1cm4geWV9KHgpO2lmKDA9PT1QLmxlbmd0aClyZXR1cm4gbmV3IE4oMSk7Zm9yKHZhciBWPXRoaXMsVD0wO1Q8UC5sZW5ndGgmJjA9PT1QW1RdO1QrKyxWPVYuc3FyKCkpO2lmKCsrVDxQLmxlbmd0aClmb3IodmFyIFM9Vi5zcXIoKTtUPFAubGVuZ3RoO1QrKyxTPVMuc3FyKCkpMCE9PVBb''@;'; put 'put ''VF0mJihWPVYubXVsKFMpKTtyZXR1cm4gVn0sTi5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgUCxWPXglMjYsVD0oeC1WKS8yNixTPTY3MTA4ODYzPj4+MjYtVjw8MjYtVjtpZigwIT09Vil7dmFyIEY9MDtmb3IoUD0wO1A8dGhp''@;'; put 'put ''cy5sZW5ndGg7UCsrKXt2YXIgeWU9dGhpcy53b3Jkc1tQXSZTO3RoaXMud29yZHNbUF09KDB8dGhpcy53b3Jkc1tQXSkteWU8PFZ8RixGPXllPj4+MjYtVn1GJiYodGhpcy53b3Jkc1tQXT1GLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1UKXtmb3IoUD10aGlzLmxlbmd0aC0xO1A+PTA7UC0tKXRo''@;'; put 'put ''aXMud29yZHNbUCtUXT10aGlzLndvcmRzW1BdO2ZvcihQPTA7UDxUO1ArKyl0aGlzLndvcmRzW1BdPTA7dGhpcy5sZW5ndGgrPVR9cmV0dXJuIHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oeCl7cmV0dXJuIFkoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxu''@;'; put 'put ''KHgpfSxOLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oeCxQLFYpe3ZhciBUO1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKSxUPVA/KFAtUCUyNikvMjY6MDt2YXIgUz14JTI2LEY9TWF0aC5taW4oKHgtUykvMjYsdGhpcy5sZW5ndGgpLHllPTY3MTA4ODYzXjY3MTA4ODYzPj4+Uzw8UyxD''@;'; put 'put ''ZT1WO2lmKFQtPUYsVD1NYXRoLm1heCgwLFQpLENlKXtmb3IodmFyIERlPTA7RGU8RjtEZSsrKUNlLndvcmRzW0RlXT10aGlzLndvcmRzW0RlXTtDZS5sZW5ndGg9Rn1pZigwIT09RilpZih0aGlzLmxlbmd0aD5GKWZvcih0aGlzLmxlbmd0aC09RixEZT0wO0RlPHRoaXMubGVuZ3RoO0RlKysp''@;'; put 'put ''dGhpcy53b3Jkc1tEZV09dGhpcy53b3Jkc1tEZStGXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBQZT0wO2ZvcihEZT10aGlzLmxlbmd0aC0xO0RlPj0wJiYoMCE9PVBlfHxEZT49VCk7RGUtLSl7dmFyIFFlPTB8dGhpcy53b3Jkc1tEZV07dGhpcy53b3Jkc1tEZV09''@;'; put 'put ''UGU8PDI2LVN8UWU+Pj5TLFBlPVFlJnllfXJldHVybiBDZSYmMCE9PVBlJiYoQ2Uud29yZHNbQ2UubGVuZ3RoKytdPVBlKSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbih4LFAs''@;'; put 'put ''Vil7cmV0dXJuIFkoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKHgsUCxWKX0sTi5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKHgpfSxOLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hs''@;'; put 'put ''bih4KX0sTi5wcm90b3R5cGUuc2hybj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKHgpfSxOLnByb3RvdHlwZS51c2hybj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybih4KX0sTi5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24oeCl7WSgibnVtYmVy''@;'; put 'put ''Ij09dHlwZW9mIHgmJng+PTApO3ZhciBQPXglMjYsVj0oeC1QKS8yNjtyZXR1cm4hKHRoaXMubGVuZ3RoPD1WfHwhKHRoaXMud29yZHNbVl0mMTw8UCkpfSxOLnByb3RvdHlwZS5pbWFza249ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBQPXglMjYsVj0oeC1Q''@;'; put 'put ''KS8yNjtyZXR1cm4gWSgwPT09dGhpcy5uZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzIiksdGhpcy5sZW5ndGg8PVY/dGhpczooMCE9PVAmJlYrKyx0aGlzLmxlbmd0aD1NYXRoLm1pbihWLHRoaXMubGVuZ3RoKSwwIT09UCYmKHRoaXMud29yZHNbdGhp''@;'; put 'put ''cy5sZW5ndGgtMV0mPTY3MTA4ODYzXjY3MTA4ODYzPj4+UDw8UCksdGhpcy5zdHJpcCgpKX0sTi5wcm90b3R5cGUubWFza249ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oeCl9LE4ucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKHgpe3JldHVybiBZKCJudW1iZXIiPT10''@;'; put 'put ''eXBlb2YgeCksWSh4PDY3MTA4ODY0KSx4PDA/dGhpcy5pc3VibigteCk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTx4Pyh0aGlzLndvcmRzWzBdPXgtKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0''@;'; put 'put ''aXZlPTAsdGhpcy5pc3Vibih4KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oeCl9LE4ucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbih4KXt0aGlzLndvcmRzWzBdKz14O2Zvcih2YXIgUD0wO1A8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbUF0+PTY3MTA4ODY0O1ArKyl0aGlz''@;'; put 'put ''LndvcmRzW1BdLT02NzEwODg2NCxQPT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW1ArMV09MTp0aGlzLndvcmRzW1ArMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsUCsxKSx0aGlzfSxOLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbih4KXtpZihZKCJudW1i''@;'; put 'put ''ZXIiPT10eXBlb2YgeCksWSh4PDY3MTA4ODY0KSx4PDApcmV0dXJuIHRoaXMuaWFkZG4oLXgpO2lmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbih4KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT14LDE9PT10aGlzLmxl''@;'; put 'put ''bmd0aCYmdGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vsc2UgZm9yKHZhciBQPTA7UDx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tQXTwwO1ArKyl0aGlzLndvcmRzW1BdKz02NzEwODg2NCx0aGlzLndvcmRzW1ArMV0tPTE7cmV0''@;'; put 'put ''dXJuIHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKHgpfSxOLnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4oeCl9LE4ucHJvdG90eXBlLmlhYnM9ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXN9LE4ucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfSxOLnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24oeCxQLFYpe3ZhciBULFM7dGhpcy5fZXhwYW5kKHgubGVuZ3RoK1YpO3ZhciB5ZT0w''@;'; put 'put ''O2ZvcihUPTA7VDx4Lmxlbmd0aDtUKyspe1M9KDB8dGhpcy53b3Jkc1tUK1ZdKSt5ZTt2YXIgQ2U9KDB8eC53b3Jkc1tUXSkqUDt5ZT0oKFMtPTY3MTA4ODYzJkNlKT4+MjYpLShDZS82NzEwODg2NHwwKSx0aGlzLndvcmRzW1QrVl09NjcxMDg4NjMmU31mb3IoO1Q8dGhpcy5sZW5ndGgtVjtU''@;'; put 'put ''KyspeWU9KFM9KDB8dGhpcy53b3Jkc1tUK1ZdKSt5ZSk+PjI2LHRoaXMud29yZHNbVCtWXT02NzEwODg2MyZTO2lmKDA9PT15ZSlyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihZKC0xPT09eWUpLHllPTAsVD0wO1Q8dGhpcy5sZW5ndGg7VCsrKXllPShTPS0oMHx0aGlzLndvcmRzW1RdKSt5ZSk+''@;'; put 'put ''PjI2LHRoaXMud29yZHNbVF09NjcxMDg4NjMmUztyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oeCxQKXt2YXIgVixUPXRoaXMuY2xvbmUoKSxTPXgsRj0wfFMud29yZHNbUy5sZW5ndGgtMV07MCE9KFY9MjYtdGhpcy5f''@;'; put 'put ''Y291bnRCaXRzKEYpKSYmKFM9Uy51c2hsbihWKSxULml1c2hsbihWKSxGPTB8Uy53b3Jkc1tTLmxlbmd0aC0xXSk7dmFyIHllLENlPVQubGVuZ3RoLVMubGVuZ3RoO2lmKCJtb2QiIT09UCl7KHllPW5ldyBOKG51bGwpKS5sZW5ndGg9Q2UrMSx5ZS53b3Jkcz1uZXcgQXJyYXkoeWUubGVuZ3Ro''@;'; put 'put ''KTtmb3IodmFyIERlPTA7RGU8eWUubGVuZ3RoO0RlKyspeWUud29yZHNbRGVdPTB9dmFyIFBlPVQuY2xvbmUoKS5faXNobG5zdWJtdWwoUywxLENlKTswPT09UGUubmVnYXRpdmUmJihUPVBlLHllJiYoeWUud29yZHNbQ2VdPTEpKTtmb3IodmFyIFFlPUNlLTE7UWU+PTA7UWUtLSl7dmFyICRl''@;'; put 'put ''PTY3MTA4ODY0KigwfFQud29yZHNbUy5sZW5ndGgrUWVdKSsoMHxULndvcmRzW1MubGVuZ3RoK1FlLTFdKTtmb3IoJGU9TWF0aC5taW4oJGUvRnwwLDY3MTA4ODYzKSxULl9pc2hsbnN1Ym11bChTLCRlLFFlKTswIT09VC5uZWdhdGl2ZTspJGUtLSxULm5lZ2F0aXZlPTAsVC5faXNobG5zdWJt''@;'; put 'put ''dWwoUywxLFFlKSxULmlzWmVybygpfHwoVC5uZWdhdGl2ZV49MSk7eWUmJih5ZS53b3Jkc1tRZV09JGUpfXJldHVybiB5ZSYmeWUuc3RyaXAoKSxULnN0cmlwKCksImRpdiIhPT1QJiYwIT09ViYmVC5pdXNocm4oVikse2Rpdjp5ZXx8bnVsbCxtb2Q6VH19LE4ucHJvdG90eXBlLmRpdm1vZD1m''@;'; put 'put ''dW5jdGlvbih4LFAsVil7cmV0dXJuIFkoIXguaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgTigwKSxtb2Q6bmV3IE4oMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09eC5uZWdhdGl2ZT8oRj10aGlzLm5lZygpLmRpdm1vZCh4LFApLCJtb2QiIT09UCYmKFQ9Ri5kaXYubmVnKCkp''@;'; put 'put ''LCJkaXYiIT09UCYmKFM9Ri5tb2QubmVnKCksViYmMCE9PVMubmVnYXRpdmUmJlMuaWFkZCh4KSkse2RpdjpULG1vZDpTfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT14Lm5lZ2F0aXZlPyhGPXRoaXMuZGl2bW9kKHgubmVnKCksUCksIm1vZCIhPT1QJiYoVD1GLmRpdi5uZWcoKSkse2RpdjpU''@;'; put 'put ''LG1vZDpGLm1vZH0pOjAhPSh0aGlzLm5lZ2F0aXZlJngubmVnYXRpdmUpPyhGPXRoaXMubmVnKCkuZGl2bW9kKHgubmVnKCksUCksImRpdiIhPT1QJiYoUz1GLm1vZC5uZWcoKSxWJiYwIT09Uy5uZWdhdGl2ZSYmUy5pc3ViKHgpKSx7ZGl2OkYuZGl2LG1vZDpTfSk6eC5sZW5ndGg+dGhpcy5s''@;'; put 'put ''ZW5ndGh8fHRoaXMuY21wKHgpPDA/e2RpdjpuZXcgTigwKSxtb2Q6dGhpc306MT09PXgubGVuZ3RoPyJkaXYiPT09UD97ZGl2OnRoaXMuZGl2bih4LndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1QP3tkaXY6bnVsbCxtb2Q6bmV3IE4odGhpcy5tb2RuKHgud29yZHNbMF0pKX06e2Rpdjp0''@;'; put 'put ''aGlzLmRpdm4oeC53b3Jkc1swXSksbW9kOm5ldyBOKHRoaXMubW9kbih4LndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoeCxQKTt2YXIgVCxTLEZ9LE4ucHJvdG90eXBlLmRpdj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5kaXZtb2QoeCwiZGl2IiwhMSkuZGl2fSxOLnByb3RvdHlwZS5tb2Q9''@;'; put 'put ''ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZGl2bW9kKHgsIm1vZCIsITEpLm1vZH0sTi5wcm90b3R5cGUudW1vZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5kaXZtb2QoeCwibW9kIiwhMCkubW9kfSxOLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbih4KXt2YXIgUD10aGlzLmRpdm1vZCh4''@;'; put 'put ''KTtpZihQLm1vZC5pc1plcm8oKSlyZXR1cm4gUC5kaXY7dmFyIFY9MCE9PVAuZGl2Lm5lZ2F0aXZlP1AubW9kLmlzdWIoeCk6UC5tb2QsVD14LnVzaHJuKDEpLFM9eC5hbmRsbigxKSxGPVYuY21wKFQpO3JldHVybiBGPDB8fDE9PT1TJiYwPT09Rj9QLmRpdjowIT09UC5kaXYubmVnYXRpdmU/''@;'; put 'put ''UC5kaXYuaXN1Ym4oMSk6UC5kaXYuaWFkZG4oMSl9LE4ucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oeCl7WSh4PD02NzEwODg2Myk7Zm9yKHZhciBQPTY3MTA4ODY0JXgsVj0wLFQ9dGhpcy5sZW5ndGgtMTtUPj0wO1QtLSlWPShQKlYrKDB8dGhpcy53b3Jkc1tUXSkpJXg7cmV0dXJuIFZ9LE4u''@;'; put 'put ''cHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKHgpe1koeDw9NjcxMDg4NjMpO2Zvcih2YXIgUD0wLFY9dGhpcy5sZW5ndGgtMTtWPj0wO1YtLSl7dmFyIFQ9KDB8dGhpcy53b3Jkc1tWXSkrNjcxMDg4NjQqUDt0aGlzLndvcmRzW1ZdPVQveHwwLFA9VCV4fXJldHVybiB0aGlzLnN0cmlwKCl9LE4u''@;'; put 'put ''cHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bih4KX0sTi5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbih4KXtZKDA9PT14Lm5lZ2F0aXZlKSxZKCF4LmlzWmVybygpKTt2YXIgUD10aGlzLFY9eC5jbG9uZSgpO1A9MCE9PVAubmVnYXRpdmU/UC51bW9k''@;'; put 'put ''KHgpOlAuY2xvbmUoKTtmb3IodmFyIFQ9bmV3IE4oMSksUz1uZXcgTigwKSxGPW5ldyBOKDApLHllPW5ldyBOKDEpLENlPTA7UC5pc0V2ZW4oKSYmVi5pc0V2ZW4oKTspUC5pdXNocm4oMSksVi5pdXNocm4oMSksKytDZTtmb3IodmFyIERlPVYuY2xvbmUoKSxQZT1QLmNsb25lKCk7IVAuaXNa''@;'; put 'put ''ZXJvKCk7KXtmb3IodmFyIFFlPTAsJGU9MTswPT0oUC53b3Jkc1swXSYkZSkmJlFlPDI2OysrUWUsJGU8PD0xKTtpZihRZT4wKWZvcihQLml1c2hybihRZSk7UWUtLSA+MDspKFQuaXNPZGQoKXx8Uy5pc09kZCgpKSYmKFQuaWFkZChEZSksUy5pc3ViKFBlKSksVC5pdXNocm4oMSksUy5pdXNo''@;'; put 'put ''cm4oMSk7Zm9yKHZhciBndD0wLHd0PTE7MD09KFYud29yZHNbMF0md3QpJiZndDwyNjsrK2d0LHd0PDw9MSk7aWYoZ3Q+MClmb3IoVi5pdXNocm4oZ3QpO2d0LS0gPjA7KShGLmlzT2RkKCl8fHllLmlzT2RkKCkpJiYoRi5pYWRkKERlKSx5ZS5pc3ViKFBlKSksRi5pdXNocm4oMSkseWUuaXVz''@;'; put 'put ''aHJuKDEpO1AuY21wKFYpPj0wPyhQLmlzdWIoViksVC5pc3ViKEYpLFMuaXN1Yih5ZSkpOihWLmlzdWIoUCksRi5pc3ViKFQpLHllLmlzdWIoUykpfXJldHVybnthOkYsYjp5ZSxnY2Q6Vi5pdXNobG4oQ2UpfX0sTi5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKHgpe1koMD09PXgubmVnYXRp''@;'; put 'put ''dmUpLFkoIXguaXNaZXJvKCkpO3ZhciBQPXRoaXMsVj14LmNsb25lKCk7UD0wIT09UC5uZWdhdGl2ZT9QLnVtb2QoeCk6UC5jbG9uZSgpO2Zvcih2YXIgVCxTPW5ldyBOKDEpLEY9bmV3IE4oMCkseWU9Vi5jbG9uZSgpO1AuY21wbigxKT4wJiZWLmNtcG4oMSk+MDspe2Zvcih2YXIgQ2U9MCxE''@;'; put 'put ''ZT0xOzA9PShQLndvcmRzWzBdJkRlKSYmQ2U8MjY7KytDZSxEZTw8PTEpO2lmKENlPjApZm9yKFAuaXVzaHJuKENlKTtDZS0tID4wOylTLmlzT2RkKCkmJlMuaWFkZCh5ZSksUy5pdXNocm4oMSk7Zm9yKHZhciBQZT0wLFFlPTE7MD09KFYud29yZHNbMF0mUWUpJiZQZTwyNjsrK1BlLFFlPDw9''@;'; put 'put ''MSk7aWYoUGU+MClmb3IoVi5pdXNocm4oUGUpO1BlLS0gPjA7KUYuaXNPZGQoKSYmRi5pYWRkKHllKSxGLml1c2hybigxKTtQLmNtcChWKT49MD8oUC5pc3ViKFYpLFMuaXN1YihGKSk6KFYuaXN1YihQKSxGLmlzdWIoUykpfXJldHVybihUPTA9PT1QLmNtcG4oMSk/UzpGKS5jbXBuKDApPDAm''@;'; put 'put ''JlQuaWFkZCh4KSxUfSxOLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oeCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4geC5hYnMoKTtpZih4LmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBQPXRoaXMuY2xvbmUoKSxWPXguY2xvbmUoKTtQLm5lZ2F0aXZlPTAsVi5uZWdhdGl2ZT0wO2Zv''@;'; put 'put ''cih2YXIgVD0wO1AuaXNFdmVuKCkmJlYuaXNFdmVuKCk7VCsrKVAuaXVzaHJuKDEpLFYuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtQLmlzRXZlbigpOylQLml1c2hybigxKTtmb3IoO1YuaXNFdmVuKCk7KVYuaXVzaHJuKDEpO3ZhciBTPVAuY21wKFYpO2lmKFM8MCl7dmFyIEY9UDtQPVYsVj1G''@;'; put 'put ''fWVsc2UgaWYoMD09PVN8fDA9PT1WLmNtcG4oMSkpYnJlYWs7UC5pc3ViKFYpfXJldHVybiBWLml1c2hsbihUKX0sTi5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5lZ2NkKHgpLmEudW1vZCh4KX0sTi5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9''@;'; put 'put ''PSgxJnRoaXMud29yZHNbMF0pfSxOLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLndvcmRzWzBdKX0sTi5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMud29yZHNbMF0meH0sTi5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oeCl7WSgi''@;'; put 'put ''bnVtYmVyIj09dHlwZW9mIHgpO3ZhciBQPXglMjYsVj0oeC1QKS8yNixUPTE8PFA7aWYodGhpcy5sZW5ndGg8PVYpcmV0dXJuIHRoaXMuX2V4cGFuZChWKzEpLHRoaXMud29yZHNbVl18PVQsdGhpcztmb3IodmFyIFM9VCxGPVY7MCE9PVMmJkY8dGhpcy5sZW5ndGg7RisrKXt2YXIgeWU9MHx0''@;'; put 'put ''aGlzLndvcmRzW0ZdO1M9KHllKz1TKT4+PjI2LHRoaXMud29yZHNbRl09eWUmPTY3MTA4ODYzfXJldHVybiAwIT09UyYmKHRoaXMud29yZHNbRl09Uyx0aGlzLmxlbmd0aCsrKSx0aGlzfSxOLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09''@;'; put 'put ''dGhpcy53b3Jkc1swXX0sTi5wcm90b3R5cGUuY21wbj1mdW5jdGlvbih4KXt2YXIgUCxWPXg8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIVYpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJlYpcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpUD0xO2Vsc2V7ViYm''@;'; put 'put ''KHg9LXgpLFkoeDw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIFQ9MHx0aGlzLndvcmRzWzBdO1A9VD09PXg/MDpUPHg/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtUDpQfSxOLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oeCl7aWYoMCE9PXRoaXMubmVnYXRpdmUm''@;'; put 'put ''JjA9PT14Lm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09eC5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgUD10aGlzLnVjbXAoeCk7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LVA6UH0sTi5wcm90b3R5cGUudWNtcD1mdW5jdGlvbih4KXtpZih0aGlzLmxlbmd0''@;'; put 'put ''aD54Lmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDx4Lmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIFA9MCxWPXRoaXMubGVuZ3RoLTE7Vj49MDtWLS0pe3ZhciBUPTB8dGhpcy53b3Jkc1tWXSxTPTB8eC53b3Jkc1tWXTtpZihUIT09Uyl7VDxTP1A9LTE6VD5TJiYoUD0xKTticmVha319''@;'; put 'put ''cmV0dXJuIFB9LE4ucHJvdG90eXBlLmd0bj1mdW5jdGlvbih4KXtyZXR1cm4gMT09PXRoaXMuY21wbih4KX0sTi5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oeCl7cmV0dXJuIDE9PT10aGlzLmNtcCh4KX0sTi5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbXBuKHgpPj0w''@;'; put 'put ''fSxOLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wKHgpPj0wfSxOLnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oeCl7cmV0dXJuLTE9PT10aGlzLmNtcG4oeCl9LE4ucHJvdG90eXBlLmx0PWZ1bmN0aW9uKHgpe3JldHVybi0xPT09dGhpcy5jbXAoeCl9LE4ucHJvdG90''@;'; put 'put ''eXBlLmx0ZW49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wbih4KTw9MH0sTi5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNtcCh4KTw9MH0sTi5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKHgpe3JldHVybiAwPT09dGhpcy5jbXBuKHgpfSxOLnByb3RvdHlwZS5lcT1m''@;'; put 'put ''dW5jdGlvbih4KXtyZXR1cm4gMD09PXRoaXMuY21wKHgpfSxOLnJlZD1mdW5jdGlvbih4KXtyZXR1cm4gbmV3IGVlKHgpfSxOLnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbih4KXtyZXR1cm4gWSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSxZKDA9''@;'; put 'put ''PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLHguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZCh4KX0sTi5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGlu''@;'; put 'put ''IHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LE4ucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5yZWQ9eCx0aGlzfSxOLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbih4KXtyZXR1cm4gWSghdGhpcy5yZWQsIkFscmVh''@;'; put 'put ''ZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZCh4KX0sTi5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMseCl9LE4u''@;'; put 'put ''cHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZFN1''@;'; put 'put ''YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMseCl9''@;'; put 'put ''LE4ucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZE11''@;'; put 'put ''bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLHgpLHRoaXMucmVkLm11bCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJz''@;'; put 'put ''IiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx4KSx0aGlzLnJlZC5pbXVsKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhp''@;'; put 'put ''cy5yZWQuc3FyKHRoaXMpfSxOLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sTi5wcm90b3R5cGUucmVk''@;'; put 'put ''U3FydD1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LE4ucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJl''@;'; put 'put ''ZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxOLnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVt''@;'; put 'put ''YmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sTi5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkJiYheC5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93''@;'; put 'put ''KHRoaXMseCl9O3ZhciBJZT17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIFRlKHgsUCl7dGhpcy5uYW1lPXgsdGhpcy5wPW5ldyBOKFAsMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBOKDEpLml1c2hsbih0aGlzLm4p''@;'; put 'put ''LmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBNZSgpe1RlLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24gaGUoKXtUZS5jYWxs''@;'; put 'put ''KHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIE8oKXtUZS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZm''@;'; put 'put ''ZiIpfWZ1bmN0aW9uIHooKXtUZS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIGVlKHgpe2lmKCJzdHJpbmciPT10eXBlb2YgeCl7dmFyIFA9Ti5fcHJpbWUoeCk7''@;'; put 'put ''dGhpcy5tPVAucCx0aGlzLnByaW1lPVB9ZWxzZSBZKHguZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09eCx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gbmUoeCl7ZWUuY2FsbCh0aGlzLHgpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMu''@;'; put 'put ''c2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IE4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11''@;'; put 'put ''bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9VGUucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgeD1uZXcgTihudWxsKTtyZXR1cm4geC53b3Jkcz1uZXcgQXJy''@;'; put 'put ''YXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLHh9LFRlLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKHgpe3ZhciBQLFY9eDtkb3t0aGlzLnNwbGl0KFYsdGhpcy50bXApLFA9KFY9KFY9dGhpcy5pbXVsSyhWKSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxlKFA+dGhpcy5uKTt2''@;'; put 'put ''YXIgVD1QPHRoaXMubj8tMTpWLnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PVQ/KFYud29yZHNbMF09MCxWLmxlbmd0aD0xKTpUPjA/Vi5pc3ViKHRoaXMucCk6dm9pZCAwIT09Vi5zdHJpcD9WLnN0cmlwKCk6Vi5fc3RyaXAoKSxWfSxUZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oeCxQKXt4''@;'; put 'put ''Lml1c2hybih0aGlzLm4sMCxQKX0sVGUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHgpe3JldHVybiB4LmltdWwodGhpcy5rKX0sVyhNZSxUZSksTWUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKHgsUCl7Zm9yKHZhciBWPTQxOTQzMDMsVD1NYXRoLm1pbih4Lmxlbmd0aCw5KSxTPTA7UzxU''@;'; put 'put ''O1MrKylQLndvcmRzW1NdPXgud29yZHNbU107aWYoUC5sZW5ndGg9VCx4Lmxlbmd0aDw9OSlyZXR1cm4geC53b3Jkc1swXT0wLHZvaWQoeC5sZW5ndGg9MSk7dmFyIEY9eC53b3Jkc1s5XTtmb3IoUC53b3Jkc1tQLmxlbmd0aCsrXT1GJlYsUz0xMDtTPHgubGVuZ3RoO1MrKyl7dmFyIHllPTB8''@;'; put 'put ''eC53b3Jkc1tTXTt4LndvcmRzW1MtMTBdPSh5ZSZWKTw8NHxGPj4+MjIsRj15ZX14LndvcmRzW1MtMTBdPUY+Pj49MjIseC5sZW5ndGgtPTA9PT1GJiZ4Lmxlbmd0aD4xMD8xMDo5fSxNZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oeCl7eC53b3Jkc1t4Lmxlbmd0aF09MCx4LndvcmRzW3gu''@;'; put 'put ''bGVuZ3RoKzFdPTAseC5sZW5ndGgrPTI7Zm9yKHZhciBQPTAsVj0wO1Y8eC5sZW5ndGg7VisrKXt2YXIgVD0wfHgud29yZHNbVl07eC53b3Jkc1tWXT02NzEwODg2MyYoUCs9OTc3KlQpLFA9NjQqVCsoUC82NzEwODg2NHwwKX1yZXR1cm4gMD09PXgud29yZHNbeC5sZW5ndGgtMV0mJih4Lmxl''@;'; put 'put ''bmd0aC0tLDA9PT14LndvcmRzW3gubGVuZ3RoLTFdJiZ4Lmxlbmd0aC0tKSx4fSxXKGhlLFRlKSxXKE8sVGUpLFcoeixUZSksei5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oeCl7Zm9yKHZhciBQPTAsVj0wO1Y8eC5sZW5ndGg7VisrKXt2YXIgVD0xOSooMHx4LndvcmRzW1ZdKStQLFM9Njcx''@;'; put 'put ''MDg4NjMmVDtUPj4+PTI2LHgud29yZHNbVl09UyxQPVR9cmV0dXJuIDAhPT1QJiYoeC53b3Jkc1t4Lmxlbmd0aCsrXT1QKSx4fSxOLl9wcmltZT1mdW5jdGlvbih4KXtpZihJZVt4XSlyZXR1cm4gSWVbeF07dmFyIFA7aWYoImsyNTYiPT09eClQPW5ldyBNZTtlbHNlIGlmKCJwMjI0Ij09PXgp''@;'; put 'put ''UD1uZXcgaGU7ZWxzZSBpZigicDE5MiI9PT14KVA9bmV3IE87ZWxzZXtpZigicDI1NTE5IiE9PXgpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIreCk7UD1uZXcgen1yZXR1cm4gSWVbeF09UCxQfSxlZS5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oeCl7WSgwPT09eC5uZWdh''@;'; put 'put ''dGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxZKHgucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LGVlLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbih4LFApe1koMD09KHgubmVnYXRpdmV8UC5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdp''@;'; put 'put ''dGggcG9zaXRpdmVzIiksWSh4LnJlZCYmeC5yZWQ9PT1QLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxlZS5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UoeCkuX2ZvcmNlUmVkKHRoaXMpOngudW1v''@;'; put 'put ''ZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKX0sZWUucHJvdG90eXBlLm5lZz1mdW5jdGlvbih4KXtyZXR1cm4geC5pc1plcm8oKT94LmNsb25lKCk6dGhpcy5tLnN1Yih4KS5fZm9yY2VSZWQodGhpcyl9LGVlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7''@;'; put 'put ''dmFyIFY9eC5hZGQoUCk7cmV0dXJuIFYuY21wKHRoaXMubSk+PTAmJlYuaXN1Yih0aGlzLm0pLFYuX2ZvcmNlUmVkKHRoaXMpfSxlZS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbih4LFApe3RoaXMuX3ZlcmlmeTIoeCxQKTt2YXIgVj14LmlhZGQoUCk7cmV0dXJuIFYuY21wKHRoaXMubSk+PTAm''@;'; put 'put ''JlYuaXN1Yih0aGlzLm0pLFZ9LGVlLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7dmFyIFY9eC5zdWIoUCk7cmV0dXJuIFYuY21wbigwKTwwJiZWLmlhZGQodGhpcy5tKSxWLl9mb3JjZVJlZCh0aGlzKX0sZWUucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24o''@;'; put 'put ''eCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7dmFyIFY9eC5pc3ViKFApO3JldHVybiBWLmNtcG4oMCk8MCYmVi5pYWRkKHRoaXMubSksVn0sZWUucHJvdG90eXBlLnNobD1mdW5jdGlvbih4LFApe3JldHVybiB0aGlzLl92ZXJpZnkxKHgpLHRoaXMuaW1vZCh4LnVzaGxuKFApKX0sZWUucHJvdG90''@;'; put 'put ''eXBlLmltdWw9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gdGhpcy5fdmVyaWZ5Mih4LFApLHRoaXMuaW1vZCh4LmltdWwoUCkpfSxlZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoeCxQKSx0aGlzLmltb2QoeC5tdWwoUCkpfSxlZS5wcm90b3R5cGUuaXNx''@;'; put 'put ''cj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5pbXVsKHgseC5jbG9uZSgpKX0sZWUucHJvdG90eXBlLnNxcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5tdWwoeCx4KX0sZWUucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oeCl7aWYoeC5pc1plcm8oKSlyZXR1cm4geC5jbG9uZSgpO3ZhciBQPXRo''@;'; put 'put ''aXMubS5hbmRsbigzKTtpZihZKFAlMj09MSksMz09PVApe3ZhciBWPXRoaXMubS5hZGQobmV3IE4oMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coeCxWKX1mb3IodmFyIFQ9dGhpcy5tLnN1Ym4oMSksUz0wOyFULmlzWmVybygpJiYwPT09VC5hbmRsbigxKTspUysrLFQuaXVzaHJuKDEp''@;'; put 'put ''O1koIVQuaXNaZXJvKCkpO3ZhciBGPW5ldyBOKDEpLnRvUmVkKHRoaXMpLHllPUYucmVkTmVnKCksQ2U9dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpLERlPXRoaXMubS5iaXRMZW5ndGgoKTtmb3IoRGU9bmV3IE4oMipEZSpEZSkudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KERlLENlKS5jbXAo''@;'; put 'put ''eWUpOylEZS5yZWRJQWRkKHllKTtmb3IodmFyIFBlPXRoaXMucG93KERlLFQpLFFlPXRoaXMucG93KHgsVC5hZGRuKDEpLml1c2hybigxKSksJGU9dGhpcy5wb3coeCxUKSxndD1TOzAhPT0kZS5jbXAoRik7KXtmb3IodmFyIHd0PSRlLG10PTA7MCE9PXd0LmNtcChGKTttdCsrKXd0PXd0LnJl''@;'; put 'put ''ZFNxcigpO1kobXQ8Z3QpO3ZhciB2dD10aGlzLnBvdyhQZSxuZXcgTigxKS5pdXNobG4oZ3QtbXQtMSkpO1FlPVFlLnJlZE11bCh2dCksUGU9dnQucmVkU3FyKCksJGU9JGUucmVkTXVsKFBlKSxndD1tdH1yZXR1cm4gUWV9LGVlLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHgpe3ZhciBQPXgu''@;'; put 'put ''X2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT1QLm5lZ2F0aXZlPyhQLm5lZ2F0aXZlPTAsdGhpcy5pbW9kKFApLnJlZE5lZygpKTp0aGlzLmltb2QoUCl9LGVlLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oeCxQKXtpZihQLmlzWmVybygpKXJldHVybiBuZXcgTigxKS50b1JlZCh0aGlzKTtpZigw''@;'; put 'put ''PT09UC5jbXBuKDEpKXJldHVybiB4LmNsb25lKCk7dmFyIFY9bmV3IEFycmF5KDE2KTtWWzBdPW5ldyBOKDEpLnRvUmVkKHRoaXMpLFZbMV09eDtmb3IodmFyIFQ9MjtUPFYubGVuZ3RoO1QrKylWW1RdPXRoaXMubXVsKFZbVC0xXSx4KTt2YXIgUz1WWzBdLEY9MCx5ZT0wLENlPVAuYml0TGVu''@;'; put 'put ''Z3RoKCklMjY7Zm9yKDA9PT1DZSYmKENlPTI2KSxUPVAubGVuZ3RoLTE7VD49MDtULS0pe2Zvcih2YXIgRGU9UC53b3Jkc1tUXSxQZT1DZS0xO1BlPj0wO1BlLS0pe3ZhciBRZT1EZT4+UGUmMTtTIT09VlswXSYmKFM9dGhpcy5zcXIoUykpLDAhPT1RZXx8MCE9PUY/KEY8PD0xLEZ8PVFlLCg0''@;'; put 'put ''PT0rK3llfHwwPT09VCYmMD09PVBlKSYmKFM9dGhpcy5tdWwoUyxWW0ZdKSx5ZT0wLEY9MCkpOnllPTB9Q2U9MjZ9cmV0dXJuIFN9LGVlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oeCl7dmFyIFA9eC51bW9kKHRoaXMubSk7cmV0dXJuIFA9PT14P1AuY2xvbmUoKTpQfSxlZS5wcm90''@;'; put 'put ''b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oeCl7dmFyIFA9eC5jbG9uZSgpO3JldHVybiBQLnJlZD1udWxsLFB9LE4ubW9udD1mdW5jdGlvbih4KXtyZXR1cm4gbmV3IG5lKHgpfSxXKG5lLGVlKSxuZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmltb2Qo''@;'; put 'put ''eC51c2hsbih0aGlzLnNoaWZ0KSl9LG5lLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbih4KXt2YXIgUD10aGlzLmltb2QoeC5tdWwodGhpcy5yaW52KSk7cmV0dXJuIFAucmVkPW51bGwsUH0sbmUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oeCxQKXtpZih4LmlzWmVybygpfHxQLmlz''@;'; put 'put ''WmVybygpKXJldHVybiB4LndvcmRzWzBdPTAseC5sZW5ndGg9MSx4O3ZhciBWPXguaW11bChQKSxUPVYubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLFM9Vi5pc3ViKFQpLml1c2hybih0aGlzLnNoaWZ0KSxGPVM7cmV0dXJu''@;'; put 'put ''IFMuY21wKHRoaXMubSk+PTA/Rj1TLmlzdWIodGhpcy5tKTpTLmNtcG4oMCk8MCYmKEY9Uy5pYWRkKHRoaXMubSkpLEYuX2ZvcmNlUmVkKHRoaXMpfSxuZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHgsUCl7aWYoeC5pc1plcm8oKXx8UC5pc1plcm8oKSlyZXR1cm4gbmV3IE4oMCkuX2ZvcmNl''@;'; put 'put ''UmVkKHRoaXMpO3ZhciBWPXgubXVsKFApLFQ9Vi5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksUz1WLmlzdWIoVCkuaXVzaHJuKHRoaXMuc2hpZnQpLEY9UztyZXR1cm4gUy5jbXAodGhpcy5tKT49MD9GPVMuaXN1Yih0aGlz''@;'; put 'put ''Lm0pOlMuY21wbigwKTwwJiYoRj1TLmlhZGQodGhpcy5tKSksRi5fZm9yY2VSZWQodGhpcyl9LG5lLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmltb2QoeC5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KFU9ai5ubWQoVSksdGhp''@;'; put 'put ''cyl9LDkyODI6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig0MTU1KSxhZT1qKDUxMDgpO2Z1bmN0aW9uIFkoUWUpe3JldHVybihZPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKCRlKXtyZXR1cm4gdHlw''@;'; put 'put ''ZW9mICRlfTpmdW5jdGlvbigkZSl7cmV0dXJuICRlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYkZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmJGUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiAkZX0pKFFlKX12YXIgVyxOLHRlPWooMjEzNikuY29kZXMsSz10ZS5FUlJf''@;'; put 'put ''QU1CSUdVT1VTX0FSR1VNRU5ULEo9dGUuRVJSX0lOVkFMSURfQVJHX1RZUEUsc2U9dGUuRVJSX0lOVkFMSURfQVJHX1ZBTFVFLG9lPXRlLkVSUl9JTlZBTElEX1JFVFVSTl9WQUxVRSxjZT10ZS5FUlJfTUlTU0lOR19BUkdTLGRlPWooNTk2MSksdmU9aig5NTM5KS5pbnNwZWN0LEFlPWooOTUz''@;'; put 'put ''OSkudHlwZXMsa2U9QWUuaXNQcm9taXNlLFNlPUFlLmlzUmVnRXhwLEllPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbjpqKDgwOTEpLmFzc2lnbixUZT1PYmplY3QuaXM/T2JqZWN0LmlzOmooNjA5KTtmdW5jdGlvbiBNZSgpe3ZhciBRZT1qKDkxNTgpO1c9UWUuaXNEZWVwRXF1YWwsTj1R''@;'; put 'put ''ZS5pc0RlZXBTdHJpY3RFcXVhbH12YXIgaGU9ITEsTz1VLmV4cG9ydHM9eCx6PXt9O2Z1bmN0aW9uIGVlKFFlKXt0aHJvdyBRZS5tZXNzYWdlIGluc3RhbmNlb2YgRXJyb3I/UWUubWVzc2FnZTpuZXcgZGUoUWUpfWZ1bmN0aW9uIG5lKFFlLCRlLGd0LHd0KXtpZighZ3Qpe3ZhciBtdD0hMTtp''@;'; put 'put ''ZigwPT09JGUpbXQ9ITAsd3Q9Ik5vIHZhbHVlIGFyZ3VtZW50IHBhc3NlZCB0byBgYXNzZXJ0Lm9rKClgIjtlbHNlIGlmKHd0IGluc3RhbmNlb2YgRXJyb3IpdGhyb3cgd3Q7dmFyIHZ0PW5ldyBkZSh7YWN0dWFsOmd0LGV4cGVjdGVkOiEwLG1lc3NhZ2U6d3Qsb3BlcmF0b3I6Ij09IixzdGFj''@;'; put 'put ''a1N0YXJ0Rm46UWV9KTt0aHJvdyB2dC5nZW5lcmF0ZWRNZXNzYWdlPW10LHZ0fX1mdW5jdGlvbiB4KCl7Zm9yKHZhciBRZT1hcmd1bWVudHMubGVuZ3RoLCRlPW5ldyBBcnJheShRZSksZ3Q9MDtndDxRZTtndCsrKSRlW2d0XT1hcmd1bWVudHNbZ3RdO25lLmFwcGx5KHZvaWQgMCxbeCwkZS5s''@;'; put 'put ''ZW5ndGhdLmNvbmNhdCgkZSkpfU8uZmFpbD1mdW5jdGlvbiBRZSgkZSxndCx3dCxtdCx2dCl7dmFyIEF0LGh0PWFyZ3VtZW50cy5sZW5ndGg7aWYoMD09PWh0P0F0PSJGYWlsZWQiOjE9PT1odD8od3Q9JGUsJGU9dm9pZCAwKTooITE9PT1oZSYmKGhlPSEwLChyZS5lbWl0V2FybmluZz9yZS5l''@;'; put 'put ''bWl0V2FybmluZzphZS53YXJuLmJpbmQoYWUpKSgiYXNzZXJ0LmZhaWwoKSB3aXRoIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBhc3NlcnQuc3RyaWN0RXF1YWwoKSBpbnN0ZWFkIG9yIG9ubHkgcGFzcyBhIG1lc3NhZ2UuIiwiRGVwcmVjYXRpb25X''@;'; put 'put ''YXJuaW5nIiwiREVQMDA5NCIpKSwyPT09aHQmJihtdD0iIT0iKSksd3QgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyB3dDt2YXIgb249e2FjdHVhbDokZSxleHBlY3RlZDpndCxvcGVyYXRvcjp2b2lkIDA9PT1tdD8iZmFpbCI6bXQsc3RhY2tTdGFydEZuOnZ0fHxRZX07dm9pZCAwIT09d3QmJihv''@;'; put 'put ''bi5tZXNzYWdlPXd0KTt2YXIgX3Q9bmV3IGRlKG9uKTt0aHJvdyBBdCYmKF90Lm1lc3NhZ2U9QXQsX3QuZ2VuZXJhdGVkTWVzc2FnZT0hMCksX3R9LE8uQXNzZXJ0aW9uRXJyb3I9ZGUsTy5vaz14LE8uZXF1YWw9ZnVuY3Rpb24gUWUoJGUsZ3Qsd3Qpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil0''@;'; put 'put ''aHJvdyBuZXcgY2UoImFjdHVhbCIsImV4cGVjdGVkIik7JGUhPWd0JiZlZSh7YWN0dWFsOiRlLGV4cGVjdGVkOmd0LG1lc3NhZ2U6d3Qsb3BlcmF0b3I6Ij09IixzdGFja1N0YXJ0Rm46UWV9KX0sTy5ub3RFcXVhbD1mdW5jdGlvbiBRZSgkZSxndCx3dCl7aWYoYXJndW1lbnRzLmxlbmd0aDwy''@;'; put 'put ''KXRocm93IG5ldyBjZSgiYWN0dWFsIiwiZXhwZWN0ZWQiKTskZT09Z3QmJmVlKHthY3R1YWw6JGUsZXhwZWN0ZWQ6Z3QsbWVzc2FnZTp3dCxvcGVyYXRvcjoiIT0iLHN0YWNrU3RhcnRGbjpRZX0pfSxPLmRlZXBFcXVhbD1mdW5jdGlvbiBRZSgkZSxndCx3dCl7aWYoYXJndW1lbnRzLmxlbmd0''@;'; put 'put ''aDwyKXRocm93IG5ldyBjZSgiYWN0dWFsIiwiZXhwZWN0ZWQiKTt2b2lkIDA9PT1XJiZNZSgpLFcoJGUsZ3QpfHxlZSh7YWN0dWFsOiRlLGV4cGVjdGVkOmd0LG1lc3NhZ2U6d3Qsb3BlcmF0b3I6ImRlZXBFcXVhbCIsc3RhY2tTdGFydEZuOlFlfSl9LE8ubm90RGVlcEVxdWFsPWZ1bmN0aW9u''@;'; put 'put ''IFFlKCRlLGd0LHd0KXtpZihhcmd1bWVudHMubGVuZ3RoPDIpdGhyb3cgbmV3IGNlKCJhY3R1YWwiLCJleHBlY3RlZCIpO3ZvaWQgMD09PVcmJk1lKCksVygkZSxndCkmJmVlKHthY3R1YWw6JGUsZXhwZWN0ZWQ6Z3QsbWVzc2FnZTp3dCxvcGVyYXRvcjoibm90RGVlcEVxdWFsIixzdGFja1N0''@;'; put 'put ''YXJ0Rm46UWV9KX0sTy5kZWVwU3RyaWN0RXF1YWw9ZnVuY3Rpb24gUWUoJGUsZ3Qsd3Qpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil0aHJvdyBuZXcgY2UoImFjdHVhbCIsImV4cGVjdGVkIik7dm9pZCAwPT09VyYmTWUoKSxOKCRlLGd0KXx8ZWUoe2FjdHVhbDokZSxleHBlY3RlZDpndCxtZXNz''@;'; put 'put ''YWdlOnd0LG9wZXJhdG9yOiJkZWVwU3RyaWN0RXF1YWwiLHN0YWNrU3RhcnRGbjpRZX0pfSxPLm5vdERlZXBTdHJpY3RFcXVhbD1mdW5jdGlvbiBRZSgkZSxndCx3dCl7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXRocm93IG5ldyBjZSgiYWN0dWFsIiwiZXhwZWN0ZWQiKTt2b2lkIDA9PT1XJiZN''@;'; put 'put ''ZSgpLE4oJGUsZ3QpJiZlZSh7YWN0dWFsOiRlLGV4cGVjdGVkOmd0LG1lc3NhZ2U6d3Qsb3BlcmF0b3I6Im5vdERlZXBTdHJpY3RFcXVhbCIsc3RhY2tTdGFydEZuOlFlfSl9LE8uc3RyaWN0RXF1YWw9ZnVuY3Rpb24gUWUoJGUsZ3Qsd3Qpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil0aHJvdyBu''@;'; put 'put ''ZXcgY2UoImFjdHVhbCIsImV4cGVjdGVkIik7VGUoJGUsZ3QpfHxlZSh7YWN0dWFsOiRlLGV4cGVjdGVkOmd0LG1lc3NhZ2U6d3Qsb3BlcmF0b3I6InN0cmljdEVxdWFsIixzdGFja1N0YXJ0Rm46UWV9KX0sTy5ub3RTdHJpY3RFcXVhbD1mdW5jdGlvbiBRZSgkZSxndCx3dCl7aWYoYXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aDwyKXRocm93IG5ldyBjZSgiYWN0dWFsIiwiZXhwZWN0ZWQiKTtUZSgkZSxndCkmJmVlKHthY3R1YWw6JGUsZXhwZWN0ZWQ6Z3QsbWVzc2FnZTp3dCxvcGVyYXRvcjoibm90U3RyaWN0RXF1YWwiLHN0YWNrU3RhcnRGbjpRZX0pfTt2YXIgUD1mdW5jdGlvbiBRZSgkZSxndCx3''@;'; put 'put ''dCl7dmFyIG10PXRoaXM7KGZ1bmN0aW9uKHZ0LEF0KXtpZighKHZ0IGluc3RhbmNlb2YgQXQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxRZSksZ3QuZm9yRWFjaChmdW5jdGlvbih2dCl7dnQgaW4gJGUmJihtdFt2dF09''@;'; put 'put ''dm9pZCAwIT09d3QmJiJzdHJpbmciPT10eXBlb2Ygd3RbdnRdJiZTZSgkZVt2dF0pJiYkZVt2dF0udGVzdCh3dFt2dF0pP3d0W3Z0XTokZVt2dF0pfSl9O2Z1bmN0aW9uIFYoUWUsJGUsZ3Qsd3QsbXQsdnQpe2lmKCEoZ3QgaW4gUWUpfHwhTihRZVtndF0sJGVbZ3RdKSl7aWYoIXd0KXt2YXIg''@;'; put 'put ''QXQ9bmV3IFAoUWUsbXQpLGh0PW5ldyBQKCRlLG10LFFlKSxCdD1uZXcgZGUoe2FjdHVhbDpBdCxleHBlY3RlZDpodCxvcGVyYXRvcjoiZGVlcFN0cmljdEVxdWFsIixzdGFja1N0YXJ0Rm46dnR9KTt0aHJvdyBCdC5hY3R1YWw9UWUsQnQuZXhwZWN0ZWQ9JGUsQnQub3BlcmF0b3I9dnQubmFt''@;'; put 'put ''ZSxCdH1lZSh7YWN0dWFsOlFlLGV4cGVjdGVkOiRlLG1lc3NhZ2U6d3Qsb3BlcmF0b3I6dnQubmFtZSxzdGFja1N0YXJ0Rm46dnR9KX19ZnVuY3Rpb24gVChRZSwkZSxndCx3dCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mICRlKXtpZihTZSgkZSkpcmV0dXJuICRlLnRlc3QoUWUpO2lmKDI9PT1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBKKCJleHBlY3RlZCIsWyJGdW5jdGlvbiIsIlJlZ0V4cCJdLCRlKTtpZigib2JqZWN0IiE9PVkoUWUpfHxudWxsPT09UWUpe3ZhciBtdD1uZXcgZGUoe2FjdHVhbDpRZSxleHBlY3RlZDokZSxtZXNzYWdlOmd0LG9wZXJhdG9yOiJkZWVwU3RyaWN0''@;'; put 'put ''RXF1YWwiLHN0YWNrU3RhcnRGbjp3dH0pO3Rocm93IG10Lm9wZXJhdG9yPXd0Lm5hbWUsbXR9dmFyIHZ0PU9iamVjdC5rZXlzKCRlKTtpZigkZSBpbnN0YW5jZW9mIEVycm9yKXZ0LnB1c2goIm5hbWUiLCJtZXNzYWdlIik7ZWxzZSBpZigwPT09dnQubGVuZ3RoKXRocm93IG5ldyBzZSgiZXJy''@;'; put 'put ''b3IiLCRlLCJtYXkgbm90IGJlIGFuIGVtcHR5IG9iamVjdCIpO3JldHVybiB2b2lkIDA9PT1XJiZNZSgpLHZ0LmZvckVhY2goZnVuY3Rpb24oQXQpeyJzdHJpbmciPT10eXBlb2YgUWVbQXRdJiZTZSgkZVtBdF0pJiYkZVtBdF0udGVzdChRZVtBdF0pfHxWKFFlLCRlLEF0LGd0LHZ0LHd0KX0p''@;'; put 'put ''LCEwfXJldHVybiB2b2lkIDAhPT0kZS5wcm90b3R5cGUmJlFlIGluc3RhbmNlb2YgJGV8fCFFcnJvci5pc1Byb3RvdHlwZU9mKCRlKSYmITA9PT0kZS5jYWxsKHt9LFFlKX1mdW5jdGlvbiBTKFFlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgUWUpdGhyb3cgbmV3IEooImZuIiwiRnVuY3Rpb24i''@;'; put 'put ''LFFlKTt0cnl7UWUoKX1jYXRjaCgkZSl7cmV0dXJuICRlfXJldHVybiB6fWZ1bmN0aW9uIEYoUWUpe3JldHVybiBrZShRZSl8fG51bGwhPT1RZSYmIm9iamVjdCI9PT1ZKFFlKSYmImZ1bmN0aW9uIj09dHlwZW9mIFFlLnRoZW4mJiJmdW5jdGlvbiI9PXR5cGVvZiBRZS5jYXRjaH1mdW5jdGlv''@;'; put 'put ''biB5ZShRZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oKXt2YXIgJGU7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFFlKXtpZighRigkZT1RZSgpKSl0aHJvdyBuZXcgb2UoImluc3RhbmNlIG9mIFByb21pc2UiLCJwcm9taXNlRm4iLCRlKX1lbHNle2lmKCFGKFFlKSl0''@;'; put 'put ''aHJvdyBuZXcgSigicHJvbWlzZUZuIixbIkZ1bmN0aW9uIiwiUHJvbWlzZSJdLFFlKTskZT1RZX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe3JldHVybiAkZX0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gen0pLmNhdGNoKGZ1bmN0aW9uKGd0KXtyZXR1cm4gZ3R9''@;'; put 'put ''KX0pfWZ1bmN0aW9uIENlKFFlLCRlLGd0LHd0KXtpZigic3RyaW5nIj09dHlwZW9mIGd0KXtpZig0PT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgSigiZXJyb3IiLFsiT2JqZWN0IiwiRXJyb3IiLCJGdW5jdGlvbiIsIlJlZ0V4cCJdLGd0KTtpZigib2JqZWN0Ij09PVkoJGUpJiZudWxs''@;'; put 'put ''IT09JGUpe2lmKCRlLm1lc3NhZ2U9PT1ndCl0aHJvdyBuZXcgSygiZXJyb3IvbWVzc2FnZSIsJ1RoZSBlcnJvciBtZXNzYWdlICInLmNvbmNhdCgkZS5tZXNzYWdlLCciIGlzIGlkZW50aWNhbCB0byB0aGUgbWVzc2FnZS4nKSl9ZWxzZSBpZigkZT09PWd0KXRocm93IG5ldyBLKCJlcnJvci9t''@;'; put 'put ''ZXNzYWdlIiwnVGhlIGVycm9yICInLmNvbmNhdCgkZSwnIiBpcyBpZGVudGljYWwgdG8gdGhlIG1lc3NhZ2UuJykpO3d0PWd0LGd0PXZvaWQgMH1lbHNlIGlmKG51bGwhPWd0JiYib2JqZWN0IiE9PVkoZ3QpJiYiZnVuY3Rpb24iIT10eXBlb2YgZ3QpdGhyb3cgbmV3IEooImVycm9yIixbIk9i''@;'; put 'put ''amVjdCIsIkVycm9yIiwiRnVuY3Rpb24iLCJSZWdFeHAiXSxndCk7aWYoJGU9PT16KXt2YXIgbXQ9IiI7Z3QmJmd0Lm5hbWUmJihtdCs9IiAoIi5jb25jYXQoZ3QubmFtZSwiKSIpKSxtdCs9d3Q/IjogIi5jb25jYXQod3QpOiIuIixlZSh7YWN0dWFsOnZvaWQgMCxleHBlY3RlZDpndCxvcGVy''@;'; put 'put ''YXRvcjpRZS5uYW1lLG1lc3NhZ2U6Ik1pc3NpbmcgZXhwZWN0ZWQgIi5jb25jYXQoInJlamVjdHMiPT09UWUubmFtZT8icmVqZWN0aW9uIjoiZXhjZXB0aW9uIikuY29uY2F0KG10KSxzdGFja1N0YXJ0Rm46UWV9KX1pZihndCYmIVQoJGUsZ3Qsd3QsUWUpKXRocm93ICRlfWZ1bmN0aW9uIERl''@;'; put 'put ''KFFlLCRlLGd0LHd0KXtpZigkZSE9PXope2lmKCJzdHJpbmciPT10eXBlb2YgZ3QmJih3dD1ndCxndD12b2lkIDApLCFndHx8VCgkZSxndCkpe3ZhciBtdD13dD8iOiAiLmNvbmNhdCh3dCk6Ii4iO2VlKHthY3R1YWw6JGUsZXhwZWN0ZWQ6Z3Qsb3BlcmF0b3I6UWUubmFtZSxtZXNzYWdlOiJH''@;'; put 'put ''b3QgdW53YW50ZWQgIi5jb25jYXQoImRvZXNOb3RSZWplY3QiPT09UWUubmFtZT8icmVqZWN0aW9uIjoiZXhjZXB0aW9uIikuY29uY2F0KG10LCJcbiIpKydBY3R1YWwgbWVzc2FnZTogIicuY29uY2F0KCRlJiYkZS5tZXNzYWdlLCciJyksc3RhY2tTdGFydEZuOlFlfSl9dGhyb3cgJGV9fWZ1''@;'; put 'put ''bmN0aW9uIFBlKCl7Zm9yKHZhciBRZT1hcmd1bWVudHMubGVuZ3RoLCRlPW5ldyBBcnJheShRZSksZ3Q9MDtndDxRZTtndCsrKSRlW2d0XT1hcmd1bWVudHNbZ3RdO25lLmFwcGx5KHZvaWQgMCxbUGUsJGUubGVuZ3RoXS5jb25jYXQoJGUpKX1PLnRocm93cz1mdW5jdGlvbiBRZSgkZSl7Zm9y''@;'; put 'put ''KHZhciBndD1hcmd1bWVudHMubGVuZ3RoLHd0PW5ldyBBcnJheShndD4xP2d0LTE6MCksbXQ9MTttdDxndDttdCsrKXd0W210LTFdPWFyZ3VtZW50c1ttdF07Q2UuYXBwbHkodm9pZCAwLFtRZSxTKCRlKV0uY29uY2F0KHd0KSl9LE8ucmVqZWN0cz1mdW5jdGlvbiBRZSgkZSl7Zm9yKHZhciBn''@;'; put 'put ''dD1hcmd1bWVudHMubGVuZ3RoLHd0PW5ldyBBcnJheShndD4xP2d0LTE6MCksbXQ9MTttdDxndDttdCsrKXd0W210LTFdPWFyZ3VtZW50c1ttdF07cmV0dXJuIHllKCRlKS50aGVuKGZ1bmN0aW9uKHZ0KXtyZXR1cm4gQ2UuYXBwbHkodm9pZCAwLFtRZSx2dF0uY29uY2F0KHd0KSl9KX0sTy5k''@;'; put 'put ''b2VzTm90VGhyb3c9ZnVuY3Rpb24gUWUoJGUpe2Zvcih2YXIgZ3Q9YXJndW1lbnRzLmxlbmd0aCx3dD1uZXcgQXJyYXkoZ3Q+MT9ndC0xOjApLG10PTE7bXQ8Z3Q7bXQrKyl3dFttdC0xXT1hcmd1bWVudHNbbXRdO0RlLmFwcGx5KHZvaWQgMCxbUWUsUygkZSldLmNvbmNhdCh3dCkpfSxPLmRv''@;'; put 'put ''ZXNOb3RSZWplY3Q9ZnVuY3Rpb24gUWUoJGUpe2Zvcih2YXIgZ3Q9YXJndW1lbnRzLmxlbmd0aCx3dD1uZXcgQXJyYXkoZ3Q+MT9ndC0xOjApLG10PTE7bXQ8Z3Q7bXQrKyl3dFttdC0xXT1hcmd1bWVudHNbbXRdO3JldHVybiB5ZSgkZSkudGhlbihmdW5jdGlvbih2dCl7cmV0dXJuIERlLmFw''@;'; put 'put ''cGx5KHZvaWQgMCxbUWUsdnRdLmNvbmNhdCh3dCkpfSl9LE8uaWZFcnJvcj1mdW5jdGlvbiBRZSgkZSl7aWYobnVsbCE9JGUpe3ZhciBndD0iaWZFcnJvciBnb3QgdW53YW50ZWQgZXhjZXB0aW9uOiAiOyJvYmplY3QiPT09WSgkZSkmJiJzdHJpbmciPT10eXBlb2YgJGUubWVzc2FnZT9ndCs9''@;'; put 'put ''MD09PSRlLm1lc3NhZ2UubGVuZ3RoJiYkZS5jb25zdHJ1Y3Rvcj8kZS5jb25zdHJ1Y3Rvci5uYW1lOiRlLm1lc3NhZ2U6Z3QrPXZlKCRlKTt2YXIgd3Q9bmV3IGRlKHthY3R1YWw6JGUsZXhwZWN0ZWQ6bnVsbCxvcGVyYXRvcjoiaWZFcnJvciIsbWVzc2FnZTpndCxzdGFja1N0YXJ0Rm46UWV9''@;'; put 'put ''KSxtdD0kZS5zdGFjaztpZigic3RyaW5nIj09dHlwZW9mIG10KXt2YXIgdnQ9bXQuc3BsaXQoIlxuIik7dnQuc2hpZnQoKTtmb3IodmFyIEF0PXd0LnN0YWNrLnNwbGl0KCJcbiIpLGh0PTA7aHQ8dnQubGVuZ3RoO2h0Kyspe3ZhciBCdD1BdC5pbmRleE9mKHZ0W2h0XSk7aWYoLTEhPT1CdCl7''@;'; put 'put ''QXQ9QXQuc2xpY2UoMCxCdCk7YnJlYWt9fXd0LnN0YWNrPSIiLmNvbmNhdChBdC5qb2luKCJcbiIpLCJcbiIpLmNvbmNhdCh2dC5qb2luKCJcbiIpKX10aHJvdyB3dH19LE8uc3RyaWN0PUllKFBlLE8se2VxdWFsOk8uc3RyaWN0RXF1YWwsZGVlcEVxdWFsOk8uZGVlcFN0cmljdEVxdWFsLG5v''@;'; put 'put ''dEVxdWFsOk8ubm90U3RyaWN0RXF1YWwsbm90RGVlcEVxdWFsOk8ubm90RGVlcFN0cmljdEVxdWFsfSksTy5zdHJpY3Quc3RyaWN0PU8uc3RyaWN0fSw1OTYxOihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNDE1NSk7ZnVuY3Rpb24gYWUobmUseCxQKXtyZXR1cm4geCBpbiBuZT9P''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHkobmUseCx7dmFsdWU6UCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOm5lW3hdPVAsbmV9ZnVuY3Rpb24gWShuZSx4KXtmb3IodmFyIFA9MDtQPHgubGVuZ3RoO1ArKyl7dmFyIFY9eFtQXTtWLmVudW1lcmFibGU9Vi5lbnVt''@;'; put 'put ''ZXJhYmxlfHwhMSxWLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gViYmKFYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZSxWLmtleSxWKX19ZnVuY3Rpb24gVyhuZSx4KXtyZXR1cm4heHx8Im9iamVjdCIhPT1jZSh4KSYmImZ1bmN0aW9uIiE9dHlwZW9mIHg/TihuZSk6''@;'; put 'put ''eH1mdW5jdGlvbiBOKG5lKXtpZih2b2lkIDA9PT1uZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBuZX1mdW5jdGlvbiB0ZShuZSl7dmFyIHg9ImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIE1hcD9uZXcgTWFwOnZvaWQgMDtyZXR1cm4gdGU9ZnVuY3Rpb24oUCl7aWYobnVsbD09PVB8fC0xPT09RnVuY3Rpb24udG9TdHJpbmcuY2FsbChQKS5pbmRleE9mKCJbbmF0aXZlIGNvZGVdIikpcmV0dXJuIFA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFApdGhyb3cgbmV3IFR5cGVFcnJv''@;'; put 'put ''cigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpZih2b2lkIDAhPT14KXtpZih4LmhhcyhQKSlyZXR1cm4geC5nZXQoUCk7eC5zZXQoUCxUKX1mdW5jdGlvbiBUKCl7cmV0dXJuIEooUCxhcmd1bWVudHMsb2UodGhpcykuY29uc3RydWN0b3Ip''@;'; put 'put ''fXJldHVybiBULnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFAucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6VCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxzZShULFApfSx0ZShuZSl9ZnVuY3Rpb24gSygpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Yg''@;'; put 'put ''UmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSxbXSxm''@;'; put 'put ''dW5jdGlvbigpe30pKSwhMH1jYXRjaChuZSl7cmV0dXJuITF9fWZ1bmN0aW9uIEoobmUseCxQKXtyZXR1cm4oSj1LKCk/UmVmbGVjdC5jb25zdHJ1Y3Q6ZnVuY3Rpb24oVixULFMpe3ZhciBGPVtudWxsXTtGLnB1c2guYXBwbHkoRixUKTt2YXIgeWU9bmV3KEZ1bmN0aW9uLmJpbmQuYXBwbHko''@;'; put 'put ''VixGKSk7cmV0dXJuIFMmJnNlKHllLFMucHJvdG90eXBlKSx5ZX0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBzZShuZSx4KXtyZXR1cm4oc2U9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihQLFYpe3JldHVybiBQLl9fcHJvdG9fXz1WLFB9KShuZSx4KX1mdW5jdGlv''@;'; put 'put ''biBvZShuZSl7cmV0dXJuKG9lPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oeCl7cmV0dXJuIHguX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoeCl9KShuZSl9ZnVuY3Rpb24gY2UobmUpe3JldHVybihjZT0iZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih4KXtyZXR1cm4gdHlwZW9mIHh9OmZ1bmN0aW9uKHgpe3JldHVybiB4JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ4LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ4IT09U3ltYm9sLnByb3Rv''@;'; put 'put ''dHlwZT8ic3ltYm9sIjp0eXBlb2YgeH0pKG5lKX12YXIgZGU9aig5NTM5KS5pbnNwZWN0LHZlPWooMjEzNikuY29kZXMuRVJSX0lOVkFMSURfQVJHX1RZUEU7ZnVuY3Rpb24gQWUobmUseCxQKXtyZXR1cm4odm9pZCAwPT09UHx8UD5uZS5sZW5ndGgpJiYoUD1uZS5sZW5ndGgpLG5lLnN1YnN0''@;'; put 'put ''cmluZyhQLXgubGVuZ3RoLFApPT09eH12YXIga2U9IiIsU2U9IiIsSWU9IiIsVGU9IiIsTWU9e2RlZXBTdHJpY3RFcXVhbDoiRXhwZWN0ZWQgdmFsdWVzIHRvIGJlIHN0cmljdGx5IGRlZXAtZXF1YWw6IixzdHJpY3RFcXVhbDoiRXhwZWN0ZWQgdmFsdWVzIHRvIGJlIHN0cmljdGx5IGVxdWFs''@;'; put 'put ''OiIsc3RyaWN0RXF1YWxPYmplY3Q6J0V4cGVjdGVkICJhY3R1YWwiIHRvIGJlIHJlZmVyZW5jZS1lcXVhbCB0byAiZXhwZWN0ZWQiOicsZGVlcEVxdWFsOiJFeHBlY3RlZCB2YWx1ZXMgdG8gYmUgbG9vc2VseSBkZWVwLWVxdWFsOiIsZXF1YWw6IkV4cGVjdGVkIHZhbHVlcyB0byBiZSBsb29z''@;'; put 'put ''ZWx5IGVxdWFsOiIsbm90RGVlcFN0cmljdEVxdWFsOidFeHBlY3RlZCAiYWN0dWFsIiBub3QgdG8gYmUgc3RyaWN0bHkgZGVlcC1lcXVhbCB0bzonLG5vdFN0cmljdEVxdWFsOidFeHBlY3RlZCAiYWN0dWFsIiB0byBiZSBzdHJpY3RseSB1bmVxdWFsIHRvOicsbm90U3RyaWN0RXF1YWxPYmpl''@;'; put 'put ''Y3Q6J0V4cGVjdGVkICJhY3R1YWwiIG5vdCB0byBiZSByZWZlcmVuY2UtZXF1YWwgdG8gImV4cGVjdGVkIjonLG5vdERlZXBFcXVhbDonRXhwZWN0ZWQgImFjdHVhbCIgbm90IHRvIGJlIGxvb3NlbHkgZGVlcC1lcXVhbCB0bzonLG5vdEVxdWFsOidFeHBlY3RlZCAiYWN0dWFsIiB0byBiZSBs''@;'; put 'put ''b29zZWx5IHVuZXF1YWwgdG86Jyxub3RJZGVudGljYWw6IlZhbHVlcyBpZGVudGljYWwgYnV0IG5vdCByZWZlcmVuY2UtZXF1YWw6In07ZnVuY3Rpb24gaGUobmUpe3ZhciB4PU9iamVjdC5rZXlzKG5lKSxQPU9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG5lKSk7cmV0dXJu''@;'; put 'put ''IHguZm9yRWFjaChmdW5jdGlvbihWKXtQW1ZdPW5lW1ZdfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFAsIm1lc3NhZ2UiLHt2YWx1ZTpuZS5tZXNzYWdlfSksUH1mdW5jdGlvbiBPKG5lKXtyZXR1cm4gZGUobmUse2NvbXBhY3Q6ITEsY3VzdG9tSW5zcGVjdDohMSxkZXB0aDoxZTMsbWF4QXJy''@;'; put 'put ''YXlMZW5ndGg6MS8wLHNob3dIaWRkZW46ITEsYnJlYWtMZW5ndGg6MS8wLHNob3dQcm94eTohMSxzb3J0ZWQ6ITAsZ2V0dGVyczohMH0pfXZhciBlZT1mdW5jdGlvbihuZSl7ZnVuY3Rpb24geChTKXt2YXIgRjtpZihmdW5jdGlvbihodCxCdCl7aWYoIShodCBpbnN0YW5jZW9mIEJ0KSl0aHJv''@;'; put 'put ''dyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx4KSwib2JqZWN0IiE9PWNlKFMpfHxudWxsPT09Uyl0aHJvdyBuZXcgdmUoIm9wdGlvbnMiLCJPYmplY3QiLFMpO3ZhciB5ZT1TLm1lc3NhZ2UsQ2U9Uy5vcGVyYXRvcixEZT1TLnN0YWNr''@;'; put 'put ''U3RhcnRGbixQZT1TLmFjdHVhbCxRZT1TLmV4cGVjdGVkLCRlPUVycm9yLnN0YWNrVHJhY2VMaW1pdDtpZihFcnJvci5zdGFja1RyYWNlTGltaXQ9MCxudWxsIT15ZSlGPVcodGhpcyxvZSh4KS5jYWxsKHRoaXMsU3RyaW5nKHllKSkpO2Vsc2UgaWYocmUuc3RkZXJyJiZyZS5zdGRlcnIuaXNU''@;'; put 'put ''VFkmJihyZS5zdGRlcnImJnJlLnN0ZGVyci5nZXRDb2xvckRlcHRoJiYxIT09cmUuc3RkZXJyLmdldENvbG9yRGVwdGgoKT8oa2U9Ilx4MWJbMzRtIixTZT0iXHgxYlszMm0iLFRlPSJceDFiWzM5bSIsSWU9Ilx4MWJbMzFtIik6KGtlPSIiLFNlPSIiLFRlPSIiLEllPSIiKSksIm9iamVjdCI9''@;'; put 'put ''PT1jZShQZSkmJm51bGwhPT1QZSYmIm9iamVjdCI9PT1jZShRZSkmJm51bGwhPT1RZSYmInN0YWNrImluIFBlJiZQZSBpbnN0YW5jZW9mIEVycm9yJiYic3RhY2siaW4gUWUmJlFlIGluc3RhbmNlb2YgRXJyb3ImJihQZT1oZShQZSksUWU9aGUoUWUpKSwiZGVlcFN0cmljdEVxdWFsIj09PUNl''@;'; put 'put ''fHwic3RyaWN0RXF1YWwiPT09Q2UpRj1XKHRoaXMsb2UoeCkuY2FsbCh0aGlzLGZ1bmN0aW9uIHoobmUseCxQKXt2YXIgVj0iIixUPSIiLFM9MCxGPSIiLHllPSExLENlPU8obmUpLERlPUNlLnNwbGl0KCJcbiIpLFBlPU8oeCkuc3BsaXQoIlxuIiksUWU9MCwkZT0iIjtpZigic3RyaWN0RXF1''@;'; put 'put ''YWwiPT09UCYmIm9iamVjdCI9PT1jZShuZSkmJiJvYmplY3QiPT09Y2UoeCkmJm51bGwhPT1uZSYmbnVsbCE9PXgmJihQPSJzdHJpY3RFcXVhbE9iamVjdCIpLDE9PT1EZS5sZW5ndGgmJjE9PT1QZS5sZW5ndGgmJkRlWzBdIT09UGVbMF0pe3ZhciBndD1EZVswXS5sZW5ndGgrUGVbMF0ubGVu''@;'; put 'put ''Z3RoO2lmKGd0PD0xMCl7aWYoISgib2JqZWN0Ij09PWNlKG5lKSYmbnVsbCE9PW5lfHwib2JqZWN0Ij09PWNlKHgpJiZudWxsIT09eHx8MD09PW5lJiYwPT09eCkpcmV0dXJuIiIuY29uY2F0KE1lW1BdLCJcblxuIikrIiIuY29uY2F0KERlWzBdLCIgIT09ICIpLmNvbmNhdChQZVswXSwiXG4i''@;'; put 'put ''KX1lbHNlIGlmKCJzdHJpY3RFcXVhbE9iamVjdCIhPT1QJiZndDwocmUuc3RkZXJyJiZyZS5zdGRlcnIuaXNUVFk/cmUuc3RkZXJyLmNvbHVtbnM6ODApKXtmb3IoO0RlWzBdW1FlXT09PVBlWzBdW1FlXTspUWUrKztRZT4yJiYoJGU9IlxuICAiLmNvbmNhdChmdW5jdGlvbihMdCxDdCl7aWYo''@;'; put 'put ''Q3Q9TWF0aC5mbG9vcihDdCksMD09THQubGVuZ3RofHwwPT1DdClyZXR1cm4iIjt2YXIgZnQ9THQubGVuZ3RoKkN0O2ZvcihDdD1NYXRoLmZsb29yKE1hdGgubG9nKEN0KS9NYXRoLmxvZygyKSk7Q3Q7KUx0Kz1MdCxDdC0tO3JldHVybiBMdCtMdC5zdWJzdHJpbmcoMCxmdC1MdC5sZW5ndGgp''@;'; put 'put ''fSgiICIsUWUpLCJeIiksUWU9MCl9fWZvcih2YXIgd3Q9RGVbRGUubGVuZ3RoLTFdLG10PVBlW1BlLmxlbmd0aC0xXTt3dD09PW10JiYoUWUrKzwyP0Y9IlxuICAiLmNvbmNhdCh3dCkuY29uY2F0KEYpOlY9d3QsRGUucG9wKCksUGUucG9wKCksMCE9PURlLmxlbmd0aCYmMCE9PVBlLmxlbmd0''@;'; put 'put ''aCk7KXd0PURlW0RlLmxlbmd0aC0xXSxtdD1QZVtQZS5sZW5ndGgtMV07dmFyIHZ0PU1hdGgubWF4KERlLmxlbmd0aCxQZS5sZW5ndGgpO2lmKDA9PT12dCl7dmFyIEF0PUNlLnNwbGl0KCJcbiIpO2lmKEF0Lmxlbmd0aD4zMClmb3IoQXRbMjZdPSIiLmNvbmNhdChrZSwiLi4uIikuY29uY2F0''@;'; put 'put ''KFRlKTtBdC5sZW5ndGg+Mjc7KUF0LnBvcCgpO3JldHVybiIiLmNvbmNhdChNZS5ub3RJZGVudGljYWwsIlxuXG4iKS5jb25jYXQoQXQuam9pbigiXG4iKSwiXG4iKX1RZT4zJiYoRj0iXG4iLmNvbmNhdChrZSwiLi4uIikuY29uY2F0KFRlKS5jb25jYXQoRikseWU9ITApLCIiIT09ViYmKEY9''@;'; put 'put ''IlxuICAiLmNvbmNhdChWKS5jb25jYXQoRiksVj0iIik7dmFyIGh0PTAsQnQ9TWVbUF0rIlxuIi5jb25jYXQoU2UsIisgYWN0dWFsIikuY29uY2F0KFRlLCIgIikuY29uY2F0KEllLCItIGV4cGVjdGVkIikuY29uY2F0KFRlKSxvbj0iICIuY29uY2F0KGtlLCIuLi4iKS5jb25jYXQoVGUsIiBM''@;'; put 'put ''aW5lcyBza2lwcGVkIik7Zm9yKFFlPTA7UWU8dnQ7UWUrKyl7dmFyIF90PVFlLVM7aWYoRGUubGVuZ3RoPFFlKzEpX3Q+MSYmUWU+MiYmKF90PjQ/KFQrPSJcbiIuY29uY2F0KGtlLCIuLi4iKS5jb25jYXQoVGUpLHllPSEwKTpfdD4zJiYoVCs9IlxuICAiLmNvbmNhdChQZVtRZS0yXSksaHQr''@;'; put 'put ''KyksVCs9IlxuICAiLmNvbmNhdChQZVtRZS0xXSksaHQrKyksUz1RZSxWKz0iXG4iLmNvbmNhdChJZSwiLSIpLmNvbmNhdChUZSwiICIpLmNvbmNhdChQZVtRZV0pLGh0Kys7ZWxzZSBpZihQZS5sZW5ndGg8UWUrMSlfdD4xJiZRZT4yJiYoX3Q+ND8oVCs9IlxuIi5jb25jYXQoa2UsIi4uLiIp''@;'; put 'put ''LmNvbmNhdChUZSkseWU9ITApOl90PjMmJihUKz0iXG4gICIuY29uY2F0KERlW1FlLTJdKSxodCsrKSxUKz0iXG4gICIuY29uY2F0KERlW1FlLTFdKSxodCsrKSxTPVFlLFQrPSJcbiIuY29uY2F0KFNlLCIrIikuY29uY2F0KFRlLCIgIikuY29uY2F0KERlW1FlXSksaHQrKztlbHNle3ZhciB0''@;'; put 'put ''dD1QZVtRZV0sZXQ9RGVbUWVdLGx0PWV0IT09dHQmJighQWUoZXQsIiwiKXx8ZXQuc2xpY2UoMCwtMSkhPT10dCk7bHQmJkFlKHR0LCIsIikmJnR0LnNsaWNlKDAsLTEpPT09ZXQmJihsdD0hMSxldCs9IiwiKSxsdD8oX3Q+MSYmUWU+MiYmKF90PjQ/KFQrPSJcbiIuY29uY2F0KGtlLCIuLi4i''@;'; put 'put ''KS5jb25jYXQoVGUpLHllPSEwKTpfdD4zJiYoVCs9IlxuICAiLmNvbmNhdChEZVtRZS0yXSksaHQrKyksVCs9IlxuICAiLmNvbmNhdChEZVtRZS0xXSksaHQrKyksUz1RZSxUKz0iXG4iLmNvbmNhdChTZSwiKyIpLmNvbmNhdChUZSwiICIpLmNvbmNhdChldCksVis9IlxuIi5jb25jYXQoSWUs''@;'; put 'put ''Ii0iKS5jb25jYXQoVGUsIiAiKS5jb25jYXQodHQpLGh0Kz0yKTooVCs9VixWPSIiLDEhPT1fdCYmMCE9PVFlfHwoVCs9IlxuICAiLmNvbmNhdChldCksaHQrKykpfWlmKGh0PjIwJiZRZTx2dC0yKXJldHVybiIiLmNvbmNhdChCdCkuY29uY2F0KG9uLCJcbiIpLmNvbmNhdChULCJcbiIpLmNv''@;'; put 'put ''bmNhdChrZSwiLi4uIikuY29uY2F0KFRlKS5jb25jYXQoViwiXG4iKSsiIi5jb25jYXQoa2UsIi4uLiIpLmNvbmNhdChUZSl9cmV0dXJuIiIuY29uY2F0KEJ0KS5jb25jYXQoeWU/b246IiIsIlxuIikuY29uY2F0KFQpLmNvbmNhdChWKS5jb25jYXQoRikuY29uY2F0KCRlKX0oUGUsUWUsQ2Up''@;'; put 'put ''KSk7ZWxzZSBpZigibm90RGVlcFN0cmljdEVxdWFsIj09PUNlfHwibm90U3RyaWN0RXF1YWwiPT09Q2Upe3ZhciBndD1NZVtDZV0sd3Q9TyhQZSkuc3BsaXQoIlxuIik7aWYoIm5vdFN0cmljdEVxdWFsIj09PUNlJiYib2JqZWN0Ij09PWNlKFBlKSYmbnVsbCE9PVBlJiYoZ3Q9TWUubm90U3Ry''@;'; put 'put ''aWN0RXF1YWxPYmplY3QpLHd0Lmxlbmd0aD4zMClmb3Iod3RbMjZdPSIiLmNvbmNhdChrZSwiLi4uIikuY29uY2F0KFRlKTt3dC5sZW5ndGg+Mjc7KXd0LnBvcCgpO0Y9Vyh0aGlzLDE9PT13dC5sZW5ndGg/b2UoeCkuY2FsbCh0aGlzLCIiLmNvbmNhdChndCwiICIpLmNvbmNhdCh3dFswXSkp''@;'; put 'put ''Om9lKHgpLmNhbGwodGhpcywiIi5jb25jYXQoZ3QsIlxuXG4iKS5jb25jYXQod3Quam9pbigiXG4iKSwiXG4iKSkpfWVsc2V7dmFyIG10PU8oUGUpLHZ0PSIiLEF0PU1lW0NlXTsibm90RGVlcEVxdWFsIj09PUNlfHwibm90RXF1YWwiPT09Q2U/KG10PSIiLmNvbmNhdChNZVtDZV0sIlxuXG4i''@;'; put 'put ''KS5jb25jYXQobXQpKS5sZW5ndGg+MTAyNCYmKG10PSIiLmNvbmNhdChtdC5zbGljZSgwLDEwMjEpLCIuLi4iKSk6KHZ0PSIiLmNvbmNhdChPKFFlKSksbXQubGVuZ3RoPjUxMiYmKG10PSIiLmNvbmNhdChtdC5zbGljZSgwLDUwOSksIi4uLiIpKSx2dC5sZW5ndGg+NTEyJiYodnQ9IiIuY29u''@;'; put 'put ''Y2F0KHZ0LnNsaWNlKDAsNTA5KSwiLi4uIikpLCJkZWVwRXF1YWwiPT09Q2V8fCJlcXVhbCI9PT1DZT9tdD0iIi5jb25jYXQoQXQsIlxuXG4iKS5jb25jYXQobXQsIlxuXG5zaG91bGQgZXF1YWxcblxuIik6dnQ9IiAiLmNvbmNhdChDZSwiICIpLmNvbmNhdCh2dCkpLEY9Vyh0aGlzLG9lKHgp''@;'; put 'put ''LmNhbGwodGhpcywiIi5jb25jYXQobXQpLmNvbmNhdCh2dCkpKX1yZXR1cm4gRXJyb3Iuc3RhY2tUcmFjZUxpbWl0PSRlLEYuZ2VuZXJhdGVkTWVzc2FnZT0heWUsT2JqZWN0LmRlZmluZVByb3BlcnR5KE4oRiksIm5hbWUiLHt2YWx1ZToiQXNzZXJ0aW9uRXJyb3IgW0VSUl9BU1NFUlRJT05d''@;'; put 'put ''IixlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLEYuY29kZT0iRVJSX0FTU0VSVElPTiIsRi5hY3R1YWw9UGUsRi5leHBlY3RlZD1RZSxGLm9wZXJhdG9yPUNlLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShOKEYpLERl''@;'; put 'put ''KSxGLm5hbWU9IkFzc2VydGlvbkVycm9yIixXKEYpfXZhciBQLFY7cmV0dXJuIGZ1bmN0aW9uKFMsRil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEYmJm51bGwhPT1GKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9u''@;'; put 'put ''Iik7Uy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShGJiZGLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOlMsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLEYmJnNlKFMsRil9KHgsbmUpLFA9eCxWPVt7a2V5OiJ0b1N0cmluZyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4iIi5j''@;'; put 'put ''b25jYXQodGhpcy5uYW1lLCIgWyIpLmNvbmNhdCh0aGlzLmNvZGUsIl06ICIpLmNvbmNhdCh0aGlzLm1lc3NhZ2UpfX0se2tleTpkZS5jdXN0b20sdmFsdWU6ZnVuY3Rpb24oUyxGKXtyZXR1cm4gZGUodGhpcyxmdW5jdGlvbih5ZSl7Zm9yKHZhciBDZT0xO0NlPGFyZ3VtZW50cy5sZW5ndGg7''@;'; put 'put ''Q2UrKyl7dmFyIERlPW51bGwhPWFyZ3VtZW50c1tDZV0/YXJndW1lbnRzW0NlXTp7fSxQZT1PYmplY3Qua2V5cyhEZSk7ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihQZT1QZS5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhEZSku''@;'; put 'put ''ZmlsdGVyKGZ1bmN0aW9uKFFlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihEZSxRZSkuZW51bWVyYWJsZX0pKSksUGUuZm9yRWFjaChmdW5jdGlvbihRZSl7YWUoeWUsUWUsRGVbUWVdKX0pfXJldHVybiB5ZX0oe30sRix7Y3VzdG9tSW5zcGVjdDohMSxkZXB0aDow''@;'; put 'put ''fSkpfX1dLFYmJlkoUC5wcm90b3R5cGUsVikseH0odGUoRXJyb3IpKTtVLmV4cG9ydHM9ZWV9LDIxMzY6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByZShvZSl7cmV0dXJuKHJlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJh''@;'; put 'put ''dG9yP2Z1bmN0aW9uKGNlKXtyZXR1cm4gdHlwZW9mIGNlfTpmdW5jdGlvbihjZSl7cmV0dXJuIGNlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmY2UhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjZX0pKG9lKX1mdW5jdGlv''@;'; put 'put ''biBZKG9lKXtyZXR1cm4oWT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGNlKXtyZXR1cm4gY2UuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoY2UpfSkob2UpfWZ1bmN0aW9uIFcob2UsY2Upe3JldHVybihXPU9iamVjdC5zZXRQ''@;'; put 'put ''cm90b3R5cGVPZnx8ZnVuY3Rpb24oZGUsdmUpe3JldHVybiBkZS5fX3Byb3RvX189dmUsZGV9KShvZSxjZSl9dmFyIE4sdGUsSz17fTtmdW5jdGlvbiBKKG9lLGNlLGRlKXtkZXx8KGRlPUVycm9yKTt2YXIgdmU9ZnVuY3Rpb24oQWUpe2Z1bmN0aW9uIGtlKFNlLEllLFRlKXt2YXIgTWUsaGUs''@;'; put 'put ''Tyx6O3JldHVybiBmdW5jdGlvbihoZSxPKXtpZighKGhlIGluc3RhbmNlb2YgTykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsa2UpLChNZT1mdW5jdGlvbiBhZShvZSxjZSl7cmV0dXJuIWNlfHwib2JqZWN0IiE9PXJlKGNl''@;'; put 'put ''KSYmImZ1bmN0aW9uIiE9dHlwZW9mIGNlP2Z1bmN0aW9uKGRlKXtpZih2b2lkIDA9PT1kZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBkZX0ob2UpOmNlfSh0aGlzLFko''@;'; put 'put ''a2UpLmNhbGwodGhpcywoaGU9U2UsTz1JZSx6PVRlLCJzdHJpbmciPT10eXBlb2YgY2U/Y2U6Y2UoaGUsTyx6KSkpKSkuY29kZT1vZSxNZX1yZXR1cm4gZnVuY3Rpb24oU2UsSWUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBJZSYmbnVsbCE9PUllKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVy''@;'; put 'put ''IGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7U2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSWUmJkllLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOlNlLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxJZSYmVyhTZSxJZSl9KGtlLEFl''@;'; put 'put ''KSxrZX0oZGUpO0tbb2VdPXZlfWZ1bmN0aW9uIHNlKG9lLGNlKXtpZihBcnJheS5pc0FycmF5KG9lKSl7dmFyIGRlPW9lLmxlbmd0aDtyZXR1cm4gb2U9b2UubWFwKGZ1bmN0aW9uKHZlKXtyZXR1cm4gU3RyaW5nKHZlKX0pLGRlPjI/Im9uZSBvZiAiLmNvbmNhdChjZSwiICIpLmNvbmNhdChv''@;'; put 'put ''ZS5zbGljZSgwLGRlLTEpLmpvaW4oIiwgIiksIiwgb3IgIikrb2VbZGUtMV06Mj09PWRlPyJvbmUgb2YgIi5jb25jYXQoY2UsIiAiKS5jb25jYXQob2VbMF0sIiBvciAiKS5jb25jYXQob2VbMV0pOiJvZiAiLmNvbmNhdChjZSwiICIpLmNvbmNhdChvZVswXSl9cmV0dXJuIm9mICIuY29uY2F0''@;'; put 'put ''KGNlLCIgIikuY29uY2F0KFN0cmluZyhvZSkpfUooIkVSUl9BTUJJR1VPVVNfQVJHVU1FTlQiLCdUaGUgIiVzIiBhcmd1bWVudCBpcyBhbWJpZ3VvdXMuICVzJyxUeXBlRXJyb3IpLEooIkVSUl9JTlZBTElEX0FSR19UWVBFIixmdW5jdGlvbihvZSxjZSxkZSl7dmFyIHZlLFNlLFRlLGhlO2lm''@;'; put 'put ''KHZvaWQgMD09PU4mJihOPWooOTI4MikpLE4oInN0cmluZyI9PXR5cGVvZiBvZSwiJ25hbWUnIG11c3QgYmUgYSBzdHJpbmciKSwic3RyaW5nIj09dHlwZW9mIGNlJiYibm90ICI9PT1jZS5zdWJzdHIoMCwibm90ICIubGVuZ3RoKT8odmU9Im11c3Qgbm90IGJlIixjZT1jZS5yZXBsYWNlKC9e''@;'; put 'put ''bm90IC8sIiIpKTp2ZT0ibXVzdCBiZSIsVGU9b2UsKHZvaWQgMD09PWhlfHxoZT5UZS5sZW5ndGgpJiYoaGU9VGUubGVuZ3RoKSwiIGFyZ3VtZW50Ij09PVRlLnN1YnN0cmluZyhoZS0iIGFyZ3VtZW50Ii5sZW5ndGgsaGUpKVNlPSJUaGUgIi5jb25jYXQob2UsIiAiKS5jb25jYXQodmUsIiAi''@;'; put 'put ''KS5jb25jYXQoc2UoY2UsInR5cGUiKSk7ZWxzZXt2YXIgSWU9ZnVuY3Rpb24oVGUsTWUsaGUpe3JldHVybiJudW1iZXIiIT10eXBlb2YgaGUmJihoZT0wKSwhKGhlKyIuIi5sZW5ndGg+VGUubGVuZ3RoKSYmLTEhPT1UZS5pbmRleE9mKCIuIixoZSl9KG9lKT8icHJvcGVydHkiOiJhcmd1bWVu''@;'; put 'put ''dCI7U2U9J1RoZSAiJy5jb25jYXQob2UsJyIgJykuY29uY2F0KEllLCIgIikuY29uY2F0KHZlLCIgIikuY29uY2F0KHNlKGNlLCJ0eXBlIikpfXJldHVybiBTZSsiLiBSZWNlaXZlZCB0eXBlICIuY29uY2F0KHJlKGRlKSl9LFR5cGVFcnJvciksSigiRVJSX0lOVkFMSURfQVJHX1ZBTFVFIixm''@;'; put 'put ''dW5jdGlvbihvZSxjZSl7dmFyIGRlPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToiaXMgaW52YWxpZCI7dm9pZCAwPT09dGUmJih0ZT1qKDk1MzkpKTt2YXIgdmU9dGUuaW5zcGVjdChjZSk7cmV0dXJuIHZlLmxlbmd0aD4xMjgmJih2ZT0i''@;'; put 'put ''Ii5jb25jYXQodmUuc2xpY2UoMCwxMjgpLCIuLi4iKSksIlRoZSBhcmd1bWVudCAnIi5jb25jYXQob2UsIicgIikuY29uY2F0KGRlLCIuIFJlY2VpdmVkICIpLmNvbmNhdCh2ZSl9LFR5cGVFcnJvcixSYW5nZUVycm9yKSxKKCJFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUiLGZ1bmN0aW9uKG9l''@;'; put 'put ''LGNlLGRlKXt2YXIgdmU7cmV0dXJuIHZlPWRlJiZkZS5jb25zdHJ1Y3RvciYmZGUuY29uc3RydWN0b3IubmFtZT8iaW5zdGFuY2Ugb2YgIi5jb25jYXQoZGUuY29uc3RydWN0b3IubmFtZSk6InR5cGUgIi5jb25jYXQocmUoZGUpKSwiRXhwZWN0ZWQgIi5jb25jYXQob2UsJyB0byBiZSByZXR1''@;'; put 'put ''cm5lZCBmcm9tIHRoZSAiJykuY29uY2F0KGNlLCciJykrIiBmdW5jdGlvbiBidXQgZ290ICIuY29uY2F0KHZlLCIuIil9LFR5cGVFcnJvciksSigiRVJSX01JU1NJTkdfQVJHUyIsZnVuY3Rpb24oKXtmb3IodmFyIG9lPWFyZ3VtZW50cy5sZW5ndGgsY2U9bmV3IEFycmF5KG9lKSxkZT0wO2Rl''@;'; put 'put ''PG9lO2RlKyspY2VbZGVdPWFyZ3VtZW50c1tkZV07dm9pZCAwPT09TiYmKE49aig5MjgyKSksTihjZS5sZW5ndGg+MCwiQXQgbGVhc3Qgb25lIGFyZyBuZWVkcyB0byBiZSBzcGVjaWZpZWQiKTt2YXIgdmU9IlRoZSAiLEFlPWNlLmxlbmd0aDtzd2l0Y2goY2U9Y2UubWFwKGZ1bmN0aW9uKGtl''@;'; put 'put ''KXtyZXR1cm4nIicuY29uY2F0KGtlLCciJyl9KSxBZSl7Y2FzZSAxOnZlKz0iIi5jb25jYXQoY2VbMF0sIiBhcmd1bWVudCIpO2JyZWFrO2Nhc2UgMjp2ZSs9IiIuY29uY2F0KGNlWzBdLCIgYW5kICIpLmNvbmNhdChjZVsxXSwiIGFyZ3VtZW50cyIpO2JyZWFrO2RlZmF1bHQ6dmUrPWNlLnNs''@;'; put 'put ''aWNlKDAsQWUtMSkuam9pbigiLCAiKSx2ZSs9IiwgYW5kICIuY29uY2F0KGNlW0FlLTFdLCIgYXJndW1lbnRzIil9cmV0dXJuIiIuY29uY2F0KHZlLCIgbXVzdCBiZSBzcGVjaWZpZWQiKX0sVHlwZUVycm9yKSxVLmV4cG9ydHMuY29kZXM9S30sOTE1ODooVSxRLGopPT57InVzZSBzdHJpY3Qi''@;'; put 'put ''O2Z1bmN0aW9uIHJlKEF0LGh0KXtyZXR1cm4gZnVuY3Rpb24oQnQpe2lmKEFycmF5LmlzQXJyYXkoQnQpKXJldHVybiBCdH0oQXQpfHxmdW5jdGlvbihCdCxvbil7dmFyIF90PVtdLHR0PSEwLGV0PSExLGx0PXZvaWQgMDt0cnl7Zm9yKHZhciBMdCxDdD1CdFtTeW1ib2wuaXRlcmF0b3JdKCk7''@;'; put 'put ''ISh0dD0oTHQ9Q3QubmV4dCgpKS5kb25lKSYmKF90LnB1c2goTHQudmFsdWUpLCFvbnx8X3QubGVuZ3RoIT09b24pO3R0PSEwKTt9Y2F0Y2goZnQpe2V0PSEwLGx0PWZ0fWZpbmFsbHl7dHJ5e3R0fHxudWxsPT1DdC5yZXR1cm58fEN0LnJldHVybigpfWZpbmFsbHl7aWYoZXQpdGhyb3cgbHR9''@;'; put 'put ''fXJldHVybiBfdH0oQXQsaHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX1mdW5jdGlvbiBhZShBdCl7cmV0dXJuKGFlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJz''@;'; put 'put ''eW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGh0KXtyZXR1cm4gdHlwZW9mIGh0fTpmdW5jdGlvbihodCl7cmV0dXJuIGh0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZodC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmaHQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1i''@;'; put 'put ''b2wiOnR5cGVvZiBodH0pKEF0KX12YXIgWT12b2lkIDAhPT0vYS9nLmZsYWdzLFc9ZnVuY3Rpb24oQXQpe3ZhciBodD1bXTtyZXR1cm4gQXQuZm9yRWFjaChmdW5jdGlvbihCdCl7cmV0dXJuIGh0LnB1c2goQnQpfSksaHR9LE49ZnVuY3Rpb24oQXQpe3ZhciBodD1bXTtyZXR1cm4gQXQuZm9y''@;'; put 'put ''RWFjaChmdW5jdGlvbihCdCxvbil7cmV0dXJuIGh0LnB1c2goW29uLEJ0XSl9KSxodH0sdGU9T2JqZWN0LmlzP09iamVjdC5pczpqKDYwOSksSz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP09iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sSj1O''@;'; put 'put ''dW1iZXIuaXNOYU4/TnVtYmVyLmlzTmFOOmooMzYwKTtmdW5jdGlvbiBzZShBdCl7cmV0dXJuIEF0LmNhbGwuYmluZChBdCl9dmFyIG9lPXNlKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLGNlPXNlKE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUpLGRlPXNl''@;'; put 'put ''KE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpLHZlPWooOTUzOSkudHlwZXMsQWU9dmUuaXNBbnlBcnJheUJ1ZmZlcixrZT12ZS5pc0FycmF5QnVmZmVyVmlldyxTZT12ZS5pc0RhdGUsSWU9dmUuaXNNYXAsVGU9dmUuaXNSZWdFeHAsTWU9dmUuaXNTZXQsaGU9dmUuaXNOYXRpdmVFcnJvcixP''@;'; put 'put ''PXZlLmlzQm94ZWRQcmltaXRpdmUsej12ZS5pc051bWJlck9iamVjdCxlZT12ZS5pc1N0cmluZ09iamVjdCxuZT12ZS5pc0Jvb2xlYW5PYmplY3QseD12ZS5pc0JpZ0ludE9iamVjdCxQPXZlLmlzU3ltYm9sT2JqZWN0LFY9dmUuaXNGbG9hdDMyQXJyYXksVD12ZS5pc0Zsb2F0NjRBcnJheTtm''@;'; put 'put ''dW5jdGlvbiBTKEF0KXtpZigwPT09QXQubGVuZ3RofHxBdC5sZW5ndGg+MTApcmV0dXJuITA7Zm9yKHZhciBodD0wO2h0PEF0Lmxlbmd0aDtodCsrKXt2YXIgQnQ9QXQuY2hhckNvZGVBdChodCk7aWYoQnQ8NDh8fEJ0PjU3KXJldHVybiEwfXJldHVybiAxMD09PUF0Lmxlbmd0aCYmQXQ+PU1h''@;'; put 'put ''dGgucG93KDIsMzIpfWZ1bmN0aW9uIEYoQXQpe3JldHVybiBPYmplY3Qua2V5cyhBdCkuZmlsdGVyKFMpLmNvbmNhdChLKEF0KS5maWx0ZXIoT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5iaW5kKEF0KSkpfWZ1bmN0aW9uIHllKEF0LGh0KXtpZihBdD09PWh0KXJldHVy''@;'; put 'put ''biAwO2Zvcih2YXIgQnQ9QXQubGVuZ3RoLG9uPWh0Lmxlbmd0aCxfdD0wLHR0PU1hdGgubWluKEJ0LG9uKTtfdDx0dDsrK190KWlmKEF0W190XSE9PWh0W190XSl7QnQ9QXRbX3RdLG9uPWh0W190XTticmVha31yZXR1cm4gQnQ8b24/LTE6b248QnQ/MTowfWZ1bmN0aW9uIENlKEF0LGh0LEJ0''@;'; put 'put ''LG9uKXtpZihBdD09PWh0KXJldHVybiAwIT09QXR8fCFCdHx8dGUoQXQsaHQpO2lmKEJ0KXtpZigib2JqZWN0IiE9PWFlKEF0KSlyZXR1cm4ibnVtYmVyIj09dHlwZW9mIEF0JiZKKEF0KSYmSihodCk7aWYoIm9iamVjdCIhPT1hZShodCl8fG51bGw9PT1BdHx8bnVsbD09PWh0fHxPYmplY3Qu''@;'; put 'put ''Z2V0UHJvdG90eXBlT2YoQXQpIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKGh0KSlyZXR1cm4hMX1lbHNle2lmKG51bGw9PT1BdHx8Im9iamVjdCIhPT1hZShBdCkpcmV0dXJuKG51bGw9PT1odHx8Im9iamVjdCIhPT1hZShodCkpJiZBdD09aHQ7aWYobnVsbD09PWh0fHwib2JqZWN0IiE9PWFl''@;'; put 'put ''KGh0KSlyZXR1cm4hMX12YXIgX3QsdHQsZXQsbHQsVWUseXQsTHQ9ZGUoQXQpO2lmKEx0IT09ZGUoaHQpKXJldHVybiExO2lmKEFycmF5LmlzQXJyYXkoQXQpKXtpZihBdC5sZW5ndGghPT1odC5sZW5ndGgpcmV0dXJuITE7dmFyIEN0PUYoQXQpLGZ0PUYoaHQpO3JldHVybiBDdC5sZW5ndGg9''@;'; put 'put ''PT1mdC5sZW5ndGgmJlBlKEF0LGh0LEJ0LG9uLDEsQ3QpfWlmKCJbb2JqZWN0IE9iamVjdF0iPT09THQmJighSWUoQXQpJiZJZShodCl8fCFNZShBdCkmJk1lKGh0KSkpcmV0dXJuITE7aWYoU2UoQXQpKXtpZighU2UoaHQpfHxEYXRlLnByb3RvdHlwZS5nZXRUaW1lLmNhbGwoQXQpIT09RGF0''@;'; put 'put ''ZS5wcm90b3R5cGUuZ2V0VGltZS5jYWxsKGh0KSlyZXR1cm4hMX1lbHNlIGlmKFRlKEF0KSl7aWYoIVRlKGh0KXx8KGV0PUF0LGx0PWh0LCEoWT9ldC5zb3VyY2U9PT1sdC5zb3VyY2UmJmV0LmZsYWdzPT09bHQuZmxhZ3M6UmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGV0KT09PVJl''@;'; put 'put ''Z0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsdCkpKSlyZXR1cm4hMX1lbHNlIGlmKGhlKEF0KXx8QXQgaW5zdGFuY2VvZiBFcnJvcil7aWYoQXQubWVzc2FnZSE9PWh0Lm1lc3NhZ2V8fEF0Lm5hbWUhPT1odC5uYW1lKXJldHVybiExfWVsc2V7aWYoa2UoQXQpKXtpZihCdHx8IVYoQXQp''@;'; put 'put ''JiYhVChBdCkpe2lmKChVZT1BdCkuYnl0ZUxlbmd0aCE9PSh5dD1odCkuYnl0ZUxlbmd0aHx8MCE9PXllKG5ldyBVaW50OEFycmF5KFVlLmJ1ZmZlcixVZS5ieXRlT2Zmc2V0LFVlLmJ5dGVMZW5ndGgpLG5ldyBVaW50OEFycmF5KHl0LmJ1ZmZlcix5dC5ieXRlT2Zmc2V0LHl0LmJ5dGVMZW5n''@;'; put 'put ''dGgpKSlyZXR1cm4hMX1lbHNlIGlmKCFmdW5jdGlvbihVZSx5dCl7aWYoVWUuYnl0ZUxlbmd0aCE9PXl0LmJ5dGVMZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBqdD0wO2p0PFVlLmJ5dGVMZW5ndGg7anQrKylpZihVZVtqdF0hPT15dFtqdF0pcmV0dXJuITE7cmV0dXJuITB9KEF0LGh0KSlyZXR1''@;'; put 'put ''cm4hMTt2YXIgSHQ9RihBdCksR2U9RihodCk7cmV0dXJuIEh0Lmxlbmd0aD09PUdlLmxlbmd0aCYmUGUoQXQsaHQsQnQsb24sMCxIdCl9aWYoTWUoQXQpKXJldHVybiEoIU1lKGh0KXx8QXQuc2l6ZSE9PWh0LnNpemUpJiZQZShBdCxodCxCdCxvbiwyKTtpZihJZShBdCkpcmV0dXJuISghSWUo''@;'; put 'put ''aHQpfHxBdC5zaXplIT09aHQuc2l6ZSkmJlBlKEF0LGh0LEJ0LG9uLDMpO2lmKEFlKEF0KSl7aWYoKF90PUF0KS5ieXRlTGVuZ3RoIT09KHR0PWh0KS5ieXRlTGVuZ3RofHwwIT09eWUobmV3IFVpbnQ4QXJyYXkoX3QpLG5ldyBVaW50OEFycmF5KHR0KSkpcmV0dXJuITF9ZWxzZSBpZihPKEF0''@;'; put 'put ''KSYmIWZ1bmN0aW9uKFVlLHl0KXtyZXR1cm4geihVZSk/eih5dCkmJnRlKE51bWJlci5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFVlKSxOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh5dCkpOmVlKFVlKT9lZSh5dCkmJlN0cmluZy5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFVlKT09PVN0''@;'; put 'put ''cmluZy5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHl0KTpuZShVZSk/bmUoeXQpJiZCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoVWUpPT09Qm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHl0KTp4KFVlKT94KHl0KSYmQmlnSW50LnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoVWUp''@;'; put 'put ''PT09QmlnSW50LnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoeXQpOlAoeXQpJiZTeW1ib2wucHJvdG90eXBlLnZhbHVlT2YuY2FsbChVZSk9PT1TeW1ib2wucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh5dCl9KEF0LGh0KSlyZXR1cm4hMX1yZXR1cm4gUGUoQXQsaHQsQnQsb24sMCl9ZnVuY3Rpb24g''@;'; put 'put ''RGUoQXQsaHQpe3JldHVybiBodC5maWx0ZXIoZnVuY3Rpb24oQnQpe3JldHVybiBjZShBdCxCdCl9KX1mdW5jdGlvbiBQZShBdCxodCxCdCxvbixfdCx0dCl7aWYoNT09PWFyZ3VtZW50cy5sZW5ndGgpe3R0PU9iamVjdC5rZXlzKEF0KTt2YXIgZXQ9T2JqZWN0LmtleXMoaHQpO2lmKHR0Lmxl''@;'; put 'put ''bmd0aCE9PWV0Lmxlbmd0aClyZXR1cm4hMX1mb3IodmFyIGx0PTA7bHQ8dHQubGVuZ3RoO2x0KyspaWYoIW9lKGh0LHR0W2x0XSkpcmV0dXJuITE7aWYoQnQmJjU9PT1hcmd1bWVudHMubGVuZ3RoKXt2YXIgTHQ9SyhBdCk7aWYoMCE9PUx0Lmxlbmd0aCl7dmFyIEN0PTA7Zm9yKGx0PTA7bHQ8''@;'; put 'put ''THQubGVuZ3RoO2x0Kyspe3ZhciBmdD1MdFtsdF07aWYoY2UoQXQsZnQpKXtpZighY2UoaHQsZnQpKXJldHVybiExO3R0LnB1c2goZnQpLEN0Kyt9ZWxzZSBpZihjZShodCxmdCkpcmV0dXJuITF9dmFyIEh0PUsoaHQpO2lmKEx0Lmxlbmd0aCE9PUh0Lmxlbmd0aCYmRGUoaHQsSHQpLmxlbmd0''@;'; put 'put ''aCE9PUN0KXJldHVybiExfWVsc2V7dmFyIEdlPUsoaHQpO2lmKDAhPT1HZS5sZW5ndGgmJjAhPT1EZShodCxHZSkubGVuZ3RoKXJldHVybiExfX1pZigwPT09dHQubGVuZ3RoJiYoMD09PV90fHwxPT09X3QmJjA9PT1BdC5sZW5ndGh8fDA9PT1BdC5zaXplKSlyZXR1cm4hMDtpZih2b2lkIDA9''@;'; put 'put ''PT1vbilvbj17dmFsMTpuZXcgTWFwLHZhbDI6bmV3IE1hcCxwb3NpdGlvbjowfTtlbHNle3ZhciBVZT1vbi52YWwxLmdldChBdCk7aWYodm9pZCAwIT09VWUpe3ZhciB5dD1vbi52YWwyLmdldChodCk7aWYodm9pZCAwIT09eXQpcmV0dXJuIFVlPT09eXR9b24ucG9zaXRpb24rK31vbi52YWwx''@;'; put 'put ''LnNldChBdCxvbi5wb3NpdGlvbiksb24udmFsMi5zZXQoaHQsb24ucG9zaXRpb24pO3ZhciBqdD12dChBdCxodCxCdCx0dCxvbixfdCk7cmV0dXJuIG9uLnZhbDEuZGVsZXRlKEF0KSxvbi52YWwyLmRlbGV0ZShodCksanR9ZnVuY3Rpb24gUWUoQXQsaHQsQnQsb24pe2Zvcih2YXIgX3Q9VyhB''@;'; put 'put ''dCksdHQ9MDt0dDxfdC5sZW5ndGg7dHQrKyl7dmFyIGV0PV90W3R0XTtpZihDZShodCxldCxCdCxvbikpcmV0dXJuIEF0LmRlbGV0ZShldCksITB9cmV0dXJuITF9ZnVuY3Rpb24gJGUoQXQpe3N3aXRjaChhZShBdCkpe2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4gbnVsbDtjYXNlIm9iamVjdCI6''@;'; put 'put ''cmV0dXJuO2Nhc2Uic3ltYm9sIjpyZXR1cm4hMTtjYXNlInN0cmluZyI6QXQ9K0F0O2Nhc2UibnVtYmVyIjppZihKKEF0KSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBndChBdCxodCxCdCl7dmFyIG9uPSRlKEJ0KTtyZXR1cm4gbnVsbCE9b24/b246aHQuaGFzKG9uKSYmIUF0Lmhhcyhv''@;'; put 'put ''bil9ZnVuY3Rpb24gd3QoQXQsaHQsQnQsb24sX3Qpe3ZhciB0dD0kZShCdCk7aWYobnVsbCE9dHQpcmV0dXJuIHR0O3ZhciBldD1odC5nZXQodHQpO3JldHVybiEodm9pZCAwPT09ZXQmJiFodC5oYXModHQpfHwhQ2Uob24sZXQsITEsX3QpKSYmIUF0Lmhhcyh0dCkmJkNlKG9uLGV0LCExLF90''@;'; put 'put ''KX1mdW5jdGlvbiBtdChBdCxodCxCdCxvbixfdCx0dCl7Zm9yKHZhciBldD1XKEF0KSxsdD0wO2x0PGV0Lmxlbmd0aDtsdCsrKXt2YXIgTHQ9ZXRbbHRdO2lmKENlKEJ0LEx0LF90LHR0KSYmQ2Uob24saHQuZ2V0KEx0KSxfdCx0dCkpcmV0dXJuIEF0LmRlbGV0ZShMdCksITB9cmV0dXJuITF9''@;'; put 'put ''ZnVuY3Rpb24gdnQoQXQsaHQsQnQsb24sX3QsdHQpe3ZhciBldD0wO2lmKDI9PT10dCl7aWYoIWZ1bmN0aW9uKGZ0LEh0LEdlLFVlKXtmb3IodmFyIHl0PW51bGwsanQ9VyhmdCksSnQ9MDtKdDxqdC5sZW5ndGg7SnQrKyl7dmFyIGduPWp0W0p0XTtpZigib2JqZWN0Ij09PWFlKGduKSYmbnVs''@;'; put 'put ''bCE9PWduKW51bGw9PT15dCYmKHl0PW5ldyBTZXQpLHl0LmFkZChnbik7ZWxzZSBpZighSHQuaGFzKGduKSl7aWYoR2V8fCFndChmdCxIdCxnbikpcmV0dXJuITE7bnVsbD09PXl0JiYoeXQ9bmV3IFNldCkseXQuYWRkKGduKX19aWYobnVsbCE9PXl0KXtmb3IodmFyIGRuPVcoSHQpLHluPTA7''@;'; put 'put ''eW48ZG4ubGVuZ3RoO3luKyspe3ZhciBsbj1kblt5bl07aWYoIm9iamVjdCI9PT1hZShsbikmJm51bGwhPT1sbil7aWYoIVFlKHl0LGxuLEdlLFVlKSlyZXR1cm4hMX1lbHNlIGlmKCFHZSYmIWZ0LmhhcyhsbikmJiFRZSh5dCxsbixHZSxVZSkpcmV0dXJuITF9cmV0dXJuIDA9PT15dC5zaXpl''@;'; put 'put ''fXJldHVybiEwfShBdCxodCxCdCxfdCkpcmV0dXJuITF9ZWxzZSBpZigzPT09dHQpe2lmKCFmdW5jdGlvbihmdCxIdCxHZSxVZSl7Zm9yKHZhciB5dD1udWxsLGp0PU4oZnQpLEp0PTA7SnQ8anQubGVuZ3RoO0p0Kyspe3ZhciBnbj1yZShqdFtKdF0sMiksZG49Z25bMF0seW49Z25bMV07aWYo''@;'; put 'put ''Im9iamVjdCI9PT1hZShkbikmJm51bGwhPT1kbiludWxsPT09eXQmJih5dD1uZXcgU2V0KSx5dC5hZGQoZG4pO2Vsc2V7dmFyIGxuPUh0LmdldChkbik7aWYodm9pZCAwPT09bG4mJiFIdC5oYXMoZG4pfHwhQ2UoeW4sbG4sR2UsVWUpKXtpZihHZXx8IXd0KGZ0LEh0LGRuLHluLFVlKSlyZXR1''@;'; put 'put ''cm4hMTtudWxsPT09eXQmJih5dD1uZXcgU2V0KSx5dC5hZGQoZG4pfX19aWYobnVsbCE9PXl0KXtmb3IodmFyIE5uPU4oSHQpLGJuPTA7Ym48Tm4ubGVuZ3RoO2JuKyspe3ZhciBlcj1yZShObltibl0sMiksc3I9KGRuPWVyWzBdLGVyWzFdKTtpZigib2JqZWN0Ij09PWFlKGRuKSYmbnVsbCE9''@;'; put 'put ''PWRuKXtpZighbXQoeXQsZnQsZG4sc3IsR2UsVWUpKXJldHVybiExfWVsc2UgaWYoIShHZXx8ZnQuaGFzKGRuKSYmQ2UoZnQuZ2V0KGRuKSxzciwhMSxVZSl8fG10KHl0LGZ0LGRuLHNyLCExLFVlKSkpcmV0dXJuITF9cmV0dXJuIDA9PT15dC5zaXplfXJldHVybiEwfShBdCxodCxCdCxfdCkp''@;'; put 'put ''cmV0dXJuITF9ZWxzZSBpZigxPT09dHQpZm9yKDtldDxBdC5sZW5ndGg7ZXQrKyl7aWYoIW9lKEF0LGV0KSl7aWYob2UoaHQsZXQpKXJldHVybiExO2Zvcih2YXIgbHQ9T2JqZWN0LmtleXMoQXQpO2V0PGx0Lmxlbmd0aDtldCsrKXt2YXIgTHQ9bHRbZXRdO2lmKCFvZShodCxMdCl8fCFDZShB''@;'; put 'put ''dFtMdF0saHRbTHRdLEJ0LF90KSlyZXR1cm4hMX1yZXR1cm4gbHQubGVuZ3RoPT09T2JqZWN0LmtleXMoaHQpLmxlbmd0aH1pZighb2UoaHQsZXQpfHwhQ2UoQXRbZXRdLGh0W2V0XSxCdCxfdCkpcmV0dXJuITF9Zm9yKGV0PTA7ZXQ8b24ubGVuZ3RoO2V0Kyspe3ZhciBDdD1vbltldF07aWYo''@;'; put 'put ''IUNlKEF0W0N0XSxodFtDdF0sQnQsX3QpKXJldHVybiExfXJldHVybiEwfVUuZXhwb3J0cz17aXNEZWVwRXF1YWw6ZnVuY3Rpb24oQXQsaHQpe3JldHVybiBDZShBdCxodCwhMSl9LGlzRGVlcFN0cmljdEVxdWFsOmZ1bmN0aW9uKEF0LGh0KXtyZXR1cm4gQ2UoQXQsaHQsITApfX19LDgyMjQ6''@;'; put 'put ''VT0+eyJ1c2Ugc3RyaWN0IjtVLmV4cG9ydHM9ZnVuY3Rpb24oUSl7cmV0dXJuIFF9fSw5NjY5OihVLFEsaik9PntVLmV4cG9ydHM9aigxNjA5KX0sNTQ0ODooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDQ4NjcpLGFlPWooNjAyNiksWT1qKDQzNzIpLFc9aig1MzI3KSxOPWooNDA5''@;'; put 'put ''NyksdGU9aig0MTA5KSxLPWooNzk4NSksSj1qKDUwNjEpLHNlPWooNTY1NSksb2U9aig1MjYzKTtVLmV4cG9ydHM9ZnVuY3Rpb24oY2Upe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihkZSx2ZSl7dmFyIEFlLGtlPWNlLmRhdGEsU2U9Y2UuaGVhZGVycyxJZT1jZS5yZXNwb25zZVR5cGU7''@;'; put 'put ''ZnVuY3Rpb24gVGUoKXtjZS5jYW5jZWxUb2tlbiYmY2UuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUoQWUpLGNlLnNpZ25hbCYmY2Uuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixBZSl9cmUuaXNGb3JtRGF0YShrZSkmJmRlbGV0ZSBTZVsiQ29udGVudC1UeXBlIl07dmFyIE1l''@;'; put 'put ''PW5ldyBYTUxIdHRwUmVxdWVzdDtpZihjZS5hdXRoKXt2YXIgaGU9Y2UuYXV0aC51c2VybmFtZXx8IiIsTz1jZS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChjZS5hdXRoLnBhc3N3b3JkKSk6IiI7U2UuQXV0aG9yaXphdGlvbj0iQmFzaWMgIitidG9hKGhlKyI6''@;'; put 'put ''IitPKX12YXIgej1OKGNlLmJhc2VVUkwsY2UudXJsKTtmdW5jdGlvbiBlZSgpe2lmKE1lKXt2YXIgeD0iZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIE1lP3RlKE1lLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTpudWxsO2FlKGZ1bmN0aW9uKFYpe2RlKFYpLFRlKCl9LGZ1bmN0aW9uKFYpe3Zl''@;'; put 'put ''KFYpLFRlKCl9LHtkYXRhOkllJiYidGV4dCIhPT1JZSYmImpzb24iIT09SWU/TWUucmVzcG9uc2U6TWUucmVzcG9uc2VUZXh0LHN0YXR1czpNZS5zdGF0dXMsc3RhdHVzVGV4dDpNZS5zdGF0dXNUZXh0LGhlYWRlcnM6eCxjb25maWc6Y2UscmVxdWVzdDpNZX0pLE1lPW51bGx9fWlmKE1lLm9w''@;'; put 'put ''ZW4oY2UubWV0aG9kLnRvVXBwZXJDYXNlKCksVyh6LGNlLnBhcmFtcyxjZS5wYXJhbXNTZXJpYWxpemVyKSwhMCksTWUudGltZW91dD1jZS50aW1lb3V0LCJvbmxvYWRlbmQiaW4gTWU/TWUub25sb2FkZW5kPWVlOk1lLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe01lJiY0PT09TWUu''@;'; put 'put ''cmVhZHlTdGF0ZSYmKDAhPT1NZS5zdGF0dXN8fE1lLnJlc3BvbnNlVVJMJiYwPT09TWUucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKSkmJnNldFRpbWVvdXQoZWUpfSxNZS5vbmFib3J0PWZ1bmN0aW9uKCl7TWUmJih2ZShKKCJSZXF1ZXN0IGFib3J0ZWQiLGNlLCJFQ09OTkFCT1JURUQi''@;'; put 'put ''LE1lKSksTWU9bnVsbCl9LE1lLm9uZXJyb3I9ZnVuY3Rpb24oKXt2ZShKKCJOZXR3b3JrIEVycm9yIixjZSxudWxsLE1lKSksTWU9bnVsbH0sTWUub250aW1lb3V0PWZ1bmN0aW9uKCl7dmFyIHg9Y2UudGltZW91dD8idGltZW91dCBvZiAiK2NlLnRpbWVvdXQrIm1zIGV4Y2VlZGVkIjoidGlt''@;'; put 'put ''ZW91dCBleGNlZWRlZCI7Y2UudGltZW91dEVycm9yTWVzc2FnZSYmKHg9Y2UudGltZW91dEVycm9yTWVzc2FnZSksdmUoSih4LGNlLChjZS50cmFuc2l0aW9uYWx8fHNlLnRyYW5zaXRpb25hbCkuY2xhcmlmeVRpbWVvdXRFcnJvcj8iRVRJTUVET1VUIjoiRUNPTk5BQk9SVEVEIixNZSkpLE1l''@;'; put 'put ''PW51bGx9LHJlLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpe3ZhciBuZT0oY2Uud2l0aENyZWRlbnRpYWxzfHxLKHopKSYmY2UueHNyZkNvb2tpZU5hbWU/WS5yZWFkKGNlLnhzcmZDb29raWVOYW1lKTp2b2lkIDA7bmUmJihTZVtjZS54c3JmSGVhZGVyTmFtZV09bmUpfSJzZXRSZXF1ZXN0SGVh''@;'; put 'put ''ZGVyImluIE1lJiZyZS5mb3JFYWNoKFNlLGZ1bmN0aW9uKHgsUCl7dm9pZCAwPT09a2UmJiJjb250ZW50LXR5cGUiPT09UC50b0xvd2VyQ2FzZSgpP2RlbGV0ZSBTZVtQXTpNZS5zZXRSZXF1ZXN0SGVhZGVyKFAseCl9KSxyZS5pc1VuZGVmaW5lZChjZS53aXRoQ3JlZGVudGlhbHMpfHwoTWUu''@;'; put 'put ''d2l0aENyZWRlbnRpYWxzPSEhY2Uud2l0aENyZWRlbnRpYWxzKSxJZSYmImpzb24iIT09SWUmJihNZS5yZXNwb25zZVR5cGU9Y2UucmVzcG9uc2VUeXBlKSwiZnVuY3Rpb24iPT10eXBlb2YgY2Uub25Eb3dubG9hZFByb2dyZXNzJiZNZS5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsY2Uu''@;'; put 'put ''b25Eb3dubG9hZFByb2dyZXNzKSwiZnVuY3Rpb24iPT10eXBlb2YgY2Uub25VcGxvYWRQcm9ncmVzcyYmTWUudXBsb2FkJiZNZS51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGNlLm9uVXBsb2FkUHJvZ3Jlc3MpLChjZS5jYW5jZWxUb2tlbnx8Y2Uuc2lnbmFsKSYmKEFlPWZ1''@;'; put 'put ''bmN0aW9uKHgpe01lJiYodmUoIXh8fHgmJngudHlwZT9uZXcgb2UoImNhbmNlbGVkIik6eCksTWUuYWJvcnQoKSxNZT1udWxsKX0sY2UuY2FuY2VsVG9rZW4mJmNlLmNhbmNlbFRva2VuLnN1YnNjcmliZShBZSksY2Uuc2lnbmFsJiYoY2Uuc2lnbmFsLmFib3J0ZWQ/QWUoKTpjZS5zaWduYWwu''@;'; put 'put ''YWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLEFlKSkpLGtlfHwoa2U9bnVsbCksTWUuc2VuZChrZSl9KX19LDE2MDk6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig0ODY3KSxhZT1qKDE4NDkpLFk9aigzMjEpLFc9aig3MTg1KSxOPWZ1bmN0aW9uIHRlKEspe3ZhciBKPW5ldyBZKEsp''@;'; put 'put ''LHNlPWFlKFkucHJvdG90eXBlLnJlcXVlc3QsSik7cmV0dXJuIHJlLmV4dGVuZChzZSxZLnByb3RvdHlwZSxKKSxyZS5leHRlbmQoc2UsSiksc2UuY3JlYXRlPWZ1bmN0aW9uKG9lKXtyZXR1cm4gdGUoVyhLLG9lKSl9LHNlfShqKDU2NTUpKTtOLkF4aW9zPVksTi5DYW5jZWw9aig1MjYzKSxO''@;'; put 'put ''LkNhbmNlbFRva2VuPWooNDk3MiksTi5pc0NhbmNlbD1qKDY1MDIpLE4uVkVSU0lPTj1qKDcyODgpLnZlcnNpb24sTi5hbGw9ZnVuY3Rpb24odGUpe3JldHVybiBQcm9taXNlLmFsbCh0ZSl9LE4uc3ByZWFkPWooODcxMyksTi5pc0F4aW9zRXJyb3I9aig2MjY4KSxVLmV4cG9ydHM9TixVLmV4''@;'; put 'put ''cG9ydHMuZGVmYXVsdD1OfSw1MjYzOlU9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gUShqKXt0aGlzLm1lc3NhZ2U9an1RLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJDYW5jZWwiKyh0aGlzLm1lc3NhZ2U/IjogIit0aGlzLm1lc3NhZ2U6IiIpfSxRLnByb3RvdHlwZS5f''@;'; put 'put ''X0NBTkNFTF9fPSEwLFUuZXhwb3J0cz1RfSw0OTcyOihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNTI2Myk7ZnVuY3Rpb24gYWUoWSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFkpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO3ZhciBX''@;'; put 'put ''O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbih0ZSl7Vz10ZX0pO3ZhciBOPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4oZnVuY3Rpb24odGUpe2lmKE4uX2xpc3RlbmVycyl7dmFyIEssSj1OLl9saXN0ZW5lcnMubGVuZ3RoO2ZvcihLPTA7SzxKO0srKylOLl9saXN0ZW5lcnNbS10o''@;'; put 'put ''dGUpO04uX2xpc3RlbmVycz1udWxsfX0pLHRoaXMucHJvbWlzZS50aGVuPWZ1bmN0aW9uKHRlKXt2YXIgSyxKPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHNlKXtOLnN1YnNjcmliZShzZSksSz1zZX0pLnRoZW4odGUpO3JldHVybiBKLmNhbmNlbD1mdW5jdGlvbigpe04udW5zdWJzY3JpYmUoSyl9''@;'; put 'put ''LEp9LFkoZnVuY3Rpb24odGUpe04ucmVhc29ufHwoTi5yZWFzb249bmV3IHJlKHRlKSxXKE4ucmVhc29uKSl9KX1hZS5wcm90b3R5cGUudGhyb3dJZlJlcXVlc3RlZD1mdW5jdGlvbigpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufSxhZS5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1''@;'; put 'put ''bmN0aW9uKFkpe3RoaXMucmVhc29uP1kodGhpcy5yZWFzb24pOnRoaXMuX2xpc3RlbmVycz90aGlzLl9saXN0ZW5lcnMucHVzaChZKTp0aGlzLl9saXN0ZW5lcnM9W1ldfSxhZS5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oWSl7aWYodGhpcy5fbGlzdGVuZXJzKXt2YXIgVz10aGlz''@;'; put 'put ''Ll9saXN0ZW5lcnMuaW5kZXhPZihZKTstMSE9PVcmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UoVywxKX19LGFlLnNvdXJjZT1mdW5jdGlvbigpe3ZhciBZO3JldHVybnt0b2tlbjpuZXcgYWUoZnVuY3Rpb24oVyl7WT1XfSksY2FuY2VsOll9fSxVLmV4cG9ydHM9YWV9LDY1MDI6VT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0IjtVLmV4cG9ydHM9ZnVuY3Rpb24oUSl7cmV0dXJuISghUXx8IVEuX19DQU5DRUxfXyl9fSwzMjE6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig0ODY3KSxhZT1qKDUzMjcpLFk9aig3ODIpLFc9aigzNTcyKSxOPWooNzE4NSksdGU9aig0ODc1KSxLPXRlLnZhbGlkYXRv''@;'; put 'put ''cnM7ZnVuY3Rpb24gSihzZSl7dGhpcy5kZWZhdWx0cz1zZSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcgWSxyZXNwb25zZTpuZXcgWX19Si5wcm90b3R5cGUucmVxdWVzdD1mdW5jdGlvbihzZSxvZSl7InN0cmluZyI9PXR5cGVvZiBzZT8ob2U9b2V8fHt9KS51cmw9c2U6b2U9c2V8''@;'; put 'put ''fHt9LG9lLm1ldGhvZD0ob2U9Tih0aGlzLmRlZmF1bHRzLG9lKSkubWV0aG9kP29lLm1ldGhvZC50b0xvd2VyQ2FzZSgpOnRoaXMuZGVmYXVsdHMubWV0aG9kP3RoaXMuZGVmYXVsdHMubWV0aG9kLnRvTG93ZXJDYXNlKCk6ImdldCI7dmFyIGNlPW9lLnRyYW5zaXRpb25hbDt2b2lkIDAhPT1j''@;'; put 'put ''ZSYmdGUuYXNzZXJ0T3B0aW9ucyhjZSx7c2lsZW50SlNPTlBhcnNpbmc6Sy50cmFuc2l0aW9uYWwoSy5ib29sZWFuKSxmb3JjZWRKU09OUGFyc2luZzpLLnRyYW5zaXRpb25hbChLLmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6Sy50cmFuc2l0aW9uYWwoSy5ib29sZWFuKX0sITEpO3Zh''@;'; put 'put ''ciBkZT1bXSx2ZT0hMDt0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goZnVuY3Rpb24oaGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBoZS5ydW5XaGVuJiYhMT09PWhlLnJ1bldoZW4ob2UpfHwodmU9dmUmJmhlLnN5bmNocm9ub3VzLGRlLnVuc2hpZnQoaGUuZnVsZmlsbGVkLGhlLnJl''@;'; put 'put ''amVjdGVkKSl9KTt2YXIgQWUsa2U9W107aWYodGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihoZSl7a2UucHVzaChoZS5mdWxmaWxsZWQsaGUucmVqZWN0ZWQpfSksIXZlKXt2YXIgU2U9W1csdm9pZCAwXTtmb3IoQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBw''@;'; put 'put ''bHkoU2UsZGUpLFNlPVNlLmNvbmNhdChrZSksQWU9UHJvbWlzZS5yZXNvbHZlKG9lKTtTZS5sZW5ndGg7KUFlPUFlLnRoZW4oU2Uuc2hpZnQoKSxTZS5zaGlmdCgpKTtyZXR1cm4gQWV9Zm9yKHZhciBJZT1vZTtkZS5sZW5ndGg7KXt2YXIgVGU9ZGUuc2hpZnQoKSxNZT1kZS5zaGlmdCgpO3Ry''@;'; put 'put ''eXtJZT1UZShJZSl9Y2F0Y2goaGUpe01lKGhlKTticmVha319dHJ5e0FlPVcoSWUpfWNhdGNoKGhlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoaGUpfWZvcig7a2UubGVuZ3RoOylBZT1BZS50aGVuKGtlLnNoaWZ0KCksa2Uuc2hpZnQoKSk7cmV0dXJuIEFlfSxKLnByb3RvdHlwZS5nZXRVcmk9''@;'; put 'put ''ZnVuY3Rpb24oc2Upe3JldHVybiBzZT1OKHRoaXMuZGVmYXVsdHMsc2UpLGFlKHNlLnVybCxzZS5wYXJhbXMsc2UucGFyYW1zU2VyaWFsaXplcikucmVwbGFjZSgvXlw/LywiIil9LHJlLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLGZ1bmN0aW9uKHNlKXtKLnBy''@;'; put 'put ''b3RvdHlwZVtzZV09ZnVuY3Rpb24ob2UsY2Upe3JldHVybiB0aGlzLnJlcXVlc3QoTihjZXx8e30se21ldGhvZDpzZSx1cmw6b2UsZGF0YTooY2V8fHt9KS5kYXRhfSkpfX0pLHJlLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSxmdW5jdGlvbihzZSl7Si5wcm90b3R5cGVbc2VdPWZ1''@;'; put 'put ''bmN0aW9uKG9lLGNlLGRlKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KE4oZGV8fHt9LHttZXRob2Q6c2UsdXJsOm9lLGRhdGE6Y2V9KSl9fSksVS5leHBvcnRzPUp9LDc4MjooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDQ4NjcpO2Z1bmN0aW9uIGFlKCl7dGhpcy5oYW5kbGVycz1bXX1h''@;'; put 'put ''ZS5wcm90b3R5cGUudXNlPWZ1bmN0aW9uKFksVyxOKXtyZXR1cm4gdGhpcy5oYW5kbGVycy5wdXNoKHtmdWxmaWxsZWQ6WSxyZWplY3RlZDpXLHN5bmNocm9ub3VzOiEhTiYmTi5zeW5jaHJvbm91cyxydW5XaGVuOk4/Ti5ydW5XaGVuOm51bGx9KSx0aGlzLmhhbmRsZXJzLmxlbmd0aC0xfSxh''@;'; put 'put ''ZS5wcm90b3R5cGUuZWplY3Q9ZnVuY3Rpb24oWSl7dGhpcy5oYW5kbGVyc1tZXSYmKHRoaXMuaGFuZGxlcnNbWV09bnVsbCl9LGFlLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKFkpe3JlLmZvckVhY2godGhpcy5oYW5kbGVycyxmdW5jdGlvbihXKXtudWxsIT09VyYmWShXKX0pfSxVLmV4''@;'; put 'put ''cG9ydHM9YWV9LDQwOTc6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aigxNzkzKSxhZT1qKDczMDMpO1UuZXhwb3J0cz1mdW5jdGlvbihZLFcpe3JldHVybiBZJiYhcmUoVyk/YWUoWSxXKTpXfX0sNTA2MTooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDg5NjUpO1UuZXhw''@;'; put 'put ''b3J0cz1mdW5jdGlvbihhZSxZLFcsTix0ZSl7dmFyIEs9bmV3IEVycm9yKGFlKTtyZXR1cm4gcmUoSyxZLFcsTix0ZSl9fSwzNTcyOihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNDg2NyksYWU9aig4NTI3KSxZPWooNjUwMiksVz1qKDU2NTUpLE49aig1MjYzKTtmdW5jdGlvbiB0''@;'; put 'put ''ZShLKXtpZihLLmNhbmNlbFRva2VuJiZLLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxLLnNpZ25hbCYmSy5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgTigiY2FuY2VsZWQiKX1VLmV4cG9ydHM9ZnVuY3Rpb24oSyl7cmV0dXJuIHRlKEspLEsuaGVhZGVycz1LLmhlYWRlcnN8fHt9''@;'; put 'put ''LEsuZGF0YT1hZS5jYWxsKEssSy5kYXRhLEsuaGVhZGVycyxLLnRyYW5zZm9ybVJlcXVlc3QpLEsuaGVhZGVycz1yZS5tZXJnZShLLmhlYWRlcnMuY29tbW9ufHx7fSxLLmhlYWRlcnNbSy5tZXRob2RdfHx7fSxLLmhlYWRlcnMpLHJlLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwi''@;'; put 'put ''cG9zdCIsInB1dCIsInBhdGNoIiwiY29tbW9uIl0sZnVuY3Rpb24oSil7ZGVsZXRlIEsuaGVhZGVyc1tKXX0pLChLLmFkYXB0ZXJ8fFcuYWRhcHRlcikoSykudGhlbihmdW5jdGlvbihKKXtyZXR1cm4gdGUoSyksSi5kYXRhPWFlLmNhbGwoSyxKLmRhdGEsSi5oZWFkZXJzLEsudHJhbnNmb3Jt''@;'; put 'put ''UmVzcG9uc2UpLEp9LGZ1bmN0aW9uKEope3JldHVybiBZKEopfHwodGUoSyksSiYmSi5yZXNwb25zZSYmKEoucmVzcG9uc2UuZGF0YT1hZS5jYWxsKEssSi5yZXNwb25zZS5kYXRhLEoucmVzcG9uc2UuaGVhZGVycyxLLnRyYW5zZm9ybVJlc3BvbnNlKSkpLFByb21pc2UucmVqZWN0KEopfSl9''@;'; put 'put ''fSw4OTY1OlU9PnsidXNlIHN0cmljdCI7VS5leHBvcnRzPWZ1bmN0aW9uKFEsaixyZSxhZSxZKXtyZXR1cm4gUS5jb25maWc9aixyZSYmKFEuY29kZT1yZSksUS5yZXF1ZXN0PWFlLFEucmVzcG9uc2U9WSxRLmlzQXhpb3NFcnJvcj0hMCxRLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnttZXNz''@;'; put 'put ''YWdlOnRoaXMubWVzc2FnZSxuYW1lOnRoaXMubmFtZSxkZXNjcmlwdGlvbjp0aGlzLmRlc2NyaXB0aW9uLG51bWJlcjp0aGlzLm51bWJlcixmaWxlTmFtZTp0aGlzLmZpbGVOYW1lLGxpbmVOdW1iZXI6dGhpcy5saW5lTnVtYmVyLGNvbHVtbk51bWJlcjp0aGlzLmNvbHVtbk51bWJlcixzdGFj''@;'; put 'put ''azp0aGlzLnN0YWNrLGNvbmZpZzp0aGlzLmNvbmZpZyxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5yZXNwb25zZSYmdGhpcy5yZXNwb25zZS5zdGF0dXM/dGhpcy5yZXNwb25zZS5zdGF0dXM6bnVsbH19LFF9fSw3MTg1OihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNDg2Nyk7''@;'; put 'put ''VS5leHBvcnRzPWZ1bmN0aW9uKGFlLFkpe1k9WXx8e307dmFyIFc9e307ZnVuY3Rpb24gTihjZSxkZSl7cmV0dXJuIHJlLmlzUGxhaW5PYmplY3QoY2UpJiZyZS5pc1BsYWluT2JqZWN0KGRlKT9yZS5tZXJnZShjZSxkZSk6cmUuaXNQbGFpbk9iamVjdChkZSk/cmUubWVyZ2Uoe30sZGUpOnJl''@;'; put 'put ''LmlzQXJyYXkoZGUpP2RlLnNsaWNlKCk6ZGV9ZnVuY3Rpb24gdGUoY2Upe3JldHVybiByZS5pc1VuZGVmaW5lZChZW2NlXSk/cmUuaXNVbmRlZmluZWQoYWVbY2VdKT92b2lkIDA6Tih2b2lkIDAsYWVbY2VdKTpOKGFlW2NlXSxZW2NlXSl9ZnVuY3Rpb24gSyhjZSl7aWYoIXJlLmlzVW5kZWZp''@;'; put 'put ''bmVkKFlbY2VdKSlyZXR1cm4gTih2b2lkIDAsWVtjZV0pfWZ1bmN0aW9uIEooY2Upe3JldHVybiByZS5pc1VuZGVmaW5lZChZW2NlXSk/cmUuaXNVbmRlZmluZWQoYWVbY2VdKT92b2lkIDA6Tih2b2lkIDAsYWVbY2VdKTpOKHZvaWQgMCxZW2NlXSl9ZnVuY3Rpb24gc2UoY2Upe3JldHVybiBj''@;'; put 'put ''ZSBpbiBZP04oYWVbY2VdLFlbY2VdKTpjZSBpbiBhZT9OKHZvaWQgMCxhZVtjZV0pOnZvaWQgMH12YXIgb2U9e3VybDpLLG1ldGhvZDpLLGRhdGE6SyxiYXNlVVJMOkosdHJhbnNmb3JtUmVxdWVzdDpKLHRyYW5zZm9ybVJlc3BvbnNlOkoscGFyYW1zU2VyaWFsaXplcjpKLHRpbWVvdXQ6Six0''@;'; put 'put ''aW1lb3V0TWVzc2FnZTpKLHdpdGhDcmVkZW50aWFsczpKLGFkYXB0ZXI6SixyZXNwb25zZVR5cGU6Six4c3JmQ29va2llTmFtZTpKLHhzcmZIZWFkZXJOYW1lOkosb25VcGxvYWRQcm9ncmVzczpKLG9uRG93bmxvYWRQcm9ncmVzczpKLGRlY29tcHJlc3M6SixtYXhDb250ZW50TGVuZ3RoOkos''@;'; put 'put ''bWF4Qm9keUxlbmd0aDpKLHRyYW5zcG9ydDpKLGh0dHBBZ2VudDpKLGh0dHBzQWdlbnQ6SixjYW5jZWxUb2tlbjpKLHNvY2tldFBhdGg6SixyZXNwb25zZUVuY29kaW5nOkosdmFsaWRhdGVTdGF0dXM6c2V9O3JldHVybiByZS5mb3JFYWNoKE9iamVjdC5rZXlzKGFlKS5jb25jYXQoT2JqZWN0''@;'; put 'put ''LmtleXMoWSkpLGZ1bmN0aW9uKGNlKXt2YXIgZGU9b2VbY2VdfHx0ZSx2ZT1kZShjZSk7cmUuaXNVbmRlZmluZWQodmUpJiZkZSE9PXNlfHwoV1tjZV09dmUpfSksV319LDYwMjY6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig1MDYxKTtVLmV4cG9ydHM9ZnVuY3Rpb24oYWUsWSxX''@;'; put 'put ''KXt2YXIgTj1XLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztXLnN0YXR1cyYmTiYmIU4oVy5zdGF0dXMpP1kocmUoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIitXLnN0YXR1cyxXLmNvbmZpZyxudWxsLFcucmVxdWVzdCxXKSk6YWUoVyl9fSw4NTI3OihVLFEsaik9PnsidXNlIHN0''@;'; put 'put ''cmljdCI7dmFyIHJlPWooNDg2NyksYWU9aig1NjU1KTtVLmV4cG9ydHM9ZnVuY3Rpb24oWSxXLE4pe3ZhciB0ZT10aGlzfHxhZTtyZXR1cm4gcmUuZm9yRWFjaChOLGZ1bmN0aW9uKEspe1k9Sy5jYWxsKHRlLFksVyl9KSxZfX0sNTY1NTooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1q''@;'; put 'put ''KDQxNTUpLGFlPWooNDg2NyksWT1qKDYwMTYpLFc9aig4OTY1KSxOPXsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn07ZnVuY3Rpb24gdGUoc2Usb2UpeyFhZS5pc1VuZGVmaW5lZChzZSkmJmFlLmlzVW5kZWZpbmVkKHNlWyJDb250ZW50LVR5cGUi''@;'; put 'put ''XSkmJihzZVsiQ29udGVudC1UeXBlIl09b2UpfXZhciBLLEo9e3RyYW5zaXRpb25hbDp7c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX0sYWRhcHRlcjooKCJ1bmRlZmluZWQiIT10eXBlb2YgWE1MSHR0cFJlcXVlc3R8fHZv''@;'; put 'put ''aWQgMCE9PXJlJiYiW29iamVjdCBwcm9jZXNzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocmUpKSYmKEs9aig1NDQ4KSksSyksdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oc2Usb2Upe3JldHVybiBZKG9lLCJBY2NlcHQiKSxZKG9lLCJDb250ZW50LVR5cGUiKSxhZS5p''@;'; put 'put ''c0Zvcm1EYXRhKHNlKXx8YWUuaXNBcnJheUJ1ZmZlcihzZSl8fGFlLmlzQnVmZmVyKHNlKXx8YWUuaXNTdHJlYW0oc2UpfHxhZS5pc0ZpbGUoc2UpfHxhZS5pc0Jsb2Ioc2UpP3NlOmFlLmlzQXJyYXlCdWZmZXJWaWV3KHNlKT9zZS5idWZmZXI6YWUuaXNVUkxTZWFyY2hQYXJhbXMoc2UpPyh0''@;'; put 'put ''ZShvZSwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiKSxzZS50b1N0cmluZygpKTphZS5pc09iamVjdChzZSl8fG9lJiYiYXBwbGljYXRpb24vanNvbiI9PT1vZVsiQ29udGVudC1UeXBlIl0/KHRlKG9lLCJhcHBsaWNhdGlvbi9qc29uIiksZnVuY3Rp''@;'; put 'put ''b24oY2UsZGUsdmUpe2lmKGFlLmlzU3RyaW5nKGNlKSl0cnl7cmV0dXJuKDAsSlNPTi5wYXJzZSkoY2UpLGFlLnRyaW0oY2UpfWNhdGNoKEFlKXtpZigiU3ludGF4RXJyb3IiIT09QWUubmFtZSl0aHJvdyBBZX1yZXR1cm4oMCxKU09OLnN0cmluZ2lmeSkoY2UpfShzZSkpOnNlfV0sdHJhbnNm''@;'; put 'put ''b3JtUmVzcG9uc2U6W2Z1bmN0aW9uKHNlKXt2YXIgb2U9dGhpcy50cmFuc2l0aW9uYWx8fEoudHJhbnNpdGlvbmFsLHZlPSEob2UmJm9lLnNpbGVudEpTT05QYXJzaW5nKSYmImpzb24iPT09dGhpcy5yZXNwb25zZVR5cGU7aWYodmV8fG9lJiZvZS5mb3JjZWRKU09OUGFyc2luZyYmYWUuaXNT''@;'; put 'put ''dHJpbmcoc2UpJiZzZS5sZW5ndGgpdHJ5e3JldHVybiBKU09OLnBhcnNlKHNlKX1jYXRjaChBZSl7aWYodmUpdGhyb3ciU3ludGF4RXJyb3IiPT09QWUubmFtZT9XKEFlLHRoaXMsIkVfSlNPTl9QQVJTRSIpOkFlfXJldHVybiBzZX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1U''@;'; put 'put ''T0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKHNlKXtyZXR1cm4gc2U+PTIwMCYmc2U8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNv''@;'; put 'put ''biwgdGV4dC9wbGFpbiwgKi8qIn19fTthZS5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCJdLGZ1bmN0aW9uKHNlKXtKLmhlYWRlcnNbc2VdPXt9fSksYWUuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLGZ1bmN0aW9uKHNlKXtKLmhlYWRlcnNbc2VdPWFlLm1lcmdlKE4pfSks''@;'; put 'put ''VS5leHBvcnRzPUp9LDcyODg6VT0+e1UuZXhwb3J0cz17dmVyc2lvbjoiMC4yNi4wIn19LDE4NDk6VT0+eyJ1c2Ugc3RyaWN0IjtVLmV4cG9ydHM9ZnVuY3Rpb24oUSxqKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHJlPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxhZT0wO2FlPHJl''@;'; put 'put ''Lmxlbmd0aDthZSsrKXJlW2FlXT1hcmd1bWVudHNbYWVdO3JldHVybiBRLmFwcGx5KGoscmUpfX19LDUzMjc6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig0ODY3KTtmdW5jdGlvbiBhZShZKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFkpLnJlcGxhY2UoLyUzQS9naSwiOiIp''@;'; put 'put ''LnJlcGxhY2UoLyUyNC9nLCIkIikucmVwbGFjZSgvJTJDL2dpLCIsIikucmVwbGFjZSgvJTIwL2csIisiKS5yZXBsYWNlKC8lNUIvZ2ksIlsiKS5yZXBsYWNlKC8lNUQvZ2ksIl0iKX1VLmV4cG9ydHM9ZnVuY3Rpb24oWSxXLE4pe2lmKCFXKXJldHVybiBZO3ZhciB0ZTtpZihOKXRlPU4oVyk7''@;'; put 'put ''ZWxzZSBpZihyZS5pc1VSTFNlYXJjaFBhcmFtcyhXKSl0ZT1XLnRvU3RyaW5nKCk7ZWxzZXt2YXIgSz1bXTtyZS5mb3JFYWNoKFcsZnVuY3Rpb24oc2Usb2Upe251bGwhPXNlJiYocmUuaXNBcnJheShzZSk/b2UrPSJbXSI6c2U9W3NlXSxyZS5mb3JFYWNoKHNlLGZ1bmN0aW9uKGNlKXtyZS5p''@;'; put 'put ''c0RhdGUoY2UpP2NlPWNlLnRvSVNPU3RyaW5nKCk6cmUuaXNPYmplY3QoY2UpJiYoY2U9SlNPTi5zdHJpbmdpZnkoY2UpKSxLLnB1c2goYWUob2UpKyI9IithZShjZSkpfSkpfSksdGU9Sy5qb2luKCImIil9aWYodGUpe3ZhciBKPVkuaW5kZXhPZigiIyIpOy0xIT09SiYmKFk9WS5zbGljZSgw''@;'; put 'put ''LEopKSxZKz0oLTE9PT1ZLmluZGV4T2YoIj8iKT8iPyI6IiYiKSt0ZX1yZXR1cm4gWX19LDczMDM6VT0+eyJ1c2Ugc3RyaWN0IjtVLmV4cG9ydHM9ZnVuY3Rpb24oUSxqKXtyZXR1cm4gaj9RLnJlcGxhY2UoL1wvKyQvLCIiKSsiLyIrai5yZXBsYWNlKC9eXC8rLywiIik6UX19LDQzNzI6KFUs''@;'; put 'put ''USxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig0ODY3KTtVLmV4cG9ydHM9cmUuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT97d3JpdGU6ZnVuY3Rpb24oYWUsWSxXLE4sdGUsSyl7dmFyIEo9W107Si5wdXNoKGFlKyI9IitlbmNvZGVVUklDb21wb25lbnQoWSkpLHJlLmlzTnVtYmVyKFcpJiZK''@;'; put 'put ''LnB1c2goImV4cGlyZXM9IituZXcgRGF0ZShXKS50b0dNVFN0cmluZygpKSxyZS5pc1N0cmluZyhOKSYmSi5wdXNoKCJwYXRoPSIrTikscmUuaXNTdHJpbmcodGUpJiZKLnB1c2goImRvbWFpbj0iK3RlKSwhMD09PUsmJkoucHVzaCgic2VjdXJlIiksZG9jdW1lbnQuY29va2llPUouam9pbigi''@;'; put 'put ''OyAiKX0scmVhZDpmdW5jdGlvbihhZSl7dmFyIFk9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXHMqKSgiK2FlKyIpPShbXjtdKikiKSk7cmV0dXJuIFk/ZGVjb2RlVVJJQ29tcG9uZW50KFlbM10pOm51bGx9LHJlbW92ZTpmdW5jdGlvbihhZSl7dGhpcy53cml0ZShh''@;'; put 'put ''ZSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZTpmdW5jdGlvbigpe30scmVhZDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxyZW1vdmU6ZnVuY3Rpb24oKXt9fX0sMTc5MzpVPT57InVzZSBzdHJpY3QiO1UuZXhwb3J0cz1mdW5jdGlvbihRKXtyZXR1cm4vXihbYS16XVthLXpcZCtcLS5d''@;'; put 'put ''KjopP1wvXC8vaS50ZXN0KFEpfX0sNjI2ODooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDQ4NjcpO1UuZXhwb3J0cz1mdW5jdGlvbihhZSl7cmV0dXJuIHJlLmlzT2JqZWN0KGFlKSYmITA9PT1hZS5pc0F4aW9zRXJyb3J9fSw3OTg1OihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFy''@;'; put 'put ''IHJlPWooNDg2Nyk7VS5leHBvcnRzPXJlLmlzU3RhbmRhcmRCcm93c2VyRW52KCk/ZnVuY3Rpb24oKXt2YXIgYWUsWT0vKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLFc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2Z1bmN0aW9uIE4odGUpe3ZhciBLPXRl''@;'; put 'put ''O3JldHVybiBZJiYoVy5zZXRBdHRyaWJ1dGUoImhyZWYiLEspLEs9Vy5ocmVmKSxXLnNldEF0dHJpYnV0ZSgiaHJlZiIsSykse2hyZWY6Vy5ocmVmLHByb3RvY29sOlcucHJvdG9jb2w/Vy5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6Vy5ob3N0LHNlYXJjaDpXLnNlYXJjaD9X''@;'; put 'put ''LnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKToiIixoYXNoOlcuaGFzaD9XLmhhc2gucmVwbGFjZSgvXiMvLCIiKToiIixob3N0bmFtZTpXLmhvc3RuYW1lLHBvcnQ6Vy5wb3J0LHBhdGhuYW1lOiIvIj09PVcucGF0aG5hbWUuY2hhckF0KDApP1cucGF0aG5hbWU6Ii8iK1cucGF0aG5hbWV9fXJl''@;'; put 'put ''dHVybiBhZT1OKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxmdW5jdGlvbih0ZSl7dmFyIEs9cmUuaXNTdHJpbmcodGUpP04odGUpOnRlO3JldHVybiBLLnByb3RvY29sPT09YWUucHJvdG9jb2wmJksuaG9zdD09PWFlLmhvc3R9fSgpOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSw2MDE2OihVLFEsaik9''@;'; put 'put ''PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNDg2Nyk7VS5leHBvcnRzPWZ1bmN0aW9uKGFlLFkpe3JlLmZvckVhY2goYWUsZnVuY3Rpb24oVyxOKXtOIT09WSYmTi50b1VwcGVyQ2FzZSgpPT09WS50b1VwcGVyQ2FzZSgpJiYoYWVbWV09VyxkZWxldGUgYWVbTl0pfSl9fSw0MTA5OihVLFEsaik9''@;'; put 'put ''PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNDg2NyksYWU9WyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFz''@;'; put 'put ''dC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXTtVLmV4cG9ydHM9ZnVuY3Rpb24oWSl7dmFyIFcsTix0ZSxLPXt9O3JldHVybiBZJiZyZS5mb3JFYWNoKFkuc3BsaXQo''@;'; put 'put ''IlxuIiksZnVuY3Rpb24oSil7aWYodGU9Si5pbmRleE9mKCI6IiksVz1yZS50cmltKEouc3Vic3RyKDAsdGUpKS50b0xvd2VyQ2FzZSgpLE49cmUudHJpbShKLnN1YnN0cih0ZSsxKSksVyl7aWYoS1tXXSYmYWUuaW5kZXhPZihXKT49MClyZXR1cm47S1tXXT0ic2V0LWNvb2tpZSI9PT1XPyhL''@;'; put 'put ''W1ddP0tbV106W10pLmNvbmNhdChbTl0pOktbV10/S1tXXSsiLCAiK046Tn19KSxLfX0sODcxMzpVPT57InVzZSBzdHJpY3QiO1UuZXhwb3J0cz1mdW5jdGlvbihRKXtyZXR1cm4gZnVuY3Rpb24oail7cmV0dXJuIFEuYXBwbHkobnVsbCxqKX19fSw0ODc1OihVLFEsaik9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7dmFyIHJlPWooNTEwOCksYWU9aig3Mjg4KS52ZXJzaW9uLFk9e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKGZ1bmN0aW9uKE4sdGUpe1lbTl09ZnVuY3Rpb24oSyl7cmV0dXJuIHR5cGVvZiBLPT09Tnx8ImEi''@;'; put 'put ''Kyh0ZTwxPyJuICI6IiAiKStOfX0pO3ZhciBXPXt9O1kudHJhbnNpdGlvbmFsPWZ1bmN0aW9uKE4sdGUsSyl7ZnVuY3Rpb24gSihzZSxvZSl7cmV0dXJuIltBeGlvcyB2IithZSsiXSBUcmFuc2l0aW9uYWwgb3B0aW9uICciK3NlKyInIitvZSsoSz8iLiAiK0s6IiIpfXJldHVybiBmdW5jdGlv''@;'; put 'put ''bihzZSxvZSxjZSl7aWYoITE9PT1OKXRocm93IG5ldyBFcnJvcihKKG9lLCIgaGFzIGJlZW4gcmVtb3ZlZCIrKHRlPyIgaW4gIit0ZToiIikpKTtyZXR1cm4gdGUmJiFXW29lXSYmKFdbb2VdPSEwLHJlLndhcm4oSihvZSwiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdiIrdGUrIiBhbmQg''@;'; put 'put ''d2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSIpKSksIU58fE4oc2Usb2UsY2UpfX0sVS5leHBvcnRzPXthc3NlcnRPcHRpb25zOmZ1bmN0aW9uKE4sdGUsSyl7aWYoIm9iamVjdCIhPXR5cGVvZiBOKXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmpl''@;'; put 'put ''Y3QiKTtmb3IodmFyIEo9T2JqZWN0LmtleXMoTiksc2U9Si5sZW5ndGg7c2UtLSA+MDspe3ZhciBvZT1KW3NlXSxjZT10ZVtvZV07aWYoY2Upe3ZhciBkZT1OW29lXSx2ZT12b2lkIDA9PT1kZXx8Y2UoZGUsb2UsTik7aWYoITAhPT12ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gIitv''@;'; put 'put ''ZSsiIG11c3QgYmUgIit2ZSl9ZWxzZSBpZighMCE9PUspdGhyb3cgRXJyb3IoIlVua25vd24gb3B0aW9uICIrb2UpfX0sdmFsaWRhdG9yczpZfX0sNDg2NzooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDE4NDkpLGFlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24g''@;'; put 'put ''WShvZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkob2UpfWZ1bmN0aW9uIFcob2Upe3JldHVybiB2b2lkIDA9PT1vZX1mdW5jdGlvbiBOKG9lKXtyZXR1cm4iW29iamVjdCBBcnJheUJ1ZmZlcl0iPT09YWUuY2FsbChvZSl9ZnVuY3Rpb24gdGUob2Upe3JldHVybiBudWxsIT09b2UmJiJvYmplY3Qi''@;'; put 'put ''PT10eXBlb2Ygb2V9ZnVuY3Rpb24gSyhvZSl7aWYoIltvYmplY3QgT2JqZWN0XSIhPT1hZS5jYWxsKG9lKSlyZXR1cm4hMTt2YXIgY2U9T2JqZWN0LmdldFByb3RvdHlwZU9mKG9lKTtyZXR1cm4gbnVsbD09PWNlfHxjZT09PU9iamVjdC5wcm90b3R5cGV9ZnVuY3Rpb24gSihvZSl7cmV0dXJu''@;'; put 'put ''IltvYmplY3QgRnVuY3Rpb25dIj09PWFlLmNhbGwob2UpfWZ1bmN0aW9uIHNlKG9lLGNlKXtpZihudWxsIT1vZSlpZigib2JqZWN0IiE9dHlwZW9mIG9lJiYob2U9W29lXSksWShvZSkpZm9yKHZhciBkZT0wLHZlPW9lLmxlbmd0aDtkZTx2ZTtkZSsrKWNlLmNhbGwobnVsbCxvZVtkZV0sZGUs''@;'; put 'put ''b2UpO2Vsc2UgZm9yKHZhciBBZSBpbiBvZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2UsQWUpJiZjZS5jYWxsKG51bGwsb2VbQWVdLEFlLG9lKX1VLmV4cG9ydHM9e2lzQXJyYXk6WSxpc0FycmF5QnVmZmVyOk4saXNCdWZmZXI6ZnVuY3Rpb24ob2Upe3JldHVybiBu''@;'; put 'put ''dWxsIT09b2UmJiFXKG9lKSYmbnVsbCE9PW9lLmNvbnN0cnVjdG9yJiYhVyhvZS5jb25zdHJ1Y3RvcikmJiJmdW5jdGlvbiI9PXR5cGVvZiBvZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmb2UuY29uc3RydWN0b3IuaXNCdWZmZXIob2UpfSxpc0Zvcm1EYXRhOmZ1bmN0aW9uKG9lKXtyZXR1cm4i''@;'; put 'put ''W29iamVjdCBGb3JtRGF0YV0iPT09YWUuY2FsbChvZSl9LGlzQXJyYXlCdWZmZXJWaWV3OmZ1bmN0aW9uKG9lKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZBcnJheUJ1ZmZlci5pc1ZpZXc/QXJyYXlCdWZmZXIuaXNWaWV3KG9lKTpvZSYmb2UuYnVmZmVyJiZOKG9l''@;'; put 'put ''LmJ1ZmZlcil9LGlzU3RyaW5nOmZ1bmN0aW9uKG9lKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG9lfSxpc051bWJlcjpmdW5jdGlvbihvZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBvZX0saXNPYmplY3Q6dGUsaXNQbGFpbk9iamVjdDpLLGlzVW5kZWZpbmVkOlcsaXNEYXRlOmZ1bmN0aW9u''@;'; put 'put ''KG9lKXtyZXR1cm4iW29iamVjdCBEYXRlXSI9PT1hZS5jYWxsKG9lKX0saXNGaWxlOmZ1bmN0aW9uKG9lKXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1hZS5jYWxsKG9lKX0saXNCbG9iOmZ1bmN0aW9uKG9lKXtyZXR1cm4iW29iamVjdCBCbG9iXSI9PT1hZS5jYWxsKG9lKX0saXNGdW5jdGlv''@;'; put 'put ''bjpKLGlzU3RyZWFtOmZ1bmN0aW9uKG9lKXtyZXR1cm4gdGUob2UpJiZKKG9lLnBpcGUpfSxpc1VSTFNlYXJjaFBhcmFtczpmdW5jdGlvbihvZSl7cmV0dXJuIltvYmplY3QgVVJMU2VhcmNoUGFyYW1zXSI9PT1hZS5jYWxsKG9lKX0saXNTdGFuZGFyZEJyb3dzZXJFbnY6ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4oInVuZGVmaW5lZCI9PXR5cGVvZiBuYXZpZ2F0b3J8fCJSZWFjdE5hdGl2ZSIhPT1uYXZpZ2F0b3IucHJvZHVjdCYmIk5hdGl2ZVNjcmlwdCIhPT1uYXZpZ2F0b3IucHJvZHVjdCYmIk5TIiE9PW5hdmlnYXRvci5wcm9kdWN0KSYmInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1''@;'; put 'put ''bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnR9LGZvckVhY2g6c2UsbWVyZ2U6ZnVuY3Rpb24gb2UoKXt2YXIgY2U9e307ZnVuY3Rpb24gZGUoa2UsU2Upe2NlW1NlXT1LKGNlW1NlXSkmJksoa2UpP29lKGNlW1NlXSxrZSk6SyhrZSk/b2Uoe30sa2UpOlkoa2UpP2tlLnNsaWNlKCk6a2V9Zm9y''@;'; put 'put ''KHZhciB2ZT0wLEFlPWFyZ3VtZW50cy5sZW5ndGg7dmU8QWU7dmUrKylzZShhcmd1bWVudHNbdmVdLGRlKTtyZXR1cm4gY2V9LGV4dGVuZDpmdW5jdGlvbihvZSxjZSxkZSl7cmV0dXJuIHNlKGNlLGZ1bmN0aW9uKHZlLEFlKXtvZVtBZV09ZGUmJiJmdW5jdGlvbiI9PXR5cGVvZiB2ZT9yZSh2''@;'; put 'put ''ZSxkZSk6dmV9KSxvZX0sdHJpbTpmdW5jdGlvbihvZSl7cmV0dXJuIG9lLnRyaW0/b2UudHJpbSgpOm9lLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sc3RyaXBCT006ZnVuY3Rpb24ob2Upe3JldHVybiA2NTI3OT09PW9lLmNoYXJDb2RlQXQoMCkmJihvZT1vZS5zbGljZSgxKSksb2V9fX0s''@;'; put 'put ''NTYyMzpVPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIFEoYWUsWSxXKXthZSBpbnN0YW5jZW9mIFJlZ0V4cCYmKGFlPWooYWUsVykpLFkgaW5zdGFuY2VvZiBSZWdFeHAmJihZPWooWSxXKSk7dmFyIE49cmUoYWUsWSxXKTtyZXR1cm4gTiYme3N0YXJ0Ok5bMF0sZW5kOk5bMV0scHJlOlcuc2xp''@;'; put 'put ''Y2UoMCxOWzBdKSxib2R5Olcuc2xpY2UoTlswXSthZS5sZW5ndGgsTlsxXSkscG9zdDpXLnNsaWNlKE5bMV0rWS5sZW5ndGgpfX1mdW5jdGlvbiBqKGFlLFkpe3ZhciBXPVkubWF0Y2goYWUpO3JldHVybiBXP1dbMF06bnVsbH1mdW5jdGlvbiByZShhZSxZLFcpe3ZhciBOLHRlLEssSixzZSxv''@;'; put 'put ''ZT1XLmluZGV4T2YoYWUpLGNlPVcuaW5kZXhPZihZLG9lKzEpLGRlPW9lO2lmKG9lPj0wJiZjZT4wKXtpZihhZT09PVkpcmV0dXJuW29lLGNlXTtmb3IoTj1bXSxLPVcubGVuZ3RoO2RlPj0wJiYhc2U7KWRlPT1vZT8oTi5wdXNoKGRlKSxvZT1XLmluZGV4T2YoYWUsZGUrMSkpOjE9PU4ubGVu''@;'; put 'put ''Z3RoP3NlPVtOLnBvcCgpLGNlXTooKHRlPU4ucG9wKCkpPEsmJihLPXRlLEo9Y2UpLGNlPVcuaW5kZXhPZihZLGRlKzEpKSxkZT1vZTxjZSYmb2U+PTA/b2U6Y2U7Ti5sZW5ndGgmJihzZT1bSyxKXSl9cmV0dXJuIHNlfVUuZXhwb3J0cz1RLFEucmFuZ2U9cmV9LDk3NDI6KFUsUSk9PnsidXNl''@;'; put 'put ''IHN0cmljdCI7US5ieXRlTGVuZ3RoPWZ1bmN0aW9uKEope3ZhciBzZT10ZShKKSxjZT1zZVsxXTtyZXR1cm4gMyooc2VbMF0rY2UpLzQtY2V9LFEudG9CeXRlQXJyYXk9ZnVuY3Rpb24oSil7dmFyIHNlLG9lLE1lLGNlPXRlKEopLGRlPWNlWzBdLHZlPWNlWzFdLEFlPW5ldyBhZSgzKihkZSso''@;'; put 'put ''TWU9dmUpKS80LU1lKSxrZT0wLFNlPXZlPjA/ZGUtNDpkZTtmb3Iob2U9MDtvZTxTZTtvZSs9NClzZT1yZVtKLmNoYXJDb2RlQXQob2UpXTw8MTh8cmVbSi5jaGFyQ29kZUF0KG9lKzEpXTw8MTJ8cmVbSi5jaGFyQ29kZUF0KG9lKzIpXTw8NnxyZVtKLmNoYXJDb2RlQXQob2UrMyldLEFlW2tl''@;'; put 'put ''KytdPXNlPj4xNiYyNTUsQWVba2UrK109c2U+PjgmMjU1LEFlW2tlKytdPTI1NSZzZTtyZXR1cm4gMj09PXZlJiYoc2U9cmVbSi5jaGFyQ29kZUF0KG9lKV08PDJ8cmVbSi5jaGFyQ29kZUF0KG9lKzEpXT4+NCxBZVtrZSsrXT0yNTUmc2UpLDE9PT12ZSYmKHNlPXJlW0ouY2hhckNvZGVBdChv''@;'; put 'put ''ZSldPDwxMHxyZVtKLmNoYXJDb2RlQXQob2UrMSldPDw0fHJlW0ouY2hhckNvZGVBdChvZSsyKV0+PjIsQWVba2UrK109c2U+PjgmMjU1LEFlW2tlKytdPTI1NSZzZSksQWV9LFEuZnJvbUJ5dGVBcnJheT1mdW5jdGlvbihKKXtmb3IodmFyIHNlLG9lPUoubGVuZ3RoLGNlPW9lJTMsZGU9W10s''@;'; put 'put ''QWU9MCxrZT1vZS1jZTtBZTxrZTtBZSs9MTYzODMpZGUucHVzaChLKEosQWUsQWUrMTYzODM+a2U/a2U6QWUrMTYzODMpKTtyZXR1cm4gMT09PWNlP2RlLnB1c2goalsoc2U9SltvZS0xXSk+PjJdK2pbc2U8PDQmNjNdKyI9PSIpOjI9PT1jZSYmZGUucHVzaChqWyhzZT0oSltvZS0yXTw8OCkr''@;'; put 'put ''SltvZS0xXSk+PjEwXStqW3NlPj40JjYzXStqW3NlPDwyJjYzXSsiPSIpLGRlLmpvaW4oIiIpfTtmb3IodmFyIGo9W10scmU9W10sYWU9InVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5P1VpbnQ4QXJyYXk6QXJyYXksWT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlq''@;'; put 'put ''a2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsVz0wLE49WS5sZW5ndGg7VzxOOysrVylqW1ddPVlbV10scmVbWS5jaGFyQ29kZUF0KFcpXT1XO2Z1bmN0aW9uIHRlKEope3ZhciBzZT1KLmxlbmd0aDtpZihzZSU0PjApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmluZy4gTGVuZ3Ro''@;'; put 'put ''IG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Iik7dmFyIG9lPUouaW5kZXhPZigiPSIpO3JldHVybi0xPT09b2UmJihvZT1zZSksW29lLG9lPT09c2U/MDo0LW9lJTRdfWZ1bmN0aW9uIEsoSixzZSxvZSl7Zm9yKHZhciBkZSx2ZT1bXSxBZT1zZTtBZTxvZTtBZSs9Myl2ZS5wdXNoKGpbKGRlPShK''@;'; put 'put ''W0FlXTw8MTYmMTY3MTE2ODApKyhKW0FlKzFdPDw4JjY1MjgwKSsoMjU1JkpbQWUrMl0pKT4+MTgmNjNdK2pbZGU+PjEyJjYzXStqW2RlPj42JjYzXStqWzYzJmRlXSk7cmV0dXJuIHZlLmpvaW4oIiIpfXJlWyItIi5jaGFyQ29kZUF0KDApXT02MixyZVsiXyIuY2hhckNvZGVBdCgwKV09NjN9''@;'; put 'put ''LDM1NTA6ZnVuY3Rpb24oVSxRLGopeyFmdW5jdGlvbihyZSxhZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIFkoVCxTKXtpZighVCl0aHJvdyBuZXcgRXJyb3IoU3x8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBXKFQsUyl7VC5zdXBlcl89Uzt2YXIgRj1mdW5jdGlvbigpe307Ri5wcm90''@;'; put 'put ''b3R5cGU9Uy5wcm90b3R5cGUsVC5wcm90b3R5cGU9bmV3IEYsVC5wcm90b3R5cGUuY29uc3RydWN0b3I9VH1mdW5jdGlvbiBOKFQsUyxGKXtpZihOLmlzQk4oVCkpcmV0dXJuIFQ7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVs''@;'; put 'put ''bCE9PVQmJigibGUiIT09UyYmImJlIiE9PVN8fChGPVMsUz0xMCksdGhpcy5faW5pdChUfHwwLFN8fDEwLEZ8fCJiZSIpKX12YXIgdGU7Im9iamVjdCI9PXR5cGVvZiByZT9yZS5leHBvcnRzPU46YWUuQk49TixOLkJOPU4sTi53b3JkU2l6ZT0yNjt0cnl7dGU9InVuZGVmaW5lZCIhPXR5cGVv''@;'; put 'put ''ZiB3aW5kb3cmJnZvaWQgMCE9PXdpbmRvdy5CdWZmZXI/d2luZG93LkJ1ZmZlcjpqKDY2MDEpLkJ1ZmZlcn1jYXRjaChUKXt9ZnVuY3Rpb24gSyhULFMpe3ZhciBGPVQuY2hhckNvZGVBdChTKTtyZXR1cm4gRj49NDgmJkY8PTU3P0YtNDg6Rj49NjUmJkY8PTcwP0YtNTU6Rj49OTcmJkY8PTEw''@;'; put 'put ''Mj9GLTg3OnZvaWQgWSghMSwiSW52YWxpZCBjaGFyYWN0ZXIgaW4gIitUKX1mdW5jdGlvbiBKKFQsUyxGKXt2YXIgeWU9SyhULEYpO3JldHVybiBGLTE+PVMmJih5ZXw9SyhULEYtMSk8PDQpLHllfWZ1bmN0aW9uIHNlKFQsUyxGLHllKXtmb3IodmFyIENlPTAsRGU9MCxQZT1NYXRoLm1pbihU''@;'; put 'put ''Lmxlbmd0aCxGKSxRZT1TO1FlPFBlO1FlKyspe3ZhciAkZT1ULmNoYXJDb2RlQXQoUWUpLTQ4O0NlKj15ZSxEZT0kZT49NDk/JGUtNDkrMTA6JGU+PTE3PyRlLTE3KzEwOiRlLFkoJGU+PTAmJkRlPHllLCJJbnZhbGlkIGNoYXJhY3RlciIpLENlKz1EZX1yZXR1cm4gQ2V9ZnVuY3Rpb24gb2Uo''@;'; put 'put ''VCxTKXtULndvcmRzPVMud29yZHMsVC5sZW5ndGg9Uy5sZW5ndGgsVC5uZWdhdGl2ZT1TLm5lZ2F0aXZlLFQucmVkPVMucmVkfWlmKE4uaXNCTj1mdW5jdGlvbihUKXtyZXR1cm4gVCBpbnN0YW5jZW9mIE58fG51bGwhPT1UJiYib2JqZWN0Ij09dHlwZW9mIFQmJlQuY29uc3RydWN0b3Iud29y''@;'; put 'put ''ZFNpemU9PT1OLndvcmRTaXplJiZBcnJheS5pc0FycmF5KFQud29yZHMpfSxOLm1heD1mdW5jdGlvbihULFMpe3JldHVybiBULmNtcChTKT4wP1Q6U30sTi5taW49ZnVuY3Rpb24oVCxTKXtyZXR1cm4gVC5jbXAoUyk8MD9UOlN9LE4ucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKFQsUyxGKXtp''@;'; put 'put ''ZigibnVtYmVyIj09dHlwZW9mIFQpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoVCxTLEYpO2lmKCJvYmplY3QiPT10eXBlb2YgVClyZXR1cm4gdGhpcy5faW5pdEFycmF5KFQsUyxGKTsiaGV4Ij09PVMmJihTPTE2KSxZKFM9PT0oMHxTKSYmUz49MiYmUzw9MzYpO3ZhciB5ZT0wOyItIj09PShU''@;'; put 'put ''PVQudG9TdHJpbmcoKS5yZXBsYWNlKC9ccysvZywiIikpWzBdJiYoeWUrKyx0aGlzLm5lZ2F0aXZlPTEpLHllPFQubGVuZ3RoJiYoMTY9PT1TP3RoaXMuX3BhcnNlSGV4KFQseWUsRik6KHRoaXMuX3BhcnNlQmFzZShULFMseWUpLCJsZSI9PT1GJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0Fy''@;'; put 'put ''cmF5KCksUyxGKSkpfSxOLnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihULFMsRil7VDwwJiYodGhpcy5uZWdhdGl2ZT0xLFQ9LVQpLFQ8NjcxMDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJlRdLHRoaXMubGVuZ3RoPTEpOlQ8NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1b''@;'; put 'put ''NjcxMDg4NjMmVCxULzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKTooWShUPDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJlQsVC82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09RiYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9B''@;'; put 'put ''cnJheSgpLFMsRil9LE4ucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oVCxTLEYpe2lmKFkoIm51bWJlciI9PXR5cGVvZiBULmxlbmd0aCksVC5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoVC5sZW5n''@;'; put 'put ''dGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgeWU9MDt5ZTx0aGlzLmxlbmd0aDt5ZSsrKXRoaXMud29yZHNbeWVdPTA7dmFyIENlLERlLFBlPTA7aWYoImJlIj09PUYpZm9yKHllPVQubGVuZ3RoLTEsQ2U9MDt5ZT49MDt5ZS09Myl0aGlzLndvcmRzW0Nl''@;'; put 'put ''XXw9KERlPVRbeWVdfFRbeWUtMV08PDh8VFt5ZS0yXTw8MTYpPDxQZSY2NzEwODg2Myx0aGlzLndvcmRzW0NlKzFdPURlPj4+MjYtUGUmNjcxMDg4NjMsKFBlKz0yNCk+PTI2JiYoUGUtPTI2LENlKyspO2Vsc2UgaWYoImxlIj09PUYpZm9yKHllPTAsQ2U9MDt5ZTxULmxlbmd0aDt5ZSs9Myl0''@;'; put 'put ''aGlzLndvcmRzW0NlXXw9KERlPVRbeWVdfFRbeWUrMV08PDh8VFt5ZSsyXTw8MTYpPDxQZSY2NzEwODg2Myx0aGlzLndvcmRzW0NlKzFdPURlPj4+MjYtUGUmNjcxMDg4NjMsKFBlKz0yNCk+PTI2JiYoUGUtPTI2LENlKyspO3JldHVybiB0aGlzLl9zdHJpcCgpfSxOLnByb3RvdHlwZS5fcGFy''@;'; put 'put ''c2VIZXg9ZnVuY3Rpb24oVCxTLEYpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoVC5sZW5ndGgtUykvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgeWU9MDt5ZTx0aGlzLmxlbmd0aDt5ZSsrKXRoaXMud29yZHNbeWVdPTA7dmFyIENlLERlPTAsUGU9MDtpZigi''@;'; put 'put ''YmUiPT09Rilmb3IoeWU9VC5sZW5ndGgtMTt5ZT49Uzt5ZS09MilDZT1KKFQsUyx5ZSk8PERlLHRoaXMud29yZHNbUGVdfD02NzEwODg2MyZDZSxEZT49MTg/KERlLT0xOCx0aGlzLndvcmRzW1BlKz0xXXw9Q2U+Pj4yNik6RGUrPTg7ZWxzZSBmb3IoeWU9KFQubGVuZ3RoLVMpJTI9PTA/Uysx''@;'; put 'put ''OlM7eWU8VC5sZW5ndGg7eWUrPTIpQ2U9SihULFMseWUpPDxEZSx0aGlzLndvcmRzW1BlXXw9NjcxMDg4NjMmQ2UsRGU+PTE4PyhEZS09MTgsdGhpcy53b3Jkc1tQZSs9MV18PUNlPj4+MjYpOkRlKz04O3RoaXMuX3N0cmlwKCl9LE4ucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24oVCxT''@;'; put 'put ''LEYpe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciB5ZT0wLENlPTE7Q2U8PTY3MTA4ODYzO0NlKj1TKXllKys7eWUtLSxDZT1DZS9TfDA7Zm9yKHZhciBEZT1ULmxlbmd0aC1GLFBlPURlJXllLFFlPU1hdGgubWluKERlLERlLVBlKStGLCRlPTAsZ3Q9RjtndDxRZTtndCs9''@;'; put 'put ''eWUpJGU9c2UoVCxndCxndCt5ZSxTKSx0aGlzLmltdWxuKENlKSx0aGlzLndvcmRzWzBdKyRlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPSRlOnRoaXMuX2lhZGRuKCRlKTtpZigwIT09UGUpe3ZhciB3dD0xO2ZvcigkZT1zZShULGd0LFQubGVuZ3RoLFMpLGd0PTA7Z3Q8UGU7Z3QrKyl3dCo9''@;'; put 'put ''Uzt0aGlzLmltdWxuKHd0KSx0aGlzLndvcmRzWzBdKyRlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPSRlOnRoaXMuX2lhZGRuKCRlKX10aGlzLl9zdHJpcCgpfSxOLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKFQpe1Qud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIFM9MDtT''@;'; put 'put ''PHRoaXMubGVuZ3RoO1MrKylULndvcmRzW1NdPXRoaXMud29yZHNbU107VC5sZW5ndGg9dGhpcy5sZW5ndGgsVC5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLFQucmVkPXRoaXMucmVkfSxOLnByb3RvdHlwZS5fbW92ZT1mdW5jdGlvbihUKXtvZShULHRoaXMpfSxOLnByb3RvdHlwZS5jbG9uZT1m''@;'; put 'put ''dW5jdGlvbigpe3ZhciBUPW5ldyBOKG51bGwpO3JldHVybiB0aGlzLmNvcHkoVCksVH0sTi5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihUKXtmb3IoO3RoaXMubGVuZ3RoPFQ7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sTi5wcm90b3R5cGUuX3N0cmlwPWZ1''@;'; put 'put ''bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sTi5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMu''@;'; put 'put ''d29yZHNbMF0mJih0aGlzLm5lZ2F0aXZlPTApLHRoaXN9LCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sLmZvcil0cnl7Ti5wcm90b3R5cGVbU3ltYm9sLmZvcigibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20iKV09Y2V9Y2F0Y2goVCl7Ti5w''@;'; put 'put ''cm90b3R5cGUuaW5zcGVjdD1jZX1lbHNlIE4ucHJvdG90eXBlLmluc3BlY3Q9Y2U7ZnVuY3Rpb24gY2UoKXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In12YXIgZGU9WyIiLCIwIiwiMDAiLCIwMDAiLCIwMDAwIiwiMDAwMDAiLCIwMDAw''@;'; put 'put ''MDAiLCIwMDAwMDAwIiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sdmU9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sQWU9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2''@;'; put 'put ''MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwx''@;'; put 'put ''MTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24ga2UoVCxTLEYpe0YubmVnYXRpdmU9Uy5uZWdhdGl2ZV5ULm5lZ2F0aXZlO3ZhciB5ZT1ULmxlbmd0aCtT''@;'; put 'put ''Lmxlbmd0aHwwO0YubGVuZ3RoPXllLHllPXllLTF8MDt2YXIgQ2U9MHxULndvcmRzWzBdLERlPTB8Uy53b3Jkc1swXSxQZT1DZSpEZSwkZT1QZS82NzEwODg2NHwwO0Yud29yZHNbMF09NjcxMDg4NjMmUGU7Zm9yKHZhciBndD0xO2d0PHllO2d0Kyspe2Zvcih2YXIgd3Q9JGU+Pj4yNixtdD02''@;'; put 'put ''NzEwODg2MyYkZSx2dD1NYXRoLm1pbihndCxTLmxlbmd0aC0xKSxBdD1NYXRoLm1heCgwLGd0LVQubGVuZ3RoKzEpO0F0PD12dDtBdCsrKXd0Kz0oUGU9KENlPTB8VC53b3Jkc1tndC1BdHwwXSkqKERlPTB8Uy53b3Jkc1tBdF0pK210KS82NzEwODg2NHwwLG10PTY3MTA4ODYzJlBlO0Yud29y''@;'; put 'put ''ZHNbZ3RdPTB8bXQsJGU9MHx3dH1yZXR1cm4gMCE9PSRlP0Yud29yZHNbZ3RdPTB8JGU6Ri5sZW5ndGgtLSxGLl9zdHJpcCgpfU4ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKFQsUyl7dmFyIEY7aWYoUz0wfFN8fDEsMTY9PT0oVD1UfHwxMCl8fCJoZXgiPT09VCl7Rj0iIjtmb3IodmFy''@;'; put 'put ''IHllPTAsQ2U9MCxEZT0wO0RlPHRoaXMubGVuZ3RoO0RlKyspe3ZhciBQZT10aGlzLndvcmRzW0RlXSxRZT0oMTY3NzcyMTUmKFBlPDx5ZXxDZSkpLnRvU3RyaW5nKDE2KTtDZT1QZT4+PjI0LXllJjE2Nzc3MjE1LCh5ZSs9Mik+PTI2JiYoeWUtPTI2LERlLS0pLEY9MCE9PUNlfHxEZSE9PXRo''@;'; put 'put ''aXMubGVuZ3RoLTE/ZGVbNi1RZS5sZW5ndGhdK1FlK0Y6UWUrRn1mb3IoMCE9PUNlJiYoRj1DZS50b1N0cmluZygxNikrRik7Ri5sZW5ndGglUyE9MDspRj0iMCIrRjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihGPSItIitGKSxGfWlmKFQ9PT0oMHxUKSYmVD49MiYmVDw9MzYpe3ZhciAk''@;'; put 'put ''ZT12ZVtUXSxndD1BZVtUXTtGPSIiO3ZhciB3dD10aGlzLmNsb25lKCk7Zm9yKHd0Lm5lZ2F0aXZlPTA7IXd0LmlzWmVybygpOyl7dmFyIG10PXd0Lm1vZHJuKGd0KS50b1N0cmluZyhUKTtGPSh3dD13dC5pZGl2bihndCkpLmlzWmVybygpP210K0Y6ZGVbJGUtbXQubGVuZ3RoXSttdCtGfWZv''@;'; put 'put ''cih0aGlzLmlzWmVybygpJiYoRj0iMCIrRik7Ri5sZW5ndGglUyE9MDspRj0iMCIrRjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihGPSItIitGKSxGfVkoITEsIkJhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYiKX0sTi5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''VD10aGlzLndvcmRzWzBdO3JldHVybiAyPT09dGhpcy5sZW5ndGg/VCs9NjcxMDg4NjQqdGhpcy53b3Jkc1sxXTozPT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJdP1QrPTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0aD4yJiZZKCExLCJO''@;'; put 'put ''dW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMiKSwwIT09dGhpcy5uZWdhdGl2ZT8tVDpUfSxOLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygxNiwyKX0sdGUmJihOLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbihULFMp''@;'; put 'put ''e3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKHRlLFQsUyl9KSxOLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKFQsUyl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksVCxTKX0sTi5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oVCxTLEYpe3RoaXMuX3N0cmlwKCk7dmFyIHll''@;'; put 'put ''PXRoaXMuYnl0ZUxlbmd0aCgpLENlPUZ8fE1hdGgubWF4KDEseWUpO1koeWU8PUNlLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksWShDZT4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKTt2YXIgUGUsUWUsRGU9KFFlPUNlLChQZT1UKS5hbGxvY1Vuc2Fm''@;'; put 'put ''ZT9QZS5hbGxvY1Vuc2FmZShRZSk6bmV3IFBlKFFlKSk7cmV0dXJuIHRoaXNbIl90b0FycmF5TGlrZSIrKCJsZSI9PT1TPyJMRSI6IkJFIildKERlLHllKSxEZX0sTi5wcm90b3R5cGUuX3RvQXJyYXlMaWtlTEU9ZnVuY3Rpb24oVCxTKXtmb3IodmFyIEY9MCx5ZT0wLENlPTAsRGU9MDtDZTx0''@;'; put 'put ''aGlzLmxlbmd0aDtDZSsrKXt2YXIgUGU9dGhpcy53b3Jkc1tDZV08PERlfHllO1RbRisrXT0yNTUmUGUsRjxULmxlbmd0aCYmKFRbRisrXT1QZT4+OCYyNTUpLEY8VC5sZW5ndGgmJihUW0YrK109UGU+PjE2JjI1NSksNj09PURlPyhGPFQubGVuZ3RoJiYoVFtGKytdPVBlPj4yNCYyNTUpLHll''@;'; put 'put ''PTAsRGU9MCk6KHllPVBlPj4+MjQsRGUrPTIpfWlmKEY8VC5sZW5ndGgpZm9yKFRbRisrXT15ZTtGPFQubGVuZ3RoOylUW0YrK109MH0sTi5wcm90b3R5cGUuX3RvQXJyYXlMaWtlQkU9ZnVuY3Rpb24oVCxTKXtmb3IodmFyIEY9VC5sZW5ndGgtMSx5ZT0wLENlPTAsRGU9MDtDZTx0aGlzLmxl''@;'; put 'put ''bmd0aDtDZSsrKXt2YXIgUGU9dGhpcy53b3Jkc1tDZV08PERlfHllO1RbRi0tXT0yNTUmUGUsRj49MCYmKFRbRi0tXT1QZT4+OCYyNTUpLEY+PTAmJihUW0YtLV09UGU+PjE2JjI1NSksNj09PURlPyhGPj0wJiYoVFtGLS1dPVBlPj4yNCYyNTUpLHllPTAsRGU9MCk6KHllPVBlPj4+MjQsRGUr''@;'; put 'put ''PTIpfWlmKEY+PTApZm9yKFRbRi0tXT15ZTtGPj0wOylUW0YtLV09MH0sTi5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKFQpe3JldHVybiAzMi1NYXRoLmNsejMyKFQpfTpmdW5jdGlvbihUKXt2YXIgUz1ULEY9MDtyZXR1cm4gUz49NDA5NiYmKEYrPTEzLFM+Pj49''@;'; put 'put ''MTMpLFM+PTY0JiYoRis9NyxTPj4+PTcpLFM+PTgmJihGKz00LFM+Pj49NCksUz49MiYmKEYrPTIsUz4+Pj0yKSxGK1N9LE4ucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbihUKXtpZigwPT09VClyZXR1cm4gMjY7dmFyIFM9VCxGPTA7cmV0dXJuIDA9PSg4MTkxJlMpJiYoRis9MTMsUz4+''@;'; put 'put ''Pj0xMyksMD09KDEyNyZTKSYmKEYrPTcsUz4+Pj03KSwwPT0oMTUmUykmJihGKz00LFM+Pj49NCksMD09KDMmUykmJihGKz0yLFM+Pj49MiksMD09KDEmUykmJkYrKyxGfSxOLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgUz10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0''@;'; put 'put ''aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStTfSxOLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciBUPTAsUz0wO1M8dGhpcy5sZW5ndGg7UysrKXt2YXIgRj10aGlzLl96ZXJvQml0cyh0aGlzLndv''@;'; put 'put ''cmRzW1NdKTtpZihUKz1GLDI2IT09RilicmVha31yZXR1cm4gVH0sTi5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sTi5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKFQpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2''@;'; put 'put ''ZT90aGlzLmFicygpLmlub3RuKFQpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sTi5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMudGVzdG4oVC0xKT90aGlzLm5vdG4oVCkuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sTi5wcm90b3R5cGUuaXNOZWc9ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LE4ucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxOLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxO''@;'; put 'put ''LnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKFQpe2Zvcig7dGhpcy5sZW5ndGg8VC5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIFM9MDtTPFQubGVuZ3RoO1MrKyl0aGlzLndvcmRzW1NdPXRoaXMud29yZHNbU118VC53b3Jkc1tTXTtyZXR1cm4gdGhpcy5fc3Ry''@;'; put 'put ''aXAoKX0sTi5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKFQpe3JldHVybiBZKDA9PSh0aGlzLm5lZ2F0aXZlfFQubmVnYXRpdmUpKSx0aGlzLml1b3IoVCl9LE4ucHJvdG90eXBlLm9yPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmxlbmd0aD5ULmxlbmd0aD90aGlzLmNsb25lKCkuaW9yKFQpOlQu''@;'; put 'put ''Y2xvbmUoKS5pb3IodGhpcyl9LE4ucHJvdG90eXBlLnVvcj1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5sZW5ndGg+VC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IoVCk6VC5jbG9uZSgpLml1b3IodGhpcyl9LE4ucHJvdG90eXBlLml1YW5kPWZ1bmN0aW9uKFQpe3ZhciBTO1M9dGhpcy5sZW5n''@;'; put 'put ''dGg+VC5sZW5ndGg/VDp0aGlzO2Zvcih2YXIgRj0wO0Y8Uy5sZW5ndGg7RisrKXRoaXMud29yZHNbRl09dGhpcy53b3Jkc1tGXSZULndvcmRzW0ZdO3JldHVybiB0aGlzLmxlbmd0aD1TLmxlbmd0aCx0aGlzLl9zdHJpcCgpfSxOLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKFQpe3JldHVybiBZ''@;'; put 'put ''KDA9PSh0aGlzLm5lZ2F0aXZlfFQubmVnYXRpdmUpKSx0aGlzLml1YW5kKFQpfSxOLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMubGVuZ3RoPlQubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKFQpOlQuY2xvbmUoKS5pYW5kKHRoaXMpfSxOLnByb3RvdHlwZS51YW5kPWZ1''@;'; put 'put ''bmN0aW9uKFQpe3JldHVybiB0aGlzLmxlbmd0aD5ULmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoVCk6VC5jbG9uZSgpLml1YW5kKHRoaXMpfSxOLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbihUKXt2YXIgUyxGO3RoaXMubGVuZ3RoPlQubGVuZ3RoPyhTPXRoaXMsRj1UKTooUz1ULEY9dGhp''@;'; put 'put ''cyk7Zm9yKHZhciB5ZT0wO3llPEYubGVuZ3RoO3llKyspdGhpcy53b3Jkc1t5ZV09Uy53b3Jkc1t5ZV1eRi53b3Jkc1t5ZV07aWYodGhpcyE9PVMpZm9yKDt5ZTxTLmxlbmd0aDt5ZSsrKXRoaXMud29yZHNbeWVdPVMud29yZHNbeWVdO3JldHVybiB0aGlzLmxlbmd0aD1TLmxlbmd0aCx0aGlz''@;'; put 'put ''Ll9zdHJpcCgpfSxOLnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uKFQpe3JldHVybiBZKDA9PSh0aGlzLm5lZ2F0aXZlfFQubmVnYXRpdmUpKSx0aGlzLml1eG9yKFQpfSxOLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMubGVuZ3RoPlQubGVuZ3RoP3RoaXMuY2xvbmUoKS5p''@;'; put 'put ''eG9yKFQpOlQuY2xvbmUoKS5peG9yKHRoaXMpfSxOLnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmxlbmd0aD5ULmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IoVCk6VC5jbG9uZSgpLml1eG9yKHRoaXMpfSxOLnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbihUKXtZKCJu''@;'; put 'put ''dW1iZXIiPT10eXBlb2YgVCYmVD49MCk7dmFyIFM9MHxNYXRoLmNlaWwoVC8yNiksRj1UJTI2O3RoaXMuX2V4cGFuZChTKSxGPjAmJlMtLTtmb3IodmFyIHllPTA7eWU8Uzt5ZSsrKXRoaXMud29yZHNbeWVdPTY3MTA4ODYzJn50aGlzLndvcmRzW3llXTtyZXR1cm4gRj4wJiYodGhpcy53b3Jk''@;'; put 'put ''c1t5ZV09fnRoaXMud29yZHNbeWVdJjY3MTA4ODYzPj4yNi1GKSx0aGlzLl9zdHJpcCgpfSxOLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oVCl9LE4ucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oVCxTKXtZKCJudW1iZXIiPT10eXBlb2YgVCYm''@;'; put 'put ''VD49MCk7dmFyIEY9VC8yNnwwLHllPVQlMjY7cmV0dXJuIHRoaXMuX2V4cGFuZChGKzEpLHRoaXMud29yZHNbRl09Uz90aGlzLndvcmRzW0ZdfDE8PHllOnRoaXMud29yZHNbRl0mfigxPDx5ZSksdGhpcy5fc3RyaXAoKX0sTi5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihUKXt2YXIgUyxGLHll''@;'; put 'put ''O2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09VC5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLFM9dGhpcy5pc3ViKFQpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PVQubmVnYXRpdmUpcmV0dXJuIFQubmVnYXRpdmU9''@;'; put 'put ''MCxTPXRoaXMuaXN1YihUKSxULm5lZ2F0aXZlPTEsUy5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD5ULmxlbmd0aD8oRj10aGlzLHllPVQpOihGPVQseWU9dGhpcyk7Zm9yKHZhciBDZT0wLERlPTA7RGU8eWUubGVuZ3RoO0RlKyspdGhpcy53b3Jkc1tEZV09NjcxMDg4NjMmKFM9KDB8Ri53b3Jk''@;'; put 'put ''c1tEZV0pKygwfHllLndvcmRzW0RlXSkrQ2UpLENlPVM+Pj4yNjtmb3IoOzAhPT1DZSYmRGU8Ri5sZW5ndGg7RGUrKyl0aGlzLndvcmRzW0RlXT02NzEwODg2MyYoUz0oMHxGLndvcmRzW0RlXSkrQ2UpLENlPVM+Pj4yNjtpZih0aGlzLmxlbmd0aD1GLmxlbmd0aCwwIT09Q2UpdGhpcy53b3Jk''@;'; put 'put ''c1t0aGlzLmxlbmd0aF09Q2UsdGhpcy5sZW5ndGgrKztlbHNlIGlmKEYhPT10aGlzKWZvcig7RGU8Ri5sZW5ndGg7RGUrKyl0aGlzLndvcmRzW0RlXT1GLndvcmRzW0RlXTtyZXR1cm4gdGhpc30sTi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKFQpe3ZhciBTO3JldHVybiAwIT09VC5uZWdhdGl2''@;'; put 'put ''ZSYmMD09PXRoaXMubmVnYXRpdmU/KFQubmVnYXRpdmU9MCxTPXRoaXMuc3ViKFQpLFQubmVnYXRpdmVePTEsUyk6MD09PVQubmVnYXRpdmUmJjAhPT10aGlzLm5lZ2F0aXZlPyh0aGlzLm5lZ2F0aXZlPTAsUz1ULnN1Yih0aGlzKSx0aGlzLm5lZ2F0aXZlPTEsUyk6dGhpcy5sZW5ndGg+VC5s''@;'; put 'put ''ZW5ndGg/dGhpcy5jbG9uZSgpLmlhZGQoVCk6VC5jbG9uZSgpLmlhZGQodGhpcyl9LE4ucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oVCl7aWYoMCE9PVQubmVnYXRpdmUpe1QubmVnYXRpdmU9MDt2YXIgUz10aGlzLmlhZGQoVCk7cmV0dXJuIFQubmVnYXRpdmU9MSxTLl9ub3JtU2lnbigpfWlm''@;'; put 'put ''KDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkKFQpLHRoaXMubmVnYXRpdmU9MSx0aGlzLl9ub3JtU2lnbigpO3ZhciBGLHllLENlPXRoaXMuY21wKFQpO2lmKDA9PT1DZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3RoPTEsdGhpcy53''@;'; put 'put ''b3Jkc1swXT0wLHRoaXM7Q2U+MD8oRj10aGlzLHllPVQpOihGPVQseWU9dGhpcyk7Zm9yKHZhciBEZT0wLFBlPTA7UGU8eWUubGVuZ3RoO1BlKyspRGU9KFM9KDB8Ri53b3Jkc1tQZV0pLSgwfHllLndvcmRzW1BlXSkrRGUpPj4yNix0aGlzLndvcmRzW1BlXT02NzEwODg2MyZTO2Zvcig7MCE9''@;'; put 'put ''PURlJiZQZTxGLmxlbmd0aDtQZSsrKURlPShTPSgwfEYud29yZHNbUGVdKStEZSk+PjI2LHRoaXMud29yZHNbUGVdPTY3MTA4ODYzJlM7aWYoMD09PURlJiZQZTxGLmxlbmd0aCYmRiE9PXRoaXMpZm9yKDtQZTxGLmxlbmd0aDtQZSsrKXRoaXMud29yZHNbUGVdPUYud29yZHNbUGVdO3JldHVy''@;'; put 'put ''biB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxQZSksRiE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuX3N0cmlwKCl9LE4ucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoVCl9O3ZhciBTZT1mdW5jdGlvbihULFMsRil7dmFy''@;'; put 'put ''IHllLENlLERlLFBlPVQud29yZHMsUWU9Uy53b3JkcywkZT1GLndvcmRzLGd0PTAsd3Q9MHxQZVswXSxtdD04MTkxJnd0LHZ0PXd0Pj4+MTMsQXQ9MHxQZVsxXSxodD04MTkxJkF0LEJ0PUF0Pj4+MTMsb249MHxQZVsyXSxfdD04MTkxJm9uLHR0PW9uPj4+MTMsZXQ9MHxQZVszXSxsdD04MTkx''@;'; put 'put ''JmV0LEx0PWV0Pj4+MTMsQ3Q9MHxQZVs0XSxmdD04MTkxJkN0LEh0PUN0Pj4+MTMsR2U9MHxQZVs1XSxVZT04MTkxJkdlLHl0PUdlPj4+MTMsanQ9MHxQZVs2XSxKdD04MTkxJmp0LGduPWp0Pj4+MTMsZG49MHxQZVs3XSx5bj04MTkxJmRuLGxuPWRuPj4+MTMsTm49MHxQZVs4XSxibj04MTkx''@;'; put 'put ''Jk5uLGVyPU5uPj4+MTMsc3I9MHxQZVs5XSxYbj04MTkxJnNyLEZyPXNyPj4+MTMseHI9MHxRZVswXSxxdD04MTkxJnhyLHByPXhyPj4+MTMsbnI9MHxRZVsxXSxBbj04MTkxJm5yLHFuPW5yPj4+MTMsV3Q9MHxRZVsyXSxwbj04MTkxJld0LEtuPVd0Pj4+MTMsTnQ9MHxRZVszXSxzbj04MTkx''@;'; put 'put ''Jk50LFVuPU50Pj4+MTMsd249MHxRZVs0XSx0bj04MTkxJnduLHpuPXduPj4+MTMsVHI9MHxRZVs1XSxCbj04MTkxJlRyLGtyPVRyPj4+MTMsbW49MHxRZVs2XSx1bj04MTkxJm1uLGNuPW1uPj4+MTMsX249MHxRZVs3XSxHdD04MTkxJl9uLGtuPV9uPj4+MTMsVm49MHxRZVs4XSxlbj04MTkx''@;'; put 'put ''JlZuLEluPVZuPj4+MTMsSm49MHxRZVs5XSxvcj04MTkxJkpuLGdyPUpuPj4+MTM7Ri5uZWdhdGl2ZT1ULm5lZ2F0aXZlXlMubmVnYXRpdmUsRi5sZW5ndGg9MTk7dmFyIEtyPShndCsoeWU9TWF0aC5pbXVsKG10LHF0KSl8MCkrKCg4MTkxJihDZT0oQ2U9TWF0aC5pbXVsKG10LHByKSkrTWF0''@;'; put 'put ''aC5pbXVsKHZ0LHF0KXwwKSk8PDEzKXwwO2d0PSgoRGU9TWF0aC5pbXVsKHZ0LHByKSkrKENlPj4+MTMpfDApKyhLcj4+PjI2KXwwLEtyJj02NzEwODg2Myx5ZT1NYXRoLmltdWwoaHQscXQpLENlPShDZT1NYXRoLmltdWwoaHQscHIpKStNYXRoLmltdWwoQnQscXQpfDAsRGU9TWF0aC5pbXVs''@;'; put 'put ''KEJ0LHByKTt2YXIgVnI9KGd0Kyh5ZT15ZStNYXRoLmltdWwobXQsQW4pfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChtdCxxbil8MCkrTWF0aC5pbXVsKHZ0LEFuKXwwKSk8PDEzKXwwO2d0PSgoRGU9RGUrTWF0aC5pbXVsKHZ0LHFuKXwwKSsoQ2U+Pj4xMyl8MCkrKFZyPj4+''@;'; put 'put ''MjYpfDAsVnImPTY3MTA4ODYzLHllPU1hdGguaW11bChfdCxxdCksQ2U9KENlPU1hdGguaW11bChfdCxwcikpK01hdGguaW11bCh0dCxxdCl8MCxEZT1NYXRoLmltdWwodHQscHIpLHllPXllK01hdGguaW11bChodCxBbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGh0LHFuKXwwKStNYXRoLmlt''@;'; put 'put ''dWwoQnQsQW4pfDAsRGU9RGUrTWF0aC5pbXVsKEJ0LHFuKXwwO3ZhciBpaT0oZ3QrKHllPXllK01hdGguaW11bChtdCxwbil8MCl8MCkrKCg4MTkxJihDZT0oQ2U9Q2UrTWF0aC5pbXVsKG10LEtuKXwwKStNYXRoLmltdWwodnQscG4pfDApKTw8MTMpfDA7Z3Q9KChEZT1EZStNYXRoLmltdWwo''@;'; put 'put ''dnQsS24pfDApKyhDZT4+PjEzKXwwKSsoaWk+Pj4yNil8MCxpaSY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKGx0LHF0KSxDZT0oQ2U9TWF0aC5pbXVsKGx0LHByKSkrTWF0aC5pbXVsKEx0LHF0KXwwLERlPU1hdGguaW11bChMdCxwcikseWU9eWUrTWF0aC5pbXVsKF90LEFuKXwwLENlPShDZT1D''@;'; put 'put ''ZStNYXRoLmltdWwoX3QscW4pfDApK01hdGguaW11bCh0dCxBbil8MCxEZT1EZStNYXRoLmltdWwodHQscW4pfDAseWU9eWUrTWF0aC5pbXVsKGh0LHBuKXwwLENlPShDZT1DZStNYXRoLmltdWwoaHQsS24pfDApK01hdGguaW11bChCdCxwbil8MCxEZT1EZStNYXRoLmltdWwoQnQsS24pfDA7''@;'; put 'put ''dmFyIFJyPShndCsoeWU9eWUrTWF0aC5pbXVsKG10LHNuKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwobXQsVW4pfDApK01hdGguaW11bCh2dCxzbil8MCkpPDwxMyl8MDtndD0oKERlPURlK01hdGguaW11bCh2dCxVbil8MCkrKENlPj4+MTMpfDApKyhScj4+PjI2KXwwLFJy''@;'; put 'put ''Jj02NzEwODg2Myx5ZT1NYXRoLmltdWwoZnQscXQpLENlPShDZT1NYXRoLmltdWwoZnQscHIpKStNYXRoLmltdWwoSHQscXQpfDAsRGU9TWF0aC5pbXVsKEh0LHByKSx5ZT15ZStNYXRoLmltdWwobHQsQW4pfDAsQ2U9KENlPUNlK01hdGguaW11bChsdCxxbil8MCkrTWF0aC5pbXVsKEx0LEFu''@;'; put 'put ''KXwwLERlPURlK01hdGguaW11bChMdCxxbil8MCx5ZT15ZStNYXRoLmltdWwoX3QscG4pfDAsQ2U9KENlPUNlK01hdGguaW11bChfdCxLbil8MCkrTWF0aC5pbXVsKHR0LHBuKXwwLERlPURlK01hdGguaW11bCh0dCxLbil8MCx5ZT15ZStNYXRoLmltdWwoaHQsc24pfDAsQ2U9KENlPUNlK01h''@;'; put 'put ''dGguaW11bChodCxVbil8MCkrTWF0aC5pbXVsKEJ0LHNuKXwwLERlPURlK01hdGguaW11bChCdCxVbil8MDt2YXIgbGk9KGd0Kyh5ZT15ZStNYXRoLmltdWwobXQsdG4pfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChtdCx6bil8MCkrTWF0aC5pbXVsKHZ0LHRuKXwwKSk8PDEz''@;'; put 'put ''KXwwO2d0PSgoRGU9RGUrTWF0aC5pbXVsKHZ0LHpuKXwwKSsoQ2U+Pj4xMyl8MCkrKGxpPj4+MjYpfDAsbGkmPTY3MTA4ODYzLHllPU1hdGguaW11bChVZSxxdCksQ2U9KENlPU1hdGguaW11bChVZSxwcikpK01hdGguaW11bCh5dCxxdCl8MCxEZT1NYXRoLmltdWwoeXQscHIpLHllPXllK01h''@;'; put 'put ''dGguaW11bChmdCxBbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGZ0LHFuKXwwKStNYXRoLmltdWwoSHQsQW4pfDAsRGU9RGUrTWF0aC5pbXVsKEh0LHFuKXwwLHllPXllK01hdGguaW11bChsdCxwbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGx0LEtuKXwwKStNYXRoLmltdWwoTHQscG4pfDAs''@;'; put 'put ''RGU9RGUrTWF0aC5pbXVsKEx0LEtuKXwwLHllPXllK01hdGguaW11bChfdCxzbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKF90LFVuKXwwKStNYXRoLmltdWwodHQsc24pfDAsRGU9RGUrTWF0aC5pbXVsKHR0LFVuKXwwLHllPXllK01hdGguaW11bChodCx0bil8MCxDZT0oQ2U9Q2UrTWF0aC5p''@;'; put 'put ''bXVsKGh0LHpuKXwwKStNYXRoLmltdWwoQnQsdG4pfDAsRGU9RGUrTWF0aC5pbXVsKEJ0LHpuKXwwO3ZhciBNaT0oZ3QrKHllPXllK01hdGguaW11bChtdCxCbil8MCl8MCkrKCg4MTkxJihDZT0oQ2U9Q2UrTWF0aC5pbXVsKG10LGtyKXwwKStNYXRoLmltdWwodnQsQm4pfDApKTw8MTMpfDA7''@;'; put 'put ''Z3Q9KChEZT1EZStNYXRoLmltdWwodnQsa3IpfDApKyhDZT4+PjEzKXwwKSsoTWk+Pj4yNil8MCxNaSY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKEp0LHF0KSxDZT0oQ2U9TWF0aC5pbXVsKEp0LHByKSkrTWF0aC5pbXVsKGduLHF0KXwwLERlPU1hdGguaW11bChnbixwcikseWU9eWUrTWF0aC5p''@;'; put 'put ''bXVsKFVlLEFuKXwwLENlPShDZT1DZStNYXRoLmltdWwoVWUscW4pfDApK01hdGguaW11bCh5dCxBbil8MCxEZT1EZStNYXRoLmltdWwoeXQscW4pfDAseWU9eWUrTWF0aC5pbXVsKGZ0LHBuKXwwLENlPShDZT1DZStNYXRoLmltdWwoZnQsS24pfDApK01hdGguaW11bChIdCxwbil8MCxEZT1E''@;'; put 'put ''ZStNYXRoLmltdWwoSHQsS24pfDAseWU9eWUrTWF0aC5pbXVsKGx0LHNuKXwwLENlPShDZT1DZStNYXRoLmltdWwobHQsVW4pfDApK01hdGguaW11bChMdCxzbil8MCxEZT1EZStNYXRoLmltdWwoTHQsVW4pfDAseWU9eWUrTWF0aC5pbXVsKF90LHRuKXwwLENlPShDZT1DZStNYXRoLmltdWwo''@;'; put 'put ''X3Qsem4pfDApK01hdGguaW11bCh0dCx0bil8MCxEZT1EZStNYXRoLmltdWwodHQsem4pfDAseWU9eWUrTWF0aC5pbXVsKGh0LEJuKXwwLENlPShDZT1DZStNYXRoLmltdWwoaHQsa3IpfDApK01hdGguaW11bChCdCxCbil8MCxEZT1EZStNYXRoLmltdWwoQnQsa3IpfDA7dmFyIG8wPShndCso''@;'; put 'put ''eWU9eWUrTWF0aC5pbXVsKG10LHVuKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwobXQsY24pfDApK01hdGguaW11bCh2dCx1bil8MCkpPDwxMyl8MDtndD0oKERlPURlK01hdGguaW11bCh2dCxjbil8MCkrKENlPj4+MTMpfDApKyhvMD4+PjI2KXwwLG8wJj02NzEwODg2Myx5''@;'; put 'put ''ZT1NYXRoLmltdWwoeW4scXQpLENlPShDZT1NYXRoLmltdWwoeW4scHIpKStNYXRoLmltdWwobG4scXQpfDAsRGU9TWF0aC5pbXVsKGxuLHByKSx5ZT15ZStNYXRoLmltdWwoSnQsQW4pfDAsQ2U9KENlPUNlK01hdGguaW11bChKdCxxbil8MCkrTWF0aC5pbXVsKGduLEFuKXwwLERlPURlK01h''@;'; put 'put ''dGguaW11bChnbixxbil8MCx5ZT15ZStNYXRoLmltdWwoVWUscG4pfDAsQ2U9KENlPUNlK01hdGguaW11bChVZSxLbil8MCkrTWF0aC5pbXVsKHl0LHBuKXwwLERlPURlK01hdGguaW11bCh5dCxLbil8MCx5ZT15ZStNYXRoLmltdWwoZnQsc24pfDAsQ2U9KENlPUNlK01hdGguaW11bChmdCxV''@;'; put 'put ''bil8MCkrTWF0aC5pbXVsKEh0LHNuKXwwLERlPURlK01hdGguaW11bChIdCxVbil8MCx5ZT15ZStNYXRoLmltdWwobHQsdG4pfDAsQ2U9KENlPUNlK01hdGguaW11bChsdCx6bil8MCkrTWF0aC5pbXVsKEx0LHRuKXwwLERlPURlK01hdGguaW11bChMdCx6bil8MCx5ZT15ZStNYXRoLmltdWwo''@;'; put 'put ''X3QsQm4pfDAsQ2U9KENlPUNlK01hdGguaW11bChfdCxrcil8MCkrTWF0aC5pbXVsKHR0LEJuKXwwLERlPURlK01hdGguaW11bCh0dCxrcil8MCx5ZT15ZStNYXRoLmltdWwoaHQsdW4pfDAsQ2U9KENlPUNlK01hdGguaW11bChodCxjbil8MCkrTWF0aC5pbXVsKEJ0LHVuKXwwLERlPURlK01h''@;'; put 'put ''dGguaW11bChCdCxjbil8MDt2YXIgbjA9KGd0Kyh5ZT15ZStNYXRoLmltdWwobXQsR3QpfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChtdCxrbil8MCkrTWF0aC5pbXVsKHZ0LEd0KXwwKSk8PDEzKXwwO2d0PSgoRGU9RGUrTWF0aC5pbXVsKHZ0LGtuKXwwKSsoQ2U+Pj4xMyl8''@;'; put 'put ''MCkrKG4wPj4+MjYpfDAsbjAmPTY3MTA4ODYzLHllPU1hdGguaW11bChibixxdCksQ2U9KENlPU1hdGguaW11bChibixwcikpK01hdGguaW11bChlcixxdCl8MCxEZT1NYXRoLmltdWwoZXIscHIpLHllPXllK01hdGguaW11bCh5bixBbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKHluLHFuKXww''@;'; put 'put ''KStNYXRoLmltdWwobG4sQW4pfDAsRGU9RGUrTWF0aC5pbXVsKGxuLHFuKXwwLHllPXllK01hdGguaW11bChKdCxwbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEp0LEtuKXwwKStNYXRoLmltdWwoZ24scG4pfDAsRGU9RGUrTWF0aC5pbXVsKGduLEtuKXwwLHllPXllK01hdGguaW11bChVZSxz''@;'; put 'put ''bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKFVlLFVuKXwwKStNYXRoLmltdWwoeXQsc24pfDAsRGU9RGUrTWF0aC5pbXVsKHl0LFVuKXwwLHllPXllK01hdGguaW11bChmdCx0bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGZ0LHpuKXwwKStNYXRoLmltdWwoSHQsdG4pfDAsRGU9RGUrTWF0aC5p''@;'; put 'put ''bXVsKEh0LHpuKXwwLHllPXllK01hdGguaW11bChsdCxCbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGx0LGtyKXwwKStNYXRoLmltdWwoTHQsQm4pfDAsRGU9RGUrTWF0aC5pbXVsKEx0LGtyKXwwLHllPXllK01hdGguaW11bChfdCx1bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKF90LGNuKXww''@;'; put 'put ''KStNYXRoLmltdWwodHQsdW4pfDAsRGU9RGUrTWF0aC5pbXVsKHR0LGNuKXwwLHllPXllK01hdGguaW11bChodCxHdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGh0LGtuKXwwKStNYXRoLmltdWwoQnQsR3QpfDAsRGU9RGUrTWF0aC5pbXVsKEJ0LGtuKXwwO3ZhciBkMD0oZ3QrKHllPXllK01h''@;'; put 'put ''dGguaW11bChtdCxlbil8MCl8MCkrKCg4MTkxJihDZT0oQ2U9Q2UrTWF0aC5pbXVsKG10LEluKXwwKStNYXRoLmltdWwodnQsZW4pfDApKTw8MTMpfDA7Z3Q9KChEZT1EZStNYXRoLmltdWwodnQsSW4pfDApKyhDZT4+PjEzKXwwKSsoZDA+Pj4yNil8MCxkMCY9NjcxMDg4NjMseWU9TWF0aC5p''@;'; put 'put ''bXVsKFhuLHF0KSxDZT0oQ2U9TWF0aC5pbXVsKFhuLHByKSkrTWF0aC5pbXVsKEZyLHF0KXwwLERlPU1hdGguaW11bChGcixwcikseWU9eWUrTWF0aC5pbXVsKGJuLEFuKXwwLENlPShDZT1DZStNYXRoLmltdWwoYm4scW4pfDApK01hdGguaW11bChlcixBbil8MCxEZT1EZStNYXRoLmltdWwo''@;'; put 'put ''ZXIscW4pfDAseWU9eWUrTWF0aC5pbXVsKHluLHBuKXwwLENlPShDZT1DZStNYXRoLmltdWwoeW4sS24pfDApK01hdGguaW11bChsbixwbil8MCxEZT1EZStNYXRoLmltdWwobG4sS24pfDAseWU9eWUrTWF0aC5pbXVsKEp0LHNuKXwwLENlPShDZT1DZStNYXRoLmltdWwoSnQsVW4pfDApK01h''@;'; put 'put ''dGguaW11bChnbixzbil8MCxEZT1EZStNYXRoLmltdWwoZ24sVW4pfDAseWU9eWUrTWF0aC5pbXVsKFVlLHRuKXwwLENlPShDZT1DZStNYXRoLmltdWwoVWUsem4pfDApK01hdGguaW11bCh5dCx0bil8MCxEZT1EZStNYXRoLmltdWwoeXQsem4pfDAseWU9eWUrTWF0aC5pbXVsKGZ0LEJuKXww''@;'; put 'put ''LENlPShDZT1DZStNYXRoLmltdWwoZnQsa3IpfDApK01hdGguaW11bChIdCxCbil8MCxEZT1EZStNYXRoLmltdWwoSHQsa3IpfDAseWU9eWUrTWF0aC5pbXVsKGx0LHVuKXwwLENlPShDZT1DZStNYXRoLmltdWwobHQsY24pfDApK01hdGguaW11bChMdCx1bil8MCxEZT1EZStNYXRoLmltdWwo''@;'; put 'put ''THQsY24pfDAseWU9eWUrTWF0aC5pbXVsKF90LEd0KXwwLENlPShDZT1DZStNYXRoLmltdWwoX3Qsa24pfDApK01hdGguaW11bCh0dCxHdCl8MCxEZT1EZStNYXRoLmltdWwodHQsa24pfDAseWU9eWUrTWF0aC5pbXVsKGh0LGVuKXwwLENlPShDZT1DZStNYXRoLmltdWwoaHQsSW4pfDApK01h''@;'; put 'put ''dGguaW11bChCdCxlbil8MCxEZT1EZStNYXRoLmltdWwoQnQsSW4pfDA7dmFyIG0wPShndCsoeWU9eWUrTWF0aC5pbXVsKG10LG9yKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwobXQsZ3IpfDApK01hdGguaW11bCh2dCxvcil8MCkpPDwxMyl8MDtndD0oKERlPURlK01hdGgu''@;'; put 'put ''aW11bCh2dCxncil8MCkrKENlPj4+MTMpfDApKyhtMD4+PjI2KXwwLG0wJj02NzEwODg2Myx5ZT1NYXRoLmltdWwoWG4sQW4pLENlPShDZT1NYXRoLmltdWwoWG4scW4pKStNYXRoLmltdWwoRnIsQW4pfDAsRGU9TWF0aC5pbXVsKEZyLHFuKSx5ZT15ZStNYXRoLmltdWwoYm4scG4pfDAsQ2U9''@;'; put 'put ''KENlPUNlK01hdGguaW11bChibixLbil8MCkrTWF0aC5pbXVsKGVyLHBuKXwwLERlPURlK01hdGguaW11bChlcixLbil8MCx5ZT15ZStNYXRoLmltdWwoeW4sc24pfDAsQ2U9KENlPUNlK01hdGguaW11bCh5bixVbil8MCkrTWF0aC5pbXVsKGxuLHNuKXwwLERlPURlK01hdGguaW11bChsbixV''@;'; put 'put ''bil8MCx5ZT15ZStNYXRoLmltdWwoSnQsdG4pfDAsQ2U9KENlPUNlK01hdGguaW11bChKdCx6bil8MCkrTWF0aC5pbXVsKGduLHRuKXwwLERlPURlK01hdGguaW11bChnbix6bil8MCx5ZT15ZStNYXRoLmltdWwoVWUsQm4pfDAsQ2U9KENlPUNlK01hdGguaW11bChVZSxrcil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKHl0LEJuKXwwLERlPURlK01hdGguaW11bCh5dCxrcil8MCx5ZT15ZStNYXRoLmltdWwoZnQsdW4pfDAsQ2U9KENlPUNlK01hdGguaW11bChmdCxjbil8MCkrTWF0aC5pbXVsKEh0LHVuKXwwLERlPURlK01hdGguaW11bChIdCxjbil8MCx5ZT15ZStNYXRoLmltdWwobHQsR3QpfDAsQ2U9''@;'; put 'put ''KENlPUNlK01hdGguaW11bChsdCxrbil8MCkrTWF0aC5pbXVsKEx0LEd0KXwwLERlPURlK01hdGguaW11bChMdCxrbil8MCx5ZT15ZStNYXRoLmltdWwoX3QsZW4pfDAsQ2U9KENlPUNlK01hdGguaW11bChfdCxJbil8MCkrTWF0aC5pbXVsKHR0LGVuKXwwLERlPURlK01hdGguaW11bCh0dCxJ''@;'; put 'put ''bil8MDt2YXIgRzA9KGd0Kyh5ZT15ZStNYXRoLmltdWwoaHQsb3IpfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChodCxncil8MCkrTWF0aC5pbXVsKEJ0LG9yKXwwKSk8PDEzKXwwO2d0PSgoRGU9RGUrTWF0aC5pbXVsKEJ0LGdyKXwwKSsoQ2U+Pj4xMyl8MCkrKEcwPj4+MjYp''@;'; put 'put ''fDAsRzAmPTY3MTA4ODYzLHllPU1hdGguaW11bChYbixwbiksQ2U9KENlPU1hdGguaW11bChYbixLbikpK01hdGguaW11bChGcixwbil8MCxEZT1NYXRoLmltdWwoRnIsS24pLHllPXllK01hdGguaW11bChibixzbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGJuLFVuKXwwKStNYXRoLmltdWwo''@;'; put 'put ''ZXIsc24pfDAsRGU9RGUrTWF0aC5pbXVsKGVyLFVuKXwwLHllPXllK01hdGguaW11bCh5bix0bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKHluLHpuKXwwKStNYXRoLmltdWwobG4sdG4pfDAsRGU9RGUrTWF0aC5pbXVsKGxuLHpuKXwwLHllPXllK01hdGguaW11bChKdCxCbil8MCxDZT0oQ2U9''@;'; put 'put ''Q2UrTWF0aC5pbXVsKEp0LGtyKXwwKStNYXRoLmltdWwoZ24sQm4pfDAsRGU9RGUrTWF0aC5pbXVsKGduLGtyKXwwLHllPXllK01hdGguaW11bChVZSx1bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKFVlLGNuKXwwKStNYXRoLmltdWwoeXQsdW4pfDAsRGU9RGUrTWF0aC5pbXVsKHl0LGNuKXww''@;'; put 'put ''LHllPXllK01hdGguaW11bChmdCxHdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGZ0LGtuKXwwKStNYXRoLmltdWwoSHQsR3QpfDAsRGU9RGUrTWF0aC5pbXVsKEh0LGtuKXwwLHllPXllK01hdGguaW11bChsdCxlbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGx0LEluKXwwKStNYXRoLmltdWwo''@;'; put 'put ''THQsZW4pfDAsRGU9RGUrTWF0aC5pbXVsKEx0LEluKXwwO3ZhciBEaT0oZ3QrKHllPXllK01hdGguaW11bChfdCxvcil8MCl8MCkrKCg4MTkxJihDZT0oQ2U9Q2UrTWF0aC5pbXVsKF90LGdyKXwwKStNYXRoLmltdWwodHQsb3IpfDApKTw8MTMpfDA7Z3Q9KChEZT1EZStNYXRoLmltdWwodHQs''@;'; put 'put ''Z3IpfDApKyhDZT4+PjEzKXwwKSsoRGk+Pj4yNil8MCxEaSY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKFhuLHNuKSxDZT0oQ2U9TWF0aC5pbXVsKFhuLFVuKSkrTWF0aC5pbXVsKEZyLHNuKXwwLERlPU1hdGguaW11bChGcixVbikseWU9eWUrTWF0aC5pbXVsKGJuLHRuKXwwLENlPShDZT1DZStN''@;'; put 'put ''YXRoLmltdWwoYm4sem4pfDApK01hdGguaW11bChlcix0bil8MCxEZT1EZStNYXRoLmltdWwoZXIsem4pfDAseWU9eWUrTWF0aC5pbXVsKHluLEJuKXwwLENlPShDZT1DZStNYXRoLmltdWwoeW4sa3IpfDApK01hdGguaW11bChsbixCbil8MCxEZT1EZStNYXRoLmltdWwobG4sa3IpfDAseWU9''@;'; put 'put ''eWUrTWF0aC5pbXVsKEp0LHVuKXwwLENlPShDZT1DZStNYXRoLmltdWwoSnQsY24pfDApK01hdGguaW11bChnbix1bil8MCxEZT1EZStNYXRoLmltdWwoZ24sY24pfDAseWU9eWUrTWF0aC5pbXVsKFVlLEd0KXwwLENlPShDZT1DZStNYXRoLmltdWwoVWUsa24pfDApK01hdGguaW11bCh5dCxH''@;'; put 'put ''dCl8MCxEZT1EZStNYXRoLmltdWwoeXQsa24pfDAseWU9eWUrTWF0aC5pbXVsKGZ0LGVuKXwwLENlPShDZT1DZStNYXRoLmltdWwoZnQsSW4pfDApK01hdGguaW11bChIdCxlbil8MCxEZT1EZStNYXRoLmltdWwoSHQsSW4pfDA7dmFyIFcwPShndCsoeWU9eWUrTWF0aC5pbXVsKGx0LG9yKXww''@;'; put 'put ''KXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwobHQsZ3IpfDApK01hdGguaW11bChMdCxvcil8MCkpPDwxMyl8MDtndD0oKERlPURlK01hdGguaW11bChMdCxncil8MCkrKENlPj4+MTMpfDApKyhXMD4+PjI2KXwwLFcwJj02NzEwODg2Myx5ZT1NYXRoLmltdWwoWG4sdG4pLENlPShD''@;'; put 'put ''ZT1NYXRoLmltdWwoWG4sem4pKStNYXRoLmltdWwoRnIsdG4pfDAsRGU9TWF0aC5pbXVsKEZyLHpuKSx5ZT15ZStNYXRoLmltdWwoYm4sQm4pfDAsQ2U9KENlPUNlK01hdGguaW11bChibixrcil8MCkrTWF0aC5pbXVsKGVyLEJuKXwwLERlPURlK01hdGguaW11bChlcixrcil8MCx5ZT15ZStN''@;'; put 'put ''YXRoLmltdWwoeW4sdW4pfDAsQ2U9KENlPUNlK01hdGguaW11bCh5bixjbil8MCkrTWF0aC5pbXVsKGxuLHVuKXwwLERlPURlK01hdGguaW11bChsbixjbil8MCx5ZT15ZStNYXRoLmltdWwoSnQsR3QpfDAsQ2U9KENlPUNlK01hdGguaW11bChKdCxrbil8MCkrTWF0aC5pbXVsKGduLEd0KXww''@;'; put 'put ''LERlPURlK01hdGguaW11bChnbixrbil8MCx5ZT15ZStNYXRoLmltdWwoVWUsZW4pfDAsQ2U9KENlPUNlK01hdGguaW11bChVZSxJbil8MCkrTWF0aC5pbXVsKHl0LGVuKXwwLERlPURlK01hdGguaW11bCh5dCxJbil8MDt2YXIgRW89KGd0Kyh5ZT15ZStNYXRoLmltdWwoZnQsb3IpfDApfDAp''@;'; put 'put ''KygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bChmdCxncil8MCkrTWF0aC5pbXVsKEh0LG9yKXwwKSk8PDEzKXwwO2d0PSgoRGU9RGUrTWF0aC5pbXVsKEh0LGdyKXwwKSsoQ2U+Pj4xMyl8MCkrKEVvPj4+MjYpfDAsRW8mPTY3MTA4ODYzLHllPU1hdGguaW11bChYbixCbiksQ2U9KENlPU1h''@;'; put 'put ''dGguaW11bChYbixrcikpK01hdGguaW11bChGcixCbil8MCxEZT1NYXRoLmltdWwoRnIsa3IpLHllPXllK01hdGguaW11bChibix1bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGJuLGNuKXwwKStNYXRoLmltdWwoZXIsdW4pfDAsRGU9RGUrTWF0aC5pbXVsKGVyLGNuKXwwLHllPXllK01hdGgu''@;'; put 'put ''aW11bCh5bixHdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKHluLGtuKXwwKStNYXRoLmltdWwobG4sR3QpfDAsRGU9RGUrTWF0aC5pbXVsKGxuLGtuKXwwLHllPXllK01hdGguaW11bChKdCxlbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEp0LEluKXwwKStNYXRoLmltdWwoZ24sZW4pfDAsRGU9''@;'; put 'put ''RGUrTWF0aC5pbXVsKGduLEluKXwwO3ZhciBxbz0oZ3QrKHllPXllK01hdGguaW11bChVZSxvcil8MCl8MCkrKCg4MTkxJihDZT0oQ2U9Q2UrTWF0aC5pbXVsKFVlLGdyKXwwKStNYXRoLmltdWwoeXQsb3IpfDApKTw8MTMpfDA7Z3Q9KChEZT1EZStNYXRoLmltdWwoeXQsZ3IpfDApKyhDZT4+''@;'; put 'put ''PjEzKXwwKSsocW8+Pj4yNil8MCxxbyY9NjcxMDg4NjMseWU9TWF0aC5pbXVsKFhuLHVuKSxDZT0oQ2U9TWF0aC5pbXVsKFhuLGNuKSkrTWF0aC5pbXVsKEZyLHVuKXwwLERlPU1hdGguaW11bChGcixjbikseWU9eWUrTWF0aC5pbXVsKGJuLEd0KXwwLENlPShDZT1DZStNYXRoLmltdWwoYm4s''@;'; put 'put ''a24pfDApK01hdGguaW11bChlcixHdCl8MCxEZT1EZStNYXRoLmltdWwoZXIsa24pfDAseWU9eWUrTWF0aC5pbXVsKHluLGVuKXwwLENlPShDZT1DZStNYXRoLmltdWwoeW4sSW4pfDApK01hdGguaW11bChsbixlbil8MCxEZT1EZStNYXRoLmltdWwobG4sSW4pfDA7dmFyIGNhPShndCsoeWU9''@;'; put 'put ''eWUrTWF0aC5pbXVsKEp0LG9yKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwoSnQsZ3IpfDApK01hdGguaW11bChnbixvcil8MCkpPDwxMyl8MDtndD0oKERlPURlK01hdGguaW11bChnbixncil8MCkrKENlPj4+MTMpfDApKyhjYT4+PjI2KXwwLGNhJj02NzEwODg2Myx5ZT1N''@;'; put 'put ''YXRoLmltdWwoWG4sR3QpLENlPShDZT1NYXRoLmltdWwoWG4sa24pKStNYXRoLmltdWwoRnIsR3QpfDAsRGU9TWF0aC5pbXVsKEZyLGtuKSx5ZT15ZStNYXRoLmltdWwoYm4sZW4pfDAsQ2U9KENlPUNlK01hdGguaW11bChibixJbil8MCkrTWF0aC5pbXVsKGVyLGVuKXwwLERlPURlK01hdGgu''@;'; put 'put ''aW11bChlcixJbil8MDt2YXIgbGw9KGd0Kyh5ZT15ZStNYXRoLmltdWwoeW4sb3IpfDApfDApKygoODE5MSYoQ2U9KENlPUNlK01hdGguaW11bCh5bixncil8MCkrTWF0aC5pbXVsKGxuLG9yKXwwKSk8PDEzKXwwO2d0PSgoRGU9RGUrTWF0aC5pbXVsKGxuLGdyKXwwKSsoQ2U+Pj4xMyl8MCkr''@;'; put 'put ''KGxsPj4+MjYpfDAsbGwmPTY3MTA4ODYzLHllPU1hdGguaW11bChYbixlbiksQ2U9KENlPU1hdGguaW11bChYbixJbikpK01hdGguaW11bChGcixlbil8MCxEZT1NYXRoLmltdWwoRnIsSW4pO3ZhciBRaT0oZ3QrKHllPXllK01hdGguaW11bChibixvcil8MCl8MCkrKCg4MTkxJihDZT0oQ2U9''@;'; put 'put ''Q2UrTWF0aC5pbXVsKGJuLGdyKXwwKStNYXRoLmltdWwoZXIsb3IpfDApKTw8MTMpfDA7Z3Q9KChEZT1EZStNYXRoLmltdWwoZXIsZ3IpfDApKyhDZT4+PjEzKXwwKSsoUWk+Pj4yNil8MCxRaSY9NjcxMDg4NjM7dmFyIE1hPShndCsoeWU9TWF0aC5pbXVsKFhuLG9yKSl8MCkrKCg4MTkxJihD''@;'; put 'put ''ZT0oQ2U9TWF0aC5pbXVsKFhuLGdyKSkrTWF0aC5pbXVsKEZyLG9yKXwwKSk8PDEzKXwwO3JldHVybiBndD0oKERlPU1hdGguaW11bChGcixncikpKyhDZT4+PjEzKXwwKSsoTWE+Pj4yNil8MCxNYSY9NjcxMDg4NjMsJGVbMF09S3IsJGVbMV09VnIsJGVbMl09aWksJGVbM109UnIsJGVbNF09''@;'; put 'put ''bGksJGVbNV09TWksJGVbNl09bzAsJGVbN109bjAsJGVbOF09ZDAsJGVbOV09bTAsJGVbMTBdPUcwLCRlWzExXT1EaSwkZVsxMl09VzAsJGVbMTNdPUVvLCRlWzE0XT1xbywkZVsxNV09Y2EsJGVbMTZdPWxsLCRlWzE3XT1RaSwkZVsxOF09TWEsMCE9PWd0JiYoJGVbMTldPWd0LEYubGVuZ3Ro''@;'; put 'put ''KyspLEZ9O2Z1bmN0aW9uIEllKFQsUyxGKXtGLm5lZ2F0aXZlPVMubmVnYXRpdmVeVC5uZWdhdGl2ZSxGLmxlbmd0aD1ULmxlbmd0aCtTLmxlbmd0aDtmb3IodmFyIHllPTAsQ2U9MCxEZT0wO0RlPEYubGVuZ3RoLTE7RGUrKyl7dmFyIFBlPUNlO0NlPTA7Zm9yKHZhciBRZT02NzEwODg2MyZ5''@;'; put 'put ''ZSwkZT1NYXRoLm1pbihEZSxTLmxlbmd0aC0xKSxndD1NYXRoLm1heCgwLERlLVQubGVuZ3RoKzEpO2d0PD0kZTtndCsrKXt2YXIgbXQ9KDB8VC53b3Jkc1tEZS1ndF0pKigwfFMud29yZHNbZ3RdKSx2dD02NzEwODg2MyZtdDtRZT02NzEwODg2MyYodnQ9dnQrUWV8MCksQ2UrPShQZT0oUGU9''@;'; put 'put ''UGUrKG10LzY3MTA4ODY0fDApfDApKyh2dD4+PjI2KXwwKT4+PjI2LFBlJj02NzEwODg2M31GLndvcmRzW0RlXT1RZSx5ZT1QZSxQZT1DZX1yZXR1cm4gMCE9PXllP0Yud29yZHNbRGVdPXllOkYubGVuZ3RoLS0sRi5fc3RyaXAoKX1mdW5jdGlvbiBUZShULFMsRil7cmV0dXJuIEllKFQsUyxG''@;'; put 'put ''KX1mdW5jdGlvbiBNZShULFMpe3RoaXMueD1ULHRoaXMueT1TfU1hdGguaW11bHx8KFNlPWtlKSxOLnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihULFMpe3ZhciBGPXRoaXMubGVuZ3RoK1QubGVuZ3RoO3JldHVybiAxMD09PXRoaXMubGVuZ3RoJiYxMD09PVQubGVuZ3RoP1NlKHRoaXMsVCxT''@;'; put 'put ''KTpGPDYzP2tlKHRoaXMsVCxTKTpGPDEwMjQ/SWUodGhpcyxULFMpOlRlKHRoaXMsVCxTKX0sTWUucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oVCl7Zm9yKHZhciBTPW5ldyBBcnJheShUKSxGPU4ucHJvdG90eXBlLl9jb3VudEJpdHMoVCktMSx5ZT0wO3llPFQ7eWUrKylTW3llXT10aGlz''@;'; put 'put ''LnJldkJpbih5ZSxGLFQpO3JldHVybiBTfSxNZS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKFQsUyxGKXtpZigwPT09VHx8VD09PUYtMSlyZXR1cm4gVDtmb3IodmFyIHllPTAsQ2U9MDtDZTxTO0NlKyspeWV8PSgxJlQpPDxTLUNlLTEsVD4+PTE7cmV0dXJuIHllfSxNZS5wcm90b3R5cGUu''@;'; put 'put ''cGVybXV0ZT1mdW5jdGlvbihULFMsRix5ZSxDZSxEZSl7Zm9yKHZhciBQZT0wO1BlPERlO1BlKyspeWVbUGVdPVNbVFtQZV1dLENlW1BlXT1GW1RbUGVdXX0sTWUucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihULFMsRix5ZSxDZSxEZSl7dGhpcy5wZXJtdXRlKERlLFQsUyxGLHllLENl''@;'; put 'put ''KTtmb3IodmFyIFBlPTE7UGU8Q2U7UGU8PD0xKWZvcih2YXIgUWU9UGU8PDEsJGU9TWF0aC5jb3MoMipNYXRoLlBJL1FlKSxndD1NYXRoLnNpbigyKk1hdGguUEkvUWUpLHd0PTA7d3Q8Q2U7d3QrPVFlKWZvcih2YXIgbXQ9JGUsdnQ9Z3QsQXQ9MDtBdDxQZTtBdCsrKXt2YXIgaHQ9Rlt3dCtB''@;'; put 'put ''dF0sQnQ9eWVbd3QrQXRdLG9uPUZbd3QrQXQrUGVdLF90PXllW3d0K0F0K1BlXSx0dD1tdCpvbi12dCpfdDtfdD1tdCpfdCt2dCpvbixGW3d0K0F0XT1odCsob249dHQpLHllW3d0K0F0XT1CdCtfdCxGW3d0K0F0K1BlXT1odC1vbix5ZVt3dCtBdCtQZV09QnQtX3QsQXQhPT1RZSYmKHR0PSRl''@;'; put 'put ''Km10LWd0KnZ0LHZ0PSRlKnZ0K2d0Km10LG10PXR0KX19LE1lLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbihULFMpe3ZhciBGPTF8TWF0aC5tYXgoUyxUKSx5ZT0xJkYsQ2U9MDtmb3IoRj1GLzJ8MDtGO0Y+Pj49MSlDZSsrO3JldHVybiAxPDxDZSsxK3llfSxNZS5wcm90b3R5cGUu''@;'; put 'put ''Y29uanVnYXRlPWZ1bmN0aW9uKFQsUyxGKXtpZighKEY8PTEpKWZvcih2YXIgeWU9MDt5ZTxGLzI7eWUrKyl7dmFyIENlPVRbeWVdO1RbeWVdPVRbRi15ZS0xXSxUW0YteWUtMV09Q2UsQ2U9U1t5ZV0sU1t5ZV09LVNbRi15ZS0xXSxTW0YteWUtMV09LUNlfX0sTWUucHJvdG90eXBlLm5vcm1h''@;'; put 'put ''bGl6ZTEzYj1mdW5jdGlvbihULFMpe2Zvcih2YXIgRj0wLHllPTA7eWU8Uy8yO3llKyspe3ZhciBDZT04MTkyKk1hdGgucm91bmQoVFsyKnllKzFdL1MpK01hdGgucm91bmQoVFsyKnllXS9TKStGO1RbeWVdPTY3MTA4ODYzJkNlLEY9Q2U8NjcxMDg4NjQ/MDpDZS82NzEwODg2NHwwfXJldHVy''@;'; put 'put ''biBUfSxNZS5wcm90b3R5cGUuY29udmVydDEzYj1mdW5jdGlvbihULFMsRix5ZSl7Zm9yKHZhciBDZT0wLERlPTA7RGU8UztEZSsrKUZbMipEZV09ODE5MSYoQ2UrPTB8VFtEZV0pLEZbMipEZSsxXT04MTkxJihDZT4+Pj0xMyksQ2U+Pj49MTM7Zm9yKERlPTIqUztEZTx5ZTsrK0RlKUZbRGVd''@;'; put 'put ''PTA7WSgwPT09Q2UpLFkoMD09KC04MTkyJkNlKSl9LE1lLnByb3RvdHlwZS5zdHViPWZ1bmN0aW9uKFQpe2Zvcih2YXIgUz1uZXcgQXJyYXkoVCksRj0wO0Y8VDtGKyspU1tGXT0wO3JldHVybiBTfSxNZS5wcm90b3R5cGUubXVscD1mdW5jdGlvbihULFMsRil7dmFyIHllPTIqdGhpcy5ndWVz''@;'; put 'put ''c0xlbjEzYihULmxlbmd0aCxTLmxlbmd0aCksQ2U9dGhpcy5tYWtlUkJUKHllKSxEZT10aGlzLnN0dWIoeWUpLFBlPW5ldyBBcnJheSh5ZSksUWU9bmV3IEFycmF5KHllKSwkZT1uZXcgQXJyYXkoeWUpLGd0PW5ldyBBcnJheSh5ZSksd3Q9bmV3IEFycmF5KHllKSxtdD1uZXcgQXJyYXkoeWUp''@;'; put 'put ''LHZ0PUYud29yZHM7dnQubGVuZ3RoPXllLHRoaXMuY29udmVydDEzYihULndvcmRzLFQubGVuZ3RoLFBlLHllKSx0aGlzLmNvbnZlcnQxM2IoUy53b3JkcyxTLmxlbmd0aCxndCx5ZSksdGhpcy50cmFuc2Zvcm0oUGUsRGUsUWUsJGUseWUsQ2UpLHRoaXMudHJhbnNmb3JtKGd0LERlLHd0LG10''@;'; put 'put ''LHllLENlKTtmb3IodmFyIEF0PTA7QXQ8eWU7QXQrKyl7dmFyIGh0PVFlW0F0XSp3dFtBdF0tJGVbQXRdKm10W0F0XTskZVtBdF09UWVbQXRdKm10W0F0XSskZVtBdF0qd3RbQXRdLFFlW0F0XT1odH1yZXR1cm4gdGhpcy5jb25qdWdhdGUoUWUsJGUseWUpLHRoaXMudHJhbnNmb3JtKFFlLCRl''@;'; put 'put ''LHZ0LERlLHllLENlKSx0aGlzLmNvbmp1Z2F0ZSh2dCxEZSx5ZSksdGhpcy5ub3JtYWxpemUxM2IodnQseWUpLEYubmVnYXRpdmU9VC5uZWdhdGl2ZV5TLm5lZ2F0aXZlLEYubGVuZ3RoPVQubGVuZ3RoK1MubGVuZ3RoLEYuX3N0cmlwKCl9LE4ucHJvdG90eXBlLm11bD1mdW5jdGlvbihUKXt2''@;'; put 'put ''YXIgUz1uZXcgTihudWxsKTtyZXR1cm4gUy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrVC5sZW5ndGgpLHRoaXMubXVsVG8oVCxTKX0sTi5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihUKXt2YXIgUz1uZXcgTihudWxsKTtyZXR1cm4gUy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgr''@;'; put 'put ''VC5sZW5ndGgpLFRlKHRoaXMsVCxTKX0sTi5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKFQsdGhpcyl9LE4ucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKFQpe3ZhciBTPVQ8MDtTJiYoVD0tVCksWSgibnVtYmVyIj09dHlwZW9mIFQpLFkoVDw2''@;'; put 'put ''NzEwODg2NCk7Zm9yKHZhciBGPTAseWU9MDt5ZTx0aGlzLmxlbmd0aDt5ZSsrKXt2YXIgQ2U9KDB8dGhpcy53b3Jkc1t5ZV0pKlQsRGU9KDY3MTA4ODYzJkNlKSsoNjcxMDg4NjMmRik7Rj4+PTI2LEYrPUNlLzY3MTA4ODY0fDAsRis9RGU+Pj4yNix0aGlzLndvcmRzW3llXT02NzEwODg2MyZE''@;'; put 'put ''ZX1yZXR1cm4gMCE9PUYmJih0aGlzLndvcmRzW3llXT1GLHRoaXMubGVuZ3RoKyspLFM/dGhpcy5pbmVnKCk6dGhpc30sTi5wcm90b3R5cGUubXVsbj1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKFQpfSxOLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5tdWwodGhpcyl9LE4ucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9LE4ucHJvdG90eXBlLnBvdz1mdW5jdGlvbihUKXt2YXIgUz1mdW5jdGlvbihEZSl7Zm9yKHZhciBQZT1uZXcgQXJyYXkoRGUuYml0TGVuZ3RoKCkpLFFlPTA7UWU8''@;'; put 'put ''UGUubGVuZ3RoO1FlKyspUGVbUWVdPURlLndvcmRzW1FlLzI2fDBdPj4+UWUlMjYmMTtyZXR1cm4gUGV9KFQpO2lmKDA9PT1TLmxlbmd0aClyZXR1cm4gbmV3IE4oMSk7Zm9yKHZhciBGPXRoaXMseWU9MDt5ZTxTLmxlbmd0aCYmMD09PVNbeWVdO3llKyssRj1GLnNxcigpKTtpZigrK3llPFMu''@;'; put 'put ''bGVuZ3RoKWZvcih2YXIgQ2U9Ri5zcXIoKTt5ZTxTLmxlbmd0aDt5ZSsrLENlPUNlLnNxcigpKTAhPT1TW3llXSYmKEY9Ri5tdWwoQ2UpKTtyZXR1cm4gRn0sTi5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKFQpe1koIm51bWJlciI9PXR5cGVvZiBUJiZUPj0wKTt2YXIgUyxGPVQlMjYseWU9''@;'; put 'put ''KFQtRikvMjYsQ2U9NjcxMDg4NjM+Pj4yNi1GPDwyNi1GO2lmKDAhPT1GKXt2YXIgRGU9MDtmb3IoUz0wO1M8dGhpcy5sZW5ndGg7UysrKXt2YXIgUGU9dGhpcy53b3Jkc1tTXSZDZTt0aGlzLndvcmRzW1NdPSgwfHRoaXMud29yZHNbU10pLVBlPDxGfERlLERlPVBlPj4+MjYtRn1EZSYmKHRo''@;'; put 'put ''aXMud29yZHNbU109RGUsdGhpcy5sZW5ndGgrKyl9aWYoMCE9PXllKXtmb3IoUz10aGlzLmxlbmd0aC0xO1M+PTA7Uy0tKXRoaXMud29yZHNbUyt5ZV09dGhpcy53b3Jkc1tTXTtmb3IoUz0wO1M8eWU7UysrKXRoaXMud29yZHNbU109MDt0aGlzLmxlbmd0aCs9eWV9cmV0dXJuIHRoaXMuX3N0''@;'; put 'put ''cmlwKCl9LE4ucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKFQpe3JldHVybiBZKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbihUKX0sTi5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKFQsUyxGKXt2YXIgeWU7WSgibnVtYmVyIj09dHlwZW9mIFQmJlQ+PTApLHllPVM/KFMtUyUyNikv''@;'; put 'put ''MjY6MDt2YXIgQ2U9VCUyNixEZT1NYXRoLm1pbigoVC1DZSkvMjYsdGhpcy5sZW5ndGgpLFBlPTY3MTA4ODYzXjY3MTA4ODYzPj4+Q2U8PENlLFFlPUY7aWYoeWUtPURlLHllPU1hdGgubWF4KDAseWUpLFFlKXtmb3IodmFyICRlPTA7JGU8RGU7JGUrKylRZS53b3Jkc1skZV09dGhpcy53b3Jk''@;'; put 'put ''c1skZV07UWUubGVuZ3RoPURlfWlmKDAhPT1EZSlpZih0aGlzLmxlbmd0aD5EZSlmb3IodGhpcy5sZW5ndGgtPURlLCRlPTA7JGU8dGhpcy5sZW5ndGg7JGUrKyl0aGlzLndvcmRzWyRlXT10aGlzLndvcmRzWyRlK0RlXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBn''@;'; put 'put ''dD0wO2ZvcigkZT10aGlzLmxlbmd0aC0xOyRlPj0wJiYoMCE9PWd0fHwkZT49eWUpOyRlLS0pe3ZhciB3dD0wfHRoaXMud29yZHNbJGVdO3RoaXMud29yZHNbJGVdPWd0PDwyNi1DZXx3dD4+PkNlLGd0PXd0JlBlfXJldHVybiBRZSYmMCE9PWd0JiYoUWUud29yZHNbUWUubGVuZ3RoKytdPWd0''@;'; put 'put ''KSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5fc3RyaXAoKX0sTi5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oVCxTLEYpe3JldHVybiBZKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihULFMsRil9LE4ucHJvdG90eXBlLnNobG49''@;'; put 'put ''ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihUKX0sTi5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oVCl9LE4ucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihUKX0sTi5w''@;'; put 'put ''cm90b3R5cGUudXNocm49ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oVCl9LE4ucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKFQpe1koIm51bWJlciI9PXR5cGVvZiBUJiZUPj0wKTt2YXIgUz1UJTI2LEY9KFQtUykvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9Rnx8ISh0''@;'; put 'put ''aGlzLndvcmRzW0ZdJjE8PFMpKX0sTi5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKFQpe1koIm51bWJlciI9PXR5cGVvZiBUJiZUPj0wKTt2YXIgUz1UJTI2LEY9KFQtUykvMjY7cmV0dXJuIFkoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVt''@;'; put 'put ''YmVycyIpLHRoaXMubGVuZ3RoPD1GP3RoaXM6KDAhPT1TJiZGKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oRix0aGlzLmxlbmd0aCksMCE9PVMmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+PlM8PFMpLHRoaXMuX3N0cmlwKCkpfSxOLnByb3RvdHlwZS5t''@;'; put 'put ''YXNrbj1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihUKX0sTi5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24oVCl7cmV0dXJuIFkoIm51bWJlciI9PXR5cGVvZiBUKSxZKFQ8NjcxMDg4NjQpLFQ8MD90aGlzLmlzdWJuKC1UKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhp''@;'; put 'put ''cy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPD1UPyh0aGlzLndvcmRzWzBdPVQtKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3VibihUKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oVCl9LE4ucHJvdG90''@;'; put 'put ''eXBlLl9pYWRkbj1mdW5jdGlvbihUKXt0aGlzLndvcmRzWzBdKz1UO2Zvcih2YXIgUz0wO1M8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbU10+PTY3MTA4ODY0O1MrKyl0aGlzLndvcmRzW1NdLT02NzEwODg2NCxTPT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW1MrMV09MTp0aGlzLndvcmRz''@;'; put 'put ''W1MrMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsUysxKSx0aGlzfSxOLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbihUKXtpZihZKCJudW1iZXIiPT10eXBlb2YgVCksWShUPDY3MTA4ODY0KSxUPDApcmV0dXJuIHRoaXMuaWFkZG4oLVQpO2lmKDAhPT10aGlz''@;'; put 'put ''Lm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbihUKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT1ULDE9PT10aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0x''@;'; put 'put ''O2Vsc2UgZm9yKHZhciBTPTA7Uzx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tTXTwwO1MrKyl0aGlzLndvcmRzW1NdKz02NzEwODg2NCx0aGlzLndvcmRzW1MrMV0tPTE7cmV0dXJuIHRoaXMuX3N0cmlwKCl9LE4ucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuY2xvbmUo''@;'; put 'put ''KS5pYWRkbihUKX0sTi5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKFQpfSxOLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxOLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5jbG9uZSgpLmlhYnMoKX0sTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKFQsUyxGKXt2YXIgeWUsQ2U7dGhpcy5fZXhwYW5kKFQubGVuZ3RoK0YpO3ZhciBQZT0wO2Zvcih5ZT0wO3llPFQubGVuZ3RoO3llKyspe0NlPSgwfHRoaXMud29yZHNbeWUrRl0pK1BlO3ZhciBRZT0o''@;'; put 'put ''MHxULndvcmRzW3llXSkqUztQZT0oKENlLT02NzEwODg2MyZRZSk+PjI2KS0oUWUvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1t5ZStGXT02NzEwODg2MyZDZX1mb3IoO3llPHRoaXMubGVuZ3RoLUY7eWUrKylQZT0oQ2U9KDB8dGhpcy53b3Jkc1t5ZStGXSkrUGUpPj4yNix0aGlzLndvcmRzW3ll''@;'; put 'put ''K0ZdPTY3MTA4ODYzJkNlO2lmKDA9PT1QZSlyZXR1cm4gdGhpcy5fc3RyaXAoKTtmb3IoWSgtMT09PVBlKSxQZT0wLHllPTA7eWU8dGhpcy5sZW5ndGg7eWUrKylQZT0oQ2U9LSgwfHRoaXMud29yZHNbeWVdKStQZSk+PjI2LHRoaXMud29yZHNbeWVdPTY3MTA4ODYzJkNlO3JldHVybiB0aGlz''@;'; put 'put ''Lm5lZ2F0aXZlPTEsdGhpcy5fc3RyaXAoKX0sTi5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oVCxTKXt2YXIgRix5ZT10aGlzLmNsb25lKCksQ2U9VCxEZT0wfENlLndvcmRzW0NlLmxlbmd0aC0xXTswIT0oRj0yNi10aGlzLl9jb3VudEJpdHMoRGUpKSYmKENlPUNlLnVzaGxuKEYpLHll''@;'; put 'put ''Lml1c2hsbihGKSxEZT0wfENlLndvcmRzW0NlLmxlbmd0aC0xXSk7dmFyIFBlLFFlPXllLmxlbmd0aC1DZS5sZW5ndGg7aWYoIm1vZCIhPT1TKXsoUGU9bmV3IE4obnVsbCkpLmxlbmd0aD1RZSsxLFBlLndvcmRzPW5ldyBBcnJheShQZS5sZW5ndGgpO2Zvcih2YXIgJGU9MDskZTxQZS5sZW5n''@;'; put 'put ''dGg7JGUrKylQZS53b3Jkc1skZV09MH12YXIgZ3Q9eWUuY2xvbmUoKS5faXNobG5zdWJtdWwoQ2UsMSxRZSk7MD09PWd0Lm5lZ2F0aXZlJiYoeWU9Z3QsUGUmJihQZS53b3Jkc1tRZV09MSkpO2Zvcih2YXIgd3Q9UWUtMTt3dD49MDt3dC0tKXt2YXIgbXQ9NjcxMDg4NjQqKDB8eWUud29yZHNb''@;'; put 'put ''Q2UubGVuZ3RoK3d0XSkrKDB8eWUud29yZHNbQ2UubGVuZ3RoK3d0LTFdKTtmb3IobXQ9TWF0aC5taW4obXQvRGV8MCw2NzEwODg2MykseWUuX2lzaGxuc3VibXVsKENlLG10LHd0KTswIT09eWUubmVnYXRpdmU7KW10LS0seWUubmVnYXRpdmU9MCx5ZS5faXNobG5zdWJtdWwoQ2UsMSx3dCks''@;'; put 'put ''eWUuaXNaZXJvKCl8fCh5ZS5uZWdhdGl2ZV49MSk7UGUmJihQZS53b3Jkc1t3dF09bXQpfXJldHVybiBQZSYmUGUuX3N0cmlwKCkseWUuX3N0cmlwKCksImRpdiIhPT1TJiYwIT09RiYmeWUuaXVzaHJuKEYpLHtkaXY6UGV8fG51bGwsbW9kOnllfX0sTi5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0''@;'; put 'put ''aW9uKFQsUyxGKXtyZXR1cm4gWSghVC5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBOKDApLG1vZDpuZXcgTigwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1ULm5lZ2F0aXZlPyhEZT10aGlzLm5lZygpLmRpdm1vZChULFMpLCJtb2QiIT09UyYmKHllPURlLmRpdi5uZWcoKSks''@;'; put 'put ''ImRpdiIhPT1TJiYoQ2U9RGUubW9kLm5lZygpLEYmJjAhPT1DZS5uZWdhdGl2ZSYmQ2UuaWFkZChUKSkse2Rpdjp5ZSxtb2Q6Q2V9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PVQubmVnYXRpdmU/KERlPXRoaXMuZGl2bW9kKFQubmVnKCksUyksIm1vZCIhPT1TJiYoeWU9RGUuZGl2Lm5lZygp''@;'; put 'put ''KSx7ZGl2OnllLG1vZDpEZS5tb2R9KTowIT0odGhpcy5uZWdhdGl2ZSZULm5lZ2F0aXZlKT8oRGU9dGhpcy5uZWcoKS5kaXZtb2QoVC5uZWcoKSxTKSwiZGl2IiE9PVMmJihDZT1EZS5tb2QubmVnKCksRiYmMCE9PUNlLm5lZ2F0aXZlJiZDZS5pc3ViKFQpKSx7ZGl2OkRlLmRpdixtb2Q6Q2V9''@;'; put 'put ''KTpULmxlbmd0aD50aGlzLmxlbmd0aHx8dGhpcy5jbXAoVCk8MD97ZGl2Om5ldyBOKDApLG1vZDp0aGlzfToxPT09VC5sZW5ndGg/ImRpdiI9PT1TP3tkaXY6dGhpcy5kaXZuKFQud29yZHNbMF0pLG1vZDpudWxsfToibW9kIj09PVM/e2RpdjpudWxsLG1vZDpuZXcgTih0aGlzLm1vZHJuKFQu''@;'; put 'put ''d29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oVC53b3Jkc1swXSksbW9kOm5ldyBOKHRoaXMubW9kcm4oVC53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KFQsUyk7dmFyIHllLENlLERlfSxOLnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuZGl2bW9kKFQsImRpdiIsITEp''@;'; put 'put ''LmRpdn0sTi5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmRpdm1vZChULCJtb2QiLCExKS5tb2R9LE4ucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuZGl2bW9kKFQsIm1vZCIsITApLm1vZH0sTi5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24o''@;'; put 'put ''VCl7dmFyIFM9dGhpcy5kaXZtb2QoVCk7aWYoUy5tb2QuaXNaZXJvKCkpcmV0dXJuIFMuZGl2O3ZhciBGPTAhPT1TLmRpdi5uZWdhdGl2ZT9TLm1vZC5pc3ViKFQpOlMubW9kLHllPVQudXNocm4oMSksQ2U9VC5hbmRsbigxKSxEZT1GLmNtcCh5ZSk7cmV0dXJuIERlPDB8fDE9PT1DZSYmMD09''@;'; put 'put ''PURlP1MuZGl2OjAhPT1TLmRpdi5uZWdhdGl2ZT9TLmRpdi5pc3VibigxKTpTLmRpdi5pYWRkbigxKX0sTi5wcm90b3R5cGUubW9kcm49ZnVuY3Rpb24oVCl7dmFyIFM9VDwwO1MmJihUPS1UKSxZKFQ8PTY3MTA4ODYzKTtmb3IodmFyIEY9NjcxMDg4NjQlVCx5ZT0wLENlPXRoaXMubGVuZ3Ro''@;'; put 'put ''LTE7Q2U+PTA7Q2UtLSl5ZT0oRip5ZSsoMHx0aGlzLndvcmRzW0NlXSkpJVQ7cmV0dXJuIFM/LXllOnllfSxOLnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLm1vZHJuKFQpfSxOLnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbihUKXt2YXIgUz1UPDA7UyYmKFQ9LVQpLFko''@;'; put 'put ''VDw9NjcxMDg4NjMpO2Zvcih2YXIgRj0wLHllPXRoaXMubGVuZ3RoLTE7eWU+PTA7eWUtLSl7dmFyIENlPSgwfHRoaXMud29yZHNbeWVdKSs2NzEwODg2NCpGO3RoaXMud29yZHNbeWVdPUNlL1R8MCxGPUNlJVR9cmV0dXJuIHRoaXMuX3N0cmlwKCksUz90aGlzLmluZWcoKTp0aGlzfSxOLnBy''@;'; put 'put ''b3RvdHlwZS5kaXZuPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmNsb25lKCkuaWRpdm4oVCl9LE4ucHJvdG90eXBlLmVnY2Q9ZnVuY3Rpb24oVCl7WSgwPT09VC5uZWdhdGl2ZSksWSghVC5pc1plcm8oKSk7dmFyIFM9dGhpcyxGPVQuY2xvbmUoKTtTPTAhPT1TLm5lZ2F0aXZlP1MudW1vZChU''@;'; put 'put ''KTpTLmNsb25lKCk7Zm9yKHZhciB5ZT1uZXcgTigxKSxDZT1uZXcgTigwKSxEZT1uZXcgTigwKSxQZT1uZXcgTigxKSxRZT0wO1MuaXNFdmVuKCkmJkYuaXNFdmVuKCk7KVMuaXVzaHJuKDEpLEYuaXVzaHJuKDEpLCsrUWU7Zm9yKHZhciAkZT1GLmNsb25lKCksZ3Q9Uy5jbG9uZSgpOyFTLmlz''@;'; put 'put ''WmVybygpOyl7Zm9yKHZhciB3dD0wLG10PTE7MD09KFMud29yZHNbMF0mbXQpJiZ3dDwyNjsrK3d0LG10PDw9MSk7aWYod3Q+MClmb3IoUy5pdXNocm4od3QpO3d0LS0gPjA7KSh5ZS5pc09kZCgpfHxDZS5pc09kZCgpKSYmKHllLmlhZGQoJGUpLENlLmlzdWIoZ3QpKSx5ZS5pdXNocm4oMSks''@;'; put 'put ''Q2UuaXVzaHJuKDEpO2Zvcih2YXIgdnQ9MCxBdD0xOzA9PShGLndvcmRzWzBdJkF0KSYmdnQ8MjY7Kyt2dCxBdDw8PTEpO2lmKHZ0PjApZm9yKEYuaXVzaHJuKHZ0KTt2dC0tID4wOykoRGUuaXNPZGQoKXx8UGUuaXNPZGQoKSkmJihEZS5pYWRkKCRlKSxQZS5pc3ViKGd0KSksRGUuaXVzaHJu''@;'; put 'put ''KDEpLFBlLml1c2hybigxKTtTLmNtcChGKT49MD8oUy5pc3ViKEYpLHllLmlzdWIoRGUpLENlLmlzdWIoUGUpKTooRi5pc3ViKFMpLERlLmlzdWIoeWUpLFBlLmlzdWIoQ2UpKX1yZXR1cm57YTpEZSxiOlBlLGdjZDpGLml1c2hsbihRZSl9fSxOLnByb3RvdHlwZS5faW52bXA9ZnVuY3Rpb24o''@;'; put 'put ''VCl7WSgwPT09VC5uZWdhdGl2ZSksWSghVC5pc1plcm8oKSk7dmFyIFM9dGhpcyxGPVQuY2xvbmUoKTtTPTAhPT1TLm5lZ2F0aXZlP1MudW1vZChUKTpTLmNsb25lKCk7Zm9yKHZhciB5ZSxDZT1uZXcgTigxKSxEZT1uZXcgTigwKSxQZT1GLmNsb25lKCk7Uy5jbXBuKDEpPjAmJkYuY21wbigx''@;'; put 'put ''KT4wOyl7Zm9yKHZhciBRZT0wLCRlPTE7MD09KFMud29yZHNbMF0mJGUpJiZRZTwyNjsrK1FlLCRlPDw9MSk7aWYoUWU+MClmb3IoUy5pdXNocm4oUWUpO1FlLS0gPjA7KUNlLmlzT2RkKCkmJkNlLmlhZGQoUGUpLENlLml1c2hybigxKTtmb3IodmFyIGd0PTAsd3Q9MTswPT0oRi53b3Jkc1sw''@;'; put 'put ''XSZ3dCkmJmd0PDI2OysrZ3Qsd3Q8PD0xKTtpZihndD4wKWZvcihGLml1c2hybihndCk7Z3QtLSA+MDspRGUuaXNPZGQoKSYmRGUuaWFkZChQZSksRGUuaXVzaHJuKDEpO1MuY21wKEYpPj0wPyhTLmlzdWIoRiksQ2UuaXN1YihEZSkpOihGLmlzdWIoUyksRGUuaXN1YihDZSkpfXJldHVybih5''@;'; put 'put ''ZT0wPT09Uy5jbXBuKDEpP0NlOkRlKS5jbXBuKDApPDAmJnllLmlhZGQoVCkseWV9LE4ucHJvdG90eXBlLmdjZD1mdW5jdGlvbihUKXtpZih0aGlzLmlzWmVybygpKXJldHVybiBULmFicygpO2lmKFQuaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIFM9dGhpcy5jbG9uZSgpLEY9VC5j''@;'; put 'put ''bG9uZSgpO1MubmVnYXRpdmU9MCxGLm5lZ2F0aXZlPTA7Zm9yKHZhciB5ZT0wO1MuaXNFdmVuKCkmJkYuaXNFdmVuKCk7eWUrKylTLml1c2hybigxKSxGLml1c2hybigxKTtmb3IoOzspe2Zvcig7Uy5pc0V2ZW4oKTspUy5pdXNocm4oMSk7Zm9yKDtGLmlzRXZlbigpOylGLml1c2hybigxKTt2''@;'; put 'put ''YXIgQ2U9Uy5jbXAoRik7aWYoQ2U8MCl7dmFyIERlPVM7Uz1GLEY9RGV9ZWxzZSBpZigwPT09Q2V8fDA9PT1GLmNtcG4oMSkpYnJlYWs7Uy5pc3ViKEYpfXJldHVybiBGLml1c2hsbih5ZSl9LE4ucHJvdG90eXBlLmludm09ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuZWdjZChUKS5hLnVtb2Qo''@;'; put 'put ''VCl9LE4ucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiAwPT0oMSZ0aGlzLndvcmRzWzBdKX0sTi5wcm90b3R5cGUuaXNPZGQ9ZnVuY3Rpb24oKXtyZXR1cm4gMT09KDEmdGhpcy53b3Jkc1swXSl9LE4ucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLndv''@;'; put 'put ''cmRzWzBdJlR9LE4ucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKFQpe1koIm51bWJlciI9PXR5cGVvZiBUKTt2YXIgUz1UJTI2LEY9KFQtUykvMjYseWU9MTw8UztpZih0aGlzLmxlbmd0aDw9RilyZXR1cm4gdGhpcy5fZXhwYW5kKEYrMSksdGhpcy53b3Jkc1tGXXw9eWUsdGhpcztmb3IodmFy''@;'; put 'put ''IENlPXllLERlPUY7MCE9PUNlJiZEZTx0aGlzLmxlbmd0aDtEZSsrKXt2YXIgUGU9MHx0aGlzLndvcmRzW0RlXTtDZT0oUGUrPUNlKT4+PjI2LHRoaXMud29yZHNbRGVdPVBlJj02NzEwODg2M31yZXR1cm4gMCE9PUNlJiYodGhpcy53b3Jkc1tEZV09Q2UsdGhpcy5sZW5ndGgrKyksdGhpc30s''@;'; put 'put ''Ti5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LE4ucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24oVCl7dmFyIFMsRj1UPDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiFGKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0''@;'; put 'put ''aXZlJiZGKXJldHVybiAxO2lmKHRoaXMuX3N0cmlwKCksdGhpcy5sZW5ndGg+MSlTPTE7ZWxzZXtGJiYoVD0tVCksWShUPD02NzEwODg2MywiTnVtYmVyIGlzIHRvbyBiaWciKTt2YXIgeWU9MHx0aGlzLndvcmRzWzBdO1M9eWU9PT1UPzA6eWU8VD8tMToxfXJldHVybiAwIT09dGhpcy5uZWdh''@;'; put 'put ''dGl2ZT8wfC1TOlN9LE4ucHJvdG90eXBlLmNtcD1mdW5jdGlvbihUKXtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PVQubmVnYXRpdmUpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1ULm5lZ2F0aXZlKXJldHVybiAxO3ZhciBTPXRoaXMudWNtcChUKTtyZXR1cm4gMCE9PXRo''@;'; put 'put ''aXMubmVnYXRpdmU/MHwtUzpTfSxOLnByb3RvdHlwZS51Y21wPWZ1bmN0aW9uKFQpe2lmKHRoaXMubGVuZ3RoPlQubGVuZ3RoKXJldHVybiAxO2lmKHRoaXMubGVuZ3RoPFQubGVuZ3RoKXJldHVybi0xO2Zvcih2YXIgUz0wLEY9dGhpcy5sZW5ndGgtMTtGPj0wO0YtLSl7dmFyIHllPTB8dGhp''@;'; put 'put ''cy53b3Jkc1tGXSxDZT0wfFQud29yZHNbRl07aWYoeWUhPT1DZSl7eWU8Q2U/Uz0tMTp5ZT5DZSYmKFM9MSk7YnJlYWt9fXJldHVybiBTfSxOLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oVCl7cmV0dXJuIDE9PT10aGlzLmNtcG4oVCl9LE4ucHJvdG90eXBlLmd0PWZ1bmN0aW9uKFQpe3JldHVy''@;'; put 'put ''biAxPT09dGhpcy5jbXAoVCl9LE4ucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuY21wbihUKT49MH0sTi5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmNtcChUKT49MH0sTi5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKFQpe3JldHVybi0xPT09dGhp''@;'; put 'put ''cy5jbXBuKFQpfSxOLnByb3RvdHlwZS5sdD1mdW5jdGlvbihUKXtyZXR1cm4tMT09PXRoaXMuY21wKFQpfSxOLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmNtcG4oVCk8PTB9LE4ucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5jbXAoVCk8PTB9''@;'; put 'put ''LE4ucHJvdG90eXBlLmVxbj1mdW5jdGlvbihUKXtyZXR1cm4gMD09PXRoaXMuY21wbihUKX0sTi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oVCl7cmV0dXJuIDA9PT10aGlzLmNtcChUKX0sTi5yZWQ9ZnVuY3Rpb24oVCl7cmV0dXJuIG5ldyBQKFQpfSxOLnByb3RvdHlwZS50b1JlZD1mdW5jdGlv''@;'; put 'put ''bihUKXtyZXR1cm4gWSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSxZKDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLFQuY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChUKX0sTi5wcm90b3R5cGUuZnJv''@;'; put 'put ''bVJlZD1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LE4ucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5y''@;'; put 'put ''ZWQ9VCx0aGlzfSxOLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbihUKXtyZXR1cm4gWSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZChUKX0sTi5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKFQpe3JldHVybiBZKHRo''@;'; put 'put ''aXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMsVCl9LE4ucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oVCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQu''@;'; put 'put ''aWFkZCh0aGlzLFQpfSxOLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oVCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyxUKX0sTi5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihUKXtyZXR1cm4gWSh0''@;'; put 'put ''aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMsVCl9LE4ucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbihUKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVk''@;'; put 'put ''LnNobCh0aGlzLFQpfSxOLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oVCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLFQpLHRoaXMucmVkLm11bCh0aGlzLFQpfSxOLnByb3RvdHlwZS5yZWRJ''@;'; put 'put ''TXVsPWZ1bmN0aW9uKFQpe3JldHVybiBZKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxUKSx0aGlzLnJlZC5pbXVsKHRoaXMsVCl9LE4ucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMu''@;'; put 'put ''cmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxOLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBu''@;'; put 'put ''dW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sTi5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMp''@;'; put 'put ''LHRoaXMucmVkLnNxcnQodGhpcyl9LE4ucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxOLnByb3RvdHlw''@;'; put 'put ''ZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sTi5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKFQpe3JldHVybiBZKHRoaXMu''@;'; put 'put ''cmVkJiYhVC5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsVCl9O3ZhciBoZT17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIE8oVCxTKXt0aGlzLm5hbWU9VCx0aGlzLnA9''@;'; put 'put ''bmV3IE4oUywxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IE4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIHooKXtPLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZm''@;'; put 'put ''ZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24gZWUoKXtPLmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gbmUoKXtPLmNhbGwo''@;'; put 'put ''dGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9ZnVuY3Rpb24geCgpe08uY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZm''@;'; put 'put ''ZmZmZWQiKX1mdW5jdGlvbiBQKFQpe2lmKCJzdHJpbmciPT10eXBlb2YgVCl7dmFyIFM9Ti5fcHJpbWUoVCk7dGhpcy5tPVMucCx0aGlzLnByaW1lPVN9ZWxzZSBZKFQuZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09VCx0aGlzLnByaW1lPW51bGx9ZnVu''@;'; put 'put ''Y3Rpb24gVihUKXtQLmNhbGwodGhpcyxUKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBOKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIu''@;'; put 'put ''c3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfU8ucHJvdG90''@;'; put 'put ''eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgVD1uZXcgTihudWxsKTtyZXR1cm4gVC53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLFR9LE8ucHJvdG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oVCl7dmFyIFMsRj1UO2Rve3RoaXMuc3BsaXQoRix0aGlzLnRtcCksUz0oRj0oRj10''@;'; put 'put ''aGlzLmltdWxLKEYpKS5pYWRkKHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUoUz50aGlzLm4pO3ZhciB5ZT1TPHRoaXMubj8tMTpGLnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PXllPyhGLndvcmRzWzBdPTAsRi5sZW5ndGg9MSk6eWU+MD9GLmlzdWIodGhpcy5wKTp2b2lkIDAhPT1GLnN0''@;'; put 'put ''cmlwP0Yuc3RyaXAoKTpGLl9zdHJpcCgpLEZ9LE8ucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKFQsUyl7VC5pdXNocm4odGhpcy5uLDAsUyl9LE8ucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKFQpe3JldHVybiBULmltdWwodGhpcy5rKX0sVyh6LE8pLHoucHJvdG90eXBlLnNwbGl0PWZ1bmN0''@;'; put 'put ''aW9uKFQsUyl7Zm9yKHZhciBGPTQxOTQzMDMseWU9TWF0aC5taW4oVC5sZW5ndGgsOSksQ2U9MDtDZTx5ZTtDZSsrKVMud29yZHNbQ2VdPVQud29yZHNbQ2VdO2lmKFMubGVuZ3RoPXllLFQubGVuZ3RoPD05KXJldHVybiBULndvcmRzWzBdPTAsdm9pZChULmxlbmd0aD0xKTt2YXIgRGU9VC53''@;'; put 'put ''b3Jkc1s5XTtmb3IoUy53b3Jkc1tTLmxlbmd0aCsrXT1EZSZGLENlPTEwO0NlPFQubGVuZ3RoO0NlKyspe3ZhciBQZT0wfFQud29yZHNbQ2VdO1Qud29yZHNbQ2UtMTBdPShQZSZGKTw8NHxEZT4+PjIyLERlPVBlfVQud29yZHNbQ2UtMTBdPURlPj4+PTIyLFQubGVuZ3RoLT0wPT09RGUmJlQu''@;'; put 'put ''bGVuZ3RoPjEwPzEwOjl9LHoucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKFQpe1Qud29yZHNbVC5sZW5ndGhdPTAsVC53b3Jkc1tULmxlbmd0aCsxXT0wLFQubGVuZ3RoKz0yO2Zvcih2YXIgUz0wLEY9MDtGPFQubGVuZ3RoO0YrKyl7dmFyIHllPTB8VC53b3Jkc1tGXTtULndvcmRzW0ZdPTY3''@;'; put 'put ''MTA4ODYzJihTKz05NzcqeWUpLFM9NjQqeWUrKFMvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1ULndvcmRzW1QubGVuZ3RoLTFdJiYoVC5sZW5ndGgtLSwwPT09VC53b3Jkc1tULmxlbmd0aC0xXSYmVC5sZW5ndGgtLSksVH0sVyhlZSxPKSxXKG5lLE8pLFcoeCxPKSx4LnByb3RvdHlwZS5pbXVs''@;'; put 'put ''Sz1mdW5jdGlvbihUKXtmb3IodmFyIFM9MCxGPTA7RjxULmxlbmd0aDtGKyspe3ZhciB5ZT0xOSooMHxULndvcmRzW0ZdKStTLENlPTY3MTA4ODYzJnllO3llPj4+PTI2LFQud29yZHNbRl09Q2UsUz15ZX1yZXR1cm4gMCE9PVMmJihULndvcmRzW1QubGVuZ3RoKytdPVMpLFR9LE4uX3ByaW1l''@;'; put 'put ''PWZ1bmN0aW9uKFQpe2lmKGhlW1RdKXJldHVybiBoZVtUXTt2YXIgUztpZigiazI1NiI9PT1UKVM9bmV3IHo7ZWxzZSBpZigicDIyNCI9PT1UKVM9bmV3IGVlO2Vsc2UgaWYoInAxOTIiPT09VClTPW5ldyBuZTtlbHNle2lmKCJwMjU1MTkiIT09VCl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24g''@;'; put 'put ''cHJpbWUgIitUKTtTPW5ldyB4fXJldHVybiBoZVtUXT1TLFN9LFAucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKFQpe1koMD09PVQubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksWShULnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxQ''@;'; put 'put ''LnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihULFMpe1koMD09KFQubmVnYXRpdmV8Uy5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksWShULnJlZCYmVC5yZWQ9PT1TLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxQLnByb3RvdHlw''@;'; put 'put ''ZS5pbW9kPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZShUKS5fZm9yY2VSZWQodGhpcyk6KG9lKFQsVC51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpKSxUKX0sUC5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKFQpe3JldHVybiBULmlzWmVybygpP1Qu''@;'; put 'put ''Y2xvbmUoKTp0aGlzLm0uc3ViKFQpLl9mb3JjZVJlZCh0aGlzKX0sUC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKFQsUyl7dGhpcy5fdmVyaWZ5MihULFMpO3ZhciBGPVQuYWRkKFMpO3JldHVybiBGLmNtcCh0aGlzLm0pPj0wJiZGLmlzdWIodGhpcy5tKSxGLl9mb3JjZVJlZCh0aGlzKX0sUC5w''@;'; put 'put ''cm90b3R5cGUuaWFkZD1mdW5jdGlvbihULFMpe3RoaXMuX3ZlcmlmeTIoVCxTKTt2YXIgRj1ULmlhZGQoUyk7cmV0dXJuIEYuY21wKHRoaXMubSk+PTAmJkYuaXN1Yih0aGlzLm0pLEZ9LFAucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihULFMpe3RoaXMuX3ZlcmlmeTIoVCxTKTt2YXIgRj1ULnN1''@;'; put 'put ''YihTKTtyZXR1cm4gRi5jbXBuKDApPDAmJkYuaWFkZCh0aGlzLm0pLEYuX2ZvcmNlUmVkKHRoaXMpfSxQLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKFQsUyl7dGhpcy5fdmVyaWZ5MihULFMpO3ZhciBGPVQuaXN1YihTKTtyZXR1cm4gRi5jbXBuKDApPDAmJkYuaWFkZCh0aGlzLm0pLEZ9LFAu''@;'; put 'put ''cHJvdG90eXBlLnNobD1mdW5jdGlvbihULFMpe3JldHVybiB0aGlzLl92ZXJpZnkxKFQpLHRoaXMuaW1vZChULnVzaGxuKFMpKX0sUC5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihULFMpe3JldHVybiB0aGlzLl92ZXJpZnkyKFQsUyksdGhpcy5pbW9kKFQuaW11bChTKSl9LFAucHJvdG90eXBl''@;'; put 'put ''Lm11bD1mdW5jdGlvbihULFMpe3JldHVybiB0aGlzLl92ZXJpZnkyKFQsUyksdGhpcy5pbW9kKFQubXVsKFMpKX0sUC5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5pbXVsKFQsVC5jbG9uZSgpKX0sUC5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlz''@;'; put 'put ''Lm11bChULFQpfSxQLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKFQpe2lmKFQuaXNaZXJvKCkpcmV0dXJuIFQuY2xvbmUoKTt2YXIgUz10aGlzLm0uYW5kbG4oMyk7aWYoWShTJTI9PTEpLDM9PT1TKXt2YXIgRj10aGlzLm0uYWRkKG5ldyBOKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93''@;'; put 'put ''KFQsRil9Zm9yKHZhciB5ZT10aGlzLm0uc3VibigxKSxDZT0wOyF5ZS5pc1plcm8oKSYmMD09PXllLmFuZGxuKDEpOylDZSsrLHllLml1c2hybigxKTtZKCF5ZS5pc1plcm8oKSk7dmFyIERlPW5ldyBOKDEpLnRvUmVkKHRoaXMpLFBlPURlLnJlZE5lZygpLFFlPXRoaXMubS5zdWJuKDEpLml1''@;'; put 'put ''c2hybigxKSwkZT10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKCRlPW5ldyBOKDIqJGUqJGUpLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdygkZSxRZSkuY21wKFBlKTspJGUucmVkSUFkZChQZSk7Zm9yKHZhciBndD10aGlzLnBvdygkZSx5ZSksd3Q9dGhpcy5wb3coVCx5ZS5hZGRuKDEpLml1c2hy''@;'; put 'put ''bigxKSksbXQ9dGhpcy5wb3coVCx5ZSksdnQ9Q2U7MCE9PW10LmNtcChEZSk7KXtmb3IodmFyIEF0PW10LGh0PTA7MCE9PUF0LmNtcChEZSk7aHQrKylBdD1BdC5yZWRTcXIoKTtZKGh0PHZ0KTt2YXIgQnQ9dGhpcy5wb3coZ3QsbmV3IE4oMSkuaXVzaGxuKHZ0LWh0LTEpKTt3dD13dC5yZWRN''@;'; put 'put ''dWwoQnQpLGd0PUJ0LnJlZFNxcigpLG10PW10LnJlZE11bChndCksdnQ9aHR9cmV0dXJuIHd0fSxQLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKFQpe3ZhciBTPVQuX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT1TLm5lZ2F0aXZlPyhTLm5lZ2F0aXZlPTAsdGhpcy5pbW9kKFMpLnJlZE5lZygp''@;'; put 'put ''KTp0aGlzLmltb2QoUyl9LFAucHJvdG90eXBlLnBvdz1mdW5jdGlvbihULFMpe2lmKFMuaXNaZXJvKCkpcmV0dXJuIG5ldyBOKDEpLnRvUmVkKHRoaXMpO2lmKDA9PT1TLmNtcG4oMSkpcmV0dXJuIFQuY2xvbmUoKTt2YXIgRj1uZXcgQXJyYXkoMTYpO0ZbMF09bmV3IE4oMSkudG9SZWQodGhp''@;'; put 'put ''cyksRlsxXT1UO2Zvcih2YXIgeWU9Mjt5ZTxGLmxlbmd0aDt5ZSsrKUZbeWVdPXRoaXMubXVsKEZbeWUtMV0sVCk7dmFyIENlPUZbMF0sRGU9MCxQZT0wLFFlPVMuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1RZSYmKFFlPTI2KSx5ZT1TLmxlbmd0aC0xO3llPj0wO3llLS0pe2Zvcih2YXIgJGU9''@;'; put 'put ''Uy53b3Jkc1t5ZV0sZ3Q9UWUtMTtndD49MDtndC0tKXt2YXIgd3Q9JGU+Pmd0JjE7Q2UhPT1GWzBdJiYoQ2U9dGhpcy5zcXIoQ2UpKSwwIT09d3R8fDAhPT1EZT8oRGU8PD0xLERlfD13dCwoND09KytQZXx8MD09PXllJiYwPT09Z3QpJiYoQ2U9dGhpcy5tdWwoQ2UsRltEZV0pLFBlPTAsRGU9''@;'; put 'put ''MCkpOlBlPTB9UWU9MjZ9cmV0dXJuIENlfSxQLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oVCl7dmFyIFM9VC51bW9kKHRoaXMubSk7cmV0dXJuIFM9PT1UP1MuY2xvbmUoKTpTfSxQLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihUKXt2YXIgUz1ULmNsb25lKCk7cmV0dXJu''@;'; put 'put ''IFMucmVkPW51bGwsU30sTi5tb250PWZ1bmN0aW9uKFQpe3JldHVybiBuZXcgVihUKX0sVyhWLFApLFYucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy5pbW9kKFQudXNobG4odGhpcy5zaGlmdCkpfSxWLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihU''@;'; put 'put ''KXt2YXIgUz10aGlzLmltb2QoVC5tdWwodGhpcy5yaW52KSk7cmV0dXJuIFMucmVkPW51bGwsU30sVi5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihULFMpe2lmKFQuaXNaZXJvKCl8fFMuaXNaZXJvKCkpcmV0dXJuIFQud29yZHNbMF09MCxULmxlbmd0aD0xLFQ7dmFyIEY9VC5pbXVsKFMpLHll''@;'; put 'put ''PUYubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLENlPUYuaXN1Yih5ZSkuaXVzaHJuKHRoaXMuc2hpZnQpLERlPUNlO3JldHVybiBDZS5jbXAodGhpcy5tKT49MD9EZT1DZS5pc3ViKHRoaXMubSk6Q2UuY21wbigwKTwwJiYo''@;'; put 'put ''RGU9Q2UuaWFkZCh0aGlzLm0pKSxEZS5fZm9yY2VSZWQodGhpcyl9LFYucHJvdG90eXBlLm11bD1mdW5jdGlvbihULFMpe2lmKFQuaXNaZXJvKCl8fFMuaXNaZXJvKCkpcmV0dXJuIG5ldyBOKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgRj1ULm11bChTKSx5ZT1GLm1hc2tuKHRoaXMuc2hpZnQp''@;'; put 'put ''Lm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxDZT1GLmlzdWIoeWUpLml1c2hybih0aGlzLnNoaWZ0KSxEZT1DZTtyZXR1cm4gQ2UuY21wKHRoaXMubSk+PTA/RGU9Q2UuaXN1Yih0aGlzLm0pOkNlLmNtcG4oMCk8MCYmKERlPUNlLmlhZGQodGhpcy5tKSks''@;'; put 'put ''RGUuX2ZvcmNlUmVkKHRoaXMpfSxWLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmltb2QoVC5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KFU9ai5ubWQoVSksdGhpcyl9LDM2NDQ6KFUsUSxqKT0+e3ZhciByZT1qKDEwNDgpLGFl''@;'; put 'put ''PWooNTYyMyk7VS5leHBvcnRzPWZ1bmN0aW9uKFNlKXtyZXR1cm4gU2U/KCJ7fSI9PT1TZS5zdWJzdHIoMCwyKSYmKFNlPSJcXHtcXH0iK1NlLnN1YnN0cigyKSksa2UoKEllPVNlLEllLnNwbGl0KCJcXFxcIikuam9pbihZKS5zcGxpdCgiXFx7Iikuam9pbihXKS5zcGxpdCgiXFx9Iikuam9p''@;'; put 'put ''bihOKS5zcGxpdCgiXFwsIikuam9pbih0ZSkuc3BsaXQoIlxcLiIpLmpvaW4oSykpLCEwKS5tYXAoc2UpKTpbXTt2YXIgSWV9O3ZhciBZPSJcMFNMQVNIIitNYXRoLnJhbmRvbSgpKyJcMCIsVz0iXDBPUEVOIitNYXRoLnJhbmRvbSgpKyJcMCIsTj0iXDBDTE9TRSIrTWF0aC5yYW5kb20oKSsi''@;'; put 'put ''XDAiLHRlPSJcMENPTU1BIitNYXRoLnJhbmRvbSgpKyJcMCIsSz0iXDBQRVJJT0QiK01hdGgucmFuZG9tKCkrIlwwIjtmdW5jdGlvbiBKKFNlKXtyZXR1cm4gcGFyc2VJbnQoU2UsMTApPT1TZT9wYXJzZUludChTZSwxMCk6U2UuY2hhckNvZGVBdCgwKX1mdW5jdGlvbiBzZShTZSl7cmV0dXJu''@;'; put 'put ''IFNlLnNwbGl0KFkpLmpvaW4oIlxcIikuc3BsaXQoVykuam9pbigieyIpLnNwbGl0KE4pLmpvaW4oIn0iKS5zcGxpdCh0ZSkuam9pbigiLCIpLnNwbGl0KEspLmpvaW4oIi4iKX1mdW5jdGlvbiBvZShTZSl7aWYoIVNlKXJldHVyblsiIl07dmFyIEllPVtdLFRlPWFlKCJ7IiwifSIsU2UpO2lm''@;'; put 'put ''KCFUZSlyZXR1cm4gU2Uuc3BsaXQoIiwiKTt2YXIgaGU9VGUuYm9keSxPPVRlLnBvc3Qsej1UZS5wcmUuc3BsaXQoIiwiKTt6W3oubGVuZ3RoLTFdKz0ieyIraGUrIn0iO3ZhciBlZT1vZShPKTtyZXR1cm4gTy5sZW5ndGgmJih6W3oubGVuZ3RoLTFdKz1lZS5zaGlmdCgpLHoucHVzaC5hcHBs''@;'; put 'put ''eSh6LGVlKSksSWUucHVzaC5hcHBseShJZSx6KSxJZX1mdW5jdGlvbiBjZShTZSl7cmV0dXJuInsiK1NlKyJ9In1mdW5jdGlvbiBkZShTZSl7cmV0dXJuL14tPzBcZC8udGVzdChTZSl9ZnVuY3Rpb24gdmUoU2UsSWUpe3JldHVybiBTZTw9SWV9ZnVuY3Rpb24gQWUoU2UsSWUpe3JldHVybiBT''@;'; put 'put ''ZT49SWV9ZnVuY3Rpb24ga2UoU2UsSWUpe3ZhciBUZT1bXSxNZT1hZSgieyIsIn0iLFNlKTtpZighTWV8fC9cJCQvLnRlc3QoTWUucHJlKSlyZXR1cm5bU2VdO3ZhciBoZSxPPS9eLT9cZCtcLlwuLT9cZCsoPzpcLlwuLT9cZCspPyQvLnRlc3QoTWUuYm9keSksej0vXlthLXpBLVpdXC5cLlth''@;'; put 'put ''LXpBLVpdKD86XC5cLi0/XGQrKT8kLy50ZXN0KE1lLmJvZHkpLGVlPU98fHosbmU9TWUuYm9keS5pbmRleE9mKCIsIik+PTA7aWYoIWVlJiYhbmUpcmV0dXJuIE1lLnBvc3QubWF0Y2goLywuKlx9Lyk/a2UoU2U9TWUucHJlKyJ7IitNZS5ib2R5K04rTWUucG9zdCk6W1NlXTtpZihlZSloZT1N''@;'; put 'put ''ZS5ib2R5LnNwbGl0KC9cLlwuLyk7ZWxzZSBpZigxPT09KGhlPW9lKE1lLmJvZHkpKS5sZW5ndGgmJjE9PT0oaGU9a2UoaGVbMF0sITEpLm1hcChjZSkpLmxlbmd0aClyZXR1cm4oVj1NZS5wb3N0Lmxlbmd0aD9rZShNZS5wb3N0LCExKTpbIiJdKS5tYXAoZnVuY3Rpb24oQXQpe3JldHVybiBN''@;'; put 'put ''ZS5wcmUraGVbMF0rQXR9KTt2YXIgeCxQPU1lLnByZSxWPU1lLnBvc3QubGVuZ3RoP2tlKE1lLnBvc3QsITEpOlsiIl07aWYoZWUpe3ZhciBUPUooaGVbMF0pLFM9SihoZVsxXSksRj1NYXRoLm1heChoZVswXS5sZW5ndGgsaGVbMV0ubGVuZ3RoKSx5ZT0zPT1oZS5sZW5ndGg/TWF0aC5hYnMo''@;'; put 'put ''SihoZVsyXSkpOjEsQ2U9dmU7UzxUJiYoeWUqPS0xLENlPUFlKTt2YXIgRGU9aGUuc29tZShkZSk7eD1bXTtmb3IodmFyIFBlPVQ7Q2UoUGUsUyk7UGUrPXllKXt2YXIgUWU7aWYoeikiXFwiPT09KFFlPVN0cmluZy5mcm9tQ2hhckNvZGUoUGUpKSYmKFFlPSIiKTtlbHNlIGlmKFFlPVN0cmlu''@;'; put 'put ''ZyhQZSksRGUpe3ZhciAkZT1GLVFlLmxlbmd0aDtpZigkZT4wKXt2YXIgZ3Q9bmV3IEFycmF5KCRlKzEpLmpvaW4oIjAiKTtRZT1QZTwwPyItIitndCtRZS5zbGljZSgxKTpndCtRZX19eC5wdXNoKFFlKX19ZWxzZSB4PXJlKGhlLGZ1bmN0aW9uKEF0KXtyZXR1cm4ga2UoQXQsITEpfSk7Zm9y''@;'; put 'put ''KHZhciB3dD0wO3d0PHgubGVuZ3RoO3d0KyspZm9yKHZhciBtdD0wO210PFYubGVuZ3RoO210Kyspe3ZhciB2dD1QK3hbd3RdK1ZbbXRdOyghSWV8fGVlfHx2dCkmJlRlLnB1c2godnQpfXJldHVybiBUZX19LDk5MzE6KFUsUSxqKT0+e3ZhciByZTtmdW5jdGlvbiBhZShXKXt0aGlzLnJhbmQ9''@;'; put 'put ''V31pZihVLmV4cG9ydHM9ZnVuY3Rpb24oVyl7cmV0dXJuIHJlfHwocmU9bmV3IGFlKG51bGwpKSxyZS5nZW5lcmF0ZShXKX0sVS5leHBvcnRzLlJhbmQ9YWUsYWUucHJvdG90eXBlLmdlbmVyYXRlPWZ1bmN0aW9uKFcpe3JldHVybiB0aGlzLl9yYW5kKFcpfSxhZS5wcm90b3R5cGUuX3JhbmQ9''@;'; put 'put ''ZnVuY3Rpb24oVyl7aWYodGhpcy5yYW5kLmdldEJ5dGVzKXJldHVybiB0aGlzLnJhbmQuZ2V0Qnl0ZXMoVyk7Zm9yKHZhciBOPW5ldyBVaW50OEFycmF5KFcpLHRlPTA7dGU8Ti5sZW5ndGg7dGUrKylOW3RlXT10aGlzLnJhbmQuZ2V0Qnl0ZSgpO3JldHVybiBOfSwib2JqZWN0Ij09dHlwZW9m''@;'; put 'put ''IHNlbGYpc2VsZi5jcnlwdG8mJnNlbGYuY3J5cHRvLmdldFJhbmRvbVZhbHVlcz9hZS5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rpb24oVyl7dmFyIE49bmV3IFVpbnQ4QXJyYXkoVyk7cmV0dXJuIHNlbGYuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhOKSxOfTpzZWxmLm1zQ3J5cHRvJiZzZWxmLm1z''@;'; put 'put ''Q3J5cHRvLmdldFJhbmRvbVZhbHVlcz9hZS5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rpb24oVyl7dmFyIE49bmV3IFVpbnQ4QXJyYXkoVyk7cmV0dXJuIHNlbGYubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKE4pLE59OiJvYmplY3QiPT10eXBlb2Ygd2luZG93JiYoYWUucHJvdG90eXBlLl9yYW5k''@;'; put 'put ''PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQgeWV0Iil9KTtlbHNlIHRyeXt2YXIgWT1qKDkyMTQpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBZLnJhbmRvbUJ5dGVzKXRocm93IG5ldyBFcnJvcigiTm90IHN1cHBvcnRlZCIpO2FlLnByb3RvdHlwZS5fcmFuZD1m''@;'; put 'put ''dW5jdGlvbihXKXtyZXR1cm4gWS5yYW5kb21CeXRlcyhXKX19Y2F0Y2goVyl7fX0sNDQ5NzooVSxRLGopPT57dmFyIHJlPWooOTUwOSkuQnVmZmVyO2Z1bmN0aW9uIGFlKEope3JlLmlzQnVmZmVyKEopfHwoSj1yZS5mcm9tKEopKTtmb3IodmFyIHNlPUoubGVuZ3RoLzR8MCxvZT1uZXcgQXJy''@;'; put 'put ''YXkoc2UpLGNlPTA7Y2U8c2U7Y2UrKylvZVtjZV09Si5yZWFkVUludDMyQkUoNCpjZSk7cmV0dXJuIG9lfWZ1bmN0aW9uIFkoSil7Zm9yKDswPEoubGVuZ3RoO0orKylKWzBdPTB9ZnVuY3Rpb24gVyhKLHNlLG9lLGNlLGRlKXtmb3IodmFyIHZlLEFlLGtlLFNlLEllPW9lWzBdLFRlPW9lWzFd''@;'; put 'put ''LE1lPW9lWzJdLGhlPW9lWzNdLE89SlswXV5zZVswXSx6PUpbMV1ec2VbMV0sZWU9SlsyXV5zZVsyXSxuZT1KWzNdXnNlWzNdLHg9NCxQPTE7UDxkZTtQKyspdmU9SWVbTz4+PjI0XV5UZVt6Pj4+MTYmMjU1XV5NZVtlZT4+PjgmMjU1XV5oZVsyNTUmbmVdXnNlW3grK10sQWU9SWVbej4+PjI0''@;'; put 'put ''XV5UZVtlZT4+PjE2JjI1NV1eTWVbbmU+Pj44JjI1NV1eaGVbMjU1Jk9dXnNlW3grK10sa2U9SWVbZWU+Pj4yNF1eVGVbbmU+Pj4xNiYyNTVdXk1lW08+Pj44JjI1NV1eaGVbMjU1JnpdXnNlW3grK10sU2U9SWVbbmU+Pj4yNF1eVGVbTz4+PjE2JjI1NV1eTWVbej4+PjgmMjU1XV5oZVsyNTUm''@;'; put 'put ''ZWVdXnNlW3grK10sTz12ZSx6PUFlLGVlPWtlLG5lPVNlO3JldHVybiB2ZT0oY2VbTz4+PjI0XTw8MjR8Y2Vbej4+PjE2JjI1NV08PDE2fGNlW2VlPj4+OCYyNTVdPDw4fGNlWzI1NSZuZV0pXnNlW3grK10sQWU9KGNlW3o+Pj4yNF08PDI0fGNlW2VlPj4+MTYmMjU1XTw8MTZ8Y2VbbmU+Pj44''@;'; put 'put ''JjI1NV08PDh8Y2VbMjU1Jk9dKV5zZVt4KytdLGtlPShjZVtlZT4+PjI0XTw8MjR8Y2VbbmU+Pj4xNiYyNTVdPDwxNnxjZVtPPj4+OCYyNTVdPDw4fGNlWzI1NSZ6XSlec2VbeCsrXSxTZT0oY2VbbmU+Pj4yNF08PDI0fGNlW08+Pj4xNiYyNTVdPDwxNnxjZVt6Pj4+OCYyNTVdPDw4fGNlWzI1''@;'; put 'put ''NSZlZV0pXnNlW3grK10sW3ZlPj4+PTAsQWU+Pj49MCxrZT4+Pj0wLFNlPj4+PTBdfXZhciBOPVswLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0XSx0ZT1mdW5jdGlvbigpe2Zvcih2YXIgSj1uZXcgQXJyYXkoMjU2KSxzZT0wO3NlPDI1NjtzZSsrKUpbc2VdPXNlPDEyOD9zZTw8MTpzZTw8''@;'; put 'put ''MV4yODM7Zm9yKHZhciBvZT1bXSxjZT1bXSxkZT1bW10sW10sW10sW11dLHZlPVtbXSxbXSxbXSxbXV0sQWU9MCxrZT0wLFNlPTA7U2U8MjU2OysrU2Upe3ZhciBJZT1rZV5rZTw8MV5rZTw8Ml5rZTw8M15rZTw8NDtvZVtBZV09SWU9SWU+Pj44XjI1NSZJZV45OSxjZVtJZV09QWU7dmFyIFRl''@;'; put 'put ''PUpbQWVdLE1lPUpbVGVdLGhlPUpbTWVdLE89MjU3KkpbSWVdXjE2ODQzMDA4KkllO2RlWzBdW0FlXT1PPDwyNHxPPj4+OCxkZVsxXVtBZV09Tzw8MTZ8Tz4+PjE2LGRlWzJdW0FlXT1PPDw4fE8+Pj4yNCxkZVszXVtBZV09Tyx2ZVswXVtJZV09KE89MTY4NDMwMDkqaGVeNjU1MzcqTWVeMjU3''@;'; put 'put ''KlRlXjE2ODQzMDA4KkFlKTw8MjR8Tz4+PjgsdmVbMV1bSWVdPU88PDE2fE8+Pj4xNix2ZVsyXVtJZV09Tzw8OHxPPj4+MjQsdmVbM11bSWVdPU8sMD09PUFlP0FlPWtlPTE6KEFlPVRlXkpbSltKW2hlXlRlXV1dLGtlXj1KW0pba2VdXSl9cmV0dXJue1NCT1g6b2UsSU5WX1NCT1g6Y2UsU1VC''@;'; put 'put ''X01JWDpkZSxJTlZfU1VCX01JWDp2ZX19KCk7ZnVuY3Rpb24gSyhKKXt0aGlzLl9rZXk9YWUoSiksdGhpcy5fcmVzZXQoKX1LLmJsb2NrU2l6ZT0xNixLLmtleVNpemU9MzIsSy5wcm90b3R5cGUuYmxvY2tTaXplPUsuYmxvY2tTaXplLEsucHJvdG90eXBlLmtleVNpemU9Sy5rZXlTaXplLEsu''@;'; put 'put ''cHJvdG90eXBlLl9yZXNldD1mdW5jdGlvbigpe2Zvcih2YXIgSj10aGlzLl9rZXksc2U9Si5sZW5ndGgsb2U9c2UrNixjZT00KihvZSsxKSxkZT1bXSx2ZT0wO3ZlPHNlO3ZlKyspZGVbdmVdPUpbdmVdO2Zvcih2ZT1zZTt2ZTxjZTt2ZSsrKXt2YXIgQWU9ZGVbdmUtMV07dmUlc2U9PTA/KEFl''@;'; put 'put ''PXRlLlNCT1hbKEFlPUFlPDw4fEFlPj4+MjQpPj4+MjRdPDwyNHx0ZS5TQk9YW0FlPj4+MTYmMjU1XTw8MTZ8dGUuU0JPWFtBZT4+PjgmMjU1XTw8OHx0ZS5TQk9YWzI1NSZBZV0sQWVePU5bdmUvc2V8MF08PDI0KTpzZT42JiZ2ZSVzZT09NCYmKEFlPXRlLlNCT1hbQWU+Pj4yNF08PDI0fHRl''@;'; put 'put ''LlNCT1hbQWU+Pj4xNiYyNTVdPDwxNnx0ZS5TQk9YW0FlPj4+OCYyNTVdPDw4fHRlLlNCT1hbMjU1JkFlXSksZGVbdmVdPWRlW3ZlLXNlXV5BZX1mb3IodmFyIGtlPVtdLFNlPTA7U2U8Y2U7U2UrKyl7dmFyIEllPWNlLVNlLFRlPWRlW0llLShTZSU0PzA6NCldO2tlW1NlXT1TZTw0fHxJZTw9''@;'; put 'put ''ND9UZTp0ZS5JTlZfU1VCX01JWFswXVt0ZS5TQk9YW1RlPj4+MjRdXV50ZS5JTlZfU1VCX01JWFsxXVt0ZS5TQk9YW1RlPj4+MTYmMjU1XV1edGUuSU5WX1NVQl9NSVhbMl1bdGUuU0JPWFtUZT4+PjgmMjU1XV1edGUuSU5WX1NVQl9NSVhbM11bdGUuU0JPWFsyNTUmVGVdXX10aGlzLl9uUm91''@;'; put 'put ''bmRzPW9lLHRoaXMuX2tleVNjaGVkdWxlPWRlLHRoaXMuX2ludktleVNjaGVkdWxlPWtlfSxLLnByb3RvdHlwZS5lbmNyeXB0QmxvY2tSYXc9ZnVuY3Rpb24oSil7cmV0dXJuIFcoSj1hZShKKSx0aGlzLl9rZXlTY2hlZHVsZSx0ZS5TVUJfTUlYLHRlLlNCT1gsdGhpcy5fblJvdW5kcyl9LEsu''@;'; put 'put ''cHJvdG90eXBlLmVuY3J5cHRCbG9jaz1mdW5jdGlvbihKKXt2YXIgc2U9dGhpcy5lbmNyeXB0QmxvY2tSYXcoSiksb2U9cmUuYWxsb2NVbnNhZmUoMTYpO3JldHVybiBvZS53cml0ZVVJbnQzMkJFKHNlWzBdLDApLG9lLndyaXRlVUludDMyQkUoc2VbMV0sNCksb2Uud3JpdGVVSW50MzJCRShz''@;'; put 'put ''ZVsyXSw4KSxvZS53cml0ZVVJbnQzMkJFKHNlWzNdLDEyKSxvZX0sSy5wcm90b3R5cGUuZGVjcnlwdEJsb2NrPWZ1bmN0aW9uKEope3ZhciBzZT0oSj1hZShKKSlbMV07SlsxXT1KWzNdLEpbM109c2U7dmFyIG9lPVcoSix0aGlzLl9pbnZLZXlTY2hlZHVsZSx0ZS5JTlZfU1VCX01JWCx0ZS5J''@;'; put 'put ''TlZfU0JPWCx0aGlzLl9uUm91bmRzKSxjZT1yZS5hbGxvY1Vuc2FmZSgxNik7cmV0dXJuIGNlLndyaXRlVUludDMyQkUob2VbMF0sMCksY2Uud3JpdGVVSW50MzJCRShvZVszXSw0KSxjZS53cml0ZVVJbnQzMkJFKG9lWzJdLDgpLGNlLndyaXRlVUludDMyQkUob2VbMV0sMTIpLGNlfSxLLnBy''@;'; put 'put ''b3RvdHlwZS5zY3J1Yj1mdW5jdGlvbigpe1kodGhpcy5fa2V5U2NoZWR1bGUpLFkodGhpcy5faW52S2V5U2NoZWR1bGUpLFkodGhpcy5fa2V5KX0sVS5leHBvcnRzLkFFUz1LfSw0ODQ4OihVLFEsaik9Pnt2YXIgcmU9aig0NDk3KSxhZT1qKDk1MDkpLkJ1ZmZlcixZPWooMTAyNyksVz1qKDU3''@;'; put 'put ''MTcpLE49aigzMjg4KSx0ZT1qKDcyOTUpLEs9aig2ODUpO2Z1bmN0aW9uIEooc2Usb2UsY2UsZGUpe1kuY2FsbCh0aGlzKTt2YXIgdmU9YWUuYWxsb2MoNCwwKTt0aGlzLl9jaXBoZXI9bmV3IHJlLkFFUyhvZSk7dmFyIEFlPXRoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2sodmUpO3RoaXMuX2do''@;'; put 'put ''YXNoPW5ldyBOKEFlKSxjZT1mdW5jdGlvbihrZSxTZSxJZSl7aWYoMTI9PT1TZS5sZW5ndGgpcmV0dXJuIGtlLl9maW5JRD1hZS5jb25jYXQoW1NlLGFlLmZyb20oWzAsMCwwLDFdKV0pLGFlLmNvbmNhdChbU2UsYWUuZnJvbShbMCwwLDAsMl0pXSk7dmFyIFRlPW5ldyBOKEllKSxNZT1TZS5s''@;'; put 'put ''ZW5ndGgsaGU9TWUlMTY7VGUudXBkYXRlKFNlKSxoZSYmVGUudXBkYXRlKGFlLmFsbG9jKGhlPTE2LWhlLDApKSxUZS51cGRhdGUoYWUuYWxsb2MoOCwwKSk7dmFyIE89OCpNZSx6PWFlLmFsbG9jKDgpO3oud3JpdGVVSW50QkUoTywwLDgpLFRlLnVwZGF0ZSh6KSxrZS5fZmluSUQ9VGUuc3Rh''@;'; put 'put ''dGU7dmFyIGVlPWFlLmZyb20oa2UuX2ZpbklEKTtyZXR1cm4gSyhlZSksZWV9KHRoaXMsY2UsQWUpLHRoaXMuX3ByZXY9YWUuZnJvbShjZSksdGhpcy5fY2FjaGU9YWUuYWxsb2NVbnNhZmUoMCksdGhpcy5fc2VjQ2FjaGU9YWUuYWxsb2NVbnNhZmUoMCksdGhpcy5fZGVjcnlwdD1kZSx0aGlz''@;'; put 'put ''Ll9hbGVuPTAsdGhpcy5fbGVuPTAsdGhpcy5fbW9kZT1zZSx0aGlzLl9hdXRoVGFnPW51bGwsdGhpcy5fY2FsbGVkPSExfVcoSixZKSxKLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHNlKXtpZighdGhpcy5fY2FsbGVkJiZ0aGlzLl9hbGVuKXt2YXIgb2U9MTYtdGhpcy5fYWxlbiUxNjtv''@;'; put 'put ''ZTwxNiYmKG9lPWFlLmFsbG9jKG9lLDApLHRoaXMuX2doYXNoLnVwZGF0ZShvZSkpfXRoaXMuX2NhbGxlZD0hMDt2YXIgY2U9dGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsc2UpO3JldHVybiB0aGlzLl9naGFzaC51cGRhdGUodGhpcy5fZGVjcnlwdD9zZTpjZSksdGhpcy5fbGVuKz1zZS5sZW5n''@;'; put 'put ''dGgsY2V9LEoucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe2lmKHRoaXMuX2RlY3J5cHQmJiF0aGlzLl9hdXRoVGFnKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgc3RhdGUgb3IgdW5hYmxlIHRvIGF1dGhlbnRpY2F0ZSBkYXRhIik7dmFyIHNlPXRlKHRoaXMuX2doYXNoLmZpbmFs''@;'; put 'put ''KDgqdGhpcy5fYWxlbiw4KnRoaXMuX2xlbiksdGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayh0aGlzLl9maW5JRCkpO2lmKHRoaXMuX2RlY3J5cHQmJmZ1bmN0aW9uKG9lLGNlKXt2YXIgZGU9MDtvZS5sZW5ndGghPT1jZS5sZW5ndGgmJmRlKys7Zm9yKHZhciB2ZT1NYXRoLm1pbihvZS5sZW5n''@;'; put 'put ''dGgsY2UubGVuZ3RoKSxBZT0wO0FlPHZlOysrQWUpZGUrPW9lW0FlXV5jZVtBZV07cmV0dXJuIGRlfShzZSx0aGlzLl9hdXRoVGFnKSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YSIpO3RoaXMuX2F1dGhUYWc9c2UsdGhp''@;'; put 'put ''cy5fY2lwaGVyLnNjcnViKCl9LEoucHJvdG90eXBlLmdldEF1dGhUYWc9ZnVuY3Rpb24oKXtpZih0aGlzLl9kZWNyeXB0fHwhYWUuaXNCdWZmZXIodGhpcy5fYXV0aFRhZykpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIp''@;'; put 'put ''O3JldHVybiB0aGlzLl9hdXRoVGFnfSxKLnByb3RvdHlwZS5zZXRBdXRoVGFnPWZ1bmN0aW9uKHNlKXtpZighdGhpcy5fZGVjcnlwdCl0aHJvdyBuZXcgRXJyb3IoIkF0dGVtcHRpbmcgdG8gc2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlIik7dGhpcy5fYXV0aFRhZz1zZX0sSi5w''@;'; put 'put ''cm90b3R5cGUuc2V0QUFEPWZ1bmN0aW9uKHNlKXtpZih0aGlzLl9jYWxsZWQpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0aW5nIHRvIHNldCBBQUQgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKTt0aGlzLl9naGFzaC51cGRhdGUoc2UpLHRoaXMuX2FsZW4rPXNlLmxlbmd0aH0sVS5leHBvcnRzPUp9''@;'; put 'put ''LDQ2OTY6KFUsUSxqKT0+e3ZhciByZT1qKDE0OTQpLGFlPWooNjE5MyksWT1qKDQ5NDYpO1EuY3JlYXRlQ2lwaGVyPVEuQ2lwaGVyPXJlLmNyZWF0ZUNpcGhlcixRLmNyZWF0ZUNpcGhlcml2PVEuQ2lwaGVyaXY9cmUuY3JlYXRlQ2lwaGVyaXYsUS5jcmVhdGVEZWNpcGhlcj1RLkRlY2lwaGVy''@;'; put 'put ''PWFlLmNyZWF0ZURlY2lwaGVyLFEuY3JlYXRlRGVjaXBoZXJpdj1RLkRlY2lwaGVyaXY9YWUuY3JlYXRlRGVjaXBoZXJpdixRLmxpc3RDaXBoZXJzPVEuZ2V0Q2lwaGVycz1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhZKX19LDYxOTM6KFUsUSxqKT0+e3ZhciByZT1qKDQ4NDgpLGFl''@;'; put 'put ''PWooOTUwOSkuQnVmZmVyLFk9aig0NSksVz1qKDU5NjkpLE49aigxMDI3KSx0ZT1qKDQ0OTcpLEs9aigzMDQ4KTtmdW5jdGlvbiBKKGNlLGRlLHZlKXtOLmNhbGwodGhpcyksdGhpcy5fY2FjaGU9bmV3IHNlLHRoaXMuX2xhc3Q9dm9pZCAwLHRoaXMuX2NpcGhlcj1uZXcgdGUuQUVTKGRlKSx0''@;'; put 'put ''aGlzLl9wcmV2PWFlLmZyb20odmUpLHRoaXMuX21vZGU9Y2UsdGhpcy5fYXV0b3BhZGRpbmc9ITB9ZnVuY3Rpb24gc2UoKXt0aGlzLmNhY2hlPWFlLmFsbG9jVW5zYWZlKDApfWZ1bmN0aW9uIG9lKGNlLGRlLHZlKXt2YXIgQWU9WVtjZS50b0xvd2VyQ2FzZSgpXTtpZighQWUpdGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7aWYoInN0cmluZyI9PXR5cGVvZiB2ZSYmKHZlPWFlLmZyb20odmUpKSwiR0NNIiE9PUFlLm1vZGUmJnZlLmxlbmd0aCE9PUFlLml2KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgaXYgbGVuZ3RoICIrdmUubGVuZ3RoKTtpZigi''@;'; put 'put ''c3RyaW5nIj09dHlwZW9mIGRlJiYoZGU9YWUuZnJvbShkZSkpLGRlLmxlbmd0aCE9PUFlLmtleS84KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQga2V5IGxlbmd0aCAiK2RlLmxlbmd0aCk7cmV0dXJuInN0cmVhbSI9PT1BZS50eXBlP25ldyBXKEFlLm1vZHVsZSxkZSx2ZSwhMCk6ImF1''@;'; put 'put ''dGgiPT09QWUudHlwZT9uZXcgcmUoQWUubW9kdWxlLGRlLHZlLCEwKTpuZXcgSihBZS5tb2R1bGUsZGUsdmUpfWooNTcxNykoSixOKSxKLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGNlKXt2YXIgZGUsdmU7dGhpcy5fY2FjaGUuYWRkKGNlKTtmb3IodmFyIEFlPVtdO2RlPXRoaXMuX2Nh''@;'; put 'put ''Y2hlLmdldCh0aGlzLl9hdXRvcGFkZGluZyk7KXZlPXRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLGRlKSxBZS5wdXNoKHZlKTtyZXR1cm4gYWUuY29uY2F0KEFlKX0sSi5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFyIGNlPXRoaXMuX2NhY2hlLmZsdXNoKCk7aWYodGhpcy5fYXV0b3Bh''@;'; put 'put ''ZGRpbmcpcmV0dXJuIGZ1bmN0aW9uKGRlKXt2YXIgdmU9ZGVbMTVdO2lmKHZlPDF8fHZlPjE2KXRocm93IG5ldyBFcnJvcigidW5hYmxlIHRvIGRlY3J5cHQgZGF0YSIpO2Zvcih2YXIgQWU9LTE7KytBZTx2ZTspaWYoZGVbQWUrKDE2LXZlKV0hPT12ZSl0aHJvdyBuZXcgRXJyb3IoInVuYWJs''@;'; put 'put ''ZSB0byBkZWNyeXB0IGRhdGEiKTtpZigxNiE9PXZlKXJldHVybiBkZS5zbGljZSgwLDE2LXZlKX0odGhpcy5fbW9kZS5kZWNyeXB0KHRoaXMsY2UpKTtpZihjZSl0aHJvdyBuZXcgRXJyb3IoImRhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCIpfSxKLnByb3RvdHlwZS5zZXRBdXRv''@;'; put 'put ''UGFkZGluZz1mdW5jdGlvbihjZSl7cmV0dXJuIHRoaXMuX2F1dG9wYWRkaW5nPSEhY2UsdGhpc30sc2UucHJvdG90eXBlLmFkZD1mdW5jdGlvbihjZSl7dGhpcy5jYWNoZT1hZS5jb25jYXQoW3RoaXMuY2FjaGUsY2VdKX0sc2UucHJvdG90eXBlLmdldD1mdW5jdGlvbihjZSl7dmFyIGRlO2lm''@;'; put 'put ''KGNlKXtpZih0aGlzLmNhY2hlLmxlbmd0aD4xNilyZXR1cm4gZGU9dGhpcy5jYWNoZS5zbGljZSgwLDE2KSx0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLGRlfWVsc2UgaWYodGhpcy5jYWNoZS5sZW5ndGg+PTE2KXJldHVybiBkZT10aGlzLmNhY2hlLnNsaWNlKDAsMTYpLHRoaXMu''@;'; put 'put ''Y2FjaGU9dGhpcy5jYWNoZS5zbGljZSgxNiksZGU7cmV0dXJuIG51bGx9LHNlLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2lmKHRoaXMuY2FjaGUubGVuZ3RoKXJldHVybiB0aGlzLmNhY2hlfSxRLmNyZWF0ZURlY2lwaGVyPWZ1bmN0aW9uKGNlLGRlKXt2YXIgdmU9WVtjZS50b0xvd2Vy''@;'; put 'put ''Q2FzZSgpXTtpZighdmUpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7dmFyIEFlPUsoZGUsITEsdmUua2V5LHZlLml2KTtyZXR1cm4gb2UoY2UsQWUua2V5LEFlLml2KX0sUS5jcmVhdGVEZWNpcGhlcml2PW9lfSwxNDk0OihVLFEsaik9Pnt2YXIgcmU9aig0NSks''@;'; put 'put ''YWU9aig0ODQ4KSxZPWooOTUwOSkuQnVmZmVyLFc9aig1OTY5KSxOPWooMTAyNyksdGU9aig0NDk3KSxLPWooMzA0OCk7ZnVuY3Rpb24gSihkZSx2ZSxBZSl7Ti5jYWxsKHRoaXMpLHRoaXMuX2NhY2hlPW5ldyBvZSx0aGlzLl9jaXBoZXI9bmV3IHRlLkFFUyh2ZSksdGhpcy5fcHJldj1ZLmZy''@;'; put 'put ''b20oQWUpLHRoaXMuX21vZGU9ZGUsdGhpcy5fYXV0b3BhZGRpbmc9ITB9aig1NzE3KShKLE4pLEoucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZGUpe3ZhciB2ZSxBZTt0aGlzLl9jYWNoZS5hZGQoZGUpO2Zvcih2YXIga2U9W107dmU9dGhpcy5fY2FjaGUuZ2V0KCk7KUFlPXRoaXMuX21v''@;'; put 'put ''ZGUuZW5jcnlwdCh0aGlzLHZlKSxrZS5wdXNoKEFlKTtyZXR1cm4gWS5jb25jYXQoa2UpfTt2YXIgc2U9WS5hbGxvYygxNiwxNik7ZnVuY3Rpb24gb2UoKXt0aGlzLmNhY2hlPVkuYWxsb2NVbnNhZmUoMCl9ZnVuY3Rpb24gY2UoZGUsdmUsQWUpe3ZhciBrZT1yZVtkZS50b0xvd2VyQ2FzZSgp''@;'; put 'put ''XTtpZigha2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7aWYoInN0cmluZyI9PXR5cGVvZiB2ZSYmKHZlPVkuZnJvbSh2ZSkpLHZlLmxlbmd0aCE9PWtlLmtleS84KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQga2V5IGxlbmd0aCAiK3ZlLmxlbmd0aCk7''@;'; put 'put ''aWYoInN0cmluZyI9PXR5cGVvZiBBZSYmKEFlPVkuZnJvbShBZSkpLCJHQ00iIT09a2UubW9kZSYmQWUubGVuZ3RoIT09a2UuaXYpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBpdiBsZW5ndGggIitBZS5sZW5ndGgpO3JldHVybiJzdHJlYW0iPT09a2UudHlwZT9uZXcgVyhrZS5tb2R1''@;'; put 'put ''bGUsdmUsQWUpOiJhdXRoIj09PWtlLnR5cGU/bmV3IGFlKGtlLm1vZHVsZSx2ZSxBZSk6bmV3IEooa2UubW9kdWxlLHZlLEFlKX1KLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgZGU9dGhpcy5fY2FjaGUuZmx1c2goKTtpZih0aGlzLl9hdXRvcGFkZGluZylyZXR1cm4gZGU9dGhp''@;'; put 'put ''cy5fbW9kZS5lbmNyeXB0KHRoaXMsZGUpLHRoaXMuX2NpcGhlci5zY3J1YigpLGRlO2lmKCFkZS5lcXVhbHMoc2UpKXRocm93IHRoaXMuX2NpcGhlci5zY3J1YigpLG5ldyBFcnJvcigiZGF0YSBub3QgbXVsdGlwbGUgb2YgYmxvY2sgbGVuZ3RoIil9LEoucHJvdG90eXBlLnNldEF1dG9QYWRk''@;'; put 'put ''aW5nPWZ1bmN0aW9uKGRlKXtyZXR1cm4gdGhpcy5fYXV0b3BhZGRpbmc9ISFkZSx0aGlzfSxvZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGRlKXt0aGlzLmNhY2hlPVkuY29uY2F0KFt0aGlzLmNhY2hlLGRlXSl9LG9lLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLmNhY2hlLmxl''@;'; put 'put ''bmd0aD4xNSl7dmFyIGRlPXRoaXMuY2FjaGUuc2xpY2UoMCwxNik7cmV0dXJuIHRoaXMuY2FjaGU9dGhpcy5jYWNoZS5zbGljZSgxNiksZGV9cmV0dXJuIG51bGx9LG9lLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2Zvcih2YXIgZGU9MTYtdGhpcy5jYWNoZS5sZW5ndGgsdmU9WS5hbGxv''@;'; put 'put ''Y1Vuc2FmZShkZSksQWU9LTE7KytBZTxkZTspdmUud3JpdGVVSW50OChkZSxBZSk7cmV0dXJuIFkuY29uY2F0KFt0aGlzLmNhY2hlLHZlXSl9LFEuY3JlYXRlQ2lwaGVyaXY9Y2UsUS5jcmVhdGVDaXBoZXI9ZnVuY3Rpb24oZGUsdmUpe3ZhciBBZT1yZVtkZS50b0xvd2VyQ2FzZSgpXTtpZigh''@;'; put 'put ''QWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7dmFyIGtlPUsodmUsITEsQWUua2V5LEFlLml2KTtyZXR1cm4gY2UoZGUsa2Uua2V5LGtlLml2KX19LDMyODg6KFUsUSxqKT0+e3ZhciByZT1qKDk1MDkpLkJ1ZmZlcixhZT1yZS5hbGxvYygxNiwwKTtmdW5jdGlv''@;'; put 'put ''biBZKE4pe3ZhciB0ZT1yZS5hbGxvY1Vuc2FmZSgxNik7cmV0dXJuIHRlLndyaXRlVUludDMyQkUoTlswXT4+PjAsMCksdGUud3JpdGVVSW50MzJCRShOWzFdPj4+MCw0KSx0ZS53cml0ZVVJbnQzMkJFKE5bMl0+Pj4wLDgpLHRlLndyaXRlVUludDMyQkUoTlszXT4+PjAsMTIpLHRlfWZ1bmN0''@;'; put 'put ''aW9uIFcoTil7dGhpcy5oPU4sdGhpcy5zdGF0ZT1yZS5hbGxvYygxNiwwKSx0aGlzLmNhY2hlPXJlLmFsbG9jVW5zYWZlKDApfVcucHJvdG90eXBlLmdoYXNoPWZ1bmN0aW9uKE4pe2Zvcih2YXIgdGU9LTE7Kyt0ZTxOLmxlbmd0aDspdGhpcy5zdGF0ZVt0ZV1ePU5bdGVdO3RoaXMuX211bHRp''@;'; put 'put ''cGx5KCl9LFcucHJvdG90eXBlLl9tdWx0aXBseT1mdW5jdGlvbigpe2Zvcih2YXIgTix0ZSxLLEo9WyhOPXRoaXMuaCkucmVhZFVJbnQzMkJFKDApLE4ucmVhZFVJbnQzMkJFKDQpLE4ucmVhZFVJbnQzMkJFKDgpLE4ucmVhZFVJbnQzMkJFKDEyKV0sc2U9WzAsMCwwLDBdLG9lPS0xOysrb2U8''@;'; put 'put ''MTI4Oyl7Zm9yKDAhPSh0aGlzLnN0YXRlW35+KG9lLzgpXSYxPDw3LW9lJTgpJiYoc2VbMF1ePUpbMF0sc2VbMV1ePUpbMV0sc2VbMl1ePUpbMl0sc2VbM11ePUpbM10pLEs9MCE9KDEmSlszXSksdGU9Mzt0ZT4wO3RlLS0pSlt0ZV09Slt0ZV0+Pj4xfCgxJkpbdGUtMV0pPDwzMTtKWzBdPUpb''@;'; put 'put ''MF0+Pj4xLEsmJihKWzBdPS01MjAwOTM2OTZeSlswXSl9dGhpcy5zdGF0ZT1ZKHNlKX0sVy5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKE4pe3ZhciB0ZTtmb3IodGhpcy5jYWNoZT1yZS5jb25jYXQoW3RoaXMuY2FjaGUsTl0pO3RoaXMuY2FjaGUubGVuZ3RoPj0xNjspdGU9dGhpcy5jYWNo''@;'; put 'put ''ZS5zbGljZSgwLDE2KSx0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLHRoaXMuZ2hhc2godGUpfSxXLnByb3RvdHlwZS5maW5hbD1mdW5jdGlvbihOLHRlKXtyZXR1cm4gdGhpcy5jYWNoZS5sZW5ndGgmJnRoaXMuZ2hhc2gocmUuY29uY2F0KFt0aGlzLmNhY2hlLGFlXSwxNikpLHRo''@;'; put 'put ''aXMuZ2hhc2goWShbMCxOLDAsdGVdKSksdGhpcy5zdGF0ZX0sVS5leHBvcnRzPVd9LDY4NTpVPT57VS5leHBvcnRzPWZ1bmN0aW9uKFEpe2Zvcih2YXIgaixyZT1RLmxlbmd0aDtyZS0tOyl7aWYoMjU1IT09KGo9US5yZWFkVUludDgocmUpKSl7aisrLFEud3JpdGVVSW50OChqLHJlKTticmVh''@;'; put 'put ''a31RLndyaXRlVUludDgoMCxyZSl9fX0sNTI5MjooVSxRLGopPT57dmFyIHJlPWooNzI5NSk7US5lbmNyeXB0PWZ1bmN0aW9uKGFlLFkpe3ZhciBXPXJlKFksYWUuX3ByZXYpO3JldHVybiBhZS5fcHJldj1hZS5fY2lwaGVyLmVuY3J5cHRCbG9jayhXKSxhZS5fcHJldn0sUS5kZWNyeXB0PWZ1''@;'; put 'put ''bmN0aW9uKGFlLFkpe3ZhciBXPWFlLl9wcmV2O2FlLl9wcmV2PVk7dmFyIE49YWUuX2NpcGhlci5kZWNyeXB0QmxvY2soWSk7cmV0dXJuIHJlKE4sVyl9fSw2MzExOihVLFEsaik9Pnt2YXIgcmU9aig5NTA5KS5CdWZmZXIsYWU9aig3Mjk1KTtmdW5jdGlvbiBZKFcsTix0ZSl7dmFyIEs9Ti5s''@;'; put 'put ''ZW5ndGgsSj1hZShOLFcuX2NhY2hlKTtyZXR1cm4gVy5fY2FjaGU9Vy5fY2FjaGUuc2xpY2UoSyksVy5fcHJldj1yZS5jb25jYXQoW1cuX3ByZXYsdGU/TjpKXSksSn1RLmVuY3J5cHQ9ZnVuY3Rpb24oVyxOLHRlKXtmb3IodmFyIEssSj1yZS5hbGxvY1Vuc2FmZSgwKTtOLmxlbmd0aDspe2lm''@;'; put 'put ''KDA9PT1XLl9jYWNoZS5sZW5ndGgmJihXLl9jYWNoZT1XLl9jaXBoZXIuZW5jcnlwdEJsb2NrKFcuX3ByZXYpLFcuX3ByZXY9cmUuYWxsb2NVbnNhZmUoMCkpLCEoVy5fY2FjaGUubGVuZ3RoPD1OLmxlbmd0aCkpe0o9cmUuY29uY2F0KFtKLFkoVyxOLHRlKV0pO2JyZWFrfUo9cmUuY29uY2F0''@;'; put 'put ''KFtKLFkoVyxOLnNsaWNlKDAsSz1XLl9jYWNoZS5sZW5ndGgpLHRlKV0pLE49Ti5zbGljZShLKX1yZXR1cm4gSn19LDE1MTA6KFUsUSxqKT0+e3ZhciByZT1qKDk1MDkpLkJ1ZmZlcjtmdW5jdGlvbiBhZShXLE4sdGUpe2Zvcih2YXIgSyxKLHNlPS0xLG9lPTA7KytzZTw4OylLPU4mMTw8Ny1z''@;'; put 'put ''ZT8xMjg6MCxvZSs9KDEyOCYoSj1XLl9jaXBoZXIuZW5jcnlwdEJsb2NrKFcuX3ByZXYpWzBdXkspKT4+c2UlOCxXLl9wcmV2PVkoVy5fcHJldix0ZT9LOkopO3JldHVybiBvZX1mdW5jdGlvbiBZKFcsTil7dmFyIHRlPVcubGVuZ3RoLEs9LTEsSj1yZS5hbGxvY1Vuc2FmZShXLmxlbmd0aCk7''@;'; put 'put ''Zm9yKFc9cmUuY29uY2F0KFtXLHJlLmZyb20oW05dKV0pOysrSzx0ZTspSltLXT1XW0tdPDwxfFdbSysxXT4+NztyZXR1cm4gSn1RLmVuY3J5cHQ9ZnVuY3Rpb24oVyxOLHRlKXtmb3IodmFyIEs9Ti5sZW5ndGgsSj1yZS5hbGxvY1Vuc2FmZShLKSxzZT0tMTsrK3NlPEs7KUpbc2VdPWFlKFcs''@;'; put 'put ''TltzZV0sdGUpO3JldHVybiBKfX0sMTk2NDooVSxRLGopPT57dmFyIHJlPWooOTUwOSkuQnVmZmVyO2Z1bmN0aW9uIGFlKFksVyxOKXt2YXIgdGU9WS5fY2lwaGVyLmVuY3J5cHRCbG9jayhZLl9wcmV2KVswXV5XO3JldHVybiBZLl9wcmV2PXJlLmNvbmNhdChbWS5fcHJldi5zbGljZSgxKSxy''@;'; put 'put ''ZS5mcm9tKFtOP1c6dGVdKV0pLHRlfVEuZW5jcnlwdD1mdW5jdGlvbihZLFcsTil7Zm9yKHZhciB0ZT1XLmxlbmd0aCxLPXJlLmFsbG9jVW5zYWZlKHRlKSxKPS0xOysrSjx0ZTspS1tKXT1hZShZLFdbSl0sTik7cmV0dXJuIEt9fSw2MDA5OihVLFEsaik9Pnt2YXIgcmU9aig3Mjk1KSxhZT1q''@;'; put 'put ''KDk1MDkpLkJ1ZmZlcixZPWooNjg1KTtmdW5jdGlvbiBXKE4pe3ZhciB0ZT1OLl9jaXBoZXIuZW5jcnlwdEJsb2NrUmF3KE4uX3ByZXYpO3JldHVybiBZKE4uX3ByZXYpLHRlfVEuZW5jcnlwdD1mdW5jdGlvbihOLHRlKXt2YXIgSz1NYXRoLmNlaWwodGUubGVuZ3RoLzE2KSxKPU4uX2NhY2hl''@;'; put 'put ''Lmxlbmd0aDtOLl9jYWNoZT1hZS5jb25jYXQoW04uX2NhY2hlLGFlLmFsbG9jVW5zYWZlKDE2KkspXSk7Zm9yKHZhciBzZT0wO3NlPEs7c2UrKyl7dmFyIG9lPVcoTiksY2U9SisxNipzZTtOLl9jYWNoZS53cml0ZVVJbnQzMkJFKG9lWzBdLGNlKzApLE4uX2NhY2hlLndyaXRlVUludDMyQkUo''@;'; put 'put ''b2VbMV0sY2UrNCksTi5fY2FjaGUud3JpdGVVSW50MzJCRShvZVsyXSxjZSs4KSxOLl9jYWNoZS53cml0ZVVJbnQzMkJFKG9lWzNdLGNlKzEyKX12YXIgZGU9Ti5fY2FjaGUuc2xpY2UoMCx0ZS5sZW5ndGgpO3JldHVybiBOLl9jYWNoZT1OLl9jYWNoZS5zbGljZSh0ZS5sZW5ndGgpLHJlKHRl''@;'; put 'put ''LGRlKX19LDEwODQ6KFUsUSk9PntRLmVuY3J5cHQ9ZnVuY3Rpb24oaixyZSl7cmV0dXJuIGouX2NpcGhlci5lbmNyeXB0QmxvY2socmUpfSxRLmRlY3J5cHQ9ZnVuY3Rpb24oaixyZSl7cmV0dXJuIGouX2NpcGhlci5kZWNyeXB0QmxvY2socmUpfX0sNDU6KFUsUSxqKT0+e3ZhciByZT17RUNC''@;'; put 'put ''OmooMTA4NCksQ0JDOmooNTI5MiksQ0ZCOmooNjMxMSksQ0ZCODpqKDE5NjQpLENGQjE6aigxNTEwKSxPRkI6aig4ODYxKSxDVFI6aig2MDA5KSxHQ006aig2MDA5KX0sYWU9aig0OTQ2KTtmb3IodmFyIFkgaW4gYWUpYWVbWV0ubW9kdWxlPXJlW2FlW1ldLm1vZGVdO1UuZXhwb3J0cz1hZX0s''@;'; put 'put ''ODg2MTooVSxRLGopPT57dmFyIHJlPWooODc2NCkuQnVmZmVyLGFlPWooNzI5NSk7ZnVuY3Rpb24gWShXKXtyZXR1cm4gVy5fcHJldj1XLl9jaXBoZXIuZW5jcnlwdEJsb2NrKFcuX3ByZXYpLFcuX3ByZXZ9US5lbmNyeXB0PWZ1bmN0aW9uKFcsTil7Zm9yKDtXLl9jYWNoZS5sZW5ndGg8Ti5s''@;'; put 'put ''ZW5ndGg7KVcuX2NhY2hlPXJlLmNvbmNhdChbVy5fY2FjaGUsWShXKV0pO3ZhciB0ZT1XLl9jYWNoZS5zbGljZSgwLE4ubGVuZ3RoKTtyZXR1cm4gVy5fY2FjaGU9Vy5fY2FjaGUuc2xpY2UoTi5sZW5ndGgpLGFlKE4sdGUpfX0sNTk2OTooVSxRLGopPT57dmFyIHJlPWooNDQ5NyksYWU9aig5''@;'; put 'put ''NTA5KS5CdWZmZXIsWT1qKDEwMjcpO2Z1bmN0aW9uIFcoTix0ZSxLLEope1kuY2FsbCh0aGlzKSx0aGlzLl9jaXBoZXI9bmV3IHJlLkFFUyh0ZSksdGhpcy5fcHJldj1hZS5mcm9tKEspLHRoaXMuX2NhY2hlPWFlLmFsbG9jVW5zYWZlKDApLHRoaXMuX3NlY0NhY2hlPWFlLmFsbG9jVW5zYWZl''@;'; put 'put ''KDApLHRoaXMuX2RlY3J5cHQ9Six0aGlzLl9tb2RlPU59aig1NzE3KShXLFkpLFcucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oTil7cmV0dXJuIHRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLE4sdGhpcy5fZGVjcnlwdCl9LFcucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3RoaXMuX2Np''@;'; put 'put ''cGhlci5zY3J1YigpfSxVLmV4cG9ydHM9V30sMzYxNDooVSxRLGopPT57dmFyIHJlPWooNzY2NyksYWU9aig0Njk2KSxZPWooNDUpLFc9aig5NzE1KSxOPWooMzA0OCk7ZnVuY3Rpb24gdGUoSixzZSxvZSl7aWYoSj1KLnRvTG93ZXJDYXNlKCksWVtKXSlyZXR1cm4gYWUuY3JlYXRlQ2lwaGVy''@;'; put 'put ''aXYoSixzZSxvZSk7aWYoV1tKXSlyZXR1cm4gbmV3IHJlKHtrZXk6c2UsaXY6b2UsbW9kZTpKfSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIil9ZnVuY3Rpb24gSyhKLHNlLG9lKXtpZihKPUoudG9Mb3dlckNhc2UoKSxZW0pdKXJldHVybiBhZS5jcmVhdGVEZWNp''@;'; put 'put ''cGhlcml2KEosc2Usb2UpO2lmKFdbSl0pcmV0dXJuIG5ldyByZSh7a2V5OnNlLGl2Om9lLG1vZGU6SixkZWNyeXB0OiEwfSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIil9US5jcmVhdGVDaXBoZXI9US5DaXBoZXI9ZnVuY3Rpb24oSixzZSl7dmFyIG9lLGNlO2lm''@;'; put 'put ''KEo9Si50b0xvd2VyQ2FzZSgpLFlbSl0pb2U9WVtKXS5rZXksY2U9WVtKXS5pdjtlbHNle2lmKCFXW0pdKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO29lPTgqV1tKXS5rZXksY2U9V1tKXS5pdn12YXIgZGU9TihzZSwhMSxvZSxjZSk7cmV0dXJuIHRlKEosZGUu''@;'; put 'put ''a2V5LGRlLml2KX0sUS5jcmVhdGVDaXBoZXJpdj1RLkNpcGhlcml2PXRlLFEuY3JlYXRlRGVjaXBoZXI9US5EZWNpcGhlcj1mdW5jdGlvbihKLHNlKXt2YXIgb2UsY2U7aWYoSj1KLnRvTG93ZXJDYXNlKCksWVtKXSlvZT1ZW0pdLmtleSxjZT1ZW0pdLml2O2Vsc2V7aWYoIVdbSl0pdGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7b2U9OCpXW0pdLmtleSxjZT1XW0pdLml2fXZhciBkZT1OKHNlLCExLG9lLGNlKTtyZXR1cm4gSyhKLGRlLmtleSxkZS5pdil9LFEuY3JlYXRlRGVjaXBoZXJpdj1RLkRlY2lwaGVyaXY9SyxRLmxpc3RDaXBoZXJzPVEuZ2V0Q2lw''@;'; put 'put ''aGVycz1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhXKS5jb25jYXQoYWUuZ2V0Q2lwaGVycygpKX19LDc2Njc6KFUsUSxqKT0+e3ZhciByZT1qKDEwMjcpLGFlPWooNTI1MSksWT1qKDU3MTcpLFc9aig5NTA5KS5CdWZmZXIsTj17ImRlcy1lZGUzLWNiYyI6YWUuQ0JDLmluc3RhbnRp''@;'; put 'put ''YXRlKGFlLkVERSksImRlcy1lZGUzIjphZS5FREUsImRlcy1lZGUtY2JjIjphZS5DQkMuaW5zdGFudGlhdGUoYWUuRURFKSwiZGVzLWVkZSI6YWUuRURFLCJkZXMtY2JjIjphZS5DQkMuaW5zdGFudGlhdGUoYWUuREVTKSwiZGVzLWVjYiI6YWUuREVTfTtmdW5jdGlvbiB0ZShLKXtyZS5jYWxs''@;'; put 'put ''KHRoaXMpO3ZhciBKLHNlPUsubW9kZS50b0xvd2VyQ2FzZSgpLG9lPU5bc2VdO0o9Sy5kZWNyeXB0PyJkZWNyeXB0IjoiZW5jcnlwdCI7dmFyIGNlPUsua2V5O1cuaXNCdWZmZXIoY2UpfHwoY2U9Vy5mcm9tKGNlKSksImRlcy1lZGUiIT09c2UmJiJkZXMtZWRlLWNiYyIhPT1zZXx8KGNlPVcu''@;'; put 'put ''Y29uY2F0KFtjZSxjZS5zbGljZSgwLDgpXSkpO3ZhciBkZT1LLml2O1cuaXNCdWZmZXIoZGUpfHwoZGU9Vy5mcm9tKGRlKSksdGhpcy5fZGVzPW9lLmNyZWF0ZSh7a2V5OmNlLGl2OmRlLHR5cGU6Sn0pfU4uZGVzPU5bImRlcy1jYmMiXSxOLmRlczM9TlsiZGVzLWVkZTMtY2JjIl0sVS5leHBv''@;'; put 'put ''cnRzPXRlLFkodGUscmUpLHRlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKEspe3JldHVybiBXLmZyb20odGhpcy5fZGVzLnVwZGF0ZShLKSl9LHRlLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXtyZXR1cm4gVy5mcm9tKHRoaXMuX2Rlcy5maW5hbCgpKX19LDk3MTU6KFUsUSk9PntR''@;'; put 'put ''WyJkZXMtZWNiIl09e2tleTo4LGl2OjB9LFFbImRlcy1jYmMiXT1RLmRlcz17a2V5OjgsaXY6OH0sUVsiZGVzLWVkZTMtY2JjIl09US5kZXMzPXtrZXk6MjQsaXY6OH0sUVsiZGVzLWVkZTMiXT17a2V5OjI0LGl2OjB9LFFbImRlcy1lZGUtY2JjIl09e2tleToxNixpdjo4fSxRWyJkZXMtZWRl''@;'; put 'put ''Il09e2tleToxNixpdjowfX0sMzY2MzooVSxRLGopPT57dmFyIHJlPWooODc2NCkuQnVmZmVyLGFlPWooMzU1MCksWT1qKDE3OTgpO2Z1bmN0aW9uIFcodGUpe3ZhciBLLEo9dGUubW9kdWx1cy5ieXRlTGVuZ3RoKCk7ZG97Sz1uZXcgYWUoWShKKSl9d2hpbGUoSy5jbXAodGUubW9kdWx1cyk+''@;'; put 'put ''PTB8fCFLLnVtb2QodGUucHJpbWUxKXx8IUsudW1vZCh0ZS5wcmltZTIpKTtyZXR1cm4gS31mdW5jdGlvbiBOKHRlLEspe3ZhciBNZSxoZSxKPXtibGluZGVyOihoZT1XKE1lPUspKS50b1JlZChhZS5tb250KE1lLm1vZHVsdXMpKS5yZWRQb3cobmV3IGFlKE1lLnB1YmxpY0V4cG9uZW50KSku''@;'; put 'put ''ZnJvbVJlZCgpLHVuYmxpbmRlcjpoZS5pbnZtKE1lLm1vZHVsdXMpfSxzZT1LLm1vZHVsdXMuYnl0ZUxlbmd0aCgpLG9lPW5ldyBhZSh0ZSkubXVsKEouYmxpbmRlcikudW1vZChLLm1vZHVsdXMpLGNlPW9lLnRvUmVkKGFlLm1vbnQoSy5wcmltZTEpKSxkZT1vZS50b1JlZChhZS5tb250KEsu''@;'; put 'put ''cHJpbWUyKSksdmU9Sy5jb2VmZmljaWVudCxBZT1LLnByaW1lMSxrZT1LLnByaW1lMixTZT1jZS5yZWRQb3coSy5leHBvbmVudDEpLmZyb21SZWQoKSxJZT1kZS5yZWRQb3coSy5leHBvbmVudDIpLmZyb21SZWQoKSxUZT1TZS5pc3ViKEllKS5pbXVsKHZlKS51bW9kKEFlKS5pbXVsKGtlKTty''@;'; put 'put ''ZXR1cm4gSWUuaWFkZChUZSkuaW11bChKLnVuYmxpbmRlcikudW1vZChLLm1vZHVsdXMpLnRvQXJyYXlMaWtlKHJlLCJiZSIsc2UpfU4uZ2V0cj1XLFUuZXhwb3J0cz1OfSw2MDQyOihVLFEsaik9PntVLmV4cG9ydHM9aig1MjA3KX0sNDc0MzooVSxRLGopPT57dmFyIHJlPWooNTY3OSkuQnVm''@;'; put 'put ''ZmVyLGFlPWooMzQ4MiksWT1qKDg0NzMpLFc9aig1NzE3KSxOPWooMjk1NyksdGU9aig3NzUzKSxLPWooNTIwNyk7ZnVuY3Rpb24gSihkZSl7WS5Xcml0YWJsZS5jYWxsKHRoaXMpO3ZhciB2ZT1LW2RlXTtpZighdmUpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIG1lc3NhZ2UgZGlnZXN0Iik7''@;'; put 'put ''dGhpcy5faGFzaFR5cGU9dmUuaGFzaCx0aGlzLl9oYXNoPWFlKHZlLmhhc2gpLHRoaXMuX3RhZz12ZS5pZCx0aGlzLl9zaWduVHlwZT12ZS5zaWdufWZ1bmN0aW9uIHNlKGRlKXtZLldyaXRhYmxlLmNhbGwodGhpcyk7dmFyIHZlPUtbZGVdO2lmKCF2ZSl0aHJvdyBuZXcgRXJyb3IoIlVua25v''@;'; put 'put ''d24gbWVzc2FnZSBkaWdlc3QiKTt0aGlzLl9oYXNoPWFlKHZlLmhhc2gpLHRoaXMuX3RhZz12ZS5pZCx0aGlzLl9zaWduVHlwZT12ZS5zaWdufWZ1bmN0aW9uIG9lKGRlKXtyZXR1cm4gbmV3IEooZGUpfWZ1bmN0aW9uIGNlKGRlKXtyZXR1cm4gbmV3IHNlKGRlKX1PYmplY3Qua2V5cyhLKS5m''@;'; put 'put ''b3JFYWNoKGZ1bmN0aW9uKGRlKXtLW2RlXS5pZD1yZS5mcm9tKEtbZGVdLmlkLCJoZXgiKSxLW2RlLnRvTG93ZXJDYXNlKCldPUtbZGVdfSksVyhKLFkuV3JpdGFibGUpLEoucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihkZSx2ZSxBZSl7dGhpcy5faGFzaC51cGRhdGUoZGUpLEFlKCl9LEou''@;'; put 'put ''cHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihkZSx2ZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBkZSYmKGRlPXJlLmZyb20oZGUsdmUpKSx0aGlzLl9oYXNoLnVwZGF0ZShkZSksdGhpc30sSi5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbihkZSx2ZSl7dGhpcy5lbmQoKTt2YXIgQWU9dGhpcy5f''@;'; put 'put ''aGFzaC5kaWdlc3QoKSxrZT1OKEFlLGRlLHRoaXMuX2hhc2hUeXBlLHRoaXMuX3NpZ25UeXBlLHRoaXMuX3RhZyk7cmV0dXJuIHZlP2tlLnRvU3RyaW5nKHZlKTprZX0sVyhzZSxZLldyaXRhYmxlKSxzZS5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKGRlLHZlLEFlKXt0aGlzLl9oYXNoLnVw''@;'; put 'put ''ZGF0ZShkZSksQWUoKX0sc2UucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihkZSx2ZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBkZSYmKGRlPXJlLmZyb20oZGUsdmUpKSx0aGlzLl9oYXNoLnVwZGF0ZShkZSksdGhpc30sc2UucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbihkZSx2ZSxBZSl7''@;'; put 'put ''InN0cmluZyI9PXR5cGVvZiB2ZSYmKHZlPXJlLmZyb20odmUsQWUpKSx0aGlzLmVuZCgpO3ZhciBrZT10aGlzLl9oYXNoLmRpZ2VzdCgpO3JldHVybiB0ZSh2ZSxrZSxkZSx0aGlzLl9zaWduVHlwZSx0aGlzLl90YWcpfSxVLmV4cG9ydHM9e1NpZ246b2UsVmVyaWZ5OmNlLGNyZWF0ZVNpZ246''@;'; put 'put ''b2UsY3JlYXRlVmVyaWZ5OmNlfX0sMjk1NzooVSxRLGopPT57dmFyIHJlPWooNTY3OSkuQnVmZmVyLGFlPWooODM1NSksWT1qKDM2NjMpLFc9aig2OTQ4KS5lYyxOPWooMzU1MCksdGU9aig5ODApLEs9aigxMzA4KTtmdW5jdGlvbiBKKGRlLHZlLEFlLGtlKXtpZigoZGU9cmUuZnJvbShkZS50''@;'; put 'put ''b0FycmF5KCkpKS5sZW5ndGg8dmUuYnl0ZUxlbmd0aCgpKXt2YXIgU2U9cmUuYWxsb2ModmUuYnl0ZUxlbmd0aCgpLWRlLmxlbmd0aCk7ZGU9cmUuY29uY2F0KFtTZSxkZV0pfXZhciBJZT1BZS5sZW5ndGgsVGU9ZnVuY3Rpb24oTyx6KXtPPShPPXNlKE8seikpLm1vZCh6KTt2YXIgZWU9cmUu''@;'; put 'put ''ZnJvbShPLnRvQXJyYXkoKSk7aWYoZWUubGVuZ3RoPHouYnl0ZUxlbmd0aCgpKXt2YXIgbmU9cmUuYWxsb2Moei5ieXRlTGVuZ3RoKCktZWUubGVuZ3RoKTtlZT1yZS5jb25jYXQoW25lLGVlXSl9cmV0dXJuIGVlfShBZSx2ZSksTWU9cmUuYWxsb2MoSWUpO01lLmZpbGwoMSk7dmFyIGhlPXJl''@;'; put 'put ''LmFsbG9jKEllKTtyZXR1cm4gaGU9YWUoa2UsaGUpLnVwZGF0ZShNZSkudXBkYXRlKHJlLmZyb20oWzBdKSkudXBkYXRlKGRlKS51cGRhdGUoVGUpLmRpZ2VzdCgpLE1lPWFlKGtlLGhlKS51cGRhdGUoTWUpLmRpZ2VzdCgpLHtrOmhlPWFlKGtlLGhlKS51cGRhdGUoTWUpLnVwZGF0ZShyZS5m''@;'; put 'put ''cm9tKFsxXSkpLnVwZGF0ZShkZSkudXBkYXRlKFRlKS5kaWdlc3QoKSx2Ok1lPWFlKGtlLGhlKS51cGRhdGUoTWUpLmRpZ2VzdCgpfX1mdW5jdGlvbiBzZShkZSx2ZSl7dmFyIEFlPW5ldyBOKGRlKSxrZT0oZGUubGVuZ3RoPDwzKS12ZS5iaXRMZW5ndGgoKTtyZXR1cm4ga2U+MCYmQWUuaXNo''@;'; put 'put ''cm4oa2UpLEFlfWZ1bmN0aW9uIG9lKGRlLHZlLEFlKXt2YXIga2UsU2U7ZG97Zm9yKGtlPXJlLmFsbG9jKDApOzgqa2UubGVuZ3RoPGRlLmJpdExlbmd0aCgpOyl2ZS52PWFlKEFlLHZlLmspLnVwZGF0ZSh2ZS52KS5kaWdlc3QoKSxrZT1yZS5jb25jYXQoW2tlLHZlLnZdKTtTZT1zZShrZSxk''@;'; put 'put ''ZSksdmUuaz1hZShBZSx2ZS5rKS51cGRhdGUodmUudikudXBkYXRlKHJlLmZyb20oWzBdKSkuZGlnZXN0KCksdmUudj1hZShBZSx2ZS5rKS51cGRhdGUodmUudikuZGlnZXN0KCl9d2hpbGUoLTEhPT1TZS5jbXAoZGUpKTtyZXR1cm4gU2V9ZnVuY3Rpb24gY2UoZGUsdmUsQWUsa2Upe3JldHVy''@;'; put 'put ''biBkZS50b1JlZChOLm1vbnQoQWUpKS5yZWRQb3codmUpLmZyb21SZWQoKS5tb2Qoa2UpfVUuZXhwb3J0cz1mdW5jdGlvbihkZSx2ZSxBZSxrZSxTZSl7dmFyIEllPXRlKHZlKTtpZihJZS5jdXJ2ZSl7aWYoImVjZHNhIiE9PWtlJiYiZWNkc2EvcnNhIiE9PWtlKXRocm93IG5ldyBFcnJvcigi''@;'; put 'put ''d3JvbmcgcHJpdmF0ZSBrZXkgdHlwZSIpO3JldHVybiBmdW5jdGlvbihPLHope3ZhciBlZT1LW3ouY3VydmUuam9pbigiLiIpXTtpZighZWUpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIGN1cnZlICIrei5jdXJ2ZS5qb2luKCIuIikpO3ZhciBuZT1uZXcgVyhlZSkua2V5RnJvbVByaXZhdGUo''@;'; put 'put ''ei5wcml2YXRlS2V5KS5zaWduKE8pO3JldHVybiByZS5mcm9tKG5lLnRvREVSKCkpfShkZSxJZSl9aWYoImRzYSI9PT1JZS50eXBlKXtpZigiZHNhIiE9PWtlKXRocm93IG5ldyBFcnJvcigid3JvbmcgcHJpdmF0ZSBrZXkgdHlwZSIpO3JldHVybiBmdW5jdGlvbihPLHosZWUpe2Zvcih2YXIg''@;'; put 'put ''bmUseD16LnBhcmFtcy5wcml2X2tleSxQPXoucGFyYW1zLnAsVj16LnBhcmFtcy5xLFQ9ei5wYXJhbXMuZyxTPW5ldyBOKDApLEY9c2UoTyxWKS5tb2QoVikseWU9ITEsQ2U9Sih4LFYsTyxlZSk7ITE9PT15ZTspUz1jZShULG5lPW9lKFYsQ2UsZWUpLFAsViksMD09PSh5ZT1uZS5pbnZtKFYp''@;'; put 'put ''LmltdWwoRi5hZGQoeC5tdWwoUykpKS5tb2QoVikpLmNtcG4oMCkmJih5ZT0hMSxTPW5ldyBOKDApKTtyZXR1cm4gZnVuY3Rpb24oRGUsUGUpe0RlPURlLnRvQXJyYXkoKSxQZT1QZS50b0FycmF5KCksMTI4JkRlWzBdJiYoRGU9WzBdLmNvbmNhdChEZSkpLDEyOCZQZVswXSYmKFBlPVswXS5j''@;'; put 'put ''b25jYXQoUGUpKTt2YXIgUWU9WzQ4LERlLmxlbmd0aCtQZS5sZW5ndGgrNCwyLERlLmxlbmd0aF07cmV0dXJuIFFlPVFlLmNvbmNhdChEZSxbMixQZS5sZW5ndGhdLFBlKSxyZS5mcm9tKFFlKX0oUyx5ZSl9KGRlLEllLEFlKX1pZigicnNhIiE9PWtlJiYiZWNkc2EvcnNhIiE9PWtlKXRocm93''@;'; put 'put ''IG5ldyBFcnJvcigid3JvbmcgcHJpdmF0ZSBrZXkgdHlwZSIpO2RlPXJlLmNvbmNhdChbU2UsZGVdKTtmb3IodmFyIFRlPUllLm1vZHVsdXMuYnl0ZUxlbmd0aCgpLE1lPVswLDFdO2RlLmxlbmd0aCtNZS5sZW5ndGgrMTxUZTspTWUucHVzaCgyNTUpO01lLnB1c2goMCk7Zm9yKHZhciBoZT0t''@;'; put 'put ''MTsrK2hlPGRlLmxlbmd0aDspTWUucHVzaChkZVtoZV0pO3JldHVybiBZKE1lLEllKX0sVS5leHBvcnRzLmdldEtleT1KLFUuZXhwb3J0cy5tYWtlS2V5PW9lfSw3NzUzOihVLFEsaik9Pnt2YXIgcmU9aig1Njc5KS5CdWZmZXIsYWU9aigzNTUwKSxZPWooNjk0OCkuZWMsVz1qKDk4MCksTj1q''@;'; put 'put ''KDEzMDgpO2Z1bmN0aW9uIHRlKEssSil7aWYoSy5jbXBuKDApPD0wKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaWciKTtpZihLLmNtcChKKT49Sil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgc2lnIil9VS5leHBvcnRzPWZ1bmN0aW9uKEssSixzZSxvZSxjZSl7dmFyIGRlPVcoc2UpO2lm''@;'; put 'put ''KCJlYyI9PT1kZS50eXBlKXtpZigiZWNkc2EiIT09b2UmJiJlY2RzYS9yc2EiIT09b2UpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwdWJsaWMga2V5IHR5cGUiKTtyZXR1cm4gZnVuY3Rpb24oTWUsaGUsTyl7dmFyIHo9TltPLmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oIi4iKV07aWYoIXop''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIGN1cnZlICIrTy5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCIuIikpO3JldHVybiBuZXcgWSh6KS52ZXJpZnkoaGUsTWUsTy5kYXRhLnN1YmplY3RQcml2YXRlS2V5LmRhdGEpfShLLEosZGUpfWlmKCJkc2EiPT09ZGUudHlwZSl7aWYoImRzYSIh''@;'; put 'put ''PT1vZSl0aHJvdyBuZXcgRXJyb3IoIndyb25nIHB1YmxpYyBrZXkgdHlwZSIpO3JldHVybiBmdW5jdGlvbihNZSxoZSxPKXt2YXIgej1PLmRhdGEucCxlZT1PLmRhdGEucSxuZT1PLmRhdGEuZyx4PU8uZGF0YS5wdWJfa2V5LFA9Vy5zaWduYXR1cmUuZGVjb2RlKE1lLCJkZXIiKSxWPVAucyxU''@;'; put 'put ''PVAucjt0ZShWLGVlKSx0ZShULGVlKTt2YXIgUz1hZS5tb250KHopLEY9Vi5pbnZtKGVlKTtyZXR1cm4gMD09PW5lLnRvUmVkKFMpLnJlZFBvdyhuZXcgYWUoaGUpLm11bChGKS5tb2QoZWUpKS5mcm9tUmVkKCkubXVsKHgudG9SZWQoUykucmVkUG93KFQubXVsKEYpLm1vZChlZSkpLmZyb21S''@;'; put 'put ''ZWQoKSkubW9kKHopLm1vZChlZSkuY21wKFQpfShLLEosZGUpfWlmKCJyc2EiIT09b2UmJiJlY2RzYS9yc2EiIT09b2UpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwdWJsaWMga2V5IHR5cGUiKTtKPXJlLmNvbmNhdChbY2UsSl0pO2Zvcih2YXIgdmU9ZGUubW9kdWx1cy5ieXRlTGVuZ3RoKCks''@;'; put 'put ''QWU9WzFdLGtlPTA7Si5sZW5ndGgrQWUubGVuZ3RoKzI8dmU7KUFlLnB1c2goMjU1KSxrZSsrO0FlLnB1c2goMCk7Zm9yKHZhciBTZT0tMTsrK1NlPEoubGVuZ3RoOylBZS5wdXNoKEpbU2VdKTtBZT1yZS5mcm9tKEFlKTt2YXIgSWU9YWUubW9udChkZS5tb2R1bHVzKTtLPShLPW5ldyBhZShL''@;'; put 'put ''KS50b1JlZChJZSkpLnJlZFBvdyhuZXcgYWUoZGUucHVibGljRXhwb25lbnQpKSxLPXJlLmZyb20oSy5mcm9tUmVkKCkudG9BcnJheSgpKTt2YXIgVGU9a2U8OD8xOjA7Zm9yKHZlPU1hdGgubWluKEsubGVuZ3RoLEFlLmxlbmd0aCksSy5sZW5ndGghPT1BZS5sZW5ndGgmJihUZT0xKSxTZT0t''@;'; put 'put ''MTsrK1NlPHZlOylUZXw9S1tTZV1eQWVbU2VdO3JldHVybiAwPT09VGV9fSw1Njc5OihVLFEsaik9Pnt2YXIgcmU9aig4NzY0KSxhZT1yZS5CdWZmZXI7ZnVuY3Rpb24gWShOLHRlKXtmb3IodmFyIEsgaW4gTil0ZVtLXT1OW0tdfWZ1bmN0aW9uIFcoTix0ZSxLKXtyZXR1cm4gYWUoTix0ZSxL''@;'; put 'put ''KX1hZS5mcm9tJiZhZS5hbGxvYyYmYWUuYWxsb2NVbnNhZmUmJmFlLmFsbG9jVW5zYWZlU2xvdz9VLmV4cG9ydHM9cmU6KFkocmUsUSksUS5CdWZmZXI9VyksVy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShhZS5wcm90b3R5cGUpLFkoYWUsVyksVy5mcm9tPWZ1bmN0aW9uKE4sdGUsSyl7aWYo''@;'; put 'put ''Im51bWJlciI9PXR5cGVvZiBOKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyIik7cmV0dXJuIGFlKE4sdGUsSyl9LFcuYWxsb2M9ZnVuY3Rpb24oTix0ZSxLKXtpZigibnVtYmVyIiE9dHlwZW9mIE4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1l''@;'; put 'put ''bnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciBKPWFlKE4pO3JldHVybiB2b2lkIDAhPT10ZT8ic3RyaW5nIj09dHlwZW9mIEs/Si5maWxsKHRlLEspOkouZmlsbCh0ZSk6Si5maWxsKDApLEp9LFcuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oTil7aWYoIm51bWJlciIhPXR5cGVvZiBOKXRocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gYWUoTil9LFcuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKE4pe2lmKCJudW1iZXIiIT10eXBlb2YgTil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIHJl''@;'; put 'put ''LlNsb3dCdWZmZXIoTil9fSw3Mjk1OihVLFEsaik9Pnt2YXIgcmU9aig4NzY0KS5CdWZmZXI7VS5leHBvcnRzPWZ1bmN0aW9uKGFlLFkpe2Zvcih2YXIgVz1NYXRoLm1pbihhZS5sZW5ndGgsWS5sZW5ndGgpLE49bmV3IHJlKFcpLHRlPTA7dGU8VzsrK3RlKU5bdGVdPWFlW3RlXV5ZW3RlXTty''@;'; put 'put ''ZXR1cm4gTn19LDg3NjQ6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig1MTA4KTtjb25zdCBhZT1qKDk3NDIpLFk9aig2NDUpLFc9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbC5mb3I/U3ltYm9sLmZvcigibm9kZWpzLnV0aWwuaW5z''@;'; put 'put ''cGVjdC5jdXN0b20iKTpudWxsO1EuQnVmZmVyPUssUS5TbG93QnVmZmVyPWZ1bmN0aW9uKEdlKXtyZXR1cm4rR2UhPUdlJiYoR2U9MCksSy5hbGxvYygrR2UpfSxRLklOU1BFQ1RfTUFYX0JZVEVTPTUwO2NvbnN0IE49MjE0NzQ4MzY0NztmdW5jdGlvbiB0ZShHZSl7aWYoR2U+Til0aHJvdyBu''@;'; put 'put ''ZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK0dlKyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKTtjb25zdCBVZT1uZXcgVWludDhBcnJheShHZSk7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihVZSxLLnByb3RvdHlwZSksVWV9ZnVuY3Rpb24gSyhHZSxVZSx5dCl7aWYo''@;'; put 'put ''Im51bWJlciI9PXR5cGVvZiBHZSl7aWYoInN0cmluZyI9PXR5cGVvZiBVZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInN0cmluZyIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTtyZXR1cm4gb2UoR2UpfXJldHVybiBKKEdlLFVlLHl0''@;'; put 'put ''KX1mdW5jdGlvbiBKKEdlLFVlLHl0KXtpZigic3RyaW5nIj09dHlwZW9mIEdlKXJldHVybiBmdW5jdGlvbihnbixkbil7aWYoInN0cmluZyI9PXR5cGVvZiBkbiYmIiIhPT1kbnx8KGRuPSJ1dGY4IiksIUsuaXNFbmNvZGluZyhkbikpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNv''@;'; put 'put ''ZGluZzogIitkbik7Y29uc3QgeW49MHxBZShnbixkbik7bGV0IGxuPXRlKHluKTtjb25zdCBObj1sbi53cml0ZShnbixkbik7cmV0dXJuIE5uIT09eW4mJihsbj1sbi5zbGljZSgwLE5uKSksbG59KEdlLFVlKTtpZihBcnJheUJ1ZmZlci5pc1ZpZXcoR2UpKXJldHVybiBmdW5jdGlvbihnbil7''@;'; put 'put ''aWYobHQoZ24sVWludDhBcnJheSkpe2NvbnN0IGRuPW5ldyBVaW50OEFycmF5KGduKTtyZXR1cm4gZGUoZG4uYnVmZmVyLGRuLmJ5dGVPZmZzZXQsZG4uYnl0ZUxlbmd0aCl9cmV0dXJuIGNlKGduKX0oR2UpO2lmKG51bGw9PUdlKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBmaXJzdCBhcmd1''@;'; put 'put ''bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICIrdHlwZW9mIEdlKTtpZihsdChHZSxBcnJheUJ1ZmZlcil8fEdlJiZsdChHZS5idWZmZXIsQXJyYXlCdWZmZXIpfHwi''@;'; put 'put ''dW5kZWZpbmVkIiE9dHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyJiYobHQoR2UsU2hhcmVkQXJyYXlCdWZmZXIpfHxHZSYmbHQoR2UuYnVmZmVyLFNoYXJlZEFycmF5QnVmZmVyKSkpcmV0dXJuIGRlKEdlLFVlLHl0KTtpZigibnVtYmVyIj09dHlwZW9mIEdlKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''J1RoZSAidmFsdWUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlIG51bWJlcicpO2NvbnN0IGp0PUdlLnZhbHVlT2YmJkdlLnZhbHVlT2YoKTtpZihudWxsIT1qdCYmanQhPT1HZSlyZXR1cm4gSy5mcm9tKGp0LFVlLHl0KTtjb25zdCBKdD1mdW5j''@;'; put 'put ''dGlvbihnbil7aWYoSy5pc0J1ZmZlcihnbikpe2NvbnN0IGRuPTB8dmUoZ24ubGVuZ3RoKSx5bj10ZShkbik7cmV0dXJuIDA9PT15bi5sZW5ndGh8fGduLmNvcHkoeW4sMCwwLGRuKSx5bn1yZXR1cm4gdm9pZCAwIT09Z24ubGVuZ3RoPyJudW1iZXIiIT10eXBlb2YgZ24ubGVuZ3RofHxMdChn''@;'; put 'put ''bi5sZW5ndGgpP3RlKDApOmNlKGduKToiQnVmZmVyIj09PWduLnR5cGUmJkFycmF5LmlzQXJyYXkoZ24uZGF0YSk/Y2UoZ24uZGF0YSk6dm9pZCAwfShHZSk7aWYoSnQpcmV0dXJuIEp0O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1TeW1ib2wudG9QcmltaXRpdmUmJiJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBHZVtTeW1ib2wudG9QcmltaXRpdmVdKXJldHVybiBLLmZyb20oR2VbU3ltYm9sLnRvUHJpbWl0aXZlXSgic3RyaW5nIiksVWUseXQpO3Rocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVm''@;'; put 'put ''ZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICIrdHlwZW9mIEdlKX1mdW5jdGlvbiBzZShHZSl7aWYoIm51bWJlciIhPXR5cGVvZiBHZSl0aHJvdyBuZXcgVHlwZUVycm9yKCcic2l6ZSIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBl''@;'; put 'put ''IG51bWJlcicpO2lmKEdlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJytHZSsnIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gInNpemUiJyl9ZnVuY3Rpb24gb2UoR2Upe3JldHVybiBzZShHZSksdGUoR2U8MD8wOjB8dmUoR2UpKX1mdW5jdGlvbiBjZShHZSl7Y29uc3QgVWU9''@;'; put 'put ''R2UubGVuZ3RoPDA/MDowfHZlKEdlLmxlbmd0aCkseXQ9dGUoVWUpO2ZvcihsZXQganQ9MDtqdDxVZTtqdCs9MSl5dFtqdF09MjU1JkdlW2p0XTtyZXR1cm4geXR9ZnVuY3Rpb24gZGUoR2UsVWUseXQpe2lmKFVlPDB8fEdlLmJ5dGVMZW5ndGg8VWUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJv''@;'; put 'put ''ZmZzZXQiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpO2lmKEdlLmJ5dGVMZW5ndGg8VWUrKHl0fHwwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignImxlbmd0aCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJyk7bGV0IGp0O3JldHVybiBqdD12b2lkIDA9PT1VZSYmdm9pZCAwPT09''@;'; put 'put ''eXQ/bmV3IFVpbnQ4QXJyYXkoR2UpOnZvaWQgMD09PXl0P25ldyBVaW50OEFycmF5KEdlLFVlKTpuZXcgVWludDhBcnJheShHZSxVZSx5dCksT2JqZWN0LnNldFByb3RvdHlwZU9mKGp0LEsucHJvdG90eXBlKSxqdH1mdW5jdGlvbiB2ZShHZSl7aWYoR2U+PU4pdGhyb3cgbmV3IFJhbmdlRXJy''@;'; put 'put ''b3IoIkF0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gc2l6ZTogMHgiK04udG9TdHJpbmcoMTYpKyIgYnl0ZXMiKTtyZXR1cm4gMHxHZX1mdW5jdGlvbiBBZShHZSxVZSl7aWYoSy5pc0J1ZmZlcihHZSkpcmV0dXJuIEdlLmxlbmd0aDtpZihBcnJheUJ1ZmZl''@;'; put 'put ''ci5pc1ZpZXcoR2UpfHxsdChHZSxBcnJheUJ1ZmZlcikpcmV0dXJuIEdlLmJ5dGVMZW5ndGg7aWYoInN0cmluZyIhPXR5cGVvZiBHZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInN0cmluZyIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgb3IgQXJyYXlC''@;'; put 'put ''dWZmZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgR2UpO2NvbnN0IHl0PUdlLmxlbmd0aCxqdD1hcmd1bWVudHMubGVuZ3RoPjImJiEwPT09YXJndW1lbnRzWzJdO2lmKCFqdCYmMD09PXl0KXJldHVybiAwO2xldCBKdD0hMTtmb3IoOzspc3dpdGNoKFVlKXtjYXNlImFzY2lpIjpjYXNlImxh''@;'; put 'put ''dGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiB5dDtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBfdChHZSkubGVuZ3RoO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gMip5dDtjYXNlImhleCI6cmV0dXJuIHl0Pj4+MTtjYXNl''@;'; put 'put ''ImJhc2U2NCI6cmV0dXJuIHR0KEdlKS5sZW5ndGg7ZGVmYXVsdDppZihKdClyZXR1cm4ganQ/LTE6X3QoR2UpLmxlbmd0aDtVZT0oIiIrVWUpLnRvTG93ZXJDYXNlKCksSnQ9ITB9fWZ1bmN0aW9uIGtlKEdlLFVlLHl0KXtsZXQganQ9ITE7aWYoKHZvaWQgMD09PVVlfHxVZTwwKSYmKFVlPTAp''@;'; put 'put ''LFVlPnRoaXMubGVuZ3RofHwoKHZvaWQgMD09PXl0fHx5dD50aGlzLmxlbmd0aCkmJih5dD10aGlzLmxlbmd0aCkseXQ8PTApfHwoeXQ+Pj49MCk8PShVZT4+Pj0wKSlyZXR1cm4iIjtmb3IoR2V8fChHZT0idXRmOCIpOzspc3dpdGNoKEdlKXtjYXNlImhleCI6cmV0dXJuIFModGhpcyxVZSx5''@;'; put 'put ''dCk7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4geCh0aGlzLFVlLHl0KTtjYXNlImFzY2lpIjpyZXR1cm4gVih0aGlzLFVlLHl0KTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBUKHRoaXMsVWUseXQpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gbmUodGhpcyxVZSx5dCk7Y2Fz''@;'; put 'put ''ZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBGKHRoaXMsVWUseXQpO2RlZmF1bHQ6aWYoanQpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitHZSk7R2U9KEdlKyIiKS50b0xvd2VyQ2FzZSgpLGp0PSEwfX1mdW5j''@;'; put 'put ''dGlvbiBTZShHZSxVZSx5dCl7Y29uc3QganQ9R2VbVWVdO0dlW1VlXT1HZVt5dF0sR2VbeXRdPWp0fWZ1bmN0aW9uIEllKEdlLFVlLHl0LGp0LEp0KXtpZigwPT09R2UubGVuZ3RoKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2YgeXQ/KGp0PXl0LHl0PTApOnl0PjIxNDc0ODM2NDc/eXQ9''@;'; put 'put ''MjE0NzQ4MzY0Nzp5dDwtMjE0NzQ4MzY0OCYmKHl0PS0yMTQ3NDgzNjQ4KSxMdCh5dD0reXQpJiYoeXQ9SnQ/MDpHZS5sZW5ndGgtMSkseXQ8MCYmKHl0PUdlLmxlbmd0aCt5dCkseXQ+PUdlLmxlbmd0aCl7aWYoSnQpcmV0dXJuLTE7eXQ9R2UubGVuZ3RoLTF9ZWxzZSBpZih5dDwwKXtpZigh''@;'; put 'put ''SnQpcmV0dXJuLTE7eXQ9MH1pZigic3RyaW5nIj09dHlwZW9mIFVlJiYoVWU9Sy5mcm9tKFVlLGp0KSksSy5pc0J1ZmZlcihVZSkpcmV0dXJuIDA9PT1VZS5sZW5ndGg/LTE6VGUoR2UsVWUseXQsanQsSnQpO2lmKCJudW1iZXIiPT10eXBlb2YgVWUpcmV0dXJuIFVlJj0yNTUsImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/SnQ/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKEdlLFVlLHl0KTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKEdlLFVlLHl0KTpUZShHZSxbVWVdLHl0LGp0LEp0KTt0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBUZShHZSxVZSx5dCxqdCxKdCl7bGV0IGduLGRuPTEseW49R2UubGVuZ3RoLGxuPVVlLmxlbmd0aDtpZih2b2lkIDAhPT1qdCYmKCJ1Y3MyIj09PShqdD1TdHJpbmcoanQpLnRvTG93ZXJD''@;'; put 'put ''YXNlKCkpfHwidWNzLTIiPT09anR8fCJ1dGYxNmxlIj09PWp0fHwidXRmLTE2bGUiPT09anQpKXtpZihHZS5sZW5ndGg8Mnx8VWUubGVuZ3RoPDIpcmV0dXJuLTE7ZG49Mix5bi89Mixsbi89Mix5dC89Mn1mdW5jdGlvbiBObihibixlcil7cmV0dXJuIDE9PT1kbj9ibltlcl06Ym4ucmVhZFVJ''@;'; put 'put ''bnQxNkJFKGVyKmRuKX1pZihKdCl7bGV0IGJuPS0xO2Zvcihnbj15dDtnbjx5bjtnbisrKWlmKE5uKEdlLGduKT09PU5uKFVlLC0xPT09Ym4/MDpnbi1ibikpe2lmKC0xPT09Ym4mJihibj1nbiksZ24tYm4rMT09PWxuKXJldHVybiBibipkbn1lbHNlLTEhPT1ibiYmKGduLT1nbi1ibiksYm49''@;'; put 'put ''LTF9ZWxzZSBmb3IoeXQrbG4+eW4mJih5dD15bi1sbiksZ249eXQ7Z24+PTA7Z24tLSl7bGV0IGJuPSEwO2ZvcihsZXQgZXI9MDtlcjxsbjtlcisrKWlmKE5uKEdlLGduK2VyKSE9PU5uKFVlLGVyKSl7Ym49ITE7YnJlYWt9aWYoYm4pcmV0dXJuIGdufXJldHVybi0xfWZ1bmN0aW9uIE1lKEdl''@;'; put 'put ''LFVlLHl0LGp0KXt5dD1OdW1iZXIoeXQpfHwwO2NvbnN0IEp0PUdlLmxlbmd0aC15dDtqdD8oanQ9TnVtYmVyKGp0KSk+SnQmJihqdD1KdCk6anQ9SnQ7Y29uc3QgZ249VWUubGVuZ3RoO2xldCBkbjtmb3IoanQ+Z24vMiYmKGp0PWduLzIpLGRuPTA7ZG48anQ7Kytkbil7Y29uc3QgeW49cGFy''@;'; put 'put ''c2VJbnQoVWUuc3Vic3RyKDIqZG4sMiksMTYpO2lmKEx0KHluKSlyZXR1cm4gZG47R2VbeXQrZG5dPXlufXJldHVybiBkbn1mdW5jdGlvbiBoZShHZSxVZSx5dCxqdCl7cmV0dXJuIGV0KF90KFVlLEdlLmxlbmd0aC15dCksR2UseXQsanQpfWZ1bmN0aW9uIE8oR2UsVWUseXQsanQpe3JldHVy''@;'; put 'put ''biBldChmdW5jdGlvbihKdCl7Y29uc3QgZ249W107Zm9yKGxldCBkbj0wO2RuPEp0Lmxlbmd0aDsrK2RuKWduLnB1c2goMjU1Jkp0LmNoYXJDb2RlQXQoZG4pKTtyZXR1cm4gZ259KFVlKSxHZSx5dCxqdCl9ZnVuY3Rpb24geihHZSxVZSx5dCxqdCl7cmV0dXJuIGV0KHR0KFVlKSxHZSx5dCxq''@;'; put 'put ''dCl9ZnVuY3Rpb24gZWUoR2UsVWUseXQsanQpe3JldHVybiBldChmdW5jdGlvbihKdCxnbil7bGV0IGRuLHluLGxuO2NvbnN0IE5uPVtdO2ZvcihsZXQgYm49MDtibjxKdC5sZW5ndGgmJiEoKGduLT0yKTwwKTsrK2JuKWRuPUp0LmNoYXJDb2RlQXQoYm4pLHluPWRuPj44LGxuPWRuJTI1NixO''@;'; put 'put ''bi5wdXNoKGxuKSxObi5wdXNoKHluKTtyZXR1cm4gTm59KFVlLEdlLmxlbmd0aC15dCksR2UseXQsanQpfWZ1bmN0aW9uIG5lKEdlLFVlLHl0KXtyZXR1cm4gYWUuZnJvbUJ5dGVBcnJheSgwPT09VWUmJnl0PT09R2UubGVuZ3RoP0dlOkdlLnNsaWNlKFVlLHl0KSl9ZnVuY3Rpb24geChHZSxV''@;'; put 'put ''ZSx5dCl7eXQ9TWF0aC5taW4oR2UubGVuZ3RoLHl0KTtjb25zdCBqdD1bXTtsZXQgSnQ9VWU7Zm9yKDtKdDx5dDspe2NvbnN0IGduPUdlW0p0XTtsZXQgZG49bnVsbCx5bj1nbj4yMzk/NDpnbj4yMjM/Mzpnbj4xOTE/MjoxO2lmKEp0K3luPD15dCl7bGV0IGxuLE5uLGJuLGVyO3N3aXRjaCh5''@;'; put 'put ''bil7Y2FzZSAxOmduPDEyOCYmKGRuPWduKTticmVhaztjYXNlIDI6bG49R2VbSnQrMV0sMTI4PT0oMTkyJmxuKSYmKGVyPSgzMSZnbik8PDZ8NjMmbG4sZXI+MTI3JiYoZG49ZXIpKTticmVhaztjYXNlIDM6bG49R2VbSnQrMV0sTm49R2VbSnQrMl0sMTI4PT0oMTkyJmxuKSYmMTI4PT0oMTky''@;'; put 'put ''Jk5uKSYmKGVyPSgxNSZnbik8PDEyfCg2MyZsbik8PDZ8NjMmTm4sZXI+MjA0NyYmKGVyPDU1Mjk2fHxlcj41NzM0MykmJihkbj1lcikpO2JyZWFrO2Nhc2UgNDpsbj1HZVtKdCsxXSxObj1HZVtKdCsyXSxibj1HZVtKdCszXSwxMjg9PSgxOTImbG4pJiYxMjg9PSgxOTImTm4pJiYxMjg9PSgx''@;'; put 'put ''OTImYm4pJiYoZXI9KDE1JmduKTw8MTh8KDYzJmxuKTw8MTJ8KDYzJk5uKTw8Nnw2MyZibixlcj42NTUzNSYmZXI8MTExNDExMiYmKGRuPWVyKSl9fW51bGw9PT1kbj8oZG49NjU1MzMseW49MSk6ZG4+NjU1MzUmJihkbi09NjU1MzYsanQucHVzaChkbj4+PjEwJjEwMjN8NTUyOTYpLGRuPTU2''@;'; put 'put ''MzIwfDEwMjMmZG4pLGp0LnB1c2goZG4pLEp0Kz15bn1yZXR1cm4gZnVuY3Rpb24oZ24pe2NvbnN0IGRuPWduLmxlbmd0aDtpZihkbjw9UClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZ24pO2xldCB5bj0iIixsbj0wO2Zvcig7bG48ZG47KXluKz1TdHJpbmcuZnJv''@;'; put 'put ''bUNoYXJDb2RlLmFwcGx5KFN0cmluZyxnbi5zbGljZShsbixsbis9UCkpO3JldHVybiB5bn0oanQpfVEua01heExlbmd0aD1OLChLLlRZUEVEX0FSUkFZX1NVUFBPUlQ9ZnVuY3Rpb24oKXt0cnl7Y29uc3QgR2U9bmV3IFVpbnQ4QXJyYXkoMSksVWU9e2ZvbzpmdW5jdGlvbigpe3JldHVybiA0''@;'; put 'put ''Mn19O3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoVWUsVWludDhBcnJheS5wcm90b3R5cGUpLE9iamVjdC5zZXRQcm90b3R5cGVPZihHZSxVZSksNDI9PT1HZS5mb28oKX1jYXRjaChHZSl7cmV0dXJuITF9fSgpKXx8dm9pZCAwPT09cmV8fCJmdW5jdGlvbiIhPXR5cGVvZiByZS5lcnJv''@;'; put 'put ''cnx8cmUuZXJyb3IoIlRoaXMgYnJvd3NlciBsYWNrcyB0eXBlZCBhcnJheSAoVWludDhBcnJheSkgc3VwcG9ydCB3aGljaCBpcyByZXF1aXJlZCBieSBgYnVmZmVyYCB2NS54LiBVc2UgYGJ1ZmZlcmAgdjQueCBpZiB5b3UgcmVxdWlyZSBvbGQgYnJvd3NlciBzdXBwb3J0LiIpLE9iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShLLnByb3RvdHlwZSwicGFyZW50Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtpZihLLmlzQnVmZmVyKHRoaXMpKXJldHVybiB0aGlzLmJ1ZmZlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoSy5wcm90b3R5cGUsIm9mZnNldCIse2VudW1lcmFibGU6ITAs''@;'; put 'put ''Z2V0OmZ1bmN0aW9uKCl7aWYoSy5pc0J1ZmZlcih0aGlzKSlyZXR1cm4gdGhpcy5ieXRlT2Zmc2V0fX0pLEsucG9vbFNpemU9ODE5MixLLmZyb209ZnVuY3Rpb24oR2UsVWUseXQpe3JldHVybiBKKEdlLFVlLHl0KX0sT2JqZWN0LnNldFByb3RvdHlwZU9mKEsucHJvdG90eXBlLFVpbnQ4QXJy''@;'; put 'put ''YXkucHJvdG90eXBlKSxPYmplY3Quc2V0UHJvdG90eXBlT2YoSyxVaW50OEFycmF5KSxLLmFsbG9jPWZ1bmN0aW9uKEdlLFVlLHl0KXtyZXR1cm4gSnQ9VWUsZ249eXQsc2UoanQ9R2UpLGp0PD0wP3RlKGp0KTp2b2lkIDAhPT1KdD8ic3RyaW5nIj09dHlwZW9mIGduP3RlKGp0KS5maWxsKEp0''@;'; put 'put ''LGduKTp0ZShqdCkuZmlsbChKdCk6dGUoanQpO3ZhciBqdCxKdCxnbn0sSy5hbGxvY1Vuc2FmZT1mdW5jdGlvbihHZSl7cmV0dXJuIG9lKEdlKX0sSy5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oR2Upe3JldHVybiBvZShHZSl9LEsuaXNCdWZmZXI9ZnVuY3Rpb24oR2Upe3JldHVybiBudWxs''@;'; put 'put ''IT1HZSYmITA9PT1HZS5faXNCdWZmZXImJkdlIT09Sy5wcm90b3R5cGV9LEsuY29tcGFyZT1mdW5jdGlvbihHZSxVZSl7aWYobHQoR2UsVWludDhBcnJheSkmJihHZT1LLmZyb20oR2UsR2Uub2Zmc2V0LEdlLmJ5dGVMZW5ndGgpKSxsdChVZSxVaW50OEFycmF5KSYmKFVlPUsuZnJvbShVZSxV''@;'; put 'put ''ZS5vZmZzZXQsVWUuYnl0ZUxlbmd0aCkpLCFLLmlzQnVmZmVyKEdlKXx8IUsuaXNCdWZmZXIoVWUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAiYnVmMSIsICJidWYyIiBhcmd1bWVudHMgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheScpO2lmKEdlPT09VWUpcmV0''@;'; put 'put ''dXJuIDA7bGV0IHl0PUdlLmxlbmd0aCxqdD1VZS5sZW5ndGg7Zm9yKGxldCBKdD0wLGduPU1hdGgubWluKHl0LGp0KTtKdDxnbjsrK0p0KWlmKEdlW0p0XSE9PVVlW0p0XSl7eXQ9R2VbSnRdLGp0PVVlW0p0XTticmVha31yZXR1cm4geXQ8anQ/LTE6anQ8eXQ/MTowfSxLLmlzRW5jb2Rpbmc9''@;'; put 'put ''ZnVuY3Rpb24oR2Upe3N3aXRjaChTdHJpbmcoR2UpLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaGV4IjpjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxl''@;'; put 'put ''IjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0sSy5jb25jYXQ9ZnVuY3Rpb24oR2UsVWUpe2lmKCFBcnJheS5pc0FycmF5KEdlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aWYoMD09''@;'; put 'put ''PUdlLmxlbmd0aClyZXR1cm4gSy5hbGxvYygwKTtsZXQgeXQ7aWYodm9pZCAwPT09VWUpZm9yKFVlPTAseXQ9MDt5dDxHZS5sZW5ndGg7Kyt5dClVZSs9R2VbeXRdLmxlbmd0aDtjb25zdCBqdD1LLmFsbG9jVW5zYWZlKFVlKTtsZXQgSnQ9MDtmb3IoeXQ9MDt5dDxHZS5sZW5ndGg7Kyt5dCl7''@;'; put 'put ''bGV0IGduPUdlW3l0XTtpZihsdChnbixVaW50OEFycmF5KSlKdCtnbi5sZW5ndGg+anQubGVuZ3RoPyhLLmlzQnVmZmVyKGduKXx8KGduPUsuZnJvbShnbikpLGduLmNvcHkoanQsSnQpKTpVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChqdCxnbixKdCk7ZWxzZXtpZighSy5pc0J1ZmZl''@;'; put 'put ''cihnbikpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2duLmNvcHkoanQsSnQpfUp0Kz1nbi5sZW5ndGh9cmV0dXJuIGp0fSxLLmJ5dGVMZW5ndGg9QWUsSy5wcm90b3R5cGUuX2lzQnVmZmVyPSEwLEsucHJvdG90eXBl''@;'; put 'put ''LnN3YXAxNj1mdW5jdGlvbigpe2NvbnN0IEdlPXRoaXMubGVuZ3RoO2lmKEdlJTIhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzIik7Zm9yKGxldCBVZT0wO1VlPEdlO1VlKz0yKVNlKHRoaXMsVWUsVWUrMSk7cmV0dXJu''@;'; put 'put ''IHRoaXN9LEsucHJvdG90eXBlLnN3YXAzMj1mdW5jdGlvbigpe2NvbnN0IEdlPXRoaXMubGVuZ3RoO2lmKEdlJTQhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzIik7Zm9yKGxldCBVZT0wO1VlPEdlO1VlKz00KVNlKHRo''@;'; put 'put ''aXMsVWUsVWUrMyksU2UodGhpcyxVZSsxLFVlKzIpO3JldHVybiB0aGlzfSxLLnByb3RvdHlwZS5zd2FwNjQ9ZnVuY3Rpb24oKXtjb25zdCBHZT10aGlzLmxlbmd0aDtpZihHZSU4IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQt''@;'; put 'put ''Yml0cyIpO2ZvcihsZXQgVWU9MDtVZTxHZTtVZSs9OClTZSh0aGlzLFVlLFVlKzcpLFNlKHRoaXMsVWUrMSxVZSs2KSxTZSh0aGlzLFVlKzIsVWUrNSksU2UodGhpcyxVZSszLFVlKzQpO3JldHVybiB0aGlzfSxLLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZz1LLnByb3RvdHlwZS50b1N0cmlu''@;'; put 'put ''Zz1mdW5jdGlvbigpe2NvbnN0IEdlPXRoaXMubGVuZ3RoO3JldHVybiAwPT09R2U/IiI6MD09PWFyZ3VtZW50cy5sZW5ndGg/eCh0aGlzLDAsR2UpOmtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sSy5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKEdlKXtpZighSy5pc0J1ZmZlcihHZSkpdGhy''@;'; put 'put ''b3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0aGlzPT09R2V8fDA9PT1LLmNvbXBhcmUodGhpcyxHZSl9LEsucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtsZXQgR2U9IiI7Y29uc3QgVWU9US5JTlNQRUNUX01BWF9CWVRFUztyZXR1cm4g''@;'; put 'put ''R2U9dGhpcy50b1N0cmluZygiaGV4IiwwLFVlKS5yZXBsYWNlKC8oLnsyfSkvZywiJDEgIikudHJpbSgpLHRoaXMubGVuZ3RoPlVlJiYoR2UrPSIgLi4uICIpLCI8QnVmZmVyICIrR2UrIj4ifSxXJiYoSy5wcm90b3R5cGVbV109Sy5wcm90b3R5cGUuaW5zcGVjdCksSy5wcm90b3R5cGUuY29t''@;'; put 'put ''cGFyZT1mdW5jdGlvbihHZSxVZSx5dCxqdCxKdCl7aWYobHQoR2UsVWludDhBcnJheSkmJihHZT1LLmZyb20oR2UsR2Uub2Zmc2V0LEdlLmJ5dGVMZW5ndGgpKSwhSy5pc0J1ZmZlcihHZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJ0YXJnZXQiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9m''@;'; put 'put ''IHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXkuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgR2UpO2lmKHZvaWQgMD09PVVlJiYoVWU9MCksdm9pZCAwPT09eXQmJih5dD1HZT9HZS5sZW5ndGg6MCksdm9pZCAwPT09anQmJihqdD0wKSx2b2lkIDA9PT1KdCYmKEp0PXRoaXMubGVuZ3RoKSxVZTww''@;'; put 'put ''fHx5dD5HZS5sZW5ndGh8fGp0PDB8fEp0PnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJvdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihqdD49SnQmJlVlPj15dClyZXR1cm4gMDtpZihqdD49SnQpcmV0dXJuLTE7aWYoVWU+PXl0KXJldHVybiAxO2lmKHRoaXM9PT1HZSlyZXR1cm4g''@;'; put 'put ''MDtsZXQgZ249KEp0Pj4+PTApLShqdD4+Pj0wKSxkbj0oeXQ+Pj49MCktKFVlPj4+PTApO2NvbnN0IHluPU1hdGgubWluKGduLGRuKSxsbj10aGlzLnNsaWNlKGp0LEp0KSxObj1HZS5zbGljZShVZSx5dCk7Zm9yKGxldCBibj0wO2JuPHluOysrYm4paWYobG5bYm5dIT09Tm5bYm5dKXtnbj1s''@;'; put 'put ''bltibl0sZG49Tm5bYm5dO2JyZWFrfXJldHVybiBnbjxkbj8tMTpkbjxnbj8xOjB9LEsucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKEdlLFVlLHl0KXtyZXR1cm4tMSE9PXRoaXMuaW5kZXhPZihHZSxVZSx5dCl9LEsucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oR2UsVWUseXQpe3Jl''@;'; put 'put ''dHVybiBJZSh0aGlzLEdlLFVlLHl0LCEwKX0sSy5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24oR2UsVWUseXQpe3JldHVybiBJZSh0aGlzLEdlLFVlLHl0LCExKX0sSy5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oR2UsVWUseXQsanQpe2lmKHZvaWQgMD09PVVlKWp0PSJ1dGY4Iix5''@;'; put 'put ''dD10aGlzLmxlbmd0aCxVZT0wO2Vsc2UgaWYodm9pZCAwPT09eXQmJiJzdHJpbmciPT10eXBlb2YgVWUpanQ9VWUseXQ9dGhpcy5sZW5ndGgsVWU9MDtlbHNle2lmKCFpc0Zpbml0ZShVZSkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0Wywg''@;'; put 'put ''bGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpO1VlPj4+PTAsaXNGaW5pdGUoeXQpPyh5dD4+Pj0wLHZvaWQgMD09PWp0JiYoanQ9InV0ZjgiKSk6KGp0PXl0LHl0PXZvaWQgMCl9Y29uc3QgSnQ9dGhpcy5sZW5ndGgtVWU7aWYoKHZvaWQgMD09PXl0fHx5dD5KdCkmJih5dD1KdCks''@;'; put 'put ''R2UubGVuZ3RoPjAmJih5dDwwfHxVZTwwKXx8VWU+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7anR8fChqdD0idXRmOCIpO2xldCBnbj0hMTtmb3IoOzspc3dpdGNoKGp0KXtjYXNlImhleCI6cmV0dXJu''@;'; put 'put ''IE1lKHRoaXMsR2UsVWUseXQpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIGhlKHRoaXMsR2UsVWUseXQpO2Nhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIE8odGhpcyxHZSxVZSx5dCk7Y2FzZSJiYXNlNjQiOnJldHVybiB6KHRoaXMsR2UsVWUseXQp''@;'; put 'put ''O2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gZWUodGhpcyxHZSxVZSx5dCk7ZGVmYXVsdDppZihnbil0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2p0KTtqdD0oIiIranQpLnRvTG93ZXJDYXNlKCksZ249''@;'; put 'put ''ITB9fSxLLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O2NvbnN0IFA9NDA5NjtmdW5jdGlvbiBWKEdlLFVlLHl0KXtsZXQganQ9IiI7eXQ9TWF0aC5taW4o''@;'; put 'put ''R2UubGVuZ3RoLHl0KTtmb3IobGV0IEp0PVVlO0p0PHl0OysrSnQpanQrPVN0cmluZy5mcm9tQ2hhckNvZGUoMTI3JkdlW0p0XSk7cmV0dXJuIGp0fWZ1bmN0aW9uIFQoR2UsVWUseXQpe2xldCBqdD0iIjt5dD1NYXRoLm1pbihHZS5sZW5ndGgseXQpO2ZvcihsZXQgSnQ9VWU7SnQ8eXQ7KytK''@;'; put 'put ''dClqdCs9U3RyaW5nLmZyb21DaGFyQ29kZShHZVtKdF0pO3JldHVybiBqdH1mdW5jdGlvbiBTKEdlLFVlLHl0KXtjb25zdCBqdD1HZS5sZW5ndGg7KCFVZXx8VWU8MCkmJihVZT0wKSwoIXl0fHx5dDwwfHx5dD5qdCkmJih5dD1qdCk7bGV0IEp0PSIiO2ZvcihsZXQgZ249VWU7Z248eXQ7Kytn''@;'; put 'put ''bilKdCs9Q3RbR2VbZ25dXTtyZXR1cm4gSnR9ZnVuY3Rpb24gRihHZSxVZSx5dCl7Y29uc3QganQ9R2Uuc2xpY2UoVWUseXQpO2xldCBKdD0iIjtmb3IobGV0IGduPTA7Z248anQubGVuZ3RoLTE7Z24rPTIpSnQrPVN0cmluZy5mcm9tQ2hhckNvZGUoanRbZ25dKzI1NipqdFtnbisxXSk7cmV0''@;'; put 'put ''dXJuIEp0fWZ1bmN0aW9uIHllKEdlLFVlLHl0KXtpZihHZSUxIT0wfHxHZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJvZmZzZXQgaXMgbm90IHVpbnQiKTtpZihHZStVZT55dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCIpfWZ1''@;'; put 'put ''bmN0aW9uIENlKEdlLFVlLHl0LGp0LEp0LGduKXtpZighSy5pc0J1ZmZlcihHZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImJ1ZmZlciIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpO2lmKFVlPkp0fHxVZTxnbil0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1''@;'; put 'put ''bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYoeXQranQ+R2UubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBEZShHZSxVZSx5dCxqdCxKdCl7QXQoVWUsanQsSnQsR2UseXQsNyk7bGV0IGduPU51bWJlcihVZSZCaWdJbnQoNDI5NDk2''@;'; put 'put ''NzI5NSkpO0dlW3l0KytdPWduLGduPj49OCxHZVt5dCsrXT1nbixnbj4+PTgsR2VbeXQrK109Z24sZ24+Pj04LEdlW3l0KytdPWduO2xldCBkbj1OdW1iZXIoVWU+PkJpZ0ludCgzMikmQmlnSW50KDQyOTQ5NjcyOTUpKTtyZXR1cm4gR2VbeXQrK109ZG4sZG4+Pj04LEdlW3l0KytdPWRuLGRu''@;'; put 'put ''Pj49OCxHZVt5dCsrXT1kbixkbj4+PTgsR2VbeXQrK109ZG4seXR9ZnVuY3Rpb24gUGUoR2UsVWUseXQsanQsSnQpe0F0KFVlLGp0LEp0LEdlLHl0LDcpO2xldCBnbj1OdW1iZXIoVWUmQmlnSW50KDQyOTQ5NjcyOTUpKTtHZVt5dCs3XT1nbixnbj4+PTgsR2VbeXQrNl09Z24sZ24+Pj04LEdl''@;'; put 'put ''W3l0KzVdPWduLGduPj49OCxHZVt5dCs0XT1nbjtsZXQgZG49TnVtYmVyKFVlPj5CaWdJbnQoMzIpJkJpZ0ludCg0Mjk0OTY3Mjk1KSk7cmV0dXJuIEdlW3l0KzNdPWRuLGRuPj49OCxHZVt5dCsyXT1kbixkbj4+PTgsR2VbeXQrMV09ZG4sZG4+Pj04LEdlW3l0XT1kbix5dCs4fWZ1bmN0aW9u''@;'; put 'put ''IFFlKEdlLFVlLHl0LGp0LEp0LGduKXtpZih5dCtqdD5HZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKHl0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uICRlKEdlLFVlLHl0LGp0LEp0KXty''@;'; put 'put ''ZXR1cm4gVWU9K1VlLHl0Pj4+PTAsSnR8fFFlKEdlLDAseXQsNCksWS53cml0ZShHZSxVZSx5dCxqdCwyMyw0KSx5dCs0fWZ1bmN0aW9uIGd0KEdlLFVlLHl0LGp0LEp0KXtyZXR1cm4gVWU9K1VlLHl0Pj4+PTAsSnR8fFFlKEdlLDAseXQsOCksWS53cml0ZShHZSxVZSx5dCxqdCw1Miw4KSx5''@;'; put 'put ''dCs4fUsucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKEdlLFVlKXtjb25zdCB5dD10aGlzLmxlbmd0aDsoR2U9fn5HZSk8MD8oR2UrPXl0KTwwJiYoR2U9MCk6R2U+eXQmJihHZT15dCksKFVlPXZvaWQgMD09PVVlP3l0On5+VWUpPDA/KFVlKz15dCk8MCYmKFVlPTApOlVlPnl0JiYoVWU9eXQp''@;'; put 'put ''LFVlPEdlJiYoVWU9R2UpO2NvbnN0IGp0PXRoaXMuc3ViYXJyYXkoR2UsVWUpO3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoanQsSy5wcm90b3R5cGUpLGp0fSxLLnByb3RvdHlwZS5yZWFkVWludExFPUsucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24oR2UsVWUseXQpe0dlPj4+''@;'; put 'put ''PTAsVWU+Pj49MCx5dHx8eWUoR2UsVWUsdGhpcy5sZW5ndGgpO2xldCBqdD10aGlzW0dlXSxKdD0xLGduPTA7Zm9yKDsrK2duPFVlJiYoSnQqPTI1Nik7KWp0Kz10aGlzW0dlK2duXSpKdDtyZXR1cm4ganR9LEsucHJvdG90eXBlLnJlYWRVaW50QkU9Sy5wcm90b3R5cGUucmVhZFVJbnRCRT1m''@;'; put 'put ''dW5jdGlvbihHZSxVZSx5dCl7R2U+Pj49MCxVZT4+Pj0wLHl0fHx5ZShHZSxVZSx0aGlzLmxlbmd0aCk7bGV0IGp0PXRoaXNbR2UrLS1VZV0sSnQ9MTtmb3IoO1VlPjAmJihKdCo9MjU2KTspanQrPXRoaXNbR2UrLS1VZV0qSnQ7cmV0dXJuIGp0fSxLLnByb3RvdHlwZS5yZWFkVWludDg9Sy5w''@;'; put 'put ''cm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKEdlLFVlKXtyZXR1cm4gR2U+Pj49MCxVZXx8eWUoR2UsMSx0aGlzLmxlbmd0aCksdGhpc1tHZV19LEsucHJvdG90eXBlLnJlYWRVaW50MTZMRT1LLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oR2UsVWUpe3JldHVybiBHZT4+Pj0w''@;'; put 'put ''LFVlfHx5ZShHZSwyLHRoaXMubGVuZ3RoKSx0aGlzW0dlXXx0aGlzW0dlKzFdPDw4fSxLLnByb3RvdHlwZS5yZWFkVWludDE2QkU9Sy5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKEdlLFVlKXtyZXR1cm4gR2U+Pj49MCxVZXx8eWUoR2UsMix0aGlzLmxlbmd0aCksdGhpc1tHZV08''@;'; put 'put ''PDh8dGhpc1tHZSsxXX0sSy5wcm90b3R5cGUucmVhZFVpbnQzMkxFPUsucHJvdG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbihHZSxVZSl7cmV0dXJuIEdlPj4+PTAsVWV8fHllKEdlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW0dlXXx0aGlzW0dlKzFdPDw4fHRoaXNbR2UrMl08PDE2KSsxNjc3''@;'; put 'put ''NzIxNip0aGlzW0dlKzNdfSxLLnByb3RvdHlwZS5yZWFkVWludDMyQkU9Sy5wcm90b3R5cGUucmVhZFVJbnQzMkJFPWZ1bmN0aW9uKEdlLFVlKXtyZXR1cm4gR2U+Pj49MCxVZXx8eWUoR2UsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1tHZV0rKHRoaXNbR2UrMV08PDE2fHRoaXNbR2Ur''@;'; put 'put ''Ml08PDh8dGhpc1tHZSszXSl9LEsucHJvdG90eXBlLnJlYWRCaWdVSW50NjRMRT1mdChmdW5jdGlvbihHZSl7aHQoR2U+Pj49MCwib2Zmc2V0Iik7Y29uc3QgVWU9dGhpc1tHZV0seXQ9dGhpc1tHZSs3XTt2b2lkIDAhPT1VZSYmdm9pZCAwIT09eXR8fEJ0KEdlLHRoaXMubGVuZ3RoLTgpO2Nv''@;'; put 'put ''bnN0IGp0PVVlKzI1Nip0aGlzWysrR2VdKzY1NTM2KnRoaXNbKytHZV0rdGhpc1srK0dlXSp4TSgyLDI0KSxKdD10aGlzWysrR2VdKzI1Nip0aGlzWysrR2VdKzY1NTM2KnRoaXNbKytHZV0reXQqeE0oMiwyNCk7cmV0dXJuIEJpZ0ludChqdCkrKEJpZ0ludChKdCk8PEJpZ0ludCgzMikpfSks''@;'; put 'put ''Sy5wcm90b3R5cGUucmVhZEJpZ1VJbnQ2NEJFPWZ0KGZ1bmN0aW9uKEdlKXtodChHZT4+Pj0wLCJvZmZzZXQiKTtjb25zdCBVZT10aGlzW0dlXSx5dD10aGlzW0dlKzddO3ZvaWQgMCE9PVVlJiZ2b2lkIDAhPT15dHx8QnQoR2UsdGhpcy5sZW5ndGgtOCk7Y29uc3QganQ9VWUqeE0oMiwyNCkr''@;'; put 'put ''NjU1MzYqdGhpc1srK0dlXSsyNTYqdGhpc1srK0dlXSt0aGlzWysrR2VdLEp0PXRoaXNbKytHZV0qeE0oMiwyNCkrNjU1MzYqdGhpc1srK0dlXSsyNTYqdGhpc1srK0dlXSt5dDtyZXR1cm4oQmlnSW50KGp0KTw8QmlnSW50KDMyKSkrQmlnSW50KEp0KX0pLEsucHJvdG90eXBlLnJlYWRJbnRM''@;'; put 'put ''RT1mdW5jdGlvbihHZSxVZSx5dCl7R2U+Pj49MCxVZT4+Pj0wLHl0fHx5ZShHZSxVZSx0aGlzLmxlbmd0aCk7bGV0IGp0PXRoaXNbR2VdLEp0PTEsZ249MDtmb3IoOysrZ248VWUmJihKdCo9MjU2KTspanQrPXRoaXNbR2UrZ25dKkp0O3JldHVybiBKdCo9MTI4LGp0Pj1KdCYmKGp0LT1NYXRo''@;'; put 'put ''LnBvdygyLDgqVWUpKSxqdH0sSy5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKEdlLFVlLHl0KXtHZT4+Pj0wLFVlPj4+PTAseXR8fHllKEdlLFVlLHRoaXMubGVuZ3RoKTtsZXQganQ9VWUsSnQ9MSxnbj10aGlzW0dlKy0tanRdO2Zvcig7anQ+MCYmKEp0Kj0yNTYpOylnbis9dGhpc1tH''@;'; put 'put ''ZSstLWp0XSpKdDtyZXR1cm4gSnQqPTEyOCxnbj49SnQmJihnbi09TWF0aC5wb3coMiw4KlVlKSksZ259LEsucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKEdlLFVlKXtyZXR1cm4gR2U+Pj49MCxVZXx8eWUoR2UsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbR2VdPy0xKigyNTUtdGhpc1tH''@;'; put 'put ''ZV0rMSk6dGhpc1tHZV19LEsucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKEdlLFVlKXtHZT4+Pj0wLFVlfHx5ZShHZSwyLHRoaXMubGVuZ3RoKTtjb25zdCB5dD10aGlzW0dlXXx0aGlzW0dlKzFdPDw4O3JldHVybiAzMjc2OCZ5dD80Mjk0OTAxNzYwfHl0Onl0fSxLLnByb3RvdHlw''@;'; put 'put ''ZS5yZWFkSW50MTZCRT1mdW5jdGlvbihHZSxVZSl7R2U+Pj49MCxVZXx8eWUoR2UsMix0aGlzLmxlbmd0aCk7Y29uc3QgeXQ9dGhpc1tHZSsxXXx0aGlzW0dlXTw8ODtyZXR1cm4gMzI3NjgmeXQ/NDI5NDkwMTc2MHx5dDp5dH0sSy5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24oR2Us''@;'; put 'put ''VWUpe3JldHVybiBHZT4+Pj0wLFVlfHx5ZShHZSw0LHRoaXMubGVuZ3RoKSx0aGlzW0dlXXx0aGlzW0dlKzFdPDw4fHRoaXNbR2UrMl08PDE2fHRoaXNbR2UrM108PDI0fSxLLnByb3RvdHlwZS5yZWFkSW50MzJCRT1mdW5jdGlvbihHZSxVZSl7cmV0dXJuIEdlPj4+PTAsVWV8fHllKEdlLDQs''@;'; put 'put ''dGhpcy5sZW5ndGgpLHRoaXNbR2VdPDwyNHx0aGlzW0dlKzFdPDwxNnx0aGlzW0dlKzJdPDw4fHRoaXNbR2UrM119LEsucHJvdG90eXBlLnJlYWRCaWdJbnQ2NExFPWZ0KGZ1bmN0aW9uKEdlKXtodChHZT4+Pj0wLCJvZmZzZXQiKTtjb25zdCBVZT10aGlzW0dlXSx5dD10aGlzW0dlKzddO3Jl''@;'; put 'put ''dHVybiB2b2lkIDAhPT1VZSYmdm9pZCAwIT09eXR8fEJ0KEdlLHRoaXMubGVuZ3RoLTgpLChCaWdJbnQodGhpc1tHZSs0XSsyNTYqdGhpc1tHZSs1XSs2NTUzNip0aGlzW0dlKzZdKyh5dDw8MjQpKTw8QmlnSW50KDMyKSkrQmlnSW50KFVlKzI1Nip0aGlzWysrR2VdKzY1NTM2KnRoaXNbKytH''@;'; put 'put ''ZV0rMTY3NzcyMTYqdGhpc1srK0dlXSl9KSxLLnByb3RvdHlwZS5yZWFkQmlnSW50NjRCRT1mdChmdW5jdGlvbihHZSl7aHQoR2U+Pj49MCwib2Zmc2V0Iik7Y29uc3QgVWU9dGhpc1tHZV0seXQ9dGhpc1tHZSs3XTt2b2lkIDAhPT1VZSYmdm9pZCAwIT09eXR8fEJ0KEdlLHRoaXMubGVuZ3Ro''@;'; put 'put ''LTgpO2NvbnN0IGp0PShVZTw8MjQpKzY1NTM2KnRoaXNbKytHZV0rMjU2KnRoaXNbKytHZV0rdGhpc1srK0dlXTtyZXR1cm4oQmlnSW50KGp0KTw8QmlnSW50KDMyKSkrQmlnSW50KDE2Nzc3MjE2KnRoaXNbKytHZV0rNjU1MzYqdGhpc1srK0dlXSsyNTYqdGhpc1srK0dlXSt5dCl9KSxLLnBy''@;'; put 'put ''b3RvdHlwZS5yZWFkRmxvYXRMRT1mdW5jdGlvbihHZSxVZSl7cmV0dXJuIEdlPj4+PTAsVWV8fHllKEdlLDQsdGhpcy5sZW5ndGgpLFkucmVhZCh0aGlzLEdlLCEwLDIzLDQpfSxLLnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbihHZSxVZSl7cmV0dXJuIEdlPj4+PTAsVWV8fHllKEdl''@;'; put 'put ''LDQsdGhpcy5sZW5ndGgpLFkucmVhZCh0aGlzLEdlLCExLDIzLDQpfSxLLnByb3RvdHlwZS5yZWFkRG91YmxlTEU9ZnVuY3Rpb24oR2UsVWUpe3JldHVybiBHZT4+Pj0wLFVlfHx5ZShHZSw4LHRoaXMubGVuZ3RoKSxZLnJlYWQodGhpcyxHZSwhMCw1Miw4KX0sSy5wcm90b3R5cGUucmVhZERv''@;'; put 'put ''dWJsZUJFPWZ1bmN0aW9uKEdlLFVlKXtyZXR1cm4gR2U+Pj49MCxVZXx8eWUoR2UsOCx0aGlzLmxlbmd0aCksWS5yZWFkKHRoaXMsR2UsITEsNTIsOCl9LEsucHJvdG90eXBlLndyaXRlVWludExFPUsucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKEdlLFVlLHl0LGp0KXtHZT0rR2Us''@;'; put 'put ''VWU+Pj49MCx5dD4+Pj0wLCFqdCYmQ2UodGhpcyxHZSxVZSx5dCxNYXRoLnBvdygyLDgqeXQpLTEsMCk7bGV0IEp0PTEsZ249MDtmb3IodGhpc1tVZV09MjU1JkdlOysrZ248eXQmJihKdCo9MjU2KTspdGhpc1tVZStnbl09R2UvSnQmMjU1O3JldHVybiBVZSt5dH0sSy5wcm90b3R5cGUud3Jp''@;'; put 'put ''dGVVaW50QkU9Sy5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24oR2UsVWUseXQsanQpe0dlPStHZSxVZT4+Pj0wLHl0Pj4+PTAsIWp0JiZDZSh0aGlzLEdlLFVlLHl0LE1hdGgucG93KDIsOCp5dCktMSwwKTtsZXQgSnQ9eXQtMSxnbj0xO2Zvcih0aGlzW1VlK0p0XT0yNTUmR2U7LS1K''@;'; put 'put ''dD49MCYmKGduKj0yNTYpOyl0aGlzW1VlK0p0XT1HZS9nbiYyNTU7cmV0dXJuIFVlK3l0fSxLLnByb3RvdHlwZS53cml0ZVVpbnQ4PUsucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24oR2UsVWUseXQpe3JldHVybiBHZT0rR2UsVWU+Pj49MCx5dHx8Q2UodGhpcyxHZSxVZSwxLDI1NSww''@;'; put 'put ''KSx0aGlzW1VlXT0yNTUmR2UsVWUrMX0sSy5wcm90b3R5cGUud3JpdGVVaW50MTZMRT1LLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKEdlLFVlLHl0KXtyZXR1cm4gR2U9K0dlLFVlPj4+PTAseXR8fENlKHRoaXMsR2UsVWUsMiw2NTUzNSwwKSx0aGlzW1VlXT0yNTUmR2UsdGhp''@;'; put 'put ''c1tVZSsxXT1HZT4+PjgsVWUrMn0sSy5wcm90b3R5cGUud3JpdGVVaW50MTZCRT1LLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKEdlLFVlLHl0KXtyZXR1cm4gR2U9K0dlLFVlPj4+PTAseXR8fENlKHRoaXMsR2UsVWUsMiw2NTUzNSwwKSx0aGlzW1VlXT1HZT4+PjgsdGhpc1tV''@;'; put 'put ''ZSsxXT0yNTUmR2UsVWUrMn0sSy5wcm90b3R5cGUud3JpdGVVaW50MzJMRT1LLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKEdlLFVlLHl0KXtyZXR1cm4gR2U9K0dlLFVlPj4+PTAseXR8fENlKHRoaXMsR2UsVWUsNCw0Mjk0OTY3Mjk1LDApLHRoaXNbVWUrM109R2U+Pj4yNCx0''@;'; put 'put ''aGlzW1VlKzJdPUdlPj4+MTYsdGhpc1tVZSsxXT1HZT4+PjgsdGhpc1tVZV09MjU1JkdlLFVlKzR9LEsucHJvdG90eXBlLndyaXRlVWludDMyQkU9Sy5wcm90b3R5cGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbihHZSxVZSx5dCl7cmV0dXJuIEdlPStHZSxVZT4+Pj0wLHl0fHxDZSh0aGlzLEdl''@;'; put 'put ''LFVlLDQsNDI5NDk2NzI5NSwwKSx0aGlzW1VlXT1HZT4+PjI0LHRoaXNbVWUrMV09R2U+Pj4xNix0aGlzW1VlKzJdPUdlPj4+OCx0aGlzW1VlKzNdPTI1NSZHZSxVZSs0fSxLLnByb3RvdHlwZS53cml0ZUJpZ1VJbnQ2NExFPWZ0KGZ1bmN0aW9uKEdlLFVlPTApe3JldHVybiBEZSh0aGlzLEdl''@;'; put 'put ''LFVlLEJpZ0ludCgwKSxCaWdJbnQoIjB4ZmZmZmZmZmZmZmZmZmZmZiIpKX0pLEsucHJvdG90eXBlLndyaXRlQmlnVUludDY0QkU9ZnQoZnVuY3Rpb24oR2UsVWU9MCl7cmV0dXJuIFBlKHRoaXMsR2UsVWUsQmlnSW50KDApLEJpZ0ludCgiMHhmZmZmZmZmZmZmZmZmZmZmIikpfSksSy5wcm90''@;'; put 'put ''b3R5cGUud3JpdGVJbnRMRT1mdW5jdGlvbihHZSxVZSx5dCxqdCl7aWYoR2U9K0dlLFVlPj4+PTAsIWp0KXtjb25zdCB5bj1NYXRoLnBvdygyLDgqeXQtMSk7Q2UodGhpcyxHZSxVZSx5dCx5bi0xLC15bil9bGV0IEp0PTAsZ249MSxkbj0wO2Zvcih0aGlzW1VlXT0yNTUmR2U7KytKdDx5dCYm''@;'; put 'put ''KGduKj0yNTYpOylHZTwwJiYwPT09ZG4mJjAhPT10aGlzW1VlK0p0LTFdJiYoZG49MSksdGhpc1tVZStKdF09KEdlL2duPj4wKS1kbiYyNTU7cmV0dXJuIFVlK3l0fSxLLnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKEdlLFVlLHl0LGp0KXtpZihHZT0rR2UsVWU+Pj49MCwhanQpe2Nv''@;'; put 'put ''bnN0IHluPU1hdGgucG93KDIsOCp5dC0xKTtDZSh0aGlzLEdlLFVlLHl0LHluLTEsLXluKX1sZXQgSnQ9eXQtMSxnbj0xLGRuPTA7Zm9yKHRoaXNbVWUrSnRdPTI1NSZHZTstLUp0Pj0wJiYoZ24qPTI1Nik7KUdlPDAmJjA9PT1kbiYmMCE9PXRoaXNbVWUrSnQrMV0mJihkbj0xKSx0aGlzW1Vl''@;'; put 'put ''K0p0XT0oR2UvZ24+PjApLWRuJjI1NTtyZXR1cm4gVWUreXR9LEsucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbihHZSxVZSx5dCl7cmV0dXJuIEdlPStHZSxVZT4+Pj0wLHl0fHxDZSh0aGlzLEdlLFVlLDEsMTI3LC0xMjgpLEdlPDAmJihHZT0yNTUrR2UrMSksdGhpc1tVZV09MjU1Jkdl''@;'; put 'put ''LFVlKzF9LEsucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbihHZSxVZSx5dCl7cmV0dXJuIEdlPStHZSxVZT4+Pj0wLHl0fHxDZSh0aGlzLEdlLFVlLDIsMzI3NjcsLTMyNzY4KSx0aGlzW1VlXT0yNTUmR2UsdGhpc1tVZSsxXT1HZT4+PjgsVWUrMn0sSy5wcm90b3R5cGUud3JpdGVJ''@;'; put 'put ''bnQxNkJFPWZ1bmN0aW9uKEdlLFVlLHl0KXtyZXR1cm4gR2U9K0dlLFVlPj4+PTAseXR8fENlKHRoaXMsR2UsVWUsMiwzMjc2NywtMzI3NjgpLHRoaXNbVWVdPUdlPj4+OCx0aGlzW1VlKzFdPTI1NSZHZSxVZSsyfSxLLnByb3RvdHlwZS53cml0ZUludDMyTEU9ZnVuY3Rpb24oR2UsVWUseXQp''@;'; put 'put ''e3JldHVybiBHZT0rR2UsVWU+Pj49MCx5dHx8Q2UodGhpcyxHZSxVZSw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLHRoaXNbVWVdPTI1NSZHZSx0aGlzW1VlKzFdPUdlPj4+OCx0aGlzW1VlKzJdPUdlPj4+MTYsdGhpc1tVZSszXT1HZT4+PjI0LFVlKzR9LEsucHJvdG90eXBlLndyaXRlSW50''@;'; put 'put ''MzJCRT1mdW5jdGlvbihHZSxVZSx5dCl7cmV0dXJuIEdlPStHZSxVZT4+Pj0wLHl0fHxDZSh0aGlzLEdlLFVlLDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksR2U8MCYmKEdlPTQyOTQ5NjcyOTUrR2UrMSksdGhpc1tVZV09R2U+Pj4yNCx0aGlzW1VlKzFdPUdlPj4+MTYsdGhpc1tVZSsyXT1H''@;'; put 'put ''ZT4+PjgsdGhpc1tVZSszXT0yNTUmR2UsVWUrNH0sSy5wcm90b3R5cGUud3JpdGVCaWdJbnQ2NExFPWZ0KGZ1bmN0aW9uKEdlLFVlPTApe3JldHVybiBEZSh0aGlzLEdlLFVlLC1CaWdJbnQoIjB4ODAwMDAwMDAwMDAwMDAwMCIpLEJpZ0ludCgiMHg3ZmZmZmZmZmZmZmZmZmZmIikpfSksSy5w''@;'; put 'put ''cm90b3R5cGUud3JpdGVCaWdJbnQ2NEJFPWZ0KGZ1bmN0aW9uKEdlLFVlPTApe3JldHVybiBQZSh0aGlzLEdlLFVlLC1CaWdJbnQoIjB4ODAwMDAwMDAwMDAwMDAwMCIpLEJpZ0ludCgiMHg3ZmZmZmZmZmZmZmZmZmZmIikpfSksSy5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKEdl''@;'; put 'put ''LFVlLHl0KXtyZXR1cm4gJGUodGhpcyxHZSxVZSwhMCx5dCl9LEsucHJvdG90eXBlLndyaXRlRmxvYXRCRT1mdW5jdGlvbihHZSxVZSx5dCl7cmV0dXJuICRlKHRoaXMsR2UsVWUsITEseXQpfSxLLnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uKEdlLFVlLHl0KXtyZXR1cm4gZ3Qo''@;'; put 'put ''dGhpcyxHZSxVZSwhMCx5dCl9LEsucHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24oR2UsVWUseXQpe3JldHVybiBndCh0aGlzLEdlLFVlLCExLHl0KX0sSy5wcm90b3R5cGUuY29weT1mdW5jdGlvbihHZSxVZSx5dCxqdCl7aWYoIUsuaXNCdWZmZXIoR2UpKXRocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoImFyZ3VtZW50IHNob3VsZCBiZSBhIEJ1ZmZlciIpO2lmKHl0fHwoeXQ9MCksanR8fDA9PT1qdHx8KGp0PXRoaXMubGVuZ3RoKSxVZT49R2UubGVuZ3RoJiYoVWU9R2UubGVuZ3RoKSxVZXx8KFVlPTApLGp0PjAmJmp0PHl0JiYoanQ9eXQpLGp0PT09eXR8fDA9PT1HZS5sZW5ndGh8''@;'; put 'put ''fDA9PT10aGlzLmxlbmd0aClyZXR1cm4gMDtpZihVZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYoeXQ8MHx8eXQ+PXRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKTtpZihqdDwwKXRocm93''@;'; put 'put ''IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcyIpO2p0PnRoaXMubGVuZ3RoJiYoanQ9dGhpcy5sZW5ndGgpLEdlLmxlbmd0aC1VZTxqdC15dCYmKGp0PUdlLmxlbmd0aC1VZSt5dCk7Y29uc3QgSnQ9anQteXQ7cmV0dXJuIHRoaXM9PT1HZSYmImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4/dGhpcy5jb3B5V2l0aGluKFVlLHl0LGp0KTpVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChHZSx0aGlzLnN1YmFycmF5KHl0LGp0KSxVZSksSnR9LEsucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oR2UsVWUseXQsanQpe2lm''@;'; put 'put ''KCJzdHJpbmciPT10eXBlb2YgR2Upe2lmKCJzdHJpbmciPT10eXBlb2YgVWU/KGp0PVVlLFVlPTAseXQ9dGhpcy5sZW5ndGgpOiJzdHJpbmciPT10eXBlb2YgeXQmJihqdD15dCx5dD10aGlzLmxlbmd0aCksdm9pZCAwIT09anQmJiJzdHJpbmciIT10eXBlb2YganQpdGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZyIpO2lmKCJzdHJpbmciPT10eXBlb2YganQmJiFLLmlzRW5jb2RpbmcoanQpKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIranQpO2lmKDE9PT1HZS5sZW5ndGgpe2NvbnN0IGduPUdlLmNoYXJDb2RlQXQoMCk7''@;'; put 'put ''KCJ1dGY4Ij09PWp0JiZnbjwxMjh8fCJsYXRpbjEiPT09anQpJiYoR2U9Z24pfX1lbHNlIm51bWJlciI9PXR5cGVvZiBHZT9HZSY9MjU1OiJib29sZWFuIj09dHlwZW9mIEdlJiYoR2U9TnVtYmVyKEdlKSk7aWYoVWU8MHx8dGhpcy5sZW5ndGg8VWV8fHRoaXMubGVuZ3RoPHl0KXRocm93IG5l''@;'; put 'put ''dyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZih5dDw9VWUpcmV0dXJuIHRoaXM7bGV0IEp0O2lmKFVlPj4+PTAseXQ9dm9pZCAwPT09eXQ/dGhpcy5sZW5ndGg6eXQ+Pj4wLEdlfHwoR2U9MCksIm51bWJlciI9PXR5cGVvZiBHZSlmb3IoSnQ9VWU7SnQ8eXQ7KytKdCl0aGlz''@;'; put 'put ''W0p0XT1HZTtlbHNle2NvbnN0IGduPUsuaXNCdWZmZXIoR2UpP0dlOksuZnJvbShHZSxqdCksZG49Z24ubGVuZ3RoO2lmKDA9PT1kbil0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgdmFsdWUgIicrR2UrJyIgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQgInZhbHVlIicpO2ZvcihKdD0wO0p0PHl0''@;'; put 'put ''LVVlOysrSnQpdGhpc1tKdCtVZV09Z25bSnQlZG5dfXJldHVybiB0aGlzfTtjb25zdCB3dD17fTtmdW5jdGlvbiBtdChHZSxVZSx5dCl7d3RbR2VdPWNsYXNzIGV4dGVuZHMgeXR7Y29uc3RydWN0b3IoKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJtZXNzYWdlIix7dmFs''@;'; put 'put ''dWU6VWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHRoaXMubmFtZT1gJHt0aGlzLm5hbWV9IFske0dlfV1gLGRlbGV0ZSB0aGlzLm5hbWV9Z2V0IGNvZGUoKXtyZXR1cm4gR2V9c2V0IGNvZGUoanQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0''@;'; put 'put ''aGlzLCJjb2RlIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6anQsd3JpdGFibGU6ITB9KX10b1N0cmluZygpe3JldHVybmAke3RoaXMubmFtZX0gWyR7R2V9XTogJHt0aGlzLm1lc3NhZ2V9YH19fWZ1bmN0aW9uIHZ0KEdlKXtsZXQgVWU9IiIseXQ9R2UubGVuZ3RoO2Nv''@;'; put 'put ''bnN0IGp0PSItIj09PUdlWzBdPzE6MDtmb3IoO3l0Pj1qdCs0O3l0LT0zKVVlPWBfJHtHZS5zbGljZSh5dC0zLHl0KX0ke1VlfWA7cmV0dXJuYCR7R2Uuc2xpY2UoMCx5dCl9JHtVZX1gfWZ1bmN0aW9uIEF0KEdlLFVlLHl0LGp0LEp0LGduKXtpZihHZT55dHx8R2U8VWUpe2NvbnN0IGRuPSJi''@;'; put 'put ''aWdpbnQiPT10eXBlb2YgVWU/Im4iOiIiO2xldCB5bjt0aHJvdyB5bj1nbj4zPzA9PT1VZXx8VWU9PT1CaWdJbnQoMCk/YD49IDAke2RufSBhbmQgPCAyJHtkbn0gKiogJHs4KihnbisxKX0ke2RufWA6YD49IC0oMiR7ZG59ICoqICR7OCooZ24rMSktMX0ke2RufSkgYW5kIDwgMiAqKiAkezgq''@;'; put 'put ''KGduKzEpLTF9JHtkbn1gOmA+PSAke1VlfSR7ZG59IGFuZCA8PSAke3l0fSR7ZG59YCxuZXcgd3QuRVJSX09VVF9PRl9SQU5HRSgidmFsdWUiLHluLEdlKX12YXIgZG4seW4sbG47ZG49anQsbG49Z24saHQoeW49SnQsIm9mZnNldCIpLHZvaWQgMCE9PWRuW3luXSYmdm9pZCAwIT09ZG5beW4r''@;'; put 'put ''bG5dfHxCdCh5bixkbi5sZW5ndGgtKGxuKzEpKX1mdW5jdGlvbiBodChHZSxVZSl7aWYoIm51bWJlciIhPXR5cGVvZiBHZSl0aHJvdyBuZXcgd3QuRVJSX0lOVkFMSURfQVJHX1RZUEUoVWUsIm51bWJlciIsR2UpfWZ1bmN0aW9uIEJ0KEdlLFVlLHl0KXt0aHJvdyBNYXRoLmZsb29yKEdlKSE9''@;'; put 'put ''PUdlPyhodChHZSx5dCksbmV3IHd0LkVSUl9PVVRfT0ZfUkFOR0UoeXR8fCJvZmZzZXQiLCJhbiBpbnRlZ2VyIixHZSkpOlVlPDA/bmV3IHd0LkVSUl9CVUZGRVJfT1VUX09GX0JPVU5EUzpuZXcgd3QuRVJSX09VVF9PRl9SQU5HRSh5dHx8Im9mZnNldCIsYD49ICR7eXQ/MTowfSBhbmQgPD0g''@;'; put 'put ''JHtVZX1gLEdlKX1tdCgiRVJSX0JVRkZFUl9PVVRfT0ZfQk9VTkRTIixmdW5jdGlvbihHZSl7cmV0dXJuIEdlP2Ake0dlfSBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHNgOiJBdHRlbXB0IHRvIGFjY2VzcyBtZW1vcnkgb3V0c2lkZSBidWZmZXIgYm91bmRzIn0sUmFuZ2VFcnJvciksbXQo''@;'; put 'put ''IkVSUl9JTlZBTElEX0FSR19UWVBFIixmdW5jdGlvbihHZSxVZSl7cmV0dXJuYFRoZSAiJHtHZX0iIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2YgVWV9YH0sVHlwZUVycm9yKSxtdCgiRVJSX09VVF9PRl9SQU5HRSIsZnVuY3Rpb24oR2Us''@;'; put 'put ''VWUseXQpe2xldCBqdD1gVGhlIHZhbHVlIG9mICIke0dlfSIgaXMgb3V0IG9mIHJhbmdlLmAsSnQ9eXQ7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoeXQpJiZNYXRoLmFicyh5dCk+NDI5NDk2NzI5Nj9KdD12dChTdHJpbmcoeXQpKToiYmlnaW50Ij09dHlwZW9mIHl0JiYoSnQ9U3RyaW5nKHl0''@;'; put 'put ''KSwoeXQ+eE0oQmlnSW50KDIpLEJpZ0ludCgzMikpfHx5dDwteE0oQmlnSW50KDIpLEJpZ0ludCgzMikpKSYmKEp0PXZ0KEp0KSksSnQrPSJuIiksanQrPWAgSXQgbXVzdCBiZSAke1VlfS4gUmVjZWl2ZWQgJHtKdH1gLGp0fSxSYW5nZUVycm9yKTtjb25zdCBvbj0vW14rLzAtOUEtWmEtei1f''@;'; put 'put ''XS9nO2Z1bmN0aW9uIF90KEdlLFVlKXtsZXQgeXQ7VWU9VWV8fDEvMDtjb25zdCBqdD1HZS5sZW5ndGg7bGV0IEp0PW51bGw7Y29uc3QgZ249W107Zm9yKGxldCBkbj0wO2RuPGp0OysrZG4pe2lmKHl0PUdlLmNoYXJDb2RlQXQoZG4pLHl0PjU1Mjk1JiZ5dDw1NzM0NCl7aWYoIUp0KXtpZih5''@;'; put 'put ''dD41NjMxOSl7KFVlLT0zKT4tMSYmZ24ucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYoZG4rMT09PWp0KXsoVWUtPTMpPi0xJiZnbi5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1KdD15dDtjb250aW51ZX1pZih5dDw1NjMyMCl7KFVlLT0zKT4tMSYmZ24ucHVzaCgyMzksMTkxLDE4''@;'; put 'put ''OSksSnQ9eXQ7Y29udGludWV9eXQ9NjU1MzYrKEp0LTU1Mjk2PDwxMHx5dC01NjMyMCl9ZWxzZSBKdCYmKFVlLT0zKT4tMSYmZ24ucHVzaCgyMzksMTkxLDE4OSk7aWYoSnQ9bnVsbCx5dDwxMjgpe2lmKChVZS09MSk8MClicmVhaztnbi5wdXNoKHl0KX1lbHNlIGlmKHl0PDIwNDgpe2lmKChV''@;'; put 'put ''ZS09Mik8MClicmVhaztnbi5wdXNoKHl0Pj42fDE5Miw2MyZ5dHwxMjgpfWVsc2UgaWYoeXQ8NjU1MzYpe2lmKChVZS09Myk8MClicmVhaztnbi5wdXNoKHl0Pj4xMnwyMjQseXQ+PjYmNjN8MTI4LDYzJnl0fDEyOCl9ZWxzZXtpZighKHl0PDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52''@;'; put 'put ''YWxpZCBjb2RlIHBvaW50Iik7aWYoKFVlLT00KTwwKWJyZWFrO2duLnB1c2goeXQ+PjE4fDI0MCx5dD4+MTImNjN8MTI4LHl0Pj42JjYzfDEyOCw2MyZ5dHwxMjgpfX1yZXR1cm4gZ259ZnVuY3Rpb24gdHQoR2Upe3JldHVybiBhZS50b0J5dGVBcnJheShmdW5jdGlvbihVZSl7aWYoKFVlPShV''@;'; put 'put ''ZT1VZS5zcGxpdCgiPSIpWzBdKS50cmltKCkucmVwbGFjZShvbiwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7VWUubGVuZ3RoJTQhPTA7KVVlKz0iPSI7cmV0dXJuIFVlfShHZSkpfWZ1bmN0aW9uIGV0KEdlLFVlLHl0LGp0KXtsZXQgSnQ7Zm9yKEp0PTA7SnQ8anQmJiEoSnQreXQ+PVVl''@;'; put 'put ''Lmxlbmd0aHx8SnQ+PUdlLmxlbmd0aCk7KytKdClVZVtKdCt5dF09R2VbSnRdO3JldHVybiBKdH1mdW5jdGlvbiBsdChHZSxVZSl7cmV0dXJuIEdlIGluc3RhbmNlb2YgVWV8fG51bGwhPUdlJiZudWxsIT1HZS5jb25zdHJ1Y3RvciYmbnVsbCE9R2UuY29uc3RydWN0b3IubmFtZSYmR2UuY29u''@;'; put 'put ''c3RydWN0b3IubmFtZT09PVVlLm5hbWV9ZnVuY3Rpb24gTHQoR2Upe3JldHVybiBHZSE9R2V9Y29uc3QgQ3Q9ZnVuY3Rpb24oKXtjb25zdCBHZT0iMDEyMzQ1Njc4OWFiY2RlZiIsVWU9bmV3IEFycmF5KDI1Nik7Zm9yKGxldCB5dD0wO3l0PDE2OysreXQpe2NvbnN0IGp0PTE2Knl0O2Zvcihs''@;'; put 'put ''ZXQgSnQ9MDtKdDwxNjsrK0p0KVVlW2p0K0p0XT1HZVt5dF0rR2VbSnRdfXJldHVybiBVZX0oKTtmdW5jdGlvbiBmdChHZSl7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBCaWdJbnQ/SHQ6R2V9ZnVuY3Rpb24gSHQoKXt0aHJvdyBuZXcgRXJyb3IoIkJpZ0ludCBub3Qgc3VwcG9ydGVkIil9''@;'; put 'put ''fSwxOTI0OihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooMjEwKSxhZT1qKDU1NTkpLFk9YWUocmUoIlN0cmluZy5wcm90b3R5cGUuaW5kZXhPZiIpKTtVLmV4cG9ydHM9ZnVuY3Rpb24oVyxOKXt2YXIgdGU9cmUoVywhIU4pO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0ZSYmWShX''@;'; put 'put ''LCIucHJvdG90eXBlLiIpPi0xP2FlKHRlKTp0ZX19LDU1NTk6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig4NjEyKSxhZT1qKDIxMCksWT1hZSgiJUZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSUiKSxXPWFlKCIlRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwlIiksTj1hZSgiJVJlZmxl''@;'; put 'put ''Y3QuYXBwbHklIiwhMCl8fHJlLmNhbGwoVyxZKSx0ZT1hZSgiJU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IlIiwhMCksSz1hZSgiJU9iamVjdC5kZWZpbmVQcm9wZXJ0eSUiLCEwKSxKPWFlKCIlTWF0aC5tYXglIik7aWYoSyl0cnl7Syh7fSwiYSIse3ZhbHVlOjF9KX1jYXRjaChv''@;'; put 'put ''ZSl7Sz1udWxsfVUuZXhwb3J0cz1mdW5jdGlvbihvZSl7dmFyIGNlPU4ocmUsVyxhcmd1bWVudHMpO3JldHVybiB0ZSYmSyYmdGUoY2UsImxlbmd0aCIpLmNvbmZpZ3VyYWJsZSYmSyhjZSwibGVuZ3RoIix7dmFsdWU6MStKKDAsb2UubGVuZ3RoLShhcmd1bWVudHMubGVuZ3RoLTEpKX0pLGNl''@;'; put 'put ''fTt2YXIgc2U9ZnVuY3Rpb24oKXtyZXR1cm4gTihyZSxZLGFyZ3VtZW50cyl9O0s/SyhVLmV4cG9ydHMsImFwcGx5Iix7dmFsdWU6c2V9KTpVLmV4cG9ydHMuYXBwbHk9c2V9LDEwMjc6KFUsUSxqKT0+e3ZhciByZT1qKDk1MDkpLkJ1ZmZlcixhZT1qKDI4MzApLlRyYW5zZm9ybSxZPWooMjU1''@;'; put 'put ''MykuU3RyaW5nRGVjb2RlcjtmdW5jdGlvbiBXKE4pe2FlLmNhbGwodGhpcyksdGhpcy5oYXNoTW9kZT0ic3RyaW5nIj09dHlwZW9mIE4sdGhpcy5oYXNoTW9kZT90aGlzW05dPXRoaXMuX2ZpbmFsT3JEaWdlc3Q6dGhpcy5maW5hbD10aGlzLl9maW5hbE9yRGlnZXN0LHRoaXMuX2ZpbmFsJiYo''@;'; put 'put ''dGhpcy5fX2ZpbmFsPXRoaXMuX2ZpbmFsLHRoaXMuX2ZpbmFsPW51bGwpLHRoaXMuX2RlY29kZXI9bnVsbCx0aGlzLl9lbmNvZGluZz1udWxsfWooNTcxNykoVyxhZSksVy5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKE4sdGUsSyl7InN0cmluZyI9PXR5cGVvZiBOJiYoTj1yZS5mcm9tKE4s''@;'; put 'put ''dGUpKTt2YXIgSj10aGlzLl91cGRhdGUoTik7cmV0dXJuIHRoaXMuaGFzaE1vZGU/dGhpczooSyYmKEo9dGhpcy5fdG9TdHJpbmcoSixLKSksSil9LFcucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nPWZ1bmN0aW9uKCl7fSxXLnByb3RvdHlwZS5nZXRBdXRoVGFnPWZ1bmN0aW9uKCl7dGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCJ0cnlpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlIil9LFcucHJvdG90eXBlLnNldEF1dGhUYWc9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoInRyeWluZyB0byBzZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKX0sVy5wcm90b3R5''@;'; put 'put ''cGUuc2V0QUFEPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJ0cnlpbmcgdG8gc2V0IGFhZCBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpfSxXLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKE4sdGUsSyl7dmFyIEo7dHJ5e3RoaXMuaGFzaE1vZGU/dGhpcy5fdXBkYXRlKE4pOnRoaXMu''@;'; put 'put ''cHVzaCh0aGlzLl91cGRhdGUoTikpfWNhdGNoKHNlKXtKPXNlfWZpbmFsbHl7SyhKKX19LFcucHJvdG90eXBlLl9mbHVzaD1mdW5jdGlvbihOKXt2YXIgdGU7dHJ5e3RoaXMucHVzaCh0aGlzLl9fZmluYWwoKSl9Y2F0Y2goSyl7dGU9S31OKHRlKX0sVy5wcm90b3R5cGUuX2ZpbmFsT3JEaWdl''@;'; put 'put ''c3Q9ZnVuY3Rpb24oTil7dmFyIHRlPXRoaXMuX19maW5hbCgpfHxyZS5hbGxvYygwKTtyZXR1cm4gTiYmKHRlPXRoaXMuX3RvU3RyaW5nKHRlLE4sITApKSx0ZX0sVy5wcm90b3R5cGUuX3RvU3RyaW5nPWZ1bmN0aW9uKE4sdGUsSyl7aWYodGhpcy5fZGVjb2Rlcnx8KHRoaXMuX2RlY29kZXI9''@;'; put 'put ''bmV3IFkodGUpLHRoaXMuX2VuY29kaW5nPXRlKSx0aGlzLl9lbmNvZGluZyE9PXRlKXRocm93IG5ldyBFcnJvcigiY2FuJ3Qgc3dpdGNoIGVuY29kaW5ncyIpO3ZhciBKPXRoaXMuX2RlY29kZXIud3JpdGUoTik7cmV0dXJuIEsmJihKKz10aGlzLl9kZWNvZGVyLmVuZCgpKSxKfSxVLmV4cG9y''@;'; put 'put ''dHM9V30sMTA0ODpVPT57VS5leHBvcnRzPWZ1bmN0aW9uKGoscmUpe2Zvcih2YXIgYWU9W10sWT0wO1k8ai5sZW5ndGg7WSsrKXt2YXIgVz1yZShqW1ldLFkpO1EoVyk/YWUucHVzaC5hcHBseShhZSxXKTphZS5wdXNoKFcpfXJldHVybiBhZX07dmFyIFE9QXJyYXkuaXNBcnJheXx8ZnVuY3Rp''@;'; put 'put ''b24oail7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChqKX19LDUxMDg6KFUsUSxqKT0+e3ZhciByZT1qKDk1MzkpLGFlPWooOTI4Mik7ZnVuY3Rpb24gWSgpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfXZhciBXLE49QXJyYXkucHJv''@;'; put 'put ''dG90eXBlLnNsaWNlLHRlPXt9O1c9dm9pZCAwIT09ai5nJiZqLmcuY29uc29sZT9qLmcuY29uc29sZToidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LmNvbnNvbGU/d2luZG93LmNvbnNvbGU6e307Zm9yKHZhciBLPVtbZnVuY3Rpb24oKXt9LCJsb2ciXSxbZnVuY3Rpb24oKXtX''@;'; put 'put ''LmxvZy5hcHBseShXLGFyZ3VtZW50cyl9LCJpbmZvIl0sW2Z1bmN0aW9uKCl7Vy5sb2cuYXBwbHkoVyxhcmd1bWVudHMpfSwid2FybiJdLFtmdW5jdGlvbigpe1cud2Fybi5hcHBseShXLGFyZ3VtZW50cyl9LCJlcnJvciJdLFtmdW5jdGlvbihkZSl7dGVbZGVdPVkoKX0sInRpbWUiXSxbZnVu''@;'; put 'put ''Y3Rpb24oZGUpe3ZhciB2ZT10ZVtkZV07aWYoIXZlKXRocm93IG5ldyBFcnJvcigiTm8gc3VjaCBsYWJlbDogIitkZSk7ZGVsZXRlIHRlW2RlXTt2YXIgQWU9WSgpLXZlO1cubG9nKGRlKyI6ICIrQWUrIm1zIil9LCJ0aW1lRW5kIl0sW2Z1bmN0aW9uKCl7dmFyIGRlPW5ldyBFcnJvcjtkZS5u''@;'; put 'put ''YW1lPSJUcmFjZSIsZGUubWVzc2FnZT1yZS5mb3JtYXQuYXBwbHkobnVsbCxhcmd1bWVudHMpLFcuZXJyb3IoZGUuc3RhY2spfSwidHJhY2UiXSxbZnVuY3Rpb24oZGUpe1cubG9nKHJlLmluc3BlY3QoZGUpKyJcbiIpfSwiZGlyIl0sW2Z1bmN0aW9uKGRlKXtpZighZGUpe3ZhciB2ZT1OLmNh''@;'; put 'put ''bGwoYXJndW1lbnRzLDEpO2FlLm9rKCExLHJlLmZvcm1hdC5hcHBseShudWxsLHZlKSl9fSwiYXNzZXJ0Il1dLEo9MDtKPEsubGVuZ3RoO0orKyl7dmFyIHNlPUtbSl0sY2U9c2VbMV07V1tjZV18fChXW2NlXT1zZVswXSl9VS5leHBvcnRzPVd9LDYzOTM6KFUsUSxqKT0+e3ZhciByZT1qKDg3''@;'; put 'put ''NjQpLkJ1ZmZlcixhZT1qKDY5NDgpLFk9aig2NDI2KTtVLmV4cG9ydHM9ZnVuY3Rpb24oSyl7cmV0dXJuIG5ldyBOKEspfTt2YXIgVz17c2VjcDI1NmsxOntuYW1lOiJzZWNwMjU2azEiLGJ5dGVMZW5ndGg6MzJ9LHNlY3AyMjRyMTp7bmFtZToicDIyNCIsYnl0ZUxlbmd0aDoyOH0scHJpbWUy''@;'; put 'put ''NTZ2MTp7bmFtZToicDI1NiIsYnl0ZUxlbmd0aDozMn0scHJpbWUxOTJ2MTp7bmFtZToicDE5MiIsYnl0ZUxlbmd0aDoyNH0sZWQyNTUxOTp7bmFtZToiZWQyNTUxOSIsYnl0ZUxlbmd0aDozMn0sc2VjcDM4NHIxOntuYW1lOiJwMzg0IixieXRlTGVuZ3RoOjQ4fSxzZWNwNTIxcjE6e25hbWU6''@;'; put 'put ''InA1MjEiLGJ5dGVMZW5ndGg6NjZ9fTtmdW5jdGlvbiBOKEspe3RoaXMuY3VydmVUeXBlPVdbS10sdGhpcy5jdXJ2ZVR5cGV8fCh0aGlzLmN1cnZlVHlwZT17bmFtZTpLfSksdGhpcy5jdXJ2ZT1uZXcgYWUuZWModGhpcy5jdXJ2ZVR5cGUubmFtZSksdGhpcy5rZXlzPXZvaWQgMH1mdW5jdGlv''@;'; put 'put ''biB0ZShLLEosc2Upe0FycmF5LmlzQXJyYXkoSyl8fChLPUsudG9BcnJheSgpKTt2YXIgb2U9bmV3IHJlKEspO2lmKHNlJiZvZS5sZW5ndGg8c2Upe3ZhciBjZT1uZXcgcmUoc2Utb2UubGVuZ3RoKTtjZS5maWxsKDApLG9lPXJlLmNvbmNhdChbY2Usb2VdKX1yZXR1cm4gSj9vZS50b1N0cmlu''@;'; put 'put ''ZyhKKTpvZX1XLnAyMjQ9Vy5zZWNwMjI0cjEsVy5wMjU2PVcuc2VjcDI1NnIxPVcucHJpbWUyNTZ2MSxXLnAxOTI9Vy5zZWNwMTkycjE9Vy5wcmltZTE5MnYxLFcucDM4ND1XLnNlY3AzODRyMSxXLnA1MjE9Vy5zZWNwNTIxcjEsTi5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzPWZ1bmN0aW9uKEss''@;'; put 'put ''Sil7cmV0dXJuIHRoaXMua2V5cz10aGlzLmN1cnZlLmdlbktleVBhaXIoKSx0aGlzLmdldFB1YmxpY0tleShLLEopfSxOLnByb3RvdHlwZS5jb21wdXRlU2VjcmV0PWZ1bmN0aW9uKEssSixzZSl7cmV0dXJuIEo9Snx8InV0ZjgiLHJlLmlzQnVmZmVyKEspfHwoSz1uZXcgcmUoSyxKKSksdGUo''@;'; put 'put ''dGhpcy5jdXJ2ZS5rZXlGcm9tUHVibGljKEspLmdldFB1YmxpYygpLm11bCh0aGlzLmtleXMuZ2V0UHJpdmF0ZSgpKS5nZXRYKCksc2UsdGhpcy5jdXJ2ZVR5cGUuYnl0ZUxlbmd0aCl9LE4ucHJvdG90eXBlLmdldFB1YmxpY0tleT1mdW5jdGlvbihLLEope3ZhciBzZT10aGlzLmtleXMuZ2V0''@;'; put 'put ''UHVibGljKCJjb21wcmVzc2VkIj09PUosITApO3JldHVybiJoeWJyaWQiPT09SiYmKHNlWzBdPXNlW3NlLmxlbmd0aC0xXSUyPzc6NiksdGUoc2UsSyl9LE4ucHJvdG90eXBlLmdldFByaXZhdGVLZXk9ZnVuY3Rpb24oSyl7cmV0dXJuIHRlKHRoaXMua2V5cy5nZXRQcml2YXRlKCksSyl9LE4u''@;'; put 'put ''cHJvdG90eXBlLnNldFB1YmxpY0tleT1mdW5jdGlvbihLLEope3JldHVybiBKPUp8fCJ1dGY4IixyZS5pc0J1ZmZlcihLKXx8KEs9bmV3IHJlKEssSikpLHRoaXMua2V5cy5faW1wb3J0UHVibGljKEspLHRoaXN9LE4ucHJvdG90eXBlLnNldFByaXZhdGVLZXk9ZnVuY3Rpb24oSyxKKXtKPUp8''@;'; put 'put ''fCJ1dGY4IixyZS5pc0J1ZmZlcihLKXx8KEs9bmV3IHJlKEssSikpO3ZhciBzZT1uZXcgWShLKTtyZXR1cm4gc2U9c2UudG9TdHJpbmcoMTYpLHRoaXMua2V5cz10aGlzLmN1cnZlLmdlbktleVBhaXIoKSx0aGlzLmtleXMuX2ltcG9ydFByaXZhdGUoc2UpLHRoaXN9fSw2NDI2OmZ1bmN0aW9u''@;'; put 'put ''KFUsUSxqKXshZnVuY3Rpb24ocmUsYWUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBZKHgsUCl7aWYoIXgpdGhyb3cgbmV3IEVycm9yKFB8fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gVyh4LFApe3guc3VwZXJfPVA7dmFyIFY9ZnVuY3Rpb24oKXt9O1YucHJvdG90eXBlPVAucHJvdG90''@;'; put 'put ''eXBlLHgucHJvdG90eXBlPW5ldyBWLHgucHJvdG90eXBlLmNvbnN0cnVjdG9yPXh9ZnVuY3Rpb24gTih4LFAsVil7aWYoTi5pc0JOKHgpKXJldHVybiB4O3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT14JiYoImxlIiE9''@;'; put 'put ''PVAmJiJiZSIhPT1QfHwoVj1QLFA9MTApLHRoaXMuX2luaXQoeHx8MCxQfHwxMCxWfHwiYmUiKSl9dmFyIHRlOyJvYmplY3QiPT10eXBlb2YgcmU/cmUuZXhwb3J0cz1OOmFlLkJOPU4sTi5CTj1OLE4ud29yZFNpemU9MjY7dHJ5e3RlPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ2b2lk''@;'; put 'put ''IDAhPT13aW5kb3cuQnVmZmVyP3dpbmRvdy5CdWZmZXI6aig4NjIzKS5CdWZmZXJ9Y2F0Y2goeCl7fWZ1bmN0aW9uIEsoeCxQKXt2YXIgVj14LmNoYXJDb2RlQXQoUCk7cmV0dXJuIFY+PTY1JiZWPD03MD9WLTU1OlY+PTk3JiZWPD0xMDI/Vi04NzpWLTQ4JjE1fWZ1bmN0aW9uIEooeCxQLFYp''@;'; put 'put ''e3ZhciBUPUsoeCxWKTtyZXR1cm4gVi0xPj1QJiYoVHw9Syh4LFYtMSk8PDQpLFR9ZnVuY3Rpb24gc2UoeCxQLFYsVCl7Zm9yKHZhciBTPTAsRj1NYXRoLm1pbih4Lmxlbmd0aCxWKSx5ZT1QO3llPEY7eWUrKyl7dmFyIENlPXguY2hhckNvZGVBdCh5ZSktNDg7Uyo9VCxTKz1DZT49NDk/Q2Ut''@;'; put 'put ''NDkrMTA6Q2U+PTE3P0NlLTE3KzEwOkNlfXJldHVybiBTfU4uaXNCTj1mdW5jdGlvbih4KXtyZXR1cm4geCBpbnN0YW5jZW9mIE58fG51bGwhPT14JiYib2JqZWN0Ij09dHlwZW9mIHgmJnguY29uc3RydWN0b3Iud29yZFNpemU9PT1OLndvcmRTaXplJiZBcnJheS5pc0FycmF5KHgud29yZHMp''@;'; put 'put ''fSxOLm1heD1mdW5jdGlvbih4LFApe3JldHVybiB4LmNtcChQKT4wP3g6UH0sTi5taW49ZnVuY3Rpb24oeCxQKXtyZXR1cm4geC5jbXAoUCk8MD94OlB9LE4ucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKHgsUCxWKXtpZigibnVtYmVyIj09dHlwZW9mIHgpcmV0dXJuIHRoaXMuX2luaXROdW1i''@;'; put 'put ''ZXIoeCxQLFYpO2lmKCJvYmplY3QiPT10eXBlb2YgeClyZXR1cm4gdGhpcy5faW5pdEFycmF5KHgsUCxWKTsiaGV4Ij09PVAmJihQPTE2KSxZKFA9PT0oMHxQKSYmUD49MiYmUDw9MzYpO3ZhciBUPTA7Ii0iPT09KHg9eC50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJihUKyss''@;'; put 'put ''dGhpcy5uZWdhdGl2ZT0xKSxUPHgubGVuZ3RoJiYoMTY9PT1QP3RoaXMuX3BhcnNlSGV4KHgsVCxWKToodGhpcy5fcGFyc2VCYXNlKHgsUCxUKSwibGUiPT09ViYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLFAsVikpKX0sTi5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24o''@;'; put 'put ''eCxQLFYpe3g8MCYmKHRoaXMubmVnYXRpdmU9MSx4PS14KSx4PDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ4XSx0aGlzLmxlbmd0aD0xKTp4PDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJngseC82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6''@;'; put 'put ''KFkoeDw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZ4LHgvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PVYmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxQLFYpfSxOLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKHgs''@;'; put 'put ''UCxWKXtpZihZKCJudW1iZXIiPT10eXBlb2YgeC5sZW5ndGgpLHgubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKHgubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFy''@;'; put 'put ''IFQ9MDtUPHRoaXMubGVuZ3RoO1QrKyl0aGlzLndvcmRzW1RdPTA7dmFyIFMsRix5ZT0wO2lmKCJiZSI9PT1WKWZvcihUPXgubGVuZ3RoLTEsUz0wO1Q+PTA7VC09Myl0aGlzLndvcmRzW1NdfD0oRj14W1RdfHhbVC0xXTw8OHx4W1QtMl08PDE2KTw8eWUmNjcxMDg4NjMsdGhpcy53b3Jkc1tT''@;'; put 'put ''KzFdPUY+Pj4yNi15ZSY2NzEwODg2MywoeWUrPTI0KT49MjYmJih5ZS09MjYsUysrKTtlbHNlIGlmKCJsZSI9PT1WKWZvcihUPTAsUz0wO1Q8eC5sZW5ndGg7VCs9Myl0aGlzLndvcmRzW1NdfD0oRj14W1RdfHhbVCsxXTw8OHx4W1QrMl08PDE2KTw8eWUmNjcxMDg4NjMsdGhpcy53b3Jkc1tT''@;'; put 'put ''KzFdPUY+Pj4yNi15ZSY2NzEwODg2MywoeWUrPTI0KT49MjYmJih5ZS09MjYsUysrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oeCxQLFYpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoeC5sZW5ndGgtUCkvNiksdGhpcy53b3Jkcz1uZXcgQXJy''@;'; put 'put ''YXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgVD0wO1Q8dGhpcy5sZW5ndGg7VCsrKXRoaXMud29yZHNbVF09MDt2YXIgUyxGPTAseWU9MDtpZigiYmUiPT09Vilmb3IoVD14Lmxlbmd0aC0xO1Q+PVA7VC09MilTPUooeCxQLFQpPDxGLHRoaXMud29yZHNbeWVdfD02NzEwODg2MyZTLEY+PTE4PyhG''@;'; put 'put ''LT0xOCx0aGlzLndvcmRzW3llKz0xXXw9Uz4+PjI2KTpGKz04O2Vsc2UgZm9yKFQ9KHgubGVuZ3RoLVApJTI9PTA/UCsxOlA7VDx4Lmxlbmd0aDtUKz0yKVM9Sih4LFAsVCk8PEYsdGhpcy53b3Jkc1t5ZV18PTY3MTA4ODYzJlMsRj49MTg/KEYtPTE4LHRoaXMud29yZHNbeWUrPTFdfD1TPj4+''@;'; put 'put ''MjYpOkYrPTg7dGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKHgsUCxWKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgVD0wLFM9MTtTPD02NzEwODg2MztTKj1QKVQrKztULS0sUz1TL1B8MDtmb3IodmFyIEY9eC5sZW5ndGgtVix5ZT1G''@;'; put 'put ''JVQsQ2U9TWF0aC5taW4oRixGLXllKStWLERlPTAsUGU9VjtQZTxDZTtQZSs9VClEZT1zZSh4LFBlLFBlK1QsUCksdGhpcy5pbXVsbihTKSx0aGlzLndvcmRzWzBdK0RlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPURlOnRoaXMuX2lhZGRuKERlKTtpZigwIT09eWUpe3ZhciBRZT0xO2ZvcihE''@;'; put 'put ''ZT1zZSh4LFBlLHgubGVuZ3RoLFApLFBlPTA7UGU8eWU7UGUrKylRZSo9UDt0aGlzLmltdWxuKFFlKSx0aGlzLndvcmRzWzBdK0RlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPURlOnRoaXMuX2lhZGRuKERlKX10aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oeCl7eC53''@;'; put 'put ''b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgUD0wO1A8dGhpcy5sZW5ndGg7UCsrKXgud29yZHNbUF09dGhpcy53b3Jkc1tQXTt4Lmxlbmd0aD10aGlzLmxlbmd0aCx4Lm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUseC5yZWQ9dGhpcy5yZWR9LE4ucHJvdG90eXBlLmNsb25lPWZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIHg9bmV3IE4obnVsbCk7cmV0dXJuIHRoaXMuY29weSh4KSx4fSxOLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKHgpe2Zvcig7dGhpcy5sZW5ndGg8eDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxOLnByb3RvdHlwZS5zdHJpcD1mdW5j''@;'; put 'put ''dGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LE4ucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndv''@;'; put 'put ''cmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSxOLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBvZT1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAw''@;'; put 'put ''MDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxjZT1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxkZT1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1''@;'; put 'put ''LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1''@;'; put 'put ''LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiB2ZSh4LFAsVil7Vi5uZWdhdGl2ZT1QLm5lZ2F0aXZlXngubmVnYXRpdmU7dmFyIFQ9eC5sZW5ndGgr''@;'; put 'put ''UC5sZW5ndGh8MDtWLmxlbmd0aD1ULFQ9VC0xfDA7dmFyIFM9MHx4LndvcmRzWzBdLEY9MHxQLndvcmRzWzBdLHllPVMqRixEZT15ZS82NzEwODg2NHwwO1Yud29yZHNbMF09NjcxMDg4NjMmeWU7Zm9yKHZhciBQZT0xO1BlPFQ7UGUrKyl7Zm9yKHZhciBRZT1EZT4+PjI2LCRlPTY3MTA4ODYz''@;'; put 'put ''JkRlLGd0PU1hdGgubWluKFBlLFAubGVuZ3RoLTEpLHd0PU1hdGgubWF4KDAsUGUteC5sZW5ndGgrMSk7d3Q8PWd0O3d0KyspUWUrPSh5ZT0oUz0wfHgud29yZHNbUGUtd3R8MF0pKihGPTB8UC53b3Jkc1t3dF0pKyRlKS82NzEwODg2NHwwLCRlPTY3MTA4ODYzJnllO1Yud29yZHNbUGVdPTB8''@;'; put 'put ''JGUsRGU9MHxRZX1yZXR1cm4gMCE9PURlP1Yud29yZHNbUGVdPTB8RGU6Vi5sZW5ndGgtLSxWLnN0cmlwKCl9Ti5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oeCxQKXt2YXIgVjtpZihQPTB8UHx8MSwxNj09PSh4PXh8fDEwKXx8ImhleCI9PT14KXtWPSIiO2Zvcih2YXIgVD0wLFM9MCxG''@;'; put 'put ''PTA7Rjx0aGlzLmxlbmd0aDtGKyspe3ZhciB5ZT10aGlzLndvcmRzW0ZdLENlPSgxNjc3NzIxNSYoeWU8PFR8UykpLnRvU3RyaW5nKDE2KTtWPTAhPShTPXllPj4+MjQtVCYxNjc3NzIxNSl8fEYhPT10aGlzLmxlbmd0aC0xP29lWzYtQ2UubGVuZ3RoXStDZStWOkNlK1YsKFQrPTIpPj0yNiYm''@;'; put 'put ''KFQtPTI2LEYtLSl9Zm9yKDAhPT1TJiYoVj1TLnRvU3RyaW5nKDE2KStWKTtWLmxlbmd0aCVQIT0wOylWPSIwIitWO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKFY9Ii0iK1YpLFZ9aWYoeD09PSgwfHgpJiZ4Pj0yJiZ4PD0zNil7dmFyIERlPWNlW3hdLFBlPWRlW3hdO1Y9IiI7dmFyIFFl''@;'; put 'put ''PXRoaXMuY2xvbmUoKTtmb3IoUWUubmVnYXRpdmU9MDshUWUuaXNaZXJvKCk7KXt2YXIgJGU9UWUubW9kbihQZSkudG9TdHJpbmcoeCk7Vj0oUWU9UWUuaWRpdm4oUGUpKS5pc1plcm8oKT8kZStWOm9lW0RlLSRlLmxlbmd0aF0rJGUrVn1mb3IodGhpcy5pc1plcm8oKSYmKFY9IjAiK1YpO1Yu''@;'; put 'put ''bGVuZ3RoJVAhPTA7KVY9IjAiK1Y7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoVj0iLSIrViksVn1ZKCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LE4ucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRo''@;'; put 'put ''aXMubGVuZ3RoP3grPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT94Kz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmWSghMSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1''@;'; put 'put ''cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LXg6eH0sTi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpfSxOLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbih4LFApe3JldHVybiBZKHZvaWQgMCE9PXRlKSx0aGlzLnRvQXJyYXlM''@;'; put 'put ''aWtlKHRlLHgsUCl9LE4ucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSx4LFApfSxOLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbih4LFAsVil7dmFyIFQ9dGhpcy5ieXRlTGVuZ3RoKCksUz1WfHxNYXRoLm1heCgxLFQp''@;'; put 'put ''O1koVDw9UywiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLFkoUz4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIEYseWUsQ2U9ImxlIj09PVAsRGU9bmV3IHgoUyksUGU9dGhpcy5jbG9uZSgpO2lmKENlKXtmb3IoeWU9MDsh''@;'; put 'put ''UGUuaXNaZXJvKCk7eWUrKylGPVBlLmFuZGxuKDI1NSksUGUuaXVzaHJuKDgpLERlW3llXT1GO2Zvcig7eWU8Uzt5ZSsrKURlW3llXT0wfWVsc2V7Zm9yKHllPTA7eWU8Uy1UO3llKyspRGVbeWVdPTA7Zm9yKHllPTA7IVBlLmlzWmVybygpO3llKyspRj1QZS5hbmRsbigyNTUpLFBlLml1c2hy''@;'; put 'put ''big4KSxEZVtTLXllLTFdPUZ9cmV0dXJuIERlfSxOLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oeCl7cmV0dXJuIDMyLU1hdGguY2x6MzIoeCl9OmZ1bmN0aW9uKHgpe3ZhciBQPXgsVj0wO3JldHVybiBQPj00MDk2JiYoVis9MTMsUD4+Pj0xMyksUD49NjQmJihW''@;'; put 'put ''Kz03LFA+Pj49NyksUD49OCYmKFYrPTQsUD4+Pj00KSxQPj0yJiYoVis9MixQPj4+PTIpLFYrUH0sTi5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKHgpe2lmKDA9PT14KXJldHVybiAyNjt2YXIgUD14LFY9MDtyZXR1cm4gMD09KDgxOTEmUCkmJihWKz0xMyxQPj4+PTEzKSwwPT0oMTI3''@;'; put 'put ''JlApJiYoVis9NyxQPj4+PTcpLDA9PSgxNSZQKSYmKFYrPTQsUD4+Pj00KSwwPT0oMyZQKSYmKFYrPTIsUD4+Pj0yKSwwPT0oMSZQKSYmVisrLFZ9LE4ucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciBQPXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFd''@;'; put 'put ''KTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK1B9LE4ucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIHg9MCxQPTA7UDx0aGlzLmxlbmd0aDtQKyspe3ZhciBWPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbUF0pO2lmKHgr''@;'; put 'put ''PVYsMjYhPT1WKWJyZWFrfXJldHVybiB4fSxOLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxOLnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oeCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCku''@;'; put 'put ''aW5vdG4oeCkuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxOLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy50ZXN0bih4LTEpP3RoaXMubm90bih4KS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxOLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biAwIT09dGhpcy5uZWdhdGl2ZX0sTi5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LE4ucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LE4ucHJvdG90eXBlLml1''@;'; put 'put ''b3I9ZnVuY3Rpb24oeCl7Zm9yKDt0aGlzLmxlbmd0aDx4Lmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgUD0wO1A8eC5sZW5ndGg7UCsrKXRoaXMud29yZHNbUF09dGhpcy53b3Jkc1tQXXx4LndvcmRzW1BdO3JldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90''@;'; put 'put ''eXBlLmlvcj1mdW5jdGlvbih4KXtyZXR1cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXx4Lm5lZ2F0aXZlKSksdGhpcy5pdW9yKHgpfSxOLnByb3RvdHlwZS5vcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcih4KTp4LmNsb25lKCkuaW9yKHRo''@;'; put 'put ''aXMpfSxOLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKHgpOnguY2xvbmUoKS5pdW9yKHRoaXMpfSxOLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbih4KXt2YXIgUDtQPXRoaXMubGVuZ3RoPngubGVuZ3RoP3g6''@;'; put 'put ''dGhpcztmb3IodmFyIFY9MDtWPFAubGVuZ3RoO1YrKyl0aGlzLndvcmRzW1ZdPXRoaXMud29yZHNbVl0meC53b3Jkc1tWXTtyZXR1cm4gdGhpcy5sZW5ndGg9UC5sZW5ndGgsdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKHgpe3JldHVybiBZKDA9PSh0aGlzLm5lZ2F0''@;'; put 'put ''aXZlfHgubmVnYXRpdmUpKSx0aGlzLml1YW5kKHgpfSxOLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKHgpOnguY2xvbmUoKS5pYW5kKHRoaXMpfSxOLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKHgpe3JldHVy''@;'; put 'put ''biB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoeCk6eC5jbG9uZSgpLml1YW5kKHRoaXMpfSxOLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbih4KXt2YXIgUCxWO3RoaXMubGVuZ3RoPngubGVuZ3RoPyhQPXRoaXMsVj14KTooUD14LFY9dGhpcyk7Zm9yKHZhciBUPTA7''@;'; put 'put ''VDxWLmxlbmd0aDtUKyspdGhpcy53b3Jkc1tUXT1QLndvcmRzW1RdXlYud29yZHNbVF07aWYodGhpcyE9PVApZm9yKDtUPFAubGVuZ3RoO1QrKyl0aGlzLndvcmRzW1RdPVAud29yZHNbVF07cmV0dXJuIHRoaXMubGVuZ3RoPVAubGVuZ3RoLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaXhv''@;'; put 'put ''cj1mdW5jdGlvbih4KXtyZXR1cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXx4Lm5lZ2F0aXZlKSksdGhpcy5pdXhvcih4KX0sTi5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcih4KTp4LmNsb25lKCkuaXhvcih0aGlz''@;'; put 'put ''KX0sTi5wcm90b3R5cGUudXhvcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKHgpOnguY2xvbmUoKS5pdXhvcih0aGlzKX0sTi5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3Zh''@;'; put 'put ''ciBQPTB8TWF0aC5jZWlsKHgvMjYpLFY9eCUyNjt0aGlzLl9leHBhbmQoUCksVj4wJiZQLS07Zm9yKHZhciBUPTA7VDxQO1QrKyl0aGlzLndvcmRzW1RdPTY3MTA4ODYzJn50aGlzLndvcmRzW1RdO3JldHVybiBWPjAmJih0aGlzLndvcmRzW1RdPX50aGlzLndvcmRzW1RdJjY3MTA4ODYzPj4y''@;'; put 'put ''Ni1WKSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bih4KX0sTi5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbih4LFApe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgVj14LzI2fDAsVD14JTI2O3JldHVybiB0''@;'; put 'put ''aGlzLl9leHBhbmQoVisxKSx0aGlzLndvcmRzW1ZdPVA/dGhpcy53b3Jkc1tWXXwxPDxUOnRoaXMud29yZHNbVl0mfigxPDxUKSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oeCl7dmFyIFAsVixUO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09eC5uZWdhdGl2ZSly''@;'; put 'put ''ZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLFA9dGhpcy5pc3ViKHgpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXgubmVnYXRpdmUpcmV0dXJuIHgubmVnYXRpdmU9MCxQPXRoaXMuaXN1Yih4KSx4Lm5lZ2F0aXZlPTEsUC5fbm9ybVNp''@;'; put 'put ''Z24oKTt0aGlzLmxlbmd0aD54Lmxlbmd0aD8oVj10aGlzLFQ9eCk6KFY9eCxUPXRoaXMpO2Zvcih2YXIgUz0wLEY9MDtGPFQubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPTY3MTA4ODYzJihQPSgwfFYud29yZHNbRl0pKygwfFQud29yZHNbRl0pK1MpLFM9UD4+PjI2O2Zvcig7MCE9PVMmJkY8''@;'; put 'put ''Vi5sZW5ndGg7RisrKXRoaXMud29yZHNbRl09NjcxMDg4NjMmKFA9KDB8Vi53b3Jkc1tGXSkrUyksUz1QPj4+MjY7aWYodGhpcy5sZW5ndGg9Vi5sZW5ndGgsMCE9PVMpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09Uyx0aGlzLmxlbmd0aCsrO2Vsc2UgaWYoViE9PXRoaXMpZm9yKDtGPFYubGVu''@;'; put 'put ''Z3RoO0YrKyl0aGlzLndvcmRzW0ZdPVYud29yZHNbRl07cmV0dXJuIHRoaXN9LE4ucHJvdG90eXBlLmFkZD1mdW5jdGlvbih4KXt2YXIgUDtyZXR1cm4gMCE9PXgubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyh4Lm5lZ2F0aXZlPTAsUD10aGlzLnN1Yih4KSx4Lm5lZ2F0aXZlXj0xLFAp''@;'; put 'put ''OjA9PT14Lm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLFA9eC5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLFApOnRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKHgpOnguY2xvbmUoKS5pYWRkKHRoaXMpfSxOLnByb3RvdHlwZS5pc3Vi''@;'; put 'put ''PWZ1bmN0aW9uKHgpe2lmKDAhPT14Lm5lZ2F0aXZlKXt4Lm5lZ2F0aXZlPTA7dmFyIFA9dGhpcy5pYWRkKHgpO3JldHVybiB4Lm5lZ2F0aXZlPTEsUC5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZCh4KSx0aGlzLm5lZ2F0''@;'; put 'put ''aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgVixULFM9dGhpcy5jbXAoeCk7aWYoMD09PVMpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO1M+MD8oVj10aGlzLFQ9eCk6KFY9eCxUPXRoaXMpO2Zvcih2YXIgRj0wLHllPTA7eWU8VC5s''@;'; put 'put ''ZW5ndGg7eWUrKylGPShQPSgwfFYud29yZHNbeWVdKS0oMHxULndvcmRzW3llXSkrRik+PjI2LHRoaXMud29yZHNbeWVdPTY3MTA4ODYzJlA7Zm9yKDswIT09RiYmeWU8Vi5sZW5ndGg7eWUrKylGPShQPSgwfFYud29yZHNbeWVdKStGKT4+MjYsdGhpcy53b3Jkc1t5ZV09NjcxMDg4NjMmUDtp''@;'; put 'put ''ZigwPT09RiYmeWU8Vi5sZW5ndGgmJlYhPT10aGlzKWZvcig7eWU8Vi5sZW5ndGg7eWUrKyl0aGlzLndvcmRzW3llXT1WLndvcmRzW3llXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgseWUpLFYhPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9''@;'; put 'put ''LE4ucHJvdG90eXBlLnN1Yj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoeCl9O3ZhciBBZT1mdW5jdGlvbih4LFAsVil7dmFyIFQsUyxGLHllPXgud29yZHMsQ2U9UC53b3JkcyxEZT1WLndvcmRzLFBlPTAsUWU9MHx5ZVswXSwkZT04MTkxJlFlLGd0PVFlPj4+MTMsd3Q9''@;'; put 'put ''MHx5ZVsxXSxtdD04MTkxJnd0LHZ0PXd0Pj4+MTMsQXQ9MHx5ZVsyXSxodD04MTkxJkF0LEJ0PUF0Pj4+MTMsb249MHx5ZVszXSxfdD04MTkxJm9uLHR0PW9uPj4+MTMsZXQ9MHx5ZVs0XSxsdD04MTkxJmV0LEx0PWV0Pj4+MTMsQ3Q9MHx5ZVs1XSxmdD04MTkxJkN0LEh0PUN0Pj4+MTMsR2U9''@;'; put 'put ''MHx5ZVs2XSxVZT04MTkxJkdlLHl0PUdlPj4+MTMsanQ9MHx5ZVs3XSxKdD04MTkxJmp0LGduPWp0Pj4+MTMsZG49MHx5ZVs4XSx5bj04MTkxJmRuLGxuPWRuPj4+MTMsTm49MHx5ZVs5XSxibj04MTkxJk5uLGVyPU5uPj4+MTMsc3I9MHxDZVswXSxYbj04MTkxJnNyLEZyPXNyPj4+MTMseHI9''@;'; put 'put ''MHxDZVsxXSxxdD04MTkxJnhyLHByPXhyPj4+MTMsbnI9MHxDZVsyXSxBbj04MTkxJm5yLHFuPW5yPj4+MTMsV3Q9MHxDZVszXSxwbj04MTkxJld0LEtuPVd0Pj4+MTMsTnQ9MHxDZVs0XSxzbj04MTkxJk50LFVuPU50Pj4+MTMsd249MHxDZVs1XSx0bj04MTkxJnduLHpuPXduPj4+MTMsVHI9''@;'; put 'put ''MHxDZVs2XSxCbj04MTkxJlRyLGtyPVRyPj4+MTMsbW49MHxDZVs3XSx1bj04MTkxJm1uLGNuPW1uPj4+MTMsX249MHxDZVs4XSxHdD04MTkxJl9uLGtuPV9uPj4+MTMsVm49MHxDZVs5XSxlbj04MTkxJlZuLEluPVZuPj4+MTM7Vi5uZWdhdGl2ZT14Lm5lZ2F0aXZlXlAubmVnYXRpdmUsVi5s''@;'; put 'put ''ZW5ndGg9MTk7dmFyIEpuPShQZSsoVD1NYXRoLmltdWwoJGUsWG4pKXwwKSsoKDgxOTEmKFM9KFM9TWF0aC5pbXVsKCRlLEZyKSkrTWF0aC5pbXVsKGd0LFhuKXwwKSk8PDEzKXwwO1BlPSgoRj1NYXRoLmltdWwoZ3QsRnIpKSsoUz4+PjEzKXwwKSsoSm4+Pj4yNil8MCxKbiY9NjcxMDg4NjMs''@;'; put 'put ''VD1NYXRoLmltdWwobXQsWG4pLFM9KFM9TWF0aC5pbXVsKG10LEZyKSkrTWF0aC5pbXVsKHZ0LFhuKXwwLEY9TWF0aC5pbXVsKHZ0LEZyKTt2YXIgb3I9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUscHIpfDApK01hdGguaW11bChn''@;'; put 'put ''dCxxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QscHIpfDApKyhTPj4+MTMpfDApKyhvcj4+PjI2KXwwLG9yJj02NzEwODg2MyxUPU1hdGguaW11bChodCxYbiksUz0oUz1NYXRoLmltdWwoaHQsRnIpKStNYXRoLmltdWwoQnQsWG4pfDAsRj1NYXRoLmltdWwoQnQsRnIpLFQ9''@;'; put 'put ''VCtNYXRoLmltdWwobXQscXQpfDAsUz0oUz1TK01hdGguaW11bChtdCxwcil8MCkrTWF0aC5pbXVsKHZ0LHF0KXwwLEY9RitNYXRoLmltdWwodnQscHIpfDA7dmFyIGdyPShQZSsoVD1UK01hdGguaW11bCgkZSxBbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLHFuKXwwKStN''@;'; put 'put ''YXRoLmltdWwoZ3QsQW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LHFuKXwwKSsoUz4+PjEzKXwwKSsoZ3I+Pj4yNil8MCxnciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoX3QsWG4pLFM9KFM9TWF0aC5pbXVsKF90LEZyKSkrTWF0aC5pbXVsKHR0LFhuKXwwLEY9TWF0aC5pbXVs''@;'; put 'put ''KHR0LEZyKSxUPVQrTWF0aC5pbXVsKGh0LHF0KXwwLFM9KFM9UytNYXRoLmltdWwoaHQscHIpfDApK01hdGguaW11bChCdCxxdCl8MCxGPUYrTWF0aC5pbXVsKEJ0LHByKXwwLFQ9VCtNYXRoLmltdWwobXQsQW4pfDAsUz0oUz1TK01hdGguaW11bChtdCxxbil8MCkrTWF0aC5pbXVsKHZ0LEFu''@;'; put 'put ''KXwwLEY9RitNYXRoLmltdWwodnQscW4pfDA7dmFyIEtyPShQZSsoVD1UK01hdGguaW11bCgkZSxwbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLEtuKXwwKStNYXRoLmltdWwoZ3QscG4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LEtuKXwwKSsoUz4+PjEz''@;'; put 'put ''KXwwKSsoS3I+Pj4yNil8MCxLciY9NjcxMDg4NjMsVD1NYXRoLmltdWwobHQsWG4pLFM9KFM9TWF0aC5pbXVsKGx0LEZyKSkrTWF0aC5pbXVsKEx0LFhuKXwwLEY9TWF0aC5pbXVsKEx0LEZyKSxUPVQrTWF0aC5pbXVsKF90LHF0KXwwLFM9KFM9UytNYXRoLmltdWwoX3QscHIpfDApK01hdGgu''@;'; put 'put ''aW11bCh0dCxxdCl8MCxGPUYrTWF0aC5pbXVsKHR0LHByKXwwLFQ9VCtNYXRoLmltdWwoaHQsQW4pfDAsUz0oUz1TK01hdGguaW11bChodCxxbil8MCkrTWF0aC5pbXVsKEJ0LEFuKXwwLEY9RitNYXRoLmltdWwoQnQscW4pfDAsVD1UK01hdGguaW11bChtdCxwbil8MCxTPShTPVMrTWF0aC5p''@;'; put 'put ''bXVsKG10LEtuKXwwKStNYXRoLmltdWwodnQscG4pfDAsRj1GK01hdGguaW11bCh2dCxLbil8MDt2YXIgVnI9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLHNuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsVW4pfDApK01hdGguaW11bChndCxzbil8MCkpPDwxMyl8MDtQZT0oKEY9''@;'; put 'put ''RitNYXRoLmltdWwoZ3QsVW4pfDApKyhTPj4+MTMpfDApKyhWcj4+PjI2KXwwLFZyJj02NzEwODg2MyxUPU1hdGguaW11bChmdCxYbiksUz0oUz1NYXRoLmltdWwoZnQsRnIpKStNYXRoLmltdWwoSHQsWG4pfDAsRj1NYXRoLmltdWwoSHQsRnIpLFQ9VCtNYXRoLmltdWwobHQscXQpfDAsUz0o''@;'; put 'put ''Uz1TK01hdGguaW11bChsdCxwcil8MCkrTWF0aC5pbXVsKEx0LHF0KXwwLEY9RitNYXRoLmltdWwoTHQscHIpfDAsVD1UK01hdGguaW11bChfdCxBbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LHFuKXwwKStNYXRoLmltdWwodHQsQW4pfDAsRj1GK01hdGguaW11bCh0dCxxbil8MCxUPVQrTWF0''@;'; put 'put ''aC5pbXVsKGh0LHBuKXwwLFM9KFM9UytNYXRoLmltdWwoaHQsS24pfDApK01hdGguaW11bChCdCxwbil8MCxGPUYrTWF0aC5pbXVsKEJ0LEtuKXwwLFQ9VCtNYXRoLmltdWwobXQsc24pfDAsUz0oUz1TK01hdGguaW11bChtdCxVbil8MCkrTWF0aC5pbXVsKHZ0LHNuKXwwLEY9RitNYXRoLmlt''@;'; put 'put ''dWwodnQsVW4pfDA7dmFyIGlpPShQZSsoVD1UK01hdGguaW11bCgkZSx0bil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLHpuKXwwKStNYXRoLmltdWwoZ3QsdG4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LHpuKXwwKSsoUz4+PjEzKXwwKSsoaWk+Pj4yNil8''@;'; put 'put ''MCxpaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoVWUsWG4pLFM9KFM9TWF0aC5pbXVsKFVlLEZyKSkrTWF0aC5pbXVsKHl0LFhuKXwwLEY9TWF0aC5pbXVsKHl0LEZyKSxUPVQrTWF0aC5pbXVsKGZ0LHF0KXwwLFM9KFM9UytNYXRoLmltdWwoZnQscHIpfDApK01hdGguaW11bChIdCxxdCl8MCxG''@;'; put 'put ''PUYrTWF0aC5pbXVsKEh0LHByKXwwLFQ9VCtNYXRoLmltdWwobHQsQW4pfDAsUz0oUz1TK01hdGguaW11bChsdCxxbil8MCkrTWF0aC5pbXVsKEx0LEFuKXwwLEY9RitNYXRoLmltdWwoTHQscW4pfDAsVD1UK01hdGguaW11bChfdCxwbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LEtuKXwwKStN''@;'; put 'put ''YXRoLmltdWwodHQscG4pfDAsRj1GK01hdGguaW11bCh0dCxLbil8MCxUPVQrTWF0aC5pbXVsKGh0LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoaHQsVW4pfDApK01hdGguaW11bChCdCxzbil8MCxGPUYrTWF0aC5pbXVsKEJ0LFVuKXwwLFQ9VCtNYXRoLmltdWwobXQsdG4pfDAsUz0oUz1TK01h''@;'; put 'put ''dGguaW11bChtdCx6bil8MCkrTWF0aC5pbXVsKHZ0LHRuKXwwLEY9RitNYXRoLmltdWwodnQsem4pfDA7dmFyIFJyPShQZSsoVD1UK01hdGguaW11bCgkZSxCbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLGtyKXwwKStNYXRoLmltdWwoZ3QsQm4pfDApKTw8MTMpfDA7UGU9''@;'; put 'put ''KChGPUYrTWF0aC5pbXVsKGd0LGtyKXwwKSsoUz4+PjEzKXwwKSsoUnI+Pj4yNil8MCxSciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoSnQsWG4pLFM9KFM9TWF0aC5pbXVsKEp0LEZyKSkrTWF0aC5pbXVsKGduLFhuKXwwLEY9TWF0aC5pbXVsKGduLEZyKSxUPVQrTWF0aC5pbXVsKFVlLHF0KXww''@;'; put 'put ''LFM9KFM9UytNYXRoLmltdWwoVWUscHIpfDApK01hdGguaW11bCh5dCxxdCl8MCxGPUYrTWF0aC5pbXVsKHl0LHByKXwwLFQ9VCtNYXRoLmltdWwoZnQsQW4pfDAsUz0oUz1TK01hdGguaW11bChmdCxxbil8MCkrTWF0aC5pbXVsKEh0LEFuKXwwLEY9RitNYXRoLmltdWwoSHQscW4pfDAsVD1U''@;'; put 'put ''K01hdGguaW11bChsdCxwbil8MCxTPShTPVMrTWF0aC5pbXVsKGx0LEtuKXwwKStNYXRoLmltdWwoTHQscG4pfDAsRj1GK01hdGguaW11bChMdCxLbil8MCxUPVQrTWF0aC5pbXVsKF90LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoX3QsVW4pfDApK01hdGguaW11bCh0dCxzbil8MCxGPUYrTWF0''@;'; put 'put ''aC5pbXVsKHR0LFVuKXwwLFQ9VCtNYXRoLmltdWwoaHQsdG4pfDAsUz0oUz1TK01hdGguaW11bChodCx6bil8MCkrTWF0aC5pbXVsKEJ0LHRuKXwwLEY9RitNYXRoLmltdWwoQnQsem4pfDAsVD1UK01hdGguaW11bChtdCxCbil8MCxTPShTPVMrTWF0aC5pbXVsKG10LGtyKXwwKStNYXRoLmlt''@;'; put 'put ''dWwodnQsQm4pfDAsRj1GK01hdGguaW11bCh2dCxrcil8MDt2YXIgbGk9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLHVuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsY24pfDApK01hdGguaW11bChndCx1bil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QsY24pfDAp''@;'; put 'put ''KyhTPj4+MTMpfDApKyhsaT4+PjI2KXwwLGxpJj02NzEwODg2MyxUPU1hdGguaW11bCh5bixYbiksUz0oUz1NYXRoLmltdWwoeW4sRnIpKStNYXRoLmltdWwobG4sWG4pfDAsRj1NYXRoLmltdWwobG4sRnIpLFQ9VCtNYXRoLmltdWwoSnQscXQpfDAsUz0oUz1TK01hdGguaW11bChKdCxwcil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKGduLHF0KXwwLEY9RitNYXRoLmltdWwoZ24scHIpfDAsVD1UK01hdGguaW11bChVZSxBbil8MCxTPShTPVMrTWF0aC5pbXVsKFVlLHFuKXwwKStNYXRoLmltdWwoeXQsQW4pfDAsRj1GK01hdGguaW11bCh5dCxxbil8MCxUPVQrTWF0aC5pbXVsKGZ0LHBuKXwwLFM9KFM9''@;'; put 'put ''UytNYXRoLmltdWwoZnQsS24pfDApK01hdGguaW11bChIdCxwbil8MCxGPUYrTWF0aC5pbXVsKEh0LEtuKXwwLFQ9VCtNYXRoLmltdWwobHQsc24pfDAsUz0oUz1TK01hdGguaW11bChsdCxVbil8MCkrTWF0aC5pbXVsKEx0LHNuKXwwLEY9RitNYXRoLmltdWwoTHQsVW4pfDAsVD1UK01hdGgu''@;'; put 'put ''aW11bChfdCx0bil8MCxTPShTPVMrTWF0aC5pbXVsKF90LHpuKXwwKStNYXRoLmltdWwodHQsdG4pfDAsRj1GK01hdGguaW11bCh0dCx6bil8MCxUPVQrTWF0aC5pbXVsKGh0LEJuKXwwLFM9KFM9UytNYXRoLmltdWwoaHQsa3IpfDApK01hdGguaW11bChCdCxCbil8MCxGPUYrTWF0aC5pbXVs''@;'; put 'put ''KEJ0LGtyKXwwLFQ9VCtNYXRoLmltdWwobXQsdW4pfDAsUz0oUz1TK01hdGguaW11bChtdCxjbil8MCkrTWF0aC5pbXVsKHZ0LHVuKXwwLEY9RitNYXRoLmltdWwodnQsY24pfDA7dmFyIE1pPShQZSsoVD1UK01hdGguaW11bCgkZSxHdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVs''@;'; put 'put ''KCRlLGtuKXwwKStNYXRoLmltdWwoZ3QsR3QpfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LGtuKXwwKSsoUz4+PjEzKXwwKSsoTWk+Pj4yNil8MCxNaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sWG4pLFM9KFM9TWF0aC5pbXVsKGJuLEZyKSkrTWF0aC5pbXVsKGVyLFhuKXww''@;'; put 'put ''LEY9TWF0aC5pbXVsKGVyLEZyKSxUPVQrTWF0aC5pbXVsKHluLHF0KXwwLFM9KFM9UytNYXRoLmltdWwoeW4scHIpfDApK01hdGguaW11bChsbixxdCl8MCxGPUYrTWF0aC5pbXVsKGxuLHByKXwwLFQ9VCtNYXRoLmltdWwoSnQsQW4pfDAsUz0oUz1TK01hdGguaW11bChKdCxxbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKGduLEFuKXwwLEY9RitNYXRoLmltdWwoZ24scW4pfDAsVD1UK01hdGguaW11bChVZSxwbil8MCxTPShTPVMrTWF0aC5pbXVsKFVlLEtuKXwwKStNYXRoLmltdWwoeXQscG4pfDAsRj1GK01hdGguaW11bCh5dCxLbil8MCxUPVQrTWF0aC5pbXVsKGZ0LHNuKXwwLFM9KFM9UytNYXRo''@;'; put 'put ''LmltdWwoZnQsVW4pfDApK01hdGguaW11bChIdCxzbil8MCxGPUYrTWF0aC5pbXVsKEh0LFVuKXwwLFQ9VCtNYXRoLmltdWwobHQsdG4pfDAsUz0oUz1TK01hdGguaW11bChsdCx6bil8MCkrTWF0aC5pbXVsKEx0LHRuKXwwLEY9RitNYXRoLmltdWwoTHQsem4pfDAsVD1UK01hdGguaW11bChf''@;'; put 'put ''dCxCbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LGtyKXwwKStNYXRoLmltdWwodHQsQm4pfDAsRj1GK01hdGguaW11bCh0dCxrcil8MCxUPVQrTWF0aC5pbXVsKGh0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwoaHQsY24pfDApK01hdGguaW11bChCdCx1bil8MCxGPUYrTWF0aC5pbXVsKEJ0LGNu''@;'; put 'put ''KXwwLFQ9VCtNYXRoLmltdWwobXQsR3QpfDAsUz0oUz1TK01hdGguaW11bChtdCxrbil8MCkrTWF0aC5pbXVsKHZ0LEd0KXwwLEY9RitNYXRoLmltdWwodnQsa24pfDA7dmFyIG8wPShQZSsoVD1UK01hdGguaW11bCgkZSxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLElu''@;'; put 'put ''KXwwKStNYXRoLmltdWwoZ3QsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LEluKXwwKSsoUz4+PjEzKXwwKSsobzA+Pj4yNil8MCxvMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4scXQpLFM9KFM9TWF0aC5pbXVsKGJuLHByKSkrTWF0aC5pbXVsKGVyLHF0KXwwLEY9TWF0''@;'; put 'put ''aC5pbXVsKGVyLHByKSxUPVQrTWF0aC5pbXVsKHluLEFuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4scW4pfDApK01hdGguaW11bChsbixBbil8MCxGPUYrTWF0aC5pbXVsKGxuLHFuKXwwLFQ9VCtNYXRoLmltdWwoSnQscG4pfDAsUz0oUz1TK01hdGguaW11bChKdCxLbil8MCkrTWF0aC5pbXVs''@;'; put 'put ''KGduLHBuKXwwLEY9RitNYXRoLmltdWwoZ24sS24pfDAsVD1UK01hdGguaW11bChVZSxzbil8MCxTPShTPVMrTWF0aC5pbXVsKFVlLFVuKXwwKStNYXRoLmltdWwoeXQsc24pfDAsRj1GK01hdGguaW11bCh5dCxVbil8MCxUPVQrTWF0aC5pbXVsKGZ0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwo''@;'; put 'put ''ZnQsem4pfDApK01hdGguaW11bChIdCx0bil8MCxGPUYrTWF0aC5pbXVsKEh0LHpuKXwwLFQ9VCtNYXRoLmltdWwobHQsQm4pfDAsUz0oUz1TK01hdGguaW11bChsdCxrcil8MCkrTWF0aC5pbXVsKEx0LEJuKXwwLEY9RitNYXRoLmltdWwoTHQsa3IpfDAsVD1UK01hdGguaW11bChfdCx1bil8''@;'; put 'put ''MCxTPShTPVMrTWF0aC5pbXVsKF90LGNuKXwwKStNYXRoLmltdWwodHQsdW4pfDAsRj1GK01hdGguaW11bCh0dCxjbil8MCxUPVQrTWF0aC5pbXVsKGh0LEd0KXwwLFM9KFM9UytNYXRoLmltdWwoaHQsa24pfDApK01hdGguaW11bChCdCxHdCl8MCxGPUYrTWF0aC5pbXVsKEJ0LGtuKXwwO3Zh''@;'; put 'put ''ciBuMD0oUGUrKFQ9VCtNYXRoLmltdWwobXQsZW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChtdCxJbil8MCkrTWF0aC5pbXVsKHZ0LGVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bCh2dCxJbil8MCkrKFM+Pj4xMyl8MCkrKG4wPj4+MjYpfDAsbjAmPTY3MTA4ODYz''@;'; put 'put ''LFQ9TWF0aC5pbXVsKGJuLEFuKSxTPShTPU1hdGguaW11bChibixxbikpK01hdGguaW11bChlcixBbil8MCxGPU1hdGguaW11bChlcixxbiksVD1UK01hdGguaW11bCh5bixwbil8MCxTPShTPVMrTWF0aC5pbXVsKHluLEtuKXwwKStNYXRoLmltdWwobG4scG4pfDAsRj1GK01hdGguaW11bChs''@;'; put 'put ''bixLbil8MCxUPVQrTWF0aC5pbXVsKEp0LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsVW4pfDApK01hdGguaW11bChnbixzbil8MCxGPUYrTWF0aC5pbXVsKGduLFVuKXwwLFQ9VCtNYXRoLmltdWwoVWUsdG4pfDAsUz0oUz1TK01hdGguaW11bChVZSx6bil8MCkrTWF0aC5pbXVsKHl0LHRu''@;'; put 'put ''KXwwLEY9RitNYXRoLmltdWwoeXQsem4pfDAsVD1UK01hdGguaW11bChmdCxCbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LGtyKXwwKStNYXRoLmltdWwoSHQsQm4pfDAsRj1GK01hdGguaW11bChIdCxrcil8MCxUPVQrTWF0aC5pbXVsKGx0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwobHQsY24p''@;'; put 'put ''fDApK01hdGguaW11bChMdCx1bil8MCxGPUYrTWF0aC5pbXVsKEx0LGNuKXwwLFQ9VCtNYXRoLmltdWwoX3QsR3QpfDAsUz0oUz1TK01hdGguaW11bChfdCxrbil8MCkrTWF0aC5pbXVsKHR0LEd0KXwwLEY9RitNYXRoLmltdWwodHQsa24pfDA7dmFyIGQwPShQZSsoVD1UK01hdGguaW11bCho''@;'; put 'put ''dCxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKGh0LEluKXwwKStNYXRoLmltdWwoQnQsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKEJ0LEluKXwwKSsoUz4+PjEzKXwwKSsoZDA+Pj4yNil8MCxkMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4scG4pLFM9KFM9''@;'; put 'put ''TWF0aC5pbXVsKGJuLEtuKSkrTWF0aC5pbXVsKGVyLHBuKXwwLEY9TWF0aC5pbXVsKGVyLEtuKSxUPVQrTWF0aC5pbXVsKHluLHNuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4sVW4pfDApK01hdGguaW11bChsbixzbil8MCxGPUYrTWF0aC5pbXVsKGxuLFVuKXwwLFQ9VCtNYXRoLmltdWwoSnQs''@;'; put 'put ''dG4pfDAsUz0oUz1TK01hdGguaW11bChKdCx6bil8MCkrTWF0aC5pbXVsKGduLHRuKXwwLEY9RitNYXRoLmltdWwoZ24sem4pfDAsVD1UK01hdGguaW11bChVZSxCbil8MCxTPShTPVMrTWF0aC5pbXVsKFVlLGtyKXwwKStNYXRoLmltdWwoeXQsQm4pfDAsRj1GK01hdGguaW11bCh5dCxrcil8''@;'; put 'put ''MCxUPVQrTWF0aC5pbXVsKGZ0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsY24pfDApK01hdGguaW11bChIdCx1bil8MCxGPUYrTWF0aC5pbXVsKEh0LGNuKXwwLFQ9VCtNYXRoLmltdWwobHQsR3QpfDAsUz0oUz1TK01hdGguaW11bChsdCxrbil8MCkrTWF0aC5pbXVsKEx0LEd0KXwwLEY9''@;'; put 'put ''RitNYXRoLmltdWwoTHQsa24pfDA7dmFyIG0wPShQZSsoVD1UK01hdGguaW11bChfdCxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKF90LEluKXwwKStNYXRoLmltdWwodHQsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKHR0LEluKXwwKSsoUz4+PjEzKXwwKSso''@;'; put 'put ''bTA+Pj4yNil8MCxtMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sc24pLFM9KFM9TWF0aC5pbXVsKGJuLFVuKSkrTWF0aC5pbXVsKGVyLHNuKXwwLEY9TWF0aC5pbXVsKGVyLFVuKSxUPVQrTWF0aC5pbXVsKHluLHRuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4sem4pfDApK01hdGguaW11bChs''@;'; put 'put ''bix0bil8MCxGPUYrTWF0aC5pbXVsKGxuLHpuKXwwLFQ9VCtNYXRoLmltdWwoSnQsQm4pfDAsUz0oUz1TK01hdGguaW11bChKdCxrcil8MCkrTWF0aC5pbXVsKGduLEJuKXwwLEY9RitNYXRoLmltdWwoZ24sa3IpfDAsVD1UK01hdGguaW11bChVZSx1bil8MCxTPShTPVMrTWF0aC5pbXVsKFVl''@;'; put 'put ''LGNuKXwwKStNYXRoLmltdWwoeXQsdW4pfDAsRj1GK01hdGguaW11bCh5dCxjbil8MCxUPVQrTWF0aC5pbXVsKGZ0LEd0KXwwLFM9KFM9UytNYXRoLmltdWwoZnQsa24pfDApK01hdGguaW11bChIdCxHdCl8MCxGPUYrTWF0aC5pbXVsKEh0LGtuKXwwO3ZhciBHMD0oUGUrKFQ9VCtNYXRoLmlt''@;'; put 'put ''dWwobHQsZW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChsdCxJbil8MCkrTWF0aC5pbXVsKEx0LGVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChMdCxJbil8MCkrKFM+Pj4xMyl8MCkrKEcwPj4+MjYpfDAsRzAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGJuLHRuKSxT''@;'; put 'put ''PShTPU1hdGguaW11bChibix6bikpK01hdGguaW11bChlcix0bil8MCxGPU1hdGguaW11bChlcix6biksVD1UK01hdGguaW11bCh5bixCbil8MCxTPShTPVMrTWF0aC5pbXVsKHluLGtyKXwwKStNYXRoLmltdWwobG4sQm4pfDAsRj1GK01hdGguaW11bChsbixrcil8MCxUPVQrTWF0aC5pbXVs''@;'; put 'put ''KEp0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsY24pfDApK01hdGguaW11bChnbix1bil8MCxGPUYrTWF0aC5pbXVsKGduLGNuKXwwLFQ9VCtNYXRoLmltdWwoVWUsR3QpfDAsUz0oUz1TK01hdGguaW11bChVZSxrbil8MCkrTWF0aC5pbXVsKHl0LEd0KXwwLEY9RitNYXRoLmltdWwoeXQs''@;'; put 'put ''a24pfDA7dmFyIERpPShQZSsoVD1UK01hdGguaW11bChmdCxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKGZ0LEluKXwwKStNYXRoLmltdWwoSHQsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKEh0LEluKXwwKSsoUz4+PjEzKXwwKSsoRGk+Pj4yNil8MCxEaSY9''@;'; put 'put ''NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sQm4pLFM9KFM9TWF0aC5pbXVsKGJuLGtyKSkrTWF0aC5pbXVsKGVyLEJuKXwwLEY9TWF0aC5pbXVsKGVyLGtyKSxUPVQrTWF0aC5pbXVsKHluLHVuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4sY24pfDApK01hdGguaW11bChsbix1bil8MCxGPUYrTWF0''@;'; put 'put ''aC5pbXVsKGxuLGNuKXwwLFQ9VCtNYXRoLmltdWwoSnQsR3QpfDAsUz0oUz1TK01hdGguaW11bChKdCxrbil8MCkrTWF0aC5pbXVsKGduLEd0KXwwLEY9RitNYXRoLmltdWwoZ24sa24pfDA7dmFyIFcwPShQZSsoVD1UK01hdGguaW11bChVZSxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0''@;'; put 'put ''aC5pbXVsKFVlLEluKXwwKStNYXRoLmltdWwoeXQsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKHl0LEluKXwwKSsoUz4+PjEzKXwwKSsoVzA+Pj4yNil8MCxXMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sdW4pLFM9KFM9TWF0aC5pbXVsKGJuLGNuKSkrTWF0aC5pbXVsKGVy''@;'; put 'put ''LHVuKXwwLEY9TWF0aC5pbXVsKGVyLGNuKSxUPVQrTWF0aC5pbXVsKHluLEd0KXwwLFM9KFM9UytNYXRoLmltdWwoeW4sa24pfDApK01hdGguaW11bChsbixHdCl8MCxGPUYrTWF0aC5pbXVsKGxuLGtuKXwwO3ZhciBFbz0oUGUrKFQ9VCtNYXRoLmltdWwoSnQsZW4pfDApfDApKygoODE5MSYo''@;'; put 'put ''Uz0oUz1TK01hdGguaW11bChKdCxJbil8MCkrTWF0aC5pbXVsKGduLGVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChnbixJbil8MCkrKFM+Pj4xMyl8MCkrKEVvPj4+MjYpfDAsRW8mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGJuLEd0KSxTPShTPU1hdGguaW11bChibixrbikpK01h''@;'; put 'put ''dGguaW11bChlcixHdCl8MCxGPU1hdGguaW11bChlcixrbik7dmFyIHFvPShQZSsoVD1UK01hdGguaW11bCh5bixlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKHluLEluKXwwKStNYXRoLmltdWwobG4sZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGxuLEluKXww''@;'; put 'put ''KSsoUz4+PjEzKXwwKSsocW8+Pj4yNil8MCxxbyY9NjcxMDg4NjM7dmFyIGNhPShQZSsoVD1NYXRoLmltdWwoYm4sZW4pKXwwKSsoKDgxOTEmKFM9KFM9TWF0aC5pbXVsKGJuLEluKSkrTWF0aC5pbXVsKGVyLGVuKXwwKSk8PDEzKXwwO3JldHVybiBQZT0oKEY9TWF0aC5pbXVsKGVyLEluKSkr''@;'; put 'put ''KFM+Pj4xMyl8MCkrKGNhPj4+MjYpfDAsY2EmPTY3MTA4ODYzLERlWzBdPUpuLERlWzFdPW9yLERlWzJdPWdyLERlWzNdPUtyLERlWzRdPVZyLERlWzVdPWlpLERlWzZdPVJyLERlWzddPWxpLERlWzhdPU1pLERlWzldPW8wLERlWzEwXT1uMCxEZVsxMV09ZDAsRGVbMTJdPW0wLERlWzEzXT1H''@;'; put 'put ''MCxEZVsxNF09RGksRGVbMTVdPVcwLERlWzE2XT1FbyxEZVsxN109cW8sRGVbMThdPWNhLDAhPT1QZSYmKERlWzE5XT1QZSxWLmxlbmd0aCsrKSxWfTtmdW5jdGlvbiBrZSh4LFAsVil7cmV0dXJuKG5ldyBTZSkubXVscCh4LFAsVil9ZnVuY3Rpb24gU2UoeCxQKXt0aGlzLng9eCx0aGlzLnk9''@;'; put 'put ''UH1NYXRoLmltdWx8fChBZT12ZSksTi5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oeCxQKXt2YXIgVD10aGlzLmxlbmd0aCt4Lmxlbmd0aDtyZXR1cm4gMTA9PT10aGlzLmxlbmd0aCYmMTA9PT14Lmxlbmd0aD9BZSh0aGlzLHgsUCk6VDw2Mz92ZSh0aGlzLHgsUCk6VDwxMDI0P2Z1bmN0aW9u''@;'; put 'put ''KFMsRix5ZSl7eWUubmVnYXRpdmU9Ri5uZWdhdGl2ZV5TLm5lZ2F0aXZlLHllLmxlbmd0aD1TLmxlbmd0aCtGLmxlbmd0aDtmb3IodmFyIENlPTAsRGU9MCxQZT0wO1BlPHllLmxlbmd0aC0xO1BlKyspe3ZhciBRZT1EZTtEZT0wO2Zvcih2YXIgJGU9NjcxMDg4NjMmQ2UsZ3Q9TWF0aC5taW4o''@;'; put 'put ''UGUsRi5sZW5ndGgtMSksd3Q9TWF0aC5tYXgoMCxQZS1TLmxlbmd0aCsxKTt3dDw9Z3Q7d3QrKyl7dmFyIHZ0PSgwfFMud29yZHNbUGUtd3RdKSooMHxGLndvcmRzW3d0XSksQXQ9NjcxMDg4NjMmdnQ7JGU9NjcxMDg4NjMmKEF0PUF0KyRlfDApLERlKz0oUWU9KFFlPVFlKyh2dC82NzEwODg2''@;'; put 'put ''NHwwKXwwKSsoQXQ+Pj4yNil8MCk+Pj4yNixRZSY9NjcxMDg4NjN9eWUud29yZHNbUGVdPSRlLENlPVFlLFFlPURlfXJldHVybiAwIT09Q2U/eWUud29yZHNbUGVdPUNlOnllLmxlbmd0aC0tLHllLnN0cmlwKCl9KHRoaXMseCxQKTprZSh0aGlzLHgsUCl9LFNlLnByb3RvdHlwZS5tYWtlUkJU''@;'; put 'put ''PWZ1bmN0aW9uKHgpe2Zvcih2YXIgUD1uZXcgQXJyYXkoeCksVj1OLnByb3RvdHlwZS5fY291bnRCaXRzKHgpLTEsVD0wO1Q8eDtUKyspUFtUXT10aGlzLnJldkJpbihULFYseCk7cmV0dXJuIFB9LFNlLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oeCxQLFYpe2lmKDA9PT14fHx4PT09Vi0x''@;'; put 'put ''KXJldHVybiB4O2Zvcih2YXIgVD0wLFM9MDtTPFA7UysrKVR8PSgxJngpPDxQLVMtMSx4Pj49MTtyZXR1cm4gVH0sU2UucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oeCxQLFYsVCxTLEYpe2Zvcih2YXIgeWU9MDt5ZTxGO3llKyspVFt5ZV09UFt4W3llXV0sU1t5ZV09Vlt4W3llXV19LFNl''@;'; put 'put ''LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oeCxQLFYsVCxTLEYpe3RoaXMucGVybXV0ZShGLHgsUCxWLFQsUyk7Zm9yKHZhciB5ZT0xO3llPFM7eWU8PD0xKWZvcih2YXIgQ2U9eWU8PDEsRGU9TWF0aC5jb3MoMipNYXRoLlBJL0NlKSxQZT1NYXRoLnNpbigyKk1hdGguUEkvQ2UpLFFl''@;'; put 'put ''PTA7UWU8UztRZSs9Q2UpZm9yKHZhciAkZT1EZSxndD1QZSx3dD0wO3d0PHllO3d0Kyspe3ZhciBtdD1WW1FlK3d0XSx2dD1UW1FlK3d0XSxBdD1WW1FlK3d0K3llXSxodD1UW1FlK3d0K3llXSxCdD0kZSpBdC1ndCpodDtodD0kZSpodCtndCpBdCxWW1FlK3d0XT1tdCsoQXQ9QnQpLFRbUWUr''@;'; put 'put ''d3RdPXZ0K2h0LFZbUWUrd3QreWVdPW10LUF0LFRbUWUrd3QreWVdPXZ0LWh0LHd0IT09Q2UmJihCdD1EZSokZS1QZSpndCxndD1EZSpndCtQZSokZSwkZT1CdCl9fSxTZS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oeCxQKXt2YXIgVj0xfE1hdGgubWF4KFAseCksVD0xJlYsUz0w''@;'; put 'put ''O2ZvcihWPVYvMnwwO1Y7Vj4+Pj0xKVMrKztyZXR1cm4gMTw8UysxK1R9LFNlLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oeCxQLFYpe2lmKCEoVjw9MSkpZm9yKHZhciBUPTA7VDxWLzI7VCsrKXt2YXIgUz14W1RdO3hbVF09eFtWLVQtMV0seFtWLVQtMV09UyxTPVBbVF0sUFtUXT0t''@;'; put 'put ''UFtWLVQtMV0sUFtWLVQtMV09LVN9fSxTZS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKHgsUCl7Zm9yKHZhciBWPTAsVD0wO1Q8UC8yO1QrKyl7dmFyIFM9ODE5MipNYXRoLnJvdW5kKHhbMipUKzFdL1ApK01hdGgucm91bmQoeFsyKlRdL1ApK1Y7eFtUXT02NzEwODg2MyZTLFY9''@;'; put 'put ''Uzw2NzEwODg2ND8wOlMvNjcxMDg4NjR8MH1yZXR1cm4geH0sU2UucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oeCxQLFYsVCl7Zm9yKHZhciBTPTAsRj0wO0Y8UDtGKyspVlsyKkZdPTgxOTEmKFMrPTB8eFtGXSksVlsyKkYrMV09ODE5MSYoUz4+Pj0xMyksUz4+Pj0xMztmb3IoRj0y''@;'; put 'put ''KlA7RjxUOysrRilWW0ZdPTA7WSgwPT09UyksWSgwPT0oLTgxOTImUykpfSxTZS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbih4KXtmb3IodmFyIFA9bmV3IEFycmF5KHgpLFY9MDtWPHg7VisrKVBbVl09MDtyZXR1cm4gUH0sU2UucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oeCxQLFYpe3ZhciBU''@;'; put 'put ''PTIqdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCxQLmxlbmd0aCksUz10aGlzLm1ha2VSQlQoVCksRj10aGlzLnN0dWIoVCkseWU9bmV3IEFycmF5KFQpLENlPW5ldyBBcnJheShUKSxEZT1uZXcgQXJyYXkoVCksUGU9bmV3IEFycmF5KFQpLFFlPW5ldyBBcnJheShUKSwkZT1uZXcgQXJyYXko''@;'; put 'put ''VCksZ3Q9Vi53b3JkcztndC5sZW5ndGg9VCx0aGlzLmNvbnZlcnQxM2IoeC53b3Jkcyx4Lmxlbmd0aCx5ZSxUKSx0aGlzLmNvbnZlcnQxM2IoUC53b3JkcyxQLmxlbmd0aCxQZSxUKSx0aGlzLnRyYW5zZm9ybSh5ZSxGLENlLERlLFQsUyksdGhpcy50cmFuc2Zvcm0oUGUsRixRZSwkZSxULFMp''@;'; put 'put ''O2Zvcih2YXIgd3Q9MDt3dDxUO3d0Kyspe3ZhciBtdD1DZVt3dF0qUWVbd3RdLURlW3d0XSokZVt3dF07RGVbd3RdPUNlW3d0XSokZVt3dF0rRGVbd3RdKlFlW3d0XSxDZVt3dF09bXR9cmV0dXJuIHRoaXMuY29uanVnYXRlKENlLERlLFQpLHRoaXMudHJhbnNmb3JtKENlLERlLGd0LEYsVCxT''@;'; put 'put ''KSx0aGlzLmNvbmp1Z2F0ZShndCxGLFQpLHRoaXMubm9ybWFsaXplMTNiKGd0LFQpLFYubmVnYXRpdmU9eC5uZWdhdGl2ZV5QLm5lZ2F0aXZlLFYubGVuZ3RoPXgubGVuZ3RoK1AubGVuZ3RoLFYuc3RyaXAoKX0sTi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHgpe3ZhciBQPW5ldyBOKG51bGwp''@;'; put 'put ''O3JldHVybiBQLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCt4Lmxlbmd0aCksdGhpcy5tdWxUbyh4LFApfSxOLnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKHgpe3ZhciBQPW5ldyBOKG51bGwpO3JldHVybiBQLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCt4Lmxlbmd0aCksa2UodGhp''@;'; put 'put ''cyx4LFApfSxOLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oeCx0aGlzKX0sTi5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgpLFkoeDw2NzEwODg2NCk7Zm9yKHZhciBQPTAsVj0wO1Y8dGhpcy5sZW5n''@;'; put 'put ''dGg7VisrKXt2YXIgVD0oMHx0aGlzLndvcmRzW1ZdKSp4LFM9KDY3MTA4ODYzJlQpKyg2NzEwODg2MyZQKTtQPj49MjYsUCs9VC82NzEwODg2NHwwLFArPVM+Pj4yNix0aGlzLndvcmRzW1ZdPTY3MTA4ODYzJlN9cmV0dXJuIDAhPT1QJiYodGhpcy53b3Jkc1tWXT1QLHRoaXMubGVuZ3RoKysp''@;'; put 'put ''LHRoaXN9LE4ucHJvdG90eXBlLm11bG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbih4KX0sTi5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVsKHRoaXMpfSxOLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW11bCh0aGlz''@;'; put 'put ''LmNsb25lKCkpfSxOLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oeCl7dmFyIFA9ZnVuY3Rpb24oRil7Zm9yKHZhciB5ZT1uZXcgQXJyYXkoRi5iaXRMZW5ndGgoKSksQ2U9MDtDZTx5ZS5sZW5ndGg7Q2UrKyl7dmFyIFBlPUNlJTI2O3llW0NlXT0oRi53b3Jkc1tDZS8yNnwwXSYxPDxQZSk+Pj5Q''@;'; put 'put ''ZX1yZXR1cm4geWV9KHgpO2lmKDA9PT1QLmxlbmd0aClyZXR1cm4gbmV3IE4oMSk7Zm9yKHZhciBWPXRoaXMsVD0wO1Q8UC5sZW5ndGgmJjA9PT1QW1RdO1QrKyxWPVYuc3FyKCkpO2lmKCsrVDxQLmxlbmd0aClmb3IodmFyIFM9Vi5zcXIoKTtUPFAubGVuZ3RoO1QrKyxTPVMuc3FyKCkpMCE9''@;'; put 'put ''PVBbVF0mJihWPVYubXVsKFMpKTtyZXR1cm4gVn0sTi5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgUCxWPXglMjYsVD0oeC1WKS8yNixTPTY3MTA4ODYzPj4+MjYtVjw8MjYtVjtpZigwIT09Vil7dmFyIEY9MDtmb3IoUD0wO1A8''@;'; put 'put ''dGhpcy5sZW5ndGg7UCsrKXt2YXIgeWU9dGhpcy53b3Jkc1tQXSZTO3RoaXMud29yZHNbUF09KDB8dGhpcy53b3Jkc1tQXSkteWU8PFZ8RixGPXllPj4+MjYtVn1GJiYodGhpcy53b3Jkc1tQXT1GLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1UKXtmb3IoUD10aGlzLmxlbmd0aC0xO1A+PTA7UC0t''@;'; put 'put ''KXRoaXMud29yZHNbUCtUXT10aGlzLndvcmRzW1BdO2ZvcihQPTA7UDxUO1ArKyl0aGlzLndvcmRzW1BdPTA7dGhpcy5sZW5ndGgrPVR9cmV0dXJuIHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oeCl7cmV0dXJuIFkoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVz''@;'; put 'put ''aGxuKHgpfSxOLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oeCxQLFYpe3ZhciBUO1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKSxUPVA/KFAtUCUyNikvMjY6MDt2YXIgUz14JTI2LEY9TWF0aC5taW4oKHgtUykvMjYsdGhpcy5sZW5ndGgpLHllPTY3MTA4ODYzXjY3MTA4ODYzPj4+Uzw8''@;'; put 'put ''UyxDZT1WO2lmKFQtPUYsVD1NYXRoLm1heCgwLFQpLENlKXtmb3IodmFyIERlPTA7RGU8RjtEZSsrKUNlLndvcmRzW0RlXT10aGlzLndvcmRzW0RlXTtDZS5sZW5ndGg9Rn1pZigwIT09RilpZih0aGlzLmxlbmd0aD5GKWZvcih0aGlzLmxlbmd0aC09RixEZT0wO0RlPHRoaXMubGVuZ3RoO0Rl''@;'; put 'put ''KyspdGhpcy53b3Jkc1tEZV09dGhpcy53b3Jkc1tEZStGXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBQZT0wO2ZvcihEZT10aGlzLmxlbmd0aC0xO0RlPj0wJiYoMCE9PVBlfHxEZT49VCk7RGUtLSl7dmFyIFFlPTB8dGhpcy53b3Jkc1tEZV07dGhpcy53b3Jkc1tE''@;'; put 'put ''ZV09UGU8PDI2LVN8UWU+Pj5TLFBlPVFlJnllfXJldHVybiBDZSYmMCE9PVBlJiYoQ2Uud29yZHNbQ2UubGVuZ3RoKytdPVBlKSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbih4''@;'; put 'put ''LFAsVil7cmV0dXJuIFkoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKHgsUCxWKX0sTi5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKHgpfSxOLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1''@;'; put 'put ''c2hsbih4KX0sTi5wcm90b3R5cGUuc2hybj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKHgpfSxOLnByb3RvdHlwZS51c2hybj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybih4KX0sTi5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24oeCl7WSgibnVt''@;'; put 'put ''YmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBQPXglMjYsVj0oeC1QKS8yNjtyZXR1cm4hKHRoaXMubGVuZ3RoPD1WfHwhKHRoaXMud29yZHNbVl0mMTw8UCkpfSxOLnByb3RvdHlwZS5pbWFza249ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBQPXglMjYsVj0o''@;'; put 'put ''eC1QKS8yNjtyZXR1cm4gWSgwPT09dGhpcy5uZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzIiksdGhpcy5sZW5ndGg8PVY/dGhpczooMCE9PVAmJlYrKyx0aGlzLmxlbmd0aD1NYXRoLm1pbihWLHRoaXMubGVuZ3RoKSwwIT09UCYmKHRoaXMud29yZHNb''@;'; put 'put ''dGhpcy5sZW5ndGgtMV0mPTY3MTA4ODYzXjY3MTA4ODYzPj4+UDw8UCksdGhpcy5zdHJpcCgpKX0sTi5wcm90b3R5cGUubWFza249ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oeCl9LE4ucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKHgpe3JldHVybiBZKCJudW1iZXIi''@;'; put 'put ''PT10eXBlb2YgeCksWSh4PDY3MTA4ODY0KSx4PDA/dGhpcy5pc3VibigteCk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTx4Pyh0aGlzLndvcmRzWzBdPXgtKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5l''@;'; put 'put ''Z2F0aXZlPTAsdGhpcy5pc3Vibih4KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oeCl9LE4ucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbih4KXt0aGlzLndvcmRzWzBdKz14O2Zvcih2YXIgUD0wO1A8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbUF0+PTY3MTA4ODY0O1ArKyl0''@;'; put 'put ''aGlzLndvcmRzW1BdLT02NzEwODg2NCxQPT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW1ArMV09MTp0aGlzLndvcmRzW1ArMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsUCsxKSx0aGlzfSxOLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbih4KXtpZihZKCJu''@;'; put 'put ''dW1iZXIiPT10eXBlb2YgeCksWSh4PDY3MTA4ODY0KSx4PDApcmV0dXJuIHRoaXMuaWFkZG4oLXgpO2lmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbih4KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT14LDE9PT10aGlz''@;'; put 'put ''Lmxlbmd0aCYmdGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vsc2UgZm9yKHZhciBQPTA7UDx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tQXTwwO1ArKyl0aGlzLndvcmRzW1BdKz02NzEwODg2NCx0aGlzLndvcmRzW1ArMV0tPTE7''@;'; put 'put ''cmV0dXJuIHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKHgpfSxOLnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4oeCl9LE4ucHJvdG90eXBlLmlhYnM9ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXN9LE4ucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfSxOLnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24oeCxQLFYpe3ZhciBULFM7dGhpcy5fZXhwYW5kKHgubGVuZ3RoK1YpO3ZhciB5''@;'; put 'put ''ZT0wO2ZvcihUPTA7VDx4Lmxlbmd0aDtUKyspe1M9KDB8dGhpcy53b3Jkc1tUK1ZdKSt5ZTt2YXIgQ2U9KDB8eC53b3Jkc1tUXSkqUDt5ZT0oKFMtPTY3MTA4ODYzJkNlKT4+MjYpLShDZS82NzEwODg2NHwwKSx0aGlzLndvcmRzW1QrVl09NjcxMDg4NjMmU31mb3IoO1Q8dGhpcy5sZW5ndGgt''@;'; put 'put ''VjtUKyspeWU9KFM9KDB8dGhpcy53b3Jkc1tUK1ZdKSt5ZSk+PjI2LHRoaXMud29yZHNbVCtWXT02NzEwODg2MyZTO2lmKDA9PT15ZSlyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihZKC0xPT09eWUpLHllPTAsVD0wO1Q8dGhpcy5sZW5ndGg7VCsrKXllPShTPS0oMHx0aGlzLndvcmRzW1RdKSt5''@;'; put 'put ''ZSk+PjI2LHRoaXMud29yZHNbVF09NjcxMDg4NjMmUztyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oeCxQKXt2YXIgVixUPXRoaXMuY2xvbmUoKSxTPXgsRj0wfFMud29yZHNbUy5sZW5ndGgtMV07MCE9KFY9MjYtdGhp''@;'; put 'put ''cy5fY291bnRCaXRzKEYpKSYmKFM9Uy51c2hsbihWKSxULml1c2hsbihWKSxGPTB8Uy53b3Jkc1tTLmxlbmd0aC0xXSk7dmFyIHllLENlPVQubGVuZ3RoLVMubGVuZ3RoO2lmKCJtb2QiIT09UCl7KHllPW5ldyBOKG51bGwpKS5sZW5ndGg9Q2UrMSx5ZS53b3Jkcz1uZXcgQXJyYXkoeWUubGVu''@;'; put 'put ''Z3RoKTtmb3IodmFyIERlPTA7RGU8eWUubGVuZ3RoO0RlKyspeWUud29yZHNbRGVdPTB9dmFyIFBlPVQuY2xvbmUoKS5faXNobG5zdWJtdWwoUywxLENlKTswPT09UGUubmVnYXRpdmUmJihUPVBlLHllJiYoeWUud29yZHNbQ2VdPTEpKTtmb3IodmFyIFFlPUNlLTE7UWU+PTA7UWUtLSl7dmFy''@;'; put 'put ''ICRlPTY3MTA4ODY0KigwfFQud29yZHNbUy5sZW5ndGgrUWVdKSsoMHxULndvcmRzW1MubGVuZ3RoK1FlLTFdKTtmb3IoJGU9TWF0aC5taW4oJGUvRnwwLDY3MTA4ODYzKSxULl9pc2hsbnN1Ym11bChTLCRlLFFlKTswIT09VC5uZWdhdGl2ZTspJGUtLSxULm5lZ2F0aXZlPTAsVC5faXNobG5z''@;'; put 'put ''dWJtdWwoUywxLFFlKSxULmlzWmVybygpfHwoVC5uZWdhdGl2ZV49MSk7eWUmJih5ZS53b3Jkc1tRZV09JGUpfXJldHVybiB5ZSYmeWUuc3RyaXAoKSxULnN0cmlwKCksImRpdiIhPT1QJiYwIT09ViYmVC5pdXNocm4oVikse2Rpdjp5ZXx8bnVsbCxtb2Q6VH19LE4ucHJvdG90eXBlLmRpdm1v''@;'; put 'put ''ZD1mdW5jdGlvbih4LFAsVil7cmV0dXJuIFkoIXguaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgTigwKSxtb2Q6bmV3IE4oMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09eC5uZWdhdGl2ZT8oRj10aGlzLm5lZygpLmRpdm1vZCh4LFApLCJtb2QiIT09UCYmKFQ9Ri5kaXYubmVn''@;'; put 'put ''KCkpLCJkaXYiIT09UCYmKFM9Ri5tb2QubmVnKCksViYmMCE9PVMubmVnYXRpdmUmJlMuaWFkZCh4KSkse2RpdjpULG1vZDpTfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT14Lm5lZ2F0aXZlPyhGPXRoaXMuZGl2bW9kKHgubmVnKCksUCksIm1vZCIhPT1QJiYoVD1GLmRpdi5uZWcoKSkse2Rp''@;'; put 'put ''djpULG1vZDpGLm1vZH0pOjAhPSh0aGlzLm5lZ2F0aXZlJngubmVnYXRpdmUpPyhGPXRoaXMubmVnKCkuZGl2bW9kKHgubmVnKCksUCksImRpdiIhPT1QJiYoUz1GLm1vZC5uZWcoKSxWJiYwIT09Uy5uZWdhdGl2ZSYmUy5pc3ViKHgpKSx7ZGl2OkYuZGl2LG1vZDpTfSk6eC5sZW5ndGg+dGhp''@;'; put 'put ''cy5sZW5ndGh8fHRoaXMuY21wKHgpPDA/e2RpdjpuZXcgTigwKSxtb2Q6dGhpc306MT09PXgubGVuZ3RoPyJkaXYiPT09UD97ZGl2OnRoaXMuZGl2bih4LndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1QP3tkaXY6bnVsbCxtb2Q6bmV3IE4odGhpcy5tb2RuKHgud29yZHNbMF0pKX06e2Rp''@;'; put 'put ''djp0aGlzLmRpdm4oeC53b3Jkc1swXSksbW9kOm5ldyBOKHRoaXMubW9kbih4LndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoeCxQKTt2YXIgVCxTLEZ9LE4ucHJvdG90eXBlLmRpdj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5kaXZtb2QoeCwiZGl2IiwhMSkuZGl2fSxOLnByb3RvdHlwZS5t''@;'; put 'put ''b2Q9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZGl2bW9kKHgsIm1vZCIsITEpLm1vZH0sTi5wcm90b3R5cGUudW1vZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5kaXZtb2QoeCwibW9kIiwhMCkubW9kfSxOLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbih4KXt2YXIgUD10aGlzLmRpdm1v''@;'; put 'put ''ZCh4KTtpZihQLm1vZC5pc1plcm8oKSlyZXR1cm4gUC5kaXY7dmFyIFY9MCE9PVAuZGl2Lm5lZ2F0aXZlP1AubW9kLmlzdWIoeCk6UC5tb2QsVD14LnVzaHJuKDEpLFM9eC5hbmRsbigxKSxGPVYuY21wKFQpO3JldHVybiBGPDB8fDE9PT1TJiYwPT09Rj9QLmRpdjowIT09UC5kaXYubmVnYXRp''@;'; put 'put ''dmU/UC5kaXYuaXN1Ym4oMSk6UC5kaXYuaWFkZG4oMSl9LE4ucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oeCl7WSh4PD02NzEwODg2Myk7Zm9yKHZhciBQPTY3MTA4ODY0JXgsVj0wLFQ9dGhpcy5sZW5ndGgtMTtUPj0wO1QtLSlWPShQKlYrKDB8dGhpcy53b3Jkc1tUXSkpJXg7cmV0dXJuIFZ9''@;'; put 'put ''LE4ucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKHgpe1koeDw9NjcxMDg4NjMpO2Zvcih2YXIgUD0wLFY9dGhpcy5sZW5ndGgtMTtWPj0wO1YtLSl7dmFyIFQ9KDB8dGhpcy53b3Jkc1tWXSkrNjcxMDg4NjQqUDt0aGlzLndvcmRzW1ZdPVQveHwwLFA9VCV4fXJldHVybiB0aGlzLnN0cmlwKCl9''@;'; put 'put ''LE4ucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bih4KX0sTi5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbih4KXtZKDA9PT14Lm5lZ2F0aXZlKSxZKCF4LmlzWmVybygpKTt2YXIgUD10aGlzLFY9eC5jbG9uZSgpO1A9MCE9PVAubmVnYXRpdmU/UC51''@;'; put 'put ''bW9kKHgpOlAuY2xvbmUoKTtmb3IodmFyIFQ9bmV3IE4oMSksUz1uZXcgTigwKSxGPW5ldyBOKDApLHllPW5ldyBOKDEpLENlPTA7UC5pc0V2ZW4oKSYmVi5pc0V2ZW4oKTspUC5pdXNocm4oMSksVi5pdXNocm4oMSksKytDZTtmb3IodmFyIERlPVYuY2xvbmUoKSxQZT1QLmNsb25lKCk7IVAu''@;'; put 'put ''aXNaZXJvKCk7KXtmb3IodmFyIFFlPTAsJGU9MTswPT0oUC53b3Jkc1swXSYkZSkmJlFlPDI2OysrUWUsJGU8PD0xKTtpZihRZT4wKWZvcihQLml1c2hybihRZSk7UWUtLSA+MDspKFQuaXNPZGQoKXx8Uy5pc09kZCgpKSYmKFQuaWFkZChEZSksUy5pc3ViKFBlKSksVC5pdXNocm4oMSksUy5p''@;'; put 'put ''dXNocm4oMSk7Zm9yKHZhciBndD0wLHd0PTE7MD09KFYud29yZHNbMF0md3QpJiZndDwyNjsrK2d0LHd0PDw9MSk7aWYoZ3Q+MClmb3IoVi5pdXNocm4oZ3QpO2d0LS0gPjA7KShGLmlzT2RkKCl8fHllLmlzT2RkKCkpJiYoRi5pYWRkKERlKSx5ZS5pc3ViKFBlKSksRi5pdXNocm4oMSkseWUu''@;'; put 'put ''aXVzaHJuKDEpO1AuY21wKFYpPj0wPyhQLmlzdWIoViksVC5pc3ViKEYpLFMuaXN1Yih5ZSkpOihWLmlzdWIoUCksRi5pc3ViKFQpLHllLmlzdWIoUykpfXJldHVybnthOkYsYjp5ZSxnY2Q6Vi5pdXNobG4oQ2UpfX0sTi5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKHgpe1koMD09PXgubmVn''@;'; put 'put ''YXRpdmUpLFkoIXguaXNaZXJvKCkpO3ZhciBQPXRoaXMsVj14LmNsb25lKCk7UD0wIT09UC5uZWdhdGl2ZT9QLnVtb2QoeCk6UC5jbG9uZSgpO2Zvcih2YXIgVCxTPW5ldyBOKDEpLEY9bmV3IE4oMCkseWU9Vi5jbG9uZSgpO1AuY21wbigxKT4wJiZWLmNtcG4oMSk+MDspe2Zvcih2YXIgQ2U9''@;'; put 'put ''MCxEZT0xOzA9PShQLndvcmRzWzBdJkRlKSYmQ2U8MjY7KytDZSxEZTw8PTEpO2lmKENlPjApZm9yKFAuaXVzaHJuKENlKTtDZS0tID4wOylTLmlzT2RkKCkmJlMuaWFkZCh5ZSksUy5pdXNocm4oMSk7Zm9yKHZhciBQZT0wLFFlPTE7MD09KFYud29yZHNbMF0mUWUpJiZQZTwyNjsrK1BlLFFl''@;'; put 'put ''PDw9MSk7aWYoUGU+MClmb3IoVi5pdXNocm4oUGUpO1BlLS0gPjA7KUYuaXNPZGQoKSYmRi5pYWRkKHllKSxGLml1c2hybigxKTtQLmNtcChWKT49MD8oUC5pc3ViKFYpLFMuaXN1YihGKSk6KFYuaXN1YihQKSxGLmlzdWIoUykpfXJldHVybihUPTA9PT1QLmNtcG4oMSk/UzpGKS5jbXBuKDAp''@;'; put 'put ''PDAmJlQuaWFkZCh4KSxUfSxOLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oeCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4geC5hYnMoKTtpZih4LmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBQPXRoaXMuY2xvbmUoKSxWPXguY2xvbmUoKTtQLm5lZ2F0aXZlPTAsVi5uZWdhdGl2ZT0w''@;'; put 'put ''O2Zvcih2YXIgVD0wO1AuaXNFdmVuKCkmJlYuaXNFdmVuKCk7VCsrKVAuaXVzaHJuKDEpLFYuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtQLmlzRXZlbigpOylQLml1c2hybigxKTtmb3IoO1YuaXNFdmVuKCk7KVYuaXVzaHJuKDEpO3ZhciBTPVAuY21wKFYpO2lmKFM8MCl7dmFyIEY9UDtQPVYs''@;'; put 'put ''Vj1GfWVsc2UgaWYoMD09PVN8fDA9PT1WLmNtcG4oMSkpYnJlYWs7UC5pc3ViKFYpfXJldHVybiBWLml1c2hsbihUKX0sTi5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5lZ2NkKHgpLmEudW1vZCh4KX0sTi5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IDA9PSgxJnRoaXMud29yZHNbMF0pfSxOLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLndvcmRzWzBdKX0sTi5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMud29yZHNbMF0meH0sTi5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oeCl7''@;'; put 'put ''WSgibnVtYmVyIj09dHlwZW9mIHgpO3ZhciBQPXglMjYsVj0oeC1QKS8yNixUPTE8PFA7aWYodGhpcy5sZW5ndGg8PVYpcmV0dXJuIHRoaXMuX2V4cGFuZChWKzEpLHRoaXMud29yZHNbVl18PVQsdGhpcztmb3IodmFyIFM9VCxGPVY7MCE9PVMmJkY8dGhpcy5sZW5ndGg7RisrKXt2YXIgeWU9''@;'; put 'put ''MHx0aGlzLndvcmRzW0ZdO1M9KHllKz1TKT4+PjI2LHRoaXMud29yZHNbRl09eWUmPTY3MTA4ODYzfXJldHVybiAwIT09UyYmKHRoaXMud29yZHNbRl09Uyx0aGlzLmxlbmd0aCsrKSx0aGlzfSxOLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYw''@;'; put 'put ''PT09dGhpcy53b3Jkc1swXX0sTi5wcm90b3R5cGUuY21wbj1mdW5jdGlvbih4KXt2YXIgUCxWPXg8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIVYpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJlYpcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpUD0xO2Vsc2V7''@;'; put 'put ''ViYmKHg9LXgpLFkoeDw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIFQ9MHx0aGlzLndvcmRzWzBdO1A9VD09PXg/MDpUPHg/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtUDpQfSxOLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oeCl7aWYoMCE9PXRoaXMubmVnYXRp''@;'; put 'put ''dmUmJjA9PT14Lm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09eC5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgUD10aGlzLnVjbXAoeCk7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LVA6UH0sTi5wcm90b3R5cGUudWNtcD1mdW5jdGlvbih4KXtpZih0aGlzLmxl''@;'; put 'put ''bmd0aD54Lmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDx4Lmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIFA9MCxWPXRoaXMubGVuZ3RoLTE7Vj49MDtWLS0pe3ZhciBUPTB8dGhpcy53b3Jkc1tWXSxTPTB8eC53b3Jkc1tWXTtpZihUIT09Uyl7VDxTP1A9LTE6VD5TJiYoUD0xKTticmVh''@;'; put 'put ''a319cmV0dXJuIFB9LE4ucHJvdG90eXBlLmd0bj1mdW5jdGlvbih4KXtyZXR1cm4gMT09PXRoaXMuY21wbih4KX0sTi5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oeCl7cmV0dXJuIDE9PT10aGlzLmNtcCh4KX0sTi5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbXBuKHgp''@;'; put 'put ''Pj0wfSxOLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wKHgpPj0wfSxOLnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oeCl7cmV0dXJuLTE9PT10aGlzLmNtcG4oeCl9LE4ucHJvdG90eXBlLmx0PWZ1bmN0aW9uKHgpe3JldHVybi0xPT09dGhpcy5jbXAoeCl9LE4ucHJv''@;'; put 'put ''dG90eXBlLmx0ZW49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wbih4KTw9MH0sTi5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNtcCh4KTw9MH0sTi5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKHgpe3JldHVybiAwPT09dGhpcy5jbXBuKHgpfSxOLnByb3RvdHlwZS5l''@;'; put 'put ''cT1mdW5jdGlvbih4KXtyZXR1cm4gMD09PXRoaXMuY21wKHgpfSxOLnJlZD1mdW5jdGlvbih4KXtyZXR1cm4gbmV3IGVlKHgpfSxOLnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbih4KXtyZXR1cm4gWSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSxZ''@;'; put 'put ''KDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLHguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZCh4KX0sTi5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJz''@;'; put 'put ''IGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LE4ucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5yZWQ9eCx0aGlzfSxOLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbih4KXtyZXR1cm4gWSghdGhpcy5yZWQsIkFs''@;'; put 'put ''cmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZCh4KX0sTi5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMseCl9''@;'; put 'put ''LE4ucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJl''@;'; put 'put ''ZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMs''@;'; put 'put ''eCl9LE4ucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJl''@;'; put 'put ''ZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLHgpLHRoaXMucmVkLm11bCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1i''@;'; put 'put ''ZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx4KSx0aGlzLnJlZC5pbXVsKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyks''@;'; put 'put ''dGhpcy5yZWQuc3FyKHRoaXMpfSxOLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sTi5wcm90b3R5cGUu''@;'; put 'put ''cmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LE4ucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlz''@;'; put 'put ''LnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxOLnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQg''@;'; put 'put ''bnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sTi5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkJiYheC5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQu''@;'; put 'put ''cG93KHRoaXMseCl9O3ZhciBJZT17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIFRlKHgsUCl7dGhpcy5uYW1lPXgsdGhpcy5wPW5ldyBOKFAsMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBOKDEpLml1c2hsbih0aGlz''@;'; put 'put ''Lm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBNZSgpe1RlLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24gaGUoKXtUZS5j''@;'; put 'put ''YWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIE8oKXtUZS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZm''@;'; put 'put ''ZmZmZiIpfWZ1bmN0aW9uIHooKXtUZS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIGVlKHgpe2lmKCJzdHJpbmciPT10eXBlb2YgeCl7dmFyIFA9Ti5fcHJpbWUo''@;'; put 'put ''eCk7dGhpcy5tPVAucCx0aGlzLnByaW1lPVB9ZWxzZSBZKHguZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09eCx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gbmUoeCl7ZWUuY2FsbCh0aGlzLHgpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRo''@;'; put 'put ''aXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IE4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52''@;'; put 'put ''Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9VGUucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgeD1uZXcgTihudWxsKTtyZXR1cm4geC53b3Jkcz1uZXcg''@;'; put 'put ''QXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLHh9LFRlLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKHgpe3ZhciBQLFY9eDtkb3t0aGlzLnNwbGl0KFYsdGhpcy50bXApLFA9KFY9KFY9dGhpcy5pbXVsSyhWKSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxlKFA+dGhpcy5u''@;'; put 'put ''KTt2YXIgVD1QPHRoaXMubj8tMTpWLnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PVQ/KFYud29yZHNbMF09MCxWLmxlbmd0aD0xKTpUPjA/Vi5pc3ViKHRoaXMucCk6dm9pZCAwIT09Vi5zdHJpcD9WLnN0cmlwKCk6Vi5fc3RyaXAoKSxWfSxUZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oeCxQ''@;'; put 'put ''KXt4Lml1c2hybih0aGlzLm4sMCxQKX0sVGUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHgpe3JldHVybiB4LmltdWwodGhpcy5rKX0sVyhNZSxUZSksTWUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKHgsUCl7Zm9yKHZhciBWPTQxOTQzMDMsVD1NYXRoLm1pbih4Lmxlbmd0aCw5KSxTPTA7''@;'; put 'put ''UzxUO1MrKylQLndvcmRzW1NdPXgud29yZHNbU107aWYoUC5sZW5ndGg9VCx4Lmxlbmd0aDw9OSlyZXR1cm4geC53b3Jkc1swXT0wLHZvaWQoeC5sZW5ndGg9MSk7dmFyIEY9eC53b3Jkc1s5XTtmb3IoUC53b3Jkc1tQLmxlbmd0aCsrXT1GJlYsUz0xMDtTPHgubGVuZ3RoO1MrKyl7dmFyIHll''@;'; put 'put ''PTB8eC53b3Jkc1tTXTt4LndvcmRzW1MtMTBdPSh5ZSZWKTw8NHxGPj4+MjIsRj15ZX14LndvcmRzW1MtMTBdPUY+Pj49MjIseC5sZW5ndGgtPTA9PT1GJiZ4Lmxlbmd0aD4xMD8xMDo5fSxNZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oeCl7eC53b3Jkc1t4Lmxlbmd0aF09MCx4LndvcmRz''@;'; put 'put ''W3gubGVuZ3RoKzFdPTAseC5sZW5ndGgrPTI7Zm9yKHZhciBQPTAsVj0wO1Y8eC5sZW5ndGg7VisrKXt2YXIgVD0wfHgud29yZHNbVl07eC53b3Jkc1tWXT02NzEwODg2MyYoUCs9OTc3KlQpLFA9NjQqVCsoUC82NzEwODg2NHwwKX1yZXR1cm4gMD09PXgud29yZHNbeC5sZW5ndGgtMV0mJih4''@;'; put 'put ''Lmxlbmd0aC0tLDA9PT14LndvcmRzW3gubGVuZ3RoLTFdJiZ4Lmxlbmd0aC0tKSx4fSxXKGhlLFRlKSxXKE8sVGUpLFcoeixUZSksei5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oeCl7Zm9yKHZhciBQPTAsVj0wO1Y8eC5sZW5ndGg7VisrKXt2YXIgVD0xOSooMHx4LndvcmRzW1ZdKStQLFM9''@;'; put 'put ''NjcxMDg4NjMmVDtUPj4+PTI2LHgud29yZHNbVl09UyxQPVR9cmV0dXJuIDAhPT1QJiYoeC53b3Jkc1t4Lmxlbmd0aCsrXT1QKSx4fSxOLl9wcmltZT1mdW5jdGlvbih4KXtpZihJZVt4XSlyZXR1cm4gSWVbeF07dmFyIFA7aWYoImsyNTYiPT09eClQPW5ldyBNZTtlbHNlIGlmKCJwMjI0Ij09''@;'; put 'put ''PXgpUD1uZXcgaGU7ZWxzZSBpZigicDE5MiI9PT14KVA9bmV3IE87ZWxzZXtpZigicDI1NTE5IiE9PXgpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIreCk7UD1uZXcgen1yZXR1cm4gSWVbeF09UCxQfSxlZS5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oeCl7WSgwPT09eC5u''@;'; put 'put ''ZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxZKHgucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LGVlLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbih4LFApe1koMD09KHgubmVnYXRpdmV8UC5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5''@;'; put 'put ''IHdpdGggcG9zaXRpdmVzIiksWSh4LnJlZCYmeC5yZWQ9PT1QLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxlZS5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UoeCkuX2ZvcmNlUmVkKHRoaXMpOngu''@;'; put 'put ''dW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKX0sZWUucHJvdG90eXBlLm5lZz1mdW5jdGlvbih4KXtyZXR1cm4geC5pc1plcm8oKT94LmNsb25lKCk6dGhpcy5tLnN1Yih4KS5fZm9yY2VSZWQodGhpcyl9LGVlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgs''@;'; put 'put ''UCk7dmFyIFY9eC5hZGQoUCk7cmV0dXJuIFYuY21wKHRoaXMubSk+PTAmJlYuaXN1Yih0aGlzLm0pLFYuX2ZvcmNlUmVkKHRoaXMpfSxlZS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbih4LFApe3RoaXMuX3ZlcmlmeTIoeCxQKTt2YXIgVj14LmlhZGQoUCk7cmV0dXJuIFYuY21wKHRoaXMubSk+''@;'; put 'put ''PTAmJlYuaXN1Yih0aGlzLm0pLFZ9LGVlLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7dmFyIFY9eC5zdWIoUCk7cmV0dXJuIFYuY21wbigwKTwwJiZWLmlhZGQodGhpcy5tKSxWLl9mb3JjZVJlZCh0aGlzKX0sZWUucHJvdG90eXBlLmlzdWI9ZnVuY3Rp''@;'; put 'put ''b24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7dmFyIFY9eC5pc3ViKFApO3JldHVybiBWLmNtcG4oMCk8MCYmVi5pYWRkKHRoaXMubSksVn0sZWUucHJvdG90eXBlLnNobD1mdW5jdGlvbih4LFApe3JldHVybiB0aGlzLl92ZXJpZnkxKHgpLHRoaXMuaW1vZCh4LnVzaGxuKFApKX0sZWUucHJv''@;'; put 'put ''dG90eXBlLmltdWw9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gdGhpcy5fdmVyaWZ5Mih4LFApLHRoaXMuaW1vZCh4LmltdWwoUCkpfSxlZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoeCxQKSx0aGlzLmltb2QoeC5tdWwoUCkpfSxlZS5wcm90b3R5cGUu''@;'; put 'put ''aXNxcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5pbXVsKHgseC5jbG9uZSgpKX0sZWUucHJvdG90eXBlLnNxcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5tdWwoeCx4KX0sZWUucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oeCl7aWYoeC5pc1plcm8oKSlyZXR1cm4geC5jbG9uZSgpO3ZhciBQ''@;'; put 'put ''PXRoaXMubS5hbmRsbigzKTtpZihZKFAlMj09MSksMz09PVApe3ZhciBWPXRoaXMubS5hZGQobmV3IE4oMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coeCxWKX1mb3IodmFyIFQ9dGhpcy5tLnN1Ym4oMSksUz0wOyFULmlzWmVybygpJiYwPT09VC5hbmRsbigxKTspUysrLFQuaXVzaHJu''@;'; put 'put ''KDEpO1koIVQuaXNaZXJvKCkpO3ZhciBGPW5ldyBOKDEpLnRvUmVkKHRoaXMpLHllPUYucmVkTmVnKCksQ2U9dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpLERlPXRoaXMubS5iaXRMZW5ndGgoKTtmb3IoRGU9bmV3IE4oMipEZSpEZSkudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KERlLENlKS5j''@;'; put 'put ''bXAoeWUpOylEZS5yZWRJQWRkKHllKTtmb3IodmFyIFBlPXRoaXMucG93KERlLFQpLFFlPXRoaXMucG93KHgsVC5hZGRuKDEpLml1c2hybigxKSksJGU9dGhpcy5wb3coeCxUKSxndD1TOzAhPT0kZS5jbXAoRik7KXtmb3IodmFyIHd0PSRlLG10PTA7MCE9PXd0LmNtcChGKTttdCsrKXd0PXd0''@;'; put 'put ''LnJlZFNxcigpO1kobXQ8Z3QpO3ZhciB2dD10aGlzLnBvdyhQZSxuZXcgTigxKS5pdXNobG4oZ3QtbXQtMSkpO1FlPVFlLnJlZE11bCh2dCksUGU9dnQucmVkU3FyKCksJGU9JGUucmVkTXVsKFBlKSxndD1tdH1yZXR1cm4gUWV9LGVlLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHgpe3ZhciBQ''@;'; put 'put ''PXguX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT1QLm5lZ2F0aXZlPyhQLm5lZ2F0aXZlPTAsdGhpcy5pbW9kKFApLnJlZE5lZygpKTp0aGlzLmltb2QoUCl9LGVlLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oeCxQKXtpZihQLmlzWmVybygpKXJldHVybiBuZXcgTigxKS50b1JlZCh0aGlzKTtp''@;'; put 'put ''ZigwPT09UC5jbXBuKDEpKXJldHVybiB4LmNsb25lKCk7dmFyIFY9bmV3IEFycmF5KDE2KTtWWzBdPW5ldyBOKDEpLnRvUmVkKHRoaXMpLFZbMV09eDtmb3IodmFyIFQ9MjtUPFYubGVuZ3RoO1QrKylWW1RdPXRoaXMubXVsKFZbVC0xXSx4KTt2YXIgUz1WWzBdLEY9MCx5ZT0wLENlPVAuYml0''@;'; put 'put ''TGVuZ3RoKCklMjY7Zm9yKDA9PT1DZSYmKENlPTI2KSxUPVAubGVuZ3RoLTE7VD49MDtULS0pe2Zvcih2YXIgRGU9UC53b3Jkc1tUXSxQZT1DZS0xO1BlPj0wO1BlLS0pe3ZhciBRZT1EZT4+UGUmMTtTIT09VlswXSYmKFM9dGhpcy5zcXIoUykpLDAhPT1RZXx8MCE9PUY/KEY8PD0xLEZ8PVFl''@;'; put 'put ''LCg0PT0rK3llfHwwPT09VCYmMD09PVBlKSYmKFM9dGhpcy5tdWwoUyxWW0ZdKSx5ZT0wLEY9MCkpOnllPTB9Q2U9MjZ9cmV0dXJuIFN9LGVlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oeCl7dmFyIFA9eC51bW9kKHRoaXMubSk7cmV0dXJuIFA9PT14P1AuY2xvbmUoKTpQfSxlZS5w''@;'; put 'put ''cm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oeCl7dmFyIFA9eC5jbG9uZSgpO3JldHVybiBQLnJlZD1udWxsLFB9LE4ubW9udD1mdW5jdGlvbih4KXtyZXR1cm4gbmV3IG5lKHgpfSxXKG5lLGVlKSxuZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmlt''@;'; put 'put ''b2QoeC51c2hsbih0aGlzLnNoaWZ0KSl9LG5lLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbih4KXt2YXIgUD10aGlzLmltb2QoeC5tdWwodGhpcy5yaW52KSk7cmV0dXJuIFAucmVkPW51bGwsUH0sbmUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oeCxQKXtpZih4LmlzWmVybygpfHxQ''@;'; put 'put ''LmlzWmVybygpKXJldHVybiB4LndvcmRzWzBdPTAseC5sZW5ndGg9MSx4O3ZhciBWPXguaW11bChQKSxUPVYubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLFM9Vi5pc3ViKFQpLml1c2hybih0aGlzLnNoaWZ0KSxGPVM7cmV0''@;'; put 'put ''dXJuIFMuY21wKHRoaXMubSk+PTA/Rj1TLmlzdWIodGhpcy5tKTpTLmNtcG4oMCk8MCYmKEY9Uy5pYWRkKHRoaXMubSkpLEYuX2ZvcmNlUmVkKHRoaXMpfSxuZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHgsUCl7aWYoeC5pc1plcm8oKXx8UC5pc1plcm8oKSlyZXR1cm4gbmV3IE4oMCkuX2Zv''@;'; put 'put ''cmNlUmVkKHRoaXMpO3ZhciBWPXgubXVsKFApLFQ9Vi5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksUz1WLmlzdWIoVCkuaXVzaHJuKHRoaXMuc2hpZnQpLEY9UztyZXR1cm4gUy5jbXAodGhpcy5tKT49MD9GPVMuaXN1Yih0''@;'; put 'put ''aGlzLm0pOlMuY21wbigwKTwwJiYoRj1TLmlhZGQodGhpcy5tKSksRi5fZm9yY2VSZWQodGhpcyl9LG5lLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmltb2QoeC5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KFU9ai5ubWQoVSks''@;'; put 'put ''dGhpcyl9LDM0ODI6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig1NzE3KSxhZT1qKDIzMTgpLFk9aig5Nzg1KSxXPWooOTA3MiksTj1qKDEwMjcpO2Z1bmN0aW9uIHRlKEspe04uY2FsbCh0aGlzLCJkaWdlc3QiKSx0aGlzLl9oYXNoPUt9cmUodGUsTiksdGUucHJvdG90eXBlLl91''@;'; put 'put ''cGRhdGU9ZnVuY3Rpb24oSyl7dGhpcy5faGFzaC51cGRhdGUoSyl9LHRlLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGFzaC5kaWdlc3QoKX0sVS5leHBvcnRzPWZ1bmN0aW9uKEspe3JldHVybiJtZDUiPT09KEs9Sy50b0xvd2VyQ2FzZSgpKT9uZXcgYWU6InJt''@;'; put 'put ''ZDE2MCI9PT1LfHwicmlwZW1kMTYwIj09PUs/bmV3IFk6bmV3IHRlKFcoSykpfX0sODAyODooVSxRLGopPT57dmFyIHJlPWooMjMxOCk7VS5leHBvcnRzPWZ1bmN0aW9uKGFlKXtyZXR1cm4obmV3IHJlKS51cGRhdGUoYWUpLmRpZ2VzdCgpfX0sODM1NTooVSxRLGopPT57InVzZSBzdHJpY3Qi''@;'; put 'put ''O3ZhciByZT1qKDU3MTcpLGFlPWooMTAzMSksWT1qKDEwMjcpLFc9aig5NTA5KS5CdWZmZXIsTj1qKDgwMjgpLHRlPWooOTc4NSksSz1qKDkwNzIpLEo9Vy5hbGxvYygxMjgpO2Z1bmN0aW9uIHNlKG9lLGNlKXtZLmNhbGwodGhpcywiZGlnZXN0IiksInN0cmluZyI9PXR5cGVvZiBjZSYmKGNl''@;'; put 'put ''PVcuZnJvbShjZSkpO3ZhciBkZT0ic2hhNTEyIj09PW9lfHwic2hhMzg0Ij09PW9lPzEyODo2NDt0aGlzLl9hbGc9b2UsdGhpcy5fa2V5PWNlLGNlLmxlbmd0aD5kZT9jZT0oInJtZDE2MCI9PT1vZT9uZXcgdGU6SyhvZSkpLnVwZGF0ZShjZSkuZGlnZXN0KCk6Y2UubGVuZ3RoPGRlJiYoY2U9''@;'; put 'put ''Vy5jb25jYXQoW2NlLEpdLGRlKSk7Zm9yKHZhciB2ZT10aGlzLl9pcGFkPVcuYWxsb2NVbnNhZmUoZGUpLEFlPXRoaXMuX29wYWQ9Vy5hbGxvY1Vuc2FmZShkZSksa2U9MDtrZTxkZTtrZSsrKXZlW2tlXT01NF5jZVtrZV0sQWVba2VdPTkyXmNlW2tlXTt0aGlzLl9oYXNoPSJybWQxNjAiPT09''@;'; put 'put ''b2U/bmV3IHRlOksob2UpLHRoaXMuX2hhc2gudXBkYXRlKHZlKX1yZShzZSxZKSxzZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihvZSl7dGhpcy5faGFzaC51cGRhdGUob2UpfSxzZS5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFyIG9lPXRoaXMuX2hhc2guZGlnZXN0KCk7cmV0''@;'; put 'put ''dXJuKCJybWQxNjAiPT09dGhpcy5fYWxnP25ldyB0ZTpLKHRoaXMuX2FsZykpLnVwZGF0ZSh0aGlzLl9vcGFkKS51cGRhdGUob2UpLmRpZ2VzdCgpfSxVLmV4cG9ydHM9ZnVuY3Rpb24ob2UsY2Upe3JldHVybiJybWQxNjAiPT09KG9lPW9lLnRvTG93ZXJDYXNlKCkpfHwicmlwZW1kMTYwIj09''@;'; put 'put ''PW9lP25ldyBzZSgicm1kMTYwIixjZSk6Im1kNSI9PT1vZT9uZXcgYWUoTixjZSk6bmV3IHNlKG9lLGNlKX19LDEwMzE6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig1NzE3KSxhZT1qKDk1MDkpLkJ1ZmZlcixZPWooMTAyNyksVz1hZS5hbGxvYygxMjgpLE49NjQ7ZnVuY3Rpb24g''@;'; put 'put ''dGUoSyxKKXtZLmNhbGwodGhpcywiZGlnZXN0IiksInN0cmluZyI9PXR5cGVvZiBKJiYoSj1hZS5mcm9tKEopKSx0aGlzLl9hbGc9Syx0aGlzLl9rZXk9SixKLmxlbmd0aD5OP0o9SyhKKTpKLmxlbmd0aDxOJiYoSj1hZS5jb25jYXQoW0osV10sTikpO2Zvcih2YXIgc2U9dGhpcy5faXBhZD1h''@;'; put 'put ''ZS5hbGxvY1Vuc2FmZShOKSxvZT10aGlzLl9vcGFkPWFlLmFsbG9jVW5zYWZlKE4pLGNlPTA7Y2U8TjtjZSsrKXNlW2NlXT01NF5KW2NlXSxvZVtjZV09OTJeSltjZV07dGhpcy5faGFzaD1bc2VdfXJlKHRlLFkpLHRlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKEspe3RoaXMuX2hhc2gu''@;'; put 'put ''cHVzaChLKX0sdGUucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3ZhciBLPXRoaXMuX2FsZyhhZS5jb25jYXQodGhpcy5faGFzaCkpO3JldHVybiB0aGlzLl9hbGcoYWUuY29uY2F0KFt0aGlzLl9vcGFkLEtdKSl9LFUuZXhwb3J0cz10ZX0sNTgzNTooVSxRLGopPT57InVzZSBzdHJpY3Qi''@;'; put 'put ''O1EucmFuZG9tQnl0ZXM9US5ybmc9US5wc2V1ZG9SYW5kb21CeXRlcz1RLnBybmc9aigxNzk4KSxRLmNyZWF0ZUhhc2g9US5IYXNoPWooMzQ4MiksUS5jcmVhdGVIbWFjPVEuSG1hYz1qKDgzNTUpO3ZhciByZT1qKDYwNDIpLGFlPU9iamVjdC5rZXlzKHJlKSxZPVsic2hhMSIsInNoYTIyNCIs''@;'; put 'put ''InNoYTI1NiIsInNoYTM4NCIsInNoYTUxMiIsIm1kNSIsInJtZDE2MCJdLmNvbmNhdChhZSk7US5nZXRIYXNoZXM9ZnVuY3Rpb24oKXtyZXR1cm4gWX07dmFyIFc9aig1NjMyKTtRLnBia2RmMj1XLnBia2RmMixRLnBia2RmMlN5bmM9Vy5wYmtkZjJTeW5jO3ZhciBOPWooMzYxNCk7US5DaXBo''@;'; put 'put ''ZXI9Ti5DaXBoZXIsUS5jcmVhdGVDaXBoZXI9Ti5jcmVhdGVDaXBoZXIsUS5DaXBoZXJpdj1OLkNpcGhlcml2LFEuY3JlYXRlQ2lwaGVyaXY9Ti5jcmVhdGVDaXBoZXJpdixRLkRlY2lwaGVyPU4uRGVjaXBoZXIsUS5jcmVhdGVEZWNpcGhlcj1OLmNyZWF0ZURlY2lwaGVyLFEuRGVjaXBoZXJp''@;'; put 'put ''dj1OLkRlY2lwaGVyaXYsUS5jcmVhdGVEZWNpcGhlcml2PU4uY3JlYXRlRGVjaXBoZXJpdixRLmdldENpcGhlcnM9Ti5nZXRDaXBoZXJzLFEubGlzdENpcGhlcnM9Ti5saXN0Q2lwaGVyczt2YXIgdGU9aigyNjA3KTtRLkRpZmZpZUhlbGxtYW5Hcm91cD10ZS5EaWZmaWVIZWxsbWFuR3JvdXAs''@;'; put 'put ''US5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXA9dGUuY3JlYXRlRGlmZmllSGVsbG1hbkdyb3VwLFEuZ2V0RGlmZmllSGVsbG1hbj10ZS5nZXREaWZmaWVIZWxsbWFuLFEuY3JlYXRlRGlmZmllSGVsbG1hbj10ZS5jcmVhdGVEaWZmaWVIZWxsbWFuLFEuRGlmZmllSGVsbG1hbj10ZS5EaWZmaWVI''@;'; put 'put ''ZWxsbWFuO3ZhciBLPWooNDc0Myk7US5jcmVhdGVTaWduPUsuY3JlYXRlU2lnbixRLlNpZ249Sy5TaWduLFEuY3JlYXRlVmVyaWZ5PUsuY3JlYXRlVmVyaWZ5LFEuVmVyaWZ5PUsuVmVyaWZ5LFEuY3JlYXRlRUNESD1qKDYzOTMpO3ZhciBKPWooNzkwMCk7US5wdWJsaWNFbmNyeXB0PUoucHVi''@;'; put 'put ''bGljRW5jcnlwdCxRLnByaXZhdGVFbmNyeXB0PUoucHJpdmF0ZUVuY3J5cHQsUS5wdWJsaWNEZWNyeXB0PUoucHVibGljRGVjcnlwdCxRLnByaXZhdGVEZWNyeXB0PUoucHJpdmF0ZURlY3J5cHQ7dmFyIHNlPWooNzk2Myk7US5yYW5kb21GaWxsPXNlLnJhbmRvbUZpbGwsUS5yYW5kb21GaWxs''@;'; put 'put ''U3luYz1zZS5yYW5kb21GaWxsU3luYyxRLmNyZWF0ZUNyZWRlbnRpYWxzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFsic29ycnksIGNyZWF0ZUNyZWRlbnRpYWxzIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQiLCJ3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0cyIsImh0dHBzOi8vZ2l0aHViLmNv''@;'; put 'put ''bS9jcnlwdG8tYnJvd3NlcmlmeS9jcnlwdG8tYnJvd3NlcmlmeSJdLmpvaW4oIlxuIikpfSxRLmNvbnN0YW50cz17REhfQ0hFQ0tfUF9OT1RfU0FGRV9QUklNRToyLERIX0NIRUNLX1BfTk9UX1BSSU1FOjEsREhfVU5BQkxFX1RPX0NIRUNLX0dFTkVSQVRPUjo0LERIX05PVF9TVUlUQUJMRV9H''@;'; put 'put ''RU5FUkFUT1I6OCxOUE5fRU5BQkxFRDoxLEFMUE5fRU5BQkxFRDoxLFJTQV9QS0NTMV9QQURESU5HOjEsUlNBX1NTTFYyM19QQURESU5HOjIsUlNBX05PX1BBRERJTkc6MyxSU0FfUEtDUzFfT0FFUF9QQURESU5HOjQsUlNBX1g5MzFfUEFERElORzo1LFJTQV9QS0NTMV9QU1NfUEFERElORzo2''@;'; put 'put ''LFBPSU5UX0NPTlZFUlNJT05fQ09NUFJFU1NFRDoyLFBPSU5UX0NPTlZFUlNJT05fVU5DT01QUkVTU0VEOjQsUE9JTlRfQ09OVkVSU0lPTl9IWUJSSUQ6Nn19LDUwNTY6KFUsUSxqKT0+e3ZhciByZT1qKDg3NjQpLkJ1ZmZlcjtjb25zdHtUcmFuc2Zvcm06YWV9PWooMjgzMCksWT1yZS5mcm9t''@;'; put 'put ''KFsyMzksMTg3LDE5MV0pO2NsYXNzIFcgZXh0ZW5kcyBhZXtjb25zdHJ1Y3RvcihNZT17fSl7c3VwZXIobXMoe3dyaXRhYmxlT2JqZWN0TW9kZTohMH0sTWUpKTtjb25zdCBoZT17fTtsZXQgTztmb3IobGV0IHogaW4gTWUpaGVbSih6KV09TWVbel07aWYoTz10aGlzLm5vcm1hbGl6ZShoZSkp''@;'; put 'put ''dGhyb3cgTztzd2l0Y2goaGUucmVjb3JkX2RlbGltaXRlcil7Y2FzZSJhdXRvIjpoZS5yZWNvcmRfZGVsaW1pdGVyPW51bGw7YnJlYWs7Y2FzZSJ1bml4IjpoZS5yZWNvcmRfZGVsaW1pdGVyPSJcbiI7YnJlYWs7Y2FzZSJtYWMiOmhlLnJlY29yZF9kZWxpbWl0ZXI9IlxyIjticmVhaztjYXNl''@;'; put 'put ''IndpbmRvd3MiOmhlLnJlY29yZF9kZWxpbWl0ZXI9IlxyXG4iO2JyZWFrO2Nhc2UiYXNjaWkiOmhlLnJlY29yZF9kZWxpbWl0ZXI9Ilx4MWUiO2JyZWFrO2Nhc2UidW5pY29kZSI6aGUucmVjb3JkX2RlbGltaXRlcj0iXHUyMDI4In10aGlzLm9wdGlvbnM9aGUsdGhpcy5zdGF0ZT17c3RvcDoh''@;'; put 'put ''MX0sdGhpcy5pbmZvPXtyZWNvcmRzOjB9fW5vcm1hbGl6ZShNZSl7aWYobnVsbD09TWUuYm9tfHwhMT09PU1lLmJvbSlNZS5ib209ITE7ZWxzZSBpZighMCE9PU1lLmJvbSlyZXR1cm4gbmV3IHRlKCJDU1ZfT1BUSU9OX0JPT0xFQU5fSU5WQUxJRF9UWVBFIixbIm9wdGlvbiBgYm9tYCBpcyBv''@;'; put 'put ''cHRpb25hbCBhbmQgbXVzdCBiZSBhIGJvb2xlYW4gdmFsdWUsIixgZ290ICR7SlNPTi5zdHJpbmdpZnkoTWUuYm9tKX1gXSk7aWYobnVsbD09TWUuZGVsaW1pdGVyKU1lLmRlbGltaXRlcj0iLCI7ZWxzZSBpZihyZS5pc0J1ZmZlcihNZS5kZWxpbWl0ZXIpKU1lLmRlbGltaXRlcj1NZS5kZWxp''@;'; put 'put ''bWl0ZXIudG9TdHJpbmcoKTtlbHNlIGlmKCJzdHJpbmciIT10eXBlb2YgTWUuZGVsaW1pdGVyKXJldHVybiBuZXcgdGUoIkNTVl9PUFRJT05fREVMSU1JVEVSX0lOVkFMSURfVFlQRSIsWyJvcHRpb24gYGRlbGltaXRlcmAgbXVzdCBiZSBhIGJ1ZmZlciBvciBhIHN0cmluZywiLGBnb3QgJHtK''@;'; put 'put ''U09OLnN0cmluZ2lmeShNZS5kZWxpbWl0ZXIpfWBdKTtpZihudWxsPT1NZS5xdW90ZSlNZS5xdW90ZT0nIic7ZWxzZSBpZighMD09PU1lLnF1b3RlKU1lLnF1b3RlPSciJztlbHNlIGlmKCExPT09TWUucXVvdGUpTWUucXVvdGU9IiI7ZWxzZSBpZihyZS5pc0J1ZmZlcihNZS5xdW90ZSkpTWUu''@;'; put 'put ''cXVvdGU9TWUucXVvdGUudG9TdHJpbmcoKTtlbHNlIGlmKCJzdHJpbmciIT10eXBlb2YgTWUucXVvdGUpcmV0dXJuIG5ldyB0ZSgiQ1NWX09QVElPTl9RVU9URV9JTlZBTElEX1RZUEUiLFsib3B0aW9uIGBxdW90ZWAgbXVzdCBiZSBhIGJvb2xlYW4sIGEgYnVmZmVyIG9yIGEgc3RyaW5nLCIs''@;'; put 'put ''YGdvdCAke0pTT04uc3RyaW5naWZ5KE1lLnF1b3RlKX1gXSk7aWYobnVsbCE9TWUucXVvdGVkfHwoTWUucXVvdGVkPSExKSxudWxsIT1NZS5xdW90ZWRfZW1wdHl8fChNZS5xdW90ZWRfZW1wdHk9dm9pZCAwKSxudWxsPT1NZS5xdW90ZWRfbWF0Y2h8fCExPT09TWUucXVvdGVkX21hdGNoP01l''@;'; put 'put ''LnF1b3RlZF9tYXRjaD1udWxsOkFycmF5LmlzQXJyYXkoTWUucXVvdGVkX21hdGNoKXx8KE1lLnF1b3RlZF9tYXRjaD1bTWUucXVvdGVkX21hdGNoXSksTWUucXVvdGVkX21hdGNoKWZvcihsZXQgaGUgb2YgTWUucXVvdGVkX21hdGNoKXtjb25zdCBPPWhlIGluc3RhbmNlb2YgUmVnRXhwO2lm''@;'; put 'put ''KCJzdHJpbmciIT10eXBlb2YgaGUmJiFPKXJldHVybiBFcnJvcihgSW52YWxpZCBPcHRpb246IHF1b3RlZF9tYXRjaCBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgcmVnZXgsIGdvdCAke0pTT04uc3RyaW5naWZ5KGhlKX1gKX1pZihudWxsIT1NZS5xdW90ZWRfc3RyaW5nfHwoTWUucXVvdGVkX3N0''@;'; put 'put ''cmluZz0hMSksbnVsbCE9TWUuZW9mfHwoTWUuZW9mPSEwKSxudWxsPT1NZS5lc2NhcGUpTWUuZXNjYXBlPSciJztlbHNlIGlmKHJlLmlzQnVmZmVyKE1lLmVzY2FwZSkpTWUuZXNjYXBlPU1lLmVzY2FwZS50b1N0cmluZygpO2Vsc2UgaWYoInN0cmluZyIhPXR5cGVvZiBNZS5lc2NhcGUpcmV0''@;'; put 'put ''dXJuIEVycm9yKGBJbnZhbGlkIE9wdGlvbjogZXNjYXBlIG11c3QgYmUgYSBidWZmZXIgb3IgYSBzdHJpbmcsIGdvdCAke0pTT04uc3RyaW5naWZ5KE1lLmVzY2FwZSl9YCk7aWYoTWUuZXNjYXBlLmxlbmd0aD4xKXJldHVybiBFcnJvcihgSW52YWxpZCBPcHRpb246IGVzY2FwZSBtdXN0IGJl''@;'; put 'put ''IG9uZSBjaGFyYWN0ZXIsIGdvdCAke01lLmVzY2FwZS5sZW5ndGh9IGNoYXJhY3RlcnNgKTtpZihudWxsIT1NZS5oZWFkZXJ8fChNZS5oZWFkZXI9ITEpLE1lLmNvbHVtbnM9dGhpcy5ub3JtYWxpemVfY29sdW1ucyhNZS5jb2x1bW5zKSxudWxsIT1NZS5xdW90ZWR8fChNZS5xdW90ZWQ9ITEp''@;'; put 'put ''LG51bGwhPU1lLmNhc3R8fChNZS5jYXN0PXt9KSxudWxsIT1NZS5jYXN0LmJpZ2ludHx8KE1lLmNhc3QuYmlnaW50PWhlPT4iIitoZSksbnVsbCE9TWUuY2FzdC5ib29sZWFufHwoTWUuY2FzdC5ib29sZWFuPWhlPT5oZT8iMSI6IiIpLG51bGwhPU1lLmNhc3QuZGF0ZXx8KE1lLmNhc3QuZGF0''@;'; put 'put ''ZT1oZT0+IiIraGUuZ2V0VGltZSgpKSxudWxsIT1NZS5jYXN0Lm51bWJlcnx8KE1lLmNhc3QubnVtYmVyPWhlPT4iIitoZSksbnVsbCE9TWUuY2FzdC5vYmplY3R8fChNZS5jYXN0Lm9iamVjdD1oZT0+SlNPTi5zdHJpbmdpZnkoaGUpKSxudWxsIT1NZS5jYXN0LnN0cmluZ3x8KE1lLmNhc3Qu''@;'; put 'put ''c3RyaW5nPWZ1bmN0aW9uKGhlKXtyZXR1cm4gaGV9KSxudWxsPT1NZS5yZWNvcmRfZGVsaW1pdGVyKU1lLnJlY29yZF9kZWxpbWl0ZXI9IlxuIjtlbHNlIGlmKHJlLmlzQnVmZmVyKE1lLnJlY29yZF9kZWxpbWl0ZXIpKU1lLnJlY29yZF9kZWxpbWl0ZXI9TWUucmVjb3JkX2RlbGltaXRlci50''@;'; put 'put ''b1N0cmluZygpO2Vsc2UgaWYoInN0cmluZyIhPXR5cGVvZiBNZS5yZWNvcmRfZGVsaW1pdGVyKXJldHVybiBFcnJvcihgSW52YWxpZCBPcHRpb246IHJlY29yZF9kZWxpbWl0ZXIgbXVzdCBiZSBhIGJ1ZmZlciBvciBhIHN0cmluZywgZ290ICR7SlNPTi5zdHJpbmdpZnkoTWUucmVjb3JkX2Rl''@;'; put 'put ''bGltaXRlcil9YCl9X3RyYW5zZm9ybShNZSxoZSxPKXtpZighMD09PXRoaXMuc3RhdGUuc3RvcClyZXR1cm47aWYoIUFycmF5LmlzQXJyYXkoTWUpJiYib2JqZWN0IiE9dHlwZW9mIE1lKXJldHVybiB0aGlzLnN0YXRlLnN0b3A9ITAsTyhFcnJvcihgSW52YWxpZCBSZWNvcmQ6IGV4cGVjdCBh''@;'; put 'put ''biBhcnJheSBvciBhbiBvYmplY3QsIGdvdCAke0pTT04uc3RyaW5naWZ5KE1lKX1gKSk7aWYoMD09PXRoaXMuaW5mby5yZWNvcmRzKWlmKEFycmF5LmlzQXJyYXkoTWUpKXtpZighMD09PXRoaXMub3B0aW9ucy5oZWFkZXImJiF0aGlzLm9wdGlvbnMuY29sdW1ucylyZXR1cm4gdGhpcy5zdGF0''@;'; put 'put ''ZS5zdG9wPSEwLE8oRXJyb3IoIlVuZGlzY292ZXJhYmxlIENvbHVtbnM6IGhlYWRlciBvcHRpb24gcmVxdWlyZXMgY29sdW1uIG9wdGlvbiBvciBvYmplY3QgcmVjb3JkcyIpKX1lbHNlIG51bGwhPXRoaXMub3B0aW9ucy5jb2x1bW5zfHwodGhpcy5vcHRpb25zLmNvbHVtbnM9dGhpcy5ub3Jt''@;'; put 'put ''YWxpemVfY29sdW1ucyhPYmplY3Qua2V5cyhNZSkpKTswPT09dGhpcy5pbmZvLnJlY29yZHMmJih0aGlzLmJvbSgpLHRoaXMuaGVhZGVycygpKTt0cnl7dGhpcy5lbWl0KCJyZWNvcmQiLE1lLHRoaXMuaW5mby5yZWNvcmRzKX1jYXRjaChlZSl7cmV0dXJuIHRoaXMuc3RhdGUuc3RvcD0hMCx0''@;'; put 'put ''aGlzLmVtaXQoImVycm9yIixlZSl9bGV0IHo7aWYodGhpcy5vcHRpb25zLmVvZil7aWYoej10aGlzLnN0cmluZ2lmeShNZSksdm9pZCAwPT09eilyZXR1cm47eis9dGhpcy5vcHRpb25zLnJlY29yZF9kZWxpbWl0ZXJ9ZWxzZXtpZih6PXRoaXMuc3RyaW5naWZ5KE1lKSx2b2lkIDA9PT16KXJl''@;'; put 'put ''dHVybjsodGhpcy5vcHRpb25zLmhlYWRlcnx8dGhpcy5pbmZvLnJlY29yZHMpJiYoej10aGlzLm9wdGlvbnMucmVjb3JkX2RlbGltaXRlcit6KX10aGlzLmluZm8ucmVjb3JkcysrLHRoaXMucHVzaCh6KSxPKCl9X2ZsdXNoKE1lKXswPT09dGhpcy5pbmZvLnJlY29yZHMmJih0aGlzLmJvbSgp''@;'; put 'put ''LHRoaXMuaGVhZGVycygpKSxNZSgpfXN0cmluZ2lmeShNZSxoZT0hMSl7aWYoIm9iamVjdCIhPXR5cGVvZiBNZSlyZXR1cm4gTWU7Y29uc3R7Y29sdW1uczpPfT10aGlzLm9wdGlvbnMsZWU9W107aWYoQXJyYXkuaXNBcnJheShNZSkpe08mJk1lLnNwbGljZShPLmxlbmd0aCk7Zm9yKGxldCB4''@;'; put 'put ''PTA7eDxNZS5sZW5ndGg7eCsrKXtjb25zdCBQPU1lW3hdLFtWLFRdPXRoaXMuX19jYXN0KFAse2luZGV4OngsY29sdW1uOngscmVjb3Jkczp0aGlzLmluZm8ucmVjb3JkcyxoZWFkZXI6aGV9KTtpZihWKXJldHVybiB2b2lkIHRoaXMuZW1pdCgiZXJyb3IiLFYpO2VlW3hdPVtULFBdfX1lbHNl''@;'; put 'put ''IGlmKE8pZm9yKGxldCB4PTA7eDxPLmxlbmd0aDt4Kyspe2NvbnN0IFA9SWUoTWUsT1t4XS5rZXkpLFtWLFRdPXRoaXMuX19jYXN0KFAse2luZGV4OngsY29sdW1uOk9beF0ua2V5LHJlY29yZHM6dGhpcy5pbmZvLnJlY29yZHMsaGVhZGVyOmhlfSk7aWYoVilyZXR1cm4gdm9pZCB0aGlzLmVt''@;'; put 'put ''aXQoImVycm9yIixWKTtlZVt4XT1bVCxQXX1lbHNlIGZvcihsZXQgeCBvZiBNZSl7Y29uc3QgUD1NZVt4XSxbVixUXT10aGlzLl9fY2FzdChQLHtpbmRleDppLGNvbHVtbjpPW2ldLmtleSxyZWNvcmRzOnRoaXMuaW5mby5yZWNvcmRzLGhlYWRlcjpoZX0pO2lmKFYpcmV0dXJuIHZvaWQgdGhp''@;'; put 'put ''cy5lbWl0KCJlcnJvciIsVik7ZWUucHVzaChbVCxQXSl9bGV0IG5lPSIiO2ZvcihsZXQgeD0wO3g8ZWUubGVuZ3RoO3grKyl7bGV0IFAsVixbVCxTXT1lZVt4XTtpZigic3RyaW5nIj09dHlwZW9mIFQpUD10aGlzLm9wdGlvbnM7ZWxzZSBpZihLKFQpKXtpZihQPVQsVD1QLnZhbHVlLGRlbGV0''@;'; put 'put ''ZSBQLnZhbHVlLCJzdHJpbmciIT10eXBlb2YgVCYmbnVsbCE9VClyZXR1cm4gdm9pZCB0aGlzLmVtaXQoImVycm9yIixFcnJvcihgSW52YWxpZCBDYXN0aW5nIFZhbHVlOiByZXR1cm5lZCB2YWx1ZSBtdXN0IHJldHVybiBhIHN0cmluZywgbnVsbCBvciB1bmRlZmluZWQsIGdvdCAke0pTT04u''@;'; put 'put ''c3RyaW5naWZ5KFQpfWApKTtpZihQPW1zKG1zKHt9LHRoaXMub3B0aW9ucyksUCksVj10aGlzLm5vcm1hbGl6ZShQKSlyZXR1cm4gdm9pZCB0aGlzLmVtaXQoImVycm9yIixWKX1lbHNle2lmKG51bGwhPVQpcmV0dXJuIHZvaWQgdGhpcy5lbWl0KCJlcnJvciIsRXJyb3IoYEludmFsaWQgQ2Fz''@;'; put 'put ''dGluZyBWYWx1ZTogcmV0dXJuZWQgdmFsdWUgbXVzdCByZXR1cm4gYSBzdHJpbmcsIGFuIG9iamVjdCwgbnVsbCBvciB1bmRlZmluZWQsIGdvdCAke0pTT04uc3RyaW5naWZ5KFQpfWApKTtQPXRoaXMub3B0aW9uc31jb25zdHtkZWxpbWl0ZXI6Rixlc2NhcGU6eWUscXVvdGU6Q2UscXVvdGVk''@;'; put 'put ''OkRlLHF1b3RlZF9lbXB0eTpQZSxxdW90ZWRfc3RyaW5nOlFlLHF1b3RlZF9tYXRjaDokZSxyZWNvcmRfZGVsaW1pdGVyOmd0fT1QO2lmKFQpe2lmKCJzdHJpbmciIT10eXBlb2YgVClyZXR1cm4gdGhpcy5lbWl0KCJlcnJvciIsRXJyb3IoYEZvcm1hdHRlciBtdXN0IHJldHVybiBhIHN0cmlu''@;'; put 'put ''ZywgbnVsbCBvciB1bmRlZmluZWQsIGdvdCAke0pTT04uc3RyaW5naWZ5KFQpfWApKSxudWxsO2NvbnN0IHd0PUYubGVuZ3RoJiZULmluZGV4T2YoRik+PTAsbXQ9IiIhPT1DZSYmVC5pbmRleE9mKENlKT49MCx2dD1ULmluZGV4T2YoeWUpPj0wJiZ5ZSE9PUNlLEF0PVQuaW5kZXhPZihndCk+''@;'; put 'put ''PTAsaHQ9UWUmJiJzdHJpbmciPT10eXBlb2YgUztsZXQgQnQ9JGUmJiRlLmZpbHRlcihfdD0+InN0cmluZyI9PXR5cGVvZiBfdD8tMSE9PVQuaW5kZXhPZihfdCk6X3QudGVzdChUKSk7QnQ9QnQmJkJ0Lmxlbmd0aD4wO2NvbnN0IG9uPSEwPT09bXR8fHd0fHxBdHx8RGV8fGh0fHxCdDtpZigh''@;'; put 'put ''MD09PW9uJiYhMD09PXZ0KXtjb25zdCBfdD0iXFwiPT09eWU/bmV3IFJlZ0V4cCh5ZSt5ZSwiZyIpOm5ldyBSZWdFeHAoeWUsImciKTtUPVQucmVwbGFjZShfdCx5ZSt5ZSl9aWYoITA9PT1tdCl7Y29uc3QgX3Q9bmV3IFJlZ0V4cChDZSwiZyIpO1Q9VC5yZXBsYWNlKF90LHllK0NlKX0hMD09''@;'; put 'put ''PW9uJiYoVD1DZStUK0NlKSxuZSs9VH1lbHNlKCEwPT09UGV8fCIiPT09UyYmITA9PT1RZSYmITEhPT1QZSkmJihuZSs9Q2UrQ2UpO3ghPT1lZS5sZW5ndGgtMSYmKG5lKz1GKX1yZXR1cm4gbmV9Ym9tKCl7ITA9PT10aGlzLm9wdGlvbnMuYm9tJiZ0aGlzLnB1c2goWSl9aGVhZGVycygpe2lm''@;'; put 'put ''KCExPT09dGhpcy5vcHRpb25zLmhlYWRlcnx8dm9pZCAwPT09dGhpcy5vcHRpb25zLmNvbHVtbnMpcmV0dXJuO2xldCBNZT10aGlzLm9wdGlvbnMuY29sdW1ucy5tYXAoaGU9PmhlLmhlYWRlcik7TWU9dGhpcy5vcHRpb25zLmVvZj90aGlzLnN0cmluZ2lmeShNZSwhMCkrdGhpcy5vcHRpb25z''@;'; put 'put ''LnJlY29yZF9kZWxpbWl0ZXI6dGhpcy5zdHJpbmdpZnkoTWUpLHRoaXMucHVzaChNZSl9X19jYXN0KE1lLGhlKXtjb25zdCBPPXR5cGVvZiBNZTt0cnl7cmV0dXJuInN0cmluZyI9PT1PP1t2b2lkIDAsdGhpcy5vcHRpb25zLmNhc3Quc3RyaW5nKE1lLGhlKV06ImJpZ2ludCI9PT1PP1t2b2lk''@;'; put 'put ''IDAsdGhpcy5vcHRpb25zLmNhc3QuYmlnaW50KE1lLGhlKV06Im51bWJlciI9PT1PP1t2b2lkIDAsdGhpcy5vcHRpb25zLmNhc3QubnVtYmVyKE1lLGhlKV06ImJvb2xlYW4iPT09Tz9bdm9pZCAwLHRoaXMub3B0aW9ucy5jYXN0LmJvb2xlYW4oTWUsaGUpXTpNZSBpbnN0YW5jZW9mIERhdGU/''@;'; put 'put ''W3ZvaWQgMCx0aGlzLm9wdGlvbnMuY2FzdC5kYXRlKE1lLGhlKV06Im9iamVjdCI9PT1PJiZudWxsIT09TWU/W3ZvaWQgMCx0aGlzLm9wdGlvbnMuY2FzdC5vYmplY3QoTWUsaGUpXTpbdm9pZCAwLE1lLE1lXX1jYXRjaCh6KXtyZXR1cm5bel19fW5vcm1hbGl6ZV9jb2x1bW5zKE1lKXtpZihu''@;'; put 'put ''dWxsIT1NZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBNZSl0aHJvdyBFcnJvcignSW52YWxpZCBvcHRpb24gImNvbHVtbnMiOiBleHBlY3QgYW4gYXJyYXkgb3IgYW4gb2JqZWN0Jyk7aWYoQXJyYXkuaXNBcnJheShNZSkpe2NvbnN0IGhlPVtdO2ZvcihsZXQgTyBvZiBNZSlpZigic3RyaW5nIj09''@;'; put 'put ''dHlwZW9mIE8paGUucHVzaCh7a2V5Ok8saGVhZGVyOk99KTtlbHNle2lmKCJvYmplY3QiIT10eXBlb2YgT3x8dm9pZCAwPT09T3x8QXJyYXkuaXNBcnJheShPKSl0aHJvdyBFcnJvcigiSW52YWxpZCBjb2x1bW4gZGVmaW5pdGlvbjogZXhwZWN0IGEgc3RyaW5nIG9yIGFuIG9iamVjdCIpO2lm''@;'; put 'put ''KCFPLmtleSl0aHJvdyBFcnJvcignSW52YWxpZCBjb2x1bW4gZGVmaW5pdGlvbjogcHJvcGVydHkgImtleSIgaXMgcmVxdWlyZWQnKTt2b2lkIDA9PT1PLmhlYWRlciYmKE8uaGVhZGVyPU8ua2V5KSxoZS5wdXNoKE8pfU1lPWhlfWVsc2V7Y29uc3QgaGU9W107Zm9yKGxldCBPIGluIE1lKWhl''@;'; put 'put ''LnB1c2goe2tleTpPLGhlYWRlcjpNZVtPXX0pO01lPWhlfXJldHVybiBNZX19fWNvbnN0IE49ZnVuY3Rpb24oKXtsZXQgVGUsTWUsaGU7Zm9yKGxldCB6IGluIGFyZ3VtZW50cyl7Y29uc3QgZWU9YXJndW1lbnRzW3pdLG5lPXR5cGVvZiBlZTtpZih2b2lkIDA9PT1UZSYmQXJyYXkuaXNBcnJh''@;'; put 'put ''eShlZSkpVGU9ZWU7ZWxzZSBpZih2b2lkIDA9PT1NZSYmSyhlZSkpTWU9ZWU7ZWxzZXtpZih2b2lkIDAhPT1oZXx8ImZ1bmN0aW9uIiE9PW5lKXRocm93IG5ldyB0ZSgiQ1NWX0lOVkFMSURfQVJHVU1FTlQiLFsiSW52YWxpZCBhcmd1bWVudDoiLGBnb3QgJHtKU09OLnN0cmluZ2lmeShlZSl9''@;'; put 'put ''IGF0IGluZGV4ICR7en1gXSk7aGU9ZWV9fWNvbnN0IE89bmV3IFcoTWUpO2lmKGhlKXtjb25zdCB6PVtdO08ub24oInJlYWRhYmxlIixmdW5jdGlvbigpe2xldCBlZTtmb3IoO251bGwhPT0oZWU9dGhpcy5yZWFkKCkpOyl6LnB1c2goZWUpfSksTy5vbigiZXJyb3IiLGZ1bmN0aW9uKGVlKXto''@;'; put 'put ''ZShlZSl9KSxPLm9uKCJlbmQiLGZ1bmN0aW9uKCl7aGUodm9pZCAwLHouam9pbigiIikpfSl9aWYodm9pZCAwIT09VGUpaWYoImZ1bmN0aW9uIj09dHlwZW9mIHNldEltbWVkaWF0ZSlzZXRJbW1lZGlhdGUoZnVuY3Rpb24oKXtmb3IobGV0IHogb2YgVGUpTy53cml0ZSh6KTtPLmVuZCgpfSk7''@;'; put 'put ''ZWxzZXtmb3IobGV0IHogb2YgVGUpTy53cml0ZSh6KTtPLmVuZCgpfXJldHVybiBPfTtjbGFzcyB0ZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKE1lLGhlLC4uLk8pe0FycmF5LmlzQXJyYXkoaGUpJiYoaGU9aGUuam9pbigiICIpKSxzdXBlcihoZSksdm9pZCAwIT09RXJyb3IuY2FwdHVy''@;'; put 'put ''ZVN0YWNrVHJhY2UmJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsdGUpLHRoaXMuY29kZT1NZTtmb3IoY29uc3QgeiBvZiBPKWZvcihjb25zdCBlZSBpbiB6KXtjb25zdCBuZT16W2VlXTt0aGlzW2VlXT1yZS5pc0J1ZmZlcihuZSk/bmUudG9TdHJpbmcoKTpudWxsPT1uZT9uZTpKU09O''@;'; put 'put ''LnBhcnNlKEpTT04uc3RyaW5naWZ5KG5lKSl9fX1OLlN0cmluZ2lmaWVyPVcsTi5Dc3ZFcnJvcj10ZSxVLmV4cG9ydHM9Tjtjb25zdCBLPWZ1bmN0aW9uKFRlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIFRlJiZudWxsIT09VGUmJiFBcnJheS5pc0FycmF5KFRlKX0sSj1mdW5jdGlvbihUZSl7''@;'; put 'put ''cmV0dXJuIFRlLnJlcGxhY2UoLyhbQS1aXSkvZyxmdW5jdGlvbihNZSxoZSl7cmV0dXJuIl8iK2hlLnRvTG93ZXJDYXNlKCl9KX0sc2U9Ii4iLmNoYXJDb2RlQXQoMCksb2U9L1xcKFxcKT8vZyxjZT1SZWdFeHAoIlteLltcXF1dK3xcXFsoPzooW15cIiddW15bXSopfChbXCInXSkoKD86KD8h''@;'; put 'put ''XFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxdKSg/OlxcLnxcXFtcXF18JCkpIiwiZyIpLGRlPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHZlPS9eXHcqJC8sQWU9ZnVuY3Rpb24oVGUpe2NvbnN0IE1lPXR5cGVv''@;'; put 'put ''ZiBUZTtyZXR1cm4ic3ltYm9sIj09PU1lfHwib2JqZWN0Ij09PU1lJiZUZSYmIltvYmplY3QgU3ltYm9sXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoVGUpfSxTZT1mdW5jdGlvbihUZSl7aWYoInN0cmluZyI9PXR5cGVvZiBUZXx8QWUoVGUpKXJldHVybiBUZTtjb25zdCBN''@;'; put 'put ''ZT1gJHtUZX1gO3JldHVybiIwIj09TWUmJjEvVGU9PS1JTkZJTklUWT8iLTAiOk1lfSxJZT1mdW5jdGlvbihUZSxNZSl7bGV0IGhlPTA7Y29uc3QgTz0oTWU9ZnVuY3Rpb24oVGUsTWUpe3JldHVybiBBcnJheS5pc0FycmF5KFRlKT9UZTpmdW5jdGlvbihoZSxPKXtpZihBcnJheS5pc0FycmF5''@;'; put 'put ''KGhlKSlyZXR1cm4hMTtjb25zdCB6PXR5cGVvZiBoZTtyZXR1cm4hKCJudW1iZXIiIT09eiYmInN5bWJvbCIhPT16JiYiYm9vbGVhbiIhPT16JiZoZSYmIUFlKGhlKSl8fHZlLnRlc3QoaGUpfHwhZGUudGVzdChoZSl8fG51bGwhPU8mJmhlIGluIE9iamVjdChPKX0oVGUsTWUpP1tUZV06ZnVu''@;'; put 'put ''Y3Rpb24oaGUpe2NvbnN0IE89W107cmV0dXJuIGhlLmNoYXJDb2RlQXQoMCk9PT1zZSYmTy5wdXNoKCIiKSxoZS5yZXBsYWNlKGNlLGZ1bmN0aW9uKHosZWUsbmUseCl7bGV0IFA9ejtuZT9QPXgucmVwbGFjZShvZSwiJDEiKTplZSYmKFA9ZWUudHJpbSgpKSxPLnB1c2goUCl9KSxPfShUZSl9''@;'; put 'put ''KE1lLFRlKSkubGVuZ3RoO2Zvcig7bnVsbCE9VGUmJmhlPE87KVRlPVRlW1NlKE1lW2hlKytdKV07cmV0dXJuIGhlJiZoZT09PU8/VGU6dm9pZCAwfX0sNzU2NTooVSxRLGopPT57dmFyIHJlPWooODc2NCkuQnVmZmVyO2NvbnN0IGFlPWooNTA1Nikse1N0cmluZ0RlY29kZXI6WX09aigyNTUz''@;'; put 'put ''KTtVLmV4cG9ydHM9ZnVuY3Rpb24oVyxOPXt9KXtjb25zdCB0ZT1bXTtmdW5jdGlvbiBLKHNlKXtzZSYmdGUucHVzaChzZS50b1N0cmluZygpKX1yZS5pc0J1ZmZlcihXKSYmKFc9KG5ldyBZKS53cml0ZShXKSk7bGV0IEo9bmV3IGFlLlN0cmluZ2lmaWVyKE4pO0oub24oImRhdGEiLEspO2Zv''@;'; put 'put ''cihsZXQgc2Ugb2YgVylKLndyaXRlKHNlKTtyZXR1cm4gSi5lbmQoKSxKLm9mZigiZGF0YSIsSyksdGUuam9pbigiIil9fSw0Mjg5OihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooMjIxNSksYWU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1i''@;'; put 'put ''b2woImZvbyIpLFk9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxXPUFycmF5LnByb3RvdHlwZS5jb25jYXQsTj1PYmplY3QuZGVmaW5lUHJvcGVydHksdGU9aigxMDQ0KSgpLEs9TiYmdGUsSj1mdW5jdGlvbihvZSxjZSxkZSx2ZSl7dmFyIEFlOyghKGNlIGluIG9lKXx8ImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mKEFlPXZlKSYmIltvYmplY3QgRnVuY3Rpb25dIj09PVkuY2FsbChBZSkmJnZlKCkpJiYoSz9OKG9lLGNlLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpkZSx3cml0YWJsZTohMH0pOm9lW2NlXT1kZSl9LHNlPWZ1bmN0aW9uKG9lLGNlKXt2YXIgZGU9YXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp7fSx2ZT1yZShjZSk7YWUmJih2ZT1XLmNhbGwodmUsT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhjZSkpKTtmb3IodmFyIEFlPTA7QWU8dmUubGVuZ3RoO0FlKz0xKUoob2UsdmVbQWVdLGNlW3ZlW0FlXV0sZGVbdmVbQWVdXSl9O3NlLnN1''@;'; put 'put ''cHBvcnRzRGVzY3JpcHRvcnM9ISFLLFUuZXhwb3J0cz1zZX0sNTI1MTooVSxRLGopPT57InVzZSBzdHJpY3QiO1EudXRpbHM9aigxMjc4KSxRLkNpcGhlcj1qKDU3NTYpLFEuREVTPWooMzI3KSxRLkNCQz1qKDkwNTEpLFEuRURFPWooNjUxKX0sOTA1MTooVSxRLGopPT57InVzZSBzdHJpY3Qi''@;'; put 'put ''O3ZhciByZT1qKDk3NDYpLGFlPWooNTcxNyksWT17fTtmdW5jdGlvbiBXKE4pe3JlLmVxdWFsKE4ubGVuZ3RoLDgsIkludmFsaWQgSVYgbGVuZ3RoIiksdGhpcy5pdj1uZXcgQXJyYXkoOCk7Zm9yKHZhciB0ZT0wO3RlPHRoaXMuaXYubGVuZ3RoO3RlKyspdGhpcy5pdlt0ZV09Tlt0ZV19US5p''@;'; put 'put ''bnN0YW50aWF0ZT1mdW5jdGlvbihOKXtmdW5jdGlvbiB0ZShvZSl7Ti5jYWxsKHRoaXMsb2UpLHRoaXMuX2NiY0luaXQoKX1hZSh0ZSxOKTtmb3IodmFyIEs9T2JqZWN0LmtleXMoWSksSj0wO0o8Sy5sZW5ndGg7SisrKXt2YXIgc2U9S1tKXTt0ZS5wcm90b3R5cGVbc2VdPVlbc2VdfXJldHVy''@;'; put 'put ''biB0ZS5jcmVhdGU9ZnVuY3Rpb24ob2Upe3JldHVybiBuZXcgdGUob2UpfSx0ZX0sWS5fY2JjSW5pdD1mdW5jdGlvbigpe3ZhciBOPW5ldyBXKHRoaXMub3B0aW9ucy5pdik7dGhpcy5fY2JjU3RhdGU9Tn0sWS5fdXBkYXRlPWZ1bmN0aW9uKE4sdGUsSyxKKXt2YXIgb2U9dGhpcy5jb25zdHJ1''@;'; put 'put ''Y3Rvci5zdXBlcl8ucHJvdG90eXBlLGNlPXRoaXMuX2NiY1N0YXRlLml2O2lmKCJlbmNyeXB0Ij09PXRoaXMudHlwZSl7Zm9yKHZhciBkZT0wO2RlPHRoaXMuYmxvY2tTaXplO2RlKyspY2VbZGVdXj1OW3RlK2RlXTtmb3Iob2UuX3VwZGF0ZS5jYWxsKHRoaXMsY2UsMCxLLEopLGRlPTA7ZGU8''@;'; put 'put ''dGhpcy5ibG9ja1NpemU7ZGUrKyljZVtkZV09S1tKK2RlXX1lbHNle2ZvcihvZS5fdXBkYXRlLmNhbGwodGhpcyxOLHRlLEssSiksZGU9MDtkZTx0aGlzLmJsb2NrU2l6ZTtkZSsrKUtbSitkZV1ePWNlW2RlXTtmb3IoZGU9MDtkZTx0aGlzLmJsb2NrU2l6ZTtkZSsrKWNlW2RlXT1OW3RlK2Rl''@;'; put 'put ''XX19fSw1NzU2OihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooOTc0Nik7ZnVuY3Rpb24gYWUoWSl7dGhpcy5vcHRpb25zPVksdGhpcy50eXBlPXRoaXMub3B0aW9ucy50eXBlLHRoaXMuYmxvY2tTaXplPTgsdGhpcy5faW5pdCgpLHRoaXMuYnVmZmVyPW5ldyBBcnJheSh0aGlzLmJs''@;'; put 'put ''b2NrU2l6ZSksdGhpcy5idWZmZXJPZmY9MH1VLmV4cG9ydHM9YWUsYWUucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKCl7fSxhZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKFkpe3JldHVybiAwPT09WS5sZW5ndGg/W106ImRlY3J5cHQiPT09dGhpcy50eXBlP3RoaXMuX3VwZGF0ZURlY3J5''@;'; put 'put ''cHQoWSk6dGhpcy5fdXBkYXRlRW5jcnlwdChZKX0sYWUucHJvdG90eXBlLl9idWZmZXI9ZnVuY3Rpb24oWSxXKXtmb3IodmFyIE49TWF0aC5taW4odGhpcy5idWZmZXIubGVuZ3RoLXRoaXMuYnVmZmVyT2ZmLFkubGVuZ3RoLVcpLHRlPTA7dGU8Tjt0ZSsrKXRoaXMuYnVmZmVyW3RoaXMuYnVm''@;'; put 'put ''ZmVyT2ZmK3RlXT1ZW1crdGVdO3JldHVybiB0aGlzLmJ1ZmZlck9mZis9TixOfSxhZS5wcm90b3R5cGUuX2ZsdXNoQnVmZmVyPWZ1bmN0aW9uKFksVyl7cmV0dXJuIHRoaXMuX3VwZGF0ZSh0aGlzLmJ1ZmZlciwwLFksVyksdGhpcy5idWZmZXJPZmY9MCx0aGlzLmJsb2NrU2l6ZX0sYWUucHJv''@;'; put 'put ''dG90eXBlLl91cGRhdGVFbmNyeXB0PWZ1bmN0aW9uKFkpe3ZhciBXPTAsTj0wLEs9bmV3IEFycmF5KCgodGhpcy5idWZmZXJPZmYrWS5sZW5ndGgpL3RoaXMuYmxvY2tTaXplfDApKnRoaXMuYmxvY2tTaXplKTswIT09dGhpcy5idWZmZXJPZmYmJihXKz10aGlzLl9idWZmZXIoWSxXKSx0aGlz''@;'; put 'put ''LmJ1ZmZlck9mZj09PXRoaXMuYnVmZmVyLmxlbmd0aCYmKE4rPXRoaXMuX2ZsdXNoQnVmZmVyKEssTikpKTtmb3IodmFyIEo9WS5sZW5ndGgtKFkubGVuZ3RoLVcpJXRoaXMuYmxvY2tTaXplO1c8SjtXKz10aGlzLmJsb2NrU2l6ZSl0aGlzLl91cGRhdGUoWSxXLEssTiksTis9dGhpcy5ibG9j''@;'; put 'put ''a1NpemU7Zm9yKDtXPFkubGVuZ3RoO1crKyx0aGlzLmJ1ZmZlck9mZisrKXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmXT1ZW1ddO3JldHVybiBLfSxhZS5wcm90b3R5cGUuX3VwZGF0ZURlY3J5cHQ9ZnVuY3Rpb24oWSl7Zm9yKHZhciBXPTAsTj0wLHRlPU1hdGguY2VpbCgodGhpcy5idWZm''@;'; put 'put ''ZXJPZmYrWS5sZW5ndGgpL3RoaXMuYmxvY2tTaXplKS0xLEs9bmV3IEFycmF5KHRlKnRoaXMuYmxvY2tTaXplKTt0ZT4wO3RlLS0pVys9dGhpcy5fYnVmZmVyKFksVyksTis9dGhpcy5fZmx1c2hCdWZmZXIoSyxOKTtyZXR1cm4gVys9dGhpcy5fYnVmZmVyKFksVyksS30sYWUucHJvdG90eXBl''@;'; put 'put ''LmZpbmFsPWZ1bmN0aW9uKFkpe3ZhciBXLE47cmV0dXJuIFkmJihXPXRoaXMudXBkYXRlKFkpKSxOPSJlbmNyeXB0Ij09PXRoaXMudHlwZT90aGlzLl9maW5hbEVuY3J5cHQoKTp0aGlzLl9maW5hbERlY3J5cHQoKSxXP1cuY29uY2F0KE4pOk59LGFlLnByb3RvdHlwZS5fcGFkPWZ1bmN0aW9u''@;'; put 'put ''KFksVyl7aWYoMD09PVcpcmV0dXJuITE7Zm9yKDtXPFkubGVuZ3RoOylZW1crK109MDtyZXR1cm4hMH0sYWUucHJvdG90eXBlLl9maW5hbEVuY3J5cHQ9ZnVuY3Rpb24oKXtpZighdGhpcy5fcGFkKHRoaXMuYnVmZmVyLHRoaXMuYnVmZmVyT2ZmKSlyZXR1cm5bXTt2YXIgWT1uZXcgQXJyYXko''@;'; put 'put ''dGhpcy5ibG9ja1NpemUpO3JldHVybiB0aGlzLl91cGRhdGUodGhpcy5idWZmZXIsMCxZLDApLFl9LGFlLnByb3RvdHlwZS5fdW5wYWQ9ZnVuY3Rpb24oWSl7cmV0dXJuIFl9LGFlLnByb3RvdHlwZS5fZmluYWxEZWNyeXB0PWZ1bmN0aW9uKCl7cmUuZXF1YWwodGhpcy5idWZmZXJPZmYsdGhp''@;'; put 'put ''cy5ibG9ja1NpemUsIk5vdCBlbm91Z2ggZGF0YSB0byBkZWNyeXB0Iik7dmFyIFk9bmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtyZXR1cm4gdGhpcy5fZmx1c2hCdWZmZXIoWSwwKSx0aGlzLl91bnBhZChZKX19LDMyNzooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDk3NDYpLGFl''@;'; put 'put ''PWooNTcxNyksWT1qKDEyNzgpLFc9aig1NzU2KTtmdW5jdGlvbiBOKCl7dGhpcy50bXA9bmV3IEFycmF5KDIpLHRoaXMua2V5cz1udWxsfWZ1bmN0aW9uIHRlKEope1cuY2FsbCh0aGlzLEopO3ZhciBzZT1uZXcgTjt0aGlzLl9kZXNTdGF0ZT1zZSx0aGlzLmRlcml2ZUtleXMoc2UsSi5rZXkp''@;'; put 'put ''fWFlKHRlLFcpLFUuZXhwb3J0cz10ZSx0ZS5jcmVhdGU9ZnVuY3Rpb24oSil7cmV0dXJuIG5ldyB0ZShKKX07dmFyIEs9WzEsMSwyLDIsMiwyLDIsMiwxLDIsMiwyLDIsMiwyLDFdO3RlLnByb3RvdHlwZS5kZXJpdmVLZXlzPWZ1bmN0aW9uKEosc2Upe0oua2V5cz1uZXcgQXJyYXkoMzIpLHJl''@;'; put 'put ''LmVxdWFsKHNlLmxlbmd0aCx0aGlzLmJsb2NrU2l6ZSwiSW52YWxpZCBrZXkgbGVuZ3RoIik7dmFyIG9lPVkucmVhZFVJbnQzMkJFKHNlLDApLGNlPVkucmVhZFVJbnQzMkJFKHNlLDQpO1kucGMxKG9lLGNlLEoudG1wLDApLG9lPUoudG1wWzBdLGNlPUoudG1wWzFdO2Zvcih2YXIgZGU9MDtk''@;'; put 'put ''ZTxKLmtleXMubGVuZ3RoO2RlKz0yKXt2YXIgdmU9S1tkZT4+PjFdO29lPVkucjI4c2hsKG9lLHZlKSxjZT1ZLnIyOHNobChjZSx2ZSksWS5wYzIob2UsY2UsSi5rZXlzLGRlKX19LHRlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKEosc2Usb2UsY2Upe3ZhciBkZT10aGlzLl9kZXNTdGF0''@;'; put 'put ''ZSx2ZT1ZLnJlYWRVSW50MzJCRShKLHNlKSxBZT1ZLnJlYWRVSW50MzJCRShKLHNlKzQpO1kuaXAodmUsQWUsZGUudG1wLDApLHZlPWRlLnRtcFswXSxBZT1kZS50bXBbMV0sImVuY3J5cHQiPT09dGhpcy50eXBlP3RoaXMuX2VuY3J5cHQoZGUsdmUsQWUsZGUudG1wLDApOnRoaXMuX2RlY3J5''@;'; put 'put ''cHQoZGUsdmUsQWUsZGUudG1wLDApLEFlPWRlLnRtcFsxXSxZLndyaXRlVUludDMyQkUob2UsdmU9ZGUudG1wWzBdLGNlKSxZLndyaXRlVUludDMyQkUob2UsQWUsY2UrNCl9LHRlLnByb3RvdHlwZS5fcGFkPWZ1bmN0aW9uKEosc2Upe2Zvcih2YXIgb2U9Si5sZW5ndGgtc2UsY2U9c2U7Y2U8''@;'; put 'put ''Si5sZW5ndGg7Y2UrKylKW2NlXT1vZTtyZXR1cm4hMH0sdGUucHJvdG90eXBlLl91bnBhZD1mdW5jdGlvbihKKXtmb3IodmFyIHNlPUpbSi5sZW5ndGgtMV0sb2U9Si5sZW5ndGgtc2U7b2U8Si5sZW5ndGg7b2UrKylyZS5lcXVhbChKW29lXSxzZSk7cmV0dXJuIEouc2xpY2UoMCxKLmxlbmd0''@;'; put 'put ''aC1zZSl9LHRlLnByb3RvdHlwZS5fZW5jcnlwdD1mdW5jdGlvbihKLHNlLG9lLGNlLGRlKXtmb3IodmFyIHZlPXNlLEFlPW9lLGtlPTA7a2U8Si5rZXlzLmxlbmd0aDtrZSs9Mil7dmFyIFNlPUoua2V5c1trZV0sSWU9Si5rZXlzW2tlKzFdO1kuZXhwYW5kKEFlLEoudG1wLDApO3ZhciBUZT1Z''@;'; put 'put ''LnN1YnN0aXR1dGUoU2VePUoudG1wWzBdLEllXj1KLnRtcFsxXSksTWU9QWU7QWU9KHZlXlkucGVybXV0ZShUZSkpPj4+MCx2ZT1NZX1ZLnJpcChBZSx2ZSxjZSxkZSl9LHRlLnByb3RvdHlwZS5fZGVjcnlwdD1mdW5jdGlvbihKLHNlLG9lLGNlLGRlKXtmb3IodmFyIHZlPW9lLEFlPXNlLGtl''@;'; put 'put ''PUoua2V5cy5sZW5ndGgtMjtrZT49MDtrZS09Mil7dmFyIFNlPUoua2V5c1trZV0sSWU9Si5rZXlzW2tlKzFdO1kuZXhwYW5kKHZlLEoudG1wLDApO3ZhciBUZT1ZLnN1YnN0aXR1dGUoU2VePUoudG1wWzBdLEllXj1KLnRtcFsxXSksTWU9dmU7dmU9KEFlXlkucGVybXV0ZShUZSkpPj4+MCxB''@;'; put 'put ''ZT1NZX1ZLnJpcCh2ZSxBZSxjZSxkZSl9fSw2NTE6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig5NzQ2KSxhZT1qKDU3MTcpLFk9aig1NzU2KSxXPWooMzI3KTtmdW5jdGlvbiBOKEssSil7cmUuZXF1YWwoSi5sZW5ndGgsMjQsIkludmFsaWQga2V5IGxlbmd0aCIpO3ZhciBzZT1K''@;'; put 'put ''LnNsaWNlKDAsOCksb2U9Si5zbGljZSg4LDE2KSxjZT1KLnNsaWNlKDE2LDI0KTt0aGlzLmNpcGhlcnM9ImVuY3J5cHQiPT09Sz9bVy5jcmVhdGUoe3R5cGU6ImVuY3J5cHQiLGtleTpzZX0pLFcuY3JlYXRlKHt0eXBlOiJkZWNyeXB0IixrZXk6b2V9KSxXLmNyZWF0ZSh7dHlwZToiZW5jcnlw''@;'; put 'put ''dCIsa2V5OmNlfSldOltXLmNyZWF0ZSh7dHlwZToiZGVjcnlwdCIsa2V5OmNlfSksVy5jcmVhdGUoe3R5cGU6ImVuY3J5cHQiLGtleTpvZX0pLFcuY3JlYXRlKHt0eXBlOiJkZWNyeXB0IixrZXk6c2V9KV19ZnVuY3Rpb24gdGUoSyl7WS5jYWxsKHRoaXMsSyk7dmFyIEo9bmV3IE4odGhpcy50''@;'; put 'put ''eXBlLHRoaXMub3B0aW9ucy5rZXkpO3RoaXMuX2VkZVN0YXRlPUp9YWUodGUsWSksVS5leHBvcnRzPXRlLHRlLmNyZWF0ZT1mdW5jdGlvbihLKXtyZXR1cm4gbmV3IHRlKEspfSx0ZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihLLEosc2Usb2Upe3ZhciBjZT10aGlzLl9lZGVTdGF0ZTtj''@;'; put 'put ''ZS5jaXBoZXJzWzBdLl91cGRhdGUoSyxKLHNlLG9lKSxjZS5jaXBoZXJzWzFdLl91cGRhdGUoc2Usb2Usc2Usb2UpLGNlLmNpcGhlcnNbMl0uX3VwZGF0ZShzZSxvZSxzZSxvZSl9LHRlLnByb3RvdHlwZS5fcGFkPVcucHJvdG90eXBlLl9wYWQsdGUucHJvdG90eXBlLl91bnBhZD1XLnByb3Rv''@;'; put 'put ''dHlwZS5fdW5wYWR9LDEyNzg6KFUsUSk9PnsidXNlIHN0cmljdCI7US5yZWFkVUludDMyQkU9ZnVuY3Rpb24oWSxXKXtyZXR1cm4oWVswK1ddPDwyNHxZWzErV108PDE2fFlbMitXXTw8OHxZWzMrV10pPj4+MH0sUS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKFksVyxOKXtZWzArTl09Vz4+PjI0''@;'; put 'put ''LFlbMStOXT1XPj4+MTYmMjU1LFlbMitOXT1XPj4+OCYyNTUsWVszK05dPTI1NSZXfSxRLmlwPWZ1bmN0aW9uKFksVyxOLHRlKXtmb3IodmFyIEs9MCxKPTAsc2U9NjtzZT49MDtzZS09Mil7Zm9yKHZhciBvZT0wO29lPD0yNDtvZSs9OClLPDw9MSxLfD1XPj4+b2Urc2UmMTtmb3Iob2U9MDtv''@;'; put 'put ''ZTw9MjQ7b2UrPTgpSzw8PTEsS3w9WT4+Pm9lK3NlJjF9Zm9yKHNlPTY7c2U+PTA7c2UtPTIpe2ZvcihvZT0xO29lPD0yNTtvZSs9OClKPDw9MSxKfD1XPj4+b2Urc2UmMTtmb3Iob2U9MTtvZTw9MjU7b2UrPTgpSjw8PTEsSnw9WT4+Pm9lK3NlJjF9Tlt0ZSswXT1LPj4+MCxOW3RlKzFdPUo+''@;'; put 'put ''Pj4wfSxRLnJpcD1mdW5jdGlvbihZLFcsTix0ZSl7Zm9yKHZhciBLPTAsSj0wLHNlPTA7c2U8NDtzZSsrKWZvcih2YXIgb2U9MjQ7b2U+PTA7b2UtPTgpSzw8PTEsS3w9Vz4+Pm9lK3NlJjEsSzw8PTEsS3w9WT4+Pm9lK3NlJjE7Zm9yKHNlPTQ7c2U8ODtzZSsrKWZvcihvZT0yNDtvZT49MDtv''@;'; put 'put ''ZS09OClKPDw9MSxKfD1XPj4+b2Urc2UmMSxKPDw9MSxKfD1ZPj4+b2Urc2UmMTtOW3RlKzBdPUs+Pj4wLE5bdGUrMV09Sj4+PjB9LFEucGMxPWZ1bmN0aW9uKFksVyxOLHRlKXtmb3IodmFyIEs9MCxKPTAsc2U9NztzZT49NTtzZS0tKXtmb3IodmFyIG9lPTA7b2U8PTI0O29lKz04KUs8PD0x''@;'; put 'put ''LEt8PVc+Pm9lK3NlJjE7Zm9yKG9lPTA7b2U8PTI0O29lKz04KUs8PD0xLEt8PVk+Pm9lK3NlJjF9Zm9yKG9lPTA7b2U8PTI0O29lKz04KUs8PD0xLEt8PVc+Pm9lK3NlJjE7Zm9yKHNlPTE7c2U8PTM7c2UrKyl7Zm9yKG9lPTA7b2U8PTI0O29lKz04KUo8PD0xLEp8PVc+Pm9lK3NlJjE7Zm9y''@;'; put 'put ''KG9lPTA7b2U8PTI0O29lKz04KUo8PD0xLEp8PVk+Pm9lK3NlJjF9Zm9yKG9lPTA7b2U8PTI0O29lKz04KUo8PD0xLEp8PVk+Pm9lK3NlJjE7Tlt0ZSswXT1LPj4+MCxOW3RlKzFdPUo+Pj4wfSxRLnIyOHNobD1mdW5jdGlvbihZLFcpe3JldHVybiBZPDxXJjI2ODQzNTQ1NXxZPj4+MjgtV307''@;'; put 'put ''dmFyIGo9WzE0LDExLDE3LDQsMjcsMjMsMjUsMCwxMywyMiw3LDE4LDUsOSwxNiwyNCwyLDIwLDEyLDIxLDEsOCwxNSwyNiwxNSw0LDI1LDE5LDksMSwyNiwxNiw1LDExLDIzLDgsMTIsNywxNywwLDIyLDMsMTAsMTQsNiwyMCwyNywyNF07US5wYzI9ZnVuY3Rpb24oWSxXLE4sdGUpe2Zvcih2''@;'; put 'put ''YXIgSz0wLEo9MCxzZT1qLmxlbmd0aD4+PjEsb2U9MDtvZTxzZTtvZSsrKUs8PD0xLEt8PVk+Pj5qW29lXSYxO2ZvcihvZT1zZTtvZTxqLmxlbmd0aDtvZSsrKUo8PD0xLEp8PVc+Pj5qW29lXSYxO05bdGUrMF09Sz4+PjAsTlt0ZSsxXT1KPj4+MH0sUS5leHBhbmQ9ZnVuY3Rpb24oWSxXLE4p''@;'; put 'put ''e3ZhciB0ZT0wLEs9MDt0ZT0oMSZZKTw8NXxZPj4+Mjc7Zm9yKHZhciBKPTIzO0o+PTE1O0otPTQpdGU8PD02LHRlfD1ZPj4+SiY2Mztmb3IoSj0xMTtKPj0zO0otPTQpS3w9WT4+PkomNjMsSzw8PTY7S3w9KDMxJlkpPDwxfFk+Pj4zMSxXW04rMF09dGU+Pj4wLFdbTisxXT1LPj4+MH07dmFy''@;'; put 'put ''IHJlPVsxNCwwLDQsMTUsMTMsNywxLDQsMiwxNCwxNSwyLDExLDEzLDgsMSwzLDEwLDEwLDYsNiwxMiwxMiwxMSw1LDksOSw1LDAsMyw3LDgsNCwxNSwxLDEyLDE0LDgsOCwyLDEzLDQsNiw5LDIsMSwxMSw3LDE1LDUsMTIsMTEsOSwzLDcsMTQsMywxMCwxMCwwLDUsNiwwLDEzLDE1LDMsMSwx''@;'; put 'put ''Myw4LDQsMTQsNyw2LDE1LDExLDIsMyw4LDQsMTQsOSwxMiw3LDAsMiwxLDEzLDEwLDEyLDYsMCw5LDUsMTEsMTAsNSwwLDEzLDE0LDgsNywxMCwxMSwxLDEwLDMsNCwxNSwxMyw0LDEsMiw1LDExLDgsNiwxMiw3LDYsMTIsOSwwLDMsNSwyLDE0LDE1LDksMTAsMTMsMCw3LDksMCwxNCw5LDYs''@;'; put 'put ''MywzLDQsMTUsNiw1LDEwLDEsMiwxMyw4LDEyLDUsNywxNCwxMSwxMiw0LDExLDIsMTUsOCwxLDEzLDEsNiwxMCw0LDEzLDksMCw4LDYsMTUsOSwzLDgsMCw3LDExLDQsMSwxNSwyLDE0LDEyLDMsNSwxMSwxMCw1LDE0LDIsNywxMiw3LDEzLDEzLDgsMTQsMTEsMyw1LDAsNiw2LDE1LDksMCwx''@;'; put 'put ''MCwzLDEsNCwyLDcsOCwyLDUsMTIsMTEsMSwxMiwxMCw0LDE0LDE1LDksMTAsMyw2LDE1LDksMCwwLDYsMTIsMTAsMTEsMSw3LDEzLDEzLDgsMTUsOSwxLDQsMyw1LDE0LDExLDUsMTIsMiw3LDgsMiw0LDE0LDIsMTQsMTIsMTEsNCwyLDEsMTIsNyw0LDEwLDcsMTEsMTMsNiwxLDgsNSw1LDAs''@;'; put 'put ''MywxNSwxNSwxMCwxMywzLDAsOSwxNCw4LDksNiw0LDExLDIsOCwxLDEyLDExLDcsMTAsMSwxMywxNCw3LDIsOCwxMywxNSw2LDksMTUsMTIsMCw1LDksNiwxMCwzLDQsMCw1LDE0LDMsMTIsMTAsMSwxNSwxMCw0LDE1LDIsOSw3LDIsMTIsNiw5LDgsNSwwLDYsMTMsMSwzLDEzLDQsMTQsMTQs''@;'; put 'put ''MCw3LDExLDUsMywxMSw4LDksNCwxNCwzLDE1LDIsNSwxMiwyLDksOCw1LDEyLDE1LDMsMTAsNywxMSwwLDE0LDQsMSwxMCw3LDEsNiwxMywwLDExLDgsNiwxMyw0LDEzLDExLDAsMiwxMSwxNCw3LDE1LDQsMCw5LDgsMSwxMywxMCwzLDE0LDEyLDMsOSw1LDcsMTIsNSwyLDEwLDE1LDYsOCwx''@;'; put 'put ''LDYsMSw2LDQsMTEsMTEsMTMsMTMsOCwxMiwxLDMsNCw3LDEwLDE0LDcsMTAsOSwxNSw1LDYsMCw4LDE1LDAsMTQsNSwyLDksMywyLDEyLDEzLDEsMiwxNSw4LDEzLDQsOCw2LDEwLDE1LDMsMTEsNywxLDQsMTAsMTIsOSw1LDMsNiwxNCwxMSw1LDAsMCwxNCwxMiw5LDcsMiw3LDIsMTEsMSw0''@;'; put 'put ''LDE0LDEsNyw5LDQsMTIsMTAsMTQsOCwyLDEzLDAsMTUsNiwxMiwxMCw5LDEzLDAsMTUsMywzLDUsNSw2LDgsMTFdO1Euc3Vic3RpdHV0ZT1mdW5jdGlvbihZLFcpe2Zvcih2YXIgTj0wLHRlPTA7dGU8NDt0ZSsrKU48PD00LE58PXJlWzY0KnRlKyhZPj4+MTgtNip0ZSY2MyldO2Zvcih0ZT0w''@;'; put 'put ''O3RlPDQ7dGUrKylOPDw9NCxOfD1yZVsyNTYrNjQqdGUrKFc+Pj4xOC02KnRlJjYzKV07cmV0dXJuIE4+Pj4wfTt2YXIgYWU9WzE2LDI1LDEyLDExLDMsMjAsNCwxNSwzMSwxNyw5LDYsMjcsMTQsMSwyMiwzMCwyNCw4LDE4LDAsNSwyOSwyMywxMywxOSwyLDI2LDEwLDIxLDI4LDddO1EucGVy''@;'; put 'put ''bXV0ZT1mdW5jdGlvbihZKXtmb3IodmFyIFc9MCxOPTA7TjxhZS5sZW5ndGg7TisrKVc8PD0xLFd8PVk+Pj5hZVtOXSYxO3JldHVybiBXPj4+MH0sUS5wYWRTcGxpdD1mdW5jdGlvbihZLFcsTil7Zm9yKHZhciB0ZT1ZLnRvU3RyaW5nKDIpO3RlLmxlbmd0aDxXOyl0ZT0iMCIrdGU7Zm9yKHZh''@;'; put 'put ''ciBLPVtdLEo9MDtKPFc7Sis9TilLLnB1c2godGUuc2xpY2UoSixKK04pKTtyZXR1cm4gSy5qb2luKCIgIil9fSwyNjA3OihVLFEsaik9Pnt2YXIgcmU9aig4NzY0KS5CdWZmZXIsYWU9aigzNTkwKSxZPWooOTc5OSksVz1qKDc0MjYpLE49e2JpbmFyeTohMCxoZXg6ITAsYmFzZTY0OiEwfTtR''@;'; put 'put ''LkRpZmZpZUhlbGxtYW5Hcm91cD1RLmNyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cD1RLmdldERpZmZpZUhlbGxtYW49ZnVuY3Rpb24odGUpe3ZhciBLPW5ldyByZShZW3RlXS5wcmltZSwiaGV4IiksSj1uZXcgcmUoWVt0ZV0uZ2VuLCJoZXgiKTtyZXR1cm4gbmV3IFcoSyxKKX0sUS5jcmVhdGVE''@;'; put 'put ''aWZmaWVIZWxsbWFuPVEuRGlmZmllSGVsbG1hbj1mdW5jdGlvbiB0ZShLLEosc2Usb2Upe3JldHVybiByZS5pc0J1ZmZlcihKKXx8dm9pZCAwPT09TltKXT90ZShLLCJiaW5hcnkiLEosc2UpOihKPUp8fCJiaW5hcnkiLG9lPW9lfHwiYmluYXJ5IixzZT1zZXx8bmV3IHJlKFsyXSkscmUuaXNC''@;'; put 'put ''dWZmZXIoc2UpfHwoc2U9bmV3IHJlKHNlLG9lKSksIm51bWJlciI9PXR5cGVvZiBLP25ldyBXKGFlKEssc2UpLHNlLCEwKToocmUuaXNCdWZmZXIoSyl8fChLPW5ldyByZShLLEopKSxuZXcgVyhLLHNlLCEwKSkpfX0sNzQyNjooVSxRLGopPT57dmFyIHJlPWooODc2NCkuQnVmZmVyLGFlPWoo''@;'; put 'put ''MzYyMCksWT1uZXcoaigzMDQ3KSksVz1uZXcgYWUoMjQpLE49bmV3IGFlKDExKSx0ZT1uZXcgYWUoMTApLEs9bmV3IGFlKDMpLEo9bmV3IGFlKDcpLHNlPWooMzU5MCksb2U9aigxNzk4KTtmdW5jdGlvbiBjZShTZSxJZSl7cmV0dXJuIEllPUllfHwidXRmOCIscmUuaXNCdWZmZXIoU2UpfHwo''@;'; put 'put ''U2U9bmV3IHJlKFNlLEllKSksdGhpcy5fcHViPW5ldyBhZShTZSksdGhpc31mdW5jdGlvbiBkZShTZSxJZSl7cmV0dXJuIEllPUllfHwidXRmOCIscmUuaXNCdWZmZXIoU2UpfHwoU2U9bmV3IHJlKFNlLEllKSksdGhpcy5fcHJpdj1uZXcgYWUoU2UpLHRoaXN9VS5leHBvcnRzPUFlO3ZhciB2''@;'; put 'put ''ZT17fTtmdW5jdGlvbiBBZShTZSxJZSxUZSl7dGhpcy5zZXRHZW5lcmF0b3IoSWUpLHRoaXMuX19wcmltZT1uZXcgYWUoU2UpLHRoaXMuX3ByaW1lPWFlLm1vbnQodGhpcy5fX3ByaW1lKSx0aGlzLl9wcmltZUxlbj1TZS5sZW5ndGgsdGhpcy5fcHViPXZvaWQgMCx0aGlzLl9wcml2PXZvaWQg''@;'; put 'put ''MCx0aGlzLl9wcmltZUNvZGU9dm9pZCAwLFRlPyh0aGlzLnNldFB1YmxpY0tleT1jZSx0aGlzLnNldFByaXZhdGVLZXk9ZGUpOnRoaXMuX3ByaW1lQ29kZT04fWZ1bmN0aW9uIGtlKFNlLEllKXt2YXIgVGU9bmV3IHJlKFNlLnRvQXJyYXkoKSk7cmV0dXJuIEllP1RlLnRvU3RyaW5nKEllKTpU''@;'; put 'put ''ZX1PYmplY3QuZGVmaW5lUHJvcGVydHkoQWUucHJvdG90eXBlLCJ2ZXJpZnlFcnJvciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiB0aGlzLl9wcmltZUNvZGUmJih0aGlzLl9wcmltZUNvZGU9ZnVuY3Rpb24oU2UsSWUpe3ZhciBUZT1JZS50''@;'; put 'put ''b1N0cmluZygiaGV4IiksTWU9W1RlLFNlLnRvU3RyaW5nKDE2KV0uam9pbigiXyIpO2lmKE1lIGluIHZlKXJldHVybiB2ZVtNZV07dmFyIGhlLE89MDtpZihTZS5pc0V2ZW4oKXx8IXNlLnNpbXBsZVNpZXZlfHwhc2UuZmVybWF0VGVzdChTZSl8fCFZLnRlc3QoU2UpKXJldHVybiBPKz0xLHZl''@;'; put 'put ''W01lXT1PKz0iMDIiPT09VGV8fCIwNSI9PT1UZT84OjQsTztzd2l0Y2goWS50ZXN0KFNlLnNocm4oMSkpfHwoTys9MiksVGUpe2Nhc2UiMDIiOlNlLm1vZChXKS5jbXAoTikmJihPKz04KTticmVhaztjYXNlIjA1IjooaGU9U2UubW9kKHRlKSkuY21wKEspJiZoZS5jbXAoSikmJihPKz04KTti''@;'; put 'put ''cmVhaztkZWZhdWx0Ok8rPTR9cmV0dXJuIHZlW01lXT1PLE99KHRoaXMuX19wcmltZSx0aGlzLl9fZ2VuKSksdGhpcy5fcHJpbWVDb2RlfX0pLEFlLnByb3RvdHlwZS5nZW5lcmF0ZUtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJpdnx8KHRoaXMuX3ByaXY9bmV3IGFlKG9lKHRoaXMu''@;'; put 'put ''X3ByaW1lTGVuKSkpLHRoaXMuX3B1Yj10aGlzLl9nZW4udG9SZWQodGhpcy5fcHJpbWUpLnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCksdGhpcy5nZXRQdWJsaWNLZXkoKX0sQWUucHJvdG90eXBlLmNvbXB1dGVTZWNyZXQ9ZnVuY3Rpb24oU2Upe3ZhciBJZT0oU2U9KFNlPW5ldyBhZShT''@;'; put 'put ''ZSkpLnRvUmVkKHRoaXMuX3ByaW1lKSkucmVkUG93KHRoaXMuX3ByaXYpLmZyb21SZWQoKSxUZT1uZXcgcmUoSWUudG9BcnJheSgpKSxNZT10aGlzLmdldFByaW1lKCk7aWYoVGUubGVuZ3RoPE1lLmxlbmd0aCl7dmFyIGhlPW5ldyByZShNZS5sZW5ndGgtVGUubGVuZ3RoKTtoZS5maWxsKDAp''@;'; put 'put ''LFRlPXJlLmNvbmNhdChbaGUsVGVdKX1yZXR1cm4gVGV9LEFlLnByb3RvdHlwZS5nZXRQdWJsaWNLZXk9ZnVuY3Rpb24oU2Upe3JldHVybiBrZSh0aGlzLl9wdWIsU2UpfSxBZS5wcm90b3R5cGUuZ2V0UHJpdmF0ZUtleT1mdW5jdGlvbihTZSl7cmV0dXJuIGtlKHRoaXMuX3ByaXYsU2UpfSxB''@;'; put 'put ''ZS5wcm90b3R5cGUuZ2V0UHJpbWU9ZnVuY3Rpb24oU2Upe3JldHVybiBrZSh0aGlzLl9fcHJpbWUsU2UpfSxBZS5wcm90b3R5cGUuZ2V0R2VuZXJhdG9yPWZ1bmN0aW9uKFNlKXtyZXR1cm4ga2UodGhpcy5fZ2VuLFNlKX0sQWUucHJvdG90eXBlLnNldEdlbmVyYXRvcj1mdW5jdGlvbihTZSxJ''@;'; put 'put ''ZSl7cmV0dXJuIEllPUllfHwidXRmOCIscmUuaXNCdWZmZXIoU2UpfHwoU2U9bmV3IHJlKFNlLEllKSksdGhpcy5fX2dlbj1TZSx0aGlzLl9nZW49bmV3IGFlKFNlKSx0aGlzfX0sMzU5MDooVSxRLGopPT57dmFyIHJlPWooMTc5OCk7VS5leHBvcnRzPVNlLFNlLnNpbXBsZVNpZXZlPUFlLFNl''@;'; put 'put ''LmZlcm1hdFRlc3Q9a2U7dmFyIGFlPWooMzYyMCksWT1uZXcgYWUoMjQpLFc9bmV3KGooMzA0NykpLE49bmV3IGFlKDEpLHRlPW5ldyBhZSgyKSxLPW5ldyBhZSg1KSxKPShuZXcgYWUoMTYpLG5ldyBhZSg4KSxuZXcgYWUoMTApKSxzZT1uZXcgYWUoMyksb2U9KG5ldyBhZSg3KSxuZXcgYWUo''@;'; put 'put ''MTEpKSxjZT1uZXcgYWUoNCksZGU9KG5ldyBhZSgxMiksbnVsbCk7ZnVuY3Rpb24gQWUoSWUpe2Zvcih2YXIgVGU9ZnVuY3Rpb24gdmUoKXtpZihudWxsIT09ZGUpcmV0dXJuIGRlO3ZhciBJZT1bXTtJZVswXT0yO2Zvcih2YXIgVGU9MSxNZT0zO01lPDEwNDg1NzY7TWUrPTIpe2Zvcih2YXIg''@;'; put 'put ''aGU9TWF0aC5jZWlsKE1hdGguc3FydChNZSkpLE89MDtPPFRlJiZJZVtPXTw9aGUmJk1lJUllW09dIT0wO08rKyk7VGUhPT1PJiZJZVtPXTw9aGV8fChJZVtUZSsrXT1NZSl9cmV0dXJuIGRlPUllLEllfSgpLE1lPTA7TWU8VGUubGVuZ3RoO01lKyspaWYoMD09PUllLm1vZG4oVGVbTWVdKSly''@;'; put 'put ''ZXR1cm4gMD09PUllLmNtcG4oVGVbTWVdKTtyZXR1cm4hMH1mdW5jdGlvbiBrZShJZSl7dmFyIFRlPWFlLm1vbnQoSWUpO3JldHVybiAwPT09dGUudG9SZWQoVGUpLnJlZFBvdyhJZS5zdWJuKDEpKS5mcm9tUmVkKCkuY21wbigxKX1mdW5jdGlvbiBTZShJZSxUZSl7aWYoSWU8MTYpcmV0dXJu''@;'; put 'put ''IG5ldyBhZSgyPT09VGV8fDU9PT1UZT9bMTQwLDEyM106WzE0MCwzOV0pO3ZhciBNZSxoZTtmb3IoVGU9bmV3IGFlKFRlKTs7KXtmb3IoTWU9bmV3IGFlKHJlKE1hdGguY2VpbChJZS84KSkpO01lLmJpdExlbmd0aCgpPkllOylNZS5pc2hybigxKTtpZihNZS5pc0V2ZW4oKSYmTWUuaWFkZChO''@;'; put 'put ''KSxNZS50ZXN0bigxKXx8TWUuaWFkZCh0ZSksVGUuY21wKHRlKSl7aWYoIVRlLmNtcChLKSlmb3IoO01lLm1vZChKKS5jbXAoc2UpOylNZS5pYWRkKGNlKX1lbHNlIGZvcig7TWUubW9kKFkpLmNtcChvZSk7KU1lLmlhZGQoY2UpO2lmKEFlKGhlPU1lLnNocm4oMSkpJiZBZShNZSkmJmtlKGhl''@;'; put 'put ''KSYma2UoTWUpJiZXLnRlc3QoaGUpJiZXLnRlc3QoTWUpKXJldHVybiBNZX19fSwzNjIwOmZ1bmN0aW9uKFUsUSxqKXshZnVuY3Rpb24ocmUsYWUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBZKHgsUCl7aWYoIXgpdGhyb3cgbmV3IEVycm9yKFB8fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rp''@;'; put 'put ''b24gVyh4LFApe3guc3VwZXJfPVA7dmFyIFY9ZnVuY3Rpb24oKXt9O1YucHJvdG90eXBlPVAucHJvdG90eXBlLHgucHJvdG90eXBlPW5ldyBWLHgucHJvdG90eXBlLmNvbnN0cnVjdG9yPXh9ZnVuY3Rpb24gTih4LFAsVil7aWYoTi5pc0JOKHgpKXJldHVybiB4O3RoaXMubmVnYXRpdmU9MCx0''@;'; put 'put ''aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT14JiYoImxlIiE9PVAmJiJiZSIhPT1QfHwoVj1QLFA9MTApLHRoaXMuX2luaXQoeHx8MCxQfHwxMCxWfHwiYmUiKSl9dmFyIHRlOyJvYmplY3QiPT10eXBlb2YgcmU/cmUuZXhwb3J0cz1OOmFlLkJOPU4s''@;'; put 'put ''Ti5CTj1OLE4ud29yZFNpemU9MjY7dHJ5e3RlPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuQnVmZmVyP3dpbmRvdy5CdWZmZXI6aig3NzQ4KS5CdWZmZXJ9Y2F0Y2goeCl7fWZ1bmN0aW9uIEsoeCxQKXt2YXIgVj14LmNoYXJDb2RlQXQoUCk7cmV0dXJuIFY+''@;'; put 'put ''PTY1JiZWPD03MD9WLTU1OlY+PTk3JiZWPD0xMDI/Vi04NzpWLTQ4JjE1fWZ1bmN0aW9uIEooeCxQLFYpe3ZhciBUPUsoeCxWKTtyZXR1cm4gVi0xPj1QJiYoVHw9Syh4LFYtMSk8PDQpLFR9ZnVuY3Rpb24gc2UoeCxQLFYsVCl7Zm9yKHZhciBTPTAsRj1NYXRoLm1pbih4Lmxlbmd0aCxWKSx5''@;'; put 'put ''ZT1QO3llPEY7eWUrKyl7dmFyIENlPXguY2hhckNvZGVBdCh5ZSktNDg7Uyo9VCxTKz1DZT49NDk/Q2UtNDkrMTA6Q2U+PTE3P0NlLTE3KzEwOkNlfXJldHVybiBTfU4uaXNCTj1mdW5jdGlvbih4KXtyZXR1cm4geCBpbnN0YW5jZW9mIE58fG51bGwhPT14JiYib2JqZWN0Ij09dHlwZW9mIHgm''@;'; put 'put ''JnguY29uc3RydWN0b3Iud29yZFNpemU9PT1OLndvcmRTaXplJiZBcnJheS5pc0FycmF5KHgud29yZHMpfSxOLm1heD1mdW5jdGlvbih4LFApe3JldHVybiB4LmNtcChQKT4wP3g6UH0sTi5taW49ZnVuY3Rpb24oeCxQKXtyZXR1cm4geC5jbXAoUCk8MD94OlB9LE4ucHJvdG90eXBlLl9pbml0''@;'; put 'put ''PWZ1bmN0aW9uKHgsUCxWKXtpZigibnVtYmVyIj09dHlwZW9mIHgpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoeCxQLFYpO2lmKCJvYmplY3QiPT10eXBlb2YgeClyZXR1cm4gdGhpcy5faW5pdEFycmF5KHgsUCxWKTsiaGV4Ij09PVAmJihQPTE2KSxZKFA9PT0oMHxQKSYmUD49MiYmUDw9MzYp''@;'; put 'put ''O3ZhciBUPTA7Ii0iPT09KHg9eC50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJihUKyssdGhpcy5uZWdhdGl2ZT0xKSxUPHgubGVuZ3RoJiYoMTY9PT1QP3RoaXMuX3BhcnNlSGV4KHgsVCxWKToodGhpcy5fcGFyc2VCYXNlKHgsUCxUKSwibGUiPT09ViYmdGhpcy5faW5pdEFy''@;'; put 'put ''cmF5KHRoaXMudG9BcnJheSgpLFAsVikpKX0sTi5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oeCxQLFYpe3g8MCYmKHRoaXMubmVnYXRpdmU9MSx4PS14KSx4PDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ4XSx0aGlzLmxlbmd0aD0xKTp4PDQ1MDM1OTk2MjczNzA0OTY/''@;'; put 'put ''KHRoaXMud29yZHM9WzY3MTA4ODYzJngseC82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KFkoeDw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZ4LHgvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PVYmJnRoaXMuX2luaXRB''@;'; put 'put ''cnJheSh0aGlzLnRvQXJyYXkoKSxQLFYpfSxOLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKHgsUCxWKXtpZihZKCJudW1iZXIiPT10eXBlb2YgeC5sZW5ndGgpLHgubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0''@;'; put 'put ''aC5jZWlsKHgubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIFQ9MDtUPHRoaXMubGVuZ3RoO1QrKyl0aGlzLndvcmRzW1RdPTA7dmFyIFMsRix5ZT0wO2lmKCJiZSI9PT1WKWZvcihUPXgubGVuZ3RoLTEsUz0wO1Q+PTA7VC09Myl0aGlzLndvcmRz''@;'; put 'put ''W1NdfD0oRj14W1RdfHhbVC0xXTw8OHx4W1QtMl08PDE2KTw8eWUmNjcxMDg4NjMsdGhpcy53b3Jkc1tTKzFdPUY+Pj4yNi15ZSY2NzEwODg2MywoeWUrPTI0KT49MjYmJih5ZS09MjYsUysrKTtlbHNlIGlmKCJsZSI9PT1WKWZvcihUPTAsUz0wO1Q8eC5sZW5ndGg7VCs9Myl0aGlzLndvcmRz''@;'; put 'put ''W1NdfD0oRj14W1RdfHhbVCsxXTw8OHx4W1QrMl08PDE2KTw8eWUmNjcxMDg4NjMsdGhpcy53b3Jkc1tTKzFdPUY+Pj4yNi15ZSY2NzEwODg2MywoeWUrPTI0KT49MjYmJih5ZS09MjYsUysrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oeCxQ''@;'; put 'put ''LFYpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoeC5sZW5ndGgtUCkvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgVD0wO1Q8dGhpcy5sZW5ndGg7VCsrKXRoaXMud29yZHNbVF09MDt2YXIgUyxGPTAseWU9MDtpZigiYmUiPT09Vilmb3IoVD14Lmxlbmd0aC0x''@;'; put 'put ''O1Q+PVA7VC09MilTPUooeCxQLFQpPDxGLHRoaXMud29yZHNbeWVdfD02NzEwODg2MyZTLEY+PTE4PyhGLT0xOCx0aGlzLndvcmRzW3llKz0xXXw9Uz4+PjI2KTpGKz04O2Vsc2UgZm9yKFQ9KHgubGVuZ3RoLVApJTI9PTA/UCsxOlA7VDx4Lmxlbmd0aDtUKz0yKVM9Sih4LFAsVCk8PEYsdGhp''@;'; put 'put ''cy53b3Jkc1t5ZV18PTY3MTA4ODYzJlMsRj49MTg/KEYtPTE4LHRoaXMud29yZHNbeWUrPTFdfD1TPj4+MjYpOkYrPTg7dGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKHgsUCxWKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgVD0wLFM9''@;'; put 'put ''MTtTPD02NzEwODg2MztTKj1QKVQrKztULS0sUz1TL1B8MDtmb3IodmFyIEY9eC5sZW5ndGgtVix5ZT1GJVQsQ2U9TWF0aC5taW4oRixGLXllKStWLERlPTAsUGU9VjtQZTxDZTtQZSs9VClEZT1zZSh4LFBlLFBlK1QsUCksdGhpcy5pbXVsbihTKSx0aGlzLndvcmRzWzBdK0RlPDY3MTA4ODY0''@;'; put 'put ''P3RoaXMud29yZHNbMF0rPURlOnRoaXMuX2lhZGRuKERlKTtpZigwIT09eWUpe3ZhciBRZT0xO2ZvcihEZT1zZSh4LFBlLHgubGVuZ3RoLFApLFBlPTA7UGU8eWU7UGUrKylRZSo9UDt0aGlzLmltdWxuKFFlKSx0aGlzLndvcmRzWzBdK0RlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPURlOnRo''@;'; put 'put ''aXMuX2lhZGRuKERlKX10aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oeCl7eC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgUD0wO1A8dGhpcy5sZW5ndGg7UCsrKXgud29yZHNbUF09dGhpcy53b3Jkc1tQXTt4Lmxlbmd0aD10aGlzLmxlbmd0aCx4''@;'; put 'put ''Lm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUseC5yZWQ9dGhpcy5yZWR9LE4ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIHg9bmV3IE4obnVsbCk7cmV0dXJuIHRoaXMuY29weSh4KSx4fSxOLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKHgpe2Zvcig7dGhpcy5sZW5ndGg8eDspdGhp''@;'; put 'put ''cy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxOLnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LE4ucHJvdG90''@;'; put 'put ''eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSxOLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRv''@;'; put 'put ''U3RyaW5nKDE2KSsiPiJ9O3ZhciBvZT1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAw''@;'; put 'put ''MDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxjZT1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUs''@;'; put 'put ''NSw1LDUsNSw1LDUsNSw1XSxkZT1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0''@;'; put 'put ''MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlv''@;'; put 'put ''biB2ZSh4LFAsVil7Vi5uZWdhdGl2ZT1QLm5lZ2F0aXZlXngubmVnYXRpdmU7dmFyIFQ9eC5sZW5ndGgrUC5sZW5ndGh8MDtWLmxlbmd0aD1ULFQ9VC0xfDA7dmFyIFM9MHx4LndvcmRzWzBdLEY9MHxQLndvcmRzWzBdLHllPVMqRixEZT15ZS82NzEwODg2NHwwO1Yud29yZHNbMF09NjcxMDg4''@;'; put 'put ''NjMmeWU7Zm9yKHZhciBQZT0xO1BlPFQ7UGUrKyl7Zm9yKHZhciBRZT1EZT4+PjI2LCRlPTY3MTA4ODYzJkRlLGd0PU1hdGgubWluKFBlLFAubGVuZ3RoLTEpLHd0PU1hdGgubWF4KDAsUGUteC5sZW5ndGgrMSk7d3Q8PWd0O3d0KyspUWUrPSh5ZT0oUz0wfHgud29yZHNbUGUtd3R8MF0pKihG''@;'; put 'put ''PTB8UC53b3Jkc1t3dF0pKyRlKS82NzEwODg2NHwwLCRlPTY3MTA4ODYzJnllO1Yud29yZHNbUGVdPTB8JGUsRGU9MHxRZX1yZXR1cm4gMCE9PURlP1Yud29yZHNbUGVdPTB8RGU6Vi5sZW5ndGgtLSxWLnN0cmlwKCl9Ti5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oeCxQKXt2YXIgVjtp''@;'; put 'put ''ZihQPTB8UHx8MSwxNj09PSh4PXh8fDEwKXx8ImhleCI9PT14KXtWPSIiO2Zvcih2YXIgVD0wLFM9MCxGPTA7Rjx0aGlzLmxlbmd0aDtGKyspe3ZhciB5ZT10aGlzLndvcmRzW0ZdLENlPSgxNjc3NzIxNSYoeWU8PFR8UykpLnRvU3RyaW5nKDE2KTtWPTAhPShTPXllPj4+MjQtVCYxNjc3NzIx''@;'; put 'put ''NSl8fEYhPT10aGlzLmxlbmd0aC0xP29lWzYtQ2UubGVuZ3RoXStDZStWOkNlK1YsKFQrPTIpPj0yNiYmKFQtPTI2LEYtLSl9Zm9yKDAhPT1TJiYoVj1TLnRvU3RyaW5nKDE2KStWKTtWLmxlbmd0aCVQIT0wOylWPSIwIitWO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKFY9Ii0iK1YpLFZ9''@;'; put 'put ''aWYoeD09PSgwfHgpJiZ4Pj0yJiZ4PD0zNil7dmFyIERlPWNlW3hdLFBlPWRlW3hdO1Y9IiI7dmFyIFFlPXRoaXMuY2xvbmUoKTtmb3IoUWUubmVnYXRpdmU9MDshUWUuaXNaZXJvKCk7KXt2YXIgJGU9UWUubW9kbihQZSkudG9TdHJpbmcoeCk7Vj0oUWU9UWUuaWRpdm4oUGUpKS5pc1plcm8o''@;'; put 'put ''KT8kZStWOm9lW0RlLSRlLmxlbmd0aF0rJGUrVn1mb3IodGhpcy5pc1plcm8oKSYmKFY9IjAiK1YpO1YubGVuZ3RoJVAhPTA7KVY9IjAiK1Y7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoVj0iLSIrViksVn1ZKCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LE4ucHJv''@;'; put 'put ''dG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP3grPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT94Kz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMu''@;'; put 'put ''d29yZHNbMV06dGhpcy5sZW5ndGg+MiYmWSghMSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LXg6eH0sTi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpfSxOLnByb3RvdHlw''@;'; put 'put ''ZS50b0J1ZmZlcj1mdW5jdGlvbih4LFApe3JldHVybiBZKHZvaWQgMCE9PXRlKSx0aGlzLnRvQXJyYXlMaWtlKHRlLHgsUCl9LE4ucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSx4LFApfSxOLnByb3RvdHlwZS50b0FycmF5TGlr''@;'; put 'put ''ZT1mdW5jdGlvbih4LFAsVil7dmFyIFQ9dGhpcy5ieXRlTGVuZ3RoKCksUz1WfHxNYXRoLm1heCgxLFQpO1koVDw9UywiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLFkoUz4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIEYs''@;'; put 'put ''eWUsQ2U9ImxlIj09PVAsRGU9bmV3IHgoUyksUGU9dGhpcy5jbG9uZSgpO2lmKENlKXtmb3IoeWU9MDshUGUuaXNaZXJvKCk7eWUrKylGPVBlLmFuZGxuKDI1NSksUGUuaXVzaHJuKDgpLERlW3llXT1GO2Zvcig7eWU8Uzt5ZSsrKURlW3llXT0wfWVsc2V7Zm9yKHllPTA7eWU8Uy1UO3llKysp''@;'; put 'put ''RGVbeWVdPTA7Zm9yKHllPTA7IVBlLmlzWmVybygpO3llKyspRj1QZS5hbmRsbigyNTUpLFBlLml1c2hybig4KSxEZVtTLXllLTFdPUZ9cmV0dXJuIERlfSxOLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oeCl7cmV0dXJuIDMyLU1hdGguY2x6MzIoeCl9OmZ1bmN0''@;'; put 'put ''aW9uKHgpe3ZhciBQPXgsVj0wO3JldHVybiBQPj00MDk2JiYoVis9MTMsUD4+Pj0xMyksUD49NjQmJihWKz03LFA+Pj49NyksUD49OCYmKFYrPTQsUD4+Pj00KSxQPj0yJiYoVis9MixQPj4+PTIpLFYrUH0sTi5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKHgpe2lmKDA9PT14KXJldHVy''@;'; put 'put ''biAyNjt2YXIgUD14LFY9MDtyZXR1cm4gMD09KDgxOTEmUCkmJihWKz0xMyxQPj4+PTEzKSwwPT0oMTI3JlApJiYoVis9NyxQPj4+PTcpLDA9PSgxNSZQKSYmKFYrPTQsUD4+Pj00KSwwPT0oMyZQKSYmKFYrPTIsUD4+Pj0yKSwwPT0oMSZQKSYmVisrLFZ9LE4ucHJvdG90eXBlLmJpdExlbmd0''@;'; put 'put ''aD1mdW5jdGlvbigpe3ZhciBQPXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK1B9LE4ucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIHg9MCxQPTA7''@;'; put 'put ''UDx0aGlzLmxlbmd0aDtQKyspe3ZhciBWPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbUF0pO2lmKHgrPVYsMjYhPT1WKWJyZWFrfXJldHVybiB4fSxOLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxOLnByb3Rv''@;'; put 'put ''dHlwZS50b1R3b3M9ZnVuY3Rpb24oeCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oeCkuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxOLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy50ZXN0bih4LTEpP3RoaXMubm90bih4KS5pYWRk''@;'; put 'put ''bigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxOLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sTi5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LE4ucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LE4ucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24oeCl7Zm9yKDt0aGlzLmxlbmd0aDx4Lmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgUD0wO1A8eC5sZW5ndGg7UCsrKXRoaXMud29y''@;'; put 'put ''ZHNbUF09dGhpcy53b3Jkc1tQXXx4LndvcmRzW1BdO3JldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmlvcj1mdW5jdGlvbih4KXtyZXR1cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXx4Lm5lZ2F0aXZlKSksdGhpcy5pdW9yKHgpfSxOLnByb3RvdHlwZS5vcj1mdW5jdGlvbih4KXtyZXR1''@;'; put 'put ''cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcih4KTp4LmNsb25lKCkuaW9yKHRoaXMpfSxOLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKHgpOnguY2xvbmUoKS5pdW9yKHRoaXMpfSxO''@;'; put 'put ''LnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbih4KXt2YXIgUDtQPXRoaXMubGVuZ3RoPngubGVuZ3RoP3g6dGhpcztmb3IodmFyIFY9MDtWPFAubGVuZ3RoO1YrKyl0aGlzLndvcmRzW1ZdPXRoaXMud29yZHNbVl0meC53b3Jkc1tWXTtyZXR1cm4gdGhpcy5sZW5ndGg9UC5sZW5ndGgsdGhpcy5z''@;'; put 'put ''dHJpcCgpfSxOLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKHgpe3JldHVybiBZKDA9PSh0aGlzLm5lZ2F0aXZlfHgubmVnYXRpdmUpKSx0aGlzLml1YW5kKHgpfSxOLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5k''@;'; put 'put ''KHgpOnguY2xvbmUoKS5pYW5kKHRoaXMpfSxOLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoeCk6eC5jbG9uZSgpLml1YW5kKHRoaXMpfSxOLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbih4KXt2YXIgUCxW''@;'; put 'put ''O3RoaXMubGVuZ3RoPngubGVuZ3RoPyhQPXRoaXMsVj14KTooUD14LFY9dGhpcyk7Zm9yKHZhciBUPTA7VDxWLmxlbmd0aDtUKyspdGhpcy53b3Jkc1tUXT1QLndvcmRzW1RdXlYud29yZHNbVF07aWYodGhpcyE9PVApZm9yKDtUPFAubGVuZ3RoO1QrKyl0aGlzLndvcmRzW1RdPVAud29yZHNb''@;'; put 'put ''VF07cmV0dXJuIHRoaXMubGVuZ3RoPVAubGVuZ3RoLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbih4KXtyZXR1cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXx4Lm5lZ2F0aXZlKSksdGhpcy5pdXhvcih4KX0sTi5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKHgpe3JldHVybiB0''@;'; put 'put ''aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcih4KTp4LmNsb25lKCkuaXhvcih0aGlzKX0sTi5wcm90b3R5cGUudXhvcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKHgpOnguY2xvbmUoKS5pdXhvcih0aGlzKX0s''@;'; put 'put ''Ti5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBQPTB8TWF0aC5jZWlsKHgvMjYpLFY9eCUyNjt0aGlzLl9leHBhbmQoUCksVj4wJiZQLS07Zm9yKHZhciBUPTA7VDxQO1QrKyl0aGlzLndvcmRzW1RdPTY3MTA4ODYzJn50aGlzLndv''@;'; put 'put ''cmRzW1RdO3JldHVybiBWPjAmJih0aGlzLndvcmRzW1RdPX50aGlzLndvcmRzW1RdJjY3MTA4ODYzPj4yNi1WKSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bih4KX0sTi5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbih4''@;'; put 'put ''LFApe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgVj14LzI2fDAsVD14JTI2O3JldHVybiB0aGlzLl9leHBhbmQoVisxKSx0aGlzLndvcmRzW1ZdPVA/dGhpcy53b3Jkc1tWXXwxPDxUOnRoaXMud29yZHNbVl0mfigxPDxUKSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmlhZGQ9''@;'; put 'put ''ZnVuY3Rpb24oeCl7dmFyIFAsVixUO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09eC5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLFA9dGhpcy5pc3ViKHgpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXgubmVnYXRp''@;'; put 'put ''dmUpcmV0dXJuIHgubmVnYXRpdmU9MCxQPXRoaXMuaXN1Yih4KSx4Lm5lZ2F0aXZlPTEsUC5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD54Lmxlbmd0aD8oVj10aGlzLFQ9eCk6KFY9eCxUPXRoaXMpO2Zvcih2YXIgUz0wLEY9MDtGPFQubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPTY3MTA4ODYz''@;'; put 'put ''JihQPSgwfFYud29yZHNbRl0pKygwfFQud29yZHNbRl0pK1MpLFM9UD4+PjI2O2Zvcig7MCE9PVMmJkY8Vi5sZW5ndGg7RisrKXRoaXMud29yZHNbRl09NjcxMDg4NjMmKFA9KDB8Vi53b3Jkc1tGXSkrUyksUz1QPj4+MjY7aWYodGhpcy5sZW5ndGg9Vi5sZW5ndGgsMCE9PVMpdGhpcy53b3Jk''@;'; put 'put ''c1t0aGlzLmxlbmd0aF09Uyx0aGlzLmxlbmd0aCsrO2Vsc2UgaWYoViE9PXRoaXMpZm9yKDtGPFYubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPVYud29yZHNbRl07cmV0dXJuIHRoaXN9LE4ucHJvdG90eXBlLmFkZD1mdW5jdGlvbih4KXt2YXIgUDtyZXR1cm4gMCE9PXgubmVnYXRpdmUmJjA9''@;'; put 'put ''PT10aGlzLm5lZ2F0aXZlPyh4Lm5lZ2F0aXZlPTAsUD10aGlzLnN1Yih4KSx4Lm5lZ2F0aXZlXj0xLFApOjA9PT14Lm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLFA9eC5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLFApOnRoaXMubGVuZ3RoPngubGVuZ3Ro''@;'; put 'put ''P3RoaXMuY2xvbmUoKS5pYWRkKHgpOnguY2xvbmUoKS5pYWRkKHRoaXMpfSxOLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKHgpe2lmKDAhPT14Lm5lZ2F0aXZlKXt4Lm5lZ2F0aXZlPTA7dmFyIFA9dGhpcy5pYWRkKHgpO3JldHVybiB4Lm5lZ2F0aXZlPTEsUC5fbm9ybVNpZ24oKX1pZigwIT09''@;'; put 'put ''dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZCh4KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgVixULFM9dGhpcy5jbXAoeCk7aWYoMD09PVMpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09''@;'; put 'put ''MCx0aGlzO1M+MD8oVj10aGlzLFQ9eCk6KFY9eCxUPXRoaXMpO2Zvcih2YXIgRj0wLHllPTA7eWU8VC5sZW5ndGg7eWUrKylGPShQPSgwfFYud29yZHNbeWVdKS0oMHxULndvcmRzW3llXSkrRik+PjI2LHRoaXMud29yZHNbeWVdPTY3MTA4ODYzJlA7Zm9yKDswIT09RiYmeWU8Vi5sZW5ndGg7''@;'; put 'put ''eWUrKylGPShQPSgwfFYud29yZHNbeWVdKStGKT4+MjYsdGhpcy53b3Jkc1t5ZV09NjcxMDg4NjMmUDtpZigwPT09RiYmeWU8Vi5sZW5ndGgmJlYhPT10aGlzKWZvcig7eWU8Vi5sZW5ndGg7eWUrKyl0aGlzLndvcmRzW3llXT1WLndvcmRzW3llXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5t''@;'; put 'put ''YXgodGhpcy5sZW5ndGgseWUpLFYhPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLnN1Yj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoeCl9O3ZhciBBZT1mdW5jdGlvbih4LFAsVil7dmFyIFQsUyxGLHllPXgud29yZHMsQ2U9''@;'; put 'put ''UC53b3JkcyxEZT1WLndvcmRzLFBlPTAsUWU9MHx5ZVswXSwkZT04MTkxJlFlLGd0PVFlPj4+MTMsd3Q9MHx5ZVsxXSxtdD04MTkxJnd0LHZ0PXd0Pj4+MTMsQXQ9MHx5ZVsyXSxodD04MTkxJkF0LEJ0PUF0Pj4+MTMsb249MHx5ZVszXSxfdD04MTkxJm9uLHR0PW9uPj4+MTMsZXQ9MHx5ZVs0''@;'; put 'put ''XSxsdD04MTkxJmV0LEx0PWV0Pj4+MTMsQ3Q9MHx5ZVs1XSxmdD04MTkxJkN0LEh0PUN0Pj4+MTMsR2U9MHx5ZVs2XSxVZT04MTkxJkdlLHl0PUdlPj4+MTMsanQ9MHx5ZVs3XSxKdD04MTkxJmp0LGduPWp0Pj4+MTMsZG49MHx5ZVs4XSx5bj04MTkxJmRuLGxuPWRuPj4+MTMsTm49MHx5ZVs5''@;'; put 'put ''XSxibj04MTkxJk5uLGVyPU5uPj4+MTMsc3I9MHxDZVswXSxYbj04MTkxJnNyLEZyPXNyPj4+MTMseHI9MHxDZVsxXSxxdD04MTkxJnhyLHByPXhyPj4+MTMsbnI9MHxDZVsyXSxBbj04MTkxJm5yLHFuPW5yPj4+MTMsV3Q9MHxDZVszXSxwbj04MTkxJld0LEtuPVd0Pj4+MTMsTnQ9MHxDZVs0''@;'; put 'put ''XSxzbj04MTkxJk50LFVuPU50Pj4+MTMsd249MHxDZVs1XSx0bj04MTkxJnduLHpuPXduPj4+MTMsVHI9MHxDZVs2XSxCbj04MTkxJlRyLGtyPVRyPj4+MTMsbW49MHxDZVs3XSx1bj04MTkxJm1uLGNuPW1uPj4+MTMsX249MHxDZVs4XSxHdD04MTkxJl9uLGtuPV9uPj4+MTMsVm49MHxDZVs5''@;'; put 'put ''XSxlbj04MTkxJlZuLEluPVZuPj4+MTM7Vi5uZWdhdGl2ZT14Lm5lZ2F0aXZlXlAubmVnYXRpdmUsVi5sZW5ndGg9MTk7dmFyIEpuPShQZSsoVD1NYXRoLmltdWwoJGUsWG4pKXwwKSsoKDgxOTEmKFM9KFM9TWF0aC5pbXVsKCRlLEZyKSkrTWF0aC5pbXVsKGd0LFhuKXwwKSk8PDEzKXwwO1Bl''@;'; put 'put ''PSgoRj1NYXRoLmltdWwoZ3QsRnIpKSsoUz4+PjEzKXwwKSsoSm4+Pj4yNil8MCxKbiY9NjcxMDg4NjMsVD1NYXRoLmltdWwobXQsWG4pLFM9KFM9TWF0aC5pbXVsKG10LEZyKSkrTWF0aC5pbXVsKHZ0LFhuKXwwLEY9TWF0aC5pbXVsKHZ0LEZyKTt2YXIgb3I9KFBlKyhUPVQrTWF0aC5pbXVs''@;'; put 'put ''KCRlLHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUscHIpfDApK01hdGguaW11bChndCxxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QscHIpfDApKyhTPj4+MTMpfDApKyhvcj4+PjI2KXwwLG9yJj02NzEwODg2MyxUPU1hdGguaW11bChodCxYbiksUz0o''@;'; put 'put ''Uz1NYXRoLmltdWwoaHQsRnIpKStNYXRoLmltdWwoQnQsWG4pfDAsRj1NYXRoLmltdWwoQnQsRnIpLFQ9VCtNYXRoLmltdWwobXQscXQpfDAsUz0oUz1TK01hdGguaW11bChtdCxwcil8MCkrTWF0aC5pbXVsKHZ0LHF0KXwwLEY9RitNYXRoLmltdWwodnQscHIpfDA7dmFyIGdyPShQZSsoVD1U''@;'; put 'put ''K01hdGguaW11bCgkZSxBbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLHFuKXwwKStNYXRoLmltdWwoZ3QsQW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LHFuKXwwKSsoUz4+PjEzKXwwKSsoZ3I+Pj4yNil8MCxnciY9NjcxMDg4NjMsVD1NYXRoLmltdWwo''@;'; put 'put ''X3QsWG4pLFM9KFM9TWF0aC5pbXVsKF90LEZyKSkrTWF0aC5pbXVsKHR0LFhuKXwwLEY9TWF0aC5pbXVsKHR0LEZyKSxUPVQrTWF0aC5pbXVsKGh0LHF0KXwwLFM9KFM9UytNYXRoLmltdWwoaHQscHIpfDApK01hdGguaW11bChCdCxxdCl8MCxGPUYrTWF0aC5pbXVsKEJ0LHByKXwwLFQ9VCtN''@;'; put 'put ''YXRoLmltdWwobXQsQW4pfDAsUz0oUz1TK01hdGguaW11bChtdCxxbil8MCkrTWF0aC5pbXVsKHZ0LEFuKXwwLEY9RitNYXRoLmltdWwodnQscW4pfDA7dmFyIEtyPShQZSsoVD1UK01hdGguaW11bCgkZSxwbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLEtuKXwwKStNYXRo''@;'; put 'put ''LmltdWwoZ3QscG4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LEtuKXwwKSsoUz4+PjEzKXwwKSsoS3I+Pj4yNil8MCxLciY9NjcxMDg4NjMsVD1NYXRoLmltdWwobHQsWG4pLFM9KFM9TWF0aC5pbXVsKGx0LEZyKSkrTWF0aC5pbXVsKEx0LFhuKXwwLEY9TWF0aC5pbXVsKEx0''@;'; put 'put ''LEZyKSxUPVQrTWF0aC5pbXVsKF90LHF0KXwwLFM9KFM9UytNYXRoLmltdWwoX3QscHIpfDApK01hdGguaW11bCh0dCxxdCl8MCxGPUYrTWF0aC5pbXVsKHR0LHByKXwwLFQ9VCtNYXRoLmltdWwoaHQsQW4pfDAsUz0oUz1TK01hdGguaW11bChodCxxbil8MCkrTWF0aC5pbXVsKEJ0LEFuKXww''@;'; put 'put ''LEY9RitNYXRoLmltdWwoQnQscW4pfDAsVD1UK01hdGguaW11bChtdCxwbil8MCxTPShTPVMrTWF0aC5pbXVsKG10LEtuKXwwKStNYXRoLmltdWwodnQscG4pfDAsRj1GK01hdGguaW11bCh2dCxLbil8MDt2YXIgVnI9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLHNuKXwwKXwwKSsoKDgxOTEmKFM9''@;'; put 'put ''KFM9UytNYXRoLmltdWwoJGUsVW4pfDApK01hdGguaW11bChndCxzbil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QsVW4pfDApKyhTPj4+MTMpfDApKyhWcj4+PjI2KXwwLFZyJj02NzEwODg2MyxUPU1hdGguaW11bChmdCxYbiksUz0oUz1NYXRoLmltdWwoZnQsRnIpKStNYXRo''@;'; put 'put ''LmltdWwoSHQsWG4pfDAsRj1NYXRoLmltdWwoSHQsRnIpLFQ9VCtNYXRoLmltdWwobHQscXQpfDAsUz0oUz1TK01hdGguaW11bChsdCxwcil8MCkrTWF0aC5pbXVsKEx0LHF0KXwwLEY9RitNYXRoLmltdWwoTHQscHIpfDAsVD1UK01hdGguaW11bChfdCxBbil8MCxTPShTPVMrTWF0aC5pbXVs''@;'; put 'put ''KF90LHFuKXwwKStNYXRoLmltdWwodHQsQW4pfDAsRj1GK01hdGguaW11bCh0dCxxbil8MCxUPVQrTWF0aC5pbXVsKGh0LHBuKXwwLFM9KFM9UytNYXRoLmltdWwoaHQsS24pfDApK01hdGguaW11bChCdCxwbil8MCxGPUYrTWF0aC5pbXVsKEJ0LEtuKXwwLFQ9VCtNYXRoLmltdWwobXQsc24p''@;'; put 'put ''fDAsUz0oUz1TK01hdGguaW11bChtdCxVbil8MCkrTWF0aC5pbXVsKHZ0LHNuKXwwLEY9RitNYXRoLmltdWwodnQsVW4pfDA7dmFyIGlpPShQZSsoVD1UK01hdGguaW11bCgkZSx0bil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLHpuKXwwKStNYXRoLmltdWwoZ3QsdG4pfDAp''@;'; put 'put ''KTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LHpuKXwwKSsoUz4+PjEzKXwwKSsoaWk+Pj4yNil8MCxpaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoVWUsWG4pLFM9KFM9TWF0aC5pbXVsKFVlLEZyKSkrTWF0aC5pbXVsKHl0LFhuKXwwLEY9TWF0aC5pbXVsKHl0LEZyKSxUPVQrTWF0aC5p''@;'; put 'put ''bXVsKGZ0LHF0KXwwLFM9KFM9UytNYXRoLmltdWwoZnQscHIpfDApK01hdGguaW11bChIdCxxdCl8MCxGPUYrTWF0aC5pbXVsKEh0LHByKXwwLFQ9VCtNYXRoLmltdWwobHQsQW4pfDAsUz0oUz1TK01hdGguaW11bChsdCxxbil8MCkrTWF0aC5pbXVsKEx0LEFuKXwwLEY9RitNYXRoLmltdWwo''@;'; put 'put ''THQscW4pfDAsVD1UK01hdGguaW11bChfdCxwbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LEtuKXwwKStNYXRoLmltdWwodHQscG4pfDAsRj1GK01hdGguaW11bCh0dCxLbil8MCxUPVQrTWF0aC5pbXVsKGh0LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoaHQsVW4pfDApK01hdGguaW11bChCdCxz''@;'; put 'put ''bil8MCxGPUYrTWF0aC5pbXVsKEJ0LFVuKXwwLFQ9VCtNYXRoLmltdWwobXQsdG4pfDAsUz0oUz1TK01hdGguaW11bChtdCx6bil8MCkrTWF0aC5pbXVsKHZ0LHRuKXwwLEY9RitNYXRoLmltdWwodnQsem4pfDA7dmFyIFJyPShQZSsoVD1UK01hdGguaW11bCgkZSxCbil8MCl8MCkrKCg4MTkx''@;'; put 'put ''JihTPShTPVMrTWF0aC5pbXVsKCRlLGtyKXwwKStNYXRoLmltdWwoZ3QsQm4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LGtyKXwwKSsoUz4+PjEzKXwwKSsoUnI+Pj4yNil8MCxSciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoSnQsWG4pLFM9KFM9TWF0aC5pbXVsKEp0LEZyKSkr''@;'; put 'put ''TWF0aC5pbXVsKGduLFhuKXwwLEY9TWF0aC5pbXVsKGduLEZyKSxUPVQrTWF0aC5pbXVsKFVlLHF0KXwwLFM9KFM9UytNYXRoLmltdWwoVWUscHIpfDApK01hdGguaW11bCh5dCxxdCl8MCxGPUYrTWF0aC5pbXVsKHl0LHByKXwwLFQ9VCtNYXRoLmltdWwoZnQsQW4pfDAsUz0oUz1TK01hdGgu''@;'; put 'put ''aW11bChmdCxxbil8MCkrTWF0aC5pbXVsKEh0LEFuKXwwLEY9RitNYXRoLmltdWwoSHQscW4pfDAsVD1UK01hdGguaW11bChsdCxwbil8MCxTPShTPVMrTWF0aC5pbXVsKGx0LEtuKXwwKStNYXRoLmltdWwoTHQscG4pfDAsRj1GK01hdGguaW11bChMdCxLbil8MCxUPVQrTWF0aC5pbXVsKF90''@;'; put 'put ''LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoX3QsVW4pfDApK01hdGguaW11bCh0dCxzbil8MCxGPUYrTWF0aC5pbXVsKHR0LFVuKXwwLFQ9VCtNYXRoLmltdWwoaHQsdG4pfDAsUz0oUz1TK01hdGguaW11bChodCx6bil8MCkrTWF0aC5pbXVsKEJ0LHRuKXwwLEY9RitNYXRoLmltdWwoQnQsem4p''@;'; put 'put ''fDAsVD1UK01hdGguaW11bChtdCxCbil8MCxTPShTPVMrTWF0aC5pbXVsKG10LGtyKXwwKStNYXRoLmltdWwodnQsQm4pfDAsRj1GK01hdGguaW11bCh2dCxrcil8MDt2YXIgbGk9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLHVuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsY24p''@;'; put 'put ''fDApK01hdGguaW11bChndCx1bil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QsY24pfDApKyhTPj4+MTMpfDApKyhsaT4+PjI2KXwwLGxpJj02NzEwODg2MyxUPU1hdGguaW11bCh5bixYbiksUz0oUz1NYXRoLmltdWwoeW4sRnIpKStNYXRoLmltdWwobG4sWG4pfDAsRj1NYXRo''@;'; put 'put ''LmltdWwobG4sRnIpLFQ9VCtNYXRoLmltdWwoSnQscXQpfDAsUz0oUz1TK01hdGguaW11bChKdCxwcil8MCkrTWF0aC5pbXVsKGduLHF0KXwwLEY9RitNYXRoLmltdWwoZ24scHIpfDAsVD1UK01hdGguaW11bChVZSxBbil8MCxTPShTPVMrTWF0aC5pbXVsKFVlLHFuKXwwKStNYXRoLmltdWwo''@;'; put 'put ''eXQsQW4pfDAsRj1GK01hdGguaW11bCh5dCxxbil8MCxUPVQrTWF0aC5pbXVsKGZ0LHBuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsS24pfDApK01hdGguaW11bChIdCxwbil8MCxGPUYrTWF0aC5pbXVsKEh0LEtuKXwwLFQ9VCtNYXRoLmltdWwobHQsc24pfDAsUz0oUz1TK01hdGguaW11bChs''@;'; put 'put ''dCxVbil8MCkrTWF0aC5pbXVsKEx0LHNuKXwwLEY9RitNYXRoLmltdWwoTHQsVW4pfDAsVD1UK01hdGguaW11bChfdCx0bil8MCxTPShTPVMrTWF0aC5pbXVsKF90LHpuKXwwKStNYXRoLmltdWwodHQsdG4pfDAsRj1GK01hdGguaW11bCh0dCx6bil8MCxUPVQrTWF0aC5pbXVsKGh0LEJuKXww''@;'; put 'put ''LFM9KFM9UytNYXRoLmltdWwoaHQsa3IpfDApK01hdGguaW11bChCdCxCbil8MCxGPUYrTWF0aC5pbXVsKEJ0LGtyKXwwLFQ9VCtNYXRoLmltdWwobXQsdW4pfDAsUz0oUz1TK01hdGguaW11bChtdCxjbil8MCkrTWF0aC5pbXVsKHZ0LHVuKXwwLEY9RitNYXRoLmltdWwodnQsY24pfDA7dmFy''@;'; put 'put ''IE1pPShQZSsoVD1UK01hdGguaW11bCgkZSxHdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLGtuKXwwKStNYXRoLmltdWwoZ3QsR3QpfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LGtuKXwwKSsoUz4+PjEzKXwwKSsoTWk+Pj4yNil8MCxNaSY9NjcxMDg4NjMs''@;'; put 'put ''VD1NYXRoLmltdWwoYm4sWG4pLFM9KFM9TWF0aC5pbXVsKGJuLEZyKSkrTWF0aC5pbXVsKGVyLFhuKXwwLEY9TWF0aC5pbXVsKGVyLEZyKSxUPVQrTWF0aC5pbXVsKHluLHF0KXwwLFM9KFM9UytNYXRoLmltdWwoeW4scHIpfDApK01hdGguaW11bChsbixxdCl8MCxGPUYrTWF0aC5pbXVsKGxu''@;'; put 'put ''LHByKXwwLFQ9VCtNYXRoLmltdWwoSnQsQW4pfDAsUz0oUz1TK01hdGguaW11bChKdCxxbil8MCkrTWF0aC5pbXVsKGduLEFuKXwwLEY9RitNYXRoLmltdWwoZ24scW4pfDAsVD1UK01hdGguaW11bChVZSxwbil8MCxTPShTPVMrTWF0aC5pbXVsKFVlLEtuKXwwKStNYXRoLmltdWwoeXQscG4p''@;'; put 'put ''fDAsRj1GK01hdGguaW11bCh5dCxLbil8MCxUPVQrTWF0aC5pbXVsKGZ0LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsVW4pfDApK01hdGguaW11bChIdCxzbil8MCxGPUYrTWF0aC5pbXVsKEh0LFVuKXwwLFQ9VCtNYXRoLmltdWwobHQsdG4pfDAsUz0oUz1TK01hdGguaW11bChsdCx6bil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKEx0LHRuKXwwLEY9RitNYXRoLmltdWwoTHQsem4pfDAsVD1UK01hdGguaW11bChfdCxCbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LGtyKXwwKStNYXRoLmltdWwodHQsQm4pfDAsRj1GK01hdGguaW11bCh0dCxrcil8MCxUPVQrTWF0aC5pbXVsKGh0LHVuKXwwLFM9KFM9''@;'; put 'put ''UytNYXRoLmltdWwoaHQsY24pfDApK01hdGguaW11bChCdCx1bil8MCxGPUYrTWF0aC5pbXVsKEJ0LGNuKXwwLFQ9VCtNYXRoLmltdWwobXQsR3QpfDAsUz0oUz1TK01hdGguaW11bChtdCxrbil8MCkrTWF0aC5pbXVsKHZ0LEd0KXwwLEY9RitNYXRoLmltdWwodnQsa24pfDA7dmFyIG8wPShQ''@;'; put 'put ''ZSsoVD1UK01hdGguaW11bCgkZSxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLEluKXwwKStNYXRoLmltdWwoZ3QsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LEluKXwwKSsoUz4+PjEzKXwwKSsobzA+Pj4yNil8MCxvMCY9NjcxMDg4NjMsVD1NYXRo''@;'; put 'put ''LmltdWwoYm4scXQpLFM9KFM9TWF0aC5pbXVsKGJuLHByKSkrTWF0aC5pbXVsKGVyLHF0KXwwLEY9TWF0aC5pbXVsKGVyLHByKSxUPVQrTWF0aC5pbXVsKHluLEFuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4scW4pfDApK01hdGguaW11bChsbixBbil8MCxGPUYrTWF0aC5pbXVsKGxuLHFuKXww''@;'; put 'put ''LFQ9VCtNYXRoLmltdWwoSnQscG4pfDAsUz0oUz1TK01hdGguaW11bChKdCxLbil8MCkrTWF0aC5pbXVsKGduLHBuKXwwLEY9RitNYXRoLmltdWwoZ24sS24pfDAsVD1UK01hdGguaW11bChVZSxzbil8MCxTPShTPVMrTWF0aC5pbXVsKFVlLFVuKXwwKStNYXRoLmltdWwoeXQsc24pfDAsRj1G''@;'; put 'put ''K01hdGguaW11bCh5dCxVbil8MCxUPVQrTWF0aC5pbXVsKGZ0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsem4pfDApK01hdGguaW11bChIdCx0bil8MCxGPUYrTWF0aC5pbXVsKEh0LHpuKXwwLFQ9VCtNYXRoLmltdWwobHQsQm4pfDAsUz0oUz1TK01hdGguaW11bChsdCxrcil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKEx0LEJuKXwwLEY9RitNYXRoLmltdWwoTHQsa3IpfDAsVD1UK01hdGguaW11bChfdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKF90LGNuKXwwKStNYXRoLmltdWwodHQsdW4pfDAsRj1GK01hdGguaW11bCh0dCxjbil8MCxUPVQrTWF0aC5pbXVsKGh0LEd0KXwwLFM9KFM9UytNYXRo''@;'; put 'put ''LmltdWwoaHQsa24pfDApK01hdGguaW11bChCdCxHdCl8MCxGPUYrTWF0aC5pbXVsKEJ0LGtuKXwwO3ZhciBuMD0oUGUrKFQ9VCtNYXRoLmltdWwobXQsZW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChtdCxJbil8MCkrTWF0aC5pbXVsKHZ0LGVuKXwwKSk8PDEzKXwwO1BlPSgo''@;'; put 'put ''Rj1GK01hdGguaW11bCh2dCxJbil8MCkrKFM+Pj4xMyl8MCkrKG4wPj4+MjYpfDAsbjAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGJuLEFuKSxTPShTPU1hdGguaW11bChibixxbikpK01hdGguaW11bChlcixBbil8MCxGPU1hdGguaW11bChlcixxbiksVD1UK01hdGguaW11bCh5bixwbil8MCxT''@;'; put 'put ''PShTPVMrTWF0aC5pbXVsKHluLEtuKXwwKStNYXRoLmltdWwobG4scG4pfDAsRj1GK01hdGguaW11bChsbixLbil8MCxUPVQrTWF0aC5pbXVsKEp0LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsVW4pfDApK01hdGguaW11bChnbixzbil8MCxGPUYrTWF0aC5pbXVsKGduLFVuKXwwLFQ9VCtN''@;'; put 'put ''YXRoLmltdWwoVWUsdG4pfDAsUz0oUz1TK01hdGguaW11bChVZSx6bil8MCkrTWF0aC5pbXVsKHl0LHRuKXwwLEY9RitNYXRoLmltdWwoeXQsem4pfDAsVD1UK01hdGguaW11bChmdCxCbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LGtyKXwwKStNYXRoLmltdWwoSHQsQm4pfDAsRj1GK01hdGgu''@;'; put 'put ''aW11bChIdCxrcil8MCxUPVQrTWF0aC5pbXVsKGx0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwobHQsY24pfDApK01hdGguaW11bChMdCx1bil8MCxGPUYrTWF0aC5pbXVsKEx0LGNuKXwwLFQ9VCtNYXRoLmltdWwoX3QsR3QpfDAsUz0oUz1TK01hdGguaW11bChfdCxrbil8MCkrTWF0aC5pbXVs''@;'; put 'put ''KHR0LEd0KXwwLEY9RitNYXRoLmltdWwodHQsa24pfDA7dmFyIGQwPShQZSsoVD1UK01hdGguaW11bChodCxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKGh0LEluKXwwKStNYXRoLmltdWwoQnQsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKEJ0LEluKXwwKSso''@;'; put 'put ''Uz4+PjEzKXwwKSsoZDA+Pj4yNil8MCxkMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4scG4pLFM9KFM9TWF0aC5pbXVsKGJuLEtuKSkrTWF0aC5pbXVsKGVyLHBuKXwwLEY9TWF0aC5pbXVsKGVyLEtuKSxUPVQrTWF0aC5pbXVsKHluLHNuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4sVW4pfDAp''@;'; put 'put ''K01hdGguaW11bChsbixzbil8MCxGPUYrTWF0aC5pbXVsKGxuLFVuKXwwLFQ9VCtNYXRoLmltdWwoSnQsdG4pfDAsUz0oUz1TK01hdGguaW11bChKdCx6bil8MCkrTWF0aC5pbXVsKGduLHRuKXwwLEY9RitNYXRoLmltdWwoZ24sem4pfDAsVD1UK01hdGguaW11bChVZSxCbil8MCxTPShTPVMr''@;'; put 'put ''TWF0aC5pbXVsKFVlLGtyKXwwKStNYXRoLmltdWwoeXQsQm4pfDAsRj1GK01hdGguaW11bCh5dCxrcil8MCxUPVQrTWF0aC5pbXVsKGZ0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsY24pfDApK01hdGguaW11bChIdCx1bil8MCxGPUYrTWF0aC5pbXVsKEh0LGNuKXwwLFQ9VCtNYXRoLmlt''@;'; put 'put ''dWwobHQsR3QpfDAsUz0oUz1TK01hdGguaW11bChsdCxrbil8MCkrTWF0aC5pbXVsKEx0LEd0KXwwLEY9RitNYXRoLmltdWwoTHQsa24pfDA7dmFyIG0wPShQZSsoVD1UK01hdGguaW11bChfdCxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKF90LEluKXwwKStNYXRoLmltdWwo''@;'; put 'put ''dHQsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKHR0LEluKXwwKSsoUz4+PjEzKXwwKSsobTA+Pj4yNil8MCxtMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sc24pLFM9KFM9TWF0aC5pbXVsKGJuLFVuKSkrTWF0aC5pbXVsKGVyLHNuKXwwLEY9TWF0aC5pbXVsKGVyLFVuKSxU''@;'; put 'put ''PVQrTWF0aC5pbXVsKHluLHRuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4sem4pfDApK01hdGguaW11bChsbix0bil8MCxGPUYrTWF0aC5pbXVsKGxuLHpuKXwwLFQ9VCtNYXRoLmltdWwoSnQsQm4pfDAsUz0oUz1TK01hdGguaW11bChKdCxrcil8MCkrTWF0aC5pbXVsKGduLEJuKXwwLEY9RitN''@;'; put 'put ''YXRoLmltdWwoZ24sa3IpfDAsVD1UK01hdGguaW11bChVZSx1bil8MCxTPShTPVMrTWF0aC5pbXVsKFVlLGNuKXwwKStNYXRoLmltdWwoeXQsdW4pfDAsRj1GK01hdGguaW11bCh5dCxjbil8MCxUPVQrTWF0aC5pbXVsKGZ0LEd0KXwwLFM9KFM9UytNYXRoLmltdWwoZnQsa24pfDApK01hdGgu''@;'; put 'put ''aW11bChIdCxHdCl8MCxGPUYrTWF0aC5pbXVsKEh0LGtuKXwwO3ZhciBHMD0oUGUrKFQ9VCtNYXRoLmltdWwobHQsZW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChsdCxJbil8MCkrTWF0aC5pbXVsKEx0LGVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChMdCxJbil8''@;'; put 'put ''MCkrKFM+Pj4xMyl8MCkrKEcwPj4+MjYpfDAsRzAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGJuLHRuKSxTPShTPU1hdGguaW11bChibix6bikpK01hdGguaW11bChlcix0bil8MCxGPU1hdGguaW11bChlcix6biksVD1UK01hdGguaW11bCh5bixCbil8MCxTPShTPVMrTWF0aC5pbXVsKHluLGty''@;'; put 'put ''KXwwKStNYXRoLmltdWwobG4sQm4pfDAsRj1GK01hdGguaW11bChsbixrcil8MCxUPVQrTWF0aC5pbXVsKEp0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsY24pfDApK01hdGguaW11bChnbix1bil8MCxGPUYrTWF0aC5pbXVsKGduLGNuKXwwLFQ9VCtNYXRoLmltdWwoVWUsR3QpfDAsUz0o''@;'; put 'put ''Uz1TK01hdGguaW11bChVZSxrbil8MCkrTWF0aC5pbXVsKHl0LEd0KXwwLEY9RitNYXRoLmltdWwoeXQsa24pfDA7dmFyIERpPShQZSsoVD1UK01hdGguaW11bChmdCxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKGZ0LEluKXwwKStNYXRoLmltdWwoSHQsZW4pfDApKTw8MTMp''@;'; put 'put ''fDA7UGU9KChGPUYrTWF0aC5pbXVsKEh0LEluKXwwKSsoUz4+PjEzKXwwKSsoRGk+Pj4yNil8MCxEaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sQm4pLFM9KFM9TWF0aC5pbXVsKGJuLGtyKSkrTWF0aC5pbXVsKGVyLEJuKXwwLEY9TWF0aC5pbXVsKGVyLGtyKSxUPVQrTWF0aC5pbXVsKHlu''@;'; put 'put ''LHVuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4sY24pfDApK01hdGguaW11bChsbix1bil8MCxGPUYrTWF0aC5pbXVsKGxuLGNuKXwwLFQ9VCtNYXRoLmltdWwoSnQsR3QpfDAsUz0oUz1TK01hdGguaW11bChKdCxrbil8MCkrTWF0aC5pbXVsKGduLEd0KXwwLEY9RitNYXRoLmltdWwoZ24sa24p''@;'; put 'put ''fDA7dmFyIFcwPShQZSsoVD1UK01hdGguaW11bChVZSxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKFVlLEluKXwwKStNYXRoLmltdWwoeXQsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKHl0LEluKXwwKSsoUz4+PjEzKXwwKSsoVzA+Pj4yNil8MCxXMCY9Njcx''@;'; put 'put ''MDg4NjMsVD1NYXRoLmltdWwoYm4sdW4pLFM9KFM9TWF0aC5pbXVsKGJuLGNuKSkrTWF0aC5pbXVsKGVyLHVuKXwwLEY9TWF0aC5pbXVsKGVyLGNuKSxUPVQrTWF0aC5pbXVsKHluLEd0KXwwLFM9KFM9UytNYXRoLmltdWwoeW4sa24pfDApK01hdGguaW11bChsbixHdCl8MCxGPUYrTWF0aC5p''@;'; put 'put ''bXVsKGxuLGtuKXwwO3ZhciBFbz0oUGUrKFQ9VCtNYXRoLmltdWwoSnQsZW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChKdCxJbil8MCkrTWF0aC5pbXVsKGduLGVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChnbixJbil8MCkrKFM+Pj4xMyl8MCkrKEVvPj4+MjYp''@;'; put 'put ''fDAsRW8mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGJuLEd0KSxTPShTPU1hdGguaW11bChibixrbikpK01hdGguaW11bChlcixHdCl8MCxGPU1hdGguaW11bChlcixrbik7dmFyIHFvPShQZSsoVD1UK01hdGguaW11bCh5bixlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKHluLElu''@;'; put 'put ''KXwwKStNYXRoLmltdWwobG4sZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGxuLEluKXwwKSsoUz4+PjEzKXwwKSsocW8+Pj4yNil8MCxxbyY9NjcxMDg4NjM7dmFyIGNhPShQZSsoVD1NYXRoLmltdWwoYm4sZW4pKXwwKSsoKDgxOTEmKFM9KFM9TWF0aC5pbXVsKGJuLEluKSkr''@;'; put 'put ''TWF0aC5pbXVsKGVyLGVuKXwwKSk8PDEzKXwwO3JldHVybiBQZT0oKEY9TWF0aC5pbXVsKGVyLEluKSkrKFM+Pj4xMyl8MCkrKGNhPj4+MjYpfDAsY2EmPTY3MTA4ODYzLERlWzBdPUpuLERlWzFdPW9yLERlWzJdPWdyLERlWzNdPUtyLERlWzRdPVZyLERlWzVdPWlpLERlWzZdPVJyLERlWzdd''@;'; put 'put ''PWxpLERlWzhdPU1pLERlWzldPW8wLERlWzEwXT1uMCxEZVsxMV09ZDAsRGVbMTJdPW0wLERlWzEzXT1HMCxEZVsxNF09RGksRGVbMTVdPVcwLERlWzE2XT1FbyxEZVsxN109cW8sRGVbMThdPWNhLDAhPT1QZSYmKERlWzE5XT1QZSxWLmxlbmd0aCsrKSxWfTtmdW5jdGlvbiBrZSh4LFAsVil7''@;'; put 'put ''cmV0dXJuKG5ldyBTZSkubXVscCh4LFAsVil9ZnVuY3Rpb24gU2UoeCxQKXt0aGlzLng9eCx0aGlzLnk9UH1NYXRoLmltdWx8fChBZT12ZSksTi5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oeCxQKXt2YXIgVD10aGlzLmxlbmd0aCt4Lmxlbmd0aDtyZXR1cm4gMTA9PT10aGlzLmxlbmd0aCYm''@;'; put 'put ''MTA9PT14Lmxlbmd0aD9BZSh0aGlzLHgsUCk6VDw2Mz92ZSh0aGlzLHgsUCk6VDwxMDI0P2Z1bmN0aW9uKFMsRix5ZSl7eWUubmVnYXRpdmU9Ri5uZWdhdGl2ZV5TLm5lZ2F0aXZlLHllLmxlbmd0aD1TLmxlbmd0aCtGLmxlbmd0aDtmb3IodmFyIENlPTAsRGU9MCxQZT0wO1BlPHllLmxlbmd0''@;'; put 'put ''aC0xO1BlKyspe3ZhciBRZT1EZTtEZT0wO2Zvcih2YXIgJGU9NjcxMDg4NjMmQ2UsZ3Q9TWF0aC5taW4oUGUsRi5sZW5ndGgtMSksd3Q9TWF0aC5tYXgoMCxQZS1TLmxlbmd0aCsxKTt3dDw9Z3Q7d3QrKyl7dmFyIHZ0PSgwfFMud29yZHNbUGUtd3RdKSooMHxGLndvcmRzW3d0XSksQXQ9Njcx''@;'; put 'put ''MDg4NjMmdnQ7JGU9NjcxMDg4NjMmKEF0PUF0KyRlfDApLERlKz0oUWU9KFFlPVFlKyh2dC82NzEwODg2NHwwKXwwKSsoQXQ+Pj4yNil8MCk+Pj4yNixRZSY9NjcxMDg4NjN9eWUud29yZHNbUGVdPSRlLENlPVFlLFFlPURlfXJldHVybiAwIT09Q2U/eWUud29yZHNbUGVdPUNlOnllLmxlbmd0''@;'; put 'put ''aC0tLHllLnN0cmlwKCl9KHRoaXMseCxQKTprZSh0aGlzLHgsUCl9LFNlLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKHgpe2Zvcih2YXIgUD1uZXcgQXJyYXkoeCksVj1OLnByb3RvdHlwZS5fY291bnRCaXRzKHgpLTEsVD0wO1Q8eDtUKyspUFtUXT10aGlzLnJldkJpbihULFYseCk7cmV0''@;'; put 'put ''dXJuIFB9LFNlLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oeCxQLFYpe2lmKDA9PT14fHx4PT09Vi0xKXJldHVybiB4O2Zvcih2YXIgVD0wLFM9MDtTPFA7UysrKVR8PSgxJngpPDxQLVMtMSx4Pj49MTtyZXR1cm4gVH0sU2UucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oeCxQLFYsVCxT''@;'; put 'put ''LEYpe2Zvcih2YXIgeWU9MDt5ZTxGO3llKyspVFt5ZV09UFt4W3llXV0sU1t5ZV09Vlt4W3llXV19LFNlLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oeCxQLFYsVCxTLEYpe3RoaXMucGVybXV0ZShGLHgsUCxWLFQsUyk7Zm9yKHZhciB5ZT0xO3llPFM7eWU8PD0xKWZvcih2YXIgQ2U9''@;'; put 'put ''eWU8PDEsRGU9TWF0aC5jb3MoMipNYXRoLlBJL0NlKSxQZT1NYXRoLnNpbigyKk1hdGguUEkvQ2UpLFFlPTA7UWU8UztRZSs9Q2UpZm9yKHZhciAkZT1EZSxndD1QZSx3dD0wO3d0PHllO3d0Kyspe3ZhciBtdD1WW1FlK3d0XSx2dD1UW1FlK3d0XSxBdD1WW1FlK3d0K3llXSxodD1UW1FlK3d0''@;'; put 'put ''K3llXSxCdD0kZSpBdC1ndCpodDtodD0kZSpodCtndCpBdCxWW1FlK3d0XT1tdCsoQXQ9QnQpLFRbUWUrd3RdPXZ0K2h0LFZbUWUrd3QreWVdPW10LUF0LFRbUWUrd3QreWVdPXZ0LWh0LHd0IT09Q2UmJihCdD1EZSokZS1QZSpndCxndD1EZSpndCtQZSokZSwkZT1CdCl9fSxTZS5wcm90b3R5''@;'; put 'put ''cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oeCxQKXt2YXIgVj0xfE1hdGgubWF4KFAseCksVD0xJlYsUz0wO2ZvcihWPVYvMnwwO1Y7Vj4+Pj0xKVMrKztyZXR1cm4gMTw8UysxK1R9LFNlLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oeCxQLFYpe2lmKCEoVjw9MSkpZm9yKHZhciBUPTA7''@;'; put 'put ''VDxWLzI7VCsrKXt2YXIgUz14W1RdO3hbVF09eFtWLVQtMV0seFtWLVQtMV09UyxTPVBbVF0sUFtUXT0tUFtWLVQtMV0sUFtWLVQtMV09LVN9fSxTZS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKHgsUCl7Zm9yKHZhciBWPTAsVD0wO1Q8UC8yO1QrKyl7dmFyIFM9ODE5MipNYXRo''@;'; put 'put ''LnJvdW5kKHhbMipUKzFdL1ApK01hdGgucm91bmQoeFsyKlRdL1ApK1Y7eFtUXT02NzEwODg2MyZTLFY9Uzw2NzEwODg2ND8wOlMvNjcxMDg4NjR8MH1yZXR1cm4geH0sU2UucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oeCxQLFYsVCl7Zm9yKHZhciBTPTAsRj0wO0Y8UDtGKyspVlsy''@;'; put 'put ''KkZdPTgxOTEmKFMrPTB8eFtGXSksVlsyKkYrMV09ODE5MSYoUz4+Pj0xMyksUz4+Pj0xMztmb3IoRj0yKlA7RjxUOysrRilWW0ZdPTA7WSgwPT09UyksWSgwPT0oLTgxOTImUykpfSxTZS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbih4KXtmb3IodmFyIFA9bmV3IEFycmF5KHgpLFY9MDtWPHg7''@;'; put 'put ''VisrKVBbVl09MDtyZXR1cm4gUH0sU2UucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oeCxQLFYpe3ZhciBUPTIqdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCxQLmxlbmd0aCksUz10aGlzLm1ha2VSQlQoVCksRj10aGlzLnN0dWIoVCkseWU9bmV3IEFycmF5KFQpLENlPW5ldyBBcnJheShUKSxE''@;'; put 'put ''ZT1uZXcgQXJyYXkoVCksUGU9bmV3IEFycmF5KFQpLFFlPW5ldyBBcnJheShUKSwkZT1uZXcgQXJyYXkoVCksZ3Q9Vi53b3JkcztndC5sZW5ndGg9VCx0aGlzLmNvbnZlcnQxM2IoeC53b3Jkcyx4Lmxlbmd0aCx5ZSxUKSx0aGlzLmNvbnZlcnQxM2IoUC53b3JkcyxQLmxlbmd0aCxQZSxUKSx0''@;'; put 'put ''aGlzLnRyYW5zZm9ybSh5ZSxGLENlLERlLFQsUyksdGhpcy50cmFuc2Zvcm0oUGUsRixRZSwkZSxULFMpO2Zvcih2YXIgd3Q9MDt3dDxUO3d0Kyspe3ZhciBtdD1DZVt3dF0qUWVbd3RdLURlW3d0XSokZVt3dF07RGVbd3RdPUNlW3d0XSokZVt3dF0rRGVbd3RdKlFlW3d0XSxDZVt3dF09bXR9''@;'; put 'put ''cmV0dXJuIHRoaXMuY29uanVnYXRlKENlLERlLFQpLHRoaXMudHJhbnNmb3JtKENlLERlLGd0LEYsVCxTKSx0aGlzLmNvbmp1Z2F0ZShndCxGLFQpLHRoaXMubm9ybWFsaXplMTNiKGd0LFQpLFYubmVnYXRpdmU9eC5uZWdhdGl2ZV5QLm5lZ2F0aXZlLFYubGVuZ3RoPXgubGVuZ3RoK1AubGVu''@;'; put 'put ''Z3RoLFYuc3RyaXAoKX0sTi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHgpe3ZhciBQPW5ldyBOKG51bGwpO3JldHVybiBQLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCt4Lmxlbmd0aCksdGhpcy5tdWxUbyh4LFApfSxOLnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKHgpe3ZhciBQPW5ldyBO''@;'; put 'put ''KG51bGwpO3JldHVybiBQLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCt4Lmxlbmd0aCksa2UodGhpcyx4LFApfSxOLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oeCx0aGlzKX0sTi5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oeCl7WSgi''@;'; put 'put ''bnVtYmVyIj09dHlwZW9mIHgpLFkoeDw2NzEwODg2NCk7Zm9yKHZhciBQPTAsVj0wO1Y8dGhpcy5sZW5ndGg7VisrKXt2YXIgVD0oMHx0aGlzLndvcmRzW1ZdKSp4LFM9KDY3MTA4ODYzJlQpKyg2NzEwODg2MyZQKTtQPj49MjYsUCs9VC82NzEwODg2NHwwLFArPVM+Pj4yNix0aGlzLndvcmRz''@;'; put 'put ''W1ZdPTY3MTA4ODYzJlN9cmV0dXJuIDAhPT1QJiYodGhpcy53b3Jkc1tWXT1QLHRoaXMubGVuZ3RoKyspLHRoaXN9LE4ucHJvdG90eXBlLm11bG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbih4KX0sTi5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''bXVsKHRoaXMpfSxOLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpfSxOLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oeCl7dmFyIFA9ZnVuY3Rpb24oRil7Zm9yKHZhciB5ZT1uZXcgQXJyYXkoRi5iaXRMZW5ndGgoKSksQ2U9MDtDZTx5ZS5s''@;'; put 'put ''ZW5ndGg7Q2UrKyl7dmFyIFBlPUNlJTI2O3llW0NlXT0oRi53b3Jkc1tDZS8yNnwwXSYxPDxQZSk+Pj5QZX1yZXR1cm4geWV9KHgpO2lmKDA9PT1QLmxlbmd0aClyZXR1cm4gbmV3IE4oMSk7Zm9yKHZhciBWPXRoaXMsVD0wO1Q8UC5sZW5ndGgmJjA9PT1QW1RdO1QrKyxWPVYuc3FyKCkpO2lm''@;'; put 'put ''KCsrVDxQLmxlbmd0aClmb3IodmFyIFM9Vi5zcXIoKTtUPFAubGVuZ3RoO1QrKyxTPVMuc3FyKCkpMCE9PVBbVF0mJihWPVYubXVsKFMpKTtyZXR1cm4gVn0sTi5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgUCxWPXglMjYsVD0o''@;'; put 'put ''eC1WKS8yNixTPTY3MTA4ODYzPj4+MjYtVjw8MjYtVjtpZigwIT09Vil7dmFyIEY9MDtmb3IoUD0wO1A8dGhpcy5sZW5ndGg7UCsrKXt2YXIgeWU9dGhpcy53b3Jkc1tQXSZTO3RoaXMud29yZHNbUF09KDB8dGhpcy53b3Jkc1tQXSkteWU8PFZ8RixGPXllPj4+MjYtVn1GJiYodGhpcy53b3Jk''@;'; put 'put ''c1tQXT1GLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1UKXtmb3IoUD10aGlzLmxlbmd0aC0xO1A+PTA7UC0tKXRoaXMud29yZHNbUCtUXT10aGlzLndvcmRzW1BdO2ZvcihQPTA7UDxUO1ArKyl0aGlzLndvcmRzW1BdPTA7dGhpcy5sZW5ndGgrPVR9cmV0dXJuIHRoaXMuc3RyaXAoKX0sTi5wcm90''@;'; put 'put ''b3R5cGUuaXNobG49ZnVuY3Rpb24oeCl7cmV0dXJuIFkoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKHgpfSxOLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oeCxQLFYpe3ZhciBUO1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKSxUPVA/KFAtUCUyNikvMjY6MDt2YXIgUz14JTI2''@;'; put 'put ''LEY9TWF0aC5taW4oKHgtUykvMjYsdGhpcy5sZW5ndGgpLHllPTY3MTA4ODYzXjY3MTA4ODYzPj4+Uzw8UyxDZT1WO2lmKFQtPUYsVD1NYXRoLm1heCgwLFQpLENlKXtmb3IodmFyIERlPTA7RGU8RjtEZSsrKUNlLndvcmRzW0RlXT10aGlzLndvcmRzW0RlXTtDZS5sZW5ndGg9Rn1pZigwIT09''@;'; put 'put ''RilpZih0aGlzLmxlbmd0aD5GKWZvcih0aGlzLmxlbmd0aC09RixEZT0wO0RlPHRoaXMubGVuZ3RoO0RlKyspdGhpcy53b3Jkc1tEZV09dGhpcy53b3Jkc1tEZStGXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBQZT0wO2ZvcihEZT10aGlzLmxlbmd0aC0xO0RlPj0w''@;'; put 'put ''JiYoMCE9PVBlfHxEZT49VCk7RGUtLSl7dmFyIFFlPTB8dGhpcy53b3Jkc1tEZV07dGhpcy53b3Jkc1tEZV09UGU8PDI2LVN8UWU+Pj5TLFBlPVFlJnllfXJldHVybiBDZSYmMCE9PVBlJiYoQ2Uud29yZHNbQ2UubGVuZ3RoKytdPVBlKSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBd''@;'; put 'put ''PTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbih4LFAsVil7cmV0dXJuIFkoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKHgsUCxWKX0sTi5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlz''@;'; put 'put ''aGxuKHgpfSxOLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbih4KX0sTi5wcm90b3R5cGUuc2hybj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKHgpfSxOLnByb3RvdHlwZS51c2hybj1mdW5jdGlvbih4KXtyZXR1cm4g''@;'; put 'put ''dGhpcy5jbG9uZSgpLml1c2hybih4KX0sTi5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBQPXglMjYsVj0oeC1QKS8yNjtyZXR1cm4hKHRoaXMubGVuZ3RoPD1WfHwhKHRoaXMud29yZHNbVl0mMTw8UCkpfSxOLnByb3RvdHlwZS5p''@;'; put 'put ''bWFza249ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBQPXglMjYsVj0oeC1QKS8yNjtyZXR1cm4gWSgwPT09dGhpcy5uZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzIiksdGhpcy5sZW5ndGg8PVY/dGhpczooMCE9PVAm''@;'; put 'put ''JlYrKyx0aGlzLmxlbmd0aD1NYXRoLm1pbihWLHRoaXMubGVuZ3RoKSwwIT09UCYmKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0mPTY3MTA4ODYzXjY3MTA4ODYzPj4+UDw8UCksdGhpcy5zdHJpcCgpKX0sTi5wcm90b3R5cGUubWFza249ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUo''@;'; put 'put ''KS5pbWFza24oeCl9LE4ucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKHgpe3JldHVybiBZKCJudW1iZXIiPT10eXBlb2YgeCksWSh4PDY3MTA4ODY0KSx4PDA/dGhpcy5pc3VibigteCk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTx4Pyh0aGlz''@;'; put 'put ''LndvcmRzWzBdPXgtKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3Vibih4KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oeCl9LE4ucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbih4KXt0aGlzLndvcmRzWzBd''@;'; put 'put ''Kz14O2Zvcih2YXIgUD0wO1A8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbUF0+PTY3MTA4ODY0O1ArKyl0aGlzLndvcmRzW1BdLT02NzEwODg2NCxQPT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW1ArMV09MTp0aGlzLndvcmRzW1ArMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgo''@;'; put 'put ''dGhpcy5sZW5ndGgsUCsxKSx0aGlzfSxOLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbih4KXtpZihZKCJudW1iZXIiPT10eXBlb2YgeCksWSh4PDY3MTA4ODY0KSx4PDApcmV0dXJuIHRoaXMuaWFkZG4oLXgpO2lmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhp''@;'; put 'put ''cy5pYWRkbih4KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT14LDE9PT10aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vsc2UgZm9yKHZhciBQPTA7UDx0aGlzLmxlbmd0aCYmdGhp''@;'; put 'put ''cy53b3Jkc1tQXTwwO1ArKyl0aGlzLndvcmRzW1BdKz02NzEwODg2NCx0aGlzLndvcmRzW1ArMV0tPTE7cmV0dXJuIHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKHgpfSxOLnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9u''@;'; put 'put ''KHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4oeCl9LE4ucHJvdG90eXBlLmlhYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXN9LE4ucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfSxOLnByb3RvdHlwZS5faXNobG5z''@;'; put 'put ''dWJtdWw9ZnVuY3Rpb24oeCxQLFYpe3ZhciBULFM7dGhpcy5fZXhwYW5kKHgubGVuZ3RoK1YpO3ZhciB5ZT0wO2ZvcihUPTA7VDx4Lmxlbmd0aDtUKyspe1M9KDB8dGhpcy53b3Jkc1tUK1ZdKSt5ZTt2YXIgQ2U9KDB8eC53b3Jkc1tUXSkqUDt5ZT0oKFMtPTY3MTA4ODYzJkNlKT4+MjYpLShD''@;'; put 'put ''ZS82NzEwODg2NHwwKSx0aGlzLndvcmRzW1QrVl09NjcxMDg4NjMmU31mb3IoO1Q8dGhpcy5sZW5ndGgtVjtUKyspeWU9KFM9KDB8dGhpcy53b3Jkc1tUK1ZdKSt5ZSk+PjI2LHRoaXMud29yZHNbVCtWXT02NzEwODg2MyZTO2lmKDA9PT15ZSlyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihZKC0x''@;'; put 'put ''PT09eWUpLHllPTAsVD0wO1Q8dGhpcy5sZW5ndGg7VCsrKXllPShTPS0oMHx0aGlzLndvcmRzW1RdKSt5ZSk+PjI2LHRoaXMud29yZHNbVF09NjcxMDg4NjMmUztyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oeCxQKXt2''@;'; put 'put ''YXIgVixUPXRoaXMuY2xvbmUoKSxTPXgsRj0wfFMud29yZHNbUy5sZW5ndGgtMV07MCE9KFY9MjYtdGhpcy5fY291bnRCaXRzKEYpKSYmKFM9Uy51c2hsbihWKSxULml1c2hsbihWKSxGPTB8Uy53b3Jkc1tTLmxlbmd0aC0xXSk7dmFyIHllLENlPVQubGVuZ3RoLVMubGVuZ3RoO2lmKCJtb2Qi''@;'; put 'put ''IT09UCl7KHllPW5ldyBOKG51bGwpKS5sZW5ndGg9Q2UrMSx5ZS53b3Jkcz1uZXcgQXJyYXkoeWUubGVuZ3RoKTtmb3IodmFyIERlPTA7RGU8eWUubGVuZ3RoO0RlKyspeWUud29yZHNbRGVdPTB9dmFyIFBlPVQuY2xvbmUoKS5faXNobG5zdWJtdWwoUywxLENlKTswPT09UGUubmVnYXRpdmUm''@;'; put 'put ''JihUPVBlLHllJiYoeWUud29yZHNbQ2VdPTEpKTtmb3IodmFyIFFlPUNlLTE7UWU+PTA7UWUtLSl7dmFyICRlPTY3MTA4ODY0KigwfFQud29yZHNbUy5sZW5ndGgrUWVdKSsoMHxULndvcmRzW1MubGVuZ3RoK1FlLTFdKTtmb3IoJGU9TWF0aC5taW4oJGUvRnwwLDY3MTA4ODYzKSxULl9pc2hs''@;'; put 'put ''bnN1Ym11bChTLCRlLFFlKTswIT09VC5uZWdhdGl2ZTspJGUtLSxULm5lZ2F0aXZlPTAsVC5faXNobG5zdWJtdWwoUywxLFFlKSxULmlzWmVybygpfHwoVC5uZWdhdGl2ZV49MSk7eWUmJih5ZS53b3Jkc1tRZV09JGUpfXJldHVybiB5ZSYmeWUuc3RyaXAoKSxULnN0cmlwKCksImRpdiIhPT1Q''@;'; put 'put ''JiYwIT09ViYmVC5pdXNocm4oVikse2Rpdjp5ZXx8bnVsbCxtb2Q6VH19LE4ucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbih4LFAsVil7cmV0dXJuIFkoIXguaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgTigwKSxtb2Q6bmV3IE4oMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09''@;'; put 'put ''eC5uZWdhdGl2ZT8oRj10aGlzLm5lZygpLmRpdm1vZCh4LFApLCJtb2QiIT09UCYmKFQ9Ri5kaXYubmVnKCkpLCJkaXYiIT09UCYmKFM9Ri5tb2QubmVnKCksViYmMCE9PVMubmVnYXRpdmUmJlMuaWFkZCh4KSkse2RpdjpULG1vZDpTfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT14Lm5lZ2F0''@;'; put 'put ''aXZlPyhGPXRoaXMuZGl2bW9kKHgubmVnKCksUCksIm1vZCIhPT1QJiYoVD1GLmRpdi5uZWcoKSkse2RpdjpULG1vZDpGLm1vZH0pOjAhPSh0aGlzLm5lZ2F0aXZlJngubmVnYXRpdmUpPyhGPXRoaXMubmVnKCkuZGl2bW9kKHgubmVnKCksUCksImRpdiIhPT1QJiYoUz1GLm1vZC5uZWcoKSxW''@;'; put 'put ''JiYwIT09Uy5uZWdhdGl2ZSYmUy5pc3ViKHgpKSx7ZGl2OkYuZGl2LG1vZDpTfSk6eC5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKHgpPDA/e2RpdjpuZXcgTigwKSxtb2Q6dGhpc306MT09PXgubGVuZ3RoPyJkaXYiPT09UD97ZGl2OnRoaXMuZGl2bih4LndvcmRzWzBdKSxtb2Q6bnVs''@;'; put 'put ''bH06Im1vZCI9PT1QP3tkaXY6bnVsbCxtb2Q6bmV3IE4odGhpcy5tb2RuKHgud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oeC53b3Jkc1swXSksbW9kOm5ldyBOKHRoaXMubW9kbih4LndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoeCxQKTt2YXIgVCxTLEZ9LE4ucHJvdG90eXBlLmRpdj1m''@;'; put 'put ''dW5jdGlvbih4KXtyZXR1cm4gdGhpcy5kaXZtb2QoeCwiZGl2IiwhMSkuZGl2fSxOLnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZGl2bW9kKHgsIm1vZCIsITEpLm1vZH0sTi5wcm90b3R5cGUudW1vZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5kaXZtb2QoeCwibW9k''@;'; put 'put ''IiwhMCkubW9kfSxOLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbih4KXt2YXIgUD10aGlzLmRpdm1vZCh4KTtpZihQLm1vZC5pc1plcm8oKSlyZXR1cm4gUC5kaXY7dmFyIFY9MCE9PVAuZGl2Lm5lZ2F0aXZlP1AubW9kLmlzdWIoeCk6UC5tb2QsVD14LnVzaHJuKDEpLFM9eC5hbmRsbigx''@;'; put 'put ''KSxGPVYuY21wKFQpO3JldHVybiBGPDB8fDE9PT1TJiYwPT09Rj9QLmRpdjowIT09UC5kaXYubmVnYXRpdmU/UC5kaXYuaXN1Ym4oMSk6UC5kaXYuaWFkZG4oMSl9LE4ucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oeCl7WSh4PD02NzEwODg2Myk7Zm9yKHZhciBQPTY3MTA4ODY0JXgsVj0wLFQ9''@;'; put 'put ''dGhpcy5sZW5ndGgtMTtUPj0wO1QtLSlWPShQKlYrKDB8dGhpcy53b3Jkc1tUXSkpJXg7cmV0dXJuIFZ9LE4ucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKHgpe1koeDw9NjcxMDg4NjMpO2Zvcih2YXIgUD0wLFY9dGhpcy5sZW5ndGgtMTtWPj0wO1YtLSl7dmFyIFQ9KDB8dGhpcy53b3Jkc1tW''@;'; put 'put ''XSkrNjcxMDg4NjQqUDt0aGlzLndvcmRzW1ZdPVQveHwwLFA9VCV4fXJldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bih4KX0sTi5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbih4KXtZKDA9PT14Lm5lZ2F0aXZl''@;'; put 'put ''KSxZKCF4LmlzWmVybygpKTt2YXIgUD10aGlzLFY9eC5jbG9uZSgpO1A9MCE9PVAubmVnYXRpdmU/UC51bW9kKHgpOlAuY2xvbmUoKTtmb3IodmFyIFQ9bmV3IE4oMSksUz1uZXcgTigwKSxGPW5ldyBOKDApLHllPW5ldyBOKDEpLENlPTA7UC5pc0V2ZW4oKSYmVi5pc0V2ZW4oKTspUC5pdXNo''@;'; put 'put ''cm4oMSksVi5pdXNocm4oMSksKytDZTtmb3IodmFyIERlPVYuY2xvbmUoKSxQZT1QLmNsb25lKCk7IVAuaXNaZXJvKCk7KXtmb3IodmFyIFFlPTAsJGU9MTswPT0oUC53b3Jkc1swXSYkZSkmJlFlPDI2OysrUWUsJGU8PD0xKTtpZihRZT4wKWZvcihQLml1c2hybihRZSk7UWUtLSA+MDspKFQu''@;'; put 'put ''aXNPZGQoKXx8Uy5pc09kZCgpKSYmKFQuaWFkZChEZSksUy5pc3ViKFBlKSksVC5pdXNocm4oMSksUy5pdXNocm4oMSk7Zm9yKHZhciBndD0wLHd0PTE7MD09KFYud29yZHNbMF0md3QpJiZndDwyNjsrK2d0LHd0PDw9MSk7aWYoZ3Q+MClmb3IoVi5pdXNocm4oZ3QpO2d0LS0gPjA7KShGLmlz''@;'; put 'put ''T2RkKCl8fHllLmlzT2RkKCkpJiYoRi5pYWRkKERlKSx5ZS5pc3ViKFBlKSksRi5pdXNocm4oMSkseWUuaXVzaHJuKDEpO1AuY21wKFYpPj0wPyhQLmlzdWIoViksVC5pc3ViKEYpLFMuaXN1Yih5ZSkpOihWLmlzdWIoUCksRi5pc3ViKFQpLHllLmlzdWIoUykpfXJldHVybnthOkYsYjp5ZSxn''@;'; put 'put ''Y2Q6Vi5pdXNobG4oQ2UpfX0sTi5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKHgpe1koMD09PXgubmVnYXRpdmUpLFkoIXguaXNaZXJvKCkpO3ZhciBQPXRoaXMsVj14LmNsb25lKCk7UD0wIT09UC5uZWdhdGl2ZT9QLnVtb2QoeCk6UC5jbG9uZSgpO2Zvcih2YXIgVCxTPW5ldyBOKDEpLEY9''@;'; put 'put ''bmV3IE4oMCkseWU9Vi5jbG9uZSgpO1AuY21wbigxKT4wJiZWLmNtcG4oMSk+MDspe2Zvcih2YXIgQ2U9MCxEZT0xOzA9PShQLndvcmRzWzBdJkRlKSYmQ2U8MjY7KytDZSxEZTw8PTEpO2lmKENlPjApZm9yKFAuaXVzaHJuKENlKTtDZS0tID4wOylTLmlzT2RkKCkmJlMuaWFkZCh5ZSksUy5p''@;'; put 'put ''dXNocm4oMSk7Zm9yKHZhciBQZT0wLFFlPTE7MD09KFYud29yZHNbMF0mUWUpJiZQZTwyNjsrK1BlLFFlPDw9MSk7aWYoUGU+MClmb3IoVi5pdXNocm4oUGUpO1BlLS0gPjA7KUYuaXNPZGQoKSYmRi5pYWRkKHllKSxGLml1c2hybigxKTtQLmNtcChWKT49MD8oUC5pc3ViKFYpLFMuaXN1YihG''@;'; put 'put ''KSk6KFYuaXN1YihQKSxGLmlzdWIoUykpfXJldHVybihUPTA9PT1QLmNtcG4oMSk/UzpGKS5jbXBuKDApPDAmJlQuaWFkZCh4KSxUfSxOLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oeCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4geC5hYnMoKTtpZih4LmlzWmVybygpKXJldHVybiB0aGlzLmFi''@;'; put 'put ''cygpO3ZhciBQPXRoaXMuY2xvbmUoKSxWPXguY2xvbmUoKTtQLm5lZ2F0aXZlPTAsVi5uZWdhdGl2ZT0wO2Zvcih2YXIgVD0wO1AuaXNFdmVuKCkmJlYuaXNFdmVuKCk7VCsrKVAuaXVzaHJuKDEpLFYuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtQLmlzRXZlbigpOylQLml1c2hybigxKTtmb3Io''@;'; put 'put ''O1YuaXNFdmVuKCk7KVYuaXVzaHJuKDEpO3ZhciBTPVAuY21wKFYpO2lmKFM8MCl7dmFyIEY9UDtQPVYsVj1GfWVsc2UgaWYoMD09PVN8fDA9PT1WLmNtcG4oMSkpYnJlYWs7UC5pc3ViKFYpfXJldHVybiBWLml1c2hsbihUKX0sTi5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih4KXtyZXR1cm4g''@;'; put 'put ''dGhpcy5lZ2NkKHgpLmEudW1vZCh4KX0sTi5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMud29yZHNbMF0pfSxOLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLndvcmRzWzBdKX0sTi5wcm90b3R5cGUuYW5kbG49ZnVuY3Rp''@;'; put 'put ''b24oeCl7cmV0dXJuIHRoaXMud29yZHNbMF0meH0sTi5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgpO3ZhciBQPXglMjYsVj0oeC1QKS8yNixUPTE8PFA7aWYodGhpcy5sZW5ndGg8PVYpcmV0dXJuIHRoaXMuX2V4cGFuZChWKzEpLHRoaXMud29yZHNb''@;'; put 'put ''Vl18PVQsdGhpcztmb3IodmFyIFM9VCxGPVY7MCE9PVMmJkY8dGhpcy5sZW5ndGg7RisrKXt2YXIgeWU9MHx0aGlzLndvcmRzW0ZdO1M9KHllKz1TKT4+PjI2LHRoaXMud29yZHNbRl09eWUmPTY3MTA4ODYzfXJldHVybiAwIT09UyYmKHRoaXMud29yZHNbRl09Uyx0aGlzLmxlbmd0aCsrKSx0''@;'; put 'put ''aGlzfSxOLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sTi5wcm90b3R5cGUuY21wbj1mdW5jdGlvbih4KXt2YXIgUCxWPXg8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIVYpcmV0dXJuLTE7aWYoMD09PXRoaXMu''@;'; put 'put ''bmVnYXRpdmUmJlYpcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpUD0xO2Vsc2V7ViYmKHg9LXgpLFkoeDw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIFQ9MHx0aGlzLndvcmRzWzBdO1A9VD09PXg/MDpUPHg/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVn''@;'; put 'put ''YXRpdmU/MHwtUDpQfSxOLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oeCl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT14Lm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09eC5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgUD10aGlzLnVjbXAoeCk7cmV0dXJuIDAhPT10''@;'; put 'put ''aGlzLm5lZ2F0aXZlPzB8LVA6UH0sTi5wcm90b3R5cGUudWNtcD1mdW5jdGlvbih4KXtpZih0aGlzLmxlbmd0aD54Lmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDx4Lmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIFA9MCxWPXRoaXMubGVuZ3RoLTE7Vj49MDtWLS0pe3ZhciBUPTB8dGhp''@;'; put 'put ''cy53b3Jkc1tWXSxTPTB8eC53b3Jkc1tWXTtpZihUIT09Uyl7VDxTP1A9LTE6VD5TJiYoUD0xKTticmVha319cmV0dXJuIFB9LE4ucHJvdG90eXBlLmd0bj1mdW5jdGlvbih4KXtyZXR1cm4gMT09PXRoaXMuY21wbih4KX0sTi5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oeCl7cmV0dXJuIDE9PT10''@;'; put 'put ''aGlzLmNtcCh4KX0sTi5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbXBuKHgpPj0wfSxOLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wKHgpPj0wfSxOLnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oeCl7cmV0dXJuLTE9PT10aGlzLmNtcG4o''@;'; put 'put ''eCl9LE4ucHJvdG90eXBlLmx0PWZ1bmN0aW9uKHgpe3JldHVybi0xPT09dGhpcy5jbXAoeCl9LE4ucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wbih4KTw9MH0sTi5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNtcCh4KTw9MH0sTi5wcm90''@;'; put 'put ''b3R5cGUuZXFuPWZ1bmN0aW9uKHgpe3JldHVybiAwPT09dGhpcy5jbXBuKHgpfSxOLnByb3RvdHlwZS5lcT1mdW5jdGlvbih4KXtyZXR1cm4gMD09PXRoaXMuY21wKHgpfSxOLnJlZD1mdW5jdGlvbih4KXtyZXR1cm4gbmV3IGVlKHgpfSxOLnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbih4KXty''@;'; put 'put ''ZXR1cm4gWSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSxZKDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLHguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZCh4KX0sTi5wcm90b3R5cGUuZnJvbVJlZD1m''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LE4ucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5yZWQ9eCx0''@;'; put 'put ''aGlzfSxOLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbih4KXtyZXR1cm4gWSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZCh4KX0sTi5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVk''@;'; put 'put ''LCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0''@;'; put 'put ''aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJl''@;'; put 'put ''ZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0''@;'; put 'put ''aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLHgpLHRoaXMucmVkLm11bCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRJTXVsPWZ1''@;'; put 'put ''bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx4KSx0aGlzLnJlZC5pbXVsKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJy''@;'; put 'put ''ZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxOLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJz''@;'; put 'put ''IiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sTi5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMu''@;'; put 'put ''cmVkLnNxcnQodGhpcyl9LE4ucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxOLnByb3RvdHlwZS5yZWRO''@;'; put 'put ''ZWc9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sTi5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkJiYh''@;'; put 'put ''eC5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMseCl9O3ZhciBJZT17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIFRlKHgsUCl7dGhpcy5uYW1lPXgsdGhpcy5wPW5ldyBO''@;'; put 'put ''KFAsMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBOKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBNZSgpe1RlLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZm''@;'; put 'put ''ZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24gaGUoKXtUZS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIE8oKXtUZS5jYWxsKHRo''@;'; put 'put ''aXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIHooKXtUZS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZm''@;'; put 'put ''ZmZlZCIpfWZ1bmN0aW9uIGVlKHgpe2lmKCJzdHJpbmciPT10eXBlb2YgeCl7dmFyIFA9Ti5fcHJpbWUoeCk7dGhpcy5tPVAucCx0aGlzLnByaW1lPVB9ZWxzZSBZKHguZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09eCx0aGlzLnByaW1lPW51bGx9ZnVu''@;'; put 'put ''Y3Rpb24gbmUoeCl7ZWUuY2FsbCh0aGlzLHgpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IE4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMu''@;'; put 'put ''ci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9VGUucHJv''@;'; put 'put ''dG90eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgeD1uZXcgTihudWxsKTtyZXR1cm4geC53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLHh9LFRlLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKHgpe3ZhciBQLFY9eDtkb3t0aGlzLnNwbGl0KFYsdGhpcy50bXApLFA9KFY9''@;'; put 'put ''KFY9dGhpcy5pbXVsSyhWKSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxlKFA+dGhpcy5uKTt2YXIgVD1QPHRoaXMubj8tMTpWLnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PVQ/KFYud29yZHNbMF09MCxWLmxlbmd0aD0xKTpUPjA/Vi5pc3ViKHRoaXMucCk6dm9pZCAwIT09Vi5z''@;'; put 'put ''dHJpcD9WLnN0cmlwKCk6Vi5fc3RyaXAoKSxWfSxUZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oeCxQKXt4Lml1c2hybih0aGlzLm4sMCxQKX0sVGUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHgpe3JldHVybiB4LmltdWwodGhpcy5rKX0sVyhNZSxUZSksTWUucHJvdG90eXBlLnNwbGl0''@;'; put 'put ''PWZ1bmN0aW9uKHgsUCl7Zm9yKHZhciBWPTQxOTQzMDMsVD1NYXRoLm1pbih4Lmxlbmd0aCw5KSxTPTA7UzxUO1MrKylQLndvcmRzW1NdPXgud29yZHNbU107aWYoUC5sZW5ndGg9VCx4Lmxlbmd0aDw9OSlyZXR1cm4geC53b3Jkc1swXT0wLHZvaWQoeC5sZW5ndGg9MSk7dmFyIEY9eC53b3Jk''@;'; put 'put ''c1s5XTtmb3IoUC53b3Jkc1tQLmxlbmd0aCsrXT1GJlYsUz0xMDtTPHgubGVuZ3RoO1MrKyl7dmFyIHllPTB8eC53b3Jkc1tTXTt4LndvcmRzW1MtMTBdPSh5ZSZWKTw8NHxGPj4+MjIsRj15ZX14LndvcmRzW1MtMTBdPUY+Pj49MjIseC5sZW5ndGgtPTA9PT1GJiZ4Lmxlbmd0aD4xMD8xMDo5''@;'; put 'put ''fSxNZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oeCl7eC53b3Jkc1t4Lmxlbmd0aF09MCx4LndvcmRzW3gubGVuZ3RoKzFdPTAseC5sZW5ndGgrPTI7Zm9yKHZhciBQPTAsVj0wO1Y8eC5sZW5ndGg7VisrKXt2YXIgVD0wfHgud29yZHNbVl07eC53b3Jkc1tWXT02NzEwODg2MyYoUCs9OTc3''@;'; put 'put ''KlQpLFA9NjQqVCsoUC82NzEwODg2NHwwKX1yZXR1cm4gMD09PXgud29yZHNbeC5sZW5ndGgtMV0mJih4Lmxlbmd0aC0tLDA9PT14LndvcmRzW3gubGVuZ3RoLTFdJiZ4Lmxlbmd0aC0tKSx4fSxXKGhlLFRlKSxXKE8sVGUpLFcoeixUZSksei5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oeCl7''@;'; put 'put ''Zm9yKHZhciBQPTAsVj0wO1Y8eC5sZW5ndGg7VisrKXt2YXIgVD0xOSooMHx4LndvcmRzW1ZdKStQLFM9NjcxMDg4NjMmVDtUPj4+PTI2LHgud29yZHNbVl09UyxQPVR9cmV0dXJuIDAhPT1QJiYoeC53b3Jkc1t4Lmxlbmd0aCsrXT1QKSx4fSxOLl9wcmltZT1mdW5jdGlvbih4KXtpZihJZVt4''@;'; put 'put ''XSlyZXR1cm4gSWVbeF07dmFyIFA7aWYoImsyNTYiPT09eClQPW5ldyBNZTtlbHNlIGlmKCJwMjI0Ij09PXgpUD1uZXcgaGU7ZWxzZSBpZigicDE5MiI9PT14KVA9bmV3IE87ZWxzZXtpZigicDI1NTE5IiE9PXgpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIreCk7UD1uZXcgen1y''@;'; put 'put ''ZXR1cm4gSWVbeF09UCxQfSxlZS5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oeCl7WSgwPT09eC5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxZKHgucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LGVlLnByb3RvdHlwZS5fdmVyaWZ5''@;'; put 'put ''Mj1mdW5jdGlvbih4LFApe1koMD09KHgubmVnYXRpdmV8UC5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksWSh4LnJlZCYmeC5yZWQ9PT1QLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxlZS5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbih4''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UoeCkuX2ZvcmNlUmVkKHRoaXMpOngudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKX0sZWUucHJvdG90eXBlLm5lZz1mdW5jdGlvbih4KXtyZXR1cm4geC5pc1plcm8oKT94LmNsb25lKCk6dGhpcy5tLnN1Yih4KS5fZm9y''@;'; put 'put ''Y2VSZWQodGhpcyl9LGVlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7dmFyIFY9eC5hZGQoUCk7cmV0dXJuIFYuY21wKHRoaXMubSk+PTAmJlYuaXN1Yih0aGlzLm0pLFYuX2ZvcmNlUmVkKHRoaXMpfSxlZS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbih4''@;'; put 'put ''LFApe3RoaXMuX3ZlcmlmeTIoeCxQKTt2YXIgVj14LmlhZGQoUCk7cmV0dXJuIFYuY21wKHRoaXMubSk+PTAmJlYuaXN1Yih0aGlzLm0pLFZ9LGVlLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7dmFyIFY9eC5zdWIoUCk7cmV0dXJuIFYuY21wbigwKTww''@;'; put 'put ''JiZWLmlhZGQodGhpcy5tKSxWLl9mb3JjZVJlZCh0aGlzKX0sZWUucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7dmFyIFY9eC5pc3ViKFApO3JldHVybiBWLmNtcG4oMCk8MCYmVi5pYWRkKHRoaXMubSksVn0sZWUucHJvdG90eXBlLnNobD1mdW5jdGlv''@;'; put 'put ''bih4LFApe3JldHVybiB0aGlzLl92ZXJpZnkxKHgpLHRoaXMuaW1vZCh4LnVzaGxuKFApKX0sZWUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gdGhpcy5fdmVyaWZ5Mih4LFApLHRoaXMuaW1vZCh4LmltdWwoUCkpfSxlZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHgsUCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX3ZlcmlmeTIoeCxQKSx0aGlzLmltb2QoeC5tdWwoUCkpfSxlZS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5pbXVsKHgseC5jbG9uZSgpKX0sZWUucHJvdG90eXBlLnNxcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5tdWwoeCx4KX0sZWUucHJv''@;'; put 'put ''dG90eXBlLnNxcnQ9ZnVuY3Rpb24oeCl7aWYoeC5pc1plcm8oKSlyZXR1cm4geC5jbG9uZSgpO3ZhciBQPXRoaXMubS5hbmRsbigzKTtpZihZKFAlMj09MSksMz09PVApe3ZhciBWPXRoaXMubS5hZGQobmV3IE4oMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coeCxWKX1mb3IodmFyIFQ9''@;'; put 'put ''dGhpcy5tLnN1Ym4oMSksUz0wOyFULmlzWmVybygpJiYwPT09VC5hbmRsbigxKTspUysrLFQuaXVzaHJuKDEpO1koIVQuaXNaZXJvKCkpO3ZhciBGPW5ldyBOKDEpLnRvUmVkKHRoaXMpLHllPUYucmVkTmVnKCksQ2U9dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpLERlPXRoaXMubS5iaXRMZW5n''@;'; put 'put ''dGgoKTtmb3IoRGU9bmV3IE4oMipEZSpEZSkudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KERlLENlKS5jbXAoeWUpOylEZS5yZWRJQWRkKHllKTtmb3IodmFyIFBlPXRoaXMucG93KERlLFQpLFFlPXRoaXMucG93KHgsVC5hZGRuKDEpLml1c2hybigxKSksJGU9dGhpcy5wb3coeCxUKSxndD1T''@;'; put 'put ''OzAhPT0kZS5jbXAoRik7KXtmb3IodmFyIHd0PSRlLG10PTA7MCE9PXd0LmNtcChGKTttdCsrKXd0PXd0LnJlZFNxcigpO1kobXQ8Z3QpO3ZhciB2dD10aGlzLnBvdyhQZSxuZXcgTigxKS5pdXNobG4oZ3QtbXQtMSkpO1FlPVFlLnJlZE11bCh2dCksUGU9dnQucmVkU3FyKCksJGU9JGUucmVk''@;'; put 'put ''TXVsKFBlKSxndD1tdH1yZXR1cm4gUWV9LGVlLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHgpe3ZhciBQPXguX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT1QLm5lZ2F0aXZlPyhQLm5lZ2F0aXZlPTAsdGhpcy5pbW9kKFApLnJlZE5lZygpKTp0aGlzLmltb2QoUCl9LGVlLnByb3RvdHlwZS5w''@;'; put 'put ''b3c9ZnVuY3Rpb24oeCxQKXtpZihQLmlzWmVybygpKXJldHVybiBuZXcgTigxKS50b1JlZCh0aGlzKTtpZigwPT09UC5jbXBuKDEpKXJldHVybiB4LmNsb25lKCk7dmFyIFY9bmV3IEFycmF5KDE2KTtWWzBdPW5ldyBOKDEpLnRvUmVkKHRoaXMpLFZbMV09eDtmb3IodmFyIFQ9MjtUPFYubGVu''@;'; put 'put ''Z3RoO1QrKylWW1RdPXRoaXMubXVsKFZbVC0xXSx4KTt2YXIgUz1WWzBdLEY9MCx5ZT0wLENlPVAuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1DZSYmKENlPTI2KSxUPVAubGVuZ3RoLTE7VD49MDtULS0pe2Zvcih2YXIgRGU9UC53b3Jkc1tUXSxQZT1DZS0xO1BlPj0wO1BlLS0pe3ZhciBRZT1E''@;'; put 'put ''ZT4+UGUmMTtTIT09VlswXSYmKFM9dGhpcy5zcXIoUykpLDAhPT1RZXx8MCE9PUY/KEY8PD0xLEZ8PVFlLCg0PT0rK3llfHwwPT09VCYmMD09PVBlKSYmKFM9dGhpcy5tdWwoUyxWW0ZdKSx5ZT0wLEY9MCkpOnllPTB9Q2U9MjZ9cmV0dXJuIFN9LGVlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVu''@;'; put 'put ''Y3Rpb24oeCl7dmFyIFA9eC51bW9kKHRoaXMubSk7cmV0dXJuIFA9PT14P1AuY2xvbmUoKTpQfSxlZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oeCl7dmFyIFA9eC5jbG9uZSgpO3JldHVybiBQLnJlZD1udWxsLFB9LE4ubW9udD1mdW5jdGlvbih4KXtyZXR1cm4gbmV3IG5lKHgp''@;'; put 'put ''fSxXKG5lLGVlKSxuZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmltb2QoeC51c2hsbih0aGlzLnNoaWZ0KSl9LG5lLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbih4KXt2YXIgUD10aGlzLmltb2QoeC5tdWwodGhpcy5yaW52KSk7cmV0dXJuIFAu''@;'; put 'put ''cmVkPW51bGwsUH0sbmUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oeCxQKXtpZih4LmlzWmVybygpfHxQLmlzWmVybygpKXJldHVybiB4LndvcmRzWzBdPTAseC5sZW5ndGg9MSx4O3ZhciBWPXguaW11bChQKSxUPVYubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRo''@;'; put 'put ''aXMuc2hpZnQpLm11bCh0aGlzLm0pLFM9Vi5pc3ViKFQpLml1c2hybih0aGlzLnNoaWZ0KSxGPVM7cmV0dXJuIFMuY21wKHRoaXMubSk+PTA/Rj1TLmlzdWIodGhpcy5tKTpTLmNtcG4oMCk8MCYmKEY9Uy5pYWRkKHRoaXMubSkpLEYuX2ZvcmNlUmVkKHRoaXMpfSxuZS5wcm90b3R5cGUubXVs''@;'; put 'put ''PWZ1bmN0aW9uKHgsUCl7aWYoeC5pc1plcm8oKXx8UC5pc1plcm8oKSlyZXR1cm4gbmV3IE4oMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBWPXgubXVsKFApLFQ9Vi5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksUz1WLmlzdWIo''@;'; put 'put ''VCkuaXVzaHJuKHRoaXMuc2hpZnQpLEY9UztyZXR1cm4gUy5jbXAodGhpcy5tKT49MD9GPVMuaXN1Yih0aGlzLm0pOlMuY21wbigwKTwwJiYoRj1TLmlhZGQodGhpcy5tKSksRi5fZm9yY2VSZWQodGhpcyl9LG5lLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmltb2Qo''@;'; put 'put ''eC5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KFU9ai5ubWQoVSksdGhpcyl9LDY5NDg6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9UTtyZS52ZXJzaW9uPWooODU5NykuaTgscmUudXRpbHM9aig5NTMpLHJlLnJhbmQ9aig5OTMxKSxyZS5jdXJ2''@;'; put 'put ''ZT1qKDgyNTQpLHJlLmN1cnZlcz1qKDU0MjcpLHJlLmVjPWooNzk1NCkscmUuZWRkc2E9aig1OTgwKX0sNDkxODooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDM3ODUpLGFlPWooOTUzKSxZPWFlLmdldE5BRixXPWFlLmdldEpTRixOPWFlLmFzc2VydDtmdW5jdGlvbiB0ZShKLHNl''@;'; put 'put ''KXt0aGlzLnR5cGU9Six0aGlzLnA9bmV3IHJlKHNlLnAsMTYpLHRoaXMucmVkPXNlLnByaW1lP3JlLnJlZChzZS5wcmltZSk6cmUubW9udCh0aGlzLnApLHRoaXMuemVybz1uZXcgcmUoMCkudG9SZWQodGhpcy5yZWQpLHRoaXMub25lPW5ldyByZSgxKS50b1JlZCh0aGlzLnJlZCksdGhpcy50''@;'; put 'put ''d289bmV3IHJlKDIpLnRvUmVkKHRoaXMucmVkKSx0aGlzLm49c2UubiYmbmV3IHJlKHNlLm4sMTYpLHRoaXMuZz1zZS5nJiZ0aGlzLnBvaW50RnJvbUpTT04oc2UuZyxzZS5nUmVkKSx0aGlzLl93bmFmVDE9bmV3IEFycmF5KDQpLHRoaXMuX3duYWZUMj1uZXcgQXJyYXkoNCksdGhpcy5fd25h''@;'; put 'put ''ZlQzPW5ldyBBcnJheSg0KSx0aGlzLl93bmFmVDQ9bmV3IEFycmF5KDQpLHRoaXMuX2JpdExlbmd0aD10aGlzLm4/dGhpcy5uLmJpdExlbmd0aCgpOjA7dmFyIG9lPXRoaXMubiYmdGhpcy5wLmRpdih0aGlzLm4pOyFvZXx8b2UuY21wbigxMDApPjA/dGhpcy5yZWROPW51bGw6KHRoaXMuX21h''@;'; put 'put ''eHdlbGxUcmljaz0hMCx0aGlzLnJlZE49dGhpcy5uLnRvUmVkKHRoaXMucmVkKSl9ZnVuY3Rpb24gSyhKLHNlKXt0aGlzLmN1cnZlPUosdGhpcy50eXBlPXNlLHRoaXMucHJlY29tcHV0ZWQ9bnVsbH1VLmV4cG9ydHM9dGUsdGUucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uKCl7dGhyb3cgbmV3''@;'; put 'put ''IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX0sdGUucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX0sdGUucHJvdG90eXBlLl9maXhlZE5hZk11bD1mdW5jdGlvbihKLHNlKXtOKEoucHJlY29tcHV0ZWQpO3ZhciBvZT1KLl9n''@;'; put 'put ''ZXREb3VibGVzKCksY2U9WShzZSwxLHRoaXMuX2JpdExlbmd0aCksZGU9KDE8PG9lLnN0ZXArMSktKG9lLnN0ZXAlMj09MD8yOjEpO2RlLz0zO3ZhciB2ZSxBZSxrZT1bXTtmb3IodmU9MDt2ZTxjZS5sZW5ndGg7dmUrPW9lLnN0ZXApe0FlPTA7Zm9yKHZhciBTZT12ZStvZS5zdGVwLTE7U2U+''@;'; put 'put ''PXZlO1NlLS0pQWU9KEFlPDwxKStjZVtTZV07a2UucHVzaChBZSl9Zm9yKHZhciBJZT10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCksVGU9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpLE1lPWRlO01lPjA7TWUtLSl7Zm9yKHZlPTA7dmU8a2UubGVuZ3RoO3ZlKyspKEFlPWtlW3ZlXSk9''@;'; put 'put ''PT1NZT9UZT1UZS5taXhlZEFkZChvZS5wb2ludHNbdmVdKTpBZT09PS1NZSYmKFRlPVRlLm1peGVkQWRkKG9lLnBvaW50c1t2ZV0ubmVnKCkpKTtJZT1JZS5hZGQoVGUpfXJldHVybiBJZS50b1AoKX0sdGUucHJvdG90eXBlLl93bmFmTXVsPWZ1bmN0aW9uKEosc2Upe2Zvcih2YXIgb2U9NCxj''@;'; put 'put ''ZT1KLl9nZXROQUZQb2ludHMob2UpLGRlPWNlLnBvaW50cyx2ZT1ZKHNlLG9lPWNlLnduZCx0aGlzLl9iaXRMZW5ndGgpLEFlPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKSxrZT12ZS5sZW5ndGgtMTtrZT49MDtrZS0tKXtmb3IodmFyIFNlPTA7a2U+PTAmJjA9PT12ZVtrZV07a2UtLSlT''@;'; put 'put ''ZSsrO2lmKGtlPj0wJiZTZSsrLEFlPUFlLmRibHAoU2UpLGtlPDApYnJlYWs7dmFyIEllPXZlW2tlXTtOKDAhPT1JZSksQWU9ImFmZmluZSI9PT1KLnR5cGU/QWUubWl4ZWRBZGQoSWU+MD9kZVtJZS0xPj4xXTpkZVstSWUtMT4+MV0ubmVnKCkpOkFlLmFkZChJZT4wP2RlW0llLTE+PjFdOmRl''@;'; put 'put ''Wy1JZS0xPj4xXS5uZWcoKSl9cmV0dXJuImFmZmluZSI9PT1KLnR5cGU/QWUudG9QKCk6QWV9LHRlLnByb3RvdHlwZS5fd25hZk11bEFkZD1mdW5jdGlvbihKLHNlLG9lLGNlLGRlKXt2YXIgdmUsQWUsa2UsU2U9dGhpcy5fd25hZlQxLEllPXRoaXMuX3duYWZUMixUZT10aGlzLl93bmFmVDMs''@;'; put 'put ''TWU9MDtmb3IodmU9MDt2ZTxjZTt2ZSsrKXt2YXIgaGU9KGtlPXNlW3ZlXSkuX2dldE5BRlBvaW50cyhKKTtTZVt2ZV09aGUud25kLEllW3ZlXT1oZS5wb2ludHN9Zm9yKHZlPWNlLTE7dmU+PTE7dmUtPTIpe3ZhciBPPXZlLTEsej12ZTtpZigxPT09U2VbT10mJjE9PT1TZVt6XSl7dmFyIGVl''@;'; put 'put ''PVtzZVtPXSxudWxsLG51bGwsc2Vbel1dOzA9PT1zZVtPXS55LmNtcChzZVt6XS55KT8oZWVbMV09c2VbT10uYWRkKHNlW3pdKSxlZVsyXT1zZVtPXS50b0ooKS5taXhlZEFkZChzZVt6XS5uZWcoKSkpOjA9PT1zZVtPXS55LmNtcChzZVt6XS55LnJlZE5lZygpKT8oZWVbMV09c2VbT10udG9K''@;'; put 'put ''KCkubWl4ZWRBZGQoc2Vbel0pLGVlWzJdPXNlW09dLmFkZChzZVt6XS5uZWcoKSkpOihlZVsxXT1zZVtPXS50b0ooKS5taXhlZEFkZChzZVt6XSksZWVbMl09c2VbT10udG9KKCkubWl4ZWRBZGQoc2Vbel0ubmVnKCkpKTt2YXIgbmU9Wy0zLC0xLC01LC03LDAsNyw1LDEsM10seD1XKG9lW09d''@;'; put 'put ''LG9lW3pdKTtmb3IoTWU9TWF0aC5tYXgoeFswXS5sZW5ndGgsTWUpLFRlW09dPW5ldyBBcnJheShNZSksVGVbel09bmV3IEFycmF5KE1lKSxBZT0wO0FlPE1lO0FlKyspVGVbT11bQWVdPW5lWzMqKDErKDB8eFswXVtBZV0pKSsoMSsoMHx4WzFdW0FlXSkpXSxUZVt6XVtBZV09MCxJZVtPXT1l''@;'; put 'put ''ZX1lbHNlIFRlW09dPVkob2VbT10sU2VbT10sdGhpcy5fYml0TGVuZ3RoKSxUZVt6XT1ZKG9lW3pdLFNlW3pdLHRoaXMuX2JpdExlbmd0aCksTWU9TWF0aC5tYXgoVGVbT10ubGVuZ3RoLE1lKSxNZT1NYXRoLm1heChUZVt6XS5sZW5ndGgsTWUpfXZhciBUPXRoaXMuanBvaW50KG51bGwsbnVs''@;'; put 'put ''bCxudWxsKSxTPXRoaXMuX3duYWZUNDtmb3IodmU9TWU7dmU+PTA7dmUtLSl7Zm9yKHZhciBGPTA7dmU+PTA7KXt2YXIgeWU9ITA7Zm9yKEFlPTA7QWU8Y2U7QWUrKylTW0FlXT0wfFRlW0FlXVt2ZV0sMCE9PVNbQWVdJiYoeWU9ITEpO2lmKCF5ZSlicmVhaztGKyssdmUtLX1pZih2ZT49MCYm''@;'; put 'put ''RisrLFQ9VC5kYmxwKEYpLHZlPDApYnJlYWs7Zm9yKEFlPTA7QWU8Y2U7QWUrKyl7dmFyIENlPVNbQWVdOzAhPT1DZSYmKENlPjA/a2U9SWVbQWVdW0NlLTE+PjFdOkNlPDAmJihrZT1JZVtBZV1bLUNlLTE+PjFdLm5lZygpKSxUPSJhZmZpbmUiPT09a2UudHlwZT9ULm1peGVkQWRkKGtlKTpU''@;'; put 'put ''LmFkZChrZSkpfX1mb3IodmU9MDt2ZTxjZTt2ZSsrKUllW3ZlXT1udWxsO3JldHVybiBkZT9UOlQudG9QKCl9LHRlLkJhc2VQb2ludD1LLEsucHJvdG90eXBlLmVxPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX0sSy5wcm90b3R5cGUudmFsaWRhdGU9ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJ2ZS52YWxpZGF0ZSh0aGlzKX0sdGUucHJvdG90eXBlLmRlY29kZVBvaW50PWZ1bmN0aW9uKEosc2Upe0o9YWUudG9BcnJheShKLHNlKTt2YXIgb2U9dGhpcy5wLmJ5dGVMZW5ndGgoKTtpZigoND09PUpbMF18fDY9PT1KWzBdfHw3PT09SlswXSkmJkou''@;'; put 'put ''bGVuZ3RoLTE9PTIqb2UpcmV0dXJuIDY9PT1KWzBdP04oSltKLmxlbmd0aC0xXSUyPT0wKTo3PT09SlswXSYmTihKW0oubGVuZ3RoLTFdJTI9PTEpLHRoaXMucG9pbnQoSi5zbGljZSgxLDErb2UpLEouc2xpY2UoMStvZSwxKzIqb2UpKTtpZigoMj09PUpbMF18fDM9PT1KWzBdKSYmSi5sZW5n''@;'; put 'put ''dGgtMT09PW9lKXJldHVybiB0aGlzLnBvaW50RnJvbVgoSi5zbGljZSgxLDErb2UpLDM9PT1KWzBdKTt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcG9pbnQgZm9ybWF0Iil9LEsucHJvdG90eXBlLmVuY29kZUNvbXByZXNzZWQ9ZnVuY3Rpb24oSil7cmV0dXJuIHRoaXMuZW5jb2RlKEosITAp''@;'; put 'put ''fSxLLnByb3RvdHlwZS5fZW5jb2RlPWZ1bmN0aW9uKEope3ZhciBzZT10aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpLG9lPXRoaXMuZ2V0WCgpLnRvQXJyYXkoImJlIixzZSk7cmV0dXJuIEo/W3RoaXMuZ2V0WSgpLmlzRXZlbigpPzI6M10uY29uY2F0KG9lKTpbNF0uY29uY2F0KG9lLHRoaXMu''@;'; put 'put ''Z2V0WSgpLnRvQXJyYXkoImJlIixzZSkpfSxLLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24oSixzZSl7cmV0dXJuIGFlLmVuY29kZSh0aGlzLl9lbmNvZGUoc2UpLEopfSxLLnByb3RvdHlwZS5wcmVjb21wdXRlPWZ1bmN0aW9uKEope2lmKHRoaXMucHJlY29tcHV0ZWQpcmV0dXJuIHRoaXM7''@;'; put 'put ''dmFyIHNlPXtkb3VibGVzOm51bGwsbmFmOm51bGwsYmV0YTpudWxsfTtyZXR1cm4gc2UubmFmPXRoaXMuX2dldE5BRlBvaW50cyg4KSxzZS5kb3VibGVzPXRoaXMuX2dldERvdWJsZXMoNCxKKSxzZS5iZXRhPXRoaXMuX2dldEJldGEoKSx0aGlzLnByZWNvbXB1dGVkPXNlLHRoaXN9LEsucHJv''@;'; put 'put ''dG90eXBlLl9oYXNEb3VibGVzPWZ1bmN0aW9uKEope2lmKCF0aGlzLnByZWNvbXB1dGVkKXJldHVybiExO3ZhciBzZT10aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7cmV0dXJuISFzZSYmc2UucG9pbnRzLmxlbmd0aD49TWF0aC5jZWlsKChKLmJpdExlbmd0aCgpKzEpL3NlLnN0ZXApfSxLLnBy''@;'; put 'put ''b3RvdHlwZS5fZ2V0RG91Ymxlcz1mdW5jdGlvbihKLHNlKXtpZih0aGlzLnByZWNvbXB1dGVkJiZ0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMpcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcztmb3IodmFyIG9lPVt0aGlzXSxjZT10aGlzLGRlPTA7ZGU8c2U7ZGUrPUope2Zvcih2YXIg''@;'; put 'put ''dmU9MDt2ZTxKO3ZlKyspY2U9Y2UuZGJsKCk7b2UucHVzaChjZSl9cmV0dXJue3N0ZXA6Sixwb2ludHM6b2V9fSxLLnByb3RvdHlwZS5fZ2V0TkFGUG9pbnRzPWZ1bmN0aW9uKEope2lmKHRoaXMucHJlY29tcHV0ZWQmJnRoaXMucHJlY29tcHV0ZWQubmFmKXJldHVybiB0aGlzLnByZWNvbXB1''@;'; put 'put ''dGVkLm5hZjtmb3IodmFyIHNlPVt0aGlzXSxvZT0oMTw8SiktMSxjZT0xPT09b2U/bnVsbDp0aGlzLmRibCgpLGRlPTE7ZGU8b2U7ZGUrKylzZVtkZV09c2VbZGUtMV0uYWRkKGNlKTtyZXR1cm57d25kOkoscG9pbnRzOnNlfX0sSy5wcm90b3R5cGUuX2dldEJldGE9ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gbnVsbH0sSy5wcm90b3R5cGUuZGJscD1mdW5jdGlvbihKKXtmb3IodmFyIHNlPXRoaXMsb2U9MDtvZTxKO29lKyspc2U9c2UuZGJsKCk7cmV0dXJuIHNlfX0sMTEzODooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDk1MyksYWU9aigzNzg1KSxZPWooNTcxNyksVz1qKDQ5MTgp''@;'; put 'put ''LE49cmUuYXNzZXJ0O2Z1bmN0aW9uIHRlKEope3RoaXMudHdpc3RlZD0xIT0oMHxKLmEpLHRoaXMubU9uZUE9dGhpcy50d2lzdGVkJiYtMT09KDB8Si5hKSx0aGlzLmV4dGVuZGVkPXRoaXMubU9uZUEsVy5jYWxsKHRoaXMsImVkd2FyZHMiLEopLHRoaXMuYT1uZXcgYWUoSi5hLDE2KS51bW9k''@;'; put 'put ''KHRoaXMucmVkLm0pLHRoaXMuYT10aGlzLmEudG9SZWQodGhpcy5yZWQpLHRoaXMuYz1uZXcgYWUoSi5jLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5jMj10aGlzLmMucmVkU3FyKCksdGhpcy5kPW5ldyBhZShKLmQsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmRkPXRoaXMuZC5yZWRBZGQo''@;'; put 'put ''dGhpcy5kKSxOKCF0aGlzLnR3aXN0ZWR8fDA9PT10aGlzLmMuZnJvbVJlZCgpLmNtcG4oMSkpLHRoaXMub25lQz0xPT0oMHxKLmMpfWZ1bmN0aW9uIEsoSixzZSxvZSxjZSxkZSl7Vy5CYXNlUG9pbnQuY2FsbCh0aGlzLEosInByb2plY3RpdmUiKSxudWxsPT09c2UmJm51bGw9PT1vZSYmbnVs''@;'; put 'put ''bD09PWNlPyh0aGlzLng9dGhpcy5jdXJ2ZS56ZXJvLHRoaXMueT10aGlzLmN1cnZlLm9uZSx0aGlzLno9dGhpcy5jdXJ2ZS5vbmUsdGhpcy50PXRoaXMuY3VydmUuemVybyx0aGlzLnpPbmU9ITApOih0aGlzLng9bmV3IGFlKHNlLDE2KSx0aGlzLnk9bmV3IGFlKG9lLDE2KSx0aGlzLno9Y2U/''@;'; put 'put ''bmV3IGFlKGNlLDE2KTp0aGlzLmN1cnZlLm9uZSx0aGlzLnQ9ZGUmJm5ldyBhZShkZSwxNiksdGhpcy54LnJlZHx8KHRoaXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnkucmVkfHwodGhpcy55PXRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuei5yZWR8''@;'; put 'put ''fCh0aGlzLno9dGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy50JiYhdGhpcy50LnJlZCYmKHRoaXMudD10aGlzLnQudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnpPbmU9dGhpcy56PT09dGhpcy5jdXJ2ZS5vbmUsdGhpcy5jdXJ2ZS5leHRlbmRlZCYmIXRoaXMudCYmKHRo''@;'; put 'put ''aXMudD10aGlzLngucmVkTXVsKHRoaXMueSksdGhpcy56T25lfHwodGhpcy50PXRoaXMudC5yZWRNdWwodGhpcy56LnJlZEludm0oKSkpKSl9WSh0ZSxXKSxVLmV4cG9ydHM9dGUsdGUucHJvdG90eXBlLl9tdWxBPWZ1bmN0aW9uKEope3JldHVybiB0aGlzLm1PbmVBP0oucmVkTmVnKCk6dGhp''@;'; put 'put ''cy5hLnJlZE11bChKKX0sdGUucHJvdG90eXBlLl9tdWxDPWZ1bmN0aW9uKEope3JldHVybiB0aGlzLm9uZUM/Sjp0aGlzLmMucmVkTXVsKEopfSx0ZS5wcm90b3R5cGUuanBvaW50PWZ1bmN0aW9uKEosc2Usb2UsY2Upe3JldHVybiB0aGlzLnBvaW50KEosc2Usb2UsY2UpfSx0ZS5wcm90b3R5''@;'; put 'put ''cGUucG9pbnRGcm9tWD1mdW5jdGlvbihKLHNlKXsoSj1uZXcgYWUoSiwxNikpLnJlZHx8KEo9Si50b1JlZCh0aGlzLnJlZCkpO3ZhciBvZT1KLnJlZFNxcigpLGNlPXRoaXMuYzIucmVkU3ViKHRoaXMuYS5yZWRNdWwob2UpKSxkZT10aGlzLm9uZS5yZWRTdWIodGhpcy5jMi5yZWRNdWwodGhp''@;'; put 'put ''cy5kKS5yZWRNdWwob2UpKSx2ZT1jZS5yZWRNdWwoZGUucmVkSW52bSgpKSxBZT12ZS5yZWRTcXJ0KCk7aWYoMCE9PUFlLnJlZFNxcigpLnJlZFN1Yih2ZSkuY21wKHRoaXMuemVybykpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50Iik7dmFyIGtlPUFlLmZyb21SZWQoKS5pc09kZCgp''@;'; put 'put ''O3JldHVybihzZSYmIWtlfHwhc2UmJmtlKSYmKEFlPUFlLnJlZE5lZygpKSx0aGlzLnBvaW50KEosQWUpfSx0ZS5wcm90b3R5cGUucG9pbnRGcm9tWT1mdW5jdGlvbihKLHNlKXsoSj1uZXcgYWUoSiwxNikpLnJlZHx8KEo9Si50b1JlZCh0aGlzLnJlZCkpO3ZhciBvZT1KLnJlZFNxcigpLGNl''@;'; put 'put ''PW9lLnJlZFN1Yih0aGlzLmMyKSxkZT1vZS5yZWRNdWwodGhpcy5kKS5yZWRNdWwodGhpcy5jMikucmVkU3ViKHRoaXMuYSksdmU9Y2UucmVkTXVsKGRlLnJlZEludm0oKSk7aWYoMD09PXZlLmNtcCh0aGlzLnplcm8pKXtpZihzZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcG9pbnQiKTty''@;'; put 'put ''ZXR1cm4gdGhpcy5wb2ludCh0aGlzLnplcm8sSil9dmFyIEFlPXZlLnJlZFNxcnQoKTtpZigwIT09QWUucmVkU3FyKCkucmVkU3ViKHZlKS5jbXAodGhpcy56ZXJvKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcG9pbnQiKTtyZXR1cm4gQWUuZnJvbVJlZCgpLmlzT2RkKCkhPT1zZSYmKEFl''@;'; put 'put ''PUFlLnJlZE5lZygpKSx0aGlzLnBvaW50KEFlLEopfSx0ZS5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oSil7aWYoSi5pc0luZmluaXR5KCkpcmV0dXJuITA7Si5ub3JtYWxpemUoKTt2YXIgc2U9Si54LnJlZFNxcigpLG9lPUoueS5yZWRTcXIoKSxjZT1zZS5yZWRNdWwodGhpcy5hKS5y''@;'; put 'put ''ZWRBZGQob2UpLGRlPXRoaXMuYzIucmVkTXVsKHRoaXMub25lLnJlZEFkZCh0aGlzLmQucmVkTXVsKHNlKS5yZWRNdWwob2UpKSk7cmV0dXJuIDA9PT1jZS5jbXAoZGUpfSxZKEssVy5CYXNlUG9pbnQpLHRlLnByb3RvdHlwZS5wb2ludEZyb21KU09OPWZ1bmN0aW9uKEope3JldHVybiBLLmZy''@;'; put 'put ''b21KU09OKHRoaXMsSil9LHRlLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbihKLHNlLG9lLGNlKXtyZXR1cm4gbmV3IEsodGhpcyxKLHNlLG9lLGNlKX0sSy5mcm9tSlNPTj1mdW5jdGlvbihKLHNlKXtyZXR1cm4gbmV3IEsoSixzZVswXSxzZVsxXSxzZVsyXSl9LEsucHJvdG90eXBlLmluc3Bl''@;'; put 'put ''Y3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/IjxFQyBQb2ludCBJbmZpbml0eT4iOiI8RUMgUG9pbnQgeDogIit0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyIgeTogIit0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyIgejogIit0aGlzLnouZnJv''@;'; put 'put ''bVJlZCgpLnRvU3RyaW5nKDE2LDIpKyI+In0sSy5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy54LmNtcG4oMCkmJigwPT09dGhpcy55LmNtcCh0aGlzLnopfHx0aGlzLnpPbmUmJjA9PT10aGlzLnkuY21wKHRoaXMuY3VydmUuYykpfSxLLnByb3RvdHlw''@;'; put 'put ''ZS5fZXh0RGJsPWZ1bmN0aW9uKCl7dmFyIEo9dGhpcy54LnJlZFNxcigpLHNlPXRoaXMueS5yZWRTcXIoKSxvZT10aGlzLnoucmVkU3FyKCk7b2U9b2UucmVkSUFkZChvZSk7dmFyIGNlPXRoaXMuY3VydmUuX211bEEoSiksZGU9dGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZFNxcigpLnJlZElT''@;'; put 'put ''dWIoSikucmVkSVN1YihzZSksdmU9Y2UucmVkQWRkKHNlKSxBZT12ZS5yZWRTdWIob2UpLGtlPWNlLnJlZFN1YihzZSksU2U9ZGUucmVkTXVsKEFlKSxJZT12ZS5yZWRNdWwoa2UpLFRlPWRlLnJlZE11bChrZSksTWU9QWUucmVkTXVsKHZlKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChTZSxJ''@;'; put 'put ''ZSxNZSxUZSl9LEsucHJvdG90eXBlLl9wcm9qRGJsPWZ1bmN0aW9uKCl7dmFyIEosc2Usb2UsY2UsZGUsdmUsQWU9dGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZFNxcigpLGtlPXRoaXMueC5yZWRTcXIoKSxTZT10aGlzLnkucmVkU3FyKCk7aWYodGhpcy5jdXJ2ZS50d2lzdGVkKXt2YXIgSWU9''@;'; put 'put ''KGNlPXRoaXMuY3VydmUuX211bEEoa2UpKS5yZWRBZGQoU2UpO3RoaXMuek9uZT8oSj1BZS5yZWRTdWIoa2UpLnJlZFN1YihTZSkucmVkTXVsKEllLnJlZFN1Yih0aGlzLmN1cnZlLnR3bykpLHNlPUllLnJlZE11bChjZS5yZWRTdWIoU2UpKSxvZT1JZS5yZWRTcXIoKS5yZWRTdWIoSWUpLnJl''@;'; put 'put ''ZFN1YihJZSkpOihkZT10aGlzLnoucmVkU3FyKCksdmU9SWUucmVkU3ViKGRlKS5yZWRJU3ViKGRlKSxKPUFlLnJlZFN1YihrZSkucmVkSVN1YihTZSkucmVkTXVsKHZlKSxzZT1JZS5yZWRNdWwoY2UucmVkU3ViKFNlKSksb2U9SWUucmVkTXVsKHZlKSl9ZWxzZSBjZT1rZS5yZWRBZGQoU2Up''@;'; put 'put ''LGRlPXRoaXMuY3VydmUuX211bEModGhpcy56KS5yZWRTcXIoKSx2ZT1jZS5yZWRTdWIoZGUpLnJlZFN1YihkZSksSj10aGlzLmN1cnZlLl9tdWxDKEFlLnJlZElTdWIoY2UpKS5yZWRNdWwodmUpLHNlPXRoaXMuY3VydmUuX211bEMoY2UpLnJlZE11bChrZS5yZWRJU3ViKFNlKSksb2U9Y2Uu''@;'; put 'put ''cmVkTXVsKHZlKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChKLHNlLG9lKX0sSy5wcm90b3R5cGUuZGJsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5jdXJ2ZS5leHRlbmRlZD90aGlzLl9leHREYmwoKTp0aGlzLl9wcm9qRGJsKCl9LEsucHJvdG90eXBl''@;'; put 'put ''Ll9leHRBZGQ9ZnVuY3Rpb24oSil7dmFyIHNlPXRoaXMueS5yZWRTdWIodGhpcy54KS5yZWRNdWwoSi55LnJlZFN1YihKLngpKSxvZT10aGlzLnkucmVkQWRkKHRoaXMueCkucmVkTXVsKEoueS5yZWRBZGQoSi54KSksY2U9dGhpcy50LnJlZE11bCh0aGlzLmN1cnZlLmRkKS5yZWRNdWwoSi50''@;'; put 'put ''KSxkZT10aGlzLnoucmVkTXVsKEouei5yZWRBZGQoSi56KSksdmU9b2UucmVkU3ViKHNlKSxBZT1kZS5yZWRTdWIoY2UpLGtlPWRlLnJlZEFkZChjZSksU2U9b2UucmVkQWRkKHNlKSxJZT12ZS5yZWRNdWwoQWUpLFRlPWtlLnJlZE11bChTZSksTWU9dmUucmVkTXVsKFNlKSxoZT1BZS5yZWRN''@;'; put 'put ''dWwoa2UpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KEllLFRlLGhlLE1lKX0sSy5wcm90b3R5cGUuX3Byb2pBZGQ9ZnVuY3Rpb24oSil7dmFyIHNlLG9lLGNlPXRoaXMuei5yZWRNdWwoSi56KSxkZT1jZS5yZWRTcXIoKSx2ZT10aGlzLngucmVkTXVsKEoueCksQWU9dGhpcy55LnJlZE11bChK''@;'; put 'put ''LnkpLGtlPXRoaXMuY3VydmUuZC5yZWRNdWwodmUpLnJlZE11bChBZSksU2U9ZGUucmVkU3ViKGtlKSxJZT1kZS5yZWRBZGQoa2UpLFRlPXRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRNdWwoSi54LnJlZEFkZChKLnkpKS5yZWRJU3ViKHZlKS5yZWRJU3ViKEFlKSxNZT1jZS5yZWRNdWwoU2Up''@;'; put 'put ''LnJlZE11bChUZSk7cmV0dXJuIHRoaXMuY3VydmUudHdpc3RlZD8oc2U9Y2UucmVkTXVsKEllKS5yZWRNdWwoQWUucmVkU3ViKHRoaXMuY3VydmUuX211bEEodmUpKSksb2U9U2UucmVkTXVsKEllKSk6KHNlPWNlLnJlZE11bChJZSkucmVkTXVsKEFlLnJlZFN1Yih2ZSkpLG9lPXRoaXMuY3Vy''@;'; put 'put ''dmUuX211bEMoU2UpLnJlZE11bChJZSkpLHRoaXMuY3VydmUucG9pbnQoTWUsc2Usb2UpfSxLLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oSil7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP0o6Si5pc0luZmluaXR5KCk/dGhpczp0aGlzLmN1cnZlLmV4dGVuZGVkP3RoaXMuX2V4dEFkZChKKTp0''@;'; put 'put ''aGlzLl9wcm9qQWRkKEopfSxLLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oSil7cmV0dXJuIHRoaXMuX2hhc0RvdWJsZXMoSik/dGhpcy5jdXJ2ZS5fZml4ZWROYWZNdWwodGhpcyxKKTp0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsSil9LEsucHJvdG90eXBlLm11bEFkZD1mdW5jdGlvbihKLHNl''@;'; put 'put ''LG9lKXtyZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLFt0aGlzLHNlXSxbSixvZV0sMiwhMSl9LEsucHJvdG90eXBlLmptdWxBZGQ9ZnVuY3Rpb24oSixzZSxvZSl7cmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSxbdGhpcyxzZV0sW0osb2VdLDIsITApfSxLLnByb3RvdHlw''@;'; put 'put ''ZS5ub3JtYWxpemU9ZnVuY3Rpb24oKXtpZih0aGlzLnpPbmUpcmV0dXJuIHRoaXM7dmFyIEo9dGhpcy56LnJlZEludm0oKTtyZXR1cm4gdGhpcy54PXRoaXMueC5yZWRNdWwoSiksdGhpcy55PXRoaXMueS5yZWRNdWwoSiksdGhpcy50JiYodGhpcy50PXRoaXMudC5yZWRNdWwoSikpLHRoaXMu''@;'; put 'put ''ej10aGlzLmN1cnZlLm9uZSx0aGlzLnpPbmU9ITAsdGhpc30sSy5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQodGhpcy54LnJlZE5lZygpLHRoaXMueSx0aGlzLnosdGhpcy50JiZ0aGlzLnQucmVkTmVnKCkpfSxLLnByb3RvdHlwZS5nZXRYPWZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCksdGhpcy54LmZyb21SZWQoKX0sSy5wcm90b3R5cGUuZ2V0WT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLHRoaXMueS5mcm9tUmVkKCl9LEsucHJvdG90eXBlLmVxPWZ1bmN0aW9uKEope3JldHVybiB0aGlzPT09Snx8MD09''@;'; put 'put ''PXRoaXMuZ2V0WCgpLmNtcChKLmdldFgoKSkmJjA9PT10aGlzLmdldFkoKS5jbXAoSi5nZXRZKCkpfSxLLnByb3RvdHlwZS5lcVhUb1A9ZnVuY3Rpb24oSil7dmFyIHNlPUoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh0aGlzLnopO2lmKDA9PT10aGlzLnguY21wKHNlKSlyZXR1cm4h''@;'; put 'put ''MDtmb3IodmFyIG9lPUouY2xvbmUoKSxjZT10aGlzLmN1cnZlLnJlZE4ucmVkTXVsKHRoaXMueik7Oyl7aWYob2UuaWFkZCh0aGlzLmN1cnZlLm4pLG9lLmNtcCh0aGlzLmN1cnZlLnApPj0wKXJldHVybiExO2lmKHNlLnJlZElBZGQoY2UpLDA9PT10aGlzLnguY21wKHNlKSlyZXR1cm4hMH19''@;'; put 'put ''LEsucHJvdG90eXBlLnRvUD1LLnByb3RvdHlwZS5ub3JtYWxpemUsSy5wcm90b3R5cGUubWl4ZWRBZGQ9Sy5wcm90b3R5cGUuYWRkfSw4MjU0OihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPVE7cmUuYmFzZT1qKDQ5MTgpLHJlLnNob3J0PWooNjY3MykscmUubW9udD1qKDI4ODEpLHJl''@;'; put 'put ''LmVkd2FyZHM9aigxMTM4KX0sMjg4MTooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDM3ODUpLGFlPWooNTcxNyksWT1qKDQ5MTgpLFc9aig5NTMpO2Z1bmN0aW9uIE4oSyl7WS5jYWxsKHRoaXMsIm1vbnQiLEspLHRoaXMuYT1uZXcgcmUoSy5hLDE2KS50b1JlZCh0aGlzLnJlZCks''@;'; put 'put ''dGhpcy5iPW5ldyByZShLLmIsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmk0PW5ldyByZSg0KS50b1JlZCh0aGlzLnJlZCkucmVkSW52bSgpLHRoaXMudHdvPW5ldyByZSgyKS50b1JlZCh0aGlzLnJlZCksdGhpcy5hMjQ9dGhpcy5pNC5yZWRNdWwodGhpcy5hLnJlZEFkZCh0aGlzLnR3bykp''@;'; put 'put ''fWZ1bmN0aW9uIHRlKEssSixzZSl7WS5CYXNlUG9pbnQuY2FsbCh0aGlzLEssInByb2plY3RpdmUiKSxudWxsPT09SiYmbnVsbD09PXNlPyh0aGlzLng9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56PXRoaXMuY3VydmUuemVybyk6KHRoaXMueD1uZXcgcmUoSiwxNiksdGhpcy56PW5ldyByZShzZSwx''@;'; put 'put ''NiksdGhpcy54LnJlZHx8KHRoaXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnoucmVkfHwodGhpcy56PXRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCkpKX1hZShOLFkpLFUuZXhwb3J0cz1OLE4ucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKEspe3ZhciBKPUsu''@;'; put 'put ''bm9ybWFsaXplKCkueCxzZT1KLnJlZFNxcigpLG9lPXNlLnJlZE11bChKKS5yZWRBZGQoc2UucmVkTXVsKHRoaXMuYSkpLnJlZEFkZChKKTtyZXR1cm4gMD09PW9lLnJlZFNxcnQoKS5yZWRTcXIoKS5jbXAob2UpfSxhZSh0ZSxZLkJhc2VQb2ludCksTi5wcm90b3R5cGUuZGVjb2RlUG9pbnQ9''@;'; put 'put ''ZnVuY3Rpb24oSyxKKXtyZXR1cm4gdGhpcy5wb2ludChXLnRvQXJyYXkoSyxKKSwxKX0sTi5wcm90b3R5cGUucG9pbnQ9ZnVuY3Rpb24oSyxKKXtyZXR1cm4gbmV3IHRlKHRoaXMsSyxKKX0sTi5wcm90b3R5cGUucG9pbnRGcm9tSlNPTj1mdW5jdGlvbihLKXtyZXR1cm4gdGUuZnJvbUpTT04o''@;'; put 'put ''dGhpcyxLKX0sdGUucHJvdG90eXBlLnByZWNvbXB1dGU9ZnVuY3Rpb24oKXt9LHRlLnByb3RvdHlwZS5fZW5jb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0WCgpLnRvQXJyYXkoImJlIix0aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpKX0sdGUuZnJvbUpTT049ZnVuY3Rpb24oSyxKKXty''@;'; put 'put ''ZXR1cm4gbmV3IHRlKEssSlswXSxKWzFdfHxLLm9uZSl9LHRlLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpPyI8RUMgUG9pbnQgSW5maW5pdHk+IjoiPEVDIFBvaW50IHg6ICIrdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiIHo6''@;'; put 'put ''ICIrdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiPiJ9LHRlLnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnouY21wbigwKX0sdGUucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe3ZhciBLPXRoaXMueC5yZWRBZGQodGhpcy56KS5yZWRTcXIo''@;'; put 'put ''KSxKPXRoaXMueC5yZWRTdWIodGhpcy56KS5yZWRTcXIoKSxzZT1LLnJlZFN1YihKKSxvZT1LLnJlZE11bChKKSxjZT1zZS5yZWRNdWwoSi5yZWRBZGQodGhpcy5jdXJ2ZS5hMjQucmVkTXVsKHNlKSkpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KG9lLGNlKX0sdGUucHJvdG90eXBlLmFkZD1m''@;'; put 'put ''dW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm90IHN1cHBvcnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlIil9LHRlLnByb3RvdHlwZS5kaWZmQWRkPWZ1bmN0aW9uKEssSil7dmFyIHNlPXRoaXMueC5yZWRBZGQodGhpcy56KSxvZT10aGlzLngucmVkU3ViKHRoaXMueiksY2U9Sy54LnJlZEFk''@;'; put 'put ''ZChLLnopLGRlPUsueC5yZWRTdWIoSy56KS5yZWRNdWwoc2UpLHZlPWNlLnJlZE11bChvZSksQWU9Si56LnJlZE11bChkZS5yZWRBZGQodmUpLnJlZFNxcigpKSxrZT1KLngucmVkTXVsKGRlLnJlZElTdWIodmUpLnJlZFNxcigpKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChBZSxrZSl9LHRl''@;'; put 'put ''LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oSyl7Zm9yKHZhciBKPUsuY2xvbmUoKSxzZT10aGlzLG9lPXRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKSxjZT1bXTswIT09Si5jbXBuKDApO0ouaXVzaHJuKDEpKWNlLnB1c2goSi5hbmRsbigxKSk7Zm9yKHZhciBkZT1jZS5sZW5ndGgtMTtkZT49''@;'; put 'put ''MDtkZS0tKTA9PT1jZVtkZV0/KHNlPXNlLmRpZmZBZGQob2UsdGhpcyksb2U9b2UuZGJsKCkpOihvZT1zZS5kaWZmQWRkKG9lLHRoaXMpLHNlPXNlLmRibCgpKTtyZXR1cm4gb2V9LHRlLnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBzdXBwb3J0ZWQg''@;'; put 'put ''b24gTW9udGdvbWVyeSBjdXJ2ZSIpfSx0ZS5wcm90b3R5cGUuanVtbEFkZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm90IHN1cHBvcnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlIil9LHRlLnByb3RvdHlwZS5lcT1mdW5jdGlvbihLKXtyZXR1cm4gMD09PXRoaXMuZ2V0WCgpLmNtcChL''@;'; put 'put ''LmdldFgoKSl9LHRlLnByb3RvdHlwZS5ub3JtYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54PXRoaXMueC5yZWRNdWwodGhpcy56LnJlZEludm0oKSksdGhpcy56PXRoaXMuY3VydmUub25lLHRoaXN9LHRlLnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9ybWFs''@;'; put 'put ''aXplKCksdGhpcy54LmZyb21SZWQoKX19LDY2NzM6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig5NTMpLGFlPWooMzc4NSksWT1qKDU3MTcpLFc9aig0OTE4KSxOPXJlLmFzc2VydDtmdW5jdGlvbiB0ZShzZSl7Vy5jYWxsKHRoaXMsInNob3J0IixzZSksdGhpcy5hPW5ldyBhZShz''@;'; put 'put ''ZS5hLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5iPW5ldyBhZShzZS5iLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy50aW52PXRoaXMudHdvLnJlZEludm0oKSx0aGlzLnplcm9BPTA9PT10aGlzLmEuZnJvbVJlZCgpLmNtcG4oMCksdGhpcy50aHJlZUE9MD09PXRoaXMuYS5mcm9tUmVkKCku''@;'; put 'put ''c3ViKHRoaXMucCkuY21wbigtMyksdGhpcy5lbmRvPXRoaXMuX2dldEVuZG9tb3JwaGlzbShzZSksdGhpcy5fZW5kb1duYWZUMT1uZXcgQXJyYXkoNCksdGhpcy5fZW5kb1duYWZUMj1uZXcgQXJyYXkoNCl9ZnVuY3Rpb24gSyhzZSxvZSxjZSxkZSl7Vy5CYXNlUG9pbnQuY2FsbCh0aGlzLHNl''@;'; put 'put ''LCJhZmZpbmUiKSxudWxsPT09b2UmJm51bGw9PT1jZT8odGhpcy54PW51bGwsdGhpcy55PW51bGwsdGhpcy5pbmY9ITApOih0aGlzLng9bmV3IGFlKG9lLDE2KSx0aGlzLnk9bmV3IGFlKGNlLDE2KSxkZSYmKHRoaXMueC5mb3JjZVJlZCh0aGlzLmN1cnZlLnJlZCksdGhpcy55LmZvcmNlUmVk''@;'; put 'put ''KHRoaXMuY3VydmUucmVkKSksdGhpcy54LnJlZHx8KHRoaXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnkucmVkfHwodGhpcy55PXRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuaW5mPSExKX1mdW5jdGlvbiBKKHNlLG9lLGNlLGRlKXtXLkJhc2VQb2lu''@;'; put 'put ''dC5jYWxsKHRoaXMsc2UsImphY29iaWFuIiksbnVsbD09PW9lJiZudWxsPT09Y2UmJm51bGw9PT1kZT8odGhpcy54PXRoaXMuY3VydmUub25lLHRoaXMueT10aGlzLmN1cnZlLm9uZSx0aGlzLno9bmV3IGFlKDApKToodGhpcy54PW5ldyBhZShvZSwxNiksdGhpcy55PW5ldyBhZShjZSwxNiks''@;'; put 'put ''dGhpcy56PW5ldyBhZShkZSwxNikpLHRoaXMueC5yZWR8fCh0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy55LnJlZHx8KHRoaXMueT10aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnoucmVkfHwodGhpcy56PXRoaXMuei50b1JlZCh0aGlzLmN1cnZl''@;'; put 'put ''LnJlZCkpLHRoaXMuek9uZT10aGlzLno9PT10aGlzLmN1cnZlLm9uZX1ZKHRlLFcpLFUuZXhwb3J0cz10ZSx0ZS5wcm90b3R5cGUuX2dldEVuZG9tb3JwaGlzbT1mdW5jdGlvbihzZSl7aWYodGhpcy56ZXJvQSYmdGhpcy5nJiZ0aGlzLm4mJjE9PT10aGlzLnAubW9kbigzKSl7dmFyIG9lLGNl''@;'; put 'put ''O2lmKHNlLmJldGEpb2U9bmV3IGFlKHNlLmJldGEsMTYpLnRvUmVkKHRoaXMucmVkKTtlbHNle3ZhciBkZT10aGlzLl9nZXRFbmRvUm9vdHModGhpcy5wKTtvZT0ob2U9ZGVbMF0uY21wKGRlWzFdKTwwP2RlWzBdOmRlWzFdKS50b1JlZCh0aGlzLnJlZCl9aWYoc2UubGFtYmRhKWNlPW5ldyBh''@;'; put 'put ''ZShzZS5sYW1iZGEsMTYpO2Vsc2V7dmFyIHZlPXRoaXMuX2dldEVuZG9Sb290cyh0aGlzLm4pOzA9PT10aGlzLmcubXVsKHZlWzBdKS54LmNtcCh0aGlzLmcueC5yZWRNdWwob2UpKT9jZT12ZVswXTpOKDA9PT10aGlzLmcubXVsKGNlPXZlWzFdKS54LmNtcCh0aGlzLmcueC5yZWRNdWwob2Up''@;'; put 'put ''KSl9cmV0dXJue2JldGE6b2UsbGFtYmRhOmNlLGJhc2lzOnNlLmJhc2lzP3NlLmJhc2lzLm1hcChmdW5jdGlvbihBZSl7cmV0dXJue2E6bmV3IGFlKEFlLmEsMTYpLGI6bmV3IGFlKEFlLmIsMTYpfX0pOnRoaXMuX2dldEVuZG9CYXNpcyhjZSl9fX0sdGUucHJvdG90eXBlLl9nZXRFbmRvUm9v''@;'; put 'put ''dHM9ZnVuY3Rpb24oc2Upe3ZhciBvZT1zZT09PXRoaXMucD90aGlzLnJlZDphZS5tb250KHNlKSxjZT1uZXcgYWUoMikudG9SZWQob2UpLnJlZEludm0oKSxkZT1jZS5yZWROZWcoKSx2ZT1uZXcgYWUoMykudG9SZWQob2UpLnJlZE5lZygpLnJlZFNxcnQoKS5yZWRNdWwoY2UpO3JldHVybltk''@;'; put 'put ''ZS5yZWRBZGQodmUpLmZyb21SZWQoKSxkZS5yZWRTdWIodmUpLmZyb21SZWQoKV19LHRlLnByb3RvdHlwZS5fZ2V0RW5kb0Jhc2lzPWZ1bmN0aW9uKHNlKXtmb3IodmFyIG9lLGNlLGRlLHZlLEFlLGtlLFNlLEllLFRlLE1lPXRoaXMubi51c2hybihNYXRoLmZsb29yKHRoaXMubi5iaXRMZW5n''@;'; put 'put ''dGgoKS8yKSksaGU9c2UsTz10aGlzLm4uY2xvbmUoKSx6PW5ldyBhZSgxKSxlZT1uZXcgYWUoMCksbmU9bmV3IGFlKDApLHg9bmV3IGFlKDEpLFA9MDswIT09aGUuY21wbigwKTspe3ZhciBWPU8uZGl2KGhlKTtJZT1PLnN1YihWLm11bChoZSkpLFRlPW5lLnN1YihWLm11bCh6KSk7dmFyIFQ9''@;'; put 'put ''eC5zdWIoVi5tdWwoZWUpKTtpZighZGUmJkllLmNtcChNZSk8MClvZT1TZS5uZWcoKSxjZT16LGRlPUllLm5lZygpLHZlPVRlO2Vsc2UgaWYoZGUmJjI9PSsrUClicmVhaztTZT1JZSxPPWhlLGhlPUllLG5lPXosej1UZSx4PWVlLGVlPVR9QWU9SWUubmVnKCksa2U9VGU7dmFyIFM9ZGUuc3Fy''@;'; put 'put ''KCkuYWRkKHZlLnNxcigpKTtyZXR1cm4gQWUuc3FyKCkuYWRkKGtlLnNxcigpKS5jbXAoUyk+PTAmJihBZT1vZSxrZT1jZSksZGUubmVnYXRpdmUmJihkZT1kZS5uZWcoKSx2ZT12ZS5uZWcoKSksQWUubmVnYXRpdmUmJihBZT1BZS5uZWcoKSxrZT1rZS5uZWcoKSksW3thOmRlLGI6dmV9LHth''@;'; put 'put ''OkFlLGI6a2V9XX0sdGUucHJvdG90eXBlLl9lbmRvU3BsaXQ9ZnVuY3Rpb24oc2Upe3ZhciBvZT10aGlzLmVuZG8uYmFzaXMsY2U9b2VbMF0sZGU9b2VbMV0sdmU9ZGUuYi5tdWwoc2UpLmRpdlJvdW5kKHRoaXMubiksQWU9Y2UuYi5uZWcoKS5tdWwoc2UpLmRpdlJvdW5kKHRoaXMubiksa2U9''@;'; put 'put ''dmUubXVsKGNlLmEpLFNlPUFlLm11bChkZS5hKSxJZT12ZS5tdWwoY2UuYiksVGU9QWUubXVsKGRlLmIpO3JldHVybntrMTpzZS5zdWIoa2UpLnN1YihTZSksazI6SWUuYWRkKFRlKS5uZWcoKX19LHRlLnByb3RvdHlwZS5wb2ludEZyb21YPWZ1bmN0aW9uKHNlLG9lKXsoc2U9bmV3IGFlKHNl''@;'; put 'put ''LDE2KSkucmVkfHwoc2U9c2UudG9SZWQodGhpcy5yZWQpKTt2YXIgY2U9c2UucmVkU3FyKCkucmVkTXVsKHNlKS5yZWRJQWRkKHNlLnJlZE11bCh0aGlzLmEpKS5yZWRJQWRkKHRoaXMuYiksZGU9Y2UucmVkU3FydCgpO2lmKDAhPT1kZS5yZWRTcXIoKS5yZWRTdWIoY2UpLmNtcCh0aGlzLnpl''@;'; put 'put ''cm8pKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2ludCIpO3ZhciB2ZT1kZS5mcm9tUmVkKCkuaXNPZGQoKTtyZXR1cm4ob2UmJiF2ZXx8IW9lJiZ2ZSkmJihkZT1kZS5yZWROZWcoKSksdGhpcy5wb2ludChzZSxkZSl9LHRlLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbihzZSl7aWYo''@;'; put 'put ''c2UuaW5mKXJldHVybiEwO3ZhciBvZT1zZS54LGNlPXNlLnksZGU9dGhpcy5hLnJlZE11bChvZSksdmU9b2UucmVkU3FyKCkucmVkTXVsKG9lKS5yZWRJQWRkKGRlKS5yZWRJQWRkKHRoaXMuYik7cmV0dXJuIDA9PT1jZS5yZWRTcXIoKS5yZWRJU3ViKHZlKS5jbXBuKDApfSx0ZS5wcm90b3R5''@;'; put 'put ''cGUuX2VuZG9XbmFmTXVsQWRkPWZ1bmN0aW9uKHNlLG9lLGNlKXtmb3IodmFyIGRlPXRoaXMuX2VuZG9XbmFmVDEsdmU9dGhpcy5fZW5kb1duYWZUMixBZT0wO0FlPHNlLmxlbmd0aDtBZSsrKXt2YXIga2U9dGhpcy5fZW5kb1NwbGl0KG9lW0FlXSksU2U9c2VbQWVdLEllPVNlLl9nZXRCZXRh''@;'; put 'put ''KCk7a2UuazEubmVnYXRpdmUmJihrZS5rMS5pbmVnKCksU2U9U2UubmVnKCEwKSksa2UuazIubmVnYXRpdmUmJihrZS5rMi5pbmVnKCksSWU9SWUubmVnKCEwKSksZGVbMipBZV09U2UsZGVbMipBZSsxXT1JZSx2ZVsyKkFlXT1rZS5rMSx2ZVsyKkFlKzFdPWtlLmsyfWZvcih2YXIgVGU9dGhp''@;'; put 'put ''cy5fd25hZk11bEFkZCgxLGRlLHZlLDIqQWUsY2UpLE1lPTA7TWU8MipBZTtNZSsrKWRlW01lXT1udWxsLHZlW01lXT1udWxsO3JldHVybiBUZX0sWShLLFcuQmFzZVBvaW50KSx0ZS5wcm90b3R5cGUucG9pbnQ9ZnVuY3Rpb24oc2Usb2UsY2Upe3JldHVybiBuZXcgSyh0aGlzLHNlLG9lLGNl''@;'; put 'put ''KX0sdGUucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24oc2Usb2Upe3JldHVybiBLLmZyb21KU09OKHRoaXMsc2Usb2UpfSxLLnByb3RvdHlwZS5fZ2V0QmV0YT1mdW5jdGlvbigpe2lmKHRoaXMuY3VydmUuZW5kbyl7dmFyIHNlPXRoaXMucHJlY29tcHV0ZWQ7aWYoc2UmJnNlLmJl''@;'; put 'put ''dGEpcmV0dXJuIHNlLmJldGE7dmFyIG9lPXRoaXMuY3VydmUucG9pbnQodGhpcy54LnJlZE11bCh0aGlzLmN1cnZlLmVuZG8uYmV0YSksdGhpcy55KTtpZihzZSl7dmFyIGNlPXRoaXMuY3VydmUsZGU9ZnVuY3Rpb24odmUpe3JldHVybiBjZS5wb2ludCh2ZS54LnJlZE11bChjZS5lbmRvLmJl''@;'; put 'put ''dGEpLHZlLnkpfTtzZS5iZXRhPW9lLG9lLnByZWNvbXB1dGVkPXtiZXRhOm51bGwsbmFmOnNlLm5hZiYme3duZDpzZS5uYWYud25kLHBvaW50czpzZS5uYWYucG9pbnRzLm1hcChkZSl9LGRvdWJsZXM6c2UuZG91YmxlcyYme3N0ZXA6c2UuZG91Ymxlcy5zdGVwLHBvaW50czpzZS5kb3VibGVz''@;'; put 'put ''LnBvaW50cy5tYXAoZGUpfX19cmV0dXJuIG9lfX0sSy5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJlY29tcHV0ZWQ/W3RoaXMueCx0aGlzLnksdGhpcy5wcmVjb21wdXRlZCYme2RvdWJsZXM6dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzJiZ7c3RlcDp0aGlzLnBy''@;'; put 'put ''ZWNvbXB1dGVkLmRvdWJsZXMuc3RlcCxwb2ludHM6dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnBvaW50cy5zbGljZSgxKX0sbmFmOnRoaXMucHJlY29tcHV0ZWQubmFmJiZ7d25kOnRoaXMucHJlY29tcHV0ZWQubmFmLnduZCxwb2ludHM6dGhpcy5wcmVjb21wdXRlZC5uYWYucG9pbnRzLnNs''@;'; put 'put ''aWNlKDEpfX1dOlt0aGlzLngsdGhpcy55XX0sSy5mcm9tSlNPTj1mdW5jdGlvbihzZSxvZSxjZSl7InN0cmluZyI9PXR5cGVvZiBvZSYmKG9lPUpTT04ucGFyc2Uob2UpKTt2YXIgZGU9c2UucG9pbnQob2VbMF0sb2VbMV0sY2UpO2lmKCFvZVsyXSlyZXR1cm4gZGU7ZnVuY3Rpb24gdmUoa2Up''@;'; put 'put ''e3JldHVybiBzZS5wb2ludChrZVswXSxrZVsxXSxjZSl9dmFyIEFlPW9lWzJdO3JldHVybiBkZS5wcmVjb21wdXRlZD17YmV0YTpudWxsLGRvdWJsZXM6QWUuZG91YmxlcyYme3N0ZXA6QWUuZG91Ymxlcy5zdGVwLHBvaW50czpbZGVdLmNvbmNhdChBZS5kb3VibGVzLnBvaW50cy5tYXAodmUp''@;'; put 'put ''KX0sbmFmOkFlLm5hZiYme3duZDpBZS5uYWYud25kLHBvaW50czpbZGVdLmNvbmNhdChBZS5uYWYucG9pbnRzLm1hcCh2ZSkpfX0sZGV9LEsucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/IjxFQyBQb2ludCBJbmZpbml0eT4iOiI8RUMgUG9p''@;'; put 'put ''bnQgeDogIit0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyIgeTogIit0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyI+In0sSy5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmluZn0sSy5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHNlKXtp''@;'; put 'put ''Zih0aGlzLmluZilyZXR1cm4gc2U7aWYoc2UuaW5mKXJldHVybiB0aGlzO2lmKHRoaXMuZXEoc2UpKXJldHVybiB0aGlzLmRibCgpO2lmKHRoaXMubmVnKCkuZXEoc2UpKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7aWYoMD09PXRoaXMueC5jbXAoc2UueCkpcmV0dXJuIHRo''@;'; put 'put ''aXMuY3VydmUucG9pbnQobnVsbCxudWxsKTt2YXIgb2U9dGhpcy55LnJlZFN1YihzZS55KTswIT09b2UuY21wbigwKSYmKG9lPW9lLnJlZE11bCh0aGlzLngucmVkU3ViKHNlLngpLnJlZEludm0oKSkpO3ZhciBjZT1vZS5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueCkucmVkSVN1YihzZS54KSxk''@;'; put 'put ''ZT1vZS5yZWRNdWwodGhpcy54LnJlZFN1YihjZSkpLnJlZElTdWIodGhpcy55KTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChjZSxkZSl9LEsucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe2lmKHRoaXMuaW5mKXJldHVybiB0aGlzO3ZhciBzZT10aGlzLnkucmVkQWRkKHRoaXMueSk7aWYoMD09''@;'; put 'put ''PXNlLmNtcG4oMCkpcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTt2YXIgb2U9dGhpcy5jdXJ2ZS5hLGNlPXRoaXMueC5yZWRTcXIoKSxkZT1zZS5yZWRJbnZtKCksdmU9Y2UucmVkQWRkKGNlKS5yZWRJQWRkKGNlKS5yZWRJQWRkKG9lKS5yZWRNdWwoZGUpLEFlPXZlLnJlZFNx''@;'; put 'put ''cigpLnJlZElTdWIodGhpcy54LnJlZEFkZCh0aGlzLngpKSxrZT12ZS5yZWRNdWwodGhpcy54LnJlZFN1YihBZSkpLnJlZElTdWIodGhpcy55KTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChBZSxrZSl9LEsucHJvdG90eXBlLmdldFg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54LmZyb21SZWQo''@;'; put 'put ''KX0sSy5wcm90b3R5cGUuZ2V0WT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnkuZnJvbVJlZCgpfSxLLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oc2Upe3JldHVybiBzZT1uZXcgYWUoc2UsMTYpLHRoaXMuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5faGFzRG91YmxlcyhzZSk/dGhpcy5jdXJ2ZS5f''@;'; put 'put ''Zml4ZWROYWZNdWwodGhpcyxzZSk6dGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKFt0aGlzXSxbc2VdKTp0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsc2UpfSxLLnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24oc2Usb2UsY2Upe3ZhciBkZT1bdGhpcyxvZV0sdmU9''@;'; put 'put ''W3NlLGNlXTtyZXR1cm4gdGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKGRlLHZlKTp0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsZGUsdmUsMil9LEsucHJvdG90eXBlLmptdWxBZGQ9ZnVuY3Rpb24oc2Usb2UsY2Upe3ZhciBkZT1bdGhpcyxvZV0sdmU9W3NlLGNl''@;'; put 'put ''XTtyZXR1cm4gdGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKGRlLHZlLCEwKTp0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsZGUsdmUsMiwhMCl9LEsucHJvdG90eXBlLmVxPWZ1bmN0aW9uKHNlKXtyZXR1cm4gdGhpcz09PXNlfHx0aGlzLmluZj09PXNlLmluZiYm''@;'; put 'put ''KHRoaXMuaW5mfHwwPT09dGhpcy54LmNtcChzZS54KSYmMD09PXRoaXMueS5jbXAoc2UueSkpfSxLLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oc2Upe2lmKHRoaXMuaW5mKXJldHVybiB0aGlzO3ZhciBvZT10aGlzLmN1cnZlLnBvaW50KHRoaXMueCx0aGlzLnkucmVkTmVnKCkpO2lmKHNlJiZ0''@;'; put 'put ''aGlzLnByZWNvbXB1dGVkKXt2YXIgY2U9dGhpcy5wcmVjb21wdXRlZCxkZT1mdW5jdGlvbih2ZSl7cmV0dXJuIHZlLm5lZygpfTtvZS5wcmVjb21wdXRlZD17bmFmOmNlLm5hZiYme3duZDpjZS5uYWYud25kLHBvaW50czpjZS5uYWYucG9pbnRzLm1hcChkZSl9LGRvdWJsZXM6Y2UuZG91Ymxl''@;'; put 'put ''cyYme3N0ZXA6Y2UuZG91Ymxlcy5zdGVwLHBvaW50czpjZS5kb3VibGVzLnBvaW50cy5tYXAoZGUpfX19cmV0dXJuIG9lfSxLLnByb3RvdHlwZS50b0o9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmY/dGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCxudWxsLG51bGwpOnRoaXMuY3VydmUuanBvaW50''@;'; put 'put ''KHRoaXMueCx0aGlzLnksdGhpcy5jdXJ2ZS5vbmUpfSxZKEosVy5CYXNlUG9pbnQpLHRlLnByb3RvdHlwZS5qcG9pbnQ9ZnVuY3Rpb24oc2Usb2UsY2Upe3JldHVybiBuZXcgSih0aGlzLHNlLG9lLGNlKX0sSi5wcm90b3R5cGUudG9QPWZ1bmN0aW9uKCl7aWYodGhpcy5pc0luZmluaXR5KCkp''@;'; put 'put ''cmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTt2YXIgc2U9dGhpcy56LnJlZEludm0oKSxvZT1zZS5yZWRTcXIoKSxjZT10aGlzLngucmVkTXVsKG9lKSxkZT10aGlzLnkucmVkTXVsKG9lKS5yZWRNdWwoc2UpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KGNlLGRlKX0sSi5wcm90''@;'; put 'put ''b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KHRoaXMueCx0aGlzLnkucmVkTmVnKCksdGhpcy56KX0sSi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHNlKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gc2U7aWYoc2UuaXNJbmZpbml0eSgpKXJldHVybiB0''@;'; put 'put ''aGlzO3ZhciBvZT1zZS56LnJlZFNxcigpLGNlPXRoaXMuei5yZWRTcXIoKSxkZT10aGlzLngucmVkTXVsKG9lKSx2ZT1zZS54LnJlZE11bChjZSksQWU9dGhpcy55LnJlZE11bChvZS5yZWRNdWwoc2UueikpLGtlPXNlLnkucmVkTXVsKGNlLnJlZE11bCh0aGlzLnopKSxTZT1kZS5yZWRTdWIo''@;'; put 'put ''dmUpLEllPUFlLnJlZFN1YihrZSk7aWYoMD09PVNlLmNtcG4oMCkpcmV0dXJuIDAhPT1JZS5jbXBuKDApP3RoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmRibCgpO3ZhciBUZT1TZS5yZWRTcXIoKSxNZT1UZS5yZWRNdWwoU2UpLGhlPWRlLnJlZE11bChUZSksTz1JZS5y''@;'; put 'put ''ZWRTcXIoKS5yZWRJQWRkKE1lKS5yZWRJU3ViKGhlKS5yZWRJU3ViKGhlKSx6PUllLnJlZE11bChoZS5yZWRJU3ViKE8pKS5yZWRJU3ViKEFlLnJlZE11bChNZSkpLGVlPXRoaXMuei5yZWRNdWwoc2UueikucmVkTXVsKFNlKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoTyx6LGVlKX0sSi5w''@;'; put 'put ''cm90b3R5cGUubWl4ZWRBZGQ9ZnVuY3Rpb24oc2Upe2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiBzZS50b0ooKTtpZihzZS5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7dmFyIG9lPXRoaXMuei5yZWRTcXIoKSxjZT10aGlzLngsZGU9c2UueC5yZWRNdWwob2UpLHZlPXRoaXMueSxBZT1z''@;'; put 'put ''ZS55LnJlZE11bChvZSkucmVkTXVsKHRoaXMueiksa2U9Y2UucmVkU3ViKGRlKSxTZT12ZS5yZWRTdWIoQWUpO2lmKDA9PT1rZS5jbXBuKDApKXJldHVybiAwIT09U2UuY21wbigwKT90aGlzLmN1cnZlLmpwb2ludChudWxsLG51bGwsbnVsbCk6dGhpcy5kYmwoKTt2YXIgSWU9a2UucmVkU3Fy''@;'; put 'put ''KCksVGU9SWUucmVkTXVsKGtlKSxNZT1jZS5yZWRNdWwoSWUpLGhlPVNlLnJlZFNxcigpLnJlZElBZGQoVGUpLnJlZElTdWIoTWUpLnJlZElTdWIoTWUpLE89U2UucmVkTXVsKE1lLnJlZElTdWIoaGUpKS5yZWRJU3ViKHZlLnJlZE11bChUZSkpLHo9dGhpcy56LnJlZE11bChrZSk7cmV0dXJu''@;'; put 'put ''IHRoaXMuY3VydmUuanBvaW50KGhlLE8seil9LEoucHJvdG90eXBlLmRibHA9ZnVuY3Rpb24oc2Upe2lmKDA9PT1zZSlyZXR1cm4gdGhpcztpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpcztpZighc2UpcmV0dXJuIHRoaXMuZGJsKCk7dmFyIG9lO2lmKHRoaXMuY3VydmUuemVyb0F8''@;'; put 'put ''fHRoaXMuY3VydmUudGhyZWVBKXt2YXIgY2U9dGhpcztmb3Iob2U9MDtvZTxzZTtvZSsrKWNlPWNlLmRibCgpO3JldHVybiBjZX12YXIgZGU9dGhpcy5jdXJ2ZS5hLHZlPXRoaXMuY3VydmUudGludixBZT10aGlzLngsa2U9dGhpcy55LFNlPXRoaXMueixJZT1TZS5yZWRTcXIoKS5yZWRTcXIo''@;'; put 'put ''KSxUZT1rZS5yZWRBZGQoa2UpO2ZvcihvZT0wO29lPHNlO29lKyspe3ZhciBNZT1BZS5yZWRTcXIoKSxoZT1UZS5yZWRTcXIoKSxPPWhlLnJlZFNxcigpLHo9TWUucmVkQWRkKE1lKS5yZWRJQWRkKE1lKS5yZWRJQWRkKGRlLnJlZE11bChJZSkpLGVlPUFlLnJlZE11bChoZSksbmU9ei5yZWRT''@;'; put 'put ''cXIoKS5yZWRJU3ViKGVlLnJlZEFkZChlZSkpLHg9ZWUucmVkSVN1YihuZSksUD16LnJlZE11bCh4KTtQPVAucmVkSUFkZChQKS5yZWRJU3ViKE8pO3ZhciBWPVRlLnJlZE11bChTZSk7b2UrMTxzZSYmKEllPUllLnJlZE11bChPKSksQWU9bmUsU2U9VixUZT1QfXJldHVybiB0aGlzLmN1cnZl''@;'; put 'put ''Lmpwb2ludChBZSxUZS5yZWRNdWwodmUpLFNlKX0sSi5wcm90b3R5cGUuZGJsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5jdXJ2ZS56ZXJvQT90aGlzLl96ZXJvRGJsKCk6dGhpcy5jdXJ2ZS50aHJlZUE/dGhpcy5fdGhyZWVEYmwoKTp0aGlzLl9kYmwo''@;'; put 'put ''KX0sSi5wcm90b3R5cGUuX3plcm9EYmw9ZnVuY3Rpb24oKXt2YXIgc2Usb2UsY2U7aWYodGhpcy56T25lKXt2YXIgZGU9dGhpcy54LnJlZFNxcigpLHZlPXRoaXMueS5yZWRTcXIoKSxBZT12ZS5yZWRTcXIoKSxrZT10aGlzLngucmVkQWRkKHZlKS5yZWRTcXIoKS5yZWRJU3ViKGRlKS5yZWRJ''@;'; put 'put ''U3ViKEFlKTtrZT1rZS5yZWRJQWRkKGtlKTt2YXIgU2U9ZGUucmVkQWRkKGRlKS5yZWRJQWRkKGRlKSxJZT1TZS5yZWRTcXIoKS5yZWRJU3ViKGtlKS5yZWRJU3ViKGtlKSxUZT1BZS5yZWRJQWRkKEFlKTtUZT0oVGU9VGUucmVkSUFkZChUZSkpLnJlZElBZGQoVGUpLHNlPUllLG9lPVNlLnJl''@;'; put 'put ''ZE11bChrZS5yZWRJU3ViKEllKSkucmVkSVN1YihUZSksY2U9dGhpcy55LnJlZEFkZCh0aGlzLnkpfWVsc2V7dmFyIE1lPXRoaXMueC5yZWRTcXIoKSxoZT10aGlzLnkucmVkU3FyKCksTz1oZS5yZWRTcXIoKSx6PXRoaXMueC5yZWRBZGQoaGUpLnJlZFNxcigpLnJlZElTdWIoTWUpLnJlZElT''@;'; put 'put ''dWIoTyk7ej16LnJlZElBZGQoeik7dmFyIGVlPU1lLnJlZEFkZChNZSkucmVkSUFkZChNZSksbmU9ZWUucmVkU3FyKCkseD1PLnJlZElBZGQoTyk7eD0oeD14LnJlZElBZGQoeCkpLnJlZElBZGQoeCksc2U9bmUucmVkSVN1Yih6KS5yZWRJU3ViKHopLG9lPWVlLnJlZE11bCh6LnJlZElTdWIo''@;'; put 'put ''c2UpKS5yZWRJU3ViKHgpLGNlPShjZT10aGlzLnkucmVkTXVsKHRoaXMueikpLnJlZElBZGQoY2UpfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChzZSxvZSxjZSl9LEoucHJvdG90eXBlLl90aHJlZURibD1mdW5jdGlvbigpe3ZhciBzZSxvZSxjZTtpZih0aGlzLnpPbmUpe3ZhciBkZT10aGlz''@;'; put 'put ''LngucmVkU3FyKCksdmU9dGhpcy55LnJlZFNxcigpLEFlPXZlLnJlZFNxcigpLGtlPXRoaXMueC5yZWRBZGQodmUpLnJlZFNxcigpLnJlZElTdWIoZGUpLnJlZElTdWIoQWUpO2tlPWtlLnJlZElBZGQoa2UpO3ZhciBTZT1kZS5yZWRBZGQoZGUpLnJlZElBZGQoZGUpLnJlZElBZGQodGhpcy5j''@;'; put 'put ''dXJ2ZS5hKSxJZT1TZS5yZWRTcXIoKS5yZWRJU3ViKGtlKS5yZWRJU3ViKGtlKTtzZT1JZTt2YXIgVGU9QWUucmVkSUFkZChBZSk7VGU9KFRlPVRlLnJlZElBZGQoVGUpKS5yZWRJQWRkKFRlKSxvZT1TZS5yZWRNdWwoa2UucmVkSVN1YihJZSkpLnJlZElTdWIoVGUpLGNlPXRoaXMueS5yZWRB''@;'; put 'put ''ZGQodGhpcy55KX1lbHNle3ZhciBNZT10aGlzLnoucmVkU3FyKCksaGU9dGhpcy55LnJlZFNxcigpLE89dGhpcy54LnJlZE11bChoZSksej10aGlzLngucmVkU3ViKE1lKS5yZWRNdWwodGhpcy54LnJlZEFkZChNZSkpO3o9ei5yZWRBZGQoeikucmVkSUFkZCh6KTt2YXIgZWU9Ty5yZWRJQWRk''@;'; put 'put ''KE8pLG5lPShlZT1lZS5yZWRJQWRkKGVlKSkucmVkQWRkKGVlKTtzZT16LnJlZFNxcigpLnJlZElTdWIobmUpLGNlPXRoaXMueS5yZWRBZGQodGhpcy56KS5yZWRTcXIoKS5yZWRJU3ViKGhlKS5yZWRJU3ViKE1lKTt2YXIgeD1oZS5yZWRTcXIoKTt4PSh4PSh4PXgucmVkSUFkZCh4KSkucmVk''@;'; put 'put ''SUFkZCh4KSkucmVkSUFkZCh4KSxvZT16LnJlZE11bChlZS5yZWRJU3ViKHNlKSkucmVkSVN1Yih4KX1yZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoc2Usb2UsY2UpfSxKLnByb3RvdHlwZS5fZGJsPWZ1bmN0aW9uKCl7dmFyIHNlPXRoaXMuY3VydmUuYSxvZT10aGlzLngsY2U9dGhpcy55LGRl''@;'; put 'put ''PXRoaXMueix2ZT1kZS5yZWRTcXIoKS5yZWRTcXIoKSxBZT1vZS5yZWRTcXIoKSxrZT1jZS5yZWRTcXIoKSxTZT1BZS5yZWRBZGQoQWUpLnJlZElBZGQoQWUpLnJlZElBZGQoc2UucmVkTXVsKHZlKSksSWU9b2UucmVkQWRkKG9lKSxUZT0oSWU9SWUucmVkSUFkZChJZSkpLnJlZE11bChrZSks''@;'; put 'put ''TWU9U2UucmVkU3FyKCkucmVkSVN1YihUZS5yZWRBZGQoVGUpKSxoZT1UZS5yZWRJU3ViKE1lKSxPPWtlLnJlZFNxcigpO089KE89KE89Ty5yZWRJQWRkKE8pKS5yZWRJQWRkKE8pKS5yZWRJQWRkKE8pO3ZhciB6PVNlLnJlZE11bChoZSkucmVkSVN1YihPKSxlZT1jZS5yZWRBZGQoY2UpLnJl''@;'; put 'put ''ZE11bChkZSk7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KE1lLHosZWUpfSxKLnByb3RvdHlwZS50cnBsPWZ1bmN0aW9uKCl7aWYoIXRoaXMuY3VydmUuemVyb0EpcmV0dXJuIHRoaXMuZGJsKCkuYWRkKHRoaXMpO3ZhciBzZT10aGlzLngucmVkU3FyKCksb2U9dGhpcy55LnJlZFNxcigpLGNl''@;'; put 'put ''PXRoaXMuei5yZWRTcXIoKSxkZT1vZS5yZWRTcXIoKSx2ZT1zZS5yZWRBZGQoc2UpLnJlZElBZGQoc2UpLEFlPXZlLnJlZFNxcigpLGtlPXRoaXMueC5yZWRBZGQob2UpLnJlZFNxcigpLnJlZElTdWIoc2UpLnJlZElTdWIoZGUpLFNlPShrZT0oa2U9KGtlPWtlLnJlZElBZGQoa2UpKS5yZWRB''@;'; put 'put ''ZGQoa2UpLnJlZElBZGQoa2UpKS5yZWRJU3ViKEFlKSkucmVkU3FyKCksSWU9ZGUucmVkSUFkZChkZSk7SWU9KEllPShJZT1JZS5yZWRJQWRkKEllKSkucmVkSUFkZChJZSkpLnJlZElBZGQoSWUpO3ZhciBUZT12ZS5yZWRJQWRkKGtlKS5yZWRTcXIoKS5yZWRJU3ViKEFlKS5yZWRJU3ViKFNl''@;'; put 'put ''KS5yZWRJU3ViKEllKSxNZT1vZS5yZWRNdWwoVGUpO01lPShNZT1NZS5yZWRJQWRkKE1lKSkucmVkSUFkZChNZSk7dmFyIGhlPXRoaXMueC5yZWRNdWwoU2UpLnJlZElTdWIoTWUpO2hlPShoZT1oZS5yZWRJQWRkKGhlKSkucmVkSUFkZChoZSk7dmFyIE89dGhpcy55LnJlZE11bChUZS5yZWRN''@;'; put 'put ''dWwoSWUucmVkSVN1YihUZSkpLnJlZElTdWIoa2UucmVkTXVsKFNlKSkpO089KE89KE89Ty5yZWRJQWRkKE8pKS5yZWRJQWRkKE8pKS5yZWRJQWRkKE8pO3ZhciB6PXRoaXMuei5yZWRBZGQoa2UpLnJlZFNxcigpLnJlZElTdWIoY2UpLnJlZElTdWIoU2UpO3JldHVybiB0aGlzLmN1cnZlLmpw''@;'; put 'put ''b2ludChoZSxPLHopfSxKLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oc2Usb2Upe3JldHVybiBzZT1uZXcgYWUoc2Usb2UpLHRoaXMuY3VydmUuX3duYWZNdWwodGhpcyxzZSl9LEoucHJvdG90eXBlLmVxPWZ1bmN0aW9uKHNlKXtpZigiYWZmaW5lIj09PXNlLnR5cGUpcmV0dXJuIHRoaXMuZXEo''@;'; put 'put ''c2UudG9KKCkpO2lmKHRoaXM9PT1zZSlyZXR1cm4hMDt2YXIgb2U9dGhpcy56LnJlZFNxcigpLGNlPXNlLnoucmVkU3FyKCk7aWYoMCE9PXRoaXMueC5yZWRNdWwoY2UpLnJlZElTdWIoc2UueC5yZWRNdWwob2UpKS5jbXBuKDApKXJldHVybiExO3ZhciBkZT1vZS5yZWRNdWwodGhpcy56KSx2''@;'; put 'put ''ZT1jZS5yZWRNdWwoc2Uueik7cmV0dXJuIDA9PT10aGlzLnkucmVkTXVsKHZlKS5yZWRJU3ViKHNlLnkucmVkTXVsKGRlKSkuY21wbigwKX0sSi5wcm90b3R5cGUuZXFYVG9QPWZ1bmN0aW9uKHNlKXt2YXIgb2U9dGhpcy56LnJlZFNxcigpLGNlPXNlLnRvUmVkKHRoaXMuY3VydmUucmVkKS5y''@;'; put 'put ''ZWRNdWwob2UpO2lmKDA9PT10aGlzLnguY21wKGNlKSlyZXR1cm4hMDtmb3IodmFyIGRlPXNlLmNsb25lKCksdmU9dGhpcy5jdXJ2ZS5yZWROLnJlZE11bChvZSk7Oyl7aWYoZGUuaWFkZCh0aGlzLmN1cnZlLm4pLGRlLmNtcCh0aGlzLmN1cnZlLnApPj0wKXJldHVybiExO2lmKGNlLnJlZElB''@;'; put 'put ''ZGQodmUpLDA9PT10aGlzLnguY21wKGNlKSlyZXR1cm4hMH19LEoucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/IjxFQyBKUG9pbnQgSW5maW5pdHk+IjoiPEVDIEpQb2ludCB4OiAiK3RoaXMueC50b1N0cmluZygxNiwyKSsiIHk6ICIrdGhp''@;'; put 'put ''cy55LnRvU3RyaW5nKDE2LDIpKyIgejogIit0aGlzLnoudG9TdHJpbmcoMTYsMikrIj4ifSxKLnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnouY21wbigwKX19LDU0Mjc6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmUsYWU9USxZPWooMzcxNSks''@;'; put 'put ''Vz1qKDgyNTQpLE49aig5NTMpLmFzc2VydDtmdW5jdGlvbiB0ZShKKXt0aGlzLmN1cnZlPSJzaG9ydCI9PT1KLnR5cGU/bmV3IFcuc2hvcnQoSik6ImVkd2FyZHMiPT09Si50eXBlP25ldyBXLmVkd2FyZHMoSik6bmV3IFcubW9udChKKSx0aGlzLmc9dGhpcy5jdXJ2ZS5nLHRoaXMubj10aGlz''@;'; put 'put ''LmN1cnZlLm4sdGhpcy5oYXNoPUouaGFzaCxOKHRoaXMuZy52YWxpZGF0ZSgpLCJJbnZhbGlkIGN1cnZlIiksTih0aGlzLmcubXVsKHRoaXMubikuaXNJbmZpbml0eSgpLCJJbnZhbGlkIGN1cnZlLCBHKk4gIT0gTyIpfWZ1bmN0aW9uIEsoSixzZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGFl''@;'; put 'put ''LEose2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3ZhciBvZT1uZXcgdGUoc2UpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoYWUsSix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6b2V9KSxvZX19KX1hZS5QcmVzZXRDdXJ2ZT10''@;'; put 'put ''ZSxLKCJwMTkyIix7dHlwZToic2hvcnQiLHByaW1lOiJwMTkyIixwOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIsYToiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmMiLGI6IjY0MjEwNTE5''@;'; put 'put ''IGU1OWM4MGU3IDBmYTdlOWFiIDcyMjQzMDQ5IGZlYjhkZWVjIGMxNDZiOWIxIixuOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiA5OWRlZjgzNiAxNDZiYzliMSBiNGQyMjgzMSIsaGFzaDpZLnNoYTI1NixnUmVkOiExLGc6WyIxODhkYTgwZSBiMDMwOTBmNiA3Y2JmMjBlYiA0M2ExODgw''@;'; put 'put ''MCBmNGZmMGFmZCA4MmZmMTAxMiIsIjA3MTkyYjk1IGZmYzhkYTc4IDYzMTAxMWVkIDZiMjRjZGQ1IDczZjk3N2ExIDFlNzk0ODExIl19KSxLKCJwMjI0Iix7dHlwZToic2hvcnQiLHByaW1lOiJwMjI0IixwOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAw''@;'; put 'put ''MDAwMDAwMCAwMDAwMDAwMSIsYToiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUiLGI6ImI0MDUwYTg1IDBjMDRiM2FiIGY1NDEzMjU2IDUwNDRiMGI3IGQ3YmZkOGJhIDI3MGIzOTQzIDIzNTVmZmI0IixuOiJmZmZmZmZmZiBm''@;'; put 'put ''ZmZmZmZmZiBmZmZmZmZmZiBmZmZmMTZhMiBlMGI4ZjAzZSAxM2RkMjk0NSA1YzVjMmEzZCIsaGFzaDpZLnNoYTI1NixnUmVkOiExLGc6WyJiNzBlMGNiZCA2YmI0YmY3ZiAzMjEzOTBiOSA0YTAzYzFkMyA1NmMyMTEyMiAzNDMyODBkNiAxMTVjMWQyMSIsImJkMzc2Mzg4IGI1ZjcyM2ZiIDRj''@;'; put 'put ''MjJkZmU2IGNkNDM3NWEwIDVhMDc0NzY0IDQ0ZDU4MTk5IDg1MDA3ZTM0Il19KSxLKCJwMjU2Iix7dHlwZToic2hvcnQiLHByaW1lOm51bGwscDoiZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYiLGE6ImZmZmZm''@;'; put 'put ''ZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjIixiOiI1YWM2MzVkOCBhYTNhOTNlNyBiM2ViYmQ1NSA3Njk4ODZiYyA2NTFkMDZiMCBjYzUzYjBmNiAzYmNlM2MzZSAyN2QyNjA0YiIsbjoiZmZmZmZmZmYgMDAwMDAwMDAg''@;'; put 'put ''ZmZmZmZmZmYgZmZmZmZmZmYgYmNlNmZhYWQgYTcxNzllODQgZjNiOWNhYzIgZmM2MzI1NTEiLGhhc2g6WS5zaGEyNTYsZ1JlZDohMSxnOlsiNmIxN2QxZjIgZTEyYzQyNDcgZjhiY2U2ZTUgNjNhNDQwZjIgNzcwMzdkODEgMmRlYjMzYTAgZjRhMTM5NDUgZDg5OGMyOTYiLCI0ZmUzNDJlMiBm''@;'; put 'put ''ZTFhN2Y5YiA4ZWU3ZWI0YSA3YzBmOWUxNiAyYmNlMzM1NyA2YjMxNWVjZSBjYmI2NDA2OCAzN2JmNTFmNSJdfSksSygicDM4NCIse3R5cGU6InNob3J0IixwcmltZTpudWxsLHA6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZm''@;'; put 'put ''IGZmZmZmZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIixhOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmYyIsYjoiYjMz''@;'; put 'put ''MTJmYTcgZTIzZWU3ZTQgOTg4ZTA1NmIgZTNmODJkMTkgMTgxZDljNmUgZmU4MTQxMTIgMDMxNDA4OGYgNTAxMzg3NWEgYzY1NjM5OGQgOGEyZWQxOWQgMmE4NWM4ZWQgZDNlYzJhZWYiLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGM3''@;'; put 'put ''NjM0ZDgxIGY0MzcyZGRmIDU4MWEwZGIyIDQ4YjBhNzdhIGVjZWMxOTZhIGNjYzUyOTczIixoYXNoOlkuc2hhMzg0LGdSZWQ6ITEsZzpbImFhODdjYTIyIGJlOGIwNTM3IDhlYjFjNzFlIGYzMjBhZDc0IDZlMWQzYjYyIDhiYTc5Yjk4IDU5Zjc0MWUwIDgyNTQyYTM4IDU1MDJmMjVkIGJmNTUy''@;'; put 'put ''OTZjIDNhNTQ1ZTM4IDcyNzYwYWI3IiwiMzYxN2RlNGEgOTYyNjJjNmYgNWQ5ZTk4YmYgOTI5MmRjMjkgZjhmNDFkYmQgMjg5YTE0N2MgZTlkYTMxMTMgYjVmMGI4YzAgMGE2MGIxY2UgMWQ3ZTgxOWQgN2E0MzFkN2MgOTBlYTBlNWYiXX0pLEsoInA1MjEiLHt0eXBlOiJzaG9ydCIscHJpbWU6''@;'; put 'put ''bnVsbCxwOiIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiIsYToi''@;'; put 'put ''MDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmMiLGI6IjAwMDAwMDUx''@;'; put 'put ''IDk1M2ViOTYxIDhlMWM5YTFmIDkyOWEyMWEwIGI2ODU0MGVlIGEyZGE3MjViIDk5YjMxNWYzIGI4YjQ4OTkxIDhlZjEwOWUxIDU2MTkzOTUxIGVjN2U5MzdiIDE2NTJjMGJkIDNiYjFiZjA3IDM1NzNkZjg4IDNkMmMzNGYxIGVmNDUxZmQ0IDZiNTAzZjAwIixuOiIwMDAwMDFmZiBmZmZmZmZm''@;'; put 'put ''ZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYSA1MTg2ODc4MyBiZjJmOTY2YiA3ZmNjMDE0OCBmNzA5YTVkMCAzYmI1YzliOCA4OTljNDdhZSBiYjZmYjcxZSA5MTM4NjQwOSIsaGFzaDpZLnNoYTUxMixnUmVkOiExLGc6WyIw''@;'; put 'put ''MDAwMDBjNiA4NThlMDZiNyAwNDA0ZTljZCA5ZTNlY2I2NiAyMzk1YjQ0MiA5YzY0ODEzOSAwNTNmYjUyMSBmODI4YWY2MCA2YjRkM2RiYSBhMTRiNWU3NyBlZmU3NTkyOCBmZTFkYzEyNyBhMmZmYThkZSAzMzQ4YjNjMSA4NTZhNDI5YiBmOTdlN2UzMSBjMmU1YmQ2NiIsIjAwMDAwMTE4IDM5''@;'; put 'put ''Mjk2YTc4IDlhM2JjMDA0IDVjOGE1ZmI0IDJjN2QxYmQ5IDk4ZjU0NDQ5IDU3OWI0NDY4IDE3YWZiZDE3IDI3M2U2NjJjIDk3ZWU3Mjk5IDVlZjQyNjQwIGM1NTBiOTAxIDNmYWQwNzYxIDM1M2M3MDg2IGEyNzJjMjQwIDg4YmU5NDc2IDlmZDE2NjUwIl19KSxLKCJjdXJ2ZTI1NTE5Iix7dHlw''@;'; put 'put ''ZToibW9udCIscHJpbWU6InAyNTUxOSIscDoiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIsYToiNzZkMDYiLGI6IjEiLG46IjEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2''@;'; put 'put ''IDU4MTI2MzFhNWNmNWQzZWQiLGhhc2g6WS5zaGEyNTYsZ1JlZDohMSxnOlsiOSJdfSksSygiZWQyNTUxOSIse3R5cGU6ImVkd2FyZHMiLHByaW1lOiJwMjU1MTkiLHA6IjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQi''@;'; put 'put ''LGE6Ii0xIixjOiIxIixkOiI1MjAzNmNlZTJiNmZmZTczIDhjYzc0MDc5Nzc3OWU4OTggMDA3MDBhNGQ0MTQxZDhhYiA3NWViNGRjYTEzNTk3OGEzIixuOiIxMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgMTRkZWY5ZGVhMmY3OWNkNiA1ODEyNjMxYTVjZjVkM2VkIixoYXNoOlku''@;'; put 'put ''c2hhMjU2LGdSZWQ6ITEsZzpbIjIxNjkzNmQzY2Q2ZTUzZmVjMGE0ZTIzMWZkZDZkYzVjNjkyY2M3NjA5NTI1YTdiMmM5NTYyZDYwOGYyNWQ1MWEiLCI2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjU4Il19KTt0cnl7cmU9aigx''@;'; put 'put ''MDM3KX1jYXRjaChKKXtyZT12b2lkIDB9Sygic2VjcDI1NmsxIix7dHlwZToic2hvcnQiLHByaW1lOiJrMjU2IixwOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIsYToiMCIsYjoiNyIsbjoiZmZmZmZmZmYg''@;'; put 'put ''ZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgYmFhZWRjZTYgYWY0OGEwM2IgYmZkMjVlOGMgZDAzNjQxNDEiLGg6IjEiLGhhc2g6WS5zaGEyNTYsYmV0YToiN2FlOTZhMmI2NTdjMDcxMDZlNjQ0NzllYWMzNDM0ZTk5Y2YwNDk3NTEyZjU4OTk1YzEzOTZjMjg3MTk1MDFlZSIsbGFtYmRhOiI1''@;'; put 'put ''MzYzYWQ0Y2MwNWMzMGUwYTUyNjFjMDI4ODEyNjQ1YTEyMmUyMmVhMjA4MTY2NzhkZjAyOTY3YzFiMjNiZDcyIixiYXNpczpbe2E6IjMwODZkMjIxYTdkNDZiY2RlODZjOTBlNDkyODRlYjE1IixiOiItZTQ0MzdlZDYwMTBlODgyODZmNTQ3ZmE5MGFiZmU0YzMifSx7YToiMTE0Y2E1MGY3YThl''@;'; put 'put ''MmYzZjY1N2MxMTA4ZDlkNDRjZmQ4IixiOiIzMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNSJ9XSxnUmVkOiExLGc6WyI3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAyOWJmY2RiMmRjZTI4ZDk1OWYyODE1YjE2ZjgxNzk4IiwiNDgzYWRhNzcyNmEzYzQ2NTVkYTRmYmZj''@;'; put 'put ''MGUxMTA4YThmZDE3YjQ0OGE2ODU1NDE5OWM0N2QwOGZmYjEwZDRiOCIscmVdfSl9LDc5NTQ6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aigzNzg1KSxhZT1qKDIxNTYpLFk9aig5NTMpLFc9aig1NDI3KSxOPWooOTkzMSksdGU9WS5hc3NlcnQsSz1qKDEyNTEpLEo9aig2MTEpO2Z1''@;'; put 'put ''bmN0aW9uIHNlKG9lKXtpZighKHRoaXMgaW5zdGFuY2VvZiBzZSkpcmV0dXJuIG5ldyBzZShvZSk7InN0cmluZyI9PXR5cGVvZiBvZSYmKHRlKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChXLG9lKSwiVW5rbm93biBjdXJ2ZSAiK29lKSxvZT1XW29lXSksb2UgaW5zdGFu''@;'; put 'put ''Y2VvZiBXLlByZXNldEN1cnZlJiYob2U9e2N1cnZlOm9lfSksdGhpcy5jdXJ2ZT1vZS5jdXJ2ZS5jdXJ2ZSx0aGlzLm49dGhpcy5jdXJ2ZS5uLHRoaXMubmg9dGhpcy5uLnVzaHJuKDEpLHRoaXMuZz10aGlzLmN1cnZlLmcsdGhpcy5nPW9lLmN1cnZlLmcsdGhpcy5nLnByZWNvbXB1dGUob2Uu''@;'; put 'put ''Y3VydmUubi5iaXRMZW5ndGgoKSsxKSx0aGlzLmhhc2g9b2UuaGFzaHx8b2UuY3VydmUuaGFzaH1VLmV4cG9ydHM9c2Usc2UucHJvdG90eXBlLmtleVBhaXI9ZnVuY3Rpb24ob2Upe3JldHVybiBuZXcgSyh0aGlzLG9lKX0sc2UucHJvdG90eXBlLmtleUZyb21Qcml2YXRlPWZ1bmN0aW9uKG9l''@;'; put 'put ''LGNlKXtyZXR1cm4gSy5mcm9tUHJpdmF0ZSh0aGlzLG9lLGNlKX0sc2UucHJvdG90eXBlLmtleUZyb21QdWJsaWM9ZnVuY3Rpb24ob2UsY2Upe3JldHVybiBLLmZyb21QdWJsaWModGhpcyxvZSxjZSl9LHNlLnByb3RvdHlwZS5nZW5LZXlQYWlyPWZ1bmN0aW9uKG9lKXtvZXx8KG9lPXt9KTtm''@;'; put 'put ''b3IodmFyIGNlPW5ldyBhZSh7aGFzaDp0aGlzLmhhc2gscGVyczpvZS5wZXJzLHBlcnNFbmM6b2UucGVyc0VuY3x8InV0ZjgiLGVudHJvcHk6b2UuZW50cm9weXx8Tih0aGlzLmhhc2guaG1hY1N0cmVuZ3RoKSxlbnRyb3B5RW5jOm9lLmVudHJvcHkmJm9lLmVudHJvcHlFbmN8fCJ1dGY4Iixu''@;'; put 'put ''b25jZTp0aGlzLm4udG9BcnJheSgpfSksZGU9dGhpcy5uLmJ5dGVMZW5ndGgoKSx2ZT10aGlzLm4uc3ViKG5ldyByZSgyKSk7Oyl7dmFyIEFlPW5ldyByZShjZS5nZW5lcmF0ZShkZSkpO2lmKCEoQWUuY21wKHZlKT4wKSlyZXR1cm4gQWUuaWFkZG4oMSksdGhpcy5rZXlGcm9tUHJpdmF0ZShB''@;'; put 'put ''ZSl9fSxzZS5wcm90b3R5cGUuX3RydW5jYXRlVG9OPWZ1bmN0aW9uKG9lLGNlKXt2YXIgZGU9OCpvZS5ieXRlTGVuZ3RoKCktdGhpcy5uLmJpdExlbmd0aCgpO3JldHVybiBkZT4wJiYob2U9b2UudXNocm4oZGUpKSwhY2UmJm9lLmNtcCh0aGlzLm4pPj0wP29lLnN1Yih0aGlzLm4pOm9lfSxz''@;'; put 'put ''ZS5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbihvZSxjZSxkZSx2ZSl7Im9iamVjdCI9PXR5cGVvZiBkZSYmKHZlPWRlLGRlPW51bGwpLHZlfHwodmU9e30pLGNlPXRoaXMua2V5RnJvbVByaXZhdGUoY2UsZGUpLG9lPXRoaXMuX3RydW5jYXRlVG9OKG5ldyByZShvZSwxNikpO2Zvcih2YXIgQWU9''@;'; put 'put ''dGhpcy5uLmJ5dGVMZW5ndGgoKSxrZT1jZS5nZXRQcml2YXRlKCkudG9BcnJheSgiYmUiLEFlKSxTZT1vZS50b0FycmF5KCJiZSIsQWUpLEllPW5ldyBhZSh7aGFzaDp0aGlzLmhhc2gsZW50cm9weTprZSxub25jZTpTZSxwZXJzOnZlLnBlcnMscGVyc0VuYzp2ZS5wZXJzRW5jfHwidXRmOCJ9''@;'; put 'put ''KSxUZT10aGlzLm4uc3ViKG5ldyByZSgxKSksTWU9MDs7TWUrKyl7dmFyIGhlPXZlLms/dmUuayhNZSk6bmV3IHJlKEllLmdlbmVyYXRlKHRoaXMubi5ieXRlTGVuZ3RoKCkpKTtpZighKChoZT10aGlzLl90cnVuY2F0ZVRvTihoZSwhMCkpLmNtcG4oMSk8PTB8fGhlLmNtcChUZSk+PTApKXt2''@;'; put 'put ''YXIgTz10aGlzLmcubXVsKGhlKTtpZighTy5pc0luZmluaXR5KCkpe3ZhciB6PU8uZ2V0WCgpLGVlPXoudW1vZCh0aGlzLm4pO2lmKDAhPT1lZS5jbXBuKDApKXt2YXIgbmU9aGUuaW52bSh0aGlzLm4pLm11bChlZS5tdWwoY2UuZ2V0UHJpdmF0ZSgpKS5pYWRkKG9lKSk7aWYoMCE9PShuZT1u''@;'; put 'put ''ZS51bW9kKHRoaXMubikpLmNtcG4oMCkpe3ZhciB4PShPLmdldFkoKS5pc09kZCgpPzE6MCl8KDAhPT16LmNtcChlZSk/MjowKTtyZXR1cm4gdmUuY2Fub25pY2FsJiZuZS5jbXAodGhpcy5uaCk+MCYmKG5lPXRoaXMubi5zdWIobmUpLHhePTEpLG5ldyBKKHtyOmVlLHM6bmUscmVjb3ZlcnlQ''@;'; put 'put ''YXJhbTp4fSl9fX19fX0sc2UucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbihvZSxjZSxkZSx2ZSl7b2U9dGhpcy5fdHJ1bmNhdGVUb04obmV3IHJlKG9lLDE2KSksZGU9dGhpcy5rZXlGcm9tUHVibGljKGRlLHZlKTt2YXIgQWU9KGNlPW5ldyBKKGNlLCJoZXgiKSkucixrZT1jZS5zO2lmKEFl''@;'; put 'put ''LmNtcG4oMSk8MHx8QWUuY21wKHRoaXMubik+PTB8fGtlLmNtcG4oMSk8MHx8a2UuY21wKHRoaXMubik+PTApcmV0dXJuITE7dmFyIFNlLEllPWtlLmludm0odGhpcy5uKSxUZT1JZS5tdWwob2UpLnVtb2QodGhpcy5uKSxNZT1JZS5tdWwoQWUpLnVtb2QodGhpcy5uKTtyZXR1cm4gdGhpcy5j''@;'; put 'put ''dXJ2ZS5fbWF4d2VsbFRyaWNrPyEoU2U9dGhpcy5nLmptdWxBZGQoVGUsZGUuZ2V0UHVibGljKCksTWUpKS5pc0luZmluaXR5KCkmJlNlLmVxWFRvUChBZSk6IShTZT10aGlzLmcubXVsQWRkKFRlLGRlLmdldFB1YmxpYygpLE1lKSkuaXNJbmZpbml0eSgpJiYwPT09U2UuZ2V0WCgpLnVtb2Qo''@;'; put 'put ''dGhpcy5uKS5jbXAoQWUpfSxzZS5wcm90b3R5cGUucmVjb3ZlclB1YktleT1mdW5jdGlvbihvZSxjZSxkZSx2ZSl7dGUoKDMmZGUpPT09ZGUsIlRoZSByZWNvdmVyeSBwYXJhbSBpcyBtb3JlIHRoYW4gdHdvIGJpdHMiKSxjZT1uZXcgSihjZSx2ZSk7dmFyIEFlPXRoaXMubixrZT1uZXcgcmUo''@;'; put 'put ''b2UpLFNlPWNlLnIsSWU9Y2UucyxUZT0xJmRlLE1lPWRlPj4xO2lmKFNlLmNtcCh0aGlzLmN1cnZlLnAudW1vZCh0aGlzLmN1cnZlLm4pKT49MCYmTWUpdGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZmluZCBzZW5jb25kIGtleSBjYW5kaW5hdGUiKTtTZT10aGlzLmN1cnZlLnBvaW50RnJv''@;'; put 'put ''bVgoTWU/U2UuYWRkKHRoaXMuY3VydmUubik6U2UsVGUpO3ZhciBoZT1jZS5yLmludm0oQWUpLE89QWUuc3ViKGtlKS5tdWwoaGUpLnVtb2QoQWUpLHo9SWUubXVsKGhlKS51bW9kKEFlKTtyZXR1cm4gdGhpcy5nLm11bEFkZChPLFNlLHopfSxzZS5wcm90b3R5cGUuZ2V0S2V5UmVjb3ZlcnlQ''@;'; put 'put ''YXJhbT1mdW5jdGlvbihvZSxjZSxkZSx2ZSl7aWYobnVsbCE9PShjZT1uZXcgSihjZSx2ZSkpLnJlY292ZXJ5UGFyYW0pcmV0dXJuIGNlLnJlY292ZXJ5UGFyYW07Zm9yKHZhciBBZT0wO0FlPDQ7QWUrKyl7dmFyIGtlO3RyeXtrZT10aGlzLnJlY292ZXJQdWJLZXkob2UsY2UsQWUpfWNhdGNo''@;'; put 'put ''KFNlKXtjb250aW51ZX1pZihrZS5lcShkZSkpcmV0dXJuIEFlfXRocm93IG5ldyBFcnJvcigiVW5hYmxlIHRvIGZpbmQgdmFsaWQgcmVjb3ZlcnkgZmFjdG9yIil9fSwxMjUxOihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooMzc4NSksYWU9aig5NTMpLmFzc2VydDtmdW5jdGlvbiBZ''@;'; put 'put ''KFcsTil7dGhpcy5lYz1XLHRoaXMucHJpdj1udWxsLHRoaXMucHViPW51bGwsTi5wcml2JiZ0aGlzLl9pbXBvcnRQcml2YXRlKE4ucHJpdixOLnByaXZFbmMpLE4ucHViJiZ0aGlzLl9pbXBvcnRQdWJsaWMoTi5wdWIsTi5wdWJFbmMpfVUuZXhwb3J0cz1ZLFkuZnJvbVB1YmxpYz1mdW5jdGlv''@;'; put 'put ''bihXLE4sdGUpe3JldHVybiBOIGluc3RhbmNlb2YgWT9OOm5ldyBZKFcse3B1YjpOLHB1YkVuYzp0ZX0pfSxZLmZyb21Qcml2YXRlPWZ1bmN0aW9uKFcsTix0ZSl7cmV0dXJuIE4gaW5zdGFuY2VvZiBZP046bmV3IFkoVyx7cHJpdjpOLHByaXZFbmM6dGV9KX0sWS5wcm90b3R5cGUudmFsaWRh''@;'; put 'put ''dGU9ZnVuY3Rpb24oKXt2YXIgVz10aGlzLmdldFB1YmxpYygpO3JldHVybiBXLmlzSW5maW5pdHkoKT97cmVzdWx0OiExLHJlYXNvbjoiSW52YWxpZCBwdWJsaWMga2V5In06Vy52YWxpZGF0ZSgpP1cubXVsKHRoaXMuZWMuY3VydmUubikuaXNJbmZpbml0eSgpP3tyZXN1bHQ6ITAscmVhc29u''@;'; put 'put ''Om51bGx9OntyZXN1bHQ6ITEscmVhc29uOiJQdWJsaWMga2V5ICogTiAhPSBPIn06e3Jlc3VsdDohMSxyZWFzb246IlB1YmxpYyBrZXkgaXMgbm90IGEgcG9pbnQifX0sWS5wcm90b3R5cGUuZ2V0UHVibGljPWZ1bmN0aW9uKFcsTil7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBXJiYoTj1XLFc9''@;'; put 'put ''bnVsbCksdGhpcy5wdWJ8fCh0aGlzLnB1Yj10aGlzLmVjLmcubXVsKHRoaXMucHJpdikpLE4/dGhpcy5wdWIuZW5jb2RlKE4sVyk6dGhpcy5wdWJ9LFkucHJvdG90eXBlLmdldFByaXZhdGU9ZnVuY3Rpb24oVyl7cmV0dXJuImhleCI9PT1XP3RoaXMucHJpdi50b1N0cmluZygxNiwyKTp0aGlz''@;'; put 'put ''LnByaXZ9LFkucHJvdG90eXBlLl9pbXBvcnRQcml2YXRlPWZ1bmN0aW9uKFcsTil7dGhpcy5wcml2PW5ldyByZShXLE58fDE2KSx0aGlzLnByaXY9dGhpcy5wcml2LnVtb2QodGhpcy5lYy5jdXJ2ZS5uKX0sWS5wcm90b3R5cGUuX2ltcG9ydFB1YmxpYz1mdW5jdGlvbihXLE4pe2lmKFcueHx8''@;'; put 'put ''Vy55KXJldHVybiJtb250Ij09PXRoaXMuZWMuY3VydmUudHlwZT9hZShXLngsIk5lZWQgeCBjb29yZGluYXRlIik6InNob3J0IiE9PXRoaXMuZWMuY3VydmUudHlwZSYmImVkd2FyZHMiIT09dGhpcy5lYy5jdXJ2ZS50eXBlfHxhZShXLngmJlcueSwiTmVlZCBib3RoIHggYW5kIHkgY29vcmRp''@;'; put 'put ''bmF0ZSIpLHZvaWQodGhpcy5wdWI9dGhpcy5lYy5jdXJ2ZS5wb2ludChXLngsVy55KSk7dGhpcy5wdWI9dGhpcy5lYy5jdXJ2ZS5kZWNvZGVQb2ludChXLE4pfSxZLnByb3RvdHlwZS5kZXJpdmU9ZnVuY3Rpb24oVyl7cmV0dXJuIFcudmFsaWRhdGUoKXx8YWUoVy52YWxpZGF0ZSgpLCJwdWJs''@;'; put 'put ''aWMgcG9pbnQgbm90IHZhbGlkYXRlZCIpLFcubXVsKHRoaXMucHJpdikuZ2V0WCgpfSxZLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKFcsTix0ZSl7cmV0dXJuIHRoaXMuZWMuc2lnbihXLHRoaXMsTix0ZSl9LFkucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbihXLE4pe3JldHVybiB0aGlzLmVj''@;'; put 'put ''LnZlcmlmeShXLE4sdGhpcyl9LFkucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4iPEtleSBwcml2OiAiKyh0aGlzLnByaXYmJnRoaXMucHJpdi50b1N0cmluZygxNiwyKSkrIiBwdWI6ICIrKHRoaXMucHViJiZ0aGlzLnB1Yi5pbnNwZWN0KCkpKyIgPiJ9fSw2MTE6KFUsUSxq''@;'; put 'put ''KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aigzNzg1KSxhZT1qKDk1MyksWT1hZS5hc3NlcnQ7ZnVuY3Rpb24gVyhzZSxvZSl7aWYoc2UgaW5zdGFuY2VvZiBXKXJldHVybiBzZTt0aGlzLl9pbXBvcnRERVIoc2Usb2UpfHwoWShzZS5yJiZzZS5zLCJTaWduYXR1cmUgd2l0aG91dCByIG9yIHMi''@;'; put 'put ''KSx0aGlzLnI9bmV3IHJlKHNlLnIsMTYpLHRoaXMucz1uZXcgcmUoc2UucywxNiksdGhpcy5yZWNvdmVyeVBhcmFtPXZvaWQgMD09PXNlLnJlY292ZXJ5UGFyYW0/bnVsbDpzZS5yZWNvdmVyeVBhcmFtKX1mdW5jdGlvbiBOKCl7dGhpcy5wbGFjZT0wfWZ1bmN0aW9uIHRlKHNlLG9lKXt2YXIg''@;'; put 'put ''Y2U9c2Vbb2UucGxhY2UrK107aWYoISgxMjgmY2UpKXJldHVybiBjZTt2YXIgZGU9MTUmY2U7aWYoMD09PWRlfHxkZT40KXJldHVybiExO2Zvcih2YXIgdmU9MCxBZT0wLGtlPW9lLnBsYWNlO0FlPGRlO0FlKyssa2UrKyl2ZTw8PTgsdmV8PXNlW2tlXSx2ZT4+Pj0wO3JldHVybiEodmU8PTEy''@;'; put 'put ''NykmJihvZS5wbGFjZT1rZSx2ZSl9ZnVuY3Rpb24gSyhzZSl7Zm9yKHZhciBvZT0wLGNlPXNlLmxlbmd0aC0xOyFzZVtvZV0mJiEoMTI4JnNlW29lKzFdKSYmb2U8Y2U7KW9lKys7cmV0dXJuIDA9PT1vZT9zZTpzZS5zbGljZShvZSl9ZnVuY3Rpb24gSihzZSxvZSl7aWYob2U8MTI4KXNlLnB1''@;'; put 'put ''c2gob2UpO2Vsc2V7dmFyIGNlPTErKE1hdGgubG9nKG9lKS9NYXRoLkxOMj4+PjMpO2ZvcihzZS5wdXNoKDEyOHxjZSk7LS1jZTspc2UucHVzaChvZT4+PihjZTw8MykmMjU1KTtzZS5wdXNoKG9lKX19VS5leHBvcnRzPVcsVy5wcm90b3R5cGUuX2ltcG9ydERFUj1mdW5jdGlvbihzZSxvZSl7''@;'; put 'put ''c2U9YWUudG9BcnJheShzZSxvZSk7dmFyIGNlPW5ldyBOO2lmKDQ4IT09c2VbY2UucGxhY2UrK10pcmV0dXJuITE7dmFyIGRlPXRlKHNlLGNlKTtpZighMT09PWRlfHxkZStjZS5wbGFjZSE9PXNlLmxlbmd0aHx8MiE9PXNlW2NlLnBsYWNlKytdKXJldHVybiExO3ZhciB2ZT10ZShzZSxjZSk7''@;'; put 'put ''aWYoITE9PT12ZSlyZXR1cm4hMTt2YXIgQWU9c2Uuc2xpY2UoY2UucGxhY2UsdmUrY2UucGxhY2UpO2lmKGNlLnBsYWNlKz12ZSwyIT09c2VbY2UucGxhY2UrK10pcmV0dXJuITE7dmFyIGtlPXRlKHNlLGNlKTtpZighMT09PWtlfHxzZS5sZW5ndGghPT1rZStjZS5wbGFjZSlyZXR1cm4hMTt2''@;'; put 'put ''YXIgU2U9c2Uuc2xpY2UoY2UucGxhY2Usa2UrY2UucGxhY2UpO2lmKDA9PT1BZVswXSl7aWYoISgxMjgmQWVbMV0pKXJldHVybiExO0FlPUFlLnNsaWNlKDEpfWlmKDA9PT1TZVswXSl7aWYoISgxMjgmU2VbMV0pKXJldHVybiExO1NlPVNlLnNsaWNlKDEpfXJldHVybiB0aGlzLnI9bmV3IHJl''@;'; put 'put ''KEFlKSx0aGlzLnM9bmV3IHJlKFNlKSx0aGlzLnJlY292ZXJ5UGFyYW09bnVsbCwhMH0sVy5wcm90b3R5cGUudG9ERVI9ZnVuY3Rpb24oc2Upe3ZhciBvZT10aGlzLnIudG9BcnJheSgpLGNlPXRoaXMucy50b0FycmF5KCk7Zm9yKDEyOCZvZVswXSYmKG9lPVswXS5jb25jYXQob2UpKSwxMjgm''@;'; put 'put ''Y2VbMF0mJihjZT1bMF0uY29uY2F0KGNlKSksb2U9SyhvZSksY2U9SyhjZSk7IShjZVswXXx8MTI4JmNlWzFdKTspY2U9Y2Uuc2xpY2UoMSk7dmFyIGRlPVsyXTtKKGRlLG9lLmxlbmd0aCksKGRlPWRlLmNvbmNhdChvZSkpLnB1c2goMiksSihkZSxjZS5sZW5ndGgpO3ZhciB2ZT1kZS5jb25j''@;'; put 'put ''YXQoY2UpLEFlPVs0OF07cmV0dXJuIEooQWUsdmUubGVuZ3RoKSxBZT1BZS5jb25jYXQodmUpLGFlLmVuY29kZShBZSxzZSl9fSw1OTgwOihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooMzcxNSksYWU9aig1NDI3KSxZPWooOTUzKSxXPVkuYXNzZXJ0LE49WS5wYXJzZUJ5dGVzLHRl''@;'; put 'put ''PWooOTA4NyksSz1qKDM2MjIpO2Z1bmN0aW9uIEooc2Upe2lmKFcoImVkMjU1MTkiPT09c2UsIm9ubHkgdGVzdGVkIHdpdGggZWQyNTUxOSBzbyBmYXIiKSwhKHRoaXMgaW5zdGFuY2VvZiBKKSlyZXR1cm4gbmV3IEooc2UpO3RoaXMuY3VydmU9c2U9YWVbc2VdLmN1cnZlLHRoaXMuZz1zZS5n''@;'; put 'put ''LHRoaXMuZy5wcmVjb21wdXRlKHNlLm4uYml0TGVuZ3RoKCkrMSksdGhpcy5wb2ludENsYXNzPXNlLnBvaW50KCkuY29uc3RydWN0b3IsdGhpcy5lbmNvZGluZ0xlbmd0aD1NYXRoLmNlaWwoc2Uubi5iaXRMZW5ndGgoKS84KSx0aGlzLmhhc2g9cmUuc2hhNTEyfVUuZXhwb3J0cz1KLEoucHJv''@;'; put 'put ''dG90eXBlLnNpZ249ZnVuY3Rpb24oc2Usb2Upe3NlPU4oc2UpO3ZhciBjZT10aGlzLmtleUZyb21TZWNyZXQob2UpLGRlPXRoaXMuaGFzaEludChjZS5tZXNzYWdlUHJlZml4KCksc2UpLHZlPXRoaXMuZy5tdWwoZGUpLEFlPXRoaXMuZW5jb2RlUG9pbnQodmUpLGtlPXRoaXMuaGFzaEludChB''@;'; put 'put ''ZSxjZS5wdWJCeXRlcygpLHNlKS5tdWwoY2UucHJpdigpKSxTZT1kZS5hZGQoa2UpLnVtb2QodGhpcy5jdXJ2ZS5uKTtyZXR1cm4gdGhpcy5tYWtlU2lnbmF0dXJlKHtSOnZlLFM6U2UsUmVuY29kZWQ6QWV9KX0sSi5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKHNlLG9lLGNlKXtzZT1OKHNl''@;'; put 'put ''KSxvZT10aGlzLm1ha2VTaWduYXR1cmUob2UpO3ZhciBkZT10aGlzLmtleUZyb21QdWJsaWMoY2UpLHZlPXRoaXMuaGFzaEludChvZS5SZW5jb2RlZCgpLGRlLnB1YkJ5dGVzKCksc2UpLEFlPXRoaXMuZy5tdWwob2UuUygpKTtyZXR1cm4gb2UuUigpLmFkZChkZS5wdWIoKS5tdWwodmUpKS5l''@;'; put 'put ''cShBZSl9LEoucHJvdG90eXBlLmhhc2hJbnQ9ZnVuY3Rpb24oKXtmb3IodmFyIHNlPXRoaXMuaGFzaCgpLG9lPTA7b2U8YXJndW1lbnRzLmxlbmd0aDtvZSsrKXNlLnVwZGF0ZShhcmd1bWVudHNbb2VdKTtyZXR1cm4gWS5pbnRGcm9tTEUoc2UuZGlnZXN0KCkpLnVtb2QodGhpcy5jdXJ2ZS5u''@;'; put 'put ''KX0sSi5wcm90b3R5cGUua2V5RnJvbVB1YmxpYz1mdW5jdGlvbihzZSl7cmV0dXJuIHRlLmZyb21QdWJsaWModGhpcyxzZSl9LEoucHJvdG90eXBlLmtleUZyb21TZWNyZXQ9ZnVuY3Rpb24oc2Upe3JldHVybiB0ZS5mcm9tU2VjcmV0KHRoaXMsc2UpfSxKLnByb3RvdHlwZS5tYWtlU2lnbmF0''@;'; put 'put ''dXJlPWZ1bmN0aW9uKHNlKXtyZXR1cm4gc2UgaW5zdGFuY2VvZiBLP3NlOm5ldyBLKHRoaXMsc2UpfSxKLnByb3RvdHlwZS5lbmNvZGVQb2ludD1mdW5jdGlvbihzZSl7dmFyIG9lPXNlLmdldFkoKS50b0FycmF5KCJsZSIsdGhpcy5lbmNvZGluZ0xlbmd0aCk7cmV0dXJuIG9lW3RoaXMuZW5j''@;'; put 'put ''b2RpbmdMZW5ndGgtMV18PXNlLmdldFgoKS5pc09kZCgpPzEyODowLG9lfSxKLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbihzZSl7dmFyIG9lPShzZT1ZLnBhcnNlQnl0ZXMoc2UpKS5sZW5ndGgtMSxjZT1zZS5zbGljZSgwLG9lKS5jb25jYXQoLTEyOSZzZVtvZV0pLGRlPTAhPSgx''@;'; put 'put ''Mjgmc2Vbb2VdKSx2ZT1ZLmludEZyb21MRShjZSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnRGcm9tWSh2ZSxkZSl9LEoucHJvdG90eXBlLmVuY29kZUludD1mdW5jdGlvbihzZSl7cmV0dXJuIHNlLnRvQXJyYXkoImxlIix0aGlzLmVuY29kaW5nTGVuZ3RoKX0sSi5wcm90b3R5cGUuZGVjb2Rl''@;'; put 'put ''SW50PWZ1bmN0aW9uKHNlKXtyZXR1cm4gWS5pbnRGcm9tTEUoc2UpfSxKLnByb3RvdHlwZS5pc1BvaW50PWZ1bmN0aW9uKHNlKXtyZXR1cm4gc2UgaW5zdGFuY2VvZiB0aGlzLnBvaW50Q2xhc3N9fSw5MDg3OihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooOTUzKSxhZT1yZS5hc3Nl''@;'; put 'put ''cnQsWT1yZS5wYXJzZUJ5dGVzLFc9cmUuY2FjaGVkUHJvcGVydHk7ZnVuY3Rpb24gTih0ZSxLKXt0aGlzLmVkZHNhPXRlLHRoaXMuX3NlY3JldD1ZKEsuc2VjcmV0KSx0ZS5pc1BvaW50KEsucHViKT90aGlzLl9wdWI9Sy5wdWI6dGhpcy5fcHViQnl0ZXM9WShLLnB1Yil9Ti5mcm9tUHVibGlj''@;'; put 'put ''PWZ1bmN0aW9uKHRlLEspe3JldHVybiBLIGluc3RhbmNlb2YgTj9LOm5ldyBOKHRlLHtwdWI6S30pfSxOLmZyb21TZWNyZXQ9ZnVuY3Rpb24odGUsSyl7cmV0dXJuIEsgaW5zdGFuY2VvZiBOP0s6bmV3IE4odGUse3NlY3JldDpLfSl9LE4ucHJvdG90eXBlLnNlY3JldD1mdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl9zZWNyZXR9LFcoTiwicHViQnl0ZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5wdWIoKSl9KSxXKE4sInB1YiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHViQnl0ZXM/dGhpcy5lZGRzYS5kZWNvZGVQb2ludCh0aGlzLl9wdWJC''@;'; put 'put ''eXRlcyk6dGhpcy5lZGRzYS5nLm11bCh0aGlzLnByaXYoKSl9KSxXKE4sInByaXZCeXRlcyIsZnVuY3Rpb24oKXt2YXIgdGU9dGhpcy5lZGRzYSxLPXRoaXMuaGFzaCgpLEo9dGUuZW5jb2RpbmdMZW5ndGgtMSxzZT1LLnNsaWNlKDAsdGUuZW5jb2RpbmdMZW5ndGgpO3JldHVybiBzZVswXSY9''@;'; put 'put ''MjQ4LHNlW0pdJj0xMjcsc2VbSl18PTY0LHNlfSksVyhOLCJwcml2IixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmRlY29kZUludCh0aGlzLnByaXZCeXRlcygpKX0pLFcoTiwiaGFzaCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5oYXNoKCkudXBkYXRlKHRoaXMuc2VjcmV0''@;'; put 'put ''KCkpLmRpZ2VzdCgpfSksVyhOLCJtZXNzYWdlUHJlZml4IixmdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc2goKS5zbGljZSh0aGlzLmVkZHNhLmVuY29kaW5nTGVuZ3RoKX0pLE4ucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24odGUpe3JldHVybiBhZSh0aGlzLl9zZWNyZXQsIktleVBhaXIgY2Fu''@;'; put 'put ''IG9ubHkgdmVyaWZ5IiksdGhpcy5lZGRzYS5zaWduKHRlLHRoaXMpfSxOLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24odGUsSyl7cmV0dXJuIHRoaXMuZWRkc2EudmVyaWZ5KHRlLEssdGhpcyl9LE4ucHJvdG90eXBlLmdldFNlY3JldD1mdW5jdGlvbih0ZSl7cmV0dXJuIGFlKHRoaXMuX3Nl''@;'; put 'put ''Y3JldCwiS2V5UGFpciBpcyBwdWJsaWMgb25seSIpLHJlLmVuY29kZSh0aGlzLnNlY3JldCgpLHRlKX0sTi5wcm90b3R5cGUuZ2V0UHVibGljPWZ1bmN0aW9uKHRlKXtyZXR1cm4gcmUuZW5jb2RlKHRoaXMucHViQnl0ZXMoKSx0ZSl9LFUuZXhwb3J0cz1OfSwzNjIyOihVLFEsaik9PnsidXNl''@;'; put 'put ''IHN0cmljdCI7dmFyIHJlPWooMzc4NSksYWU9aig5NTMpLFk9YWUuYXNzZXJ0LFc9YWUuY2FjaGVkUHJvcGVydHksTj1hZS5wYXJzZUJ5dGVzO2Z1bmN0aW9uIHRlKEssSil7dGhpcy5lZGRzYT1LLCJvYmplY3QiIT10eXBlb2YgSiYmKEo9TihKKSksQXJyYXkuaXNBcnJheShKKSYmKEo9e1I6''@;'; put 'put ''Si5zbGljZSgwLEsuZW5jb2RpbmdMZW5ndGgpLFM6Si5zbGljZShLLmVuY29kaW5nTGVuZ3RoKX0pLFkoSi5SJiZKLlMsIlNpZ25hdHVyZSB3aXRob3V0IFIgb3IgUyIpLEsuaXNQb2ludChKLlIpJiYodGhpcy5fUj1KLlIpLEouUyBpbnN0YW5jZW9mIHJlJiYodGhpcy5fUz1KLlMpLHRoaXMu''@;'; put 'put ''X1JlbmNvZGVkPUFycmF5LmlzQXJyYXkoSi5SKT9KLlI6Si5SZW5jb2RlZCx0aGlzLl9TZW5jb2RlZD1BcnJheS5pc0FycmF5KEouUyk/Si5TOkouU2VuY29kZWR9Vyh0ZSwiUyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5TZW5jb2RlZCgpKX0pLFcodGUs''@;'; put 'put ''IlIiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlUG9pbnQodGhpcy5SZW5jb2RlZCgpKX0pLFcodGUsIlJlbmNvZGVkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMuUigpKX0pLFcodGUsIlNlbmNvZGVkIixmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLmVkZHNhLmVuY29kZUludCh0aGlzLlMoKSl9KSx0ZS5wcm90b3R5cGUudG9CeXRlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLlJlbmNvZGVkKCkuY29uY2F0KHRoaXMuU2VuY29kZWQoKSl9LHRlLnByb3RvdHlwZS50b0hleD1mdW5jdGlvbigpe3JldHVybiBhZS5lbmNvZGUodGhp''@;'; put 'put ''cy50b0J5dGVzKCksImhleCIpLnRvVXBwZXJDYXNlKCl9LFUuZXhwb3J0cz10ZX0sMTAzNzpVPT57VS5leHBvcnRzPXtkb3VibGVzOntzdGVwOjQscG9pbnRzOltbImU2MGZjZTkzYjU5ZTllYzUzMDExYWFiYzIxYzIzZTk3YjJhMzEzNjliODdhNWFlOWM0NGVlODllMmE2ZGVjMGEiLCJmN2Uz''@;'; put 'put ''NTA3Mzk5ZTU5NTkyOWRiOTlmMzRmNTc5MzcxMDEyOTY4OTFlNDRkMjNmMGJlMWYzMmNjZTY5NjE2ODIxIl0sWyI4MjgyMjYzMjEyYzYwOWQ5ZWEyYTZlM2UxNzJkZTIzOGQ4YzM5Y2FiZDVhYzFjYTEwNjQ2ZTIzZmQ1ZjUxNTA4IiwiMTFmOGE4MDk4NTU3ZGZlNDVlODI1NmU4MzBiNjBhY2U2''@;'; put 'put ''MmQ2MTNhYzJmN2IxN2JlZDMxYjZlYWZmNmUyNmNhZiJdLFsiMTc1ZTE1OWY3MjhiODY1YTcyZjk5Y2M2YzZmYzg0NmRlMGI5MzgzM2ZkMjIyMmVkNzNmY2U1YjU1MWU1YjczOSIsImQzNTA2ZTBkOWUzYzc5ZWJhNGVmOTdhNTFmZjcxZjVlYWNiNTk1NWFkZDI0MzQ1YzZlZmE2ZmZlZTlmZWQ2''@;'; put 'put ''OTUiXSxbIjM2M2Q5MGQ0NDdiMDBjOWM5OWNlYWMwNWI2MjYyZWUwNTM0NDFjN2U1NTU1MmZmZTUyNmJhZDhmODNmZjQ2NDAiLCI0ZTI3M2FkZmM3MzIyMjE5NTNiNDQ1Mzk3ZjMzNjMxNDViOWE4OTAwODE5OWVjYjYyMDAzYzdmM2JlZTlkZTkiXSxbIjhiNGI1ZjE2NWRmM2MyYmU4YzYyNDRi''@;'; put 'put ''NWI3NDU2Mzg4NDNlNGE3ODFhMTViY2QxYjY5Zjc5YTU1ZGZmZGY4MGMiLCI0YWFkMGE2ZjY4ZDMwOGI0YjNmYmQ3ODEzYWIwZGEwNGY5ZTMzNjU0NjE2MmVlNTZiM2VmZjBjNjVmZDRmZDM2Il0sWyI3MjNjYmFhNmU1ZGI5OTZkNmJmNzcxYzAwYmQ1NDhjN2I3MDBkYmZmYTZjMGU3N2JjYjYx''@;'; put 'put ''MTU5MjUyMzJmY2RhIiwiOTZlODY3YjU1OTVjYzQ5OGE5MjExMzc0ODg4MjRkNmUyNjYwYTA2NTM3Nzk0OTQ4MDFkYzA2OWQ5ZWIzOWY1ZiJdLFsiZWViZmE0ZDQ5M2JlYmY5OGJhNWZlZWM4MTJjMmQzYjUwOTQ3OTYxMjM3YTkxOTgzOWE1MzNlY2EwZTdkZDdmYSIsIjVkOWE4Y2EzOTcwZWYw''@;'; put 'put ''ZjI2OWVlN2VkYWYxNzgwODlkOWFlNGNkYzNhNzExZjcxMmRkZmQ0ZmRhZTFkZTg5OTkiXSxbIjEwMGY0NGRhNjk2ZTcxNjcyNzkxZDBhMDliN2JkZTQ1OWYxMjE1YTI5YjNjMDNiZmVmZDc4MzViMzlhNDhkYjAiLCJjZGQ5ZTEzMTkyYTAwYjc3MmVjOGYzMzAwYzA5MDY2NmI3ZmY0YTE4ZmY1''@;'; put 'put ''MTk1YWMwZmJkNWNkNjJiYzY1YTA5Il0sWyJlMTAzMWJlMjYyYzdlZDFiMWRjOTIyN2E0YTA0YzAxN2E3N2Y4ZDQ0NjRmM2IzODUyYzhhY2RlNmU1MzRmZDJkIiwiOWQ3MDYxOTI4OTQwNDA1ZTZiYjZhNDE3NjU5NzUzNWFmMjkyZGQ0MTllMWNlZDc5YTQ0ZjE4ZjI5NDU2YTAwZCJdLFsiZmVl''@;'; put 'put ''YTZjYWU0NmQ1NWI1MzBhYzI4MzlmMTQzYmQ3ZWM1Y2Y4YjI2NmE0MWQ2YWY1MmQ1ZTY4OGQ5MDk0Njk2ZCIsImU1N2M2YjZjOTdkY2UxYmFiMDZlNGUxMmJmM2VjZDVjOTgxYzg5NTdjYzQxNDQyZDMxNTVkZWJmMTgwOTAwODgiXSxbImRhNjdhOTFkOTEwNDljZGNiMzY3YmU0YmU2ZmZjYTNj''@;'; put 'put ''ZmVlZDY1N2Q4MDg1ODNkZTMzZmE5NzhiYzFlYzZjYjEiLCI5YmFjYWEzNTQ4MTY0MmJjNDFmNDYzZjdlYzk3ODBlNWRlYzdhZGM1MDhmNzQwYTE3ZTllYThlMjdhNjhiZTFkIl0sWyI1MzkwNGZhYTBiMzM0Y2RkYTZlMDAwOTM1ZWYyMjE1MWVjMDhkMGY3YmIxMTA2OWY1NzU0NWNjYzFhMzdi''@;'; put 'put ''N2MwIiwiNWJjMDg3ZDBiYzgwMTA2ZDg4YzllY2NhYzIwZDNjMWMxMzk5OTk4MWUxNDQzNDY5OWRjYjA5NmIwMjI3NzFjOCJdLFsiOGU3YmNkMGJkMzU5ODNhNzcxOWNjYTc3NjRjYTkwNjc3OWI1M2EwNDNhOWI4YmNhZWZmOTU5ZjQzYWQ4NjA0NyIsIjEwYjc3NzBiMmEzZGE0YjM5NDAzMTA0''@;'; put 'put ''MjBjYTk1MTQ1NzllODhlMmU0N2ZkNjhiM2VhMTAwNDdlODQ2MDM3MmEiXSxbIjM4NWVlZDM0YzFjZGZmMjFlNmQwODE4Njg5YjgxYmRlNzFhN2Y0ZjE4Mzk3ZTY2OTBhODQxZTE1OTljNDM4NjIiLCIyODNiZWJjM2U4ZWEyM2Y1NjcwMWRlMTllOWViZjQ1NzZiMzA0ZWVjMjA4NmRjOGNjMDQ1''@;'; put 'put ''OGZlNTU0MmU1NDUzIl0sWyI2ZjlkOWI4MDNlY2YxOTE2MzdjNzNhNDQxM2RmYTE4MGZkZGY4NGE1OTQ3ZmJjOWM2MDZlZDg2YzNmYWMzYTciLCI3YzgwYzY4ZTYwMzA1OWJhNjliOGUyYTMwZTQ1YzRkNDdlYTRkZDJmNWMyODEwMDJkODY4OTA2MDNhODQyMTYwIl0sWyIzMzIyZDQwMTI0M2M0''@;'; put 'put ''ZTI1ODJhMjE0N2MxMDRkNmVjYmY3NzRkMTYzZGIwZjVlNTMxM2I3ZTBlNzQyZDBlNmJkIiwiNTZlNzA3OTdlOTY2NGVmNWJmYjAxOWJjNGRkYWY5YjcyODA1ZjYzZWEyODczYWY2MjRmM2EyZTk2YzI4YjJhMCJdLFsiODU2NzJjN2QyZGUwYjdkYTJiZDE3NzBkODk2NjU4Njg3NDFiM2Y5YWY3''@;'; put 'put ''NjQzMzk3NzIxZDc0ZDI4MTM0YWI4MyIsIjdjNDgxYjliNWI0M2IyZWI2Mzc0MDQ5YmZhNjJjMmU1ZTc3ZjE3ZmNjNTI5OGY0NGM4ZTMwOTRmNzkwMzEzYTYiXSxbIjk0OGJmODA5YjE5ODhhNDZiMDZjOWYxOTE5NDEzYjEwZjkyMjZjNjBmNjY4ODMyZmZkOTU5YWY2MGM4MmEwYSIsIjUzYTU2''@;'; put 'put ''Mjg1NmRjYjY2NDZkYzZiNzRjNWQxYzM0MThjNmQ0ZGZmMDhjOTdjZDJiZWQ0Y2I3Zjg4ZDhjOGU1ODkiXSxbIjYyNjBjZTdmNDYxODAxYzM0ZjA2N2NlMGYwMjg3M2E4ZjFiMGU0NGRmYzY5NzUyYWNjZWNkODE5ZjM4ZmQ4ZTgiLCJiYzJkYTgyYjZmYTViNTcxYTdmMDkwNDk3NzZhMWVmN2Vj''@;'; put 'put ''ZDI5MjIzODA1MWMxOThjMWE4NGU5NWIyYjRhZTE3Il0sWyJlNTAzN2RlMGFmYzFkOGQ0M2Q4MzQ4NDE0YmJmNDEwMzA0M2VjOGY1NzViZmRjNDMyOTUzY2M4ZDIwMzdmYTJkIiwiNDU3MTUzNGJhYTk0ZDNiNWY5Zjk4ZDA5ZmI5OTBiZGRiZDVmNWIwM2VjNDgxZjEwZTBlNWRjODQxZDc1NWJk''@;'; put 'put ''YSJdLFsiZTA2MzcyYjBmNGEyMDdhZGY1ZWE5MDVlOGYxNzcxYjRlN2U4ZGJkMWM2YTZjNWI3MjU4NjZhMGFlNGZjZTcyNSIsIjdhOTA4OTc0YmNlMThjZmUxMmEyN2JiMmFkNWE0ODhjZDc0ODRhNzc4NzEwNDg3MGIyNzAzNGY5NGVlZTMxZGQiXSxbIjIxM2M3YTcxNWNkNWQ0NTM1OGQwYmJm''@;'; put 'put ''OWRjMGNlMDIyMDRiMTBiZGRlMmEzZjU4NTQwYWQ2OTA4ZDA1NTk3NTQiLCI0YjZkYWQwYjVhZTQ2MjUwNzAxM2FkMDYyNDViYTE5MGJiNDg1MGY1ZjM2YTdlZWRkZmYyYzI3NTM0YjQ1OGYyIl0sWyI0ZTdjMjcyYTdhZjRiMzRlOGRiYjkzNTJhNTQxOWE4N2UyODM4YzcwYWRjNjJjZGRmMGNj''@;'; put 'put ''M2EzYjA4ZmJkNTNjIiwiMTc3NDljNzY2YzlkMGIxOGUxNmZkMDlmNmRlZjY4MWI1MzBiOTYxNGJmZjdkZDMzZTBiMzk0MTgxN2RjYWFlNiJdLFsiZmVhNzRlM2RiZTc3OGIxYjEwZjIzOGFkNjE2ODZhYTVjNzZlM2RiMmJlNDMwNTc2MzI0MjdlMjg0MGZiMjdiNiIsIjZlMDU2OGRiOWIwYjEz''@;'; put 'put ''Mjk3Y2Y2NzRkZWNjYjZhZjkzMTI2YjU5NmI5NzNmN2I3NzcwMWQzZGI3ZjIzY2I5NmYiXSxbIjc2ZTY0MTEzZjY3N2NmMGUxMGEyNTcwZDU5OTk2OGQzMTU0NGUxNzliNzYwNDMyOTUyYzAyYTQ0MTdiZGRlMzkiLCJjOTBkZGY4ZGVlNGU5NWNmNTc3MDY2ZDcwNjgxZjBkMzVlMmEzM2QyYjU2''@;'; put 'put ''ZDIwMzJiNGIxNzUyZDE5MDFhYzAxIl0sWyJjNzM4YzU2YjAzYjJhYmUxZTgyODFiYWE3NDNmOGY5YThmN2NjNjQzZGYyNmNiZWUzYWIxNTAyNDJiY2JiODkxIiwiODkzZmI1Nzg5NTFhZDI1MzdmNzE4ZjJlYWNiZmJiYmI4MjMxNGVlZjc4ODBjZmU5MTdlNzM1ZDk2OTlhODRjMyJdLFsiZDg5''@;'; put 'put ''NTYyNjU0OGI2NWI4MWUyNjRjNzYzN2M5NzI4NzdkMWQ3MmU1ZjNhOTI1MDE0MzcyZTlmNjU4OGY2YzE0YiIsImZlYmZhYTM4ZjJiYzdlYWU3MjhlYzYwODE4YzM0MGViMDM0MjhkNjMyYmIwNjdlMTc5MzYzZWQ3NWQ3ZDk5MWYiXSxbImI4ZGE5NDAzMmE5NTc1MThlYjBmNjQzMzU3MWU4NzYx''@;'; put 'put ''Y2VmZmM3MzY5M2U4NGVkZDQ5MTUwYTU2NGY2NzZlMDMiLCIyODA0ZGZhNDQ4MDVhMWU0ZDdjOTljYzk3NjI4MDhiMDkyY2M1ODRkOTVmZjNiNTExNDg4ZTRlNzRlZmRmNmU3Il0sWyJlODBmZWExNDQ0MWZiMzNhN2Q4YWRhYjk0NzVkN2ZhYjIwMTllZmZiNTE1NmE3OTJmMWExMTc3OGUzYzBk''@;'; put 'put ''ZjVkIiwiZWVkMWRlN2Y2MzhlMDA3NzFlODk3NjhjYTNjYTk0NDcyZDE1NWU4MGFmMzIyZWE5ZmNiNDI5MWI2YWM5ZWM3OCJdLFsiYTMwMTY5N2JkZmNkNzA0MzEzYmE0OGU1MWQ1Njc1NDNmMmExODIwMzFlZmQ2OTE1ZGRjMDdiYmNjNGUxNjA3MCIsIjczNzBmOTFjZmI2N2U0ZjUwODE4MDlm''@;'; put 'put ''YTI1ZDQwZjliMTczNWRiZjdjMGExMWExMzBjMGQxYTA0MWUxNzdlYTEiXSxbIjkwYWQ4NWIzODlkNmI5MzY0NjNmOWQwNTEyNjc4ZGUyMDhjYzMzMGIxMTMwN2ZmZmFiN2FjNjNlM2ZiMDRlZDQiLCJlNTA3YTM2MjBhMzgyNjFhZmZkY2JkOTQyNzIyMmI4MzlhZWZhYmUxNTgyODk0ZDk5MWQ0''@;'; put 'put ''ZDQ4Y2I2ZWYxNTAiXSxbIjhmNjhiOWQyZjYzYjVmMzM5MjM5YzFhZDk4MWYxNjJlZTg4YzU2Nzg3MjNlYTMzNTFiN2I0NDRjOWVjNGMwZGEiLCI2NjJhOWYyZGJhMDYzOTg2ZGUxZDkwYzJiNmJlMjE1ZGJiZWEyY2ZlOTU1MTBiZmRmMjNjYmY3OTUwMWZmZjgyIl0sWyJlNGYzZmIwMTc2YWY4''@;'; put 'put ''NWQ2NWZmOTlmZjkxOThjMzYwOTFmNDhlODY1MDM2ODFlM2U2Njg2ZmQ1MDUzMjMxZTExIiwiMWU2MzYzM2FkMGVmNGYxYzE2NjFhNmQwZWEwMmI3Mjg2Y2M3ZTc0ZWM5NTFkMWM5ODIyYzM4NTc2ZmViNzNiYyJdLFsiOGMwMGZhOWIxOGViZjMzMWViOTYxNTM3YTQ1YTQyNjZjNzAzNGYyZjBk''@;'; put 'put ''NGUxZDA3MTZmYjZlYWUyMGVhZTI5ZSIsImVmYTQ3MjY3ZmVhNTIxYTFhOWRjMzQzYTM3MzZjOTc0YzJmYWRhZmE4MWUzNmM1NGU3ZDJhNGM2NjcwMjQxNGIiXSxbImU3YTI2Y2U2OWRkNDgyOWYzZTEwY2VjMGE5ZTk4ZWQzMTQzZDA4NGYzMDhiOTJjMDk5N2ZkZGZjNjBjYjNlNDEiLCIyYTc1''@;'; put 'put ''OGUzMDBmYTc5ODRiNDcxYjAwNmExYWFmYmIxOGQwYTZiMmMwNDIwZTgzZTIwZThhOTQyMWNmMmNmZDUxIl0sWyJiNjQ1OWUwZWUzNjYyZWM4ZDIzNTQwYzIyM2JjYmRjNTcxY2JjYjk2N2Q3OTQyNGYzY2YyOWViM2RlNmI4MGVmIiwiNjdjODc2ZDA2ZjNlMDZkZTFkYWRmMTZlNTY2MWRiM2M0''@;'; put 'put ''YjNhZTZkNDhlMzViMmZmMzBiZjBiNjFhNzFiYTQ1Il0sWyJkNjhhODBjODI4MGJiODQwNzkzMjM0YWExMThmMDYyMzFkNmYxZmM2N2U3M2M1YTVkZWRhMGY1YjQ5Njk0M2U4IiwiZGI4YmE5ZmZmNGI1ODZkMDBjNGIxZjkxNzdiMGUyOGI1YjBlN2I4Zjc4NDUyOTVhMjk0Yzg0MjY2YjEzMzEy''@;'; put 'put ''MCJdLFsiMzI0YWVkN2RmNjVjODA0MjUyZGMwMjcwOTA3YTMwYjA5NjEyYWViOTczNDQ5Y2VhNDA5NTk4MGZjMjhkM2Q1ZCIsIjY0OGEzNjU3NzRiNjFmMmZmMTMwYzBjMzVhZWMxZjRmMTkyMTNiMGM3ZTMzMjg0Mzk2NzIyNGFmOTZhYjdjODQiXSxbIjRkZjljMTQ5MTljZGU2MWY2ZDUxZGZk''@;'; put 'put ''YmU1ZmVlNWRjZWVjNDE0M2JhOGQxY2E4ODhlOGJkMzczZmQwNTRjOTYiLCIzNWVjNTEwOTJkODcyODA1MDk3NGMyM2ExZDg1ZDRiNWQ1MDZjZGMyODg0OTAxOTJlYmFjMDZjYWQxMGQ1ZCJdLFsiOWMzOTE5YTg0YTQ3NDg3MGZhZWQ4YTljMWNjNjYwMjE1MjM0ODkwNTRkN2YwMzA4Y2JmYzk5''@;'; put 'put ''YzhhYzFmOThjZCIsImRkYjg0ZjBmNGE0ZGRkNTc1ODRmMDQ0YmYyNjBlNjQxOTA1MzI2Zjc2YzY0YzhlNmJlN2U1ZTAzZDRmYzU5OWQiXSxbIjYwNTcxNzBiMWRkMTJmZGY4ZGUwNWYyODFkOGUwNmJiOTFlMTQ5M2E4YjkxZDRjYzVhMjEzODIxMjBhOTU5ZTUiLCI5YTFhZjBiMjZhNmE0ODA3''@;'; put 'put ''YWRkOWEyZGFmNzFkZjI2MjQ2NTE1MmJjM2VlMjRjNjVlODk5YmU5MzIzODVhMmE4Il0sWyJhNTc2ZGY4ZTIzYTA4NDExNDIxNDM5YTQ1MThkYTMxODgwY2VmMGZiYTdkNGRmMTJiMWE2OTczZWVjYjk0MjY2IiwiNDBhNmJmMjBlNzY2NDBiMmM5MmI5N2FmZTU4Y2Q4MmM0MzJlMTBhN2Y1MTRk''@;'; put 'put ''OWYzZWU4YmUxMWFlMWIyOGVjOCJdLFsiNzc3OGE3OGMyOGRlYzNlMzBhMDVmZTk2MjlkZThjMzhiYjMwZDFmNWNmOWEzYTIwOGY3NjM4ODliZTU4YWQ3MSIsIjM0NjI2ZDlhYjVhNWIyMmZmNzA5OGUxMmYyZmY1ODAwODdiMzg0MTFmZjI0YWM1NjNiNTEzZmMxZmQ5ZjQzYWMiXSxbIjkyODk1''@;'; put 'put ''NWVlNjM3YTg0NDYzNzI5ZmQzMGU3YWZkMmVkNWY5NjI3NGU1YWQ3ZTVjYjA5ZWRhOWMwNmQ5MDNhYyIsImMyNTYyMTAwM2QzZjQyYTgyN2I3OGExMzA5M2E5NWVlYWMzZDI2ZWZhOGE4ZDgzZmM1MTgwZTkzNWJjZDA5MWYiXSxbIjg1ZDBmZWYzZWM2ZGIxMDkzOTkwNjRmM2EwZTNiMjg1NTY0''@;'; put 'put ''NWI0YTkwN2FkMzU0NTI3YWFlNzUxNjNkODI3NTEiLCIxZjAzNjQ4NDEzYTM4YzBiZTI5ZDQ5NmU1ODJjZjU2NjNlODc1MWU5Njg3NzMzMTU4MmMyMzdhMjRlYjFmOTYyIl0sWyJmZjJiMGRjZTk3ZWVjZTk3YzFjOWI2MDQxNzk4Yjg1ZGZkZmI2ZDg4ODJkYTIwMzA4ZjU0MDQ4MjQ1MjYwODdl''@;'; put 'put ''IiwiNDkzZDEzZmVmNTI0YmExODhhZjRjNGRjNTRkMDc5MzZjN2I3ZWQ2ZmI5MGUyY2ViMmM5NTFlMDFmMGMyOTkwNyJdLFsiODI3ZmJiZTRiMWU4ODBlYTllZDJiMmU2MzAxYjIxMmI1N2YxZWUxNDhjZDZkZDI4NzgwZTVlMmNmODU2ZTI0MSIsImM2MGY5YzkyM2M3MjdiMGI3MWJlZjJjNjdk''@;'; put 'put ''MWQxMjY4N2ZmN2E2MzE4NjkwMzE2NmQ2MDViNjhiYWVjMjkzZWMiXSxbImVhYTY0OWYyMWY1MWJkYmFlN2JlNGFlMzRjZTZlNTIxN2E1OGZkY2U3ZjQ3ZjlhYTdmM2I1OGZhMjEyMGUyYjMiLCJiZTMyNzllZDViYmJiMDNhYzY5YTgwZjg5ODc5YWE1YTAxYTZiOTY1ZjEzZjdlNTlkNDdhNTMw''@;'; put 'put ''NWJhNWFkOTNkIl0sWyJlNGE0MmQ0M2M1Y2YxNjlkOTM5MWRmNmRlY2Y0MmVlNTQxYjZkOGYwYzlhMTM3NDAxZTIzNjMyZGRhMzRkMjRmIiwiNGQ5ZjkyZTcxNmQxYzczNTI2ZmM5OWNjZmI4YWQzNGNlODg2ZWVkZmE4ZDhlNGYxM2E3ZjcxMzFkZWJhOTQxNCJdLFsiMWVjODBmZWYzNjBjYmRk''@;'; put 'put ''OTU0MTYwZmFkYWIzNTJiNmI5MmI1MzU3NmE4OGZlYTQ5NDcxNzNiOWQ0MzAwYmYxOSIsImFlZWZlOTM3NTZiNTM0MGQyZjNhNDk1OGE3YWJiZjVlMDE0NmU3N2Y2Mjk1YTA3YjY3MWNkYzFjYzEwN2NlZmQiXSxbIjE0NmE3NzhjMDQ2NzBjMmY5MWIwMGFmNDY4MGRmYThiY2UzNDkwNzE3ZDU4''@;'; put 'put ''YmE4ODlkZGI1OTI4MzY2NjQyYmUiLCJiMzE4ZTBlYzMzNTQwMjhhZGQ2Njk4MjdmOWQ0YjI4NzBhYWE5NzFkMmY3ZTVlZDFkMGIyOTc0ODNkODNlZmQwIl0sWyJmYTUwYzBmNjFkMjJlNWYwN2UzYWNlYmIxYWEwN2IxMjhkMDAxMjIwOWEyOGI5Nzc2ZDc2YTg3OTMxODBlZWY5IiwiNmI4NGM2''@;'; put 'put ''OTIyMzk3ZWJhOWI3MmNkMjg3MjI4MWE2OGE1ZTY4MzI5M2E1N2EyMTNiMzhjZDhkN2QzZjRmMjgxMSJdLFsiZGExZDYxZDBjYTcyMWExMWIxYTViZjZiN2Q4OGU4NDIxYTI4OGFiNWQ1YmJhNTIyMGU1M2QzMmI1ZjA2N2VjMiIsIjgxNTdmNTVhN2M5OTMwNmM3OWMwNzY2MTYxYzkxZTI5NjZh''@;'; put 'put ''NzM4OTlkMjc5YjQ4YTY1NWZiYTBmMWFkODM2ZjEiXSxbImE4ZTI4MmZmMGM5NzA2OTA3MjE1ZmY5OGU4ZmQ0MTY2MTUzMTFkZTA0NDZmMWUwNjJhNzNiMDYxMGQwNjRlMTMiLCI3Zjk3MzU1YjhkYjgxYzA5YWJmYjdmM2M1YjI1MTU4ODhiNjc5YTNlNTBkZDZiZDZjZWY3YzczMTExZjRjYzBj''@;'; put 'put ''Il0sWyIxNzRhNTNiOWM5YTI4NTg3MmQzOWU1NmU2OTEzY2FiMTVkNTliMWZhNTEyNTA4YzAyMmYzODJkZTgzMTk0OTdjIiwiY2NjOWRjMzdhYmZjOWMxNjU3YjQxNTVmMmM0N2Y5ZTY2NDZiM2ExZDhjYjk4NTQzODNkYTEzYWMwNzlhZmE3MyJdLFsiOTU5Mzk2OTgxOTQzNzg1YzNkM2U1N2Vk''@;'; put 'put ''ZjUwMThjZGJlMDM5ZTczMGU0OTE4YjNkODg0ZmRmZjA5NDc1YjdiYSIsIjJlN2U1NTI4ODhjMzMxZGQ4YmEwMzg2YTRiOWNkNjg0OWM2NTNmNjRjODcwOTM4NWU5YjhhYmY4NzUyNGYyZmQiXSxbImQyYTYzYTUwYWU0MDFlNTZkNjQ1YTExNTNiMTA5YThmY2NhMGE0M2Q1NjFmYmEyZGJiNTEz''@;'; put 'put ''NDBjOWQ4MmIxNTEiLCJlODJkODZmYjY0NDNmY2I3NTY1YWVlNThiMjk0ODIyMGE3MGY3NTBhZjQ4NGNhNTJkNDE0MjE3NGRjZjg5NDA1Il0sWyI2NDU4N2UyMzM1NDcxZWI4OTBlZTc4OTZkN2NmZGM4NjZiYWNiZGJkMzgzOTMxN2IzNDM2ZjliNDU2MTdlMDczIiwiZDk5ZmNkZDViZjY5MDJl''@;'; put 'put ''MmFlOTZkZDY0NDdjMjk5YTE4NWI5MGEzOTEzM2FlYWIzNTgyOTllNWU5ZmFmNjU4OSJdLFsiODQ4MWJkZTBlNGU0ZDg4NWIzYTU0NmQzZTU0OWRlMDQyZjBhYTZjZWEyNTBlN2ZkMzU4ZDZjODZkZDQ1ZTQ1OCIsIjM4ZWU3YjhjYmE1NDA0ZGQ4NGEyNWJmMzljZWNiMmNhOTAwYTc5YzQyYjI2''@;'; put 'put ''MmU1NTZkNjRiMWI1OTc3OTA1N2UiXSxbIjEzNDY0YTU3YTc4MTAyYWE2MmI2OTc5YWU4MTdmNDYzN2ZmY2ZlZDNjNGIxY2UzMGJjZDYzMDNmNmNhZjY2NmIiLCI2OWJlMTU5MDA0NjE0NTgwZWY3ZTQzMzQ1M2NjYjBjYTQ4ZjMwMGE4MWQwOTQyZTEzZjQ5NWE5MDdmNmVjYzI3Il0sWyJiYzRh''@;'; put 'put ''OWRmNWI3MTNmZTJlOWFlZjQzMGJjYzFkYzk3YTBjZDljY2VkZTJmMjg1ODhjYWRhM2EwZDJkODNmMzY2IiwiZDNhODFjYTZlNzg1YzA2MzgzOTM3YWRmNGI3OThjYWE2ZThhOWZiZmE1NDdiMTZkNzU4ZDY2NjU4MWYzM2MxIl0sWyI4YzI4YTk3YmY4Mjk4YmMwZDIzZDhjNzQ5NDUyYTMyZTY5''@;'; put 'put ''NGI2NWUzMGE5NDcyYTM5NTRhYjMwZmU1MzI0Y2FhIiwiNDBhMzA0NjNhMzMwNTE5MzM3OGZlZGYzMWY3Y2MwZWI3YWU3ODRmMDQ1MWNiOTQ1OWU3MWRjNzNjYmVmOTQ4MiJdLFsiOGVhOTY2NjEzOTUyN2E4YzFkZDk0Y2U0ZjA3MWZkMjNjOGIzNTBjNWE0YmIzMzc0OGM0YmExMTFmYWNjYWUw''@;'; put 'put ''IiwiNjIwZWZhYmJjOGVlMjc4MmUyNGU3YzBjZmI5NWM1ZDczNWI3ODNiZTljZjBmOGU5NTVhZjM0YTMwZTYyYjk0NSJdLFsiZGQzNjI1ZmFlZjViYTA2MDc0NjY5NzE2YmJkMzc4OGQ4OWJkZGU4MTU5NTk5NjgwOTJmNzZjYzRlYjlhOTc4NyIsIjdhMTg4ZmEzNTIwZTMwZDQ2MWRhMjUwMTA0''@;'; put 'put ''NTczMWNhOTQxNDYxOTgyODgzMzk1OTM3ZjY4ZDAwYzY0NGE1NzMiXSxbImY3MTBkNzlkOWViOTYyMjk3ZTRmNjIzMmI0MGU4ZjdmZWIyYmM2MzgxNDYxNGQ2OTJjMTJkZTc1MjQwODIyMWUiLCJlYTk4ZTY3MjMyZDNiMzI5NWQzYjUzNTUzMjExNWNjYWM4NjEyYzcyMTg1MTYxNzUyNmFlNDdh''@;'; put 'put ''OWM3N2JmYzgyIl1dfSxuYWY6e3duZDo3LHBvaW50czpbWyJmOTMwOGEwMTkyNThjMzEwNDkzNDRmODVmODlkNTIyOWI1MzFjODQ1ODM2Zjk5YjA4NjAxZjExM2JjZTAzNmY5IiwiMzg4ZjdiMGY2MzJkZTgxNDBmZTMzN2U2MmEzN2YzNTY2NTAwYTk5OTM0YzIyMzFiNmNiOWZkNzU4NGI4ZTY3''@;'; put 'put ''MiJdLFsiMmY4YmRlNGQxYTA3MjA5MzU1YjRhNzI1MGE1YzUxMjhlODhiODRiZGRjNjE5YWI3Y2JhOGQ1NjliMjQwZWZlNCIsImQ4YWMyMjI2MzZlNWUzZDZkNGRiYTlkZGE2YzljNDI2Zjc4ODI3MWJhYjBkNjg0MGRjYTg3ZDNhYTZhYzYyZDYiXSxbIjVjYmRmMDY0NmU1ZGI0ZWFhMzk4ZjM2''@;'; put 'put ''NWYyZWE3YTBlM2Q0MTliN2UwMzMwZTM5Y2U5MmJkZGVkY2FjNGY5YmMiLCI2YWViY2E0MGJhMjU1OTYwYTMxNzhkNmQ4NjFhNTRkYmE4MTNkMGI4MTNmZGU3YjVhNTA4MjYyODA4NzI2NGRhIl0sWyJhY2Q0ODRlMmYwYzdmNjUzMDlhZDE3OGE5ZjU1OWFiZGUwOTc5Njk3NGM1N2U3MTRjMzVm''@;'; put 'put ''MTEwZGZjMjdjY2JlIiwiY2MzMzg5MjFiMGE3ZDlmZDY0MzgwOTcxNzYzYjYxZTlhZGQ4ODhhNDM3NWY4ZTBmMDVjYzI2MmFjNjRmOWMzNyJdLFsiNzc0YWU3Zjg1OGE5NDExZTVlZjQyNDZiNzBjNjVhYWM1NjQ5OTgwYmU1YzE3ODkxYmJlYzE3ODk1ZGEwMDhjYiIsImQ5ODRhMDMyZWI2YjVl''@;'; put 'put ''MTkwMjQzZGQ1NmQ3YjdiMzY1MzcyZGIxZTJkZmY5ZDZhODMwMWQ3NGM5Yzk1M2M2MWIiXSxbImYyODc3M2MyZDk3NTI4OGJjN2QxZDIwNWMzNzQ4NjUxYjA3NWZiYzY2MTBlNThjZGRlZWRkZjhmMTk0MDVhYTgiLCJhYjA5MDJlOGQ4ODBhODk3NTgyMTJlYjY1Y2RhZjQ3M2ExYTA2ZGE1MjFm''@;'; put 'put ''YTkxZjI5YjVjYjUyZGIwM2VkODEiXSxbImQ3OTI0ZDRmN2Q0M2VhOTY1YTQ2NWFlMzA5NWZmNDExMzFlNTk0NmYzYzg1Zjc5ZTQ0YWRiY2Y4ZTI3ZTA4MGUiLCI1ODFlMjg3MmE4NmM3MmE2ODM4NDJlYzIyOGNjNmRlZmVhNDBhZjJiZDg5NmQzYTVjNTA0ZGM5ZmY2YTI2YjU4Il0sWyJkZWZk''@;'; put 'put ''ZWE0Y2RiNjc3NzUwYTQyMGZlZTgwN2VhY2YyMWViOTg5OGFlNzliOTc2ODc2NmU0ZmFhMDRhMmQ0YTM0IiwiNDIxMWFiMDY5NDYzNTE2OGU5OTdiMGVhZDJhOTNkYWVjZWQxZjRhMDRhOTVjMGY2Y2ZiMTk5ZjY5ZTU2ZWI3NyJdLFsiMmI0ZWEwYTc5N2E0NDNkMjkzZWY1Y2ZmNDQ0ZjQ5Nzlm''@;'; put 'put ''MDZhY2ZlYmQ3ZTg2ZDI3NzQ3NTY1NjEzODM4NWI2YyIsIjg1ZTg5YmMwMzc5NDVkOTNiMzQzMDgzYjVhMWM4NjEzMWEwMWY2MGM1MDI2OTc2M2I1NzBjODU0ZTVjMDliN2EiXSxbIjM1MmJiZjRhNGNkZDEyNTY0ZjkzZmEzMzJjZTMzMzMwMWQ5YWQ0MDI3MWY4MTA3MTgxMzQwYWVmMjViZTU5''@;'; put 'put ''ZDUiLCIzMjFlYjQwNzUzNDhmNTM0ZDU5YzE4MjU5ZGRhM2UxZjRhMWIzYjJlNzFiMTAzOWM2N2JkM2Q4YmNmODE5OThjIl0sWyIyZmEyMTA0ZDZiMzhkMTFiMDIzMDAxMDU1OTg3OTEyNGU0MmFiOGRmZWZmNWZmMjlkYzljZGFkZDRlY2FjYzNmIiwiMmRlMTA2ODI5NWRkODY1YjY0NTY5MzM1''@;'; put 'put ''YmQ1ZGQ4MDE4MWQ3MGVjZmM4ODI2NDg0MjNiYTc2YjUzMmI3ZDY3Il0sWyI5MjQ4Mjc5YjA5YjRkNjhkYWIyMWE5YjA2NmVkZGE4MzI2M2MzZDg0ZTA5NTcyZTI2OWNhMGNkN2Y1NDUzNzE0IiwiNzMwMTZmN2JmMjM0YWFkZTVkMWFhNzFiZGVhMmIxZmYzZmMwZGUyYTg4NzkxMmZmZTU0YTMy''@;'; put 'put ''Y2U5N2NiMzQwMiJdLFsiZGFlZDRmMmJlM2E4YmYyNzhlNzAxMzJmYjBiZWI3NTIyZjU3MGUxNDRiZjYxNWMwN2U5OTZkNDQzZGVlODcyOSIsImE2OWRjZTRhN2Q2Yzk4ZThkNGExYWNhODdlZjhkNzAwM2Y4M2MyMzBmM2FmYTcyNmFiNDBlNTIyOTBiZTFjNTUiXSxbImM0NGQxMmM3MDY1ZDgx''@;'; put 'put ''MmU4YWNmMjhkN2NiYjE5ZjkwMTFlY2Q5ZTlmZGYyODFiMGU2YTNiNWU4N2QyMmU3ZGIiLCIyMTE5YTQ2MGNlMzI2Y2RjNzZjNDU5MjZjOTgyZmRhYzBlMTA2ZTg2MWVkZjYxYzVhMDM5MDYzZjBlMGU2NDgyIl0sWyI2YTI0NWJmNmRjNjk4NTA0Yzg5YTIwY2ZkZWQ2MDg1MzE1MmI2OTUzMzZj''@;'; put 'put ''MjgwNjNiNjFjNjVjYmQyNjllNmI0IiwiZTAyMmNmNDJjMmJkNGE3MDhiM2Y1MTI2ZjE2YTI0YWQ4YjMzYmE0OGQwNDIzYjZlZmQ1ZTYzNDgxMDBkOGE4MiJdLFsiMTY5N2ZmYTZmZDlkZTYyN2MwNzdlM2QyZmU1NDEwODRjZTEzMzAwYjBiZWMxMTQ2Zjk1YWU1N2YwZDBiZDZhNSIsImI5YzM5''@;'; put 'put ''OGYxODY4MDZmNWQyNzU2MTUwNmU0NTU3NDMzYTJjZjE1MDA5ZTQ5OGFlN2FkZWU5ZDYzZDAxYjIzOTYiXSxbIjYwNWJkYjAxOTk4MTcxOGI5ODZkMGYwN2U4MzRjYjBkOWRlYjgzNjBmZmI3ZjYxZGY5ODIzNDVlZjI3YTc0NzkiLCIyOTcyZDJkZTRmOGQyMDY4MWE3OGQ5M2VjOTZmZTIzYzI2''@;'; put 'put ''YmZhZTg0ZmIxNGRiNDNiMDFlMWU5MDU2YjhjNDkiXSxbIjYyZDE0ZGFiNDE1MGJmNDk3NDAyZmRjNDVhMjE1ZTEwZGNiMDFjMzU0OTU5YjEwY2ZlMzFjN2U5ZDg3ZmYzM2QiLCI4MGZjMDZiZDhjYzViMDEwOTgwODhhMTk1MGVlZDBkYjAxYWExMzI5NjdhYjQ3MjIzNWY1NjQyNDgzYjI1ZWFm''@;'; put 'put ''Il0sWyI4MGM2MGFkMDA0MGYyN2RhZGU1YjRiMDZjNDA4ZTU2YjJjNTBlOWY1NmI5YjhiNDI1ZTU1NWMyZjg2MzA4YjZmIiwiMWMzODMwM2YxY2M1YzMwZjI2ZTY2YmFkN2ZlNzJmNzBhNjVlZWQ0Y2JlNzAyNGViMWFhMDFmNTY0MzBiZDU3YSJdLFsiN2E5Mzc1YWQ2MTY3YWQ1NGFhNzRjNjM0''@;'; put 'put ''OGNjNTRkMzQ0Y2M1ZGM5NDg3ZDg0NzA0OWQ1ZWFiYjBmYTAzYzhmYiIsImQwZTNmYTllY2E4NzI2OTA5NTU5ZTBkNzkyNjkwNDZiZGM1OWVhMTBjNzBjZTJiMDJkNDk5ZWMyMjRkYzdmNyJdLFsiZDUyOGVjZDliNjk2YjU0YzkwN2E5ZWQwNDU0NDdhNzliYjQwOGVjMzliNjhkZjUwNGJiNTFm''@;'; put 'put ''NDU5YmMzZmZjOSIsImVlY2Y0MTI1MzEzNmU1Zjk5OTY2ZjIxODgxZmQ2NTZlYmM0MzQ1NDA1YzUyMGRiYzA2MzQ2NWI1MjE0MDk5MzMiXSxbIjQ5MzcwYTRiNWY0MzQxMmVhMjVmNTE0ZThlY2RhZDA1MjY2MTE1ZTRhN2VjYjEzODcyMzE4MDhmOGI0NTk2MyIsIjc1OGYzZjQxYWZkNmVkNDI4''@;'; put 'put ''YjMwODFiMDUxMmZkNjJhNTRjM2YzYWZiYjViNjc2NGI2NTMwNTJhMTI5NDljOWEiXSxbIjc3ZjIzMDkzNmVlODhjYmJkNzNkZjkzMGQ2NDcwMmVmODgxZDgxMWUwZTE0OThlMmYxYzEzZWIxZmMzNDVkNzQiLCI5NThlZjQyYTc4ODZiNjQwMGEwODI2NmU5YmExYjM3ODk2Yzk1MzMwZDk3MDc3''@;'; put 'put ''Y2JiZThlYjNjNzY3MWM2MGQ2Il0sWyJmMmRhYzk5MWNjNGNlNGI5ZWE0NDg4N2U1YzdjMGJjZTU4YzgwMDc0YWI5ZDRkYmFlYjI4NTMxYjc3MzlmNTMwIiwiZTBkZWRjOWIzYjJmOGRhZDRkYTFmMzJkZWMyNTMxZGY5ZWI1ZmJlYjA1OThlNGZkMWExMTdkYmE3MDNhM2MzNyJdLFsiNDYzYjNk''@;'; put 'put ''OWY2NjI2MjFmYjFiNGJlOGZiYmUyNTIwMTI1YTIxNmNkZmM5ZGFlM2RlYmNiYTQ4NTBjNjkwZDQ1YiIsIjVlZDQzMGQ3OGMyOTZjMzU0MzExNDMwNmRkODYyMmQ3YzYyMmUyN2M5NzBhMWRlMzFjYjM3N2IwMWFmNzMwN2UiXSxbImYxNmY4MDQyNDRlNDZlMmEwOTIzMmQ0YWZmM2I1OTk3NmI5''@;'; put 'put ''OGZhYzE0MzI4YTJkMWEzMjQ5NmI0OTk5OGYyNDciLCJjZWRhYmQ5YjgyMjAzZjdlMTNkMjA2ZmNkZjRlMzNkOTJhNmM1M2MyNmU1Y2NlMjZkNjU3OTk2MmM0ZTMxZGY2Il0sWyJjYWY3NTQyNzJkYzg0NTYzYjAzNTJiN2ExNDMxMWFmNTVkMjQ1MzE1YWNlMjdjNjUzNjllMTVmNzE1MWQ0MWQx''@;'; put 'put ''IiwiY2I0NzQ2NjBlZjM1ZjVmMmE0MWI2NDNmYTVlNDYwNTc1ZjRmYTliNzk2MjIzMmE1YzMyZjkwODMxOGEwNDQ3NiJdLFsiMjYwMGNhNGIyODJjYjk4NmY4NWQwZjE3MDk5NzlkOGI0NGEwOWMwN2NiODZkN2MxMjQ0OTdiYzg2ZjA4MjEyMCIsIjQxMTliODg3NTNjMTViZDZhNjkzYjAzZmNk''@;'; put 'put ''ZGJiNDVkNWFjNmJlNzRhYjVmMGVmNDRiMGJlOTQ3NWE3ZTRiNDAiXSxbIjc2MzVjYTcyZDdlODQzMmMzMzhlYzUzY2QxMjIyMGJjMDFjNDg2ODVlMjRmN2RjOGM2MDJhNzc0Njk5OGU0MzUiLCI5MWI2NDk2MDk0ODlkNjEzZDFkNWU1OTBmNzhlNmQ3NGVjZmMwNjFkNTcwNDhiYWQ5ZTc2ZjMw''@;'; put 'put ''MmM1YjljNjEiXSxbIjc1NGUzMjM5ZjMyNTU3MGNkYmJmNGE4N2RlZWU4YTY2YjdmMmIzMzQ3OWQ0NjhmYmMxYTUwNzQzYmY1NmNjMTgiLCI2NzNmYjg2ZTViZGEzMGZiM2NkMGVkMzA0ZWE0OWEwMjNlZTMzZDAxOTdhNjk1ZDBjNWQ5ODA5M2M1MzY2ODMiXSxbImUzZTZiZDEwNzFhMWU5NmFm''@;'; put 'put ''ZjU3ODU5YzgyZDU3MGYwMzMwODAwNjYxZDFjOTUyZjlmZTI2OTQ2OTFkOWI5ZTgiLCI1OWM5ZTBiYmEzOTRlNzZmNDBjMGFhNTgzNzlhM2NiNmE1YTIyODM5OTNlOTBjNDE2NzAwMmFmNDkyMGUzN2Y1Il0sWyIxODZiNDgzZDA1NmEwMzM4MjZhZTczZDg4ZjczMjk4NWM0Y2NiMWYzMmJhMzVm''@;'; put 'put ''NGI0Y2M0N2ZkY2YwNGFhNmViIiwiM2I5NTJkMzJjNjdjZjc3ZTJlMTc0NDZlMjA0MTgwYWIyMWZiODA5MDg5NTEzOGI0YTRhNzk3Zjg2ZTgwODg4YiJdLFsiZGY5ZDcwYTZiOTg3NmNlNTQ0Yzk4NTYxZjRiZTRmNzI1NDQyZTZkMmI3MzdkOWM5MWE4MzIxNzI0Y2UwOTYzZiIsIjU1ZWIyZGFm''@;'; put 'put ''ZDg0ZDZjY2Q1Zjg2MmI3ODVkYzM5ZDRhYjE1NzIyMjcyMGVmOWRhMjE3YjhjNDVjZjJiYTI0MTciXSxbIjVlZGQ1Y2MyM2M1MWU4N2E0OTdjYTgxNWQ1ZGNlMGY4YWI1MjU1NGY4NDllZDg5OTVkZTY0YzVmMzRjZTcxNDMiLCJlZmFlOWM4ZGJjMTQxMzA2NjFlOGNlYzAzMGM4OWFkMGMxM2M2''@;'; put 'put ''NmMwZDE3YTI5MDVjZGM3MDZhYjczOTlhODY4Il0sWyIyOTA3OThjMmI2NDc2ODMwZGExMmZlMDIyODdlOWU3NzdhYTNmYmExYzM1NWIxN2E3MjJkMzYyZjg0NjE0ZmJhIiwiZTM4ZGE3NmRjZDQ0MDYyMTk4OGQwMGJjZjc5YWYyNWQ1YjI5YzA5NGRiMmEyMzE0NmQwMDNhZmQ0MTk0M2U3YSJd''@;'; put 'put ''LFsiYWYzYzQyM2E5NWQ5ZjViMzA1NDc1NGVmYTE1MGFjMzljZDI5NTUyZmUzNjAyNTczNjJkZmRlY2VmNDA1M2I0NSIsImY5OGEzZmQ4MzFlYjJiNzQ5YTkzYjBlNmYzNWNmYjQwYzhjZDVhYTY2N2ExNTU4MWJjMmZlZGVkNDk4ZmQ5YzYiXSxbIjc2NmRiYjI0ZDEzNGU3NDVjY2NhYTI4Yzk5''@;'; put 'put ''YmYyNzQ5MDZiYjY2YjI2ZGNmOThkZjhkMmZlZDUwZDg4NDI0OWEiLCI3NDRiMTE1MmVhY2JlNWUzOGRjYzg4Nzk4MGRhMzhiODk3NTg0YTY1ZmEwNmNlZGQyYzkyNGY5N2NiYWM1OTk2Il0sWyI1OWRiZjQ2ZjhjOTQ3NTliYTIxMjc3YzMzNzg0ZjQxNjQ1ZjdiNDRmNmM1OTZhNThjZTkyZTY2''@;'; put 'put ''NjE5MWFiZTNlIiwiYzUzNGFkNDQxNzVmYmMzMDBmNGVhNmNlNjQ4MzA5YTA0MmNlNzM5YTc5MTk3OThjZDg1ZTIxNmM0YTMwN2Y2ZSJdLFsiZjEzYWRhOTUxMDNjNDUzNzMwNWU2OTFlNzRlOWE0YThkZDY0N2U3MTFhOTVlNzNjYjYyZGM2MDE4Y2ZkODdiOCIsImUxMzgxN2I0NGVlMTRkZTY2''@;'; put 'put ''M2JmNGJjODA4MzQxZjMyNjk0OWUyMWE2YTc1YzI1NzA3Nzg0MTliZGFmNTczM2QiXSxbIjc3NTRiNGZhMGU4YWNlZDA2ZDQxNjdhMmM1OWNjYTRjZGExODY5YzA2ZWJhZGZiNjQ4ODU1MDAxNWE4ODUyMmMiLCIzMGU5M2U4NjRlNjY5ZDgyMjI0Yjk2N2MzMDIwYjhmYThkMWU0ZTM1MGI2Y2Jj''@;'; put 'put ''YzUzN2E0OGI1Nzg0MTE2M2EyIl0sWyI5NDhkY2FkZjU5OTBlMDQ4YWEzODc0ZDQ2YWJlZjlkNzAxODU4Zjk1ZGU4MDQxZDJhNjgyOGM5OWUyMjYyNTE5IiwiZTQ5MWE0MjUzN2Y2ZTU5N2Q1ZDI4YTMyMjRiMWJjMjVkZjkxNTRlZmJkMmVmMWQyY2JiYTJjYWU1MzQ3ZDU3ZSJdLFsiNzk2MjQx''@;'; put 'put ''NDQ1MGM3NmMxNjg5YzdiNDhmODIwMmVjMzdmYjIyNGNmNWFjMGJmYTE1NzAzMjhhOGEzZDdjNzdhYiIsIjEwMGI2MTBlYzRmZmI0NzYwZDVjMWZjMTMzZWY2ZjZiMTI1MDdhMDUxZjA0YWM1NzYwYWZhNWIyOWRiODM0MzciXSxbIjM1MTQwODc4MzQ5NjRiNTRiMTViMTYwNjQ0ZDkxNTQ4NWEx''@;'; put 'put ''Njk3NzIyNWI4ODQ3YmIwZGQwODUxMzdlYzQ3Y2EiLCJlZjBhZmJiMjA1NjIwNTQ0OGUxNjUyYzQ4ZTgxMjdmYzYwMzllNzdjMTVjMjM3OGI3ZTdkMTVhMGRlMjkzMzExIl0sWyJkM2NjMzBhZDZiNDgzZTRiYzc5Y2UyYzlkZDhiYzU0OTkzZTk0N2ViOGRmNzg3YjQ0Mjk0M2QzZjdiNTI3ZWFm''@;'; put 'put ''IiwiOGIzNzhhMjJkODI3Mjc4ZDg5YzVlOWJlOGY5NTA4YWUzYzJhZDQ2MjkwMzU4NjMwYWZiMzRkYjA0ZWVkZTBhNCJdLFsiMTYyNGQ4NDc4MDczMjg2MGNlMWM3OGZjYmZlZmUwOGIyYjI5ODIzZGI5MTNmNjQ5Mzk3NWJhMGZmNDg0NzYxMCIsIjY4NjUxY2Y5YjZkYTkwM2UwOTE0NDQ4YzZj''@;'; put 'put ''ZDlkNGNhODk2ODc4ZjUyODJiZTRjOGNjMDZlMmE0MDQwNzg1NzUiXSxbIjczM2NlODBkYTk1NWE4YTI2OTAyYzk1NjMzZTYyYTk4NTE5MjQ3NGI1YWYyMDdkYTZkZjdiNGZkNWZjNjFjZDQiLCJmNTQzNWEyYmQyYmFkZjdkNDg1YTRkOGI4ZGI5ZmNjZTNlMWVmOGUwMjAxZTQ1NzhjNTQ2NzNi''@;'; put 'put ''YzFkYzVlYTFkIl0sWyIxNWQ5NDQxMjU0OTQ1MDY0Y2YxYTFjMzNiYmQzYjQ5Zjg5NjZjNTA5MjE3MWU2OTllZjI1OGRmYWI4MWMwNDVjIiwiZDU2ZWIzMGI2OTQ2M2U3MjM0ZjUxMzdiNzNiODQxNzc0MzQ4MDBiYWNlYmZjNjg1ZmMzN2JiZTllZmU0MDcwZCJdLFsiYTFkMGZjZjJlYzlkZTY3''@;'; put 'put ''NWI2MTIxMzZlNWNlNzBkMjcxYzIxNDE3YzlkMmI4YWFhYWMxMzg1OTlkMDcxNzk0MCIsImVkZDc3ZjUwYmNiNWEzY2FiMmU5MDczNzMwOTY2N2YyNjQxNDYyYTU0MDcwZjNkNTE5MjEyZDM5YzE5N2E2MjkiXSxbImUyMmZiZTE1YzBhZjhjY2M1NzgwYzA3MzVmODRkYmU5YTc5MGJhZGVlODI0''@;'; put 'put ''NWMwNmM3Y2EzNzMzMWNiMzY5ODAiLCJhODU1YmFiYWQ1Y2Q2MGM4OGI0MzBhNjlmNTNhMWE3YTM4Mjg5MTU0OTY0Nzk5YmU0M2QwNmQ3N2QzMWRhMDYiXSxbIjMxMTA5MWRkOTg2MGU4ZTIwZWUxMzQ3M2MxMTU1ZjVmNjk2MzVlMzk0NzA0ZWFhNzQwMDk0NTIyNDZjZmE5YjMiLCI2NmRiNjU2''@;'; put 'put ''Zjg3ZDFmMDRmZmZkMWYwNDc4OGMwNjgzMDg3MWVjNWE2NGZlZWU2ODViZDgwZjBiMTI4NmQ4Mzc0Il0sWyIzNGMxZmQwNGQzMDFiZTg5YjMxYzA0NDJkM2U2YWMyNDg4MzkyOGI0NWE5MzQwNzgxODY3ZDQyMzJlYzJkYmRmIiwiOTQxNDY4NWU5N2IxYjU5NTRiZDQ2ZjczMDE3NDEzNmQ1N2Yx''@;'; put 'put ''Y2VlYjQ4NzQ0M2RjNTMyMTg1N2JhNzNhYmVlIl0sWyJmMjE5ZWE1ZDZiNTQ3MDFjMWMxNGRlNWI1NTdlYjQyYThkMTNmM2FiYmNkMDhhZmZjYzJhNWU2YjA0OWI4ZDYzIiwiNGNiOTU5NTdlODNkNDBiMGY3M2FmNDU0NGNjY2Y2YjFmNGIwOGQzYzA3YjI3ZmI4ZDhjMjk2MmE0MDA3NjZkMSJd''@;'; put 'put ''LFsiZDdiODc0MGY3NGE4ZmJhYWIxZjY4M2RiOGY0NWRlMjY1NDNhNTQ5MGJjYTYyNzA4NzIzNjkxMjQ2OWEwYjQ0OCIsImZhNzc5NjgxMjhkOWM5MmVlMTAxMGYzMzdhZDQ3MTdlZmYxNWRiNWVkM2MwNDliMzQxMWUwMzE1ZWFhNDU5M2IiXSxbIjMyZDMxYzIyMmY4ZjZmMGVmODZmN2M5OGQz''@;'; put 'put ''YTMzMzVlYWQ1YmNkMzJhYmRkOTQyODlmZTRkMzA5MWFhODI0YmYiLCI1ZjMwMzJmNTg5MjE1NmUzOWNjZDNkNzkxNWI5ZTFkYTJlNmRhYzllNmYyNmU5NjExMThkMTRiODQ2MmUxNjYxIl0sWyI3NDYxZjM3MTkxNGFiMzI2NzEwNDVhMTU1ZDk4MzFlYTg3OTNkNzdjZDU5NTkyYzQzNDBmODZj''@;'; put 'put ''YmMxODM0N2I1IiwiOGVjMGJhMjM4Yjk2YmVjMGNiZGRkY2FlMGFhNDQyNTQyZWVlMWZmNTBjOTg2ZWE2YjM5ODQ3YjNjYzA5MmZmNiJdLFsiZWUwNzlhZGIxZGYxODYwMDc0MzU2YTI1YWEzODIwNmE2ZDcxNmIyYzNlNjc0NTNkMjg3Njk4YmFkN2IyYjJkNiIsIjhkYzI0MTJhYWZlM2JlNWM0''@;'; put 'put ''YzVmMzdlMGVjYzVmOWY2YTQ0Njk4OWFmMDRjNGUyNWViYWFjNDc5ZWMxYzhjMWUiXSxbIjE2ZWM5M2U0NDdlYzgzZjA0NjdiMTgzMDJlZTYyMGY3ZTY1ZGUzMzE4NzRjOWRjNzJiZmQ4NjE2YmE5ZGE2YjUiLCI1ZTQ2MzExNTBlNjJmYjQwZDBlOGMyYTdjYTU4MDRhMzlkNTgxODZhNTBlNDk3''@;'; put 'put ''MTM5NjI2Nzc4ZTI1YjA2NzRkIl0sWyJlYWE1Zjk4MGMyNDVmNmYwMzg5NzgyOTBhZmE3MGI2YmQ4ODU1ODk3Zjk4YjZhYTQ4NWI5NjA2NWQ1MzdiZDk5IiwiZjY1ZjVkM2UyOTJjMmUwODE5YTUyODM5MWM5OTQ2MjRkNzg0ODY5ZDdlNmVhNjdmYjE4MDQxMDI0ZWRjMDdkYyJdLFsiNzhjOTQw''@;'; put 'put ''NzU0NGFjMTMyNjkyZWUxOTEwYTAyNDM5OTU4YWUwNDg3NzE1MTM0MmVhOTZjNGI2YjM1YTQ5ZjUxIiwiZjNlMDMxOTE2OWViOWI4NWQ1NDA0Nzk1NTM5YTVlNjhmYTFmYmQ1ODNjMDY0ZDI0NjJiNjc1ZjE5NGEzZGRiNCJdLFsiNDk0ZjRiZTIxOWExYTc3MDE2ZGNkODM4NDMxYWVhMDAwMWNk''@;'; put 'put ''YzhhZTdhNmZjNjg4NzI2NTc4ZDk3MDI4NTdhNSIsIjQyMjQyYTk2OTI4M2E1ZjMzOWJhN2YwNzVlMzZiYTJhZjkyNWNlMzBkNzY3ZWQ2ZTU1ZjRiMDMxODgwZDU2MmMiXSxbImE1OThhODAzMGRhNmQ4NmM2YmM3ZjJmNTE0NGVhNTQ5ZDI4MjExZWE1OGZhYTcwZWJmNGMxZTY2NWMxZmU5YjUi''@;'; put 'put ''LCIyMDRiNWQ2Zjg0ODIyYzMwN2U0YjRhNzE0MDczN2FlYzIzZmM2M2I2NWIzNWY4NmExMDAyNmRiZDJkODY0ZTZiIl0sWyJjNDE5MTYzNjVhYmIyYjVkMDkxOTJmNWYyZGJlYWZlYzIwOGYwMjBmMTI1NzBhMTg0ZGJhZGMzZTU4NTk1OTk3IiwiNGYxNDM1MWQwMDg3ZWZhNDlkMjQ1YjMyODk4''@;'; put 'put ''NDk4OWQ1Y2FmOTQ1MGYzNGJmYzBlZDE2ZTk2YjU4ZmE5OTEzIl0sWyI4NDFkNjA2M2E1ODZmYTQ3NWE3MjQ2MDRkYTAzYmM1YjkyYTJlMGQyZTBhMzZhY2ZlNGM3M2E1NTE0NzQyODgxIiwiNzM4NjdmNTljMDY1OWU4MTkwNGY5YTFjNzU0MzY5OGU2MjU2MmQ2NzQ0YzE2OWNlN2EzNmRlMDFh''@;'; put 'put ''OGQ2MTU0Il0sWyI1ZTk1YmIzOTlhNjk3MWQzNzYwMjY5NDdmODliZGUyZjI4MmIzMzgxMDkyOGJlNGRlZDExMmFjNGQ3MGUyMGQ1IiwiMzlmMjNmMzY2ODA5MDg1YmVlYmZjNzExODEzMTM3NzVhOTljOWFlZDdkOGJhMzhiMTYxMzg0Yzc0NjAxMjg2NSJdLFsiMzZlNDY0MWE1Mzk0OGZkNDc2''@;'; put 'put ''YzM5ZjhhOTlmZDk3NGU1ZWMwNzU2NGI1MzE1ZDhiZjk5NDcxYmNhMGVmMmY2NiIsImQyNDI0YjFiMWFiZTRlYjgxNjQyMjdiMDg1YzlhYTk0NTZlYTEzNDkzZmQ1NjNlMDZmZDUxY2Y1Njk0Yzc4ZmMiXSxbIjMzNjU4MWVhN2JmYmJiMjkwYzE5MWEyZjUwN2E0MWNmNTY0Mzg0MjE3MGU5MTRm''@;'; put 'put ''YWVhYjI3YzJjNTc5ZjcyNiIsImVhZDEyMTY4NTk1ZmUxYmU5OTI1MjEyOWI2ZTU2YjMzOTFmN2FiMTQxMGNkMWUwZWYzZGNkY2FiZDJmZGEyMjQiXSxbIjhhYjg5ODE2ZGFkZmQ2YjZhMWYyNjM0ZmNmMDBlYzg0MDM3ODEwMjVlZDY4OTBjNDg0OTc0MjcwNmJkNDNlZGUiLCI2ZmRjZWYwOWYy''@;'; put 'put ''ZjZkMGEwNDRlNjU0YWVmNjI0MTM2ZjUwM2Q0NTljM2U4OTg0NTg1OGE0N2E5MTI5Y2RkMjRlIl0sWyIxZTMzZjFhNzQ2YzljNTc3ODEzMzM0NGQ5Mjk5ZmNhYTIwYjA5MzhlOGFjZmYyNTQ0YmI0MDI4NGI4YzVmYjk0IiwiNjA2NjAyNTdkZDExYjNhYTljOGVkNjE4ZDI0ZWRmZjIzMDZkMzIw''@;'; put 'put ''ZjFkMDMwMTBlMzNhN2QyMDU3ZjNiM2I2Il0sWyI4NWI3YzFkY2IzY2VjMWI3ZWU3ZjMwZGVkNzlkZDIwYTBlZDFmNGNjMThjYmNmY2ZhNDEwMzYxZmQ4ZjA4ZjMxIiwiM2Q5OGE5Y2RkMDI2ZGQ0M2YzOTA0OGYyNWE4ODQ3ZjRmY2FmYWQxODk1ZDdhNjMzYzZmZWQzYzM1ZTk5OTUxMSJdLFsi''@;'; put 'put ''MjlkZjlmYmQ4ZDllNDY1MDkyNzVmNGIxMjVkNmQ0NWQ3ZmJlOWEzYjg3OGE3YWY4NzJhMjgwMDY2MWFjNWY1MSIsImI0YzRmZTk5Yzc3NWE2MDZlMmQ4ODYyMTc5MTM5ZmZkYTYxZGM4NjFjMDE5ZTU1Y2QyODc2ZWIyYTI3ZDg0YiJdLFsiYTBiMWNhZTA2YjBhODQ3YTNmZWE2ZTY3MWFhZjhh''@;'; put 'put ''ZGZkZmU1OGNhMmY3NjgxMDVjODA4MmIyZTQ0OWZjZTI1MiIsImFlNDM0MTAyZWRkZTA5NThlYzRiMTlkOTE3YTZhMjhlNmI3MmRhMTgzNGFmZjBlNjUwZjA0OTUwM2EyOTZjZjIiXSxbIjRlOGNlYWZiOWIzZTlhMTM2ZGM3ZmY2N2U4NDAyOTViNDk5ZGZiM2IyMTMzZTRiYTExM2YyZTRjMGUx''@;'; put 'put ''MjFlNSIsImNmMjE3NDExOGM4YjZkN2E0YjQ4ZjZkNTM0Y2U1Yzc5NDIyYzA4NmE2MzQ2MDUwMmI4MjdjZTYyYTMyNjY4M2MiXSxbImQyNGE0NGUwNDdlMTliNmY1YWZiODFjN2NhMmY2OTA4MGE1MDc2Njg5YTAxMDkxOWY0MjcyNWMyYjc4OWEzM2IiLCI2ZmI4ZDU1OTFiNDY2ZjhmYzYzZGI1''@;'; put 'put ''MGYxYzBmMWM2OTAxM2Y5OTY4ODdiODI0NGQyY2RlYzQxN2FmZWE4ZmEzIl0sWyJlYTAxNjA2YTdhNmM5Y2RkMjQ5ZmRmY2ZhY2I5OTU4NDAwMWVkZDI4YWJiYWI3N2I1MTA0ZTk4ZThlM2IzNWQ0IiwiMzIyYWY0OTA4YzczMTJiMGNmYmZlMzY5ZjdhN2IzY2RiN2Q0NDk0YmMyODIzNzAwY2Zk''@;'; put 'put ''NjUyMTg4YTNlYTk4ZCJdLFsiYWY4YWRkYmYyYjY2MWM4YTZjNjMyODY1NWViOTY2NTEyNTIwMDdkOGM1ZWEzMWJlNGFkMTk2ZGU4Y2UyMTMxZiIsIjY3NDllNjdjMDI5Yjg1ZjUyYTAzNGVhZmQwOTY4MzZiMjUyMDgxODY4MGUyNmFjOGYzZGZiY2RiNzE3NDk3MDAiXSxbImUzYWUxOTc0NTY2''@;'; put 'put ''Y2EwNmNjNTE2ZDQ3ZTBmYjE2NWE2NzRhM2RhYmNmY2ExNWU3MjJmMGUzNDUwZjQ1ODg5IiwiMmFlYWJlN2U0NTMxNTEwMTE2MjE3ZjA3YmY0ZDA3MzAwZGU5N2U0ODc0ZjgxZjUzMzQyMGE3MmVlYjBiZDZhNCJdLFsiNTkxZWUzNTUzMTNkOTk3MjFjZjY5OTNmZmVkMWUzZTMwMTk5M2ZmM2Vk''@;'; put 'put ''MjU4ODAyMDc1ZWE4Y2VkMzk3ZTI0NiIsImIwZWE1NThhMTEzYzMwYmVhNjBmYzQ3NzU0NjBjNzkwMWZmMGIwNTNkMjVjYTJiZGVlZTk4ZjFhNGJlNWQxOTYiXSxbIjExMzk2ZDU1ZmRhNTRjNDlmMTlhYTk3MzE4ZDhkYTYxZmE4NTg0ZTQ3YjA4NDk0NTA3N2NmMDMyNTViNTI5ODQiLCI5OThj''@;'; put 'put ''NzRhOGNkNDVhYzAxMjg5ZDU4MzNhN2JlYjQ3NDRmZjUzNmIwMWIyNTdiZTRjNTc2N2JlYTkzZWE1N2E0Il0sWyIzYzVkMmExYmEzOWM1YTE3OTAwMDA3MzhjOWUwYzQwYjhkY2RmZDU0Njg3NTRiNjQwNTU0MDE1N2UwMTdhYTdhIiwiYjIyODQyNzk5OTVhMzRlMmY5ZDRkZTczOTZmYzE4Yjgw''@;'; put 'put ''ZjliOGI5ZmRkMjcwZjY2NjFmNzljYTRjODFiZDI1NyJdLFsiY2M4NzA0YjhhNjBhMGRlZmEzYTk5YTcyOTlmMmU5YzNmYmMzOTVhZmIwNGFjMDc4NDI1ZWY4YTE3OTNjYzAzMCIsImJkZDQ2MDM5ZmVlZDE3ODgxZDFlMDg2MmRiMzQ3ZjhjZjM5NWI3NGZjNGJjZGM0ZTk0MGI3NGUzYWMxZjFi''@;'; put 'put ''MTMiXSxbImM1MzNlNGY3ZWE4NTU1YWFjZDk3NzdhYzVjYWQyOWI5N2RkNGRlZmNjYzUzZWU3ZWEyMDQxMTliMjg4OWIxOTciLCI2ZjBhMjU2YmM1ZWZkZjQyOWEyZmI2MjQyZjFhNDNhMmQ5YjkyNWJiNGE0YjNhMjZiYjhlMGY0NWViNTk2MDk2Il0sWyJjMTRmOGYyY2NiMjdkNmYxMDlmNmQw''@;'; put 'put ''OGQwM2NjOTZhNjliYThjMzRlZWMwN2JiY2Y1NjZkNDhlMzNkYTY1OTMiLCJjMzU5ZDY5MjNiYjM5OGY3ZmQ0NDczZTE2ZmUxYzI4NDc1Yjc0MGRkMDk4MDc1ZTZjMGU4NjQ5MTEzZGMzYTM4Il0sWyJhNmNiYzMwNDZiYzZhNDUwYmFjMjQ3ODlmYTE3MTE1YTRjOTczOWVkNzVmOGYyMWNlNDQx''@;'; put 'put ''ZjcyZTBiOTBlNmVmIiwiMjFhZTdmNDY4MGU4ODliYjEzMDYxOWUyYzBmOTVhMzYwY2ViNTczYzcwNjAzMTM5ODYyYWZkNjE3ZmE5YjlmIl0sWyIzNDdkNmQ5YTAyYzQ4OTI3ZWJmYjg2YzEzNTliMWNhZjEzMGEzYzAyNjdkMTFjZTYzNDRiMzlmOTlkNDNjYzM4IiwiNjBlYTdmNjFhMzUzNTI0''@;'; put 'put ''ZDFjOTg3ZjZlY2VjOTJmMDg2ZDU2NWFiNjg3ODcwY2IxMjY4OWZmMWUzMWM3NDQ0OCJdLFsiZGE2NTQ1ZDIxODFkYjhkOTgzZjdkY2IzNzVlZjU4NjZkNDdjNjdiMWJmMzFjOGNmODU1ZWY3NDM3YjcyNjU2YSIsIjQ5Yjk2NzE1YWI2ODc4YTc5ZTc4ZjA3Y2U1NjgwYzVkNjY3MzA1MWI0OTM1''@;'; put 'put ''YmQ4OTdmZWE4MjRiNzdkYzIwOGEiXSxbImM0MDc0N2NjOWQwMTJjYjFhMTNiODE0ODMwOWM2ZGU3ZWMyNWQ2OTQ1ZDY1NzE0NmI5ZDU5OTRiOGZlYjExMTEiLCI1Y2E1NjA3NTNiZTJhMTJmYzZkZTZjYWYyY2I0ODk1NjVkYjkzNjE1NmI5NTE0ZTFiYjVlODMwMzdlMGZhMmQ0Il0sWyI0ZTQy''@;'; put 'put ''YzhlYzgyYzk5Nzk4Y2NmM2E2MTBiZTg3MGU3ODMzOGM3ZjcxMzM0OGJkMzRjODIwM2VmNDAzN2YzNTAyIiwiNzU3MWQ3NGVlNWUwZmI5MmE3YThiMzNhMDc3ODMzNDFhNTQ5MjE0NGNjNTRiY2M0MGE5NDQ3MzY5MzYwNjQzNyJdLFsiMzc3NWFiNzA4OWJjNmFmODIzYWJhMmUxYWY3MGIyMzZk''@;'; put 'put ''MjUxY2FkYjBjODY3NDMyODc1MjJhMWIzYjBkZWRlYSIsImJlNTJkMTA3YmNmYTA5ZDhiY2I5NzM2YTgyOGNmYTdmYWM4ZGIxN2JmN2E3NmEyYzQyYWQ5NjE0MDkwMThjZjciXSxbImNlZTMxY2JmN2UzNGVjMzc5ZDk0ZmI4MTRkM2Q3NzVhZDk1NDU5NWQxMzE0YmE4ODQ2OTU5ZTNlODJmNzRl''@;'; put 'put ''MjYiLCI4ZmQ2NGExNGMwNmI1ODljMjZiOTQ3YWUyYmNmNmJmYTAxNDllZjBiZTE0ZWQ0ZDgwZjQ0OGEwMWM0M2IxYzZkIl0sWyJiNGY5ZWFlYTA5YjY5MTc2MTlmNmVhNmE0ZWI1NDY0ZWZkZGI1OGZkNDViMWViZWZjZGMxYTAxZDA4YjQ3OTg2IiwiMzllNWM5OTI1YjVhNTRiMDc0MzNhNGYx''@;'; put 'put ''OGM2MTcyNmY4YmIxMzFjMDEyY2E1NDJlYjI0YThhYzA3MjAwNjgyYSJdLFsiZDQyNjNkZmMzZDJkZjkyM2EwMTc5YTQ4OTY2ZDMwY2U4NGUyNTE1YWZjM2RjY2MxYjc3OTA3NzkyZWJjYzYwZSIsIjYyZGZhZjA3YTBmNzhmZWIzMGUzMGQ2Mjk1ODUzY2UxODllMTI3NzYwYWQ2Y2Y3ZmFlMTY0''@;'; put 'put ''ZTEyMmEyMDhkNTQiXSxbIjQ4NDU3NTI0ODIwZmE2NWE0ZjhkMzVlYjY5MzA4NTdjMDAzMmFjYzBhNGEyZGU0MjIyMzNlZWRhODk3NjEyYzQiLCIyNWE3NDhhYjM2Nzk3OWQ5ODczM2MzOGExZmExYzJlN2RjNmNjMDdkYjJkNjBhOWFlN2E3NmFhYTQ5YmQwZjc3Il0sWyJkZmVlZWYxODgxMTAx''@;'; put 'put ''ZjJjYjExNjQ0ZjNhMmFmZGZjMjA0NWUxOTkxOTE1MjkyM2YzNjdhMTc2N2MxMWNjZWRhIiwiZWNmYjcwNTZjZjFkZTA0MmY5NDIwYmFiMzk2NzkzYzBjMzkwYmRlNzRiNGJiZGZmMTZhODNhZTA5YTlhNzUxNyJdLFsiNmQ3ZWY2YjE3NTQzZjgzNzNjNTczZjQ0ZTFmMzg5ODM1ZDg5YmNiYzYw''@;'; put 'put ''NjJjZWQzNmM4MmRmODNiOGZhZTg1OSIsImNkNDUwZWMzMzU0Mzg5ODZkZmVmYTEwYzU3ZmVhOWJjYzUyMWEwOTU5YjJkODBiYmY3NGIxOTBkY2E3MTJkMTAiXSxbImU3NTYwNWQ1OTEwMmE1YTI2ODQ1MDBkM2I5OTFmMmUzZjNjODhiOTMyMjU1NDcwMzVhZjI1YWY2NmUwNDU0MWYiLCJmNWM1''@;'; put 'put ''NDc1NGE4ZjcxZWU1NDBiOWI0ODcyODQ3M2UzMTRmNzI5YWM1MzA4YjA2OTM4MzYwOTkwZTJiZmFkMTI1Il0sWyJlYjk4NjYwZjRjNGRmYWEwNmEyYmU0NTNkNTAyMGJjOTlhMGMyZTYwYWJlMzg4NDU3ZGQ0M2ZlZmIxZWQ2MjBjIiwiNmNiOWE4ODc2ZDljYjg1MjA2MDlhZjNhZGQyNmNkMjBh''@;'; put 'put ''MGE3Y2Q4YTk0MTExMzFjZTg1ZjQ0MTAwMDk5MjIzZSJdLFsiMTNlODdiMDI3ZDg1MTRkMzU5MzlmMmU2ODkyYjE5OTIyMTU0NTk2OTQxODg4MzM2ZGMzNTYzZTNiOGRiYTk0MiIsImZlZjVhM2M2ODA1OWE2ZGVjNWQ2MjQxMTRiZjFlOTFhYWMyYjlkYTU2OGQ2YWJlYjI1NzBkNTU2NDZiOGFk''@;'; put 'put ''ZjEiXSxbImVlMTYzMDI2ZTlmZDZmZTAxN2MzOGYwNmE1YmU2ZmMxMjU0MjRiMzcxY2UyNzA4ZTdiZjQ0OTE2OTFlNTc2NGEiLCIxYWNiMjUwZjI1NWRkNjFjNDNkOTRjY2M2NzBkMGY1OGY0OWFlM2ZhMTViOTY2MjNlNTQzMGRhMGFkNmM2MmIyIl0sWyJiMjY4ZjVlZjlhZDUxZTRkNzhkZTNh''@;'; put 'put ''NzUwYzJkYzg5YjFlNjI2ZDQzNTA1ODY3OTk5OTMyZTVkYjMzYWYzZDgwIiwiNWYzMTBkNGIzYzk5YjllYmIxOWY3N2Q0MWMxZGVlMDE4Y2YwZDM0ZmQ0MTkxNjE0MDAzZTk0NWExMjE2ZTQyMyJdLFsiZmYwN2YzMTE4YTlkZjAzNWU5ZmFkODVlYjZjN2JmZTQyYjAyZjAxY2E5OWNlZWEzYmY3''@;'; put 'put ''ZmZkYmE5M2M0NzUwZCIsIjQzODEzNmQ2MDNlODU4YTNhNWM0NDBjMzhlY2NiYWRkYzFkMjk0MjExNGUyZWRkZDQ3NDBkMDk4Y2VkMWYwZDgiXSxbIjhkOGI5ODU1YzdjMDUyYTM0MTQ2ZmQyMGZmYjY1OGJlYTRiOWY2OWUwZDgyNWViZWMxNmU4YzNjZTJiNTI2YTEiLCJjZGI1NTllZWRjMmQ3''@;'; put 'put ''OWY5MjZiYWY0NGZiODRlYTRkNDRiY2Y1MGZlZTUxZDdjZWIzMGUyZTdmNDYzMDM2NzU4Il0sWyI1MmRiMGI1Mzg0ZGZiZjA1YmZhOWQ0NzJkN2FlMjZkZmU0Yjg1MWNlY2E5MWIxZWJhNTQyNjMxODBkYTMyYjYzIiwiYzNiOTk3ZDA1MGVlNWQ0MjNlYmFmNjZhNmRiOWY1N2IzMTgwYzkwMjg3''@;'; put 'put ''NTY3OWRlOTI0YjY5ZDg0YTdiMzc1Il0sWyJlNjJmOTQ5MGQzZDUxZGE2Mzk1ZWZkMjRlODA5MTljYzdkMGYyOWMzZjNmYTQ4YzZmZmY1NDNiZWNiZDQzMzUyIiwiNmQ4OWFkN2JhNDg3NmIwYjIyYzJjYTI4MGM2ODI4NjJmMzQyYzg1OTFmMWRhZjUxNzBlMDdiZmQ5Y2NhZmE3ZCJdLFsiN2Yz''@;'; put 'put ''MGVhMjQ3NmIzOTliNDk1NzUwOWM4OGY3N2QwMTkxYWZhMmZmNWNiN2IxNGZkNmQ4ZTdkNjVhYWFiMTE5MyIsImNhNWVmN2Q0YjIzMWM5NGMzYjE1Mzg5YTVmNjMxMWU5ZGFmZjdiYjY3YjEwM2U5ODgwZWY0YmZmNjM3YWNhZWMiXSxbIjUwOThmZjFlMWQ5ZjE0ZmI0NmEyMTBmYWRhNmM5MDNm''@;'; put 'put ''ZWYwZmI3YjRhMWRkMWQ5YWM2MGEwMzYxODAwYjdhMDAiLCI5NzMxMTQxZDgxZmM4ZjgwODRkMzdjNmU3NTQyMDA2YjNlZTFiNDBkNjBkZmU1MzYyYTViMTMyZmQxN2RkYzAiXSxbIjMyYjc4YzdkZTllZTUxMmE3Mjg5NWJlNmI5Y2JlZmE2ZTJmM2M0Y2NjZTQ0NWM5NmI5ZjJjODFlMjc3OGFk''@;'; put 'put ''NTgiLCJlZTE4NDlmNTEzZGY3MWUzMmVmYzM4OTZlZTI4MjYwYzczYmI4MDU0N2FlMjI3NWJhNDk3MjM3Nzk0Yzg3NTNjIl0sWyJlMmNiNzRmZGRjOGU5ZmJjZDA3NmVlZjJhN2M3MmIwY2UzN2Q1MGYwODI2OWRmYzA3NGI1ODE1NTA1NDdhNGY3IiwiZDNhYTJlZDcxYzlkZDIyNDdhNjJkZjA2''@;'; put 'put ''MjczNmViMGJhZGRlYTllMzYxMjJkMmJlODY0MWFiY2IwMDVjYzRhNCJdLFsiODQzODQ0NzU2NmQ0ZDdiZWRhZGMyOTk0OTZhYjM1NzQyNjAwOWEzNWYyMzVjYjE0MWJlMGQ5OWNkMTBhZTNhOCIsImM0ZTEwMjA5MTY5ODBhNGRhNWQwMWFjNWU2YWQzMzA3MzRlZjBkNzkwNjYzMWM0ZjIzOTA0''@;'; put 'put ''MjZiMmVkZDc5MWYiXSxbIjQxNjJkNDg4Yjg5NDAyMDM5YjU4NGM2ZmM2YzMwODg3MDU4N2Q5YzQ2ZjY2MGI4NzhhYjY1YzgyYzcxMWQ2N2UiLCI2NzE2M2U5MDMyMzYyODlmNzc2ZjIyYzI1ZmI4YTNhZmMxNzMyZjJiODRiNGU5NWRiZGE0N2FlNWEwODUyNjQ5Il0sWyIzZmFkM2ZhODRjYWYw''@;'; put 'put ''ZjM0ZjBmODliZmQyZGNmNTRmYzE3NWQ3NjdhZWMzZTUwNjg0ZjNiYTRhNGJmNWY2ODNkIiwiY2QxYmM3Y2I2Y2M0MDdiYjJmMGNhNjQ3YzcxOGE3MzBjZjcxODcyZTdkMGQyYTUzZmEyMGVmY2RmZTYxODI2Il0sWyI2NzRmMjYwMGEzMDA3YTAwNTY4YzFhN2NlMDVkMDgxNmMxZmI4NGJmMTM3''@;'; put 'put ''MDc5OGYxYzY5NTMyZmFlYjFhODZiIiwiMjk5ZDIxZjk0MTNmMzNiM2VkZjQzYjI1NzAwNDU4MGI3MGRiNTdkYTBiMTgyMjU5ZTA5ZWVjYzY5ZTBkMzhhNSJdLFsiZDMyZjRkYTU0YWRlNzRhYmI4MWI4MTVhZDFmYjNiMjYzZDgyZDZjNjkyNzE0YmNmZjg3ZDI5YmQ1ZWU5ZjA4ZiIsImY5NDI5''@;'; put 'put ''ZTczOGI4ZTUzYjk2OGU5OTAxNmMwNTk3MDc3ODJlMTRmNDUzNTM1OWQ1ODJmYzQxNjkxMGIzZWVhODciXSxbIjMwZTRlNjcwNDM1Mzg1NTU2ZTU5MzY1NzEzNTg0NWQzNmZiYjY5MzFmNzJiMDhjYjFlZDk1NGYxZTNjZTNmZjYiLCI0NjJmOWJjZTYxOTg5ODYzODQ5OTM1MDExM2JiYzliMTBh''@;'; put 'put ''ODc4ZDM1ZGE3MDc0MGRjNjk1YTU1OWViODhkYjdiIl0sWyJiZTIwNjIwMDNjNTFjYzMwMDQ2ODI5MDQzMzBlNGRlZTdmM2RjZDEwYjAxZTU4MGJmMTk3MWIwNGQ0Y2FkMjk3IiwiNjIxODhiYzQ5ZDYxZTU0Mjg1NzNkNDhhNzRlMWM2NTViMWM2MTA5MDkwNTY4MmEwZDU1NThlZDcyZGNjYjli''@;'; put 'put ''YyJdLFsiOTMxNDQ0MjNhY2UzNDUxZWQyOWUwZmI5YWMyYWYyMTFjYjZlODRhNjAxZGY1OTkzYzQxOTg1OWZmZjVkZjA0YSIsIjdjMTBkZmIxNjRjMzQyNWY1YzcxYTNmOWQ3OTkyMDM4ZjEwNjUyMjRmNzJiYjlkMWQ5MDJhNmQxMzAzN2I0N2MiXSxbImIwMTVmODA0NGY1ZmNiZGNmMjFjYTI2''@;'; put 'put ''ZDZjMzRmYjgxOTc4MjkyMDVjN2I3ZDJhN2NiNjY0MThjMTU3YjExMmMiLCJhYjhjMWUwODZkMDRlODEzNzQ0YTY1NWIyZGY4ZDVmODNiM2NkYzZmYWEzMDg4YzFkM2FlYTE0NTRlM2ExZDVmIl0sWyJkNWU5ZTFkYTY0OWQ5N2Q4OWU0ODY4MTE3YTQ2NWEzYTRmOGExOGRlNTdhMTQwZDM2YjNm''@;'; put 'put ''MmFmMzQxYTIxYjUyIiwiNGNiMDQ0MzdmMzkxZWQ3MzExMWExM2NjMWQ0ZGQwZGIxNjkzNDY1YzIyNDA0ODBkODk1NWU4NTkyZjI3NDQ3YSJdLFsiZDNhZTQxMDQ3ZGQ3Y2EwNjVkYmY4ZWQ3N2I5OTI0Mzk5ODMwMDVjZDcyZTE2ZDZmOTk2YTUzMTZkMzY5NjZiYiIsImJkMWFlYjIxYWQyMmVi''@;'; put 'put ''YjIyYTEwZjAzMDM0MTdjNmQ5NjRmOGNkZDdkZjBhY2E2MTRiMTBkYzE0ZDEyNWFjNDYiXSxbIjQ2M2UyNzYzZDg4NWY5NThmYzY2Y2RkMjI4MDBmMGE0ODcxOTdkMGE4MmUzNzdiNDlmODBhZjg3Yzg5N2IwNjUiLCJiZmVmYWNkYjBlNWQwZmQ3ZGYzYTMxMWE5NGRlMDYyYjI2YjgwYzYxZmJj''@;'; put 'put ''OTc1MDhiNzk5OTI2NzFlZjdjYTdmIl0sWyI3OTg1ZmRmZDEyN2MwNTY3YzZmNTNlYzFiYjYzZWMzMTU4ZTU5N2M0MGJmZTc0N2M4M2NkZGZjOTEwNjQxOTE3IiwiNjAzYzEyZGFmM2Q5ODYyZWYyYjI1ZmUxZGUyODlhZWQyNGVkMjkxZTBlYzY3MDg3MDNhNWJkNTY3ZjMyZWQwMyJdLFsiNzRh''@;'; put 'put ''MWFkNmI1Zjc2ZTM5ZGIyZGQyNDk0MTBlYWM3Zjk5ZTc0YzU5Y2I4M2QyZDBlZDVmZjE1NDNkYTc3MDNlOSIsImNjNjE1N2VmMThjOWM2M2NkNjE5M2Q4MzYzMWJiZWEwMDkzZTA5Njg5NDJlOGMzM2Q1NzM3ZmQ3OTBlMGRiMDgiXSxbIjMwNjgyYTUwNzAzMzc1ZjYwMmQ0MTY2NjRiYTE5Yjdm''@;'; put 'put ''YzliYWI0MmM3Mjc0NzQ2M2E3MWQwODk2YjIyZjZkYTMiLCI1NTNlMDRmNmIwMThiNGZhNmM4ZjM5ZTdmMzExZDMxNzYyOTBkMGUwZjE5Y2E3M2YxNzcxNGQ5OTc3YTIyZmY4Il0sWyI5ZTIxNThmMGQ3YzBkNWYyNmMzNzkxZWZlZmE3OTU5NzY1NGU3YTJiMjQ2NGY1MmIxZWU2YzEzNDc3Njll''@;'; put 'put ''ZjU3IiwiNzEyZmNkZDFiOTA1M2YwOTAwM2EzNDgxZmE3NzYyZTlmZmQ3YzhlZjM1YTM4NTA5ZTJmYmYyNjI5MDA4MzczIl0sWyIxNzZlMjY5ODlhNDNjOWNmZWJhNDAyOWMyMDI1MzhjMjgxNzJlNTY2ZTNjNGZjZTczMjI4NTdmM2JlMzI3ZDY2IiwiZWQ4Y2M5ZDA0YjI5ZWI4NzdkMjcwYjQ4''@;'; put 'put ''NzhkYzQzYzE5YWVmZDMxZjRlZWUwOWVlN2I0NzgzNGMxZmE0YjFjMyJdLFsiNzVkNDZlZmVhMzc3MWU2ZTY4YWJiODlhMTNhZDc0N2VjZjE4OTIzOTNkZmM0ZjFiNzAwNDc4OGM1MDM3NGRhOCIsIjk4NTIzOTBhOTk1MDc2NzlmZDBiODZmZDJiMzlhODY4ZDdlZmMyMjE1MTM0NmUxYTNjYTQ3''@;'; put 'put ''MjY1ODZhNmJlZDgiXSxbIjgwOWEyMGM2N2Q2NDkwMGZmYjY5OGM0YzgyNWY2ZDVmMjMxMGZiMDQ1MWM4NjkzNDViNzMxOWY2NDU2MDU3MjEiLCI5ZTk5NDk4MGQ5OTE3ZTIyYjc2YjA2MTkyN2ZhMDQxNDNkMDk2Y2NjNTQ5NjNlNmE1ZWJmYTVmM2Y4ZTI4NmMxIl0sWyIxYjM4OTAzYTQzZjdm''@;'; put 'put ''MTE0ZWQ0NTAwYjRlYWM3MDgzZmRlZmVjZTFjZjI5YzYzNTI4ZDU2MzQ0NmY5NzJjMTgwIiwiNDAzNmVkYzkzMWE2MGFlODg5MzUzZjc3ZmQ1M2RlNGEyNzA4YjI2YjZmNWRhNzJhZDMzOTQxMTlkYWY0MDhmOSJdXX19fSw5NTM6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9USxhZT1q''@;'; put 'put ''KDM3ODUpLFk9aig5NzQ2KSxXPWooNDUwNCk7cmUuYXNzZXJ0PVkscmUudG9BcnJheT1XLnRvQXJyYXkscmUuemVybzI9Vy56ZXJvMixyZS50b0hleD1XLnRvSGV4LHJlLmVuY29kZT1XLmVuY29kZSxyZS5nZXROQUY9ZnVuY3Rpb24oTix0ZSxLKXt2YXIgSj1uZXcgQXJyYXkoTWF0aC5tYXgo''@;'; put 'put ''Ti5iaXRMZW5ndGgoKSxLKSsxKTtKLmZpbGwoMCk7Zm9yKHZhciBzZT0xPDx0ZSsxLG9lPU4uY2xvbmUoKSxjZT0wO2NlPEoubGVuZ3RoO2NlKyspe3ZhciBkZSx2ZT1vZS5hbmRsbihzZS0xKTtvZS5pc09kZCgpP29lLmlzdWJuKGRlPXZlPihzZT4+MSktMT8oc2U+PjEpLXZlOnZlKTpkZT0w''@;'; put 'put ''LEpbY2VdPWRlLG9lLml1c2hybigxKX1yZXR1cm4gSn0scmUuZ2V0SlNGPWZ1bmN0aW9uKE4sdGUpe3ZhciBLPVtbXSxbXV07Tj1OLmNsb25lKCksdGU9dGUuY2xvbmUoKTtmb3IodmFyIEosc2U9MCxvZT0wO04uY21wbigtc2UpPjB8fHRlLmNtcG4oLW9lKT4wOyl7dmFyIGNlLGRlLHZlPU4u''@;'; put 'put ''YW5kbG4oMykrc2UmMyxBZT10ZS5hbmRsbigzKStvZSYzOzM9PT12ZSYmKHZlPS0xKSwzPT09QWUmJihBZT0tMSksY2U9MD09KDEmdmUpPzA6MyE9KEo9Ti5hbmRsbig3KStzZSY3KSYmNSE9PUp8fDIhPT1BZT92ZTotdmUsS1swXS5wdXNoKGNlKSxkZT0wPT0oMSZBZSk/MDozIT0oSj10ZS5h''@;'; put 'put ''bmRsbig3KStvZSY3KSYmNSE9PUp8fDIhPT12ZT9BZTotQWUsS1sxXS5wdXNoKGRlKSwyKnNlPT09Y2UrMSYmKHNlPTEtc2UpLDIqb2U9PT1kZSsxJiYob2U9MS1vZSksTi5pdXNocm4oMSksdGUuaXVzaHJuKDEpfXJldHVybiBLfSxyZS5jYWNoZWRQcm9wZXJ0eT1mdW5jdGlvbihOLHRlLEsp''@;'; put 'put ''e3ZhciBKPSJfIit0ZTtOLnByb3RvdHlwZVt0ZV09ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpc1tKXT90aGlzW0pdOnRoaXNbSl09Sy5jYWxsKHRoaXMpfX0scmUucGFyc2VCeXRlcz1mdW5jdGlvbihOKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIE4/cmUudG9BcnJheShOLCJoZXgi''@;'; put 'put ''KTpOfSxyZS5pbnRGcm9tTEU9ZnVuY3Rpb24oTil7cmV0dXJuIG5ldyBhZShOLCJoZXgiLCJsZSIpfX0sMzc4NTpmdW5jdGlvbihVLFEsail7IWZ1bmN0aW9uKHJlLGFlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gWSh4LFApe2lmKCF4KXRocm93IG5ldyBFcnJvcihQfHwiQXNzZXJ0aW9uIGZh''@;'; put 'put ''aWxlZCIpfWZ1bmN0aW9uIFcoeCxQKXt4LnN1cGVyXz1QO3ZhciBWPWZ1bmN0aW9uKCl7fTtWLnByb3RvdHlwZT1QLnByb3RvdHlwZSx4LnByb3RvdHlwZT1uZXcgVix4LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj14fWZ1bmN0aW9uIE4oeCxQLFYpe2lmKE4uaXNCTih4KSlyZXR1cm4geDt0aGlz''@;'; put 'put ''Lm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCxudWxsIT09eCYmKCJsZSIhPT1QJiYiYmUiIT09UHx8KFY9UCxQPTEwKSx0aGlzLl9pbml0KHh8fDAsUHx8MTAsVnx8ImJlIikpfXZhciB0ZTsib2JqZWN0Ij09dHlwZW9mIHJlP3JlLmV4cG9y''@;'; put 'put ''dHM9TjphZS5CTj1OLE4uQk49TixOLndvcmRTaXplPTI2O3RyeXt0ZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LkJ1ZmZlcj93aW5kb3cuQnVmZmVyOmooNTU2OCkuQnVmZmVyfWNhdGNoKHgpe31mdW5jdGlvbiBLKHgsUCl7dmFyIFY9eC5jaGFyQ29kZUF0''@;'; put 'put ''KFApO3JldHVybiBWPj02NSYmVjw9NzA/Vi01NTpWPj05NyYmVjw9MTAyP1YtODc6Vi00OCYxNX1mdW5jdGlvbiBKKHgsUCxWKXt2YXIgVD1LKHgsVik7cmV0dXJuIFYtMT49UCYmKFR8PUsoeCxWLTEpPDw0KSxUfWZ1bmN0aW9uIHNlKHgsUCxWLFQpe2Zvcih2YXIgUz0wLEY9TWF0aC5taW4o''@;'; put 'put ''eC5sZW5ndGgsVikseWU9UDt5ZTxGO3llKyspe3ZhciBDZT14LmNoYXJDb2RlQXQoeWUpLTQ4O1MqPVQsUys9Q2U+PTQ5P0NlLTQ5KzEwOkNlPj0xNz9DZS0xNysxMDpDZX1yZXR1cm4gU31OLmlzQk49ZnVuY3Rpb24oeCl7cmV0dXJuIHggaW5zdGFuY2VvZiBOfHxudWxsIT09eCYmIm9iamVj''@;'; put 'put ''dCI9PXR5cGVvZiB4JiZ4LmNvbnN0cnVjdG9yLndvcmRTaXplPT09Ti53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheSh4LndvcmRzKX0sTi5tYXg9ZnVuY3Rpb24oeCxQKXtyZXR1cm4geC5jbXAoUCk+MD94OlB9LE4ubWluPWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHguY21wKFApPDA/eDpQfSxOLnBy''@;'; put 'put ''b3RvdHlwZS5faW5pdD1mdW5jdGlvbih4LFAsVil7aWYoIm51bWJlciI9PXR5cGVvZiB4KXJldHVybiB0aGlzLl9pbml0TnVtYmVyKHgsUCxWKTtpZigib2JqZWN0Ij09dHlwZW9mIHgpcmV0dXJuIHRoaXMuX2luaXRBcnJheSh4LFAsVik7ImhleCI9PT1QJiYoUD0xNiksWShQPT09KDB8UCkm''@;'; put 'put ''JlA+PTImJlA8PTM2KTt2YXIgVD0wOyItIj09PSh4PXgudG9TdHJpbmcoKS5yZXBsYWNlKC9ccysvZywiIikpWzBdJiYoVCsrLHRoaXMubmVnYXRpdmU9MSksVDx4Lmxlbmd0aCYmKDE2PT09UD90aGlzLl9wYXJzZUhleCh4LFQsVik6KHRoaXMuX3BhcnNlQmFzZSh4LFAsVCksImxlIj09PVYm''@;'; put 'put ''JnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxQLFYpKSl9LE4ucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKHgsUCxWKXt4PDAmJih0aGlzLm5lZ2F0aXZlPTEseD0teCkseDw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmeF0sdGhpcy5sZW5ndGg9MSk6eDw0NTAz''@;'; put 'put ''NTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ4LHgvNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihZKHg8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmeCx4LzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1W''@;'; put 'put ''JiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksUCxWKX0sTi5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbih4LFAsVil7aWYoWSgibnVtYmVyIj09dHlwZW9mIHgubGVuZ3RoKSx4Lmxlbmd0aDw9MClyZXR1cm4gdGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MSx0aGlzO3Ro''@;'; put 'put ''aXMubGVuZ3RoPU1hdGguY2VpbCh4Lmxlbmd0aC8zKSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBUPTA7VDx0aGlzLmxlbmd0aDtUKyspdGhpcy53b3Jkc1tUXT0wO3ZhciBTLEYseWU9MDtpZigiYmUiPT09Vilmb3IoVD14Lmxlbmd0aC0xLFM9MDtUPj0wO1Qt''@;'; put 'put ''PTMpdGhpcy53b3Jkc1tTXXw9KEY9eFtUXXx4W1QtMV08PDh8eFtULTJdPDwxNik8PHllJjY3MTA4ODYzLHRoaXMud29yZHNbUysxXT1GPj4+MjYteWUmNjcxMDg4NjMsKHllKz0yNCk+PTI2JiYoeWUtPTI2LFMrKyk7ZWxzZSBpZigibGUiPT09Vilmb3IoVD0wLFM9MDtUPHgubGVuZ3RoO1Qr''@;'; put 'put ''PTMpdGhpcy53b3Jkc1tTXXw9KEY9eFtUXXx4W1QrMV08PDh8eFtUKzJdPDwxNik8PHllJjY3MTA4ODYzLHRoaXMud29yZHNbUysxXT1GPj4+MjYteWUmNjcxMDg4NjMsKHllKz0yNCk+PTI2JiYoeWUtPTI2LFMrKyk7cmV0dXJuIHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuX3BhcnNlSGV4''@;'; put 'put ''PWZ1bmN0aW9uKHgsUCxWKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKHgubGVuZ3RoLVApLzYpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIFQ9MDtUPHRoaXMubGVuZ3RoO1QrKyl0aGlzLndvcmRzW1RdPTA7dmFyIFMsRj0wLHllPTA7aWYoImJlIj09PVYpZm9y''@;'; put 'put ''KFQ9eC5sZW5ndGgtMTtUPj1QO1QtPTIpUz1KKHgsUCxUKTw8Rix0aGlzLndvcmRzW3llXXw9NjcxMDg4NjMmUyxGPj0xOD8oRi09MTgsdGhpcy53b3Jkc1t5ZSs9MV18PVM+Pj4yNik6Ris9ODtlbHNlIGZvcihUPSh4Lmxlbmd0aC1QKSUyPT0wP1ArMTpQO1Q8eC5sZW5ndGg7VCs9MilTPUoo''@;'; put 'put ''eCxQLFQpPDxGLHRoaXMud29yZHNbeWVdfD02NzEwODg2MyZTLEY+PTE4PyhGLT0xOCx0aGlzLndvcmRzW3llKz0xXXw9Uz4+PjI2KTpGKz04O3RoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbih4LFAsVil7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtm''@;'; put 'put ''b3IodmFyIFQ9MCxTPTE7Uzw9NjcxMDg4NjM7Uyo9UClUKys7VC0tLFM9Uy9QfDA7Zm9yKHZhciBGPXgubGVuZ3RoLVYseWU9RiVULENlPU1hdGgubWluKEYsRi15ZSkrVixEZT0wLFBlPVY7UGU8Q2U7UGUrPVQpRGU9c2UoeCxQZSxQZStULFApLHRoaXMuaW11bG4oUyksdGhpcy53b3Jkc1sw''@;'; put 'put ''XStEZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1EZTp0aGlzLl9pYWRkbihEZSk7aWYoMCE9PXllKXt2YXIgUWU9MTtmb3IoRGU9c2UoeCxQZSx4Lmxlbmd0aCxQKSxQZT0wO1BlPHllO1BlKyspUWUqPVA7dGhpcy5pbXVsbihRZSksdGhpcy53b3Jkc1swXStEZTw2NzEwODg2ND90aGlzLndv''@;'; put 'put ''cmRzWzBdKz1EZTp0aGlzLl9pYWRkbihEZSl9dGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHgpe3gud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIFA9MDtQPHRoaXMubGVuZ3RoO1ArKyl4LndvcmRzW1BdPXRoaXMud29yZHNbUF07eC5sZW5ndGg9''@;'; put 'put ''dGhpcy5sZW5ndGgseC5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLHgucmVkPXRoaXMucmVkfSxOLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciB4PW5ldyBOKG51bGwpO3JldHVybiB0aGlzLmNvcHkoeCkseH0sTi5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbih4KXtmb3IoO3RoaXMu''@;'; put 'put ''bGVuZ3RoPHg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sTi5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2ln''@;'; put 'put ''bigpfSxOLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sTi5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxC''@;'; put 'put ''TjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgb2U9WyIiLCIwIiwiMDAiLCIwMDAiLCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAw''@;'; put 'put ''MDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sY2U9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1''@;'; put 'put ''LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sZGU9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIx''@;'; put 'put ''NiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2''@;'; put 'put ''NjE3Nl07ZnVuY3Rpb24gdmUoeCxQLFYpe1YubmVnYXRpdmU9UC5uZWdhdGl2ZV54Lm5lZ2F0aXZlO3ZhciBUPXgubGVuZ3RoK1AubGVuZ3RofDA7Vi5sZW5ndGg9VCxUPVQtMXwwO3ZhciBTPTB8eC53b3Jkc1swXSxGPTB8UC53b3Jkc1swXSx5ZT1TKkYsRGU9eWUvNjcxMDg4NjR8MDtWLndv''@;'; put 'put ''cmRzWzBdPTY3MTA4ODYzJnllO2Zvcih2YXIgUGU9MTtQZTxUO1BlKyspe2Zvcih2YXIgUWU9RGU+Pj4yNiwkZT02NzEwODg2MyZEZSxndD1NYXRoLm1pbihQZSxQLmxlbmd0aC0xKSx3dD1NYXRoLm1heCgwLFBlLXgubGVuZ3RoKzEpO3d0PD1ndDt3dCsrKVFlKz0oeWU9KFM9MHx4LndvcmRz''@;'; put 'put ''W1BlLXd0fDBdKSooRj0wfFAud29yZHNbd3RdKSskZSkvNjcxMDg4NjR8MCwkZT02NzEwODg2MyZ5ZTtWLndvcmRzW1BlXT0wfCRlLERlPTB8UWV9cmV0dXJuIDAhPT1EZT9WLndvcmRzW1BlXT0wfERlOlYubGVuZ3RoLS0sVi5zdHJpcCgpfU4ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9u''@;'; put 'put ''KHgsUCl7dmFyIFY7aWYoUD0wfFB8fDEsMTY9PT0oeD14fHwxMCl8fCJoZXgiPT09eCl7Vj0iIjtmb3IodmFyIFQ9MCxTPTAsRj0wO0Y8dGhpcy5sZW5ndGg7RisrKXt2YXIgeWU9dGhpcy53b3Jkc1tGXSxDZT0oMTY3NzcyMTUmKHllPDxUfFMpKS50b1N0cmluZygxNik7Vj0wIT0oUz15ZT4+''@;'; put 'put ''PjI0LVQmMTY3NzcyMTUpfHxGIT09dGhpcy5sZW5ndGgtMT9vZVs2LUNlLmxlbmd0aF0rQ2UrVjpDZStWLChUKz0yKT49MjYmJihULT0yNixGLS0pfWZvcigwIT09UyYmKFY9Uy50b1N0cmluZygxNikrVik7Vi5sZW5ndGglUCE9MDspVj0iMCIrVjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUm''@;'; put 'put ''JihWPSItIitWKSxWfWlmKHg9PT0oMHx4KSYmeD49MiYmeDw9MzYpe3ZhciBEZT1jZVt4XSxQZT1kZVt4XTtWPSIiO3ZhciBRZT10aGlzLmNsb25lKCk7Zm9yKFFlLm5lZ2F0aXZlPTA7IVFlLmlzWmVybygpOyl7dmFyICRlPVFlLm1vZG4oUGUpLnRvU3RyaW5nKHgpO1Y9KFFlPVFlLmlkaXZu''@;'; put 'put ''KFBlKSkuaXNaZXJvKCk/JGUrVjpvZVtEZS0kZS5sZW5ndGhdKyRlK1Z9Zm9yKHRoaXMuaXNaZXJvKCkmJihWPSIwIitWKTtWLmxlbmd0aCVQIT0wOylWPSIwIitWO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKFY9Ii0iK1YpLFZ9WSghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFu''@;'; put 'put ''ZCAzNiIpfSxOLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciB4PXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD94Kz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/eCs9NDUwMzU5OTYyNzM3MDQ5Nis2''@;'; put 'put ''NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJlkoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy14Onh9LE4ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2''@;'; put 'put ''KX0sTi5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gWSh2b2lkIDAhPT10ZSksdGhpcy50b0FycmF5TGlrZSh0ZSx4LFApfSxOLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXkseCxQKX0sTi5wcm90b3R5''@;'; put 'put ''cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oeCxQLFYpe3ZhciBUPXRoaXMuYnl0ZUxlbmd0aCgpLFM9Vnx8TWF0aC5tYXgoMSxUKTtZKFQ8PVMsImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKSxZKFM+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIiksdGhpcy5z''@;'; put 'put ''dHJpcCgpO3ZhciBGLHllLENlPSJsZSI9PT1QLERlPW5ldyB4KFMpLFBlPXRoaXMuY2xvbmUoKTtpZihDZSl7Zm9yKHllPTA7IVBlLmlzWmVybygpO3llKyspRj1QZS5hbmRsbigyNTUpLFBlLml1c2hybig4KSxEZVt5ZV09Rjtmb3IoO3llPFM7eWUrKylEZVt5ZV09MH1lbHNle2Zvcih5ZT0w''@;'; put 'put ''O3llPFMtVDt5ZSsrKURlW3llXT0wO2Zvcih5ZT0wOyFQZS5pc1plcm8oKTt5ZSsrKUY9UGUuYW5kbG4oMjU1KSxQZS5pdXNocm4oOCksRGVbUy15ZS0xXT1GfXJldHVybiBEZX0sTi5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKHgpe3JldHVybiAzMi1NYXRoLmNs''@;'; put 'put ''ejMyKHgpfTpmdW5jdGlvbih4KXt2YXIgUD14LFY9MDtyZXR1cm4gUD49NDA5NiYmKFYrPTEzLFA+Pj49MTMpLFA+PTY0JiYoVis9NyxQPj4+PTcpLFA+PTgmJihWKz00LFA+Pj49NCksUD49MiYmKFYrPTIsUD4+Pj0yKSxWK1B9LE4ucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbih4KXtp''@;'; put 'put ''ZigwPT09eClyZXR1cm4gMjY7dmFyIFA9eCxWPTA7cmV0dXJuIDA9PSg4MTkxJlApJiYoVis9MTMsUD4+Pj0xMyksMD09KDEyNyZQKSYmKFYrPTcsUD4+Pj03KSwwPT0oMTUmUCkmJihWKz00LFA+Pj49NCksMD09KDMmUCkmJihWKz0yLFA+Pj49MiksMD09KDEmUCkmJlYrKyxWfSxOLnByb3Rv''@;'; put 'put ''dHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgUD10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStQfSxOLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9y''@;'; put 'put ''KHZhciB4PTAsUD0wO1A8dGhpcy5sZW5ndGg7UCsrKXt2YXIgVj10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW1BdKTtpZih4Kz1WLDI2IT09VilicmVha31yZXR1cm4geH0sTi5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgo''@;'; put 'put ''KS84KX0sTi5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKHgpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKHgpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sTi5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMudGVzdG4oeC0xKT90aGlz''@;'; put 'put ''Lm5vdG4oeCkuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sTi5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LE4ucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxOLnByb3RvdHlwZS5pbmVn''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxOLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKHgpe2Zvcig7dGhpcy5sZW5ndGg8eC5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIFA9MDtQPHgubGVuZ3Ro''@;'; put 'put ''O1ArKyl0aGlzLndvcmRzW1BdPXRoaXMud29yZHNbUF18eC53b3Jkc1tQXTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoMD09KHRoaXMubmVnYXRpdmV8eC5uZWdhdGl2ZSkpLHRoaXMuaXVvcih4KX0sTi5wcm90b3R5cGUub3I9ZnVu''@;'; put 'put ''Y3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoeCk6eC5jbG9uZSgpLmlvcih0aGlzKX0sTi5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcih4KTp4LmNsb25lKCku''@;'; put 'put ''aXVvcih0aGlzKX0sTi5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oeCl7dmFyIFA7UD10aGlzLmxlbmd0aD54Lmxlbmd0aD94OnRoaXM7Zm9yKHZhciBWPTA7VjxQLmxlbmd0aDtWKyspdGhpcy53b3Jkc1tWXT10aGlzLndvcmRzW1ZdJngud29yZHNbVl07cmV0dXJuIHRoaXMubGVuZ3RoPVAu''@;'; put 'put ''bGVuZ3RoLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbih4KXtyZXR1cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXx4Lm5lZ2F0aXZlKSksdGhpcy5pdWFuZCh4KX0sTi5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlz''@;'; put 'put ''LmNsb25lKCkuaWFuZCh4KTp4LmNsb25lKCkuaWFuZCh0aGlzKX0sTi5wcm90b3R5cGUudWFuZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKHgpOnguY2xvbmUoKS5pdWFuZCh0aGlzKX0sTi5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rp''@;'; put 'put ''b24oeCl7dmFyIFAsVjt0aGlzLmxlbmd0aD54Lmxlbmd0aD8oUD10aGlzLFY9eCk6KFA9eCxWPXRoaXMpO2Zvcih2YXIgVD0wO1Q8Vi5sZW5ndGg7VCsrKXRoaXMud29yZHNbVF09UC53b3Jkc1tUXV5WLndvcmRzW1RdO2lmKHRoaXMhPT1QKWZvcig7VDxQLmxlbmd0aDtUKyspdGhpcy53b3Jk''@;'; put 'put ''c1tUXT1QLndvcmRzW1RdO3JldHVybiB0aGlzLmxlbmd0aD1QLmxlbmd0aCx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoMD09KHRoaXMubmVnYXRpdmV8eC5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoeCl9LE4ucHJvdG90eXBlLnhvcj1mdW5jdGlv''@;'; put 'put ''bih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoeCk6eC5jbG9uZSgpLml4b3IodGhpcyl9LE4ucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcih4KTp4LmNsb25lKCku''@;'; put 'put ''aXV4b3IodGhpcyl9LE4ucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgUD0wfE1hdGguY2VpbCh4LzI2KSxWPXglMjY7dGhpcy5fZXhwYW5kKFApLFY+MCYmUC0tO2Zvcih2YXIgVD0wO1Q8UDtUKyspdGhpcy53b3Jkc1tUXT02NzEw''@;'; put 'put ''ODg2MyZ+dGhpcy53b3Jkc1tUXTtyZXR1cm4gVj4wJiYodGhpcy53b3Jkc1tUXT1+dGhpcy53b3Jkc1tUXSY2NzEwODg2Mz4+MjYtViksdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oeCl9LE4ucHJvdG90eXBlLnNl''@;'; put 'put ''dG49ZnVuY3Rpb24oeCxQKXtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCk7dmFyIFY9eC8yNnwwLFQ9eCUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKFYrMSksdGhpcy53b3Jkc1tWXT1QP3RoaXMud29yZHNbVl18MTw8VDp0aGlzLndvcmRzW1ZdJn4oMTw8VCksdGhpcy5zdHJpcCgpfSxOLnBy''@;'; put 'put ''b3RvdHlwZS5pYWRkPWZ1bmN0aW9uKHgpe3ZhciBQLFYsVDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PXgubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxQPXRoaXMuaXN1Yih4KSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUm''@;'; put 'put ''JjAhPT14Lm5lZ2F0aXZlKXJldHVybiB4Lm5lZ2F0aXZlPTAsUD10aGlzLmlzdWIoeCkseC5uZWdhdGl2ZT0xLFAuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+eC5sZW5ndGg/KFY9dGhpcyxUPXgpOihWPXgsVD10aGlzKTtmb3IodmFyIFM9MCxGPTA7RjxULmxlbmd0aDtGKyspdGhpcy53b3Jk''@;'; put 'put ''c1tGXT02NzEwODg2MyYoUD0oMHxWLndvcmRzW0ZdKSsoMHxULndvcmRzW0ZdKStTKSxTPVA+Pj4yNjtmb3IoOzAhPT1TJiZGPFYubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPTY3MTA4ODYzJihQPSgwfFYud29yZHNbRl0pK1MpLFM9UD4+PjI2O2lmKHRoaXMubGVuZ3RoPVYubGVuZ3RoLDAh''@;'; put 'put ''PT1TKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPVMsdGhpcy5sZW5ndGgrKztlbHNlIGlmKFYhPT10aGlzKWZvcig7RjxWLmxlbmd0aDtGKyspdGhpcy53b3Jkc1tGXT1WLndvcmRzW0ZdO3JldHVybiB0aGlzfSxOLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oeCl7dmFyIFA7cmV0dXJuIDAhPT14''@;'; put 'put ''Lm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oeC5uZWdhdGl2ZT0wLFA9dGhpcy5zdWIoeCkseC5uZWdhdGl2ZV49MSxQKTowPT09eC5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxQPXguc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSxQKTp0aGlzLmxl''@;'; put 'put ''bmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZCh4KTp4LmNsb25lKCkuaWFkZCh0aGlzKX0sTi5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbih4KXtpZigwIT09eC5uZWdhdGl2ZSl7eC5uZWdhdGl2ZT0wO3ZhciBQPXRoaXMuaWFkZCh4KTtyZXR1cm4geC5uZWdhdGl2ZT0xLFAuX25vcm1T''@;'; put 'put ''aWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoeCksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIFYsVCxTPXRoaXMuY21wKHgpO2lmKDA9PT1TKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0''@;'; put 'put ''aGlzLndvcmRzWzBdPTAsdGhpcztTPjA/KFY9dGhpcyxUPXgpOihWPXgsVD10aGlzKTtmb3IodmFyIEY9MCx5ZT0wO3llPFQubGVuZ3RoO3llKyspRj0oUD0oMHxWLndvcmRzW3llXSktKDB8VC53b3Jkc1t5ZV0pK0YpPj4yNix0aGlzLndvcmRzW3llXT02NzEwODg2MyZQO2Zvcig7MCE9PUYm''@;'; put 'put ''JnllPFYubGVuZ3RoO3llKyspRj0oUD0oMHxWLndvcmRzW3llXSkrRik+PjI2LHRoaXMud29yZHNbeWVdPTY3MTA4ODYzJlA7aWYoMD09PUYmJnllPFYubGVuZ3RoJiZWIT09dGhpcylmb3IoO3llPFYubGVuZ3RoO3llKyspdGhpcy53b3Jkc1t5ZV09Vi53b3Jkc1t5ZV07cmV0dXJuIHRoaXMu''@;'; put 'put ''bGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLHllKSxWIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKHgpfTt2YXIgQWU9ZnVuY3Rpb24oeCxQLFYpe3ZhciBULFMsRix5''@;'; put 'put ''ZT14LndvcmRzLENlPVAud29yZHMsRGU9Vi53b3JkcyxQZT0wLFFlPTB8eWVbMF0sJGU9ODE5MSZRZSxndD1RZT4+PjEzLHd0PTB8eWVbMV0sbXQ9ODE5MSZ3dCx2dD13dD4+PjEzLEF0PTB8eWVbMl0saHQ9ODE5MSZBdCxCdD1BdD4+PjEzLG9uPTB8eWVbM10sX3Q9ODE5MSZvbix0dD1vbj4+''@;'; put 'put ''PjEzLGV0PTB8eWVbNF0sbHQ9ODE5MSZldCxMdD1ldD4+PjEzLEN0PTB8eWVbNV0sZnQ9ODE5MSZDdCxIdD1DdD4+PjEzLEdlPTB8eWVbNl0sVWU9ODE5MSZHZSx5dD1HZT4+PjEzLGp0PTB8eWVbN10sSnQ9ODE5MSZqdCxnbj1qdD4+PjEzLGRuPTB8eWVbOF0seW49ODE5MSZkbixsbj1kbj4+''@;'; put 'put ''PjEzLE5uPTB8eWVbOV0sYm49ODE5MSZObixlcj1Obj4+PjEzLHNyPTB8Q2VbMF0sWG49ODE5MSZzcixGcj1zcj4+PjEzLHhyPTB8Q2VbMV0scXQ9ODE5MSZ4cixwcj14cj4+PjEzLG5yPTB8Q2VbMl0sQW49ODE5MSZucixxbj1ucj4+PjEzLFd0PTB8Q2VbM10scG49ODE5MSZXdCxLbj1XdD4+''@;'; put 'put ''PjEzLE50PTB8Q2VbNF0sc249ODE5MSZOdCxVbj1OdD4+PjEzLHduPTB8Q2VbNV0sdG49ODE5MSZ3bix6bj13bj4+PjEzLFRyPTB8Q2VbNl0sQm49ODE5MSZUcixrcj1Ucj4+PjEzLG1uPTB8Q2VbN10sdW49ODE5MSZtbixjbj1tbj4+PjEzLF9uPTB8Q2VbOF0sR3Q9ODE5MSZfbixrbj1fbj4+''@;'; put 'put ''PjEzLFZuPTB8Q2VbOV0sZW49ODE5MSZWbixJbj1Wbj4+PjEzO1YubmVnYXRpdmU9eC5uZWdhdGl2ZV5QLm5lZ2F0aXZlLFYubGVuZ3RoPTE5O3ZhciBKbj0oUGUrKFQ9TWF0aC5pbXVsKCRlLFhuKSl8MCkrKCg4MTkxJihTPShTPU1hdGguaW11bCgkZSxGcikpK01hdGguaW11bChndCxYbil8''@;'; put 'put ''MCkpPDwxMyl8MDtQZT0oKEY9TWF0aC5pbXVsKGd0LEZyKSkrKFM+Pj4xMyl8MCkrKEpuPj4+MjYpfDAsSm4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKG10LFhuKSxTPShTPU1hdGguaW11bChtdCxGcikpK01hdGguaW11bCh2dCxYbil8MCxGPU1hdGguaW11bCh2dCxGcik7dmFyIG9yPShQZSso''@;'; put 'put ''VD1UK01hdGguaW11bCgkZSxxdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLHByKXwwKStNYXRoLmltdWwoZ3QscXQpfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LHByKXwwKSsoUz4+PjEzKXwwKSsob3I+Pj4yNil8MCxvciY9NjcxMDg4NjMsVD1NYXRoLmlt''@;'; put 'put ''dWwoaHQsWG4pLFM9KFM9TWF0aC5pbXVsKGh0LEZyKSkrTWF0aC5pbXVsKEJ0LFhuKXwwLEY9TWF0aC5pbXVsKEJ0LEZyKSxUPVQrTWF0aC5pbXVsKG10LHF0KXwwLFM9KFM9UytNYXRoLmltdWwobXQscHIpfDApK01hdGguaW11bCh2dCxxdCl8MCxGPUYrTWF0aC5pbXVsKHZ0LHByKXwwO3Zh''@;'; put 'put ''ciBncj0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsQW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxxbil8MCkrTWF0aC5pbXVsKGd0LEFuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxxbil8MCkrKFM+Pj4xMyl8MCkrKGdyPj4+MjYpfDAsZ3ImPTY3MTA4ODYz''@;'; put 'put ''LFQ9TWF0aC5pbXVsKF90LFhuKSxTPShTPU1hdGguaW11bChfdCxGcikpK01hdGguaW11bCh0dCxYbil8MCxGPU1hdGguaW11bCh0dCxGciksVD1UK01hdGguaW11bChodCxxdCl8MCxTPShTPVMrTWF0aC5pbXVsKGh0LHByKXwwKStNYXRoLmltdWwoQnQscXQpfDAsRj1GK01hdGguaW11bChC''@;'; put 'put ''dCxwcil8MCxUPVQrTWF0aC5pbXVsKG10LEFuKXwwLFM9KFM9UytNYXRoLmltdWwobXQscW4pfDApK01hdGguaW11bCh2dCxBbil8MCxGPUYrTWF0aC5pbXVsKHZ0LHFuKXwwO3ZhciBLcj0oUGUrKFQ9VCtNYXRoLmltdWwoJGUscG4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgk''@;'; put 'put ''ZSxLbil8MCkrTWF0aC5pbXVsKGd0LHBuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxLbil8MCkrKFM+Pj4xMyl8MCkrKEtyPj4+MjYpfDAsS3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGx0LFhuKSxTPShTPU1hdGguaW11bChsdCxGcikpK01hdGguaW11bChMdCxYbil8MCxG''@;'; put 'put ''PU1hdGguaW11bChMdCxGciksVD1UK01hdGguaW11bChfdCxxdCl8MCxTPShTPVMrTWF0aC5pbXVsKF90LHByKXwwKStNYXRoLmltdWwodHQscXQpfDAsRj1GK01hdGguaW11bCh0dCxwcil8MCxUPVQrTWF0aC5pbXVsKGh0LEFuKXwwLFM9KFM9UytNYXRoLmltdWwoaHQscW4pfDApK01hdGgu''@;'; put 'put ''aW11bChCdCxBbil8MCxGPUYrTWF0aC5pbXVsKEJ0LHFuKXwwLFQ9VCtNYXRoLmltdWwobXQscG4pfDAsUz0oUz1TK01hdGguaW11bChtdCxLbil8MCkrTWF0aC5pbXVsKHZ0LHBuKXwwLEY9RitNYXRoLmltdWwodnQsS24pfDA7dmFyIFZyPShQZSsoVD1UK01hdGguaW11bCgkZSxzbil8MCl8''@;'; put 'put ''MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLFVuKXwwKStNYXRoLmltdWwoZ3Qsc24pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LFVuKXwwKSsoUz4+PjEzKXwwKSsoVnI+Pj4yNil8MCxWciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoZnQsWG4pLFM9KFM9TWF0aC5pbXVs''@;'; put 'put ''KGZ0LEZyKSkrTWF0aC5pbXVsKEh0LFhuKXwwLEY9TWF0aC5pbXVsKEh0LEZyKSxUPVQrTWF0aC5pbXVsKGx0LHF0KXwwLFM9KFM9UytNYXRoLmltdWwobHQscHIpfDApK01hdGguaW11bChMdCxxdCl8MCxGPUYrTWF0aC5pbXVsKEx0LHByKXwwLFQ9VCtNYXRoLmltdWwoX3QsQW4pfDAsUz0o''@;'; put 'put ''Uz1TK01hdGguaW11bChfdCxxbil8MCkrTWF0aC5pbXVsKHR0LEFuKXwwLEY9RitNYXRoLmltdWwodHQscW4pfDAsVD1UK01hdGguaW11bChodCxwbil8MCxTPShTPVMrTWF0aC5pbXVsKGh0LEtuKXwwKStNYXRoLmltdWwoQnQscG4pfDAsRj1GK01hdGguaW11bChCdCxLbil8MCxUPVQrTWF0''@;'; put 'put ''aC5pbXVsKG10LHNuKXwwLFM9KFM9UytNYXRoLmltdWwobXQsVW4pfDApK01hdGguaW11bCh2dCxzbil8MCxGPUYrTWF0aC5pbXVsKHZ0LFVuKXwwO3ZhciBpaT0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsdG4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSx6bil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKGd0LHRuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCx6bil8MCkrKFM+Pj4xMyl8MCkrKGlpPj4+MjYpfDAsaWkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKFVlLFhuKSxTPShTPU1hdGguaW11bChVZSxGcikpK01hdGguaW11bCh5dCxYbil8MCxGPU1hdGguaW11bCh5dCxG''@;'; put 'put ''ciksVD1UK01hdGguaW11bChmdCxxdCl8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LHByKXwwKStNYXRoLmltdWwoSHQscXQpfDAsRj1GK01hdGguaW11bChIdCxwcil8MCxUPVQrTWF0aC5pbXVsKGx0LEFuKXwwLFM9KFM9UytNYXRoLmltdWwobHQscW4pfDApK01hdGguaW11bChMdCxBbil8MCxG''@;'; put 'put ''PUYrTWF0aC5pbXVsKEx0LHFuKXwwLFQ9VCtNYXRoLmltdWwoX3QscG4pfDAsUz0oUz1TK01hdGguaW11bChfdCxLbil8MCkrTWF0aC5pbXVsKHR0LHBuKXwwLEY9RitNYXRoLmltdWwodHQsS24pfDAsVD1UK01hdGguaW11bChodCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKGh0LFVuKXwwKStN''@;'; put 'put ''YXRoLmltdWwoQnQsc24pfDAsRj1GK01hdGguaW11bChCdCxVbil8MCxUPVQrTWF0aC5pbXVsKG10LHRuKXwwLFM9KFM9UytNYXRoLmltdWwobXQsem4pfDApK01hdGguaW11bCh2dCx0bil8MCxGPUYrTWF0aC5pbXVsKHZ0LHpuKXwwO3ZhciBScj0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsQm4p''@;'; put 'put ''fDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxrcil8MCkrTWF0aC5pbXVsKGd0LEJuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxrcil8MCkrKFM+Pj4xMyl8MCkrKFJyPj4+MjYpfDAsUnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKEp0LFhuKSxTPShTPU1hdGgu''@;'; put 'put ''aW11bChKdCxGcikpK01hdGguaW11bChnbixYbil8MCxGPU1hdGguaW11bChnbixGciksVD1UK01hdGguaW11bChVZSxxdCl8MCxTPShTPVMrTWF0aC5pbXVsKFVlLHByKXwwKStNYXRoLmltdWwoeXQscXQpfDAsRj1GK01hdGguaW11bCh5dCxwcil8MCxUPVQrTWF0aC5pbXVsKGZ0LEFuKXww''@;'; put 'put ''LFM9KFM9UytNYXRoLmltdWwoZnQscW4pfDApK01hdGguaW11bChIdCxBbil8MCxGPUYrTWF0aC5pbXVsKEh0LHFuKXwwLFQ9VCtNYXRoLmltdWwobHQscG4pfDAsUz0oUz1TK01hdGguaW11bChsdCxLbil8MCkrTWF0aC5pbXVsKEx0LHBuKXwwLEY9RitNYXRoLmltdWwoTHQsS24pfDAsVD1U''@;'; put 'put ''K01hdGguaW11bChfdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LFVuKXwwKStNYXRoLmltdWwodHQsc24pfDAsRj1GK01hdGguaW11bCh0dCxVbil8MCxUPVQrTWF0aC5pbXVsKGh0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwoaHQsem4pfDApK01hdGguaW11bChCdCx0bil8MCxGPUYrTWF0''@;'; put 'put ''aC5pbXVsKEJ0LHpuKXwwLFQ9VCtNYXRoLmltdWwobXQsQm4pfDAsUz0oUz1TK01hdGguaW11bChtdCxrcil8MCkrTWF0aC5pbXVsKHZ0LEJuKXwwLEY9RitNYXRoLmltdWwodnQsa3IpfDA7dmFyIGxpPShQZSsoVD1UK01hdGguaW11bCgkZSx1bil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0''@;'; put 'put ''aC5pbXVsKCRlLGNuKXwwKStNYXRoLmltdWwoZ3QsdW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LGNuKXwwKSsoUz4+PjEzKXwwKSsobGk+Pj4yNil8MCxsaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoeW4sWG4pLFM9KFM9TWF0aC5pbXVsKHluLEZyKSkrTWF0aC5pbXVsKGxu''@;'; put 'put ''LFhuKXwwLEY9TWF0aC5pbXVsKGxuLEZyKSxUPVQrTWF0aC5pbXVsKEp0LHF0KXwwLFM9KFM9UytNYXRoLmltdWwoSnQscHIpfDApK01hdGguaW11bChnbixxdCl8MCxGPUYrTWF0aC5pbXVsKGduLHByKXwwLFQ9VCtNYXRoLmltdWwoVWUsQW4pfDAsUz0oUz1TK01hdGguaW11bChVZSxxbil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKHl0LEFuKXwwLEY9RitNYXRoLmltdWwoeXQscW4pfDAsVD1UK01hdGguaW11bChmdCxwbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LEtuKXwwKStNYXRoLmltdWwoSHQscG4pfDAsRj1GK01hdGguaW11bChIdCxLbil8MCxUPVQrTWF0aC5pbXVsKGx0LHNuKXwwLFM9KFM9''@;'; put 'put ''UytNYXRoLmltdWwobHQsVW4pfDApK01hdGguaW11bChMdCxzbil8MCxGPUYrTWF0aC5pbXVsKEx0LFVuKXwwLFQ9VCtNYXRoLmltdWwoX3QsdG4pfDAsUz0oUz1TK01hdGguaW11bChfdCx6bil8MCkrTWF0aC5pbXVsKHR0LHRuKXwwLEY9RitNYXRoLmltdWwodHQsem4pfDAsVD1UK01hdGgu''@;'; put 'put ''aW11bChodCxCbil8MCxTPShTPVMrTWF0aC5pbXVsKGh0LGtyKXwwKStNYXRoLmltdWwoQnQsQm4pfDAsRj1GK01hdGguaW11bChCdCxrcil8MCxUPVQrTWF0aC5pbXVsKG10LHVuKXwwLFM9KFM9UytNYXRoLmltdWwobXQsY24pfDApK01hdGguaW11bCh2dCx1bil8MCxGPUYrTWF0aC5pbXVs''@;'; put 'put ''KHZ0LGNuKXwwO3ZhciBNaT0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsR3QpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxrbil8MCkrTWF0aC5pbXVsKGd0LEd0KXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxrbil8MCkrKFM+Pj4xMyl8MCkrKE1pPj4+MjYpfDAs''@;'; put 'put ''TWkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGJuLFhuKSxTPShTPU1hdGguaW11bChibixGcikpK01hdGguaW11bChlcixYbil8MCxGPU1hdGguaW11bChlcixGciksVD1UK01hdGguaW11bCh5bixxdCl8MCxTPShTPVMrTWF0aC5pbXVsKHluLHByKXwwKStNYXRoLmltdWwobG4scXQpfDAsRj1G''@;'; put 'put ''K01hdGguaW11bChsbixwcil8MCxUPVQrTWF0aC5pbXVsKEp0LEFuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQscW4pfDApK01hdGguaW11bChnbixBbil8MCxGPUYrTWF0aC5pbXVsKGduLHFuKXwwLFQ9VCtNYXRoLmltdWwoVWUscG4pfDAsUz0oUz1TK01hdGguaW11bChVZSxLbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKHl0LHBuKXwwLEY9RitNYXRoLmltdWwoeXQsS24pfDAsVD1UK01hdGguaW11bChmdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LFVuKXwwKStNYXRoLmltdWwoSHQsc24pfDAsRj1GK01hdGguaW11bChIdCxVbil8MCxUPVQrTWF0aC5pbXVsKGx0LHRuKXwwLFM9KFM9UytNYXRo''@;'; put 'put ''LmltdWwobHQsem4pfDApK01hdGguaW11bChMdCx0bil8MCxGPUYrTWF0aC5pbXVsKEx0LHpuKXwwLFQ9VCtNYXRoLmltdWwoX3QsQm4pfDAsUz0oUz1TK01hdGguaW11bChfdCxrcil8MCkrTWF0aC5pbXVsKHR0LEJuKXwwLEY9RitNYXRoLmltdWwodHQsa3IpfDAsVD1UK01hdGguaW11bCho''@;'; put 'put ''dCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKGh0LGNuKXwwKStNYXRoLmltdWwoQnQsdW4pfDAsRj1GK01hdGguaW11bChCdCxjbil8MCxUPVQrTWF0aC5pbXVsKG10LEd0KXwwLFM9KFM9UytNYXRoLmltdWwobXQsa24pfDApK01hdGguaW11bCh2dCxHdCl8MCxGPUYrTWF0aC5pbXVsKHZ0LGtu''@;'; put 'put ''KXwwO3ZhciBvMD0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsZW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxJbil8MCkrTWF0aC5pbXVsKGd0LGVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxJbil8MCkrKFM+Pj4xMyl8MCkrKG8wPj4+MjYpfDAsbzAmPTY3''@;'; put 'put ''MTA4ODYzLFQ9TWF0aC5pbXVsKGJuLHF0KSxTPShTPU1hdGguaW11bChibixwcikpK01hdGguaW11bChlcixxdCl8MCxGPU1hdGguaW11bChlcixwciksVD1UK01hdGguaW11bCh5bixBbil8MCxTPShTPVMrTWF0aC5pbXVsKHluLHFuKXwwKStNYXRoLmltdWwobG4sQW4pfDAsRj1GK01hdGgu''@;'; put 'put ''aW11bChsbixxbil8MCxUPVQrTWF0aC5pbXVsKEp0LHBuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsS24pfDApK01hdGguaW11bChnbixwbil8MCxGPUYrTWF0aC5pbXVsKGduLEtuKXwwLFQ9VCtNYXRoLmltdWwoVWUsc24pfDAsUz0oUz1TK01hdGguaW11bChVZSxVbil8MCkrTWF0aC5pbXVs''@;'; put 'put ''KHl0LHNuKXwwLEY9RitNYXRoLmltdWwoeXQsVW4pfDAsVD1UK01hdGguaW11bChmdCx0bil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LHpuKXwwKStNYXRoLmltdWwoSHQsdG4pfDAsRj1GK01hdGguaW11bChIdCx6bil8MCxUPVQrTWF0aC5pbXVsKGx0LEJuKXwwLFM9KFM9UytNYXRoLmltdWwo''@;'; put 'put ''bHQsa3IpfDApK01hdGguaW11bChMdCxCbil8MCxGPUYrTWF0aC5pbXVsKEx0LGtyKXwwLFQ9VCtNYXRoLmltdWwoX3QsdW4pfDAsUz0oUz1TK01hdGguaW11bChfdCxjbil8MCkrTWF0aC5pbXVsKHR0LHVuKXwwLEY9RitNYXRoLmltdWwodHQsY24pfDAsVD1UK01hdGguaW11bChodCxHdCl8''@;'; put 'put ''MCxTPShTPVMrTWF0aC5pbXVsKGh0LGtuKXwwKStNYXRoLmltdWwoQnQsR3QpfDAsRj1GK01hdGguaW11bChCdCxrbil8MDt2YXIgbjA9KFBlKyhUPVQrTWF0aC5pbXVsKG10LGVuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwobXQsSW4pfDApK01hdGguaW11bCh2dCxlbil8MCkp''@;'; put 'put ''PDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwodnQsSW4pfDApKyhTPj4+MTMpfDApKyhuMD4+PjI2KXwwLG4wJj02NzEwODg2MyxUPU1hdGguaW11bChibixBbiksUz0oUz1NYXRoLmltdWwoYm4scW4pKStNYXRoLmltdWwoZXIsQW4pfDAsRj1NYXRoLmltdWwoZXIscW4pLFQ9VCtNYXRoLmlt''@;'; put 'put ''dWwoeW4scG4pfDAsUz0oUz1TK01hdGguaW11bCh5bixLbil8MCkrTWF0aC5pbXVsKGxuLHBuKXwwLEY9RitNYXRoLmltdWwobG4sS24pfDAsVD1UK01hdGguaW11bChKdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKEp0LFVuKXwwKStNYXRoLmltdWwoZ24sc24pfDAsRj1GK01hdGguaW11bChn''@;'; put 'put ''bixVbil8MCxUPVQrTWF0aC5pbXVsKFVlLHRuKXwwLFM9KFM9UytNYXRoLmltdWwoVWUsem4pfDApK01hdGguaW11bCh5dCx0bil8MCxGPUYrTWF0aC5pbXVsKHl0LHpuKXwwLFQ9VCtNYXRoLmltdWwoZnQsQm4pfDAsUz0oUz1TK01hdGguaW11bChmdCxrcil8MCkrTWF0aC5pbXVsKEh0LEJu''@;'; put 'put ''KXwwLEY9RitNYXRoLmltdWwoSHQsa3IpfDAsVD1UK01hdGguaW11bChsdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKGx0LGNuKXwwKStNYXRoLmltdWwoTHQsdW4pfDAsRj1GK01hdGguaW11bChMdCxjbil8MCxUPVQrTWF0aC5pbXVsKF90LEd0KXwwLFM9KFM9UytNYXRoLmltdWwoX3Qsa24p''@;'; put 'put ''fDApK01hdGguaW11bCh0dCxHdCl8MCxGPUYrTWF0aC5pbXVsKHR0LGtuKXwwO3ZhciBkMD0oUGUrKFQ9VCtNYXRoLmltdWwoaHQsZW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChodCxJbil8MCkrTWF0aC5pbXVsKEJ0LGVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11''@;'; put 'put ''bChCdCxJbil8MCkrKFM+Pj4xMyl8MCkrKGQwPj4+MjYpfDAsZDAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGJuLHBuKSxTPShTPU1hdGguaW11bChibixLbikpK01hdGguaW11bChlcixwbil8MCxGPU1hdGguaW11bChlcixLbiksVD1UK01hdGguaW11bCh5bixzbil8MCxTPShTPVMrTWF0aC5p''@;'; put 'put ''bXVsKHluLFVuKXwwKStNYXRoLmltdWwobG4sc24pfDAsRj1GK01hdGguaW11bChsbixVbil8MCxUPVQrTWF0aC5pbXVsKEp0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsem4pfDApK01hdGguaW11bChnbix0bil8MCxGPUYrTWF0aC5pbXVsKGduLHpuKXwwLFQ9VCtNYXRoLmltdWwoVWUs''@;'; put 'put ''Qm4pfDAsUz0oUz1TK01hdGguaW11bChVZSxrcil8MCkrTWF0aC5pbXVsKHl0LEJuKXwwLEY9RitNYXRoLmltdWwoeXQsa3IpfDAsVD1UK01hdGguaW11bChmdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LGNuKXwwKStNYXRoLmltdWwoSHQsdW4pfDAsRj1GK01hdGguaW11bChIdCxjbil8''@;'; put 'put ''MCxUPVQrTWF0aC5pbXVsKGx0LEd0KXwwLFM9KFM9UytNYXRoLmltdWwobHQsa24pfDApK01hdGguaW11bChMdCxHdCl8MCxGPUYrTWF0aC5pbXVsKEx0LGtuKXwwO3ZhciBtMD0oUGUrKFQ9VCtNYXRoLmltdWwoX3QsZW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChfdCxJbil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKHR0LGVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bCh0dCxJbil8MCkrKFM+Pj4xMyl8MCkrKG0wPj4+MjYpfDAsbTAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGJuLHNuKSxTPShTPU1hdGguaW11bChibixVbikpK01hdGguaW11bChlcixzbil8MCxGPU1hdGgu''@;'; put 'put ''aW11bChlcixVbiksVD1UK01hdGguaW11bCh5bix0bil8MCxTPShTPVMrTWF0aC5pbXVsKHluLHpuKXwwKStNYXRoLmltdWwobG4sdG4pfDAsRj1GK01hdGguaW11bChsbix6bil8MCxUPVQrTWF0aC5pbXVsKEp0LEJuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsa3IpfDApK01hdGguaW11bChn''@;'; put 'put ''bixCbil8MCxGPUYrTWF0aC5pbXVsKGduLGtyKXwwLFQ9VCtNYXRoLmltdWwoVWUsdW4pfDAsUz0oUz1TK01hdGguaW11bChVZSxjbil8MCkrTWF0aC5pbXVsKHl0LHVuKXwwLEY9RitNYXRoLmltdWwoeXQsY24pfDAsVD1UK01hdGguaW11bChmdCxHdCl8MCxTPShTPVMrTWF0aC5pbXVsKGZ0''@;'; put 'put ''LGtuKXwwKStNYXRoLmltdWwoSHQsR3QpfDAsRj1GK01hdGguaW11bChIdCxrbil8MDt2YXIgRzA9KFBlKyhUPVQrTWF0aC5pbXVsKGx0LGVuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwobHQsSW4pfDApK01hdGguaW11bChMdCxlbil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRo''@;'; put 'put ''LmltdWwoTHQsSW4pfDApKyhTPj4+MTMpfDApKyhHMD4+PjI2KXwwLEcwJj02NzEwODg2MyxUPU1hdGguaW11bChibix0biksUz0oUz1NYXRoLmltdWwoYm4sem4pKStNYXRoLmltdWwoZXIsdG4pfDAsRj1NYXRoLmltdWwoZXIsem4pLFQ9VCtNYXRoLmltdWwoeW4sQm4pfDAsUz0oUz1TK01h''@;'; put 'put ''dGguaW11bCh5bixrcil8MCkrTWF0aC5pbXVsKGxuLEJuKXwwLEY9RitNYXRoLmltdWwobG4sa3IpfDAsVD1UK01hdGguaW11bChKdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKEp0LGNuKXwwKStNYXRoLmltdWwoZ24sdW4pfDAsRj1GK01hdGguaW11bChnbixjbil8MCxUPVQrTWF0aC5pbXVs''@;'; put 'put ''KFVlLEd0KXwwLFM9KFM9UytNYXRoLmltdWwoVWUsa24pfDApK01hdGguaW11bCh5dCxHdCl8MCxGPUYrTWF0aC5pbXVsKHl0LGtuKXwwO3ZhciBEaT0oUGUrKFQ9VCtNYXRoLmltdWwoZnQsZW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChmdCxJbil8MCkrTWF0aC5pbXVsKEh0''@;'; put 'put ''LGVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChIdCxJbil8MCkrKFM+Pj4xMyl8MCkrKERpPj4+MjYpfDAsRGkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGJuLEJuKSxTPShTPU1hdGguaW11bChibixrcikpK01hdGguaW11bChlcixCbil8MCxGPU1hdGguaW11bChlcixrciksVD1U''@;'; put 'put ''K01hdGguaW11bCh5bix1bil8MCxTPShTPVMrTWF0aC5pbXVsKHluLGNuKXwwKStNYXRoLmltdWwobG4sdW4pfDAsRj1GK01hdGguaW11bChsbixjbil8MCxUPVQrTWF0aC5pbXVsKEp0LEd0KXwwLFM9KFM9UytNYXRoLmltdWwoSnQsa24pfDApK01hdGguaW11bChnbixHdCl8MCxGPUYrTWF0''@;'; put 'put ''aC5pbXVsKGduLGtuKXwwO3ZhciBXMD0oUGUrKFQ9VCtNYXRoLmltdWwoVWUsZW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChVZSxJbil8MCkrTWF0aC5pbXVsKHl0LGVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bCh5dCxJbil8MCkrKFM+Pj4xMyl8MCkrKFcwPj4+''@;'; put 'put ''MjYpfDAsVzAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGJuLHVuKSxTPShTPU1hdGguaW11bChibixjbikpK01hdGguaW11bChlcix1bil8MCxGPU1hdGguaW11bChlcixjbiksVD1UK01hdGguaW11bCh5bixHdCl8MCxTPShTPVMrTWF0aC5pbXVsKHluLGtuKXwwKStNYXRoLmltdWwobG4sR3Qp''@;'; put 'put ''fDAsRj1GK01hdGguaW11bChsbixrbil8MDt2YXIgRW89KFBlKyhUPVQrTWF0aC5pbXVsKEp0LGVuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoSnQsSW4pfDApK01hdGguaW11bChnbixlbil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ24sSW4pfDApKyhTPj4+MTMp''@;'; put 'put ''fDApKyhFbz4+PjI2KXwwLEVvJj02NzEwODg2MyxUPU1hdGguaW11bChibixHdCksUz0oUz1NYXRoLmltdWwoYm4sa24pKStNYXRoLmltdWwoZXIsR3QpfDAsRj1NYXRoLmltdWwoZXIsa24pO3ZhciBxbz0oUGUrKFQ9VCtNYXRoLmltdWwoeW4sZW4pfDApfDApKygoODE5MSYoUz0oUz1TK01h''@;'; put 'put ''dGguaW11bCh5bixJbil8MCkrTWF0aC5pbXVsKGxuLGVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChsbixJbil8MCkrKFM+Pj4xMyl8MCkrKHFvPj4+MjYpfDAscW8mPTY3MTA4ODYzO3ZhciBjYT0oUGUrKFQ9TWF0aC5pbXVsKGJuLGVuKSl8MCkrKCg4MTkxJihTPShTPU1hdGgu''@;'; put 'put ''aW11bChibixJbikpK01hdGguaW11bChlcixlbil8MCkpPDwxMyl8MDtyZXR1cm4gUGU9KChGPU1hdGguaW11bChlcixJbikpKyhTPj4+MTMpfDApKyhjYT4+PjI2KXwwLGNhJj02NzEwODg2MyxEZVswXT1KbixEZVsxXT1vcixEZVsyXT1ncixEZVszXT1LcixEZVs0XT1WcixEZVs1XT1paSxE''@;'; put 'put ''ZVs2XT1ScixEZVs3XT1saSxEZVs4XT1NaSxEZVs5XT1vMCxEZVsxMF09bjAsRGVbMTFdPWQwLERlWzEyXT1tMCxEZVsxM109RzAsRGVbMTRdPURpLERlWzE1XT1XMCxEZVsxNl09RW8sRGVbMTddPXFvLERlWzE4XT1jYSwwIT09UGUmJihEZVsxOV09UGUsVi5sZW5ndGgrKyksVn07ZnVuY3Rp''@;'; put 'put ''b24ga2UoeCxQLFYpe3JldHVybihuZXcgU2UpLm11bHAoeCxQLFYpfWZ1bmN0aW9uIFNlKHgsUCl7dGhpcy54PXgsdGhpcy55PVB9TWF0aC5pbXVsfHwoQWU9dmUpLE4ucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKHgsUCl7dmFyIFQ9dGhpcy5sZW5ndGgreC5sZW5ndGg7cmV0dXJuIDEwPT09''@;'; put 'put ''dGhpcy5sZW5ndGgmJjEwPT09eC5sZW5ndGg/QWUodGhpcyx4LFApOlQ8NjM/dmUodGhpcyx4LFApOlQ8MTAyND9mdW5jdGlvbihTLEYseWUpe3llLm5lZ2F0aXZlPUYubmVnYXRpdmVeUy5uZWdhdGl2ZSx5ZS5sZW5ndGg9Uy5sZW5ndGgrRi5sZW5ndGg7Zm9yKHZhciBDZT0wLERlPTAsUGU9''@;'; put 'put ''MDtQZTx5ZS5sZW5ndGgtMTtQZSsrKXt2YXIgUWU9RGU7RGU9MDtmb3IodmFyICRlPTY3MTA4ODYzJkNlLGd0PU1hdGgubWluKFBlLEYubGVuZ3RoLTEpLHd0PU1hdGgubWF4KDAsUGUtUy5sZW5ndGgrMSk7d3Q8PWd0O3d0Kyspe3ZhciB2dD0oMHxTLndvcmRzW1BlLXd0XSkqKDB8Ri53b3Jk''@;'; put 'put ''c1t3dF0pLEF0PTY3MTA4ODYzJnZ0OyRlPTY3MTA4ODYzJihBdD1BdCskZXwwKSxEZSs9KFFlPShRZT1RZSsodnQvNjcxMDg4NjR8MCl8MCkrKEF0Pj4+MjYpfDApPj4+MjYsUWUmPTY3MTA4ODYzfXllLndvcmRzW1BlXT0kZSxDZT1RZSxRZT1EZX1yZXR1cm4gMCE9PUNlP3llLndvcmRzW1Bl''@;'; put 'put ''XT1DZTp5ZS5sZW5ndGgtLSx5ZS5zdHJpcCgpfSh0aGlzLHgsUCk6a2UodGhpcyx4LFApfSxTZS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbih4KXtmb3IodmFyIFA9bmV3IEFycmF5KHgpLFY9Ti5wcm90b3R5cGUuX2NvdW50Qml0cyh4KS0xLFQ9MDtUPHg7VCsrKVBbVF09dGhpcy5yZXZC''@;'; put 'put ''aW4oVCxWLHgpO3JldHVybiBQfSxTZS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKHgsUCxWKXtpZigwPT09eHx8eD09PVYtMSlyZXR1cm4geDtmb3IodmFyIFQ9MCxTPTA7UzxQO1MrKylUfD0oMSZ4KTw8UC1TLTEseD4+PTE7cmV0dXJuIFR9LFNlLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0''@;'; put 'put ''aW9uKHgsUCxWLFQsUyxGKXtmb3IodmFyIHllPTA7eWU8Rjt5ZSsrKVRbeWVdPVBbeFt5ZV1dLFNbeWVdPVZbeFt5ZV1dfSxTZS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKHgsUCxWLFQsUyxGKXt0aGlzLnBlcm11dGUoRix4LFAsVixULFMpO2Zvcih2YXIgeWU9MTt5ZTxTO3llPDw9''@;'; put 'put ''MSlmb3IodmFyIENlPXllPDwxLERlPU1hdGguY29zKDIqTWF0aC5QSS9DZSksUGU9TWF0aC5zaW4oMipNYXRoLlBJL0NlKSxRZT0wO1FlPFM7UWUrPUNlKWZvcih2YXIgJGU9RGUsZ3Q9UGUsd3Q9MDt3dDx5ZTt3dCsrKXt2YXIgbXQ9VltRZSt3dF0sdnQ9VFtRZSt3dF0sQXQ9VltRZSt3dCt5''@;'; put 'put ''ZV0saHQ9VFtRZSt3dCt5ZV0sQnQ9JGUqQXQtZ3QqaHQ7aHQ9JGUqaHQrZ3QqQXQsVltRZSt3dF09bXQrKEF0PUJ0KSxUW1FlK3d0XT12dCtodCxWW1FlK3d0K3llXT1tdC1BdCxUW1FlK3d0K3llXT12dC1odCx3dCE9PUNlJiYoQnQ9RGUqJGUtUGUqZ3QsZ3Q9RGUqZ3QrUGUqJGUsJGU9QnQp''@;'; put 'put ''fX0sU2UucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKHgsUCl7dmFyIFY9MXxNYXRoLm1heChQLHgpLFQ9MSZWLFM9MDtmb3IoVj1WLzJ8MDtWO1Y+Pj49MSlTKys7cmV0dXJuIDE8PFMrMStUfSxTZS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKHgsUCxWKXtpZighKFY8PTEp''@;'; put 'put ''KWZvcih2YXIgVD0wO1Q8Vi8yO1QrKyl7dmFyIFM9eFtUXTt4W1RdPXhbVi1ULTFdLHhbVi1ULTFdPVMsUz1QW1RdLFBbVF09LVBbVi1ULTFdLFBbVi1ULTFdPS1TfX0sU2UucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbih4LFApe2Zvcih2YXIgVj0wLFQ9MDtUPFAvMjtUKyspe3Zh''@;'; put 'put ''ciBTPTgxOTIqTWF0aC5yb3VuZCh4WzIqVCsxXS9QKStNYXRoLnJvdW5kKHhbMipUXS9QKStWO3hbVF09NjcxMDg4NjMmUyxWPVM8NjcxMDg4NjQ/MDpTLzY3MTA4ODY0fDB9cmV0dXJuIHh9LFNlLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKHgsUCxWLFQpe2Zvcih2YXIgUz0wLEY9''@;'; put 'put ''MDtGPFA7RisrKVZbMipGXT04MTkxJihTKz0wfHhbRl0pLFZbMipGKzFdPTgxOTEmKFM+Pj49MTMpLFM+Pj49MTM7Zm9yKEY9MipQO0Y8VDsrK0YpVltGXT0wO1koMD09PVMpLFkoMD09KC04MTkyJlMpKX0sU2UucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oeCl7Zm9yKHZhciBQPW5ldyBBcnJh''@;'; put 'put ''eSh4KSxWPTA7Vjx4O1YrKylQW1ZdPTA7cmV0dXJuIFB9LFNlLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVD0yKnRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsUC5sZW5ndGgpLFM9dGhpcy5tYWtlUkJUKFQpLEY9dGhpcy5zdHViKFQpLHllPW5ldyBBcnJheShUKSxDZT1u''@;'; put 'put ''ZXcgQXJyYXkoVCksRGU9bmV3IEFycmF5KFQpLFBlPW5ldyBBcnJheShUKSxRZT1uZXcgQXJyYXkoVCksJGU9bmV3IEFycmF5KFQpLGd0PVYud29yZHM7Z3QubGVuZ3RoPVQsdGhpcy5jb252ZXJ0MTNiKHgud29yZHMseC5sZW5ndGgseWUsVCksdGhpcy5jb252ZXJ0MTNiKFAud29yZHMsUC5s''@;'; put 'put ''ZW5ndGgsUGUsVCksdGhpcy50cmFuc2Zvcm0oeWUsRixDZSxEZSxULFMpLHRoaXMudHJhbnNmb3JtKFBlLEYsUWUsJGUsVCxTKTtmb3IodmFyIHd0PTA7d3Q8VDt3dCsrKXt2YXIgbXQ9Q2Vbd3RdKlFlW3d0XS1EZVt3dF0qJGVbd3RdO0RlW3d0XT1DZVt3dF0qJGVbd3RdK0RlW3d0XSpRZVt3''@;'; put 'put ''dF0sQ2Vbd3RdPW10fXJldHVybiB0aGlzLmNvbmp1Z2F0ZShDZSxEZSxUKSx0aGlzLnRyYW5zZm9ybShDZSxEZSxndCxGLFQsUyksdGhpcy5jb25qdWdhdGUoZ3QsRixUKSx0aGlzLm5vcm1hbGl6ZTEzYihndCxUKSxWLm5lZ2F0aXZlPXgubmVnYXRpdmVeUC5uZWdhdGl2ZSxWLmxlbmd0aD14''@;'; put 'put ''Lmxlbmd0aCtQLmxlbmd0aCxWLnN0cmlwKCl9LE4ucHJvdG90eXBlLm11bD1mdW5jdGlvbih4KXt2YXIgUD1uZXcgTihudWxsKTtyZXR1cm4gUC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgreC5sZW5ndGgpLHRoaXMubXVsVG8oeCxQKX0sTi5wcm90b3R5cGUubXVsZj1mdW5jdGlvbih4''@;'; put 'put ''KXt2YXIgUD1uZXcgTihudWxsKTtyZXR1cm4gUC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgreC5sZW5ndGgpLGtlKHRoaXMseCxQKX0sTi5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKHgsdGhpcyl9LE4ucHJvdG90eXBlLmltdWxuPWZ1''@;'; put 'put ''bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4KSxZKHg8NjcxMDg4NjQpO2Zvcih2YXIgUD0wLFY9MDtWPHRoaXMubGVuZ3RoO1YrKyl7dmFyIFQ9KDB8dGhpcy53b3Jkc1tWXSkqeCxTPSg2NzEwODg2MyZUKSsoNjcxMDg4NjMmUCk7UD4+PTI2LFArPVQvNjcxMDg4NjR8MCxQKz1TPj4+''@;'; put 'put ''MjYsdGhpcy53b3Jkc1tWXT02NzEwODg2MyZTfXJldHVybiAwIT09UCYmKHRoaXMud29yZHNbVl09UCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxOLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oeCl9LE4ucHJvdG90eXBlLnNxcj1mdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiB0aGlzLm11bCh0aGlzKX0sTi5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sTi5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHgpe3ZhciBQPWZ1bmN0aW9uKEYpe2Zvcih2YXIgeWU9bmV3IEFycmF5KEYuYml0TGVuZ3RoKCkp''@;'; put 'put ''LENlPTA7Q2U8eWUubGVuZ3RoO0NlKyspe3ZhciBQZT1DZSUyNjt5ZVtDZV09KEYud29yZHNbQ2UvMjZ8MF0mMTw8UGUpPj4+UGV9cmV0dXJuIHllfSh4KTtpZigwPT09UC5sZW5ndGgpcmV0dXJuIG5ldyBOKDEpO2Zvcih2YXIgVj10aGlzLFQ9MDtUPFAubGVuZ3RoJiYwPT09UFtUXTtUKyss''@;'; put 'put ''Vj1WLnNxcigpKTtpZigrK1Q8UC5sZW5ndGgpZm9yKHZhciBTPVYuc3FyKCk7VDxQLmxlbmd0aDtUKyssUz1TLnNxcigpKTAhPT1QW1RdJiYoVj1WLm11bChTKSk7cmV0dXJuIFZ9LE4ucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbih4KXtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCk7dmFy''@;'; put 'put ''IFAsVj14JTI2LFQ9KHgtVikvMjYsUz02NzEwODg2Mz4+PjI2LVY8PDI2LVY7aWYoMCE9PVYpe3ZhciBGPTA7Zm9yKFA9MDtQPHRoaXMubGVuZ3RoO1ArKyl7dmFyIHllPXRoaXMud29yZHNbUF0mUzt0aGlzLndvcmRzW1BdPSgwfHRoaXMud29yZHNbUF0pLXllPDxWfEYsRj15ZT4+PjI2LVZ9''@;'; put 'put ''RiYmKHRoaXMud29yZHNbUF09Rix0aGlzLmxlbmd0aCsrKX1pZigwIT09VCl7Zm9yKFA9dGhpcy5sZW5ndGgtMTtQPj0wO1AtLSl0aGlzLndvcmRzW1ArVF09dGhpcy53b3Jkc1tQXTtmb3IoUD0wO1A8VDtQKyspdGhpcy53b3Jkc1tQXT0wO3RoaXMubGVuZ3RoKz1UfXJldHVybiB0aGlzLnN0''@;'; put 'put ''cmlwKCl9LE4ucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKHgpe3JldHVybiBZKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbih4KX0sTi5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVDtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCksVD1QPyhQLVAlMjYpLzI2''@;'; put 'put ''OjA7dmFyIFM9eCUyNixGPU1hdGgubWluKCh4LVMpLzI2LHRoaXMubGVuZ3RoKSx5ZT02NzEwODg2M142NzEwODg2Mz4+PlM8PFMsQ2U9VjtpZihULT1GLFQ9TWF0aC5tYXgoMCxUKSxDZSl7Zm9yKHZhciBEZT0wO0RlPEY7RGUrKylDZS53b3Jkc1tEZV09dGhpcy53b3Jkc1tEZV07Q2UubGVu''@;'; put 'put ''Z3RoPUZ9aWYoMCE9PUYpaWYodGhpcy5sZW5ndGg+Rilmb3IodGhpcy5sZW5ndGgtPUYsRGU9MDtEZTx0aGlzLmxlbmd0aDtEZSsrKXRoaXMud29yZHNbRGVdPXRoaXMud29yZHNbRGUrRl07ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIgUGU9MDtmb3IoRGU9dGhpcy5s''@;'; put 'put ''ZW5ndGgtMTtEZT49MCYmKDAhPT1QZXx8RGU+PVQpO0RlLS0pe3ZhciBRZT0wfHRoaXMud29yZHNbRGVdO3RoaXMud29yZHNbRGVdPVBlPDwyNi1TfFFlPj4+UyxQZT1RZSZ5ZX1yZXR1cm4gQ2UmJjAhPT1QZSYmKENlLndvcmRzW0NlLmxlbmd0aCsrXT1QZSksMD09PXRoaXMubGVuZ3RoJiYo''@;'; put 'put ''dGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oeCxQLFYpe3JldHVybiBZKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybih4LFAsVil9LE4ucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuY2xvbmUoKS5pc2hsbih4KX0sTi5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oeCl9LE4ucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybih4KX0sTi5wcm90b3R5cGUudXNocm49ZnVuY3Rp''@;'; put 'put ''b24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oeCl9LE4ucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgUD14JTI2LFY9KHgtUCkvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9Vnx8ISh0aGlzLndvcmRzW1ZdJjE8PFApKX0s''@;'; put 'put ''Ti5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgUD14JTI2LFY9KHgtUCkvMjY7cmV0dXJuIFkoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1W''@;'; put 'put ''P3RoaXM6KDAhPT1QJiZWKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oVix0aGlzLmxlbmd0aCksMCE9PVAmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+PlA8PFApLHRoaXMuc3RyaXAoKSl9LE4ucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKHgpe3JldHVy''@;'; put 'put ''biB0aGlzLmNsb25lKCkuaW1hc2tuKHgpfSxOLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbih4KXtyZXR1cm4gWSgibnVtYmVyIj09dHlwZW9mIHgpLFkoeDw2NzEwODg2NCkseDwwP3RoaXMuaXN1Ym4oLXgpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jk''@;'; put 'put ''c1swXSk8eD8odGhpcy53b3Jkc1swXT14LSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oeCksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKHgpfSxOLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oeCl7''@;'; put 'put ''dGhpcy53b3Jkc1swXSs9eDtmb3IodmFyIFA9MDtQPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW1BdPj02NzEwODg2NDtQKyspdGhpcy53b3Jkc1tQXS09NjcxMDg4NjQsUD09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tQKzFdPTE6dGhpcy53b3Jkc1tQKzFdKys7cmV0dXJuIHRoaXMubGVu''@;'; put 'put ''Z3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLFArMSksdGhpc30sTi5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oeCl7aWYoWSgibnVtYmVyIj09dHlwZW9mIHgpLFkoeDw2NzEwODg2NCkseDwwKXJldHVybiB0aGlzLmlhZGRuKC14KTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5u''@;'; put 'put ''ZWdhdGl2ZT0wLHRoaXMuaWFkZG4oeCksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09eCwxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgUD0wO1A8dGhp''@;'; put 'put ''cy5sZW5ndGgmJnRoaXMud29yZHNbUF08MDtQKyspdGhpcy53b3Jkc1tQXSs9NjcxMDg4NjQsdGhpcy53b3Jkc1tQKzFdLT0xO3JldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbih4KX0sTi5wcm90b3R5cGUu''@;'; put 'put ''c3Vibj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKHgpfSxOLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxOLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sTi5wcm90''@;'; put 'put ''b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVCxTO3RoaXMuX2V4cGFuZCh4Lmxlbmd0aCtWKTt2YXIgeWU9MDtmb3IoVD0wO1Q8eC5sZW5ndGg7VCsrKXtTPSgwfHRoaXMud29yZHNbVCtWXSkreWU7dmFyIENlPSgwfHgud29yZHNbVF0pKlA7eWU9KChTLT02NzEwODg2''@;'; put 'put ''MyZDZSk+PjI2KS0oQ2UvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1tUK1ZdPTY3MTA4ODYzJlN9Zm9yKDtUPHRoaXMubGVuZ3RoLVY7VCsrKXllPShTPSgwfHRoaXMud29yZHNbVCtWXSkreWUpPj4yNix0aGlzLndvcmRzW1QrVl09NjcxMDg4NjMmUztpZigwPT09eWUpcmV0dXJuIHRoaXMuc3Ry''@;'; put 'put ''aXAoKTtmb3IoWSgtMT09PXllKSx5ZT0wLFQ9MDtUPHRoaXMubGVuZ3RoO1QrKyl5ZT0oUz0tKDB8dGhpcy53b3Jkc1tUXSkreWUpPj4yNix0aGlzLndvcmRzW1RdPTY3MTA4ODYzJlM7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLl93b3JkRGl2PWZ1''@;'; put 'put ''bmN0aW9uKHgsUCl7dmFyIFYsVD10aGlzLmNsb25lKCksUz14LEY9MHxTLndvcmRzW1MubGVuZ3RoLTFdOzAhPShWPTI2LXRoaXMuX2NvdW50Qml0cyhGKSkmJihTPVMudXNobG4oViksVC5pdXNobG4oViksRj0wfFMud29yZHNbUy5sZW5ndGgtMV0pO3ZhciB5ZSxDZT1ULmxlbmd0aC1TLmxl''@;'; put 'put ''bmd0aDtpZigibW9kIiE9PVApeyh5ZT1uZXcgTihudWxsKSkubGVuZ3RoPUNlKzEseWUud29yZHM9bmV3IEFycmF5KHllLmxlbmd0aCk7Zm9yKHZhciBEZT0wO0RlPHllLmxlbmd0aDtEZSsrKXllLndvcmRzW0RlXT0wfXZhciBQZT1ULmNsb25lKCkuX2lzaGxuc3VibXVsKFMsMSxDZSk7MD09''@;'; put 'put ''PVBlLm5lZ2F0aXZlJiYoVD1QZSx5ZSYmKHllLndvcmRzW0NlXT0xKSk7Zm9yKHZhciBRZT1DZS0xO1FlPj0wO1FlLS0pe3ZhciAkZT02NzEwODg2NCooMHxULndvcmRzW1MubGVuZ3RoK1FlXSkrKDB8VC53b3Jkc1tTLmxlbmd0aCtRZS0xXSk7Zm9yKCRlPU1hdGgubWluKCRlL0Z8MCw2NzEw''@;'; put 'put ''ODg2MyksVC5faXNobG5zdWJtdWwoUywkZSxRZSk7MCE9PVQubmVnYXRpdmU7KSRlLS0sVC5uZWdhdGl2ZT0wLFQuX2lzaGxuc3VibXVsKFMsMSxRZSksVC5pc1plcm8oKXx8KFQubmVnYXRpdmVePTEpO3llJiYoeWUud29yZHNbUWVdPSRlKX1yZXR1cm4geWUmJnllLnN0cmlwKCksVC5zdHJp''@;'; put 'put ''cCgpLCJkaXYiIT09UCYmMCE9PVYmJlQuaXVzaHJuKFYpLHtkaXY6eWV8fG51bGwsbW9kOlR9fSxOLnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24oeCxQLFYpe3JldHVybiBZKCF4LmlzWmVybygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IE4oMCksbW9kOm5ldyBOKDApfTowIT09dGhpcy5u''@;'; put 'put ''ZWdhdGl2ZSYmMD09PXgubmVnYXRpdmU/KEY9dGhpcy5uZWcoKS5kaXZtb2QoeCxQKSwibW9kIiE9PVAmJihUPUYuZGl2Lm5lZygpKSwiZGl2IiE9PVAmJihTPUYubW9kLm5lZygpLFYmJjAhPT1TLm5lZ2F0aXZlJiZTLmlhZGQoeCkpLHtkaXY6VCxtb2Q6U30pOjA9PT10aGlzLm5lZ2F0aXZl''@;'; put 'put ''JiYwIT09eC5uZWdhdGl2ZT8oRj10aGlzLmRpdm1vZCh4Lm5lZygpLFApLCJtb2QiIT09UCYmKFQ9Ri5kaXYubmVnKCkpLHtkaXY6VCxtb2Q6Ri5tb2R9KTowIT0odGhpcy5uZWdhdGl2ZSZ4Lm5lZ2F0aXZlKT8oRj10aGlzLm5lZygpLmRpdm1vZCh4Lm5lZygpLFApLCJkaXYiIT09UCYmKFM9''@;'; put 'put ''Ri5tb2QubmVnKCksViYmMCE9PVMubmVnYXRpdmUmJlMuaXN1Yih4KSkse2RpdjpGLmRpdixtb2Q6U30pOngubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcCh4KTwwP3tkaXY6bmV3IE4oMCksbW9kOnRoaXN9OjE9PT14Lmxlbmd0aD8iZGl2Ij09PVA/e2Rpdjp0aGlzLmRpdm4oeC53b3Jk''@;'; put 'put ''c1swXSksbW9kOm51bGx9OiJtb2QiPT09UD97ZGl2Om51bGwsbW9kOm5ldyBOKHRoaXMubW9kbih4LndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKHgud29yZHNbMF0pLG1vZDpuZXcgTih0aGlzLm1vZG4oeC53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KHgsUCk7dmFyIFQsUyxGfSxOLnBy''@;'; put 'put ''b3RvdHlwZS5kaXY9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZGl2bW9kKHgsImRpdiIsITEpLmRpdn0sTi5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmRpdm1vZCh4LCJtb2QiLCExKS5tb2R9LE4ucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''ZGl2bW9kKHgsIm1vZCIsITApLm1vZH0sTi5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oeCl7dmFyIFA9dGhpcy5kaXZtb2QoeCk7aWYoUC5tb2QuaXNaZXJvKCkpcmV0dXJuIFAuZGl2O3ZhciBWPTAhPT1QLmRpdi5uZWdhdGl2ZT9QLm1vZC5pc3ViKHgpOlAubW9kLFQ9eC51c2hybigx''@;'; put 'put ''KSxTPXguYW5kbG4oMSksRj1WLmNtcChUKTtyZXR1cm4gRjwwfHwxPT09UyYmMD09PUY/UC5kaXY6MCE9PVAuZGl2Lm5lZ2F0aXZlP1AuZGl2LmlzdWJuKDEpOlAuZGl2LmlhZGRuKDEpfSxOLnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKHgpe1koeDw9NjcxMDg4NjMpO2Zvcih2YXIgUD02NzEw''@;'; put 'put ''ODg2NCV4LFY9MCxUPXRoaXMubGVuZ3RoLTE7VD49MDtULS0pVj0oUCpWKygwfHRoaXMud29yZHNbVF0pKSV4O3JldHVybiBWfSxOLnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbih4KXtZKHg8PTY3MTA4ODYzKTtmb3IodmFyIFA9MCxWPXRoaXMubGVuZ3RoLTE7Vj49MDtWLS0pe3ZhciBUPSgw''@;'; put 'put ''fHRoaXMud29yZHNbVl0pKzY3MTA4ODY0KlA7dGhpcy53b3Jkc1tWXT1UL3h8MCxQPVQleH1yZXR1cm4gdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaWRpdm4oeCl9LE4ucHJvdG90eXBlLmVnY2Q9ZnVuY3Rpb24oeCl7WSgw''@;'; put 'put ''PT09eC5uZWdhdGl2ZSksWSgheC5pc1plcm8oKSk7dmFyIFA9dGhpcyxWPXguY2xvbmUoKTtQPTAhPT1QLm5lZ2F0aXZlP1AudW1vZCh4KTpQLmNsb25lKCk7Zm9yKHZhciBUPW5ldyBOKDEpLFM9bmV3IE4oMCksRj1uZXcgTigwKSx5ZT1uZXcgTigxKSxDZT0wO1AuaXNFdmVuKCkmJlYuaXNF''@;'; put 'put ''dmVuKCk7KVAuaXVzaHJuKDEpLFYuaXVzaHJuKDEpLCsrQ2U7Zm9yKHZhciBEZT1WLmNsb25lKCksUGU9UC5jbG9uZSgpOyFQLmlzWmVybygpOyl7Zm9yKHZhciBRZT0wLCRlPTE7MD09KFAud29yZHNbMF0mJGUpJiZRZTwyNjsrK1FlLCRlPDw9MSk7aWYoUWU+MClmb3IoUC5pdXNocm4oUWUp''@;'; put 'put ''O1FlLS0gPjA7KShULmlzT2RkKCl8fFMuaXNPZGQoKSkmJihULmlhZGQoRGUpLFMuaXN1YihQZSkpLFQuaXVzaHJuKDEpLFMuaXVzaHJuKDEpO2Zvcih2YXIgZ3Q9MCx3dD0xOzA9PShWLndvcmRzWzBdJnd0KSYmZ3Q8MjY7KytndCx3dDw8PTEpO2lmKGd0PjApZm9yKFYuaXVzaHJuKGd0KTtn''@;'; put 'put ''dC0tID4wOykoRi5pc09kZCgpfHx5ZS5pc09kZCgpKSYmKEYuaWFkZChEZSkseWUuaXN1YihQZSkpLEYuaXVzaHJuKDEpLHllLml1c2hybigxKTtQLmNtcChWKT49MD8oUC5pc3ViKFYpLFQuaXN1YihGKSxTLmlzdWIoeWUpKTooVi5pc3ViKFApLEYuaXN1YihUKSx5ZS5pc3ViKFMpKX1yZXR1''@;'; put 'put ''cm57YTpGLGI6eWUsZ2NkOlYuaXVzaGxuKENlKX19LE4ucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbih4KXtZKDA9PT14Lm5lZ2F0aXZlKSxZKCF4LmlzWmVybygpKTt2YXIgUD10aGlzLFY9eC5jbG9uZSgpO1A9MCE9PVAubmVnYXRpdmU/UC51bW9kKHgpOlAuY2xvbmUoKTtmb3IodmFyIFQs''@;'; put 'put ''Uz1uZXcgTigxKSxGPW5ldyBOKDApLHllPVYuY2xvbmUoKTtQLmNtcG4oMSk+MCYmVi5jbXBuKDEpPjA7KXtmb3IodmFyIENlPTAsRGU9MTswPT0oUC53b3Jkc1swXSZEZSkmJkNlPDI2OysrQ2UsRGU8PD0xKTtpZihDZT4wKWZvcihQLml1c2hybihDZSk7Q2UtLSA+MDspUy5pc09kZCgpJiZT''@;'; put 'put ''LmlhZGQoeWUpLFMuaXVzaHJuKDEpO2Zvcih2YXIgUGU9MCxRZT0xOzA9PShWLndvcmRzWzBdJlFlKSYmUGU8MjY7KytQZSxRZTw8PTEpO2lmKFBlPjApZm9yKFYuaXVzaHJuKFBlKTtQZS0tID4wOylGLmlzT2RkKCkmJkYuaWFkZCh5ZSksRi5pdXNocm4oMSk7UC5jbXAoVik+PTA/KFAuaXN1''@;'; put 'put ''YihWKSxTLmlzdWIoRikpOihWLmlzdWIoUCksRi5pc3ViKFMpKX1yZXR1cm4oVD0wPT09UC5jbXBuKDEpP1M6RikuY21wbigwKTwwJiZULmlhZGQoeCksVH0sTi5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKHgpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIHguYWJzKCk7aWYoeC5pc1plcm8oKSly''@;'; put 'put ''ZXR1cm4gdGhpcy5hYnMoKTt2YXIgUD10aGlzLmNsb25lKCksVj14LmNsb25lKCk7UC5uZWdhdGl2ZT0wLFYubmVnYXRpdmU9MDtmb3IodmFyIFQ9MDtQLmlzRXZlbigpJiZWLmlzRXZlbigpO1QrKylQLml1c2hybigxKSxWLml1c2hybigxKTtmb3IoOzspe2Zvcig7UC5pc0V2ZW4oKTspUC5p''@;'; put 'put ''dXNocm4oMSk7Zm9yKDtWLmlzRXZlbigpOylWLml1c2hybigxKTt2YXIgUz1QLmNtcChWKTtpZihTPDApe3ZhciBGPVA7UD1WLFY9Rn1lbHNlIGlmKDA9PT1TfHwwPT09Vi5jbXBuKDEpKWJyZWFrO1AuaXN1YihWKX1yZXR1cm4gVi5pdXNobG4oVCl9LE4ucHJvdG90eXBlLmludm09ZnVuY3Rp''@;'; put 'put ''b24oeCl7cmV0dXJuIHRoaXMuZWdjZCh4KS5hLnVtb2QoeCl9LE4ucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiAwPT0oMSZ0aGlzLndvcmRzWzBdKX0sTi5wcm90b3R5cGUuaXNPZGQ9ZnVuY3Rpb24oKXtyZXR1cm4gMT09KDEmdGhpcy53b3Jkc1swXSl9LE4ucHJvdG90eXBl''@;'; put 'put ''LmFuZGxuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLndvcmRzWzBdJnh9LE4ucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9PXR5cGVvZiB4KTt2YXIgUD14JTI2LFY9KHgtUCkvMjYsVD0xPDxQO2lmKHRoaXMubGVuZ3RoPD1WKXJldHVybiB0aGlzLl9leHBhbmQoVisx''@;'; put 'put ''KSx0aGlzLndvcmRzW1ZdfD1ULHRoaXM7Zm9yKHZhciBTPVQsRj1WOzAhPT1TJiZGPHRoaXMubGVuZ3RoO0YrKyl7dmFyIHllPTB8dGhpcy53b3Jkc1tGXTtTPSh5ZSs9Uyk+Pj4yNix0aGlzLndvcmRzW0ZdPXllJj02NzEwODg2M31yZXR1cm4gMCE9PVMmJih0aGlzLndvcmRzW0ZdPVMsdGhp''@;'; put 'put ''cy5sZW5ndGgrKyksdGhpc30sTi5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LE4ucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24oeCl7dmFyIFAsVj14PDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiFWKXJldHVybi0x''@;'; put 'put ''O2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZWKXJldHVybiAxO2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxlbmd0aD4xKVA9MTtlbHNle1YmJih4PS14KSxZKHg8PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBUPTB8dGhpcy53b3Jkc1swXTtQPVQ9PT14PzA6VDx4Py0xOjF9cmV0dXJu''@;'; put 'put ''IDAhPT10aGlzLm5lZ2F0aXZlPzB8LVA6UH0sTi5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKHgpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09eC5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXgubmVnYXRpdmUpcmV0dXJuIDE7dmFyIFA9dGhpcy51Y21wKHgp''@;'; put 'put ''O3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1QOlB9LE4ucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oeCl7aWYodGhpcy5sZW5ndGg+eC5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8eC5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBQPTAsVj10aGlzLmxlbmd0aC0xO1Y+PTA7Vi0t''@;'; put 'put ''KXt2YXIgVD0wfHRoaXMud29yZHNbVl0sUz0wfHgud29yZHNbVl07aWYoVCE9PVMpe1Q8Uz9QPS0xOlQ+UyYmKFA9MSk7YnJlYWt9fXJldHVybiBQfSxOLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oeCl7cmV0dXJuIDE9PT10aGlzLmNtcG4oeCl9LE4ucHJvdG90eXBlLmd0PWZ1bmN0aW9uKHgp''@;'; put 'put ''e3JldHVybiAxPT09dGhpcy5jbXAoeCl9LE4ucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wbih4KT49MH0sTi5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNtcCh4KT49MH0sTi5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKHgpe3JldHVybi0x''@;'; put 'put ''PT09dGhpcy5jbXBuKHgpfSxOLnByb3RvdHlwZS5sdD1mdW5jdGlvbih4KXtyZXR1cm4tMT09PXRoaXMuY21wKHgpfSxOLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNtcG4oeCk8PTB9LE4ucHJvdG90eXBlLmx0ZT1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbXAo''@;'; put 'put ''eCk8PTB9LE4ucHJvdG90eXBlLmVxbj1mdW5jdGlvbih4KXtyZXR1cm4gMD09PXRoaXMuY21wbih4KX0sTi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oeCl7cmV0dXJuIDA9PT10aGlzLmNtcCh4KX0sTi5yZWQ9ZnVuY3Rpb24oeCl7cmV0dXJuIG5ldyBlZSh4KX0sTi5wcm90b3R5cGUudG9SZWQ9''@;'; put 'put ''ZnVuY3Rpb24oeCl7cmV0dXJuIFkoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksWSgwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSx4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoeCl9LE4ucHJvdG90''@;'; put 'put ''eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSxOLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oeCl7cmV0dXJu''@;'; put 'put ''IHRoaXMucmVkPXgsdGhpc30sTi5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoeCl9LE4ucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbih4KXtyZXR1''@;'; put 'put ''cm4gWSh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRo''@;'; put 'put ''aXMucmVkLmlhZGQodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oeCl7cmV0''@;'; put 'put ''dXJuIFkodGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0''@;'; put 'put ''aGlzLnJlZC5zaGwodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx4KSx0aGlzLnJlZC5tdWwodGhpcyx4KX0sTi5wcm90b3R5''@;'; put 'put ''cGUucmVkSU11bD1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMseCksdGhpcy5yZWQuaW11bCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''WSh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sTi5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0''@;'; put 'put ''aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LE4ucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5''@;'; put 'put ''MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxOLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sTi5w''@;'; put 'put ''cm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LE4ucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbih4KXtyZXR1cm4g''@;'; put 'put ''WSh0aGlzLnJlZCYmIXgucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLHgpfTt2YXIgSWU9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiBUZSh4LFApe3RoaXMubmFtZT14''@;'; put 'put ''LHRoaXMucD1uZXcgTihQLDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpLHRoaXMuaz1uZXcgTigxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gTWUoKXtUZS5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBm''@;'; put 'put ''ZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIGhlKCl7VGUuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBP''@;'; put 'put ''KCl7VGUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiB6KCl7VGUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZm''@;'; put 'put ''IGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBlZSh4KXtpZigic3RyaW5nIj09dHlwZW9mIHgpe3ZhciBQPU4uX3ByaW1lKHgpO3RoaXMubT1QLnAsdGhpcy5wcmltZT1QfWVsc2UgWSh4Lmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPXgsdGhpcy5w''@;'; put 'put ''cmltZT1udWxsfWZ1bmN0aW9uIG5lKHgpe2VlLmNhbGwodGhpcyx4KSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBOKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRo''@;'; put 'put ''aXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlz''@;'; put 'put ''Lm1pbnYpfVRlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIHg9bmV3IE4obnVsbCk7cmV0dXJuIHgud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSx4fSxUZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbih4KXt2YXIgUCxWPXg7ZG97dGhpcy5zcGxpdChWLHRo''@;'; put 'put ''aXMudG1wKSxQPShWPShWPXRoaXMuaW11bEsoVikpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShQPnRoaXMubik7dmFyIFQ9UDx0aGlzLm4/LTE6Vi51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1UPyhWLndvcmRzWzBdPTAsVi5sZW5ndGg9MSk6VD4wP1YuaXN1Yih0aGlzLnAp''@;'; put 'put ''OnZvaWQgMCE9PVYuc3RyaXA/Vi5zdHJpcCgpOlYuX3N0cmlwKCksVn0sVGUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKHgsUCl7eC5pdXNocm4odGhpcy5uLDAsUCl9LFRlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih4KXtyZXR1cm4geC5pbXVsKHRoaXMuayl9LFcoTWUsVGUpLE1lLnBy''@;'; put 'put ''b3RvdHlwZS5zcGxpdD1mdW5jdGlvbih4LFApe2Zvcih2YXIgVj00MTk0MzAzLFQ9TWF0aC5taW4oeC5sZW5ndGgsOSksUz0wO1M8VDtTKyspUC53b3Jkc1tTXT14LndvcmRzW1NdO2lmKFAubGVuZ3RoPVQseC5sZW5ndGg8PTkpcmV0dXJuIHgud29yZHNbMF09MCx2b2lkKHgubGVuZ3RoPTEp''@;'; put 'put ''O3ZhciBGPXgud29yZHNbOV07Zm9yKFAud29yZHNbUC5sZW5ndGgrK109RiZWLFM9MTA7Uzx4Lmxlbmd0aDtTKyspe3ZhciB5ZT0wfHgud29yZHNbU107eC53b3Jkc1tTLTEwXT0oeWUmVik8PDR8Rj4+PjIyLEY9eWV9eC53b3Jkc1tTLTEwXT1GPj4+PTIyLHgubGVuZ3RoLT0wPT09RiYmeC5s''@;'; put 'put ''ZW5ndGg+MTA/MTA6OX0sTWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHgpe3gud29yZHNbeC5sZW5ndGhdPTAseC53b3Jkc1t4Lmxlbmd0aCsxXT0wLHgubGVuZ3RoKz0yO2Zvcih2YXIgUD0wLFY9MDtWPHgubGVuZ3RoO1YrKyl7dmFyIFQ9MHx4LndvcmRzW1ZdO3gud29yZHNbVl09Njcx''@;'; put 'put ''MDg4NjMmKFArPTk3NypUKSxQPTY0KlQrKFAvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT14LndvcmRzW3gubGVuZ3RoLTFdJiYoeC5sZW5ndGgtLSwwPT09eC53b3Jkc1t4Lmxlbmd0aC0xXSYmeC5sZW5ndGgtLSkseH0sVyhoZSxUZSksVyhPLFRlKSxXKHosVGUpLHoucHJvdG90eXBlLmltdWxL''@;'; put 'put ''PWZ1bmN0aW9uKHgpe2Zvcih2YXIgUD0wLFY9MDtWPHgubGVuZ3RoO1YrKyl7dmFyIFQ9MTkqKDB8eC53b3Jkc1tWXSkrUCxTPTY3MTA4ODYzJlQ7VD4+Pj0yNix4LndvcmRzW1ZdPVMsUD1UfXJldHVybiAwIT09UCYmKHgud29yZHNbeC5sZW5ndGgrK109UCkseH0sTi5fcHJpbWU9ZnVuY3Rp''@;'; put 'put ''b24oeCl7aWYoSWVbeF0pcmV0dXJuIEllW3hdO3ZhciBQO2lmKCJrMjU2Ij09PXgpUD1uZXcgTWU7ZWxzZSBpZigicDIyNCI9PT14KVA9bmV3IGhlO2Vsc2UgaWYoInAxOTIiPT09eClQPW5ldyBPO2Vsc2V7aWYoInAyNTUxOSIhPT14KXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAi''@;'; put 'put ''K3gpO1A9bmV3IHp9cmV0dXJuIEllW3hdPVAsUH0sZWUucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKHgpe1koMD09PXgubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksWSh4LnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxlZS5wcm90''@;'; put 'put ''b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oeCxQKXtZKDA9PSh4Lm5lZ2F0aXZlfFAubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLFkoeC5yZWQmJngucmVkPT09UC5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sZWUucHJvdG90eXBlLmlt''@;'; put 'put ''b2Q9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKHgpLl9mb3JjZVJlZCh0aGlzKTp4LnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LGVlLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oeCl7cmV0dXJuIHguaXNaZXJvKCk/eC5jbG9uZSgpOnRoaXMu''@;'; put 'put ''bS5zdWIoeCkuX2ZvcmNlUmVkKHRoaXMpfSxlZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHgsUCl7dGhpcy5fdmVyaWZ5Mih4LFApO3ZhciBWPXguYWRkKFApO3JldHVybiBWLmNtcCh0aGlzLm0pPj0wJiZWLmlzdWIodGhpcy5tKSxWLl9mb3JjZVJlZCh0aGlzKX0sZWUucHJvdG90eXBlLmlh''@;'; put 'put ''ZGQ9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7dmFyIFY9eC5pYWRkKFApO3JldHVybiBWLmNtcCh0aGlzLm0pPj0wJiZWLmlzdWIodGhpcy5tKSxWfSxlZS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKHgsUCl7dGhpcy5fdmVyaWZ5Mih4LFApO3ZhciBWPXguc3ViKFApO3JldHVy''@;'; put 'put ''biBWLmNtcG4oMCk8MCYmVi5pYWRkKHRoaXMubSksVi5fZm9yY2VSZWQodGhpcyl9LGVlLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKHgsUCl7dGhpcy5fdmVyaWZ5Mih4LFApO3ZhciBWPXguaXN1YihQKTtyZXR1cm4gVi5jbXBuKDApPDAmJlYuaWFkZCh0aGlzLm0pLFZ9LGVlLnByb3RvdHlw''@;'; put 'put ''ZS5zaGw9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MSh4KSx0aGlzLmltb2QoeC51c2hsbihQKSl9LGVlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoeCxQKSx0aGlzLmltb2QoeC5pbXVsKFApKX0sZWUucHJvdG90eXBlLm11bD1m''@;'; put 'put ''dW5jdGlvbih4LFApe3JldHVybiB0aGlzLl92ZXJpZnkyKHgsUCksdGhpcy5pbW9kKHgubXVsKFApKX0sZWUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuaW11bCh4LHguY2xvbmUoKSl9LGVlLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubXVs''@;'; put 'put ''KHgseCl9LGVlLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKHgpe2lmKHguaXNaZXJvKCkpcmV0dXJuIHguY2xvbmUoKTt2YXIgUD10aGlzLm0uYW5kbG4oMyk7aWYoWShQJTI9PTEpLDM9PT1QKXt2YXIgVj10aGlzLm0uYWRkKG5ldyBOKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KHgs''@;'; put 'put ''Vil9Zm9yKHZhciBUPXRoaXMubS5zdWJuKDEpLFM9MDshVC5pc1plcm8oKSYmMD09PVQuYW5kbG4oMSk7KVMrKyxULml1c2hybigxKTtZKCFULmlzWmVybygpKTt2YXIgRj1uZXcgTigxKS50b1JlZCh0aGlzKSx5ZT1GLnJlZE5lZygpLENlPXRoaXMubS5zdWJuKDEpLml1c2hybigxKSxEZT10''@;'; put 'put ''aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKERlPW5ldyBOKDIqRGUqRGUpLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhEZSxDZSkuY21wKHllKTspRGUucmVkSUFkZCh5ZSk7Zm9yKHZhciBQZT10aGlzLnBvdyhEZSxUKSxRZT10aGlzLnBvdyh4LFQuYWRkbigxKS5pdXNocm4oMSkpLCRlPXRoaXMu''@;'; put 'put ''cG93KHgsVCksZ3Q9UzswIT09JGUuY21wKEYpOyl7Zm9yKHZhciB3dD0kZSxtdD0wOzAhPT13dC5jbXAoRik7bXQrKyl3dD13dC5yZWRTcXIoKTtZKG10PGd0KTt2YXIgdnQ9dGhpcy5wb3coUGUsbmV3IE4oMSkuaXVzaGxuKGd0LW10LTEpKTtRZT1RZS5yZWRNdWwodnQpLFBlPXZ0LnJlZFNx''@;'; put 'put ''cigpLCRlPSRlLnJlZE11bChQZSksZ3Q9bXR9cmV0dXJuIFFlfSxlZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih4KXt2YXIgUD14Ll9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09UC5uZWdhdGl2ZT8oUC5uZWdhdGl2ZT0wLHRoaXMuaW1vZChQKS5yZWROZWcoKSk6dGhpcy5pbW9kKFApfSxl''@;'; put 'put ''ZS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHgsUCl7aWYoUC5pc1plcm8oKSlyZXR1cm4gbmV3IE4oMSkudG9SZWQodGhpcyk7aWYoMD09PVAuY21wbigxKSlyZXR1cm4geC5jbG9uZSgpO3ZhciBWPW5ldyBBcnJheSgxNik7VlswXT1uZXcgTigxKS50b1JlZCh0aGlzKSxWWzFdPXg7Zm9yKHZh''@;'; put 'put ''ciBUPTI7VDxWLmxlbmd0aDtUKyspVltUXT10aGlzLm11bChWW1QtMV0seCk7dmFyIFM9VlswXSxGPTAseWU9MCxDZT1QLmJpdExlbmd0aCgpJTI2O2ZvcigwPT09Q2UmJihDZT0yNiksVD1QLmxlbmd0aC0xO1Q+PTA7VC0tKXtmb3IodmFyIERlPVAud29yZHNbVF0sUGU9Q2UtMTtQZT49MDtQ''@;'; put 'put ''ZS0tKXt2YXIgUWU9RGU+PlBlJjE7UyE9PVZbMF0mJihTPXRoaXMuc3FyKFMpKSwwIT09UWV8fDAhPT1GPyhGPDw9MSxGfD1RZSwoND09Kyt5ZXx8MD09PVQmJjA9PT1QZSkmJihTPXRoaXMubXVsKFMsVltGXSkseWU9MCxGPTApKTp5ZT0wfUNlPTI2fXJldHVybiBTfSxlZS5wcm90b3R5cGUu''@;'; put 'put ''Y29udmVydFRvPWZ1bmN0aW9uKHgpe3ZhciBQPXgudW1vZCh0aGlzLm0pO3JldHVybiBQPT09eD9QLmNsb25lKCk6UH0sZWUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKHgpe3ZhciBQPXguY2xvbmUoKTtyZXR1cm4gUC5yZWQ9bnVsbCxQfSxOLm1vbnQ9ZnVuY3Rpb24oeCl7cmV0''@;'; put 'put ''dXJuIG5ldyBuZSh4KX0sVyhuZSxlZSksbmUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5pbW9kKHgudXNobG4odGhpcy5zaGlmdCkpfSxuZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oeCl7dmFyIFA9dGhpcy5pbW9kKHgubXVsKHRoaXMucmlu''@;'; put 'put ''dikpO3JldHVybiBQLnJlZD1udWxsLFB9LG5lLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHgsUCl7aWYoeC5pc1plcm8oKXx8UC5pc1plcm8oKSlyZXR1cm4geC53b3Jkc1swXT0wLHgubGVuZ3RoPTEseDt2YXIgVj14LmltdWwoUCksVD1WLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1p''@;'; put 'put ''bnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxTPVYuaXN1YihUKS5pdXNocm4odGhpcy5zaGlmdCksRj1TO3JldHVybiBTLmNtcCh0aGlzLm0pPj0wP0Y9Uy5pc3ViKHRoaXMubSk6Uy5jbXBuKDApPDAmJihGPVMuaWFkZCh0aGlzLm0pKSxGLl9mb3JjZVJlZCh0aGlzKX0sbmUu''@;'; put 'put ''cHJvdG90eXBlLm11bD1mdW5jdGlvbih4LFApe2lmKHguaXNaZXJvKCl8fFAuaXNaZXJvKCkpcmV0dXJuIG5ldyBOKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgVj14Lm11bChQKSxUPVYubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlz''@;'; put 'put ''Lm0pLFM9Vi5pc3ViKFQpLml1c2hybih0aGlzLnNoaWZ0KSxGPVM7cmV0dXJuIFMuY21wKHRoaXMubSk+PTA/Rj1TLmlzdWIodGhpcy5tKTpTLmNtcG4oMCk8MCYmKEY9Uy5pYWRkKHRoaXMubSkpLEYuX2ZvcmNlUmVkKHRoaXMpfSxuZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih4KXtyZXR1''@;'; put 'put ''cm4gdGhpcy5pbW9kKHguX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShVPWoubm1kKFUpLHRoaXMpfSw4MDkxOlU9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gUShqLHJlKXtpZihudWxsPT1qKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0''@;'; put 'put ''IGZpcnN0IGFyZ3VtZW50IHRvIG9iamVjdCIpO2Zvcih2YXIgYWU9T2JqZWN0KGopLFk9MTtZPGFyZ3VtZW50cy5sZW5ndGg7WSsrKXt2YXIgVz1hcmd1bWVudHNbWV07aWYobnVsbCE9Vylmb3IodmFyIE49T2JqZWN0LmtleXMoT2JqZWN0KFcpKSx0ZT0wLEs9Ti5sZW5ndGg7dGU8Szt0ZSsr''@;'; put 'put ''KXt2YXIgSj1OW3RlXSxzZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFcsSik7dm9pZCAwIT09c2UmJnNlLmVudW1lcmFibGUmJihhZVtKXT1XW0pdKX19cmV0dXJuIGFlfVUuZXhwb3J0cz17YXNzaWduOlEscG9seWZpbGw6ZnVuY3Rpb24oKXtPYmplY3QuYXNzaWdufHxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LCJhc3NpZ24iLHtlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpRfSl9fX0sNzE4NzooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZSxhZT1qKDUxMDgpLFk9Im9iamVjdCI9PXR5cGVvZiBSZWZsZWN0P1Jl''@;'; put 'put ''ZmxlY3Q6bnVsbCxXPVkmJiJmdW5jdGlvbiI9PXR5cGVvZiBZLmFwcGx5P1kuYXBwbHk6ZnVuY3Rpb24oSWUsVGUsTWUpe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChJZSxUZSxNZSl9O3JlPVkmJiJmdW5jdGlvbiI9PXR5cGVvZiBZLm93bktleXM/WS5vd25LZXlzOk9i''@;'; put 'put ''amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/ZnVuY3Rpb24oSWUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhJZSkuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoSWUpKX06ZnVuY3Rpb24oSWUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1l''@;'; put 'put ''cyhJZSl9O3ZhciBOPU51bWJlci5pc05hTnx8ZnVuY3Rpb24oSWUpe3JldHVybiBJZSE9SWV9O2Z1bmN0aW9uIHRlKCl7dGUuaW5pdC5jYWxsKHRoaXMpfVUuZXhwb3J0cz10ZSxVLmV4cG9ydHMub25jZT1mdW5jdGlvbihJZSxUZSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKE1lLGhl''@;'; put 'put ''KXtmdW5jdGlvbiBPKGVlKXtJZS5yZW1vdmVMaXN0ZW5lcihUZSx6KSxoZShlZSl9ZnVuY3Rpb24geigpeyJmdW5jdGlvbiI9PXR5cGVvZiBJZS5yZW1vdmVMaXN0ZW5lciYmSWUucmVtb3ZlTGlzdGVuZXIoImVycm9yIixPKSxNZShbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfXZhciBlZTtT''@;'; put 'put ''ZShJZSxUZSx6LHtvbmNlOiEwfSksImVycm9yIiE9PVRlJiYoImZ1bmN0aW9uIj09dHlwZW9mKGVlPUllKS5vbiYmU2UoZWUsImVycm9yIixPLHtvbmNlOiEwfSkpfSl9LHRlLkV2ZW50RW1pdHRlcj10ZSx0ZS5wcm90b3R5cGUuX2V2ZW50cz12b2lkIDAsdGUucHJvdG90eXBlLl9ldmVudHND''@;'; put 'put ''b3VudD0wLHRlLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzPXZvaWQgMDt2YXIgSz0xMDtmdW5jdGlvbiBKKEllKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgSWUpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJsaXN0ZW5lciIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uLiBSZWNl''@;'; put 'put ''aXZlZCB0eXBlICcrdHlwZW9mIEllKX1mdW5jdGlvbiBzZShJZSl7cmV0dXJuIHZvaWQgMD09PUllLl9tYXhMaXN0ZW5lcnM/dGUuZGVmYXVsdE1heExpc3RlbmVyczpJZS5fbWF4TGlzdGVuZXJzfWZ1bmN0aW9uIG9lKEllLFRlLE1lLGhlKXt2YXIgTyx6LGVlO2lmKEooTWUpLHZvaWQgMD09''@;'; put 'put ''PSh6PUllLl9ldmVudHMpPyh6PUllLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxJZS5fZXZlbnRzQ291bnQ9MCk6KHZvaWQgMCE9PXoubmV3TGlzdGVuZXImJihJZS5lbWl0KCJuZXdMaXN0ZW5lciIsVGUsTWUubGlzdGVuZXI/TWUubGlzdGVuZXI6TWUpLHo9SWUuX2V2ZW50cyksZWU9''@;'; put 'put ''eltUZV0pLHZvaWQgMD09PWVlKWVlPXpbVGVdPU1lLCsrSWUuX2V2ZW50c0NvdW50O2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGVlP2VlPXpbVGVdPWhlP1tNZSxlZV06W2VlLE1lXTpoZT9lZS51bnNoaWZ0KE1lKTplZS5wdXNoKE1lKSwoTz1zZShJZSkpPjAmJmVlLmxlbmd0aD5PJiYh''@;'; put 'put ''ZWUud2FybmVkKXtlZS53YXJuZWQ9ITA7dmFyIHg9bmV3IEVycm9yKCJQb3NzaWJsZSBFdmVudEVtaXR0ZXIgbWVtb3J5IGxlYWsgZGV0ZWN0ZWQuICIrZWUubGVuZ3RoKyIgIitTdHJpbmcoVGUpKyIgbGlzdGVuZXJzIGFkZGVkLiBVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byBp''@;'; put 'put ''bmNyZWFzZSBsaW1pdCIpO3gubmFtZT0iTWF4TGlzdGVuZXJzRXhjZWVkZWRXYXJuaW5nIix4LmVtaXR0ZXI9SWUseC50eXBlPVRlLHguY291bnQ9ZWUubGVuZ3RoLGFlJiZhZS53YXJuJiZhZS53YXJuKHgpfXJldHVybiBJZX1mdW5jdGlvbiBjZSgpe2lmKCF0aGlzLmZpcmVkKXJldHVybiB0''@;'; put 'put ''aGlzLnRhcmdldC5yZW1vdmVMaXN0ZW5lcih0aGlzLnR5cGUsdGhpcy53cmFwRm4pLHRoaXMuZmlyZWQ9ITAsMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5saXN0ZW5lci5jYWxsKHRoaXMudGFyZ2V0KTp0aGlzLmxpc3RlbmVyLmFwcGx5KHRoaXMudGFyZ2V0LGFyZ3VtZW50cyl9ZnVuY3Rp''@;'; put 'put ''b24gZGUoSWUsVGUsTWUpe3ZhciBoZT17ZmlyZWQ6ITEsd3JhcEZuOnZvaWQgMCx0YXJnZXQ6SWUsdHlwZTpUZSxsaXN0ZW5lcjpNZX0sTz1jZS5iaW5kKGhlKTtyZXR1cm4gTy5saXN0ZW5lcj1NZSxoZS53cmFwRm49TyxPfWZ1bmN0aW9uIHZlKEllLFRlLE1lKXt2YXIgaGU9SWUuX2V2ZW50''@;'; put 'put ''cztpZih2b2lkIDA9PT1oZSlyZXR1cm5bXTt2YXIgTz1oZVtUZV07cmV0dXJuIHZvaWQgMD09PU8/W106ImZ1bmN0aW9uIj09dHlwZW9mIE8/TWU/W08ubGlzdGVuZXJ8fE9dOltPXTpNZT9mdW5jdGlvbih6KXtmb3IodmFyIGVlPW5ldyBBcnJheSh6Lmxlbmd0aCksbmU9MDtuZTxlZS5sZW5n''@;'; put 'put ''dGg7KytuZSllZVtuZV09eltuZV0ubGlzdGVuZXJ8fHpbbmVdO3JldHVybiBlZX0oTyk6a2UoTyxPLmxlbmd0aCl9ZnVuY3Rpb24gQWUoSWUpe3ZhciBUZT10aGlzLl9ldmVudHM7aWYodm9pZCAwIT09VGUpe3ZhciBNZT1UZVtJZV07aWYoImZ1bmN0aW9uIj09dHlwZW9mIE1lKXJldHVybiAx''@;'; put 'put ''O2lmKHZvaWQgMCE9PU1lKXJldHVybiBNZS5sZW5ndGh9cmV0dXJuIDB9ZnVuY3Rpb24ga2UoSWUsVGUpe2Zvcih2YXIgTWU9bmV3IEFycmF5KFRlKSxoZT0wO2hlPFRlOysraGUpTWVbaGVdPUllW2hlXTtyZXR1cm4gTWV9ZnVuY3Rpb24gU2UoSWUsVGUsTWUsaGUpe2lmKCJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBJZS5vbiloZS5vbmNlP0llLm9uY2UoVGUsTWUpOkllLm9uKFRlLE1lKTtlbHNle2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBJZS5hZGRFdmVudExpc3RlbmVyKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAiZW1pdHRlciIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEV2ZW50RW1p''@;'; put 'put ''dHRlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBJZSk7SWUuYWRkRXZlbnRMaXN0ZW5lcihUZSxmdW5jdGlvbiBPKHope2hlLm9uY2UmJkllLnJlbW92ZUV2ZW50TGlzdGVuZXIoVGUsTyksTWUoeil9KX19T2JqZWN0LmRlZmluZVByb3BlcnR5KHRlLCJkZWZhdWx0TWF4TGlzdGVuZXJzIix7''@;'; put 'put ''ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gS30sc2V0OmZ1bmN0aW9uKEllKXtpZigibnVtYmVyIiE9dHlwZW9mIEllfHxJZTwwfHxOKEllKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mICJkZWZhdWx0TWF4TGlzdGVuZXJzIiBpcyBvdXQgb2YgcmFuZ2Uu''@;'; put 'put ''IEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnK0llKyIuIik7Sz1JZX19KSx0ZS5pbml0PWZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5fZXZlbnRzJiZ0aGlzLl9ldmVudHMhPT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykuX2V2ZW50c3x8KHRoaXMuX2V2''@;'; put 'put ''ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTApLHRoaXMuX21heExpc3RlbmVycz10aGlzLl9tYXhMaXN0ZW5lcnN8fHZvaWQgMH0sdGUucHJvdG90eXBlLnNldE1heExpc3RlbmVycz1mdW5jdGlvbihJZSl7aWYoIm51bWJlciIhPXR5cGVvZiBJZXx8SWU8MHx8''@;'; put 'put ''TihJZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiAibiIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJytJZSsiLiIpO3JldHVybiB0aGlzLl9tYXhMaXN0ZW5lcnM9SWUsdGhpc30sdGUucHJvdG90eXBlLmdl''@;'; put 'put ''dE1heExpc3RlbmVycz1mdW5jdGlvbigpe3JldHVybiBzZSh0aGlzKX0sdGUucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24oSWUpe2Zvcih2YXIgVGU9W10sTWU9MTtNZTxhcmd1bWVudHMubGVuZ3RoO01lKyspVGUucHVzaChhcmd1bWVudHNbTWVdKTt2YXIgaGU9ImVycm9yIj09PUllLE89dGhp''@;'; put 'put ''cy5fZXZlbnRzO2lmKHZvaWQgMCE9PU8paGU9aGUmJnZvaWQgMD09PU8uZXJyb3I7ZWxzZSBpZighaGUpcmV0dXJuITE7aWYoaGUpe3ZhciB6O2lmKFRlLmxlbmd0aD4wJiYoej1UZVswXSkseiBpbnN0YW5jZW9mIEVycm9yKXRocm93IHo7dmFyIGVlPW5ldyBFcnJvcigiVW5oYW5kbGVkIGVy''@;'; put 'put ''cm9yLiIrKHo/IiAoIit6Lm1lc3NhZ2UrIikiOiIiKSk7dGhyb3cgZWUuY29udGV4dD16LGVlfXZhciBuZT1PW0llXTtpZih2b2lkIDA9PT1uZSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgbmUpVyhuZSx0aGlzLFRlKTtlbHNle3ZhciB4PW5lLmxlbmd0aCxQPWtlKG5lLHgpO2Zv''@;'; put 'put ''cihNZT0wO01lPHg7KytNZSlXKFBbTWVdLHRoaXMsVGUpfXJldHVybiEwfSx0ZS5wcm90b3R5cGUub249dGUucHJvdG90eXBlLmFkZExpc3RlbmVyPWZ1bmN0aW9uKEllLFRlKXtyZXR1cm4gb2UodGhpcyxJZSxUZSwhMSl9LHRlLnByb3RvdHlwZS5wcmVwZW5kTGlzdGVuZXI9ZnVuY3Rpb24o''@;'; put 'put ''SWUsVGUpe3JldHVybiBvZSh0aGlzLEllLFRlLCEwKX0sdGUucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24oSWUsVGUpe3JldHVybiBKKFRlKSx0aGlzLm9uKEllLGRlKHRoaXMsSWUsVGUpKSx0aGlzfSx0ZS5wcm90b3R5cGUucHJlcGVuZE9uY2VMaXN0ZW5lcj1mdW5jdGlvbihJZSxUZSl7cmV0''@;'; put 'put ''dXJuIEooVGUpLHRoaXMucHJlcGVuZExpc3RlbmVyKEllLGRlKHRoaXMsSWUsVGUpKSx0aGlzfSx0ZS5wcm90b3R5cGUub2ZmPXRlLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbihJZSxUZSl7dmFyIE1lLGhlLE8seixlZTtpZihKKFRlKSx2b2lkIDA9PT0oaGU9dGhpcy5fZXZl''@;'; put 'put ''bnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT0oTWU9aGVbSWVdKSlyZXR1cm4gdGhpcztpZihNZT09PVRlfHxNZS5saXN0ZW5lcj09PVRlKTA9PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6KGRlbGV0ZSBoZVtJZV0saGUucmVtb3ZlTGlz''@;'; put 'put ''dGVuZXImJnRoaXMuZW1pdCgicmVtb3ZlTGlzdGVuZXIiLEllLE1lLmxpc3RlbmVyfHxUZSkpO2Vsc2UgaWYoImZ1bmN0aW9uIiE9dHlwZW9mIE1lKXtmb3IoTz0tMSx6PU1lLmxlbmd0aC0xO3o+PTA7ei0tKWlmKE1lW3pdPT09VGV8fE1lW3pdLmxpc3RlbmVyPT09VGUpe2VlPU1lW3pdLmxp''@;'; put 'put ''c3RlbmVyLE89ejticmVha31pZihPPDApcmV0dXJuIHRoaXM7MD09PU8/TWUuc2hpZnQoKTpmdW5jdGlvbihuZSx4KXtmb3IoO3grMTxuZS5sZW5ndGg7eCsrKW5lW3hdPW5lW3grMV07bmUucG9wKCl9KE1lLE8pLDE9PT1NZS5sZW5ndGgmJihoZVtJZV09TWVbMF0pLHZvaWQgMCE9PWhlLnJl''@;'; put 'put ''bW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoInJlbW92ZUxpc3RlbmVyIixJZSxlZXx8VGUpfXJldHVybiB0aGlzfSx0ZS5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKEllKXt2YXIgVGUsTWUsaGU7aWYodm9pZCAwPT09KE1lPXRoaXMuX2V2ZW50cykpcmV0dXJuIHRoaXM7''@;'; put 'put ''aWYodm9pZCAwPT09TWUucmVtb3ZlTGlzdGVuZXIpcmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoPyh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKTp2b2lkIDAhPT1NZVtJZV0mJigwPT0tLXRoaXMuX2V2ZW50c0NvdW50P3RoaXMuX2V2ZW50''@;'; put 'put ''cz1PYmplY3QuY3JlYXRlKG51bGwpOmRlbGV0ZSBNZVtJZV0pLHRoaXM7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpe3ZhciBPLHo9T2JqZWN0LmtleXMoTWUpO2ZvcihoZT0wO2hlPHoubGVuZ3RoOysraGUpInJlbW92ZUxpc3RlbmVyIiE9PShPPXpbaGVdKSYmdGhpcy5yZW1vdmVBbGxMaXN0''@;'; put 'put ''ZW5lcnMoTyk7cmV0dXJuIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCJyZW1vdmVMaXN0ZW5lciIpLHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTAsdGhpc31pZigiZnVuY3Rpb24iPT10eXBlb2YoVGU9TWVbSWVdKSl0aGlzLnJlbW92ZUxpc3Rl''@;'; put 'put ''bmVyKEllLFRlKTtlbHNlIGlmKHZvaWQgMCE9PVRlKWZvcihoZT1UZS5sZW5ndGgtMTtoZT49MDtoZS0tKXRoaXMucmVtb3ZlTGlzdGVuZXIoSWUsVGVbaGVdKTtyZXR1cm4gdGhpc30sdGUucHJvdG90eXBlLmxpc3RlbmVycz1mdW5jdGlvbihJZSl7cmV0dXJuIHZlKHRoaXMsSWUsITApfSx0''@;'; put 'put ''ZS5wcm90b3R5cGUucmF3TGlzdGVuZXJzPWZ1bmN0aW9uKEllKXtyZXR1cm4gdmUodGhpcyxJZSwhMSl9LHRlLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24oSWUsVGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBJZS5saXN0ZW5lckNvdW50P0llLmxpc3RlbmVyQ291bnQoVGUpOkFlLmNhbGwo''@;'; put 'put ''SWUsVGUpfSx0ZS5wcm90b3R5cGUubGlzdGVuZXJDb3VudD1BZSx0ZS5wcm90b3R5cGUuZXZlbnROYW1lcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ldmVudHNDb3VudD4wP3JlKHRoaXMuX2V2ZW50cyk6W119fSwzMDQ4OihVLFEsaik9Pnt2YXIgcmU9aig5NTA5KS5CdWZmZXIsYWU9aigy''@;'; put 'put ''MzE4KTtVLmV4cG9ydHM9ZnVuY3Rpb24oWSxXLE4sdGUpe2lmKHJlLmlzQnVmZmVyKFkpfHwoWT1yZS5mcm9tKFksImJpbmFyeSIpKSxXJiYocmUuaXNCdWZmZXIoVyl8fChXPXJlLmZyb20oVywiYmluYXJ5IikpLDghPT1XLmxlbmd0aCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNhbHQgc2hv''@;'; put 'put ''dWxkIGJlIEJ1ZmZlciB3aXRoIDggYnl0ZSBsZW5ndGgiKTtmb3IodmFyIEs9Ti84LEo9cmUuYWxsb2MoSyksc2U9cmUuYWxsb2ModGV8fDApLG9lPXJlLmFsbG9jKDApO0s+MHx8dGU+MDspe3ZhciBjZT1uZXcgYWU7Y2UudXBkYXRlKG9lKSxjZS51cGRhdGUoWSksVyYmY2UudXBkYXRlKFcp''@;'; put 'put ''LG9lPWNlLmRpZ2VzdCgpO3ZhciBkZT0wO2lmKEs+MCl7dmFyIHZlPUoubGVuZ3RoLUs7ZGU9TWF0aC5taW4oSyxvZS5sZW5ndGgpLG9lLmNvcHkoSix2ZSwwLGRlKSxLLT1kZX1pZihkZTxvZS5sZW5ndGgmJnRlPjApe3ZhciBBZT1zZS5sZW5ndGgtdGUsa2U9TWF0aC5taW4odGUsb2UubGVu''@;'; put 'put ''Z3RoLWRlKTtvZS5jb3B5KHNlLEFlLGRlLGRlK2tlKSx0ZS09a2V9fXJldHVybiBvZS5maWxsKDApLHtrZXk6SixpdjpzZX19fSw0MDI5OihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNTMyMCksYWU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxZPU9iamVjdC5wcm90b3R5cGUu''@;'; put 'put ''aGFzT3duUHJvcGVydHksVz1mdW5jdGlvbihLLEosc2Upe2Zvcih2YXIgb2U9MCxjZT1LLmxlbmd0aDtvZTxjZTtvZSsrKVkuY2FsbChLLG9lKSYmKG51bGw9PXNlP0ooS1tvZV0sb2UsSyk6Si5jYWxsKHNlLEtbb2VdLG9lLEspKX0sTj1mdW5jdGlvbihLLEosc2Upe2Zvcih2YXIgb2U9MCxj''@;'; put 'put ''ZT1LLmxlbmd0aDtvZTxjZTtvZSsrKW51bGw9PXNlP0ooSy5jaGFyQXQob2UpLG9lLEspOkouY2FsbChzZSxLLmNoYXJBdChvZSksb2UsSyl9LHRlPWZ1bmN0aW9uKEssSixzZSl7Zm9yKHZhciBvZSBpbiBLKVkuY2FsbChLLG9lKSYmKG51bGw9PXNlP0ooS1tvZV0sb2UsSyk6Si5jYWxsKHNl''@;'; put 'put ''LEtbb2VdLG9lLEspKX07VS5leHBvcnRzPWZ1bmN0aW9uKEssSixzZSl7aWYoIXJlKEopKXRocm93IG5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIG11c3QgYmUgYSBmdW5jdGlvbiIpO3ZhciBvZTthcmd1bWVudHMubGVuZ3RoPj0zJiYob2U9c2UpLCJbb2JqZWN0IEFycmF5XSI9PT1hZS5jYWxs''@;'; put 'put ''KEspP1coSyxKLG9lKToic3RyaW5nIj09dHlwZW9mIEs/TihLLEosb2UpOnRlKEssSixvZSl9fSw2MjMwOlU9PntVLmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiBzZWxmP3NlbGYuRm9ybURhdGE6d2luZG93LkZvcm1EYXRhfSw1MzAyOihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWoo''@;'; put 'put ''NDE1NSksYWU9aig1MTA4KTtjb25zdCBZPWooNzcpLFc9aigyNTIwKSxOPWooMTM4MSkubWtkaXJzU3luYyx0ZT1qKDMxOCkudXRpbWVzTWlsbGlzU3luYyxLPWooMjczMyk7ZnVuY3Rpb24gSihkZSx2ZSxBZSxrZSl7Y29uc3QgU2U9KGtlLmRlcmVmZXJlbmNlP1kuc3RhdFN5bmM6WS5sc3Rh''@;'; put 'put ''dFN5bmMpKHZlKTtpZihTZS5pc0RpcmVjdG9yeSgpKXJldHVybiBJZT1TZSxNZT12ZSxoZT1BZSxPPWtlLGRlP2NlKE1lLGhlLE8pOih6PUllLm1vZGUsZWU9TWUseD1PLFkubWtkaXJTeW5jKG5lPWhlKSxjZShlZSxuZSx4KSxvZShuZSx6KSk7dmFyIEllLE1lLGhlLE8seixlZSxuZSx4O2lm''@;'; put 'put ''KFNlLmlzRmlsZSgpfHxTZS5pc0NoYXJhY3RlckRldmljZSgpfHxTZS5pc0Jsb2NrRGV2aWNlKCkpcmV0dXJuIGZ1bmN0aW9uKEllLFRlLE1lLGhlLE8pe3JldHVybiBUZT9mdW5jdGlvbih6LGVlLG5lLHgpe2lmKHgub3ZlcndyaXRlKXJldHVybiBZLnVubGlua1N5bmMobmUpLHNlKHosZWUs''@;'; put 'put ''bmUseCk7aWYoeC5lcnJvck9uRXhpc3QpdGhyb3cgbmV3IEVycm9yKGAnJHtuZX0nIGFscmVhZHkgZXhpc3RzYCl9KEllLE1lLGhlLE8pOnNlKEllLE1lLGhlLE8pfShTZSxkZSx2ZSxBZSxrZSk7aWYoU2UuaXNTeW1ib2xpY0xpbmsoKSlyZXR1cm4gZnVuY3Rpb24oSWUsVGUsTWUsaGUpe2xl''@;'; put 'put ''dCBPPVkucmVhZGxpbmtTeW5jKFRlKTtpZihoZS5kZXJlZmVyZW5jZSYmKE89Vy5yZXNvbHZlKHJlLmN3ZCgpLE8pKSxJZSl7bGV0IHo7dHJ5e3o9WS5yZWFkbGlua1N5bmMoTWUpfWNhdGNoKGVlKXtpZigiRUlOVkFMIj09PWVlLmNvZGV8fCJVTktOT1dOIj09PWVlLmNvZGUpcmV0dXJuIFku''@;'; put 'put ''c3ltbGlua1N5bmMoTyxNZSk7dGhyb3cgZWV9aWYoaGUuZGVyZWZlcmVuY2UmJih6PVcucmVzb2x2ZShyZS5jd2QoKSx6KSksSy5pc1NyY1N1YmRpcihPLHopKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNvcHkgJyR7T30nIHRvIGEgc3ViZGlyZWN0b3J5IG9mIGl0c2VsZiwgJyR7en0nLmAp''@;'; put 'put ''O2lmKFkuc3RhdFN5bmMoTWUpLmlzRGlyZWN0b3J5KCkmJksuaXNTcmNTdWJkaXIoeixPKSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBvdmVyd3JpdGUgJyR7en0nIHdpdGggJyR7T30nLmApO3JldHVybiBmdW5jdGlvbihlZSxuZSl7cmV0dXJuIFkudW5saW5rU3luYyhuZSksWS5zeW1saW5r''@;'; put 'put ''U3luYyhlZSxuZSl9KE8sTWUpfXJldHVybiBZLnN5bWxpbmtTeW5jKE8sTWUpfShkZSx2ZSxBZSxrZSk7dGhyb3cgU2UuaXNTb2NrZXQoKT9uZXcgRXJyb3IoYENhbm5vdCBjb3B5IGEgc29ja2V0IGZpbGU6ICR7dmV9YCk6U2UuaXNGSUZPKCk/bmV3IEVycm9yKGBDYW5ub3QgY29weSBhIEZJ''@;'; put 'put ''Rk8gcGlwZTogJHt2ZX1gKTpuZXcgRXJyb3IoYFVua25vd24gZmlsZTogJHt2ZX1gKX1mdW5jdGlvbiBzZShkZSx2ZSxBZSxrZSl7cmV0dXJuIFkuY29weUZpbGVTeW5jKHZlLEFlKSxrZS5wcmVzZXJ2ZVRpbWVzdGFtcHMmJihJZT12ZSxUZT1BZSwwPT0oMTI4JihTZT1kZS5tb2RlKSkmJm9l''@;'; put 'put ''KFRlLDEyOHxTZSksZnVuY3Rpb24oTWUsaGUpe2NvbnN0IE89WS5zdGF0U3luYyhNZSk7dGUoaGUsTy5hdGltZSxPLm10aW1lKX0oSWUsVGUpKSxvZShBZSxkZS5tb2RlKTt2YXIgU2UsSWUsVGV9ZnVuY3Rpb24gb2UoZGUsdmUpe3JldHVybiBZLmNobW9kU3luYyhkZSx2ZSl9ZnVuY3Rpb24g''@;'; put 'put ''Y2UoZGUsdmUsQWUpe1kucmVhZGRpclN5bmMoZGUpLmZvckVhY2goa2U9PmZ1bmN0aW9uKFNlLEllLFRlLE1lKXtjb25zdCBoZT1XLmpvaW4oSWUsU2UpLE89Vy5qb2luKFRlLFNlKSx7ZGVzdFN0YXQ6en09Sy5jaGVja1BhdGhzU3luYyhoZSxPLCJjb3B5IixNZSk7cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''KGVlLG5lLHgsUCl7aWYoIVAuZmlsdGVyfHxQLmZpbHRlcihuZSx4KSlyZXR1cm4gSihlZSxuZSx4LFApfSh6LGhlLE8sTWUpfShrZSxkZSx2ZSxBZSkpfVUuZXhwb3J0cz1mdW5jdGlvbihkZSx2ZSxBZSl7ImZ1bmN0aW9uIj09dHlwZW9mIEFlJiYoQWU9e2ZpbHRlcjpBZX0pLChBZT1BZXx8''@;'; put 'put ''e30pLmNsb2JiZXI9ISgiY2xvYmJlciJpbiBBZSl8fCEhQWUuY2xvYmJlcixBZS5vdmVyd3JpdGU9Im92ZXJ3cml0ZSJpbiBBZT8hIUFlLm92ZXJ3cml0ZTpBZS5jbG9iYmVyLEFlLnByZXNlcnZlVGltZXN0YW1wcyYmImlhMzIiPT09cmUuYXJjaCYmYWUud2FybigiZnMtZXh0cmE6IFVzaW5n''@;'; put 'put ''IHRoZSBwcmVzZXJ2ZVRpbWVzdGFtcHMgb3B0aW9uIGluIDMyLWJpdCBub2RlIGlzIG5vdCByZWNvbW1lbmRlZDtcblxuICAgIHNlZSBodHRwczovL2dpdGh1Yi5jb20vanByaWNoYXJkc29uL25vZGUtZnMtZXh0cmEvaXNzdWVzLzI2OSIpO2NvbnN0e3NyY1N0YXQ6a2UsZGVzdFN0YXQ6U2V9''@;'; put 'put ''PUsuY2hlY2tQYXRoc1N5bmMoZGUsdmUsImNvcHkiLEFlKTtyZXR1cm4gSy5jaGVja1BhcmVudFBhdGhzU3luYyhkZSxrZSx2ZSwiY29weSIpLGZ1bmN0aW9uKEllLFRlLE1lLGhlKXtpZihoZS5maWx0ZXImJiFoZS5maWx0ZXIoVGUsTWUpKXJldHVybjtjb25zdCBPPVcuZGlybmFtZShNZSk7''@;'; put 'put ''cmV0dXJuIFkuZXhpc3RzU3luYyhPKXx8TihPKSxKKEllLFRlLE1lLGhlKX0oU2UsZGUsdmUsQWUpfX0sODY5MDooVSxRLGopPT57InVzZSBzdHJpY3QiO1UuZXhwb3J0cz17Y29weVN5bmM6aig1MzAyKX19LDcxODk6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig0MTU1KSxhZT1q''@;'; put 'put ''KDUxMDgpO2NvbnN0IFk9aig3NyksVz1qKDI1MjApLE49aigxMzgxKS5ta2RpcnMsdGU9aig5MjU3KS5wYXRoRXhpc3RzLEs9aigzMTgpLnV0aW1lc01pbGxpcyxKPWooMjczMyk7ZnVuY3Rpb24gc2UoVGUsTWUsaGUsTyx6KXtjb25zdCBlZT1XLmRpcm5hbWUoaGUpO3RlKGVlLChuZSx4KT0+''@;'; put 'put ''bmU/eihuZSk6eD9jZShUZSxNZSxoZSxPLHopOnZvaWQgTihlZSxQPT5QP3ooUCk6Y2UoVGUsTWUsaGUsTyx6KSkpfWZ1bmN0aW9uIG9lKFRlLE1lLGhlLE8seixlZSl7UHJvbWlzZS5yZXNvbHZlKHouZmlsdGVyKGhlLE8pKS50aGVuKG5lPT5uZT9UZShNZSxoZSxPLHosZWUpOmVlKCksbmU9''@;'; put 'put ''PmVlKG5lKSl9ZnVuY3Rpb24gY2UoVGUsTWUsaGUsTyx6KXsoTy5kZXJlZmVyZW5jZT9ZLnN0YXQ6WS5sc3RhdCkoTWUsKGVlLG5lKT0+e3JldHVybiBlZT96KGVlKTpuZS5pc0RpcmVjdG9yeSgpPyh4PW5lLFY9TWUsVD1oZSxTPU8sRj16LFRlP2tlKFYsVCxTLEYpOih5ZT14Lm1vZGUsQ2U9''@;'; put 'put ''VixQZT1TLFFlPUYsdm9pZCBZLm1rZGlyKERlPVQsJGU9PntpZigkZSlyZXR1cm4gUWUoJGUpO2tlKENlLERlLFBlLGd0PT5ndD9RZShndCk6QWUoRGUseWUsUWUpKX0pKSk6bmUuaXNGaWxlKCl8fG5lLmlzQ2hhcmFjdGVyRGV2aWNlKCl8fG5lLmlzQmxvY2tEZXZpY2UoKT9mdW5jdGlvbih4''@;'; put 'put ''LFAsVixULFMsRil7cmV0dXJuIFA/ZnVuY3Rpb24oeWUsQ2UsRGUsUGUsUWUpe2lmKCFQZS5vdmVyd3JpdGUpcmV0dXJuIFBlLmVycm9yT25FeGlzdD9RZShuZXcgRXJyb3IoYCcke0RlfScgYWxyZWFkeSBleGlzdHNgKSk6UWUoKTtZLnVubGluayhEZSwkZT0+JGU/UWUoJGUpOmRlKHllLENl''@;'; put 'put ''LERlLFBlLFFlKSl9KHgsVixULFMsRik6ZGUoeCxWLFQsUyxGKX0obmUsVGUsTWUsaGUsTyx6KTpuZS5pc1N5bWJvbGljTGluaygpP2Z1bmN0aW9uIEllKFRlLE1lLGhlLE8seil7WS5yZWFkbGluayhNZSwoZWUsbmUpPT5lZT96KGVlKTooTy5kZXJlZmVyZW5jZSYmKG5lPVcucmVzb2x2ZShy''@;'; put 'put ''ZS5jd2QoKSxuZSkpLFRlP3ZvaWQgWS5yZWFkbGluayhoZSwoeCxQKT0+e3JldHVybiB4PyJFSU5WQUwiPT09eC5jb2RlfHwiVU5LTk9XTiI9PT14LmNvZGU/WS5zeW1saW5rKG5lLGhlLHopOnooeCk6KE8uZGVyZWZlcmVuY2UmJihQPVcucmVzb2x2ZShyZS5jd2QoKSxQKSksSi5pc1NyY1N1''@;'; put 'put ''YmRpcihuZSxQKT96KG5ldyBFcnJvcihgQ2Fubm90IGNvcHkgJyR7bmV9JyB0byBhIHN1YmRpcmVjdG9yeSBvZiBpdHNlbGYsICcke1B9Jy5gKSk6VGUuaXNEaXJlY3RvcnkoKSYmSi5pc1NyY1N1YmRpcihQLG5lKT96KG5ldyBFcnJvcihgQ2Fubm90IG92ZXJ3cml0ZSAnJHtQfScgd2l0aCAn''@;'; put 'put ''JHtuZX0nLmApKTooVj1uZSxTPXosdm9pZCBZLnVubGluayhUPWhlLEY9PkY/UyhGKTpZLnN5bWxpbmsoVixULFMpKSkpO3ZhciBWLFQsU30pOlkuc3ltbGluayhuZSxoZSx6KSkpfShUZSxNZSxoZSxPLHopOm5lLmlzU29ja2V0KCk/eihuZXcgRXJyb3IoYENhbm5vdCBjb3B5IGEgc29ja2V0''@;'; put 'put ''IGZpbGU6ICR7TWV9YCkpOm5lLmlzRklGTygpP3oobmV3IEVycm9yKGBDYW5ub3QgY29weSBhIEZJRk8gcGlwZTogJHtNZX1gKSk6eihuZXcgRXJyb3IoYFVua25vd24gZmlsZTogJHtNZX1gKSk7dmFyIHgsVixULFMsRix5ZSxDZSxEZSxQZSxRZX0pfWZ1bmN0aW9uIGRlKFRlLE1lLGhlLE8s''@;'; put 'put ''eil7WS5jb3B5RmlsZShNZSxoZSxlZT0+e3JldHVybiBlZT96KGVlKTpPLnByZXNlcnZlVGltZXN0YW1wcz8oeD1NZSxQPWhlLFY9eiwwPT0oMTI4JihuZT1UZS5tb2RlKSk/QWUoUCwxMjh8bmUsVD0+VD9WKFQpOnZlKG5lLHgsUCxWKSk6dmUobmUseCxQLFYpKTpBZShoZSxUZS5tb2RlLHop''@;'; put 'put ''O3ZhciBuZSx4LFAsVn0pfWZ1bmN0aW9uIHZlKFRlLE1lLGhlLE8pe3ZhciBlZSxuZTtlZT1oZSxuZT16PT56P08oeik6QWUoaGUsVGUsTyksWS5zdGF0KE1lLCh4LFApPT54P25lKHgpOksoZWUsUC5hdGltZSxQLm10aW1lLG5lKSl9ZnVuY3Rpb24gQWUoVGUsTWUsaGUpe3JldHVybiBZLmNo''@;'; put 'put ''bW9kKFRlLE1lLGhlKX1mdW5jdGlvbiBrZShUZSxNZSxoZSxPKXtZLnJlYWRkaXIoVGUsKHosZWUpPT56P08oeik6U2UoZWUsVGUsTWUsaGUsTykpfWZ1bmN0aW9uIFNlKFRlLE1lLGhlLE8seil7Y29uc3QgZWU9VGUucG9wKCk7cmV0dXJuIGVlP2Z1bmN0aW9uKG5lLHgsUCxWLFQsUyl7Y29u''@;'; put 'put ''c3QgRj1XLmpvaW4oUCx4KSx5ZT1XLmpvaW4oVix4KTtKLmNoZWNrUGF0aHMoRix5ZSwiY29weSIsVCwoQ2UsRGUpPT57aWYoQ2UpcmV0dXJuIFMoQ2UpO2NvbnN0e2Rlc3RTdGF0OlBlfT1EZTt2YXIgUWUsJGUsZ3Qsd3QsbXQ7UWU9UGUsJGU9RixndD15ZSxtdD1RZT0+UWU/UyhRZSk6U2Uo''@;'; put 'put ''bmUsUCxWLFQsUyksKHd0PVQpLmZpbHRlcj9vZShjZSxRZSwkZSxndCx3dCxtdCk6Y2UoUWUsJGUsZ3Qsd3QsbXQpfSl9KFRlLGVlLE1lLGhlLE8seik6eigpfVUuZXhwb3J0cz1mdW5jdGlvbihUZSxNZSxoZSxPKXsiZnVuY3Rpb24iIT10eXBlb2YgaGV8fE8/ImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IGhlJiYoaGU9e2ZpbHRlcjpoZX0pOihPPWhlLGhlPXt9KSxPPU98fGZ1bmN0aW9uKCl7fSwoaGU9aGV8fHt9KS5jbG9iYmVyPSEoImNsb2JiZXIiaW4gaGUpfHwhIWhlLmNsb2JiZXIsaGUub3ZlcndyaXRlPSJvdmVyd3JpdGUiaW4gaGU/ISFoZS5vdmVyd3JpdGU6aGUuY2xvYmJlcixoZS5w''@;'; put 'put ''cmVzZXJ2ZVRpbWVzdGFtcHMmJiJpYTMyIj09PXJlLmFyY2gmJmFlLndhcm4oImZzLWV4dHJhOiBVc2luZyB0aGUgcHJlc2VydmVUaW1lc3RhbXBzIG9wdGlvbiBpbiAzMi1iaXQgbm9kZSBpcyBub3QgcmVjb21tZW5kZWQ7XG5cbiAgICBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2pwcmljaGFy''@;'; put 'put ''ZHNvbi9ub2RlLWZzLWV4dHJhL2lzc3Vlcy8yNjkiKSxKLmNoZWNrUGF0aHMoVGUsTWUsImNvcHkiLGhlLCh6LGVlKT0+e2lmKHopcmV0dXJuIE8oeik7Y29uc3R7c3JjU3RhdDpuZSxkZXN0U3RhdDp4fT1lZTtKLmNoZWNrUGFyZW50UGF0aHMoVGUsbmUsTWUsImNvcHkiLFA9PlA/TyhQKTpo''@;'; put 'put ''ZS5maWx0ZXI/b2Uoc2UseCxUZSxNZSxoZSxPKTpzZSh4LFRlLE1lLGhlLE8pKX0pfX0sNjQ2NDooVSxRLGopPT57InVzZSBzdHJpY3QiO2NvbnN0IHJlPWooODk4MSkuZnJvbUNhbGxiYWNrO1UuZXhwb3J0cz17Y29weTpyZShqKDcxODkpKX19LDU1OTA6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0''@;'; put 'put ''Ijtjb25zdCByZT1qKDg5ODEpLmZyb21Qcm9taXNlLGFlPWooNzc0OSksWT1qKDI1MjApLFc9aigxMzgxKSxOPWooNDU0MiksdGU9cmUoZnVuY3Rpb24oKXt2YXIgSj1tZShmdW5jdGlvbiooc2Upe2xldCBvZTt0cnl7b2U9eWllbGQgYWUucmVhZGRpcihzZSl9Y2F0Y2goY2Upe3JldHVybiBX''@;'; put 'put ''Lm1rZGlycyhzZSl9cmV0dXJuIFByb21pc2UuYWxsKG9lLm1hcChjZT0+Ti5yZW1vdmUoWS5qb2luKHNlLGNlKSkpKX0pO3JldHVybiBmdW5jdGlvbihzZSl7cmV0dXJuIEouYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSk7ZnVuY3Rpb24gSyhKKXtsZXQgc2U7dHJ5e3NlPWFlLnJlYWRkaXJT''@;'; put 'put ''eW5jKEopfWNhdGNoKG9lKXtyZXR1cm4gVy5ta2RpcnNTeW5jKEopfXNlLmZvckVhY2gob2U9PntvZT1ZLmpvaW4oSixvZSksTi5yZW1vdmVTeW5jKG9lKX0pfVUuZXhwb3J0cz17ZW1wdHlEaXJTeW5jOkssZW1wdHlkaXJTeW5jOkssZW1wdHlEaXI6dGUsZW1wdHlkaXI6dGV9fSw2NTMwOihV''@;'; put 'put ''LFEsaik9PnsidXNlIHN0cmljdCI7Y29uc3QgcmU9aig4OTgxKS5mcm9tQ2FsbGJhY2ssYWU9aigyNTIwKSxZPWooNzcpLFc9aigxMzgxKTtVLmV4cG9ydHM9e2NyZWF0ZUZpbGU6cmUoZnVuY3Rpb24oTix0ZSl7ZnVuY3Rpb24gSygpe1kud3JpdGVGaWxlKE4sIiIsSj0+e2lmKEopcmV0dXJu''@;'; put 'put ''IHRlKEopO3RlKCl9KX1ZLnN0YXQoTiwoSixzZSk9PntpZighSiYmc2UuaXNGaWxlKCkpcmV0dXJuIHRlKCk7Y29uc3Qgb2U9YWUuZGlybmFtZShOKTtZLnN0YXQob2UsKGNlLGRlKT0+e2lmKGNlKXJldHVybiJFTk9FTlQiPT09Y2UuY29kZT9XLm1rZGlycyhvZSx2ZT0+e2lmKHZlKXJldHVy''@;'; put 'put ''biB0ZSh2ZSk7SygpfSk6dGUoY2UpO2RlLmlzRGlyZWN0b3J5KCk/SygpOlkucmVhZGRpcihvZSx2ZT0+e2lmKHZlKXJldHVybiB0ZSh2ZSl9KX0pfSl9KSxjcmVhdGVGaWxlU3luYzpmdW5jdGlvbihOKXtsZXQgdGU7dHJ5e3RlPVkuc3RhdFN5bmMoTil9Y2F0Y2goSil7fWlmKHRlJiZ0ZS5p''@;'; put 'put ''c0ZpbGUoKSlyZXR1cm47Y29uc3QgSz1hZS5kaXJuYW1lKE4pO3RyeXtZLnN0YXRTeW5jKEspLmlzRGlyZWN0b3J5KCl8fFkucmVhZGRpclN5bmMoSyl9Y2F0Y2goSil7aWYoIUp8fCJFTk9FTlQiIT09Si5jb2RlKXRocm93IEo7Vy5ta2RpcnNTeW5jKEspfVkud3JpdGVGaWxlU3luYyhOLCIi''@;'; put 'put ''KX19fSwxNzIwOihVLFEsaik9PnsidXNlIHN0cmljdCI7Y29uc3QgcmU9aig2NTMwKSxhZT1qKDQxNDcpLFk9aigzNjM1KTtVLmV4cG9ydHM9e2NyZWF0ZUZpbGU6cmUuY3JlYXRlRmlsZSxjcmVhdGVGaWxlU3luYzpyZS5jcmVhdGVGaWxlU3luYyxlbnN1cmVGaWxlOnJlLmNyZWF0ZUZpbGUs''@;'; put 'put ''ZW5zdXJlRmlsZVN5bmM6cmUuY3JlYXRlRmlsZVN5bmMsY3JlYXRlTGluazphZS5jcmVhdGVMaW5rLGNyZWF0ZUxpbmtTeW5jOmFlLmNyZWF0ZUxpbmtTeW5jLGVuc3VyZUxpbms6YWUuY3JlYXRlTGluayxlbnN1cmVMaW5rU3luYzphZS5jcmVhdGVMaW5rU3luYyxjcmVhdGVTeW1saW5rOlku''@;'; put 'put ''Y3JlYXRlU3ltbGluayxjcmVhdGVTeW1saW5rU3luYzpZLmNyZWF0ZVN5bWxpbmtTeW5jLGVuc3VyZVN5bWxpbms6WS5jcmVhdGVTeW1saW5rLGVuc3VyZVN5bWxpbmtTeW5jOlkuY3JlYXRlU3ltbGlua1N5bmN9fSw0MTQ3OihVLFEsaik9PnsidXNlIHN0cmljdCI7Y29uc3QgcmU9aig4OTgx''@;'; put 'put ''KS5mcm9tQ2FsbGJhY2ssYWU9aigyNTIwKSxZPWooNzcpLFc9aigxMzgxKSxOPWooOTI1NykucGF0aEV4aXN0cyx7YXJlSWRlbnRpY2FsOnRlfT1qKDI3MzMpO1UuZXhwb3J0cz17Y3JlYXRlTGluazpyZShmdW5jdGlvbihLLEosc2Upe2Z1bmN0aW9uIG9lKGNlLGRlKXtZLmxpbmsoY2UsZGUs''@;'; put 'put ''dmU9PntpZih2ZSlyZXR1cm4gc2UodmUpO3NlKG51bGwpfSl9WS5sc3RhdChKLChjZSxkZSk9PntZLmxzdGF0KEssKHZlLEFlKT0+e2lmKHZlKXJldHVybiB2ZS5tZXNzYWdlPXZlLm1lc3NhZ2UucmVwbGFjZSgibHN0YXQiLCJlbnN1cmVMaW5rIiksc2UodmUpO2lmKGRlJiZ0ZShBZSxkZSkp''@;'; put 'put ''cmV0dXJuIHNlKG51bGwpO2NvbnN0IGtlPWFlLmRpcm5hbWUoSik7TihrZSwoU2UsSWUpPT5TZT9zZShTZSk6SWU/b2UoSyxKKTp2b2lkIFcubWtkaXJzKGtlLFRlPT57aWYoVGUpcmV0dXJuIHNlKFRlKTtvZShLLEopfSkpfSl9KX0pLGNyZWF0ZUxpbmtTeW5jOmZ1bmN0aW9uKEssSil7bGV0''@;'; put 'put ''IHNlO3RyeXtzZT1ZLmxzdGF0U3luYyhKKX1jYXRjaChjZSl7fXRyeXtjb25zdCBjZT1ZLmxzdGF0U3luYyhLKTtpZihzZSYmdGUoY2Usc2UpKXJldHVybn1jYXRjaChjZSl7dGhyb3cgY2UubWVzc2FnZT1jZS5tZXNzYWdlLnJlcGxhY2UoImxzdGF0IiwiZW5zdXJlTGluayIpLGNlfWNvbnN0''@;'; put 'put ''IG9lPWFlLmRpcm5hbWUoSik7cmV0dXJuIFkuZXhpc3RzU3luYyhvZSl8fFcubWtkaXJzU3luYyhvZSksWS5saW5rU3luYyhLLEopfX19LDYwNzI6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCByZT1qKDI1MjApLGFlPWooNzcpLFk9aig5MjU3KS5wYXRoRXhpc3RzO1UuZXhwb3J0cz17''@;'; put 'put ''c3ltbGlua1BhdGhzOmZ1bmN0aW9uKFcsTix0ZSl7aWYocmUuaXNBYnNvbHV0ZShXKSlyZXR1cm4gYWUubHN0YXQoVyxLPT5LPyhLLm1lc3NhZ2U9Sy5tZXNzYWdlLnJlcGxhY2UoImxzdGF0IiwiZW5zdXJlU3ltbGluayIpLHRlKEspKTp0ZShudWxsLHt0b0N3ZDpXLHRvRHN0Old9KSk7e2Nv''@;'; put 'put ''bnN0IEs9cmUuZGlybmFtZShOKSxKPXJlLmpvaW4oSyxXKTtyZXR1cm4gWShKLChzZSxvZSk9PnNlP3RlKHNlKTpvZT90ZShudWxsLHt0b0N3ZDpKLHRvRHN0Old9KTphZS5sc3RhdChXLGNlPT5jZT8oY2UubWVzc2FnZT1jZS5tZXNzYWdlLnJlcGxhY2UoImxzdGF0IiwiZW5zdXJlU3ltbGlu''@;'; put 'put ''ayIpLHRlKGNlKSk6dGUobnVsbCx7dG9Dd2Q6Vyx0b0RzdDpyZS5yZWxhdGl2ZShLLFcpfSkpKX19LHN5bWxpbmtQYXRoc1N5bmM6ZnVuY3Rpb24oVyxOKXtsZXQgdGU7aWYocmUuaXNBYnNvbHV0ZShXKSl7aWYodGU9YWUuZXhpc3RzU3luYyhXKSwhdGUpdGhyb3cgbmV3IEVycm9yKCJhYnNv''@;'; put 'put ''bHV0ZSBzcmNwYXRoIGRvZXMgbm90IGV4aXN0Iik7cmV0dXJue3RvQ3dkOlcsdG9Ec3Q6V319e2NvbnN0IEs9cmUuZGlybmFtZShOKSxKPXJlLmpvaW4oSyxXKTtpZih0ZT1hZS5leGlzdHNTeW5jKEopLHRlKXJldHVybnt0b0N3ZDpKLHRvRHN0Old9O2lmKHRlPWFlLmV4aXN0c1N5bmMoVyks''@;'; put 'put ''IXRlKXRocm93IG5ldyBFcnJvcigicmVsYXRpdmUgc3JjcGF0aCBkb2VzIG5vdCBleGlzdCIpO3JldHVybnt0b0N3ZDpXLHRvRHN0OnJlLnJlbGF0aXZlKEssVyl9fX19fSw5MjU5OihVLFEsaik9PnsidXNlIHN0cmljdCI7Y29uc3QgcmU9aig3Nyk7VS5leHBvcnRzPXtzeW1saW5rVHlwZTpm''@;'; put 'put ''dW5jdGlvbihhZSxZLFcpe2lmKFc9ImZ1bmN0aW9uIj09dHlwZW9mIFk/WTpXLFk9ImZ1bmN0aW9uIiE9dHlwZW9mIFkmJlkpcmV0dXJuIFcobnVsbCxZKTtyZS5sc3RhdChhZSwoTix0ZSk9PntpZihOKXJldHVybiBXKG51bGwsImZpbGUiKTtZPXRlJiZ0ZS5pc0RpcmVjdG9yeSgpPyJkaXIi''@;'; put 'put ''OiJmaWxlIixXKG51bGwsWSl9KX0sc3ltbGlua1R5cGVTeW5jOmZ1bmN0aW9uKGFlLFkpe2xldCBXO2lmKFkpcmV0dXJuIFk7dHJ5e1c9cmUubHN0YXRTeW5jKGFlKX1jYXRjaChOKXtyZXR1cm4iZmlsZSJ9cmV0dXJuIFcmJlcuaXNEaXJlY3RvcnkoKT8iZGlyIjoiZmlsZSJ9fX0sMzYzNToo''@;'; put 'put ''VSxRLGopPT57InVzZSBzdHJpY3QiO2NvbnN0IHJlPWooODk4MSkuZnJvbUNhbGxiYWNrLGFlPWooMjUyMCksWT1qKDc3NDkpLFc9aigxMzgxKSxOPVcubWtkaXJzLHRlPVcubWtkaXJzU3luYyxLPWooNjA3MiksSj1LLnN5bWxpbmtQYXRocyxzZT1LLnN5bWxpbmtQYXRoc1N5bmMsb2U9aig5''@;'; put 'put ''MjU5KSxjZT1vZS5zeW1saW5rVHlwZSxkZT1vZS5zeW1saW5rVHlwZVN5bmMsdmU9aig5MjU3KS5wYXRoRXhpc3RzLHthcmVJZGVudGljYWw6QWV9PWooMjczMyk7ZnVuY3Rpb24ga2UoU2UsSWUsVGUsTWUpe0ooU2UsSWUsKGhlLE8pPT57aWYoaGUpcmV0dXJuIE1lKGhlKTtTZT1PLnRvRHN0''@;'; put 'put ''LGNlKE8udG9Dd2QsVGUsKHosZWUpPT57aWYoeilyZXR1cm4gTWUoeik7Y29uc3QgbmU9YWUuZGlybmFtZShJZSk7dmUobmUsKHgsUCk9Png/TWUoeCk6UD9ZLnN5bWxpbmsoU2UsSWUsZWUsTWUpOnZvaWQgTihuZSxWPT57aWYoVilyZXR1cm4gTWUoVik7WS5zeW1saW5rKFNlLEllLGVlLE1l''@;'; put 'put ''KX0pKX0pfSl9VS5leHBvcnRzPXtjcmVhdGVTeW1saW5rOnJlKGZ1bmN0aW9uKFNlLEllLFRlLE1lKXtNZT0iZnVuY3Rpb24iPT10eXBlb2YgVGU/VGU6TWUsVGU9ImZ1bmN0aW9uIiE9dHlwZW9mIFRlJiZUZSxZLmxzdGF0KEllLChoZSxPKT0+eyFoZSYmTy5pc1N5bWJvbGljTGluaygpP1By''@;'; put 'put ''b21pc2UuYWxsKFtZLnN0YXQoU2UpLFkuc3RhdChJZSldKS50aGVuKChbeixlZV0pPT57aWYoQWUoeixlZSkpcmV0dXJuIE1lKG51bGwpO2tlKFNlLEllLFRlLE1lKX0pOmtlKFNlLEllLFRlLE1lKX0pfSksY3JlYXRlU3ltbGlua1N5bmM6ZnVuY3Rpb24oU2UsSWUsVGUpe2xldCBNZTt0cnl7''@;'; put 'put ''TWU9WS5sc3RhdFN5bmMoSWUpfWNhdGNoKHope31pZihNZSYmTWUuaXNTeW1ib2xpY0xpbmsoKSl7Y29uc3Qgej1ZLnN0YXRTeW5jKFNlKSxlZT1ZLnN0YXRTeW5jKEllKTtpZihBZSh6LGVlKSlyZXR1cm59Y29uc3QgaGU9c2UoU2UsSWUpO1NlPWhlLnRvRHN0LFRlPWRlKGhlLnRvQ3dkLFRl''@;'; put 'put ''KTtjb25zdCBPPWFlLmRpcm5hbWUoSWUpO3JldHVybiBZLmV4aXN0c1N5bmMoTyl8fHRlKE8pLFkuc3ltbGlua1N5bmMoU2UsSWUsVGUpfX19LDc3NDk6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCByZT1qKDg5ODEpLmZyb21DYWxsYmFjayxhZT1qKDc3KSxZPVsiYWNjZXNzIiwiYXBw''@;'; put 'put ''ZW5kRmlsZSIsImNobW9kIiwiY2hvd24iLCJjbG9zZSIsImNvcHlGaWxlIiwiZmNobW9kIiwiZmNob3duIiwiZmRhdGFzeW5jIiwiZnN0YXQiLCJmc3luYyIsImZ0cnVuY2F0ZSIsImZ1dGltZXMiLCJsY2htb2QiLCJsY2hvd24iLCJsaW5rIiwibHN0YXQiLCJta2RpciIsIm1rZHRlbXAiLCJv''@;'; put 'put ''cGVuIiwib3BlbmRpciIsInJlYWRkaXIiLCJyZWFkRmlsZSIsInJlYWRsaW5rIiwicmVhbHBhdGgiLCJyZW5hbWUiLCJybSIsInJtZGlyIiwic3RhdCIsInN5bWxpbmsiLCJ0cnVuY2F0ZSIsInVubGluayIsInV0aW1lcyIsIndyaXRlRmlsZSJdLmZpbHRlcihXPT4iZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YgYWVbV10pO09iamVjdC5hc3NpZ24oUSxhZSksWS5mb3JFYWNoKFc9PntRW1ddPXJlKGFlW1ddKX0pLFEucmVhbHBhdGgubmF0aXZlPXJlKGFlLnJlYWxwYXRoLm5hdGl2ZSksUS5leGlzdHM9ZnVuY3Rpb24oVyxOKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgTj9hZS5leGlzdHMoVyxO''@;'; put 'put ''KTpuZXcgUHJvbWlzZSh0ZT0+YWUuZXhpc3RzKFcsdGUpKX0sUS5yZWFkPWZ1bmN0aW9uKFcsTix0ZSxLLEosc2Upe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBzZT9hZS5yZWFkKFcsTix0ZSxLLEosc2UpOm5ldyBQcm9taXNlKChvZSxjZSk9PnthZS5yZWFkKFcsTix0ZSxLLEosKGRlLHZl''@;'; put 'put ''LEFlKT0+e2lmKGRlKXJldHVybiBjZShkZSk7b2Uoe2J5dGVzUmVhZDp2ZSxidWZmZXI6QWV9KX0pfSl9LFEud3JpdGU9ZnVuY3Rpb24oVyxOLC4uLnRlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGVbdGUubGVuZ3RoLTFdP2FlLndyaXRlKFcsTiwuLi50ZSk6bmV3IFByb21pc2UoKEss''@;'; put 'put ''Sik9PnthZS53cml0ZShXLE4sLi4udGUsKHNlLG9lLGNlKT0+e2lmKHNlKXJldHVybiBKKHNlKTtLKHtieXRlc1dyaXR0ZW46b2UsYnVmZmVyOmNlfSl9KX0pfSwiZnVuY3Rpb24iPT10eXBlb2YgYWUud3JpdGV2JiYoUS53cml0ZXY9ZnVuY3Rpb24oVyxOLC4uLnRlKXtyZXR1cm4iZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgdGVbdGUubGVuZ3RoLTFdP2FlLndyaXRldihXLE4sLi4udGUpOm5ldyBQcm9taXNlKChLLEopPT57YWUud3JpdGV2KFcsTiwuLi50ZSwoc2Usb2UsY2UpPT57aWYoc2UpcmV0dXJuIEooc2UpO0soe2J5dGVzV3JpdHRlbjpvZSxidWZmZXJzOmNlfSl9KX0pfSl9LDU2NzQ6''@;'; put 'put ''KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0IjtVLmV4cG9ydHM9bXMobXMobXMobXMobXMobXMobXMobXMobXMobXMobXMobXMoe30saig3NzQ5KSksaig4NjkwKSksaig2NDY0KSksaig1NTkwKSksaigxNzIwKSksaig2NTczKSksaigxMzgxKSksaig0MDI2KSksaig1MzApKSxqKDEzMTUpKSxqKDky''@;'; put 'put ''NTcpKSxqKDQ1NDIpKX0sNjU3MzooVSxRLGopPT57InVzZSBzdHJpY3QiO2NvbnN0IHJlPWooODk4MSkuZnJvbVByb21pc2UsYWU9aig3MTgzKTthZS5vdXRwdXRKc29uPXJlKGooMzUwOCkpLGFlLm91dHB1dEpzb25TeW5jPWooOTU3OCksYWUub3V0cHV0SlNPTj1hZS5vdXRwdXRKc29uLGFl''@;'; put 'put ''Lm91dHB1dEpTT05TeW5jPWFlLm91dHB1dEpzb25TeW5jLGFlLndyaXRlSlNPTj1hZS53cml0ZUpzb24sYWUud3JpdGVKU09OU3luYz1hZS53cml0ZUpzb25TeW5jLGFlLnJlYWRKU09OPWFlLnJlYWRKc29uLGFlLnJlYWRKU09OU3luYz1hZS5yZWFkSnNvblN5bmMsVS5leHBvcnRzPWFlfSw3''@;'; put 'put ''MTgzOihVLFEsaik9PnsidXNlIHN0cmljdCI7Y29uc3QgcmU9aig2ODEzKTtVLmV4cG9ydHM9e3JlYWRKc29uOnJlLnJlYWRGaWxlLHJlYWRKc29uU3luYzpyZS5yZWFkRmlsZVN5bmMsd3JpdGVKc29uOnJlLndyaXRlRmlsZSx3cml0ZUpzb25TeW5jOnJlLndyaXRlRmlsZVN5bmN9fSw5NTc4''@;'; put 'put ''OihVLFEsaik9PnsidXNlIHN0cmljdCI7Y29uc3R7c3RyaW5naWZ5OnJlfT1qKDY3ODApLHtvdXRwdXRGaWxlU3luYzphZX09aigxMzE1KTtVLmV4cG9ydHM9ZnVuY3Rpb24oWSxXLE4pe2NvbnN0IHRlPXJlKFcsTik7YWUoWSx0ZSxOKX19LDM1MDg6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijtj''@;'; put 'put ''b25zdHtzdHJpbmdpZnk6cmV9PWooNjc4MCkse291dHB1dEZpbGU6YWV9PWooMTMxNSk7VS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIFk9bWUoZnVuY3Rpb24qKFcsTix0ZT17fSl7Y29uc3QgSz1yZShOLHRlKTt5aWVsZCBhZShXLEssdGUpfSk7cmV0dXJuIGZ1bmN0aW9uKFcsTil7cmV0dXJu''@;'; put 'put ''IFkuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKX0sMTM4MTooVSxRLGopPT57InVzZSBzdHJpY3QiO2NvbnN0IHJlPWooODk4MSkuZnJvbVByb21pc2Use21ha2VEaXI6YWUsbWFrZURpclN5bmM6WX09aig4MjMzKSxXPXJlKGFlKTtVLmV4cG9ydHM9e21rZGlyczpXLG1rZGlyc1N5bmM6WSxt''@;'; put 'put ''a2RpcnA6Vyxta2RpcnBTeW5jOlksZW5zdXJlRGlyOlcsZW5zdXJlRGlyU3luYzpZfX0sODIzMzooVSxRLGopPT57InVzZSBzdHJpY3QiO2NvbnN0IHJlPWooNzc0OSkse2NoZWNrUGF0aDphZX09aigzNDY4KSxZPVc9PiJudW1iZXIiPT10eXBlb2YgVz9XOm1zKHttb2RlOjUxMX0sVykubW9k''@;'; put 'put ''ZTtVLmV4cG9ydHMubWFrZURpcj1mdW5jdGlvbigpe3ZhciBXPW1lKGZ1bmN0aW9uKihOLHRlKXtyZXR1cm4gYWUoTikscmUubWtkaXIoTix7bW9kZTpZKHRlKSxyZWN1cnNpdmU6ITB9KX0pO3JldHVybiBmdW5jdGlvbihOLHRlKXtyZXR1cm4gVy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgp''@;'; put 'put ''LFUuZXhwb3J0cy5tYWtlRGlyU3luYz0oVyxOKT0+KGFlKFcpLHJlLm1rZGlyU3luYyhXLHttb2RlOlkoTikscmVjdXJzaXZlOiEwfSkpfSwzNDY4OihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNDE1NSk7Y29uc3QgYWU9aigyNTIwKTtVLmV4cG9ydHMuY2hlY2tQYXRoPWZ1bmN0''@;'; put 'put ''aW9uKFkpe2lmKCJ3aW4zMiI9PT1yZS5wbGF0Zm9ybSYmL1s8PjoifD8qXS8udGVzdChZLnJlcGxhY2UoYWUucGFyc2UoWSkucm9vdCwiIikpKXtjb25zdCBXPW5ldyBFcnJvcihgUGF0aCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnM6ICR7WX1gKTt0aHJvdyBXLmNvZGU9IkVJTlZBTCIs''@;'; put 'put ''V319fSw0MDI2OihVLFEsaik9PnsidXNlIHN0cmljdCI7VS5leHBvcnRzPXttb3ZlU3luYzpqKDYwMDYpfX0sNjAwNjooVSxRLGopPT57InVzZSBzdHJpY3QiO2NvbnN0IHJlPWooNzcpLGFlPWooMjUyMCksWT1qKDg2OTApLmNvcHlTeW5jLFc9aig0NTQyKS5yZW1vdmVTeW5jLE49aigxMzgx''@;'; put 'put ''KS5ta2RpcnBTeW5jLHRlPWooMjczMyk7ZnVuY3Rpb24gSyhKLHNlLG9lKXt0cnl7cmUucmVuYW1lU3luYyhKLHNlKX1jYXRjaChjZSl7aWYoIkVYREVWIiE9PWNlLmNvZGUpdGhyb3cgY2U7cmV0dXJuIFkoZGU9SixzZSx7b3ZlcndyaXRlOm9lLGVycm9yT25FeGlzdDohMH0pLFcoZGUpfXZh''@;'; put 'put ''ciBkZX1VLmV4cG9ydHM9ZnVuY3Rpb24oSixzZSxvZSl7Y29uc3QgY2U9KG9lPW9lfHx7fSkub3ZlcndyaXRlfHxvZS5jbG9iYmVyfHwhMSx7c3JjU3RhdDpkZSxpc0NoYW5naW5nQ2FzZTp2ZT0hMX09dGUuY2hlY2tQYXRoc1N5bmMoSixzZSwibW92ZSIsb2UpO3JldHVybiB0ZS5jaGVja1Bh''@;'; put 'put ''cmVudFBhdGhzU3luYyhKLGRlLHNlLCJtb3ZlIiksZnVuY3Rpb24oQWUpe2NvbnN0IGtlPWFlLmRpcm5hbWUoQWUpO3JldHVybiBhZS5wYXJzZShrZSkucm9vdD09PWtlfShzZSl8fE4oYWUuZGlybmFtZShzZSkpLGZ1bmN0aW9uKEFlLGtlLFNlLEllKXtpZihJZSlyZXR1cm4gSyhBZSxrZSxT''@;'; put 'put ''ZSk7aWYoU2UpcmV0dXJuIFcoa2UpLEsoQWUsa2UsU2UpO2lmKHJlLmV4aXN0c1N5bmMoa2UpKXRocm93IG5ldyBFcnJvcigiZGVzdCBhbHJlYWR5IGV4aXN0cy4iKTtyZXR1cm4gSyhBZSxrZSxTZSl9KEosc2UsY2UsdmUpfX0sNTMwOihVLFEsaik9PnsidXNlIHN0cmljdCI7Y29uc3QgcmU9''@;'; put 'put ''aig4OTgxKS5mcm9tQ2FsbGJhY2s7VS5leHBvcnRzPXttb3ZlOnJlKGooNDM2KSl9fSw0MzY6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCByZT1qKDc3KSxhZT1qKDI1MjApLFk9aig2NDY0KS5jb3B5LFc9aig0NTQyKS5yZW1vdmUsTj1qKDEzODEpLm1rZGlycCx0ZT1qKDkyNTcpLnBh''@;'; put 'put ''dGhFeGlzdHMsSz1qKDI3MzMpO2Z1bmN0aW9uIEoob2UsY2UsZGUsdmUsQWUpe3JldHVybiB2ZT9zZShvZSxjZSxkZSxBZSk6ZGU/VyhjZSxrZT0+a2U/QWUoa2UpOnNlKG9lLGNlLGRlLEFlKSk6dm9pZCB0ZShjZSwoa2UsU2UpPT5rZT9BZShrZSk6U2U/QWUobmV3IEVycm9yKCJkZXN0IGFs''@;'; put 'put ''cmVhZHkgZXhpc3RzLiIpKTpzZShvZSxjZSxkZSxBZSkpfWZ1bmN0aW9uIHNlKG9lLGNlLGRlLHZlKXtyZS5yZW5hbWUob2UsY2UsQWU9PntyZXR1cm4gQWU/IkVYREVWIiE9PUFlLmNvZGU/dmUoQWUpOihUZT12ZSx2b2lkIFkoa2U9b2UsY2Use292ZXJ3cml0ZTpkZSxlcnJvck9uRXhpc3Q6''@;'; put 'put ''ITB9LE1lPT5NZT9UZShNZSk6VyhrZSxUZSkpKTp2ZSgpO3ZhciBrZSxUZX0pfVUuZXhwb3J0cz1mdW5jdGlvbihvZSxjZSxkZSx2ZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlJiYodmU9ZGUsZGU9e30pO2NvbnN0IEFlPWRlLm92ZXJ3cml0ZXx8ZGUuY2xvYmJlcnx8ITE7Sy5jaGVja1BhdGhz''@;'; put 'put ''KG9lLGNlLCJtb3ZlIixkZSwoa2UsU2UpPT57aWYoa2UpcmV0dXJuIHZlKGtlKTtjb25zdHtzcmNTdGF0OkllLGlzQ2hhbmdpbmdDYXNlOlRlPSExfT1TZTtLLmNoZWNrUGFyZW50UGF0aHMob2UsSWUsY2UsIm1vdmUiLE1lPT5NZT92ZShNZSk6ZnVuY3Rpb24oaGUpe2NvbnN0IE89YWUuZGly''@;'; put 'put ''bmFtZShoZSk7cmV0dXJuIGFlLnBhcnNlKE8pLnJvb3Q9PT1PfShjZSk/SihvZSxjZSxBZSxUZSx2ZSk6dm9pZCBOKGFlLmRpcm5hbWUoY2UpLGhlPT5oZT92ZShoZSk6SihvZSxjZSxBZSxUZSx2ZSkpKX0pfX0sMTMxNTooVSxRLGopPT57InVzZSBzdHJpY3QiO2NvbnN0IHJlPWooODk4MSku''@;'; put 'put ''ZnJvbUNhbGxiYWNrLGFlPWooNzcpLFk9aigyNTIwKSxXPWooMTM4MSksTj1qKDkyNTcpLnBhdGhFeGlzdHM7VS5leHBvcnRzPXtvdXRwdXRGaWxlOnJlKGZ1bmN0aW9uKHRlLEssSixzZSl7ImZ1bmN0aW9uIj09dHlwZW9mIEomJihzZT1KLEo9InV0ZjgiKTtjb25zdCBvZT1ZLmRpcm5hbWUo''@;'; put 'put ''dGUpO04ob2UsKGNlLGRlKT0+Y2U/c2UoY2UpOmRlP2FlLndyaXRlRmlsZSh0ZSxLLEosc2UpOnZvaWQgVy5ta2RpcnMob2UsdmU9PntpZih2ZSlyZXR1cm4gc2UodmUpO2FlLndyaXRlRmlsZSh0ZSxLLEosc2UpfSkpfSksb3V0cHV0RmlsZVN5bmM6ZnVuY3Rpb24odGUsLi4uSyl7Y29uc3Qg''@;'; put 'put ''Sj1ZLmRpcm5hbWUodGUpO2lmKGFlLmV4aXN0c1N5bmMoSikpcmV0dXJuIGFlLndyaXRlRmlsZVN5bmModGUsLi4uSyk7Vy5ta2RpcnNTeW5jKEopLGFlLndyaXRlRmlsZVN5bmModGUsLi4uSyl9fX0sOTI1NzooVSxRLGopPT57InVzZSBzdHJpY3QiO2NvbnN0IHJlPWooODk4MSkuZnJvbVBy''@;'; put 'put ''b21pc2UsYWU9aig3NzQ5KTtVLmV4cG9ydHM9e3BhdGhFeGlzdHM6cmUoZnVuY3Rpb24oWSl7cmV0dXJuIGFlLmFjY2VzcyhZKS50aGVuKCgpPT4hMCkuY2F0Y2goKCk9PiExKX0pLHBhdGhFeGlzdHNTeW5jOmFlLmV4aXN0c1N5bmN9fSw0NTQyOihVLFEsaik9PnsidXNlIHN0cmljdCI7Y29u''@;'; put 'put ''c3QgcmU9aig3NyksYWU9aig4OTgxKS5mcm9tQ2FsbGJhY2ssWT1qKDM0NTYpO1UuZXhwb3J0cz17cmVtb3ZlOmFlKGZ1bmN0aW9uKFcsTil7aWYocmUucm0pcmV0dXJuIHJlLnJtKFcse3JlY3Vyc2l2ZTohMCxmb3JjZTohMH0sTik7WShXLE4pfSkscmVtb3ZlU3luYzpmdW5jdGlvbihXKXtp''@;'; put 'put ''ZihyZS5ybVN5bmMpcmV0dXJuIHJlLnJtU3luYyhXLHtyZWN1cnNpdmU6ITAsZm9yY2U6ITB9KTtZLnN5bmMoVyl9fX0sMzQ1NjooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDQxNTUpO2NvbnN0IGFlPWooNzcpLFk9aigyNTIwKSxXPWooOTI4MiksTj0id2luMzIiPT09cmUucGxh''@;'; put 'put ''dGZvcm07ZnVuY3Rpb24gdGUoQWUpe1sidW5saW5rIiwiY2htb2QiLCJzdGF0IiwibHN0YXQiLCJybWRpciIsInJlYWRkaXIiXS5mb3JFYWNoKGtlPT57QWVba2VdPUFlW2tlXXx8YWVba2VdLEFlW2tlKz0iU3luYyJdPUFlW2tlXXx8YWVba2VdfSksQWUubWF4QnVzeVRyaWVzPUFlLm1heEJ1''@;'; put 'put ''c3lUcmllc3x8M31mdW5jdGlvbiBLKEFlLGtlLFNlKXtsZXQgSWU9MDsiZnVuY3Rpb24iPT10eXBlb2Yga2UmJihTZT1rZSxrZT17fSksVyhBZSwicmltcmFmOiBtaXNzaW5nIHBhdGgiKSxXLnN0cmljdEVxdWFsKHR5cGVvZiBBZSwic3RyaW5nIiwicmltcmFmOiBwYXRoIHNob3VsZCBiZSBh''@;'; put 'put ''IHN0cmluZyIpLFcuc3RyaWN0RXF1YWwodHlwZW9mIFNlLCJmdW5jdGlvbiIsInJpbXJhZjogY2FsbGJhY2sgZnVuY3Rpb24gcmVxdWlyZWQiKSxXKGtlLCJyaW1yYWY6IGludmFsaWQgb3B0aW9ucyBhcmd1bWVudCBwcm92aWRlZCIpLFcuc3RyaWN0RXF1YWwodHlwZW9mIGtlLCJvYmplY3Qi''@;'; put 'put ''LCJyaW1yYWY6IG9wdGlvbnMgc2hvdWxkIGJlIG9iamVjdCIpLHRlKGtlKSxKKEFlLGtlLGZ1bmN0aW9uIFRlKE1lKXtpZihNZSl7aWYoKCJFQlVTWSI9PT1NZS5jb2RlfHwiRU5PVEVNUFRZIj09PU1lLmNvZGV8fCJFUEVSTSI9PT1NZS5jb2RlKSYmSWU8a2UubWF4QnVzeVRyaWVzKXJldHVy''@;'; put 'put ''biBJZSsrLHNldFRpbWVvdXQoKCk9PkooQWUsa2UsVGUpLDEwMCpJZSk7IkVOT0VOVCI9PT1NZS5jb2RlJiYoTWU9bnVsbCl9U2UoTWUpfSl9ZnVuY3Rpb24gSihBZSxrZSxTZSl7VyhBZSksVyhrZSksVygiZnVuY3Rpb24iPT10eXBlb2YgU2UpLGtlLmxzdGF0KEFlLChJZSxUZSk9PkllJiYi''@;'; put 'put ''RU5PRU5UIj09PUllLmNvZGU/U2UobnVsbCk6SWUmJiJFUEVSTSI9PT1JZS5jb2RlJiZOP3NlKEFlLGtlLEllLFNlKTpUZSYmVGUuaXNEaXJlY3RvcnkoKT9jZShBZSxrZSxJZSxTZSk6dm9pZCBrZS51bmxpbmsoQWUsTWU9PntpZihNZSl7aWYoIkVOT0VOVCI9PT1NZS5jb2RlKXJldHVybiBT''@;'; put 'put ''ZShudWxsKTtpZigiRVBFUk0iPT09TWUuY29kZSlyZXR1cm4gTj9zZShBZSxrZSxNZSxTZSk6Y2UoQWUsa2UsTWUsU2UpO2lmKCJFSVNESVIiPT09TWUuY29kZSlyZXR1cm4gY2UoQWUsa2UsTWUsU2UpfXJldHVybiBTZShNZSl9KSl9ZnVuY3Rpb24gc2UoQWUsa2UsU2UsSWUpe1coQWUpLFco''@;'; put 'put ''a2UpLFcoImZ1bmN0aW9uIj09dHlwZW9mIEllKSxrZS5jaG1vZChBZSw0MzgsVGU9PntUZT9JZSgiRU5PRU5UIj09PVRlLmNvZGU/bnVsbDpTZSk6a2Uuc3RhdChBZSwoTWUsaGUpPT57TWU/SWUoIkVOT0VOVCI9PT1NZS5jb2RlP251bGw6U2UpOmhlLmlzRGlyZWN0b3J5KCk/Y2UoQWUsa2Us''@;'; put 'put ''U2UsSWUpOmtlLnVubGluayhBZSxJZSl9KX0pfWZ1bmN0aW9uIG9lKEFlLGtlLFNlKXtsZXQgSWU7VyhBZSksVyhrZSk7dHJ5e2tlLmNobW9kU3luYyhBZSw0MzgpfWNhdGNoKFRlKXtpZigiRU5PRU5UIj09PVRlLmNvZGUpcmV0dXJuO3Rocm93IFNlfXRyeXtJZT1rZS5zdGF0U3luYyhBZSl9''@;'; put 'put ''Y2F0Y2goVGUpe2lmKCJFTk9FTlQiPT09VGUuY29kZSlyZXR1cm47dGhyb3cgU2V9SWUuaXNEaXJlY3RvcnkoKT92ZShBZSxrZSxTZSk6a2UudW5saW5rU3luYyhBZSl9ZnVuY3Rpb24gY2UoQWUsa2UsU2UsSWUpe1coQWUpLFcoa2UpLFcoImZ1bmN0aW9uIj09dHlwZW9mIEllKSxrZS5ybWRp''@;'; put 'put ''cihBZSxUZT0+e3ZhciBNZSxoZSxPOyFUZXx8IkVOT1RFTVBUWSIhPT1UZS5jb2RlJiYiRUVYSVNUIiE9PVRlLmNvZGUmJiJFUEVSTSIhPT1UZS5jb2RlP0llKFRlJiYiRU5PVERJUiI9PT1UZS5jb2RlP1NlOlRlKTooaGU9a2UsTz1JZSxXKE1lPUFlKSxXKGhlKSxXKCJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBPKSxoZS5yZWFkZGlyKE1lLCh6LGVlKT0+e2lmKHopcmV0dXJuIE8oeik7bGV0IG5lLHg9ZWUubGVuZ3RoO2lmKDA9PT14KXJldHVybiBoZS5ybWRpcihNZSxPKTtlZS5mb3JFYWNoKFA9PntLKFkuam9pbihNZSxQKSxoZSxWPT57aWYoIW5lKXJldHVybiBWP08obmU9Vik6dm9pZCgw''@;'; put 'put ''PT0tLXgmJmhlLnJtZGlyKE1lLE8pKX0pfSl9KSl9KX1mdW5jdGlvbiBkZShBZSxrZSl7bGV0IFNlO3RlKGtlPWtlfHx7fSksVyhBZSwicmltcmFmOiBtaXNzaW5nIHBhdGgiKSxXLnN0cmljdEVxdWFsKHR5cGVvZiBBZSwic3RyaW5nIiwicmltcmFmOiBwYXRoIHNob3VsZCBiZSBhIHN0cmlu''@;'; put 'put ''ZyIpLFcoa2UsInJpbXJhZjogbWlzc2luZyBvcHRpb25zIiksVy5zdHJpY3RFcXVhbCh0eXBlb2Yga2UsIm9iamVjdCIsInJpbXJhZjogb3B0aW9ucyBzaG91bGQgYmUgb2JqZWN0Iik7dHJ5e1NlPWtlLmxzdGF0U3luYyhBZSl9Y2F0Y2goSWUpe2lmKCJFTk9FTlQiPT09SWUuY29kZSlyZXR1''@;'; put 'put ''cm47IkVQRVJNIj09PUllLmNvZGUmJk4mJm9lKEFlLGtlLEllKX10cnl7U2UmJlNlLmlzRGlyZWN0b3J5KCk/dmUoQWUsa2UsbnVsbCk6a2UudW5saW5rU3luYyhBZSl9Y2F0Y2goSWUpe2lmKCJFTk9FTlQiPT09SWUuY29kZSlyZXR1cm47aWYoIkVQRVJNIj09PUllLmNvZGUpcmV0dXJuIE4/''@;'; put 'put ''b2UoQWUsa2UsSWUpOnZlKEFlLGtlLEllKTtpZigiRUlTRElSIiE9PUllLmNvZGUpdGhyb3cgSWU7dmUoQWUsa2UsSWUpfX1mdW5jdGlvbiB2ZShBZSxrZSxTZSl7VyhBZSksVyhrZSk7dHJ5e2tlLnJtZGlyU3luYyhBZSl9Y2F0Y2goSWUpe2lmKCJFTk9URElSIj09PUllLmNvZGUpdGhyb3cg''@;'; put 'put ''U2U7aWYoIkVOT1RFTVBUWSI9PT1JZS5jb2RlfHwiRUVYSVNUIj09PUllLmNvZGV8fCJFUEVSTSI9PT1JZS5jb2RlKSFmdW5jdGlvbihUZSxNZSl7aWYoVyhUZSksVyhNZSksTWUucmVhZGRpclN5bmMoVGUpLmZvckVhY2goaGU9PmRlKFkuam9pbihUZSxoZSksTWUpKSwhTilyZXR1cm4gTWUu''@;'; put 'put ''cm1kaXJTeW5jKFRlLE1lKTt7Y29uc3QgaGU9RGF0ZS5ub3coKTtkb3t0cnl7cmV0dXJuIE1lLnJtZGlyU3luYyhUZSxNZSl9Y2F0Y2goTyl7fX13aGlsZShEYXRlLm5vdygpLWhlPDUwMCl9fShBZSxrZSk7ZWxzZSBpZigiRU5PRU5UIiE9PUllLmNvZGUpdGhyb3cgSWV9fVUuZXhwb3J0cz1L''@;'; put 'put ''LEsuc3luYz1kZX0sMjczMzooVSxRLGopPT57InVzZSBzdHJpY3QiO2NvbnN0IHJlPWooNzc0OSksYWU9aigyNTIwKSxZPWooOTUzOSk7ZnVuY3Rpb24gVyhKLHNlLG9lKXtjb25zdCBjZT1vZS5kZXJlZmVyZW5jZT9kZT0+cmUuc3RhdChkZSx7YmlnaW50OiEwfSk6ZGU9PnJlLmxzdGF0KGRl''@;'; put 'put ''LHtiaWdpbnQ6ITB9KTtyZXR1cm4gUHJvbWlzZS5hbGwoW2NlKEopLGNlKHNlKS5jYXRjaChkZT0+e2lmKCJFTk9FTlQiPT09ZGUuY29kZSlyZXR1cm4gbnVsbDt0aHJvdyBkZX0pXSkudGhlbigoW2RlLHZlXSk9Pih7c3JjU3RhdDpkZSxkZXN0U3RhdDp2ZX0pKX1mdW5jdGlvbiBOKEosc2Up''@;'; put 'put ''e3JldHVybiBzZS5pbm8mJnNlLmRldiYmc2UuaW5vPT09Si5pbm8mJnNlLmRldj09PUouZGV2fWZ1bmN0aW9uIHRlKEosc2Upe2NvbnN0IG9lPWFlLnJlc29sdmUoSikuc3BsaXQoYWUuc2VwKS5maWx0ZXIoZGU9PmRlKSxjZT1hZS5yZXNvbHZlKHNlKS5zcGxpdChhZS5zZXApLmZpbHRlcihk''@;'; put 'put ''ZT0+ZGUpO3JldHVybiBvZS5yZWR1Y2UoKGRlLHZlLEFlKT0+ZGUmJmNlW0FlXT09PXZlLCEwKX1mdW5jdGlvbiBLKEosc2Usb2Upe3JldHVybmBDYW5ub3QgJHtvZX0gJyR7Sn0nIHRvIGEgc3ViZGlyZWN0b3J5IG9mIGl0c2VsZiwgJyR7c2V9Jy5gfVUuZXhwb3J0cz17Y2hlY2tQYXRoczpm''@;'; put 'put ''dW5jdGlvbihKLHNlLG9lLGNlLGRlKXtZLmNhbGxiYWNraWZ5KFcpKEosc2UsY2UsKHZlLEFlKT0+e2lmKHZlKXJldHVybiBkZSh2ZSk7Y29uc3R7c3JjU3RhdDprZSxkZXN0U3RhdDpTZX09QWU7aWYoU2Upe2lmKE4oa2UsU2UpKXtjb25zdCBJZT1hZS5iYXNlbmFtZShKKSxUZT1hZS5iYXNl''@;'; put 'put ''bmFtZShzZSk7cmV0dXJuIm1vdmUiPT09b2UmJkllIT09VGUmJkllLnRvTG93ZXJDYXNlKCk9PT1UZS50b0xvd2VyQ2FzZSgpP2RlKG51bGwse3NyY1N0YXQ6a2UsZGVzdFN0YXQ6U2UsaXNDaGFuZ2luZ0Nhc2U6ITB9KTpkZShuZXcgRXJyb3IoIlNvdXJjZSBhbmQgZGVzdGluYXRpb24gbXVz''@;'; put 'put ''dCBub3QgYmUgdGhlIHNhbWUuIikpfWlmKGtlLmlzRGlyZWN0b3J5KCkmJiFTZS5pc0RpcmVjdG9yeSgpKXJldHVybiBkZShuZXcgRXJyb3IoYENhbm5vdCBvdmVyd3JpdGUgbm9uLWRpcmVjdG9yeSAnJHtzZX0nIHdpdGggZGlyZWN0b3J5ICcke0p9Jy5gKSk7aWYoIWtlLmlzRGlyZWN0b3J5''@;'; put 'put ''KCkmJlNlLmlzRGlyZWN0b3J5KCkpcmV0dXJuIGRlKG5ldyBFcnJvcihgQ2Fubm90IG92ZXJ3cml0ZSBkaXJlY3RvcnkgJyR7c2V9JyB3aXRoIG5vbi1kaXJlY3RvcnkgJyR7Sn0nLmApKX1yZXR1cm4ga2UuaXNEaXJlY3RvcnkoKSYmdGUoSixzZSk/ZGUobmV3IEVycm9yKEsoSixzZSxvZSkp''@;'; put 'put ''KTpkZShudWxsLHtzcmNTdGF0OmtlLGRlc3RTdGF0OlNlfSl9KX0sY2hlY2tQYXRoc1N5bmM6ZnVuY3Rpb24oSixzZSxvZSxjZSl7Y29uc3R7c3JjU3RhdDpkZSxkZXN0U3RhdDp2ZX09ZnVuY3Rpb24oQWUsa2UsU2Upe2xldCBJZTtjb25zdCBUZT1TZS5kZXJlZmVyZW5jZT9oZT0+cmUuc3Rh''@;'; put 'put ''dFN5bmMoaGUse2JpZ2ludDohMH0pOmhlPT5yZS5sc3RhdFN5bmMoaGUse2JpZ2ludDohMH0pLE1lPVRlKEFlKTt0cnl7SWU9VGUoa2UpfWNhdGNoKGhlKXtpZigiRU5PRU5UIj09PWhlLmNvZGUpcmV0dXJue3NyY1N0YXQ6TWUsZGVzdFN0YXQ6bnVsbH07dGhyb3cgaGV9cmV0dXJue3NyY1N0''@;'; put 'put ''YXQ6TWUsZGVzdFN0YXQ6SWV9fShKLHNlLGNlKTtpZih2ZSl7aWYoTihkZSx2ZSkpe2NvbnN0IEFlPWFlLmJhc2VuYW1lKEopLGtlPWFlLmJhc2VuYW1lKHNlKTtpZigibW92ZSI9PT1vZSYmQWUhPT1rZSYmQWUudG9Mb3dlckNhc2UoKT09PWtlLnRvTG93ZXJDYXNlKCkpcmV0dXJue3NyY1N0''@;'; put 'put ''YXQ6ZGUsZGVzdFN0YXQ6dmUsaXNDaGFuZ2luZ0Nhc2U6ITB9O3Rocm93IG5ldyBFcnJvcigiU291cmNlIGFuZCBkZXN0aW5hdGlvbiBtdXN0IG5vdCBiZSB0aGUgc2FtZS4iKX1pZihkZS5pc0RpcmVjdG9yeSgpJiYhdmUuaXNEaXJlY3RvcnkoKSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBv''@;'; put 'put ''dmVyd3JpdGUgbm9uLWRpcmVjdG9yeSAnJHtzZX0nIHdpdGggZGlyZWN0b3J5ICcke0p9Jy5gKTtpZighZGUuaXNEaXJlY3RvcnkoKSYmdmUuaXNEaXJlY3RvcnkoKSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBvdmVyd3JpdGUgZGlyZWN0b3J5ICcke3NlfScgd2l0aCBub24tZGlyZWN0b3J5''@;'; put 'put ''ICcke0p9Jy5gKX1pZihkZS5pc0RpcmVjdG9yeSgpJiZ0ZShKLHNlKSl0aHJvdyBuZXcgRXJyb3IoSyhKLHNlLG9lKSk7cmV0dXJue3NyY1N0YXQ6ZGUsZGVzdFN0YXQ6dmV9fSxjaGVja1BhcmVudFBhdGhzOmZ1bmN0aW9uIEooc2Usb2UsY2UsZGUsdmUpe2NvbnN0IEFlPWFlLnJlc29sdmUo''@;'; put 'put ''YWUuZGlybmFtZShzZSkpLGtlPWFlLnJlc29sdmUoYWUuZGlybmFtZShjZSkpO2lmKGtlPT09QWV8fGtlPT09YWUucGFyc2Uoa2UpLnJvb3QpcmV0dXJuIHZlKCk7cmUuc3RhdChrZSx7YmlnaW50OiEwfSwoU2UsSWUpPT5TZT8iRU5PRU5UIj09PVNlLmNvZGU/dmUoKTp2ZShTZSk6TihvZSxJ''@;'; put 'put ''ZSk/dmUobmV3IEVycm9yKEsoc2UsY2UsZGUpKSk6SihzZSxvZSxrZSxkZSx2ZSkpfSxjaGVja1BhcmVudFBhdGhzU3luYzpmdW5jdGlvbiBKKHNlLG9lLGNlLGRlKXtjb25zdCB2ZT1hZS5yZXNvbHZlKGFlLmRpcm5hbWUoc2UpKSxBZT1hZS5yZXNvbHZlKGFlLmRpcm5hbWUoY2UpKTtpZihB''@;'; put 'put ''ZT09PXZlfHxBZT09PWFlLnBhcnNlKEFlKS5yb290KXJldHVybjtsZXQga2U7dHJ5e2tlPXJlLnN0YXRTeW5jKEFlLHtiaWdpbnQ6ITB9KX1jYXRjaChTZSl7aWYoIkVOT0VOVCI9PT1TZS5jb2RlKXJldHVybjt0aHJvdyBTZX1pZihOKG9lLGtlKSl0aHJvdyBuZXcgRXJyb3IoSyhzZSxjZSxk''@;'; put 'put ''ZSkpO3JldHVybiBKKHNlLG9lLEFlLGRlKX0saXNTcmNTdWJkaXI6dGUsYXJlSWRlbnRpY2FsOk59fSwzMTg6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCByZT1qKDc3KTtVLmV4cG9ydHM9e3V0aW1lc01pbGxpczpmdW5jdGlvbihhZSxZLFcsTil7cmUub3BlbihhZSwicisiLCh0ZSxL''@;'; put 'put ''KT0+e2lmKHRlKXJldHVybiBOKHRlKTtyZS5mdXRpbWVzKEssWSxXLEo9PntyZS5jbG9zZShLLHNlPT57TiYmTihKfHxzZSl9KX0pfSl9LHV0aW1lc01pbGxpc1N5bmM6ZnVuY3Rpb24oYWUsWSxXKXtjb25zdCBOPXJlLm9wZW5TeW5jKGFlLCJyKyIpO3JldHVybiByZS5mdXRpbWVzU3luYyhO''@;'; put 'put ''LFksVykscmUuY2xvc2VTeW5jKE4pfX19LDczMzQ6KFUsUSxqKT0+e3ZhciByZT1qKDQxNTUpO1UuZXhwb3J0cz1zZSxzZS5yZWFscGF0aD1zZSxzZS5zeW5jPW9lLHNlLnJlYWxwYXRoU3luYz1vZSxzZS5tb25rZXlwYXRjaD1mdW5jdGlvbigpe2FlLnJlYWxwYXRoPXNlLGFlLnJlYWxwYXRo''@;'; put 'put ''U3luYz1vZX0sc2UudW5tb25rZXlwYXRjaD1mdW5jdGlvbigpe2FlLnJlYWxwYXRoPVksYWUucmVhbHBhdGhTeW5jPVd9O3ZhciBhZT1qKDI1MzUpLFk9YWUucmVhbHBhdGgsVz1hZS5yZWFscGF0aFN5bmMsdGU9L152WzAtNV1cLi8udGVzdChyZS52ZXJzaW9uKSxLPWooNzA1OSk7ZnVuY3Rp''@;'; put 'put ''b24gSihjZSl7cmV0dXJuIGNlJiYicmVhbHBhdGgiPT09Y2Uuc3lzY2FsbCYmKCJFTE9PUCI9PT1jZS5jb2RlfHwiRU5PTUVNIj09PWNlLmNvZGV8fCJFTkFNRVRPT0xPTkciPT09Y2UuY29kZSl9ZnVuY3Rpb24gc2UoY2UsZGUsdmUpe2lmKHRlKXJldHVybiBZKGNlLGRlLHZlKTsiZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgZGUmJih2ZT1kZSxkZT1udWxsKSxZKGNlLGRlLGZ1bmN0aW9uKEFlLGtlKXtKKEFlKT9LLnJlYWxwYXRoKGNlLGRlLHZlKTp2ZShBZSxrZSl9KX1mdW5jdGlvbiBvZShjZSxkZSl7aWYodGUpcmV0dXJuIFcoY2UsZGUpO3RyeXtyZXR1cm4gVyhjZSxkZSl9Y2F0Y2godmUp''@;'; put 'put ''e2lmKEoodmUpKXJldHVybiBLLnJlYWxwYXRoU3luYyhjZSxkZSk7dGhyb3cgdmV9fX0sNzA1OTooVSxRLGopPT57dmFyIHJlPWooNDE1NSksYWU9aig1MTA4KSxZPWooMjUyMCksVz0id2luMzIiPT09cmUucGxhdGZvcm0sTj1qKDI1MzUpLHRlPXJlLmVudi5OT0RFX0RFQlVHJiYvZnMvLnRl''@;'; put 'put ''c3QocmUuZW52Lk5PREVfREVCVUcpO2lmKFcpdmFyIEo9LyguKj8pKD86W1wvXFxdK3wkKS9nO2Vsc2UgSj0vKC4qPykoPzpbXC9dK3wkKS9nO2lmKFcpdmFyIHNlPS9eKD86W2EtekEtWl06fFtcXFwvXXsyfVteXFxcL10rW1xcXC9dW15cXFwvXSspP1tcXFwvXSovO2Vsc2Ugc2U9L15bXC9d''@;'; put 'put ''Ki87US5yZWFscGF0aFN5bmM9ZnVuY3Rpb24ob2UsY2Upe2lmKG9lPVkucmVzb2x2ZShvZSksY2UmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjZSxvZSkpcmV0dXJuIGNlW29lXTt2YXIgZGUsdmUsQWUsa2UsU2U9b2UsSWU9e30sVGU9e307ZnVuY3Rpb24gTWUoKXt2''@;'; put 'put ''YXIgeD1zZS5leGVjKG9lKTtkZT14WzBdLmxlbmd0aCx2ZT14WzBdLEFlPXhbMF0sa2U9IiIsVyYmIVRlW0FlXSYmKE4ubHN0YXRTeW5jKEFlKSxUZVtBZV09ITApfWZvcihNZSgpO2RlPG9lLmxlbmd0aDspe0oubGFzdEluZGV4PWRlO3ZhciBoZT1KLmV4ZWMob2UpO2lmKGtlPXZlLHZlKz1o''@;'; put 'put ''ZVswXSxkZT1KLmxhc3RJbmRleCwhKFRlW0FlPWtlK2hlWzFdXXx8Y2UmJmNlW0FlXT09PUFlKSl7dmFyIE87aWYoY2UmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjZSxBZSkpTz1jZVtBZV07ZWxzZXt2YXIgej1OLmxzdGF0U3luYyhBZSk7aWYoIXouaXNTeW1ib2xp''@;'; put 'put ''Y0xpbmsoKSl7VGVbQWVdPSEwLGNlJiYoY2VbQWVdPUFlKTtjb250aW51ZX12YXIgZWU9bnVsbDtpZighVyl7dmFyIG5lPXouZGV2LnRvU3RyaW5nKDMyKSsiOiIrei5pbm8udG9TdHJpbmcoMzIpO0llLmhhc093blByb3BlcnR5KG5lKSYmKGVlPUllW25lXSl9bnVsbD09PWVlJiYoTi5zdGF0''@;'; put 'put ''U3luYyhBZSksZWU9Ti5yZWFkbGlua1N5bmMoQWUpKSxPPVkucmVzb2x2ZShrZSxlZSksY2UmJihjZVtBZV09TyksV3x8KEllW25lXT1lZSl9b2U9WS5yZXNvbHZlKE8sb2Uuc2xpY2UoZGUpKSxNZSgpfX1yZXR1cm4gY2UmJihjZVtTZV09b2UpLG9lfSxRLnJlYWxwYXRoPWZ1bmN0aW9uKG9l''@;'; put 'put ''LGNlLGRlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZGUmJihkZT1mdW5jdGlvbiBLKG9lKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygb2U/b2U6ZnVuY3Rpb24oKXt2YXIgY2U7aWYodGUpe3ZhciBkZT1uZXcgRXJyb3I7Y2U9ZnVuY3Rpb24oQWUpe0FlJiYoZGUubWVzc2FnZT1BZS5tZXNz''@;'; put 'put ''YWdlLHZlKEFlPWRlKSl9fWVsc2UgY2U9dmU7cmV0dXJuIGNlO2Z1bmN0aW9uIHZlKEFlKXtpZihBZSl7aWYocmUudGhyb3dEZXByZWNhdGlvbil0aHJvdyBBZTtpZighcmUubm9EZXByZWNhdGlvbil7dmFyIGtlPSJmczogbWlzc2luZyBjYWxsYmFjayAiKyhBZS5zdGFja3x8QWUubWVzc2Fn''@;'; put 'put ''ZSk7cmUudHJhY2VEZXByZWNhdGlvbj9hZS50cmFjZShrZSk6YWUuZXJyb3Ioa2UpfX19fSgpfShjZSksY2U9bnVsbCksb2U9WS5yZXNvbHZlKG9lKSxjZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNlLG9lKSlyZXR1cm4gcmUubmV4dFRpY2soZGUuYmluZChudWxs''@;'; put 'put ''LG51bGwsY2Vbb2VdKSk7dmFyIHZlLEFlLGtlLFNlLEllPW9lLFRlPXt9LE1lPXt9O2Z1bmN0aW9uIGhlKCl7dmFyIHg9c2UuZXhlYyhvZSk7dmU9eFswXS5sZW5ndGgsQWU9eFswXSxrZT14WzBdLFNlPSIiLFcmJiFNZVtrZV0/Ti5sc3RhdChrZSxmdW5jdGlvbihQKXtpZihQKXJldHVybiBk''@;'; put 'put ''ZShQKTtNZVtrZV09ITAsTygpfSk6cmUubmV4dFRpY2soTyl9ZnVuY3Rpb24gTygpe2lmKHZlPj1vZS5sZW5ndGgpcmV0dXJuIGNlJiYoY2VbSWVdPW9lKSxkZShudWxsLG9lKTtKLmxhc3RJbmRleD12ZTt2YXIgeD1KLmV4ZWMob2UpO3JldHVybiBTZT1BZSxBZSs9eFswXSx2ZT1KLmxhc3RJ''@;'; put 'put ''bmRleCxNZVtrZT1TZSt4WzFdXXx8Y2UmJmNlW2tlXT09PWtlP3JlLm5leHRUaWNrKE8pOmNlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2Usa2UpP25lKGNlW2tlXSk6Ti5sc3RhdChrZSx6KX1mdW5jdGlvbiB6KHgsUCl7aWYoeClyZXR1cm4gZGUoeCk7aWYoIVAu''@;'; put 'put ''aXNTeW1ib2xpY0xpbmsoKSlyZXR1cm4gTWVba2VdPSEwLGNlJiYoY2Vba2VdPWtlKSxyZS5uZXh0VGljayhPKTtpZighVyl7dmFyIFY9UC5kZXYudG9TdHJpbmcoMzIpKyI6IitQLmluby50b1N0cmluZygzMik7aWYoVGUuaGFzT3duUHJvcGVydHkoVikpcmV0dXJuIGVlKG51bGwsVGVbVl0s''@;'; put 'put ''a2UpfU4uc3RhdChrZSxmdW5jdGlvbihUKXtpZihUKXJldHVybiBkZShUKTtOLnJlYWRsaW5rKGtlLGZ1bmN0aW9uKFMsRil7V3x8KFRlW1ZdPUYpLGVlKFMsRil9KX0pfWZ1bmN0aW9uIGVlKHgsUCxWKXtpZih4KXJldHVybiBkZSh4KTt2YXIgVD1ZLnJlc29sdmUoU2UsUCk7Y2UmJihjZVtW''@;'; put 'put ''XT1UKSxuZShUKX1mdW5jdGlvbiBuZSh4KXtvZT1ZLnJlc29sdmUoeCxvZS5zbGljZSh2ZSkpLGhlKCl9aGUoKX19LDc2NDg6VT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgUT0iRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgY2FsbGVkIG9uIGluY29tcGF0aWJsZSAiLGo9QXJyYXkucHJvdG90eXBlLnNs''@;'; put 'put ''aWNlLHJlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsYWU9IltvYmplY3QgRnVuY3Rpb25dIjtVLmV4cG9ydHM9ZnVuY3Rpb24oWSl7dmFyIFc9dGhpcztpZigiZnVuY3Rpb24iIT10eXBlb2YgV3x8cmUuY2FsbChXKSE9PWFlKXRocm93IG5ldyBUeXBlRXJyb3IoUStXKTtmb3IodmFyIE4s''@;'; put 'put ''dGU9ai5jYWxsKGFyZ3VtZW50cywxKSxLPWZ1bmN0aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIE4pe3ZhciBkZT1XLmFwcGx5KHRoaXMsdGUuY29uY2F0KGouY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIE9iamVjdChkZSk9PT1kZT9kZTp0aGlzfXJldHVybiBXLmFwcGx5KFksdGUuY29uY2F0''@;'; put 'put ''KGouY2FsbChhcmd1bWVudHMpKSl9LEo9TWF0aC5tYXgoMCxXLmxlbmd0aC10ZS5sZW5ndGgpLHNlPVtdLG9lPTA7b2U8SjtvZSsrKXNlLnB1c2goIiQiK29lKTtpZihOPUZ1bmN0aW9uKCJiaW5kZXIiLCJyZXR1cm4gZnVuY3Rpb24gKCIrc2Uuam9pbigiLCIpKyIpeyByZXR1cm4gYmluZGVy''@;'; put 'put ''LmFwcGx5KHRoaXMsYXJndW1lbnRzKTsgfSIpKEspLFcucHJvdG90eXBlKXt2YXIgY2U9ZnVuY3Rpb24oKXt9O2NlLnByb3RvdHlwZT1XLnByb3RvdHlwZSxOLnByb3RvdHlwZT1uZXcgY2UsY2UucHJvdG90eXBlPW51bGx9cmV0dXJuIE59fSw4NjEyOihVLFEsaik9PnsidXNlIHN0cmljdCI7''@;'; put 'put ''dmFyIHJlPWooNzY0OCk7VS5leHBvcnRzPUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kfHxyZX0sMjEwOihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlLGFlPVN5bnRheEVycm9yLFk9RnVuY3Rpb24sVz1UeXBlRXJyb3IsTj1mdW5jdGlvbihWKXt0cnl7cmV0dXJuIFkoJyJ1c2Ugc3RyaWN0''@;'; put 'put ''IjsgcmV0dXJuICgnK1YrIikuY29uc3RydWN0b3I7IikoKX1jYXRjaChUKXt9fSx0ZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2lmKHRlKXRyeXt0ZSh7fSwiIil9Y2F0Y2goVil7dGU9bnVsbH12YXIgSz1mdW5jdGlvbigpe3Rocm93IG5ldyBXfSxKPXRlP2Z1bmN0aW9uKCl7''@;'; put 'put ''dHJ5e3JldHVybiBLfWNhdGNoKFYpe3RyeXtyZXR1cm4gdGUoYXJndW1lbnRzLCJjYWxsZWUiKS5nZXR9Y2F0Y2goVCl7cmV0dXJuIEt9fX0oKTpLLHNlPWooMTQwNSkoKSxvZT1PYmplY3QuZ2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKFYpe3JldHVybiBWLl9fcHJvdG9fX30sY2U9e30sZGU9''@;'; put 'put ''InVuZGVmaW5lZCI9PXR5cGVvZiBVaW50OEFycmF5P3JlOm9lKFVpbnQ4QXJyYXkpLHZlPXsiJUFnZ3JlZ2F0ZUVycm9yJSI6InVuZGVmaW5lZCI9PXR5cGVvZiBBZ2dyZWdhdGVFcnJvcj9yZTpBZ2dyZWdhdGVFcnJvciwiJUFycmF5JSI6QXJyYXksIiVBcnJheUJ1ZmZlciUiOiJ1bmRlZmlu''@;'; put 'put ''ZWQiPT10eXBlb2YgQXJyYXlCdWZmZXI/cmU6QXJyYXlCdWZmZXIsIiVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJSI6c2U/b2UoW11bU3ltYm9sLml0ZXJhdG9yXSgpKTpyZSwiJUFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSUiOnJlLCIlQXN5bmNGdW5jdGlvbiUiOmNlLCIlQXN5bmNH''@;'; put 'put ''ZW5lcmF0b3IlIjpjZSwiJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lIjpjZSwiJUFzeW5jSXRlcmF0b3JQcm90b3R5cGUlIjpjZSwiJUF0b21pY3MlIjoidW5kZWZpbmVkIj09dHlwZW9mIEF0b21pY3M/cmU6QXRvbWljcywiJUJpZ0ludCUiOiJ1bmRlZmluZWQiPT10eXBlb2YgQmlnSW50P3Jl''@;'; put 'put ''OkJpZ0ludCwiJUJvb2xlYW4lIjpCb29sZWFuLCIlRGF0YVZpZXclIjoidW5kZWZpbmVkIj09dHlwZW9mIERhdGFWaWV3P3JlOkRhdGFWaWV3LCIlRGF0ZSUiOkRhdGUsIiVkZWNvZGVVUkklIjpkZWNvZGVVUkksIiVkZWNvZGVVUklDb21wb25lbnQlIjpkZWNvZGVVUklDb21wb25lbnQsIiVl''@;'; put 'put ''bmNvZGVVUkklIjplbmNvZGVVUkksIiVlbmNvZGVVUklDb21wb25lbnQlIjplbmNvZGVVUklDb21wb25lbnQsIiVFcnJvciUiOkVycm9yLCIlZXZhbCUiOmV2YWwsIiVFdmFsRXJyb3IlIjpFdmFsRXJyb3IsIiVGbG9hdDMyQXJyYXklIjoidW5kZWZpbmVkIj09dHlwZW9mIEZsb2F0MzJBcnJh''@;'; put 'put ''eT9yZTpGbG9hdDMyQXJyYXksIiVGbG9hdDY0QXJyYXklIjoidW5kZWZpbmVkIj09dHlwZW9mIEZsb2F0NjRBcnJheT9yZTpGbG9hdDY0QXJyYXksIiVGaW5hbGl6YXRpb25SZWdpc3RyeSUiOiJ1bmRlZmluZWQiPT10eXBlb2YgRmluYWxpemF0aW9uUmVnaXN0cnk/cmU6RmluYWxpemF0aW9u''@;'; put 'put ''UmVnaXN0cnksIiVGdW5jdGlvbiUiOlksIiVHZW5lcmF0b3JGdW5jdGlvbiUiOmNlLCIlSW50OEFycmF5JSI6InVuZGVmaW5lZCI9PXR5cGVvZiBJbnQ4QXJyYXk/cmU6SW50OEFycmF5LCIlSW50MTZBcnJheSUiOiJ1bmRlZmluZWQiPT10eXBlb2YgSW50MTZBcnJheT9yZTpJbnQxNkFycmF5''@;'; put 'put ''LCIlSW50MzJBcnJheSUiOiJ1bmRlZmluZWQiPT10eXBlb2YgSW50MzJBcnJheT9yZTpJbnQzMkFycmF5LCIlaXNGaW5pdGUlIjppc0Zpbml0ZSwiJWlzTmFOJSI6aXNOYU4sIiVJdGVyYXRvclByb3RvdHlwZSUiOnNlP29lKG9lKFtdW1N5bWJvbC5pdGVyYXRvcl0oKSkpOnJlLCIlSlNPTiUi''@;'; put 'put ''OiJvYmplY3QiPT10eXBlb2YgSlNPTj9KU09OOnJlLCIlTWFwJSI6InVuZGVmaW5lZCI9PXR5cGVvZiBNYXA/cmU6TWFwLCIlTWFwSXRlcmF0b3JQcm90b3R5cGUlIjoidW5kZWZpbmVkIiE9dHlwZW9mIE1hcCYmc2U/b2UoKG5ldyBNYXApW1N5bWJvbC5pdGVyYXRvcl0oKSk6cmUsIiVNYXRo''@;'; put 'put ''JSI6TWF0aCwiJU51bWJlciUiOk51bWJlciwiJU9iamVjdCUiOk9iamVjdCwiJXBhcnNlRmxvYXQlIjpwYXJzZUZsb2F0LCIlcGFyc2VJbnQlIjpwYXJzZUludCwiJVByb21pc2UlIjoidW5kZWZpbmVkIj09dHlwZW9mIFByb21pc2U/cmU6UHJvbWlzZSwiJVByb3h5JSI6InVuZGVmaW5lZCI9''@;'; put 'put ''PXR5cGVvZiBQcm94eT9yZTpQcm94eSwiJVJhbmdlRXJyb3IlIjpSYW5nZUVycm9yLCIlUmVmZXJlbmNlRXJyb3IlIjpSZWZlcmVuY2VFcnJvciwiJVJlZmxlY3QlIjoidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3Q/cmU6UmVmbGVjdCwiJVJlZ0V4cCUiOlJlZ0V4cCwiJVNldCUiOiJ1bmRl''@;'; put 'put ''ZmluZWQiPT10eXBlb2YgU2V0P3JlOlNldCwiJVNldEl0ZXJhdG9yUHJvdG90eXBlJSI6InVuZGVmaW5lZCIhPXR5cGVvZiBTZXQmJnNlP29lKChuZXcgU2V0KVtTeW1ib2wuaXRlcmF0b3JdKCkpOnJlLCIlU2hhcmVkQXJyYXlCdWZmZXIlIjoidW5kZWZpbmVkIj09dHlwZW9mIFNoYXJlZEFy''@;'; put 'put ''cmF5QnVmZmVyP3JlOlNoYXJlZEFycmF5QnVmZmVyLCIlU3RyaW5nJSI6U3RyaW5nLCIlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlIjpzZT9vZSgiIltTeW1ib2wuaXRlcmF0b3JdKCkpOnJlLCIlU3ltYm9sJSI6c2U/U3ltYm9sOnJlLCIlU3ludGF4RXJyb3IlIjphZSwiJVRocm93VHlwZUVy''@;'; put 'put ''cm9yJSI6SiwiJVR5cGVkQXJyYXklIjpkZSwiJVR5cGVFcnJvciUiOlcsIiVVaW50OEFycmF5JSI6InVuZGVmaW5lZCI9PXR5cGVvZiBVaW50OEFycmF5P3JlOlVpbnQ4QXJyYXksIiVVaW50OENsYW1wZWRBcnJheSUiOiJ1bmRlZmluZWQiPT10eXBlb2YgVWludDhDbGFtcGVkQXJyYXk/cmU6''@;'; put 'put ''VWludDhDbGFtcGVkQXJyYXksIiVVaW50MTZBcnJheSUiOiJ1bmRlZmluZWQiPT10eXBlb2YgVWludDE2QXJyYXk/cmU6VWludDE2QXJyYXksIiVVaW50MzJBcnJheSUiOiJ1bmRlZmluZWQiPT10eXBlb2YgVWludDMyQXJyYXk/cmU6VWludDMyQXJyYXksIiVVUklFcnJvciUiOlVSSUVycm9y''@;'; put 'put ''LCIlV2Vha01hcCUiOiJ1bmRlZmluZWQiPT10eXBlb2YgV2Vha01hcD9yZTpXZWFrTWFwLCIlV2Vha1JlZiUiOiJ1bmRlZmluZWQiPT10eXBlb2YgV2Vha1JlZj9yZTpXZWFrUmVmLCIlV2Vha1NldCUiOiJ1bmRlZmluZWQiPT10eXBlb2YgV2Vha1NldD9yZTpXZWFrU2V0fSxBZT1mdW5jdGlv''@;'; put 'put ''biBWKFQpe3ZhciBTO2lmKCIlQXN5bmNGdW5jdGlvbiUiPT09VClTPU4oImFzeW5jIGZ1bmN0aW9uICgpIHt9Iik7ZWxzZSBpZigiJUdlbmVyYXRvckZ1bmN0aW9uJSI9PT1UKVM9TigiZnVuY3Rpb24qICgpIHt9Iik7ZWxzZSBpZigiJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lIj09PVQpUz1O''@;'; put 'put ''KCJhc3luYyBmdW5jdGlvbiogKCkge30iKTtlbHNlIGlmKCIlQXN5bmNHZW5lcmF0b3IlIj09PVQpe3ZhciBGPVYoIiVBc3luY0dlbmVyYXRvckZ1bmN0aW9uJSIpO0YmJihTPUYucHJvdG90eXBlKX1lbHNlIGlmKCIlQXN5bmNJdGVyYXRvclByb3RvdHlwZSUiPT09VCl7dmFyIHllPVYoIiVB''@;'; put 'put ''c3luY0dlbmVyYXRvciUiKTt5ZSYmKFM9b2UoeWUucHJvdG90eXBlKSl9cmV0dXJuIHZlW1RdPVMsU30sa2U9eyIlQXJyYXlCdWZmZXJQcm90b3R5cGUlIjpbIkFycmF5QnVmZmVyIiwicHJvdG90eXBlIl0sIiVBcnJheVByb3RvdHlwZSUiOlsiQXJyYXkiLCJwcm90b3R5cGUiXSwiJUFycmF5''@;'; put 'put ''UHJvdG9fZW50cmllcyUiOlsiQXJyYXkiLCJwcm90b3R5cGUiLCJlbnRyaWVzIl0sIiVBcnJheVByb3RvX2ZvckVhY2glIjpbIkFycmF5IiwicHJvdG90eXBlIiwiZm9yRWFjaCJdLCIlQXJyYXlQcm90b19rZXlzJSI6WyJBcnJheSIsInByb3RvdHlwZSIsImtleXMiXSwiJUFycmF5UHJvdG9f''@;'; put 'put ''dmFsdWVzJSI6WyJBcnJheSIsInByb3RvdHlwZSIsInZhbHVlcyJdLCIlQXN5bmNGdW5jdGlvblByb3RvdHlwZSUiOlsiQXN5bmNGdW5jdGlvbiIsInByb3RvdHlwZSJdLCIlQXN5bmNHZW5lcmF0b3IlIjpbIkFzeW5jR2VuZXJhdG9yRnVuY3Rpb24iLCJwcm90b3R5cGUiXSwiJUFzeW5jR2Vu''@;'; put 'put ''ZXJhdG9yUHJvdG90eXBlJSI6WyJBc3luY0dlbmVyYXRvckZ1bmN0aW9uIiwicHJvdG90eXBlIiwicHJvdG90eXBlIl0sIiVCb29sZWFuUHJvdG90eXBlJSI6WyJCb29sZWFuIiwicHJvdG90eXBlIl0sIiVEYXRhVmlld1Byb3RvdHlwZSUiOlsiRGF0YVZpZXciLCJwcm90b3R5cGUiXSwiJURh''@;'; put 'put ''dGVQcm90b3R5cGUlIjpbIkRhdGUiLCJwcm90b3R5cGUiXSwiJUVycm9yUHJvdG90eXBlJSI6WyJFcnJvciIsInByb3RvdHlwZSJdLCIlRXZhbEVycm9yUHJvdG90eXBlJSI6WyJFdmFsRXJyb3IiLCJwcm90b3R5cGUiXSwiJUZsb2F0MzJBcnJheVByb3RvdHlwZSUiOlsiRmxvYXQzMkFycmF5''@;'; put 'put ''IiwicHJvdG90eXBlIl0sIiVGbG9hdDY0QXJyYXlQcm90b3R5cGUlIjpbIkZsb2F0NjRBcnJheSIsInByb3RvdHlwZSJdLCIlRnVuY3Rpb25Qcm90b3R5cGUlIjpbIkZ1bmN0aW9uIiwicHJvdG90eXBlIl0sIiVHZW5lcmF0b3IlIjpbIkdlbmVyYXRvckZ1bmN0aW9uIiwicHJvdG90eXBlIl0s''@;'; put 'put ''IiVHZW5lcmF0b3JQcm90b3R5cGUlIjpbIkdlbmVyYXRvckZ1bmN0aW9uIiwicHJvdG90eXBlIiwicHJvdG90eXBlIl0sIiVJbnQ4QXJyYXlQcm90b3R5cGUlIjpbIkludDhBcnJheSIsInByb3RvdHlwZSJdLCIlSW50MTZBcnJheVByb3RvdHlwZSUiOlsiSW50MTZBcnJheSIsInByb3RvdHlw''@;'; put 'put ''ZSJdLCIlSW50MzJBcnJheVByb3RvdHlwZSUiOlsiSW50MzJBcnJheSIsInByb3RvdHlwZSJdLCIlSlNPTlBhcnNlJSI6WyJKU09OIiwicGFyc2UiXSwiJUpTT05TdHJpbmdpZnklIjpbIkpTT04iLCJzdHJpbmdpZnkiXSwiJU1hcFByb3RvdHlwZSUiOlsiTWFwIiwicHJvdG90eXBlIl0sIiVO''@;'; put 'put ''dW1iZXJQcm90b3R5cGUlIjpbIk51bWJlciIsInByb3RvdHlwZSJdLCIlT2JqZWN0UHJvdG90eXBlJSI6WyJPYmplY3QiLCJwcm90b3R5cGUiXSwiJU9ialByb3RvX3RvU3RyaW5nJSI6WyJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyJdLCIlT2JqUHJvdG9fdmFsdWVPZiUiOlsiT2Jq''@;'; put 'put ''ZWN0IiwicHJvdG90eXBlIiwidmFsdWVPZiJdLCIlUHJvbWlzZVByb3RvdHlwZSUiOlsiUHJvbWlzZSIsInByb3RvdHlwZSJdLCIlUHJvbWlzZVByb3RvX3RoZW4lIjpbIlByb21pc2UiLCJwcm90b3R5cGUiLCJ0aGVuIl0sIiVQcm9taXNlX2FsbCUiOlsiUHJvbWlzZSIsImFsbCJdLCIlUHJv''@;'; put 'put ''bWlzZV9yZWplY3QlIjpbIlByb21pc2UiLCJyZWplY3QiXSwiJVByb21pc2VfcmVzb2x2ZSUiOlsiUHJvbWlzZSIsInJlc29sdmUiXSwiJVJhbmdlRXJyb3JQcm90b3R5cGUlIjpbIlJhbmdlRXJyb3IiLCJwcm90b3R5cGUiXSwiJVJlZmVyZW5jZUVycm9yUHJvdG90eXBlJSI6WyJSZWZlcmVu''@;'; put 'put ''Y2VFcnJvciIsInByb3RvdHlwZSJdLCIlUmVnRXhwUHJvdG90eXBlJSI6WyJSZWdFeHAiLCJwcm90b3R5cGUiXSwiJVNldFByb3RvdHlwZSUiOlsiU2V0IiwicHJvdG90eXBlIl0sIiVTaGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZSUiOlsiU2hhcmVkQXJyYXlCdWZmZXIiLCJwcm90b3R5cGUi''@;'; put 'put ''XSwiJVN0cmluZ1Byb3RvdHlwZSUiOlsiU3RyaW5nIiwicHJvdG90eXBlIl0sIiVTeW1ib2xQcm90b3R5cGUlIjpbIlN5bWJvbCIsInByb3RvdHlwZSJdLCIlU3ludGF4RXJyb3JQcm90b3R5cGUlIjpbIlN5bnRheEVycm9yIiwicHJvdG90eXBlIl0sIiVUeXBlZEFycmF5UHJvdG90eXBlJSI6''@;'; put 'put ''WyJUeXBlZEFycmF5IiwicHJvdG90eXBlIl0sIiVUeXBlRXJyb3JQcm90b3R5cGUlIjpbIlR5cGVFcnJvciIsInByb3RvdHlwZSJdLCIlVWludDhBcnJheVByb3RvdHlwZSUiOlsiVWludDhBcnJheSIsInByb3RvdHlwZSJdLCIlVWludDhDbGFtcGVkQXJyYXlQcm90b3R5cGUlIjpbIlVpbnQ4''@;'; put 'put ''Q2xhbXBlZEFycmF5IiwicHJvdG90eXBlIl0sIiVVaW50MTZBcnJheVByb3RvdHlwZSUiOlsiVWludDE2QXJyYXkiLCJwcm90b3R5cGUiXSwiJVVpbnQzMkFycmF5UHJvdG90eXBlJSI6WyJVaW50MzJBcnJheSIsInByb3RvdHlwZSJdLCIlVVJJRXJyb3JQcm90b3R5cGUlIjpbIlVSSUVycm9y''@;'; put 'put ''IiwicHJvdG90eXBlIl0sIiVXZWFrTWFwUHJvdG90eXBlJSI6WyJXZWFrTWFwIiwicHJvdG90eXBlIl0sIiVXZWFrU2V0UHJvdG90eXBlJSI6WyJXZWFrU2V0IiwicHJvdG90eXBlIl19LFNlPWooODYxMiksSWU9aig3NjQyKSxUZT1TZS5jYWxsKEZ1bmN0aW9uLmNhbGwsQXJyYXkucHJvdG90''@;'; put 'put ''eXBlLmNvbmNhdCksTWU9U2UuY2FsbChGdW5jdGlvbi5hcHBseSxBcnJheS5wcm90b3R5cGUuc3BsaWNlKSxoZT1TZS5jYWxsKEZ1bmN0aW9uLmNhbGwsU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKSxPPVNlLmNhbGwoRnVuY3Rpb24uY2FsbCxTdHJpbmcucHJvdG90eXBlLnNsaWNlKSx6PVNl''@;'; put 'put ''LmNhbGwoRnVuY3Rpb24uY2FsbCxSZWdFeHAucHJvdG90eXBlLmV4ZWMpLGVlPS9bXiUuW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwlJCkpL2csbmU9L1xcKFxcKT8vZyx4PWZ1''@;'; put 'put ''bmN0aW9uKFYpe3ZhciBUPU8oViwwLDEpLFM9TyhWLC0xKTtpZigiJSI9PT1UJiYiJSIhPT1TKXRocm93IG5ldyBhZSgiaW52YWxpZCBpbnRyaW5zaWMgc3ludGF4LCBleHBlY3RlZCBjbG9zaW5nIGAlYCIpO2lmKCIlIj09PVMmJiIlIiE9PVQpdGhyb3cgbmV3IGFlKCJpbnZhbGlkIGludHJp''@;'; put 'put ''bnNpYyBzeW50YXgsIGV4cGVjdGVkIG9wZW5pbmcgYCVgIik7dmFyIEY9W107cmV0dXJuIGhlKFYsZWUsZnVuY3Rpb24oeWUsQ2UsRGUsUGUpe0ZbRi5sZW5ndGhdPURlP2hlKFBlLG5lLCIkMSIpOkNlfHx5ZX0pLEZ9LFA9ZnVuY3Rpb24oVixUKXt2YXIgUyxGPVY7aWYoSWUoa2UsRikmJihG''@;'; put 'put ''PSIlIisoUz1rZVtGXSlbMF0rIiUiKSxJZSh2ZSxGKSl7dmFyIHllPXZlW0ZdO2lmKHllPT09Y2UmJih5ZT1BZShGKSksdm9pZCAwPT09eWUmJiFUKXRocm93IG5ldyBXKCJpbnRyaW5zaWMgIitWKyIgZXhpc3RzLCBidXQgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGZpbGUgYW4gaXNzdWUh''@;'; put 'put ''Iik7cmV0dXJue2FsaWFzOlMsbmFtZTpGLHZhbHVlOnllfX10aHJvdyBuZXcgYWUoImludHJpbnNpYyAiK1YrIiBkb2VzIG5vdCBleGlzdCEiKX07VS5leHBvcnRzPWZ1bmN0aW9uKFYsVCl7aWYoInN0cmluZyIhPXR5cGVvZiBWfHwwPT09Vi5sZW5ndGgpdGhyb3cgbmV3IFcoImludHJpbnNp''@;'; put 'put ''YyBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nIik7aWYoYXJndW1lbnRzLmxlbmd0aD4xJiYiYm9vbGVhbiIhPXR5cGVvZiBUKXRocm93IG5ldyBXKCciYWxsb3dNaXNzaW5nIiBhcmd1bWVudCBtdXN0IGJlIGEgYm9vbGVhbicpO2lmKG51bGw9PT16KC9eJT9bXiVdKiU/JC9nLFYp''@;'; put 'put ''KXRocm93IG5ldyBhZSgiYCVgIG1heSBub3QgYmUgcHJlc2VudCBhbnl3aGVyZSBidXQgYXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIHRoZSBpbnRyaW5zaWMgbmFtZSIpO3ZhciBTPXgoViksRj1TLmxlbmd0aD4wP1NbMF06IiIseWU9UCgiJSIrRisiJSIsVCksQ2U9eWUubmFtZSxEZT15''@;'; put 'put ''ZS52YWx1ZSxQZT0hMSxRZT15ZS5hbGlhcztRZSYmKEY9UWVbMF0sTWUoUyxUZShbMCwxXSxRZSkpKTtmb3IodmFyICRlPTEsZ3Q9ITA7JGU8Uy5sZW5ndGg7JGUrPTEpe3ZhciB3dD1TWyRlXSxtdD1PKHd0LDAsMSksdnQ9Tyh3dCwtMSk7aWYoKCciJz09PW10fHwiJyI9PT1tdHx8ImAiPT09''@;'; put 'put ''bXR8fCciJz09PXZ0fHwiJyI9PT12dHx8ImAiPT09dnQpJiZtdCE9PXZ0KXRocm93IG5ldyBhZSgicHJvcGVydHkgbmFtZXMgd2l0aCBxdW90ZXMgbXVzdCBoYXZlIG1hdGNoaW5nIHF1b3RlcyIpO2lmKCJjb25zdHJ1Y3RvciIhPT13dCYmZ3R8fChQZT0hMCksSWUodmUsQ2U9IiUiKyhGKz0i''@;'; put 'put ''LiIrd3QpKyIlIikpRGU9dmVbQ2VdO2Vsc2UgaWYobnVsbCE9RGUpe2lmKCEod3QgaW4gRGUpKXtpZighVCl0aHJvdyBuZXcgVygiYmFzZSBpbnRyaW5zaWMgZm9yICIrVisiIGV4aXN0cywgYnV0IHRoZSBwcm9wZXJ0eSBpcyBub3QgYXZhaWxhYmxlLiIpO3JldHVybn1pZih0ZSYmJGUrMT49''@;'; put 'put ''Uy5sZW5ndGgpe3ZhciBBdD10ZShEZSx3dCk7RGU9KGd0PSEhQXQpJiYiZ2V0ImluIEF0JiYhKCJvcmlnaW5hbFZhbHVlImluIEF0LmdldCk/QXQuZ2V0OkRlW3d0XX1lbHNlIGd0PUllKERlLHd0KSxEZT1EZVt3dF07Z3QmJiFQZSYmKHZlW0NlXT1EZSl9fXJldHVybiBEZX19LDY3NzI6KFUs''@;'; put 'put ''USxqKT0+e3ZhciByZT1qKDQxNTUpO2Z1bmN0aW9uIGFlKGRlLHZlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRlLHZlKX1RLnNldG9wdHM9ZnVuY3Rpb24oZGUsdmUsQWUpe2lmKEFlfHwoQWU9e30pLEFlLm1hdGNoQmFzZSYmLTE9PT12ZS5pbmRleE9m''@;'; put 'put ''KCIvIikpe2lmKEFlLm5vZ2xvYnN0YXIpdGhyb3cgbmV3IEVycm9yKCJiYXNlIG1hdGNoaW5nIHJlcXVpcmVzIGdsb2JzdGFyIik7dmU9IioqLyIrdmV9dmFyIFNlO2RlLnNpbGVudD0hIUFlLnNpbGVudCxkZS5wYXR0ZXJuPXZlLGRlLnN0cmljdD0hMSE9PUFlLnN0cmljdCxkZS5yZWFscGF0''@;'; put 'put ''aD0hIUFlLnJlYWxwYXRoLGRlLnJlYWxwYXRoQ2FjaGU9QWUucmVhbHBhdGhDYWNoZXx8T2JqZWN0LmNyZWF0ZShudWxsKSxkZS5mb2xsb3c9ISFBZS5mb2xsb3csZGUuZG90PSEhQWUuZG90LGRlLm1hcms9ISFBZS5tYXJrLGRlLm5vZGlyPSEhQWUubm9kaXIsZGUubm9kaXImJihkZS5tYXJr''@;'; put 'put ''PSEwKSxkZS5zeW5jPSEhQWUuc3luYyxkZS5ub3VuaXF1ZT0hIUFlLm5vdW5pcXVlLGRlLm5vbnVsbD0hIUFlLm5vbnVsbCxkZS5ub3NvcnQ9ISFBZS5ub3NvcnQsZGUubm9jYXNlPSEhQWUubm9jYXNlLGRlLnN0YXQ9ISFBZS5zdGF0LGRlLm5vcHJvY2Vzcz0hIUFlLm5vcHJvY2VzcyxkZS5h''@;'; put 'put ''YnNvbHV0ZT0hIUFlLmFic29sdXRlLGRlLmZzPUFlLmZzfHxZLGRlLm1heExlbmd0aD1BZS5tYXhMZW5ndGh8fDEvMCxkZS5jYWNoZT1BZS5jYWNoZXx8T2JqZWN0LmNyZWF0ZShudWxsKSxkZS5zdGF0Q2FjaGU9QWUuc3RhdENhY2hlfHxPYmplY3QuY3JlYXRlKG51bGwpLGRlLnN5bWxpbmtz''@;'; put 'put ''PUFlLnN5bWxpbmtzfHxPYmplY3QuY3JlYXRlKG51bGwpLChTZT1kZSkuaWdub3JlPUFlLmlnbm9yZXx8W10sQXJyYXkuaXNBcnJheShTZS5pZ25vcmUpfHwoU2UuaWdub3JlPVtTZS5pZ25vcmVdKSxTZS5pZ25vcmUubGVuZ3RoJiYoU2UuaWdub3JlPVNlLmlnbm9yZS5tYXAoc2UpKSxkZS5j''@;'; put 'put ''aGFuZ2VkQ3dkPSExO3ZhciBrZT1yZS5jd2QoKTthZShBZSwiY3dkIik/KGRlLmN3ZD1XLnJlc29sdmUoQWUuY3dkKSxkZS5jaGFuZ2VkQ3dkPWRlLmN3ZCE9PWtlKTpkZS5jd2Q9a2UsZGUucm9vdD1BZS5yb290fHxXLnJlc29sdmUoZGUuY3dkLCIvIiksZGUucm9vdD1XLnJlc29sdmUoZGUu''@;'; put 'put ''cm9vdCksIndpbjMyIj09PXJlLnBsYXRmb3JtJiYoZGUucm9vdD1kZS5yb290LnJlcGxhY2UoL1xcL2csIi8iKSksZGUuY3dkQWJzPXRlKGRlLmN3ZCk/ZGUuY3dkOm9lKGRlLGRlLmN3ZCksIndpbjMyIj09PXJlLnBsYXRmb3JtJiYoZGUuY3dkQWJzPWRlLmN3ZEFicy5yZXBsYWNlKC9cXC9n''@;'; put 'put ''LCIvIikpLGRlLm5vbW91bnQ9ISFBZS5ub21vdW50LEFlLm5vbmVnYXRlPSEwLEFlLm5vY29tbWVudD0hMCxBZS5hbGxvd1dpbmRvd3NFc2NhcGU9ITEsZGUubWluaW1hdGNoPW5ldyBLKHZlLEFlKSxkZS5vcHRpb25zPWRlLm1pbmltYXRjaC5vcHRpb25zfSxRLm93blByb3A9YWUsUS5tYWtl''@;'; put 'put ''QWJzPW9lLFEuZmluaXNoPWZ1bmN0aW9uKGRlKXtmb3IodmFyIHZlPWRlLm5vdW5pcXVlLEFlPXZlP1tdOk9iamVjdC5jcmVhdGUobnVsbCksa2U9MCxTZT1kZS5tYXRjaGVzLmxlbmd0aDtrZTxTZTtrZSsrKXt2YXIgSWU9ZGUubWF0Y2hlc1trZV07aWYoSWUmJjAhPT1PYmplY3Qua2V5cyhJ''@;'; put 'put ''ZSkubGVuZ3RoKXt2YXIgVGU9T2JqZWN0LmtleXMoSWUpO3ZlP0FlLnB1c2guYXBwbHkoQWUsVGUpOlRlLmZvckVhY2goZnVuY3Rpb24oaGUpe0FlW2hlXT0hMH0pfWVsc2UgaWYoZGUubm9udWxsKXt2YXIgTWU9ZGUubWluaW1hdGNoLmdsb2JTZXRba2VdO3ZlP0FlLnB1c2goTWUpOkFlW01l''@;'; put 'put ''XT0hMH19aWYodmV8fChBZT1PYmplY3Qua2V5cyhBZSkpLGRlLm5vc29ydHx8KEFlPUFlLnNvcnQoSikpLGRlLm1hcmspe2ZvcihrZT0wO2tlPEFlLmxlbmd0aDtrZSsrKUFlW2tlXT1kZS5fbWFyayhBZVtrZV0pO2RlLm5vZGlyJiYoQWU9QWUuZmlsdGVyKGZ1bmN0aW9uKGhlKXt2YXIgTz0h''@;'; put 'put ''L1wvJC8udGVzdChoZSksej1kZS5jYWNoZVtoZV18fGRlLmNhY2hlW29lKGRlLGhlKV07cmV0dXJuIE8mJnomJihPPSJESVIiIT09eiYmIUFycmF5LmlzQXJyYXkoeikpLE99KSl9ZGUuaWdub3JlLmxlbmd0aCYmKEFlPUFlLmZpbHRlcihmdW5jdGlvbihoZSl7cmV0dXJuIWNlKGRlLGhlKX0p''@;'; put 'put ''KSxkZS5mb3VuZD1BZX0sUS5tYXJrPWZ1bmN0aW9uKGRlLHZlKXt2YXIgQWU9b2UoZGUsdmUpLGtlPWRlLmNhY2hlW0FlXSxTZT12ZTtpZihrZSl7dmFyIEllPSJESVIiPT09a2V8fEFycmF5LmlzQXJyYXkoa2UpLFRlPSIvIj09PXZlLnNsaWNlKC0xKTtpZihJZSYmIVRlP1NlKz0iLyI6IUll''@;'; put 'put ''JiZUZSYmKFNlPVNlLnNsaWNlKDAsLTEpKSxTZSE9PXZlKXt2YXIgTWU9b2UoZGUsU2UpO2RlLnN0YXRDYWNoZVtNZV09ZGUuc3RhdENhY2hlW0FlXSxkZS5jYWNoZVtNZV09ZGUuY2FjaGVbQWVdfX1yZXR1cm4gU2V9LFEuaXNJZ25vcmVkPWNlLFEuY2hpbGRyZW5JZ25vcmVkPWZ1bmN0aW9u''@;'; put 'put ''KGRlLHZlKXtyZXR1cm4hIWRlLmlnbm9yZS5sZW5ndGgmJmRlLmlnbm9yZS5zb21lKGZ1bmN0aW9uKEFlKXtyZXR1cm4hKCFBZS5nbWF0Y2hlcnx8IUFlLmdtYXRjaGVyLm1hdGNoKHZlKSl9KX07dmFyIFk9aigzNzEwKSxXPWooMjUyMCksTj1qKDExNzEpLHRlPWooNDA5NSksSz1OLk1pbmlt''@;'; put 'put ''YXRjaDtmdW5jdGlvbiBKKGRlLHZlKXtyZXR1cm4gZGUubG9jYWxlQ29tcGFyZSh2ZSwiZW4iKX1mdW5jdGlvbiBzZShkZSl7dmFyIHZlPW51bGw7aWYoIi8qKiI9PT1kZS5zbGljZSgtMykpe3ZhciBBZT1kZS5yZXBsYWNlKC8oXC9cKlwqKSskLywiIik7dmU9bmV3IEsoQWUse2RvdDohMH0p''@;'; put 'put ''fXJldHVybnttYXRjaGVyOm5ldyBLKGRlLHtkb3Q6ITB9KSxnbWF0Y2hlcjp2ZX19ZnVuY3Rpb24gb2UoZGUsdmUpe3ZhciBBZT12ZTtyZXR1cm4gQWU9Ii8iPT09dmUuY2hhckF0KDApP1cuam9pbihkZS5yb290LHZlKTp0ZSh2ZSl8fCIiPT09dmU/dmU6ZGUuY2hhbmdlZEN3ZD9XLnJlc29s''@;'; put 'put ''dmUoZGUuY3dkLHZlKTpXLnJlc29sdmUodmUpLCJ3aW4zMiI9PT1yZS5wbGF0Zm9ybSYmKEFlPUFlLnJlcGxhY2UoL1xcL2csIi8iKSksQWV9ZnVuY3Rpb24gY2UoZGUsdmUpe3JldHVybiEhZGUuaWdub3JlLmxlbmd0aCYmZGUuaWdub3JlLnNvbWUoZnVuY3Rpb24oQWUpe3JldHVybiBBZS5t''@;'; put 'put ''YXRjaGVyLm1hdGNoKHZlKXx8ISghQWUuZ21hdGNoZXJ8fCFBZS5nbWF0Y2hlci5tYXRjaCh2ZSkpfSl9fSwyODg0OihVLFEsaik9Pnt2YXIgcmU9aig0MTU1KSxhZT1qKDUxMDgpO1UuZXhwb3J0cz1UZTt2YXIgWT1qKDczMzQpLFc9aigxMTcxKSxOPWooNTcxNyksdGU9aig3MTg3KS5FdmVu''@;'; put 'put ''dEVtaXR0ZXIsSz1qKDI1MjApLEo9aig5MjgyKSxzZT1qKDQwOTUpLG9lPWooNDc1MSksY2U9aig2NzcyKSxkZT1jZS5zZXRvcHRzLHZlPWNlLm93blByb3AsQWU9aig3ODQ0KSxrZT0oaig5NTM5KSxjZS5jaGlsZHJlbklnbm9yZWQpLFNlPWNlLmlzSWdub3JlZCxJZT1qKDc3OCk7ZnVuY3Rp''@;'; put 'put ''b24gVGUoTyx6LGVlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgeiYmKGVlPXosej17fSksenx8KHo9e30pLHouc3luYyl7aWYoZWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgcHJvdmlkZWQgdG8gc3luYyBnbG9iIik7cmV0dXJuIG9lKE8seil9cmV0dXJuIG5ldyBoZShPLHosZWUp''@;'; put 'put ''fVRlLnN5bmM9b2U7dmFyIE1lPVRlLkdsb2JTeW5jPW9lLkdsb2JTeW5jO2Z1bmN0aW9uIGhlKE8seixlZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHomJihlZT16LHo9bnVsbCkseiYmei5zeW5jKXtpZihlZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBwcm92aWRlZCB0byBzeW5j''@;'; put 'put ''IGdsb2IiKTtyZXR1cm4gbmV3IE1lKE8seil9aWYoISh0aGlzIGluc3RhbmNlb2YgaGUpKXJldHVybiBuZXcgaGUoTyx6LGVlKTtkZSh0aGlzLE8seiksdGhpcy5fZGlkUmVhbFBhdGg9ITE7dmFyIG5lPXRoaXMubWluaW1hdGNoLnNldC5sZW5ndGg7dGhpcy5tYXRjaGVzPW5ldyBBcnJheShu''@;'; put 'put ''ZSksImZ1bmN0aW9uIj09dHlwZW9mIGVlJiYoZWU9SWUoZWUpLHRoaXMub24oImVycm9yIixlZSksdGhpcy5vbigiZW5kIixmdW5jdGlvbihUKXtlZShudWxsLFQpfSkpO3ZhciB4PXRoaXM7aWYodGhpcy5fcHJvY2Vzc2luZz0wLHRoaXMuX2VtaXRRdWV1ZT1bXSx0aGlzLl9wcm9jZXNzUXVl''@;'; put 'put ''dWU9W10sdGhpcy5wYXVzZWQ9ITEsdGhpcy5ub3Byb2Nlc3MpcmV0dXJuIHRoaXM7aWYoMD09PW5lKXJldHVybiBWKCk7Zm9yKHZhciBQPTA7UDxuZTtQKyspdGhpcy5fcHJvY2Vzcyh0aGlzLm1pbmltYXRjaC5zZXRbUF0sUCwhMSxWKTtmdW5jdGlvbiBWKCl7LS14Ll9wcm9jZXNzaW5nLHgu''@;'; put 'put ''X3Byb2Nlc3Npbmc8PTAmJnguX2ZpbmlzaCgpfX1UZS5nbG9iPVRlLFRlLmhhc01hZ2ljPWZ1bmN0aW9uKE8seil7dmFyIGVlPWZ1bmN0aW9uKFAsVil7aWYobnVsbD09PVZ8fCJvYmplY3QiIT10eXBlb2YgVilyZXR1cm4gUDtmb3IodmFyIFQ9T2JqZWN0LmtleXMoViksUz1ULmxlbmd0aDtT''@;'; put 'put ''LS07KVBbVFtTXV09VltUW1NdXTtyZXR1cm4gUH0oe30seik7ZWUubm9wcm9jZXNzPSEwO3ZhciBuZT1uZXcgaGUoTyxlZSkubWluaW1hdGNoLnNldDtpZighTylyZXR1cm4hMTtpZihuZS5sZW5ndGg+MSlyZXR1cm4hMDtmb3IodmFyIHg9MDt4PG5lWzBdLmxlbmd0aDt4KyspaWYoInN0cmlu''@;'; put 'put ''ZyIhPXR5cGVvZiBuZVswXVt4XSlyZXR1cm4hMDtyZXR1cm4hMX0sVGUuR2xvYj1oZSxOKGhlLHRlKSxoZS5wcm90b3R5cGUuX2ZpbmlzaD1mdW5jdGlvbigpe2lmKEoodGhpcyBpbnN0YW5jZW9mIGhlKSwhdGhpcy5hYm9ydGVkKXtpZih0aGlzLnJlYWxwYXRoJiYhdGhpcy5fZGlkUmVhbHBh''@;'; put 'put ''dGgpcmV0dXJuIHRoaXMuX3JlYWxwYXRoKCk7Y2UuZmluaXNoKHRoaXMpLHRoaXMuZW1pdCgiZW5kIix0aGlzLmZvdW5kKX19LGhlLnByb3RvdHlwZS5fcmVhbHBhdGg9ZnVuY3Rpb24oKXtpZighdGhpcy5fZGlkUmVhbHBhdGgpe3RoaXMuX2RpZFJlYWxwYXRoPSEwO3ZhciBPPXRoaXMubWF0''@;'; put 'put ''Y2hlcy5sZW5ndGg7aWYoMD09PU8pcmV0dXJuIHRoaXMuX2ZpbmlzaCgpO2Zvcih2YXIgej10aGlzLGVlPTA7ZWU8dGhpcy5tYXRjaGVzLmxlbmd0aDtlZSsrKXRoaXMuX3JlYWxwYXRoU2V0KGVlLG5lKX1mdW5jdGlvbiBuZSgpezA9PS0tTyYmei5fZmluaXNoKCl9fSxoZS5wcm90b3R5cGUu''@;'; put 'put ''X3JlYWxwYXRoU2V0PWZ1bmN0aW9uKE8seil7dmFyIGVlPXRoaXMubWF0Y2hlc1tPXTtpZighZWUpcmV0dXJuIHooKTt2YXIgbmU9T2JqZWN0LmtleXMoZWUpLHg9dGhpcyxQPW5lLmxlbmd0aDtpZigwPT09UClyZXR1cm4geigpO3ZhciBWPXRoaXMubWF0Y2hlc1tPXT1PYmplY3QuY3JlYXRl''@;'; put 'put ''KG51bGwpO25lLmZvckVhY2goZnVuY3Rpb24oVCxTKXtUPXguX21ha2VBYnMoVCksWS5yZWFscGF0aChULHgucmVhbHBhdGhDYWNoZSxmdW5jdGlvbihGLHllKXtGPyJzdGF0Ij09PUYuc3lzY2FsbD9WW1RdPSEwOnguZW1pdCgiZXJyb3IiLEYpOlZbeWVdPSEwLDA9PS0tUCYmKHgubWF0Y2hl''@;'; put 'put ''c1tPXT1WLHooKSl9KX0pfSxoZS5wcm90b3R5cGUuX21hcms9ZnVuY3Rpb24oTyl7cmV0dXJuIGNlLm1hcmsodGhpcyxPKX0saGUucHJvdG90eXBlLl9tYWtlQWJzPWZ1bmN0aW9uKE8pe3JldHVybiBjZS5tYWtlQWJzKHRoaXMsTyl9LGhlLnByb3RvdHlwZS5hYm9ydD1mdW5jdGlvbigpe3Ro''@;'; put 'put ''aXMuYWJvcnRlZD0hMCx0aGlzLmVtaXQoImFib3J0Iil9LGhlLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbigpe3RoaXMucGF1c2VkfHwodGhpcy5wYXVzZWQ9ITAsdGhpcy5lbWl0KCJwYXVzZSIpKX0saGUucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe2lmKHRoaXMucGF1c2VkKXtpZih0''@;'; put 'put ''aGlzLmVtaXQoInJlc3VtZSIpLHRoaXMucGF1c2VkPSExLHRoaXMuX2VtaXRRdWV1ZS5sZW5ndGgpe3ZhciBPPXRoaXMuX2VtaXRRdWV1ZS5zbGljZSgwKTt0aGlzLl9lbWl0UXVldWUubGVuZ3RoPTA7Zm9yKHZhciB6PTA7ejxPLmxlbmd0aDt6Kyspe3ZhciBlZT1PW3pdO3RoaXMuX2VtaXRN''@;'; put 'put ''YXRjaChlZVswXSxlZVsxXSl9fWlmKHRoaXMuX3Byb2Nlc3NRdWV1ZS5sZW5ndGgpe3ZhciBuZT10aGlzLl9wcm9jZXNzUXVldWUuc2xpY2UoMCk7Zm9yKHRoaXMuX3Byb2Nlc3NRdWV1ZS5sZW5ndGg9MCx6PTA7ejxuZS5sZW5ndGg7eisrKXt2YXIgeD1uZVt6XTt0aGlzLl9wcm9jZXNzaW5n''@;'; put 'put ''LS0sdGhpcy5fcHJvY2Vzcyh4WzBdLHhbMV0seFsyXSx4WzNdKX19fX0saGUucHJvdG90eXBlLl9wcm9jZXNzPWZ1bmN0aW9uKE8seixlZSxuZSl7aWYoSih0aGlzIGluc3RhbmNlb2YgaGUpLEooImZ1bmN0aW9uIj09dHlwZW9mIG5lKSwhdGhpcy5hYm9ydGVkKWlmKHRoaXMuX3Byb2Nlc3Np''@;'; put 'put ''bmcrKyx0aGlzLnBhdXNlZCl0aGlzLl9wcm9jZXNzUXVldWUucHVzaChbTyx6LGVlLG5lXSk7ZWxzZXtmb3IodmFyIHgsUD0wOyJzdHJpbmciPT10eXBlb2YgT1tQXTspUCsrO3N3aXRjaChQKXtjYXNlIE8ubGVuZ3RoOnJldHVybiB2b2lkIHRoaXMuX3Byb2Nlc3NTaW1wbGUoTy5qb2luKCIv''@;'; put 'put ''IikseixuZSk7Y2FzZSAwOng9bnVsbDticmVhaztkZWZhdWx0Ong9Ty5zbGljZSgwLFApLmpvaW4oIi8iKX12YXIgVixUPU8uc2xpY2UoUCk7bnVsbD09PXg/Vj0iLiI6KChzZSh4KXx8c2UoTy5tYXAoZnVuY3Rpb24oRil7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBGP0Y6IlsqXSJ9KS5qb2lu''@;'; put 'put ''KCIvIikpKSYmKHgmJnNlKHgpfHwoeD0iLyIreCkpLFY9eCk7dmFyIFM9dGhpcy5fbWFrZUFicyhWKTtpZihrZSh0aGlzLFYpKXJldHVybiBuZSgpO1RbMF09PT1XLkdMT0JTVEFSP3RoaXMuX3Byb2Nlc3NHbG9iU3Rhcih4LFYsUyxULHosZWUsbmUpOnRoaXMuX3Byb2Nlc3NSZWFkZGlyKHgs''@;'; put 'put ''VixTLFQseixlZSxuZSl9fSxoZS5wcm90b3R5cGUuX3Byb2Nlc3NSZWFkZGlyPWZ1bmN0aW9uKE8seixlZSxuZSx4LFAsVil7dmFyIFQ9dGhpczt0aGlzLl9yZWFkZGlyKGVlLFAsZnVuY3Rpb24oUyxGKXtyZXR1cm4gVC5fcHJvY2Vzc1JlYWRkaXIyKE8seixlZSxuZSx4LFAsRixWKX0pfSxo''@;'; put 'put ''ZS5wcm90b3R5cGUuX3Byb2Nlc3NSZWFkZGlyMj1mdW5jdGlvbihPLHosZWUsbmUseCxQLFYsVCl7aWYoIVYpcmV0dXJuIFQoKTtmb3IodmFyIFM9bmVbMF0sRj0hIXRoaXMubWluaW1hdGNoLm5lZ2F0ZSxDZT10aGlzLmRvdHx8Ii4iPT09Uy5fZ2xvYi5jaGFyQXQoMCksRGU9W10sUGU9MDtQ''@;'; put 'put ''ZTxWLmxlbmd0aDtQZSsrKSgiLiIhPT0oJGU9VltQZV0pLmNoYXJBdCgwKXx8Q2UpJiYoRiYmIU8/ISRlLm1hdGNoKFMpOiRlLm1hdGNoKFMpKSYmRGUucHVzaCgkZSk7dmFyIFFlPURlLmxlbmd0aDtpZigwPT09UWUpcmV0dXJuIFQoKTtpZigxPT09bmUubGVuZ3RoJiYhdGhpcy5tYXJrJiYh''@;'; put 'put ''dGhpcy5zdGF0KXtmb3IodGhpcy5tYXRjaGVzW3hdfHwodGhpcy5tYXRjaGVzW3hdPU9iamVjdC5jcmVhdGUobnVsbCkpLFBlPTA7UGU8UWU7UGUrKyl7dmFyICRlPURlW1BlXTtPJiYoJGU9Ii8iIT09Tz9PKyIvIiskZTpPKyRlKSwiLyIhPT0kZS5jaGFyQXQoMCl8fHRoaXMubm9tb3VudHx8''@;'; put 'put ''KCRlPUsuam9pbih0aGlzLnJvb3QsJGUpKSx0aGlzLl9lbWl0TWF0Y2goeCwkZSl9cmV0dXJuIFQoKX1mb3IobmUuc2hpZnQoKSxQZT0wO1BlPFFlO1BlKyspJGU9RGVbUGVdLE8mJigkZT0iLyIhPT1PP08rIi8iKyRlOk8rJGUpLHRoaXMuX3Byb2Nlc3MoWyRlXS5jb25jYXQobmUpLHgsUCxU''@;'; put 'put ''KTtUKCl9LGhlLnByb3RvdHlwZS5fZW1pdE1hdGNoPWZ1bmN0aW9uKE8seil7aWYoIXRoaXMuYWJvcnRlZCYmIVNlKHRoaXMseikpaWYodGhpcy5wYXVzZWQpdGhpcy5fZW1pdFF1ZXVlLnB1c2goW08sel0pO2Vsc2V7dmFyIGVlPXNlKHopP3o6dGhpcy5fbWFrZUFicyh6KTtpZih0aGlzLm1h''@;'; put 'put ''cmsmJih6PXRoaXMuX21hcmsoeikpLHRoaXMuYWJzb2x1dGUmJih6PWVlKSwhdGhpcy5tYXRjaGVzW09dW3pdKXtpZih0aGlzLm5vZGlyKXt2YXIgbmU9dGhpcy5jYWNoZVtlZV07aWYoIkRJUiI9PT1uZXx8QXJyYXkuaXNBcnJheShuZSkpcmV0dXJufXRoaXMubWF0Y2hlc1tPXVt6XT0hMDt2''@;'; put 'put ''YXIgeD10aGlzLnN0YXRDYWNoZVtlZV07eCYmdGhpcy5lbWl0KCJzdGF0Iix6LHgpLHRoaXMuZW1pdCgibWF0Y2giLHopfX19LGhlLnByb3RvdHlwZS5fcmVhZGRpckluR2xvYlN0YXI9ZnVuY3Rpb24oTyx6KXtpZighdGhpcy5hYm9ydGVkKXtpZih0aGlzLmZvbGxvdylyZXR1cm4gdGhpcy5f''@;'; put 'put ''cmVhZGRpcihPLCExLHopO3ZhciBlZT10aGlzLG5lPUFlKCJsc3RhdFwwIitPLGZ1bmN0aW9uKHgsUCl7aWYoeCYmIkVOT0VOVCI9PT14LmNvZGUpcmV0dXJuIHooKTt2YXIgVj1QJiZQLmlzU3ltYm9saWNMaW5rKCk7ZWUuc3ltbGlua3NbT109VixWfHwhUHx8UC5pc0RpcmVjdG9yeSgpP2Vl''@;'; put 'put ''Ll9yZWFkZGlyKE8sITEseik6KGVlLmNhY2hlW09dPSJGSUxFIix6KCkpfSk7bmUmJmVlLmZzLmxzdGF0KE8sbmUpfX0saGUucHJvdG90eXBlLl9yZWFkZGlyPWZ1bmN0aW9uKE8seixlZSl7aWYoIXRoaXMuYWJvcnRlZCYmKGVlPUFlKCJyZWFkZGlyXDAiK08rIlwwIit6LGVlKSkpe2lmKHom''@;'; put 'put ''JiF2ZSh0aGlzLnN5bWxpbmtzLE8pKXJldHVybiB0aGlzLl9yZWFkZGlySW5HbG9iU3RhcihPLGVlKTtpZih2ZSh0aGlzLmNhY2hlLE8pKXt2YXIgbmU9dGhpcy5jYWNoZVtPXTtpZighbmV8fCJGSUxFIj09PW5lKXJldHVybiBlZSgpO2lmKEFycmF5LmlzQXJyYXkobmUpKXJldHVybiBlZShu''@;'; put 'put ''dWxsLG5lKX10aGlzLmZzLnJlYWRkaXIoTywoeD10aGlzLFA9TyxWPWVlLGZ1bmN0aW9uKFQsUyl7VD94Ll9yZWFkZGlyRXJyb3IoUCxULFYpOnguX3JlYWRkaXJFbnRyaWVzKFAsUyxWKX0pKX12YXIgeCxQLFZ9LGhlLnByb3RvdHlwZS5fcmVhZGRpckVudHJpZXM9ZnVuY3Rpb24oTyx6LGVl''@;'; put 'put ''KXtpZighdGhpcy5hYm9ydGVkKXtpZighdGhpcy5tYXJrJiYhdGhpcy5zdGF0KWZvcih2YXIgbmU9MDtuZTx6Lmxlbmd0aDtuZSsrKXt2YXIgeD16W25lXTt0aGlzLmNhY2hlW3g9Ii8iPT09Tz9PK3g6TysiLyIreF09ITB9cmV0dXJuIHRoaXMuY2FjaGVbT109eixlZShudWxsLHopfX0saGUu''@;'; put 'put ''cHJvdG90eXBlLl9yZWFkZGlyRXJyb3I9ZnVuY3Rpb24oTyx6LGVlKXtpZighdGhpcy5hYm9ydGVkKXtzd2l0Y2goei5jb2RlKXtjYXNlIkVOT1RTVVAiOmNhc2UiRU5PVERJUiI6dmFyIG5lPXRoaXMuX21ha2VBYnMoTyk7aWYodGhpcy5jYWNoZVtuZV09IkZJTEUiLG5lPT09dGhpcy5jd2RB''@;'; put 'put ''YnMpe3ZhciB4PW5ldyBFcnJvcih6LmNvZGUrIiBpbnZhbGlkIGN3ZCAiK3RoaXMuY3dkKTt4LnBhdGg9dGhpcy5jd2QseC5jb2RlPXouY29kZSx0aGlzLmVtaXQoImVycm9yIix4KSx0aGlzLmFib3J0KCl9YnJlYWs7Y2FzZSJFTk9FTlQiOmNhc2UiRUxPT1AiOmNhc2UiRU5BTUVUT09MT05H''@;'; put 'put ''IjpjYXNlIlVOS05PV04iOnRoaXMuY2FjaGVbdGhpcy5fbWFrZUFicyhPKV09ITE7YnJlYWs7ZGVmYXVsdDp0aGlzLmNhY2hlW3RoaXMuX21ha2VBYnMoTyldPSExLHRoaXMuc3RyaWN0JiYodGhpcy5lbWl0KCJlcnJvciIseiksdGhpcy5hYm9ydCgpKSx0aGlzLnNpbGVudHx8YWUuZXJyb3Io''@;'; put 'put ''Imdsb2IgZXJyb3IiLHopfXJldHVybiBlZSgpfX0saGUucHJvdG90eXBlLl9wcm9jZXNzR2xvYlN0YXI9ZnVuY3Rpb24oTyx6LGVlLG5lLHgsUCxWKXt2YXIgVD10aGlzO3RoaXMuX3JlYWRkaXIoZWUsUCxmdW5jdGlvbihTLEYpe1QuX3Byb2Nlc3NHbG9iU3RhcjIoTyx6LGVlLG5lLHgsUCxG''@;'; put 'put ''LFYpfSl9LGhlLnByb3RvdHlwZS5fcHJvY2Vzc0dsb2JTdGFyMj1mdW5jdGlvbihPLHosZWUsbmUseCxQLFYsVCl7aWYoIVYpcmV0dXJuIFQoKTt2YXIgUz1uZS5zbGljZSgxKSxGPU8/W09dOltdLHllPUYuY29uY2F0KFMpO3RoaXMuX3Byb2Nlc3MoeWUseCwhMSxUKTt2YXIgRGU9Vi5sZW5n''@;'; put 'put ''dGg7aWYodGhpcy5zeW1saW5rc1tlZV0mJlApcmV0dXJuIFQoKTtmb3IodmFyIFBlPTA7UGU8RGU7UGUrKylpZigiLiIhPT1WW1BlXS5jaGFyQXQoMCl8fHRoaXMuZG90KXt2YXIgUWU9Ri5jb25jYXQoVltQZV0sUyk7dGhpcy5fcHJvY2VzcyhRZSx4LCEwLFQpO3ZhciAkZT1GLmNvbmNhdChW''@;'; put 'put ''W1BlXSxuZSk7dGhpcy5fcHJvY2VzcygkZSx4LCEwLFQpfVQoKX0saGUucHJvdG90eXBlLl9wcm9jZXNzU2ltcGxlPWZ1bmN0aW9uKE8seixlZSl7dmFyIG5lPXRoaXM7dGhpcy5fc3RhdChPLGZ1bmN0aW9uKHgsUCl7bmUuX3Byb2Nlc3NTaW1wbGUyKE8seix4LFAsZWUpfSl9LGhlLnByb3Rv''@;'; put 'put ''dHlwZS5fcHJvY2Vzc1NpbXBsZTI9ZnVuY3Rpb24oTyx6LGVlLG5lLHgpe2lmKHRoaXMubWF0Y2hlc1t6XXx8KHRoaXMubWF0Y2hlc1t6XT1PYmplY3QuY3JlYXRlKG51bGwpKSwhbmUpcmV0dXJuIHgoKTtpZihPJiZzZShPKSYmIXRoaXMubm9tb3VudCl7dmFyIFA9L1tcL1xcXSQvLnRlc3Qo''@;'; put 'put ''Tyk7Ii8iPT09Ty5jaGFyQXQoMCk/Tz1LLmpvaW4odGhpcy5yb290LE8pOihPPUsucmVzb2x2ZSh0aGlzLnJvb3QsTyksUCYmKE8rPSIvIikpfSJ3aW4zMiI9PT1yZS5wbGF0Zm9ybSYmKE89Ty5yZXBsYWNlKC9cXC9nLCIvIikpLHRoaXMuX2VtaXRNYXRjaCh6LE8pLHgoKX0saGUucHJvdG90''@;'; put 'put ''eXBlLl9zdGF0PWZ1bmN0aW9uKE8seil7dmFyIGVlPXRoaXMuX21ha2VBYnMoTyksbmU9Ii8iPT09Ty5zbGljZSgtMSk7aWYoTy5sZW5ndGg+dGhpcy5tYXhMZW5ndGgpcmV0dXJuIHooKTtpZighdGhpcy5zdGF0JiZ2ZSh0aGlzLmNhY2hlLGVlKSl7dmFyIHg9dGhpcy5jYWNoZVtlZV07aWYo''@;'; put 'put ''QXJyYXkuaXNBcnJheSh4KSYmKHg9IkRJUiIpLCFuZXx8IkRJUiI9PT14KXJldHVybiB6KG51bGwseCk7aWYobmUmJiJGSUxFIj09PXgpcmV0dXJuIHooKX12YXIgUD10aGlzLnN0YXRDYWNoZVtlZV07aWYodm9pZCAwIT09UCl7aWYoITE9PT1QKXJldHVybiB6KG51bGwsUCk7dmFyIFY9UC5p''@;'; put 'put ''c0RpcmVjdG9yeSgpPyJESVIiOiJGSUxFIjtyZXR1cm4gbmUmJiJGSUxFIj09PVY/eigpOnoobnVsbCxWLFApfXZhciBUPXRoaXMsUz1BZSgic3RhdFwwIitlZSxmdW5jdGlvbihGLHllKXtpZih5ZSYmeWUuaXNTeW1ib2xpY0xpbmsoKSlyZXR1cm4gVC5mcy5zdGF0KGVlLGZ1bmN0aW9uKENl''@;'; put 'put ''LERlKXtDZT9ULl9zdGF0MihPLGVlLG51bGwseWUseik6VC5fc3RhdDIoTyxlZSxDZSxEZSx6KX0pO1QuX3N0YXQyKE8sZWUsRix5ZSx6KX0pO1MmJlQuZnMubHN0YXQoZWUsUyl9LGhlLnByb3RvdHlwZS5fc3RhdDI9ZnVuY3Rpb24oTyx6LGVlLG5lLHgpe2lmKGVlJiYoIkVOT0VOVCI9PT1l''@;'; put 'put ''ZS5jb2RlfHwiRU5PVERJUiI9PT1lZS5jb2RlKSlyZXR1cm4gdGhpcy5zdGF0Q2FjaGVbel09ITEseCgpO3ZhciBQPSIvIj09PU8uc2xpY2UoLTEpO2lmKHRoaXMuc3RhdENhY2hlW3pdPW5lLCIvIj09PXouc2xpY2UoLTEpJiZuZSYmIW5lLmlzRGlyZWN0b3J5KCkpcmV0dXJuIHgobnVsbCwh''@;'; put 'put ''MSxuZSk7dmFyIFY9ITA7cmV0dXJuIG5lJiYoVj1uZS5pc0RpcmVjdG9yeSgpPyJESVIiOiJGSUxFIiksdGhpcy5jYWNoZVt6XT10aGlzLmNhY2hlW3pdfHxWLFAmJiJGSUxFIj09PVY/eCgpOngobnVsbCxWLG5lKX19LDQ3NTE6KFUsUSxqKT0+e3ZhciByZT1qKDUxMDgpLGFlPWooNDE1NSk7''@;'; put 'put ''VS5leHBvcnRzPXZlLHZlLkdsb2JTeW5jPUFlO3ZhciBZPWooNzMzNCksVz1qKDExNzEpLE49KGooMjg4NCksaig5NTM5KSxqKDI1MjApKSx0ZT1qKDkyODIpLEs9aig0MDk1KSxKPWooNjc3Miksc2U9Si5zZXRvcHRzLG9lPUoub3duUHJvcCxjZT1KLmNoaWxkcmVuSWdub3JlZCxkZT1KLmlz''@;'; put 'put ''SWdub3JlZDtmdW5jdGlvbiB2ZShrZSxTZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFNlfHwzPT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBwcm92aWRlZCB0byBzeW5jIGdsb2JcblNlZTogaHR0cHM6Ly9naXRodWIuY29tL2lzYWFjcy9ub2RlLWds''@;'; put 'put ''b2IvaXNzdWVzLzE2NyIpO3JldHVybiBuZXcgQWUoa2UsU2UpLmZvdW5kfWZ1bmN0aW9uIEFlKGtlLFNlKXtpZigha2UpdGhyb3cgbmV3IEVycm9yKCJtdXN0IHByb3ZpZGUgcGF0dGVybiIpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBTZXx8Mz09PWFyZ3VtZW50cy5sZW5ndGgpdGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcigiY2FsbGJhY2sgcHJvdmlkZWQgdG8gc3luYyBnbG9iXG5TZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pc2FhY3Mvbm9kZS1nbG9iL2lzc3Vlcy8xNjciKTtpZighKHRoaXMgaW5zdGFuY2VvZiBBZSkpcmV0dXJuIG5ldyBBZShrZSxTZSk7aWYoc2UodGhpcyxrZSxTZSksdGhp''@;'; put 'put ''cy5ub3Byb2Nlc3MpcmV0dXJuIHRoaXM7dmFyIEllPXRoaXMubWluaW1hdGNoLnNldC5sZW5ndGg7dGhpcy5tYXRjaGVzPW5ldyBBcnJheShJZSk7Zm9yKHZhciBUZT0wO1RlPEllO1RlKyspdGhpcy5fcHJvY2Vzcyh0aGlzLm1pbmltYXRjaC5zZXRbVGVdLFRlLCExKTt0aGlzLl9maW5pc2go''@;'; put 'put ''KX1BZS5wcm90b3R5cGUuX2ZpbmlzaD1mdW5jdGlvbigpe2lmKHRlLm9rKHRoaXMgaW5zdGFuY2VvZiBBZSksdGhpcy5yZWFscGF0aCl7dmFyIGtlPXRoaXM7dGhpcy5tYXRjaGVzLmZvckVhY2goZnVuY3Rpb24oU2UsSWUpe3ZhciBUZT1rZS5tYXRjaGVzW0llXT1PYmplY3QuY3JlYXRlKG51''@;'; put 'put ''bGwpO2Zvcih2YXIgTWUgaW4gU2UpdHJ5e01lPWtlLl9tYWtlQWJzKE1lKSxUZVtZLnJlYWxwYXRoU3luYyhNZSxrZS5yZWFscGF0aENhY2hlKV09ITB9Y2F0Y2goaGUpe2lmKCJzdGF0IiE9PWhlLnN5c2NhbGwpdGhyb3cgaGU7VGVba2UuX21ha2VBYnMoTWUpXT0hMH19KX1KLmZpbmlzaCh0''@;'; put 'put ''aGlzKX0sQWUucHJvdG90eXBlLl9wcm9jZXNzPWZ1bmN0aW9uKGtlLFNlLEllKXt0ZS5vayh0aGlzIGluc3RhbmNlb2YgQWUpO2Zvcih2YXIgVGUsTWU9MDsic3RyaW5nIj09dHlwZW9mIGtlW01lXTspTWUrKztzd2l0Y2goTWUpe2Nhc2Uga2UubGVuZ3RoOnJldHVybiB2b2lkIHRoaXMuX3By''@;'; put 'put ''b2Nlc3NTaW1wbGUoa2Uuam9pbigiLyIpLFNlKTtjYXNlIDA6VGU9bnVsbDticmVhaztkZWZhdWx0OlRlPWtlLnNsaWNlKDAsTWUpLmpvaW4oIi8iKX12YXIgaGUsTz1rZS5zbGljZShNZSk7bnVsbD09PVRlP2hlPSIuIjooKEsoVGUpfHxLKGtlLm1hcChmdW5jdGlvbihlZSl7cmV0dXJuInN0''@;'; put 'put ''cmluZyI9PXR5cGVvZiBlZT9lZToiWypdIn0pLmpvaW4oIi8iKSkpJiYoVGUmJksoVGUpfHwoVGU9Ii8iK1RlKSksaGU9VGUpO3ZhciB6PXRoaXMuX21ha2VBYnMoaGUpO2NlKHRoaXMsaGUpfHwoT1swXT09PVcuR0xPQlNUQVI/dGhpcy5fcHJvY2Vzc0dsb2JTdGFyKFRlLGhlLHosTyxTZSxJ''@;'; put 'put ''ZSk6dGhpcy5fcHJvY2Vzc1JlYWRkaXIoVGUsaGUseixPLFNlLEllKSl9LEFlLnByb3RvdHlwZS5fcHJvY2Vzc1JlYWRkaXI9ZnVuY3Rpb24oa2UsU2UsSWUsVGUsTWUsaGUpe3ZhciBPPXRoaXMuX3JlYWRkaXIoSWUsaGUpO2lmKE8pe2Zvcih2YXIgej1UZVswXSxlZT0hIXRoaXMubWluaW1h''@;'; put 'put ''dGNoLm5lZ2F0ZSx4PXRoaXMuZG90fHwiLiI9PT16Ll9nbG9iLmNoYXJBdCgwKSxQPVtdLFY9MDtWPE8ubGVuZ3RoO1YrKykoIi4iIT09KEY9T1tWXSkuY2hhckF0KDApfHx4KSYmKGVlJiYha2U/IUYubWF0Y2goeik6Ri5tYXRjaCh6KSkmJlAucHVzaChGKTt2YXIgVD1QLmxlbmd0aDtpZigw''@;'; put 'put ''IT09VClpZigxIT09VGUubGVuZ3RofHx0aGlzLm1hcmt8fHRoaXMuc3RhdClmb3IoVGUuc2hpZnQoKSxWPTA7VjxUO1YrKylGPVBbVl0sdGhpcy5fcHJvY2Vzcygoa2U/W2tlLEZdOltGXSkuY29uY2F0KFRlKSxNZSxoZSk7ZWxzZSBmb3IodGhpcy5tYXRjaGVzW01lXXx8KHRoaXMubWF0Y2hl''@;'; put 'put ''c1tNZV09T2JqZWN0LmNyZWF0ZShudWxsKSksVj0wO1Y8VDtWKyspe3ZhciBGPVBbVl07a2UmJihGPSIvIiE9PWtlLnNsaWNlKC0xKT9rZSsiLyIrRjprZStGKSwiLyIhPT1GLmNoYXJBdCgwKXx8dGhpcy5ub21vdW50fHwoRj1OLmpvaW4odGhpcy5yb290LEYpKSx0aGlzLl9lbWl0TWF0Y2go''@;'; put 'put ''TWUsRil9fX0sQWUucHJvdG90eXBlLl9lbWl0TWF0Y2g9ZnVuY3Rpb24oa2UsU2Upe2lmKCFkZSh0aGlzLFNlKSl7dmFyIEllPXRoaXMuX21ha2VBYnMoU2UpO2lmKHRoaXMubWFyayYmKFNlPXRoaXMuX21hcmsoU2UpKSx0aGlzLmFic29sdXRlJiYoU2U9SWUpLCF0aGlzLm1hdGNoZXNba2Vd''@;'; put 'put ''W1NlXSl7aWYodGhpcy5ub2Rpcil7dmFyIFRlPXRoaXMuY2FjaGVbSWVdO2lmKCJESVIiPT09VGV8fEFycmF5LmlzQXJyYXkoVGUpKXJldHVybn10aGlzLm1hdGNoZXNba2VdW1NlXT0hMCx0aGlzLnN0YXQmJnRoaXMuX3N0YXQoU2UpfX19LEFlLnByb3RvdHlwZS5fcmVhZGRpckluR2xvYlN0''@;'; put 'put ''YXI9ZnVuY3Rpb24oa2Upe2lmKHRoaXMuZm9sbG93KXJldHVybiB0aGlzLl9yZWFkZGlyKGtlLCExKTt2YXIgU2UsSWU7dHJ5e0llPXRoaXMuZnMubHN0YXRTeW5jKGtlKX1jYXRjaChNZSl7aWYoIkVOT0VOVCI9PT1NZS5jb2RlKXJldHVybiBudWxsfXZhciBUZT1JZSYmSWUuaXNTeW1ib2xp''@;'; put 'put ''Y0xpbmsoKTtyZXR1cm4gdGhpcy5zeW1saW5rc1trZV09VGUsVGV8fCFJZXx8SWUuaXNEaXJlY3RvcnkoKT9TZT10aGlzLl9yZWFkZGlyKGtlLCExKTp0aGlzLmNhY2hlW2tlXT0iRklMRSIsU2V9LEFlLnByb3RvdHlwZS5fcmVhZGRpcj1mdW5jdGlvbihrZSxTZSl7aWYoU2UmJiFvZSh0aGlz''@;'; put 'put ''LnN5bWxpbmtzLGtlKSlyZXR1cm4gdGhpcy5fcmVhZGRpckluR2xvYlN0YXIoa2UpO2lmKG9lKHRoaXMuY2FjaGUsa2UpKXt2YXIgSWU9dGhpcy5jYWNoZVtrZV07aWYoIUllfHwiRklMRSI9PT1JZSlyZXR1cm4gbnVsbDtpZihBcnJheS5pc0FycmF5KEllKSlyZXR1cm4gSWV9dHJ5e3JldHVy''@;'; put 'put ''biB0aGlzLl9yZWFkZGlyRW50cmllcyhrZSx0aGlzLmZzLnJlYWRkaXJTeW5jKGtlKSl9Y2F0Y2goVGUpe3JldHVybiB0aGlzLl9yZWFkZGlyRXJyb3Ioa2UsVGUpLG51bGx9fSxBZS5wcm90b3R5cGUuX3JlYWRkaXJFbnRyaWVzPWZ1bmN0aW9uKGtlLFNlKXtpZighdGhpcy5tYXJrJiYhdGhp''@;'; put 'put ''cy5zdGF0KWZvcih2YXIgSWU9MDtJZTxTZS5sZW5ndGg7SWUrKyl7dmFyIFRlPVNlW0llXTt0aGlzLmNhY2hlW1RlPSIvIj09PWtlP2tlK1RlOmtlKyIvIitUZV09ITB9cmV0dXJuIHRoaXMuY2FjaGVba2VdPVNlLFNlfSxBZS5wcm90b3R5cGUuX3JlYWRkaXJFcnJvcj1mdW5jdGlvbihrZSxT''@;'; put 'put ''ZSl7c3dpdGNoKFNlLmNvZGUpe2Nhc2UiRU5PVFNVUCI6Y2FzZSJFTk9URElSIjp2YXIgSWU9dGhpcy5fbWFrZUFicyhrZSk7aWYodGhpcy5jYWNoZVtJZV09IkZJTEUiLEllPT09dGhpcy5jd2RBYnMpe3ZhciBUZT1uZXcgRXJyb3IoU2UuY29kZSsiIGludmFsaWQgY3dkICIrdGhpcy5jd2Qp''@;'; put 'put ''O3Rocm93IFRlLnBhdGg9dGhpcy5jd2QsVGUuY29kZT1TZS5jb2RlLFRlfWJyZWFrO2Nhc2UiRU5PRU5UIjpjYXNlIkVMT09QIjpjYXNlIkVOQU1FVE9PTE9ORyI6Y2FzZSJVTktOT1dOIjp0aGlzLmNhY2hlW3RoaXMuX21ha2VBYnMoa2UpXT0hMTticmVhaztkZWZhdWx0OmlmKHRoaXMuY2Fj''@;'; put 'put ''aGVbdGhpcy5fbWFrZUFicyhrZSldPSExLHRoaXMuc3RyaWN0KXRocm93IFNlO3RoaXMuc2lsZW50fHxyZS5lcnJvcigiZ2xvYiBlcnJvciIsU2UpfX0sQWUucHJvdG90eXBlLl9wcm9jZXNzR2xvYlN0YXI9ZnVuY3Rpb24oa2UsU2UsSWUsVGUsTWUsaGUpe3ZhciBPPXRoaXMuX3JlYWRkaXIo''@;'; put 'put ''SWUsaGUpO2lmKE8pe3ZhciB6PVRlLnNsaWNlKDEpLGVlPWtlP1trZV06W10sbmU9ZWUuY29uY2F0KHopO3RoaXMuX3Byb2Nlc3MobmUsTWUsITEpO3ZhciB4PU8ubGVuZ3RoO2lmKCF0aGlzLnN5bWxpbmtzW0llXXx8IWhlKWZvcih2YXIgUD0wO1A8eDtQKyspaWYoIi4iIT09T1tQXS5jaGFy''@;'; put 'put ''QXQoMCl8fHRoaXMuZG90KXt2YXIgVj1lZS5jb25jYXQoT1tQXSx6KTt0aGlzLl9wcm9jZXNzKFYsTWUsITApO3ZhciBUPWVlLmNvbmNhdChPW1BdLFRlKTt0aGlzLl9wcm9jZXNzKFQsTWUsITApfX19LEFlLnByb3RvdHlwZS5fcHJvY2Vzc1NpbXBsZT1mdW5jdGlvbihrZSxTZSl7dmFyIEll''@;'; put 'put ''PXRoaXMuX3N0YXQoa2UpO2lmKHRoaXMubWF0Y2hlc1tTZV18fCh0aGlzLm1hdGNoZXNbU2VdPU9iamVjdC5jcmVhdGUobnVsbCkpLEllKXtpZihrZSYmSyhrZSkmJiF0aGlzLm5vbW91bnQpe3ZhciBUZT0vW1wvXFxdJC8udGVzdChrZSk7Ii8iPT09a2UuY2hhckF0KDApP2tlPU4uam9pbih0''@;'; put 'put ''aGlzLnJvb3Qsa2UpOihrZT1OLnJlc29sdmUodGhpcy5yb290LGtlKSxUZSYmKGtlKz0iLyIpKX0id2luMzIiPT09YWUucGxhdGZvcm0mJihrZT1rZS5yZXBsYWNlKC9cXC9nLCIvIikpLHRoaXMuX2VtaXRNYXRjaChTZSxrZSl9fSxBZS5wcm90b3R5cGUuX3N0YXQ9ZnVuY3Rpb24oa2Upe3Zh''@;'; put 'put ''ciBTZT10aGlzLl9tYWtlQWJzKGtlKSxJZT0iLyI9PT1rZS5zbGljZSgtMSk7aWYoa2UubGVuZ3RoPnRoaXMubWF4TGVuZ3RoKXJldHVybiExO2lmKCF0aGlzLnN0YXQmJm9lKHRoaXMuY2FjaGUsU2UpKXt2YXIgVGU9dGhpcy5jYWNoZVtTZV07aWYoQXJyYXkuaXNBcnJheShUZSkmJihUZT0i''@;'; put 'put ''RElSIiksIUllfHwiRElSIj09PVRlKXJldHVybiBUZTtpZihJZSYmIkZJTEUiPT09VGUpcmV0dXJuITF9dmFyIE1lPXRoaXMuc3RhdENhY2hlW1NlXTtpZighTWUpe3ZhciBoZTt0cnl7aGU9dGhpcy5mcy5sc3RhdFN5bmMoU2UpfWNhdGNoKE8pe2lmKE8mJigiRU5PRU5UIj09PU8uY29kZXx8''@;'; put 'put ''IkVOT1RESVIiPT09Ty5jb2RlKSlyZXR1cm4gdGhpcy5zdGF0Q2FjaGVbU2VdPSExLCExfWlmKGhlJiZoZS5pc1N5bWJvbGljTGluaygpKXRyeXtNZT10aGlzLmZzLnN0YXRTeW5jKFNlKX1jYXRjaChPKXtNZT1oZX1lbHNlIE1lPWhlfXJldHVybiB0aGlzLnN0YXRDYWNoZVtTZV09TWUsVGU9''@;'; put 'put ''ITAsTWUmJihUZT1NZS5pc0RpcmVjdG9yeSgpPyJESVIiOiJGSUxFIiksdGhpcy5jYWNoZVtTZV09dGhpcy5jYWNoZVtTZV18fFRlLCghSWV8fCJGSUxFIiE9PVRlKSYmVGV9LEFlLnByb3RvdHlwZS5fbWFyaz1mdW5jdGlvbihrZSl7cmV0dXJuIEoubWFyayh0aGlzLGtlKX0sQWUucHJvdG90''@;'; put 'put ''eXBlLl9tYWtlQWJzPWZ1bmN0aW9uKGtlKXtyZXR1cm4gSi5tYWtlQWJzKHRoaXMsa2UpfX0sNjQ1ODpVPT57InVzZSBzdHJpY3QiO1UuZXhwb3J0cz1mdW5jdGlvbihqKXtpZihudWxsPT09anx8Im9iamVjdCIhPXR5cGVvZiBqKXJldHVybiBqO2lmKGogaW5zdGFuY2VvZiBPYmplY3QpdmFy''@;'; put 'put ''IHJlPXtfX3Byb3RvX186UShqKX07ZWxzZSByZT1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhqKS5mb3JFYWNoKGZ1bmN0aW9uKGFlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkocmUsYWUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv''@;'; put 'put ''cihqLGFlKSl9KSxyZX07dmFyIFE9T2JqZWN0LmdldFByb3RvdHlwZU9mfHxmdW5jdGlvbihqKXtyZXR1cm4gai5fX3Byb3RvX199fSw3NzooVSxRLGopPT57dmFyIHJlLGFlLFk9aig0MTU1KSxXPWooNTEwOCksTj1qKDU0NDMpLHRlPWooMjE2MSksSz1qKDg1MjApLEo9aig2NDU4KSxzZT1q''@;'; put 'put ''KDk1MzkpO2Z1bmN0aW9uIG9lKFRlLE1lKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoVGUscmUse2dldDpmdW5jdGlvbigpe3JldHVybiBNZX19KX0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sLmZvcj8ocmU9U3ltYm9sLmZvcigiZ3JhY2VmdWwt''@;'; put 'put ''ZnMucXVldWUiKSxhZT1TeW1ib2wuZm9yKCJncmFjZWZ1bC1mcy5wcmV2aW91cyIpKToocmU9Il9fX2dyYWNlZnVsLWZzLnF1ZXVlIixhZT0iX19fZ3JhY2VmdWwtZnMucHJldmlvdXMiKTt2YXIgY2UsZGU9ZnVuY3Rpb24oKXt9O2Z1bmN0aW9uIEFlKFRlKXt0ZShUZSksVGUuZ3JhY2VmdWxp''@;'; put 'put ''Znk9QWUsVGUuY3JlYXRlUmVhZFN0cmVhbT1mdW5jdGlvbihQZSxRZSl7cmV0dXJuIG5ldyBUZS5SZWFkU3RyZWFtKFBlLFFlKX0sVGUuY3JlYXRlV3JpdGVTdHJlYW09ZnVuY3Rpb24oUGUsUWUpe3JldHVybiBuZXcgVGUuV3JpdGVTdHJlYW0oUGUsUWUpfTt2YXIgTWU9VGUucmVhZEZpbGU7''@;'; put 'put ''VGUucmVhZEZpbGU9ZnVuY3Rpb24oUGUsUWUsJGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBRZSYmKCRlPVFlLFFlPW51bGwpLGZ1bmN0aW9uIGd0KHd0LG10LHZ0LEF0KXtyZXR1cm4gTWUod3QsbXQsZnVuY3Rpb24oaHQpeyFodHx8IkVNRklMRSIhPT1odC5jb2RlJiYiRU5GSUxFIiE9''@;'; put 'put ''PWh0LmNvZGU/ImZ1bmN0aW9uIj09dHlwZW9mIHZ0JiZ2dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6a2UoW2d0LFt3dCxtdCx2dF0saHQsQXR8fERhdGUubm93KCksRGF0ZS5ub3coKV0pfSl9KFBlLFFlLCRlKX07dmFyIGhlPVRlLndyaXRlRmlsZTtUZS53cml0ZUZpbGU9ZnVuY3Rpb24oUGUs''@;'; put 'put ''UWUsJGUsZ3Qpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiAkZSYmKGd0PSRlLCRlPW51bGwpLGZ1bmN0aW9uIHd0KG10LHZ0LEF0LGh0LEJ0KXtyZXR1cm4gaGUobXQsdnQsQXQsZnVuY3Rpb24ob24peyFvbnx8IkVNRklMRSIhPT1vbi5jb2RlJiYiRU5GSUxFIiE9PW9uLmNvZGU/ImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIGh0JiZodC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6a2UoW3d0LFttdCx2dCxBdCxodF0sb24sQnR8fERhdGUubm93KCksRGF0ZS5ub3coKV0pfSl9KFBlLFFlLCRlLGd0KX07dmFyIE89VGUuYXBwZW5kRmlsZTtPJiYoVGUuYXBwZW5kRmlsZT1mdW5jdGlvbihQZSxRZSwk''@;'; put 'put ''ZSxndCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mICRlJiYoZ3Q9JGUsJGU9bnVsbCksZnVuY3Rpb24gd3QobXQsdnQsQXQsaHQsQnQpe3JldHVybiBPKG10LHZ0LEF0LGZ1bmN0aW9uKG9uKXshb258fCJFTUZJTEUiIT09b24uY29kZSYmIkVORklMRSIhPT1vbi5jb2RlPyJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBodCYmaHQuYXBwbHkodGhpcyxhcmd1bWVudHMpOmtlKFt3dCxbbXQsdnQsQXQsaHRdLG9uLEJ0fHxEYXRlLm5vdygpLERhdGUubm93KCldKX0pfShQZSxRZSwkZSxndCl9KTt2YXIgej1UZS5jb3B5RmlsZTt6JiYoVGUuY29weUZpbGU9ZnVuY3Rpb24oUGUsUWUsJGUsZ3Qpe3Jl''@;'; put 'put ''dHVybiJmdW5jdGlvbiI9PXR5cGVvZiAkZSYmKGd0PSRlLCRlPTApLGZ1bmN0aW9uIHd0KG10LHZ0LEF0LGh0LEJ0KXtyZXR1cm4geihtdCx2dCxBdCxmdW5jdGlvbihvbil7IW9ufHwiRU1GSUxFIiE9PW9uLmNvZGUmJiJFTkZJTEUiIT09b24uY29kZT8iZnVuY3Rpb24iPT10eXBlb2YgaHQm''@;'; put 'put ''Jmh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTprZShbd3QsW210LHZ0LEF0LGh0XSxvbixCdHx8RGF0ZS5ub3coKSxEYXRlLm5vdygpXSl9KX0oUGUsUWUsJGUsZ3QpfSk7dmFyIGVlPVRlLnJlYWRkaXI7VGUucmVhZGRpcj1mdW5jdGlvbihQZSxRZSwkZSl7ImZ1bmN0aW9uIj09dHlwZW9mIFFl''@;'; put 'put ''JiYoJGU9UWUsUWU9bnVsbCk7dmFyIGd0PW5lLnRlc3QoWS52ZXJzaW9uKT9mdW5jdGlvbihtdCx2dCxBdCxodCl7cmV0dXJuIGVlKG10LHd0KG10LHZ0LEF0LGh0KSl9OmZ1bmN0aW9uKG10LHZ0LEF0LGh0KXtyZXR1cm4gZWUobXQsdnQsd3QobXQsdnQsQXQsaHQpKX07cmV0dXJuIGd0KFBl''@;'; put 'put ''LFFlLCRlKTtmdW5jdGlvbiB3dChtdCx2dCxBdCxodCl7cmV0dXJuIGZ1bmN0aW9uKEJ0LG9uKXshQnR8fCJFTUZJTEUiIT09QnQuY29kZSYmIkVORklMRSIhPT1CdC5jb2RlPyhvbiYmb24uc29ydCYmb24uc29ydCgpLCJmdW5jdGlvbiI9PXR5cGVvZiBBdCYmQXQuY2FsbCh0aGlzLEJ0LG9u''@;'; put 'put ''KSk6a2UoW2d0LFttdCx2dCxBdF0sQnQsaHR8fERhdGUubm93KCksRGF0ZS5ub3coKV0pfX19O3ZhciBuZT0vXnZbMC01XVwuLztpZigidjAuOCI9PT1ZLnZlcnNpb24uc3Vic3RyKDAsNCkpe3ZhciB4PUsoVGUpO0Y9eC5SZWFkU3RyZWFtLHllPXguV3JpdGVTdHJlYW19dmFyIFA9VGUuUmVh''@;'; put 'put ''ZFN0cmVhbTtQJiYoRi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShQLnByb3RvdHlwZSksRi5wcm90b3R5cGUub3Blbj1mdW5jdGlvbigpe3ZhciBQZT10aGlzO0RlKFBlLnBhdGgsUGUuZmxhZ3MsUGUubW9kZSxmdW5jdGlvbihRZSwkZSl7UWU/KFBlLmF1dG9DbG9zZSYmUGUuZGVzdHJveSgp''@;'; put 'put ''LFBlLmVtaXQoImVycm9yIixRZSkpOihQZS5mZD0kZSxQZS5lbWl0KCJvcGVuIiwkZSksUGUucmVhZCgpKX0pfSk7dmFyIFY9VGUuV3JpdGVTdHJlYW07ViYmKHllLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFYucHJvdG90eXBlKSx5ZS5wcm90b3R5cGUub3Blbj1mdW5jdGlvbigpe3ZhciBQ''@;'; put 'put ''ZT10aGlzO0RlKFBlLnBhdGgsUGUuZmxhZ3MsUGUubW9kZSxmdW5jdGlvbihRZSwkZSl7UWU/KFBlLmRlc3Ryb3koKSxQZS5lbWl0KCJlcnJvciIsUWUpKTooUGUuZmQ9JGUsUGUuZW1pdCgib3BlbiIsJGUpKX0pfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFRlLCJSZWFkU3RyZWFtIix7Z2V0''@;'; put 'put ''OmZ1bmN0aW9uKCl7cmV0dXJuIEZ9LHNldDpmdW5jdGlvbihQZSl7Rj1QZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVGUsIldyaXRlU3RyZWFtIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHllfSxzZXQ6ZnVuY3Rpb24oUGUpe3llPVBl''@;'; put 'put ''fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pO3ZhciBUPUY7T2JqZWN0LmRlZmluZVByb3BlcnR5KFRlLCJGaWxlUmVhZFN0cmVhbSIse2dldDpmdW5jdGlvbigpe3JldHVybiBUfSxzZXQ6ZnVuY3Rpb24oUGUpe1Q9UGV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSk7''@;'; put 'put ''dmFyIFM9eWU7ZnVuY3Rpb24gRihQZSxRZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBGPyhQLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzKTpGLmFwcGx5KE9iamVjdC5jcmVhdGUoRi5wcm90b3R5cGUpLGFyZ3VtZW50cyl9ZnVuY3Rpb24geWUoUGUsUWUpe3JldHVybiB0aGlzIGluc3Rh''@;'; put 'put ''bmNlb2YgeWU/KFYuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMpOnllLmFwcGx5KE9iamVjdC5jcmVhdGUoeWUucHJvdG90eXBlKSxhcmd1bWVudHMpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShUZSwiRmlsZVdyaXRlU3RyZWFtIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFN9LHNldDpmdW5j''@;'; put 'put ''dGlvbihQZSl7Uz1QZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTt2YXIgQ2U9VGUub3BlbjtmdW5jdGlvbiBEZShQZSxRZSwkZSxndCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mICRlJiYoZ3Q9JGUsJGU9bnVsbCksZnVuY3Rpb24gd3QobXQsdnQsQXQsaHQsQnQpe3JldHVy''@;'; put 'put ''biBDZShtdCx2dCxBdCxmdW5jdGlvbihvbixfdCl7IW9ufHwiRU1GSUxFIiE9PW9uLmNvZGUmJiJFTkZJTEUiIT09b24uY29kZT8iZnVuY3Rpb24iPT10eXBlb2YgaHQmJmh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTprZShbd3QsW210LHZ0LEF0LGh0XSxvbixCdHx8RGF0ZS5ub3coKSxEYXRl''@;'; put 'put ''Lm5vdygpXSl9KX0oUGUsUWUsJGUsZ3QpfXJldHVybiBUZS5vcGVuPURlLFRlfWZ1bmN0aW9uIGtlKFRlKXtkZSgiRU5RVUVVRSIsVGVbMF0ubmFtZSxUZVsxXSksTltyZV0ucHVzaChUZSksSWUoKX1mdW5jdGlvbiBTZSgpe2Zvcih2YXIgVGU9RGF0ZS5ub3coKSxNZT0wO01lPE5bcmVdLmxl''@;'; put 'put ''bmd0aDsrK01lKU5bcmVdW01lXS5sZW5ndGg+MiYmKE5bcmVdW01lXVszXT1UZSxOW3JlXVtNZV1bNF09VGUpO0llKCl9ZnVuY3Rpb24gSWUoKXtpZihjbGVhclRpbWVvdXQoY2UpLGNlPXZvaWQgMCwwIT09TltyZV0ubGVuZ3RoKXt2YXIgVGU9TltyZV0uc2hpZnQoKSxNZT1UZVswXSxoZT1U''@;'; put 'put ''ZVsxXSxPPVRlWzJdLHo9VGVbM10sZWU9VGVbNF07aWYodm9pZCAwPT09eilkZSgiUkVUUlkiLE1lLm5hbWUsaGUpLE1lLmFwcGx5KG51bGwsaGUpO2Vsc2UgaWYoRGF0ZS5ub3coKS16Pj02ZTQpe2RlKCJUSU1FT1VUIixNZS5uYW1lLGhlKTt2YXIgbmU9aGUucG9wKCk7ImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIG5lJiZuZS5jYWxsKG51bGwsTyl9ZWxzZXt2YXIgeD1EYXRlLm5vdygpLWVlLFA9TWF0aC5tYXgoZWUteiwxKTt4Pj1NYXRoLm1pbigxLjIqUCwxMDApPyhkZSgiUkVUUlkiLE1lLm5hbWUsaGUpLE1lLmFwcGx5KG51bGwsaGUuY29uY2F0KFt6XSkpKTpOW3JlXS5wdXNoKFRlKX12''@;'; put 'put ''b2lkIDA9PT1jZSYmKGNlPXNldFRpbWVvdXQoSWUsMCkpfX1zZS5kZWJ1Z2xvZz9kZT1zZS5kZWJ1Z2xvZygiZ2ZzNCIpOi9cYmdmczRcYi9pLnRlc3QoWS5lbnYuTk9ERV9ERUJVR3x8IiIpJiYoZGU9ZnVuY3Rpb24oKXt2YXIgVGU9c2UuZm9ybWF0LmFwcGx5KHNlLGFyZ3VtZW50cyk7VGU9''@;'; put 'put ''IkdGUzQ6ICIrVGUuc3BsaXQoL1xuLykuam9pbigiXG5HRlM0OiAiKSxXLmVycm9yKFRlKX0pLE5bcmVdfHwob2UoTixqLmdbcmVdfHxbXSksTi5jbG9zZT1mdW5jdGlvbihUZSl7ZnVuY3Rpb24gTWUoaGUsTyl7cmV0dXJuIFRlLmNhbGwoTixoZSxmdW5jdGlvbih6KXt6fHxTZSgpLCJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBPJiZPLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTWUsYWUse3ZhbHVlOlRlfSksTWV9KE4uY2xvc2UpLE4uY2xvc2VTeW5jPWZ1bmN0aW9uKFRlKXtmdW5jdGlvbiBNZShoZSl7VGUuYXBwbHkoTixhcmd1bWVudHMp''@;'; put 'put ''LFNlKCl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNZSxhZSx7dmFsdWU6VGV9KSxNZX0oTi5jbG9zZVN5bmMpLC9cYmdmczRcYi9pLnRlc3QoWS5lbnYuTk9ERV9ERUJVR3x8IiIpJiZZLm9uKCJleGl0IixmdW5jdGlvbigpe2RlKE5bcmVdKSxqKDkyODIpLmVxdWFsKE5bcmVdLmxl''@;'; put 'put ''bmd0aCwwKX0pKSxqLmdbcmVdfHxvZShqLmcsTltyZV0pLFUuZXhwb3J0cz1BZShKKE4pKSxZLmVudi5URVNUX0dSQUNFRlVMX0ZTX0dMT0JBTF9QQVRDSCYmIU4uX19wYXRjaGVkJiYoVS5leHBvcnRzPUFlKE4pLE4uX19wYXRjaGVkPSEwKX0sODUyMDooVSxRLGopPT57dmFyIHJlPWooNDE1''@;'; put 'put ''NSksYWU9aigyODMwKS5TdHJlYW07VS5leHBvcnRzPWZ1bmN0aW9uKFkpe3JldHVybntSZWFkU3RyZWFtOmZ1bmN0aW9uIFcoTix0ZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgVykpcmV0dXJuIG5ldyBXKE4sdGUpO2FlLmNhbGwodGhpcyk7dmFyIEs9dGhpczt0aGlzLnBhdGg9Tix0aGlzLmZk''@;'; put 'put ''PW51bGwsdGhpcy5yZWFkYWJsZT0hMCx0aGlzLnBhdXNlZD0hMSx0aGlzLmZsYWdzPSJyIix0aGlzLm1vZGU9NDM4LHRoaXMuYnVmZmVyU2l6ZT02NTUzNix0ZT10ZXx8e307Zm9yKHZhciBKPU9iamVjdC5rZXlzKHRlKSxzZT0wLG9lPUoubGVuZ3RoO3NlPG9lO3NlKyspe3ZhciBjZT1KW3Nl''@;'; put 'put ''XTt0aGlzW2NlXT10ZVtjZV19aWYodGhpcy5lbmNvZGluZyYmdGhpcy5zZXRFbmNvZGluZyh0aGlzLmVuY29kaW5nKSx2b2lkIDAhPT10aGlzLnN0YXJ0KXtpZigibnVtYmVyIiE9dHlwZW9mIHRoaXMuc3RhcnQpdGhyb3cgVHlwZUVycm9yKCJzdGFydCBtdXN0IGJlIGEgTnVtYmVyIik7aWYo''@;'; put 'put ''dm9pZCAwPT09dGhpcy5lbmQpdGhpcy5lbmQ9MS8wO2Vsc2UgaWYoIm51bWJlciIhPXR5cGVvZiB0aGlzLmVuZCl0aHJvdyBUeXBlRXJyb3IoImVuZCBtdXN0IGJlIGEgTnVtYmVyIik7aWYodGhpcy5zdGFydD50aGlzLmVuZCl0aHJvdyBuZXcgRXJyb3IoInN0YXJ0IG11c3QgYmUgPD0gZW5k''@;'; put 'put ''Iik7dGhpcy5wb3M9dGhpcy5zdGFydH1udWxsPT09dGhpcy5mZD9ZLm9wZW4odGhpcy5wYXRoLHRoaXMuZmxhZ3MsdGhpcy5tb2RlLGZ1bmN0aW9uKGRlLHZlKXtpZihkZSlyZXR1cm4gSy5lbWl0KCJlcnJvciIsZGUpLHZvaWQoSy5yZWFkYWJsZT0hMSk7Sy5mZD12ZSxLLmVtaXQoIm9wZW4i''@;'; put 'put ''LHZlKSxLLl9yZWFkKCl9KTpyZS5uZXh0VGljayhmdW5jdGlvbigpe0suX3JlYWQoKX0pfSxXcml0ZVN0cmVhbTpmdW5jdGlvbiBXKE4sdGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFcpKXJldHVybiBuZXcgVyhOLHRlKTthZS5jYWxsKHRoaXMpLHRoaXMucGF0aD1OLHRoaXMuZmQ9bnVsbCx0''@;'; put 'put ''aGlzLndyaXRhYmxlPSEwLHRoaXMuZmxhZ3M9InciLHRoaXMuZW5jb2Rpbmc9ImJpbmFyeSIsdGhpcy5tb2RlPTQzOCx0aGlzLmJ5dGVzV3JpdHRlbj0wLHRlPXRlfHx7fTtmb3IodmFyIEs9T2JqZWN0LmtleXModGUpLEo9MCxzZT1LLmxlbmd0aDtKPHNlO0orKyl7dmFyIG9lPUtbSl07dGhp''@;'; put 'put ''c1tvZV09dGVbb2VdfWlmKHZvaWQgMCE9PXRoaXMuc3RhcnQpe2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5zdGFydCl0aHJvdyBUeXBlRXJyb3IoInN0YXJ0IG11c3QgYmUgYSBOdW1iZXIiKTtpZih0aGlzLnN0YXJ0PDApdGhyb3cgbmV3IEVycm9yKCJzdGFydCBtdXN0IGJlID49IHplcm8i''@;'; put 'put ''KTt0aGlzLnBvcz10aGlzLnN0YXJ0fXRoaXMuYnVzeT0hMSx0aGlzLl9xdWV1ZT1bXSxudWxsPT09dGhpcy5mZCYmKHRoaXMuX29wZW49WS5vcGVuLHRoaXMuX3F1ZXVlLnB1c2goW3RoaXMuX29wZW4sdGhpcy5wYXRoLHRoaXMuZmxhZ3MsdGhpcy5tb2RlLHZvaWQgMF0pLHRoaXMuZmx1c2go''@;'; put 'put ''KSl9fX19LDIxNjE6KFUsUSxqKT0+e3ZhciByZT1qKDQxNTUpLGFlPWooMzIwOCksWT1yZS5jd2QsVz1udWxsLE49cmUuZW52LkdSQUNFRlVMX0ZTX1BMQVRGT1JNfHxyZS5wbGF0Zm9ybTtyZS5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm4gV3x8KFc9WS5jYWxsKHJlKSksV307dHJ5e3JlLmN3ZCgp''@;'; put 'put ''fWNhdGNoKEspe31pZigiZnVuY3Rpb24iPT10eXBlb2YgcmUuY2hkaXIpe3ZhciB0ZT1yZS5jaGRpcjtyZS5jaGRpcj1mdW5jdGlvbihLKXtXPW51bGwsdGUuY2FsbChyZSxLKX0sT2JqZWN0LnNldFByb3RvdHlwZU9mJiZPYmplY3Quc2V0UHJvdG90eXBlT2YocmUuY2hkaXIsdGUpfVUuZXhw''@;'; put 'put ''b3J0cz1mdW5jdGlvbihLKXt2YXIgU2Usa2U7ZnVuY3Rpb24gSihTZSl7cmV0dXJuIFNlJiZmdW5jdGlvbihJZSxUZSxNZSl7cmV0dXJuIFNlLmNhbGwoSyxJZSxUZSxmdW5jdGlvbihoZSl7QWUoaGUpJiYoaGU9bnVsbCksTWUmJk1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfX1mdW5jdGlv''@;'; put 'put ''biBzZShTZSl7cmV0dXJuIFNlJiZmdW5jdGlvbihJZSxUZSl7dHJ5e3JldHVybiBTZS5jYWxsKEssSWUsVGUpfWNhdGNoKE1lKXtpZighQWUoTWUpKXRocm93IE1lfX19ZnVuY3Rpb24gb2UoU2Upe3JldHVybiBTZSYmZnVuY3Rpb24oSWUsVGUsTWUsaGUpe3JldHVybiBTZS5jYWxsKEssSWUs''@;'; put 'put ''VGUsTWUsZnVuY3Rpb24oTyl7QWUoTykmJihPPW51bGwpLGhlJiZoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX19ZnVuY3Rpb24gY2UoU2Upe3JldHVybiBTZSYmZnVuY3Rpb24oSWUsVGUsTWUpe3RyeXtyZXR1cm4gU2UuY2FsbChLLEllLFRlLE1lKX1jYXRjaChoZSl7aWYoIUFlKGhlKSl0''@;'; put 'put ''aHJvdyBoZX19fWZ1bmN0aW9uIGRlKFNlKXtyZXR1cm4gU2UmJmZ1bmN0aW9uKEllLFRlLE1lKXtmdW5jdGlvbiBoZShPLHope3omJih6LnVpZDwwJiYoei51aWQrPTQyOTQ5NjcyOTYpLHouZ2lkPDAmJih6LmdpZCs9NDI5NDk2NzI5NikpLE1lJiZNZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9''@;'; put 'put ''cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFRlJiYoTWU9VGUsVGU9bnVsbCksVGU/U2UuY2FsbChLLEllLFRlLGhlKTpTZS5jYWxsKEssSWUsaGUpfX1mdW5jdGlvbiB2ZShTZSl7cmV0dXJuIFNlJiZmdW5jdGlvbihJZSxUZSl7dmFyIE1lPVRlP1NlLmNhbGwoSyxJZSxUZSk6U2UuY2FsbChL''@;'; put 'put ''LEllKTtyZXR1cm4gTWUmJihNZS51aWQ8MCYmKE1lLnVpZCs9NDI5NDk2NzI5NiksTWUuZ2lkPDAmJihNZS5naWQrPTQyOTQ5NjcyOTYpKSxNZX19ZnVuY3Rpb24gQWUoU2Upe3JldHVybiFTZXx8IkVOT1NZUyI9PT1TZS5jb2RlfHwhKHJlLmdldHVpZCYmMD09PXJlLmdldHVpZCgpfHwiRUlO''@;'; put 'put ''VkFMIiE9PVNlLmNvZGUmJiJFUEVSTSIhPT1TZS5jb2RlKX1hZS5oYXNPd25Qcm9wZXJ0eSgiT19TWU1MSU5LIikmJnJlLnZlcnNpb24ubWF0Y2goL152MFwuNlwuWzAtMl18XnYwXC41XC4vKSYmKChTZT1LKS5sY2htb2Q9ZnVuY3Rpb24oSWUsVGUsTWUpe1NlLm9wZW4oSWUsYWUuT19XUk9O''@;'; put 'put ''TFl8YWUuT19TWU1MSU5LLFRlLGZ1bmN0aW9uKGhlLE8pe2hlP01lJiZNZShoZSk6U2UuZmNobW9kKE8sVGUsZnVuY3Rpb24oeil7U2UuY2xvc2UoTyxmdW5jdGlvbihlZSl7TWUmJk1lKHp8fGVlKX0pfSl9KX0sU2UubGNobW9kU3luYz1mdW5jdGlvbihJZSxUZSl7dmFyIE1lLGhlPVNlLm9w''@;'; put 'put ''ZW5TeW5jKEllLGFlLk9fV1JPTkxZfGFlLk9fU1lNTElOSyxUZSksTz0hMDt0cnl7TWU9U2UuZmNobW9kU3luYyhoZSxUZSksTz0hMX1maW5hbGx5e2lmKE8pdHJ5e1NlLmNsb3NlU3luYyhoZSl9Y2F0Y2goeil7fWVsc2UgU2UuY2xvc2VTeW5jKGhlKX1yZXR1cm4gTWV9KSxLLmx1dGltZXN8''@;'; put 'put ''fGZ1bmN0aW9uKFNlKXthZS5oYXNPd25Qcm9wZXJ0eSgiT19TWU1MSU5LIikmJlNlLmZ1dGltZXM/KFNlLmx1dGltZXM9ZnVuY3Rpb24oSWUsVGUsTWUsaGUpe1NlLm9wZW4oSWUsYWUuT19TWU1MSU5LLGZ1bmN0aW9uKE8seil7Tz9oZSYmaGUoTyk6U2UuZnV0aW1lcyh6LFRlLE1lLGZ1bmN0''@;'; put 'put ''aW9uKGVlKXtTZS5jbG9zZSh6LGZ1bmN0aW9uKG5lKXtoZSYmaGUoZWV8fG5lKX0pfSl9KX0sU2UubHV0aW1lc1N5bmM9ZnVuY3Rpb24oSWUsVGUsTWUpe3ZhciBoZSxPPVNlLm9wZW5TeW5jKEllLGFlLk9fU1lNTElOSyksej0hMDt0cnl7aGU9U2UuZnV0aW1lc1N5bmMoTyxUZSxNZSksej0h''@;'; put 'put ''MX1maW5hbGx5e2lmKHopdHJ5e1NlLmNsb3NlU3luYyhPKX1jYXRjaChlZSl7fWVsc2UgU2UuY2xvc2VTeW5jKE8pfXJldHVybiBoZX0pOlNlLmZ1dGltZXMmJihTZS5sdXRpbWVzPWZ1bmN0aW9uKEllLFRlLE1lLGhlKXtoZSYmcmUubmV4dFRpY2soaGUpfSxTZS5sdXRpbWVzU3luYz1mdW5j''@;'; put 'put ''dGlvbigpe30pfShLKSxLLmNob3duPW9lKEsuY2hvd24pLEsuZmNob3duPW9lKEsuZmNob3duKSxLLmxjaG93bj1vZShLLmxjaG93biksSy5jaG1vZD1KKEsuY2htb2QpLEsuZmNobW9kPUooSy5mY2htb2QpLEsubGNobW9kPUooSy5sY2htb2QpLEsuY2hvd25TeW5jPWNlKEsuY2hvd25TeW5j''@;'; put 'put ''KSxLLmZjaG93blN5bmM9Y2UoSy5mY2hvd25TeW5jKSxLLmxjaG93blN5bmM9Y2UoSy5sY2hvd25TeW5jKSxLLmNobW9kU3luYz1zZShLLmNobW9kU3luYyksSy5mY2htb2RTeW5jPXNlKEsuZmNobW9kU3luYyksSy5sY2htb2RTeW5jPXNlKEsubGNobW9kU3luYyksSy5zdGF0PWRlKEsuc3Rh''@;'; put 'put ''dCksSy5mc3RhdD1kZShLLmZzdGF0KSxLLmxzdGF0PWRlKEsubHN0YXQpLEsuc3RhdFN5bmM9dmUoSy5zdGF0U3luYyksSy5mc3RhdFN5bmM9dmUoSy5mc3RhdFN5bmMpLEsubHN0YXRTeW5jPXZlKEsubHN0YXRTeW5jKSxLLmNobW9kJiYhSy5sY2htb2QmJihLLmxjaG1vZD1mdW5jdGlvbihT''@;'; put 'put ''ZSxJZSxUZSl7VGUmJnJlLm5leHRUaWNrKFRlKX0sSy5sY2htb2RTeW5jPWZ1bmN0aW9uKCl7fSksSy5jaG93biYmIUsubGNob3duJiYoSy5sY2hvd249ZnVuY3Rpb24oU2UsSWUsVGUsTWUpe01lJiZyZS5uZXh0VGljayhNZSl9LEsubGNob3duU3luYz1mdW5jdGlvbigpe30pLCJ3aW4zMiI9''@;'; put 'put ''PT1OJiYoSy5yZW5hbWU9ImZ1bmN0aW9uIiE9dHlwZW9mIEsucmVuYW1lP0sucmVuYW1lOmZ1bmN0aW9uKFNlKXtmdW5jdGlvbiBJZShUZSxNZSxoZSl7dmFyIE89RGF0ZS5ub3coKSx6PTA7U2UoVGUsTWUsZnVuY3Rpb24gZWUobmUpe2lmKG5lJiYoIkVBQ0NFUyI9PT1uZS5jb2RlfHwiRVBF''@;'; put 'put ''Uk0iPT09bmUuY29kZSkmJkRhdGUubm93KCktTzw2ZTQpcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtLLnN0YXQoTWUsZnVuY3Rpb24oeCxQKXt4JiYiRU5PRU5UIj09PXguY29kZT9TZShUZSxNZSxlZSk6aGUobmUpfSl9LHopLHZvaWQoejwxMDAmJih6Kz0xMCkpO2hlJiZoZShuZSl9''@;'; put 'put ''KX1yZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mJiZPYmplY3Quc2V0UHJvdG90eXBlT2YoSWUsU2UpLEllfShLLnJlbmFtZSkpLEsucmVhZD0iZnVuY3Rpb24iIT10eXBlb2YgSy5yZWFkP0sucmVhZDpmdW5jdGlvbihTZSl7ZnVuY3Rpb24gSWUoVGUsTWUsaGUsTyx6LGVlKXt2YXIgbmU7''@;'; put 'put ''aWYoZWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlZSl7dmFyIHg9MDtuZT1mdW5jdGlvbihQLFYsVCl7aWYoUCYmIkVBR0FJTiI9PT1QLmNvZGUmJng8MTApcmV0dXJuIHgrKyxTZS5jYWxsKEssVGUsTWUsaGUsTyx6LG5lKTtlZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fXJldHVybiBTZS5jYWxs''@;'; put 'put ''KEssVGUsTWUsaGUsTyx6LG5lKX1yZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mJiZPYmplY3Quc2V0UHJvdG90eXBlT2YoSWUsU2UpLEllfShLLnJlYWQpLEsucmVhZFN5bmM9ImZ1bmN0aW9uIiE9dHlwZW9mIEsucmVhZFN5bmM/Sy5yZWFkU3luYzooa2U9Sy5yZWFkU3luYyxmdW5jdGlv''@;'; put 'put ''bihTZSxJZSxUZSxNZSxoZSl7Zm9yKHZhciBPPTA7Oyl0cnl7cmV0dXJuIGtlLmNhbGwoSyxTZSxJZSxUZSxNZSxoZSl9Y2F0Y2goeil7aWYoIkVBR0FJTiI9PT16LmNvZGUmJk88MTApe08rKztjb250aW51ZX10aHJvdyB6fX0pfX0sMTA0NDooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciBy''@;'; put 'put ''ZT1qKDIxMCkoIiVPYmplY3QuZGVmaW5lUHJvcGVydHklIiwhMCksYWU9ZnVuY3Rpb24oKXtpZihyZSl0cnl7cmV0dXJuIHJlKHt9LCJhIix7dmFsdWU6MX0pLCEwfWNhdGNoKFkpe3JldHVybiExfXJldHVybiExfTthZS5oYXNBcnJheUxlbmd0aERlZmluZUJ1Zz1mdW5jdGlvbigpe2lmKCFh''@;'; put 'put ''ZSgpKXJldHVybiBudWxsO3RyeXtyZXR1cm4gMSE9PXJlKFtdLCJsZW5ndGgiLHt2YWx1ZToxfSkubGVuZ3RofWNhdGNoKFkpe3JldHVybiEwfX0sVS5leHBvcnRzPWFlfSwxNDA1OihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1i''@;'; put 'put ''b2wsYWU9aig1NDE5KTtVLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgcmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgcmUoImZvbyIpJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbCgiYmFyIikmJmFlKCl9fSw1NDE5OlU9''@;'; put 'put ''PnsidXNlIHN0cmljdCI7VS5leHBvcnRzPWZ1bmN0aW9uKCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFN5bWJvbHx8ImZ1bmN0aW9uIiE9dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpcmV0dXJuITE7aWYoInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3IpcmV0dXJu''@;'; put 'put ''ITA7dmFyIFE9e30saj1TeW1ib2woInRlc3QiKSxyZT1PYmplY3Qoaik7aWYoInN0cmluZyI9PXR5cGVvZiBqfHwiW29iamVjdCBTeW1ib2xdIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChqKXx8IltvYmplY3QgU3ltYm9sXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5n''@;'; put 'put ''LmNhbGwocmUpKXJldHVybiExO2ZvcihqIGluIFFbal09NDIsUSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmtleXMmJjAhPT1PYmplY3Qua2V5cyhRKS5sZW5ndGh8fCJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyYmMCE9PU9iamVj''@;'; put 'put ''dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFEpLmxlbmd0aClyZXR1cm4hMTt2YXIgYWU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhRKTtpZigxIT09YWUubGVuZ3RofHxhZVswXSE9PWp8fCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoUSxqKSlyZXR1cm4h''@;'; put 'put ''MTtpZigiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcil7dmFyIFk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihRLGopO2lmKDQyIT09WS52YWx1ZXx8ITAhPT1ZLmVudW1lcmFibGUpcmV0dXJuITF9cmV0dXJuITB9fSw2NDEwOihVLFEs''@;'; put 'put ''aik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNTQxOSk7VS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHJlKCkmJiEhU3ltYm9sLnRvU3RyaW5nVGFnfX0sNzY0MjooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDg2MTIpO1UuZXhwb3J0cz1yZS5jYWxsKEZ1bmN0aW9uLmNhbGws''@;'; put 'put ''T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSl9LDMzNDk6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aigyMTMpLkJ1ZmZlcixhZT1qKDg0NzMpLlRyYW5zZm9ybTtmdW5jdGlvbiBZKFcpe2FlLmNhbGwodGhpcyksdGhpcy5fYmxvY2s9cmUuYWxsb2NVbnNhZmUoVyksdGhp''@;'; put 'put ''cy5fYmxvY2tTaXplPVcsdGhpcy5fYmxvY2tPZmZzZXQ9MCx0aGlzLl9sZW5ndGg9WzAsMCwwLDBdLHRoaXMuX2ZpbmFsaXplZD0hMX1qKDU3MTcpKFksYWUpLFkucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oVyxOLHRlKXt2YXIgSz1udWxsO3RyeXt0aGlzLnVwZGF0ZShXLE4pfWNh''@;'; put 'put ''dGNoKEope0s9Sn10ZShLKX0sWS5wcm90b3R5cGUuX2ZsdXNoPWZ1bmN0aW9uKFcpe3ZhciBOPW51bGw7dHJ5e3RoaXMucHVzaCh0aGlzLmRpZ2VzdCgpKX1jYXRjaCh0ZSl7Tj10ZX1XKE4pfSxZLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oVyxOKXtpZihmdW5jdGlvbihjZSxkZSl7aWYo''@;'; put 'put ''IXJlLmlzQnVmZmVyKGNlKSYmInN0cmluZyIhPXR5cGVvZiBjZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJEYXRhIG11c3QgYmUgYSBzdHJpbmcgb3IgYSBidWZmZXIiKX0oVyksdGhpcy5fZmluYWxpemVkKXRocm93IG5ldyBFcnJvcigiRGlnZXN0IGFscmVhZHkgY2FsbGVkIik7cmUuaXNCdWZm''@;'; put 'put ''ZXIoVyl8fChXPXJlLmZyb20oVyxOKSk7Zm9yKHZhciB0ZT10aGlzLl9ibG9jayxLPTA7dGhpcy5fYmxvY2tPZmZzZXQrVy5sZW5ndGgtSz49dGhpcy5fYmxvY2tTaXplOyl7Zm9yKHZhciBKPXRoaXMuX2Jsb2NrT2Zmc2V0O0o8dGhpcy5fYmxvY2tTaXplOyl0ZVtKKytdPVdbSysrXTt0aGlz''@;'; put 'put ''Ll91cGRhdGUoKSx0aGlzLl9ibG9ja09mZnNldD0wfWZvcig7SzxXLmxlbmd0aDspdGVbdGhpcy5fYmxvY2tPZmZzZXQrK109V1tLKytdO2Zvcih2YXIgc2U9MCxvZT04KlcubGVuZ3RoO29lPjA7KytzZSl0aGlzLl9sZW5ndGhbc2VdKz1vZSwob2U9dGhpcy5fbGVuZ3RoW3NlXS80Mjk0OTY3''@;'; put 'put ''Mjk2fDApPjAmJih0aGlzLl9sZW5ndGhbc2VdLT00Mjk0OTY3Mjk2Km9lKTtyZXR1cm4gdGhpc30sWS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiX3VwZGF0ZSBpcyBub3QgaW1wbGVtZW50ZWQiKX0sWS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKFcp''@;'; put 'put ''e2lmKHRoaXMuX2ZpbmFsaXplZCl0aHJvdyBuZXcgRXJyb3IoIkRpZ2VzdCBhbHJlYWR5IGNhbGxlZCIpO3RoaXMuX2ZpbmFsaXplZD0hMDt2YXIgTj10aGlzLl9kaWdlc3QoKTt2b2lkIDAhPT1XJiYoTj1OLnRvU3RyaW5nKFcpKSx0aGlzLl9ibG9jay5maWxsKDApLHRoaXMuX2Jsb2NrT2Zm''@;'; put 'put ''c2V0PTA7Zm9yKHZhciB0ZT0wO3RlPDQ7Kyt0ZSl0aGlzLl9sZW5ndGhbdGVdPTA7cmV0dXJuIE59LFkucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIl9kaWdlc3QgaXMgbm90IGltcGxlbWVudGVkIil9LFUuZXhwb3J0cz1ZfSwyMTM6KFUsUSxqKT0+e3Zh''@;'; put 'put ''ciByZT1qKDg3NjQpLGFlPXJlLkJ1ZmZlcjtmdW5jdGlvbiBZKE4sdGUpe2Zvcih2YXIgSyBpbiBOKXRlW0tdPU5bS119ZnVuY3Rpb24gVyhOLHRlLEspe3JldHVybiBhZShOLHRlLEspfWFlLmZyb20mJmFlLmFsbG9jJiZhZS5hbGxvY1Vuc2FmZSYmYWUuYWxsb2NVbnNhZmVTbG93P1UuZXhw''@;'; put 'put ''b3J0cz1yZTooWShyZSxRKSxRLkJ1ZmZlcj1XKSxXLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGFlLnByb3RvdHlwZSksWShhZSxXKSxXLmZyb209ZnVuY3Rpb24oTix0ZSxLKXtpZigibnVtYmVyIj09dHlwZW9mIE4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBub3QgYmUg''@;'; put 'put ''YSBudW1iZXIiKTtyZXR1cm4gYWUoTix0ZSxLKX0sVy5hbGxvYz1mdW5jdGlvbihOLHRlLEspe2lmKCJudW1iZXIiIT10eXBlb2YgTil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7dmFyIEo9YWUoTik7cmV0dXJuIHZvaWQgMCE9PXRlPyJzdHJpbmci''@;'; put 'put ''PT10eXBlb2YgSz9KLmZpbGwodGUsSyk6Si5maWxsKHRlKTpKLmZpbGwoMCksSn0sVy5hbGxvY1Vuc2FmZT1mdW5jdGlvbihOKXtpZigibnVtYmVyIiE9dHlwZW9mIE4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBhZShOKX0sVy5hbGxv''@;'; put 'put ''Y1Vuc2FmZVNsb3c9ZnVuY3Rpb24oTil7aWYoIm51bWJlciIhPXR5cGVvZiBOKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gcmUuU2xvd0J1ZmZlcihOKX19LDM3MTU6KFUsUSxqKT0+e3ZhciByZT1RO3JlLnV0aWxzPWooNjQzNikscmUu''@;'; put 'put ''Y29tbW9uPWooNTc3MikscmUuc2hhPWooOTA0MSkscmUucmlwZW1kPWooMjk0OSkscmUuaG1hYz1qKDIzNDQpLHJlLnNoYTE9cmUuc2hhLnNoYTEscmUuc2hhMjU2PXJlLnNoYS5zaGEyNTYscmUuc2hhMjI0PXJlLnNoYS5zaGEyMjQscmUuc2hhMzg0PXJlLnNoYS5zaGEzODQscmUuc2hhNTEy''@;'; put 'put ''PXJlLnNoYS5zaGE1MTIscmUucmlwZW1kMTYwPXJlLnJpcGVtZC5yaXBlbWQxNjB9LDU3NzI6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig2NDM2KSxhZT1qKDk3NDYpO2Z1bmN0aW9uIFkoKXt0aGlzLnBlbmRpbmc9bnVsbCx0aGlzLnBlbmRpbmdUb3RhbD0wLHRoaXMuYmxvY2tT''@;'; put 'put ''aXplPXRoaXMuY29uc3RydWN0b3IuYmxvY2tTaXplLHRoaXMub3V0U2l6ZT10aGlzLmNvbnN0cnVjdG9yLm91dFNpemUsdGhpcy5obWFjU3RyZW5ndGg9dGhpcy5jb25zdHJ1Y3Rvci5obWFjU3RyZW5ndGgsdGhpcy5wYWRMZW5ndGg9dGhpcy5jb25zdHJ1Y3Rvci5wYWRMZW5ndGgvOCx0aGlz''@;'; put 'put ''LmVuZGlhbj0iYmlnIix0aGlzLl9kZWx0YTg9dGhpcy5ibG9ja1NpemUvOCx0aGlzLl9kZWx0YTMyPXRoaXMuYmxvY2tTaXplLzMyfVEuQmxvY2tIYXNoPVksWS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKFcsTil7aWYoVz1yZS50b0FycmF5KFcsTiksdGhpcy5wZW5kaW5nPXRoaXMucGVu''@;'; put 'put ''ZGluZz90aGlzLnBlbmRpbmcuY29uY2F0KFcpOlcsdGhpcy5wZW5kaW5nVG90YWwrPVcubGVuZ3RoLHRoaXMucGVuZGluZy5sZW5ndGg+PXRoaXMuX2RlbHRhOCl7dmFyIHRlPShXPXRoaXMucGVuZGluZykubGVuZ3RoJXRoaXMuX2RlbHRhODt0aGlzLnBlbmRpbmc9Vy5zbGljZShXLmxlbmd0''@;'; put 'put ''aC10ZSxXLmxlbmd0aCksMD09PXRoaXMucGVuZGluZy5sZW5ndGgmJih0aGlzLnBlbmRpbmc9bnVsbCksVz1yZS5qb2luMzIoVywwLFcubGVuZ3RoLXRlLHRoaXMuZW5kaWFuKTtmb3IodmFyIEs9MDtLPFcubGVuZ3RoO0srPXRoaXMuX2RlbHRhMzIpdGhpcy5fdXBkYXRlKFcsSyxLK3RoaXMu''@;'; put 'put ''X2RlbHRhMzIpfXJldHVybiB0aGlzfSxZLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oVyl7cmV0dXJuIHRoaXMudXBkYXRlKHRoaXMuX3BhZCgpKSxhZShudWxsPT09dGhpcy5wZW5kaW5nKSx0aGlzLl9kaWdlc3QoVyl9LFkucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24oKXt2YXIgVz10aGlz''@;'; put 'put ''LnBlbmRpbmdUb3RhbCxOPXRoaXMuX2RlbHRhOCx0ZT1OLShXK3RoaXMucGFkTGVuZ3RoKSVOLEs9bmV3IEFycmF5KHRlK3RoaXMucGFkTGVuZ3RoKTtLWzBdPTEyODtmb3IodmFyIEo9MTtKPHRlO0orKylLW0pdPTA7aWYoVzw8PTMsImJpZyI9PT10aGlzLmVuZGlhbil7Zm9yKHZhciBzZT04''@;'; put 'put ''O3NlPHRoaXMucGFkTGVuZ3RoO3NlKyspS1tKKytdPTA7S1tKKytdPTAsS1tKKytdPTAsS1tKKytdPTAsS1tKKytdPTAsS1tKKytdPVc+Pj4yNCYyNTUsS1tKKytdPVc+Pj4xNiYyNTUsS1tKKytdPVc+Pj44JjI1NSxLW0orK109MjU1Jld9ZWxzZSBmb3IoS1tKKytdPTI1NSZXLEtbSisrXT1X''@;'; put 'put ''Pj4+OCYyNTUsS1tKKytdPVc+Pj4xNiYyNTUsS1tKKytdPVc+Pj4yNCYyNTUsS1tKKytdPTAsS1tKKytdPTAsS1tKKytdPTAsS1tKKytdPTAsc2U9ODtzZTx0aGlzLnBhZExlbmd0aDtzZSsrKUtbSisrXT0wO3JldHVybiBLfX0sMjM0NDooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1q''@;'; put 'put ''KDY0MzYpLGFlPWooOTc0Nik7ZnVuY3Rpb24gWShXLE4sdGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFkpKXJldHVybiBuZXcgWShXLE4sdGUpO3RoaXMuSGFzaD1XLHRoaXMuYmxvY2tTaXplPVcuYmxvY2tTaXplLzgsdGhpcy5vdXRTaXplPVcub3V0U2l6ZS84LHRoaXMuaW5uZXI9bnVsbCx0''@;'; put 'put ''aGlzLm91dGVyPW51bGwsdGhpcy5faW5pdChyZS50b0FycmF5KE4sdGUpKX1VLmV4cG9ydHM9WSxZLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihXKXtXLmxlbmd0aD50aGlzLmJsb2NrU2l6ZSYmKFc9KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZShXKS5kaWdlc3QoKSksYWUoVy5sZW5ndGg8PXRo''@;'; put 'put ''aXMuYmxvY2tTaXplKTtmb3IodmFyIE49Vy5sZW5ndGg7Tjx0aGlzLmJsb2NrU2l6ZTtOKyspVy5wdXNoKDApO2ZvcihOPTA7TjxXLmxlbmd0aDtOKyspV1tOXV49NTQ7Zm9yKHRoaXMuaW5uZXI9KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZShXKSxOPTA7TjxXLmxlbmd0aDtOKyspV1tOXV49MTA2''@;'; put 'put ''O3RoaXMub3V0ZXI9KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZShXKX0sWS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKFcsTil7cmV0dXJuIHRoaXMuaW5uZXIudXBkYXRlKFcsTiksdGhpc30sWS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKFcpe3JldHVybiB0aGlzLm91dGVyLnVwZGF0ZSh0''@;'; put 'put ''aGlzLmlubmVyLmRpZ2VzdCgpKSx0aGlzLm91dGVyLmRpZ2VzdChXKX19LDI5NDk6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig2NDM2KSxhZT1qKDU3NzIpLFk9cmUucm90bDMyLFc9cmUuc3VtMzIsTj1yZS5zdW0zMl8zLHRlPXJlLnN1bTMyXzQsSz1hZS5CbG9ja0hhc2g7ZnVu''@;'; put 'put ''Y3Rpb24gSigpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEopKXJldHVybiBuZXcgSjtLLmNhbGwodGhpcyksdGhpcy5oPVsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF0sdGhpcy5lbmRpYW49ImxpdHRsZSJ9ZnVuY3Rpb24gc2UoU2UsSWUsVGUs''@;'; put 'put ''TWUpe3JldHVybiBTZTw9MTU/SWVeVGVeTWU6U2U8PTMxP0llJlRlfH5JZSZNZTpTZTw9NDc/KEllfH5UZSleTWU6U2U8PTYzP0llJk1lfFRlJn5NZTpJZV4oVGV8fk1lKX1mdW5jdGlvbiBvZShTZSl7cmV0dXJuIFNlPD0xNT8wOlNlPD0zMT8xNTE4NTAwMjQ5OlNlPD00Nz8xODU5Nzc1Mzkz''@;'; put 'put ''OlNlPD02Mz8yNDAwOTU5NzA4OjI4NDA4NTM4Mzh9ZnVuY3Rpb24gY2UoU2Upe3JldHVybiBTZTw9MTU/MTM1MjgyOTkyNjpTZTw9MzE/MTU0ODYwMzY4NDpTZTw9NDc/MTgzNjA3MjY5MTpTZTw9NjM/MjA1Mzk5NDIxNzowfXJlLmluaGVyaXRzKEosSyksUS5yaXBlbWQxNjA9SixKLmJsb2Nr''@;'; put 'put ''U2l6ZT01MTIsSi5vdXRTaXplPTE2MCxKLmhtYWNTdHJlbmd0aD0xOTIsSi5wYWRMZW5ndGg9NjQsSi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihTZSxJZSl7Zm9yKHZhciBUZT10aGlzLmhbMF0sTWU9dGhpcy5oWzFdLGhlPXRoaXMuaFsyXSxPPXRoaXMuaFszXSx6PXRoaXMuaFs0XSxl''@;'; put 'put ''ZT1UZSxuZT1NZSx4PWhlLFA9TyxWPXosVD0wO1Q8ODA7VCsrKXt2YXIgUz1XKFkodGUoVGUsc2UoVCxNZSxoZSxPKSxTZVtkZVtUXStJZV0sb2UoVCkpLEFlW1RdKSx6KTtUZT16LHo9TyxPPVkoaGUsMTApLGhlPU1lLE1lPVMsUz1XKFkodGUoZWUsc2UoNzktVCxuZSx4LFApLFNlW3ZlW1Rd''@;'; put 'put ''K0llXSxjZShUKSksa2VbVF0pLFYpLGVlPVYsVj1QLFA9WSh4LDEwKSx4PW5lLG5lPVN9Uz1OKHRoaXMuaFsxXSxoZSxQKSx0aGlzLmhbMV09Tih0aGlzLmhbMl0sTyxWKSx0aGlzLmhbMl09Tih0aGlzLmhbM10seixlZSksdGhpcy5oWzNdPU4odGhpcy5oWzRdLFRlLG5lKSx0aGlzLmhbNF09''@;'; put 'put ''Tih0aGlzLmhbMF0sTWUseCksdGhpcy5oWzBdPVN9LEoucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oU2Upe3JldHVybiJoZXgiPT09U2U/cmUudG9IZXgzMih0aGlzLmgsImxpdHRsZSIpOnJlLnNwbGl0MzIodGhpcy5oLCJsaXR0bGUiKX07dmFyIGRlPVswLDEsMiwzLDQsNSw2LDcsOCw5''@;'; put 'put ''LDEwLDExLDEyLDEzLDE0LDE1LDcsNCwxMywxLDEwLDYsMTUsMywxMiwwLDksNSwyLDE0LDExLDgsMywxMCwxNCw0LDksMTUsOCwxLDIsNywwLDYsMTMsMTEsNSwxMiwxLDksMTEsMTAsMCw4LDEyLDQsMTMsMyw3LDE1LDE0LDUsNiwyLDQsMCw1LDksNywxMiwyLDEwLDE0LDEsMyw4LDExLDYs''@;'; put 'put ''MTUsMTNdLHZlPVs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwxMCwzLDEyLDYsMTEsMyw3LDAsMTMsNSwxMCwxNCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEy''@;'; put 'put ''LDE1LDEwLDQsMSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdLEFlPVsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwx''@;'; put 'put ''MiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XSxrZT1bOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMsMTUsNywxMiw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcs''@;'; put 'put ''MTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0LDE0LDYsMTQsNiw5LDEyLDksMTIsNSwxNSw4LDgsNSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV19LDkwNDE6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0IjtRLnNoYTE9aig0NzYxKSxRLnNo''@;'; put 'put ''YTIyND1qKDc5OSksUS5zaGEyNTY9aig5MzQ0KSxRLnNoYTM4ND1qKDc3MiksUS5zaGE1MTI9aig1OTAwKX0sNDc2MTooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDY0MzYpLGFlPWooNTc3MiksWT1qKDcwMzgpLFc9cmUucm90bDMyLE49cmUuc3VtMzIsdGU9cmUuc3VtMzJfNSxL''@;'; put 'put ''PVkuZnRfMSxKPWFlLkJsb2NrSGFzaCxzZT1bMTUxODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMzM5NTQ2OTc4Ml07ZnVuY3Rpb24gb2UoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBvZSkpcmV0dXJuIG5ldyBvZTtKLmNhbGwodGhpcyksdGhpcy5oPVsxNzMyNTg0MTkzLDQwMjMyMzM0''@;'; put 'put ''MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF0sdGhpcy5XPW5ldyBBcnJheSg4MCl9cmUuaW5oZXJpdHMob2UsSiksVS5leHBvcnRzPW9lLG9lLmJsb2NrU2l6ZT01MTIsb2Uub3V0U2l6ZT0xNjAsb2UuaG1hY1N0cmVuZ3RoPTgwLG9lLnBhZExlbmd0aD02NCxvZS5wcm90b3R5''@;'; put 'put ''cGUuX3VwZGF0ZT1mdW5jdGlvbihjZSxkZSl7Zm9yKHZhciB2ZT10aGlzLlcsQWU9MDtBZTwxNjtBZSsrKXZlW0FlXT1jZVtkZStBZV07Zm9yKDtBZTx2ZS5sZW5ndGg7QWUrKyl2ZVtBZV09Vyh2ZVtBZS0zXV52ZVtBZS04XV52ZVtBZS0xNF1edmVbQWUtMTZdLDEpO3ZhciBrZT10aGlzLmhb''@;'; put 'put ''MF0sU2U9dGhpcy5oWzFdLEllPXRoaXMuaFsyXSxUZT10aGlzLmhbM10sTWU9dGhpcy5oWzRdO2ZvcihBZT0wO0FlPHZlLmxlbmd0aDtBZSsrKXt2YXIgaGU9fn4oQWUvMjApLE89dGUoVyhrZSw1KSxLKGhlLFNlLEllLFRlKSxNZSx2ZVtBZV0sc2VbaGVdKTtNZT1UZSxUZT1JZSxJZT1XKFNl''@;'; put 'put ''LDMwKSxTZT1rZSxrZT1PfXRoaXMuaFswXT1OKHRoaXMuaFswXSxrZSksdGhpcy5oWzFdPU4odGhpcy5oWzFdLFNlKSx0aGlzLmhbMl09Tih0aGlzLmhbMl0sSWUpLHRoaXMuaFszXT1OKHRoaXMuaFszXSxUZSksdGhpcy5oWzRdPU4odGhpcy5oWzRdLE1lKX0sb2UucHJvdG90eXBlLl9kaWdl''@;'; put 'put ''c3Q9ZnVuY3Rpb24oY2Upe3JldHVybiJoZXgiPT09Y2U/cmUudG9IZXgzMih0aGlzLmgsImJpZyIpOnJlLnNwbGl0MzIodGhpcy5oLCJiaWciKX19LDc5OTooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDY0MzYpLGFlPWooOTM0NCk7ZnVuY3Rpb24gWSgpe2lmKCEodGhpcyBpbnN0''@;'; put 'put ''YW5jZW9mIFkpKXJldHVybiBuZXcgWTthZS5jYWxsKHRoaXMpLHRoaXMuaD1bMzIzODM3MTAzMiw5MTQxNTA2NjMsODEyNzAyOTk5LDQxNDQ5MTI2OTcsNDI5MDc3NTg1NywxNzUwNjAzMDI1LDE2OTQwNzY4MzksMzIwNDA3NTQyOF19cmUuaW5oZXJpdHMoWSxhZSksVS5leHBvcnRzPVksWS5i''@;'; put 'put ''bG9ja1NpemU9NTEyLFkub3V0U2l6ZT0yMjQsWS5obWFjU3RyZW5ndGg9MTkyLFkucGFkTGVuZ3RoPTY0LFkucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oVyl7cmV0dXJuImhleCI9PT1XP3JlLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsNyksImJpZyIpOnJlLnNwbGl0MzIodGhpcy5oLnNs''@;'; put 'put ''aWNlKDAsNyksImJpZyIpfX0sOTM0NDooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDY0MzYpLGFlPWooNTc3MiksWT1qKDcwMzgpLFc9aig5NzQ2KSxOPXJlLnN1bTMyLHRlPXJlLnN1bTMyXzQsSz1yZS5zdW0zMl81LEo9WS5jaDMyLHNlPVkubWFqMzIsb2U9WS5zMF8yNTYsY2U9''@;'; put 'put ''WS5zMV8yNTYsZGU9WS5nMF8yNTYsdmU9WS5nMV8yNTYsQWU9YWUuQmxvY2tIYXNoLGtlPVsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcy''@;'; put 'put ''MjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQz''@;'; put 'put ''NDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwy''@;'; put 'put ''ODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYy''@;'; put 'put ''MjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdO2Z1bmN0aW9uIFNlKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgU2UpKXJldHVybiBuZXcgU2U7QWUuY2FsbCh0aGlzKSx0aGlzLmg9WzE3NzkwMzM3''@;'; put 'put ''MDMsMzE0NDEzNDI3NywxMDEzOTA0MjQyLDI3NzM0ODA3NjIsMTM1OTg5MzExOSwyNjAwODIyOTI0LDUyODczNDYzNSwxNTQxNDU5MjI1XSx0aGlzLms9a2UsdGhpcy5XPW5ldyBBcnJheSg2NCl9cmUuaW5oZXJpdHMoU2UsQWUpLFUuZXhwb3J0cz1TZSxTZS5ibG9ja1NpemU9NTEyLFNlLm91''@;'; put 'put ''dFNpemU9MjU2LFNlLmhtYWNTdHJlbmd0aD0xOTIsU2UucGFkTGVuZ3RoPTY0LFNlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKEllLFRlKXtmb3IodmFyIE1lPXRoaXMuVyxoZT0wO2hlPDE2O2hlKyspTWVbaGVdPUllW1RlK2hlXTtmb3IoO2hlPE1lLmxlbmd0aDtoZSsrKU1lW2hlXT10''@;'; put 'put ''ZSh2ZShNZVtoZS0yXSksTWVbaGUtN10sZGUoTWVbaGUtMTVdKSxNZVtoZS0xNl0pO3ZhciBPPXRoaXMuaFswXSx6PXRoaXMuaFsxXSxlZT10aGlzLmhbMl0sbmU9dGhpcy5oWzNdLHg9dGhpcy5oWzRdLFA9dGhpcy5oWzVdLFY9dGhpcy5oWzZdLFQ9dGhpcy5oWzddO2ZvcihXKHRoaXMuay5s''@;'; put 'put ''ZW5ndGg9PT1NZS5sZW5ndGgpLGhlPTA7aGU8TWUubGVuZ3RoO2hlKyspe3ZhciBTPUsoVCxjZSh4KSxKKHgsUCxWKSx0aGlzLmtbaGVdLE1lW2hlXSksRj1OKG9lKE8pLHNlKE8seixlZSkpO1Q9VixWPVAsUD14LHg9TihuZSxTKSxuZT1lZSxlZT16LHo9TyxPPU4oUyxGKX10aGlzLmhbMF09''@;'; put 'put ''Tih0aGlzLmhbMF0sTyksdGhpcy5oWzFdPU4odGhpcy5oWzFdLHopLHRoaXMuaFsyXT1OKHRoaXMuaFsyXSxlZSksdGhpcy5oWzNdPU4odGhpcy5oWzNdLG5lKSx0aGlzLmhbNF09Tih0aGlzLmhbNF0seCksdGhpcy5oWzVdPU4odGhpcy5oWzVdLFApLHRoaXMuaFs2XT1OKHRoaXMuaFs2XSxW''@;'; put 'put ''KSx0aGlzLmhbN109Tih0aGlzLmhbN10sVCl9LFNlLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKEllKXtyZXR1cm4iaGV4Ij09PUllP3JlLnRvSGV4MzIodGhpcy5oLCJiaWciKTpyZS5zcGxpdDMyKHRoaXMuaCwiYmlnIil9fSw3NzI6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9''@;'; put 'put ''aig2NDM2KSxhZT1qKDU5MDApO2Z1bmN0aW9uIFkoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBZKSlyZXR1cm4gbmV3IFk7YWUuY2FsbCh0aGlzKSx0aGlzLmg9WzM0MTgwNzAzNjUsMzIzODM3MTAzMiwxNjU0MjcwMjUwLDkxNDE1MDY2MywyNDM4NTI5MzcwLDgxMjcwMjk5OSwzNTU0NjIzNjAs''@;'; put 'put ''NDE0NDkxMjY5NywxNzMxNDA1NDE1LDQyOTA3NzU4NTcsMjM5NDE4MDIzMSwxNzUwNjAzMDI1LDM2NzUwMDg1MjUsMTY5NDA3NjgzOSwxMjAzMDYyODEzLDMyMDQwNzU0MjhdfXJlLmluaGVyaXRzKFksYWUpLFUuZXhwb3J0cz1ZLFkuYmxvY2tTaXplPTEwMjQsWS5vdXRTaXplPTM4NCxZLmht''@;'; put 'put ''YWNTdHJlbmd0aD0xOTIsWS5wYWRMZW5ndGg9MTI4LFkucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oVyl7cmV0dXJuImhleCI9PT1XP3JlLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsMTIpLCJiaWciKTpyZS5zcGxpdDMyKHRoaXMuaC5zbGljZSgwLDEyKSwiYmlnIil9fSw1OTAwOihVLFEs''@;'; put 'put ''aik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNjQzNiksYWU9aig1NzcyKSxZPWooOTc0NiksVz1yZS5yb3RyNjRfaGksTj1yZS5yb3RyNjRfbG8sdGU9cmUuc2hyNjRfaGksSz1yZS5zaHI2NF9sbyxKPXJlLnN1bTY0LHNlPXJlLnN1bTY0X2hpLG9lPXJlLnN1bTY0X2xvLGNlPXJlLnN1bTY0''@;'; put 'put ''XzRfaGksZGU9cmUuc3VtNjRfNF9sbyx2ZT1yZS5zdW02NF81X2hpLEFlPXJlLnN1bTY0XzVfbG8sa2U9YWUuQmxvY2tIYXNoLFNlPVsxMTE2MzUyNDA4LDM2MDk3Njc0NTgsMTg5OTQ0NzQ0MSw2MDI4OTE3MjUsMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5LDM5MjEwMDk1NzMsMjE3MzI5NTU0OCw5''@;'; put 'put ''NjE5ODcxNjMsNDA4MTYyODQ3MiwxNTA4OTcwOTkzLDMwNTM4MzQyNjUsMjQ1MzYzNTc0OCwyOTM3NjcxNTc5LDI4NzA3NjMyMjEsMzY2NDYwOTU2MCwzNjI0MzgxMDgwLDI3MzQ4ODMzOTQsMzEwNTk4NDAxLDExNjQ5OTY1NDIsNjA3MjI1Mjc4LDEzMjM2MTA3NjQsMTQyNjg4MTk4NywzNTkw''@;'; put 'put ''MzA0OTk0LDE5MjUwNzgzODgsNDA2ODE4MjM4MywyMTYyMDc4MjA2LDk5MTMzNjExMywyNjE0ODg4MTAzLDYzMzgwMzMxNywzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgsMzgzNTM5MDQwMSwyNjY2NjEzNDU4LDQwMjIyMjQ3NzQsOTQ0NzExMTM5LDI2NDM0NzA3OCwyMzQxMjYyNzczLDYwNDgwNzYy''@;'; put 'put ''OCwyMDA3ODAwOTMzLDc3MDI1NTk4MywxNDk1OTkwOTAxLDEyNDkxNTAxMjIsMTg1NjQzMTIzNSwxNTU1MDgxNjkyLDMxNzUyMTgxMzIsMTk5NjA2NDk4NiwyMTk4OTUwODM3LDI1NTQyMjA4ODIsMzk5OTcxOTMzOSwyODIxODM0MzQ5LDc2Njc4NDAxNiwyOTUyOTk2ODA4LDI1NjY1OTQ4Nzks''@;'; put 'put ''MzIxMDMxMzY3MSwzMjAzMzM3OTU2LDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiwzNTg0NTI4NzExLDI0NjY5NDg5MDEsMTEzOTI2OTkzLDM3NTgzMjYzODMsMzM4MjQxODk1LDE2ODcxNzkzNiw2NjYzMDcyMDUsMTE4ODE3OTk2NCw3NzM1Mjk5MTIsMTU0NjA0NTczNCwxMjk0NzU3MzcyLDE1MjI4''@;'; put 'put ''MDU0ODUsMTM5NjE4MjI5MSwyNjQzODMzODIzLDE2OTUxODM3MDAsMjM0MzUyNzM5MCwxOTg2NjYxMDUxLDEwMTQ0Nzc0ODAsMjE3NzAyNjM1MCwxMjA2NzU5MTQyLDI0NTY5NTYwMzcsMzQ0MDc3NjI3LDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCwyODIwMzAyNDExLDMxNTg0NTQyNzMsMzI1OTcz''@;'; put 'put ''MDgwMCwzNTA1OTUyNjU3LDMzNDU3NjQ3NzEsMTA2MjE3MDA4LDM1MTYwNjU4MTcsMzYwNjAwODM0NCwzNjAwMzUyODA0LDE0MzI3MjU3NzYsNDA5NDU3MTkwOSwxNDY3MDMxNTk0LDI3NTQyMzM0NCw4NTExNjk3MjAsNDMwMjI3NzM0LDMxMDA4MjM3NTIsNTA2OTQ4NjE2LDEzNjMyNTgxOTUs''@;'; put 'put ''NjU5MDYwNTU2LDM3NTA2ODU1OTMsODgzOTk3ODc3LDM3ODUwNTAyODAsOTU4MTM5NTcxLDMzMTgzMDc0MjcsMTMyMjgyMjIxOCwzODEyNzIzNDAzLDE1MzcwMDIwNjMsMjAwMzAzNDk5NSwxNzQ3ODczNzc5LDM2MDIwMzY4OTksMTk1NTU2MjIyMiwxNTc1OTkwMDEyLDIwMjQxMDQ4MTUsMTEy''@;'; put 'put ''NTU5MjkyOCwyMjI3NzMwNDUyLDI3MTY5MDQzMDYsMjM2MTg1MjQyNCw0NDI3NzYwNDQsMjQyODQzNjQ3NCw1OTM2OTgzNDQsMjc1NjczNDE4NywzNzMzMTEwMjQ5LDMyMDQwMzE0NzksMjk5OTM1MTU3MywzMzI5MzI1Mjk4LDM4MTU5MjA0MjcsMzM5MTU2OTYxNCwzOTI4MzgzOTAwLDM1MTUy''@;'; put 'put ''NjcyNzEsNTY2MjgwNzExLDM5NDAxODc2MDYsMzQ1NDA2OTUzNCw0MTE4NjMwMjcxLDQwMDAyMzk5OTIsMTE2NDE4NDc0LDE5MTQxMzg1NTQsMTc0MjkyNDIxLDI3MzEwNTUyNzAsMjg5MzgwMzU2LDMyMDM5OTMwMDYsNDYwMzkzMjY5LDMyMDYyMDMxNSw2ODU0NzE3MzMsNTg3NDk2ODM2LDg1''@;'; put 'put ''MjE0Mjk3MSwxMDg2NzkyODUxLDEwMTcwMzYyOTgsMzY1NTQzMTAwLDExMjYwMDA1ODAsMjYxODI5NzY3NiwxMjg4MDMzNDcwLDM0MDk4NTUxNTgsMTUwMTUwNTk0OCw0MjM0NTA5ODY2LDE2MDcxNjc5MTUsOTg3MTY3NDY4LDE4MTY0MDIzMTYsMTI0NjE4OTU5MV07ZnVuY3Rpb24gSWUoKXtp''@;'; put 'put ''ZighKHRoaXMgaW5zdGFuY2VvZiBJZSkpcmV0dXJuIG5ldyBJZTtrZS5jYWxsKHRoaXMpLHRoaXMuaD1bMTc3OTAzMzcwMyw0MDg5MjM1NzIwLDMxNDQxMzQyNzcsMjIyNzg3MzU5NSwxMDEzOTA0MjQyLDQyNzExNzU3MjMsMjc3MzQ4MDc2MiwxNTk1NzUwMTI5LDEzNTk4OTMxMTksMjkxNzU2''@;'; put 'put ''NTEzNywyNjAwODIyOTI0LDcyNTUxMTE5OSw1Mjg3MzQ2MzUsNDIxNTM4OTU0NywxNTQxNDU5MjI1LDMyNzAzMzIwOV0sdGhpcy5rPVNlLHRoaXMuVz1uZXcgQXJyYXkoMTYwKX1mdW5jdGlvbiBUZShGLHllLENlLERlLFBlKXt2YXIgUWU9RiZDZV5+RiZQZTtyZXR1cm4gUWU8MCYmKFFlKz00''@;'; put 'put ''Mjk0OTY3Mjk2KSxRZX1mdW5jdGlvbiBNZShGLHllLENlLERlLFBlLFFlKXt2YXIgJGU9eWUmRGVefnllJlFlO3JldHVybiAkZTwwJiYoJGUrPTQyOTQ5NjcyOTYpLCRlfWZ1bmN0aW9uIGhlKEYseWUsQ2UsRGUsUGUpe3ZhciBRZT1GJkNlXkYmUGVeQ2UmUGU7cmV0dXJuIFFlPDAmJihRZSs9''@;'; put 'put ''NDI5NDk2NzI5NiksUWV9ZnVuY3Rpb24gTyhGLHllLENlLERlLFBlLFFlKXt2YXIgJGU9eWUmRGVeeWUmUWVeRGUmUWU7cmV0dXJuICRlPDAmJigkZSs9NDI5NDk2NzI5NiksJGV9ZnVuY3Rpb24geihGLHllKXt2YXIgQ2U9VyhGLHllLDI4KV5XKHllLEYsMileVyh5ZSxGLDcpO3JldHVybiBD''@;'; put 'put ''ZTwwJiYoQ2UrPTQyOTQ5NjcyOTYpLENlfWZ1bmN0aW9uIGVlKEYseWUpe3ZhciBDZT1OKEYseWUsMjgpXk4oeWUsRiwyKV5OKHllLEYsNyk7cmV0dXJuIENlPDAmJihDZSs9NDI5NDk2NzI5NiksQ2V9ZnVuY3Rpb24gbmUoRix5ZSl7dmFyIENlPVcoRix5ZSwxNCleVyhGLHllLDE4KV5XKHll''@;'; put 'put ''LEYsOSk7cmV0dXJuIENlPDAmJihDZSs9NDI5NDk2NzI5NiksQ2V9ZnVuY3Rpb24geChGLHllKXt2YXIgQ2U9TihGLHllLDE0KV5OKEYseWUsMTgpXk4oeWUsRiw5KTtyZXR1cm4gQ2U8MCYmKENlKz00Mjk0OTY3Mjk2KSxDZX1mdW5jdGlvbiBQKEYseWUpe3ZhciBDZT1XKEYseWUsMSleVyhG''@;'; put 'put ''LHllLDgpXnRlKEYseWUsNyk7cmV0dXJuIENlPDAmJihDZSs9NDI5NDk2NzI5NiksQ2V9ZnVuY3Rpb24gVihGLHllKXt2YXIgQ2U9TihGLHllLDEpXk4oRix5ZSw4KV5LKEYseWUsNyk7cmV0dXJuIENlPDAmJihDZSs9NDI5NDk2NzI5NiksQ2V9ZnVuY3Rpb24gVChGLHllKXt2YXIgQ2U9VyhG''@;'; put 'put ''LHllLDE5KV5XKHllLEYsMjkpXnRlKEYseWUsNik7cmV0dXJuIENlPDAmJihDZSs9NDI5NDk2NzI5NiksQ2V9ZnVuY3Rpb24gUyhGLHllKXt2YXIgQ2U9TihGLHllLDE5KV5OKHllLEYsMjkpXksoRix5ZSw2KTtyZXR1cm4gQ2U8MCYmKENlKz00Mjk0OTY3Mjk2KSxDZX1yZS5pbmhlcml0cyhJ''@;'; put 'put ''ZSxrZSksVS5leHBvcnRzPUllLEllLmJsb2NrU2l6ZT0xMDI0LEllLm91dFNpemU9NTEyLEllLmhtYWNTdHJlbmd0aD0xOTIsSWUucGFkTGVuZ3RoPTEyOCxJZS5wcm90b3R5cGUuX3ByZXBhcmVCbG9jaz1mdW5jdGlvbihGLHllKXtmb3IodmFyIENlPXRoaXMuVyxEZT0wO0RlPDMyO0RlKysp''@;'; put 'put ''Q2VbRGVdPUZbeWUrRGVdO2Zvcig7RGU8Q2UubGVuZ3RoO0RlKz0yKXt2YXIgUGU9VChDZVtEZS00XSxDZVtEZS0zXSksUWU9UyhDZVtEZS00XSxDZVtEZS0zXSksJGU9Q2VbRGUtMTRdLGd0PUNlW0RlLTEzXSx3dD1QKENlW0RlLTMwXSxDZVtEZS0yOV0pLG10PVYoQ2VbRGUtMzBdLENlW0Rl''@;'; put 'put ''LTI5XSksdnQ9Q2VbRGUtMzJdLEF0PUNlW0RlLTMxXTtDZVtEZV09Y2UoUGUsUWUsJGUsZ3Qsd3QsbXQsdnQsQXQpLENlW0RlKzFdPWRlKFBlLFFlLCRlLGd0LHd0LG10LHZ0LEF0KX19LEllLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKEYseWUpe3RoaXMuX3ByZXBhcmVCbG9jayhGLHll''@;'; put 'put ''KTt2YXIgQ2U9dGhpcy5XLERlPXRoaXMuaFswXSxQZT10aGlzLmhbMV0sUWU9dGhpcy5oWzJdLCRlPXRoaXMuaFszXSxndD10aGlzLmhbNF0sd3Q9dGhpcy5oWzVdLG10PXRoaXMuaFs2XSx2dD10aGlzLmhbN10sQXQ9dGhpcy5oWzhdLGh0PXRoaXMuaFs5XSxCdD10aGlzLmhbMTBdLG9uPXRo''@;'; put 'put ''aXMuaFsxMV0sX3Q9dGhpcy5oWzEyXSx0dD10aGlzLmhbMTNdLGV0PXRoaXMuaFsxNF0sbHQ9dGhpcy5oWzE1XTtZKHRoaXMuay5sZW5ndGg9PT1DZS5sZW5ndGgpO2Zvcih2YXIgTHQ9MDtMdDxDZS5sZW5ndGg7THQrPTIpe3ZhciBDdD1ldCxmdD1sdCxIdD1uZShBdCxodCksR2U9eChBdCxo''@;'; put 'put ''dCksVWU9VGUoQXQsMCxCdCwwLF90KSx5dD1NZSgwLGh0LDAsb24sMCx0dCksanQ9dGhpcy5rW0x0XSxKdD10aGlzLmtbTHQrMV0sZ249Q2VbTHRdLGRuPUNlW0x0KzFdLHluPXZlKEN0LGZ0LEh0LEdlLFVlLHl0LGp0LEp0LGduLGRuKSxsbj1BZShDdCxmdCxIdCxHZSxVZSx5dCxqdCxKdCxn''@;'; put 'put ''bixkbik7Q3Q9eihEZSxQZSksZnQ9ZWUoRGUsUGUpLEh0PWhlKERlLDAsUWUsMCxndCksR2U9TygwLFBlLDAsJGUsMCx3dCk7dmFyIE5uPXNlKEN0LGZ0LEh0LEdlKSxibj1vZShDdCxmdCxIdCxHZSk7ZXQ9X3QsbHQ9dHQsX3Q9QnQsdHQ9b24sQnQ9QXQsb249aHQsQXQ9c2UobXQsdnQseW4s''@;'; put 'put ''bG4pLGh0PW9lKHZ0LHZ0LHluLGxuKSxtdD1ndCx2dD13dCxndD1RZSx3dD0kZSxRZT1EZSwkZT1QZSxEZT1zZSh5bixsbixObixibiksUGU9b2UoeW4sbG4sTm4sYm4pfUoodGhpcy5oLDAsRGUsUGUpLEoodGhpcy5oLDIsUWUsJGUpLEoodGhpcy5oLDQsZ3Qsd3QpLEoodGhpcy5oLDYsbXQs''@;'; put 'put ''dnQpLEoodGhpcy5oLDgsQXQsaHQpLEoodGhpcy5oLDEwLEJ0LG9uKSxKKHRoaXMuaCwxMixfdCx0dCksSih0aGlzLmgsMTQsZXQsbHQpfSxJZS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihGKXtyZXR1cm4iaGV4Ij09PUY/cmUudG9IZXgzMih0aGlzLmgsImJpZyIpOnJlLnNwbGl0MzIo''@;'; put 'put ''dGhpcy5oLCJiaWciKX19LDcwMzg6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig2NDM2KS5yb3RyMzI7ZnVuY3Rpb24gYWUoTix0ZSxLKXtyZXR1cm4gTiZ0ZV5+TiZLfWZ1bmN0aW9uIFkoTix0ZSxLKXtyZXR1cm4gTiZ0ZV5OJktedGUmS31mdW5jdGlvbiBXKE4sdGUsSyl7cmV0''@;'; put 'put ''dXJuIE5edGVeS31RLmZ0XzE9ZnVuY3Rpb24oTix0ZSxLLEope3JldHVybiAwPT09Tj9hZSh0ZSxLLEopOjE9PT1OfHwzPT09Tj9XKHRlLEssSik6Mj09PU4/WSh0ZSxLLEopOnZvaWQgMH0sUS5jaDMyPWFlLFEubWFqMzI9WSxRLnAzMj1XLFEuczBfMjU2PWZ1bmN0aW9uKE4pe3JldHVybiBy''@;'; put 'put ''ZShOLDIpXnJlKE4sMTMpXnJlKE4sMjIpfSxRLnMxXzI1Nj1mdW5jdGlvbihOKXtyZXR1cm4gcmUoTiw2KV5yZShOLDExKV5yZShOLDI1KX0sUS5nMF8yNTY9ZnVuY3Rpb24oTil7cmV0dXJuIHJlKE4sNylecmUoTiwxOCleTj4+PjN9LFEuZzFfMjU2PWZ1bmN0aW9uKE4pe3JldHVybiByZShO''@;'; put 'put ''LDE3KV5yZShOLDE5KV5OPj4+MTB9fSw2NDM2OihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooOTc0NiksYWU9aig1NzE3KTtmdW5jdGlvbiBZKEssSil7cmV0dXJuIDU1Mjk2PT0oNjQ1MTImSy5jaGFyQ29kZUF0KEopKSYmIShKPDB8fEorMT49Sy5sZW5ndGgpJiY1NjMyMD09KDY0''@;'; put 'put ''NTEyJksuY2hhckNvZGVBdChKKzEpKX1mdW5jdGlvbiBXKEspe3JldHVybihLPj4+MjR8Sz4+PjgmNjUyODB8Szw8OCYxNjcxMTY4MHwoMjU1JkspPDwyNCk+Pj4wfWZ1bmN0aW9uIE4oSyl7cmV0dXJuIDE9PT1LLmxlbmd0aD8iMCIrSzpLfWZ1bmN0aW9uIHRlKEspe3JldHVybiA3PT09Sy5s''@;'; put 'put ''ZW5ndGg/IjAiK0s6Nj09PUsubGVuZ3RoPyIwMCIrSzo1PT09Sy5sZW5ndGg/IjAwMCIrSzo0PT09Sy5sZW5ndGg/IjAwMDAiK0s6Mz09PUsubGVuZ3RoPyIwMDAwMCIrSzoyPT09Sy5sZW5ndGg/IjAwMDAwMCIrSzoxPT09Sy5sZW5ndGg/IjAwMDAwMDAiK0s6S31RLmluaGVyaXRzPWFlLFEu''@;'; put 'put ''dG9BcnJheT1mdW5jdGlvbihLLEope2lmKEFycmF5LmlzQXJyYXkoSykpcmV0dXJuIEsuc2xpY2UoKTtpZighSylyZXR1cm5bXTt2YXIgc2U9W107aWYoInN0cmluZyI9PXR5cGVvZiBLKWlmKEope2lmKCJoZXgiPT09Silmb3IoKEs9Sy5yZXBsYWNlKC9bXmEtejAtOV0rL2dpLCIiKSkubGVu''@;'; put 'put ''Z3RoJTIhPTAmJihLPSIwIitLKSxjZT0wO2NlPEsubGVuZ3RoO2NlKz0yKXNlLnB1c2gocGFyc2VJbnQoS1tjZV0rS1tjZSsxXSwxNikpfWVsc2UgZm9yKHZhciBvZT0wLGNlPTA7Y2U8Sy5sZW5ndGg7Y2UrKyl7dmFyIGRlPUsuY2hhckNvZGVBdChjZSk7ZGU8MTI4P3NlW29lKytdPWRlOmRl''@;'; put 'put ''PDIwNDg/KHNlW29lKytdPWRlPj42fDE5MixzZVtvZSsrXT02MyZkZXwxMjgpOlkoSyxjZSk/KGRlPTY1NTM2KygoMTAyMyZkZSk8PDEwKSsoMTAyMyZLLmNoYXJDb2RlQXQoKytjZSkpLHNlW29lKytdPWRlPj4xOHwyNDAsc2Vbb2UrK109ZGU+PjEyJjYzfDEyOCxzZVtvZSsrXT1kZT4+NiY2''@;'; put 'put ''M3wxMjgsc2Vbb2UrK109NjMmZGV8MTI4KTooc2Vbb2UrK109ZGU+PjEyfDIyNCxzZVtvZSsrXT1kZT4+NiY2M3wxMjgsc2Vbb2UrK109NjMmZGV8MTI4KX1lbHNlIGZvcihjZT0wO2NlPEsubGVuZ3RoO2NlKyspc2VbY2VdPTB8S1tjZV07cmV0dXJuIHNlfSxRLnRvSGV4PWZ1bmN0aW9uKEsp''@;'; put 'put ''e2Zvcih2YXIgSj0iIixzZT0wO3NlPEsubGVuZ3RoO3NlKyspSis9TihLW3NlXS50b1N0cmluZygxNikpO3JldHVybiBKfSxRLmh0b25sPVcsUS50b0hleDMyPWZ1bmN0aW9uKEssSil7Zm9yKHZhciBzZT0iIixvZT0wO29lPEsubGVuZ3RoO29lKyspe3ZhciBjZT1LW29lXTsibGl0dGxlIj09''@;'; put 'put ''PUomJihjZT1XKGNlKSksc2UrPXRlKGNlLnRvU3RyaW5nKDE2KSl9cmV0dXJuIHNlfSxRLnplcm8yPU4sUS56ZXJvOD10ZSxRLmpvaW4zMj1mdW5jdGlvbihLLEosc2Usb2Upe3ZhciBjZT1zZS1KO3JlKGNlJTQ9PTApO2Zvcih2YXIgZGU9bmV3IEFycmF5KGNlLzQpLHZlPTAsQWU9Sjt2ZTxk''@;'; put 'put ''ZS5sZW5ndGg7dmUrKyxBZSs9NClkZVt2ZV09KCJiaWciPT09b2U/S1tBZV08PDI0fEtbQWUrMV08PDE2fEtbQWUrMl08PDh8S1tBZSszXTpLW0FlKzNdPDwyNHxLW0FlKzJdPDwxNnxLW0FlKzFdPDw4fEtbQWVdKT4+PjA7cmV0dXJuIGRlfSxRLnNwbGl0MzI9ZnVuY3Rpb24oSyxKKXtmb3Io''@;'; put 'put ''dmFyIHNlPW5ldyBBcnJheSg0KksubGVuZ3RoKSxvZT0wLGNlPTA7b2U8Sy5sZW5ndGg7b2UrKyxjZSs9NCl7dmFyIGRlPUtbb2VdOyJiaWciPT09Sj8oc2VbY2VdPWRlPj4+MjQsc2VbY2UrMV09ZGU+Pj4xNiYyNTUsc2VbY2UrMl09ZGU+Pj44JjI1NSxzZVtjZSszXT0yNTUmZGUpOihzZVtj''@;'; put 'put ''ZSszXT1kZT4+PjI0LHNlW2NlKzJdPWRlPj4+MTYmMjU1LHNlW2NlKzFdPWRlPj4+OCYyNTUsc2VbY2VdPTI1NSZkZSl9cmV0dXJuIHNlfSxRLnJvdHIzMj1mdW5jdGlvbihLLEope3JldHVybiBLPj4+SnxLPDwzMi1KfSxRLnJvdGwzMj1mdW5jdGlvbihLLEope3JldHVybiBLPDxKfEs+Pj4z''@;'; put 'put ''Mi1KfSxRLnN1bTMyPWZ1bmN0aW9uKEssSil7cmV0dXJuIEsrSj4+PjB9LFEuc3VtMzJfMz1mdW5jdGlvbihLLEosc2Upe3JldHVybiBLK0orc2U+Pj4wfSxRLnN1bTMyXzQ9ZnVuY3Rpb24oSyxKLHNlLG9lKXtyZXR1cm4gSytKK3NlK29lPj4+MH0sUS5zdW0zMl81PWZ1bmN0aW9uKEssSixz''@;'; put 'put ''ZSxvZSxjZSl7cmV0dXJuIEsrSitzZStvZStjZT4+PjB9LFEuc3VtNjQ9ZnVuY3Rpb24oSyxKLHNlLG9lKXt2YXIgZGU9b2UrS1tKKzFdPj4+MDtLW0pdPShkZTxvZT8xOjApK3NlK0tbSl0+Pj4wLEtbSisxXT1kZX0sUS5zdW02NF9oaT1mdW5jdGlvbihLLEosc2Usb2Upe3JldHVybihKK29l''@;'; put 'put ''Pj4+MDxKPzE6MCkrSytzZT4+PjB9LFEuc3VtNjRfbG89ZnVuY3Rpb24oSyxKLHNlLG9lKXtyZXR1cm4gSitvZT4+PjB9LFEuc3VtNjRfNF9oaT1mdW5jdGlvbihLLEosc2Usb2UsY2UsZGUsdmUsQWUpe3ZhciBrZT0wLFNlPUo7cmV0dXJuIGtlKz0oU2U9U2Urb2U+Pj4wKTxKPzE6MCxrZSs9''@;'; put 'put ''KFNlPVNlK2RlPj4+MCk8ZGU/MTowLEsrc2UrY2UrdmUrKGtlKz0oU2U9U2UrQWU+Pj4wKTxBZT8xOjApPj4+MH0sUS5zdW02NF80X2xvPWZ1bmN0aW9uKEssSixzZSxvZSxjZSxkZSx2ZSxBZSl7cmV0dXJuIEorb2UrZGUrQWU+Pj4wfSxRLnN1bTY0XzVfaGk9ZnVuY3Rpb24oSyxKLHNlLG9l''@;'; put 'put ''LGNlLGRlLHZlLEFlLGtlLFNlKXt2YXIgSWU9MCxUZT1KO3JldHVybiBJZSs9KFRlPVRlK29lPj4+MCk8Sj8xOjAsSWUrPShUZT1UZStkZT4+PjApPGRlPzE6MCxJZSs9KFRlPVRlK0FlPj4+MCk8QWU/MTowLEsrc2UrY2UrdmUra2UrKEllKz0oVGU9VGUrU2U+Pj4wKTxTZT8xOjApPj4+MH0s''@;'; put 'put ''US5zdW02NF81X2xvPWZ1bmN0aW9uKEssSixzZSxvZSxjZSxkZSx2ZSxBZSxrZSxTZSl7cmV0dXJuIEorb2UrZGUrQWUrU2U+Pj4wfSxRLnJvdHI2NF9oaT1mdW5jdGlvbihLLEosc2Upe3JldHVybihKPDwzMi1zZXxLPj4+c2UpPj4+MH0sUS5yb3RyNjRfbG89ZnVuY3Rpb24oSyxKLHNlKXty''@;'; put 'put ''ZXR1cm4oSzw8MzItc2V8Sj4+PnNlKT4+PjB9LFEuc2hyNjRfaGk9ZnVuY3Rpb24oSyxKLHNlKXtyZXR1cm4gSz4+PnNlfSxRLnNocjY0X2xvPWZ1bmN0aW9uKEssSixzZSl7cmV0dXJuKEs8PDMyLXNlfEo+Pj5zZSk+Pj4wfX0sMjE1NjooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1q''@;'; put 'put ''KDM3MTUpLGFlPWooNDUwNCksWT1qKDk3NDYpO2Z1bmN0aW9uIFcoTil7aWYoISh0aGlzIGluc3RhbmNlb2YgVykpcmV0dXJuIG5ldyBXKE4pO3RoaXMuaGFzaD1OLmhhc2gsdGhpcy5wcmVkUmVzaXN0PSEhTi5wcmVkUmVzaXN0LHRoaXMub3V0TGVuPXRoaXMuaGFzaC5vdXRTaXplLHRoaXMu''@;'; put 'put ''bWluRW50cm9weT1OLm1pbkVudHJvcHl8fHRoaXMuaGFzaC5obWFjU3RyZW5ndGgsdGhpcy5fcmVzZWVkPW51bGwsdGhpcy5yZXNlZWRJbnRlcnZhbD1udWxsLHRoaXMuSz1udWxsLHRoaXMuVj1udWxsO3ZhciB0ZT1hZS50b0FycmF5KE4uZW50cm9weSxOLmVudHJvcHlFbmN8fCJoZXgiKSxL''@;'; put 'put ''PWFlLnRvQXJyYXkoTi5ub25jZSxOLm5vbmNlRW5jfHwiaGV4IiksSj1hZS50b0FycmF5KE4ucGVycyxOLnBlcnNFbmN8fCJoZXgiKTtZKHRlLmxlbmd0aD49dGhpcy5taW5FbnRyb3B5LzgsIk5vdCBlbm91Z2ggZW50cm9weS4gTWluaW11bSBpczogIit0aGlzLm1pbkVudHJvcHkrIiBiaXRz''@;'; put 'put ''IiksdGhpcy5faW5pdCh0ZSxLLEopfVUuZXhwb3J0cz1XLFcucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKE4sdGUsSyl7dmFyIEo9Ti5jb25jYXQodGUpLmNvbmNhdChLKTt0aGlzLks9bmV3IEFycmF5KHRoaXMub3V0TGVuLzgpLHRoaXMuVj1uZXcgQXJyYXkodGhpcy5vdXRMZW4vOCk7Zm9y''@;'; put 'put ''KHZhciBzZT0wO3NlPHRoaXMuVi5sZW5ndGg7c2UrKyl0aGlzLktbc2VdPTAsdGhpcy5WW3NlXT0xO3RoaXMuX3VwZGF0ZShKKSx0aGlzLl9yZXNlZWQ9MSx0aGlzLnJlc2VlZEludGVydmFsPTI4MTQ3NDk3NjcxMDY1Nn0sVy5wcm90b3R5cGUuX2htYWM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3''@;'; put 'put ''IHJlLmhtYWModGhpcy5oYXNoLHRoaXMuSyl9LFcucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oTil7dmFyIHRlPXRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS51cGRhdGUoWzBdKTtOJiYodGU9dGUudXBkYXRlKE4pKSx0aGlzLks9dGUuZGlnZXN0KCksdGhpcy5WPXRoaXMuX2htYWMo''@;'; put 'put ''KS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKSxOJiYodGhpcy5LPXRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS51cGRhdGUoWzFdKS51cGRhdGUoTikuZGlnZXN0KCksdGhpcy5WPXRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKSl9LFcucHJvdG90eXBlLnJlc2VlZD1mdW5j''@;'; put 'put ''dGlvbihOLHRlLEssSil7InN0cmluZyIhPXR5cGVvZiB0ZSYmKEo9SyxLPXRlLHRlPW51bGwpLE49YWUudG9BcnJheShOLHRlKSxLPWFlLnRvQXJyYXkoSyxKKSxZKE4ubGVuZ3RoPj10aGlzLm1pbkVudHJvcHkvOCwiTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAiK3RoaXMubWlu''@;'; put 'put ''RW50cm9weSsiIGJpdHMiKSx0aGlzLl91cGRhdGUoTi5jb25jYXQoS3x8W10pKSx0aGlzLl9yZXNlZWQ9MX0sVy5wcm90b3R5cGUuZ2VuZXJhdGU9ZnVuY3Rpb24oTix0ZSxLLEope2lmKHRoaXMuX3Jlc2VlZD50aGlzLnJlc2VlZEludGVydmFsKXRocm93IG5ldyBFcnJvcigiUmVzZWVkIGlz''@;'; put 'put ''IHJlcXVpcmVkIik7InN0cmluZyIhPXR5cGVvZiB0ZSYmKEo9SyxLPXRlLHRlPW51bGwpLEsmJihLPWFlLnRvQXJyYXkoSyxKfHwiaGV4IiksdGhpcy5fdXBkYXRlKEspKTtmb3IodmFyIHNlPVtdO3NlLmxlbmd0aDxOOyl0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2Vz''@;'; put 'put ''dCgpLHNlPXNlLmNvbmNhdCh0aGlzLlYpO3ZhciBvZT1zZS5zbGljZSgwLE4pO3JldHVybiB0aGlzLl91cGRhdGUoSyksdGhpcy5fcmVzZWVkKyssYWUuZW5jb2RlKG9lLHRlKX19LDY0NTooVSxRKT0+e1EucmVhZD1mdW5jdGlvbihqLHJlLGFlLFksVyl7dmFyIE4sdGUsSz04KlctWS0xLEo9''@;'; put 'put ''KDE8PEspLTEsc2U9Sj4+MSxvZT0tNyxjZT1hZT9XLTE6MCxkZT1hZT8tMToxLHZlPWpbcmUrY2VdO2ZvcihjZSs9ZGUsTj12ZSYoMTw8LW9lKS0xLHZlPj49LW9lLG9lKz1LO29lPjA7Tj0yNTYqTitqW3JlK2NlXSxjZSs9ZGUsb2UtPTgpO2Zvcih0ZT1OJigxPDwtb2UpLTEsTj4+PS1vZSxv''@;'; put 'put ''ZSs9WTtvZT4wO3RlPTI1Nip0ZStqW3JlK2NlXSxjZSs9ZGUsb2UtPTgpO2lmKDA9PT1OKU49MS1zZTtlbHNle2lmKE49PT1KKXJldHVybiB0ZT9OYU46MS8wKih2ZT8tMToxKTt0ZSs9TWF0aC5wb3coMixZKSxOLT1zZX1yZXR1cm4odmU/LTE6MSkqdGUqTWF0aC5wb3coMixOLVkpfSxRLndy''@;'; put 'put ''aXRlPWZ1bmN0aW9uKGoscmUsYWUsWSxXLE4pe3ZhciB0ZSxLLEosc2U9OCpOLVctMSxvZT0oMTw8c2UpLTEsY2U9b2U+PjEsZGU9MjM9PT1XP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCx2ZT1ZPzA6Ti0xLEFlPVk/MTotMSxrZT1yZTwwfHwwPT09cmUmJjEvcmU8MD8xOjA7''@;'; put 'put ''Zm9yKHJlPU1hdGguYWJzKHJlKSxpc05hTihyZSl8fHJlPT09MS8wPyhLPWlzTmFOKHJlKT8xOjAsdGU9b2UpOih0ZT1NYXRoLmZsb29yKE1hdGgubG9nKHJlKS9NYXRoLkxOMikscmUqKEo9TWF0aC5wb3coMiwtdGUpKTwxJiYodGUtLSxKKj0yKSwocmUrPXRlK2NlPj0xP2RlL0o6ZGUqTWF0''@;'; put 'put ''aC5wb3coMiwxLWNlKSkqSj49MiYmKHRlKyssSi89MiksdGUrY2U+PW9lPyhLPTAsdGU9b2UpOnRlK2NlPj0xPyhLPShyZSpKLTEpKk1hdGgucG93KDIsVyksdGUrPWNlKTooSz1yZSpNYXRoLnBvdygyLGNlLTEpKk1hdGgucG93KDIsVyksdGU9MCkpO1c+PTg7althZSt2ZV09MjU1JkssdmUr''@;'; put 'put ''PUFlLEsvPTI1NixXLT04KTtmb3IodGU9dGU8PFd8SyxzZSs9VztzZT4wO2pbYWUrdmVdPTI1NSZ0ZSx2ZSs9QWUsdGUvPTI1NixzZS09OCk7althZSt2ZS1BZV18PTEyOCprZX19LDc4NDQ6KFUsUSxqKT0+e3ZhciByZT1qKDQxNTUpLGFlPWooMjQ3OSksWT1PYmplY3QuY3JlYXRlKG51bGwp''@;'; put 'put ''LFc9aig3NzgpO2Z1bmN0aW9uIE4odGUpe2Zvcih2YXIgSz10ZS5sZW5ndGgsSj1bXSxzZT0wO3NlPEs7c2UrKylKW3NlXT10ZVtzZV07cmV0dXJuIEp9VS5leHBvcnRzPWFlKGZ1bmN0aW9uKHRlLEspe3JldHVybiBZW3RlXT8oWVt0ZV0ucHVzaChLKSxudWxsKTooWVt0ZV09W0tdLEo9dGUs''@;'; put 'put ''VyhmdW5jdGlvbiBzZSgpe3ZhciBvZT1ZW0pdLGNlPW9lLmxlbmd0aCxkZT1OKGFyZ3VtZW50cyk7dHJ5e2Zvcih2YXIgdmU9MDt2ZTxjZTt2ZSsrKW9lW3ZlXS5hcHBseShudWxsLGRlKX1maW5hbGx5e29lLmxlbmd0aD5jZT8ob2Uuc3BsaWNlKDAsY2UpLHJlLm5leHRUaWNrKGZ1bmN0aW9u''@;'; put 'put ''KCl7c2UuYXBwbHkobnVsbCxkZSl9KSk6ZGVsZXRlIFlbSl19fSkpO3ZhciBKfSl9LDU3MTc6VT0+e1UuZXhwb3J0cz0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihRLGope2omJihRLnN1cGVyXz1qLFEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoai5wcm90b3R5''@;'; put 'put ''cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpRLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pKX06ZnVuY3Rpb24oUSxqKXtpZihqKXtRLnN1cGVyXz1qO3ZhciByZT1mdW5jdGlvbigpe307cmUucHJvdG90eXBlPWoucHJvdG90eXBlLFEucHJvdG90eXBlPW5ldyBy''@;'; put 'put ''ZSxRLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1RfX19LDI1ODQ6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig2NDEwKSgpLGFlPWooMTkyNCkoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmciKSxZPWZ1bmN0aW9uKHRlKXtyZXR1cm4hKHJlJiZ0ZSYmIm9iamVjdCI9PXR5cGVvZiB0''@;'; put 'put ''ZSYmU3ltYm9sLnRvU3RyaW5nVGFnIGluIHRlKSYmIltvYmplY3QgQXJndW1lbnRzXSI9PT1hZSh0ZSl9LFc9ZnVuY3Rpb24odGUpe3JldHVybiEhWSh0ZSl8fG51bGwhPT10ZSYmIm9iamVjdCI9PXR5cGVvZiB0ZSYmIm51bWJlciI9PXR5cGVvZiB0ZS5sZW5ndGgmJnRlLmxlbmd0aD49MCYm''@;'; put 'put ''IltvYmplY3QgQXJyYXldIiE9PWFlKHRlKSYmIltvYmplY3QgRnVuY3Rpb25dIj09PWFlKHRlLmNhbGxlZSl9LE49ZnVuY3Rpb24oKXtyZXR1cm4gWShhcmd1bWVudHMpfSgpO1kuaXNMZWdhY3lBcmd1bWVudHM9VyxVLmV4cG9ydHM9Tj9ZOld9LDUzMjA6VT0+eyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''USxqLHJlPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyxhZT0ib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJm51bGwhPT1SZWZsZWN0JiZSZWZsZWN0LmFwcGx5O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhZSYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSl0cnl7''@;'; put 'put ''UT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sImxlbmd0aCIse2dldDpmdW5jdGlvbigpe3Rocm93IGp9fSksaj17fSxhZShmdW5jdGlvbigpe3Rocm93IDQyfSxudWxsLFEpfWNhdGNoKEope0ohPT1qJiYoYWU9bnVsbCl9ZWxzZSBhZT1udWxsO3ZhciBZPS9eXHMqY2xhc3NcYi8sVz1mdW5j''@;'; put 'put ''dGlvbihKKXt0cnl7dmFyIHNlPXJlLmNhbGwoSik7cmV0dXJuIFkudGVzdChzZSl9Y2F0Y2gob2Upe3JldHVybiExfX0sTj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLHRlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiEhU3ltYm9sLnRvU3RyaW5nVGFnLEs9Im9iamVjdCI9PXR5cGVv''@;'; put 'put ''ZiBkb2N1bWVudCYmdm9pZCAwPT09ZG9jdW1lbnQuYWxsJiZ2b2lkIDAhPT1kb2N1bWVudC5hbGw/ZG9jdW1lbnQuYWxsOnt9O1UuZXhwb3J0cz1hZT9mdW5jdGlvbihKKXtpZihKPT09SylyZXR1cm4hMDtpZighSnx8ImZ1bmN0aW9uIiE9dHlwZW9mIEomJiJvYmplY3QiIT10eXBlb2YgSily''@;'; put 'put ''ZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgSiYmIUoucHJvdG90eXBlKXJldHVybiEwO3RyeXthZShKLG51bGwsUSl9Y2F0Y2goc2Upe2lmKHNlIT09ailyZXR1cm4hMX1yZXR1cm4hVyhKKX06ZnVuY3Rpb24oSil7aWYoSj09PUspcmV0dXJuITA7aWYoIUp8fCJmdW5jdGlvbiIhPXR5''@;'; put 'put ''cGVvZiBKJiYib2JqZWN0IiE9dHlwZW9mIEopcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEomJiFKLnByb3RvdHlwZSlyZXR1cm4hMDtpZih0ZSlyZXR1cm4gZnVuY3Rpb24ob2Upe3RyeXtyZXR1cm4hVyhvZSkmJihyZS5jYWxsKG9lKSwhMCl9Y2F0Y2goY2Upe3JldHVybiExfX0o''@;'; put 'put ''Sik7aWYoVyhKKSlyZXR1cm4hMTt2YXIgc2U9Ti5jYWxsKEopO3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1zZXx8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09PXNlfX0sODY2MjooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZSxhZT1PYmplY3QucHJvdG90eXBlLnRvU3Ry''@;'; put 'put ''aW5nLFk9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLFc9L15ccyooPzpmdW5jdGlvbik/XCovLE49aig2NDEwKSgpLHRlPU9iamVjdC5nZXRQcm90b3R5cGVPZjtVLmV4cG9ydHM9ZnVuY3Rpb24oSyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEspcmV0dXJuITE7aWYoVy50ZXN0KFkuY2Fs''@;'; put 'put ''bChLKSkpcmV0dXJuITA7aWYoIU4pcmV0dXJuIltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09PWFlLmNhbGwoSyk7aWYoIXRlKXJldHVybiExO2lmKHZvaWQgMD09PXJlKXt2YXIgSj1mdW5jdGlvbigpe2lmKCFOKXJldHVybiExO3RyeXtyZXR1cm4gRnVuY3Rpb24oInJldHVybiBmdW5j''@;'; put 'put ''dGlvbiooKSB7fSIpKCl9Y2F0Y2goc2Upe319KCk7cmU9ISFKJiZ0ZShKKX1yZXR1cm4gdGUoSyk9PT1yZX19LDg2MTE6VT0+eyJ1c2Ugc3RyaWN0IjtVLmV4cG9ydHM9ZnVuY3Rpb24oUSl7cmV0dXJuIFEhPVF9fSwzNjA6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig1NTU5KSxh''@;'; put 'put ''ZT1qKDQyODkpLFk9aig4NjExKSxXPWooOTQxNSksTj1qKDMxOTQpLHRlPXJlKFcoKSxOdW1iZXIpO2FlKHRlLHtnZXRQb2x5ZmlsbDpXLGltcGxlbWVudGF0aW9uOlksc2hpbTpOfSksVS5leHBvcnRzPXRlfSw5NDE1OihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooODYxMSk7VS5l''@;'; put 'put ''eHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuIE51bWJlci5pc05hTiYmTnVtYmVyLmlzTmFOKE5hTikmJiFOdW1iZXIuaXNOYU4oImEiKT9OdW1iZXIuaXNOYU46cmV9fSwzMTk0OihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNDI4OSksYWU9aig5NDE1KTtVLmV4cG9ydHM9ZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgWT1hZSgpO3JldHVybiByZShOdW1iZXIse2lzTmFOOll9LHtpc05hTjpmdW5jdGlvbigpe3JldHVybiBOdW1iZXIuaXNOYU4hPT1ZfX0pLFl9fSw1NjkyOihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNDAyOSksYWU9aigzMDgzKSxZPWooMTkyNCksVz1ZKCJPYmpl''@;'; put 'put ''Y3QucHJvdG90eXBlLnRvU3RyaW5nIiksTj1qKDY0MTApKCksdGU9InVuZGVmaW5lZCI9PXR5cGVvZiBnbG9iYWxUaGlzP2ouZzpnbG9iYWxUaGlzLEs9YWUoKSxKPVkoIkFycmF5LnByb3RvdHlwZS5pbmRleE9mIiwhMCl8fGZ1bmN0aW9uKHZlLEFlKXtmb3IodmFyIGtlPTA7a2U8dmUubGVu''@;'; put 'put ''Z3RoO2tlKz0xKWlmKHZlW2tlXT09PUFlKXJldHVybiBrZTtyZXR1cm4tMX0sc2U9WSgiU3RyaW5nLnByb3RvdHlwZS5zbGljZSIpLG9lPXt9LGNlPWooODgyKSxkZT1PYmplY3QuZ2V0UHJvdG90eXBlT2Y7TiYmY2UmJmRlJiZyZShLLGZ1bmN0aW9uKHZlKXt2YXIgQWU9bmV3IHRlW3ZlXTtp''@;'; put 'put ''ZihTeW1ib2wudG9TdHJpbmdUYWcgaW4gQWUpe3ZhciBrZT1kZShBZSksU2U9Y2Uoa2UsU3ltYm9sLnRvU3RyaW5nVGFnKTtpZighU2Upe3ZhciBJZT1kZShrZSk7U2U9Y2UoSWUsU3ltYm9sLnRvU3RyaW5nVGFnKX1vZVt2ZV09U2UuZ2V0fX0pLFUuZXhwb3J0cz1mdW5jdGlvbih2ZSl7aWYo''@;'; put 'put ''IXZlfHwib2JqZWN0IiE9dHlwZW9mIHZlKXJldHVybiExO2lmKCFOfHwhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2ZSkpe3ZhciBBZT1zZShXKHZlKSw4LC0xKTtyZXR1cm4gSihLLEFlKT4tMX1yZXR1cm4hIWNlJiYoa2U9dmUsU2U9ITEscmUob2UsZnVuY3Rpb24oSWUsVGUpe2lmKCFTZSl0''@;'; put 'put ''cnl7U2U9SWUuY2FsbChrZSk9PT1UZX1jYXRjaChNZSl7fX0pLFNlKTt2YXIga2UsU2V9fSw2ODEzOihVLFEsaik9PntsZXQgcmU7dHJ5e3JlPWooNzcpfWNhdGNoKHRlKXtyZT1qKDQxMjkpfWNvbnN0IGFlPWooODk4MSkse3N0cmluZ2lmeTpZLHN0cmlwQm9tOld9PWooNjc4MCksTj17cmVh''@;'; put 'put ''ZEZpbGU6YWUuZnJvbVByb21pc2UoZnVuY3Rpb24oKXt2YXIgdGU9bWUoZnVuY3Rpb24qKEssSj17fSl7InN0cmluZyI9PXR5cGVvZiBKJiYoSj17ZW5jb2Rpbmc6Sn0pO2NvbnN0IHNlPUouZnN8fHJlLG9lPSEoInRocm93cyJpbiBKKXx8Si50aHJvd3M7bGV0IGNlLGRlPXlpZWxkIGFlLmZy''@;'; put 'put ''b21DYWxsYmFjayhzZS5yZWFkRmlsZSkoSyxKKTtkZT1XKGRlKTt0cnl7Y2U9SlNPTi5wYXJzZShkZSxKP0oucmV2aXZlcjpudWxsKX1jYXRjaCh2ZSl7aWYob2UpdGhyb3cgdmUubWVzc2FnZT1gJHtLfTogJHt2ZS5tZXNzYWdlfWAsdmU7cmV0dXJuIG51bGx9cmV0dXJuIGNlfSk7cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uKEspe3JldHVybiB0ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKSxyZWFkRmlsZVN5bmM6ZnVuY3Rpb24odGUsSz17fSl7InN0cmluZyI9PXR5cGVvZiBLJiYoSz17ZW5jb2Rpbmc6S30pO2NvbnN0IEo9Sy5mc3x8cmUsc2U9ISgidGhyb3dzImluIEspfHxLLnRocm93czt0''@;'; put 'put ''cnl7bGV0IG9lPUoucmVhZEZpbGVTeW5jKHRlLEspO3JldHVybiBvZT1XKG9lKSxKU09OLnBhcnNlKG9lLEsucmV2aXZlcil9Y2F0Y2gob2Upe2lmKHNlKXRocm93IG9lLm1lc3NhZ2U9YCR7dGV9OiAke29lLm1lc3NhZ2V9YCxvZTtyZXR1cm4gbnVsbH19LHdyaXRlRmlsZTphZS5mcm9tUHJv''@;'; put 'put ''bWlzZShmdW5jdGlvbigpe3ZhciB0ZT1tZShmdW5jdGlvbiooSyxKLHNlPXt9KXtjb25zdCBvZT1zZS5mc3x8cmUsY2U9WShKLHNlKTt5aWVsZCBhZS5mcm9tQ2FsbGJhY2sob2Uud3JpdGVGaWxlKShLLGNlLHNlKX0pO3JldHVybiBmdW5jdGlvbihLLEope3JldHVybiB0ZS5hcHBseSh0aGlz''@;'; put 'put ''LGFyZ3VtZW50cyl9fSgpKSx3cml0ZUZpbGVTeW5jOmZ1bmN0aW9uKHRlLEssSj17fSl7Y29uc3Qgc2U9Si5mc3x8cmUsb2U9WShLLEopO3JldHVybiBzZS53cml0ZUZpbGVTeW5jKHRlLG9lLEopfX07VS5leHBvcnRzPU59LDY3ODA6KFUsUSxqKT0+e3ZhciByZT1qKDg3NjQpLkJ1ZmZlcjtV''@;'; put 'put ''LmV4cG9ydHM9e3N0cmluZ2lmeTpmdW5jdGlvbihhZSx7RU9MOlk9IlxuIixmaW5hbEVPTDpXPSEwLHJlcGxhY2VyOk49bnVsbCxzcGFjZXM6dGV9PXt9KXtjb25zdCBLPVc/WToiIjtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYWUsTix0ZSkucmVwbGFjZSgvXG4vZyxZKStLfSxzdHJpcEJvbTpm''@;'; put 'put ''dW5jdGlvbihhZSl7cmV0dXJuIHJlLmlzQnVmZmVyKGFlKSYmKGFlPWFlLnRvU3RyaW5nKCJ1dGY4IikpLGFlLnJlcGxhY2UoL15cdUZFRkYvLCIiKX19fSw2MjQ1OihVLFEsaik9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcmUodGUpe3RoaXMubWVzc2FnZT10ZX1qLnIoUSksai5kKFEse2Rl''@;'; put 'put ''ZmF1bHQ6KCk9Pk4sSW52YWxpZFRva2VuRXJyb3I6KCk9Pld9KSwocmUucHJvdG90eXBlPW5ldyBFcnJvcikubmFtZT0iSW52YWxpZENoYXJhY3RlckVycm9yIjt2YXIgYWU9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5hdG9iJiZ3aW5kb3cuYXRvYi5iaW5kKHdpbmRvdyl8''@;'; put 'put ''fGZ1bmN0aW9uKHRlKXt2YXIgSz1TdHJpbmcodGUpLnJlcGxhY2UoLz0rJC8sIiIpO2lmKEsubGVuZ3RoJTQ9PTEpdGhyb3cgbmV3IHJlKCInYXRvYicgZmFpbGVkOiBUaGUgc3RyaW5nIHRvIGJlIGRlY29kZWQgaXMgbm90IGNvcnJlY3RseSBlbmNvZGVkLiIpO2Zvcih2YXIgSixzZSxvZT0w''@;'; put 'put ''LGNlPTAsZGU9IiI7c2U9Sy5jaGFyQXQoY2UrKyk7fnNlJiYoSj1vZSU0PzY0Kkorc2U6c2Usb2UrKyU0KT9kZSs9U3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmSj4+KC0yKm9lJjYpKTowKXNlPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEy''@;'; put 'put ''MzQ1Njc4OSsvPSIuaW5kZXhPZihzZSk7cmV0dXJuIGRlfTtmdW5jdGlvbiBXKHRlKXt0aGlzLm1lc3NhZ2U9dGV9KFcucHJvdG90eXBlPW5ldyBFcnJvcikubmFtZT0iSW52YWxpZFRva2VuRXJyb3IiO2NvbnN0IE49ZnVuY3Rpb24odGUsSyl7aWYoInN0cmluZyIhPXR5cGVvZiB0ZSl0aHJv''@;'; put 'put ''dyBuZXcgVygiSW52YWxpZCB0b2tlbiBzcGVjaWZpZWQiKTt2YXIgSj0hMD09PShLPUt8fHt9KS5oZWFkZXI/MDoxO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShmdW5jdGlvbiBZKHRlKXt2YXIgSz10ZS5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKTtzd2l0Y2goSy5sZW5ndGgl''@;'; put 'put ''NCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMjpLKz0iPT0iO2JyZWFrO2Nhc2UgMzpLKz0iPSI7YnJlYWs7ZGVmYXVsdDp0aHJvdyJJbGxlZ2FsIGJhc2U2NHVybCBzdHJpbmchIn10cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChhZShLKS5yZXBsYWNlKC8oLikvZyxmdW5jdGlvbihzZSxvZSl7''@;'; put 'put ''dmFyIGNlPW9lLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIGNlLmxlbmd0aDwyJiYoY2U9IjAiK2NlKSwiJSIrY2V9KSl9Y2F0Y2goSil7cmV0dXJuIGFlKEspfX0odGUuc3BsaXQoIi4iKVtKXSkpfWNhdGNoKHNlKXt0aHJvdyBuZXcgVygiSW52YWxp''@;'; put 'put ''ZCB0b2tlbiBzcGVjaWZpZWQ6ICIrc2UubWVzc2FnZSl9fX0sMjMxODooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDU3MTcpLGFlPWooMzM0OSksWT1qKDk1MDkpLkJ1ZmZlcixXPW5ldyBBcnJheSgxNik7ZnVuY3Rpb24gTigpe2FlLmNhbGwodGhpcyw2NCksdGhpcy5fYT0xNzMy''@;'; put 'put ''NTg0MTkzLHRoaXMuX2I9NDAyMzIzMzQxNyx0aGlzLl9jPTI1NjIzODMxMDIsdGhpcy5fZD0yNzE3MzM4Nzh9ZnVuY3Rpb24gdGUoY2UsZGUpe3JldHVybiBjZTw8ZGV8Y2U+Pj4zMi1kZX1mdW5jdGlvbiBLKGNlLGRlLHZlLEFlLGtlLFNlLEllKXtyZXR1cm4gdGUoY2UrKGRlJnZlfH5kZSZB''@;'; put 'put ''ZSkra2UrU2V8MCxJZSkrZGV8MH1mdW5jdGlvbiBKKGNlLGRlLHZlLEFlLGtlLFNlLEllKXtyZXR1cm4gdGUoY2UrKGRlJkFlfHZlJn5BZSkra2UrU2V8MCxJZSkrZGV8MH1mdW5jdGlvbiBzZShjZSxkZSx2ZSxBZSxrZSxTZSxJZSl7cmV0dXJuIHRlKGNlKyhkZV52ZV5BZSkra2UrU2V8MCxJ''@;'; put 'put ''ZSkrZGV8MH1mdW5jdGlvbiBvZShjZSxkZSx2ZSxBZSxrZSxTZSxJZSl7cmV0dXJuIHRlKGNlKyh2ZV4oZGV8fkFlKSkra2UrU2V8MCxJZSkrZGV8MH1yZShOLGFlKSxOLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciBjZT1XLGRlPTA7ZGU8MTY7KytkZSljZVtkZV09dGhp''@;'; put 'put ''cy5fYmxvY2sucmVhZEludDMyTEUoNCpkZSk7dmFyIHZlPXRoaXMuX2EsQWU9dGhpcy5fYixrZT10aGlzLl9jLFNlPXRoaXMuX2Q7dmU9Syh2ZSxBZSxrZSxTZSxjZVswXSwzNjE0MDkwMzYwLDcpLFNlPUsoU2UsdmUsQWUsa2UsY2VbMV0sMzkwNTQwMjcxMCwxMiksa2U9SyhrZSxTZSx2ZSxB''@;'; put 'put ''ZSxjZVsyXSw2MDYxMDU4MTksMTcpLEFlPUsoQWUsa2UsU2UsdmUsY2VbM10sMzI1MDQ0MTk2NiwyMiksdmU9Syh2ZSxBZSxrZSxTZSxjZVs0XSw0MTE4NTQ4Mzk5LDcpLFNlPUsoU2UsdmUsQWUsa2UsY2VbNV0sMTIwMDA4MDQyNiwxMiksa2U9SyhrZSxTZSx2ZSxBZSxjZVs2XSwyODIxNzM1''@;'; put 'put ''OTU1LDE3KSxBZT1LKEFlLGtlLFNlLHZlLGNlWzddLDQyNDkyNjEzMTMsMjIpLHZlPUsodmUsQWUsa2UsU2UsY2VbOF0sMTc3MDAzNTQxNiw3KSxTZT1LKFNlLHZlLEFlLGtlLGNlWzldLDIzMzY1NTI4NzksMTIpLGtlPUsoa2UsU2UsdmUsQWUsY2VbMTBdLDQyOTQ5MjUyMzMsMTcpLEFlPUso''@;'; put 'put ''QWUsa2UsU2UsdmUsY2VbMTFdLDIzMDQ1NjMxMzQsMjIpLHZlPUsodmUsQWUsa2UsU2UsY2VbMTJdLDE4MDQ2MDM2ODIsNyksU2U9SyhTZSx2ZSxBZSxrZSxjZVsxM10sNDI1NDYyNjE5NSwxMiksa2U9SyhrZSxTZSx2ZSxBZSxjZVsxNF0sMjc5Mjk2NTAwNiwxNyksdmU9Sih2ZSxBZT1LKEFl''@;'; put 'put ''LGtlLFNlLHZlLGNlWzE1XSwxMjM2NTM1MzI5LDIyKSxrZSxTZSxjZVsxXSw0MTI5MTcwNzg2LDUpLFNlPUooU2UsdmUsQWUsa2UsY2VbNl0sMzIyNTQ2NTY2NCw5KSxrZT1KKGtlLFNlLHZlLEFlLGNlWzExXSw2NDM3MTc3MTMsMTQpLEFlPUooQWUsa2UsU2UsdmUsY2VbMF0sMzkyMTA2OTk5''@;'; put 'put ''NCwyMCksdmU9Sih2ZSxBZSxrZSxTZSxjZVs1XSwzNTkzNDA4NjA1LDUpLFNlPUooU2UsdmUsQWUsa2UsY2VbMTBdLDM4MDE2MDgzLDkpLGtlPUooa2UsU2UsdmUsQWUsY2VbMTVdLDM2MzQ0ODg5NjEsMTQpLEFlPUooQWUsa2UsU2UsdmUsY2VbNF0sMzg4OTQyOTQ0OCwyMCksdmU9Sih2ZSxB''@;'; put 'put ''ZSxrZSxTZSxjZVs5XSw1Njg0NDY0MzgsNSksU2U9SihTZSx2ZSxBZSxrZSxjZVsxNF0sMzI3NTE2MzYwNiw5KSxrZT1KKGtlLFNlLHZlLEFlLGNlWzNdLDQxMDc2MDMzMzUsMTQpLEFlPUooQWUsa2UsU2UsdmUsY2VbOF0sMTE2MzUzMTUwMSwyMCksdmU9Sih2ZSxBZSxrZSxTZSxjZVsxM10s''@;'; put 'put ''Mjg1MDI4NTgyOSw1KSxTZT1KKFNlLHZlLEFlLGtlLGNlWzJdLDQyNDM1NjM1MTIsOSksa2U9SihrZSxTZSx2ZSxBZSxjZVs3XSwxNzM1MzI4NDczLDE0KSx2ZT1zZSh2ZSxBZT1KKEFlLGtlLFNlLHZlLGNlWzEyXSwyMzY4MzU5NTYyLDIwKSxrZSxTZSxjZVs1XSw0Mjk0NTg4NzM4LDQpLFNl''@;'; put 'put ''PXNlKFNlLHZlLEFlLGtlLGNlWzhdLDIyNzIzOTI4MzMsMTEpLGtlPXNlKGtlLFNlLHZlLEFlLGNlWzExXSwxODM5MDMwNTYyLDE2KSxBZT1zZShBZSxrZSxTZSx2ZSxjZVsxNF0sNDI1OTY1Nzc0MCwyMyksdmU9c2UodmUsQWUsa2UsU2UsY2VbMV0sMjc2Mzk3NTIzNiw0KSxTZT1zZShTZSx2''@;'; put 'put ''ZSxBZSxrZSxjZVs0XSwxMjcyODkzMzUzLDExKSxrZT1zZShrZSxTZSx2ZSxBZSxjZVs3XSw0MTM5NDY5NjY0LDE2KSxBZT1zZShBZSxrZSxTZSx2ZSxjZVsxMF0sMzIwMDIzNjY1NiwyMyksdmU9c2UodmUsQWUsa2UsU2UsY2VbMTNdLDY4MTI3OTE3NCw0KSxTZT1zZShTZSx2ZSxBZSxrZSxj''@;'; put 'put ''ZVswXSwzOTM2NDMwMDc0LDExKSxrZT1zZShrZSxTZSx2ZSxBZSxjZVszXSwzNTcyNDQ1MzE3LDE2KSxBZT1zZShBZSxrZSxTZSx2ZSxjZVs2XSw3NjAyOTE4OSwyMyksdmU9c2UodmUsQWUsa2UsU2UsY2VbOV0sMzY1NDYwMjgwOSw0KSxTZT1zZShTZSx2ZSxBZSxrZSxjZVsxMl0sMzg3MzE1''@;'; put 'put ''MTQ2MSwxMSksa2U9c2Uoa2UsU2UsdmUsQWUsY2VbMTVdLDUzMDc0MjUyMCwxNiksdmU9b2UodmUsQWU9c2UoQWUsa2UsU2UsdmUsY2VbMl0sMzI5OTYyODY0NSwyMyksa2UsU2UsY2VbMF0sNDA5NjMzNjQ1Miw2KSxTZT1vZShTZSx2ZSxBZSxrZSxjZVs3XSwxMTI2ODkxNDE1LDEwKSxrZT1v''@;'; put 'put ''ZShrZSxTZSx2ZSxBZSxjZVsxNF0sMjg3ODYxMjM5MSwxNSksQWU9b2UoQWUsa2UsU2UsdmUsY2VbNV0sNDIzNzUzMzI0MSwyMSksdmU9b2UodmUsQWUsa2UsU2UsY2VbMTJdLDE3MDA0ODU1NzEsNiksU2U9b2UoU2UsdmUsQWUsa2UsY2VbM10sMjM5OTk4MDY5MCwxMCksa2U9b2Uoa2UsU2Us''@;'; put 'put ''dmUsQWUsY2VbMTBdLDQyOTM5MTU3NzMsMTUpLEFlPW9lKEFlLGtlLFNlLHZlLGNlWzFdLDIyNDAwNDQ0OTcsMjEpLHZlPW9lKHZlLEFlLGtlLFNlLGNlWzhdLDE4NzMzMTMzNTksNiksU2U9b2UoU2UsdmUsQWUsa2UsY2VbMTVdLDQyNjQzNTU1NTIsMTApLGtlPW9lKGtlLFNlLHZlLEFlLGNl''@;'; put 'put ''WzZdLDI3MzQ3Njg5MTYsMTUpLEFlPW9lKEFlLGtlLFNlLHZlLGNlWzEzXSwxMzA5MTUxNjQ5LDIxKSx2ZT1vZSh2ZSxBZSxrZSxTZSxjZVs0XSw0MTQ5NDQ0MjI2LDYpLFNlPW9lKFNlLHZlLEFlLGtlLGNlWzExXSwzMTc0NzU2OTE3LDEwKSxrZT1vZShrZSxTZSx2ZSxBZSxjZVsyXSw3MTg3''@;'; put 'put ''ODcyNTksMTUpLEFlPW9lKEFlLGtlLFNlLHZlLGNlWzldLDM5NTE0ODE3NDUsMjEpLHRoaXMuX2E9dGhpcy5fYSt2ZXwwLHRoaXMuX2I9dGhpcy5fYitBZXwwLHRoaXMuX2M9dGhpcy5fYytrZXwwLHRoaXMuX2Q9dGhpcy5fZCtTZXwwfSxOLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKCl7''@;'; put 'put ''dGhpcy5fYmxvY2tbdGhpcy5fYmxvY2tPZmZzZXQrK109MTI4LHRoaXMuX2Jsb2NrT2Zmc2V0PjU2JiYodGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDY0KSx0aGlzLl91cGRhdGUoKSx0aGlzLl9ibG9ja09mZnNldD0wKSx0aGlzLl9ibG9jay5maWxsKDAsdGhpcy5fYmxv''@;'; put 'put ''Y2tPZmZzZXQsNTYpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5fbGVuZ3RoWzBdLDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFsxXSw2MCksdGhpcy5fdXBkYXRlKCk7dmFyIGNlPVkuYWxsb2NVbnNhZmUoMTYpO3JldHVybiBjZS53cml0ZUludDMy''@;'; put 'put ''TEUodGhpcy5fYSwwKSxjZS53cml0ZUludDMyTEUodGhpcy5fYiw0KSxjZS53cml0ZUludDMyTEUodGhpcy5fYyw4KSxjZS53cml0ZUludDMyTEUodGhpcy5fZCwxMiksY2V9LFUuZXhwb3J0cz1OfSwzMDQ3OihVLFEsaik9Pnt2YXIgcmU9aig2MjQwKSxhZT1qKDk5MzEpO2Z1bmN0aW9uIFko''@;'; put 'put ''Vyl7dGhpcy5yYW5kPVd8fG5ldyBhZS5SYW5kfVUuZXhwb3J0cz1ZLFkuY3JlYXRlPWZ1bmN0aW9uKFcpe3JldHVybiBuZXcgWShXKX0sWS5wcm90b3R5cGUuX3JhbmRiZWxvdz1mdW5jdGlvbihXKXt2YXIgTj1XLmJpdExlbmd0aCgpLHRlPU1hdGguY2VpbChOLzgpO2Rve3ZhciBLPW5ldyBy''@;'; put 'put ''ZSh0aGlzLnJhbmQuZ2VuZXJhdGUodGUpKX13aGlsZShLLmNtcChXKT49MCk7cmV0dXJuIEt9LFkucHJvdG90eXBlLl9yYW5kcmFuZ2U9ZnVuY3Rpb24oVyxOKXt2YXIgdGU9Ti5zdWIoVyk7cmV0dXJuIFcuYWRkKHRoaXMuX3JhbmRiZWxvdyh0ZSkpfSxZLnByb3RvdHlwZS50ZXN0PWZ1bmN0''@;'; put 'put ''aW9uKFcsTix0ZSl7dmFyIEs9Vy5iaXRMZW5ndGgoKSxKPXJlLm1vbnQoVyksc2U9bmV3IHJlKDEpLnRvUmVkKEopO058fChOPU1hdGgubWF4KDEsSy80OHwwKSk7Zm9yKHZhciBvZT1XLnN1Ym4oMSksY2U9MDshb2UudGVzdG4oY2UpO2NlKyspO2Zvcih2YXIgZGU9Vy5zaHJuKGNlKSx2ZT1v''@;'; put 'put ''ZS50b1JlZChKKTtOPjA7Ti0tKXt2YXIgQWU9dGhpcy5fcmFuZHJhbmdlKG5ldyByZSgyKSxvZSk7dGUmJnRlKEFlKTt2YXIga2U9QWUudG9SZWQoSikucmVkUG93KGRlKTtpZigwIT09a2UuY21wKHNlKSYmMCE9PWtlLmNtcCh2ZSkpe2Zvcih2YXIgU2U9MTtTZTxjZTtTZSsrKXtpZigwPT09''@;'; put 'put ''KGtlPWtlLnJlZFNxcigpKS5jbXAoc2UpKXJldHVybiExO2lmKDA9PT1rZS5jbXAodmUpKWJyZWFrfWlmKFNlPT09Y2UpcmV0dXJuITF9fXJldHVybiEwfSxZLnByb3RvdHlwZS5nZXREaXZpc29yPWZ1bmN0aW9uKFcsTil7dmFyIHRlPVcuYml0TGVuZ3RoKCksSz1yZS5tb250KFcpLEo9bmV3''@;'; put 'put ''IHJlKDEpLnRvUmVkKEspO058fChOPU1hdGgubWF4KDEsdGUvNDh8MCkpO2Zvcih2YXIgc2U9Vy5zdWJuKDEpLG9lPTA7IXNlLnRlc3RuKG9lKTtvZSsrKTtmb3IodmFyIGNlPVcuc2hybihvZSksZGU9c2UudG9SZWQoSyk7Tj4wO04tLSl7dmFyIHZlPXRoaXMuX3JhbmRyYW5nZShuZXcgcmUo''@;'; put 'put ''Miksc2UpLEFlPVcuZ2NkKHZlKTtpZigwIT09QWUuY21wbigxKSlyZXR1cm4gQWU7dmFyIGtlPXZlLnRvUmVkKEspLnJlZFBvdyhjZSk7aWYoMCE9PWtlLmNtcChKKSYmMCE9PWtlLmNtcChkZSkpe2Zvcih2YXIgU2U9MTtTZTxvZTtTZSsrKXtpZigwPT09KGtlPWtlLnJlZFNxcigpKS5jbXAo''@;'; put 'put ''SikpcmV0dXJuIGtlLmZyb21SZWQoKS5zdWJuKDEpLmdjZChXKTtpZigwPT09a2UuY21wKGRlKSlicmVha31pZihTZT09PW9lKXJldHVybihrZT1rZS5yZWRTcXIoKSkuZnJvbVJlZCgpLnN1Ym4oMSkuZ2NkKFcpfX1yZXR1cm4hMX19LDYyNDA6ZnVuY3Rpb24oVSxRLGopeyFmdW5jdGlvbihy''@;'; put 'put ''ZSxhZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIFkoeCxQKXtpZigheCl0aHJvdyBuZXcgRXJyb3IoUHx8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBXKHgsUCl7eC5zdXBlcl89UDt2YXIgVj1mdW5jdGlvbigpe307Vi5wcm90b3R5cGU9UC5wcm90b3R5cGUseC5wcm90b3R5cGU9bmV3''@;'; put 'put ''IFYseC5wcm90b3R5cGUuY29uc3RydWN0b3I9eH1mdW5jdGlvbiBOKHgsUCxWKXtpZihOLmlzQk4oeCkpcmV0dXJuIHg7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PXgmJigibGUiIT09UCYmImJlIiE9PVB8fChWPVAs''@;'; put 'put ''UD0xMCksdGhpcy5faW5pdCh4fHwwLFB8fDEwLFZ8fCJiZSIpKX12YXIgdGU7Im9iamVjdCI9PXR5cGVvZiByZT9yZS5leHBvcnRzPU46YWUuQk49TixOLkJOPU4sTi53b3JkU2l6ZT0yNjt0cnl7dGU9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJnZvaWQgMCE9PXdpbmRvdy5CdWZmZXI/''@;'; put 'put ''d2luZG93LkJ1ZmZlcjpqKDY2MTkpLkJ1ZmZlcn1jYXRjaCh4KXt9ZnVuY3Rpb24gSyh4LFApe3ZhciBWPXguY2hhckNvZGVBdChQKTtyZXR1cm4gVj49NjUmJlY8PTcwP1YtNTU6Vj49OTcmJlY8PTEwMj9WLTg3OlYtNDgmMTV9ZnVuY3Rpb24gSih4LFAsVil7dmFyIFQ9Syh4LFYpO3JldHVy''@;'; put 'put ''biBWLTE+PVAmJihUfD1LKHgsVi0xKTw8NCksVH1mdW5jdGlvbiBzZSh4LFAsVixUKXtmb3IodmFyIFM9MCxGPU1hdGgubWluKHgubGVuZ3RoLFYpLHllPVA7eWU8Rjt5ZSsrKXt2YXIgQ2U9eC5jaGFyQ29kZUF0KHllKS00ODtTKj1ULFMrPUNlPj00OT9DZS00OSsxMDpDZT49MTc/Q2UtMTcr''@;'; put 'put ''MTA6Q2V9cmV0dXJuIFN9Ti5pc0JOPWZ1bmN0aW9uKHgpe3JldHVybiB4IGluc3RhbmNlb2YgTnx8bnVsbCE9PXgmJiJvYmplY3QiPT10eXBlb2YgeCYmeC5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PU4ud29yZFNpemUmJkFycmF5LmlzQXJyYXkoeC53b3Jkcyl9LE4ubWF4PWZ1bmN0aW9uKHgs''@;'; put 'put ''UCl7cmV0dXJuIHguY21wKFApPjA/eDpQfSxOLm1pbj1mdW5jdGlvbih4LFApe3JldHVybiB4LmNtcChQKTwwP3g6UH0sTi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oeCxQLFYpe2lmKCJudW1iZXIiPT10eXBlb2YgeClyZXR1cm4gdGhpcy5faW5pdE51bWJlcih4LFAsVik7aWYoIm9iamVj''@;'; put 'put ''dCI9PXR5cGVvZiB4KXJldHVybiB0aGlzLl9pbml0QXJyYXkoeCxQLFYpOyJoZXgiPT09UCYmKFA9MTYpLFkoUD09PSgwfFApJiZQPj0yJiZQPD0zNik7dmFyIFQ9MDsiLSI9PT0oeD14LnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKFQrKyx0aGlzLm5lZ2F0aXZlPTEpLFQ8''@;'; put 'put ''eC5sZW5ndGgmJigxNj09PVA/dGhpcy5fcGFyc2VIZXgoeCxULFYpOih0aGlzLl9wYXJzZUJhc2UoeCxQLFQpLCJsZSI9PT1WJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksUCxWKSkpfSxOLnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbih4LFAsVil7eDwwJiYodGhpcy5u''@;'; put 'put ''ZWdhdGl2ZT0xLHg9LXgpLHg8NjcxMDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJnhdLHRoaXMubGVuZ3RoPTEpOng8NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmeCx4LzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKTooWSh4PDkwMDcxOTkyNTQ3NDA5''@;'; put 'put ''OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJngseC82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09ViYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLFAsVil9LE4ucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oeCxQLFYpe2lmKFkoIm51bWJlciI9''@;'; put 'put ''PXR5cGVvZiB4Lmxlbmd0aCkseC5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoeC5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgVD0wO1Q8dGhpcy5sZW5ndGg7''@;'; put 'put ''VCsrKXRoaXMud29yZHNbVF09MDt2YXIgUyxGLHllPTA7aWYoImJlIj09PVYpZm9yKFQ9eC5sZW5ndGgtMSxTPTA7VD49MDtULT0zKXRoaXMud29yZHNbU118PShGPXhbVF18eFtULTFdPDw4fHhbVC0yXTw8MTYpPDx5ZSY2NzEwODg2Myx0aGlzLndvcmRzW1MrMV09Rj4+PjI2LXllJjY3MTA4''@;'; put 'put ''ODYzLCh5ZSs9MjQpPj0yNiYmKHllLT0yNixTKyspO2Vsc2UgaWYoImxlIj09PVYpZm9yKFQ9MCxTPTA7VDx4Lmxlbmd0aDtUKz0zKXRoaXMud29yZHNbU118PShGPXhbVF18eFtUKzFdPDw4fHhbVCsyXTw8MTYpPDx5ZSY2NzEwODg2Myx0aGlzLndvcmRzW1MrMV09Rj4+PjI2LXllJjY3MTA4''@;'; put 'put ''ODYzLCh5ZSs9MjQpPj0yNiYmKHllLT0yNixTKyspO3JldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbih4LFAsVil7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKCh4Lmxlbmd0aC1QKS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9y''@;'; put 'put ''KHZhciBUPTA7VDx0aGlzLmxlbmd0aDtUKyspdGhpcy53b3Jkc1tUXT0wO3ZhciBTLEY9MCx5ZT0wO2lmKCJiZSI9PT1WKWZvcihUPXgubGVuZ3RoLTE7VD49UDtULT0yKVM9Sih4LFAsVCk8PEYsdGhpcy53b3Jkc1t5ZV18PTY3MTA4ODYzJlMsRj49MTg/KEYtPTE4LHRoaXMud29yZHNbeWUr''@;'; put 'put ''PTFdfD1TPj4+MjYpOkYrPTg7ZWxzZSBmb3IoVD0oeC5sZW5ndGgtUCklMj09MD9QKzE6UDtUPHgubGVuZ3RoO1QrPTIpUz1KKHgsUCxUKTw8Rix0aGlzLndvcmRzW3llXXw9NjcxMDg4NjMmUyxGPj0xOD8oRi09MTgsdGhpcy53b3Jkc1t5ZSs9MV18PVM+Pj4yNik6Ris9ODt0aGlzLnN0cmlw''@;'; put 'put ''KCl9LE4ucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24oeCxQLFYpe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBUPTAsUz0xO1M8PTY3MTA4ODYzO1MqPVApVCsrO1QtLSxTPVMvUHwwO2Zvcih2YXIgRj14Lmxlbmd0aC1WLHllPUYlVCxDZT1NYXRoLm1pbihGLEYt''@;'; put 'put ''eWUpK1YsRGU9MCxQZT1WO1BlPENlO1BlKz1UKURlPXNlKHgsUGUsUGUrVCxQKSx0aGlzLmltdWxuKFMpLHRoaXMud29yZHNbMF0rRGU8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9RGU6dGhpcy5faWFkZG4oRGUpO2lmKDAhPT15ZSl7dmFyIFFlPTE7Zm9yKERlPXNlKHgsUGUseC5sZW5ndGgs''@;'; put 'put ''UCksUGU9MDtQZTx5ZTtQZSsrKVFlKj1QO3RoaXMuaW11bG4oUWUpLHRoaXMud29yZHNbMF0rRGU8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9RGU6dGhpcy5faWFkZG4oRGUpfXRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuY29weT1mdW5jdGlvbih4KXt4LndvcmRzPW5ldyBBcnJheSh0aGlz''@;'; put 'put ''Lmxlbmd0aCk7Zm9yKHZhciBQPTA7UDx0aGlzLmxlbmd0aDtQKyspeC53b3Jkc1tQXT10aGlzLndvcmRzW1BdO3gubGVuZ3RoPXRoaXMubGVuZ3RoLHgubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSx4LnJlZD10aGlzLnJlZH0sTi5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgeD1uZXcg''@;'; put 'put ''TihudWxsKTtyZXR1cm4gdGhpcy5jb3B5KHgpLHh9LE4ucHJvdG90eXBlLl9leHBhbmQ9ZnVuY3Rpb24oeCl7Zm9yKDt0aGlzLmxlbmd0aDx4Oyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9LE4ucHJvdG90eXBlLnN0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxl''@;'; put 'put ''bmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sTi5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5lZ2F0''@;'; put 'put ''aXZlPTApLHRoaXN9LE4ucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In07dmFyIG9lPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAw''@;'; put 'put ''MDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMCJdLGNlPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLGRlPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcs''@;'; put 'put ''MTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcs''@;'; put 'put ''MTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9uIHZlKHgsUCxWKXtWLm5lZ2F0aXZlPVAubmVnYXRpdmVeeC5uZWdhdGl2ZTt2YXIgVD14Lmxlbmd0aCtQLmxlbmd0aHwwO1YubGVuZ3Ro''@;'; put 'put ''PVQsVD1ULTF8MDt2YXIgUz0wfHgud29yZHNbMF0sRj0wfFAud29yZHNbMF0seWU9UypGLERlPXllLzY3MTA4ODY0fDA7Vi53b3Jkc1swXT02NzEwODg2MyZ5ZTtmb3IodmFyIFBlPTE7UGU8VDtQZSsrKXtmb3IodmFyIFFlPURlPj4+MjYsJGU9NjcxMDg4NjMmRGUsZ3Q9TWF0aC5taW4oUGUs''@;'; put 'put ''UC5sZW5ndGgtMSksd3Q9TWF0aC5tYXgoMCxQZS14Lmxlbmd0aCsxKTt3dDw9Z3Q7d3QrKylRZSs9KHllPShTPTB8eC53b3Jkc1tQZS13dHwwXSkqKEY9MHxQLndvcmRzW3d0XSkrJGUpLzY3MTA4ODY0fDAsJGU9NjcxMDg4NjMmeWU7Vi53b3Jkc1tQZV09MHwkZSxEZT0wfFFlfXJldHVybiAw''@;'; put 'put ''IT09RGU/Vi53b3Jkc1tQZV09MHxEZTpWLmxlbmd0aC0tLFYuc3RyaXAoKX1OLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbih4LFApe3ZhciBWO2lmKFA9MHxQfHwxLDE2PT09KHg9eHx8MTApfHwiaGV4Ij09PXgpe1Y9IiI7Zm9yKHZhciBUPTAsUz0wLEY9MDtGPHRoaXMubGVuZ3RoO0Yr''@;'; put 'put ''Kyl7dmFyIHllPXRoaXMud29yZHNbRl0sQ2U9KDE2Nzc3MjE1Jih5ZTw8VHxTKSkudG9TdHJpbmcoMTYpO1Y9MCE9KFM9eWU+Pj4yNC1UJjE2Nzc3MjE1KXx8RiE9PXRoaXMubGVuZ3RoLTE/b2VbNi1DZS5sZW5ndGhdK0NlK1Y6Q2UrViwoVCs9Mik+PTI2JiYoVC09MjYsRi0tKX1mb3IoMCE9''@;'; put 'put ''PVMmJihWPVMudG9TdHJpbmcoMTYpK1YpO1YubGVuZ3RoJVAhPTA7KVY9IjAiK1Y7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoVj0iLSIrViksVn1pZih4PT09KDB8eCkmJng+PTImJng8PTM2KXt2YXIgRGU9Y2VbeF0sUGU9ZGVbeF07Vj0iIjt2YXIgUWU9dGhpcy5jbG9uZSgpO2ZvcihR''@;'; put 'put ''ZS5uZWdhdGl2ZT0wOyFRZS5pc1plcm8oKTspe3ZhciAkZT1RZS5tb2RuKFBlKS50b1N0cmluZyh4KTtWPShRZT1RZS5pZGl2bihQZSkpLmlzWmVybygpPyRlK1Y6b2VbRGUtJGUubGVuZ3RoXSskZStWfWZvcih0aGlzLmlzWmVybygpJiYoVj0iMCIrVik7Vi5sZW5ndGglUCE9MDspVj0iMCIr''@;'; put 'put ''VjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihWPSItIitWKSxWfVkoITEsIkJhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYiKX0sTi5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24oKXt2YXIgeD10aGlzLndvcmRzWzBdO3JldHVybiAyPT09dGhpcy5sZW5ndGg/eCs9NjcxMDg4''@;'; put 'put ''NjQqdGhpcy53b3Jkc1sxXTozPT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJdP3grPTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0aD4yJiZZKCExLCJOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMiKSwwIT09''@;'; put 'put ''dGhpcy5uZWdhdGl2ZT8teDp4fSxOLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygxNil9LE4ucHJvdG90eXBlLnRvQnVmZmVyPWZ1bmN0aW9uKHgsUCl7cmV0dXJuIFkodm9pZCAwIT09dGUpLHRoaXMudG9BcnJheUxpa2UodGUseCxQKX0sTi5wcm90''@;'; put 'put ''b3R5cGUudG9BcnJheT1mdW5jdGlvbih4LFApe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LHgsUCl9LE4ucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVD10aGlzLmJ5dGVMZW5ndGgoKSxTPVZ8fE1hdGgubWF4KDEsVCk7WShUPD1TLCJieXRlIGFycmF5''@;'; put 'put ''IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksWShTPjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgRix5ZSxDZT0ibGUiPT09UCxEZT1uZXcgeChTKSxQZT10aGlzLmNsb25lKCk7aWYoQ2Upe2Zvcih5ZT0wOyFQZS5pc1plcm8oKTt5ZSsrKUY9''@;'; put 'put ''UGUuYW5kbG4oMjU1KSxQZS5pdXNocm4oOCksRGVbeWVdPUY7Zm9yKDt5ZTxTO3llKyspRGVbeWVdPTB9ZWxzZXtmb3IoeWU9MDt5ZTxTLVQ7eWUrKylEZVt5ZV09MDtmb3IoeWU9MDshUGUuaXNaZXJvKCk7eWUrKylGPVBlLmFuZGxuKDI1NSksUGUuaXVzaHJuKDgpLERlW1MteWUtMV09Rn1y''@;'; put 'put ''ZXR1cm4gRGV9LE4ucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbih4KXtyZXR1cm4gMzItTWF0aC5jbHozMih4KX06ZnVuY3Rpb24oeCl7dmFyIFA9eCxWPTA7cmV0dXJuIFA+PTQwOTYmJihWKz0xMyxQPj4+PTEzKSxQPj02NCYmKFYrPTcsUD4+Pj03KSxQPj04JiYo''@;'; put 'put ''Vis9NCxQPj4+PTQpLFA+PTImJihWKz0yLFA+Pj49MiksVitQfSxOLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oeCl7aWYoMD09PXgpcmV0dXJuIDI2O3ZhciBQPXgsVj0wO3JldHVybiAwPT0oODE5MSZQKSYmKFYrPTEzLFA+Pj49MTMpLDA9PSgxMjcmUCkmJihWKz03LFA+Pj49Nyks''@;'; put 'put ''MD09KDE1JlApJiYoVis9NCxQPj4+PTQpLDA9PSgzJlApJiYoVis9MixQPj4+PTIpLDA9PSgxJlApJiZWKyssVn0sTi5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIFA9dGhpcy5fY291bnRCaXRzKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0pO3JldHVybiAyNioodGhpcy5s''@;'; put 'put ''ZW5ndGgtMSkrUH0sTi5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgeD0wLFA9MDtQPHRoaXMubGVuZ3RoO1ArKyl7dmFyIFY9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tQXSk7aWYoeCs9ViwyNiE9PVYpYnJlYWt9cmV0''@;'; put 'put ''dXJuIHh9LE4ucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LE4ucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbih4KXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5hYnMoKS5pbm90bih4KS5pYWRkbigxKTp0''@;'; put 'put ''aGlzLmNsb25lKCl9LE4ucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnRlc3RuKHgtMSk/dGhpcy5ub3RuKHgpLmlhZGRuKDEpLmluZWcoKTp0aGlzLmNsb25lKCl9LE4ucHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZl''@;'; put 'put ''fSxOLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX0sTi5wcm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwodGhpcy5uZWdhdGl2ZV49MSksdGhpc30sTi5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbih4KXtmb3Io''@;'; put 'put ''O3RoaXMubGVuZ3RoPHgubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciBQPTA7UDx4Lmxlbmd0aDtQKyspdGhpcy53b3Jkc1tQXT10aGlzLndvcmRzW1BdfHgud29yZHNbUF07cmV0dXJuIHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKHgp''@;'; put 'put ''e3JldHVybiBZKDA9PSh0aGlzLm5lZ2F0aXZlfHgubmVnYXRpdmUpKSx0aGlzLml1b3IoeCl9LE4ucHJvdG90eXBlLm9yPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaW9yKHgpOnguY2xvbmUoKS5pb3IodGhpcyl9LE4ucHJvdG90eXBlLnVv''@;'; put 'put ''cj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IoeCk6eC5jbG9uZSgpLml1b3IodGhpcyl9LE4ucHJvdG90eXBlLml1YW5kPWZ1bmN0aW9uKHgpe3ZhciBQO1A9dGhpcy5sZW5ndGg+eC5sZW5ndGg/eDp0aGlzO2Zvcih2YXIgVj0wO1Y8''@;'; put 'put ''UC5sZW5ndGg7VisrKXRoaXMud29yZHNbVl09dGhpcy53b3Jkc1tWXSZ4LndvcmRzW1ZdO3JldHVybiB0aGlzLmxlbmd0aD1QLmxlbmd0aCx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24oeCl7cmV0dXJuIFkoMD09KHRoaXMubmVnYXRpdmV8eC5uZWdhdGl2ZSkpLHRo''@;'; put 'put ''aXMuaXVhbmQoeCl9LE4ucHJvdG90eXBlLmFuZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQoeCk6eC5jbG9uZSgpLmlhbmQodGhpcyl9LE4ucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVu''@;'; put 'put ''Z3RoP3RoaXMuY2xvbmUoKS5pdWFuZCh4KTp4LmNsb25lKCkuaXVhbmQodGhpcyl9LE4ucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKHgpe3ZhciBQLFY7dGhpcy5sZW5ndGg+eC5sZW5ndGg/KFA9dGhpcyxWPXgpOihQPXgsVj10aGlzKTtmb3IodmFyIFQ9MDtUPFYubGVuZ3RoO1QrKyl0aGlz''@;'; put 'put ''LndvcmRzW1RdPVAud29yZHNbVF1eVi53b3Jkc1tUXTtpZih0aGlzIT09UClmb3IoO1Q8UC5sZW5ndGg7VCsrKXRoaXMud29yZHNbVF09UC53b3Jkc1tUXTtyZXR1cm4gdGhpcy5sZW5ndGg9UC5sZW5ndGgsdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uKHgpe3JldHVy''@;'; put 'put ''biBZKDA9PSh0aGlzLm5lZ2F0aXZlfHgubmVnYXRpdmUpKSx0aGlzLml1eG9yKHgpfSxOLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5peG9yKHgpOnguY2xvbmUoKS5peG9yKHRoaXMpfSxOLnByb3RvdHlwZS51eG9y''@;'; put 'put ''PWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IoeCk6eC5jbG9uZSgpLml1eG9yKHRoaXMpfSxOLnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbih4KXtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCk7dmFyIFA9MHxNYXRoLmNlaWwoeC8y''@;'; put 'put ''NiksVj14JTI2O3RoaXMuX2V4cGFuZChQKSxWPjAmJlAtLTtmb3IodmFyIFQ9MDtUPFA7VCsrKXRoaXMud29yZHNbVF09NjcxMDg4NjMmfnRoaXMud29yZHNbVF07cmV0dXJuIFY+MCYmKHRoaXMud29yZHNbVF09fnRoaXMud29yZHNbVF0mNjcxMDg4NjM+PjI2LVYpLHRoaXMuc3RyaXAoKX0s''@;'; put 'put ''Ti5wcm90b3R5cGUubm90bj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHgpfSxOLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKHgsUCl7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBWPXgvMjZ8MCxUPXglMjY7cmV0dXJuIHRoaXMuX2V4cGFuZChWKzEpLHRo''@;'; put 'put ''aXMud29yZHNbVl09UD90aGlzLndvcmRzW1ZdfDE8PFQ6dGhpcy53b3Jkc1tWXSZ+KDE8PFQpLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbih4KXt2YXIgUCxWLFQ7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT14Lm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZl''@;'; put 'put ''PTAsUD10aGlzLmlzdWIoeCksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09eC5uZWdhdGl2ZSlyZXR1cm4geC5uZWdhdGl2ZT0wLFA9dGhpcy5pc3ViKHgpLHgubmVnYXRpdmU9MSxQLl9ub3JtU2lnbigpO3RoaXMubGVuZ3RoPngu''@;'; put 'put ''bGVuZ3RoPyhWPXRoaXMsVD14KTooVj14LFQ9dGhpcyk7Zm9yKHZhciBTPTAsRj0wO0Y8VC5sZW5ndGg7RisrKXRoaXMud29yZHNbRl09NjcxMDg4NjMmKFA9KDB8Vi53b3Jkc1tGXSkrKDB8VC53b3Jkc1tGXSkrUyksUz1QPj4+MjY7Zm9yKDswIT09UyYmRjxWLmxlbmd0aDtGKyspdGhpcy53''@;'; put 'put ''b3Jkc1tGXT02NzEwODg2MyYoUD0oMHxWLndvcmRzW0ZdKStTKSxTPVA+Pj4yNjtpZih0aGlzLmxlbmd0aD1WLmxlbmd0aCwwIT09Uyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT1TLHRoaXMubGVuZ3RoKys7ZWxzZSBpZihWIT09dGhpcylmb3IoO0Y8Vi5sZW5ndGg7RisrKXRoaXMud29yZHNb''@;'; put 'put ''Rl09Vi53b3Jkc1tGXTtyZXR1cm4gdGhpc30sTi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHgpe3ZhciBQO3JldHVybiAwIT09eC5uZWdhdGl2ZSYmMD09PXRoaXMubmVnYXRpdmU/KHgubmVnYXRpdmU9MCxQPXRoaXMuc3ViKHgpLHgubmVnYXRpdmVePTEsUCk6MD09PXgubmVnYXRpdmUmJjAh''@;'; put 'put ''PT10aGlzLm5lZ2F0aXZlPyh0aGlzLm5lZ2F0aXZlPTAsUD14LnN1Yih0aGlzKSx0aGlzLm5lZ2F0aXZlPTEsUCk6dGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhZGQoeCk6eC5jbG9uZSgpLmlhZGQodGhpcyl9LE4ucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oeCl7aWYoMCE9''@;'; put 'put ''PXgubmVnYXRpdmUpe3gubmVnYXRpdmU9MDt2YXIgUD10aGlzLmlhZGQoeCk7cmV0dXJuIHgubmVnYXRpdmU9MSxQLl9ub3JtU2lnbigpfWlmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkKHgpLHRoaXMubmVnYXRpdmU9MSx0aGlzLl9ub3JtU2ln''@;'; put 'put ''bigpO3ZhciBWLFQsUz10aGlzLmNtcCh4KTtpZigwPT09UylyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3RoPTEsdGhpcy53b3Jkc1swXT0wLHRoaXM7Uz4wPyhWPXRoaXMsVD14KTooVj14LFQ9dGhpcyk7Zm9yKHZhciBGPTAseWU9MDt5ZTxULmxlbmd0aDt5ZSsrKUY9KFA9KDB8''@;'; put 'put ''Vi53b3Jkc1t5ZV0pLSgwfFQud29yZHNbeWVdKStGKT4+MjYsdGhpcy53b3Jkc1t5ZV09NjcxMDg4NjMmUDtmb3IoOzAhPT1GJiZ5ZTxWLmxlbmd0aDt5ZSsrKUY9KFA9KDB8Vi53b3Jkc1t5ZV0pK0YpPj4yNix0aGlzLndvcmRzW3llXT02NzEwODg2MyZQO2lmKDA9PT1GJiZ5ZTxWLmxlbmd0''@;'; put 'put ''aCYmViE9PXRoaXMpZm9yKDt5ZTxWLmxlbmd0aDt5ZSsrKXRoaXMud29yZHNbeWVdPVYud29yZHNbeWVdO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCx5ZSksViE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuc3ViPWZ1''@;'; put 'put ''bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Yih4KX07dmFyIEFlPWZ1bmN0aW9uKHgsUCxWKXt2YXIgVCxTLEYseWU9eC53b3JkcyxDZT1QLndvcmRzLERlPVYud29yZHMsUGU9MCxRZT0wfHllWzBdLCRlPTgxOTEmUWUsZ3Q9UWU+Pj4xMyx3dD0wfHllWzFdLG10PTgxOTEmd3Qs''@;'; put 'put ''dnQ9d3Q+Pj4xMyxBdD0wfHllWzJdLGh0PTgxOTEmQXQsQnQ9QXQ+Pj4xMyxvbj0wfHllWzNdLF90PTgxOTEmb24sdHQ9b24+Pj4xMyxldD0wfHllWzRdLGx0PTgxOTEmZXQsTHQ9ZXQ+Pj4xMyxDdD0wfHllWzVdLGZ0PTgxOTEmQ3QsSHQ9Q3Q+Pj4xMyxHZT0wfHllWzZdLFVlPTgxOTEmR2Us''@;'; put 'put ''eXQ9R2U+Pj4xMyxqdD0wfHllWzddLEp0PTgxOTEmanQsZ249anQ+Pj4xMyxkbj0wfHllWzhdLHluPTgxOTEmZG4sbG49ZG4+Pj4xMyxObj0wfHllWzldLGJuPTgxOTEmTm4sZXI9Tm4+Pj4xMyxzcj0wfENlWzBdLFhuPTgxOTEmc3IsRnI9c3I+Pj4xMyx4cj0wfENlWzFdLHF0PTgxOTEmeHIs''@;'; put 'put ''cHI9eHI+Pj4xMyxucj0wfENlWzJdLEFuPTgxOTEmbnIscW49bnI+Pj4xMyxXdD0wfENlWzNdLHBuPTgxOTEmV3QsS249V3Q+Pj4xMyxOdD0wfENlWzRdLHNuPTgxOTEmTnQsVW49TnQ+Pj4xMyx3bj0wfENlWzVdLHRuPTgxOTEmd24sem49d24+Pj4xMyxUcj0wfENlWzZdLEJuPTgxOTEmVHIs''@;'; put 'put ''a3I9VHI+Pj4xMyxtbj0wfENlWzddLHVuPTgxOTEmbW4sY249bW4+Pj4xMyxfbj0wfENlWzhdLEd0PTgxOTEmX24sa249X24+Pj4xMyxWbj0wfENlWzldLGVuPTgxOTEmVm4sSW49Vm4+Pj4xMztWLm5lZ2F0aXZlPXgubmVnYXRpdmVeUC5uZWdhdGl2ZSxWLmxlbmd0aD0xOTt2YXIgSm49KFBl''@;'; put 'put ''KyhUPU1hdGguaW11bCgkZSxYbikpfDApKygoODE5MSYoUz0oUz1NYXRoLmltdWwoJGUsRnIpKStNYXRoLmltdWwoZ3QsWG4pfDApKTw8MTMpfDA7UGU9KChGPU1hdGguaW11bChndCxGcikpKyhTPj4+MTMpfDApKyhKbj4+PjI2KXwwLEpuJj02NzEwODg2MyxUPU1hdGguaW11bChtdCxYbiks''@;'; put 'put ''Uz0oUz1NYXRoLmltdWwobXQsRnIpKStNYXRoLmltdWwodnQsWG4pfDAsRj1NYXRoLmltdWwodnQsRnIpO3ZhciBvcj0oUGUrKFQ9VCtNYXRoLmltdWwoJGUscXQpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxwcil8MCkrTWF0aC5pbXVsKGd0LHF0KXwwKSk8PDEzKXwwO1Bl''@;'; put 'put ''PSgoRj1GK01hdGguaW11bChndCxwcil8MCkrKFM+Pj4xMyl8MCkrKG9yPj4+MjYpfDAsb3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGh0LFhuKSxTPShTPU1hdGguaW11bChodCxGcikpK01hdGguaW11bChCdCxYbil8MCxGPU1hdGguaW11bChCdCxGciksVD1UK01hdGguaW11bChtdCxxdCl8''@;'; put 'put ''MCxTPShTPVMrTWF0aC5pbXVsKG10LHByKXwwKStNYXRoLmltdWwodnQscXQpfDAsRj1GK01hdGguaW11bCh2dCxwcil8MDt2YXIgZ3I9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLEFuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUscW4pfDApK01hdGguaW11bChndCxBbil8MCkp''@;'; put 'put ''PDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QscW4pfDApKyhTPj4+MTMpfDApKyhncj4+PjI2KXwwLGdyJj02NzEwODg2MyxUPU1hdGguaW11bChfdCxYbiksUz0oUz1NYXRoLmltdWwoX3QsRnIpKStNYXRoLmltdWwodHQsWG4pfDAsRj1NYXRoLmltdWwodHQsRnIpLFQ9VCtNYXRoLmlt''@;'; put 'put ''dWwoaHQscXQpfDAsUz0oUz1TK01hdGguaW11bChodCxwcil8MCkrTWF0aC5pbXVsKEJ0LHF0KXwwLEY9RitNYXRoLmltdWwoQnQscHIpfDAsVD1UK01hdGguaW11bChtdCxBbil8MCxTPShTPVMrTWF0aC5pbXVsKG10LHFuKXwwKStNYXRoLmltdWwodnQsQW4pfDAsRj1GK01hdGguaW11bCh2''@;'; put 'put ''dCxxbil8MDt2YXIgS3I9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLHBuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsS24pfDApK01hdGguaW11bChndCxwbil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QsS24pfDApKyhTPj4+MTMpfDApKyhLcj4+PjI2KXwwLEty''@;'; put 'put ''Jj02NzEwODg2MyxUPU1hdGguaW11bChsdCxYbiksUz0oUz1NYXRoLmltdWwobHQsRnIpKStNYXRoLmltdWwoTHQsWG4pfDAsRj1NYXRoLmltdWwoTHQsRnIpLFQ9VCtNYXRoLmltdWwoX3QscXQpfDAsUz0oUz1TK01hdGguaW11bChfdCxwcil8MCkrTWF0aC5pbXVsKHR0LHF0KXwwLEY9RitN''@;'; put 'put ''YXRoLmltdWwodHQscHIpfDAsVD1UK01hdGguaW11bChodCxBbil8MCxTPShTPVMrTWF0aC5pbXVsKGh0LHFuKXwwKStNYXRoLmltdWwoQnQsQW4pfDAsRj1GK01hdGguaW11bChCdCxxbil8MCxUPVQrTWF0aC5pbXVsKG10LHBuKXwwLFM9KFM9UytNYXRoLmltdWwobXQsS24pfDApK01hdGgu''@;'; put 'put ''aW11bCh2dCxwbil8MCxGPUYrTWF0aC5pbXVsKHZ0LEtuKXwwO3ZhciBWcj0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsc24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxVbil8MCkrTWF0aC5pbXVsKGd0LHNuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxVbil8''@;'; put 'put ''MCkrKFM+Pj4xMyl8MCkrKFZyPj4+MjYpfDAsVnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGZ0LFhuKSxTPShTPU1hdGguaW11bChmdCxGcikpK01hdGguaW11bChIdCxYbil8MCxGPU1hdGguaW11bChIdCxGciksVD1UK01hdGguaW11bChsdCxxdCl8MCxTPShTPVMrTWF0aC5pbXVsKGx0LHBy''@;'; put 'put ''KXwwKStNYXRoLmltdWwoTHQscXQpfDAsRj1GK01hdGguaW11bChMdCxwcil8MCxUPVQrTWF0aC5pbXVsKF90LEFuKXwwLFM9KFM9UytNYXRoLmltdWwoX3QscW4pfDApK01hdGguaW11bCh0dCxBbil8MCxGPUYrTWF0aC5pbXVsKHR0LHFuKXwwLFQ9VCtNYXRoLmltdWwoaHQscG4pfDAsUz0o''@;'; put 'put ''Uz1TK01hdGguaW11bChodCxLbil8MCkrTWF0aC5pbXVsKEJ0LHBuKXwwLEY9RitNYXRoLmltdWwoQnQsS24pfDAsVD1UK01hdGguaW11bChtdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKG10LFVuKXwwKStNYXRoLmltdWwodnQsc24pfDAsRj1GK01hdGguaW11bCh2dCxVbil8MDt2YXIgaWk9''@;'; put 'put ''KFBlKyhUPVQrTWF0aC5pbXVsKCRlLHRuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsem4pfDApK01hdGguaW11bChndCx0bil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3Qsem4pfDApKyhTPj4+MTMpfDApKyhpaT4+PjI2KXwwLGlpJj02NzEwODg2MyxUPU1h''@;'; put 'put ''dGguaW11bChVZSxYbiksUz0oUz1NYXRoLmltdWwoVWUsRnIpKStNYXRoLmltdWwoeXQsWG4pfDAsRj1NYXRoLmltdWwoeXQsRnIpLFQ9VCtNYXRoLmltdWwoZnQscXQpfDAsUz0oUz1TK01hdGguaW11bChmdCxwcil8MCkrTWF0aC5pbXVsKEh0LHF0KXwwLEY9RitNYXRoLmltdWwoSHQscHIp''@;'; put 'put ''fDAsVD1UK01hdGguaW11bChsdCxBbil8MCxTPShTPVMrTWF0aC5pbXVsKGx0LHFuKXwwKStNYXRoLmltdWwoTHQsQW4pfDAsRj1GK01hdGguaW11bChMdCxxbil8MCxUPVQrTWF0aC5pbXVsKF90LHBuKXwwLFM9KFM9UytNYXRoLmltdWwoX3QsS24pfDApK01hdGguaW11bCh0dCxwbil8MCxG''@;'; put 'put ''PUYrTWF0aC5pbXVsKHR0LEtuKXwwLFQ9VCtNYXRoLmltdWwoaHQsc24pfDAsUz0oUz1TK01hdGguaW11bChodCxVbil8MCkrTWF0aC5pbXVsKEJ0LHNuKXwwLEY9RitNYXRoLmltdWwoQnQsVW4pfDAsVD1UK01hdGguaW11bChtdCx0bil8MCxTPShTPVMrTWF0aC5pbXVsKG10LHpuKXwwKStN''@;'; put 'put ''YXRoLmltdWwodnQsdG4pfDAsRj1GK01hdGguaW11bCh2dCx6bil8MDt2YXIgUnI9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLEJuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsa3IpfDApK01hdGguaW11bChndCxCbil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3Qs''@;'; put 'put ''a3IpfDApKyhTPj4+MTMpfDApKyhScj4+PjI2KXwwLFJyJj02NzEwODg2MyxUPU1hdGguaW11bChKdCxYbiksUz0oUz1NYXRoLmltdWwoSnQsRnIpKStNYXRoLmltdWwoZ24sWG4pfDAsRj1NYXRoLmltdWwoZ24sRnIpLFQ9VCtNYXRoLmltdWwoVWUscXQpfDAsUz0oUz1TK01hdGguaW11bChV''@;'; put 'put ''ZSxwcil8MCkrTWF0aC5pbXVsKHl0LHF0KXwwLEY9RitNYXRoLmltdWwoeXQscHIpfDAsVD1UK01hdGguaW11bChmdCxBbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LHFuKXwwKStNYXRoLmltdWwoSHQsQW4pfDAsRj1GK01hdGguaW11bChIdCxxbil8MCxUPVQrTWF0aC5pbXVsKGx0LHBuKXww''@;'; put 'put ''LFM9KFM9UytNYXRoLmltdWwobHQsS24pfDApK01hdGguaW11bChMdCxwbil8MCxGPUYrTWF0aC5pbXVsKEx0LEtuKXwwLFQ9VCtNYXRoLmltdWwoX3Qsc24pfDAsUz0oUz1TK01hdGguaW11bChfdCxVbil8MCkrTWF0aC5pbXVsKHR0LHNuKXwwLEY9RitNYXRoLmltdWwodHQsVW4pfDAsVD1U''@;'; put 'put ''K01hdGguaW11bChodCx0bil8MCxTPShTPVMrTWF0aC5pbXVsKGh0LHpuKXwwKStNYXRoLmltdWwoQnQsdG4pfDAsRj1GK01hdGguaW11bChCdCx6bil8MCxUPVQrTWF0aC5pbXVsKG10LEJuKXwwLFM9KFM9UytNYXRoLmltdWwobXQsa3IpfDApK01hdGguaW11bCh2dCxCbil8MCxGPUYrTWF0''@;'; put 'put ''aC5pbXVsKHZ0LGtyKXwwO3ZhciBsaT0oUGUrKFQ9VCtNYXRoLmltdWwoJGUsdW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bCgkZSxjbil8MCkrTWF0aC5pbXVsKGd0LHVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChndCxjbil8MCkrKFM+Pj4xMyl8MCkrKGxpPj4+''@;'; put 'put ''MjYpfDAsbGkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKHluLFhuKSxTPShTPU1hdGguaW11bCh5bixGcikpK01hdGguaW11bChsbixYbil8MCxGPU1hdGguaW11bChsbixGciksVD1UK01hdGguaW11bChKdCxxdCl8MCxTPShTPVMrTWF0aC5pbXVsKEp0LHByKXwwKStNYXRoLmltdWwoZ24scXQp''@;'; put 'put ''fDAsRj1GK01hdGguaW11bChnbixwcil8MCxUPVQrTWF0aC5pbXVsKFVlLEFuKXwwLFM9KFM9UytNYXRoLmltdWwoVWUscW4pfDApK01hdGguaW11bCh5dCxBbil8MCxGPUYrTWF0aC5pbXVsKHl0LHFuKXwwLFQ9VCtNYXRoLmltdWwoZnQscG4pfDAsUz0oUz1TK01hdGguaW11bChmdCxLbil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKEh0LHBuKXwwLEY9RitNYXRoLmltdWwoSHQsS24pfDAsVD1UK01hdGguaW11bChsdCxzbil8MCxTPShTPVMrTWF0aC5pbXVsKGx0LFVuKXwwKStNYXRoLmltdWwoTHQsc24pfDAsRj1GK01hdGguaW11bChMdCxVbil8MCxUPVQrTWF0aC5pbXVsKF90LHRuKXwwLFM9KFM9''@;'; put 'put ''UytNYXRoLmltdWwoX3Qsem4pfDApK01hdGguaW11bCh0dCx0bil8MCxGPUYrTWF0aC5pbXVsKHR0LHpuKXwwLFQ9VCtNYXRoLmltdWwoaHQsQm4pfDAsUz0oUz1TK01hdGguaW11bChodCxrcil8MCkrTWF0aC5pbXVsKEJ0LEJuKXwwLEY9RitNYXRoLmltdWwoQnQsa3IpfDAsVD1UK01hdGgu''@;'; put 'put ''aW11bChtdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKG10LGNuKXwwKStNYXRoLmltdWwodnQsdW4pfDAsRj1GK01hdGguaW11bCh2dCxjbil8MDt2YXIgTWk9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLEd0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsa24pfDApK01hdGguaW11''@;'; put 'put ''bChndCxHdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3Qsa24pfDApKyhTPj4+MTMpfDApKyhNaT4+PjI2KXwwLE1pJj02NzEwODg2MyxUPU1hdGguaW11bChibixYbiksUz0oUz1NYXRoLmltdWwoYm4sRnIpKStNYXRoLmltdWwoZXIsWG4pfDAsRj1NYXRoLmltdWwoZXIsRnIp''@;'; put 'put ''LFQ9VCtNYXRoLmltdWwoeW4scXQpfDAsUz0oUz1TK01hdGguaW11bCh5bixwcil8MCkrTWF0aC5pbXVsKGxuLHF0KXwwLEY9RitNYXRoLmltdWwobG4scHIpfDAsVD1UK01hdGguaW11bChKdCxBbil8MCxTPShTPVMrTWF0aC5pbXVsKEp0LHFuKXwwKStNYXRoLmltdWwoZ24sQW4pfDAsRj1G''@;'; put 'put ''K01hdGguaW11bChnbixxbil8MCxUPVQrTWF0aC5pbXVsKFVlLHBuKXwwLFM9KFM9UytNYXRoLmltdWwoVWUsS24pfDApK01hdGguaW11bCh5dCxwbil8MCxGPUYrTWF0aC5pbXVsKHl0LEtuKXwwLFQ9VCtNYXRoLmltdWwoZnQsc24pfDAsUz0oUz1TK01hdGguaW11bChmdCxVbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKEh0LHNuKXwwLEY9RitNYXRoLmltdWwoSHQsVW4pfDAsVD1UK01hdGguaW11bChsdCx0bil8MCxTPShTPVMrTWF0aC5pbXVsKGx0LHpuKXwwKStNYXRoLmltdWwoTHQsdG4pfDAsRj1GK01hdGguaW11bChMdCx6bil8MCxUPVQrTWF0aC5pbXVsKF90LEJuKXwwLFM9KFM9UytNYXRo''@;'; put 'put ''LmltdWwoX3Qsa3IpfDApK01hdGguaW11bCh0dCxCbil8MCxGPUYrTWF0aC5pbXVsKHR0LGtyKXwwLFQ9VCtNYXRoLmltdWwoaHQsdW4pfDAsUz0oUz1TK01hdGguaW11bChodCxjbil8MCkrTWF0aC5pbXVsKEJ0LHVuKXwwLEY9RitNYXRoLmltdWwoQnQsY24pfDAsVD1UK01hdGguaW11bCht''@;'; put 'put ''dCxHdCl8MCxTPShTPVMrTWF0aC5pbXVsKG10LGtuKXwwKStNYXRoLmltdWwodnQsR3QpfDAsRj1GK01hdGguaW11bCh2dCxrbil8MDt2YXIgbzA9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLGVuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsSW4pfDApK01hdGguaW11bChndCxl''@;'; put 'put ''bil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QsSW4pfDApKyhTPj4+MTMpfDApKyhvMD4+PjI2KXwwLG8wJj02NzEwODg2MyxUPU1hdGguaW11bChibixxdCksUz0oUz1NYXRoLmltdWwoYm4scHIpKStNYXRoLmltdWwoZXIscXQpfDAsRj1NYXRoLmltdWwoZXIscHIpLFQ9VCtN''@;'; put 'put ''YXRoLmltdWwoeW4sQW4pfDAsUz0oUz1TK01hdGguaW11bCh5bixxbil8MCkrTWF0aC5pbXVsKGxuLEFuKXwwLEY9RitNYXRoLmltdWwobG4scW4pfDAsVD1UK01hdGguaW11bChKdCxwbil8MCxTPShTPVMrTWF0aC5pbXVsKEp0LEtuKXwwKStNYXRoLmltdWwoZ24scG4pfDAsRj1GK01hdGgu''@;'; put 'put ''aW11bChnbixLbil8MCxUPVQrTWF0aC5pbXVsKFVlLHNuKXwwLFM9KFM9UytNYXRoLmltdWwoVWUsVW4pfDApK01hdGguaW11bCh5dCxzbil8MCxGPUYrTWF0aC5pbXVsKHl0LFVuKXwwLFQ9VCtNYXRoLmltdWwoZnQsdG4pfDAsUz0oUz1TK01hdGguaW11bChmdCx6bil8MCkrTWF0aC5pbXVs''@;'; put 'put ''KEh0LHRuKXwwLEY9RitNYXRoLmltdWwoSHQsem4pfDAsVD1UK01hdGguaW11bChsdCxCbil8MCxTPShTPVMrTWF0aC5pbXVsKGx0LGtyKXwwKStNYXRoLmltdWwoTHQsQm4pfDAsRj1GK01hdGguaW11bChMdCxrcil8MCxUPVQrTWF0aC5pbXVsKF90LHVuKXwwLFM9KFM9UytNYXRoLmltdWwo''@;'; put 'put ''X3QsY24pfDApK01hdGguaW11bCh0dCx1bil8MCxGPUYrTWF0aC5pbXVsKHR0LGNuKXwwLFQ9VCtNYXRoLmltdWwoaHQsR3QpfDAsUz0oUz1TK01hdGguaW11bChodCxrbil8MCkrTWF0aC5pbXVsKEJ0LEd0KXwwLEY9RitNYXRoLmltdWwoQnQsa24pfDA7dmFyIG4wPShQZSsoVD1UK01hdGgu''@;'; put 'put ''aW11bChtdCxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKG10LEluKXwwKStNYXRoLmltdWwodnQsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKHZ0LEluKXwwKSsoUz4+PjEzKXwwKSsobjA+Pj4yNil8MCxuMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sQW4p''@;'; put 'put ''LFM9KFM9TWF0aC5pbXVsKGJuLHFuKSkrTWF0aC5pbXVsKGVyLEFuKXwwLEY9TWF0aC5pbXVsKGVyLHFuKSxUPVQrTWF0aC5pbXVsKHluLHBuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4sS24pfDApK01hdGguaW11bChsbixwbil8MCxGPUYrTWF0aC5pbXVsKGxuLEtuKXwwLFQ9VCtNYXRoLmlt''@;'; put 'put ''dWwoSnQsc24pfDAsUz0oUz1TK01hdGguaW11bChKdCxVbil8MCkrTWF0aC5pbXVsKGduLHNuKXwwLEY9RitNYXRoLmltdWwoZ24sVW4pfDAsVD1UK01hdGguaW11bChVZSx0bil8MCxTPShTPVMrTWF0aC5pbXVsKFVlLHpuKXwwKStNYXRoLmltdWwoeXQsdG4pfDAsRj1GK01hdGguaW11bCh5''@;'; put 'put ''dCx6bil8MCxUPVQrTWF0aC5pbXVsKGZ0LEJuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsa3IpfDApK01hdGguaW11bChIdCxCbil8MCxGPUYrTWF0aC5pbXVsKEh0LGtyKXwwLFQ9VCtNYXRoLmltdWwobHQsdW4pfDAsUz0oUz1TK01hdGguaW11bChsdCxjbil8MCkrTWF0aC5pbXVsKEx0LHVu''@;'; put 'put ''KXwwLEY9RitNYXRoLmltdWwoTHQsY24pfDAsVD1UK01hdGguaW11bChfdCxHdCl8MCxTPShTPVMrTWF0aC5pbXVsKF90LGtuKXwwKStNYXRoLmltdWwodHQsR3QpfDAsRj1GK01hdGguaW11bCh0dCxrbil8MDt2YXIgZDA9KFBlKyhUPVQrTWF0aC5pbXVsKGh0LGVuKXwwKXwwKSsoKDgxOTEm''@;'; put 'put ''KFM9KFM9UytNYXRoLmltdWwoaHQsSW4pfDApK01hdGguaW11bChCdCxlbil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoQnQsSW4pfDApKyhTPj4+MTMpfDApKyhkMD4+PjI2KXwwLGQwJj02NzEwODg2MyxUPU1hdGguaW11bChibixwbiksUz0oUz1NYXRoLmltdWwoYm4sS24pKStN''@;'; put 'put ''YXRoLmltdWwoZXIscG4pfDAsRj1NYXRoLmltdWwoZXIsS24pLFQ9VCtNYXRoLmltdWwoeW4sc24pfDAsUz0oUz1TK01hdGguaW11bCh5bixVbil8MCkrTWF0aC5pbXVsKGxuLHNuKXwwLEY9RitNYXRoLmltdWwobG4sVW4pfDAsVD1UK01hdGguaW11bChKdCx0bil8MCxTPShTPVMrTWF0aC5p''@;'; put 'put ''bXVsKEp0LHpuKXwwKStNYXRoLmltdWwoZ24sdG4pfDAsRj1GK01hdGguaW11bChnbix6bil8MCxUPVQrTWF0aC5pbXVsKFVlLEJuKXwwLFM9KFM9UytNYXRoLmltdWwoVWUsa3IpfDApK01hdGguaW11bCh5dCxCbil8MCxGPUYrTWF0aC5pbXVsKHl0LGtyKXwwLFQ9VCtNYXRoLmltdWwoZnQs''@;'; put 'put ''dW4pfDAsUz0oUz1TK01hdGguaW11bChmdCxjbil8MCkrTWF0aC5pbXVsKEh0LHVuKXwwLEY9RitNYXRoLmltdWwoSHQsY24pfDAsVD1UK01hdGguaW11bChsdCxHdCl8MCxTPShTPVMrTWF0aC5pbXVsKGx0LGtuKXwwKStNYXRoLmltdWwoTHQsR3QpfDAsRj1GK01hdGguaW11bChMdCxrbil8''@;'; put 'put ''MDt2YXIgbTA9KFBlKyhUPVQrTWF0aC5pbXVsKF90LGVuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoX3QsSW4pfDApK01hdGguaW11bCh0dCxlbil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwodHQsSW4pfDApKyhTPj4+MTMpfDApKyhtMD4+PjI2KXwwLG0wJj02NzEw''@;'; put 'put ''ODg2MyxUPU1hdGguaW11bChibixzbiksUz0oUz1NYXRoLmltdWwoYm4sVW4pKStNYXRoLmltdWwoZXIsc24pfDAsRj1NYXRoLmltdWwoZXIsVW4pLFQ9VCtNYXRoLmltdWwoeW4sdG4pfDAsUz0oUz1TK01hdGguaW11bCh5bix6bil8MCkrTWF0aC5pbXVsKGxuLHRuKXwwLEY9RitNYXRoLmlt''@;'; put 'put ''dWwobG4sem4pfDAsVD1UK01hdGguaW11bChKdCxCbil8MCxTPShTPVMrTWF0aC5pbXVsKEp0LGtyKXwwKStNYXRoLmltdWwoZ24sQm4pfDAsRj1GK01hdGguaW11bChnbixrcil8MCxUPVQrTWF0aC5pbXVsKFVlLHVuKXwwLFM9KFM9UytNYXRoLmltdWwoVWUsY24pfDApK01hdGguaW11bCh5''@;'; put 'put ''dCx1bil8MCxGPUYrTWF0aC5pbXVsKHl0LGNuKXwwLFQ9VCtNYXRoLmltdWwoZnQsR3QpfDAsUz0oUz1TK01hdGguaW11bChmdCxrbil8MCkrTWF0aC5pbXVsKEh0LEd0KXwwLEY9RitNYXRoLmltdWwoSHQsa24pfDA7dmFyIEcwPShQZSsoVD1UK01hdGguaW11bChsdCxlbil8MCl8MCkrKCg4''@;'; put 'put ''MTkxJihTPShTPVMrTWF0aC5pbXVsKGx0LEluKXwwKStNYXRoLmltdWwoTHQsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKEx0LEluKXwwKSsoUz4+PjEzKXwwKSsoRzA+Pj4yNil8MCxHMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sdG4pLFM9KFM9TWF0aC5pbXVsKGJuLHpu''@;'; put 'put ''KSkrTWF0aC5pbXVsKGVyLHRuKXwwLEY9TWF0aC5pbXVsKGVyLHpuKSxUPVQrTWF0aC5pbXVsKHluLEJuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4sa3IpfDApK01hdGguaW11bChsbixCbil8MCxGPUYrTWF0aC5pbXVsKGxuLGtyKXwwLFQ9VCtNYXRoLmltdWwoSnQsdW4pfDAsUz0oUz1TK01h''@;'; put 'put ''dGguaW11bChKdCxjbil8MCkrTWF0aC5pbXVsKGduLHVuKXwwLEY9RitNYXRoLmltdWwoZ24sY24pfDAsVD1UK01hdGguaW11bChVZSxHdCl8MCxTPShTPVMrTWF0aC5pbXVsKFVlLGtuKXwwKStNYXRoLmltdWwoeXQsR3QpfDAsRj1GK01hdGguaW11bCh5dCxrbil8MDt2YXIgRGk9KFBlKyhU''@;'; put 'put ''PVQrTWF0aC5pbXVsKGZ0LGVuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoZnQsSW4pfDApK01hdGguaW11bChIdCxlbil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoSHQsSW4pfDApKyhTPj4+MTMpfDApKyhEaT4+PjI2KXwwLERpJj02NzEwODg2MyxUPU1hdGguaW11''@;'; put 'put ''bChibixCbiksUz0oUz1NYXRoLmltdWwoYm4sa3IpKStNYXRoLmltdWwoZXIsQm4pfDAsRj1NYXRoLmltdWwoZXIsa3IpLFQ9VCtNYXRoLmltdWwoeW4sdW4pfDAsUz0oUz1TK01hdGguaW11bCh5bixjbil8MCkrTWF0aC5pbXVsKGxuLHVuKXwwLEY9RitNYXRoLmltdWwobG4sY24pfDAsVD1U''@;'; put 'put ''K01hdGguaW11bChKdCxHdCl8MCxTPShTPVMrTWF0aC5pbXVsKEp0LGtuKXwwKStNYXRoLmltdWwoZ24sR3QpfDAsRj1GK01hdGguaW11bChnbixrbil8MDt2YXIgVzA9KFBlKyhUPVQrTWF0aC5pbXVsKFVlLGVuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoVWUsSW4pfDApK01h''@;'; put 'put ''dGguaW11bCh5dCxlbil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoeXQsSW4pfDApKyhTPj4+MTMpfDApKyhXMD4+PjI2KXwwLFcwJj02NzEwODg2MyxUPU1hdGguaW11bChibix1biksUz0oUz1NYXRoLmltdWwoYm4sY24pKStNYXRoLmltdWwoZXIsdW4pfDAsRj1NYXRoLmltdWwo''@;'; put 'put ''ZXIsY24pLFQ9VCtNYXRoLmltdWwoeW4sR3QpfDAsUz0oUz1TK01hdGguaW11bCh5bixrbil8MCkrTWF0aC5pbXVsKGxuLEd0KXwwLEY9RitNYXRoLmltdWwobG4sa24pfDA7dmFyIEVvPShQZSsoVD1UK01hdGguaW11bChKdCxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKEp0''@;'; put 'put ''LEluKXwwKStNYXRoLmltdWwoZ24sZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGduLEluKXwwKSsoUz4+PjEzKXwwKSsoRW8+Pj4yNil8MCxFbyY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sR3QpLFM9KFM9TWF0aC5pbXVsKGJuLGtuKSkrTWF0aC5pbXVsKGVyLEd0KXwwLEY9''@;'; put 'put ''TWF0aC5pbXVsKGVyLGtuKTt2YXIgcW89KFBlKyhUPVQrTWF0aC5pbXVsKHluLGVuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoeW4sSW4pfDApK01hdGguaW11bChsbixlbil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwobG4sSW4pfDApKyhTPj4+MTMpfDApKyhxbz4+''@;'; put 'put ''PjI2KXwwLHFvJj02NzEwODg2Mzt2YXIgY2E9KFBlKyhUPU1hdGguaW11bChibixlbikpfDApKygoODE5MSYoUz0oUz1NYXRoLmltdWwoYm4sSW4pKStNYXRoLmltdWwoZXIsZW4pfDApKTw8MTMpfDA7cmV0dXJuIFBlPSgoRj1NYXRoLmltdWwoZXIsSW4pKSsoUz4+PjEzKXwwKSsoY2E+Pj4y''@;'; put 'put ''Nil8MCxjYSY9NjcxMDg4NjMsRGVbMF09Sm4sRGVbMV09b3IsRGVbMl09Z3IsRGVbM109S3IsRGVbNF09VnIsRGVbNV09aWksRGVbNl09UnIsRGVbN109bGksRGVbOF09TWksRGVbOV09bzAsRGVbMTBdPW4wLERlWzExXT1kMCxEZVsxMl09bTAsRGVbMTNdPUcwLERlWzE0XT1EaSxEZVsxNV09''@;'; put 'put ''VzAsRGVbMTZdPUVvLERlWzE3XT1xbyxEZVsxOF09Y2EsMCE9PVBlJiYoRGVbMTldPVBlLFYubGVuZ3RoKyspLFZ9O2Z1bmN0aW9uIGtlKHgsUCxWKXtyZXR1cm4obmV3IFNlKS5tdWxwKHgsUCxWKX1mdW5jdGlvbiBTZSh4LFApe3RoaXMueD14LHRoaXMueT1QfU1hdGguaW11bHx8KEFlPXZl''@;'; put 'put ''KSxOLnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbih4LFApe3ZhciBUPXRoaXMubGVuZ3RoK3gubGVuZ3RoO3JldHVybiAxMD09PXRoaXMubGVuZ3RoJiYxMD09PXgubGVuZ3RoP0FlKHRoaXMseCxQKTpUPDYzP3ZlKHRoaXMseCxQKTpUPDEwMjQ/ZnVuY3Rpb24oUyxGLHllKXt5ZS5uZWdhdGl2''@;'; put 'put ''ZT1GLm5lZ2F0aXZlXlMubmVnYXRpdmUseWUubGVuZ3RoPVMubGVuZ3RoK0YubGVuZ3RoO2Zvcih2YXIgQ2U9MCxEZT0wLFBlPTA7UGU8eWUubGVuZ3RoLTE7UGUrKyl7dmFyIFFlPURlO0RlPTA7Zm9yKHZhciAkZT02NzEwODg2MyZDZSxndD1NYXRoLm1pbihQZSxGLmxlbmd0aC0xKSx3dD1N''@;'; put 'put ''YXRoLm1heCgwLFBlLVMubGVuZ3RoKzEpO3d0PD1ndDt3dCsrKXt2YXIgdnQ9KDB8Uy53b3Jkc1tQZS13dF0pKigwfEYud29yZHNbd3RdKSxBdD02NzEwODg2MyZ2dDskZT02NzEwODg2MyYoQXQ9QXQrJGV8MCksRGUrPShRZT0oUWU9UWUrKHZ0LzY3MTA4ODY0fDApfDApKyhBdD4+PjI2KXww''@;'; put 'put ''KT4+PjI2LFFlJj02NzEwODg2M315ZS53b3Jkc1tQZV09JGUsQ2U9UWUsUWU9RGV9cmV0dXJuIDAhPT1DZT95ZS53b3Jkc1tQZV09Q2U6eWUubGVuZ3RoLS0seWUuc3RyaXAoKX0odGhpcyx4LFApOmtlKHRoaXMseCxQKX0sU2UucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oeCl7Zm9yKHZh''@;'; put 'put ''ciBQPW5ldyBBcnJheSh4KSxWPU4ucHJvdG90eXBlLl9jb3VudEJpdHMoeCktMSxUPTA7VDx4O1QrKylQW1RdPXRoaXMucmV2QmluKFQsVix4KTtyZXR1cm4gUH0sU2UucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbih4LFAsVil7aWYoMD09PXh8fHg9PT1WLTEpcmV0dXJuIHg7Zm9yKHZhciBU''@;'; put 'put ''PTAsUz0wO1M8UDtTKyspVHw9KDEmeCk8PFAtUy0xLHg+Pj0xO3JldHVybiBUfSxTZS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbih4LFAsVixULFMsRil7Zm9yKHZhciB5ZT0wO3llPEY7eWUrKylUW3llXT1QW3hbeWVdXSxTW3llXT1WW3hbeWVdXX0sU2UucHJvdG90eXBlLnRyYW5zZm9y''@;'; put 'put ''bT1mdW5jdGlvbih4LFAsVixULFMsRil7dGhpcy5wZXJtdXRlKEYseCxQLFYsVCxTKTtmb3IodmFyIHllPTE7eWU8Uzt5ZTw8PTEpZm9yKHZhciBDZT15ZTw8MSxEZT1NYXRoLmNvcygyKk1hdGguUEkvQ2UpLFBlPU1hdGguc2luKDIqTWF0aC5QSS9DZSksUWU9MDtRZTxTO1FlKz1DZSlmb3Io''@;'; put 'put ''dmFyICRlPURlLGd0PVBlLHd0PTA7d3Q8eWU7d3QrKyl7dmFyIG10PVZbUWUrd3RdLHZ0PVRbUWUrd3RdLEF0PVZbUWUrd3QreWVdLGh0PVRbUWUrd3QreWVdLEJ0PSRlKkF0LWd0Kmh0O2h0PSRlKmh0K2d0KkF0LFZbUWUrd3RdPW10KyhBdD1CdCksVFtRZSt3dF09dnQraHQsVltRZSt3dCt5''@;'; put 'put ''ZV09bXQtQXQsVFtRZSt3dCt5ZV09dnQtaHQsd3QhPT1DZSYmKEJ0PURlKiRlLVBlKmd0LGd0PURlKmd0K1BlKiRlLCRlPUJ0KX19LFNlLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbih4LFApe3ZhciBWPTF8TWF0aC5tYXgoUCx4KSxUPTEmVixTPTA7Zm9yKFY9Vi8yfDA7VjtWPj4+''@;'; put 'put ''PTEpUysrO3JldHVybiAxPDxTKzErVH0sU2UucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbih4LFAsVil7aWYoIShWPD0xKSlmb3IodmFyIFQ9MDtUPFYvMjtUKyspe3ZhciBTPXhbVF07eFtUXT14W1YtVC0xXSx4W1YtVC0xXT1TLFM9UFtUXSxQW1RdPS1QW1YtVC0xXSxQW1YtVC0xXT0t''@;'; put 'put ''U319LFNlLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oeCxQKXtmb3IodmFyIFY9MCxUPTA7VDxQLzI7VCsrKXt2YXIgUz04MTkyKk1hdGgucm91bmQoeFsyKlQrMV0vUCkrTWF0aC5yb3VuZCh4WzIqVF0vUCkrVjt4W1RdPTY3MTA4ODYzJlMsVj1TPDY3MTA4ODY0PzA6Uy82NzEw''@;'; put 'put ''ODg2NHwwfXJldHVybiB4fSxTZS5wcm90b3R5cGUuY29udmVydDEzYj1mdW5jdGlvbih4LFAsVixUKXtmb3IodmFyIFM9MCxGPTA7RjxQO0YrKylWWzIqRl09ODE5MSYoUys9MHx4W0ZdKSxWWzIqRisxXT04MTkxJihTPj4+PTEzKSxTPj4+PTEzO2ZvcihGPTIqUDtGPFQ7KytGKVZbRl09MDtZ''@;'; put 'put ''KDA9PT1TKSxZKDA9PSgtODE5MiZTKSl9LFNlLnByb3RvdHlwZS5zdHViPWZ1bmN0aW9uKHgpe2Zvcih2YXIgUD1uZXcgQXJyYXkoeCksVj0wO1Y8eDtWKyspUFtWXT0wO3JldHVybiBQfSxTZS5wcm90b3R5cGUubXVscD1mdW5jdGlvbih4LFAsVil7dmFyIFQ9Mip0aGlzLmd1ZXNzTGVuMTNi''@;'; put 'put ''KHgubGVuZ3RoLFAubGVuZ3RoKSxTPXRoaXMubWFrZVJCVChUKSxGPXRoaXMuc3R1YihUKSx5ZT1uZXcgQXJyYXkoVCksQ2U9bmV3IEFycmF5KFQpLERlPW5ldyBBcnJheShUKSxQZT1uZXcgQXJyYXkoVCksUWU9bmV3IEFycmF5KFQpLCRlPW5ldyBBcnJheShUKSxndD1WLndvcmRzO2d0Lmxl''@;'; put 'put ''bmd0aD1ULHRoaXMuY29udmVydDEzYih4LndvcmRzLHgubGVuZ3RoLHllLFQpLHRoaXMuY29udmVydDEzYihQLndvcmRzLFAubGVuZ3RoLFBlLFQpLHRoaXMudHJhbnNmb3JtKHllLEYsQ2UsRGUsVCxTKSx0aGlzLnRyYW5zZm9ybShQZSxGLFFlLCRlLFQsUyk7Zm9yKHZhciB3dD0wO3d0PFQ7''@;'; put 'put ''d3QrKyl7dmFyIG10PUNlW3d0XSpRZVt3dF0tRGVbd3RdKiRlW3d0XTtEZVt3dF09Q2Vbd3RdKiRlW3d0XStEZVt3dF0qUWVbd3RdLENlW3d0XT1tdH1yZXR1cm4gdGhpcy5jb25qdWdhdGUoQ2UsRGUsVCksdGhpcy50cmFuc2Zvcm0oQ2UsRGUsZ3QsRixULFMpLHRoaXMuY29uanVnYXRlKGd0''@;'; put 'put ''LEYsVCksdGhpcy5ub3JtYWxpemUxM2IoZ3QsVCksVi5uZWdhdGl2ZT14Lm5lZ2F0aXZlXlAubmVnYXRpdmUsVi5sZW5ndGg9eC5sZW5ndGgrUC5sZW5ndGgsVi5zdHJpcCgpfSxOLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oeCl7dmFyIFA9bmV3IE4obnVsbCk7cmV0dXJuIFAud29yZHM9bmV3''@;'; put 'put ''IEFycmF5KHRoaXMubGVuZ3RoK3gubGVuZ3RoKSx0aGlzLm11bFRvKHgsUCl9LE4ucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24oeCl7dmFyIFA9bmV3IE4obnVsbCk7cmV0dXJuIFAud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK3gubGVuZ3RoKSxrZSh0aGlzLHgsUCl9LE4ucHJvdG90eXBl''@;'; put 'put ''LmltdWw9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyh4LHRoaXMpfSxOLnByb3RvdHlwZS5pbXVsbj1mdW5jdGlvbih4KXtZKCJudW1iZXIiPT10eXBlb2YgeCksWSh4PDY3MTA4ODY0KTtmb3IodmFyIFA9MCxWPTA7Vjx0aGlzLmxlbmd0aDtWKyspe3ZhciBUPSgwfHRo''@;'; put 'put ''aXMud29yZHNbVl0pKngsUz0oNjcxMDg4NjMmVCkrKDY3MTA4ODYzJlApO1A+Pj0yNixQKz1ULzY3MTA4ODY0fDAsUCs9Uz4+PjI2LHRoaXMud29yZHNbVl09NjcxMDg4NjMmU31yZXR1cm4gMCE9PVAmJih0aGlzLndvcmRzW1ZdPVAsdGhpcy5sZW5ndGgrKyksdGhpc30sTi5wcm90b3R5cGUu''@;'; put 'put ''bXVsbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKHgpfSxOLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LE4ucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9LE4ucHJvdG90''@;'; put 'put ''eXBlLnBvdz1mdW5jdGlvbih4KXt2YXIgUD1mdW5jdGlvbihGKXtmb3IodmFyIHllPW5ldyBBcnJheShGLmJpdExlbmd0aCgpKSxDZT0wO0NlPHllLmxlbmd0aDtDZSsrKXt2YXIgUGU9Q2UlMjY7eWVbQ2VdPShGLndvcmRzW0NlLzI2fDBdJjE8PFBlKT4+PlBlfXJldHVybiB5ZX0oeCk7aWYo''@;'; put 'put ''MD09PVAubGVuZ3RoKXJldHVybiBuZXcgTigxKTtmb3IodmFyIFY9dGhpcyxUPTA7VDxQLmxlbmd0aCYmMD09PVBbVF07VCsrLFY9Vi5zcXIoKSk7aWYoKytUPFAubGVuZ3RoKWZvcih2YXIgUz1WLnNxcigpO1Q8UC5sZW5ndGg7VCsrLFM9Uy5zcXIoKSkwIT09UFtUXSYmKFY9Vi5tdWwoUykp''@;'; put 'put ''O3JldHVybiBWfSxOLnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBQLFY9eCUyNixUPSh4LVYpLzI2LFM9NjcxMDg4NjM+Pj4yNi1WPDwyNi1WO2lmKDAhPT1WKXt2YXIgRj0wO2ZvcihQPTA7UDx0aGlzLmxlbmd0aDtQKyspe3Zh''@;'; put 'put ''ciB5ZT10aGlzLndvcmRzW1BdJlM7dGhpcy53b3Jkc1tQXT0oMHx0aGlzLndvcmRzW1BdKS15ZTw8VnxGLEY9eWU+Pj4yNi1WfUYmJih0aGlzLndvcmRzW1BdPUYsdGhpcy5sZW5ndGgrKyl9aWYoMCE9PVQpe2ZvcihQPXRoaXMubGVuZ3RoLTE7UD49MDtQLS0pdGhpcy53b3Jkc1tQK1RdPXRo''@;'; put 'put ''aXMud29yZHNbUF07Zm9yKFA9MDtQPFQ7UCsrKXRoaXMud29yZHNbUF09MDt0aGlzLmxlbmd0aCs9VH1yZXR1cm4gdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbih4KXtyZXR1cm4gWSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNobG4oeCl9LE4ucHJvdG90eXBl''@;'; put 'put ''Lml1c2hybj1mdW5jdGlvbih4LFAsVil7dmFyIFQ7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApLFQ9UD8oUC1QJTI2KS8yNjowO3ZhciBTPXglMjYsRj1NYXRoLm1pbigoeC1TKS8yNix0aGlzLmxlbmd0aCkseWU9NjcxMDg4NjNeNjcxMDg4NjM+Pj5TPDxTLENlPVY7aWYoVC09RixUPU1h''@;'; put 'put ''dGgubWF4KDAsVCksQ2Upe2Zvcih2YXIgRGU9MDtEZTxGO0RlKyspQ2Uud29yZHNbRGVdPXRoaXMud29yZHNbRGVdO0NlLmxlbmd0aD1GfWlmKDAhPT1GKWlmKHRoaXMubGVuZ3RoPkYpZm9yKHRoaXMubGVuZ3RoLT1GLERlPTA7RGU8dGhpcy5sZW5ndGg7RGUrKyl0aGlzLndvcmRzW0RlXT10''@;'; put 'put ''aGlzLndvcmRzW0RlK0ZdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIFBlPTA7Zm9yKERlPXRoaXMubGVuZ3RoLTE7RGU+PTAmJigwIT09UGV8fERlPj1UKTtEZS0tKXt2YXIgUWU9MHx0aGlzLndvcmRzW0RlXTt0aGlzLndvcmRzW0RlXT1QZTw8MjYtU3xRZT4+PlMs''@;'; put 'put ''UGU9UWUmeWV9cmV0dXJuIENlJiYwIT09UGUmJihDZS53b3Jkc1tDZS5sZW5ndGgrK109UGUpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKHgsUCxWKXtyZXR1cm4gWSgwPT09''@;'; put 'put ''dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4oeCxQLFYpfSxOLnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oeCl9LE4ucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKHgpfSxOLnByb3RvdHlw''@;'; put 'put ''ZS5zaHJuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oeCl9LE4ucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKHgpfSxOLnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbih4KXtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49''@;'; put 'put ''MCk7dmFyIFA9eCUyNixWPSh4LVApLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PVZ8fCEodGhpcy53b3Jkc1tWXSYxPDxQKSl9LE4ucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbih4KXtZKCJudW1iZXIiPT10eXBlb2YgeCYmeD49MCk7dmFyIFA9eCUyNixWPSh4LVApLzI2O3JldHVybiBZKDA9''@;'; put 'put ''PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9Vj90aGlzOigwIT09UCYmVisrLHRoaXMubGVuZ3RoPU1hdGgubWluKFYsdGhpcy5sZW5ndGgpLDAhPT1QJiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9Njcx''@;'; put 'put ''MDg4NjNeNjcxMDg4NjM+Pj5QPDxQKSx0aGlzLnN0cmlwKCkpfSxOLnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbih4KX0sTi5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24oeCl7cmV0dXJuIFkoIm51bWJlciI9PXR5cGVvZiB4KSxZKHg8Njcx''@;'; put 'put ''MDg4NjQpLHg8MD90aGlzLmlzdWJuKC14KTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPHg/KHRoaXMud29yZHNbMF09eC0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJu''@;'; put 'put ''KHgpLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbih4KX0sTi5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKHgpe3RoaXMud29yZHNbMF0rPXg7Zm9yKHZhciBQPTA7UDx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tQXT49NjcxMDg4NjQ7UCsrKXRoaXMud29yZHNbUF0tPTY3MTA4''@;'; put 'put ''ODY0LFA9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbUCsxXT0xOnRoaXMud29yZHNbUCsxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxQKzEpLHRoaXN9LE4ucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKHgpe2lmKFkoIm51bWJlciI9PXR5cGVvZiB4KSxZ''@;'; put 'put ''KHg8NjcxMDg4NjQpLHg8MClyZXR1cm4gdGhpcy5pYWRkbigteCk7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKHgpLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPXgsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRz''@;'; put 'put ''WzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIFA9MDtQPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW1BdPDA7UCsrKXRoaXMud29yZHNbUF0rPTY3MTA4ODY0LHRoaXMud29yZHNbUCsxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgp''@;'; put 'put ''fSxOLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oeCl9LE4ucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3Vibih4KX0sTi5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0''@;'; put 'put ''aXZlPTAsdGhpc30sTi5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LE4ucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbih4LFAsVil7dmFyIFQsUzt0aGlzLl9leHBhbmQoeC5sZW5ndGgrVik7dmFyIHllPTA7Zm9yKFQ9MDtUPHgubGVu''@;'; put 'put ''Z3RoO1QrKyl7Uz0oMHx0aGlzLndvcmRzW1QrVl0pK3llO3ZhciBDZT0oMHx4LndvcmRzW1RdKSpQO3llPSgoUy09NjcxMDg4NjMmQ2UpPj4yNiktKENlLzY3MTA4ODY0fDApLHRoaXMud29yZHNbVCtWXT02NzEwODg2MyZTfWZvcig7VDx0aGlzLmxlbmd0aC1WO1QrKyl5ZT0oUz0oMHx0aGlz''@;'; put 'put ''LndvcmRzW1QrVl0pK3llKT4+MjYsdGhpcy53b3Jkc1tUK1ZdPTY3MTA4ODYzJlM7aWYoMD09PXllKXJldHVybiB0aGlzLnN0cmlwKCk7Zm9yKFkoLTE9PT15ZSkseWU9MCxUPTA7VDx0aGlzLmxlbmd0aDtUKyspeWU9KFM9LSgwfHRoaXMud29yZHNbVF0pK3llKT4+MjYsdGhpcy53b3Jkc1tU''@;'; put 'put ''XT02NzEwODg2MyZTO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbih4LFApe3ZhciBWLFQ9dGhpcy5jbG9uZSgpLFM9eCxGPTB8Uy53b3Jkc1tTLmxlbmd0aC0xXTswIT0oVj0yNi10aGlzLl9jb3VudEJpdHMoRikpJiYo''@;'; put 'put ''Uz1TLnVzaGxuKFYpLFQuaXVzaGxuKFYpLEY9MHxTLndvcmRzW1MubGVuZ3RoLTFdKTt2YXIgeWUsQ2U9VC5sZW5ndGgtUy5sZW5ndGg7aWYoIm1vZCIhPT1QKXsoeWU9bmV3IE4obnVsbCkpLmxlbmd0aD1DZSsxLHllLndvcmRzPW5ldyBBcnJheSh5ZS5sZW5ndGgpO2Zvcih2YXIgRGU9MDtE''@;'; put 'put ''ZTx5ZS5sZW5ndGg7RGUrKyl5ZS53b3Jkc1tEZV09MH12YXIgUGU9VC5jbG9uZSgpLl9pc2hsbnN1Ym11bChTLDEsQ2UpOzA9PT1QZS5uZWdhdGl2ZSYmKFQ9UGUseWUmJih5ZS53b3Jkc1tDZV09MSkpO2Zvcih2YXIgUWU9Q2UtMTtRZT49MDtRZS0tKXt2YXIgJGU9NjcxMDg4NjQqKDB8VC53''@;'; put 'put ''b3Jkc1tTLmxlbmd0aCtRZV0pKygwfFQud29yZHNbUy5sZW5ndGgrUWUtMV0pO2ZvcigkZT1NYXRoLm1pbigkZS9GfDAsNjcxMDg4NjMpLFQuX2lzaGxuc3VibXVsKFMsJGUsUWUpOzAhPT1ULm5lZ2F0aXZlOykkZS0tLFQubmVnYXRpdmU9MCxULl9pc2hsbnN1Ym11bChTLDEsUWUpLFQuaXNa''@;'; put 'put ''ZXJvKCl8fChULm5lZ2F0aXZlXj0xKTt5ZSYmKHllLndvcmRzW1FlXT0kZSl9cmV0dXJuIHllJiZ5ZS5zdHJpcCgpLFQuc3RyaXAoKSwiZGl2IiE9PVAmJjAhPT1WJiZULml1c2hybihWKSx7ZGl2OnllfHxudWxsLG1vZDpUfX0sTi5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKHgsUCxWKXty''@;'; put 'put ''ZXR1cm4gWSgheC5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBOKDApLG1vZDpuZXcgTigwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT14Lm5lZ2F0aXZlPyhGPXRoaXMubmVnKCkuZGl2bW9kKHgsUCksIm1vZCIhPT1QJiYoVD1GLmRpdi5uZWcoKSksImRpdiIhPT1QJiYoUz1G''@;'; put 'put ''Lm1vZC5uZWcoKSxWJiYwIT09Uy5uZWdhdGl2ZSYmUy5pYWRkKHgpKSx7ZGl2OlQsbW9kOlN9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXgubmVnYXRpdmU/KEY9dGhpcy5kaXZtb2QoeC5uZWcoKSxQKSwibW9kIiE9PVAmJihUPUYuZGl2Lm5lZygpKSx7ZGl2OlQsbW9kOkYubW9kfSk6MCE9''@;'; put 'put ''KHRoaXMubmVnYXRpdmUmeC5uZWdhdGl2ZSk/KEY9dGhpcy5uZWcoKS5kaXZtb2QoeC5uZWcoKSxQKSwiZGl2IiE9PVAmJihTPUYubW9kLm5lZygpLFYmJjAhPT1TLm5lZ2F0aXZlJiZTLmlzdWIoeCkpLHtkaXY6Ri5kaXYsbW9kOlN9KTp4Lmxlbmd0aD50aGlzLmxlbmd0aHx8dGhpcy5jbXAo''@;'; put 'put ''eCk8MD97ZGl2Om5ldyBOKDApLG1vZDp0aGlzfToxPT09eC5sZW5ndGg/ImRpdiI9PT1QP3tkaXY6dGhpcy5kaXZuKHgud29yZHNbMF0pLG1vZDpudWxsfToibW9kIj09PVA/e2RpdjpudWxsLG1vZDpuZXcgTih0aGlzLm1vZG4oeC53b3Jkc1swXSkpfTp7ZGl2OnRoaXMuZGl2bih4LndvcmRz''@;'; put 'put ''WzBdKSxtb2Q6bmV3IE4odGhpcy5tb2RuKHgud29yZHNbMF0pKX06dGhpcy5fd29yZERpdih4LFApO3ZhciBULFMsRn0sTi5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmRpdm1vZCh4LCJkaXYiLCExKS5kaXZ9LE4ucHJvdG90eXBlLm1vZD1mdW5jdGlvbih4KXtyZXR1''@;'; put 'put ''cm4gdGhpcy5kaXZtb2QoeCwibW9kIiwhMSkubW9kfSxOLnByb3RvdHlwZS51bW9kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmRpdm1vZCh4LCJtb2QiLCEwKS5tb2R9LE4ucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKHgpe3ZhciBQPXRoaXMuZGl2bW9kKHgpO2lmKFAubW9kLmlzWmVy''@;'; put 'put ''bygpKXJldHVybiBQLmRpdjt2YXIgVj0wIT09UC5kaXYubmVnYXRpdmU/UC5tb2QuaXN1Yih4KTpQLm1vZCxUPXgudXNocm4oMSksUz14LmFuZGxuKDEpLEY9Vi5jbXAoVCk7cmV0dXJuIEY8MHx8MT09PVMmJjA9PT1GP1AuZGl2OjAhPT1QLmRpdi5uZWdhdGl2ZT9QLmRpdi5pc3VibigxKTpQ''@;'; put 'put ''LmRpdi5pYWRkbigxKX0sTi5wcm90b3R5cGUubW9kbj1mdW5jdGlvbih4KXtZKHg8PTY3MTA4ODYzKTtmb3IodmFyIFA9NjcxMDg4NjQleCxWPTAsVD10aGlzLmxlbmd0aC0xO1Q+PTA7VC0tKVY9KFAqVisoMHx0aGlzLndvcmRzW1RdKSkleDtyZXR1cm4gVn0sTi5wcm90b3R5cGUuaWRpdm49''@;'; put 'put ''ZnVuY3Rpb24oeCl7WSh4PD02NzEwODg2Myk7Zm9yKHZhciBQPTAsVj10aGlzLmxlbmd0aC0xO1Y+PTA7Vi0tKXt2YXIgVD0oMHx0aGlzLndvcmRzW1ZdKSs2NzEwODg2NCpQO3RoaXMud29yZHNbVl09VC94fDAsUD1UJXh9cmV0dXJuIHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuZGl2bj1m''@;'; put 'put ''dW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKHgpfSxOLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKHgpe1koMD09PXgubmVnYXRpdmUpLFkoIXguaXNaZXJvKCkpO3ZhciBQPXRoaXMsVj14LmNsb25lKCk7UD0wIT09UC5uZWdhdGl2ZT9QLnVtb2QoeCk6UC5jbG9uZSgpO2Zv''@;'; put 'put ''cih2YXIgVD1uZXcgTigxKSxTPW5ldyBOKDApLEY9bmV3IE4oMCkseWU9bmV3IE4oMSksQ2U9MDtQLmlzRXZlbigpJiZWLmlzRXZlbigpOylQLml1c2hybigxKSxWLml1c2hybigxKSwrK0NlO2Zvcih2YXIgRGU9Vi5jbG9uZSgpLFBlPVAuY2xvbmUoKTshUC5pc1plcm8oKTspe2Zvcih2YXIg''@;'; put 'put ''UWU9MCwkZT0xOzA9PShQLndvcmRzWzBdJiRlKSYmUWU8MjY7KytRZSwkZTw8PTEpO2lmKFFlPjApZm9yKFAuaXVzaHJuKFFlKTtRZS0tID4wOykoVC5pc09kZCgpfHxTLmlzT2RkKCkpJiYoVC5pYWRkKERlKSxTLmlzdWIoUGUpKSxULml1c2hybigxKSxTLml1c2hybigxKTtmb3IodmFyIGd0''@;'; put 'put ''PTAsd3Q9MTswPT0oVi53b3Jkc1swXSZ3dCkmJmd0PDI2OysrZ3Qsd3Q8PD0xKTtpZihndD4wKWZvcihWLml1c2hybihndCk7Z3QtLSA+MDspKEYuaXNPZGQoKXx8eWUuaXNPZGQoKSkmJihGLmlhZGQoRGUpLHllLmlzdWIoUGUpKSxGLml1c2hybigxKSx5ZS5pdXNocm4oMSk7UC5jbXAoVik+''@;'; put 'put ''PTA/KFAuaXN1YihWKSxULmlzdWIoRiksUy5pc3ViKHllKSk6KFYuaXN1YihQKSxGLmlzdWIoVCkseWUuaXN1YihTKSl9cmV0dXJue2E6RixiOnllLGdjZDpWLml1c2hsbihDZSl9fSxOLnByb3RvdHlwZS5faW52bXA9ZnVuY3Rpb24oeCl7WSgwPT09eC5uZWdhdGl2ZSksWSgheC5pc1plcm8o''@;'; put 'put ''KSk7dmFyIFA9dGhpcyxWPXguY2xvbmUoKTtQPTAhPT1QLm5lZ2F0aXZlP1AudW1vZCh4KTpQLmNsb25lKCk7Zm9yKHZhciBULFM9bmV3IE4oMSksRj1uZXcgTigwKSx5ZT1WLmNsb25lKCk7UC5jbXBuKDEpPjAmJlYuY21wbigxKT4wOyl7Zm9yKHZhciBDZT0wLERlPTE7MD09KFAud29yZHNb''@;'; put 'put ''MF0mRGUpJiZDZTwyNjsrK0NlLERlPDw9MSk7aWYoQ2U+MClmb3IoUC5pdXNocm4oQ2UpO0NlLS0gPjA7KVMuaXNPZGQoKSYmUy5pYWRkKHllKSxTLml1c2hybigxKTtmb3IodmFyIFBlPTAsUWU9MTswPT0oVi53b3Jkc1swXSZRZSkmJlBlPDI2OysrUGUsUWU8PD0xKTtpZihQZT4wKWZvcihW''@;'; put 'put ''Lml1c2hybihQZSk7UGUtLSA+MDspRi5pc09kZCgpJiZGLmlhZGQoeWUpLEYuaXVzaHJuKDEpO1AuY21wKFYpPj0wPyhQLmlzdWIoViksUy5pc3ViKEYpKTooVi5pc3ViKFApLEYuaXN1YihTKSl9cmV0dXJuKFQ9MD09PVAuY21wbigxKT9TOkYpLmNtcG4oMCk8MCYmVC5pYWRkKHgpLFR9LE4u''@;'; put 'put ''cHJvdG90eXBlLmdjZD1mdW5jdGlvbih4KXtpZih0aGlzLmlzWmVybygpKXJldHVybiB4LmFicygpO2lmKHguaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIFA9dGhpcy5jbG9uZSgpLFY9eC5jbG9uZSgpO1AubmVnYXRpdmU9MCxWLm5lZ2F0aXZlPTA7Zm9yKHZhciBUPTA7UC5pc0V2''@;'; put 'put ''ZW4oKSYmVi5pc0V2ZW4oKTtUKyspUC5pdXNocm4oMSksVi5pdXNocm4oMSk7Zm9yKDs7KXtmb3IoO1AuaXNFdmVuKCk7KVAuaXVzaHJuKDEpO2Zvcig7Vi5pc0V2ZW4oKTspVi5pdXNocm4oMSk7dmFyIFM9UC5jbXAoVik7aWYoUzwwKXt2YXIgRj1QO1A9VixWPUZ9ZWxzZSBpZigwPT09U3x8''@;'; put 'put ''MD09PVYuY21wbigxKSlicmVhaztQLmlzdWIoVil9cmV0dXJuIFYuaXVzaGxuKFQpfSxOLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmVnY2QoeCkuYS51bW9kKHgpfSxOLnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24oKXtyZXR1cm4gMD09KDEmdGhpcy53b3Jkc1sw''@;'; put 'put ''XSl9LE4ucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PSgxJnRoaXMud29yZHNbMF0pfSxOLnByb3RvdHlwZS5hbmRsbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy53b3Jkc1swXSZ4fSxOLnByb3RvdHlwZS5iaW5jbj1mdW5jdGlvbih4KXtZKCJudW1iZXIiPT10eXBlb2Yg''@;'; put 'put ''eCk7dmFyIFA9eCUyNixWPSh4LVApLzI2LFQ9MTw8UDtpZih0aGlzLmxlbmd0aDw9VilyZXR1cm4gdGhpcy5fZXhwYW5kKFYrMSksdGhpcy53b3Jkc1tWXXw9VCx0aGlzO2Zvcih2YXIgUz1ULEY9VjswIT09UyYmRjx0aGlzLmxlbmd0aDtGKyspe3ZhciB5ZT0wfHRoaXMud29yZHNbRl07Uz0o''@;'; put 'put ''eWUrPVMpPj4+MjYsdGhpcy53b3Jkc1tGXT15ZSY9NjcxMDg4NjN9cmV0dXJuIDAhPT1TJiYodGhpcy53b3Jkc1tGXT1TLHRoaXMubGVuZ3RoKyspLHRoaXN9LE4ucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdfSxO''@;'; put 'put ''LnByb3RvdHlwZS5jbXBuPWZ1bmN0aW9uKHgpe3ZhciBQLFY9eDwwO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYhVilyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmVilyZXR1cm4gMTtpZih0aGlzLnN0cmlwKCksdGhpcy5sZW5ndGg+MSlQPTE7ZWxzZXtWJiYoeD0teCksWSh4PD02NzEw''@;'; put 'put ''ODg2MywiTnVtYmVyIGlzIHRvbyBiaWciKTt2YXIgVD0wfHRoaXMud29yZHNbMF07UD1UPT09eD8wOlQ8eD8tMToxfXJldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1QOlB9LE4ucHJvdG90eXBlLmNtcD1mdW5jdGlvbih4KXtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PXgubmVnYXRpdmUp''@;'; put 'put ''cmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT14Lm5lZ2F0aXZlKXJldHVybiAxO3ZhciBQPXRoaXMudWNtcCh4KTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtUDpQfSxOLnByb3RvdHlwZS51Y21wPWZ1bmN0aW9uKHgpe2lmKHRoaXMubGVuZ3RoPngubGVuZ3RoKXJldHVy''@;'; put 'put ''biAxO2lmKHRoaXMubGVuZ3RoPHgubGVuZ3RoKXJldHVybi0xO2Zvcih2YXIgUD0wLFY9dGhpcy5sZW5ndGgtMTtWPj0wO1YtLSl7dmFyIFQ9MHx0aGlzLndvcmRzW1ZdLFM9MHx4LndvcmRzW1ZdO2lmKFQhPT1TKXtUPFM/UD0tMTpUPlMmJihQPTEpO2JyZWFrfX1yZXR1cm4gUH0sTi5wcm90''@;'; put 'put ''b3R5cGUuZ3RuPWZ1bmN0aW9uKHgpe3JldHVybiAxPT09dGhpcy5jbXBuKHgpfSxOLnByb3RvdHlwZS5ndD1mdW5jdGlvbih4KXtyZXR1cm4gMT09PXRoaXMuY21wKHgpfSxOLnByb3RvdHlwZS5ndGVuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNtcG4oeCk+PTB9LE4ucHJvdG90eXBlLmd0''@;'; put 'put ''ZT1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbXAoeCk+PTB9LE4ucHJvdG90eXBlLmx0bj1mdW5jdGlvbih4KXtyZXR1cm4tMT09PXRoaXMuY21wbih4KX0sTi5wcm90b3R5cGUubHQ9ZnVuY3Rpb24oeCl7cmV0dXJuLTE9PT10aGlzLmNtcCh4KX0sTi5wcm90b3R5cGUubHRlbj1mdW5jdGlv''@;'; put 'put ''bih4KXtyZXR1cm4gdGhpcy5jbXBuKHgpPD0wfSxOLnByb3RvdHlwZS5sdGU9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wKHgpPD0wfSxOLnByb3RvdHlwZS5lcW49ZnVuY3Rpb24oeCl7cmV0dXJuIDA9PT10aGlzLmNtcG4oeCl9LE4ucHJvdG90eXBlLmVxPWZ1bmN0aW9uKHgpe3JldHVy''@;'; put 'put ''biAwPT09dGhpcy5jbXAoeCl9LE4ucmVkPWZ1bmN0aW9uKHgpe3JldHVybiBuZXcgZWUoeCl9LE4ucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKHgpe3JldHVybiBZKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLFkoMD09PXRoaXMubmVnYXRpdmUs''@;'; put 'put ''InJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIikseC5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKHgpfSxOLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRl''@;'; put 'put ''eHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sTi5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnJlZD14LHRoaXN9LE4ucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKHgpe3JldHVybiBZKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiBy''@;'; put 'put ''ZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKHgpfSxOLnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkSUFk''@;'; put 'put ''ZD1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0''@;'; put 'put ''aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyx4KX0sTi5wcm90b3R5cGUucmVk''@;'; put 'put ''U2hsPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0''@;'; put 'put ''aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMseCksdGhpcy5yZWQubXVsKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVy''@;'; put 'put ''aWZ5Mih0aGlzLHgpLHRoaXMucmVkLmltdWwodGhpcyx4KX0sTi5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9''@;'; put 'put ''LE4ucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxOLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIFkodGhpcy5yZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sTi5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWRJbnZtIHdvcmtz''@;'; put 'put ''IG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LE4ucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQu''@;'; put 'put ''X3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxOLnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQmJiF4LnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyx4KX07dmFyIEll''@;'; put 'put ''PXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gVGUoeCxQKXt0aGlzLm5hbWU9eCx0aGlzLnA9bmV3IE4oUCwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IE4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRo''@;'; put 'put ''aXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIE1lKCl7VGUuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBoZSgpe1RlLmNhbGwodGhpcywicDIyNCIsImZm''@;'; put 'put ''ZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gTygpe1RlLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9ZnVuY3Rpb24geigp''@;'; put 'put ''e1RlLmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gZWUoeCl7aWYoInN0cmluZyI9PXR5cGVvZiB4KXt2YXIgUD1OLl9wcmltZSh4KTt0aGlzLm09UC5wLHRoaXMu''@;'; put 'put ''cHJpbWU9UH1lbHNlIFkoeC5ndG4oMSksIm1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSIpLHRoaXMubT14LHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiBuZSh4KXtlZS5jYWxsKHRoaXMseCksdGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9MCYmKHRo''@;'; put 'put ''aXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjYpLHRoaXMucj1uZXcgTigxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9dGhpcy5yLl9pbnZtcCh0aGlzLm0pLHRoaXMubWludj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4o''@;'; put 'put ''MSkuZGl2KHRoaXMubSksdGhpcy5taW52PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX1UZS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciB4PW5ldyBOKG51bGwpO3JldHVybiB4LndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhp''@;'; put 'put ''cy5uLzEzKSkseH0sVGUucHJvdG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oeCl7dmFyIFAsVj14O2Rve3RoaXMuc3BsaXQoVix0aGlzLnRtcCksUD0oVj0oVj10aGlzLmltdWxLKFYpKS5pYWRkKHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUoUD50aGlzLm4pO3ZhciBUPVA8dGhpcy5uPy0x''@;'; put 'put ''OlYudWNtcCh0aGlzLnApO3JldHVybiAwPT09VD8oVi53b3Jkc1swXT0wLFYubGVuZ3RoPTEpOlQ+MD9WLmlzdWIodGhpcy5wKTp2b2lkIDAhPT1WLnN0cmlwP1Yuc3RyaXAoKTpWLl9zdHJpcCgpLFZ9LFRlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih4LFApe3guaXVzaHJuKHRoaXMubiww''@;'; put 'put ''LFApfSxUZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oeCl7cmV0dXJuIHguaW11bCh0aGlzLmspfSxXKE1lLFRlKSxNZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oeCxQKXtmb3IodmFyIFY9NDE5NDMwMyxUPU1hdGgubWluKHgubGVuZ3RoLDkpLFM9MDtTPFQ7UysrKVAud29yZHNbU109''@;'; put 'put ''eC53b3Jkc1tTXTtpZihQLmxlbmd0aD1ULHgubGVuZ3RoPD05KXJldHVybiB4LndvcmRzWzBdPTAsdm9pZCh4Lmxlbmd0aD0xKTt2YXIgRj14LndvcmRzWzldO2ZvcihQLndvcmRzW1AubGVuZ3RoKytdPUYmVixTPTEwO1M8eC5sZW5ndGg7UysrKXt2YXIgeWU9MHx4LndvcmRzW1NdO3gud29y''@;'; put 'put ''ZHNbUy0xMF09KHllJlYpPDw0fEY+Pj4yMixGPXllfXgud29yZHNbUy0xMF09Rj4+Pj0yMix4Lmxlbmd0aC09MD09PUYmJngubGVuZ3RoPjEwPzEwOjl9LE1lLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih4KXt4LndvcmRzW3gubGVuZ3RoXT0wLHgud29yZHNbeC5sZW5ndGgrMV09MCx4Lmxl''@;'; put 'put ''bmd0aCs9Mjtmb3IodmFyIFA9MCxWPTA7Vjx4Lmxlbmd0aDtWKyspe3ZhciBUPTB8eC53b3Jkc1tWXTt4LndvcmRzW1ZdPTY3MTA4ODYzJihQKz05NzcqVCksUD02NCpUKyhQLzY3MTA4ODY0fDApfXJldHVybiAwPT09eC53b3Jkc1t4Lmxlbmd0aC0xXSYmKHgubGVuZ3RoLS0sMD09PXgud29y''@;'; put 'put ''ZHNbeC5sZW5ndGgtMV0mJngubGVuZ3RoLS0pLHh9LFcoaGUsVGUpLFcoTyxUZSksVyh6LFRlKSx6LnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih4KXtmb3IodmFyIFA9MCxWPTA7Vjx4Lmxlbmd0aDtWKyspe3ZhciBUPTE5KigwfHgud29yZHNbVl0pK1AsUz02NzEwODg2MyZUO1Q+Pj49MjYs''@;'; put 'put ''eC53b3Jkc1tWXT1TLFA9VH1yZXR1cm4gMCE9PVAmJih4LndvcmRzW3gubGVuZ3RoKytdPVApLHh9LE4uX3ByaW1lPWZ1bmN0aW9uKHgpe2lmKEllW3hdKXJldHVybiBJZVt4XTt2YXIgUDtpZigiazI1NiI9PT14KVA9bmV3IE1lO2Vsc2UgaWYoInAyMjQiPT09eClQPW5ldyBoZTtlbHNlIGlm''@;'; put 'put ''KCJwMTkyIj09PXgpUD1uZXcgTztlbHNle2lmKCJwMjU1MTkiIT09eCl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJpbWUgIit4KTtQPW5ldyB6fXJldHVybiBJZVt4XT1QLFB9LGVlLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbih4KXtZKDA9PT14Lm5lZ2F0aXZlLCJyZWQgd29ya3Mg''@;'; put 'put ''b25seSB3aXRoIHBvc2l0aXZlcyIpLFkoeC5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sZWUucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKHgsUCl7WSgwPT0oeC5uZWdhdGl2ZXxQLm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxZ''@;'; put 'put ''KHgucmVkJiZ4LnJlZD09PVAucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LGVlLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZSh4KS5fZm9yY2VSZWQodGhpcyk6eC51bW9kKHRoaXMubSkuX2ZvcmNl''@;'; put 'put ''UmVkKHRoaXMpfSxlZS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKHgpe3JldHVybiB4LmlzWmVybygpP3guY2xvbmUoKTp0aGlzLm0uc3ViKHgpLl9mb3JjZVJlZCh0aGlzKX0sZWUucHJvdG90eXBlLmFkZD1mdW5jdGlvbih4LFApe3RoaXMuX3ZlcmlmeTIoeCxQKTt2YXIgVj14LmFkZChQKTty''@;'; put 'put ''ZXR1cm4gVi5jbXAodGhpcy5tKT49MCYmVi5pc3ViKHRoaXMubSksVi5fZm9yY2VSZWQodGhpcyl9LGVlLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKHgsUCl7dGhpcy5fdmVyaWZ5Mih4LFApO3ZhciBWPXguaWFkZChQKTtyZXR1cm4gVi5jbXAodGhpcy5tKT49MCYmVi5pc3ViKHRoaXMubSks''@;'; put 'put ''Vn0sZWUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbih4LFApe3RoaXMuX3ZlcmlmeTIoeCxQKTt2YXIgVj14LnN1YihQKTtyZXR1cm4gVi5jbXBuKDApPDAmJlYuaWFkZCh0aGlzLm0pLFYuX2ZvcmNlUmVkKHRoaXMpfSxlZS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbih4LFApe3RoaXMuX3Zlcmlm''@;'; put 'put ''eTIoeCxQKTt2YXIgVj14LmlzdWIoUCk7cmV0dXJuIFYuY21wbigwKTwwJiZWLmlhZGQodGhpcy5tKSxWfSxlZS5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHRoaXMuX3ZlcmlmeTEoeCksdGhpcy5pbW9kKHgudXNobG4oUCkpfSxlZS5wcm90b3R5cGUuaW11bD1mdW5jdGlv''@;'; put 'put ''bih4LFApe3JldHVybiB0aGlzLl92ZXJpZnkyKHgsUCksdGhpcy5pbW9kKHguaW11bChQKSl9LGVlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gdGhpcy5fdmVyaWZ5Mih4LFApLHRoaXMuaW1vZCh4Lm11bChQKSl9LGVlLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKHgpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmltdWwoeCx4LmNsb25lKCkpfSxlZS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLm11bCh4LHgpfSxlZS5wcm90b3R5cGUuc3FydD1mdW5jdGlvbih4KXtpZih4LmlzWmVybygpKXJldHVybiB4LmNsb25lKCk7dmFyIFA9dGhpcy5tLmFuZGxuKDMpO2lm''@;'; put 'put ''KFkoUCUyPT0xKSwzPT09UCl7dmFyIFY9dGhpcy5tLmFkZChuZXcgTigxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyh4LFYpfWZvcih2YXIgVD10aGlzLm0uc3VibigxKSxTPTA7IVQuaXNaZXJvKCkmJjA9PT1ULmFuZGxuKDEpOylTKyssVC5pdXNocm4oMSk7WSghVC5pc1plcm8oKSk7''@;'; put 'put ''dmFyIEY9bmV3IE4oMSkudG9SZWQodGhpcykseWU9Ri5yZWROZWcoKSxDZT10aGlzLm0uc3VibigxKS5pdXNocm4oMSksRGU9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihEZT1uZXcgTigyKkRlKkRlKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3coRGUsQ2UpLmNtcCh5ZSk7KURlLnJlZElBZGQo''@;'; put 'put ''eWUpO2Zvcih2YXIgUGU9dGhpcy5wb3coRGUsVCksUWU9dGhpcy5wb3coeCxULmFkZG4oMSkuaXVzaHJuKDEpKSwkZT10aGlzLnBvdyh4LFQpLGd0PVM7MCE9PSRlLmNtcChGKTspe2Zvcih2YXIgd3Q9JGUsbXQ9MDswIT09d3QuY21wKEYpO210Kyspd3Q9d3QucmVkU3FyKCk7WShtdDxndCk7''@;'; put 'put ''dmFyIHZ0PXRoaXMucG93KFBlLG5ldyBOKDEpLml1c2hsbihndC1tdC0xKSk7UWU9UWUucmVkTXVsKHZ0KSxQZT12dC5yZWRTcXIoKSwkZT0kZS5yZWRNdWwoUGUpLGd0PW10fXJldHVybiBRZX0sZWUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oeCl7dmFyIFA9eC5faW52bXAodGhpcy5tKTty''@;'; put 'put ''ZXR1cm4gMCE9PVAubmVnYXRpdmU/KFAubmVnYXRpdmU9MCx0aGlzLmltb2QoUCkucmVkTmVnKCkpOnRoaXMuaW1vZChQKX0sZWUucHJvdG90eXBlLnBvdz1mdW5jdGlvbih4LFApe2lmKFAuaXNaZXJvKCkpcmV0dXJuIG5ldyBOKDEpLnRvUmVkKHRoaXMpO2lmKDA9PT1QLmNtcG4oMSkpcmV0''@;'; put 'put ''dXJuIHguY2xvbmUoKTt2YXIgVj1uZXcgQXJyYXkoMTYpO1ZbMF09bmV3IE4oMSkudG9SZWQodGhpcyksVlsxXT14O2Zvcih2YXIgVD0yO1Q8Vi5sZW5ndGg7VCsrKVZbVF09dGhpcy5tdWwoVltULTFdLHgpO3ZhciBTPVZbMF0sRj0wLHllPTAsQ2U9UC5iaXRMZW5ndGgoKSUyNjtmb3IoMD09''@;'; put 'put ''PUNlJiYoQ2U9MjYpLFQ9UC5sZW5ndGgtMTtUPj0wO1QtLSl7Zm9yKHZhciBEZT1QLndvcmRzW1RdLFBlPUNlLTE7UGU+PTA7UGUtLSl7dmFyIFFlPURlPj5QZSYxO1MhPT1WWzBdJiYoUz10aGlzLnNxcihTKSksMCE9PVFlfHwwIT09Rj8oRjw8PTEsRnw9UWUsKDQ9PSsreWV8fDA9PT1UJiYw''@;'; put 'put ''PT09UGUpJiYoUz10aGlzLm11bChTLFZbRl0pLHllPTAsRj0wKSk6eWU9MH1DZT0yNn1yZXR1cm4gU30sZWUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbih4KXt2YXIgUD14LnVtb2QodGhpcy5tKTtyZXR1cm4gUD09PXg/UC5jbG9uZSgpOlB9LGVlLnByb3RvdHlwZS5jb252ZXJ0RnJv''@;'; put 'put ''bT1mdW5jdGlvbih4KXt2YXIgUD14LmNsb25lKCk7cmV0dXJuIFAucmVkPW51bGwsUH0sTi5tb250PWZ1bmN0aW9uKHgpe3JldHVybiBuZXcgbmUoeCl9LFcobmUsZWUpLG5lLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuaW1vZCh4LnVzaGxuKHRoaXMuc2hp''@;'; put 'put ''ZnQpKX0sbmUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKHgpe3ZhciBQPXRoaXMuaW1vZCh4Lm11bCh0aGlzLnJpbnYpKTtyZXR1cm4gUC5yZWQ9bnVsbCxQfSxuZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih4LFApe2lmKHguaXNaZXJvKCl8fFAuaXNaZXJvKCkpcmV0dXJuIHgu''@;'; put 'put ''d29yZHNbMF09MCx4Lmxlbmd0aD0xLHg7dmFyIFY9eC5pbXVsKFApLFQ9Vi5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksUz1WLmlzdWIoVCkuaXVzaHJuKHRoaXMuc2hpZnQpLEY9UztyZXR1cm4gUy5jbXAodGhpcy5tKT49''@;'; put 'put ''MD9GPVMuaXN1Yih0aGlzLm0pOlMuY21wbigwKTwwJiYoRj1TLmlhZGQodGhpcy5tKSksRi5fZm9yY2VSZWQodGhpcyl9LG5lLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oeCxQKXtpZih4LmlzWmVybygpfHxQLmlzWmVybygpKXJldHVybiBuZXcgTigwKS5fZm9yY2VSZWQodGhpcyk7dmFyIFY9''@;'; put 'put ''eC5tdWwoUCksVD1WLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxTPVYuaXN1YihUKS5pdXNocm4odGhpcy5zaGlmdCksRj1TO3JldHVybiBTLmNtcCh0aGlzLm0pPj0wP0Y9Uy5pc3ViKHRoaXMubSk6Uy5jbXBuKDApPDAm''@;'; put 'put ''JihGPVMuaWFkZCh0aGlzLm0pKSxGLl9mb3JjZVJlZCh0aGlzKX0sbmUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuaW1vZCh4Ll9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oVT1qLm5tZChVKSx0aGlzKX0sOTc0NjpVPT57ZnVu''@;'; put 'put ''Y3Rpb24gUShqLHJlKXtpZighail0aHJvdyBuZXcgRXJyb3IocmV8fCJBc3NlcnRpb24gZmFpbGVkIil9VS5leHBvcnRzPVEsUS5lcXVhbD1mdW5jdGlvbihqLHJlLGFlKXtpZihqIT1yZSl0aHJvdyBuZXcgRXJyb3IoYWV8fCJBc3NlcnRpb24gZmFpbGVkOiAiK2orIiAhPSAiK3JlKX19LDQ1''@;'; put 'put ''MDQ6KFUsUSk9PnsidXNlIHN0cmljdCI7dmFyIGo9UTtmdW5jdGlvbiByZShZKXtyZXR1cm4gMT09PVkubGVuZ3RoPyIwIitZOll9ZnVuY3Rpb24gYWUoWSl7Zm9yKHZhciBXPSIiLE49MDtOPFkubGVuZ3RoO04rKylXKz1yZShZW05dLnRvU3RyaW5nKDE2KSk7cmV0dXJuIFd9ai50b0FycmF5''@;'; put 'put ''PWZ1bmN0aW9uKFksVyl7aWYoQXJyYXkuaXNBcnJheShZKSlyZXR1cm4gWS5zbGljZSgpO2lmKCFZKXJldHVybltdO3ZhciBOPVtdO2lmKCJzdHJpbmciIT10eXBlb2YgWSl7Zm9yKHZhciB0ZT0wO3RlPFkubGVuZ3RoO3RlKyspTlt0ZV09MHxZW3RlXTtyZXR1cm4gTn1pZigiaGV4Ij09PVcp''@;'; put 'put ''Zm9yKChZPVkucmVwbGFjZSgvW15hLXowLTldKy9naSwiIikpLmxlbmd0aCUyIT0wJiYoWT0iMCIrWSksdGU9MDt0ZTxZLmxlbmd0aDt0ZSs9MilOLnB1c2gocGFyc2VJbnQoWVt0ZV0rWVt0ZSsxXSwxNikpO2Vsc2UgZm9yKHRlPTA7dGU8WS5sZW5ndGg7dGUrKyl7dmFyIEs9WS5jaGFyQ29k''@;'; put 'put ''ZUF0KHRlKSxKPUs+Pjgsc2U9MjU1Jks7Sj9OLnB1c2goSixzZSk6Ti5wdXNoKHNlKX1yZXR1cm4gTn0sai56ZXJvMj1yZSxqLnRvSGV4PWFlLGouZW5jb2RlPWZ1bmN0aW9uKFksVyl7cmV0dXJuImhleCI9PT1XP2FlKFkpOll9fSwxMTcxOihVLFEsaik9Pnt2YXIgcmU9aig1MTA4KTtVLmV4''@;'; put 'put ''cG9ydHM9Y2UsY2UuTWluaW1hdGNoPWRlO3ZhciBhZT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gaigyNTIwKX1jYXRjaChTZSl7fX0oKXx8e3NlcDoiLyJ9O2NlLnNlcD1hZS5zZXA7dmFyIFk9Y2UuR0xPQlNUQVI9ZGUuR0xPQlNUQVI9e30sVz1qKDM2NDQpLE49eyIhIjp7b3BlbjoiKD86KD8h''@;'; put 'put ''KD86IixjbG9zZToiKSlbXi9dKj8pIn0sIj8iOntvcGVuOiIoPzoiLGNsb3NlOiIpPyJ9LCIrIjp7b3BlbjoiKD86IixjbG9zZToiKSsifSwiKiI6e29wZW46Iig/OiIsY2xvc2U6IikqIn0sIkAiOntvcGVuOiIoPzoiLGNsb3NlOiIpIn19LEs9IlteL10qPyIsSj0iKCkuKnt9Kz9bXV4kXFwh''@;'; put 'put ''Ii5zcGxpdCgiIikucmVkdWNlKGZ1bmN0aW9uKFNlLEllKXtyZXR1cm4gU2VbSWVdPSEwLFNlfSx7fSksc2U9L1wvKy87ZnVuY3Rpb24gb2UoU2UsSWUpe0llPUllfHx7fTt2YXIgVGU9e307cmV0dXJuIE9iamVjdC5rZXlzKFNlKS5mb3JFYWNoKGZ1bmN0aW9uKE1lKXtUZVtNZV09U2VbTWVd''@;'; put 'put ''fSksT2JqZWN0LmtleXMoSWUpLmZvckVhY2goZnVuY3Rpb24oTWUpe1RlW01lXT1JZVtNZV19KSxUZX1mdW5jdGlvbiBjZShTZSxJZSxUZSl7cmV0dXJuIEFlKEllKSxUZXx8KFRlPXt9KSwhKCFUZS5ub2NvbW1lbnQmJiIjIj09PUllLmNoYXJBdCgwKSkmJm5ldyBkZShJZSxUZSkubWF0Y2go''@;'; put 'put ''U2UpfWZ1bmN0aW9uIGRlKFNlLEllKXtpZighKHRoaXMgaW5zdGFuY2VvZiBkZSkpcmV0dXJuIG5ldyBkZShTZSxJZSk7QWUoU2UpLEllfHwoSWU9e30pLFNlPVNlLnRyaW0oKSxJZS5hbGxvd1dpbmRvd3NFc2NhcGV8fCIvIj09PWFlLnNlcHx8KFNlPVNlLnNwbGl0KGFlLnNlcCkuam9pbigi''@;'; put 'put ''LyIpKSx0aGlzLm9wdGlvbnM9SWUsdGhpcy5zZXQ9W10sdGhpcy5wYXR0ZXJuPVNlLHRoaXMucmVnZXhwPW51bGwsdGhpcy5uZWdhdGU9ITEsdGhpcy5jb21tZW50PSExLHRoaXMuZW1wdHk9ITEsdGhpcy5wYXJ0aWFsPSEhSWUucGFydGlhbCx0aGlzLm1ha2UoKX1mdW5jdGlvbiB2ZShTZSxJ''@;'; put 'put ''ZSl7cmV0dXJuIEllfHwoSWU9dGhpcyBpbnN0YW5jZW9mIGRlP3RoaXMub3B0aW9uczp7fSksQWUoU2U9dm9pZCAwPT09U2U/dGhpcy5wYXR0ZXJuOlNlKSxJZS5ub2JyYWNlfHwhL1x7KD86KD8hXHspLikqXH0vLnRlc3QoU2UpP1tTZV06VyhTZSl9Y2UuZmlsdGVyPWZ1bmN0aW9uKFNlLEll''@;'; put 'put ''KXtyZXR1cm4gSWU9SWV8fHt9LGZ1bmN0aW9uKFRlLE1lLGhlKXtyZXR1cm4gY2UoVGUsU2UsSWUpfX0sY2UuZGVmYXVsdHM9ZnVuY3Rpb24oU2Upe2lmKCFTZXx8Im9iamVjdCIhPXR5cGVvZiBTZXx8IU9iamVjdC5rZXlzKFNlKS5sZW5ndGgpcmV0dXJuIGNlO3ZhciBJZT1jZSxUZT1mdW5j''@;'; put 'put ''dGlvbihNZSxoZSxPKXtyZXR1cm4gSWUoTWUsaGUsb2UoU2UsTykpfTtyZXR1cm4oVGUuTWluaW1hdGNoPWZ1bmN0aW9uKE1lLGhlKXtyZXR1cm4gbmV3IEllLk1pbmltYXRjaChNZSxvZShTZSxoZSkpfSkuZGVmYXVsdHM9ZnVuY3Rpb24oTWUpe3JldHVybiBJZS5kZWZhdWx0cyhvZShTZSxN''@;'; put 'put ''ZSkpLk1pbmltYXRjaH0sVGUuZmlsdGVyPWZ1bmN0aW9uKE1lLGhlKXtyZXR1cm4gSWUuZmlsdGVyKE1lLG9lKFNlLGhlKSl9LFRlLmRlZmF1bHRzPWZ1bmN0aW9uKE1lKXtyZXR1cm4gSWUuZGVmYXVsdHMob2UoU2UsTWUpKX0sVGUubWFrZVJlPWZ1bmN0aW9uKE1lLGhlKXtyZXR1cm4gSWUu''@;'; put 'put ''bWFrZVJlKE1lLG9lKFNlLGhlKSl9LFRlLmJyYWNlRXhwYW5kPWZ1bmN0aW9uKE1lLGhlKXtyZXR1cm4gSWUuYnJhY2VFeHBhbmQoTWUsb2UoU2UsaGUpKX0sVGUubWF0Y2g9ZnVuY3Rpb24oTWUsaGUsTyl7cmV0dXJuIEllLm1hdGNoKE1lLGhlLG9lKFNlLE8pKX0sVGV9LGRlLmRlZmF1bHRz''@;'; put 'put ''PWZ1bmN0aW9uKFNlKXtyZXR1cm4gY2UuZGVmYXVsdHMoU2UpLk1pbmltYXRjaH0sZGUucHJvdG90eXBlLmRlYnVnPWZ1bmN0aW9uKCl7fSxkZS5wcm90b3R5cGUubWFrZT1mdW5jdGlvbigpe3ZhciBTZT10aGlzLnBhdHRlcm4sSWU9dGhpcy5vcHRpb25zO2lmKEllLm5vY29tbWVudHx8IiMi''@;'; put 'put ''IT09U2UuY2hhckF0KDApKWlmKFNlKXt0aGlzLnBhcnNlTmVnYXRlKCk7dmFyIFRlPXRoaXMuZ2xvYlNldD10aGlzLmJyYWNlRXhwYW5kKCk7SWUuZGVidWcmJih0aGlzLmRlYnVnPWZ1bmN0aW9uKCl7cmUuZXJyb3IuYXBwbHkocmUsYXJndW1lbnRzKX0pLHRoaXMuZGVidWcodGhpcy5wYXR0''@;'; put 'put ''ZXJuLFRlKSxUZT10aGlzLmdsb2JQYXJ0cz1UZS5tYXAoZnVuY3Rpb24oTWUpe3JldHVybiBNZS5zcGxpdChzZSl9KSx0aGlzLmRlYnVnKHRoaXMucGF0dGVybixUZSksVGU9VGUubWFwKGZ1bmN0aW9uKE1lLGhlLE8pe3JldHVybiBNZS5tYXAodGhpcy5wYXJzZSx0aGlzKX0sdGhpcyksdGhp''@;'; put 'put ''cy5kZWJ1Zyh0aGlzLnBhdHRlcm4sVGUpLFRlPVRlLmZpbHRlcihmdW5jdGlvbihNZSl7cmV0dXJuLTE9PT1NZS5pbmRleE9mKCExKX0pLHRoaXMuZGVidWcodGhpcy5wYXR0ZXJuLFRlKSx0aGlzLnNldD1UZX1lbHNlIHRoaXMuZW1wdHk9ITA7ZWxzZSB0aGlzLmNvbW1lbnQ9ITB9LGRlLnBy''@;'; put 'put ''b3RvdHlwZS5wYXJzZU5lZ2F0ZT1mdW5jdGlvbigpe3ZhciBTZT10aGlzLnBhdHRlcm4sSWU9ITEsTWU9MDtpZighdGhpcy5vcHRpb25zLm5vbmVnYXRlKXtmb3IodmFyIGhlPTAsTz1TZS5sZW5ndGg7aGU8TyYmIiEiPT09U2UuY2hhckF0KGhlKTtoZSsrKUllPSFJZSxNZSsrO01lJiYodGhp''@;'; put 'put ''cy5wYXR0ZXJuPVNlLnN1YnN0cihNZSkpLHRoaXMubmVnYXRlPUllfX0sY2UuYnJhY2VFeHBhbmQ9ZnVuY3Rpb24oU2UsSWUpe3JldHVybiB2ZShTZSxJZSl9LGRlLnByb3RvdHlwZS5icmFjZUV4cGFuZD12ZTt2YXIgQWU9ZnVuY3Rpb24oU2Upe2lmKCJzdHJpbmciIT10eXBlb2YgU2UpdGhy''@;'; put 'put ''b3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBwYXR0ZXJuIik7aWYoU2UubGVuZ3RoPjY1NTM2KXRocm93IG5ldyBUeXBlRXJyb3IoInBhdHRlcm4gaXMgdG9vIGxvbmciKX07ZGUucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKFNlLEllKXtBZShTZSk7dmFyIFRlPXRoaXMub3B0aW9ucztpZigi''@;'; put 'put ''KioiPT09U2Upe2lmKCFUZS5ub2dsb2JzdGFyKXJldHVybiBZO1NlPSIqIn1pZigiIj09PVNlKXJldHVybiIiO3ZhciBNZSxoZT0iIixPPSEhVGUubm9jYXNlLHo9ITEsZWU9W10sbmU9W10seD0hMSxQPS0xLFY9LTEsVD0iLiI9PT1TZS5jaGFyQXQoMCk/IiI6VGUuZG90PyIoPyEoPzpefFxc''@;'; put 'put ''LylcXC57MSwyfSg/OiR8XFwvKSkiOiIoPyFcXC4pIixTPXRoaXM7ZnVuY3Rpb24gRigpe2lmKE1lKXtzd2l0Y2goTWUpe2Nhc2UiKiI6aGUrPUssTz0hMDticmVhaztjYXNlIj8iOmhlKz0iW14vXSIsTz0hMDticmVhaztkZWZhdWx0OmhlKz0iXFwiK01lfVMuZGVidWcoImNsZWFyU3RhdGVD''@;'; put 'put ''aGFyICVqICVqIixNZSxoZSksTWU9ITF9fWZvcih2YXIgeWUsQ2U9MCxEZT1TZS5sZW5ndGg7Q2U8RGUmJih5ZT1TZS5jaGFyQXQoQ2UpKTtDZSsrKWlmKHRoaXMuZGVidWcoIiVzXHQlcyAlcyAlaiIsU2UsQ2UsaGUseWUpLHomJkpbeWVdKWhlKz0iXFwiK3llLHo9ITE7ZWxzZSBzd2l0Y2go''@;'; put 'put ''eWUpe2Nhc2UiLyI6cmV0dXJuITE7Y2FzZSJcXCI6RigpLHo9ITA7Y29udGludWU7Y2FzZSI/IjpjYXNlIioiOmNhc2UiKyI6Y2FzZSJAIjpjYXNlIiEiOmlmKHRoaXMuZGVidWcoIiVzXHQlcyAlcyAlaiA8LS0gc3RhdGVDaGFyIixTZSxDZSxoZSx5ZSkseCl7dGhpcy5kZWJ1ZygiICBpbiBj''@;'; put 'put ''bGFzcyIpLCIhIj09PXllJiZDZT09PVYrMSYmKHllPSJeIiksaGUrPXllO2NvbnRpbnVlfVMuZGVidWcoImNhbGwgY2xlYXJTdGF0ZUNoYXIgJWoiLE1lKSxGKCksTWU9eWUsVGUubm9leHQmJkYoKTtjb250aW51ZTtjYXNlIigiOmlmKHgpe2hlKz0iKCI7Y29udGludWV9aWYoIU1lKXtoZSs9''@;'; put 'put ''IlxcKCI7Y29udGludWV9ZWUucHVzaCh7dHlwZTpNZSxzdGFydDpDZS0xLHJlU3RhcnQ6aGUubGVuZ3RoLG9wZW46TltNZV0ub3BlbixjbG9zZTpOW01lXS5jbG9zZX0pLHRoaXMuZGVidWcoInBsVHlwZSAlaiAlaiIsTWUsaGUrPSIhIj09PU1lPyIoPzooPyEoPzoiOiIoPzoiKSxNZT0hMTtj''@;'; put 'put ''b250aW51ZTtjYXNlIikiOmlmKHh8fCFlZS5sZW5ndGgpe2hlKz0iXFwpIjtjb250aW51ZX1GKCksTz0hMDt2YXIgUGU9ZWUucG9wKCk7aGUrPVBlLmNsb3NlLCIhIj09PVBlLnR5cGUmJm5lLnB1c2goUGUpLFBlLnJlRW5kPWhlLmxlbmd0aDtjb250aW51ZTtjYXNlInwiOmlmKHh8fCFlZS5s''@;'; put 'put ''ZW5ndGh8fHope2hlKz0iXFx8Iix6PSExO2NvbnRpbnVlfUYoKSxoZSs9InwiO2NvbnRpbnVlO2Nhc2UiWyI6aWYoRigpLHgpe2hlKz0iXFwiK3llO2NvbnRpbnVlfXg9ITAsVj1DZSxQPWhlLmxlbmd0aCxoZSs9eWU7Y29udGludWU7Y2FzZSJdIjppZihDZT09PVYrMXx8IXgpe2hlKz0iXFwi''@;'; put 'put ''K3llLHo9ITE7Y29udGludWV9dmFyIFFlPVNlLnN1YnN0cmluZyhWKzEsQ2UpO3RyeXtSZWdFeHAoIlsiK1FlKyJdIil9Y2F0Y2goZnQpe3ZhciAkZT10aGlzLnBhcnNlKFFlLGtlKTtoZT1oZS5zdWJzdHIoMCxQKSsiXFxbIiskZVswXSsiXFxdIixPPU98fCRlWzFdLHg9ITE7Y29udGludWV9''@;'; put 'put ''Tz0hMCx4PSExLGhlKz15ZTtjb250aW51ZTtkZWZhdWx0OkYoKSx6P3o9ITE6IUpbeWVdfHwiXiI9PT15ZSYmeHx8KGhlKz0iXFwiKSxoZSs9eWV9Zm9yKHgmJihRZT1TZS5zdWJzdHIoVisxKSwkZT10aGlzLnBhcnNlKFFlLGtlKSxoZT1oZS5zdWJzdHIoMCxQKSsiXFxbIiskZVswXSxPPU98''@;'; put 'put ''fCRlWzFdKSxQZT1lZS5wb3AoKTtQZTtQZT1lZS5wb3AoKSl7dmFyIGd0PWhlLnNsaWNlKFBlLnJlU3RhcnQrUGUub3Blbi5sZW5ndGgpO3RoaXMuZGVidWcoInNldHRpbmcgdGFpbCIsaGUsUGUpLGd0PWd0LnJlcGxhY2UoLygoPzpcXHsyfSl7MCw2NH0pKFxcPylcfC9nLGZ1bmN0aW9uKGZ0''@;'; put 'put ''LEh0LEdlKXtyZXR1cm4gR2V8fChHZT0iXFwiKSxIdCtIdCtHZSsifCJ9KSx0aGlzLmRlYnVnKCJ0YWlsPSVqXG4gICAlcyIsZ3QsZ3QsUGUsaGUpO3ZhciB3dD0iKiI9PT1QZS50eXBlP0s6Ij8iPT09UGUudHlwZT8iW14vXSI6IlxcIitQZS50eXBlO089ITAsaGU9aGUuc2xpY2UoMCxQZS5y''@;'; put 'put ''ZVN0YXJ0KSt3dCsiXFwoIitndH1GKCkseiYmKGhlKz0iXFxcXCIpO3ZhciBtdD0hMTtzd2l0Y2goaGUuY2hhckF0KDApKXtjYXNlIlsiOmNhc2UiLiI6Y2FzZSIoIjptdD0hMH1mb3IodmFyIHZ0PW5lLmxlbmd0aC0xO3Z0Pi0xO3Z0LS0pe3ZhciBBdD1uZVt2dF0saHQ9aGUuc2xpY2UoMCxB''@;'; put 'put ''dC5yZVN0YXJ0KSxCdD1oZS5zbGljZShBdC5yZVN0YXJ0LEF0LnJlRW5kLTgpLG9uPWhlLnNsaWNlKEF0LnJlRW5kLTgsQXQucmVFbmQpLF90PWhlLnNsaWNlKEF0LnJlRW5kKTtvbis9X3Q7dmFyIHR0PWh0LnNwbGl0KCIoIikubGVuZ3RoLTEsZXQ9X3Q7Zm9yKENlPTA7Q2U8dHQ7Q2UrKyll''@;'; put 'put ''dD1ldC5yZXBsYWNlKC9cKVsrKj9dPy8sIiIpO3ZhciBsdD0iIjsiIj09PShfdD1ldCkmJkllIT09a2UmJihsdD0iJCIpLGhlPWh0K0J0K190K2x0K29ufWlmKCIiIT09aGUmJk8mJihoZT0iKD89LikiK2hlKSxtdCYmKGhlPVQraGUpLEllPT09a2UpcmV0dXJuW2hlLE9dO2lmKCFPKXJldHVy''@;'; put 'put ''biBTZS5yZXBsYWNlKC9cXCguKS9nLCIkMSIpO3ZhciBMdD1UZS5ub2Nhc2U/ImkiOiIiO3RyeXt2YXIgQ3Q9bmV3IFJlZ0V4cCgiXiIraGUrIiQiLEx0KX1jYXRjaChmdCl7cmV0dXJuIG5ldyBSZWdFeHAoIiQuIil9cmV0dXJuIEN0Ll9nbG9iPVNlLEN0Ll9zcmM9aGUsQ3R9O3ZhciBrZT17''@;'; put 'put ''fTtjZS5tYWtlUmU9ZnVuY3Rpb24oU2UsSWUpe3JldHVybiBuZXcgZGUoU2UsSWV8fHt9KS5tYWtlUmUoKX0sZGUucHJvdG90eXBlLm1ha2VSZT1mdW5jdGlvbigpe2lmKHRoaXMucmVnZXhwfHwhMT09PXRoaXMucmVnZXhwKXJldHVybiB0aGlzLnJlZ2V4cDt2YXIgU2U9dGhpcy5zZXQ7aWYo''@;'; put 'put ''IVNlLmxlbmd0aClyZXR1cm4gdGhpcy5yZWdleHA9ITEsdGhpcy5yZWdleHA7dmFyIEllPXRoaXMub3B0aW9ucyxUZT1JZS5ub2dsb2JzdGFyP0s6SWUuZG90PyIoPzooPyEoPzpcXC98XikoPzpcXC57MSwyfSkoJHxcXC8pKS4pKj8iOiIoPzooPyEoPzpcXC98XilcXC4pLikqPyIsTWU9SWUu''@;'; put 'put ''bm9jYXNlPyJpIjoiIixoZT1TZS5tYXAoZnVuY3Rpb24oTyl7cmV0dXJuIE8ubWFwKGZ1bmN0aW9uKHope3JldHVybiB6PT09WT9UZToic3RyaW5nIj09dHlwZW9mIHo/ei5yZXBsYWNlKC9bLVtcXXt9KCkqKz8uLFxcXiR8I1xzXS9nLCJcXCQmIik6ei5fc3JjfSkuam9pbigiXFwvIil9KS5q''@;'; put 'put ''b2luKCJ8Iik7aGU9Il4oPzoiK2hlKyIpJCIsdGhpcy5uZWdhdGUmJihoZT0iXig/ISIraGUrIikuKiQiKTt0cnl7dGhpcy5yZWdleHA9bmV3IFJlZ0V4cChoZSxNZSl9Y2F0Y2goTyl7dGhpcy5yZWdleHA9ITF9cmV0dXJuIHRoaXMucmVnZXhwfSxjZS5tYXRjaD1mdW5jdGlvbihTZSxJZSxU''@;'; put 'put ''ZSl7dmFyIE1lPW5ldyBkZShJZSxUZT1UZXx8e30pO3JldHVybiBTZT1TZS5maWx0ZXIoZnVuY3Rpb24oaGUpe3JldHVybiBNZS5tYXRjaChoZSl9KSxNZS5vcHRpb25zLm5vbnVsbCYmIVNlLmxlbmd0aCYmU2UucHVzaChJZSksU2V9LGRlLnByb3RvdHlwZS5tYXRjaD1mdW5jdGlvbihTZSxJ''@;'; put 'put ''ZSl7aWYodm9pZCAwPT09SWUmJihJZT10aGlzLnBhcnRpYWwpLHRoaXMuZGVidWcoIm1hdGNoIixTZSx0aGlzLnBhdHRlcm4pLHRoaXMuY29tbWVudClyZXR1cm4hMTtpZih0aGlzLmVtcHR5KXJldHVybiIiPT09U2U7aWYoIi8iPT09U2UmJkllKXJldHVybiEwO3ZhciBUZT10aGlzLm9wdGlv''@;'; put 'put ''bnM7Ii8iIT09YWUuc2VwJiYoU2U9U2Uuc3BsaXQoYWUuc2VwKS5qb2luKCIvIikpLFNlPVNlLnNwbGl0KHNlKSx0aGlzLmRlYnVnKHRoaXMucGF0dGVybiwic3BsaXQiLFNlKTt2YXIgTWUsaGUsTz10aGlzLnNldDtmb3IodGhpcy5kZWJ1Zyh0aGlzLnBhdHRlcm4sInNldCIsTyksaGU9U2Uu''@;'; put 'put ''bGVuZ3RoLTE7aGU+PTAmJiEoTWU9U2VbaGVdKTtoZS0tKTtmb3IoaGU9MDtoZTxPLmxlbmd0aDtoZSsrKXt2YXIgej1PW2hlXSxlZT1TZTtpZihUZS5tYXRjaEJhc2UmJjE9PT16Lmxlbmd0aCYmKGVlPVtNZV0pLHRoaXMubWF0Y2hPbmUoZWUseixJZSkpcmV0dXJuISFUZS5mbGlwTmVnYXRl''@;'; put 'put ''fHwhdGhpcy5uZWdhdGV9cmV0dXJuIVRlLmZsaXBOZWdhdGUmJnRoaXMubmVnYXRlfSxkZS5wcm90b3R5cGUubWF0Y2hPbmU9ZnVuY3Rpb24oU2UsSWUsVGUpe3ZhciBNZT10aGlzLm9wdGlvbnM7dGhpcy5kZWJ1ZygibWF0Y2hPbmUiLHt0aGlzOnRoaXMsZmlsZTpTZSxwYXR0ZXJuOkllfSks''@;'; put 'put ''dGhpcy5kZWJ1ZygibWF0Y2hPbmUiLFNlLmxlbmd0aCxJZS5sZW5ndGgpO2Zvcih2YXIgaGU9MCxPPTAsej1TZS5sZW5ndGgsZWU9SWUubGVuZ3RoO2hlPHomJk88ZWU7aGUrKyxPKyspe3RoaXMuZGVidWcoIm1hdGNoT25lIGxvb3AiKTt2YXIgbmUseD1JZVtPXSxQPVNlW2hlXTtpZih0aGlz''@;'; put 'put ''LmRlYnVnKEllLHgsUCksITE9PT14KXJldHVybiExO2lmKHg9PT1ZKXt0aGlzLmRlYnVnKCJHTE9CU1RBUiIsW0llLHgsUF0pO3ZhciBWPWhlLFQ9TysxO2lmKFQ9PT1lZSl7Zm9yKHRoaXMuZGVidWcoIioqIGF0IHRoZSBlbmQiKTtoZTx6O2hlKyspaWYoIi4iPT09U2VbaGVdfHwiLi4iPT09''@;'; put 'put ''U2VbaGVdfHwhTWUuZG90JiYiLiI9PT1TZVtoZV0uY2hhckF0KDApKXJldHVybiExO3JldHVybiEwfWZvcig7Vjx6Oyl7dmFyIFM9U2VbVl07aWYodGhpcy5kZWJ1ZygiXG5nbG9ic3RhciB3aGlsZSIsU2UsVixJZSxULFMpLHRoaXMubWF0Y2hPbmUoU2Uuc2xpY2UoViksSWUuc2xpY2UoVCks''@;'; put 'put ''VGUpKXJldHVybiB0aGlzLmRlYnVnKCJnbG9ic3RhciBmb3VuZCBtYXRjaCEiLFYseixTKSwhMDtpZigiLiI9PT1TfHwiLi4iPT09U3x8IU1lLmRvdCYmIi4iPT09Uy5jaGFyQXQoMCkpe3RoaXMuZGVidWcoImRvdCBkZXRlY3RlZCEiLFNlLFYsSWUsVCk7YnJlYWt9dGhpcy5kZWJ1ZygiZ2xv''@;'; put 'put ''YnN0YXIgc3dhbGxvdyBhIHNlZ21lbnQsIGFuZCBjb250aW51ZSIpLFYrK31yZXR1cm4hKCFUZXx8KHRoaXMuZGVidWcoIlxuPj4+IG5vIG1hdGNoLCBwYXJ0aWFsPyIsU2UsVixJZSxUKSxWIT09eikpfWlmKCJzdHJpbmciPT10eXBlb2YgeD90aGlzLmRlYnVnKCJzdHJpbmcgbWF0Y2giLHgs''@;'; put 'put ''UCxuZT1QPT09eCk6KG5lPVAubWF0Y2goeCksdGhpcy5kZWJ1ZygicGF0dGVybiBtYXRjaCIseCxQLG5lKSksIW5lKXJldHVybiExfWlmKGhlPT09eiYmTz09PWVlKXJldHVybiEwO2lmKGhlPT09eilyZXR1cm4gVGU7aWYoTz09PWVlKXJldHVybiBoZT09PXotMSYmIiI9PT1TZVtoZV07dGhy''@;'; put 'put ''b3cgbmV3IEVycm9yKCJ3dGY/Iil9fSw0MjQ0OlU9PnsidXNlIHN0cmljdCI7dmFyIFE9ZnVuY3Rpb24oail7cmV0dXJuIGohPWp9O1UuZXhwb3J0cz1mdW5jdGlvbihqLHJlKXtyZXR1cm4gMD09PWomJjA9PT1yZT8xL2o9PTEvcmU6aj09PXJlfHwhKCFRKGopfHwhUShyZSkpfX0sNjA5OihV''@;'; put 'put ''LFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNDI4OSksYWU9aig1NTU5KSxZPWooNDI0NCksVz1qKDU2MjQpLE49aigyMjgxKSx0ZT1hZShXKCksT2JqZWN0KTtyZSh0ZSx7Z2V0UG9seWZpbGw6VyxpbXBsZW1lbnRhdGlvbjpZLHNoaW06Tn0pLFUuZXhwb3J0cz10ZX0sNTYyNDooVSxR''@;'; put 'put ''LGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDQyNDQpO1UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuaXM/T2JqZWN0LmlzOnJlfX0sMjI4MTooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDU2MjQpLGFlPWooNDI4OSk7VS5leHBv''@;'; put 'put ''cnRzPWZ1bmN0aW9uKCl7dmFyIFk9cmUoKTtyZXR1cm4gYWUoT2JqZWN0LHtpczpZfSx7aXM6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmlzIT09WX19KSxZfX0sODk4NzooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZTtpZighT2JqZWN0LmtleXMpe3ZhciBhZT1PYmplY3QucHJvdG90''@;'; put 'put ''eXBlLmhhc093blByb3BlcnR5LFk9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxXPWooMTQxNCksTj1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLHRlPSFOLmNhbGwoe3RvU3RyaW5nOm51bGx9LCJ0b1N0cmluZyIpLEs9Ti5jYWxsKGZ1bmN0aW9uKCl7fSwicHJvdG90''@;'; put 'put ''eXBlIiksSj1bInRvU3RyaW5nIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZU9mIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjb25zdHJ1Y3RvciJdLHNlPWZ1bmN0aW9uKGRlKXt2YXIgdmU9ZGUuY29uc3RydWN0b3I7cmV0dXJuIHZl''@;'; put 'put ''JiZ2ZS5wcm90b3R5cGU9PT1kZX0sb2U9eyRhcHBsaWNhdGlvbkNhY2hlOiEwLCRjb25zb2xlOiEwLCRleHRlcm5hbDohMCwkZnJhbWU6ITAsJGZyYW1lRWxlbWVudDohMCwkZnJhbWVzOiEwLCRpbm5lckhlaWdodDohMCwkaW5uZXJXaWR0aDohMCwkb25tb3pmdWxsc2NyZWVuY2hhbmdlOiEw''@;'; put 'put ''LCRvbm1vemZ1bGxzY3JlZW5lcnJvcjohMCwkb3V0ZXJIZWlnaHQ6ITAsJG91dGVyV2lkdGg6ITAsJHBhZ2VYT2Zmc2V0OiEwLCRwYWdlWU9mZnNldDohMCwkcGFyZW50OiEwLCRzY3JvbGxMZWZ0OiEwLCRzY3JvbGxUb3A6ITAsJHNjcm9sbFg6ITAsJHNjcm9sbFk6ITAsJHNlbGY6ITAsJHdl''@;'; put 'put ''YmtpdEluZGV4ZWREQjohMCwkd2Via2l0U3RvcmFnZUluZm86ITAsJHdpbmRvdzohMH0sY2U9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdylyZXR1cm4hMTtmb3IodmFyIGRlIGluIHdpbmRvdyl0cnl7aWYoIW9lWyIkIitkZV0mJmFlLmNhbGwod2luZG93LGRlKSYm''@;'; put 'put ''bnVsbCE9PXdpbmRvd1tkZV0mJiJvYmplY3QiPT10eXBlb2Ygd2luZG93W2RlXSl0cnl7c2Uod2luZG93W2RlXSl9Y2F0Y2godmUpe3JldHVybiEwfX1jYXRjaCh2ZSl7cmV0dXJuITB9cmV0dXJuITF9KCk7cmU9ZnVuY3Rpb24oZGUpe3ZhciB2ZT1udWxsIT09ZGUmJiJvYmplY3QiPT10eXBl''@;'; put 'put ''b2YgZGUsQWU9IltvYmplY3QgRnVuY3Rpb25dIj09PVkuY2FsbChkZSksa2U9VyhkZSksU2U9dmUmJiJbb2JqZWN0IFN0cmluZ10iPT09WS5jYWxsKGRlKSxJZT1bXTtpZighdmUmJiFBZSYmIWtlKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdC5rZXlzIGNhbGxlZCBvbiBhIG5vbi1vYmpl''@;'; put 'put ''Y3QiKTt2YXIgVGU9SyYmQWU7aWYoU2UmJmRlLmxlbmd0aD4wJiYhYWUuY2FsbChkZSwwKSlmb3IodmFyIE1lPTA7TWU8ZGUubGVuZ3RoOysrTWUpSWUucHVzaChTdHJpbmcoTWUpKTtpZihrZSYmZGUubGVuZ3RoPjApZm9yKHZhciBoZT0wO2hlPGRlLmxlbmd0aDsrK2hlKUllLnB1c2goU3Ry''@;'; put 'put ''aW5nKGhlKSk7ZWxzZSBmb3IodmFyIE8gaW4gZGUpVGUmJiJwcm90b3R5cGUiPT09T3x8IWFlLmNhbGwoZGUsTyl8fEllLnB1c2goU3RyaW5nKE8pKTtpZih0ZSlmb3IodmFyIHo9ZnVuY3Rpb24obmUpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhY2UpcmV0dXJuIHNlKG5lKTt0''@;'; put 'put ''cnl7cmV0dXJuIHNlKG5lKX1jYXRjaCh4KXtyZXR1cm4hMX19KGRlKSxlZT0wO2VlPEoubGVuZ3RoOysrZWUpeiYmImNvbnN0cnVjdG9yIj09PUpbZWVdfHwhYWUuY2FsbChkZSxKW2VlXSl8fEllLnB1c2goSltlZV0pO3JldHVybiBJZX19VS5leHBvcnRzPXJlfSwyMjE1OihVLFEsaik9Pnsi''@;'; put 'put ''dXNlIHN0cmljdCI7dmFyIHJlPUFycmF5LnByb3RvdHlwZS5zbGljZSxhZT1qKDE0MTQpLFk9T2JqZWN0LmtleXMsVz1ZP2Z1bmN0aW9uKHRlKXtyZXR1cm4gWSh0ZSl9OmooODk4NyksTj1PYmplY3Qua2V5cztXLnNoaW09ZnVuY3Rpb24oKXtpZihPYmplY3Qua2V5cyl7dmFyIHRlPWZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIEs9T2JqZWN0LmtleXMoYXJndW1lbnRzKTtyZXR1cm4gSyYmSy5sZW5ndGg9PT1hcmd1bWVudHMubGVuZ3RofSgxLDIpO3RlfHwoT2JqZWN0LmtleXM9ZnVuY3Rpb24oSyl7cmV0dXJuIGFlKEspP04ocmUuY2FsbChLKSk6TihLKX0pfWVsc2UgT2JqZWN0LmtleXM9VztyZXR1''@;'; put 'put ''cm4gT2JqZWN0LmtleXN8fFd9LFUuZXhwb3J0cz1XfSwxNDE0OlU9PnsidXNlIHN0cmljdCI7dmFyIFE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztVLmV4cG9ydHM9ZnVuY3Rpb24oail7dmFyIHJlPVEuY2FsbChqKSxhZT0iW29iamVjdCBBcmd1bWVudHNdIj09PXJlO3JldHVybiBhZXx8''@;'; put 'put ''KGFlPSJbb2JqZWN0IEFycmF5XSIhPT1yZSYmbnVsbCE9PWomJiJvYmplY3QiPT10eXBlb2YgaiYmIm51bWJlciI9PXR5cGVvZiBqLmxlbmd0aCYmai5sZW5ndGg+PTAmJiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1RLmNhbGwoai5jYWxsZWUpKSxhZX19LDc3ODooVSxRLGopPT57dmFyIHJlPWoo''@;'; put 'put ''MjQ3OSk7ZnVuY3Rpb24gYWUoVyl7dmFyIE49ZnVuY3Rpb24oKXtyZXR1cm4gTi5jYWxsZWQ/Ti52YWx1ZTooTi5jYWxsZWQ9ITAsTi52YWx1ZT1XLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9O3JldHVybiBOLmNhbGxlZD0hMSxOfWZ1bmN0aW9uIFkoVyl7dmFyIE49ZnVuY3Rpb24oKXtpZihO''@;'; put 'put ''LmNhbGxlZCl0aHJvdyBuZXcgRXJyb3IoTi5vbmNlRXJyb3IpO3JldHVybiBOLmNhbGxlZD0hMCxOLnZhbHVlPVcuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtyZXR1cm4gTi5vbmNlRXJyb3I9KFcubmFtZXx8IkZ1bmN0aW9uIHdyYXBwZWQgd2l0aCBgb25jZWAiKSsiIHNob3VsZG4ndCBiZSBj''@;'; put 'put ''YWxsZWQgbW9yZSB0aGFuIG9uY2UiLE4uY2FsbGVkPSExLE59VS5leHBvcnRzPXJlKGFlKSxVLmV4cG9ydHMuc3RyaWN0PXJlKFkpLGFlLnByb3RvPWFlKGZ1bmN0aW9uKCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KEZ1bmN0aW9uLnByb3RvdHlwZSwib25jZSIse3ZhbHVlOmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIGFlKHRoaXMpfSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRnVuY3Rpb24ucHJvdG90eXBlLCJvbmNlU3RyaWN0Iix7dmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzKX0sY29uZmlndXJhYmxlOiEwfSl9KX0sNzQzNTooVSxRKT0+e1EuZW5kaWFu''@;'; put 'put ''bmVzcz1mdW5jdGlvbigpe3JldHVybiJMRSJ9LFEuaG9zdG5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGxvY2F0aW9uP2xvY2F0aW9uLmhvc3RuYW1lOiIifSxRLmxvYWRhdmc9ZnVuY3Rpb24oKXtyZXR1cm5bXX0sUS51cHRpbWU9ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''MH0sUS5mcmVlbWVtPWZ1bmN0aW9uKCl7cmV0dXJuIE51bWJlci5NQVhfVkFMVUV9LFEudG90YWxtZW09ZnVuY3Rpb24oKXtyZXR1cm4gTnVtYmVyLk1BWF9WQUxVRX0sUS5jcHVzPWZ1bmN0aW9uKCl7cmV0dXJuW119LFEudHlwZT1mdW5jdGlvbigpe3JldHVybiJCcm93c2VyIn0sUS5yZWxl''@;'; put 'put ''YXNlPWZ1bmN0aW9uKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3I/bmF2aWdhdG9yLmFwcFZlcnNpb246IiJ9LFEubmV0d29ya0ludGVyZmFjZXM9US5nZXROZXR3b3JrSW50ZXJmYWNlcz1mdW5jdGlvbigpe3JldHVybnt9fSxRLmFyY2g9ZnVuY3Rpb24oKXtyZXR1cm4i''@;'; put 'put ''amF2YXNjcmlwdCJ9LFEucGxhdGZvcm09ZnVuY3Rpb24oKXtyZXR1cm4iYnJvd3NlciJ9LFEudG1wZGlyPVEudG1wRGlyPWZ1bmN0aW9uKCl7cmV0dXJuIi90bXAifSxRLkVPTD0iXG4iLFEuaG9tZWRpcj1mdW5jdGlvbigpe3JldHVybiIvIn19LDI4MTg6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0''@;'; put 'put ''Ijt2YXIgcmU9aig5ODA5KTtRLmNlcnRpZmljYXRlPWooMTkzNCk7dmFyIGFlPXJlLmRlZmluZSgiUlNBUHJpdmF0ZUtleSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmludCgpLHRoaXMua2V5KCJtb2R1bHVzIikuaW50KCksdGhpcy5rZXkoInB1Ymxp''@;'; put 'put ''Y0V4cG9uZW50IikuaW50KCksdGhpcy5rZXkoInByaXZhdGVFeHBvbmVudCIpLmludCgpLHRoaXMua2V5KCJwcmltZTEiKS5pbnQoKSx0aGlzLmtleSgicHJpbWUyIikuaW50KCksdGhpcy5rZXkoImV4cG9uZW50MSIpLmludCgpLHRoaXMua2V5KCJleHBvbmVudDIiKS5pbnQoKSx0aGlzLmtl''@;'; put 'put ''eSgiY29lZmZpY2llbnQiKS5pbnQoKSl9KTtRLlJTQVByaXZhdGVLZXk9YWU7dmFyIFk9cmUuZGVmaW5lKCJSU0FQdWJsaWNLZXkiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoIm1vZHVsdXMiKS5pbnQoKSx0aGlzLmtleSgicHVibGljRXhwb25lbnQiKS5pbnQoKSl9KTtR''@;'; put 'put ''LlJTQVB1YmxpY0tleT1ZO3ZhciBXPXJlLmRlZmluZSgiU3ViamVjdFB1YmxpY0tleUluZm8iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ29yaXRobSIpLnVzZShOKSx0aGlzLmtleSgic3ViamVjdFB1YmxpY0tleSIpLmJpdHN0cigpKX0pO1EuUHVibGljS2V5PVc7''@;'; put 'put ''dmFyIE49cmUuZGVmaW5lKCJBbGdvcml0aG1JZGVudGlmaWVyIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJhbGdvcml0aG0iKS5vYmppZCgpLHRoaXMua2V5KCJub25lIikubnVsbF8oKS5vcHRpb25hbCgpLHRoaXMua2V5KCJjdXJ2ZSIpLm9iamlkKCkub3B0aW9uYWwo''@;'; put 'put ''KSx0aGlzLmtleSgicGFyYW1zIikuc2VxKCkub2JqKHRoaXMua2V5KCJwIikuaW50KCksdGhpcy5rZXkoInEiKS5pbnQoKSx0aGlzLmtleSgiZyIpLmludCgpKS5vcHRpb25hbCgpKX0pLHRlPXJlLmRlZmluZSgiUHJpdmF0ZUtleUluZm8iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhp''@;'; put 'put ''cy5rZXkoInZlcnNpb24iKS5pbnQoKSx0aGlzLmtleSgiYWxnb3JpdGhtIikudXNlKE4pLHRoaXMua2V5KCJzdWJqZWN0UHJpdmF0ZUtleSIpLm9jdHN0cigpKX0pO1EuUHJpdmF0ZUtleT10ZTt2YXIgSz1yZS5kZWZpbmUoIkVuY3J5cHRlZFByaXZhdGVLZXlJbmZvIixmdW5jdGlvbigpe3Ro''@;'; put 'put ''aXMuc2VxKCkub2JqKHRoaXMua2V5KCJhbGdvcml0aG0iKS5zZXEoKS5vYmoodGhpcy5rZXkoImlkIikub2JqaWQoKSx0aGlzLmtleSgiZGVjcnlwdCIpLnNlcSgpLm9iaih0aGlzLmtleSgia2RlIikuc2VxKCkub2JqKHRoaXMua2V5KCJpZCIpLm9iamlkKCksdGhpcy5rZXkoImtkZXBhcmFt''@;'; put 'put ''cyIpLnNlcSgpLm9iaih0aGlzLmtleSgic2FsdCIpLm9jdHN0cigpLHRoaXMua2V5KCJpdGVycyIpLmludCgpKSksdGhpcy5rZXkoImNpcGhlciIpLnNlcSgpLm9iaih0aGlzLmtleSgiYWxnbyIpLm9iamlkKCksdGhpcy5rZXkoIml2Iikub2N0c3RyKCkpKSksdGhpcy5rZXkoInN1YmplY3RQ''@;'; put 'put ''cml2YXRlS2V5Iikub2N0c3RyKCkpfSk7US5FbmNyeXB0ZWRQcml2YXRlS2V5PUs7dmFyIEo9cmUuZGVmaW5lKCJEU0FQcml2YXRlS2V5IixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ2ZXJzaW9uIikuaW50KCksdGhpcy5rZXkoInAiKS5pbnQoKSx0aGlzLmtleSgicSIp''@;'; put 'put ''LmludCgpLHRoaXMua2V5KCJnIikuaW50KCksdGhpcy5rZXkoInB1Yl9rZXkiKS5pbnQoKSx0aGlzLmtleSgicHJpdl9rZXkiKS5pbnQoKSl9KTtRLkRTQVByaXZhdGVLZXk9SixRLkRTQXBhcmFtPXJlLmRlZmluZSgiRFNBcGFyYW0iLGZ1bmN0aW9uKCl7dGhpcy5pbnQoKX0pO3ZhciBzZT1y''@;'; put 'put ''ZS5kZWZpbmUoIkVDUHJpdmF0ZUtleSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmludCgpLHRoaXMua2V5KCJwcml2YXRlS2V5Iikub2N0c3RyKCksdGhpcy5rZXkoInBhcmFtZXRlcnMiKS5vcHRpb25hbCgpLmV4cGxpY2l0KDApLnVzZShvZSksdGhp''@;'; put 'put ''cy5rZXkoInB1YmxpY0tleSIpLm9wdGlvbmFsKCkuZXhwbGljaXQoMSkuYml0c3RyKCkpfSk7US5FQ1ByaXZhdGVLZXk9c2U7dmFyIG9lPXJlLmRlZmluZSgiRUNQYXJhbWV0ZXJzIixmdW5jdGlvbigpe3RoaXMuY2hvaWNlKHtuYW1lZEN1cnZlOnRoaXMub2JqaWQoKX0pfSk7US5zaWduYXR1''@;'; put 'put ''cmU9cmUuZGVmaW5lKCJzaWduYXR1cmUiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInIiKS5pbnQoKSx0aGlzLmtleSgicyIpLmludCgpKX0pfSwxOTM0OihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooOTgwOSksYWU9cmUuZGVmaW5lKCJUaW1lIixmdW5jdGlv''@;'; put 'put ''bigpe3RoaXMuY2hvaWNlKHt1dGNUaW1lOnRoaXMudXRjdGltZSgpLGdlbmVyYWxUaW1lOnRoaXMuZ2VudGltZSgpfSl9KSxZPXJlLmRlZmluZSgiQXR0cmlidXRlVHlwZVZhbHVlIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ0eXBlIikub2JqaWQoKSx0aGlzLmtleSgi''@;'; put 'put ''dmFsdWUiKS5hbnkoKSl9KSxXPXJlLmRlZmluZSgiQWxnb3JpdGhtSWRlbnRpZmllciIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgiYWxnb3JpdGhtIikub2JqaWQoKSx0aGlzLmtleSgicGFyYW1ldGVycyIpLm9wdGlvbmFsKCksdGhpcy5rZXkoImN1cnZlIikub2JqaWQo''@;'; put 'put ''KS5vcHRpb25hbCgpKX0pLE49cmUuZGVmaW5lKCJTdWJqZWN0UHVibGljS2V5SW5mbyIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgiYWxnb3JpdGhtIikudXNlKFcpLHRoaXMua2V5KCJzdWJqZWN0UHVibGljS2V5IikuYml0c3RyKCkpfSksdGU9cmUuZGVmaW5lKCJSZWxh''@;'; put 'put ''dGl2ZURpc3Rpbmd1aXNoZWROYW1lIixmdW5jdGlvbigpe3RoaXMuc2V0b2YoWSl9KSxLPXJlLmRlZmluZSgiUkROU2VxdWVuY2UiLGZ1bmN0aW9uKCl7dGhpcy5zZXFvZih0ZSl9KSxKPXJlLmRlZmluZSgiTmFtZSIsZnVuY3Rpb24oKXt0aGlzLmNob2ljZSh7cmRuU2VxdWVuY2U6dGhpcy51''@;'; put 'put ''c2UoSyl9KX0pLHNlPXJlLmRlZmluZSgiVmFsaWRpdHkiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoIm5vdEJlZm9yZSIpLnVzZShhZSksdGhpcy5rZXkoIm5vdEFmdGVyIikudXNlKGFlKSl9KSxvZT1yZS5kZWZpbmUoIkV4dGVuc2lvbiIsZnVuY3Rpb24oKXt0aGlzLnNl''@;'; put 'put ''cSgpLm9iaih0aGlzLmtleSgiZXh0bklEIikub2JqaWQoKSx0aGlzLmtleSgiY3JpdGljYWwiKS5ib29sKCkuZGVmKCExKSx0aGlzLmtleSgiZXh0blZhbHVlIikub2N0c3RyKCkpfSksY2U9cmUuZGVmaW5lKCJUQlNDZXJ0aWZpY2F0ZSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlz''@;'; put 'put ''LmtleSgidmVyc2lvbiIpLmV4cGxpY2l0KDApLmludCgpLm9wdGlvbmFsKCksdGhpcy5rZXkoInNlcmlhbE51bWJlciIpLmludCgpLHRoaXMua2V5KCJzaWduYXR1cmUiKS51c2UoVyksdGhpcy5rZXkoImlzc3VlciIpLnVzZShKKSx0aGlzLmtleSgidmFsaWRpdHkiKS51c2Uoc2UpLHRoaXMu''@;'; put 'put ''a2V5KCJzdWJqZWN0IikudXNlKEopLHRoaXMua2V5KCJzdWJqZWN0UHVibGljS2V5SW5mbyIpLnVzZShOKSx0aGlzLmtleSgiaXNzdWVyVW5pcXVlSUQiKS5pbXBsaWNpdCgxKS5iaXRzdHIoKS5vcHRpb25hbCgpLHRoaXMua2V5KCJzdWJqZWN0VW5pcXVlSUQiKS5pbXBsaWNpdCgyKS5iaXRz''@;'; put 'put ''dHIoKS5vcHRpb25hbCgpLHRoaXMua2V5KCJleHRlbnNpb25zIikuZXhwbGljaXQoMykuc2Vxb2Yob2UpLm9wdGlvbmFsKCkpfSksZGU9cmUuZGVmaW5lKCJYNTA5Q2VydGlmaWNhdGUiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInRic0NlcnRpZmljYXRlIikudXNlKGNl''@;'; put 'put ''KSx0aGlzLmtleSgic2lnbmF0dXJlQWxnb3JpdGhtIikudXNlKFcpLHRoaXMua2V5KCJzaWduYXR1cmVWYWx1ZSIpLmJpdHN0cigpKX0pO1UuZXhwb3J0cz1kZX0sNzYzMTooVSxRLGopPT57dmFyIHJlPS9Qcm9jLVR5cGU6IDQsRU5DUllQVEVEW1xuXHJdK0RFSy1JbmZvOiBBRVMtKCg/OjEy''@;'; put 'put ''OCl8KD86MTkyKXwoPzoyNTYpKS1DQkMsKFswLTlBLUhdKylbXG5ccl0rKFswLTlBLXpcblxyKy89XSspW1xuXHJdKy9tLGFlPS9eLS0tLS1CRUdJTiAoKD86Lio/IEtFWSl8Q0VSVElGSUNBVEUpLS0tLS0vbSxZPS9eLS0tLS1CRUdJTiAoKD86Lio/IEtFWSl8Q0VSVElGSUNBVEUpLS0tLS0o''@;'; put 'put ''WzAtOUEtelxuXHIrLz1dKyktLS0tLUVORCBcMS0tLS0tJC9tLFc9aigzMDQ4KSxOPWooNDY5NiksdGU9aig5NTA5KS5CdWZmZXI7VS5leHBvcnRzPWZ1bmN0aW9uKEssSil7dmFyIHNlLG9lPUsudG9TdHJpbmcoKSxjZT1vZS5tYXRjaChyZSk7aWYoY2Upe3ZhciBkZT0iYWVzIitjZVsxXSx2''@;'; put 'put ''ZT10ZS5mcm9tKGNlWzJdLCJoZXgiKSxBZT10ZS5mcm9tKGNlWzNdLnJlcGxhY2UoL1tcclxuXS9nLCIiKSwiYmFzZTY0Iiksa2U9VyhKLHZlLnNsaWNlKDAsOCkscGFyc2VJbnQoY2VbMV0sMTApKS5rZXksU2U9W10sSWU9Ti5jcmVhdGVEZWNpcGhlcml2KGRlLGtlLHZlKTtTZS5wdXNoKEll''@;'; put 'put ''LnVwZGF0ZShBZSkpLFNlLnB1c2goSWUuZmluYWwoKSksc2U9dGUuY29uY2F0KFNlKX1lbHNle3ZhciBUZT1vZS5tYXRjaChZKTtzZT10ZS5mcm9tKFRlWzJdLnJlcGxhY2UoL1tcclxuXS9nLCIiKSwiYmFzZTY0Iil9cmV0dXJue3RhZzpvZS5tYXRjaChhZSlbMV0sZGF0YTpzZX19fSw5ODA6''@;'; put 'put ''KFUsUSxqKT0+e3ZhciByZT1qKDI4MTgpLGFlPWooMjU2MiksWT1qKDc2MzEpLFc9aig0Njk2KSxOPWooNTYzMiksdGU9aig5NTA5KS5CdWZmZXI7ZnVuY3Rpb24gSyhKKXt2YXIgc2U7Im9iamVjdCIhPXR5cGVvZiBKfHx0ZS5pc0J1ZmZlcihKKXx8KHNlPUoucGFzc3BocmFzZSxKPUoua2V5''@;'; put 'put ''KSwic3RyaW5nIj09dHlwZW9mIEomJihKPXRlLmZyb20oSikpO3ZhciBvZSxjZSxrZSxTZSxJZSxUZSxNZSxoZSxPLHosZWUsbmUseCxkZT1ZKEosc2UpLHZlPWRlLnRhZyxBZT1kZS5kYXRhO3N3aXRjaCh2ZSl7Y2FzZSJDRVJUSUZJQ0FURSI6Y2U9cmUuY2VydGlmaWNhdGUuZGVjb2RlKEFl''@;'; put 'put ''LCJkZXIiKS50YnNDZXJ0aWZpY2F0ZS5zdWJqZWN0UHVibGljS2V5SW5mbztjYXNlIlBVQkxJQyBLRVkiOnN3aXRjaChjZXx8KGNlPXJlLlB1YmxpY0tleS5kZWNvZGUoQWUsImRlciIpKSxvZT1jZS5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oIi4iKSl7Y2FzZSIxLjIuODQwLjExMzU0OS4x''@;'; put 'put ''LjEuMSI6cmV0dXJuIHJlLlJTQVB1YmxpY0tleS5kZWNvZGUoY2Uuc3ViamVjdFB1YmxpY0tleS5kYXRhLCJkZXIiKTtjYXNlIjEuMi44NDAuMTAwNDUuMi4xIjpyZXR1cm4gY2Uuc3ViamVjdFByaXZhdGVLZXk9Y2Uuc3ViamVjdFB1YmxpY0tleSx7dHlwZToiZWMiLGRhdGE6Y2V9O2Nhc2Ui''@;'; put 'put ''MS4yLjg0MC4xMDA0MC40LjEiOnJldHVybiBjZS5hbGdvcml0aG0ucGFyYW1zLnB1Yl9rZXk9cmUuRFNBcGFyYW0uZGVjb2RlKGNlLnN1YmplY3RQdWJsaWNLZXkuZGF0YSwiZGVyIikse3R5cGU6ImRzYSIsZGF0YTpjZS5hbGdvcml0aG0ucGFyYW1zfTtkZWZhdWx0OnRocm93IG5ldyBFcnJv''@;'; put 'put ''cigidW5rbm93biBrZXkgaWQgIitvZSl9Y2FzZSJFTkNSWVBURUQgUFJJVkFURSBLRVkiOlNlPXNlLEllPShrZT1BZT1yZS5FbmNyeXB0ZWRQcml2YXRlS2V5LmRlY29kZShBZSwiZGVyIikpLmFsZ29yaXRobS5kZWNyeXB0LmtkZS5rZGVwYXJhbXMuc2FsdCxUZT1wYXJzZUludChrZS5hbGdv''@;'; put 'put ''cml0aG0uZGVjcnlwdC5rZGUua2RlcGFyYW1zLml0ZXJzLnRvU3RyaW5nKCksMTApLE1lPWFlW2tlLmFsZ29yaXRobS5kZWNyeXB0LmNpcGhlci5hbGdvLmpvaW4oIi4iKV0saGU9a2UuYWxnb3JpdGhtLmRlY3J5cHQuY2lwaGVyLml2LE89a2Uuc3ViamVjdFByaXZhdGVLZXksej1wYXJzZUlu''@;'; put 'put ''dChNZS5zcGxpdCgiLSIpWzFdLDEwKS84LGVlPU4ucGJrZGYyU3luYyhTZSxJZSxUZSx6LCJzaGExIiksbmU9Vy5jcmVhdGVEZWNpcGhlcml2KE1lLGVlLGhlKSwoeD1bXSkucHVzaChuZS51cGRhdGUoTykpLHgucHVzaChuZS5maW5hbCgpKSxBZT10ZS5jb25jYXQoeCk7Y2FzZSJQUklWQVRF''@;'; put 'put ''IEtFWSI6c3dpdGNoKG9lPShjZT1yZS5Qcml2YXRlS2V5LmRlY29kZShBZSwiZGVyIikpLmFsZ29yaXRobS5hbGdvcml0aG0uam9pbigiLiIpKXtjYXNlIjEuMi44NDAuMTEzNTQ5LjEuMS4xIjpyZXR1cm4gcmUuUlNBUHJpdmF0ZUtleS5kZWNvZGUoY2Uuc3ViamVjdFByaXZhdGVLZXksImRl''@;'; put 'put ''ciIpO2Nhc2UiMS4yLjg0MC4xMDA0NS4yLjEiOnJldHVybntjdXJ2ZTpjZS5hbGdvcml0aG0uY3VydmUscHJpdmF0ZUtleTpyZS5FQ1ByaXZhdGVLZXkuZGVjb2RlKGNlLnN1YmplY3RQcml2YXRlS2V5LCJkZXIiKS5wcml2YXRlS2V5fTtjYXNlIjEuMi44NDAuMTAwNDAuNC4xIjpyZXR1cm4g''@;'; put 'put ''Y2UuYWxnb3JpdGhtLnBhcmFtcy5wcml2X2tleT1yZS5EU0FwYXJhbS5kZWNvZGUoY2Uuc3ViamVjdFByaXZhdGVLZXksImRlciIpLHt0eXBlOiJkc2EiLHBhcmFtczpjZS5hbGdvcml0aG0ucGFyYW1zfTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5rbm93biBrZXkgaWQgIitvZSl9Y2Fz''@;'; put 'put ''ZSJSU0EgUFVCTElDIEtFWSI6cmV0dXJuIHJlLlJTQVB1YmxpY0tleS5kZWNvZGUoQWUsImRlciIpO2Nhc2UiUlNBIFBSSVZBVEUgS0VZIjpyZXR1cm4gcmUuUlNBUHJpdmF0ZUtleS5kZWNvZGUoQWUsImRlciIpO2Nhc2UiRFNBIFBSSVZBVEUgS0VZIjpyZXR1cm57dHlwZToiZHNhIixwYXJh''@;'; put 'put ''bXM6cmUuRFNBUHJpdmF0ZUtleS5kZWNvZGUoQWUsImRlciIpfTtjYXNlIkVDIFBSSVZBVEUgS0VZIjpyZXR1cm57Y3VydmU6KEFlPXJlLkVDUHJpdmF0ZUtleS5kZWNvZGUoQWUsImRlciIpKS5wYXJhbWV0ZXJzLnZhbHVlLHByaXZhdGVLZXk6QWUucHJpdmF0ZUtleX07ZGVmYXVsdDp0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoInVua25vd24ga2V5IHR5cGUgIit2ZSl9fVUuZXhwb3J0cz1LLEsuc2lnbmF0dXJlPXJlLnNpZ25hdHVyZX0sNDA5NTooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDQxNTUpO2Z1bmN0aW9uIGFlKFcpe3JldHVybiIvIj09PVcuY2hhckF0KDApfWZ1bmN0aW9u''@;'; put 'put ''IFkoVyl7dmFyIE49L14oW2EtekEtWl06fFtcXFwvXXsyfVteXFxcL10rW1xcXC9dK1teXFxcL10rKT8oW1xcXC9dKT8oW1xzXFNdKj8pJC8uZXhlYyhXKSx0ZT1OWzFdfHwiIixLPUJvb2xlYW4odGUmJiI6IiE9PXRlLmNoYXJBdCgxKSk7cmV0dXJuIEJvb2xlYW4oTlsyXXx8Syl9VS5leHBv''@;'; put 'put ''cnRzPSJ3aW4zMiI9PT1yZS5wbGF0Zm9ybT9ZOmFlLFUuZXhwb3J0cy5wb3NpeD1hZSxVLmV4cG9ydHMud2luMzI9WX0sMTcyNTpVPT57VS5leHBvcnRzPSJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKFEsail7US5zdXBlcl89aixRLnByb3RvdHlwZT1PYmplY3Qu''@;'; put 'put ''Y3JlYXRlKGoucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6USxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KX06ZnVuY3Rpb24oUSxqKXtRLnN1cGVyXz1qO3ZhciByZT1mdW5jdGlvbigpe307cmUucHJvdG90eXBlPWoucHJvdG90eXBlLFEucHJvdG90''@;'; put 'put ''eXBlPW5ldyByZSxRLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1RfX0sMjk3NDpVPT57VS5leHBvcnRzPWZ1bmN0aW9uKFEpe3JldHVybiBRJiYib2JqZWN0Ij09dHlwZW9mIFEmJiJmdW5jdGlvbiI9PXR5cGVvZiBRLmNvcHkmJiJmdW5jdGlvbiI9PXR5cGVvZiBRLmZpbGwmJiJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBRLnJlYWRVSW50OH19LDgwNTk6KFUsUSxqKT0+e3ZhciByZT1qKDQxNTUpLGFlPWooNTEwOCksWT0vJVtzZGolXS9nO1EuZm9ybWF0PWZ1bmN0aW9uKFQpe2lmKCFTZShUKSl7Zm9yKHZhciBTPVtdLEY9MDtGPGFyZ3VtZW50cy5sZW5ndGg7RisrKVMucHVzaCh0ZShhcmd1bWVu''@;'; put 'put ''dHNbRl0pKTtyZXR1cm4gUy5qb2luKCIgIil9Rj0xO2Zvcih2YXIgeWU9YXJndW1lbnRzLENlPXllLmxlbmd0aCxEZT1TdHJpbmcoVCkucmVwbGFjZShZLGZ1bmN0aW9uKFFlKXtpZigiJSUiPT09UWUpcmV0dXJuIiUiO2lmKEY+PUNlKXJldHVybiBRZTtzd2l0Y2goUWUpe2Nhc2UiJXMiOnJl''@;'; put 'put ''dHVybiBTdHJpbmcoeWVbRisrXSk7Y2FzZSIlZCI6cmV0dXJuIE51bWJlcih5ZVtGKytdKTtjYXNlIiVqIjp0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHllW0YrK10pfWNhdGNoKCRlKXtyZXR1cm4iW0NpcmN1bGFyXSJ9ZGVmYXVsdDpyZXR1cm4gUWV9fSksUGU9eWVbRl07RjxDZTtQZT15''@;'; put 'put ''ZVsrK0ZdKUFlKFBlKXx8IU1lKFBlKT9EZSs9IiAiK1BlOkRlKz0iICIrdGUoUGUpO3JldHVybiBEZX0sUS5kZXByZWNhdGU9ZnVuY3Rpb24oVCxTKXtpZihJZShqLmcucHJvY2VzcykpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFEuZGVwcmVjYXRlKFQsUykuYXBwbHkodGhpcyxhcmd1bWVu''@;'; put 'put ''dHMpfTtpZighMD09PXJlLm5vRGVwcmVjYXRpb24pcmV0dXJuIFQ7dmFyIEY9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIUYpe2lmKHJlLnRocm93RGVwcmVjYXRpb24pdGhyb3cgbmV3IEVycm9yKFMpO3JlLnRyYWNlRGVwcmVjYXRpb24/YWUudHJhY2UoUyk6YWUuZXJyb3IoUyksRj0hMH1y''@;'; put 'put ''ZXR1cm4gVC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fTt2YXIgVyxOPXt9O2Z1bmN0aW9uIHRlKFQsUyl7dmFyIEY9e3NlZW46W10sc3R5bGl6ZTpKfTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD49MyYmKEYuZGVwdGg9YXJndW1lbnRzWzJdKSxhcmd1bWVudHMubGVuZ3RoPj00JiYoRi5jb2xv''@;'; put 'put ''cnM9YXJndW1lbnRzWzNdKSx2ZShTKT9GLnNob3dIaWRkZW49UzpTJiZRLl9leHRlbmQoRixTKSxJZShGLnNob3dIaWRkZW4pJiYoRi5zaG93SGlkZGVuPSExKSxJZShGLmRlcHRoKSYmKEYuZGVwdGg9MiksSWUoRi5jb2xvcnMpJiYoRi5jb2xvcnM9ITEpLEllKEYuY3VzdG9tSW5zcGVjdCkm''@;'; put 'put ''JihGLmN1c3RvbUluc3BlY3Q9ITApLEYuY29sb3JzJiYoRi5zdHlsaXplPUspLHNlKEYsVCxGLmRlcHRoKX1mdW5jdGlvbiBLKFQsUyl7dmFyIEY9dGUuc3R5bGVzW1NdO3JldHVybiBGPyJceDFiWyIrdGUuY29sb3JzW0ZdWzBdKyJtIitUKyJceDFiWyIrdGUuY29sb3JzW0ZdWzFdKyJtIjpU''@;'; put 'put ''fWZ1bmN0aW9uIEooVCxTKXtyZXR1cm4gVH1mdW5jdGlvbiBzZShULFMsRil7aWYoVC5jdXN0b21JbnNwZWN0JiZTJiZ6KFMuaW5zcGVjdCkmJlMuaW5zcGVjdCE9PVEuaW5zcGVjdCYmKCFTLmNvbnN0cnVjdG9yfHxTLmNvbnN0cnVjdG9yLnByb3RvdHlwZSE9PVMpKXt2YXIgeWU9Uy5pbnNw''@;'; put 'put ''ZWN0KEYsVCk7cmV0dXJuIFNlKHllKXx8KHllPXNlKFQseWUsRikpLHllfXZhciBDZT1mdW5jdGlvbih2dCxBdCl7aWYoSWUoQXQpKXJldHVybiB2dC5zdHlsaXplKCJ1bmRlZmluZWQiLCJ1bmRlZmluZWQiKTtpZihTZShBdCkpe3ZhciBodD0iJyIrSlNPTi5zdHJpbmdpZnkoQXQpLnJlcGxh''@;'; put 'put ''Y2UoL14ifCIkL2csIiIpLnJlcGxhY2UoLycvZywiXFwnIikucmVwbGFjZSgvXFwiL2csJyInKSsiJyI7cmV0dXJuIHZ0LnN0eWxpemUoaHQsInN0cmluZyIpfXJldHVybiBrZShBdCk/dnQuc3R5bGl6ZSgiIitBdCwibnVtYmVyIik6dmUoQXQpP3Z0LnN0eWxpemUoIiIrQXQsImJvb2xlYW4i''@;'; put 'put ''KTpBZShBdCk/dnQuc3R5bGl6ZSgibnVsbCIsIm51bGwiKTp2b2lkIDB9KFQsUyk7aWYoQ2UpcmV0dXJuIENlO3ZhciBBdCxEZT1PYmplY3Qua2V5cyhTKSxQZT0oQXQ9e30sRGUuZm9yRWFjaChmdW5jdGlvbihodCxCdCl7QXRbaHRdPSEwfSksQXQpO2lmKFQuc2hvd0hpZGRlbiYmKERlPU9i''@;'; put 'put ''amVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFMpKSxPKFMpJiYoRGUuaW5kZXhPZigibWVzc2FnZSIpPj0wfHxEZS5pbmRleE9mKCJkZXNjcmlwdGlvbiIpPj0wKSlyZXR1cm4gb2UoUyk7aWYoMD09PURlLmxlbmd0aCl7aWYoeihTKSlyZXR1cm4gVC5zdHlsaXplKCJbRnVuY3Rpb24iKyhTLm5h''@;'; put 'put ''bWU/IjogIitTLm5hbWU6IiIpKyJdIiwic3BlY2lhbCIpO2lmKFRlKFMpKXJldHVybiBULnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFMpLCJyZWdleHAiKTtpZihoZShTKSlyZXR1cm4gVC5zdHlsaXplKERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUyksImRh''@;'; put 'put ''dGUiKTtpZihPKFMpKXJldHVybiBvZShTKX12YXIgJGUsZ3Q9IiIsd3Q9ITEsbXQ9WyJ7IiwifSJdO3JldHVybiBkZShTKSYmKHd0PSEwLG10PVsiWyIsIl0iXSkseihTKSYmKGd0PSIgW0Z1bmN0aW9uIisoUy5uYW1lPyI6ICIrUy5uYW1lOiIiKSsiXSIpLFRlKFMpJiYoZ3Q9IiAiK1JlZ0V4''@;'; put 'put ''cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChTKSksaGUoUykmJihndD0iICIrRGF0ZS5wcm90b3R5cGUudG9VVENTdHJpbmcuY2FsbChTKSksTyhTKSYmKGd0PSIgIitvZShTKSksMCE9PURlLmxlbmd0aHx8d3QmJjAhPVMubGVuZ3RoP0Y8MD9UZShTKT9ULnN0eWxpemUoUmVnRXhwLnByb3Rv''@;'; put 'put ''dHlwZS50b1N0cmluZy5jYWxsKFMpLCJyZWdleHAiKTpULnN0eWxpemUoIltPYmplY3RdIiwic3BlY2lhbCIpOihULnNlZW4ucHVzaChTKSwkZT13dD9mdW5jdGlvbih2dCxBdCxodCxCdCxvbil7Zm9yKHZhciBfdD1bXSx0dD0wLGV0PUF0Lmxlbmd0aDt0dDxldDsrK3R0KVYoQXQsU3RyaW5n''@;'; put 'put ''KHR0KSk/X3QucHVzaChjZSh2dCxBdCxodCxCdCxTdHJpbmcodHQpLCEwKSk6X3QucHVzaCgiIik7cmV0dXJuIG9uLmZvckVhY2goZnVuY3Rpb24obHQpe2x0Lm1hdGNoKC9eXGQrJC8pfHxfdC5wdXNoKGNlKHZ0LEF0LGh0LEJ0LGx0LCEwKSl9KSxfdH0oVCxTLEYsUGUsRGUpOkRlLm1hcChm''@;'; put 'put ''dW5jdGlvbih2dCl7cmV0dXJuIGNlKFQsUyxGLFBlLHZ0LHd0KX0pLFQuc2Vlbi5wb3AoKSxmdW5jdGlvbih2dCxBdCxodCl7cmV0dXJuIHZ0LnJlZHVjZShmdW5jdGlvbihCdCxvbil7cmV0dXJuIG9uLmluZGV4T2YoIlxuIiksQnQrb24ucmVwbGFjZSgvXHUwMDFiXFtcZFxkP20vZywiIiku''@;'; put 'put ''bGVuZ3RoKzF9LDApPjYwP2h0WzBdKygiIj09PUF0PyIiOkF0KyJcbiAiKSsiICIrdnQuam9pbigiLFxuICAiKSsiICIraHRbMV06aHRbMF0rQXQrIiAiK3Z0LmpvaW4oIiwgIikrIiAiK2h0WzFdfSgkZSxndCxtdCkpOm10WzBdK2d0K210WzFdfWZ1bmN0aW9uIG9lKFQpe3JldHVybiJbIitF''@;'; put 'put ''cnJvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChUKSsiXSJ9ZnVuY3Rpb24gY2UoVCxTLEYseWUsQ2UsRGUpe3ZhciBQZSxRZSwkZTtpZigoJGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTLENlKXx8e3ZhbHVlOlNbQ2VdfSkuZ2V0P1FlPVQuc3R5bGl6ZSgkZS5zZXQ/IltH''@;'; put 'put ''ZXR0ZXIvU2V0dGVyXSI6IltHZXR0ZXJdIiwic3BlY2lhbCIpOiRlLnNldCYmKFFlPVQuc3R5bGl6ZSgiW1NldHRlcl0iLCJzcGVjaWFsIikpLFYoeWUsQ2UpfHwoUGU9IlsiK0NlKyJdIiksUWV8fChULnNlZW4uaW5kZXhPZigkZS52YWx1ZSk8MD8oUWU9QWUoRik/c2UoVCwkZS52YWx1ZSxu''@;'; put 'put ''dWxsKTpzZShULCRlLnZhbHVlLEYtMSkpLmluZGV4T2YoIlxuIik+LTEmJihRZT1EZT9RZS5zcGxpdCgiXG4iKS5tYXAoZnVuY3Rpb24oZ3Qpe3JldHVybiIgICIrZ3R9KS5qb2luKCJcbiIpLnN1YnN0cigyKToiXG4iK1FlLnNwbGl0KCJcbiIpLm1hcChmdW5jdGlvbihndCl7cmV0dXJuIiAg''@;'; put 'put ''ICIrZ3R9KS5qb2luKCJcbiIpKTpRZT1ULnN0eWxpemUoIltDaXJjdWxhcl0iLCJzcGVjaWFsIikpLEllKFBlKSl7aWYoRGUmJkNlLm1hdGNoKC9eXGQrJC8pKXJldHVybiBRZTsoUGU9SlNPTi5zdHJpbmdpZnkoIiIrQ2UpKS5tYXRjaCgvXiIoW2EtekEtWl9dW2EtekEtWl8wLTldKikiJC8p''@;'; put 'put ''PyhQZT1QZS5zdWJzdHIoMSxQZS5sZW5ndGgtMiksUGU9VC5zdHlsaXplKFBlLCJuYW1lIikpOihQZT1QZS5yZXBsYWNlKC8nL2csIlxcJyIpLnJlcGxhY2UoL1xcIi9nLCciJykucmVwbGFjZSgvKF4ifCIkKS9nLCInIiksUGU9VC5zdHlsaXplKFBlLCJzdHJpbmciKSl9cmV0dXJuIFBlKyI6''@;'; put 'put ''ICIrUWV9ZnVuY3Rpb24gZGUoVCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoVCl9ZnVuY3Rpb24gdmUoVCl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgVH1mdW5jdGlvbiBBZShUKXtyZXR1cm4gbnVsbD09PVR9ZnVuY3Rpb24ga2UoVCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBUfWZ1bmN0aW9u''@;'; put 'put ''IFNlKFQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgVH1mdW5jdGlvbiBJZShUKXtyZXR1cm4gdm9pZCAwPT09VH1mdW5jdGlvbiBUZShUKXtyZXR1cm4gTWUoVCkmJiJbb2JqZWN0IFJlZ0V4cF0iPT09ZWUoVCl9ZnVuY3Rpb24gTWUoVCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBUJiZudWxs''@;'; put 'put ''IT09VH1mdW5jdGlvbiBoZShUKXtyZXR1cm4gTWUoVCkmJiJbb2JqZWN0IERhdGVdIj09PWVlKFQpfWZ1bmN0aW9uIE8oVCl7cmV0dXJuIE1lKFQpJiYoIltvYmplY3QgRXJyb3JdIj09PWVlKFQpfHxUIGluc3RhbmNlb2YgRXJyb3IpfWZ1bmN0aW9uIHooVCl7cmV0dXJuImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIFR9ZnVuY3Rpb24gZWUoVCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChUKX1mdW5jdGlvbiBuZShUKXtyZXR1cm4gVDwxMD8iMCIrVC50b1N0cmluZygxMCk6VC50b1N0cmluZygxMCl9US5kZWJ1Z2xvZz1mdW5jdGlvbihUKXtpZihJZShXKSYmKFc9cmUu''@;'; put 'put ''ZW52Lk5PREVfREVCVUd8fCIiKSxUPVQudG9VcHBlckNhc2UoKSwhTltUXSlpZihuZXcgUmVnRXhwKCJcXGIiK1QrIlxcYiIsImkiKS50ZXN0KFcpKXt2YXIgUz1yZS5waWQ7TltUXT1mdW5jdGlvbigpe3ZhciBGPVEuZm9ybWF0LmFwcGx5KFEsYXJndW1lbnRzKTthZS5lcnJvcigiJXMgJWQ6''@;'; put 'put ''ICVzIixULFMsRil9fWVsc2UgTltUXT1mdW5jdGlvbigpe307cmV0dXJuIE5bVF19LFEuaW5zcGVjdD10ZSx0ZS5jb2xvcnM9e2JvbGQ6WzEsMjJdLGl0YWxpYzpbMywyM10sdW5kZXJsaW5lOls0LDI0XSxpbnZlcnNlOls3LDI3XSx3aGl0ZTpbMzcsMzldLGdyZXk6WzkwLDM5XSxibGFjazpb''@;'; put 'put ''MzAsMzldLGJsdWU6WzM0LDM5XSxjeWFuOlszNiwzOV0sZ3JlZW46WzMyLDM5XSxtYWdlbnRhOlszNSwzOV0scmVkOlszMSwzOV0seWVsbG93OlszMywzOV19LHRlLnN0eWxlcz17c3BlY2lhbDoiY3lhbiIsbnVtYmVyOiJ5ZWxsb3ciLGJvb2xlYW46InllbGxvdyIsdW5kZWZpbmVkOiJncmV5''@;'; put 'put ''IixudWxsOiJib2xkIixzdHJpbmc6ImdyZWVuIixkYXRlOiJtYWdlbnRhIixyZWdleHA6InJlZCJ9LFEuaXNBcnJheT1kZSxRLmlzQm9vbGVhbj12ZSxRLmlzTnVsbD1BZSxRLmlzTnVsbE9yVW5kZWZpbmVkPWZ1bmN0aW9uKFQpe3JldHVybiBudWxsPT1UfSxRLmlzTnVtYmVyPWtlLFEuaXNT''@;'; put 'put ''dHJpbmc9U2UsUS5pc1N5bWJvbD1mdW5jdGlvbihUKXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIFR9LFEuaXNVbmRlZmluZWQ9SWUsUS5pc1JlZ0V4cD1UZSxRLmlzT2JqZWN0PU1lLFEuaXNEYXRlPWhlLFEuaXNFcnJvcj1PLFEuaXNGdW5jdGlvbj16LFEuaXNQcmltaXRpdmU9ZnVuY3Rpb24o''@;'; put 'put ''VCl7cmV0dXJuIG51bGw9PT1UfHwiYm9vbGVhbiI9PXR5cGVvZiBUfHwibnVtYmVyIj09dHlwZW9mIFR8fCJzdHJpbmciPT10eXBlb2YgVHx8InN5bWJvbCI9PXR5cGVvZiBUfHx2b2lkIDA9PT1UfSxRLmlzQnVmZmVyPWooMjk3NCk7dmFyIHg9WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJN''@;'; put 'put ''YXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXTtmdW5jdGlvbiBQKCl7dmFyIFQ9bmV3IERhdGUsUz1bbmUoVC5nZXRIb3VycygpKSxuZShULmdldE1pbnV0ZXMoKSksbmUoVC5nZXRTZWNvbmRzKCkpXS5qb2luKCI6Iik7cmV0dXJuW1QuZ2V0RGF0ZSgpLHhb''@;'; put 'put ''VC5nZXRNb250aCgpXSxTXS5qb2luKCIgIil9ZnVuY3Rpb24gVihULFMpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVCxTKX1RLmxvZz1mdW5jdGlvbigpe2FlLmxvZygiJXMgLSAlcyIsUCgpLFEuZm9ybWF0LmFwcGx5KFEsYXJndW1lbnRzKSl9LFEuaW5o''@;'; put 'put ''ZXJpdHM9aigxNzI1KSxRLl9leHRlbmQ9ZnVuY3Rpb24oVCxTKXtpZighU3x8IU1lKFMpKXJldHVybiBUO2Zvcih2YXIgRj1PYmplY3Qua2V5cyhTKSx5ZT1GLmxlbmd0aDt5ZS0tOylUW0ZbeWVdXT1TW0ZbeWVdXTtyZXR1cm4gVH19LDI1MjA6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''cmU9aig0MTU1KSxhZT0id2luMzIiPT09cmUucGxhdGZvcm0sWT1qKDgwNTkpO2Z1bmN0aW9uIFcoa2UsU2Upe2Zvcih2YXIgSWU9W10sVGU9MDtUZTxrZS5sZW5ndGg7VGUrKyl7dmFyIE1lPWtlW1RlXTtNZSYmIi4iIT09TWUmJigiLi4iPT09TWU/SWUubGVuZ3RoJiYiLi4iIT09SWVbSWUu''@;'; put 'put ''bGVuZ3RoLTFdP0llLnBvcCgpOlNlJiZJZS5wdXNoKCIuLiIpOkllLnB1c2goTWUpKX1yZXR1cm4gSWV9ZnVuY3Rpb24gTihrZSl7Zm9yKHZhciBTZT1rZS5sZW5ndGgtMSxJZT0wO0llPD1TZSYmIWtlW0llXTtJZSsrKTtmb3IodmFyIFRlPVNlO1RlPj0wJiYha2VbVGVdO1RlLS0pO3JldHVy''@;'; put 'put ''biAwPT09SWUmJlRlPT09U2U/a2U6SWU+VGU/W106a2Uuc2xpY2UoSWUsVGUrMSl9dmFyIHRlPS9eKFthLXpBLVpdOnxbXFxcL117Mn1bXlxcXC9dK1tcXFwvXStbXlxcXC9dKyk/KFtcXFwvXSk/KFtcc1xTXSo/KSQvLEs9L14oW1xzXFNdKj8pKCg/OlwuezEsMn18W15cXFwvXSs/fCkoXC5b''@;'; put 'put ''Xi5cL1xcXSp8KSkoPzpbXFxcL10qKSQvLEo9e307ZnVuY3Rpb24gc2Uoa2Upe3ZhciBTZT10ZS5leGVjKGtlKSxJZT0oU2VbMV18fCIiKSsoU2VbMl18fCIiKSxNZT1LLmV4ZWMoU2VbM118fCIiKTtyZXR1cm5bSWUsTWVbMV0sTWVbMl0sTWVbM11dfWZ1bmN0aW9uIG9lKGtlKXt2YXIgU2U9''@;'; put 'put ''dGUuZXhlYyhrZSksSWU9U2VbMV18fCIiLFRlPSEhSWUmJiI6IiE9PUllWzFdO3JldHVybntkZXZpY2U6SWUsaXNVbmM6VGUsaXNBYnNvbHV0ZTpUZXx8ISFTZVsyXSx0YWlsOlNlWzNdfX1mdW5jdGlvbiBjZShrZSl7cmV0dXJuIlxcXFwiK2tlLnJlcGxhY2UoL15bXFxcL10rLywiIikucmVw''@;'; put 'put ''bGFjZSgvW1xcXC9dKy9nLCJcXCIpfUoucmVzb2x2ZT1mdW5jdGlvbigpe2Zvcih2YXIga2U9IiIsU2U9IiIsSWU9ITEsVGU9YXJndW1lbnRzLmxlbmd0aC0xO1RlPj0tMTtUZS0tKXt2YXIgTWU7aWYoVGU+PTA/TWU9YXJndW1lbnRzW1RlXTprZT8oTWU9cmUuZW52WyI9IitrZV0pJiZNZS5z''@;'; put 'put ''dWJzdHIoMCwzKS50b0xvd2VyQ2FzZSgpPT09a2UudG9Mb3dlckNhc2UoKSsiXFwifHwoTWU9a2UrIlxcIik6TWU9cmUuY3dkKCksIVkuaXNTdHJpbmcoTWUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyB0byBwYXRoLnJlc29sdmUgbXVzdCBiZSBzdHJpbmdzIik7aWYoTWUpe3Zh''@;'; put 'put ''ciBoZT1vZShNZSksTz1oZS5kZXZpY2Usej1oZS5pc1VuYyxlZT1oZS5pc0Fic29sdXRlLG5lPWhlLnRhaWw7aWYoKCFPfHwha2V8fE8udG9Mb3dlckNhc2UoKT09PWtlLnRvTG93ZXJDYXNlKCkpJiYoa2V8fChrZT1PKSxJZXx8KFNlPW5lKyJcXCIrU2UsSWU9ZWUpLGtlJiZJZSkpYnJlYWt9''@;'; put 'put ''fXJldHVybiB6JiYoa2U9Y2Uoa2UpKSxrZSsoSWU/IlxcIjoiIikrKFNlPVcoU2Uuc3BsaXQoL1tcXFwvXSsvKSwhSWUpLmpvaW4oIlxcIikpfHwiLiJ9LEoubm9ybWFsaXplPWZ1bmN0aW9uKGtlKXt2YXIgU2U9b2Uoa2UpLEllPVNlLmRldmljZSxUZT1TZS5pc1VuYyxNZT1TZS5pc0Fic29s''@;'; put 'put ''dXRlLGhlPVNlLnRhaWwsTz0vW1xcXC9dJC8udGVzdChoZSk7cmV0dXJuKGhlPVcoaGUuc3BsaXQoL1tcXFwvXSsvKSwhTWUpLmpvaW4oIlxcIikpfHxNZXx8KGhlPSIuIiksaGUmJk8mJihoZSs9IlxcIiksVGUmJihJZT1jZShJZSkpLEllKyhNZT8iXFwiOiIiKStoZX0sSi5pc0Fic29sdXRl''@;'; put 'put ''PWZ1bmN0aW9uKGtlKXtyZXR1cm4gb2Uoa2UpLmlzQWJzb2x1dGV9LEouam9pbj1mdW5jdGlvbigpe2Zvcih2YXIga2U9W10sU2U9MDtTZTxhcmd1bWVudHMubGVuZ3RoO1NlKyspe3ZhciBJZT1hcmd1bWVudHNbU2VdO2lmKCFZLmlzU3RyaW5nKEllKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJB''@;'; put 'put ''cmd1bWVudHMgdG8gcGF0aC5qb2luIG11c3QgYmUgc3RyaW5ncyIpO0llJiZrZS5wdXNoKEllKX12YXIgVGU9a2Uuam9pbigiXFwiKTtyZXR1cm4vXltcXFwvXXsyfVteXFxcL10vLnRlc3Qoa2VbMF0pfHwoVGU9VGUucmVwbGFjZSgvXltcXFwvXXsyLH0vLCJcXCIpKSxKLm5vcm1hbGl6ZShU''@;'; put 'put ''ZSl9LEoucmVsYXRpdmU9ZnVuY3Rpb24oa2UsU2Upe2tlPUoucmVzb2x2ZShrZSksU2U9Si5yZXNvbHZlKFNlKTtmb3IodmFyIEllPWtlLnRvTG93ZXJDYXNlKCksVGU9U2UudG9Mb3dlckNhc2UoKSxNZT1OKFNlLnNwbGl0KCJcXCIpKSxoZT1OKEllLnNwbGl0KCJcXCIpKSxPPU4oVGUuc3Bs''@;'; put 'put ''aXQoIlxcIikpLHo9TWF0aC5taW4oaGUubGVuZ3RoLE8ubGVuZ3RoKSxlZT16LG5lPTA7bmU8ejtuZSsrKWlmKGhlW25lXSE9PU9bbmVdKXtlZT1uZTticmVha31pZigwPT1lZSlyZXR1cm4gU2U7dmFyIHg9W107Zm9yKG5lPWVlO25lPGhlLmxlbmd0aDtuZSsrKXgucHVzaCgiLi4iKTtyZXR1''@;'; put 'put ''cm4oeD14LmNvbmNhdChNZS5zbGljZShlZSkpKS5qb2luKCJcXCIpfSxKLl9tYWtlTG9uZz1mdW5jdGlvbihrZSl7aWYoIVkuaXNTdHJpbmcoa2UpKXJldHVybiBrZTtpZigha2UpcmV0dXJuIiI7dmFyIFNlPUoucmVzb2x2ZShrZSk7cmV0dXJuL15bYS16QS1aXVw6XFwvLnRlc3QoU2UpPyJc''@;'; put 'put ''XFxcP1xcIitTZTovXlxcXFxbXj8uXS8udGVzdChTZSk/IlxcXFw/XFxVTkNcXCIrU2Uuc3Vic3RyaW5nKDIpOmtlfSxKLmRpcm5hbWU9ZnVuY3Rpb24oa2Upe3ZhciBTZT1zZShrZSksSWU9U2VbMF0sVGU9U2VbMV07cmV0dXJuIEllfHxUZT8oVGUmJihUZT1UZS5zdWJzdHIoMCxUZS5sZW5n''@;'; put 'put ''dGgtMSkpLEllK1RlKToiLiJ9LEouYmFzZW5hbWU9ZnVuY3Rpb24oa2UsU2Upe3ZhciBJZT1zZShrZSlbMl07cmV0dXJuIFNlJiZJZS5zdWJzdHIoLTEqU2UubGVuZ3RoKT09PVNlJiYoSWU9SWUuc3Vic3RyKDAsSWUubGVuZ3RoLVNlLmxlbmd0aCkpLEllfSxKLmV4dG5hbWU9ZnVuY3Rpb24o''@;'; put 'put ''a2Upe3JldHVybiBzZShrZSlbM119LEouZm9ybWF0PWZ1bmN0aW9uKGtlKXtpZighWS5pc09iamVjdChrZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiUGFyYW1ldGVyICdwYXRoT2JqZWN0JyBtdXN0IGJlIGFuIG9iamVjdCwgbm90ICIrdHlwZW9mIGtlKTtpZighWS5pc1N0cmluZyhrZS5yb290''@;'; put 'put ''fHwiIikpdGhyb3cgbmV3IFR5cGVFcnJvcigiJ3BhdGhPYmplY3Qucm9vdCcgbXVzdCBiZSBhIHN0cmluZyBvciB1bmRlZmluZWQsIG5vdCAiK3R5cGVvZiBrZS5yb290KTt2YXIgSWU9a2UuZGlyLFRlPWtlLmJhc2V8fCIiO3JldHVybiBJZT9JZVtJZS5sZW5ndGgtMV09PT1KLnNlcD9JZStU''@;'; put 'put ''ZTpJZStKLnNlcCtUZTpUZX0sSi5wYXJzZT1mdW5jdGlvbihrZSl7aWYoIVkuaXNTdHJpbmcoa2UpKXRocm93IG5ldyBUeXBlRXJyb3IoIlBhcmFtZXRlciAncGF0aFN0cmluZycgbXVzdCBiZSBhIHN0cmluZywgbm90ICIrdHlwZW9mIGtlKTt2YXIgU2U9c2Uoa2UpO2lmKCFTZXx8NCE9PVNl''@;'; put 'put ''Lmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIHBhdGggJyIra2UrIiciKTtyZXR1cm57cm9vdDpTZVswXSxkaXI6U2VbMF0rU2VbMV0uc2xpY2UoMCwtMSksYmFzZTpTZVsyXSxleHQ6U2VbM10sbmFtZTpTZVsyXS5zbGljZSgwLFNlWzJdLmxlbmd0aC1TZVszXS5sZW5ndGgp''@;'; put 'put ''fX0sSi5zZXA9IlxcIixKLmRlbGltaXRlcj0iOyI7dmFyIGRlPS9eKFwvP3wpKFtcc1xTXSo/KSgoPzpcLnsxLDJ9fFteXC9dKz98KShcLlteLlwvXSp8KSkoPzpbXC9dKikkLyx2ZT17fTtmdW5jdGlvbiBBZShrZSl7cmV0dXJuIGRlLmV4ZWMoa2UpLnNsaWNlKDEpfXZlLnJlc29sdmU9ZnVu''@;'; put 'put ''Y3Rpb24oKXtmb3IodmFyIGtlPSIiLFNlPSExLEllPWFyZ3VtZW50cy5sZW5ndGgtMTtJZT49LTEmJiFTZTtJZS0tKXt2YXIgVGU9SWU+PTA/YXJndW1lbnRzW0llXTpyZS5jd2QoKTtpZighWS5pc1N0cmluZyhUZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGgucmVz''@;'; put 'put ''b2x2ZSBtdXN0IGJlIHN0cmluZ3MiKTtUZSYmKGtlPVRlKyIvIitrZSxTZT0iLyI9PT1UZVswXSl9cmV0dXJuKFNlPyIvIjoiIikrKGtlPVcoa2Uuc3BsaXQoIi8iKSwhU2UpLmpvaW4oIi8iKSl8fCIuIn0sdmUubm9ybWFsaXplPWZ1bmN0aW9uKGtlKXt2YXIgU2U9dmUuaXNBYnNvbHV0ZShr''@;'; put 'put ''ZSksSWU9a2UmJiIvIj09PWtlW2tlLmxlbmd0aC0xXTtyZXR1cm4oa2U9VyhrZS5zcGxpdCgiLyIpLCFTZSkuam9pbigiLyIpKXx8U2V8fChrZT0iLiIpLGtlJiZJZSYmKGtlKz0iLyIpLChTZT8iLyI6IiIpK2tlfSx2ZS5pc0Fic29sdXRlPWZ1bmN0aW9uKGtlKXtyZXR1cm4iLyI9PT1rZS5j''@;'; put 'put ''aGFyQXQoMCl9LHZlLmpvaW49ZnVuY3Rpb24oKXtmb3IodmFyIGtlPSIiLFNlPTA7U2U8YXJndW1lbnRzLmxlbmd0aDtTZSsrKXt2YXIgSWU9YXJndW1lbnRzW1NlXTtpZighWS5pc1N0cmluZyhJZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGguam9pbiBtdXN0IGJl''@;'; put 'put ''IHN0cmluZ3MiKTtJZSYmKGtlKz1rZT8iLyIrSWU6SWUpfXJldHVybiB2ZS5ub3JtYWxpemUoa2UpfSx2ZS5yZWxhdGl2ZT1mdW5jdGlvbihrZSxTZSl7a2U9dmUucmVzb2x2ZShrZSkuc3Vic3RyKDEpLFNlPXZlLnJlc29sdmUoU2UpLnN1YnN0cigxKTtmb3IodmFyIEllPU4oa2Uuc3BsaXQo''@;'; put 'put ''Ii8iKSksVGU9TihTZS5zcGxpdCgiLyIpKSxNZT1NYXRoLm1pbihJZS5sZW5ndGgsVGUubGVuZ3RoKSxoZT1NZSxPPTA7TzxNZTtPKyspaWYoSWVbT10hPT1UZVtPXSl7aGU9TzticmVha312YXIgej1bXTtmb3IoTz1oZTtPPEllLmxlbmd0aDtPKyspei5wdXNoKCIuLiIpO3JldHVybih6PXou''@;'; put 'put ''Y29uY2F0KFRlLnNsaWNlKGhlKSkpLmpvaW4oIi8iKX0sdmUuX21ha2VMb25nPWZ1bmN0aW9uKGtlKXtyZXR1cm4ga2V9LHZlLmRpcm5hbWU9ZnVuY3Rpb24oa2Upe3ZhciBTZT1BZShrZSksSWU9U2VbMF0sVGU9U2VbMV07cmV0dXJuIEllfHxUZT8oVGUmJihUZT1UZS5zdWJzdHIoMCxUZS5s''@;'; put 'put ''ZW5ndGgtMSkpLEllK1RlKToiLiJ9LHZlLmJhc2VuYW1lPWZ1bmN0aW9uKGtlLFNlKXt2YXIgSWU9QWUoa2UpWzJdO3JldHVybiBTZSYmSWUuc3Vic3RyKC0xKlNlLmxlbmd0aCk9PT1TZSYmKEllPUllLnN1YnN0cigwLEllLmxlbmd0aC1TZS5sZW5ndGgpKSxJZX0sdmUuZXh0bmFtZT1mdW5j''@;'; put 'put ''dGlvbihrZSl7cmV0dXJuIEFlKGtlKVszXX0sdmUuZm9ybWF0PWZ1bmN0aW9uKGtlKXtpZighWS5pc09iamVjdChrZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiUGFyYW1ldGVyICdwYXRoT2JqZWN0JyBtdXN0IGJlIGFuIG9iamVjdCwgbm90ICIrdHlwZW9mIGtlKTtpZighWS5pc1N0cmluZyhr''@;'; put 'put ''ZS5yb290fHwiIikpdGhyb3cgbmV3IFR5cGVFcnJvcigiJ3BhdGhPYmplY3Qucm9vdCcgbXVzdCBiZSBhIHN0cmluZyBvciB1bmRlZmluZWQsIG5vdCAiK3R5cGVvZiBrZS5yb290KTtyZXR1cm4oa2UuZGlyP2tlLmRpcit2ZS5zZXA6IiIpKyhrZS5iYXNlfHwiIil9LHZlLnBhcnNlPWZ1bmN0''@;'; put 'put ''aW9uKGtlKXtpZighWS5pc1N0cmluZyhrZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiUGFyYW1ldGVyICdwYXRoU3RyaW5nJyBtdXN0IGJlIGEgc3RyaW5nLCBub3QgIit0eXBlb2Yga2UpO3ZhciBTZT1BZShrZSk7aWYoIVNlfHw0IT09U2UubGVuZ3RoKXRocm93IG5ldyBUeXBlRXJyb3IoIklu''@;'; put 'put ''dmFsaWQgcGF0aCAnIitrZSsiJyIpO3JldHVybiBTZVsxXT1TZVsxXXx8IiIsU2VbMl09U2VbMl18fCIiLFNlWzNdPVNlWzNdfHwiIix7cm9vdDpTZVswXSxkaXI6U2VbMF0rU2VbMV0uc2xpY2UoMCwtMSksYmFzZTpTZVsyXSxleHQ6U2VbM10sbmFtZTpTZVsyXS5zbGljZSgwLFNlWzJdLmxl''@;'; put 'put ''bmd0aC1TZVszXS5sZW5ndGgpfX0sdmUuc2VwPSIvIix2ZS5kZWxpbWl0ZXI9IjoiLFUuZXhwb3J0cz1hZT9KOnZlLFUuZXhwb3J0cy5wb3NpeD12ZSxVLmV4cG9ydHMud2luMzI9Sn0sNTYzMjooVSxRLGopPT57US5wYmtkZjI9aig4NjM4KSxRLnBia2RmMlN5bmM9aigxMjU3KX0sODYzODoo''@;'; put 'put ''VSxRLGopPT57dmFyIHJlLGFlLFk9aig5NTA5KS5CdWZmZXIsVz1qKDczNTcpLE49aigyMzY4KSx0ZT1qKDEyNTcpLEs9aig3Nzc3KSxKPWouZy5jcnlwdG8mJmouZy5jcnlwdG8uc3VidGxlLHNlPXtzaGE6IlNIQS0xIiwic2hhLTEiOiJTSEEtMSIsc2hhMToiU0hBLTEiLHNoYTI1NjoiU0hB''@;'; put 'put ''LTI1NiIsInNoYS0yNTYiOiJTSEEtMjU2IixzaGEzODQ6IlNIQS0zODQiLCJzaGEtMzg0IjoiU0hBLTM4NCIsInNoYS01MTIiOiJTSEEtNTEyIixzaGE1MTI6IlNIQS01MTIifSxvZT1bXTtmdW5jdGlvbiBjZSgpe3JldHVybiBhZXx8KGFlPWouZy5wcm9jZXNzJiZqLmcucHJvY2Vzcy5uZXh0''@;'; put 'put ''VGljaz9qLmcucHJvY2Vzcy5uZXh0VGljazpqLmcucXVldWVNaWNyb3Rhc2s/ai5nLnF1ZXVlTWljcm90YXNrOmouZy5zZXRJbW1lZGlhdGU/ai5nLnNldEltbWVkaWF0ZTpqLmcuc2V0VGltZW91dCl9ZnVuY3Rpb24gZGUodmUsQWUsa2UsU2UsSWUpe3JldHVybiBKLmltcG9ydEtleSgicmF3''@;'; put 'put ''Iix2ZSx7bmFtZToiUEJLREYyIn0sITEsWyJkZXJpdmVCaXRzIl0pLnRoZW4oZnVuY3Rpb24oVGUpe3JldHVybiBKLmRlcml2ZUJpdHMoe25hbWU6IlBCS0RGMiIsc2FsdDpBZSxpdGVyYXRpb25zOmtlLGhhc2g6e25hbWU6SWV9fSxUZSxTZTw8Myl9KS50aGVuKGZ1bmN0aW9uKFRlKXtyZXR1''@;'; put 'put ''cm4gWS5mcm9tKFRlKX0pfVUuZXhwb3J0cz1mdW5jdGlvbih2ZSxBZSxrZSxTZSxJZSxUZSl7ImZ1bmN0aW9uIj09dHlwZW9mIEllJiYoVGU9SWUsSWU9dm9pZCAwKTt2YXIgaGUsTyxNZT1zZVsoSWU9SWV8fCJzaGExIikudG9Mb3dlckNhc2UoKV07aWYoTWUmJiJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBqLmcuUHJvbWlzZSl7aWYoVyhrZSxTZSksdmU9Syh2ZSxOLCJQYXNzd29yZCIpLEFlPUsoQWUsTiwiU2FsdCIpLCJmdW5jdGlvbiIhPXR5cGVvZiBUZSl0aHJvdyBuZXcgRXJyb3IoIk5vIGNhbGxiYWNrIHByb3ZpZGVkIHRvIHBia2RmMiIpO2hlPWZ1bmN0aW9uKGhlKXtpZihqLmcucHJv''@;'; put 'put ''Y2VzcyYmIWouZy5wcm9jZXNzLmJyb3dzZXJ8fCFKfHwhSi5pbXBvcnRLZXl8fCFKLmRlcml2ZUJpdHMpcmV0dXJuIFByb21pc2UucmVzb2x2ZSghMSk7aWYodm9pZCAwIT09b2VbaGVdKXJldHVybiBvZVtoZV07dmFyIE89ZGUocmU9cmV8fFkuYWxsb2MoOCkscmUsMTAsMTI4LGhlKS50aGVu''@;'; put 'put ''KGZ1bmN0aW9uKCl7cmV0dXJuITB9KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiExfSk7cmV0dXJuIG9lW2hlXT1PLE99KE1lKS50aGVuKGZ1bmN0aW9uKGhlKXtyZXR1cm4gaGU/ZGUodmUsQWUsa2UsU2UsTWUpOnRlKHZlLEFlLGtlLFNlLEllKX0pLE89VGUsaGUudGhlbihmdW5jdGlvbih6''@;'; put 'put ''KXtjZSgpKGZ1bmN0aW9uKCl7TyhudWxsLHopfSl9LGZ1bmN0aW9uKHope2NlKCkoZnVuY3Rpb24oKXtPKHopfSl9KX1lbHNlIGNlKCkoZnVuY3Rpb24oKXt2YXIgaGU7dHJ5e2hlPXRlKHZlLEFlLGtlLFNlLEllKX1jYXRjaChPKXtyZXR1cm4gVGUoTyl9VGUobnVsbCxoZSl9KX19LDIzNjg6''@;'; put 'put ''KFUsUSxqKT0+e3ZhciByZSxhZT1qKDQxNTUpO3JlPWouZy5wcm9jZXNzJiZqLmcucHJvY2Vzcy5icm93c2VyPyJ1dGYtOCI6ai5nLnByb2Nlc3MmJmouZy5wcm9jZXNzLnZlcnNpb24/cGFyc2VJbnQoYWUudmVyc2lvbi5zcGxpdCgiLiIpWzBdLnNsaWNlKDEpLDEwKT49Nj8idXRmLTgiOiJi''@;'; put 'put ''aW5hcnkiOiJ1dGYtOCIsVS5leHBvcnRzPXJlfSw3MzU3OlU9Pnt2YXIgUT1NYXRoLnBvdygyLDMwKS0xO1UuZXhwb3J0cz1mdW5jdGlvbihqLHJlKXtpZigibnVtYmVyIiE9dHlwZW9mIGopdGhyb3cgbmV3IFR5cGVFcnJvcigiSXRlcmF0aW9ucyBub3QgYSBudW1iZXIiKTtpZihqPDApdGhy''@;'; put 'put ''b3cgbmV3IFR5cGVFcnJvcigiQmFkIGl0ZXJhdGlvbnMiKTtpZigibnVtYmVyIiE9dHlwZW9mIHJlKXRocm93IG5ldyBUeXBlRXJyb3IoIktleSBsZW5ndGggbm90IGEgbnVtYmVyIik7aWYocmU8MHx8cmU+UXx8cmUhPXJlKXRocm93IG5ldyBUeXBlRXJyb3IoIkJhZCBrZXkgbGVuZ3RoIil9''@;'; put 'put ''fSwxMjU3OihVLFEsaik9Pnt2YXIgcmU9aig4MDI4KSxhZT1qKDk3ODUpLFk9aig5MDcyKSxXPWooOTUwOSkuQnVmZmVyLE49aig3MzU3KSx0ZT1qKDIzNjgpLEs9aig3Nzc3KSxKPVcuYWxsb2MoMTI4KSxzZT17bWQ1OjE2LHNoYTE6MjAsc2hhMjI0OjI4LHNoYTI1NjozMixzaGEzODQ6NDgs''@;'; put 'put ''c2hhNTEyOjY0LHJtZDE2MDoyMCxyaXBlbWQxNjA6MjB9O2Z1bmN0aW9uIG9lKGNlLGRlLHZlKXt2YXIgaGUsQWU9InJtZDE2MCI9PT0oaGU9Y2UpfHwicmlwZW1kMTYwIj09PWhlP2Z1bmN0aW9uIHooZWUpe3JldHVybihuZXcgYWUpLnVwZGF0ZShlZSkuZGlnZXN0KCl9OiJtZDUiPT09aGU/''@;'; put 'put ''cmU6ZnVuY3Rpb24gTyhlZSl7cmV0dXJuIFkoaGUpLnVwZGF0ZShlZSkuZGlnZXN0KCl9LGtlPSJzaGE1MTIiPT09Y2V8fCJzaGEzODQiPT09Y2U/MTI4OjY0O2RlLmxlbmd0aD5rZT9kZT1BZShkZSk6ZGUubGVuZ3RoPGtlJiYoZGU9Vy5jb25jYXQoW2RlLEpdLGtlKSk7Zm9yKHZhciBTZT1X''@;'; put 'put ''LmFsbG9jVW5zYWZlKGtlK3NlW2NlXSksSWU9Vy5hbGxvY1Vuc2FmZShrZStzZVtjZV0pLFRlPTA7VGU8a2U7VGUrKylTZVtUZV09NTReZGVbVGVdLEllW1RlXT05Ml5kZVtUZV07dmFyIE1lPVcuYWxsb2NVbnNhZmUoa2UrdmUrNCk7U2UuY29weShNZSwwLDAsa2UpLHRoaXMuaXBhZDE9TWUs''@;'; put 'put ''dGhpcy5pcGFkMj1TZSx0aGlzLm9wYWQ9SWUsdGhpcy5hbGc9Y2UsdGhpcy5ibG9ja3NpemU9a2UsdGhpcy5oYXNoPUFlLHRoaXMuc2l6ZT1zZVtjZV19b2UucHJvdG90eXBlLnJ1bj1mdW5jdGlvbihjZSxkZSl7cmV0dXJuIGNlLmNvcHkoZGUsdGhpcy5ibG9ja3NpemUpLHRoaXMuaGFzaChk''@;'; put 'put ''ZSkuY29weSh0aGlzLm9wYWQsdGhpcy5ibG9ja3NpemUpLHRoaXMuaGFzaCh0aGlzLm9wYWQpfSxVLmV4cG9ydHM9ZnVuY3Rpb24oY2UsZGUsdmUsQWUsa2Upe04odmUsQWUpO3ZhciBTZT1uZXcgb2Uoa2U9a2V8fCJzaGExIixjZT1LKGNlLHRlLCJQYXNzd29yZCIpLChkZT1LKGRlLHRlLCJT''@;'; put 'put ''YWx0IikpLmxlbmd0aCksSWU9Vy5hbGxvY1Vuc2FmZShBZSksVGU9Vy5hbGxvY1Vuc2FmZShkZS5sZW5ndGgrNCk7ZGUuY29weShUZSwwLDAsZGUubGVuZ3RoKTtmb3IodmFyIE1lPTAsaGU9c2Vba2VdLE89TWF0aC5jZWlsKEFlL2hlKSx6PTE7ejw9Tzt6Kyspe1RlLndyaXRlVUludDMyQkUo''@;'; put 'put ''eixkZS5sZW5ndGgpO2Zvcih2YXIgZWU9U2UucnVuKFRlLFNlLmlwYWQxKSxuZT1lZSx4PTE7eDx2ZTt4Kyspe25lPVNlLnJ1bihuZSxTZS5pcGFkMik7Zm9yKHZhciBQPTA7UDxoZTtQKyspZWVbUF1ePW5lW1BdfWVlLmNvcHkoSWUsTWUpLE1lKz1oZX1yZXR1cm4gSWV9fSw3Nzc3OihVLFEs''@;'; put 'put ''aik9Pnt2YXIgcmU9aig5NTA5KS5CdWZmZXI7VS5leHBvcnRzPWZ1bmN0aW9uKGFlLFksVyl7aWYocmUuaXNCdWZmZXIoYWUpKXJldHVybiBhZTtpZigic3RyaW5nIj09dHlwZW9mIGFlKXJldHVybiByZS5mcm9tKGFlLFkpO2lmKEFycmF5QnVmZmVyLmlzVmlldyhhZSkpcmV0dXJuIHJlLmZy''@;'; put 'put ''b20oYWUuYnVmZmVyKTt0aHJvdyBuZXcgVHlwZUVycm9yKFcrIiBtdXN0IGJlIGEgc3RyaW5nLCBhIEJ1ZmZlciwgYSB0eXBlZCBhcnJheSBvciBhIERhdGFWaWV3Iil9fSw0MTU1OlU9Pnt2YXIgUSxqLHJlPVUuZXhwb3J0cz17fTtmdW5jdGlvbiBhZSgpe3Rocm93IG5ldyBFcnJvcigic2V0''@;'; put 'put ''VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIFkoKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIFcodmUpe2lmKFE9PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KHZlLDApO2lmKChRPT09YWV8''@;'; put 'put ''fCFRKSYmc2V0VGltZW91dClyZXR1cm4gUT1zZXRUaW1lb3V0LHNldFRpbWVvdXQodmUsMCk7dHJ5e3JldHVybiBRKHZlLDApfWNhdGNoKEFlKXt0cnl7cmV0dXJuIFEuY2FsbChudWxsLHZlLDApfWNhdGNoKGtlKXtyZXR1cm4gUS5jYWxsKHRoaXMsdmUsMCl9fX0hZnVuY3Rpb24oKXt0cnl7''@;'; put 'put ''UT0iZnVuY3Rpb24iPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0OmFlfWNhdGNoKHZlKXtRPWFlfXRyeXtqPSJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0Oll9Y2F0Y2godmUpe2o9WX19KCk7dmFyIE4sdGU9W10sSz0hMSxKPS0xO2Z1bmN0aW9uIHNl''@;'; put 'put ''KCl7SyYmTiYmKEs9ITEsTi5sZW5ndGg/dGU9Ti5jb25jYXQodGUpOko9LTEsdGUubGVuZ3RoJiZvZSgpKX1mdW5jdGlvbiBvZSgpe2lmKCFLKXt2YXIgdmU9VyhzZSk7Sz0hMDtmb3IodmFyIEFlPXRlLmxlbmd0aDtBZTspe2ZvcihOPXRlLHRlPVtdOysrSjxBZTspTiYmTltKXS5ydW4oKTtK''@;'; put 'put ''PS0xLEFlPXRlLmxlbmd0aH1OPW51bGwsSz0hMSxmdW5jdGlvbihrZSl7aWYoaj09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGtlKTtpZigoaj09PVl8fCFqKSYmY2xlYXJUaW1lb3V0KXJldHVybiBqPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQoa2UpO3RyeXtqKGtlKX1j''@;'; put 'put ''YXRjaChTZSl7dHJ5e3JldHVybiBqLmNhbGwobnVsbCxrZSl9Y2F0Y2goSWUpe3JldHVybiBqLmNhbGwodGhpcyxrZSl9fX0odmUpfX1mdW5jdGlvbiBjZSh2ZSxBZSl7dGhpcy5mdW49dmUsdGhpcy5hcnJheT1BZX1mdW5jdGlvbiBkZSgpe31yZS5uZXh0VGljaz1mdW5jdGlvbih2ZSl7dmFy''@;'; put 'put ''IEFlPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIGtlPTE7a2U8YXJndW1lbnRzLmxlbmd0aDtrZSsrKUFlW2tlLTFdPWFyZ3VtZW50c1trZV07dGUucHVzaChuZXcgY2UodmUsQWUpKSwxIT09dGUubGVuZ3RofHxLfHxXKG9lKX0s''@;'; put 'put ''Y2UucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LHJlLnRpdGxlPSJicm93c2VyIixyZS5icm93c2VyPSEwLHJlLmVudj17fSxyZS5hcmd2PVtdLHJlLnZlcnNpb249IiIscmUudmVyc2lvbnM9e30scmUub249ZGUscmUuYWRkTGlzdGVu''@;'; put 'put ''ZXI9ZGUscmUub25jZT1kZSxyZS5vZmY9ZGUscmUucmVtb3ZlTGlzdGVuZXI9ZGUscmUucmVtb3ZlQWxsTGlzdGVuZXJzPWRlLHJlLmVtaXQ9ZGUscmUucHJlcGVuZExpc3RlbmVyPWRlLHJlLnByZXBlbmRPbmNlTGlzdGVuZXI9ZGUscmUubGlzdGVuZXJzPWZ1bmN0aW9uKHZlKXtyZXR1cm5b''@;'; put 'put ''XX0scmUuYmluZGluZz1mdW5jdGlvbih2ZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxyZS5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LHJlLmNoZGlyPWZ1bmN0aW9uKHZlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMg''@;'; put 'put ''bm90IHN1cHBvcnRlZCIpfSxyZS51bWFzaz1mdW5jdGlvbigpe3JldHVybiAwfX0sNjI0NDooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDM2ODkpLGFlPXt9O2FlLnJ1bGVzPWooMzcwNCkubWFwKGZ1bmN0aW9uKFkpe3JldHVybntydWxlOlksc3VmZml4OlkucmVwbGFjZSgvXihc''@;'; put 'put ''KlwufFwhKS8sIiIpLHB1bnlTdWZmaXg6LTEsd2lsZGNhcmQ6IioiPT09WS5jaGFyQXQoMCksZXhjZXB0aW9uOiIhIj09PVkuY2hhckF0KDApfX0pLGFlLmVuZHNXaXRoPWZ1bmN0aW9uKFksVyl7cmV0dXJuLTEhPT1ZLmluZGV4T2YoVyxZLmxlbmd0aC1XLmxlbmd0aCl9LGFlLmZpbmRSdWxl''@;'; put 'put ''PWZ1bmN0aW9uKFkpe3ZhciBXPXJlLnRvQVNDSUkoWSk7cmV0dXJuIGFlLnJ1bGVzLnJlZHVjZShmdW5jdGlvbihOLHRlKXtyZXR1cm4tMT09PXRlLnB1bnlTdWZmaXgmJih0ZS5wdW55U3VmZml4PXJlLnRvQVNDSUkodGUuc3VmZml4KSksYWUuZW5kc1dpdGgoVywiLiIrdGUucHVueVN1ZmZp''@;'; put 'put ''eCl8fFc9PT10ZS5wdW55U3VmZml4P3RlOk59LG51bGwpfSxRLmVycm9yQ29kZXM9e0RPTUFJTl9UT09fU0hPUlQ6IkRvbWFpbiBuYW1lIHRvbyBzaG9ydC4iLERPTUFJTl9UT09fTE9ORzoiRG9tYWluIG5hbWUgdG9vIGxvbmcuIEl0IHNob3VsZCBiZSBubyBtb3JlIHRoYW4gMjU1IGNoYXJz''@;'; put 'put ''LiIsTEFCRUxfU1RBUlRTX1dJVEhfREFTSDoiRG9tYWluIG5hbWUgbGFiZWwgY2FuIG5vdCBzdGFydCB3aXRoIGEgZGFzaC4iLExBQkVMX0VORFNfV0lUSF9EQVNIOiJEb21haW4gbmFtZSBsYWJlbCBjYW4gbm90IGVuZCB3aXRoIGEgZGFzaC4iLExBQkVMX1RPT19MT05HOiJEb21haW4gbmFt''@;'; put 'put ''ZSBsYWJlbCBzaG91bGQgYmUgYXQgbW9zdCA2MyBjaGFycyBsb25nLiIsTEFCRUxfVE9PX1NIT1JUOiJEb21haW4gbmFtZSBsYWJlbCBzaG91bGQgYmUgYXQgbGVhc3QgMSBjaGFyYWN0ZXIgbG9uZy4iLExBQkVMX0lOVkFMSURfQ0hBUlM6IkRvbWFpbiBuYW1lIGxhYmVsIGNhbiBvbmx5IGNv''@;'; put 'put ''bnRhaW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgb3IgZGFzaGVzLiJ9LGFlLnZhbGlkYXRlPWZ1bmN0aW9uKFkpe3ZhciBXPXJlLnRvQVNDSUkoWSk7aWYoVy5sZW5ndGg8MSlyZXR1cm4iRE9NQUlOX1RPT19TSE9SVCI7aWYoVy5sZW5ndGg+MjU1KXJldHVybiJET01BSU5fVE9PX0xPTkci''@;'; put 'put ''O2Zvcih2YXIgTix0ZT1XLnNwbGl0KCIuIiksSz0wO0s8dGUubGVuZ3RoOysrSyl7aWYoIShOPXRlW0tdKS5sZW5ndGgpcmV0dXJuIkxBQkVMX1RPT19TSE9SVCI7aWYoTi5sZW5ndGg+NjMpcmV0dXJuIkxBQkVMX1RPT19MT05HIjtpZigiLSI9PT1OLmNoYXJBdCgwKSlyZXR1cm4iTEFCRUxf''@;'; put 'put ''U1RBUlRTX1dJVEhfREFTSCI7aWYoIi0iPT09Ti5jaGFyQXQoTi5sZW5ndGgtMSkpcmV0dXJuIkxBQkVMX0VORFNfV0lUSF9EQVNIIjtpZighL15bYS16MC05XC1dKyQvLnRlc3QoTikpcmV0dXJuIkxBQkVMX0lOVkFMSURfQ0hBUlMifX0sUS5wYXJzZT1mdW5jdGlvbihZKXtpZigic3RyaW5n''@;'; put 'put ''IiE9dHlwZW9mIFkpdGhyb3cgbmV3IFR5cGVFcnJvcigiRG9tYWluIG5hbWUgbXVzdCBiZSBhIHN0cmluZy4iKTt2YXIgVz1ZLnNsaWNlKDApLnRvTG93ZXJDYXNlKCk7Ii4iPT09Vy5jaGFyQXQoVy5sZW5ndGgtMSkmJihXPVcuc2xpY2UoMCxXLmxlbmd0aC0xKSk7dmFyIE49YWUudmFsaWRh''@;'; put 'put ''dGUoVyk7aWYoTilyZXR1cm57aW5wdXQ6WSxlcnJvcjp7bWVzc2FnZTpRLmVycm9yQ29kZXNbTl0sY29kZTpOfX07dmFyIHRlPXtpbnB1dDpZLHRsZDpudWxsLHNsZDpudWxsLGRvbWFpbjpudWxsLHN1YmRvbWFpbjpudWxsLGxpc3RlZDohMX0sSz1XLnNwbGl0KCIuIik7aWYoImxvY2FsIj09''@;'; put 'put ''PUtbSy5sZW5ndGgtMV0pcmV0dXJuIHRlO3ZhciBKPWZ1bmN0aW9uKCl7cmV0dXJuL3huLS0vLnRlc3QoVykmJih0ZS5kb21haW4mJih0ZS5kb21haW49cmUudG9BU0NJSSh0ZS5kb21haW4pKSx0ZS5zdWJkb21haW4mJih0ZS5zdWJkb21haW49cmUudG9BU0NJSSh0ZS5zdWJkb21haW4pKSks''@;'; put 'put ''dGV9LHNlPWFlLmZpbmRSdWxlKFcpO2lmKCFzZSlyZXR1cm4gSy5sZW5ndGg8Mj90ZToodGUudGxkPUsucG9wKCksdGUuc2xkPUsucG9wKCksdGUuZG9tYWluPVt0ZS5zbGQsdGUudGxkXS5qb2luKCIuIiksSy5sZW5ndGgmJih0ZS5zdWJkb21haW49Sy5wb3AoKSksSigpKTt0ZS5saXN0ZWQ9''@;'; put 'put ''ITA7dmFyIG9lPXNlLnN1ZmZpeC5zcGxpdCgiLiIpLGNlPUsuc2xpY2UoMCxLLmxlbmd0aC1vZS5sZW5ndGgpO3JldHVybiBzZS5leGNlcHRpb24mJmNlLnB1c2gob2Uuc2hpZnQoKSksdGUudGxkPW9lLmpvaW4oIi4iKSxjZS5sZW5ndGg/KHNlLndpbGRjYXJkJiYob2UudW5zaGlmdChjZS5w''@;'; put 'put ''b3AoKSksdGUudGxkPW9lLmpvaW4oIi4iKSksY2UubGVuZ3RoJiYodGUuc2xkPWNlLnBvcCgpLHRlLmRvbWFpbj1bdGUuc2xkLHRlLnRsZF0uam9pbigiLiIpLGNlLmxlbmd0aCYmKHRlLnN1YmRvbWFpbj1jZS5qb2luKCIuIikpKSxKKCkpOkooKX0sUS5nZXQ9ZnVuY3Rpb24oWSl7cmV0dXJu''@;'; put 'put ''IFkmJlEucGFyc2UoWSkuZG9tYWlufHxudWxsfSxRLmlzVmFsaWQ9ZnVuY3Rpb24oWSl7dmFyIFc9US5wYXJzZShZKTtyZXR1cm4gQm9vbGVhbihXLmRvbWFpbiYmVy5saXN0ZWQpfX0sNzkwMDooVSxRLGopPT57US5wdWJsaWNFbmNyeXB0PWooNjU1OSksUS5wcml2YXRlRGVjcnlwdD1qKDYx''@;'; put 'put ''MzgpLFEucHJpdmF0ZUVuY3J5cHQ9ZnVuY3Rpb24ocmUsYWUpe3JldHVybiBRLnB1YmxpY0VuY3J5cHQocmUsYWUsITApfSxRLnB1YmxpY0RlY3J5cHQ9ZnVuY3Rpb24ocmUsYWUpe3JldHVybiBRLnByaXZhdGVEZWNyeXB0KHJlLGFlLCEwKX19LDkxOTk6KFUsUSxqKT0+e3ZhciByZT1qKDM0''@;'; put 'put ''ODIpLGFlPWooOTUwOSkuQnVmZmVyO2Z1bmN0aW9uIFkoVyl7dmFyIE49YWUuYWxsb2NVbnNhZmUoNCk7cmV0dXJuIE4ud3JpdGVVSW50MzJCRShXLDApLE59VS5leHBvcnRzPWZ1bmN0aW9uKFcsTil7Zm9yKHZhciB0ZSxLPWFlLmFsbG9jKDApLEo9MDtLLmxlbmd0aDxOOyl0ZT1ZKEorKyks''@;'; put 'put ''Sz1hZS5jb25jYXQoW0sscmUoInNoYTEiKS51cGRhdGUoVykudXBkYXRlKHRlKS5kaWdlc3QoKV0pO3JldHVybiBLLnNsaWNlKDAsTil9fSwyMTQ0OmZ1bmN0aW9uKFUsUSxqKXshZnVuY3Rpb24ocmUsYWUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBZKHgsUCl7aWYoIXgpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKFB8fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gVyh4LFApe3guc3VwZXJfPVA7dmFyIFY9ZnVuY3Rpb24oKXt9O1YucHJvdG90eXBlPVAucHJvdG90eXBlLHgucHJvdG90eXBlPW5ldyBWLHgucHJvdG90eXBlLmNvbnN0cnVjdG9yPXh9ZnVuY3Rpb24gTih4LFAsVil7aWYoTi5p''@;'; put 'put ''c0JOKHgpKXJldHVybiB4O3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT14JiYoImxlIiE9PVAmJiJiZSIhPT1QfHwoVj1QLFA9MTApLHRoaXMuX2luaXQoeHx8MCxQfHwxMCxWfHwiYmUiKSl9dmFyIHRlOyJvYmplY3Qi''@;'; put 'put ''PT10eXBlb2YgcmU/cmUuZXhwb3J0cz1OOmFlLkJOPU4sTi5CTj1OLE4ud29yZFNpemU9MjY7dHJ5e3RlPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuQnVmZmVyP3dpbmRvdy5CdWZmZXI6aig3MTA4KS5CdWZmZXJ9Y2F0Y2goeCl7fWZ1bmN0aW9uIEsoeCxQ''@;'; put 'put ''KXt2YXIgVj14LmNoYXJDb2RlQXQoUCk7cmV0dXJuIFY+PTY1JiZWPD03MD9WLTU1OlY+PTk3JiZWPD0xMDI/Vi04NzpWLTQ4JjE1fWZ1bmN0aW9uIEooeCxQLFYpe3ZhciBUPUsoeCxWKTtyZXR1cm4gVi0xPj1QJiYoVHw9Syh4LFYtMSk8PDQpLFR9ZnVuY3Rpb24gc2UoeCxQLFYsVCl7Zm9y''@;'; put 'put ''KHZhciBTPTAsRj1NYXRoLm1pbih4Lmxlbmd0aCxWKSx5ZT1QO3llPEY7eWUrKyl7dmFyIENlPXguY2hhckNvZGVBdCh5ZSktNDg7Uyo9VCxTKz1DZT49NDk/Q2UtNDkrMTA6Q2U+PTE3P0NlLTE3KzEwOkNlfXJldHVybiBTfU4uaXNCTj1mdW5jdGlvbih4KXtyZXR1cm4geCBpbnN0YW5jZW9m''@;'; put 'put ''IE58fG51bGwhPT14JiYib2JqZWN0Ij09dHlwZW9mIHgmJnguY29uc3RydWN0b3Iud29yZFNpemU9PT1OLndvcmRTaXplJiZBcnJheS5pc0FycmF5KHgud29yZHMpfSxOLm1heD1mdW5jdGlvbih4LFApe3JldHVybiB4LmNtcChQKT4wP3g6UH0sTi5taW49ZnVuY3Rpb24oeCxQKXtyZXR1cm4g''@;'; put 'put ''eC5jbXAoUCk8MD94OlB9LE4ucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKHgsUCxWKXtpZigibnVtYmVyIj09dHlwZW9mIHgpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoeCxQLFYpO2lmKCJvYmplY3QiPT10eXBlb2YgeClyZXR1cm4gdGhpcy5faW5pdEFycmF5KHgsUCxWKTsiaGV4Ij09PVAm''@;'; put 'put ''JihQPTE2KSxZKFA9PT0oMHxQKSYmUD49MiYmUDw9MzYpO3ZhciBUPTA7Ii0iPT09KHg9eC50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJihUKyssdGhpcy5uZWdhdGl2ZT0xKSxUPHgubGVuZ3RoJiYoMTY9PT1QP3RoaXMuX3BhcnNlSGV4KHgsVCxWKToodGhpcy5fcGFyc2VC''@;'; put 'put ''YXNlKHgsUCxUKSwibGUiPT09ViYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLFAsVikpKX0sTi5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oeCxQLFYpe3g8MCYmKHRoaXMubmVnYXRpdmU9MSx4PS14KSx4PDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ4XSx0''@;'; put 'put ''aGlzLmxlbmd0aD0xKTp4PDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJngseC82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KFkoeDw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZ4LHgvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhp''@;'; put 'put ''cy5sZW5ndGg9MyksImxlIj09PVYmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxQLFYpfSxOLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKHgsUCxWKXtpZihZKCJudW1iZXIiPT10eXBlb2YgeC5sZW5ndGgpLHgubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0''@;'; put 'put ''aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKHgubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIFQ9MDtUPHRoaXMubGVuZ3RoO1QrKyl0aGlzLndvcmRzW1RdPTA7dmFyIFMsRix5ZT0wO2lmKCJiZSI9PT1WKWZvcihUPXgu''@;'; put 'put ''bGVuZ3RoLTEsUz0wO1Q+PTA7VC09Myl0aGlzLndvcmRzW1NdfD0oRj14W1RdfHhbVC0xXTw8OHx4W1QtMl08PDE2KTw8eWUmNjcxMDg4NjMsdGhpcy53b3Jkc1tTKzFdPUY+Pj4yNi15ZSY2NzEwODg2MywoeWUrPTI0KT49MjYmJih5ZS09MjYsUysrKTtlbHNlIGlmKCJsZSI9PT1WKWZvcihU''@;'; put 'put ''PTAsUz0wO1Q8eC5sZW5ndGg7VCs9Myl0aGlzLndvcmRzW1NdfD0oRj14W1RdfHhbVCsxXTw8OHx4W1QrMl08PDE2KTw8eWUmNjcxMDg4NjMsdGhpcy53b3Jkc1tTKzFdPUY+Pj4yNi15ZSY2NzEwODg2MywoeWUrPTI0KT49MjYmJih5ZS09MjYsUysrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxO''@;'; put 'put ''LnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oeCxQLFYpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoeC5sZW5ndGgtUCkvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgVD0wO1Q8dGhpcy5sZW5ndGg7VCsrKXRoaXMud29yZHNbVF09MDt2YXIgUyxGPTAs''@;'; put 'put ''eWU9MDtpZigiYmUiPT09Vilmb3IoVD14Lmxlbmd0aC0xO1Q+PVA7VC09MilTPUooeCxQLFQpPDxGLHRoaXMud29yZHNbeWVdfD02NzEwODg2MyZTLEY+PTE4PyhGLT0xOCx0aGlzLndvcmRzW3llKz0xXXw9Uz4+PjI2KTpGKz04O2Vsc2UgZm9yKFQ9KHgubGVuZ3RoLVApJTI9PTA/UCsxOlA7''@;'; put 'put ''VDx4Lmxlbmd0aDtUKz0yKVM9Sih4LFAsVCk8PEYsdGhpcy53b3Jkc1t5ZV18PTY3MTA4ODYzJlMsRj49MTg/KEYtPTE4LHRoaXMud29yZHNbeWUrPTFdfD1TPj4+MjYpOkYrPTg7dGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKHgsUCxWKXt0aGlzLndvcmRz''@;'; put 'put ''PVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgVD0wLFM9MTtTPD02NzEwODg2MztTKj1QKVQrKztULS0sUz1TL1B8MDtmb3IodmFyIEY9eC5sZW5ndGgtVix5ZT1GJVQsQ2U9TWF0aC5taW4oRixGLXllKStWLERlPTAsUGU9VjtQZTxDZTtQZSs9VClEZT1zZSh4LFBlLFBlK1QsUCksdGhpcy5p''@;'; put 'put ''bXVsbihTKSx0aGlzLndvcmRzWzBdK0RlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPURlOnRoaXMuX2lhZGRuKERlKTtpZigwIT09eWUpe3ZhciBRZT0xO2ZvcihEZT1zZSh4LFBlLHgubGVuZ3RoLFApLFBlPTA7UGU8eWU7UGUrKylRZSo9UDt0aGlzLmltdWxuKFFlKSx0aGlzLndvcmRzWzBd''@;'; put 'put ''K0RlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPURlOnRoaXMuX2lhZGRuKERlKX10aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oeCl7eC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgUD0wO1A8dGhpcy5sZW5ndGg7UCsrKXgud29yZHNbUF09dGhp''@;'; put 'put ''cy53b3Jkc1tQXTt4Lmxlbmd0aD10aGlzLmxlbmd0aCx4Lm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUseC5yZWQ9dGhpcy5yZWR9LE4ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIHg9bmV3IE4obnVsbCk7cmV0dXJuIHRoaXMuY29weSh4KSx4fSxOLnByb3RvdHlwZS5fZXhwYW5kPWZ1''@;'; put 'put ''bmN0aW9uKHgpe2Zvcig7dGhpcy5sZW5ndGg8eDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxOLnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07''@;'; put 'put ''cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LE4ucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSxOLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRo''@;'; put 'put ''aXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBvZT1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAw''@;'; put 'put ''MDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIs''@;'; put 'put ''IjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxjZT1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3''@;'; put 'put ''LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxkZT1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5''@;'; put 'put ''NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1''@;'; put 'put ''NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiB2ZSh4LFAsVil7Vi5uZWdhdGl2ZT1QLm5lZ2F0aXZlXngubmVnYXRpdmU7dmFyIFQ9eC5sZW5ndGgrUC5sZW5ndGh8MDtWLmxlbmd0aD1ULFQ9VC0xfDA7dmFyIFM9MHx4LndvcmRzWzBdLEY9MHxQLndvcmRzWzBdLHllPVMqRixE''@;'; put 'put ''ZT15ZS82NzEwODg2NHwwO1Yud29yZHNbMF09NjcxMDg4NjMmeWU7Zm9yKHZhciBQZT0xO1BlPFQ7UGUrKyl7Zm9yKHZhciBRZT1EZT4+PjI2LCRlPTY3MTA4ODYzJkRlLGd0PU1hdGgubWluKFBlLFAubGVuZ3RoLTEpLHd0PU1hdGgubWF4KDAsUGUteC5sZW5ndGgrMSk7d3Q8PWd0O3d0Kysp''@;'; put 'put ''UWUrPSh5ZT0oUz0wfHgud29yZHNbUGUtd3R8MF0pKihGPTB8UC53b3Jkc1t3dF0pKyRlKS82NzEwODg2NHwwLCRlPTY3MTA4ODYzJnllO1Yud29yZHNbUGVdPTB8JGUsRGU9MHxRZX1yZXR1cm4gMCE9PURlP1Yud29yZHNbUGVdPTB8RGU6Vi5sZW5ndGgtLSxWLnN0cmlwKCl9Ti5wcm90b3R5''@;'; put 'put ''cGUudG9TdHJpbmc9ZnVuY3Rpb24oeCxQKXt2YXIgVjtpZihQPTB8UHx8MSwxNj09PSh4PXh8fDEwKXx8ImhleCI9PT14KXtWPSIiO2Zvcih2YXIgVD0wLFM9MCxGPTA7Rjx0aGlzLmxlbmd0aDtGKyspe3ZhciB5ZT10aGlzLndvcmRzW0ZdLENlPSgxNjc3NzIxNSYoeWU8PFR8UykpLnRvU3Ry''@;'; put 'put ''aW5nKDE2KTtWPTAhPShTPXllPj4+MjQtVCYxNjc3NzIxNSl8fEYhPT10aGlzLmxlbmd0aC0xP29lWzYtQ2UubGVuZ3RoXStDZStWOkNlK1YsKFQrPTIpPj0yNiYmKFQtPTI2LEYtLSl9Zm9yKDAhPT1TJiYoVj1TLnRvU3RyaW5nKDE2KStWKTtWLmxlbmd0aCVQIT0wOylWPSIwIitWO3JldHVy''@;'; put 'put ''biAwIT09dGhpcy5uZWdhdGl2ZSYmKFY9Ii0iK1YpLFZ9aWYoeD09PSgwfHgpJiZ4Pj0yJiZ4PD0zNil7dmFyIERlPWNlW3hdLFBlPWRlW3hdO1Y9IiI7dmFyIFFlPXRoaXMuY2xvbmUoKTtmb3IoUWUubmVnYXRpdmU9MDshUWUuaXNaZXJvKCk7KXt2YXIgJGU9UWUubW9kbihQZSkudG9TdHJp''@;'; put 'put ''bmcoeCk7Vj0oUWU9UWUuaWRpdm4oUGUpKS5pc1plcm8oKT8kZStWOm9lW0RlLSRlLmxlbmd0aF0rJGUrVn1mb3IodGhpcy5pc1plcm8oKSYmKFY9IjAiK1YpO1YubGVuZ3RoJVAhPTA7KVY9IjAiK1Y7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoVj0iLSIrViksVn1ZKCExLCJCYXNlIHNo''@;'; put 'put ''b3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LE4ucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP3grPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT94''@;'; put 'put ''Kz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmWSghMSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LXg6eH0sTi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMudG9TdHJpbmcoMTYpfSxOLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbih4LFApe3JldHVybiBZKHZvaWQgMCE9PXRlKSx0aGlzLnRvQXJyYXlMaWtlKHRlLHgsUCl9LE4ucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShB''@;'; put 'put ''cnJheSx4LFApfSxOLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbih4LFAsVil7dmFyIFQ9dGhpcy5ieXRlTGVuZ3RoKCksUz1WfHxNYXRoLm1heCgxLFQpO1koVDw9UywiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLFkoUz4wLCJSZXF1ZXN0ZWQgYXJyYXkg''@;'; put 'put ''bGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIEYseWUsQ2U9ImxlIj09PVAsRGU9bmV3IHgoUyksUGU9dGhpcy5jbG9uZSgpO2lmKENlKXtmb3IoeWU9MDshUGUuaXNaZXJvKCk7eWUrKylGPVBlLmFuZGxuKDI1NSksUGUuaXVzaHJuKDgpLERlW3llXT1GO2Zvcig7eWU8Uzt5ZSsrKURl''@;'; put 'put ''W3llXT0wfWVsc2V7Zm9yKHllPTA7eWU8Uy1UO3llKyspRGVbeWVdPTA7Zm9yKHllPTA7IVBlLmlzWmVybygpO3llKyspRj1QZS5hbmRsbigyNTUpLFBlLml1c2hybig4KSxEZVtTLXllLTFdPUZ9cmV0dXJuIERlfSxOLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24o''@;'; put 'put ''eCl7cmV0dXJuIDMyLU1hdGguY2x6MzIoeCl9OmZ1bmN0aW9uKHgpe3ZhciBQPXgsVj0wO3JldHVybiBQPj00MDk2JiYoVis9MTMsUD4+Pj0xMyksUD49NjQmJihWKz03LFA+Pj49NyksUD49OCYmKFYrPTQsUD4+Pj00KSxQPj0yJiYoVis9MixQPj4+PTIpLFYrUH0sTi5wcm90b3R5cGUuX3pl''@;'; put 'put ''cm9CaXRzPWZ1bmN0aW9uKHgpe2lmKDA9PT14KXJldHVybiAyNjt2YXIgUD14LFY9MDtyZXR1cm4gMD09KDgxOTEmUCkmJihWKz0xMyxQPj4+PTEzKSwwPT0oMTI3JlApJiYoVis9NyxQPj4+PTcpLDA9PSgxNSZQKSYmKFYrPTQsUD4+Pj00KSwwPT0oMyZQKSYmKFYrPTIsUD4+Pj0yKSwwPT0o''@;'; put 'put ''MSZQKSYmVisrLFZ9LE4ucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciBQPXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK1B9LE4ucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5p''@;'; put 'put ''c1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIHg9MCxQPTA7UDx0aGlzLmxlbmd0aDtQKyspe3ZhciBWPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbUF0pO2lmKHgrPVYsMjYhPT1WKWJyZWFrfXJldHVybiB4fSxOLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgu''@;'; put 'put ''Y2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxOLnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oeCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oeCkuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxOLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbih4KXtyZXR1cm4g''@;'; put 'put ''dGhpcy50ZXN0bih4LTEpP3RoaXMubm90bih4KS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxOLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sTi5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVn''@;'; put 'put ''KCl9LE4ucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LE4ucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24oeCl7Zm9yKDt0aGlzLmxlbmd0aDx4Lmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zv''@;'; put 'put ''cih2YXIgUD0wO1A8eC5sZW5ndGg7UCsrKXRoaXMud29yZHNbUF09dGhpcy53b3Jkc1tQXXx4LndvcmRzW1BdO3JldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmlvcj1mdW5jdGlvbih4KXtyZXR1cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXx4Lm5lZ2F0aXZlKSksdGhpcy5pdW9yKHgp''@;'; put 'put ''fSxOLnByb3RvdHlwZS5vcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcih4KTp4LmNsb25lKCkuaW9yKHRoaXMpfSxOLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUo''@;'; put 'put ''KS5pdW9yKHgpOnguY2xvbmUoKS5pdW9yKHRoaXMpfSxOLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbih4KXt2YXIgUDtQPXRoaXMubGVuZ3RoPngubGVuZ3RoP3g6dGhpcztmb3IodmFyIFY9MDtWPFAubGVuZ3RoO1YrKyl0aGlzLndvcmRzW1ZdPXRoaXMud29yZHNbVl0meC53b3Jkc1tWXTty''@;'; put 'put ''ZXR1cm4gdGhpcy5sZW5ndGg9UC5sZW5ndGgsdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKHgpe3JldHVybiBZKDA9PSh0aGlzLm5lZ2F0aXZlfHgubmVnYXRpdmUpKSx0aGlzLml1YW5kKHgpfSxOLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''bGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKHgpOnguY2xvbmUoKS5pYW5kKHRoaXMpfSxOLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoeCk6eC5jbG9uZSgpLml1YW5kKHRoaXMpfSxOLnBy''@;'; put 'put ''b3RvdHlwZS5pdXhvcj1mdW5jdGlvbih4KXt2YXIgUCxWO3RoaXMubGVuZ3RoPngubGVuZ3RoPyhQPXRoaXMsVj14KTooUD14LFY9dGhpcyk7Zm9yKHZhciBUPTA7VDxWLmxlbmd0aDtUKyspdGhpcy53b3Jkc1tUXT1QLndvcmRzW1RdXlYud29yZHNbVF07aWYodGhpcyE9PVApZm9yKDtUPFAu''@;'; put 'put ''bGVuZ3RoO1QrKyl0aGlzLndvcmRzW1RdPVAud29yZHNbVF07cmV0dXJuIHRoaXMubGVuZ3RoPVAubGVuZ3RoLHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbih4KXtyZXR1cm4gWSgwPT0odGhpcy5uZWdhdGl2ZXx4Lm5lZ2F0aXZlKSksdGhpcy5pdXhvcih4KX0sTi5w''@;'; put 'put ''cm90b3R5cGUueG9yPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxlbmd0aD54Lmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcih4KTp4LmNsb25lKCkuaXhvcih0aGlzKX0sTi5wcm90b3R5cGUudXhvcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sZW5ndGg+eC5sZW5ndGg/dGhpcy5jbG9uZSgp''@;'; put 'put ''Lml1eG9yKHgpOnguY2xvbmUoKS5pdXhvcih0aGlzKX0sTi5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBQPTB8TWF0aC5jZWlsKHgvMjYpLFY9eCUyNjt0aGlzLl9leHBhbmQoUCksVj4wJiZQLS07Zm9yKHZhciBUPTA7VDxQO1Qr''@;'; put 'put ''Kyl0aGlzLndvcmRzW1RdPTY3MTA4ODYzJn50aGlzLndvcmRzW1RdO3JldHVybiBWPjAmJih0aGlzLndvcmRzW1RdPX50aGlzLndvcmRzW1RdJjY3MTA4ODYzPj4yNi1WKSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90''@;'; put 'put ''bih4KX0sTi5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbih4LFApe1koIm51bWJlciI9PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgVj14LzI2fDAsVD14JTI2O3JldHVybiB0aGlzLl9leHBhbmQoVisxKSx0aGlzLndvcmRzW1ZdPVA/dGhpcy53b3Jkc1tWXXwxPDxUOnRoaXMud29yZHNbVl0mfigxPDxU''@;'; put 'put ''KSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oeCl7dmFyIFAsVixUO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09eC5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLFA9dGhpcy5pc3ViKHgpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtp''@;'; put 'put ''ZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXgubmVnYXRpdmUpcmV0dXJuIHgubmVnYXRpdmU9MCxQPXRoaXMuaXN1Yih4KSx4Lm5lZ2F0aXZlPTEsUC5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD54Lmxlbmd0aD8oVj10aGlzLFQ9eCk6KFY9eCxUPXRoaXMpO2Zvcih2YXIgUz0wLEY9MDtGPFQu''@;'; put 'put ''bGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPTY3MTA4ODYzJihQPSgwfFYud29yZHNbRl0pKygwfFQud29yZHNbRl0pK1MpLFM9UD4+PjI2O2Zvcig7MCE9PVMmJkY8Vi5sZW5ndGg7RisrKXRoaXMud29yZHNbRl09NjcxMDg4NjMmKFA9KDB8Vi53b3Jkc1tGXSkrUyksUz1QPj4+MjY7aWYodGhp''@;'; put 'put ''cy5sZW5ndGg9Vi5sZW5ndGgsMCE9PVMpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09Uyx0aGlzLmxlbmd0aCsrO2Vsc2UgaWYoViE9PXRoaXMpZm9yKDtGPFYubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPVYud29yZHNbRl07cmV0dXJuIHRoaXN9LE4ucHJvdG90eXBlLmFkZD1mdW5jdGlvbih4''@;'; put 'put ''KXt2YXIgUDtyZXR1cm4gMCE9PXgubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyh4Lm5lZ2F0aXZlPTAsUD10aGlzLnN1Yih4KSx4Lm5lZ2F0aXZlXj0xLFApOjA9PT14Lm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLFA9eC5zdWIodGhpcyksdGhpcy5u''@;'; put 'put ''ZWdhdGl2ZT0xLFApOnRoaXMubGVuZ3RoPngubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKHgpOnguY2xvbmUoKS5pYWRkKHRoaXMpfSxOLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKHgpe2lmKDAhPT14Lm5lZ2F0aXZlKXt4Lm5lZ2F0aXZlPTA7dmFyIFA9dGhpcy5pYWRkKHgpO3JldHVybiB4''@;'; put 'put ''Lm5lZ2F0aXZlPTEsUC5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZCh4KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgVixULFM9dGhpcy5jbXAoeCk7aWYoMD09PVMpcmV0dXJuIHRoaXMubmVnYXRp''@;'; put 'put ''dmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO1M+MD8oVj10aGlzLFQ9eCk6KFY9eCxUPXRoaXMpO2Zvcih2YXIgRj0wLHllPTA7eWU8VC5sZW5ndGg7eWUrKylGPShQPSgwfFYud29yZHNbeWVdKS0oMHxULndvcmRzW3llXSkrRik+PjI2LHRoaXMud29yZHNbeWVdPTY3''@;'; put 'put ''MTA4ODYzJlA7Zm9yKDswIT09RiYmeWU8Vi5sZW5ndGg7eWUrKylGPShQPSgwfFYud29yZHNbeWVdKStGKT4+MjYsdGhpcy53b3Jkc1t5ZV09NjcxMDg4NjMmUDtpZigwPT09RiYmeWU8Vi5sZW5ndGgmJlYhPT10aGlzKWZvcig7eWU8Vi5sZW5ndGg7eWUrKyl0aGlzLndvcmRzW3llXT1WLndv''@;'; put 'put ''cmRzW3llXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgseWUpLFYhPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLnN1Yj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoeCl9O3ZhciBBZT1mdW5jdGlv''@;'; put 'put ''bih4LFAsVil7dmFyIFQsUyxGLHllPXgud29yZHMsQ2U9UC53b3JkcyxEZT1WLndvcmRzLFBlPTAsUWU9MHx5ZVswXSwkZT04MTkxJlFlLGd0PVFlPj4+MTMsd3Q9MHx5ZVsxXSxtdD04MTkxJnd0LHZ0PXd0Pj4+MTMsQXQ9MHx5ZVsyXSxodD04MTkxJkF0LEJ0PUF0Pj4+MTMsb249MHx5ZVsz''@;'; put 'put ''XSxfdD04MTkxJm9uLHR0PW9uPj4+MTMsZXQ9MHx5ZVs0XSxsdD04MTkxJmV0LEx0PWV0Pj4+MTMsQ3Q9MHx5ZVs1XSxmdD04MTkxJkN0LEh0PUN0Pj4+MTMsR2U9MHx5ZVs2XSxVZT04MTkxJkdlLHl0PUdlPj4+MTMsanQ9MHx5ZVs3XSxKdD04MTkxJmp0LGduPWp0Pj4+MTMsZG49MHx5ZVs4''@;'; put 'put ''XSx5bj04MTkxJmRuLGxuPWRuPj4+MTMsTm49MHx5ZVs5XSxibj04MTkxJk5uLGVyPU5uPj4+MTMsc3I9MHxDZVswXSxYbj04MTkxJnNyLEZyPXNyPj4+MTMseHI9MHxDZVsxXSxxdD04MTkxJnhyLHByPXhyPj4+MTMsbnI9MHxDZVsyXSxBbj04MTkxJm5yLHFuPW5yPj4+MTMsV3Q9MHxDZVsz''@;'; put 'put ''XSxwbj04MTkxJld0LEtuPVd0Pj4+MTMsTnQ9MHxDZVs0XSxzbj04MTkxJk50LFVuPU50Pj4+MTMsd249MHxDZVs1XSx0bj04MTkxJnduLHpuPXduPj4+MTMsVHI9MHxDZVs2XSxCbj04MTkxJlRyLGtyPVRyPj4+MTMsbW49MHxDZVs3XSx1bj04MTkxJm1uLGNuPW1uPj4+MTMsX249MHxDZVs4''@;'; put 'put ''XSxHdD04MTkxJl9uLGtuPV9uPj4+MTMsVm49MHxDZVs5XSxlbj04MTkxJlZuLEluPVZuPj4+MTM7Vi5uZWdhdGl2ZT14Lm5lZ2F0aXZlXlAubmVnYXRpdmUsVi5sZW5ndGg9MTk7dmFyIEpuPShQZSsoVD1NYXRoLmltdWwoJGUsWG4pKXwwKSsoKDgxOTEmKFM9KFM9TWF0aC5pbXVsKCRlLEZy''@;'; put 'put ''KSkrTWF0aC5pbXVsKGd0LFhuKXwwKSk8PDEzKXwwO1BlPSgoRj1NYXRoLmltdWwoZ3QsRnIpKSsoUz4+PjEzKXwwKSsoSm4+Pj4yNil8MCxKbiY9NjcxMDg4NjMsVD1NYXRoLmltdWwobXQsWG4pLFM9KFM9TWF0aC5pbXVsKG10LEZyKSkrTWF0aC5pbXVsKHZ0LFhuKXwwLEY9TWF0aC5pbXVs''@;'; put 'put ''KHZ0LEZyKTt2YXIgb3I9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLHF0KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUscHIpfDApK01hdGguaW11bChndCxxdCl8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QscHIpfDApKyhTPj4+MTMpfDApKyhvcj4+PjI2KXwwLG9y''@;'; put 'put ''Jj02NzEwODg2MyxUPU1hdGguaW11bChodCxYbiksUz0oUz1NYXRoLmltdWwoaHQsRnIpKStNYXRoLmltdWwoQnQsWG4pfDAsRj1NYXRoLmltdWwoQnQsRnIpLFQ9VCtNYXRoLmltdWwobXQscXQpfDAsUz0oUz1TK01hdGguaW11bChtdCxwcil8MCkrTWF0aC5pbXVsKHZ0LHF0KXwwLEY9RitN''@;'; put 'put ''YXRoLmltdWwodnQscHIpfDA7dmFyIGdyPShQZSsoVD1UK01hdGguaW11bCgkZSxBbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLHFuKXwwKStNYXRoLmltdWwoZ3QsQW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LHFuKXwwKSsoUz4+PjEzKXwwKSsoZ3I+''@;'; put 'put ''Pj4yNil8MCxnciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoX3QsWG4pLFM9KFM9TWF0aC5pbXVsKF90LEZyKSkrTWF0aC5pbXVsKHR0LFhuKXwwLEY9TWF0aC5pbXVsKHR0LEZyKSxUPVQrTWF0aC5pbXVsKGh0LHF0KXwwLFM9KFM9UytNYXRoLmltdWwoaHQscHIpfDApK01hdGguaW11bChCdCxx''@;'; put 'put ''dCl8MCxGPUYrTWF0aC5pbXVsKEJ0LHByKXwwLFQ9VCtNYXRoLmltdWwobXQsQW4pfDAsUz0oUz1TK01hdGguaW11bChtdCxxbil8MCkrTWF0aC5pbXVsKHZ0LEFuKXwwLEY9RitNYXRoLmltdWwodnQscW4pfDA7dmFyIEtyPShQZSsoVD1UK01hdGguaW11bCgkZSxwbil8MCl8MCkrKCg4MTkx''@;'; put 'put ''JihTPShTPVMrTWF0aC5pbXVsKCRlLEtuKXwwKStNYXRoLmltdWwoZ3QscG4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LEtuKXwwKSsoUz4+PjEzKXwwKSsoS3I+Pj4yNil8MCxLciY9NjcxMDg4NjMsVD1NYXRoLmltdWwobHQsWG4pLFM9KFM9TWF0aC5pbXVsKGx0LEZyKSkr''@;'; put 'put ''TWF0aC5pbXVsKEx0LFhuKXwwLEY9TWF0aC5pbXVsKEx0LEZyKSxUPVQrTWF0aC5pbXVsKF90LHF0KXwwLFM9KFM9UytNYXRoLmltdWwoX3QscHIpfDApK01hdGguaW11bCh0dCxxdCl8MCxGPUYrTWF0aC5pbXVsKHR0LHByKXwwLFQ9VCtNYXRoLmltdWwoaHQsQW4pfDAsUz0oUz1TK01hdGgu''@;'; put 'put ''aW11bChodCxxbil8MCkrTWF0aC5pbXVsKEJ0LEFuKXwwLEY9RitNYXRoLmltdWwoQnQscW4pfDAsVD1UK01hdGguaW11bChtdCxwbil8MCxTPShTPVMrTWF0aC5pbXVsKG10LEtuKXwwKStNYXRoLmltdWwodnQscG4pfDAsRj1GK01hdGguaW11bCh2dCxLbil8MDt2YXIgVnI9KFBlKyhUPVQr''@;'; put 'put ''TWF0aC5pbXVsKCRlLHNuKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsVW4pfDApK01hdGguaW11bChndCxzbil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QsVW4pfDApKyhTPj4+MTMpfDApKyhWcj4+PjI2KXwwLFZyJj02NzEwODg2MyxUPU1hdGguaW11bChm''@;'; put 'put ''dCxYbiksUz0oUz1NYXRoLmltdWwoZnQsRnIpKStNYXRoLmltdWwoSHQsWG4pfDAsRj1NYXRoLmltdWwoSHQsRnIpLFQ9VCtNYXRoLmltdWwobHQscXQpfDAsUz0oUz1TK01hdGguaW11bChsdCxwcil8MCkrTWF0aC5pbXVsKEx0LHF0KXwwLEY9RitNYXRoLmltdWwoTHQscHIpfDAsVD1UK01h''@;'; put 'put ''dGguaW11bChfdCxBbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LHFuKXwwKStNYXRoLmltdWwodHQsQW4pfDAsRj1GK01hdGguaW11bCh0dCxxbil8MCxUPVQrTWF0aC5pbXVsKGh0LHBuKXwwLFM9KFM9UytNYXRoLmltdWwoaHQsS24pfDApK01hdGguaW11bChCdCxwbil8MCxGPUYrTWF0aC5p''@;'; put 'put ''bXVsKEJ0LEtuKXwwLFQ9VCtNYXRoLmltdWwobXQsc24pfDAsUz0oUz1TK01hdGguaW11bChtdCxVbil8MCkrTWF0aC5pbXVsKHZ0LHNuKXwwLEY9RitNYXRoLmltdWwodnQsVW4pfDA7dmFyIGlpPShQZSsoVD1UK01hdGguaW11bCgkZSx0bil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5p''@;'; put 'put ''bXVsKCRlLHpuKXwwKStNYXRoLmltdWwoZ3QsdG4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LHpuKXwwKSsoUz4+PjEzKXwwKSsoaWk+Pj4yNil8MCxpaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoVWUsWG4pLFM9KFM9TWF0aC5pbXVsKFVlLEZyKSkrTWF0aC5pbXVsKHl0LFhu''@;'; put 'put ''KXwwLEY9TWF0aC5pbXVsKHl0LEZyKSxUPVQrTWF0aC5pbXVsKGZ0LHF0KXwwLFM9KFM9UytNYXRoLmltdWwoZnQscHIpfDApK01hdGguaW11bChIdCxxdCl8MCxGPUYrTWF0aC5pbXVsKEh0LHByKXwwLFQ9VCtNYXRoLmltdWwobHQsQW4pfDAsUz0oUz1TK01hdGguaW11bChsdCxxbil8MCkr''@;'; put 'put ''TWF0aC5pbXVsKEx0LEFuKXwwLEY9RitNYXRoLmltdWwoTHQscW4pfDAsVD1UK01hdGguaW11bChfdCxwbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LEtuKXwwKStNYXRoLmltdWwodHQscG4pfDAsRj1GK01hdGguaW11bCh0dCxLbil8MCxUPVQrTWF0aC5pbXVsKGh0LHNuKXwwLFM9KFM9UytN''@;'; put 'put ''YXRoLmltdWwoaHQsVW4pfDApK01hdGguaW11bChCdCxzbil8MCxGPUYrTWF0aC5pbXVsKEJ0LFVuKXwwLFQ9VCtNYXRoLmltdWwobXQsdG4pfDAsUz0oUz1TK01hdGguaW11bChtdCx6bil8MCkrTWF0aC5pbXVsKHZ0LHRuKXwwLEY9RitNYXRoLmltdWwodnQsem4pfDA7dmFyIFJyPShQZSso''@;'; put 'put ''VD1UK01hdGguaW11bCgkZSxCbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLGtyKXwwKStNYXRoLmltdWwoZ3QsQm4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LGtyKXwwKSsoUz4+PjEzKXwwKSsoUnI+Pj4yNil8MCxSciY9NjcxMDg4NjMsVD1NYXRoLmlt''@;'; put 'put ''dWwoSnQsWG4pLFM9KFM9TWF0aC5pbXVsKEp0LEZyKSkrTWF0aC5pbXVsKGduLFhuKXwwLEY9TWF0aC5pbXVsKGduLEZyKSxUPVQrTWF0aC5pbXVsKFVlLHF0KXwwLFM9KFM9UytNYXRoLmltdWwoVWUscHIpfDApK01hdGguaW11bCh5dCxxdCl8MCxGPUYrTWF0aC5pbXVsKHl0LHByKXwwLFQ9''@;'; put 'put ''VCtNYXRoLmltdWwoZnQsQW4pfDAsUz0oUz1TK01hdGguaW11bChmdCxxbil8MCkrTWF0aC5pbXVsKEh0LEFuKXwwLEY9RitNYXRoLmltdWwoSHQscW4pfDAsVD1UK01hdGguaW11bChsdCxwbil8MCxTPShTPVMrTWF0aC5pbXVsKGx0LEtuKXwwKStNYXRoLmltdWwoTHQscG4pfDAsRj1GK01h''@;'; put 'put ''dGguaW11bChMdCxLbil8MCxUPVQrTWF0aC5pbXVsKF90LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoX3QsVW4pfDApK01hdGguaW11bCh0dCxzbil8MCxGPUYrTWF0aC5pbXVsKHR0LFVuKXwwLFQ9VCtNYXRoLmltdWwoaHQsdG4pfDAsUz0oUz1TK01hdGguaW11bChodCx6bil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKEJ0LHRuKXwwLEY9RitNYXRoLmltdWwoQnQsem4pfDAsVD1UK01hdGguaW11bChtdCxCbil8MCxTPShTPVMrTWF0aC5pbXVsKG10LGtyKXwwKStNYXRoLmltdWwodnQsQm4pfDAsRj1GK01hdGguaW11bCh2dCxrcil8MDt2YXIgbGk9KFBlKyhUPVQrTWF0aC5pbXVsKCRlLHVuKXwwKXww''@;'; put 'put ''KSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoJGUsY24pfDApK01hdGguaW11bChndCx1bil8MCkpPDwxMyl8MDtQZT0oKEY9RitNYXRoLmltdWwoZ3QsY24pfDApKyhTPj4+MTMpfDApKyhsaT4+PjI2KXwwLGxpJj02NzEwODg2MyxUPU1hdGguaW11bCh5bixYbiksUz0oUz1NYXRoLmltdWwo''@;'; put 'put ''eW4sRnIpKStNYXRoLmltdWwobG4sWG4pfDAsRj1NYXRoLmltdWwobG4sRnIpLFQ9VCtNYXRoLmltdWwoSnQscXQpfDAsUz0oUz1TK01hdGguaW11bChKdCxwcil8MCkrTWF0aC5pbXVsKGduLHF0KXwwLEY9RitNYXRoLmltdWwoZ24scHIpfDAsVD1UK01hdGguaW11bChVZSxBbil8MCxTPShT''@;'; put 'put ''PVMrTWF0aC5pbXVsKFVlLHFuKXwwKStNYXRoLmltdWwoeXQsQW4pfDAsRj1GK01hdGguaW11bCh5dCxxbil8MCxUPVQrTWF0aC5pbXVsKGZ0LHBuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsS24pfDApK01hdGguaW11bChIdCxwbil8MCxGPUYrTWF0aC5pbXVsKEh0LEtuKXwwLFQ9VCtNYXRo''@;'; put 'put ''LmltdWwobHQsc24pfDAsUz0oUz1TK01hdGguaW11bChsdCxVbil8MCkrTWF0aC5pbXVsKEx0LHNuKXwwLEY9RitNYXRoLmltdWwoTHQsVW4pfDAsVD1UK01hdGguaW11bChfdCx0bil8MCxTPShTPVMrTWF0aC5pbXVsKF90LHpuKXwwKStNYXRoLmltdWwodHQsdG4pfDAsRj1GK01hdGguaW11''@;'; put 'put ''bCh0dCx6bil8MCxUPVQrTWF0aC5pbXVsKGh0LEJuKXwwLFM9KFM9UytNYXRoLmltdWwoaHQsa3IpfDApK01hdGguaW11bChCdCxCbil8MCxGPUYrTWF0aC5pbXVsKEJ0LGtyKXwwLFQ9VCtNYXRoLmltdWwobXQsdW4pfDAsUz0oUz1TK01hdGguaW11bChtdCxjbil8MCkrTWF0aC5pbXVsKHZ0''@;'; put 'put ''LHVuKXwwLEY9RitNYXRoLmltdWwodnQsY24pfDA7dmFyIE1pPShQZSsoVD1UK01hdGguaW11bCgkZSxHdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLGtuKXwwKStNYXRoLmltdWwoZ3QsR3QpfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LGtuKXwwKSsoUz4+''@;'; put 'put ''PjEzKXwwKSsoTWk+Pj4yNil8MCxNaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sWG4pLFM9KFM9TWF0aC5pbXVsKGJuLEZyKSkrTWF0aC5pbXVsKGVyLFhuKXwwLEY9TWF0aC5pbXVsKGVyLEZyKSxUPVQrTWF0aC5pbXVsKHluLHF0KXwwLFM9KFM9UytNYXRoLmltdWwoeW4scHIpfDApK01h''@;'; put 'put ''dGguaW11bChsbixxdCl8MCxGPUYrTWF0aC5pbXVsKGxuLHByKXwwLFQ9VCtNYXRoLmltdWwoSnQsQW4pfDAsUz0oUz1TK01hdGguaW11bChKdCxxbil8MCkrTWF0aC5pbXVsKGduLEFuKXwwLEY9RitNYXRoLmltdWwoZ24scW4pfDAsVD1UK01hdGguaW11bChVZSxwbil8MCxTPShTPVMrTWF0''@;'; put 'put ''aC5pbXVsKFVlLEtuKXwwKStNYXRoLmltdWwoeXQscG4pfDAsRj1GK01hdGguaW11bCh5dCxLbil8MCxUPVQrTWF0aC5pbXVsKGZ0LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsVW4pfDApK01hdGguaW11bChIdCxzbil8MCxGPUYrTWF0aC5pbXVsKEh0LFVuKXwwLFQ9VCtNYXRoLmltdWwo''@;'; put 'put ''bHQsdG4pfDAsUz0oUz1TK01hdGguaW11bChsdCx6bil8MCkrTWF0aC5pbXVsKEx0LHRuKXwwLEY9RitNYXRoLmltdWwoTHQsem4pfDAsVD1UK01hdGguaW11bChfdCxCbil8MCxTPShTPVMrTWF0aC5pbXVsKF90LGtyKXwwKStNYXRoLmltdWwodHQsQm4pfDAsRj1GK01hdGguaW11bCh0dCxr''@;'; put 'put ''cil8MCxUPVQrTWF0aC5pbXVsKGh0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwoaHQsY24pfDApK01hdGguaW11bChCdCx1bil8MCxGPUYrTWF0aC5pbXVsKEJ0LGNuKXwwLFQ9VCtNYXRoLmltdWwobXQsR3QpfDAsUz0oUz1TK01hdGguaW11bChtdCxrbil8MCkrTWF0aC5pbXVsKHZ0LEd0KXww''@;'; put 'put ''LEY9RitNYXRoLmltdWwodnQsa24pfDA7dmFyIG8wPShQZSsoVD1UK01hdGguaW11bCgkZSxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKCRlLEluKXwwKStNYXRoLmltdWwoZ3QsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGd0LEluKXwwKSsoUz4+PjEzKXww''@;'; put 'put ''KSsobzA+Pj4yNil8MCxvMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4scXQpLFM9KFM9TWF0aC5pbXVsKGJuLHByKSkrTWF0aC5pbXVsKGVyLHF0KXwwLEY9TWF0aC5pbXVsKGVyLHByKSxUPVQrTWF0aC5pbXVsKHluLEFuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4scW4pfDApK01hdGguaW11''@;'; put 'put ''bChsbixBbil8MCxGPUYrTWF0aC5pbXVsKGxuLHFuKXwwLFQ9VCtNYXRoLmltdWwoSnQscG4pfDAsUz0oUz1TK01hdGguaW11bChKdCxLbil8MCkrTWF0aC5pbXVsKGduLHBuKXwwLEY9RitNYXRoLmltdWwoZ24sS24pfDAsVD1UK01hdGguaW11bChVZSxzbil8MCxTPShTPVMrTWF0aC5pbXVs''@;'; put 'put ''KFVlLFVuKXwwKStNYXRoLmltdWwoeXQsc24pfDAsRj1GK01hdGguaW11bCh5dCxVbil8MCxUPVQrTWF0aC5pbXVsKGZ0LHRuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsem4pfDApK01hdGguaW11bChIdCx0bil8MCxGPUYrTWF0aC5pbXVsKEh0LHpuKXwwLFQ9VCtNYXRoLmltdWwobHQsQm4p''@;'; put 'put ''fDAsUz0oUz1TK01hdGguaW11bChsdCxrcil8MCkrTWF0aC5pbXVsKEx0LEJuKXwwLEY9RitNYXRoLmltdWwoTHQsa3IpfDAsVD1UK01hdGguaW11bChfdCx1bil8MCxTPShTPVMrTWF0aC5pbXVsKF90LGNuKXwwKStNYXRoLmltdWwodHQsdW4pfDAsRj1GK01hdGguaW11bCh0dCxjbil8MCxU''@;'; put 'put ''PVQrTWF0aC5pbXVsKGh0LEd0KXwwLFM9KFM9UytNYXRoLmltdWwoaHQsa24pfDApK01hdGguaW11bChCdCxHdCl8MCxGPUYrTWF0aC5pbXVsKEJ0LGtuKXwwO3ZhciBuMD0oUGUrKFQ9VCtNYXRoLmltdWwobXQsZW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChtdCxJbil8MCkr''@;'; put 'put ''TWF0aC5pbXVsKHZ0LGVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bCh2dCxJbil8MCkrKFM+Pj4xMyl8MCkrKG4wPj4+MjYpfDAsbjAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGJuLEFuKSxTPShTPU1hdGguaW11bChibixxbikpK01hdGguaW11bChlcixBbil8MCxGPU1hdGguaW11''@;'; put 'put ''bChlcixxbiksVD1UK01hdGguaW11bCh5bixwbil8MCxTPShTPVMrTWF0aC5pbXVsKHluLEtuKXwwKStNYXRoLmltdWwobG4scG4pfDAsRj1GK01hdGguaW11bChsbixLbil8MCxUPVQrTWF0aC5pbXVsKEp0LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsVW4pfDApK01hdGguaW11bChnbixz''@;'; put 'put ''bil8MCxGPUYrTWF0aC5pbXVsKGduLFVuKXwwLFQ9VCtNYXRoLmltdWwoVWUsdG4pfDAsUz0oUz1TK01hdGguaW11bChVZSx6bil8MCkrTWF0aC5pbXVsKHl0LHRuKXwwLEY9RitNYXRoLmltdWwoeXQsem4pfDAsVD1UK01hdGguaW11bChmdCxCbil8MCxTPShTPVMrTWF0aC5pbXVsKGZ0LGty''@;'; put 'put ''KXwwKStNYXRoLmltdWwoSHQsQm4pfDAsRj1GK01hdGguaW11bChIdCxrcil8MCxUPVQrTWF0aC5pbXVsKGx0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwobHQsY24pfDApK01hdGguaW11bChMdCx1bil8MCxGPUYrTWF0aC5pbXVsKEx0LGNuKXwwLFQ9VCtNYXRoLmltdWwoX3QsR3QpfDAsUz0o''@;'; put 'put ''Uz1TK01hdGguaW11bChfdCxrbil8MCkrTWF0aC5pbXVsKHR0LEd0KXwwLEY9RitNYXRoLmltdWwodHQsa24pfDA7dmFyIGQwPShQZSsoVD1UK01hdGguaW11bChodCxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKGh0LEluKXwwKStNYXRoLmltdWwoQnQsZW4pfDApKTw8MTMp''@;'; put 'put ''fDA7UGU9KChGPUYrTWF0aC5pbXVsKEJ0LEluKXwwKSsoUz4+PjEzKXwwKSsoZDA+Pj4yNil8MCxkMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4scG4pLFM9KFM9TWF0aC5pbXVsKGJuLEtuKSkrTWF0aC5pbXVsKGVyLHBuKXwwLEY9TWF0aC5pbXVsKGVyLEtuKSxUPVQrTWF0aC5pbXVsKHlu''@;'; put 'put ''LHNuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4sVW4pfDApK01hdGguaW11bChsbixzbil8MCxGPUYrTWF0aC5pbXVsKGxuLFVuKXwwLFQ9VCtNYXRoLmltdWwoSnQsdG4pfDAsUz0oUz1TK01hdGguaW11bChKdCx6bil8MCkrTWF0aC5pbXVsKGduLHRuKXwwLEY9RitNYXRoLmltdWwoZ24sem4p''@;'; put 'put ''fDAsVD1UK01hdGguaW11bChVZSxCbil8MCxTPShTPVMrTWF0aC5pbXVsKFVlLGtyKXwwKStNYXRoLmltdWwoeXQsQm4pfDAsRj1GK01hdGguaW11bCh5dCxrcil8MCxUPVQrTWF0aC5pbXVsKGZ0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwoZnQsY24pfDApK01hdGguaW11bChIdCx1bil8MCxG''@;'; put 'put ''PUYrTWF0aC5pbXVsKEh0LGNuKXwwLFQ9VCtNYXRoLmltdWwobHQsR3QpfDAsUz0oUz1TK01hdGguaW11bChsdCxrbil8MCkrTWF0aC5pbXVsKEx0LEd0KXwwLEY9RitNYXRoLmltdWwoTHQsa24pfDA7dmFyIG0wPShQZSsoVD1UK01hdGguaW11bChfdCxlbil8MCl8MCkrKCg4MTkxJihTPShT''@;'; put 'put ''PVMrTWF0aC5pbXVsKF90LEluKXwwKStNYXRoLmltdWwodHQsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKHR0LEluKXwwKSsoUz4+PjEzKXwwKSsobTA+Pj4yNil8MCxtMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sc24pLFM9KFM9TWF0aC5pbXVsKGJuLFVuKSkrTWF0aC5p''@;'; put 'put ''bXVsKGVyLHNuKXwwLEY9TWF0aC5pbXVsKGVyLFVuKSxUPVQrTWF0aC5pbXVsKHluLHRuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4sem4pfDApK01hdGguaW11bChsbix0bil8MCxGPUYrTWF0aC5pbXVsKGxuLHpuKXwwLFQ9VCtNYXRoLmltdWwoSnQsQm4pfDAsUz0oUz1TK01hdGguaW11bChK''@;'; put 'put ''dCxrcil8MCkrTWF0aC5pbXVsKGduLEJuKXwwLEY9RitNYXRoLmltdWwoZ24sa3IpfDAsVD1UK01hdGguaW11bChVZSx1bil8MCxTPShTPVMrTWF0aC5pbXVsKFVlLGNuKXwwKStNYXRoLmltdWwoeXQsdW4pfDAsRj1GK01hdGguaW11bCh5dCxjbil8MCxUPVQrTWF0aC5pbXVsKGZ0LEd0KXww''@;'; put 'put ''LFM9KFM9UytNYXRoLmltdWwoZnQsa24pfDApK01hdGguaW11bChIdCxHdCl8MCxGPUYrTWF0aC5pbXVsKEh0LGtuKXwwO3ZhciBHMD0oUGUrKFQ9VCtNYXRoLmltdWwobHQsZW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChsdCxJbil8MCkrTWF0aC5pbXVsKEx0LGVuKXwwKSk8''@;'; put 'put ''PDEzKXwwO1BlPSgoRj1GK01hdGguaW11bChMdCxJbil8MCkrKFM+Pj4xMyl8MCkrKEcwPj4+MjYpfDAsRzAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGJuLHRuKSxTPShTPU1hdGguaW11bChibix6bikpK01hdGguaW11bChlcix0bil8MCxGPU1hdGguaW11bChlcix6biksVD1UK01hdGguaW11''@;'; put 'put ''bCh5bixCbil8MCxTPShTPVMrTWF0aC5pbXVsKHluLGtyKXwwKStNYXRoLmltdWwobG4sQm4pfDAsRj1GK01hdGguaW11bChsbixrcil8MCxUPVQrTWF0aC5pbXVsKEp0LHVuKXwwLFM9KFM9UytNYXRoLmltdWwoSnQsY24pfDApK01hdGguaW11bChnbix1bil8MCxGPUYrTWF0aC5pbXVsKGdu''@;'; put 'put ''LGNuKXwwLFQ9VCtNYXRoLmltdWwoVWUsR3QpfDAsUz0oUz1TK01hdGguaW11bChVZSxrbil8MCkrTWF0aC5pbXVsKHl0LEd0KXwwLEY9RitNYXRoLmltdWwoeXQsa24pfDA7dmFyIERpPShQZSsoVD1UK01hdGguaW11bChmdCxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKGZ0''@;'; put 'put ''LEluKXwwKStNYXRoLmltdWwoSHQsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKEh0LEluKXwwKSsoUz4+PjEzKXwwKSsoRGk+Pj4yNil8MCxEaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sQm4pLFM9KFM9TWF0aC5pbXVsKGJuLGtyKSkrTWF0aC5pbXVsKGVyLEJuKXwwLEY9''@;'; put 'put ''TWF0aC5pbXVsKGVyLGtyKSxUPVQrTWF0aC5pbXVsKHluLHVuKXwwLFM9KFM9UytNYXRoLmltdWwoeW4sY24pfDApK01hdGguaW11bChsbix1bil8MCxGPUYrTWF0aC5pbXVsKGxuLGNuKXwwLFQ9VCtNYXRoLmltdWwoSnQsR3QpfDAsUz0oUz1TK01hdGguaW11bChKdCxrbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKGduLEd0KXwwLEY9RitNYXRoLmltdWwoZ24sa24pfDA7dmFyIFcwPShQZSsoVD1UK01hdGguaW11bChVZSxlbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKFVlLEluKXwwKStNYXRoLmltdWwoeXQsZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKHl0LEluKXww''@;'; put 'put ''KSsoUz4+PjEzKXwwKSsoVzA+Pj4yNil8MCxXMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoYm4sdW4pLFM9KFM9TWF0aC5pbXVsKGJuLGNuKSkrTWF0aC5pbXVsKGVyLHVuKXwwLEY9TWF0aC5pbXVsKGVyLGNuKSxUPVQrTWF0aC5pbXVsKHluLEd0KXwwLFM9KFM9UytNYXRoLmltdWwoeW4sa24p''@;'; put 'put ''fDApK01hdGguaW11bChsbixHdCl8MCxGPUYrTWF0aC5pbXVsKGxuLGtuKXwwO3ZhciBFbz0oUGUrKFQ9VCtNYXRoLmltdWwoSnQsZW4pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChKdCxJbil8MCkrTWF0aC5pbXVsKGduLGVuKXwwKSk8PDEzKXwwO1BlPSgoRj1GK01hdGguaW11''@;'; put 'put ''bChnbixJbil8MCkrKFM+Pj4xMyl8MCkrKEVvPj4+MjYpfDAsRW8mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGJuLEd0KSxTPShTPU1hdGguaW11bChibixrbikpK01hdGguaW11bChlcixHdCl8MCxGPU1hdGguaW11bChlcixrbik7dmFyIHFvPShQZSsoVD1UK01hdGguaW11bCh5bixlbil8MCl8''@;'; put 'put ''MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKHluLEluKXwwKStNYXRoLmltdWwobG4sZW4pfDApKTw8MTMpfDA7UGU9KChGPUYrTWF0aC5pbXVsKGxuLEluKXwwKSsoUz4+PjEzKXwwKSsocW8+Pj4yNil8MCxxbyY9NjcxMDg4NjM7dmFyIGNhPShQZSsoVD1NYXRoLmltdWwoYm4sZW4pKXww''@;'; put 'put ''KSsoKDgxOTEmKFM9KFM9TWF0aC5pbXVsKGJuLEluKSkrTWF0aC5pbXVsKGVyLGVuKXwwKSk8PDEzKXwwO3JldHVybiBQZT0oKEY9TWF0aC5pbXVsKGVyLEluKSkrKFM+Pj4xMyl8MCkrKGNhPj4+MjYpfDAsY2EmPTY3MTA4ODYzLERlWzBdPUpuLERlWzFdPW9yLERlWzJdPWdyLERlWzNdPUty''@;'; put 'put ''LERlWzRdPVZyLERlWzVdPWlpLERlWzZdPVJyLERlWzddPWxpLERlWzhdPU1pLERlWzldPW8wLERlWzEwXT1uMCxEZVsxMV09ZDAsRGVbMTJdPW0wLERlWzEzXT1HMCxEZVsxNF09RGksRGVbMTVdPVcwLERlWzE2XT1FbyxEZVsxN109cW8sRGVbMThdPWNhLDAhPT1QZSYmKERlWzE5XT1QZSxW''@;'; put 'put ''Lmxlbmd0aCsrKSxWfTtmdW5jdGlvbiBrZSh4LFAsVil7cmV0dXJuKG5ldyBTZSkubXVscCh4LFAsVil9ZnVuY3Rpb24gU2UoeCxQKXt0aGlzLng9eCx0aGlzLnk9UH1NYXRoLmltdWx8fChBZT12ZSksTi5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oeCxQKXt2YXIgVD10aGlzLmxlbmd0aCt4''@;'; put 'put ''Lmxlbmd0aDtyZXR1cm4gMTA9PT10aGlzLmxlbmd0aCYmMTA9PT14Lmxlbmd0aD9BZSh0aGlzLHgsUCk6VDw2Mz92ZSh0aGlzLHgsUCk6VDwxMDI0P2Z1bmN0aW9uKFMsRix5ZSl7eWUubmVnYXRpdmU9Ri5uZWdhdGl2ZV5TLm5lZ2F0aXZlLHllLmxlbmd0aD1TLmxlbmd0aCtGLmxlbmd0aDtm''@;'; put 'put ''b3IodmFyIENlPTAsRGU9MCxQZT0wO1BlPHllLmxlbmd0aC0xO1BlKyspe3ZhciBRZT1EZTtEZT0wO2Zvcih2YXIgJGU9NjcxMDg4NjMmQ2UsZ3Q9TWF0aC5taW4oUGUsRi5sZW5ndGgtMSksd3Q9TWF0aC5tYXgoMCxQZS1TLmxlbmd0aCsxKTt3dDw9Z3Q7d3QrKyl7dmFyIHZ0PSgwfFMud29y''@;'; put 'put ''ZHNbUGUtd3RdKSooMHxGLndvcmRzW3d0XSksQXQ9NjcxMDg4NjMmdnQ7JGU9NjcxMDg4NjMmKEF0PUF0KyRlfDApLERlKz0oUWU9KFFlPVFlKyh2dC82NzEwODg2NHwwKXwwKSsoQXQ+Pj4yNil8MCk+Pj4yNixRZSY9NjcxMDg4NjN9eWUud29yZHNbUGVdPSRlLENlPVFlLFFlPURlfXJldHVy''@;'; put 'put ''biAwIT09Q2U/eWUud29yZHNbUGVdPUNlOnllLmxlbmd0aC0tLHllLnN0cmlwKCl9KHRoaXMseCxQKTprZSh0aGlzLHgsUCl9LFNlLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKHgpe2Zvcih2YXIgUD1uZXcgQXJyYXkoeCksVj1OLnByb3RvdHlwZS5fY291bnRCaXRzKHgpLTEsVD0wO1Q8''@;'; put 'put ''eDtUKyspUFtUXT10aGlzLnJldkJpbihULFYseCk7cmV0dXJuIFB9LFNlLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oeCxQLFYpe2lmKDA9PT14fHx4PT09Vi0xKXJldHVybiB4O2Zvcih2YXIgVD0wLFM9MDtTPFA7UysrKVR8PSgxJngpPDxQLVMtMSx4Pj49MTtyZXR1cm4gVH0sU2UucHJv''@;'; put 'put ''dG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oeCxQLFYsVCxTLEYpe2Zvcih2YXIgeWU9MDt5ZTxGO3llKyspVFt5ZV09UFt4W3llXV0sU1t5ZV09Vlt4W3llXV19LFNlLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oeCxQLFYsVCxTLEYpe3RoaXMucGVybXV0ZShGLHgsUCxWLFQsUyk7Zm9y''@;'; put 'put ''KHZhciB5ZT0xO3llPFM7eWU8PD0xKWZvcih2YXIgQ2U9eWU8PDEsRGU9TWF0aC5jb3MoMipNYXRoLlBJL0NlKSxQZT1NYXRoLnNpbigyKk1hdGguUEkvQ2UpLFFlPTA7UWU8UztRZSs9Q2UpZm9yKHZhciAkZT1EZSxndD1QZSx3dD0wO3d0PHllO3d0Kyspe3ZhciBtdD1WW1FlK3d0XSx2dD1U''@;'; put 'put ''W1FlK3d0XSxBdD1WW1FlK3d0K3llXSxodD1UW1FlK3d0K3llXSxCdD0kZSpBdC1ndCpodDtodD0kZSpodCtndCpBdCxWW1FlK3d0XT1tdCsoQXQ9QnQpLFRbUWUrd3RdPXZ0K2h0LFZbUWUrd3QreWVdPW10LUF0LFRbUWUrd3QreWVdPXZ0LWh0LHd0IT09Q2UmJihCdD1EZSokZS1QZSpndCxn''@;'; put 'put ''dD1EZSpndCtQZSokZSwkZT1CdCl9fSxTZS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oeCxQKXt2YXIgVj0xfE1hdGgubWF4KFAseCksVD0xJlYsUz0wO2ZvcihWPVYvMnwwO1Y7Vj4+Pj0xKVMrKztyZXR1cm4gMTw8UysxK1R9LFNlLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rp''@;'; put 'put ''b24oeCxQLFYpe2lmKCEoVjw9MSkpZm9yKHZhciBUPTA7VDxWLzI7VCsrKXt2YXIgUz14W1RdO3hbVF09eFtWLVQtMV0seFtWLVQtMV09UyxTPVBbVF0sUFtUXT0tUFtWLVQtMV0sUFtWLVQtMV09LVN9fSxTZS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKHgsUCl7Zm9yKHZhciBW''@;'; put 'put ''PTAsVD0wO1Q8UC8yO1QrKyl7dmFyIFM9ODE5MipNYXRoLnJvdW5kKHhbMipUKzFdL1ApK01hdGgucm91bmQoeFsyKlRdL1ApK1Y7eFtUXT02NzEwODg2MyZTLFY9Uzw2NzEwODg2ND8wOlMvNjcxMDg4NjR8MH1yZXR1cm4geH0sU2UucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oeCxQ''@;'; put 'put ''LFYsVCl7Zm9yKHZhciBTPTAsRj0wO0Y8UDtGKyspVlsyKkZdPTgxOTEmKFMrPTB8eFtGXSksVlsyKkYrMV09ODE5MSYoUz4+Pj0xMyksUz4+Pj0xMztmb3IoRj0yKlA7RjxUOysrRilWW0ZdPTA7WSgwPT09UyksWSgwPT0oLTgxOTImUykpfSxTZS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbih4''@;'; put 'put ''KXtmb3IodmFyIFA9bmV3IEFycmF5KHgpLFY9MDtWPHg7VisrKVBbVl09MDtyZXR1cm4gUH0sU2UucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oeCxQLFYpe3ZhciBUPTIqdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCxQLmxlbmd0aCksUz10aGlzLm1ha2VSQlQoVCksRj10aGlzLnN0dWIoVCks''@;'; put 'put ''eWU9bmV3IEFycmF5KFQpLENlPW5ldyBBcnJheShUKSxEZT1uZXcgQXJyYXkoVCksUGU9bmV3IEFycmF5KFQpLFFlPW5ldyBBcnJheShUKSwkZT1uZXcgQXJyYXkoVCksZ3Q9Vi53b3JkcztndC5sZW5ndGg9VCx0aGlzLmNvbnZlcnQxM2IoeC53b3Jkcyx4Lmxlbmd0aCx5ZSxUKSx0aGlzLmNv''@;'; put 'put ''bnZlcnQxM2IoUC53b3JkcyxQLmxlbmd0aCxQZSxUKSx0aGlzLnRyYW5zZm9ybSh5ZSxGLENlLERlLFQsUyksdGhpcy50cmFuc2Zvcm0oUGUsRixRZSwkZSxULFMpO2Zvcih2YXIgd3Q9MDt3dDxUO3d0Kyspe3ZhciBtdD1DZVt3dF0qUWVbd3RdLURlW3d0XSokZVt3dF07RGVbd3RdPUNlW3d0''@;'; put 'put ''XSokZVt3dF0rRGVbd3RdKlFlW3d0XSxDZVt3dF09bXR9cmV0dXJuIHRoaXMuY29uanVnYXRlKENlLERlLFQpLHRoaXMudHJhbnNmb3JtKENlLERlLGd0LEYsVCxTKSx0aGlzLmNvbmp1Z2F0ZShndCxGLFQpLHRoaXMubm9ybWFsaXplMTNiKGd0LFQpLFYubmVnYXRpdmU9eC5uZWdhdGl2ZV5Q''@;'; put 'put ''Lm5lZ2F0aXZlLFYubGVuZ3RoPXgubGVuZ3RoK1AubGVuZ3RoLFYuc3RyaXAoKX0sTi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHgpe3ZhciBQPW5ldyBOKG51bGwpO3JldHVybiBQLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCt4Lmxlbmd0aCksdGhpcy5tdWxUbyh4LFApfSxOLnByb3Rv''@;'; put 'put ''dHlwZS5tdWxmPWZ1bmN0aW9uKHgpe3ZhciBQPW5ldyBOKG51bGwpO3JldHVybiBQLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCt4Lmxlbmd0aCksa2UodGhpcyx4LFApfSxOLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oeCx0aGlzKX0s''@;'; put 'put ''Ti5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgpLFkoeDw2NzEwODg2NCk7Zm9yKHZhciBQPTAsVj0wO1Y8dGhpcy5sZW5ndGg7VisrKXt2YXIgVD0oMHx0aGlzLndvcmRzW1ZdKSp4LFM9KDY3MTA4ODYzJlQpKyg2NzEwODg2MyZQKTtQPj49MjYsUCs9''@;'; put 'put ''VC82NzEwODg2NHwwLFArPVM+Pj4yNix0aGlzLndvcmRzW1ZdPTY3MTA4ODYzJlN9cmV0dXJuIDAhPT1QJiYodGhpcy53b3Jkc1tWXT1QLHRoaXMubGVuZ3RoKyspLHRoaXN9LE4ucHJvdG90eXBlLm11bG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbih4KX0sTi5wcm90''@;'; put 'put ''b3R5cGUuc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVsKHRoaXMpfSxOLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpfSxOLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oeCl7dmFyIFA9ZnVuY3Rpb24oRil7Zm9yKHZhciB5ZT1uZXcg''@;'; put 'put ''QXJyYXkoRi5iaXRMZW5ndGgoKSksQ2U9MDtDZTx5ZS5sZW5ndGg7Q2UrKyl7dmFyIFBlPUNlJTI2O3llW0NlXT0oRi53b3Jkc1tDZS8yNnwwXSYxPDxQZSk+Pj5QZX1yZXR1cm4geWV9KHgpO2lmKDA9PT1QLmxlbmd0aClyZXR1cm4gbmV3IE4oMSk7Zm9yKHZhciBWPXRoaXMsVD0wO1Q8UC5s''@;'; put 'put ''ZW5ndGgmJjA9PT1QW1RdO1QrKyxWPVYuc3FyKCkpO2lmKCsrVDxQLmxlbmd0aClmb3IodmFyIFM9Vi5zcXIoKTtUPFAubGVuZ3RoO1QrKyxTPVMuc3FyKCkpMCE9PVBbVF0mJihWPVYubXVsKFMpKTtyZXR1cm4gVn0sTi5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKHgpe1koIm51bWJlciI9''@;'; put 'put ''PXR5cGVvZiB4JiZ4Pj0wKTt2YXIgUCxWPXglMjYsVD0oeC1WKS8yNixTPTY3MTA4ODYzPj4+MjYtVjw8MjYtVjtpZigwIT09Vil7dmFyIEY9MDtmb3IoUD0wO1A8dGhpcy5sZW5ndGg7UCsrKXt2YXIgeWU9dGhpcy53b3Jkc1tQXSZTO3RoaXMud29yZHNbUF09KDB8dGhpcy53b3Jkc1tQXSkt''@;'; put 'put ''eWU8PFZ8RixGPXllPj4+MjYtVn1GJiYodGhpcy53b3Jkc1tQXT1GLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1UKXtmb3IoUD10aGlzLmxlbmd0aC0xO1A+PTA7UC0tKXRoaXMud29yZHNbUCtUXT10aGlzLndvcmRzW1BdO2ZvcihQPTA7UDxUO1ArKyl0aGlzLndvcmRzW1BdPTA7dGhpcy5sZW5n''@;'; put 'put ''dGgrPVR9cmV0dXJuIHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oeCl7cmV0dXJuIFkoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKHgpfSxOLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oeCxQLFYpe3ZhciBUO1koIm51bWJlciI9PXR5cGVvZiB4JiZ4''@;'; put 'put ''Pj0wKSxUPVA/KFAtUCUyNikvMjY6MDt2YXIgUz14JTI2LEY9TWF0aC5taW4oKHgtUykvMjYsdGhpcy5sZW5ndGgpLHllPTY3MTA4ODYzXjY3MTA4ODYzPj4+Uzw8UyxDZT1WO2lmKFQtPUYsVD1NYXRoLm1heCgwLFQpLENlKXtmb3IodmFyIERlPTA7RGU8RjtEZSsrKUNlLndvcmRzW0RlXT10''@;'; put 'put ''aGlzLndvcmRzW0RlXTtDZS5sZW5ndGg9Rn1pZigwIT09RilpZih0aGlzLmxlbmd0aD5GKWZvcih0aGlzLmxlbmd0aC09RixEZT0wO0RlPHRoaXMubGVuZ3RoO0RlKyspdGhpcy53b3Jkc1tEZV09dGhpcy53b3Jkc1tEZStGXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3Zh''@;'; put 'put ''ciBQZT0wO2ZvcihEZT10aGlzLmxlbmd0aC0xO0RlPj0wJiYoMCE9PVBlfHxEZT49VCk7RGUtLSl7dmFyIFFlPTB8dGhpcy53b3Jkc1tEZV07dGhpcy53b3Jkc1tEZV09UGU8PDI2LVN8UWU+Pj5TLFBlPVFlJnllfXJldHVybiBDZSYmMCE9PVBlJiYoQ2Uud29yZHNbQ2UubGVuZ3RoKytdPVBl''@;'; put 'put ''KSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgpfSxOLnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbih4LFAsVil7cmV0dXJuIFkoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKHgsUCxWKX0sTi5wcm90b3R5cGUuc2hsbj1m''@;'; put 'put ''dW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKHgpfSxOLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbih4KX0sTi5wcm90b3R5cGUuc2hybj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKHgpfSxOLnBy''@;'; put 'put ''b3RvdHlwZS51c2hybj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybih4KX0sTi5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBQPXglMjYsVj0oeC1QKS8yNjtyZXR1cm4hKHRoaXMubGVuZ3RoPD1WfHwhKHRo''@;'; put 'put ''aXMud29yZHNbVl0mMTw8UCkpfSxOLnByb3RvdHlwZS5pbWFza249ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgmJng+PTApO3ZhciBQPXglMjYsVj0oeC1QKS8yNjtyZXR1cm4gWSgwPT09dGhpcy5uZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1i''@;'; put 'put ''ZXJzIiksdGhpcy5sZW5ndGg8PVY/dGhpczooMCE9PVAmJlYrKyx0aGlzLmxlbmd0aD1NYXRoLm1pbihWLHRoaXMubGVuZ3RoKSwwIT09UCYmKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0mPTY3MTA4ODYzXjY3MTA4ODYzPj4+UDw8UCksdGhpcy5zdHJpcCgpKX0sTi5wcm90b3R5cGUubWFz''@;'; put 'put ''a249ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oeCl9LE4ucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKHgpe3JldHVybiBZKCJudW1iZXIiPT10eXBlb2YgeCksWSh4PDY3MTA4ODY0KSx4PDA/dGhpcy5pc3VibigteCk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMu''@;'; put 'put ''bGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTx4Pyh0aGlzLndvcmRzWzBdPXgtKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3Vibih4KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oeCl9LE4ucHJvdG90eXBl''@;'; put 'put ''Ll9pYWRkbj1mdW5jdGlvbih4KXt0aGlzLndvcmRzWzBdKz14O2Zvcih2YXIgUD0wO1A8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbUF0+PTY3MTA4ODY0O1ArKyl0aGlzLndvcmRzW1BdLT02NzEwODg2NCxQPT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW1ArMV09MTp0aGlzLndvcmRzW1Ar''@;'; put 'put ''MV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsUCsxKSx0aGlzfSxOLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbih4KXtpZihZKCJudW1iZXIiPT10eXBlb2YgeCksWSh4PDY3MTA4ODY0KSx4PDApcmV0dXJuIHRoaXMuaWFkZG4oLXgpO2lmKDAhPT10aGlzLm5l''@;'; put 'put ''Z2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbih4KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT14LDE9PT10aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vs''@;'; put 'put ''c2UgZm9yKHZhciBQPTA7UDx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tQXTwwO1ArKyl0aGlzLndvcmRzW1BdKz02NzEwODg2NCx0aGlzLndvcmRzW1ArMV0tPTE7cmV0dXJuIHRoaXMuc3RyaXAoKX0sTi5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlh''@;'; put 'put ''ZGRuKHgpfSxOLnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4oeCl9LE4ucHJvdG90eXBlLmlhYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXN9LE4ucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNs''@;'; put 'put ''b25lKCkuaWFicygpfSxOLnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24oeCxQLFYpe3ZhciBULFM7dGhpcy5fZXhwYW5kKHgubGVuZ3RoK1YpO3ZhciB5ZT0wO2ZvcihUPTA7VDx4Lmxlbmd0aDtUKyspe1M9KDB8dGhpcy53b3Jkc1tUK1ZdKSt5ZTt2YXIgQ2U9KDB8eC53b3Jkc1tU''@;'; put 'put ''XSkqUDt5ZT0oKFMtPTY3MTA4ODYzJkNlKT4+MjYpLShDZS82NzEwODg2NHwwKSx0aGlzLndvcmRzW1QrVl09NjcxMDg4NjMmU31mb3IoO1Q8dGhpcy5sZW5ndGgtVjtUKyspeWU9KFM9KDB8dGhpcy53b3Jkc1tUK1ZdKSt5ZSk+PjI2LHRoaXMud29yZHNbVCtWXT02NzEwODg2MyZTO2lmKDA9''@;'; put 'put ''PT15ZSlyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihZKC0xPT09eWUpLHllPTAsVD0wO1Q8dGhpcy5sZW5ndGg7VCsrKXllPShTPS0oMHx0aGlzLndvcmRzW1RdKSt5ZSk+PjI2LHRoaXMud29yZHNbVF09NjcxMDg4NjMmUztyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sTi5w''@;'; put 'put ''cm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oeCxQKXt2YXIgVixUPXRoaXMuY2xvbmUoKSxTPXgsRj0wfFMud29yZHNbUy5sZW5ndGgtMV07MCE9KFY9MjYtdGhpcy5fY291bnRCaXRzKEYpKSYmKFM9Uy51c2hsbihWKSxULml1c2hsbihWKSxGPTB8Uy53b3Jkc1tTLmxlbmd0aC0xXSk7dmFy''@;'; put 'put ''IHllLENlPVQubGVuZ3RoLVMubGVuZ3RoO2lmKCJtb2QiIT09UCl7KHllPW5ldyBOKG51bGwpKS5sZW5ndGg9Q2UrMSx5ZS53b3Jkcz1uZXcgQXJyYXkoeWUubGVuZ3RoKTtmb3IodmFyIERlPTA7RGU8eWUubGVuZ3RoO0RlKyspeWUud29yZHNbRGVdPTB9dmFyIFBlPVQuY2xvbmUoKS5faXNo''@;'; put 'put ''bG5zdWJtdWwoUywxLENlKTswPT09UGUubmVnYXRpdmUmJihUPVBlLHllJiYoeWUud29yZHNbQ2VdPTEpKTtmb3IodmFyIFFlPUNlLTE7UWU+PTA7UWUtLSl7dmFyICRlPTY3MTA4ODY0KigwfFQud29yZHNbUy5sZW5ndGgrUWVdKSsoMHxULndvcmRzW1MubGVuZ3RoK1FlLTFdKTtmb3IoJGU9''@;'; put 'put ''TWF0aC5taW4oJGUvRnwwLDY3MTA4ODYzKSxULl9pc2hsbnN1Ym11bChTLCRlLFFlKTswIT09VC5uZWdhdGl2ZTspJGUtLSxULm5lZ2F0aXZlPTAsVC5faXNobG5zdWJtdWwoUywxLFFlKSxULmlzWmVybygpfHwoVC5uZWdhdGl2ZV49MSk7eWUmJih5ZS53b3Jkc1tRZV09JGUpfXJldHVybiB5''@;'; put 'put ''ZSYmeWUuc3RyaXAoKSxULnN0cmlwKCksImRpdiIhPT1QJiYwIT09ViYmVC5pdXNocm4oVikse2Rpdjp5ZXx8bnVsbCxtb2Q6VH19LE4ucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbih4LFAsVil7cmV0dXJuIFkoIXguaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgTigwKSxtb2Q6''@;'; put 'put ''bmV3IE4oMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09eC5uZWdhdGl2ZT8oRj10aGlzLm5lZygpLmRpdm1vZCh4LFApLCJtb2QiIT09UCYmKFQ9Ri5kaXYubmVnKCkpLCJkaXYiIT09UCYmKFM9Ri5tb2QubmVnKCksViYmMCE9PVMubmVnYXRpdmUmJlMuaWFkZCh4KSkse2RpdjpULG1vZDpT''@;'; put 'put ''fSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT14Lm5lZ2F0aXZlPyhGPXRoaXMuZGl2bW9kKHgubmVnKCksUCksIm1vZCIhPT1QJiYoVD1GLmRpdi5uZWcoKSkse2RpdjpULG1vZDpGLm1vZH0pOjAhPSh0aGlzLm5lZ2F0aXZlJngubmVnYXRpdmUpPyhGPXRoaXMubmVnKCkuZGl2bW9kKHgubmVn''@;'; put 'put ''KCksUCksImRpdiIhPT1QJiYoUz1GLm1vZC5uZWcoKSxWJiYwIT09Uy5uZWdhdGl2ZSYmUy5pc3ViKHgpKSx7ZGl2OkYuZGl2LG1vZDpTfSk6eC5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKHgpPDA/e2RpdjpuZXcgTigwKSxtb2Q6dGhpc306MT09PXgubGVuZ3RoPyJkaXYiPT09UD97''@;'; put 'put ''ZGl2OnRoaXMuZGl2bih4LndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1QP3tkaXY6bnVsbCxtb2Q6bmV3IE4odGhpcy5tb2RuKHgud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oeC53b3Jkc1swXSksbW9kOm5ldyBOKHRoaXMubW9kbih4LndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYo''@;'; put 'put ''eCxQKTt2YXIgVCxTLEZ9LE4ucHJvdG90eXBlLmRpdj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5kaXZtb2QoeCwiZGl2IiwhMSkuZGl2fSxOLnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZGl2bW9kKHgsIm1vZCIsITEpLm1vZH0sTi5wcm90b3R5cGUudW1vZD1mdW5j''@;'; put 'put ''dGlvbih4KXtyZXR1cm4gdGhpcy5kaXZtb2QoeCwibW9kIiwhMCkubW9kfSxOLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbih4KXt2YXIgUD10aGlzLmRpdm1vZCh4KTtpZihQLm1vZC5pc1plcm8oKSlyZXR1cm4gUC5kaXY7dmFyIFY9MCE9PVAuZGl2Lm5lZ2F0aXZlP1AubW9kLmlzdWIo''@;'; put 'put ''eCk6UC5tb2QsVD14LnVzaHJuKDEpLFM9eC5hbmRsbigxKSxGPVYuY21wKFQpO3JldHVybiBGPDB8fDE9PT1TJiYwPT09Rj9QLmRpdjowIT09UC5kaXYubmVnYXRpdmU/UC5kaXYuaXN1Ym4oMSk6UC5kaXYuaWFkZG4oMSl9LE4ucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oeCl7WSh4PD02NzEw''@;'; put 'put ''ODg2Myk7Zm9yKHZhciBQPTY3MTA4ODY0JXgsVj0wLFQ9dGhpcy5sZW5ndGgtMTtUPj0wO1QtLSlWPShQKlYrKDB8dGhpcy53b3Jkc1tUXSkpJXg7cmV0dXJuIFZ9LE4ucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKHgpe1koeDw9NjcxMDg4NjMpO2Zvcih2YXIgUD0wLFY9dGhpcy5sZW5ndGgt''@;'; put 'put ''MTtWPj0wO1YtLSl7dmFyIFQ9KDB8dGhpcy53b3Jkc1tWXSkrNjcxMDg4NjQqUDt0aGlzLndvcmRzW1ZdPVQveHwwLFA9VCV4fXJldHVybiB0aGlzLnN0cmlwKCl9LE4ucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bih4KX0sTi5wcm90b3R5cGUu''@;'; put 'put ''ZWdjZD1mdW5jdGlvbih4KXtZKDA9PT14Lm5lZ2F0aXZlKSxZKCF4LmlzWmVybygpKTt2YXIgUD10aGlzLFY9eC5jbG9uZSgpO1A9MCE9PVAubmVnYXRpdmU/UC51bW9kKHgpOlAuY2xvbmUoKTtmb3IodmFyIFQ9bmV3IE4oMSksUz1uZXcgTigwKSxGPW5ldyBOKDApLHllPW5ldyBOKDEpLENl''@;'; put 'put ''PTA7UC5pc0V2ZW4oKSYmVi5pc0V2ZW4oKTspUC5pdXNocm4oMSksVi5pdXNocm4oMSksKytDZTtmb3IodmFyIERlPVYuY2xvbmUoKSxQZT1QLmNsb25lKCk7IVAuaXNaZXJvKCk7KXtmb3IodmFyIFFlPTAsJGU9MTswPT0oUC53b3Jkc1swXSYkZSkmJlFlPDI2OysrUWUsJGU8PD0xKTtpZihR''@;'; put 'put ''ZT4wKWZvcihQLml1c2hybihRZSk7UWUtLSA+MDspKFQuaXNPZGQoKXx8Uy5pc09kZCgpKSYmKFQuaWFkZChEZSksUy5pc3ViKFBlKSksVC5pdXNocm4oMSksUy5pdXNocm4oMSk7Zm9yKHZhciBndD0wLHd0PTE7MD09KFYud29yZHNbMF0md3QpJiZndDwyNjsrK2d0LHd0PDw9MSk7aWYoZ3Q+''@;'; put 'put ''MClmb3IoVi5pdXNocm4oZ3QpO2d0LS0gPjA7KShGLmlzT2RkKCl8fHllLmlzT2RkKCkpJiYoRi5pYWRkKERlKSx5ZS5pc3ViKFBlKSksRi5pdXNocm4oMSkseWUuaXVzaHJuKDEpO1AuY21wKFYpPj0wPyhQLmlzdWIoViksVC5pc3ViKEYpLFMuaXN1Yih5ZSkpOihWLmlzdWIoUCksRi5pc3Vi''@;'; put 'put ''KFQpLHllLmlzdWIoUykpfXJldHVybnthOkYsYjp5ZSxnY2Q6Vi5pdXNobG4oQ2UpfX0sTi5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKHgpe1koMD09PXgubmVnYXRpdmUpLFkoIXguaXNaZXJvKCkpO3ZhciBQPXRoaXMsVj14LmNsb25lKCk7UD0wIT09UC5uZWdhdGl2ZT9QLnVtb2QoeCk6''@;'; put 'put ''UC5jbG9uZSgpO2Zvcih2YXIgVCxTPW5ldyBOKDEpLEY9bmV3IE4oMCkseWU9Vi5jbG9uZSgpO1AuY21wbigxKT4wJiZWLmNtcG4oMSk+MDspe2Zvcih2YXIgQ2U9MCxEZT0xOzA9PShQLndvcmRzWzBdJkRlKSYmQ2U8MjY7KytDZSxEZTw8PTEpO2lmKENlPjApZm9yKFAuaXVzaHJuKENlKTtD''@;'; put 'put ''ZS0tID4wOylTLmlzT2RkKCkmJlMuaWFkZCh5ZSksUy5pdXNocm4oMSk7Zm9yKHZhciBQZT0wLFFlPTE7MD09KFYud29yZHNbMF0mUWUpJiZQZTwyNjsrK1BlLFFlPDw9MSk7aWYoUGU+MClmb3IoVi5pdXNocm4oUGUpO1BlLS0gPjA7KUYuaXNPZGQoKSYmRi5pYWRkKHllKSxGLml1c2hybigx''@;'; put 'put ''KTtQLmNtcChWKT49MD8oUC5pc3ViKFYpLFMuaXN1YihGKSk6KFYuaXN1YihQKSxGLmlzdWIoUykpfXJldHVybihUPTA9PT1QLmNtcG4oMSk/UzpGKS5jbXBuKDApPDAmJlQuaWFkZCh4KSxUfSxOLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oeCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4geC5h''@;'; put 'put ''YnMoKTtpZih4LmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBQPXRoaXMuY2xvbmUoKSxWPXguY2xvbmUoKTtQLm5lZ2F0aXZlPTAsVi5uZWdhdGl2ZT0wO2Zvcih2YXIgVD0wO1AuaXNFdmVuKCkmJlYuaXNFdmVuKCk7VCsrKVAuaXVzaHJuKDEpLFYuaXVzaHJuKDEpO2Zvcig7Oyl7''@;'; put 'put ''Zm9yKDtQLmlzRXZlbigpOylQLml1c2hybigxKTtmb3IoO1YuaXNFdmVuKCk7KVYuaXVzaHJuKDEpO3ZhciBTPVAuY21wKFYpO2lmKFM8MCl7dmFyIEY9UDtQPVYsVj1GfWVsc2UgaWYoMD09PVN8fDA9PT1WLmNtcG4oMSkpYnJlYWs7UC5pc3ViKFYpfXJldHVybiBWLml1c2hsbihUKX0sTi5w''@;'; put 'put ''cm90b3R5cGUuaW52bT1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5lZ2NkKHgpLmEudW1vZCh4KX0sTi5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMud29yZHNbMF0pfSxOLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLndv''@;'; put 'put ''cmRzWzBdKX0sTi5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMud29yZHNbMF0meH0sTi5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oeCl7WSgibnVtYmVyIj09dHlwZW9mIHgpO3ZhciBQPXglMjYsVj0oeC1QKS8yNixUPTE8PFA7aWYodGhpcy5sZW5ndGg8PVYpcmV0''@;'; put 'put ''dXJuIHRoaXMuX2V4cGFuZChWKzEpLHRoaXMud29yZHNbVl18PVQsdGhpcztmb3IodmFyIFM9VCxGPVY7MCE9PVMmJkY8dGhpcy5sZW5ndGg7RisrKXt2YXIgeWU9MHx0aGlzLndvcmRzW0ZdO1M9KHllKz1TKT4+PjI2LHRoaXMud29yZHNbRl09eWUmPTY3MTA4ODYzfXJldHVybiAwIT09UyYm''@;'; put 'put ''KHRoaXMud29yZHNbRl09Uyx0aGlzLmxlbmd0aCsrKSx0aGlzfSxOLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sTi5wcm90b3R5cGUuY21wbj1mdW5jdGlvbih4KXt2YXIgUCxWPXg8MDtpZigwIT09dGhpcy5u''@;'; put 'put ''ZWdhdGl2ZSYmIVYpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJlYpcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpUD0xO2Vsc2V7ViYmKHg9LXgpLFkoeDw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIFQ9MHx0aGlzLndvcmRzWzBdO1A9VD09''@;'; put 'put ''PXg/MDpUPHg/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtUDpQfSxOLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oeCl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT14Lm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09eC5uZWdhdGl2ZSlyZXR1cm4g''@;'; put 'put ''MTt2YXIgUD10aGlzLnVjbXAoeCk7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LVA6UH0sTi5wcm90b3R5cGUudWNtcD1mdW5jdGlvbih4KXtpZih0aGlzLmxlbmd0aD54Lmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDx4Lmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIFA9MCxWPXRo''@;'; put 'put ''aXMubGVuZ3RoLTE7Vj49MDtWLS0pe3ZhciBUPTB8dGhpcy53b3Jkc1tWXSxTPTB8eC53b3Jkc1tWXTtpZihUIT09Uyl7VDxTP1A9LTE6VD5TJiYoUD0xKTticmVha319cmV0dXJuIFB9LE4ucHJvdG90eXBlLmd0bj1mdW5jdGlvbih4KXtyZXR1cm4gMT09PXRoaXMuY21wbih4KX0sTi5wcm90''@;'; put 'put ''b3R5cGUuZ3Q9ZnVuY3Rpb24oeCl7cmV0dXJuIDE9PT10aGlzLmNtcCh4KX0sTi5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5jbXBuKHgpPj0wfSxOLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wKHgpPj0wfSxOLnByb3RvdHlwZS5sdG49''@;'; put 'put ''ZnVuY3Rpb24oeCl7cmV0dXJuLTE9PT10aGlzLmNtcG4oeCl9LE4ucHJvdG90eXBlLmx0PWZ1bmN0aW9uKHgpe3JldHVybi0xPT09dGhpcy5jbXAoeCl9LE4ucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY21wbih4KTw9MH0sTi5wcm90b3R5cGUubHRlPWZ1bmN0aW9u''@;'; put 'put ''KHgpe3JldHVybiB0aGlzLmNtcCh4KTw9MH0sTi5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKHgpe3JldHVybiAwPT09dGhpcy5jbXBuKHgpfSxOLnByb3RvdHlwZS5lcT1mdW5jdGlvbih4KXtyZXR1cm4gMD09PXRoaXMuY21wKHgpfSxOLnJlZD1mdW5jdGlvbih4KXtyZXR1cm4gbmV3IGVlKHgp''@;'; put 'put ''fSxOLnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbih4KXtyZXR1cm4gWSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSxZKDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLHguY29udmVydFRvKHRoaXMpLl9m''@;'; put 'put ''b3JjZVJlZCh4KX0sTi5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LE4ucHJvdG90eXBlLl9mb3JjZVJl''@;'; put 'put ''ZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5yZWQ9eCx0aGlzfSxOLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbih4KXtyZXR1cm4gWSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZCh4KX0sTi5wcm90b3R5cGUucmVk''@;'; put 'put ''QWRkPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3''@;'; put 'put ''aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyx4KX0sTi5wcm90b3R5cGUucmVk''@;'; put 'put ''SVN1Yj1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbih4KXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkg''@;'; put 'put ''d2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oeCl7cmV0dXJuIFkodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLHgpLHRoaXMucmVkLm11''@;'; put 'put ''bCh0aGlzLHgpfSxOLnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx4KSx0aGlzLnJlZC5pbXVsKHRoaXMseCl9LE4ucHJvdG90eXBlLnJlZFNx''@;'; put 'put ''cj1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxOLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcy5yZWQsInJl''@;'; put 'put ''ZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sTi5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBZKHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVy''@;'; put 'put ''cyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LE4ucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlz''@;'; put 'put ''LnJlZC5pbnZtKHRoaXMpfSxOLnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sTi5wcm90b3R5cGUucmVkUG93''@;'; put 'put ''PWZ1bmN0aW9uKHgpe3JldHVybiBZKHRoaXMucmVkJiYheC5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMseCl9O3ZhciBJZT17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9u''@;'; put 'put ''IFRlKHgsUCl7dGhpcy5uYW1lPXgsdGhpcy5wPW5ldyBOKFAsMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBOKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBNZSgpe1RlLmNhbGwodGhpcywiazI1NiIs''@;'; put 'put ''ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24gaGUoKXtUZS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAw''@;'; put 'put ''MDAwMDAwMSIpfWZ1bmN0aW9uIE8oKXtUZS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIHooKXtUZS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZm''@;'; put 'put ''ZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIGVlKHgpe2lmKCJzdHJpbmciPT10eXBlb2YgeCl7dmFyIFA9Ti5fcHJpbWUoeCk7dGhpcy5tPVAucCx0aGlzLnByaW1lPVB9ZWxzZSBZKHguZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFu''@;'; put 'put ''IDEiKSx0aGlzLm09eCx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gbmUoeCl7ZWUuY2FsbCh0aGlzLHgpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IE4oMSkuaXVzaGxuKHRo''@;'; put 'put ''aXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMu''@;'; put 'put ''bWludj10aGlzLnIuc3ViKHRoaXMubWludil9VGUucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgeD1uZXcgTihudWxsKTtyZXR1cm4geC53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLHh9LFRlLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKHgpe3ZhciBQLFY9''@;'; put 'put ''eDtkb3t0aGlzLnNwbGl0KFYsdGhpcy50bXApLFA9KFY9KFY9dGhpcy5pbXVsSyhWKSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxlKFA+dGhpcy5uKTt2YXIgVD1QPHRoaXMubj8tMTpWLnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PVQ/KFYud29yZHNbMF09MCxWLmxlbmd0aD0x''@;'; put 'put ''KTpUPjA/Vi5pc3ViKHRoaXMucCk6dm9pZCAwIT09Vi5zdHJpcD9WLnN0cmlwKCk6Vi5fc3RyaXAoKSxWfSxUZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oeCxQKXt4Lml1c2hybih0aGlzLm4sMCxQKX0sVGUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHgpe3JldHVybiB4LmltdWwodGhp''@;'; put 'put ''cy5rKX0sVyhNZSxUZSksTWUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKHgsUCl7Zm9yKHZhciBWPTQxOTQzMDMsVD1NYXRoLm1pbih4Lmxlbmd0aCw5KSxTPTA7UzxUO1MrKylQLndvcmRzW1NdPXgud29yZHNbU107aWYoUC5sZW5ndGg9VCx4Lmxlbmd0aDw9OSlyZXR1cm4geC53b3Jkc1sw''@;'; put 'put ''XT0wLHZvaWQoeC5sZW5ndGg9MSk7dmFyIEY9eC53b3Jkc1s5XTtmb3IoUC53b3Jkc1tQLmxlbmd0aCsrXT1GJlYsUz0xMDtTPHgubGVuZ3RoO1MrKyl7dmFyIHllPTB8eC53b3Jkc1tTXTt4LndvcmRzW1MtMTBdPSh5ZSZWKTw8NHxGPj4+MjIsRj15ZX14LndvcmRzW1MtMTBdPUY+Pj49MjIs''@;'; put 'put ''eC5sZW5ndGgtPTA9PT1GJiZ4Lmxlbmd0aD4xMD8xMDo5fSxNZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oeCl7eC53b3Jkc1t4Lmxlbmd0aF09MCx4LndvcmRzW3gubGVuZ3RoKzFdPTAseC5sZW5ndGgrPTI7Zm9yKHZhciBQPTAsVj0wO1Y8eC5sZW5ndGg7VisrKXt2YXIgVD0wfHgud29y''@;'; put 'put ''ZHNbVl07eC53b3Jkc1tWXT02NzEwODg2MyYoUCs9OTc3KlQpLFA9NjQqVCsoUC82NzEwODg2NHwwKX1yZXR1cm4gMD09PXgud29yZHNbeC5sZW5ndGgtMV0mJih4Lmxlbmd0aC0tLDA9PT14LndvcmRzW3gubGVuZ3RoLTFdJiZ4Lmxlbmd0aC0tKSx4fSxXKGhlLFRlKSxXKE8sVGUpLFcoeixU''@;'; put 'put ''ZSksei5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oeCl7Zm9yKHZhciBQPTAsVj0wO1Y8eC5sZW5ndGg7VisrKXt2YXIgVD0xOSooMHx4LndvcmRzW1ZdKStQLFM9NjcxMDg4NjMmVDtUPj4+PTI2LHgud29yZHNbVl09UyxQPVR9cmV0dXJuIDAhPT1QJiYoeC53b3Jkc1t4Lmxlbmd0aCsrXT1Q''@;'; put 'put ''KSx4fSxOLl9wcmltZT1mdW5jdGlvbih4KXtpZihJZVt4XSlyZXR1cm4gSWVbeF07dmFyIFA7aWYoImsyNTYiPT09eClQPW5ldyBNZTtlbHNlIGlmKCJwMjI0Ij09PXgpUD1uZXcgaGU7ZWxzZSBpZigicDE5MiI9PT14KVA9bmV3IE87ZWxzZXtpZigicDI1NTE5IiE9PXgpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJVbmtub3duIHByaW1lICIreCk7UD1uZXcgen1yZXR1cm4gSWVbeF09UCxQfSxlZS5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oeCl7WSgwPT09eC5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxZKHgucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJl''@;'; put 'put ''ZCBudW1iZXJzIil9LGVlLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbih4LFApe1koMD09KHgubmVnYXRpdmV8UC5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksWSh4LnJlZCYmeC5yZWQ9PT1QLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVy''@;'; put 'put ''cyIpfSxlZS5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UoeCkuX2ZvcmNlUmVkKHRoaXMpOngudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKX0sZWUucHJvdG90eXBlLm5lZz1mdW5jdGlvbih4KXtyZXR1cm4geC5pc1pl''@;'; put 'put ''cm8oKT94LmNsb25lKCk6dGhpcy5tLnN1Yih4KS5fZm9yY2VSZWQodGhpcyl9LGVlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7dmFyIFY9eC5hZGQoUCk7cmV0dXJuIFYuY21wKHRoaXMubSk+PTAmJlYuaXN1Yih0aGlzLm0pLFYuX2ZvcmNlUmVkKHRo''@;'; put 'put ''aXMpfSxlZS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbih4LFApe3RoaXMuX3ZlcmlmeTIoeCxQKTt2YXIgVj14LmlhZGQoUCk7cmV0dXJuIFYuY21wKHRoaXMubSk+PTAmJlYuaXN1Yih0aGlzLm0pLFZ9LGVlLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7''@;'; put 'put ''dmFyIFY9eC5zdWIoUCk7cmV0dXJuIFYuY21wbigwKTwwJiZWLmlhZGQodGhpcy5tKSxWLl9mb3JjZVJlZCh0aGlzKX0sZWUucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oeCxQKXt0aGlzLl92ZXJpZnkyKHgsUCk7dmFyIFY9eC5pc3ViKFApO3JldHVybiBWLmNtcG4oMCk8MCYmVi5pYWRkKHRo''@;'; put 'put ''aXMubSksVn0sZWUucHJvdG90eXBlLnNobD1mdW5jdGlvbih4LFApe3JldHVybiB0aGlzLl92ZXJpZnkxKHgpLHRoaXMuaW1vZCh4LnVzaGxuKFApKX0sZWUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oeCxQKXtyZXR1cm4gdGhpcy5fdmVyaWZ5Mih4LFApLHRoaXMuaW1vZCh4LmltdWwoUCkp''@;'; put 'put ''fSxlZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHgsUCl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoeCxQKSx0aGlzLmltb2QoeC5tdWwoUCkpfSxlZS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5pbXVsKHgseC5jbG9uZSgpKX0sZWUucHJvdG90eXBlLnNxcj1mdW5jdGlv''@;'; put 'put ''bih4KXtyZXR1cm4gdGhpcy5tdWwoeCx4KX0sZWUucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oeCl7aWYoeC5pc1plcm8oKSlyZXR1cm4geC5jbG9uZSgpO3ZhciBQPXRoaXMubS5hbmRsbigzKTtpZihZKFAlMj09MSksMz09PVApe3ZhciBWPXRoaXMubS5hZGQobmV3IE4oMSkpLml1c2hybigy''@;'; put 'put ''KTtyZXR1cm4gdGhpcy5wb3coeCxWKX1mb3IodmFyIFQ9dGhpcy5tLnN1Ym4oMSksUz0wOyFULmlzWmVybygpJiYwPT09VC5hbmRsbigxKTspUysrLFQuaXVzaHJuKDEpO1koIVQuaXNaZXJvKCkpO3ZhciBGPW5ldyBOKDEpLnRvUmVkKHRoaXMpLHllPUYucmVkTmVnKCksQ2U9dGhpcy5tLnN1''@;'; put 'put ''Ym4oMSkuaXVzaHJuKDEpLERlPXRoaXMubS5iaXRMZW5ndGgoKTtmb3IoRGU9bmV3IE4oMipEZSpEZSkudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KERlLENlKS5jbXAoeWUpOylEZS5yZWRJQWRkKHllKTtmb3IodmFyIFBlPXRoaXMucG93KERlLFQpLFFlPXRoaXMucG93KHgsVC5hZGRuKDEp''@;'; put 'put ''Lml1c2hybigxKSksJGU9dGhpcy5wb3coeCxUKSxndD1TOzAhPT0kZS5jbXAoRik7KXtmb3IodmFyIHd0PSRlLG10PTA7MCE9PXd0LmNtcChGKTttdCsrKXd0PXd0LnJlZFNxcigpO1kobXQ8Z3QpO3ZhciB2dD10aGlzLnBvdyhQZSxuZXcgTigxKS5pdXNobG4oZ3QtbXQtMSkpO1FlPVFlLnJl''@;'; put 'put ''ZE11bCh2dCksUGU9dnQucmVkU3FyKCksJGU9JGUucmVkTXVsKFBlKSxndD1tdH1yZXR1cm4gUWV9LGVlLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHgpe3ZhciBQPXguX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT1QLm5lZ2F0aXZlPyhQLm5lZ2F0aXZlPTAsdGhpcy5pbW9kKFApLnJlZE5l''@;'; put 'put ''ZygpKTp0aGlzLmltb2QoUCl9LGVlLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oeCxQKXtpZihQLmlzWmVybygpKXJldHVybiBuZXcgTigxKS50b1JlZCh0aGlzKTtpZigwPT09UC5jbXBuKDEpKXJldHVybiB4LmNsb25lKCk7dmFyIFY9bmV3IEFycmF5KDE2KTtWWzBdPW5ldyBOKDEpLnRvUmVk''@;'; put 'put ''KHRoaXMpLFZbMV09eDtmb3IodmFyIFQ9MjtUPFYubGVuZ3RoO1QrKylWW1RdPXRoaXMubXVsKFZbVC0xXSx4KTt2YXIgUz1WWzBdLEY9MCx5ZT0wLENlPVAuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1DZSYmKENlPTI2KSxUPVAubGVuZ3RoLTE7VD49MDtULS0pe2Zvcih2YXIgRGU9UC53b3Jk''@;'; put 'put ''c1tUXSxQZT1DZS0xO1BlPj0wO1BlLS0pe3ZhciBRZT1EZT4+UGUmMTtTIT09VlswXSYmKFM9dGhpcy5zcXIoUykpLDAhPT1RZXx8MCE9PUY/KEY8PD0xLEZ8PVFlLCg0PT0rK3llfHwwPT09VCYmMD09PVBlKSYmKFM9dGhpcy5tdWwoUyxWW0ZdKSx5ZT0wLEY9MCkpOnllPTB9Q2U9MjZ9cmV0''@;'; put 'put ''dXJuIFN9LGVlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oeCl7dmFyIFA9eC51bW9kKHRoaXMubSk7cmV0dXJuIFA9PT14P1AuY2xvbmUoKTpQfSxlZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oeCl7dmFyIFA9eC5jbG9uZSgpO3JldHVybiBQLnJlZD1udWxsLFB9LE4u''@;'; put 'put ''bW9udD1mdW5jdGlvbih4KXtyZXR1cm4gbmV3IG5lKHgpfSxXKG5lLGVlKSxuZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmltb2QoeC51c2hsbih0aGlzLnNoaWZ0KSl9LG5lLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbih4KXt2YXIgUD10aGlz''@;'; put 'put ''Lmltb2QoeC5tdWwodGhpcy5yaW52KSk7cmV0dXJuIFAucmVkPW51bGwsUH0sbmUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oeCxQKXtpZih4LmlzWmVybygpfHxQLmlzWmVybygpKXJldHVybiB4LndvcmRzWzBdPTAseC5sZW5ndGg9MSx4O3ZhciBWPXguaW11bChQKSxUPVYubWFza24odGhp''@;'; put 'put ''cy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLFM9Vi5pc3ViKFQpLml1c2hybih0aGlzLnNoaWZ0KSxGPVM7cmV0dXJuIFMuY21wKHRoaXMubSk+PTA/Rj1TLmlzdWIodGhpcy5tKTpTLmNtcG4oMCk8MCYmKEY9Uy5pYWRkKHRoaXMubSkpLEYu''@;'; put 'put ''X2ZvcmNlUmVkKHRoaXMpfSxuZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHgsUCl7aWYoeC5pc1plcm8oKXx8UC5pc1plcm8oKSlyZXR1cm4gbmV3IE4oMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBWPXgubXVsKFApLFQ9Vi5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24o''@;'; put 'put ''dGhpcy5zaGlmdCkubXVsKHRoaXMubSksUz1WLmlzdWIoVCkuaXVzaHJuKHRoaXMuc2hpZnQpLEY9UztyZXR1cm4gUy5jbXAodGhpcy5tKT49MD9GPVMuaXN1Yih0aGlzLm0pOlMuY21wbigwKTwwJiYoRj1TLmlhZGQodGhpcy5tKSksRi5fZm9yY2VSZWQodGhpcyl9LG5lLnByb3RvdHlwZS5p''@;'; put 'put ''bnZtPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmltb2QoeC5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KFU9ai5ubWQoVSksdGhpcyl9LDYxMzg6KFUsUSxqKT0+e3ZhciByZT1qKDk4MCksYWU9aig5MTk5KSxZPWooNzg1OSksVz1qKDIxNDQpLE49aigz''@;'; put 'put ''NjYzKSx0ZT1qKDM0ODIpLEs9aig0ODE4KSxKPWooOTUwOSkuQnVmZmVyO1UuZXhwb3J0cz1mdW5jdGlvbihzZSxvZSxjZSl7dmFyIGRlO2RlPXNlLnBhZGRpbmc/c2UucGFkZGluZzpjZT8xOjQ7dmFyIHZlLEFlPXJlKHNlKSxrZT1BZS5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtpZihvZS5sZW5n''@;'; put 'put ''dGg+a2V8fG5ldyBXKG9lKS5jbXAoQWUubW9kdWx1cyk+PTApdGhyb3cgbmV3IEVycm9yKCJkZWNyeXB0aW9uIGVycm9yIik7dmU9Y2U/SyhuZXcgVyhvZSksQWUpOk4ob2UsQWUpO3ZhciBTZT1KLmFsbG9jKGtlLXZlLmxlbmd0aCk7aWYodmU9Si5jb25jYXQoW1NlLHZlXSxrZSksND09PWRl''@;'; put 'put ''KXJldHVybiBmdW5jdGlvbihJZSxUZSl7dmFyIE1lPUllLm1vZHVsdXMuYnl0ZUxlbmd0aCgpLGhlPXRlKCJzaGExIikudXBkYXRlKEouYWxsb2MoMCkpLmRpZ2VzdCgpLE89aGUubGVuZ3RoO2lmKDAhPT1UZVswXSl0aHJvdyBuZXcgRXJyb3IoImRlY3J5cHRpb24gZXJyb3IiKTt2YXIgej1U''@;'; put 'put ''ZS5zbGljZSgxLE8rMSksZWU9VGUuc2xpY2UoTysxKSxuZT1ZKHosYWUoZWUsTykpLHg9WShlZSxhZShuZSxNZS1PLTEpKTtpZihmdW5jdGlvbihWLFQpe1Y9Si5mcm9tKFYpLFQ9Si5mcm9tKFQpO3ZhciBTPTAsRj1WLmxlbmd0aDtWLmxlbmd0aCE9PVQubGVuZ3RoJiYoUysrLEY9TWF0aC5t''@;'; put 'put ''aW4oVi5sZW5ndGgsVC5sZW5ndGgpKTtmb3IodmFyIHllPS0xOysreWU8RjspUys9Vlt5ZV1eVFt5ZV07cmV0dXJuIFN9KGhlLHguc2xpY2UoMCxPKSkpdGhyb3cgbmV3IEVycm9yKCJkZWNyeXB0aW9uIGVycm9yIik7Zm9yKHZhciBQPU87MD09PXhbUF07KVArKztpZigxIT09eFtQKytdKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO3JldHVybiB4LnNsaWNlKFApfShBZSx2ZSk7aWYoMT09PWRlKXJldHVybiBmdW5jdGlvbihJZSxUZSxNZSl7Zm9yKHZhciBoZT1UZS5zbGljZSgwLDIpLE89Mix6PTA7MCE9PVRlW08rK107KWlmKE8+PVRlLmxlbmd0aCl7eisrO2Jy''@;'; put 'put ''ZWFrfXZhciBlZT1UZS5zbGljZSgyLE8tMSk7aWYoKCIwMDAyIiE9PWhlLnRvU3RyaW5nKCJoZXgiKSYmIU1lfHwiMDAwMSIhPT1oZS50b1N0cmluZygiaGV4IikmJk1lKSYmeisrLGVlLmxlbmd0aDw4JiZ6Kysseil0aHJvdyBuZXcgRXJyb3IoImRlY3J5cHRpb24gZXJyb3IiKTtyZXR1cm4g''@;'; put 'put ''VGUuc2xpY2UoTyl9KDAsdmUsY2UpO2lmKDM9PT1kZSlyZXR1cm4gdmU7dGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHBhZGRpbmciKX19LDY1NTk6KFUsUSxqKT0+e3ZhciByZT1qKDk4MCksYWU9aigxNzk4KSxZPWooMzQ4MiksVz1qKDkxOTkpLE49aig3ODU5KSx0ZT1qKDIxNDQpLEs9aig0''@;'; put 'put ''ODE4KSxKPWooMzY2Myksc2U9aig5NTA5KS5CdWZmZXI7VS5leHBvcnRzPWZ1bmN0aW9uKG9lLGNlLGRlKXt2YXIgdmU7dmU9b2UucGFkZGluZz9vZS5wYWRkaW5nOmRlPzE6NDt2YXIgQWUsa2U9cmUob2UpO2lmKDQ9PT12ZSlBZT1mdW5jdGlvbihTZSxJZSl7dmFyIFRlPVNlLm1vZHVsdXMu''@;'; put 'put ''Ynl0ZUxlbmd0aCgpLE1lPUllLmxlbmd0aCxoZT1ZKCJzaGExIikudXBkYXRlKHNlLmFsbG9jKDApKS5kaWdlc3QoKSxPPWhlLmxlbmd0aCx6PTIqTztpZihNZT5UZS16LTIpdGhyb3cgbmV3IEVycm9yKCJtZXNzYWdlIHRvbyBsb25nIik7dmFyIGVlPXNlLmFsbG9jKFRlLU1lLXotMiksbmU9''@;'; put 'put ''VGUtTy0xLHg9YWUoTyksUD1OKHNlLmNvbmNhdChbaGUsZWUsc2UuYWxsb2MoMSwxKSxJZV0sbmUpLFcoeCxuZSkpLFY9Tih4LFcoUCxPKSk7cmV0dXJuIG5ldyB0ZShzZS5jb25jYXQoW3NlLmFsbG9jKDEpLFYsUF0sVGUpKX0oa2UsY2UpO2Vsc2UgaWYoMT09PXZlKUFlPWZ1bmN0aW9uKFNl''@;'; put 'put ''LEllLFRlKXt2YXIgTWUsaGU9SWUubGVuZ3RoLE89U2UubW9kdWx1cy5ieXRlTGVuZ3RoKCk7aWYoaGU+Ty0xMSl0aHJvdyBuZXcgRXJyb3IoIm1lc3NhZ2UgdG9vIGxvbmciKTtyZXR1cm4gTWU9VGU/c2UuYWxsb2MoTy1oZS0zLDI1NSk6ZnVuY3Rpb24oeil7Zm9yKHZhciBlZSxuZT1zZS5h''@;'; put 'put ''bGxvY1Vuc2FmZSh6KSx4PTAsUD1hZSgyKnopLFY9MDt4PHo7KVY9PT1QLmxlbmd0aCYmKFA9YWUoMip6KSxWPTApLChlZT1QW1YrK10pJiYobmVbeCsrXT1lZSk7cmV0dXJuIG5lfShPLWhlLTMpLG5ldyB0ZShzZS5jb25jYXQoW3NlLmZyb20oWzAsVGU/MToyXSksTWUsc2UuYWxsb2MoMSks''@;'; put 'put ''SWVdLE8pKX0oa2UsY2UsZGUpO2Vsc2V7aWYoMyE9PXZlKXRocm93IG5ldyBFcnJvcigidW5rbm93biBwYWRkaW5nIik7aWYoKEFlPW5ldyB0ZShjZSkpLmNtcChrZS5tb2R1bHVzKT49MCl0aHJvdyBuZXcgRXJyb3IoImRhdGEgdG9vIGxvbmcgZm9yIG1vZHVsdXMiKX1yZXR1cm4gZGU/SihB''@;'; put 'put ''ZSxrZSk6SyhBZSxrZSl9fSw0ODE4OihVLFEsaik9Pnt2YXIgcmU9aigyMTQ0KSxhZT1qKDk1MDkpLkJ1ZmZlcjtVLmV4cG9ydHM9ZnVuY3Rpb24oWSxXKXtyZXR1cm4gYWUuZnJvbShZLnRvUmVkKHJlLm1vbnQoVy5tb2R1bHVzKSkucmVkUG93KG5ldyByZShXLnB1YmxpY0V4cG9uZW50KSku''@;'; put 'put ''ZnJvbVJlZCgpLnRvQXJyYXkoKSl9fSw3ODU5OlU9PntVLmV4cG9ydHM9ZnVuY3Rpb24oUSxqKXtmb3IodmFyIHJlPVEubGVuZ3RoLGFlPS0xOysrYWU8cmU7KVFbYWVdXj1qW2FlXTtyZXR1cm4gUX19LDM2ODk6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0IjtqLnIoUSksai5kKFEse3VjczJkZWNv''@;'; put 'put ''ZGU6KCk9PmNlLHVjczJlbmNvZGU6KCk9PmRlLGRlY29kZTooKT0+a2UsZW5jb2RlOigpPT5TZSx0b0FTQ0lJOigpPT5UZSx0b1VuaWNvZGU6KCk9PkllLGRlZmF1bHQ6KCk9Pk1lfSk7Y29uc3QgcmU9MjE0NzQ4MzY0NyxZPS9eeG4tLS8sVz0vW15cMC1ceDdFXS8sTj0vW1x4MkVcdTMwMDJc''@;'; put 'put ''dUZGMEVcdUZGNjFdL2csdGU9e292ZXJmbG93OiJPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2VzcyIsIm5vdC1iYXNpYyI6IklsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCkiLCJpbnZhbGlkLWlucHV0IjoiSW52YWxpZCBp''@;'; put 'put ''bnB1dCJ9LEs9TWF0aC5mbG9vcixKPVN0cmluZy5mcm9tQ2hhckNvZGU7ZnVuY3Rpb24gc2UoaGUpe3Rocm93IG5ldyBSYW5nZUVycm9yKHRlW2hlXSl9ZnVuY3Rpb24gb2UoaGUsTyl7Y29uc3Qgej1oZS5zcGxpdCgiQCIpO2xldCBlZT0iIjtyZXR1cm4gei5sZW5ndGg+MSYmKGVlPXpbMF0r''@;'; put 'put ''IkAiLGhlPXpbMV0pLGVlK2Z1bmN0aW9uKHgsUCl7Y29uc3QgVj1bXTtsZXQgVD14Lmxlbmd0aDtmb3IoO1QtLTspVltUXT1QKHhbVF0pO3JldHVybiBWfSgoaGU9aGUucmVwbGFjZShOLCIuIikpLnNwbGl0KCIuIiksTykuam9pbigiLiIpfWZ1bmN0aW9uIGNlKGhlKXtjb25zdCBPPVtdO2xl''@;'; put 'put ''dCB6PTA7Y29uc3QgZWU9aGUubGVuZ3RoO2Zvcig7ejxlZTspe2NvbnN0IG5lPWhlLmNoYXJDb2RlQXQoeisrKTtpZihuZT49NTUyOTYmJm5lPD01NjMxOSYmejxlZSl7Y29uc3QgeD1oZS5jaGFyQ29kZUF0KHorKyk7NTYzMjA9PSg2NDUxMiZ4KT9PLnB1c2goKCgxMDIzJm5lKTw8MTApKygx''@;'; put 'put ''MDIzJngpKzY1NTM2KTooTy5wdXNoKG5lKSx6LS0pfWVsc2UgTy5wdXNoKG5lKX1yZXR1cm4gT31jb25zdCBkZT1oZT0+U3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uaGUpLHZlPWZ1bmN0aW9uKGhlLE8pe3JldHVybiBoZSsyMis3NSooaGU8MjYpLSgoMCE9Tyk8PDUpfSxBZT1mdW5jdGlvbiho''@;'; put 'put ''ZSxPLHope2xldCBlZT0wO2ZvcihoZT16P0soaGUvNzAwKTpoZT4+MSxoZSs9SyhoZS9PKTtoZT40NTU7ZWUrPTM2KWhlPUsoaGUvMzUpO3JldHVybiBLKGVlKzM2KmhlLyhoZSszOCkpfSxrZT1mdW5jdGlvbihoZSl7Y29uc3QgTz1bXSx6PWhlLmxlbmd0aDtsZXQgZWU9MCxuZT0xMjgseD03''@;'; put 'put ''MixQPWhlLmxhc3RJbmRleE9mKCItIik7UDwwJiYoUD0wKTtmb3IobGV0IFQ9MDtUPFA7KytUKWhlLmNoYXJDb2RlQXQoVCk+PTEyOCYmc2UoIm5vdC1iYXNpYyIpLE8ucHVzaChoZS5jaGFyQ29kZUF0KFQpKTtmb3IobGV0IFQ9UD4wP1ArMTowO1Q8ejspe2xldCBTPWVlO2ZvcihsZXQgeWU9''@;'; put 'put ''MSxDZT0zNjs7Q2UrPTM2KXtUPj16JiZzZSgiaW52YWxpZC1pbnB1dCIpO2NvbnN0IERlPShWPWhlLmNoYXJDb2RlQXQoVCsrKSktNDg8MTA/Vi0yMjpWLTY1PDI2P1YtNjU6Vi05NzwyNj9WLTk3OjM2OyhEZT49MzZ8fERlPksoKHJlLWVlKS95ZSkpJiZzZSgib3ZlcmZsb3ciKSxlZSs9RGUq''@;'; put 'put ''eWU7Y29uc3QgUGU9Q2U8PXg/MTpDZT49eCsyNj8yNjpDZS14O2lmKERlPFBlKWJyZWFrO2NvbnN0IFFlPTM2LVBlO3llPksocmUvUWUpJiZzZSgib3ZlcmZsb3ciKSx5ZSo9UWV9Y29uc3QgRj1PLmxlbmd0aCsxO3g9QWUoZWUtUyxGLDA9PVMpLEsoZWUvRik+cmUtbmUmJnNlKCJvdmVyZmxv''@;'; put 'put ''dyIpLG5lKz1LKGVlL0YpLGVlJT1GLE8uc3BsaWNlKGVlKyssMCxuZSl9dmFyIFY7cmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KC4uLk8pfSxTZT1mdW5jdGlvbihoZSl7Y29uc3QgTz1bXTtsZXQgej0oaGU9Y2UoaGUpKS5sZW5ndGgsZWU9MTI4LG5lPTAseD03Mjtmb3IoY29uc3QgVCBv''@;'; put 'put ''ZiBoZSlUPDEyOCYmTy5wdXNoKEooVCkpO2xldCBQPU8ubGVuZ3RoLFY9UDtmb3IoUCYmTy5wdXNoKCItIik7Vjx6Oyl7bGV0IFQ9cmU7Zm9yKGNvbnN0IEYgb2YgaGUpRj49ZWUmJkY8VCYmKFQ9Rik7Y29uc3QgUz1WKzE7VC1lZT5LKChyZS1uZSkvUykmJnNlKCJvdmVyZmxvdyIpLG5lKz0o''@;'; put 'put ''VC1lZSkqUyxlZT1UO2Zvcihjb25zdCBGIG9mIGhlKWlmKEY8ZWUmJisrbmU+cmUmJnNlKCJvdmVyZmxvdyIpLEY9PWVlKXtsZXQgeWU9bmU7Zm9yKGxldCBDZT0zNjs7Q2UrPTM2KXtjb25zdCBEZT1DZTw9eD8xOkNlPj14KzI2PzI2OkNlLXg7aWYoeWU8RGUpYnJlYWs7Y29uc3QgUGU9eWUt''@;'; put 'put ''RGUsUWU9MzYtRGU7Ty5wdXNoKEoodmUoRGUrUGUlUWUsMCkpKSx5ZT1LKFBlL1FlKX1PLnB1c2goSih2ZSh5ZSwwKSkpLHg9QWUobmUsUyxWPT1QKSxuZT0wLCsrVn0rK25lLCsrZWV9cmV0dXJuIE8uam9pbigiIil9LEllPWZ1bmN0aW9uKGhlKXtyZXR1cm4gb2UoaGUsZnVuY3Rpb24oTyl7''@;'; put 'put ''cmV0dXJuIFkudGVzdChPKT9rZShPLnNsaWNlKDQpLnRvTG93ZXJDYXNlKCkpOk99KX0sVGU9ZnVuY3Rpb24oaGUpe3JldHVybiBvZShoZSxmdW5jdGlvbihPKXtyZXR1cm4gVy50ZXN0KE8pPyJ4bi0tIitTZShPKTpPfSl9LE1lPXt2ZXJzaW9uOiIyLjEuMCIsdWNzMjp7ZGVjb2RlOmNlLGVu''@;'; put 'put ''Y29kZTpkZX0sZGVjb2RlOmtlLGVuY29kZTpTZSx0b0FTQ0lJOlRlLHRvVW5pY29kZTpJZX19LDI1ODc6VT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBRKGoscmUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaixyZSl9VS5leHBvcnRzPWZ1bmN0aW9uKGos''@;'; put 'put ''cmUsYWUsWSl7YWU9YWV8fCI9Ijt2YXIgVz17fTtpZigic3RyaW5nIiE9dHlwZW9mIGp8fDA9PT1qLmxlbmd0aClyZXR1cm4gVzt2YXIgTj0vXCsvZztqPWouc3BsaXQocmU9cmV8fCImIik7dmFyIHRlPTFlMztZJiYibnVtYmVyIj09dHlwZW9mIFkubWF4S2V5cyYmKHRlPVkubWF4S2V5cyk7''@;'; put 'put ''dmFyIEs9ai5sZW5ndGg7dGU+MCYmSz50ZSYmKEs9dGUpO2Zvcih2YXIgSj0wO0o8SzsrK0ope3ZhciBzZSxvZSxjZSxkZSx2ZT1qW0pdLnJlcGxhY2UoTiwiJTIwIiksQWU9dmUuaW5kZXhPZihhZSk7QWU+PTA/KHNlPXZlLnN1YnN0cigwLEFlKSxvZT12ZS5zdWJzdHIoQWUrMSkpOihzZT12''@;'; put 'put ''ZSxvZT0iIiksY2U9ZGVjb2RlVVJJQ29tcG9uZW50KHNlKSxkZT1kZWNvZGVVUklDb21wb25lbnQob2UpLFEoVyxjZSk/QXJyYXkuaXNBcnJheShXW2NlXSk/V1tjZV0ucHVzaChkZSk6V1tjZV09W1dbY2VdLGRlXTpXW2NlXT1kZX1yZXR1cm4gV319LDIxODI6VT0+eyJ1c2Ugc3RyaWN0Ijt2''@;'; put 'put ''YXIgUT1mdW5jdGlvbihqKXtzd2l0Y2godHlwZW9mIGope2Nhc2Uic3RyaW5nIjpyZXR1cm4gajtjYXNlImJvb2xlYW4iOnJldHVybiBqPyJ0cnVlIjoiZmFsc2UiO2Nhc2UibnVtYmVyIjpyZXR1cm4gaXNGaW5pdGUoaik/ajoiIjtkZWZhdWx0OnJldHVybiIifX07VS5leHBvcnRzPWZ1bmN0''@;'; put 'put ''aW9uKGoscmUsYWUsWSl7cmV0dXJuIHJlPXJlfHwiJiIsYWU9YWV8fCI9IixudWxsPT09aiYmKGo9dm9pZCAwKSwib2JqZWN0Ij09dHlwZW9mIGo/T2JqZWN0LmtleXMoaikubWFwKGZ1bmN0aW9uKFcpe3ZhciBOPWVuY29kZVVSSUNvbXBvbmVudChRKFcpKSthZTtyZXR1cm4gQXJyYXkuaXNB''@;'; put 'put ''cnJheShqW1ddKT9qW1ddLm1hcChmdW5jdGlvbih0ZSl7cmV0dXJuIE4rZW5jb2RlVVJJQ29tcG9uZW50KFEodGUpKX0pLmpvaW4ocmUpOk4rZW5jb2RlVVJJQ29tcG9uZW50KFEoaltXXSkpfSkuam9pbihyZSk6WT9lbmNvZGVVUklDb21wb25lbnQoUShZKSkrYWUrZW5jb2RlVVJJQ29tcG9u''@;'; put 'put ''ZW50KFEoaikpOiIifX0sNzY3MzooVSxRLGopPT57InVzZSBzdHJpY3QiO1EuZGVjb2RlPVEucGFyc2U9aigyNTg3KSxRLmVuY29kZT1RLnN0cmluZ2lmeT1qKDIxODIpfSwxNzk4OihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNDE1NSksVz1qKDk1MDkpLkJ1ZmZlcixOPWouZy5j''@;'; put 'put ''cnlwdG98fGouZy5tc0NyeXB0bztVLmV4cG9ydHM9TiYmTi5nZXRSYW5kb21WYWx1ZXM/ZnVuY3Rpb24odGUsSyl7aWYodGU+NDI5NDk2NzI5NSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigicmVxdWVzdGVkIHRvbyBtYW55IHJhbmRvbSBieXRlcyIpO3ZhciBKPVcuYWxsb2NVbnNhZmUodGUpO2lm''@;'; put 'put ''KHRlPjApaWYodGU+NjU1MzYpZm9yKHZhciBzZT0wO3NlPHRlO3NlKz02NTUzNilOLmdldFJhbmRvbVZhbHVlcyhKLnNsaWNlKHNlLHNlKzY1NTM2KSk7ZWxzZSBOLmdldFJhbmRvbVZhbHVlcyhKKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgSz9yZS5uZXh0VGljayhmdW5jdGlvbigpe0so''@;'; put 'put ''bnVsbCxKKX0pOkp9OmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyLlxuVXNlIENocm9tZSwgRmlyZWZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfX0sNzk2MzooVSxR''@;'; put 'put ''LGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDQxNTUpO2Z1bmN0aW9uIGFlKCl7dGhyb3cgbmV3IEVycm9yKCJzZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyXG51c2UgY2hyb21lLCBGaXJlRm94IG9yIEludGVybmV0IEV4cGxv''@;'; put 'put ''cmVyIDExIil9dmFyIFk9aig5NTA5KSxXPWooMTc5OCksTj1ZLkJ1ZmZlcix0ZT1ZLmtNYXhMZW5ndGgsSz1qLmcuY3J5cHRvfHxqLmcubXNDcnlwdG8sSj1NYXRoLnBvdygyLDMyKS0xO2Z1bmN0aW9uIHNlKGRlLHZlKXtpZigibnVtYmVyIiE9dHlwZW9mIGRlfHxkZSE9ZGUpdGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcigib2Zmc2V0IG11c3QgYmUgYSBudW1iZXIiKTtpZihkZT5KfHxkZTwwKXRocm93IG5ldyBUeXBlRXJyb3IoIm9mZnNldCBtdXN0IGJlIGEgdWludDMyIik7aWYoZGU+dGV8fGRlPnZlKXRocm93IG5ldyBSYW5nZUVycm9yKCJvZmZzZXQgb3V0IG9mIHJhbmdlIil9ZnVuY3Rp''@;'; put 'put ''b24gb2UoZGUsdmUsQWUpe2lmKCJudW1iZXIiIT10eXBlb2YgZGV8fGRlIT1kZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJzaXplIG11c3QgYmUgYSBudW1iZXIiKTtpZihkZT5KfHxkZTwwKXRocm93IG5ldyBUeXBlRXJyb3IoInNpemUgbXVzdCBiZSBhIHVpbnQzMiIpO2lmKGRlK3ZlPkFlfHxk''@;'; put 'put ''ZT50ZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiYnVmZmVyIHRvbyBzbWFsbCIpfWZ1bmN0aW9uIGNlKGRlLHZlLEFlLGtlKXtpZihyZS5icm93c2VyKXt2YXIgSWU9bmV3IFVpbnQ4QXJyYXkoZGUuYnVmZmVyLHZlLEFlKTtyZXR1cm4gSy5nZXRSYW5kb21WYWx1ZXMoSWUpLGtlP3ZvaWQgcmUu''@;'; put 'put ''bmV4dFRpY2soZnVuY3Rpb24oKXtrZShudWxsLGRlKX0pOmRlfWlmKCFrZSlyZXR1cm4gVyhBZSkuY29weShkZSx2ZSksZGU7VyhBZSxmdW5jdGlvbihUZSxNZSl7aWYoVGUpcmV0dXJuIGtlKFRlKTtNZS5jb3B5KGRlLHZlKSxrZShudWxsLGRlKX0pfUsmJksuZ2V0UmFuZG9tVmFsdWVzfHwh''@;'; put 'put ''cmUuYnJvd3Nlcj8oUS5yYW5kb21GaWxsPWZ1bmN0aW9uKGRlLHZlLEFlLGtlKXtpZighKE4uaXNCdWZmZXIoZGUpfHxkZSBpbnN0YW5jZW9mIGouZy5VaW50OEFycmF5KSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIG9yIFVpbnQ4QXJyYXkn''@;'; put 'put ''KTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdmUpa2U9dmUsdmU9MCxBZT1kZS5sZW5ndGg7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgQWUpa2U9QWUsQWU9ZGUubGVuZ3RoLXZlO2Vsc2UgaWYoImZ1bmN0aW9uIiE9dHlwZW9mIGtlKXRocm93IG5ldyBUeXBlRXJyb3IoJyJjYiIgYXJndW1l''@;'; put 'put ''bnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7cmV0dXJuIHNlKHZlLGRlLmxlbmd0aCksb2UoQWUsdmUsZGUubGVuZ3RoKSxjZShkZSx2ZSxBZSxrZSl9LFEucmFuZG9tRmlsbFN5bmM9ZnVuY3Rpb24oZGUsdmUsQWUpe2lmKHZvaWQgMD09PXZlJiYodmU9MCksIShOLmlzQnVmZmVyKGRlKXx8ZGUg''@;'; put 'put ''aW5zdGFuY2VvZiBqLmcuVWludDhBcnJheSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImJ1ZiIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBvciBVaW50OEFycmF5Jyk7cmV0dXJuIHNlKHZlLGRlLmxlbmd0aCksdm9pZCAwPT09QWUmJihBZT1kZS5sZW5ndGgtdmUpLG9lKEFlLHZlLGRlLmxl''@;'; put 'put ''bmd0aCksY2UoZGUsdmUsQWUpfSk6KFEucmFuZG9tRmlsbD1hZSxRLnJhbmRvbUZpbGxTeW5jPWFlKX0sNDI4MTpVPT57InVzZSBzdHJpY3QiO3ZhciBRPXt9O2Z1bmN0aW9uIGooYWUsWSxXKXtXfHwoVz1FcnJvcik7dmFyIE49ZnVuY3Rpb24odGUpe3ZhciBLLEo7ZnVuY3Rpb24gc2Uob2Us''@;'; put 'put ''Y2UsZGUpe3JldHVybiB0ZS5jYWxsKHRoaXMsInN0cmluZyI9PXR5cGVvZiBZP1k6WShvZSxjZSxkZSkpfHx0aGlzfXJldHVybiBKPXRlLChLPXNlKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShKLnByb3RvdHlwZSksSy5wcm90b3R5cGUuY29uc3RydWN0b3I9SyxLLl9fcHJvdG9fXz1KLHNl''@;'; put 'put ''fShXKTtOLnByb3RvdHlwZS5uYW1lPVcubmFtZSxOLnByb3RvdHlwZS5jb2RlPWFlLFFbYWVdPU59ZnVuY3Rpb24gcmUoYWUsWSl7aWYoQXJyYXkuaXNBcnJheShhZSkpe3ZhciBXPWFlLmxlbmd0aDtyZXR1cm4gYWU9YWUubWFwKGZ1bmN0aW9uKE4pe3JldHVybiBTdHJpbmcoTil9KSxXPjI/''@;'; put 'put ''Im9uZSBvZiAiLmNvbmNhdChZLCIgIikuY29uY2F0KGFlLnNsaWNlKDAsVy0xKS5qb2luKCIsICIpLCIsIG9yICIpK2FlW1ctMV06Mj09PVc/Im9uZSBvZiAiLmNvbmNhdChZLCIgIikuY29uY2F0KGFlWzBdLCIgb3IgIikuY29uY2F0KGFlWzFdKToib2YgIi5jb25jYXQoWSwiICIpLmNvbmNh''@;'; put 'put ''dChhZVswXSl9cmV0dXJuIm9mICIuY29uY2F0KFksIiAiKS5jb25jYXQoU3RyaW5nKGFlKSl9aigiRVJSX0lOVkFMSURfT1BUX1ZBTFVFIixmdW5jdGlvbihhZSxZKXtyZXR1cm4nVGhlIHZhbHVlICInK1krJyIgaXMgaW52YWxpZCBmb3Igb3B0aW9uICInK2FlKyciJ30sVHlwZUVycm9yKSxq''@;'; put 'put ''KCJFUlJfSU5WQUxJRF9BUkdfVFlQRSIsZnVuY3Rpb24oYWUsWSxXKXt2YXIgTixKLG9lLGRlO2lmKCJzdHJpbmciPT10eXBlb2YgWSYmIm5vdCAiPT09WS5zdWJzdHIoMCwibm90ICIubGVuZ3RoKT8oTj0ibXVzdCBub3QgYmUiLFk9WS5yZXBsYWNlKC9ebm90IC8sIiIpKTpOPSJtdXN0IGJl''@;'; put 'put ''IixvZT1hZSwodm9pZCAwPT09ZGV8fGRlPm9lLmxlbmd0aCkmJihkZT1vZS5sZW5ndGgpLCIgYXJndW1lbnQiPT09b2Uuc3Vic3RyaW5nKGRlLSIgYXJndW1lbnQiLmxlbmd0aCxkZSkpSj0iVGhlICIuY29uY2F0KGFlLCIgIikuY29uY2F0KE4sIiAiKS5jb25jYXQocmUoWSwidHlwZSIpKTtl''@;'; put 'put ''bHNle3ZhciBzZT1mdW5jdGlvbihvZSxjZSxkZSl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBkZSYmKGRlPTApLCEoZGUrIi4iLmxlbmd0aD5vZS5sZW5ndGgpJiYtMSE9PW9lLmluZGV4T2YoIi4iLGRlKX0oYWUpPyJwcm9wZXJ0eSI6ImFyZ3VtZW50IjtKPSdUaGUgIicuY29uY2F0KGFlLCci''@;'; put 'put ''ICcpLmNvbmNhdChzZSwiICIpLmNvbmNhdChOLCIgIikuY29uY2F0KHJlKFksInR5cGUiKSl9cmV0dXJuIEorIi4gUmVjZWl2ZWQgdHlwZSAiLmNvbmNhdCh0eXBlb2YgVyl9LFR5cGVFcnJvciksaigiRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRiIsInN0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9G''@;'; put 'put ''IiksaigiRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQiLGZ1bmN0aW9uKGFlKXtyZXR1cm4iVGhlICIrYWUrIiBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkIn0pLGooIkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFIiwiUHJlbWF0dXJlIGNsb3NlIiksaigiRVJSX1NUUkVBTV9ERVNUUk9Z''@;'; put 'put ''RUQiLGZ1bmN0aW9uKGFlKXtyZXR1cm4iQ2Fubm90IGNhbGwgIithZSsiIGFmdGVyIGEgc3RyZWFtIHdhcyBkZXN0cm95ZWQifSksaigiRVJSX01VTFRJUExFX0NBTExCQUNLIiwiQ2FsbGJhY2sgY2FsbGVkIG11bHRpcGxlIHRpbWVzIiksaigiRVJSX1NUUkVBTV9DQU5OT1RfUElQRSIsIkNh''@;'; put 'put ''bm5vdCBwaXBlLCBub3QgcmVhZGFibGUiKSxqKCJFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCIsIndyaXRlIGFmdGVyIGVuZCIpLGooIkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMiLCJNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbSIsVHlwZUVycm9yKSxqKCJFUlJfVU5LTk9X''@;'; put 'put ''Tl9FTkNPRElORyIsZnVuY3Rpb24oYWUpe3JldHVybiJVbmtub3duIGVuY29kaW5nOiAiK2FlfSxUeXBlRXJyb3IpLGooIkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQiLCJzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudCIpLFUuZXhwb3J0cy5xPVF9LDY3NTM6KFUs''@;'; put 'put ''USxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig0MTU1KSxhZT1PYmplY3Qua2V5c3x8ZnVuY3Rpb24oY2Upe3ZhciBkZT1bXTtmb3IodmFyIHZlIGluIGNlKWRlLnB1c2godmUpO3JldHVybiBkZX07VS5leHBvcnRzPUo7dmFyIFk9aig5NDgxKSxXPWooNDIyOSk7aig1NzE3KShKLFkpO2Zv''@;'; put 'put ''cih2YXIgTj1hZShXLnByb3RvdHlwZSksdGU9MDt0ZTxOLmxlbmd0aDt0ZSsrKXt2YXIgSz1OW3RlXTtKLnByb3RvdHlwZVtLXXx8KEoucHJvdG90eXBlW0tdPVcucHJvdG90eXBlW0tdKX1mdW5jdGlvbiBKKGNlKXtpZighKHRoaXMgaW5zdGFuY2VvZiBKKSlyZXR1cm4gbmV3IEooY2UpO1ku''@;'; put 'put ''Y2FsbCh0aGlzLGNlKSxXLmNhbGwodGhpcyxjZSksdGhpcy5hbGxvd0hhbGZPcGVuPSEwLGNlJiYoITE9PT1jZS5yZWFkYWJsZSYmKHRoaXMucmVhZGFibGU9ITEpLCExPT09Y2Uud3JpdGFibGUmJih0aGlzLndyaXRhYmxlPSExKSwhMT09PWNlLmFsbG93SGFsZk9wZW4mJih0aGlzLmFsbG93''@;'; put 'put ''SGFsZk9wZW49ITEsdGhpcy5vbmNlKCJlbmQiLHNlKSkpfWZ1bmN0aW9uIHNlKCl7dGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZHx8cmUubmV4dFRpY2sob2UsdGhpcyl9ZnVuY3Rpb24gb2UoY2Upe2NlLmVuZCgpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwid3JpdGFibGVI''@;'; put 'put ''aWdoV2F0ZXJNYXJrIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwid3JpdGFibGVCdWZmZXIiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmdldEJ1ZmZlcigpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwid3JpdGFibGVMZW5ndGgiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0''@;'; put 'put ''YWJsZVN0YXRlLmxlbmd0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsImRlc3Ryb3llZCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3JlYWRhYmxlU3RhdGUmJnZvaWQgMCE9PXRoaXMuX3dyaXRhYmxlU3RhdGUmJnRo''@;'; put 'put ''aXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKGNlKXt2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95''@;'; put 'put ''ZWQ9Y2UsdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9Y2UpfX0pfSwyNzI1OihVLFEsaik9PnsidXNlIHN0cmljdCI7VS5leHBvcnRzPWFlO3ZhciByZT1qKDQ2MDUpO2Z1bmN0aW9uIGFlKFkpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGFlKSlyZXR1cm4gbmV3IGFlKFkpO3JlLmNhbGwo''@;'; put 'put ''dGhpcyxZKX1qKDU3MTcpKGFlLHJlKSxhZS5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbihZLFcsTil7TihudWxsLFkpfX0sOTQ4MTooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZSxhZT1qKDQxNTUpO1UuZXhwb3J0cz1lZSxlZS5SZWFkYWJsZVN0YXRlPXosaig3MTg3KTt2YXIg''@;'; put 'put ''SyxZPWZ1bmN0aW9uKHZ0LEF0KXtyZXR1cm4gdnQubGlzdGVuZXJzKEF0KS5sZW5ndGh9LFc9aigyNTAzKSxOPWooODc2NCkuQnVmZmVyLHRlPWouZy5VaW50OEFycmF5fHxmdW5jdGlvbigpe30sSj1qKDQ2MTYpO0s9SiYmSi5kZWJ1Z2xvZz9KLmRlYnVnbG9nKCJzdHJlYW0iKTpmdW5jdGlv''@;'; put 'put ''bigpe307dmFyIHNlLG9lLGNlLGRlPWooNzMyNyksdmU9aigxMTk1KSxBZT1qKDI0NTcpLmdldEhpZ2hXYXRlck1hcmssa2U9aig0MjgxKS5xLFNlPWtlLkVSUl9JTlZBTElEX0FSR19UWVBFLEllPWtlLkVSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0YsVGU9a2UuRVJSX01FVEhPRF9OT1RfSU1Q''@;'; put 'put ''TEVNRU5URUQsTWU9a2UuRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVDtqKDU3MTcpKGVlLFcpO3ZhciBoZT12ZS5lcnJvck9yRGVzdHJveSxPPVsiZXJyb3IiLCJjbG9zZSIsImRlc3Ryb3kiLCJwYXVzZSIsInJlc3VtZSJdO2Z1bmN0aW9uIHoodnQsQXQsaHQpe3JlPXJlfHxq''@;'; put 'put ''KDY3NTMpLCJib29sZWFuIiE9dHlwZW9mIGh0JiYoaHQ9QXQgaW5zdGFuY2VvZiByZSksdGhpcy5vYmplY3RNb2RlPSEhKHZ0PXZ0fHx7fSkub2JqZWN0TW9kZSxodCYmKHRoaXMub2JqZWN0TW9kZT10aGlzLm9iamVjdE1vZGV8fCEhdnQucmVhZGFibGVPYmplY3RNb2RlKSx0aGlzLmhpZ2hX''@;'; put 'put ''YXRlck1hcms9QWUodGhpcyx2dCwicmVhZGFibGVIaWdoV2F0ZXJNYXJrIixodCksdGhpcy5idWZmZXI9bmV3IGRlLHRoaXMubGVuZ3RoPTAsdGhpcy5waXBlcz1udWxsLHRoaXMucGlwZXNDb3VudD0wLHRoaXMuZmxvd2luZz1udWxsLHRoaXMuZW5kZWQ9ITEsdGhpcy5lbmRFbWl0dGVkPSEx''@;'; put 'put ''LHRoaXMucmVhZGluZz0hMSx0aGlzLnN5bmM9ITAsdGhpcy5uZWVkUmVhZGFibGU9ITEsdGhpcy5lbWl0dGVkUmVhZGFibGU9ITEsdGhpcy5yZWFkYWJsZUxpc3RlbmluZz0hMSx0aGlzLnJlc3VtZVNjaGVkdWxlZD0hMSx0aGlzLnBhdXNlZD0hMCx0aGlzLmVtaXRDbG9zZT0hMSE9PXZ0LmVt''@;'; put 'put ''aXRDbG9zZSx0aGlzLmF1dG9EZXN0cm95PSEhdnQuYXV0b0Rlc3Ryb3ksdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5kZWZhdWx0RW5jb2Rpbmc9dnQuZGVmYXVsdEVuY29kaW5nfHwidXRmOCIsdGhpcy5hd2FpdERyYWluPTAsdGhpcy5yZWFkaW5nTW9yZT0hMSx0aGlzLmRlY29kZXI9bnVsbCx0''@;'; put 'put ''aGlzLmVuY29kaW5nPW51bGwsdnQuZW5jb2RpbmcmJihzZXx8KHNlPWooMjU1MykuU3RyaW5nRGVjb2RlciksdGhpcy5kZWNvZGVyPW5ldyBzZSh2dC5lbmNvZGluZyksdGhpcy5lbmNvZGluZz12dC5lbmNvZGluZyl9ZnVuY3Rpb24gZWUodnQpe2lmKHJlPXJlfHxqKDY3NTMpLCEodGhpcyBp''@;'; put 'put ''bnN0YW5jZW9mIGVlKSlyZXR1cm4gbmV3IGVlKHZ0KTt0aGlzLl9yZWFkYWJsZVN0YXRlPW5ldyB6KHZ0LHRoaXMsdGhpcyBpbnN0YW5jZW9mIHJlKSx0aGlzLnJlYWRhYmxlPSEwLHZ0JiYoImZ1bmN0aW9uIj09dHlwZW9mIHZ0LnJlYWQmJih0aGlzLl9yZWFkPXZ0LnJlYWQpLCJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiB2dC5kZXN0cm95JiYodGhpcy5fZGVzdHJveT12dC5kZXN0cm95KSksVy5jYWxsKHRoaXMpfWZ1bmN0aW9uIG5lKHZ0LEF0LGh0LEJ0LG9uKXtLKCJyZWFkYWJsZUFkZENodW5rIixBdCk7dmFyIF90LGV0LGx0LEx0LEN0LHR0PXZ0Ll9yZWFkYWJsZVN0YXRlO2lmKG51bGw9''@;'; put 'put ''PT1BdCl0dC5yZWFkaW5nPSExLGZ1bmN0aW9uKGV0LGx0KXtpZihLKCJvbkVvZkNodW5rIiksIWx0LmVuZGVkKXtpZihsdC5kZWNvZGVyKXt2YXIgTHQ9bHQuZGVjb2Rlci5lbmQoKTtMdCYmTHQubGVuZ3RoJiYobHQuYnVmZmVyLnB1c2goTHQpLGx0Lmxlbmd0aCs9bHQub2JqZWN0TW9kZT8x''@;'; put 'put ''Okx0Lmxlbmd0aCl9bHQuZW5kZWQ9ITAsbHQuc3luYz9UKGV0KToobHQubmVlZFJlYWRhYmxlPSExLGx0LmVtaXR0ZWRSZWFkYWJsZXx8KGx0LmVtaXR0ZWRSZWFkYWJsZT0hMCxTKGV0KSkpfX0odnQsdHQpO2Vsc2UgaWYob258fChldD10dCxOLmlzQnVmZmVyKEN0PWx0PUF0KXx8Q3QgaW5z''@;'; put 'put ''dGFuY2VvZiB0ZXx8InN0cmluZyI9PXR5cGVvZiBsdHx8dm9pZCAwPT09bHR8fGV0Lm9iamVjdE1vZGV8fChMdD1uZXcgU2UoImNodW5rIixbInN0cmluZyIsIkJ1ZmZlciIsIlVpbnQ4QXJyYXkiXSxsdCkpLF90PUx0KSxfdCloZSh2dCxfdCk7ZWxzZSBpZih0dC5vYmplY3RNb2RlfHxBdCYm''@;'; put 'put ''QXQubGVuZ3RoPjApaWYoInN0cmluZyI9PXR5cGVvZiBBdHx8dHQub2JqZWN0TW9kZXx8T2JqZWN0LmdldFByb3RvdHlwZU9mKEF0KT09PU4ucHJvdG90eXBlfHwoQXQ9ZnVuY3Rpb24oZXQpe3JldHVybiBOLmZyb20oZXQpfShBdCkpLEJ0KXR0LmVuZEVtaXR0ZWQ/aGUodnQsbmV3IE1lKTp4''@;'; put 'put ''KHZ0LHR0LEF0LCEwKTtlbHNlIGlmKHR0LmVuZGVkKWhlKHZ0LG5ldyBJZSk7ZWxzZXtpZih0dC5kZXN0cm95ZWQpcmV0dXJuITE7dHQucmVhZGluZz0hMSx0dC5kZWNvZGVyJiYhaHQ/KEF0PXR0LmRlY29kZXIud3JpdGUoQXQpLHR0Lm9iamVjdE1vZGV8fDAhPT1BdC5sZW5ndGg/eCh2dCx0''@;'; put 'put ''dCxBdCwhMSk6Rih2dCx0dCkpOngodnQsdHQsQXQsITEpfWVsc2UgQnR8fCh0dC5yZWFkaW5nPSExLEYodnQsdHQpKTtyZXR1cm4hdHQuZW5kZWQmJih0dC5sZW5ndGg8dHQuaGlnaFdhdGVyTWFya3x8MD09PXR0Lmxlbmd0aCl9ZnVuY3Rpb24geCh2dCxBdCxodCxCdCl7QXQuZmxvd2luZyYm''@;'; put 'put ''MD09PUF0Lmxlbmd0aCYmIUF0LnN5bmM/KEF0LmF3YWl0RHJhaW49MCx2dC5lbWl0KCJkYXRhIixodCkpOihBdC5sZW5ndGgrPUF0Lm9iamVjdE1vZGU/MTpodC5sZW5ndGgsQnQ/QXQuYnVmZmVyLnVuc2hpZnQoaHQpOkF0LmJ1ZmZlci5wdXNoKGh0KSxBdC5uZWVkUmVhZGFibGUmJlQodnQp''@;'; put 'put ''KSxGKHZ0LEF0KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZWUucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0''@;'; put 'put ''aW9uKHZ0KXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9dnQpfX0pLGVlLnByb3RvdHlwZS5kZXN0cm95PXZlLmRlc3Ryb3ksZWUucHJvdG90eXBlLl91bmRlc3Ryb3k9dmUudW5kZXN0cm95LGVlLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlv''@;'; put 'put ''bih2dCxBdCl7QXQodnQpfSxlZS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih2dCxBdCl7dmFyIGh0LEJ0PXRoaXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuIEJ0Lm9iamVjdE1vZGU/aHQ9ITA6InN0cmluZyI9PXR5cGVvZiB2dCYmKChBdD1BdHx8QnQuZGVmYXVsdEVuY29kaW5nKSE9PUJ0LmVu''@;'; put 'put ''Y29kaW5nJiYodnQ9Ti5mcm9tKHZ0LEF0KSxBdD0iIiksaHQ9ITApLG5lKHRoaXMsdnQsQXQsITEsaHQpfSxlZS5wcm90b3R5cGUudW5zaGlmdD1mdW5jdGlvbih2dCl7cmV0dXJuIG5lKHRoaXMsdnQsbnVsbCwhMCwhMSl9LGVlLnByb3RvdHlwZS5pc1BhdXNlZD1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biExPT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nfSxlZS5wcm90b3R5cGUuc2V0RW5jb2Rpbmc9ZnVuY3Rpb24odnQpe3NlfHwoc2U9aigyNTUzKS5TdHJpbmdEZWNvZGVyKTt2YXIgQXQ9bmV3IHNlKHZ0KTt0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXI9QXQsdGhpcy5fcmVhZGFi''@;'; put 'put ''bGVTdGF0ZS5lbmNvZGluZz10aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIuZW5jb2Rpbmc7Zm9yKHZhciBodD10aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5oZWFkLEJ0PSIiO251bGwhPT1odDspQnQrPUF0LndyaXRlKGh0LmRhdGEpLGh0PWh0Lm5leHQ7cmV0dXJuIHRoaXMuX3JlYWRh''@;'; put 'put ''YmxlU3RhdGUuYnVmZmVyLmNsZWFyKCksIiIhPT1CdCYmdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXIucHVzaChCdCksdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGg9QnQubGVuZ3RoLHRoaXN9O3ZhciBQPTEwNzM3NDE4MjQ7ZnVuY3Rpb24gVih2dCxBdCl7cmV0dXJuIHZ0PD0wfHwwPT09''@;'; put 'put ''QXQubGVuZ3RoJiZBdC5lbmRlZD8wOkF0Lm9iamVjdE1vZGU/MTp2dCE9dnQ/QXQuZmxvd2luZyYmQXQubGVuZ3RoP0F0LmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoOkF0Lmxlbmd0aDoodnQ+QXQuaGlnaFdhdGVyTWFyayYmKEF0LmhpZ2hXYXRlck1hcms9KChodD12dCk+PVA/aHQ9UDooaHQt''@;'; put 'put ''LSxodHw9aHQ+Pj4xLGh0fD1odD4+PjIsaHR8PWh0Pj4+NCxodHw9aHQ+Pj44LGh0fD1odD4+PjE2LGh0KyspLGh0KSksdnQ8PUF0Lmxlbmd0aD92dDpBdC5lbmRlZD9BdC5sZW5ndGg6KEF0Lm5lZWRSZWFkYWJsZT0hMCwwKSk7dmFyIGh0fWZ1bmN0aW9uIFQodnQpe3ZhciBBdD12dC5fcmVh''@;'; put 'put ''ZGFibGVTdGF0ZTtLKCJlbWl0UmVhZGFibGUiLEF0Lm5lZWRSZWFkYWJsZSxBdC5lbWl0dGVkUmVhZGFibGUpLEF0Lm5lZWRSZWFkYWJsZT0hMSxBdC5lbWl0dGVkUmVhZGFibGV8fChLKCJlbWl0UmVhZGFibGUiLEF0LmZsb3dpbmcpLEF0LmVtaXR0ZWRSZWFkYWJsZT0hMCxhZS5uZXh0VGlj''@;'; put 'put ''ayhTLHZ0KSl9ZnVuY3Rpb24gUyh2dCl7dmFyIEF0PXZ0Ll9yZWFkYWJsZVN0YXRlO0soImVtaXRSZWFkYWJsZV8iLEF0LmRlc3Ryb3llZCxBdC5sZW5ndGgsQXQuZW5kZWQpLEF0LmRlc3Ryb3llZHx8IUF0Lmxlbmd0aCYmIUF0LmVuZGVkfHwodnQuZW1pdCgicmVhZGFibGUiKSxBdC5lbWl0''@;'; put 'put ''dGVkUmVhZGFibGU9ITEpLEF0Lm5lZWRSZWFkYWJsZT0hQXQuZmxvd2luZyYmIUF0LmVuZGVkJiZBdC5sZW5ndGg8PUF0LmhpZ2hXYXRlck1hcmssUWUodnQpfWZ1bmN0aW9uIEYodnQsQXQpe0F0LnJlYWRpbmdNb3JlfHwoQXQucmVhZGluZ01vcmU9ITAsYWUubmV4dFRpY2soeWUsdnQsQXQp''@;'; put 'put ''KX1mdW5jdGlvbiB5ZSh2dCxBdCl7Zm9yKDshQXQucmVhZGluZyYmIUF0LmVuZGVkJiYoQXQubGVuZ3RoPEF0LmhpZ2hXYXRlck1hcmt8fEF0LmZsb3dpbmcmJjA9PT1BdC5sZW5ndGgpOyl7dmFyIGh0PUF0Lmxlbmd0aDtpZihLKCJtYXliZVJlYWRNb3JlIHJlYWQgMCIpLHZ0LnJlYWQoMCks''@;'; put 'put ''aHQ9PT1BdC5sZW5ndGgpYnJlYWt9QXQucmVhZGluZ01vcmU9ITF9ZnVuY3Rpb24gQ2UodnQpe3ZhciBBdD12dC5fcmVhZGFibGVTdGF0ZTtBdC5yZWFkYWJsZUxpc3RlbmluZz12dC5saXN0ZW5lckNvdW50KCJyZWFkYWJsZSIpPjAsQXQucmVzdW1lU2NoZWR1bGVkJiYhQXQucGF1c2VkP0F0''@;'; put 'put ''LmZsb3dpbmc9ITA6dnQubGlzdGVuZXJDb3VudCgiZGF0YSIpPjAmJnZ0LnJlc3VtZSgpfWZ1bmN0aW9uIERlKHZ0KXtLKCJyZWFkYWJsZSBuZXh0dGljayByZWFkIDAiKSx2dC5yZWFkKDApfWZ1bmN0aW9uIFBlKHZ0LEF0KXtLKCJyZXN1bWUiLEF0LnJlYWRpbmcpLEF0LnJlYWRpbmd8fHZ0''@;'; put 'put ''LnJlYWQoMCksQXQucmVzdW1lU2NoZWR1bGVkPSExLHZ0LmVtaXQoInJlc3VtZSIpLFFlKHZ0KSxBdC5mbG93aW5nJiYhQXQucmVhZGluZyYmdnQucmVhZCgwKX1mdW5jdGlvbiBRZSh2dCl7dmFyIEF0PXZ0Ll9yZWFkYWJsZVN0YXRlO2ZvcihLKCJmbG93IixBdC5mbG93aW5nKTtBdC5mbG93''@;'; put 'put ''aW5nJiZudWxsIT09dnQucmVhZCgpOyk7fWZ1bmN0aW9uICRlKHZ0LEF0KXtyZXR1cm4gMD09PUF0Lmxlbmd0aD9udWxsOihBdC5vYmplY3RNb2RlP2h0PUF0LmJ1ZmZlci5zaGlmdCgpOiF2dHx8dnQ+PUF0Lmxlbmd0aD8oaHQ9QXQuZGVjb2Rlcj9BdC5idWZmZXIuam9pbigiIik6MT09PUF0''@;'; put 'put ''LmJ1ZmZlci5sZW5ndGg/QXQuYnVmZmVyLmZpcnN0KCk6QXQuYnVmZmVyLmNvbmNhdChBdC5sZW5ndGgpLEF0LmJ1ZmZlci5jbGVhcigpKTpodD1BdC5idWZmZXIuY29uc3VtZSh2dCxBdC5kZWNvZGVyKSxodCk7dmFyIGh0fWZ1bmN0aW9uIGd0KHZ0KXt2YXIgQXQ9dnQuX3JlYWRhYmxlU3Rh''@;'; put 'put ''dGU7SygiZW5kUmVhZGFibGUiLEF0LmVuZEVtaXR0ZWQpLEF0LmVuZEVtaXR0ZWR8fChBdC5lbmRlZD0hMCxhZS5uZXh0VGljayh3dCxBdCx2dCkpfWZ1bmN0aW9uIHd0KHZ0LEF0KXtpZihLKCJlbmRSZWFkYWJsZU5UIix2dC5lbmRFbWl0dGVkLHZ0Lmxlbmd0aCksIXZ0LmVuZEVtaXR0ZWQm''@;'; put 'put ''JjA9PT12dC5sZW5ndGgmJih2dC5lbmRFbWl0dGVkPSEwLEF0LnJlYWRhYmxlPSExLEF0LmVtaXQoImVuZCIpLHZ0LmF1dG9EZXN0cm95KSl7dmFyIGh0PUF0Ll93cml0YWJsZVN0YXRlOyghaHR8fGh0LmF1dG9EZXN0cm95JiZodC5maW5pc2hlZCkmJkF0LmRlc3Ryb3koKX19ZnVuY3Rpb24g''@;'; put 'put ''bXQodnQsQXQpe2Zvcih2YXIgaHQ9MCxCdD12dC5sZW5ndGg7aHQ8QnQ7aHQrKylpZih2dFtodF09PT1BdClyZXR1cm4gaHQ7cmV0dXJuLTF9ZWUucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24odnQpe0soInJlYWQiLHZ0KSx2dD1wYXJzZUludCh2dCwxMCk7dmFyIEF0PXRoaXMuX3JlYWRhYmxl''@;'; put 'put ''U3RhdGUsaHQ9dnQ7aWYoMCE9PXZ0JiYoQXQuZW1pdHRlZFJlYWRhYmxlPSExKSwwPT09dnQmJkF0Lm5lZWRSZWFkYWJsZSYmKCgwIT09QXQuaGlnaFdhdGVyTWFyaz9BdC5sZW5ndGg+PUF0LmhpZ2hXYXRlck1hcms6QXQubGVuZ3RoPjApfHxBdC5lbmRlZCkpcmV0dXJuIEsoInJlYWQ6IGVt''@;'; put 'put ''aXRSZWFkYWJsZSIsQXQubGVuZ3RoLEF0LmVuZGVkKSwwPT09QXQubGVuZ3RoJiZBdC5lbmRlZD9ndCh0aGlzKTpUKHRoaXMpLG51bGw7aWYoMD09PSh2dD1WKHZ0LEF0KSkmJkF0LmVuZGVkKXJldHVybiAwPT09QXQubGVuZ3RoJiZndCh0aGlzKSxudWxsO3ZhciBCdCxvbj1BdC5uZWVkUmVh''@;'; put 'put ''ZGFibGU7cmV0dXJuIEsoIm5lZWQgcmVhZGFibGUiLG9uKSwoMD09PUF0Lmxlbmd0aHx8QXQubGVuZ3RoLXZ0PEF0LmhpZ2hXYXRlck1hcmspJiZLKCJsZW5ndGggbGVzcyB0aGFuIHdhdGVybWFyayIsb249ITApLEF0LmVuZGVkfHxBdC5yZWFkaW5nP0soInJlYWRpbmcgb3IgZW5kZWQiLG9u''@;'; put 'put ''PSExKTpvbiYmKEsoImRvIHJlYWQiKSxBdC5yZWFkaW5nPSEwLEF0LnN5bmM9ITAsMD09PUF0Lmxlbmd0aCYmKEF0Lm5lZWRSZWFkYWJsZT0hMCksdGhpcy5fcmVhZChBdC5oaWdoV2F0ZXJNYXJrKSxBdC5zeW5jPSExLEF0LnJlYWRpbmd8fCh2dD1WKGh0LEF0KSkpLG51bGw9PT0oQnQ9dnQ+''@;'; put 'put ''MD8kZSh2dCxBdCk6bnVsbCk/KEF0Lm5lZWRSZWFkYWJsZT1BdC5sZW5ndGg8PUF0LmhpZ2hXYXRlck1hcmssdnQ9MCk6KEF0Lmxlbmd0aC09dnQsQXQuYXdhaXREcmFpbj0wKSwwPT09QXQubGVuZ3RoJiYoQXQuZW5kZWR8fChBdC5uZWVkUmVhZGFibGU9ITApLGh0IT09dnQmJkF0LmVuZGVk''@;'; put 'put ''JiZndCh0aGlzKSksbnVsbCE9PUJ0JiZ0aGlzLmVtaXQoImRhdGEiLEJ0KSxCdH0sZWUucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKHZ0KXtoZSh0aGlzLG5ldyBUZSgiX3JlYWQoKSIpKX0sZWUucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24odnQsQXQpe3ZhciBodD10aGlzLEJ0PXRoaXMuX3Jl''@;'; put 'put ''YWRhYmxlU3RhdGU7c3dpdGNoKEJ0LnBpcGVzQ291bnQpe2Nhc2UgMDpCdC5waXBlcz12dDticmVhaztjYXNlIDE6QnQucGlwZXM9W0J0LnBpcGVzLHZ0XTticmVhaztkZWZhdWx0OkJ0LnBpcGVzLnB1c2godnQpfUJ0LnBpcGVzQ291bnQrPTEsSygicGlwZSBjb3VudD0lZCBvcHRzPSVqIixC''@;'; put 'put ''dC5waXBlc0NvdW50LEF0KTt2YXIgb249QXQmJiExPT09QXQuZW5kfHx2dD09PWFlLnN0ZG91dHx8dnQ9PT1hZS5zdGRlcnI/R2U6dHQ7ZnVuY3Rpb24gdHQoKXtLKCJvbmVuZCIpLHZ0LmVuZCgpfUJ0LmVuZEVtaXR0ZWQ/YWUubmV4dFRpY2sob24pOmh0Lm9uY2UoImVuZCIsb24pLHZ0Lm9u''@;'; put 'put ''KCJ1bnBpcGUiLGZ1bmN0aW9uIF90KFVlLHl0KXtLKCJvbnVucGlwZSIpLFVlPT09aHQmJnl0JiYhMT09PXl0Lmhhc1VucGlwZWQmJih5dC5oYXNVbnBpcGVkPSEwLEsoImNsZWFudXAiKSx2dC5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLGZ0KSx2dC5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixI''@;'; put 'put ''dCksdnQucmVtb3ZlTGlzdGVuZXIoImRyYWluIixldCksdnQucmVtb3ZlTGlzdGVuZXIoImVycm9yIixDdCksdnQucmVtb3ZlTGlzdGVuZXIoInVucGlwZSIsX3QpLGh0LnJlbW92ZUxpc3RlbmVyKCJlbmQiLHR0KSxodC5yZW1vdmVMaXN0ZW5lcigiZW5kIixHZSksaHQucmVtb3ZlTGlzdGVu''@;'; put 'put ''ZXIoImRhdGEiLEx0KSxsdD0hMCwhQnQuYXdhaXREcmFpbnx8dnQuX3dyaXRhYmxlU3RhdGUmJiF2dC5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW58fGV0KCkpfSk7dmFyIFVlLGV0PShVZT1odCxmdW5jdGlvbigpe3ZhciB5dD1VZS5fcmVhZGFibGVTdGF0ZTtLKCJwaXBlT25EcmFpbiIseXQu''@;'; put 'put ''YXdhaXREcmFpbikseXQuYXdhaXREcmFpbiYmeXQuYXdhaXREcmFpbi0tLDA9PT15dC5hd2FpdERyYWluJiZZKFVlLCJkYXRhIikmJih5dC5mbG93aW5nPSEwLFFlKFVlKSl9KTt2dC5vbigiZHJhaW4iLGV0KTt2YXIgbHQ9ITE7ZnVuY3Rpb24gTHQoVWUpe0soIm9uZGF0YSIpO3ZhciB5dD12''@;'; put 'put ''dC53cml0ZShVZSk7SygiZGVzdC53cml0ZSIseXQpLCExPT09eXQmJigoMT09PUJ0LnBpcGVzQ291bnQmJkJ0LnBpcGVzPT09dnR8fEJ0LnBpcGVzQ291bnQ+MSYmLTEhPT1tdChCdC5waXBlcyx2dCkpJiYhbHQmJihLKCJmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UiLEJ0LmF3YWl0RHJh''@;'; put 'put ''aW4pLEJ0LmF3YWl0RHJhaW4rKyksaHQucGF1c2UoKSl9ZnVuY3Rpb24gQ3QoVWUpe0soIm9uZXJyb3IiLFVlKSxHZSgpLHZ0LnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsQ3QpLDA9PT1ZKHZ0LCJlcnJvciIpJiZoZSh2dCxVZSl9ZnVuY3Rpb24gZnQoKXt2dC5yZW1vdmVMaXN0ZW5lcigiZmlu''@;'; put 'put ''aXNoIixIdCksR2UoKX1mdW5jdGlvbiBIdCgpe0soIm9uZmluaXNoIiksdnQucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixmdCksR2UoKX1mdW5jdGlvbiBHZSgpe0soInVucGlwZSIpLGh0LnVucGlwZSh2dCl9cmV0dXJuIGh0Lm9uKCJkYXRhIixMdCksZnVuY3Rpb24oVWUseXQsanQpe2lmKCJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBVZS5wcmVwZW5kTGlzdGVuZXIpcmV0dXJuIFVlLnByZXBlbmRMaXN0ZW5lcih5dCxqdCk7VWUuX2V2ZW50cyYmVWUuX2V2ZW50c1t5dF0/QXJyYXkuaXNBcnJheShVZS5fZXZlbnRzW3l0XSk/VWUuX2V2ZW50c1t5dF0udW5zaGlmdChqdCk6VWUuX2V2ZW50c1t5''@;'; put 'put ''dF09W2p0LFVlLl9ldmVudHNbeXRdXTpVZS5vbih5dCxqdCl9KHZ0LCJlcnJvciIsQ3QpLHZ0Lm9uY2UoImNsb3NlIixmdCksdnQub25jZSgiZmluaXNoIixIdCksdnQuZW1pdCgicGlwZSIsaHQpLEJ0LmZsb3dpbmd8fChLKCJwaXBlIHJlc3VtZSIpLGh0LnJlc3VtZSgpKSx2dH0sZWUucHJv''@;'; put 'put ''dG90eXBlLnVucGlwZT1mdW5jdGlvbih2dCl7dmFyIEF0PXRoaXMuX3JlYWRhYmxlU3RhdGUsaHQ9e2hhc1VucGlwZWQ6ITF9O2lmKDA9PT1BdC5waXBlc0NvdW50KXJldHVybiB0aGlzO2lmKDE9PT1BdC5waXBlc0NvdW50KXJldHVybiB2dCYmdnQhPT1BdC5waXBlc3x8KHZ0fHwodnQ9QXQu''@;'; put 'put ''cGlwZXMpLEF0LnBpcGVzPW51bGwsQXQucGlwZXNDb3VudD0wLEF0LmZsb3dpbmc9ITEsdnQmJnZ0LmVtaXQoInVucGlwZSIsdGhpcyxodCkpLHRoaXM7aWYoIXZ0KXt2YXIgQnQ9QXQucGlwZXMsb249QXQucGlwZXNDb3VudDtBdC5waXBlcz1udWxsLEF0LnBpcGVzQ291bnQ9MCxBdC5mbG93''@;'; put 'put ''aW5nPSExO2Zvcih2YXIgX3Q9MDtfdDxvbjtfdCsrKUJ0W190XS5lbWl0KCJ1bnBpcGUiLHRoaXMse2hhc1VucGlwZWQ6ITF9KTtyZXR1cm4gdGhpc312YXIgdHQ9bXQoQXQucGlwZXMsdnQpO3JldHVybi0xPT09dHR8fChBdC5waXBlcy5zcGxpY2UodHQsMSksQXQucGlwZXNDb3VudC09MSwx''@;'; put 'put ''PT09QXQucGlwZXNDb3VudCYmKEF0LnBpcGVzPUF0LnBpcGVzWzBdKSx2dC5lbWl0KCJ1bnBpcGUiLHRoaXMsaHQpKSx0aGlzfSxlZS5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZWUucHJvdG90eXBlLm9uPWZ1bmN0aW9uKHZ0LEF0KXt2YXIgaHQ9Vy5wcm90b3R5cGUub24uY2FsbCh0aGlzLHZ0''@;'; put 'put ''LEF0KSxCdD10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiJkYXRhIj09PXZ0PyhCdC5yZWFkYWJsZUxpc3RlbmluZz10aGlzLmxpc3RlbmVyQ291bnQoInJlYWRhYmxlIik+MCwhMSE9PUJ0LmZsb3dpbmcmJnRoaXMucmVzdW1lKCkpOiJyZWFkYWJsZSI9PT12dCYmKEJ0LmVuZEVtaXR0ZWR8''@;'; put 'put ''fEJ0LnJlYWRhYmxlTGlzdGVuaW5nfHwoQnQucmVhZGFibGVMaXN0ZW5pbmc9QnQubmVlZFJlYWRhYmxlPSEwLEJ0LmZsb3dpbmc9ITEsQnQuZW1pdHRlZFJlYWRhYmxlPSExLEsoIm9uIHJlYWRhYmxlIixCdC5sZW5ndGgsQnQucmVhZGluZyksQnQubGVuZ3RoP1QodGhpcyk6QnQucmVhZGlu''@;'; put 'put ''Z3x8YWUubmV4dFRpY2soRGUsdGhpcykpKSxodH0sZWUucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKHZ0LEF0KXt2YXIgaHQ9Vy5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIuY2FsbCh0aGlzLHZ0LEF0KTtyZXR1cm4icmVhZGFibGUiPT09dnQmJmFlLm5leHRUaWNrKENlLHRo''@;'; put 'put ''aXMpLGh0fSxlZS5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKHZ0KXt2YXIgQXQ9Vy5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4icmVhZGFibGUiIT09dnQmJnZvaWQgMCE9PXZ0fHxhZS5uZXh0VGljayhDZSx0''@;'; put 'put ''aGlzKSxBdH0sZWUucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe3ZhciBodCx2dD10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiB2dC5mbG93aW5nfHwoSygicmVzdW1lIiksdnQuZmxvd2luZz0hdnQucmVhZGFibGVMaXN0ZW5pbmcsdGhpcywoaHQ9dnQpLnJlc3VtZVNjaGVkdWxlZHx8''@;'; put 'put ''KGh0LnJlc3VtZVNjaGVkdWxlZD0hMCxhZS5uZXh0VGljayhQZSx0aGlzLGh0KSkpLHZ0LnBhdXNlZD0hMSx0aGlzfSxlZS5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXtyZXR1cm4gSygiY2FsbCBwYXVzZSBmbG93aW5nPSVqIix0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpLCExIT09''@;'; put 'put ''dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiYoSygicGF1c2UiKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9ITEsdGhpcy5lbWl0KCJwYXVzZSIpKSx0aGlzLl9yZWFkYWJsZVN0YXRlLnBhdXNlZD0hMCx0aGlzfSxlZS5wcm90b3R5cGUud3JhcD1mdW5jdGlvbih2dCl7dmFyIEF0''@;'; put 'put ''PXRoaXMsaHQ9dGhpcy5fcmVhZGFibGVTdGF0ZSxCdD0hMTtmb3IodmFyIG9uIGluIHZ0Lm9uKCJlbmQiLGZ1bmN0aW9uKCl7aWYoSygid3JhcHBlZCBlbmQiKSxodC5kZWNvZGVyJiYhaHQuZW5kZWQpe3ZhciB0dD1odC5kZWNvZGVyLmVuZCgpO3R0JiZ0dC5sZW5ndGgmJkF0LnB1c2godHQp''@;'; put 'put ''fUF0LnB1c2gobnVsbCl9KSx2dC5vbigiZGF0YSIsZnVuY3Rpb24odHQpe0soIndyYXBwZWQgZGF0YSIpLGh0LmRlY29kZXImJih0dD1odC5kZWNvZGVyLndyaXRlKHR0KSksaHQub2JqZWN0TW9kZSYmbnVsbD09dHR8fChodC5vYmplY3RNb2RlfHx0dCYmdHQubGVuZ3RoKSYmKEF0LnB1c2go''@;'; put 'put ''dHQpfHwoQnQ9ITAsdnQucGF1c2UoKSkpfSksdnQpdm9pZCAwPT09dGhpc1tvbl0mJiJmdW5jdGlvbiI9PXR5cGVvZiB2dFtvbl0mJih0aGlzW29uXT1mdW5jdGlvbih0dCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHZ0W3R0XS5hcHBseSh2dCxhcmd1bWVudHMpfX0ob24pKTtmb3IodmFy''@;'; put 'put ''IF90PTA7X3Q8Ty5sZW5ndGg7X3QrKyl2dC5vbihPW190XSx0aGlzLmVtaXQuYmluZCh0aGlzLE9bX3RdKSk7cmV0dXJuIHRoaXMuX3JlYWQ9ZnVuY3Rpb24odHQpe0soIndyYXBwZWQgX3JlYWQiLHR0KSxCdCYmKEJ0PSExLHZ0LnJlc3VtZSgpKX0sdGhpc30sImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IFN5bWJvbCYmKGVlLnByb3RvdHlwZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09b2UmJihvZT1qKDU4NTApKSxvZSh0aGlzKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlZS5wcm90b3R5cGUsInJlYWRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1l''@;'; put 'put ''cmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZWUucHJvdG90eXBlLCJyZWFkYWJsZUJ1ZmZlciIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jl''@;'; put 'put ''YWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlZS5wcm90b3R5cGUsInJlYWRhYmxlRmxvd2luZyIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZ30sc2V0''@;'; put 'put ''OmZ1bmN0aW9uKHZ0KXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nPXZ0KX19KSxlZS5fZnJvbUxpc3Q9JGUsT2JqZWN0LmRlZmluZVByb3BlcnR5KGVlLnByb3RvdHlwZSwicmVhZGFibGVMZW5ndGgiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmxlbmd0aH19KSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoZWUuZnJvbT1mdW5jdGlvbih2dCxBdCl7cmV0dXJuIHZvaWQgMD09PWNlJiYoY2U9aig1MTY3KSksY2UoZWUsdnQsQXQpfSl9LDQ2MDU6KFUsUSxqKT0+eyJ1c2Ugc3Ry''@;'; put 'put ''aWN0IjtVLmV4cG9ydHM9Sjt2YXIgcmU9aig0MjgxKS5xLGFlPXJlLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELFk9cmUuRVJSX01VTFRJUExFX0NBTExCQUNLLFc9cmUuRVJSX1RSQU5TRk9STV9BTFJFQURZX1RSQU5TRk9STUlORyxOPXJlLkVSUl9UUkFOU0ZPUk1fV0lUSF9MRU5HVEhf''@;'; put 'put ''MCx0ZT1qKDY3NTMpO2Z1bmN0aW9uIEsoY2UsZGUpe3ZhciB2ZT10aGlzLl90cmFuc2Zvcm1TdGF0ZTt2ZS50cmFuc2Zvcm1pbmc9ITE7dmFyIEFlPXZlLndyaXRlY2I7aWYobnVsbD09PUFlKXJldHVybiB0aGlzLmVtaXQoImVycm9yIixuZXcgWSk7dmUud3JpdGVjaHVuaz1udWxsLHZlLndy''@;'; put 'put ''aXRlY2I9bnVsbCxudWxsIT1kZSYmdGhpcy5wdXNoKGRlKSxBZShjZSk7dmFyIGtlPXRoaXMuX3JlYWRhYmxlU3RhdGU7a2UucmVhZGluZz0hMSwoa2UubmVlZFJlYWRhYmxlfHxrZS5sZW5ndGg8a2UuaGlnaFdhdGVyTWFyaykmJnRoaXMuX3JlYWQoa2UuaGlnaFdhdGVyTWFyayl9ZnVuY3Rp''@;'; put 'put ''b24gSihjZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgSikpcmV0dXJuIG5ldyBKKGNlKTt0ZS5jYWxsKHRoaXMsY2UpLHRoaXMuX3RyYW5zZm9ybVN0YXRlPXthZnRlclRyYW5zZm9ybTpLLmJpbmQodGhpcyksbmVlZFRyYW5zZm9ybTohMSx0cmFuc2Zvcm1pbmc6ITEsd3JpdGVjYjpudWxsLHdy''@;'; put 'put ''aXRlY2h1bms6bnVsbCx3cml0ZWVuY29kaW5nOm51bGx9LHRoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlPSEwLHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYz0hMSxjZSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBjZS50cmFuc2Zvcm0mJih0aGlzLl90cmFuc2Zvcm09Y2UudHJhbnNmb3Jt''@;'; put 'put ''KSwiZnVuY3Rpb24iPT10eXBlb2YgY2UuZmx1c2gmJih0aGlzLl9mbHVzaD1jZS5mbHVzaCkpLHRoaXMub24oInByZWZpbmlzaCIsc2UpfWZ1bmN0aW9uIHNlKCl7dmFyIGNlPXRoaXM7ImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuX2ZsdXNofHx0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3ll''@;'; put 'put ''ZD9vZSh0aGlzLG51bGwsbnVsbCk6dGhpcy5fZmx1c2goZnVuY3Rpb24oZGUsdmUpe29lKGNlLGRlLHZlKX0pfWZ1bmN0aW9uIG9lKGNlLGRlLHZlKXtpZihkZSlyZXR1cm4gY2UuZW1pdCgiZXJyb3IiLGRlKTtpZihudWxsIT12ZSYmY2UucHVzaCh2ZSksY2UuX3dyaXRhYmxlU3RhdGUubGVu''@;'; put 'put ''Z3RoKXRocm93IG5ldyBOO2lmKGNlLl90cmFuc2Zvcm1TdGF0ZS50cmFuc2Zvcm1pbmcpdGhyb3cgbmV3IFc7cmV0dXJuIGNlLnB1c2gobnVsbCl9aig1NzE3KShKLHRlKSxKLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGNlLGRlKXtyZXR1cm4gdGhpcy5fdHJhbnNmb3JtU3RhdGUubmVlZFRy''@;'; put 'put ''YW5zZm9ybT0hMSx0ZS5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsY2UsZGUpfSxKLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKGNlLGRlLHZlKXt2ZShuZXcgYWUoIl90cmFuc2Zvcm0oKSIpKX0sSi5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKGNlLGRlLHZlKXt2YXIgQWU9dGhp''@;'; put 'put ''cy5fdHJhbnNmb3JtU3RhdGU7aWYoQWUud3JpdGVjYj12ZSxBZS53cml0ZWNodW5rPWNlLEFlLndyaXRlZW5jb2Rpbmc9ZGUsIUFlLnRyYW5zZm9ybWluZyl7dmFyIGtlPXRoaXMuX3JlYWRhYmxlU3RhdGU7KEFlLm5lZWRUcmFuc2Zvcm18fGtlLm5lZWRSZWFkYWJsZXx8a2UubGVuZ3RoPGtl''@;'; put 'put ''LmhpZ2hXYXRlck1hcmspJiZ0aGlzLl9yZWFkKGtlLmhpZ2hXYXRlck1hcmspfX0sSi5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24oY2Upe3ZhciBkZT10aGlzLl90cmFuc2Zvcm1TdGF0ZTtudWxsPT09ZGUud3JpdGVjaHVua3x8ZGUudHJhbnNmb3JtaW5nP2RlLm5lZWRUcmFuc2Zvcm09ITA6''@;'; put 'put ''KGRlLnRyYW5zZm9ybWluZz0hMCx0aGlzLl90cmFuc2Zvcm0oZGUud3JpdGVjaHVuayxkZS53cml0ZWVuY29kaW5nLGRlLmFmdGVyVHJhbnNmb3JtKSl9LEoucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKGNlLGRlKXt0ZS5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlzLGNlLGZ1bmN0''@;'; put 'put ''aW9uKHZlKXtkZSh2ZSl9KX19LDQyMjk6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmUsYWU9aig0MTU1KTtmdW5jdGlvbiBZKEYpe3ZhciB5ZT10aGlzO3RoaXMubmV4dD1udWxsLHRoaXMuZW50cnk9bnVsbCx0aGlzLmZpbmlzaD1mdW5jdGlvbigpeyFmdW5jdGlvbihDZSxEZSxQZSl7''@;'; put 'put ''dmFyIFFlPUNlLmVudHJ5O2ZvcihDZS5lbnRyeT1udWxsO1FlOyl7dmFyICRlPVFlLmNhbGxiYWNrO0RlLnBlbmRpbmdjYi0tLCRlKHVuZGVmaW5lZCksUWU9UWUubmV4dH1EZS5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dD1DZX0oeWUsRil9fVUuZXhwb3J0cz1lZSxlZS5Xcml0YWJsZVN0YXRl''@;'; put 'put ''PXo7dmFyIEosVz17ZGVwcmVjYXRlOmooNDkyNyl9LE49aigyNTAzKSx0ZT1qKDg3NjQpLkJ1ZmZlcixLPWouZy5VaW50OEFycmF5fHxmdW5jdGlvbigpe30sc2U9aigxMTk1KSxvZT1qKDI0NTcpLmdldEhpZ2hXYXRlck1hcmssY2U9aig0MjgxKS5xLGRlPWNlLkVSUl9JTlZBTElEX0FSR19U''@;'; put 'put ''WVBFLHZlPWNlLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELEFlPWNlLkVSUl9NVUxUSVBMRV9DQUxMQkFDSyxrZT1jZS5FUlJfU1RSRUFNX0NBTk5PVF9QSVBFLFNlPWNlLkVSUl9TVFJFQU1fREVTVFJPWUVELEllPWNlLkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMsVGU9Y2UuRVJSX1NUUkVB''@;'; put 'put ''TV9XUklURV9BRlRFUl9FTkQsTWU9Y2UuRVJSX1VOS05PV05fRU5DT0RJTkcsaGU9c2UuZXJyb3JPckRlc3Ryb3k7ZnVuY3Rpb24gTygpe31mdW5jdGlvbiB6KEYseWUsQ2Upe3JlPXJlfHxqKDY3NTMpLCJib29sZWFuIiE9dHlwZW9mIENlJiYoQ2U9eWUgaW5zdGFuY2VvZiByZSksdGhpcy5v''@;'; put 'put ''YmplY3RNb2RlPSEhKEY9Rnx8e30pLm9iamVjdE1vZGUsQ2UmJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIUYud3JpdGFibGVPYmplY3RNb2RlKSx0aGlzLmhpZ2hXYXRlck1hcms9b2UodGhpcyxGLCJ3cml0YWJsZUhpZ2hXYXRlck1hcmsiLENlKSx0aGlzLmZpbmFsQ2Fs''@;'; put 'put ''bGVkPSExLHRoaXMubmVlZERyYWluPSExLHRoaXMuZW5kaW5nPSExLHRoaXMuZW5kZWQ9ITEsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmRlY29kZVN0cmluZ3M9ISghMT09PUYuZGVjb2RlU3RyaW5ncyksdGhpcy5kZWZhdWx0RW5jb2Rpbmc9Ri5kZWZhdWx0RW5j''@;'; put 'put ''b2Rpbmd8fCJ1dGY4Iix0aGlzLmxlbmd0aD0wLHRoaXMud3JpdGluZz0hMSx0aGlzLmNvcmtlZD0wLHRoaXMuc3luYz0hMCx0aGlzLmJ1ZmZlclByb2Nlc3Npbmc9ITEsdGhpcy5vbndyaXRlPWZ1bmN0aW9uKFBlKXshZnVuY3Rpb24oUWUsJGUpe3ZhciBBdCxndD1RZS5fd3JpdGFibGVTdGF0''@;'; put 'put ''ZSx3dD1ndC5zeW5jLG10PWd0LndyaXRlY2I7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG10KXRocm93IG5ldyBBZTtpZigoQXQ9Z3QpLndyaXRpbmc9ITEsQXQud3JpdGVjYj1udWxsLEF0Lmxlbmd0aC09QXQud3JpdGVsZW4sQXQud3JpdGVsZW49MCwkZSkhZnVuY3Rpb24oQXQsaHQsQnQsb24s''@;'; put 'put ''X3Qpey0taHQucGVuZGluZ2NiLEJ0PyhhZS5uZXh0VGljayhfdCxvbiksYWUubmV4dFRpY2soUyxBdCxodCksQXQuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLGhlKEF0LG9uKSk6KF90KG9uKSxBdC5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsaGUoQXQsb24pLFMoQXQs''@;'; put 'put ''aHQpKX0oUWUsZ3Qsd3QsJGUsbXQpO2Vsc2V7dmFyIHZ0PVYoZ3QpfHxRZS5kZXN0cm95ZWQ7dnR8fGd0LmNvcmtlZHx8Z3QuYnVmZmVyUHJvY2Vzc2luZ3x8IWd0LmJ1ZmZlcmVkUmVxdWVzdHx8UChRZSxndCksd3Q/YWUubmV4dFRpY2soeCxRZSxndCx2dCxtdCk6eChRZSxndCx2dCxtdCl9''@;'; put 'put ''fSh5ZSxQZSl9LHRoaXMud3JpdGVjYj1udWxsLHRoaXMud3JpdGVsZW49MCx0aGlzLmJ1ZmZlcmVkUmVxdWVzdD1udWxsLHRoaXMubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsLHRoaXMucGVuZGluZ2NiPTAsdGhpcy5wcmVmaW5pc2hlZD0hMSx0aGlzLmVycm9yRW1pdHRlZD0hMSx0aGlzLmVt''@;'; put 'put ''aXRDbG9zZT0hMSE9PUYuZW1pdENsb3NlLHRoaXMuYXV0b0Rlc3Ryb3k9ISFGLmF1dG9EZXN0cm95LHRoaXMuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MCx0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgWSh0aGlzKX1mdW5jdGlvbiBlZShGKXt2YXIgeWU9dGhpcyBpbnN0YW5jZW9mKHJlPXJl''@;'; put 'put ''fHxqKDY3NTMpKTtpZigheWUmJiFKLmNhbGwoZWUsdGhpcykpcmV0dXJuIG5ldyBlZShGKTt0aGlzLl93cml0YWJsZVN0YXRlPW5ldyB6KEYsdGhpcyx5ZSksdGhpcy53cml0YWJsZT0hMCxGJiYoImZ1bmN0aW9uIj09dHlwZW9mIEYud3JpdGUmJih0aGlzLl93cml0ZT1GLndyaXRlKSwiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgRi53cml0ZXYmJih0aGlzLl93cml0ZXY9Ri53cml0ZXYpLCJmdW5jdGlvbiI9PXR5cGVvZiBGLmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PUYuZGVzdHJveSksImZ1bmN0aW9uIj09dHlwZW9mIEYuZmluYWwmJih0aGlzLl9maW5hbD1GLmZpbmFsKSksTi5jYWxsKHRo''@;'; put 'put ''aXMpfWZ1bmN0aW9uIG5lKEYseWUsQ2UsRGUsUGUsUWUsJGUpe3llLndyaXRlbGVuPURlLHllLndyaXRlY2I9JGUseWUud3JpdGluZz0hMCx5ZS5zeW5jPSEwLHllLmRlc3Ryb3llZD95ZS5vbndyaXRlKG5ldyBTZSgid3JpdGUiKSk6Q2U/Ri5fd3JpdGV2KFBlLHllLm9ud3JpdGUpOkYuX3dy''@;'; put 'put ''aXRlKFBlLFFlLHllLm9ud3JpdGUpLHllLnN5bmM9ITF9ZnVuY3Rpb24geChGLHllLENlLERlKXt2YXIgUGUsUWU7Q2V8fChQZT1GLDA9PT0oUWU9eWUpLmxlbmd0aCYmUWUubmVlZERyYWluJiYoUWUubmVlZERyYWluPSExLFBlLmVtaXQoImRyYWluIikpKSx5ZS5wZW5kaW5nY2ItLSxEZSgp''@;'; put 'put ''LFMoRix5ZSl9ZnVuY3Rpb24gUChGLHllKXt5ZS5idWZmZXJQcm9jZXNzaW5nPSEwO3ZhciBDZT15ZS5idWZmZXJlZFJlcXVlc3Q7aWYoRi5fd3JpdGV2JiZDZSYmQ2UubmV4dCl7dmFyIFBlPW5ldyBBcnJheSh5ZS5idWZmZXJlZFJlcXVlc3RDb3VudCksUWU9eWUuY29ya2VkUmVxdWVzdHNG''@;'; put 'put ''cmVlO1FlLmVudHJ5PUNlO2Zvcih2YXIgJGU9MCxndD0hMDtDZTspUGVbJGVdPUNlLENlLmlzQnVmfHwoZ3Q9ITEpLENlPUNlLm5leHQsJGUrPTE7UGUuYWxsQnVmZmVycz1ndCxuZShGLHllLCEwLHllLmxlbmd0aCxQZSwiIixRZS5maW5pc2gpLHllLnBlbmRpbmdjYisrLHllLmxhc3RCdWZm''@;'; put 'put ''ZXJlZFJlcXVlc3Q9bnVsbCxRZS5uZXh0Pyh5ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU9UWUubmV4dCxRZS5uZXh0PW51bGwpOnllLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgWSh5ZSkseWUuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MH1lbHNle2Zvcig7Q2U7KXt2YXIgd3Q9Q2UuY2h1bms7aWYobmUo''@;'; put 'put ''Rix5ZSwhMSx5ZS5vYmplY3RNb2RlPzE6d3QubGVuZ3RoLHd0LENlLmVuY29kaW5nLENlLmNhbGxiYWNrKSxDZT1DZS5uZXh0LHllLmJ1ZmZlcmVkUmVxdWVzdENvdW50LS0seWUud3JpdGluZylicmVha31udWxsPT09Q2UmJih5ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwpfXllLmJ1ZmZl''@;'; put 'put ''cmVkUmVxdWVzdD1DZSx5ZS5idWZmZXJQcm9jZXNzaW5nPSExfWZ1bmN0aW9uIFYoRil7cmV0dXJuIEYuZW5kaW5nJiYwPT09Ri5sZW5ndGgmJm51bGw9PT1GLmJ1ZmZlcmVkUmVxdWVzdCYmIUYuZmluaXNoZWQmJiFGLndyaXRpbmd9ZnVuY3Rpb24gVChGLHllKXtGLl9maW5hbChmdW5jdGlv''@;'; put 'put ''bihDZSl7eWUucGVuZGluZ2NiLS0sQ2UmJmhlKEYsQ2UpLHllLnByZWZpbmlzaGVkPSEwLEYuZW1pdCgicHJlZmluaXNoIiksUyhGLHllKX0pfWZ1bmN0aW9uIFMoRix5ZSl7dmFyIFBlLFFlLENlPVYoeWUpO2lmKENlJiYoUGU9RiwoUWU9eWUpLnByZWZpbmlzaGVkfHxRZS5maW5hbENhbGxl''@;'; put 'put ''ZHx8KCJmdW5jdGlvbiIhPXR5cGVvZiBQZS5fZmluYWx8fFFlLmRlc3Ryb3llZD8oUWUucHJlZmluaXNoZWQ9ITAsUGUuZW1pdCgicHJlZmluaXNoIikpOihRZS5wZW5kaW5nY2IrKyxRZS5maW5hbENhbGxlZD0hMCxhZS5uZXh0VGljayhULFBlLFFlKSkpLDA9PT15ZS5wZW5kaW5nY2ImJih5''@;'; put 'put ''ZS5maW5pc2hlZD0hMCxGLmVtaXQoImZpbmlzaCIpLHllLmF1dG9EZXN0cm95KSkpe3ZhciBEZT1GLl9yZWFkYWJsZVN0YXRlOyghRGV8fERlLmF1dG9EZXN0cm95JiZEZS5lbmRFbWl0dGVkKSYmRi5kZXN0cm95KCl9cmV0dXJuIENlfWooNTcxNykoZWUsTiksei5wcm90b3R5cGUuZ2V0QnVm''@;'; put 'put ''ZmVyPWZ1bmN0aW9uKCl7Zm9yKHZhciBGPXRoaXMuYnVmZmVyZWRSZXF1ZXN0LHllPVtdO0Y7KXllLnB1c2goRiksRj1GLm5leHQ7cmV0dXJuIHllfSxmdW5jdGlvbigpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUsImJ1ZmZlciIse2dldDpXLmRlcHJlY2F0ZShmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiB0aGlzLmdldEJ1ZmZlcigpfSwiX3dyaXRhYmxlU3RhdGUuYnVmZmVyIGlzIGRlcHJlY2F0ZWQuIFVzZSBfd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIgaW5zdGVhZC4iLCJERVAwMDAzIil9KX1jYXRjaChGKXt9fSgpLCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5''@;'; put 'put ''bWJvbC5oYXNJbnN0YW5jZSYmImZ1bmN0aW9uIj09dHlwZW9mIEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdPyhKPUZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlZSxTeW1ib2wuaGFzSW5zdGFuY2Use3Zh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKEYpe3JldHVybiEhSi5jYWxsKHRoaXMsRil8fHRoaXM9PT1lZSYmRiYmRi5fd3JpdGFibGVTdGF0ZSBpbnN0YW5jZW9mIHp9fSkpOko9ZnVuY3Rpb24oRil7cmV0dXJuIEYgaW5zdGFuY2VvZiB0aGlzfSxlZS5wcm90b3R5cGUucGlwZT1mdW5jdGlvbigpe2hlKHRoaXMs''@;'; put 'put ''bmV3IGtlKX0sZWUucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEYseWUsQ2Upe3ZhciBEZSxndCx3dCxtdCxQZT10aGlzLl93cml0YWJsZVN0YXRlLFFlPSExLCRlPSFQZS5vYmplY3RNb2RlJiYodGUuaXNCdWZmZXIoRGU9Ril8fERlIGluc3RhbmNlb2YgSyk7cmV0dXJuICRlJiYhdGUuaXNC''@;'; put 'put ''dWZmZXIoRikmJihGPXRlLmZyb20oRikpLCJmdW5jdGlvbiI9PXR5cGVvZiB5ZSYmKENlPXllLHllPW51bGwpLCRlP3llPSJidWZmZXIiOnllfHwoeWU9UGUuZGVmYXVsdEVuY29kaW5nKSwiZnVuY3Rpb24iIT10eXBlb2YgQ2UmJihDZT1PKSxQZS5lbmRpbmc/KGd0PXRoaXMsd3Q9Q2UsbXQ9''@;'; put 'put ''bmV3IFRlLGhlKGd0LG10KSxhZS5uZXh0VGljayh3dCxtdCkpOigkZXx8ZnVuY3Rpb24oZ3Qsd3QsbXQsdnQpe3ZhciBBdDtyZXR1cm4gbnVsbD09PW10P0F0PW5ldyBJZToic3RyaW5nIj09dHlwZW9mIG10fHx3dC5vYmplY3RNb2RlfHwoQXQ9bmV3IGRlKCJjaHVuayIsWyJzdHJpbmciLCJC''@;'; put 'put ''dWZmZXIiXSxtdCkpLCFBdHx8KGhlKGd0LEF0KSxhZS5uZXh0VGljayh2dCxBdCksITEpfSh0aGlzLFBlLEYsQ2UpKSYmKFBlLnBlbmRpbmdjYisrLFFlPWZ1bmN0aW9uKGd0LHd0LG10LHZ0LEF0LGh0KXtpZighbXQpe3ZhciBCdD0obHQ9dnQsKGV0PXd0KS5vYmplY3RNb2RlfHwhMT09PWV0''@;'; put 'put ''LmRlY29kZVN0cmluZ3N8fCJzdHJpbmciIT10eXBlb2YgbHR8fChsdD10ZS5mcm9tKGx0LEF0KSksbHQpO3Z0IT09QnQmJihtdD0hMCxBdD0iYnVmZmVyIix2dD1CdCl9dmFyIGV0LGx0LG9uPXd0Lm9iamVjdE1vZGU/MTp2dC5sZW5ndGg7d3QubGVuZ3RoKz1vbjt2YXIgX3Q9d3QubGVuZ3Ro''@;'; put 'put ''PHd0LmhpZ2hXYXRlck1hcms7aWYoX3R8fCh3dC5uZWVkRHJhaW49ITApLHd0LndyaXRpbmd8fHd0LmNvcmtlZCl7dmFyIHR0PXd0Lmxhc3RCdWZmZXJlZFJlcXVlc3Q7d3QubGFzdEJ1ZmZlcmVkUmVxdWVzdD17Y2h1bms6dnQsZW5jb2Rpbmc6QXQsaXNCdWY6bXQsY2FsbGJhY2s6aHQsbmV4''@;'; put 'put ''dDpudWxsfSx0dD90dC5uZXh0PXd0Lmxhc3RCdWZmZXJlZFJlcXVlc3Q6d3QuYnVmZmVyZWRSZXF1ZXN0PXd0Lmxhc3RCdWZmZXJlZFJlcXVlc3Qsd3QuYnVmZmVyZWRSZXF1ZXN0Q291bnQrPTF9ZWxzZSBuZShndCx3dCwhMSxvbix2dCxBdCxodCk7cmV0dXJuIF90fSh0aGlzLFBlLCRlLEYs''@;'; put 'put ''eWUsQ2UpKSxRZX0sZWUucHJvdG90eXBlLmNvcms9ZnVuY3Rpb24oKXt0aGlzLl93cml0YWJsZVN0YXRlLmNvcmtlZCsrfSxlZS5wcm90b3R5cGUudW5jb3JrPWZ1bmN0aW9uKCl7dmFyIEY9dGhpcy5fd3JpdGFibGVTdGF0ZTtGLmNvcmtlZCYmKEYuY29ya2VkLS0sRi53cml0aW5nfHxGLmNv''@;'; put 'put ''cmtlZHx8Ri5idWZmZXJQcm9jZXNzaW5nfHwhRi5idWZmZXJlZFJlcXVlc3R8fFAodGhpcyxGKSl9LGVlLnByb3RvdHlwZS5zZXREZWZhdWx0RW5jb2Rpbmc9ZnVuY3Rpb24oRil7aWYoInN0cmluZyI9PXR5cGVvZiBGJiYoRj1GLnRvTG93ZXJDYXNlKCkpLCEoWyJoZXgiLCJ1dGY4IiwidXRm''@;'; put 'put ''LTgiLCJhc2NpaSIsImJpbmFyeSIsImJhc2U2NCIsInVjczIiLCJ1Y3MtMiIsInV0ZjE2bGUiLCJ1dGYtMTZsZSIsInJhdyJdLmluZGV4T2YoKEYrIiIpLnRvTG93ZXJDYXNlKCkpPi0xKSl0aHJvdyBuZXcgTWUoRik7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVmYXVsdEVuY29kaW5n''@;'; put 'put ''PUYsdGhpc30sT2JqZWN0LmRlZmluZVByb3BlcnR5KGVlLnByb3RvdHlwZSwid3JpdGFibGVCdWZmZXIiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmdldEJ1ZmZlcigpfX0pLE9iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShlZS5wcm90b3R5cGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxlZS5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKEYseWUsQ2Upe0NlKG5l''@;'; put 'put ''dyB2ZSgiX3dyaXRlKCkiKSl9LGVlLnByb3RvdHlwZS5fd3JpdGV2PW51bGwsZWUucHJvdG90eXBlLmVuZD1mdW5jdGlvbihGLHllLENlKXt2YXIgUWUsJGUsRGU9dGhpcy5fd3JpdGFibGVTdGF0ZTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgRj8oQ2U9RixGPW51bGwseWU9bnVsbCk6ImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIHllJiYoQ2U9eWUseWU9bnVsbCksbnVsbCE9RiYmdGhpcy53cml0ZShGLHllKSxEZS5jb3JrZWQmJihEZS5jb3JrZWQ9MSx0aGlzLnVuY29yaygpKSxEZS5lbmRpbmd8fCh0aGlzLCRlPUNlLChRZT1EZSkuZW5kaW5nPSEwLFModGhpcyxRZSksJGUmJihRZS5maW5p''@;'; put 'put ''c2hlZD9hZS5uZXh0VGljaygkZSk6dGhpcy5vbmNlKCJmaW5pc2giLCRlKSksUWUuZW5kZWQ9ITAsdGhpcy53cml0YWJsZT0hMSksdGhpc30sT2JqZWN0LmRlZmluZVByb3BlcnR5KGVlLnByb3RvdHlwZSwid3JpdGFibGVMZW5ndGgiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmxlbmd0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZWUucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0''@;'; put 'put ''YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKEYpe3RoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD1GKX19KSxlZS5wcm90b3R5cGUuZGVzdHJveT1zZS5kZXN0cm95LGVlLnByb3RvdHlwZS5fdW5kZXN0cm95PXNlLnVuZGVzdHJveSxlZS5wcm90''@;'; put 'put ''b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oRix5ZSl7eWUoRil9fSw1ODUwOihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlLGFlPWooNDE1NSk7ZnVuY3Rpb24gWShJZSxUZSxNZSl7cmV0dXJuIFRlIGluIEllP09iamVjdC5kZWZpbmVQcm9wZXJ0eShJZSxUZSx7dmFsdWU6TWUsZW51bWVy''@;'; put 'put ''YWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpJZVtUZV09TWUsSWV9dmFyIFc9aig4NjEwKSxOPVN5bWJvbCgibGFzdFJlc29sdmUiKSx0ZT1TeW1ib2woImxhc3RSZWplY3QiKSxLPVN5bWJvbCgiZXJyb3IiKSxKPVN5bWJvbCgiZW5kZWQiKSxzZT1TeW1ib2woImxhc3RQ''@;'; put 'put ''cm9taXNlIiksb2U9U3ltYm9sKCJoYW5kbGVQcm9taXNlIiksY2U9U3ltYm9sKCJzdHJlYW0iKTtmdW5jdGlvbiBkZShJZSxUZSl7cmV0dXJue3ZhbHVlOkllLGRvbmU6VGV9fWZ1bmN0aW9uIHZlKEllKXt2YXIgVGU9SWVbTl07aWYobnVsbCE9PVRlKXt2YXIgTWU9SWVbY2VdLnJlYWQoKTtu''@;'; put 'put ''dWxsIT09TWUmJihJZVtzZV09bnVsbCxJZVtOXT1udWxsLEllW3RlXT1udWxsLFRlKGRlKE1lLCExKSkpfX1mdW5jdGlvbiBBZShJZSl7YWUubmV4dFRpY2sodmUsSWUpfXZhciBrZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZnVuY3Rpb24oKXt9KSxTZT1PYmplY3Quc2V0UHJvdG90eXBlT2Yo''@;'; put 'put ''KFkocmU9e2dldCBzdHJlYW0oKXtyZXR1cm4gdGhpc1tjZV19LG5leHQ6ZnVuY3Rpb24oKXt2YXIgSWU9dGhpcyxUZT10aGlzW0tdO2lmKG51bGwhPT1UZSlyZXR1cm4gUHJvbWlzZS5yZWplY3QoVGUpO2lmKHRoaXNbSl0pcmV0dXJuIFByb21pc2UucmVzb2x2ZShkZSh2b2lkIDAsITApKTtp''@;'; put 'put ''Zih0aGlzW2NlXS5kZXN0cm95ZWQpcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHosZWUpe2FlLm5leHRUaWNrKGZ1bmN0aW9uKCl7SWVbS10/ZWUoSWVbS10pOnooZGUodm9pZCAwLCEwKSl9KX0pO3ZhciBNZSx6LGVlLGhlPXRoaXNbc2VdO2lmKGhlKU1lPW5ldyBQcm9taXNlKCh6PWhl''@;'; put 'put ''LGVlPXRoaXMsZnVuY3Rpb24obmUseCl7ei50aGVuKGZ1bmN0aW9uKCl7ZWVbSl0/bmUoZGUodm9pZCAwLCEwKSk6ZWVbb2VdKG5lLHgpfSx4KX0pKTtlbHNle3ZhciBPPXRoaXNbY2VdLnJlYWQoKTtpZihudWxsIT09TylyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGRlKE8sITEpKTtNZT1uZXcg''@;'; put 'put ''UHJvbWlzZSh0aGlzW29lXSl9cmV0dXJuIHRoaXNbc2VdPU1lLE1lfX0sU3ltYm9sLmFzeW5jSXRlcmF0b3IsZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLFkocmUsInJldHVybiIsZnVuY3Rpb24oKXt2YXIgSWU9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oVGUsTWUpe0llW2Nl''@;'; put 'put ''XS5kZXN0cm95KG51bGwsZnVuY3Rpb24oaGUpe2hlP01lKGhlKTpUZShkZSh2b2lkIDAsITApKX0pfSl9KSxyZSksa2UpO1UuZXhwb3J0cz1mdW5jdGlvbihJZSl7dmFyIFRlLE1lPU9iamVjdC5jcmVhdGUoU2UsKFkoVGU9e30sY2Use3ZhbHVlOkllLHdyaXRhYmxlOiEwfSksWShUZSxOLHt2''@;'; put 'put ''YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSksWShUZSx0ZSx7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0pLFkoVGUsSyx7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0pLFkoVGUsSix7dmFsdWU6SWUuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCx3cml0YWJsZTohMH0pLFkoVGUsb2Use3ZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKGhlLE8pe3ZhciB6PU1lW2NlXS5yZWFkKCk7ej8oTWVbc2VdPW51bGwsTWVbTl09bnVsbCxNZVt0ZV09bnVsbCxoZShkZSh6LCExKSkpOihNZVtOXT1oZSxNZVt0ZV09Tyl9LHdyaXRhYmxlOiEwfSksVGUpKTtyZXR1cm4gTWVbc2VdPW51bGwsVyhJZSxmdW5jdGlvbihoZSl7aWYo''@;'; put 'put ''aGUmJiJFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRSIhPT1oZS5jb2RlKXt2YXIgTz1NZVt0ZV07cmV0dXJuIG51bGwhPT1PJiYoTWVbc2VdPW51bGwsTWVbTl09bnVsbCxNZVt0ZV09bnVsbCxPKGhlKSksdm9pZChNZVtLXT1oZSl9dmFyIHo9TWVbTl07bnVsbCE9PXomJihNZVtzZV09bnVs''@;'; put 'put ''bCxNZVtOXT1udWxsLE1lW3RlXT1udWxsLHooZGUodm9pZCAwLCEwKSkpLE1lW0pdPSEwfSksSWUub24oInJlYWRhYmxlIixBZS5iaW5kKG51bGwsTWUpKSxNZX19LDczMjc6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByZShLLEope3ZhciBzZT1PYmplY3Qua2V5cyhLKTtpZihP''@;'; put 'put ''YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgb2U9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhLKTtKJiYob2U9b2UuZmlsdGVyKGZ1bmN0aW9uKGNlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihLLGNlKS5lbnVtZXJhYmxlfSkpLHNlLnB1c2gu''@;'; put 'put ''YXBwbHkoc2Usb2UpfXJldHVybiBzZX1mdW5jdGlvbiBhZShLLEosc2Upe3JldHVybiBKIGluIEs/T2JqZWN0LmRlZmluZVByb3BlcnR5KEssSix7dmFsdWU6c2UsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpLW0pdPXNlLEt9ZnVuY3Rpb24gWShLLEope2Zv''@;'; put 'put ''cih2YXIgc2U9MDtzZTxKLmxlbmd0aDtzZSsrKXt2YXIgb2U9SltzZV07b2UuZW51bWVyYWJsZT1vZS5lbnVtZXJhYmxlfHwhMSxvZS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG9lJiYob2Uud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShLLG9lLmtleSxvZSl9fXZhciBX''@;'; put 'put ''PWooODc2NCkuQnVmZmVyLE49aigyMzYxKS5pbnNwZWN0LHRlPU4mJk4uY3VzdG9tfHwiaW5zcGVjdCI7VS5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gSygpeyhmdW5jdGlvbihjZSxkZSl7aWYoIShjZSBpbnN0YW5jZW9mIGRlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2Fs''@;'; put 'put ''bCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsSyksdGhpcy5oZWFkPW51bGwsdGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGg9MH12YXIgSixzZTtyZXR1cm4gSj1LLHNlPVt7a2V5OiJwdXNoIix2YWx1ZTpmdW5jdGlvbihjZSl7dmFyIGRlPXtkYXRhOmNlLG5leHQ6bnVsbH07dGhp''@;'; put 'put ''cy5sZW5ndGg+MD90aGlzLnRhaWwubmV4dD1kZTp0aGlzLmhlYWQ9ZGUsdGhpcy50YWlsPWRlLCsrdGhpcy5sZW5ndGh9fSx7a2V5OiJ1bnNoaWZ0Iix2YWx1ZTpmdW5jdGlvbihjZSl7dmFyIGRlPXtkYXRhOmNlLG5leHQ6dGhpcy5oZWFkfTswPT09dGhpcy5sZW5ndGgmJih0aGlzLnRhaWw9''@;'; put 'put ''ZGUpLHRoaXMuaGVhZD1kZSwrK3RoaXMubGVuZ3RofX0se2tleToic2hpZnQiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoMCE9PXRoaXMubGVuZ3RoKXt2YXIgY2U9dGhpcy5oZWFkLmRhdGE7cmV0dXJuIHRoaXMuaGVhZD0xPT09dGhpcy5sZW5ndGg/dGhpcy50YWlsPW51bGw6dGhpcy5oZWFkLm5l''@;'; put 'put ''eHQsLS10aGlzLmxlbmd0aCxjZX19fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhlYWQ9dGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGg9MH19LHtrZXk6ImpvaW4iLHZhbHVlOmZ1bmN0aW9uKGNlKXtpZigwPT09dGhpcy5sZW5ndGgpcmV0dXJuIiI7Zm9yKHZhciBkZT10''@;'; put 'put ''aGlzLmhlYWQsdmU9IiIrZGUuZGF0YTtkZT1kZS5uZXh0Oyl2ZSs9Y2UrZGUuZGF0YTtyZXR1cm4gdmV9fSx7a2V5OiJjb25jYXQiLHZhbHVlOmZ1bmN0aW9uKGNlKXtpZigwPT09dGhpcy5sZW5ndGgpcmV0dXJuIFcuYWxsb2MoMCk7Zm9yKHZhciBrZT1XLmFsbG9jVW5zYWZlKGNlPj4+MCks''@;'; put 'put ''U2U9dGhpcy5oZWFkLEllPTA7U2U7KVcucHJvdG90eXBlLmNvcHkuY2FsbChTZS5kYXRhLGtlLEllKSxJZSs9U2UuZGF0YS5sZW5ndGgsU2U9U2UubmV4dDtyZXR1cm4ga2V9fSx7a2V5OiJjb25zdW1lIix2YWx1ZTpmdW5jdGlvbihjZSxkZSl7dmFyIHZlO3JldHVybiBjZTx0aGlzLmhlYWQu''@;'; put 'put ''ZGF0YS5sZW5ndGg/KHZlPXRoaXMuaGVhZC5kYXRhLnNsaWNlKDAsY2UpLHRoaXMuaGVhZC5kYXRhPXRoaXMuaGVhZC5kYXRhLnNsaWNlKGNlKSk6dmU9Y2U9PT10aGlzLmhlYWQuZGF0YS5sZW5ndGg/dGhpcy5zaGlmdCgpOmRlP3RoaXMuX2dldFN0cmluZyhjZSk6dGhpcy5fZ2V0QnVmZmVy''@;'; put 'put ''KGNlKSx2ZX19LHtrZXk6ImZpcnN0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlYWQuZGF0YX19LHtrZXk6Il9nZXRTdHJpbmciLHZhbHVlOmZ1bmN0aW9uKGNlKXt2YXIgZGU9dGhpcy5oZWFkLHZlPTEsQWU9ZGUuZGF0YTtmb3IoY2UtPUFlLmxlbmd0aDtkZT1kZS5uZXh0Oyl7''@;'; put 'put ''dmFyIGtlPWRlLmRhdGEsU2U9Y2U+a2UubGVuZ3RoP2tlLmxlbmd0aDpjZTtpZihBZSs9U2U9PT1rZS5sZW5ndGg/a2U6a2Uuc2xpY2UoMCxjZSksMD09KGNlLT1TZSkpe1NlPT09a2UubGVuZ3RoPygrK3ZlLHRoaXMuaGVhZD1kZS5uZXh0P2RlLm5leHQ6dGhpcy50YWlsPW51bGwpOih0aGlz''@;'; put 'put ''LmhlYWQ9ZGUsZGUuZGF0YT1rZS5zbGljZShTZSkpO2JyZWFrfSsrdmV9cmV0dXJuIHRoaXMubGVuZ3RoLT12ZSxBZX19LHtrZXk6Il9nZXRCdWZmZXIiLHZhbHVlOmZ1bmN0aW9uKGNlKXt2YXIgZGU9Vy5hbGxvY1Vuc2FmZShjZSksdmU9dGhpcy5oZWFkLEFlPTE7Zm9yKHZlLmRhdGEuY29w''@;'; put 'put ''eShkZSksY2UtPXZlLmRhdGEubGVuZ3RoO3ZlPXZlLm5leHQ7KXt2YXIga2U9dmUuZGF0YSxTZT1jZT5rZS5sZW5ndGg/a2UubGVuZ3RoOmNlO2lmKGtlLmNvcHkoZGUsZGUubGVuZ3RoLWNlLDAsU2UpLDA9PShjZS09U2UpKXtTZT09PWtlLmxlbmd0aD8oKytBZSx0aGlzLmhlYWQ9dmUubmV4''@;'; put 'put ''dD92ZS5uZXh0OnRoaXMudGFpbD1udWxsKToodGhpcy5oZWFkPXZlLHZlLmRhdGE9a2Uuc2xpY2UoU2UpKTticmVha30rK0FlfXJldHVybiB0aGlzLmxlbmd0aC09QWUsZGV9fSx7a2V5OnRlLHZhbHVlOmZ1bmN0aW9uKGNlLGRlKXtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKHZlKXtmb3IodmFy''@;'; put 'put ''IEFlPTE7QWU8YXJndW1lbnRzLmxlbmd0aDtBZSsrKXt2YXIga2U9bnVsbCE9YXJndW1lbnRzW0FlXT9hcmd1bWVudHNbQWVdOnt9O0FlJTI/cmUoT2JqZWN0KGtlKSwhMCkuZm9yRWFjaChmdW5jdGlvbihTZSl7YWUodmUsU2Usa2VbU2VdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny''@;'; put 'put ''aXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHZlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGtlKSk6cmUoT2JqZWN0KGtlKSkuZm9yRWFjaChmdW5jdGlvbihTZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHZlLFNlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0''@;'; put 'put ''b3Ioa2UsU2UpKX0pfXJldHVybiB2ZX0oe30sZGUse2RlcHRoOjAsY3VzdG9tSW5zcGVjdDohMX0pKX19XSxzZSYmWShKLnByb3RvdHlwZSxzZSksS30oKX0sMTE5NTooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDQxNTUpO2Z1bmN0aW9uIGFlKE4sdGUpe1coTix0ZSksWShOKX1m''@;'; put 'put ''dW5jdGlvbiBZKE4pe04uX3dyaXRhYmxlU3RhdGUmJiFOLl93cml0YWJsZVN0YXRlLmVtaXRDbG9zZXx8Ti5fcmVhZGFibGVTdGF0ZSYmIU4uX3JlYWRhYmxlU3RhdGUuZW1pdENsb3NlfHxOLmVtaXQoImNsb3NlIil9ZnVuY3Rpb24gVyhOLHRlKXtOLmVtaXQoImVycm9yIix0ZSl9VS5leHBv''@;'; put 'put ''cnRzPXtkZXN0cm95OmZ1bmN0aW9uKE4sdGUpe3ZhciBLPXRoaXM7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkfHx0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD8odGU/dGUoTik6TiYmKHRo''@;'; put 'put ''aXMuX3dyaXRhYmxlU3RhdGU/dGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWR8fCh0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxyZS5uZXh0VGljayhXLHRoaXMsTikpOnJlLm5leHRUaWNrKFcsdGhpcyxOKSksdGhpcyk6KHRoaXMuX3JlYWRhYmxlU3RhdGUmJih0''@;'; put 'put ''aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD0hMCksdGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPSEwKSx0aGlzLl9kZXN0cm95KE58fG51bGwsZnVuY3Rpb24ob2UpeyF0ZSYmb2U/Sy5fd3JpdGFibGVTdGF0ZT9LLl93cml0YWJsZVN0YXRl''@;'; put 'put ''LmVycm9yRW1pdHRlZD9yZS5uZXh0VGljayhZLEspOihLLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxyZS5uZXh0VGljayhhZSxLLG9lKSk6cmUubmV4dFRpY2soYWUsSyxvZSk6dGU/KHJlLm5leHRUaWNrKFksSyksdGUob2UpKTpyZS5uZXh0VGljayhZLEspfSksdGhpcyl9LHVu''@;'; put 'put ''ZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmc9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRlZD0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQ9''@;'; put 'put ''ITEpLHRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluYWxDYWxsZWQ9ITEsdGhpcy5fd3JpdGFi''@;'; put 'put ''bGVTdGF0ZS5wcmVmaW5pc2hlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSExKX0sZXJyb3JPckRlc3Ryb3k6ZnVuY3Rpb24oTix0ZSl7dmFyIEs9Ti5fcmVhZGFibGVTdGF0ZSxKPU4uX3dyaXRhYmxlU3RhdGU7''@;'; put 'put ''SyYmSy5hdXRvRGVzdHJveXx8SiYmSi5hdXRvRGVzdHJveT9OLmRlc3Ryb3kodGUpOk4uZW1pdCgiZXJyb3IiLHRlKX19fSw4NjEwOihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNDI4MSkucS5FUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRTtmdW5jdGlvbiBhZSgpe31VLmV4cG9y''@;'; put 'put ''dHM9ZnVuY3Rpb24gWShXLE4sdGUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBOKXJldHVybiBZKFcsbnVsbCxOKTt2YXIgSWUsVGU7Tnx8KE49e30pLEllPXRlfHxhZSxUZT0hMSx0ZT1mdW5jdGlvbigpe2lmKCFUZSl7VGU9ITA7Zm9yKHZhciBNZT1hcmd1bWVudHMubGVuZ3RoLGhlPW5ldyBB''@;'; put 'put ''cnJheShNZSksTz0wO088TWU7TysrKWhlW09dPWFyZ3VtZW50c1tPXTtJZS5hcHBseSh0aGlzLGhlKX19O3ZhciBLPU4ucmVhZGFibGV8fCExIT09Ti5yZWFkYWJsZSYmVy5yZWFkYWJsZSxKPU4ud3JpdGFibGV8fCExIT09Ti53cml0YWJsZSYmVy53cml0YWJsZSxzZT1mdW5jdGlvbigpe1cu''@;'; put 'put ''d3JpdGFibGV8fGNlKCl9LG9lPVcuX3dyaXRhYmxlU3RhdGUmJlcuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQsY2U9ZnVuY3Rpb24oKXtKPSExLG9lPSEwLEt8fHRlLmNhbGwoVyl9LGRlPVcuX3JlYWRhYmxlU3RhdGUmJlcuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCx2ZT1mdW5jdGlvbigp''@;'; put 'put ''e0s9ITEsZGU9ITAsSnx8dGUuY2FsbChXKX0sQWU9ZnVuY3Rpb24oSWUpe3RlLmNhbGwoVyxJZSl9LGtlPWZ1bmN0aW9uKCl7dmFyIEllO3JldHVybiBLJiYhZGU/KFcuX3JlYWRhYmxlU3RhdGUmJlcuX3JlYWRhYmxlU3RhdGUuZW5kZWR8fChJZT1uZXcgcmUpLHRlLmNhbGwoVyxJZSkpOkom''@;'; put 'put ''JiFvZT8oVy5fd3JpdGFibGVTdGF0ZSYmVy5fd3JpdGFibGVTdGF0ZS5lbmRlZHx8KEllPW5ldyByZSksdGUuY2FsbChXLEllKSk6dm9pZCAwfSxTZT1mdW5jdGlvbigpe1cucmVxLm9uKCJmaW5pc2giLGNlKX07cmV0dXJuIGZ1bmN0aW9uKEllKXtyZXR1cm4gSWUuc2V0SGVhZGVyJiYiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgSWUuYWJvcnR9KFcpPyhXLm9uKCJjb21wbGV0ZSIsY2UpLFcub24oImFib3J0IixrZSksVy5yZXE/U2UoKTpXLm9uKCJyZXF1ZXN0IixTZSkpOkomJiFXLl93cml0YWJsZVN0YXRlJiYoVy5vbigiZW5kIixzZSksVy5vbigiY2xvc2UiLHNlKSksVy5vbigiZW5kIix2''@;'; put 'put ''ZSksVy5vbigiZmluaXNoIixjZSksITEhPT1OLmVycm9yJiZXLm9uKCJlcnJvciIsQWUpLFcub24oImNsb3NlIixrZSksZnVuY3Rpb24oKXtXLnJlbW92ZUxpc3RlbmVyKCJjb21wbGV0ZSIsY2UpLFcucmVtb3ZlTGlzdGVuZXIoImFib3J0IixrZSksVy5yZW1vdmVMaXN0ZW5lcigicmVxdWVz''@;'; put 'put ''dCIsU2UpLFcucmVxJiZXLnJlcS5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixjZSksVy5yZW1vdmVMaXN0ZW5lcigiZW5kIixzZSksVy5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLHNlKSxXLnJlbW92ZUxpc3RlbmVyKCJmaW5pc2giLGNlKSxXLnJlbW92ZUxpc3RlbmVyKCJlbmQiLHZlKSxXLnJl''@;'; put 'put ''bW92ZUxpc3RlbmVyKCJlcnJvciIsQWUpLFcucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixrZSl9fX0sNTE2NzpVPT57VS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJSZWFkYWJsZS5mcm9tIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJyb3dzZXIiKX19LDk5NDY6KFUsUSxq''@;'; put 'put ''KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmUsYWU9aig0MjgxKS5xLFk9YWUuRVJSX01JU1NJTkdfQVJHUyxXPWFlLkVSUl9TVFJFQU1fREVTVFJPWUVEO2Z1bmN0aW9uIE4ob2Upe2lmKG9lKXRocm93IG9lfWZ1bmN0aW9uIHRlKG9lLGNlLGRlLHZlKXt2YXIgU2UsSWU7U2U9dmUsSWU9ITEsdmU9''@;'; put 'put ''ZnVuY3Rpb24oKXtJZXx8KEllPSEwLFNlLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpKX07dmFyIEFlPSExO29lLm9uKCJjbG9zZSIsZnVuY3Rpb24oKXtBZT0hMH0pLHZvaWQgMD09PXJlJiYocmU9aig4NjEwKSkscmUob2Use3JlYWRhYmxlOmNlLHdyaXRhYmxlOmRlfSxmdW5jdGlvbihTZSl7''@;'; put 'put ''aWYoU2UpcmV0dXJuIHZlKFNlKTtBZT0hMCx2ZSgpfSk7dmFyIGtlPSExO3JldHVybiBmdW5jdGlvbihTZSl7aWYoIUFlJiYha2UpcmV0dXJuIGtlPSEwLGZ1bmN0aW9uKEllKXtyZXR1cm4gSWUuc2V0SGVhZGVyJiYiZnVuY3Rpb24iPT10eXBlb2YgSWUuYWJvcnR9KG9lKT9vZS5hYm9ydCgp''@;'; put 'put ''OiJmdW5jdGlvbiI9PXR5cGVvZiBvZS5kZXN0cm95P29lLmRlc3Ryb3koKTp2b2lkIHZlKFNlfHxuZXcgVygicGlwZSIpKX19ZnVuY3Rpb24gSyhvZSl7b2UoKX1mdW5jdGlvbiBKKG9lLGNlKXtyZXR1cm4gb2UucGlwZShjZSl9ZnVuY3Rpb24gc2Uob2Upe3JldHVybiBvZS5sZW5ndGg/ImZ1''@;'; put 'put ''bmN0aW9uIiE9dHlwZW9mIG9lW29lLmxlbmd0aC0xXT9OOm9lLnBvcCgpOk59VS5leHBvcnRzPWZ1bmN0aW9uKCl7Zm9yKHZhciBvZT1hcmd1bWVudHMubGVuZ3RoLGNlPW5ldyBBcnJheShvZSksZGU9MDtkZTxvZTtkZSsrKWNlW2RlXT1hcmd1bWVudHNbZGVdO3ZhciB2ZSxBZT1zZShjZSk7''@;'; put 'put ''aWYoQXJyYXkuaXNBcnJheShjZVswXSkmJihjZT1jZVswXSksY2UubGVuZ3RoPDIpdGhyb3cgbmV3IFkoInN0cmVhbXMiKTt2YXIga2U9Y2UubWFwKGZ1bmN0aW9uKFNlLEllKXt2YXIgVGU9SWU8Y2UubGVuZ3RoLTE7cmV0dXJuIHRlKFNlLFRlLEllPjAsZnVuY3Rpb24oTWUpe3ZlfHwodmU9''@;'; put 'put ''TWUpLE1lJiZrZS5mb3JFYWNoKEspLFRlfHwoa2UuZm9yRWFjaChLKSxBZSh2ZSkpfSl9KTtyZXR1cm4gY2UucmVkdWNlKEopfX0sMjQ1NzooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDQyODEpLnEuRVJSX0lOVkFMSURfT1BUX1ZBTFVFO1UuZXhwb3J0cz17Z2V0SGlnaFdhdGVy''@;'; put 'put ''TWFyazpmdW5jdGlvbihhZSxZLFcsTil7dmFyIEssdGU9bnVsbCE9KEs9WSkuaGlnaFdhdGVyTWFyaz9LLmhpZ2hXYXRlck1hcms6Tj9LW1ddOm51bGw7aWYobnVsbCE9dGUpe2lmKCFpc0Zpbml0ZSh0ZSl8fE1hdGguZmxvb3IodGUpIT09dGV8fHRlPDApdGhyb3cgbmV3IHJlKE4/VzoiaGln''@;'; put 'put ''aFdhdGVyTWFyayIsdGUpO3JldHVybiBNYXRoLmZsb29yKHRlKX1yZXR1cm4gYWUub2JqZWN0TW9kZT8xNjoxNjM4NH19fSwyNTAzOihVLFEsaik9PntVLmV4cG9ydHM9aig3MTg3KS5FdmVudEVtaXR0ZXJ9LDg0NzM6KFUsUSxqKT0+eyhRPVUuZXhwb3J0cz1qKDk0ODEpKS5TdHJlYW09USxR''@;'; put 'put ''LlJlYWRhYmxlPVEsUS5Xcml0YWJsZT1qKDQyMjkpLFEuRHVwbGV4PWooNjc1MyksUS5UcmFuc2Zvcm09aig0NjA1KSxRLlBhc3NUaHJvdWdoPWooMjcyNSksUS5maW5pc2hlZD1qKDg2MTApLFEucGlwZWxpbmU9aig5OTQ2KX0sOTg0OihVLFEsaik9Pnt2YXIgcmU9aig0MTU1KTtjb25zdCBh''@;'; put 'put ''ZT1qKDkyODIpLFk9aigyNTIwKSxXPWooNzIxNyk7bGV0IE47dHJ5e049aigyODg0KX1jYXRjaChNZSl7fWNvbnN0IHRlPXtub3NvcnQ6ITAsc2lsZW50OiEwfTtsZXQgSz0wO2NvbnN0IEo9IndpbjMyIj09PXJlLnBsYXRmb3JtLHNlPU1lPT57aWYoWyJ1bmxpbmsiLCJjaG1vZCIsInN0YXQi''@;'; put 'put ''LCJsc3RhdCIsInJtZGlyIiwicmVhZGRpciJdLmZvckVhY2goaGU9PntNZVtoZV09TWVbaGVdfHxXW2hlXSxNZVtoZSs9IlN5bmMiXT1NZVtoZV18fFdbaGVdfSksTWUubWF4QnVzeVRyaWVzPU1lLm1heEJ1c3lUcmllc3x8MyxNZS5lbWZpbGVXYWl0PU1lLmVtZmlsZVdhaXR8fDFlMywhMT09''@;'; put 'put ''PU1lLmdsb2ImJihNZS5kaXNhYmxlR2xvYj0hMCksITAhPT1NZS5kaXNhYmxlR2xvYiYmdm9pZCAwPT09Til0aHJvdyBFcnJvcigiZ2xvYiBkZXBlbmRlbmN5IG5vdCBmb3VuZCwgc2V0IGBvcHRpb25zLmRpc2FibGVHbG9iID0gdHJ1ZWAgaWYgaW50ZW50aW9uYWwiKTtNZS5kaXNhYmxlR2xv''@;'; put 'put ''Yj1NZS5kaXNhYmxlR2xvYnx8ITEsTWUuZ2xvYj1NZS5nbG9ifHx0ZX0sb2U9KE1lLGhlLE8pPT57ImZ1bmN0aW9uIj09dHlwZW9mIGhlJiYoTz1oZSxoZT17fSksYWUoTWUsInJpbXJhZjogbWlzc2luZyBwYXRoIiksYWUuZXF1YWwodHlwZW9mIE1lLCJzdHJpbmciLCJyaW1yYWY6IHBhdGgg''@;'; put 'put ''c2hvdWxkIGJlIGEgc3RyaW5nIiksYWUuZXF1YWwodHlwZW9mIE8sImZ1bmN0aW9uIiwicmltcmFmOiBjYWxsYmFjayBmdW5jdGlvbiByZXF1aXJlZCIpLGFlKGhlLCJyaW1yYWY6IGludmFsaWQgb3B0aW9ucyBhcmd1bWVudCBwcm92aWRlZCIpLGFlLmVxdWFsKHR5cGVvZiBoZSwib2JqZWN0''@;'; put 'put ''IiwicmltcmFmOiBvcHRpb25zIHNob3VsZCBiZSBvYmplY3QiKSxzZShoZSk7bGV0IHo9MCxlZT1udWxsLG5lPTA7Y29uc3QgeD0oUCxWKT0+UD9PKFApOihuZT1WLmxlbmd0aCwwPT09bmU/TygpOnZvaWQgVi5mb3JFYWNoKFQ9Pntjb25zdCBTPUY9PntpZihGKXtpZigoIkVCVVNZIj09PUYu''@;'; put 'put ''Y29kZXx8IkVOT1RFTVBUWSI9PT1GLmNvZGV8fCJFUEVSTSI9PT1GLmNvZGUpJiZ6PGhlLm1heEJ1c3lUcmllcylyZXR1cm4geisrLHNldFRpbWVvdXQoKCk9PmNlKFQsaGUsUyksMTAwKnopO2lmKCJFTUZJTEUiPT09Ri5jb2RlJiZLPGhlLmVtZmlsZVdhaXQpcmV0dXJuIHNldFRpbWVvdXQo''@;'; put 'put ''KCk9PmNlKFQsaGUsUyksSysrKTsiRU5PRU5UIj09PUYuY29kZSYmKEY9bnVsbCl9Sz0wLGVlPWVlfHxGLDA9PS0tbmUmJk8oZWUpfTtjZShULGhlLFMpfSkpO2lmKGhlLmRpc2FibGVHbG9ifHwhTi5oYXNNYWdpYyhNZSkpcmV0dXJuIHgobnVsbCxbTWVdKTtoZS5sc3RhdChNZSwoUCxWKT0+''@;'; put 'put ''e2lmKCFQKXJldHVybiB4KG51bGwsW01lXSk7TihNZSxoZS5nbG9iLHgpfSl9LGNlPShNZSxoZSxPKT0+e2FlKE1lKSxhZShoZSksYWUoImZ1bmN0aW9uIj09dHlwZW9mIE8pLGhlLmxzdGF0KE1lLCh6LGVlKT0+eiYmIkVOT0VOVCI9PT16LmNvZGU/TyhudWxsKTooeiYmIkVQRVJNIj09PXou''@;'; put 'put ''Y29kZSYmSiYmZGUoTWUsaGUseixPKSxlZSYmZWUuaXNEaXJlY3RvcnkoKT9BZShNZSxoZSx6LE8pOnZvaWQgaGUudW5saW5rKE1lLG5lPT57aWYobmUpe2lmKCJFTk9FTlQiPT09bmUuY29kZSlyZXR1cm4gTyhudWxsKTtpZigiRVBFUk0iPT09bmUuY29kZSlyZXR1cm4gSj9kZShNZSxoZSxu''@;'; put 'put ''ZSxPKTpBZShNZSxoZSxuZSxPKTtpZigiRUlTRElSIj09PW5lLmNvZGUpcmV0dXJuIEFlKE1lLGhlLG5lLE8pfXJldHVybiBPKG5lKX0pKSl9LGRlPShNZSxoZSxPLHopPT57YWUoTWUpLGFlKGhlKSxhZSgiZnVuY3Rpb24iPT10eXBlb2YgeiksaGUuY2htb2QoTWUsNDM4LGVlPT57ZWU/eigi''@;'; put 'put ''RU5PRU5UIj09PWVlLmNvZGU/bnVsbDpPKTpoZS5zdGF0KE1lLChuZSx4KT0+e25lP3ooIkVOT0VOVCI9PT1uZS5jb2RlP251bGw6Tyk6eC5pc0RpcmVjdG9yeSgpP0FlKE1lLGhlLE8seik6aGUudW5saW5rKE1lLHopfSl9KX0sdmU9KE1lLGhlLE8pPT57YWUoTWUpLGFlKGhlKTt0cnl7aGUu''@;'; put 'put ''Y2htb2RTeW5jKE1lLDQzOCl9Y2F0Y2goZWUpe2lmKCJFTk9FTlQiPT09ZWUuY29kZSlyZXR1cm47dGhyb3cgT31sZXQgejt0cnl7ej1oZS5zdGF0U3luYyhNZSl9Y2F0Y2goZWUpe2lmKCJFTk9FTlQiPT09ZWUuY29kZSlyZXR1cm47dGhyb3cgT316LmlzRGlyZWN0b3J5KCk/SWUoTWUsaGUs''@;'; put 'put ''Tyk6aGUudW5saW5rU3luYyhNZSl9LEFlPShNZSxoZSxPLHopPT57YWUoTWUpLGFlKGhlKSxhZSgiZnVuY3Rpb24iPT10eXBlb2YgeiksaGUucm1kaXIoTWUsZWU9PnshZWV8fCJFTk9URU1QVFkiIT09ZWUuY29kZSYmIkVFWElTVCIhPT1lZS5jb2RlJiYiRVBFUk0iIT09ZWUuY29kZT96KGVl''@;'; put 'put ''JiYiRU5PVERJUiI9PT1lZS5jb2RlP086ZWUpOmtlKE1lLGhlLHopfSl9LGtlPShNZSxoZSxPKT0+e2FlKE1lKSxhZShoZSksYWUoImZ1bmN0aW9uIj09dHlwZW9mIE8pLGhlLnJlYWRkaXIoTWUsKHosZWUpPT57aWYoeilyZXR1cm4gTyh6KTtsZXQgbmUseD1lZS5sZW5ndGg7aWYoMD09PXgp''@;'; put 'put ''cmV0dXJuIGhlLnJtZGlyKE1lLE8pO2VlLmZvckVhY2goUD0+e29lKFkuam9pbihNZSxQKSxoZSxWPT57aWYoIW5lKXJldHVybiBWP08obmU9Vik6dm9pZCgwPT0tLXgmJmhlLnJtZGlyKE1lLE8pKX0pfSl9KX0sU2U9KE1lLGhlKT0+e2xldCBPO2lmKHNlKGhlPWhlfHx7fSksYWUoTWUsInJp''@;'; put 'put ''bXJhZjogbWlzc2luZyBwYXRoIiksYWUuZXF1YWwodHlwZW9mIE1lLCJzdHJpbmciLCJyaW1yYWY6IHBhdGggc2hvdWxkIGJlIGEgc3RyaW5nIiksYWUoaGUsInJpbXJhZjogbWlzc2luZyBvcHRpb25zIiksYWUuZXF1YWwodHlwZW9mIGhlLCJvYmplY3QiLCJyaW1yYWY6IG9wdGlvbnMgc2hv''@;'; put 'put ''dWxkIGJlIG9iamVjdCIpLGhlLmRpc2FibGVHbG9ifHwhTi5oYXNNYWdpYyhNZSkpTz1bTWVdO2Vsc2UgdHJ5e2hlLmxzdGF0U3luYyhNZSksTz1bTWVdfWNhdGNoKHope089Ti5zeW5jKE1lLGhlLmdsb2IpfWlmKE8ubGVuZ3RoKWZvcihsZXQgej0wO3o8Ty5sZW5ndGg7eisrKXtjb25zdCBl''@;'; put 'put ''ZT1PW3pdO2xldCBuZTt0cnl7bmU9aGUubHN0YXRTeW5jKGVlKX1jYXRjaCh4KXtpZigiRU5PRU5UIj09PXguY29kZSlyZXR1cm47IkVQRVJNIj09PXguY29kZSYmSiYmdmUoZWUsaGUseCl9dHJ5e25lJiZuZS5pc0RpcmVjdG9yeSgpP0llKGVlLGhlLG51bGwpOmhlLnVubGlua1N5bmMoZWUp''@;'; put 'put ''fWNhdGNoKHgpe2lmKCJFTk9FTlQiPT09eC5jb2RlKXJldHVybjtpZigiRVBFUk0iPT09eC5jb2RlKXJldHVybiBKP3ZlKGVlLGhlLHgpOkllKGVlLGhlLHgpO2lmKCJFSVNESVIiIT09eC5jb2RlKXRocm93IHg7SWUoZWUsaGUseCl9fX0sSWU9KE1lLGhlLE8pPT57YWUoTWUpLGFlKGhlKTt0''@;'; put 'put ''cnl7aGUucm1kaXJTeW5jKE1lKX1jYXRjaCh6KXtpZigiRU5PRU5UIj09PXouY29kZSlyZXR1cm47aWYoIkVOT1RESVIiPT09ei5jb2RlKXRocm93IE87IkVOT1RFTVBUWSIhPT16LmNvZGUmJiJFRVhJU1QiIT09ei5jb2RlJiYiRVBFUk0iIT09ei5jb2RlfHxUZShNZSxoZSl9fSxUZT0oTWUs''@;'; put 'put ''aGUpPT57YWUoTWUpLGFlKGhlKSxoZS5yZWFkZGlyU3luYyhNZSkuZm9yRWFjaChlZT0+U2UoWS5qb2luKE1lLGVlKSxoZSkpO2NvbnN0IE89Sj8xMDA6MTtsZXQgej0wO2Zvcig7Oyl7bGV0IGVlPSEwO3RyeXtjb25zdCBuZT1oZS5ybWRpclN5bmMoTWUsaGUpO3JldHVybiBlZT0hMSxuZX1m''@;'; put 'put ''aW5hbGx5e2lmKCsrejxPJiZlZSljb250aW51ZX19fTtVLmV4cG9ydHM9b2Usb2Uuc3luYz1TZX0sOTc4NTooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDg3NjQpLkJ1ZmZlcixhZT1qKDU3MTcpLFk9aigzMzQ5KSxXPW5ldyBBcnJheSgxNiksTj1bMCwxLDIsMyw0LDUsNiw3LDgs''@;'; put 'put ''OSwxMCwxMSwxMiwxMywxNCwxNSw3LDQsMTMsMSwxMCw2LDE1LDMsMTIsMCw5LDUsMiwxNCwxMSw4LDMsMTAsMTQsNCw5LDE1LDgsMSwyLDcsMCw2LDEzLDExLDUsMTIsMSw5LDExLDEwLDAsOCwxMiw0LDEzLDMsNywxNSwxNCw1LDYsMiw0LDAsNSw5LDcsMTIsMiwxMCwxNCwxLDMsOCwxMSw2''@;'; put 'put ''LDE1LDEzXSx0ZT1bNSwxNCw3LDAsOSwyLDExLDQsMTMsNiwxNSw4LDEsMTAsMywxMiw2LDExLDMsNywwLDEzLDUsMTAsMTQsMTUsOCwxMiw0LDksMSwyLDE1LDUsMSwzLDcsMTQsNiw5LDExLDgsMTIsMiwxMCwwLDQsMTMsOCw2LDQsMSwzLDExLDE1LDAsNSwxMiwyLDEzLDksNywxMCwxNCwx''@;'; put 'put ''MiwxNSwxMCw0LDEsNSw4LDcsNiwyLDEzLDE0LDAsMyw5LDExXSxLPVsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwx''@;'; put 'put ''MiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XSxKPVs4LDksOSwxMSwxMywxNSwxNSw1LDcsNyw4LDExLDE0LDE0LDEyLDYsOSwxMywxNSw3LDEyLDgsOSwxMSw3LDcsMTIsNyw2LDE1LDEzLDExLDksNywx''@;'; put 'put ''NSwxMSw4LDYsNiwxNCwxMiwxMyw1LDE0LDEzLDEzLDcsNSwxNSw1LDgsMTEsMTQsMTQsNiwxNCw2LDksMTIsOSwxMiw1LDE1LDgsOCw1LDEyLDksMTIsNSwxNCw2LDgsMTMsNiw1LDE1LDEzLDExLDExXSxzZT1bMCwxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsMjQwMDk1OTcwOCwyODQwODUzODM4''@;'; put 'put ''XSxvZT1bMTM1MjgyOTkyNiwxNTQ4NjAzNjg0LDE4MzYwNzI2OTEsMjA1Mzk5NDIxNywwXTtmdW5jdGlvbiBjZSgpe1kuY2FsbCh0aGlzLDY0KSx0aGlzLl9hPTE3MzI1ODQxOTMsdGhpcy5fYj00MDIzMjMzNDE3LHRoaXMuX2M9MjU2MjM4MzEwMix0aGlzLl9kPTI3MTczMzg3OCx0aGlzLl9l''@;'; put 'put ''PTMyODUzNzc1MjB9ZnVuY3Rpb24gZGUoVGUsTWUpe3JldHVybiBUZTw8TWV8VGU+Pj4zMi1NZX1mdW5jdGlvbiB2ZShUZSxNZSxoZSxPLHosZWUsbmUseCl7cmV0dXJuIGRlKFRlKyhNZV5oZV5PKStlZStuZXwwLHgpK3p8MH1mdW5jdGlvbiBBZShUZSxNZSxoZSxPLHosZWUsbmUseCl7cmV0''@;'; put 'put ''dXJuIGRlKFRlKyhNZSZoZXx+TWUmTykrZWUrbmV8MCx4KSt6fDB9ZnVuY3Rpb24ga2UoVGUsTWUsaGUsTyx6LGVlLG5lLHgpe3JldHVybiBkZShUZSsoKE1lfH5oZSleTykrZWUrbmV8MCx4KSt6fDB9ZnVuY3Rpb24gU2UoVGUsTWUsaGUsTyx6LGVlLG5lLHgpe3JldHVybiBkZShUZSsoTWUm''@;'; put 'put ''T3xoZSZ+TykrZWUrbmV8MCx4KSt6fDB9ZnVuY3Rpb24gSWUoVGUsTWUsaGUsTyx6LGVlLG5lLHgpe3JldHVybiBkZShUZSsoTWVeKGhlfH5PKSkrZWUrbmV8MCx4KSt6fDB9YWUoY2UsWSksY2UucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXtmb3IodmFyIFRlPVcsTWU9MDtNZTwxNjsr''@;'; put 'put ''K01lKVRlW01lXT10aGlzLl9ibG9jay5yZWFkSW50MzJMRSg0Kk1lKTtmb3IodmFyIGhlPTB8dGhpcy5fYSxPPTB8dGhpcy5fYix6PTB8dGhpcy5fYyxlZT0wfHRoaXMuX2QsbmU9MHx0aGlzLl9lLHg9MHx0aGlzLl9hLFA9MHx0aGlzLl9iLFY9MHx0aGlzLl9jLFQ9MHx0aGlzLl9kLFM9MHx0''@;'; put 'put ''aGlzLl9lLEY9MDtGPDgwO0YrPTEpe3ZhciB5ZSxDZTtGPDE2Pyh5ZT12ZShoZSxPLHosZWUsbmUsVGVbTltGXV0sc2VbMF0sS1tGXSksQ2U9SWUoeCxQLFYsVCxTLFRlW3RlW0ZdXSxvZVswXSxKW0ZdKSk6RjwzMj8oeWU9QWUoaGUsTyx6LGVlLG5lLFRlW05bRl1dLHNlWzFdLEtbRl0pLENl''@;'; put 'put ''PVNlKHgsUCxWLFQsUyxUZVt0ZVtGXV0sb2VbMV0sSltGXSkpOkY8NDg/KHllPWtlKGhlLE8seixlZSxuZSxUZVtOW0ZdXSxzZVsyXSxLW0ZdKSxDZT1rZSh4LFAsVixULFMsVGVbdGVbRl1dLG9lWzJdLEpbRl0pKTpGPDY0Pyh5ZT1TZShoZSxPLHosZWUsbmUsVGVbTltGXV0sc2VbM10sS1tG''@;'; put 'put ''XSksQ2U9QWUoeCxQLFYsVCxTLFRlW3RlW0ZdXSxvZVszXSxKW0ZdKSk6KHllPUllKGhlLE8seixlZSxuZSxUZVtOW0ZdXSxzZVs0XSxLW0ZdKSxDZT12ZSh4LFAsVixULFMsVGVbdGVbRl1dLG9lWzRdLEpbRl0pKSxoZT1uZSxuZT1lZSxlZT1kZSh6LDEwKSx6PU8sTz15ZSx4PVMsUz1ULFQ9''@;'; put 'put ''ZGUoViwxMCksVj1QLFA9Q2V9dmFyIERlPXRoaXMuX2IreitUfDA7dGhpcy5fYj10aGlzLl9jK2VlK1N8MCx0aGlzLl9jPXRoaXMuX2QrbmUreHwwLHRoaXMuX2Q9dGhpcy5fZStoZStQfDAsdGhpcy5fZT10aGlzLl9hK08rVnwwLHRoaXMuX2E9RGV9LGNlLnByb3RvdHlwZS5fZGlnZXN0PWZ1''@;'; put 'put ''bmN0aW9uKCl7dGhpcy5fYmxvY2tbdGhpcy5fYmxvY2tPZmZzZXQrK109MTI4LHRoaXMuX2Jsb2NrT2Zmc2V0PjU2JiYodGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDY0KSx0aGlzLl91cGRhdGUoKSx0aGlzLl9ibG9ja09mZnNldD0wKSx0aGlzLl9ibG9jay5maWxsKDAs''@;'; put 'put ''dGhpcy5fYmxvY2tPZmZzZXQsNTYpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5fbGVuZ3RoWzBdLDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFsxXSw2MCksdGhpcy5fdXBkYXRlKCk7dmFyIFRlPXJlLmFsbG9jP3JlLmFsbG9jKDIwKTpuZXcgcmUo''@;'; put 'put ''MjApO3JldHVybiBUZS53cml0ZUludDMyTEUodGhpcy5fYSwwKSxUZS53cml0ZUludDMyTEUodGhpcy5fYiw0KSxUZS53cml0ZUludDMyTEUodGhpcy5fYyw4KSxUZS53cml0ZUludDMyTEUodGhpcy5fZCwxMiksVGUud3JpdGVJbnQzMkxFKHRoaXMuX2UsMTYpLFRlfSxVLmV4cG9ydHM9Y2V9''@;'; put 'put ''LDk1MDk6KFUsUSxqKT0+e3ZhciByZT1qKDg3NjQpLGFlPXJlLkJ1ZmZlcjtmdW5jdGlvbiBZKE4sdGUpe2Zvcih2YXIgSyBpbiBOKXRlW0tdPU5bS119ZnVuY3Rpb24gVyhOLHRlLEspe3JldHVybiBhZShOLHRlLEspfWFlLmZyb20mJmFlLmFsbG9jJiZhZS5hbGxvY1Vuc2FmZSYmYWUuYWxs''@;'; put 'put ''b2NVbnNhZmVTbG93P1UuZXhwb3J0cz1yZTooWShyZSxRKSxRLkJ1ZmZlcj1XKSxZKGFlLFcpLFcuZnJvbT1mdW5jdGlvbihOLHRlLEspe2lmKCJudW1iZXIiPT10eXBlb2YgTil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlciIpO3JldHVybiBhZShO''@;'; put 'put ''LHRlLEspfSxXLmFsbG9jPWZ1bmN0aW9uKE4sdGUsSyl7aWYoIm51bWJlciIhPXR5cGVvZiBOKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTt2YXIgSj1hZShOKTtyZXR1cm4gdm9pZCAwIT09dGU/InN0cmluZyI9PXR5cGVvZiBLP0ouZmlsbCh0ZSxL''@;'; put 'put ''KTpKLmZpbGwodGUpOkouZmlsbCgwKSxKfSxXLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKE4pe2lmKCJudW1iZXIiIT10eXBlb2YgTil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIGFlKE4pfSxXLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihO''@;'; put 'put ''KXtpZigibnVtYmVyIiE9dHlwZW9mIE4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiByZS5TbG93QnVmZmVyKE4pfX0sMjM5OTooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZSxhZT1qKDQxNTUpLFk9aig4NzY0KSxXPVkuQnVmZmVy''@;'; put 'put ''LE49e307Zm9yKHJlIGluIFkpWS5oYXNPd25Qcm9wZXJ0eShyZSkmJiJTbG93QnVmZmVyIiE9PXJlJiYiQnVmZmVyIiE9PXJlJiYoTltyZV09WVtyZV0pO3ZhciB0ZT1OLkJ1ZmZlcj17fTtmb3IocmUgaW4gVylXLmhhc093blByb3BlcnR5KHJlKSYmImFsbG9jVW5zYWZlIiE9PXJlJiYiYWxs''@;'; put 'put ''b2NVbnNhZmVTbG93IiE9PXJlJiYodGVbcmVdPVdbcmVdKTtpZihOLkJ1ZmZlci5wcm90b3R5cGU9Vy5wcm90b3R5cGUsdGUuZnJvbSYmdGUuZnJvbSE9PVVpbnQ4QXJyYXkuZnJvbXx8KHRlLmZyb209ZnVuY3Rpb24oSyxKLHNlKXtpZigibnVtYmVyIj09dHlwZW9mIEspdGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcignVGhlICJ2YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgSyk7aWYoSyYmdm9pZCAwPT09Sy5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5''@;'; put 'put ''cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgSyk7cmV0dXJuIFcoSyxKLHNlKX0pLHRlLmFsbG9jfHwodGUuYWxsb2M9ZnVuY3Rpb24oSyxKLHNlKXtpZigibnVtYmVyIiE9dHlwZW9mIEsp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJzaXplIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIEspO2lmKEs8MHx8Sz49MjE0NzQ4MzY0OCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK0srJyIgaXMgaW52YWxpZCBm''@;'; put 'put ''b3Igb3B0aW9uICJzaXplIicpO3ZhciBvZT1XKEspO3JldHVybiBKJiYwIT09Si5sZW5ndGg/InN0cmluZyI9PXR5cGVvZiBzZT9vZS5maWxsKEosc2UpOm9lLmZpbGwoSik6b2UuZmlsbCgwKSxvZX0pLCFOLmtTdHJpbmdNYXhMZW5ndGgpdHJ5e04ua1N0cmluZ01heExlbmd0aD1hZS5iaW5k''@;'; put 'put ''aW5nKCJidWZmZXIiKS5rU3RyaW5nTWF4TGVuZ3RofWNhdGNoKEspe31OLmNvbnN0YW50c3x8KE4uY29uc3RhbnRzPXtNQVhfTEVOR1RIOk4ua01heExlbmd0aH0sTi5rU3RyaW5nTWF4TGVuZ3RoJiYoTi5jb25zdGFudHMuTUFYX1NUUklOR19MRU5HVEg9Ti5rU3RyaW5nTWF4TGVuZ3RoKSks''@;'; put 'put ''VS5leHBvcnRzPU59LDQxODk6KFUsUSxqKT0+e3ZhciByZT1qKDk1MDkpLkJ1ZmZlcjtmdW5jdGlvbiBhZShZLFcpe3RoaXMuX2Jsb2NrPXJlLmFsbG9jKFkpLHRoaXMuX2ZpbmFsU2l6ZT1XLHRoaXMuX2Jsb2NrU2l6ZT1ZLHRoaXMuX2xlbj0wfWFlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rp''@;'; put 'put ''b24oWSxXKXsic3RyaW5nIj09dHlwZW9mIFkmJihZPXJlLmZyb20oWSxXPVd8fCJ1dGY4IikpO2Zvcih2YXIgTj10aGlzLl9ibG9jayx0ZT10aGlzLl9ibG9ja1NpemUsSz1ZLmxlbmd0aCxKPXRoaXMuX2xlbixzZT0wO3NlPEs7KXtmb3IodmFyIG9lPUoldGUsY2U9TWF0aC5taW4oSy1zZSx0''@;'; put 'put ''ZS1vZSksZGU9MDtkZTxjZTtkZSsrKU5bb2UrZGVdPVlbc2UrZGVdO3NlKz1jZSwoSis9Y2UpJXRlPT0wJiZ0aGlzLl91cGRhdGUoTil9cmV0dXJuIHRoaXMuX2xlbis9Syx0aGlzfSxhZS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKFkpe3ZhciBXPXRoaXMuX2xlbiV0aGlzLl9ibG9ja1Np''@;'; put 'put ''emU7dGhpcy5fYmxvY2tbV109MTI4LHRoaXMuX2Jsb2NrLmZpbGwoMCxXKzEpLFc+PXRoaXMuX2ZpbmFsU2l6ZSYmKHRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jayksdGhpcy5fYmxvY2suZmlsbCgwKSk7dmFyIE49OCp0aGlzLl9sZW47aWYoTjw9NDI5NDk2NzI5NSl0aGlzLl9ibG9jay53cml0''@;'; put 'put ''ZVVJbnQzMkJFKE4sdGhpcy5fYmxvY2tTaXplLTQpO2Vsc2V7dmFyIHRlPSg0Mjk0OTY3Mjk1Jk4pPj4+MDt0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKChOLXRlKS80Mjk0OTY3Mjk2LHRoaXMuX2Jsb2NrU2l6ZS04KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKHRlLHRoaXMuX2Jsb2Nr''@;'; put 'put ''U2l6ZS00KX10aGlzLl91cGRhdGUodGhpcy5fYmxvY2spO3ZhciBKPXRoaXMuX2hhc2goKTtyZXR1cm4gWT9KLnRvU3RyaW5nKFkpOkp9LGFlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJfdXBkYXRlIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xh''@;'; put 'put ''c3MiKX0sVS5leHBvcnRzPWFlfSw5MDcyOihVLFEsaik9Pnt2YXIgcmU9VS5leHBvcnRzPWZ1bmN0aW9uKGFlKXthZT1hZS50b0xvd2VyQ2FzZSgpO3ZhciBZPXJlW2FlXTtpZighWSl0aHJvdyBuZXcgRXJyb3IoYWUrIiBpcyBub3Qgc3VwcG9ydGVkICh3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0''@;'; put 'put ''cykiKTtyZXR1cm4gbmV3IFl9O3JlLnNoYT1qKDQ0NDgpLHJlLnNoYTE9aig4MzM2KSxyZS5zaGEyMjQ9aig4NDMyKSxyZS5zaGEyNTY9aig3NDk5KSxyZS5zaGEzODQ9aigxNjg2KSxyZS5zaGE1MTI9aig3ODE2KX0sNDQ0ODooVSxRLGopPT57dmFyIHJlPWooNTcxNyksYWU9aig0MTg5KSxZ''@;'; put 'put ''PWooOTUwOSkuQnVmZmVyLFc9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywtMTg5NDAwNzU4OCwtODk5NDk3NTE0XSxOPW5ldyBBcnJheSg4MCk7ZnVuY3Rpb24gdGUoKXt0aGlzLmluaXQoKSx0aGlzLl93PU4sYWUuY2FsbCh0aGlzLDY0LDU2KX1mdW5jdGlvbiBLKHNlKXtyZXR1cm4gc2U8PDMw''@;'; put 'put ''fHNlPj4+Mn1mdW5jdGlvbiBKKHNlLG9lLGNlLGRlKXtyZXR1cm4gMD09PXNlP29lJmNlfH5vZSZkZToyPT09c2U/b2UmY2V8b2UmZGV8Y2UmZGU6b2VeY2VeZGV9cmUodGUsYWUpLHRlLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2E9MTczMjU4NDE5Myx0aGlzLl9i''@;'; put 'put ''PTQwMjMyMzM0MTcsdGhpcy5fYz0yNTYyMzgzMTAyLHRoaXMuX2Q9MjcxNzMzODc4LHRoaXMuX2U9MzI4NTM3NzUyMCx0aGlzfSx0ZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihzZSl7Zm9yKHZhciBvZSxjZT10aGlzLl93LGRlPTB8dGhpcy5fYSx2ZT0wfHRoaXMuX2IsQWU9MHx0aGlz''@;'; put 'put ''Ll9jLGtlPTB8dGhpcy5fZCxTZT0wfHRoaXMuX2UsSWU9MDtJZTwxNjsrK0llKWNlW0llXT1zZS5yZWFkSW50MzJCRSg0KkllKTtmb3IoO0llPDgwOysrSWUpY2VbSWVdPWNlW0llLTNdXmNlW0llLThdXmNlW0llLTE0XV5jZVtJZS0xNl07Zm9yKHZhciBUZT0wO1RlPDgwOysrVGUpe3ZhciBN''@;'; put 'put ''ZT1+fihUZS8yMCksaGU9MHwoKG9lPWRlKTw8NXxvZT4+PjI3KStKKE1lLHZlLEFlLGtlKStTZStjZVtUZV0rV1tNZV07U2U9a2Usa2U9QWUsQWU9Syh2ZSksdmU9ZGUsZGU9aGV9dGhpcy5fYT1kZSt0aGlzLl9hfDAsdGhpcy5fYj12ZSt0aGlzLl9ifDAsdGhpcy5fYz1BZSt0aGlzLl9jfDAs''@;'; put 'put ''dGhpcy5fZD1rZSt0aGlzLl9kfDAsdGhpcy5fZT1TZSt0aGlzLl9lfDB9LHRlLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBzZT1ZLmFsbG9jVW5zYWZlKDIwKTtyZXR1cm4gc2Uud3JpdGVJbnQzMkJFKDB8dGhpcy5fYSwwKSxzZS53cml0ZUludDMyQkUoMHx0aGlzLl9iLDQpLHNl''@;'; put 'put ''LndyaXRlSW50MzJCRSgwfHRoaXMuX2MsOCksc2Uud3JpdGVJbnQzMkJFKDB8dGhpcy5fZCwxMiksc2Uud3JpdGVJbnQzMkJFKDB8dGhpcy5fZSwxNiksc2V9LFUuZXhwb3J0cz10ZX0sODMzNjooVSxRLGopPT57dmFyIHJlPWooNTcxNyksYWU9aig0MTg5KSxZPWooOTUwOSkuQnVmZmVyLFc9''@;'; put 'put ''WzE1MTg1MDAyNDksMTg1OTc3NTM5MywtMTg5NDAwNzU4OCwtODk5NDk3NTE0XSxOPW5ldyBBcnJheSg4MCk7ZnVuY3Rpb24gdGUoKXt0aGlzLmluaXQoKSx0aGlzLl93PU4sYWUuY2FsbCh0aGlzLDY0LDU2KX1mdW5jdGlvbiBLKG9lKXtyZXR1cm4gb2U8PDV8b2U+Pj4yN31mdW5jdGlvbiBK''@;'; put 'put ''KG9lKXtyZXR1cm4gb2U8PDMwfG9lPj4+Mn1mdW5jdGlvbiBzZShvZSxjZSxkZSx2ZSl7cmV0dXJuIDA9PT1vZT9jZSZkZXx+Y2UmdmU6Mj09PW9lP2NlJmRlfGNlJnZlfGRlJnZlOmNlXmRlXnZlfXJlKHRlLGFlKSx0ZS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9h''@;'; put 'put ''PTE3MzI1ODQxOTMsdGhpcy5fYj00MDIzMjMzNDE3LHRoaXMuX2M9MjU2MjM4MzEwMix0aGlzLl9kPTI3MTczMzg3OCx0aGlzLl9lPTMyODUzNzc1MjAsdGhpc30sdGUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24ob2Upe2Zvcih2YXIgY2UsZGU9dGhpcy5fdyx2ZT0wfHRoaXMuX2EsQWU9''@;'; put 'put ''MHx0aGlzLl9iLGtlPTB8dGhpcy5fYyxTZT0wfHRoaXMuX2QsSWU9MHx0aGlzLl9lLFRlPTA7VGU8MTY7KytUZSlkZVtUZV09b2UucmVhZEludDMyQkUoNCpUZSk7Zm9yKDtUZTw4MDsrK1RlKWRlW1RlXT0oY2U9ZGVbVGUtM11eZGVbVGUtOF1eZGVbVGUtMTRdXmRlW1RlLTE2XSk8PDF8Y2U+''@;'; put 'put ''Pj4zMTtmb3IodmFyIE1lPTA7TWU8ODA7KytNZSl7dmFyIGhlPX5+KE1lLzIwKSxPPUsodmUpK3NlKGhlLEFlLGtlLFNlKStJZStkZVtNZV0rV1toZV18MDtJZT1TZSxTZT1rZSxrZT1KKEFlKSxBZT12ZSx2ZT1PfXRoaXMuX2E9dmUrdGhpcy5fYXwwLHRoaXMuX2I9QWUrdGhpcy5fYnwwLHRo''@;'; put 'put ''aXMuX2M9a2UrdGhpcy5fY3wwLHRoaXMuX2Q9U2UrdGhpcy5fZHwwLHRoaXMuX2U9SWUrdGhpcy5fZXwwfSx0ZS5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgb2U9WS5hbGxvY1Vuc2FmZSgyMCk7cmV0dXJuIG9lLndyaXRlSW50MzJCRSgwfHRoaXMuX2EsMCksb2Uud3JpdGVJbnQz''@;'; put 'put ''MkJFKDB8dGhpcy5fYiw0KSxvZS53cml0ZUludDMyQkUoMHx0aGlzLl9jLDgpLG9lLndyaXRlSW50MzJCRSgwfHRoaXMuX2QsMTIpLG9lLndyaXRlSW50MzJCRSgwfHRoaXMuX2UsMTYpLG9lfSxVLmV4cG9ydHM9dGV9LDg0MzI6KFUsUSxqKT0+e3ZhciByZT1qKDU3MTcpLGFlPWooNzQ5OSks''@;'; put 'put ''WT1qKDQxODkpLFc9aig5NTA5KS5CdWZmZXIsTj1uZXcgQXJyYXkoNjQpO2Z1bmN0aW9uIHRlKCl7dGhpcy5pbml0KCksdGhpcy5fdz1OLFkuY2FsbCh0aGlzLDY0LDU2KX1yZSh0ZSxhZSksdGUucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT0zMjM4MzcxMDMyLHRo''@;'; put 'put ''aXMuX2I9OTE0MTUwNjYzLHRoaXMuX2M9ODEyNzAyOTk5LHRoaXMuX2Q9NDE0NDkxMjY5Nyx0aGlzLl9lPTQyOTA3NzU4NTcsdGhpcy5fZj0xNzUwNjAzMDI1LHRoaXMuX2c9MTY5NDA3NjgzOSx0aGlzLl9oPTMyMDQwNzU0MjgsdGhpc30sdGUucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7''@;'; put 'put ''dmFyIEs9Vy5hbGxvY1Vuc2FmZSgyOCk7cmV0dXJuIEsud3JpdGVJbnQzMkJFKHRoaXMuX2EsMCksSy53cml0ZUludDMyQkUodGhpcy5fYiw0KSxLLndyaXRlSW50MzJCRSh0aGlzLl9jLDgpLEsud3JpdGVJbnQzMkJFKHRoaXMuX2QsMTIpLEsud3JpdGVJbnQzMkJFKHRoaXMuX2UsMTYpLEsu''@;'; put 'put ''d3JpdGVJbnQzMkJFKHRoaXMuX2YsMjApLEsud3JpdGVJbnQzMkJFKHRoaXMuX2csMjQpLEt9LFUuZXhwb3J0cz10ZX0sNzQ5OTooVSxRLGopPT57dmFyIHJlPWooNTcxNyksYWU9aig0MTg5KSxZPWooOTUwOSkuQnVmZmVyLFc9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5''@;'; put 'put ''MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0''@;'; put 'put ''NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwx''@;'; put 'put ''Mjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2''@;'; put 'put ''OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0sTj1uZXcg''@;'; put 'put ''QXJyYXkoNjQpO2Z1bmN0aW9uIHRlKCl7dGhpcy5pbml0KCksdGhpcy5fdz1OLGFlLmNhbGwodGhpcyw2NCw1Nil9ZnVuY3Rpb24gSyhkZSx2ZSxBZSl7cmV0dXJuIEFlXmRlJih2ZV5BZSl9ZnVuY3Rpb24gSihkZSx2ZSxBZSl7cmV0dXJuIGRlJnZlfEFlJihkZXx2ZSl9ZnVuY3Rpb24gc2Uo''@;'; put 'put ''ZGUpe3JldHVybihkZT4+PjJ8ZGU8PDMwKV4oZGU+Pj4xM3xkZTw8MTkpXihkZT4+PjIyfGRlPDwxMCl9ZnVuY3Rpb24gb2UoZGUpe3JldHVybihkZT4+PjZ8ZGU8PDI2KV4oZGU+Pj4xMXxkZTw8MjEpXihkZT4+PjI1fGRlPDw3KX1mdW5jdGlvbiBjZShkZSl7cmV0dXJuKGRlPj4+N3xkZTw8''@;'; put 'put ''MjUpXihkZT4+PjE4fGRlPDwxNCleZGU+Pj4zfXJlKHRlLGFlKSx0ZS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPTE3NzkwMzM3MDMsdGhpcy5fYj0zMTQ0MTM0Mjc3LHRoaXMuX2M9MTAxMzkwNDI0Mix0aGlzLl9kPTI3NzM0ODA3NjIsdGhpcy5fZT0xMzU5ODkz''@;'; put 'put ''MTE5LHRoaXMuX2Y9MjYwMDgyMjkyNCx0aGlzLl9nPTUyODczNDYzNSx0aGlzLl9oPTE1NDE0NTkyMjUsdGhpc30sdGUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZGUpe2Zvcih2YXIgdmUsQWU9dGhpcy5fdyxrZT0wfHRoaXMuX2EsU2U9MHx0aGlzLl9iLEllPTB8dGhpcy5fYyxUZT0w''@;'; put 'put ''fHRoaXMuX2QsTWU9MHx0aGlzLl9lLGhlPTB8dGhpcy5fZixPPTB8dGhpcy5fZyx6PTB8dGhpcy5faCxlZT0wO2VlPDE2OysrZWUpQWVbZWVdPWRlLnJlYWRJbnQzMkJFKDQqZWUpO2Zvcig7ZWU8NjQ7KytlZSlBZVtlZV09MHwoKCh2ZT1BZVtlZS0yXSk+Pj4xN3x2ZTw8MTUpXih2ZT4+PjE5''@;'; put 'put ''fHZlPDwxMyledmU+Pj4xMCkrQWVbZWUtN10rY2UoQWVbZWUtMTVdKStBZVtlZS0xNl07Zm9yKHZhciBuZT0wO25lPDY0OysrbmUpe3ZhciB4PXorb2UoTWUpK0soTWUsaGUsTykrV1tuZV0rQWVbbmVdfDAsUD1zZShrZSkrSihrZSxTZSxJZSl8MDt6PU8sTz1oZSxoZT1NZSxNZT1UZSt4fDAs''@;'; put 'put ''VGU9SWUsSWU9U2UsU2U9a2Usa2U9eCtQfDB9dGhpcy5fYT1rZSt0aGlzLl9hfDAsdGhpcy5fYj1TZSt0aGlzLl9ifDAsdGhpcy5fYz1JZSt0aGlzLl9jfDAsdGhpcy5fZD1UZSt0aGlzLl9kfDAsdGhpcy5fZT1NZSt0aGlzLl9lfDAsdGhpcy5fZj1oZSt0aGlzLl9mfDAsdGhpcy5fZz1PK3Ro''@;'; put 'put ''aXMuX2d8MCx0aGlzLl9oPXordGhpcy5faHwwfSx0ZS5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgZGU9WS5hbGxvY1Vuc2FmZSgzMik7cmV0dXJuIGRlLndyaXRlSW50MzJCRSh0aGlzLl9hLDApLGRlLndyaXRlSW50MzJCRSh0aGlzLl9iLDQpLGRlLndyaXRlSW50MzJCRSh0aGlz''@;'; put 'put ''Ll9jLDgpLGRlLndyaXRlSW50MzJCRSh0aGlzLl9kLDEyKSxkZS53cml0ZUludDMyQkUodGhpcy5fZSwxNiksZGUud3JpdGVJbnQzMkJFKHRoaXMuX2YsMjApLGRlLndyaXRlSW50MzJCRSh0aGlzLl9nLDI0KSxkZS53cml0ZUludDMyQkUodGhpcy5faCwyOCksZGV9LFUuZXhwb3J0cz10ZX0s''@;'; put 'put ''MTY4NjooVSxRLGopPT57dmFyIHJlPWooNTcxNyksYWU9aig3ODE2KSxZPWooNDE4OSksVz1qKDk1MDkpLkJ1ZmZlcixOPW5ldyBBcnJheSgxNjApO2Z1bmN0aW9uIHRlKCl7dGhpcy5pbml0KCksdGhpcy5fdz1OLFkuY2FsbCh0aGlzLDEyOCwxMTIpfXJlKHRlLGFlKSx0ZS5wcm90b3R5cGUu''@;'; put 'put ''aW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9haD0zNDE4MDcwMzY1LHRoaXMuX2JoPTE2NTQyNzAyNTAsdGhpcy5fY2g9MjQzODUyOTM3MCx0aGlzLl9kaD0zNTU0NjIzNjAsdGhpcy5fZWg9MTczMTQwNTQxNSx0aGlzLl9maD0yMzk0MTgwMjMxLHRoaXMuX2doPTM2NzUwMDg1MjUsdGhp''@;'; put 'put ''cy5faGg9MTIwMzA2MjgxMyx0aGlzLl9hbD0zMjM4MzcxMDMyLHRoaXMuX2JsPTkxNDE1MDY2Myx0aGlzLl9jbD04MTI3MDI5OTksdGhpcy5fZGw9NDE0NDkxMjY5Nyx0aGlzLl9lbD00MjkwNzc1ODU3LHRoaXMuX2ZsPTE3NTA2MDMwMjUsdGhpcy5fZ2w9MTY5NDA3NjgzOSx0aGlzLl9obD0z''@;'; put 'put ''MjA0MDc1NDI4LHRoaXN9LHRlLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBLPVcuYWxsb2NVbnNhZmUoNDgpO2Z1bmN0aW9uIEooc2Usb2UsY2Upe0sud3JpdGVJbnQzMkJFKHNlLGNlKSxLLndyaXRlSW50MzJCRShvZSxjZSs0KX1yZXR1cm4gSih0aGlzLl9haCx0aGlzLl9hbCww''@;'; put 'put ''KSxKKHRoaXMuX2JoLHRoaXMuX2JsLDgpLEoodGhpcy5fY2gsdGhpcy5fY2wsMTYpLEoodGhpcy5fZGgsdGhpcy5fZGwsMjQpLEoodGhpcy5fZWgsdGhpcy5fZWwsMzIpLEoodGhpcy5fZmgsdGhpcy5fZmwsNDApLEt9LFUuZXhwb3J0cz10ZX0sNzgxNjooVSxRLGopPT57dmFyIHJlPWooNTcx''@;'; put 'put ''NyksYWU9aig0MTg5KSxZPWooOTUwOSkuQnVmZmVyLFc9WzExMTYzNTI0MDgsMzYwOTc2NzQ1OCwxODk5NDQ3NDQxLDYwMjg5MTcyNSwzMDQ5MzIzNDcxLDM5NjQ0ODQzOTksMzkyMTAwOTU3MywyMTczMjk1NTQ4LDk2MTk4NzE2Myw0MDgxNjI4NDcyLDE1MDg5NzA5OTMsMzA1MzgzNDI2NSwy''@;'; put 'put ''NDUzNjM1NzQ4LDI5Mzc2NzE1NzksMjg3MDc2MzIyMSwzNjY0NjA5NTYwLDM2MjQzODEwODAsMjczNDg4MzM5NCwzMTA1OTg0MDEsMTE2NDk5NjU0Miw2MDcyMjUyNzgsMTMyMzYxMDc2NCwxNDI2ODgxOTg3LDM1OTAzMDQ5OTQsMTkyNTA3ODM4OCw0MDY4MTgyMzgzLDIxNjIwNzgyMDYsOTkx''@;'; put 'put ''MzM2MTEzLDI2MTQ4ODgxMDMsNjMzODAzMzE3LDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCwzODM1MzkwNDAxLDI2NjY2MTM0NTgsNDAyMjIyNDc3NCw5NDQ3MTExMzksMjY0MzQ3MDc4LDIzNDEyNjI3NzMsNjA0ODA3NjI4LDIwMDc4MDA5MzMsNzcwMjU1OTgzLDE0OTU5OTA5MDEsMTI0OTE1MDEy''@;'; put 'put ''MiwxODU2NDMxMjM1LDE1NTUwODE2OTIsMzE3NTIxODEzMiwxOTk2MDY0OTg2LDIxOTg5NTA4MzcsMjU1NDIyMDg4MiwzOTk5NzE5MzM5LDI4MjE4MzQzNDksNzY2Nzg0MDE2LDI5NTI5OTY4MDgsMjU2NjU5NDg3OSwzMjEwMzEzNjcxLDMyMDMzMzc5NTYsMzMzNjU3MTg5MSwxMDM0NDU3MDI2''@;'; put 'put ''LDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSwxMTM5MjY5OTMsMzc1ODMyNjM4MywzMzgyNDE4OTUsMTY4NzE3OTM2LDY2NjMwNzIwNSwxMTg4MTc5OTY0LDc3MzUyOTkxMiwxNTQ2MDQ1NzM0LDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSwxMzk2MTgyMjkxLDI2NDM4MzM4MjMsMTY5NTE4MzcwMCwyMzQz''@;'; put 'put ''NTI3MzkwLDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCwyMTc3MDI2MzUwLDEyMDY3NTkxNDIsMjQ1Njk1NjAzNywzNDQwNzc2MjcsMjczMDQ4NTkyMSwxMjkwODYzNDYwLDI4MjAzMDI0MTEsMzE1ODQ1NDI3MywzMjU5NzMwODAwLDM1MDU5NTI2NTcsMzM0NTc2NDc3MSwxMDYyMTcwMDgsMzUxNjA2''@;'; put 'put ''NTgxNywzNjA2MDA4MzQ0LDM2MDAzNTI4MDQsMTQzMjcyNTc3Niw0MDk0NTcxOTA5LDE0NjcwMzE1OTQsMjc1NDIzMzQ0LDg1MTE2OTcyMCw0MzAyMjc3MzQsMzEwMDgyMzc1Miw1MDY5NDg2MTYsMTM2MzI1ODE5NSw2NTkwNjA1NTYsMzc1MDY4NTU5Myw4ODM5OTc4NzcsMzc4NTA1MDI4MCw5''@;'; put 'put ''NTgxMzk1NzEsMzMxODMwNzQyNywxMzIyODIyMjE4LDM4MTI3MjM0MDMsMTUzNzAwMjA2MywyMDAzMDM0OTk1LDE3NDc4NzM3NzksMzYwMjAzNjg5OSwxOTU1NTYyMjIyLDE1NzU5OTAwMTIsMjAyNDEwNDgxNSwxMTI1NTkyOTI4LDIyMjc3MzA0NTIsMjcxNjkwNDMwNiwyMzYxODUyNDI0LDQ0''@;'; put 'put ''Mjc3NjA0NCwyNDI4NDM2NDc0LDU5MzY5ODM0NCwyNzU2NzM0MTg3LDM3MzMxMTAyNDksMzIwNDAzMTQ3OSwyOTk5MzUxNTczLDMzMjkzMjUyOTgsMzgxNTkyMDQyNywzMzkxNTY5NjE0LDM5MjgzODM5MDAsMzUxNTI2NzI3MSw1NjYyODA3MTEsMzk0MDE4NzYwNiwzNDU0MDY5NTM0LDQxMTg2''@;'; put 'put ''MzAyNzEsNDAwMDIzOTk5MiwxMTY0MTg0NzQsMTkxNDEzODU1NCwxNzQyOTI0MjEsMjczMTA1NTI3MCwyODkzODAzNTYsMzIwMzk5MzAwNiw0NjAzOTMyNjksMzIwNjIwMzE1LDY4NTQ3MTczMyw1ODc0OTY4MzYsODUyMTQyOTcxLDEwODY3OTI4NTEsMTAxNzAzNjI5OCwzNjU1NDMxMDAsMTEy''@;'; put 'put ''NjAwMDU4MCwyNjE4Mjk3Njc2LDEyODgwMzM0NzAsMzQwOTg1NTE1OCwxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYsMTYwNzE2NzkxNSw5ODcxNjc0NjgsMTgxNjQwMjMxNiwxMjQ2MTg5NTkxXSxOPW5ldyBBcnJheSgxNjApO2Z1bmN0aW9uIHRlKCl7dGhpcy5pbml0KCksdGhpcy5fdz1OLGFlLmNh''@;'; put 'put ''bGwodGhpcywxMjgsMTEyKX1mdW5jdGlvbiBLKFNlLEllLFRlKXtyZXR1cm4gVGVeU2UmKEllXlRlKX1mdW5jdGlvbiBKKFNlLEllLFRlKXtyZXR1cm4gU2UmSWV8VGUmKFNlfEllKX1mdW5jdGlvbiBzZShTZSxJZSl7cmV0dXJuKFNlPj4+Mjh8SWU8PDQpXihJZT4+PjJ8U2U8PDMwKV4oSWU+''@;'; put 'put ''Pj43fFNlPDwyNSl9ZnVuY3Rpb24gb2UoU2UsSWUpe3JldHVybihTZT4+PjE0fEllPDwxOCleKFNlPj4+MTh8SWU8PDE0KV4oSWU+Pj45fFNlPDwyMyl9ZnVuY3Rpb24gY2UoU2UsSWUpe3JldHVybihTZT4+PjF8SWU8PDMxKV4oU2U+Pj44fEllPDwyNCleU2U+Pj43fWZ1bmN0aW9uIGRlKFNl''@;'; put 'put ''LEllKXtyZXR1cm4oU2U+Pj4xfEllPDwzMSleKFNlPj4+OHxJZTw8MjQpXihTZT4+Pjd8SWU8PDI1KX1mdW5jdGlvbiB2ZShTZSxJZSl7cmV0dXJuKFNlPj4+MTl8SWU8PDEzKV4oSWU+Pj4yOXxTZTw8MyleU2U+Pj42fWZ1bmN0aW9uIEFlKFNlLEllKXtyZXR1cm4oU2U+Pj4xOXxJZTw8MTMp''@;'; put 'put ''XihJZT4+PjI5fFNlPDwzKV4oU2U+Pj42fEllPDwyNil9ZnVuY3Rpb24ga2UoU2UsSWUpe3JldHVybiBTZT4+PjA8SWU+Pj4wPzE6MH1yZSh0ZSxhZSksdGUucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWg9MTc3OTAzMzcwMyx0aGlzLl9iaD0zMTQ0MTM0Mjc3LHRo''@;'; put 'put ''aXMuX2NoPTEwMTM5MDQyNDIsdGhpcy5fZGg9Mjc3MzQ4MDc2Mix0aGlzLl9laD0xMzU5ODkzMTE5LHRoaXMuX2ZoPTI2MDA4MjI5MjQsdGhpcy5fZ2g9NTI4NzM0NjM1LHRoaXMuX2hoPTE1NDE0NTkyMjUsdGhpcy5fYWw9NDA4OTIzNTcyMCx0aGlzLl9ibD0yMjI3ODczNTk1LHRoaXMuX2Ns''@;'; put 'put ''PTQyNzExNzU3MjMsdGhpcy5fZGw9MTU5NTc1MDEyOSx0aGlzLl9lbD0yOTE3NTY1MTM3LHRoaXMuX2ZsPTcyNTUxMTE5OSx0aGlzLl9nbD00MjE1Mzg5NTQ3LHRoaXMuX2hsPTMyNzAzMzIwOSx0aGlzfSx0ZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihTZSl7Zm9yKHZhciBJZT10aGlz''@;'; put 'put ''Ll93LFRlPTB8dGhpcy5fYWgsTWU9MHx0aGlzLl9iaCxoZT0wfHRoaXMuX2NoLE89MHx0aGlzLl9kaCx6PTB8dGhpcy5fZWgsZWU9MHx0aGlzLl9maCxuZT0wfHRoaXMuX2doLHg9MHx0aGlzLl9oaCxQPTB8dGhpcy5fYWwsVj0wfHRoaXMuX2JsLFQ9MHx0aGlzLl9jbCxTPTB8dGhpcy5fZGws''@;'; put 'put ''Rj0wfHRoaXMuX2VsLHllPTB8dGhpcy5fZmwsQ2U9MHx0aGlzLl9nbCxEZT0wfHRoaXMuX2hsLFBlPTA7UGU8MzI7UGUrPTIpSWVbUGVdPVNlLnJlYWRJbnQzMkJFKDQqUGUpLEllW1BlKzFdPVNlLnJlYWRJbnQzMkJFKDQqUGUrNCk7Zm9yKDtQZTwxNjA7UGUrPTIpe3ZhciBRZT1JZVtQZS0z''@;'; put 'put ''MF0sJGU9SWVbUGUtMzArMV0sZ3Q9Y2UoUWUsJGUpLHd0PWRlKCRlLFFlKSxtdD12ZShRZT1JZVtQZS00XSwkZT1JZVtQZS00KzFdKSx2dD1BZSgkZSxRZSksQnQ9SWVbUGUtMzJdLG9uPUllW1BlLTMyKzFdLF90PXd0K0llW1BlLTE0KzFdfDAsdHQ9Z3QrSWVbUGUtMTRdK2tlKF90LHd0KXww''@;'; put 'put ''O3R0PSh0dD10dCttdCtrZShfdD1fdCt2dHwwLHZ0KXwwKStCdCtrZShfdD1fdCtvbnwwLG9uKXwwLEllW1BlXT10dCxJZVtQZSsxXT1fdH1mb3IodmFyIGV0PTA7ZXQ8MTYwO2V0Kz0yKXt0dD1JZVtldF0sX3Q9SWVbZXQrMV07dmFyIGx0PUooVGUsTWUsaGUpLEx0PUooUCxWLFQpLEN0PXNl''@;'; put 'put ''KFRlLFApLGZ0PXNlKFAsVGUpLEh0PW9lKHosRiksR2U9b2UoRix6KSxVZT1XW2V0XSx5dD1XW2V0KzFdLGp0PUsoeixlZSxuZSksSnQ9SyhGLHllLENlKSxnbj1EZStHZXwwLGRuPXgrSHQra2UoZ24sRGUpfDA7ZG49KGRuPShkbj1kbitqdCtrZShnbj1nbitKdHwwLEp0KXwwKStVZStrZShn''@;'; put 'put ''bj1nbit5dHwwLHl0KXwwKSt0dCtrZShnbj1nbitfdHwwLF90KXwwO3ZhciB5bj1mdCtMdHwwLGxuPUN0K2x0K2tlKHluLGZ0KXwwO3g9bmUsRGU9Q2UsbmU9ZWUsQ2U9eWUsZWU9eix5ZT1GLHo9TytkbitrZShGPVMrZ258MCxTKXwwLE89aGUsUz1ULGhlPU1lLFQ9VixNZT1UZSxWPVAsVGU9''@;'; put 'put ''ZG4rbG4ra2UoUD1nbit5bnwwLGduKXwwfXRoaXMuX2FsPXRoaXMuX2FsK1B8MCx0aGlzLl9ibD10aGlzLl9ibCtWfDAsdGhpcy5fY2w9dGhpcy5fY2wrVHwwLHRoaXMuX2RsPXRoaXMuX2RsK1N8MCx0aGlzLl9lbD10aGlzLl9lbCtGfDAsdGhpcy5fZmw9dGhpcy5fZmwreWV8MCx0aGlzLl9n''@;'; put 'put ''bD10aGlzLl9nbCtDZXwwLHRoaXMuX2hsPXRoaXMuX2hsK0RlfDAsdGhpcy5fYWg9dGhpcy5fYWgrVGUra2UodGhpcy5fYWwsUCl8MCx0aGlzLl9iaD10aGlzLl9iaCtNZStrZSh0aGlzLl9ibCxWKXwwLHRoaXMuX2NoPXRoaXMuX2NoK2hlK2tlKHRoaXMuX2NsLFQpfDAsdGhpcy5fZGg9dGhp''@;'; put 'put ''cy5fZGgrTytrZSh0aGlzLl9kbCxTKXwwLHRoaXMuX2VoPXRoaXMuX2VoK3ora2UodGhpcy5fZWwsRil8MCx0aGlzLl9maD10aGlzLl9maCtlZStrZSh0aGlzLl9mbCx5ZSl8MCx0aGlzLl9naD10aGlzLl9naCtuZStrZSh0aGlzLl9nbCxDZSl8MCx0aGlzLl9oaD10aGlzLl9oaCt4K2tlKHRo''@;'; put 'put ''aXMuX2hsLERlKXwwfSx0ZS5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgU2U9WS5hbGxvY1Vuc2FmZSg2NCk7ZnVuY3Rpb24gSWUoVGUsTWUsaGUpe1NlLndyaXRlSW50MzJCRShUZSxoZSksU2Uud3JpdGVJbnQzMkJFKE1lLGhlKzQpfXJldHVybiBJZSh0aGlzLl9haCx0aGlzLl9h''@;'; put 'put ''bCwwKSxJZSh0aGlzLl9iaCx0aGlzLl9ibCw4KSxJZSh0aGlzLl9jaCx0aGlzLl9jbCwxNiksSWUodGhpcy5fZGgsdGhpcy5fZGwsMjQpLEllKHRoaXMuX2VoLHRoaXMuX2VsLDMyKSxJZSh0aGlzLl9maCx0aGlzLl9mbCw0MCksSWUodGhpcy5fZ2gsdGhpcy5fZ2wsNDgpLEllKHRoaXMuX2ho''@;'; put 'put ''LHRoaXMuX2hsLDU2KSxTZX0sVS5leHBvcnRzPXRlfSwyODMwOihVLFEsaik9PntVLmV4cG9ydHM9YWU7dmFyIHJlPWooNzE4NykuRXZlbnRFbWl0dGVyO2Z1bmN0aW9uIGFlKCl7cmUuY2FsbCh0aGlzKX1qKDU3MTcpKGFlLHJlKSxhZS5SZWFkYWJsZT1qKDk0ODEpLGFlLldyaXRhYmxlPWoo''@;'; put 'put ''NDIyOSksYWUuRHVwbGV4PWooNjc1MyksYWUuVHJhbnNmb3JtPWooNDYwNSksYWUuUGFzc1Rocm91Z2g9aigyNzI1KSxhZS5maW5pc2hlZD1qKDg2MTApLGFlLnBpcGVsaW5lPWooOTk0NiksYWUuU3RyZWFtPWFlLGFlLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKFksVyl7dmFyIE49dGhpcztm''@;'; put 'put ''dW5jdGlvbiB0ZSh2ZSl7WS53cml0YWJsZSYmITE9PT1ZLndyaXRlKHZlKSYmTi5wYXVzZSYmTi5wYXVzZSgpfWZ1bmN0aW9uIEsoKXtOLnJlYWRhYmxlJiZOLnJlc3VtZSYmTi5yZXN1bWUoKX1OLm9uKCJkYXRhIix0ZSksWS5vbigiZHJhaW4iLEspLFkuX2lzU3RkaW98fFcmJiExPT09Vy5l''@;'; put 'put ''bmR8fChOLm9uKCJlbmQiLHNlKSxOLm9uKCJjbG9zZSIsb2UpKTt2YXIgSj0hMTtmdW5jdGlvbiBzZSgpe0p8fChKPSEwLFkuZW5kKCkpfWZ1bmN0aW9uIG9lKCl7Snx8KEo9ITAsImZ1bmN0aW9uIj09dHlwZW9mIFkuZGVzdHJveSYmWS5kZXN0cm95KCkpfWZ1bmN0aW9uIGNlKHZlKXtpZihk''@;'; put 'put ''ZSgpLDA9PT1yZS5saXN0ZW5lckNvdW50KHRoaXMsImVycm9yIikpdGhyb3cgdmV9ZnVuY3Rpb24gZGUoKXtOLnJlbW92ZUxpc3RlbmVyKCJkYXRhIix0ZSksWS5yZW1vdmVMaXN0ZW5lcigiZHJhaW4iLEspLE4ucmVtb3ZlTGlzdGVuZXIoImVuZCIsc2UpLE4ucmVtb3ZlTGlzdGVuZXIoImNs''@;'; put 'put ''b3NlIixvZSksTi5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLGNlKSxZLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsY2UpLE4ucmVtb3ZlTGlzdGVuZXIoImVuZCIsZGUpLE4ucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixkZSksWS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLGRlKX1yZXR1cm4gTi5vbigi''@;'; put 'put ''ZXJyb3IiLGNlKSxZLm9uKCJlcnJvciIsY2UpLE4ub24oImVuZCIsZGUpLE4ub24oImNsb3NlIixkZSksWS5vbigiY2xvc2UiLGRlKSxZLmVtaXQoInBpcGUiLE4pLFl9fSwyNTUzOihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooMzk2KS5CdWZmZXIsYWU9cmUuaXNFbmNvZGluZ3x8''@;'; put 'put ''ZnVuY3Rpb24oZGUpe3N3aXRjaCgoZGU9IiIrZGUpJiZkZS50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0''@;'; put 'put ''Zi0xNmxlIjpjYXNlInJhdyI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19O2Z1bmN0aW9uIFkoZGUpe3ZhciB2ZTtzd2l0Y2godGhpcy5lbmNvZGluZz1mdW5jdGlvbihBZSl7dmFyIGtlPWZ1bmN0aW9uKFNlKXtpZighU2UpcmV0dXJuInV0ZjgiO2Zvcih2YXIgSWU7Oylzd2l0Y2goU2Up''@;'; put 'put ''e2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuInV0ZjgiO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4idXRmMTZsZSI7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4ibGF0aW4xIjtjYXNlImJhc2U2NCI6Y2FzZSJh''@;'; put 'put ''c2NpaSI6Y2FzZSJoZXgiOnJldHVybiBTZTtkZWZhdWx0OmlmKEllKXJldHVybjtTZT0oIiIrU2UpLnRvTG93ZXJDYXNlKCksSWU9ITB9fShBZSk7aWYoInN0cmluZyIhPXR5cGVvZiBrZSYmKHJlLmlzRW5jb2Rpbmc9PT1hZXx8IWFlKEFlKSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGVu''@;'; put 'put ''Y29kaW5nOiAiK0FlKTtyZXR1cm4ga2V8fEFlfShkZSksdGhpcy5lbmNvZGluZyl7Y2FzZSJ1dGYxNmxlIjp0aGlzLnRleHQ9dGUsdGhpcy5lbmQ9Syx2ZT00O2JyZWFrO2Nhc2UidXRmOCI6dGhpcy5maWxsTGFzdD1OLHZlPTQ7YnJlYWs7Y2FzZSJiYXNlNjQiOnRoaXMudGV4dD1KLHRoaXMu''@;'; put 'put ''ZW5kPXNlLHZlPTM7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gdGhpcy53cml0ZT1vZSx2b2lkKHRoaXMuZW5kPWNlKX10aGlzLmxhc3ROZWVkPTAsdGhpcy5sYXN0VG90YWw9MCx0aGlzLmxhc3RDaGFyPXJlLmFsbG9jVW5zYWZlKHZlKX1mdW5jdGlvbiBXKGRlKXtyZXR1cm4gZGU8PTEyNz8wOmRl''@;'; put 'put ''Pj41PT02PzI6ZGU+PjQ9PTE0PzM6ZGU+PjM9PTMwPzQ6ZGU+PjY9PTI/LTE6LTJ9ZnVuY3Rpb24gTihkZSl7dmFyIHZlPXRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsQWU9ZnVuY3Rpb24oa2UsU2UsSWUpe2lmKDEyOCE9KDE5MiZTZVswXSkpcmV0dXJuIGtlLmxhc3ROZWVkPTAsIlx1''@;'; put 'put ''ZmZmZCI7aWYoa2UubGFzdE5lZWQ+MSYmU2UubGVuZ3RoPjEpe2lmKDEyOCE9KDE5MiZTZVsxXSkpcmV0dXJuIGtlLmxhc3ROZWVkPTEsIlx1ZmZmZCI7aWYoa2UubGFzdE5lZWQ+MiYmU2UubGVuZ3RoPjImJjEyOCE9KDE5MiZTZVsyXSkpcmV0dXJuIGtlLmxhc3ROZWVkPTIsIlx1ZmZmZCJ9''@;'; put 'put ''fSh0aGlzLGRlKTtyZXR1cm4gdm9pZCAwIT09QWU/QWU6dGhpcy5sYXN0TmVlZDw9ZGUubGVuZ3RoPyhkZS5jb3B5KHRoaXMubGFzdENoYXIsdmUsMCx0aGlzLmxhc3ROZWVkKSx0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCx0aGlzLmxhc3RUb3RhbCkpOihkZS5jb3B5''@;'; put 'put ''KHRoaXMubGFzdENoYXIsdmUsMCxkZS5sZW5ndGgpLHZvaWQodGhpcy5sYXN0TmVlZC09ZGUubGVuZ3RoKSl9ZnVuY3Rpb24gdGUoZGUsdmUpe2lmKChkZS5sZW5ndGgtdmUpJTI9PTApe3ZhciBBZT1kZS50b1N0cmluZygidXRmMTZsZSIsdmUpO2lmKEFlKXt2YXIga2U9QWUuY2hhckNvZGVB''@;'; put 'put ''dChBZS5sZW5ndGgtMSk7aWYoa2U+PTU1Mjk2JiZrZTw9NTYzMTkpcmV0dXJuIHRoaXMubGFzdE5lZWQ9Mix0aGlzLmxhc3RUb3RhbD00LHRoaXMubGFzdENoYXJbMF09ZGVbZGUubGVuZ3RoLTJdLHRoaXMubGFzdENoYXJbMV09ZGVbZGUubGVuZ3RoLTFdLEFlLnNsaWNlKDAsLTEpfXJldHVy''@;'; put 'put ''biBBZX1yZXR1cm4gdGhpcy5sYXN0TmVlZD0xLHRoaXMubGFzdFRvdGFsPTIsdGhpcy5sYXN0Q2hhclswXT1kZVtkZS5sZW5ndGgtMV0sZGUudG9TdHJpbmcoInV0ZjE2bGUiLHZlLGRlLmxlbmd0aC0xKX1mdW5jdGlvbiBLKGRlKXt2YXIgdmU9ZGUmJmRlLmxlbmd0aD90aGlzLndyaXRlKGRl''@;'; put 'put ''KToiIjtyZXR1cm4gdGhpcy5sYXN0TmVlZD92ZSt0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCJ1dGYxNmxlIiwwLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQpOnZlfWZ1bmN0aW9uIEooZGUsdmUpe3ZhciBBZT0oZGUubGVuZ3RoLXZlKSUzO3JldHVybiAwPT09QWU/ZGUudG9TdHJpbmco''@;'; put 'put ''ImJhc2U2NCIsdmUpOih0aGlzLmxhc3ROZWVkPTMtQWUsdGhpcy5sYXN0VG90YWw9MywxPT09QWU/dGhpcy5sYXN0Q2hhclswXT1kZVtkZS5sZW5ndGgtMV06KHRoaXMubGFzdENoYXJbMF09ZGVbZGUubGVuZ3RoLTJdLHRoaXMubGFzdENoYXJbMV09ZGVbZGUubGVuZ3RoLTFdKSxkZS50b1N0''@;'; put 'put ''cmluZygiYmFzZTY0Iix2ZSxkZS5sZW5ndGgtQWUpKX1mdW5jdGlvbiBzZShkZSl7dmFyIHZlPWRlJiZkZS5sZW5ndGg/dGhpcy53cml0ZShkZSk6IiI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/dmUrdGhpcy5sYXN0Q2hhci50b1N0cmluZygiYmFzZTY0IiwwLDMtdGhpcy5sYXN0TmVlZCk6dmV9''@;'; put 'put ''ZnVuY3Rpb24gb2UoZGUpe3JldHVybiBkZS50b1N0cmluZyh0aGlzLmVuY29kaW5nKX1mdW5jdGlvbiBjZShkZSl7cmV0dXJuIGRlJiZkZS5sZW5ndGg/dGhpcy53cml0ZShkZSk6IiJ9US5TdHJpbmdEZWNvZGVyPVksWS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZGUpe2lmKDA9PT1kZS5s''@;'; put 'put ''ZW5ndGgpcmV0dXJuIiI7dmFyIHZlLEFlO2lmKHRoaXMubGFzdE5lZWQpe2lmKHZvaWQgMD09PSh2ZT10aGlzLmZpbGxMYXN0KGRlKSkpcmV0dXJuIiI7QWU9dGhpcy5sYXN0TmVlZCx0aGlzLmxhc3ROZWVkPTB9ZWxzZSBBZT0wO3JldHVybiBBZTxkZS5sZW5ndGg/dmU/dmUrdGhpcy50ZXh0''@;'; put 'put ''KGRlLEFlKTp0aGlzLnRleHQoZGUsQWUpOnZlfHwiIn0sWS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKGRlKXt2YXIgdmU9ZGUmJmRlLmxlbmd0aD90aGlzLndyaXRlKGRlKToiIjtyZXR1cm4gdGhpcy5sYXN0TmVlZD92ZSsiXHVmZmZkIjp2ZX0sWS5wcm90b3R5cGUudGV4dD1mdW5jdGlvbihk''@;'; put 'put ''ZSx2ZSl7dmFyIEFlPWZ1bmN0aW9uKFNlLEllLFRlKXt2YXIgTWU9SWUubGVuZ3RoLTE7aWYoTWU8VGUpcmV0dXJuIDA7dmFyIGhlPVcoSWVbTWVdKTtyZXR1cm4gaGU+PTA/KGhlPjAmJihTZS5sYXN0TmVlZD1oZS0xKSxoZSk6LS1NZTxUZXx8LTI9PT1oZT8wOihoZT1XKEllW01lXSkpPj0w''@;'; put 'put ''PyhoZT4wJiYoU2UubGFzdE5lZWQ9aGUtMiksaGUpOi0tTWU8VGV8fC0yPT09aGU/MDooaGU9VyhJZVtNZV0pKT49MD8oaGU+MCYmKDI9PT1oZT9oZT0wOlNlLmxhc3ROZWVkPWhlLTMpLGhlKTowfSh0aGlzLGRlLHZlKTtpZighdGhpcy5sYXN0TmVlZClyZXR1cm4gZGUudG9TdHJpbmcoInV0''@;'; put 'put ''ZjgiLHZlKTt0aGlzLmxhc3RUb3RhbD1BZTt2YXIga2U9ZGUubGVuZ3RoLShBZS10aGlzLmxhc3ROZWVkKTtyZXR1cm4gZGUuY29weSh0aGlzLmxhc3RDaGFyLDAsa2UpLGRlLnRvU3RyaW5nKCJ1dGY4Iix2ZSxrZSl9LFkucHJvdG90eXBlLmZpbGxMYXN0PWZ1bmN0aW9uKGRlKXtpZih0aGlz''@;'; put 'put ''Lmxhc3ROZWVkPD1kZS5sZW5ndGgpcmV0dXJuIGRlLmNvcHkodGhpcy5sYXN0Q2hhcix0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLDAsdGhpcy5sYXN0TmVlZCksdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLDAsdGhpcy5sYXN0VG90YWwpO2RlLmNvcHkodGhpcy5s''@;'; put 'put ''YXN0Q2hhcix0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLDAsZGUubGVuZ3RoKSx0aGlzLmxhc3ROZWVkLT1kZS5sZW5ndGh9fSwzOTY6KFUsUSxqKT0+e3ZhciByZT1qKDg3NjQpLGFlPXJlLkJ1ZmZlcjtmdW5jdGlvbiBZKE4sdGUpe2Zvcih2YXIgSyBpbiBOKXRlW0tdPU5bS119ZnVu''@;'; put 'put ''Y3Rpb24gVyhOLHRlLEspe3JldHVybiBhZShOLHRlLEspfWFlLmZyb20mJmFlLmFsbG9jJiZhZS5hbGxvY1Vuc2FmZSYmYWUuYWxsb2NVbnNhZmVTbG93P1UuZXhwb3J0cz1yZTooWShyZSxRKSxRLkJ1ZmZlcj1XKSxXLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGFlLnByb3RvdHlwZSksWShh''@;'; put 'put ''ZSxXKSxXLmZyb209ZnVuY3Rpb24oTix0ZSxLKXtpZigibnVtYmVyIj09dHlwZW9mIE4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gYWUoTix0ZSxLKX0sVy5hbGxvYz1mdW5jdGlvbihOLHRlLEspe2lmKCJudW1iZXIiIT10eXBl''@;'; put 'put ''b2YgTil0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7dmFyIEo9YWUoTik7cmV0dXJuIHZvaWQgMCE9PXRlPyJzdHJpbmciPT10eXBlb2YgSz9KLmZpbGwodGUsSyk6Si5maWxsKHRlKTpKLmZpbGwoMCksSn0sVy5hbGxvY1Vuc2FmZT1mdW5jdGlvbihO''@;'; put 'put ''KXtpZigibnVtYmVyIiE9dHlwZW9mIE4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBhZShOKX0sVy5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oTil7aWYoIm51bWJlciIhPXR5cGVvZiBOKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3Vt''@;'; put 'put ''ZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gcmUuU2xvd0J1ZmZlcihOKX19LDc4NTc6KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCByZT1qKDM2ODkpLGFlPWooODU3NSkuUWMsWT1qKDk1MzkpLFc9aig3NTIpLE49aigyMjI0KS55LHRlPWooNTc2MSkubSxLPWooODk3MSkuVSxK''@;'; put 'put ''PWooNDU2KSx7ZnJvbUNhbGxiYWNrOnNlfT1qKDcwNDEpLG9lPS9eW1x4MjFceDIzLVx4MkJceDJELVx4M0FceDNDLVx4NUJceDVELVx4N0VdKyQvLGNlPS9bXHgwMC1ceDFGXS8sZGU9WyJcbiIsIlxyIiwiXDAiXSx2ZT0vW1x4MjAtXHgzQVx4M0MtXHg3RV0rLyxBZT0vW1x4MDlceDIwLVx4''@;'; put 'put ''MkZceDNCLVx4NDBceDVCLVx4NjBceDdCLVx4N0VdLyxrZT17amFuOjAsZmViOjEsbWFyOjIsYXByOjMsbWF5OjQsanVuOjUsanVsOjYsYXVnOjcsc2VwOjgsb2N0Ojksbm92OjEwLGRlYzoxMX0sU2U9MjE0NzQ4MzY0N2UzLEllPSdJbnZhbGlkIHNhbWVTaXRlQ29udGV4dCBvcHRpb24gZm9y''@;'; put 'put ''IGdldENvb2tpZXMoKTsgZXhwZWN0ZWQgb25lIG9mICJzdHJpY3QiLCAibGF4Iiwgb3IgIm5vbmUiJztmdW5jdGlvbiBUZShtdCl7Y29uc3QgdnQ9U3RyaW5nKG10KS50b0xvd2VyQ2FzZSgpO3JldHVybiJub25lIj09PXZ0fHwibGF4Ij09PXZ0fHwic3RyaWN0Ij09PXZ0P3Z0Om51bGx9Y29u''@;'; put 'put ''c3QgTWU9T2JqZWN0LmZyZWV6ZSh7U0lMRU5UOiJzaWxlbnQiLFNUUklDVDoic3RyaWN0IixESVNBQkxFRDoidW5zYWZlLWRpc2FibGVkIn0pO3ZhciBoZT0vKD86Xig/OjI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV1cZHxcZCkoPzpcLig/OjI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEt''@;'; put 'put ''OV1cZHxcZCkpezN9JCl8KD86Xig/Oig/OlthLWZcZF17MSw0fTopezd9KD86W2EtZlxkXXsxLDR9fDopfCg/OlthLWZcZF17MSw0fTopezZ9KD86KD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSg/OlwuKD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSl7''@;'; put 'put ''M318OlthLWZcZF17MSw0fXw6KXwoPzpbYS1mXGRdezEsNH06KXs1fSg/OjooPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKD86XC4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfXwoPzo6W2EtZlxkXXsxLDR9KXsxLDJ9fDopfCg/OlthLWZcZF17''@;'; put 'put ''MSw0fTopezR9KD86KD86OlthLWZcZF17MSw0fSl7MCwxfTooPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKD86XC4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfXwoPzo6W2EtZlxkXXsxLDR9KXsxLDN9fDopfCg/OlthLWZcZF17MSw0fTopezN9''@;'; put 'put ''KD86KD86OlthLWZcZF17MSw0fSl7MCwyfTooPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKD86XC4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfXwoPzo6W2EtZlxkXXsxLDR9KXsxLDR9fDopfCg/OlthLWZcZF17MSw0fTopezJ9KD86KD86Olth''@;'; put 'put ''LWZcZF17MSw0fSl7MCwzfTooPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKD86XC4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfXwoPzo6W2EtZlxkXXsxLDR9KXsxLDV9fDopfCg/OlthLWZcZF17MSw0fTopezF9KD86KD86OlthLWZcZF17MSw0''@;'; put 'put ''fSl7MCw0fTooPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKD86XC4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfXwoPzo6W2EtZlxkXXsxLDR9KXsxLDZ9fDopfCg/OjooPzooPzo6W2EtZlxkXXsxLDR9KXswLDV9Oig/OjI1WzAtNV18MlswLTRd''@;'; put 'put ''XGR8MVxkXGR8WzEtOV1cZHxcZCkoPzpcLig/OjI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV1cZHxcZCkpezN9fCg/OjpbYS1mXGRdezEsNH0pezEsN318OikpKSQpLztmdW5jdGlvbiBPKG10LHZ0LEF0LGh0KXtsZXQgQnQ9MDtmb3IoO0J0PG10Lmxlbmd0aDspe2NvbnN0IG9uPW10LmNo''@;'; put 'put ''YXJDb2RlQXQoQnQpO2lmKG9uPD00N3x8b24+PTU4KWJyZWFrO0J0Kyt9cmV0dXJuIEJ0PHZ0fHxCdD5BdD9udWxsOmh0fHxCdD09bXQubGVuZ3RoP3BhcnNlSW50KG10LnN1YnN0cigwLEJ0KSwxMCk6bnVsbH1mdW5jdGlvbiB6KG10KXtjb25zdCB2dD1tdC5zcGxpdCgiOiIpLEF0PVswLDAs''@;'; put 'put ''MF07aWYoMyE9PXZ0Lmxlbmd0aClyZXR1cm4gbnVsbDtmb3IobGV0IGh0PTA7aHQ8MztodCsrKXtjb25zdCBvbj1PKHZ0W2h0XSwxLDIsMj09aHQpO2lmKG51bGw9PT1vbilyZXR1cm4gbnVsbDtBdFtodF09b259cmV0dXJuIEF0fWZ1bmN0aW9uIGVlKG10KXttdD1TdHJpbmcobXQpLnN1YnN0''@;'; put 'put ''cigwLDMpLnRvTG93ZXJDYXNlKCk7Y29uc3QgdnQ9a2VbbXRdO3JldHVybiB2dD49MD92dDpudWxsfWZ1bmN0aW9uIG5lKG10KXtpZighbXQpcmV0dXJuO2NvbnN0IHZ0PW10LnNwbGl0KEFlKTtpZighdnQpcmV0dXJuO2xldCBBdD1udWxsLGh0PW51bGwsQnQ9bnVsbCxvbj1udWxsLF90PW51''@;'; put 'put ''bGwsdHQ9bnVsbDtmb3IobGV0IGV0PTA7ZXQ8dnQubGVuZ3RoO2V0Kyspe2NvbnN0IGx0PXZ0W2V0XS50cmltKCk7aWYoIWx0Lmxlbmd0aCljb250aW51ZTtsZXQgTHQ7bnVsbD09PUJ0JiYoTHQ9eihsdCksTHQpPyhBdD1MdFswXSxodD1MdFsxXSxCdD1MdFsyXSk6bnVsbCE9PW9ufHwoTHQ9''@;'; put 'put ''TyhsdCwxLDIsITApLG51bGw9PT1MdCk/bnVsbCE9PV90fHwoTHQ9ZWUobHQpLG51bGw9PT1MdCk/bnVsbD09PXR0JiYoTHQ9TyhsdCwyLDQsITApLG51bGwhPT1MdCYmKHR0PUx0LHR0Pj03MCYmdHQ8PTk5P3R0Kz0xOTAwOnR0Pj0wJiZ0dDw9NjkmJih0dCs9MmUzKSkpOl90PUx0Om9uPUx0''@;'; put 'put ''fXJldHVybiBudWxsPT09b258fG51bGw9PT1fdHx8bnVsbD09PXR0fHxudWxsPT09QnR8fG9uPDF8fG9uPjMxfHx0dDwxNjAxfHxBdD4yM3x8aHQ+NTl8fEJ0PjU5P3ZvaWQgMDpuZXcgRGF0ZShEYXRlLlVUQyh0dCxfdCxvbixBdCxodCxCdCkpfWZ1bmN0aW9uIHgobXQpe3JldHVybiBtdC50''@;'; put 'put ''b1VUQ1N0cmluZygpfWZ1bmN0aW9uIFAobXQpe3JldHVybiBudWxsPT1tdD9udWxsOihtdD1tdC50cmltKCkucmVwbGFjZSgvXlwuLywiIikscmUmJi9bXlx1MDAwMS1cdTAwN2ZdLy50ZXN0KG10KSYmKG10PXJlLnRvQVNDSUkobXQpKSxtdC50b0xvd2VyQ2FzZSgpKX1mdW5jdGlvbiBWKG10''@;'; put 'put ''LHZ0LEF0KXtpZihudWxsPT1tdHx8bnVsbD09dnQpcmV0dXJuIG51bGw7aWYoITEhPT1BdCYmKG10PVAobXQpLHZ0PVAodnQpKSxtdD09dnQpcmV0dXJuITA7Y29uc3QgaHQ9bXQuaW5kZXhPZih2dCk7cmV0dXJuIShodDw9MHx8bXQubGVuZ3RoIT09dnQubGVuZ3RoK2h0fHwiLiIhPT1tdC5z''@;'; put 'put ''dWJzdHIoaHQtMSwxKXx8aGUudGVzdChtdCkpfWZ1bmN0aW9uIFQobXQpe2lmKCFtdHx8Ii8iIT09bXQuc3Vic3RyKDAsMSkpcmV0dXJuIi8iO2lmKCIvIj09PW10KXJldHVybiBtdDtjb25zdCB2dD1tdC5sYXN0SW5kZXhPZigiLyIpO3JldHVybiAwPT09dnQ/Ii8iOm10LnNsaWNlKDAsdnQp''@;'; put 'put ''fWZ1bmN0aW9uIEYobXQsdnQpe3Z0JiYib2JqZWN0Ij09dHlwZW9mIHZ0fHwodnQ9e30pO2NvbnN0IEF0PShtdD1tdC50cmltKCkpLmluZGV4T2YoIjsiKSxodD1mdW5jdGlvbiBTKG10LHZ0KXtsZXQgQXQsaHQsQnQ9KG10PWZ1bmN0aW9uKF90KXtmb3IobGV0IHR0PTA7dHQ8ZGUubGVuZ3Ro''@;'; put 'put ''O3R0Kyspe2NvbnN0IGV0PV90LmluZGV4T2YoZGVbdHRdKTstMSE9PWV0JiYoX3Q9X3Quc3Vic3RyKDAsZXQpKX1yZXR1cm4gX3R9KG10KSkuaW5kZXhPZigiPSIpO2lmKHZ0KTA9PT1CdCYmKEJ0PShtdD1tdC5zdWJzdHIoMSkpLmluZGV4T2YoIj0iKSk7ZWxzZSBpZihCdDw9MClyZXR1cm47''@;'; put 'put ''aWYoQnQ8PTA/KEF0PSIiLGh0PW10LnRyaW0oKSk6KEF0PW10LnN1YnN0cigwLEJ0KS50cmltKCksaHQ9bXQuc3Vic3RyKEJ0KzEpLnRyaW0oKSksY2UudGVzdChBdCl8fGNlLnRlc3QoaHQpKXJldHVybjtjb25zdCBvbj1uZXcgJGU7cmV0dXJuIG9uLmtleT1BdCxvbi52YWx1ZT1odCxvbn0o''@;'; put 'put ''LTE9PT1BdD9tdDptdC5zdWJzdHIoMCxBdCksISF2dC5sb29zZSk7aWYoIWh0KXJldHVybjtpZigtMT09PUF0KXJldHVybiBodDtjb25zdCBCdD1tdC5zbGljZShBdCsxKS50cmltKCk7aWYoMD09PUJ0Lmxlbmd0aClyZXR1cm4gaHQ7Y29uc3Qgb249QnQuc3BsaXQoIjsiKTtmb3IoO29uLmxl''@;'; put 'put ''bmd0aDspe2NvbnN0IF90PW9uLnNoaWZ0KCkudHJpbSgpO2lmKDA9PT1fdC5sZW5ndGgpY29udGludWU7Y29uc3QgdHQ9X3QuaW5kZXhPZigiPSIpO2xldCBldCxsdDtzd2l0Y2goLTE9PT10dD8oZXQ9X3QsbHQ9bnVsbCk6KGV0PV90LnN1YnN0cigwLHR0KSxsdD1fdC5zdWJzdHIodHQrMSkp''@;'; put 'put ''LGV0PWV0LnRyaW0oKS50b0xvd2VyQ2FzZSgpLGx0JiYobHQ9bHQudHJpbSgpKSxldCl7Y2FzZSJleHBpcmVzIjppZihsdCl7Y29uc3QgTHQ9bmUobHQpO0x0JiYoaHQuZXhwaXJlcz1MdCl9YnJlYWs7Y2FzZSJtYXgtYWdlIjppZihsdCYmL14tP1swLTldKyQvLnRlc3QobHQpKXtjb25zdCBM''@;'; put 'put ''dD1wYXJzZUludChsdCwxMCk7aHQuc2V0TWF4QWdlKEx0KX1icmVhaztjYXNlImRvbWFpbiI6aWYobHQpe2NvbnN0IEx0PWx0LnRyaW0oKS5yZXBsYWNlKC9eXC4vLCIiKTtMdCYmKGh0LmRvbWFpbj1MdC50b0xvd2VyQ2FzZSgpKX1icmVhaztjYXNlInBhdGgiOmh0LnBhdGg9bHQmJiIvIj09''@;'; put 'put ''PWx0WzBdP2x0Om51bGw7YnJlYWs7Y2FzZSJzZWN1cmUiOmh0LnNlY3VyZT0hMDticmVhaztjYXNlImh0dHBvbmx5IjpodC5odHRwT25seT0hMDticmVhaztjYXNlInNhbWVzaXRlIjpzd2l0Y2gobHQ/bHQudG9Mb3dlckNhc2UoKToiIil7Y2FzZSJzdHJpY3QiOmh0LnNhbWVTaXRlPSJzdHJp''@;'; put 'put ''Y3QiO2JyZWFrO2Nhc2UibGF4IjpodC5zYW1lU2l0ZT0ibGF4In1icmVhaztkZWZhdWx0Omh0LmV4dGVuc2lvbnM9aHQuZXh0ZW5zaW9uc3x8W10saHQuZXh0ZW5zaW9ucy5wdXNoKF90KX19cmV0dXJuIGh0fWZ1bmN0aW9uIHllKG10KXtsZXQgdnQ7dHJ5e3Z0PUpTT04ucGFyc2UobXQpfWNh''@;'; put 'put ''dGNoKEF0KXtyZXR1cm4gQXR9cmV0dXJuIHZ0fWZ1bmN0aW9uIENlKG10KXtpZighbXQpcmV0dXJuIG51bGw7bGV0IHZ0O2lmKCJzdHJpbmciPT10eXBlb2YgbXQpe2lmKHZ0PXllKG10KSx2dCBpbnN0YW5jZW9mIEVycm9yKXJldHVybiBudWxsfWVsc2UgdnQ9bXQ7Y29uc3QgQXQ9bmV3ICRl''@;'; put 'put ''O2ZvcihsZXQgaHQ9MDtodDwkZS5zZXJpYWxpemFibGVQcm9wZXJ0aWVzLmxlbmd0aDtodCsrKXtjb25zdCBCdD0kZS5zZXJpYWxpemFibGVQcm9wZXJ0aWVzW2h0XTt2b2lkIDAhPT12dFtCdF0mJnZ0W0J0XSE9PVFlW0J0XSYmKEF0W0J0XT0iZXhwaXJlcyI9PT1CdHx8ImNyZWF0aW9uIj09''@;'; put 'put ''PUJ0fHwibGFzdEFjY2Vzc2VkIj09PUJ0P251bGw9PT12dFtCdF0/bnVsbDoiSW5maW5pdHkiPT12dFtCdF0/IkluZmluaXR5IjpuZXcgRGF0ZSh2dFtCdF0pOnZ0W0J0XSl9cmV0dXJuIEF0fWZ1bmN0aW9uIERlKG10LHZ0KXtsZXQgQXQ9MDtyZXR1cm4gQXQ9KHZ0LnBhdGg/dnQucGF0aC5s''@;'; put 'put ''ZW5ndGg6MCktKG10LnBhdGg/bXQucGF0aC5sZW5ndGg6MCksMCE9PUF0fHwoQXQ9KG10LmNyZWF0aW9uP210LmNyZWF0aW9uLmdldFRpbWUoKTpTZSktKHZ0LmNyZWF0aW9uP3Z0LmNyZWF0aW9uLmdldFRpbWUoKTpTZSksMCE9PUF0fHwoQXQ9bXQuY3JlYXRpb25JbmRleC12dC5jcmVhdGlv''@;'; put 'put ''bkluZGV4KSksQXR9ZnVuY3Rpb24gUGUobXQpe2lmKG10IGluc3RhbmNlb2YgT2JqZWN0KXJldHVybiBtdDt0cnl7bXQ9ZGVjb2RlVVJJKG10KX1jYXRjaCh2dCl7fXJldHVybiBhZShtdCl9Y29uc3QgUWU9e2tleToiIix2YWx1ZToiIixleHBpcmVzOiJJbmZpbml0eSIsbWF4QWdlOm51bGws''@;'; put 'put ''ZG9tYWluOm51bGwscGF0aDpudWxsLHNlY3VyZTohMSxodHRwT25seTohMSxleHRlbnNpb25zOm51bGwsaG9zdE9ubHk6bnVsbCxwYXRoSXNEZWZhdWx0Om51bGwsY3JlYXRpb246bnVsbCxsYXN0QWNjZXNzZWQ6bnVsbCxzYW1lU2l0ZToibm9uZSJ9O2NsYXNzICRle2NvbnN0cnVjdG9yKHZ0''@;'; put 'put ''PXt9KXtZLmluc3BlY3QuY3VzdG9tJiYodGhpc1tZLmluc3BlY3QuY3VzdG9tXT10aGlzLmluc3BlY3QpLE9iamVjdC5hc3NpZ24odGhpcyxRZSx2dCksdGhpcy5jcmVhdGlvbj10aGlzLmNyZWF0aW9ufHxuZXcgRGF0ZSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiY3JlYXRpb25JbmRl''@;'; put 'put ''eCIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLHZhbHVlOisrJGUuY29va2llc0NyZWF0ZWR9KX1pbnNwZWN0KCl7Y29uc3QgdnQ9RGF0ZS5ub3coKSxBdD1udWxsIT10aGlzLmhvc3RPbmx5P3RoaXMuaG9zdE9ubHk6Ij8iLGh0PXRoaXMuY3JlYXRpb24/dnQt''@;'; put 'put ''dGhpcy5jcmVhdGlvbi5nZXRUaW1lKCkrIm1zIjoiPyIsQnQ9dGhpcy5sYXN0QWNjZXNzZWQ/dnQtdGhpcy5sYXN0QWNjZXNzZWQuZ2V0VGltZSgpKyJtcyI6Ij8iO3JldHVybmBDb29raWU9IiR7dGhpcy50b1N0cmluZygpfTsgaG9zdE9ubHk9JHtBdH07IGFBZ2U9JHtCdH07IGNBZ2U9JHto''@;'; put 'put ''dH0iYH10b0pTT04oKXtjb25zdCB2dD17fTtmb3IoY29uc3QgQXQgb2YgJGUuc2VyaWFsaXphYmxlUHJvcGVydGllcyl0aGlzW0F0XSE9PVFlW0F0XSYmKCJleHBpcmVzIj09PUF0fHwiY3JlYXRpb24iPT09QXR8fCJsYXN0QWNjZXNzZWQiPT09QXQ/dnRbQXRdPW51bGw9PT10aGlzW0F0XT9u''@;'; put 'put ''dWxsOiJJbmZpbml0eSI9PXRoaXNbQXRdPyJJbmZpbml0eSI6dGhpc1tBdF0udG9JU09TdHJpbmcoKToibWF4QWdlIj09PUF0P251bGwhPT10aGlzW0F0XSYmKHZ0W0F0XT10aGlzW0F0XT09MS8wfHx0aGlzW0F0XT09LTEvMD90aGlzW0F0XS50b1N0cmluZygpOnRoaXNbQXRdKTp0aGlzW0F0''@;'; put 'put ''XSE9PVFlW0F0XSYmKHZ0W0F0XT10aGlzW0F0XSkpO3JldHVybiB2dH1jbG9uZSgpe3JldHVybiBDZSh0aGlzLnRvSlNPTigpKX12YWxpZGF0ZSgpe2lmKCFvZS50ZXN0KHRoaXMudmFsdWUpfHwhKHRoaXMuZXhwaXJlcz09MS8wfHx0aGlzLmV4cGlyZXMgaW5zdGFuY2VvZiBEYXRlfHxuZSh0''@;'; put 'put ''aGlzLmV4cGlyZXMpKXx8bnVsbCE9dGhpcy5tYXhBZ2UmJnRoaXMubWF4QWdlPD0wfHxudWxsIT10aGlzLnBhdGgmJiF2ZS50ZXN0KHRoaXMucGF0aCkpcmV0dXJuITE7Y29uc3QgdnQ9dGhpcy5jZG9tYWluKCk7cmV0dXJuISh2dCYmKHZ0Lm1hdGNoKC9cLiQvKXx8bnVsbD09Vy5nZXRQdWJs''@;'; put 'put ''aWNTdWZmaXgodnQpKSl9c2V0RXhwaXJlcyh2dCl7dGhpcy5leHBpcmVzPXZ0IGluc3RhbmNlb2YgRGF0ZT92dDpuZSh2dCl8fCJJbmZpbml0eSJ9c2V0TWF4QWdlKHZ0KXt0aGlzLm1heEFnZT12dD09PTEvMHx8dnQ9PT0tMS8wP3Z0LnRvU3RyaW5nKCk6dnR9Y29va2llU3RyaW5nKCl7bGV0''@;'; put 'put ''IHZ0PXRoaXMudmFsdWU7cmV0dXJuIG51bGw9PXZ0JiYodnQ9IiIpLCIiPT09dGhpcy5rZXk/dnQ6YCR7dGhpcy5rZXl9PSR7dnR9YH10b1N0cmluZygpe2xldCB2dD10aGlzLmNvb2tpZVN0cmluZygpO3JldHVybiB0aGlzLmV4cGlyZXMhPTEvMCYmKHRoaXMuZXhwaXJlcyBpbnN0YW5jZW9m''@;'; put 'put ''IERhdGU/dnQrPWA7IEV4cGlyZXM9JHt4KHRoaXMuZXhwaXJlcyl9YDp2dCs9YDsgRXhwaXJlcz0ke3RoaXMuZXhwaXJlc31gKSxudWxsIT10aGlzLm1heEFnZSYmdGhpcy5tYXhBZ2UhPTEvMCYmKHZ0Kz1gOyBNYXgtQWdlPSR7dGhpcy5tYXhBZ2V9YCksdGhpcy5kb21haW4mJiF0aGlzLmhv''@;'; put 'put ''c3RPbmx5JiYodnQrPWA7IERvbWFpbj0ke3RoaXMuZG9tYWlufWApLHRoaXMucGF0aCYmKHZ0Kz1gOyBQYXRoPSR7dGhpcy5wYXRofWApLHRoaXMuc2VjdXJlJiYodnQrPSI7IFNlY3VyZSIpLHRoaXMuaHR0cE9ubHkmJih2dCs9IjsgSHR0cE9ubHkiKSx0aGlzLnNhbWVTaXRlJiYibm9uZSIh''@;'; put 'put ''PT10aGlzLnNhbWVTaXRlJiYodnQrPWA7IFNhbWVTaXRlPSR7JGUuc2FtZVNpdGVDYW5vbmljYWxbdGhpcy5zYW1lU2l0ZS50b0xvd2VyQ2FzZSgpXXx8dGhpcy5zYW1lU2l0ZX1gKSx0aGlzLmV4dGVuc2lvbnMmJnRoaXMuZXh0ZW5zaW9ucy5mb3JFYWNoKEF0PT57dnQrPWA7ICR7QXR9YH0p''@;'; put 'put ''LHZ0fVRUTCh2dCl7aWYobnVsbCE9dGhpcy5tYXhBZ2UpcmV0dXJuIHRoaXMubWF4QWdlPD0wPzA6MWUzKnRoaXMubWF4QWdlO2xldCBBdD10aGlzLmV4cGlyZXM7cmV0dXJuIEF0IT0xLzA/KEF0IGluc3RhbmNlb2YgRGF0ZXx8KEF0PW5lKEF0KXx8MS8wKSxBdD09MS8wPzEvMDpBdC5nZXRU''@;'; put 'put ''aW1lKCktKHZ0fHxEYXRlLm5vdygpKSk6MS8wfWV4cGlyeVRpbWUodnQpe2lmKG51bGwhPXRoaXMubWF4QWdlKXtjb25zdCBBdD12dHx8dGhpcy5jcmVhdGlvbnx8bmV3IERhdGUsaHQ9dGhpcy5tYXhBZ2U8PTA/LTEvMDoxZTMqdGhpcy5tYXhBZ2U7cmV0dXJuIEF0LmdldFRpbWUoKStodH1y''@;'; put 'put ''ZXR1cm4gdGhpcy5leHBpcmVzPT0xLzA/MS8wOnRoaXMuZXhwaXJlcy5nZXRUaW1lKCl9ZXhwaXJ5RGF0ZSh2dCl7Y29uc3QgQXQ9dGhpcy5leHBpcnlUaW1lKHZ0KTtyZXR1cm4gQXQ9PTEvMD9uZXcgRGF0ZShTZSk6QXQ9PS0xLzA/bmV3IERhdGUoMCk6bmV3IERhdGUoQXQpfWlzUGVyc2lz''@;'; put 'put ''dGVudCgpe3JldHVybiBudWxsIT10aGlzLm1heEFnZXx8dGhpcy5leHBpcmVzIT0xLzB9Y2Fub25pY2FsaXplZERvbWFpbigpe3JldHVybiBudWxsPT10aGlzLmRvbWFpbj9udWxsOlAodGhpcy5kb21haW4pfWNkb21haW4oKXtyZXR1cm4gdGhpcy5jYW5vbmljYWxpemVkRG9tYWluKCl9fSRl''@;'; put 'put ''LmNvb2tpZXNDcmVhdGVkPTAsJGUucGFyc2U9RiwkZS5mcm9tSlNPTj1DZSwkZS5zZXJpYWxpemFibGVQcm9wZXJ0aWVzPU9iamVjdC5rZXlzKFFlKSwkZS5zYW1lU2l0ZUxldmVsPXtzdHJpY3Q6MyxsYXg6Mixub25lOjF9LCRlLnNhbWVTaXRlQ2Fub25pY2FsPXtzdHJpY3Q6IlN0cmljdCIs''@;'; put 'put ''bGF4OiJMYXgifTtjbGFzcyBndHtjb25zdHJ1Y3Rvcih2dCxBdD17cmVqZWN0UHVibGljU3VmZml4ZXM6ITB9KXsiYm9vbGVhbiI9PXR5cGVvZiBBdCYmKEF0PXtyZWplY3RQdWJsaWNTdWZmaXhlczpBdH0pLHRoaXMucmVqZWN0UHVibGljU3VmZml4ZXM9QXQucmVqZWN0UHVibGljU3VmZml4''@;'; put 'put ''ZXMsdGhpcy5lbmFibGVMb29zZU1vZGU9ISFBdC5sb29zZU1vZGUsdGhpcy5hbGxvd1NwZWNpYWxVc2VEb21haW49ISFBdC5hbGxvd1NwZWNpYWxVc2VEb21haW4sdGhpcy5zdG9yZT12dHx8bmV3IHRlLHRoaXMucHJlZml4U2VjdXJpdHk9ZnVuY3Rpb24oaHQpe2lmKG51bGwhPWh0KXtjb25z''@;'; put 'put ''dCBCdD1odC50b0xvd2VyQ2FzZSgpO3N3aXRjaChCdCl7Y2FzZSBNZS5TVFJJQ1Q6Y2FzZSBNZS5TSUxFTlQ6Y2FzZSBNZS5ESVNBQkxFRDpyZXR1cm4gQnR9fXJldHVybiBNZS5TSUxFTlR9KEF0LnByZWZpeFNlY3VyaXR5KSx0aGlzLl9jbG9uZVN5bmM9d3QoImNsb25lIiksdGhpcy5faW1w''@;'; put 'put ''b3J0Q29va2llc1N5bmM9d3QoIl9pbXBvcnRDb29raWVzIiksdGhpcy5nZXRDb29raWVzU3luYz13dCgiZ2V0Q29va2llcyIpLHRoaXMuZ2V0Q29va2llU3RyaW5nU3luYz13dCgiZ2V0Q29va2llU3RyaW5nIiksdGhpcy5nZXRTZXRDb29raWVTdHJpbmdzU3luYz13dCgiZ2V0U2V0Q29va2ll''@;'; put 'put ''U3RyaW5ncyIpLHRoaXMucmVtb3ZlQWxsQ29va2llc1N5bmM9d3QoInJlbW92ZUFsbENvb2tpZXMiKSx0aGlzLnNldENvb2tpZVN5bmM9d3QoInNldENvb2tpZSIpLHRoaXMuc2VyaWFsaXplU3luYz13dCgic2VyaWFsaXplIil9c2V0Q29va2llKHZ0LEF0LGh0LEJ0KXtsZXQgb247Y29uc3Qg''@;'; put 'put ''X3Q9UGUoQXQpOyJmdW5jdGlvbiI9PXR5cGVvZiBodCYmKEJ0PWh0LGh0PXt9KTtjb25zdCB0dD1QKF90Lmhvc3RuYW1lKSxldD1odC5sb29zZXx8dGhpcy5lbmFibGVMb29zZU1vZGU7bGV0IGx0PW51bGw7aWYoaHQuc2FtZVNpdGVDb250ZXh0JiYobHQ9VGUoaHQuc2FtZVNpdGVDb250ZXh0''@;'; put 'put ''KSwhbHQpKXJldHVybiBCdChuZXcgRXJyb3IoSWUpKTtpZigic3RyaW5nIj09dHlwZW9mIHZ0fHx2dCBpbnN0YW5jZW9mIFN0cmluZyl7aWYoISh2dD0kZS5wYXJzZSh2dCx7bG9vc2U6ZXR9KSkpcmV0dXJuIG9uPW5ldyBFcnJvcigiQ29va2llIGZhaWxlZCB0byBwYXJzZSIpLEJ0KGh0Lmln''@;'; put 'put ''bm9yZUVycm9yP251bGw6b24pfWVsc2UgaWYoISh2dCBpbnN0YW5jZW9mICRlKSlyZXR1cm4gb249bmV3IEVycm9yKCJGaXJzdCBhcmd1bWVudCB0byBzZXRDb29raWUgbXVzdCBiZSBhIENvb2tpZSBvYmplY3Qgb3Igc3RyaW5nIiksQnQoaHQuaWdub3JlRXJyb3I/bnVsbDpvbik7Y29uc3Qg''@;'; put 'put ''THQ9aHQubm93fHxuZXcgRGF0ZTtpZih0aGlzLnJlamVjdFB1YmxpY1N1ZmZpeGVzJiZ2dC5kb21haW4mJm51bGw9PVcuZ2V0UHVibGljU3VmZml4KHZ0LmNkb21haW4oKSkpcmV0dXJuIG9uPW5ldyBFcnJvcigiQ29va2llIGhhcyBkb21haW4gc2V0IHRvIGEgcHVibGljIHN1ZmZpeCIpLEJ0''@;'; put 'put ''KGh0Lmlnbm9yZUVycm9yP251bGw6b24pO2lmKHZ0LmRvbWFpbil7aWYoIVYodHQsdnQuY2RvbWFpbigpLCExKSlyZXR1cm4gb249bmV3IEVycm9yKGBDb29raWUgbm90IGluIHRoaXMgaG9zdCdzIGRvbWFpbi4gQ29va2llOiR7dnQuY2RvbWFpbigpfSBSZXF1ZXN0OiR7dHR9YCksQnQoaHQu''@;'; put 'put ''aWdub3JlRXJyb3I/bnVsbDpvbik7bnVsbD09dnQuaG9zdE9ubHkmJih2dC5ob3N0T25seT0hMSl9ZWxzZSB2dC5ob3N0T25seT0hMCx2dC5kb21haW49dHQ7aWYodnQucGF0aCYmIi8iPT09dnQucGF0aFswXXx8KHZ0LnBhdGg9VChfdC5wYXRobmFtZSksdnQucGF0aElzRGVmYXVsdD0hMCks''@;'; put 'put ''ITE9PT1odC5odHRwJiZ2dC5odHRwT25seSlyZXR1cm4gb249bmV3IEVycm9yKCJDb29raWUgaXMgSHR0cE9ubHkgYW5kIHRoaXMgaXNuJ3QgYW4gSFRUUCBBUEkiKSxCdChodC5pZ25vcmVFcnJvcj9udWxsOm9uKTtpZigibm9uZSIhPT12dC5zYW1lU2l0ZSYmbHQmJiJub25lIj09PWx0KXJl''@;'; put 'put ''dHVybiBvbj1uZXcgRXJyb3IoIkNvb2tpZSBpcyBTYW1lU2l0ZSBidXQgdGhpcyBpcyBhIGNyb3NzLW9yaWdpbiByZXF1ZXN0IiksQnQoaHQuaWdub3JlRXJyb3I/bnVsbDpvbik7Y29uc3QgQ3Q9dGhpcy5wcmVmaXhTZWN1cml0eT09PU1lLlNJTEVOVDtpZih0aGlzLnByZWZpeFNlY3VyaXR5''@;'; put 'put ''IT09TWUuRElTQUJMRUQpe2xldCBIdCxHZT0hMTtpZighKFVlPXZ0KS5rZXkuc3RhcnRzV2l0aCgiX19TZWN1cmUtIil8fFVlLnNlY3VyZT9mdW5jdGlvbihVZSl7cmV0dXJuIVVlLmtleS5zdGFydHNXaXRoKCJfX0hvc3QtIil8fFVlLnNlY3VyZSYmVWUuaG9zdE9ubHkmJm51bGwhPVVlLnBh''@;'; put 'put ''dGgmJiIvIj09PVVlLnBhdGh9KHZ0KXx8KEdlPSEwLEh0PSJDb29raWUgaGFzIF9fSG9zdCBwcmVmaXggYnV0IGVpdGhlciBTZWN1cmUgb3IgSG9zdE9ubHkgYXR0cmlidXRlIGlzIG5vdCBzZXQgb3IgUGF0aCBpcyBub3QgJy8nIik6KEdlPSEwLEh0PSJDb29raWUgaGFzIF9fU2VjdXJlIHBy''@;'; put 'put ''ZWZpeCBidXQgU2VjdXJlIGF0dHJpYnV0ZSBpcyBub3Qgc2V0IiksR2UpcmV0dXJuIEJ0KGh0Lmlnbm9yZUVycm9yfHxDdD9udWxsOm5ldyBFcnJvcihIdCkpfXZhciBVZTtjb25zdCBmdD10aGlzLnN0b3JlO2Z0LnVwZGF0ZUNvb2tpZXx8KGZ0LnVwZGF0ZUNvb2tpZT1mdW5jdGlvbihIdCxH''@;'; put 'put ''ZSxVZSl7dGhpcy5wdXRDb29raWUoR2UsVWUpfSksZnQuZmluZENvb2tpZSh2dC5kb21haW4sdnQucGF0aCx2dC5rZXksZnVuY3Rpb24oSHQsR2Upe2lmKEh0KXJldHVybiBCdChIdCk7Y29uc3QgVWU9ZnVuY3Rpb24oeXQpe2lmKHl0KXJldHVybiBCdCh5dCk7QnQobnVsbCx2dCl9O2lmKEdl''@;'; put 'put ''KXtpZighMT09PWh0Lmh0dHAmJkdlLmh0dHBPbmx5KXJldHVybiBIdD1uZXcgRXJyb3IoIm9sZCBDb29raWUgaXMgSHR0cE9ubHkgYW5kIHRoaXMgaXNuJ3QgYW4gSFRUUCBBUEkiKSxCdChodC5pZ25vcmVFcnJvcj9udWxsOkh0KTt2dC5jcmVhdGlvbj1HZS5jcmVhdGlvbix2dC5jcmVhdGlv''@;'; put 'put ''bkluZGV4PUdlLmNyZWF0aW9uSW5kZXgsdnQubGFzdEFjY2Vzc2VkPUx0LGZ0LnVwZGF0ZUNvb2tpZShHZSx2dCxVZSl9ZWxzZSB2dC5jcmVhdGlvbj12dC5sYXN0QWNjZXNzZWQ9THQsZnQucHV0Q29va2llKHZ0LFVlKX0pfWdldENvb2tpZXModnQsQXQsaHQpe2NvbnN0IEJ0PVBlKHZ0KTsi''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2YgQXQmJihodD1BdCxBdD17fSk7Y29uc3Qgb249UChCdC5ob3N0bmFtZSksX3Q9QnQucGF0aG5hbWV8fCIvIjtsZXQgdHQ9QXQuc2VjdXJlO251bGwhPXR0fHwhQnQucHJvdG9jb2x8fCJodHRwczoiIT1CdC5wcm90b2NvbCYmIndzczoiIT1CdC5wcm90b2NvbHx8''@;'; put 'put ''KHR0PSEwKTtsZXQgZXQ9MDtpZihBdC5zYW1lU2l0ZUNvbnRleHQpe2NvbnN0IFVlPVRlKEF0LnNhbWVTaXRlQ29udGV4dCk7aWYoZXQ9JGUuc2FtZVNpdGVMZXZlbFtVZV0sIWV0KXJldHVybiBodChuZXcgRXJyb3IoSWUpKX1sZXQgbHQ9QXQuaHR0cDtudWxsPT1sdCYmKGx0PSEwKTtjb25z''@;'; put 'put ''dCBMdD1BdC5ub3d8fERhdGUubm93KCksQ3Q9ITEhPT1BdC5leHBpcmUsZnQ9ISFBdC5hbGxQYXRocyxIdD10aGlzLnN0b3JlO2Z1bmN0aW9uIEdlKFVlKXtpZihVZS5ob3N0T25seSl7aWYoVWUuZG9tYWluIT1vbilyZXR1cm4hMX1lbHNlIGlmKCFWKG9uLFVlLmRvbWFpbiwhMSkpcmV0dXJu''@;'; put 'put ''ITE7cmV0dXJuISghZnQmJiFLKF90LFVlLnBhdGgpfHxVZS5zZWN1cmUmJiF0dHx8VWUuaHR0cE9ubHkmJiFsdHx8ZXQmJiRlLnNhbWVTaXRlTGV2ZWxbVWUuc2FtZVNpdGV8fCJub25lIl0+ZXR8fEN0JiZVZS5leHBpcnlUaW1lKCk8PUx0JiYoSHQucmVtb3ZlQ29va2llKFVlLmRvbWFpbixV''@;'; put 'put ''ZS5wYXRoLFVlLmtleSwoKT0+e30pLDEpKX1IdC5maW5kQ29va2llcyhvbixmdD9udWxsOl90LHRoaXMuYWxsb3dTcGVjaWFsVXNlRG9tYWluLChVZSx5dCk9PntpZihVZSlyZXR1cm4gaHQoVWUpO3l0PXl0LmZpbHRlcihHZSksITEhPT1BdC5zb3J0JiYoeXQ9eXQuc29ydChEZSkpO2NvbnN0''@;'; put 'put ''IGp0PW5ldyBEYXRlO2Zvcihjb25zdCBKdCBvZiB5dClKdC5sYXN0QWNjZXNzZWQ9anQ7aHQobnVsbCx5dCl9KX1nZXRDb29raWVTdHJpbmcoLi4udnQpe2NvbnN0IEF0PXZ0LnBvcCgpO3Z0LnB1c2goZnVuY3Rpb24oaHQsQnQpe2h0P0F0KGh0KTpBdChudWxsLEJ0LnNvcnQoRGUpLm1hcChv''@;'; put 'put ''bj0+b24uY29va2llU3RyaW5nKCkpLmpvaW4oIjsgIikpfSksdGhpcy5nZXRDb29raWVzLmFwcGx5KHRoaXMsdnQpfWdldFNldENvb2tpZVN0cmluZ3MoLi4udnQpe2NvbnN0IEF0PXZ0LnBvcCgpO3Z0LnB1c2goZnVuY3Rpb24oaHQsQnQpe2h0P0F0KGh0KTpBdChudWxsLEJ0Lm1hcChvbj0+''@;'; put 'put ''b24udG9TdHJpbmcoKSkpfSksdGhpcy5nZXRDb29raWVzLmFwcGx5KHRoaXMsdnQpfXNlcmlhbGl6ZSh2dCl7bGV0IEF0PXRoaXMuc3RvcmUuY29uc3RydWN0b3IubmFtZTsiT2JqZWN0Ij09PUF0JiYoQXQ9bnVsbCk7Y29uc3QgaHQ9e3ZlcnNpb246YHRvdWdoLWNvb2tpZUAke0p9YCxzdG9y''@;'; put 'put ''ZVR5cGU6QXQscmVqZWN0UHVibGljU3VmZml4ZXM6ISF0aGlzLnJlamVjdFB1YmxpY1N1ZmZpeGVzLGNvb2tpZXM6W119O2lmKCF0aGlzLnN0b3JlLmdldEFsbENvb2tpZXN8fCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLnN0b3JlLmdldEFsbENvb2tpZXMpcmV0dXJuIHZ0KG5ldyBFcnJvcigi''@;'; put 'put ''c3RvcmUgZG9lcyBub3Qgc3VwcG9ydCBnZXRBbGxDb29raWVzIGFuZCBjYW5ub3QgYmUgc2VyaWFsaXplZCIpKTt0aGlzLnN0b3JlLmdldEFsbENvb2tpZXMoKEJ0LG9uKT0+QnQ/dnQoQnQpOihodC5jb29raWVzPW9uLm1hcChfdD0+KGRlbGV0ZShfdD1fdCBpbnN0YW5jZW9mICRlP190LnRv''@;'; put 'put ''SlNPTigpOl90KS5jcmVhdGlvbkluZGV4LF90KSksdnQobnVsbCxodCkpKX10b0pTT04oKXtyZXR1cm4gdGhpcy5zZXJpYWxpemVTeW5jKCl9X2ltcG9ydENvb2tpZXModnQsQXQpe2xldCBodD12dC5jb29raWVzO2lmKCFodHx8IUFycmF5LmlzQXJyYXkoaHQpKXJldHVybiBBdChuZXcgRXJy''@;'; put 'put ''b3IoInNlcmlhbGl6ZWQgamFyIGhhcyBubyBjb29raWVzIGFycmF5IikpO2h0PWh0LnNsaWNlKCk7Y29uc3QgQnQ9b249PntpZihvbilyZXR1cm4gQXQob24pO2lmKCFodC5sZW5ndGgpcmV0dXJuIEF0KG9uLHRoaXMpO2xldCBfdDt0cnl7X3Q9Q2UoaHQuc2hpZnQoKSl9Y2F0Y2godHQpe3Jl''@;'; put 'put ''dHVybiBBdCh0dCl9aWYobnVsbD09PV90KXJldHVybiBCdChudWxsKTt0aGlzLnN0b3JlLnB1dENvb2tpZShfdCxCdCl9O0J0KCl9Y2xvbmUodnQsQXQpezE9PT1hcmd1bWVudHMubGVuZ3RoJiYoQXQ9dnQsdnQ9bnVsbCksdGhpcy5zZXJpYWxpemUoKGh0LEJ0KT0+e2lmKGh0KXJldHVybiBB''@;'; put 'put ''dChodCk7Z3QuZGVzZXJpYWxpemUoQnQsdnQsQXQpfSl9Y2xvbmVTeW5jKHZ0KXtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5fY2xvbmVTeW5jKCk7aWYoIXZ0LnN5bmNocm9ub3VzKXRocm93IG5ldyBFcnJvcigiQ29va2llSmFyIGNsb25lIGRlc3RpbmF0aW9uIHN0b3Jl''@;'; put 'put ''IGlzIG5vdCBzeW5jaHJvbm91czsgdXNlIGFzeW5jIEFQSSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzLl9jbG9uZVN5bmModnQpfXJlbW92ZUFsbENvb2tpZXModnQpe2NvbnN0IEF0PXRoaXMuc3RvcmU7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEF0LnJlbW92ZUFsbENvb2tpZXMmJkF0LnJlbW92''@;'; put 'put ''ZUFsbENvb2tpZXMhPT1OLnByb3RvdHlwZS5yZW1vdmVBbGxDb29raWVzKXJldHVybiBBdC5yZW1vdmVBbGxDb29raWVzKHZ0KTtBdC5nZXRBbGxDb29raWVzKChodCxCdCk9PntpZihodClyZXR1cm4gdnQoaHQpO2lmKDA9PT1CdC5sZW5ndGgpcmV0dXJuIHZ0KG51bGwpO2xldCBvbj0wO2Nv''@;'; put 'put ''bnN0IF90PVtdO2Z1bmN0aW9uIHR0KGV0KXtpZihldCYmX3QucHVzaChldCksb24rKyxvbj09PUJ0Lmxlbmd0aClyZXR1cm4gdnQoX3QubGVuZ3RoP190WzBdOm51bGwpfUJ0LmZvckVhY2goZXQ9PntBdC5yZW1vdmVDb29raWUoZXQuZG9tYWluLGV0LnBhdGgsZXQua2V5LHR0KX0pfSl9c3Rh''@;'; put 'put ''dGljIGRlc2VyaWFsaXplKHZ0LEF0LGh0KXtsZXQgQnQ7aWYoMyE9PWFyZ3VtZW50cy5sZW5ndGgmJihodD1BdCxBdD1udWxsKSwic3RyaW5nIj09dHlwZW9mIHZ0KXtpZihCdD15ZSh2dCksQnQgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gaHQoQnQpfWVsc2UgQnQ9dnQ7Y29uc3Qgb249bmV3''@;'; put 'put ''IGd0KEF0LEJ0LnJlamVjdFB1YmxpY1N1ZmZpeGVzKTtvbi5faW1wb3J0Q29va2llcyhCdCxfdD0+e2lmKF90KXJldHVybiBodChfdCk7aHQobnVsbCxvbil9KX1zdGF0aWMgZGVzZXJpYWxpemVTeW5jKHZ0LEF0KXtjb25zdCBodD0ic3RyaW5nIj09dHlwZW9mIHZ0P0pTT04ucGFyc2UodnQp''@;'; put 'put ''OnZ0LEJ0PW5ldyBndChBdCxodC5yZWplY3RQdWJsaWNTdWZmaXhlcyk7aWYoIUJ0LnN0b3JlLnN5bmNocm9ub3VzKXRocm93IG5ldyBFcnJvcigiQ29va2llSmFyIHN0b3JlIGlzIG5vdCBzeW5jaHJvbm91czsgdXNlIGFzeW5jIEFQSSBpbnN0ZWFkLiIpO3JldHVybiBCdC5faW1wb3J0Q29v''@;'; put 'put ''a2llc1N5bmMoaHQpLEJ0fX1mdW5jdGlvbiB3dChtdCl7cmV0dXJuIGZ1bmN0aW9uKC4uLnZ0KXtpZighdGhpcy5zdG9yZS5zeW5jaHJvbm91cyl0aHJvdyBuZXcgRXJyb3IoIkNvb2tpZUphciBzdG9yZSBpcyBub3Qgc3luY2hyb25vdXM7IHVzZSBhc3luYyBBUEkgaW5zdGVhZC4iKTtsZXQg''@;'; put 'put ''QXQsaHQ7aWYodGhpc1ttdF0oLi4udnQsKEJ0LG9uKT0+e0F0PUJ0LGh0PW9ufSksQXQpdGhyb3cgQXQ7cmV0dXJuIGh0fX1ndC5mcm9tSlNPTj1ndC5kZXNlcmlhbGl6ZVN5bmMsWyJfaW1wb3J0Q29va2llcyIsImNsb25lIiwiZ2V0Q29va2llcyIsImdldENvb2tpZVN0cmluZyIsImdldFNl''@;'; put 'put ''dENvb2tpZVN0cmluZ3MiLCJyZW1vdmVBbGxDb29raWVzIiwic2VyaWFsaXplIiwic2V0Q29va2llIl0uZm9yRWFjaChtdD0+e2d0LnByb3RvdHlwZVttdF09c2UoZ3QucHJvdG90eXBlW210XSl9KSxndC5kZXNlcmlhbGl6ZT1zZShndC5kZXNlcmlhbGl6ZSksUS52ZXJzaW9uPUosUS5Db29r''@;'; put 'put ''aWVKYXI9Z3QsUS5Db29raWU9JGUsUS5TdG9yZT1OLFEuTWVtb3J5Q29va2llU3RvcmU9dGUsUS5wYXJzZURhdGU9bmUsUS5mb3JtYXREYXRlPXgsUS5wYXJzZT1GLFEuZnJvbUpTT049Q2UsUS5kb21haW5NYXRjaD1WLFEuZGVmYXVsdFBhdGg9VCxRLnBhdGhNYXRjaD1LLFEuZ2V0UHVibGlj''@;'; put 'put ''U3VmZml4PVcuZ2V0UHVibGljU3VmZml4LFEuY29va2llQ29tcGFyZT1EZSxRLnBlcm11dGVEb21haW49aig3MzI0KS5wZXJtdXRlRG9tYWluLFEucGVybXV0ZVBhdGg9ZnVuY3Rpb24obXQpe2lmKCIvIj09PW10KXJldHVyblsiLyJdO2NvbnN0IHZ0PVttdF07Zm9yKDttdC5sZW5ndGg+MTsp''@;'; put 'put ''e2NvbnN0IEF0PW10Lmxhc3RJbmRleE9mKCIvIik7aWYoMD09PUF0KWJyZWFrO210PW10LnN1YnN0cigwLEF0KSx2dC5wdXNoKG10KX1yZXR1cm4gdnQucHVzaCgiLyIpLHZ0fSxRLmNhbm9uaWNhbERvbWFpbj1QLFEuUHJlZml4U2VjdXJpdHlFbnVtPU1lfSw1NzYxOihVLFEsaik9PnsidXNl''@;'; put 'put ''IHN0cmljdCI7Y29uc3R7ZnJvbUNhbGxiYWNrOnJlfT1qKDcwNDEpLGFlPWooMjIyNCkueSxZPWooNzMyNCkucGVybXV0ZURvbWFpbixXPWooODk3MSkuVSxOPWooOTUzOSk7Y2xhc3MgdGUgZXh0ZW5kcyBhZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5zeW5jaHJvbm91cz0hMCx0aGlz''@;'; put 'put ''LmlkeD17fSxOLmluc3BlY3QuY3VzdG9tJiYodGhpc1tOLmluc3BlY3QuY3VzdG9tXT10aGlzLmluc3BlY3QpfWluc3BlY3QoKXtyZXR1cm5geyBpZHg6ICR7Ti5pbnNwZWN0KHRoaXMuaWR4LCExLDIpfSB9YH1maW5kQ29va2llKEosc2Usb2UsY2Upe3JldHVybiBjZShudWxsLHRoaXMuaWR4''@;'; put 'put ''W0pdJiZ0aGlzLmlkeFtKXVtzZV0/dGhpcy5pZHhbSl1bc2VdW29lXXx8bnVsbDp2b2lkIDApfWZpbmRDb29raWVzKEosc2Usb2UsY2Upe2NvbnN0IGRlPVtdO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBvZSYmKGNlPW9lLG9lPSExKSwhSilyZXR1cm4gY2UobnVsbCxbXSk7bGV0IHZlO3ZlPXNl''@;'; put 'put ''P2Z1bmN0aW9uKFNlKXtPYmplY3Qua2V5cyhTZSkuZm9yRWFjaChJZT0+e2lmKFcoc2UsSWUpKXtjb25zdCBUZT1TZVtJZV07Zm9yKGNvbnN0IE1lIGluIFRlKWRlLnB1c2goVGVbTWVdKX19KX06ZnVuY3Rpb24oU2Upe2Zvcihjb25zdCBJZSBpbiBTZSl7Y29uc3QgVGU9U2VbSWVdO2Zvcihj''@;'; put 'put ''b25zdCBNZSBpbiBUZSlkZS5wdXNoKFRlW01lXSl9fTtjb25zdCBBZT1ZKEosb2UpfHxbSl0sa2U9dGhpcy5pZHg7QWUuZm9yRWFjaChTZT0+e2NvbnN0IEllPWtlW1NlXTtJZSYmdmUoSWUpfSksY2UobnVsbCxkZSl9cHV0Q29va2llKEosc2Upe3RoaXMuaWR4W0ouZG9tYWluXXx8KHRoaXMu''@;'; put 'put ''aWR4W0ouZG9tYWluXT17fSksdGhpcy5pZHhbSi5kb21haW5dW0oucGF0aF18fCh0aGlzLmlkeFtKLmRvbWFpbl1bSi5wYXRoXT17fSksdGhpcy5pZHhbSi5kb21haW5dW0oucGF0aF1bSi5rZXldPUosc2UobnVsbCl9dXBkYXRlQ29va2llKEosc2Usb2Upe3RoaXMucHV0Q29va2llKHNlLG9l''@;'; put 'put ''KX1yZW1vdmVDb29raWUoSixzZSxvZSxjZSl7dGhpcy5pZHhbSl0mJnRoaXMuaWR4W0pdW3NlXSYmdGhpcy5pZHhbSl1bc2VdW29lXSYmZGVsZXRlIHRoaXMuaWR4W0pdW3NlXVtvZV0sY2UobnVsbCl9cmVtb3ZlQ29va2llcyhKLHNlLG9lKXtyZXR1cm4gdGhpcy5pZHhbSl0mJihzZT9kZWxl''@;'; put 'put ''dGUgdGhpcy5pZHhbSl1bc2VdOmRlbGV0ZSB0aGlzLmlkeFtKXSksb2UobnVsbCl9cmVtb3ZlQWxsQ29va2llcyhKKXtyZXR1cm4gdGhpcy5pZHg9e30sSihudWxsKX1nZXRBbGxDb29raWVzKEope2NvbnN0IHNlPVtdLG9lPXRoaXMuaWR4O09iamVjdC5rZXlzKG9lKS5mb3JFYWNoKGNlPT57''@;'; put 'put ''T2JqZWN0LmtleXMob2VbY2VdKS5mb3JFYWNoKGRlPT57T2JqZWN0LmtleXMob2VbY2VdW2RlXSkuZm9yRWFjaCh2ZT0+e251bGwhPT12ZSYmc2UucHVzaChvZVtjZV1bZGVdW3ZlXSl9KX0pfSksc2Uuc29ydCgoY2UsZGUpPT4oY2UuY3JlYXRpb25JbmRleHx8MCktKGRlLmNyZWF0aW9uSW5k''@;'; put 'put ''ZXh8fDApKSxKKG51bGwsc2UpfX1bImZpbmRDb29raWUiLCJmaW5kQ29va2llcyIsInB1dENvb2tpZSIsInVwZGF0ZUNvb2tpZSIsInJlbW92ZUNvb2tpZSIsInJlbW92ZUNvb2tpZXMiLCJyZW1vdmVBbGxDb29raWVzIiwiZ2V0QWxsQ29va2llcyJdLmZvckVhY2goSz0+e3RlW0tdPXJlKHRl''@;'; put 'put ''LnByb3RvdHlwZVtLXSl9KSxRLm09dGV9LDg5NzE6KFUsUSk9PnsidXNlIHN0cmljdCI7US5VPWZ1bmN0aW9uKGoscmUpe3JldHVybiByZT09PWp8fDA9PT1qLmluZGV4T2YocmUpJiYoIi8iPT09cmUuc3Vic3RyKC0xKXx8Ii8iPT09ai5zdWJzdHIocmUubGVuZ3RoLDEpKX19LDczMjQ6KFUs''@;'; put 'put ''USxqKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCByZT1qKDc1MiksYWU9WyJsb2NhbCJdO1EucGVybXV0ZURvbWFpbj1mdW5jdGlvbihZLFcpe2xldCBOPW51bGw7aWYoVyl7Y29uc3Qgc2U9WS5zcGxpdCgiLiIpO049YWUuaW5jbHVkZXMoc2Vbc2UubGVuZ3RoLTFdKT9gJHtzZVtzZS5sZW5ndGgt''@;'; put 'put ''Ml19LiR7c2Vbc2UubGVuZ3RoLTFdfWA6cmUuZ2V0UHVibGljU3VmZml4KFkpfWVsc2UgTj1yZS5nZXRQdWJsaWNTdWZmaXgoWSk7aWYoIU4pcmV0dXJuIG51bGw7aWYoTj09WSlyZXR1cm5bWV07Y29uc3QgdGU9WS5zbGljZSgwLC0oTi5sZW5ndGgrMSkpLnNwbGl0KCIuIikucmV2ZXJzZSgp''@;'; put 'put ''O2xldCBLPU47Y29uc3QgSj1bS107Zm9yKDt0ZS5sZW5ndGg7KUs9YCR7dGUuc2hpZnQoKX0uJHtLfWAsSi5wdXNoKEspO3JldHVybiBKfX0sNzUyOihVLFEsaik9PnsidXNlIHN0cmljdCI7Y29uc3QgcmU9aig2MjQ0KTtRLmdldFB1YmxpY1N1ZmZpeD1mdW5jdGlvbihhZSl7cmV0dXJuIHJl''@;'; put 'put ''LmdldChhZSl9fSwyMjI0OihVLFEpPT57InVzZSBzdHJpY3QiO1EueT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3luY2hyb25vdXM9ITF9ZmluZENvb2tpZShqLHJlLGFlLFkpe3Rocm93IG5ldyBFcnJvcigiZmluZENvb2tpZSBpcyBub3QgaW1wbGVtZW50ZWQiKX1maW5kQ29va2llcyhq''@;'; put 'put ''LHJlLGFlLFkpe3Rocm93IG5ldyBFcnJvcigiZmluZENvb2tpZXMgaXMgbm90IGltcGxlbWVudGVkIil9cHV0Q29va2llKGoscmUpe3Rocm93IG5ldyBFcnJvcigicHV0Q29va2llIGlzIG5vdCBpbXBsZW1lbnRlZCIpfXVwZGF0ZUNvb2tpZShqLHJlLGFlKXt0aHJvdyBuZXcgRXJyb3IoInVw''@;'; put 'put ''ZGF0ZUNvb2tpZSBpcyBub3QgaW1wbGVtZW50ZWQiKX1yZW1vdmVDb29raWUoaixyZSxhZSxZKXt0aHJvdyBuZXcgRXJyb3IoInJlbW92ZUNvb2tpZSBpcyBub3QgaW1wbGVtZW50ZWQiKX1yZW1vdmVDb29raWVzKGoscmUsYWUpe3Rocm93IG5ldyBFcnJvcigicmVtb3ZlQ29va2llcyBpcyBu''@;'; put 'put ''b3QgaW1wbGVtZW50ZWQiKX1yZW1vdmVBbGxDb29raWVzKGope3Rocm93IG5ldyBFcnJvcigicmVtb3ZlQWxsQ29va2llcyBpcyBub3QgaW1wbGVtZW50ZWQiKX1nZXRBbGxDb29raWVzKGope3Rocm93IG5ldyBFcnJvcigiZ2V0QWxsQ29va2llcyBpcyBub3QgaW1wbGVtZW50ZWQgKHRoZXJl''@;'; put 'put ''Zm9yZSBqYXIgY2Fubm90IGJlIHNlcmlhbGl6ZWQpIil9fX0sNDU2OlU9PntVLmV4cG9ydHM9IjQuMC4wIn0sNzA0MTooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtRLmZyb21DYWxsYmFjaz1mdW5jdGlvbihqKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKCl7aWYoImZ1bmN0''@;'; put 'put ''aW9uIiE9dHlwZW9mIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdKXJldHVybiBuZXcgUHJvbWlzZSgocmUsYWUpPT57YXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGhdPShZLFcpPT57aWYoWSlyZXR1cm4gYWUoWSk7cmUoVyl9LGFyZ3VtZW50cy5sZW5ndGgrKyxqLmFwcGx5KHRoaXMs''@;'; put 'put ''YXJndW1lbnRzKX0pO2ouYXBwbHkodGhpcyxhcmd1bWVudHMpfSwibmFtZSIse3ZhbHVlOmoubmFtZX0pfSxRLmZyb21Qcm9taXNlPWZ1bmN0aW9uKGope3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24oKXtjb25zdCByZT1hcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0x''@;'; put 'put ''XTtpZigiZnVuY3Rpb24iIT10eXBlb2YgcmUpcmV0dXJuIGouYXBwbHkodGhpcyxhcmd1bWVudHMpO2ouYXBwbHkodGhpcyxhcmd1bWVudHMpLnRoZW4oYWU9PnJlKG51bGwsYWUpLHJlKX0sIm5hbWUiLHt2YWx1ZTpqLm5hbWV9KX19LDY3MjpmdW5jdGlvbihVLFEsail7InVzZSBzdHJpY3Qi''@;'; put 'put ''O3ZhciByZT10aGlzJiZ0aGlzLl9fYXNzaWdufHxmdW5jdGlvbigpe3JldHVybiByZT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihLKXtmb3IodmFyIEosc2U9MSxvZT1hcmd1bWVudHMubGVuZ3RoO3NlPG9lO3NlKyspZm9yKHZhciBjZSBpbiBKPWFyZ3VtZW50c1tzZV0pT2JqZWN0LnByb3Rv''@;'; put 'put ''dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEosY2UpJiYoS1tjZV09SltjZV0pO3JldHVybiBLfSxyZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGFlPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihLLEosc2Usb2Upe3JldHVybiBuZXcoc2V8fChzZT1Qcm9taXNlKSkoZnVuY3Rpb24o''@;'; put 'put ''Y2UsZGUpe2Z1bmN0aW9uIHZlKFNlKXt0cnl7a2Uob2UubmV4dChTZSkpfWNhdGNoKEllKXtkZShJZSl9fWZ1bmN0aW9uIEFlKFNlKXt0cnl7a2Uob2UudGhyb3coU2UpKX1jYXRjaChJZSl7ZGUoSWUpfX1mdW5jdGlvbiBrZShTZSl7dmFyIEllO1NlLmRvbmU/Y2UoU2UudmFsdWUpOihJZT1T''@;'; put 'put ''ZS52YWx1ZSxJZSBpbnN0YW5jZW9mIHNlP0llOm5ldyBzZShmdW5jdGlvbihUZSl7VGUoSWUpfSkpLnRoZW4odmUsQWUpfWtlKChvZT1vZS5hcHBseShLLEp8fFtdKSkubmV4dCgpKX0pfSxZPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKEssSil7dmFyIHNlLG9lLGNlLGRlLHZl''@;'; put 'put ''PXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmNlWzBdKXRocm93IGNlWzFdO3JldHVybiBjZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBkZT17bmV4dDpBZSgwKSx0aHJvdzpBZSgxKSxyZXR1cm46QWUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihkZVtTeW1ib2wu''@;'; put 'put ''aXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxkZTtmdW5jdGlvbiBBZShrZSl7cmV0dXJuIGZ1bmN0aW9uKFNlKXtyZXR1cm4gZnVuY3Rpb24oSWUpe2lmKHNlKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3ZlOyl0''@;'; put 'put ''cnl7aWYoc2U9MSxvZSYmKGNlPTImSWVbMF0/b2UucmV0dXJuOkllWzBdP29lLnRocm93fHwoKGNlPW9lLnJldHVybikmJmNlLmNhbGwob2UpLDApOm9lLm5leHQpJiYhKGNlPWNlLmNhbGwob2UsSWVbMV0pKS5kb25lKXJldHVybiBjZTtzd2l0Y2gob2U9MCxjZSYmKEllPVsyJkllWzBdLGNl''@;'; put 'put ''LnZhbHVlXSksSWVbMF0pe2Nhc2UgMDpjYXNlIDE6Y2U9SWU7YnJlYWs7Y2FzZSA0OnJldHVybiB2ZS5sYWJlbCsrLHt2YWx1ZTpJZVsxXSxkb25lOiExfTtjYXNlIDU6dmUubGFiZWwrKyxvZT1JZVsxXSxJZT1bMF07Y29udGludWU7Y2FzZSA3OkllPXZlLm9wcy5wb3AoKSx2ZS50cnlzLnBv''@;'; put 'put ''cCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoY2U9KGNlPXZlLnRyeXMpLmxlbmd0aD4wJiZjZVtjZS5sZW5ndGgtMV0pfHw2IT09SWVbMF0mJjIhPT1JZVswXSkpe3ZlPTA7Y29udGludWV9aWYoMz09PUllWzBdJiYoIWNlfHxJZVsxXT5jZVswXSYmSWVbMV08Y2VbM10pKXt2ZS5sYWJlbD1J''@;'; put 'put ''ZVsxXTticmVha31pZig2PT09SWVbMF0mJnZlLmxhYmVsPGNlWzFdKXt2ZS5sYWJlbD1jZVsxXSxjZT1JZTticmVha31pZihjZSYmdmUubGFiZWw8Y2VbMl0pe3ZlLmxhYmVsPWNlWzJdLHZlLm9wcy5wdXNoKEllKTticmVha31jZVsyXSYmdmUub3BzLnBvcCgpLHZlLnRyeXMucG9wKCk7Y29u''@;'; put 'put ''dGludWV9SWU9Si5jYWxsKEssdmUpfWNhdGNoKFRlKXtJZT1bNixUZV0sb2U9MH1maW5hbGx5e3NlPWNlPTB9aWYoNSZJZVswXSl0aHJvdyBJZVsxXTtyZXR1cm57dmFsdWU6SWVbMF0/SWVbMV06dm9pZCAwLGRvbmU6ITB9fShba2UsU2VdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwi''@;'; put 'put ''X19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5Db250ZXh0TWFuYWdlcj12b2lkIDA7dmFyIFc9aig1OTI4KSxOPWooOTc3OCksdGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBLKEosc2Upe3RoaXMuc2VydmVyVXJsPUosdGhpcy5yZXF1ZXN0Q2xpZW50PXNlLHRoaXMuZGVmYXVsdENvbXB1dGVDb250''@;'; put 'put ''ZXh0cz1bIkNBUyBGb3JtYXRzIHNlcnZpY2UgY29tcHV0ZSBjb250ZXh0IiwiRGF0YSBNaW5pbmcgY29tcHV0ZSBjb250ZXh0IiwiSW1wb3J0IDkgc2VydmljZSBjb21wdXRlIGNvbnRleHQiLCJTQVMgSm9iIEV4ZWN1dGlvbiBjb21wdXRlIGNvbnRleHQiLCJTQVMgTW9kZWwgTWFuYWdlciBj''@;'; put 'put ''b21wdXRlIGNvbnRleHQiLCJTQVMgU3R1ZGlvIGNvbXB1dGUgY29udGV4dCIsIlNBUyBWaXN1YWwgRm9yZWNhc3RpbmcgY29tcHV0ZSBjb250ZXh0Il0sdGhpcy5kZWZhdWx0TGF1bmNoZXJDb250ZXh0cz1bIkNBUyBGb3JtYXRzIHNlcnZpY2UgbGF1bmNoZXIgY29udGV4dCIsIkRhdGEgTWlu''@;'; put 'put ''aW5nIGxhdW5jaGVyIGNvbnRleHQiLCJJbXBvcnQgOSBzZXJ2aWNlIGxhdW5jaGVyIGNvbnRleHQiLCJKb2IgRmxvdyBFeGVjdXRpb24gbGF1bmNoZXIgY29udGV4dCIsIlNBUyBKb2IgRXhlY3V0aW9uIGxhdW5jaGVyIGNvbnRleHQiLCJTQVMgTW9kZWwgTWFuYWdlciBsYXVuY2hlciBjb250''@;'; put 'put ''ZXh0IiwiU0FTIFN0dWRpbyBsYXVuY2hlciBjb250ZXh0IiwiU0FTIFZpc3VhbCBGb3JlY2FzdGluZyBsYXVuY2hlciBjb250ZXh0Il0sSiYmKDAsVy5pc1VybCkoSil9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShLLnByb3RvdHlwZSwiZ2V0RGVmYXVsdENvbXB1dGVDb250ZXh0cyIs''@;'; put 'put ''e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRlZmF1bHRDb21wdXRlQ29udGV4dHN9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEsucHJvdG90eXBlLCJnZXREZWZhdWx0TGF1bmNoZXJDb250ZXh0cyIse2dldDpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmRlZmF1bHRMYXVuY2hlckNvbnRleHRzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLEsucHJvdG90eXBlLmdldENvbXB1dGVDb250ZXh0cz1mdW5jdGlvbihKKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHNlO3JldHVybiBZ''@;'; put 'put ''KHRoaXMsZnVuY3Rpb24ob2Upe3N3aXRjaChvZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvY29tcHV0ZS9jb250ZXh0cz9saW1pdD0xMDAwMCIpLEopLmNhdGNoKGZ1bmN0aW9uKGNlKXt0aHJvdygwLE4u''@;'; put 'put ''cHJlZml4TWVzc2FnZSkoY2UsIkVycm9yIHdoaWxlIGdldHRpbmcgY29tcHV0ZSBjb250ZXh0cy4gIil9KV07Y2FzZSAxOnJldHVyblsyLCgoc2U9b2Uuc2VudCgpLnJlc3VsdCkmJnNlLml0ZW1zP3NlLml0ZW1zOltdKS5tYXAoZnVuY3Rpb24oY2Upe3JldHVybntjcmVhdGVkQnk6Y2UuY3Jl''@;'; put 'put ''YXRlZEJ5LGlkOmNlLmlkLG5hbWU6Y2UubmFtZSx2ZXJzaW9uOmNlLnZlcnNpb24sYXR0cmlidXRlczp7fX19KV19fSl9KX0sSy5wcm90b3R5cGUuZ2V0TGF1bmNoZXJDb250ZXh0cz1mdW5jdGlvbihKKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHNlO3Jl''@;'; put 'put ''dHVybiBZKHRoaXMsZnVuY3Rpb24ob2Upe3N3aXRjaChvZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvbGF1bmNoZXIvY29udGV4dHM/bGltaXQ9MTAwMDAiKSxKKS5jYXRjaChmdW5jdGlvbihjZSl7dGhy''@;'; put 'put ''b3coMCxOLnByZWZpeE1lc3NhZ2UpKGNlLCJFcnJvciB3aGlsZSBnZXR0aW5nIGxhdW5jaGVyIGNvbnRleHRzLiAiKX0pXTtjYXNlIDE6cmV0dXJuWzIsKChzZT1vZS5zZW50KCkucmVzdWx0KSYmc2UuaXRlbXM/c2UuaXRlbXM6W10pLm1hcChmdW5jdGlvbihjZSl7cmV0dXJue2NyZWF0ZWRC''@;'; put 'put ''eTpjZS5jcmVhdGVkQnksaWQ6Y2UuaWQsbmFtZTpjZS5uYW1lLHZlcnNpb246Y2UudmVyc2lvbixhdHRyaWJ1dGVzOnt9fX0pXX19KX0pfSxLLnByb3RvdHlwZS5jcmVhdGVDb21wdXRlQ29udGV4dD1mdW5jdGlvbihKLHNlLG9lLGNlLGRlLHZlKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9p''@;'; put 'put ''ZCAwLGZ1bmN0aW9uKCl7dmFyIEFlLGtlLFNlLEllLFRlO3JldHVybiBZKHRoaXMsZnVuY3Rpb24oTWUpe3N3aXRjaChNZS5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLnZhbGlkYXRlQ29udGV4dE5hbWUoSiksdGhpcy5pc0RlZmF1bHRDb250ZXh0KEosdGhpcy5kZWZhdWx0Q29tcHV0ZUNv''@;'; put 'put ''bnRleHRzLCJDb21wdXRlIGNvbnRleHQgJyIuY29uY2F0KEosIicgYWxyZWFkeSBleGlzdHMuIikpLFs0LHRoaXMuZ2V0Q29tcHV0ZUNvbnRleHRzKGRlKV07Y2FzZSAxOmlmKE1lLnNlbnQoKS5maW5kKGZ1bmN0aW9uKGhlKXtyZXR1cm4gaGUubmFtZT09PUp9KSl0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''IkNvbXB1dGUgY29udGV4dCAnIi5jb25jYXQoSiwiJyBhbHJlYWR5IGV4aXN0cy4iKSk7cmV0dXJuIHNlP3RoaXMuZGVmYXVsdExhdW5jaGVyQ29udGV4dHMuaW5jbHVkZXMoc2UpP1szLDRdOls0LHRoaXMuZ2V0TGF1bmNoZXJDb250ZXh0cyhkZSldOlszLDRdO2Nhc2UgMjpyZXR1cm4gTWUu''@;'; put 'put ''c2VudCgpLmZpbmQoZnVuY3Rpb24oaGUpe3JldHVybiBoZS5uYW1lPT09c2V9KT9bMyw0XTooQWU9IlRoZSBsYXVuY2hlciBjb250ZXh0IGZvciAiLmNvbmNhdChzZSksWzQsdGhpcy5jcmVhdGVMYXVuY2hlckNvbnRleHQoc2UsQWUsImRpcmVjdCIsZGUpLmNhdGNoKGZ1bmN0aW9uKGhlKXt0''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoIkVycm9yIHdoaWxlIGNyZWF0aW5nIGxhdW5jaGVyIGNvbnRleHQuICIuY29uY2F0KGhlKSl9KV0pO2Nhc2UgMzppZighKGtlPU1lLnNlbnQoKSl8fCFrZS5uYW1lKXRocm93IG5ldyBFcnJvcigiRXJyb3Igd2hpbGUgY3JlYXRpbmcgbGF1bmNoZXIgY29udGV4dC4i''@;'; put 'put ''KTtzZT1rZS5uYW1lLE1lLmxhYmVsPTQ7Y2FzZSA0OnJldHVybiBTZT17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSxkZSYmKFNlLkF1dGhvcml6YXRpb249IkJlYXJlciAiLmNvbmNhdChkZSkpLEllPXtyZXVzZVNlcnZlclByb2Nlc3NlczohMH0sb2UmJihJZT1yZShyZSh7''@;'; put 'put ''fSxJZSkse3J1blNlcnZlckFzOm9lfSkpLFRlPXtuYW1lOkosbGF1bmNoQ29udGV4dDp7Y29udGV4dE5hbWU6c2V8fCIifSxhdHRyaWJ1dGVzOkllfSx2ZSYmdmUubGVuZ3RoP1RlLmF1dGhvcml6ZWRVc2Vycz12ZTpUZS5hdXRob3JpemVBbGxBdXRoZW50aWNhdGVkVXNlcnM9ITAsY2UmJihU''@;'; put 'put ''ZS5lbnZpcm9ubWVudD17YXV0b0V4ZWNMaW5lczpjZX0pLFs0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2NvbXB1dGUvY29udGV4dHMiKSxUZSxkZSkuY2F0Y2goZnVuY3Rpb24oaGUpe3Rocm93KDAsTi5wcmVmaXhNZXNzYWdlKShoZSwiRXJy''@;'; put 'put ''b3Igd2hpbGUgY3JlYXRpbmcgY29tcHV0ZSBjb250ZXh0LiAiKX0pXTtjYXNlIDU6cmV0dXJuWzIsTWUuc2VudCgpLnJlc3VsdF19fSl9KX0sSy5wcm90b3R5cGUuY3JlYXRlTGF1bmNoZXJDb250ZXh0PWZ1bmN0aW9uKEosc2Usb2UsY2Upe3JldHVybiB2b2lkIDA9PT1vZSYmKG9lPSJkaXJl''@;'; put 'put ''Y3QiKSxhZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZGUsdmU7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihBZSl7c3dpdGNoKEFlLmxhYmVsKXtjYXNlIDA6aWYoIUopdGhyb3cgbmV3IEVycm9yKCJDb250ZXh0IG5hbWUgaXMgcmVxdWlyZWQuIik7cmV0dXJuIHRoaXMuaXNE''@;'; put 'put ''ZWZhdWx0Q29udGV4dChKLHRoaXMuZGVmYXVsdExhdW5jaGVyQ29udGV4dHMsIkxhdW5jaGVyIGNvbnRleHQgJyIuY29uY2F0KEosIicgYWxyZWFkeSBleGlzdHMuIikpLFs0LHRoaXMuZ2V0TGF1bmNoZXJDb250ZXh0cyhjZSldO2Nhc2UgMTppZihBZS5zZW50KCkuZmluZChmdW5jdGlvbihr''@;'; put 'put ''ZSl7cmV0dXJuIGtlLm5hbWU9PT1KfSkpdGhyb3cgbmV3IEVycm9yKCJMYXVuY2hlciBjb250ZXh0ICciLmNvbmNhdChKLCInIGFscmVhZHkgZXhpc3RzLiIpKTtyZXR1cm4gZGU9eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sY2UmJihkZS5BdXRob3JpemF0aW9uPSJCZWFy''@;'; put 'put ''ZXIgIi5jb25jYXQoY2UpKSx2ZT17bmFtZTpKLGRlc2NyaXB0aW9uOnNlLGxhdW5jaFR5cGU6b2V9LFs0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2xhdW5jaGVyL2NvbnRleHRzIiksdmUsY2UpLmNhdGNoKGZ1bmN0aW9uKGtlKXt0aHJvdygw''@;'; put 'put ''LE4ucHJlZml4TWVzc2FnZSkoa2UsIkVycm9yIHdoaWxlIGNyZWF0aW5nIGxhdW5jaGVyIGNvbnRleHQuICIpfSldO2Nhc2UgMjpyZXR1cm5bMixBZS5zZW50KCkucmVzdWx0XX19KX0pfSxLLnByb3RvdHlwZS5lZGl0Q29tcHV0ZUNvbnRleHQ9ZnVuY3Rpb24oSixzZSxvZSl7cmV0dXJuIGFl''@;'; put 'put ''KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBjZSxkZSx2ZSxBZTtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKGtlKXtzd2l0Y2goa2UubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy52YWxpZGF0ZUNvbnRleHROYW1lKEopLHRoaXMuaXNEZWZhdWx0Q29udGV4dChKLHRoaXMuZGVm''@;'; put 'put ''YXVsdENvbXB1dGVDb250ZXh0cywiRWRpdGluZyBkZWZhdWx0IFNBUyBjb21wdXRlIGNvbnRleHRzIGlzIG5vdCBhbGxvd2VkLiIsITApLFs0LHRoaXMuZ2V0Q29tcHV0ZUNvbnRleHRCeU5hbWUoSixvZSldO2Nhc2UgMTpyZXR1cm4oY2U9a2Uuc2VudCgpKT9bMywzXTpbNCx0aGlzLmdldENv''@;'; put 'put ''bXB1dGVDb250ZXh0QnlJZChzZS5pZCxvZSldO2Nhc2UgMjpjZT1rZS5zZW50KCksa2UubGFiZWw9MztjYXNlIDM6cmV0dXJuWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsIi9jb21wdXRlL2NvbnRleHRzLyIpLmNvbmNhdChjZS5pZCksb2UpLmNh''@;'; put 'put ''dGNoKGZ1bmN0aW9uKFNlKXt0aHJvdyBTZSYmNDA0PT09U2Uuc3RhdHVzP25ldyBFcnJvcigiVGhlIGNvbnRleHQgJyIuY29uY2F0KEosIicgd2FzIG5vdCBmb3VuZCBvbiB0aGlzIHNlcnZlci4iKSk6U2V9KV07Y2FzZSA0OnJldHVybiBkZT1rZS5zZW50KCksQWU9ZGUuZXRhZyxbNCx0aGlz''@;'; put 'put ''LnJlcXVlc3RDbGllbnQucHV0KCIvY29tcHV0ZS9jb250ZXh0cy8iLmNvbmNhdCgodmU9ZGUucmVzdWx0KS5pZCkscmUocmUocmUoe30sdmUpLHNlKSx7YXR0cmlidXRlczpyZShyZSh7fSx2ZS5hdHRyaWJ1dGVzKSxzZS5hdHRyaWJ1dGVzKX0pLG9lLHsiSWYtTWF0Y2giOkFlfSldO2Nhc2Ug''@;'; put 'put ''NTpyZXR1cm5bMixrZS5zZW50KCldfX0pfSl9LEsucHJvdG90eXBlLmdldENvbXB1dGVDb250ZXh0QnlOYW1lPWZ1bmN0aW9uKEosc2Upe3JldHVybiBhZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgb2U7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihjZSl7c3dpdGNoKGNlLmxh''@;'; put 'put ''YmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsJy9jb21wdXRlL2NvbnRleHRzP2ZpbHRlcj1lcShuYW1lLCAiJykuY29uY2F0KEosJyIpJyksc2UpLmNhdGNoKGZ1bmN0aW9uKGRlKXt0aHJvdygwLE4ucHJlZml4TWVz''@;'; put 'put ''c2FnZSkoZGUsIkVycm9yIHdoaWxlIGdldHRpbmcgY29tcHV0ZSBjb250ZXh0IGJ5IG5hbWUuICIpfSldO2Nhc2UgMTppZighKG9lPWNlLnNlbnQoKS5yZXN1bHQpfHwhb2UuaXRlbXN8fCFvZS5pdGVtcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJUaGUgY29udGV4dCAnIi5jb25jYXQoSiwi''@;'; put 'put ''JyB3YXMgbm90IGZvdW5kIGF0ICciKS5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsIicuIikpO3JldHVyblsyLG9lLml0ZW1zWzBdXX19KX0pfSxLLnByb3RvdHlwZS5nZXRDb21wdXRlQ29udGV4dEJ5SWQ9ZnVuY3Rpb24oSixzZSl7cmV0dXJuIGFlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24ob2Upe3N3aXRjaChvZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvY29tcHV0ZS9jb250ZXh0cy8iKS5jb25jYXQoSiksc2UpLmNhdGNoKGZ1bmN0aW9uKGNl''@;'; put 'put ''KXt0aHJvdygwLE4ucHJlZml4TWVzc2FnZSkoY2UsIkVycm9yIHdoaWxlIGdldHRpbmcgY29tcHV0ZSBjb250ZXh0IGJ5IGlkLiAiKX0pXTtjYXNlIDE6cmV0dXJuWzIsb2Uuc2VudCgpLnJlc3VsdF19fSl9KX0sSy5wcm90b3R5cGUuZ2V0RXhlY3V0YWJsZUNvbnRleHRzPWZ1bmN0aW9uKEos''@;'; put 'put ''c2Upe3JldHVybiBhZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgb2UsY2UsZGUsdmUsQWUsa2UsU2UsVGUsTWU7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihoZSl7c3dpdGNoKGhlLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiIi5jb25j''@;'; put 'put ''YXQodGhpcy5zZXJ2ZXJVcmwsIi9jb21wdXRlL2NvbnRleHRzP2xpbWl0PTEwMDAwIiksbnVsbD09c2U/dm9pZCAwOnNlLmFjY2Vzc190b2tlbikuY2F0Y2goZnVuY3Rpb24oTyl7dGhyb3coMCxOLnByZWZpeE1lc3NhZ2UpKE8sIkVycm9yIHdoaWxlIGZldGNoaW5nIGNvbXB1dGUgY29udGV4''@;'; put 'put ''dHMuIil9KV07Y2FzZSAxOm9lPWhlLnNlbnQoKS5yZXN1bHQsZGU9W10sdmU9KGNlPW9lLml0ZW1zfHxbXSkubWFwKGZ1bmN0aW9uKE8pe3ZhciB6PVsiJXB1dCAmPXN5c3VzZXJpZDsiXTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gSigidGVzdC0iLmNvbmNhdChPLm5hbWUpLHosTy5uYW1l''@;'; put 'put ''LHNlLG51bGwsITEsITAsITApLmNhdGNoKGZ1bmN0aW9uKGVlKXtyZXR1cm4gZWV9KX19KSxBZT1bXSxrZT0wLFNlPXZlLGhlLmxhYmVsPTI7Y2FzZSAyOnJldHVybiBrZTxTZS5sZW5ndGg/KE1lPShUZT1BZSkucHVzaCxbNCwoMCxTZVtrZV0pKCldKTpbMyw1XTtjYXNlIDM6TWUuYXBwbHko''@;'; put 'put ''VGUsW2hlLnNlbnQoKV0pLGhlLmxhYmVsPTQ7Y2FzZSA0OnJldHVybiBrZSsrLFszLDJdO2Nhc2UgNTpyZXR1cm4gQWUuZm9yRWFjaChmdW5jdGlvbihPLHope2lmKE8mJk8ubG9nKXRyeXt2YXIgbmU9IiIseD1PLmxvZy5zcGxpdCgiXG4iKS5maW5kKGZ1bmN0aW9uKFApe3JldHVybiBQLnN0''@;'; put 'put ''YXJ0c1dpdGgoIlNZU1VTRVJJRD0iKX0pO3gmJihuZT14LnJlcGxhY2UoIlNZU1VTRVJJRD0iLCIiKSxkZS5wdXNoKHtjcmVhdGVkQnk6Y2Vbel0uY3JlYXRlZEJ5LGlkOmNlW3pdLmlkLG5hbWU6Y2Vbel0ubmFtZSx2ZXJzaW9uOmNlW3pdLnZlcnNpb24sYXR0cmlidXRlczp7c3lzVXNlcklk''@;'; put 'put ''Om5lfX0pKX1jYXRjaChQKXt0aHJvdyBQfX0pLFsyLGRlXX19KX0pfSxLLnByb3RvdHlwZS5kZWxldGVDb21wdXRlQ29udGV4dD1mdW5jdGlvbihKLHNlKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG9lLGNlO3JldHVybiBZKHRoaXMsZnVuY3Rpb24oZGUp''@;'; put 'put ''e3N3aXRjaChkZS5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLnZhbGlkYXRlQ29udGV4dE5hbWUoSiksdGhpcy5pc0RlZmF1bHRDb250ZXh0KEosdGhpcy5kZWZhdWx0Q29tcHV0ZUNvbnRleHRzLCJEZWxldGluZyBkZWZhdWx0IFNBUyBjb21wdXRlIGNvbnRleHRzIGlzIG5vdCBhbGxvd2Vk''@;'; put 'put ''LiIsITApLG9lPXsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LHNlJiYob2UuQXV0aG9yaXphdGlvbj0iQmVhcmVyICIuY29uY2F0KHNlKSksWzQsdGhpcy5nZXRDb21wdXRlQ29udGV4dEJ5TmFtZShKLHNlKV07Y2FzZSAxOnJldHVybiBjZT1kZS5zZW50KCksWzQsdGhpcy5y''@;'; put 'put ''ZXF1ZXN0Q2xpZW50LmRlbGV0ZSgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsIi9jb21wdXRlL2NvbnRleHRzLyIpLmNvbmNhdChjZS5pZCksc2UpXTtjYXNlIDI6cmV0dXJuWzIsZGUuc2VudCgpXX19KX0pfSxLLnByb3RvdHlwZS52YWxpZGF0ZUNvbnRleHROYW1lPWZ1bmN0aW9uKEope2lm''@;'; put 'put ''KCFKKXRocm93IG5ldyBFcnJvcigiQ29udGV4dCBuYW1lIGlzIHJlcXVpcmVkLiIpfSxLLnByb3RvdHlwZS5pc0RlZmF1bHRDb250ZXh0PWZ1bmN0aW9uKEosc2Usb2UsY2Upe2lmKHZvaWQgMD09PXNlJiYoc2U9dGhpcy5kZWZhdWx0Q29tcHV0ZUNvbnRleHRzKSx2b2lkIDA9PT1vZSYmKG9l''@;'; put 'put ''PSIiKSx2b2lkIDA9PT1jZSYmKGNlPSExKSxzZS5pbmNsdWRlcyhKKSl0aHJvdyBuZXcgRXJyb3IoIiIuY29uY2F0KG9lKS5jb25jYXQoY2U/IlxuRGVmYXVsdCBjb250ZXh0czoiK3NlLm1hcChmdW5jdGlvbihkZSx2ZSl7cmV0dXJuIlxuIi5jb25jYXQodmUrMSwiLiAiKS5jb25jYXQoZGUp''@;'; put 'put ''fSk6IiIpKX0sS30oKTtRLkNvbnRleHRNYW5hZ2VyPXRlfSw4MzA2OmZ1bmN0aW9uKFUsUSxqKXsidXNlIHN0cmljdCI7dmFyIHJlPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihvZSxjZSxkZSx2ZSl7cmV0dXJuIG5ldyhkZXx8KGRlPVByb21pc2UpKShmdW5jdGlvbihBZSxrZSl7''@;'; put 'put ''ZnVuY3Rpb24gU2UoTWUpe3RyeXtUZSh2ZS5uZXh0KE1lKSl9Y2F0Y2goaGUpe2tlKGhlKX19ZnVuY3Rpb24gSWUoTWUpe3RyeXtUZSh2ZS50aHJvdyhNZSkpfWNhdGNoKGhlKXtrZShoZSl9fWZ1bmN0aW9uIFRlKE1lKXt2YXIgaGU7TWUuZG9uZT9BZShNZS52YWx1ZSk6KGhlPU1lLnZhbHVl''@;'; put 'put ''LGhlIGluc3RhbmNlb2YgZGU/aGU6bmV3IGRlKGZ1bmN0aW9uKE8pe08oaGUpfSkpLnRoZW4oU2UsSWUpfVRlKCh2ZT12ZS5hcHBseShvZSxjZXx8W10pKS5uZXh0KCkpfSl9LGFlPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKG9lLGNlKXt2YXIgZGUsdmUsQWUsa2UsU2U9e2xh''@;'; put 'put ''YmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmQWVbMF0pdGhyb3cgQWVbMV07cmV0dXJuIEFlWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGtlPXtuZXh0OkllKDApLHRocm93OkllKDEpLHJldHVybjpJZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGtlW1N5bWJvbC5pdGVy''@;'; put 'put ''YXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGtlO2Z1bmN0aW9uIEllKFRlKXtyZXR1cm4gZnVuY3Rpb24oTWUpe3JldHVybiBmdW5jdGlvbihoZSl7aWYoZGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7U2U7KXRyeXtp''@;'; put 'put ''ZihkZT0xLHZlJiYoQWU9MiZoZVswXT92ZS5yZXR1cm46aGVbMF0/dmUudGhyb3d8fCgoQWU9dmUucmV0dXJuKSYmQWUuY2FsbCh2ZSksMCk6dmUubmV4dCkmJiEoQWU9QWUuY2FsbCh2ZSxoZVsxXSkpLmRvbmUpcmV0dXJuIEFlO3N3aXRjaCh2ZT0wLEFlJiYoaGU9WzImaGVbMF0sQWUudmFs''@;'; put 'put ''dWVdKSxoZVswXSl7Y2FzZSAwOmNhc2UgMTpBZT1oZTticmVhaztjYXNlIDQ6cmV0dXJuIFNlLmxhYmVsKysse3ZhbHVlOmhlWzFdLGRvbmU6ITF9O2Nhc2UgNTpTZS5sYWJlbCsrLHZlPWhlWzFdLGhlPVswXTtjb250aW51ZTtjYXNlIDc6aGU9U2Uub3BzLnBvcCgpLFNlLnRyeXMucG9wKCk7''@;'; put 'put ''Y29udGludWU7ZGVmYXVsdDppZighKChBZT0oQWU9U2UudHJ5cykubGVuZ3RoPjAmJkFlW0FlLmxlbmd0aC0xXSl8fDYhPT1oZVswXSYmMiE9PWhlWzBdKSl7U2U9MDtjb250aW51ZX1pZigzPT09aGVbMF0mJighQWV8fGhlWzFdPkFlWzBdJiZoZVsxXTxBZVszXSkpe1NlLmxhYmVsPWhlWzFd''@;'; put 'put ''O2JyZWFrfWlmKDY9PT1oZVswXSYmU2UubGFiZWw8QWVbMV0pe1NlLmxhYmVsPUFlWzFdLEFlPWhlO2JyZWFrfWlmKEFlJiZTZS5sYWJlbDxBZVsyXSl7U2UubGFiZWw9QWVbMl0sU2Uub3BzLnB1c2goaGUpO2JyZWFrfUFlWzJdJiZTZS5vcHMucG9wKCksU2UudHJ5cy5wb3AoKTtjb250aW51''@;'; put 'put ''ZX1oZT1jZS5jYWxsKG9lLFNlKX1jYXRjaChPKXtoZT1bNixPXSx2ZT0wfWZpbmFsbHl7ZGU9QWU9MH1pZig1JmhlWzBdKXRocm93IGhlWzFdO3JldHVybnt2YWx1ZTpoZVswXT9oZVsxXTp2b2lkIDAsZG9uZTohMH19KFtUZSxNZV0pfX19LFk9dGhpcyYmdGhpcy5fX3NwcmVhZEFycmF5fHxm''@;'; put 'put ''dW5jdGlvbihvZSxjZSxkZSl7aWYoZGV8fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgdmUsQWU9MCxrZT1jZS5sZW5ndGg7QWU8a2U7QWUrKykhdmUmJkFlIGluIGNlfHwodmV8fCh2ZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjZSwwLEFlKSksdmVbQWVdPWNlW0FlXSk7cmV0''@;'; put 'put ''dXJuIG9lLmNvbmNhdCh2ZXx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoY2UpKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuU0FTOUFwaUNsaWVudD12b2lkIDA7dmFyIFc9aig3NzU3KSxOPWooNjIzMCksdGU9aig3OTUpLEs9aig1OTI4''@;'; put 'put ''KSxKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gb2UoY2UsZGUsdmUpe3RoaXMuc2VydmVyVXJsPWNlLHRoaXMuam9ic1BhdGg9ZGUsY2UmJigwLEsuaXNVcmwpKGNlKSx0aGlzLnJlcXVlc3RDbGllbnQ9bmV3IHRlLlNhczlSZXF1ZXN0Q2xpZW50KGNlLHZlKX1yZXR1cm4gb2UucHJvdG90eXBlLmdl''@;'; put 'put ''dENvbmZpZz1mdW5jdGlvbigpe3JldHVybntzZXJ2ZXJVcmw6dGhpcy5zZXJ2ZXJVcmx9fSxvZS5wcm90b3R5cGUuc2V0Q29uZmlnPWZ1bmN0aW9uKGNlKXtjZSYmKHRoaXMuc2VydmVyVXJsPWNlKX0sb2UucHJvdG90eXBlLmV4ZWN1dGVTY3JpcHQ9ZnVuY3Rpb24oY2UsZGUsdmUpe3JldHVy''@;'; put 'put ''biByZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgQWUsa2UsU2UsSWUsVGUsTWUsaGU7cmV0dXJuIGFlKHRoaXMsZnVuY3Rpb24oTyl7c3dpdGNoKE8ubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLnJlcXVlc3RDbGllbnQubG9naW4oZGUsdmUsdGhpcy5qb2JzUGF0aCld''@;'; put 'put ''O2Nhc2UgMTpyZXR1cm4gTy5zZW50KCksQWU9WyJkYXRhIF9udWxsXzsiLCJmaWxlIF93ZWJvdXQ7IiwicHV0ICdFeGVjdXRlZCBzYXNqcyBydW4nOyIsInJ1bjsiXSxrZT1zZShZKFkoW10sY2UsITApLEFlLCEwKS5qb2luKCJcbiIpKSxTZT0iL1VzZXIgRm9sZGVycy8iLmNvbmNhdChkZSwi''@;'; put 'put ''L015IEZvbGRlci9zYXNqcy9ydW5uZXIiKSxJZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9IitrZS5nZXRCb3VuZGFyeSgpLFRlPWtlLmdldExlbmd0aFN5bmMoKSxNZT17ImNhY2hlLWNvbnRyb2wiOiJuby1jYWNoZSIsQWNjZXB0OiIqLyoiLCJDb250ZW50LVR5cGUiOkllLCJD''@;'; put 'put ''b250ZW50LUxlbmd0aCI6VGUsQ29ubmVjdGlvbjoia2VlcC1hbGl2ZSJ9LGhlPSIiLmNvbmNhdCh0aGlzLmpvYnNQYXRoLCIvPyIpLmNvbmNhdCgiX3Byb2dyYW09IitTZSsiJl9kZWJ1Zz1sb2ciKSxbNCx0aGlzLnJlcXVlc3RDbGllbnQucG9zdChoZSxrZSx2b2lkIDAsSWUsTWUpXTtjYXNl''@;'; put 'put ''IDI6cmV0dXJuWzIsTy5zZW50KCkucmVzdWx0XX19KX0pfSxvZX0oKTtRLlNBUzlBcGlDbGllbnQ9Sjt2YXIgc2U9ZnVuY3Rpb24ob2Upe3ZhciBjZT1uZXcgTixkZT0ic2FzanMtZXhlY3V0ZS1zYXM5LSIuY29uY2F0KCgwLFcuZ2VuZXJhdGVUaW1lc3RhbXApKCIiKSwiLnNhcyIpO3JldHVy''@;'; put 'put ''biBjZS5hcHBlbmQoZGUsb2Use2ZpbGVuYW1lOmRlLGNvbnRlbnRUeXBlOiJ0ZXh0L3BsYWluIn0pLGNlfX0sOTgyMTpmdW5jdGlvbihVLFEsail7InVzZSBzdHJpY3QiO3ZhciByZT1qKDQxNTUpLGFlPWooNTEwOCksWT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oTWUsaGUsTyx6''@;'; put 'put ''KXtyZXR1cm4gbmV3KE98fChPPVByb21pc2UpKShmdW5jdGlvbihlZSxuZSl7ZnVuY3Rpb24geChUKXt0cnl7Vih6Lm5leHQoVCkpfWNhdGNoKFMpe25lKFMpfX1mdW5jdGlvbiBQKFQpe3RyeXtWKHoudGhyb3coVCkpfWNhdGNoKFMpe25lKFMpfX1mdW5jdGlvbiBWKFQpe3ZhciBTO1QuZG9u''@;'; put 'put ''ZT9lZShULnZhbHVlKTooUz1ULnZhbHVlLFMgaW5zdGFuY2VvZiBPP1M6bmV3IE8oZnVuY3Rpb24oRil7RihTKX0pKS50aGVuKHgsUCl9Vigoej16LmFwcGx5KE1lLGhlfHxbXSkpLm5leHQoKSl9KX0sVz10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihNZSxoZSl7dmFyIE8seixl''@;'; put 'put ''ZSxuZSx4PXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmVlWzBdKXRocm93IGVlWzFdO3JldHVybiBlZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBuZT17bmV4dDpQKDApLHRocm93OlAoMSkscmV0dXJuOlAoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihuZVtTeW1i''@;'; put 'put ''b2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxuZTtmdW5jdGlvbiBQKFYpe3JldHVybiBmdW5jdGlvbihUKXtyZXR1cm4gZnVuY3Rpb24oUyl7aWYoTyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDt4Oyl0cnl7''@;'; put 'put ''aWYoTz0xLHomJihlZT0yJlNbMF0/ei5yZXR1cm46U1swXT96LnRocm93fHwoKGVlPXoucmV0dXJuKSYmZWUuY2FsbCh6KSwwKTp6Lm5leHQpJiYhKGVlPWVlLmNhbGwoeixTWzFdKSkuZG9uZSlyZXR1cm4gZWU7c3dpdGNoKHo9MCxlZSYmKFM9WzImU1swXSxlZS52YWx1ZV0pLFNbMF0pe2Nh''@;'; put 'put ''c2UgMDpjYXNlIDE6ZWU9UzticmVhaztjYXNlIDQ6cmV0dXJuIHgubGFiZWwrKyx7dmFsdWU6U1sxXSxkb25lOiExfTtjYXNlIDU6eC5sYWJlbCsrLHo9U1sxXSxTPVswXTtjb250aW51ZTtjYXNlIDc6Uz14Lm9wcy5wb3AoKSx4LnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChl''@;'; put 'put ''ZT0oZWU9eC50cnlzKS5sZW5ndGg+MCYmZWVbZWUubGVuZ3RoLTFdKXx8NiE9PVNbMF0mJjIhPT1TWzBdKSl7eD0wO2NvbnRpbnVlfWlmKDM9PT1TWzBdJiYoIWVlfHxTWzFdPmVlWzBdJiZTWzFdPGVlWzNdKSl7eC5sYWJlbD1TWzFdO2JyZWFrfWlmKDY9PT1TWzBdJiZ4LmxhYmVsPGVlWzFd''@;'; put 'put ''KXt4LmxhYmVsPWVlWzFdLGVlPVM7YnJlYWt9aWYoZWUmJngubGFiZWw8ZWVbMl0pe3gubGFiZWw9ZWVbMl0seC5vcHMucHVzaChTKTticmVha31lZVsyXSYmeC5vcHMucG9wKCkseC50cnlzLnBvcCgpO2NvbnRpbnVlfVM9aGUuY2FsbChNZSx4KX1jYXRjaChGKXtTPVs2LEZdLHo9MH1maW5h''@;'; put 'put ''bGx5e089ZWU9MH1pZig1JlNbMF0pdGhyb3cgU1sxXTtyZXR1cm57dmFsdWU6U1swXT9TWzFdOnZvaWQgMCxkb25lOiEwfX0oW1YsVF0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLlNBU1ZpeWFBcGlDbGllbnQ9dm9pZCAwO3ZhciBOPWoo''@;'; put 'put ''NTkyOCksdGU9aig2MjMwKSxLPWooMTM5NSksSj1qKDY5MDMpLHNlPWooNjcyKSxvZT1qKDkwOTcpLGNlPWooOTc3OCksZGU9aigxMzQzKSx2ZT1qKDcwNCksQWU9aig2NDk2KSxrZT1qKDU0MDEpLFNlPWooMzU2OSksSWU9aigzNjYpLFRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gTWUoaGUsTyx6''@;'; put 'put ''LGVlKXt0aGlzLnNlcnZlclVybD1oZSx0aGlzLnJvb3RGb2xkZXJOYW1lPU8sdGhpcy5jb250ZXh0TmFtZT16LHRoaXMucmVxdWVzdENsaWVudD1lZSx0aGlzLl9kZWJ1Zz0hMSx0aGlzLnNlc3Npb25NYW5hZ2VyPW5ldyBKLlNlc3Npb25NYW5hZ2VyKHRoaXMuc2VydmVyVXJsLHRoaXMuY29u''@;'; put 'put ''dGV4dE5hbWUsdGhpcy5yZXF1ZXN0Q2xpZW50KSx0aGlzLmNvbnRleHRNYW5hZ2VyPW5ldyBzZS5Db250ZXh0TWFuYWdlcih0aGlzLnNlcnZlclVybCx0aGlzLnJlcXVlc3RDbGllbnQpLHRoaXMuZm9sZGVyTWFwPW5ldyBNYXAsaGUmJigwLE4uaXNVcmwpKGhlKX1yZXR1cm4gTWUucHJvdG90''@;'; put 'put ''eXBlLmFwcGVuZFJlcXVlc3Q9ZnVuY3Rpb24oaGUsTyx6KXt0aGlzLnJlcXVlc3RDbGllbnQuYXBwZW5kUmVxdWVzdChoZSxPLHopfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTWUucHJvdG90eXBlLCJkZWJ1ZyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWJ1Z30sc2V0OmZ1bmN0''@;'; put 'put ''aW9uKGhlKXt0aGlzLl9kZWJ1Zz1oZSx0aGlzLnNlc3Npb25NYW5hZ2VyJiYodGhpcy5zZXNzaW9uTWFuYWdlci5kZWJ1Zz1oZSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksTWUucHJvdG90eXBlLmdldEpvYnNJbkZvbGRlcj1mdW5jdGlvbihoZSl7cmV0dXJuIFkodGhpcyx2''@;'; put 'put ''b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIE87cmV0dXJuIFcodGhpcyxmdW5jdGlvbih6KXtzd2l0Y2goei5sYWJlbCl7Y2FzZSAwOnJldHVybiBPPSgwLE4uaXNSZWxhdGl2ZVBhdGgpKGhlKT8iIi5jb25jYXQodGhpcy5yb290Rm9sZGVyTmFtZSwiLyIpLmNvbmNhdChoZSk6aGUsdGhp''@;'; put 'put ''cy5mb2xkZXJNYXAuZ2V0KE8pP1syLHRoaXMuZm9sZGVyTWFwLmdldChPKV06WzQsdGhpcy5wb3B1bGF0ZUZvbGRlck1hcChPKV07Y2FzZSAxOnJldHVybiB6LnNlbnQoKSxbMix0aGlzLmZvbGRlck1hcC5nZXQoTyldfX0pfSl9LE1lLnByb3RvdHlwZS5nZXRDb25maWc9ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm57c2VydmVyVXJsOnRoaXMuc2VydmVyVXJsLHJvb3RGb2xkZXJOYW1lOnRoaXMucm9vdEZvbGRlck5hbWV9fSxNZS5wcm90b3R5cGUuc2V0Q29uZmlnPWZ1bmN0aW9uKGhlLE8pe2hlJiYodGhpcy5zZXJ2ZXJVcmw9aGUpLE8mJih0aGlzLnJvb3RGb2xkZXJOYW1lPU8pfSxNZS5wcm90''@;'; put 'put ''b3R5cGUuZ2V0Q29tcHV0ZUNvbnRleHRzPWZ1bmN0aW9uKGhlKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKE8pe3N3aXRjaChPLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5jb250ZXh0TWFuYWdlci5nZXRDb21wdXRl''@;'; put 'put ''Q29udGV4dHMoaGUpXTtjYXNlIDE6cmV0dXJuWzIsTy5zZW50KCldfX0pfSl9LE1lLnByb3RvdHlwZS5nZXREZWZhdWx0Q29tcHV0ZUNvbnRleHRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGV4dE1hbmFnZXIuZ2V0RGVmYXVsdENvbXB1dGVDb250ZXh0c30sTWUucHJvdG90eXBlLmdl''@;'; put 'put ''dExhdW5jaGVyQ29udGV4dHM9ZnVuY3Rpb24oaGUpe3JldHVybiBZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBXKHRoaXMsZnVuY3Rpb24oTyl7c3dpdGNoKE8ubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmNvbnRleHRNYW5hZ2VyLmdldExhdW5jaGVyQ29udGV4''@;'; put 'put ''dHMoaGUpXTtjYXNlIDE6cmV0dXJuWzIsTy5zZW50KCldfX0pfSl9LE1lLnByb3RvdHlwZS5nZXRFeGVjdXRhYmxlQ29udGV4dHM9ZnVuY3Rpb24oaGUpe3JldHVybiBZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBPO3JldHVybiBXKHRoaXMsZnVuY3Rpb24oeil7c3dpdGNo''@;'; put 'put ''KHoubGFiZWwpe2Nhc2UgMDpyZXR1cm4gTz10aGlzLmV4ZWN1dGVTY3JpcHQuYmluZCh0aGlzKSxbNCx0aGlzLmNvbnRleHRNYW5hZ2VyLmdldEV4ZWN1dGFibGVDb250ZXh0cyhPLGhlKV07Y2FzZSAxOnJldHVyblsyLHouc2VudCgpXX19KX0pfSxNZS5wcm90b3R5cGUuY3JlYXRlU2Vzc2lv''@;'; put 'put ''bj1mdW5jdGlvbihoZSxPKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgeixlZSxuZTtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKHgpe3N3aXRjaCh4LmxhYmVsKXtjYXNlIDA6cmV0dXJuIHo9eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sTyYm''@;'; put 'put ''KHouQXV0aG9yaXphdGlvbj0iQmVhcmVyICIuY29uY2F0KE8pKSxbNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIvY29tcHV0ZS9jb250ZXh0cz9saW1pdD0xMDAwMCIsTyldO2Nhc2UgMTppZihlZT14LnNlbnQoKS5yZXN1bHQsIShuZT1lZS5pdGVtcyYmZWUuaXRlbXMubGVuZ3RoP2VlLml0''@;'; put 'put ''ZW1zLmZpbmQoZnVuY3Rpb24oUCl7cmV0dXJuIFAubmFtZT09PWhlfSk6bnVsbCkpdGhyb3cgbmV3IEVycm9yKCJFeGVjdXRpb24gY29udGV4dCAiLmNvbmNhdChoZSwiIG5vdCBmb3VuZC4iKSk7cmV0dXJuWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoIi9jb21wdXRlL2NvbnRleHRzLyIu''@;'; put 'put ''Y29uY2F0KG5lLmlkLCIvc2Vzc2lvbnMiKSx7fSxPKV07Y2FzZSAyOnJldHVyblsyLHguc2VudCgpLnJlc3VsdF19fSl9KX0sTWUucHJvdG90eXBlLmNyZWF0ZUNvbXB1dGVDb250ZXh0PWZ1bmN0aW9uKGhlLE8seixlZSxuZSx4KXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKFApe3N3aXRjaChQLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5jb250ZXh0TWFuYWdlci5jcmVhdGVDb21wdXRlQ29udGV4dChoZSxPLHosZWUsbmUseCldO2Nhc2UgMTpyZXR1cm5bMixQLnNlbnQoKV19fSl9KX0sTWUucHJvdG90eXBl''@;'; put 'put ''LmNyZWF0ZUxhdW5jaGVyQ29udGV4dD1mdW5jdGlvbihoZSxPLHosZWUpe3JldHVybiB2b2lkIDA9PT16JiYoej0iZGlyZWN0IiksWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKG5lKXtzd2l0Y2gobmUubGFiZWwpe2Nhc2UgMDpyZXR1cm5b''@;'; put 'put ''NCx0aGlzLmNvbnRleHRNYW5hZ2VyLmNyZWF0ZUxhdW5jaGVyQ29udGV4dChoZSxPLHosZWUpXTtjYXNlIDE6cmV0dXJuWzIsbmUuc2VudCgpXX19KX0pfSxNZS5wcm90b3R5cGUuZWRpdENvbXB1dGVDb250ZXh0PWZ1bmN0aW9uKGhlLE8seil7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAw''@;'; put 'put ''LGZ1bmN0aW9uKCl7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihlZSl7c3dpdGNoKGVlLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5jb250ZXh0TWFuYWdlci5lZGl0Q29tcHV0ZUNvbnRleHQoaGUsTyx6KV07Y2FzZSAxOnJldHVyblsyLGVlLnNlbnQoKV19fSl9KX0sTWUucHJvdG90eXBl''@;'; put 'put ''LmRlbGV0ZUNvbXB1dGVDb250ZXh0PWZ1bmN0aW9uKGhlLE8pe3JldHVybiBZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBXKHRoaXMsZnVuY3Rpb24oeil7c3dpdGNoKHoubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmNvbnRleHRNYW5hZ2VyLmRlbGV0ZUNvbXB1''@;'; put 'put ''dGVDb250ZXh0KGhlLE8pXTtjYXNlIDE6cmV0dXJuWzIsei5zZW50KCldfX0pfSl9LE1lLnByb3RvdHlwZS5leGVjdXRlU2NyaXB0PWZ1bmN0aW9uKGhlLE8seixlZSxuZSx4LFAsVixULFMsRil7cmV0dXJuIHZvaWQgMD09PW5lJiYobmU9bnVsbCksdm9pZCAwPT09eCYmKHg9ITEpLHZvaWQg''@;'; put 'put ''MD09PVAmJihQPSExKSx2b2lkIDA9PT1WJiYoVj0hMCksdm9pZCAwPT09UyYmKFM9ITEpLFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFcodGhpcyxmdW5jdGlvbih5ZSl7cmV0dXJuWzIsKDAsa2UuZXhlY3V0ZVNjcmlwdCkodGhpcy5yZXF1ZXN0Q2xpZW50LHRoaXMu''@;'; put 'put ''c2Vzc2lvbk1hbmFnZXIsdGhpcy5yb290Rm9sZGVyTmFtZSxoZSxPLHosZWUsbmUseCxQLFYsVCxTLEYpXX0pfSl9LE1lLnByb3RvdHlwZS5nZXRGb2xkZXI9ZnVuY3Rpb24oaGUsTyl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFcodGhpcyxmdW5jdGlv''@;'; put 'put ''bih6KXtzd2l0Y2goei5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIi9mb2xkZXJzL2ZvbGRlcnMvQGl0ZW0/cGF0aD0iLmNvbmNhdChoZSksTykudGhlbihmdW5jdGlvbihlZSl7cmV0dXJuIGVlLnJlc3VsdH0pXTtjYXNlIDE6cmV0dXJuWzIsei5zZW50''@;'; put 'put ''KCldfX0pfSl9LE1lLnByb3RvdHlwZS5jcmVhdGVGaWxlPWZ1bmN0aW9uKGhlLE8seixlZSxuZSl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHgsUDtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKFYpe3N3aXRjaChWLmxhYmVsKXtjYXNlIDA6aWYoIXomJiFlZSl0''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoIlBhdGggb3IgVVJJIG9mIHRoZSBwYXJlbnQgZm9sZGVyIGlzIHJlcXVpcmVkLiIpO3JldHVybiBlZXx8IXo/WzMsMl06WzQsdGhpcy5nZXRGb2xkZXJVcmkoeixuZSldO2Nhc2UgMTplZT1WLnNlbnQoKSxWLmxhYmVsPTI7Y2FzZSAyOnJldHVybiB4PXtBY2NlcHQ6''@;'; put 'put ''ImFwcGxpY2F0aW9uL3ZuZC5zYXMuZmlsZStqc29uIiwiQ29udGVudC1EaXNwb3NpdGlvbiI6J2ZpbGVuYW1lPSInLmNvbmNhdChoZSwnIjsnKX0sKFA9bmV3IHRlKS5hcHBlbmQoImZpbGUiLE8saGUpLFs0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KCIvZmlsZXMvZmlsZXM/cGFyZW50Rm9s''@;'; put 'put ''ZGVyVXJpPSIuY29uY2F0KGVlLCImdHlwZURlZk5hbWU9ZmlsZSNyYXdVcGxvYWQiKSxQLG5lLCJtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0iK1AuX2JvdW5kYXJ5LHgpXTtjYXNlIDM6cmV0dXJuWzIsVi5zZW50KCkucmVzdWx0XX19KX0pfSxNZS5wcm90b3R5cGUuY3JlYXRlRm9s''@;'; put 'put ''ZGVyPWZ1bmN0aW9uKGhlLE8seixlZSxuZSl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHgsUCxWLFQsRjtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKHllKXtzd2l0Y2goeWUubGFiZWwpe2Nhc2UgMDppZih4PXJlLmxvZ2dlcnx8YWUsIU8mJiF6KXRocm93IG5l''@;'; put 'put ''dyBFcnJvcigiUGF0aCBvciBVUkkgb2YgdGhlIHBhcmVudCBmb2xkZXIgaXMgcmVxdWlyZWQuIik7cmV0dXJuIHp8fCFPP1szLDZdOls0LHRoaXMuZ2V0Rm9sZGVyVXJpKE8sZWUpXTtjYXNlIDE6aWYoej15ZS5zZW50KCkpcmV0dXJuWzMsM107aWYoeC5pbmZvKCJQYXJlbnQgZm9sZGVyIGF0''@;'; put 'put ''IHBhdGggJyIuY29uY2F0KE8sIicgaXMgbm90IHByZXNlbnQuIikpLFA9Ty5zdWJzdHJpbmcoMCxPLmxhc3RJbmRleE9mKCIvIikpLFY9IiIuY29uY2F0KE8uc3BsaXQoIi8iKS5wb3AoKSksIiI9PT1QKXRocm93IG5ldyBLLlJvb3RGb2xkZXJOb3RGb3VuZEVycm9yKE8sdGhpcy5zZXJ2ZXJV''@;'; put 'put ''cmwsZWUpO3JldHVybiB4LmluZm8oIkNyZWF0aW5nIHBhcmVudCBmb2xkZXI6XG4nIi5jb25jYXQoViwiJyBpbiAnIikuY29uY2F0KFAsIiciKSksWzQsdGhpcy5jcmVhdGVGb2xkZXIoVixQLHZvaWQgMCxlZSldO2Nhc2UgMjpyZXR1cm4gVD15ZS5zZW50KCkseC5pbmZvKCJQYXJlbnQgZm9s''@;'; put 'put ''ZGVyICciLmNvbmNhdChWLCInIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjcmVhdGVkLiIpKSx6PSIvZm9sZGVycy9mb2xkZXJzLyIuY29uY2F0KFQuaWQpLFszLDZdO2Nhc2UgMzpyZXR1cm4gbmUmJmVlP1s0LHRoaXMuZ2V0Rm9sZGVyVXJpKE8rIi8iK2hlLGVlKV06WzMsNl07Y2FzZSA0OnJl''@;'; put 'put ''dHVybiB5ZS5zZW50KCk/WzQsdGhpcy5kZWxldGVGb2xkZXIoTysiLyIraGUsZWUpXTpbMyw2XTtjYXNlIDU6eWUuc2VudCgpLHllLmxhYmVsPTY7Y2FzZSA2OnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KCIvZm9sZGVycy9mb2xkZXJzP3BhcmVudEZvbGRlclVyaT0iLmNvbmNh''@;'; put 'put ''dCh6KSx7bmFtZTpoZSx0eXBlOiJmb2xkZXIifSxlZSldO2Nhc2UgNzpyZXR1cm4gRj15ZS5zZW50KCkucmVzdWx0LFs0LHRoaXMucG9wdWxhdGVGb2xkZXJNYXAoIiIuY29uY2F0KE8sIi8iKS5jb25jYXQoaGUpLGVlKV07Y2FzZSA4OnJldHVybiB5ZS5zZW50KCksWzIsRl19fSl9KX0sTWUu''@;'; put 'put ''cHJvdG90eXBlLmNyZWF0ZUpvYkRlZmluaXRpb249ZnVuY3Rpb24oaGUsTyx6LGVlLG5lKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKHgpe3N3aXRjaCh4LmxhYmVsKXtjYXNlIDA6aWYoIXomJiFlZSl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIlBhdGggdG8gb3IgVVJJIG9mIHRoZSBwYXJlbnQgZm9sZGVyIGlzIHJlcXVpcmVkLiIpO3JldHVybiBlZXx8IXo/WzMsMl06WzQsdGhpcy5nZXRGb2xkZXJVcmkoeixuZSldO2Nhc2UgMTplZT14LnNlbnQoKSx4LmxhYmVsPTI7Y2FzZSAyOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVu''@;'; put 'put ''dC5wb3N0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2pvYkRlZmluaXRpb25zL2RlZmluaXRpb25zP3BhcmVudEZvbGRlclVyaT0iKS5jb25jYXQoZWUpLHtuYW1lOmhlLHBhcmFtZXRlcnM6W3tuYW1lOiJfYWRkamVzYmVnaW5lbmRtYWNyb3MiLHR5cGU6IkNIQVJBQ1RFUiIsZGVmYXVs''@;'; put 'put ''dFZhbHVlOiJmYWxzZSJ9XSx0eXBlOiJDb21wdXRlIixjb2RlOk99LG5lKV07Y2FzZSAzOnJldHVyblsyLHguc2VudCgpXX19KX0pfSxNZS5wcm90b3R5cGUuZ2V0QXV0aENvZGU9ZnVuY3Rpb24oaGUpe3JldHVybiBZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBPLHo9dGhp''@;'; put 'put ''cztyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKGVlKXtzd2l0Y2goZWUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gTz0iIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsIi9TQVNMb2dvbi9vYXV0aC9hdXRob3JpemU/Y2xpZW50X2lkPSIpLmNvbmNhdChoZSwiJnJlc3BvbnNlX3R5cGU9Y29kZSIpLFs0LHRo''@;'; put 'put ''aXMucmVxdWVzdENsaWVudC5nZXQoTyx2b2lkIDAsInRleHQvcGxhaW4iKS50aGVuKGZ1bmN0aW9uKG5lKXtyZXR1cm4gbmUucmVzdWx0fSkudGhlbihmdW5jdGlvbihuZSl7cmV0dXJuIFkoeix2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHgsUCxWLFQ7cmV0dXJuIFcodGhpcyxmdW5j''@;'; put 'put ''dGlvbihTKXtzd2l0Y2goUy5sYWJlbCl7Y2FzZSAwOnJldHVybiB4PSIiLCgwLG9lLmlzQXV0aG9yaXplRm9ybVJlcXVpcmVkKShuZSk/WzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmF1dGhvcml6ZShuZSldOlszLDJdO2Nhc2UgMTpyZXR1cm4gUD1TLnNlbnQoKSxWPVAuc3BsaXQoIjxib2R5PiIp''@;'; put 'put ''WzFdLnNwbGl0KCI8L2JvZHk+IilbMF0sKFQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD1WLFsyLHg9VC5xdWVyeVNlbGVjdG9yKCIuaW5mb2JveCBoNCIpLmlubmVyVGV4dF07Y2FzZSAyOnJldHVybiBWPW5lLnNwbGl0KCI8Ym9keT4iKVsxXS5zcGxpdCgiPC9i''@;'; put 'put ''b2R5PiIpWzBdLChUPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5pbm5lckhUTUw9VixUJiYoeD1ULnF1ZXJ5U2VsZWN0b3IoIi5pbmZvYm94IGg0IikuaW5uZXJUZXh0KSxbMix4XX19KX0pfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0pXTtjYXNlIDE6cmV0dXJuWzIs''@;'; put 'put ''ZWUuc2VudCgpXX19KX0pfSxNZS5wcm90b3R5cGUuZ2V0QWNjZXNzVG9rZW49ZnVuY3Rpb24oaGUsTyx6KXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKGVlKXtyZXR1cm5bMiwoMCxTZS5nZXRBY2Nlc3NUb2tlbkZvclZpeWEp''@;'; put 'put ''KHRoaXMucmVxdWVzdENsaWVudCxoZSxPLHopXX0pfSl9LE1lLnByb3RvdHlwZS5yZWZyZXNoVG9rZW5zPWZ1bmN0aW9uKGhlLE8seil7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihlZSl7cmV0dXJuWzIsKDAsSWUucmVmcmVz''@;'; put 'put ''aFRva2Vuc0ZvclZpeWEpKHRoaXMucmVxdWVzdENsaWVudCxoZSxPLHopXX0pfSl9LE1lLnByb3RvdHlwZS5kZWxldGVDbGllbnQ9ZnVuY3Rpb24oaGUsTyl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHosZWU7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihuZSl7''@;'; put 'put ''c3dpdGNoKG5lLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHo9dGhpcy5zZXJ2ZXJVcmwrIi9vYXV0aC9jbGllbnRzLyIuY29uY2F0KGhlKSxlZT17fSxPJiYoZWUuQXV0aG9yaXphdGlvbj0iQmVhcmVyICIuY29uY2F0KE8pKSxbNCx0aGlzLnJlcXVlc3RDbGllbnQuZGVsZXRlKHosTyldO2Nhc2Ug''@;'; put 'put ''MTpyZXR1cm5bMixuZS5zZW50KCkucmVzdWx0XX19KX0pfSxNZS5wcm90b3R5cGUuZXhlY3V0ZUNvbXB1dGVKb2I9ZnVuY3Rpb24oaGUsTyx6LGVlLG5lLHgsUCxWLFQsUyl7cmV0dXJuIHZvaWQgMD09PXgmJih4PSEwKSx2b2lkIDA9PT1QJiYoUD0hMSksdm9pZCAwPT09VCYmKFQ9ITEpLFko''@;'; put 'put ''dGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEYseWUsQ2UsRGUsUGUsUWUsJGUsZ3Qsd3QsbXQsdnQ7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihBdCl7c3dpdGNoKEF0LmxhYmVsKXtjYXNlIDA6cmV0dXJuIEY9KG5lfHx7fSkuYWNjZXNzX3Rva2VuLG5lP1s0LCgwLHZlLmdldFRv''@;'; put 'put ''a2VucykodGhpcy5yZXF1ZXN0Q2xpZW50LG5lKV06WzMsMl07Y2FzZSAxOkY9QXQuc2VudCgpLmFjY2Vzc190b2tlbixBdC5sYWJlbD0yO2Nhc2UgMjppZigoMCxOLmlzUmVsYXRpdmVQYXRoKShoZSkmJiF0aGlzLnJvb3RGb2xkZXJOYW1lKXRocm93IG5ldyBFcnJvcigiUmVsYXRpdmUgcGF0''@;'; put 'put ''aHMgY2Fubm90IGJlIHVzZWQgd2l0aG91dCBzcGVjaWZ5aW5nIGEgcm9vdCBmb2xkZXIgbmFtZSIpO3JldHVybiB5ZT1oZS5zcGxpdCgiLyIpLENlPXllLnBvcCgpLERlPXllLmpvaW4oIi8iKSxQZT0oMCxOLmlzUmVsYXRpdmVQYXRoKShoZSk/IiIuY29uY2F0KHRoaXMucm9vdEZvbGRlck5h''@;'; put 'put ''bWUsIi8iKS5jb25jYXQoRGUpOkRlLFs0LHRoaXMucG9wdWxhdGVGb2xkZXJNYXAoUGUsRikuY2F0Y2goZnVuY3Rpb24oaHQpe3Rocm93KDAsY2UucHJlZml4TWVzc2FnZSkoaHQsIkVycm9yIHdoaWxlIHBvcHVsYXRpbmcgZm9sZGVyIG1hcC4gIil9KV07Y2FzZSAzOmlmKEF0LnNlbnQoKSwh''@;'; put 'put ''KFFlPXRoaXMuZm9sZGVyTWFwLmdldChQZSkpKXRocm93IG5ldyBFcnJvcigiVGhlIGZvbGRlciAnIi5jb25jYXQoUGUsIicgd2FzIG5vdCBmb3VuZCBvbiAnIikuY29uY2F0KHRoaXMuc2VydmVyVXJsLCInIikpO2lmKCEoJGU9bnVsbD09UWU/dm9pZCAwOlFlLmZpbmQoZnVuY3Rpb24oaHQp''@;'; put 'put ''e3JldHVybiBodC5uYW1lPT09Q2V9KSkpdGhyb3cgbmV3IEVycm9yKCJKb2Igd2FzIG5vdCBmb3VuZC4iKTtpZihndD1udWxsPT0kZT92b2lkIDA6JGUuY29kZSlyZXR1cm5bMyw1XTtpZighKHd0PW51bGw9PSRlP3ZvaWQgMDokZS5saW5rcy5maW5kKGZ1bmN0aW9uKGh0KXtyZXR1cm4iZ2V0''@;'; put 'put ''UmVzb3VyY2UiPT09aHQucmVsfSkpKXRocm93IG5ldyBFcnJvcigiVVJJIG9mIGpvYiBkZWZpbml0aW9uIHdhcyBub3QgZm91bmQuIik7cmV0dXJuWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwpLmNvbmNhdCh3dC5ocmVmKSxGKS5jYXRjaChmdW5j''@;'; put 'put ''dGlvbihodCl7dGhyb3coMCxjZS5wcmVmaXhNZXNzYWdlKShodCwiRXJyb3Igd2hpbGUgZ2V0dGluZyBqb2IgZGVmaW5pdGlvbi4gIil9KV07Y2FzZSA0Om10PUF0LnNlbnQoKS5yZXN1bHQsJGUuY29kZT1ndD1tdC5jb2RlLEF0LmxhYmVsPTU7Y2FzZSA1OnJldHVybiBndHx8KGd0PSIiKSx2''@;'; put 'put ''dD1ndC5yZXBsYWNlKC9cclxuL2csIlxuIikuc3BsaXQoIlxuIiksWzQsdGhpcy5leGVjdXRlU2NyaXB0KGhlLHZ0LE8sbmUsZWUseixQLHgsVixULFMpXTtjYXNlIDY6cmV0dXJuWzIsQXQuc2VudCgpXX19KX0pfSxNZS5wcm90b3R5cGUuZXhlY3V0ZUpvYj1mdW5jdGlvbihoZSxPLHosZWUs''@;'; put 'put ''bmUpe3ZhciB4LFAsVjtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgVCxTLEYseWUsQ2UsRGUsUGUsUWUsJGUsZ3Qsd3QsbXQsdnQsQXQsaHQsQnQsb24sX3QsdHQ7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihldCl7c3dpdGNoKGV0LmxhYmVsKXtjYXNlIDA6cmV0''@;'; put 'put ''dXJuIFQ9KG5lfHx7fSkuYWNjZXNzX3Rva2VuLG5lP1s0LCgwLHZlLmdldFRva2VucykodGhpcy5yZXF1ZXN0Q2xpZW50LG5lKV06WzMsMl07Y2FzZSAxOlQ9ZXQuc2VudCgpLmFjY2Vzc190b2tlbixldC5sYWJlbD0yO2Nhc2UgMjppZigoMCxOLmlzUmVsYXRpdmVQYXRoKShoZSkmJiF0aGlz''@;'; put 'put ''LnJvb3RGb2xkZXJOYW1lKXRocm93IG5ldyBFcnJvcigiUmVsYXRpdmUgcGF0aHMgY2Fubm90IGJlIHVzZWQgd2l0aG91dCBzcGVjaWZ5aW5nIGEgcm9vdCBmb2xkZXIgbmFtZS4iKTtyZXR1cm4gUz1oZS5zcGxpdCgiLyIpLEY9Uy5wb3AoKSx5ZT1TLmpvaW4oIi8iKSxDZT0oMCxOLmlzUmVs''@;'; put 'put ''YXRpdmVQYXRoKShoZSk/IiIuY29uY2F0KHRoaXMucm9vdEZvbGRlck5hbWUsIi8iKS5jb25jYXQoeWUpOnllLFs0LHRoaXMucG9wdWxhdGVGb2xkZXJNYXAoQ2UsVCldO2Nhc2UgMzppZihldC5zZW50KCksIShEZT10aGlzLmZvbGRlck1hcC5nZXQoQ2UpKSl0aHJvdyBuZXcgRXJyb3IoIlRo''@;'; put 'put ''ZSBmb2xkZXIgJyIuY29uY2F0KENlLCInIHdhcyBub3QgZm91bmQgb24gJyIpLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiJy4iKSk7cmV0dXJuIFBlPW51bGw9PURlP3ZvaWQgMDpEZS5maW5kKGZ1bmN0aW9uKGx0KXtyZXR1cm4gbHQubmFtZT09PUZ9KSxRZT1bXSxlZSYmT2JqZWN0LmtleXMo''@;'; put 'put ''ZWUpLmxlbmd0aD9bNCx0aGlzLnVwbG9hZFRhYmxlcyhlZSxUKV06WzMsNV07Y2FzZSA0OlFlPWV0LnNlbnQoKSxldC5sYWJlbD01O2Nhc2UgNTppZighUGUpdGhyb3cgbmV3IEVycm9yKCJKb2Igd2FzIG5vdCBmb3VuZC4iKTtyZXR1cm4gJGU9bnVsbD09PSh4PW51bGw9PVBlP3ZvaWQgMDpQ''@;'; put 'put ''ZS5saW5rcy5maW5kKGZ1bmN0aW9uKGx0KXtyZXR1cm4iZ2V0UmVzb3VyY2UiPT09bHQucmVsfSkpfHx2b2lkIDA9PT14P3ZvaWQgMDp4LmhyZWYsWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwpLmNvbmNhdCgkZSksVCldO2Nhc2UgNjpyZXR1cm4g''@;'; put 'put ''Z3Q9ZXQuc2VudCgpLnJlc3VsdCx3dD17X2NvbnRleHROYW1lOk8sX3Byb2dyYW06IiIuY29uY2F0KENlLCIvIikuY29uY2F0KEYpLF93ZWJpbl9maWxlX2NvdW50OlFlLmxlbmd0aCxfT01JVEpTT05MSVNUSU5HOiEwLF9PTUlUSlNPTkxPRzohMCxfT01JVFNFU1NJT05SRVNVTFRTOiEwLF9P''@;'; put 'put ''TUlUVEVYVExJU1RJTkc6ITAsX09NSVRURVhUTE9HOiEwfSx6JiYod3QuX09NSVRURVhUTE9HPSJmYWxzZSIsd3QuX09NSVRTRVNTSU9OUkVTVUxUUz0iZmFsc2UiLHd0Ll9ERUJVRz0xMzEpLFFlLmZvckVhY2goZnVuY3Rpb24obHQsTHQpe3d0WyJfd2ViaW5fZmlsZXVyaSIuY29uY2F0KEx0''@;'; put 'put ''KzEpXT0iL2ZpbGVzL2ZpbGVzLyIuY29uY2F0KGx0LmZpbGUuaWQpLHd0WyJfd2ViaW5fbmFtZSIuY29uY2F0KEx0KzEpXT1sdC50YWJsZU5hbWV9KSxtdD17bmFtZToiZXhlYy0iLmNvbmNhdChGKSxkZXNjcmlwdGlvbjoiUG93ZXJlZCBieSBTQVNqcyIsam9iRGVmaW5pdGlvbjpndCxhcmd1''@;'; put 'put ''bWVudHM6d3R9LFs0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2pvYkV4ZWN1dGlvbi9qb2JzP19hY3Rpb249d2FpdCIpLG10LFQpXTtjYXNlIDc6cmV0dXJuIHZ0PWV0LnNlbnQoKS5yZXN1bHQsWzQsdGhpcy5wb2xsSm9iU3RhdGUodnQsbmUp''@;'; put 'put ''LmNhdGNoKGZ1bmN0aW9uKGx0KXt0aHJvdygwLGNlLnByZWZpeE1lc3NhZ2UpKGx0LCJFcnJvciB3aGlsZSBwb2xsaW5nIGpvYiBzdGF0dXMuICIpfSldO2Nhc2UgODpyZXR1cm4gQXQ9ZXQuc2VudCgpLFs0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJs''@;'; put 'put ''LCIvam9iRXhlY3V0aW9uL2pvYnMvIikuY29uY2F0KHZ0LmlkKSxUKV07Y2FzZSA5OnJldHVybiBodD1ldC5zZW50KCkucmVzdWx0LF90PWh0LnJlc3VsdHNbIl93ZWJvdXQuanNvbiJdLHR0PWh0LmxpbmtzLmZpbmQoZnVuY3Rpb24obHQpe3JldHVybiJsb2ciPT09bHQucmVsfSksX3Q/WzQs''@;'; put 'put ''dGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwpLmNvbmNhdChfdCwiL2NvbnRlbnQiKSxULCJ0ZXh0L3BsYWluIildOlszLDExXTtjYXNlIDEwOkJ0PWV0LnNlbnQoKSxldC5sYWJlbD0xMTtjYXNlIDExOnJldHVybiB6JiZ0dD9bNCx0aGlzLnJlcXVlc3RD''@;'; put 'put ''bGllbnQuZ2V0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCkuY29uY2F0KHR0LmhyZWYsIi9jb250ZW50IiksVCkudGhlbihmdW5jdGlvbihsdCl7cmV0dXJuIGx0LnJlc3VsdC5pdGVtcy5tYXAoZnVuY3Rpb24oTHQpe3JldHVybiBMdC5saW5lfSkuam9pbigiXG4iKX0pXTpbMywxM107Y2Fz''@;'; put 'put ''ZSAxMjpvbj1ldC5zZW50KCksZXQubGFiZWw9MTM7Y2FzZSAxMzppZigiZmFpbGVkIj09PUF0KXRocm93IG5ldyBLLkpvYkV4ZWN1dGlvbkVycm9yKG51bGw9PT0oUD1odC5lcnJvcil8fHZvaWQgMD09PVA/dm9pZCAwOlAuZXJyb3JDb2RlLG51bGw9PT0oVj1odC5lcnJvcil8fHZvaWQgMD09''@;'; put 'put ''PVY/dm9pZCAwOlYubWVzc2FnZSxvbik7cmV0dXJuWzIse3Jlc3VsdDpudWxsPT1CdD92b2lkIDA6QnQucmVzdWx0LGxvZzpvbn1dfX0pfSl9LE1lLnByb3RvdHlwZS5wb3B1bGF0ZUZvbGRlck1hcD1mdW5jdGlvbihoZSxPKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgeixuZSx4O3JldHVybiBXKHRoaXMsZnVuY3Rpb24oVil7c3dpdGNoKFYubGFiZWwpe2Nhc2UgMDpyZXR1cm4gej0oMCxOLmlzUmVsYXRpdmVQYXRoKShoZSk/IiIuY29uY2F0KHRoaXMucm9vdEZvbGRlck5hbWUsIi8iKS5jb25jYXQoaGUpOmhlLHRoaXMuZm9sZGVyTWFwLmdldCh6''@;'; put 'put ''KT9bMl06WzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiIi5jb25jYXQoIi9mb2xkZXJzL2ZvbGRlcnMvQGl0ZW0/cGF0aD0iK3opLE8pLmNhdGNoKGZ1bmN0aW9uKFQpe3Rocm93KDAsY2UucHJlZml4TWVzc2FnZSkoVCwiRXJyb3Igd2hpbGUgZ2V0dGluZyBmb2xkZXIuICIpfSldO2Nhc2Ug''@;'; put 'put ''MTppZighKG5lPVYuc2VudCgpLnJlc3VsdCkpdGhyb3cgbmV3IEVycm9yKCJUaGUgcGF0aCAiLmNvbmNhdCh6LCIgZG9lcyBub3QgZXhpc3Qgb24gIikuY29uY2F0KHRoaXMuc2VydmVyVXJsKSk7cmV0dXJuWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiL2ZvbGRlcnMvZm9sZGVycy8iLmNv''@;'; put 'put ''bmNhdChuZS5pZCwiL21lbWJlcnM/bGltaXQ9IikuY29uY2F0KG5lLm1lbWJlckNvdW50PDUwMD81MDA6bmUubWVtYmVyQ291bnQpLE8pLmNhdGNoKGZ1bmN0aW9uKFQpe3Rocm93KDAsY2UucHJlZml4TWVzc2FnZSkoVCwiRXJyb3Igd2hpbGUgZ2V0dGluZyBtZW1iZXJzLiAiKX0pXTtjYXNl''@;'; put 'put ''IDI6cmV0dXJuIHg9Vi5zZW50KCkucmVzdWx0LHRoaXMuZm9sZGVyTWFwLnNldCh6LHguaXRlbXMpLFsyXX19KX0pfSxNZS5wcm90b3R5cGUucG9sbEpvYlN0YXRlPWZ1bmN0aW9uKGhlLE8seil7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFcodGhpcyxm''@;'; put 'put ''dW5jdGlvbihlZSl7cmV0dXJuWzIsKDAsZGUucG9sbEpvYlN0YXRlKSh0aGlzLnJlcXVlc3RDbGllbnQsaGUsdGhpcy5kZWJ1ZyxPLHopXX0pfSl9LE1lLnByb3RvdHlwZS51cGxvYWRUYWJsZXM9ZnVuY3Rpb24oaGUsTyl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIFcodGhpcyxmdW5jdGlvbih6KXtyZXR1cm5bMiwoMCxBZS51cGxvYWRUYWJsZXMpKHRoaXMucmVxdWVzdENsaWVudCxoZSxPKV19KX0pfSxNZS5wcm90b3R5cGUuZ2V0Rm9sZGVyRGV0YWlscz1mdW5jdGlvbihoZSxPKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgeixlZTtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKG5lKXtzd2l0Y2gobmUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gej0oMCxOLmlzVXJpKShoZSk/aGU6Ii9mb2xkZXJzL2ZvbGRlcnMvQGl0ZW0/cGF0aD0iLmNvbmNhdChoZSksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiIi5j''@;'; put 'put ''b25jYXQodGhpcy5zZXJ2ZXJVcmwpLmNvbmNhdCh6KSxPKS5jYXRjaChmdW5jdGlvbih4KXtpZih4IGluc3RhbmNlb2YgSy5DZXJ0aWZpY2F0ZUVycm9yKXRocm93IHg7cmV0dXJue3Jlc3VsdDpudWxsfX0pXTtjYXNlIDE6cmV0dXJuKGVlPW5lLnNlbnQoKS5yZXN1bHQpP1syLGVlXTpbMix2''@;'; put 'put ''b2lkIDBdfX0pfSl9LE1lLnByb3RvdHlwZS5nZXRGb2xkZXJVcmk9ZnVuY3Rpb24oaGUsTyl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHo7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihlZSl7c3dpdGNoKGVlLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5n''@;'; put 'put ''ZXRGb2xkZXJEZXRhaWxzKGhlLE8pXTtjYXNlIDE6cmV0dXJuKHo9ZWUuc2VudCgpKT9bMiwiL2ZvbGRlcnMvZm9sZGVycy8iLmNvbmNhdCh6LmlkKV06WzIsdm9pZCAwXX19KX0pfSxNZS5wcm90b3R5cGUuZ2V0UmVjeWNsZUJpblVyaT1mdW5jdGlvbihoZSl7cmV0dXJuIFkodGhpcyx2b2lk''@;'; put 'put ''IDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIE87cmV0dXJuIFcodGhpcyxmdW5jdGlvbih6KXtzd2l0Y2goei5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsKS5jb25jYXQoIi9mb2xkZXJzL2ZvbGRlcnMvQG15UmVj''@;'; put 'put ''eWNsZUJpbiIpLGhlKS5jYXRjaChmdW5jdGlvbihlZSl7aWYoZWUgaW5zdGFuY2VvZiBLLkNlcnRpZmljYXRlRXJyb3IpdGhyb3cgZWU7cmV0dXJue3Jlc3VsdDpudWxsfX0pXTtjYXNlIDE6cmV0dXJuKE89ei5zZW50KCkucmVzdWx0KT9bMiwiL2ZvbGRlcnMvZm9sZGVycy8iLmNvbmNhdChP''@;'; put 'put ''LmlkKV06WzIsdm9pZCAwXX19KX0pfSxNZS5wcm90b3R5cGUuZ2V0Q29tcHV0ZUNvbnRleHRCeU5hbWU9ZnVuY3Rpb24oaGUsTyl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFcodGhpcyxmdW5jdGlvbih6KXtzd2l0Y2goei5sYWJlbCl7Y2FzZSAwOnJl''@;'; put 'put ''dHVybls0LHRoaXMuY29udGV4dE1hbmFnZXIuZ2V0Q29tcHV0ZUNvbnRleHRCeU5hbWUoaGUsTyldO2Nhc2UgMTpyZXR1cm5bMix6LnNlbnQoKV19fSl9KX0sTWUucHJvdG90eXBlLmdldENvbXB1dGVDb250ZXh0QnlJZD1mdW5jdGlvbihoZSxPKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lk''@;'; put 'put ''IDAsZnVuY3Rpb24oKXtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKHope3N3aXRjaCh6LmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5jb250ZXh0TWFuYWdlci5nZXRDb21wdXRlQ29udGV4dEJ5SWQoaGUsTyldO2Nhc2UgMTpyZXR1cm5bMix6LnNlbnQoKV19fSl9KX0sTWUucHJvdG90eXBl''@;'; put 'put ''Lmxpc3RGb2xkZXI9ZnVuY3Rpb24oaGUsTyx6KXtyZXR1cm4gdm9pZCAwPT09eiYmKHo9MjApLFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGVlLG5lLHg7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihQKXtzd2l0Y2goUC5sYWJlbCl7Y2FzZSAwOnJldHVybigwLE4uaXNVcmkp''@;'; put 'put ''KGhlKT8obmU9aGUsWzMsM10pOlszLDFdO2Nhc2UgMTpyZXR1cm5bNCx0aGlzLmdldEZvbGRlclVyaShoZSxPKV07Y2FzZSAyOm5lPVAuc2VudCgpLFAubGFiZWw9MztjYXNlIDM6cmV0dXJuIGVlPW5lLFs0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJs''@;'; put 'put ''KS5jb25jYXQoZWUsIi9tZW1iZXJzP2xpbWl0PSIpLmNvbmNhdCh6KSxPKV07Y2FzZSA0OnJldHVybih4PVAuc2VudCgpLnJlc3VsdCkmJnguaXRlbXM/WzIseC5pdGVtcy5tYXAoZnVuY3Rpb24oVil7cmV0dXJuIFYubmFtZX0pXTpbMixbXV19fSl9KX0sTWUucHJvdG90eXBlLm1vdmVGb2xk''@;'; put 'put ''ZXI9ZnVuY3Rpb24oaGUsTyx6LGVlKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbmUseCxQLFYsVCxTO3JldHVybiBXKHRoaXMsZnVuY3Rpb24oRil7c3dpdGNoKEYubGFiZWwpe2Nhc2UgMDpyZXR1cm4gbmU9aGUuc3BsaXQoIi8iKS5wb3AoKSxbNCx0aGlz''@;'; put 'put ''LmdldEZvbGRlckRldGFpbHMoTyxlZSldO2Nhc2UgMTpyZXR1cm4gRi5zZW50KCk/ej1uZTooKHg9Ty5zcGxpdCgiLyIpKS5zcGxpY2UoeC5sZW5ndGgtMSwxKSxPPXguam9pbigiLyIpKSxbNCx0aGlzLmdldEZvbGRlclVyaShoZSxlZSldO2Nhc2UgMjpyZXR1cm4gUD1GLnNlbnQoKSxbNCx0''@;'; put 'put ''aGlzLmdldEZvbGRlclVyaShPLGVlKV07Y2FzZSAzOnJldHVybiBWPUYuc2VudCgpLFA/KFQ9bnVsbD09UD92b2lkIDA6UC5zcGxpdCgiLyIpLnBvcCgpLFs0LHRoaXMucmVxdWVzdENsaWVudC5wYXRjaCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwpLmNvbmNhdChQKSx7aWQ6VCxuYW1lOnos''@;'; put 'put ''cGFyZW50Rm9sZGVyVXJpOlZ9LGVlKS5jYXRjaChmdW5jdGlvbih5ZSl7dGhyb3cgeWUuY29kZSYmIkVOT1RGT1VORCI9PT15ZS5jb2RlP3tib2R5OnttZXNzYWdlOiJGb2xkZXIgJyIuY29uY2F0KGhlLnNwbGl0KCIvIikucG9wKCksIicgd2FzIG5vdCBmb3VuZC4iKX19OnllfSldKTpbMix2''@;'; put 'put ''b2lkIDBdO2Nhc2UgNDpyZXR1cm4oUz1GLnNlbnQoKS5yZXN1bHQpP1syLFNdOlsyLHZvaWQgMF19fSl9KX0sTWUucHJvdG90eXBlLmRlbGV0ZUZvbGRlcj1mdW5jdGlvbihoZSxPKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgeixlZSxuZSx4O3JldHVybiBX''@;'; put 'put ''KHRoaXMsZnVuY3Rpb24oVil7c3dpdGNoKFYubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldFJlY3ljbGVCaW5VcmkoTyldO2Nhc2UgMTpyZXR1cm4gej1WLnNlbnQoKSxlZT1oZS5zcGxpdCgiLyIpLnBvcCgpfHwiIixuZT1uZXcgRGF0ZSx4PW5lLnRvTG9jYWxlRGF0ZVN0cmluZygp''@;'; put 'put ''KyIgIituZS50b0xvY2FsZVRpbWVTdHJpbmcoKSxbNCx0aGlzLm1vdmVGb2xkZXIoaGUseixlZSsiICIreCxPKV07Y2FzZSAyOnJldHVyblsyLFYuc2VudCgpXX19KX0pfSxNZX0oKTtRLlNBU1ZpeWFBcGlDbGllbnQ9VGV9LDU5NTY6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''cmU9dGhpcyYmdGhpcy5fX2Fzc2lnbnx8ZnVuY3Rpb24oKXtyZXR1cm4gcmU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oVGUpe2Zvcih2YXIgTWUsaGU9MSxPPWFyZ3VtZW50cy5sZW5ndGg7aGU8TztoZSsrKWZvcih2YXIgeiBpbiBNZT1hcmd1bWVudHNbaGVdKU9iamVjdC5wcm90b3R5cGUu''@;'; put 'put ''aGFzT3duUHJvcGVydHkuY2FsbChNZSx6KSYmKFRlW3pdPU1lW3pdKTtyZXR1cm4gVGV9LHJlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sYWU9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKFRlLE1lLGhlLE8pe3JldHVybiBuZXcoaGV8fChoZT1Qcm9taXNlKSkoZnVuY3Rpb24oeixl''@;'; put 'put ''ZSl7ZnVuY3Rpb24gbmUoVil7dHJ5e1AoTy5uZXh0KFYpKX1jYXRjaChUKXtlZShUKX19ZnVuY3Rpb24geChWKXt0cnl7UChPLnRocm93KFYpKX1jYXRjaChUKXtlZShUKX19ZnVuY3Rpb24gUChWKXt2YXIgVDtWLmRvbmU/eihWLnZhbHVlKTooVD1WLnZhbHVlLFQgaW5zdGFuY2VvZiBoZT9U''@;'; put 'put ''Om5ldyBoZShmdW5jdGlvbihTKXtTKFQpfSkpLnRoZW4obmUseCl9UCgoTz1PLmFwcGx5KFRlLE1lfHxbXSkpLm5leHQoKSl9KX0sWT10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihUZSxNZSl7dmFyIGhlLE8seixlZSxuZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZ6''@;'; put 'put ''WzBdKXRocm93IHpbMV07cmV0dXJuIHpbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gZWU9e25leHQ6eCgwKSx0aHJvdzp4KDEpLHJldHVybjp4KDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoZWVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZWU7''@;'; put 'put ''ZnVuY3Rpb24geChQKXtyZXR1cm4gZnVuY3Rpb24oVil7cmV0dXJuIGZ1bmN0aW9uKFQpe2lmKGhlKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO25lOyl0cnl7aWYoaGU9MSxPJiYoej0yJlRbMF0/Ty5yZXR1cm46VFswXT9PLnRo''@;'; put 'put ''cm93fHwoKHo9Ty5yZXR1cm4pJiZ6LmNhbGwoTyksMCk6Ty5uZXh0KSYmISh6PXouY2FsbChPLFRbMV0pKS5kb25lKXJldHVybiB6O3N3aXRjaChPPTAseiYmKFQ9WzImVFswXSx6LnZhbHVlXSksVFswXSl7Y2FzZSAwOmNhc2UgMTp6PVQ7YnJlYWs7Y2FzZSA0OnJldHVybiBuZS5sYWJlbCsr''@;'; put 'put ''LHt2YWx1ZTpUWzFdLGRvbmU6ITF9O2Nhc2UgNTpuZS5sYWJlbCsrLE89VFsxXSxUPVswXTtjb250aW51ZTtjYXNlIDc6VD1uZS5vcHMucG9wKCksbmUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKHo9KHo9bmUudHJ5cykubGVuZ3RoPjAmJnpbei5sZW5ndGgtMV0pfHw2IT09''@;'; put 'put ''VFswXSYmMiE9PVRbMF0pKXtuZT0wO2NvbnRpbnVlfWlmKDM9PT1UWzBdJiYoIXp8fFRbMV0+elswXSYmVFsxXTx6WzNdKSl7bmUubGFiZWw9VFsxXTticmVha31pZig2PT09VFswXSYmbmUubGFiZWw8elsxXSl7bmUubGFiZWw9elsxXSx6PVQ7YnJlYWt9aWYoeiYmbmUubGFiZWw8elsyXSl7''@;'; put 'put ''bmUubGFiZWw9elsyXSxuZS5vcHMucHVzaChUKTticmVha316WzJdJiZuZS5vcHMucG9wKCksbmUudHJ5cy5wb3AoKTtjb250aW51ZX1UPU1lLmNhbGwoVGUsbmUpfWNhdGNoKFMpe1Q9WzYsU10sTz0wfWZpbmFsbHl7aGU9ej0wfWlmKDUmVFswXSl0aHJvdyBUWzFdO3JldHVybnt2YWx1ZTpU''@;'; put 'put ''WzBdP1RbMV06dm9pZCAwLGRvbmU6ITB9fShbUCxWXSl9fX0sVz10aGlzJiZ0aGlzLl9fc3ByZWFkQXJyYXl8fGZ1bmN0aW9uKFRlLE1lLGhlKXtpZihoZXx8Mj09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciBPLHo9MCxlZT1NZS5sZW5ndGg7ejxlZTt6KyspIU8mJnogaW4gTWV8fChPfHwo''@;'; put 'put ''Tz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChNZSwwLHopKSxPW3pdPU1lW3pdKTtyZXR1cm4gVGUuY29uY2F0KE98fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKE1lKSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgTj1qKDU5Mjgp''@;'; put 'put ''LHRlPWooMTIzMCksSz1qKDk4MjEpLEo9aig4MzA2KSxzZT1qKDM0NjcpLG9lPWooMTUyNyksY2U9aigzOTAwKSxkZT1qKDQ1ODgpLHZlPWooMzYwMiksQWU9aig4MjE3KSxrZT1qKDEzOTUpLFNlPXtzZXJ2ZXJVcmw6IiIscGF0aFNBU0pTOiIvU0FTanNBcGkvc3RwL2V4ZWN1dGUiLHBhdGhT''@;'; put 'put ''QVM5OiIvU0FTU3RvcmVkUHJvY2Vzcy9kbyIscGF0aFNBU1ZpeWE6Ii9TQVNKb2JFeGVjdXRpb24iLGFwcExvYzoiL1B1YmxpYy9zZWVkYXBwIixzZXJ2ZXJUeXBlOmNlLlNlcnZlclR5cGUuU2FzVml5YSxkZWJ1ZzohMSxjb250ZXh0TmFtZToiU0FTIEpvYiBFeGVjdXRpb24gY29tcHV0ZSBj''@;'; put 'put ''b250ZXh0Iix1c2VDb21wdXRlQXBpOm51bGwsbG9naW5NZWNoYW5pc206dGUuTG9naW5NZWNoYW5pc20uRGVmYXVsdH0sSWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBUZShNZSl7dmFyIGhlPXRoaXM7dGhpcy5zYXNqc0NvbmZpZz1uZXcgdGUuU0FTanNDb25maWcsdGhpcy5qb2JzUGF0aD0iIix0''@;'; put 'put ''aGlzLnNhc1ZpeWFBcGlDbGllbnQ9bnVsbCx0aGlzLnNhczlBcGlDbGllbnQ9bnVsbCx0aGlzLnNhc0pTQXBpQ2xpZW50PW51bGwsdGhpcy5maWxlVXBsb2FkZXI9bnVsbCx0aGlzLmF1dGhNYW5hZ2VyPW51bGwsdGhpcy5yZXF1ZXN0Q2xpZW50PW51bGwsdGhpcy53ZWJKb2JFeGVjdXRvcj1u''@;'; put 'put ''dWxsLHRoaXMuc2FzanNKb2JFeGVjdXRvcj1udWxsLHRoaXMuY29tcHV0ZUpvYkV4ZWN1dG9yPW51bGwsdGhpcy5qZXNKb2JFeGVjdXRvcj1udWxsLHRoaXMuc2FzOUpvYkV4ZWN1dG9yPW51bGwsdGhpcy5yZXNlbmRXYWl0aW5nUmVxdWVzdHM9ZnVuY3Rpb24oKXtyZXR1cm4gYWUoaGUsdm9p''@;'; put 'put ''ZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBPLHosZWUsbmU7cmV0dXJuIFkodGhpcyxmdW5jdGlvbih4KXtzd2l0Y2goeC5sYWJlbCl7Y2FzZSAwOnJldHVybls0LG51bGw9PT0oTz10aGlzLndlYkpvYkV4ZWN1dG9yKXx8dm9pZCAwPT09Tz92b2lkIDA6Ty5yZXNlbmRXYWl0aW5nUmVxdWVz''@;'; put 'put ''dHMoKV07Y2FzZSAxOnJldHVybiB4LnNlbnQoKSxbNCxudWxsPT09KHo9dGhpcy5jb21wdXRlSm9iRXhlY3V0b3IpfHx2b2lkIDA9PT16P3ZvaWQgMDp6LnJlc2VuZFdhaXRpbmdSZXF1ZXN0cygpXTtjYXNlIDI6cmV0dXJuIHguc2VudCgpLFs0LG51bGw9PT0oZWU9dGhpcy5qZXNKb2JFeGVj''@;'; put 'put ''dXRvcil8fHZvaWQgMD09PWVlP3ZvaWQgMDplZS5yZXNlbmRXYWl0aW5nUmVxdWVzdHMoKV07Y2FzZSAzOnJldHVybiB4LnNlbnQoKSxbNCxudWxsPT09KG5lPXRoaXMuZmlsZVVwbG9hZGVyKXx8dm9pZCAwPT09bmU/dm9pZCAwOm5lLnJlc2VuZFdhaXRpbmdSZXF1ZXN0cygpXTtjYXNlIDQ6''@;'; put 'put ''cmV0dXJuIHguc2VudCgpLFsyXX19KX0pfSx0aGlzLnNhc2pzQ29uZmlnPXJlKHJlKHt9LFNlKSxNZSksdGhpcy5zZXR1cENvbmZpZ3VyYXRpb24oKX1yZXR1cm4gVGUucHJvdG90eXBlLmdldENzcmZUb2tlbj1mdW5jdGlvbihNZSl7dmFyIGhlO3JldHVybiB2b2lkIDA9PT1NZSYmKE1lPSJn''@;'; put 'put ''ZW5lcmFsIiksbnVsbD09PShoZT10aGlzLnJlcXVlc3RDbGllbnQpfHx2b2lkIDA9PT1oZT92b2lkIDA6aGUuZ2V0Q3NyZlRva2VuKE1lKX0sVGUucHJvdG90eXBlLmV4ZWN1dGVTY3JpcHRTQVM5PWZ1bmN0aW9uKE1lLGhlLE8pe3ZhciB6O3JldHVybiBhZSh0aGlzLHZvaWQgMCx2b2lkIDAs''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKGVlKXtzd2l0Y2goZWUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZXhlY3V0ZVNjcmlwdFNBUzkiLFtjZS5TZXJ2ZXJUeXBlLlNhczldKSxbNCxudWxsPT09KHo9dGhpcy5zYXM5QXBpQ2xpZW50''@;'; put 'put ''KXx8dm9pZCAwPT09ej92b2lkIDA6ei5leGVjdXRlU2NyaXB0KE1lLGhlLE8pXTtjYXNlIDE6cmV0dXJuWzIsZWUuc2VudCgpXX19KX0pfSxUZS5wcm90b3R5cGUuZXhlY3V0ZVNjcmlwdFNBU2pzPWZ1bmN0aW9uKE1lLGhlLE8pe3ZhciB6O3JldHVybiBhZSh0aGlzLHZvaWQgMCx2b2lkIDAs''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKGVlKXtzd2l0Y2goZWUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZXhlY3V0ZVNjcmlwdFNBU0pTIixbY2UuU2VydmVyVHlwZS5TYXNqc10pLFs0LG51bGw9PT0oej10aGlzLnNhc0pTQXBpQ2xp''@;'; put 'put ''ZW50KXx8dm9pZCAwPT09ej92b2lkIDA6ei5leGVjdXRlU2NyaXB0KE1lLGhlLE8pXTtjYXNlIDE6cmV0dXJuWzIsZWUuc2VudCgpXX19KX0pfSxUZS5wcm90b3R5cGUuZXhlY3V0ZVNjcmlwdFNBU1ZpeWE9ZnVuY3Rpb24oTWUsaGUsTyx6LGVlKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9p''@;'; put 'put ''ZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihuZSl7c3dpdGNoKG5lLmxhYmVsKXtjYXNlIDA6aWYodGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZXhlY3V0ZVNjcmlwdFNBU1ZpeWEiLFtjZS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSwhKE89T3x8dGhpcy5zYXNqc0NvbmZpZy5j''@;'; put 'put ''b250ZXh0TmFtZSkpdGhyb3cgbmV3IEVycm9yKCJDb250ZXh0IG5hbWUgaXMgdW5kZWZpbmVkLiBQbGVhc2Ugc2V0IGEgYGNvbnRleHROYW1lYCBpbiB5b3VyIFNBU2pzIG9yIG92ZXJyaWRlIGNvbmZpZy4iKTtyZXR1cm5bNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZXhlY3V0ZVNjcmlwdChN''@;'; put 'put ''ZSxoZSxPLHosbnVsbCxlZXx8dGhpcy5zYXNqc0NvbmZpZy5kZWJ1ZyldO2Nhc2UgMTpyZXR1cm5bMixuZS5zZW50KCldfX0pfSl9LFRlLnByb3RvdHlwZS5nZXRDb21wdXRlQ29udGV4dHM9ZnVuY3Rpb24oTWUpe3JldHVybiBhZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gWSh0aGlzLGZ1bmN0aW9uKGhlKXtzd2l0Y2goaGUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZ2V0Q29tcHV0ZUNvbnRleHRzIixbY2UuU2VydmVyVHlwZS5TYXNWaXlhXSksWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldENvbXB1dGVDb250ZXh0''@;'; put 'put ''cyhNZSldO2Nhc2UgMTpyZXR1cm5bMixoZS5zZW50KCldfX0pfSl9LFRlLnByb3RvdHlwZS5nZXRMYXVuY2hlckNvbnRleHRzPWZ1bmN0aW9uKE1lKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihoZSl7c3dpdGNoKGhlLmxh''@;'; put 'put ''YmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImdldExhdW5jaGVyQ29udGV4dHMiLFtjZS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0TGF1bmNoZXJDb250ZXh0cyhNZSldO2Nhc2UgMTpyZXR1cm5bMixoZS5zZW50KCld''@;'; put 'put ''fX0pfSl9LFRlLnByb3RvdHlwZS5nZXREZWZhdWx0Q29tcHV0ZUNvbnRleHRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImdldERlZmF1bHRDb21wdXRlQ29udGV4dHMiLFtjZS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0''@;'; put 'put ''RGVmYXVsdENvbXB1dGVDb250ZXh0cygpfSxUZS5wcm90b3R5cGUuZ2V0RXhlY3V0YWJsZUNvbnRleHRzPWZ1bmN0aW9uKE1lKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihoZSl7c3dpdGNoKGhlLmxhYmVsKXtjYXNlIDA6''@;'; put 'put ''cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImdldEV4ZWN1dGFibGVDb250ZXh0cyIsW2NlLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5nZXRFeGVjdXRhYmxlQ29udGV4dHMoTWUpXTtjYXNlIDE6cmV0dXJuWzIsaGUuc2VudCgpXX19KX0pfSxU''@;'; put 'put ''ZS5wcm90b3R5cGUuY3JlYXRlQ29tcHV0ZUNvbnRleHQ9ZnVuY3Rpb24oTWUsaGUsTyx6LGVlLG5lKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbih4KXtzd2l0Y2goeC5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0''@;'; put 'put ''aG9kU3VwcG9ydGVkKCJjcmVhdGVDb21wdXRlQ29udGV4dCIsW2NlLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5jcmVhdGVDb21wdXRlQ29udGV4dChNZSxoZSxPLHosZWUsbmUpXTtjYXNlIDE6cmV0dXJuWzIseC5zZW50KCldfX0pfSl9LFRlLnByb3Rv''@;'; put 'put ''dHlwZS5jcmVhdGVMYXVuY2hlckNvbnRleHQ9ZnVuY3Rpb24oTWUsaGUsTyx6KXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihlZSl7c3dpdGNoKGVlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0''@;'; put 'put ''ZWQoImNyZWF0ZUxhdW5jaGVyQ29udGV4dCIsW2NlLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5jcmVhdGVMYXVuY2hlckNvbnRleHQoTWUsaGUsTyx6KV07Y2FzZSAxOnJldHVyblsyLGVlLnNlbnQoKV19fSl9KX0sVGUucHJvdG90eXBlLmVkaXRDb21w''@;'; put 'put ''dXRlQ29udGV4dD1mdW5jdGlvbihNZSxoZSxPKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbih6KXtzd2l0Y2goei5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJlZGl0Q29tcHV0ZUNvbnRl''@;'; put 'put ''eHQiLFtjZS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZWRpdENvbXB1dGVDb250ZXh0KE1lLGhlLE8pXTtjYXNlIDE6cmV0dXJuWzIsei5zZW50KCldfX0pfSl9LFRlLnByb3RvdHlwZS5kZWxldGVDb21wdXRlQ29udGV4dD1mdW5jdGlvbihNZSxoZSl7''@;'; put 'put ''cmV0dXJuIGFlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oTyl7c3dpdGNoKE8ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZGVsZXRlQ29tcHV0ZUNvbnRleHQiLFtjZS5TZXJ2ZXJUeXBlLlNhc1ZpeWFd''@;'; put 'put ''KSxbNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZGVsZXRlQ29tcHV0ZUNvbnRleHQoTWUsaGUpXTtjYXNlIDE6cmV0dXJuWzIsTy5zZW50KCldfX0pfSl9LFRlLnByb3RvdHlwZS5nZXRDb21wdXRlQ29udGV4dEJ5TmFtZT1mdW5jdGlvbihNZSxoZSl7cmV0dXJuIGFlKHRoaXMsdm9pZCAwLHZv''@;'; put 'put ''aWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oTyl7c3dpdGNoKE8ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZ2V0Q29tcHV0ZUNvbnRleHRCeU5hbWUiLFtjZS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCx0aGlzLnNhc1ZpeWFBcGlD''@;'; put 'put ''bGllbnQuZ2V0Q29tcHV0ZUNvbnRleHRCeU5hbWUoTWUsaGUpXTtjYXNlIDE6cmV0dXJuWzIsTy5zZW50KCldfX0pfSl9LFRlLnByb3RvdHlwZS5nZXRDb21wdXRlQ29udGV4dEJ5SWQ9ZnVuY3Rpb24oTWUsaGUpe3JldHVybiBhZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gWSh0aGlzLGZ1bmN0aW9uKE8pe3N3aXRjaChPLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImdldENvbXB1dGVDb250ZXh0QnlJZCIsW2NlLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5nZXRDb21wdXRlQ29udGV4''@;'; put 'put ''dEJ5SWQoTWUsaGUpXTtjYXNlIDE6cmV0dXJuWzIsTy5zZW50KCldfX0pfSl9LFRlLnByb3RvdHlwZS5jcmVhdGVTZXNzaW9uPWZ1bmN0aW9uKE1lLGhlKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihPKXtzd2l0Y2goTy5s''@;'; put 'put ''YWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJjcmVhdGVTZXNzaW9uIixbY2UuU2VydmVyVHlwZS5TYXNWaXlhXSksWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmNyZWF0ZVNlc3Npb24oTWUsaGUpXTtjYXNlIDE6cmV0dXJuWzIsTy5zZW50KCldfX0pfSl9LFRl''@;'; put 'put ''LnByb3RvdHlwZS5jcmVhdGVGb2xkZXI9ZnVuY3Rpb24oTWUsaGUsTyx6LGVlLG5lKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbih4KXtzd2l0Y2goeC5sYWJlbCl7Y2FzZSAwOnJldHVybiBlZT9bNCxlZS5jcmVhdGVGb2xk''@;'; put 'put ''ZXIoTWUsaGUsTyx6KV06WzMsMl07Y2FzZSAxOmNhc2UgMzpyZXR1cm5bMix4LnNlbnQoKV07Y2FzZSAyOnJldHVybls0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5jcmVhdGVGb2xkZXIoTWUsaGUsTyx6LG5lKV19fSl9KX0sVGUucHJvdG90eXBlLmNyZWF0ZUZpbGU9ZnVuY3Rpb24oTWUsaGUs''@;'; put 'put ''Tyx6LGVlLG5lKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbih4KXtzd2l0Y2goeC5sYWJlbCl7Y2FzZSAwOnJldHVybiBuZT9bNCxuZS5jcmVhdGVGaWxlKE1lLGhlLE8seixlZSldOlszLDJdO2Nhc2UgMTpjYXNlIDM6cmV0''@;'; put 'put ''dXJuWzIseC5zZW50KCldO2Nhc2UgMjpyZXR1cm5bNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuY3JlYXRlRmlsZShNZSxoZSxPLHosZWUpXX19KX0pfSxUZS5wcm90b3R5cGUuZ2V0Rm9sZGVyPWZ1bmN0aW9uKE1lLGhlKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIFkodGhpcyxmdW5jdGlvbihPKXtzd2l0Y2goTy5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJnZXRGb2xkZXIiLFtjZS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0Rm9sZGVyKE1lLGhlKV07Y2FzZSAx''@;'; put 'put ''OnJldHVyblsyLE8uc2VudCgpXX19KX0pfSxUZS5wcm90b3R5cGUuZGVsZXRlRm9sZGVyPWZ1bmN0aW9uKE1lLGhlKXt2YXIgTztyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbih6KXtzd2l0Y2goei5sYWJlbCl7Y2FzZSAwOnJl''@;'; put 'put ''dHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJkZWxldGVGb2xkZXIiLFtjZS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCxudWxsPT09KE89dGhpcy5zYXNWaXlhQXBpQ2xpZW50KXx8dm9pZCAwPT09Tz92b2lkIDA6Ty5kZWxldGVGb2xkZXIoTWUsaGUpXTtjYXNlIDE6cmV0dXJuWzIsei5z''@;'; put 'put ''ZW50KCldfX0pfSl9LFRlLnByb3RvdHlwZS5saXN0Rm9sZGVyPWZ1bmN0aW9uKE1lLGhlLE8pe3ZhciB6O3JldHVybiBhZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKGVlKXtzd2l0Y2goZWUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5p''@;'; put 'put ''c01ldGhvZFN1cHBvcnRlZCgibGlzdEZvbGRlciIsW2NlLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LG51bGw9PT0oej10aGlzLnNhc1ZpeWFBcGlDbGllbnQpfHx2b2lkIDA9PT16P3ZvaWQgMDp6Lmxpc3RGb2xkZXIoTWUsaGUsTyldO2Nhc2UgMTpyZXR1cm5bMixlZS5zZW50KCldfX0pfSl9''@;'; put 'put ''LFRlLnByb3RvdHlwZS5tb3ZlRm9sZGVyPWZ1bmN0aW9uKE1lLGhlLE8seil7dmFyIGVlO3JldHVybiBhZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKG5lKXtzd2l0Y2gobmUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1''@;'; put 'put ''cHBvcnRlZCgibW92ZUZvbGRlciIsW2NlLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LG51bGw9PT0oZWU9dGhpcy5zYXNWaXlhQXBpQ2xpZW50KXx8dm9pZCAwPT09ZWU/dm9pZCAwOmVlLm1vdmVGb2xkZXIoTWUsaGUsTyx6KV07Y2FzZSAxOnJldHVyblsyLG5lLnNlbnQoKV19fSl9KX0sVGUu''@;'; put 'put ''cHJvdG90eXBlLmNyZWF0ZUpvYkRlZmluaXRpb249ZnVuY3Rpb24oTWUsaGUsTyx6LGVlLG5lKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbih4KXtzd2l0Y2goeC5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9k''@;'; put 'put ''U3VwcG9ydGVkKCJjcmVhdGVKb2JEZWZpbml0aW9uIixbY2UuU2VydmVyVHlwZS5TYXNWaXlhXSksbmU/WzQsbmUuY3JlYXRlSm9iRGVmaW5pdGlvbihNZSxoZSxPLHosZWUpXTpbMywyXTtjYXNlIDE6Y2FzZSAzOnJldHVyblsyLHguc2VudCgpXTtjYXNlIDI6cmV0dXJuWzQsdGhpcy5zYXNW''@;'; put 'put ''aXlhQXBpQ2xpZW50LmNyZWF0ZUpvYkRlZmluaXRpb24oTWUsaGUsTyx6LGVlKV19fSl9KX0sVGUucHJvdG90eXBlLmdldEF1dGhDb2RlPWZ1bmN0aW9uKE1lKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihoZSl7c3dpdGNo''@;'; put 'put ''KGhlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImdldEF1dGhDb2RlIixbY2UuU2VydmVyVHlwZS5TYXNWaXlhXSksWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldEF1dGhDb2RlKE1lKV07Y2FzZSAxOnJldHVyblsyLGhlLnNlbnQoKV19fSl9KX0sVGUu''@;'; put 'put ''cHJvdG90eXBlLmdldEFjY2Vzc1Rva2VuPWZ1bmN0aW9uKE1lLGhlLE8pe3JldHVybiBhZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKHope3N3aXRjaCh6LmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImdl''@;'; put 'put ''dEFjY2Vzc1Rva2VuIixbY2UuU2VydmVyVHlwZS5TYXNWaXlhLGNlLlNlcnZlclR5cGUuU2FzanNdKSx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUhPT1jZS5TZXJ2ZXJUeXBlLlNhc2pzP1szLDJdOls0LHRoaXMuc2FzSlNBcGlDbGllbnQuZ2V0QWNjZXNzVG9rZW4oTWUsTyldO2Nhc2Ug''@;'; put 'put ''MTpjYXNlIDM6cmV0dXJuWzIsei5zZW50KCldO2Nhc2UgMjpyZXR1cm5bNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0QWNjZXNzVG9rZW4oTWUsaGUsTyldfX0pfSl9LFRlLnByb3RvdHlwZS5yZWZyZXNoVG9rZW5zPWZ1bmN0aW9uKE1lLGhlLE8pe3JldHVybiBhZSh0aGlzLHZvaWQgMCx2''@;'; put 'put ''b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKHope3N3aXRjaCh6LmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoInJlZnJlc2hUb2tlbnMiLFtjZS5TZXJ2ZXJUeXBlLlNhc1ZpeWEsY2UuU2VydmVyVHlwZS5TYXNqc10pLHRoaXMuc2Fz''@;'; put 'put ''anNDb25maWcuc2VydmVyVHlwZSE9PWNlLlNlcnZlclR5cGUuU2FzanM/WzMsMl06WzQsdGhpcy5zYXNKU0FwaUNsaWVudC5yZWZyZXNoVG9rZW5zKE8pXTtjYXNlIDE6Y2FzZSAzOnJldHVyblsyLHouc2VudCgpXTtjYXNlIDI6cmV0dXJuWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LnJlZnJl''@;'; put 'put ''c2hUb2tlbnMoTWUsaGUsTyldfX0pfSl9LFRlLnByb3RvdHlwZS5kZWxldGVDbGllbnQ9ZnVuY3Rpb24oTWUsaGUpe3JldHVybiBhZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKE8pe3N3aXRjaChPLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRo''@;'; put 'put ''aXMuaXNNZXRob2RTdXBwb3J0ZWQoImRlbGV0ZUNsaWVudCIsW2NlLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5kZWxldGVDbGllbnQoTWUsaGUpXTtjYXNlIDE6cmV0dXJuWzIsTy5zZW50KCldfX0pfSl9LFRlLnByb3RvdHlwZS5nZXRTYXNqc0NvbmZp''@;'; put 'put ''Zz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNhc2pzQ29uZmlnfSxUZS5wcm90b3R5cGUuZ2V0VXNlck5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdXRoTWFuYWdlci51c2VyTmFtZX0sVGUucHJvdG90eXBlLnNldFNBU2pzQ29uZmlnPWZ1bmN0aW9uKE1lKXtyZXR1cm4gYWUodGhpcyx2''@;'; put 'put ''b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihoZSl7cmV0dXJuIHRoaXMuc2FzanNDb25maWc9cmUocmUoe30sdGhpcy5zYXNqc0NvbmZpZyksTWUpLHRoaXMuc2V0dXBDb25maWd1cmF0aW9uKCksWzJdfSl9KX0sVGUucHJvdG90eXBlLnNldERlYnVnU3Rh''@;'; put 'put ''dGU9ZnVuY3Rpb24oTWUpe3RoaXMuc2FzanNDb25maWcuZGVidWc9TWUsdGhpcy5zYXNWaXlhQXBpQ2xpZW50JiYodGhpcy5zYXNWaXlhQXBpQ2xpZW50LmRlYnVnPU1lKX0sVGUucHJvdG90eXBlLmNoZWNrU2Vzc2lvbj1mdW5jdGlvbigpe3JldHVybiBhZSh0aGlzLHZvaWQgMCx2b2lkIDAs''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKE1lKXtyZXR1cm5bMix0aGlzLmF1dGhNYW5hZ2VyLmNoZWNrU2Vzc2lvbigpXX0pfSl9LFRlLnByb3RvdHlwZS5sb2dJbj1mdW5jdGlvbihNZSxoZSxPLHope3JldHVybiB2b2lkIDA9PT16JiYoej17fSksYWUodGhpcyx2b2lkIDAs''@;'; put 'put ''dm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihlZSl7aWYodGhpcy5zYXNqc0NvbmZpZy5sb2dpbk1lY2hhbmlzbT09PXRlLkxvZ2luTWVjaGFuaXNtLkRlZmF1bHQpe2lmKCFNZXx8IWhlKXRocm93IG5ldyBFcnJvcigiQSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgYXJl''@;'; put 'put ''IHJlcXVpcmVkIHdoZW4gdXNpbmcgdGhlIGRlZmF1bHQgbG9naW4gbWVjaGFuaXNtLiIpO3JldHVyblsyLHRoaXMuYXV0aE1hbmFnZXIubG9nSW4oTWUsaGUpXX1pZigidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdyl0aHJvdyBuZXcgRXJyb3IoIlRoZSByZWRpcmVjdGVkIGxvZ2luIG1lY2hh''@;'; put 'put ''bmlzbSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIHRoZSBicm93c2VyLiIpO3JldHVyblsyLHRoaXMuYXV0aE1hbmFnZXIucmVkaXJlY3RlZExvZ0luKHopXX0pfSl9LFRlLnByb3RvdHlwZS5sb2dPdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdXRoTWFuYWdlci5sb2dPdXQoKX0s''@;'; put 'put ''VGUucHJvdG90eXBlLnVwbG9hZEZpbGU9ZnVuY3Rpb24oTWUsaGUsTyx6LGVlKXtyZXR1cm4gdm9pZCAwPT09eiYmKHo9e30pLGFlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oeCl7c3dpdGNoKHgubGFiZWwpe2Nhc2UgMDpyZXR1cm4gej1y''@;'; put 'put ''ZShyZSh7fSx0aGlzLnNhc2pzQ29uZmlnKSx6KSxbNCx0aGlzLmZpbGVVcGxvYWRlci5leGVjdXRlKE1lLHtmaWxlczpoZSxwYXJhbXM6T30seixlZSldO2Nhc2UgMTpyZXR1cm5bMix4LnNlbnQoKV19fSl9KX0sVGUucHJvdG90eXBlLnJlcXVlc3Q9ZnVuY3Rpb24oTWUsaGUsTyx6LGVlLG5l''@;'; put 'put ''KXtyZXR1cm4gdm9pZCAwPT09TyYmKE89e30pLHZvaWQgMD09PW5lJiYobmU9W10pLGFlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB4O3JldHVybiBZKHRoaXMsZnVuY3Rpb24oUCl7c3dpdGNoKFAubGFiZWwpe2Nhc2UgMDpyZXR1cm4gTz1yZShyZSh7fSx0aGlzLnNhc2pz''@;'; put 'put ''Q29uZmlnKSxPKSwoeD0oMCxOLnZhbGlkYXRlSW5wdXQpKGhlKSkuc3RhdHVzP08uc2VydmVyVHlwZSE9PWNlLlNlcnZlclR5cGUuU2FzanM/WzMsMl06WzQsdGhpcy5zYXNqc0pvYkV4ZWN1dG9yLmV4ZWN1dGUoTWUsaGUsTyx6LGVlLG5lKV06WzMsMTJdO2Nhc2UgMTpjYXNlIDM6Y2FzZSA1''@;'; put 'put ''OmNhc2UgODpjYXNlIDEwOnJldHVyblsyLFAuc2VudCgpXTtjYXNlIDI6cmV0dXJuIE8uc2VydmVyVHlwZSE9PWNlLlNlcnZlclR5cGUuU2FzVml5YXx8bnVsbD09Ty51c2VDb21wdXRlQXBpP1szLDddOk8udXNlQ29tcHV0ZUFwaT9bNCx0aGlzLmNvbXB1dGVKb2JFeGVjdXRvci5leGVjdXRl''@;'; put 'put ''KE1lLGhlLE8seixlZSldOlszLDRdO2Nhc2UgNDpyZXR1cm4gTy5jb250ZXh0TmFtZXx8KE89cmUocmUoe30sTykse2NvbnRleHROYW1lOiJTQVMgSm9iIEV4ZWN1dGlvbiBjb21wdXRlIGNvbnRleHQifSkpLFs0LHRoaXMuamVzSm9iRXhlY3V0b3IuZXhlY3V0ZShNZSxoZSxPLHosZWUsbmUp''@;'; put 'put ''XTtjYXNlIDY6cmV0dXJuWzMsMTFdO2Nhc2UgNzpyZXR1cm4gTy5zZXJ2ZXJUeXBlPT09Y2UuU2VydmVyVHlwZS5TYXM5JiZPLnVzZXJuYW1lJiZPLnBhc3N3b3JkP1s0LHRoaXMuc2FzOUpvYkV4ZWN1dG9yLmV4ZWN1dGUoTWUsaGUsTyldOlszLDldO2Nhc2UgOTpyZXR1cm5bNCx0aGlzLndl''@;'; put 'put ''YkpvYkV4ZWN1dG9yLmV4ZWN1dGUoTWUsaGUsTyx6LGVlLG5lKV07Y2FzZSAxMTpyZXR1cm5bMywxM107Y2FzZSAxMjpyZXR1cm5bMixQcm9taXNlLnJlamVjdChuZXcga2UuRXJyb3JSZXNwb25zZSh4Lm1zZykpXTtjYXNlIDEzOnJldHVyblsyXX19KX0pfSxUZS5wcm90b3R5cGUuZGVwbG95''@;'; put 'put ''U2VydmljZVBhY2s9ZnVuY3Rpb24oTWUsaGUsTyx6LGVlKXtyZXR1cm4gdm9pZCAwPT09ZWUmJihlZT0hMSksYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG5lLHg7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihWKXtzd2l0Y2goVi5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlz''@;'; put 'put ''LmlzTWV0aG9kU3VwcG9ydGVkKCJkZXBsb3lTZXJ2aWNlUGFjayIsW2NlLlNlcnZlclR5cGUuU2FzVml5YV0pLG5lPW51bGwsT3x8aGU/KE98fChPPXRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsKSxoZXx8KGhlPXRoaXMuc2FzanNDb25maWcuYXBwTG9jKSx0aGlzLnNhc2pzQ29uZmlnLnNl''@;'; put 'put ''cnZlclR5cGU9PT1jZS5TZXJ2ZXJUeXBlLlNhc1ZpeWE/KG5lPW5ldyBLLlNBU1ZpeWFBcGlDbGllbnQoTyxoZSx0aGlzLnNhc2pzQ29uZmlnLmNvbnRleHROYW1lLHRoaXMucmVxdWVzdENsaWVudCkpLmRlYnVnPXRoaXMuc2FzanNDb25maWcuZGVidWc6dGhpcy5zYXNqc0NvbmZpZy5zZXJ2''@;'; put 'put ''ZXJUeXBlPT09Y2UuU2VydmVyVHlwZS5TYXM5JiYobmU9bmV3IEouU0FTOUFwaUNsaWVudChPLHRoaXMuam9ic1BhdGgsdGhpcy5zYXNqc0NvbmZpZy5odHRwc0FnZW50T3B0aW9ucykpKTooeD1udWxsLHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT09PWNlLlNlcnZlclR5cGUuU2FzVml5''@;'; put 'put ''YT94PXRoaXMuc2FzVml5YUFwaUNsaWVudC5nZXRDb25maWcoKTp0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGU9PT1jZS5TZXJ2ZXJUeXBlLlNhczkmJih4PXRoaXMuc2FzOUFwaUNsaWVudC5nZXRDb25maWcoKSksTz14LnNlcnZlclVybCxoZT14LnJvb3RGb2xkZXJOYW1lKSxNZS5tZW1i''@;'; put 'put ''ZXJzWzBdLm1lbWJlcnMmJk1lLm1lbWJlcnNbMF0ubWVtYmVycy5zb3J0KGZ1bmN0aW9uKFQpe3JldHVybiJmb2xkZXIiPT09VC50eXBlPy0xOjF9KSxbNCx0aGlzLmNyZWF0ZUZvbGRlcnNBbmRTZXJ2aWNlcyhoZSxNZS5tZW1iZXJzLHosbmUsZWUpXTtjYXNlIDE6cmV0dXJuIFYuc2VudCgp''@;'; put 'put ''LFsyXX19KX0pfSxUZS5wcm90b3R5cGUuZGVwbG95VG9TQVNqcz1mdW5jdGlvbihNZSxoZSxPKXt2YXIgejtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihlZSl7c3dpdGNoKGVlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIGhlfHwo''@;'; put 'put ''aGU9dGhpcy5zYXNqc0NvbmZpZy5hcHBMb2MpLFs0LG51bGw9PT0oej10aGlzLnNhc0pTQXBpQ2xpZW50KXx8dm9pZCAwPT09ej92b2lkIDA6ei5kZXBsb3koTWUsaGUsTyldO2Nhc2UgMTpyZXR1cm5bMixlZS5zZW50KCldfX0pfSl9LFRlLnByb3RvdHlwZS5leGVjdXRlSm9iU0FTanM9ZnVu''@;'; put 'put ''Y3Rpb24oTWUsaGUpe3ZhciBPO3JldHVybiBhZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKHope3N3aXRjaCh6LmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsbnVsbD09PShPPXRoaXMuc2FzSlNBcGlDbGllbnQpfHx2b2lkIDA9PT1PP3ZvaWQg''@;'; put 'put ''MDpPLmV4ZWN1dGVKb2IoTWUsdGhpcy5zYXNqc0NvbmZpZy5hcHBMb2MsaGUpXTtjYXNlIDE6cmV0dXJuWzIsei5zZW50KCldfX0pfSl9LFRlLnByb3RvdHlwZS5zdGFydENvbXB1dGVKb2I9ZnVuY3Rpb24oTWUsaGUsTyx6LGVlLG5lLHgsUCl7dmFyIFY7cmV0dXJuIHZvaWQgMD09PU8mJihP''@;'; put 'put ''PXt9KSx2b2lkIDA9PT14JiYoeD0hMSksYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihUKXtpZihPPXJlKHJlKHt9LHRoaXMuc2FzanNDb25maWcpLE8pLHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoInN0YXJ0Q29tcHV0ZUpvYiIsW2NlLlNl''@;'; put 'put ''cnZlclR5cGUuU2FzVml5YV0pLCFPLmNvbnRleHROYW1lKXRocm93IG5ldyBFcnJvcigiQ29udGV4dCBuYW1lIGlzIHVuZGVmaW5lZC4gUGxlYXNlIHNldCBhIGBjb250ZXh0TmFtZWAgaW4geW91ciBTQVNqcyBvciBvdmVycmlkZSBjb25maWcuIik7cmV0dXJuWzIsbnVsbD09PShWPXRoaXMu''@;'; put 'put ''c2FzVml5YUFwaUNsaWVudCl8fHZvaWQgMD09PVY/dm9pZCAwOlYuZXhlY3V0ZUNvbXB1dGVKb2IoTWUsTy5jb250ZXh0TmFtZSxPLmRlYnVnLGhlLHosISFlZSwhMSxuZSx4LFApXX0pfSl9LFRlLnByb3RvdHlwZS5mZXRjaExvZ0ZpbGVDb250ZW50PWZ1bmN0aW9uKE1lLGhlKXtyZXR1cm4g''@;'; put 'put ''YWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihPKXtzd2l0Y2goTy5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoTWUsaGUpLnRoZW4oZnVuY3Rpb24oeil7aWYoIXopcmV0dXJuIFByb21pc2UucmVqZWN0''@;'; put 'put ''KG5ldyBrZS5FcnJvclJlc3BvbnNlKCJFcnJvciB3aGlsZSBmZXRjaGluZyBsb2cuIFJlc3BvbnNlIHdhcyBub3QgcHJvdmlkZWQuIikpO3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoei5yZXN1bHQpfWNhdGNoKGVlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGtlLkVycm9yUmVzcG9u''@;'; put 'put ''c2UoIkVycm9yIHdoaWxlIGZldGNoaW5nIGxvZy4gVGhlIHJlc3VsdCBpcyBub3QgdmFsaWQuIixlZSkpfX0pXTtjYXNlIDE6cmV0dXJuWzIsTy5zZW50KCldfX0pfSl9LFRlLnByb3RvdHlwZS5nZXRTYXNSZXF1ZXN0cz1mdW5jdGlvbigpe3JldHVybiBXKFtdLHRoaXMucmVxdWVzdENsaWVu''@;'; put 'put ''dC5nZXRSZXF1ZXN0cygpLCEwKS5zb3J0KE4uY29tcGFyZVRpbWVzdGFtcHMpfSxUZS5wcm90b3R5cGUuY2xlYXJTYXNSZXF1ZXN0cz1mdW5jdGlvbigpe3RoaXMucmVxdWVzdENsaWVudC5jbGVhclJlcXVlc3RzKCl9LFRlLnByb3RvdHlwZS5zZXR1cENvbmZpZ3VyYXRpb249ZnVuY3Rpb24o''@;'; put 'put ''KXtpZih2b2lkIDA9PT10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybHx8IiI9PT10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybClpZigidW5kZWZpbmVkIiE9dHlwZW9mIGxvY2F0aW9uKXt2YXIgTWU9IiIuY29uY2F0KGxvY2F0aW9uLnByb3RvY29sLCIvLyIpLmNvbmNhdChsb2NhdGlvbi5o''@;'; put 'put ''b3N0bmFtZSk7bG9jYXRpb24ucG9ydCYmKE1lPSIiLmNvbmNhdChNZSwiOiIpLmNvbmNhdChsb2NhdGlvbi5wb3J0KSksdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmw9TWV9ZWxzZSB0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybD0iIjsiLyI9PT10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVy''@;'; put 'put ''bC5zbGljZSgtMSkmJih0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybD10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybC5zbGljZSgwLC0xKSksdGhpcy5yZXF1ZXN0Q2xpZW50P3RoaXMucmVxdWVzdENsaWVudC5zZXRDb25maWcodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5zYXNq''@;'; put 'put ''c0NvbmZpZy5odHRwc0FnZW50T3B0aW9ucyk6dGhpcy5yZXF1ZXN0Q2xpZW50PW5ldyh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGU9PT1jZS5TZXJ2ZXJUeXBlLlNhc2pzP3ZlLlNhc2pzUmVxdWVzdENsaWVudDpkZS5SZXF1ZXN0Q2xpZW50KSh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVy''@;'; put 'put ''bCx0aGlzLnNhc2pzQ29uZmlnLmh0dHBzQWdlbnRPcHRpb25zLHRoaXMuc2FzanNDb25maWcucmVxdWVzdEhpc3RvcnlMaW1pdCksdGhpcy5qb2JzUGF0aD10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGU9PT1jZS5TZXJ2ZXJUeXBlLlNhc1ZpeWE/dGhpcy5zYXNqc0NvbmZpZy5wYXRoU0FT''@;'; put 'put ''Vml5YTp0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGU9PT1jZS5TZXJ2ZXJUeXBlLlNhczk/dGhpcy5zYXNqc0NvbmZpZy5wYXRoU0FTOTp0aGlzLnNhc2pzQ29uZmlnLnBhdGhTQVNKUyx0aGlzLmF1dGhNYW5hZ2VyPW5ldyBvZS5BdXRoTWFuYWdlcih0aGlzLnNhc2pzQ29uZmlnLnNlcnZl''@;'; put 'put ''clVybCx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUsdGhpcy5yZXF1ZXN0Q2xpZW50LHRoaXMucmVzZW5kV2FpdGluZ1JlcXVlc3RzKSx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGU9PT1jZS5TZXJ2ZXJUeXBlLlNhc1ZpeWEmJih0aGlzLnNhc1ZpeWFBcGlDbGllbnQ/dGhpcy5zYXNW''@;'; put 'put ''aXlhQXBpQ2xpZW50LnNldENvbmZpZyh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCx0aGlzLnNhc2pzQ29uZmlnLmFwcExvYyk6dGhpcy5zYXNWaXlhQXBpQ2xpZW50PW5ldyBLLlNBU1ZpeWFBcGlDbGllbnQodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5zYXNqc0NvbmZpZy5h''@;'; put 'put ''cHBMb2MsdGhpcy5zYXNqc0NvbmZpZy5jb250ZXh0TmFtZSx0aGlzLnJlcXVlc3RDbGllbnQpLHRoaXMuc2FzVml5YUFwaUNsaWVudC5kZWJ1Zz10aGlzLnNhc2pzQ29uZmlnLmRlYnVnKSx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGU9PT1jZS5TZXJ2ZXJUeXBlLlNhczkmJih0aGlzLnNh''@;'; put 'put ''czlBcGlDbGllbnQ/dGhpcy5zYXM5QXBpQ2xpZW50LnNldENvbmZpZyh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCk6dGhpcy5zYXM5QXBpQ2xpZW50PW5ldyBKLlNBUzlBcGlDbGllbnQodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5qb2JzUGF0aCx0aGlzLnNhc2pzQ29uZmln''@;'; put 'put ''Lmh0dHBzQWdlbnRPcHRpb25zKSksdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlPT09Y2UuU2VydmVyVHlwZS5TYXNqcyYmKHRoaXMuc2FzSlNBcGlDbGllbnR8fCh0aGlzLnNhc0pTQXBpQ2xpZW50PW5ldyBzZS5TQVNqc0FwaUNsaWVudCh0aGlzLnJlcXVlc3RDbGllbnQpKSksdGhpcy5m''@;'; put 'put ''aWxlVXBsb2FkZXI9bmV3IEFlLkZpbGVVcGxvYWRlcih0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUsdGhpcy5qb2JzUGF0aCx0aGlzLnJlcXVlc3RDbGllbnQpLHRoaXMud2ViSm9iRXhlY3V0b3I9bmV3IEFlLldlYkpvYkV4ZWN1dG9yKHRo''@;'; put 'put ''aXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZSx0aGlzLmpvYnNQYXRoLHRoaXMucmVxdWVzdENsaWVudCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQpLHRoaXMuc2FzanNKb2JFeGVjdXRvcj1uZXcgQWUuU2FzanNKb2JFeGVjdXRvcih0aGlzLnNhc2pz''@;'; put 'put ''Q29uZmlnLnNlcnZlclVybCx0aGlzLmpvYnNQYXRoLHRoaXMucmVxdWVzdENsaWVudCksdGhpcy5zYXM5Sm9iRXhlY3V0b3I9bmV3IEFlLlNhczlKb2JFeGVjdXRvcih0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUsdGhpcy5qb2JzUGF0aCx0''@;'; put 'put ''aGlzLnJlcXVlc3RDbGllbnQsdGhpcy5zYXNqc0NvbmZpZy5odHRwc0FnZW50T3B0aW9ucyksdGhpcy5jb21wdXRlSm9iRXhlY3V0b3I9bmV3IEFlLkNvbXB1dGVKb2JFeGVjdXRvcih0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQpLHRoaXMuamVzSm9i''@;'; put 'put ''RXhlY3V0b3I9bmV3IEFlLkplc0pvYkV4ZWN1dG9yKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuc2FzVml5YUFwaUNsaWVudCl9LFRlLnByb3RvdHlwZS5jcmVhdGVGb2xkZXJzQW5kU2VydmljZXM9ZnVuY3Rpb24oTWUsaGUsTyx6LGVlKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAs''@;'; put 'put ''dm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG5lPXRoaXM7cmV0dXJuIFkodGhpcyxmdW5jdGlvbih4KXtzd2l0Y2goeC5sYWJlbCl7Y2FzZSAwOnJldHVybls0LCgwLE4uYXN5bmNGb3JFYWNoKShoZSxmdW5jdGlvbihQKXtyZXR1cm4gYWUobmUsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBZKHRoaXMsZnVuY3Rpb24oVil7c3dpdGNoKFYubGFiZWwpe2Nhc2UgMDpzd2l0Y2goUC50eXBlKXtjYXNlImZvbGRlciI6cmV0dXJuWzMsMV07Y2FzZSJmaWxlIjpyZXR1cm5bMywzXTtjYXNlInNlcnZpY2UiOnJldHVyblszLDVdfXJldHVyblszLDddO2Nhc2UgMTpyZXR1cm5bNCx0aGlz''@;'; put 'put ''LmNyZWF0ZUZvbGRlcihQLm5hbWUsTWUsdm9pZCAwLE8seixlZSldO2Nhc2UgMjpyZXR1cm4gVi5zZW50KCksWzMsOF07Y2FzZSAzOnJldHVybls0LHRoaXMuY3JlYXRlRmlsZShQLm5hbWUsUC5jb2RlLE1lLHZvaWQgMCxPLHopXTtjYXNlIDQ6cmV0dXJuIFYuc2VudCgpLFszLDhdO2Nhc2Ug''@;'; put 'put ''NTpyZXR1cm5bNCx0aGlzLmNyZWF0ZUpvYkRlZmluaXRpb24oUC5uYW1lLFAuY29kZSxNZSx2b2lkIDAsTyx6KV07Y2FzZSA2OnJldHVybiBWLnNlbnQoKSxbMyw4XTtjYXNlIDc6dGhyb3cgbmV3IEVycm9yKCJVbmlkZW50aWZpZWQgbWVtYmVyICciLmNvbmNhdChQLm5hbWUsIicgcHJvdmlk''@;'; put 'put ''ZWQuIikpO2Nhc2UgODpyZXR1cm4iZm9sZGVyIj09PVAudHlwZSYmUC5tZW1iZXJzJiZQLm1lbWJlcnMubGVuZ3RoP1s0LHRoaXMuY3JlYXRlRm9sZGVyc0FuZFNlcnZpY2VzKCIiLmNvbmNhdChNZSwiLyIpLmNvbmNhdChQLm5hbWUpLFAubWVtYmVycyxPLHosZWUpXTpbMywxMF07Y2FzZSA5''@;'; put 'put ''OlYuc2VudCgpLFYubGFiZWw9MTA7Y2FzZSAxMDpyZXR1cm5bMl19fSl9KX0pXTtjYXNlIDE6cmV0dXJuIHguc2VudCgpLFsyXX19KX0pfSxUZS5wcm90b3R5cGUuaXNNZXRob2RTdXBwb3J0ZWQ9ZnVuY3Rpb24oTWUsaGUpe2lmKCF0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGV8fCFoZS5p''@;'; put 'put ''bmNsdWRlcyh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUpKXRocm93IG5ldyBFcnJvcigiTWV0aG9kICciLmNvbmNhdChNZSwiJyBpcyBvbmx5IHN1cHBvcnRlZCBvbiAiKS5jb25jYXQoaGUuam9pbigiLCAiKSwiIHNlcnZlcnMuIikpfSxUZX0oKTtRLmRlZmF1bHQ9SWV9LDM0Njc6ZnVu''@;'; put 'put ''Y3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9dGhpcyYmdGhpcy5fX2Fzc2lnbnx8ZnVuY3Rpb24oKXtyZXR1cm4gcmU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oc2Upe2Zvcih2YXIgb2UsY2U9MSxkZT1hcmd1bWVudHMubGVuZ3RoO2NlPGRlO2NlKyspZm9yKHZhciB2ZSBpbiBv''@;'; put 'put ''ZT1hcmd1bWVudHNbY2VdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvZSx2ZSkmJihzZVt2ZV09b2VbdmVdKTtyZXR1cm4gc2V9LHJlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sYWU9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHNlLG9lLGNlLGRlKXtyZXR1''@;'; put 'put ''cm4gbmV3KGNlfHwoY2U9UHJvbWlzZSkpKGZ1bmN0aW9uKHZlLEFlKXtmdW5jdGlvbiBrZShUZSl7dHJ5e0llKGRlLm5leHQoVGUpKX1jYXRjaChNZSl7QWUoTWUpfX1mdW5jdGlvbiBTZShUZSl7dHJ5e0llKGRlLnRocm93KFRlKSl9Y2F0Y2goTWUpe0FlKE1lKX19ZnVuY3Rpb24gSWUoVGUp''@;'; put 'put ''e3ZhciBNZTtUZS5kb25lP3ZlKFRlLnZhbHVlKTooTWU9VGUudmFsdWUsTWUgaW5zdGFuY2VvZiBjZT9NZTpuZXcgY2UoZnVuY3Rpb24oaGUpe2hlKE1lKX0pKS50aGVuKGtlLFNlKX1JZSgoZGU9ZGUuYXBwbHkoc2Usb2V8fFtdKSkubmV4dCgpKX0pfSxZPXRoaXMmJnRoaXMuX19nZW5lcmF0''@;'; put 'put ''b3J8fGZ1bmN0aW9uKHNlLG9lKXt2YXIgY2UsZGUsdmUsQWUsa2U9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmdmVbMF0pdGhyb3cgdmVbMV07cmV0dXJuIHZlWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIEFlPXtuZXh0OlNlKDApLHRocm93OlNlKDEpLHJldHVybjpTZSgyKX0s''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKEFlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLEFlO2Z1bmN0aW9uIFNlKEllKXtyZXR1cm4gZnVuY3Rpb24oVGUpe3JldHVybiBmdW5jdGlvbihNZSl7aWYoY2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJh''@;'; put 'put ''dG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7a2U7KXRyeXtpZihjZT0xLGRlJiYodmU9MiZNZVswXT9kZS5yZXR1cm46TWVbMF0/ZGUudGhyb3d8fCgodmU9ZGUucmV0dXJuKSYmdmUuY2FsbChkZSksMCk6ZGUubmV4dCkmJiEodmU9dmUuY2FsbChkZSxNZVsxXSkpLmRvbmUpcmV0''@;'; put 'put ''dXJuIHZlO3N3aXRjaChkZT0wLHZlJiYoTWU9WzImTWVbMF0sdmUudmFsdWVdKSxNZVswXSl7Y2FzZSAwOmNhc2UgMTp2ZT1NZTticmVhaztjYXNlIDQ6cmV0dXJuIGtlLmxhYmVsKysse3ZhbHVlOk1lWzFdLGRvbmU6ITF9O2Nhc2UgNTprZS5sYWJlbCsrLGRlPU1lWzFdLE1lPVswXTtjb250''@;'; put 'put ''aW51ZTtjYXNlIDc6TWU9a2Uub3BzLnBvcCgpLGtlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKCh2ZT0odmU9a2UudHJ5cykubGVuZ3RoPjAmJnZlW3ZlLmxlbmd0aC0xXSl8fDYhPT1NZVswXSYmMiE9PU1lWzBdKSl7a2U9MDtjb250aW51ZX1pZigzPT09TWVbMF0mJighdmV8''@;'; put 'put ''fE1lWzFdPnZlWzBdJiZNZVsxXTx2ZVszXSkpe2tlLmxhYmVsPU1lWzFdO2JyZWFrfWlmKDY9PT1NZVswXSYma2UubGFiZWw8dmVbMV0pe2tlLmxhYmVsPXZlWzFdLHZlPU1lO2JyZWFrfWlmKHZlJiZrZS5sYWJlbDx2ZVsyXSl7a2UubGFiZWw9dmVbMl0sa2Uub3BzLnB1c2goTWUpO2JyZWFr''@;'; put 'put ''fXZlWzJdJiZrZS5vcHMucG9wKCksa2UudHJ5cy5wb3AoKTtjb250aW51ZX1NZT1vZS5jYWxsKHNlLGtlKX1jYXRjaChoZSl7TWU9WzYsaGVdLGRlPTB9ZmluYWxseXtjZT12ZT0wfWlmKDUmTWVbMF0pdGhyb3cgTWVbMV07cmV0dXJue3ZhbHVlOk1lWzBdP01lWzFdOnZvaWQgMCxkb25lOiEw''@;'; put 'put ''fX0oW0llLFRlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuU0FTanNBcGlDbGllbnQ9dm9pZCAwO3ZhciBXPWooMzkwMCksTj1qKDU3KSx0ZT1qKDI0OSksSz1qKDcwNCksSj1mdW5jdGlvbigpe2Z1bmN0aW9uIHNlKG9lKXt0aGlzLnJl''@;'; put 'put ''cXVlc3RDbGllbnQ9b2V9cmV0dXJuIHNlLnByb3RvdHlwZS5kZXBsb3k9ZnVuY3Rpb24ob2UsY2UsZGUpe3JldHVybiBhZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdmUsQWU7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihrZSl7c3dpdGNoKGtlLmxhYmVsKXtjYXNlIDA6cmV0''@;'; put 'put ''dXJuIHZlPShkZXx8e30pLmFjY2Vzc190b2tlbixkZT9bNCwoMCxLLmdldFRva2VucykodGhpcy5yZXF1ZXN0Q2xpZW50LGRlLFcuU2VydmVyVHlwZS5TYXNqcyldOlszLDJdO2Nhc2UgMTp2ZT1rZS5zZW50KCkuYWNjZXNzX3Rva2VuLGtlLmxhYmVsPTI7Y2FzZSAyOnJldHVybiBvZS5hcHBM''@;'; put 'put ''b2M9b2UuYXBwTG9jfHxjZSxbNCx0aGlzLnJlcXVlc3RDbGllbnQucG9zdCgiU0FTanNBcGkvZHJpdmUvZGVwbG95IixvZSx2ZSx2b2lkIDAse30se21heENvbnRlbnRMZW5ndGg6MS8wLG1heEJvZHlMZW5ndGg6MS8wfSldO2Nhc2UgMzpyZXR1cm4gQWU9a2Uuc2VudCgpLnJlc3VsdCxbMixQ''@;'; put 'put ''cm9taXNlLnJlc29sdmUoQWUpXX19KX0pfSxzZS5wcm90b3R5cGUuZXhlY3V0ZUpvYj1mdW5jdGlvbihvZSxjZSxkZSl7cmV0dXJuIGFlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB2ZSxBZSxrZTtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKFNlKXtzd2l0Y2goU2UubGFiZWwp''@;'; put 'put ''e2Nhc2UgMDpyZXR1cm4gdmU9ZGU/ZGUuYWNjZXNzX3Rva2VuOnZvaWQgMCxBZT1vZS5fcHJvZ3JhbS5zdGFydHNXaXRoKCIvIik/b2UuX3Byb2dyYW06IiIuY29uY2F0KGNlLCIvIikuY29uY2F0KG9lLl9wcm9ncmFtKSxbNCx0aGlzLnJlcXVlc3RDbGllbnQucG9zdCgiU0FTanNBcGkvc3Rw''@;'; put 'put ''L2V4ZWN1dGUiLHJlKHJlKHtfZGVidWc6MTMxfSxvZSkse19wcm9ncmFtOkFlfSksdmUpXTtjYXNlIDE6cmV0dXJuWzIse3Jlc3VsdDooa2U9U2Uuc2VudCgpKS5yZXN1bHQsbG9nOmtlLmxvZ31dfX0pfSl9LHNlLnByb3RvdHlwZS5leGVjdXRlU2NyaXB0PWZ1bmN0aW9uKG9lLGNlLGRlKXty''@;'; put 'put ''ZXR1cm4gdm9pZCAwPT09Y2UmJihjZT0ic2FzIiksYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHZlLEFlO3JldHVybiBZKHRoaXMsZnVuY3Rpb24oa2Upe3N3aXRjaChrZS5sYWJlbCl7Y2FzZSAwOnJldHVybiB2ZT0oZGV8fHt9KS5hY2Nlc3NfdG9rZW4sZGU/WzQsKDAs''@;'; put 'put ''Sy5nZXRUb2tlbnMpKHRoaXMucmVxdWVzdENsaWVudCxkZSxXLlNlcnZlclR5cGUuU2FzanMpXTpbMywyXTtjYXNlIDE6dmU9a2Uuc2VudCgpLmFjY2Vzc190b2tlbixrZS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4gQWU9IiIsWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoIlNBU2pzQXBpL2Nv''@;'; put 'put ''ZGUvZXhlY3V0ZSIse2NvZGU6b2UscnVuVGltZTpjZX0sdmUpLnRoZW4oZnVuY3Rpb24oU2Upe1NlLmxvZyYmKEFlPVNlLmxvZyl9KV07Y2FzZSAzOnJldHVybiBrZS5zZW50KCksWzIsQWVdfX0pfSl9LHNlLnByb3RvdHlwZS5nZXRBY2Nlc3NUb2tlbj1mdW5jdGlvbihvZSxjZSl7cmV0dXJu''@;'; put 'put ''IGFlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oZGUpe3JldHVyblsyLCgwLE4uZ2V0QWNjZXNzVG9rZW5Gb3JTYXNqcykodGhpcy5yZXF1ZXN0Q2xpZW50LG9lLGNlKV19KX0pfSxzZS5wcm90b3R5cGUucmVmcmVzaFRva2Vucz1mdW5jdGlv''@;'; put 'put ''bihvZSl7cmV0dXJuIGFlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oY2Upe3JldHVyblsyLCgwLHRlLnJlZnJlc2hUb2tlbnNGb3JTYXNqcykodGhpcy5yZXF1ZXN0Q2xpZW50LG9lKV19KX0pfSxzZX0oKTtRLlNBU2pzQXBpQ2xpZW50PUp9''@;'; put 'put ''LDY5MDM6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig0MTU1KSxhZT1qKDUxMDgpLFk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHNlLG9lLGNlLGRlKXtyZXR1cm4gbmV3KGNlfHwoY2U9UHJvbWlzZSkpKGZ1bmN0aW9uKHZlLEFlKXtmdW5jdGlvbiBrZShU''@;'; put 'put ''ZSl7dHJ5e0llKGRlLm5leHQoVGUpKX1jYXRjaChNZSl7QWUoTWUpfX1mdW5jdGlvbiBTZShUZSl7dHJ5e0llKGRlLnRocm93KFRlKSl9Y2F0Y2goTWUpe0FlKE1lKX19ZnVuY3Rpb24gSWUoVGUpe3ZhciBNZTtUZS5kb25lP3ZlKFRlLnZhbHVlKTooTWU9VGUudmFsdWUsTWUgaW5zdGFuY2Vv''@;'; put 'put ''ZiBjZT9NZTpuZXcgY2UoZnVuY3Rpb24oaGUpe2hlKE1lKX0pKS50aGVuKGtlLFNlKX1JZSgoZGU9ZGUuYXBwbHkoc2Usb2V8fFtdKSkubmV4dCgpKX0pfSxXPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHNlLG9lKXt2YXIgY2UsZGUsdmUsQWUsa2U9e2xhYmVsOjAsc2VudDpm''@;'; put 'put ''dW5jdGlvbigpe2lmKDEmdmVbMF0pdGhyb3cgdmVbMV07cmV0dXJuIHZlWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIEFlPXtuZXh0OlNlKDApLHRocm93OlNlKDEpLHJldHVybjpTZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKEFlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gdGhpc30pLEFlO2Z1bmN0aW9uIFNlKEllKXtyZXR1cm4gZnVuY3Rpb24oVGUpe3JldHVybiBmdW5jdGlvbihNZSl7aWYoY2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7a2U7KXRyeXtpZihjZT0xLGRlJiYo''@;'; put 'put ''dmU9MiZNZVswXT9kZS5yZXR1cm46TWVbMF0/ZGUudGhyb3d8fCgodmU9ZGUucmV0dXJuKSYmdmUuY2FsbChkZSksMCk6ZGUubmV4dCkmJiEodmU9dmUuY2FsbChkZSxNZVsxXSkpLmRvbmUpcmV0dXJuIHZlO3N3aXRjaChkZT0wLHZlJiYoTWU9WzImTWVbMF0sdmUudmFsdWVdKSxNZVswXSl7''@;'; put 'put ''Y2FzZSAwOmNhc2UgMTp2ZT1NZTticmVhaztjYXNlIDQ6cmV0dXJuIGtlLmxhYmVsKysse3ZhbHVlOk1lWzFdLGRvbmU6ITF9O2Nhc2UgNTprZS5sYWJlbCsrLGRlPU1lWzFdLE1lPVswXTtjb250aW51ZTtjYXNlIDc6TWU9a2Uub3BzLnBvcCgpLGtlLnRyeXMucG9wKCk7Y29udGludWU7ZGVm''@;'; put 'put ''YXVsdDppZighKCh2ZT0odmU9a2UudHJ5cykubGVuZ3RoPjAmJnZlW3ZlLmxlbmd0aC0xXSl8fDYhPT1NZVswXSYmMiE9PU1lWzBdKSl7a2U9MDtjb250aW51ZX1pZigzPT09TWVbMF0mJighdmV8fE1lWzFdPnZlWzBdJiZNZVsxXTx2ZVszXSkpe2tlLmxhYmVsPU1lWzFdO2JyZWFrfWlmKDY9''@;'; put 'put ''PT1NZVswXSYma2UubGFiZWw8dmVbMV0pe2tlLmxhYmVsPXZlWzFdLHZlPU1lO2JyZWFrfWlmKHZlJiZrZS5sYWJlbDx2ZVsyXSl7a2UubGFiZWw9dmVbMl0sa2Uub3BzLnB1c2goTWUpO2JyZWFrfXZlWzJdJiZrZS5vcHMucG9wKCksa2UudHJ5cy5wb3AoKTtjb250aW51ZX1NZT1vZS5jYWxs''@;'; put 'put ''KHNlLGtlKX1jYXRjaChoZSl7TWU9WzYsaGVdLGRlPTB9ZmluYWxseXtjZT12ZT0wfWlmKDUmTWVbMF0pdGhyb3cgTWVbMV07cmV0dXJue3ZhbHVlOk1lWzBdP01lWzFdOnZvaWQgMCxkb25lOiEwfX0oW0llLFRlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2''@;'; put 'put ''YWx1ZTohMH0pLFEuU2Vzc2lvbk1hbmFnZXI9dm9pZCAwO3ZhciBOPWooMTM5NSksdGU9aig1OTI4KSxLPWooOTc3OCksSj1mdW5jdGlvbigpe2Z1bmN0aW9uIHNlKG9lLGNlLGRlKXt0aGlzLnNlcnZlclVybD1vZSx0aGlzLmNvbnRleHROYW1lPWNlLHRoaXMucmVxdWVzdENsaWVudD1kZSx0''@;'; put 'put ''aGlzLmxvZ2dlZEVycm9ycz1bXSx0aGlzLnNlc3Npb25zPVtdLHRoaXMuY3VycmVudENvbnRleHQ9bnVsbCx0aGlzLl9kZWJ1Zz0hMSx0aGlzLnByaW50ZWRTZXNzaW9uU3RhdGU9e3ByaW50ZWQ6ITEsc3RhdGU6IiJ9LG9lJiYoMCx0ZS5pc1VybCkob2UpfXJldHVybiBPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkoc2UucHJvdG90eXBlLCJkZWJ1ZyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWJ1Z30sc2V0OmZ1bmN0aW9uKG9lKXt0aGlzLl9kZWJ1Zz1vZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxzZS5wcm90b3R5cGUuZ2V0U2Vzc2lvbj1mdW5jdGlvbihv''@;'; put 'put ''ZSl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGNlLGRlO3JldHVybiBXKHRoaXMsZnVuY3Rpb24odmUpe3N3aXRjaCh2ZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuY3JlYXRlU2Vzc2lvbnMob2UpXTtjYXNlIDE6cmV0dXJuIHZlLnNlbnQoKSxbNCx0''@;'; put 'put ''aGlzLmNyZWF0ZUFuZFdhaXRGb3JTZXNzaW9uKG9lKV07Y2FzZSAyOnJldHVybiB2ZS5zZW50KCksY2U9dGhpcy5zZXNzaW9ucy5wb3AoKSxkZT0oKG5ldyBEYXRlKS5nZXRUaW1lKCktbmV3IERhdGUoY2UuY3JlYXRpb25UaW1lU3RhbXApLmdldFRpbWUoKSkvMWUzLCFjZS5hdHRyaWJ1dGVz''@;'; put 'put ''fHxkZT49Y2UuYXR0cmlidXRlcy5zZXNzaW9uSW5hY3RpdmVUaW1lb3V0P1s0LHRoaXMuY3JlYXRlU2Vzc2lvbnMob2UpXTpbMyw0XTtjYXNlIDM6cmV0dXJuIHZlLnNlbnQoKSxbMix0aGlzLnNlc3Npb25zLnBvcCgpXTtjYXNlIDQ6cmV0dXJuWzIsY2VdfX0pfSl9LHNlLnByb3RvdHlwZS5j''@;'; put 'put ''bGVhclNlc3Npb249ZnVuY3Rpb24ob2UsY2Upe3JldHVybiBZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBkZT10aGlzO3JldHVybiBXKHRoaXMsZnVuY3Rpb24odmUpe3N3aXRjaCh2ZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5kZWxldGUo''@;'; put 'put ''Ii9jb21wdXRlL3Nlc3Npb25zLyIuY29uY2F0KG9lKSxjZSkudGhlbihmdW5jdGlvbigpe2RlLnNlc3Npb25zPWRlLnNlc3Npb25zLmZpbHRlcihmdW5jdGlvbihBZSl7cmV0dXJuIEFlLmlkIT09b2V9KX0pLmNhdGNoKGZ1bmN0aW9uKEFlKXt0aHJvdygwLEsucHJlZml4TWVzc2FnZSkoQWUs''@;'; put 'put ''IkVycm9yIHdoaWxlIGRlbGV0aW5nIHNlc3Npb24uICIpfSldO2Nhc2UgMTpyZXR1cm5bMix2ZS5zZW50KCldfX0pfSl9LHNlLnByb3RvdHlwZS5jcmVhdGVTZXNzaW9ucz1mdW5jdGlvbihvZSl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGNlPXRoaXM7cmV0''@;'; put 'put ''dXJuIFcodGhpcyxmdW5jdGlvbihkZSl7c3dpdGNoKGRlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuc2Vzc2lvbnMubGVuZ3RoP1szLDRdOnRoaXMuY3VycmVudENvbnRleHQ/WzMsMl06WzQsdGhpcy5zZXRDdXJyZW50Q29udGV4dChvZSkuY2F0Y2goZnVuY3Rpb24odmUpe3Rocm93IHZl''@;'; put 'put ''fSldO2Nhc2UgMTpkZS5zZW50KCksZGUubGFiZWw9MjtjYXNlIDI6cmV0dXJuWzQsKDAsdGUuYXN5bmNGb3JFYWNoKShuZXcgQXJyYXkoMSksZnVuY3Rpb24oKXtyZXR1cm4gWShjZSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHZlO3JldHVybiBXKHRoaXMsZnVuY3Rpb24oQWUpe3N3''@;'; put 'put ''aXRjaChBZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuY3JlYXRlQW5kV2FpdEZvclNlc3Npb24ob2UpLmNhdGNoKGZ1bmN0aW9uKGtlKXt0aHJvdyBrZX0pXTtjYXNlIDE6cmV0dXJuIHZlPUFlLnNlbnQoKSx0aGlzLnNlc3Npb25zLnB1c2godmUpLFsyXX19KX0pfSkuY2F0Y2goZnVu''@;'; put 'put ''Y3Rpb24odmUpe3Rocm93IHZlfSldO2Nhc2UgMzpkZS5zZW50KCksZGUubGFiZWw9NDtjYXNlIDQ6cmV0dXJuWzJdfX0pfSl9LHNlLnByb3RvdHlwZS5jcmVhdGVBbmRXYWl0Rm9yU2Vzc2lvbj1mdW5jdGlvbihvZSl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IGNlLGRlO3JldHVybiBXKHRoaXMsZnVuY3Rpb24oQWUpe3N3aXRjaChBZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2NvbXB1dGUvY29udGV4dHMvIikuY29uY2F0KHRoaXMuY3VycmVudENvbnRleHQu''@;'; put 'put ''aWQsIi9zZXNzaW9ucyIpLHt9LG9lKS5jYXRjaChmdW5jdGlvbihrZSl7dGhyb3cga2V9KV07Y2FzZSAxOnJldHVybiBjZT1BZS5zZW50KCksWzQsdGhpcy53YWl0Rm9yU2Vzc2lvbihkZT1jZS5yZXN1bHQsY2UuZXRhZyxvZSldO2Nhc2UgMjpyZXR1cm4gQWUuc2VudCgpLHRoaXMuc2Vzc2lv''@;'; put 'put ''bnMucHVzaChkZSksWzIsZGVdfX0pfSl9LHNlLnByb3RvdHlwZS5zZXRDdXJyZW50Q29udGV4dD1mdW5jdGlvbihvZSl7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGNlLHZlLEFlPXRoaXM7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihrZSl7c3dpdGNoKGtlLmxh''@;'; put 'put ''YmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuY3VycmVudENvbnRleHQ/WzMsMl06WzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsIi9jb21wdXRlL2NvbnRleHRzP2xpbWl0PTEwMDAwIiksb2UpLmNhdGNoKGZ1bmN0aW9uKFNlKXt0aHJvdyBTZX0pXTtj''@;'; put 'put ''YXNlIDE6aWYoY2U9a2Uuc2VudCgpLnJlc3VsdCwhKHZlPShjZSYmY2UuaXRlbXMmJmNlLml0ZW1zLmxlbmd0aD9jZS5pdGVtczpbXSkuZmluZChmdW5jdGlvbihTZSl7cmV0dXJuIFNlLm5hbWU9PT1BZS5jb250ZXh0TmFtZX0pKSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBjb250ZXh0ICciLmNv''@;'; put 'put ''bmNhdCh0aGlzLmNvbnRleHROYW1lLCInIHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZlciAiKS5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsIi4iKSk7dGhpcy5jdXJyZW50Q29udGV4dD12ZSxQcm9taXNlLnJlc29sdmUoKSxrZS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bMl19fSl9KX0sc2UucHJv''@;'; put 'put ''dG90eXBlLmdldEhlYWRlcnM9ZnVuY3Rpb24ob2Upe3ZhciBjZT17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifTtyZXR1cm4gb2UmJihjZS5BdXRob3JpemF0aW9uPSJCZWFyZXIgIi5jb25jYXQob2UpKSxjZX0sc2UucHJvdG90eXBlLndhaXRGb3JTZXNzaW9uPWZ1bmN0aW9u''@;'; put 'put ''KG9lLGNlLGRlKXt2YXIgdmU7cmV0dXJuIFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEFlLGtlLFNlLEllLE1lLGhlO3JldHVybiBXKHRoaXMsZnVuY3Rpb24oTyl7c3dpdGNoKE8ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gQWU9cmUubG9nZ2VyfHxhZSxrZT1vZS5zdGF0ZSxT''@;'; put 'put ''ZT1vZS5saW5rcy5maW5kKGZ1bmN0aW9uKHope3JldHVybiJzdGF0ZSI9PT16LnJlbH0pLCJwZW5kaW5nIiE9PWtlJiYicnVubmluZyIhPT1rZSYmIiIhPT1rZT9bMyw2XTpTZT8odGhpcy5kZWJ1ZyYmIXRoaXMucHJpbnRlZFNlc3Npb25TdGF0ZS5wcmludGVkJiYoQWUuaW5mbygiUG9sbGlu''@;'; put 'put ''ZzogIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwrU2UuaHJlZikpLHRoaXMucHJpbnRlZFNlc3Npb25TdGF0ZS5wcmludGVkPSEwKSxbNCx0aGlzLmdldFNlc3Npb25TdGF0ZSgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwpLmNvbmNhdChTZS5ocmVmLCI/d2FpdD0zMCIpLGNlLGRlKS5jYXRjaChm''@;'; put 'put ''dW5jdGlvbih6KXt0aHJvdygwLEsucHJlZml4TWVzc2FnZSkoeiwiRXJyb3Igd2hpbGUgZ2V0dGluZyBzZXNzaW9uIHN0YXRlLiIpfSldKTpbMyw0XTtjYXNlIDE6cmV0dXJuIEllPU8uc2VudCgpLE1lPUllLnJlc3BvbnNlU3RhdHVzLGtlPUllLnJlc3VsdC50cmltKCksdGhpcy5kZWJ1ZyYm''@;'; put 'put ''dGhpcy5wcmludGVkU2Vzc2lvblN0YXRlLnN0YXRlIT09a2UmJihBZS5pbmZvKCJDdXJyZW50IHNlc3Npb24gc3RhdGUgaXMgJyIuY29uY2F0KGtlLCInIikpLHRoaXMucHJpbnRlZFNlc3Npb25TdGF0ZS5zdGF0ZT1rZSx0aGlzLnByaW50ZWRTZXNzaW9uU3RhdGUucHJpbnRlZD0hMSksa2U/''@;'; put 'put ''WzMsM106KGhlPW5ldyBOLk5vU2Vzc2lvblN0YXRlRXJyb3IoTWUsdGhpcy5zZXJ2ZXJVcmwrU2UuaHJlZixudWxsPT09KHZlPW9lLmxpbmtzLmZpbmQoZnVuY3Rpb24oeil7cmV0dXJuImxvZyI9PT16LnJlbH0pKXx8dm9pZCAwPT09dmU/dm9pZCAwOnZlLmhyZWYpLHRoaXMubG9nZ2VkRXJy''@;'; put 'put ''b3JzLmZpbmQoZnVuY3Rpb24oeil7cmV0dXJuIHouc2VydmVyUmVzcG9uc2VTdGF0dXM9PT1oZS5zZXJ2ZXJSZXNwb25zZVN0YXR1c30pfHwodGhpcy5sb2dnZWRFcnJvcnMucHVzaChoZSksQWUuaW5mbyhoZS5tZXNzYWdlKSksWzQsdGhpcy53YWl0Rm9yU2Vzc2lvbihvZSxjZSxkZSldKTtj''@;'; put 'put ''YXNlIDI6cmV0dXJuWzIsTy5zZW50KCldO2Nhc2UgMzpjYXNlIDY6cmV0dXJuIHRoaXMubG9nZ2VkRXJyb3JzPVtdLFsyLGtlXTtjYXNlIDQ6dGhyb3ciRXJyb3Igd2hpbGUgZ2V0dGluZyBzZXNzaW9uIHN0YXRlIGxpbmsuIjtjYXNlIDU6cmV0dXJuWzMsN107Y2FzZSA3OnJldHVyblsyXX19''@;'; put 'put ''KX0pfSxzZS5wcm90b3R5cGUuZ2V0U2Vzc2lvblN0YXRlPWZ1bmN0aW9uKG9lLGNlLGRlKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKHZlKXtzd2l0Y2godmUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLnJlcXVlc3RD''@;'; put 'put ''bGllbnQuZ2V0KG9lLGRlLCJ0ZXh0L3BsYWluIix7IklmLU5vbmUtTWF0Y2giOmNlfSkudGhlbihmdW5jdGlvbihBZSl7cmV0dXJue3Jlc3VsdDpBZS5yZXN1bHQscmVzcG9uc2VTdGF0dXM6QWUuc3RhdHVzfX0pLmNhdGNoKGZ1bmN0aW9uKEFlKXt0aHJvdyBBZX0pXTtjYXNlIDE6cmV0dXJu''@;'; put 'put ''WzIsdmUuc2VudCgpXX19KX0pfSxzZS5wcm90b3R5cGUuZ2V0VmFyaWFibGU9ZnVuY3Rpb24ob2UsY2UsZGUpe3JldHVybiBZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBXKHRoaXMsZnVuY3Rpb24odmUpe3N3aXRjaCh2ZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRo''@;'; put 'put ''aXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvY29tcHV0ZS9zZXNzaW9ucy8iKS5jb25jYXQob2UsIi92YXJpYWJsZXMvIikuY29uY2F0KGNlKSxkZSkuY2F0Y2goZnVuY3Rpb24oQWUpe3Rocm93KDAsSy5wcmVmaXhNZXNzYWdlKShBZSwiRXJyb3Igd2hp''@;'; put 'put ''bGUgZmV0Y2hpbmcgc2Vzc2lvbiB2YXJpYWJsZSAnIi5jb25jYXQoY2UsIicuIikpfSldO2Nhc2UgMTpyZXR1cm5bMix2ZS5zZW50KCldfX0pfSl9LHNlfSgpO1EuU2Vzc2lvbk1hbmFnZXI9Sn0sNTQwMTpmdW5jdGlvbihVLFEsail7InVzZSBzdHJpY3QiO3ZhciByZT1qKDQxNTUpLGFlPWoo''@;'; put 'put ''NTEwOCksWT10aGlzJiZ0aGlzLl9fYXNzaWdufHxmdW5jdGlvbigpe3JldHVybiBZPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKEFlKXtmb3IodmFyIGtlLFNlPTEsSWU9YXJndW1lbnRzLmxlbmd0aDtTZTxJZTtTZSsrKWZvcih2YXIgVGUgaW4ga2U9YXJndW1lbnRzW1NlXSlPYmplY3QucHJv''@;'; put 'put ''dG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoa2UsVGUpJiYoQWVbVGVdPWtlW1RlXSk7cmV0dXJuIEFlfSxZLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sVz10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oQWUsa2UsU2UsSWUpe3JldHVybiBuZXcoU2V8fChTZT1Qcm9taXNlKSkoZnVu''@;'; put 'put ''Y3Rpb24oVGUsTWUpe2Z1bmN0aW9uIGhlKGVlKXt0cnl7eihJZS5uZXh0KGVlKSl9Y2F0Y2gobmUpe01lKG5lKX19ZnVuY3Rpb24gTyhlZSl7dHJ5e3ooSWUudGhyb3coZWUpKX1jYXRjaChuZSl7TWUobmUpfX1mdW5jdGlvbiB6KGVlKXt2YXIgbmU7ZWUuZG9uZT9UZShlZS52YWx1ZSk6KG5l''@;'; put 'put ''PWVlLnZhbHVlLG5lIGluc3RhbmNlb2YgU2U/bmU6bmV3IFNlKGZ1bmN0aW9uKHgpe3gobmUpfSkpLnRoZW4oaGUsTyl9eigoSWU9SWUuYXBwbHkoQWUsa2V8fFtdKSkubmV4dCgpKX0pfSxOPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKEFlLGtlKXt2YXIgU2UsSWUsVGUsTWUs''@;'; put 'put ''aGU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmVGVbMF0pdGhyb3cgVGVbMV07cmV0dXJuIFRlWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIE1lPXtuZXh0Ok8oMCksdGhyb3c6TygxKSxyZXR1cm46TygyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKE1lW1N5bWJvbC5p''@;'; put 'put ''dGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLE1lO2Z1bmN0aW9uIE8oeil7cmV0dXJuIGZ1bmN0aW9uKGVlKXtyZXR1cm4gZnVuY3Rpb24obmUpe2lmKFNlKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2hlOyl0cnl7''@;'; put 'put ''aWYoU2U9MSxJZSYmKFRlPTImbmVbMF0/SWUucmV0dXJuOm5lWzBdP0llLnRocm93fHwoKFRlPUllLnJldHVybikmJlRlLmNhbGwoSWUpLDApOkllLm5leHQpJiYhKFRlPVRlLmNhbGwoSWUsbmVbMV0pKS5kb25lKXJldHVybiBUZTtzd2l0Y2goSWU9MCxUZSYmKG5lPVsyJm5lWzBdLFRlLnZh''@;'; put 'put ''bHVlXSksbmVbMF0pe2Nhc2UgMDpjYXNlIDE6VGU9bmU7YnJlYWs7Y2FzZSA0OnJldHVybiBoZS5sYWJlbCsrLHt2YWx1ZTpuZVsxXSxkb25lOiExfTtjYXNlIDU6aGUubGFiZWwrKyxJZT1uZVsxXSxuZT1bMF07Y29udGludWU7Y2FzZSA3Om5lPWhlLm9wcy5wb3AoKSxoZS50cnlzLnBvcCgp''@;'; put 'put ''O2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoVGU9KFRlPWhlLnRyeXMpLmxlbmd0aD4wJiZUZVtUZS5sZW5ndGgtMV0pfHw2IT09bmVbMF0mJjIhPT1uZVswXSkpe2hlPTA7Y29udGludWV9aWYoMz09PW5lWzBdJiYoIVRlfHxuZVsxXT5UZVswXSYmbmVbMV08VGVbM10pKXtoZS5sYWJlbD1uZVsx''@;'; put 'put ''XTticmVha31pZig2PT09bmVbMF0mJmhlLmxhYmVsPFRlWzFdKXtoZS5sYWJlbD1UZVsxXSxUZT1uZTticmVha31pZihUZSYmaGUubGFiZWw8VGVbMl0pe2hlLmxhYmVsPVRlWzJdLGhlLm9wcy5wdXNoKG5lKTticmVha31UZVsyXSYmaGUub3BzLnBvcCgpLGhlLnRyeXMucG9wKCk7Y29udGlu''@;'; put 'put ''dWV9bmU9a2UuY2FsbChBZSxoZSl9Y2F0Y2goeCl7bmU9WzYseF0sSWU9MH1maW5hbGx5e1NlPVRlPTB9aWYoNSZuZVswXSl0aHJvdyBuZVsxXTtyZXR1cm57dmFsdWU6bmVbMF0/bmVbMV06dm9pZCAwLGRvbmU6ITB9fShbeixlZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2Vz''@;'; put 'put ''TW9kdWxlIix7dmFsdWU6ITB9KSxRLmV4ZWN1dGVTY3JpcHQ9dm9pZCAwO3ZhciB0ZT1qKDc3NTcpLEs9aig5Nzc4KSxKPWooMzYwNyksc2U9aig3MDQpLG9lPWooNTkyOCksY2U9aig3MTQpLGRlPWooMTM0MyksdmU9aig2NDk2KTtRLmV4ZWN1dGVTY3JpcHQ9ZnVuY3Rpb24gQWUoa2UsU2Us''@;'; put 'put ''SWUsVGUsTWUsaGUsTyx6LGVlLG5lLHgsUCxWLFQpe3ZhciBTLEY7cmV0dXJuIHZvaWQgMD09PXomJih6PW51bGwpLHZvaWQgMD09PWVlJiYoZWU9ITEpLHZvaWQgMD09PW5lJiYobmU9ITEpLHZvaWQgMD09PXgmJih4PSEwKSx2b2lkIDA9PT1WJiYoVj0hMSksVyh0aGlzLHZvaWQgMCx2b2lk''@;'; put 'put ''IDAsZnVuY3Rpb24oKXt2YXIgeWUsQ2UsRGUsUGUsUWUsJGUsZ3Qsd3QsbXQsdnQsQXQsaHQsQnQsb24sX3QsdHQsZXQsbHQsTHQsQ3QsZnQsSHQsR2UsVWU9dGhpcztyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKHl0KXtzd2l0Y2goeXQubGFiZWwpe2Nhc2UgMDpyZXR1cm4geWU9KE98fHt9KS5h''@;'; put 'put ''Y2Nlc3NfdG9rZW4sTz9bNCwoMCxzZS5nZXRUb2tlbnMpKGtlLE8pXTpbMywyXTtjYXNlIDE6eWU9eXQuc2VudCgpLmFjY2Vzc190b2tlbix5dC5sYWJlbD0yO2Nhc2UgMjpDZT1yZS5sb2dnZXJ8fGFlLHl0LmxhYmVsPTM7Y2FzZSAzOnJldHVybiB5dC50cnlzLnB1c2goWzMsMTksLDIwXSks''@;'; put 'put ''RGU9dm9pZCAwLFs0LFNlLmdldFNlc3Npb24oeWUpLmNhdGNoKGZ1bmN0aW9uKGp0KXt0aHJvdygwLEsucHJlZml4TWVzc2FnZSkoanQsIkVycm9yIHdoaWxlIGdldHRpbmcgc2Vzc2lvbi4gIil9KV07Y2FzZSA0OnJldHVybiBQZT15dC5zZW50KCksRGU9UGUuaWQsVj9bNCxTZS5nZXRWYXJp''@;'; put 'put ''YWJsZShEZSwiU1lTSk9CSUQiLHllKS5jYXRjaChmdW5jdGlvbihqdCl7dGhyb3coMCxLLnByZWZpeE1lc3NhZ2UpKGp0LCJFcnJvciB3aGlsZSBnZXR0aW5nIHNlc3Npb24gdmFyaWFibGUuICIpfSldOlszLDZdO2Nhc2UgNTooUWU9eXQuc2VudCgpLnJlc3VsdCkmJlFlLnZhbHVlJiYoJGU9''@;'; put 'put ''SWU/VGUuc3BsaXQoSWUpLmpvaW4oIiIpLnJlcGxhY2UoL15cLy8sIiIpOlRlLChyZS5sb2dnZXJ8fGFlKS5pbmZvKCJUcmlnZ2VyZWQgJyIuY29uY2F0KCRlLCInIHdpdGggUElEICIpLmNvbmNhdChRZS52YWx1ZSwiIGF0ICIpLmNvbmNhdCgoMCx0ZS50aW1lc3RhbXBUb1lZWVlNTURESEhN''@;'; put 'put ''TVNTKSgpKSkpLHl0LmxhYmVsPTY7Y2FzZSA2OnJldHVybiBndD17X2NvbnRleHROYW1lOmhlLF9PTUlUSlNPTkxJU1RJTkc6ITAsX09NSVRKU09OTE9HOiEwLF9PTUlUU0VTU0lPTlJFU1VMVFM6ITAsX09NSVRURVhUTElTVElORzohMCxfT01JVFRFWFRMT0c6ITB9LGVlJiYoZ3QuX09NSVRU''@;'; put 'put ''RVhUTE9HPSExLGd0Ll9PTUlUU0VTU0lPTlJFU1VMVFM9ITEpLHd0PXZvaWQgMCwoMCxvZS5pc1JlbGF0aXZlUGF0aCkoVGUpP3d0PSJleGVjLSIuY29uY2F0KFRlLmluY2x1ZGVzKCIvIik/VGUuc3BsaXQoIi8iKVsxXTpUZSk6KG10PVRlLnNwbGl0KCIvIiksd3Q9bXQucG9wKCkpLHZ0PXtT''@;'; put 'put ''WVNfSkVTX0pPQl9VUkk6IiIsX3Byb2dyYW06KDAsb2UuaXNSZWxhdGl2ZVBhdGgpKFRlKT9JZSsiLyIrVGU6VGV9LFQmJih2dD1ZKFkoe30sdnQpLFQpKSxlZSYmKHZ0PVkoWSh7fSx2dCkse19ERUJVRzoxMzF9KSksQXQ9W10sej9KU09OLnN0cmluZ2lmeSh6KS5pbmNsdWRlcygiOyIpP1s0''@;'; put 'put ''LCgwLHZlLnVwbG9hZFRhYmxlcykoa2Useix5ZSkuY2F0Y2goZnVuY3Rpb24oanQpe3Rocm93KDAsSy5wcmVmaXhNZXNzYWdlKShqdCwiRXJyb3Igd2hpbGUgdXBsb2FkaW5nIHRhYmxlcy4gIil9KV06WzMsOF06WzMsOV07Y2FzZSA3OnJldHVybiBBdD15dC5zZW50KCksdnQuX3dlYmluX2Zp''@;'; put 'put ''bGVfY291bnQ9QXQubGVuZ3RoLEF0LmZvckVhY2goZnVuY3Rpb24oanQsSnQpe3Z0WyJfd2ViaW5fZmlsZXVyaSIuY29uY2F0KEp0KzEpXT0iL2ZpbGVzL2ZpbGVzLyIuY29uY2F0KGp0LmZpbGUuaWQpLHZ0WyJfd2ViaW5fbmFtZSIuY29uY2F0KEp0KzEpXT1qdC50YWJsZU5hbWV9KSxbMyw5''@;'; put 'put ''XTtjYXNlIDg6dnQ9WShZKHt9LHZ0KSwoMCxjZS5mb3JtYXREYXRhRm9yUmVxdWVzdCkoeikpLHl0LmxhYmVsPTk7Y2FzZSA5OnJldHVybiBodD17bmFtZTp3dCxkZXNjcmlwdGlvbjoiUG93ZXJlZCBieSBTQVNqcyIsY29kZTpNZSx2YXJpYWJsZXM6dnQsYXJndW1lbnRzOmd0fSxbNCxrZS5w''@;'; put 'put ''b3N0KCIvY29tcHV0ZS9zZXNzaW9ucy8iLmNvbmNhdChEZSwiL2pvYnMiKSxodCx5ZSkuY2F0Y2goZnVuY3Rpb24oanQpe3Rocm93KDAsSy5wcmVmaXhNZXNzYWdlKShqdCwiRXJyb3Igd2hpbGUgcG9zdGluZyBqb2IuICIpfSldO2Nhc2UgMTA6cmV0dXJuIEJ0PXl0LnNlbnQoKSxvbj1CdC5y''@;'; put 'put ''ZXN1bHQseD8oZWUmJihDZS5pbmZvKCJKb2IgaGFzIGJlZW4gc3VibWl0dGVkIGZvciAnIi5jb25jYXQod3QsIicuIikpLENlLmluZm8oIllvdSBjYW4gbW9uaXRvciB0aGUgam9iIHByb2dyZXNzIGF0ICciLmNvbmNhdChrZS5nZXRCYXNlVXJsKCkpLmNvbmNhdChvbi5saW5rcy5maW5kKGZ1''@;'; put 'put ''bmN0aW9uKGp0KXtyZXR1cm4ic3RhdGUiPT09anQucmVsfSkuaHJlZiwiJy4iKSkpLFs0LCgwLGRlLnBvbGxKb2JTdGF0ZSkoa2Usb24sZWUsTyxQKS5jYXRjaChmdW5jdGlvbihqdCl7cmV0dXJuIFcoVWUsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBKdCxnbixkbix5bixsbixObjty''@;'; put 'put ''ZXR1cm4gTih0aGlzLGZ1bmN0aW9uKGJuKXtzd2l0Y2goYm4ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gSnQ9bnVsbD09PShsbj1udWxsPT1qdD92b2lkIDA6anQucmVzcG9uc2UpfHx2b2lkIDA9PT1sbj92b2lkIDA6bG4uZGF0YSxnbj0vZXJyPVswLTldKiwvLmV4ZWMoSnQpLCI1MTEzIiE9PShu''@;'; put 'put ''dWxsPT09KE5uPW51bGw9PWduP3ZvaWQgMDpnblswXSl8fHZvaWQgMD09PU5uP3ZvaWQgMDpObi5zbGljZSg0LC0xKSk/WzMsMl06KGRuPW9uLmxpbmtzLmZpbmQoZnVuY3Rpb24oZXIpe3JldHVybiJ1cCI9PT1lci5yZWx9KS5ocmVmKyIvbG9nIix5bj1qdCxbNCwoMCxvZS5mZXRjaExvZ0J5''@;'; put 'put ''Q2h1bmtzKShrZSx5ZSxkbiwxZTYpXSk7Y2FzZSAxOnluLmxvZz1ibi5zZW50KCksYm4ubGFiZWw9MjtjYXNlIDI6dGhyb3coMCxLLnByZWZpeE1lc3NhZ2UpKGp0LCJFcnJvciB3aGlsZSBwb2xsaW5nIGpvYiBzdGF0dXMuICIpfX0pfSl9KV0pOlsyLFBlXTtjYXNlIDExOnJldHVybiBfdD15''@;'; put 'put ''dC5zZW50KCksTz9bNCwoMCxzZS5nZXRUb2tlbnMpKGtlLE8pXTpbMywxM107Y2FzZSAxMjp5ZT15dC5zZW50KCkuYWNjZXNzX3Rva2VuLHl0LmxhYmVsPTEzO2Nhc2UgMTM6cmV0dXJuWzQsa2UuZ2V0KCIvY29tcHV0ZS9zZXNzaW9ucy8iLmNvbmNhdChEZSwiL2pvYnMvIikuY29uY2F0KG9u''@;'; put 'put ''LmlkKSx5ZSkuY2F0Y2goZnVuY3Rpb24oanQpe3Rocm93KDAsSy5wcmVmaXhNZXNzYWdlKShqdCwiRXJyb3Igd2hpbGUgZ2V0dGluZyBqb2IuICIpfSldO2Nhc2UgMTQ6cmV0dXJuIHR0PXl0LnNlbnQoKS5yZXN1bHQsZXQ9dm9pZCAwLGx0PSIiLEx0PXR0LmxpbmtzLmZpbmQoZnVuY3Rpb24o''@;'; put 'put ''anQpe3JldHVybiJsb2ciPT09anQucmVsfSksZWUmJkx0PyhDdD0iIi5jb25jYXQoTHQuaHJlZiwiL2NvbnRlbnQiKSxmdD1udWxsIT09KEY9bnVsbD09PShTPXR0LmxvZ1N0YXRpc3RpY3MpfHx2b2lkIDA9PT1TP3ZvaWQgMDpTLmxpbmVDb3VudCkmJnZvaWQgMCE9PUY/RjoxZTYsWzQsKDAs''@;'; put 'put ''b2UuZmV0Y2hMb2dCeUNodW5rcykoa2UseWUsQ3QsZnQpXSk6WzMsMTZdO2Nhc2UgMTU6bHQ9eXQuc2VudCgpLHl0LmxhYmVsPTE2O2Nhc2UgMTY6aWYoImZhaWxlZCI9PT1fdHx8ImVycm9yIj09PV90KXRocm93IG5ldyBKLkNvbXB1dGVKb2JFeGVjdXRpb25FcnJvcih0dCxsdCk7cmV0dXJu''@;'; put 'put ''IG5lPyhIdD0iL2NvbXB1dGUvc2Vzc2lvbnMvIi5jb25jYXQoRGUsIi9maWxlcmVmcy9fd2Vib3V0L2NvbnRlbnQiKSxbNCxrZS5nZXQoSHQseWUsInRleHQvcGxhaW4iKS5jYXRjaChmdW5jdGlvbihqdCl7cmV0dXJuIFcoVWUsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBKdCxnbixk''@;'; put 'put ''bix5bjtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKGxuKXtzd2l0Y2gobG4ubGFiZWwpe2Nhc2UgMDpyZXR1cm4ganQgaW5zdGFuY2VvZiBKLk5vdEZvdW5kRXJyb3ImJkx0PyhKdD0iIi5jb25jYXQoTHQuaHJlZiwiL2NvbnRlbnQiKSxnbj1udWxsIT09KHluPW51bGw9PT0oZG49dHQubG9nU3Rh''@;'; put 'put ''dGlzdGljcyl8fHZvaWQgMD09PWRuP3ZvaWQgMDpkbi5saW5lQ291bnQpJiZ2b2lkIDAhPT15bj95bjoxZTYsWzQsKDAsb2UuZmV0Y2hMb2dCeUNodW5rcykoa2UseWUsSnQsZ24pXSk6WzMsMl07Y2FzZSAxOnJldHVybiBsdD1sbi5zZW50KCksWzIsUHJvbWlzZS5yZWplY3Qoe3N0YXR1czo1''@;'; put 'put ''MDAsbG9nOmx0fSldO2Nhc2UgMjpyZXR1cm5bMix7cmVzdWx0OkpTT04uc3RyaW5naWZ5KGp0KX1dfX0pfSl9KV0pOlsyLHtqb2I6dHQsbG9nOmx0fV07Y2FzZSAxNzpyZXR1cm4gZXQ9eXQuc2VudCgpLFs0LFNlLmNsZWFyU2Vzc2lvbihEZSx5ZSkuY2F0Y2goZnVuY3Rpb24oanQpe3Rocm93''@;'; put 'put ''KDAsSy5wcmVmaXhNZXNzYWdlKShqdCwiRXJyb3Igd2hpbGUgY2xlYXJpbmcgc2Vzc2lvbi4gIil9KV07Y2FzZSAxODpyZXR1cm4geXQuc2VudCgpLFsyLHtyZXN1bHQ6bnVsbD09ZXQ/dm9pZCAwOmV0LnJlc3VsdCxsb2c6bHR9XTtjYXNlIDE5OmlmKDQwND09PShHZT15dC5zZW50KCkpLnN0''@;'; put 'put ''YXR1cylyZXR1cm5bMixBZShrZSxTZSxJZSxUZSxNZSxoZSxPLHosZWUsITEsITApXTt0aHJvdygwLEsucHJlZml4TWVzc2FnZSkoR2UsIkVycm9yIHdoaWxlIGV4ZWN1dGluZyBzY3JpcHQuICIpO2Nhc2UgMjA6cmV0dXJuWzJdfX0pfSl9fSw3NDU4OmZ1bmN0aW9uKFUsUSxqKXsidXNlIHN0''@;'; put 'put ''cmljdCI7dmFyIHJlPWooNDE1NSksYWU9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHRlLEssSixzZSl7cmV0dXJuIG5ldyhKfHwoSj1Qcm9taXNlKSkoZnVuY3Rpb24ob2UsY2Upe2Z1bmN0aW9uIGRlKGtlKXt0cnl7QWUoc2UubmV4dChrZSkpfWNhdGNoKFNlKXtjZShTZSl9fWZ1''@;'; put 'put ''bmN0aW9uIHZlKGtlKXt0cnl7QWUoc2UudGhyb3coa2UpKX1jYXRjaChTZSl7Y2UoU2UpfX1mdW5jdGlvbiBBZShrZSl7dmFyIFNlO2tlLmRvbmU/b2Uoa2UudmFsdWUpOihTZT1rZS52YWx1ZSxTZSBpbnN0YW5jZW9mIEo/U2U6bmV3IEooZnVuY3Rpb24oSWUpe0llKFNlKX0pKS50aGVuKGRl''@;'; put 'put ''LHZlKX1BZSgoc2U9c2UuYXBwbHkodGUsS3x8W10pKS5uZXh0KCkpfSl9LFk9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24odGUsSyl7dmFyIEosc2Usb2UsY2UsZGU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmb2VbMF0pdGhyb3cgb2VbMV07cmV0dXJuIG9lWzFdfSx0''@;'; put 'put ''cnlzOltdLG9wczpbXX07cmV0dXJuIGNlPXtuZXh0OnZlKDApLHRocm93OnZlKDEpLHJldHVybjp2ZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGNlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGNlO2Z1bmN0aW9uIHZlKEFlKXtyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24oa2Upe3JldHVybiBmdW5jdGlvbihTZSl7aWYoSil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtkZTspdHJ5e2lmKEo9MSxzZSYmKG9lPTImU2VbMF0/c2UucmV0dXJuOlNlWzBdP3NlLnRocm93fHwoKG9lPXNlLnJldHVy''@;'; put 'put ''bikmJm9lLmNhbGwoc2UpLDApOnNlLm5leHQpJiYhKG9lPW9lLmNhbGwoc2UsU2VbMV0pKS5kb25lKXJldHVybiBvZTtzd2l0Y2goc2U9MCxvZSYmKFNlPVsyJlNlWzBdLG9lLnZhbHVlXSksU2VbMF0pe2Nhc2UgMDpjYXNlIDE6b2U9U2U7YnJlYWs7Y2FzZSA0OnJldHVybiBkZS5sYWJlbCsr''@;'; put 'put ''LHt2YWx1ZTpTZVsxXSxkb25lOiExfTtjYXNlIDU6ZGUubGFiZWwrKyxzZT1TZVsxXSxTZT1bMF07Y29udGludWU7Y2FzZSA3OlNlPWRlLm9wcy5wb3AoKSxkZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgob2U9KG9lPWRlLnRyeXMpLmxlbmd0aD4wJiZvZVtvZS5sZW5ndGgt''@;'; put 'put ''MV0pfHw2IT09U2VbMF0mJjIhPT1TZVswXSkpe2RlPTA7Y29udGludWV9aWYoMz09PVNlWzBdJiYoIW9lfHxTZVsxXT5vZVswXSYmU2VbMV08b2VbM10pKXtkZS5sYWJlbD1TZVsxXTticmVha31pZig2PT09U2VbMF0mJmRlLmxhYmVsPG9lWzFdKXtkZS5sYWJlbD1vZVsxXSxvZT1TZTticmVh''@;'; put 'put ''a31pZihvZSYmZGUubGFiZWw8b2VbMl0pe2RlLmxhYmVsPW9lWzJdLGRlLm9wcy5wdXNoKFNlKTticmVha31vZVsyXSYmZGUub3BzLnBvcCgpLGRlLnRyeXMucG9wKCk7Y29udGludWV9U2U9Sy5jYWxsKHRlLGRlKX1jYXRjaChJZSl7U2U9WzYsSWVdLHNlPTB9ZmluYWxseXtKPW9lPTB9aWYo''@;'; put 'put ''NSZTZVswXSl0aHJvdyBTZVsxXTtyZXR1cm57dmFsdWU6U2VbMF0/U2VbMV06dm9pZCAwLGRvbmU6ITB9fShbQWUsa2VdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5nZXRGaWxlU3RyZWFtPXZvaWQgMDt2YXIgVz1qKDI5NzUpLE49aig3''@;'; put 'put ''NzU3KTtRLmdldEZpbGVTdHJlYW09ZnVuY3Rpb24odGUsSyl7cmV0dXJuIGFlKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEosc2Usb2UsY2UsZGU7cmV0dXJuIFkodGhpcyxmdW5jdGlvbih2ZSl7c3dpdGNoKHZlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIEo9aigyOTc1KS5j''@;'; put 'put ''cmVhdGVXcml0ZVN0cmVhbSxzZT1LfHxyZS5jd2QoKSxbNCwoMCxXLmlzRm9sZGVyKShzZSldO2Nhc2UgMTpyZXR1cm4gdmUuc2VudCgpPyhvZT0iIi5jb25jYXQodGUubmFtZXx8ImpvYiIsIi0iKS5jb25jYXQoKDAsTi5nZW5lcmF0ZVRpbWVzdGFtcCkoKSwiLmxvZyIpLGNlPWooMjUyMCks''@;'; put 'put ''ZGU9Y2Uuam9pbihLfHxyZS5jd2QoKSxvZSksWzQsSihkZSldKTpbMywzXTtjYXNlIDI6Y2FzZSA0OnJldHVyblsyLHZlLnNlbnQoKV07Y2FzZSAzOnJldHVybls0LEooc2UpXX19KX0pfX0sMTM0MzpmdW5jdGlvbihVLFEsail7InVzZSBzdHJpY3QiO3ZhciByZT1qKDQxNTUpLGFlPWooNTEw''@;'; put 'put ''OCksWT10aGlzJiZ0aGlzLl9fYXNzaWdufHxmdW5jdGlvbigpe3JldHVybiBZPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGRlKXtmb3IodmFyIHZlLEFlPTEsa2U9YXJndW1lbnRzLmxlbmd0aDtBZTxrZTtBZSsrKWZvcih2YXIgU2UgaW4gdmU9YXJndW1lbnRzW0FlXSlPYmplY3QucHJvdG90''@;'; put 'put ''eXBlLmhhc093blByb3BlcnR5LmNhbGwodmUsU2UpJiYoZGVbU2VdPXZlW1NlXSk7cmV0dXJuIGRlfSxZLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sVz10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oZGUsdmUsQWUsa2Upe3JldHVybiBuZXcoQWV8fChBZT1Qcm9taXNlKSkoZnVuY3Rp''@;'; put 'put ''b24oU2UsSWUpe2Z1bmN0aW9uIFRlKE8pe3RyeXtoZShrZS5uZXh0KE8pKX1jYXRjaCh6KXtJZSh6KX19ZnVuY3Rpb24gTWUoTyl7dHJ5e2hlKGtlLnRocm93KE8pKX1jYXRjaCh6KXtJZSh6KX19ZnVuY3Rpb24gaGUoTyl7dmFyIHo7Ty5kb25lP1NlKE8udmFsdWUpOih6PU8udmFsdWUseiBp''@;'; put 'put ''bnN0YW5jZW9mIEFlP3o6bmV3IEFlKGZ1bmN0aW9uKGVlKXtlZSh6KX0pKS50aGVuKFRlLE1lKX1oZSgoa2U9a2UuYXBwbHkoZGUsdmV8fFtdKSkubmV4dCgpKX0pfSxOPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKGRlLHZlKXt2YXIgQWUsa2UsU2UsSWUsVGU9e2xhYmVsOjAs''@;'; put 'put ''c2VudDpmdW5jdGlvbigpe2lmKDEmU2VbMF0pdGhyb3cgU2VbMV07cmV0dXJuIFNlWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIEllPXtuZXh0Ok1lKDApLHRocm93Ok1lKDEpLHJldHVybjpNZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKEllW1N5bWJvbC5pdGVyYXRvcl09''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLEllO2Z1bmN0aW9uIE1lKGhlKXtyZXR1cm4gZnVuY3Rpb24oTyl7cmV0dXJuIGZ1bmN0aW9uKHope2lmKEFlKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO1RlOyl0cnl7aWYoQWU9MSxr''@;'; put 'put ''ZSYmKFNlPTImelswXT9rZS5yZXR1cm46elswXT9rZS50aHJvd3x8KChTZT1rZS5yZXR1cm4pJiZTZS5jYWxsKGtlKSwwKTprZS5uZXh0KSYmIShTZT1TZS5jYWxsKGtlLHpbMV0pKS5kb25lKXJldHVybiBTZTtzd2l0Y2goa2U9MCxTZSYmKHo9WzImelswXSxTZS52YWx1ZV0pLHpbMF0pe2Nh''@;'; put 'put ''c2UgMDpjYXNlIDE6U2U9ejticmVhaztjYXNlIDQ6cmV0dXJuIFRlLmxhYmVsKysse3ZhbHVlOnpbMV0sZG9uZTohMX07Y2FzZSA1OlRlLmxhYmVsKyssa2U9elsxXSx6PVswXTtjb250aW51ZTtjYXNlIDc6ej1UZS5vcHMucG9wKCksVGUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0Omlm''@;'; put 'put ''KCEoKFNlPShTZT1UZS50cnlzKS5sZW5ndGg+MCYmU2VbU2UubGVuZ3RoLTFdKXx8NiE9PXpbMF0mJjIhPT16WzBdKSl7VGU9MDtjb250aW51ZX1pZigzPT09elswXSYmKCFTZXx8elsxXT5TZVswXSYmelsxXTxTZVszXSkpe1RlLmxhYmVsPXpbMV07YnJlYWt9aWYoNj09PXpbMF0mJlRlLmxh''@;'; put 'put ''YmVsPFNlWzFdKXtUZS5sYWJlbD1TZVsxXSxTZT16O2JyZWFrfWlmKFNlJiZUZS5sYWJlbDxTZVsyXSl7VGUubGFiZWw9U2VbMl0sVGUub3BzLnB1c2goeik7YnJlYWt9U2VbMl0mJlRlLm9wcy5wb3AoKSxUZS50cnlzLnBvcCgpO2NvbnRpbnVlfXo9dmUuY2FsbChkZSxUZSl9Y2F0Y2goZWUp''@;'; put 'put ''e3o9WzYsZWVdLGtlPTB9ZmluYWxseXtBZT1TZT0wfWlmKDUmelswXSl0aHJvdyB6WzFdO3JldHVybnt2YWx1ZTp6WzBdP3pbMV06dm9pZCAwLGRvbmU6ITB9fShbaGUsT10pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLnBvbGxKb2JTdGF0''@;'; put 'put ''ZT12b2lkIDA7dmFyIHRlPWooNzA0KSxLPWooMTM5NSksSj1qKDU5MjgpO1EucG9sbEpvYlN0YXRlPWZ1bmN0aW9uKGRlLHZlLEFlLGtlLFNlKXtyZXR1cm4gVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgSWUsVGUsTWUsaGUsTyx6LGVlO3JldHVybiBOKHRoaXMsZnVuY3Rp''@;'; put 'put ''b24obmUpe3N3aXRjaChuZS5sYWJlbCl7Y2FzZSAwOmlmKEllPXJlLmxvZ2dlcnx8YWUsU2U9WShZKHt9LHttYXhQb2xsQ291bnQ6MWUzLHBvbGxJbnRlcnZhbDozMDAsc3RyZWFtTG9nOiExfSksU2V8fHt9KSwhKFRlPXZlLmxpbmtzLmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuInN0YXRlIj09''@;'; put 'put ''PXgucmVsfSkpKXRocm93IG5ldyBFcnJvcigiSm9iIHN0YXRlIGxpbmsgd2FzIG5vdCBmb3VuZC4iKTtyZXR1cm5bNCxzZShkZSx2ZSwiIixBZSxrZSkuY2F0Y2goZnVuY3Rpb24oeCl7cmV0dXJuIEllLmVycm9yKCJFcnJvciBmZXRjaGluZyBqb2Igc3RhdGUgZnJvbSAiLmNvbmNhdChUZS5o''@;'; put 'put ''cmVmLCIuIFN0YXJ0aW5nIHBvbGwsIGFzc3VtaW5nIGpvYiB0byBiZSBydW5uaW5nLiIpLHgpLCJ1bmF2YWlsYWJsZSJ9KV07Y2FzZSAxOnJldHVybiBNZT1uZS5zZW50KCksaGU9MCwiY29tcGxldGVkIj09PU1lP1syLFByb21pc2UucmVzb2x2ZShNZSldOlNlLnN0cmVhbUxvZyYmKDAsSi5p''@;'; put 'put ''c05vZGUpKCk/WzQsKDAsaig3NDU4KS5nZXRGaWxlU3RyZWFtKSh2ZSxTZS5sb2dGb2xkZXJQYXRoKV06WzMsM107Y2FzZSAyOk89bmUuc2VudCgpLG5lLmxhYmVsPTM7Y2FzZSAzOnJldHVybls0LGNlKGRlLHZlLE1lLEFlLGhlLGtlLFkoWSh7fSxTZSkse21heFBvbGxDb3VudDpTZS5tYXhQ''@;'; put 'put ''b2xsQ291bnQ8PTEwMD9TZS5tYXhQb2xsQ291bnQ6MTAwfSksTyldO2Nhc2UgNDpyZXR1cm4gej1uZS5zZW50KCksaGU9ei5wb2xsQ291bnQsIW9lKE1lPXouc3RhdGUpfHxoZT49U2UubWF4UG9sbENvdW50P1syLE1lXTooZWU9e21heFBvbGxDb3VudDoxNDQwLHBvbGxJbnRlcnZhbDo2ZTQs''@;'; put 'put ''c3RyZWFtTG9nOiExfSxTZSYmKGVlLnN0cmVhbUxvZz1TZS5zdHJlYW1Mb2csZWUubG9nRm9sZGVyUGF0aD1TZS5sb2dGb2xkZXJQYXRoKSxbNCxjZShkZSx2ZSxNZSxBZSxoZSxrZSxlZSxPKV0pO2Nhc2UgNTpyZXR1cm4gej1uZS5zZW50KCksTWU9ei5zdGF0ZSxoZT16LnBvbGxDb3VudCxP''@;'; put 'put ''JiZPLmVuZCgpLFsyLE1lXX19KX0pfTt2YXIgc2U9ZnVuY3Rpb24oZGUsdmUsQWUsa2UsU2Upe3JldHVybiBXKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEllLFRlO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oTWUpe3N3aXRjaChNZS5sYWJlbCl7Y2FzZSAwOmlmKCEoSWU9''@;'; put 'put ''dmUubGlua3MuZmluZChmdW5jdGlvbihoZSl7cmV0dXJuInN0YXRlIj09PWhlLnJlbH0pKSl0aHJvdyBuZXcgRXJyb3IoIkpvYiBzdGF0ZSBsaW5rIHdhcyBub3QgZm91bmQuIik7cmV0dXJuIG9lKEFlKT8oVGU9dm9pZCAwLFNlP1s0LCgwLHRlLmdldFRva2VucykoZGUsU2UpXTpbMywyXSk6''@;'; put 'put ''WzMsNF07Y2FzZSAxOlRlPU1lLnNlbnQoKSxNZS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bNCxkZS5nZXQoIiIuY29uY2F0KEllLmhyZWYsIj9fYWN0aW9uPXdhaXQmd2FpdD0zMDAiKSxudWxsPT1UZT92b2lkIDA6VGUuYWNjZXNzX3Rva2VuLCJ0ZXh0L3BsYWluIix7fSxrZSkuY2F0Y2goZnVu''@;'; put 'put ''Y3Rpb24oaGUpe3Rocm93IG5ldyBLLkpvYlN0YXRlUG9sbEVycm9yKHZlLmlkLGhlKX0pXTtjYXNlIDM6cmV0dXJuWzIsTWUuc2VudCgpLnJlc3VsdC50cmltKCldO2Nhc2UgNDpyZXR1cm5bMixBZV19fSl9KX0sb2U9ZnVuY3Rpb24oZGUpe3JldHVybiJydW5uaW5nIj09PWRlfHwiIj09PWRl''@;'; put 'put ''fHwicGVuZGluZyI9PT1kZXx8InVuYXZhaWxhYmxlIj09PWRlfSxjZT1mdW5jdGlvbihkZSx2ZSxBZSxrZSxTZSxJZSxUZSxNZSl7cmV0dXJuIFcodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgaGUsTyx6LGVlLG5lLHgsUCxWLFQsUyxGLHllLENlLERlLFBlO3JldHVybiBO''@;'; put 'put ''KHRoaXMsZnVuY3Rpb24oUWUpe3N3aXRjaChRZS5sYWJlbCl7Y2FzZSAwOmlmKGhlPTMwMCxPPTFlMyx6PTUsZWU9MCxuZT1BZSx4PSIiLFA9MCxWPXJlLmxvZ2dlcnx8YWUsVGUmJihoZT1UZS5wb2xsSW50ZXJ2YWx8fGhlLE89VGUubWF4UG9sbENvdW50fHxPKSwhKFQ9dmUubGlua3MuZmlu''@;'; put 'put ''ZChmdW5jdGlvbigkZSl7cmV0dXJuInN0YXRlIj09PSRlLnJlbH0pKSl0aHJvdyBuZXcgRXJyb3IoIkpvYiBzdGF0ZSBsaW5rIHdhcyBub3QgZm91bmQuIik7UWUubGFiZWw9MTtjYXNlIDE6cmV0dXJuIG9lKG5lKSYmU2U8PU8/WzQsc2UoZGUsdmUsbmUsa2UsSWUpLmNhdGNoKGZ1bmN0aW9u''@;'; put 'put ''KCRlKXtpZihlZSsrLFNlPj1PfHxlZT49eil0aHJvdyAkZTtyZXR1cm4gVi5lcnJvcigiRXJyb3IgZmV0Y2hpbmcgam9iIHN0YXRlIGZyb20gIi5jb25jYXQoVC5ocmVmLCIuIFJlc3VtaW5nIHBvbGwsIGFzc3VtaW5nIGpvYiB0byBiZSBydW5uaW5nLiIpLCRlKSwidW5hdmFpbGFibGUifSld''@;'; put 'put ''OlszLDhdO2Nhc2UgMjpyZXR1cm4gbmU9UWUuc2VudCgpLFNlKyssUz12ZS5saW5rcy5maW5kKGZ1bmN0aW9uKCRlKXtyZXR1cm4ic2VsZiI9PT0kZS5yZWx9KS5ocmVmLG51bGwhPVRlJiZUZS5zdHJlYW1Mb2c/WzQsZGUuZ2V0KFMsbnVsbD09SWU/dm9pZCAwOkllLmFjY2Vzc190b2tlbild''@;'; put 'put ''OlszLDZdO2Nhc2UgMzpyZXR1cm4gRj1RZS5zZW50KCkucmVzdWx0LHllPW51bGwhPT0oUGU9bnVsbD09PShEZT1GLmxvZ1N0YXRpc3RpY3MpfHx2b2lkIDA9PT1EZT92b2lkIDA6RGUubGluZUNvdW50KSYmdm9pZCAwIT09UGU/UGU6MWU2LChDZT0oKDAsSi5pc05vZGUpKCk/aigyMDgwKTp7''@;'; put 'put ''c2F2ZUxvZzpudWxsfSkuc2F2ZUxvZyk/WzQsQ2UodmUsZGUsUCx5ZSxNZSxudWxsPT1JZT92b2lkIDA6SWUuYWNjZXNzX3Rva2VuKV06WzMsNV07Y2FzZSA0OlFlLnNlbnQoKSxRZS5sYWJlbD01O2Nhc2UgNTpQKz15ZSxRZS5sYWJlbD02O2Nhc2UgNjpyZXR1cm4ga2UmJnghPT1uZSYmKFYu''@;'; put 'put ''aW5mbygiUG9sbGluZzogIi5jb25jYXQoZGUuZ2V0QmFzZVVybCgpK1MsIi9zdGF0ZSIpKSxWLmluZm8oIkN1cnJlbnQgam9iIHN0YXRlOiAiLmNvbmNhdChuZSkpLHg9bmUpLCJ1bmF2YWlsYWJsZSIhPW5lJiZlZT4wJiYoZWU9MCksWzQsKDAsSi5kZWxheSkoaGUpXTtjYXNlIDc6cmV0dXJu''@;'; put 'put ''IFFlLnNlbnQoKSxbMywxXTtjYXNlIDg6cmV0dXJuWzIse3N0YXRlOm5lLHBvbGxDb3VudDpTZX1dfX0pfSl9fSwyMDgwOmZ1bmN0aW9uKFUsUSxqKXsidXNlIHN0cmljdCI7dmFyIHJlPWooNDE1NSksYWU9aig1MTA4KSxZPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihLLEosc2Us''@;'; put 'put ''b2Upe3JldHVybiBuZXcoc2V8fChzZT1Qcm9taXNlKSkoZnVuY3Rpb24oY2UsZGUpe2Z1bmN0aW9uIHZlKFNlKXt0cnl7a2Uob2UubmV4dChTZSkpfWNhdGNoKEllKXtkZShJZSl9fWZ1bmN0aW9uIEFlKFNlKXt0cnl7a2Uob2UudGhyb3coU2UpKX1jYXRjaChJZSl7ZGUoSWUpfX1mdW5jdGlv''@;'; put 'put ''biBrZShTZSl7dmFyIEllO1NlLmRvbmU/Y2UoU2UudmFsdWUpOihJZT1TZS52YWx1ZSxJZSBpbnN0YW5jZW9mIHNlP0llOm5ldyBzZShmdW5jdGlvbihUZSl7VGUoSWUpfSkpLnRoZW4odmUsQWUpfWtlKChvZT1vZS5hcHBseShLLEp8fFtdKSkubmV4dCgpKX0pfSxXPXRoaXMmJnRoaXMuX19n''@;'; put 'put ''ZW5lcmF0b3J8fGZ1bmN0aW9uKEssSil7dmFyIHNlLG9lLGNlLGRlLHZlPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmNlWzBdKXRocm93IGNlWzFdO3JldHVybiBjZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBkZT17bmV4dDpBZSgwKSx0aHJvdzpBZSgxKSxyZXR1cm46QWUo''@;'; put 'put ''Mil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihkZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxkZTtmdW5jdGlvbiBBZShrZSl7cmV0dXJuIGZ1bmN0aW9uKFNlKXtyZXR1cm4gZnVuY3Rpb24oSWUpe2lmKHNlKXRocm93IG5ldyBUeXBlRXJyb3IoIkdl''@;'; put 'put ''bmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3ZlOyl0cnl7aWYoc2U9MSxvZSYmKGNlPTImSWVbMF0/b2UucmV0dXJuOkllWzBdP29lLnRocm93fHwoKGNlPW9lLnJldHVybikmJmNlLmNhbGwob2UpLDApOm9lLm5leHQpJiYhKGNlPWNlLmNhbGwob2UsSWVbMV0pKS5kb25l''@;'; put 'put ''KXJldHVybiBjZTtzd2l0Y2gob2U9MCxjZSYmKEllPVsyJkllWzBdLGNlLnZhbHVlXSksSWVbMF0pe2Nhc2UgMDpjYXNlIDE6Y2U9SWU7YnJlYWs7Y2FzZSA0OnJldHVybiB2ZS5sYWJlbCsrLHt2YWx1ZTpJZVsxXSxkb25lOiExfTtjYXNlIDU6dmUubGFiZWwrKyxvZT1JZVsxXSxJZT1bMF07''@;'; put 'put ''Y29udGludWU7Y2FzZSA3OkllPXZlLm9wcy5wb3AoKSx2ZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoY2U9KGNlPXZlLnRyeXMpLmxlbmd0aD4wJiZjZVtjZS5sZW5ndGgtMV0pfHw2IT09SWVbMF0mJjIhPT1JZVswXSkpe3ZlPTA7Y29udGludWV9aWYoMz09PUllWzBdJiYo''@;'; put 'put ''IWNlfHxJZVsxXT5jZVswXSYmSWVbMV08Y2VbM10pKXt2ZS5sYWJlbD1JZVsxXTticmVha31pZig2PT09SWVbMF0mJnZlLmxhYmVsPGNlWzFdKXt2ZS5sYWJlbD1jZVsxXSxjZT1JZTticmVha31pZihjZSYmdmUubGFiZWw8Y2VbMl0pe3ZlLmxhYmVsPWNlWzJdLHZlLm9wcy5wdXNoKEllKTti''@;'; put 'put ''cmVha31jZVsyXSYmdmUub3BzLnBvcCgpLHZlLnRyeXMucG9wKCk7Y29udGludWV9SWU9Si5jYWxsKEssdmUpfWNhdGNoKFRlKXtJZT1bNixUZV0sb2U9MH1maW5hbGx5e3NlPWNlPTB9aWYoNSZJZVswXSl0aHJvdyBJZVsxXTtyZXR1cm57dmFsdWU6SWVbMF0/SWVbMV06dm9pZCAwLGRvbmU6''@;'; put 'put ''ITB9fShba2UsU2VdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5zYXZlTG9nPXZvaWQgMDt2YXIgTj1qKDU5MjgpLHRlPWooNjEzMSk7US5zYXZlTG9nPWZ1bmN0aW9uKEssSixzZSxvZSxjZSxkZSl7cmV0dXJuIFkodGhpcyx2b2lkIDAs''@;'; put 'put ''dm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHZlLEFlLGtlO3JldHVybiBXKHRoaXMsZnVuY3Rpb24oU2Upe3N3aXRjaChTZS5sYWJlbCl7Y2FzZSAwOmlmKCFkZSl0aHJvdyBuZXcgRXJyb3IoIkxvZ3MgZm9yIGpvYiAiLmNvbmNhdChLLmlkLCIgY2Fubm90IGJlIGZldGNoZWQgd2l0aG91dCBhIHZh''@;'; put 'put ''bGlkIGFjY2VzcyB0b2tlbi4iKSk7aWYoIWNlKXRocm93IG5ldyBFcnJvcigiTG9ncyBmb3Igam9iICIuY29uY2F0KEsuaWQsIiBjYW5ub3QgYmUgd3JpdHRlbiB3aXRob3V0IGEgdmFsaWQgd3JpdGUgc3RyZWFtLiIpKTtpZih2ZT1yZS5sb2dnZXJ8fGFlLCEoQWU9Sy5saW5rcy5maW5kKGZ1''@;'; put 'put ''bmN0aW9uKEllKXtyZXR1cm4ibG9nIj09PUllLnJlbH0pKSl0aHJvdyBuZXcgRXJyb3IoIkxvZyBVUkwgZm9yIGpvYiAiLmNvbmNhdChLLmlkLCIgd2FzIG5vdCBmb3VuZC4iKSk7cmV0dXJuWzQsKDAsTi5mZXRjaExvZykoSixkZSwiIi5jb25jYXQoQWUuaHJlZiwiL2NvbnRlbnQiKSxzZSxv''@;'; put 'put ''ZSldO2Nhc2UgMTpyZXR1cm4ga2U9U2Uuc2VudCgpLHZlLmluZm8oIldyaXRpbmcgbG9ncyB0byAiLmNvbmNhdChjZS5wYXRoKSksWzQsKDAsdGUud3JpdGVTdHJlYW0pKGNlLGtlfHwiIildO2Nhc2UgMjpyZXR1cm4gU2Uuc2VudCgpLFsyXX19KX0pfX0sNjQ5NjpmdW5jdGlvbihVLFEsail7''@;'; put 'put ''InVzZSBzdHJpY3QiO3ZhciByZT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oTix0ZSxLLEope3JldHVybiBuZXcoS3x8KEs9UHJvbWlzZSkpKGZ1bmN0aW9uKHNlLG9lKXtmdW5jdGlvbiBjZShBZSl7dHJ5e3ZlKEoubmV4dChBZSkpfWNhdGNoKGtlKXtvZShrZSl9fWZ1bmN0aW9u''@;'; put 'put ''IGRlKEFlKXt0cnl7dmUoSi50aHJvdyhBZSkpfWNhdGNoKGtlKXtvZShrZSl9fWZ1bmN0aW9uIHZlKEFlKXt2YXIga2U7QWUuZG9uZT9zZShBZS52YWx1ZSk6KGtlPUFlLnZhbHVlLGtlIGluc3RhbmNlb2YgSz9rZTpuZXcgSyhmdW5jdGlvbihTZSl7U2Uoa2UpfSkpLnRoZW4oY2UsZGUpfXZl''@;'; put 'put ''KChKPUouYXBwbHkoTix0ZXx8W10pKS5uZXh0KCkpfSl9LGFlPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKE4sdGUpe3ZhciBLLEosc2Usb2UsY2U9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmc2VbMF0pdGhyb3cgc2VbMV07cmV0dXJuIHNlWzFdfSx0cnlzOltdLG9w''@;'; put 'put ''czpbXX07cmV0dXJuIG9lPXtuZXh0OmRlKDApLHRocm93OmRlKDEpLHJldHVybjpkZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKG9lW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLG9lO2Z1bmN0aW9uIGRlKHZlKXtyZXR1cm4gZnVuY3Rpb24oQWUp''@;'; put 'put ''e3JldHVybiBmdW5jdGlvbihrZSl7aWYoSyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtjZTspdHJ5e2lmKEs9MSxKJiYoc2U9MiZrZVswXT9KLnJldHVybjprZVswXT9KLnRocm93fHwoKHNlPUoucmV0dXJuKSYmc2UuY2FsbChK''@;'; put 'put ''KSwwKTpKLm5leHQpJiYhKHNlPXNlLmNhbGwoSixrZVsxXSkpLmRvbmUpcmV0dXJuIHNlO3N3aXRjaChKPTAsc2UmJihrZT1bMiZrZVswXSxzZS52YWx1ZV0pLGtlWzBdKXtjYXNlIDA6Y2FzZSAxOnNlPWtlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gY2UubGFiZWwrKyx7dmFsdWU6a2VbMV0sZG9u''@;'; put 'put ''ZTohMX07Y2FzZSA1OmNlLmxhYmVsKyssSj1rZVsxXSxrZT1bMF07Y29udGludWU7Y2FzZSA3OmtlPWNlLm9wcy5wb3AoKSxjZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoc2U9KHNlPWNlLnRyeXMpLmxlbmd0aD4wJiZzZVtzZS5sZW5ndGgtMV0pfHw2IT09a2VbMF0mJjIh''@;'; put 'put ''PT1rZVswXSkpe2NlPTA7Y29udGludWV9aWYoMz09PWtlWzBdJiYoIXNlfHxrZVsxXT5zZVswXSYma2VbMV08c2VbM10pKXtjZS5sYWJlbD1rZVsxXTticmVha31pZig2PT09a2VbMF0mJmNlLmxhYmVsPHNlWzFdKXtjZS5sYWJlbD1zZVsxXSxzZT1rZTticmVha31pZihzZSYmY2UubGFiZWw8''@;'; put 'put ''c2VbMl0pe2NlLmxhYmVsPXNlWzJdLGNlLm9wcy5wdXNoKGtlKTticmVha31zZVsyXSYmY2Uub3BzLnBvcCgpLGNlLnRyeXMucG9wKCk7Y29udGludWV9a2U9dGUuY2FsbChOLGNlKX1jYXRjaChTZSl7a2U9WzYsU2VdLEo9MH1maW5hbGx5e0s9c2U9MH1pZig1JmtlWzBdKXRocm93IGtlWzFd''@;'; put 'put ''O3JldHVybnt2YWx1ZTprZVswXT9rZVsxXTp2b2lkIDAsZG9uZTohMH19KFt2ZSxBZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLnVwbG9hZFRhYmxlcz12b2lkIDA7dmFyIFk9aig5Nzc4KSxXPWooMjQwMik7US51cGxvYWRUYWJsZXM9''@;'; put 'put ''ZnVuY3Rpb24oTix0ZSxLKXtyZXR1cm4gcmUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEosc2Usb2UsY2UsZGUsdmUsQWU7cmV0dXJuIGFlKHRoaXMsZnVuY3Rpb24oa2Upe3N3aXRjaChrZS5sYWJlbCl7Y2FzZSAwOmZvcihvZSBpbiBKPVtdLHNlPVtdLHRlKXNlLnB1c2go''@;'; put 'put ''b2UpO2NlPTAsa2UubGFiZWw9MTtjYXNlIDE6aWYoIShjZTxzZS5sZW5ndGgpKXJldHVyblszLDRdO2lmKCJFUlJPUjogTEFSR0UgU1RSSU5HIExFTkdUSCI9PT0odmU9KDAsVy5jb252ZXJ0VG9DU1YpKHRlLGRlPXNlW2NlXSkpKXRocm93IG5ldyBFcnJvcigiVGhlIG1heCBsZW5ndGggb2Yg''@;'; put 'put ''YSBzdHJpbmcgdmFsdWUgaW4gU0FTanMgaXMgMzI3NjUgY2hhcmFjdGVycy4iKTtyZXR1cm5bNCxOLnVwbG9hZEZpbGUoIi9maWxlcy9maWxlcyNyYXdVcGxvYWQiLHZlLEspLmNhdGNoKGZ1bmN0aW9uKFNlKXt0aHJvdygwLFkucHJlZml4TWVzc2FnZSkoU2UsIkVycm9yIHdoaWxlIHVwbG9h''@;'; put 'put ''ZGluZyBmaWxlLiAiKX0pXTtjYXNlIDI6QWU9a2Uuc2VudCgpLEoucHVzaCh7dGFibGVOYW1lOmRlLGZpbGU6QWUucmVzdWx0fSksa2UubGFiZWw9MztjYXNlIDM6cmV0dXJuIGNlKyssWzMsMV07Y2FzZSA0OnJldHVyblsyLEpdfX0pfSl9fSw2MTMxOmZ1bmN0aW9uKFUsUSl7InVzZSBzdHJp''@;'; put 'put ''Y3QiO3ZhciBqPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihhZSxZLFcsTil7cmV0dXJuIG5ldyhXfHwoVz1Qcm9taXNlKSkoZnVuY3Rpb24odGUsSyl7ZnVuY3Rpb24gSihjZSl7dHJ5e29lKE4ubmV4dChjZSkpfWNhdGNoKGRlKXtLKGRlKX19ZnVuY3Rpb24gc2UoY2Upe3RyeXtv''@;'; put 'put ''ZShOLnRocm93KGNlKSl9Y2F0Y2goZGUpe0soZGUpfX1mdW5jdGlvbiBvZShjZSl7dmFyIGRlO2NlLmRvbmU/dGUoY2UudmFsdWUpOihkZT1jZS52YWx1ZSxkZSBpbnN0YW5jZW9mIFc/ZGU6bmV3IFcoZnVuY3Rpb24odmUpe3ZlKGRlKX0pKS50aGVuKEosc2UpfW9lKChOPU4uYXBwbHkoYWUs''@;'; put 'put ''WXx8W10pKS5uZXh0KCkpfSl9LHJlPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKGFlLFkpe3ZhciBXLE4sdGUsSyxKPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJnRlWzBdKXRocm93IHRlWzFdO3JldHVybiB0ZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBLPXtu''@;'; put 'put ''ZXh0OnNlKDApLHRocm93OnNlKDEpLHJldHVybjpzZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKEtbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksSztmdW5jdGlvbiBzZShvZSl7cmV0dXJuIGZ1bmN0aW9uKGNlKXtyZXR1cm4gZnVuY3Rpb24oZGUp''@;'; put 'put ''e2lmKFcpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7SjspdHJ5e2lmKFc9MSxOJiYodGU9MiZkZVswXT9OLnJldHVybjpkZVswXT9OLnRocm93fHwoKHRlPU4ucmV0dXJuKSYmdGUuY2FsbChOKSwwKTpOLm5leHQpJiYhKHRlPXRl''@;'; put 'put ''LmNhbGwoTixkZVsxXSkpLmRvbmUpcmV0dXJuIHRlO3N3aXRjaChOPTAsdGUmJihkZT1bMiZkZVswXSx0ZS52YWx1ZV0pLGRlWzBdKXtjYXNlIDA6Y2FzZSAxOnRlPWRlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gSi5sYWJlbCsrLHt2YWx1ZTpkZVsxXSxkb25lOiExfTtjYXNlIDU6Si5sYWJlbCsr''@;'; put 'put ''LE49ZGVbMV0sZGU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpkZT1KLm9wcy5wb3AoKSxKLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKCh0ZT0odGU9Si50cnlzKS5sZW5ndGg+MCYmdGVbdGUubGVuZ3RoLTFdKXx8NiE9PWRlWzBdJiYyIT09ZGVbMF0pKXtKPTA7Y29udGludWV9aWYo''@;'; put 'put ''Mz09PWRlWzBdJiYoIXRlfHxkZVsxXT50ZVswXSYmZGVbMV08dGVbM10pKXtKLmxhYmVsPWRlWzFdO2JyZWFrfWlmKDY9PT1kZVswXSYmSi5sYWJlbDx0ZVsxXSl7Si5sYWJlbD10ZVsxXSx0ZT1kZTticmVha31pZih0ZSYmSi5sYWJlbDx0ZVsyXSl7Si5sYWJlbD10ZVsyXSxKLm9wcy5wdXNo''@;'; put 'put ''KGRlKTticmVha310ZVsyXSYmSi5vcHMucG9wKCksSi50cnlzLnBvcCgpO2NvbnRpbnVlfWRlPVkuY2FsbChhZSxKKX1jYXRjaCh2ZSl7ZGU9WzYsdmVdLE49MH1maW5hbGx5e1c9dGU9MH1pZig1JmRlWzBdKXRocm93IGRlWzFdO3JldHVybnt2YWx1ZTpkZVswXT9kZVsxXTp2b2lkIDAsZG9u''@;'; put 'put ''ZTohMH19KFtvZSxjZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLndyaXRlU3RyZWFtPXZvaWQgMCxRLndyaXRlU3RyZWFtPWZ1bmN0aW9uKGFlLFkpe3JldHVybiBqKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHJlKHRoaXMsZnVuY3Rpb24oVyl7cmV0dXJuWzIsYWUud3JpdGUoWSsiXG4iLGZ1bmN0aW9uKE4pe3JldHVybiBOP1Byb21pc2UucmVqZWN0KE4pOlByb21pc2UucmVzb2x2ZSgpfSldfSl9KX19LDI4NTE6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig1MTA4KSxhZT10''@;'; put 'put ''aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24odmUsQWUsa2UsU2Upe3JldHVybiBuZXcoa2V8fChrZT1Qcm9taXNlKSkoZnVuY3Rpb24oSWUsVGUpe2Z1bmN0aW9uIE1lKHope3RyeXtPKFNlLm5leHQoeikpfWNhdGNoKGVlKXtUZShlZSl9fWZ1bmN0aW9uIGhlKHope3RyeXtPKFNlLnRo''@;'; put 'put ''cm93KHopKX1jYXRjaChlZSl7VGUoZWUpfX1mdW5jdGlvbiBPKHope3ZhciBlZTt6LmRvbmU/SWUoei52YWx1ZSk6KGVlPXoudmFsdWUsZWUgaW5zdGFuY2VvZiBrZT9lZTpuZXcga2UoZnVuY3Rpb24obmUpe25lKGVlKX0pKS50aGVuKE1lLGhlKX1PKChTZT1TZS5hcHBseSh2ZSxBZXx8W10p''@;'; put 'put ''KS5uZXh0KCkpfSl9LFk9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24odmUsQWUpe3ZhciBrZSxTZSxJZSxUZSxNZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZJZVswXSl0aHJvdyBJZVsxXTtyZXR1cm4gSWVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gVGU9e25l''@;'; put 'put ''eHQ6aGUoMCksdGhyb3c6aGUoMSkscmV0dXJuOmhlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoVGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksVGU7ZnVuY3Rpb24gaGUoTyl7cmV0dXJuIGZ1bmN0aW9uKHope3JldHVybiBmdW5jdGlvbihlZSl7''@;'; put 'put ''aWYoa2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7TWU7KXRyeXtpZihrZT0xLFNlJiYoSWU9MiZlZVswXT9TZS5yZXR1cm46ZWVbMF0/U2UudGhyb3d8fCgoSWU9U2UucmV0dXJuKSYmSWUuY2FsbChTZSksMCk6U2UubmV4dCkm''@;'; put 'put ''JiEoSWU9SWUuY2FsbChTZSxlZVsxXSkpLmRvbmUpcmV0dXJuIEllO3N3aXRjaChTZT0wLEllJiYoZWU9WzImZWVbMF0sSWUudmFsdWVdKSxlZVswXSl7Y2FzZSAwOmNhc2UgMTpJZT1lZTticmVhaztjYXNlIDQ6cmV0dXJuIE1lLmxhYmVsKysse3ZhbHVlOmVlWzFdLGRvbmU6ITF9O2Nhc2Ug''@;'; put 'put ''NTpNZS5sYWJlbCsrLFNlPWVlWzFdLGVlPVswXTtjb250aW51ZTtjYXNlIDc6ZWU9TWUub3BzLnBvcCgpLE1lLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChJZT0oSWU9TWUudHJ5cykubGVuZ3RoPjAmJkllW0llLmxlbmd0aC0xXSl8fDYhPT1lZVswXSYmMiE9PWVlWzBdKSl7''@;'; put 'put ''TWU9MDtjb250aW51ZX1pZigzPT09ZWVbMF0mJighSWV8fGVlWzFdPkllWzBdJiZlZVsxXTxJZVszXSkpe01lLmxhYmVsPWVlWzFdO2JyZWFrfWlmKDY9PT1lZVswXSYmTWUubGFiZWw8SWVbMV0pe01lLmxhYmVsPUllWzFdLEllPWVlO2JyZWFrfWlmKEllJiZNZS5sYWJlbDxJZVsyXSl7TWUu''@;'; put 'put ''bGFiZWw9SWVbMl0sTWUub3BzLnB1c2goZWUpO2JyZWFrfUllWzJdJiZNZS5vcHMucG9wKCksTWUudHJ5cy5wb3AoKTtjb250aW51ZX1lZT1BZS5jYWxsKHZlLE1lKX1jYXRjaChuZSl7ZWU9WzYsbmVdLFNlPTB9ZmluYWxseXtrZT1JZT0wfWlmKDUmZWVbMF0pdGhyb3cgZWVbMV07cmV0dXJu''@;'; put 'put ''e3ZhbHVlOmVlWzBdP2VlWzFdOnZvaWQgMCxkb25lOiEwfX0oW08sel0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLkF1dGhNYW5hZ2VyPXZvaWQgMDt2YXIgVz1qKDM5MDApLE49aig1OTI4KSx0ZT1qKDExNzApLEs9aig1NDE4KSxKPWoo''@;'; put 'put ''NDU4Miksc2U9aig2NTQ3KSxvZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHZlKEFlLGtlLFNlLEllKXt2YXIgVGU9dGhpczt0aGlzLnNlcnZlclVybD1BZSx0aGlzLnNlcnZlclR5cGU9a2UsdGhpcy5yZXF1ZXN0Q2xpZW50PVNlLHRoaXMubG9naW5DYWxsYmFjaz1JZSx0aGlzLnVzZXJOYW1lPSIi''@;'; put 'put ''LHRoaXMudXNlckxvbmdOYW1lPSIiLHRoaXMucmVkaXJlY3RlZExvZ2luVXJsPSIvU0FTTG9nb24vaG9tZSIsdGhpcy5leHRyYWN0VXNlck5hbWU9ZnVuY3Rpb24oTWUpe3N3aXRjaChUZS5zZXJ2ZXJUeXBlKXtjYXNlIFcuU2VydmVyVHlwZS5TYXNWaXlhOnJldHVybiBudWxsPT1NZT92b2lk''@;'; put 'put ''IDA6TWUuaWQ7Y2FzZSBXLlNlcnZlclR5cGUuU2FzOTpyZXR1cm4iIjtjYXNlIFcuU2VydmVyVHlwZS5TYXNqczpyZXR1cm4gbnVsbD09TWU/dm9pZCAwOk1lLnVzZXJuYW1lO2RlZmF1bHQ6cmV0dXJuIHJlLmVycm9yKCJTZXJ2ZXIgVHlwZSBub3QgZm91bmQgaW4gZXh0cmFjdFVzZXJOYW1l''@;'; put 'put ''IGZ1bmN0aW9uIiksIiJ9fSx0aGlzLmV4dHJhY3RVc2VyTG9uZ05hbWU9ZnVuY3Rpb24oTWUpe3N3aXRjaChUZS5zZXJ2ZXJUeXBlKXtjYXNlIFcuU2VydmVyVHlwZS5TYXNWaXlhOnJldHVybiBudWxsPT1NZT92b2lkIDA6TWUubmFtZTtjYXNlIFcuU2VydmVyVHlwZS5TYXM5OnJldHVybigw''@;'; put 'put ''LHRlLmV4dHJhY3RVc2VyTG9uZ05hbWVTYXM5KShNZSk7Y2FzZSBXLlNlcnZlclR5cGUuU2FzanM6cmV0dXJuIG51bGw9PU1lP3ZvaWQgMDpNZS5kaXNwbGF5TmFtZTtkZWZhdWx0OnJldHVybiByZS5lcnJvcigiU2VydmVyIFR5cGUgbm90IGZvdW5kIGluIGV4dHJhY3RVc2VyTmFtZSBmdW5j''@;'; put 'put ''dGlvbiIpLCIifX0sdGhpcy5zZXRMb2dpblVybD1mdW5jdGlvbihNZSl7dmFyIGhlPU1lWzFdLnJlcGxhY2UoL1w/LiovLCIiKTtpZigiLyI9PT1oZVswXSl7aGU9aGUuc3Vic3RyKDEpO3ZhciBPPVRlLnNlcnZlclVybD8iIi5jb25jYXQoVGUuc2VydmVyVXJsLCIvIikuY29uY2F0KGhlKToi''@;'; put 'put ''Ii5jb25jYXQoaGUpO1RlLmxvZ2luVXJsPVRlLnNlcnZlclR5cGU9PT1XLlNlcnZlclR5cGUuU2FzVml5YT9POk8ucmVwbGFjZSgiLmRvIiwiIil9fSx0aGlzLmxvZ2luVXJsPSIvU0FTTG9nb24vbG9naW4iLHRoaXMubG9nb3V0VXJsPXRoaXMuc2VydmVyVHlwZT09PVcuU2VydmVyVHlwZS5T''@;'; put 'put ''YXM5PyIvU0FTTG9nb24vbG9nb3V0PyI6dGhpcy5zZXJ2ZXJUeXBlPT09Vy5TZXJ2ZXJUeXBlLlNhc1ZpeWE/Ii9TQVNMb2dvbi9sb2dvdXQuZG8/IjoiL1NBU0xvZ29uL2xvZ291dCJ9cmV0dXJuIHZlLnByb3RvdHlwZS5yZWRpcmVjdGVkTG9nSW49ZnVuY3Rpb24oQWUpe3ZhciBrZT1BZS5v''@;'; put 'put ''bkxvZ2dlZE91dDtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFNlLFRlLE1lLGhlLE8seixlZSxuZSx4O3JldHVybiBZKHRoaXMsZnVuY3Rpb24oUCl7c3dpdGNoKFAubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmZldGNoVXNlck5hbWUoKV07Y2FzZSAx''@;'; put 'put ''OnJldHVybiBTZT1QLnNlbnQoKSxUZT1TZS51c2VyTmFtZSxNZT1TZS51c2VyTG9uZ05hbWUsU2UuaXNMb2dnZWRJbj9bNCx0aGlzLmxvZ2luQ2FsbGJhY2soKV06WzMsM107Y2FzZSAyOnJldHVybiBQLnNlbnQoKSxbMix7aXNMb2dnZWRJbjohMCx1c2VyTmFtZTpUZSx1c2VyTG9uZ05hbWU6''@;'; put 'put ''TWV9XTtjYXNlIDM6cmV0dXJuWzQsKDAsSy5vcGVuV2ViUGFnZSkodGhpcy5yZWRpcmVjdGVkTG9naW5VcmwsIlNBU0xvZ29uIix7d2lkdGg6NTAwLGhlaWdodDo2MDB9LGtlKV07Y2FzZSA0OnJldHVybihoZT1QLnNlbnQoKSk/dGhpcy5zZXJ2ZXJUeXBlIT09Vy5TZXJ2ZXJUeXBlLlNhc1Zp''@;'; put 'put ''eWE/WzMsNl06WzQsKDAsc2UudmVyaWZ5U2FzVml5YUxvZ2luKShoZSldOlsyLHtpc0xvZ2dlZEluOiExLHVzZXJOYW1lOiIiLHVzZXJMb25nTmFtZToiIn1dO2Nhc2UgNTpyZXR1cm4gej1QLnNlbnQoKSxbMyw4XTtjYXNlIDY6cmV0dXJuWzQsKDAsSi52ZXJpZnlTYXM5TG9naW4pKGhlKV07''@;'; put 'put ''Y2FzZSA3Ono9UC5zZW50KCksUC5sYWJlbD04O2Nhc2UgODpyZXR1cm4gTz16LmlzTG9nZ2VkSW4saGUuY2xvc2UoKSxPP3RoaXMuc2VydmVyVHlwZSE9PVcuU2VydmVyVHlwZS5TYXM5P1szLDEwXTpbNCx0aGlzLnBlcmZvcm1DQVNTZWN1cml0eUNoZWNrKCldOlszLDEzXTtjYXNlIDk6UC5z''@;'; put 'put ''ZW50KCksUC5sYWJlbD0xMDtjYXNlIDEwOnJldHVybls0LHRoaXMuZmV0Y2hVc2VyTmFtZSgpXTtjYXNlIDExOnJldHVybiBlZT1QLnNlbnQoKSxuZT1lZS51c2VyTmFtZSx4PWVlLnVzZXJMb25nTmFtZSxbNCx0aGlzLmxvZ2luQ2FsbGJhY2soKV07Y2FzZSAxMjpyZXR1cm4gUC5zZW50KCks''@;'; put 'put ''WzIse2lzTG9nZ2VkSW46ITAsdXNlck5hbWU6bmUsdXNlckxvbmdOYW1lOnh9XTtjYXNlIDEzOnJldHVyblsyLHtpc0xvZ2dlZEluOiExLHVzZXJOYW1lOiIiLHVzZXJMb25nTmFtZToiIn1dfX0pfSl9LHZlLnByb3RvdHlwZS5sb2dJbj1mdW5jdGlvbihBZSxrZSl7cmV0dXJuIGFlKHRoaXMs''@;'; put 'put ''dm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBTZSxJZSxNZSxoZSxPLHosZWUsbmU7cmV0dXJuIFkodGhpcyxmdW5jdGlvbih4KXtzd2l0Y2goeC5sYWJlbCl7Y2FzZSAwOnJldHVybiBTZT17X3NlcnZpY2U6ImRlZmF1bHQiLHVzZXJuYW1lOkFlLHBhc3N3b3JkOmtlfSx0aGlzLnVzZXJO''@;'; put 'put ''YW1lPSIiLHRoaXMudXNlckxvbmdOYW1lPSIiLFs0LHRoaXMuY2hlY2tTZXNzaW9uKCldO2Nhc2UgMTpyZXR1cm4gSWU9eC5zZW50KCksTWU9SWUubG9naW5Gb3JtLGhlPUllLnVzZXJMb25nTmFtZSxJZS5pc0xvZ2dlZEluP1s0LHRoaXMubG9naW5DYWxsYmFjaygpXTpbMywzXTtjYXNlIDI6''@;'; put 'put ''cmV0dXJuIHguc2VudCgpLHRoaXMudXNlck5hbWU9U2UudXNlcm5hbWUsdGhpcy51c2VyTG9uZ05hbWU9aGUsWzIse2lzTG9nZ2VkSW46ITAsdXNlck5hbWU6dGhpcy51c2VyTmFtZSx1c2VyTG9uZ05hbWU6dGhpcy51c2VyTG9uZ05hbWV9XTtjYXNlIDM6cmV0dXJuWzQsdGhpcy5zZW5kTG9n''@;'; put 'put ''aW5SZXF1ZXN0KE1lLFNlKV07Y2FzZSA0OnJldHVybiBPPXguc2VudCgpLCh6PWRlKHRoaXMuc2VydmVyVHlwZSxPKSk/WzMsOV06Y2UoTyk/WzQsdGhpcy5nZXRMb2dpbkZvcm0oTyldOlszLDddO2Nhc2UgNTpyZXR1cm4gZWU9eC5zZW50KCksWzQsdGhpcy5zZW5kTG9naW5SZXF1ZXN0KGVl''@;'; put 'put ''LFNlKV07Y2FzZSA2Ok89eC5zZW50KCkseC5sYWJlbD03O2Nhc2UgNzpyZXR1cm5bNCx0aGlzLmNoZWNrU2Vzc2lvbigpXTtjYXNlIDg6bmU9eC5zZW50KCksej1uZS5pc0xvZ2dlZEluLHRoaXMudXNlckxvbmdOYW1lPW5lLnVzZXJMb25nTmFtZSx4LmxhYmVsPTk7Y2FzZSA5OnJldHVybiB6''@;'; put 'put ''P3RoaXMuc2VydmVyVHlwZSE9PVcuU2VydmVyVHlwZS5TYXM5P1szLDExXTpbNCx0aGlzLnBlcmZvcm1DQVNTZWN1cml0eUNoZWNrKCldOlszLDEyXTtjYXNlIDEwOnguc2VudCgpLHgubGFiZWw9MTE7Y2FzZSAxMTp0aGlzLmxvZ2luQ2FsbGJhY2soKSx0aGlzLnVzZXJOYW1lPVNlLnVzZXJu''@;'; put 'put ''YW1lLHgubGFiZWw9MTI7Y2FzZSAxMjpyZXR1cm5bMix7aXNMb2dnZWRJbjp6LHVzZXJOYW1lOnRoaXMudXNlck5hbWUsdXNlckxvbmdOYW1lOnRoaXMudXNlckxvbmdOYW1lfV19fSl9KX0sdmUucHJvdG90eXBlLnBlcmZvcm1DQVNTZWN1cml0eUNoZWNrPWZ1bmN0aW9uKCl7cmV0dXJuIGFl''@;'; put 'put ''KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBBZTtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKGtlKXtzd2l0Y2goa2UubGFiZWwpe2Nhc2UgMDpyZXR1cm4gQWU9IiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvU0FTU3RvcmVkUHJvY2Vzcy9qX3NwcmluZ19jYXNfc2VjdXJpdHlf''@;'; put 'put ''Y2hlY2siKSxbNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIvU0FTTG9nb24vbG9naW4/c2VydmljZT0iLmNvbmNhdChBZSksdm9pZCAwKV07Y2FzZSAxOnJldHVybiBrZS5zZW50KCksWzJdfX0pfSl9LHZlLnByb3RvdHlwZS5zZW5kTG9naW5SZXF1ZXN0PWZ1bmN0aW9uKEFlLGtlKXtyZXR1''@;'; put 'put ''cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFRlLE1lO3JldHVybiBZKHRoaXMsZnVuY3Rpb24oaGUpe3N3aXRjaChoZS5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLnNlcnZlclR5cGUhPT1XLlNlcnZlclR5cGUuU2FzanM/WzMsMl06WzQsdGhpcy5yZXF1ZXN0Q2xp''@;'; put 'put ''ZW50LnBvc3QodGhpcy5sb2dpblVybCx7dXNlcm5hbWU6a2UudXNlcm5hbWUscGFzc3dvcmQ6a2UucGFzc3dvcmR9LHZvaWQgMCldO2Nhc2UgMTpjYXNlIDM6cmV0dXJuWzIsaGUuc2VudCgpLnJlc3VsdF07Y2FzZSAyOmZvcihUZSBpbiBBZSlrZVtUZV09QWVbVGVdO3JldHVybiBNZT0oMCxO''@;'; put 'put ''LnNlcmlhbGl6ZSkoa2UpLFs0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KHRoaXMubG9naW5VcmwsTWUsdm9pZCAwLCJ0ZXh0L3BsYWluIix7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsQWNjZXB0OiIqLyoifSldfX0pfSl9LHZlLnByb3RvdHlw''@;'; put 'put ''ZS5jaGVja1Nlc3Npb249ZnVuY3Rpb24oKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEFlLGtlLFNlLEllLFRlO3JldHVybiBZKHRoaXMsZnVuY3Rpb24oTWUpe3N3aXRjaChNZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuZmV0Y2hVc2VyTmFtZSgp''@;'; put 'put ''XTtjYXNlIDE6cmV0dXJuIEFlPU1lLnNlbnQoKSxTZT1BZS51c2VyTmFtZSxJZT1BZS51c2VyTG9uZ05hbWUsVGU9bnVsbCwoa2U9QWUuaXNMb2dnZWRJbik/WzMsNF06WzQsdGhpcy5sb2dPdXQoKV07Y2FzZSAyOnJldHVybiBNZS5zZW50KCksWzQsdGhpcy5nZXROZXdMb2dpbkZvcm0oKV07''@;'; put 'put ''Y2FzZSAzOlRlPU1lLnNlbnQoKSxNZS5sYWJlbD00O2Nhc2UgNDpyZXR1cm5bMixQcm9taXNlLnJlc29sdmUoe2lzTG9nZ2VkSW46a2UsdXNlck5hbWU6U2UsdXNlckxvbmdOYW1lOkllLGxvZ2luRm9ybTpUZX0pXX19KX0pfSx2ZS5wcm90b3R5cGUuZ2V0TmV3TG9naW5Gb3JtPWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIGFlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBBZTtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKGtlKXtzd2l0Y2goa2UubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5zZXJ2ZXJUeXBlPT09Vy5TZXJ2ZXJUeXBlLlNhc2pzP1syLHRoaXMucmVxdWVzdENsaWVu''@;'; put 'put ''dC5nZXQoIi8iLHZvaWQgMCkudGhlbihmdW5jdGlvbihTZSl7dmFyIEllLE1lPW51bGw9PT0oSWU9LzxzY3JpcHQ+ZG9jdW1lbnQuY29va2llID0gJyhYU1JGLVRPS0VOPS4qOyBNYXgtQWdlPTg2NDAwOyBTYW1lU2l0ZT1TdHJpY3Q7IFBhdGg9XC87KSc8XC9zY3JpcHQ+Ly5leGVjKFNlLnJl''@;'; put 'put ''c3VsdCkpfHx2b2lkIDA9PT1JZT92b2lkIDA6SWVbMV07TWUmJihkb2N1bWVudC5jb29raWU9TWUpfSldOls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQodGhpcy5sb2dpblVybC5yZXBsYWNlKCIuZG8iLCIiKSx2b2lkIDAsInRleHQvcGxhaW4iKV07Y2FzZSAxOnJldHVybiBBZT1rZS5zZW50''@;'; put 'put ''KCkucmVzdWx0LFs0LHRoaXMuZ2V0TG9naW5Gb3JtKEFlKV07Y2FzZSAyOnJldHVyblsyLGtlLnNlbnQoKV19fSl9KX0sdmUucHJvdG90eXBlLmZldGNoVXNlck5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEFlLGtlLFNlO3JldHVy''@;'; put 'put ''biBZKHRoaXMsZnVuY3Rpb24oSWUpe3N3aXRjaChJZS5sYWJlbCl7Y2FzZSAwOnJldHVybiBBZT0iIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsdGhpcy5zZXJ2ZXJUeXBlPT09Vy5TZXJ2ZXJUeXBlLlNhc1ZpeWE/Ii9pZGVudGl0aWVzL3VzZXJzL0BjdXJyZW50VXNlciI6dGhpcy5zZXJ2ZXJU''@;'; put 'put ''eXBlPT09Vy5TZXJ2ZXJUeXBlLlNhczk/Ii9TQVNTdG9yZWRQcm9jZXNzIjoiL1NBU2pzQXBpL3Nlc3Npb24iKSxbNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KEFlLHZvaWQgMCwidGV4dC9wbGFpbiIpLmNhdGNoKGZ1bmN0aW9uKFRlKXtyZXR1cm57cmVzdWx0OiJhdXRoRXJyIn19KV07Y2Fz''@;'; put 'put ''ZSAxOnJldHVybiBrZT1JZS5zZW50KCkucmVzdWx0LChTZT0iYXV0aEVyciIhPT1rZSk/WzMsM106WzQsdGhpcy5sb2dPdXQoKV07Y2FzZSAyOnJldHVybiBJZS5zZW50KCksWzIse2lzTG9nZ2VkSW46U2UsdXNlck5hbWU6IiIsdXNlckxvbmdOYW1lOiIifV07Y2FzZSAzOnJldHVyblsyLHtp''@;'; put 'put ''c0xvZ2dlZEluOlNlLHVzZXJOYW1lOnRoaXMuZXh0cmFjdFVzZXJOYW1lKGtlKSx1c2VyTG9uZ05hbWU6dGhpcy5leHRyYWN0VXNlckxvbmdOYW1lKGtlKX1dfX0pfSl9LHZlLnByb3RvdHlwZS5nZXRMb2dpbkZvcm09ZnVuY3Rpb24oQWUpe3ZhciBrZT0vPGZvcm0uK2FjdGlvbj0iKC4qTG9n''@;'; put 'put ''b25bXiJdKikuKj4vLmV4ZWMoQWUpLFNlPXt9O2lmKGtlJiZrZS5sZW5ndGgpe3RoaXMuc2V0TG9naW5Vcmwoa2UpO3ZhciBJZT1BZS5tYXRjaCgvPGlucHV0LioiaGlkZGVuIltePl0qPi9nKTtJZSYmSWUuZm9yRWFjaChmdW5jdGlvbihUZSl7dmFyIE1lPVRlLm1hdGNoKC9uYW1lPSIoW14i''@;'; put 'put ''XSopIlxzdmFsdWU9IihbXiJdKikvKTtNZSYmTWUubGVuZ3RoJiYoU2VbTWVbMV1dPU1lWzJdKX0pfXJldHVybiBPYmplY3Qua2V5cyhTZSkubGVuZ3RoP1NlOm51bGx9LHZlLnByb3RvdHlwZS5sb2dPdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gYWUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihBZSl7cmV0dXJuIHRoaXMucmVxdWVzdENsaWVudC5jbGVhckNzcmZUb2tlbnMoKSxbMix0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KHRoaXMubG9nb3V0VXJsLHZvaWQgMCkudGhlbihmdW5jdGlvbigpe3JldHVybiEwfSldfSl9KX0sdmV9KCk7US5B''@;'; put 'put ''dXRoTWFuYWdlcj1vZTt2YXIgY2U9ZnVuY3Rpb24odmUpe3JldHVybi9BbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0aGUgc3lzdGVtIHdhcyB2ZXJpZnlpbmcgeW91ciBjcmVkZW50aWFscy4gUGxlYXNlIGVudGVyIHlvdXIgY3JlZGVudGlhbHMgYWdhaW4uL2dtLnRlc3QodmUpfSxkZT1mdW5j''@;'; put 'put ''dGlvbih2ZSxBZSl7cmV0dXJuIHZlPT09Vy5TZXJ2ZXJUeXBlLlNhc2pzP251bGw9PUFlP3ZvaWQgMDpBZS5sb2dnZWRpbjovWW91IGhhdmUgc2lnbmVkIGluL2dtLnRlc3QoQWUpfX0sNTc6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8''@;'; put 'put ''fGZ1bmN0aW9uKFcsTix0ZSxLKXtyZXR1cm4gbmV3KHRlfHwodGU9UHJvbWlzZSkpKGZ1bmN0aW9uKEosc2Upe2Z1bmN0aW9uIG9lKHZlKXt0cnl7ZGUoSy5uZXh0KHZlKSl9Y2F0Y2goQWUpe3NlKEFlKX19ZnVuY3Rpb24gY2UodmUpe3RyeXtkZShLLnRocm93KHZlKSl9Y2F0Y2goQWUpe3Nl''@;'; put 'put ''KEFlKX19ZnVuY3Rpb24gZGUodmUpe3ZhciBBZTt2ZS5kb25lP0oodmUudmFsdWUpOihBZT12ZS52YWx1ZSxBZSBpbnN0YW5jZW9mIHRlP0FlOm5ldyB0ZShmdW5jdGlvbihrZSl7a2UoQWUpfSkpLnRoZW4ob2UsY2UpfWRlKChLPUsuYXBwbHkoVyxOfHxbXSkpLm5leHQoKSl9KX0sYWU9dGhp''@;'; put 'put ''cyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oVyxOKXt2YXIgdGUsSyxKLHNlLG9lPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJkpbMF0pdGhyb3cgSlsxXTtyZXR1cm4gSlsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBzZT17bmV4dDpjZSgwKSx0aHJvdzpjZSgxKSxyZXR1''@;'; put 'put ''cm46Y2UoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihzZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxzZTtmdW5jdGlvbiBjZShkZSl7cmV0dXJuIGZ1bmN0aW9uKHZlKXtyZXR1cm4gZnVuY3Rpb24oQWUpe2lmKHRlKXRocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO29lOyl0cnl7aWYodGU9MSxLJiYoSj0yJkFlWzBdP0sucmV0dXJuOkFlWzBdP0sudGhyb3d8fCgoSj1LLnJldHVybikmJkouY2FsbChLKSwwKTpLLm5leHQpJiYhKEo9Si5jYWxsKEssQWVbMV0pKS5kb25lKXJldHVy''@;'; put 'put ''biBKO3N3aXRjaChLPTAsSiYmKEFlPVsyJkFlWzBdLEoudmFsdWVdKSxBZVswXSl7Y2FzZSAwOmNhc2UgMTpKPUFlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gb2UubGFiZWwrKyx7dmFsdWU6QWVbMV0sZG9uZTohMX07Y2FzZSA1Om9lLmxhYmVsKyssSz1BZVsxXSxBZT1bMF07Y29udGludWU7Y2Fz''@;'; put 'put ''ZSA3OkFlPW9lLm9wcy5wb3AoKSxvZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoSj0oSj1vZS50cnlzKS5sZW5ndGg+MCYmSltKLmxlbmd0aC0xXSl8fDYhPT1BZVswXSYmMiE9PUFlWzBdKSl7b2U9MDtjb250aW51ZX1pZigzPT09QWVbMF0mJighSnx8QWVbMV0+SlswXSYm''@;'; put 'put ''QWVbMV08SlszXSkpe29lLmxhYmVsPUFlWzFdO2JyZWFrfWlmKDY9PT1BZVswXSYmb2UubGFiZWw8SlsxXSl7b2UubGFiZWw9SlsxXSxKPUFlO2JyZWFrfWlmKEomJm9lLmxhYmVsPEpbMl0pe29lLmxhYmVsPUpbMl0sb2Uub3BzLnB1c2goQWUpO2JyZWFrfUpbMl0mJm9lLm9wcy5wb3AoKSxv''@;'; put 'put ''ZS50cnlzLnBvcCgpO2NvbnRpbnVlfUFlPU4uY2FsbChXLG9lKX1jYXRjaChrZSl7QWU9WzYsa2VdLEs9MH1maW5hbGx5e3RlPUo9MH1pZig1JkFlWzBdKXRocm93IEFlWzFdO3JldHVybnt2YWx1ZTpBZVswXT9BZVsxXTp2b2lkIDAsZG9uZTohMH19KFtkZSx2ZV0pfX19O09iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmdldEFjY2Vzc1Rva2VuRm9yU2FzanM9dm9pZCAwO3ZhciBZPWooOTc3OCk7US5nZXRBY2Nlc3NUb2tlbkZvclNhc2pzPWZ1bmN0aW9uKFcsTix0ZSl7cmV0dXJuIHJlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBhZSh0aGlzLGZ1bmN0aW9uKEope3N3aXRjaChKLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsVy5wb3N0KCIvU0FTanNBcGkvYXV0aC90b2tlbiIse2NsaWVudElkOk4sY29kZTp0ZX0sdm9pZCAwKS50aGVuKGZ1bmN0aW9uKHNlKXt2YXIgb2U9c2UucmVzdWx0O3JldHVybnthY2Nl''@;'; put 'put ''c3NfdG9rZW46b2UuYWNjZXNzVG9rZW4scmVmcmVzaF90b2tlbjpvZS5yZWZyZXNoVG9rZW59fSkuY2F0Y2goZnVuY3Rpb24oc2Upe3Rocm93KDAsWS5wcmVmaXhNZXNzYWdlKShzZSwiRXJyb3Igd2hpbGUgZ2V0dGluZyBhY2Nlc3MgdG9rZW4uICIpfSldO2Nhc2UgMTpyZXR1cm5bMixKLnNl''@;'; put 'put ''bnQoKV19fSl9KX19LDM1Njk6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig4NzY0KS5CdWZmZXIsYWU9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHRlLEssSixzZSl7cmV0dXJuIG5ldyhKfHwoSj1Qcm9taXNlKSkoZnVuY3Rpb24ob2UsY2Upe2Z1bmN0aW9u''@;'; put 'put ''IGRlKGtlKXt0cnl7QWUoc2UubmV4dChrZSkpfWNhdGNoKFNlKXtjZShTZSl9fWZ1bmN0aW9uIHZlKGtlKXt0cnl7QWUoc2UudGhyb3coa2UpKX1jYXRjaChTZSl7Y2UoU2UpfX1mdW5jdGlvbiBBZShrZSl7dmFyIFNlO2tlLmRvbmU/b2Uoa2UudmFsdWUpOihTZT1rZS52YWx1ZSxTZSBpbnN0''@;'; put 'put ''YW5jZW9mIEo/U2U6bmV3IEooZnVuY3Rpb24oSWUpe0llKFNlKX0pKS50aGVuKGRlLHZlKX1BZSgoc2U9c2UuYXBwbHkodGUsS3x8W10pKS5uZXh0KCkpfSl9LFk9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24odGUsSyl7dmFyIEosc2Usb2UsY2UsZGU9e2xhYmVsOjAsc2VudDpm''@;'; put 'put ''dW5jdGlvbigpe2lmKDEmb2VbMF0pdGhyb3cgb2VbMV07cmV0dXJuIG9lWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGNlPXtuZXh0OnZlKDApLHRocm93OnZlKDEpLHJldHVybjp2ZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGNlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gdGhpc30pLGNlO2Z1bmN0aW9uIHZlKEFlKXtyZXR1cm4gZnVuY3Rpb24oa2Upe3JldHVybiBmdW5jdGlvbihTZSl7aWYoSil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtkZTspdHJ5e2lmKEo9MSxzZSYmKG9l''@;'; put 'put ''PTImU2VbMF0/c2UucmV0dXJuOlNlWzBdP3NlLnRocm93fHwoKG9lPXNlLnJldHVybikmJm9lLmNhbGwoc2UpLDApOnNlLm5leHQpJiYhKG9lPW9lLmNhbGwoc2UsU2VbMV0pKS5kb25lKXJldHVybiBvZTtzd2l0Y2goc2U9MCxvZSYmKFNlPVsyJlNlWzBdLG9lLnZhbHVlXSksU2VbMF0pe2Nh''@;'; put 'put ''c2UgMDpjYXNlIDE6b2U9U2U7YnJlYWs7Y2FzZSA0OnJldHVybiBkZS5sYWJlbCsrLHt2YWx1ZTpTZVsxXSxkb25lOiExfTtjYXNlIDU6ZGUubGFiZWwrKyxzZT1TZVsxXSxTZT1bMF07Y29udGludWU7Y2FzZSA3OlNlPWRlLm9wcy5wb3AoKSxkZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1''@;'; put 'put ''bHQ6aWYoISgob2U9KG9lPWRlLnRyeXMpLmxlbmd0aD4wJiZvZVtvZS5sZW5ndGgtMV0pfHw2IT09U2VbMF0mJjIhPT1TZVswXSkpe2RlPTA7Y29udGludWV9aWYoMz09PVNlWzBdJiYoIW9lfHxTZVsxXT5vZVswXSYmU2VbMV08b2VbM10pKXtkZS5sYWJlbD1TZVsxXTticmVha31pZig2PT09''@;'; put 'put ''U2VbMF0mJmRlLmxhYmVsPG9lWzFdKXtkZS5sYWJlbD1vZVsxXSxvZT1TZTticmVha31pZihvZSYmZGUubGFiZWw8b2VbMl0pe2RlLmxhYmVsPW9lWzJdLGRlLm9wcy5wdXNoKFNlKTticmVha31vZVsyXSYmZGUub3BzLnBvcCgpLGRlLnRyeXMucG9wKCk7Y29udGludWV9U2U9Sy5jYWxsKHRl''@;'; put 'put ''LGRlKX1jYXRjaChJZSl7U2U9WzYsSWVdLHNlPTB9ZmluYWxseXtKPW9lPTB9aWYoNSZTZVswXSl0aHJvdyBTZVsxXTtyZXR1cm57dmFsdWU6U2VbMF0/U2VbMV06dm9pZCAwLGRvbmU6ITB9fShbQWUsa2VdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVl''@;'; put 'put ''OiEwfSksUS5nZXRBY2Nlc3NUb2tlbkZvclZpeWE9dm9pZCAwO3ZhciBXPWooOTc3OCksTj1qKDEzOTUpO1EuZ2V0QWNjZXNzVG9rZW5Gb3JWaXlhPWZ1bmN0aW9uKHRlLEssSixzZSl7cmV0dXJuIGFlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBvZSxjZSxkZTtyZXR1cm4g''@;'; put 'put ''WSh0aGlzLGZ1bmN0aW9uKHZlKXtzd2l0Y2godmUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gb2U9dm9pZCAwPT09cmU/YnRvYShLKyI6IitKKTpyZS5mcm9tKEsrIjoiK0opLnRvU3RyaW5nKCJiYXNlNjQiKSxjZT17QXV0aG9yaXphdGlvbjoiQmFzaWMgIitvZSxBY2NlcHQ6ImFwcGxpY2F0aW9u''@;'; put 'put ''L2pzb24ifSxkZT1uZXcgVVJMU2VhcmNoUGFyYW1zKHtncmFudF90eXBlOiJhdXRob3JpemF0aW9uX2NvZGUiLGNvZGU6c2V9KSxbNCx0ZS5wb3N0KCIvU0FTTG9nb24vb2F1dGgvdG9rZW4iLGRlLHZvaWQgMCwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIixjZSkudGhlbihm''@;'; put 'put ''dW5jdGlvbihBZSl7cmV0dXJuIEFlLnJlc3VsdH0pLmNhdGNoKGZ1bmN0aW9uKEFlKXt0aHJvdyBBZSBpbnN0YW5jZW9mIE4uQ2VydGlmaWNhdGVFcnJvcj9BZTooMCxXLnByZWZpeE1lc3NhZ2UpKEFlLCJFcnJvciB3aGlsZSBnZXR0aW5nIGFjY2VzcyB0b2tlbi4gIil9KV07Y2FzZSAxOnJl''@;'; put 'put ''dHVyblsyLHZlLnNlbnQoKV19fSl9KX19LDcwNDpmdW5jdGlvbihVLFEsail7InVzZSBzdHJpY3QiO3ZhciByZT1qKDQxNTUpLGFlPWooNTEwOCksWT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oc2Usb2UsY2UsZGUpe3JldHVybiBuZXcoY2V8fChjZT1Qcm9taXNlKSkoZnVuY3Rp''@;'; put 'put ''b24odmUsQWUpe2Z1bmN0aW9uIGtlKFRlKXt0cnl7SWUoZGUubmV4dChUZSkpfWNhdGNoKE1lKXtBZShNZSl9fWZ1bmN0aW9uIFNlKFRlKXt0cnl7SWUoZGUudGhyb3coVGUpKX1jYXRjaChNZSl7QWUoTWUpfX1mdW5jdGlvbiBJZShUZSl7dmFyIE1lO1RlLmRvbmU/dmUoVGUudmFsdWUpOihN''@;'; put 'put ''ZT1UZS52YWx1ZSxNZSBpbnN0YW5jZW9mIGNlP01lOm5ldyBjZShmdW5jdGlvbihoZSl7aGUoTWUpfSkpLnRoZW4oa2UsU2UpfUllKChkZT1kZS5hcHBseShzZSxvZXx8W10pKS5uZXh0KCkpfSl9LFc9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oc2Usb2Upe3ZhciBjZSxkZSx2''@;'; put 'put ''ZSxBZSxrZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZ2ZVswXSl0aHJvdyB2ZVsxXTtyZXR1cm4gdmVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gQWU9e25leHQ6U2UoMCksdGhyb3c6U2UoMSkscmV0dXJuOlNlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoQWVb''@;'; put 'put ''U3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksQWU7ZnVuY3Rpb24gU2UoSWUpe3JldHVybiBmdW5jdGlvbihUZSl7cmV0dXJuIGZ1bmN0aW9uKE1lKXtpZihjZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9y''@;'; put 'put ''KDtrZTspdHJ5e2lmKGNlPTEsZGUmJih2ZT0yJk1lWzBdP2RlLnJldHVybjpNZVswXT9kZS50aHJvd3x8KCh2ZT1kZS5yZXR1cm4pJiZ2ZS5jYWxsKGRlKSwwKTpkZS5uZXh0KSYmISh2ZT12ZS5jYWxsKGRlLE1lWzFdKSkuZG9uZSlyZXR1cm4gdmU7c3dpdGNoKGRlPTAsdmUmJihNZT1bMiZN''@;'; put 'put ''ZVswXSx2ZS52YWx1ZV0pLE1lWzBdKXtjYXNlIDA6Y2FzZSAxOnZlPU1lO2JyZWFrO2Nhc2UgNDpyZXR1cm4ga2UubGFiZWwrKyx7dmFsdWU6TWVbMV0sZG9uZTohMX07Y2FzZSA1OmtlLmxhYmVsKyssZGU9TWVbMV0sTWU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpNZT1rZS5vcHMucG9wKCksa2Uu''@;'; put 'put ''dHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKHZlPSh2ZT1rZS50cnlzKS5sZW5ndGg+MCYmdmVbdmUubGVuZ3RoLTFdKXx8NiE9PU1lWzBdJiYyIT09TWVbMF0pKXtrZT0wO2NvbnRpbnVlfWlmKDM9PT1NZVswXSYmKCF2ZXx8TWVbMV0+dmVbMF0mJk1lWzFdPHZlWzNdKSl7a2Uu''@;'; put 'put ''bGFiZWw9TWVbMV07YnJlYWt9aWYoNj09PU1lWzBdJiZrZS5sYWJlbDx2ZVsxXSl7a2UubGFiZWw9dmVbMV0sdmU9TWU7YnJlYWt9aWYodmUmJmtlLmxhYmVsPHZlWzJdKXtrZS5sYWJlbD12ZVsyXSxrZS5vcHMucHVzaChNZSk7YnJlYWt9dmVbMl0mJmtlLm9wcy5wb3AoKSxrZS50cnlzLnBv''@;'; put 'put ''cCgpO2NvbnRpbnVlfU1lPW9lLmNhbGwoc2Usa2UpfWNhdGNoKGhlKXtNZT1bNixoZV0sZGU9MH1maW5hbGx5e2NlPXZlPTB9aWYoNSZNZVswXSl0aHJvdyBNZVsxXTtyZXR1cm57dmFsdWU6TWVbMF0/TWVbMV06dm9pZCAwLGRvbmU6ITB9fShbSWUsVGVdKX19fTtPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5nZXRUb2tlbnM9dm9pZCAwO3ZhciBOPWooNjc5OSksdGU9aigzOTAwKSxLPWooMzY2KSxKPWooMjQ5KTtRLmdldFRva2Vucz1mdW5jdGlvbihzZSxvZSxjZSl7cmV0dXJuIHZvaWQgMD09PWNlJiYoY2U9dGUuU2VydmVyVHlwZS5T''@;'; put 'put ''YXNWaXlhKSxZKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBkZSx2ZSxBZSxrZSxTZSxUZSxNZTtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKGhlKXtzd2l0Y2goaGUubGFiZWwpe2Nhc2UgMDppZihkZT1yZS5sb2dnZXJ8fGFlLEFlPW9lLnJlZnJlc2hfdG9rZW4sa2U9b2UuY2xp''@;'; put 'put ''ZW50LFNlPW9lLnNlY3JldCwhKDAsTi5pc0FjY2Vzc1Rva2VuRXhwaXJpbmcpKHZlPW9lLmFjY2Vzc190b2tlbikmJiEoMCxOLmlzUmVmcmVzaFRva2VuRXhwaXJpbmcpKEFlKSlyZXR1cm5bMyw1XTtpZigoMCxOLmhhc1Rva2VuRXhwaXJlZCkoQWUpKXRocm93IGRlLmVycm9yKCJVbmFibGUg''@;'; put 'put ''dG8gb2J0YWluIG5ldyBhY2Nlc3MgdG9rZW4uIFlvdXIgcmVmcmVzaCB0b2tlbiBoYXMgZXhwaXJlZC4iKSxuZXcgRXJyb3IoIlVuYWJsZSB0byBvYnRhaW4gbmV3IGFjY2VzcyB0b2tlbi4gWW91ciByZWZyZXNoIHRva2VuIGhhcyBleHBpcmVkLiIpO3JldHVybiBkZS5pbmZvKCJSZWZyZXNo''@;'; put 'put ''aW5nIGFjY2VzcyBhbmQgcmVmcmVzaCB0b2tlbnMuIiksY2UhPT10ZS5TZXJ2ZXJUeXBlLlNhc1ZpeWE/WzMsMl06WzQsKDAsSy5yZWZyZXNoVG9rZW5zRm9yVml5YSkoc2Usa2UsU2UsQWUpXTtjYXNlIDE6cmV0dXJuIE1lPWhlLnNlbnQoKSxbMyw0XTtjYXNlIDI6cmV0dXJuWzQsKDAsSi5y''@;'; put 'put ''ZWZyZXNoVG9rZW5zRm9yU2FzanMpKHNlLEFlKV07Y2FzZSAzOk1lPWhlLnNlbnQoKSxoZS5sYWJlbD00O2Nhc2UgNDp2ZT0oVGU9TWUpLmFjY2Vzc190b2tlbixBZT1UZS5yZWZyZXNoX3Rva2VuLGhlLmxhYmVsPTU7Y2FzZSA1OnJldHVyblsyLHthY2Nlc3NfdG9rZW46dmUscmVmcmVzaF90''@;'; put 'put ''b2tlbjpBZSxjbGllbnQ6a2Usc2VjcmV0OlNlfV19fSl9KX19LDE1Mjc6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKFksVyxOLHRlKXt2b2lkIDA9PT10ZSYmKHRlPU4pO3ZhciBL''@;'; put 'put ''PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVyxOKTtLJiYhKCJnZXQiaW4gSz8hVy5fX2VzTW9kdWxlOksud3JpdGFibGV8fEsuY29uZmlndXJhYmxlKXx8KEs9e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFdbTl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KFksdGUsSyl9OmZ1bmN0aW9uKFksVyxOLHRlKXt2b2lkIDA9PT10ZSYmKHRlPU4pLFlbdGVdPVdbTl19KSxhZT10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oWSxXKXtmb3IodmFyIE4gaW4gWSkiZGVmYXVsdCI9PT1OfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5''@;'; put 'put ''LmNhbGwoVyxOKXx8cmUoVyxZLE4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksYWUoaigyODUxKSxRKSxhZShqKDkwOTcpLFEpLGFlKGooOTE2NiksUSl9LDkwOTc6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEs''@;'; put 'put ''Il9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuaXNBdXRob3JpemVGb3JtUmVxdWlyZWQ9dm9pZCAwLFEuaXNBdXRob3JpemVGb3JtUmVxdWlyZWQ9ZnVuY3Rpb24oail7cmV0dXJuLzxmb3JtLithY3Rpb249IiguKkxvZ29uXC9vYXV0aFwvYXV0aG9yaXplW14iXSopLio+L2dtLnRlc3Qoail9''@;'; put 'put ''fSw5MTY2OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmlzTG9nSW5SZXF1aXJlZD12b2lkIDAsUS5pc0xvZ0luUmVxdWlyZWQ9ZnVuY3Rpb24oail7cmV0dXJuLzxmb3JtLithY3Rpb249IiguKkxvZ29uW14i''@;'; put 'put ''XSopLio+L2dtLnRlc3Qoail9fSw1NDE4OmZ1bmN0aW9uKFUsUSxqKXsidXNlIHN0cmljdCI7dmFyIHJlPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihOLHRlLEssSil7cmV0dXJuIG5ldyhLfHwoSz1Qcm9taXNlKSkoZnVuY3Rpb24oc2Usb2Upe2Z1bmN0aW9uIGNlKEFlKXt0cnl7''@;'; put 'put ''dmUoSi5uZXh0KEFlKSl9Y2F0Y2goa2Upe29lKGtlKX19ZnVuY3Rpb24gZGUoQWUpe3RyeXt2ZShKLnRocm93KEFlKSl9Y2F0Y2goa2Upe29lKGtlKX19ZnVuY3Rpb24gdmUoQWUpe3ZhciBrZTtBZS5kb25lP3NlKEFlLnZhbHVlKTooa2U9QWUudmFsdWUsa2UgaW5zdGFuY2VvZiBLP2tlOm5l''@;'; put 'put ''dyBLKGZ1bmN0aW9uKFNlKXtTZShrZSl9KSkudGhlbihjZSxkZSl9dmUoKEo9Si5hcHBseShOLHRlfHxbXSkpLm5leHQoKSl9KX0sYWU9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oTix0ZSl7dmFyIEssSixzZSxvZSxjZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZz''@;'; put 'put ''ZVswXSl0aHJvdyBzZVsxXTtyZXR1cm4gc2VbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gb2U9e25leHQ6ZGUoMCksdGhyb3c6ZGUoMSkscmV0dXJuOmRlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYob2VbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlz''@;'; put 'put ''fSksb2U7ZnVuY3Rpb24gZGUodmUpe3JldHVybiBmdW5jdGlvbihBZSl7cmV0dXJuIGZ1bmN0aW9uKGtlKXtpZihLKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2NlOyl0cnl7aWYoSz0xLEomJihzZT0yJmtlWzBdP0oucmV0dXJu''@;'; put 'put ''OmtlWzBdP0oudGhyb3d8fCgoc2U9Si5yZXR1cm4pJiZzZS5jYWxsKEopLDApOkoubmV4dCkmJiEoc2U9c2UuY2FsbChKLGtlWzFdKSkuZG9uZSlyZXR1cm4gc2U7c3dpdGNoKEo9MCxzZSYmKGtlPVsyJmtlWzBdLHNlLnZhbHVlXSksa2VbMF0pe2Nhc2UgMDpjYXNlIDE6c2U9a2U7YnJlYWs7''@;'; put 'put ''Y2FzZSA0OnJldHVybiBjZS5sYWJlbCsrLHt2YWx1ZTprZVsxXSxkb25lOiExfTtjYXNlIDU6Y2UubGFiZWwrKyxKPWtlWzFdLGtlPVswXTtjb250aW51ZTtjYXNlIDc6a2U9Y2Uub3BzLnBvcCgpLGNlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChzZT0oc2U9Y2UudHJ5cyku''@;'; put 'put ''bGVuZ3RoPjAmJnNlW3NlLmxlbmd0aC0xXSl8fDYhPT1rZVswXSYmMiE9PWtlWzBdKSl7Y2U9MDtjb250aW51ZX1pZigzPT09a2VbMF0mJighc2V8fGtlWzFdPnNlWzBdJiZrZVsxXTxzZVszXSkpe2NlLmxhYmVsPWtlWzFdO2JyZWFrfWlmKDY9PT1rZVswXSYmY2UubGFiZWw8c2VbMV0pe2Nl''@;'; put 'put ''LmxhYmVsPXNlWzFdLHNlPWtlO2JyZWFrfWlmKHNlJiZjZS5sYWJlbDxzZVsyXSl7Y2UubGFiZWw9c2VbMl0sY2Uub3BzLnB1c2goa2UpO2JyZWFrfXNlWzJdJiZjZS5vcHMucG9wKCksY2UudHJ5cy5wb3AoKTtjb250aW51ZX1rZT10ZS5jYWxsKE4sY2UpfWNhdGNoKFNlKXtrZT1bNixTZV0s''@;'; put 'put ''Sj0wfWZpbmFsbHl7Sz1zZT0wfWlmKDUma2VbMF0pdGhyb3cga2VbMV07cmV0dXJue3ZhbHVlOmtlWzBdP2tlWzFdOnZvaWQgMCxkb25lOiEwfX0oW3ZlLEFlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEub3BlbldlYlBhZ2U9dm9pZCAw''@;'; put 'put ''O3ZhciBZPWooMTIxMCksVz17d2lkdGg6NTAwLGhlaWdodDo2MDB9O1Eub3BlbldlYlBhZ2U9ZnVuY3Rpb24oTix0ZSxLLEope3JldHVybiB2b2lkIDA9PT10ZSYmKHRlPSIiKSx2b2lkIDA9PT1LJiYoSz1XKSxyZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgc2Usb2UsY2Us''@;'; put 'put ''ZGUsdmU7cmV0dXJuIGFlKHRoaXMsZnVuY3Rpb24oQWUpe3N3aXRjaChBZS5sYWJlbCl7Y2FzZSAwOnJldHVybiBzZT1LLndpZHRoLG9lPUsuaGVpZ2h0LGNlPXNjcmVlbi53aWR0aC8yLXNlLzIsZGU9c2NyZWVuLmhlaWdodC8yLW9lLzIsKHZlPXdpbmRvdy5vcGVuKE4sdGUsInRvb2xiYXI9''@;'; put 'put ''MCxsb2NhdGlvbj0wLG1lbnViYXI9MCx3aWR0aD0iLmNvbmNhdChzZSwiLGhlaWdodD0iKS5jb25jYXQob2UsIixsZWZ0PSIpLmNvbmNhdChjZSwiLHRvcD0iKS5jb25jYXQoZGUpKSk/WzMsMl06WzQsKG51bGwhPUo/SjpZLm9wZW5Mb2dpblByb21wdCkoKV07Y2FzZSAxOnJldHVyblsyLEFl''@;'; put 'put ''LnNlbnQoKT93aW5kb3cub3BlbihOLHRlLCJ0b29sYmFyPTAsbG9jYXRpb249MCxtZW51YmFyPTAsd2lkdGg9Ii5jb25jYXQoc2UsIixoZWlnaHQ9IikuY29uY2F0KG9lLCIsbGVmdD0iKS5jb25jYXQoY2UsIix0b3A9IikuY29uY2F0KGRlKSk6bnVsbF07Y2FzZSAyOnJldHVyblsyLHZlXX19''@;'; put 'put ''KX0pfX0sMjQ5OmZ1bmN0aW9uKFUsUSxqKXsidXNlIHN0cmljdCI7dmFyIHJlPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihXLE4sdGUsSyl7cmV0dXJuIG5ldyh0ZXx8KHRlPVByb21pc2UpKShmdW5jdGlvbihKLHNlKXtmdW5jdGlvbiBvZSh2ZSl7dHJ5e2RlKEsubmV4dCh2ZSkp''@;'; put 'put ''fWNhdGNoKEFlKXtzZShBZSl9fWZ1bmN0aW9uIGNlKHZlKXt0cnl7ZGUoSy50aHJvdyh2ZSkpfWNhdGNoKEFlKXtzZShBZSl9fWZ1bmN0aW9uIGRlKHZlKXt2YXIgQWU7dmUuZG9uZT9KKHZlLnZhbHVlKTooQWU9dmUudmFsdWUsQWUgaW5zdGFuY2VvZiB0ZT9BZTpuZXcgdGUoZnVuY3Rpb24o''@;'; put 'put ''a2Upe2tlKEFlKX0pKS50aGVuKG9lLGNlKX1kZSgoSz1LLmFwcGx5KFcsTnx8W10pKS5uZXh0KCkpfSl9LGFlPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKFcsTil7dmFyIHRlLEssSixzZSxvZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZKWzBdKXRocm93IEpbMV07''@;'; put 'put ''cmV0dXJuIEpbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gc2U9e25leHQ6Y2UoMCksdGhyb3c6Y2UoMSkscmV0dXJuOmNlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoc2VbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksc2U7ZnVuY3Rpb24gY2Uo''@;'; put 'put ''ZGUpe3JldHVybiBmdW5jdGlvbih2ZSl7cmV0dXJuIGZ1bmN0aW9uKEFlKXtpZih0ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtvZTspdHJ5e2lmKHRlPTEsSyYmKEo9MiZBZVswXT9LLnJldHVybjpBZVswXT9LLnRocm93fHwo''@;'; put 'put ''KEo9Sy5yZXR1cm4pJiZKLmNhbGwoSyksMCk6Sy5uZXh0KSYmIShKPUouY2FsbChLLEFlWzFdKSkuZG9uZSlyZXR1cm4gSjtzd2l0Y2goSz0wLEomJihBZT1bMiZBZVswXSxKLnZhbHVlXSksQWVbMF0pe2Nhc2UgMDpjYXNlIDE6Sj1BZTticmVhaztjYXNlIDQ6cmV0dXJuIG9lLmxhYmVsKyss''@;'; put 'put ''e3ZhbHVlOkFlWzFdLGRvbmU6ITF9O2Nhc2UgNTpvZS5sYWJlbCsrLEs9QWVbMV0sQWU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpBZT1vZS5vcHMucG9wKCksb2UudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKEo9KEo9b2UudHJ5cykubGVuZ3RoPjAmJkpbSi5sZW5ndGgtMV0pfHw2''@;'; put 'put ''IT09QWVbMF0mJjIhPT1BZVswXSkpe29lPTA7Y29udGludWV9aWYoMz09PUFlWzBdJiYoIUp8fEFlWzFdPkpbMF0mJkFlWzFdPEpbM10pKXtvZS5sYWJlbD1BZVsxXTticmVha31pZig2PT09QWVbMF0mJm9lLmxhYmVsPEpbMV0pe29lLmxhYmVsPUpbMV0sSj1BZTticmVha31pZihKJiZvZS5s''@;'; put 'put ''YWJlbDxKWzJdKXtvZS5sYWJlbD1KWzJdLG9lLm9wcy5wdXNoKEFlKTticmVha31KWzJdJiZvZS5vcHMucG9wKCksb2UudHJ5cy5wb3AoKTtjb250aW51ZX1BZT1OLmNhbGwoVyxvZSl9Y2F0Y2goa2Upe0FlPVs2LGtlXSxLPTB9ZmluYWxseXt0ZT1KPTB9aWYoNSZBZVswXSl0aHJvdyBBZVsx''@;'; put 'put ''XTtyZXR1cm57dmFsdWU6QWVbMF0/QWVbMV06dm9pZCAwLGRvbmU6ITB9fShbZGUsdmVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5yZWZyZXNoVG9rZW5zRm9yU2FzanM9dm9pZCAwO3ZhciBZPWooOTc3OCk7US5yZWZyZXNoVG9rZW5z''@;'; put 'put ''Rm9yU2FzanM9ZnVuY3Rpb24oVyxOKXtyZXR1cm4gcmUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIGFlKHRoaXMsZnVuY3Rpb24oSyl7c3dpdGNoKEsubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxXLnBvc3QoIi9TQVNqc0FwaS9hdXRoL3JlZnJlc2giLHZvaWQgMCx2b2lk''@;'; put 'put ''IDAsdm9pZCAwLHtBdXRob3JpemF0aW9uOiJCZWFyZXIgIitOfSkudGhlbihmdW5jdGlvbihKKXt2YXIgc2U9Si5yZXN1bHQ7cmV0dXJue2FjY2Vzc190b2tlbjpzZS5hY2Nlc3NUb2tlbixyZWZyZXNoX3Rva2VuOnNlLnJlZnJlc2hUb2tlbn19KS5jYXRjaChmdW5jdGlvbihKKXt0aHJvdygw''@;'; put 'put ''LFkucHJlZml4TWVzc2FnZSkoSiwiRXJyb3Igd2hpbGUgcmVmcmVzaGluZyB0b2tlbnM6ICIpfSldO2Nhc2UgMTpyZXR1cm5bMixLLnNlbnQoKV19fSl9KX19LDM2NjpmdW5jdGlvbihVLFEsail7InVzZSBzdHJpY3QiO3ZhciByZT1qKDg3NjQpLkJ1ZmZlcixhZT10aGlzJiZ0aGlzLl9fYXdh''@;'; put 'put ''aXRlcnx8ZnVuY3Rpb24odGUsSyxKLHNlKXtyZXR1cm4gbmV3KEp8fChKPVByb21pc2UpKShmdW5jdGlvbihvZSxjZSl7ZnVuY3Rpb24gZGUoa2Upe3RyeXtBZShzZS5uZXh0KGtlKSl9Y2F0Y2goU2Upe2NlKFNlKX19ZnVuY3Rpb24gdmUoa2Upe3RyeXtBZShzZS50aHJvdyhrZSkpfWNhdGNo''@;'; put 'put ''KFNlKXtjZShTZSl9fWZ1bmN0aW9uIEFlKGtlKXt2YXIgU2U7a2UuZG9uZT9vZShrZS52YWx1ZSk6KFNlPWtlLnZhbHVlLFNlIGluc3RhbmNlb2YgSj9TZTpuZXcgSihmdW5jdGlvbihJZSl7SWUoU2UpfSkpLnRoZW4oZGUsdmUpfUFlKChzZT1zZS5hcHBseSh0ZSxLfHxbXSkpLm5leHQoKSl9''@;'; put 'put ''KX0sWT10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbih0ZSxLKXt2YXIgSixzZSxvZSxjZSxkZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZvZVswXSl0aHJvdyBvZVsxXTtyZXR1cm4gb2VbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gY2U9e25leHQ6dmUoMCksdGhy''@;'; put 'put ''b3c6dmUoMSkscmV0dXJuOnZlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoY2VbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksY2U7ZnVuY3Rpb24gdmUoQWUpe3JldHVybiBmdW5jdGlvbihrZSl7cmV0dXJuIGZ1bmN0aW9uKFNlKXtpZihKKXRocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2RlOyl0cnl7aWYoSj0xLHNlJiYob2U9MiZTZVswXT9zZS5yZXR1cm46U2VbMF0/c2UudGhyb3d8fCgob2U9c2UucmV0dXJuKSYmb2UuY2FsbChzZSksMCk6c2UubmV4dCkmJiEob2U9b2UuY2Fs''@;'; put 'put ''bChzZSxTZVsxXSkpLmRvbmUpcmV0dXJuIG9lO3N3aXRjaChzZT0wLG9lJiYoU2U9WzImU2VbMF0sb2UudmFsdWVdKSxTZVswXSl7Y2FzZSAwOmNhc2UgMTpvZT1TZTticmVhaztjYXNlIDQ6cmV0dXJuIGRlLmxhYmVsKysse3ZhbHVlOlNlWzFdLGRvbmU6ITF9O2Nhc2UgNTpkZS5sYWJlbCsr''@;'; put 'put ''LHNlPVNlWzFdLFNlPVswXTtjb250aW51ZTtjYXNlIDc6U2U9ZGUub3BzLnBvcCgpLGRlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChvZT0ob2U9ZGUudHJ5cykubGVuZ3RoPjAmJm9lW29lLmxlbmd0aC0xXSl8fDYhPT1TZVswXSYmMiE9PVNlWzBdKSl7ZGU9MDtjb250aW51''@;'; put 'put ''ZX1pZigzPT09U2VbMF0mJighb2V8fFNlWzFdPm9lWzBdJiZTZVsxXTxvZVszXSkpe2RlLmxhYmVsPVNlWzFdO2JyZWFrfWlmKDY9PT1TZVswXSYmZGUubGFiZWw8b2VbMV0pe2RlLmxhYmVsPW9lWzFdLG9lPVNlO2JyZWFrfWlmKG9lJiZkZS5sYWJlbDxvZVsyXSl7ZGUubGFiZWw9b2VbMl0s''@;'; put 'put ''ZGUub3BzLnB1c2goU2UpO2JyZWFrfW9lWzJdJiZkZS5vcHMucG9wKCksZGUudHJ5cy5wb3AoKTtjb250aW51ZX1TZT1LLmNhbGwodGUsZGUpfWNhdGNoKEllKXtTZT1bNixJZV0sc2U9MH1maW5hbGx5e0o9b2U9MH1pZig1JlNlWzBdKXRocm93IFNlWzFdO3JldHVybnt2YWx1ZTpTZVswXT9T''@;'; put 'put ''ZVsxXTp2b2lkIDAsZG9uZTohMH19KFtBZSxrZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLnJlZnJlc2hUb2tlbnNGb3JWaXlhPXZvaWQgMDt2YXIgVz1qKDk3NzgpLE49aig2MjMwKTtRLnJlZnJlc2hUb2tlbnNGb3JWaXlhPWZ1bmN0''@;'; put 'put ''aW9uKHRlLEssSixzZSl7cmV0dXJuIGFlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBvZSxjZSxkZTtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKHZlKXtzd2l0Y2godmUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gb2U9dm9pZCAwPT09cmU/YnRvYShLKyI6IitKKTpyZS5mcm9tKEsr''@;'; put 'put ''IjoiK0opLnRvU3RyaW5nKCJiYXNlNjQiKSxjZT17QXV0aG9yaXphdGlvbjoiQmFzaWMgIitvZX0sKGRlPSJ1bmRlZmluZWQiPT10eXBlb2YgRm9ybURhdGE/bmV3IE46bmV3IEZvcm1EYXRhKS5hcHBlbmQoImdyYW50X3R5cGUiLCJyZWZyZXNoX3Rva2VuIiksZGUuYXBwZW5kKCJyZWZyZXNo''@;'; put 'put ''X3Rva2VuIixzZSksWzQsdGUucG9zdCgiL1NBU0xvZ29uL29hdXRoL3Rva2VuIixkZSx2b2lkIDAsIm11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSIrZGUuX2JvdW5kYXJ5LGNlKS50aGVuKGZ1bmN0aW9uKEFlKXtyZXR1cm4gQWUucmVzdWx0fSkuY2F0Y2goZnVuY3Rpb24oQWUpe3Ro''@;'; put 'put ''cm93KDAsVy5wcmVmaXhNZXNzYWdlKShBZSwiRXJyb3Igd2hpbGUgcmVmcmVzaGluZyB0b2tlbnM6ICIpfSldO2Nhc2UgMTpyZXR1cm5bMix2ZS5zZW50KCldfX0pfSl9fSw0NTgyOmZ1bmN0aW9uKFUsUSxqKXsidXNlIHN0cmljdCI7dmFyIHJlPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5j''@;'; put 'put ''dGlvbihXLE4sdGUsSyl7cmV0dXJuIG5ldyh0ZXx8KHRlPVByb21pc2UpKShmdW5jdGlvbihKLHNlKXtmdW5jdGlvbiBvZSh2ZSl7dHJ5e2RlKEsubmV4dCh2ZSkpfWNhdGNoKEFlKXtzZShBZSl9fWZ1bmN0aW9uIGNlKHZlKXt0cnl7ZGUoSy50aHJvdyh2ZSkpfWNhdGNoKEFlKXtzZShBZSl9''@;'; put 'put ''fWZ1bmN0aW9uIGRlKHZlKXt2YXIgQWU7dmUuZG9uZT9KKHZlLnZhbHVlKTooQWU9dmUudmFsdWUsQWUgaW5zdGFuY2VvZiB0ZT9BZTpuZXcgdGUoZnVuY3Rpb24oa2Upe2tlKEFlKX0pKS50aGVuKG9lLGNlKX1kZSgoSz1LLmFwcGx5KFcsTnx8W10pKS5uZXh0KCkpfSl9LGFlPXRoaXMmJnRo''@;'; put 'put ''aXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKFcsTil7dmFyIHRlLEssSixzZSxvZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZKWzBdKXRocm93IEpbMV07cmV0dXJuIEpbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gc2U9e25leHQ6Y2UoMCksdGhyb3c6Y2UoMSkscmV0dXJuOmNl''@;'; put 'put ''KDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoc2VbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksc2U7ZnVuY3Rpb24gY2UoZGUpe3JldHVybiBmdW5jdGlvbih2ZSl7cmV0dXJuIGZ1bmN0aW9uKEFlKXtpZih0ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJH''@;'; put 'put ''ZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtvZTspdHJ5e2lmKHRlPTEsSyYmKEo9MiZBZVswXT9LLnJldHVybjpBZVswXT9LLnRocm93fHwoKEo9Sy5yZXR1cm4pJiZKLmNhbGwoSyksMCk6Sy5uZXh0KSYmIShKPUouY2FsbChLLEFlWzFdKSkuZG9uZSlyZXR1cm4gSjtz''@;'; put 'put ''d2l0Y2goSz0wLEomJihBZT1bMiZBZVswXSxKLnZhbHVlXSksQWVbMF0pe2Nhc2UgMDpjYXNlIDE6Sj1BZTticmVhaztjYXNlIDQ6cmV0dXJuIG9lLmxhYmVsKysse3ZhbHVlOkFlWzFdLGRvbmU6ITF9O2Nhc2UgNTpvZS5sYWJlbCsrLEs9QWVbMV0sQWU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpB''@;'; put 'put ''ZT1vZS5vcHMucG9wKCksb2UudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKEo9KEo9b2UudHJ5cykubGVuZ3RoPjAmJkpbSi5sZW5ndGgtMV0pfHw2IT09QWVbMF0mJjIhPT1BZVswXSkpe29lPTA7Y29udGludWV9aWYoMz09PUFlWzBdJiYoIUp8fEFlWzFdPkpbMF0mJkFlWzFd''@;'; put 'put ''PEpbM10pKXtvZS5sYWJlbD1BZVsxXTticmVha31pZig2PT09QWVbMF0mJm9lLmxhYmVsPEpbMV0pe29lLmxhYmVsPUpbMV0sSj1BZTticmVha31pZihKJiZvZS5sYWJlbDxKWzJdKXtvZS5sYWJlbD1KWzJdLG9lLm9wcy5wdXNoKEFlKTticmVha31KWzJdJiZvZS5vcHMucG9wKCksb2UudHJ5''@;'; put 'put ''cy5wb3AoKTtjb250aW51ZX1BZT1OLmNhbGwoVyxvZSl9Y2F0Y2goa2Upe0FlPVs2LGtlXSxLPTB9ZmluYWxseXt0ZT1KPTB9aWYoNSZBZVswXSl0aHJvdyBBZVsxXTtyZXR1cm57dmFsdWU6QWVbMF0/QWVbMV06dm9pZCAwLGRvbmU6ITB9fShbZGUsdmVdKX19fTtPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS52ZXJpZnlTYXM5TG9naW49dm9pZCAwO3ZhciBZPWooNTkyOCk7US52ZXJpZnlTYXM5TG9naW49ZnVuY3Rpb24oVyl7cmV0dXJuIHJlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBOLHRlLEs7cmV0dXJuIGFlKHRo''@;'; put 'put ''aXMsZnVuY3Rpb24oSil7c3dpdGNoKEoubGFiZWwpe2Nhc2UgMDpOPSExLHRlPW5ldyBEYXRlLEs9MCxKLmxhYmVsPTE7Y2FzZSAxOnJldHVybls0LCgwLFkuZGVsYXkpKDFlMyldO2Nhc2UgMjppZihKLnNlbnQoKSxXLmNsb3NlZClyZXR1cm5bMyw0XTtOPVcud2luZG93LmxvY2F0aW9uLmhy''@;'; put 'put ''ZWYuaW5jbHVkZXMoIlNBU0xvZ29uIikmJlcud2luZG93LmRvY3VtZW50LmJvZHkuaW5uZXJUZXh0LmluY2x1ZGVzKCJZb3UgaGF2ZSBzaWduZWQgaW4uIiksSz0oKG5ldyBEYXRlKS52YWx1ZU9mKCktdGUudmFsdWVPZigpKS8xZTMsSi5sYWJlbD0zO2Nhc2UgMzppZighTiYmSzwzMDApcmV0''@;'; put 'put ''dXJuWzMsMV07Si5sYWJlbD00O2Nhc2UgNDpyZXR1cm5bMix7aXNMb2dnZWRJbjpOfV19fSl9KX19LDY1NDc6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKFcsTix0ZSxLKXtyZXR1cm4gbmV3KHRlfHwodGU9UHJvbWlz''@;'; put 'put ''ZSkpKGZ1bmN0aW9uKEosc2Upe2Z1bmN0aW9uIG9lKHZlKXt0cnl7ZGUoSy5uZXh0KHZlKSl9Y2F0Y2goQWUpe3NlKEFlKX19ZnVuY3Rpb24gY2UodmUpe3RyeXtkZShLLnRocm93KHZlKSl9Y2F0Y2goQWUpe3NlKEFlKX19ZnVuY3Rpb24gZGUodmUpe3ZhciBBZTt2ZS5kb25lP0oodmUudmFs''@;'; put 'put ''dWUpOihBZT12ZS52YWx1ZSxBZSBpbnN0YW5jZW9mIHRlP0FlOm5ldyB0ZShmdW5jdGlvbihrZSl7a2UoQWUpfSkpLnRoZW4ob2UsY2UpfWRlKChLPUsuYXBwbHkoVyxOfHxbXSkpLm5leHQoKSl9KX0sYWU9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oVyxOKXt2YXIgdGUsSyxK''@;'; put 'put ''LHNlLG9lPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJkpbMF0pdGhyb3cgSlsxXTtyZXR1cm4gSlsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBzZT17bmV4dDpjZSgwKSx0aHJvdzpjZSgxKSxyZXR1cm46Y2UoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihzZVtTeW1i''@;'; put 'put ''b2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxzZTtmdW5jdGlvbiBjZShkZSl7cmV0dXJuIGZ1bmN0aW9uKHZlKXtyZXR1cm4gZnVuY3Rpb24oQWUpe2lmKHRlKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO29l''@;'; put 'put ''Oyl0cnl7aWYodGU9MSxLJiYoSj0yJkFlWzBdP0sucmV0dXJuOkFlWzBdP0sudGhyb3d8fCgoSj1LLnJldHVybikmJkouY2FsbChLKSwwKTpLLm5leHQpJiYhKEo9Si5jYWxsKEssQWVbMV0pKS5kb25lKXJldHVybiBKO3N3aXRjaChLPTAsSiYmKEFlPVsyJkFlWzBdLEoudmFsdWVdKSxBZVsw''@;'; put 'put ''XSl7Y2FzZSAwOmNhc2UgMTpKPUFlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gb2UubGFiZWwrKyx7dmFsdWU6QWVbMV0sZG9uZTohMX07Y2FzZSA1Om9lLmxhYmVsKyssSz1BZVsxXSxBZT1bMF07Y29udGludWU7Y2FzZSA3OkFlPW9lLm9wcy5wb3AoKSxvZS50cnlzLnBvcCgpO2NvbnRpbnVlO2Rl''@;'; put 'put ''ZmF1bHQ6aWYoISgoSj0oSj1vZS50cnlzKS5sZW5ndGg+MCYmSltKLmxlbmd0aC0xXSl8fDYhPT1BZVswXSYmMiE9PUFlWzBdKSl7b2U9MDtjb250aW51ZX1pZigzPT09QWVbMF0mJighSnx8QWVbMV0+SlswXSYmQWVbMV08SlszXSkpe29lLmxhYmVsPUFlWzFdO2JyZWFrfWlmKDY9PT1BZVsw''@;'; put 'put ''XSYmb2UubGFiZWw8SlsxXSl7b2UubGFiZWw9SlsxXSxKPUFlO2JyZWFrfWlmKEomJm9lLmxhYmVsPEpbMl0pe29lLmxhYmVsPUpbMl0sb2Uub3BzLnB1c2goQWUpO2JyZWFrfUpbMl0mJm9lLm9wcy5wb3AoKSxvZS50cnlzLnBvcCgpO2NvbnRpbnVlfUFlPU4uY2FsbChXLG9lKX1jYXRjaChr''@;'; put 'put ''ZSl7QWU9WzYsa2VdLEs9MH1maW5hbGx5e3RlPUo9MH1pZig1JkFlWzBdKXRocm93IEFlWzFdO3JldHVybnt2YWx1ZTpBZVswXT9BZVsxXTp2b2lkIDAsZG9uZTohMH19KFtkZSx2ZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmlzTG9n''@;'; put 'put ''Z2VkSW5TQVNWSVlBPVEudmVyaWZ5U2FzVml5YUxvZ2luPXZvaWQgMDt2YXIgWT1qKDU5MjgpO1EudmVyaWZ5U2FzVml5YUxvZ2luPWZ1bmN0aW9uKFcpe3ZhciBOLHRlO3JldHVybiByZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgSyxKLHNlLG9lO3JldHVybiBhZSh0aGlz''@;'; put 'put ''LGZ1bmN0aW9uKGNlKXtzd2l0Y2goY2UubGFiZWwpe2Nhc2UgMDpLPSExLEo9bmV3IERhdGUsc2U9MCxjZS5sYWJlbD0xO2Nhc2UgMTpyZXR1cm5bNCwoMCxZLmRlbGF5KSgxZTMpXTtjYXNlIDI6aWYoY2Uuc2VudCgpLFcuY2xvc2VkKXJldHVyblszLDRdO0s9KDAsUS5pc0xvZ2dlZEluU0FT''@;'; put 'put ''VklZQSkoKSxzZT0oKG5ldyBEYXRlKS52YWx1ZU9mKCktSi52YWx1ZU9mKCkpLzFlMyxjZS5sYWJlbD0zO2Nhc2UgMzppZighSyYmc2U8MzAwKXJldHVyblszLDFdO2NlLmxhYmVsPTQ7Y2FzZSA0Om9lPSExLEo9bmV3IERhdGUsY2UubGFiZWw9NTtjYXNlIDU6cmV0dXJuWzQsKDAsWS5kZWxh''@;'; put 'put ''eSkoMWUzKV07Y2FzZSA2OmlmKGNlLnNlbnQoKSxXLmNsb3NlZClyZXR1cm5bMyw4XTtvZT1XLndpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCJTQVNMb2dvbiIpfHwobnVsbD09PSh0ZT1udWxsPT09KE49Vy53aW5kb3cuZG9jdW1lbnQuYm9keSl8fHZvaWQgMD09PU4/dm9pZCAwOk4u''@;'; put 'put ''aW5uZXJUZXh0KXx8dm9pZCAwPT09dGU/dm9pZCAwOnRlLmluY2x1ZGVzKCJZb3UgaGF2ZSBzaWduZWQgaW4uIikpLHNlPSgobmV3IERhdGUpLnZhbHVlT2YoKS1KLnZhbHVlT2YoKSkvMWUzLGNlLmxhYmVsPTc7Y2FzZSA3OmlmKCFvZSYmc2U8MzAwKXJldHVyblszLDVdO2NlLmxhYmVsPTg7''@;'; put 'put ''Y2FzZSA4OnJldHVyblsyLHtpc0xvZ2dlZEluOksmJm9lfV19fSl9KX0sUS5pc0xvZ2dlZEluU0FTVklZQT1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5jb29raWUuaW5jbHVkZXMoIkN1cnJlbnQtVXNlciIpJiZkb2N1bWVudC5jb29raWUuaW5jbHVkZXMoInVzZXJJZCIpfX0sNDAzNzoo''@;'; put 'put ''VSxRLGopPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmdlbmVyYXRlRmlsZVVwbG9hZEZvcm09dm9pZCAwO3ZhciByZT1qKDYyMzApLGFlPWooMjQwMik7US5nZW5lcmF0ZUZpbGVVcGxvYWRGb3JtPWZ1bmN0aW9uKFks''@;'; put 'put ''Vyl7Zm9yKHZhciBOIGluIFcpaWYoQXJyYXkuaXNBcnJheShXW05dKSl7dmFyIHRlPU4sSz0oMCxhZS5jb252ZXJ0VG9DU1YpKFcsTik7aWYoIkVSUk9SOiBMQVJHRSBTVFJJTkcgTEVOR1RIIj09PUspdGhyb3cgbmV3IEVycm9yKCJUaGUgbWF4IGxlbmd0aCBvZiBhIHN0cmluZyB2YWx1ZSBp''@;'; put 'put ''biBTQVNqcyBpcyAzMjc2NSBjaGFyYWN0ZXJzLiIpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgRm9ybURhdGEmJlkgaW5zdGFuY2VvZiByZSlZLmFwcGVuZCh0ZSxLLHtmaWxlbmFtZToiIi5jb25jYXQodGUsIi5jc3YiKSxjb250ZW50VHlwZToiYXBwbGljYXRpb24vY3N2In0pO2Vsc2V7dmFy''@;'; put 'put ''IEo9bmV3IEJsb2IoW0tdLHt0eXBlOiJhcHBsaWNhdGlvbi9jc3YifSk7WS5hcHBlbmQodGUsSiwiIi5jb25jYXQodGUsIi5jc3YiKSl9fXJldHVybiBZfX0sMjE3MDooVSxRLGopPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9''@;'; put 'put ''KSxRLmdlbmVyYXRlVGFibGVVcGxvYWRGb3JtPXZvaWQgMDt2YXIgcmU9aigyNDAyKSxhZT1qKDQ3OTkpO1EuZ2VuZXJhdGVUYWJsZVVwbG9hZEZvcm09ZnVuY3Rpb24oWSxXKXt2YXIgTj1bXSx0ZT17fSxLPTA7Zm9yKHZhciBKIGluIFcpe0srKywoMCxyZS5pc0Zvcm1hdHNUYWJsZSkoSil8''@;'; put 'put ''fE4ucHVzaChKKTt2YXIgc2U9KDAscmUuY29udmVydFRvQ1NWKShXLEopO2lmKCJFUlJPUjogTEFSR0UgU1RSSU5HIExFTkdUSCI9PT1zZSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBtYXggbGVuZ3RoIG9mIGEgc3RyaW5nIHZhbHVlIGluIFNBU2pzIGlzIDMyNzY1IGNoYXJhY3RlcnMuIik7c2Uu''@;'; put 'put ''bGVuZ3RoPjE2ZTM/KDAsYWUuc3BsaXRDaHVua3MpKHNlKS5tYXAoZnVuY3Rpb24ob2Upe1kuYXBwZW5kKCJzYXNqcyIuY29uY2F0KEssImRhdGEiKSxvZSl9KTp0ZVsic2FzanMiLmNvbmNhdChLLCJkYXRhIildPXNlfXJldHVybiB0ZS5zYXNqc190YWJsZXM9Ti5qb2luKCIgIikse2Zvcm1E''@;'; put 'put ''YXRhOlkscmVxdWVzdFBhcmFtczp0ZX19fSwzNjA3OmZ1bmN0aW9uKFUsUSxqKXsidXNlIHN0cmljdCI7dmFyIHJlPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihXLE4sdGUsSyl7dm9pZCAwPT09SyYmKEs9dGUpO3ZhciBKPU9iamVjdC5nZXRP''@;'; put 'put ''d25Qcm9wZXJ0eURlc2NyaXB0b3IoTix0ZSk7SiYmISgiZ2V0ImluIEo/IU4uX19lc01vZHVsZTpKLndyaXRhYmxlfHxKLmNvbmZpZ3VyYWJsZSl8fChKPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBOW3RlXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVyxLLEopfTpm''@;'; put 'put ''dW5jdGlvbihXLE4sdGUsSyl7dm9pZCAwPT09SyYmKEs9dGUpLFdbS109Tlt0ZV19KSxhZT10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oVyxOKXtmb3IodmFyIHRlIGluIFcpImRlZmF1bHQiPT09dGV8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChOLHRl''@;'; put 'put ''KXx8cmUoTixXLHRlKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBZPWooNTk1Nik7YWUoaigxMjMwKSxRKSxhZShqKDEzOTUpLFEpLGFlKGooOTgyMSksUSksYWUoaig4MzA2KSxRKSxRLmRlZmF1bHQ9WS5kZWZhdWx0fSwxNTcwOmZ1bmN0''@;'; put 'put ''aW9uKFUsUSxqKXsidXNlIHN0cmljdCI7dmFyIHJlLGFlPXRoaXMmJnRoaXMuX19leHRlbmRzfHwocmU9ZnVuY3Rpb24oSixzZSl7cmV0dXJuKHJlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihvZSxjZSl7b2UuX19wcm90''@;'; put 'put ''b19fPWNlfXx8ZnVuY3Rpb24ob2UsY2Upe2Zvcih2YXIgZGUgaW4gY2UpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNlLGRlKSYmKG9lW2RlXT1jZVtkZV0pfSkoSixzZSl9LGZ1bmN0aW9uKEosc2Upe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBzZSYmbnVsbCE9PXNlKXRo''@;'; put 'put ''cm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoc2UpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIG9lKCl7dGhpcy5jb25zdHJ1Y3Rvcj1KfXJlKEosc2UpLEoucHJvdG90eXBlPW51bGw9PT1zZT9PYmplY3QuY3JlYXRlKHNl''@;'; put 'put ''KToob2UucHJvdG90eXBlPXNlLnByb3RvdHlwZSxuZXcgb2UpfSksWT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oSixzZSxvZSxjZSl7cmV0dXJuIG5ldyhvZXx8KG9lPVByb21pc2UpKShmdW5jdGlvbihkZSx2ZSl7ZnVuY3Rpb24gQWUoSWUpe3RyeXtTZShjZS5uZXh0KEllKSl9''@;'; put 'put ''Y2F0Y2goVGUpe3ZlKFRlKX19ZnVuY3Rpb24ga2UoSWUpe3RyeXtTZShjZS50aHJvdyhJZSkpfWNhdGNoKFRlKXt2ZShUZSl9fWZ1bmN0aW9uIFNlKEllKXt2YXIgVGU7SWUuZG9uZT9kZShJZS52YWx1ZSk6KFRlPUllLnZhbHVlLFRlIGluc3RhbmNlb2Ygb2U/VGU6bmV3IG9lKGZ1bmN0aW9u''@;'; put 'put ''KE1lKXtNZShUZSl9KSkudGhlbihBZSxrZSl9U2UoKGNlPWNlLmFwcGx5KEosc2V8fFtdKSkubmV4dCgpKX0pfSxXPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKEosc2Upe3ZhciBvZSxjZSxkZSx2ZSxBZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZkZVswXSl0aHJv''@;'; put 'put ''dyBkZVsxXTtyZXR1cm4gZGVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gdmU9e25leHQ6a2UoMCksdGhyb3c6a2UoMSkscmV0dXJuOmtlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYodmVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksdmU7ZnVu''@;'; put 'put ''Y3Rpb24ga2UoU2Upe3JldHVybiBmdW5jdGlvbihJZSl7cmV0dXJuIGZ1bmN0aW9uKFRlKXtpZihvZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtBZTspdHJ5e2lmKG9lPTEsY2UmJihkZT0yJlRlWzBdP2NlLnJldHVybjpUZVsw''@;'; put 'put ''XT9jZS50aHJvd3x8KChkZT1jZS5yZXR1cm4pJiZkZS5jYWxsKGNlKSwwKTpjZS5uZXh0KSYmIShkZT1kZS5jYWxsKGNlLFRlWzFdKSkuZG9uZSlyZXR1cm4gZGU7c3dpdGNoKGNlPTAsZGUmJihUZT1bMiZUZVswXSxkZS52YWx1ZV0pLFRlWzBdKXtjYXNlIDA6Y2FzZSAxOmRlPVRlO2JyZWFr''@;'; put 'put ''O2Nhc2UgNDpyZXR1cm4gQWUubGFiZWwrKyx7dmFsdWU6VGVbMV0sZG9uZTohMX07Y2FzZSA1OkFlLmxhYmVsKyssY2U9VGVbMV0sVGU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpUZT1BZS5vcHMucG9wKCksQWUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKGRlPShkZT1BZS50cnlz''@;'; put 'put ''KS5sZW5ndGg+MCYmZGVbZGUubGVuZ3RoLTFdKXx8NiE9PVRlWzBdJiYyIT09VGVbMF0pKXtBZT0wO2NvbnRpbnVlfWlmKDM9PT1UZVswXSYmKCFkZXx8VGVbMV0+ZGVbMF0mJlRlWzFdPGRlWzNdKSl7QWUubGFiZWw9VGVbMV07YnJlYWt9aWYoNj09PVRlWzBdJiZBZS5sYWJlbDxkZVsxXSl7''@;'; put 'put ''QWUubGFiZWw9ZGVbMV0sZGU9VGU7YnJlYWt9aWYoZGUmJkFlLmxhYmVsPGRlWzJdKXtBZS5sYWJlbD1kZVsyXSxBZS5vcHMucHVzaChUZSk7YnJlYWt9ZGVbMl0mJkFlLm9wcy5wb3AoKSxBZS50cnlzLnBvcCgpO2NvbnRpbnVlfVRlPXNlLmNhbGwoSixBZSl9Y2F0Y2goTWUpe1RlPVs2LE1l''@;'; put 'put ''XSxjZT0wfWZpbmFsbHl7b2U9ZGU9MH1pZig1JlRlWzBdKXRocm93IFRlWzFdO3JldHVybnt2YWx1ZTpUZVswXT9UZVsxXTp2b2lkIDAsZG9uZTohMH19KFtTZSxJZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLkNvbXB1dGVKb2JFeGVj''@;'; put 'put ''dXRvcj12b2lkIDA7dmFyIE49aigzOTAwKSx0ZT1qKDEzOTUpLEs9ZnVuY3Rpb24oSil7ZnVuY3Rpb24gc2Uob2UsY2Upe3ZhciBkZT1KLmNhbGwodGhpcyxvZSxOLlNlcnZlclR5cGUuU2FzVml5YSl8fHRoaXM7cmV0dXJuIGRlLnNhc1ZpeWFBcGlDbGllbnQ9Y2UsZGV9cmV0dXJuIGFlKHNl''@;'; put 'put ''LEopLHNlLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKG9lLGNlLGRlLHZlLEFlKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIga2UsSWU9dGhpcztyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKFRlKXtyZXR1cm4ga2U9dmV8fGZ1bmN0aW9uKCl7cmV0dXJuIFBy''@;'; put 'put ''b21pc2UucmVzb2x2ZSgpfSxbMixuZXcgUHJvbWlzZShmdW5jdGlvbihNZSxoZSl7dmFyIE87bnVsbD09PShPPUllLnNhc1ZpeWFBcGlDbGllbnQpfHx2b2lkIDA9PT1PfHxPLmV4ZWN1dGVDb21wdXRlSm9iKG9lLGRlLmNvbnRleHROYW1lLGRlLmRlYnVnLGNlLEFlLCEwLCEwKS50aGVuKGZ1''@;'; put 'put ''bmN0aW9uKHope0llLnNhc1ZpeWFBcGlDbGllbnQuYXBwZW5kUmVxdWVzdCh6LG9lLGRlLmRlYnVnKSxNZSh6LnJlc3VsdCl9KS5jYXRjaChmdW5jdGlvbih6KXtyZXR1cm4gWShJZSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGVlPXRoaXM7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihu''@;'; put 'put ''ZSl7c3dpdGNoKG5lLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHogaW5zdGFuY2VvZiB0ZS5Db21wdXRlSm9iRXhlY3V0aW9uRXJyb3ImJih0aGlzLnNhc1ZpeWFBcGlDbGllbnQuYXBwZW5kUmVxdWVzdCh6LG9lLGRlLmRlYnVnKSxoZShuZXcgdGUuRXJyb3JSZXNwb25zZShudWxsPT16P3ZvaWQg''@;'; put 'put ''MDp6Lm1lc3NhZ2UseikpKSx6IGluc3RhbmNlb2YgdGUuTG9naW5SZXF1aXJlZEVycm9yPyh0aGlzLmFwcGVuZFdhaXRpbmdSZXF1ZXN0KGZ1bmN0aW9uKCl7cmV0dXJuIGVlLmV4ZWN1dGUob2UsY2UsZGUsdmUpLnRoZW4oZnVuY3Rpb24oeCl7TWUoeCl9LGZ1bmN0aW9uKHgpe2hlKHgpfSl9''@;'; put 'put ''KSxbNCxrZSgpXSk6WzMsMl07Y2FzZSAxOnJldHVybiBuZS5zZW50KCksWzMsM107Y2FzZSAyOmhlKG5ldyB0ZS5FcnJvclJlc3BvbnNlKG51bGw9PXo/dm9pZCAwOnoubWVzc2FnZSx6KSksbmUubGFiZWw9MztjYXNlIDM6cmV0dXJuWzJdfX0pfSl9KX0pXX0pfSl9LHNlfShqKDYxMTgpLkJh''@;'; put 'put ''c2VKb2JFeGVjdXRvcik7US5Db21wdXRlSm9iRXhlY3V0b3I9S30sMzQ5MTpmdW5jdGlvbihVLFEsail7InVzZSBzdHJpY3QiO3ZhciByZSxhZT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KHJlPWZ1bmN0aW9uKHNlLG9lKXtyZXR1cm4ocmU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90''@;'; put 'put ''b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGNlLGRlKXtjZS5fX3Byb3RvX189ZGV9fHxmdW5jdGlvbihjZSxkZSl7Zm9yKHZhciB2ZSBpbiBkZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGUsdmUpJiYoY2VbdmVdPWRlW3ZlXSl9KShzZSxvZSl9LGZ1''@;'; put 'put ''bmN0aW9uKHNlLG9lKXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygb2UmJm51bGwhPT1vZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKG9lKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBjZSgpe3RoaXMuY29uc3RydWN0''@;'; put 'put ''b3I9c2V9cmUoc2Usb2UpLHNlLnByb3RvdHlwZT1udWxsPT09b2U/T2JqZWN0LmNyZWF0ZShvZSk6KGNlLnByb3RvdHlwZT1vZS5wcm90b3R5cGUsbmV3IGNlKX0pLFk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHNlLG9lLGNlLGRlKXtyZXR1cm4gbmV3KGNlfHwoY2U9UHJvbWlz''@;'; put 'put ''ZSkpKGZ1bmN0aW9uKHZlLEFlKXtmdW5jdGlvbiBrZShUZSl7dHJ5e0llKGRlLm5leHQoVGUpKX1jYXRjaChNZSl7QWUoTWUpfX1mdW5jdGlvbiBTZShUZSl7dHJ5e0llKGRlLnRocm93KFRlKSl9Y2F0Y2goTWUpe0FlKE1lKX19ZnVuY3Rpb24gSWUoVGUpe3ZhciBNZTtUZS5kb25lP3ZlKFRl''@;'; put 'put ''LnZhbHVlKTooTWU9VGUudmFsdWUsTWUgaW5zdGFuY2VvZiBjZT9NZTpuZXcgY2UoZnVuY3Rpb24oaGUpe2hlKE1lKX0pKS50aGVuKGtlLFNlKX1JZSgoZGU9ZGUuYXBwbHkoc2Usb2V8fFtdKSkubmV4dCgpKX0pfSxXPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHNlLG9lKXt2''@;'; put 'put ''YXIgY2UsZGUsdmUsQWUsa2U9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmdmVbMF0pdGhyb3cgdmVbMV07cmV0dXJuIHZlWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIEFlPXtuZXh0OlNlKDApLHRocm93OlNlKDEpLHJldHVybjpTZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5''@;'; put 'put ''bWJvbCYmKEFlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLEFlO2Z1bmN0aW9uIFNlKEllKXtyZXR1cm4gZnVuY3Rpb24oVGUpe3JldHVybiBmdW5jdGlvbihNZSl7aWYoY2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0''@;'; put 'put ''aW5nLiIpO2Zvcig7a2U7KXRyeXtpZihjZT0xLGRlJiYodmU9MiZNZVswXT9kZS5yZXR1cm46TWVbMF0/ZGUudGhyb3d8fCgodmU9ZGUucmV0dXJuKSYmdmUuY2FsbChkZSksMCk6ZGUubmV4dCkmJiEodmU9dmUuY2FsbChkZSxNZVsxXSkpLmRvbmUpcmV0dXJuIHZlO3N3aXRjaChkZT0wLHZl''@;'; put 'put ''JiYoTWU9WzImTWVbMF0sdmUudmFsdWVdKSxNZVswXSl7Y2FzZSAwOmNhc2UgMTp2ZT1NZTticmVhaztjYXNlIDQ6cmV0dXJuIGtlLmxhYmVsKysse3ZhbHVlOk1lWzFdLGRvbmU6ITF9O2Nhc2UgNTprZS5sYWJlbCsrLGRlPU1lWzFdLE1lPVswXTtjb250aW51ZTtjYXNlIDc6TWU9a2Uub3Bz''@;'; put 'put ''LnBvcCgpLGtlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKCh2ZT0odmU9a2UudHJ5cykubGVuZ3RoPjAmJnZlW3ZlLmxlbmd0aC0xXSl8fDYhPT1NZVswXSYmMiE9PU1lWzBdKSl7a2U9MDtjb250aW51ZX1pZigzPT09TWVbMF0mJighdmV8fE1lWzFdPnZlWzBdJiZNZVsxXTx2''@;'; put 'put ''ZVszXSkpe2tlLmxhYmVsPU1lWzFdO2JyZWFrfWlmKDY9PT1NZVswXSYma2UubGFiZWw8dmVbMV0pe2tlLmxhYmVsPXZlWzFdLHZlPU1lO2JyZWFrfWlmKHZlJiZrZS5sYWJlbDx2ZVsyXSl7a2UubGFiZWw9dmVbMl0sa2Uub3BzLnB1c2goTWUpO2JyZWFrfXZlWzJdJiZrZS5vcHMucG9wKCks''@;'; put 'put ''a2UudHJ5cy5wb3AoKTtjb250aW51ZX1NZT1vZS5jYWxsKHNlLGtlKX1jYXRjaChoZSl7TWU9WzYsaGVdLGRlPTB9ZmluYWxseXtjZT12ZT0wfWlmKDUmTWVbMF0pdGhyb3cgTWVbMV07cmV0dXJue3ZhbHVlOk1lWzBdP01lWzFdOnZvaWQgMCxkb25lOiEwfX0oW0llLFRlXSl9fX07T2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuRmlsZVVwbG9hZGVyPXZvaWQgMDt2YXIgTj1qKDU5MjgpLHRlPWooMTM5NSksSz1qKDM5MDApLEo9ZnVuY3Rpb24oc2Upe2Z1bmN0aW9uIG9lKGNlLGRlLHZlLEFlKXt2YXIga2U9c2UuY2FsbCh0aGlzLGNlLGRl''@;'; put 'put ''KXx8dGhpcztyZXR1cm4ga2Uuam9ic1BhdGg9dmUsa2UucmVxdWVzdENsaWVudD1BZSxrZX1yZXR1cm4gYWUob2Usc2UpLG9lLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKGNlLGRlLHZlLEFlKXtyZXR1cm4gWSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIga2UsU2UsSWUs''@;'; put 'put ''VGUsTWUsaGUsTyx6LGVlLG5lLHgsUCxWLFM9dGhpcztyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKEYpe2lmKFNlPWRlLnBhcmFtcyxJZT1BZXx8ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9LG51bGw9PShrZT1kZS5maWxlcyl8fCFrZS5sZW5ndGgpdGhyb3cgbmV3IHRlLkVy''@;'; put 'put ''cm9yUmVzcG9uc2UoIkF0IGxlYXN0IG9uZSBmaWxlIG11c3QgYmUgcHJvdmlkZWQuIik7aWYoIWNlfHwiIj09PWNlKXRocm93IG5ldyB0ZS5FcnJvclJlc3BvbnNlKCJzYXNKb2IgbXVzdCBiZSBwcm92aWRlZC4iKTtmb3IoTWUgaW4gVGU9IiIsU2UpU2UuaGFzT3duUHJvcGVydHkoTWUpJiYo''@;'; put 'put ''VGUrPSImIi5jb25jYXQoTWUsIj0iKS5jb25jYXQoU2VbTWVdKSk7Zm9yKGhlPXZlLmFwcExvYz92ZS5hcHBMb2MucmVwbGFjZSgvXC8/JC8sIi8iKStjZS5yZXBsYWNlKC9eXC8vLCIiKTpjZSxPPSIiLmNvbmNhdCh0aGlzLmpvYnNQYXRoLCIvPyIpLmNvbmNhdCgiX3Byb2dyYW09IitoZSku''@;'; put 'put ''Y29uY2F0KFRlKSx6PW5ldyBGb3JtRGF0YSxlZT0wLG5lPWtlO2VlPG5lLmxlbmd0aDtlZSsrKXouYXBwZW5kKCJmaWxlIiwoeD1uZVtlZV0pLmZpbGUseC5maWxlTmFtZSk7cmV0dXJuKFA9dGhpcy5yZXF1ZXN0Q2xpZW50LmdldENzcmZUb2tlbigiZmlsZSIpKSYmei5hcHBlbmQoIl9jc3Jm''@;'; put 'put ''IixQLnZhbHVlKSx2ZS5kZWJ1ZyYmei5hcHBlbmQoIl9kZWJ1ZyIsIjEzMSIpLHZlLnNlcnZlclR5cGU9PT1LLlNlcnZlclR5cGUuU2FzVml5YSYmdmUuY29udGV4dE5hbWUmJnouYXBwZW5kKCJfY29udGV4dG5hbWUiLHZlLmNvbnRleHROYW1lKSxWPXsiY2FjaGUtY29udHJvbCI6Im5vLWNh''@;'; put 'put ''Y2hlIixBY2NlcHQ6IiovKiIsIkNvbnRlbnQtVHlwZSI6InRleHQvcGxhaW4ifSxbMixuZXcgUHJvbWlzZShmdW5jdGlvbih5ZSxDZSl7Uy5yZXF1ZXN0Q2xpZW50LnBvc3QoTyx6LHZvaWQgMCwiYXBwbGljYXRpb24vanNvbiIsVikudGhlbihmdW5jdGlvbihEZSl7cmV0dXJuIFkoUyx2b2lk''@;'; put 'put ''IDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFBlO3JldHVybiBXKHRoaXMsZnVuY3Rpb24oUWUpe3N3aXRjaChRZS5sYWJlbCl7Y2FzZSAwOmlmKHRoaXMucmVxdWVzdENsaWVudC5hcHBlbmRSZXF1ZXN0KERlLGNlLHZlLmRlYnVnKSxQZT1EZS5yZXN1bHQsIXZlLmRlYnVnKXJldHVyblszLDVd''@;'; put 'put ''O3N3aXRjaCh0aGlzLnNlcnZlclR5cGUpe2Nhc2UgSy5TZXJ2ZXJUeXBlLlNhc1ZpeWE6cmV0dXJuWzMsMV07Y2FzZSBLLlNlcnZlclR5cGUuU2FzOTpyZXR1cm5bMywzXX1yZXR1cm5bMyw0XTtjYXNlIDE6cmV0dXJuWzQsKDAsTi5wYXJzZVNhc1ZpeWFEZWJ1Z1Jlc3BvbnNlKShEZS5yZXN1''@;'; put 'put ''bHQsdGhpcy5yZXF1ZXN0Q2xpZW50LHZlLnNlcnZlclVybCldO2Nhc2UgMjpyZXR1cm4gUGU9UWUuc2VudCgpLFszLDRdO2Nhc2UgMzpyZXR1cm4gUGU9InN0cmluZyI9PXR5cGVvZiBEZS5yZXN1bHQ/KDAsTi5wYXJzZVdlYm91dFJlc3BvbnNlKShEZS5yZXN1bHQsTyk6RGUucmVzdWx0LFsz''@;'; put 'put ''LDRdO2Nhc2UgNDpyZXR1cm5bMyw2XTtjYXNlIDU6dGhpcy5zZXJ2ZXJUeXBlIT09Sy5TZXJ2ZXJUeXBlLlNhc2pzJiYoUGU9InN0cmluZyI9PXR5cGVvZiBEZS5yZXN1bHQ/KDAsTi5nZXRWYWxpZEpzb24pKERlLnJlc3VsdCk6RGUucmVzdWx0KSxRZS5sYWJlbD02O2Nhc2UgNjpyZXR1cm4g''@;'; put 'put ''eWUoUGUpLFsyXX19KX0pfSkuY2F0Y2goZnVuY3Rpb24oRGUpe3JldHVybiBZKFMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBQZT10aGlzO3JldHVybiBXKHRoaXMsZnVuY3Rpb24oUWUpe3N3aXRjaChRZS5sYWJlbCl7Y2FzZSAwOnJldHVybiBEZSBpbnN0YW5jZW9mIHRlLkpvYkV4''@;'; put 'put ''ZWN1dGlvbkVycm9yJiYodGhpcy5yZXF1ZXN0Q2xpZW50LmFwcGVuZFJlcXVlc3QoRGUsY2UsdmUuZGVidWcpLENlKG5ldyB0ZS5FcnJvclJlc3BvbnNlKG51bGw9PURlP3ZvaWQgMDpEZS5tZXNzYWdlLERlKSkpLERlIGluc3RhbmNlb2YgdGUuTG9naW5SZXF1aXJlZEVycm9yPyh0aGlzLmFw''@;'; put 'put ''cGVuZFdhaXRpbmdSZXF1ZXN0KGZ1bmN0aW9uKCl7cmV0dXJuIFBlLmV4ZWN1dGUoY2UsZGUsdmUsQWUpLnRoZW4oZnVuY3Rpb24oJGUpe3llKCRlKX0sZnVuY3Rpb24oJGUpe0NlKCRlKX0pfSksWzQsSWUoKV0pOlszLDJdO2Nhc2UgMTpyZXR1cm4gUWUuc2VudCgpLFszLDNdO2Nhc2UgMjpD''@;'; put 'put ''ZShuZXcgdGUuRXJyb3JSZXNwb25zZSgiRmlsZSB1cGxvYWQgcmVxdWVzdCBmYWlsZWQuIixEZSkpLFFlLmxhYmVsPTM7Y2FzZSAzOnJldHVyblsyXX19KX0pfSl9KV19KX0pfSxvZX0oaig2MTE4KS5CYXNlSm9iRXhlY3V0b3IpO1EuRmlsZVVwbG9hZGVyPUp9LDQ0NDY6ZnVuY3Rpb24oVSxR''@;'; put 'put ''LGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmUsYWU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChyZT1mdW5jdGlvbihvZSxjZSl7cmV0dXJuKHJlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkZSx2ZSl7ZGUuX19wcm90b19fPXZl''@;'; put 'put ''fXx8ZnVuY3Rpb24oZGUsdmUpe2Zvcih2YXIgQWUgaW4gdmUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZlLEFlKSYmKGRlW0FlXT12ZVtBZV0pfSkob2UsY2UpfSxmdW5jdGlvbihvZSxjZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGNlJiZudWxsIT09Y2UpdGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhjZSkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gZGUoKXt0aGlzLmNvbnN0cnVjdG9yPW9lfXJlKG9lLGNlKSxvZS5wcm90b3R5cGU9bnVsbD09PWNlP09iamVjdC5jcmVhdGUoY2Up''@;'; put 'put ''OihkZS5wcm90b3R5cGU9Y2UucHJvdG90eXBlLG5ldyBkZSl9KSxZPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihvZSxjZSxkZSx2ZSl7cmV0dXJuIG5ldyhkZXx8KGRlPVByb21pc2UpKShmdW5jdGlvbihBZSxrZSl7ZnVuY3Rpb24gU2UoTWUpe3RyeXtUZSh2ZS5uZXh0KE1lKSl9''@;'; put 'put ''Y2F0Y2goaGUpe2tlKGhlKX19ZnVuY3Rpb24gSWUoTWUpe3RyeXtUZSh2ZS50aHJvdyhNZSkpfWNhdGNoKGhlKXtrZShoZSl9fWZ1bmN0aW9uIFRlKE1lKXt2YXIgaGU7TWUuZG9uZT9BZShNZS52YWx1ZSk6KGhlPU1lLnZhbHVlLGhlIGluc3RhbmNlb2YgZGU/aGU6bmV3IGRlKGZ1bmN0aW9u''@;'; put 'put ''KE8pe08oaGUpfSkpLnRoZW4oU2UsSWUpfVRlKCh2ZT12ZS5hcHBseShvZSxjZXx8W10pKS5uZXh0KCkpfSl9LFc9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24ob2UsY2Upe3ZhciBkZSx2ZSxBZSxrZSxTZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZBZVswXSl0aHJv''@;'; put 'put ''dyBBZVsxXTtyZXR1cm4gQWVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4ga2U9e25leHQ6SWUoMCksdGhyb3c6SWUoMSkscmV0dXJuOkllKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoa2VbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksa2U7ZnVu''@;'; put 'put ''Y3Rpb24gSWUoVGUpe3JldHVybiBmdW5jdGlvbihNZSl7cmV0dXJuIGZ1bmN0aW9uKGhlKXtpZihkZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtTZTspdHJ5e2lmKGRlPTEsdmUmJihBZT0yJmhlWzBdP3ZlLnJldHVybjpoZVsw''@;'; put 'put ''XT92ZS50aHJvd3x8KChBZT12ZS5yZXR1cm4pJiZBZS5jYWxsKHZlKSwwKTp2ZS5uZXh0KSYmIShBZT1BZS5jYWxsKHZlLGhlWzFdKSkuZG9uZSlyZXR1cm4gQWU7c3dpdGNoKHZlPTAsQWUmJihoZT1bMiZoZVswXSxBZS52YWx1ZV0pLGhlWzBdKXtjYXNlIDA6Y2FzZSAxOkFlPWhlO2JyZWFr''@;'; put 'put ''O2Nhc2UgNDpyZXR1cm4gU2UubGFiZWwrKyx7dmFsdWU6aGVbMV0sZG9uZTohMX07Y2FzZSA1OlNlLmxhYmVsKyssdmU9aGVbMV0saGU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpoZT1TZS5vcHMucG9wKCksU2UudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKEFlPShBZT1TZS50cnlz''@;'; put 'put ''KS5sZW5ndGg+MCYmQWVbQWUubGVuZ3RoLTFdKXx8NiE9PWhlWzBdJiYyIT09aGVbMF0pKXtTZT0wO2NvbnRpbnVlfWlmKDM9PT1oZVswXSYmKCFBZXx8aGVbMV0+QWVbMF0mJmhlWzFdPEFlWzNdKSl7U2UubGFiZWw9aGVbMV07YnJlYWt9aWYoNj09PWhlWzBdJiZTZS5sYWJlbDxBZVsxXSl7''@;'; put 'put ''U2UubGFiZWw9QWVbMV0sQWU9aGU7YnJlYWt9aWYoQWUmJlNlLmxhYmVsPEFlWzJdKXtTZS5sYWJlbD1BZVsyXSxTZS5vcHMucHVzaChoZSk7YnJlYWt9QWVbMl0mJlNlLm9wcy5wb3AoKSxTZS50cnlzLnBvcCgpO2NvbnRpbnVlfWhlPWNlLmNhbGwob2UsU2UpfWNhdGNoKE8pe2hlPVs2LE9d''@;'; put 'put ''LHZlPTB9ZmluYWxseXtkZT1BZT0wfWlmKDUmaGVbMF0pdGhyb3cgaGVbMV07cmV0dXJue3ZhbHVlOmhlWzBdP2hlWzFdOnZvaWQgMCxkb25lOiEwfX0oW1RlLE1lXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuSmVzSm9iRXhlY3V0b3I9''@;'; put 'put ''dm9pZCAwO3ZhciBOPWooMzkwMCksdGU9aigxMzk1KSxLPWooNjExOCksSj1qKDU5MjgpLHNlPWZ1bmN0aW9uKG9lKXtmdW5jdGlvbiBjZShkZSx2ZSl7dmFyIEFlPW9lLmNhbGwodGhpcyxkZSxOLlNlcnZlclR5cGUuU2FzVml5YSl8fHRoaXM7cmV0dXJuIEFlLnNhc1ZpeWFBcGlDbGllbnQ9''@;'; put 'put ''dmUsQWV9cmV0dXJuIGFlKGNlLG9lKSxjZS5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbihkZSx2ZSxBZSxrZSxTZSxJZSl7cmV0dXJuIHZvaWQgMD09PUllJiYoSWU9W10pLFkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFRlLGhlPXRoaXM7cmV0dXJuIFcodGhpcyxmdW5j''@;'; put 'put ''dGlvbihPKXtyZXR1cm4gVGU9a2V8fGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfSxbMixuZXcgUHJvbWlzZShmdW5jdGlvbih6LGVlKXt2YXIgbmU7bnVsbD09PShuZT1oZS5zYXNWaXlhQXBpQ2xpZW50KXx8dm9pZCAwPT09bmV8fG5lLmV4ZWN1dGVKb2IoZGUsQWUuY29u''@;'; put 'put ''dGV4dE5hbWUsQWUuZGVidWcsdmUsU2UpLnRoZW4oZnVuY3Rpb24oeCl7aGUuc2FzVml5YUFwaUNsaWVudC5hcHBlbmRSZXF1ZXN0KHgsZGUsQWUuZGVidWcpO3ZhciBQPSgwLEouYXBwZW5kRXh0cmFSZXNwb25zZUF0dHJpYnV0ZXMpKHgsSWUpO3ooUCl9KS5jYXRjaChmdW5jdGlvbih4KXty''@;'; put 'put ''ZXR1cm4gWShoZSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFA9dGhpcztyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKFYpe3N3aXRjaChWLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHggaW5zdGFuY2VvZiB0ZS5Kb2JFeGVjdXRpb25FcnJvciYmKHRoaXMuc2FzVml5YUFwaUNsaWVudC5hcHBl''@;'; put 'put ''bmRSZXF1ZXN0KHgsZGUsQWUuZGVidWcpLGVlKG5ldyB0ZS5FcnJvclJlc3BvbnNlKG51bGw9PXg/dm9pZCAwOngubWVzc2FnZSx4KSkpLHggaW5zdGFuY2VvZiB0ZS5Mb2dpblJlcXVpcmVkRXJyb3I/KHRoaXMuYXBwZW5kV2FpdGluZ1JlcXVlc3QoZnVuY3Rpb24oKXtyZXR1cm4gUC5leGVj''@;'; put 'put ''dXRlKGRlLHZlLEFlLGtlLFNlLEllKS50aGVuKGZ1bmN0aW9uKFQpe3ooVCl9LGZ1bmN0aW9uKFQpe2VlKFQpfSl9KSxbNCxUZSgpXSk6WzMsMl07Y2FzZSAxOnJldHVybiBWLnNlbnQoKSxbMywzXTtjYXNlIDI6ZWUobmV3IHRlLkVycm9yUmVzcG9uc2UobnVsbD09eD92b2lkIDA6eC5tZXNz''@;'; put 'put ''YWdlLHgpKSxWLmxhYmVsPTM7Y2FzZSAzOnJldHVyblsyXX19KX0pfSl9KV19KX0pfSxjZX0oSy5CYXNlSm9iRXhlY3V0b3IpO1EuSmVzSm9iRXhlY3V0b3I9c2V9LDYxMTg6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9u''@;'; put 'put ''KE4sdGUsSyxKKXtyZXR1cm4gbmV3KEt8fChLPVByb21pc2UpKShmdW5jdGlvbihzZSxvZSl7ZnVuY3Rpb24gY2UoQWUpe3RyeXt2ZShKLm5leHQoQWUpKX1jYXRjaChrZSl7b2Uoa2UpfX1mdW5jdGlvbiBkZShBZSl7dHJ5e3ZlKEoudGhyb3coQWUpKX1jYXRjaChrZSl7b2Uoa2UpfX1mdW5j''@;'; put 'put ''dGlvbiB2ZShBZSl7dmFyIGtlO0FlLmRvbmU/c2UoQWUudmFsdWUpOihrZT1BZS52YWx1ZSxrZSBpbnN0YW5jZW9mIEs/a2U6bmV3IEsoZnVuY3Rpb24oU2Upe1NlKGtlKX0pKS50aGVuKGNlLGRlKX12ZSgoSj1KLmFwcGx5KE4sdGV8fFtdKSkubmV4dCgpKX0pfSxhZT10aGlzJiZ0aGlzLl9f''@;'; put 'put ''Z2VuZXJhdG9yfHxmdW5jdGlvbihOLHRlKXt2YXIgSyxKLHNlLG9lLGNlPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJnNlWzBdKXRocm93IHNlWzFdO3JldHVybiBzZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBvZT17bmV4dDpkZSgwKSx0aHJvdzpkZSgxKSxyZXR1cm46ZGUo''@;'; put 'put ''Mil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihvZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxvZTtmdW5jdGlvbiBkZSh2ZSl7cmV0dXJuIGZ1bmN0aW9uKEFlKXtyZXR1cm4gZnVuY3Rpb24oa2Upe2lmKEspdGhyb3cgbmV3IFR5cGVFcnJvcigiR2Vu''@;'; put 'put ''ZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7Y2U7KXRyeXtpZihLPTEsSiYmKHNlPTIma2VbMF0/Si5yZXR1cm46a2VbMF0/Si50aHJvd3x8KChzZT1KLnJldHVybikmJnNlLmNhbGwoSiksMCk6Si5uZXh0KSYmIShzZT1zZS5jYWxsKEosa2VbMV0pKS5kb25lKXJldHVybiBz''@;'; put 'put ''ZTtzd2l0Y2goSj0wLHNlJiYoa2U9WzIma2VbMF0sc2UudmFsdWVdKSxrZVswXSl7Y2FzZSAwOmNhc2UgMTpzZT1rZTticmVhaztjYXNlIDQ6cmV0dXJuIGNlLmxhYmVsKysse3ZhbHVlOmtlWzFdLGRvbmU6ITF9O2Nhc2UgNTpjZS5sYWJlbCsrLEo9a2VbMV0sa2U9WzBdO2NvbnRpbnVlO2Nh''@;'; put 'put ''c2UgNzprZT1jZS5vcHMucG9wKCksY2UudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKHNlPShzZT1jZS50cnlzKS5sZW5ndGg+MCYmc2Vbc2UubGVuZ3RoLTFdKXx8NiE9PWtlWzBdJiYyIT09a2VbMF0pKXtjZT0wO2NvbnRpbnVlfWlmKDM9PT1rZVswXSYmKCFzZXx8a2VbMV0+''@;'; put 'put ''c2VbMF0mJmtlWzFdPHNlWzNdKSl7Y2UubGFiZWw9a2VbMV07YnJlYWt9aWYoNj09PWtlWzBdJiZjZS5sYWJlbDxzZVsxXSl7Y2UubGFiZWw9c2VbMV0sc2U9a2U7YnJlYWt9aWYoc2UmJmNlLmxhYmVsPHNlWzJdKXtjZS5sYWJlbD1zZVsyXSxjZS5vcHMucHVzaChrZSk7YnJlYWt9c2VbMl0m''@;'; put 'put ''JmNlLm9wcy5wb3AoKSxjZS50cnlzLnBvcCgpO2NvbnRpbnVlfWtlPXRlLmNhbGwoTixjZSl9Y2F0Y2goU2Upe2tlPVs2LFNlXSxKPTB9ZmluYWxseXtLPXNlPTB9aWYoNSZrZVswXSl0aHJvdyBrZVsxXTtyZXR1cm57dmFsdWU6a2VbMF0/a2VbMV06dm9pZCAwLGRvbmU6ITB9fShbdmUsQWVd''@;'; put 'put ''KX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5CYXNlSm9iRXhlY3V0b3I9dm9pZCAwO3ZhciBZPWooNTkyOCksVz1mdW5jdGlvbigpe2Z1bmN0aW9uIE4odGUsSyl7dmFyIEo9dGhpczt0aGlzLnNlcnZlclVybD10ZSx0aGlzLnNlcnZlclR5''@;'; put 'put ''cGU9Syx0aGlzLndhaXRpbmdSZXF1ZXN0cz1bXSx0aGlzLnJlc2VuZFdhaXRpbmdSZXF1ZXN0cz1mdW5jdGlvbigpe3JldHVybiByZShKLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgc2U9dGhpcztyZXR1cm4gYWUodGhpcyxmdW5jdGlvbihvZSl7c3dpdGNoKG9lLmxhYmVsKXtjYXNl''@;'; put 'put ''IDA6cmV0dXJuWzQsKDAsWS5hc3luY0ZvckVhY2gpKHRoaXMud2FpdGluZ1JlcXVlc3RzLGZ1bmN0aW9uKGNlKXtyZXR1cm4gcmUoc2Usdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBhZSh0aGlzLGZ1bmN0aW9uKGRlKXtzd2l0Y2goZGUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxj''@;'; put 'put ''ZSgpXTtjYXNlIDE6cmV0dXJuIGRlLnNlbnQoKSxbMl19fSl9KX0pXTtjYXNlIDE6cmV0dXJuIG9lLnNlbnQoKSx0aGlzLndhaXRpbmdSZXF1ZXN0cz1bXSxbMl19fSl9KX19cmV0dXJuIE4ucHJvdG90eXBlLmFwcGVuZFdhaXRpbmdSZXF1ZXN0PWZ1bmN0aW9uKHRlKXt0aGlzLndhaXRpbmdS''@;'; put 'put ''ZXF1ZXN0cy5wdXNoKHRlKX0sTi5wcm90b3R5cGUuZ2V0UmVxdWVzdFBhcmFtcz1mdW5jdGlvbih0ZSl7dmFyIEs9e307cmV0dXJuIHRlLmRlYnVnJiYoSy5fb21pdHRleHRsb2c9ImZhbHNlIixLLl9vbWl0c2Vzc2lvbnJlc3VsdHM9ImZhbHNlIixLLl9kZWJ1Zz0xMzEpLEt9LE59KCk7US5C''@;'; put 'put ''YXNlSm9iRXhlY3V0b3I9V30sMjY5MzpmdW5jdGlvbihVLFEsail7InVzZSBzdHJpY3QiO3ZhciByZSxhZT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KHJlPWZ1bmN0aW9uKHZlLEFlKXtyZXR1cm4ocmU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJy''@;'; put 'put ''YXkmJmZ1bmN0aW9uKGtlLFNlKXtrZS5fX3Byb3RvX189U2V9fHxmdW5jdGlvbihrZSxTZSl7Zm9yKHZhciBJZSBpbiBTZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoU2UsSWUpJiYoa2VbSWVdPVNlW0llXSl9KSh2ZSxBZSl9LGZ1bmN0aW9uKHZlLEFlKXtpZigiZnVu''@;'; put 'put ''Y3Rpb24iIT10eXBlb2YgQWUmJm51bGwhPT1BZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKEFlKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBrZSgpe3RoaXMuY29uc3RydWN0b3I9dmV9cmUodmUsQWUpLHZlLnBy''@;'; put 'put ''b3RvdHlwZT1udWxsPT09QWU/T2JqZWN0LmNyZWF0ZShBZSk6KGtlLnByb3RvdHlwZT1BZS5wcm90b3R5cGUsbmV3IGtlKX0pLFk9dGhpcyYmdGhpcy5fX2Fzc2lnbnx8ZnVuY3Rpb24oKXtyZXR1cm4gWT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih2ZSl7Zm9yKHZhciBBZSxrZT0xLFNlPWFy''@;'; put 'put ''Z3VtZW50cy5sZW5ndGg7a2U8U2U7a2UrKylmb3IodmFyIEllIGluIEFlPWFyZ3VtZW50c1trZV0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEFlLEllKSYmKHZlW0llXT1BZVtJZV0pO3JldHVybiB2ZX0sWS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LFc9dGhpcyYmdGhp''@;'; put 'put ''cy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHZlLEFlLGtlLFNlKXtyZXR1cm4gbmV3KGtlfHwoa2U9UHJvbWlzZSkpKGZ1bmN0aW9uKEllLFRlKXtmdW5jdGlvbiBNZSh6KXt0cnl7TyhTZS5uZXh0KHopKX1jYXRjaChlZSl7VGUoZWUpfX1mdW5jdGlvbiBoZSh6KXt0cnl7TyhTZS50aHJvdyh6KSl9''@;'; put 'put ''Y2F0Y2goZWUpe1RlKGVlKX19ZnVuY3Rpb24gTyh6KXt2YXIgZWU7ei5kb25lP0llKHoudmFsdWUpOihlZT16LnZhbHVlLGVlIGluc3RhbmNlb2Yga2U/ZWU6bmV3IGtlKGZ1bmN0aW9uKG5lKXtuZShlZSl9KSkudGhlbihNZSxoZSl9TygoU2U9U2UuYXBwbHkodmUsQWV8fFtdKSkubmV4dCgp''@;'; put 'put ''KX0pfSxOPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHZlLEFlKXt2YXIga2UsU2UsSWUsVGUsTWU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmSWVbMF0pdGhyb3cgSWVbMV07cmV0dXJuIEllWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIFRlPXtuZXh0OmhlKDAp''@;'; put 'put ''LHRocm93OmhlKDEpLHJldHVybjpoZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKFRlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLFRlO2Z1bmN0aW9uIGhlKE8pe3JldHVybiBmdW5jdGlvbih6KXtyZXR1cm4gZnVuY3Rpb24oZWUpe2lmKGtlKXRo''@;'; put 'put ''cm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO01lOyl0cnl7aWYoa2U9MSxTZSYmKEllPTImZWVbMF0/U2UucmV0dXJuOmVlWzBdP1NlLnRocm93fHwoKEllPVNlLnJldHVybikmJkllLmNhbGwoU2UpLDApOlNlLm5leHQpJiYhKEllPUll''@;'; put 'put ''LmNhbGwoU2UsZWVbMV0pKS5kb25lKXJldHVybiBJZTtzd2l0Y2goU2U9MCxJZSYmKGVlPVsyJmVlWzBdLEllLnZhbHVlXSksZWVbMF0pe2Nhc2UgMDpjYXNlIDE6SWU9ZWU7YnJlYWs7Y2FzZSA0OnJldHVybiBNZS5sYWJlbCsrLHt2YWx1ZTplZVsxXSxkb25lOiExfTtjYXNlIDU6TWUubGFi''@;'; put 'put ''ZWwrKyxTZT1lZVsxXSxlZT1bMF07Y29udGludWU7Y2FzZSA3OmVlPU1lLm9wcy5wb3AoKSxNZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoSWU9KEllPU1lLnRyeXMpLmxlbmd0aD4wJiZJZVtJZS5sZW5ndGgtMV0pfHw2IT09ZWVbMF0mJjIhPT1lZVswXSkpe01lPTA7Y29u''@;'; put 'put ''dGludWV9aWYoMz09PWVlWzBdJiYoIUllfHxlZVsxXT5JZVswXSYmZWVbMV08SWVbM10pKXtNZS5sYWJlbD1lZVsxXTticmVha31pZig2PT09ZWVbMF0mJk1lLmxhYmVsPEllWzFdKXtNZS5sYWJlbD1JZVsxXSxJZT1lZTticmVha31pZihJZSYmTWUubGFiZWw8SWVbMl0pe01lLmxhYmVsPUll''@;'; put 'put ''WzJdLE1lLm9wcy5wdXNoKGVlKTticmVha31JZVsyXSYmTWUub3BzLnBvcCgpLE1lLnRyeXMucG9wKCk7Y29udGludWV9ZWU9QWUuY2FsbCh2ZSxNZSl9Y2F0Y2gobmUpe2VlPVs2LG5lXSxTZT0wfWZpbmFsbHl7a2U9SWU9MH1pZig1JmVlWzBdKXRocm93IGVlWzFdO3JldHVybnt2YWx1ZTpl''@;'; put 'put ''ZVswXT9lZVsxXTp2b2lkIDAsZG9uZTohMH19KFtPLHpdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5TYXM5Sm9iRXhlY3V0b3I9dm9pZCAwO3ZhciB0ZT1qKDYyMzApLEs9aigxMzk1KSxKPWooNTkyOCksc2U9aig2MTE4KSxvZT1qKDc5''@;'; put 'put ''NSksY2U9ZnVuY3Rpb24odmUpe2Z1bmN0aW9uIEFlKGtlLFNlLEllLFRlLE1lKXt2YXIgaGU9dmUuY2FsbCh0aGlzLGtlLFNlKXx8dGhpcztyZXR1cm4gaGUuam9ic1BhdGg9SWUsaGUucmVxdWVzdENsaWVudD1UZSxoZS5zYXM5UmVxdWVzdENsaWVudD1uZXcgb2UuU2FzOVJlcXVlc3RDbGll''@;'; put 'put ''bnQoa2UsTWUpLGhlfXJldHVybiBhZShBZSx2ZSksQWUucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24oa2UsU2UsSWUpe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBUZSxNZSxoZSxPLHosZWUsbmU9dGhpcztyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKHgpe3N3''@;'; put 'put ''aXRjaCh4LmxhYmVsKXtjYXNlIDA6aWYoVGU9KDAsSi5pc1JlbGF0aXZlUGF0aCkoa2UpJiZJZS5hcHBMb2M/SWUuYXBwTG9jLnJlcGxhY2UoL1wvPyQvLCIvIikra2UucmVwbGFjZSgvXlwvLywiIik6a2UsTWU9IiIuY29uY2F0KEllLnNlcnZlclVybCkuY29uY2F0KHRoaXMuam9ic1BhdGgs''@;'; put 'put ''Ij8iKS5jb25jYXQoIl9wcm9ncmFtPSIrVGUpLE1lPSIiLmNvbmNhdChNZSkuY29uY2F0KEllLnVzZXJuYW1lJiZJZS5wYXNzd29yZD8iJl91c2VybmFtZT0iK0llLnVzZXJuYW1lKyImX3Bhc3N3b3JkPSIrSWUucGFzc3dvcmQ6IiIpLE1lPSIiLmNvbmNhdChNZSkuY29uY2F0KEllLmRlYnVn''@;'; put 'put ''PyImX2RlYnVnPTEzMSI6IiIpLGhlPVkoe30sdGhpcy5nZXRSZXF1ZXN0UGFyYW1zKEllKSksTz1uZXcgdGUsU2UpdHJ5e089ZGUoTyxTZSl9Y2F0Y2goUCl7cmV0dXJuWzIsUHJvbWlzZS5yZWplY3QobmV3IEsuRXJyb3JSZXNwb25zZShudWxsPT1QP3ZvaWQgMDpQLm1lc3NhZ2UsUCkpXX1l''@;'; put 'put ''bHNlIFNlPSIiO2Zvcih6IGluIGhlKWhlLmhhc093blByb3BlcnR5KHopJiZPLmFwcGVuZCh6LGhlW3pdKTtyZXR1cm5bNCx0aGlzLnNhczlSZXF1ZXN0Q2xpZW50LmxvZ2luKEllLnVzZXJuYW1lLEllLnBhc3N3b3JkLHRoaXMuam9ic1BhdGgpXTtjYXNlIDE6cmV0dXJuIHguc2VudCgpLGVl''@;'; put 'put ''PVNlJiZPYmplY3Qua2V5cyhTZSkubGVuZ3RoPyJtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0iK08uX2JvdW5kYXJ5OiJ0ZXh0L3BsYWluIixbMixuZXcgUHJvbWlzZShmdW5jdGlvbihQLFYpe3JldHVybiBuZS5zYXM5UmVxdWVzdENsaWVudC5wb3N0KE1lLE8sdm9pZCAwLGVlLHtB''@;'; put 'put ''Y2NlcHQ6IiovKiIsQ29ubmVjdGlvbjoiS2VlcC1BbGl2ZSJ9KS50aGVuKGZ1bmN0aW9uKFQpe25lLnJlcXVlc3RDbGllbnQuYXBwZW5kUmVxdWVzdChULGtlLEllLmRlYnVnKSxQKFQpfSkuY2F0Y2goZnVuY3Rpb24oVCl7dmFyIFM9VDtULnJlc3VsdCYmIiIhPT1ULnJlc3VsdD9TPVQucmVz''@;'; put 'put ''dWx0OlQubWVzc2FnZSYmKFM9VC5tZXNzYWdlKSxuZS5yZXF1ZXN0Q2xpZW50LmFwcGVuZFJlcXVlc3QoUyxrZSxJZS5kZWJ1ZyksVihuZXcgSy5FcnJvclJlc3BvbnNlKG51bGw9PVQ/dm9pZCAwOlQubWVzc2FnZSxUKSl9KX0pXX19KX0pfSxBZS5wcm90b3R5cGUuZ2V0UmVxdWVzdFBhcmFt''@;'; put 'put ''cz1mdW5jdGlvbihrZSl7dmFyIFNlPXt9O3JldHVybiBrZS5kZWJ1ZyYmKFNlLl9kZWJ1Zz0xMzEpLFNlfSxBZX0oc2UuQmFzZUpvYkV4ZWN1dG9yKTtRLlNhczlKb2JFeGVjdXRvcj1jZTt2YXIgZGU9ZnVuY3Rpb24odmUsQWUpe2Zvcih2YXIga2UgaW4gQWUpe3ZhciBTZT1rZSxJZT0oMCxK''@;'; put 'put ''LmNvbnZlcnRUb0NTVikoQWUsa2UpO2lmKCJFUlJPUjogTEFSR0UgU1RSSU5HIExFTkdUSCI9PT1JZSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBtYXggbGVuZ3RoIG9mIGEgc3RyaW5nIHZhbHVlIGluIFNBU2pzIGlzIDMyNzY1IGNoYXJhY3RlcnMuIik7dmUuYXBwZW5kKFNlLEllLHtmaWxlbmFt''@;'; put 'put ''ZToiIi5jb25jYXQoU2UsIi5jc3YiKSxjb250ZW50VHlwZToiYXBwbGljYXRpb24vY3N2In0pfXJldHVybiB2ZX19LDEwNjU6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmUsYWU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChyZT1mdW5jdGlvbihkZSx2ZSl7cmV0dXJuKHJlPU9i''@;'; put 'put ''amVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihBZSxrZSl7QWUuX19wcm90b19fPWtlfXx8ZnVuY3Rpb24oQWUsa2Upe2Zvcih2YXIgU2UgaW4ga2UpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGtlLFNlKSYm''@;'; put 'put ''KEFlW1NlXT1rZVtTZV0pfSkoZGUsdmUpfSxmdW5jdGlvbihkZSx2ZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHZlJiZudWxsIT09dmUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyh2ZSkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7''@;'; put 'put ''ZnVuY3Rpb24gQWUoKXt0aGlzLmNvbnN0cnVjdG9yPWRlfXJlKGRlLHZlKSxkZS5wcm90b3R5cGU9bnVsbD09PXZlP09iamVjdC5jcmVhdGUodmUpOihBZS5wcm90b3R5cGU9dmUucHJvdG90eXBlLG5ldyBBZSl9KSxZPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIFk9''@;'; put 'put ''T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZGUpe2Zvcih2YXIgdmUsQWU9MSxrZT1hcmd1bWVudHMubGVuZ3RoO0FlPGtlO0FlKyspZm9yKHZhciBTZSBpbiB2ZT1hcmd1bWVudHNbQWVdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2ZSxTZSkmJihkZVtTZV09dmVbU2Vd''@;'; put 'put ''KTtyZXR1cm4gZGV9LFkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxXPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihkZSx2ZSxBZSxrZSl7cmV0dXJuIG5ldyhBZXx8KEFlPVByb21pc2UpKShmdW5jdGlvbihTZSxJZSl7ZnVuY3Rpb24gVGUoTyl7dHJ5e2hlKGtlLm5leHQoTykpfWNh''@;'; put 'put ''dGNoKHope0llKHopfX1mdW5jdGlvbiBNZShPKXt0cnl7aGUoa2UudGhyb3coTykpfWNhdGNoKHope0llKHopfX1mdW5jdGlvbiBoZShPKXt2YXIgejtPLmRvbmU/U2UoTy52YWx1ZSk6KHo9Ty52YWx1ZSx6IGluc3RhbmNlb2YgQWU/ejpuZXcgQWUoZnVuY3Rpb24oZWUpe2VlKHopfSkpLnRo''@;'; put 'put ''ZW4oVGUsTWUpfWhlKChrZT1rZS5hcHBseShkZSx2ZXx8W10pKS5uZXh0KCkpfSl9LE49dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oZGUsdmUpe3ZhciBBZSxrZSxTZSxJZSxUZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZTZVswXSl0aHJvdyBTZVsxXTtyZXR1cm4g''@;'; put 'put ''U2VbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gSWU9e25leHQ6TWUoMCksdGhyb3c6TWUoMSkscmV0dXJuOk1lKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoSWVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksSWU7ZnVuY3Rpb24gTWUoaGUpe3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbihPKXtyZXR1cm4gZnVuY3Rpb24oeil7aWYoQWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7VGU7KXRyeXtpZihBZT0xLGtlJiYoU2U9MiZ6WzBdP2tlLnJldHVybjp6WzBdP2tlLnRocm93fHwoKFNlPWtl''@;'; put 'put ''LnJldHVybikmJlNlLmNhbGwoa2UpLDApOmtlLm5leHQpJiYhKFNlPVNlLmNhbGwoa2UselsxXSkpLmRvbmUpcmV0dXJuIFNlO3N3aXRjaChrZT0wLFNlJiYoej1bMiZ6WzBdLFNlLnZhbHVlXSkselswXSl7Y2FzZSAwOmNhc2UgMTpTZT16O2JyZWFrO2Nhc2UgNDpyZXR1cm4gVGUubGFiZWwr''@;'; put 'put ''Kyx7dmFsdWU6elsxXSxkb25lOiExfTtjYXNlIDU6VGUubGFiZWwrKyxrZT16WzFdLHo9WzBdO2NvbnRpbnVlO2Nhc2UgNzp6PVRlLm9wcy5wb3AoKSxUZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoU2U9KFNlPVRlLnRyeXMpLmxlbmd0aD4wJiZTZVtTZS5sZW5ndGgtMV0p''@;'; put 'put ''fHw2IT09elswXSYmMiE9PXpbMF0pKXtUZT0wO2NvbnRpbnVlfWlmKDM9PT16WzBdJiYoIVNlfHx6WzFdPlNlWzBdJiZ6WzFdPFNlWzNdKSl7VGUubGFiZWw9elsxXTticmVha31pZig2PT09elswXSYmVGUubGFiZWw8U2VbMV0pe1RlLmxhYmVsPVNlWzFdLFNlPXo7YnJlYWt9aWYoU2UmJlRl''@;'; put 'put ''LmxhYmVsPFNlWzJdKXtUZS5sYWJlbD1TZVsyXSxUZS5vcHMucHVzaCh6KTticmVha31TZVsyXSYmVGUub3BzLnBvcCgpLFRlLnRyeXMucG9wKCk7Y29udGludWV9ej12ZS5jYWxsKGRlLFRlKX1jYXRjaChlZSl7ej1bNixlZV0sa2U9MH1maW5hbGx5e0FlPVNlPTB9aWYoNSZ6WzBdKXRocm93''@;'; put 'put ''IHpbMV07cmV0dXJue3ZhbHVlOnpbMF0/elsxXTp2b2lkIDAsZG9uZTohMH19KFtoZSxPXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuU2FzanNKb2JFeGVjdXRvcj12b2lkIDA7dmFyIHRlPWooNjIzMCksSz1qKDM5MDApLEo9aigxMzk1''@;'; put 'put ''KSxzZT1qKDQwMzcpLG9lPWooNTkyOCksY2U9ZnVuY3Rpb24oZGUpe2Z1bmN0aW9uIHZlKEFlLGtlLFNlKXt2YXIgSWU9ZGUuY2FsbCh0aGlzLEFlLEsuU2VydmVyVHlwZS5TYXNqcyl8fHRoaXM7cmV0dXJuIEllLmpvYnNQYXRoPWtlLEllLnJlcXVlc3RDbGllbnQ9U2UsSWV9cmV0dXJuIGFl''@;'; put 'put ''KHZlLGRlKSx2ZS5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbihBZSxrZSxTZSxJZSxUZSxNZSl7cmV0dXJuIHZvaWQgMD09PU1lJiYoTWU9W10pLFcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGhlLE8seixlZSxuZSx4LFAsVD10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rp''@;'; put 'put ''b24oUyl7aWYoaGU9SWUsTz0oMCxvZS5pc1JlbGF0aXZlUGF0aCkoQWUpJiZTZS5hcHBMb2M/U2UuYXBwTG9jLnJlcGxhY2UoL1wvPyQvLCIvIikrQWUucmVwbGFjZSgvXlwvLywiIik6QWUsej0iIi5jb25jYXQoU2Uuc2VydmVyVXJsKS5jb25jYXQodGhpcy5qb2JzUGF0aCwiLz8iKS5jb25j''@;'; put 'put ''YXQoIl9wcm9ncmFtPSIrTyksZWU9WSh7fSx0aGlzLmdldFJlcXVlc3RQYXJhbXMoU2UpKSxuZT0idW5kZWZpbmVkIj09dHlwZW9mIEZvcm1EYXRhP25ldyB0ZTpuZXcgRm9ybURhdGEsa2UpdHJ5e25lPSgwLHNlLmdlbmVyYXRlRmlsZVVwbG9hZEZvcm0pKG5lLGtlKX1jYXRjaChGKXtyZXR1''@;'; put 'put ''cm5bMixQcm9taXNlLnJlamVjdChuZXcgSi5FcnJvclJlc3BvbnNlKG51bGw9PUY/dm9pZCAwOkYubWVzc2FnZSxGKSldfWZvcih4IGluIGVlKWVlLmhhc093blByb3BlcnR5KHgpJiZuZS5hcHBlbmQoeCxlZVt4XSk7cmV0dXJuIFA9bmUgaW5zdGFuY2VvZiB0ZSYmInVuZGVmaW5lZCI9PXR5''@;'; put 'put ''cGVvZiBGb3JtRGF0YT8ibXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9Ii5jb25jYXQobmUuZ2V0Qm91bmRhcnkoKSk6dm9pZCAwLFsyLG5ldyBQcm9taXNlKGZ1bmN0aW9uKEYseWUpe1QucmVxdWVzdENsaWVudC5wb3N0KHosbmUsbnVsbD09VGU/dm9pZCAwOlRlLmFjY2Vzc190b2tl''@;'; put 'put ''bixQKS50aGVuKGZ1bmN0aW9uKENlKXtyZXR1cm4gVyhULHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgRGU7cmV0dXJuIE4odGhpcyxmdW5jdGlvbihQZSl7aWYoT2JqZWN0LmVudHJpZXMoQ2UucmVzdWx0KS5sZW5ndGg8MSl0aHJvdyBuZXcgSi5Kb2JFeGVjdXRpb25FcnJvcigwLCJO''@;'; put 'put ''byB3ZWJvdXQgd2FzIHJldHVybmVkIGJ5IGpvYiAiLmNvbmNhdChPLCIuICBQbGVhc2UgY2hlY2sgdGhlIFNBUyBsb2cgZm9yIG1vcmUgaW5mby4iKSxDZS5sb2cpO3JldHVybiB0aGlzLnJlcXVlc3RDbGllbnQuYXBwZW5kUmVxdWVzdChDZSxBZSxTZS5kZWJ1ZyksRGU9KDAsb2UuYXBwZW5k''@;'; put 'put ''RXh0cmFSZXNwb25zZUF0dHJpYnV0ZXMpKENlLE1lKSxGKERlKSxbMl19KX0pfSkuY2F0Y2goZnVuY3Rpb24oQ2Upe3JldHVybiBXKFQsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBEZT10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oUGUpe3N3aXRjaChQZS5sYWJlbCl7Y2FzZSAw''@;'; put 'put ''OnJldHVybiBDZSBpbnN0YW5jZW9mIEouSm9iRXhlY3V0aW9uRXJyb3ImJih0aGlzLnJlcXVlc3RDbGllbnQuYXBwZW5kUmVxdWVzdChDZSxBZSxTZS5kZWJ1ZykseWUobmV3IEouRXJyb3JSZXNwb25zZShudWxsPT1DZT92b2lkIDA6Q2UubWVzc2FnZSxDZSkpKSxDZSBpbnN0YW5jZW9mIEou''@;'; put 'put ''TG9naW5SZXF1aXJlZEVycm9yPyhJZXx8eWUobmV3IEouRXJyb3JSZXNwb25zZSgiUmVxdWVzdCBpcyBub3QgYXV0aGVudGljYXRlZC4gTWFrZSBzdXJlIC5lbnYgZmlsZSBleGlzdHMgd2l0aCB2YWxpZCBjcmVkZW50aWFscy4iLENlKSksdGhpcy5hcHBlbmRXYWl0aW5nUmVxdWVzdChmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiBEZS5leGVjdXRlKEFlLGtlLFNlLEllLFRlLE1lKS50aGVuKGZ1bmN0aW9uKFFlKXtGKFFlKX0sZnVuY3Rpb24oUWUpe3llKFFlKX0pfSksaGU/WzQsaGUoKV06WzMsMl0pOlszLDNdO2Nhc2UgMTpQZS5zZW50KCksUGUubGFiZWw9MjtjYXNlIDI6cmV0dXJuWzMsNF07''@;'; put 'put ''Y2FzZSAzOnllKG5ldyBKLkVycm9yUmVzcG9uc2UobnVsbD09Q2U/dm9pZCAwOkNlLm1lc3NhZ2UsQ2UpKSxQZS5sYWJlbD00O2Nhc2UgNDpyZXR1cm5bMl19fSl9KX0pfSldfSl9KX0sdmV9KGooNjExOCkuQmFzZUpvYkV4ZWN1dG9yKTtRLlNhc2pzSm9iRXhlY3V0b3I9Y2V9LDYwODQ6ZnVu''@;'; put 'put ''Y3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmUsYWU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChyZT1mdW5jdGlvbihrZSxTZSl7cmV0dXJuKHJlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihJZSxUZSl7SWUuX19w''@;'; put 'put ''cm90b19fPVRlfXx8ZnVuY3Rpb24oSWUsVGUpe2Zvcih2YXIgTWUgaW4gVGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFRlLE1lKSYmKEllW01lXT1UZVtNZV0pfSkoa2UsU2UpfSxmdW5jdGlvbihrZSxTZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFNlJiZudWxsIT09''@;'; put 'put ''U2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhTZSkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gSWUoKXt0aGlzLmNvbnN0cnVjdG9yPWtlfXJlKGtlLFNlKSxrZS5wcm90b3R5cGU9bnVsbD09PVNlP09iamVjdC5j''@;'; put 'put ''cmVhdGUoU2UpOihJZS5wcm90b3R5cGU9U2UucHJvdG90eXBlLG5ldyBJZSl9KSxZPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIFk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oa2Upe2Zvcih2YXIgU2UsSWU9MSxUZT1hcmd1bWVudHMubGVuZ3RoO0llPFRlO0llKysp''@;'; put 'put ''Zm9yKHZhciBNZSBpbiBTZT1hcmd1bWVudHNbSWVdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChTZSxNZSkmJihrZVtNZV09U2VbTWVdKTtyZXR1cm4ga2V9LFkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxXPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihrZSxT''@;'; put 'put ''ZSxJZSxUZSl7cmV0dXJuIG5ldyhJZXx8KEllPVByb21pc2UpKShmdW5jdGlvbihNZSxoZSl7ZnVuY3Rpb24gTyhuZSl7dHJ5e2VlKFRlLm5leHQobmUpKX1jYXRjaCh4KXtoZSh4KX19ZnVuY3Rpb24geihuZSl7dHJ5e2VlKFRlLnRocm93KG5lKSl9Y2F0Y2goeCl7aGUoeCl9fWZ1bmN0aW9u''@;'; put 'put ''IGVlKG5lKXt2YXIgeDtuZS5kb25lP01lKG5lLnZhbHVlKTooeD1uZS52YWx1ZSx4IGluc3RhbmNlb2YgSWU/eDpuZXcgSWUoZnVuY3Rpb24oUCl7UCh4KX0pKS50aGVuKE8seil9ZWUoKFRlPVRlLmFwcGx5KGtlLFNlfHxbXSkpLm5leHQoKSl9KX0sTj10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9y''@;'; put 'put ''fHxmdW5jdGlvbihrZSxTZSl7dmFyIEllLFRlLE1lLGhlLE89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmTWVbMF0pdGhyb3cgTWVbMV07cmV0dXJuIE1lWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGhlPXtuZXh0OnooMCksdGhyb3c6eigxKSxyZXR1cm46eigyKX0sImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIFN5bWJvbCYmKGhlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGhlO2Z1bmN0aW9uIHooZWUpe3JldHVybiBmdW5jdGlvbihuZSl7cmV0dXJuIGZ1bmN0aW9uKHgpe2lmKEllKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBh''@;'; put 'put ''bHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO087KXRyeXtpZihJZT0xLFRlJiYoTWU9MiZ4WzBdP1RlLnJldHVybjp4WzBdP1RlLnRocm93fHwoKE1lPVRlLnJldHVybikmJk1lLmNhbGwoVGUpLDApOlRlLm5leHQpJiYhKE1lPU1lLmNhbGwoVGUseFsxXSkpLmRvbmUpcmV0dXJuIE1lO3N3aXRj''@;'; put 'put ''aChUZT0wLE1lJiYoeD1bMiZ4WzBdLE1lLnZhbHVlXSkseFswXSl7Y2FzZSAwOmNhc2UgMTpNZT14O2JyZWFrO2Nhc2UgNDpyZXR1cm4gTy5sYWJlbCsrLHt2YWx1ZTp4WzFdLGRvbmU6ITF9O2Nhc2UgNTpPLmxhYmVsKyssVGU9eFsxXSx4PVswXTtjb250aW51ZTtjYXNlIDc6eD1PLm9wcy5w''@;'; put 'put ''b3AoKSxPLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChNZT0oTWU9Ty50cnlzKS5sZW5ndGg+MCYmTWVbTWUubGVuZ3RoLTFdKXx8NiE9PXhbMF0mJjIhPT14WzBdKSl7Tz0wO2NvbnRpbnVlfWlmKDM9PT14WzBdJiYoIU1lfHx4WzFdPk1lWzBdJiZ4WzFdPE1lWzNdKSl7Ty5s''@;'; put 'put ''YWJlbD14WzFdO2JyZWFrfWlmKDY9PT14WzBdJiZPLmxhYmVsPE1lWzFdKXtPLmxhYmVsPU1lWzFdLE1lPXg7YnJlYWt9aWYoTWUmJk8ubGFiZWw8TWVbMl0pe08ubGFiZWw9TWVbMl0sTy5vcHMucHVzaCh4KTticmVha31NZVsyXSYmTy5vcHMucG9wKCksTy50cnlzLnBvcCgpO2NvbnRpbnVl''@;'; put 'put ''fXg9U2UuY2FsbChrZSxPKX1jYXRjaChQKXt4PVs2LFBdLFRlPTB9ZmluYWxseXtJZT1NZT0wfWlmKDUmeFswXSl0aHJvdyB4WzFdO3JldHVybnt2YWx1ZTp4WzBdP3hbMV06dm9pZCAwLGRvbmU6ITB9fShbZWUsbmVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIs''@;'; put 'put ''e3ZhbHVlOiEwfSksUS5XZWJKb2JFeGVjdXRvcj12b2lkIDA7dmFyIHRlPWooNjIzMCksSz1qKDM5MDApLEo9aigxMzk1KSxzZT1qKDQwMzcpLG9lPWooMjE3MCksY2U9aig1OTI4KSxkZT1qKDYxMTgpLHZlPWooMjgxMyksQWU9ZnVuY3Rpb24oa2Upe2Z1bmN0aW9uIFNlKEllLFRlLE1lLGhl''@;'; put 'put ''LE8pe3ZhciB6PWtlLmNhbGwodGhpcyxJZSxUZSl8fHRoaXM7cmV0dXJuIHouam9ic1BhdGg9TWUsei5yZXF1ZXN0Q2xpZW50PWhlLHouc2FzVml5YUFwaUNsaWVudD1PLHp9cmV0dXJuIGFlKFNlLGtlKSxTZS5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbihJZSxUZSxNZSxoZSxPLHope3Jl''@;'; put 'put ''dHVybiB2b2lkIDA9PT16JiYoej1bXSksVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZWUsbmUseCxQLFYsVCxTLEYseWUsRGUsUGUsUWUsZ3Q9dGhpcztyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKHd0KXtzd2l0Y2god3QubGFiZWwpe2Nhc2UgMDppZihlZT1oZSxuZT0oMCxj''@;'; put 'put ''ZS5pc1JlbGF0aXZlUGF0aCkoSWUpJiZNZS5hcHBMb2M/TWUuYXBwTG9jLnJlcGxhY2UoL1wvPyQvLCIvIikrSWUucmVwbGFjZSgvXlwvLywiIik6SWUseD0iIi5jb25jYXQoTWUuc2VydmVyVXJsKS5jb25jYXQodGhpcy5qb2JzUGF0aCwiLz8iKS5jb25jYXQoIl9wcm9ncmFtPSIrbmUpLE1l''@;'; put 'put ''LnNlcnZlclR5cGUhPT1LLlNlcnZlclR5cGUuU2FzVml5YSlyZXR1cm5bMyw1XTtQPXZvaWQgMCx3dC5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gd3QudHJ5cy5wdXNoKFsxLDMsLDRdKSxbNCx0aGlzLmdldEpvYlVyaShJZSldO2Nhc2UgMjpyZXR1cm4gUD13dC5zZW50KCksWzMsNF07Y2FzZSAz''@;'; put 'put ''OnJldHVybiBWPXd0LnNlbnQoKSxbMixuZXcgUHJvbWlzZShmdW5jdGlvbihtdCx2dCl7cmV0dXJuIFcoZ3Qsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBBdD10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oaHQpe3N3aXRjaChodC5sYWJlbCl7Y2FzZSAwOnJldHVybiBWIGluc3Rh''@;'; put 'put ''bmNlb2YgSi5Mb2dpblJlcXVpcmVkRXJyb3I/KHRoaXMuYXBwZW5kV2FpdGluZ1JlcXVlc3QoZnVuY3Rpb24oKXtyZXR1cm4gQXQuZXhlY3V0ZShJZSxUZSxNZSxoZSxPLHopLnRoZW4oZnVuY3Rpb24oQnQpe210KEJ0KX0sZnVuY3Rpb24oQnQpe3Z0KEJ0KX0pfSksZWU/WzQsZWUoKV06WzMs''@;'; put 'put ''Ml0pOlszLDNdO2Nhc2UgMTpodC5zZW50KCksaHQubGFiZWw9MjtjYXNlIDI6cmV0dXJuWzMsNF07Y2FzZSAzOnZ0KG5ldyBKLkVycm9yUmVzcG9uc2UobnVsbD09Vj92b2lkIDA6Vi5tZXNzYWdlLFYpKSxodC5sYWJlbD00O2Nhc2UgNDpyZXR1cm5bMl19fSl9KX0pXTtjYXNlIDQ6eCs9UC5s''@;'; put 'put ''ZW5ndGg+MD8iJl9qb2I9IitQOiIiLFAubGVuZ3RoPjAmJih4PSh4Kz0iJl9qb2I9IitQKS5yZXBsYWNlKCJfcHJvZ3JhbT0iLCJfX3Byb2dyYW09IikpLHgrPU1lLmNvbnRleHROYW1lJiYhL1xzLy50ZXN0KE1lLmNvbnRleHROYW1lKT8iJl9jb250ZXh0bmFtZT0iLmNvbmNhdChNZS5jb250''@;'; put 'put ''ZXh0TmFtZSk6IiIsd3QubGFiZWw9NTtjYXNlIDU6aWYoVD1ZKHt9LHRoaXMuZ2V0UmVxdWVzdFBhcmFtcyhNZSkpLFM9InVuZGVmaW5lZCI9PXR5cGVvZiBGb3JtRGF0YT9uZXcgdGU6bmV3IEZvcm1EYXRhLFRlKWlmKEY9SlNPTi5zdHJpbmdpZnkoVGUpLE1lLnNlcnZlclR5cGU9PT1LLlNl''@;'; put 'put ''cnZlclR5cGUuU2FzOXx8Ri5sZW5ndGg+NWU1fHxGLmluY2x1ZGVzKCI7IikpdHJ5e1M9KDAsc2UuZ2VuZXJhdGVGaWxlVXBsb2FkRm9ybSkoUyxUZSl9Y2F0Y2gobXQpe3JldHVyblsyLFByb21pc2UucmVqZWN0KG5ldyBKLkVycm9yUmVzcG9uc2UobnVsbD09bXQ/dm9pZCAwOm10Lm1lc3Nh''@;'; put 'put ''Z2UsbXQpKV19ZWxzZSB0cnl7eWU9KDAsb2UuZ2VuZXJhdGVUYWJsZVVwbG9hZEZvcm0pKFMsVGUpLERlPXllLnJlcXVlc3RQYXJhbXMsUz15ZS5mb3JtRGF0YSxUPVkoWSh7fSxUKSxEZSl9Y2F0Y2gobXQpe3JldHVyblsyLFByb21pc2UucmVqZWN0KG5ldyBKLkVycm9yUmVzcG9uc2UobnVs''@;'; put 'put ''bD09bXQ/dm9pZCAwOm10Lm1lc3NhZ2UsbXQpKV19Zm9yKFBlIGluIFQpVC5oYXNPd25Qcm9wZXJ0eShQZSkmJlMuYXBwZW5kKFBlLFRbUGVdKTtyZXR1cm4gUWU9UyBpbnN0YW5jZW9mIHRlJiYidW5kZWZpbmVkIj09dHlwZW9mIEZvcm1EYXRhPyJtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3Vu''@;'; put 'put ''ZGFyeT0iLmNvbmNhdChTLmdldEJvdW5kYXJ5KCkpOnZvaWQgMCxbMixuZXcgUHJvbWlzZShmdW5jdGlvbihtdCx2dCl7Z3QucmVxdWVzdENsaWVudC5wb3N0KHgsUyxudWxsPT1PP3ZvaWQgMDpPLmFjY2Vzc190b2tlbixRZSkudGhlbihmdW5jdGlvbihBdCl7cmV0dXJuIFcoZ3Qsdm9pZCAw''@;'; put 'put ''LHZvaWQgMCxmdW5jdGlvbigpe3ZhciBodCxCdDtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKG9uKXtzd2l0Y2gob24ubGFiZWwpe2Nhc2UgMDppZih0aGlzLnJlcXVlc3RDbGllbnQuYXBwZW5kUmVxdWVzdChBdCxJZSxNZS5kZWJ1ZyksaHQ9QXQucmVzdWx0LCFNZS5kZWJ1ZylyZXR1cm5bMyw0''@;'; put 'put ''XTtzd2l0Y2godGhpcy5zZXJ2ZXJUeXBlKXtjYXNlIEsuU2VydmVyVHlwZS5TYXNWaXlhOnJldHVyblszLDFdO2Nhc2UgSy5TZXJ2ZXJUeXBlLlNhczk6cmV0dXJuWzMsM119cmV0dXJuWzMsNF07Y2FzZSAxOnJldHVybls0LCgwLGNlLnBhcnNlU2FzVml5YURlYnVnUmVzcG9uc2UpKEF0LnJl''@;'; put 'put ''c3VsdCx0aGlzLnJlcXVlc3RDbGllbnQsdGhpcy5zZXJ2ZXJVcmwpXTtjYXNlIDI6cmV0dXJuIGh0PW9uLnNlbnQoKSxbMyw0XTtjYXNlIDM6cmV0dXJuIGh0PSJzdHJpbmciPT10eXBlb2YgQXQucmVzdWx0PygwLHZlLnBhcnNlV2Vib3V0UmVzcG9uc2UpKEF0LnJlc3VsdCx4KTpBdC5yZXN1''@;'; put 'put ''bHQsWzMsNF07Y2FzZSA0OnJldHVybiBCdD0oMCxjZS5hcHBlbmRFeHRyYVJlc3BvbnNlQXR0cmlidXRlcykoe3Jlc3VsdDpodCxsb2c6QXQubG9nfSx6KSxtdChCdCksWzJdfX0pfSl9KS5jYXRjaChmdW5jdGlvbihBdCl7cmV0dXJuIFcoZ3Qsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3Zh''@;'; put 'put ''ciBodD10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oQnQpe3N3aXRjaChCdC5sYWJlbCl7Y2FzZSAwOnJldHVybiBBdCBpbnN0YW5jZW9mIEouSm9iRXhlY3V0aW9uRXJyb3ImJih0aGlzLnJlcXVlc3RDbGllbnQuYXBwZW5kUmVxdWVzdChBdCxJZSxNZS5kZWJ1ZyksdnQobmV3IEouRXJy''@;'; put 'put ''b3JSZXNwb25zZShudWxsPT1BdD92b2lkIDA6QXQubWVzc2FnZSxBdCkpKSxBdCBpbnN0YW5jZW9mIEouTG9naW5SZXF1aXJlZEVycm9yPyhoZXx8dnQobmV3IEouRXJyb3JSZXNwb25zZSgiUmVxdWVzdCBpcyBub3QgYXV0aGVudGljYXRlZC4gTWFrZSBzdXJlIC5lbnYgZmlsZSBleGlzdHMg''@;'; put 'put ''d2l0aCB2YWxpZCBjcmVkZW50aWFscy4iLEF0KSksdGhpcy5hcHBlbmRXYWl0aW5nUmVxdWVzdChmdW5jdGlvbigpe3JldHVybiBodC5leGVjdXRlKEllLFRlLE1lLGhlLE8seikudGhlbihmdW5jdGlvbihvbil7bXQob24pfSxmdW5jdGlvbihvbil7dnQob24pfSl9KSxlZT9bNCxlZSgpXTpb''@;'; put 'put ''MywyXSk6WzMsM107Y2FzZSAxOkJ0LnNlbnQoKSxCdC5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bMyw0XTtjYXNlIDM6dnQobmV3IEouRXJyb3JSZXNwb25zZShudWxsPT1BdD92b2lkIDA6QXQubWVzc2FnZSxBdCkpLEJ0LmxhYmVsPTQ7Y2FzZSA0OnJldHVyblsyXX19KX0pfSl9KV19fSl9KX0s''@;'; put 'put ''U2UucHJvdG90eXBlLmdldEpvYlVyaT1mdW5jdGlvbihJZSl7cmV0dXJuIFcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFRlLE1lLGhlLE8seixlZTtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKG5lKXtzd2l0Y2gobmUubGFiZWwpe2Nhc2UgMDppZighdGhpcy5zYXNWaXlhQXBp''@;'; put 'put ''Q2xpZW50KXJldHVyblsyLCIiXTtpZihUZT0iIiwoMCxjZS5pc1JlbGF0aXZlUGF0aCkoSWUpPyhPPUllLnNwbGl0KCIvIiksTWU9Ty5sZW5ndGg+MT9PWzBdOiIiLGhlPU8ubGVuZ3RoPjE/T1sxXToiIik6KE89SWUuc3BsaXQoIi8iKSxoZT1PLnBvcCgpfHwiIixNZT1PLmpvaW4oIi8iKSks''@;'; put 'put ''IWhlKXRocm93IG5ldyBFcnJvcigiSm9iIG5hbWUgaXMgZW1wdHksIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVybls0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5nZXRKb2JzSW5Gb2xkZXIoTWUpXTtjYXNlIDE6cmV0dXJuKHo9bmUuc2VudCgpKSYmKGVlPXouZmluZChmdW5jdGlvbih4KXty''@;'; put 'put ''ZXR1cm4geC5uYW1lPT09aGUmJiJqb2JEZWZpbml0aW9uIj09PXguY29udGVudFR5cGV9KSkmJihUZT1lZS51cmkpLFsyLFRlXX19KX0pfSxTZX0oZGUuQmFzZUpvYkV4ZWN1dG9yKTtRLldlYkpvYkV4ZWN1dG9yPUFlfSw4MjE3OmZ1bmN0aW9uKFUsUSxqKXsidXNlIHN0cmljdCI7dmFyIHJl''@;'; put 'put ''PXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihZLFcsTix0ZSl7dm9pZCAwPT09dGUmJih0ZT1OKTt2YXIgSz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFcsTik7SyYmISgiZ2V0ImluIEs/IVcuX19lc01vZHVsZTpLLndyaXRhYmxl''@;'; put 'put ''fHxLLmNvbmZpZ3VyYWJsZSl8fChLPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBXW05dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShZLHRlLEspfTpmdW5jdGlvbihZLFcsTix0ZSl7dm9pZCAwPT09dGUmJih0ZT1OKSxZW3RlXT1XW05dfSksYWU9dGhpcyYmdGhpcy5f''@;'; put 'put ''X2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKFksVyl7Zm9yKHZhciBOIGluIFkpImRlZmF1bHQiPT09Tnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFcsTil8fHJlKFcsWSxOKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGFlKGoo''@;'; put 'put ''MTU3MCksUSksYWUoaigzNDkxKSxRKSxhZShqKDQ0NDYpLFEpLGFlKGooNjExOCksUSksYWUoaigyNjkzKSxRKSxhZShqKDYwODQpLFEpLGFlKGooMTA2NSksUSl9LDQ1ODg6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig0MTU1KSxhZT1qKDUxMDgpLFk9dGhpcyYmdGhp''@;'; put 'put ''cy5fX2Fzc2lnbnx8ZnVuY3Rpb24oKXtyZXR1cm4gWT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihTZSl7Zm9yKHZhciBJZSxUZT0xLE1lPWFyZ3VtZW50cy5sZW5ndGg7VGU8TWU7VGUrKylmb3IodmFyIGhlIGluIEllPWFyZ3VtZW50c1tUZV0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w''@;'; put 'put ''ZXJ0eS5jYWxsKEllLGhlKSYmKFNlW2hlXT1JZVtoZV0pO3JldHVybiBTZX0sWS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LFc9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKFNlLEllLFRlLE1lKXtyZXR1cm4gbmV3KFRlfHwoVGU9UHJvbWlzZSkpKGZ1bmN0aW9uKGhlLE8pe2Z1bmN0''@;'; put 'put ''aW9uIHooeCl7dHJ5e25lKE1lLm5leHQoeCkpfWNhdGNoKFApe08oUCl9fWZ1bmN0aW9uIGVlKHgpe3RyeXtuZShNZS50aHJvdyh4KSl9Y2F0Y2goUCl7TyhQKX19ZnVuY3Rpb24gbmUoeCl7dmFyIFA7eC5kb25lP2hlKHgudmFsdWUpOihQPXgudmFsdWUsUCBpbnN0YW5jZW9mIFRlP1A6bmV3''@;'; put 'put ''IFRlKGZ1bmN0aW9uKFYpe1YoUCl9KSkudGhlbih6LGVlKX1uZSgoTWU9TWUuYXBwbHkoU2UsSWV8fFtdKSkubmV4dCgpKX0pfSxOPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKFNlLEllKXt2YXIgVGUsTWUsaGUsTyx6PXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmhl''@;'; put 'put ''WzBdKXRocm93IGhlWzFdO3JldHVybiBoZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBPPXtuZXh0OmVlKDApLHRocm93OmVlKDEpLHJldHVybjplZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKE9bU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSks''@;'; put 'put ''TztmdW5jdGlvbiBlZShuZSl7cmV0dXJuIGZ1bmN0aW9uKHgpe3JldHVybiBmdW5jdGlvbihQKXtpZihUZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDt6Oyl0cnl7aWYoVGU9MSxNZSYmKGhlPTImUFswXT9NZS5yZXR1cm46UFsw''@;'; put 'put ''XT9NZS50aHJvd3x8KChoZT1NZS5yZXR1cm4pJiZoZS5jYWxsKE1lKSwwKTpNZS5uZXh0KSYmIShoZT1oZS5jYWxsKE1lLFBbMV0pKS5kb25lKXJldHVybiBoZTtzd2l0Y2goTWU9MCxoZSYmKFA9WzImUFswXSxoZS52YWx1ZV0pLFBbMF0pe2Nhc2UgMDpjYXNlIDE6aGU9UDticmVhaztjYXNl''@;'; put 'put ''IDQ6cmV0dXJuIHoubGFiZWwrKyx7dmFsdWU6UFsxXSxkb25lOiExfTtjYXNlIDU6ei5sYWJlbCsrLE1lPVBbMV0sUD1bMF07Y29udGludWU7Y2FzZSA3OlA9ei5vcHMucG9wKCksei50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoaGU9KGhlPXoudHJ5cykubGVuZ3RoPjAmJmhl''@;'; put 'put ''W2hlLmxlbmd0aC0xXSl8fDYhPT1QWzBdJiYyIT09UFswXSkpe3o9MDtjb250aW51ZX1pZigzPT09UFswXSYmKCFoZXx8UFsxXT5oZVswXSYmUFsxXTxoZVszXSkpe3oubGFiZWw9UFsxXTticmVha31pZig2PT09UFswXSYmei5sYWJlbDxoZVsxXSl7ei5sYWJlbD1oZVsxXSxoZT1QO2JyZWFr''@;'; put 'put ''fWlmKGhlJiZ6LmxhYmVsPGhlWzJdKXt6LmxhYmVsPWhlWzJdLHoub3BzLnB1c2goUCk7YnJlYWt9aGVbMl0mJnoub3BzLnBvcCgpLHoudHJ5cy5wb3AoKTtjb250aW51ZX1QPUllLmNhbGwoU2Useil9Y2F0Y2goVil7UD1bNixWXSxNZT0wfWZpbmFsbHl7VGU9aGU9MH1pZig1JlBbMF0pdGhy''@;'; put 'put ''b3cgUFsxXTtyZXR1cm57dmFsdWU6UFswXT9QWzFdOnZvaWQgMCxkb25lOiEwfX0oW25lLHhdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS50aHJvd0lmRXJyb3I9US5SZXF1ZXN0Q2xpZW50PXZvaWQgMDt2YXIgdGU9aig4MzczKSxLPWoo''@;'; put 'put ''MTUyNyksSj1qKDEzOTUpLHNlPWooMjgxMyksb2U9aig5Nzc4KSxjZT1qKDk1MjYpLGRlPWooNTkyOCksdmU9aigxMDA1KSxBZT1mdW5jdGlvbigpe2Z1bmN0aW9uIFNlKEllLFRlLE1lKXt2YXIgaGU9dGhpczt0aGlzLmJhc2VVcmw9SWUsdGhpcy5yZXF1ZXN0cz1bXSx0aGlzLnJlcXVlc3Rz''@;'; put 'put ''TGltaXQ9MTAsdGhpcy5jc3JmVG9rZW49e2hlYWRlck5hbWU6IiIsdmFsdWU6IiJ9LHRoaXMuZ2V0UmVxdWVzdHM9ZnVuY3Rpb24oKXtyZXR1cm4gaGUucmVxdWVzdHN9LHRoaXMuY2xlYXJSZXF1ZXN0cz1mdW5jdGlvbigpe2hlLnJlcXVlc3RzPVtdfSx0aGlzLmF1dGhvcml6ZT1mdW5jdGlv''@;'; put 'put ''bihPKXtyZXR1cm4gVyhoZSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHosZWUsbmUseCxQLFYsVCxTLEYseWUsQ2UsRGU7cmV0dXJuIE4odGhpcyxmdW5jdGlvbihQZSl7c3dpdGNoKFBlLmxhYmVsKXtjYXNlIDA6Zm9yKGVlPXt9LG5lPU8uc3BsaXQoIjxib2R5PiIpWzFdLnNwbGl0''@;'; put 'put ''KCI8L2JvZHk+IilbMF0sKHg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD1uZSxQPXgucXVlcnlTZWxlY3RvcigiI2FwcGxpY2F0aW9uX2F1dGhvcml6YXRpb24iKSx6PVA/dGhpcy5iYXNlVXJsK1AuZ2V0QXR0cmlidXRlKCJhY3Rpb24iKTpudWxsLFY9bnVsbD09''@;'; put 'put ''UD92b2lkIDA6UC5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dCIpLFQ9MCxTPVY7VDxTLmxlbmd0aDtUKyspInVzZXJfb2F1dGhfYXBwcm92YWwiPT09KEY9U1tUXSkubmFtZSYmKEYudmFsdWU9InRydWUiKSxlZVtGLm5hbWVdPUYudmFsdWU7Zm9yKERlIGluKHllPU9iamVjdC5rZXlzKGVlKS5m''@;'; put 'put ''aW5kKGZ1bmN0aW9uKFFlKXtyZXR1cm4gbnVsbD09UWU/dm9pZCAwOlFlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoImNzcmYiKX0pKSYmKHRoaXMuY3NyZlRva2VuLnZhbHVlPWVlW3llXSx0aGlzLmNzcmZUb2tlbi5oZWFkZXJOYW1lPXRoaXMuY3NyZlRva2VuLmhlYWRlck5hbWV8fCJ4LWNz''@;'; put 'put ''cmYtdG9rZW4iKSxDZT1uZXcgRm9ybURhdGEsZWUpZWUuaGFzT3duUHJvcGVydHkoRGUpJiZDZS5hcHBlbmQoRGUsZWVbRGVdKTtpZigheil0aHJvdyBuZXcgRXJyb3IoIkF1dGggRm9ybSBVUkwgaXMgbnVsbCBvciB1bmRlZmluZWQuIik7cmV0dXJuWzQsdGhpcy5odHRwQ2xpZW50LnBvc3Qo''@;'; put 'put ''eixDZSx7cmVzcG9uc2VUeXBlOiJ0ZXh0IixoZWFkZXJzOntBY2NlcHQ6IiovKiIsIkNvbnRlbnQtVHlwZSI6InRleHQvcGxhaW4ifX0pLnRoZW4oZnVuY3Rpb24oUWUpe3JldHVybiBRZS5kYXRhfSkuY2F0Y2goZnVuY3Rpb24oUWUpeyhyZS5sb2dnZXJ8fGFlKS5lcnJvcihRZSl9KV07Y2Fz''@;'; put 'put ''ZSAxOnJldHVyblsyLFBlLnNlbnQoKV19fSl9KX0sdGhpcy5nZXRIZWFkZXJzPWZ1bmN0aW9uKE8seil7dmFyIGVlPXt9O3JldHVybiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiIT09eiYmKGVlWyJDb250ZW50LVR5cGUiXT16KSxlZS5BY2NlcHQ9ImFwcGxpY2F0aW9uL2pz''@;'; put 'put ''b24iPT09ej8iYXBwbGljYXRpb24vanNvbiI6IiovKiIsTyYmKGVlLkF1dGhvcml6YXRpb249IkJlYXJlciAiLmNvbmNhdChPKSksaGUuY3NyZlRva2VuLmhlYWRlck5hbWUmJmhlLmNzcmZUb2tlbi52YWx1ZSYmKGVlW2hlLmNzcmZUb2tlbi5oZWFkZXJOYW1lXT1oZS5jc3JmVG9rZW4udmFs''@;'; put 'put ''dWUpLGVlfSx0aGlzLnBhcnNlQW5kU2V0RmlsZVVwbG9hZENzcmZUb2tlbj1mdW5jdGlvbihPKXt2YXIgej1oZS5wYXJzZUNzcmZUb2tlbihPKTt6JiYoaGUuZmlsZVVwbG9hZENzcmZUb2tlbj16KX0sdGhpcy5wYXJzZUFuZFNldENzcmZUb2tlbj1mdW5jdGlvbihPKXt2YXIgej1oZS5wYXJz''@;'; put 'put ''ZUNzcmZUb2tlbihPKTt6JiYoaGUuY3NyZlRva2VuPXopfSx0aGlzLnBhcnNlQ3NyZlRva2VuPWZ1bmN0aW9uKE8pe3ZhciB6LGVlPW51bGw9PT0oej1PLmhlYWRlcnNbIngtY3NyZi1oZWFkZXIiXSl8fHZvaWQgMD09PXo/dm9pZCAwOnoudG9Mb3dlckNhc2UoKTtpZihlZSlyZXR1cm57aGVh''@;'; put 'put ''ZGVyTmFtZTplZSx2YWx1ZTpPLmhlYWRlcnNbZWVdfHwiIn19LHRoaXMuaGFuZGxlRXJyb3I9ZnVuY3Rpb24oTyx6LGVlKXtyZXR1cm4gdm9pZCAwPT09ZWUmJihlZT0hMSksVyhoZSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG5lLHg7cmV0dXJuIE4odGhpcyxmdW5jdGlvbihQKXtz''@;'; put 'put ''d2l0Y2goUC5sYWJlbCl7Y2FzZSAwOnJldHVybiBuZT1PLnJlc3BvbnNlLE8gaW5zdGFuY2VvZiBKLkF1dGhvcml6ZUVycm9yP1s0LHRoaXMuaHR0cENsaWVudC5nZXQoTy5jb25maXJtVXJsLHtyZXNwb25zZVR5cGU6InRleHQiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJ0ZXh0L3BsYWlu''@;'; put 'put ''IixBY2NlcHQ6IiovKiJ9fSkuY2F0Y2goZnVuY3Rpb24oVil7dGhyb3coMCxvZS5wcmVmaXhNZXNzYWdlKShWLCJFcnJvciB3aGlsZSBnZXR0aW5nIGVycm9yIGNvbmZpcm1VcmwuICIpfSldOlszLDVdO2Nhc2UgMTpyZXR1cm4geD1QLnNlbnQoKSwoMCxLLmlzQXV0aG9yaXplRm9ybVJlcXVp''@;'; put 'put ''cmVkKShudWxsPT14P3ZvaWQgMDp4LmRhdGEpP1s0LHRoaXMuYXV0aG9yaXplKHguZGF0YSkuY2F0Y2goZnVuY3Rpb24oVil7dGhyb3coMCxvZS5wcmVmaXhNZXNzYWdlKShWLCJFcnJvciB3aGlsZSBhdXRob3JpemluZyByZXF1ZXN0LiAiKX0pXTpbMywzXTtjYXNlIDI6UC5zZW50KCksUC5s''@;'; put 'put ''YWJlbD0zO2Nhc2UgMzpyZXR1cm5bNCx6KCkuY2F0Y2goZnVuY3Rpb24oVil7dGhyb3coMCxvZS5wcmVmaXhNZXNzYWdlKShWLCJFcnJvciB3aGlsZSBleGVjdXRpbmcgY2FsbGJhY2sgaW4gaGFuZGxlRXJyb3IuICIpfSldO2Nhc2UgNDpyZXR1cm5bMixQLnNlbnQoKV07Y2FzZSA1OmlmKE8g''@;'; put 'put ''aW5zdGFuY2VvZiBKLkxvZ2luUmVxdWlyZWRFcnJvcil0aHJvdyB0aGlzLmNsZWFyQ3NyZlRva2VucygpLE87cmV0dXJuIE8gaW5zdGFuY2VvZiB2ZS5JbnZhbGlkU0FTanNDc3JmRXJyb3I/WzQsdGhpcy5odHRwQ2xpZW50LmdldCgiLyIse3dpdGhDcmVkZW50aWFsczohMH0pLnRoZW4oZnVu''@;'; put 'put ''Y3Rpb24oVil7dmFyIFQsUz1udWxsPT09KFQ9LzxzY3JpcHQ+ZG9jdW1lbnQuY29va2llID0gJyhYU1JGLVRPS0VOPS4qOyBNYXgtQWdlPTg2NDAwOyBTYW1lU2l0ZT1TdHJpY3Q7IFBhdGg9XC87KSc8XC9zY3JpcHQ+Ly5leGVjKFYuZGF0YSkpfHx2b2lkIDA9PT1UP3ZvaWQgMDpUWzFdO1Mm''@;'; put 'put ''Jihkb2N1bWVudC5jb29raWU9Uyl9KS5jYXRjaChmdW5jdGlvbihWKXt0aHJvdygwLG9lLnByZWZpeE1lc3NhZ2UpKFYsIkVycm9yIHdoaWxlIHJlLWZldGNoaW5nIENTUkYgdG9rZW4uIil9KV06WzMsOF07Y2FzZSA2OnJldHVybiBQLnNlbnQoKSxbNCx6KCkuY2F0Y2goZnVuY3Rpb24oVil7''@;'; put 'put ''dGhyb3coMCxvZS5wcmVmaXhNZXNzYWdlKShWLCJFcnJvciB3aGlsZSBleGVjdXRpbmcgY2FsbGJhY2sgaW4gaGFuZGxlRXJyb3IuICIpfSldO2Nhc2UgNzpyZXR1cm5bMixQLnNlbnQoKV07Y2FzZSA4OnJldHVybiA0MDMhPT0obnVsbD09bmU/dm9pZCAwOm5lLnN0YXR1cykmJjQ0OSE9PShu''@;'; put 'put ''dWxsPT1uZT92b2lkIDA6bmUuc3RhdHVzKT9bMywxMV06KHRoaXMucGFyc2VBbmRTZXRDc3JmVG9rZW4obmUpLHRoaXMuY3NyZlRva2VuLmhlYWRlck5hbWUmJnRoaXMuY3NyZlRva2VuLnZhbHVlP1s0LHooKS5jYXRjaChmdW5jdGlvbihWKXt0aHJvdygwLG9lLnByZWZpeE1lc3NhZ2UpKFYs''@;'; put 'put ''IkVycm9yIHdoaWxlIGV4ZWN1dGluZyBjYWxsYmFjayBpbiBoYW5kbGVFcnJvci4gIil9KV06WzMsMTBdKTtjYXNlIDk6cmV0dXJuWzIsUC5zZW50KCldO2Nhc2UgMTA6dGhyb3cgTztjYXNlIDExOmlmKDQwND09PShudWxsPT1uZT92b2lkIDA6bmUuc3RhdHVzKSl0aHJvdyBuZXcgSi5Ob3RG''@;'; put 'put ''b3VuZEVycm9yKG5lLmNvbmZpZy51cmwpO2lmKDUwMj09PShudWxsPT1uZT92b2lkIDA6bmUuc3RhdHVzKSl7aWYoZWUpdGhyb3cgbmV3IEouSW50ZXJuYWxTZXJ2ZXJFcnJvcjtyZXR1cm5bMl19UC5sYWJlbD0xMjtjYXNlIDEyOnRocm93IE8uaXNBeGlvc0Vycm9yJiYiVU5BQkxFX1RPX1ZF''@;'; put 'put ''UklGWV9MRUFGX1NJR05BVFVSRSI9PT1PLmNvZGU/bmV3IEouQ2VydGlmaWNhdGVFcnJvcihPLm1lc3NhZ2UpOk8ubWVzc2FnZT9POigwLG9lLnByZWZpeE1lc3NhZ2UpKE8sIkVycm9yIHdoaWxlIGhhbmRsaW5nIGVycm9yLiAiKX19KX0pfSx0aGlzLmNyZWF0ZUh0dHBDbGllbnQoSWUsVGUp''@;'; put 'put ''LE1lJiYodGhpcy5yZXF1ZXN0c0xpbWl0PU1lKX1yZXR1cm4gU2UucHJvdG90eXBlLnNldENvbmZpZz1mdW5jdGlvbihJZSxUZSl7dGhpcy5jcmVhdGVIdHRwQ2xpZW50KEllLFRlKX0sU2UucHJvdG90eXBlLnNhdmVMb2NhbFN0b3JhZ2VUb2tlbj1mdW5jdGlvbihJZSxUZSl7bG9jYWxTdG9y''@;'; put 'put ''YWdlLnNldEl0ZW0oImFjY2Vzc1Rva2VuIixJZSksbG9jYWxTdG9yYWdlLnNldEl0ZW0oInJlZnJlc2hUb2tlbiIsVGUpfSxTZS5wcm90b3R5cGUuZ2V0Q3NyZlRva2VuPWZ1bmN0aW9uKEllKXtyZXR1cm4gdm9pZCAwPT09SWUmJihJZT0iZ2VuZXJhbCIpLCJmaWxlIj09PUllP3RoaXMuZmls''@;'; put 'put ''ZVVwbG9hZENzcmZUb2tlbjp0aGlzLmNzcmZUb2tlbn0sU2UucHJvdG90eXBlLmNsZWFyQ3NyZlRva2Vucz1mdW5jdGlvbigpe3RoaXMuY3NyZlRva2VuPXtoZWFkZXJOYW1lOiIiLHZhbHVlOiIifSx0aGlzLmZpbGVVcGxvYWRDc3JmVG9rZW49e2hlYWRlck5hbWU6IiIsdmFsdWU6IiJ9fSxT''@;'; put 'put ''ZS5wcm90b3R5cGUuY2xlYXJMb2NhbFN0b3JhZ2VUb2tlbnM9ZnVuY3Rpb24oKXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiYWNjZXNzVG9rZW4iLCIiKSxsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgicmVmcmVzaFRva2VuIiwiIil9LFNlLnByb3RvdHlwZS5nZXRCYXNlVXJsPWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuaHR0cENsaWVudC5kZWZhdWx0cy5iYXNlVVJMfHwiIn0sU2UucHJvdG90eXBlLmFwcGVuZFJlcXVlc3Q9ZnVuY3Rpb24oSWUsVGUsTWUpe3ZhciBoZT0iIixPPSIiLHo9bnVsbDtNZSYmKG51bGwhPUllJiZJZS5sb2c/KGhlPSgwLGRlLnBhcnNlU291cmNlQ29kZSkoSWUubG9n''@;'; put 'put ''KSxPPSgwLGRlLnBhcnNlR2VuZXJhdGVkQ29kZSkoSWUubG9nKSx6PW51bGwhPUllJiZJZS5yZXN1bHQ/SWUucmVzdWx0LldPUks6SWUubG9nKTpudWxsIT1JZSYmSWUucmVzdWx0JiYoInN0cmluZyI9PXR5cGVvZiBJZS5yZXN1bHQmJihoZT0oMCxkZS5wYXJzZVNvdXJjZUNvZGUpKEllLnJl''@;'; put 'put ''c3VsdCksTz0oMCxkZS5wYXJzZUdlbmVyYXRlZENvZGUpKEllLnJlc3VsdCkpLHo9SWUucmVzdWx0LldPUkspKTt2YXIgZWU9InN0cmluZyI9PXR5cGVvZihudWxsPT1JZT92b2lkIDA6SWUucmVzdWx0KT9udWxsPT1JZT92b2lkIDA6SWUucmVzdWx0OkpTT04uc3RyaW5naWZ5KG51bGw9PUll''@;'; put 'put ''P3ZvaWQgMDpJZS5yZXN1bHQsbnVsbCwyKTt0aGlzLnJlcXVlc3RzLnB1c2goe2xvZ0ZpbGU6KG51bGw9PUllP3ZvaWQgMDpJZS5sb2cpfHxlZXx8SWUsc2VydmljZUxpbms6VGUsdGltZXN0YW1wOm5ldyBEYXRlLHNvdXJjZUNvZGU6aGUsZ2VuZXJhdGVkQ29kZTpPLFNBU1dPUks6en0pLHRo''@;'; put 'put ''aXMucmVxdWVzdHMubGVuZ3RoPnRoaXMucmVxdWVzdHNMaW1pdCYmdGhpcy5yZXF1ZXN0cy5zcGxpY2UoMCwxKX0sU2UucHJvdG90eXBlLmdldD1mdW5jdGlvbihJZSxUZSxNZSxoZSxPKXtyZXR1cm4gdm9pZCAwPT09TWUmJihNZT0iYXBwbGljYXRpb24vanNvbiIpLHZvaWQgMD09PWhlJiYo''@;'; put 'put ''aGU9e30pLHZvaWQgMD09PU8mJihPPSExKSxXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB6LGVlLG5lPXRoaXM7cmV0dXJuIE4odGhpcyxmdW5jdGlvbih4KXtyZXR1cm4gej1ZKFkoe30sdGhpcy5nZXRIZWFkZXJzKFRlLE1lKSksaGUpLGVlPXtoZWFkZXJzOnoscmVzcG9u''@;'; put 'put ''c2VUeXBlOiJ0ZXh0L3BsYWluIj09PU1lPyJ0ZXh0IjoianNvbiIsd2l0aENyZWRlbnRpYWxzOiEwfSwidGV4dC9wbGFpbiI9PT1NZSYmKGVlLnRyYW5zZm9ybVJlc3BvbnNlPXZvaWQgMCksWzIsdGhpcy5odHRwQ2xpZW50LmdldChJZSxlZSkudGhlbihmdW5jdGlvbihQKXtyZXR1cm4oMCxR''@;'; put 'put ''LnRocm93SWZFcnJvcikoUCksbmUucGFyc2VSZXNwb25zZShQKX0pLmNhdGNoKGZ1bmN0aW9uKFApe3JldHVybiBXKG5lLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgVj10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oVCl7c3dpdGNoKFQubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0''@;'; put 'put ''aGlzLmhhbmRsZUVycm9yKFAsZnVuY3Rpb24oKXtyZXR1cm4gVi5nZXQoSWUsVGUsTWUsaGUpLmNhdGNoKGZ1bmN0aW9uKFMpe3Rocm93KDAsb2UucHJlZml4TWVzc2FnZSkoUywiRXJyb3Igd2hpbGUgZXhlY3V0aW5nIGhhbmRsZSBlcnJvciBjYWxsYmFjay4gIil9KX0sTyldO2Nhc2UgMTpy''@;'; put 'put ''ZXR1cm5bMixULnNlbnQoKV19fSl9KX0pXX0pfSl9LFNlLnByb3RvdHlwZS5wb3N0PWZ1bmN0aW9uKEllLFRlLE1lLGhlLE8seil7cmV0dXJuIHZvaWQgMD09PWhlJiYoaGU9ImFwcGxpY2F0aW9uL2pzb24iKSx2b2lkIDA9PT1PJiYoTz17fSksdm9pZCAwPT09eiYmKHo9e30pLFcodGhpcyx2''@;'; put 'put ''b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGVlLG5lPXRoaXM7cmV0dXJuIE4odGhpcyxmdW5jdGlvbih4KXtyZXR1cm4gZWU9WShZKHt9LHRoaXMuZ2V0SGVhZGVycyhNZSxoZSkpLE8pLFsyLHRoaXMuaHR0cENsaWVudC5wb3N0KEllLFRlLFkoe2hlYWRlcnM6ZWUsd2l0aENyZWRlbnRp''@;'; put 'put ''YWxzOiEwfSx6KSkudGhlbihmdW5jdGlvbihQKXtyZXR1cm4oMCxRLnRocm93SWZFcnJvcikoUCksbmUucGFyc2VSZXNwb25zZShQKX0pLmNhdGNoKGZ1bmN0aW9uKFApe3JldHVybiBXKG5lLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgVj10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rp''@;'; put 'put ''b24oVCl7c3dpdGNoKFQubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmhhbmRsZUVycm9yKFAsZnVuY3Rpb24oKXtyZXR1cm4gVi5wb3N0KEllLFRlLE1lLGhlLE8pfSldO2Nhc2UgMTpyZXR1cm5bMixULnNlbnQoKV19fSl9KX0pXX0pfSl9LFNlLnByb3RvdHlwZS5wdXQ9ZnVuY3Rpb24o''@;'; put 'put ''SWUsVGUsTWUsaGUpe3JldHVybiB2b2lkIDA9PT1oZSYmKGhlPXt9KSxXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBPLHo9dGhpcztyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKGVlKXtyZXR1cm4gTz1ZKFkoe30sdGhpcy5nZXRIZWFkZXJzKE1lLCJhcHBsaWNhdGlvbi9qc29u''@;'; put 'put ''IikpLGhlKSxbMix0aGlzLmh0dHBDbGllbnQucHV0KEllLFRlLHtoZWFkZXJzOk8sd2l0aENyZWRlbnRpYWxzOiEwfSkudGhlbihmdW5jdGlvbihuZSl7cmV0dXJuKDAsUS50aHJvd0lmRXJyb3IpKG5lKSx6LnBhcnNlUmVzcG9uc2UobmUpfSkuY2F0Y2goZnVuY3Rpb24obmUpe3JldHVybiBX''@;'; put 'put ''KHosdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB4PXRoaXM7cmV0dXJuIE4odGhpcyxmdW5jdGlvbihQKXtzd2l0Y2goUC5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuaGFuZGxlRXJyb3IobmUsZnVuY3Rpb24oKXtyZXR1cm4geC5wdXQoSWUsVGUsTWUsaGUpfSldO2Nhc2UgMTpy''@;'; put 'put ''ZXR1cm5bMixQLnNlbnQoKV19fSl9KX0pXX0pfSl9LFNlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oSWUsVGUpe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBNZSxoZT10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oTyl7cmV0dXJuIE1lPXRoaXMuZ2V0''@;'; put 'put ''SGVhZGVycyhUZSwiYXBwbGljYXRpb24vanNvbiIpLFsyLHRoaXMuaHR0cENsaWVudC5kZWxldGUoSWUse2hlYWRlcnM6TWUsd2l0aENyZWRlbnRpYWxzOiEwfSkudGhlbihmdW5jdGlvbih6KXtyZXR1cm4oMCxRLnRocm93SWZFcnJvcikoeiksaGUucGFyc2VSZXNwb25zZSh6KX0pLmNhdGNo''@;'; put 'put ''KGZ1bmN0aW9uKHope3JldHVybiBXKGhlLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZWU9dGhpcztyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKG5lKXtzd2l0Y2gobmUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmhhbmRsZUVycm9yKHosZnVuY3Rpb24oKXtyZXR1cm4gZWUuZGVs''@;'; put 'put ''ZXRlKEllLFRlKX0pXTtjYXNlIDE6cmV0dXJuWzIsbmUuc2VudCgpXX19KX0pfSldfSl9KX0sU2UucHJvdG90eXBlLnBhdGNoPWZ1bmN0aW9uKEllLFRlLE1lKXtyZXR1cm4gdm9pZCAwPT09VGUmJihUZT17fSksVyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgaGUsTz10aGlz''@;'; put 'put ''O3JldHVybiBOKHRoaXMsZnVuY3Rpb24oeil7cmV0dXJuIGhlPXRoaXMuZ2V0SGVhZGVycyhNZSwiYXBwbGljYXRpb24vanNvbiIpLFsyLHRoaXMuaHR0cENsaWVudC5wYXRjaChJZSxUZSx7aGVhZGVyczpoZSx3aXRoQ3JlZGVudGlhbHM6ITB9KS50aGVuKGZ1bmN0aW9uKGVlKXtyZXR1cm4o''@;'; put 'put ''MCxRLnRocm93SWZFcnJvcikoZWUpLE8ucGFyc2VSZXNwb25zZShlZSl9KS5jYXRjaChmdW5jdGlvbihlZSl7cmV0dXJuIFcoTyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG5lPXRoaXM7cmV0dXJuIE4odGhpcyxmdW5jdGlvbih4KXtzd2l0Y2goeC5sYWJlbCl7Y2FzZSAwOnJldHVy''@;'; put 'put ''bls0LHRoaXMuaGFuZGxlRXJyb3IoZWUsZnVuY3Rpb24oKXtyZXR1cm4gbmUucGF0Y2goSWUsVGUsTWUpfSldO2Nhc2UgMTpyZXR1cm5bMix4LnNlbnQoKV19fSl9KX0pXX0pfSl9LFNlLnByb3RvdHlwZS51cGxvYWRGaWxlPWZ1bmN0aW9uKEllLFRlLE1lKXt2YXIgaGU7cmV0dXJuIFcodGhp''@;'; put 'put ''cyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIE8seixlZTtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKG5lKXtzd2l0Y2gobmUubGFiZWwpe2Nhc2UgMDpPPXRoaXMuZ2V0SGVhZGVycyhNZSwiYXBwbGljYXRpb24vanNvbiIpLCEobnVsbD09PShoZT10aGlzLmZpbGVVcGxvYWRDc3JmVG9r''@;'; put 'put ''ZW4pfHx2b2lkIDA9PT1oZSkmJmhlLnZhbHVlJiYoT1t0aGlzLmZpbGVVcGxvYWRDc3JmVG9rZW4uaGVhZGVyTmFtZV09dGhpcy5maWxlVXBsb2FkQ3NyZlRva2VuLnZhbHVlKSxuZS5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gbmUudHJ5cy5wdXNoKFsxLDMsLDRdKSxbNCx0aGlzLmh0dHBDbGll''@;'; put 'put ''bnQucG9zdChJZSxUZSx7aGVhZGVyczpPLHRyYW5zZm9ybVJlcXVlc3Q6ZnVuY3Rpb24oeCl7cmV0dXJuIHh9fSldO2Nhc2UgMjpyZXR1cm5bMix7cmVzdWx0OihlZT1uZS5zZW50KCkpLmRhdGEsZXRhZzplZS5oZWFkZXJzLmV0YWd9XTtjYXNlIDM6aWYoej1uZS5zZW50KCksNDAzPT09KG51''@;'; put 'put ''bGw9PShlZT16LnJlc3BvbnNlKT92b2lkIDA6ZWUuc3RhdHVzKXx8NDQ5PT09KG51bGw9PWVlP3ZvaWQgMDplZS5zdGF0dXMpKXtpZih0aGlzLnBhcnNlQW5kU2V0RmlsZVVwbG9hZENzcmZUb2tlbihlZSksdGhpcy5maWxlVXBsb2FkQ3NyZlRva2VuKXJldHVyblsyLHRoaXMudXBsb2FkRmls''@;'; put 'put ''ZShJZSxUZSxNZSldO3Rocm93IHp9dGhyb3cgejtjYXNlIDQ6cmV0dXJuWzJdfX0pfSl9LFNlLnByb3RvdHlwZS5wYXJzZVJlc3BvbnNlPWZ1bmN0aW9uKEllKXt2YXIgVGUsTWU9bnVsbCE9SWUmJkllLmhlYWRlcnM/SWUuaGVhZGVycy5ldGFnOiIiLGhlPSExO3RyeXtUZT0ic3RyaW5nIj09''@;'; put 'put ''dHlwZW9mIEllLmRhdGE/SlNPTi5wYXJzZShJZS5kYXRhKTpJZS5kYXRhfWNhdGNoKHope3RyeXtUZT1KU09OLnBhcnNlKCgwLHNlLnBhcnNlV2Vib3V0UmVzcG9uc2UpKEllLmRhdGEpKX1jYXRjaChlZSl7VGU9SWUuZGF0YX1oZT0hMH12YXIgTz17cmVzdWx0OlRlLGV0YWc6TWUsc3RhdHVz''@;'; put 'put ''OkllLnN0YXR1c307cmV0dXJuIGhlJiYoTy5sb2c9SWUuZGF0YSksT30sU2UucHJvdG90eXBlLmNyZWF0ZUh0dHBDbGllbnQ9ZnVuY3Rpb24oSWUsVGUpe3ZhciBNZT1UZT9uZXcgdGUuQWdlbnQoVGUpOnZvaWQgMDt0aGlzLmh0dHBDbGllbnQ9KDAsZGUuY3JlYXRlQXhpb3NJbnN0YW5jZSko''@;'; put 'put ''SWUsTWUpLHRoaXMuaHR0cENsaWVudC5kZWZhdWx0cy52YWxpZGF0ZVN0YXR1cz1mdW5jdGlvbihoZSl7cmV0dXJuIGhlPj0yMDAmJmhlPD00MDF9fSxTZX0oKTtRLlJlcXVlc3RDbGllbnQ9QWUsUS50aHJvd0lmRXJyb3I9ZnVuY3Rpb24oU2Upe3ZhciBJZSxUZSxNZSxoZSxPLHosZWU7c3dp''@;'; put 'put ''dGNoKFNlLnN0YXR1cyl7Y2FzZSA0MDA6aWYoIm9iamVjdCI9PXR5cGVvZiBTZS5kYXRhJiYiaW52YWxpZF9ncmFudCI9PT1TZS5kYXRhLmVycm9yKXRocm93IG5ldyBKLkxvZ2luUmVxdWlyZWRFcnJvcihTZS5kYXRhKTtpZigic3RyaW5nIj09dHlwZW9mIFNlLmRhdGEmJiJpbnZhbGlkIGNz''@;'; put 'put ''cmYgdG9rZW4hIj09PVNlLmRhdGEudG9Mb3dlckNhc2UoKSl0aHJvdyBuZXcgdmUuSW52YWxpZFNBU2pzQ3NyZkVycm9yO2JyZWFrO2Nhc2UgNDAxOnRocm93Im9iamVjdCI9PXR5cGVvZiBTZS5kYXRhP25ldyBKLkxvZ2luUmVxdWlyZWRFcnJvcihTZS5kYXRhKTpuZXcgSi5Mb2dpblJlcXVp''@;'; put 'put ''cmVkRXJyb3J9aWYobnVsbCE9PShUZT1udWxsPT09KEllPVNlLmRhdGEpfHx2b2lkIDA9PT1JZT92b2lkIDA6SWUuZW50aXR5SUQpJiZ2b2lkIDAhPT1UZSYmVGUuaW5jbHVkZXMoImxvZ2luIikpdGhyb3cgbmV3IEouTG9naW5SZXF1aXJlZEVycm9yO2lmKCJzdHJpbmciPT10eXBlb2YgU2Uu''@;'; put 'put ''ZGF0YSYmKDAsSy5pc0F1dGhvcml6ZUZvcm1SZXF1aXJlZCkoU2UuZGF0YSkpdGhyb3cgbmV3IEouQXV0aG9yaXplRXJyb3IoIkF1dGhvcml6YXRpb24gcmVxdWlyZWQiLFNlLnJlcXVlc3QucmVzcG9uc2VVUkwpO2lmKCJzdHJpbmciPT10eXBlb2YgU2UuZGF0YSYmKDAsSy5pc0xvZ0luUmVx''@;'; put 'put ''dWlyZWQpKFNlLmRhdGEpJiYobnVsbD09PShoZT1udWxsPT09KE1lPVNlLmNvbmZpZyl8fHZvaWQgMD09PU1lP3ZvaWQgMDpNZS51cmwpfHx2b2lkIDA9PT1oZXx8IWhlLmluY2x1ZGVzKCIvU0FTTG9nb24vbG9naW4iKSkpdGhyb3cgbmV3IEouTG9naW5SZXF1aXJlZEVycm9yO2lmKG51bGwh''@;'; put 'put ''PT0oTz1TZS5kYXRhKSYmdm9pZCAwIT09TyYmTy5hdXRoX3JlcXVlc3QpdGhyb3cgbmV3IEouQXV0aG9yaXplRXJyb3IoU2UuZGF0YS5tZXNzYWdlLFNlLnJlcXVlc3QucmVzcG9uc2VVUkwpO2lmKG51bGwhPT0oZWU9bnVsbD09PSh6PVNlLmNvbmZpZyl8fHZvaWQgMD09PXo/dm9pZCAwOnou''@;'; put 'put ''dXJsKSYmdm9pZCAwIT09ZWUmJmVlLmluY2x1ZGVzKCJzYXNBdXRoRXJyb3IiKSl0aHJvdyBuZXcgY2UuU0FTOUF1dGhFcnJvcjt2YXIgeD1rZShTZS5kYXRhKTtpZih4KXRocm93IHh9O3ZhciBrZT1mdW5jdGlvbihTZSl7aWYoIVNlKXJldHVybiBudWxsO3RyeXt2YXIgSWU9SlNPTi5wYXJz''@;'; put 'put ''ZShudWxsPT1TZT92b2lkIDA6U2UucmVwbGFjZSgvW1xuXHJdL2csIiAiKSk7aWYoSWUuZXJyb3JDb2RlJiZJZS5tZXNzYWdlKXJldHVybiBuZXcgSi5Kb2JFeGVjdXRpb25FcnJvcihJZS5lcnJvckNvZGUsSWUubWVzc2FnZSxudWxsPT1TZT92b2lkIDA6U2UucmVwbGFjZSgvW1xuXHJdL2cs''@;'; put 'put ''IiAiKSl9Y2F0Y2gobmUpe310cnl7aWYobnVsbCE9U2UmJlNlLmluY2x1ZGVzKCd7ImVycm9yQ29kZScpJiYoej1TZS5zcGxpdCgneyJlcnJvckNvZGUnKSkubGVuZ3RoPjEpe3ZhciBUZT0neyJlcnJvckNvZGUnK3pbMV0uc3BsaXQoJyJ9JylbMF0rJyJ9JyxNZT1KU09OLnBhcnNlKFRlLnJl''@;'; put 'put ''cGxhY2UoL1tcblxyXS9nLCIgIikpO3JldHVybiBuZXcgSi5Kb2JFeGVjdXRpb25FcnJvcihNZS5lcnJvckNvZGUsTWUubWVzc2FnZSxudWxsPT1TZT92b2lkIDA6U2UucmVwbGFjZSgvW1xuXHJdL2csIlxuIikpfX1jYXRjaChuZSl7fXRyeXtpZihudWxsIT1TZSYmU2UubWF0Y2goL3N0b3Jl''@;'; put 'put ''ZCBwcm9jZXNzIG5vdCBmb3VuZDogL2kpJiYoej1TZS5zcGxpdCgvc3RvcmVkIHByb2Nlc3Mgbm90IGZvdW5kOiAvaSkpLmxlbmd0aD4xKXt2YXIgaGU9elsxXS5zcGxpdCgiPGk+IilbMV0uc3BsaXQoIjwvaT4iKVswXSxPPSJTdG9yZWQgcHJvY2VzcyBub3QgZm91bmQ6ICIuY29uY2F0KGhl''@;'; put 'put ''KTtyZXR1cm4gbmV3IEouSm9iRXhlY3V0aW9uRXJyb3IoNTAwLE8sIiIpfX1jYXRjaChuZSl7fXRyeXt2YXIgejtpZigobnVsbD09U2V8fCFTZS5tYXRjaCgvPj53ZWJvdXRCRUdJTjw8LykpJiZudWxsIT1TZSYmU2UubWF0Y2goL1N0b3JlZCBQcm9jZXNzIEVycm9yL2kpJiZudWxsIT1TZSYm''@;'; put 'put ''U2UubWF0Y2goL1RoaXMgcmVxdWVzdCBjb21wbGV0ZWQgd2l0aCBlcnJvcnMuL2kpJiYoej1TZS5zcGxpdCgiPGgyPlNBUyBMb2c8L2gyPiIpKS5sZW5ndGg+MSl7dmFyIGVlPXpbMV0uc3BsaXQoIjxwcmU+IilbMV0uc3BsaXQoIjwvcHJlPiIpWzBdO3JldHVybiBuZXcgSi5Kb2JFeGVjdXRp''@;'; put 'put ''b25FcnJvcig1MDAsTz0iVGhpcyByZXF1ZXN0IGNvbXBsZXRlZCB3aXRoIGVycm9ycy4iLGVlKX19Y2F0Y2gobmUpe31yZXR1cm4gbnVsbH19LDc5NTpmdW5jdGlvbihVLFEsail7InVzZSBzdHJpY3QiO3ZhciByZSxhZT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KHJlPWZ1bmN0aW9uKGNlLGRl''@;'; put 'put ''KXtyZXR1cm4ocmU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHZlLEFlKXt2ZS5fX3Byb3RvX189QWV9fHxmdW5jdGlvbih2ZSxBZSl7Zm9yKHZhciBrZSBpbiBBZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5''@;'; put 'put ''LmNhbGwoQWUsa2UpJiYodmVba2VdPUFlW2tlXSl9KShjZSxkZSl9LGZ1bmN0aW9uKGNlLGRlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZGUmJm51bGwhPT1kZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGRlKSsiIGlzIG5vdCBhIGNvbnN0cnVj''@;'; put 'put ''dG9yIG9yIG51bGwiKTtmdW5jdGlvbiB2ZSgpe3RoaXMuY29uc3RydWN0b3I9Y2V9cmUoY2UsZGUpLGNlLnByb3RvdHlwZT1udWxsPT09ZGU/T2JqZWN0LmNyZWF0ZShkZSk6KHZlLnByb3RvdHlwZT1kZS5wcm90b3R5cGUsbmV3IHZlKX0pLFk9dGhpcyYmdGhpcy5fX2Fzc2lnbnx8ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gWT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihjZSl7Zm9yKHZhciBkZSx2ZT0xLEFlPWFyZ3VtZW50cy5sZW5ndGg7dmU8QWU7dmUrKylmb3IodmFyIGtlIGluIGRlPWFyZ3VtZW50c1t2ZV0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRlLGtlKSYm''@;'; put 'put ''KGNlW2tlXT1kZVtrZV0pO3JldHVybiBjZX0sWS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LFc9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKGNlLGRlLHZlLEFlKXtyZXR1cm4gbmV3KHZlfHwodmU9UHJvbWlzZSkpKGZ1bmN0aW9uKGtlLFNlKXtmdW5jdGlvbiBJZShoZSl7dHJ5e01l''@;'; put 'put ''KEFlLm5leHQoaGUpKX1jYXRjaChPKXtTZShPKX19ZnVuY3Rpb24gVGUoaGUpe3RyeXtNZShBZS50aHJvdyhoZSkpfWNhdGNoKE8pe1NlKE8pfX1mdW5jdGlvbiBNZShoZSl7dmFyIE87aGUuZG9uZT9rZShoZS52YWx1ZSk6KE89aGUudmFsdWUsTyBpbnN0YW5jZW9mIHZlP086bmV3IHZlKGZ1''@;'; put 'put ''bmN0aW9uKHope3ooTyl9KSkudGhlbihJZSxUZSl9TWUoKEFlPUFlLmFwcGx5KGNlLGRlfHxbXSkpLm5leHQoKSl9KX0sTj10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihjZSxkZSl7dmFyIHZlLEFlLGtlLFNlLEllPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmtlWzBd''@;'; put 'put ''KXRocm93IGtlWzFdO3JldHVybiBrZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBTZT17bmV4dDpUZSgwKSx0aHJvdzpUZSgxKSxyZXR1cm46VGUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihTZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxT''@;'; put 'put ''ZTtmdW5jdGlvbiBUZShNZSl7cmV0dXJuIGZ1bmN0aW9uKGhlKXtyZXR1cm4gZnVuY3Rpb24oTyl7aWYodmUpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7SWU7KXRyeXtpZih2ZT0xLEFlJiYoa2U9MiZPWzBdP0FlLnJldHVybjpP''@;'; put 'put ''WzBdP0FlLnRocm93fHwoKGtlPUFlLnJldHVybikmJmtlLmNhbGwoQWUpLDApOkFlLm5leHQpJiYhKGtlPWtlLmNhbGwoQWUsT1sxXSkpLmRvbmUpcmV0dXJuIGtlO3N3aXRjaChBZT0wLGtlJiYoTz1bMiZPWzBdLGtlLnZhbHVlXSksT1swXSl7Y2FzZSAwOmNhc2UgMTprZT1PO2JyZWFrO2Nh''@;'; put 'put ''c2UgNDpyZXR1cm4gSWUubGFiZWwrKyx7dmFsdWU6T1sxXSxkb25lOiExfTtjYXNlIDU6SWUubGFiZWwrKyxBZT1PWzFdLE89WzBdO2NvbnRpbnVlO2Nhc2UgNzpPPUllLm9wcy5wb3AoKSxJZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoa2U9KGtlPUllLnRyeXMpLmxlbmd0''@;'; put 'put ''aD4wJiZrZVtrZS5sZW5ndGgtMV0pfHw2IT09T1swXSYmMiE9PU9bMF0pKXtJZT0wO2NvbnRpbnVlfWlmKDM9PT1PWzBdJiYoIWtlfHxPWzFdPmtlWzBdJiZPWzFdPGtlWzNdKSl7SWUubGFiZWw9T1sxXTticmVha31pZig2PT09T1swXSYmSWUubGFiZWw8a2VbMV0pe0llLmxhYmVsPWtlWzFd''@;'; put 'put ''LGtlPU87YnJlYWt9aWYoa2UmJkllLmxhYmVsPGtlWzJdKXtJZS5sYWJlbD1rZVsyXSxJZS5vcHMucHVzaChPKTticmVha31rZVsyXSYmSWUub3BzLnBvcCgpLEllLnRyeXMucG9wKCk7Y29udGludWV9Tz1kZS5jYWxsKGNlLEllKX1jYXRjaCh6KXtPPVs2LHpdLEFlPTB9ZmluYWxseXt2ZT1r''@;'; put 'put ''ZT0wfWlmKDUmT1swXSl0aHJvdyBPWzFdO3JldHVybnt2YWx1ZTpPWzBdP09bMV06dm9pZCAwLGRvbmU6ITB9fShbTWUsaGVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5TYXM5UmVxdWVzdENsaWVudD12b2lkIDA7dmFyIHRlPWooODIy''@;'; put 'put ''NCksSz1qKDc4NTcpLEo9aig5Nzc4KSxzZT1qKDQ1ODgpLG9lPWZ1bmN0aW9uKGNlKXtmdW5jdGlvbiBkZSh2ZSxBZSl7dmFyIGtlPWNlLmNhbGwodGhpcyx2ZSxBZSl8fHRoaXM7cmV0dXJuIGtlLmh0dHBDbGllbnQuZGVmYXVsdHMubWF4UmVkaXJlY3RzPTAsa2UuaHR0cENsaWVudC5kZWZh''@;'; put 'put ''dWx0cy52YWxpZGF0ZVN0YXR1cz1mdW5jdGlvbihTZSl7cmV0dXJuIFNlPj0yMDAmJlNlPDMwM30sdGUuZGVmYXVsdCYmKCgwLHRlLmRlZmF1bHQpKGtlLmh0dHBDbGllbnQpLGtlLmh0dHBDbGllbnQuZGVmYXVsdHMuamFyPW5ldyBLLkNvb2tpZUphciksa2V9cmV0dXJuIGFlKGRlLGNlKSxk''@;'; put 'put ''ZS5wcm90b3R5cGUubG9naW49ZnVuY3Rpb24odmUsQWUsa2Upe3JldHVybiBXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBTZTtyZXR1cm4gTih0aGlzLGZ1bmN0aW9uKEllKXtzd2l0Y2goSWUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gU2U9Ii9Vc2VyIEZvbGRlcnMvIi5jb25j''@;'; put 'put ''YXQodmUsIi9NeSBGb2xkZXIvc2FzanMvcnVubmVyIiksdGhpcy5odHRwQ2xpZW50LmRlZmF1bHRzLmphcj8odGhpcy5odHRwQ2xpZW50LmRlZmF1bHRzLmphci5yZW1vdmVBbGxDb29raWVzKCksWzQsdGhpcy5nZXQoIiIuY29uY2F0KGtlLCI/X3Byb2dyYW09IikuY29uY2F0KFNlLCImX3Vz''@;'; put 'put ''ZXJuYW1lPSIpLmNvbmNhdCh2ZSwiJl9wYXNzd29yZD0iKS5jb25jYXQoQWUpLHZvaWQgMCwidGV4dC9wbGFpbiIpXSk6WzMsMl07Y2FzZSAxOkllLnNlbnQoKSxJZS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bMl19fSl9KX0sZGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih2ZSxBZSxrZSxTZSxJ''@;'; put 'put ''ZSl7cmV0dXJuIHZvaWQgMD09PWtlJiYoa2U9ImFwcGxpY2F0aW9uL2pzb24iKSx2b2lkIDA9PT1TZSYmKFNlPXt9KSx2b2lkIDA9PT1JZSYmKEllPSExKSxXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBUZSxNZSxoZT10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oTyl7''@;'; put 'put ''cmV0dXJuIFRlPVkoWSh7fSx0aGlzLmdldEhlYWRlcnMoQWUsa2UpKSxTZSksTWU9e2hlYWRlcnM6VGUscmVzcG9uc2VUeXBlOiJ0ZXh0L3BsYWluIj09PWtlPyJ0ZXh0IjoianNvbiIsd2l0aENyZWRlbnRpYWxzOiEwfSwidGV4dC9wbGFpbiI9PT1rZSYmKE1lLnRyYW5zZm9ybVJlc3BvbnNl''@;'; put 'put ''PXZvaWQgMCksWzIsdGhpcy5odHRwQ2xpZW50LmdldCh2ZSxNZSkudGhlbihmdW5jdGlvbih6KXtyZXR1cm4gMzAyPT09ei5zdGF0dXM/aGUuZ2V0KHouaGVhZGVycy5sb2NhdGlvbixBZSxrZSk6KCgwLHNlLnRocm93SWZFcnJvcikoeiksaGUucGFyc2VSZXNwb25zZSh6KSl9KS5jYXRjaChm''@;'; put 'put ''dW5jdGlvbih6KXtyZXR1cm4gVyhoZSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGVlPXRoaXM7cmV0dXJuIE4odGhpcyxmdW5jdGlvbihuZSl7c3dpdGNoKG5lLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5oYW5kbGVFcnJvcih6LGZ1bmN0aW9uKCl7cmV0dXJuIGVlLmdldCh2''@;'; put 'put ''ZSxBZSxrZSxTZSkuY2F0Y2goZnVuY3Rpb24oeCl7dGhyb3coMCxKLnByZWZpeE1lc3NhZ2UpKHgsIkVycm9yIHdoaWxlIGV4ZWN1dGluZyBoYW5kbGUgZXJyb3IgY2FsbGJhY2suICIpfSl9LEllKS5jYXRjaChmdW5jdGlvbih4KXt0aHJvdygwLEoucHJlZml4TWVzc2FnZSkoeCwiRXJyb3Ig''@;'; put 'put ''d2hpbGUgaGFuZGxpbmcgZXJyb3IuICIpfSldO2Nhc2UgMTpyZXR1cm5bMixuZS5zZW50KCldfX0pfSl9KV19KX0pfSxkZS5wcm90b3R5cGUucG9zdD1mdW5jdGlvbih2ZSxBZSxrZSxTZSxJZSl7cmV0dXJuIHZvaWQgMD09PVNlJiYoU2U9ImFwcGxpY2F0aW9uL2pzb24iKSx2b2lkIDA9PT1J''@;'; put 'put ''ZSYmKEllPXt9KSxXKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBUZSxNZT10aGlzO3JldHVybiBOKHRoaXMsZnVuY3Rpb24oaGUpe3JldHVybiBUZT1ZKFkoe30sdGhpcy5nZXRIZWFkZXJzKGtlLFNlKSksSWUpLFsyLHRoaXMuaHR0cENsaWVudC5wb3N0KHZlLEFlLHtoZWFk''@;'; put 'put ''ZXJzOlRlLHdpdGhDcmVkZW50aWFsczohMH0pLnRoZW4oZnVuY3Rpb24oTyl7cmV0dXJuIFcoTWUsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBOKHRoaXMsZnVuY3Rpb24oeil7c3dpdGNoKHoubGFiZWwpe2Nhc2UgMDpyZXR1cm4gMzAyIT09Ty5zdGF0dXM/WzMsMl06WzQsdGhp''@;'; put 'put ''cy5nZXQoTy5oZWFkZXJzLmxvY2F0aW9uLHZvaWQgMCxTZSxJZSldO2Nhc2UgMTpyZXR1cm5bMix6LnNlbnQoKV07Y2FzZSAyOnJldHVybigwLHNlLnRocm93SWZFcnJvcikoTyksWzIsdGhpcy5wYXJzZVJlc3BvbnNlKE8pXX19KX0pfSkuY2F0Y2goZnVuY3Rpb24oTyl7cmV0dXJuIFcoTWUs''@;'; put 'put ''dm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB6PXRoaXM7cmV0dXJuIE4odGhpcyxmdW5jdGlvbihlZSl7c3dpdGNoKGVlLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5oYW5kbGVFcnJvcihPLGZ1bmN0aW9uKCl7cmV0dXJuIHoucG9zdCh2ZSxBZSxrZSxTZSxJZSl9KV07Y2FzZSAx''@;'; put 'put ''OnJldHVyblsyLGVlLnNlbnQoKV19fSl9KX0pXX0pfSl9LGRlfShzZS5SZXF1ZXN0Q2xpZW50KTtRLlNhczlSZXF1ZXN0Q2xpZW50PW9lfSwzNjAyOmZ1bmN0aW9uKFUsUSxqKXsidXNlIHN0cmljdCI7dmFyIHJlLGFlPXRoaXMmJnRoaXMuX19leHRlbmRzfHwocmU9ZnVuY3Rpb24odGUsSyl7''@;'; put 'put ''cmV0dXJuKHJlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihKLHNlKXtKLl9fcHJvdG9fXz1zZX18fGZ1bmN0aW9uKEosc2Upe2Zvcih2YXIgb2UgaW4gc2UpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxs''@;'; put 'put ''KHNlLG9lKSYmKEpbb2VdPXNlW29lXSl9KSh0ZSxLKX0sZnVuY3Rpb24odGUsSyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEsmJm51bGwhPT1LKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoSykrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxs''@;'; put 'put ''Iik7ZnVuY3Rpb24gSigpe3RoaXMuY29uc3RydWN0b3I9dGV9cmUodGUsSyksdGUucHJvdG90eXBlPW51bGw9PT1LP09iamVjdC5jcmVhdGUoSyk6KEoucHJvdG90eXBlPUsucHJvdG90eXBlLG5ldyBKKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9''@;'; put 'put ''KSxRLlNhc2pzUmVxdWVzdENsaWVudD12b2lkIDA7dmFyIFk9aig0NTg4KSxXPWooNTkyOCksTj1mdW5jdGlvbih0ZSl7ZnVuY3Rpb24gSygpe3ZhciBKPW51bGwhPT10ZSYmdGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiBKLmdldEhlYWRlcnM9ZnVuY3Rpb24oc2Usb2Up''@;'; put 'put ''e3ZhciBjZSxkZT17fTtyZXR1cm4iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiE9PW9lJiYoZGVbIkNvbnRlbnQtVHlwZSJdPW9lKSxkZS5BY2NlcHQ9ImFwcGxpY2F0aW9uL2pzb24iPT09b2U/b2U6IiovKiIsc2V8fCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwoc2U9''@;'; put 'put ''bnVsbCE9PShjZT1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiYWNjZXNzVG9rZW4iKSkmJnZvaWQgMCE9PWNlP2NlOnZvaWQgMCksc2UmJihkZS5BdXRob3JpemF0aW9uPSJCZWFyZXIgIi5jb25jYXQoc2UpKSxkZX0sSn1yZXR1cm4gYWUoSyx0ZSksSy5wcm90b3R5cGUucGFyc2VSZXNwb25zZT1m''@;'; put 'put ''dW5jdGlvbihKKXt2YXIgc2Usb2U9bnVsbCE9SiYmSi5oZWFkZXJzP0ouaGVhZGVycy5ldGFnOiIiLGNlPXt9O3RyeXtjZT0ic3RyaW5nIj09dHlwZW9mIEouZGF0YT9KU09OLnBhcnNlKEouZGF0YSk6Si5kYXRhfWNhdGNoKHZlKXtpZihKLmRhdGEuaW5jbHVkZXMoVy5TQVNKU19MT0dTX1NF''@;'; put 'put ''UEFSQVRPUikpe3ZhciBkZT1KLmRhdGEuc3BsaXQoVy5TQVNKU19MT0dTX1NFUEFSQVRPUik7c2U9ZGVbMV0sZGVbMF0udHJpbSgpJiYoY2U9KDAsVy5nZXRWYWxpZEpzb24pKGRlWzBdKSl9ZWxzZSBjZT1KLmRhdGF9cmV0dXJue3Jlc3VsdDpjZSxsb2c6c2UsZXRhZzpvZSxzdGF0dXM6Si5z''@;'; put 'put ''dGF0dXN9fSxLfShZLlJlcXVlc3RDbGllbnQpO1EuU2FzanNSZXF1ZXN0Q2xpZW50PU59LDQ3MDooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDQ2NjY6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSw2MTc3OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sNTc2NjooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwi''@;'; put 'put ''X19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDQ5NzU6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSwyMTU6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2''@;'; put 'put ''YWx1ZTohMH0pfSw0NzgyOihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sNDE2ODooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDg1''@;'; put 'put ''MTY6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSwzMTUzOihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sNTg0MTooVSxRKT0+eyJ1''@;'; put 'put ''c2Ugc3RyaWN0Ijt2YXIgaixhZTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5Mb2dpbk1lY2hhbmlzbT1RLlNBU2pzQ29uZmlnPXZvaWQgMCxRLlNBU2pzQ29uZmlnPWZ1bmN0aW9uKCl7dGhpcy5zZXJ2ZXJVcmw9IiIsdGhpcy5wYXRoU0FTSlM9''@;'; put 'put ''IiIsdGhpcy5wYXRoU0FTOT0iIix0aGlzLnBhdGhTQVNWaXlhPSIiLHRoaXMuYXBwTG9jPSIiLHRoaXMuc2VydmVyVHlwZT1udWxsLHRoaXMuZGVidWc9ITAsdGhpcy5jb250ZXh0TmFtZT0iIix0aGlzLnVzZUNvbXB1dGVBcGk9bnVsbCx0aGlzLmxvZ2luTWVjaGFuaXNtPWouRGVmYXVsdCx0''@;'; put 'put ''aGlzLnJlcXVlc3RIaXN0b3J5TGltaXQ9MTB9LChhZT1qPVEuTG9naW5NZWNoYW5pc218fChRLkxvZ2luTWVjaGFuaXNtPXt9KSkuRGVmYXVsdD0iRGVmYXVsdCIsYWUuUmVkaXJlY3RlZD0iUmVkaXJlY3RlZCJ9LDI0OTM6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSw2MDM4OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sOTQ5MzooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01v''@;'; put 'put ''ZHVsZSIse3ZhbHVlOiEwfSl9LDg2NTA6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSwxMjQ6ZnVuY3Rpb24oVSxRKXsidXNlIHN0cmljdCI7dmFyIGoscmU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChqPWZ1bmN0''@;'; put 'put ''aW9uKFksVyl7cmV0dXJuKGo9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKE4sdGUpe04uX19wcm90b19fPXRlfXx8ZnVuY3Rpb24oTix0ZSl7Zm9yKHZhciBLIGluIHRlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy''@;'; put 'put ''dHkuY2FsbCh0ZSxLKSYmKE5bS109dGVbS10pfSkoWSxXKX0sZnVuY3Rpb24oWSxXKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgVyYmbnVsbCE9PVcpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhXKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51''@;'; put 'put ''bGwiKTtmdW5jdGlvbiBOKCl7dGhpcy5jb25zdHJ1Y3Rvcj1ZfWooWSxXKSxZLnByb3RvdHlwZT1udWxsPT09Vz9PYmplY3QuY3JlYXRlKFcpOihOLnByb3RvdHlwZT1XLnByb3RvdHlwZSxuZXcgTil9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSks''@;'; put 'put ''US5BdXRob3JpemVFcnJvcj12b2lkIDA7dmFyIGFlPWZ1bmN0aW9uKFkpe2Z1bmN0aW9uIFcoTix0ZSl7dmFyIEs9WS5jYWxsKHRoaXMsTil8fHRoaXM7cmV0dXJuIEsubWVzc2FnZT1OLEsuY29uZmlybVVybD10ZSxLLm5hbWU9IkF1dGhvcml6ZUVycm9yIixPYmplY3Quc2V0UHJvdG90eXBl''@;'; put 'put ''T2YoSyxXLnByb3RvdHlwZSksS31yZXR1cm4gcmUoVyxZKSxXfShFcnJvcik7US5BdXRob3JpemVFcnJvcj1hZX0sOTQ2NTpmdW5jdGlvbihVLFEpeyJ1c2Ugc3RyaWN0Ijt2YXIgaixyZT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGo9ZnVuY3Rpb24oWSxXKXtyZXR1cm4oaj1PYmplY3Quc2V0''@;'; put 'put ''UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oTix0ZSl7Ti5fX3Byb3RvX189dGV9fHxmdW5jdGlvbihOLHRlKXtmb3IodmFyIEsgaW4gdGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRlLEspJiYoTltLXT10ZVtLXSl9''@;'; put 'put ''KShZLFcpfSxmdW5jdGlvbihZLFcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBXJiZudWxsIT09Vyl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFcpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIE4oKXt0aGlzLmNvbnN0''@;'; put 'put ''cnVjdG9yPVl9aihZLFcpLFkucHJvdG90eXBlPW51bGw9PT1XP09iamVjdC5jcmVhdGUoVyk6KE4ucHJvdG90eXBlPVcucHJvdG90eXBlLG5ldyBOKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLkNlcnRpZmljYXRlRXJyb3I9dm9pZCAwO3Zh''@;'; put 'put ''ciBhZT1mdW5jdGlvbihZKXtmdW5jdGlvbiBXKE4pe3ZhciB0ZT1ZLmNhbGwodGhpcywiIi5jb25jYXQoTiwiXG5QbGVhc2UgdmlzaXQgdGhlIGxpbmsgYmVsb3cgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gb24gdGhpcyBpc3N1ZTpcbi0gIikuY29uY2F0KCJodHRwczovL2dpdGh1Yi5jb20v''@;'; put 'put ''c2FzanMvY2xpL2lzc3Vlcy8xMTgxI2lzc3VlY29tbWVudC0xMDkwNjM4NTg0IiwiXG4iKSl8fHRoaXM7cmV0dXJuIHRlLm5hbWU9IkNlcnRpZmljYXRlRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZih0ZSxXLnByb3RvdHlwZSksdGV9cmV0dXJuIHJlKFcsWSksV30oRXJyb3IpO1EuQ2Vy''@;'; put 'put ''dGlmaWNhdGVFcnJvcj1hZX0sNTI2NzpmdW5jdGlvbihVLFEpeyJ1c2Ugc3RyaWN0Ijt2YXIgaixyZT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGo9ZnVuY3Rpb24oWSxXKXtyZXR1cm4oaj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVu''@;'; put 'put ''Y3Rpb24oTix0ZSl7Ti5fX3Byb3RvX189dGV9fHxmdW5jdGlvbihOLHRlKXtmb3IodmFyIEsgaW4gdGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRlLEspJiYoTltLXT10ZVtLXSl9KShZLFcpfSxmdW5jdGlvbihZLFcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBXJiZu''@;'; put 'put ''dWxsIT09Vyl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFcpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIE4oKXt0aGlzLmNvbnN0cnVjdG9yPVl9aihZLFcpLFkucHJvdG90eXBlPW51bGw9PT1XP09iamVjdC5jcmVh''@;'; put 'put ''dGUoVyk6KE4ucHJvdG90eXBlPVcucHJvdG90eXBlLG5ldyBOKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLkNvbXB1dGVKb2JFeGVjdXRpb25FcnJvcj12b2lkIDA7dmFyIGFlPWZ1bmN0aW9uKFkpe2Z1bmN0aW9uIFcoTix0ZSl7dmFyIEs9''@;'; put 'put ''WS5jYWxsKHRoaXMsIkVycm9yOiBKb2IgZXhlY3V0aW9uIGZhaWxlZCIpfHx0aGlzO3JldHVybiBLLmpvYj1OLEsubG9nPXRlLEsubmFtZT0iQ29tcHV0ZUpvYkV4ZWN1dGlvbkVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoSyxXLnByb3RvdHlwZSksS31yZXR1cm4gcmUoVyxZKSxXfShF''@;'; put 'put ''cnJvcik7US5Db21wdXRlSm9iRXhlY3V0aW9uRXJyb3I9YWV9LDkyMzI6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuRXJyb3JSZXNwb25zZT12b2lkIDAsUS5FcnJvclJlc3BvbnNlPWZ1bmN0aW9uKHJlLGFl''@;'; put 'put ''LFkpe3ZhciBXPWFlO2lmKCJvYmplY3QiIT10eXBlb2YgYWUpdHJ5e1c9SlNPTi5wYXJzZShhZSl9Y2F0Y2goTil7WT1hZSxXPSIifXRoaXMuZXJyb3I9e21lc3NhZ2U6cmUsZGV0YWlsczpXLHJhdzpZfX19LDUxMDk6ZnVuY3Rpb24oVSxRKXsidXNlIHN0cmljdCI7dmFyIGoscmU9dGhpcyYm''@;'; put 'put ''dGhpcy5fX2V4dGVuZHN8fChqPWZ1bmN0aW9uKFksVyl7cmV0dXJuKGo9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKE4sdGUpe04uX19wcm90b19fPXRlfXx8ZnVuY3Rpb24oTix0ZSl7Zm9yKHZhciBLIGluIHRlKU9iamVj''@;'; put 'put ''dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0ZSxLKSYmKE5bS109dGVbS10pfSkoWSxXKX0sZnVuY3Rpb24oWSxXKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgVyYmbnVsbCE9PVcpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhXKSsiIGlz''@;'; put 'put ''IG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBOKCl7dGhpcy5jb25zdHJ1Y3Rvcj1ZfWooWSxXKSxZLnByb3RvdHlwZT1udWxsPT09Vz9PYmplY3QuY3JlYXRlKFcpOihOLnByb3RvdHlwZT1XLnByb3RvdHlwZSxuZXcgTil9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwi''@;'; put 'put ''X19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5JbnRlcm5hbFNlcnZlckVycm9yPXZvaWQgMDt2YXIgYWU9ZnVuY3Rpb24oWSl7ZnVuY3Rpb24gVygpe3ZhciBOPVkuY2FsbCh0aGlzLCJFcnJvcjogSW50ZXJuYWwgc2VydmVyIGVycm9yLiIpfHx0aGlzO3JldHVybiBOLm5hbWU9IkludGVybmFs''@;'; put 'put ''U2VydmVyRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZihOLFcucHJvdG90eXBlKSxOfXJldHVybiByZShXLFkpLFd9KEVycm9yKTtRLkludGVybmFsU2VydmVyRXJyb3I9YWV9LDU1MTg6ZnVuY3Rpb24oVSxRKXsidXNlIHN0cmljdCI7dmFyIGoscmU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8''@;'; put 'put ''fChqPWZ1bmN0aW9uKFksVyl7cmV0dXJuKGo9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKE4sdGUpe04uX19wcm90b19fPXRlfXx8ZnVuY3Rpb24oTix0ZSl7Zm9yKHZhciBLIGluIHRlKU9iamVjdC5wcm90b3R5cGUuaGFz''@;'; put 'put ''T3duUHJvcGVydHkuY2FsbCh0ZSxLKSYmKE5bS109dGVbS10pfSkoWSxXKX0sZnVuY3Rpb24oWSxXKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgVyYmbnVsbCE9PVcpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhXKSsiIGlzIG5vdCBhIGNvbnN0cnVj''@;'; put 'put ''dG9yIG9yIG51bGwiKTtmdW5jdGlvbiBOKCl7dGhpcy5jb25zdHJ1Y3Rvcj1ZfWooWSxXKSxZLnByb3RvdHlwZT1udWxsPT09Vz9PYmplY3QuY3JlYXRlKFcpOihOLnByb3RvdHlwZT1XLnByb3RvdHlwZSxuZXcgTil9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3Zh''@;'; put 'put ''bHVlOiEwfSksUS5JbnZhbGlkSnNvbkVycm9yPXZvaWQgMDt2YXIgYWU9ZnVuY3Rpb24oWSl7ZnVuY3Rpb24gVygpe3ZhciBOPVkuY2FsbCh0aGlzLCJFcnJvcjogaW52YWxpZCBKc29uIHN0cmluZyIpfHx0aGlzO3JldHVybiBOLm5hbWU9IkludmFsaWRKc29uRXJyb3IiLE9iamVjdC5zZXRQ''@;'; put 'put ''cm90b3R5cGVPZihOLFcucHJvdG90eXBlKSxOfXJldHVybiByZShXLFkpLFd9KEVycm9yKTtRLkludmFsaWRKc29uRXJyb3I9YWV9LDEwMDU6ZnVuY3Rpb24oVSxRKXsidXNlIHN0cmljdCI7dmFyIGoscmU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChqPWZ1bmN0aW9uKFksVyl7cmV0dXJuKGo9''@;'; put 'put ''T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKE4sdGUpe04uX19wcm90b19fPXRlfXx8ZnVuY3Rpb24oTix0ZSl7Zm9yKHZhciBLIGluIHRlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0ZSxLKSYmKE5b''@;'; put 'put ''S109dGVbS10pfSkoWSxXKX0sZnVuY3Rpb24oWSxXKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgVyYmbnVsbCE9PVcpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhXKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBOKCl7''@;'; put 'put ''dGhpcy5jb25zdHJ1Y3Rvcj1ZfWooWSxXKSxZLnByb3RvdHlwZT1udWxsPT09Vz9PYmplY3QuY3JlYXRlKFcpOihOLnByb3RvdHlwZT1XLnByb3RvdHlwZSxuZXcgTil9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5JbnZhbGlkU0FTanNDc3Jm''@;'; put 'put ''RXJyb3I9dm9pZCAwO3ZhciBhZT1mdW5jdGlvbihZKXtmdW5jdGlvbiBXKCl7dmFyIE49dGhpcztyZXR1cm4oTj1ZLmNhbGwodGhpcywiQXV0aCBlcnJvcjogIi5jb25jYXQoIkludmFsaWQgQ1NSRiB0b2tlbiEiKSl8fHRoaXMpLm5hbWU9IkludmFsaWRTQVNqc0NzcmZFcnJvciIsT2JqZWN0''@;'; put 'put ''LnNldFByb3RvdHlwZU9mKE4sVy5wcm90b3R5cGUpLE59cmV0dXJuIHJlKFcsWSksV30oRXJyb3IpO1EuSW52YWxpZFNBU2pzQ3NyZkVycm9yPWFlfSw4NTMxOmZ1bmN0aW9uKFUsUSl7InVzZSBzdHJpY3QiO3ZhciBqLHJlPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaj1mdW5jdGlvbihZLFcp''@;'; put 'put ''e3JldHVybihqPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihOLHRlKXtOLl9fcHJvdG9fXz10ZX18fGZ1bmN0aW9uKE4sdGUpe2Zvcih2YXIgSyBpbiB0ZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwo''@;'; put 'put ''dGUsSykmJihOW0tdPXRlW0tdKX0pKFksVyl9LGZ1bmN0aW9uKFksVyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFcmJm51bGwhPT1XKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoVykrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVu''@;'; put 'put ''Y3Rpb24gTigpe3RoaXMuY29uc3RydWN0b3I9WX1qKFksVyksWS5wcm90b3R5cGU9bnVsbD09PVc/T2JqZWN0LmNyZWF0ZShXKTooTi5wcm90b3R5cGU9Vy5wcm90b3R5cGUsbmV3IE4pfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuSm9iRXhl''@;'; put 'put ''Y3V0aW9uRXJyb3I9dm9pZCAwO3ZhciBhZT1mdW5jdGlvbihZKXtmdW5jdGlvbiBXKE4sdGUsSyl7dmFyIEo9WS5jYWxsKHRoaXMsIkVycm9yIENvZGUgIi5jb25jYXQoTiwiOiAiKS5jb25jYXQodGUpKXx8dGhpcztyZXR1cm4gSi5lcnJvckNvZGU9TixKLmVycm9yTWVzc2FnZT10ZSxKLnJl''@;'; put 'put ''c3VsdD1LLEoubmFtZT0iSm9iRXhlY3V0aW9uRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZihKLFcucHJvdG90eXBlKSxKfXJldHVybiByZShXLFkpLFd9KEVycm9yKTtRLkpvYkV4ZWN1dGlvbkVycm9yPWFlfSw5MDc5OmZ1bmN0aW9uKFUsUSl7InVzZSBzdHJpY3QiO3ZhciBqLHJlPXRo''@;'; put 'put ''aXMmJnRoaXMuX19leHRlbmRzfHwoaj1mdW5jdGlvbihZLFcpe3JldHVybihqPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihOLHRlKXtOLl9fcHJvdG9fXz10ZX18fGZ1bmN0aW9uKE4sdGUpe2Zvcih2YXIgSyBpbiB0ZSlP''@;'; put 'put ''YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGUsSykmJihOW0tdPXRlW0tdKX0pKFksVyl9LGZ1bmN0aW9uKFksVyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFcmJm51bGwhPT1XKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoVykr''@;'; put 'put ''IiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gTigpe3RoaXMuY29uc3RydWN0b3I9WX1qKFksVyksWS5wcm90b3R5cGU9bnVsbD09PVc/T2JqZWN0LmNyZWF0ZShXKTooTi5wcm90b3R5cGU9Vy5wcm90b3R5cGUsbmV3IE4pfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuSm9iU3RhdGVQb2xsRXJyb3I9dm9pZCAwO3ZhciBhZT1mdW5jdGlvbihZKXtmdW5jdGlvbiBXKE4sdGUpe3ZhciBLPVkuY2FsbCh0aGlzLCJFcnJvciB3aGlsZSBwb2xsaW5nIGpvYiBzdGF0ZSBmb3Igam9iICIuY29uY2F0KE4sIjogIiku''@;'; put 'put ''Y29uY2F0KHRlLm1lc3NhZ2V8fHRlKSl8fHRoaXM7cmV0dXJuIEsub3JpZ2luYWxFcnJvcj10ZSxLLm5hbWU9IkpvYlN0YXRlUG9sbEVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoSyxXLnByb3RvdHlwZSksS31yZXR1cm4gcmUoVyxZKSxXfShFcnJvcik7US5Kb2JTdGF0ZVBvbGxFcnJv''@;'; put 'put ''cj1hZX0sMzA5NjpmdW5jdGlvbihVLFEpeyJ1c2Ugc3RyaWN0Ijt2YXIgaixyZT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGo9ZnVuY3Rpb24oWSxXKXtyZXR1cm4oaj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oTix0ZSl7''@;'; put 'put ''Ti5fX3Byb3RvX189dGV9fHxmdW5jdGlvbihOLHRlKXtmb3IodmFyIEsgaW4gdGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRlLEspJiYoTltLXT10ZVtLXSl9KShZLFcpfSxmdW5jdGlvbihZLFcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBXJiZudWxsIT09Vyl0aHJv''@;'; put 'put ''dyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFcpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIE4oKXt0aGlzLmNvbnN0cnVjdG9yPVl9aihZLFcpLFkucHJvdG90eXBlPW51bGw9PT1XP09iamVjdC5jcmVhdGUoVyk6KE4ucHJv''@;'; put 'put ''dG90eXBlPVcucHJvdG90eXBlLG5ldyBOKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLkpzb25QYXJzZUFycmF5RXJyb3I9dm9pZCAwO3ZhciBhZT1mdW5jdGlvbihZKXtmdW5jdGlvbiBXKCl7dmFyIE49WS5jYWxsKHRoaXMsIkNhbiBub3Qg''@;'; put 'put ''cGFyc2UgYXJyYXkgb2JqZWN0IHRvIGpzb24uIil8fHRoaXM7cmV0dXJuIE4ubmFtZT0iSnNvblBhcnNlQXJyYXlFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKE4sVy5wcm90b3R5cGUpLE59cmV0dXJuIHJlKFcsWSksV30oRXJyb3IpO1EuSnNvblBhcnNlQXJyYXlFcnJvcj1hZX0sNjc0''@;'; put 'put ''MzpmdW5jdGlvbihVLFEpeyJ1c2Ugc3RyaWN0Ijt2YXIgaixyZT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGo9ZnVuY3Rpb24oWSxXKXtyZXR1cm4oaj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oTix0ZSl7Ti5fX3Byb3Rv''@;'; put 'put ''X189dGV9fHxmdW5jdGlvbihOLHRlKXtmb3IodmFyIEsgaW4gdGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRlLEspJiYoTltLXT10ZVtLXSl9KShZLFcpfSxmdW5jdGlvbihZLFcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBXJiZudWxsIT09Vyl0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFcpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIE4oKXt0aGlzLmNvbnN0cnVjdG9yPVl9aihZLFcpLFkucHJvdG90eXBlPW51bGw9PT1XP09iamVjdC5jcmVhdGUoVyk6KE4ucHJvdG90eXBlPVcu''@;'; put 'put ''cHJvdG90eXBlLG5ldyBOKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLkxvZ2luUmVxdWlyZWRFcnJvcj12b2lkIDA7dmFyIGFlPWZ1bmN0aW9uKFkpe2Z1bmN0aW9uIFcoTil7dmFyIHRlPXRoaXMsSz1OP0pTT04uc3RyaW5naWZ5KE4sbnVs''@;'; put 'put ''bCwyKToiWW91IG11c3QgYmUgbG9nZ2VkIGluIHRvIGFjY2VzcyB0aGlzIHJlc291cmNlIjtyZXR1cm4odGU9WS5jYWxsKHRoaXMsIkF1dGggZXJyb3I6ICIuY29uY2F0KEspKXx8dGhpcykubmFtZT0iTG9naW5SZXF1aXJlZEVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YodGUsVy5wcm90''@;'; put 'put ''b3R5cGUpLHRlfXJldHVybiByZShXLFkpLFd9KEVycm9yKTtRLkxvZ2luUmVxdWlyZWRFcnJvcj1hZX0sNzg2NDpmdW5jdGlvbihVLFEpeyJ1c2Ugc3RyaWN0Ijt2YXIgaixyZT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGo9ZnVuY3Rpb24oWSxXKXtyZXR1cm4oaj1PYmplY3Quc2V0UHJvdG90''@;'; put 'put ''eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oTix0ZSl7Ti5fX3Byb3RvX189dGV9fHxmdW5jdGlvbihOLHRlKXtmb3IodmFyIEsgaW4gdGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRlLEspJiYoTltLXT10ZVtLXSl9KShZLFcp''@;'; put 'put ''fSxmdW5jdGlvbihZLFcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBXJiZudWxsIT09Vyl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFcpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIE4oKXt0aGlzLmNvbnN0cnVjdG9y''@;'; put 'put ''PVl9aihZLFcpLFkucHJvdG90eXBlPW51bGw9PT1XP09iamVjdC5jcmVhdGUoVyk6KE4ucHJvdG90eXBlPVcucHJvdG90eXBlLG5ldyBOKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLk5vU2Vzc2lvblN0YXRlRXJyb3I9dm9pZCAwO3ZhciBh''@;'; put 'put ''ZT1mdW5jdGlvbihZKXtmdW5jdGlvbiBXKE4sdGUsSyl7dmFyIEo9WS5jYWxsKHRoaXMsIkNvdWxkIG5vdCBnZXQgc2Vzc2lvbiBzdGF0ZS4gU2VydmVyIHJlc3BvbmRlZCB3aXRoICIuY29uY2F0KE4sIiB3aGlsc3QgY2hlY2tpbmcgc3RhdGU6ICIpLmNvbmNhdCh0ZSkpfHx0aGlzO3JldHVy''@;'; put 'put ''biBKLnNlcnZlclJlc3BvbnNlU3RhdHVzPU4sSi5zZXNzaW9uU3RhdGVVcmw9dGUsSi5sb2dVcmw9SyxKLm5hbWU9Ik5vU2Vzc2lvblN0YXR1cyIsT2JqZWN0LnNldFByb3RvdHlwZU9mKEosVy5wcm90b3R5cGUpLEp9cmV0dXJuIHJlKFcsWSksV30oRXJyb3IpO1EuTm9TZXNzaW9uU3RhdGVF''@;'; put 'put ''cnJvcj1hZX0sOTU3NzpmdW5jdGlvbihVLFEpeyJ1c2Ugc3RyaWN0Ijt2YXIgaixyZT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGo9ZnVuY3Rpb24oWSxXKXtyZXR1cm4oaj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oTix0''@;'; put 'put ''ZSl7Ti5fX3Byb3RvX189dGV9fHxmdW5jdGlvbihOLHRlKXtmb3IodmFyIEsgaW4gdGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRlLEspJiYoTltLXT10ZVtLXSl9KShZLFcpfSxmdW5jdGlvbihZLFcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBXJiZudWxsIT09Vyl0''@;'; put 'put ''aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFcpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIE4oKXt0aGlzLmNvbnN0cnVjdG9yPVl9aihZLFcpLFkucHJvdG90eXBlPW51bGw9PT1XP09iamVjdC5jcmVhdGUoVyk6KE4u''@;'; put 'put ''cHJvdG90eXBlPVcucHJvdG90eXBlLG5ldyBOKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLk5vdEZvdW5kRXJyb3I9dm9pZCAwO3ZhciBhZT1mdW5jdGlvbihZKXtmdW5jdGlvbiBXKE4pe3ZhciB0ZT1ZLmNhbGwodGhpcywiRXJyb3I6IFJl''@;'; put 'put ''c291cmNlIGF0ICIuY29uY2F0KE4sIiB3YXMgbm90IGZvdW5kIikpfHx0aGlzO3JldHVybiB0ZS51cmw9Tix0ZS5uYW1lPSJOb3RGb3VuZEVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YodGUsVy5wcm90b3R5cGUpLHRlfXJldHVybiByZShXLFkpLFd9KEVycm9yKTtRLk5vdEZvdW5kRXJy''@;'; put 'put ''b3I9YWV9LDkyNzk6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmUsYWU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChyZT1mdW5jdGlvbihOLHRlKXtyZXR1cm4ocmU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9u''@;'; put 'put ''KEssSil7Sy5fX3Byb3RvX189Sn18fGZ1bmN0aW9uKEssSil7Zm9yKHZhciBzZSBpbiBKKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChKLHNlKSYmKEtbc2VdPUpbc2VdKX0pKE4sdGUpfSxmdW5jdGlvbihOLHRlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdGUmJm51bGwh''@;'; put 'put ''PT10ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKHRlKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBLKCl7dGhpcy5jb25zdHJ1Y3Rvcj1OfXJlKE4sdGUpLE4ucHJvdG90eXBlPW51bGw9PT10ZT9PYmplY3QuY3Jl''@;'; put 'put ''YXRlKHRlKTooSy5wcm90b3R5cGU9dGUucHJvdG90eXBlLG5ldyBLKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLlJvb3RGb2xkZXJOb3RGb3VuZEVycm9yPXZvaWQgMDt2YXIgWT1qKDY3OTkpLFc9ZnVuY3Rpb24oTil7ZnVuY3Rpb24gdGUo''@;'; put 'put ''SyxKLHNlKXt2YXIgb2U9dGhpcyxjZT0iUm9vdCBmb2xkZXIgIi5jb25jYXQoSywiIHdhcyBub3QgZm91bmQuIikrIlxuUGxlYXNlIGNoZWNrICIuY29uY2F0KEosIi9TQVNEcml2ZS4iKSsiXG5JZiB0aGUgZm9sZGVyIERPRVMgZXhpc3QgdGhlbiBpdCBpcyBsaWtlbHkgYSBwZXJtaXNzaW9u''@;'; put 'put ''IHByb2JsZW0uXG4iO2lmKHNlKXt2YXIgZGU9KDAsWS5kZWNvZGVUb2tlbikoc2UpLnNjb3BlO2NlKz0iWW91ciBhY2Nlc3MgdG9rZW4gY29udGFpbnMgdGhlIGZvbGxvd2luZyBzY29wZXM6XG4iKyhkZT1kZS5tYXAoZnVuY3Rpb24odmUpe3JldHVybiIqICIrdmV9KSkuam9pbigiXG4iKX1y''@;'; put 'put ''ZXR1cm4ob2U9Ti5jYWxsKHRoaXMsY2UpfHx0aGlzKS5uYW1lPSJSb290Rm9sZGVyTm90Rm91bmRFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKG9lLHRlLnByb3RvdHlwZSksb2V9cmV0dXJuIGFlKHRlLE4pLHRlfShFcnJvcik7US5Sb290Rm9sZGVyTm90Rm91bmRFcnJvcj1XfSw5NTI2''@;'; put 'put ''OmZ1bmN0aW9uKFUsUSl7InVzZSBzdHJpY3QiO3ZhciBqLHJlPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaj1mdW5jdGlvbihZLFcpe3JldHVybihqPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihOLHRlKXtOLl9fcHJvdG9f''@;'; put 'put ''Xz10ZX18fGZ1bmN0aW9uKE4sdGUpe2Zvcih2YXIgSyBpbiB0ZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGUsSykmJihOW0tdPXRlW0tdKX0pKFksVyl9LGZ1bmN0aW9uKFksVyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFcmJm51bGwhPT1XKXRocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoVykrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gTigpe3RoaXMuY29uc3RydWN0b3I9WX1qKFksVyksWS5wcm90b3R5cGU9bnVsbD09PVc/T2JqZWN0LmNyZWF0ZShXKTooTi5wcm90b3R5cGU9Vy5w''@;'; put 'put ''cm90b3R5cGUsbmV3IE4pfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuU0FTOUF1dGhFcnJvcj12b2lkIDA7dmFyIGFlPWZ1bmN0aW9uKFkpe2Z1bmN0aW9uIFcoKXt2YXIgTj1ZLmNhbGwodGhpcywiVGhlIGNyZWRlbnRpYWxzIHlvdSBwcm92''@;'; put 'put ''aWRlZCBjYW5ub3QgYmUgYXV0aGVudGljYXRlZC4gUGxlYXNlIHByb3ZpZGUgYSB2YWxpZCBzZXQgb2YgY3JlZGVudGlhbHMuIil8fHRoaXM7cmV0dXJuIE4ubmFtZT0iQXV0aG9yaXplRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZihOLFcucHJvdG90eXBlKSxOfXJldHVybiByZShXLFkp''@;'; put 'put ''LFd9KEVycm9yKTtRLlNBUzlBdXRoRXJyb3I9YWV9LDg4NzU6ZnVuY3Rpb24oVSxRKXsidXNlIHN0cmljdCI7dmFyIGoscmU9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChqPWZ1bmN0aW9uKFksVyl7cmV0dXJuKGo9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNl''@;'; put 'put ''b2YgQXJyYXkmJmZ1bmN0aW9uKE4sdGUpe04uX19wcm90b19fPXRlfXx8ZnVuY3Rpb24oTix0ZSl7Zm9yKHZhciBLIGluIHRlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0ZSxLKSYmKE5bS109dGVbS10pfSkoWSxXKX0sZnVuY3Rpb24oWSxXKXtpZigiZnVuY3Rpb24i''@;'; put 'put ''IT10eXBlb2YgVyYmbnVsbCE9PVcpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhXKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBOKCl7dGhpcy5jb25zdHJ1Y3Rvcj1ZfWooWSxXKSxZLnByb3RvdHlwZT1udWxsPT09''@;'; put 'put ''Vz9PYmplY3QuY3JlYXRlKFcpOihOLnByb3RvdHlwZT1XLnByb3RvdHlwZSxuZXcgTil9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5XZWJvdXRSZXNwb25zZUVycm9yPXZvaWQgMDt2YXIgYWU9ZnVuY3Rpb24oWSl7ZnVuY3Rpb24gVyhOKXt2''@;'; put 'put ''YXIgdGU9WS5jYWxsKHRoaXMsIkVycm9yOiBlcnJvciB3aGlsZSBwYXJzaW5nIHJlc3BvbnNlIGZyb20gIi5jb25jYXQoTikpfHx0aGlzO3JldHVybiB0ZS51cmw9Tix0ZS5uYW1lPSJXZWJvdXRSZXNwb25zZUVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YodGUsVy5wcm90b3R5cGUpLHRl''@;'; put 'put ''fXJldHVybiByZShXLFkpLFd9KEVycm9yKTtRLldlYm91dFJlc3BvbnNlRXJyb3I9YWV9LDEzOTU6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKFksVyxOLHRlKXt2b2lkIDA9PT10''@;'; put 'put ''ZSYmKHRlPU4pO3ZhciBLPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVyxOKTtLJiYhKCJnZXQiaW4gSz8hVy5fX2VzTW9kdWxlOksud3JpdGFibGV8fEsuY29uZmlndXJhYmxlKXx8KEs9e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFdbTl19fSksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KFksdGUsSyl9OmZ1bmN0aW9uKFksVyxOLHRlKXt2b2lkIDA9PT10ZSYmKHRlPU4pLFlbdGVdPVdbTl19KSxhZT10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oWSxXKXtmb3IodmFyIE4gaW4gWSkiZGVmYXVsdCI9PT1OfHxPYmplY3QucHJvdG90eXBl''@;'; put 'put ''Lmhhc093blByb3BlcnR5LmNhbGwoVyxOKXx8cmUoVyxZLE4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksYWUoaigxMjQpLFEpLGFlKGooOTQ2NSksUSksYWUoaig1MjY3KSxRKSxhZShqKDkyMzIpLFEpLGFlKGooNTEwOSksUSksYWUoaig1NTE4''@;'; put 'put ''KSxRKSxhZShqKDg1MzEpLFEpLGFlKGooOTA3OSksUSksYWUoaigzMDk2KSxRKSxhZShqKDY3NDMpLFEpLGFlKGooNzg2NCksUSksYWUoaig5NTc3KSxRKSxhZShqKDkyNzkpLFEpLGFlKGooODg3NSksUSl9LDEyMzA6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9dGhpcyYm''@;'; put 'put ''dGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKFksVyxOLHRlKXt2b2lkIDA9PT10ZSYmKHRlPU4pO3ZhciBLPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVyxOKTtLJiYhKCJnZXQiaW4gSz8hVy5fX2VzTW9kdWxlOksud3JpdGFibGV8fEsuY29u''@;'; put 'put ''ZmlndXJhYmxlKXx8KEs9e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFdbTl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFksdGUsSyl9OmZ1bmN0aW9uKFksVyxOLHRlKXt2b2lkIDA9PT10ZSYmKHRlPU4pLFlbdGVdPVdbTl19KSxhZT10aGlzJiZ0aGlzLl9fZXhwb3J0''@;'; put 'put ''U3Rhcnx8ZnVuY3Rpb24oWSxXKXtmb3IodmFyIE4gaW4gWSkiZGVmYXVsdCI9PT1OfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVyxOKXx8cmUoVyxZLE4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksYWUoaig0NzApLFEp''@;'; put 'put ''LGFlKGooNDY2NiksUSksYWUoaig0OTc1KSxRKSxhZShqKDU3NjYpLFEpLGFlKGooMjE1KSxRKSxhZShqKDQ3ODIpLFEpLGFlKGooNDE2OCksUSksYWUoaig4NTE2KSxRKSxhZShqKDU4NDEpLFEpLGFlKGooMjQ5MyksUSksYWUoaig2MDM4KSxRKSxhZShqKDk0OTMpLFEpLGFlKGooMzE1Myks''@;'; put 'put ''USksYWUoaig4NjUwKSxRKSxhZShqKDYxNzcpLFEpfSwzMzAyOmZ1bmN0aW9uKFUsUSl7InVzZSBzdHJpY3QiO3ZhciBqPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIGo9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oWSl7Zm9yKHZhciBXLE49MSx0ZT1hcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoO048dGU7TisrKWZvcih2YXIgSyBpbiBXPWFyZ3VtZW50c1tOXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVyxLKSYmKFlbS109V1tLXSk7cmV0dXJuIFl9LGouYXBwbHkodGhpcyxhcmd1bWVudHMpfSxyZT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rp''@;'; put 'put ''b24oWSxXLE4sdGUpe3JldHVybiBuZXcoTnx8KE49UHJvbWlzZSkpKGZ1bmN0aW9uKEssSil7ZnVuY3Rpb24gc2UoZGUpe3RyeXtjZSh0ZS5uZXh0KGRlKSl9Y2F0Y2godmUpe0oodmUpfX1mdW5jdGlvbiBvZShkZSl7dHJ5e2NlKHRlLnRocm93KGRlKSl9Y2F0Y2godmUpe0oodmUpfX1mdW5j''@;'; put 'put ''dGlvbiBjZShkZSl7dmFyIHZlO2RlLmRvbmU/SyhkZS52YWx1ZSk6KHZlPWRlLnZhbHVlLHZlIGluc3RhbmNlb2YgTj92ZTpuZXcgTihmdW5jdGlvbihBZSl7QWUodmUpfSkpLnRoZW4oc2Usb2UpfWNlKCh0ZT10ZS5hcHBseShZLFd8fFtdKSkubmV4dCgpKX0pfSxhZT10aGlzJiZ0aGlzLl9f''@;'; put 'put ''Z2VuZXJhdG9yfHxmdW5jdGlvbihZLFcpe3ZhciBOLHRlLEssSixzZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZLWzBdKXRocm93IEtbMV07cmV0dXJuIEtbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gSj17bmV4dDpvZSgwKSx0aHJvdzpvZSgxKSxyZXR1cm46b2UoMil9LCJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihKW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLEo7ZnVuY3Rpb24gb2UoY2Upe3JldHVybiBmdW5jdGlvbihkZSl7cmV0dXJuIGZ1bmN0aW9uKHZlKXtpZihOKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBp''@;'; put 'put ''cyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3NlOyl0cnl7aWYoTj0xLHRlJiYoSz0yJnZlWzBdP3RlLnJldHVybjp2ZVswXT90ZS50aHJvd3x8KChLPXRlLnJldHVybikmJksuY2FsbCh0ZSksMCk6dGUubmV4dCkmJiEoSz1LLmNhbGwodGUsdmVbMV0pKS5kb25lKXJldHVybiBLO3N3aXRj''@;'; put 'put ''aCh0ZT0wLEsmJih2ZT1bMiZ2ZVswXSxLLnZhbHVlXSksdmVbMF0pe2Nhc2UgMDpjYXNlIDE6Sz12ZTticmVhaztjYXNlIDQ6cmV0dXJuIHNlLmxhYmVsKysse3ZhbHVlOnZlWzFdLGRvbmU6ITF9O2Nhc2UgNTpzZS5sYWJlbCsrLHRlPXZlWzFdLHZlPVswXTtjb250aW51ZTtjYXNlIDc6dmU9''@;'; put 'put ''c2Uub3BzLnBvcCgpLHNlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChLPShLPXNlLnRyeXMpLmxlbmd0aD4wJiZLW0subGVuZ3RoLTFdKXx8NiE9PXZlWzBdJiYyIT09dmVbMF0pKXtzZT0wO2NvbnRpbnVlfWlmKDM9PT12ZVswXSYmKCFLfHx2ZVsxXT5LWzBdJiZ2ZVsxXTxL''@;'; put 'put ''WzNdKSl7c2UubGFiZWw9dmVbMV07YnJlYWt9aWYoNj09PXZlWzBdJiZzZS5sYWJlbDxLWzFdKXtzZS5sYWJlbD1LWzFdLEs9dmU7YnJlYWt9aWYoSyYmc2UubGFiZWw8S1syXSl7c2UubGFiZWw9S1syXSxzZS5vcHMucHVzaCh2ZSk7YnJlYWt9S1syXSYmc2Uub3BzLnBvcCgpLHNlLnRyeXMu''@;'; put 'put ''cG9wKCk7Y29udGludWV9dmU9Vy5jYWxsKFksc2UpfWNhdGNoKEFlKXt2ZT1bNixBZV0sdGU9MH1maW5hbGx5e049Sz0wfWlmKDUmdmVbMF0pdGhyb3cgdmVbMV07cmV0dXJue3ZhbHVlOnZlWzBdP3ZlWzFdOnZvaWQgMCxkb25lOiEwfX0oW2NlLGRlXSl9fX07T2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuYXBwZW5kRXh0cmFSZXNwb25zZUF0dHJpYnV0ZXM9dm9pZCAwLFEuYXBwZW5kRXh0cmFSZXNwb25zZUF0dHJpYnV0ZXM9ZnVuY3Rpb24oWSxXKXtyZXR1cm4gcmUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIE4sdGU7''@;'; put 'put ''cmV0dXJuIGFlKHRoaXMsZnVuY3Rpb24oSyl7cmV0dXJuIE49e30sbnVsbCE9VyYmVy5sZW5ndGg/KHRlPVcucmVkdWNlKGZ1bmN0aW9uKEosc2Upe3JldHVybiBKW3NlXT1ZW3NlXSxKfSx7fSksTj1qKHtyZXN1bHQ6WS5yZXN1bHR9LHRlKSk6Tj1ZLnJlc3VsdCxbMixOXX0pfSl9fSw3OTIy''@;'; put 'put ''OmZ1bmN0aW9uKFUsUSl7InVzZSBzdHJpY3QiO3ZhciBqPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihhZSxZLFcsTil7cmV0dXJuIG5ldyhXfHwoVz1Qcm9taXNlKSkoZnVuY3Rpb24odGUsSyl7ZnVuY3Rpb24gSihjZSl7dHJ5e29lKE4ubmV4dChjZSkpfWNhdGNoKGRlKXtLKGRl''@;'; put 'put ''KX19ZnVuY3Rpb24gc2UoY2Upe3RyeXtvZShOLnRocm93KGNlKSl9Y2F0Y2goZGUpe0soZGUpfX1mdW5jdGlvbiBvZShjZSl7dmFyIGRlO2NlLmRvbmU/dGUoY2UudmFsdWUpOihkZT1jZS52YWx1ZSxkZSBpbnN0YW5jZW9mIFc/ZGU6bmV3IFcoZnVuY3Rpb24odmUpe3ZlKGRlKX0pKS50aGVu''@;'; put 'put ''KEosc2UpfW9lKChOPU4uYXBwbHkoYWUsWXx8W10pKS5uZXh0KCkpfSl9LHJlPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKGFlLFkpe3ZhciBXLE4sdGUsSyxKPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJnRlWzBdKXRocm93IHRlWzFdO3JldHVybiB0ZVsxXX0sdHJ5''@;'; put 'put ''czpbXSxvcHM6W119O3JldHVybiBLPXtuZXh0OnNlKDApLHRocm93OnNlKDEpLHJldHVybjpzZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKEtbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksSztmdW5jdGlvbiBzZShvZSl7cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''KGNlKXtyZXR1cm4gZnVuY3Rpb24oZGUpe2lmKFcpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7SjspdHJ5e2lmKFc9MSxOJiYodGU9MiZkZVswXT9OLnJldHVybjpkZVswXT9OLnRocm93fHwoKHRlPU4ucmV0dXJuKSYmdGUuY2Fs''@;'; put 'put ''bChOKSwwKTpOLm5leHQpJiYhKHRlPXRlLmNhbGwoTixkZVsxXSkpLmRvbmUpcmV0dXJuIHRlO3N3aXRjaChOPTAsdGUmJihkZT1bMiZkZVswXSx0ZS52YWx1ZV0pLGRlWzBdKXtjYXNlIDA6Y2FzZSAxOnRlPWRlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gSi5sYWJlbCsrLHt2YWx1ZTpkZVsxXSxk''@;'; put 'put ''b25lOiExfTtjYXNlIDU6Si5sYWJlbCsrLE49ZGVbMV0sZGU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpkZT1KLm9wcy5wb3AoKSxKLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKCh0ZT0odGU9Si50cnlzKS5sZW5ndGg+MCYmdGVbdGUubGVuZ3RoLTFdKXx8NiE9PWRlWzBdJiYyIT09''@;'; put 'put ''ZGVbMF0pKXtKPTA7Y29udGludWV9aWYoMz09PWRlWzBdJiYoIXRlfHxkZVsxXT50ZVswXSYmZGVbMV08dGVbM10pKXtKLmxhYmVsPWRlWzFdO2JyZWFrfWlmKDY9PT1kZVswXSYmSi5sYWJlbDx0ZVsxXSl7Si5sYWJlbD10ZVsxXSx0ZT1kZTticmVha31pZih0ZSYmSi5sYWJlbDx0ZVsyXSl7''@;'; put 'put ''Si5sYWJlbD10ZVsyXSxKLm9wcy5wdXNoKGRlKTticmVha310ZVsyXSYmSi5vcHMucG9wKCksSi50cnlzLnBvcCgpO2NvbnRpbnVlfWRlPVkuY2FsbChhZSxKKX1jYXRjaCh2ZSl7ZGU9WzYsdmVdLE49MH1maW5hbGx5e1c9dGU9MH1pZig1JmRlWzBdKXRocm93IGRlWzFdO3JldHVybnt2YWx1''@;'; put 'put ''ZTpkZVswXT9kZVsxXTp2b2lkIDAsZG9uZTohMH19KFtvZSxjZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmFzeW5jRm9yRWFjaD12b2lkIDAsUS5hc3luY0ZvckVhY2g9ZnVuY3Rpb24oYWUsWSl7cmV0dXJuIGoodGhpcyx2b2lkIDAs''@;'; put 'put ''dm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFc7cmV0dXJuIHJlKHRoaXMsZnVuY3Rpb24oTil7c3dpdGNoKE4ubGFiZWwpe2Nhc2UgMDpXPTAsTi5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gVzxhZS5sZW5ndGg/WzQsWShhZVtXXSxXLGFlKV06WzMsNF07Y2FzZSAyOk4uc2VudCgpLE4ubGFiZWw9Mztj''@;'; put 'put ''YXNlIDM6cmV0dXJuIFcrKyxbMywxXTtjYXNlIDQ6cmV0dXJuWzJdfX0pfSl9fSwzNzkzOihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmNvbXBhcmVUaW1lc3RhbXBzPXZvaWQgMCxRLmNvbXBhcmVUaW1lc3Rh''@;'; put 'put ''bXBzPWZ1bmN0aW9uKGoscmUpe3JldHVybiByZS50aW1lc3RhbXAuZ2V0VGltZSgpLWoudGltZXN0YW1wLmdldFRpbWUoKX19LDM1NTM6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuU0FTSlNfTE9HU19TRVBB''@;'; put 'put ''UkFUT1I9dm9pZCAwLFEuU0FTSlNfTE9HU19TRVBBUkFUT1I9IlNBU0pTX0xPR1NfU0VQQVJBVE9SXzE2M2VlMTdiNmZmMjRmMDI4OTI4OTcyZDgwYTI2Nzg0In0sMjQwMjooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDUxMDgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2Vz''@;'; put 'put ''TW9kdWxlIix7dmFsdWU6ITB9KSxRLmlzRm9ybWF0c1RhYmxlPVEuY29udmVydFRvQ1NWPXZvaWQgMDt2YXIgYWU9aig2NDY3KSxZPWooOTc3OCk7US5jb252ZXJ0VG9DU1Y9ZnVuY3Rpb24oTix0ZSl7dmFyIEs7aWYoIU5bdGVdKXRocm93KDAsWS5wcmVmaXhNZXNzYWdlKSgiTm8gdGFibGUg''@;'; put 'put ''cHJvdmlkZWQgdG8gYmUgY29udmVydGVkIHRvIENTVi4iLCJFcnJvciB3aGlsZSBjb252ZXJ0aW5nIHRvIENTVi4gIik7dmFyIEo9Tlt0ZV07aWYoIUFycmF5LmlzQXJyYXkoSikpcmV0dXJuIiI7dmFyIHNlLG9lPW51bGw9PT0oSz1OWyIkIi5jb25jYXQodGUpXSl8fHZvaWQgMD09PUs/dm9p''@;'; put 'put ''ZCAwOksuZm9ybWF0cyxjZT1bXSxkZT0hMTtvZSYmKGNlPU9iamVjdC5rZXlzKG9lKS5tYXAoZnVuY3Rpb24oQWUpe3JldHVybiIiLmNvbmNhdChBZSwiOiIpLmNvbmNhdChvZVtBZV0pfSkpO3ZhciB2ZT1PYmplY3Qua2V5cyhKWzBdKTtyZXR1cm4gdmUuZm9yRWFjaChmdW5jdGlvbihBZSl7''@;'; put 'put ''aWYoIW9lfHwhT2JqZWN0LmtleXMob2UpLmluY2x1ZGVzKEFlKSl7dmFyIGtlPSExLFNlPSExO2lmKEouZm9yRWFjaChmdW5jdGlvbihPKXtudWxsPT09T1tBZV18fCJudW1iZXIiPT10eXBlb2YgT1tBZV0/a2U9ITA6InN0cmluZyI9PXR5cGVvZiBPW0FlXSYmKDAsYWUuaXNTcGVjaWFsTWlz''@;'; put 'put ''c2luZykoT1tBZV0pJiYoU2U9ITApfSksa2UmJlNlKWNlLnB1c2goIiIuY29uY2F0KEFlLCI6YmVzdC4iKSksb2V8fChvZT17fSksb2VbQWVdPSJiZXN0LiI7ZWxzZXt2YXIgSWU9bnVsbCxUZT0hMSxNZT0tMSxoZT1KLm1hcChmdW5jdGlvbihPLHope2lmKE9bQWVdfHwiIj09PU9bQWVdKXtJ''@;'; put 'put ''ZT9UZXx8KE1lPShUZT0oIiI9PT1PW0FlXXx8InN0cmluZyI9PXR5cGVvZiBPW0FlXT8iY2hhcnMiOiJudW1iZXIiKSE9PUllKT96KzE6LTEpOkllPSIiPT09T1tBZV18fCJzdHJpbmciPT10eXBlb2YgT1tBZV0/ImNoYXJzIjoibnVtYmVyIjt2YXIgbmU9dm9pZCAwO3JldHVybiJzdHJpbmci''@;'; put 'put ''PT10eXBlb2YgT1tBZV0mJihuZT1XKE9bQWVdKSksbmV9fSkuc29ydChmdW5jdGlvbihPLHope3JldHVybiB6LU99KVswXTtoZSYmaGU+MzI3NjUmJihkZT0hMCksVGUmJnJlLmVycm9yKCJSb3cgKCIuY29uY2F0KE1lLCIpLCBDb2x1bW4gKCIpLmNvbmNhdChBZSwiKSBoYXMgbWl4ZWQgdHlw''@;'; put 'put ''ZXM6IEVSUk9SIikpLGNlLnB1c2goIiIuY29uY2F0KEFlLCI6IikuY29uY2F0KCJjaGFycyI9PT1JZT8iJGNoYXIiOiIiKS5jb25jYXQoaGV8fCgiY2hhcnMiPT09SWU/IjEiOiJiZXN0IiksIi4iKSl9fX0pLG9lJiYoY2U9Y2Uuc29ydChmdW5jdGlvbihBZSxrZSl7cmV0dXJuIHZlLmluZGV4''@;'; put 'put ''T2YoQWUucmVwbGFjZSgvOi4qLywiIikpLXZlLmluZGV4T2Yoa2UucmVwbGFjZSgvOi4qLywiIikpfSkpLGRlPyJFUlJPUjogTEFSR0UgU1RSSU5HIExFTkdUSCI6KHNlPUoubWFwKGZ1bmN0aW9uKEFlKXtyZXR1cm4gT2JqZWN0LmtleXMoQWUpLm1hcChmdW5jdGlvbihrZSxTZSl7dmFyIEll''@;'; put 'put ''LFRlPUFlW2tlXTtpZigibnVtYmVyIj09dHlwZW9mIFRlKXJldHVybiBUZTtpZihJZT1udWxsPT09VGU/IiI6VGUsb2UmJiJiZXN0LiI9PT1vZVtrZV0pe2lmKEllJiYhKDAsYWUuaXNTcGVjaWFsTWlzc2luZykoSWUpKXRocm93IG5ldyBFcnJvcigiQSBTcGVjaWFsIG1pc3NpbmcgdmFsdWUg''@;'; put 'put ''Y2FuIG9ubHkgYmUgYSBzaW5nbGUgY2hhcmFjdGVyIGZyb20gJ0EnIHRvICdaJywgJ18nLCAnLlthLXpdJywgJy5fJyIpO3ZhciBNZT1JZS5pbmNsdWRlcygiLiIpPyIiOiIuIjtyZXR1cm4iIi5jb25jYXQoTWUpLmNvbmNhdChJZS50b0xvd2VyQ2FzZSgpKX1yZXR1cm4gSWU9SWUucmVwbGFj''@;'; put 'put ''ZSgvIi9nLCciIicpLChJZT0nIicuY29uY2F0KEllLCciJykpLnN1YnN0cmluZygxLEllLmxlbmd0aC0xKS5zZWFyY2goLyhcdHxcbnxccnwsfFwnfFwiKS9nbSk8MCYmKEllPUllLnN1YnN0cmluZygxLEllLmxlbmd0aC0xKSksIiI9PT0oSWU9SWUucmVwbGFjZSgvXHJcbi9nbSwiXG4iKSkm''@;'; put 'put ''JmNlW1NlXS5pbmNsdWRlcygiYmVzdCIpJiYoSWU9Ii4iKSxJZX0pLmpvaW4oIiwiKX0pLGNlLmpvaW4oIiwiKS5yZXBsYWNlKC8sL2csIiAiKSsiXHJcbiIrc2Uuam9pbigiXHJcbiIpKX0sUS5pc0Zvcm1hdHNUYWJsZT1mdW5jdGlvbihOKXtyZXR1cm4vXlwkLiovLnRlc3QoTil9O3ZhciBX''@;'; put 'put ''PWZ1bmN0aW9uKE4pe2Zvcih2YXIgdGU9Ti5sZW5ndGgsSz1OLmxlbmd0aC0xO0s+PTA7Sy0tKXt2YXIgSj1OLmNoYXJDb2RlQXQoSyk7Sj4xMjcmJko8PTIwNDc/dGUrKzpKPjIwNDcmJko8PTY1NTM1JiYodGUrPTIpLEo+PTU2MzIwJiZKPD01NzM0MyYmSy0tfXJldHVybiB0ZX19LDYxMTY6''@;'; put 'put ''KFUsUSxqKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5jcmVhdGVBeGlvc0luc3RhbmNlPXZvaWQgMDt2YXIgcmU9aig5NjY5KTtRLmNyZWF0ZUF4aW9zSW5zdGFuY2U9ZnVuY3Rpb24oYWUsWSl7cmV0dXJuIHJlLmRl''@;'; put 'put ''ZmF1bHQuY3JlYXRlKHtiYXNlVVJMOmFlLGh0dHBzQWdlbnQ6WX0pfX0sOTgyNTooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5kZWxheT12b2lkIDAsUS5kZWxheT1mdW5jdGlvbihqKXtyZXR1cm4gbmV3IFBy''@;'; put 'put ''b21pc2UoZnVuY3Rpb24ocmUpe3JldHVybiBzZXRUaW1lb3V0KHJlLGopfSl9fSw5OTA6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9aig0MTU1KSxhZT1qKDUxMDgpLFk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHRlLEssSixzZSl7cmV0dXJuIG5ldyhKfHwo''@;'; put 'put ''Sj1Qcm9taXNlKSkoZnVuY3Rpb24ob2UsY2Upe2Z1bmN0aW9uIGRlKGtlKXt0cnl7QWUoc2UubmV4dChrZSkpfWNhdGNoKFNlKXtjZShTZSl9fWZ1bmN0aW9uIHZlKGtlKXt0cnl7QWUoc2UudGhyb3coa2UpKX1jYXRjaChTZSl7Y2UoU2UpfX1mdW5jdGlvbiBBZShrZSl7dmFyIFNlO2tlLmRv''@;'; put 'put ''bmU/b2Uoa2UudmFsdWUpOihTZT1rZS52YWx1ZSxTZSBpbnN0YW5jZW9mIEo/U2U6bmV3IEooZnVuY3Rpb24oSWUpe0llKFNlKX0pKS50aGVuKGRlLHZlKX1BZSgoc2U9c2UuYXBwbHkodGUsS3x8W10pKS5uZXh0KCkpfSl9LFc9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24odGUs''@;'; put 'put ''Syl7dmFyIEosc2Usb2UsY2UsZGU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmb2VbMF0pdGhyb3cgb2VbMV07cmV0dXJuIG9lWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGNlPXtuZXh0OnZlKDApLHRocm93OnZlKDEpLHJldHVybjp2ZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IFN5bWJvbCYmKGNlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGNlO2Z1bmN0aW9uIHZlKEFlKXtyZXR1cm4gZnVuY3Rpb24oa2Upe3JldHVybiBmdW5jdGlvbihTZSl7aWYoSil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVj''@;'; put 'put ''dXRpbmcuIik7Zm9yKDtkZTspdHJ5e2lmKEo9MSxzZSYmKG9lPTImU2VbMF0/c2UucmV0dXJuOlNlWzBdP3NlLnRocm93fHwoKG9lPXNlLnJldHVybikmJm9lLmNhbGwoc2UpLDApOnNlLm5leHQpJiYhKG9lPW9lLmNhbGwoc2UsU2VbMV0pKS5kb25lKXJldHVybiBvZTtzd2l0Y2goc2U9MCxv''@;'; put 'put ''ZSYmKFNlPVsyJlNlWzBdLG9lLnZhbHVlXSksU2VbMF0pe2Nhc2UgMDpjYXNlIDE6b2U9U2U7YnJlYWs7Y2FzZSA0OnJldHVybiBkZS5sYWJlbCsrLHt2YWx1ZTpTZVsxXSxkb25lOiExfTtjYXNlIDU6ZGUubGFiZWwrKyxzZT1TZVsxXSxTZT1bMF07Y29udGludWU7Y2FzZSA3OlNlPWRlLm9w''@;'; put 'put ''cy5wb3AoKSxkZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgob2U9KG9lPWRlLnRyeXMpLmxlbmd0aD4wJiZvZVtvZS5sZW5ndGgtMV0pfHw2IT09U2VbMF0mJjIhPT1TZVswXSkpe2RlPTA7Y29udGludWV9aWYoMz09PVNlWzBdJiYoIW9lfHxTZVsxXT5vZVswXSYmU2VbMV08''@;'; put 'put ''b2VbM10pKXtkZS5sYWJlbD1TZVsxXTticmVha31pZig2PT09U2VbMF0mJmRlLmxhYmVsPG9lWzFdKXtkZS5sYWJlbD1vZVsxXSxvZT1TZTticmVha31pZihvZSYmZGUubGFiZWw8b2VbMl0pe2RlLmxhYmVsPW9lWzJdLGRlLm9wcy5wdXNoKFNlKTticmVha31vZVsyXSYmZGUub3BzLnBvcCgp''@;'; put 'put ''LGRlLnRyeXMucG9wKCk7Y29udGludWV9U2U9Sy5jYWxsKHRlLGRlKX1jYXRjaChJZSl7U2U9WzYsSWVdLHNlPTB9ZmluYWxseXtKPW9lPTB9aWYoNSZTZVswXSl0aHJvdyBTZVsxXTtyZXR1cm57dmFsdWU6U2VbMF0/U2VbMV06dm9pZCAwLGRvbmU6ITB9fShbQWUsa2VdKX19fTtPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5mZXRjaExvZz1RLmZldGNoTG9nQnlDaHVua3M9dm9pZCAwO3ZhciBOPWooOTc3OCk7US5mZXRjaExvZ0J5Q2h1bmtzPWZ1bmN0aW9uKHRlLEssSixzZSl7cmV0dXJuIFkodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKG9lKXtzd2l0Y2gob2UubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCwoMCxRLmZldGNoTG9nKSh0ZSxLLEosMCxzZSldO2Nhc2UgMTpyZXR1cm5bMixvZS5zZW50KCldfX0pfSl9LFEuZmV0Y2hMb2c9ZnVuY3Rpb24odGUsSyxKLHNlLG9lKXty''@;'; put 'put ''ZXR1cm4gWSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBjZSxkZSx2ZSxBZSxrZTtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKFNlKXtzd2l0Y2goU2UubGFiZWwpe2Nhc2UgMDpjZT1yZS5sb2dnZXJ8fGFlLGRlPSIiLHZlPW9lPDFlND9vZToxZTQsU2UubGFiZWw9MTtjYXNl''@;'; put 'put ''IDE6cmV0dXJuIGNlLmluZm8oIkZldGNoaW5nIGxvZ3MgZnJvbSBsaW5lIG5vOiAiLmNvbmNhdChzZSsxLCIgdG8gIikuY29uY2F0KHNlK3ZlLCIgb2YgIikuY29uY2F0KG9lLCIuIikpLFs0LHRlLmdldCgiIi5jb25jYXQoSiwiP3N0YXJ0PSIpLmNvbmNhdChzZSwiJmxpbWl0PSIpLmNvbmNh''@;'; put 'put ''dCh2ZSksSykudGhlbihmdW5jdGlvbihJZSl7cmV0dXJuIEllLnJlc3VsdH0pLmNhdGNoKGZ1bmN0aW9uKEllKXt0aHJvdygwLE4ucHJlZml4TWVzc2FnZSkoSWUsIkVycm9yIHdoaWxlIGdldHRpbmcgbG9nLiAiKX0pXTtjYXNlIDI6aWYoMD09PShBZT1TZS5zZW50KCkpLml0ZW1zLmxlbmd0''@;'; put 'put ''aClyZXR1cm5bMyw0XTtrZT1BZS5pdGVtcy5tYXAoZnVuY3Rpb24oSWUpe3JldHVybiBJZS5saW5lfSkuam9pbigiXG4iKSxkZSs9a2Usc2UrPXZlLFNlLmxhYmVsPTM7Y2FzZSAzOmlmKHNlPG9lKXJldHVyblszLDFdO1NlLmxhYmVsPTQ7Y2FzZSA0OnJldHVyblsyLGRlXX19KX0pfX0sNzE0''@;'; put 'put ''OihVLFEsaik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuZm9ybWF0RGF0YUZvclJlcXVlc3Q9dm9pZCAwO3ZhciByZT1qKDI0MDIpLGFlPWooNDc5OSk7US5mb3JtYXREYXRhRm9yUmVxdWVzdD1mdW5jdGlvbihZKXt2''@;'; put 'put ''YXIgVz1bXSxOPTAsdGU9e307Zm9yKHZhciBLIGluIFkpaWYoISgwLHJlLmlzRm9ybWF0c1RhYmxlKShLKXx8IU9iamVjdC5rZXlzKFkpLmluY2x1ZGVzKEsucmVwbGFjZSgvXlwkLywiIikpKXtOKyssKDAscmUuaXNGb3JtYXRzVGFibGUpKEspfHxXLnB1c2goSyk7dmFyIEo9KDAscmUuY29u''@;'; put 'put ''dmVydFRvQ1NWKShZLEspO2lmKCJFUlJPUjogTEFSR0UgU1RSSU5HIExFTkdUSCI9PT1KKXRocm93IG5ldyBFcnJvcigiVGhlIG1heCBsZW5ndGggb2YgYSBzdHJpbmcgdmFsdWUgaW4gU0FTanMgaXMgMzI3NjUgY2hhcmFjdGVycy4iKTtpZihKLmxlbmd0aD4xNmUzKXt2YXIgc2U9KDAsYWUu''@;'; put 'put ''c3BsaXRDaHVua3MpKEopO3RlWyJzYXNqcyIuY29uY2F0KE4sImRhdGEwIildPXNlLmxlbmd0aCxzZS5mb3JFYWNoKGZ1bmN0aW9uKG9lLGNlKXt0ZVsic2FzanMiLmNvbmNhdChOLCJkYXRhIikuY29uY2F0KGNlKzEpXT1vZX0pfWVsc2UgdGVbInNhc2pzIi5jb25jYXQoTiwiZGF0YSIpXT1K''@;'; put 'put ''fXJldHVybiB0ZS5zYXNqc190YWJsZXM9Vy5qb2luKCIgIiksdGV9fSwxODg0OihVLFEsaik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuZ2V0VmFsaWRKc29uPXZvaWQgMDt2YXIgcmU9aigxMzk1KTtRLmdldFZhbGlk''@;'; put 'put ''SnNvbj1mdW5jdGlvbihhZSl7dHJ5e2lmKG51bGw9PWFlKXRocm93IG5ldyByZS5JbnZhbGlkSnNvbkVycm9yO2lmKEFycmF5LmlzQXJyYXkoYWUpKXRocm93IG5ldyByZS5Kc29uUGFyc2VBcnJheUVycm9yO3JldHVybiJvYmplY3QiPT10eXBlb2YgYWU/YWU6IiI9PT1hZT97fTpKU09OLnBh''@;'; put 'put ''cnNlKGFlKX1jYXRjaChZKXt0aHJvdyBZIGluc3RhbmNlb2YgcmUuSnNvblBhcnNlQXJyYXlFcnJvcj9ZOm5ldyByZS5JbnZhbGlkSnNvbkVycm9yfX19LDU5Mjg6ZnVuY3Rpb24oVSxRLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgcmU9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3Qu''@;'; put 'put ''Y3JlYXRlP2Z1bmN0aW9uKFksVyxOLHRlKXt2b2lkIDA9PT10ZSYmKHRlPU4pO3ZhciBLPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVyxOKTtLJiYhKCJnZXQiaW4gSz8hVy5fX2VzTW9kdWxlOksud3JpdGFibGV8fEsuY29uZmlndXJhYmxlKXx8KEs9e2VudW1lcmFibGU6ITAs''@;'; put 'put ''Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFdbTl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFksdGUsSyl9OmZ1bmN0aW9uKFksVyxOLHRlKXt2b2lkIDA9PT10ZSYmKHRlPU4pLFlbdGVdPVdbTl19KSxhZT10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oWSxXKXtmb3IodmFyIE4g''@;'; put 'put ''aW4gWSkiZGVmYXVsdCI9PT1OfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVyxOKXx8cmUoVyxZLE4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksYWUoaigzMzAyKSxRKSxhZShqKDc5MjIpLFEpLGFlKGooMzc5MyksUSks''@;'; put 'put ''YWUoaigyNDAyKSxRKSxhZShqKDM1NTMpLFEpLGFlKGooNjExNiksUSksYWUoaig5ODI1KSxRKSxhZShqKDk5MCksUSksYWUoaigxODg0KSxRKSxhZShqKDQyNDMpLFEpLGFlKGooMjU3KSxRKSxhZShqKDIpLFEpLGFlKGooMjYxNSksUSksYWUoaigyOTIwKSxRKSxhZShqKDI0MjIpLFEpLGFl''@;'; put 'put ''KGooMzEpLFEpLGFlKGooNjUxNSksUSksYWUoaig2NDE2KSxRKSxhZShqKDI4MTMpLFEpLGFlKGooOTg5NiksUSksYWUoaig0Nzk5KSxRKSxhZShqKDQ1MTYpLFEpfSw0MjQzOihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNDE1NSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9f''@;'; put 'put ''ZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuaXNOb2RlPXZvaWQgMCxRLmlzTm9kZT1mdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT1yZSYmbnVsbCE9cmUudmVyc2lvbnMmJm51bGwhPXJlLnZlcnNpb25zLm5vZGV9fSwyNTc6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuaXNSZWxhdGl2ZVBhdGg9dm9pZCAwLFEuaXNSZWxhdGl2ZVBhdGg9ZnVuY3Rpb24oail7cmV0dXJuISFqJiYhai5zdGFydHNXaXRoKCIvIil9fSwyOihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJf''@;'; put 'put ''X2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLmlzVXJpPXZvaWQgMCxRLmlzVXJpPWZ1bmN0aW9uKGope3JldHVybi9eXC9mb2xkZXJzXC9mb2xkZXJzXC8vLnRlc3Qoail9fSwyNjE1OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFs''@;'; put 'put ''dWU6ITB9KSxRLmlzVXJsPXZvaWQgMCxRLmlzVXJsPWZ1bmN0aW9uKGope3RyeXt2YXIgcmU9bmV3IFVSTChqKTtpZighWyJodHRwOiIsImh0dHBzOiJdLmluY2x1ZGVzKHJlLnByb3RvY29sKSlyZXR1cm4hMX1jYXRjaChhZSl7cmV0dXJuITF9cmV0dXJuITB9fSwxMjEwOmZ1bmN0aW9uKFUs''@;'; put 'put ''USl7InVzZSBzdHJpY3QiO3ZhciBqLEsscmU9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKEssSixzZSxvZSl7cmV0dXJuIG5ldyhzZXx8KHNlPVByb21pc2UpKShmdW5jdGlvbihjZSxkZSl7ZnVuY3Rpb24gdmUoU2Upe3RyeXtrZShvZS5uZXh0KFNlKSl9Y2F0Y2goSWUpe2RlKEll''@;'; put 'put ''KX19ZnVuY3Rpb24gQWUoU2Upe3RyeXtrZShvZS50aHJvdyhTZSkpfWNhdGNoKEllKXtkZShJZSl9fWZ1bmN0aW9uIGtlKFNlKXt2YXIgSWU7U2UuZG9uZT9jZShTZS52YWx1ZSk6KEllPVNlLnZhbHVlLEllIGluc3RhbmNlb2Ygc2U/SWU6bmV3IHNlKGZ1bmN0aW9uKFRlKXtUZShJZSl9KSku''@;'; put 'put ''dGhlbih2ZSxBZSl9a2UoKG9lPW9lLmFwcGx5KEssSnx8W10pKS5uZXh0KCkpfSl9LGFlPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKEssSil7dmFyIHNlLG9lLGNlLGRlLHZlPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmNlWzBdKXRocm93IGNlWzFdO3JldHVybiBj''@;'; put 'put ''ZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBkZT17bmV4dDpBZSgwKSx0aHJvdzpBZSgxKSxyZXR1cm46QWUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihkZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxkZTtmdW5jdGlvbiBBZShrZSl7cmV0''@;'; put 'put ''dXJuIGZ1bmN0aW9uKFNlKXtyZXR1cm4gZnVuY3Rpb24oSWUpe2lmKHNlKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3ZlOyl0cnl7aWYoc2U9MSxvZSYmKGNlPTImSWVbMF0/b2UucmV0dXJuOkllWzBdP29lLnRocm93fHwoKGNl''@;'; put 'put ''PW9lLnJldHVybikmJmNlLmNhbGwob2UpLDApOm9lLm5leHQpJiYhKGNlPWNlLmNhbGwob2UsSWVbMV0pKS5kb25lKXJldHVybiBjZTtzd2l0Y2gob2U9MCxjZSYmKEllPVsyJkllWzBdLGNlLnZhbHVlXSksSWVbMF0pe2Nhc2UgMDpjYXNlIDE6Y2U9SWU7YnJlYWs7Y2FzZSA0OnJldHVybiB2''@;'; put 'put ''ZS5sYWJlbCsrLHt2YWx1ZTpJZVsxXSxkb25lOiExfTtjYXNlIDU6dmUubGFiZWwrKyxvZT1JZVsxXSxJZT1bMF07Y29udGludWU7Y2FzZSA3OkllPXZlLm9wcy5wb3AoKSx2ZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoY2U9KGNlPXZlLnRyeXMpLmxlbmd0aD4wJiZjZVtj''@;'; put 'put ''ZS5sZW5ndGgtMV0pfHw2IT09SWVbMF0mJjIhPT1JZVswXSkpe3ZlPTA7Y29udGludWV9aWYoMz09PUllWzBdJiYoIWNlfHxJZVsxXT5jZVswXSYmSWVbMV08Y2VbM10pKXt2ZS5sYWJlbD1JZVsxXTticmVha31pZig2PT09SWVbMF0mJnZlLmxhYmVsPGNlWzFdKXt2ZS5sYWJlbD1jZVsxXSxj''@;'; put 'put ''ZT1JZTticmVha31pZihjZSYmdmUubGFiZWw8Y2VbMl0pe3ZlLmxhYmVsPWNlWzJdLHZlLm9wcy5wdXNoKEllKTticmVha31jZVsyXSYmdmUub3BzLnBvcCgpLHZlLnRyeXMucG9wKCk7Y29udGludWV9SWU9Si5jYWxsKEssdmUpfWNhdGNoKFRlKXtJZT1bNixUZV0sb2U9MH1maW5hbGx5e3Nl''@;'; put 'put ''PWNlPTB9aWYoNSZJZVswXSl0aHJvdyBJZVsxXTtyZXR1cm57dmFsdWU6SWVbMF0/SWVbMV06dm9pZCAwLGRvbmU6ITB9fShba2UsU2VdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5vcGVuTG9naW5Qcm9tcHQ9dm9pZCAwLChLPWp8fChq''@;'; put 'put ''PXt9KSkuc3R5bGVzPSJzYXNqc0FkYXB0ZXJTdHlsZXMiLEsub3ZlcmxheT0ic2FzanNBZGFwdGVyTG9naW5Qcm9tcHRCRyIsSy5kaWFsb2c9InNhc2pzQWRhcHRlckxvZ2luUHJvbXB0Ijt2YXIgWT0ic2FzanMtYWRhcHRlciIsVz17cG9wVXA6IiIuY29uY2F0KFksInBvcFVwIikscG9wVXBC''@;'; put 'put ''RzoiIi5jb25jYXQoWSwicG9wVXBCRyIpfTtRLm9wZW5Mb2dpblByb21wdD1mdW5jdGlvbigpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihLKXtyZXR1cm4gcmUodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgSixzZSxvZSxjZSxkZSx2ZSxBZSxrZTtyZXR1cm4gYWUo''@;'; put 'put ''dGhpcyxmdW5jdGlvbihTZSl7cmV0dXJuKEo9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKSkuaWQ9ai5zdHlsZXMsSi5pbm5lclRleHQ9dGUsKHNlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5pZD1qLm92ZXJsYXksc2UuY2xhc3NMaXN0LmFkZChXLnBvcFVwQkcpLChv''@;'; put 'put ''ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuaWQ9ai5kaWFsb2csb2UuY2xhc3NMaXN0LmFkZChXLnBvcFVwKSwoY2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDEiKSkuaW5uZXJUZXh0PSJTZXNzaW9uIEV4cGlyZWQhIixvZS5hcHBlbmRDaGlsZChjZSksZGU9ZG9jdW1lbnQu''@;'; put 'put ''Y3JlYXRlRWxlbWVudCgiZGl2IiksKHZlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSkuaW5uZXJUZXh0PSJZb3UgbmVlZCB0byByZWxvZ2luLCBjbGljayBPSyB0byBsb2dpbi4iLGRlLmFwcGVuZENoaWxkKHZlKSxvZS5hcHBlbmRDaGlsZChkZSksKEFlPWRvY3VtZW50LmNyZWF0''@;'; put 'put ''ZUVsZW1lbnQoImJ1dHRvbiIpKS5jbGFzc0xpc3QuYWRkKCJjYW5jZWwiKSxBZS5pbm5lclRleHQ9IkNhbmNlbCIsQWUub25jbGljaz1mdW5jdGlvbigpe04oKSxLKCExKX0sb2UuYXBwZW5kQ2hpbGQoQWUpLChrZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKSkuY2xhc3NMaXN0''@;'; put 'put ''LmFkZCgiY29uZmlybSIpLGtlLmlubmVyVGV4dD0iT2siLGtlLm9uY2xpY2s9ZnVuY3Rpb24oKXtOKCksSyghMCl9LG9lLmFwcGVuZENoaWxkKGtlKSxkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoSiksZG9jdW1lbnQuYm9k''@;'; put 'put ''eS5hcHBlbmRDaGlsZChzZSksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvZSksWzJdfSl9KX0pfTt2YXIgTj1mdW5jdGlvbigpe09iamVjdC52YWx1ZXMoaikuZm9yRWFjaChmdW5jdGlvbihLKXt2YXIgSixzZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChLKTtudWxsPT09KEo9bnVsbD09''@;'; put 'put ''c2U/dm9pZCAwOnNlLnBhcmVudE5vZGUpfHx2b2lkIDA9PT1KfHxKLnJlbW92ZUNoaWxkKHNlKX0pLGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c9ImF1dG8ifSx0ZT0iXG4uIi5jb25jYXQoVy5wb3BVcEJHLCIgLFxuLiIpLmNvbmNhdChXLnBvcFVwLCIge1xuICB6LWluZGV4OiAxMDAw''@;'; put 'put ''MDtcbn1cbi4iKS5jb25jYXQoVy5wb3BVcCwiIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4g''@;'; put 'put ''IHRvcDogNDAlO1xuICBsZWZ0OiA1MCU7XG4gIHBhZGRpbmc6IDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC1mYW1pbHk6ICdQVCBTYW5zJywgc2Fucy1zZXJpZjtcbiAgY29sb3I6ICNmZmY7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgei1pbmRleDogOTk5O1xuICBvdmVyZmxv''@;'; put 'put ''dzogaGlkZGVuO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIG1hcmdpbjogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMzAwcHg7XG4gIGhlaWdodDogYXV0bztcbiAgbWF4LWhlaWdodDogMzAwcHg7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUs''@;'; put 'put ''IC01MCUpO1xufVxuLiIpLmNvbmNhdChXLnBvcFVwLCIgPiBoMSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiA1cHg7XG4gIG1pbi1oZWlnaHQ6''@;'; put 'put ''IDQwcHg7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xuICBib3JkZXItd2lkdGg6IDVw''@;'; put 'put ''eDtcbiAgYm9yZGVyLWNvbG9yOiBibGFjaztcbn1cbi4iKS5jb25jYXQoVy5wb3BVcCwiID4gZGl2IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogY2FsYygxMDAlIC0xMDhweCk7XG4gIG1hcmdpbjogMDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7''@;'; put 'put ''XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiA1JTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgYm9yZGVyLWNvbG9yOiAjY2NjO1xuICBib3JkZXItc3R5''@;'; put 'put ''bGU6IG5vbmUgbm9uZSBzb2xpZCBub25lO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbi4iKS5jb25jYXQoVy5wb3BVcCwiID4gZGl2ID4gc3BhbiB7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVy''@;'; put 'put ''LWJveDtcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIHdpZHRoOiAzMDBweDtcbiAgaGVpZ2h0OiAxMDhweDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuLiIpLmNvbmNh''@;'; put 'put ''dChXLnBvcFVwLCIgLmNhbmNlbCB7XG4gIGZsb2F0OiBsZWZ0O1xufVxuLiIpLmNvbmNhdChXLnBvcFVwLCIgLmNvbmZpcm0ge1xuICBmbG9hdDogcmlnaHQ7XG59XG4uIikuY29uY2F0KFcucG9wVXAsIiA+IGJ1dHRvbiB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC13ZWJraXQt''@;'; put 'put ''Ym94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIHdpZHRoOiA1MCU7XG4gIGJvcmRlcjogMXB4IG5vbmUgI2NjYztcbiAgY29sb3I6ICNmZmY7XG4gIGZvbnQtZmFtaWx5OiBpbmhl''@;'; put 'put ''cml0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGhlaWdodDogNTBweDtcbiAgYmFja2dyb3VuZDogcmdiYSgxLCAxLCAxLCAwLjIpO1xufVxuLiIpLmNvbmNhdChXLnBvcFVwLCIgPiBidXR0b246aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG4uIikuY29u''@;'; put 'put ''Y2F0KFcucG9wVXBCRywiIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIG9wYWNpdHk6IDAuOTU7XG4gIHot''@;'; put 'put ''aW5kZXg6IDUwO1xuICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoIzAzNzhjZCwgIzAxMjAzNik7XG59XG4iKX0sMjkyMDooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5uZWVkc1JldHJ5PXZv''@;'; put 'put ''aWQgMCxRLm5lZWRzUmV0cnk9ZnVuY3Rpb24oail7cmV0dXJuISFqJiYoai5pbmNsdWRlcygnImVycm9yQ29kZSI6NDAzJykmJmouaW5jbHVkZXMoIl9jc3JmIikmJmouaW5jbHVkZXMoIlgtQ1NSRi1UT0tFTiIpfHxqLmluY2x1ZGVzKCcic3RhdHVzIjo0MDMnKSYmai5pbmNsdWRlcygnImVy''@;'; put 'put ''cm9yIjoiRm9yYmlkZGVuIicpfHxqLmluY2x1ZGVzKCcic3RhdHVzIjo0NDknKSYmai5pbmNsdWRlcygiQXV0aGVudGljYXRpb24gc3VjY2VzcywgcmV0cnkgb3JpZ2luYWwgcmVxdWVzdCIpKX19LDI0MjI6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9f''@;'; put 'put ''ZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEucGFyc2VHZW5lcmF0ZWRDb2RlPXZvaWQgMCxRLnBhcnNlR2VuZXJhdGVkQ29kZT1mdW5jdGlvbihqKXtyZXR1cm4gai5zcGxpdCgiXG4iKS5maWx0ZXIoZnVuY3Rpb24ocmUpe3JldHVybiByZS50cmltKCkuc3RhcnRzV2l0aCgiTVBSSU5UIil9KS5q''@;'; put 'put ''b2luKCJcclxuIil9fSwzMTooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDUxMDgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLnBhcnNlU2FzVml5YUxvZz12b2lkIDAsUS5wYXJzZVNhc1ZpeWFMb2c9ZnVuY3Rpb24oYWUpe3ZhciBZ''@;'; put 'put ''O3RyeXtZPWFlLml0ZW1zP2FlLml0ZW1zLm1hcChmdW5jdGlvbihXKXtyZXR1cm4gVy5saW5lfSkuam9pbigiXG4iKTpKU09OLnN0cmluZ2lmeShhZSl9Y2F0Y2goVyl7cmUuZXJyb3IoIkFuIGVycm9yIGhhcyBvY2N1cnJlZCB3aGlsZSBwYXJzaW5nIHRoZSBsb2cgcmVzcG9uc2UiLFcpLFk9''@;'; put 'put ''YWV9cmV0dXJuIFl9fSw2NTE1OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLnBhcnNlU291cmNlQ29kZT12b2lkIDAsUS5wYXJzZVNvdXJjZUNvZGU9ZnVuY3Rpb24oail7cmV0dXJuIGouc3BsaXQoIlxuIiku''@;'; put 'put ''ZmlsdGVyKGZ1bmN0aW9uKHJlKXtyZXR1cm4gcmUudHJpbSgpLnN1YnN0cmluZygwLDEwKS50cmltU3RhcnQoKS5tYXRjaCgvXlxkLyl9KS5qb2luKCJcclxuIil9fSw2NDE2OmZ1bmN0aW9uKFUsUSxqKXsidXNlIHN0cmljdCI7dmFyIHJlPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlv''@;'; put 'put ''bihXLE4sdGUsSyl7cmV0dXJuIG5ldyh0ZXx8KHRlPVByb21pc2UpKShmdW5jdGlvbihKLHNlKXtmdW5jdGlvbiBvZSh2ZSl7dHJ5e2RlKEsubmV4dCh2ZSkpfWNhdGNoKEFlKXtzZShBZSl9fWZ1bmN0aW9uIGNlKHZlKXt0cnl7ZGUoSy50aHJvdyh2ZSkpfWNhdGNoKEFlKXtzZShBZSl9fWZ1''@;'; put 'put ''bmN0aW9uIGRlKHZlKXt2YXIgQWU7dmUuZG9uZT9KKHZlLnZhbHVlKTooQWU9dmUudmFsdWUsQWUgaW5zdGFuY2VvZiB0ZT9BZTpuZXcgdGUoZnVuY3Rpb24oa2Upe2tlKEFlKX0pKS50aGVuKG9lLGNlKX1kZSgoSz1LLmFwcGx5KFcsTnx8W10pKS5uZXh0KCkpfSl9LGFlPXRoaXMmJnRoaXMu''@;'; put 'put ''X19nZW5lcmF0b3J8fGZ1bmN0aW9uKFcsTil7dmFyIHRlLEssSixzZSxvZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZKWzBdKXRocm93IEpbMV07cmV0dXJuIEpbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gc2U9e25leHQ6Y2UoMCksdGhyb3c6Y2UoMSkscmV0dXJuOmNlKDIp''@;'; put 'put ''fSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoc2VbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksc2U7ZnVuY3Rpb24gY2UoZGUpe3JldHVybiBmdW5jdGlvbih2ZSl7cmV0dXJuIGZ1bmN0aW9uKEFlKXtpZih0ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5l''@;'; put 'put ''cmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtvZTspdHJ5e2lmKHRlPTEsSyYmKEo9MiZBZVswXT9LLnJldHVybjpBZVswXT9LLnRocm93fHwoKEo9Sy5yZXR1cm4pJiZKLmNhbGwoSyksMCk6Sy5uZXh0KSYmIShKPUouY2FsbChLLEFlWzFdKSkuZG9uZSlyZXR1cm4gSjtzd2l0''@;'; put 'put ''Y2goSz0wLEomJihBZT1bMiZBZVswXSxKLnZhbHVlXSksQWVbMF0pe2Nhc2UgMDpjYXNlIDE6Sj1BZTticmVhaztjYXNlIDQ6cmV0dXJuIG9lLmxhYmVsKysse3ZhbHVlOkFlWzFdLGRvbmU6ITF9O2Nhc2UgNTpvZS5sYWJlbCsrLEs9QWVbMV0sQWU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpBZT1v''@;'; put 'put ''ZS5vcHMucG9wKCksb2UudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKEo9KEo9b2UudHJ5cykubGVuZ3RoPjAmJkpbSi5sZW5ndGgtMV0pfHw2IT09QWVbMF0mJjIhPT1BZVswXSkpe29lPTA7Y29udGludWV9aWYoMz09PUFlWzBdJiYoIUp8fEFlWzFdPkpbMF0mJkFlWzFdPEpb''@;'; put 'put ''M10pKXtvZS5sYWJlbD1BZVsxXTticmVha31pZig2PT09QWVbMF0mJm9lLmxhYmVsPEpbMV0pe29lLmxhYmVsPUpbMV0sSj1BZTticmVha31pZihKJiZvZS5sYWJlbDxKWzJdKXtvZS5sYWJlbD1KWzJdLG9lLm9wcy5wdXNoKEFlKTticmVha31KWzJdJiZvZS5vcHMucG9wKCksb2UudHJ5cy5w''@;'; put 'put ''b3AoKTtjb250aW51ZX1BZT1OLmNhbGwoVyxvZSl9Y2F0Y2goa2Upe0FlPVs2LGtlXSxLPTB9ZmluYWxseXt0ZT1KPTB9aWYoNSZBZVswXSl0aHJvdyBBZVsxXTtyZXR1cm57dmFsdWU6QWVbMF0/QWVbMV06dm9pZCAwLGRvbmU6ITB9fShbZGUsdmVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5wYXJzZVNhc1ZpeWFEZWJ1Z1Jlc3BvbnNlPXZvaWQgMDt2YXIgWT1qKDU5MjgpO1EucGFyc2VTYXNWaXlhRGVidWdSZXNwb25zZT1mdW5jdGlvbihXLE4sdGUpe3JldHVybiByZSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigp''@;'; put 'put ''e3ZhciBLLEo7cmV0dXJuIGFlKHRoaXMsZnVuY3Rpb24oc2Upe2lmKEs9Vy5zcGxpdCgvPGlmcmFtZSBzdHlsZT0id2lkdGg6IDk5JTsgaGVpZ2h0OiA1MDBweCIgc3JjPSJ8PGlmcmFtZSBzdHlsZT0id2lkdGg6IDk5JTsgaGVpZ2h0OiA1MDBweDsgYmFja2dyb3VuZC1jb2xvcjpDYW52YXM7''@;'; put 'put ''IiBzcmM9LylbMV0sIShKPUs/Sy5zcGxpdCgvIj48XC9pZnJhbWU+fD48XC9pZnJhbWU+LylbMF06bnVsbCkpdGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZmluZCB3ZWJvdXQgZmlsZSBVUkwuIik7cmV0dXJuWzIsTi5nZXQodGUrSix2b2lkIDAsInRleHQvcGxhaW4iKS50aGVuKGZ1bmN0''@;'; put 'put ''aW9uKG9lKXtyZXR1cm4oMCxZLmdldFZhbGlkSnNvbikob2UucmVzdWx0KX0pXX0pfSl9fSwyODEzOihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNTEwOCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEucGFyc2VXZWJvdXRSZXNwb25z''@;'; put 'put ''ZT12b2lkIDA7dmFyIGFlPWooMTM5NSk7US5wYXJzZVdlYm91dFJlc3BvbnNlPWZ1bmN0aW9uKFksVyl7dmFyIE49IiI7aWYoWS5pbmNsdWRlcygiPj53ZWJvdXRCRUdJTjw8IikpdHJ5e049WS5zcGxpdCgiPj53ZWJvdXRCRUdJTjw8IilbMV0uc3BsaXQoIj4+d2Vib3V0RU5EPDwiKVswXX1j''@;'; put 'put ''YXRjaCh0ZSl7aWYoVyl0aHJvdyBuZXcgYWUuV2Vib3V0UmVzcG9uc2VFcnJvcihXKTtOPSIiLHJlLmVycm9yKHRlKX1yZXR1cm4gTn19LDExNzA6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuZXh0cmFjdFVz''@;'; put 'put ''ZXJMb25nTmFtZVNhczk9dm9pZCAwO3ZhciBqPVsiTG9nIE9mZiJdO1EuZXh0cmFjdFVzZXJMb25nTmFtZVNhczk9ZnVuY3Rpb24ocmUpe3ZhciBhZT1udWxsPT1yZT92b2lkIDA6cmUubWF0Y2goLyJ0aXRsZSI6XHM/Ii4qPyIvKSxZPW51bGw9PWFlP3ZvaWQgMDphZVswXS5zcGxpdCgiOiIp''@;'; put 'put ''WzFdLnRyaW0oKSxXPW51bGw9PVk/dm9pZCAwOlkuaW5kZXhPZigiICIpO3JldHVybiBZPyhqLm1hcChmdW5jdGlvbihOKXt2YXIgdGU9KG51bGw9PVk/dm9pZCAwOlkuaW5kZXhPZihOKSl8fC0xO3RlPi0xJiYoVz10ZStOLmxlbmd0aCl9KSxZLnNsaWNlKFcsLTEpLnRyaW0oKSk6InVua25v''@;'; put 'put ''d24ifX0sOTg5NjooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUS5zZXJpYWxpemU9dm9pZCAwLFEuc2VyaWFsaXplPWZ1bmN0aW9uKGope3ZhciByZT1bXTtmb3IodmFyIGFlIGluIGopaWYoai5oYXNPd25Qcm9w''@;'; put 'put ''ZXJ0eShhZSkpaWYoalthZV1pbnN0YW5jZW9mIEFycmF5KWZvcih2YXIgWT0wLFc9althZV0ubGVuZ3RoO1k8VztZKyspcmUucHVzaChlbmNvZGVVUklDb21wb25lbnQoYWUpKyI9IitlbmNvZGVVUklDb21wb25lbnQoalthZV1bWV0pKTtlbHNlIHJlLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50''@;'; put 'put ''KGFlKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGpbYWVdKSk7cmV0dXJuIHJlLmpvaW4oIiYiKX19LDQ3OTk6KFUsUSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFEuc3BsaXRDaHVua3M9dm9pZCAwLFEuc3BsaXRDaHVu''@;'; put 'put ''a3M9ZnVuY3Rpb24oail7Zm9yKHZhciBhZT1NYXRoLmNlaWwoai5sZW5ndGgvMTZlMyksWT1uZXcgQXJyYXkoYWUpLFc9MCxOPTA7VzxhZTsrK1csTis9MTZlMylZW1ddPWouc3Vic3RyKE4sMTZlMyk7cmV0dXJuIFl9fSw0NTE2OihVLFEpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShRLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxRLnZhbGlkYXRlSW5wdXQ9US5JTlZBTElEX1RBQkxFX1NUUlVDVFVSRT1RLk1PUkVfSU5GTz12b2lkIDAsUS5NT1JFX0lORk89IkZvciBtb3JlIGluZm8gc2VlIGh0dHBzOi8vc2FzanMuaW8vc2FzanMtYWRhcHRlci8jcmVxdWVz''@;'; put 'put ''dC1yZXNwb25zZSIsUS5JTlZBTElEX1RBQkxFX1NUUlVDVFVSRT0iUGFyYW1ldGVyIGRhdGEgY29udGFpbnMgaW52YWxpZCB0YWJsZSBzdHJ1Y3R1cmUuICIuY29uY2F0KFEuTU9SRV9JTkZPKSxRLnZhbGlkYXRlSW5wdXQ9ZnVuY3Rpb24ocmUpe2lmKG51bGw9PT1yZSlyZXR1cm57c3RhdHVz''@;'; put 'put ''OiEwLG1zZzoiIn07aWYoIm9iamVjdCIhPT1qKHJlKSlyZXR1cm57c3RhdHVzOiExLG1zZzpRLklOVkFMSURfVEFCTEVfU1RSVUNUVVJFfTt2YXIgYWU9ZnVuY3Rpb24ob2Upe3JldHVybiBvZS5tYXRjaCgvXlwkLiovKSYmT2JqZWN0LmtleXMocmUpLmluY2x1ZGVzKG9lLnJlcGxhY2UoL15c''@;'; put 'put ''JC8sIiIpKX07Zm9yKHZhciBZIGluIHJlKXtpZighWS5tYXRjaCgvXlthLXpBLVpfXS8pJiYhYWUoWSkpcmV0dXJue3N0YXR1czohMSxtc2c6IkZpcnN0IGxldHRlciBvZiB0YWJsZSBzaG91bGQgYmUgYWxwaGFiZXQgb3IgdW5kZXJzY29yZS4ifTtpZighWS5tYXRjaCgvXlthLXpBLVpfXVth''@;'; put 'put ''LXpBLVowLTlfXSokLykmJiFhZShZKSlyZXR1cm57c3RhdHVzOiExLG1zZzoiVGFibGUgbmFtZSBzaG91bGQgYmUgYWxwaGFudW1lcmljLiJ9O2lmKFkubGVuZ3RoPjMyKXJldHVybntzdGF0dXM6ITEsbXNnOiJNYXhpbXVtIGxlbmd0aCBmb3IgdGFibGUgbmFtZSBjb3VsZCBiZSAzMiBjaGFy''@;'; put 'put ''YWN0ZXJzLiJ9O2lmKCJBcnJheSIhPT1qKHJlW1ldKSYmIWFlKFkpKXJldHVybntzdGF0dXM6ITEsbXNnOlEuSU5WQUxJRF9UQUJMRV9TVFJVQ1RVUkV9O2Zvcih2YXIgVz0wLE49cmVbWV07VzxOLmxlbmd0aDtXKyspe3ZhciB0ZT1OW1ddO2lmKCJvYmplY3QiIT09aih0ZSkpcmV0dXJue3N0''@;'; put 'put ''YXR1czohMSxtc2c6IlRhYmxlICIuY29uY2F0KFksIiBjb250YWlucyBpbnZhbGlkIHN0cnVjdHVyZS4gIikuY29uY2F0KFEuTU9SRV9JTkZPKX07Zm9yKHZhciBLPTAsSj1PYmplY3Qua2V5cyh0ZSk7SzxKLmxlbmd0aDtLKyspe3ZhciBzZT1KW0tdO2lmKHZvaWQgMD09PXRlW3NlXSlyZXR1''@;'; put 'put ''cm57c3RhdHVzOiExLG1zZzoiQSByb3cgaW4gdGFibGUgIi5jb25jYXQoWSwiIGNvbnRhaW5zIGludmFsaWQgdmFsdWUuIENhbid0IGFzc2lnbiB1bmRlZmluZWQgdG8gIikuY29uY2F0KHNlLCIuIil9fX19cmV0dXJue3N0YXR1czohMCxtc2c6IiJ9fTt2YXIgaj1mdW5jdGlvbihyZSl7cmV0''@;'; put 'put ''dXJuIEFycmF5LmlzQXJyYXkocmUpPyJBcnJheSI6dHlwZW9mIHJlfX0sODk4MTooVSxRKT0+eyJ1c2Ugc3RyaWN0IjtRLmZyb21DYWxsYmFjaz1mdW5jdGlvbihqKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKC4uLnJlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgcmVb''@;'; put 'put ''cmUubGVuZ3RoLTFdKXJldHVybiBuZXcgUHJvbWlzZSgoYWUsWSk9PntqLmNhbGwodGhpcywuLi5yZSwoVyxOKT0+bnVsbCE9Vz9ZKFcpOmFlKE4pKX0pO2ouYXBwbHkodGhpcyxyZSl9LCJuYW1lIix7dmFsdWU6ai5uYW1lfSl9LFEuZnJvbVByb21pc2U9ZnVuY3Rpb24oail7cmV0dXJuIE9i''@;'; put 'put ''amVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiguLi5yZSl7Y29uc3QgYWU9cmVbcmUubGVuZ3RoLTFdO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBhZSlyZXR1cm4gai5hcHBseSh0aGlzLHJlKTtqLmFwcGx5KHRoaXMscmUuc2xpY2UoMCwtMSkpLnRoZW4oWT0+YWUobnVsbCxZKSxhZSl9LCJu''@;'; put 'put ''YW1lIix7dmFsdWU6ai5uYW1lfSl9fSwyNTExOmZ1bmN0aW9uKFUsUSxqKXt2YXIgcmU7VT1qLm5tZChVKSxmdW5jdGlvbihhZSl7dmFyIFcsTj0yMTQ3NDgzNjQ3LEs9L154bi0tLyxKPS9bXlx4MjAtXHg3RV0vLHNlPS9bXHgyRVx1MzAwMlx1RkYwRVx1RkY2MV0vZyxvZT17b3ZlcmZsb3c6''@;'; put 'put ''Ik92ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzIiwibm90LWJhc2ljIjoiSWxsZWdhbCBpbnB1dCA+PSAweDgwIChub3QgYSBiYXNpYyBjb2RlIHBvaW50KSIsImludmFsaWQtaW5wdXQiOiJJbnZhbGlkIGlucHV0In0sY2U9TWF0aC5mbG9vcixkZT1TdHJp''@;'; put 'put ''bmcuZnJvbUNoYXJDb2RlO2Z1bmN0aW9uIHZlKHope3Rocm93IFJhbmdlRXJyb3Iob2Vbel0pfWZ1bmN0aW9uIEFlKHosZWUpe2Zvcih2YXIgbmU9ei5sZW5ndGgseD1bXTtuZS0tOyl4W25lXT1lZSh6W25lXSk7cmV0dXJuIHh9ZnVuY3Rpb24ga2UoeixlZSl7dmFyIG5lPXouc3BsaXQoIkAi''@;'; put 'put ''KSx4PSIiO3JldHVybiBuZS5sZW5ndGg+MSYmKHg9bmVbMF0rIkAiLHo9bmVbMV0pLHgrQWUoKHo9ei5yZXBsYWNlKHNlLCIuIikpLnNwbGl0KCIuIiksZWUpLmpvaW4oIi4iKX1mdW5jdGlvbiBTZSh6KXtmb3IodmFyIGVlLG5lLHg9W10sUD0wLFY9ei5sZW5ndGg7UDxWOykoZWU9ei5jaGFy''@;'; put 'put ''Q29kZUF0KFArKykpPj01NTI5NiYmZWU8PTU2MzE5JiZQPFY/NTYzMjA9PSg2NDUxMiYobmU9ei5jaGFyQ29kZUF0KFArKykpKT94LnB1c2goKCgxMDIzJmVlKTw8MTApKygxMDIzJm5lKSs2NTUzNik6KHgucHVzaChlZSksUC0tKTp4LnB1c2goZWUpO3JldHVybiB4fWZ1bmN0aW9uIEllKHop''@;'; put 'put ''e3JldHVybiBBZSh6LGZ1bmN0aW9uKGVlKXt2YXIgbmU9IiI7cmV0dXJuIGVlPjY1NTM1JiYobmUrPWRlKChlZS09NjU1MzYpPj4+MTAmMTAyM3w1NTI5NiksZWU9NTYzMjB8MTAyMyZlZSksbmUrZGUoZWUpfSkuam9pbigiIil9ZnVuY3Rpb24gVGUoeixlZSl7cmV0dXJuIHorMjIrNzUqKHo8''@;'; put 'put ''MjYpLSgoMCE9ZWUpPDw1KX1mdW5jdGlvbiBNZSh6LGVlLG5lKXt2YXIgeD0wO2Zvcih6PW5lP2NlKHovNzAwKTp6Pj4xLHorPWNlKHovZWUpO3o+NDU1O3grPTM2KXo9Y2Uoei8zNSk7cmV0dXJuIGNlKHgrMzYqei8oeiszOCkpfWZ1bmN0aW9uIGhlKHope3ZhciBlZSxuZSx4LFAsVixULFMs''@;'; put 'put ''Rix5ZSxDZSxEZSxQZT1bXSxRZT16Lmxlbmd0aCwkZT0wLGd0PTEyOCx3dD03Mjtmb3IoKG5lPXoubGFzdEluZGV4T2YoIi0iKSk8MCYmKG5lPTApLHg9MDt4PG5lOysreCl6LmNoYXJDb2RlQXQoeCk+PTEyOCYmdmUoIm5vdC1iYXNpYyIpLFBlLnB1c2goei5jaGFyQ29kZUF0KHgpKTtmb3Io''@;'; put 'put ''UD1uZT4wP25lKzE6MDtQPFFlOyl7Zm9yKFY9JGUsVD0xLFM9MzY7UD49UWUmJnZlKCJpbnZhbGlkLWlucHV0IiksKChGPShEZT16LmNoYXJDb2RlQXQoUCsrKSktNDg8MTA/RGUtMjI6RGUtNjU8MjY/RGUtNjU6RGUtOTc8MjY/RGUtOTc6MzYpPj0zNnx8Rj5jZSgoTi0kZSkvVCkpJiZ2ZSgi''@;'; put 'put ''b3ZlcmZsb3ciKSwkZSs9RipULCEoRjwoeWU9Uzw9d3Q/MTpTPj13dCsyNj8yNjpTLXd0KSk7Uys9MzYpVD5jZShOLyhDZT0zNi15ZSkpJiZ2ZSgib3ZlcmZsb3ciKSxUKj1DZTt3dD1NZSgkZS1WLGVlPVBlLmxlbmd0aCsxLDA9PVYpLGNlKCRlL2VlKT5OLWd0JiZ2ZSgib3ZlcmZsb3ciKSxn''@;'; put 'put ''dCs9Y2UoJGUvZWUpLCRlJT1lZSxQZS5zcGxpY2UoJGUrKywwLGd0KX1yZXR1cm4gSWUoUGUpfWZ1bmN0aW9uIE8oeil7dmFyIGVlLG5lLHgsUCxWLFQsUyxGLHllLENlLERlLFBlLFFlLCRlLGd0LHd0PVtdO2ZvcihQZT0oej1TZSh6KSkubGVuZ3RoLGVlPTEyOCxuZT0wLFY9NzIsVD0wO1Q8''@;'; put 'put ''UGU7KytUKShEZT16W1RdKTwxMjgmJnd0LnB1c2goZGUoRGUpKTtmb3IoeD1QPXd0Lmxlbmd0aCxQJiZ3dC5wdXNoKCItIik7eDxQZTspe2ZvcihTPU4sVD0wO1Q8UGU7KytUKShEZT16W1RdKT49ZWUmJkRlPFMmJihTPURlKTtmb3IoUy1lZT5jZSgoTi1uZSkvKFFlPXgrMSkpJiZ2ZSgib3Zl''@;'; put 'put ''cmZsb3ciKSxuZSs9KFMtZWUpKlFlLGVlPVMsVD0wO1Q8UGU7KytUKWlmKChEZT16W1RdKTxlZSYmKytuZT5OJiZ2ZSgib3ZlcmZsb3ciKSxEZT09ZWUpe2ZvcihGPW5lLHllPTM2OyEoRjwoQ2U9eWU8PVY/MTp5ZT49VisyNj8yNjp5ZS1WKSk7eWUrPTM2KXd0LnB1c2goZGUoVGUoQ2UrKGd0''@;'; put 'put ''PUYtQ2UpJSgkZT0zNi1DZSksMCkpKSxGPWNlKGd0LyRlKTt3dC5wdXNoKGRlKFRlKEYsMCkpKSxWPU1lKG5lLFFlLHg9PVApLG5lPTAsKyt4fSsrbmUsKytlZX1yZXR1cm4gd3Quam9pbigiIil9Vz17dmVyc2lvbjoiMS4zLjIiLHVjczI6e2RlY29kZTpTZSxlbmNvZGU6SWV9LGRlY29kZTpo''@;'; put 'put ''ZSxlbmNvZGU6Tyx0b0FTQ0lJOmZ1bmN0aW9uKHope3JldHVybiBrZSh6LGZ1bmN0aW9uKGVlKXtyZXR1cm4gSi50ZXN0KGVlKT8ieG4tLSIrTyhlZSk6ZWV9KX0sdG9Vbmljb2RlOmZ1bmN0aW9uKHope3JldHVybiBrZSh6LGZ1bmN0aW9uKGVlKXtyZXR1cm4gSy50ZXN0KGVlKT9oZShlZS5z''@;'; put 'put ''bGljZSg0KS50b0xvd2VyQ2FzZSgpKTplZX0pfX0sdm9pZCAwPT09KHJlPWZ1bmN0aW9uKCl7cmV0dXJuIFd9LmNhbGwoUSxqLFEsVSkpfHwoVS5leHBvcnRzPXJlKX0oKX0sODU3NTooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1qKDI1MTEpLGFlPWooMjUwMik7ZnVuY3Rpb24gWSgp''@;'; put 'put ''e3RoaXMucHJvdG9jb2w9bnVsbCx0aGlzLnNsYXNoZXM9bnVsbCx0aGlzLmF1dGg9bnVsbCx0aGlzLmhvc3Q9bnVsbCx0aGlzLnBvcnQ9bnVsbCx0aGlzLmhvc3RuYW1lPW51bGwsdGhpcy5oYXNoPW51bGwsdGhpcy5zZWFyY2g9bnVsbCx0aGlzLnF1ZXJ5PW51bGwsdGhpcy5wYXRobmFtZT1u''@;'; put 'put ''dWxsLHRoaXMucGF0aD1udWxsLHRoaXMuaHJlZj1udWxsfVEuUWM9SWU7dmFyIFc9L14oW2EtejAtOS4rLV0rOikvaSxOPS86WzAtOV0qJC8sdGU9L14oXC9cLz8oPyFcLylbXlw/XHNdKikoXD9bXlxzXSopPyQvLEs9WyJ7IiwifSIsInwiLCJcXCIsIl4iLCJgIl0uY29uY2F0KFsiPCIsIj4i''@;'; put 'put ''LCciJywiYCIsIiAiLCJcciIsIlxuIiwiXHQiXSksSj1bIiciXS5jb25jYXQoSyksc2U9WyIlIiwiLyIsIj8iLCI7IiwiIyJdLmNvbmNhdChKKSxvZT1bIi8iLCI/IiwiIyJdLGNlPS9eWythLXowLTlBLVpfLV17MCw2M30kLyxkZT0vXihbK2EtejAtOUEtWl8tXXswLDYzfSkoLiopJC8sdmU9''@;'; put 'put ''e2phdmFzY3JpcHQ6ITAsImphdmFzY3JpcHQ6IjohMH0sQWU9e2phdmFzY3JpcHQ6ITAsImphdmFzY3JpcHQ6IjohMH0sa2U9e2h0dHA6ITAsaHR0cHM6ITAsZnRwOiEwLGdvcGhlcjohMCxmaWxlOiEwLCJodHRwOiI6ITAsImh0dHBzOiI6ITAsImZ0cDoiOiEwLCJnb3BoZXI6IjohMCwiZmls''@;'; put 'put ''ZToiOiEwfSxTZT1qKDc2NzMpO2Z1bmN0aW9uIEllKFRlLE1lLGhlKXtpZihUZSYmYWUuaXNPYmplY3QoVGUpJiZUZSBpbnN0YW5jZW9mIFkpcmV0dXJuIFRlO3ZhciBPPW5ldyBZO3JldHVybiBPLnBhcnNlKFRlLE1lLGhlKSxPfVkucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKFRlLE1lLGhl''@;'; put 'put ''KXtpZighYWUuaXNTdHJpbmcoVGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIlBhcmFtZXRlciAndXJsJyBtdXN0IGJlIGEgc3RyaW5nLCBub3QgIit0eXBlb2YgVGUpO3ZhciBPPVRlLmluZGV4T2YoIj8iKSx6PS0xIT09TyYmTzxUZS5pbmRleE9mKCIjIik/Ij8iOiIjIixlZT1UZS5zcGxpdCh6''@;'; put 'put ''KTtlZVswXT1lZVswXS5yZXBsYWNlKC9cXC9nLCIvIik7dmFyIG5lPVRlPWVlLmpvaW4oeik7aWYobmU9bmUudHJpbSgpLCFoZSYmMT09PVRlLnNwbGl0KCIjIikubGVuZ3RoKXt2YXIgeD10ZS5leGVjKG5lKTtpZih4KXJldHVybiB0aGlzLnBhdGg9bmUsdGhpcy5ocmVmPW5lLHRoaXMucGF0''@;'; put 'put ''aG5hbWU9eFsxXSx4WzJdPyh0aGlzLnNlYXJjaD14WzJdLHRoaXMucXVlcnk9TWU/U2UucGFyc2UodGhpcy5zZWFyY2guc3Vic3RyKDEpKTp0aGlzLnNlYXJjaC5zdWJzdHIoMSkpOk1lJiYodGhpcy5zZWFyY2g9IiIsdGhpcy5xdWVyeT17fSksdGhpc312YXIgUD1XLmV4ZWMobmUpO2lmKFAp''@;'; put 'put ''e3ZhciBWPShQPVBbMF0pLnRvTG93ZXJDYXNlKCk7dGhpcy5wcm90b2NvbD1WLG5lPW5lLnN1YnN0cihQLmxlbmd0aCl9aWYoaGV8fFB8fG5lLm1hdGNoKC9eXC9cL1teQFwvXStAW15AXC9dKy8pKXt2YXIgVD0iLy8iPT09bmUuc3Vic3RyKDAsMik7IVR8fFAmJkFlW1BdfHwobmU9bmUuc3Vi''@;'; put 'put ''c3RyKDIpLHRoaXMuc2xhc2hlcz0hMCl9aWYoIUFlW1BdJiYoVHx8UCYmIWtlW1BdKSl7Zm9yKHZhciBTLEYseWU9LTEsQ2U9MDtDZTxvZS5sZW5ndGg7Q2UrKyktMSE9PShEZT1uZS5pbmRleE9mKG9lW0NlXSkpJiYoLTE9PT15ZXx8RGU8eWUpJiYoeWU9RGUpO2ZvcigtMSE9PShGPS0xPT09''@;'; put 'put ''eWU/bmUubGFzdEluZGV4T2YoIkAiKTpuZS5sYXN0SW5kZXhPZigiQCIseWUpKSYmKFM9bmUuc2xpY2UoMCxGKSxuZT1uZS5zbGljZShGKzEpLHRoaXMuYXV0aD1kZWNvZGVVUklDb21wb25lbnQoUykpLHllPS0xLENlPTA7Q2U8c2UubGVuZ3RoO0NlKyspe3ZhciBEZTstMSE9PShEZT1uZS5p''@;'; put 'put ''bmRleE9mKHNlW0NlXSkpJiYoLTE9PT15ZXx8RGU8eWUpJiYoeWU9RGUpfS0xPT09eWUmJih5ZT1uZS5sZW5ndGgpLHRoaXMuaG9zdD1uZS5zbGljZSgwLHllKSxuZT1uZS5zbGljZSh5ZSksdGhpcy5wYXJzZUhvc3QoKSx0aGlzLmhvc3RuYW1lPXRoaXMuaG9zdG5hbWV8fCIiO3ZhciBQZT0i''@;'; put 'put ''WyI9PT10aGlzLmhvc3RuYW1lWzBdJiYiXSI9PT10aGlzLmhvc3RuYW1lW3RoaXMuaG9zdG5hbWUubGVuZ3RoLTFdO2lmKCFQZSlmb3IodmFyIFFlPXRoaXMuaG9zdG5hbWUuc3BsaXQoL1wuLyksJGU9KENlPTAsUWUubGVuZ3RoKTtDZTwkZTtDZSsrKXt2YXIgZ3Q9UWVbQ2VdO2lmKGd0JiYh''@;'; put 'put ''Z3QubWF0Y2goY2UpKXtmb3IodmFyIHd0PSIiLG10PTAsdnQ9Z3QubGVuZ3RoO210PHZ0O210KyspZ3QuY2hhckNvZGVBdChtdCk+MTI3P3d0Kz0ieCI6d3QrPWd0W210XTtpZighd3QubWF0Y2goY2UpKXt2YXIgQXQ9UWUuc2xpY2UoMCxDZSksaHQ9UWUuc2xpY2UoQ2UrMSksQnQ9Z3QubWF0''@;'; put 'put ''Y2goZGUpO0J0JiYoQXQucHVzaChCdFsxXSksaHQudW5zaGlmdChCdFsyXSkpLGh0Lmxlbmd0aCYmKG5lPSIvIitodC5qb2luKCIuIikrbmUpLHRoaXMuaG9zdG5hbWU9QXQuam9pbigiLiIpO2JyZWFrfX19dGhpcy5ob3N0bmFtZT10aGlzLmhvc3RuYW1lLmxlbmd0aD4yNTU/IiI6dGhpcy5o''@;'; put 'put ''b3N0bmFtZS50b0xvd2VyQ2FzZSgpLFBlfHwodGhpcy5ob3N0bmFtZT1yZS50b0FTQ0lJKHRoaXMuaG9zdG5hbWUpKTt2YXIgb249dGhpcy5wb3J0PyI6Iit0aGlzLnBvcnQ6IiI7dGhpcy5ob3N0PSh0aGlzLmhvc3RuYW1lfHwiIikrb24sdGhpcy5ocmVmKz10aGlzLmhvc3QsUGUmJih0aGlz''@;'; put 'put ''Lmhvc3RuYW1lPXRoaXMuaG9zdG5hbWUuc3Vic3RyKDEsdGhpcy5ob3N0bmFtZS5sZW5ndGgtMiksIi8iIT09bmVbMF0mJihuZT0iLyIrbmUpKX1pZighdmVbVl0pZm9yKENlPTAsJGU9Si5sZW5ndGg7Q2U8JGU7Q2UrKyl7dmFyIHR0PUpbQ2VdO2lmKC0xIT09bmUuaW5kZXhPZih0dCkpe3Zh''@;'; put 'put ''ciBldD1lbmNvZGVVUklDb21wb25lbnQodHQpO2V0PT09dHQmJihldD1lc2NhcGUodHQpKSxuZT1uZS5zcGxpdCh0dCkuam9pbihldCl9fXZhciBsdD1uZS5pbmRleE9mKCIjIik7LTEhPT1sdCYmKHRoaXMuaGFzaD1uZS5zdWJzdHIobHQpLG5lPW5lLnNsaWNlKDAsbHQpKTt2YXIgTHQ9bmUu''@;'; put 'put ''aW5kZXhPZigiPyIpO3JldHVybi0xIT09THQ/KHRoaXMuc2VhcmNoPW5lLnN1YnN0cihMdCksdGhpcy5xdWVyeT1uZS5zdWJzdHIoTHQrMSksTWUmJih0aGlzLnF1ZXJ5PVNlLnBhcnNlKHRoaXMucXVlcnkpKSxuZT1uZS5zbGljZSgwLEx0KSk6TWUmJih0aGlzLnNlYXJjaD0iIix0aGlzLnF1''@;'; put 'put ''ZXJ5PXt9KSxuZSYmKHRoaXMucGF0aG5hbWU9bmUpLGtlW1ZdJiZ0aGlzLmhvc3RuYW1lJiYhdGhpcy5wYXRobmFtZSYmKHRoaXMucGF0aG5hbWU9Ii8iKSwodGhpcy5wYXRobmFtZXx8dGhpcy5zZWFyY2gpJiYodGhpcy5wYXRoPShvbj10aGlzLnBhdGhuYW1lfHwiIikrKHRoaXMuc2VhcmNo''@;'; put 'put ''fHwiIikpLHRoaXMuaHJlZj10aGlzLmZvcm1hdCgpLHRoaXN9LFkucHJvdG90eXBlLmZvcm1hdD1mdW5jdGlvbigpe3ZhciBUZT10aGlzLmF1dGh8fCIiO1RlJiYoVGU9KFRlPWVuY29kZVVSSUNvbXBvbmVudChUZSkpLnJlcGxhY2UoLyUzQS9pLCI6IiksVGUrPSJAIik7dmFyIE1lPXRoaXMu''@;'; put 'put ''cHJvdG9jb2x8fCIiLGhlPXRoaXMucGF0aG5hbWV8fCIiLE89dGhpcy5oYXNofHwiIix6PSExLGVlPSIiO3RoaXMuaG9zdD96PVRlK3RoaXMuaG9zdDp0aGlzLmhvc3RuYW1lJiYoej1UZSsoLTE9PT10aGlzLmhvc3RuYW1lLmluZGV4T2YoIjoiKT90aGlzLmhvc3RuYW1lOiJbIit0aGlzLmhv''@;'; put 'put ''c3RuYW1lKyJdIiksdGhpcy5wb3J0JiYoeis9IjoiK3RoaXMucG9ydCkpLHRoaXMucXVlcnkmJmFlLmlzT2JqZWN0KHRoaXMucXVlcnkpJiZPYmplY3Qua2V5cyh0aGlzLnF1ZXJ5KS5sZW5ndGgmJihlZT1TZS5zdHJpbmdpZnkodGhpcy5xdWVyeSkpO3ZhciBuZT10aGlzLnNlYXJjaHx8ZWUm''@;'; put 'put ''JiI/IitlZXx8IiI7cmV0dXJuIE1lJiYiOiIhPT1NZS5zdWJzdHIoLTEpJiYoTWUrPSI6IiksdGhpcy5zbGFzaGVzfHwoIU1lfHxrZVtNZV0pJiYhMSE9PXo/KHo9Ii8vIisoenx8IiIpLGhlJiYiLyIhPT1oZS5jaGFyQXQoMCkmJihoZT0iLyIraGUpKTp6fHwoej0iIiksTyYmIiMiIT09Ty5j''@;'; put 'put ''aGFyQXQoMCkmJihPPSIjIitPKSxuZSYmIj8iIT09bmUuY2hhckF0KDApJiYobmU9Ij8iK25lKSxNZSt6KyhoZT1oZS5yZXBsYWNlKC9bPyNdL2csZnVuY3Rpb24oeCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh4KX0pKSsobmU9bmUucmVwbGFjZSgiIyIsIiUyMyIpKStPfSxZLnByb3Rv''@;'; put 'put ''dHlwZS5yZXNvbHZlPWZ1bmN0aW9uKFRlKXtyZXR1cm4gdGhpcy5yZXNvbHZlT2JqZWN0KEllKFRlLCExLCEwKSkuZm9ybWF0KCl9LFkucHJvdG90eXBlLnJlc29sdmVPYmplY3Q9ZnVuY3Rpb24oVGUpe2lmKGFlLmlzU3RyaW5nKFRlKSl7dmFyIE1lPW5ldyBZO01lLnBhcnNlKFRlLCExLCEw''@;'; put 'put ''KSxUZT1NZX1mb3IodmFyIGhlPW5ldyBZLE89T2JqZWN0LmtleXModGhpcyksej0wO3o8Ty5sZW5ndGg7eisrKXt2YXIgZWU9T1t6XTtoZVtlZV09dGhpc1tlZV19aWYoaGUuaGFzaD1UZS5oYXNoLCIiPT09VGUuaHJlZilyZXR1cm4gaGUuaHJlZj1oZS5mb3JtYXQoKSxoZTtpZihUZS5zbGFz''@;'; put 'put ''aGVzJiYhVGUucHJvdG9jb2wpe2Zvcih2YXIgbmU9T2JqZWN0LmtleXMoVGUpLHg9MDt4PG5lLmxlbmd0aDt4Kyspe3ZhciBQPW5lW3hdOyJwcm90b2NvbCIhPT1QJiYoaGVbUF09VGVbUF0pfXJldHVybiBrZVtoZS5wcm90b2NvbF0mJmhlLmhvc3RuYW1lJiYhaGUucGF0aG5hbWUmJihoZS5w''@;'; put 'put ''YXRoPWhlLnBhdGhuYW1lPSIvIiksaGUuaHJlZj1oZS5mb3JtYXQoKSxoZX1pZihUZS5wcm90b2NvbCYmVGUucHJvdG9jb2whPT1oZS5wcm90b2NvbCl7aWYoIWtlW1RlLnByb3RvY29sXSl7Zm9yKHZhciBWPU9iamVjdC5rZXlzKFRlKSxUPTA7VDxWLmxlbmd0aDtUKyspe3ZhciBTPVZbVF07''@;'; put 'put ''aGVbU109VGVbU119cmV0dXJuIGhlLmhyZWY9aGUuZm9ybWF0KCksaGV9aWYoaGUucHJvdG9jb2w9VGUucHJvdG9jb2wsVGUuaG9zdHx8QWVbVGUucHJvdG9jb2xdKWhlLnBhdGhuYW1lPVRlLnBhdGhuYW1lO2Vsc2V7Zm9yKHZhciBGPShUZS5wYXRobmFtZXx8IiIpLnNwbGl0KCIvIik7Ri5s''@;'; put 'put ''ZW5ndGgmJiEoVGUuaG9zdD1GLnNoaWZ0KCkpOyk7VGUuaG9zdHx8KFRlLmhvc3Q9IiIpLFRlLmhvc3RuYW1lfHwoVGUuaG9zdG5hbWU9IiIpLCIiIT09RlswXSYmRi51bnNoaWZ0KCIiKSxGLmxlbmd0aDwyJiZGLnVuc2hpZnQoIiIpLGhlLnBhdGhuYW1lPUYuam9pbigiLyIpfXJldHVybiBo''@;'; put 'put ''ZS5zZWFyY2g9VGUuc2VhcmNoLGhlLnF1ZXJ5PVRlLnF1ZXJ5LGhlLmhvc3Q9VGUuaG9zdHx8IiIsaGUuYXV0aD1UZS5hdXRoLGhlLmhvc3RuYW1lPVRlLmhvc3RuYW1lfHxUZS5ob3N0LGhlLnBvcnQ9VGUucG9ydCwoaGUucGF0aG5hbWV8fGhlLnNlYXJjaCkmJihoZS5wYXRoPShoZS5wYXRo''@;'; put 'put ''bmFtZXx8IiIpKyhoZS5zZWFyY2h8fCIiKSksaGUuc2xhc2hlcz1oZS5zbGFzaGVzfHxUZS5zbGFzaGVzLGhlLmhyZWY9aGUuZm9ybWF0KCksaGV9dmFyIERlPWhlLnBhdGhuYW1lJiYiLyI9PT1oZS5wYXRobmFtZS5jaGFyQXQoMCksUGU9VGUuaG9zdHx8VGUucGF0aG5hbWUmJiIvIj09PVRl''@;'; put 'put ''LnBhdGhuYW1lLmNoYXJBdCgwKSxRZT1QZXx8RGV8fGhlLmhvc3QmJlRlLnBhdGhuYW1lLCRlPVFlLGd0PWhlLnBhdGhuYW1lJiZoZS5wYXRobmFtZS5zcGxpdCgiLyIpfHxbXSx3dD0oRj1UZS5wYXRobmFtZSYmVGUucGF0aG5hbWUuc3BsaXQoIi8iKXx8W10saGUucHJvdG9jb2wmJiFrZVto''@;'; put 'put ''ZS5wcm90b2NvbF0pO2lmKHd0JiYoaGUuaG9zdG5hbWU9IiIsaGUucG9ydD1udWxsLGhlLmhvc3QmJigiIj09PWd0WzBdP2d0WzBdPWhlLmhvc3Q6Z3QudW5zaGlmdChoZS5ob3N0KSksaGUuaG9zdD0iIixUZS5wcm90b2NvbCYmKFRlLmhvc3RuYW1lPW51bGwsVGUucG9ydD1udWxsLFRlLmhv''@;'; put 'put ''c3QmJigiIj09PUZbMF0/RlswXT1UZS5ob3N0OkYudW5zaGlmdChUZS5ob3N0KSksVGUuaG9zdD1udWxsKSxRZT1RZSYmKCIiPT09RlswXXx8IiI9PT1ndFswXSkpLFBlKWhlLmhvc3Q9VGUuaG9zdHx8IiI9PT1UZS5ob3N0P1RlLmhvc3Q6aGUuaG9zdCxoZS5ob3N0bmFtZT1UZS5ob3N0bmFt''@;'; put 'put ''ZXx8IiI9PT1UZS5ob3N0bmFtZT9UZS5ob3N0bmFtZTpoZS5ob3N0bmFtZSxoZS5zZWFyY2g9VGUuc2VhcmNoLGhlLnF1ZXJ5PVRlLnF1ZXJ5LGd0PUY7ZWxzZSBpZihGLmxlbmd0aClndHx8KGd0PVtdKSxndC5wb3AoKSxndD1ndC5jb25jYXQoRiksaGUuc2VhcmNoPVRlLnNlYXJjaCxoZS5x''@;'; put 'put ''dWVyeT1UZS5xdWVyeTtlbHNlIGlmKCFhZS5pc051bGxPclVuZGVmaW5lZChUZS5zZWFyY2gpKXJldHVybiB3dCYmKGhlLmhvc3RuYW1lPWhlLmhvc3Q9Z3Quc2hpZnQoKSwoQnQ9ISEoaGUuaG9zdCYmaGUuaG9zdC5pbmRleE9mKCJAIik+MCkmJmhlLmhvc3Quc3BsaXQoIkAiKSkmJihoZS5h''@;'; put 'put ''dXRoPUJ0LnNoaWZ0KCksaGUuaG9zdD1oZS5ob3N0bmFtZT1CdC5zaGlmdCgpKSksaGUuc2VhcmNoPVRlLnNlYXJjaCxoZS5xdWVyeT1UZS5xdWVyeSxhZS5pc051bGwoaGUucGF0aG5hbWUpJiZhZS5pc051bGwoaGUuc2VhcmNoKXx8KGhlLnBhdGg9KGhlLnBhdGhuYW1lP2hlLnBhdGhuYW1l''@;'; put 'put ''OiIiKSsoaGUuc2VhcmNoP2hlLnNlYXJjaDoiIikpLGhlLmhyZWY9aGUuZm9ybWF0KCksaGU7aWYoIWd0Lmxlbmd0aClyZXR1cm4gaGUucGF0aG5hbWU9bnVsbCxoZS5wYXRoPWhlLnNlYXJjaD8iLyIraGUuc2VhcmNoOm51bGwsaGUuaHJlZj1oZS5mb3JtYXQoKSxoZTtmb3IodmFyIG10PWd0''@;'; put 'put ''LnNsaWNlKC0xKVswXSx2dD0oaGUuaG9zdHx8VGUuaG9zdHx8Z3QubGVuZ3RoPjEpJiYoIi4iPT09bXR8fCIuLiI9PT1tdCl8fCIiPT09bXQsQXQ9MCxodD1ndC5sZW5ndGg7aHQ+PTA7aHQtLSkiLiI9PT0obXQ9Z3RbaHRdKT9ndC5zcGxpY2UoaHQsMSk6Ii4uIj09PW10PyhndC5zcGxpY2Uo''@;'; put 'put ''aHQsMSksQXQrKyk6QXQmJihndC5zcGxpY2UoaHQsMSksQXQtLSk7aWYoIVFlJiYhJGUpZm9yKDtBdC0tO0F0KWd0LnVuc2hpZnQoIi4uIik7IVFlfHwiIj09PWd0WzBdfHxndFswXSYmIi8iPT09Z3RbMF0uY2hhckF0KDApfHxndC51bnNoaWZ0KCIiKSx2dCYmIi8iIT09Z3Quam9pbigiLyIp''@;'; put 'put ''LnN1YnN0cigtMSkmJmd0LnB1c2goIiIpO3ZhciBCdCxvbj0iIj09PWd0WzBdfHxndFswXSYmIi8iPT09Z3RbMF0uY2hhckF0KDApO3JldHVybiB3dCYmKGhlLmhvc3RuYW1lPWhlLmhvc3Q9b24/IiI6Z3QubGVuZ3RoP2d0LnNoaWZ0KCk6IiIsKEJ0PSEhKGhlLmhvc3QmJmhlLmhvc3QuaW5k''@;'; put 'put ''ZXhPZigiQCIpPjApJiZoZS5ob3N0LnNwbGl0KCJAIikpJiYoaGUuYXV0aD1CdC5zaGlmdCgpLGhlLmhvc3Q9aGUuaG9zdG5hbWU9QnQuc2hpZnQoKSkpLChRZT1RZXx8aGUuaG9zdCYmZ3QubGVuZ3RoKSYmIW9uJiZndC51bnNoaWZ0KCIiKSxndC5sZW5ndGg/aGUucGF0aG5hbWU9Z3Quam9p''@;'; put 'put ''bigiLyIpOihoZS5wYXRobmFtZT1udWxsLGhlLnBhdGg9bnVsbCksYWUuaXNOdWxsKGhlLnBhdGhuYW1lKSYmYWUuaXNOdWxsKGhlLnNlYXJjaCl8fChoZS5wYXRoPShoZS5wYXRobmFtZT9oZS5wYXRobmFtZToiIikrKGhlLnNlYXJjaD9oZS5zZWFyY2g6IiIpKSxoZS5hdXRoPVRlLmF1dGh8''@;'; put 'put ''fGhlLmF1dGgsaGUuc2xhc2hlcz1oZS5zbGFzaGVzfHxUZS5zbGFzaGVzLGhlLmhyZWY9aGUuZm9ybWF0KCksaGV9LFkucHJvdG90eXBlLnBhcnNlSG9zdD1mdW5jdGlvbigpe3ZhciBUZT10aGlzLmhvc3QsTWU9Ti5leGVjKFRlKTtNZSYmKCI6IiE9PShNZT1NZVswXSkmJih0aGlzLnBvcnQ9''@;'; put 'put ''TWUuc3Vic3RyKDEpKSxUZT1UZS5zdWJzdHIoMCxUZS5sZW5ndGgtTWUubGVuZ3RoKSksVGUmJih0aGlzLmhvc3RuYW1lPVRlKX19LDI1MDI6VT0+eyJ1c2Ugc3RyaWN0IjtVLmV4cG9ydHM9e2lzU3RyaW5nOmZ1bmN0aW9uKFEpe3JldHVybiJzdHJpbmciPT10eXBlb2YgUX0saXNPYmplY3Q6''@;'; put 'put ''ZnVuY3Rpb24oUSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBRJiZudWxsIT09UX0saXNOdWxsOmZ1bmN0aW9uKFEpe3JldHVybiBudWxsPT09UX0saXNOdWxsT3JVbmRlZmluZWQ6ZnVuY3Rpb24oUSl7cmV0dXJuIG51bGw9PVF9fX0sNDkyNzooVSxRLGopPT57dmFyIHJlPWooNTEwOCk7ZnVu''@;'; put 'put ''Y3Rpb24gYWUoWSl7dHJ5e2lmKCFqLmcubG9jYWxTdG9yYWdlKXJldHVybiExfWNhdGNoKE4pe3JldHVybiExfXZhciBXPWouZy5sb2NhbFN0b3JhZ2VbWV07cmV0dXJuIG51bGwhPVcmJiJ0cnVlIj09PVN0cmluZyhXKS50b0xvd2VyQ2FzZSgpfVUuZXhwb3J0cz1mdW5jdGlvbihZLFcpe2lm''@;'; put 'put ''KGFlKCJub0RlcHJlY2F0aW9uIikpcmV0dXJuIFk7dmFyIE49ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIU4pe2lmKGFlKCJ0aHJvd0RlcHJlY2F0aW9uIikpdGhyb3cgbmV3IEVycm9yKFcpO2FlKCJ0cmFjZURlcHJlY2F0aW9uIik/cmUudHJhY2UoVyk6cmUud2FybihXKSxOPSEwfXJldHVy''@;'; put 'put ''biBZLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fSwzODQ6VT0+e1UuZXhwb3J0cz1mdW5jdGlvbihRKXtyZXR1cm4gUSYmIm9iamVjdCI9PXR5cGVvZiBRJiYiZnVuY3Rpb24iPT10eXBlb2YgUS5jb3B5JiYiZnVuY3Rpb24iPT10eXBlb2YgUS5maWxsJiYiZnVuY3Rpb24iPT10eXBlb2YgUS5y''@;'; put 'put ''ZWFkVUludDh9fSw1OTU1OihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooMjU4NCksYWU9aig4NjYyKSxZPWooNjQzMCksVz1qKDU2OTIpO2Z1bmN0aW9uIE4oeWUpe3JldHVybiB5ZS5jYWxsLmJpbmQoeWUpfXZhciB0ZT0idW5kZWZpbmVkIiE9dHlwZW9mIEJpZ0ludCxLPSJ1bmRl''@;'; put 'put ''ZmluZWQiIT10eXBlb2YgU3ltYm9sLEo9TihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKSxzZT1OKE51bWJlci5wcm90b3R5cGUudmFsdWVPZiksb2U9TihTdHJpbmcucHJvdG90eXBlLnZhbHVlT2YpLGNlPU4oQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZik7aWYodGUpdmFyIGRlPU4oQmln''@;'; put 'put ''SW50LnByb3RvdHlwZS52YWx1ZU9mKTtpZihLKXZhciB2ZT1OKFN5bWJvbC5wcm90b3R5cGUudmFsdWVPZik7ZnVuY3Rpb24gQWUoeWUsQ2Upe2lmKCJvYmplY3QiIT10eXBlb2YgeWUpcmV0dXJuITE7dHJ5e3JldHVybiBDZSh5ZSksITB9Y2F0Y2goRGUpe3JldHVybiExfX1mdW5jdGlvbiBr''@;'; put 'put ''ZSh5ZSl7cmV0dXJuIltvYmplY3QgTWFwXSI9PT1KKHllKX1mdW5jdGlvbiBTZSh5ZSl7cmV0dXJuIltvYmplY3QgU2V0XSI9PT1KKHllKX1mdW5jdGlvbiBJZSh5ZSl7cmV0dXJuIltvYmplY3QgV2Vha01hcF0iPT09Sih5ZSl9ZnVuY3Rpb24gVGUoeWUpe3JldHVybiJbb2JqZWN0IFdlYWtT''@;'; put 'put ''ZXRdIj09PUooeWUpfWZ1bmN0aW9uIE1lKHllKXtyZXR1cm4iW29iamVjdCBBcnJheUJ1ZmZlcl0iPT09Sih5ZSl9ZnVuY3Rpb24gaGUoeWUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJihNZS53b3JraW5nP01lKHllKTp5ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVy''@;'; put 'put ''KX1mdW5jdGlvbiBPKHllKXtyZXR1cm4iW29iamVjdCBEYXRhVmlld10iPT09Sih5ZSl9ZnVuY3Rpb24geih5ZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBEYXRhVmlldyYmKE8ud29ya2luZz9PKHllKTp5ZSBpbnN0YW5jZW9mIERhdGFWaWV3KX1RLmlzQXJndW1lbnRzT2JqZWN0PXJl''@;'; put 'put ''LFEuaXNHZW5lcmF0b3JGdW5jdGlvbj1hZSxRLmlzVHlwZWRBcnJheT1XLFEuaXNQcm9taXNlPWZ1bmN0aW9uKHllKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIFByb21pc2UmJnllIGluc3RhbmNlb2YgUHJvbWlzZXx8bnVsbCE9PXllJiYib2JqZWN0Ij09dHlwZW9mIHllJiYiZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgeWUudGhlbiYmImZ1bmN0aW9uIj09dHlwZW9mIHllLmNhdGNofSxRLmlzQXJyYXlCdWZmZXJWaWV3PWZ1bmN0aW9uKHllKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZBcnJheUJ1ZmZlci5pc1ZpZXc/QXJyYXlCdWZmZXIuaXNWaWV3KHllKTpX''@;'; put 'put ''KHllKXx8eih5ZSl9LFEuaXNVaW50OEFycmF5PWZ1bmN0aW9uKHllKXtyZXR1cm4iVWludDhBcnJheSI9PT1ZKHllKX0sUS5pc1VpbnQ4Q2xhbXBlZEFycmF5PWZ1bmN0aW9uKHllKXtyZXR1cm4iVWludDhDbGFtcGVkQXJyYXkiPT09WSh5ZSl9LFEuaXNVaW50MTZBcnJheT1mdW5jdGlvbih5''@;'; put 'put ''ZSl7cmV0dXJuIlVpbnQxNkFycmF5Ij09PVkoeWUpfSxRLmlzVWludDMyQXJyYXk9ZnVuY3Rpb24oeWUpe3JldHVybiJVaW50MzJBcnJheSI9PT1ZKHllKX0sUS5pc0ludDhBcnJheT1mdW5jdGlvbih5ZSl7cmV0dXJuIkludDhBcnJheSI9PT1ZKHllKX0sUS5pc0ludDE2QXJyYXk9ZnVuY3Rp''@;'; put 'put ''b24oeWUpe3JldHVybiJJbnQxNkFycmF5Ij09PVkoeWUpfSxRLmlzSW50MzJBcnJheT1mdW5jdGlvbih5ZSl7cmV0dXJuIkludDMyQXJyYXkiPT09WSh5ZSl9LFEuaXNGbG9hdDMyQXJyYXk9ZnVuY3Rpb24oeWUpe3JldHVybiJGbG9hdDMyQXJyYXkiPT09WSh5ZSl9LFEuaXNGbG9hdDY0QXJy''@;'; put 'put ''YXk9ZnVuY3Rpb24oeWUpe3JldHVybiJGbG9hdDY0QXJyYXkiPT09WSh5ZSl9LFEuaXNCaWdJbnQ2NEFycmF5PWZ1bmN0aW9uKHllKXtyZXR1cm4iQmlnSW50NjRBcnJheSI9PT1ZKHllKX0sUS5pc0JpZ1VpbnQ2NEFycmF5PWZ1bmN0aW9uKHllKXtyZXR1cm4iQmlnVWludDY0QXJyYXkiPT09''@;'; put 'put ''WSh5ZSl9LGtlLndvcmtpbmc9InVuZGVmaW5lZCIhPXR5cGVvZiBNYXAmJmtlKG5ldyBNYXApLFEuaXNNYXA9ZnVuY3Rpb24oeWUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgTWFwJiYoa2Uud29ya2luZz9rZSh5ZSk6eWUgaW5zdGFuY2VvZiBNYXApfSxTZS53b3JraW5nPSJ1bmRlZmlu''@;'; put 'put ''ZWQiIT10eXBlb2YgU2V0JiZTZShuZXcgU2V0KSxRLmlzU2V0PWZ1bmN0aW9uKHllKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIFNldCYmKFNlLndvcmtpbmc/U2UoeWUpOnllIGluc3RhbmNlb2YgU2V0KX0sSWUud29ya2luZz0idW5kZWZpbmVkIiE9dHlwZW9mIFdlYWtNYXAmJkllKG5l''@;'; put 'put ''dyBXZWFrTWFwKSxRLmlzV2Vha01hcD1mdW5jdGlvbih5ZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBXZWFrTWFwJiYoSWUud29ya2luZz9JZSh5ZSk6eWUgaW5zdGFuY2VvZiBXZWFrTWFwKX0sVGUud29ya2luZz0idW5kZWZpbmVkIiE9dHlwZW9mIFdlYWtTZXQmJlRlKG5ldyBXZWFr''@;'; put 'put ''U2V0KSxRLmlzV2Vha1NldD1mdW5jdGlvbih5ZSl7cmV0dXJuIFRlKHllKX0sTWUud29ya2luZz0idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZNZShuZXcgQXJyYXlCdWZmZXIpLFEuaXNBcnJheUJ1ZmZlcj1oZSxPLndvcmtpbmc9InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1''@;'; put 'put ''ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBEYXRhVmlldyYmTyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpLDAsMSkpLFEuaXNEYXRhVmlldz16O3ZhciBlZT0idW5kZWZpbmVkIiE9dHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyP1NoYXJlZEFycmF5QnVmZmVyOnZvaWQgMDtmdW5j''@;'; put 'put ''dGlvbiBuZSh5ZSl7cmV0dXJuIltvYmplY3QgU2hhcmVkQXJyYXlCdWZmZXJdIj09PUooeWUpfWZ1bmN0aW9uIHgoeWUpe3JldHVybiB2b2lkIDAhPT1lZSYmKHZvaWQgMD09PW5lLndvcmtpbmcmJihuZS53b3JraW5nPW5lKG5ldyBlZSkpLG5lLndvcmtpbmc/bmUoeWUpOnllIGluc3RhbmNl''@;'; put 'put ''b2YgZWUpfWZ1bmN0aW9uIFAoeWUpe3JldHVybiBBZSh5ZSxzZSl9ZnVuY3Rpb24gVih5ZSl7cmV0dXJuIEFlKHllLG9lKX1mdW5jdGlvbiBUKHllKXtyZXR1cm4gQWUoeWUsY2UpfWZ1bmN0aW9uIFMoeWUpe3JldHVybiB0ZSYmQWUoeWUsZGUpfWZ1bmN0aW9uIEYoeWUpe3JldHVybiBLJiZB''@;'; put 'put ''ZSh5ZSx2ZSl9US5pc1NoYXJlZEFycmF5QnVmZmVyPXgsUS5pc0FzeW5jRnVuY3Rpb249ZnVuY3Rpb24oeWUpe3JldHVybiJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIj09PUooeWUpfSxRLmlzTWFwSXRlcmF0b3I9ZnVuY3Rpb24oeWUpe3JldHVybiJbb2JqZWN0IE1hcCBJdGVyYXRvcl0iPT09''@;'; put 'put ''Sih5ZSl9LFEuaXNTZXRJdGVyYXRvcj1mdW5jdGlvbih5ZSl7cmV0dXJuIltvYmplY3QgU2V0IEl0ZXJhdG9yXSI9PT1KKHllKX0sUS5pc0dlbmVyYXRvck9iamVjdD1mdW5jdGlvbih5ZSl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSI9PT1KKHllKX0sUS5pc1dlYkFzc2VtYmx5Q29tcGls''@;'; put 'put ''ZWRNb2R1bGU9ZnVuY3Rpb24oeWUpe3JldHVybiJbb2JqZWN0IFdlYkFzc2VtYmx5Lk1vZHVsZV0iPT09Sih5ZSl9LFEuaXNOdW1iZXJPYmplY3Q9UCxRLmlzU3RyaW5nT2JqZWN0PVYsUS5pc0Jvb2xlYW5PYmplY3Q9VCxRLmlzQmlnSW50T2JqZWN0PVMsUS5pc1N5bWJvbE9iamVjdD1GLFEu''@;'; put 'put ''aXNCb3hlZFByaW1pdGl2ZT1mdW5jdGlvbih5ZSl7cmV0dXJuIFAoeWUpfHxWKHllKXx8VCh5ZSl8fFMoeWUpfHxGKHllKX0sUS5pc0FueUFycmF5QnVmZmVyPWZ1bmN0aW9uKHllKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXkmJihoZSh5ZSl8fHgoeWUpKX0sWyJpc1By''@;'; put 'put ''b3h5IiwiaXNFeHRlcm5hbCIsImlzTW9kdWxlTmFtZXNwYWNlT2JqZWN0Il0uZm9yRWFjaChmdW5jdGlvbih5ZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFEseWUse2VudW1lcmFibGU6ITEsdmFsdWU6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoeWUrIiBpcyBub3Qgc3VwcG9ydGVkIGlu''@;'; put 'put ''IHVzZXJsYW5kIil9fSl9KX0sOTUzOTooVSxRLGopPT57dmFyIHJlPWooNDE1NSksYWU9aig1MTA4KSxZPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzfHxmdW5jdGlvbihDZSl7Zm9yKHZhciBEZT1PYmplY3Qua2V5cyhDZSksUGU9e30sUWU9MDtRZTxEZS5sZW5ndGg7UWUrKylQ''@;'; put 'put ''ZVtEZVtRZV1dPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQ2UsRGVbUWVdKTtyZXR1cm4gUGV9LFc9LyVbc2RqJV0vZztRLmZvcm1hdD1mdW5jdGlvbihDZSl7aWYoIVRlKENlKSl7Zm9yKHZhciBEZT1bXSxQZT0wO1BlPGFyZ3VtZW50cy5sZW5ndGg7UGUrKylEZS5wdXNoKEoo''@;'; put 'put ''YXJndW1lbnRzW1BlXSkpO3JldHVybiBEZS5qb2luKCIgIil9UGU9MTtmb3IodmFyIFFlPWFyZ3VtZW50cywkZT1RZS5sZW5ndGgsZ3Q9U3RyaW5nKENlKS5yZXBsYWNlKFcsZnVuY3Rpb24obXQpe2lmKCIlJSI9PT1tdClyZXR1cm4iJSI7aWYoUGU+PSRlKXJldHVybiBtdDtzd2l0Y2gobXQp''@;'; put 'put ''e2Nhc2UiJXMiOnJldHVybiBTdHJpbmcoUWVbUGUrK10pO2Nhc2UiJWQiOnJldHVybiBOdW1iZXIoUWVbUGUrK10pO2Nhc2UiJWoiOnRyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoUWVbUGUrK10pfWNhdGNoKHZ0KXtyZXR1cm4iW0NpcmN1bGFyXSJ9ZGVmYXVsdDpyZXR1cm4gbXR9fSksd3Q9''@;'; put 'put ''UWVbUGVdO1BlPCRlO3d0PVFlWysrUGVdKVNlKHd0KXx8IU8od3QpP2d0Kz0iICIrd3Q6Z3QrPSIgIitKKHd0KTtyZXR1cm4gZ3R9LFEuZGVwcmVjYXRlPWZ1bmN0aW9uKENlLERlKXtpZih2b2lkIDAhPT1yZSYmITA9PT1yZS5ub0RlcHJlY2F0aW9uKXJldHVybiBDZTtpZih2b2lkIDA9PT1y''@;'; put 'put ''ZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gUS5kZXByZWNhdGUoQ2UsRGUpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07dmFyIFBlPSExO3JldHVybiBmdW5jdGlvbigpe2lmKCFQZSl7aWYocmUudGhyb3dEZXByZWNhdGlvbil0aHJvdyBuZXcgRXJyb3IoRGUpO3JlLnRyYWNlRGVwcmVjYXRp''@;'; put 'put ''b24/YWUudHJhY2UoRGUpOmFlLmVycm9yKERlKSxQZT0hMH1yZXR1cm4gQ2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX07dmFyIE49e30sdGU9L14kLztpZihyZS5lbnYuTk9ERV9ERUJVRyl7dmFyIEs9cmUuZW52Lk5PREVfREVCVUc7Sz1LLnJlcGxhY2UoL1t8XFx7fSgpW1xdXiQrPy5dL2cs''@;'; put 'put ''IlxcJCYiKS5yZXBsYWNlKC9cKi9nLCIuKiIpLnJlcGxhY2UoLywvZywiJHxeIikudG9VcHBlckNhc2UoKSx0ZT1uZXcgUmVnRXhwKCJeIitLKyIkIiwiaSIpfWZ1bmN0aW9uIEooQ2UsRGUpe3ZhciBQZT17c2VlbjpbXSxzdHlsaXplOm9lfTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD49MyYm''@;'; put 'put ''KFBlLmRlcHRoPWFyZ3VtZW50c1syXSksYXJndW1lbnRzLmxlbmd0aD49NCYmKFBlLmNvbG9ycz1hcmd1bWVudHNbM10pLGtlKERlKT9QZS5zaG93SGlkZGVuPURlOkRlJiZRLl9leHRlbmQoUGUsRGUpLE1lKFBlLnNob3dIaWRkZW4pJiYoUGUuc2hvd0hpZGRlbj0hMSksTWUoUGUuZGVwdGgp''@;'; put 'put ''JiYoUGUuZGVwdGg9MiksTWUoUGUuY29sb3JzKSYmKFBlLmNvbG9ycz0hMSksTWUoUGUuY3VzdG9tSW5zcGVjdCkmJihQZS5jdXN0b21JbnNwZWN0PSEwKSxQZS5jb2xvcnMmJihQZS5zdHlsaXplPXNlKSxjZShQZSxDZSxQZS5kZXB0aCl9ZnVuY3Rpb24gc2UoQ2UsRGUpe3ZhciBQZT1KLnN0''@;'; put 'put ''eWxlc1tEZV07cmV0dXJuIFBlPyJceDFiWyIrSi5jb2xvcnNbUGVdWzBdKyJtIitDZSsiXHgxYlsiK0ouY29sb3JzW1BlXVsxXSsibSI6Q2V9ZnVuY3Rpb24gb2UoQ2UsRGUpe3JldHVybiBDZX1mdW5jdGlvbiBjZShDZSxEZSxQZSl7aWYoQ2UuY3VzdG9tSW5zcGVjdCYmRGUmJm5lKERlLmlu''@;'; put 'put ''c3BlY3QpJiZEZS5pbnNwZWN0IT09US5pbnNwZWN0JiYoIURlLmNvbnN0cnVjdG9yfHxEZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUhPT1EZSkpe3ZhciBRZT1EZS5pbnNwZWN0KFBlLENlKTtyZXR1cm4gVGUoUWUpfHwoUWU9Y2UoQ2UsUWUsUGUpKSxRZX12YXIgJGU9ZnVuY3Rpb24ob24sX3Qp''@;'; put 'put ''e2lmKE1lKF90KSlyZXR1cm4gb24uc3R5bGl6ZSgidW5kZWZpbmVkIiwidW5kZWZpbmVkIik7aWYoVGUoX3QpKXt2YXIgdHQ9IiciK0pTT04uc3RyaW5naWZ5KF90KS5yZXBsYWNlKC9eInwiJC9nLCIiKS5yZXBsYWNlKC8nL2csIlxcJyIpLnJlcGxhY2UoL1xcIi9nLCciJykrIiciO3JldHVy''@;'; put 'put ''biBvbi5zdHlsaXplKHR0LCJzdHJpbmciKX1yZXR1cm4gSWUoX3QpP29uLnN0eWxpemUoIiIrX3QsIm51bWJlciIpOmtlKF90KT9vbi5zdHlsaXplKCIiK190LCJib29sZWFuIik6U2UoX3QpP29uLnN0eWxpemUoIm51bGwiLCJudWxsIik6dm9pZCAwfShDZSxEZSk7aWYoJGUpcmV0dXJuICRl''@;'; put 'put ''O3ZhciBfdCxndD1PYmplY3Qua2V5cyhEZSksd3Q9KF90PXt9LGd0LmZvckVhY2goZnVuY3Rpb24odHQsZXQpe190W3R0XT0hMH0pLF90KTtpZihDZS5zaG93SGlkZGVuJiYoZ3Q9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoRGUpKSxlZShEZSkmJihndC5pbmRleE9mKCJtZXNzYWdlIik+''@;'; put 'put ''PTB8fGd0LmluZGV4T2YoImRlc2NyaXB0aW9uIik+PTApKXJldHVybiBkZShEZSk7aWYoMD09PWd0Lmxlbmd0aCl7aWYobmUoRGUpKXJldHVybiBDZS5zdHlsaXplKCJbRnVuY3Rpb24iKyhEZS5uYW1lPyI6ICIrRGUubmFtZToiIikrIl0iLCJzcGVjaWFsIik7aWYoaGUoRGUpKXJldHVybiBD''@;'; put 'put ''ZS5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChEZSksInJlZ2V4cCIpO2lmKHooRGUpKXJldHVybiBDZS5zdHlsaXplKERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoRGUpLCJkYXRlIik7aWYoZWUoRGUpKXJldHVybiBkZShEZSl9dmFyIHZ0LEF0PSIiLGh0PSEx''@;'; put 'put ''LEJ0PVsieyIsIn0iXTtyZXR1cm4gQWUoRGUpJiYoaHQ9ITAsQnQ9WyJbIiwiXSJdKSxuZShEZSkmJihBdD0iIFtGdW5jdGlvbiIrKERlLm5hbWU/IjogIitEZS5uYW1lOiIiKSsiXSIpLGhlKERlKSYmKEF0PSIgIitSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoRGUpKSx6KERlKSYm''@;'; put 'put ''KEF0PSIgIitEYXRlLnByb3RvdHlwZS50b1VUQ1N0cmluZy5jYWxsKERlKSksZWUoRGUpJiYoQXQ9IiAiK2RlKERlKSksMCE9PWd0Lmxlbmd0aHx8aHQmJjAhPURlLmxlbmd0aD9QZTwwP2hlKERlKT9DZS5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChEZSksInJlZ2V4''@;'; put 'put ''cCIpOkNlLnN0eWxpemUoIltPYmplY3RdIiwic3BlY2lhbCIpOihDZS5zZWVuLnB1c2goRGUpLHZ0PWh0P2Z1bmN0aW9uKG9uLF90LHR0LGV0LGx0KXtmb3IodmFyIEx0PVtdLEN0PTAsZnQ9X3QubGVuZ3RoO0N0PGZ0OysrQ3QpUyhfdCxTdHJpbmcoQ3QpKT9MdC5wdXNoKHZlKG9uLF90LHR0''@;'; put 'put ''LGV0LFN0cmluZyhDdCksITApKTpMdC5wdXNoKCIiKTtyZXR1cm4gbHQuZm9yRWFjaChmdW5jdGlvbihIdCl7SHQubWF0Y2goL15cZCskLyl8fEx0LnB1c2godmUob24sX3QsdHQsZXQsSHQsITApKX0pLEx0fShDZSxEZSxQZSx3dCxndCk6Z3QubWFwKGZ1bmN0aW9uKG9uKXtyZXR1cm4gdmUo''@;'; put 'put ''Q2UsRGUsUGUsd3Qsb24saHQpfSksQ2Uuc2Vlbi5wb3AoKSxmdW5jdGlvbihvbixfdCx0dCl7cmV0dXJuIG9uLnJlZHVjZShmdW5jdGlvbihldCxsdCl7cmV0dXJuIGx0LmluZGV4T2YoIlxuIiksZXQrbHQucmVwbGFjZSgvXHUwMDFiXFtcZFxkP20vZywiIikubGVuZ3RoKzF9LDApPjYwP3R0''@;'; put 'put ''WzBdKygiIj09PV90PyIiOl90KyJcbiAiKSsiICIrb24uam9pbigiLFxuICAiKSsiICIrdHRbMV06dHRbMF0rX3QrIiAiK29uLmpvaW4oIiwgIikrIiAiK3R0WzFdfSh2dCxBdCxCdCkpOkJ0WzBdK0F0K0J0WzFdfWZ1bmN0aW9uIGRlKENlKXtyZXR1cm4iWyIrRXJyb3IucHJvdG90eXBlLnRv''@;'; put 'put ''U3RyaW5nLmNhbGwoQ2UpKyJdIn1mdW5jdGlvbiB2ZShDZSxEZSxQZSxRZSwkZSxndCl7dmFyIHd0LG10LHZ0O2lmKCh2dD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKERlLCRlKXx8e3ZhbHVlOkRlWyRlXX0pLmdldD9tdD1DZS5zdHlsaXplKHZ0LnNldD8iW0dldHRlci9TZXR0''@;'; put 'put ''ZXJdIjoiW0dldHRlcl0iLCJzcGVjaWFsIik6dnQuc2V0JiYobXQ9Q2Uuc3R5bGl6ZSgiW1NldHRlcl0iLCJzcGVjaWFsIikpLFMoUWUsJGUpfHwod3Q9IlsiKyRlKyJdIiksbXR8fChDZS5zZWVuLmluZGV4T2YodnQudmFsdWUpPDA/KG10PVNlKFBlKT9jZShDZSx2dC52YWx1ZSxudWxsKTpj''@;'; put 'put ''ZShDZSx2dC52YWx1ZSxQZS0xKSkuaW5kZXhPZigiXG4iKT4tMSYmKG10PWd0P210LnNwbGl0KCJcbiIpLm1hcChmdW5jdGlvbihBdCl7cmV0dXJuIiAgIitBdH0pLmpvaW4oIlxuIikuc3Vic3RyKDIpOiJcbiIrbXQuc3BsaXQoIlxuIikubWFwKGZ1bmN0aW9uKEF0KXtyZXR1cm4iICAgIitB''@;'; put 'put ''dH0pLmpvaW4oIlxuIikpOm10PUNlLnN0eWxpemUoIltDaXJjdWxhcl0iLCJzcGVjaWFsIikpLE1lKHd0KSl7aWYoZ3QmJiRlLm1hdGNoKC9eXGQrJC8pKXJldHVybiBtdDsod3Q9SlNPTi5zdHJpbmdpZnkoIiIrJGUpKS5tYXRjaCgvXiIoW2EtekEtWl9dW2EtekEtWl8wLTldKikiJC8pPyh3''@;'; put 'put ''dD13dC5zdWJzdHIoMSx3dC5sZW5ndGgtMiksd3Q9Q2Uuc3R5bGl6ZSh3dCwibmFtZSIpKTood3Q9d3QucmVwbGFjZSgvJy9nLCJcXCciKS5yZXBsYWNlKC9cXCIvZywnIicpLnJlcGxhY2UoLyheInwiJCkvZywiJyIpLHd0PUNlLnN0eWxpemUod3QsInN0cmluZyIpKX1yZXR1cm4gd3QrIjog''@;'; put 'put ''IittdH1mdW5jdGlvbiBBZShDZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoQ2UpfWZ1bmN0aW9uIGtlKENlKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBDZX1mdW5jdGlvbiBTZShDZSl7cmV0dXJuIG51bGw9PT1DZX1mdW5jdGlvbiBJZShDZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBDZX1m''@;'; put 'put ''dW5jdGlvbiBUZShDZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBDZX1mdW5jdGlvbiBNZShDZSl7cmV0dXJuIHZvaWQgMD09PUNlfWZ1bmN0aW9uIGhlKENlKXtyZXR1cm4gTyhDZSkmJiJbb2JqZWN0IFJlZ0V4cF0iPT09eChDZSl9ZnVuY3Rpb24gTyhDZSl7cmV0dXJuIm9iamVjdCI9PXR5''@;'; put 'put ''cGVvZiBDZSYmbnVsbCE9PUNlfWZ1bmN0aW9uIHooQ2Upe3JldHVybiBPKENlKSYmIltvYmplY3QgRGF0ZV0iPT09eChDZSl9ZnVuY3Rpb24gZWUoQ2Upe3JldHVybiBPKENlKSYmKCJbb2JqZWN0IEVycm9yXSI9PT14KENlKXx8Q2UgaW5zdGFuY2VvZiBFcnJvcil9ZnVuY3Rpb24gbmUoQ2Up''@;'; put 'put ''e3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBDZX1mdW5jdGlvbiB4KENlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKENlKX1mdW5jdGlvbiBQKENlKXtyZXR1cm4gQ2U8MTA/IjAiK0NlLnRvU3RyaW5nKDEwKTpDZS50b1N0cmluZygxMCl9US5kZWJ1Z2xvZz1mdW5j''@;'; put 'put ''dGlvbihDZSl7aWYoQ2U9Q2UudG9VcHBlckNhc2UoKSwhTltDZV0paWYodGUudGVzdChDZSkpe3ZhciBEZT1yZS5waWQ7TltDZV09ZnVuY3Rpb24oKXt2YXIgUGU9US5mb3JtYXQuYXBwbHkoUSxhcmd1bWVudHMpO2FlLmVycm9yKCIlcyAlZDogJXMiLENlLERlLFBlKX19ZWxzZSBOW0NlXT1m''@;'; put 'put ''dW5jdGlvbigpe307cmV0dXJuIE5bQ2VdfSxRLmluc3BlY3Q9SixKLmNvbG9ycz17Ym9sZDpbMSwyMl0saXRhbGljOlszLDIzXSx1bmRlcmxpbmU6WzQsMjRdLGludmVyc2U6WzcsMjddLHdoaXRlOlszNywzOV0sZ3JleTpbOTAsMzldLGJsYWNrOlszMCwzOV0sYmx1ZTpbMzQsMzldLGN5YW46''@;'; put 'put ''WzM2LDM5XSxncmVlbjpbMzIsMzldLG1hZ2VudGE6WzM1LDM5XSxyZWQ6WzMxLDM5XSx5ZWxsb3c6WzMzLDM5XX0sSi5zdHlsZXM9e3NwZWNpYWw6ImN5YW4iLG51bWJlcjoieWVsbG93Iixib29sZWFuOiJ5ZWxsb3ciLHVuZGVmaW5lZDoiZ3JleSIsbnVsbDoiYm9sZCIsc3RyaW5nOiJncmVl''@;'; put 'put ''biIsZGF0ZToibWFnZW50YSIscmVnZXhwOiJyZWQifSxRLnR5cGVzPWooNTk1NSksUS5pc0FycmF5PUFlLFEuaXNCb29sZWFuPWtlLFEuaXNOdWxsPVNlLFEuaXNOdWxsT3JVbmRlZmluZWQ9ZnVuY3Rpb24oQ2Upe3JldHVybiBudWxsPT1DZX0sUS5pc051bWJlcj1JZSxRLmlzU3RyaW5nPVRl''@;'; put 'put ''LFEuaXNTeW1ib2w9ZnVuY3Rpb24oQ2Upe3JldHVybiJzeW1ib2wiPT10eXBlb2YgQ2V9LFEuaXNVbmRlZmluZWQ9TWUsUS5pc1JlZ0V4cD1oZSxRLnR5cGVzLmlzUmVnRXhwPWhlLFEuaXNPYmplY3Q9TyxRLmlzRGF0ZT16LFEudHlwZXMuaXNEYXRlPXosUS5pc0Vycm9yPWVlLFEudHlwZXMu''@;'; put 'put ''aXNOYXRpdmVFcnJvcj1lZSxRLmlzRnVuY3Rpb249bmUsUS5pc1ByaW1pdGl2ZT1mdW5jdGlvbihDZSl7cmV0dXJuIG51bGw9PT1DZXx8ImJvb2xlYW4iPT10eXBlb2YgQ2V8fCJudW1iZXIiPT10eXBlb2YgQ2V8fCJzdHJpbmciPT10eXBlb2YgQ2V8fCJzeW1ib2wiPT10eXBlb2YgQ2V8fHZv''@;'; put 'put ''aWQgMD09PUNlfSxRLmlzQnVmZmVyPWooMzg0KTt2YXIgVj1bIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdO2Z1bmN0aW9uIFQoKXt2YXIgQ2U9bmV3IERhdGUsRGU9W1AoQ2UuZ2V0SG91cnMoKSksUChDZS5n''@;'; put 'put ''ZXRNaW51dGVzKCkpLFAoQ2UuZ2V0U2Vjb25kcygpKV0uam9pbigiOiIpO3JldHVybltDZS5nZXREYXRlKCksVltDZS5nZXRNb250aCgpXSxEZV0uam9pbigiICIpfWZ1bmN0aW9uIFMoQ2UsRGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoQ2UsRGUpfVEu''@;'; put 'put ''bG9nPWZ1bmN0aW9uKCl7YWUubG9nKCIlcyAtICVzIixUKCksUS5mb3JtYXQuYXBwbHkoUSxhcmd1bWVudHMpKX0sUS5pbmhlcml0cz1qKDU3MTcpLFEuX2V4dGVuZD1mdW5jdGlvbihDZSxEZSl7aWYoIURlfHwhTyhEZSkpcmV0dXJuIENlO2Zvcih2YXIgUGU9T2JqZWN0LmtleXMoRGUpLFFl''@;'; put 'put ''PVBlLmxlbmd0aDtRZS0tOylDZVtQZVtRZV1dPURlW1BlW1FlXV07cmV0dXJuIENlfTt2YXIgRj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbD9TeW1ib2woInV0aWwucHJvbWlzaWZ5LmN1c3RvbSIpOnZvaWQgMDtmdW5jdGlvbiB5ZShDZSxEZSl7aWYoIUNlKXt2YXIgUGU9bmV3IEVycm9y''@;'; put 'put ''KCJQcm9taXNlIHdhcyByZWplY3RlZCB3aXRoIGEgZmFsc3kgdmFsdWUiKTtQZS5yZWFzb249Q2UsQ2U9UGV9cmV0dXJuIERlKENlKX1RLnByb21pc2lmeT1mdW5jdGlvbihDZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIENlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAib3JpZ2luYWwiIGFy''@;'; put 'put ''Z3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbicpO2lmKEYmJkNlW0ZdKXt2YXIgRGU7aWYoImZ1bmN0aW9uIiE9dHlwZW9mKERlPUNlW0ZdKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInV0aWwucHJvbWlzaWZ5LmN1c3RvbSIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0''@;'; put 'put ''aW9uJyk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEZSxGLHt2YWx1ZTpEZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLERlfWZ1bmN0aW9uIERlKCl7Zm9yKHZhciBQZSxRZSwkZT1uZXcgUHJvbWlzZShmdW5jdGlvbihtdCx2dCl7UGU9bXQsUWU9''@;'; put 'put ''dnR9KSxndD1bXSx3dD0wO3d0PGFyZ3VtZW50cy5sZW5ndGg7d3QrKylndC5wdXNoKGFyZ3VtZW50c1t3dF0pO2d0LnB1c2goZnVuY3Rpb24obXQsdnQpe210P1FlKG10KTpQZSh2dCl9KTt0cnl7Q2UuYXBwbHkodGhpcyxndCl9Y2F0Y2gobXQpe1FlKG10KX1yZXR1cm4gJGV9cmV0dXJuIE9i''@;'; put 'put ''amVjdC5zZXRQcm90b3R5cGVPZihEZSxPYmplY3QuZ2V0UHJvdG90eXBlT2YoQ2UpKSxGJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoRGUsRix7dmFsdWU6RGUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhEZSxZKENl''@;'; put 'put ''KSl9LFEucHJvbWlzaWZ5LmN1c3RvbT1GLFEuY2FsbGJhY2tpZnk9ZnVuY3Rpb24oQ2Upe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBDZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgIm9yaWdpbmFsIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKTtmdW5jdGlvbiBEZSgpe2Zv''@;'; put 'put ''cih2YXIgUGU9W10sUWU9MDtRZTxhcmd1bWVudHMubGVuZ3RoO1FlKyspUGUucHVzaChhcmd1bWVudHNbUWVdKTt2YXIgJGU9UGUucG9wKCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mICRlKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBsYXN0IGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5j''@;'; put 'put ''dGlvbiIpO3ZhciBndD10aGlzLHd0PWZ1bmN0aW9uKCl7cmV0dXJuICRlLmFwcGx5KGd0LGFyZ3VtZW50cyl9O0NlLmFwcGx5KHRoaXMsUGUpLnRoZW4oZnVuY3Rpb24obXQpe3JlLm5leHRUaWNrKHd0LmJpbmQobnVsbCxudWxsLG10KSl9LGZ1bmN0aW9uKG10KXtyZS5uZXh0VGljayh5ZS5i''@;'; put 'put ''aW5kKG51bGwsbXQsd3QpKX0pfXJldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoRGUsT2JqZWN0LmdldFByb3RvdHlwZU9mKENlKSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRGUsWShDZSkpLERlfX0sNDgxOihVLFEsaik9PnshZnVuY3Rpb24ocmUpeyJ1c2Ugc3RyaWN0IjtyZS5leHBv''@;'; put 'put ''cnRzLmlzX3VyaT1ZLHJlLmV4cG9ydHMuaXNfaHR0cF91cmk9VyxyZS5leHBvcnRzLmlzX2h0dHBzX3VyaT1OLHJlLmV4cG9ydHMuaXNfd2ViX3VyaT10ZSxyZS5leHBvcnRzLmlzVXJpPVkscmUuZXhwb3J0cy5pc0h0dHBVcmk9VyxyZS5leHBvcnRzLmlzSHR0cHNVcmk9TixyZS5leHBvcnRz''@;'; put 'put ''LmlzV2ViVXJpPXRlO3ZhciBhZT1mdW5jdGlvbihLKXtyZXR1cm4gSy5tYXRjaCgvKD86KFteOlwvPyNdKyk6KT8oPzpcL1wvKFteXC8/I10qKSk/KFtePyNdKikoPzpcPyhbXiNdKikpPyg/OiMoLiopKT8vKX07ZnVuY3Rpb24gWShLKXtpZihLJiYhL1teYS16MC05XDpcL1w/XCNcW1xdXEBc''@;'; put 'put ''IVwkXCZcJ1woXClcKlwrXCxcO1w9XC5cLVxfXH5cJV0vaS50ZXN0KEspJiYhLyVbXjAtOWEtZl0vaS50ZXN0KEspJiYhLyVbMC05YS1mXSg6P1teMC05YS1mXXwkKS9pLnRlc3QoSykpe3ZhciBKLHNlLG9lLGNlLGRlLHZlPSIiLEFlPSIiO2lmKHZlPShKPWFlKEspKVsxXSxzZT1KWzJdLG9l''@;'; put 'put ''PUpbM10sY2U9Sls0XSxkZT1KWzVdLHZlJiZ2ZS5sZW5ndGgmJm9lLmxlbmd0aD49MCl7aWYoc2UmJnNlLmxlbmd0aCl7aWYoMCE9PW9lLmxlbmd0aCYmIS9eXC8vLnRlc3Qob2UpKXJldHVybn1lbHNlIGlmKC9eXC9cLy8udGVzdChvZSkpcmV0dXJuO2lmKC9eW2Etel1bYS16MC05XCtcLVwu''@;'; put 'put ''XSokLy50ZXN0KHZlLnRvTG93ZXJDYXNlKCkpKXJldHVybiBBZSs9dmUrIjoiLHNlJiZzZS5sZW5ndGgmJihBZSs9Ii8vIitzZSksQWUrPW9lLGNlJiZjZS5sZW5ndGgmJihBZSs9Ij8iK2NlKSxkZSYmZGUubGVuZ3RoJiYoQWUrPSIjIitkZSksQWV9fX1mdW5jdGlvbiBXKEssSil7aWYoWShL''@;'; put 'put ''KSl7dmFyIHNlLG9lLGNlLGRlLHZlPSIiLEFlPSIiLGtlPSIiLFNlPSIiO2lmKHZlPShzZT1hZShLKSlbMV0sQWU9c2VbMl0sb2U9c2VbM10sY2U9c2VbNF0sZGU9c2VbNV0sdmUpe2lmKEope2lmKCJodHRwcyIhPXZlLnRvTG93ZXJDYXNlKCkpcmV0dXJufWVsc2UgaWYoImh0dHAiIT12ZS50''@;'; put 'put ''b0xvd2VyQ2FzZSgpKXJldHVybjtpZihBZSlyZXR1cm4vOihcZCspJC8udGVzdChBZSkmJihrZT1BZS5tYXRjaCgvOihcZCspJC8pWzBdLEFlPUFlLnJlcGxhY2UoLzpcZCskLywiIikpLFNlKz12ZSsiOiIsU2UrPSIvLyIrQWUsa2UmJihTZSs9a2UpLFNlKz1vZSxjZSYmY2UubGVuZ3RoJiYo''@;'; put 'put ''U2UrPSI/IitjZSksZGUmJmRlLmxlbmd0aCYmKFNlKz0iIyIrZGUpLFNlfX19ZnVuY3Rpb24gTihLKXtyZXR1cm4gVyhLLCEwKX1mdW5jdGlvbiB0ZShLKXtyZXR1cm4gVyhLKXx8TihLKX19KFU9ai5ubWQoVSkpfSw2NDMwOihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooNDAyOSks''@;'; put 'put ''YWU9aigzMDgzKSxZPWooMTkyNCksVz1ZKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nIiksTj1qKDY0MTApKCksdGU9InVuZGVmaW5lZCI9PXR5cGVvZiBnbG9iYWxUaGlzP2ouZzpnbG9iYWxUaGlzLEs9YWUoKSxKPVkoIlN0cmluZy5wcm90b3R5cGUuc2xpY2UiKSxzZT17fSxvZT1qKDg4''@;'; put 'put ''MiksY2U9T2JqZWN0LmdldFByb3RvdHlwZU9mO04mJm9lJiZjZSYmcmUoSyxmdW5jdGlvbih2ZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHRlW3ZlXSl7dmFyIEFlPW5ldyB0ZVt2ZV07aWYoU3ltYm9sLnRvU3RyaW5nVGFnIGluIEFlKXt2YXIga2U9Y2UoQWUpLFNlPW9lKGtlLFN5bWJvbC50''@;'; put 'put ''b1N0cmluZ1RhZyk7aWYoIVNlKXt2YXIgSWU9Y2Uoa2UpO1NlPW9lKEllLFN5bWJvbC50b1N0cmluZ1RhZyl9c2VbdmVdPVNlLmdldH19fSk7dmFyIGRlPWooNTY5Mik7VS5leHBvcnRzPWZ1bmN0aW9uKHZlKXtyZXR1cm4hIWRlKHZlKSYmKE4mJlN5bWJvbC50b1N0cmluZ1RhZyBpbiB2ZT8o''@;'; put 'put ''QWU9dmUsa2U9ITEscmUoc2UsZnVuY3Rpb24oU2UsSWUpe2lmKCFrZSl0cnl7dmFyIFRlPVNlLmNhbGwoQWUpO1RlPT09SWUmJihrZT1UZSl9Y2F0Y2goTWUpe319KSxrZSk6SihXKHZlKSw4LC0xKSk7dmFyIEFlLGtlfX0sMjQ3OTpVPT57VS5leHBvcnRzPWZ1bmN0aW9uIFEoaixyZSl7aWYo''@;'; put 'put ''aiYmcmUpcmV0dXJuIFEoaikocmUpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBqKXRocm93IG5ldyBUeXBlRXJyb3IoIm5lZWQgd3JhcHBlciBmdW5jdGlvbiIpO3JldHVybiBPYmplY3Qua2V5cyhqKS5mb3JFYWNoKGZ1bmN0aW9uKFkpe2FlW1ldPWpbWV19KSxhZTtmdW5jdGlvbiBhZSgpe2Zv''@;'; put 'put ''cih2YXIgWT1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksVz0wO1c8WS5sZW5ndGg7VysrKVlbV109YXJndW1lbnRzW1ddO3ZhciBOPWouYXBwbHkodGhpcyxZKSx0ZT1ZW1kubGVuZ3RoLTFdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBOJiZOIT09dGUmJk9iamVjdC5rZXlzKHRlKS5m''@;'; put 'put ''b3JFYWNoKGZ1bmN0aW9uKEspe05bS109dGVbS119KSxOfX19LDk1MDooKT0+e30sNjYwMTooKT0+e30sOTIxNDooKT0+e30sODYyMzooKT0+e30sNzc0ODooKT0+e30sNTU2ODooKT0+e30sMjUzNTooKT0+e30sMzcxMDooKT0+e30sNTQ0MzooKT0+e30sNDEyOTooKT0+e30sNjYxOTooKT0+''@;'; put 'put ''e30sNzEwODooKT0+e30sMjM2MTooKT0+e30sNDYxNjooKT0+e30sNzIxNzooKT0+e30sODM3MzooKT0+e30sMzA4MzooVSxRLGopPT57InVzZSBzdHJpY3QiO3ZhciByZT1bIkJpZ0ludDY0QXJyYXkiLCJCaWdVaW50NjRBcnJheSIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSIsIklu''@;'; put 'put ''dDE2QXJyYXkiLCJJbnQzMkFycmF5IiwiSW50OEFycmF5IiwiVWludDE2QXJyYXkiLCJVaW50MzJBcnJheSIsIlVpbnQ4QXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSJdLGFlPSJ1bmRlZmluZWQiPT10eXBlb2YgZ2xvYmFsVGhpcz9qLmc6Z2xvYmFsVGhpcztVLmV4cG9ydHM9ZnVuY3Rpb24o''@;'; put 'put ''KXtmb3IodmFyIFk9W10sVz0wO1c8cmUubGVuZ3RoO1crKykiZnVuY3Rpb24iPT10eXBlb2YgYWVbcmVbV11dJiYoWVtZLmxlbmd0aF09cmVbV10pO3JldHVybiBZfX0sODgyOihVLFEsaik9PnsidXNlIHN0cmljdCI7dmFyIHJlPWooMjEwKSgiJU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny''@;'; put 'put ''aXB0b3IlIiwhMCk7aWYocmUpdHJ5e3JlKFtdLCJsZW5ndGgiKX1jYXRjaChhZSl7cmU9bnVsbH1VLmV4cG9ydHM9cmV9LDQ5NDY6VT0+eyJ1c2Ugc3RyaWN0IjtVLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJhZXMtMTI4LWVjYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjAsIm1v''@;'; put 'put ''ZGUiOiJFQ0IiLCJ0eXBlIjoiYmxvY2sifSwiYWVzLTE5Mi1lY2IiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjowLCJtb2RlIjoiRUNCIiwidHlwZSI6ImJsb2NrIn0sImFlcy0yNTYtZWNiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MCwibW9kZSI6IkVDQiIsInR5''@;'; put 'put ''cGUiOiJibG9jayJ9LCJhZXMtMTI4LWNiYyI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlcy0xOTItY2JjIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJDQkMiLCJ0eXBlIjoiYmxvY2si''@;'; put 'put ''fSwiYWVzLTI1Ni1jYmMiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMxMjgiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMxOTIiOnsiY2lw''@;'; put 'put ''aGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMyNTYiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMtMTI4LWNmYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXki''@;'; put 'put ''OjEyOCwiaXYiOjE2LCJtb2RlIjoiQ0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTkyLWNmYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMjU2LWNmYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYi''@;'; put 'put ''OjE2LCJtb2RlIjoiQ0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTI4LWNmYjgiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6IkNGQjgiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xOTItY2ZiOCI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJt''@;'; put 'put ''b2RlIjoiQ0ZCOCIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTI1Ni1jZmI4Ijp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJDRkI4IiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTI4LWNmYjEiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6''@;'; put 'put ''IkNGQjEiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xOTItY2ZiMSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ0ZCMSIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTI1Ni1jZmIxIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJDRkIx''@;'; put 'put ''IiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTI4LW9mYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiT0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTkyLW9mYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiT0ZCIiwidHlwZSI6''@;'; put 'put ''InN0cmVhbSJ9LCJhZXMtMjU2LW9mYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiT0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTI4LWN0ciI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ1RSIiwidHlwZSI6InN0cmVhbSJ9''@;'; put 'put ''LCJhZXMtMTkyLWN0ciI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ1RSIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMjU2LWN0ciI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiQ1RSIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTI4''@;'; put 'put ''LWdjbSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjEyLCJtb2RlIjoiR0NNIiwidHlwZSI6ImF1dGgifSwiYWVzLTE5Mi1nY20iOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxMiwibW9kZSI6IkdDTSIsInR5cGUiOiJhdXRoIn0sImFlcy0yNTYtZ2NtIjp7ImNpcGhl''@;'; put 'put ''ciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTIsIm1vZGUiOiJHQ00iLCJ0eXBlIjoiYXV0aCJ9fScpfSw1MjA3OlU9PnsidXNlIHN0cmljdCI7VS5leHBvcnRzPUpTT04ucGFyc2UoJ3sic2hhMjI0V2l0aFJTQUVuY3J5cHRpb24iOnsic2lnbiI6InJzYSIsImhhc2giOiJzaGEyMjQiLCJpZCI6''@;'; put 'put ''IjMwMmQzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwNDA1MDAwNDFjIn0sIlJTQS1TSEEyMjQiOnsic2lnbiI6ImVjZHNhL3JzYSIsImhhc2giOiJzaGEyMjQiLCJpZCI6IjMwMmQzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwNDA1MDAwNDFjIn0sInNoYTI1NldpdGhSU0FFbmNyeXB0aW9uIjp7''@;'; put 'put ''InNpZ24iOiJyc2EiLCJoYXNoIjoic2hhMjU2IiwiaWQiOiIzMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMCJ9LCJSU0EtU0hBMjU2Ijp7InNpZ24iOiJlY2RzYS9yc2EiLCJoYXNoIjoic2hhMjU2IiwiaWQiOiIzMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAw''@;'; put 'put ''MDQyMCJ9LCJzaGEzODRXaXRoUlNBRW5jcnlwdGlvbiI6eyJzaWduIjoicnNhIiwiaGFzaCI6InNoYTM4NCIsImlkIjoiMzA0MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAyMDUwMDA0MzAifSwiUlNBLVNIQTM4NCI6eyJzaWduIjoiZWNkc2EvcnNhIiwiaGFzaCI6InNoYTM4NCIsImlkIjoi''@;'; put 'put ''MzA0MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAyMDUwMDA0MzAifSwic2hhNTEyV2l0aFJTQUVuY3J5cHRpb24iOnsic2lnbiI6InJzYSIsImhhc2giOiJzaGE1MTIiLCJpZCI6IjMwNTEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMzA1MDAwNDQwIn0sIlJTQS1TSEE1MTIiOnsic2lnbiI6''@;'; put 'put ''ImVjZHNhL3JzYSIsImhhc2giOiJzaGE1MTIiLCJpZCI6IjMwNTEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMzA1MDAwNDQwIn0sIlJTQS1TSEExIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoic2hhMSIsImlkIjoiMzAyMTMwMDkwNjA1MmIwZTAzMDIxYTA1MDAwNDE0In0sImVjZHNhLXdpdGgt''@;'; put 'put ''U0hBMSI6eyJzaWduIjoiZWNkc2EiLCJoYXNoIjoic2hhMSIsImlkIjoiIn0sInNoYTI1NiI6eyJzaWduIjoiZWNkc2EiLCJoYXNoIjoic2hhMjU2IiwiaWQiOiIifSwic2hhMjI0Ijp7InNpZ24iOiJlY2RzYSIsImhhc2giOiJzaGEyMjQiLCJpZCI6IiJ9LCJzaGEzODQiOnsic2lnbiI6ImVj''@;'; put 'put ''ZHNhIiwiaGFzaCI6InNoYTM4NCIsImlkIjoiIn0sInNoYTUxMiI6eyJzaWduIjoiZWNkc2EiLCJoYXNoIjoic2hhNTEyIiwiaWQiOiIifSwiRFNBLVNIQSI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTEiLCJpZCI6IiJ9LCJEU0EtU0hBMSI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTEi''@;'; put 'put ''LCJpZCI6IiJ9LCJEU0EiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGExIiwiaWQiOiIifSwiRFNBLVdJVEgtU0hBMjI0Ijp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMjI0IiwiaWQiOiIifSwiRFNBLVNIQTIyNCI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTIyNCIsImlkIjoiIn0sIkRT''@;'; put 'put ''QS1XSVRILVNIQTI1NiI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTI1NiIsImlkIjoiIn0sIkRTQS1TSEEyNTYiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEyNTYiLCJpZCI6IiJ9LCJEU0EtV0lUSC1TSEEzODQiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEzODQiLCJpZCI6IiJ9LCJE''@;'; put 'put ''U0EtU0hBMzg0Ijp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMzg0IiwiaWQiOiIifSwiRFNBLVdJVEgtU0hBNTEyIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhNTEyIiwiaWQiOiIifSwiRFNBLVNIQTUxMiI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTUxMiIsImlkIjoiIn0sIkRTQS1S''@;'; put 'put ''SVBFTUQxNjAiOnsic2lnbiI6ImRzYSIsImhhc2giOiJybWQxNjAiLCJpZCI6IiJ9LCJyaXBlbWQxNjBXaXRoUlNBIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoicm1kMTYwIiwiaWQiOiIzMDIxMzAwOTA2MDUyYjI0MDMwMjAxMDUwMDA0MTQifSwiUlNBLVJJUEVNRDE2MCI6eyJzaWduIjoicnNh''@;'; put 'put ''IiwiaGFzaCI6InJtZDE2MCIsImlkIjoiMzAyMTMwMDkwNjA1MmIyNDAzMDIwMTA1MDAwNDE0In0sIm1kNVdpdGhSU0FFbmNyeXB0aW9uIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoibWQ1IiwiaWQiOiIzMDIwMzAwYzA2MDgyYTg2NDg4NmY3MGQwMjA1MDUwMDA0MTAifSwiUlNBLU1ENSI6eyJz''@;'; put 'put ''aWduIjoicnNhIiwiaGFzaCI6Im1kNSIsImlkIjoiMzAyMDMwMGMwNjA4MmE4NjQ4ODZmNzBkMDIwNTA1MDAwNDEwIn19Jyl9LDEzMDg6VT0+eyJ1c2Ugc3RyaWN0IjtVLmV4cG9ydHM9SlNPTi5wYXJzZSgneyIxLjMuMTMyLjAuMTAiOiJzZWNwMjU2azEiLCIxLjMuMTMyLjAuMzMiOiJwMjI0''@;'; put 'put ''IiwiMS4yLjg0MC4xMDA0NS4zLjEuMSI6InAxOTIiLCIxLjIuODQwLjEwMDQ1LjMuMS43IjoicDI1NiIsIjEuMy4xMzIuMC4zNCI6InAzODQiLCIxLjMuMTMyLjAuMzUiOiJwNTIxIn0nKX0sMzIwODpVPT57InVzZSBzdHJpY3QiO1UuZXhwb3J0cz1KU09OLnBhcnNlKCd7Ik9fUkRPTkxZIjow''@;'; put 'put ''LCJPX1dST05MWSI6MSwiT19SRFdSIjoyLCJTX0lGTVQiOjYxNDQwLCJTX0lGUkVHIjozMjc2OCwiU19JRkRJUiI6MTYzODQsIlNfSUZDSFIiOjgxOTIsIlNfSUZCTEsiOjI0NTc2LCJTX0lGSUZPIjo0MDk2LCJTX0lGTE5LIjo0MDk2MCwiU19JRlNPQ0siOjQ5MTUyLCJPX0NSRUFUIjo1MTIs''@;'; put 'put ''Ik9fRVhDTCI6MjA0OCwiT19OT0NUVFkiOjEzMTA3MiwiT19UUlVOQyI6MTAyNCwiT19BUFBFTkQiOjgsIk9fRElSRUNUT1JZIjoxMDQ4NTc2LCJPX05PRk9MTE9XIjoyNTYsIk9fU1lOQyI6MTI4LCJPX1NZTUxJTksiOjIwOTcxNTIsIk9fTk9OQkxPQ0siOjQsIlNfSVJXWFUiOjQ0OCwiU19J''@;'; put 'put ''UlVTUiI6MjU2LCJTX0lXVVNSIjoxMjgsIlNfSVhVU1IiOjY0LCJTX0lSV1hHIjo1NiwiU19JUkdSUCI6MzIsIlNfSVdHUlAiOjE2LCJTX0lYR1JQIjo4LCJTX0lSV1hPIjo3LCJTX0lST1RIIjo0LCJTX0lXT1RIIjoyLCJTX0lYT1RIIjoxLCJFMkJJRyI6NywiRUFDQ0VTIjoxMywiRUFERFJJ''@;'; put 'put ''TlVTRSI6NDgsIkVBRERSTk9UQVZBSUwiOjQ5LCJFQUZOT1NVUFBPUlQiOjQ3LCJFQUdBSU4iOjM1LCJFQUxSRUFEWSI6MzcsIkVCQURGIjo5LCJFQkFETVNHIjo5NCwiRUJVU1kiOjE2LCJFQ0FOQ0VMRUQiOjg5LCJFQ0hJTEQiOjEwLCJFQ09OTkFCT1JURUQiOjUzLCJFQ09OTlJFRlVTRUQi''@;'; put 'put ''OjYxLCJFQ09OTlJFU0VUIjo1NCwiRURFQURMSyI6MTEsIkVERVNUQUREUlJFUSI6MzksIkVET00iOjMzLCJFRFFVT1QiOjY5LCJFRVhJU1QiOjE3LCJFRkFVTFQiOjE0LCJFRkJJRyI6MjcsIkVIT1NUVU5SRUFDSCI6NjUsIkVJRFJNIjo5MCwiRUlMU0VRIjo5MiwiRUlOUFJPR1JFU1MiOjM2''@;'; put 'put ''LCJFSU5UUiI6NCwiRUlOVkFMIjoyMiwiRUlPIjo1LCJFSVNDT05OIjo1NiwiRUlTRElSIjoyMSwiRUxPT1AiOjYyLCJFTUZJTEUiOjI0LCJFTUxJTksiOjMxLCJFTVNHU0laRSI6NDAsIkVNVUxUSUhPUCI6OTUsIkVOQU1FVE9PTE9ORyI6NjMsIkVORVRET1dOIjo1MCwiRU5FVFJFU0VUIjo1''@;'; put 'put ''MiwiRU5FVFVOUkVBQ0giOjUxLCJFTkZJTEUiOjIzLCJFTk9CVUZTIjo1NSwiRU5PREFUQSI6OTYsIkVOT0RFViI6MTksIkVOT0VOVCI6MiwiRU5PRVhFQyI6OCwiRU5PTENLIjo3NywiRU5PTElOSyI6OTcsIkVOT01FTSI6MTIsIkVOT01TRyI6OTEsIkVOT1BST1RPT1BUIjo0MiwiRU5PU1BD''@;'; put 'put ''IjoyOCwiRU5PU1IiOjk4LCJFTk9TVFIiOjk5LCJFTk9TWVMiOjc4LCJFTk9UQ09OTiI6NTcsIkVOT1RESVIiOjIwLCJFTk9URU1QVFkiOjY2LCJFTk9UU09DSyI6MzgsIkVOT1RTVVAiOjQ1LCJFTk9UVFkiOjI1LCJFTlhJTyI6NiwiRU9QTk9UU1VQUCI6MTAyLCJFT1ZFUkZMT1ciOjg0LCJF''@;'; put 'put ''UEVSTSI6MSwiRVBJUEUiOjMyLCJFUFJPVE8iOjEwMCwiRVBST1RPTk9TVVBQT1JUIjo0MywiRVBST1RPVFlQRSI6NDEsIkVSQU5HRSI6MzQsIkVST0ZTIjozMCwiRVNQSVBFIjoyOSwiRVNSQ0giOjMsIkVTVEFMRSI6NzAsIkVUSU1FIjoxMDEsIkVUSU1FRE9VVCI6NjAsIkVUWFRCU1kiOjI2''@;'; put 'put ''LCJFV09VTERCTE9DSyI6MzUsIkVYREVWIjoxOCwiU0lHSFVQIjoxLCJTSUdJTlQiOjIsIlNJR1FVSVQiOjMsIlNJR0lMTCI6NCwiU0lHVFJBUCI6NSwiU0lHQUJSVCI6NiwiU0lHSU9UIjo2LCJTSUdCVVMiOjEwLCJTSUdGUEUiOjgsIlNJR0tJTEwiOjksIlNJR1VTUjEiOjMwLCJTSUdTRUdW''@;'; put 'put ''IjoxMSwiU0lHVVNSMiI6MzEsIlNJR1BJUEUiOjEzLCJTSUdBTFJNIjoxNCwiU0lHVEVSTSI6MTUsIlNJR0NITEQiOjIwLCJTSUdDT05UIjoxOSwiU0lHU1RPUCI6MTcsIlNJR1RTVFAiOjE4LCJTSUdUVElOIjoyMSwiU0lHVFRPVSI6MjIsIlNJR1VSRyI6MTYsIlNJR1hDUFUiOjI0LCJTSUdY''@;'; put 'put ''RlNaIjoyNSwiU0lHVlRBTFJNIjoyNiwiU0lHUFJPRiI6MjcsIlNJR1dJTkNIIjoyOCwiU0lHSU8iOjIzLCJTSUdTWVMiOjEyLCJTU0xfT1BfQUxMIjoyMTQ3NDg2NzE5LCJTU0xfT1BfQUxMT1dfVU5TQUZFX0xFR0FDWV9SRU5FR09USUFUSU9OIjoyNjIxNDQsIlNTTF9PUF9DSVBIRVJfU0VS''@;'; put 'put ''VkVSX1BSRUZFUkVOQ0UiOjQxOTQzMDQsIlNTTF9PUF9DSVNDT19BTllDT05ORUNUIjozMjc2OCwiU1NMX09QX0NPT0tJRV9FWENIQU5HRSI6ODE5MiwiU1NMX09QX0NSWVBUT1BST19UTFNFWFRfQlVHIjoyMTQ3NDgzNjQ4LCJTU0xfT1BfRE9OVF9JTlNFUlRfRU1QVFlfRlJBR01FTlRTIjoy''@;'; put 'put ''MDQ4LCJTU0xfT1BfRVBIRU1FUkFMX1JTQSI6MCwiU1NMX09QX0xFR0FDWV9TRVJWRVJfQ09OTkVDVCI6NCwiU1NMX09QX01JQ1JPU09GVF9CSUdfU1NMVjNfQlVGRkVSIjozMiwiU1NMX09QX01JQ1JPU09GVF9TRVNTX0lEX0JVRyI6MSwiU1NMX09QX01TSUVfU1NMVjJfUlNBX1BBRERJTkci''@;'; put 'put ''OjAsIlNTTF9PUF9ORVRTQ0FQRV9DQV9ETl9CVUciOjUzNjg3MDkxMiwiU1NMX09QX05FVFNDQVBFX0NIQUxMRU5HRV9CVUciOjIsIlNTTF9PUF9ORVRTQ0FQRV9ERU1PX0NJUEhFUl9DSEFOR0VfQlVHIjoxMDczNzQxODI0LCJTU0xfT1BfTkVUU0NBUEVfUkVVU0VfQ0lQSEVSX0NIQU5HRV9C''@;'; put 'put ''VUciOjgsIlNTTF9PUF9OT19DT01QUkVTU0lPTiI6MTMxMDcyLCJTU0xfT1BfTk9fUVVFUllfTVRVIjo0MDk2LCJTU0xfT1BfTk9fU0VTU0lPTl9SRVNVTVBUSU9OX09OX1JFTkVHT1RJQVRJT04iOjY1NTM2LCJTU0xfT1BfTk9fU1NMdjIiOjE2Nzc3MjE2LCJTU0xfT1BfTk9fU1NMdjMiOjMz''@;'; put 'put ''NTU0NDMyLCJTU0xfT1BfTk9fVElDS0VUIjoxNjM4NCwiU1NMX09QX05PX1RMU3YxIjo2NzEwODg2NCwiU1NMX09QX05PX1RMU3YxXzEiOjI2ODQzNTQ1NiwiU1NMX09QX05PX1RMU3YxXzIiOjEzNDIxNzcyOCwiU1NMX09QX1BLQ1MxX0NIRUNLXzEiOjAsIlNTTF9PUF9QS0NTMV9DSEVDS18y''@;'; put 'put ''IjowLCJTU0xfT1BfU0lOR0xFX0RIX1VTRSI6MTA0ODU3NiwiU1NMX09QX1NJTkdMRV9FQ0RIX1VTRSI6NTI0Mjg4LCJTU0xfT1BfU1NMRUFZXzA4MF9DTElFTlRfREhfQlVHIjoxMjgsIlNTTF9PUF9TU0xSRUYyX1JFVVNFX0NFUlRfVFlQRV9CVUciOjAsIlNTTF9PUF9UTFNfQkxPQ0tfUEFE''@;'; put 'put ''RElOR19CVUciOjUxMiwiU1NMX09QX1RMU19ENV9CVUciOjI1NiwiU1NMX09QX1RMU19ST0xMQkFDS19CVUciOjgzODg2MDgsIkVOR0lORV9NRVRIT0RfRFNBIjoyLCJFTkdJTkVfTUVUSE9EX0RIIjo0LCJFTkdJTkVfTUVUSE9EX1JBTkQiOjgsIkVOR0lORV9NRVRIT0RfRUNESCI6MTYsIkVO''@;'; put 'put ''R0lORV9NRVRIT0RfRUNEU0EiOjMyLCJFTkdJTkVfTUVUSE9EX0NJUEhFUlMiOjY0LCJFTkdJTkVfTUVUSE9EX0RJR0VTVFMiOjEyOCwiRU5HSU5FX01FVEhPRF9TVE9SRSI6MjU2LCJFTkdJTkVfTUVUSE9EX1BLRVlfTUVUSFMiOjUxMiwiRU5HSU5FX01FVEhPRF9QS0VZX0FTTjFfTUVUSFMi''@;'; put 'put ''OjEwMjQsIkVOR0lORV9NRVRIT0RfQUxMIjo2NTUzNSwiRU5HSU5FX01FVEhPRF9OT05FIjowLCJESF9DSEVDS19QX05PVF9TQUZFX1BSSU1FIjoyLCJESF9DSEVDS19QX05PVF9QUklNRSI6MSwiREhfVU5BQkxFX1RPX0NIRUNLX0dFTkVSQVRPUiI6NCwiREhfTk9UX1NVSVRBQkxFX0dFTkVS''@;'; put 'put ''QVRPUiI6OCwiTlBOX0VOQUJMRUQiOjEsIlJTQV9QS0NTMV9QQURESU5HIjoxLCJSU0FfU1NMVjIzX1BBRERJTkciOjIsIlJTQV9OT19QQURESU5HIjozLCJSU0FfUEtDUzFfT0FFUF9QQURESU5HIjo0LCJSU0FfWDkzMV9QQURESU5HIjo1LCJSU0FfUEtDUzFfUFNTX1BBRERJTkciOjYsIlBP''@;'; put 'put ''SU5UX0NPTlZFUlNJT05fQ09NUFJFU1NFRCI6MiwiUE9JTlRfQ09OVkVSU0lPTl9VTkNPTVBSRVNTRUQiOjQsIlBPSU5UX0NPTlZFUlNJT05fSFlCUklEIjo2LCJGX09LIjowLCJSX09LIjo0LCJXX09LIjoyLCJYX09LIjoxLCJVVl9VRFBfUkVVU0VBRERSIjo0fScpfSw5Nzk5OlU9PnsidXNl''@;'; put 'put ''IHN0cmljdCI7VS5leHBvcnRzPUpTT04ucGFyc2UoJ3sibW9kcDEiOnsiZ2VuIjoiMDIiLCJwcmltZSI6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIz''@;'; put 'put ''Y2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2M2EzNjIwZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwMiI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMx''@;'; put 'put ''Y2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFl''@;'; put 'put ''OWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTY1MzgxZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwNSI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3''@;'; put 'put ''OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYz''@;'; put 'put ''YmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2EyMzczMjdmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHAxNCI6eyJnZW4iOiIwMiIsInByaW1lIjoi''@;'; put 'put ''ZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0''@;'; put 'put ''MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcw''@;'; put 'put ''OTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFjYWE2''@;'; put 'put ''OGZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDE1Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAy''@;'; put 'put ''YjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4''@;'; put 'put ''ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgx''@;'; put 'put ''NzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNl''@;'; put 'put ''ZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTNhZDJjYWZmZmZmZmZmZmZmZmZmZmYifSwibW9k''@;'; put 'put ''cDE2Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1''@;'; put 'put ''MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2''@;'; put 'put ''MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIy''@;'; put 'put ''NjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5''@;'; put 'put ''OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIz''@;'; put 'put ''YzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0''@;'; put 'put ''ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwNjMxOTlmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHAxNyI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2''@;'; put 'put ''M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1''@;'; put 'put ''YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzli''@;'; put 'put ''Mjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4''@;'; put 'put ''NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZk''@;'; put 'put ''MTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIy''@;'; put 'put ''MzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDI4NDkyMzZjM2ZhYjRkMjdjNzAyNmMxZDRkY2IyNjAyNjQ2ZGVjOTc1MWU3NjNkYmEzN2JkZjhmZjk0''@;'; put 'put ''MDZhZDllNTMwZWU1ZGIzODJmNDEzMDAxYWViMDZhNTNlZDkwMjdkODMxMTc5NzI3YjA4NjVhODkxOGRhM2VkYmViY2Y5YjE0ZWQ0NGNlNmNiYWNlZDRiYjFiZGI3ZjE0NDdlNmNjMjU0YjMzMjA1MTUxMmJkN2FmNDI2ZmI4ZjQwMTM3OGNkMmJmNTk4M2NhMDFjNjRiOTJlY2YwMzJlYTE1ZDE3''@;'; put 'put ''MjFkMDNmNDgyZDdjZTZlNzRmZWY2ZDU1ZTcwMmY0Njk4MGM4MmI1YTg0MDMxOTAwYjFjOWU1OWU3Yzk3ZmJlYzdlOGYzMjNhOTdhN2UzNmNjODhiZTBmMWQ0NWI3ZmY1ODVhYzU0YmQ0MDdiMjJiNDE1NGFhY2M4ZjZkN2ViZjQ4ZTFkODE0Y2M1ZWQyMGY4MDM3ZTBhNzk3MTVlZWYyOWJlMzI4''@;'; put 'put ''MDZhMWQ1OGJiN2M1ZGE3NmY1NTBhYTNkOGExZmJmZjBlYjE5Y2NiMWEzMTNkNTVjZGE1NmM5ZWMyZWYyOTYzMjM4N2ZlOGQ3NmUzYzA0NjgwNDNlOGY2NjNmNDg2MGVlMTJiZjJkNWIwYjc0NzRkNmU2OTRmOTFlNmRjYzQwMjRmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHAxOCI6eyJnZW4iOiIw''@;'; put 'put ''MiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2''@;'; put 'put ''MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUy''@;'; put 'put ''YmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3''@;'; put 'put ''MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjcz''@;'; put 'put ''M2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUw''@;'; put 'put ''YmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2''@;'; put 'put ''ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDI4NDkyMzZjM2ZhYjRkMjdjNzAyNmMxZDRkY2IyNjAyNjQ2ZGVjOTc1MWU3NjNkYmEzN2JkZjhmZjk0MDZhZDllNTMwZWU1ZGIzODJmNDEzMDAxYWViMDZhNTNlZDkwMjdkODMxMTc5NzI3YjA4NjVhODkxOGRhM2VkYmViY2Y5YjE0ZWQ0NGNlNmNi''@;'; put 'put ''YWNlZDRiYjFiZGI3ZjE0NDdlNmNjMjU0YjMzMjA1MTUxMmJkN2FmNDI2ZmI4ZjQwMTM3OGNkMmJmNTk4M2NhMDFjNjRiOTJlY2YwMzJlYTE1ZDE3MjFkMDNmNDgyZDdjZTZlNzRmZWY2ZDU1ZTcwMmY0Njk4MGM4MmI1YTg0MDMxOTAwYjFjOWU1OWU3Yzk3ZmJlYzdlOGYzMjNhOTdhN2UzNmNj''@;'; put 'put ''ODhiZTBmMWQ0NWI3ZmY1ODVhYzU0YmQ0MDdiMjJiNDE1NGFhY2M4ZjZkN2ViZjQ4ZTFkODE0Y2M1ZWQyMGY4MDM3ZTBhNzk3MTVlZWYyOWJlMzI4MDZhMWQ1OGJiN2M1ZGE3NmY1NTBhYTNkOGExZmJmZjBlYjE5Y2NiMWEzMTNkNTVjZGE1NmM5ZWMyZWYyOTYzMjM4N2ZlOGQ3NmUzYzA0Njgw''@;'; put 'put ''NDNlOGY2NjNmNDg2MGVlMTJiZjJkNWIwYjc0NzRkNmU2OTRmOTFlNmRiZTExNTk3NGEzOTI2ZjEyZmVlNWU0Mzg3NzdjYjZhOTMyZGY4Y2Q4YmVjNGQwNzNiOTMxYmEzYmM4MzJiNjhkOWRkMzAwNzQxZmE3YmY4YWZjNDdlZDI1NzZmNjkzNmJhNDI0NjYzYWFiNjM5YzVhZTRmNTY4MzQyM2I0''@;'; put 'put ''NzQyYmYxYzk3ODIzOGYxNmNiZTM5ZDY1MmRlM2ZkYjhiZWZjODQ4YWQ5MjIyMjJlMDRhNDAzN2MwNzEzZWI1N2E4MWEyM2YwYzczNDczZmM2NDZjZWEzMDZiNGJjYmM4ODYyZjgzODVkZGZhOWQ0YjdmYTJjMDg3ZTg3OTY4MzMwM2VkNWJkZDNhMDYyYjNjZjViM2EyNzhhNjZkMmExM2Y4M2Y0''@;'; put 'put ''NGY4MmRkZjMxMGVlMDc0YWI2YTM2NDU5N2U4OTlhMDI1NWRjMTY0ZjMxY2M1MDg0Njg1MWRmOWFiNDgxOTVkZWQ3ZWExYjFkNTEwYmQ3ZWU3NGQ3M2ZhZjM2YmMzMWVjZmEyNjgzNTkwNDZmNGViODc5ZjkyNDAwOTQzOGI0ODFjNmNkNzg4OWEwMDJlZDVlZTM4MmJjOTE5MGRhNmZjMDI2ZTQ3''@;'; put 'put ''OTU1OGU0NDc1Njc3ZTlhYTllMzA1MGUyNzY1Njk0ZGZjODFmNTZlODgwYjk2ZTcxNjBjOTgwZGQ5OGVkZDNkZmZmZmZmZmZmZmZmZmZmZmYifX0nKX0sODU5NzpVPT57InVzZSBzdHJpY3QiO1UuZXhwb3J0cz17aTg6IjYuNS40In19LDI1NjI6VT0+eyJ1c2Ugc3RyaWN0IjtVLmV4cG9ydHM9''@;'; put 'put ''SlNPTi5wYXJzZSgneyIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4xIjoiYWVzLTEyOC1lY2IiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yIjoiYWVzLTEyOC1jYmMiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4zIjoiYWVzLTEyOC1vZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40IjoiYWVzLTEyOC1j''@;'; put 'put ''ZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yMSI6ImFlcy0xOTItZWNiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjIiOiJhZXMtMTkyLWNiYyIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIzIjoiYWVzLTE5Mi1vZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yNCI6ImFlcy0xOTItY2ZiIiwi''@;'; put 'put ''Mi4xNi44NDAuMS4xMDEuMy40LjEuNDEiOiJhZXMtMjU2LWVjYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQyIjoiYWVzLTI1Ni1jYmMiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MyI6ImFlcy0yNTYtb2ZiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDQiOiJhZXMtMjU2LWNmYiJ9Jyl9LDM3''@;'; put 'put ''MDQ6VT0+eyJ1c2Ugc3RyaWN0IjtVLmV4cG9ydHM9SlNPTi5wYXJzZSgnWyJhYyIsImNvbS5hYyIsImVkdS5hYyIsImdvdi5hYyIsIm5ldC5hYyIsIm1pbC5hYyIsIm9yZy5hYyIsImFkIiwibm9tLmFkIiwiYWUiLCJjby5hZSIsIm5ldC5hZSIsIm9yZy5hZSIsInNjaC5hZSIsImFjLmFlIiwi''@;'; put 'put ''Z292LmFlIiwibWlsLmFlIiwiYWVybyIsImFjY2lkZW50LWludmVzdGlnYXRpb24uYWVybyIsImFjY2lkZW50LXByZXZlbnRpb24uYWVybyIsImFlcm9iYXRpYy5hZXJvIiwiYWVyb2NsdWIuYWVybyIsImFlcm9kcm9tZS5hZXJvIiwiYWdlbnRzLmFlcm8iLCJhaXJjcmFmdC5hZXJvIiwiYWly''@;'; put 'put ''bGluZS5hZXJvIiwiYWlycG9ydC5hZXJvIiwiYWlyLXN1cnZlaWxsYW5jZS5hZXJvIiwiYWlydHJhZmZpYy5hZXJvIiwiYWlyLXRyYWZmaWMtY29udHJvbC5hZXJvIiwiYW1idWxhbmNlLmFlcm8iLCJhbXVzZW1lbnQuYWVybyIsImFzc29jaWF0aW9uLmFlcm8iLCJhdXRob3IuYWVybyIsImJh''@;'; put 'put ''bGxvb25pbmcuYWVybyIsImJyb2tlci5hZXJvIiwiY2FhLmFlcm8iLCJjYXJnby5hZXJvIiwiY2F0ZXJpbmcuYWVybyIsImNlcnRpZmljYXRpb24uYWVybyIsImNoYW1waW9uc2hpcC5hZXJvIiwiY2hhcnRlci5hZXJvIiwiY2l2aWxhdmlhdGlvbi5hZXJvIiwiY2x1Yi5hZXJvIiwiY29uZmVy''@;'; put 'put ''ZW5jZS5hZXJvIiwiY29uc3VsdGFudC5hZXJvIiwiY29uc3VsdGluZy5hZXJvIiwiY29udHJvbC5hZXJvIiwiY291bmNpbC5hZXJvIiwiY3Jldy5hZXJvIiwiZGVzaWduLmFlcm8iLCJkZ2NhLmFlcm8iLCJlZHVjYXRvci5hZXJvIiwiZW1lcmdlbmN5LmFlcm8iLCJlbmdpbmUuYWVybyIsImVu''@;'; put 'put ''Z2luZWVyLmFlcm8iLCJlbnRlcnRhaW5tZW50LmFlcm8iLCJlcXVpcG1lbnQuYWVybyIsImV4Y2hhbmdlLmFlcm8iLCJleHByZXNzLmFlcm8iLCJmZWRlcmF0aW9uLmFlcm8iLCJmbGlnaHQuYWVybyIsImZyZWlnaHQuYWVybyIsImZ1ZWwuYWVybyIsImdsaWRpbmcuYWVybyIsImdvdmVybm1l''@;'; put 'put ''bnQuYWVybyIsImdyb3VuZGhhbmRsaW5nLmFlcm8iLCJncm91cC5hZXJvIiwiaGFuZ2dsaWRpbmcuYWVybyIsImhvbWVidWlsdC5hZXJvIiwiaW5zdXJhbmNlLmFlcm8iLCJqb3VybmFsLmFlcm8iLCJqb3VybmFsaXN0LmFlcm8iLCJsZWFzaW5nLmFlcm8iLCJsb2dpc3RpY3MuYWVybyIsIm1h''@;'; put 'put ''Z2F6aW5lLmFlcm8iLCJtYWludGVuYW5jZS5hZXJvIiwibWVkaWEuYWVybyIsIm1pY3JvbGlnaHQuYWVybyIsIm1vZGVsbGluZy5hZXJvIiwibmF2aWdhdGlvbi5hZXJvIiwicGFyYWNodXRpbmcuYWVybyIsInBhcmFnbGlkaW5nLmFlcm8iLCJwYXNzZW5nZXItYXNzb2NpYXRpb24uYWVybyIs''@;'; put 'put ''InBpbG90LmFlcm8iLCJwcmVzcy5hZXJvIiwicHJvZHVjdGlvbi5hZXJvIiwicmVjcmVhdGlvbi5hZXJvIiwicmVwYm9keS5hZXJvIiwicmVzLmFlcm8iLCJyZXNlYXJjaC5hZXJvIiwicm90b3JjcmFmdC5hZXJvIiwic2FmZXR5LmFlcm8iLCJzY2llbnRpc3QuYWVybyIsInNlcnZpY2VzLmFl''@;'; put 'put ''cm8iLCJzaG93LmFlcm8iLCJza3lkaXZpbmcuYWVybyIsInNvZnR3YXJlLmFlcm8iLCJzdHVkZW50LmFlcm8iLCJ0cmFkZXIuYWVybyIsInRyYWRpbmcuYWVybyIsInRyYWluZXIuYWVybyIsInVuaW9uLmFlcm8iLCJ3b3JraW5nZ3JvdXAuYWVybyIsIndvcmtzLmFlcm8iLCJhZiIsImdvdi5h''@;'; put 'put ''ZiIsImNvbS5hZiIsIm9yZy5hZiIsIm5ldC5hZiIsImVkdS5hZiIsImFnIiwiY29tLmFnIiwib3JnLmFnIiwibmV0LmFnIiwiY28uYWciLCJub20uYWciLCJhaSIsIm9mZi5haSIsImNvbS5haSIsIm5ldC5haSIsIm9yZy5haSIsImFsIiwiY29tLmFsIiwiZWR1LmFsIiwiZ292LmFsIiwibWls''@;'; put 'put ''LmFsIiwibmV0LmFsIiwib3JnLmFsIiwiYW0iLCJjby5hbSIsImNvbS5hbSIsImNvbW11bmUuYW0iLCJuZXQuYW0iLCJvcmcuYW0iLCJhbyIsImVkLmFvIiwiZ3YuYW8iLCJvZy5hbyIsImNvLmFvIiwicGIuYW8iLCJpdC5hbyIsImFxIiwiYXIiLCJjb20uYXIiLCJlZHUuYXIiLCJnb2IuYXIi''@;'; put 'put ''LCJnb3YuYXIiLCJpbnQuYXIiLCJtaWwuYXIiLCJtdXNpY2EuYXIiLCJuZXQuYXIiLCJvcmcuYXIiLCJ0dXIuYXIiLCJhcnBhIiwiZTE2NC5hcnBhIiwiaW4tYWRkci5hcnBhIiwiaXA2LmFycGEiLCJpcmlzLmFycGEiLCJ1cmkuYXJwYSIsInVybi5hcnBhIiwiYXMiLCJnb3YuYXMiLCJhc2lh''@;'; put 'put ''IiwiYXQiLCJhYy5hdCIsImNvLmF0IiwiZ3YuYXQiLCJvci5hdCIsImF1IiwiY29tLmF1IiwibmV0LmF1Iiwib3JnLmF1IiwiZWR1LmF1IiwiZ292LmF1IiwiYXNuLmF1IiwiaWQuYXUiLCJpbmZvLmF1IiwiY29uZi5hdSIsIm96LmF1IiwiYWN0LmF1IiwibnN3LmF1IiwibnQuYXUiLCJxbGQu''@;'; put 'put ''YXUiLCJzYS5hdSIsInRhcy5hdSIsInZpYy5hdSIsIndhLmF1IiwiYWN0LmVkdS5hdSIsImNhdGhvbGljLmVkdS5hdSIsIm5zdy5lZHUuYXUiLCJudC5lZHUuYXUiLCJxbGQuZWR1LmF1Iiwic2EuZWR1LmF1IiwidGFzLmVkdS5hdSIsInZpYy5lZHUuYXUiLCJ3YS5lZHUuYXUiLCJxbGQuZ292''@;'; put 'put ''LmF1Iiwic2EuZ292LmF1IiwidGFzLmdvdi5hdSIsInZpYy5nb3YuYXUiLCJ3YS5nb3YuYXUiLCJlZHVjYXRpb24udGFzLmVkdS5hdSIsInNjaG9vbHMubnN3LmVkdS5hdSIsImF3IiwiY29tLmF3IiwiYXgiLCJheiIsImNvbS5heiIsIm5ldC5heiIsImludC5heiIsImdvdi5heiIsIm9yZy5h''@;'; put 'put ''eiIsImVkdS5heiIsImluZm8uYXoiLCJwcC5heiIsIm1pbC5heiIsIm5hbWUuYXoiLCJwcm8uYXoiLCJiaXouYXoiLCJiYSIsImNvbS5iYSIsImVkdS5iYSIsImdvdi5iYSIsIm1pbC5iYSIsIm5ldC5iYSIsIm9yZy5iYSIsImJiIiwiYml6LmJiIiwiY28uYmIiLCJjb20uYmIiLCJlZHUuYmIi''@;'; put 'put ''LCJnb3YuYmIiLCJpbmZvLmJiIiwibmV0LmJiIiwib3JnLmJiIiwic3RvcmUuYmIiLCJ0di5iYiIsIiouYmQiLCJiZSIsImFjLmJlIiwiYmYiLCJnb3YuYmYiLCJiZyIsImEuYmciLCJiLmJnIiwiYy5iZyIsImQuYmciLCJlLmJnIiwiZi5iZyIsImcuYmciLCJoLmJnIiwiaS5iZyIsImouYmci''@;'; put 'put ''LCJrLmJnIiwibC5iZyIsIm0uYmciLCJuLmJnIiwiby5iZyIsInAuYmciLCJxLmJnIiwici5iZyIsInMuYmciLCJ0LmJnIiwidS5iZyIsInYuYmciLCJ3LmJnIiwieC5iZyIsInkuYmciLCJ6LmJnIiwiMC5iZyIsIjEuYmciLCIyLmJnIiwiMy5iZyIsIjQuYmciLCI1LmJnIiwiNi5iZyIsIjcu''@;'; put 'put ''YmciLCI4LmJnIiwiOS5iZyIsImJoIiwiY29tLmJoIiwiZWR1LmJoIiwibmV0LmJoIiwib3JnLmJoIiwiZ292LmJoIiwiYmkiLCJjby5iaSIsImNvbS5iaSIsImVkdS5iaSIsIm9yLmJpIiwib3JnLmJpIiwiYml6IiwiYmoiLCJhc3NvLmJqIiwiYmFycmVhdS5iaiIsImdvdXYuYmoiLCJibSIs''@;'; put 'put ''ImNvbS5ibSIsImVkdS5ibSIsImdvdi5ibSIsIm5ldC5ibSIsIm9yZy5ibSIsImJuIiwiY29tLmJuIiwiZWR1LmJuIiwiZ292LmJuIiwibmV0LmJuIiwib3JnLmJuIiwiYm8iLCJjb20uYm8iLCJlZHUuYm8iLCJnb2IuYm8iLCJpbnQuYm8iLCJvcmcuYm8iLCJuZXQuYm8iLCJtaWwuYm8iLCJ0''@;'; put 'put ''di5ibyIsIndlYi5ibyIsImFjYWRlbWlhLmJvIiwiYWdyby5ibyIsImFydGUuYm8iLCJibG9nLmJvIiwiYm9saXZpYS5ibyIsImNpZW5jaWEuYm8iLCJjb29wZXJhdGl2YS5ibyIsImRlbW9jcmFjaWEuYm8iLCJkZXBvcnRlLmJvIiwiZWNvbG9naWEuYm8iLCJlY29ub21pYS5ibyIsImVtcHJl''@;'; put 'put ''c2EuYm8iLCJpbmRpZ2VuYS5ibyIsImluZHVzdHJpYS5ibyIsImluZm8uYm8iLCJtZWRpY2luYS5ibyIsIm1vdmltaWVudG8uYm8iLCJtdXNpY2EuYm8iLCJuYXR1cmFsLmJvIiwibm9tYnJlLmJvIiwibm90aWNpYXMuYm8iLCJwYXRyaWEuYm8iLCJwb2xpdGljYS5ibyIsInByb2Zlc2lvbmFs''@;'; put 'put ''LmJvIiwicGx1cmluYWNpb25hbC5ibyIsInB1ZWJsby5ibyIsInJldmlzdGEuYm8iLCJzYWx1ZC5ibyIsInRlY25vbG9naWEuYm8iLCJ0a3NhdC5ibyIsInRyYW5zcG9ydGUuYm8iLCJ3aWtpLmJvIiwiYnIiLCI5Z3VhY3UuYnIiLCJhYmMuYnIiLCJhZG0uYnIiLCJhZHYuYnIiLCJhZ3IuYnIi''@;'; put 'put ''LCJhanUuYnIiLCJhbS5iciIsImFuYW5pLmJyIiwiYXBhcmVjaWRhLmJyIiwiYXJxLmJyIiwiYXJ0LmJyIiwiYXRvLmJyIiwiYi5iciIsImJhcnVlcmkuYnIiLCJiZWxlbS5iciIsImJoei5iciIsImJpby5iciIsImJsb2cuYnIiLCJibWQuYnIiLCJib2F2aXN0YS5iciIsImJzYi5iciIsImNh''@;'; put 'put ''bXBpbmFncmFuZGUuYnIiLCJjYW1waW5hcy5iciIsImNheGlhcy5iciIsImNpbS5iciIsImNuZy5iciIsImNudC5iciIsImNvbS5iciIsImNvbnRhZ2VtLmJyIiwiY29vcC5iciIsImNyaS5iciIsImN1aWFiYS5iciIsImN1cml0aWJhLmJyIiwiZGVmLmJyIiwiZWNuLmJyIiwiZWNvLmJyIiwi''@;'; put 'put ''ZWR1LmJyIiwiZW1wLmJyIiwiZW5nLmJyIiwiZXNwLmJyIiwiZXRjLmJyIiwiZXRpLmJyIiwiZmFyLmJyIiwiZmVpcmEuYnIiLCJmbG9nLmJyIiwiZmxvcmlwYS5iciIsImZtLmJyIiwiZm5kLmJyIiwiZm9ydGFsLmJyIiwiZm90LmJyIiwiZm96LmJyIiwiZnN0LmJyIiwiZzEyLmJyIiwiZ2dm''@;'; put 'put ''LmJyIiwiZ29pYW5pYS5iciIsImdvdi5iciIsImFjLmdvdi5iciIsImFsLmdvdi5iciIsImFtLmdvdi5iciIsImFwLmdvdi5iciIsImJhLmdvdi5iciIsImNlLmdvdi5iciIsImRmLmdvdi5iciIsImVzLmdvdi5iciIsImdvLmdvdi5iciIsIm1hLmdvdi5iciIsIm1nLmdvdi5iciIsIm1zLmdv''@;'; put 'put ''di5iciIsIm10Lmdvdi5iciIsInBhLmdvdi5iciIsInBiLmdvdi5iciIsInBlLmdvdi5iciIsInBpLmdvdi5iciIsInByLmdvdi5iciIsInJqLmdvdi5iciIsInJuLmdvdi5iciIsInJvLmdvdi5iciIsInJyLmdvdi5iciIsInJzLmdvdi5iciIsInNjLmdvdi5iciIsInNlLmdvdi5iciIsInNw''@;'; put 'put ''Lmdvdi5iciIsInRvLmdvdi5iciIsImdydS5iciIsImltYi5iciIsImluZC5iciIsImluZi5iciIsImphYi5iciIsImphbXBhLmJyIiwiamRmLmJyIiwiam9pbnZpbGxlLmJyIiwiam9yLmJyIiwianVzLmJyIiwibGVnLmJyIiwibGVsLmJyIiwibG9uZHJpbmEuYnIiLCJtYWNhcGEuYnIiLCJt''@;'; put 'put ''YWNlaW8uYnIiLCJtYW5hdXMuYnIiLCJtYXJpbmdhLmJyIiwibWF0LmJyIiwibWVkLmJyIiwibWlsLmJyIiwibW9yZW5hLmJyIiwibXAuYnIiLCJtdXMuYnIiLCJuYXRhbC5iciIsIm5ldC5iciIsIm5pdGVyb2kuYnIiLCIqLm5vbS5iciIsIm5vdC5iciIsIm50ci5iciIsIm9kby5iciIsIm9u''@;'; put 'put ''Zy5iciIsIm9yZy5iciIsIm9zYXNjby5iciIsInBhbG1hcy5iciIsInBvYS5iciIsInBwZy5iciIsInByby5iciIsInBzYy5iciIsInBzaS5iciIsInB2aC5iciIsInFzbC5iciIsInJhZGlvLmJyIiwicmVjLmJyIiwicmVjaWZlLmJyIiwicmliZWlyYW8uYnIiLCJyaW8uYnIiLCJyaW9icmFu''@;'; put 'put ''Y28uYnIiLCJyaW9wcmV0by5iciIsInNhbHZhZG9yLmJyIiwic2FtcGEuYnIiLCJzYW50YW1hcmlhLmJyIiwic2FudG9hbmRyZS5iciIsInNhb2Jlcm5hcmRvLmJyIiwic2FvZ29uY2EuYnIiLCJzamMuYnIiLCJzbGcuYnIiLCJzbHouYnIiLCJzb3JvY2FiYS5iciIsInNydi5iciIsInRheGku''@;'; put 'put ''YnIiLCJ0Yy5iciIsInRlby5iciIsInRoZS5iciIsInRtcC5iciIsInRyZC5iciIsInR1ci5iciIsInR2LmJyIiwidWRpLmJyIiwidmV0LmJyIiwidml4LmJyIiwidmxvZy5iciIsIndpa2kuYnIiLCJ6bGcuYnIiLCJicyIsImNvbS5icyIsIm5ldC5icyIsIm9yZy5icyIsImVkdS5icyIsImdv''@;'; put 'put ''di5icyIsImJ0IiwiY29tLmJ0IiwiZWR1LmJ0IiwiZ292LmJ0IiwibmV0LmJ0Iiwib3JnLmJ0IiwiYnYiLCJidyIsImNvLmJ3Iiwib3JnLmJ3IiwiYnkiLCJnb3YuYnkiLCJtaWwuYnkiLCJjb20uYnkiLCJvZi5ieSIsImJ6IiwiY29tLmJ6IiwibmV0LmJ6Iiwib3JnLmJ6IiwiZWR1LmJ6Iiwi''@;'; put 'put ''Z292LmJ6IiwiY2EiLCJhYi5jYSIsImJjLmNhIiwibWIuY2EiLCJuYi5jYSIsIm5mLmNhIiwibmwuY2EiLCJucy5jYSIsIm50LmNhIiwibnUuY2EiLCJvbi5jYSIsInBlLmNhIiwicWMuY2EiLCJzay5jYSIsInlrLmNhIiwiZ2MuY2EiLCJjYXQiLCJjYyIsImNkIiwiZ292LmNkIiwiY2YiLCJj''@;'; put 'put ''ZyIsImNoIiwiY2kiLCJvcmcuY2kiLCJvci5jaSIsImNvbS5jaSIsImNvLmNpIiwiZWR1LmNpIiwiZWQuY2kiLCJhYy5jaSIsIm5ldC5jaSIsImdvLmNpIiwiYXNzby5jaSIsImFceGU5cm9wb3J0LmNpIiwiaW50LmNpIiwicHJlc3NlLmNpIiwibWQuY2kiLCJnb3V2LmNpIiwiKi5jayIsIiF3''@;'; put 'put ''d3cuY2siLCJjbCIsImFwcmVuZGVtYXMuY2wiLCJjby5jbCIsImdvYi5jbCIsImdvdi5jbCIsIm1pbC5jbCIsImNtIiwiY28uY20iLCJjb20uY20iLCJnb3YuY20iLCJuZXQuY20iLCJjbiIsImFjLmNuIiwiY29tLmNuIiwiZWR1LmNuIiwiZ292LmNuIiwibmV0LmNuIiwib3JnLmNuIiwibWls''@;'; put 'put ''LmNuIiwiXHU1MTZjXHU1M2Y4LmNuIiwiXHU3ZjUxXHU3ZWRjLmNuIiwiXHU3ZGIyXHU3ZDYxLmNuIiwiYWguY24iLCJiai5jbiIsImNxLmNuIiwiZmouY24iLCJnZC5jbiIsImdzLmNuIiwiZ3ouY24iLCJneC5jbiIsImhhLmNuIiwiaGIuY24iLCJoZS5jbiIsImhpLmNuIiwiaGwuY24iLCJo''@;'; put 'put ''bi5jbiIsImpsLmNuIiwianMuY24iLCJqeC5jbiIsImxuLmNuIiwibm0uY24iLCJueC5jbiIsInFoLmNuIiwic2MuY24iLCJzZC5jbiIsInNoLmNuIiwic24uY24iLCJzeC5jbiIsInRqLmNuIiwieGouY24iLCJ4ei5jbiIsInluLmNuIiwiemouY24iLCJoay5jbiIsIm1vLmNuIiwidHcuY24i''@;'; put 'put ''LCJjbyIsImFydHMuY28iLCJjb20uY28iLCJlZHUuY28iLCJmaXJtLmNvIiwiZ292LmNvIiwiaW5mby5jbyIsImludC5jbyIsIm1pbC5jbyIsIm5ldC5jbyIsIm5vbS5jbyIsIm9yZy5jbyIsInJlYy5jbyIsIndlYi5jbyIsImNvbSIsImNvb3AiLCJjciIsImFjLmNyIiwiY28uY3IiLCJlZC5j''@;'; put 'put ''ciIsImZpLmNyIiwiZ28uY3IiLCJvci5jciIsInNhLmNyIiwiY3UiLCJjb20uY3UiLCJlZHUuY3UiLCJvcmcuY3UiLCJuZXQuY3UiLCJnb3YuY3UiLCJpbmYuY3UiLCJjdiIsImN3IiwiY29tLmN3IiwiZWR1LmN3IiwibmV0LmN3Iiwib3JnLmN3IiwiY3giLCJnb3YuY3giLCJjeSIsImFjLmN5''@;'; put 'put ''IiwiYml6LmN5IiwiY29tLmN5IiwiZWtsb2dlcy5jeSIsImdvdi5jeSIsImx0ZC5jeSIsIm5hbWUuY3kiLCJuZXQuY3kiLCJvcmcuY3kiLCJwYXJsaWFtZW50LmN5IiwicHJlc3MuY3kiLCJwcm8uY3kiLCJ0bS5jeSIsImN6IiwiZGUiLCJkaiIsImRrIiwiZG0iLCJjb20uZG0iLCJuZXQuZG0i''@;'; put 'put ''LCJvcmcuZG0iLCJlZHUuZG0iLCJnb3YuZG0iLCJkbyIsImFydC5kbyIsImNvbS5kbyIsImVkdS5kbyIsImdvYi5kbyIsImdvdi5kbyIsIm1pbC5kbyIsIm5ldC5kbyIsIm9yZy5kbyIsInNsZC5kbyIsIndlYi5kbyIsImR6IiwiY29tLmR6Iiwib3JnLmR6IiwibmV0LmR6IiwiZ292LmR6Iiwi''@;'; put 'put ''ZWR1LmR6IiwiYXNzby5keiIsInBvbC5keiIsImFydC5keiIsImVjIiwiY29tLmVjIiwiaW5mby5lYyIsIm5ldC5lYyIsImZpbi5lYyIsImsxMi5lYyIsIm1lZC5lYyIsInByby5lYyIsIm9yZy5lYyIsImVkdS5lYyIsImdvdi5lYyIsImdvYi5lYyIsIm1pbC5lYyIsImVkdSIsImVlIiwiZWR1''@;'; put 'put ''LmVlIiwiZ292LmVlIiwicmlpay5lZSIsImxpYi5lZSIsIm1lZC5lZSIsImNvbS5lZSIsInByaS5lZSIsImFpcC5lZSIsIm9yZy5lZSIsImZpZS5lZSIsImVnIiwiY29tLmVnIiwiZWR1LmVnIiwiZXVuLmVnIiwiZ292LmVnIiwibWlsLmVnIiwibmFtZS5lZyIsIm5ldC5lZyIsIm9yZy5lZyIs''@;'; put 'put ''InNjaS5lZyIsIiouZXIiLCJlcyIsImNvbS5lcyIsIm5vbS5lcyIsIm9yZy5lcyIsImdvYi5lcyIsImVkdS5lcyIsImV0IiwiY29tLmV0IiwiZ292LmV0Iiwib3JnLmV0IiwiZWR1LmV0IiwiYml6LmV0IiwibmFtZS5ldCIsImluZm8uZXQiLCJuZXQuZXQiLCJldSIsImZpIiwiYWxhbmQuZmki''@;'; put 'put ''LCJmaiIsImFjLmZqIiwiYml6LmZqIiwiY29tLmZqIiwiZ292LmZqIiwiaW5mby5maiIsIm1pbC5maiIsIm5hbWUuZmoiLCJuZXQuZmoiLCJvcmcuZmoiLCJwcm8uZmoiLCIqLmZrIiwiZm0iLCJmbyIsImZyIiwiYXNzby5mciIsImNvbS5mciIsImdvdXYuZnIiLCJub20uZnIiLCJwcmQuZnIi''@;'; put 'put ''LCJ0bS5mciIsImFlcm9wb3J0LmZyIiwiYXZvY2F0LmZyIiwiYXZvdWVzLmZyIiwiY2NpLmZyIiwiY2hhbWJhZ3JpLmZyIiwiY2hpcnVyZ2llbnMtZGVudGlzdGVzLmZyIiwiZXhwZXJ0cy1jb21wdGFibGVzLmZyIiwiZ2VvbWV0cmUtZXhwZXJ0LmZyIiwiZ3JldGEuZnIiLCJodWlzc2llci1q''@;'; put 'put ''dXN0aWNlLmZyIiwibWVkZWNpbi5mciIsIm5vdGFpcmVzLmZyIiwicGhhcm1hY2llbi5mciIsInBvcnQuZnIiLCJ2ZXRlcmluYWlyZS5mciIsImdhIiwiZ2IiLCJnZCIsImdlIiwiY29tLmdlIiwiZWR1LmdlIiwiZ292LmdlIiwib3JnLmdlIiwibWlsLmdlIiwibmV0LmdlIiwicHZ0LmdlIiwi''@;'; put 'put ''Z2YiLCJnZyIsImNvLmdnIiwibmV0LmdnIiwib3JnLmdnIiwiZ2giLCJjb20uZ2giLCJlZHUuZ2giLCJnb3YuZ2giLCJvcmcuZ2giLCJtaWwuZ2giLCJnaSIsImNvbS5naSIsImx0ZC5naSIsImdvdi5naSIsIm1vZC5naSIsImVkdS5naSIsIm9yZy5naSIsImdsIiwiY28uZ2wiLCJjb20uZ2wi''@;'; put 'put ''LCJlZHUuZ2wiLCJuZXQuZ2wiLCJvcmcuZ2wiLCJnbSIsImduIiwiYWMuZ24iLCJjb20uZ24iLCJlZHUuZ24iLCJnb3YuZ24iLCJvcmcuZ24iLCJuZXQuZ24iLCJnb3YiLCJncCIsImNvbS5ncCIsIm5ldC5ncCIsIm1vYmkuZ3AiLCJlZHUuZ3AiLCJvcmcuZ3AiLCJhc3NvLmdwIiwiZ3EiLCJn''@;'; put 'put ''ciIsImNvbS5nciIsImVkdS5nciIsIm5ldC5nciIsIm9yZy5nciIsImdvdi5nciIsImdzIiwiZ3QiLCJjb20uZ3QiLCJlZHUuZ3QiLCJnb2IuZ3QiLCJpbmQuZ3QiLCJtaWwuZ3QiLCJuZXQuZ3QiLCJvcmcuZ3QiLCJndSIsImNvbS5ndSIsImVkdS5ndSIsImdvdi5ndSIsImd1YW0uZ3UiLCJp''@;'; put 'put ''bmZvLmd1IiwibmV0Lmd1Iiwib3JnLmd1Iiwid2ViLmd1IiwiZ3ciLCJneSIsImNvLmd5IiwiY29tLmd5IiwiZWR1Lmd5IiwiZ292Lmd5IiwibmV0Lmd5Iiwib3JnLmd5IiwiaGsiLCJjb20uaGsiLCJlZHUuaGsiLCJnb3YuaGsiLCJpZHYuaGsiLCJuZXQuaGsiLCJvcmcuaGsiLCJcdTUxNmNc''@;'; put 'put ''dTUzZjguaGsiLCJcdTY1NTlcdTgwYjIuaGsiLCJcdTY1NGVcdTgwYjIuaGsiLCJcdTY1M2ZcdTVlOWMuaGsiLCJcdTUwMGJcdTRlYmEuaGsiLCJcdTRlMmFcdTRlYmEuaGsiLCJcdTdiODdcdTRlYmEuaGsiLCJcdTdkYjJcdTdlZGMuaGsiLCJcdTdmNTFcdTdlZGMuaGsiLCJcdTdlYzRcdTdl''@;'; put 'put ''NTQuaGsiLCJcdTdkYjJcdTdkNjEuaGsiLCJcdTdmNTFcdTdkNjEuaGsiLCJcdTdlYzRcdTdlYzcuaGsiLCJcdTdkNDRcdTdlNTQuaGsiLCJcdTdkNDRcdTdlYzcuaGsiLCJobSIsImhuIiwiY29tLmhuIiwiZWR1LmhuIiwib3JnLmhuIiwibmV0LmhuIiwibWlsLmhuIiwiZ29iLmhuIiwiaHIi''@;'; put 'put ''LCJpei5ociIsImZyb20uaHIiLCJuYW1lLmhyIiwiY29tLmhyIiwiaHQiLCJjb20uaHQiLCJzaG9wLmh0IiwiZmlybS5odCIsImluZm8uaHQiLCJhZHVsdC5odCIsIm5ldC5odCIsInByby5odCIsIm9yZy5odCIsIm1lZC5odCIsImFydC5odCIsImNvb3AuaHQiLCJwb2wuaHQiLCJhc3NvLmh0''@;'; put 'put ''IiwiZWR1Lmh0IiwicmVsLmh0IiwiZ291di5odCIsInBlcnNvLmh0IiwiaHUiLCJjby5odSIsImluZm8uaHUiLCJvcmcuaHUiLCJwcml2Lmh1Iiwic3BvcnQuaHUiLCJ0bS5odSIsIjIwMDAuaHUiLCJhZ3Jhci5odSIsImJvbHQuaHUiLCJjYXNpbm8uaHUiLCJjaXR5Lmh1IiwiZXJvdGljYS5o''@;'; put 'put ''dSIsImVyb3Rpa2EuaHUiLCJmaWxtLmh1IiwiZm9ydW0uaHUiLCJnYW1lcy5odSIsImhvdGVsLmh1IiwiaW5nYXRsYW4uaHUiLCJqb2dhc3ouaHUiLCJrb255dmVsby5odSIsImxha2FzLmh1IiwibWVkaWEuaHUiLCJuZXdzLmh1IiwicmVrbGFtLmh1Iiwic2V4Lmh1Iiwic2hvcC5odSIsInN1''@;'; put 'put ''bGkuaHUiLCJzemV4Lmh1IiwidG96c2RlLmh1IiwidXRhemFzLmh1IiwidmlkZW8uaHUiLCJpZCIsImFjLmlkIiwiYml6LmlkIiwiY28uaWQiLCJkZXNhLmlkIiwiZ28uaWQiLCJtaWwuaWQiLCJteS5pZCIsIm5ldC5pZCIsIm9yLmlkIiwicG9ucGVzLmlkIiwic2NoLmlkIiwid2ViLmlkIiwi''@;'; put 'put ''aWUiLCJnb3YuaWUiLCJpbCIsImFjLmlsIiwiY28uaWwiLCJnb3YuaWwiLCJpZGYuaWwiLCJrMTIuaWwiLCJtdW5pLmlsIiwibmV0LmlsIiwib3JnLmlsIiwiaW0iLCJhYy5pbSIsImNvLmltIiwiY29tLmltIiwibHRkLmNvLmltIiwibmV0LmltIiwib3JnLmltIiwicGxjLmNvLmltIiwidHQu''@;'; put 'put ''aW0iLCJ0di5pbSIsImluIiwiY28uaW4iLCJmaXJtLmluIiwibmV0LmluIiwib3JnLmluIiwiZ2VuLmluIiwiaW5kLmluIiwibmljLmluIiwiYWMuaW4iLCJlZHUuaW4iLCJyZXMuaW4iLCJnb3YuaW4iLCJtaWwuaW4iLCJpbmZvIiwiaW50IiwiZXUuaW50IiwiaW8iLCJjb20uaW8iLCJpcSIs''@;'; put 'put ''Imdvdi5pcSIsImVkdS5pcSIsIm1pbC5pcSIsImNvbS5pcSIsIm9yZy5pcSIsIm5ldC5pcSIsImlyIiwiYWMuaXIiLCJjby5pciIsImdvdi5pciIsImlkLmlyIiwibmV0LmlyIiwib3JnLmlyIiwic2NoLmlyIiwiXHUwNjI3XHUwNmNjXHUwNjMxXHUwNjI3XHUwNjQ2LmlyIiwiXHUwNjI3XHUw''@;'; put 'put ''NjRhXHUwNjMxXHUwNjI3XHUwNjQ2LmlyIiwiaXMiLCJuZXQuaXMiLCJjb20uaXMiLCJlZHUuaXMiLCJnb3YuaXMiLCJvcmcuaXMiLCJpbnQuaXMiLCJpdCIsImdvdi5pdCIsImVkdS5pdCIsImFici5pdCIsImFicnV6em8uaXQiLCJhb3N0YS12YWxsZXkuaXQiLCJhb3N0YXZhbGxleS5pdCIs''@;'; put 'put ''ImJhcy5pdCIsImJhc2lsaWNhdGEuaXQiLCJjYWwuaXQiLCJjYWxhYnJpYS5pdCIsImNhbS5pdCIsImNhbXBhbmlhLml0IiwiZW1pbGlhLXJvbWFnbmEuaXQiLCJlbWlsaWFyb21hZ25hLml0IiwiZW1yLml0IiwiZnJpdWxpLXYtZ2l1bGlhLml0IiwiZnJpdWxpLXZlLWdpdWxpYS5pdCIsImZy''@;'; put 'put ''aXVsaS12ZWdpdWxpYS5pdCIsImZyaXVsaS12ZW5lemlhLWdpdWxpYS5pdCIsImZyaXVsaS12ZW5lemlhZ2l1bGlhLml0IiwiZnJpdWxpLXZnaXVsaWEuaXQiLCJmcml1bGl2LWdpdWxpYS5pdCIsImZyaXVsaXZlLWdpdWxpYS5pdCIsImZyaXVsaXZlZ2l1bGlhLml0IiwiZnJpdWxpdmVuZXpp''@;'; put 'put ''YS1naXVsaWEuaXQiLCJmcml1bGl2ZW5lemlhZ2l1bGlhLml0IiwiZnJpdWxpdmdpdWxpYS5pdCIsImZ2Zy5pdCIsImxhei5pdCIsImxhemlvLml0IiwibGlnLml0IiwibGlndXJpYS5pdCIsImxvbS5pdCIsImxvbWJhcmRpYS5pdCIsImxvbWJhcmR5Lml0IiwibHVjYW5pYS5pdCIsIm1hci5p''@;'; put 'put ''dCIsIm1hcmNoZS5pdCIsIm1vbC5pdCIsIm1vbGlzZS5pdCIsInBpZWRtb250Lml0IiwicGllbW9udGUuaXQiLCJwbW4uaXQiLCJwdWcuaXQiLCJwdWdsaWEuaXQiLCJzYXIuaXQiLCJzYXJkZWduYS5pdCIsInNhcmRpbmlhLml0Iiwic2ljLml0Iiwic2ljaWxpYS5pdCIsInNpY2lseS5pdCIs''@;'; put 'put ''InRhYS5pdCIsInRvcy5pdCIsInRvc2NhbmEuaXQiLCJ0cmVudGluLXN1ZC10aXJvbC5pdCIsInRyZW50aW4tc1x4ZmNkLXRpcm9sLml0IiwidHJlbnRpbi1zdWR0aXJvbC5pdCIsInRyZW50aW4tc1x4ZmNkdGlyb2wuaXQiLCJ0cmVudGluLXN1ZWQtdGlyb2wuaXQiLCJ0cmVudGluLXN1ZWR0''@;'; put 'put ''aXJvbC5pdCIsInRyZW50aW5vLWEtYWRpZ2UuaXQiLCJ0cmVudGluby1hYWRpZ2UuaXQiLCJ0cmVudGluby1hbHRvLWFkaWdlLml0IiwidHJlbnRpbm8tYWx0b2FkaWdlLml0IiwidHJlbnRpbm8tcy10aXJvbC5pdCIsInRyZW50aW5vLXN0aXJvbC5pdCIsInRyZW50aW5vLXN1ZC10aXJvbC5p''@;'; put 'put ''dCIsInRyZW50aW5vLXNceGZjZC10aXJvbC5pdCIsInRyZW50aW5vLXN1ZHRpcm9sLml0IiwidHJlbnRpbm8tc1x4ZmNkdGlyb2wuaXQiLCJ0cmVudGluby1zdWVkLXRpcm9sLml0IiwidHJlbnRpbm8tc3VlZHRpcm9sLml0IiwidHJlbnRpbm8uaXQiLCJ0cmVudGlub2EtYWRpZ2UuaXQiLCJ0''@;'; put 'put ''cmVudGlub2FhZGlnZS5pdCIsInRyZW50aW5vYWx0by1hZGlnZS5pdCIsInRyZW50aW5vYWx0b2FkaWdlLml0IiwidHJlbnRpbm9zLXRpcm9sLml0IiwidHJlbnRpbm9zdGlyb2wuaXQiLCJ0cmVudGlub3N1ZC10aXJvbC5pdCIsInRyZW50aW5vc1x4ZmNkLXRpcm9sLml0IiwidHJlbnRpbm9z''@;'; put 'put ''dWR0aXJvbC5pdCIsInRyZW50aW5vc1x4ZmNkdGlyb2wuaXQiLCJ0cmVudGlub3N1ZWQtdGlyb2wuaXQiLCJ0cmVudGlub3N1ZWR0aXJvbC5pdCIsInRyZW50aW5zdWQtdGlyb2wuaXQiLCJ0cmVudGluc1x4ZmNkLXRpcm9sLml0IiwidHJlbnRpbnN1ZHRpcm9sLml0IiwidHJlbnRpbnNceGZj''@;'; put 'put ''ZHRpcm9sLml0IiwidHJlbnRpbnN1ZWQtdGlyb2wuaXQiLCJ0cmVudGluc3VlZHRpcm9sLml0IiwidHVzY2FueS5pdCIsInVtYi5pdCIsInVtYnJpYS5pdCIsInZhbC1kLWFvc3RhLml0IiwidmFsLWRhb3N0YS5pdCIsInZhbGQtYW9zdGEuaXQiLCJ2YWxkYW9zdGEuaXQiLCJ2YWxsZS1hb3N0''@;'; put 'put ''YS5pdCIsInZhbGxlLWQtYW9zdGEuaXQiLCJ2YWxsZS1kYW9zdGEuaXQiLCJ2YWxsZWFvc3RhLml0IiwidmFsbGVkLWFvc3RhLml0IiwidmFsbGVkYW9zdGEuaXQiLCJ2YWxsZWUtYW9zdGUuaXQiLCJ2YWxsXHhlOWUtYW9zdGUuaXQiLCJ2YWxsZWUtZC1hb3N0ZS5pdCIsInZhbGxceGU5ZS1k''@;'; put 'put ''LWFvc3RlLml0IiwidmFsbGVlYW9zdGUuaXQiLCJ2YWxsXHhlOWVhb3N0ZS5pdCIsInZhbGxlZWRhb3N0ZS5pdCIsInZhbGxceGU5ZWRhb3N0ZS5pdCIsInZhby5pdCIsInZkYS5pdCIsInZlbi5pdCIsInZlbmV0by5pdCIsImFnLml0IiwiYWdyaWdlbnRvLml0IiwiYWwuaXQiLCJhbGVzc2Fu''@;'; put 'put ''ZHJpYS5pdCIsImFsdG8tYWRpZ2UuaXQiLCJhbHRvYWRpZ2UuaXQiLCJhbi5pdCIsImFuY29uYS5pdCIsImFuZHJpYS1iYXJsZXR0YS10cmFuaS5pdCIsImFuZHJpYS10cmFuaS1iYXJsZXR0YS5pdCIsImFuZHJpYWJhcmxldHRhdHJhbmkuaXQiLCJhbmRyaWF0cmFuaWJhcmxldHRhLml0Iiwi''@;'; put 'put ''YW8uaXQiLCJhb3N0YS5pdCIsImFvc3RlLml0IiwiYXAuaXQiLCJhcS5pdCIsImFxdWlsYS5pdCIsImFyLml0IiwiYXJlenpvLml0IiwiYXNjb2xpLXBpY2Vuby5pdCIsImFzY29saXBpY2Vuby5pdCIsImFzdGkuaXQiLCJhdC5pdCIsImF2Lml0IiwiYXZlbGxpbm8uaXQiLCJiYS5pdCIsImJh''@;'; put 'put ''bHNhbi1zdWR0aXJvbC5pdCIsImJhbHNhbi1zXHhmY2R0aXJvbC5pdCIsImJhbHNhbi1zdWVkdGlyb2wuaXQiLCJiYWxzYW4uaXQiLCJiYXJpLml0IiwiYmFybGV0dGEtdHJhbmktYW5kcmlhLml0IiwiYmFybGV0dGF0cmFuaWFuZHJpYS5pdCIsImJlbGx1bm8uaXQiLCJiZW5ldmVudG8uaXQi''@;'; put 'put ''LCJiZXJnYW1vLml0IiwiYmcuaXQiLCJiaS5pdCIsImJpZWxsYS5pdCIsImJsLml0IiwiYm4uaXQiLCJiby5pdCIsImJvbG9nbmEuaXQiLCJib2x6YW5vLWFsdG9hZGlnZS5pdCIsImJvbHphbm8uaXQiLCJib3plbi1zdWR0aXJvbC5pdCIsImJvemVuLXNceGZjZHRpcm9sLml0IiwiYm96ZW4t''@;'; put 'put ''c3VlZHRpcm9sLml0IiwiYm96ZW4uaXQiLCJici5pdCIsImJyZXNjaWEuaXQiLCJicmluZGlzaS5pdCIsImJzLml0IiwiYnQuaXQiLCJidWxzYW4tc3VkdGlyb2wuaXQiLCJidWxzYW4tc1x4ZmNkdGlyb2wuaXQiLCJidWxzYW4tc3VlZHRpcm9sLml0IiwiYnVsc2FuLml0IiwiYnouaXQiLCJj''@;'; put 'put ''YS5pdCIsImNhZ2xpYXJpLml0IiwiY2FsdGFuaXNzZXR0YS5pdCIsImNhbXBpZGFuby1tZWRpby5pdCIsImNhbXBpZGFub21lZGlvLml0IiwiY2FtcG9iYXNzby5pdCIsImNhcmJvbmlhLWlnbGVzaWFzLml0IiwiY2FyYm9uaWFpZ2xlc2lhcy5pdCIsImNhcnJhcmEtbWFzc2EuaXQiLCJjYXJy''@;'; put 'put ''YXJhbWFzc2EuaXQiLCJjYXNlcnRhLml0IiwiY2F0YW5pYS5pdCIsImNhdGFuemFyby5pdCIsImNiLml0IiwiY2UuaXQiLCJjZXNlbmEtZm9ybGkuaXQiLCJjZXNlbmEtZm9ybFx4ZWMuaXQiLCJjZXNlbmFmb3JsaS5pdCIsImNlc2VuYWZvcmxceGVjLml0IiwiY2guaXQiLCJjaGlldGkuaXQi''@;'; put 'put ''LCJjaS5pdCIsImNsLml0IiwiY24uaXQiLCJjby5pdCIsImNvbW8uaXQiLCJjb3NlbnphLml0IiwiY3IuaXQiLCJjcmVtb25hLml0IiwiY3JvdG9uZS5pdCIsImNzLml0IiwiY3QuaXQiLCJjdW5lby5pdCIsImN6Lml0IiwiZGVsbC1vZ2xpYXN0cmEuaXQiLCJkZWxsb2dsaWFzdHJhLml0Iiwi''@;'; put 'put ''ZW4uaXQiLCJlbm5hLml0IiwiZmMuaXQiLCJmZS5pdCIsImZlcm1vLml0IiwiZmVycmFyYS5pdCIsImZnLml0IiwiZmkuaXQiLCJmaXJlbnplLml0IiwiZmxvcmVuY2UuaXQiLCJmbS5pdCIsImZvZ2dpYS5pdCIsImZvcmxpLWNlc2VuYS5pdCIsImZvcmxceGVjLWNlc2VuYS5pdCIsImZvcmxp''@;'; put 'put ''Y2VzZW5hLml0IiwiZm9ybFx4ZWNjZXNlbmEuaXQiLCJmci5pdCIsImZyb3Npbm9uZS5pdCIsImdlLml0IiwiZ2Vub2EuaXQiLCJnZW5vdmEuaXQiLCJnby5pdCIsImdvcml6aWEuaXQiLCJnci5pdCIsImdyb3NzZXRvLml0IiwiaWdsZXNpYXMtY2FyYm9uaWEuaXQiLCJpZ2xlc2lhc2NhcmJv''@;'; put 'put ''bmlhLml0IiwiaW0uaXQiLCJpbXBlcmlhLml0IiwiaXMuaXQiLCJpc2VybmlhLml0Iiwia3IuaXQiLCJsYS1zcGV6aWEuaXQiLCJsYXF1aWxhLml0IiwibGFzcGV6aWEuaXQiLCJsYXRpbmEuaXQiLCJsYy5pdCIsImxlLml0IiwibGVjY2UuaXQiLCJsZWNjby5pdCIsImxpLml0IiwibGl2b3Ju''@;'; put 'put ''by5pdCIsImxvLml0IiwibG9kaS5pdCIsImx0Lml0IiwibHUuaXQiLCJsdWNjYS5pdCIsIm1hY2VyYXRhLml0IiwibWFudG92YS5pdCIsIm1hc3NhLWNhcnJhcmEuaXQiLCJtYXNzYWNhcnJhcmEuaXQiLCJtYXRlcmEuaXQiLCJtYi5pdCIsIm1jLml0IiwibWUuaXQiLCJtZWRpby1jYW1waWRh''@;'; put 'put ''bm8uaXQiLCJtZWRpb2NhbXBpZGFuby5pdCIsIm1lc3NpbmEuaXQiLCJtaS5pdCIsIm1pbGFuLml0IiwibWlsYW5vLml0IiwibW4uaXQiLCJtby5pdCIsIm1vZGVuYS5pdCIsIm1vbnphLWJyaWFuemEuaXQiLCJtb256YS1lLWRlbGxhLWJyaWFuemEuaXQiLCJtb256YS5pdCIsIm1vbnphYnJp''@;'; put 'put ''YW56YS5pdCIsIm1vbnphZWJyaWFuemEuaXQiLCJtb256YWVkZWxsYWJyaWFuemEuaXQiLCJtcy5pdCIsIm10Lml0IiwibmEuaXQiLCJuYXBsZXMuaXQiLCJuYXBvbGkuaXQiLCJuby5pdCIsIm5vdmFyYS5pdCIsIm51Lml0IiwibnVvcm8uaXQiLCJvZy5pdCIsIm9nbGlhc3RyYS5pdCIsIm9s''@;'; put 'put ''YmlhLXRlbXBpby5pdCIsIm9sYmlhdGVtcGlvLml0Iiwib3IuaXQiLCJvcmlzdGFuby5pdCIsIm90Lml0IiwicGEuaXQiLCJwYWRvdmEuaXQiLCJwYWR1YS5pdCIsInBhbGVybW8uaXQiLCJwYXJtYS5pdCIsInBhdmlhLml0IiwicGMuaXQiLCJwZC5pdCIsInBlLml0IiwicGVydWdpYS5pdCIs''@;'; put 'put ''InBlc2Fyby11cmJpbm8uaXQiLCJwZXNhcm91cmJpbm8uaXQiLCJwZXNjYXJhLml0IiwicGcuaXQiLCJwaS5pdCIsInBpYWNlbnphLml0IiwicGlzYS5pdCIsInBpc3RvaWEuaXQiLCJwbi5pdCIsInBvLml0IiwicG9yZGVub25lLml0IiwicG90ZW56YS5pdCIsInByLml0IiwicHJhdG8uaXQi''@;'; put 'put ''LCJwdC5pdCIsInB1Lml0IiwicHYuaXQiLCJwei5pdCIsInJhLml0IiwicmFndXNhLml0IiwicmF2ZW5uYS5pdCIsInJjLml0IiwicmUuaXQiLCJyZWdnaW8tY2FsYWJyaWEuaXQiLCJyZWdnaW8tZW1pbGlhLml0IiwicmVnZ2lvY2FsYWJyaWEuaXQiLCJyZWdnaW9lbWlsaWEuaXQiLCJyZy5p''@;'; put 'put ''dCIsInJpLml0IiwicmlldGkuaXQiLCJyaW1pbmkuaXQiLCJybS5pdCIsInJuLml0Iiwicm8uaXQiLCJyb21hLml0Iiwicm9tZS5pdCIsInJvdmlnby5pdCIsInNhLml0Iiwic2FsZXJuby5pdCIsInNhc3NhcmkuaXQiLCJzYXZvbmEuaXQiLCJzaS5pdCIsInNpZW5hLml0Iiwic2lyYWN1c2Eu''@;'; put 'put ''aXQiLCJzby5pdCIsInNvbmRyaW8uaXQiLCJzcC5pdCIsInNyLml0Iiwic3MuaXQiLCJzdWVkdGlyb2wuaXQiLCJzXHhmY2R0aXJvbC5pdCIsInN2Lml0IiwidGEuaXQiLCJ0YXJhbnRvLml0IiwidGUuaXQiLCJ0ZW1waW8tb2xiaWEuaXQiLCJ0ZW1waW9vbGJpYS5pdCIsInRlcmFtby5pdCIs''@;'; put 'put ''InRlcm5pLml0IiwidG4uaXQiLCJ0by5pdCIsInRvcmluby5pdCIsInRwLml0IiwidHIuaXQiLCJ0cmFuaS1hbmRyaWEtYmFybGV0dGEuaXQiLCJ0cmFuaS1iYXJsZXR0YS1hbmRyaWEuaXQiLCJ0cmFuaWFuZHJpYWJhcmxldHRhLml0IiwidHJhbmliYXJsZXR0YWFuZHJpYS5pdCIsInRyYXBh''@;'; put 'put ''bmkuaXQiLCJ0cmVudG8uaXQiLCJ0cmV2aXNvLml0IiwidHJpZXN0ZS5pdCIsInRzLml0IiwidHVyaW4uaXQiLCJ0di5pdCIsInVkLml0IiwidWRpbmUuaXQiLCJ1cmJpbm8tcGVzYXJvLml0IiwidXJiaW5vcGVzYXJvLml0IiwidmEuaXQiLCJ2YXJlc2UuaXQiLCJ2Yi5pdCIsInZjLml0Iiwi''@;'; put 'put ''dmUuaXQiLCJ2ZW5lemlhLml0IiwidmVuaWNlLml0IiwidmVyYmFuaWEuaXQiLCJ2ZXJjZWxsaS5pdCIsInZlcm9uYS5pdCIsInZpLml0Iiwidmliby12YWxlbnRpYS5pdCIsInZpYm92YWxlbnRpYS5pdCIsInZpY2VuemEuaXQiLCJ2aXRlcmJvLml0IiwidnIuaXQiLCJ2cy5pdCIsInZ0Lml0''@;'; put 'put ''IiwidnYuaXQiLCJqZSIsImNvLmplIiwibmV0LmplIiwib3JnLmplIiwiKi5qbSIsImpvIiwiY29tLmpvIiwib3JnLmpvIiwibmV0LmpvIiwiZWR1LmpvIiwic2NoLmpvIiwiZ292LmpvIiwibWlsLmpvIiwibmFtZS5qbyIsImpvYnMiLCJqcCIsImFjLmpwIiwiYWQuanAiLCJjby5qcCIsImVk''@;'; put 'put ''LmpwIiwiZ28uanAiLCJnci5qcCIsImxnLmpwIiwibmUuanAiLCJvci5qcCIsImFpY2hpLmpwIiwiYWtpdGEuanAiLCJhb21vcmkuanAiLCJjaGliYS5qcCIsImVoaW1lLmpwIiwiZnVrdWkuanAiLCJmdWt1b2thLmpwIiwiZnVrdXNoaW1hLmpwIiwiZ2lmdS5qcCIsImd1bm1hLmpwIiwiaGly''@;'; put 'put ''b3NoaW1hLmpwIiwiaG9ra2FpZG8uanAiLCJoeW9nby5qcCIsImliYXJha2kuanAiLCJpc2hpa2F3YS5qcCIsIml3YXRlLmpwIiwia2FnYXdhLmpwIiwia2Fnb3NoaW1hLmpwIiwia2FuYWdhd2EuanAiLCJrb2NoaS5qcCIsImt1bWFtb3RvLmpwIiwia3lvdG8uanAiLCJtaWUuanAiLCJtaXlh''@;'; put 'put ''Z2kuanAiLCJtaXlhemFraS5qcCIsIm5hZ2Fuby5qcCIsIm5hZ2FzYWtpLmpwIiwibmFyYS5qcCIsIm5paWdhdGEuanAiLCJvaXRhLmpwIiwib2theWFtYS5qcCIsIm9raW5hd2EuanAiLCJvc2FrYS5qcCIsInNhZ2EuanAiLCJzYWl0YW1hLmpwIiwic2hpZ2EuanAiLCJzaGltYW5lLmpwIiwi''@;'; put 'put ''c2hpenVva2EuanAiLCJ0b2NoaWdpLmpwIiwidG9rdXNoaW1hLmpwIiwidG9reW8uanAiLCJ0b3R0b3JpLmpwIiwidG95YW1hLmpwIiwid2FrYXlhbWEuanAiLCJ5YW1hZ2F0YS5qcCIsInlhbWFndWNoaS5qcCIsInlhbWFuYXNoaS5qcCIsIlx1NjgwM1x1NjcyOC5qcCIsIlx1NjExYlx1Nzdl''@;'; put 'put ''NS5qcCIsIlx1NjExYlx1NWE5Yi5qcCIsIlx1NTE3NVx1NWVhYi5qcCIsIlx1NzE4YVx1NjcyYy5qcCIsIlx1ODMyOFx1NTdjZS5qcCIsIlx1NTMxN1x1NmQ3N1x1OTA1My5qcCIsIlx1NTM0M1x1ODQ0OS5qcCIsIlx1NTQ4Y1x1NmI0Y1x1NWM3MS5qcCIsIlx1OTU3N1x1NWQwZS5qcCIsIlx1''@;'; put 'put ''OTU3N1x1OTFjZS5qcCIsIlx1NjViMFx1NmY1Zi5qcCIsIlx1OTc1Mlx1NjhlZS5qcCIsIlx1OTc1OVx1NWNhMS5qcCIsIlx1Njc3MVx1NGVhYy5qcCIsIlx1NzdmM1x1NWRkZC5qcCIsIlx1NTdmY1x1NzM4OS5qcCIsIlx1NGUwOVx1OTFjZC5qcCIsIlx1NGVhY1x1OTBmZC5qcCIsIlx1NGY1''@;'; put 'put ''MFx1OGNjMC5qcCIsIlx1NTkyN1x1NTIwNi5qcCIsIlx1NTkyN1x1OTYyYS5qcCIsIlx1NTk0OFx1ODI2Zi5qcCIsIlx1NWJhZVx1NTdjZS5qcCIsIlx1NWJhZVx1NWQwZS5qcCIsIlx1NWJjY1x1NWM3MS5qcCIsIlx1NWM3MVx1NTNlMy5qcCIsIlx1NWM3MVx1NWY2Mi5qcCIsIlx1NWM3MVx1''@;'; put 'put ''NjhhOC5qcCIsIlx1NWNhOVx1NjI0Yi5qcCIsIlx1NWM5MFx1OTYxYy5qcCIsIlx1NWNhMVx1NWM3MS5qcCIsIlx1NWNmNlx1NjgzOS5qcCIsIlx1NWU4M1x1NWNmNi5qcCIsIlx1NWZiM1x1NWNmNi5qcCIsIlx1NmM5Nlx1N2UwNC5qcCIsIlx1NmVjYlx1OGNjMC5qcCIsIlx1Nzk1ZVx1NTk0''@;'; put 'put ''OFx1NWRkZC5qcCIsIlx1Nzk4Zlx1NGU5NS5qcCIsIlx1Nzk4Zlx1NWNhMS5qcCIsIlx1Nzk4Zlx1NWNmNi5qcCIsIlx1NzljYlx1NzUzMC5qcCIsIlx1N2ZhNFx1OTlhYy5qcCIsIlx1OTk5OVx1NWRkZC5qcCIsIlx1OWFkOFx1NzdlNS5qcCIsIlx1OWNlNVx1NTNkNi5qcCIsIlx1OWU3Zlx1''@;'; put 'put ''NTE1MFx1NWNmNi5qcCIsIioua2F3YXNha2kuanAiLCIqLmtpdGFreXVzaHUuanAiLCIqLmtvYmUuanAiLCIqLm5hZ295YS5qcCIsIiouc2FwcG9yby5qcCIsIiouc2VuZGFpLmpwIiwiKi55b2tvaGFtYS5qcCIsIiFjaXR5Lmthd2FzYWtpLmpwIiwiIWNpdHkua2l0YWt5dXNodS5qcCIsIiFj''@;'; put 'put ''aXR5LmtvYmUuanAiLCIhY2l0eS5uYWdveWEuanAiLCIhY2l0eS5zYXBwb3JvLmpwIiwiIWNpdHkuc2VuZGFpLmpwIiwiIWNpdHkueW9rb2hhbWEuanAiLCJhaXNhaS5haWNoaS5qcCIsImFtYS5haWNoaS5qcCIsImFuam8uYWljaGkuanAiLCJhc3VrZS5haWNoaS5qcCIsImNoaXJ5dS5haWNo''@;'; put 'put ''aS5qcCIsImNoaXRhLmFpY2hpLmpwIiwiZnVzby5haWNoaS5qcCIsImdhbWFnb3JpLmFpY2hpLmpwIiwiaGFuZGEuYWljaGkuanAiLCJoYXp1LmFpY2hpLmpwIiwiaGVraW5hbi5haWNoaS5qcCIsImhpZ2FzaGl1cmEuYWljaGkuanAiLCJpY2hpbm9taXlhLmFpY2hpLmpwIiwiaW5hemF3YS5h''@;'; put 'put ''aWNoaS5qcCIsImludXlhbWEuYWljaGkuanAiLCJpc3NoaWtpLmFpY2hpLmpwIiwiaXdha3VyYS5haWNoaS5qcCIsImthbmllLmFpY2hpLmpwIiwia2FyaXlhLmFpY2hpLmpwIiwia2FzdWdhaS5haWNoaS5qcCIsImtpcmEuYWljaGkuanAiLCJraXlvc3UuYWljaGkuanAiLCJrb21ha2kuYWlj''@;'; put 'put ''aGkuanAiLCJrb25hbi5haWNoaS5qcCIsImtvdGEuYWljaGkuanAiLCJtaWhhbWEuYWljaGkuanAiLCJtaXlvc2hpLmFpY2hpLmpwIiwibmlzaGlvLmFpY2hpLmpwIiwibmlzc2hpbi5haWNoaS5qcCIsIm9idS5haWNoaS5qcCIsIm9ndWNoaS5haWNoaS5qcCIsIm9oYXJ1LmFpY2hpLmpwIiwi''@;'; put 'put ''b2themFraS5haWNoaS5qcCIsIm93YXJpYXNhaGkuYWljaGkuanAiLCJzZXRvLmFpY2hpLmpwIiwic2hpa2F0c3UuYWljaGkuanAiLCJzaGluc2hpcm8uYWljaGkuanAiLCJzaGl0YXJhLmFpY2hpLmpwIiwidGFoYXJhLmFpY2hpLmpwIiwidGFrYWhhbWEuYWljaGkuanAiLCJ0b2Jpc2hpbWEu''@;'; put 'put ''YWljaGkuanAiLCJ0b2VpLmFpY2hpLmpwIiwidG9nby5haWNoaS5qcCIsInRva2FpLmFpY2hpLmpwIiwidG9rb25hbWUuYWljaGkuanAiLCJ0b3lvYWtlLmFpY2hpLmpwIiwidG95b2hhc2hpLmFpY2hpLmpwIiwidG95b2thd2EuYWljaGkuanAiLCJ0b3lvbmUuYWljaGkuanAiLCJ0b3lvdGEu''@;'; put 'put ''YWljaGkuanAiLCJ0c3VzaGltYS5haWNoaS5qcCIsInlhdG9taS5haWNoaS5qcCIsImFraXRhLmFraXRhLmpwIiwiZGFpc2VuLmFraXRhLmpwIiwiZnVqaXNhdG8uYWtpdGEuanAiLCJnb2pvbWUuYWtpdGEuanAiLCJoYWNoaXJvZ2F0YS5ha2l0YS5qcCIsImhhcHBvdS5ha2l0YS5qcCIsImhp''@;'; put 'put ''Z2FzaGluYXJ1c2UuYWtpdGEuanAiLCJob25qby5ha2l0YS5qcCIsImhvbmp5by5ha2l0YS5qcCIsImlrYXdhLmFraXRhLmpwIiwia2FtaWtvYW5pLmFraXRhLmpwIiwia2FtaW9rYS5ha2l0YS5qcCIsImthdGFnYW1pLmFraXRhLmpwIiwia2F6dW5vLmFraXRhLmpwIiwia2l0YWFraXRhLmFr''@;'; put 'put ''aXRhLmpwIiwia29zYWthLmFraXRhLmpwIiwia3lvd2EuYWtpdGEuanAiLCJtaXNhdG8uYWtpdGEuanAiLCJtaXRhbmUuYWtpdGEuanAiLCJtb3JpeW9zaGkuYWtpdGEuanAiLCJuaWthaG8uYWtpdGEuanAiLCJub3NoaXJvLmFraXRhLmpwIiwib2RhdGUuYWtpdGEuanAiLCJvZ2EuYWtpdGEu''@;'; put 'put ''anAiLCJvZ2F0YS5ha2l0YS5qcCIsInNlbWJva3UuYWtpdGEuanAiLCJ5b2tvdGUuYWtpdGEuanAiLCJ5dXJpaG9uam8uYWtpdGEuanAiLCJhb21vcmkuYW9tb3JpLmpwIiwiZ29ub2hlLmFvbW9yaS5qcCIsImhhY2hpbm9oZS5hb21vcmkuanAiLCJoYXNoaWthbWkuYW9tb3JpLmpwIiwiaGly''@;'; put 'put ''YW5haS5hb21vcmkuanAiLCJoaXJvc2FraS5hb21vcmkuanAiLCJpdGF5YW5hZ2kuYW9tb3JpLmpwIiwia3Vyb2lzaGkuYW9tb3JpLmpwIiwibWlzYXdhLmFvbW9yaS5qcCIsIm11dHN1LmFvbW9yaS5qcCIsIm5ha2Fkb21hcmkuYW9tb3JpLmpwIiwibm9oZWppLmFvbW9yaS5qcCIsIm9pcmFz''@;'; put 'put ''ZS5hb21vcmkuanAiLCJvd2FuaS5hb21vcmkuanAiLCJyb2t1bm9oZS5hb21vcmkuanAiLCJzYW5ub2hlLmFvbW9yaS5qcCIsInNoaWNoaW5vaGUuYW9tb3JpLmpwIiwic2hpbmdvLmFvbW9yaS5qcCIsInRha2tvLmFvbW9yaS5qcCIsInRvd2FkYS5hb21vcmkuanAiLCJ0c3VnYXJ1LmFvbW9y''@;'; put 'put ''aS5qcCIsInRzdXJ1dGEuYW9tb3JpLmpwIiwiYWJpa28uY2hpYmEuanAiLCJhc2FoaS5jaGliYS5qcCIsImNob25hbi5jaGliYS5qcCIsImNob3NlaS5jaGliYS5qcCIsImNob3NoaS5jaGliYS5qcCIsImNodW8uY2hpYmEuanAiLCJmdW5hYmFzaGkuY2hpYmEuanAiLCJmdXR0c3UuY2hpYmEu''@;'; put 'put ''anAiLCJoYW5hbWlnYXdhLmNoaWJhLmpwIiwiaWNoaWhhcmEuY2hpYmEuanAiLCJpY2hpa2F3YS5jaGliYS5qcCIsImljaGlub21peWEuY2hpYmEuanAiLCJpbnphaS5jaGliYS5qcCIsImlzdW1pLmNoaWJhLmpwIiwia2FtYWdheWEuY2hpYmEuanAiLCJrYW1vZ2F3YS5jaGliYS5qcCIsImth''@;'; put 'put ''c2hpd2EuY2hpYmEuanAiLCJrYXRvcmkuY2hpYmEuanAiLCJrYXRzdXVyYS5jaGliYS5qcCIsImtpbWl0c3UuY2hpYmEuanAiLCJraXNhcmF6dS5jaGliYS5qcCIsImtvemFraS5jaGliYS5qcCIsImt1anVrdXJpLmNoaWJhLmpwIiwia3lvbmFuLmNoaWJhLmpwIiwibWF0c3Vkby5jaGliYS5q''@;'; put 'put ''cCIsIm1pZG9yaS5jaGliYS5qcCIsIm1paGFtYS5jaGliYS5qcCIsIm1pbmFtaWJvc28uY2hpYmEuanAiLCJtb2JhcmEuY2hpYmEuanAiLCJtdXRzdXphd2EuY2hpYmEuanAiLCJuYWdhcmEuY2hpYmEuanAiLCJuYWdhcmV5YW1hLmNoaWJhLmpwIiwibmFyYXNoaW5vLmNoaWJhLmpwIiwibmFy''@;'; put 'put ''aXRhLmNoaWJhLmpwIiwibm9kYS5jaGliYS5qcCIsIm9hbWlzaGlyYXNhdG8uY2hpYmEuanAiLCJvbWlnYXdhLmNoaWJhLmpwIiwib25qdWt1LmNoaWJhLmpwIiwib3Rha2kuY2hpYmEuanAiLCJzYWthZS5jaGliYS5qcCIsInNha3VyYS5jaGliYS5qcCIsInNoaW1vZnVzYS5jaGliYS5qcCIs''@;'; put 'put ''InNoaXJha28uY2hpYmEuanAiLCJzaGlyb2kuY2hpYmEuanAiLCJzaGlzdWkuY2hpYmEuanAiLCJzb2RlZ2F1cmEuY2hpYmEuanAiLCJzb3NhLmNoaWJhLmpwIiwidGFrby5jaGliYS5qcCIsInRhdGV5YW1hLmNoaWJhLmpwIiwidG9nYW5lLmNoaWJhLmpwIiwidG9obm9zaG8uY2hpYmEuanAi''@;'; put 'put ''LCJ0b21pc2F0by5jaGliYS5qcCIsInVyYXlhc3UuY2hpYmEuanAiLCJ5YWNoaW1hdGEuY2hpYmEuanAiLCJ5YWNoaXlvLmNoaWJhLmpwIiwieW9rYWljaGliYS5jaGliYS5qcCIsInlva29zaGliYWhpa2FyaS5jaGliYS5qcCIsInlvdHN1a2FpZG8uY2hpYmEuanAiLCJhaW5hbi5laGltZS5q''@;'; put 'put ''cCIsImhvbmFpLmVoaW1lLmpwIiwiaWthdGEuZWhpbWUuanAiLCJpbWFiYXJpLmVoaW1lLmpwIiwiaXlvLmVoaW1lLmpwIiwia2FtaWppbWEuZWhpbWUuanAiLCJraWhva3UuZWhpbWUuanAiLCJrdW1ha29nZW4uZWhpbWUuanAiLCJtYXNha2kuZWhpbWUuanAiLCJtYXRzdW5vLmVoaW1lLmpw''@;'; put 'put ''IiwibWF0c3V5YW1hLmVoaW1lLmpwIiwibmFtaWthdGEuZWhpbWUuanAiLCJuaWloYW1hLmVoaW1lLmpwIiwib3p1LmVoaW1lLmpwIiwic2Fpam8uZWhpbWUuanAiLCJzZWl5by5laGltZS5qcCIsInNoaWtva3VjaHVvLmVoaW1lLmpwIiwidG9iZS5laGltZS5qcCIsInRvb24uZWhpbWUuanAi''@;'; put 'put ''LCJ1Y2hpa28uZWhpbWUuanAiLCJ1d2FqaW1hLmVoaW1lLmpwIiwieWF3YXRhaGFtYS5laGltZS5qcCIsImVjaGl6ZW4uZnVrdWkuanAiLCJlaWhlaWppLmZ1a3VpLmpwIiwiZnVrdWkuZnVrdWkuanAiLCJpa2VkYS5mdWt1aS5qcCIsImthdHN1eWFtYS5mdWt1aS5qcCIsIm1paGFtYS5mdWt1''@;'; put 'put ''aS5qcCIsIm1pbmFtaWVjaGl6ZW4uZnVrdWkuanAiLCJvYmFtYS5mdWt1aS5qcCIsIm9oaS5mdWt1aS5qcCIsIm9uby5mdWt1aS5qcCIsInNhYmFlLmZ1a3VpLmpwIiwic2FrYWkuZnVrdWkuanAiLCJ0YWthaGFtYS5mdWt1aS5qcCIsInRzdXJ1Z2EuZnVrdWkuanAiLCJ3YWthc2EuZnVrdWku''@;'; put 'put ''anAiLCJhc2hpeWEuZnVrdW9rYS5qcCIsImJ1emVuLmZ1a3Vva2EuanAiLCJjaGlrdWdvLmZ1a3Vva2EuanAiLCJjaGlrdWhvLmZ1a3Vva2EuanAiLCJjaGlrdWpvLmZ1a3Vva2EuanAiLCJjaGlrdXNoaW5vLmZ1a3Vva2EuanAiLCJjaGlrdXplbi5mdWt1b2thLmpwIiwiY2h1by5mdWt1b2th''@;'; put 'put ''LmpwIiwiZGF6YWlmdS5mdWt1b2thLmpwIiwiZnVrdWNoaS5mdWt1b2thLmpwIiwiaGFrYXRhLmZ1a3Vva2EuanAiLCJoaWdhc2hpLmZ1a3Vva2EuanAiLCJoaXJva2F3YS5mdWt1b2thLmpwIiwiaGlzYXlhbWEuZnVrdW9rYS5qcCIsImlpenVrYS5mdWt1b2thLmpwIiwiaW5hdHN1a2kuZnVr''@;'; put 'put ''dW9rYS5qcCIsImthaG8uZnVrdW9rYS5qcCIsImthc3VnYS5mdWt1b2thLmpwIiwia2FzdXlhLmZ1a3Vva2EuanAiLCJrYXdhcmEuZnVrdW9rYS5qcCIsImtlaXNlbi5mdWt1b2thLmpwIiwia29nYS5mdWt1b2thLmpwIiwia3VyYXRlLmZ1a3Vva2EuanAiLCJrdXJvZ2kuZnVrdW9rYS5qcCIs''@;'; put 'put ''Imt1cnVtZS5mdWt1b2thLmpwIiwibWluYW1pLmZ1a3Vva2EuanAiLCJtaXlha28uZnVrdW9rYS5qcCIsIm1peWFtYS5mdWt1b2thLmpwIiwibWl5YXdha2EuZnVrdW9rYS5qcCIsIm1penVtYWtpLmZ1a3Vva2EuanAiLCJtdW5ha2F0YS5mdWt1b2thLmpwIiwibmFrYWdhd2EuZnVrdW9rYS5q''@;'; put 'put ''cCIsIm5ha2FtYS5mdWt1b2thLmpwIiwibmlzaGkuZnVrdW9rYS5qcCIsIm5vZ2F0YS5mdWt1b2thLmpwIiwib2dvcmkuZnVrdW9rYS5qcCIsIm9rYWdha2kuZnVrdW9rYS5qcCIsIm9rYXdhLmZ1a3Vva2EuanAiLCJva2kuZnVrdW9rYS5qcCIsIm9tdXRhLmZ1a3Vva2EuanAiLCJvbmdhLmZ1''@;'; put 'put ''a3Vva2EuanAiLCJvbm9qby5mdWt1b2thLmpwIiwib3RvLmZ1a3Vva2EuanAiLCJzYWlnYXdhLmZ1a3Vva2EuanAiLCJzYXNhZ3VyaS5mdWt1b2thLmpwIiwic2hpbmd1LmZ1a3Vva2EuanAiLCJzaGlueW9zaGl0b21pLmZ1a3Vva2EuanAiLCJzaG9uYWkuZnVrdW9rYS5qcCIsInNvZWRhLmZ1''@;'; put 'put ''a3Vva2EuanAiLCJzdWUuZnVrdW9rYS5qcCIsInRhY2hpYXJhaS5mdWt1b2thLmpwIiwidGFnYXdhLmZ1a3Vva2EuanAiLCJ0YWthdGEuZnVrdW9rYS5qcCIsInRvaG8uZnVrdW9rYS5qcCIsInRveW90c3UuZnVrdW9rYS5qcCIsInRzdWlraS5mdWt1b2thLmpwIiwidWtpaGEuZnVrdW9rYS5q''@;'; put 'put ''cCIsInVtaS5mdWt1b2thLmpwIiwidXN1aS5mdWt1b2thLmpwIiwieWFtYWRhLmZ1a3Vva2EuanAiLCJ5YW1lLmZ1a3Vva2EuanAiLCJ5YW5hZ2F3YS5mdWt1b2thLmpwIiwieXVrdWhhc2hpLmZ1a3Vva2EuanAiLCJhaXp1YmFuZ2UuZnVrdXNoaW1hLmpwIiwiYWl6dW1pc2F0by5mdWt1c2hp''@;'; put 'put ''bWEuanAiLCJhaXp1d2FrYW1hdHN1LmZ1a3VzaGltYS5qcCIsImFzYWthd2EuZnVrdXNoaW1hLmpwIiwiYmFuZGFpLmZ1a3VzaGltYS5qcCIsImRhdGUuZnVrdXNoaW1hLmpwIiwiZnVrdXNoaW1hLmZ1a3VzaGltYS5qcCIsImZ1cnVkb25vLmZ1a3VzaGltYS5qcCIsImZ1dGFiYS5mdWt1c2hp''@;'; put 'put ''bWEuanAiLCJoYW5hd2EuZnVrdXNoaW1hLmpwIiwiaGlnYXNoaS5mdWt1c2hpbWEuanAiLCJoaXJhdGEuZnVrdXNoaW1hLmpwIiwiaGlyb25vLmZ1a3VzaGltYS5qcCIsImlpdGF0ZS5mdWt1c2hpbWEuanAiLCJpbmF3YXNoaXJvLmZ1a3VzaGltYS5qcCIsImlzaGlrYXdhLmZ1a3VzaGltYS5q''@;'; put 'put ''cCIsIml3YWtpLmZ1a3VzaGltYS5qcCIsIml6dW1pemFraS5mdWt1c2hpbWEuanAiLCJrYWdhbWlpc2hpLmZ1a3VzaGltYS5qcCIsImthbmV5YW1hLmZ1a3VzaGltYS5qcCIsImthd2FtYXRhLmZ1a3VzaGltYS5qcCIsImtpdGFrYXRhLmZ1a3VzaGltYS5qcCIsImtpdGFzaGlvYmFyYS5mdWt1''@;'; put 'put ''c2hpbWEuanAiLCJrb29yaS5mdWt1c2hpbWEuanAiLCJrb3JpeWFtYS5mdWt1c2hpbWEuanAiLCJrdW5pbWkuZnVrdXNoaW1hLmpwIiwibWloYXJ1LmZ1a3VzaGltYS5qcCIsIm1pc2hpbWEuZnVrdXNoaW1hLmpwIiwibmFtaWUuZnVrdXNoaW1hLmpwIiwibmFuZ28uZnVrdXNoaW1hLmpwIiwi''@;'; put 'put ''bmlzaGlhaXp1LmZ1a3VzaGltYS5qcCIsIm5pc2hpZ28uZnVrdXNoaW1hLmpwIiwib2t1bWEuZnVrdXNoaW1hLmpwIiwib21vdGVnby5mdWt1c2hpbWEuanAiLCJvbm8uZnVrdXNoaW1hLmpwIiwib3RhbWEuZnVrdXNoaW1hLmpwIiwic2FtZWdhd2EuZnVrdXNoaW1hLmpwIiwic2hpbW9nby5m''@;'; put 'put ''dWt1c2hpbWEuanAiLCJzaGlyYWthd2EuZnVrdXNoaW1hLmpwIiwic2hvd2EuZnVrdXNoaW1hLmpwIiwic29tYS5mdWt1c2hpbWEuanAiLCJzdWthZ2F3YS5mdWt1c2hpbWEuanAiLCJ0YWlzaGluLmZ1a3VzaGltYS5qcCIsInRhbWFrYXdhLmZ1a3VzaGltYS5qcCIsInRhbmFndXJhLmZ1a3Vz''@;'; put 'put ''aGltYS5qcCIsInRlbmVpLmZ1a3VzaGltYS5qcCIsInlhYnVraS5mdWt1c2hpbWEuanAiLCJ5YW1hdG8uZnVrdXNoaW1hLmpwIiwieWFtYXRzdXJpLmZ1a3VzaGltYS5qcCIsInlhbmFpenUuZnVrdXNoaW1hLmpwIiwieXVnYXdhLmZ1a3VzaGltYS5qcCIsImFucGFjaGkuZ2lmdS5qcCIsImVu''@;'; put 'put ''YS5naWZ1LmpwIiwiZ2lmdS5naWZ1LmpwIiwiZ2luYW4uZ2lmdS5qcCIsImdvZG8uZ2lmdS5qcCIsImd1am8uZ2lmdS5qcCIsImhhc2hpbWEuZ2lmdS5qcCIsImhpY2hpc28uZ2lmdS5qcCIsImhpZGEuZ2lmdS5qcCIsImhpZ2FzaGlzaGlyYWthd2EuZ2lmdS5qcCIsImliaWdhd2EuZ2lmdS5q''@;'; put 'put ''cCIsImlrZWRhLmdpZnUuanAiLCJrYWthbWlnYWhhcmEuZ2lmdS5qcCIsImthbmkuZ2lmdS5qcCIsImthc2FoYXJhLmdpZnUuanAiLCJrYXNhbWF0c3UuZ2lmdS5qcCIsImthd2F1ZS5naWZ1LmpwIiwia2l0YWdhdGEuZ2lmdS5qcCIsIm1pbm8uZ2lmdS5qcCIsIm1pbm9rYW1vLmdpZnUuanAi''@;'; put 'put ''LCJtaXRha2UuZ2lmdS5qcCIsIm1penVuYW1pLmdpZnUuanAiLCJtb3Rvc3UuZ2lmdS5qcCIsIm5ha2F0c3VnYXdhLmdpZnUuanAiLCJvZ2FraS5naWZ1LmpwIiwic2FrYWhvZ2kuZ2lmdS5qcCIsInNla2kuZ2lmdS5qcCIsInNla2lnYWhhcmEuZ2lmdS5qcCIsInNoaXJha2F3YS5naWZ1Lmpw''@;'; put 'put ''IiwidGFqaW1pLmdpZnUuanAiLCJ0YWtheWFtYS5naWZ1LmpwIiwidGFydWkuZ2lmdS5qcCIsInRva2kuZ2lmdS5qcCIsInRvbWlrYS5naWZ1LmpwIiwid2Fub3VjaGkuZ2lmdS5qcCIsInlhbWFnYXRhLmdpZnUuanAiLCJ5YW90c3UuZ2lmdS5qcCIsInlvcm8uZ2lmdS5qcCIsImFubmFrYS5n''@;'; put 'put ''dW5tYS5qcCIsImNoaXlvZGEuZ3VubWEuanAiLCJmdWppb2thLmd1bm1hLmpwIiwiaGlnYXNoaWFnYXRzdW1hLmd1bm1hLmpwIiwiaXNlc2FraS5ndW5tYS5qcCIsIml0YWt1cmEuZ3VubWEuanAiLCJrYW5uYS5ndW5tYS5qcCIsImthbnJhLmd1bm1hLmpwIiwia2F0YXNoaW5hLmd1bm1hLmpw''@;'; put 'put ''Iiwia2F3YWJhLmd1bm1hLmpwIiwia2lyeXUuZ3VubWEuanAiLCJrdXNhdHN1Lmd1bm1hLmpwIiwibWFlYmFzaGkuZ3VubWEuanAiLCJtZWl3YS5ndW5tYS5qcCIsIm1pZG9yaS5ndW5tYS5qcCIsIm1pbmFrYW1pLmd1bm1hLmpwIiwibmFnYW5vaGFyYS5ndW5tYS5qcCIsIm5ha2Fub2pvLmd1''@;'; put 'put ''bm1hLmpwIiwibmFubW9rdS5ndW5tYS5qcCIsIm51bWF0YS5ndW5tYS5qcCIsIm9penVtaS5ndW5tYS5qcCIsIm9yYS5ndW5tYS5qcCIsIm90YS5ndW5tYS5qcCIsInNoaWJ1a2F3YS5ndW5tYS5qcCIsInNoaW1vbml0YS5ndW5tYS5qcCIsInNoaW50by5ndW5tYS5qcCIsInNob3dhLmd1bm1h''@;'; put 'put ''LmpwIiwidGFrYXNha2kuZ3VubWEuanAiLCJ0YWtheWFtYS5ndW5tYS5qcCIsInRhbWFtdXJhLmd1bm1hLmpwIiwidGF0ZWJheWFzaGkuZ3VubWEuanAiLCJ0b21pb2thLmd1bm1hLmpwIiwidHN1a2l5b25vLmd1bm1hLmpwIiwidHN1bWFnb2kuZ3VubWEuanAiLCJ1ZW5vLmd1bm1hLmpwIiwi''@;'; put 'put ''eW9zaGlva2EuZ3VubWEuanAiLCJhc2FtaW5hbWkuaGlyb3NoaW1hLmpwIiwiZGFpd2EuaGlyb3NoaW1hLmpwIiwiZXRhamltYS5oaXJvc2hpbWEuanAiLCJmdWNodS5oaXJvc2hpbWEuanAiLCJmdWt1eWFtYS5oaXJvc2hpbWEuanAiLCJoYXRzdWthaWNoaS5oaXJvc2hpbWEuanAiLCJoaWdh''@;'; put 'put ''c2hpaGlyb3NoaW1hLmhpcm9zaGltYS5qcCIsImhvbmdvLmhpcm9zaGltYS5qcCIsImppbnNla2lrb2dlbi5oaXJvc2hpbWEuanAiLCJrYWl0YS5oaXJvc2hpbWEuanAiLCJrdWkuaGlyb3NoaW1hLmpwIiwia3VtYW5vLmhpcm9zaGltYS5qcCIsImt1cmUuaGlyb3NoaW1hLmpwIiwibWloYXJh''@;'; put 'put ''Lmhpcm9zaGltYS5qcCIsIm1peW9zaGkuaGlyb3NoaW1hLmpwIiwibmFrYS5oaXJvc2hpbWEuanAiLCJvbm9taWNoaS5oaXJvc2hpbWEuanAiLCJvc2FraWthbWlqaW1hLmhpcm9zaGltYS5qcCIsIm90YWtlLmhpcm9zaGltYS5qcCIsInNha2EuaGlyb3NoaW1hLmpwIiwic2VyYS5oaXJvc2hp''@;'; put 'put ''bWEuanAiLCJzZXJhbmlzaGkuaGlyb3NoaW1hLmpwIiwic2hpbmljaGkuaGlyb3NoaW1hLmpwIiwic2hvYmFyYS5oaXJvc2hpbWEuanAiLCJ0YWtlaGFyYS5oaXJvc2hpbWEuanAiLCJhYmFzaGlyaS5ob2trYWlkby5qcCIsImFiaXJhLmhva2thaWRvLmpwIiwiYWliZXRzdS5ob2trYWlkby5q''@;'; put 'put ''cCIsImFrYWJpcmEuaG9ra2FpZG8uanAiLCJha2tlc2hpLmhva2thaWRvLmpwIiwiYXNhaGlrYXdhLmhva2thaWRvLmpwIiwiYXNoaWJldHN1Lmhva2thaWRvLmpwIiwiYXNob3JvLmhva2thaWRvLmpwIiwiYXNzYWJ1Lmhva2thaWRvLmpwIiwiYXRzdW1hLmhva2thaWRvLmpwIiwiYmliYWku''@;'; put 'put ''aG9ra2FpZG8uanAiLCJiaWVpLmhva2thaWRvLmpwIiwiYmlmdWthLmhva2thaWRvLmpwIiwiYmlob3JvLmhva2thaWRvLmpwIiwiYmlyYXRvcmkuaG9ra2FpZG8uanAiLCJjaGlwcHViZXRzdS5ob2trYWlkby5qcCIsImNoaXRvc2UuaG9ra2FpZG8uanAiLCJkYXRlLmhva2thaWRvLmpwIiwi''@;'; put 'put ''ZWJldHN1Lmhva2thaWRvLmpwIiwiZW1iZXRzdS5ob2trYWlkby5qcCIsImVuaXdhLmhva2thaWRvLmpwIiwiZXJpbW8uaG9ra2FpZG8uanAiLCJlc2FuLmhva2thaWRvLmpwIiwiZXNhc2hpLmhva2thaWRvLmpwIiwiZnVrYWdhd2EuaG9ra2FpZG8uanAiLCJmdWt1c2hpbWEuaG9ra2FpZG8u''@;'; put 'put ''anAiLCJmdXJhbm8uaG9ra2FpZG8uanAiLCJmdXJ1YmlyYS5ob2trYWlkby5qcCIsImhhYm9yby5ob2trYWlkby5qcCIsImhha29kYXRlLmhva2thaWRvLmpwIiwiaGFtYXRvbmJldHN1Lmhva2thaWRvLmpwIiwiaGlkYWthLmhva2thaWRvLmpwIiwiaGlnYXNoaWthZ3VyYS5ob2trYWlkby5q''@;'; put 'put ''cCIsImhpZ2FzaGlrYXdhLmhva2thaWRvLmpwIiwiaGlyb28uaG9ra2FpZG8uanAiLCJob2t1cnl1Lmhva2thaWRvLmpwIiwiaG9rdXRvLmhva2thaWRvLmpwIiwiaG9uYmV0c3UuaG9ra2FpZG8uanAiLCJob3Jva2FuYWkuaG9ra2FpZG8uanAiLCJob3Jvbm9iZS5ob2trYWlkby5qcCIsImlr''@;'; put 'put ''ZWRhLmhva2thaWRvLmpwIiwiaW1ha2FuZS5ob2trYWlkby5qcCIsImlzaGlrYXJpLmhva2thaWRvLmpwIiwiaXdhbWl6YXdhLmhva2thaWRvLmpwIiwiaXdhbmFpLmhva2thaWRvLmpwIiwia2FtaWZ1cmFuby5ob2trYWlkby5qcCIsImthbWlrYXdhLmhva2thaWRvLmpwIiwia2FtaXNoaWhv''@;'; put 'put ''cm8uaG9ra2FpZG8uanAiLCJrYW1pc3VuYWdhd2EuaG9ra2FpZG8uanAiLCJrYW1vZW5haS5ob2trYWlkby5qcCIsImtheWFiZS5ob2trYWlkby5qcCIsImtlbWJ1Y2hpLmhva2thaWRvLmpwIiwia2lrb25haS5ob2trYWlkby5qcCIsImtpbW9iZXRzdS5ob2trYWlkby5qcCIsImtpdGFoaXJv''@;'; put 'put ''c2hpbWEuaG9ra2FpZG8uanAiLCJraXRhbWkuaG9ra2FpZG8uanAiLCJraXlvc2F0by5ob2trYWlkby5qcCIsImtvc2hpbWl6dS5ob2trYWlkby5qcCIsImt1bm5lcHB1Lmhva2thaWRvLmpwIiwia3VyaXlhbWEuaG9ra2FpZG8uanAiLCJrdXJvbWF0c3VuYWkuaG9ra2FpZG8uanAiLCJrdXNo''@;'; put 'put ''aXJvLmhva2thaWRvLmpwIiwia3V0Y2hhbi5ob2trYWlkby5qcCIsImt5b3dhLmhva2thaWRvLmpwIiwibWFzaGlrZS5ob2trYWlkby5qcCIsIm1hdHN1bWFlLmhva2thaWRvLmpwIiwibWlrYXNhLmhva2thaWRvLmpwIiwibWluYW1pZnVyYW5vLmhva2thaWRvLmpwIiwibW9tYmV0c3UuaG9r''@;'; put 'put ''a2FpZG8uanAiLCJtb3NldXNoaS5ob2trYWlkby5qcCIsIm11a2F3YS5ob2trYWlkby5qcCIsIm11cm9yYW4uaG9ra2FpZG8uanAiLCJuYWllLmhva2thaWRvLmpwIiwibmFrYWdhd2EuaG9ra2FpZG8uanAiLCJuYWthc2F0c3VuYWkuaG9ra2FpZG8uanAiLCJuYWthdG9tYmV0c3UuaG9ra2Fp''@;'; put 'put ''ZG8uanAiLCJuYW5hZS5ob2trYWlkby5qcCIsIm5hbnBvcm8uaG9ra2FpZG8uanAiLCJuYXlvcm8uaG9ra2FpZG8uanAiLCJuZW11cm8uaG9ra2FpZG8uanAiLCJuaWlrYXBwdS5ob2trYWlkby5qcCIsIm5pa2kuaG9ra2FpZG8uanAiLCJuaXNoaW9rb3BwZS5ob2trYWlkby5qcCIsIm5vYm9y''@;'; put 'put ''aWJldHN1Lmhva2thaWRvLmpwIiwibnVtYXRhLmhva2thaWRvLmpwIiwib2JpaGlyby5ob2trYWlkby5qcCIsIm9iaXJhLmhva2thaWRvLmpwIiwib2tldG8uaG9ra2FpZG8uanAiLCJva29wcGUuaG9ra2FpZG8uanAiLCJvdGFydS5ob2trYWlkby5qcCIsIm90b2JlLmhva2thaWRvLmpwIiwi''@;'; put 'put ''b3RvZnVrZS5ob2trYWlkby5qcCIsIm90b2luZXBwdS5ob2trYWlkby5qcCIsIm91bXUuaG9ra2FpZG8uanAiLCJvem9yYS5ob2trYWlkby5qcCIsInBpcHB1Lmhva2thaWRvLmpwIiwicmFua29zaGkuaG9ra2FpZG8uanAiLCJyZWJ1bi5ob2trYWlkby5qcCIsInJpa3ViZXRzdS5ob2trYWlk''@;'; put 'put ''by5qcCIsInJpc2hpcmkuaG9ra2FpZG8uanAiLCJyaXNoaXJpZnVqaS5ob2trYWlkby5qcCIsInNhcm9tYS5ob2trYWlkby5qcCIsInNhcnVmdXRzdS5ob2trYWlkby5qcCIsInNoYWtvdGFuLmhva2thaWRvLmpwIiwic2hhcmkuaG9ra2FpZG8uanAiLCJzaGliZWNoYS5ob2trYWlkby5qcCIs''@;'; put 'put ''InNoaWJldHN1Lmhva2thaWRvLmpwIiwic2hpa2FiZS5ob2trYWlkby5qcCIsInNoaWthb2kuaG9ra2FpZG8uanAiLCJzaGltYW1ha2kuaG9ra2FpZG8uanAiLCJzaGltaXp1Lmhva2thaWRvLmpwIiwic2hpbW9rYXdhLmhva2thaWRvLmpwIiwic2hpbnNoaW5vdHN1Lmhva2thaWRvLmpwIiwi''@;'; put 'put ''c2hpbnRva3UuaG9ra2FpZG8uanAiLCJzaGlyYW51a2EuaG9ra2FpZG8uanAiLCJzaGlyYW9pLmhva2thaWRvLmpwIiwic2hpcml1Y2hpLmhva2thaWRvLmpwIiwic29iZXRzdS5ob2trYWlkby5qcCIsInN1bmFnYXdhLmhva2thaWRvLmpwIiwidGFpa2kuaG9ra2FpZG8uanAiLCJ0YWthc3Uu''@;'; put 'put ''aG9ra2FpZG8uanAiLCJ0YWtpa2F3YS5ob2trYWlkby5qcCIsInRha2lub3VlLmhva2thaWRvLmpwIiwidGVzaGlrYWdhLmhva2thaWRvLmpwIiwidG9iZXRzdS5ob2trYWlkby5qcCIsInRvaG1hLmhva2thaWRvLmpwIiwidG9tYWtvbWFpLmhva2thaWRvLmpwIiwidG9tYXJpLmhva2thaWRv''@;'; put 'put ''LmpwIiwidG95YS5ob2trYWlkby5qcCIsInRveWFrby5ob2trYWlkby5qcCIsInRveW90b21pLmhva2thaWRvLmpwIiwidG95b3VyYS5ob2trYWlkby5qcCIsInRzdWJldHN1Lmhva2thaWRvLmpwIiwidHN1a2lnYXRhLmhva2thaWRvLmpwIiwidXJha2F3YS5ob2trYWlkby5qcCIsInVyYXVz''@;'; put 'put ''dS5ob2trYWlkby5qcCIsInVyeXUuaG9ra2FpZG8uanAiLCJ1dGFzaGluYWkuaG9ra2FpZG8uanAiLCJ3YWtrYW5haS5ob2trYWlkby5qcCIsIndhc3NhbXUuaG9ra2FpZG8uanAiLCJ5YWt1bW8uaG9ra2FpZG8uanAiLCJ5b2ljaGkuaG9ra2FpZG8uanAiLCJhaW9pLmh5b2dvLmpwIiwiYWth''@;'; put 'put ''c2hpLmh5b2dvLmpwIiwiYWtvLmh5b2dvLmpwIiwiYW1hZ2FzYWtpLmh5b2dvLmpwIiwiYW9nYWtpLmh5b2dvLmpwIiwiYXNhZ28uaHlvZ28uanAiLCJhc2hpeWEuaHlvZ28uanAiLCJhd2FqaS5oeW9nby5qcCIsImZ1a3VzYWtpLmh5b2dvLmpwIiwiZ29zaGlraS5oeW9nby5qcCIsImhhcmlt''@;'; put 'put ''YS5oeW9nby5qcCIsImhpbWVqaS5oeW9nby5qcCIsImljaGlrYXdhLmh5b2dvLmpwIiwiaW5hZ2F3YS5oeW9nby5qcCIsIml0YW1pLmh5b2dvLmpwIiwia2Frb2dhd2EuaHlvZ28uanAiLCJrYW1pZ29yaS5oeW9nby5qcCIsImthbWlrYXdhLmh5b2dvLmpwIiwia2FzYWkuaHlvZ28uanAiLCJr''@;'; put 'put ''YXN1Z2EuaHlvZ28uanAiLCJrYXdhbmlzaGkuaHlvZ28uanAiLCJtaWtpLmh5b2dvLmpwIiwibWluYW1pYXdhamkuaHlvZ28uanAiLCJuaXNoaW5vbWl5YS5oeW9nby5qcCIsIm5pc2hpd2FraS5oeW9nby5qcCIsIm9uby5oeW9nby5qcCIsInNhbmRhLmh5b2dvLmpwIiwic2FubmFuLmh5b2dv''@;'; put 'put ''LmpwIiwic2FzYXlhbWEuaHlvZ28uanAiLCJzYXlvLmh5b2dvLmpwIiwic2hpbmd1Lmh5b2dvLmpwIiwic2hpbm9uc2VuLmh5b2dvLmpwIiwic2hpc28uaHlvZ28uanAiLCJzdW1vdG8uaHlvZ28uanAiLCJ0YWlzaGkuaHlvZ28uanAiLCJ0YWthLmh5b2dvLmpwIiwidGFrYXJhenVrYS5oeW9n''@;'; put 'put ''by5qcCIsInRha2FzYWdvLmh5b2dvLmpwIiwidGFraW5vLmh5b2dvLmpwIiwidGFtYmEuaHlvZ28uanAiLCJ0YXRzdW5vLmh5b2dvLmpwIiwidG95b29rYS5oeW9nby5qcCIsInlhYnUuaHlvZ28uanAiLCJ5YXNoaXJvLmh5b2dvLmpwIiwieW9rYS5oeW9nby5qcCIsInlva2F3YS5oeW9nby5q''@;'; put 'put ''cCIsImFtaS5pYmFyYWtpLmpwIiwiYXNhaGkuaWJhcmFraS5qcCIsImJhbmRvLmliYXJha2kuanAiLCJjaGlrdXNlaS5pYmFyYWtpLmpwIiwiZGFpZ28uaWJhcmFraS5qcCIsImZ1amlzaGlyby5pYmFyYWtpLmpwIiwiaGl0YWNoaS5pYmFyYWtpLmpwIiwiaGl0YWNoaW5ha2EuaWJhcmFraS5q''@;'; put 'put ''cCIsImhpdGFjaGlvbWl5YS5pYmFyYWtpLmpwIiwiaGl0YWNoaW90YS5pYmFyYWtpLmpwIiwiaWJhcmFraS5pYmFyYWtpLmpwIiwiaW5hLmliYXJha2kuanAiLCJpbmFzaGlraS5pYmFyYWtpLmpwIiwiaXRha28uaWJhcmFraS5qcCIsIml3YW1hLmliYXJha2kuanAiLCJqb3NvLmliYXJha2ku''@;'; put 'put ''anAiLCJrYW1pc3UuaWJhcmFraS5qcCIsImthc2FtYS5pYmFyYWtpLmpwIiwia2FzaGltYS5pYmFyYWtpLmpwIiwia2FzdW1pZ2F1cmEuaWJhcmFraS5qcCIsImtvZ2EuaWJhcmFraS5qcCIsIm1paG8uaWJhcmFraS5qcCIsIm1pdG8uaWJhcmFraS5qcCIsIm1vcml5YS5pYmFyYWtpLmpwIiwi''@;'; put 'put ''bmFrYS5pYmFyYWtpLmpwIiwibmFtZWdhdGEuaWJhcmFraS5qcCIsIm9hcmFpLmliYXJha2kuanAiLCJvZ2F3YS5pYmFyYWtpLmpwIiwib21pdGFtYS5pYmFyYWtpLmpwIiwicnl1Z2FzYWtpLmliYXJha2kuanAiLCJzYWthaS5pYmFyYWtpLmpwIiwic2FrdXJhZ2F3YS5pYmFyYWtpLmpwIiwi''@;'; put 'put ''c2hpbW9kYXRlLmliYXJha2kuanAiLCJzaGltb3RzdW1hLmliYXJha2kuanAiLCJzaGlyb3NhdG8uaWJhcmFraS5qcCIsInNvd2EuaWJhcmFraS5qcCIsInN1aWZ1LmliYXJha2kuanAiLCJ0YWthaGFnaS5pYmFyYWtpLmpwIiwidGFtYXRzdWt1cmkuaWJhcmFraS5qcCIsInRva2FpLmliYXJh''@;'; put 'put ''a2kuanAiLCJ0b21vYmUuaWJhcmFraS5qcCIsInRvbmUuaWJhcmFraS5qcCIsInRvcmlkZS5pYmFyYWtpLmpwIiwidHN1Y2hpdXJhLmliYXJha2kuanAiLCJ0c3VrdWJhLmliYXJha2kuanAiLCJ1Y2hpaGFyYS5pYmFyYWtpLmpwIiwidXNoaWt1LmliYXJha2kuanAiLCJ5YWNoaXlvLmliYXJh''@;'; put 'put ''a2kuanAiLCJ5YW1hZ2F0YS5pYmFyYWtpLmpwIiwieWF3YXJhLmliYXJha2kuanAiLCJ5dWtpLmliYXJha2kuanAiLCJhbmFtaXp1LmlzaGlrYXdhLmpwIiwiaGFrdWkuaXNoaWthd2EuanAiLCJoYWt1c2FuLmlzaGlrYXdhLmpwIiwia2FnYS5pc2hpa2F3YS5qcCIsImthaG9rdS5pc2hpa2F3''@;'; put 'put ''YS5qcCIsImthbmF6YXdhLmlzaGlrYXdhLmpwIiwia2F3YWtpdGEuaXNoaWthd2EuanAiLCJrb21hdHN1LmlzaGlrYXdhLmpwIiwibmFrYW5vdG8uaXNoaWthd2EuanAiLCJuYW5hby5pc2hpa2F3YS5qcCIsIm5vbWkuaXNoaWthd2EuanAiLCJub25vaWNoaS5pc2hpa2F3YS5qcCIsIm5vdG8u''@;'; put 'put ''aXNoaWthd2EuanAiLCJzaGlrYS5pc2hpa2F3YS5qcCIsInN1enUuaXNoaWthd2EuanAiLCJ0c3ViYXRhLmlzaGlrYXdhLmpwIiwidHN1cnVnaS5pc2hpa2F3YS5qcCIsInVjaGluYWRhLmlzaGlrYXdhLmpwIiwid2FqaW1hLmlzaGlrYXdhLmpwIiwiZnVkYWkuaXdhdGUuanAiLCJmdWppc2F3''@;'; put 'put ''YS5pd2F0ZS5qcCIsImhhbmFtYWtpLml3YXRlLmpwIiwiaGlyYWl6dW1pLml3YXRlLmpwIiwiaGlyb25vLml3YXRlLmpwIiwiaWNoaW5vaGUuaXdhdGUuanAiLCJpY2hpbm9zZWtpLml3YXRlLmpwIiwiaXdhaXp1bWkuaXdhdGUuanAiLCJpd2F0ZS5pd2F0ZS5qcCIsImpvYm9qaS5pd2F0ZS5q''@;'; put 'put ''cCIsImthbWFpc2hpLml3YXRlLmpwIiwia2FuZWdhc2FraS5pd2F0ZS5qcCIsImthcnVtYWkuaXdhdGUuanAiLCJrYXdhaS5pd2F0ZS5qcCIsImtpdGFrYW1pLml3YXRlLmpwIiwia3VqaS5pd2F0ZS5qcCIsImt1bm9oZS5pd2F0ZS5qcCIsImt1enVtYWtpLml3YXRlLmpwIiwibWl5YWtvLml3''@;'; put 'put ''YXRlLmpwIiwibWl6dXNhd2EuaXdhdGUuanAiLCJtb3Jpb2thLml3YXRlLmpwIiwibmlub2hlLml3YXRlLmpwIiwibm9kYS5pd2F0ZS5qcCIsIm9mdW5hdG8uaXdhdGUuanAiLCJvc2h1Lml3YXRlLmpwIiwib3RzdWNoaS5pd2F0ZS5qcCIsInJpa3V6ZW50YWthdGEuaXdhdGUuanAiLCJzaGl3''@;'; put 'put ''YS5pd2F0ZS5qcCIsInNoaXp1a3Vpc2hpLml3YXRlLmpwIiwic3VtaXRhLml3YXRlLmpwIiwidGFub2hhdGEuaXdhdGUuanAiLCJ0b25vLml3YXRlLmpwIiwieWFoYWJhLml3YXRlLmpwIiwieWFtYWRhLml3YXRlLmpwIiwiYXlhZ2F3YS5rYWdhd2EuanAiLCJoaWdhc2hpa2FnYXdhLmthZ2F3''@;'; put 'put ''YS5qcCIsImthbm9uamkua2FnYXdhLmpwIiwia290b2hpcmEua2FnYXdhLmpwIiwibWFubm8ua2FnYXdhLmpwIiwibWFydWdhbWUua2FnYXdhLmpwIiwibWl0b3lvLmthZ2F3YS5qcCIsIm5hb3NoaW1hLmthZ2F3YS5qcCIsInNhbnVraS5rYWdhd2EuanAiLCJ0YWRvdHN1LmthZ2F3YS5qcCIs''@;'; put 'put ''InRha2FtYXRzdS5rYWdhd2EuanAiLCJ0b25vc2hvLmthZ2F3YS5qcCIsInVjaGlub21pLmthZ2F3YS5qcCIsInV0YXp1LmthZ2F3YS5qcCIsInplbnRzdWppLmthZ2F3YS5qcCIsImFrdW5lLmthZ29zaGltYS5qcCIsImFtYW1pLmthZ29zaGltYS5qcCIsImhpb2tpLmthZ29zaGltYS5qcCIs''@;'; put 'put ''ImlzYS5rYWdvc2hpbWEuanAiLCJpc2VuLmthZ29zaGltYS5qcCIsIml6dW1pLmthZ29zaGltYS5qcCIsImthZ29zaGltYS5rYWdvc2hpbWEuanAiLCJrYW5veWEua2Fnb3NoaW1hLmpwIiwia2F3YW5hYmUua2Fnb3NoaW1hLmpwIiwia2lua28ua2Fnb3NoaW1hLmpwIiwia291eWFtYS5rYWdv''@;'; put 'put ''c2hpbWEuanAiLCJtYWt1cmF6YWtpLmthZ29zaGltYS5qcCIsIm1hdHN1bW90by5rYWdvc2hpbWEuanAiLCJtaW5hbWl0YW5lLmthZ29zaGltYS5qcCIsIm5ha2F0YW5lLmthZ29zaGltYS5qcCIsIm5pc2hpbm9vbW90ZS5rYWdvc2hpbWEuanAiLCJzYXRzdW1hc2VuZGFpLmthZ29zaGltYS5q''@;'; put 'put ''cCIsInNvby5rYWdvc2hpbWEuanAiLCJ0YXJ1bWl6dS5rYWdvc2hpbWEuanAiLCJ5dXN1aS5rYWdvc2hpbWEuanAiLCJhaWthd2Eua2FuYWdhd2EuanAiLCJhdHN1Z2kua2FuYWdhd2EuanAiLCJheWFzZS5rYW5hZ2F3YS5qcCIsImNoaWdhc2FraS5rYW5hZ2F3YS5qcCIsImViaW5hLmthbmFn''@;'; put 'put ''YXdhLmpwIiwiZnVqaXNhd2Eua2FuYWdhd2EuanAiLCJoYWRhbm8ua2FuYWdhd2EuanAiLCJoYWtvbmUua2FuYWdhd2EuanAiLCJoaXJhdHN1a2Eua2FuYWdhd2EuanAiLCJpc2VoYXJhLmthbmFnYXdhLmpwIiwia2Fpc2VpLmthbmFnYXdhLmpwIiwia2FtYWt1cmEua2FuYWdhd2EuanAiLCJr''@;'; put 'put ''aXlva2F3YS5rYW5hZ2F3YS5qcCIsIm1hdHN1ZGEua2FuYWdhd2EuanAiLCJtaW5hbWlhc2hpZ2FyYS5rYW5hZ2F3YS5qcCIsIm1pdXJhLmthbmFnYXdhLmpwIiwibmFrYWkua2FuYWdhd2EuanAiLCJuaW5vbWl5YS5rYW5hZ2F3YS5qcCIsIm9kYXdhcmEua2FuYWdhd2EuanAiLCJvaS5rYW5h''@;'; put 'put ''Z2F3YS5qcCIsIm9pc28ua2FuYWdhd2EuanAiLCJzYWdhbWloYXJhLmthbmFnYXdhLmpwIiwic2FtdWthd2Eua2FuYWdhd2EuanAiLCJ0c3VrdWkua2FuYWdhd2EuanAiLCJ5YW1ha2l0YS5rYW5hZ2F3YS5qcCIsInlhbWF0by5rYW5hZ2F3YS5qcCIsInlva29zdWthLmthbmFnYXdhLmpwIiwi''@;'; put 'put ''eXVnYXdhcmEua2FuYWdhd2EuanAiLCJ6YW1hLmthbmFnYXdhLmpwIiwienVzaGkua2FuYWdhd2EuanAiLCJha2kua29jaGkuanAiLCJnZWlzZWkua29jaGkuanAiLCJoaWRha2Eua29jaGkuanAiLCJoaWdhc2hpdHN1bm8ua29jaGkuanAiLCJpbm8ua29jaGkuanAiLCJrYWdhbWkua29jaGku''@;'; put 'put ''anAiLCJrYW1pLmtvY2hpLmpwIiwia2l0YWdhd2Eua29jaGkuanAiLCJrb2NoaS5rb2NoaS5qcCIsIm1paGFyYS5rb2NoaS5qcCIsIm1vdG95YW1hLmtvY2hpLmpwIiwibXVyb3RvLmtvY2hpLmpwIiwibmFoYXJpLmtvY2hpLmpwIiwibmFrYW11cmEua29jaGkuanAiLCJuYW5rb2t1LmtvY2hp''@;'; put 'put ''LmpwIiwibmlzaGl0b3NhLmtvY2hpLmpwIiwibml5b2RvZ2F3YS5rb2NoaS5qcCIsIm9jaGkua29jaGkuanAiLCJva2F3YS5rb2NoaS5qcCIsIm90b3lvLmtvY2hpLmpwIiwib3RzdWtpLmtvY2hpLmpwIiwic2FrYXdhLmtvY2hpLmpwIiwic3VrdW1vLmtvY2hpLmpwIiwic3VzYWtpLmtvY2hp''@;'; put 'put ''LmpwIiwidG9zYS5rb2NoaS5qcCIsInRvc2FzaGltaXp1LmtvY2hpLmpwIiwidG95by5rb2NoaS5qcCIsInRzdW5vLmtvY2hpLmpwIiwidW1hamkua29jaGkuanAiLCJ5YXN1ZGEua29jaGkuanAiLCJ5dXN1aGFyYS5rb2NoaS5qcCIsImFtYWt1c2Eua3VtYW1vdG8uanAiLCJhcmFvLmt1bWFt''@;'; put 'put ''b3RvLmpwIiwiYXNvLmt1bWFtb3RvLmpwIiwiY2hveW8ua3VtYW1vdG8uanAiLCJneW9rdXRvLmt1bWFtb3RvLmpwIiwia2FtaWFtYWt1c2Eua3VtYW1vdG8uanAiLCJraWt1Y2hpLmt1bWFtb3RvLmpwIiwia3VtYW1vdG8ua3VtYW1vdG8uanAiLCJtYXNoaWtpLmt1bWFtb3RvLmpwIiwibWlm''@;'; put 'put ''dW5lLmt1bWFtb3RvLmpwIiwibWluYW1hdGEua3VtYW1vdG8uanAiLCJtaW5hbWlvZ3VuaS5rdW1hbW90by5qcCIsIm5hZ2FzdS5rdW1hbW90by5qcCIsIm5pc2hpaGFyYS5rdW1hbW90by5qcCIsIm9ndW5pLmt1bWFtb3RvLmpwIiwib3p1Lmt1bWFtb3RvLmpwIiwic3Vtb3RvLmt1bWFtb3Rv''@;'; put 'put ''LmpwIiwidGFrYW1vcmkua3VtYW1vdG8uanAiLCJ1a2kua3VtYW1vdG8uanAiLCJ1dG8ua3VtYW1vdG8uanAiLCJ5YW1hZ2Eua3VtYW1vdG8uanAiLCJ5YW1hdG8ua3VtYW1vdG8uanAiLCJ5YXRzdXNoaXJvLmt1bWFtb3RvLmpwIiwiYXlhYmUua3lvdG8uanAiLCJmdWt1Y2hpeWFtYS5reW90''@;'; put 'put ''by5qcCIsImhpZ2FzaGl5YW1hLmt5b3RvLmpwIiwiaWRlLmt5b3RvLmpwIiwiaW5lLmt5b3RvLmpwIiwiam95by5reW90by5qcCIsImthbWVva2Eua3lvdG8uanAiLCJrYW1vLmt5b3RvLmpwIiwia2l0YS5reW90by5qcCIsImtpenUua3lvdG8uanAiLCJrdW1peWFtYS5reW90by5qcCIsImt5''@;'; put 'put ''b3RhbWJhLmt5b3RvLmpwIiwia3lvdGFuYWJlLmt5b3RvLmpwIiwia3lvdGFuZ28ua3lvdG8uanAiLCJtYWl6dXJ1Lmt5b3RvLmpwIiwibWluYW1pLmt5b3RvLmpwIiwibWluYW1peWFtYXNoaXJvLmt5b3RvLmpwIiwibWl5YXp1Lmt5b3RvLmpwIiwibXVrby5reW90by5qcCIsIm5hZ2Fva2Fr''@;'; put 'put ''eW8ua3lvdG8uanAiLCJuYWthZ3lvLmt5b3RvLmpwIiwibmFudGFuLmt5b3RvLmpwIiwib3lhbWF6YWtpLmt5b3RvLmpwIiwic2FreW8ua3lvdG8uanAiLCJzZWlrYS5reW90by5qcCIsInRhbmFiZS5reW90by5qcCIsInVqaS5reW90by5qcCIsInVqaXRhd2FyYS5reW90by5qcCIsIndhenVr''@;'; put 'put ''YS5reW90by5qcCIsInlhbWFzaGluYS5reW90by5qcCIsInlhd2F0YS5reW90by5qcCIsImFzYWhpLm1pZS5qcCIsImluYWJlLm1pZS5qcCIsImlzZS5taWUuanAiLCJrYW1leWFtYS5taWUuanAiLCJrYXdhZ29lLm1pZS5qcCIsImtpaG8ubWllLmpwIiwia2lzb3Nha2kubWllLmpwIiwia2l3''@;'; put 'put ''YS5taWUuanAiLCJrb21vbm8ubWllLmpwIiwia3VtYW5vLm1pZS5qcCIsImt1d2FuYS5taWUuanAiLCJtYXRzdXNha2EubWllLmpwIiwibWVpd2EubWllLmpwIiwibWloYW1hLm1pZS5qcCIsIm1pbmFtaWlzZS5taWUuanAiLCJtaXN1Z2kubWllLmpwIiwibWl5YW1hLm1pZS5qcCIsIm5hYmFy''@;'; put 'put ''aS5taWUuanAiLCJzaGltYS5taWUuanAiLCJzdXp1a2EubWllLmpwIiwidGFkby5taWUuanAiLCJ0YWlraS5taWUuanAiLCJ0YWtpLm1pZS5qcCIsInRhbWFraS5taWUuanAiLCJ0b2JhLm1pZS5qcCIsInRzdS5taWUuanAiLCJ1ZG9uby5taWUuanAiLCJ1cmVzaGluby5taWUuanAiLCJ3YXRh''@;'; put 'put ''cmFpLm1pZS5qcCIsInlva2thaWNoaS5taWUuanAiLCJmdXJ1a2F3YS5taXlhZ2kuanAiLCJoaWdhc2hpbWF0c3VzaGltYS5taXlhZ2kuanAiLCJpc2hpbm9tYWtpLm1peWFnaS5qcCIsIml3YW51bWEubWl5YWdpLmpwIiwia2FrdWRhLm1peWFnaS5qcCIsImthbWkubWl5YWdpLmpwIiwia2F3''@;'; put 'put ''YXNha2kubWl5YWdpLmpwIiwibWFydW1vcmkubWl5YWdpLmpwIiwibWF0c3VzaGltYS5taXlhZ2kuanAiLCJtaW5hbWlzYW5yaWt1Lm1peWFnaS5qcCIsIm1pc2F0by5taXlhZ2kuanAiLCJtdXJhdGEubWl5YWdpLmpwIiwibmF0b3JpLm1peWFnaS5qcCIsIm9nYXdhcmEubWl5YWdpLmpwIiwi''@;'; put 'put ''b2hpcmEubWl5YWdpLmpwIiwib25hZ2F3YS5taXlhZ2kuanAiLCJvc2FraS5taXlhZ2kuanAiLCJyaWZ1Lm1peWFnaS5qcCIsInNlbWluZS5taXlhZ2kuanAiLCJzaGliYXRhLm1peWFnaS5qcCIsInNoaWNoaWthc2h1a3UubWl5YWdpLmpwIiwic2hpa2FtYS5taXlhZ2kuanAiLCJzaGlvZ2Ft''@;'; put 'put ''YS5taXlhZ2kuanAiLCJzaGlyb2lzaGkubWl5YWdpLmpwIiwidGFnYWpvLm1peWFnaS5qcCIsInRhaXdhLm1peWFnaS5qcCIsInRvbWUubWl5YWdpLmpwIiwidG9taXlhLm1peWFnaS5qcCIsIndha3V5YS5taXlhZ2kuanAiLCJ3YXRhcmkubWl5YWdpLmpwIiwieWFtYW1vdG8ubWl5YWdpLmpw''@;'; put 'put ''IiwiemFvLm1peWFnaS5qcCIsImF5YS5taXlhemFraS5qcCIsImViaW5vLm1peWF6YWtpLmpwIiwiZ29rYXNlLm1peWF6YWtpLmpwIiwiaHl1Z2EubWl5YXpha2kuanAiLCJrYWRvZ2F3YS5taXlhemFraS5qcCIsImthd2FtaW5hbWkubWl5YXpha2kuanAiLCJraWpvLm1peWF6YWtpLmpwIiwi''@;'; put 'put ''a2l0YWdhd2EubWl5YXpha2kuanAiLCJraXRha2F0YS5taXlhemFraS5qcCIsImtpdGF1cmEubWl5YXpha2kuanAiLCJrb2JheWFzaGkubWl5YXpha2kuanAiLCJrdW5pdG9taS5taXlhemFraS5qcCIsImt1c2hpbWEubWl5YXpha2kuanAiLCJtaW1hdGEubWl5YXpha2kuanAiLCJtaXlha29u''@;'; put 'put ''b2pvLm1peWF6YWtpLmpwIiwibWl5YXpha2kubWl5YXpha2kuanAiLCJtb3JvdHN1a2EubWl5YXpha2kuanAiLCJuaWNoaW5hbi5taXlhemFraS5qcCIsIm5pc2hpbWVyYS5taXlhemFraS5qcCIsIm5vYmVva2EubWl5YXpha2kuanAiLCJzYWl0by5taXlhemFraS5qcCIsInNoaWliYS5taXlh''@;'; put 'put ''emFraS5qcCIsInNoaW50b21pLm1peWF6YWtpLmpwIiwidGFrYWhhcnUubWl5YXpha2kuanAiLCJ0YWthbmFiZS5taXlhemFraS5qcCIsInRha2F6YWtpLm1peWF6YWtpLmpwIiwidHN1bm8ubWl5YXpha2kuanAiLCJhY2hpLm5hZ2Fuby5qcCIsImFnZW1hdHN1Lm5hZ2Fuby5qcCIsImFuYW4u''@;'; put 'put ''bmFnYW5vLmpwIiwiYW9raS5uYWdhbm8uanAiLCJhc2FoaS5uYWdhbm8uanAiLCJhenVtaW5vLm5hZ2Fuby5qcCIsImNoaWt1aG9rdS5uYWdhbm8uanAiLCJjaGlrdW1hLm5hZ2Fuby5qcCIsImNoaW5vLm5hZ2Fuby5qcCIsImZ1amltaS5uYWdhbm8uanAiLCJoYWt1YmEubmFnYW5vLmpwIiwi''@;'; put 'put ''aGFyYS5uYWdhbm8uanAiLCJoaXJheWEubmFnYW5vLmpwIiwiaWlkYS5uYWdhbm8uanAiLCJpaWppbWEubmFnYW5vLmpwIiwiaWl5YW1hLm5hZ2Fuby5qcCIsImlpenVuYS5uYWdhbm8uanAiLCJpa2VkYS5uYWdhbm8uanAiLCJpa3VzYWthLm5hZ2Fuby5qcCIsImluYS5uYWdhbm8uanAiLCJr''@;'; put 'put ''YXJ1aXphd2EubmFnYW5vLmpwIiwia2F3YWthbWkubmFnYW5vLmpwIiwia2lzby5uYWdhbm8uanAiLCJraXNvZnVrdXNoaW1hLm5hZ2Fuby5qcCIsImtpdGFhaWtpLm5hZ2Fuby5qcCIsImtvbWFnYW5lLm5hZ2Fuby5qcCIsImtvbW9yby5uYWdhbm8uanAiLCJtYXRzdWthd2EubmFnYW5vLmpw''@;'; put 'put ''IiwibWF0c3Vtb3RvLm5hZ2Fuby5qcCIsIm1pYXNhLm5hZ2Fuby5qcCIsIm1pbmFtaWFpa2kubmFnYW5vLmpwIiwibWluYW1pbWFraS5uYWdhbm8uanAiLCJtaW5hbWltaW5vd2EubmFnYW5vLmpwIiwibWlub3dhLm5hZ2Fuby5qcCIsIm1peWFkYS5uYWdhbm8uanAiLCJtaXlvdGEubmFnYW5v''@;'; put 'put ''LmpwIiwibW9jaGl6dWtpLm5hZ2Fuby5qcCIsIm5hZ2Fuby5uYWdhbm8uanAiLCJuYWdhd2EubmFnYW5vLmpwIiwibmFnaXNvLm5hZ2Fuby5qcCIsIm5ha2FnYXdhLm5hZ2Fuby5qcCIsIm5ha2Fuby5uYWdhbm8uanAiLCJub3phd2FvbnNlbi5uYWdhbm8uanAiLCJvYnVzZS5uYWdhbm8uanAi''@;'; put 'put ''LCJvZ2F3YS5uYWdhbm8uanAiLCJva2F5YS5uYWdhbm8uanAiLCJvbWFjaGkubmFnYW5vLmpwIiwib21pLm5hZ2Fuby5qcCIsIm9va3V3YS5uYWdhbm8uanAiLCJvb3NoaWthLm5hZ2Fuby5qcCIsIm90YWtpLm5hZ2Fuby5qcCIsIm90YXJpLm5hZ2Fuby5qcCIsInNha2FlLm5hZ2Fuby5qcCIs''@;'; put 'put ''InNha2FraS5uYWdhbm8uanAiLCJzYWt1Lm5hZ2Fuby5qcCIsInNha3Voby5uYWdhbm8uanAiLCJzaGltb3N1d2EubmFnYW5vLmpwIiwic2hpbmFub21hY2hpLm5hZ2Fuby5qcCIsInNoaW9qaXJpLm5hZ2Fuby5qcCIsInN1d2EubmFnYW5vLmpwIiwic3V6YWthLm5hZ2Fuby5qcCIsInRha2Fn''@;'; put 'put ''aS5uYWdhbm8uanAiLCJ0YWthbW9yaS5uYWdhbm8uanAiLCJ0YWtheWFtYS5uYWdhbm8uanAiLCJ0YXRlc2hpbmEubmFnYW5vLmpwIiwidGF0c3Vuby5uYWdhbm8uanAiLCJ0b2dha3VzaGkubmFnYW5vLmpwIiwidG9ndXJhLm5hZ2Fuby5qcCIsInRvbWkubmFnYW5vLmpwIiwidWVkYS5uYWdh''@;'; put 'put ''bm8uanAiLCJ3YWRhLm5hZ2Fuby5qcCIsInlhbWFnYXRhLm5hZ2Fuby5qcCIsInlhbWFub3VjaGkubmFnYW5vLmpwIiwieWFzYWthLm5hZ2Fuby5qcCIsInlhc3Vva2EubmFnYW5vLmpwIiwiY2hpaml3YS5uYWdhc2FraS5qcCIsImZ1dHN1Lm5hZ2FzYWtpLmpwIiwiZ290by5uYWdhc2FraS5q''@;'; put 'put ''cCIsImhhc2FtaS5uYWdhc2FraS5qcCIsImhpcmFkby5uYWdhc2FraS5qcCIsImlraS5uYWdhc2FraS5qcCIsImlzYWhheWEubmFnYXNha2kuanAiLCJrYXdhdGFuYS5uYWdhc2FraS5qcCIsImt1Y2hpbm90c3UubmFnYXNha2kuanAiLCJtYXRzdXVyYS5uYWdhc2FraS5qcCIsIm5hZ2FzYWtp''@;'; put 'put ''Lm5hZ2FzYWtpLmpwIiwib2JhbWEubmFnYXNha2kuanAiLCJvbXVyYS5uYWdhc2FraS5qcCIsIm9zZXRvLm5hZ2FzYWtpLmpwIiwic2Fpa2FpLm5hZ2FzYWtpLmpwIiwic2FzZWJvLm5hZ2FzYWtpLmpwIiwic2VpaGkubmFnYXNha2kuanAiLCJzaGltYWJhcmEubmFnYXNha2kuanAiLCJzaGlu''@;'; put 'put ''a2FtaWdvdG8ubmFnYXNha2kuanAiLCJ0b2dpdHN1Lm5hZ2FzYWtpLmpwIiwidHN1c2hpbWEubmFnYXNha2kuanAiLCJ1bnplbi5uYWdhc2FraS5qcCIsImFuZG8ubmFyYS5qcCIsImdvc2UubmFyYS5qcCIsImhlZ3VyaS5uYXJhLmpwIiwiaGlnYXNoaXlvc2hpbm8ubmFyYS5qcCIsImlrYXJ1''@;'; put 'put ''Z2EubmFyYS5qcCIsImlrb21hLm5hcmEuanAiLCJrYW1pa2l0YXlhbWEubmFyYS5qcCIsImthbm1ha2kubmFyYS5qcCIsImthc2hpYmEubmFyYS5qcCIsImthc2hpaGFyYS5uYXJhLmpwIiwia2F0c3VyYWdpLm5hcmEuanAiLCJrYXdhaS5uYXJhLmpwIiwia2F3YWthbWkubmFyYS5qcCIsImth''@;'; put 'put ''d2FuaXNoaS5uYXJhLmpwIiwia29yeW8ubmFyYS5qcCIsImt1cm90YWtpLm5hcmEuanAiLCJtaXRzdWUubmFyYS5qcCIsIm1peWFrZS5uYXJhLmpwIiwibmFyYS5uYXJhLmpwIiwibm9zZWdhd2EubmFyYS5qcCIsIm9qaS5uYXJhLmpwIiwib3VkYS5uYXJhLmpwIiwib3lvZG8ubmFyYS5qcCIs''@;'; put 'put ''InNha3VyYWkubmFyYS5qcCIsInNhbmdvLm5hcmEuanAiLCJzaGltb2ljaGkubmFyYS5qcCIsInNoaW1va2l0YXlhbWEubmFyYS5qcCIsInNoaW5qby5uYXJhLmpwIiwic29uaS5uYXJhLmpwIiwidGFrYXRvcmkubmFyYS5qcCIsInRhd2FyYW1vdG8ubmFyYS5qcCIsInRlbmthd2EubmFyYS5q''@;'; put 'put ''cCIsInRlbnJpLm5hcmEuanAiLCJ1ZGEubmFyYS5qcCIsInlhbWF0b2tvcml5YW1hLm5hcmEuanAiLCJ5YW1hdG90YWthZGEubmFyYS5qcCIsInlhbWF6b2UubmFyYS5qcCIsInlvc2hpbm8ubmFyYS5qcCIsImFnYS5uaWlnYXRhLmpwIiwiYWdhbm8ubmlpZ2F0YS5qcCIsImdvc2VuLm5paWdh''@;'; put 'put ''dGEuanAiLCJpdG9pZ2F3YS5uaWlnYXRhLmpwIiwiaXp1bW96YWtpLm5paWdhdGEuanAiLCJqb2V0c3UubmlpZ2F0YS5qcCIsImthbW8ubmlpZ2F0YS5qcCIsImthcml3YS5uaWlnYXRhLmpwIiwia2FzaGl3YXpha2kubmlpZ2F0YS5qcCIsIm1pbmFtaXVvbnVtYS5uaWlnYXRhLmpwIiwibWl0''@;'; put 'put ''c3VrZS5uaWlnYXRhLmpwIiwibXVpa2EubmlpZ2F0YS5qcCIsIm11cmFrYW1pLm5paWdhdGEuanAiLCJteW9rby5uaWlnYXRhLmpwIiwibmFnYW9rYS5uaWlnYXRhLmpwIiwibmlpZ2F0YS5uaWlnYXRhLmpwIiwib2ppeWEubmlpZ2F0YS5qcCIsIm9taS5uaWlnYXRhLmpwIiwic2Fkby5uaWln''@;'; put 'put ''YXRhLmpwIiwic2Fuam8ubmlpZ2F0YS5qcCIsInNlaXJvLm5paWdhdGEuanAiLCJzZWlyb3UubmlpZ2F0YS5qcCIsInNla2lrYXdhLm5paWdhdGEuanAiLCJzaGliYXRhLm5paWdhdGEuanAiLCJ0YWdhbWkubmlpZ2F0YS5qcCIsInRhaW5haS5uaWlnYXRhLmpwIiwidG9jaGlvLm5paWdhdGEu''@;'; put 'put ''anAiLCJ0b2thbWFjaGkubmlpZ2F0YS5qcCIsInRzdWJhbWUubmlpZ2F0YS5qcCIsInRzdW5hbi5uaWlnYXRhLmpwIiwidW9udW1hLm5paWdhdGEuanAiLCJ5YWhpa28ubmlpZ2F0YS5qcCIsInlvaXRhLm5paWdhdGEuanAiLCJ5dXphd2EubmlpZ2F0YS5qcCIsImJlcHB1Lm9pdGEuanAiLCJi''@;'; put 'put ''dW5nb29uby5vaXRhLmpwIiwiYnVuZ290YWthZGEub2l0YS5qcCIsImhhc2FtYS5vaXRhLmpwIiwiaGlqaS5vaXRhLmpwIiwiaGltZXNoaW1hLm9pdGEuanAiLCJoaXRhLm9pdGEuanAiLCJrYW1pdHN1ZS5vaXRhLmpwIiwia29rb25vZS5vaXRhLmpwIiwia3VqdS5vaXRhLmpwIiwia3VuaXNh''@;'; put 'put ''a2kub2l0YS5qcCIsImt1c3Uub2l0YS5qcCIsIm9pdGEub2l0YS5qcCIsInNhaWtpLm9pdGEuanAiLCJ0YWtldGEub2l0YS5qcCIsInRzdWt1bWkub2l0YS5qcCIsInVzYS5vaXRhLmpwIiwidXN1a2kub2l0YS5qcCIsInl1ZnUub2l0YS5qcCIsImFrYWl3YS5va2F5YW1hLmpwIiwiYXNha3Vj''@;'; put 'put ''aGkub2theWFtYS5qcCIsImJpemVuLm9rYXlhbWEuanAiLCJoYXlhc2hpbWEub2theWFtYS5qcCIsImliYXJhLm9rYXlhbWEuanAiLCJrYWdhbWluby5va2F5YW1hLmpwIiwia2FzYW9rYS5va2F5YW1hLmpwIiwia2liaWNodW8ub2theWFtYS5qcCIsImt1bWVuYW4ub2theWFtYS5qcCIsImt1''@;'; put 'put ''cmFzaGlraS5va2F5YW1hLmpwIiwibWFuaXdhLm9rYXlhbWEuanAiLCJtaXNha2kub2theWFtYS5qcCIsIm5hZ2kub2theWFtYS5qcCIsIm5paW1pLm9rYXlhbWEuanAiLCJuaXNoaWF3YWt1cmEub2theWFtYS5qcCIsIm9rYXlhbWEub2theWFtYS5qcCIsInNhdG9zaG8ub2theWFtYS5qcCIs''@;'; put 'put ''InNldG91Y2hpLm9rYXlhbWEuanAiLCJzaGluam8ub2theWFtYS5qcCIsInNob28ub2theWFtYS5qcCIsInNvamEub2theWFtYS5qcCIsInRha2FoYXNoaS5va2F5YW1hLmpwIiwidGFtYW5vLm9rYXlhbWEuanAiLCJ0c3V5YW1hLm9rYXlhbWEuanAiLCJ3YWtlLm9rYXlhbWEuanAiLCJ5YWth''@;'; put 'put ''Z2Uub2theWFtYS5qcCIsImFndW5pLm9raW5hd2EuanAiLCJnaW5vd2FuLm9raW5hd2EuanAiLCJnaW5vemEub2tpbmF3YS5qcCIsImd1c2hpa2FtaS5va2luYXdhLmpwIiwiaGFlYmFydS5va2luYXdhLmpwIiwiaGlnYXNoaS5va2luYXdhLmpwIiwiaGlyYXJhLm9raW5hd2EuanAiLCJpaGV5''@;'; put 'put ''YS5va2luYXdhLmpwIiwiaXNoaWdha2kub2tpbmF3YS5qcCIsImlzaGlrYXdhLm9raW5hd2EuanAiLCJpdG9tYW4ub2tpbmF3YS5qcCIsIml6ZW5hLm9raW5hd2EuanAiLCJrYWRlbmEub2tpbmF3YS5qcCIsImtpbi5va2luYXdhLmpwIiwia2l0YWRhaXRvLm9raW5hd2EuanAiLCJraXRhbmFr''@;'; put 'put ''YWd1c3VrdS5va2luYXdhLmpwIiwia3VtZWppbWEub2tpbmF3YS5qcCIsImt1bmlnYW1pLm9raW5hd2EuanAiLCJtaW5hbWlkYWl0by5va2luYXdhLmpwIiwibW90b2J1Lm9raW5hd2EuanAiLCJuYWdvLm9raW5hd2EuanAiLCJuYWhhLm9raW5hd2EuanAiLCJuYWthZ3VzdWt1Lm9raW5hd2Eu''@;'; put 'put ''anAiLCJuYWtpamluLm9raW5hd2EuanAiLCJuYW5qby5va2luYXdhLmpwIiwibmlzaGloYXJhLm9raW5hd2EuanAiLCJvZ2ltaS5va2luYXdhLmpwIiwib2tpbmF3YS5va2luYXdhLmpwIiwib25uYS5va2luYXdhLmpwIiwic2hpbW9qaS5va2luYXdhLmpwIiwidGFrZXRvbWkub2tpbmF3YS5q''@;'; put 'put ''cCIsInRhcmFtYS5va2luYXdhLmpwIiwidG9rYXNoaWtpLm9raW5hd2EuanAiLCJ0b21pZ3VzdWt1Lm9raW5hd2EuanAiLCJ0b25ha2kub2tpbmF3YS5qcCIsInVyYXNvZS5va2luYXdhLmpwIiwidXJ1bWEub2tpbmF3YS5qcCIsInlhZXNlLm9raW5hd2EuanAiLCJ5b21pdGFuLm9raW5hd2Eu''@;'; put 'put ''anAiLCJ5b25hYmFydS5va2luYXdhLmpwIiwieW9uYWd1bmkub2tpbmF3YS5qcCIsInphbWFtaS5va2luYXdhLmpwIiwiYWJlbm8ub3Nha2EuanAiLCJjaGloYXlhYWthc2FrYS5vc2FrYS5qcCIsImNodW8ub3Nha2EuanAiLCJkYWl0by5vc2FrYS5qcCIsImZ1amlpZGVyYS5vc2FrYS5qcCIs''@;'; put 'put ''ImhhYmlraW5vLm9zYWthLmpwIiwiaGFubmFuLm9zYWthLmpwIiwiaGlnYXNoaW9zYWthLm9zYWthLmpwIiwiaGlnYXNoaXN1bWl5b3NoaS5vc2FrYS5qcCIsImhpZ2FzaGl5b2RvZ2F3YS5vc2FrYS5qcCIsImhpcmFrYXRhLm9zYWthLmpwIiwiaWJhcmFraS5vc2FrYS5qcCIsImlrZWRhLm9z''@;'; put 'put ''YWthLmpwIiwiaXp1bWkub3Nha2EuanAiLCJpenVtaW90c3Uub3Nha2EuanAiLCJpenVtaXNhbm8ub3Nha2EuanAiLCJrYWRvbWEub3Nha2EuanAiLCJrYWl6dWthLm9zYWthLmpwIiwia2FuYW4ub3Nha2EuanAiLCJrYXNoaXdhcmEub3Nha2EuanAiLCJrYXRhbm8ub3Nha2EuanAiLCJrYXdh''@;'; put 'put ''Y2hpbmFnYW5vLm9zYWthLmpwIiwia2lzaGl3YWRhLm9zYWthLmpwIiwia2l0YS5vc2FrYS5qcCIsImt1bWF0b3JpLm9zYWthLmpwIiwibWF0c3ViYXJhLm9zYWthLmpwIiwibWluYXRvLm9zYWthLmpwIiwibWlub2gub3Nha2EuanAiLCJtaXNha2kub3Nha2EuanAiLCJtb3JpZ3VjaGkub3Nh''@;'; put 'put ''a2EuanAiLCJuZXlhZ2F3YS5vc2FrYS5qcCIsIm5pc2hpLm9zYWthLmpwIiwibm9zZS5vc2FrYS5qcCIsIm9zYWthc2F5YW1hLm9zYWthLmpwIiwic2FrYWkub3Nha2EuanAiLCJzYXlhbWEub3Nha2EuanAiLCJzZW5uYW4ub3Nha2EuanAiLCJzZXR0c3Uub3Nha2EuanAiLCJzaGlqb25hd2F0''@;'; put 'put ''ZS5vc2FrYS5qcCIsInNoaW1hbW90by5vc2FrYS5qcCIsInN1aXRhLm9zYWthLmpwIiwidGFkYW9rYS5vc2FrYS5qcCIsInRhaXNoaS5vc2FrYS5qcCIsInRhamlyaS5vc2FrYS5qcCIsInRha2Fpc2hpLm9zYWthLmpwIiwidGFrYXRzdWtpLm9zYWthLmpwIiwidG9uZGFiYXlhc2hpLm9zYWth''@;'; put 'put ''LmpwIiwidG95b25ha2Eub3Nha2EuanAiLCJ0b3lvbm8ub3Nha2EuanAiLCJ5YW8ub3Nha2EuanAiLCJhcmlha2Uuc2FnYS5qcCIsImFyaXRhLnNhZ2EuanAiLCJmdWt1ZG9taS5zYWdhLmpwIiwiZ2Vua2FpLnNhZ2EuanAiLCJoYW1hdGFtYS5zYWdhLmpwIiwiaGl6ZW4uc2FnYS5qcCIsImlt''@;'; put 'put ''YXJpLnNhZ2EuanAiLCJrYW1pbWluZS5zYWdhLmpwIiwia2FuemFraS5zYWdhLmpwIiwia2FyYXRzdS5zYWdhLmpwIiwia2FzaGltYS5zYWdhLmpwIiwia2l0YWdhdGEuc2FnYS5qcCIsImtpdGFoYXRhLnNhZ2EuanAiLCJraXlhbWEuc2FnYS5qcCIsImtvdWhva3Uuc2FnYS5qcCIsImt5dXJh''@;'; put 'put ''Z2kuc2FnYS5qcCIsIm5pc2hpYXJpdGEuc2FnYS5qcCIsIm9naS5zYWdhLmpwIiwib21hY2hpLnNhZ2EuanAiLCJvdWNoaS5zYWdhLmpwIiwic2FnYS5zYWdhLmpwIiwic2hpcm9pc2hpLnNhZ2EuanAiLCJ0YWt1LnNhZ2EuanAiLCJ0YXJhLnNhZ2EuanAiLCJ0b3N1LnNhZ2EuanAiLCJ5b3No''@;'; put 'put ''aW5vZ2FyaS5zYWdhLmpwIiwiYXJha2F3YS5zYWl0YW1hLmpwIiwiYXNha2Euc2FpdGFtYS5qcCIsImNoaWNoaWJ1LnNhaXRhbWEuanAiLCJmdWppbWkuc2FpdGFtYS5qcCIsImZ1amltaW5vLnNhaXRhbWEuanAiLCJmdWtheWEuc2FpdGFtYS5qcCIsImhhbm5vLnNhaXRhbWEuanAiLCJoYW55''@;'; put 'put ''dS5zYWl0YW1hLmpwIiwiaGFzdWRhLnNhaXRhbWEuanAiLCJoYXRvZ2F5YS5zYWl0YW1hLmpwIiwiaGF0b3lhbWEuc2FpdGFtYS5qcCIsImhpZGFrYS5zYWl0YW1hLmpwIiwiaGlnYXNoaWNoaWNoaWJ1LnNhaXRhbWEuanAiLCJoaWdhc2hpbWF0c3V5YW1hLnNhaXRhbWEuanAiLCJob25qby5z''@;'; put 'put ''YWl0YW1hLmpwIiwiaW5hLnNhaXRhbWEuanAiLCJpcnVtYS5zYWl0YW1hLmpwIiwiaXdhdHN1a2kuc2FpdGFtYS5qcCIsImthbWlpenVtaS5zYWl0YW1hLmpwIiwia2FtaWthd2Euc2FpdGFtYS5qcCIsImthbWlzYXRvLnNhaXRhbWEuanAiLCJrYXN1a2FiZS5zYWl0YW1hLmpwIiwia2F3YWdv''@;'; put 'put ''ZS5zYWl0YW1hLmpwIiwia2F3YWd1Y2hpLnNhaXRhbWEuanAiLCJrYXdhamltYS5zYWl0YW1hLmpwIiwia2F6by5zYWl0YW1hLmpwIiwia2l0YW1vdG8uc2FpdGFtYS5qcCIsImtvc2hpZ2F5YS5zYWl0YW1hLmpwIiwia291bm9zdS5zYWl0YW1hLmpwIiwia3VraS5zYWl0YW1hLmpwIiwia3Vt''@;'; put 'put ''YWdheWEuc2FpdGFtYS5qcCIsIm1hdHN1YnVzaGkuc2FpdGFtYS5qcCIsIm1pbmFuby5zYWl0YW1hLmpwIiwibWlzYXRvLnNhaXRhbWEuanAiLCJtaXlhc2hpcm8uc2FpdGFtYS5qcCIsIm1peW9zaGkuc2FpdGFtYS5qcCIsIm1vcm95YW1hLnNhaXRhbWEuanAiLCJuYWdhdG9yby5zYWl0YW1h''@;'; put 'put ''LmpwIiwibmFtZWdhd2Euc2FpdGFtYS5qcCIsIm5paXphLnNhaXRhbWEuanAiLCJvZ2Fuby5zYWl0YW1hLmpwIiwib2dhd2Euc2FpdGFtYS5qcCIsIm9nb3NlLnNhaXRhbWEuanAiLCJva2VnYXdhLnNhaXRhbWEuanAiLCJvbWl5YS5zYWl0YW1hLmpwIiwib3Rha2kuc2FpdGFtYS5qcCIsInJh''@;'; put 'put ''bnphbi5zYWl0YW1hLmpwIiwicnlva2FtaS5zYWl0YW1hLmpwIiwic2FpdGFtYS5zYWl0YW1hLmpwIiwic2FrYWRvLnNhaXRhbWEuanAiLCJzYXR0ZS5zYWl0YW1hLmpwIiwic2F5YW1hLnNhaXRhbWEuanAiLCJzaGlraS5zYWl0YW1hLmpwIiwic2hpcmFva2Euc2FpdGFtYS5qcCIsInNva2Eu''@;'; put 'put ''c2FpdGFtYS5qcCIsInN1Z2l0by5zYWl0YW1hLmpwIiwidG9kYS5zYWl0YW1hLmpwIiwidG9raWdhd2Euc2FpdGFtYS5qcCIsInRva29yb3phd2Euc2FpdGFtYS5qcCIsInRzdXJ1Z2FzaGltYS5zYWl0YW1hLmpwIiwidXJhd2Euc2FpdGFtYS5qcCIsIndhcmFiaS5zYWl0YW1hLmpwIiwieWFz''@;'; put 'put ''aGlvLnNhaXRhbWEuanAiLCJ5b2tvemUuc2FpdGFtYS5qcCIsInlvbm8uc2FpdGFtYS5qcCIsInlvcmlpLnNhaXRhbWEuanAiLCJ5b3NoaWRhLnNhaXRhbWEuanAiLCJ5b3NoaWthd2Euc2FpdGFtYS5qcCIsInlvc2hpbWkuc2FpdGFtYS5qcCIsImFpc2hvLnNoaWdhLmpwIiwiZ2Ftby5zaGln''@;'; put 'put ''YS5qcCIsImhpZ2FzaGlvbWkuc2hpZ2EuanAiLCJoaWtvbmUuc2hpZ2EuanAiLCJrb2thLnNoaWdhLmpwIiwia29uYW4uc2hpZ2EuanAiLCJrb3NlaS5zaGlnYS5qcCIsImtvdG8uc2hpZ2EuanAiLCJrdXNhdHN1LnNoaWdhLmpwIiwibWFpYmFyYS5zaGlnYS5qcCIsIm1vcml5YW1hLnNoaWdh''@;'; put 'put ''LmpwIiwibmFnYWhhbWEuc2hpZ2EuanAiLCJuaXNoaWF6YWkuc2hpZ2EuanAiLCJub3RvZ2F3YS5zaGlnYS5qcCIsIm9taWhhY2hpbWFuLnNoaWdhLmpwIiwib3RzdS5zaGlnYS5qcCIsInJpdHRvLnNoaWdhLmpwIiwicnl1b2guc2hpZ2EuanAiLCJ0YWthc2hpbWEuc2hpZ2EuanAiLCJ0YWth''@;'; put 'put ''dHN1a2kuc2hpZ2EuanAiLCJ0b3JhaGltZS5zaGlnYS5qcCIsInRveW9zYXRvLnNoaWdhLmpwIiwieWFzdS5zaGlnYS5qcCIsImFrYWdpLnNoaW1hbmUuanAiLCJhbWEuc2hpbWFuZS5qcCIsImdvdHN1LnNoaW1hbmUuanAiLCJoYW1hZGEuc2hpbWFuZS5qcCIsImhpZ2FzaGlpenVtby5zaGlt''@;'; put 'put ''YW5lLmpwIiwiaGlrYXdhLnNoaW1hbmUuanAiLCJoaWtpbWkuc2hpbWFuZS5qcCIsIml6dW1vLnNoaW1hbmUuanAiLCJrYWtpbm9raS5zaGltYW5lLmpwIiwibWFzdWRhLnNoaW1hbmUuanAiLCJtYXRzdWUuc2hpbWFuZS5qcCIsIm1pc2F0by5zaGltYW5lLmpwIiwibmlzaGlub3NoaW1hLnNo''@;'; put 'put ''aW1hbmUuanAiLCJvaGRhLnNoaW1hbmUuanAiLCJva2lub3NoaW1hLnNoaW1hbmUuanAiLCJva3VpenVtby5zaGltYW5lLmpwIiwic2hpbWFuZS5zaGltYW5lLmpwIiwidGFtYXl1LnNoaW1hbmUuanAiLCJ0c3V3YW5vLnNoaW1hbmUuanAiLCJ1bm5hbi5zaGltYW5lLmpwIiwieWFrdW1vLnNo''@;'; put 'put ''aW1hbmUuanAiLCJ5YXN1Z2kuc2hpbWFuZS5qcCIsInlhdHN1a2Euc2hpbWFuZS5qcCIsImFyYWkuc2hpenVva2EuanAiLCJhdGFtaS5zaGl6dW9rYS5qcCIsImZ1amkuc2hpenVva2EuanAiLCJmdWppZWRhLnNoaXp1b2thLmpwIiwiZnVqaWthd2Euc2hpenVva2EuanAiLCJmdWppbm9taXlh''@;'; put 'put ''LnNoaXp1b2thLmpwIiwiZnVrdXJvaS5zaGl6dW9rYS5qcCIsImdvdGVtYmEuc2hpenVva2EuanAiLCJoYWliYXJhLnNoaXp1b2thLmpwIiwiaGFtYW1hdHN1LnNoaXp1b2thLmpwIiwiaGlnYXNoaWl6dS5zaGl6dW9rYS5qcCIsIml0by5zaGl6dW9rYS5qcCIsIml3YXRhLnNoaXp1b2thLmpw''@;'; put 'put ''IiwiaXp1LnNoaXp1b2thLmpwIiwiaXp1bm9rdW5pLnNoaXp1b2thLmpwIiwia2FrZWdhd2Euc2hpenVva2EuanAiLCJrYW5uYW1pLnNoaXp1b2thLmpwIiwia2F3YW5laG9uLnNoaXp1b2thLmpwIiwia2F3YXp1LnNoaXp1b2thLmpwIiwia2lrdWdhd2Euc2hpenVva2EuanAiLCJrb3NhaS5z''@;'; put 'put ''aGl6dW9rYS5qcCIsIm1ha2lub2hhcmEuc2hpenVva2EuanAiLCJtYXRzdXpha2kuc2hpenVva2EuanAiLCJtaW5hbWlpenUuc2hpenVva2EuanAiLCJtaXNoaW1hLnNoaXp1b2thLmpwIiwibW9yaW1hY2hpLnNoaXp1b2thLmpwIiwibmlzaGlpenUuc2hpenVva2EuanAiLCJudW1henUuc2hp''@;'; put 'put ''enVva2EuanAiLCJvbWFlemFraS5zaGl6dW9rYS5qcCIsInNoaW1hZGEuc2hpenVva2EuanAiLCJzaGltaXp1LnNoaXp1b2thLmpwIiwic2hpbW9kYS5zaGl6dW9rYS5qcCIsInNoaXp1b2thLnNoaXp1b2thLmpwIiwic3Vzb25vLnNoaXp1b2thLmpwIiwieWFpenUuc2hpenVva2EuanAiLCJ5''@;'; put 'put ''b3NoaWRhLnNoaXp1b2thLmpwIiwiYXNoaWthZ2EudG9jaGlnaS5qcCIsImJhdG8udG9jaGlnaS5qcCIsImhhZ2EudG9jaGlnaS5qcCIsImljaGlrYWkudG9jaGlnaS5qcCIsIml3YWZ1bmUudG9jaGlnaS5qcCIsImthbWlub2thd2EudG9jaGlnaS5qcCIsImthbnVtYS50b2NoaWdpLmpwIiwi''@;'; put 'put ''a2FyYXN1eWFtYS50b2NoaWdpLmpwIiwia3Vyb2lzby50b2NoaWdpLmpwIiwibWFzaGlrby50b2NoaWdpLmpwIiwibWlidS50b2NoaWdpLmpwIiwibW9rYS50b2NoaWdpLmpwIiwibW90ZWdpLnRvY2hpZ2kuanAiLCJuYXN1LnRvY2hpZ2kuanAiLCJuYXN1c2hpb2JhcmEudG9jaGlnaS5qcCIs''@;'; put 'put ''Im5pa2tvLnRvY2hpZ2kuanAiLCJuaXNoaWthdGEudG9jaGlnaS5qcCIsIm5vZ2kudG9jaGlnaS5qcCIsIm9oaXJhLnRvY2hpZ2kuanAiLCJvaHRhd2FyYS50b2NoaWdpLmpwIiwib3lhbWEudG9jaGlnaS5qcCIsInNha3VyYS50b2NoaWdpLmpwIiwic2Fuby50b2NoaWdpLmpwIiwic2hpbW90''@;'; put 'put ''c3VrZS50b2NoaWdpLmpwIiwic2hpb3lhLnRvY2hpZ2kuanAiLCJ0YWthbmV6YXdhLnRvY2hpZ2kuanAiLCJ0b2NoaWdpLnRvY2hpZ2kuanAiLCJ0c3VnYS50b2NoaWdpLmpwIiwidWppaWUudG9jaGlnaS5qcCIsInV0c3Vub21peWEudG9jaGlnaS5qcCIsInlhaXRhLnRvY2hpZ2kuanAiLCJh''@;'; put 'put ''aXp1bWkudG9rdXNoaW1hLmpwIiwiYW5hbi50b2t1c2hpbWEuanAiLCJpY2hpYmEudG9rdXNoaW1hLmpwIiwiaXRhbm8udG9rdXNoaW1hLmpwIiwia2FpbmFuLnRva3VzaGltYS5qcCIsImtvbWF0c3VzaGltYS50b2t1c2hpbWEuanAiLCJtYXRzdXNoaWdlLnRva3VzaGltYS5qcCIsIm1pbWEu''@;'; put 'put ''dG9rdXNoaW1hLmpwIiwibWluYW1pLnRva3VzaGltYS5qcCIsIm1peW9zaGkudG9rdXNoaW1hLmpwIiwibXVnaS50b2t1c2hpbWEuanAiLCJuYWthZ2F3YS50b2t1c2hpbWEuanAiLCJuYXJ1dG8udG9rdXNoaW1hLmpwIiwic2FuYWdvY2hpLnRva3VzaGltYS5qcCIsInNoaXNoaWt1aS50b2t1''@;'; put 'put ''c2hpbWEuanAiLCJ0b2t1c2hpbWEudG9rdXNoaW1hLmpwIiwid2FqaWtpLnRva3VzaGltYS5qcCIsImFkYWNoaS50b2t5by5qcCIsImFraXJ1bm8udG9reW8uanAiLCJha2lzaGltYS50b2t5by5qcCIsImFvZ2FzaGltYS50b2t5by5qcCIsImFyYWthd2EudG9reW8uanAiLCJidW5reW8udG9r''@;'; put 'put ''eW8uanAiLCJjaGl5b2RhLnRva3lvLmpwIiwiY2hvZnUudG9reW8uanAiLCJjaHVvLnRva3lvLmpwIiwiZWRvZ2F3YS50b2t5by5qcCIsImZ1Y2h1LnRva3lvLmpwIiwiZnVzc2EudG9reW8uanAiLCJoYWNoaWpvLnRva3lvLmpwIiwiaGFjaGlvamkudG9reW8uanAiLCJoYW11cmEudG9reW8u''@;'; put 'put ''anAiLCJoaWdhc2hpa3VydW1lLnRva3lvLmpwIiwiaGlnYXNoaW11cmF5YW1hLnRva3lvLmpwIiwiaGlnYXNoaXlhbWF0by50b2t5by5qcCIsImhpbm8udG9reW8uanAiLCJoaW5vZGUudG9reW8uanAiLCJoaW5vaGFyYS50b2t5by5qcCIsImluYWdpLnRva3lvLmpwIiwiaXRhYmFzaGkudG9r''@;'; put 'put ''eW8uanAiLCJrYXRzdXNoaWthLnRva3lvLmpwIiwia2l0YS50b2t5by5qcCIsImtpeW9zZS50b2t5by5qcCIsImtvZGFpcmEudG9reW8uanAiLCJrb2dhbmVpLnRva3lvLmpwIiwia29rdWJ1bmppLnRva3lvLmpwIiwia29tYWUudG9reW8uanAiLCJrb3RvLnRva3lvLmpwIiwia291enVzaGlt''@;'; put 'put ''YS50b2t5by5qcCIsImt1bml0YWNoaS50b2t5by5qcCIsIm1hY2hpZGEudG9reW8uanAiLCJtZWd1cm8udG9reW8uanAiLCJtaW5hdG8udG9reW8uanAiLCJtaXRha2EudG9reW8uanAiLCJtaXp1aG8udG9reW8uanAiLCJtdXNhc2hpbXVyYXlhbWEudG9reW8uanAiLCJtdXNhc2hpbm8udG9r''@;'; put 'put ''eW8uanAiLCJuYWthbm8udG9reW8uanAiLCJuZXJpbWEudG9reW8uanAiLCJvZ2FzYXdhcmEudG9reW8uanAiLCJva3V0YW1hLnRva3lvLmpwIiwib21lLnRva3lvLmpwIiwib3NoaW1hLnRva3lvLmpwIiwib3RhLnRva3lvLmpwIiwic2V0YWdheWEudG9reW8uanAiLCJzaGlidXlhLnRva3lv''@;'; put 'put ''LmpwIiwic2hpbmFnYXdhLnRva3lvLmpwIiwic2hpbmp1a3UudG9reW8uanAiLCJzdWdpbmFtaS50b2t5by5qcCIsInN1bWlkYS50b2t5by5qcCIsInRhY2hpa2F3YS50b2t5by5qcCIsInRhaXRvLnRva3lvLmpwIiwidGFtYS50b2t5by5qcCIsInRvc2hpbWEudG9reW8uanAiLCJjaGl6dS50''@;'; put 'put ''b3R0b3JpLmpwIiwiaGluby50b3R0b3JpLmpwIiwia2F3YWhhcmEudG90dG9yaS5qcCIsImtvZ2UudG90dG9yaS5qcCIsImtvdG91cmEudG90dG9yaS5qcCIsIm1pc2FzYS50b3R0b3JpLmpwIiwibmFuYnUudG90dG9yaS5qcCIsIm5pY2hpbmFuLnRvdHRvcmkuanAiLCJzYWthaW1pbmF0by50''@;'; put 'put ''b3R0b3JpLmpwIiwidG90dG9yaS50b3R0b3JpLmpwIiwid2FrYXNhLnRvdHRvcmkuanAiLCJ5YXp1LnRvdHRvcmkuanAiLCJ5b25hZ28udG90dG9yaS5qcCIsImFzYWhpLnRveWFtYS5qcCIsImZ1Y2h1LnRveWFtYS5qcCIsImZ1a3VtaXRzdS50b3lhbWEuanAiLCJmdW5haGFzaGkudG95YW1h''@;'; put 'put ''LmpwIiwiaGltaS50b3lhbWEuanAiLCJpbWl6dS50b3lhbWEuanAiLCJpbmFtaS50b3lhbWEuanAiLCJqb2hhbmEudG95YW1hLmpwIiwia2FtaWljaGkudG95YW1hLmpwIiwia3Vyb2JlLnRveWFtYS5qcCIsIm5ha2FuaWlrYXdhLnRveWFtYS5qcCIsIm5hbWVyaWthd2EudG95YW1hLmpwIiwi''@;'; put 'put ''bmFudG8udG95YW1hLmpwIiwibnl1emVuLnRveWFtYS5qcCIsIm95YWJlLnRveWFtYS5qcCIsInRhaXJhLnRveWFtYS5qcCIsInRha2Fva2EudG95YW1hLmpwIiwidGF0ZXlhbWEudG95YW1hLmpwIiwidG9nYS50b3lhbWEuanAiLCJ0b25hbWkudG95YW1hLmpwIiwidG95YW1hLnRveWFtYS5q''@;'; put 'put ''cCIsInVuYXp1a2kudG95YW1hLmpwIiwidW96dS50b3lhbWEuanAiLCJ5YW1hZGEudG95YW1hLmpwIiwiYXJpZGEud2FrYXlhbWEuanAiLCJhcmlkYWdhd2Eud2FrYXlhbWEuanAiLCJnb2JvLndha2F5YW1hLmpwIiwiaGFzaGltb3RvLndha2F5YW1hLmpwIiwiaGlkYWthLndha2F5YW1hLmpw''@;'; put 'put ''IiwiaGlyb2dhd2Eud2FrYXlhbWEuanAiLCJpbmFtaS53YWtheWFtYS5qcCIsIml3YWRlLndha2F5YW1hLmpwIiwia2FpbmFuLndha2F5YW1hLmpwIiwia2FtaXRvbmRhLndha2F5YW1hLmpwIiwia2F0c3VyYWdpLndha2F5YW1hLmpwIiwia2ltaW5vLndha2F5YW1hLmpwIiwia2lub2thd2Eu''@;'; put 'put ''d2FrYXlhbWEuanAiLCJraXRheWFtYS53YWtheWFtYS5qcCIsImtveWEud2FrYXlhbWEuanAiLCJrb3phLndha2F5YW1hLmpwIiwia296YWdhd2Eud2FrYXlhbWEuanAiLCJrdWRveWFtYS53YWtheWFtYS5qcCIsImt1c2hpbW90by53YWtheWFtYS5qcCIsIm1paGFtYS53YWtheWFtYS5qcCIs''@;'; put 'put ''Im1pc2F0by53YWtheWFtYS5qcCIsIm5hY2hpa2F0c3V1cmEud2FrYXlhbWEuanAiLCJzaGluZ3Uud2FrYXlhbWEuanAiLCJzaGlyYWhhbWEud2FrYXlhbWEuanAiLCJ0YWlqaS53YWtheWFtYS5qcCIsInRhbmFiZS53YWtheWFtYS5qcCIsIndha2F5YW1hLndha2F5YW1hLmpwIiwieXVhc2Eu''@;'; put 'put ''d2FrYXlhbWEuanAiLCJ5dXJhLndha2F5YW1hLmpwIiwiYXNhaGkueWFtYWdhdGEuanAiLCJmdW5hZ2F0YS55YW1hZ2F0YS5qcCIsImhpZ2FzaGluZS55YW1hZ2F0YS5qcCIsImlpZGUueWFtYWdhdGEuanAiLCJrYWhva3UueWFtYWdhdGEuanAiLCJrYW1pbm95YW1hLnlhbWFnYXRhLmpwIiwi''@;'; put 'put ''a2FuZXlhbWEueWFtYWdhdGEuanAiLCJrYXdhbmlzaGkueWFtYWdhdGEuanAiLCJtYW11cm9nYXdhLnlhbWFnYXRhLmpwIiwibWlrYXdhLnlhbWFnYXRhLmpwIiwibXVyYXlhbWEueWFtYWdhdGEuanAiLCJuYWdhaS55YW1hZ2F0YS5qcCIsIm5ha2F5YW1hLnlhbWFnYXRhLmpwIiwibmFueW8u''@;'; put 'put ''eWFtYWdhdGEuanAiLCJuaXNoaWthd2EueWFtYWdhdGEuanAiLCJvYmFuYXphd2EueWFtYWdhdGEuanAiLCJvZS55YW1hZ2F0YS5qcCIsIm9ndW5pLnlhbWFnYXRhLmpwIiwib2hrdXJhLnlhbWFnYXRhLmpwIiwib2lzaGlkYS55YW1hZ2F0YS5qcCIsInNhZ2FlLnlhbWFnYXRhLmpwIiwic2Fr''@;'; put 'put ''YXRhLnlhbWFnYXRhLmpwIiwic2FrZWdhd2EueWFtYWdhdGEuanAiLCJzaGluam8ueWFtYWdhdGEuanAiLCJzaGlyYXRha2EueWFtYWdhdGEuanAiLCJzaG9uYWkueWFtYWdhdGEuanAiLCJ0YWthaGF0YS55YW1hZ2F0YS5qcCIsInRlbmRvLnlhbWFnYXRhLmpwIiwidG96YXdhLnlhbWFnYXRh''@;'; put 'put ''LmpwIiwidHN1cnVva2EueWFtYWdhdGEuanAiLCJ5YW1hZ2F0YS55YW1hZ2F0YS5qcCIsInlhbWFub2JlLnlhbWFnYXRhLmpwIiwieW9uZXphd2EueWFtYWdhdGEuanAiLCJ5dXphLnlhbWFnYXRhLmpwIiwiYWJ1LnlhbWFndWNoaS5qcCIsImhhZ2kueWFtYWd1Y2hpLmpwIiwiaGlrYXJpLnlh''@;'; put 'put ''bWFndWNoaS5qcCIsImhvZnUueWFtYWd1Y2hpLmpwIiwiaXdha3VuaS55YW1hZ3VjaGkuanAiLCJrdWRhbWF0c3UueWFtYWd1Y2hpLmpwIiwibWl0b3UueWFtYWd1Y2hpLmpwIiwibmFnYXRvLnlhbWFndWNoaS5qcCIsIm9zaGltYS55YW1hZ3VjaGkuanAiLCJzaGltb25vc2VraS55YW1hZ3Vj''@;'; put 'put ''aGkuanAiLCJzaHVuYW4ueWFtYWd1Y2hpLmpwIiwidGFidXNlLnlhbWFndWNoaS5qcCIsInRva3V5YW1hLnlhbWFndWNoaS5qcCIsInRveW90YS55YW1hZ3VjaGkuanAiLCJ1YmUueWFtYWd1Y2hpLmpwIiwieXV1LnlhbWFndWNoaS5qcCIsImNodW8ueWFtYW5hc2hpLmpwIiwiZG9zaGkueWFt''@;'; put 'put ''YW5hc2hpLmpwIiwiZnVlZnVraS55YW1hbmFzaGkuanAiLCJmdWppa2F3YS55YW1hbmFzaGkuanAiLCJmdWppa2F3YWd1Y2hpa28ueWFtYW5hc2hpLmpwIiwiZnVqaXlvc2hpZGEueWFtYW5hc2hpLmpwIiwiaGF5YWthd2EueWFtYW5hc2hpLmpwIiwiaG9rdXRvLnlhbWFuYXNoaS5qcCIsImlj''@;'; put 'put ''aGlrYXdhbWlzYXRvLnlhbWFuYXNoaS5qcCIsImthaS55YW1hbmFzaGkuanAiLCJrb2Z1LnlhbWFuYXNoaS5qcCIsImtvc2h1LnlhbWFuYXNoaS5qcCIsImtvc3VnZS55YW1hbmFzaGkuanAiLCJtaW5hbWktYWxwcy55YW1hbmFzaGkuanAiLCJtaW5vYnUueWFtYW5hc2hpLmpwIiwibmFrYW1p''@;'; put 'put ''Y2hpLnlhbWFuYXNoaS5qcCIsIm5hbmJ1LnlhbWFuYXNoaS5qcCIsIm5hcnVzYXdhLnlhbWFuYXNoaS5qcCIsIm5pcmFzYWtpLnlhbWFuYXNoaS5qcCIsIm5pc2hpa2F0c3VyYS55YW1hbmFzaGkuanAiLCJvc2hpbm8ueWFtYW5hc2hpLmpwIiwib3RzdWtpLnlhbWFuYXNoaS5qcCIsInNob3dh''@;'; put 'put ''LnlhbWFuYXNoaS5qcCIsInRhYmF5YW1hLnlhbWFuYXNoaS5qcCIsInRzdXJ1LnlhbWFuYXNoaS5qcCIsInVlbm9oYXJhLnlhbWFuYXNoaS5qcCIsInlhbWFuYWtha28ueWFtYW5hc2hpLmpwIiwieWFtYW5hc2hpLnlhbWFuYXNoaS5qcCIsImtlIiwiYWMua2UiLCJjby5rZSIsImdvLmtlIiwi''@;'; put 'put ''aW5mby5rZSIsIm1lLmtlIiwibW9iaS5rZSIsIm5lLmtlIiwib3Iua2UiLCJzYy5rZSIsImtnIiwib3JnLmtnIiwibmV0LmtnIiwiY29tLmtnIiwiZWR1LmtnIiwiZ292LmtnIiwibWlsLmtnIiwiKi5raCIsImtpIiwiZWR1LmtpIiwiYml6LmtpIiwibmV0LmtpIiwib3JnLmtpIiwiZ292Lmtp''@;'; put 'put ''IiwiaW5mby5raSIsImNvbS5raSIsImttIiwib3JnLmttIiwibm9tLmttIiwiZ292LmttIiwicHJkLmttIiwidG0ua20iLCJlZHUua20iLCJtaWwua20iLCJhc3Mua20iLCJjb20ua20iLCJjb29wLmttIiwiYXNzby5rbSIsInByZXNzZS5rbSIsIm1lZGVjaW4ua20iLCJub3RhaXJlcy5rbSIs''@;'; put 'put ''InBoYXJtYWNpZW5zLmttIiwidmV0ZXJpbmFpcmUua20iLCJnb3V2LmttIiwia24iLCJuZXQua24iLCJvcmcua24iLCJlZHUua24iLCJnb3Yua24iLCJrcCIsImNvbS5rcCIsImVkdS5rcCIsImdvdi5rcCIsIm9yZy5rcCIsInJlcC5rcCIsInRyYS5rcCIsImtyIiwiYWMua3IiLCJjby5rciIs''@;'; put 'put ''ImVzLmtyIiwiZ28ua3IiLCJocy5rciIsImtnLmtyIiwibWlsLmtyIiwibXMua3IiLCJuZS5rciIsIm9yLmtyIiwicGUua3IiLCJyZS5rciIsInNjLmtyIiwiYnVzYW4ua3IiLCJjaHVuZ2J1ay5rciIsImNodW5nbmFtLmtyIiwiZGFlZ3Uua3IiLCJkYWVqZW9uLmtyIiwiZ2FuZ3dvbi5rciIs''@;'; put 'put ''Imd3YW5nanUua3IiLCJneWVvbmdidWsua3IiLCJneWVvbmdnaS5rciIsImd5ZW9uZ25hbS5rciIsImluY2hlb24ua3IiLCJqZWp1LmtyIiwiamVvbmJ1ay5rciIsImplb25uYW0ua3IiLCJzZW91bC5rciIsInVsc2FuLmtyIiwia3ciLCJjb20ua3ciLCJlZHUua3ciLCJlbWIua3ciLCJnb3Yu''@;'; put 'put ''a3ciLCJpbmQua3ciLCJuZXQua3ciLCJvcmcua3ciLCJreSIsImVkdS5reSIsImdvdi5reSIsImNvbS5reSIsIm9yZy5reSIsIm5ldC5reSIsImt6Iiwib3JnLmt6IiwiZWR1Lmt6IiwibmV0Lmt6IiwiZ292Lmt6IiwibWlsLmt6IiwiY29tLmt6IiwibGEiLCJpbnQubGEiLCJuZXQubGEiLCJp''@;'; put 'put ''bmZvLmxhIiwiZWR1LmxhIiwiZ292LmxhIiwicGVyLmxhIiwiY29tLmxhIiwib3JnLmxhIiwibGIiLCJjb20ubGIiLCJlZHUubGIiLCJnb3YubGIiLCJuZXQubGIiLCJvcmcubGIiLCJsYyIsImNvbS5sYyIsIm5ldC5sYyIsImNvLmxjIiwib3JnLmxjIiwiZWR1LmxjIiwiZ292LmxjIiwibGki''@;'; put 'put ''LCJsayIsImdvdi5sayIsInNjaC5sayIsIm5ldC5sayIsImludC5sayIsImNvbS5sayIsIm9yZy5sayIsImVkdS5sayIsIm5nby5sayIsInNvYy5sayIsIndlYi5sayIsImx0ZC5sayIsImFzc24ubGsiLCJncnAubGsiLCJob3RlbC5sayIsImFjLmxrIiwibHIiLCJjb20ubHIiLCJlZHUubHIi''@;'; put 'put ''LCJnb3YubHIiLCJvcmcubHIiLCJuZXQubHIiLCJscyIsImFjLmxzIiwiYml6LmxzIiwiY28ubHMiLCJlZHUubHMiLCJnb3YubHMiLCJpbmZvLmxzIiwibmV0LmxzIiwib3JnLmxzIiwic2MubHMiLCJsdCIsImdvdi5sdCIsImx1IiwibHYiLCJjb20ubHYiLCJlZHUubHYiLCJnb3YubHYiLCJv''@;'; put 'put ''cmcubHYiLCJtaWwubHYiLCJpZC5sdiIsIm5ldC5sdiIsImFzbi5sdiIsImNvbmYubHYiLCJseSIsImNvbS5seSIsIm5ldC5seSIsImdvdi5seSIsInBsYy5seSIsImVkdS5seSIsInNjaC5seSIsIm1lZC5seSIsIm9yZy5seSIsImlkLmx5IiwibWEiLCJjby5tYSIsIm5ldC5tYSIsImdvdi5t''@;'; put 'put ''YSIsIm9yZy5tYSIsImFjLm1hIiwicHJlc3MubWEiLCJtYyIsInRtLm1jIiwiYXNzby5tYyIsIm1kIiwibWUiLCJjby5tZSIsIm5ldC5tZSIsIm9yZy5tZSIsImVkdS5tZSIsImFjLm1lIiwiZ292Lm1lIiwiaXRzLm1lIiwicHJpdi5tZSIsIm1nIiwib3JnLm1nIiwibm9tLm1nIiwiZ292Lm1n''@;'; put 'put ''IiwicHJkLm1nIiwidG0ubWciLCJlZHUubWciLCJtaWwubWciLCJjb20ubWciLCJjby5tZyIsIm1oIiwibWlsIiwibWsiLCJjb20ubWsiLCJvcmcubWsiLCJuZXQubWsiLCJlZHUubWsiLCJnb3YubWsiLCJpbmYubWsiLCJuYW1lLm1rIiwibWwiLCJjb20ubWwiLCJlZHUubWwiLCJnb3V2Lm1s''@;'; put 'put ''IiwiZ292Lm1sIiwibmV0Lm1sIiwib3JnLm1sIiwicHJlc3NlLm1sIiwiKi5tbSIsIm1uIiwiZ292Lm1uIiwiZWR1Lm1uIiwib3JnLm1uIiwibW8iLCJjb20ubW8iLCJuZXQubW8iLCJvcmcubW8iLCJlZHUubW8iLCJnb3YubW8iLCJtb2JpIiwibXAiLCJtcSIsIm1yIiwiZ292Lm1yIiwibXMi''@;'; put 'put ''LCJjb20ubXMiLCJlZHUubXMiLCJnb3YubXMiLCJuZXQubXMiLCJvcmcubXMiLCJtdCIsImNvbS5tdCIsImVkdS5tdCIsIm5ldC5tdCIsIm9yZy5tdCIsIm11IiwiY29tLm11IiwibmV0Lm11Iiwib3JnLm11IiwiZ292Lm11IiwiYWMubXUiLCJjby5tdSIsIm9yLm11IiwibXVzZXVtIiwiYWNh''@;'; put 'put ''ZGVteS5tdXNldW0iLCJhZ3JpY3VsdHVyZS5tdXNldW0iLCJhaXIubXVzZXVtIiwiYWlyZ3VhcmQubXVzZXVtIiwiYWxhYmFtYS5tdXNldW0iLCJhbGFza2EubXVzZXVtIiwiYW1iZXIubXVzZXVtIiwiYW1idWxhbmNlLm11c2V1bSIsImFtZXJpY2FuLm11c2V1bSIsImFtZXJpY2FuYS5tdXNl''@;'; put 'put ''dW0iLCJhbWVyaWNhbmFudGlxdWVzLm11c2V1bSIsImFtZXJpY2FuYXJ0Lm11c2V1bSIsImFtc3RlcmRhbS5tdXNldW0iLCJhbmQubXVzZXVtIiwiYW5uZWZyYW5rLm11c2V1bSIsImFudGhyby5tdXNldW0iLCJhbnRocm9wb2xvZ3kubXVzZXVtIiwiYW50aXF1ZXMubXVzZXVtIiwiYXF1YXJp''@;'; put 'put ''dW0ubXVzZXVtIiwiYXJib3JldHVtLm11c2V1bSIsImFyY2hhZW9sb2dpY2FsLm11c2V1bSIsImFyY2hhZW9sb2d5Lm11c2V1bSIsImFyY2hpdGVjdHVyZS5tdXNldW0iLCJhcnQubXVzZXVtIiwiYXJ0YW5kZGVzaWduLm11c2V1bSIsImFydGNlbnRlci5tdXNldW0iLCJhcnRkZWNvLm11c2V1''@;'; put 'put ''bSIsImFydGVkdWNhdGlvbi5tdXNldW0iLCJhcnRnYWxsZXJ5Lm11c2V1bSIsImFydHMubXVzZXVtIiwiYXJ0c2FuZGNyYWZ0cy5tdXNldW0iLCJhc21hdGFydC5tdXNldW0iLCJhc3Nhc3NpbmF0aW9uLm11c2V1bSIsImFzc2lzaS5tdXNldW0iLCJhc3NvY2lhdGlvbi5tdXNldW0iLCJhc3Ry''@;'; put 'put ''b25vbXkubXVzZXVtIiwiYXRsYW50YS5tdXNldW0iLCJhdXN0aW4ubXVzZXVtIiwiYXVzdHJhbGlhLm11c2V1bSIsImF1dG9tb3RpdmUubXVzZXVtIiwiYXZpYXRpb24ubXVzZXVtIiwiYXhpcy5tdXNldW0iLCJiYWRham96Lm11c2V1bSIsImJhZ2hkYWQubXVzZXVtIiwiYmFobi5tdXNldW0i''@;'; put 'put ''LCJiYWxlLm11c2V1bSIsImJhbHRpbW9yZS5tdXNldW0iLCJiYXJjZWxvbmEubXVzZXVtIiwiYmFzZWJhbGwubXVzZXVtIiwiYmFzZWwubXVzZXVtIiwiYmF0aHMubXVzZXVtIiwiYmF1ZXJuLm11c2V1bSIsImJlYXV4YXJ0cy5tdXNldW0iLCJiZWVsZGVuZ2VsdWlkLm11c2V1bSIsImJlbGxl''@;'; put 'put ''dnVlLm11c2V1bSIsImJlcmdiYXUubXVzZXVtIiwiYmVya2VsZXkubXVzZXVtIiwiYmVybGluLm11c2V1bSIsImJlcm4ubXVzZXVtIiwiYmlibGUubXVzZXVtIiwiYmlsYmFvLm11c2V1bSIsImJpbGwubXVzZXVtIiwiYmlyZGFydC5tdXNldW0iLCJiaXJ0aHBsYWNlLm11c2V1bSIsImJvbm4u''@;'; put 'put ''bXVzZXVtIiwiYm9zdG9uLm11c2V1bSIsImJvdGFuaWNhbC5tdXNldW0iLCJib3RhbmljYWxnYXJkZW4ubXVzZXVtIiwiYm90YW5pY2dhcmRlbi5tdXNldW0iLCJib3RhbnkubXVzZXVtIiwiYnJhbmR5d2luZXZhbGxleS5tdXNldW0iLCJicmFzaWwubXVzZXVtIiwiYnJpc3RvbC5tdXNldW0i''@;'; put 'put ''LCJicml0aXNoLm11c2V1bSIsImJyaXRpc2hjb2x1bWJpYS5tdXNldW0iLCJicm9hZGNhc3QubXVzZXVtIiwiYnJ1bmVsLm11c2V1bSIsImJydXNzZWwubXVzZXVtIiwiYnJ1c3NlbHMubXVzZXVtIiwiYnJ1eGVsbGVzLm11c2V1bSIsImJ1aWxkaW5nLm11c2V1bSIsImJ1cmdob2YubXVzZXVt''@;'; put 'put ''IiwiYnVzLm11c2V1bSIsImJ1c2hleS5tdXNldW0iLCJjYWRhcXVlcy5tdXNldW0iLCJjYWxpZm9ybmlhLm11c2V1bSIsImNhbWJyaWRnZS5tdXNldW0iLCJjYW4ubXVzZXVtIiwiY2FuYWRhLm11c2V1bSIsImNhcGVicmV0b24ubXVzZXVtIiwiY2Fycmllci5tdXNldW0iLCJjYXJ0b29uYXJ0''@;'; put 'put ''Lm11c2V1bSIsImNhc2FkZWxhbW9uZWRhLm11c2V1bSIsImNhc3RsZS5tdXNldW0iLCJjYXN0cmVzLm11c2V1bSIsImNlbHRpYy5tdXNldW0iLCJjZW50ZXIubXVzZXVtIiwiY2hhdHRhbm9vZ2EubXVzZXVtIiwiY2hlbHRlbmhhbS5tdXNldW0iLCJjaGVzYXBlYWtlYmF5Lm11c2V1bSIsImNo''@;'; put 'put ''aWNhZ28ubXVzZXVtIiwiY2hpbGRyZW4ubXVzZXVtIiwiY2hpbGRyZW5zLm11c2V1bSIsImNoaWxkcmVuc2dhcmRlbi5tdXNldW0iLCJjaGlyb3ByYWN0aWMubXVzZXVtIiwiY2hvY29sYXRlLm11c2V1bSIsImNocmlzdGlhbnNidXJnLm11c2V1bSIsImNpbmNpbm5hdGkubXVzZXVtIiwiY2lu''@;'; put 'put ''ZW1hLm11c2V1bSIsImNpcmN1cy5tdXNldW0iLCJjaXZpbGlzYXRpb24ubXVzZXVtIiwiY2l2aWxpemF0aW9uLm11c2V1bSIsImNpdmlsd2FyLm11c2V1bSIsImNsaW50b24ubXVzZXVtIiwiY2xvY2subXVzZXVtIiwiY29hbC5tdXNldW0iLCJjb2FzdGFsZGVmZW5jZS5tdXNldW0iLCJjb2R5''@;'; put 'put ''Lm11c2V1bSIsImNvbGR3YXIubXVzZXVtIiwiY29sbGVjdGlvbi5tdXNldW0iLCJjb2xvbmlhbHdpbGxpYW1zYnVyZy5tdXNldW0iLCJjb2xvcmFkb3BsYXRlYXUubXVzZXVtIiwiY29sdW1iaWEubXVzZXVtIiwiY29sdW1idXMubXVzZXVtIiwiY29tbXVuaWNhdGlvbi5tdXNldW0iLCJjb21t''@;'; put 'put ''dW5pY2F0aW9ucy5tdXNldW0iLCJjb21tdW5pdHkubXVzZXVtIiwiY29tcHV0ZXIubXVzZXVtIiwiY29tcHV0ZXJoaXN0b3J5Lm11c2V1bSIsImNvbXVuaWNhXHhlN1x4ZjVlcy5tdXNldW0iLCJjb250ZW1wb3JhcnkubXVzZXVtIiwiY29udGVtcG9yYXJ5YXJ0Lm11c2V1bSIsImNvbnZlbnQu''@;'; put 'put ''bXVzZXVtIiwiY29wZW5oYWdlbi5tdXNldW0iLCJjb3Jwb3JhdGlvbi5tdXNldW0iLCJjb3JyZWlvcy1lLXRlbGVjb211bmljYVx4ZTdceGY1ZXMubXVzZXVtIiwiY29ydmV0dGUubXVzZXVtIiwiY29zdHVtZS5tdXNldW0iLCJjb3VudHJ5ZXN0YXRlLm11c2V1bSIsImNvdW50eS5tdXNldW0i''@;'; put 'put ''LCJjcmFmdHMubXVzZXVtIiwiY3JhbmJyb29rLm11c2V1bSIsImNyZWF0aW9uLm11c2V1bSIsImN1bHR1cmFsLm11c2V1bSIsImN1bHR1cmFsY2VudGVyLm11c2V1bSIsImN1bHR1cmUubXVzZXVtIiwiY3liZXIubXVzZXVtIiwiY3ltcnUubXVzZXVtIiwiZGFsaS5tdXNldW0iLCJkYWxsYXMu''@;'; put 'put ''bXVzZXVtIiwiZGF0YWJhc2UubXVzZXVtIiwiZGRyLm11c2V1bSIsImRlY29yYXRpdmVhcnRzLm11c2V1bSIsImRlbGF3YXJlLm11c2V1bSIsImRlbG1lbmhvcnN0Lm11c2V1bSIsImRlbm1hcmsubXVzZXVtIiwiZGVwb3QubXVzZXVtIiwiZGVzaWduLm11c2V1bSIsImRldHJvaXQubXVzZXVt''@;'; put 'put ''IiwiZGlub3NhdXIubXVzZXVtIiwiZGlzY292ZXJ5Lm11c2V1bSIsImRvbGxzLm11c2V1bSIsImRvbm9zdGlhLm11c2V1bSIsImR1cmhhbS5tdXNldW0iLCJlYXN0YWZyaWNhLm11c2V1bSIsImVhc3Rjb2FzdC5tdXNldW0iLCJlZHVjYXRpb24ubXVzZXVtIiwiZWR1Y2F0aW9uYWwubXVzZXVt''@;'; put 'put ''IiwiZWd5cHRpYW4ubXVzZXVtIiwiZWlzZW5iYWhuLm11c2V1bSIsImVsYnVyZy5tdXNldW0iLCJlbHZlbmRyZWxsLm11c2V1bSIsImVtYnJvaWRlcnkubXVzZXVtIiwiZW5jeWNsb3BlZGljLm11c2V1bSIsImVuZ2xhbmQubXVzZXVtIiwiZW50b21vbG9neS5tdXNldW0iLCJlbnZpcm9ubWVu''@;'; put 'put ''dC5tdXNldW0iLCJlbnZpcm9ubWVudGFsY29uc2VydmF0aW9uLm11c2V1bSIsImVwaWxlcHN5Lm11c2V1bSIsImVzc2V4Lm11c2V1bSIsImVzdGF0ZS5tdXNldW0iLCJldGhub2xvZ3kubXVzZXVtIiwiZXhldGVyLm11c2V1bSIsImV4aGliaXRpb24ubXVzZXVtIiwiZmFtaWx5Lm11c2V1bSIs''@;'; put 'put ''ImZhcm0ubXVzZXVtIiwiZmFybWVxdWlwbWVudC5tdXNldW0iLCJmYXJtZXJzLm11c2V1bSIsImZhcm1zdGVhZC5tdXNldW0iLCJmaWVsZC5tdXNldW0iLCJmaWd1ZXJlcy5tdXNldW0iLCJmaWxhdGVsaWEubXVzZXVtIiwiZmlsbS5tdXNldW0iLCJmaW5lYXJ0Lm11c2V1bSIsImZpbmVhcnRz''@;'; put 'put ''Lm11c2V1bSIsImZpbmxhbmQubXVzZXVtIiwiZmxhbmRlcnMubXVzZXVtIiwiZmxvcmlkYS5tdXNldW0iLCJmb3JjZS5tdXNldW0iLCJmb3J0bWlzc291bGEubXVzZXVtIiwiZm9ydHdvcnRoLm11c2V1bSIsImZvdW5kYXRpb24ubXVzZXVtIiwiZnJhbmNhaXNlLm11c2V1bSIsImZyYW5rZnVy''@;'; put 'put ''dC5tdXNldW0iLCJmcmFuemlza2FuZXIubXVzZXVtIiwiZnJlZW1hc29ucnkubXVzZXVtIiwiZnJlaWJ1cmcubXVzZXVtIiwiZnJpYm91cmcubXVzZXVtIiwiZnJvZy5tdXNldW0iLCJmdW5kYWNpby5tdXNldW0iLCJmdXJuaXR1cmUubXVzZXVtIiwiZ2FsbGVyeS5tdXNldW0iLCJnYXJkZW4u''@;'; put 'put ''bXVzZXVtIiwiZ2F0ZXdheS5tdXNldW0iLCJnZWVsdmluY2subXVzZXVtIiwiZ2Vtb2xvZ2ljYWwubXVzZXVtIiwiZ2VvbG9neS5tdXNldW0iLCJnZW9yZ2lhLm11c2V1bSIsImdpZXNzZW4ubXVzZXVtIiwiZ2xhcy5tdXNldW0iLCJnbGFzcy5tdXNldW0iLCJnb3JnZS5tdXNldW0iLCJncmFu''@;'; put 'put ''ZHJhcGlkcy5tdXNldW0iLCJncmF6Lm11c2V1bSIsImd1ZXJuc2V5Lm11c2V1bSIsImhhbGxvZmZhbWUubXVzZXVtIiwiaGFtYnVyZy5tdXNldW0iLCJoYW5kc29uLm11c2V1bSIsImhhcnZlc3RjZWxlYnJhdGlvbi5tdXNldW0iLCJoYXdhaWkubXVzZXVtIiwiaGVhbHRoLm11c2V1bSIsImhl''@;'; put 'put ''aW1hdHVuZHVocmVuLm11c2V1bSIsImhlbGxhcy5tdXNldW0iLCJoZWxzaW5raS5tdXNldW0iLCJoZW1ieWdkc2ZvcmJ1bmQubXVzZXVtIiwiaGVyaXRhZ2UubXVzZXVtIiwiaGlzdG9pcmUubXVzZXVtIiwiaGlzdG9yaWNhbC5tdXNldW0iLCJoaXN0b3JpY2Fsc29jaWV0eS5tdXNldW0iLCJo''@;'; put 'put ''aXN0b3JpY2hvdXNlcy5tdXNldW0iLCJoaXN0b3Jpc2NoLm11c2V1bSIsImhpc3RvcmlzY2hlcy5tdXNldW0iLCJoaXN0b3J5Lm11c2V1bSIsImhpc3RvcnlvZnNjaWVuY2UubXVzZXVtIiwiaG9yb2xvZ3kubXVzZXVtIiwiaG91c2UubXVzZXVtIiwiaHVtYW5pdGllcy5tdXNldW0iLCJpbGx1''@;'; put 'put ''c3RyYXRpb24ubXVzZXVtIiwiaW1hZ2VhbmRzb3VuZC5tdXNldW0iLCJpbmRpYW4ubXVzZXVtIiwiaW5kaWFuYS5tdXNldW0iLCJpbmRpYW5hcG9saXMubXVzZXVtIiwiaW5kaWFubWFya2V0Lm11c2V1bSIsImludGVsbGlnZW5jZS5tdXNldW0iLCJpbnRlcmFjdGl2ZS5tdXNldW0iLCJpcmFx''@;'; put 'put ''Lm11c2V1bSIsImlyb24ubXVzZXVtIiwiaXNsZW9mbWFuLm11c2V1bSIsImphbWlzb24ubXVzZXVtIiwiamVmZmVyc29uLm11c2V1bSIsImplcnVzYWxlbS5tdXNldW0iLCJqZXdlbHJ5Lm11c2V1bSIsImpld2lzaC5tdXNldW0iLCJqZXdpc2hhcnQubXVzZXVtIiwiamZrLm11c2V1bSIsImpv''@;'; put 'put ''dXJuYWxpc20ubXVzZXVtIiwianVkYWljYS5tdXNldW0iLCJqdWR5Z2FybGFuZC5tdXNldW0iLCJqdWVkaXNjaGVzLm11c2V1bSIsImp1aWYubXVzZXVtIiwia2FyYXRlLm11c2V1bSIsImthcmlrYXR1ci5tdXNldW0iLCJraWRzLm11c2V1bSIsImtvZWJlbmhhdm4ubXVzZXVtIiwia29lbG4u''@;'; put 'put ''bXVzZXVtIiwia3Vuc3QubXVzZXVtIiwia3Vuc3RzYW1tbHVuZy5tdXNldW0iLCJrdW5zdHVuZGRlc2lnbi5tdXNldW0iLCJsYWJvci5tdXNldW0iLCJsYWJvdXIubXVzZXVtIiwibGFqb2xsYS5tdXNldW0iLCJsYW5jYXNoaXJlLm11c2V1bSIsImxhbmRlcy5tdXNldW0iLCJsYW5zLm11c2V1''@;'; put 'put ''bSIsImxceGU0bnMubXVzZXVtIiwibGFyc3Nvbi5tdXNldW0iLCJsZXdpc21pbGxlci5tdXNldW0iLCJsaW5jb2xuLm11c2V1bSIsImxpbnoubXVzZXVtIiwibGl2aW5nLm11c2V1bSIsImxpdmluZ2hpc3RvcnkubXVzZXVtIiwibG9jYWxoaXN0b3J5Lm11c2V1bSIsImxvbmRvbi5tdXNldW0i''@;'; put 'put ''LCJsb3NhbmdlbGVzLm11c2V1bSIsImxvdXZyZS5tdXNldW0iLCJsb3lhbGlzdC5tdXNldW0iLCJsdWNlcm5lLm11c2V1bSIsImx1eGVtYm91cmcubXVzZXVtIiwibHV6ZXJuLm11c2V1bSIsIm1hZC5tdXNldW0iLCJtYWRyaWQubXVzZXVtIiwibWFsbG9yY2EubXVzZXVtIiwibWFuY2hlc3Rl''@;'; put 'put ''ci5tdXNldW0iLCJtYW5zaW9uLm11c2V1bSIsIm1hbnNpb25zLm11c2V1bSIsIm1hbngubXVzZXVtIiwibWFyYnVyZy5tdXNldW0iLCJtYXJpdGltZS5tdXNldW0iLCJtYXJpdGltby5tdXNldW0iLCJtYXJ5bGFuZC5tdXNldW0iLCJtYXJ5bGh1cnN0Lm11c2V1bSIsIm1lZGlhLm11c2V1bSIs''@;'; put 'put ''Im1lZGljYWwubXVzZXVtIiwibWVkaXppbmhpc3RvcmlzY2hlcy5tdXNldW0iLCJtZWVyZXMubXVzZXVtIiwibWVtb3JpYWwubXVzZXVtIiwibWVzYXZlcmRlLm11c2V1bSIsIm1pY2hpZ2FuLm11c2V1bSIsIm1pZGF0bGFudGljLm11c2V1bSIsIm1pbGl0YXJ5Lm11c2V1bSIsIm1pbGwubXVz''@;'; put 'put ''ZXVtIiwibWluZXJzLm11c2V1bSIsIm1pbmluZy5tdXNldW0iLCJtaW5uZXNvdGEubXVzZXVtIiwibWlzc2lsZS5tdXNldW0iLCJtaXNzb3VsYS5tdXNldW0iLCJtb2Rlcm4ubXVzZXVtIiwibW9tYS5tdXNldW0iLCJtb25leS5tdXNldW0iLCJtb25tb3V0aC5tdXNldW0iLCJtb250aWNlbGxv''@;'; put 'put ''Lm11c2V1bSIsIm1vbnRyZWFsLm11c2V1bSIsIm1vc2Nvdy5tdXNldW0iLCJtb3RvcmN5Y2xlLm11c2V1bSIsIm11ZW5jaGVuLm11c2V1bSIsIm11ZW5zdGVyLm11c2V1bSIsIm11bGhvdXNlLm11c2V1bSIsIm11bmNpZS5tdXNldW0iLCJtdXNlZXQubXVzZXVtIiwibXVzZXVtY2VudGVyLm11''@;'; put 'put ''c2V1bSIsIm11c2V1bXZlcmVuaWdpbmcubXVzZXVtIiwibXVzaWMubXVzZXVtIiwibmF0aW9uYWwubXVzZXVtIiwibmF0aW9uYWxmaXJlYXJtcy5tdXNldW0iLCJuYXRpb25hbGhlcml0YWdlLm11c2V1bSIsIm5hdGl2ZWFtZXJpY2FuLm11c2V1bSIsIm5hdHVyYWxoaXN0b3J5Lm11c2V1bSIs''@;'; put 'put ''Im5hdHVyYWxoaXN0b3J5bXVzZXVtLm11c2V1bSIsIm5hdHVyYWxzY2llbmNlcy5tdXNldW0iLCJuYXR1cmUubXVzZXVtIiwibmF0dXJoaXN0b3Jpc2NoZXMubXVzZXVtIiwibmF0dXVyd2V0ZW5zY2hhcHBlbi5tdXNldW0iLCJuYXVtYnVyZy5tdXNldW0iLCJuYXZhbC5tdXNldW0iLCJuZWJy''@;'; put 'put ''YXNrYS5tdXNldW0iLCJuZXVlcy5tdXNldW0iLCJuZXdoYW1wc2hpcmUubXVzZXVtIiwibmV3amVyc2V5Lm11c2V1bSIsIm5ld21leGljby5tdXNldW0iLCJuZXdwb3J0Lm11c2V1bSIsIm5ld3NwYXBlci5tdXNldW0iLCJuZXd5b3JrLm11c2V1bSIsIm5pZXBjZS5tdXNldW0iLCJub3Jmb2xr''@;'; put 'put ''Lm11c2V1bSIsIm5vcnRoLm11c2V1bSIsIm5ydy5tdXNldW0iLCJueWMubXVzZXVtIiwibnlueS5tdXNldW0iLCJvY2Vhbm9ncmFwaGljLm11c2V1bSIsIm9jZWFub2dyYXBoaXF1ZS5tdXNldW0iLCJvbWFoYS5tdXNldW0iLCJvbmxpbmUubXVzZXVtIiwib250YXJpby5tdXNldW0iLCJvcGVu''@;'; put 'put ''YWlyLm11c2V1bSIsIm9yZWdvbi5tdXNldW0iLCJvcmVnb250cmFpbC5tdXNldW0iLCJvdGFnby5tdXNldW0iLCJveGZvcmQubXVzZXVtIiwicGFjaWZpYy5tdXNldW0iLCJwYWRlcmJvcm4ubXVzZXVtIiwicGFsYWNlLm11c2V1bSIsInBhbGVvLm11c2V1bSIsInBhbG1zcHJpbmdzLm11c2V1''@;'; put 'put ''bSIsInBhbmFtYS5tdXNldW0iLCJwYXJpcy5tdXNldW0iLCJwYXNhZGVuYS5tdXNldW0iLCJwaGFybWFjeS5tdXNldW0iLCJwaGlsYWRlbHBoaWEubXVzZXVtIiwicGhpbGFkZWxwaGlhYXJlYS5tdXNldW0iLCJwaGlsYXRlbHkubXVzZXVtIiwicGhvZW5peC5tdXNldW0iLCJwaG90b2dyYXBo''@;'; put 'put ''eS5tdXNldW0iLCJwaWxvdHMubXVzZXVtIiwicGl0dHNidXJnaC5tdXNldW0iLCJwbGFuZXRhcml1bS5tdXNldW0iLCJwbGFudGF0aW9uLm11c2V1bSIsInBsYW50cy5tdXNldW0iLCJwbGF6YS5tdXNldW0iLCJwb3J0YWwubXVzZXVtIiwicG9ydGxhbmQubXVzZXVtIiwicG9ydGxsaWdhdC5t''@;'; put 'put ''dXNldW0iLCJwb3N0cy1hbmQtdGVsZWNvbW11bmljYXRpb25zLm11c2V1bSIsInByZXNlcnZhdGlvbi5tdXNldW0iLCJwcmVzaWRpby5tdXNldW0iLCJwcmVzcy5tdXNldW0iLCJwcm9qZWN0Lm11c2V1bSIsInB1YmxpYy5tdXNldW0iLCJwdWJvbC5tdXNldW0iLCJxdWViZWMubXVzZXVtIiwi''@;'; put 'put ''cmFpbHJvYWQubXVzZXVtIiwicmFpbHdheS5tdXNldW0iLCJyZXNlYXJjaC5tdXNldW0iLCJyZXNpc3RhbmNlLm11c2V1bSIsInJpb2RlamFuZWlyby5tdXNldW0iLCJyb2NoZXN0ZXIubXVzZXVtIiwicm9ja2FydC5tdXNldW0iLCJyb21hLm11c2V1bSIsInJ1c3NpYS5tdXNldW0iLCJzYWlu''@;'; put 'put ''dGxvdWlzLm11c2V1bSIsInNhbGVtLm11c2V1bSIsInNhbHZhZG9yZGFsaS5tdXNldW0iLCJzYWx6YnVyZy5tdXNldW0iLCJzYW5kaWVnby5tdXNldW0iLCJzYW5mcmFuY2lzY28ubXVzZXVtIiwic2FudGFiYXJiYXJhLm11c2V1bSIsInNhbnRhY3J1ei5tdXNldW0iLCJzYW50YWZlLm11c2V1''@;'; put 'put ''bSIsInNhc2thdGNoZXdhbi5tdXNldW0iLCJzYXR4Lm11c2V1bSIsInNhdmFubmFoZ2EubXVzZXVtIiwic2NobGVzaXNjaGVzLm11c2V1bSIsInNjaG9lbmJydW5uLm11c2V1bSIsInNjaG9rb2xhZGVuLm11c2V1bSIsInNjaG9vbC5tdXNldW0iLCJzY2h3ZWl6Lm11c2V1bSIsInNjaWVuY2Uu''@;'; put 'put ''bXVzZXVtIiwic2NpZW5jZWFuZGhpc3RvcnkubXVzZXVtIiwic2NpZW5jZWFuZGluZHVzdHJ5Lm11c2V1bSIsInNjaWVuY2VjZW50ZXIubXVzZXVtIiwic2NpZW5jZWNlbnRlcnMubXVzZXVtIiwic2NpZW5jZS1maWN0aW9uLm11c2V1bSIsInNjaWVuY2VoaXN0b3J5Lm11c2V1bSIsInNjaWVu''@;'; put 'put ''Y2VzLm11c2V1bSIsInNjaWVuY2VzbmF0dXJlbGxlcy5tdXNldW0iLCJzY290bGFuZC5tdXNldW0iLCJzZWFwb3J0Lm11c2V1bSIsInNldHRsZW1lbnQubXVzZXVtIiwic2V0dGxlcnMubXVzZXVtIiwic2hlbGwubXVzZXVtIiwic2hlcmJyb29rZS5tdXNldW0iLCJzaWJlbmlrLm11c2V1bSIs''@;'; put 'put ''InNpbGsubXVzZXVtIiwic2tpLm11c2V1bSIsInNrb2xlLm11c2V1bSIsInNvY2lldHkubXVzZXVtIiwic29sb2duZS5tdXNldW0iLCJzb3VuZGFuZHZpc2lvbi5tdXNldW0iLCJzb3V0aGNhcm9saW5hLm11c2V1bSIsInNvdXRod2VzdC5tdXNldW0iLCJzcGFjZS5tdXNldW0iLCJzcHkubXVz''@;'; put 'put ''ZXVtIiwic3F1YXJlLm11c2V1bSIsInN0YWR0Lm11c2V1bSIsInN0YWxiYW5zLm11c2V1bSIsInN0YXJuYmVyZy5tdXNldW0iLCJzdGF0ZS5tdXNldW0iLCJzdGF0ZW9mZGVsYXdhcmUubXVzZXVtIiwic3RhdGlvbi5tdXNldW0iLCJzdGVhbS5tdXNldW0iLCJzdGVpZXJtYXJrLm11c2V1bSIs''@;'; put 'put ''InN0am9obi5tdXNldW0iLCJzdG9ja2hvbG0ubXVzZXVtIiwic3RwZXRlcnNidXJnLm11c2V1bSIsInN0dXR0Z2FydC5tdXNldW0iLCJzdWlzc2UubXVzZXVtIiwic3VyZ2VvbnNoYWxsLm11c2V1bSIsInN1cnJleS5tdXNldW0iLCJzdml6emVyYS5tdXNldW0iLCJzd2VkZW4ubXVzZXVtIiwi''@;'; put 'put ''c3lkbmV5Lm11c2V1bSIsInRhbmsubXVzZXVtIiwidGNtLm11c2V1bSIsInRlY2hub2xvZ3kubXVzZXVtIiwidGVsZWtvbW11bmlrYXRpb24ubXVzZXVtIiwidGVsZXZpc2lvbi5tdXNldW0iLCJ0ZXhhcy5tdXNldW0iLCJ0ZXh0aWxlLm11c2V1bSIsInRoZWF0ZXIubXVzZXVtIiwidGltZS5t''@;'; put 'put ''dXNldW0iLCJ0aW1la2VlcGluZy5tdXNldW0iLCJ0b3BvbG9neS5tdXNldW0iLCJ0b3Jpbm8ubXVzZXVtIiwidG91Y2gubXVzZXVtIiwidG93bi5tdXNldW0iLCJ0cmFuc3BvcnQubXVzZXVtIiwidHJlZS5tdXNldW0iLCJ0cm9sbGV5Lm11c2V1bSIsInRydXN0Lm11c2V1bSIsInRydXN0ZWUu''@;'; put 'put ''bXVzZXVtIiwidWhyZW4ubXVzZXVtIiwidWxtLm11c2V1bSIsInVuZGVyc2VhLm11c2V1bSIsInVuaXZlcnNpdHkubXVzZXVtIiwidXNhLm11c2V1bSIsInVzYW50aXF1ZXMubXVzZXVtIiwidXNhcnRzLm11c2V1bSIsInVzY291bnRyeWVzdGF0ZS5tdXNldW0iLCJ1c2N1bHR1cmUubXVzZXVt''@;'; put 'put ''IiwidXNkZWNvcmF0aXZlYXJ0cy5tdXNldW0iLCJ1c2dhcmRlbi5tdXNldW0iLCJ1c2hpc3RvcnkubXVzZXVtIiwidXNodWFpYS5tdXNldW0iLCJ1c2xpdmluZ2hpc3RvcnkubXVzZXVtIiwidXRhaC5tdXNldW0iLCJ1dmljLm11c2V1bSIsInZhbGxleS5tdXNldW0iLCJ2YW50YWEubXVzZXVt''@;'; put 'put ''IiwidmVyc2FpbGxlcy5tdXNldW0iLCJ2aWtpbmcubXVzZXVtIiwidmlsbGFnZS5tdXNldW0iLCJ2aXJnaW5pYS5tdXNldW0iLCJ2aXJ0dWFsLm11c2V1bSIsInZpcnR1ZWwubXVzZXVtIiwidmxhYW5kZXJlbi5tdXNldW0iLCJ2b2xrZW5rdW5kZS5tdXNldW0iLCJ3YWxlcy5tdXNldW0iLCJ3''@;'; put 'put ''YWxsb25pZS5tdXNldW0iLCJ3YXIubXVzZXVtIiwid2FzaGluZ3RvbmRjLm11c2V1bSIsIndhdGNoYW5kY2xvY2subXVzZXVtIiwid2F0Y2gtYW5kLWNsb2NrLm11c2V1bSIsIndlc3Rlcm4ubXVzZXVtIiwid2VzdGZhbGVuLm11c2V1bSIsIndoYWxpbmcubXVzZXVtIiwid2lsZGxpZmUubXVz''@;'; put 'put ''ZXVtIiwid2lsbGlhbXNidXJnLm11c2V1bSIsIndpbmRtaWxsLm11c2V1bSIsIndvcmtzaG9wLm11c2V1bSIsInlvcmsubXVzZXVtIiwieW9ya3NoaXJlLm11c2V1bSIsInlvc2VtaXRlLm11c2V1bSIsInlvdXRoLm11c2V1bSIsInpvb2xvZ2ljYWwubXVzZXVtIiwiem9vbG9neS5tdXNldW0i''@;'; put 'put ''LCJcdTA1ZDlcdTA1ZThcdTA1ZDVcdTA1ZTlcdTA1ZGNcdTA1ZDlcdTA1ZGQubXVzZXVtIiwiXHUwNDM4XHUwNDNhXHUwNDNlXHUwNDNjLm11c2V1bSIsIm12IiwiYWVyby5tdiIsImJpei5tdiIsImNvbS5tdiIsImNvb3AubXYiLCJlZHUubXYiLCJnb3YubXYiLCJpbmZvLm12IiwiaW50Lm12''@;'; put 'put ''IiwibWlsLm12IiwibXVzZXVtLm12IiwibmFtZS5tdiIsIm5ldC5tdiIsIm9yZy5tdiIsInByby5tdiIsIm13IiwiYWMubXciLCJiaXoubXciLCJjby5tdyIsImNvbS5tdyIsImNvb3AubXciLCJlZHUubXciLCJnb3YubXciLCJpbnQubXciLCJtdXNldW0ubXciLCJuZXQubXciLCJvcmcubXci''@;'; put 'put ''LCJteCIsImNvbS5teCIsIm9yZy5teCIsImdvYi5teCIsImVkdS5teCIsIm5ldC5teCIsIm15IiwiY29tLm15IiwibmV0Lm15Iiwib3JnLm15IiwiZ292Lm15IiwiZWR1Lm15IiwibWlsLm15IiwibmFtZS5teSIsIm16IiwiYWMubXoiLCJhZHYubXoiLCJjby5teiIsImVkdS5teiIsImdvdi5t''@;'; put 'put ''eiIsIm1pbC5teiIsIm5ldC5teiIsIm9yZy5teiIsIm5hIiwiaW5mby5uYSIsInByby5uYSIsIm5hbWUubmEiLCJzY2hvb2wubmEiLCJvci5uYSIsImRyLm5hIiwidXMubmEiLCJteC5uYSIsImNhLm5hIiwiaW4ubmEiLCJjYy5uYSIsInR2Lm5hIiwid3MubmEiLCJtb2JpLm5hIiwiY28ubmEi''@;'; put 'put ''LCJjb20ubmEiLCJvcmcubmEiLCJuYW1lIiwibmMiLCJhc3NvLm5jIiwibm9tLm5jIiwibmUiLCJuZXQiLCJuZiIsImNvbS5uZiIsIm5ldC5uZiIsInBlci5uZiIsInJlYy5uZiIsIndlYi5uZiIsImFydHMubmYiLCJmaXJtLm5mIiwiaW5mby5uZiIsIm90aGVyLm5mIiwic3RvcmUubmYiLCJu''@;'; put 'put ''ZyIsImNvbS5uZyIsImVkdS5uZyIsImdvdi5uZyIsImkubmciLCJtaWwubmciLCJtb2JpLm5nIiwibmFtZS5uZyIsIm5ldC5uZyIsIm9yZy5uZyIsInNjaC5uZyIsIm5pIiwiYWMubmkiLCJiaXoubmkiLCJjby5uaSIsImNvbS5uaSIsImVkdS5uaSIsImdvYi5uaSIsImluLm5pIiwiaW5mby5u''@;'; put 'put ''aSIsImludC5uaSIsIm1pbC5uaSIsIm5ldC5uaSIsIm5vbS5uaSIsIm9yZy5uaSIsIndlYi5uaSIsIm5sIiwibm8iLCJmaHMubm8iLCJ2Z3Mubm8iLCJmeWxrZXNiaWJsLm5vIiwiZm9sa2ViaWJsLm5vIiwibXVzZXVtLm5vIiwiaWRyZXR0Lm5vIiwicHJpdi5ubyIsIm1pbC5ubyIsInN0YXQu''@;'; put 'put ''bm8iLCJkZXAubm8iLCJrb21tdW5lLm5vIiwiaGVyYWQubm8iLCJhYS5ubyIsImFoLm5vIiwiYnUubm8iLCJmbS5ubyIsImhsLm5vIiwiaG0ubm8iLCJqYW4tbWF5ZW4ubm8iLCJtci5ubyIsIm5sLm5vIiwibnQubm8iLCJvZi5ubyIsIm9sLm5vIiwib3Nsby5ubyIsInJsLm5vIiwic2Yubm8i''@;'; put 'put ''LCJzdC5ubyIsInN2YWxiYXJkLm5vIiwidG0ubm8iLCJ0ci5ubyIsInZhLm5vIiwidmYubm8iLCJncy5hYS5ubyIsImdzLmFoLm5vIiwiZ3MuYnUubm8iLCJncy5mbS5ubyIsImdzLmhsLm5vIiwiZ3MuaG0ubm8iLCJncy5qYW4tbWF5ZW4ubm8iLCJncy5tci5ubyIsImdzLm5sLm5vIiwiZ3Mu''@;'; put 'put ''bnQubm8iLCJncy5vZi5ubyIsImdzLm9sLm5vIiwiZ3Mub3Nsby5ubyIsImdzLnJsLm5vIiwiZ3Muc2Yubm8iLCJncy5zdC5ubyIsImdzLnN2YWxiYXJkLm5vIiwiZ3MudG0ubm8iLCJncy50ci5ubyIsImdzLnZhLm5vIiwiZ3MudmYubm8iLCJha3JlaGFtbi5ubyIsIlx4ZTVrcmVoYW1uLm5v''@;'; put 'put ''IiwiYWxnYXJkLm5vIiwiXHhlNWxnXHhlNXJkLm5vIiwiYXJuYS5ubyIsImJydW11bmRkYWwubm8iLCJicnluZS5ubyIsImJyb25ub3lzdW5kLm5vIiwiYnJceGY4bm5ceGY4eXN1bmQubm8iLCJkcm9iYWsubm8iLCJkclx4ZjhiYWsubm8iLCJlZ2Vyc3VuZC5ubyIsImZldHN1bmQubm8iLCJm''@;'; put 'put ''bG9yby5ubyIsImZsb3JceGY4Lm5vIiwiZnJlZHJpa3N0YWQubm8iLCJob2trc3VuZC5ubyIsImhvbmVmb3NzLm5vIiwiaFx4ZjhuZWZvc3Mubm8iLCJqZXNzaGVpbS5ubyIsImpvcnBlbGFuZC5ubyIsImpceGY4cnBlbGFuZC5ubyIsImtpcmtlbmVzLm5vIiwia29wZXJ2aWsubm8iLCJrcm9r''@;'; put 'put ''c3RhZGVsdmEubm8iLCJsYW5nZXZhZy5ubyIsImxhbmdldlx4ZTVnLm5vIiwibGVpcnZpay5ubyIsIm1qb25kYWxlbi5ubyIsIm1qXHhmOG5kYWxlbi5ubyIsIm1vLWktcmFuYS5ubyIsIm1vc2pvZW4ubm8iLCJtb3NqXHhmOGVuLm5vIiwibmVzb2RkdGFuZ2VuLm5vIiwib3JrYW5nZXIubm8i''@;'; put 'put ''LCJvc295cm8ubm8iLCJvc1x4Zjh5cm8ubm8iLCJyYWhvbHQubm8iLCJyXHhlNWhvbHQubm8iLCJzYW5kbmVzc2pvZW4ubm8iLCJzYW5kbmVzc2pceGY4ZW4ubm8iLCJza2Vkc21va29yc2V0Lm5vIiwic2xhdHR1bS5ubyIsInNwamVsa2F2aWsubm8iLCJzdGF0aGVsbGUubm8iLCJzdGF2ZXJu''@;'; put 'put ''Lm5vIiwic3Rqb3JkYWxzaGFsc2VuLm5vIiwic3RqXHhmOHJkYWxzaGFsc2VuLm5vIiwidGFuYW5nZXIubm8iLCJ0cmFuYnkubm8iLCJ2b3NzZXZhbmdlbi5ubyIsImFmam9yZC5ubyIsIlx4ZTVmam9yZC5ubyIsImFnZGVuZXMubm8iLCJhbC5ubyIsIlx4ZTVsLm5vIiwiYWxlc3VuZC5ubyIs''@;'; put 'put ''Ilx4ZTVsZXN1bmQubm8iLCJhbHN0YWhhdWcubm8iLCJhbHRhLm5vIiwiXHhlMWx0XHhlMS5ubyIsImFsYWhlYWRqdS5ubyIsIlx4ZTFsYWhlYWRqdS5ubyIsImFsdmRhbC5ubyIsImFtbGkubm8iLCJceGU1bWxpLm5vIiwiYW1vdC5ubyIsIlx4ZTVtb3Qubm8iLCJhbmRlYnUubm8iLCJhbmRv''@;'; put 'put ''eS5ubyIsImFuZFx4Zjh5Lm5vIiwiYW5kYXN1b2xvLm5vIiwiYXJkYWwubm8iLCJceGU1cmRhbC5ubyIsImFyZW1hcmsubm8iLCJhcmVuZGFsLm5vIiwiXHhlNXMubm8iLCJhc2VyYWwubm8iLCJceGU1c2VyYWwubm8iLCJhc2tlci5ubyIsImFza2ltLm5vIiwiYXNrdm9sbC5ubyIsImFza295''@;'; put 'put ''Lm5vIiwiYXNrXHhmOHkubm8iLCJhc25lcy5ubyIsIlx4ZTVzbmVzLm5vIiwiYXVkbmVkYWxuLm5vIiwiYXVrcmEubm8iLCJhdXJlLm5vIiwiYXVybGFuZC5ubyIsImF1cnNrb2ctaG9sYW5kLm5vIiwiYXVyc2tvZy1oXHhmOGxhbmQubm8iLCJhdXN0ZXZvbGwubm8iLCJhdXN0cmhlaW0ubm8i''@;'; put 'put ''LCJhdmVyb3kubm8iLCJhdmVyXHhmOHkubm8iLCJiYWxlc3RyYW5kLm5vIiwiYmFsbGFuZ2VuLm5vIiwiYmFsYXQubm8iLCJiXHhlMWxceGUxdC5ubyIsImJhbHNmam9yZC5ubyIsImJhaGNjYXZ1b3RuYS5ubyIsImJceGUxaGNjYXZ1b3RuYS5ubyIsImJhbWJsZS5ubyIsImJhcmR1Lm5vIiwi''@;'; put 'put ''YmVhcmR1Lm5vIiwiYmVpYXJuLm5vIiwiYmFqZGRhci5ubyIsImJceGUxamRkYXIubm8iLCJiYWlkYXIubm8iLCJiXHhlMWlkXHhlMXIubm8iLCJiZXJnLm5vIiwiYmVyZ2VuLm5vIiwiYmVybGV2YWcubm8iLCJiZXJsZXZceGU1Zy5ubyIsImJlYXJhbHZhaGtpLm5vIiwiYmVhcmFsdlx4ZTFo''@;'; put 'put ''a2kubm8iLCJiaW5kYWwubm8iLCJiaXJrZW5lcy5ubyIsImJqYXJrb3kubm8iLCJiamFya1x4Zjh5Lm5vIiwiYmplcmtyZWltLm5vIiwiYmp1Z24ubm8iLCJib2RvLm5vIiwiYm9kXHhmOC5ubyIsImJhZGFkZGphLm5vIiwiYlx4ZTVkXHhlNWRkalx4ZTUubm8iLCJidWRlamp1Lm5vIiwiYm9r''@;'; put 'put ''bi5ubyIsImJyZW1hbmdlci5ubyIsImJyb25ub3kubm8iLCJiclx4Zjhublx4Zjh5Lm5vIiwiYnlnbGFuZC5ubyIsImJ5a2xlLm5vIiwiYmFydW0ubm8iLCJiXHhlNnJ1bS5ubyIsImJvLnRlbGVtYXJrLm5vIiwiYlx4ZjgudGVsZW1hcmsubm8iLCJiby5ub3JkbGFuZC5ubyIsImJceGY4Lm5v''@;'; put 'put ''cmRsYW5kLm5vIiwiYmlldmF0Lm5vIiwiYmlldlx4ZTF0Lm5vIiwiYm9tbG8ubm8iLCJiXHhmOG1sby5ubyIsImJhdHNmam9yZC5ubyIsImJceGU1dHNmam9yZC5ubyIsImJhaGNhdnVvdG5hLm5vIiwiYlx4ZTFoY2F2dW90bmEubm8iLCJkb3ZyZS5ubyIsImRyYW1tZW4ubm8iLCJkcmFuZ2Vk''@;'; put 'put ''YWwubm8iLCJkeXJveS5ubyIsImR5clx4Zjh5Lm5vIiwiZG9ubmEubm8iLCJkXHhmOG5uYS5ubyIsImVpZC5ubyIsImVpZGZqb3JkLm5vIiwiZWlkc2Jlcmcubm8iLCJlaWRza29nLm5vIiwiZWlkc3ZvbGwubm8iLCJlaWdlcnN1bmQubm8iLCJlbHZlcnVtLm5vIiwiZW5lYmFray5ubyIsImVu''@;'; put 'put ''Z2VyZGFsLm5vIiwiZXRuZS5ubyIsImV0bmVkYWwubm8iLCJldmVuZXMubm8iLCJldmVuYXNzaS5ubyIsImV2ZW5ceGUxXHUwMTYxXHUwMTYxaS5ubyIsImV2amUtb2ctaG9ybm5lcy5ubyIsImZhcnN1bmQubm8iLCJmYXVza2Uubm8iLCJmdW9zc2tvLm5vIiwiZnVvaXNrdS5ubyIsImZlZGpl''@;'; put 'put ''Lm5vIiwiZmV0Lm5vIiwiZmlubm95Lm5vIiwiZmlublx4Zjh5Lm5vIiwiZml0amFyLm5vIiwiZmphbGVyLm5vIiwiZmplbGwubm8iLCJmbGFrc3RhZC5ubyIsImZsYXRhbmdlci5ubyIsImZsZWtrZWZqb3JkLm5vIiwiZmxlc2Jlcmcubm8iLCJmbG9yYS5ubyIsImZsYS5ubyIsImZsXHhlNS5u''@;'; put 'put ''byIsImZvbGxkYWwubm8iLCJmb3JzYW5kLm5vIiwiZm9zbmVzLm5vIiwiZnJlaS5ubyIsImZyb2duLm5vIiwiZnJvbGFuZC5ubyIsImZyb3N0YS5ubyIsImZyYW5hLm5vIiwiZnJceGU2bmEubm8iLCJmcm95YS5ubyIsImZyXHhmOHlhLm5vIiwiZnVzYS5ubyIsImZ5cmVzZGFsLm5vIiwiZm9y''@;'; put 'put ''ZGUubm8iLCJmXHhmOHJkZS5ubyIsImdhbXZpay5ubyIsImdhbmdhdmlpa2Eubm8iLCJnXHhlMVx1MDE0Ymdhdmlpa2Eubm8iLCJnYXVsYXIubm8iLCJnYXVzZGFsLm5vIiwiZ2lsZGVza2FsLm5vIiwiZ2lsZGVza1x4ZTVsLm5vIiwiZ2lza2Uubm8iLCJnamVtbmVzLm5vIiwiZ2plcmRydW0u''@;'; put 'put ''bm8iLCJnamVyc3RhZC5ubyIsImdqZXNkYWwubm8iLCJnam92aWsubm8iLCJnalx4Zjh2aWsubm8iLCJnbG9wcGVuLm5vIiwiZ29sLm5vIiwiZ3Jhbi5ubyIsImdyYW5lLm5vIiwiZ3JhbnZpbi5ubyIsImdyYXRhbmdlbi5ubyIsImdyaW1zdGFkLm5vIiwiZ3Jvbmcubm8iLCJrcmFhbmdoa2Uu''@;'; put 'put ''bm8iLCJrclx4ZTVhbmdoa2Uubm8iLCJncnVlLm5vIiwiZ3VsZW4ubm8iLCJoYWRzZWwubm8iLCJoYWxkZW4ubm8iLCJoYWxzYS5ubyIsImhhbWFyLm5vIiwiaGFtYXJveS5ubyIsImhhYm1lci5ubyIsImhceGUxYm1lci5ubyIsImhhcG1pci5ubyIsImhceGUxcG1pci5ubyIsImhhbW1lcmZl''@;'; put 'put ''c3Qubm8iLCJoYW1tYXJmZWFzdGEubm8iLCJoXHhlMW1tXHhlMXJmZWFzdGEubm8iLCJoYXJhbS5ubyIsImhhcmVpZC5ubyIsImhhcnN0YWQubm8iLCJoYXN2aWsubm8iLCJha25vbHVva3RhLm5vIiwiXHhlMWtcdTAxNGJvbHVva3RhLm5vIiwiaGF0dGZqZWxsZGFsLm5vIiwiYWFyYm9ydGUu''@;'; put 'put ''bm8iLCJoYXVnZXN1bmQubm8iLCJoZW1uZS5ubyIsImhlbW5lcy5ubyIsImhlbXNlZGFsLm5vIiwiaGVyb3kubW9yZS1vZy1yb21zZGFsLm5vIiwiaGVyXHhmOHkubVx4ZjhyZS1vZy1yb21zZGFsLm5vIiwiaGVyb3kubm9yZGxhbmQubm8iLCJoZXJceGY4eS5ub3JkbGFuZC5ubyIsImhpdHJh''@;'; put 'put ''Lm5vIiwiaGphcnRkYWwubm8iLCJoamVsbWVsYW5kLm5vIiwiaG9ib2wubm8iLCJob2JceGY4bC5ubyIsImhvZi5ubyIsImhvbC5ubyIsImhvbGUubm8iLCJob2xtZXN0cmFuZC5ubyIsImhvbHRhbGVuLm5vIiwiaG9sdFx4ZTVsZW4ubm8iLCJob3JuaW5kYWwubm8iLCJob3J0ZW4ubm8iLCJo''@;'; put 'put ''dXJkYWwubm8iLCJodXJ1bS5ubyIsImh2YWxlci5ubyIsImh5bGxlc3RhZC5ubyIsImhhZ2Vib3N0YWQubm8iLCJoXHhlNmdlYm9zdGFkLm5vIiwiaG95YW5nZXIubm8iLCJoXHhmOHlhbmdlci5ubyIsImhveWxhbmRldC5ubyIsImhceGY4eWxhbmRldC5ubyIsImhhLm5vIiwiaFx4ZTUubm8i''@;'; put 'put ''LCJpYmVzdGFkLm5vIiwiaW5kZXJveS5ubyIsImluZGVyXHhmOHkubm8iLCJpdmVsYW5kLm5vIiwiamV2bmFrZXIubm8iLCJqb25kYWwubm8iLCJqb2xzdGVyLm5vIiwialx4Zjhsc3Rlci5ubyIsImthcmFzam9rLm5vIiwia2FyYXNqb2hrYS5ubyIsImtceGUxclx4ZTFcdTAxNjFqb2hrYS5u''@;'; put 'put ''byIsImthcmxzb3kubm8iLCJnYWxzYS5ubyIsImdceGUxbHNceGUxLm5vIiwia2FybW95Lm5vIiwia2FybVx4Zjh5Lm5vIiwia2F1dG9rZWluby5ubyIsImd1b3ZkYWdlYWlkbnUubm8iLCJrbGVwcC5ubyIsImtsYWJ1Lm5vIiwia2xceGU2YnUubm8iLCJrb25nc2Jlcmcubm8iLCJrb25nc3Zp''@;'; put 'put ''bmdlci5ubyIsImtyYWdlcm8ubm8iLCJrcmFnZXJceGY4Lm5vIiwia3Jpc3RpYW5zYW5kLm5vIiwia3Jpc3RpYW5zdW5kLm5vIiwia3JvZHNoZXJhZC5ubyIsImtyXHhmOGRzaGVyYWQubm8iLCJrdmFsc3VuZC5ubyIsInJhaGtrZXJhdmp1Lm5vIiwiclx4ZTFoa2tlclx4ZTF2anUubm8iLCJr''@;'; put 'put ''dmFtLm5vIiwia3ZpbmVzZGFsLm5vIiwia3Zpbm5oZXJhZC5ubyIsImt2aXRlc2VpZC5ubyIsImt2aXRzb3kubm8iLCJrdml0c1x4Zjh5Lm5vIiwia3ZhZmpvcmQubm8iLCJrdlx4ZTZmam9yZC5ubyIsImdpZWh0YXZ1b2F0bmEubm8iLCJrdmFuYW5nZW4ubm8iLCJrdlx4ZTZuYW5nZW4ubm8i''@;'; put 'put ''LCJuYXZ1b3RuYS5ubyIsIm5ceGUxdnVvdG5hLm5vIiwia2Fmam9yZC5ubyIsImtceGU1ZmpvcmQubm8iLCJnYWl2dW90bmEubm8iLCJnXHhlMWl2dW90bmEubm8iLCJsYXJ2aWsubm8iLCJsYXZhbmdlbi5ubyIsImxhdmFnaXMubm8iLCJsb2FiYXQubm8iLCJsb2FiXHhlMXQubm8iLCJsZWJl''@;'; put 'put ''c2J5Lm5vIiwiZGF2dmVzaWlkYS5ubyIsImxlaWthbmdlci5ubyIsImxlaXJmam9yZC5ubyIsImxla2Eubm8iLCJsZWtzdmlrLm5vIiwibGVudmlrLm5vIiwibGVhbmdhdmlpa2Eubm8iLCJsZWFcdTAxNGJnYXZpaWthLm5vIiwibGVzamEubm8iLCJsZXZhbmdlci5ubyIsImxpZXIubm8iLCJs''@;'; put 'put ''aWVybmUubm8iLCJsaWxsZWhhbW1lci5ubyIsImxpbGxlc2FuZC5ubyIsImxpbmRlc25lcy5ubyIsImxpbmRhcy5ubyIsImxpbmRceGU1cy5ubyIsImxvbS5ubyIsImxvcHBhLm5vIiwibGFocHBpLm5vIiwibFx4ZTFocHBpLm5vIiwibHVuZC5ubyIsImx1bm5lci5ubyIsImx1cm95Lm5vIiwi''@;'; put 'put ''bHVyXHhmOHkubm8iLCJsdXN0ZXIubm8iLCJseW5nZGFsLm5vIiwibHluZ2VuLm5vIiwiaXZndS5ubyIsImxhcmRhbC5ubyIsImxlcmRhbC5ubyIsImxceGU2cmRhbC5ubyIsImxvZGluZ2VuLm5vIiwibFx4ZjhkaW5nZW4ubm8iLCJsb3JlbnNrb2cubm8iLCJsXHhmOHJlbnNrb2cubm8iLCJs''@;'; put 'put ''b3Rlbi5ubyIsImxceGY4dGVuLm5vIiwibWFsdmlrLm5vIiwibWFzb3kubm8iLCJtXHhlNXNceGY4eS5ubyIsIm11b3NhdC5ubyIsIm11b3NceGUxdC5ubyIsIm1hbmRhbC5ubyIsIm1hcmtlci5ubyIsIm1hcm5hcmRhbC5ubyIsIm1hc2Zqb3JkZW4ubm8iLCJtZWxhbmQubm8iLCJtZWxkYWwu''@;'; put 'put ''bm8iLCJtZWxodXMubm8iLCJtZWxveS5ubyIsIm1lbFx4Zjh5Lm5vIiwibWVyYWtlci5ubyIsIm1lclx4ZTVrZXIubm8iLCJtb2FyZWtlLm5vIiwibW9ceGU1cmVrZS5ubyIsIm1pZHN1bmQubm8iLCJtaWR0cmUtZ2F1bGRhbC5ubyIsIm1vZGFsZW4ubm8iLCJtb2R1bS5ubyIsIm1vbGRlLm5v''@;'; put 'put ''IiwibW9za2VuZXMubm8iLCJtb3NzLm5vIiwibW9zdmlrLm5vIiwibWFsc2Vsdi5ubyIsIm1ceGU1bHNlbHYubm8iLCJtYWxhdHZ1b3BtaS5ubyIsIm1ceGUxbGF0dnVvcG1pLm5vIiwibmFtZGFsc2VpZC5ubyIsImFlanJpZS5ubyIsIm5hbXNvcy5ubyIsIm5hbXNza29nYW4ubm8iLCJuYWFt''@;'; put 'put ''ZXNqZXZ1ZW1pZS5ubyIsIm5ceGU1XHhlNW1lc2pldnVlbWllLm5vIiwibGFha2VzdnVlbWllLm5vIiwibmFubmVzdGFkLm5vIiwibmFydmlrLm5vIiwibmFydmlpa2Eubm8iLCJuYXVzdGRhbC5ubyIsIm5lZHJlLWVpa2VyLm5vIiwibmVzLmFrZXJzaHVzLm5vIiwibmVzLmJ1c2tlcnVkLm5v''@;'; put 'put ''IiwibmVzbmEubm8iLCJuZXNvZGRlbi5ubyIsIm5lc3NlYnkubm8iLCJ1bmphcmdhLm5vIiwidW5qXHhlMXJnYS5ubyIsIm5lc3NldC5ubyIsIm5pc3NlZGFsLm5vIiwibml0dGVkYWwubm8iLCJub3JkLWF1cmRhbC5ubyIsIm5vcmQtZnJvbi5ubyIsIm5vcmQtb2RhbC5ubyIsIm5vcmRkYWwu''@;'; put 'put ''bm8iLCJub3Jka2FwcC5ubyIsImRhdnZlbmphcmdhLm5vIiwiZGF2dmVualx4ZTFyZ2Eubm8iLCJub3JkcmUtbGFuZC5ubyIsIm5vcmRyZWlzYS5ubyIsInJhaXNhLm5vIiwiclx4ZTFpc2Eubm8iLCJub3JlLW9nLXV2ZGFsLm5vIiwibm90b2RkZW4ubm8iLCJuYXJveS5ubyIsIm5ceGU2clx4''@;'; put 'put ''Zjh5Lm5vIiwibm90dGVyb3kubm8iLCJuXHhmOHR0ZXJceGY4eS5ubyIsIm9kZGEubm8iLCJva3NuZXMubm8iLCJceGY4a3NuZXMubm8iLCJvcHBkYWwubm8iLCJvcHBlZ2FyZC5ubyIsIm9wcGVnXHhlNXJkLm5vIiwib3JrZGFsLm5vIiwib3JsYW5kLm5vIiwiXHhmOHJsYW5kLm5vIiwib3Jz''@;'; put 'put ''a29nLm5vIiwiXHhmOHJza29nLm5vIiwib3JzdGEubm8iLCJceGY4cnN0YS5ubyIsIm9zLmhlZG1hcmsubm8iLCJvcy5ob3JkYWxhbmQubm8iLCJvc2VuLm5vIiwib3N0ZXJveS5ubyIsIm9zdGVyXHhmOHkubm8iLCJvc3RyZS10b3Rlbi5ubyIsIlx4ZjhzdHJlLXRvdGVuLm5vIiwib3Zlcmhh''@;'; put 'put ''bGxhLm5vIiwib3ZyZS1laWtlci5ubyIsIlx4Zjh2cmUtZWlrZXIubm8iLCJveWVyLm5vIiwiXHhmOHllci5ubyIsIm95Z2FyZGVuLm5vIiwiXHhmOHlnYXJkZW4ubm8iLCJveXN0cmUtc2xpZHJlLm5vIiwiXHhmOHlzdHJlLXNsaWRyZS5ubyIsInBvcnNhbmdlci5ubyIsInBvcnNhbmd1Lm5v''@;'; put 'put ''IiwicG9yc1x4ZTFcdTAxNGJndS5ubyIsInBvcnNncnVubi5ubyIsInJhZG95Lm5vIiwicmFkXHhmOHkubm8iLCJyYWtrZXN0YWQubm8iLCJyYW5hLm5vIiwicnVvdmF0Lm5vIiwicmFuZGFiZXJnLm5vIiwicmF1bWEubm8iLCJyZW5kYWxlbi5ubyIsInJlbm5lYnUubm8iLCJyZW5uZXNveS5u''@;'; put 'put ''byIsInJlbm5lc1x4Zjh5Lm5vIiwicmluZGFsLm5vIiwicmluZ2VidS5ubyIsInJpbmdlcmlrZS5ubyIsInJpbmdzYWtlci5ubyIsInJpc3NhLm5vIiwicmlzb3Iubm8iLCJyaXNceGY4ci5ubyIsInJvYW4ubm8iLCJyb2xsYWcubm8iLCJyeWdnZS5ubyIsInJhbGluZ2VuLm5vIiwiclx4ZTZs''@;'; put 'put ''aW5nZW4ubm8iLCJyb2RveS5ubyIsInJceGY4ZFx4Zjh5Lm5vIiwicm9tc2tvZy5ubyIsInJceGY4bXNrb2cubm8iLCJyb3Jvcy5ubyIsInJceGY4cm9zLm5vIiwicm9zdC5ubyIsInJceGY4c3Qubm8iLCJyb3lrZW4ubm8iLCJyXHhmOHlrZW4ubm8iLCJyb3lydmlrLm5vIiwiclx4Zjh5cnZp''@;'; put 'put ''ay5ubyIsInJhZGUubm8iLCJyXHhlNWRlLm5vIiwic2FsYW5nZW4ubm8iLCJzaWVsbGFrLm5vIiwic2FsdGRhbC5ubyIsInNhbGF0Lm5vIiwic1x4ZTFsXHhlMXQubm8iLCJzXHhlMWxhdC5ubyIsInNhbW5hbmdlci5ubyIsInNhbmRlLm1vcmUtb2ctcm9tc2RhbC5ubyIsInNhbmRlLm1ceGY4''@;'; put 'put ''cmUtb2ctcm9tc2RhbC5ubyIsInNhbmRlLnZlc3Rmb2xkLm5vIiwic2FuZGVmam9yZC5ubyIsInNhbmRuZXMubm8iLCJzYW5kb3kubm8iLCJzYW5kXHhmOHkubm8iLCJzYXJwc2Jvcmcubm8iLCJzYXVkYS5ubyIsInNhdWhlcmFkLm5vIiwic2VsLm5vIiwic2VsYnUubm8iLCJzZWxqZS5ubyIs''@;'; put 'put ''InNlbGpvcmQubm8iLCJzaWdkYWwubm8iLCJzaWxqYW4ubm8iLCJzaXJkYWwubm8iLCJza2F1bi5ubyIsInNrZWRzbW8ubm8iLCJza2kubm8iLCJza2llbi5ubyIsInNraXB0dmV0Lm5vIiwic2tqZXJ2b3kubm8iLCJza2plcnZceGY4eS5ubyIsInNraWVydmEubm8iLCJza2llcnZceGUxLm5v''@;'; put 'put ''Iiwic2tqYWsubm8iLCJza2pceGU1ay5ubyIsInNrb2RqZS5ubyIsInNrYW5sYW5kLm5vIiwic2tceGU1bmxhbmQubm8iLCJza2FuaXQubm8iLCJza1x4ZTFuaXQubm8iLCJzbW9sYS5ubyIsInNtXHhmOGxhLm5vIiwic25pbGxmam9yZC5ubyIsInNuYXNhLm5vIiwic25ceGU1c2Eubm8iLCJz''@;'; put 'put ''bm9hc2Eubm8iLCJzbmFhc2Uubm8iLCJzblx4ZTVhc2Uubm8iLCJzb2duZGFsLm5vIiwic29rbmRhbC5ubyIsInNvbGEubm8iLCJzb2x1bmQubm8iLCJzb25nZGFsZW4ubm8iLCJzb3J0bGFuZC5ubyIsInNweWRlYmVyZy5ubyIsInN0YW5nZS5ubyIsInN0YXZhbmdlci5ubyIsInN0ZWlnZW4u''@;'; put 'put ''bm8iLCJzdGVpbmtqZXIubm8iLCJzdGpvcmRhbC5ubyIsInN0alx4ZjhyZGFsLm5vIiwic3Rva2tlLm5vIiwic3Rvci1lbHZkYWwubm8iLCJzdG9yZC5ubyIsInN0b3JkYWwubm8iLCJzdG9yZmpvcmQubm8iLCJvbWFzdnVvdG5hLm5vIiwic3RyYW5kLm5vIiwic3RyYW5kYS5ubyIsInN0cnlu''@;'; put 'put ''Lm5vIiwic3VsYS5ubyIsInN1bGRhbC5ubyIsInN1bmQubm8iLCJzdW5uZGFsLm5vIiwic3VybmFkYWwubm8iLCJzdmVpby5ubyIsInN2ZWx2aWsubm8iLCJzeWtreWx2ZW4ubm8iLCJzb2duZS5ubyIsInNceGY4Z25lLm5vIiwic29tbmEubm8iLCJzXHhmOG1uYS5ubyIsInNvbmRyZS1sYW5k''@;'; put 'put ''Lm5vIiwic1x4ZjhuZHJlLWxhbmQubm8iLCJzb3ItYXVyZGFsLm5vIiwic1x4ZjhyLWF1cmRhbC5ubyIsInNvci1mcm9uLm5vIiwic1x4ZjhyLWZyb24ubm8iLCJzb3Itb2RhbC5ubyIsInNceGY4ci1vZGFsLm5vIiwic29yLXZhcmFuZ2VyLm5vIiwic1x4ZjhyLXZhcmFuZ2VyLm5vIiwibWF0''@;'; put 'put ''dGEtdmFyamphdC5ubyIsIm1ceGUxdHRhLXZceGUxcmpqYXQubm8iLCJzb3Jmb2xkLm5vIiwic1x4ZjhyZm9sZC5ubyIsInNvcnJlaXNhLm5vIiwic1x4ZjhycmVpc2Eubm8iLCJzb3J1bS5ubyIsInNceGY4cnVtLm5vIiwidGFuYS5ubyIsImRlYXRudS5ubyIsInRpbWUubm8iLCJ0aW5ndm9s''@;'; put 'put ''bC5ubyIsInRpbm4ubm8iLCJ0amVsZHN1bmQubm8iLCJkaWVsZGRhbnVvcnJpLm5vIiwidGpvbWUubm8iLCJ0alx4ZjhtZS5ubyIsInRva2tlLm5vIiwidG9sZ2Eubm8iLCJ0b3Jza2VuLm5vIiwidHJhbm95Lm5vIiwidHJhblx4Zjh5Lm5vIiwidHJvbXNvLm5vIiwidHJvbXNceGY4Lm5vIiwi''@;'; put 'put ''dHJvbXNhLm5vIiwicm9tc2Eubm8iLCJ0cm9uZGhlaW0ubm8iLCJ0cm9hbmRpbi5ubyIsInRyeXNpbC5ubyIsInRyYW5hLm5vIiwidHJceGU2bmEubm8iLCJ0cm9nc3RhZC5ubyIsInRyXHhmOGdzdGFkLm5vIiwidHZlZGVzdHJhbmQubm8iLCJ0eWRhbC5ubyIsInR5bnNldC5ubyIsInR5c2Zq''@;'; put 'put ''b3JkLm5vIiwiZGl2dGFzdnVvZG5hLm5vIiwiZGl2dHRhc3Z1b3RuYS5ubyIsInR5c25lcy5ubyIsInR5c3Zhci5ubyIsInR5c3ZceGU2ci5ubyIsInRvbnNiZXJnLm5vIiwidFx4Zjhuc2Jlcmcubm8iLCJ1bGxlbnNha2VyLm5vIiwidWxsZW5zdmFuZy5ubyIsInVsdmlrLm5vIiwidXRzaXJh''@;'; put 'put ''Lm5vIiwidmFkc28ubm8iLCJ2YWRzXHhmOC5ubyIsImNhaGNlc3VvbG8ubm8iLCJcdTAxMGRceGUxaGNlc3VvbG8ubm8iLCJ2YWtzZGFsLm5vIiwidmFsbGUubm8iLCJ2YW5nLm5vIiwidmFueWx2ZW4ubm8iLCJ2YXJkby5ubyIsInZhcmRceGY4Lm5vIiwidmFyZ2dhdC5ubyIsInZceGUxcmdn''@;'; put 'put ''XHhlMXQubm8iLCJ2ZWZzbi5ubyIsInZhYXBzdGUubm8iLCJ2ZWdhLm5vIiwidmVnYXJzaGVpLm5vIiwidmVnXHhlNXJzaGVpLm5vIiwidmVubmVzbGEubm8iLCJ2ZXJkYWwubm8iLCJ2ZXJyYW4ubm8iLCJ2ZXN0Ynkubm8iLCJ2ZXN0bmVzLm5vIiwidmVzdHJlLXNsaWRyZS5ubyIsInZlc3Ry''@;'; put 'put ''ZS10b3Rlbi5ubyIsInZlc3R2YWdveS5ubyIsInZlc3R2XHhlNWdceGY4eS5ubyIsInZldmVsc3RhZC5ubyIsInZpay5ubyIsInZpa25hLm5vIiwidmluZGFmam9yZC5ubyIsInZvbGRhLm5vIiwidm9zcy5ubyIsInZhcm95Lm5vIiwidlx4ZTZyXHhmOHkubm8iLCJ2YWdhbi5ubyIsInZceGU1''@;'; put 'put ''Z2FuLm5vIiwidm9hZ2F0Lm5vIiwidmFnc295Lm5vIiwidlx4ZTVnc1x4Zjh5Lm5vIiwidmFnYS5ubyIsInZceGU1Z1x4ZTUubm8iLCJ2YWxlci5vc3Rmb2xkLm5vIiwidlx4ZTVsZXIuXHhmOHN0Zm9sZC5ubyIsInZhbGVyLmhlZG1hcmsubm8iLCJ2XHhlNWxlci5oZWRtYXJrLm5vIiwiKi5u''@;'; put 'put ''cCIsIm5yIiwiYml6Lm5yIiwiaW5mby5uciIsImdvdi5uciIsImVkdS5uciIsIm9yZy5uciIsIm5ldC5uciIsImNvbS5uciIsIm51IiwibnoiLCJhYy5ueiIsImNvLm56IiwiY3JpLm56IiwiZ2Vlay5ueiIsImdlbi5ueiIsImdvdnQubnoiLCJoZWFsdGgubnoiLCJpd2kubnoiLCJraXdpLm56''@;'; put 'put ''IiwibWFvcmkubnoiLCJtaWwubnoiLCJtXHUwMTAxb3JpLm56IiwibmV0Lm56Iiwib3JnLm56IiwicGFybGlhbWVudC5ueiIsInNjaG9vbC5ueiIsIm9tIiwiY28ub20iLCJjb20ub20iLCJlZHUub20iLCJnb3Yub20iLCJtZWQub20iLCJtdXNldW0ub20iLCJuZXQub20iLCJvcmcub20iLCJw''@;'; put 'put ''cm8ub20iLCJvbmlvbiIsIm9yZyIsInBhIiwiYWMucGEiLCJnb2IucGEiLCJjb20ucGEiLCJvcmcucGEiLCJzbGQucGEiLCJlZHUucGEiLCJuZXQucGEiLCJpbmcucGEiLCJhYm8ucGEiLCJtZWQucGEiLCJub20ucGEiLCJwZSIsImVkdS5wZSIsImdvYi5wZSIsIm5vbS5wZSIsIm1pbC5wZSIs''@;'; put 'put ''Im9yZy5wZSIsImNvbS5wZSIsIm5ldC5wZSIsInBmIiwiY29tLnBmIiwib3JnLnBmIiwiZWR1LnBmIiwiKi5wZyIsInBoIiwiY29tLnBoIiwibmV0LnBoIiwib3JnLnBoIiwiZ292LnBoIiwiZWR1LnBoIiwibmdvLnBoIiwibWlsLnBoIiwiaS5waCIsInBrIiwiY29tLnBrIiwibmV0LnBrIiwi''@;'; put 'put ''ZWR1LnBrIiwib3JnLnBrIiwiZmFtLnBrIiwiYml6LnBrIiwid2ViLnBrIiwiZ292LnBrIiwiZ29iLnBrIiwiZ29rLnBrIiwiZ29uLnBrIiwiZ29wLnBrIiwiZ29zLnBrIiwiaW5mby5wayIsInBsIiwiY29tLnBsIiwibmV0LnBsIiwib3JnLnBsIiwiYWlkLnBsIiwiYWdyby5wbCIsImF0bS5w''@;'; put 'put ''bCIsImF1dG8ucGwiLCJiaXoucGwiLCJlZHUucGwiLCJnbWluYS5wbCIsImdzbS5wbCIsImluZm8ucGwiLCJtYWlsLnBsIiwibWlhc3RhLnBsIiwibWVkaWEucGwiLCJtaWwucGwiLCJuaWVydWNob21vc2NpLnBsIiwibm9tLnBsIiwicGMucGwiLCJwb3dpYXQucGwiLCJwcml2LnBsIiwicmVh''@;'; put 'put ''bGVzdGF0ZS5wbCIsInJlbC5wbCIsInNleC5wbCIsInNob3AucGwiLCJza2xlcC5wbCIsInNvcy5wbCIsInN6a29sYS5wbCIsInRhcmdpLnBsIiwidG0ucGwiLCJ0b3VyaXNtLnBsIiwidHJhdmVsLnBsIiwidHVyeXN0eWthLnBsIiwiZ292LnBsIiwiYXAuZ292LnBsIiwiaWMuZ292LnBsIiwi''@;'; put 'put ''aXMuZ292LnBsIiwidXMuZ292LnBsIiwia21wc3AuZ292LnBsIiwia3Bwc3AuZ292LnBsIiwia3dwc3AuZ292LnBsIiwicHNwLmdvdi5wbCIsIndza3IuZ292LnBsIiwia3dwLmdvdi5wbCIsIm13Lmdvdi5wbCIsInVnLmdvdi5wbCIsInVtLmdvdi5wbCIsInVtaWcuZ292LnBsIiwidWdpbS5n''@;'; put 'put ''b3YucGwiLCJ1cG93Lmdvdi5wbCIsInV3Lmdvdi5wbCIsInN0YXJvc3R3by5nb3YucGwiLCJwYS5nb3YucGwiLCJwby5nb3YucGwiLCJwc3NlLmdvdi5wbCIsInB1cC5nb3YucGwiLCJyemd3Lmdvdi5wbCIsInNhLmdvdi5wbCIsInNvLmdvdi5wbCIsInNyLmdvdi5wbCIsIndzYS5nb3YucGwi''@;'; put 'put ''LCJza28uZ292LnBsIiwidXpzLmdvdi5wbCIsIndpaWguZ292LnBsIiwid2luYi5nb3YucGwiLCJwaW5iLmdvdi5wbCIsIndpb3MuZ292LnBsIiwid2l0ZC5nb3YucGwiLCJ3em1pdXcuZ292LnBsIiwicGl3Lmdvdi5wbCIsIndpdy5nb3YucGwiLCJncml3Lmdvdi5wbCIsIndpZi5nb3YucGwi''@;'; put 'put ''LCJvdW0uZ292LnBsIiwic2RuLmdvdi5wbCIsInpwLmdvdi5wbCIsInVwcG8uZ292LnBsIiwibXVwLmdvdi5wbCIsInd1b3ouZ292LnBsIiwia29uc3VsYXQuZ292LnBsIiwib2lybS5nb3YucGwiLCJhdWd1c3Rvdy5wbCIsImJhYmlhLWdvcmEucGwiLCJiZWR6aW4ucGwiLCJiZXNraWR5LnBs''@;'; put 'put ''IiwiYmlhbG93aWV6YS5wbCIsImJpYWx5c3Rvay5wbCIsImJpZWxhd2EucGwiLCJiaWVzemN6YWR5LnBsIiwiYm9sZXNsYXdpZWMucGwiLCJieWRnb3N6Y3oucGwiLCJieXRvbS5wbCIsImNpZXN6eW4ucGwiLCJjemVsYWR6LnBsIiwiY3plc3QucGwiLCJkbHVnb2xla2EucGwiLCJlbGJsYWcu''@;'; put 'put ''cGwiLCJlbGsucGwiLCJnbG9nb3cucGwiLCJnbmllem5vLnBsIiwiZ29ybGljZS5wbCIsImdyYWpld28ucGwiLCJpbGF3YS5wbCIsImphd29yem5vLnBsIiwiamVsZW5pYS1nb3JhLnBsIiwiamdvcmEucGwiLCJrYWxpc3oucGwiLCJrYXppbWllcnotZG9sbnkucGwiLCJrYXJwYWN6LnBsIiwi''@;'; put 'put ''a2FydHV6eS5wbCIsImthc3p1YnkucGwiLCJrYXRvd2ljZS5wbCIsImtlcG5vLnBsIiwia2V0cnp5bi5wbCIsImtsb2R6a28ucGwiLCJrb2JpZXJ6eWNlLnBsIiwia29sb2JyemVnLnBsIiwia29uaW4ucGwiLCJrb25za293b2xhLnBsIiwia3V0bm8ucGwiLCJsYXB5LnBsIiwibGVib3JrLnBs''@;'; put 'put ''IiwibGVnbmljYS5wbCIsImxlemFqc2sucGwiLCJsaW1hbm93YS5wbCIsImxvbXphLnBsIiwibG93aWN6LnBsIiwibHViaW4ucGwiLCJsdWtvdy5wbCIsIm1hbGJvcmsucGwiLCJtYWxvcG9sc2thLnBsIiwibWF6b3dzemUucGwiLCJtYXp1cnkucGwiLCJtaWVsZWMucGwiLCJtaWVsbm8ucGwi''@;'; put 'put ''LCJtcmFnb3dvLnBsIiwibmFrbG8ucGwiLCJub3dhcnVkYS5wbCIsIm55c2EucGwiLCJvbGF3YS5wbCIsIm9sZWNrby5wbCIsIm9sa3Vzei5wbCIsIm9sc3p0eW4ucGwiLCJvcG9jem5vLnBsIiwib3BvbGUucGwiLCJvc3Ryb2RhLnBsIiwib3N0cm9sZWthLnBsIiwib3N0cm93aWVjLnBsIiwi''@;'; put 'put ''b3N0cm93d2xrcC5wbCIsInBpbGEucGwiLCJwaXN6LnBsIiwicG9kaGFsZS5wbCIsInBvZGxhc2llLnBsIiwicG9sa293aWNlLnBsIiwicG9tb3J6ZS5wbCIsInBvbW9yc2tpZS5wbCIsInByb2Nob3dpY2UucGwiLCJwcnVzemtvdy5wbCIsInByemV3b3Jzay5wbCIsInB1bGF3eS5wbCIsInJh''@;'; put 'put ''ZG9tLnBsIiwicmF3YS1tYXoucGwiLCJyeWJuaWsucGwiLCJyemVzem93LnBsIiwic2Fub2sucGwiLCJzZWpueS5wbCIsInNsYXNrLnBsIiwic2x1cHNrLnBsIiwic29zbm93aWVjLnBsIiwic3RhbG93YS13b2xhLnBsIiwic2tvY3pvdy5wbCIsInN0YXJhY2hvd2ljZS5wbCIsInN0YXJnYXJk''@;'; put 'put ''LnBsIiwic3V3YWxraS5wbCIsInN3aWRuaWNhLnBsIiwic3dpZWJvZHppbi5wbCIsInN3aW5vdWpzY2llLnBsIiwic3pjemVjaW4ucGwiLCJzemN6eXRuby5wbCIsInRhcm5vYnJ6ZWcucGwiLCJ0Z29yeS5wbCIsInR1cmVrLnBsIiwidHljaHkucGwiLCJ1c3RrYS5wbCIsIndhbGJyenljaC5w''@;'; put 'put ''bCIsIndhcm1pYS5wbCIsIndhcnN6YXdhLnBsIiwid2F3LnBsIiwid2Vncm93LnBsIiwid2llbHVuLnBsIiwid2xvY2wucGwiLCJ3bG9jbGF3ZWsucGwiLCJ3b2R6aXNsYXcucGwiLCJ3b2xvbWluLnBsIiwid3JvY2xhdy5wbCIsInphY2hwb21vci5wbCIsInphZ2FuLnBsIiwiemFyb3cucGwi''@;'; put 'put ''LCJ6Z29yYS5wbCIsInpnb3J6ZWxlYy5wbCIsInBtIiwicG4iLCJnb3YucG4iLCJjby5wbiIsIm9yZy5wbiIsImVkdS5wbiIsIm5ldC5wbiIsInBvc3QiLCJwciIsImNvbS5wciIsIm5ldC5wciIsIm9yZy5wciIsImdvdi5wciIsImVkdS5wciIsImlzbGEucHIiLCJwcm8ucHIiLCJiaXoucHIi''@;'; put 'put ''LCJpbmZvLnByIiwibmFtZS5wciIsImVzdC5wciIsInByb2YucHIiLCJhYy5wciIsInBybyIsImFhYS5wcm8iLCJhY2EucHJvIiwiYWNjdC5wcm8iLCJhdm9jYXQucHJvIiwiYmFyLnBybyIsImNwYS5wcm8iLCJlbmcucHJvIiwianVyLnBybyIsImxhdy5wcm8iLCJtZWQucHJvIiwicmVjaHQu''@;'; put 'put ''cHJvIiwicHMiLCJlZHUucHMiLCJnb3YucHMiLCJzZWMucHMiLCJwbG8ucHMiLCJjb20ucHMiLCJvcmcucHMiLCJuZXQucHMiLCJwdCIsIm5ldC5wdCIsImdvdi5wdCIsIm9yZy5wdCIsImVkdS5wdCIsImludC5wdCIsInB1YmwucHQiLCJjb20ucHQiLCJub21lLnB0IiwicHciLCJjby5wdyIs''@;'; put 'put ''Im5lLnB3Iiwib3IucHciLCJlZC5wdyIsImdvLnB3IiwiYmVsYXUucHciLCJweSIsImNvbS5weSIsImNvb3AucHkiLCJlZHUucHkiLCJnb3YucHkiLCJtaWwucHkiLCJuZXQucHkiLCJvcmcucHkiLCJxYSIsImNvbS5xYSIsImVkdS5xYSIsImdvdi5xYSIsIm1pbC5xYSIsIm5hbWUucWEiLCJu''@;'; put 'put ''ZXQucWEiLCJvcmcucWEiLCJzY2gucWEiLCJyZSIsImFzc28ucmUiLCJjb20ucmUiLCJub20ucmUiLCJybyIsImFydHMucm8iLCJjb20ucm8iLCJmaXJtLnJvIiwiaW5mby5ybyIsIm5vbS5ybyIsIm50LnJvIiwib3JnLnJvIiwicmVjLnJvIiwic3RvcmUucm8iLCJ0bS5ybyIsInd3dy5ybyIs''@;'; put 'put ''InJzIiwiYWMucnMiLCJjby5ycyIsImVkdS5ycyIsImdvdi5ycyIsImluLnJzIiwib3JnLnJzIiwicnUiLCJydyIsImFjLnJ3IiwiY28ucnciLCJjb29wLnJ3IiwiZ292LnJ3IiwibWlsLnJ3IiwibmV0LnJ3Iiwib3JnLnJ3Iiwic2EiLCJjb20uc2EiLCJuZXQuc2EiLCJvcmcuc2EiLCJnb3Yu''@;'; put 'put ''c2EiLCJtZWQuc2EiLCJwdWIuc2EiLCJlZHUuc2EiLCJzY2guc2EiLCJzYiIsImNvbS5zYiIsImVkdS5zYiIsImdvdi5zYiIsIm5ldC5zYiIsIm9yZy5zYiIsInNjIiwiY29tLnNjIiwiZ292LnNjIiwibmV0LnNjIiwib3JnLnNjIiwiZWR1LnNjIiwic2QiLCJjb20uc2QiLCJuZXQuc2QiLCJv''@;'; put 'put ''cmcuc2QiLCJlZHUuc2QiLCJtZWQuc2QiLCJ0di5zZCIsImdvdi5zZCIsImluZm8uc2QiLCJzZSIsImEuc2UiLCJhYy5zZSIsImIuc2UiLCJiZC5zZSIsImJyYW5kLnNlIiwiYy5zZSIsImQuc2UiLCJlLnNlIiwiZi5zZSIsImZoLnNlIiwiZmhzay5zZSIsImZodi5zZSIsImcuc2UiLCJoLnNl''@;'; put 'put ''IiwiaS5zZSIsImsuc2UiLCJrb21mb3JiLnNlIiwia29tbXVuYWxmb3JidW5kLnNlIiwia29tdnV4LnNlIiwibC5zZSIsImxhbmJpYi5zZSIsIm0uc2UiLCJuLnNlIiwibmF0dXJicnVrc2d5bW4uc2UiLCJvLnNlIiwib3JnLnNlIiwicC5zZSIsInBhcnRpLnNlIiwicHAuc2UiLCJwcmVzcy5z''@;'; put 'put ''ZSIsInIuc2UiLCJzLnNlIiwidC5zZSIsInRtLnNlIiwidS5zZSIsIncuc2UiLCJ4LnNlIiwieS5zZSIsInouc2UiLCJzZyIsImNvbS5zZyIsIm5ldC5zZyIsIm9yZy5zZyIsImdvdi5zZyIsImVkdS5zZyIsInBlci5zZyIsInNoIiwiY29tLnNoIiwibmV0LnNoIiwiZ292LnNoIiwib3JnLnNo''@;'; put 'put ''IiwibWlsLnNoIiwic2kiLCJzaiIsInNrIiwic2wiLCJjb20uc2wiLCJuZXQuc2wiLCJlZHUuc2wiLCJnb3Yuc2wiLCJvcmcuc2wiLCJzbSIsInNuIiwiYXJ0LnNuIiwiY29tLnNuIiwiZWR1LnNuIiwiZ291di5zbiIsIm9yZy5zbiIsInBlcnNvLnNuIiwidW5pdi5zbiIsInNvIiwiY29tLnNv''@;'; put 'put ''IiwiZWR1LnNvIiwiZ292LnNvIiwibWUuc28iLCJuZXQuc28iLCJvcmcuc28iLCJzciIsInNzIiwiYml6LnNzIiwiY29tLnNzIiwiZWR1LnNzIiwiZ292LnNzIiwibmV0LnNzIiwib3JnLnNzIiwic3QiLCJjby5zdCIsImNvbS5zdCIsImNvbnN1bGFkby5zdCIsImVkdS5zdCIsImVtYmFpeGFk''@;'; put 'put ''YS5zdCIsImdvdi5zdCIsIm1pbC5zdCIsIm5ldC5zdCIsIm9yZy5zdCIsInByaW5jaXBlLnN0Iiwic2FvdG9tZS5zdCIsInN0b3JlLnN0Iiwic3UiLCJzdiIsImNvbS5zdiIsImVkdS5zdiIsImdvYi5zdiIsIm9yZy5zdiIsInJlZC5zdiIsInN4IiwiZ292LnN4Iiwic3kiLCJlZHUuc3kiLCJn''@;'; put 'put ''b3Yuc3kiLCJuZXQuc3kiLCJtaWwuc3kiLCJjb20uc3kiLCJvcmcuc3kiLCJzeiIsImNvLnN6IiwiYWMuc3oiLCJvcmcuc3oiLCJ0YyIsInRkIiwidGVsIiwidGYiLCJ0ZyIsInRoIiwiYWMudGgiLCJjby50aCIsImdvLnRoIiwiaW4udGgiLCJtaS50aCIsIm5ldC50aCIsIm9yLnRoIiwidGoi''@;'; put 'put ''LCJhYy50aiIsImJpei50aiIsImNvLnRqIiwiY29tLnRqIiwiZWR1LnRqIiwiZ28udGoiLCJnb3YudGoiLCJpbnQudGoiLCJtaWwudGoiLCJuYW1lLnRqIiwibmV0LnRqIiwibmljLnRqIiwib3JnLnRqIiwidGVzdC50aiIsIndlYi50aiIsInRrIiwidGwiLCJnb3YudGwiLCJ0bSIsImNvbS50''@;'; put 'put ''bSIsImNvLnRtIiwib3JnLnRtIiwibmV0LnRtIiwibm9tLnRtIiwiZ292LnRtIiwibWlsLnRtIiwiZWR1LnRtIiwidG4iLCJjb20udG4iLCJlbnMudG4iLCJmaW4udG4iLCJnb3YudG4iLCJpbmQudG4iLCJpbnRsLnRuIiwibmF0LnRuIiwibmV0LnRuIiwib3JnLnRuIiwiaW5mby50biIsInBl''@;'; put 'put ''cnNvLnRuIiwidG91cmlzbS50biIsImVkdW5ldC50biIsInJucnQudG4iLCJybnMudG4iLCJybnUudG4iLCJtaW5jb20udG4iLCJhZ3JpbmV0LnRuIiwiZGVmZW5zZS50biIsInR1cmVuLnRuIiwidG8iLCJjb20udG8iLCJnb3YudG8iLCJuZXQudG8iLCJvcmcudG8iLCJlZHUudG8iLCJtaWwu''@;'; put 'put ''dG8iLCJ0ciIsImF2LnRyIiwiYmJzLnRyIiwiYmVsLnRyIiwiYml6LnRyIiwiY29tLnRyIiwiZHIudHIiLCJlZHUudHIiLCJnZW4udHIiLCJnb3YudHIiLCJpbmZvLnRyIiwibWlsLnRyIiwiazEyLnRyIiwia2VwLnRyIiwibmFtZS50ciIsIm5ldC50ciIsIm9yZy50ciIsInBvbC50ciIsInRl''@;'; put 'put ''bC50ciIsInRzay50ciIsInR2LnRyIiwid2ViLnRyIiwibmMudHIiLCJnb3YubmMudHIiLCJ0dCIsImNvLnR0IiwiY29tLnR0Iiwib3JnLnR0IiwibmV0LnR0IiwiYml6LnR0IiwiaW5mby50dCIsInByby50dCIsImludC50dCIsImNvb3AudHQiLCJqb2JzLnR0IiwibW9iaS50dCIsInRyYXZl''@;'; put 'put ''bC50dCIsIm11c2V1bS50dCIsImFlcm8udHQiLCJuYW1lLnR0IiwiZ292LnR0IiwiZWR1LnR0IiwidHYiLCJ0dyIsImVkdS50dyIsImdvdi50dyIsIm1pbC50dyIsImNvbS50dyIsIm5ldC50dyIsIm9yZy50dyIsImlkdi50dyIsImdhbWUudHciLCJlYml6LnR3IiwiY2x1Yi50dyIsIlx1N2Ri''@;'; put 'put ''Mlx1OGRlZi50dyIsIlx1N2Q0NFx1N2U1NC50dyIsIlx1NTU0Nlx1Njk2ZC50dyIsInR6IiwiYWMudHoiLCJjby50eiIsImdvLnR6IiwiaG90ZWwudHoiLCJpbmZvLnR6IiwibWUudHoiLCJtaWwudHoiLCJtb2JpLnR6IiwibmUudHoiLCJvci50eiIsInNjLnR6IiwidHYudHoiLCJ1YSIsImNv''@;'; put 'put ''bS51YSIsImVkdS51YSIsImdvdi51YSIsImluLnVhIiwibmV0LnVhIiwib3JnLnVhIiwiY2hlcmthc3N5LnVhIiwiY2hlcmthc3kudWEiLCJjaGVybmlnb3YudWEiLCJjaGVybmloaXYudWEiLCJjaGVybml2dHNpLnVhIiwiY2hlcm5vdnRzeS51YSIsImNrLnVhIiwiY24udWEiLCJjci51YSIs''@;'; put 'put ''ImNyaW1lYS51YSIsImN2LnVhIiwiZG4udWEiLCJkbmVwcm9wZXRyb3Zzay51YSIsImRuaXByb3BldHJvdnNrLnVhIiwiZG9taW5pYy51YSIsImRvbmV0c2sudWEiLCJkcC51YSIsImlmLnVhIiwiaXZhbm8tZnJhbmtpdnNrLnVhIiwia2gudWEiLCJraGFya2l2LnVhIiwia2hhcmtvdi51YSIs''@;'; put 'put ''ImtoZXJzb24udWEiLCJraG1lbG5pdHNraXkudWEiLCJraG1lbG55dHNreWkudWEiLCJraWV2LnVhIiwia2lyb3ZvZ3JhZC51YSIsImttLnVhIiwia3IudWEiLCJrcnltLnVhIiwia3MudWEiLCJrdi51YSIsImt5aXYudWEiLCJsZy51YSIsImx0LnVhIiwibHVnYW5zay51YSIsImx1dHNrLnVh''@;'; put 'put ''IiwibHYudWEiLCJsdml2LnVhIiwibWsudWEiLCJteWtvbGFpdi51YSIsIm5pa29sYWV2LnVhIiwib2QudWEiLCJvZGVzYS51YSIsIm9kZXNzYS51YSIsInBsLnVhIiwicG9sdGF2YS51YSIsInJpdm5lLnVhIiwicm92bm8udWEiLCJydi51YSIsInNiLnVhIiwic2ViYXN0b3BvbC51YSIsInNl''@;'; put 'put ''dmFzdG9wb2wudWEiLCJzbS51YSIsInN1bXkudWEiLCJ0ZS51YSIsInRlcm5vcGlsLnVhIiwidXoudWEiLCJ1emhnb3JvZC51YSIsInZpbm5pY2EudWEiLCJ2aW5ueXRzaWEudWEiLCJ2bi51YSIsInZvbHluLnVhIiwieWFsdGEudWEiLCJ6YXBvcml6aHpoZS51YSIsInphcG9yaXpoemhpYS51''@;'; put 'put ''YSIsInpoaXRvbWlyLnVhIiwiemh5dG9teXIudWEiLCJ6cC51YSIsInp0LnVhIiwidWciLCJjby51ZyIsIm9yLnVnIiwiYWMudWciLCJzYy51ZyIsImdvLnVnIiwibmUudWciLCJjb20udWciLCJvcmcudWciLCJ1ayIsImFjLnVrIiwiY28udWsiLCJnb3YudWsiLCJsdGQudWsiLCJtZS51ayIs''@;'; put 'put ''Im5ldC51ayIsIm5ocy51ayIsIm9yZy51ayIsInBsYy51ayIsInBvbGljZS51ayIsIiouc2NoLnVrIiwidXMiLCJkbmkudXMiLCJmZWQudXMiLCJpc2EudXMiLCJraWRzLnVzIiwibnNuLnVzIiwiYWsudXMiLCJhbC51cyIsImFyLnVzIiwiYXMudXMiLCJhei51cyIsImNhLnVzIiwiY28udXMi''@;'; put 'put ''LCJjdC51cyIsImRjLnVzIiwiZGUudXMiLCJmbC51cyIsImdhLnVzIiwiZ3UudXMiLCJoaS51cyIsImlhLnVzIiwiaWQudXMiLCJpbC51cyIsImluLnVzIiwia3MudXMiLCJreS51cyIsImxhLnVzIiwibWEudXMiLCJtZC51cyIsIm1lLnVzIiwibWkudXMiLCJtbi51cyIsIm1vLnVzIiwibXMu''@;'; put 'put ''dXMiLCJtdC51cyIsIm5jLnVzIiwibmQudXMiLCJuZS51cyIsIm5oLnVzIiwibmoudXMiLCJubS51cyIsIm52LnVzIiwibnkudXMiLCJvaC51cyIsIm9rLnVzIiwib3IudXMiLCJwYS51cyIsInByLnVzIiwicmkudXMiLCJzYy51cyIsInNkLnVzIiwidG4udXMiLCJ0eC51cyIsInV0LnVzIiwi''@;'; put 'put ''dmkudXMiLCJ2dC51cyIsInZhLnVzIiwid2EudXMiLCJ3aS51cyIsInd2LnVzIiwid3kudXMiLCJrMTIuYWsudXMiLCJrMTIuYWwudXMiLCJrMTIuYXIudXMiLCJrMTIuYXMudXMiLCJrMTIuYXoudXMiLCJrMTIuY2EudXMiLCJrMTIuY28udXMiLCJrMTIuY3QudXMiLCJrMTIuZGMudXMiLCJr''@;'; put 'put ''MTIuZGUudXMiLCJrMTIuZmwudXMiLCJrMTIuZ2EudXMiLCJrMTIuZ3UudXMiLCJrMTIuaWEudXMiLCJrMTIuaWQudXMiLCJrMTIuaWwudXMiLCJrMTIuaW4udXMiLCJrMTIua3MudXMiLCJrMTIua3kudXMiLCJrMTIubGEudXMiLCJrMTIubWEudXMiLCJrMTIubWQudXMiLCJrMTIubWUudXMi''@;'; put 'put ''LCJrMTIubWkudXMiLCJrMTIubW4udXMiLCJrMTIubW8udXMiLCJrMTIubXMudXMiLCJrMTIubXQudXMiLCJrMTIubmMudXMiLCJrMTIubmUudXMiLCJrMTIubmgudXMiLCJrMTIubmoudXMiLCJrMTIubm0udXMiLCJrMTIubnYudXMiLCJrMTIubnkudXMiLCJrMTIub2gudXMiLCJrMTIub2su''@;'; put 'put ''dXMiLCJrMTIub3IudXMiLCJrMTIucGEudXMiLCJrMTIucHIudXMiLCJrMTIucmkudXMiLCJrMTIuc2MudXMiLCJrMTIudG4udXMiLCJrMTIudHgudXMiLCJrMTIudXQudXMiLCJrMTIudmkudXMiLCJrMTIudnQudXMiLCJrMTIudmEudXMiLCJrMTIud2EudXMiLCJrMTIud2kudXMiLCJrMTIu''@;'; put 'put ''d3kudXMiLCJjYy5hay51cyIsImNjLmFsLnVzIiwiY2MuYXIudXMiLCJjYy5hcy51cyIsImNjLmF6LnVzIiwiY2MuY2EudXMiLCJjYy5jby51cyIsImNjLmN0LnVzIiwiY2MuZGMudXMiLCJjYy5kZS51cyIsImNjLmZsLnVzIiwiY2MuZ2EudXMiLCJjYy5ndS51cyIsImNjLmhpLnVzIiwiY2Mu''@;'; put 'put ''aWEudXMiLCJjYy5pZC51cyIsImNjLmlsLnVzIiwiY2MuaW4udXMiLCJjYy5rcy51cyIsImNjLmt5LnVzIiwiY2MubGEudXMiLCJjYy5tYS51cyIsImNjLm1kLnVzIiwiY2MubWUudXMiLCJjYy5taS51cyIsImNjLm1uLnVzIiwiY2MubW8udXMiLCJjYy5tcy51cyIsImNjLm10LnVzIiwiY2Mu''@;'; put 'put ''bmMudXMiLCJjYy5uZC51cyIsImNjLm5lLnVzIiwiY2MubmgudXMiLCJjYy5uai51cyIsImNjLm5tLnVzIiwiY2MubnYudXMiLCJjYy5ueS51cyIsImNjLm9oLnVzIiwiY2Mub2sudXMiLCJjYy5vci51cyIsImNjLnBhLnVzIiwiY2MucHIudXMiLCJjYy5yaS51cyIsImNjLnNjLnVzIiwiY2Mu''@;'; put 'put ''c2QudXMiLCJjYy50bi51cyIsImNjLnR4LnVzIiwiY2MudXQudXMiLCJjYy52aS51cyIsImNjLnZ0LnVzIiwiY2MudmEudXMiLCJjYy53YS51cyIsImNjLndpLnVzIiwiY2Mud3YudXMiLCJjYy53eS51cyIsImxpYi5hay51cyIsImxpYi5hbC51cyIsImxpYi5hci51cyIsImxpYi5hcy51cyIs''@;'; put 'put ''ImxpYi5hei51cyIsImxpYi5jYS51cyIsImxpYi5jby51cyIsImxpYi5jdC51cyIsImxpYi5kYy51cyIsImxpYi5mbC51cyIsImxpYi5nYS51cyIsImxpYi5ndS51cyIsImxpYi5oaS51cyIsImxpYi5pYS51cyIsImxpYi5pZC51cyIsImxpYi5pbC51cyIsImxpYi5pbi51cyIsImxpYi5rcy51''@;'; put 'put ''cyIsImxpYi5reS51cyIsImxpYi5sYS51cyIsImxpYi5tYS51cyIsImxpYi5tZC51cyIsImxpYi5tZS51cyIsImxpYi5taS51cyIsImxpYi5tbi51cyIsImxpYi5tby51cyIsImxpYi5tcy51cyIsImxpYi5tdC51cyIsImxpYi5uYy51cyIsImxpYi5uZC51cyIsImxpYi5uZS51cyIsImxpYi5u''@;'; put 'put ''aC51cyIsImxpYi5uai51cyIsImxpYi5ubS51cyIsImxpYi5udi51cyIsImxpYi5ueS51cyIsImxpYi5vaC51cyIsImxpYi5vay51cyIsImxpYi5vci51cyIsImxpYi5wYS51cyIsImxpYi5wci51cyIsImxpYi5yaS51cyIsImxpYi5zYy51cyIsImxpYi5zZC51cyIsImxpYi50bi51cyIsImxp''@;'; put 'put ''Yi50eC51cyIsImxpYi51dC51cyIsImxpYi52aS51cyIsImxpYi52dC51cyIsImxpYi52YS51cyIsImxpYi53YS51cyIsImxpYi53aS51cyIsImxpYi53eS51cyIsInB2dC5rMTIubWEudXMiLCJjaHRyLmsxMi5tYS51cyIsInBhcm9jaC5rMTIubWEudXMiLCJhbm4tYXJib3IubWkudXMiLCJj''@;'; put 'put ''b2cubWkudXMiLCJkc3QubWkudXMiLCJlYXRvbi5taS51cyIsImdlbi5taS51cyIsIm11cy5taS51cyIsInRlYy5taS51cyIsIndhc2h0ZW5hdy5taS51cyIsInV5IiwiY29tLnV5IiwiZWR1LnV5IiwiZ3ViLnV5IiwibWlsLnV5IiwibmV0LnV5Iiwib3JnLnV5IiwidXoiLCJjby51eiIsImNv''@;'; put 'put ''bS51eiIsIm5ldC51eiIsIm9yZy51eiIsInZhIiwidmMiLCJjb20udmMiLCJuZXQudmMiLCJvcmcudmMiLCJnb3YudmMiLCJtaWwudmMiLCJlZHUudmMiLCJ2ZSIsImFydHMudmUiLCJjby52ZSIsImNvbS52ZSIsImUxMi52ZSIsImVkdS52ZSIsImZpcm0udmUiLCJnb2IudmUiLCJnb3YudmUi''@;'; put 'put ''LCJpbmZvLnZlIiwiaW50LnZlIiwibWlsLnZlIiwibmV0LnZlIiwib3JnLnZlIiwicmVjLnZlIiwic3RvcmUudmUiLCJ0ZWMudmUiLCJ3ZWIudmUiLCJ2ZyIsInZpIiwiY28udmkiLCJjb20udmkiLCJrMTIudmkiLCJuZXQudmkiLCJvcmcudmkiLCJ2biIsImNvbS52biIsIm5ldC52biIsIm9y''@;'; put 'put ''Zy52biIsImVkdS52biIsImdvdi52biIsImludC52biIsImFjLnZuIiwiYml6LnZuIiwiaW5mby52biIsIm5hbWUudm4iLCJwcm8udm4iLCJoZWFsdGgudm4iLCJ2dSIsImNvbS52dSIsImVkdS52dSIsIm5ldC52dSIsIm9yZy52dSIsIndmIiwid3MiLCJjb20ud3MiLCJuZXQud3MiLCJvcmcu''@;'; put 'put ''d3MiLCJnb3Yud3MiLCJlZHUud3MiLCJ5dCIsIlx1MDYyN1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYyN1x1MDYyYSIsIlx1MDU3MFx1MDU2MVx1MDU3NSIsIlx1MDlhY1x1MDliZVx1MDk4Mlx1MDliMlx1MDliZSIsIlx1MDQzMVx1MDQzMyIsIlx1MDQzMVx1MDQzNVx1MDQzYiIsIlx1NGUyZFx1''@;'; put 'put ''NTZmZCIsIlx1NGUyZFx1NTcwYiIsIlx1MDYyN1x1MDY0NFx1MDYyY1x1MDYzMlx1MDYyN1x1MDYyNlx1MDYzMSIsIlx1MDY0NVx1MDYzNVx1MDYzMSIsIlx1MDQzNVx1MDQ0ZSIsIlx1MDNiNVx1MDNjNSIsIlx1MDY0NVx1MDY0OFx1MDYzMVx1MDY0YVx1MDYyYVx1MDYyN1x1MDY0Nlx1MDY0''@;'; put 'put ''YVx1MDYyNyIsIlx1MTBkMlx1MTBkNCIsIlx1MDNiNVx1MDNiYiIsIlx1OTk5OVx1NmUyZiIsIlx1NTE2Y1x1NTNmOC5cdTk5OTlcdTZlMmYiLCJcdTY1NTlcdTgwYjIuXHU5OTk5XHU2ZTJmIiwiXHU2NTNmXHU1ZTljLlx1OTk5OVx1NmUyZiIsIlx1NTAwYlx1NGViYS5cdTk5OTlcdTZlMmYi''@;'; put 'put ''LCJcdTdkYjJcdTdkNjEuXHU5OTk5XHU2ZTJmIiwiXHU3ZDQ0XHU3ZTU0Llx1OTk5OVx1NmUyZiIsIlx1MGNhZFx1MGNiZVx1MGNiMFx1MGNhNCIsIlx1MGIyZFx1MGIzZVx1MGIzMFx1MGIyNCIsIlx1MDlhZFx1MDliZVx1MDlmMFx1MDlhNCIsIlx1MDkyZFx1MDkzZVx1MDkzMFx1MDkyNFx1''@;'; put 'put ''MDkyZVx1MDk0ZCIsIlx1MDkyZFx1MDkzZVx1MDkzMFx1MDk0Ylx1MDkyNCIsIlx1MDY4MFx1MDYyN1x1MDYzMVx1MDYyYSIsIlx1MGQyZFx1MGQzZVx1MGQzMFx1MGQyNFx1MGQwMiIsIlx1MDkyZFx1MDkzZVx1MDkzMFx1MDkyNCIsIlx1MDYyOFx1MDYyN1x1MDYzMVx1MDYyYSIsIlx1MDYy''@;'; put 'put ''OFx1MDZiZVx1MDYyN1x1MDYzMVx1MDYyYSIsIlx1MGMyZFx1MGMzZVx1MGMzMFx1MGMyNFx1MGM0ZCIsIlx1MGFhZFx1MGFiZVx1MGFiMFx1MGFhNCIsIlx1MGEyZFx1MGEzZVx1MGEzMFx1MGEyNCIsIlx1MDlhZFx1MDliZVx1MDliMFx1MDlhNCIsIlx1MGI4N1x1MGJhOFx1MGJjZFx1MGJh''@;'; put 'put ''NFx1MGJiZlx1MGJhZlx1MGJiZSIsIlx1MDYyN1x1MDZjY1x1MDYzMVx1MDYyN1x1MDY0NiIsIlx1MDYyN1x1MDY0YVx1MDYzMVx1MDYyN1x1MDY0NiIsIlx1MDYzOVx1MDYzMVx1MDYyN1x1MDY0MiIsIlx1MDYyN1x1MDY0NFx1MDYyN1x1MDYzMVx1MDYyZlx1MDY0NiIsIlx1ZDU1Y1x1YWQ2''@;'; put 'put ''ZCIsIlx1MDQ5Ylx1MDQzMFx1MDQzNyIsIlx1MGRiZFx1MGQ4Mlx1MGQ5YVx1MGRjZiIsIlx1MGI4N1x1MGJiMlx1MGI5OVx1MGJjZFx1MGI5NVx1MGJjOCIsIlx1MDYyN1x1MDY0NFx1MDY0NVx1MDYzYVx1MDYzMVx1MDYyOCIsIlx1MDQzY1x1MDQzYVx1MDQzNCIsIlx1MDQzY1x1MDQzZVx1''@;'; put 'put ''MDQzZCIsIlx1NmZiM1x1OTU4MCIsIlx1NmZiM1x1OTVlOCIsIlx1MDY0NVx1MDY0NFx1MDY0YVx1MDYzM1x1MDY0YVx1MDYyNyIsIlx1MDYzOVx1MDY0NVx1MDYyN1x1MDY0NiIsIlx1MDY3ZVx1MDYyN1x1MDZhOVx1MDYzM1x1MDYyYVx1MDYyN1x1MDY0NiIsIlx1MDY3ZVx1MDYyN1x1MDY0''@;'; put 'put ''M1x1MDYzM1x1MDYyYVx1MDYyN1x1MDY0NiIsIlx1MDY0MVx1MDY0NFx1MDYzM1x1MDYzN1x1MDY0YVx1MDY0NiIsIlx1MDQ0MVx1MDQ0MFx1MDQzMSIsIlx1MDQzZlx1MDQ0MC5cdTA0NDFcdTA0NDBcdTA0MzEiLCJcdTA0M2VcdTA0NDBcdTA0MzMuXHUwNDQxXHUwNDQwXHUwNDMxIiwiXHUw''@;'; put 'put ''NDNlXHUwNDMxXHUwNDQwLlx1MDQ0MVx1MDQ0MFx1MDQzMSIsIlx1MDQzZVx1MDQzNC5cdTA0NDFcdTA0NDBcdTA0MzEiLCJcdTA0NDNcdTA0M2ZcdTA0NDAuXHUwNDQxXHUwNDQwXHUwNDMxIiwiXHUwNDMwXHUwNDNhLlx1MDQ0MVx1MDQ0MFx1MDQzMSIsIlx1MDQ0MFx1MDQ0NCIsIlx1MDY0''@;'; put 'put ''Mlx1MDYzN1x1MDYzMSIsIlx1MDYyN1x1MDY0NFx1MDYzM1x1MDYzOVx1MDY0OFx1MDYyZlx1MDY0YVx1MDYyOSIsIlx1MDYyN1x1MDY0NFx1MDYzM1x1MDYzOVx1MDY0OFx1MDYyZlx1MDZjY1x1MDYyOSIsIlx1MDYyN1x1MDY0NFx1MDYzM1x1MDYzOVx1MDY0OFx1MDYyZlx1MDZjY1x1MDZj''@;'; put 'put ''MyIsIlx1MDYyN1x1MDY0NFx1MDYzM1x1MDYzOVx1MDY0OFx1MDYyZlx1MDY0YVx1MDY0NyIsIlx1MDYzM1x1MDY0OFx1MDYyZlx1MDYyN1x1MDY0NiIsIlx1NjViMFx1NTJhMFx1NTc2MSIsIlx1MGI5YVx1MGJiZlx1MGI5OVx1MGJjZFx1MGI5NVx1MGJhYVx1MGJjZFx1MGJhYVx1MGJjMlx1''@;'; put 'put ''MGJiMFx1MGJjZCIsIlx1MDYzM1x1MDY0OFx1MDYzMVx1MDY0YVx1MDYyOSIsIlx1MDYzM1x1MDY0OFx1MDYzMVx1MDY0YVx1MDYyNyIsIlx1MGU0NFx1MGUxN1x1MGUyMiIsIlx1MGUyOFx1MGUzNlx1MGUwMVx1MGUyOVx1MGUzMi5cdTBlNDRcdTBlMTdcdTBlMjIiLCJcdTBlMThcdTBlMzhc''@;'; put 'put ''dTBlMjNcdTBlMDFcdTBlMzRcdTBlMDguXHUwZTQ0XHUwZTE3XHUwZTIyIiwiXHUwZTIzXHUwZTMxXHUwZTEwXHUwZTFhXHUwZTMyXHUwZTI1Llx1MGU0NFx1MGUxN1x1MGUyMiIsIlx1MGUxN1x1MGUyYlx1MGUzMlx1MGUyMy5cdTBlNDRcdTBlMTdcdTBlMjIiLCJcdTBlNDBcdTBlMTlcdTBl''@;'; put 'put ''NDdcdTBlMTUuXHUwZTQ0XHUwZTE3XHUwZTIyIiwiXHUwZTJkXHUwZTA3XHUwZTA0XHUwZTRjXHUwZTAxXHUwZTIzLlx1MGU0NFx1MGUxN1x1MGUyMiIsIlx1MDYyYVx1MDY0OFx1MDY0Nlx1MDYzMyIsIlx1NTNmMFx1NzA2MyIsIlx1NTNmMFx1NmU3ZSIsIlx1ODFmYVx1NzA2MyIsIlx1MDQ0''@;'; put 'put ''M1x1MDQzYVx1MDQ0MCIsIlx1MDYyN1x1MDY0NFx1MDY0YVx1MDY0NVx1MDY0NiIsInh4eCIsIioueWUiLCJhYy56YSIsImFncmljLnphIiwiYWx0LnphIiwiY28uemEiLCJlZHUuemEiLCJnb3YuemEiLCJncm9uZGFyLnphIiwibGF3LnphIiwibWlsLnphIiwibmV0LnphIiwibmdvLnphIiwi''@;'; put 'put ''bmljLnphIiwibmlzLnphIiwibm9tLnphIiwib3JnLnphIiwic2Nob29sLnphIiwidG0uemEiLCJ3ZWIuemEiLCJ6bSIsImFjLnptIiwiYml6LnptIiwiY28uem0iLCJjb20uem0iLCJlZHUuem0iLCJnb3Yuem0iLCJpbmZvLnptIiwibWlsLnptIiwibmV0LnptIiwib3JnLnptIiwic2NoLnpt''@;'; put 'put ''IiwienciLCJhYy56dyIsImNvLnp3IiwiZ292Lnp3IiwibWlsLnp3Iiwib3JnLnp3IiwiYWFhIiwiYWFycCIsImFiYXJ0aCIsImFiYiIsImFiYm90dCIsImFiYnZpZSIsImFiYyIsImFibGUiLCJhYm9nYWRvIiwiYWJ1ZGhhYmkiLCJhY2FkZW15IiwiYWNjZW50dXJlIiwiYWNjb3VudGFudCIs''@;'; put 'put ''ImFjY291bnRhbnRzIiwiYWNvIiwiYWN0b3IiLCJhZGFjIiwiYWRzIiwiYWR1bHQiLCJhZWciLCJhZXRuYSIsImFmYW1pbHljb21wYW55IiwiYWZsIiwiYWZyaWNhIiwiYWdha2hhbiIsImFnZW5jeSIsImFpZyIsImFpZ28iLCJhaXJidXMiLCJhaXJmb3JjZSIsImFpcnRlbCIsImFrZG4iLCJh''@;'; put 'put ''bGZhcm9tZW8iLCJhbGliYWJhIiwiYWxpcGF5IiwiYWxsZmluYW56IiwiYWxsc3RhdGUiLCJhbGx5IiwiYWxzYWNlIiwiYWxzdG9tIiwiYW1hem9uIiwiYW1lcmljYW5leHByZXNzIiwiYW1lcmljYW5mYW1pbHkiLCJhbWV4IiwiYW1mYW0iLCJhbWljYSIsImFtc3RlcmRhbSIsImFuYWx5dGlj''@;'; put 'put ''cyIsImFuZHJvaWQiLCJhbnF1YW4iLCJhbnoiLCJhb2wiLCJhcGFydG1lbnRzIiwiYXBwIiwiYXBwbGUiLCJhcXVhcmVsbGUiLCJhcmFiIiwiYXJhbWNvIiwiYXJjaGkiLCJhcm15IiwiYXJ0IiwiYXJ0ZSIsImFzZGEiLCJhc3NvY2lhdGVzIiwiYXRobGV0YSIsImF0dG9ybmV5IiwiYXVjdGlv''@;'; put 'put ''biIsImF1ZGkiLCJhdWRpYmxlIiwiYXVkaW8iLCJhdXNwb3N0IiwiYXV0aG9yIiwiYXV0byIsImF1dG9zIiwiYXZpYW5jYSIsImF3cyIsImF4YSIsImF6dXJlIiwiYmFieSIsImJhaWR1IiwiYmFuYW1leCIsImJhbmFuYXJlcHVibGljIiwiYmFuZCIsImJhbmsiLCJiYXIiLCJiYXJjZWxvbmEi''@;'; put 'put ''LCJiYXJjbGF5Y2FyZCIsImJhcmNsYXlzIiwiYmFyZWZvb3QiLCJiYXJnYWlucyIsImJhc2ViYWxsIiwiYmFza2V0YmFsbCIsImJhdWhhdXMiLCJiYXllcm4iLCJiYmMiLCJiYnQiLCJiYnZhIiwiYmNnIiwiYmNuIiwiYmVhdHMiLCJiZWF1dHkiLCJiZWVyIiwiYmVudGxleSIsImJlcmxpbiIs''@;'; put 'put ''ImJlc3QiLCJiZXN0YnV5IiwiYmV0IiwiYmhhcnRpIiwiYmlibGUiLCJiaWQiLCJiaWtlIiwiYmluZyIsImJpbmdvIiwiYmlvIiwiYmxhY2siLCJibGFja2ZyaWRheSIsImJsb2NrYnVzdGVyIiwiYmxvZyIsImJsb29tYmVyZyIsImJsdWUiLCJibXMiLCJibXciLCJibnBwYXJpYmFzIiwiYm9h''@;'; put 'put ''dHMiLCJib2VocmluZ2VyIiwiYm9mYSIsImJvbSIsImJvbmQiLCJib28iLCJib29rIiwiYm9va2luZyIsImJvc2NoIiwiYm9zdGlrIiwiYm9zdG9uIiwiYm90IiwiYm91dGlxdWUiLCJib3giLCJicmFkZXNjbyIsImJyaWRnZXN0b25lIiwiYnJvYWR3YXkiLCJicm9rZXIiLCJicm90aGVyIiwi''@;'; put 'put ''YnJ1c3NlbHMiLCJidWRhcGVzdCIsImJ1Z2F0dGkiLCJidWlsZCIsImJ1aWxkZXJzIiwiYnVzaW5lc3MiLCJidXkiLCJidXp6IiwiYnpoIiwiY2FiIiwiY2FmZSIsImNhbCIsImNhbGwiLCJjYWx2aW5rbGVpbiIsImNhbSIsImNhbWVyYSIsImNhbXAiLCJjYW5jZXJyZXNlYXJjaCIsImNhbm9u''@;'; put 'put ''IiwiY2FwZXRvd24iLCJjYXBpdGFsIiwiY2FwaXRhbG9uZSIsImNhciIsImNhcmF2YW4iLCJjYXJkcyIsImNhcmUiLCJjYXJlZXIiLCJjYXJlZXJzIiwiY2FycyIsImNhc2EiLCJjYXNlIiwiY2FzZWloIiwiY2FzaCIsImNhc2lubyIsImNhdGVyaW5nIiwiY2F0aG9saWMiLCJjYmEiLCJjYm4i''@;'; put 'put ''LCJjYnJlIiwiY2JzIiwiY2ViIiwiY2VudGVyIiwiY2VvIiwiY2VybiIsImNmYSIsImNmZCIsImNoYW5lbCIsImNoYW5uZWwiLCJjaGFyaXR5IiwiY2hhc2UiLCJjaGF0IiwiY2hlYXAiLCJjaGludGFpIiwiY2hyaXN0bWFzIiwiY2hyb21lIiwiY2h1cmNoIiwiY2lwcmlhbmkiLCJjaXJjbGUi''@;'; put 'put ''LCJjaXNjbyIsImNpdGFkZWwiLCJjaXRpIiwiY2l0aWMiLCJjaXR5IiwiY2l0eWVhdHMiLCJjbGFpbXMiLCJjbGVhbmluZyIsImNsaWNrIiwiY2xpbmljIiwiY2xpbmlxdWUiLCJjbG90aGluZyIsImNsb3VkIiwiY2x1YiIsImNsdWJtZWQiLCJjb2FjaCIsImNvZGVzIiwiY29mZmVlIiwiY29s''@;'; put 'put ''bGVnZSIsImNvbG9nbmUiLCJjb21jYXN0IiwiY29tbWJhbmsiLCJjb21tdW5pdHkiLCJjb21wYW55IiwiY29tcGFyZSIsImNvbXB1dGVyIiwiY29tc2VjIiwiY29uZG9zIiwiY29uc3RydWN0aW9uIiwiY29uc3VsdGluZyIsImNvbnRhY3QiLCJjb250cmFjdG9ycyIsImNvb2tpbmciLCJjb29r''@;'; put 'put ''aW5nY2hhbm5lbCIsImNvb2wiLCJjb3JzaWNhIiwiY291bnRyeSIsImNvdXBvbiIsImNvdXBvbnMiLCJjb3Vyc2VzIiwiY3BhIiwiY3JlZGl0IiwiY3JlZGl0Y2FyZCIsImNyZWRpdHVuaW9uIiwiY3JpY2tldCIsImNyb3duIiwiY3JzIiwiY3J1aXNlIiwiY3J1aXNlcyIsImNzYyIsImN1aXNp''@;'; put 'put ''bmVsbGEiLCJjeW1ydSIsImN5b3UiLCJkYWJ1ciIsImRhZCIsImRhbmNlIiwiZGF0YSIsImRhdGUiLCJkYXRpbmciLCJkYXRzdW4iLCJkYXkiLCJkY2xrIiwiZGRzIiwiZGVhbCIsImRlYWxlciIsImRlYWxzIiwiZGVncmVlIiwiZGVsaXZlcnkiLCJkZWxsIiwiZGVsb2l0dGUiLCJkZWx0YSIs''@;'; put 'put ''ImRlbW9jcmF0IiwiZGVudGFsIiwiZGVudGlzdCIsImRlc2kiLCJkZXNpZ24iLCJkZXYiLCJkaGwiLCJkaWFtb25kcyIsImRpZXQiLCJkaWdpdGFsIiwiZGlyZWN0IiwiZGlyZWN0b3J5IiwiZGlzY291bnQiLCJkaXNjb3ZlciIsImRpc2giLCJkaXkiLCJkbnAiLCJkb2NzIiwiZG9jdG9yIiwi''@;'; put 'put ''ZG9nIiwiZG9tYWlucyIsImRvdCIsImRvd25sb2FkIiwiZHJpdmUiLCJkdHYiLCJkdWJhaSIsImR1Y2siLCJkdW5sb3AiLCJkdXBvbnQiLCJkdXJiYW4iLCJkdmFnIiwiZHZyIiwiZWFydGgiLCJlYXQiLCJlY28iLCJlZGVrYSIsImVkdWNhdGlvbiIsImVtYWlsIiwiZW1lcmNrIiwiZW5lcmd5''@;'; put 'put ''IiwiZW5naW5lZXIiLCJlbmdpbmVlcmluZyIsImVudGVycHJpc2VzIiwiZXBzb24iLCJlcXVpcG1lbnQiLCJlcmljc3NvbiIsImVybmkiLCJlc3EiLCJlc3RhdGUiLCJlc3VyYW5jZSIsImV0aXNhbGF0IiwiZXVyb3Zpc2lvbiIsImV1cyIsImV2ZW50cyIsImV4Y2hhbmdlIiwiZXhwZXJ0Iiwi''@;'; put 'put ''ZXhwb3NlZCIsImV4cHJlc3MiLCJleHRyYXNwYWNlIiwiZmFnZSIsImZhaWwiLCJmYWlyd2luZHMiLCJmYWl0aCIsImZhbWlseSIsImZhbiIsImZhbnMiLCJmYXJtIiwiZmFybWVycyIsImZhc2hpb24iLCJmYXN0IiwiZmVkZXgiLCJmZWVkYmFjayIsImZlcnJhcmkiLCJmZXJyZXJvIiwiZmlh''@;'; put 'put ''dCIsImZpZGVsaXR5IiwiZmlkbyIsImZpbG0iLCJmaW5hbCIsImZpbmFuY2UiLCJmaW5hbmNpYWwiLCJmaXJlIiwiZmlyZXN0b25lIiwiZmlybWRhbGUiLCJmaXNoIiwiZmlzaGluZyIsImZpdCIsImZpdG5lc3MiLCJmbGlja3IiLCJmbGlnaHRzIiwiZmxpciIsImZsb3Jpc3QiLCJmbG93ZXJz''@;'; put 'put ''IiwiZmx5IiwiZm9vIiwiZm9vZCIsImZvb2RuZXR3b3JrIiwiZm9vdGJhbGwiLCJmb3JkIiwiZm9yZXgiLCJmb3JzYWxlIiwiZm9ydW0iLCJmb3VuZGF0aW9uIiwiZm94IiwiZnJlZSIsImZyZXNlbml1cyIsImZybCIsImZyb2dhbnMiLCJmcm9udGRvb3IiLCJmcm9udGllciIsImZ0ciIsImZ1''@;'; put 'put ''aml0c3UiLCJmdWppeGVyb3giLCJmdW4iLCJmdW5kIiwiZnVybml0dXJlIiwiZnV0Ym9sIiwiZnlpIiwiZ2FsIiwiZ2FsbGVyeSIsImdhbGxvIiwiZ2FsbHVwIiwiZ2FtZSIsImdhbWVzIiwiZ2FwIiwiZ2FyZGVuIiwiZ2F5IiwiZ2JpeiIsImdkbiIsImdlYSIsImdlbnQiLCJnZW50aW5nIiwi''@;'; put 'put ''Z2VvcmdlIiwiZ2dlZSIsImdpZnQiLCJnaWZ0cyIsImdpdmVzIiwiZ2l2aW5nIiwiZ2xhZGUiLCJnbGFzcyIsImdsZSIsImdsb2JhbCIsImdsb2JvIiwiZ21haWwiLCJnbWJoIiwiZ21vIiwiZ214IiwiZ29kYWRkeSIsImdvbGQiLCJnb2xkcG9pbnQiLCJnb2xmIiwiZ29vIiwiZ29vZHllYXIi''@;'; put 'put ''LCJnb29nIiwiZ29vZ2xlIiwiZ29wIiwiZ290IiwiZ3JhaW5nZXIiLCJncmFwaGljcyIsImdyYXRpcyIsImdyZWVuIiwiZ3JpcGUiLCJncm9jZXJ5IiwiZ3JvdXAiLCJndWFyZGlhbiIsImd1Y2NpIiwiZ3VnZSIsImd1aWRlIiwiZ3VpdGFycyIsImd1cnUiLCJoYWlyIiwiaGFtYnVyZyIsImhh''@;'; put 'put ''bmdvdXQiLCJoYXVzIiwiaGJvIiwiaGRmYyIsImhkZmNiYW5rIiwiaGVhbHRoIiwiaGVhbHRoY2FyZSIsImhlbHAiLCJoZWxzaW5raSIsImhlcmUiLCJoZXJtZXMiLCJoZ3R2IiwiaGlwaG9wIiwiaGlzYW1pdHN1IiwiaGl0YWNoaSIsImhpdiIsImhrdCIsImhvY2tleSIsImhvbGRpbmdzIiwi''@;'; put 'put ''aG9saWRheSIsImhvbWVkZXBvdCIsImhvbWVnb29kcyIsImhvbWVzIiwiaG9tZXNlbnNlIiwiaG9uZGEiLCJob3JzZSIsImhvc3BpdGFsIiwiaG9zdCIsImhvc3RpbmciLCJob3QiLCJob3RlbGVzIiwiaG90ZWxzIiwiaG90bWFpbCIsImhvdXNlIiwiaG93IiwiaHNiYyIsImh1Z2hlcyIsImh5''@;'; put 'put ''YXR0IiwiaHl1bmRhaSIsImlibSIsImljYmMiLCJpY2UiLCJpY3UiLCJpZWVlIiwiaWZtIiwiaWthbm8iLCJpbWFtYXQiLCJpbWRiIiwiaW1tbyIsImltbW9iaWxpZW4iLCJpbmMiLCJpbmR1c3RyaWVzIiwiaW5maW5pdGkiLCJpbmciLCJpbmsiLCJpbnN0aXR1dGUiLCJpbnN1cmFuY2UiLCJp''@;'; put 'put ''bnN1cmUiLCJpbnRlbCIsImludGVybmF0aW9uYWwiLCJpbnR1aXQiLCJpbnZlc3RtZW50cyIsImlwaXJhbmdhIiwiaXJpc2giLCJpc21haWxpIiwiaXN0IiwiaXN0YW5idWwiLCJpdGF1IiwiaXR2IiwiaXZlY28iLCJqYWd1YXIiLCJqYXZhIiwiamNiIiwiamNwIiwiamVlcCIsImpldHp0Iiwi''@;'; put 'put ''amV3ZWxyeSIsImppbyIsImpsbCIsImptcCIsImpuaiIsImpvYnVyZyIsImpvdCIsImpveSIsImpwbW9yZ2FuIiwianBycyIsImp1ZWdvcyIsImp1bmlwZXIiLCJrYXVmZW4iLCJrZGRpIiwia2Vycnlob3RlbHMiLCJrZXJyeWxvZ2lzdGljcyIsImtlcnJ5cHJvcGVydGllcyIsImtmaCIsImtp''@;'; put 'put ''YSIsImtpbSIsImtpbmRlciIsImtpbmRsZSIsImtpdGNoZW4iLCJraXdpIiwia29lbG4iLCJrb21hdHN1Iiwia29zaGVyIiwia3BtZyIsImtwbiIsImtyZCIsImtyZWQiLCJrdW9rZ3JvdXAiLCJreW90byIsImxhY2FpeGEiLCJsYW1ib3JnaGluaSIsImxhbWVyIiwibGFuY2FzdGVyIiwibGFu''@;'; put 'put ''Y2lhIiwibGFuZCIsImxhbmRyb3ZlciIsImxhbnhlc3MiLCJsYXNhbGxlIiwibGF0IiwibGF0aW5vIiwibGF0cm9iZSIsImxhdyIsImxhd3llciIsImxkcyIsImxlYXNlIiwibGVjbGVyYyIsImxlZnJhayIsImxlZ2FsIiwibGVnbyIsImxleHVzIiwibGdidCIsImxpZGwiLCJsaWZlIiwibGlm''@;'; put 'put ''ZWluc3VyYW5jZSIsImxpZmVzdHlsZSIsImxpZ2h0aW5nIiwibGlrZSIsImxpbGx5IiwibGltaXRlZCIsImxpbW8iLCJsaW5jb2xuIiwibGluZGUiLCJsaW5rIiwibGlwc3kiLCJsaXZlIiwibGl2aW5nIiwibGl4aWwiLCJsbGMiLCJsbHAiLCJsb2FuIiwibG9hbnMiLCJsb2NrZXIiLCJsb2N1''@;'; put 'put ''cyIsImxvZnQiLCJsb2wiLCJsb25kb24iLCJsb3R0ZSIsImxvdHRvIiwibG92ZSIsImxwbCIsImxwbGZpbmFuY2lhbCIsImx0ZCIsImx0ZGEiLCJsdW5kYmVjayIsImx1cGluIiwibHV4ZSIsImx1eHVyeSIsIm1hY3lzIiwibWFkcmlkIiwibWFpZiIsIm1haXNvbiIsIm1ha2V1cCIsIm1hbiIs''@;'; put 'put ''Im1hbmFnZW1lbnQiLCJtYW5nbyIsIm1hcCIsIm1hcmtldCIsIm1hcmtldGluZyIsIm1hcmtldHMiLCJtYXJyaW90dCIsIm1hcnNoYWxscyIsIm1hc2VyYXRpIiwibWF0dGVsIiwibWJhIiwibWNraW5zZXkiLCJtZWQiLCJtZWRpYSIsIm1lZXQiLCJtZWxib3VybmUiLCJtZW1lIiwibWVtb3Jp''@;'; put 'put ''YWwiLCJtZW4iLCJtZW51IiwibWVyY2ttc2QiLCJtZXRsaWZlIiwibWlhbWkiLCJtaWNyb3NvZnQiLCJtaW5pIiwibWludCIsIm1pdCIsIm1pdHN1YmlzaGkiLCJtbGIiLCJtbHMiLCJtbWEiLCJtb2JpbGUiLCJtb2RhIiwibW9lIiwibW9pIiwibW9tIiwibW9uYXNoIiwibW9uZXkiLCJtb25z''@;'; put 'put ''dGVyIiwibW9ybW9uIiwibW9ydGdhZ2UiLCJtb3Njb3ciLCJtb3RvIiwibW90b3JjeWNsZXMiLCJtb3YiLCJtb3ZpZSIsIm1zZCIsIm10biIsIm10ciIsIm11dHVhbCIsIm5hYiIsIm5hZGV4IiwibmFnb3lhIiwibmF0aW9ud2lkZSIsIm5hdHVyYSIsIm5hdnkiLCJuYmEiLCJuZWMiLCJuZXRi''@;'; put 'put ''YW5rIiwibmV0ZmxpeCIsIm5ldHdvcmsiLCJuZXVzdGFyIiwibmV3IiwibmV3aG9sbGFuZCIsIm5ld3MiLCJuZXh0IiwibmV4dGRpcmVjdCIsIm5leHVzIiwibmZsIiwibmdvIiwibmhrIiwibmljbyIsIm5pa2UiLCJuaWtvbiIsIm5pbmphIiwibmlzc2FuIiwibmlzc2F5Iiwibm9raWEiLCJu''@;'; put 'put ''b3J0aHdlc3Rlcm5tdXR1YWwiLCJub3J0b24iLCJub3ciLCJub3dydXoiLCJub3d0diIsIm5yYSIsIm5ydyIsIm50dCIsIm55YyIsIm9iaSIsIm9ic2VydmVyIiwib2ZmIiwib2ZmaWNlIiwib2tpbmF3YSIsIm9sYXlhbiIsIm9sYXlhbmdyb3VwIiwib2xkbmF2eSIsIm9sbG8iLCJvbWVnYSIs''@;'; put 'put ''Im9uZSIsIm9uZyIsIm9ubCIsIm9ubGluZSIsIm9ueW91cnNpZGUiLCJvb28iLCJvcGVuIiwib3JhY2xlIiwib3JhbmdlIiwib3JnYW5pYyIsIm9yaWdpbnMiLCJvc2FrYSIsIm90c3VrYSIsIm90dCIsIm92aCIsInBhZ2UiLCJwYW5hc29uaWMiLCJwYXJpcyIsInBhcnMiLCJwYXJ0bmVycyIs''@;'; put 'put ''InBhcnRzIiwicGFydHkiLCJwYXNzYWdlbnMiLCJwYXkiLCJwY2N3IiwicGV0IiwicGZpemVyIiwicGhhcm1hY3kiLCJwaGQiLCJwaGlsaXBzIiwicGhvbmUiLCJwaG90byIsInBob3RvZ3JhcGh5IiwicGhvdG9zIiwicGh5c2lvIiwicGljcyIsInBpY3RldCIsInBpY3R1cmVzIiwicGlkIiwi''@;'; put 'put ''cGluIiwicGluZyIsInBpbmsiLCJwaW9uZWVyIiwicGl6emEiLCJwbGFjZSIsInBsYXkiLCJwbGF5c3RhdGlvbiIsInBsdW1iaW5nIiwicGx1cyIsInBuYyIsInBvaGwiLCJwb2tlciIsInBvbGl0aWUiLCJwb3JuIiwicHJhbWVyaWNhIiwicHJheGkiLCJwcmVzcyIsInByaW1lIiwicHJvZCIs''@;'; put 'put ''InByb2R1Y3Rpb25zIiwicHJvZiIsInByb2dyZXNzaXZlIiwicHJvbW8iLCJwcm9wZXJ0aWVzIiwicHJvcGVydHkiLCJwcm90ZWN0aW9uIiwicHJ1IiwicHJ1ZGVudGlhbCIsInB1YiIsInB3YyIsInFwb24iLCJxdWViZWMiLCJxdWVzdCIsInF2YyIsInJhY2luZyIsInJhZGlvIiwicmFpZCIs''@;'; put 'put ''InJlYWQiLCJyZWFsZXN0YXRlIiwicmVhbHRvciIsInJlYWx0eSIsInJlY2lwZXMiLCJyZWQiLCJyZWRzdG9uZSIsInJlZHVtYnJlbGxhIiwicmVoYWIiLCJyZWlzZSIsInJlaXNlbiIsInJlaXQiLCJyZWxpYW5jZSIsInJlbiIsInJlbnQiLCJyZW50YWxzIiwicmVwYWlyIiwicmVwb3J0Iiwi''@;'; put 'put ''cmVwdWJsaWNhbiIsInJlc3QiLCJyZXN0YXVyYW50IiwicmV2aWV3IiwicmV2aWV3cyIsInJleHJvdGgiLCJyaWNoIiwicmljaGFyZGxpIiwicmljb2giLCJyaWdodGF0aG9tZSIsInJpbCIsInJpbyIsInJpcCIsInJtaXQiLCJyb2NoZXIiLCJyb2NrcyIsInJvZGVvIiwicm9nZXJzIiwicm9v''@;'; put 'put ''bSIsInJzdnAiLCJydWdieSIsInJ1aHIiLCJydW4iLCJyd2UiLCJyeXVreXUiLCJzYWFybGFuZCIsInNhZmUiLCJzYWZldHkiLCJzYWt1cmEiLCJzYWxlIiwic2Fsb24iLCJzYW1zY2x1YiIsInNhbXN1bmciLCJzYW5kdmlrIiwic2FuZHZpa2Nvcm9tYW50Iiwic2Fub2ZpIiwic2FwIiwic2Fy''@;'; put 'put ''bCIsInNhcyIsInNhdmUiLCJzYXhvIiwic2JpIiwic2JzIiwic2NhIiwic2NiIiwic2NoYWVmZmxlciIsInNjaG1pZHQiLCJzY2hvbGFyc2hpcHMiLCJzY2hvb2wiLCJzY2h1bGUiLCJzY2h3YXJ6Iiwic2NpZW5jZSIsInNjam9obnNvbiIsInNjb3IiLCJzY290Iiwic2VhcmNoIiwic2VhdCIs''@;'; put 'put ''InNlY3VyZSIsInNlY3VyaXR5Iiwic2VlayIsInNlbGVjdCIsInNlbmVyIiwic2VydmljZXMiLCJzZXMiLCJzZXZlbiIsInNldyIsInNleCIsInNleHkiLCJzZnIiLCJzaGFuZ3JpbGEiLCJzaGFycCIsInNoYXciLCJzaGVsbCIsInNoaWEiLCJzaGlrc2hhIiwic2hvZXMiLCJzaG9wIiwic2hv''@;'; put 'put ''cHBpbmciLCJzaG91amkiLCJzaG93Iiwic2hvd3RpbWUiLCJzaHJpcmFtIiwic2lsayIsInNpbmEiLCJzaW5nbGVzIiwic2l0ZSIsInNraSIsInNraW4iLCJza3kiLCJza3lwZSIsInNsaW5nIiwic21hcnQiLCJzbWlsZSIsInNuY2YiLCJzb2NjZXIiLCJzb2NpYWwiLCJzb2Z0YmFuayIsInNv''@;'; put 'put ''ZnR3YXJlIiwic29odSIsInNvbGFyIiwic29sdXRpb25zIiwic29uZyIsInNvbnkiLCJzb3kiLCJzcGEiLCJzcGFjZSIsInNwb3J0Iiwic3BvdCIsInNwcmVhZGJldHRpbmciLCJzcmwiLCJzdGFkYSIsInN0YXBsZXMiLCJzdGFyIiwic3RhdGViYW5rIiwic3RhdGVmYXJtIiwic3RjIiwic3Rj''@;'; put 'put ''Z3JvdXAiLCJzdG9ja2hvbG0iLCJzdG9yYWdlIiwic3RvcmUiLCJzdHJlYW0iLCJzdHVkaW8iLCJzdHVkeSIsInN0eWxlIiwic3Vja3MiLCJzdXBwbGllcyIsInN1cHBseSIsInN1cHBvcnQiLCJzdXJmIiwic3VyZ2VyeSIsInN1enVraSIsInN3YXRjaCIsInN3aWZ0Y292ZXIiLCJzd2lzcyIs''@;'; put 'put ''InN5ZG5leSIsInN5bWFudGVjIiwic3lzdGVtcyIsInRhYiIsInRhaXBlaSIsInRhbGsiLCJ0YW9iYW8iLCJ0YXJnZXQiLCJ0YXRhbW90b3JzIiwidGF0YXIiLCJ0YXR0b28iLCJ0YXgiLCJ0YXhpIiwidGNpIiwidGRrIiwidGVhbSIsInRlY2giLCJ0ZWNobm9sb2d5IiwidGVtYXNlayIsInRl''@;'; put 'put ''bm5pcyIsInRldmEiLCJ0aGQiLCJ0aGVhdGVyIiwidGhlYXRyZSIsInRpYWEiLCJ0aWNrZXRzIiwidGllbmRhIiwidGlmZmFueSIsInRpcHMiLCJ0aXJlcyIsInRpcm9sIiwidGptYXh4IiwidGp4IiwidGttYXh4IiwidG1hbGwiLCJ0b2RheSIsInRva3lvIiwidG9vbHMiLCJ0b3AiLCJ0b3Jh''@;'; put 'put ''eSIsInRvc2hpYmEiLCJ0b3RhbCIsInRvdXJzIiwidG93biIsInRveW90YSIsInRveXMiLCJ0cmFkZSIsInRyYWRpbmciLCJ0cmFpbmluZyIsInRyYXZlbCIsInRyYXZlbGNoYW5uZWwiLCJ0cmF2ZWxlcnMiLCJ0cmF2ZWxlcnNpbnN1cmFuY2UiLCJ0cnVzdCIsInRydiIsInR1YmUiLCJ0dWki''@;'; put 'put ''LCJ0dW5lcyIsInR1c2h1IiwidHZzIiwidWJhbmsiLCJ1YnMiLCJ1bmljb20iLCJ1bml2ZXJzaXR5IiwidW5vIiwidW9sIiwidXBzIiwidmFjYXRpb25zIiwidmFuYSIsInZhbmd1YXJkIiwidmVnYXMiLCJ2ZW50dXJlcyIsInZlcmlzaWduIiwidmVyc2ljaGVydW5nIiwidmV0IiwidmlhamVz''@;'; put 'put ''IiwidmlkZW8iLCJ2aWciLCJ2aWtpbmciLCJ2aWxsYXMiLCJ2aW4iLCJ2aXAiLCJ2aXJnaW4iLCJ2aXNhIiwidmlzaW9uIiwidml2YSIsInZpdm8iLCJ2bGFhbmRlcmVuIiwidm9ka2EiLCJ2b2xrc3dhZ2VuIiwidm9sdm8iLCJ2b3RlIiwidm90aW5nIiwidm90byIsInZveWFnZSIsInZ1ZWxv''@;'; put 'put ''cyIsIndhbGVzIiwid2FsbWFydCIsIndhbHRlciIsIndhbmciLCJ3YW5nZ291Iiwid2F0Y2giLCJ3YXRjaGVzIiwid2VhdGhlciIsIndlYXRoZXJjaGFubmVsIiwid2ViY2FtIiwid2ViZXIiLCJ3ZWJzaXRlIiwid2VkIiwid2VkZGluZyIsIndlaWJvIiwid2VpciIsIndob3N3aG8iLCJ3aWVu''@;'; put 'put ''Iiwid2lraSIsIndpbGxpYW1oaWxsIiwid2luIiwid2luZG93cyIsIndpbmUiLCJ3aW5uZXJzIiwid21lIiwid29sdGVyc2tsdXdlciIsIndvb2RzaWRlIiwid29yayIsIndvcmtzIiwid29ybGQiLCJ3b3ciLCJ3dGMiLCJ3dGYiLCJ4Ym94IiwieGVyb3giLCJ4ZmluaXR5IiwieGlodWFuIiwi''@;'; put 'put ''eGluIiwiXHUwOTE1XHUwOTQ5XHUwOTJlIiwiXHUzMGJiXHUzMGZjXHUzMGViIiwiXHU0ZjViXHU1YzcxIiwiXHU2MTQ4XHU1NTg0IiwiXHU5NmM2XHU1NmUyIiwiXHU1NzI4XHU3ZWJmIiwiXHU1OTI3XHU0ZjE3XHU2YzdkXHU4ZjY2IiwiXHU3MGI5XHU3NzBiIiwiXHUwZTA0XHUwZTJkXHUw''@;'; put 'put ''ZTIxIiwiXHU1MTZiXHU1MzY2IiwiXHUwNjQ1XHUwNjQ4XHUwNjQyXHUwNjM5IiwiXHU1MTZjXHU3NmNhIiwiXHU1MTZjXHU1M2Y4IiwiXHU5OTk5XHU2ODNjXHU5MWNjXHU2MmM5IiwiXHU3ZjUxXHU3YWQ5IiwiXHU3OWZiXHU1MmE4IiwiXHU2MjExXHU3MjMxXHU0ZjYwIiwiXHUwNDNjXHUw''@;'; put 'put ''NDNlXHUwNDQxXHUwNDNhXHUwNDMyXHUwNDMwIiwiXHUwNDNhXHUwNDMwXHUwNDQyXHUwNDNlXHUwNDNiXHUwNDM4XHUwNDNhIiwiXHUwNDNlXHUwNDNkXHUwNDNiXHUwNDMwXHUwNDM5XHUwNDNkIiwiXHUwNDQxXHUwNDMwXHUwNDM5XHUwNDQyIiwiXHU4MDU0XHU5MDFhIiwiXHUwNWU3XHUw''@;'; put 'put ''NWQ1XHUwNWRkIiwiXHU2NWY2XHU1YzFhIiwiXHU1ZmFlXHU1MzVhIiwiXHU2ZGUxXHU5YTZjXHU5NTIxIiwiXHUzMGQ1XHUzMGExXHUzMGMzXHUzMGI3XHUzMGU3XHUzMGYzIiwiXHUwNDNlXHUwNDQwXHUwNDMzIiwiXHUwOTI4XHUwOTQ3XHUwOTFmIiwiXHUzMGI5XHUzMGM4XHUzMGEyIiwi''@;'; put 'put ''XHUzMGEyXHUzMGRlXHUzMGJlXHUzMGYzIiwiXHVjMGJjXHVjMTMxIiwiXHU1NTQ2XHU2ODA3IiwiXHU1NTQ2XHU1ZTk3IiwiXHU1NTQ2XHU1N2NlIiwiXHUwNDM0XHUwNDM1XHUwNDQyXHUwNDM4IiwiXHUzMGRkXHUzMGE0XHUzMGYzXHUzMGM4IiwiXHU2NWIwXHU5NWZiIiwiXHU1ZGU1XHU4''@;'; put 'put ''ODRjIiwiXHU1YmI2XHU5NmZiIiwiXHUwNjQzXHUwNjQ4XHUwNjQ1IiwiXHU0ZTJkXHU2NTg3XHU3ZjUxIiwiXHU0ZTJkXHU0ZmUxIiwiXHU1YTMxXHU0ZTUwIiwiXHU4YzM3XHU2YjRjIiwiXHU5NmZiXHU4YTBhXHU3NmM4XHU3OWQxIiwiXHU4ZDJkXHU3MjY5IiwiXHUzMGFmXHUzMGU5XHUz''@;'; put 'put ''MGE2XHUzMGM5IiwiXHU5MDFhXHU4Y2E5IiwiXHU3ZjUxXHU1ZTk3IiwiXHUwOTM4XHUwOTAyXHUwOTE3XHUwOTIwXHUwOTI4IiwiXHU5OTEwXHU1Mzg1IiwiXHU3ZjUxXHU3ZWRjIiwiXHUwNDNhXHUwNDNlXHUwNDNjIiwiXHU0ZTlhXHU5YTZjXHU5MDBhIiwiXHU4YmZhXHU1N2ZhXHU0ZTlh''@;'; put 'put ''IiwiXHU5OGRmXHU1NGMxIiwiXHU5OGRlXHU1MjI5XHU2ZDY2IiwiXHU2MjRiXHU4ODY4IiwiXHU2MjRiXHU2NzNhIiwiXHUwNjI3XHUwNjMxXHUwNjI3XHUwNjQ1XHUwNjQzXHUwNjQ4IiwiXHUwNjI3XHUwNjQ0XHUwNjM5XHUwNjQ0XHUwNjRhXHUwNjI3XHUwNjQ2IiwiXHUwNjI3XHUwNjJh''@;'; put 'put ''XHUwNjM1XHUwNjI3XHUwNjQ0XHUwNjI3XHUwNjJhIiwiXHUwNjI4XHUwNjI3XHUwNjMyXHUwNjI3XHUwNjMxIiwiXHUwNjI3XHUwNjI4XHUwNjQ4XHUwNjM4XHUwNjI4XHUwNjRhIiwiXHUwNjQzXHUwNjI3XHUwNjJiXHUwNjQ4XHUwNjQ0XHUwNjRhXHUwNjQzIiwiXHUwNjQ3XHUwNjQ1XHUw''@;'; put 'put ''NjMxXHUwNjI3XHUwNjQ3IiwiXHViMmY3XHVjZWY0IiwiXHU2NTNmXHU1ZTljIiwiXHUwNjM0XHUwNjI4XHUwNjQzXHUwNjI5IiwiXHUwNjI4XHUwNjRhXHUwNjJhXHUwNjQzIiwiXHUwNjM5XHUwNjMxXHUwNjI4IiwiXHU2NzNhXHU2Nzg0IiwiXHU3ZWM0XHU3ZWM3XHU2NzNhXHU2Nzg0Iiwi''@;'; put 'put ''XHU1MDY1XHU1ZWI3IiwiXHU2MmRiXHU4MDU4IiwiXHUwNDQwXHUwNDQzXHUwNDQxIiwiXHU3M2UwXHU1YjlkIiwiXHU1OTI3XHU2MmZmIiwiXHUzMDdmXHUzMDkzXHUzMDZhIiwiXHUzMGIwXHUzMGZjXHUzMGIwXHUzMGViIiwiXHU0ZTE2XHU3NTRjIiwiXHU2NmY4XHU3YzRkIiwiXHU3ZjUx''@;'; put 'put ''XHU1NzQwIiwiXHViMmY3XHViMTM3IiwiXHUzMGIzXHUzMGUwIiwiXHU1OTI5XHU0ZTNiXHU2NTU5IiwiXHU2ZTM4XHU2MjBmIiwidmVybVx4ZjZnZW5zYmVyYXRlciIsInZlcm1ceGY2Z2Vuc2JlcmF0dW5nIiwiXHU0ZjAxXHU0ZTFhIiwiXHU0ZmUxXHU2MDZmIiwiXHU1NjA5XHU5MWNjXHU1''@;'; put 'put ''OTI3XHU5MTUyXHU1ZTk3IiwiXHU1NjA5XHU5MWNjIiwiXHU1ZTdmXHU0ZTFjIiwiXHU2NTNmXHU1MmExIiwieHl6IiwieWFjaHRzIiwieWFob28iLCJ5YW1heHVuIiwieWFuZGV4IiwieW9kb2Jhc2hpIiwieW9nYSIsInlva29oYW1hIiwieW91IiwieW91dHViZSIsInl1biIsInphcHBvcyIs''@;'; put 'put ''InphcmEiLCJ6ZXJvIiwiemlwIiwiem9uZSIsInp1ZXJpY2giLCJjYy51YSIsImluZi51YSIsImx0ZC51YSIsImFkb2JlYWVtY2xvdWQuY29tIiwiYWRvYmVhZW1jbG91ZC5uZXQiLCIqLmRldi5hZG9iZWFlbWNsb3VkLmNvbSIsImJlZXAucGwiLCJiYXJzeS5jYSIsIiouY29tcHV0ZS5lc3Rh''@;'; put 'put ''dGUiLCIqLmFsY2VzLm5ldHdvcmsiLCJhbHRlcnZpc3RhLm9yZyIsImFsd2F5c2RhdGEubmV0IiwiY2xvdWRmcm9udC5uZXQiLCIqLmNvbXB1dGUuYW1hem9uYXdzLmNvbSIsIiouY29tcHV0ZS0xLmFtYXpvbmF3cy5jb20iLCIqLmNvbXB1dGUuYW1hem9uYXdzLmNvbS5jbiIsInVzLWVhc3Qt''@;'; put 'put ''MS5hbWF6b25hd3MuY29tIiwiY24tbm9ydGgtMS5lYi5hbWF6b25hd3MuY29tLmNuIiwiY24tbm9ydGh3ZXN0LTEuZWIuYW1hem9uYXdzLmNvbS5jbiIsImVsYXN0aWNiZWFuc3RhbGsuY29tIiwiYXAtbm9ydGhlYXN0LTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJhcC1ub3J0aGVhc3QtMi5l''@;'; put 'put ''bGFzdGljYmVhbnN0YWxrLmNvbSIsImFwLW5vcnRoZWFzdC0zLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwiYXAtc291dGgtMS5lbGFzdGljYmVhbnN0YWxrLmNvbSIsImFwLXNvdXRoZWFzdC0xLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwiYXAtc291dGhlYXN0LTIuZWxhc3RpY2JlYW5zdGFsay5j''@;'; put 'put ''b20iLCJjYS1jZW50cmFsLTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJldS1jZW50cmFsLTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJldS13ZXN0LTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJldS13ZXN0LTIuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJldS13ZXN0LTMuZWxhc3RpY2JlYW5z''@;'; put 'put ''dGFsay5jb20iLCJzYS1lYXN0LTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJ1cy1lYXN0LTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJ1cy1lYXN0LTIuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJ1cy1nb3Ytd2VzdC0xLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwidXMtd2VzdC0xLmVsYXN0aWNi''@;'; put 'put ''ZWFuc3RhbGsuY29tIiwidXMtd2VzdC0yLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwiKi5lbGIuYW1hem9uYXdzLmNvbSIsIiouZWxiLmFtYXpvbmF3cy5jb20uY24iLCJzMy5hbWF6b25hd3MuY29tIiwiczMtYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWFwLW5vcnRoZWFzdC0y''@;'; put 'put ''LmFtYXpvbmF3cy5jb20iLCJzMy1hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hcC1zb3V0aGVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtYXAtc291dGhlYXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLWNhLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiczMtZXUtY2VudHJhbC0xLmFt''@;'; put 'put ''YXpvbmF3cy5jb20iLCJzMy1ldS13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWV1LXdlc3QtMi5hbWF6b25hd3MuY29tIiwiczMtZXUtd2VzdC0zLmFtYXpvbmF3cy5jb20iLCJzMy1leHRlcm5hbC0xLmFtYXpvbmF3cy5jb20iLCJzMy1maXBzLXVzLWdvdi13ZXN0LTEuYW1hem9uYXdzLmNv''@;'; put 'put ''bSIsInMzLXNhLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtdXMtZ292LXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMtdXMtZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy11cy13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXVzLXdlc3QtMi5hbWF6b25hd3MuY29tIiwiczMuYXAtbm9ydGhl''@;'; put 'put ''YXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbSIsInMzLmNuLW5vcnRoLTEuYW1hem9uYXdzLmNvbS5jbiIsInMzLmNhLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiczMuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy5ldS13ZXN0LTIuYW1h''@;'; put 'put ''em9uYXdzLmNvbSIsInMzLmV1LXdlc3QtMy5hbWF6b25hd3MuY29tIiwiczMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5hcC1ub3J0aGVhc3QtMi5hbWF6b25hd3MuY29tIiwiczMuZHVh''@;'; put 'put ''bHN0YWNrLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5hcC1zb3V0aGVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLmFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suY2EtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJz''@;'; put 'put ''My5kdWFsc3RhY2suZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suZXUtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suZXUtd2VzdC0zLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFs''@;'; put 'put ''c3RhY2suc2EtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2sudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2sudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLXVzLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS11cy13ZXN0''@;'; put 'put ''LTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUtdXMtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLWFwLXNvdXRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLWFwLXNvdXRoZWFzdC0y''@;'; put 'put ''LmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLWV1LXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS1zYS1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuYXAtbm9ydGhlYXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuYXAtc291dGgtMS5hbWF6b25hd3Mu''@;'; put 'put ''Y29tIiwiczMtd2Vic2l0ZS5jYS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmV1LXdlc3QtMi5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5ldS13ZXN0LTMuYW1hem9uYXdzLmNvbSIsInMzLXdl''@;'; put 'put ''YnNpdGUudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJhbXN3Lm5sIiwidDNsM3AwcnQubmV0IiwidGVsZS5hbXVuZS5vcmciLCJhcGlnZWUuaW8iLCJvbi1hcHRpYmxlLmNvbSIsInVzZXIuYXNlaW5ldC5uZS5qcCIsImd2LnZjIiwiZC5ndi52YyIsInVzZXIucGFydHkuZXVzIiwicGltaWVu''@;'; put 'put ''dGEub3JnIiwicG9pdnJvbi5vcmciLCJwb3RhZ2VyLm9yZyIsInN3ZWV0cGVwcGVyLm9yZyIsIm15YXN1c3Rvci5jb20iLCJteWZyaXR6Lm5ldCIsIiouYXdkZXYuY2EiLCIqLmFkdmlzb3Iud3MiLCJiLWRhdGEuaW8iLCJiYWNrcGxhbmVhcHAuaW8iLCJiYWxlbmEtZGV2aWNlcy5jb20iLCJh''@;'; put 'put ''cHAuYmFuemFpY2xvdWQuaW8iLCJiZXRhaW5hYm94LmNvbSIsImJuci5sYSIsImJsYWNrYmF1ZGNkbi5uZXQiLCJib29tbGEubmV0IiwiYm94ZnVzZS5pbyIsInNxdWFyZTcuY2giLCJicGxhY2VkLmNvbSIsImJwbGFjZWQuZGUiLCJzcXVhcmU3LmRlIiwiYnBsYWNlZC5uZXQiLCJzcXVhcmU3''@;'; put 'put ''Lm5ldCIsImJyb3dzZXJzYWZldHltYXJrLmlvIiwidWswLmJpZ3YuaW8iLCJkaC5ieXRlbWFyay5jby51ayIsInZtLmJ5dGVtYXJrLmNvLnVrIiwibXljZC5ldSIsImNhcnJkLmNvIiwiY3JkLmNvIiwidXd1LmFpIiwiYWUub3JnIiwiYXIuY29tIiwiYnIuY29tIiwiY24uY29tIiwiY29tLmRl''@;'; put 'put ''IiwiY29tLnNlIiwiZGUuY29tIiwiZXUuY29tIiwiZ2IuY29tIiwiZ2IubmV0IiwiaHUuY29tIiwiaHUubmV0IiwianAubmV0IiwianBuLmNvbSIsImtyLmNvbSIsIm1leC5jb20iLCJuby5jb20iLCJxYy5jb20iLCJydS5jb20iLCJzYS5jb20iLCJzZS5uZXQiLCJ1ay5jb20iLCJ1ay5uZXQi''@;'; put 'put ''LCJ1cy5jb20iLCJ1eS5jb20iLCJ6YS5ieiIsInphLmNvbSIsImFmcmljYS5jb20iLCJnci5jb20iLCJpbi5uZXQiLCJ1cy5vcmciLCJjby5jb20iLCJjLmxhIiwiY2VydG1nci5vcmciLCJ4ZW5hcHBvbmF6dXJlLmNvbSIsImRpc2NvdXJzZS5ncm91cCIsImRpc2NvdXJzZS50ZWFtIiwidmly''@;'; put 'put ''dHVlZWxkb21laW4ubmwiLCJjbGV2ZXJhcHBzLmlvIiwiKi5sY2wuZGV2IiwiKi5zdGcuZGV2IiwiYzY2Lm1lIiwiY2xvdWQ2Ni53cyIsImNsb3VkNjYuem9uZSIsImpkZXZjbG91ZC5jb20iLCJ3cGRldmNsb3VkLmNvbSIsImNsb3VkYWNjZXNzLmhvc3QiLCJmcmVlc2l0ZS5ob3N0IiwiY2xv''@;'; put 'put ''dWRhY2Nlc3MubmV0IiwiY2xvdWRjb250cm9sbGVkLmNvbSIsImNsb3VkY29udHJvbGFwcC5jb20iLCJjbG91ZGVyYS5zaXRlIiwidHJ5Y2xvdWRmbGFyZS5jb20iLCJ3b3JrZXJzLmRldiIsInduZXh0LmFwcCIsImNvLmNhIiwiKi5vdGFwLmNvIiwiY28uY3oiLCJjLmNkbjc3Lm9yZyIsImNk''@;'; put 'put ''bjc3LXNzbC5uZXQiLCJyLmNkbjc3Lm5ldCIsInJzYy5jZG43Ny5vcmciLCJzc2wub3JpZ2luLmNkbjc3LXNlY3VyZS5vcmciLCJjbG91ZG5zLmFzaWEiLCJjbG91ZG5zLmJpeiIsImNsb3VkbnMuY2x1YiIsImNsb3VkbnMuY2MiLCJjbG91ZG5zLmV1IiwiY2xvdWRucy5pbiIsImNsb3VkbnMu''@;'; put 'put ''aW5mbyIsImNsb3VkbnMub3JnIiwiY2xvdWRucy5wcm8iLCJjbG91ZG5zLnB3IiwiY2xvdWRucy51cyIsImNsb3VkZWl0eS5uZXQiLCJjbnB5LmdkbiIsImNvLm5sIiwiY28ubm8iLCJ3ZWJob3N0aW5nLmJlIiwiaG9zdGluZy1jbHVzdGVyLm5sIiwiYWMucnUiLCJlZHUucnUiLCJnb3YucnUi''@;'; put 'put ''LCJpbnQucnUiLCJtaWwucnUiLCJ0ZXN0LnJ1IiwiZHluLmNvc2lkbnMuZGUiLCJkeW5hbWlzY2hlcy1kbnMuZGUiLCJkbnN1cGRhdGVyLmRlIiwiaW50ZXJuZXQtZG5zLmRlIiwibC1vLWctaS1uLmRlIiwiZHluYW1pYy1kbnMuaW5mbyIsImZlc3RlLWlwLm5ldCIsImtueC1zZXJ2ZXIubmV0''@;'; put 'put ''Iiwic3RhdGljLWFjY2Vzcy5uZXQiLCJyZWFsbS5jeiIsIiouY3J5cHRvbm9taWMubmV0IiwiY3VwY2FrZS5pcyIsIiouY3VzdG9tZXItb2NpLmNvbSIsIioub2NpLmN1c3RvbWVyLW9jaS5jb20iLCIqLm9jcC5jdXN0b21lci1vY2kuY29tIiwiKi5vY3MuY3VzdG9tZXItb2NpLmNvbSIsImN5''@;'; put 'put ''b24ubGluayIsImN5b24uc2l0ZSIsImRhcGxpZS5tZSIsImxvY2FsaG9zdC5kYXBsaWUubWUiLCJkYXR0b2xvY2FsLmNvbSIsImRhdHRvcmVsYXkuY29tIiwiZGF0dG93ZWIuY29tIiwibXlkYXR0by5jb20iLCJkYXR0b2xvY2FsLm5ldCIsIm15ZGF0dG8ubmV0IiwiYml6LmRrIiwiY28uZGsi''@;'; put 'put ''LCJmaXJtLmRrIiwicmVnLmRrIiwic3RvcmUuZGsiLCIqLmRhcHBzLmVhcnRoIiwiKi5ienouZGFwcHMuZWFydGgiLCJidWlsdHdpdGhkYXJrLmNvbSIsImVkZ2VzdGFjay5tZSIsImRlYmlhbi5uZXQiLCJkZWR5bi5pbyIsImRuc2hvbWUuZGUiLCJvbmxpbmUudGgiLCJzaG9wLnRoIiwiZHJh''@;'; put 'put ''eWRkbnMuY29tIiwiZHJlYW1ob3N0ZXJzLmNvbSIsIm15ZHJvYm8uY29tIiwiZHJ1ZC5pbyIsImRydWQudXMiLCJkdWNrZG5zLm9yZyIsImR5LmZpIiwidHVuay5vcmciLCJkeW5kbnMtYXQtaG9tZS5jb20iLCJkeW5kbnMtYXQtd29yay5jb20iLCJkeW5kbnMtYmxvZy5jb20iLCJkeW5kbnMt''@;'; put 'put ''ZnJlZS5jb20iLCJkeW5kbnMtaG9tZS5jb20iLCJkeW5kbnMtaXAuY29tIiwiZHluZG5zLW1haWwuY29tIiwiZHluZG5zLW9mZmljZS5jb20iLCJkeW5kbnMtcGljcy5jb20iLCJkeW5kbnMtcmVtb3RlLmNvbSIsImR5bmRucy1zZXJ2ZXIuY29tIiwiZHluZG5zLXdlYi5jb20iLCJkeW5kbnMt''@;'; put 'put ''d2lraS5jb20iLCJkeW5kbnMtd29yay5jb20iLCJkeW5kbnMuYml6IiwiZHluZG5zLmluZm8iLCJkeW5kbnMub3JnIiwiZHluZG5zLnR2IiwiYXQtYmFuZC1jYW1wLm5ldCIsImF0aC5jeCIsImJhcnJlbC1vZi1rbm93bGVkZ2UuaW5mbyIsImJhcnJlbGwtb2Yta25vd2xlZGdlLmluZm8iLCJi''@;'; put 'put ''ZXR0ZXItdGhhbi50diIsImJsb2dkbnMuY29tIiwiYmxvZ2Rucy5uZXQiLCJibG9nZG5zLm9yZyIsImJsb2dzaXRlLm9yZyIsImJvbGRseWdvaW5nbm93aGVyZS5vcmciLCJicm9rZS1pdC5uZXQiLCJidXlzaG91c2VzLm5ldCIsImNlY2hpcmUuY29tIiwiZG5zYWxpYXMuY29tIiwiZG5zYWxp''@;'; put 'put ''YXMubmV0IiwiZG5zYWxpYXMub3JnIiwiZG5zZG9qby5jb20iLCJkbnNkb2pvLm5ldCIsImRuc2Rvam8ub3JnIiwiZG9lcy1pdC5uZXQiLCJkb2VzbnRleGlzdC5jb20iLCJkb2VzbnRleGlzdC5vcmciLCJkb250ZXhpc3QuY29tIiwiZG9udGV4aXN0Lm5ldCIsImRvbnRleGlzdC5vcmciLCJk''@;'; put 'put ''b29tZG5zLmNvbSIsImRvb21kbnMub3JnIiwiZHZyZG5zLm9yZyIsImR5bi1vLXNhdXIuY29tIiwiZHluYWxpYXMuY29tIiwiZHluYWxpYXMubmV0IiwiZHluYWxpYXMub3JnIiwiZHluYXRob21lLm5ldCIsImR5bmRucy53cyIsImVuZG9maW50ZXJuZXQubmV0IiwiZW5kb2ZpbnRlcm5ldC5v''@;'; put 'put ''cmciLCJlbmRvZnRoZWludGVybmV0Lm9yZyIsImVzdC1hLWxhLW1haXNvbi5jb20iLCJlc3QtYS1sYS1tYXNpb24uY29tIiwiZXN0LWxlLXBhdHJvbi5jb20iLCJlc3QtbW9uLWJsb2d1ZXVyLmNvbSIsImZvci1iZXR0ZXIuYml6IiwiZm9yLW1vcmUuYml6IiwiZm9yLW91ci5pbmZvIiwiZm9y''@;'; put 'put ''LXNvbWUuYml6IiwiZm9yLXRoZS5iaXoiLCJmb3Jnb3QuaGVyLm5hbWUiLCJmb3Jnb3QuaGlzLm5hbWUiLCJmcm9tLWFrLmNvbSIsImZyb20tYWwuY29tIiwiZnJvbS1hci5jb20iLCJmcm9tLWF6Lm5ldCIsImZyb20tY2EuY29tIiwiZnJvbS1jby5uZXQiLCJmcm9tLWN0LmNvbSIsImZyb20t''@;'; put 'put ''ZGMuY29tIiwiZnJvbS1kZS5jb20iLCJmcm9tLWZsLmNvbSIsImZyb20tZ2EuY29tIiwiZnJvbS1oaS5jb20iLCJmcm9tLWlhLmNvbSIsImZyb20taWQuY29tIiwiZnJvbS1pbC5jb20iLCJmcm9tLWluLmNvbSIsImZyb20ta3MuY29tIiwiZnJvbS1reS5jb20iLCJmcm9tLWxhLm5ldCIsImZy''@;'; put 'put ''b20tbWEuY29tIiwiZnJvbS1tZC5jb20iLCJmcm9tLW1lLm9yZyIsImZyb20tbWkuY29tIiwiZnJvbS1tbi5jb20iLCJmcm9tLW1vLmNvbSIsImZyb20tbXMuY29tIiwiZnJvbS1tdC5jb20iLCJmcm9tLW5jLmNvbSIsImZyb20tbmQuY29tIiwiZnJvbS1uZS5jb20iLCJmcm9tLW5oLmNvbSIs''@;'; put 'put ''ImZyb20tbmouY29tIiwiZnJvbS1ubS5jb20iLCJmcm9tLW52LmNvbSIsImZyb20tbnkubmV0IiwiZnJvbS1vaC5jb20iLCJmcm9tLW9rLmNvbSIsImZyb20tb3IuY29tIiwiZnJvbS1wYS5jb20iLCJmcm9tLXByLmNvbSIsImZyb20tcmkuY29tIiwiZnJvbS1zYy5jb20iLCJmcm9tLXNkLmNv''@;'; put 'put ''bSIsImZyb20tdG4uY29tIiwiZnJvbS10eC5jb20iLCJmcm9tLXV0LmNvbSIsImZyb20tdmEuY29tIiwiZnJvbS12dC5jb20iLCJmcm9tLXdhLmNvbSIsImZyb20td2kuY29tIiwiZnJvbS13di5jb20iLCJmcm9tLXd5LmNvbSIsImZ0cGFjY2Vzcy5jYyIsImZ1ZXR0ZXJ0ZGFzbmV0ei5kZSIs''@;'; put 'put ''ImdhbWUtaG9zdC5vcmciLCJnYW1lLXNlcnZlci5jYyIsImdldG15aXAuY29tIiwiZ2V0cy1pdC5uZXQiLCJnby5keW5kbnMub3JnIiwiZ290ZG5zLmNvbSIsImdvdGRucy5vcmciLCJncm9rcy10aGUuaW5mbyIsImdyb2tzLXRoaXMuaW5mbyIsImhhbS1yYWRpby1vcC5uZXQiLCJoZXJlLWZv''@;'; put 'put ''ci1tb3JlLmluZm8iLCJob2JieS1zaXRlLmNvbSIsImhvYmJ5LXNpdGUub3JnIiwiaG9tZS5keW5kbnMub3JnIiwiaG9tZWRucy5vcmciLCJob21lZnRwLm5ldCIsImhvbWVmdHAub3JnIiwiaG9tZWlwLm5ldCIsImhvbWVsaW51eC5jb20iLCJob21lbGludXgubmV0IiwiaG9tZWxpbnV4Lm9y''@;'; put 'put ''ZyIsImhvbWV1bml4LmNvbSIsImhvbWV1bml4Lm5ldCIsImhvbWV1bml4Lm9yZyIsImlhbWFsbGFtYS5jb20iLCJpbi10aGUtYmFuZC5uZXQiLCJpcy1hLWFuYXJjaGlzdC5jb20iLCJpcy1hLWJsb2dnZXIuY29tIiwiaXMtYS1ib29ra2VlcGVyLmNvbSIsImlzLWEtYnJ1aW5zZmFuLm9yZyIs''@;'; put 'put ''ImlzLWEtYnVsbHMtZmFuLmNvbSIsImlzLWEtY2FuZGlkYXRlLm9yZyIsImlzLWEtY2F0ZXJlci5jb20iLCJpcy1hLWNlbHRpY3NmYW4ub3JnIiwiaXMtYS1jaGVmLmNvbSIsImlzLWEtY2hlZi5uZXQiLCJpcy1hLWNoZWYub3JnIiwiaXMtYS1jb25zZXJ2YXRpdmUuY29tIiwiaXMtYS1jcGEu''@;'; put 'put ''Y29tIiwiaXMtYS1jdWJpY2xlLXNsYXZlLmNvbSIsImlzLWEtZGVtb2NyYXQuY29tIiwiaXMtYS1kZXNpZ25lci5jb20iLCJpcy1hLWRvY3Rvci5jb20iLCJpcy1hLWZpbmFuY2lhbGFkdmlzb3IuY29tIiwiaXMtYS1nZWVrLmNvbSIsImlzLWEtZ2Vlay5uZXQiLCJpcy1hLWdlZWsub3JnIiwi''@;'; put 'put ''aXMtYS1ncmVlbi5jb20iLCJpcy1hLWd1cnUuY29tIiwiaXMtYS1oYXJkLXdvcmtlci5jb20iLCJpcy1hLWh1bnRlci5jb20iLCJpcy1hLWtuaWdodC5vcmciLCJpcy1hLWxhbmRzY2FwZXIuY29tIiwiaXMtYS1sYXd5ZXIuY29tIiwiaXMtYS1saWJlcmFsLmNvbSIsImlzLWEtbGliZXJ0YXJp''@;'; put 'put ''YW4uY29tIiwiaXMtYS1saW51eC11c2VyLm9yZyIsImlzLWEtbGxhbWEuY29tIiwiaXMtYS1tdXNpY2lhbi5jb20iLCJpcy1hLW5hc2NhcmZhbi5jb20iLCJpcy1hLW51cnNlLmNvbSIsImlzLWEtcGFpbnRlci5jb20iLCJpcy1hLXBhdHNmYW4ub3JnIiwiaXMtYS1wZXJzb25hbHRyYWluZXIu''@;'; put 'put ''Y29tIiwiaXMtYS1waG90b2dyYXBoZXIuY29tIiwiaXMtYS1wbGF5ZXIuY29tIiwiaXMtYS1yZXB1YmxpY2FuLmNvbSIsImlzLWEtcm9ja3N0YXIuY29tIiwiaXMtYS1zb2NpYWxpc3QuY29tIiwiaXMtYS1zb3hmYW4ub3JnIiwiaXMtYS1zdHVkZW50LmNvbSIsImlzLWEtdGVhY2hlci5jb20i''@;'; put 'put ''LCJpcy1hLXRlY2hpZS5jb20iLCJpcy1hLXRoZXJhcGlzdC5jb20iLCJpcy1hbi1hY2NvdW50YW50LmNvbSIsImlzLWFuLWFjdG9yLmNvbSIsImlzLWFuLWFjdHJlc3MuY29tIiwiaXMtYW4tYW5hcmNoaXN0LmNvbSIsImlzLWFuLWFydGlzdC5jb20iLCJpcy1hbi1lbmdpbmVlci5jb20iLCJp''@;'; put 'put ''cy1hbi1lbnRlcnRhaW5lci5jb20iLCJpcy1ieS51cyIsImlzLWNlcnRpZmllZC5jb20iLCJpcy1mb3VuZC5vcmciLCJpcy1nb25lLmNvbSIsImlzLWludG8tYW5pbWUuY29tIiwiaXMtaW50by1jYXJzLmNvbSIsImlzLWludG8tY2FydG9vbnMuY29tIiwiaXMtaW50by1nYW1lcy5jb20iLCJp''@;'; put 'put ''cy1sZWV0LmNvbSIsImlzLWxvc3Qub3JnIiwiaXMtbm90LWNlcnRpZmllZC5jb20iLCJpcy1zYXZlZC5vcmciLCJpcy1zbGljay5jb20iLCJpcy11YmVybGVldC5jb20iLCJpcy12ZXJ5LWJhZC5vcmciLCJpcy12ZXJ5LWV2aWwub3JnIiwiaXMtdmVyeS1nb29kLm9yZyIsImlzLXZlcnktbmlj''@;'; put 'put ''ZS5vcmciLCJpcy12ZXJ5LXN3ZWV0Lm9yZyIsImlzLXdpdGgtdGhlYmFuZC5jb20iLCJpc2EtZ2Vlay5jb20iLCJpc2EtZ2Vlay5uZXQiLCJpc2EtZ2Vlay5vcmciLCJpc2EtaG9ja2V5bnV0LmNvbSIsImlzc21hcnRlcnRoYW55b3UuY29tIiwiaXN0ZWluZ2Vlay5kZSIsImlzdG1laW4uZGUi''@;'; put 'put ''LCJraWNrcy1hc3MubmV0Iiwia2lja3MtYXNzLm9yZyIsImtub3dzaXRhbGwuaW5mbyIsImxhbmQtNC1zYWxlLnVzIiwibGVidGltbmV0ei5kZSIsImxlaXR1bmdzZW4uZGUiLCJsaWtlcy1waWUuY29tIiwibGlrZXNjYW5keS5jb20iLCJtZXJzZWluZS5udSIsIm1pbmUubnUiLCJtaXNjb25m''@;'; put 'put ''dXNlZC5vcmciLCJteXBldHMud3MiLCJteXBob3Rvcy5jYyIsIm5lYXQtdXJsLmNvbSIsIm9mZmljZS1vbi10aGUubmV0Iiwib24tdGhlLXdlYi50diIsInBvZHpvbmUubmV0IiwicG9kem9uZS5vcmciLCJyZWFkbXlibG9nLm9yZyIsInNhdmVzLXRoZS13aGFsZXMuY29tIiwic2NyYXBwZXIt''@;'; put 'put ''c2l0ZS5uZXQiLCJzY3JhcHBpbmcuY2MiLCJzZWxmaXAuYml6Iiwic2VsZmlwLmNvbSIsInNlbGZpcC5pbmZvIiwic2VsZmlwLm5ldCIsInNlbGZpcC5vcmciLCJzZWxscy1mb3ItbGVzcy5jb20iLCJzZWxscy1mb3ItdS5jb20iLCJzZWxscy1pdC5uZXQiLCJzZWxsc3lvdXJob21lLm9yZyIs''@;'; put 'put ''InNlcnZlYmJzLmNvbSIsInNlcnZlYmJzLm5ldCIsInNlcnZlYmJzLm9yZyIsInNlcnZlZnRwLm5ldCIsInNlcnZlZnRwLm9yZyIsInNlcnZlZ2FtZS5vcmciLCJzaGFja25ldC5udSIsInNpbXBsZS11cmwuY29tIiwic3BhY2UtdG8tcmVudC5jb20iLCJzdHVmZi00LXNhbGUub3JnIiwic3R1''@;'; put 'put ''ZmYtNC1zYWxlLnVzIiwidGVhY2hlcy15b2dhLmNvbSIsInRocnVoZXJlLm5ldCIsInRyYWV1bXRnZXJhZGUuZGUiLCJ3ZWJob3AuYml6Iiwid2ViaG9wLmluZm8iLCJ3ZWJob3AubmV0Iiwid2ViaG9wLm9yZyIsIndvcnNlLXRoYW4udHYiLCJ3cml0ZXN0aGlzYmxvZy5jb20iLCJkZG5zcy5k''@;'; put 'put ''ZSIsImR5bi5kZG5zcy5kZSIsImR5bmRucy5kZG5zcy5kZSIsImR5bmRuczEuZGUiLCJkeW4taXAyNC5kZSIsImhvbWUtd2Vic2VydmVyLmRlIiwiZHluLmhvbWUtd2Vic2VydmVyLmRlIiwibXlob21lLXNlcnZlci5kZSIsImRkbnNzLm9yZyIsImRlZmluaW1hLm5ldCIsImRlZmluaW1hLmlv''@;'; put 'put ''IiwiYmNpLmRuc3RyYWNlLnBybyIsImRkbnNmcmVlLmNvbSIsImRkbnNnZWVrLmNvbSIsImdpaXplLmNvbSIsImdsZWV6ZS5jb20iLCJrb3pvdy5jb20iLCJsb3NleW91cmlwLmNvbSIsIm9vZ3V5LmNvbSIsInRoZXdvcmtwYy5jb20iLCJjYXNhY2FtLm5ldCIsImR5bnUubmV0IiwiYWNjZXNz''@;'; put 'put ''Y2FtLm9yZyIsImNhbWR2ci5vcmciLCJmcmVlZGRucy5vcmciLCJteXdpcmUub3JnIiwid2VicmVkaXJlY3Qub3JnIiwibXlkZG5zLnJvY2tzIiwiYmxvZ3NpdGUueHl6IiwiZHludjYubmV0IiwiZTQuY3oiLCJlbi1yb290LmZyIiwibXl0dWxlYXAuY29tIiwib25yZWQub25lIiwic3RhZ2lu''@;'; put 'put ''Zy5vbnJlZC5vbmUiLCJlbm9uaWMuaW8iLCJjdXN0b21lci5lbm9uaWMuaW8iLCJldS5vcmciLCJhbC5ldS5vcmciLCJhc3NvLmV1Lm9yZyIsImF0LmV1Lm9yZyIsImF1LmV1Lm9yZyIsImJlLmV1Lm9yZyIsImJnLmV1Lm9yZyIsImNhLmV1Lm9yZyIsImNkLmV1Lm9yZyIsImNoLmV1Lm9yZyIs''@;'; put 'put ''ImNuLmV1Lm9yZyIsImN5LmV1Lm9yZyIsImN6LmV1Lm9yZyIsImRlLmV1Lm9yZyIsImRrLmV1Lm9yZyIsImVkdS5ldS5vcmciLCJlZS5ldS5vcmciLCJlcy5ldS5vcmciLCJmaS5ldS5vcmciLCJmci5ldS5vcmciLCJnci5ldS5vcmciLCJoci5ldS5vcmciLCJodS5ldS5vcmciLCJpZS5ldS5v''@;'; put 'put ''cmciLCJpbC5ldS5vcmciLCJpbi5ldS5vcmciLCJpbnQuZXUub3JnIiwiaXMuZXUub3JnIiwiaXQuZXUub3JnIiwianAuZXUub3JnIiwia3IuZXUub3JnIiwibHQuZXUub3JnIiwibHUuZXUub3JnIiwibHYuZXUub3JnIiwibWMuZXUub3JnIiwibWUuZXUub3JnIiwibWsuZXUub3JnIiwibXQu''@;'; put 'put ''ZXUub3JnIiwibXkuZXUub3JnIiwibmV0LmV1Lm9yZyIsIm5nLmV1Lm9yZyIsIm5sLmV1Lm9yZyIsIm5vLmV1Lm9yZyIsIm56LmV1Lm9yZyIsInBhcmlzLmV1Lm9yZyIsInBsLmV1Lm9yZyIsInB0LmV1Lm9yZyIsInEtYS5ldS5vcmciLCJyby5ldS5vcmciLCJydS5ldS5vcmciLCJzZS5ldS5v''@;'; put 'put ''cmciLCJzaS5ldS5vcmciLCJzay5ldS5vcmciLCJ0ci5ldS5vcmciLCJ1ay5ldS5vcmciLCJ1cy5ldS5vcmciLCJldS0xLmV2ZW5ub2RlLmNvbSIsImV1LTIuZXZlbm5vZGUuY29tIiwiZXUtMy5ldmVubm9kZS5jb20iLCJldS00LmV2ZW5ub2RlLmNvbSIsInVzLTEuZXZlbm5vZGUuY29tIiwi''@;'; put 'put ''dXMtMi5ldmVubm9kZS5jb20iLCJ1cy0zLmV2ZW5ub2RlLmNvbSIsInVzLTQuZXZlbm5vZGUuY29tIiwidHdtYWlsLmNjIiwidHdtYWlsLm5ldCIsInR3bWFpbC5vcmciLCJteW1haWxlci5jb20udHciLCJ1cmwudHciLCJhcHBzLmZic2J4LmNvbSIsInJ1Lm5ldCIsImFkeWdleWEucnUiLCJi''@;'; put 'put ''YXNoa2lyaWEucnUiLCJiaXIucnUiLCJjYmcucnUiLCJjb20ucnUiLCJkYWdlc3Rhbi5ydSIsImdyb3pueS5ydSIsImthbG15a2lhLnJ1Iiwia3VzdGFuYWkucnUiLCJtYXJpbmUucnUiLCJtb3Jkb3ZpYS5ydSIsIm1zay5ydSIsIm15dGlzLnJ1IiwibmFsY2hpay5ydSIsIm5vdi5ydSIsInB5''@;'; put 'put ''YXRpZ29yc2sucnUiLCJzcGIucnUiLCJ2bGFkaWthdmthei5ydSIsInZsYWRpbWlyLnJ1IiwiYWJraGF6aWEuc3UiLCJhZHlnZXlhLnN1IiwiYWt0eXViaW5zay5zdSIsImFya2hhbmdlbHNrLnN1IiwiYXJtZW5pYS5zdSIsImFzaGdhYmFkLnN1IiwiYXplcmJhaWphbi5zdSIsImJhbGFzaG92''@;'; put 'put ''LnN1IiwiYmFzaGtpcmlhLnN1IiwiYnJ5YW5zay5zdSIsImJ1a2hhcmEuc3UiLCJjaGlta2VudC5zdSIsImRhZ2VzdGFuLnN1IiwiZWFzdC1rYXpha2hzdGFuLnN1IiwiZXhuZXQuc3UiLCJnZW9yZ2lhLnN1IiwiZ3Jvem55LnN1IiwiaXZhbm92by5zdSIsImphbWJ5bC5zdSIsImthbG15a2lh''@;'; put 'put ''LnN1Iiwia2FsdWdhLnN1Iiwia2FyYWNvbC5zdSIsImthcmFnYW5kYS5zdSIsImthcmVsaWEuc3UiLCJraGFrYXNzaWEuc3UiLCJrcmFzbm9kYXIuc3UiLCJrdXJnYW4uc3UiLCJrdXN0YW5haS5zdSIsImxlbnVnLnN1IiwibWFuZ3lzaGxhay5zdSIsIm1vcmRvdmlhLnN1IiwibXNrLnN1Iiwi''@;'; put 'put ''bXVybWFuc2suc3UiLCJuYWxjaGlrLnN1IiwibmF2b2kuc3UiLCJub3J0aC1rYXpha2hzdGFuLnN1Iiwibm92LnN1Iiwib2JuaW5zay5zdSIsInBlbnphLnN1IiwicG9rcm92c2suc3UiLCJzb2NoaS5zdSIsInNwYi5zdSIsInRhc2hrZW50LnN1IiwidGVybWV6LnN1IiwidG9nbGlhdHRpLnN1''@;'; put 'put ''IiwidHJvaXRzay5zdSIsInRzZWxpbm9ncmFkLnN1IiwidHVsYS5zdSIsInR1dmEuc3UiLCJ2bGFkaWthdmthei5zdSIsInZsYWRpbWlyLnN1Iiwidm9sb2dkYS5zdSIsImNoYW5uZWxzZHZyLm5ldCIsInUuY2hhbm5lbHNkdnIubmV0IiwiZmFzdGx5LXRlcnJhcml1bS5jb20iLCJmYXN0bHls''@;'; put 'put ''Yi5uZXQiLCJtYXAuZmFzdGx5bGIubmV0IiwiZnJlZXRscy5mYXN0bHkubmV0IiwibWFwLmZhc3RseS5uZXQiLCJhLnByb2QuZmFzdGx5Lm5ldCIsImdsb2JhbC5wcm9kLmZhc3RseS5uZXQiLCJhLnNzbC5mYXN0bHkubmV0IiwiYi5zc2wuZmFzdGx5Lm5ldCIsImdsb2JhbC5zc2wuZmFzdGx5''@;'; put 'put ''Lm5ldCIsImZhc3RwYW5lbC5kaXJlY3QiLCJmYXN0dnBzLXNlcnZlci5jb20iLCJmaGFwcC54eXoiLCJmZWRvcmFpbmZyYWNsb3VkLm9yZyIsImZlZG9yYXBlb3BsZS5vcmciLCJjbG91ZC5mZWRvcmFwcm9qZWN0Lm9yZyIsImFwcC5vcy5mZWRvcmFwcm9qZWN0Lm9yZyIsImFwcC5vcy5zdGcu''@;'; put 'put ''ZmVkb3JhcHJvamVjdC5vcmciLCJteWRvYmlzcy5jb20iLCJmaWxlZ2Vhci5tZSIsImZpbGVnZWFyLWF1Lm1lIiwiZmlsZWdlYXItZGUubWUiLCJmaWxlZ2Vhci1nYi5tZSIsImZpbGVnZWFyLWllLm1lIiwiZmlsZWdlYXItanAubWUiLCJmaWxlZ2Vhci1zZy5tZSIsImZpcmViYXNlYXBwLmNv''@;'; put 'put ''bSIsImZseW5uaHViLmNvbSIsImZseW5uaG9zdGluZy5uZXQiLCIwZS52YyIsImZyZWVib3gtb3MuY29tIiwiZnJlZWJveG9zLmNvbSIsImZieC1vcy5mciIsImZieG9zLmZyIiwiZnJlZWJveC1vcy5mciIsImZyZWVib3hvcy5mciIsImZyZWVkZXNrdG9wLm9yZyIsIiouZnV0dXJlY21zLmF0''@;'; put 'put ''IiwiKi5leC5mdXR1cmVjbXMuYXQiLCIqLmluLmZ1dHVyZWNtcy5hdCIsImZ1dHVyZWhvc3RpbmcuYXQiLCJmdXR1cmVtYWlsaW5nLmF0IiwiKi5leC5vcnRzaW5mby5hdCIsIioua3VuZGVuLm9ydHNpbmZvLmF0IiwiKi5zdGF0aWNzLmNsb3VkIiwic2VydmljZS5nb3YudWsiLCJnZWhpcm4u''@;'; put 'put ''bmUuanAiLCJ1c2VyY29udGVudC5qcCIsImdlbnRhcHBzLmNvbSIsImxhYi5tcyIsImdpdGh1Yi5pbyIsImdpdGh1YnVzZXJjb250ZW50LmNvbSIsImdpdGxhYi5pbyIsImdsaXRjaC5tZSIsImxvbGlwb3AuaW8iLCJjbG91ZGFwcHMuZGlnaXRhbCIsImxvbmRvbi5jbG91ZGFwcHMuZGlnaXRh''@;'; put 'put ''bCIsImhvbWVvZmZpY2UuZ292LnVrIiwicm8uaW0iLCJzaG9wLnJvIiwiZ29pcC5kZSIsInJ1bi5hcHAiLCJhLnJ1bi5hcHAiLCJ3ZWIuYXBwIiwiKi4wZW1tLmNvbSIsImFwcHNwb3QuY29tIiwiKi5yLmFwcHNwb3QuY29tIiwiYmxvZ3Nwb3QuYWUiLCJibG9nc3BvdC5hbCIsImJsb2dzcG90''@;'; put 'put ''LmFtIiwiYmxvZ3Nwb3QuYmEiLCJibG9nc3BvdC5iZSIsImJsb2dzcG90LmJnIiwiYmxvZ3Nwb3QuYmoiLCJibG9nc3BvdC5jYSIsImJsb2dzcG90LmNmIiwiYmxvZ3Nwb3QuY2giLCJibG9nc3BvdC5jbCIsImJsb2dzcG90LmNvLmF0IiwiYmxvZ3Nwb3QuY28uaWQiLCJibG9nc3BvdC5jby5p''@;'; put 'put ''bCIsImJsb2dzcG90LmNvLmtlIiwiYmxvZ3Nwb3QuY28ubnoiLCJibG9nc3BvdC5jby51ayIsImJsb2dzcG90LmNvLnphIiwiYmxvZ3Nwb3QuY29tIiwiYmxvZ3Nwb3QuY29tLmFyIiwiYmxvZ3Nwb3QuY29tLmF1IiwiYmxvZ3Nwb3QuY29tLmJyIiwiYmxvZ3Nwb3QuY29tLmJ5IiwiYmxvZ3Nw''@;'; put 'put ''b3QuY29tLmNvIiwiYmxvZ3Nwb3QuY29tLmN5IiwiYmxvZ3Nwb3QuY29tLmVlIiwiYmxvZ3Nwb3QuY29tLmVnIiwiYmxvZ3Nwb3QuY29tLmVzIiwiYmxvZ3Nwb3QuY29tLm10IiwiYmxvZ3Nwb3QuY29tLm5nIiwiYmxvZ3Nwb3QuY29tLnRyIiwiYmxvZ3Nwb3QuY29tLnV5IiwiYmxvZ3Nwb3Qu''@;'; put 'put ''Y3YiLCJibG9nc3BvdC5jeiIsImJsb2dzcG90LmRlIiwiYmxvZ3Nwb3QuZGsiLCJibG9nc3BvdC5maSIsImJsb2dzcG90LmZyIiwiYmxvZ3Nwb3QuZ3IiLCJibG9nc3BvdC5oayIsImJsb2dzcG90LmhyIiwiYmxvZ3Nwb3QuaHUiLCJibG9nc3BvdC5pZSIsImJsb2dzcG90LmluIiwiYmxvZ3Nw''@;'; put 'put ''b3QuaXMiLCJibG9nc3BvdC5pdCIsImJsb2dzcG90LmpwIiwiYmxvZ3Nwb3Qua3IiLCJibG9nc3BvdC5saSIsImJsb2dzcG90Lmx0IiwiYmxvZ3Nwb3QubHUiLCJibG9nc3BvdC5tZCIsImJsb2dzcG90Lm1rIiwiYmxvZ3Nwb3QubXIiLCJibG9nc3BvdC5teCIsImJsb2dzcG90Lm15IiwiYmxv''@;'; put 'put ''Z3Nwb3QubmwiLCJibG9nc3BvdC5ubyIsImJsb2dzcG90LnBlIiwiYmxvZ3Nwb3QucHQiLCJibG9nc3BvdC5xYSIsImJsb2dzcG90LnJlIiwiYmxvZ3Nwb3Qucm8iLCJibG9nc3BvdC5ycyIsImJsb2dzcG90LnJ1IiwiYmxvZ3Nwb3Quc2UiLCJibG9nc3BvdC5zZyIsImJsb2dzcG90LnNpIiwi''@;'; put 'put ''YmxvZ3Nwb3Quc2siLCJibG9nc3BvdC5zbiIsImJsb2dzcG90LnRkIiwiYmxvZ3Nwb3QudHciLCJibG9nc3BvdC51ZyIsImJsb2dzcG90LnZuIiwiY2xvdWRmdW5jdGlvbnMubmV0IiwiY2xvdWQuZ29vZyIsImNvZGVzcG90LmNvbSIsImdvb2dsZWFwaXMuY29tIiwiZ29vZ2xlY29kZS5jb20i''@;'; put 'put ''LCJwYWdlc3BlZWRtb2JpbGl6ZXIuY29tIiwicHVibGlzaHByb3h5LmNvbSIsIndpdGhnb29nbGUuY29tIiwid2l0aHlvdXR1YmUuY29tIiwiYXdzbXBwbC5jb20iLCJmaW4uY2kiLCJmcmVlLmhyIiwiY2FhLmxpIiwidWEucnMiLCJjb25mLnNlIiwiaHMuem9uZSIsImhzLnJ1biIsImhhc2hi''@;'; put 'put ''YW5nLnNoIiwiaGFzdXJhLmFwcCIsImhhc3VyYS1hcHAuaW8iLCJoZXBmb3JnZS5vcmciLCJoZXJva3VhcHAuY29tIiwiaGVyb2t1c3NsLmNvbSIsIm15cmF2ZW5kYi5jb20iLCJyYXZlbmRiLmNvbW11bml0eSIsInJhdmVuZGIubWUiLCJkZXZlbG9wbWVudC5ydW4iLCJyYXZlbmRiLnJ1biIs''@;'; put 'put ''ImJwbC5iaXoiLCJvcnguYml6IiwibmcuY2l0eSIsImJpei5nbCIsIm5nLmluayIsImNvbC5uZyIsImZpcm0ubmciLCJnZW4ubmciLCJsdGQubmciLCJuZ28ubmciLCJuZy5zY2hvb2wiLCJzY2guc28iLCJoXHhlNGtraW5lbi5maSIsIioubW9vbnNjYWxlLmlvIiwibW9vbnNjYWxlLm5ldCIs''@;'; put 'put ''ImlraS5maSIsImR5bi1iZXJsaW4uZGUiLCJpbi1iZXJsaW4uZGUiLCJpbi1icmIuZGUiLCJpbi1idXR0ZXIuZGUiLCJpbi1kc2wuZGUiLCJpbi1kc2wubmV0IiwiaW4tZHNsLm9yZyIsImluLXZwbi5kZSIsImluLXZwbi5uZXQiLCJpbi12cG4ub3JnIiwiYml6LmF0IiwiaW5mby5hdCIsImlu''@;'; put 'put ''Zm8uY3giLCJhYy5sZWcuYnIiLCJhbC5sZWcuYnIiLCJhbS5sZWcuYnIiLCJhcC5sZWcuYnIiLCJiYS5sZWcuYnIiLCJjZS5sZWcuYnIiLCJkZi5sZWcuYnIiLCJlcy5sZWcuYnIiLCJnby5sZWcuYnIiLCJtYS5sZWcuYnIiLCJtZy5sZWcuYnIiLCJtcy5sZWcuYnIiLCJtdC5sZWcuYnIiLCJw''@;'; put 'put ''YS5sZWcuYnIiLCJwYi5sZWcuYnIiLCJwZS5sZWcuYnIiLCJwaS5sZWcuYnIiLCJwci5sZWcuYnIiLCJyai5sZWcuYnIiLCJybi5sZWcuYnIiLCJyby5sZWcuYnIiLCJyci5sZWcuYnIiLCJycy5sZWcuYnIiLCJzYy5sZWcuYnIiLCJzZS5sZWcuYnIiLCJzcC5sZWcuYnIiLCJ0by5sZWcuYnIi''@;'; put 'put ''LCJwaXhvbGluby5jb20iLCJpcGlmb255Lm5ldCIsIm1laW4taXNlcnYuZGUiLCJ0ZXN0LWlzZXJ2LmRlIiwiaXNlcnYuZGV2IiwiaW9iYi5uZXQiLCJteWppbm8ucnUiLCIqLmhvc3RpbmcubXlqaW5vLnJ1IiwiKi5sYW5kaW5nLm15amluby5ydSIsIiouc3BlY3RydW0ubXlqaW5vLnJ1Iiwi''@;'; put 'put ''Ki52cHMubXlqaW5vLnJ1IiwiKi50cml0b24uem9uZSIsIiouY25zLmpveWVudC5jb20iLCJqcy5vcmciLCJrYWFzLmdnIiwia2hwbGF5Lm5sIiwia2V5bWFjaGluZS5kZSIsImtpbmdob3N0Lm5ldCIsInVuaTUubmV0Iiwia25pZ2h0cG9pbnQuc3lzdGVtcyIsIm95YS50byIsImNvLmtyZCIs''@;'; put 'put ''ImVkdS5rcmQiLCJnaXQtcmVwb3MuZGUiLCJsY3ViZS1zZXJ2ZXIuZGUiLCJzdm4tcmVwb3MuZGUiLCJsZWFkcGFnZXMuY28iLCJscGFnZXMuY28iLCJscHVzZXJjb250ZW50LmNvbSIsImxlbHV4LnNpdGUiLCJjby5idXNpbmVzcyIsImNvLmVkdWNhdGlvbiIsImNvLmV2ZW50cyIsImNvLmZp''@;'; put 'put ''bmFuY2lhbCIsImNvLm5ldHdvcmsiLCJjby5wbGFjZSIsImNvLnRlY2hub2xvZ3kiLCJhcHAubG1wbS5jb20iLCJsaW5raXRvb2xzLnNwYWNlIiwibGlua3lhcmQuY2xvdWQiLCJsaW5reWFyZC1jbG91ZC5jaCIsIm1lbWJlcnMubGlub2RlLmNvbSIsIm5vZGViYWxhbmNlci5saW5vZGUuY29t''@;'; put 'put ''Iiwid2UuYnMiLCJsb2dpbmxpbmUuYXBwIiwibG9naW5saW5lLmRldiIsImxvZ2lubGluZS5pbyIsImxvZ2lubGluZS5zZXJ2aWNlcyIsImxvZ2lubGluZS5zaXRlIiwia3Jhc25pay5wbCIsImxlY3puYS5wbCIsImx1YmFydG93LnBsIiwibHVibGluLnBsIiwicG9uaWF0b3dhLnBsIiwic3dp''@;'; put 'put ''ZG5pay5wbCIsInVrbHVncy5vcmciLCJnbHVnLm9yZy51ayIsImx1Zy5vcmcudWsiLCJsdWdzLm9yZy51ayIsImJhcnN5LmJnIiwiYmFyc3kuY28udWsiLCJiYXJzeW9ubGluZS5jby51ayIsImJhcnN5Y2VudGVyLmNvbSIsImJhcnN5b25saW5lLmNvbSIsImJhcnN5LmNsdWIiLCJiYXJzeS5k''@;'; put 'put ''ZSIsImJhcnN5LmV1IiwiYmFyc3kuaW4iLCJiYXJzeS5pbmZvIiwiYmFyc3kuaW8iLCJiYXJzeS5tZSIsImJhcnN5Lm1lbnUiLCJiYXJzeS5tb2JpIiwiYmFyc3kubmV0IiwiYmFyc3kub25saW5lIiwiYmFyc3kub3JnIiwiYmFyc3kucHJvIiwiYmFyc3kucHViIiwiYmFyc3kuc2hvcCIsImJh''@;'; put 'put ''cnN5LnNpdGUiLCJiYXJzeS5zdXBwb3J0IiwiYmFyc3kudWsiLCIqLm1hZ2VudG9zaXRlLmNsb3VkIiwibWF5Zmlyc3QuaW5mbyIsIm1heWZpcnN0Lm9yZyIsImhiLmNsZG1haWwucnUiLCJtaW5pc2VydmVyLmNvbSIsIm1lbXNldC5uZXQiLCJjbG91ZC5tZXRhY2VudHJ1bS5jeiIsImN1c3Rv''@;'; put 'put ''bS5tZXRhY2VudHJ1bS5jeiIsImZsdC5jbG91ZC5tdW5pLmN6IiwidXNyLmNsb3VkLm11bmkuY3oiLCJtZXRlb3JhcHAuY29tIiwiZXUubWV0ZW9yYXBwLmNvbSIsImNvLnBsIiwiYXp1cmVjb250YWluZXIuaW8iLCJhenVyZXdlYnNpdGVzLm5ldCIsImF6dXJlLW1vYmlsZS5uZXQiLCJjbG91''@;'; put 'put ''ZGFwcC5uZXQiLCJtb3ppbGxhLWlvdC5vcmciLCJibW9hdHRhY2htZW50cy5vcmciLCJuZXQucnUiLCJvcmcucnUiLCJwcC5ydSIsInVpLm5hYnUuY2FzYSIsInBvbnkuY2x1YiIsIm9mLmZhc2hpb24iLCJvbi5mYXNoaW9uIiwib2YuZm9vdGJhbGwiLCJpbi5sb25kb24iLCJvZi5sb25kb24i''@;'; put 'put ''LCJmb3IubWVuIiwiYW5kLm1vbSIsImZvci5tb20iLCJmb3Iub25lIiwiZm9yLnNhbGUiLCJvZi53b3JrIiwidG8ud29yayIsIm5jdHUubWUiLCJiaXRiYWxsb29uLmNvbSIsIm5ldGxpZnkuY29tIiwiNHUuY29tIiwibmdyb2suaW8iLCJuaC1zZXJ2LmNvLnVrIiwibmZzaG9zdC5jb20iLCJk''@;'; put 'put ''bnNraW5nLmNoIiwibXlwaS5jbyIsIm40dC5jbyIsIjAwMXd3dy5jb20iLCJkZG5zbGl2ZS5jb20iLCJteWlwaG9zdC5jb20iLCJmb3J1bXouaW5mbyIsIjE2LWIuaXQiLCIzMi1iLml0IiwiNjQtYi5pdCIsInNvdW5kY2FzdC5tZSIsInRjcDQubWUiLCJkbnN1cC5uZXQiLCJoaWNhbS5uZXQi''@;'; put 'put ''LCJub3ctZG5zLm5ldCIsIm93bmlwLm5ldCIsInZwbmRucy5uZXQiLCJkeW5zZXJ2Lm9yZyIsIm5vdy1kbnMub3JnIiwieDQ0My5wdyIsIm5vdy1kbnMudG9wIiwibnRkbGwudG9wIiwiZnJlZWRkbnMudXMiLCJjcmFmdGluZy54eXoiLCJ6YXB0by54eXoiLCJuc3VwZGF0ZS5pbmZvIiwibmVy''@;'; put 'put ''ZHBvbC5vdmgiLCJibG9nc3l0ZS5jb20iLCJicmFzaWxpYS5tZSIsImNhYmxlLW1vZGVtLm9yZyIsImNpc2NvZnJlYWsuY29tIiwiY29sbGVnZWZhbi5vcmciLCJjb3VjaHBvdGF0b2ZyaWVzLm9yZyIsImRhbW5zZXJ2ZXIuY29tIiwiZGRucy5tZSIsImRpdGNoeW91cmlwLmNvbSIsImRuc2Zv''@;'; put 'put ''ci5tZSIsImRuc2lza2lua3kuY29tIiwiZHZyY2FtLmluZm8iLCJkeW5ucy5jb20iLCJlYXRpbmctb3JnYW5pYy5uZXQiLCJmYW50YXN5bGVhZ3VlLmNjIiwiZ2Vla2dhbGF4eS5jb20iLCJnb2xmZmFuLnVzIiwiaGVhbHRoLWNhcmVyZWZvcm0uY29tIiwiaG9tZXNlY3VyaXR5bWFjLmNvbSIs''@;'; put 'put ''ImhvbWVzZWN1cml0eXBjLmNvbSIsImhvcHRvLm1lIiwiaWxvdmVjb2xsZWdlLmluZm8iLCJsb2dpbnRvLm1lIiwibWxiZmFuLm9yZyIsIm1tYWZhbi5iaXoiLCJteWFjdGl2ZWRpcmVjdG9yeS5jb20iLCJteWRpc3NlbnQubmV0IiwibXllZmZlY3QubmV0IiwibXltZWRpYXBjLm5ldCIsIm15''@;'; put 'put ''cHN4Lm5ldCIsIm15c2VjdXJpdHljYW1lcmEuY29tIiwibXlzZWN1cml0eWNhbWVyYS5uZXQiLCJteXNlY3VyaXR5Y2FtZXJhLm9yZyIsIm5ldC1mcmVha3MuY29tIiwibmZsZmFuLm9yZyIsIm5obGZhbi5uZXQiLCJuby1pcC5jYSIsIm5vLWlwLmNvLnVrIiwibm8taXAubmV0Iiwibm9pcC51''@;'; put 'put ''cyIsIm9udGhld2lmaS5jb20iLCJwZ2FmYW4ubmV0IiwicG9pbnQydGhpcy5jb20iLCJwb2ludHRvLnVzIiwicHJpdmF0aXplaGVhbHRoaW5zdXJhbmNlLm5ldCIsInF1aWNrc3l0ZXMuY29tIiwicmVhZC1ib29rcy5vcmciLCJzZWN1cml0eXRhY3RpY3MuY29tIiwic2VydmVleGNoYW5nZS5j''@;'; put 'put ''b20iLCJzZXJ2ZWh1bW91ci5jb20iLCJzZXJ2ZXAycC5jb20iLCJzZXJ2ZXNhcmNhc20uY29tIiwic3R1ZmZ0b3JlYWQuY29tIiwidWZjZmFuLm9yZyIsInVudXN1YWxwZXJzb24uY29tIiwid29ya2lzYm9yaW5nLmNvbSIsIjN1dGlsaXRpZXMuY29tIiwiYm91bmNlbWUubmV0IiwiZGRucy5u''@;'; put 'put ''ZXQiLCJkZG5za2luZy5jb20iLCJnb3RkbnMuY2giLCJob3B0by5vcmciLCJteWZ0cC5iaXoiLCJteWZ0cC5vcmciLCJteXZuYy5jb20iLCJuby1pcC5iaXoiLCJuby1pcC5pbmZvIiwibm8taXAub3JnIiwibm9pcC5tZSIsInJlZGlyZWN0bWUubmV0Iiwic2VydmViZWVyLmNvbSIsInNlcnZl''@;'; put 'put ''YmxvZy5uZXQiLCJzZXJ2ZWNvdW50ZXJzdHJpa2UuY29tIiwic2VydmVmdHAuY29tIiwic2VydmVnYW1lLmNvbSIsInNlcnZlaGFsZmxpZmUuY29tIiwic2VydmVodHRwLmNvbSIsInNlcnZlaXJjLmNvbSIsInNlcnZlbWluZWNyYWZ0Lm5ldCIsInNlcnZlbXAzLmNvbSIsInNlcnZlcGljcy5j''@;'; put 'put ''b20iLCJzZXJ2ZXF1YWtlLmNvbSIsInN5dGVzLm5ldCIsIndlYmhvcC5tZSIsInphcHRvLm9yZyIsInN0YWdlLm5vZGVhcnQuaW8iLCJub2R1bS5jbyIsIm5vZHVtLmlvIiwicGNsb3VkLmhvc3QiLCJueWMubW4iLCJub20uYWUiLCJub20uYWYiLCJub20uYWkiLCJub20uYWwiLCJueW0uYnki''@;'; put 'put ''LCJub20uYnoiLCJueW0uYnoiLCJub20uY2wiLCJueW0uZWMiLCJub20uZ2QiLCJub20uZ2UiLCJub20uZ2wiLCJueW0uZ3IiLCJub20uZ3QiLCJueW0uZ3kiLCJueW0uaGsiLCJub20uaG4iLCJueW0uaWUiLCJub20uaW0iLCJub20ua2UiLCJueW0ua3oiLCJueW0ubGEiLCJueW0ubGMiLCJu''@;'; put 'put ''b20ubGkiLCJueW0ubGkiLCJueW0ubHQiLCJueW0ubHUiLCJub20ubHYiLCJueW0ubWUiLCJub20ubWsiLCJueW0ubW4iLCJueW0ubXgiLCJub20ubnUiLCJueW0ubnoiLCJueW0ucGUiLCJueW0ucHQiLCJub20ucHciLCJub20ucWEiLCJueW0ucm8iLCJub20ucnMiLCJub20uc2kiLCJueW0u''@;'; put 'put ''c2siLCJub20uc3QiLCJueW0uc3UiLCJueW0uc3giLCJub20udGoiLCJueW0udHciLCJub20udWciLCJub20udXkiLCJub20udmMiLCJub20udmciLCJzdGF0aWMub2JzZXJ2YWJsZXVzZXJjb250ZW50LmNvbSIsImN5YS5nZyIsImNsb3VkeWNsdXN0ZXIubmV0IiwibmlkLmlvIiwib3BlbmNy''@;'; put 'put ''YWZ0Lmhvc3RpbmciLCJvcGVyYXVuaXRlLmNvbSIsInNreWdlYXJhcHAuY29tIiwib3V0c3lzdGVtc2Nsb3VkLmNvbSIsIm93bnByb3ZpZGVyLmNvbSIsIm93bi5wbSIsIm94LnJzIiwib3kubGMiLCJwZ2ZvZy5jb20iLCJwYWdlZnJvbnRhcHAuY29tIiwiYXJ0LnBsIiwiZ2xpd2ljZS5wbCIs''@;'; put 'put ''ImtyYWtvdy5wbCIsInBvem5hbi5wbCIsIndyb2MucGwiLCJ6YWtvcGFuZS5wbCIsInBhbnRoZW9uc2l0ZS5pbyIsImdvdHBhbnRoZW9uLmNvbSIsIm15cGVwLmxpbmsiLCJwZXJzcGVjdGEuY2xvdWQiLCJvbi13ZWIuZnIiLCIqLnBsYXRmb3JtLnNoIiwiKi5wbGF0Zm9ybXNoLnNpdGUiLCJk''@;'; put 'put ''eW41My5pbyIsImNvLmJuIiwieGVuLnByZ21yLmNvbSIsInByaXYuYXQiLCJwcnZjeS5wYWdlIiwiKi5kd2ViLmxpbmsiLCJwcm90b25ldC5pbyIsImNoaXJ1cmdpZW5zLWRlbnRpc3Rlcy1lbi1mcmFuY2UuZnIiLCJieWVuLnNpdGUiLCJwdWJ0bHMub3JnIiwicXVhbGlmaW9hcHAuY29tIiwi''@;'; put 'put ''cWJ1c2VyLmNvbSIsImluc3RhbnRjbG91ZC5jbiIsInJhcy5ydSIsInFhMi5jb20iLCJxY3guaW8iLCIqLnN5cy5xY3guaW8iLCJkZXYtbXlxbmFwY2xvdWQuY29tIiwiYWxwaGEtbXlxbmFwY2xvdWQuY29tIiwibXlxbmFwY2xvdWQuY29tIiwiKi5xdWlwZWxlbWVudHMuY29tIiwidmFwb3Iu''@;'; put 'put ''Y2xvdWQiLCJ2YXBvcmNsb3VkLmlvIiwicmFja21hemUuY29tIiwicmFja21hemUubmV0IiwiKi5vbi1rM3MuaW8iLCIqLm9uLXJhbmNoZXIuY2xvdWQiLCIqLm9uLXJpby5pbyIsInJlYWR0aGVkb2NzLmlvIiwicmhjbG91ZC5jb20iLCJhcHAucmVuZGVyLmNvbSIsIm9ucmVuZGVyLmNvbSIs''@;'; put 'put ''InJlcGwuY28iLCJyZXBsLnJ1biIsInJlc2luZGV2aWNlLmlvIiwiZGV2aWNlcy5yZXNpbnN0YWdpbmcuaW8iLCJoemMuaW8iLCJ3ZWxsYmVpbmd6b25lLmV1IiwicHRwbHVzLmZpdCIsIndlbGxiZWluZ3pvbmUuY28udWsiLCJnaXQtcGFnZXMucml0LmVkdSIsInNhbmRjYXRzLmlvIiwibG9n''@;'; put 'put ''b2lwLmRlIiwibG9nb2lwLmNvbSIsInNjaG9rb2tla3MubmV0IiwiZ292LnNjb3QiLCJzY3J5c2VjLmNvbSIsImZpcmV3YWxsLWdhdGV3YXkuY29tIiwiZmlyZXdhbGwtZ2F0ZXdheS5kZSIsIm15LWdhdGV3YXkuZGUiLCJteS1yb3V0ZXIuZGUiLCJzcGRucy5kZSIsInNwZG5zLmV1IiwiZmly''@;'; put 'put ''ZXdhbGwtZ2F0ZXdheS5uZXQiLCJteS1maXJld2FsbC5vcmciLCJteWZpcmV3YWxsLm9yZyIsInNwZG5zLm9yZyIsInNlbnNlZXJpbmcubmV0IiwiYml6LnVhIiwiY28udWEiLCJwcC51YSIsInNoaWZ0ZWRpdC5pbyIsIm15c2hvcGJsb2Nrcy5jb20iLCJzaG9waXRzaXRlLmNvbSIsIm1vLXNp''@;'; put 'put ''ZW1lbnMuaW8iLCIxa2FwcC5jb20iLCJhcHBjaGl6aS5jb20iLCJhcHBsaW56aS5jb20iLCJzaW5hYXBwLmNvbSIsInZpcHNpbmFhcHAuY29tIiwic2l0ZWxlYWYubmV0IiwiYm91bnR5LWZ1bGwuY29tIiwiYWxwaGEuYm91bnR5LWZ1bGwuY29tIiwiYmV0YS5ib3VudHktZnVsbC5jb20iLCJz''@;'; put 'put ''dGFja2hlcm8tbmV0d29yay5jb20iLCJzdGF0aWMubGFuZCIsImRldi5zdGF0aWMubGFuZCIsInNpdGVzLnN0YXRpYy5sYW5kIiwiYXBwcy5sYWlyLmlvIiwiKi5zdG9sb3MuaW8iLCJzcGFjZWtpdC5pbyIsImN1c3RvbWVyLnNwZWVkcGFydG5lci5kZSIsImFwaS5zdGRsaWIuY29tIiwic3Rv''@;'; put 'put ''cmouZmFybSIsInV0d2VudGUuaW8iLCJzb2Muc3JjZi5uZXQiLCJ1c2VyLnNyY2YubmV0IiwidGVtcC1kbnMuY29tIiwiYXBwbGljYXRpb25jbG91ZC5pbyIsInNjYXBwLmlvIiwiKi5zNXkuaW8iLCIqLnNlbnNpb3NpdGUuY2xvdWQiLCJzeW5jbG91ZC5pdCIsImRpc2tzdGF0aW9uLm1lIiwi''@;'; put 'put ''ZHNjbG91ZC5iaXoiLCJkc2Nsb3VkLm1lIiwiZHNjbG91ZC5tb2JpIiwiZHNteW5hcy5jb20iLCJkc215bmFzLm5ldCIsImRzbXluYXMub3JnIiwiZmFtaWx5ZHMuY29tIiwiZmFtaWx5ZHMubmV0IiwiZmFtaWx5ZHMub3JnIiwiaTIzNC5tZSIsIm15ZHMubWUiLCJzeW5vbG9neS5tZSIsInZw''@;'; put 'put ''bnBsdXMudG8iLCJkaXJlY3QucXVpY2tjb25uZWN0LnRvIiwidGFpZnVuLWRucy5kZSIsImdkYS5wbCIsImdkYW5zay5wbCIsImdkeW5pYS5wbCIsIm1lZC5wbCIsInNvcG90LnBsIiwiZWR1Z2l0Lm9yZyIsInRlbGViaXQuYXBwIiwidGVsZWJpdC5pbyIsIioudGVsZWJpdC54eXoiLCJnd2lk''@;'; put 'put ''ZGxlLmNvLnVrIiwidGhpbmdkdXN0ZGF0YS5jb20iLCJjdXN0LmRldi50aGluZ2R1c3QuaW8iLCJjdXN0LmRpc3JlYy50aGluZ2R1c3QuaW8iLCJjdXN0LnByb2QudGhpbmdkdXN0LmlvIiwiY3VzdC50ZXN0aW5nLnRoaW5nZHVzdC5pbyIsImFydm8ubmV0d29yayIsImF6aW11dGgubmV0d29y''@;'; put 'put ''ayIsImJsb3hjbXMuY29tIiwidG93bm5ld3Mtc3RhZ2luZy5jb20iLCIxMmhwLmF0IiwiMml4LmF0IiwiNGxpbWEuYXQiLCJsaW1hLWNpdHkuYXQiLCIxMmhwLmNoIiwiMml4LmNoIiwiNGxpbWEuY2giLCJsaW1hLWNpdHkuY2giLCJ0cmFmZmljcGxleC5jbG91ZCIsImRlLmNvb2wiLCIxMmhw''@;'; put 'put ''LmRlIiwiMml4LmRlIiwiNGxpbWEuZGUiLCJsaW1hLWNpdHkuZGUiLCIxMzM3LnBpY3R1cmVzIiwiY2xhbi5yaXAiLCJsaW1hLWNpdHkucm9ja3MiLCJ3ZWJzcGFjZS5yb2NrcyIsImxpbWEuem9uZSIsIioudHJhbnN1cmwuYmUiLCIqLnRyYW5zdXJsLmV1IiwiKi50cmFuc3VybC5ubCIsInR1''@;'; put 'put ''eGZhbWlseS5vcmciLCJkZC1kbnMuZGUiLCJkaXNrc3RhdGlvbi5ldSIsImRpc2tzdGF0aW9uLm9yZyIsImRyYXktZG5zLmRlIiwiZHJheWRucy5kZSIsImR5bi12cG4uZGUiLCJkeW52cG4uZGUiLCJtZWluLXZpZ29yLmRlIiwibXktdmlnb3IuZGUiLCJteS13YW4uZGUiLCJzeW5vLWRzLmRl''@;'; put 'put ''Iiwic3lub2xvZ3ktZGlza3N0YXRpb24uZGUiLCJzeW5vbG9neS1kcy5kZSIsInViZXIuc3BhY2UiLCIqLnViZXJzcGFjZS5kZSIsImhrLmNvbSIsImhrLm9yZyIsImx0ZC5oayIsImluYy5oayIsInZpcnR1YWx1c2VyLmRlIiwidmlydHVhbC11c2VyLmRlIiwidXJvd24uY2xvdWQiLCJkbnN1''@;'; put 'put ''cGRhdGUuaW5mbyIsImxpYi5kZS51cyIsIjIwMzguaW8iLCJyb3V0ZXIubWFuYWdlbWVudCIsInYtaW5mby5pbmZvIiwidm9vcmxvcGVyLmNsb3VkIiwidi51YSIsIndhZmZsZWNlbGwuY29tIiwiKi53ZWJoYXJlLmRldiIsIndlZGVwbG95LmlvIiwid2VkZXBsb3kubWUiLCJ3ZWRlcGxveS5z''@;'; put 'put ''aCIsInJlbW90ZXdkLmNvbSIsIndtZmxhYnMub3JnIiwibXlmb3J1bS5jb21tdW5pdHkiLCJjb21tdW5pdHktcHJvLmRlIiwiZGlza3Vzc2lvbnNiZXJlaWNoLmRlIiwiY29tbXVuaXR5LXByby5uZXQiLCJtZWluZm9ydW0ubmV0IiwiaGFsZi5ob3N0IiwieG5iYXkuY29tIiwidTIueG5iYXku''@;'; put 'put ''Y29tIiwidTItbG9jYWwueG5iYXkuY29tIiwiY2lzdHJvbi5ubCIsImRlbW9uLm5sIiwieHM0YWxsLnNwYWNlIiwieWFuZGV4Y2xvdWQubmV0Iiwic3RvcmFnZS55YW5kZXhjbG91ZC5uZXQiLCJ3ZWJzaXRlLnlhbmRleGNsb3VkLm5ldCIsIm9mZmljaWFsLmFjYWRlbXkiLCJ5b2xhc2l0ZS5j''@;'; put 'put ''b20iLCJ5Ym8uZmFpdGgiLCJ5b21iby5tZSIsImhvbWVsaW5rLm9uZSIsInliby5wYXJ0eSIsInliby5yZXZpZXciLCJ5Ym8uc2NpZW5jZSIsInliby50cmFkZSIsIm5vaG9zdC5tZSIsIm5vaG8uc3QiLCJ6YS5uZXQiLCJ6YS5vcmciLCJub3cuc2giLCJic3MuZGVzaWduIiwiYmFzaWNzZXJ2''@;'; put 'put ''ZXIuaW8iLCJ2aXJ0dWFsc2VydmVyLmlvIiwiZW50ZXJwcmlzZWNsb3VkLm51Il0nKX19LEU9e307ZnVuY3Rpb24gRWUoVSl7dmFyIFE9RVtVXTtpZih2b2lkIDAhPT1RKXJldHVybiBRLmV4cG9ydHM7dmFyIGo9RVtVXT17aWQ6VSxsb2FkZWQ6ITEsZXhwb3J0czp7fX07cmV0dXJuIEJbVV0u''@;'; put 'put ''Y2FsbChqLmV4cG9ydHMsaixqLmV4cG9ydHMsRWUpLGoubG9hZGVkPSEwLGouZXhwb3J0c31yZXR1cm4gRWUuZD0oVSxRKT0+e2Zvcih2YXIgaiBpbiBRKUVlLm8oUSxqKSYmIUVlLm8oVSxqKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KFUsaix7ZW51bWVyYWJsZTohMCxnZXQ6UVtqXX0pfSxF''@;'; put 'put ''ZS5nPWZ1bmN0aW9uKCl7aWYoIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzKXJldHVybiBnbG9iYWxUaGlzO3RyeXtyZXR1cm4gdGhpc3x8bmV3IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl9Y2F0Y2goVSl7aWYoIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuIHdpbmRvd319KCks''@;'; put 'put ''RWUubz0oVSxRKT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFUsUSksRWUucj1VPT57InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KFUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9k''@;'; put 'put ''dWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShVLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sRWUubm1kPVU9PihVLnBhdGhzPVtdLFUuY2hpbGRyZW58fChVLmNoaWxkcmVuPVtdKSxVKSxFZSgzNjA3KX0pKCl9LDI5NzQ4OmZ1bmN0aW9uKFhlLEplLEwpeyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''bWU9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGope3JldHVybiBqJiZqLl9fZXNNb2R1bGU/ajp7ZGVmYXVsdDpqfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEplLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxKZS5pc1NwZWNpYWxNaXNzaW5nPUplLmNob2ljZVZhbGlk''@;'; put 'put ''YXRvcj1KZS5jb25maXJtYXRpb25WYWxpZGF0b3I9SmUudXJsVmFsaWRhdG9yPXZvaWQgMDt2YXIgQj1tZShMKDczMzkzKSk7SmUudXJsVmFsaWRhdG9yPWZ1bmN0aW9uKGoscmUpe3JldHVybiEhQi5kZWZhdWx0LmlzSHR0cFVyaShqKXx8ISFCLmRlZmF1bHQuaXNIdHRwc1VyaShqKXx8IiI9''@;'; put 'put ''PT1qfHxyZX0sSmUuY29uZmlybWF0aW9uVmFsaWRhdG9yPWZ1bmN0aW9uKGope3JldHVybiEwPT09anx8ITE9PT1qfSxKZS5jaG9pY2VWYWxpZGF0b3I9ZnVuY3Rpb24oaixyZSxhZSl7cmV0dXJuIGo+MCYmajw9cmV8fGFlfSxKZS5pc1NwZWNpYWxNaXNzaW5nPWZ1bmN0aW9uKGope3JldHVy''@;'; put 'put ''bigic3RyaW5nIiE9dHlwZW9mIGp8fCFqLmluY2x1ZGVzKCIuLiIpKSYmbmV3IFJlZ0V4cCgiXihcXC4pP1thLXpfLl17MX0kIiwiaSIpLnRlc3Qoail9fSwyNTg1OTooWGUsSmUpPT57InVzZSBzdHJpY3QiO3ZhciBCO0plLkQ9dm9pZCAwLChCPUplLkR8fChKZS5EPXt9KSkuU2FzVml5YT0i''@;'; put 'put ''U0FTVklZQSIsQi5TYXM5PSJTQVM5IixCLlNhc2pzPSJTQVNKUyJ9LDM2NjI1OihYZSxKZSk9PnsidXNlIHN0cmljdCI7SmUuUj12b2lkIDAsSmUuUj1mdW5jdGlvbihCLEUsRWUpe2lmKHZvaWQgMD09PUUmJihFPTEpLHZvaWQgMD09PUVlJiYoRWU9MTA5OTUxMTYyNzc3NiksMD09PUIpcmV0''@;'; put 'put ''dXJuIjAgQiI7Qj1CPkVlP0VlOkI7dmFyIGo9RTwwPzA6RSxyZT1NYXRoLmZsb29yKE1hdGgubG9nKEIpL01hdGgubG9nKDEwMjQpKTtyZXR1cm4oQi9NYXRoLnBvdygxMDI0LHJlKSkudG9GaXhlZChqKSsiICIrWyJCIiwiS0IiLCJNQiIsIkdCIiwiVEIiXVtyZV19fSw1MzM5OTpmdW5jdGlv''@;'; put 'put ''bihYZSl7dmFyIEplPXt2ZXJzaW9uOiIxLjE1LjAifTtKZVs0MzddPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNc''@;'; put 'put ''eDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzdceGZjXHhlOVx4ZTJceGU0XHhlMFx4ZTVceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVc''@;'; put 'put ''eGVjXHhjNFx4YzVceGM5XHhlNlx4YzZceGY0XHhmNlx4ZjJceGZiXHhmOVx4ZmZceGQ2XHhkY1x4YTJceGEzXHhhNVx1MjBhN1x1MDE5Mlx4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx1MjMxMFx4YWNceGJkXHhiY1x4YTFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1''@;'; put 'put ''MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2''@;'; put 'put ''Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNiMVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1XHUwM2M0XHUwM2E2XHUwMzk4XHUwM2E5''@;'; put 'put ''XHUwM2I0XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1MjMyMVx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIixtZT1bXSxCPXt9LEU9MDtFIT1MLmxlbmd0aDsrK0UpNjU1MzMhPT1MLmNoYXJDb2Rl''@;'; put 'put ''QXQoRSkmJihCW0wuY2hhckF0KEUpXT1FKSxtZVtFXT1MLmNoYXJBdChFKTtyZXR1cm57ZW5jOkIsZGVjOm1lfX0oKSxKZVs2MjBdPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNc''@;'; put 'put ''eDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzdceGZjXHhlOVx4ZTJc''@;'; put 'put ''eGU0XHhlMFx1MDEwNVx4ZTdceGVhXHhlYlx4ZThceGVmXHhlZVx1MDEwN1x4YzRcdTAxMDRcdTAxMThcdTAxMTlcdTAxNDJceGY0XHhmNlx1MDEwNlx4ZmJceGY5XHUwMTVhXHhkNlx4ZGNceGEyXHUwMTQxXHhhNVx1MDE1Ylx1MDE5Mlx1MDE3OVx1MDE3Ylx4ZjNceGQzXHUwMTQ0XHUwMTQz''@;'; put 'put ''XHUwMTdhXHUwMTdjXHhiZlx1MjMxMFx4YWNceGJkXHhiY1x4YTFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUx''@;'; put 'put ''Y1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1''@;'; put 'put ''MjU4MFx1MDNiMVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1XHUwM2M0XHUwM2E2XHUwMzk4XHUwM2E5XHUwM2I0XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1MjMyMVx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3''@;'; put 'put ''Zlx4YjJcdTI1YTBceGEwIixtZT1bXSxCPXt9LEU9MDtFIT1MLmxlbmd0aDsrK0UpNjU1MzMhPT1MLmNoYXJDb2RlQXQoRSkmJihCW0wuY2hhckF0KEUpXT1FKSxtZVtFXT1MLmNoYXJBdChFKTtyZXR1cm57ZW5jOkIsZGVjOm1lfX0oKSxKZVs3MzddPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJc''@;'; put 'put ''MFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFS''@;'; put 'put ''U1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1MDNhM1x1MDNhNFx1''@;'; put 'put ''MDNhNVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1MDNiMVx1MDNiMlx1MDNiM1x1MDNiNFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1MDNjMVx1MDNjM1x1MDNjMlx1MDNjNFx1MDNjNVx1MDNjNlx1MDNj''@;'; put 'put ''N1x1MDNjOFx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1''@;'; put 'put ''MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNjOVx1MDNhY1x1MDNhZFx1MDNhZVx1MDNjYVx1MDNh''@;'; put 'put ''Zlx1MDNjY1x1MDNjZFx1MDNjYlx1MDNjZVx1MDM4Nlx1MDM4OFx1MDM4OVx1MDM4YVx1MDM4Y1x1MDM4ZVx1MDM4Zlx4YjFcdTIyNjVcdTIyNjRcdTAzYWFcdTAzYWJceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCIsbWU9W10sQj17fSxFPTA7RSE9''@;'; put 'put ''TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSksbWVbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzptZX19KCksSmVbODUwXT1mdW5jdGlvbigpe2Zvcih2YXIgTD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxu''@;'; put 'put ''XHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0''@;'; put 'put ''dXZ3eHl6e3x9flx4N2ZceGM3XHhmY1x4ZTlceGUyXHhlNFx4ZTBceGU1XHhlN1x4ZWFceGViXHhlOFx4ZWZceGVlXHhlY1x4YzRceGM1XHhjOVx4ZTZceGM2XHhmNFx4ZjZceGYyXHhmYlx4ZjlceGZmXHhkNlx4ZGNceGY4XHhhM1x4ZDhceGQ3XHUwMTkyXHhlMVx4ZWRceGYzXHhmYVx4ZjFc''@;'; put 'put ''eGQxXHhhYVx4YmFceGJmXHhhZVx4YWNceGJkXHhiY1x4YTFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx4YzFceGMyXHhjMFx4YTlcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRceGEyXHhhNVx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x4''@;'; put 'put ''ZTNceGMzXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHhhNFx4ZjBceGQwXHhjYVx4Y2JceGM4XHUwMTMxXHhjZFx4Y2VceGNmXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHhhNlx4Y2NcdTI1ODBceGQzXHhkZlx4ZDRceGQyXHhmNVx4ZDVceGI1XHhmZVx4ZGVc''@;'; put 'put ''eGRhXHhkYlx4ZDlceGZkXHhkZFx4YWZceGI0XHhhZFx4YjFcdTIwMTdceGJlXHhiNlx4YTdceGY3XHhiOFx4YjBceGE4XHhiN1x4YjlceGIzXHhiMlx1MjVhMFx4YTAiLG1lPVtdLEI9e30sRT0wO0UhPUwubGVuZ3RoOysrRSk2NTUzMyE9PUwuY2hhckNvZGVBdChFKSYmKEJbTC5jaGFyQXQo''@;'; put 'put ''RSldPUUpLG1lW0VdPUwuY2hhckF0KEUpO3JldHVybntlbmM6QixkZWM6bWV9fSgpLEplWzg1Ml09ZnVuY3Rpb24oKXtmb3IodmFyIEw9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4''@;'; put 'put ''XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjN1x4ZmNceGU5XHhlMlx4ZTRcdTAxNmZcdTAxMDdceGU3''@;'; put 'put ''XHUwMTQyXHhlYlx1MDE1MFx1MDE1MVx4ZWVcdTAxNzlceGM0XHUwMTA2XHhjOVx1MDEzOVx1MDEzYVx4ZjRceGY2XHUwMTNkXHUwMTNlXHUwMTVhXHUwMTViXHhkNlx4ZGNcdTAxNjRcdTAxNjVcdTAxNDFceGQ3XHUwMTBkXHhlMVx4ZWRceGYzXHhmYVx1MDEwNFx1MDEwNVx1MDE3ZFx1MDE3''@;'; put 'put ''ZVx1MDExOFx1MDExOVx4YWNcdTAxN2FcdTAxMGNcdTAxNWZceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx4YzFceGMyXHUwMTFhXHUwMTVlXHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUwMTdiXHUwMTdjXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAw''@;'; put 'put ''XHUyNTNjXHUwMTAyXHUwMTAzXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHhhNFx1MDExMVx1MDExMFx1MDEwZVx4Y2JcdTAxMGZcdTAxNDdceGNkXHhjZVx1MDExYlx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MDE2Mlx1MDE2ZVx1MjU4MFx4ZDNceGRmXHhk''@;'; put 'put ''NFx1MDE0M1x1MDE0NFx1MDE0OFx1MDE2MFx1MDE2MVx1MDE1NFx4ZGFcdTAxNTVcdTAxNzBceGZkXHhkZFx1MDE2M1x4YjRceGFkXHUwMmRkXHUwMmRiXHUwMmM3XHUwMmQ4XHhhN1x4ZjdceGI4XHhiMFx4YThcdTAyZDlcdTAxNzFcdTAxNThcdTAxNTlcdTI1YTBceGEwIixtZT1bXSxCPXt9''@;'; put 'put ''LEU9MDtFIT1MLmxlbmd0aDsrK0UpNjU1MzMhPT1MLmNoYXJDb2RlQXQoRSkmJihCW0wuY2hhckF0KEUpXT1FKSxtZVtFXT1MLmNoYXJBdChFKTtyZXR1cm57ZW5jOkIsZGVjOm1lfX0oKSxKZVs4NTddPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4''@;'; put 'put ''MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamts''@;'; put 'put ''bW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzdceGZjXHhlOVx4ZTJceGU0XHhlMFx4ZTVceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVcdTAxMzFceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmMlx4ZmJceGY5XHUwMTMwXHhkNlx4ZGNceGY4XHhhM1x4ZDhcdTAxNWVcdTAxNWZceGUxXHhl''@;'; put 'put ''ZFx4ZjNceGZhXHhmMVx4ZDFcdTAxMWVcdTAxMWZceGJmXHhhZVx4YWNceGJkXHhiY1x4YTFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx4YzFceGMyXHhjMFx4YTlcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRceGEyXHhhNVx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1''@;'; put 'put ''MjUxY1x1MjUwMFx1MjUzY1x4ZTNceGMzXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHhhNFx4YmFceGFhXHhjYVx4Y2JceGM4XHVmZmZkXHhjZFx4Y2VceGNmXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHhhNlx4Y2NcdTI1ODBceGQzXHhkZlx4ZDRceGQyXHhm''@;'; put 'put ''NVx4ZDVceGI1XHVmZmZkXHhkN1x4ZGFceGRiXHhkOVx4ZWNceGZmXHhhZlx4YjRceGFkXHhiMVx1ZmZmZFx4YmVceGI2XHhhN1x4ZjdceGI4XHhiMFx4YThceGI3XHhiOVx4YjNceGIyXHUyNWEwXHhhMCIsbWU9W10sQj17fSxFPTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29k''@;'; put 'put ''ZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSksbWVbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzptZX19KCksSmVbODYxXT1mdW5jdGlvbigpe2Zvcih2YXIgTD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEz''@;'; put 'put ''XHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGM3XHhmY1x4ZTlceGUy''@;'; put 'put ''XHhlNFx4ZTBceGU1XHhlN1x4ZWFceGViXHhlOFx4ZDBceGYwXHhkZVx4YzRceGM1XHhjOVx4ZTZceGM2XHhmNFx4ZjZceGZlXHhmYlx4ZGRceGZkXHhkNlx4ZGNceGY4XHhhM1x4ZDhcdTIwYTdcdTAxOTJceGUxXHhlZFx4ZjNceGZhXHhjMVx4Y2RceGQzXHhkYVx4YmZcdTIzMTBceGFjXHhi''@;'; put 'put ''ZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1''@;'; put 'put ''NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUw''@;'; put 'put ''M2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCIsbWU9W10sQj17fSxF''@;'; put 'put ''PTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSksbWVbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzptZX19KCksSmVbODY1XT1mdW5jdGlvbigpe2Zvcih2YXIgTD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3''@;'; put 'put ''XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1u''@;'; put 'put ''b3BxcnN0dXZ3eHl6e3x9flx4N2ZceGM3XHhmY1x4ZTlceGUyXHhlNFx4ZTBceGU1XHhlN1x4ZWFceGViXHhlOFx4ZWZceGVlXHhlY1x4YzRceGM1XHhjOVx4ZTZceGM2XHhmNFx4ZjZceGYyXHhmYlx4ZjlceGZmXHhkNlx4ZGNceGY4XHhhM1x4ZDhcdTIwYTdcdTAxOTJceGUxXHhlZFx4ZjNc''@;'; put 'put ''eGZhXHhmMVx4ZDFceGFhXHhiYVx4YmZcdTIzMTBceGFjXHhiZFx4YmNceGExXHhhYlx4YTRcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1''@;'; put 'put ''MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNc''@;'; put 'put ''dTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIy''@;'; put 'put ''MWFcdTIwN2ZceGIyXHUyNWEwXHhhMCIsbWU9W10sQj17fSxFPTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSksbWVbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzptZX19KCksSmVbODY2XT1mdW5jdGlvbigpe2Zvcih2''@;'; put 'put ''YXIgTD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpL''@;'; put 'put ''TE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFc''@;'; put 'put ''dTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0''@;'; put 'put ''M2RcdTA0M2VcdTA0M2ZcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFc''@;'; put 'put ''dTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0''@;'; put 'put ''NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGZcdTA0MDFcdTA0NTFcdTA0MDRcdTA0NTRcdTA0MDdcdTA0NTdcdTA0MGVcdTA0NWVceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjExNlx4YTRcdTI1YTBceGEwIixtZT1bXSxC''@;'; put 'put ''PXt9LEU9MDtFIT1MLmxlbmd0aDsrK0UpNjU1MzMhPT1MLmNoYXJDb2RlQXQoRSkmJihCW0wuY2hhckF0KEUpXT1FKSxtZVtFXT1MLmNoYXJBdChFKTtyZXR1cm57ZW5jOkIsZGVjOm1lfX0oKSxKZVs4NzRdPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgw''@;'; put 'put ''Nlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hp''@;'; put 'put ''amtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MjBhY1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjAyNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1''@;'; put 'put ''MjAxNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx4YTBcdTBlMDFcdTBlMDJcdTBlMDNcdTBlMDRcdTBlMDVcdTBlMDZcdTBlMDdcdTBlMDhcdTBlMDlcdTBlMGFcdTBlMGJcdTBlMGNcdTBlMGRcdTBlMGVcdTBlMGZcdTBlMTBcdTBlMTFcdTBlMTJc''@;'; put 'put ''dTBlMTNcdTBlMTRcdTBlMTVcdTBlMTZcdTBlMTdcdTBlMThcdTBlMTlcdTBlMWFcdTBlMWJcdTBlMWNcdTBlMWRcdTBlMWVcdTBlMWZcdTBlMjBcdTBlMjFcdTBlMjJcdTBlMjNcdTBlMjRcdTBlMjVcdTBlMjZcdTBlMjdcdTBlMjhcdTBlMjlcdTBlMmFcdTBlMmJcdTBlMmNcdTBlMmRcdTBl''@;'; put 'put ''MmVcdTBlMmZcdTBlMzBcdTBlMzFcdTBlMzJcdTBlMzNcdTBlMzRcdTBlMzVcdTBlMzZcdTBlMzdcdTBlMzhcdTBlMzlcdTBlM2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTBlM2ZcdTBlNDBcdTBlNDFcdTBlNDJcdTBlNDNcdTBlNDRcdTBlNDVcdTBlNDZcdTBlNDdcdTBlNDhcdTBlNDlc''@;'; put 'put ''dTBlNGFcdTBlNGJcdTBlNGNcdTBlNGRcdTBlNGVcdTBlNGZcdTBlNTBcdTBlNTFcdTBlNTJcdTBlNTNcdTBlNTRcdTBlNTVcdTBlNTZcdTBlNTdcdTBlNThcdTBlNTlcdTBlNWFcdTBlNWJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLG1lPVtdLEI9e30sRT0wO0UhPUwubGVuZ3RoOysrRSk2''@;'; put 'put ''NTUzMyE9PUwuY2hhckNvZGVBdChFKSYmKEJbTC5jaGFyQXQoRSldPUUpLG1lW0VdPUwuY2hhckF0KEUpO3JldHVybntlbmM6QixkZWM6bWV9fSgpLEplWzg5NV09ZnVuY3Rpb24oKXtmb3IodmFyIEw9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBm''@;'; put 'put ''XHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdm''@;'; put 'put ''XHUwMTBjXHhmY1x4ZTlcdTAxMGZceGU0XHUwMTBlXHUwMTY0XHUwMTBkXHUwMTFiXHUwMTFhXHUwMTM5XHhjZFx1MDEzZVx1MDFlYVx4YzRceGMxXHhjOVx1MDE3ZVx1MDE3ZFx4ZjRceGY2XHhkM1x1MDE2Zlx4ZGFceGZkXHhkNlx4ZGNcdTAxNjBcdTAxM2RceGRkXHUwMTU4XHUwMTY1XHhl''@;'; put 'put ''MVx4ZWRceGYzXHhmYVx1MDE0OFx1MDE0N1x1MDE2ZVx4ZDRcdTAxNjFcdTAxNTlcdTAxNTVcdTAxNTRceGJjXHhhN1x4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTVi''@;'; put 'put ''XHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUy''@;'; put 'put ''NTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1MDNjMFx1MDNhM1x1MDNjM1x4YjVcdTAzYzRcdTAzYTZcdTAzOThcdTAzYTlcdTAzYjRcdTIyMWVcdTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1''@;'; put 'put ''MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAiLG1lPVtdLEI9e30sRT0wO0UhPUwubGVuZ3RoOysrRSk2NTUzMyE9PUwuY2hhckNvZGVBdChFKSYmKEJbTC5jaGFyQXQoRSldPUUpLG1lW0VdPUwuY2hhckF0KEUpO3JldHVybntlbmM6QixkZWM6bWV9fSgpLEpl''@;'; put 'put ''WzkzMl09ZnVuY3Rpb24oKXt2YXIgRSxMPVtdLG1lPXt9LEI9W107Zm9yKEJbMF09IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAh''@;'; put 'put ''XCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZjYxXHVmZjYyXHVmZjYzXHVmZjY0XHVmZjY1XHVm''@;'; put 'put ''ZjY2XHVmZjY3XHVmZjY4XHVmZjY5XHVmZjZhXHVmZjZiXHVmZjZjXHVmZjZkXHVmZjZlXHVmZjZmXHVmZjcwXHVmZjcxXHVmZjcyXHVmZjczXHVmZjc0XHVmZjc1XHVmZjc2XHVmZjc3XHVmZjc4XHVmZjc5XHVmZjdhXHVmZjdiXHVmZjdjXHVmZjdkXHVmZjdlXHVmZjdmXHVmZjgwXHVmZjgx''@;'; put 'put ''XHVmZjgyXHVmZjgzXHVmZjg0XHVmZjg1XHVmZjg2XHVmZjg3XHVmZjg4XHVmZjg5XHVmZjhhXHVmZjhiXHVmZjhjXHVmZjhkXHVmZjhlXHVmZjhmXHVmZjkwXHVmZjkxXHVmZjkyXHVmZjkzXHVmZjk0XHVmZjk1XHVmZjk2XHVmZjk3XHVmZjk4XHVmZjk5XHVmZjlhXHVmZjliXHVmZjljXHVm''@;'; put 'put ''ZjlkXHVmZjllXHVmZjlmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMF1bRV1dPTArRSxMWzArRV09QlswXVtFXSk7Zm9yKEJbMTI5XT0iXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMDAwXHUzMDAxXHUzMDAyXHVmZjBjXHVmZjBlXHUzMGZiXHVmZjFhXHVmZjFiXHVmZjFmXHVmZjAxXHUzMDliXHUzMDljXHhiNFx1ZmY0MFx4YThcdWZmM2VcdWZmZTNcdWZmM2ZcdTMwZmRcdTMwZmVcdTMwOWRc''@;'; put 'put ''dTMwOWVcdTMwMDNcdTRlZGRcdTMwMDVcdTMwMDZcdTMwMDdcdTMwZmNcdTIwMTVcdTIwMTBcdWZmMGZcdWZmM2NcdWZmNWVcdTIyMjVcdWZmNWNcdTIwMjZcdTIwMjVcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdWZmMDhcdWZmMDlcdTMwMTRcdTMwMTVcdWZmM2JcdWZmM2RcdWZmNWJcdWZm''@;'; put 'put ''NWRcdTMwMDhcdTMwMDlcdTMwMGFcdTMwMGJcdTMwMGNcdTMwMGRcdTMwMGVcdTMwMGZcdTMwMTBcdTMwMTFcdWZmMGJcdWZmMGRceGIxXHhkN1x1ZmZmZFx4ZjdcdWZmMWRcdTIyNjBcdWZmMWNcdWZmMWVcdTIyNjZcdTIyNjdcdTIyMWVcdTIyMzRcdTI2NDJcdTI2NDBceGIwXHUyMDMyXHUy''@;'; put 'put ''MDMzXHUyMTAzXHVmZmU1XHVmZjA0XHVmZmUwXHVmZmUxXHVmZjA1XHVmZjAzXHVmZjA2XHVmZjBhXHVmZjIwXHhhN1x1MjYwNlx1MjYwNVx1MjVjYlx1MjVjZlx1MjVjZVx1MjVjN1x1MjVjNlx1MjVhMVx1MjVhMFx1MjViM1x1MjViMlx1MjViZFx1MjViY1x1MjAzYlx1MzAxMlx1MjE5Mlx1''@;'; put 'put ''MjE5MFx1MjE5MVx1MjE5M1x1MzAxM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjIwOFx1MjIwYlx1MjI4Nlx1MjI4N1x1MjI4Mlx1MjI4M1x1MjIyYVx1MjIyOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjIyN1x1MjIyOFx1ZmZlMlx1MjFkMlx1MjFkNFx1MjIwMFx1MjIwM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjIyMFx1MjJhNVx1MjMxMlx1MjIwMlx1MjIwN1x1MjI2MVx1''@;'; put 'put ''MjI1Mlx1MjI2YVx1MjI2Ylx1MjIxYVx1MjIzZFx1MjIxZFx1MjIzNVx1MjIyYlx1MjIyY1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjEyYlx1MjAzMFx1MjY2Zlx1MjY2ZFx1MjY2YVx1MjAyMFx1MjAyMVx4YjZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dTI1ZWZcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxMjldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEyOV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTI5XVtFXV09MzMwMjQrRSxMWzMzMDI0K0VdPUJbMTI5XVtFXSk7Zm9yKEJbMTMwXT0iXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZjEwXHVmZjExXHVmZjEyXHVmZjEzXHVmZjE0XHVmZjE1''@;'; put 'put ''XHVmZjE2XHVmZjE3XHVmZjE4XHVmZjE5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZjIxXHVmZjIyXHVmZjIzXHVmZjI0XHVmZjI1XHVmZjI2XHVmZjI3XHVmZjI4XHVmZjI5XHVmZjJhXHVmZjJiXHVmZjJjXHVmZjJkXHVmZjJlXHVmZjJmXHVmZjMwXHVm''@;'; put 'put ''ZjMxXHVmZjMyXHVmZjMzXHVmZjM0XHVmZjM1XHVmZjM2XHVmZjM3XHVmZjM4XHVmZjM5XHVmZjNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZjQxXHVmZjQyXHVmZjQzXHVmZjQ0XHVmZjQ1XHVmZjQ2XHVmZjQ3XHVmZjQ4XHVmZjQ5XHVmZjRhXHVmZjRi''@;'; put 'put ''XHVmZjRjXHVmZjRkXHVmZjRlXHVmZjRmXHVmZjUwXHVmZjUxXHVmZjUyXHVmZjUzXHVmZjU0XHVmZjU1XHVmZjU2XHVmZjU3XHVmZjU4XHVmZjU5XHVmZjVhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMDQxXHUzMDQyXHUzMDQzXHUzMDQ0XHUzMDQ1XHUzMDQ2XHUzMDQ3XHUzMDQ4XHUz''@;'; put 'put ''MDQ5XHUzMDRhXHUzMDRiXHUzMDRjXHUzMDRkXHUzMDRlXHUzMDRmXHUzMDUwXHUzMDUxXHUzMDUyXHUzMDUzXHUzMDU0XHUzMDU1XHUzMDU2XHUzMDU3XHUzMDU4XHUzMDU5XHUzMDVhXHUzMDViXHUzMDVjXHUzMDVkXHUzMDVlXHUzMDVmXHUzMDYwXHUzMDYxXHUzMDYyXHUzMDYzXHUzMDY0''@;'; put 'put ''XHUzMDY1XHUzMDY2XHUzMDY3XHUzMDY4XHUzMDY5XHUzMDZhXHUzMDZiXHUzMDZjXHUzMDZkXHUzMDZlXHUzMDZmXHUzMDcwXHUzMDcxXHUzMDcyXHUzMDczXHUzMDc0XHUzMDc1XHUzMDc2XHUzMDc3XHUzMDc4XHUzMDc5XHUzMDdhXHUzMDdiXHUzMDdjXHUzMDdkXHUzMDdlXHUzMDdmXHUz''@;'; put 'put ''MDgwXHUzMDgxXHUzMDgyXHUzMDgzXHUzMDg0XHUzMDg1XHUzMDg2XHUzMDg3XHUzMDg4XHUzMDg5XHUzMDhhXHUzMDhiXHUzMDhjXHUzMDhkXHUzMDhlXHUzMDhmXHUzMDkwXHUzMDkxXHUzMDkyXHUzMDkzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTMwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxMzBdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzEzMF1bRV1dPTMzMjgwK0UsTFszMzI4MCtFXT1CWzEzMF1bRV0pO2ZvcihCWzEzMV09Ilx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzBhMVx1MzBhMlx1MzBhM1x1MzBhNFx1MzBhNVx1MzBhNlx1MzBhN1x1MzBhOFx1MzBhOVx1MzBhYVx1MzBhYlx1MzBhY1x1MzBhZFx1MzBhZVx1MzBhZlx1MzBiMFx1MzBiMVx1MzBiMlx1MzBi''@;'; put 'put ''M1x1MzBiNFx1MzBiNVx1MzBiNlx1MzBiN1x1MzBiOFx1MzBiOVx1MzBiYVx1MzBiYlx1MzBiY1x1MzBiZFx1MzBiZVx1MzBiZlx1MzBjMFx1MzBjMVx1MzBjMlx1MzBjM1x1MzBjNFx1MzBjNVx1MzBjNlx1MzBjN1x1MzBjOFx1MzBjOVx1MzBjYVx1MzBjYlx1MzBjY1x1MzBjZFx1MzBjZVx1''@;'; put 'put ''MzBjZlx1MzBkMFx1MzBkMVx1MzBkMlx1MzBkM1x1MzBkNFx1MzBkNVx1MzBkNlx1MzBkN1x1MzBkOFx1MzBkOVx1MzBkYVx1MzBkYlx1MzBkY1x1MzBkZFx1MzBkZVx1MzBkZlx1ZmZmZFx1MzBlMFx1MzBlMVx1MzBlMlx1MzBlM1x1MzBlNFx1MzBlNVx1MzBlNlx1MzBlN1x1MzBlOFx1MzBl''@;'; put 'put ''OVx1MzBlYVx1MzBlYlx1MzBlY1x1MzBlZFx1MzBlZVx1MzBlZlx1MzBmMFx1MzBmMVx1MzBmMlx1MzBmM1x1MzBmNFx1MzBmNVx1MzBmNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1''@;'; put 'put ''MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1MDNhM1x1MDNhNFx1MDNhNVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDNiMVx1MDNi''@;'; put 'put ''Mlx1MDNiM1x1MDNiNFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1MDNjMVx1MDNjM1x1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MDNjOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEzMV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTMxXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxMzFdW0VdXT0zMzUzNitFLExbMzM1MzYrRV09QlsxMzFdW0VdKTtm''@;'; put 'put ''b3IoQlsxMzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MDFcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0''@;'; put 'put ''MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0NTFcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdWZmZmRcdTA0M2VcdTA0M2ZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0''@;'; put 'put ''NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTI1MDBcdTI1MDJcdTI1MGNcdTI1MTBc''@;'; put 'put ''dTI1MThcdTI1MTRcdTI1MWNcdTI1MmNcdTI1MjRcdTI1MzRcdTI1M2NcdTI1MDFcdTI1MDNcdTI1MGZcdTI1MTNcdTI1MWJcdTI1MTdcdTI1MjNcdTI1MzNcdTI1MmJcdTI1M2JcdTI1NGJcdTI1MjBcdTI1MmZcdTI1MjhcdTI1MzdcdTI1M2ZcdTI1MWRcdTI1MzBcdTI1MjVcdTI1MzhcdTI1''@;'; put 'put ''NDJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxMzJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEzMl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTMyXVtFXV09MzM3OTIrRSxMWzMzNzkyK0Vd''@;'; put 'put ''PUJbMTMyXVtFXSk7Zm9yKEJbMTM1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyNDYwXHUyNDYxXHUyNDYyXHUyNDYzXHUyNDY0XHUyNDY1XHUyNDY2XHUyNDY3XHUyNDY4XHUyNDY5XHUyNDZhXHUyNDZiXHUyNDZjXHUyNDZkXHUy''@;'; put 'put ''NDZlXHUyNDZmXHUyNDcwXHUyNDcxXHUyNDcyXHUyNDczXHUyMTYwXHUyMTYxXHUyMTYyXHUyMTYzXHUyMTY0XHUyMTY1XHUyMTY2XHUyMTY3XHUyMTY4XHUyMTY5XHVmZmZkXHUzMzQ5XHUzMzE0XHUzMzIyXHUzMzRkXHUzMzE4XHUzMzI3XHUzMzAzXHUzMzM2XHUzMzUxXHUzMzU3XHUzMzBk''@;'; put 'put ''XHUzMzI2XHUzMzIzXHUzMzJiXHUzMzRhXHUzMzNiXHUzMzljXHUzMzlkXHUzMzllXHUzMzhlXHUzMzhmXHUzM2M0XHUzM2ExXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMzdiXHVmZmZkXHUzMDFkXHUzMDFmXHUyMTE2XHUzM2NkXHUyMTIxXHUz''@;'; put 'put ''MmE0XHUzMmE1XHUzMmE2XHUzMmE3XHUzMmE4XHUzMjMxXHUzMjMyXHUzMjM5XHUzMzdlXHUzMzdkXHUzMzdjXHUyMjUyXHUyMjYxXHUyMjJiXHUyMjJlXHUyMjExXHUyMjFhXHUyMmE1XHUyMjIwXHUyMjFmXHUyMmJmXHUyMjM1XHUyMjI5XHUyMjJhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTM1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxMzVdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzEzNV1bRV1dPTM0NTYw''@;'; put 'put ''K0UsTFszNDU2MCtFXT1CWzEzNV1bRV0pO2ZvcihCWzEzNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1NGU5Y1x1NTUxNlx1NWEwM1x1OTYzZlx1NTRjMFx1NjExYlx1NjMyOFx1NTlmNlx1OTAyMlx1ODQ3NVx1ODMxY1x1N2E1MFx1NjBhYVx1NjNlMVx1NmUyNVx1NjVlZFx1ODQ2Nlx1ODJhNlx1OWJmNVx1Njg5M1x1NTcyN1x1NjVhMVx1NjI3MVx1NWI5Ylx1NTlkMFx1ODY3Ylx1OThmNFx1''@;'; put 'put ''N2Q2Mlx1N2RiZVx1OWI4ZVx1NjIxNlx1N2M5Zlx1ODhiN1x1NWI4OVx1NWViNVx1NjMwOVx1NjY5N1x1Njg0OFx1OTVjN1x1OTc4ZFx1Njc0Zlx1NGVlNVx1NGYwYVx1NGY0ZFx1NGY5ZFx1NTA0OVx1NTZmMlx1NTkzN1x1NTlkNFx1NWEwMVx1NWMwOVx1NjBkZlx1NjEwZlx1NjE3MFx1NjYx''@;'; put 'put ''M1x1NjkwNVx1NzBiYVx1NzU0Zlx1NzU3MFx1NzlmYlx1N2RhZFx1N2RlZlx1ODBjM1x1ODQwZVx1ODg2M1x1OGIwMlx1OTA1NVx1OTA3YVx1NTMzYlx1NGU5NVx1NGVhNVx1NTdkZlx1ODBiMlx1OTBjMVx1NzhlZlx1NGUwMFx1NThmMVx1NmVhMlx1OTAzOFx1N2EzMlx1ODMyOFx1ODI4Ylx1''@;'; put 'put ''OWMyZlx1NTE0MVx1NTM3MFx1NTRiZFx1NTRlMVx1NTZlMFx1NTlmYlx1NWYxNVx1OThmMlx1NmRlYlx1ODBlNFx1ODUyZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEzNl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTM2XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsx''@;'; put 'put ''MzZdW0VdXT0zNDgxNitFLExbMzQ4MTYrRV09QlsxMzZdW0VdKTtmb3IoQlsxMzddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk2NjJcdTk2NzBcdTk2YTBcdTk3ZmJcdTU0MGJcdTUzZjNcdTViODdcdTcwY2ZcdTdmYmRcdThmYzJc''@;'; put 'put ''dTk2ZThcdTUzNmZcdTlkNWNcdTdhYmFcdTRlMTFcdTc4OTNcdTgxZmNcdTZlMjZcdTU2MThcdTU1MDRcdTZiMWRcdTg1MWFcdTljM2JcdTU5ZTVcdTUzYTlcdTZkNjZcdTc0ZGNcdTk1OGZcdTU2NDJcdTRlOTFcdTkwNGJcdTk2ZjJcdTgzNGZcdTk5MGNcdTUzZTFcdTU1YjZcdTViMzBcdTVm''@;'; put 'put ''NzFcdTY2MjBcdTY2ZjNcdTY4MDRcdTZjMzhcdTZjZjNcdTZkMjlcdTc0NWJcdTc2YzhcdTdhNGVcdTk4MzRcdTgyZjFcdTg4NWJcdThhNjBcdTkyZWRcdTZkYjJcdTc1YWJcdTc2Y2FcdTk5YzVcdTYwYTZcdThiMDFcdThkOGFcdTk1YjJcdTY5OGVcdTUzYWRcdTUxODZcdWZmZmRcdTU3MTJc''@;'; put 'put ''dTU4MzBcdTU5NDRcdTViYjRcdTVlZjZcdTYwMjhcdTYzYTlcdTYzZjRcdTZjYmZcdTZmMTRcdTcwOGVcdTcxMTRcdTcxNTlcdTcxZDVcdTczM2ZcdTdlMDFcdTgyNzZcdTgyZDFcdTg1OTdcdTkwNjBcdTkyNWJcdTlkMWJcdTU4NjlcdTY1YmNcdTZjNWFcdTc1MjVcdTUxZjlcdTU5MmVcdTU5''@;'; put 'put ''NjVcdTVmODBcdTVmZGNcdTYyYmNcdTY1ZmFcdTZhMmFcdTZiMjdcdTZiYjRcdTczOGJcdTdmYzFcdTg5NTZcdTlkMmNcdTlkMGVcdTllYzRcdTVjYTFcdTZjOTZcdTgzN2JcdTUxMDRcdTVjNGJcdTYxYjZcdTgxYzZcdTY4NzZcdTcyNjFcdTRlNTlcdTRmZmFcdTUzNzhcdTYwNjlcdTZlMjlc''@;'; put 'put ''dTdhNGZcdTk3ZjNcdTRlMGJcdTUzMTZcdTRlZWVcdTRmNTVcdTRmM2RcdTRmYTFcdTRmNzNcdTUyYTBcdTUzZWZcdTU2MDlcdTU5MGZcdTVhYzFcdTViYjZcdTViZTFcdTc5ZDFcdTY2ODdcdTY3OWNcdTY3YjZcdTZiNGNcdTZjYjNcdTcwNmJcdTczYzJcdTc5OGRcdTc5YmVcdTdhM2NcdTdi''@;'; put 'put ''ODdcdTgyYjFcdTgyZGJcdTgzMDRcdTgzNzdcdTgzZWZcdTgzZDNcdTg3NjZcdThhYjJcdTU2MjlcdThjYThcdThmZTZcdTkwNGVcdTk3MWVcdTg2OGFcdTRmYzRcdTVjZThcdTYyMTFcdTcyNTlcdTc1M2JcdTgxZTVcdTgyYmRcdTg2ZmVcdThjYzBcdTk2YzVcdTk5MTNcdTk5ZDVcdTRlY2Jc''@;'; put 'put ''dTRmMWFcdTg5ZTNcdTU2ZGVcdTU4NGFcdTU4Y2FcdTVlZmJcdTVmZWJcdTYwMmFcdTYwOTRcdTYwNjJcdTYxZDBcdTYyMTJcdTYyZDBcdTY1MzlcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxMzddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEzN11bRV0uY2hhckNvZGVB''@;'; put 'put ''dCgwKSYmKG1lW0JbMTM3XVtFXV09MzUwNzIrRSxMWzM1MDcyK0VdPUJbMTM3XVtFXSk7Zm9yKEJbMTM4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5YjQxXHU2NjY2XHU2OGIwXHU2ZDc3XHU3MDcwXHU3NTRjXHU3Njg2XHU3ZDc1''@;'; put 'put ''XHU4MmE1XHU4N2Y5XHU5NThiXHU5NjhlXHU4YzlkXHU1MWYxXHU1MmJlXHU1OTE2XHU1NGIzXHU1YmIzXHU1ZDE2XHU2MTY4XHU2OTgyXHU2ZGFmXHU3ODhkXHU4NGNiXHU4ODU3XHU4YTcyXHU5M2E3XHU5YWI4XHU2ZDZjXHU5OWE4XHU4NmQ5XHU1N2EzXHU2N2ZmXHU4NmNlXHU5MjBlXHU1''@;'; put 'put ''MjgzXHU1Njg3XHU1NDA0XHU1ZWQzXHU2MmUxXHU2NGI5XHU2ODNjXHU2ODM4XHU2YmJiXHU3MzcyXHU3OGJhXHU3YTZiXHU4OTlhXHU4OWQyXHU4ZDZiXHU4ZjAzXHU5MGVkXHU5NWEzXHU5Njk0XHU5NzY5XHU1YjY2XHU1Y2IzXHU2OTdkXHU5ODRkXHU5ODRlXHU2MzliXHU3YjIwXHU2YTJi''@;'; put 'put ''XHVmZmZkXHU2YTdmXHU2OGI2XHU5YzBkXHU2ZjVmXHU1MjcyXHU1NTlkXHU2MDcwXHU2MmVjXHU2ZDNiXHU2ZTA3XHU2ZWQxXHU4NDViXHU4OTEwXHU4ZjQ0XHU0ZTE0XHU5YzM5XHU1M2Y2XHU2OTFiXHU2YTNhXHU5Nzg0XHU2ODJhXHU1MTVjXHU3YWMzXHU4NGIyXHU5MWRjXHU5MzhjXHU1''@;'; put 'put ''NjViXHU5ZDI4XHU2ODIyXHU4MzA1XHU4NDMxXHU3Y2E1XHU1MjA4XHU4MmM1XHU3NGU2XHU0ZTdlXHU0ZjgzXHU1MWEwXHU1YmQyXHU1MjBhXHU1MmQ4XHU1MmU3XHU1ZGZiXHU1NTlhXHU1ODJhXHU1OWU2XHU1YjhjXHU1Yjk4XHU1YmRiXHU1ZTcyXHU1ZTc5XHU2MGEzXHU2MTFmXHU2MTYz''@;'; put 'put ''XHU2MWJlXHU2M2RiXHU2NTYyXHU2N2QxXHU2ODUzXHU2OGZhXHU2YjNlXHU2YjUzXHU2YzU3XHU2ZjIyXHU2Zjk3XHU2ZjQ1XHU3NGIwXHU3NTE4XHU3NmUzXHU3NzBiXHU3YWZmXHU3YmExXHU3YzIxXHU3ZGU5XHU3ZjM2XHU3ZmYwXHU4MDlkXHU4MjY2XHU4MzllXHU4OWIzXHU4YWNjXHU4''@;'; put 'put ''Y2FiXHU5MDg0XHU5NDUxXHU5NTkzXHU5NTkxXHU5NWEyXHU5NjY1XHU5N2QzXHU5OTI4XHU4MjE4XHU0ZTM4XHU1NDJiXHU1Y2I4XHU1ZGNjXHU3M2E5XHU3NjRjXHU3NzNjXHU1Y2E5XHU3ZmViXHU4ZDBiXHU5NmMxXHU5ODExXHU5ODU0XHU5ODU4XHU0ZjAxXHU0ZjBlXHU1MzcxXHU1NTlj''@;'; put 'put ''XHU1NjY4XHU1N2ZhXHU1OTQ3XHU1YjA5XHU1YmM0XHU1YzkwXHU1ZTBjXHU1ZTdlXHU1ZmNjXHU2M2VlXHU2NzNhXHU2NWQ3XHU2NWUyXHU2NzFmXHU2OGNiXHU2OGM0XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTM4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxMzhd''@;'; put 'put ''W0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzEzOF1bRV1dPTM1MzI4K0UsTFszNTMyOCtFXT1CWzEzOF1bRV0pO2ZvcihCWzEzOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmE1Zlx1NWUzMFx1NmJjNVx1NmMxN1x1NmM3ZFx1NzU3''@;'; put 'put ''Zlx1Nzk0OFx1NWI2M1x1N2EwMFx1N2QwMFx1NWZiZFx1ODk4Zlx1OGExOFx1OGNiNFx1OGQ3N1x1OGVjY1x1OGYxZFx1OThlMlx1OWEwZVx1OWIzY1x1NGU4MFx1NTA3ZFx1NTEwMFx1NTk5M1x1NWI5Y1x1NjIyZlx1NjI4MFx1NjRlY1x1NmIzYVx1NzJhMFx1NzU5MVx1Nzk0N1x1N2ZhOVx1''@;'; put 'put ''ODdmYlx1OGFiY1x1OGI3MFx1NjNhY1x1ODNjYVx1OTdhMFx1NTQwOVx1NTQwM1x1NTVhYlx1Njg1NFx1NmE1OFx1OGE3MFx1NzgyN1x1Njc3NVx1OWVjZFx1NTM3NFx1NWJhMlx1ODExYVx1ODY1MFx1OTAwNlx1NGUxOFx1NGU0NVx1NGVjN1x1NGYxMVx1NTNjYVx1NTQzOFx1NWJhZVx1NWYx''@;'; put 'put ''M1x1NjAyNVx1NjU1MVx1ZmZmZFx1NjczZFx1NmM0Mlx1NmM3Mlx1NmNlM1x1NzA3OFx1NzQwM1x1N2E3Nlx1N2FhZVx1N2IwOFx1N2QxYVx1N2NmZVx1N2Q2Nlx1NjVlN1x1NzI1Ylx1NTNiYlx1NWM0NVx1NWRlOFx1NjJkMlx1NjJlMFx1NjMxOVx1NmUyMFx1ODY1YVx1OGEzMVx1OGRkZFx1''@;'; put 'put ''OTJmOFx1NmYwMVx1NzlhNlx1OWI1YVx1NGVhOFx1NGVhYlx1NGVhY1x1NGY5Ylx1NGZhMFx1NTBkMVx1NTE0N1x1N2FmNlx1NTE3MVx1NTFmNlx1NTM1NFx1NTMyMVx1NTM3Zlx1NTNlYlx1NTVhY1x1NTg4M1x1NWNlMVx1NWYzN1x1NWY0YVx1NjAyZlx1NjA1MFx1NjA2ZFx1NjMxZlx1NjU1''@;'; put 'put ''OVx1NmE0Ylx1NmNjMVx1NzJjMlx1NzJlZFx1NzdlZlx1ODBmOFx1ODEwNVx1ODIwOFx1ODU0ZVx1OTBmN1x1OTNlMVx1OTdmZlx1OTk1N1x1OWE1YVx1NGVmMFx1NTFkZFx1NWMyZFx1NjY4MVx1Njk2ZFx1NWM0MFx1NjZmMlx1Njk3NVx1NzM4OVx1Njg1MFx1N2M4MVx1NTBjNVx1NTJlNFx1''@;'; put 'put ''NTc0N1x1NWRmZVx1OTMyNlx1NjVhNFx1NmIyM1x1NmIzZFx1NzQzNFx1Nzk4MVx1NzliZFx1N2I0Ylx1N2RjYVx1ODJiOVx1ODNjY1x1ODg3Zlx1ODk1Zlx1OGIzOVx1OGZkMVx1OTFkMVx1NTQxZlx1OTI4MFx1NGU1ZFx1NTAzNlx1NTNlNVx1NTMzYVx1NzJkN1x1NzM5Nlx1NzdlOVx1ODJl''@;'; put 'put ''Nlx1OGVhZlx1OTljNlx1OTljOFx1OTlkMlx1NTE3N1x1NjExYVx1ODY1ZVx1NTViMFx1N2E3YVx1NTA3Nlx1NWJkM1x1OTA0N1x1OTY4NVx1NGUzMlx1NmFkYlx1OTFlN1x1NWM1MVx1NWM0OFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEzOV0ubGVuZ3RoOysrRSk2''@;'; put 'put ''NTUzMyE9PUJbMTM5XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxMzldW0VdXT0zNTU4NCtFLExbMzU1ODQrRV09QlsxMzldW0VdKTtmb3IoQlsxNDBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYzOThcdTdhOWZcdTZjOTNcdTk3''@;'; put 'put ''NzRcdThmNjFcdTdhYWFcdTcxOGFcdTk2ODhcdTdjODJcdTY4MTdcdTdlNzBcdTY4NTFcdTkzNmNcdTUyZjJcdTU0MWJcdTg1YWJcdThhMTNcdTdmYTRcdThlY2RcdTkwZTFcdTUzNjZcdTg4ODhcdTc5NDFcdTRmYzJcdTUwYmVcdTUyMTFcdTUxNDRcdTU1NTNcdTU3MmRcdTczZWFcdTU3OGJc''@;'; put 'put ''dTU5NTFcdTVmNjJcdTVmODRcdTYwNzVcdTYxNzZcdTYxNjdcdTYxYTlcdTYzYjJcdTY0M2FcdTY1NmNcdTY2NmZcdTY4NDJcdTZlMTNcdTc1NjZcdTdhM2RcdTdjZmJcdTdkNGNcdTdkOTlcdTdlNGJcdTdmNmJcdTgzMGVcdTgzNGFcdTg2Y2RcdThhMDhcdThhNjNcdThiNjZcdThlZmRcdTk4''@;'; put 'put ''MWFcdTlkOGZcdTgyYjhcdThmY2VcdTliZThcdWZmZmRcdTUyODdcdTYyMWZcdTY0ODNcdTZmYzBcdTk2OTlcdTY4NDFcdTUwOTFcdTZiMjBcdTZjN2FcdTZmNTRcdTdhNzRcdTdkNTBcdTg4NDBcdThhMjNcdTY3MDhcdTRlZjZcdTUwMzlcdTUwMjZcdTUwNjVcdTUxN2NcdTUyMzhcdTUyNjNc''@;'; put 'put ''dTU1YTdcdTU3MGZcdTU4MDVcdTVhY2NcdTVlZmFcdTYxYjJcdTYxZjhcdTYyZjNcdTYzNzJcdTY5MWNcdTZhMjlcdTcyN2RcdTcyYWNcdTczMmVcdTc4MTRcdTc4NmZcdTdkNzlcdTc3MGNcdTgwYTlcdTg5OGJcdThiMTlcdThjZTJcdThlZDJcdTkwNjNcdTkzNzVcdTk2N2FcdTk4NTVcdTlh''@;'; put 'put ''MTNcdTllNzhcdTUxNDNcdTUzOWZcdTUzYjNcdTVlN2JcdTVmMjZcdTZlMWJcdTZlOTBcdTczODRcdTczZmVcdTdkNDNcdTgyMzdcdThhMDBcdThhZmFcdTk2NTBcdTRlNGVcdTUwMGJcdTUzZTRcdTU0N2NcdTU2ZmFcdTU5ZDFcdTViNjRcdTVkZjFcdTVlYWJcdTVmMjdcdTYyMzhcdTY1NDVc''@;'; put 'put ''dTY3YWZcdTZlNTZcdTcyZDBcdTdjY2FcdTg4YjRcdTgwYTFcdTgwZTFcdTgzZjBcdTg2NGVcdThhODdcdThkZThcdTkyMzdcdTk2YzdcdTk4NjdcdTlmMTNcdTRlOTRcdTRlOTJcdTRmMGRcdTUzNDhcdTU0NDlcdTU0M2VcdTVhMmZcdTVmOGNcdTVmYTFcdTYwOWZcdTY4YTdcdTZhOGVcdTc0''@;'; put 'put ''NWFcdTc4ODFcdThhOWVcdThhYTRcdThiNzdcdTkxOTBcdTRlNWVcdTliYzlcdTRlYTRcdTRmN2NcdTRmYWZcdTUwMTlcdTUwMTZcdTUxNDlcdTUxNmNcdTUyOWZcdTUyYjlcdTUyZmVcdTUzOWFcdTUzZTNcdTU0MTFcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNDBd''@;'; put 'put ''Lmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0MF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTQwXVtFXV09MzU4NDArRSxMWzM1ODQwK0VdPUJbMTQwXVtFXSk7Zm9yKEJbMTQxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NDBlXHU1''@;'; put 'put ''NTg5XHU1NzUxXHU1N2EyXHU1OTdkXHU1YjU0XHU1YjVkXHU1YjhmXHU1ZGU1XHU1ZGU3XHU1ZGY3XHU1ZTc4XHU1ZTgzXHU1ZTlhXHU1ZWI3XHU1ZjE4XHU2MDUyXHU2MTRjXHU2Mjk3XHU2MmQ4XHU2M2E3XHU2NTNiXHU2NjAyXHU2NjQzXHU2NmY0XHU2NzZkXHU2ODIxXHU2ODk3XHU2OWNi''@;'; put 'put ''XHU2YzVmXHU2ZDJhXHU2ZDY5XHU2ZTJmXHU2ZTlkXHU3NTMyXHU3Njg3XHU3ODZjXHU3YTNmXHU3Y2UwXHU3ZDA1XHU3ZDE4XHU3ZDVlXHU3ZGIxXHU4MDE1XHU4MDAzXHU4MGFmXHU4MGIxXHU4MTU0XHU4MThmXHU4MjJhXHU4MzUyXHU4ODRjXHU4ODYxXHU4YjFiXHU4Y2EyXHU4Y2ZjXHU5''@;'; put 'put ''MGNhXHU5MTc1XHU5MjcxXHU3ODNmXHU5MmZjXHU5NWE0XHU5NjRkXHVmZmZkXHU5ODA1XHU5OTk5XHU5YWQ4XHU5ZDNiXHU1MjViXHU1MmFiXHU1M2Y3XHU1NDA4XHU1OGQ1XHU2MmY3XHU2ZmUwXHU4YzZhXHU4ZjVmXHU5ZWI5XHU1MTRiXHU1MjNiXHU1NDRhXHU1NmZkXHU3YTQwXHU5MTc3''@;'; put 'put ''XHU5ZDYwXHU5ZWQyXHU3MzQ0XHU2ZjA5XHU4MTcwXHU3NTExXHU1ZmZkXHU2MGRhXHU5YWE4XHU3MmRiXHU4ZmJjXHU2YjY0XHU5ODAzXHU0ZWNhXHU1NmYwXHU1NzY0XHU1OGJlXHU1YTVhXHU2MDY4XHU2MWM3XHU2NjBmXHU2NjA2XHU2ODM5XHU2OGIxXHU2ZGY3XHU3NWQ1XHU3ZDNhXHU4''@;'; put 'put ''MjZlXHU5YjQyXHU0ZTliXHU0ZjUwXHU1M2M5XHU1NTA2XHU1ZDZmXHU1ZGU2XHU1ZGVlXHU2N2ZiXHU2Yzk5XHU3NDczXHU3ODAyXHU4YTUwXHU5Mzk2XHU4OGRmXHU1NzUwXHU1ZWE3XHU2MzJiXHU1MGI1XHU1MGFjXHU1MThkXHU2NzAwXHU1NGM5XHU1ODVlXHU1OWJiXHU1YmIwXHU1ZjY5''@;'; put 'put ''XHU2MjRkXHU2M2ExXHU2ODNkXHU2YjczXHU2ZTA4XHU3MDdkXHU5MWM3XHU3MjgwXHU3ODE1XHU3ODI2XHU3OTZkXHU2NThlXHU3ZDMwXHU4M2RjXHU4OGMxXHU4ZjA5XHU5NjliXHU1MjY0XHU1NzI4XHU2NzUwXHU3ZjZhXHU4Y2ExXHU1MWI0XHU1NzQyXHU5NjJhXHU1ODNhXHU2OThhXHU4''@;'; put 'put ''MGI0XHU1NGIyXHU1ZDBlXHU1N2ZjXHU3ODk1XHU5ZGZhXHU0ZjVjXHU1MjRhXHU1NDhiXHU2NDNlXHU2NjI4XHU2NzE0XHU2N2Y1XHU3YTg0XHU3YjU2XHU3ZDIyXHU5MzJmXHU2ODVjXHU5YmFkXHU3YjM5XHU1MzE5XHU1MThhXHU1MjM3XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiks''@;'; put 'put ''RT0wO0UhPUJbMTQxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNDFdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE0MV1bRV1dPTM2MDk2K0UsTFszNjA5NitFXT1CWzE0MV1bRV0pO2ZvcihCWzE0Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1NWJkZlx1NjJmNlx1NjRhZVx1NjRlNlx1NjcyZFx1NmJiYVx1ODVhOVx1OTZkMVx1NzY5MFx1OWJkNlx1NjM0Y1x1OTMwNlx1OWJhYlx1NzZiZlx1NjY1Mlx1NGUwOVx1NTA5OFx1NTNjMlx1NWM3MVx1NjBlOFx1NjQ5Mlx1NjU2M1x1Njg1Zlx1NzFlNlx1NzNjYVx1NzUyM1x1N2I5''@;'; put 'put ''N1x1N2U4Mlx1ODY5NVx1OGI4M1x1OGNkYlx1OTE3OFx1OTkxMFx1NjVhY1x1NjZhYlx1NmI4Ylx1NGVkNVx1NGVkNFx1NGYzYVx1NGY3Zlx1NTIzYVx1NTNmOFx1NTNmMlx1NTVlM1x1NTZkYlx1NThlYlx1NTljYlx1NTljOVx1NTlmZlx1NWI1MFx1NWM0ZFx1NWUwMlx1NWUyYlx1NWZkN1x1''@;'; put 'put ''NjAxZFx1NjMwN1x1NjUyZlx1NWI1Y1x1NjVhZlx1NjViZFx1NjVlOFx1Njc5ZFx1NmI2Mlx1ZmZmZFx1NmI3Ylx1NmMwZlx1NzM0NVx1Nzk0OVx1NzljMVx1N2NmOFx1N2QxOVx1N2QyYlx1ODBhMlx1ODEwMlx1ODFmM1x1ODk5Nlx1OGE1ZVx1OGE2OVx1OGE2Nlx1OGE4Y1x1OGFlZVx1OGNj''@;'; put 'put ''N1x1OGNkY1x1OTZjY1x1OThmY1x1NmI2Zlx1NGU4Ylx1NGYzY1x1NGY4ZFx1NTE1MFx1NWI1N1x1NWJmYVx1NjE0OFx1NjMwMVx1NjY0Mlx1NmIyMVx1NmVjYlx1NmNiYlx1NzIzZVx1NzRiZFx1NzVkNFx1NzhjMVx1NzkzYVx1ODAwY1x1ODAzM1x1ODFlYVx1ODQ5NFx1OGY5ZVx1NmM1MFx1''@;'; put 'put ''OWU3Zlx1NWYwZlx1OGI1OFx1OWQyYlx1N2FmYVx1OGVmOFx1NWI4ZFx1OTZlYlx1NGUwM1x1NTNmMVx1NTdmN1x1NTkzMVx1NWFjOVx1NWJhNFx1NjA4OVx1NmU3Zlx1NmYwNlx1NzViZVx1OGNlYVx1NWI5Zlx1ODUwMFx1N2JlMFx1NTA3Mlx1NjdmNFx1ODI5ZFx1NWM2MVx1ODU0YVx1N2Ux''@;'; put 'put ''ZVx1ODIwZVx1NTE5OVx1NWMwNFx1NjM2OFx1OGQ2Nlx1NjU5Y1x1NzE2ZVx1NzkzZVx1N2QxN1x1ODAwNVx1OGIxZFx1OGVjYVx1OTA2ZVx1ODZjN1x1OTBhYVx1NTAxZlx1NTJmYVx1NWMzYVx1Njc1M1x1NzA3Y1x1NzIzNVx1OTE0Y1x1OTFjOFx1OTMyYlx1ODJlNVx1NWJjMlx1NWYzMVx1''@;'; put 'put ''NjBmOVx1NGUzYlx1NTNkNlx1NWI4OFx1NjI0Ylx1NjczMVx1NmI4YVx1NzJlOVx1NzNlMFx1N2EyZVx1ODE2Ylx1OGRhM1x1OTE1Mlx1OTk5Nlx1NTExMlx1NTNkN1x1NTQ2YVx1NWJmZlx1NjM4OFx1NmEzOVx1N2RhY1x1OTcwMFx1NTZkYVx1NTNjZVx1NTQ2OFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTQyXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNDJdW0VdXT0zNjM1MitFLExbMzYzNTIrRV09QlsxNDJdW0VdKTtmb3IoQlsxNDNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdTViOTdcdTVjMzFcdTVkZGVcdTRmZWVcdTYxMDFcdTYyZmVcdTZkMzJcdTc5YzBcdTc5Y2JcdTdkNDJcdTdlNGRcdTdmZDJcdTgxZWRcdTgyMWZcdTg0OTBcdTg4NDZcdTg5NzJcdThiOTBcdThlNzRcdThmMmZcdTkwMzFcdTkxNGJcdTkxNmNcdTk2YzZcdTkx''@;'; put 'put ''OWNcdTRlYzBcdTRmNGZcdTUxNDVcdTUzNDFcdTVmOTNcdTYyMGVcdTY3ZDRcdTZjNDFcdTZlMGJcdTczNjNcdTdlMjZcdTkxY2RcdTkyODNcdTUzZDRcdTU5MTlcdTViYmZcdTZkZDFcdTc5NWRcdTdlMmVcdTdjOWJcdTU4N2VcdTcxOWZcdTUxZmFcdTg4NTNcdThmZjBcdTRmY2FcdTVjZmJc''@;'; put 'put ''dTY2MjVcdTc3YWNcdTdhZTNcdTgyMWNcdTk5ZmZcdTUxYzZcdTVmYWFcdTY1ZWNcdTY5NmZcdTZiODlcdTZkZjNcdWZmZmRcdTZlOTZcdTZmNjRcdTc2ZmVcdTdkMTRcdTVkZTFcdTkwNzVcdTkxODdcdTk4MDZcdTUxZTZcdTUyMWRcdTYyNDBcdTY2OTFcdTY2ZDlcdTZlMWFcdTVlYjZcdTdk''@;'; put 'put ''ZDJcdTdmNzJcdTY2ZjhcdTg1YWZcdTg1ZjdcdThhZjhcdTUyYTlcdTUzZDlcdTU5NzNcdTVlOGZcdTVmOTBcdTYwNTVcdTkyZTRcdTk2NjRcdTUwYjdcdTUxMWZcdTUyZGRcdTUzMjBcdTUzNDdcdTUzZWNcdTU0ZThcdTU1NDZcdTU1MzFcdTU2MTdcdTU5NjhcdTU5YmVcdTVhM2NcdTViYjVc''@;'; put 'put ''dTVjMDZcdTVjMGZcdTVjMTFcdTVjMWFcdTVlODRcdTVlOGFcdTVlZTBcdTVmNzBcdTYyN2ZcdTYyODRcdTYyZGJcdTYzOGNcdTYzNzdcdTY2MDdcdTY2MGNcdTY2MmRcdTY2NzZcdTY3N2VcdTY4YTJcdTZhMWZcdTZhMzVcdTZjYmNcdTZkODhcdTZlMDlcdTZlNThcdTcxM2NcdTcxMjZcdTcx''@;'; put 'put ''NjdcdTc1YzdcdTc3MDFcdTc4NWRcdTc5MDFcdTc5NjVcdTc5ZjBcdTdhZTBcdTdiMTFcdTdjYTdcdTdkMzlcdTgwOTZcdTgzZDZcdTg0OGJcdTg1NDlcdTg4NWRcdTg4ZjNcdThhMWZcdThhM2NcdThhNTRcdThhNzNcdThjNjFcdThjZGVcdTkxYTRcdTkyNjZcdTkzN2VcdTk0MThcdTk2OWNc''@;'; put 'put ''dTk3OThcdTRlMGFcdTRlMDhcdTRlMWVcdTRlNTdcdTUxOTdcdTUyNzBcdTU3Y2VcdTU4MzRcdTU4Y2NcdTViMjJcdTVlMzhcdTYwYzVcdTY0ZmVcdTY3NjFcdTY3NTZcdTZkNDRcdTcyYjZcdTc1NzNcdTdhNjNcdTg0YjhcdThiNzJcdTkxYjhcdTkzMjBcdTU2MzFcdTU3ZjRcdTk4ZmVcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNDNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0M11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTQzXVtFXV09MzY2MDgrRSxMWzM2NjA4K0VdPUJbMTQzXVtFXSk7Zm9yKEJbMTQ0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MmVkXHU2OTBkXHU2Yjk2XHU3MWVkXHU3ZTU0XHU4MDc3XHU4MjcyXHU4OWU2XHU5OGRmXHU4NzU1XHU4ZmIxXHU1YzNiXHU0ZjM4XHU0ZmUxXHU0ZmI1XHU1NTA3XHU1YTIwXHU1YmRkXHU1YmU5XHU1ZmMzXHU2MTRlXHU2MzJmXHU2''@;'; put 'put ''NWIwXHU2NjRiXHU2OGVlXHU2OTliXHU2ZDc4XHU2ZGYxXHU3NTMzXHU3NWI5XHU3NzFmXHU3OTVlXHU3OWU2XHU3ZDMzXHU4MWUzXHU4MmFmXHU4NWFhXHU4OWFhXHU4YTNhXHU4ZWFiXHU4ZjliXHU5MDMyXHU5MWRkXHU5NzA3XHU0ZWJhXHU0ZWMxXHU1MjAzXHU1ODc1XHU1OGVjXHU1YzBi''@;'; put 'put ''XHU3NTFhXHU1YzNkXHU4MTRlXHU4YTBhXHU4ZmM1XHU5NjYzXHU5NzZkXHU3YjI1XHU4YWNmXHU5ODA4XHU5MTYyXHU1NmYzXHU1M2E4XHVmZmZkXHU5MDE3XHU1NDM5XHU1NzgyXHU1ZTI1XHU2M2E4XHU2YzM0XHU3MDhhXHU3NzYxXHU3YzhiXHU3ZmUwXHU4ODcwXHU5MDQyXHU5MTU0XHU5''@;'; put 'put ''MzEwXHU5MzE4XHU5NjhmXHU3NDVlXHU5YWM0XHU1ZDA3XHU1ZDY5XHU2NTcwXHU2N2EyXHU4ZGE4XHU5NmRiXHU2MzZlXHU2NzQ5XHU2OTE5XHU4M2M1XHU5ODE3XHU5NmMwXHU4OGZlXHU2Zjg0XHU2NDdhXHU1YmY4XHU0ZTE2XHU3MDJjXHU3NTVkXHU2NjJmXHU1MWM0XHU1MjM2XHU1MmUy''@;'; put 'put ''XHU1OWQzXHU1ZjgxXHU2MDI3XHU2MjEwXHU2NTNmXHU2NTc0XHU2NjFmXHU2Njc0XHU2OGYyXHU2ODE2XHU2YjYzXHU2ZTA1XHU3MjcyXHU3NTFmXHU3NmRiXHU3Y2JlXHU4MDU2XHU1OGYwXHU4OGZkXHU4OTdmXHU4YWEwXHU4YTkzXHU4YWNiXHU5MDFkXHU5MTkyXHU5NzUyXHU5NzU5XHU2''@;'; put 'put ''NTg5XHU3YTBlXHU4MTA2XHU5NmJiXHU1ZTJkXHU2MGRjXHU2MjFhXHU2NWE1XHU2NjE0XHU2NzkwXHU3N2YzXHU3YTRkXHU3YzRkXHU3ZTNlXHU4MTBhXHU4Y2FjXHU4ZDY0XHU4ZGUxXHU4ZTVmXHU3OGE5XHU1MjA3XHU2MmQ5XHU2M2E1XHU2NDQyXHU2Mjk4XHU4YTJkXHU3YTgzXHU3YmMw''@;'; put 'put ''XHU4YWFjXHU5NmVhXHU3ZDc2XHU4MjBjXHU4NzQ5XHU0ZWQ5XHU1MTQ4XHU1MzQzXHU1MzYwXHU1YmEzXHU1YzAyXHU1YzE2XHU1ZGRkXHU2MjI2XHU2MjQ3XHU2NGIwXHU2ODEzXHU2ODM0XHU2Y2M5XHU2ZDQ1XHU2ZDE3XHU2N2QzXHU2ZjVjXHU3MTRlXHU3MTdkXHU2NWNiXHU3YTdmXHU3''@;'; put 'put ''YmFkXHU3ZGRhXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTQ0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNDRdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE0NF1bRV1dPTM2ODY0K0UsTFszNjg2NCtFXT1CWzE0NF1bRV0pO2ZvcihCWzE0NV09Ilx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2U0YVx1N2ZhOFx1ODE3YVx1ODIxYlx1ODIzOVx1ODVhNlx1OGE2ZVx1OGNjZVx1OGRmNVx1OTA3OFx1OTA3N1x1OTJhZFx1OTI5MVx1OTU4M1x1OWJhZVx1NTI0ZFx1NTU4NFx1NmYzOFx1NzEzNlx1NTE2OFx1''@;'; put 'put ''Nzk4NVx1N2U1NVx1ODFiM1x1N2NjZVx1NTY0Y1x1NTg1MVx1NWNhOFx1NjNhYVx1NjZmZVx1NjZmZFx1Njk1YVx1NzJkOVx1NzU4Zlx1NzU4ZVx1NzkwZVx1Nzk1Nlx1NzlkZlx1N2M5N1x1N2QyMFx1N2Q0NFx1ODYwN1x1OGEzNFx1OTYzYlx1OTA2MVx1OWYyMFx1NTBlN1x1NTI3NVx1NTNj''@;'; put 'put ''Y1x1NTNlMlx1NTAwOVx1NTVhYVx1NThlZVx1NTk0Zlx1NzIzZFx1NWI4Ylx1NWM2NFx1NTMxZFx1NjBlM1x1NjBmM1x1NjM1Y1x1NjM4M1x1NjMzZlx1NjNiYlx1ZmZmZFx1NjRjZFx1NjVlOVx1NjZmOVx1NWRlM1x1NjljZFx1NjlmZFx1NmYxNVx1NzFlNVx1NGU4OVx1NzVlOVx1NzZmOFx1''@;'; put 'put ''N2E5M1x1N2NkZlx1N2RjZlx1N2Q5Y1x1ODA2MVx1ODM0OVx1ODM1OFx1ODQ2Y1x1ODRiY1x1ODVmYlx1ODhjNVx1OGQ3MFx1OTAwMVx1OTA2ZFx1OTM5N1x1OTcxY1x1OWExMlx1NTBjZlx1NTg5N1x1NjE4ZVx1ODFkM1x1ODUzNVx1OGQwOFx1OTAyMFx1NGZjM1x1NTA3NFx1NTI0N1x1NTM3''@;'; put 'put ''M1x1NjA2Zlx1NjM0OVx1Njc1Zlx1NmUyY1x1OGRiM1x1OTAxZlx1NGZkN1x1NWM1ZVx1OGNjYVx1NjVjZlx1N2Q5YVx1NTM1Mlx1ODg5Nlx1NTE3Nlx1NjNjM1x1NWI1OFx1NWI2Ylx1NWMwYVx1NjQwZFx1Njc1MVx1OTA1Y1x1NGVkNlx1NTkxYVx1NTkyYVx1NmM3MFx1OGE1MVx1NTUzZVx1''@;'; put 'put ''NTgxNVx1NTlhNVx1NjBmMFx1NjI1M1x1NjdjMVx1ODIzNVx1Njk1NVx1OTY0MFx1OTljNFx1OWEyOFx1NGY1M1x1NTgwNlx1NWJmZVx1ODAxMFx1NWNiMVx1NWUyZlx1NWY4NVx1NjAyMFx1NjE0Ylx1NjIzNFx1NjZmZlx1NmNmMFx1NmVkZVx1ODBjZVx1ODE3Zlx1ODJkNFx1ODg4Ylx1OGNi''@;'; put 'put ''OFx1OTAwMFx1OTAyZVx1OTY4YVx1OWVkYlx1OWJkYlx1NGVlM1x1NTNmMFx1NTkyN1x1N2IyY1x1OTE4ZFx1OTg0Y1x1OWRmOVx1NmVkZFx1NzAyN1x1NTM1M1x1NTU0NFx1NWI4NVx1NjI1OFx1NjI5ZVx1NjJkM1x1NmNhMlx1NmZlZlx1NzQyMlx1OGExN1x1OTQzOFx1NmZjMVx1OGFmZVx1''@;'; put 'put ''ODMzOFx1NTFlN1x1ODZmOFx1NTNlYVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0NV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTQ1XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNDVdW0VdXT0zNzEyMCtFLExbMzcxMjArRV09QlsxNDVdW0VdKTtmb3IoQlsxNDZd''@;'; put 'put ''PSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTUzZTlcdTRmNDZcdTkwNTRcdThmYjBcdTU5NmFcdTgxMzFcdTVkZmRcdTdhZWFcdThmYmZcdTY4ZGFcdThjMzdcdTcyZjhcdTljNDhcdTZhM2RcdThhYjBcdTRlMzlcdTUzNThcdTU2MDZc''@;'; put 'put ''dTU3NjZcdTYyYzVcdTYzYTJcdTY1ZTZcdTZiNGVcdTZkZTFcdTZlNWJcdTcwYWRcdTc3ZWRcdTdhZWZcdTdiYWFcdTdkYmJcdTgwM2RcdTgwYzZcdTg2Y2JcdThhOTVcdTkzNWJcdTU2ZTNcdTU4YzdcdTVmM2VcdTY1YWRcdTY2OTZcdTZhODBcdTZiYjVcdTc1MzdcdThhYzdcdTUwMjRcdTc3''@;'; put 'put ''ZTVcdTU3MzBcdTVmMWJcdTYwNjVcdTY2N2FcdTZjNjBcdTc1ZjRcdTdhMWFcdTdmNmVcdTgxZjRcdTg3MThcdTkwNDVcdTk5YjNcdTdiYzlcdTc1NWNcdTdhZjlcdTdiNTFcdTg0YzRcdWZmZmRcdTkwMTBcdTc5ZTlcdTdhOTJcdTgzMzZcdTVhZTFcdTc3NDBcdTRlMmRcdTRlZjJcdTViOTlc''@;'; put 'put ''dTVmZTBcdTYyYmRcdTY2M2NcdTY3ZjFcdTZjZThcdTg2NmJcdTg4NzdcdThhM2JcdTkxNGVcdTkyZjNcdTk5ZDBcdTZhMTdcdTcwMjZcdTczMmFcdTgyZTdcdTg0NTdcdThjYWZcdTRlMDFcdTUxNDZcdTUxY2JcdTU1OGJcdTViZjVcdTVlMTZcdTVlMzNcdTVlODFcdTVmMTRcdTVmMzVcdTVm''@;'; put 'put ''NmJcdTVmYjRcdTYxZjJcdTYzMTFcdTY2YTJcdTY3MWRcdTZmNmVcdTcyNTJcdTc1M2FcdTc3M2FcdTgwNzRcdTgxMzlcdTgxNzhcdTg3NzZcdThhYmZcdThhZGNcdThkODVcdThkZjNcdTkyOWFcdTk1NzdcdTk4MDJcdTljZTVcdTUyYzVcdTYzNTdcdTc2ZjRcdTY3MTVcdTZjODhcdTczY2Rc''@;'; put 'put ''dThjYzNcdTkzYWVcdTk2NzNcdTZkMjVcdTU4OWNcdTY5MGVcdTY5Y2NcdThmZmRcdTkzOWFcdTc1ZGJcdTkwMWFcdTU4NWFcdTY4MDJcdTYzYjRcdTY5ZmJcdTRmNDNcdTZmMmNcdTY3ZDhcdThmYmJcdTg1MjZcdTdkYjRcdTkzNTRcdTY5M2ZcdTZmNzBcdTU3NmFcdTU4ZjdcdTViMmNcdTdk''@;'; put 'put ''MmNcdTcyMmFcdTU0MGFcdTkxZTNcdTlkYjRcdTRlYWRcdTRmNGVcdTUwNWNcdTUwNzVcdTUyNDNcdThjOWVcdTU0NDhcdTU4MjRcdTViOWFcdTVlMWRcdTVlOTVcdTVlYWRcdTVlZjdcdTVmMWZcdTYwOGNcdTYyYjVcdTYzM2FcdTYzZDBcdTY4YWZcdTZjNDBcdTc4ODdcdTc5OGVcdTdhMGJc''@;'; put 'put ''dTdkZTBcdTgyNDdcdThhMDJcdThhZTZcdThlNDRcdTkwMTNcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNDZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0Nl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTQ2XVtFXV09MzczNzYrRSxMWzM3Mzc2K0VdPUJbMTQ2XVtF''@;'; put 'put ''XSk7Zm9yKEJbMTQ3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MGI4XHU5MTJkXHU5MWQ4XHU5ZjBlXHU2Y2U1XHU2NDU4XHU2NGUyXHU2NTc1XHU2ZWY0XHU3Njg0XHU3YjFiXHU5MDY5XHU5M2QxXHU2ZWJhXHU1NGYyXHU1ZmI5''@;'; put 'put ''XHU2NGE0XHU4ZjRkXHU4ZmVkXHU5MjQ0XHU1MTc4XHU1ODZiXHU1OTI5XHU1YzU1XHU1ZTk3XHU2ZGZiXHU3ZThmXHU3NTFjXHU4Y2JjXHU4ZWUyXHU5ODViXHU3MGI5XHU0ZjFkXHU2YmJmXHU2ZmIxXHU3NTMwXHU5NmZiXHU1MTRlXHU1NDEwXHU1ODM1XHU1ODU3XHU1OWFjXHU1YzYwXHU1''@;'; put 'put ''ZjkyXHU2NTk3XHU2NzVjXHU2ZTIxXHU3NjdiXHU4M2RmXHU4Y2VkXHU5MDE0XHU5MGZkXHU5MzRkXHU3ODI1XHU3ODNhXHU1MmFhXHU1ZWE2XHU1NzFmXHU1OTc0XHU2MDEyXHU1MDEyXHU1MTVhXHU1MWFjXHVmZmZkXHU1MWNkXHU1MjAwXHU1NTEwXHU1ODU0XHU1ODU4XHU1OTU3XHU1Yjk1''@;'; put 'put ''XHU1Y2Y2XHU1ZDhiXHU2MGJjXHU2Mjk1XHU2NDJkXHU2NzcxXHU2ODQzXHU2OGJjXHU2OGRmXHU3NmQ3XHU2ZGQ4XHU2ZTZmXHU2ZDliXHU3MDZmXHU3MWM4XHU1ZjUzXHU3NWQ4XHU3OTc3XHU3YjQ5XHU3YjU0XHU3YjUyXHU3Y2Q2XHU3ZDcxXHU1MjMwXHU4NDYzXHU4NTY5XHU4NWU0XHU4''@;'; put 'put ''YTBlXHU4YjA0XHU4YzQ2XHU4ZTBmXHU5MDAzXHU5MDBmXHU5NDE5XHU5Njc2XHU5ODJkXHU5YTMwXHU5NWQ4XHU1MGNkXHU1MmQ1XHU1NDBjXHU1ODAyXHU1YzBlXHU2MWE3XHU2NDllXHU2ZDFlXHU3N2IzXHU3YWU1XHU4MGY0XHU4NDA0XHU5MDUzXHU5Mjg1XHU1Y2UwXHU5ZDA3XHU1MzNm''@;'; put 'put ''XHU1Zjk3XHU1ZmIzXHU2ZDljXHU3Mjc5XHU3NzYzXHU3OWJmXHU3YmU0XHU2YmQyXHU3MmVjXHU4YWFkXHU2ODAzXHU2YTYxXHU1MWY4XHU3YTgxXHU2OTM0XHU1YzRhXHU5Y2Y2XHU4MmViXHU1YmM1XHU5MTQ5XHU3MDFlXHU1Njc4XHU1YzZmXHU2MGM3XHU2NTY2XHU2YzhjXHU4YzVhXHU5''@;'; put 'put ''MDQxXHU5ODEzXHU1NDUxXHU2NmM3XHU5MjBkXHU1OTQ4XHU5MGEzXHU1MTg1XHU0ZTRkXHU1MWVhXHU4NTk5XHU4YjBlXHU3MDU4XHU2MzdhXHU5MzRiXHU2OTYyXHU5OWI0XHU3ZTA0XHU3NTc3XHU1MzU3XHU2OTYwXHU4ZWRmXHU5NmUzXHU2YzVkXHU0ZThjXHU1YzNjXHU1ZjEwXHU4ZmU5''@;'; put 'put ''XHU1MzAyXHU4Y2QxXHU4MDg5XHU4Njc5XHU1ZWZmXHU2NWU1XHU0ZTczXHU1MTY1XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTQ3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNDddW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE0N11bRV1dPTM3NjMyK0UsTFszNzYz''@;'; put 'put ''MitFXT1CWzE0N11bRV0pO2ZvcihCWzE0OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTk4Mlx1NWMzZlx1OTdlZVx1NGVmYlx1NTk4YVx1NWZjZFx1OGE4ZFx1NmZlMVx1NzliMFx1Nzk2Mlx1NWJlN1x1ODQ3MVx1NzMyYlx1NzFi''@;'; put 'put ''MVx1NWU3NFx1NWZmNVx1NjM3Ylx1NjQ5YVx1NzFjM1x1N2M5OFx1NGU0M1x1NWVmY1x1NGU0Ylx1NTdkY1x1NTZhMlx1NjBhOVx1NmZjM1x1N2QwZFx1ODBmZFx1ODEzM1x1ODFiZlx1OGZiMlx1ODk5N1x1ODZhNFx1NWRmNFx1NjI4YVx1NjRhZFx1ODk4N1x1Njc3N1x1NmNlMlx1NmQzZVx1''@;'; put 'put ''NzQzNlx1NzgzNFx1NWE0Nlx1N2Y3NVx1ODJhZFx1OTlhY1x1NGZmM1x1NWVjM1x1NjJkZFx1NjM5Mlx1NjU1N1x1Njc2Zlx1NzZjM1x1NzI0Y1x1ODBjY1x1ODBiYVx1OGYyOVx1OTE0ZFx1NTAwZFx1NTdmOVx1NWE5Mlx1Njg4NVx1ZmZmZFx1Njk3M1x1NzE2NFx1NzJmZFx1OGNiN1x1NThm''@;'; put 'put ''Mlx1OGNlMFx1OTY2YVx1OTAxOVx1ODc3Zlx1NzllNFx1NzdlN1x1ODQyOVx1NGYyZlx1NTI2NVx1NTM1YVx1NjJjZFx1NjdjZlx1NmNjYVx1NzY3ZFx1N2I5NFx1N2M5NVx1ODIzNlx1ODU4NFx1OGZlYlx1NjZkZFx1NmYyMFx1NzIwNlx1N2UxYlx1ODNhYlx1OTljMVx1OWVhNlx1NTFmZFx1''@;'; put 'put ''N2JiMVx1Nzg3Mlx1N2JiOFx1ODA4N1x1N2I0OFx1NmFlOFx1NWU2MVx1ODA4Y1x1NzU1MVx1NzU2MFx1NTE2Ylx1OTI2Mlx1NmU4Y1x1NzY3YVx1OTE5N1x1OWFlYVx1NGYxMFx1N2Y3MFx1NjI5Y1x1N2I0Zlx1OTVhNVx1OWNlOVx1NTY3YVx1NTg1OVx1ODZlNFx1OTZiY1x1NGYzNFx1NTIy''@;'; put 'put ''NFx1NTM0YVx1NTNjZFx1NTNkYlx1NWUwNlx1NjQyY1x1NjU5MVx1Njc3Zlx1NmMzZVx1NmM0ZVx1NzI0OFx1NzJhZlx1NzNlZFx1NzU1NFx1N2U0MVx1ODIyY1x1ODVlOVx1OGNhOVx1N2JjNFx1OTFjNlx1NzE2OVx1OTgxMlx1OThlZlx1NjMzZFx1NjY2OVx1NzU2YVx1NzZlNFx1NzhkMFx1''@;'; put 'put ''ODU0M1x1ODZlZVx1NTMyYVx1NTM1MVx1NTQyNlx1NTk4M1x1NWU4N1x1NWY3Y1x1NjBiMlx1NjI0OVx1NjI3OVx1NjJhYlx1NjU5MFx1NmJkNFx1NmNjY1x1NzViMlx1NzZhZVx1Nzg5MVx1NzlkOFx1N2RjYlx1N2Y3N1x1ODBhNVx1ODhhYlx1OGFiOVx1OGNiYlx1OTA3Zlx1OTc1ZVx1OThk''@;'; put 'put ''Ylx1NmEwYlx1N2MzOFx1NTA5OVx1NWMzZVx1NWZhZVx1Njc4N1x1NmJkOFx1NzQzNVx1NzcwOVx1N2Y4ZVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0OF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTQ4XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNDhdW0VdXT0z''@;'; put 'put ''Nzg4OCtFLExbMzc4ODgrRV09QlsxNDhdW0VdKTtmb3IoQlsxNDldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlmM2JcdTY3Y2FcdTdhMTdcdTUzMzlcdTc1OGJcdTlhZWRcdTVmNjZcdTgxOWRcdTgzZjFcdTgwOThcdTVmM2NcdTVm''@;'; put 'put ''YzVcdTc1NjJcdTdiNDZcdTkwM2NcdTY4NjdcdTU5ZWJcdTVhOWJcdTdkMTBcdTc2N2VcdThiMmNcdTRmZjVcdTVmNmFcdTZhMTlcdTZjMzdcdTZmMDJcdTc0ZTJcdTc5NjhcdTg4NjhcdThhNTVcdThjNzlcdTVlZGZcdTYzY2ZcdTc1YzVcdTc5ZDJcdTgyZDdcdTkzMjhcdTkyZjJcdTg0OWNc''@;'; put 'put ''dTg2ZWRcdTljMmRcdTU0YzFcdTVmNmNcdTY1OGNcdTZkNWNcdTcwMTVcdThjYTdcdThjZDNcdTk4M2JcdTY1NGZcdTc0ZjZcdTRlMGRcdTRlZDhcdTU3ZTBcdTU5MmJcdTVhNjZcdTViY2NcdTUxYThcdTVlMDNcdTVlOWNcdTYwMTZcdTYyNzZcdTY1NzdcdWZmZmRcdTY1YTdcdTY2NmVcdTZk''@;'; put 'put ''NmVcdTcyMzZcdTdiMjZcdTgxNTBcdTgxOWFcdTgyOTlcdThiNWNcdThjYTBcdThjZTZcdThkNzRcdTk2MWNcdTk2NDRcdTRmYWVcdTY0YWJcdTZiNjZcdTgyMWVcdTg0NjFcdTg1NmFcdTkwZThcdTVjMDFcdTY5NTNcdTk4YThcdTg0N2FcdTg1NTdcdTRmMGZcdTUyNmZcdTVmYTlcdTVlNDVc''@;'; put 'put ''dTY3MGRcdTc5OGZcdTgxNzlcdTg5MDdcdTg5ODZcdTZkZjVcdTVmMTdcdTYyNTVcdTZjYjhcdTRlY2ZcdTcyNjlcdTliOTJcdTUyMDZcdTU0M2JcdTU2NzRcdTU4YjNcdTYxYTRcdTYyNmVcdTcxMWFcdTU5NmVcdTdjODlcdTdjZGVcdTdkMWJcdTk2ZjBcdTY1ODdcdTgwNWVcdTRlMTlcdTRm''@;'; put 'put ''NzVcdTUxNzVcdTU4NDBcdTVlNjNcdTVlNzNcdTVmMGFcdTY3YzRcdTRlMjZcdTg1M2RcdTk1ODlcdTk2NWJcdTdjNzNcdTk4MDFcdTUwZmJcdTU4YzFcdTc2NTZcdTc4YTdcdTUyMjVcdTc3YTVcdTg1MTFcdTdiODZcdTUwNGZcdTU5MDlcdTcyNDdcdTdiYzdcdTdkZThcdThmYmFcdThmZDRc''@;'; put 'put ''dTkwNGRcdTRmYmZcdTUyYzlcdTVhMjlcdTVmMDFcdTk3YWRcdTRmZGRcdTgyMTdcdTkyZWFcdTU3MDNcdTYzNTVcdTZiNjlcdTc1MmJcdTg4ZGNcdThmMTRcdTdhNDJcdTUyZGZcdTU4OTNcdTYxNTVcdTYyMGFcdTY2YWVcdTZiY2RcdTdjM2ZcdTgzZTlcdTUwMjNcdTRmZjhcdTUzMDVcdTU0''@;'; put 'put ''NDZcdTU4MzFcdTU5NDlcdTViOWRcdTVjZjBcdTVjZWZcdTVkMjlcdTVlOTZcdTYyYjFcdTYzNjdcdTY1M2VcdTY1YjlcdTY3MGJcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNDldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0OV1bRV0uY2hhckNvZGVBdCgwKSYmKG1l''@;'; put 'put ''W0JbMTQ5XVtFXV09MzgxNDQrRSxMWzM4MTQ0K0VdPUJbMTQ5XVtFXSk7Zm9yKEJbMTUwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2Y2Q1XHU2Y2UxXHU3MGY5XHU3ODMyXHU3ZTJiXHU4MGRlXHU4MmIzXHU4NDBjXHU4NGVjXHU4''@;'; put 'put ''NzAyXHU4OTEyXHU4YTJhXHU4YzRhXHU5MGE2XHU5MmQyXHU5OGZkXHU5Y2YzXHU5ZDZjXHU0ZTRmXHU0ZWExXHU1MDhkXHU1MjU2XHU1NzRhXHU1OWE4XHU1ZTNkXHU1ZmQ4XHU1ZmQ5XHU2MjNmXHU2NmI0XHU2NzFiXHU2N2QwXHU2OGQyXHU1MTkyXHU3ZDIxXHU4MGFhXHU4MWE4XHU4YjAw''@;'; put 'put ''XHU4YzhjXHU4Y2JmXHU5MjdlXHU5NjMyXHU1NDIwXHU5ODJjXHU1MzE3XHU1MGQ1XHU1MzVjXHU1OGE4XHU2NGIyXHU2NzM0XHU3MjY3XHU3NzY2XHU3YTQ2XHU5MWU2XHU1MmMzXHU2Y2ExXHU2Yjg2XHU1ODAwXHU1ZTRjXHU1OTU0XHU2NzJjXHU3ZmZiXHU1MWUxXHU3NmM2XHVmZmZkXHU2''@;'; put 'put ''NDY5XHU3OGU4XHU5YjU0XHU5ZWJiXHU1N2NiXHU1OWI5XHU2NjI3XHU2NzlhXHU2YmNlXHU1NGU5XHU2OWQ5XHU1ZTU1XHU4MTljXHU2Nzk1XHU5YmFhXHU2N2ZlXHU5YzUyXHU2ODVkXHU0ZWE2XHU0ZmUzXHU1M2M4XHU2MmI5XHU2NzJiXHU2Y2FiXHU4ZmM0XHU0ZmFkXHU3ZTZkXHU5ZWJm''@;'; put 'put ''XHU0ZTA3XHU2MTYyXHU2ZTgwXHU2ZjJiXHU4NTEzXHU1NDczXHU2NzJhXHU5YjQ1XHU1ZGYzXHU3Yjk1XHU1Y2FjXHU1YmM2XHU4NzFjXHU2ZTRhXHU4NGQxXHU3YTE0XHU4MTA4XHU1OTk5XHU3YzhkXHU2YzExXHU3NzIwXHU1MmQ5XHU1OTIyXHU3MTIxXHU3MjVmXHU3N2RiXHU5NzI3XHU5''@;'; put 'put ''ZDYxXHU2OTBiXHU1YTdmXHU1YTE4XHU1MWE1XHU1NDBkXHU1NDdkXHU2NjBlXHU3NmRmXHU4ZmY3XHU5Mjk4XHU5Y2Y0XHU1OWVhXHU3MjVkXHU2ZWM1XHU1MTRkXHU2OGM5XHU3ZGJmXHU3ZGVjXHU5NzYyXHU5ZWJhXHU2NDc4XHU2YTIxXHU4MzAyXHU1OTg0XHU1YjVmXHU2YmRiXHU3MzFi''@;'; put 'put ''XHU3NmYyXHU3ZGIyXHU4MDE3XHU4NDk5XHU1MTMyXHU2NzI4XHU5ZWQ5XHU3NmVlXHU2NzYyXHU1MmZmXHU5OTA1XHU1YzI0XHU2MjNiXHU3YzdlXHU4Y2IwXHU1NTRmXHU2MGI2XHU3ZDBiXHU5NTgwXHU1MzAxXHU0ZTVmXHU1MWI2XHU1OTFjXHU3MjNhXHU4MDM2XHU5MWNlXHU1ZjI1XHU3''@;'; put 'put ''N2UyXHU1Mzg0XHU1Zjc5XHU3ZDA0XHU4NWFjXHU4YTMzXHU4ZThkXHU5NzU2XHU2N2YzXHU4NWFlXHU5NDUzXHU2MTA5XHU2MTA4XHU2Y2I5XHU3NjUyXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTUwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNTBdW0VdLmNoYXJD''@;'; put 'put ''b2RlQXQoMCkmJihtZVtCWzE1MF1bRV1dPTM4NDAwK0UsTFszODQwMCtFXT1CWzE1MF1bRV0pO2ZvcihCWzE1MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGFlZFx1OGYzOFx1NTUyZlx1NGY1MVx1NTEyYVx1NTJjN1x1NTNjYlx1''@;'; put 'put ''NWJhNVx1NWU3ZFx1NjBhMFx1NjE4Mlx1NjNkNlx1NjcwOVx1NjdkYVx1NmU2N1x1NmQ4Y1x1NzMzNlx1NzMzN1x1NzUzMVx1Nzk1MFx1ODhkNVx1OGE5OFx1OTA0YVx1OTA5MVx1OTBmNVx1OTZjNFx1ODc4ZFx1NTkxNVx1NGU4OFx1NGY1OVx1NGUwZVx1OGE4OVx1OGYzZlx1OTgxMFx1NTBh''@;'; put 'put ''ZFx1NWU3Y1x1NTk5Nlx1NWJiOVx1NWViOFx1NjNkYVx1NjNmYVx1NjRjMVx1NjZkY1x1Njk0YVx1NjlkOFx1NmQwYlx1NmViNlx1NzE5NFx1NzUyOFx1N2FhZlx1N2Y4YVx1ODAwMFx1ODQ0OVx1ODRjOVx1ODk4MVx1OGIyMVx1OGUwYVx1OTA2NVx1OTY3ZFx1OTkwYVx1NjE3ZVx1NjI5MVx1''@;'; put 'put ''NmIzMlx1ZmZmZFx1NmM4M1x1NmQ3NFx1N2ZjY1x1N2ZmY1x1NmRjMFx1N2Y4NVx1ODdiYVx1ODhmOFx1Njc2NVx1ODNiMVx1OTgzY1x1OTZmN1x1NmQxYlx1N2Q2MVx1ODQzZFx1OTE2YVx1NGU3MVx1NTM3NVx1NWQ1MFx1NmIwNFx1NmZlYlx1ODVjZFx1ODYyZFx1ODlhN1x1NTIyOVx1NTQw''@;'; put 'put ''Zlx1NWM2NVx1Njc0ZVx1NjhhOFx1NzQwNlx1NzQ4M1x1NzVlMlx1ODhjZlx1ODhlMVx1OTFjY1x1OTZlMlx1OTY3OFx1NWY4Ylx1NzM4N1x1N2FjYlx1ODQ0ZVx1NjNhMFx1NzU2NVx1NTI4OVx1NmQ0MVx1NmU5Y1x1NzQwOVx1NzU1OVx1Nzg2Ylx1N2M5Mlx1OTY4Nlx1N2FkY1x1OWY4ZFx1''@;'; put 'put ''NGZiNlx1NjE2ZVx1NjVjNVx1ODY1Y1x1NGU4Nlx1NGVhZVx1NTBkYVx1NGUyMVx1NTFjY1x1NWJlZVx1NjU5OVx1Njg4MVx1NmRiY1x1NzMxZlx1NzY0Mlx1NzdhZFx1N2ExY1x1N2NlN1x1ODI2Zlx1OGFkMlx1OTA3Y1x1OTFjZlx1OTY3NVx1OTgxOFx1NTI5Ylx1N2RkMVx1NTAyYlx1NTM5''@;'; put 'put ''OFx1Njc5N1x1NmRjYlx1NzFkMFx1NzQzM1x1ODFlOFx1OGYyYVx1OTZhM1x1OWM1N1x1OWU5Zlx1NzQ2MFx1NTg0MVx1NmQ5OVx1N2QyZlx1OTg1ZVx1NGVlNFx1NGYzNlx1NGY4Ylx1NTFiN1x1NTJiMVx1NWRiYVx1NjAxY1x1NzNiMlx1NzkzY1x1ODJkM1x1OTIzNFx1OTZiN1x1OTZmNlx1''@;'; put 'put ''OTcwYVx1OWU5N1x1OWY2Mlx1NjZhNlx1NmI3NFx1NTIxN1x1NTJhM1x1NzBjOFx1ODhjMlx1NWVjOVx1NjA0Ylx1NjE5MFx1NmYyM1x1NzE0OVx1N2MzZVx1N2RmNFx1ODA2Zlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1MV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJb''@;'; put 'put ''MTUxXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNTFdW0VdXT0zODY1NitFLExbMzg2NTYrRV09QlsxNTFdW0VdKTtmb3IoQlsxNTJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg0ZWVcdTkwMjNcdTkzMmNcdTU0NDJcdTliNmZc''@;'; put 'put ''dTZhZDNcdTcwODlcdThjYzJcdThkZWZcdTk3MzJcdTUyYjRcdTVhNDFcdTVlY2FcdTVmMDRcdTY3MTdcdTY5N2NcdTY5OTRcdTZkNmFcdTZmMGZcdTcyNjJcdTcyZmNcdTdiZWRcdTgwMDFcdTgwN2VcdTg3NGJcdTkwY2VcdTUxNmRcdTllOTNcdTc5ODRcdTgwOGJcdTkzMzJcdThhZDZcdTUw''@;'; put 'put ''MmRcdTU0OGNcdThhNzFcdTZiNmFcdThjYzRcdTgxMDdcdTYwZDFcdTY3YTBcdTlkZjJcdTRlOTlcdTRlOThcdTljMTBcdThhNmJcdTg1YzFcdTg1NjhcdTY5MDBcdTZlN2VcdTc4OTdcdTgxNTVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVmMGNcdTRlMTBcdTRlMTVcdTRlMmFcdTRlMzFcdTRlMzZcdTRlM2NcdTRlM2ZcdTRlNDJcdTRlNTZcdTRlNThcdTRlODJcdTRlODVcdThjNmJcdTRlOGFcdTgyMTJcdTVmMGRcdTRlOGVcdTRlOWVcdTRlOWZc''@;'; put 'put ''dTRlYTBcdTRlYTJcdTRlYjBcdTRlYjNcdTRlYjZcdTRlY2VcdTRlY2RcdTRlYzRcdTRlYzZcdTRlYzJcdTRlZDdcdTRlZGVcdTRlZWRcdTRlZGZcdTRlZjdcdTRmMDlcdTRmNWFcdTRmMzBcdTRmNWJcdTRmNWRcdTRmNTdcdTRmNDdcdTRmNzZcdTRmODhcdTRmOGZcdTRmOThcdTRmN2JcdTRm''@;'; put 'put ''NjlcdTRmNzBcdTRmOTFcdTRmNmZcdTRmODZcdTRmOTZcdTUxMThcdTRmZDRcdTRmZGZcdTRmY2VcdTRmZDhcdTRmZGJcdTRmZDFcdTRmZGFcdTRmZDBcdTRmZTRcdTRmZTVcdTUwMWFcdTUwMjhcdTUwMTRcdTUwMmFcdTUwMjVcdTUwMDVcdTRmMWNcdTRmZjZcdTUwMjFcdTUwMjlcdTUwMmNc''@;'; put 'put ''dTRmZmVcdTRmZWZcdTUwMTFcdTUwMDZcdTUwNDNcdTUwNDdcdTY3MDNcdTUwNTVcdTUwNTBcdTUwNDhcdTUwNWFcdTUwNTZcdTUwNmNcdTUwNzhcdTUwODBcdTUwOWFcdTUwODVcdTUwYjRcdTUwYjJcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNTJdLmxlbmd0aDsr''@;'; put 'put ''K0UpNjU1MzMhPT1CWzE1Ml1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTUyXVtFXV09Mzg5MTIrRSxMWzM4OTEyK0VdPUJbMTUyXVtFXSk7Zm9yKEJbMTUzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MGM5XHU1MGNhXHU1MGIz''@;'; put 'put ''XHU1MGMyXHU1MGQ2XHU1MGRlXHU1MGU1XHU1MGVkXHU1MGUzXHU1MGVlXHU1MGY5XHU1MGY1XHU1MTA5XHU1MTAxXHU1MTAyXHU1MTE2XHU1MTE1XHU1MTE0XHU1MTFhXHU1MTIxXHU1MTNhXHU1MTM3XHU1MTNjXHU1MTNiXHU1MTNmXHU1MTQwXHU1MTUyXHU1MTRjXHU1MTU0XHU1MTYyXHU3''@;'; put 'put ''YWY4XHU1MTY5XHU1MTZhXHU1MTZlXHU1MTgwXHU1MTgyXHU1NmQ4XHU1MThjXHU1MTg5XHU1MThmXHU1MTkxXHU1MTkzXHU1MTk1XHU1MTk2XHU1MWE0XHU1MWE2XHU1MWEyXHU1MWE5XHU1MWFhXHU1MWFiXHU1MWIzXHU1MWIxXHU1MWIyXHU1MWIwXHU1MWI1XHU1MWJkXHU1MWM1XHU1MWM5''@;'; put 'put ''XHU1MWRiXHU1MWUwXHU4NjU1XHU1MWU5XHU1MWVkXHVmZmZkXHU1MWYwXHU1MWY1XHU1MWZlXHU1MjA0XHU1MjBiXHU1MjE0XHU1MjBlXHU1MjI3XHU1MjJhXHU1MjJlXHU1MjMzXHU1MjM5XHU1MjRmXHU1MjQ0XHU1MjRiXHU1MjRjXHU1MjVlXHU1MjU0XHU1MjZhXHU1Mjc0XHU1MjY5XHU1''@;'; put 'put ''MjczXHU1MjdmXHU1MjdkXHU1MjhkXHU1Mjk0XHU1MjkyXHU1MjcxXHU1Mjg4XHU1MjkxXHU4ZmE4XHU4ZmE3XHU1MmFjXHU1MmFkXHU1MmJjXHU1MmI1XHU1MmMxXHU1MmNkXHU1MmQ3XHU1MmRlXHU1MmUzXHU1MmU2XHU5OGVkXHU1MmUwXHU1MmYzXHU1MmY1XHU1MmY4XHU1MmY5XHU1MzA2''@;'; put 'put ''XHU1MzA4XHU3NTM4XHU1MzBkXHU1MzEwXHU1MzBmXHU1MzE1XHU1MzFhXHU1MzIzXHU1MzJmXHU1MzMxXHU1MzMzXHU1MzM4XHU1MzQwXHU1MzQ2XHU1MzQ1XHU0ZTE3XHU1MzQ5XHU1MzRkXHU1MWQ2XHU1MzVlXHU1MzY5XHU1MzZlXHU1OTE4XHU1MzdiXHU1Mzc3XHU1MzgyXHU1Mzk2XHU1''@;'; put 'put ''M2EwXHU1M2E2XHU1M2E1XHU1M2FlXHU1M2IwXHU1M2I2XHU1M2MzXHU3YzEyXHU5NmQ5XHU1M2RmXHU2NmZjXHU3MWVlXHU1M2VlXHU1M2U4XHU1M2VkXHU1M2ZhXHU1NDAxXHU1NDNkXHU1NDQwXHU1NDJjXHU1NDJkXHU1NDNjXHU1NDJlXHU1NDM2XHU1NDI5XHU1NDFkXHU1NDRlXHU1NDhm''@;'; put 'put ''XHU1NDc1XHU1NDhlXHU1NDVmXHU1NDcxXHU1NDc3XHU1NDcwXHU1NDkyXHU1NDdiXHU1NDgwXHU1NDc2XHU1NDg0XHU1NDkwXHU1NDg2XHU1NGM3XHU1NGEyXHU1NGI4XHU1NGE1XHU1NGFjXHU1NGM0XHU1NGM4XHU1NGE4XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJb''@;'; put 'put ''MTUzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNTNdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE1M11bRV1dPTM5MTY4K0UsTFszOTE2OCtFXT1CWzE1M11bRV0pO2ZvcihCWzE1NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTRh''@;'; put 'put ''Ylx1NTRjMlx1NTRhNFx1NTRiZVx1NTRiY1x1NTRkOFx1NTRlNVx1NTRlNlx1NTUwZlx1NTUxNFx1NTRmZFx1NTRlZVx1NTRlZFx1NTRmYVx1NTRlMlx1NTUzOVx1NTU0MFx1NTU2M1x1NTU0Y1x1NTUyZVx1NTU1Y1x1NTU0NVx1NTU1Nlx1NTU1N1x1NTUzOFx1NTUzM1x1NTU1ZFx1NTU5OVx1''@;'; put 'put ''NTU4MFx1NTRhZlx1NTU4YVx1NTU5Zlx1NTU3Ylx1NTU3ZVx1NTU5OFx1NTU5ZVx1NTVhZVx1NTU3Y1x1NTU4M1x1NTVhOVx1NTU4N1x1NTVhOFx1NTVkYVx1NTVjNVx1NTVkZlx1NTVjNFx1NTVkY1x1NTVlNFx1NTVkNFx1NTYxNFx1NTVmN1x1NTYxNlx1NTVmZVx1NTVmZFx1NTYxYlx1NTVm''@;'; put 'put ''OVx1NTY0ZVx1NTY1MFx1NzFkZlx1NTYzNFx1NTYzNlx1NTYzMlx1NTYzOFx1ZmZmZFx1NTY2Ylx1NTY2NFx1NTYyZlx1NTY2Y1x1NTY2YVx1NTY4Nlx1NTY4MFx1NTY4YVx1NTZhMFx1NTY5NFx1NTY4Zlx1NTZhNVx1NTZhZVx1NTZiNlx1NTZiNFx1NTZjMlx1NTZiY1x1NTZjMVx1NTZjM1x1''@;'; put 'put ''NTZjMFx1NTZjOFx1NTZjZVx1NTZkMVx1NTZkM1x1NTZkN1x1NTZlZVx1NTZmOVx1NTcwMFx1NTZmZlx1NTcwNFx1NTcwOVx1NTcwOFx1NTcwYlx1NTcwZFx1NTcxM1x1NTcxOFx1NTcxNlx1NTVjN1x1NTcxY1x1NTcyNlx1NTczN1x1NTczOFx1NTc0ZVx1NTczYlx1NTc0MFx1NTc0Zlx1NTc2''@;'; put 'put ''OVx1NTdjMFx1NTc4OFx1NTc2MVx1NTc3Zlx1NTc4OVx1NTc5M1x1NTdhMFx1NTdiM1x1NTdhNFx1NTdhYVx1NTdiMFx1NTdjM1x1NTdjNlx1NTdkNFx1NTdkMlx1NTdkM1x1NTgwYVx1NTdkNlx1NTdlM1x1NTgwYlx1NTgxOVx1NTgxZFx1NTg3Mlx1NTgyMVx1NTg2Mlx1NTg0Ylx1NTg3MFx1''@;'; put 'put ''NmJjMFx1NTg1Mlx1NTgzZFx1NTg3OVx1NTg4NVx1NThiOVx1NTg5Zlx1NThhYlx1NThiYVx1NThkZVx1NThiYlx1NThiOFx1NThhZVx1NThjNVx1NThkM1x1NThkMVx1NThkN1x1NThkOVx1NThkOFx1NThlNVx1NThkY1x1NThlNFx1NThkZlx1NThlZlx1NThmYVx1NThmOVx1NThmYlx1NThm''@;'; put 'put ''Y1x1NThmZFx1NTkwMlx1NTkwYVx1NTkxMFx1NTkxYlx1NjhhNlx1NTkyNVx1NTkyY1x1NTkyZFx1NTkzMlx1NTkzOFx1NTkzZVx1N2FkMlx1NTk1NVx1NTk1MFx1NTk0ZVx1NTk1YVx1NTk1OFx1NTk2Mlx1NTk2MFx1NTk2N1x1NTk2Y1x1NTk2OVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQo''@;'; put 'put ''IiIpLEU9MDtFIT1CWzE1NF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTU0XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNTRdW0VdXT0zOTQyNCtFLExbMzk0MjQrRV09QlsxNTRdW0VdKTtmb3IoQlsxNTVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdTU5NzhcdTU5ODFcdTU5OWRcdTRmNWVcdTRmYWJcdTU5YTNcdTU5YjJcdTU5YzZcdTU5ZThcdTU5ZGNcdTU5OGRcdTU5ZDlcdTU5ZGFcdTVhMjVcdTVhMWZcdTVhMTFcdTVhMWNcdTVhMDlcdTVhMWFcdTVhNDBcdTVhNmNcdTVhNDlcdTVhMzVcdTVhMzZcdTVhNjJcdTVhNmFc''@;'; put 'put ''dTVhOWFcdTVhYmNcdTVhYmVcdTVhY2JcdTVhYzJcdTVhYmRcdTVhZTNcdTVhZDdcdTVhZTZcdTVhZTlcdTVhZDZcdTVhZmFcdTVhZmJcdTViMGNcdTViMGJcdTViMTZcdTViMzJcdTVhZDBcdTViMmFcdTViMzZcdTViM2VcdTViNDNcdTViNDVcdTViNDBcdTViNTFcdTViNTVcdTViNWFcdTVi''@;'; put 'put ''NWJcdTViNjVcdTViNjlcdTViNzBcdTViNzNcdTViNzVcdTViNzhcdTY1ODhcdTViN2FcdTViODBcdWZmZmRcdTViODNcdTViYTZcdTViYjhcdTViYzNcdTViYzdcdTViYzlcdTViZDRcdTViZDBcdTViZTRcdTViZTZcdTViZTJcdTViZGVcdTViZTVcdTViZWJcdTViZjBcdTViZjZcdTViZjNc''@;'; put 'put ''dTVjMDVcdTVjMDdcdTVjMDhcdTVjMGRcdTVjMTNcdTVjMjBcdTVjMjJcdTVjMjhcdTVjMzhcdTVjMzlcdTVjNDFcdTVjNDZcdTVjNGVcdTVjNTNcdTVjNTBcdTVjNGZcdTViNzFcdTVjNmNcdTVjNmVcdTRlNjJcdTVjNzZcdTVjNzlcdTVjOGNcdTVjOTFcdTVjOTRcdTU5OWJcdTVjYWJcdTVj''@;'; put 'put ''YmJcdTVjYjZcdTVjYmNcdTVjYjdcdTVjYzVcdTVjYmVcdTVjYzdcdTVjZDlcdTVjZTlcdTVjZmRcdTVjZmFcdTVjZWRcdTVkOGNcdTVjZWFcdTVkMGJcdTVkMTVcdTVkMTdcdTVkNWNcdTVkMWZcdTVkMWJcdTVkMTFcdTVkMTRcdTVkMjJcdTVkMWFcdTVkMTlcdTVkMThcdTVkNGNcdTVkNTJc''@;'; put 'put ''dTVkNGVcdTVkNGJcdTVkNmNcdTVkNzNcdTVkNzZcdTVkODdcdTVkODRcdTVkODJcdTVkYTJcdTVkOWRcdTVkYWNcdTVkYWVcdTVkYmRcdTVkOTBcdTVkYjdcdTVkYmNcdTVkYzlcdTVkY2RcdTVkZDNcdTVkZDJcdTVkZDZcdTVkZGJcdTVkZWJcdTVkZjJcdTVkZjVcdTVlMGJcdTVlMWFcdTVl''@;'; put 'put ''MTlcdTVlMTFcdTVlMWJcdTVlMzZcdTVlMzdcdTVlNDRcdTVlNDNcdTVlNDBcdTVlNGVcdTVlNTdcdTVlNTRcdTVlNWZcdTVlNjJcdTVlNjRcdTVlNDdcdTVlNzVcdTVlNzZcdTVlN2FcdTllYmNcdTVlN2ZcdTVlYTBcdTVlYzFcdTVlYzJcdTVlYzhcdTVlZDBcdTVlY2ZcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNTVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1NV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTU1XVtFXV09Mzk2ODArRSxMWzM5NjgwK0VdPUJbMTU1XVtFXSk7Zm9yKEJbMTU2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZWQ2XHU1ZWUzXHU1ZWRkXHU1ZWRhXHU1ZWRiXHU1ZWUyXHU1ZWUxXHU1ZWU4XHU1ZWU5XHU1ZWVjXHU1ZWYxXHU1ZWYzXHU1ZWYwXHU1ZWY0XHU1ZWY4XHU1ZWZlXHU1ZjAzXHU1ZjA5XHU1ZjVkXHU1ZjVjXHU1ZjBiXHU1ZjExXHU1ZjE2XHU1ZjI5''@;'; put 'put ''XHU1ZjJkXHU1ZjM4XHU1ZjQxXHU1ZjQ4XHU1ZjRjXHU1ZjRlXHU1ZjJmXHU1ZjUxXHU1ZjU2XHU1ZjU3XHU1ZjU5XHU1ZjYxXHU1ZjZkXHU1ZjczXHU1Zjc3XHU1ZjgzXHU1ZjgyXHU1ZjdmXHU1ZjhhXHU1Zjg4XHU1ZjkxXHU1Zjg3XHU1ZjllXHU1Zjk5XHU1Zjk4XHU1ZmEwXHU1ZmE4XHU1''@;'; put 'put ''ZmFkXHU1ZmJjXHU1ZmQ2XHU1ZmZiXHU1ZmU0XHU1ZmY4XHU1ZmYxXHU1ZmRkXHU2MGIzXHU1ZmZmXHU2MDIxXHU2MDYwXHVmZmZkXHU2MDE5XHU2MDEwXHU2MDI5XHU2MDBlXHU2MDMxXHU2MDFiXHU2MDE1XHU2MDJiXHU2MDI2XHU2MDBmXHU2MDNhXHU2MDVhXHU2MDQxXHU2MDZhXHU2MDc3''@;'; put 'put ''XHU2MDVmXHU2MDRhXHU2MDQ2XHU2MDRkXHU2MDYzXHU2MDQzXHU2MDY0XHU2MDQyXHU2MDZjXHU2MDZiXHU2MDU5XHU2MDgxXHU2MDhkXHU2MGU3XHU2MDgzXHU2MDlhXHU2MDg0XHU2MDliXHU2MDk2XHU2MDk3XHU2MDkyXHU2MGE3XHU2MDhiXHU2MGUxXHU2MGI4XHU2MGUwXHU2MGQzXHU2''@;'; put 'put ''MGI0XHU1ZmYwXHU2MGJkXHU2MGM2XHU2MGI1XHU2MGQ4XHU2MTRkXHU2MTE1XHU2MTA2XHU2MGY2XHU2MGY3XHU2MTAwXHU2MGY0XHU2MGZhXHU2MTAzXHU2MTIxXHU2MGZiXHU2MGYxXHU2MTBkXHU2MTBlXHU2MTQ3XHU2MTNlXHU2MTI4XHU2MTI3XHU2MTRhXHU2MTNmXHU2MTNjXHU2MTJj''@;'; put 'put ''XHU2MTM0XHU2MTNkXHU2MTQyXHU2MTQ0XHU2MTczXHU2MTc3XHU2MTU4XHU2MTU5XHU2MTVhXHU2MTZiXHU2MTc0XHU2MTZmXHU2MTY1XHU2MTcxXHU2MTVmXHU2MTVkXHU2MTUzXHU2MTc1XHU2MTk5XHU2MTk2XHU2MTg3XHU2MWFjXHU2MTk0XHU2MTlhXHU2MThhXHU2MTkxXHU2MWFiXHU2''@;'; put 'put ''MWFlXHU2MWNjXHU2MWNhXHU2MWM5XHU2MWY3XHU2MWM4XHU2MWMzXHU2MWM2XHU2MWJhXHU2MWNiXHU3Zjc5XHU2MWNkXHU2MWU2XHU2MWUzXHU2MWY2XHU2MWZhXHU2MWY0XHU2MWZmXHU2MWZkXHU2MWZjXHU2MWZlXHU2MjAwXHU2MjA4XHU2MjA5XHU2MjBkXHU2MjBjXHU2MjE0XHU2MjFi''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTU2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNTZdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE1Nl1bRV1dPTM5OTM2K0UsTFszOTkzNitFXT1CWzE1Nl1bRV0pO2ZvcihCWzE1N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjIxZVx1NjIyMVx1NjIyYVx1NjIyZVx1NjIzMFx1NjIzMlx1NjIzM1x1NjI0MVx1NjI0ZVx1NjI1ZVx1NjI2M1x1NjI1Ylx1NjI2MFx1NjI2OFx1NjI3Y1x1NjI4Mlx1NjI4OVx1NjI3ZVx1NjI5Mlx1NjI5M1x1NjI5Nlx1NjJk''@;'; put 'put ''NFx1NjI4M1x1NjI5NFx1NjJkN1x1NjJkMVx1NjJiYlx1NjJjZlx1NjJmZlx1NjJjNlx1NjRkNFx1NjJjOFx1NjJkY1x1NjJjY1x1NjJjYVx1NjJjMlx1NjJjN1x1NjI5Ylx1NjJjOVx1NjMwY1x1NjJlZVx1NjJmMVx1NjMyN1x1NjMwMlx1NjMwOFx1NjJlZlx1NjJmNVx1NjM1MFx1NjMzZVx1''@;'; put 'put ''NjM0ZFx1NjQxY1x1NjM0Zlx1NjM5Nlx1NjM4ZVx1NjM4MFx1NjNhYlx1NjM3Nlx1NjNhM1x1NjM4Zlx1NjM4OVx1NjM5Zlx1NjNiNVx1NjM2Ylx1ZmZmZFx1NjM2OVx1NjNiZVx1NjNlOVx1NjNjMFx1NjNjNlx1NjNlM1x1NjNjOVx1NjNkMlx1NjNmNlx1NjNjNFx1NjQxNlx1NjQzNFx1NjQw''@;'; put 'put ''Nlx1NjQxM1x1NjQyNlx1NjQzNlx1NjUxZFx1NjQxN1x1NjQyOFx1NjQwZlx1NjQ2N1x1NjQ2Zlx1NjQ3Nlx1NjQ0ZVx1NjUyYVx1NjQ5NVx1NjQ5M1x1NjRhNVx1NjRhOVx1NjQ4OFx1NjRiY1x1NjRkYVx1NjRkMlx1NjRjNVx1NjRjN1x1NjRiYlx1NjRkOFx1NjRjMlx1NjRmMVx1NjRlN1x1''@;'; put 'put ''ODIwOVx1NjRlMFx1NjRlMVx1NjJhY1x1NjRlM1x1NjRlZlx1NjUyY1x1NjRmNlx1NjRmNFx1NjRmMlx1NjRmYVx1NjUwMFx1NjRmZFx1NjUxOFx1NjUxY1x1NjUwNVx1NjUyNFx1NjUyM1x1NjUyYlx1NjUzNFx1NjUzNVx1NjUzN1x1NjUzNlx1NjUzOFx1NzU0Ylx1NjU0OFx1NjU1Nlx1NjU1''@;'; put 'put ''NVx1NjU0ZFx1NjU1OFx1NjU1ZVx1NjU1ZFx1NjU3Mlx1NjU3OFx1NjU4Mlx1NjU4M1x1OGI4YVx1NjU5Ylx1NjU5Zlx1NjVhYlx1NjViN1x1NjVjM1x1NjVjNlx1NjVjMVx1NjVjNFx1NjVjY1x1NjVkMlx1NjVkYlx1NjVkOVx1NjVlMFx1NjVlMVx1NjVmMVx1Njc3Mlx1NjYwYVx1NjYwM1x1''@;'; put 'put ''NjVmYlx1Njc3M1x1NjYzNVx1NjYzNlx1NjYzNFx1NjYxY1x1NjY0Zlx1NjY0NFx1NjY0OVx1NjY0MVx1NjY1ZVx1NjY1ZFx1NjY2NFx1NjY2N1x1NjY2OFx1NjY1Zlx1NjY2Mlx1NjY3MFx1NjY4M1x1NjY4OFx1NjY4ZVx1NjY4OVx1NjY4NFx1NjY5OFx1NjY5ZFx1NjZjMVx1NjZiOVx1NjZj''@;'; put 'put ''OVx1NjZiZVx1NjZiY1x1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1N10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTU3XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNTddW0VdXT00MDE5MitFLExbNDAxOTIrRV09QlsxNTddW0VdKTtmb3IoQlsxNThdPSJcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY2YzRcdTY2YjhcdTY2ZDZcdTY2ZGFcdTY2ZTBcdTY2M2ZcdTY2ZTZcdTY2ZTlcdTY2ZjBcdTY2ZjVcdTY2ZjdcdTY3MGZcdTY3MTZcdTY3MWVcdTY3MjZcdTY3MjdcdTk3MzhcdTY3MmVcdTY3M2ZcdTY3''@;'; put 'put ''MzZcdTY3NDFcdTY3MzhcdTY3MzdcdTY3NDZcdTY3NWVcdTY3NjBcdTY3NTlcdTY3NjNcdTY3NjRcdTY3ODlcdTY3NzBcdTY3YTlcdTY3N2NcdTY3NmFcdTY3OGNcdTY3OGJcdTY3YTZcdTY3YTFcdTY3ODVcdTY3YjdcdTY3ZWZcdTY3YjRcdTY3ZWNcdTY3YjNcdTY3ZTlcdTY3YjhcdTY3ZTRc''@;'; put 'put ''dTY3ZGVcdTY3ZGRcdTY3ZTJcdTY3ZWVcdTY3YjlcdTY3Y2VcdTY3YzZcdTY3ZTdcdTZhOWNcdTY4MWVcdTY4NDZcdTY4MjlcdTY4NDBcdTY4NGRcdTY4MzJcdTY4NGVcdWZmZmRcdTY4YjNcdTY4MmJcdTY4NTlcdTY4NjNcdTY4NzdcdTY4N2ZcdTY4OWZcdTY4OGZcdTY4YWRcdTY4OTRcdTY4''@;'; put 'put ''OWRcdTY4OWJcdTY4ODNcdTZhYWVcdTY4YjlcdTY4NzRcdTY4YjVcdTY4YTBcdTY4YmFcdTY5MGZcdTY4OGRcdTY4N2VcdTY5MDFcdTY4Y2FcdTY5MDhcdTY4ZDhcdTY5MjJcdTY5MjZcdTY4ZTFcdTY5MGNcdTY4Y2RcdTY4ZDRcdTY4ZTdcdTY4ZDVcdTY5MzZcdTY5MTJcdTY5MDRcdTY4ZDdc''@;'; put 'put ''dTY4ZTNcdTY5MjVcdTY4ZjlcdTY4ZTBcdTY4ZWZcdTY5MjhcdTY5MmFcdTY5MWFcdTY5MjNcdTY5MjFcdTY4YzZcdTY5NzlcdTY5NzdcdTY5NWNcdTY5NzhcdTY5NmJcdTY5NTRcdTY5N2VcdTY5NmVcdTY5MzlcdTY5NzRcdTY5M2RcdTY5NTlcdTY5MzBcdTY5NjFcdTY5NWVcdTY5NWRcdTY5''@;'; put 'put ''ODFcdTY5NmFcdTY5YjJcdTY5YWVcdTY5ZDBcdTY5YmZcdTY5YzFcdTY5ZDNcdTY5YmVcdTY5Y2VcdTViZThcdTY5Y2FcdTY5ZGRcdTY5YmJcdTY5YzNcdTY5YTdcdTZhMmVcdTY5OTFcdTY5YTBcdTY5OWNcdTY5OTVcdTY5YjRcdTY5ZGVcdTY5ZThcdTZhMDJcdTZhMWJcdTY5ZmZcdTZiMGFc''@;'; put 'put ''dTY5ZjlcdTY5ZjJcdTY5ZTdcdTZhMDVcdTY5YjFcdTZhMWVcdTY5ZWRcdTZhMTRcdTY5ZWJcdTZhMGFcdTZhMTJcdTZhYzFcdTZhMjNcdTZhMTNcdTZhNDRcdTZhMGNcdTZhNzJcdTZhMzZcdTZhNzhcdTZhNDdcdTZhNjJcdTZhNTlcdTZhNjZcdTZhNDhcdTZhMzhcdTZhMjJcdTZhOTBcdTZh''@;'; put 'put ''OGRcdTZhYTBcdTZhODRcdTZhYTJcdTZhYTNcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNThdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1OF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTU4XVtFXV09NDA0NDgrRSxMWzQwNDQ4K0VdPUJbMTU4XVtFXSk7Zm9yKEJb''@;'; put 'put ''MTU5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YTk3XHU4NjE3XHU2YWJiXHU2YWMzXHU2YWMyXHU2YWI4XHU2YWIzXHU2YWFjXHU2YWRlXHU2YWQxXHU2YWRmXHU2YWFhXHU2YWRhXHU2YWVhXHU2YWZiXHU2YjA1XHU4NjE2XHU2''@;'; put 'put ''YWZhXHU2YjEyXHU2YjE2XHU5YjMxXHU2YjFmXHU2YjM4XHU2YjM3XHU3NmRjXHU2YjM5XHU5OGVlXHU2YjQ3XHU2YjQzXHU2YjQ5XHU2YjUwXHU2YjU5XHU2YjU0XHU2YjViXHU2YjVmXHU2YjYxXHU2Yjc4XHU2Yjc5XHU2YjdmXHU2YjgwXHU2Yjg0XHU2YjgzXHU2YjhkXHU2Yjk4XHU2Yjk1''@;'; put 'put ''XHU2YjllXHU2YmE0XHU2YmFhXHU2YmFiXHU2YmFmXHU2YmIyXHU2YmIxXHU2YmIzXHU2YmI3XHU2YmJjXHU2YmM2XHU2YmNiXHU2YmQzXHU2YmRmXHU2YmVjXHU2YmViXHU2YmYzXHU2YmVmXHVmZmZkXHU5ZWJlXHU2YzA4XHU2YzEzXHU2YzE0XHU2YzFiXHU2YzI0XHU2YzIzXHU2YzVlXHU2''@;'; put 'put ''YzU1XHU2YzYyXHU2YzZhXHU2YzgyXHU2YzhkXHU2YzlhXHU2YzgxXHU2YzliXHU2YzdlXHU2YzY4XHU2YzczXHU2YzkyXHU2YzkwXHU2Y2M0XHU2Y2YxXHU2Y2QzXHU2Y2JkXHU2Y2Q3XHU2Y2M1XHU2Y2RkXHU2Y2FlXHU2Y2IxXHU2Y2JlXHU2Y2JhXHU2Y2RiXHU2Y2VmXHU2Y2Q5XHU2Y2Vh''@;'; put 'put ''XHU2ZDFmXHU4ODRkXHU2ZDM2XHU2ZDJiXHU2ZDNkXHU2ZDM4XHU2ZDE5XHU2ZDM1XHU2ZDMzXHU2ZDEyXHU2ZDBjXHU2ZDYzXHU2ZDkzXHU2ZDY0XHU2ZDVhXHU2ZDc5XHU2ZDU5XHU2ZDhlXHU2ZDk1XHU2ZmU0XHU2ZDg1XHU2ZGY5XHU2ZTE1XHU2ZTBhXHU2ZGI1XHU2ZGM3XHU2ZGU2XHU2''@;'; put 'put ''ZGI4XHU2ZGM2XHU2ZGVjXHU2ZGRlXHU2ZGNjXHU2ZGU4XHU2ZGQyXHU2ZGM1XHU2ZGZhXHU2ZGQ5XHU2ZGU0XHU2ZGQ1XHU2ZGVhXHU2ZGVlXHU2ZTJkXHU2ZTZlXHU2ZTJlXHU2ZTE5XHU2ZTcyXHU2ZTVmXHU2ZTNlXHU2ZTIzXHU2ZTZiXHU2ZTJiXHU2ZTc2XHU2ZTRkXHU2ZTFmXHU2ZTQz''@;'; put 'put ''XHU2ZTNhXHU2ZTRlXHU2ZTI0XHU2ZWZmXHU2ZTFkXHU2ZTM4XHU2ZTgyXHU2ZWFhXHU2ZTk4XHU2ZWM5XHU2ZWI3XHU2ZWQzXHU2ZWJkXHU2ZWFmXHU2ZWM0XHU2ZWIyXHU2ZWQ0XHU2ZWQ1XHU2ZThmXHU2ZWE1XHU2ZWMyXHU2ZTlmXHU2ZjQxXHU2ZjExXHU3MDRjXHU2ZWVjXHU2ZWY4XHU2''@;'; put 'put ''ZWZlXHU2ZjNmXHU2ZWYyXHU2ZjMxXHU2ZWVmXHU2ZjMyXHU2ZWNjXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTU5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNTldW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE1OV1bRV1dPTQwNzA0K0UsTFs0MDcwNCtFXT1CWzE1''@;'; put 'put ''OV1bRV0pO2ZvcihCWzIyNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmYzZVx1NmYxM1x1NmVmN1x1NmY4Nlx1NmY3YVx1NmY3OFx1NmY4MVx1NmY4MFx1NmY2Zlx1NmY1Ylx1NmZmM1x1NmY2ZFx1NmY4Mlx1NmY3Y1x1NmY1OFx1''@;'; put 'put ''NmY4ZVx1NmY5MVx1NmZjMlx1NmY2Nlx1NmZiM1x1NmZhM1x1NmZhMVx1NmZhNFx1NmZiOVx1NmZjNlx1NmZhYVx1NmZkZlx1NmZkNVx1NmZlY1x1NmZkNFx1NmZkOFx1NmZmMVx1NmZlZVx1NmZkYlx1NzAwOVx1NzAwYlx1NmZmYVx1NzAxMVx1NzAwMVx1NzAwZlx1NmZmZVx1NzAxYlx1NzAx''@;'; put 'put ''YVx1NmY3NFx1NzAxZFx1NzAxOFx1NzAxZlx1NzAzMFx1NzAzZVx1NzAzMlx1NzA1MVx1NzA2M1x1NzA5OVx1NzA5Mlx1NzBhZlx1NzBmMVx1NzBhY1x1NzBiOFx1NzBiM1x1NzBhZVx1NzBkZlx1NzBjYlx1NzBkZFx1ZmZmZFx1NzBkOVx1NzEwOVx1NzBmZFx1NzExY1x1NzExOVx1NzE2NVx1''@;'; put 'put ''NzE1NVx1NzE4OFx1NzE2Nlx1NzE2Mlx1NzE0Y1x1NzE1Nlx1NzE2Y1x1NzE4Zlx1NzFmYlx1NzE4NFx1NzE5NVx1NzFhOFx1NzFhY1x1NzFkN1x1NzFiOVx1NzFiZVx1NzFkMlx1NzFjOVx1NzFkNFx1NzFjZVx1NzFlMFx1NzFlY1x1NzFlN1x1NzFmNVx1NzFmY1x1NzFmOVx1NzFmZlx1NzIw''@;'; put 'put ''ZFx1NzIxMFx1NzIxYlx1NzIyOFx1NzIyZFx1NzIyY1x1NzIzMFx1NzIzMlx1NzIzYlx1NzIzY1x1NzIzZlx1NzI0MFx1NzI0Nlx1NzI0Ylx1NzI1OFx1NzI3NFx1NzI3ZVx1NzI4Mlx1NzI4MVx1NzI4N1x1NzI5Mlx1NzI5Nlx1NzJhMlx1NzJhN1x1NzJiOVx1NzJiMlx1NzJjM1x1NzJjNlx1''@;'; put 'put ''NzJjNFx1NzJjZVx1NzJkMlx1NzJlMlx1NzJlMFx1NzJlMVx1NzJmOVx1NzJmN1x1NTAwZlx1NzMxN1x1NzMwYVx1NzMxY1x1NzMxNlx1NzMxZFx1NzMzNFx1NzMyZlx1NzMyOVx1NzMyNVx1NzMzZVx1NzM0ZVx1NzM0Zlx1OWVkOFx1NzM1N1x1NzM2YVx1NzM2OFx1NzM3MFx1NzM3OFx1NzM3''@;'; put 'put ''NVx1NzM3Ylx1NzM3YVx1NzNjOFx1NzNiM1x1NzNjZVx1NzNiYlx1NzNjMFx1NzNlNVx1NzNlZVx1NzNkZVx1NzRhMlx1NzQwNVx1NzQ2Zlx1NzQyNVx1NzNmOFx1NzQzMlx1NzQzYVx1NzQ1NVx1NzQzZlx1NzQ1Zlx1NzQ1OVx1NzQ0MVx1NzQ1Y1x1NzQ2OVx1NzQ3MFx1NzQ2M1x1NzQ2YVx1''@;'; put 'put ''NzQ3Nlx1NzQ3ZVx1NzQ4Ylx1NzQ5ZVx1NzRhN1x1NzRjYVx1NzRjZlx1NzRkNFx1NzNmMVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyNF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjI0XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMjRdW0VdXT01NzM0NCtFLExb''@;'; put 'put ''NTczNDQrRV09QlsyMjRdW0VdKTtmb3IoQlsyMjVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc0ZTBcdTc0ZTNcdTc0ZTdcdTc0ZTlcdTc0ZWVcdTc0ZjJcdTc0ZjBcdTc0ZjFcdTc0ZjhcdTc0ZjdcdTc1MDRcdTc1MDNcdTc1MDVc''@;'; put 'put ''dTc1MGNcdTc1MGVcdTc1MGRcdTc1MTVcdTc1MTNcdTc1MWVcdTc1MjZcdTc1MmNcdTc1M2NcdTc1NDRcdTc1NGRcdTc1NGFcdTc1NDlcdTc1NWJcdTc1NDZcdTc1NWFcdTc1NjlcdTc1NjRcdTc1NjdcdTc1NmJcdTc1NmRcdTc1NzhcdTc1NzZcdTc1ODZcdTc1ODdcdTc1NzRcdTc1OGFcdTc1''@;'; put 'put ''ODlcdTc1ODJcdTc1OTRcdTc1OWFcdTc1OWRcdTc1YTVcdTc1YTNcdTc1YzJcdTc1YjNcdTc1YzNcdTc1YjVcdTc1YmRcdTc1YjhcdTc1YmNcdTc1YjFcdTc1Y2RcdTc1Y2FcdTc1ZDJcdTc1ZDlcdTc1ZTNcdTc1ZGVcdTc1ZmVcdTc1ZmZcdWZmZmRcdTc1ZmNcdTc2MDFcdTc1ZjBcdTc1ZmFc''@;'; put 'put ''dTc1ZjJcdTc1ZjNcdTc2MGJcdTc2MGRcdTc2MDlcdTc2MWZcdTc2MjdcdTc2MjBcdTc2MjFcdTc2MjJcdTc2MjRcdTc2MzRcdTc2MzBcdTc2M2JcdTc2NDdcdTc2NDhcdTc2NDZcdTc2NWNcdTc2NThcdTc2NjFcdTc2NjJcdTc2NjhcdTc2NjlcdTc2NmFcdTc2NjdcdTc2NmNcdTc2NzBcdTc2''@;'; put 'put ''NzJcdTc2NzZcdTc2NzhcdTc2N2NcdTc2ODBcdTc2ODNcdTc2ODhcdTc2OGJcdTc2OGVcdTc2OTZcdTc2OTNcdTc2OTlcdTc2OWFcdTc2YjBcdTc2YjRcdTc2YjhcdTc2YjlcdTc2YmFcdTc2YzJcdTc2Y2RcdTc2ZDZcdTc2ZDJcdTc2ZGVcdTc2ZTFcdTc2ZTVcdTc2ZTdcdTc2ZWFcdTg2MmZc''@;'; put 'put ''dTc2ZmJcdTc3MDhcdTc3MDdcdTc3MDRcdTc3MjlcdTc3MjRcdTc3MWVcdTc3MjVcdTc3MjZcdTc3MWJcdTc3MzdcdTc3MzhcdTc3NDdcdTc3NWFcdTc3NjhcdTc3NmJcdTc3NWJcdTc3NjVcdTc3N2ZcdTc3N2VcdTc3NzlcdTc3OGVcdTc3OGJcdTc3OTFcdTc3YTBcdTc3OWVcdTc3YjBcdTc3''@;'; put 'put ''YjZcdTc3YjlcdTc3YmZcdTc3YmNcdTc3YmRcdTc3YmJcdTc3YzdcdTc3Y2RcdTc3ZDdcdTc3ZGFcdTc3ZGNcdTc3ZTNcdTc3ZWVcdTc3ZmNcdTc4MGNcdTc4MTJcdTc5MjZcdTc4MjBcdTc5MmFcdTc4NDVcdTc4OGVcdTc4NzRcdTc4ODZcdTc4N2NcdTc4OWFcdTc4OGNcdTc4YTNcdTc4YjVc''@;'; put 'put ''dTc4YWFcdTc4YWZcdTc4ZDFcdTc4YzZcdTc4Y2JcdTc4ZDRcdTc4YmVcdTc4YmNcdTc4YzVcdTc4Y2FcdTc4ZWNcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyNV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjI1XVtF''@;'; put 'put ''XV09NTc2MDArRSxMWzU3NjAwK0VdPUJbMjI1XVtFXSk7Zm9yKEJbMjI2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OGU3XHU3OGRhXHU3OGZkXHU3OGY0XHU3OTA3XHU3OTEyXHU3OTExXHU3OTE5XHU3OTJjXHU3OTJiXHU3OTQw''@;'; put 'put ''XHU3OTYwXHU3OTU3XHU3OTVmXHU3OTVhXHU3OTU1XHU3OTUzXHU3OTdhXHU3OTdmXHU3OThhXHU3OTlkXHU3OWE3XHU5ZjRiXHU3OWFhXHU3OWFlXHU3OWIzXHU3OWI5XHU3OWJhXHU3OWM5XHU3OWQ1XHU3OWU3XHU3OWVjXHU3OWUxXHU3OWUzXHU3YTA4XHU3YTBkXHU3YTE4XHU3YTE5XHU3''@;'; put 'put ''YTIwXHU3YTFmXHU3OTgwXHU3YTMxXHU3YTNiXHU3YTNlXHU3YTM3XHU3YTQzXHU3YTU3XHU3YTQ5XHU3YTYxXHU3YTYyXHU3YTY5XHU5ZjlkXHU3YTcwXHU3YTc5XHU3YTdkXHU3YTg4XHU3YTk3XHU3YTk1XHU3YTk4XHU3YTk2XHU3YWE5XHU3YWM4XHU3YWIwXHVmZmZkXHU3YWI2XHU3YWM1''@;'; put 'put ''XHU3YWM0XHU3YWJmXHU5MDgzXHU3YWM3XHU3YWNhXHU3YWNkXHU3YWNmXHU3YWQ1XHU3YWQzXHU3YWQ5XHU3YWRhXHU3YWRkXHU3YWUxXHU3YWUyXHU3YWU2XHU3YWVkXHU3YWYwXHU3YjAyXHU3YjBmXHU3YjBhXHU3YjA2XHU3YjMzXHU3YjE4XHU3YjE5XHU3YjFlXHU3YjM1XHU3YjI4XHU3''@;'; put 'put ''YjM2XHU3YjUwXHU3YjdhXHU3YjA0XHU3YjRkXHU3YjBiXHU3YjRjXHU3YjQ1XHU3Yjc1XHU3YjY1XHU3Yjc0XHU3YjY3XHU3YjcwXHU3YjcxXHU3YjZjXHU3YjZlXHU3YjlkXHU3Yjk4XHU3YjlmXHU3YjhkXHU3YjljXHU3YjlhXHU3YjhiXHU3YjkyXHU3YjhmXHU3YjVkXHU3Yjk5XHU3YmNi''@;'; put 'put ''XHU3YmMxXHU3YmNjXHU3YmNmXHU3YmI0XHU3YmM2XHU3YmRkXHU3YmU5XHU3YzExXHU3YzE0XHU3YmU2XHU3YmU1XHU3YzYwXHU3YzAwXHU3YzA3XHU3YzEzXHU3YmYzXHU3YmY3XHU3YzE3XHU3YzBkXHU3YmY2XHU3YzIzXHU3YzI3XHU3YzJhXHU3YzFmXHU3YzM3XHU3YzJiXHU3YzNkXHU3''@;'; put 'put ''YzRjXHU3YzQzXHU3YzU0XHU3YzRmXHU3YzQwXHU3YzUwXHU3YzU4XHU3YzVmXHU3YzY0XHU3YzU2XHU3YzY1XHU3YzZjXHU3Yzc1XHU3YzgzXHU3YzkwXHU3Y2E0XHU3Y2FkXHU3Y2EyXHU3Y2FiXHU3Y2ExXHU3Y2E4XHU3Y2IzXHU3Y2IyXHU3Y2IxXHU3Y2FlXHU3Y2I5XHU3Y2JkXHU3Y2Mw''@;'; put 'put ''XHU3Y2M1XHU3Y2MyXHU3Y2Q4XHU3Y2QyXHU3Y2RjXHU3Y2UyXHU5YjNiXHU3Y2VmXHU3Y2YyXHU3Y2Y0XHU3Y2Y2XHU3Y2ZhXHU3ZDA2XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjI2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjZdW0VdLmNoYXJDb2RlQXQoMCkm''@;'; put 'put ''JihtZVtCWzIyNl1bRV1dPTU3ODU2K0UsTFs1Nzg1NitFXT1CWzIyNl1bRV0pO2ZvcihCWzIyN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2QwMlx1N2QxY1x1N2QxNVx1N2QwYVx1N2Q0NVx1N2Q0Ylx1N2QyZVx1N2QzMlx1N2Qz''@;'; put 'put ''Zlx1N2QzNVx1N2Q0Nlx1N2Q3M1x1N2Q1Nlx1N2Q0ZVx1N2Q3Mlx1N2Q2OFx1N2Q2ZVx1N2Q0Zlx1N2Q2M1x1N2Q5M1x1N2Q4OVx1N2Q1Ylx1N2Q4Zlx1N2Q3ZFx1N2Q5Ylx1N2RiYVx1N2RhZVx1N2RhM1x1N2RiNVx1N2RjN1x1N2RiZFx1N2RhYlx1N2UzZFx1N2RhMlx1N2RhZlx1N2RkY1x1''@;'; put 'put ''N2RiOFx1N2Q5Zlx1N2RiMFx1N2RkOFx1N2RkZFx1N2RlNFx1N2RkZVx1N2RmYlx1N2RmMlx1N2RlMVx1N2UwNVx1N2UwYVx1N2UyM1x1N2UyMVx1N2UxMlx1N2UzMVx1N2UxZlx1N2UwOVx1N2UwYlx1N2UyMlx1N2U0Nlx1N2U2Nlx1N2UzYlx1N2UzNVx1N2UzOVx1N2U0M1x1N2UzN1x1ZmZm''@;'; put 'put ''ZFx1N2UzMlx1N2UzYVx1N2U2N1x1N2U1ZFx1N2U1Nlx1N2U1ZVx1N2U1OVx1N2U1YVx1N2U3OVx1N2U2YVx1N2U2OVx1N2U3Y1x1N2U3Ylx1N2U4M1x1N2RkNVx1N2U3ZFx1OGZhZVx1N2U3Zlx1N2U4OFx1N2U4OVx1N2U4Y1x1N2U5Mlx1N2U5MFx1N2U5M1x1N2U5NFx1N2U5Nlx1N2U4ZVx1''@;'; put 'put ''N2U5Ylx1N2U5Y1x1N2YzOFx1N2YzYVx1N2Y0NVx1N2Y0Y1x1N2Y0ZFx1N2Y0ZVx1N2Y1MFx1N2Y1MVx1N2Y1NVx1N2Y1NFx1N2Y1OFx1N2Y1Zlx1N2Y2MFx1N2Y2OFx1N2Y2OVx1N2Y2N1x1N2Y3OFx1N2Y4Mlx1N2Y4Nlx1N2Y4M1x1N2Y4OFx1N2Y4N1x1N2Y4Y1x1N2Y5NFx1N2Y5ZVx1N2Y5''@;'; put 'put ''ZFx1N2Y5YVx1N2ZhM1x1N2ZhZlx1N2ZiMlx1N2ZiOVx1N2ZhZVx1N2ZiNlx1N2ZiOFx1OGI3MVx1N2ZjNVx1N2ZjNlx1N2ZjYVx1N2ZkNVx1N2ZkNFx1N2ZlMVx1N2ZlNlx1N2ZlOVx1N2ZmM1x1N2ZmOVx1OThkY1x1ODAwNlx1ODAwNFx1ODAwYlx1ODAxMlx1ODAxOFx1ODAxOVx1ODAxY1x1''@;'; put 'put ''ODAyMVx1ODAyOFx1ODAzZlx1ODAzYlx1ODA0YVx1ODA0Nlx1ODA1Mlx1ODA1OFx1ODA1YVx1ODA1Zlx1ODA2Mlx1ODA2OFx1ODA3M1x1ODA3Mlx1ODA3MFx1ODA3Nlx1ODA3OVx1ODA3ZFx1ODA3Zlx1ODA4NFx1ODA4Nlx1ODA4NVx1ODA5Ylx1ODA5M1x1ODA5YVx1ODBhZFx1NTE5MFx1ODBh''@;'; put 'put ''Y1x1ODBkYlx1ODBlNVx1ODBkOVx1ODBkZFx1ODBjNFx1ODBkYVx1ODBkNlx1ODEwOVx1ODBlZlx1ODBmMVx1ODExYlx1ODEyOVx1ODEyM1x1ODEyZlx1ODE0Ylx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyN10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjI3XVtFXS5j''@;'; put 'put ''aGFyQ29kZUF0KDApJiYobWVbQlsyMjddW0VdXT01ODExMitFLExbNTgxMTIrRV09QlsyMjddW0VdKTtmb3IoQlsyMjhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk2OGJcdTgxNDZcdTgxM2VcdTgxNTNcdTgxNTFcdTgwZmNcdTgx''@;'; put 'put ''NzFcdTgxNmVcdTgxNjVcdTgxNjZcdTgxNzRcdTgxODNcdTgxODhcdTgxOGFcdTgxODBcdTgxODJcdTgxYTBcdTgxOTVcdTgxYTRcdTgxYTNcdTgxNWZcdTgxOTNcdTgxYTlcdTgxYjBcdTgxYjVcdTgxYmVcdTgxYjhcdTgxYmRcdTgxYzBcdTgxYzJcdTgxYmFcdTgxYzlcdTgxY2RcdTgxZDFc''@;'; put 'put ''dTgxZDlcdTgxZDhcdTgxYzhcdTgxZGFcdTgxZGZcdTgxZTBcdTgxZTdcdTgxZmFcdTgxZmJcdTgxZmVcdTgyMDFcdTgyMDJcdTgyMDVcdTgyMDdcdTgyMGFcdTgyMGRcdTgyMTBcdTgyMTZcdTgyMjlcdTgyMmJcdTgyMzhcdTgyMzNcdTgyNDBcdTgyNTlcdTgyNThcdTgyNWRcdTgyNWFcdTgy''@;'; put 'put ''NWZcdTgyNjRcdWZmZmRcdTgyNjJcdTgyNjhcdTgyNmFcdTgyNmJcdTgyMmVcdTgyNzFcdTgyNzdcdTgyNzhcdTgyN2VcdTgyOGRcdTgyOTJcdTgyYWJcdTgyOWZcdTgyYmJcdTgyYWNcdTgyZTFcdTgyZTNcdTgyZGZcdTgyZDJcdTgyZjRcdTgyZjNcdTgyZmFcdTgzOTNcdTgzMDNcdTgyZmJc''@;'; put 'put ''dTgyZjlcdTgyZGVcdTgzMDZcdTgyZGNcdTgzMDlcdTgyZDlcdTgzMzVcdTgzMzRcdTgzMTZcdTgzMzJcdTgzMzFcdTgzNDBcdTgzMzlcdTgzNTBcdTgzNDVcdTgzMmZcdTgzMmJcdTgzMTdcdTgzMThcdTgzODVcdTgzOWFcdTgzYWFcdTgzOWZcdTgzYTJcdTgzOTZcdTgzMjNcdTgzOGVcdTgz''@;'; put 'put ''ODdcdTgzOGFcdTgzN2NcdTgzYjVcdTgzNzNcdTgzNzVcdTgzYTBcdTgzODlcdTgzYThcdTgzZjRcdTg0MTNcdTgzZWJcdTgzY2VcdTgzZmRcdTg0MDNcdTgzZDhcdTg0MGJcdTgzYzFcdTgzZjdcdTg0MDdcdTgzZTBcdTgzZjJcdTg0MGRcdTg0MjJcdTg0MjBcdTgzYmRcdTg0MzhcdTg1MDZc''@;'; put 'put ''dTgzZmJcdTg0NmRcdTg0MmFcdTg0M2NcdTg1NWFcdTg0ODRcdTg0NzdcdTg0NmJcdTg0YWRcdTg0NmVcdTg0ODJcdTg0NjlcdTg0NDZcdTg0MmNcdTg0NmZcdTg0NzlcdTg0MzVcdTg0Y2FcdTg0NjJcdTg0YjlcdTg0YmZcdTg0OWZcdTg0ZDlcdTg0Y2RcdTg0YmJcdTg0ZGFcdTg0ZDBcdTg0''@;'; put 'put ''YzFcdTg0YzZcdTg0ZDZcdTg0YTFcdTg1MjFcdTg0ZmZcdTg0ZjRcdTg1MTdcdTg1MThcdTg1MmNcdTg1MWZcdTg1MTVcdTg1MTRcdTg0ZmNcdTg1NDBcdTg1NjNcdTg1NThcdTg1NDhcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjhdLmxlbmd0aDsrK0UpNjU1MzMh''@;'; put 'put ''PT1CWzIyOF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjI4XVtFXV09NTgzNjgrRSxMWzU4MzY4K0VdPUJbMjI4XVtFXSk7Zm9yKEJbMjI5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NTQxXHU4NjAyXHU4NTRiXHU4NTU1XHU4''@;'; put 'put ''NTgwXHU4NWE0XHU4NTg4XHU4NTkxXHU4NThhXHU4NWE4XHU4NTZkXHU4NTk0XHU4NTliXHU4NWVhXHU4NTg3XHU4NTljXHU4NTc3XHU4NTdlXHU4NTkwXHU4NWM5XHU4NWJhXHU4NWNmXHU4NWI5XHU4NWQwXHU4NWQ1XHU4NWRkXHU4NWU1XHU4NWRjXHU4NWY5XHU4NjBhXHU4NjEzXHU4NjBi''@;'; put 'put ''XHU4NWZlXHU4NWZhXHU4NjA2XHU4NjIyXHU4NjFhXHU4NjMwXHU4NjNmXHU4NjRkXHU0ZTU1XHU4NjU0XHU4NjVmXHU4NjY3XHU4NjcxXHU4NjkzXHU4NmEzXHU4NmE5XHU4NmFhXHU4NjhiXHU4NjhjXHU4NmI2XHU4NmFmXHU4NmM0XHU4NmM2XHU4NmIwXHU4NmM5XHU4ODIzXHU4NmFiXHU4''@;'; put 'put ''NmQ0XHU4NmRlXHU4NmU5XHU4NmVjXHVmZmZkXHU4NmRmXHU4NmRiXHU4NmVmXHU4NzEyXHU4NzA2XHU4NzA4XHU4NzAwXHU4NzAzXHU4NmZiXHU4NzExXHU4NzA5XHU4NzBkXHU4NmY5XHU4NzBhXHU4NzM0XHU4NzNmXHU4NzM3XHU4NzNiXHU4NzI1XHU4NzI5XHU4NzFhXHU4NzYwXHU4NzVm''@;'; put 'put ''XHU4Nzc4XHU4NzRjXHU4NzRlXHU4Nzc0XHU4NzU3XHU4NzY4XHU4NzZlXHU4NzU5XHU4NzUzXHU4NzYzXHU4NzZhXHU4ODA1XHU4N2EyXHU4NzlmXHU4NzgyXHU4N2FmXHU4N2NiXHU4N2JkXHU4N2MwXHU4N2QwXHU5NmQ2XHU4N2FiXHU4N2M0XHU4N2IzXHU4N2M3XHU4N2M2XHU4N2JiXHU4''@;'; put 'put ''N2VmXHU4N2YyXHU4N2UwXHU4ODBmXHU4ODBkXHU4N2ZlXHU4N2Y2XHU4N2Y3XHU4ODBlXHU4N2QyXHU4ODExXHU4ODE2XHU4ODE1XHU4ODIyXHU4ODIxXHU4ODMxXHU4ODM2XHU4ODM5XHU4ODI3XHU4ODNiXHU4ODQ0XHU4ODQyXHU4ODUyXHU4ODU5XHU4ODVlXHU4ODYyXHU4ODZiXHU4ODgx''@;'; put 'put ''XHU4ODdlXHU4ODllXHU4ODc1XHU4ODdkXHU4OGI1XHU4ODcyXHU4ODgyXHU4ODk3XHU4ODkyXHU4OGFlXHU4ODk5XHU4OGEyXHU4ODhkXHU4OGE0XHU4OGIwXHU4OGJmXHU4OGIxXHU4OGMzXHU4OGM0XHU4OGQ0XHU4OGQ4XHU4OGQ5XHU4OGRkXHU4OGY5XHU4OTAyXHU4OGZjXHU4OGY0XHU4''@;'; put 'put ''OGU4XHU4OGYyXHU4OTA0XHU4OTBjXHU4OTBhXHU4OTEzXHU4OTQzXHU4OTFlXHU4OTI1XHU4OTJhXHU4OTJiXHU4OTQxXHU4OTQ0XHU4OTNiXHU4OTM2XHU4OTM4XHU4OTRjXHU4OTFkXHU4OTYwXHU4OTVlXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjI5XS5sZW5n''@;'; put 'put ''dGg7KytFKTY1NTMzIT09QlsyMjldW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIyOV1bRV1dPTU4NjI0K0UsTFs1ODYyNCtFXT1CWzIyOV1bRV0pO2ZvcihCWzIzMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODk2Nlx1ODk2NFx1''@;'; put 'put ''ODk2ZFx1ODk2YVx1ODk2Zlx1ODk3NFx1ODk3N1x1ODk3ZVx1ODk4M1x1ODk4OFx1ODk4YVx1ODk5M1x1ODk5OFx1ODlhMVx1ODlhOVx1ODlhNlx1ODlhY1x1ODlhZlx1ODliMlx1ODliYVx1ODliZFx1ODliZlx1ODljMFx1ODlkYVx1ODlkY1x1ODlkZFx1ODllN1x1ODlmNFx1ODlmOFx1OGEw''@;'; put 'put ''M1x1OGExNlx1OGExMFx1OGEwY1x1OGExYlx1OGExZFx1OGEyNVx1OGEzNlx1OGE0MVx1OGE1Ylx1OGE1Mlx1OGE0Nlx1OGE0OFx1OGE3Y1x1OGE2ZFx1OGE2Y1x1OGE2Mlx1OGE4NVx1OGE4Mlx1OGE4NFx1OGFhOFx1OGFhMVx1OGE5MVx1OGFhNVx1OGFhNlx1OGE5YVx1OGFhM1x1OGFjNFx1''@;'; put 'put ''OGFjZFx1OGFjMlx1OGFkYVx1OGFlYlx1OGFmM1x1OGFlN1x1ZmZmZFx1OGFlNFx1OGFmMVx1OGIxNFx1OGFlMFx1OGFlMlx1OGFmN1x1OGFkZVx1OGFkYlx1OGIwY1x1OGIwN1x1OGIxYVx1OGFlMVx1OGIxNlx1OGIxMFx1OGIxN1x1OGIyMFx1OGIzM1x1OTdhYlx1OGIyNlx1OGIyYlx1OGIz''@;'; put 'put ''ZVx1OGIyOFx1OGI0MVx1OGI0Y1x1OGI0Zlx1OGI0ZVx1OGI0OVx1OGI1Nlx1OGI1Ylx1OGI1YVx1OGI2Ylx1OGI1Zlx1OGI2Y1x1OGI2Zlx1OGI3NFx1OGI3ZFx1OGI4MFx1OGI4Y1x1OGI4ZVx1OGI5Mlx1OGI5M1x1OGI5Nlx1OGI5OVx1OGI5YVx1OGMzYVx1OGM0MVx1OGMzZlx1OGM0OFx1''@;'; put 'put ''OGM0Y1x1OGM0ZVx1OGM1MFx1OGM1NVx1OGM2Mlx1OGM2Y1x1OGM3OFx1OGM3YVx1OGM4Mlx1OGM4OVx1OGM4NVx1OGM4YVx1OGM4ZFx1OGM4ZVx1OGM5NFx1OGM3Y1x1OGM5OFx1NjIxZFx1OGNhZFx1OGNhYVx1OGNiZFx1OGNiMlx1OGNiM1x1OGNhZVx1OGNiNlx1OGNjOFx1OGNjMVx1OGNl''@;'; put 'put ''NFx1OGNlM1x1OGNkYVx1OGNmZFx1OGNmYVx1OGNmYlx1OGQwNFx1OGQwNVx1OGQwYVx1OGQwN1x1OGQwZlx1OGQwZFx1OGQxMFx1OWY0ZVx1OGQxM1x1OGNjZFx1OGQxNFx1OGQxNlx1OGQ2N1x1OGQ2ZFx1OGQ3MVx1OGQ3M1x1OGQ4MVx1OGQ5OVx1OGRjMlx1OGRiZVx1OGRiYVx1OGRjZlx1''@;'; put 'put ''OGRkYVx1OGRkNlx1OGRjY1x1OGRkYlx1OGRjYlx1OGRlYVx1OGRlYlx1OGRkZlx1OGRlM1x1OGRmY1x1OGUwOFx1OGUwOVx1OGRmZlx1OGUxZFx1OGUxZVx1OGUxMFx1OGUxZlx1OGU0Mlx1OGUzNVx1OGUzMFx1OGUzNFx1OGU0YVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtF''@;'; put 'put ''IT1CWzIzMF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjMwXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMzBdW0VdXT01ODg4MCtFLExbNTg4ODArRV09QlsyMzBdW0VdKTtmb3IoQlsyMzFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dThlNDdcdThlNDlcdThlNGNcdThlNTBcdThlNDhcdThlNTlcdThlNjRcdThlNjBcdThlMmFcdThlNjNcdThlNTVcdThlNzZcdThlNzJcdThlN2NcdThlODFcdThlODdcdThlODVcdThlODRcdThlOGJcdThlOGFcdThlOTNcdThlOTFcdThlOTRcdThlOTlcdThlYWFcdThlYTFcdThlYWNcdThl''@;'; put 'put ''YjBcdThlYzZcdThlYjFcdThlYmVcdThlYzVcdThlYzhcdThlY2JcdThlZGJcdThlZTNcdThlZmNcdThlZmJcdThlZWJcdThlZmVcdThmMGFcdThmMDVcdThmMTVcdThmMTJcdThmMTlcdThmMTNcdThmMWNcdThmMWZcdThmMWJcdThmMGNcdThmMjZcdThmMzNcdThmM2JcdThmMzlcdThmNDVc''@;'; put 'put ''dThmNDJcdThmM2VcdThmNGNcdThmNDlcdThmNDZcdThmNGVcdThmNTdcdThmNWNcdWZmZmRcdThmNjJcdThmNjNcdThmNjRcdThmOWNcdThmOWZcdThmYTNcdThmYWRcdThmYWZcdThmYjdcdThmZGFcdThmZTVcdThmZTJcdThmZWFcdThmZWZcdTkwODdcdThmZjRcdTkwMDVcdThmZjlcdThm''@;'; put 'put ''ZmFcdTkwMTFcdTkwMTVcdTkwMjFcdTkwMGRcdTkwMWVcdTkwMTZcdTkwMGJcdTkwMjdcdTkwMzZcdTkwMzVcdTkwMzlcdThmZjhcdTkwNGZcdTkwNTBcdTkwNTFcdTkwNTJcdTkwMGVcdTkwNDlcdTkwM2VcdTkwNTZcdTkwNThcdTkwNWVcdTkwNjhcdTkwNmZcdTkwNzZcdTk2YThcdTkwNzJc''@;'; put 'put ''dTkwODJcdTkwN2RcdTkwODFcdTkwODBcdTkwOGFcdTkwODlcdTkwOGZcdTkwYThcdTkwYWZcdTkwYjFcdTkwYjVcdTkwZTJcdTkwZTRcdTYyNDhcdTkwZGJcdTkxMDJcdTkxMTJcdTkxMTlcdTkxMzJcdTkxMzBcdTkxNGFcdTkxNTZcdTkxNThcdTkxNjNcdTkxNjVcdTkxNjlcdTkxNzNcdTkx''@;'; put 'put ''NzJcdTkxOGJcdTkxODlcdTkxODJcdTkxYTJcdTkxYWJcdTkxYWZcdTkxYWFcdTkxYjVcdTkxYjRcdTkxYmFcdTkxYzBcdTkxYzFcdTkxYzlcdTkxY2JcdTkxZDBcdTkxZDZcdTkxZGZcdTkxZTFcdTkxZGJcdTkxZmNcdTkxZjVcdTkxZjZcdTkyMWVcdTkxZmZcdTkyMTRcdTkyMmNcdTkyMTVc''@;'; put 'put ''dTkyMTFcdTkyNWVcdTkyNTdcdTkyNDVcdTkyNDlcdTkyNjRcdTkyNDhcdTkyOTVcdTkyM2ZcdTkyNGJcdTkyNTBcdTkyOWNcdTkyOTZcdTkyOTNcdTkyOWJcdTkyNWFcdTkyY2ZcdTkyYjlcdTkyYjdcdTkyZTlcdTkzMGZcdTkyZmFcdTkzNDRcdTkzMmVcdWZmZmRcdWZmZmRcdWZmZmQiLnNw''@;'; put 'put ''bGl0KCIiKSxFPTA7RSE9QlsyMzFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzMV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjMxXVtFXV09NTkxMzYrRSxMWzU5MTM2K0VdPUJbMjMxXVtFXSk7Zm9yKEJbMjMyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHU5MzE5XHU5MzIyXHU5MzFhXHU5MzIzXHU5MzNhXHU5MzM1XHU5MzNiXHU5MzVjXHU5MzYwXHU5MzdjXHU5MzZlXHU5MzU2XHU5M2IwXHU5M2FjXHU5M2FkXHU5Mzk0XHU5M2I5XHU5M2Q2XHU5M2Q3XHU5M2U4XHU5M2U1XHU5M2Q4XHU5M2MzXHU5M2RkXHU5M2QwXHU5''@;'; put 'put ''M2M4XHU5M2U0XHU5NDFhXHU5NDE0XHU5NDEzXHU5NDAzXHU5NDA3XHU5NDEwXHU5NDM2XHU5NDJiXHU5NDM1XHU5NDIxXHU5NDNhXHU5NDQxXHU5NDUyXHU5NDQ0XHU5NDViXHU5NDYwXHU5NDYyXHU5NDVlXHU5NDZhXHU5MjI5XHU5NDcwXHU5NDc1XHU5NDc3XHU5NDdkXHU5NDVhXHU5NDdj''@;'; put 'put ''XHU5NDdlXHU5NDgxXHU5NDdmXHU5NTgyXHU5NTg3XHU5NThhXHU5NTk0XHU5NTk2XHU5NTk4XHU5NTk5XHVmZmZkXHU5NWEwXHU5NWE4XHU5NWE3XHU5NWFkXHU5NWJjXHU5NWJiXHU5NWI5XHU5NWJlXHU5NWNhXHU2ZmY2XHU5NWMzXHU5NWNkXHU5NWNjXHU5NWQ1XHU5NWQ0XHU5NWQ2XHU5''@;'; put 'put ''NWRjXHU5NWUxXHU5NWU1XHU5NWUyXHU5NjIxXHU5NjI4XHU5NjJlXHU5NjJmXHU5NjQyXHU5NjRjXHU5NjRmXHU5NjRiXHU5Njc3XHU5NjVjXHU5NjVlXHU5NjVkXHU5NjVmXHU5NjY2XHU5NjcyXHU5NjZjXHU5NjhkXHU5Njk4XHU5Njk1XHU5Njk3XHU5NmFhXHU5NmE3XHU5NmIxXHU5NmIy''@;'; put 'put ''XHU5NmIwXHU5NmI0XHU5NmI2XHU5NmI4XHU5NmI5XHU5NmNlXHU5NmNiXHU5NmM5XHU5NmNkXHU4OTRkXHU5NmRjXHU5NzBkXHU5NmQ1XHU5NmY5XHU5NzA0XHU5NzA2XHU5NzA4XHU5NzEzXHU5NzBlXHU5NzExXHU5NzBmXHU5NzE2XHU5NzE5XHU5NzI0XHU5NzJhXHU5NzMwXHU5NzM5XHU5''@;'; put 'put ''NzNkXHU5NzNlXHU5NzQ0XHU5NzQ2XHU5NzQ4XHU5NzQyXHU5NzQ5XHU5NzVjXHU5NzYwXHU5NzY0XHU5NzY2XHU5NzY4XHU1MmQyXHU5NzZiXHU5NzcxXHU5Nzc5XHU5Nzg1XHU5NzdjXHU5NzgxXHU5NzdhXHU5Nzg2XHU5NzhiXHU5NzhmXHU5NzkwXHU5NzljXHU5N2E4XHU5N2E2XHU5N2Ez''@;'; put 'put ''XHU5N2IzXHU5N2I0XHU5N2MzXHU5N2M2XHU5N2M4XHU5N2NiXHU5N2RjXHU5N2VkXHU5ZjRmXHU5N2YyXHU3YWRmXHU5N2Y2XHU5N2Y1XHU5ODBmXHU5ODBjXHU5ODM4XHU5ODI0XHU5ODIxXHU5ODM3XHU5ODNkXHU5ODQ2XHU5ODRmXHU5ODRiXHU5ODZiXHU5ODZmXHU5ODcwXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjMyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzJdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIzMl1bRV1dPTU5MzkyK0UsTFs1OTM5MitFXT1CWzIzMl1bRV0pO2ZvcihCWzIzM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTg3MVx1OTg3NFx1OTg3M1x1OThhYVx1OThhZlx1OThiMVx1OThiNlx1OThjNFx1OThjM1x1OThjNlx1OThlOVx1OThlYlx1OTkwM1x1OTkwOVx1OTkxMlx1OTkxNFx1OTkxOFx1OTkyMVx1OTkxZFx1OTkxZVx1OTkyNFx1OTkyMFx1OTkyY1x1''@;'; put 'put ''OTkyZVx1OTkzZFx1OTkzZVx1OTk0Mlx1OTk0OVx1OTk0NVx1OTk1MFx1OTk0Ylx1OTk1MVx1OTk1Mlx1OTk0Y1x1OTk1NVx1OTk5N1x1OTk5OFx1OTlhNVx1OTlhZFx1OTlhZVx1OTliY1x1OTlkZlx1OTlkYlx1OTlkZFx1OTlkOFx1OTlkMVx1OTllZFx1OTllZVx1OTlmMVx1OTlmMlx1OTlm''@;'; put 'put ''Ylx1OTlmOFx1OWEwMVx1OWEwZlx1OWEwNVx1OTllMlx1OWExOVx1OWEyYlx1OWEzN1x1OWE0NVx1OWE0Mlx1OWE0MFx1OWE0M1x1ZmZmZFx1OWEzZVx1OWE1NVx1OWE0ZFx1OWE1Ylx1OWE1N1x1OWE1Zlx1OWE2Mlx1OWE2NVx1OWE2NFx1OWE2OVx1OWE2Ylx1OWE2YVx1OWFhZFx1OWFiMFx1''@;'; put 'put ''OWFiY1x1OWFjMFx1OWFjZlx1OWFkMVx1OWFkM1x1OWFkNFx1OWFkZVx1OWFkZlx1OWFlMlx1OWFlM1x1OWFlNlx1OWFlZlx1OWFlYlx1OWFlZVx1OWFmNFx1OWFmMVx1OWFmN1x1OWFmYlx1OWIwNlx1OWIxOFx1OWIxYVx1OWIxZlx1OWIyMlx1OWIyM1x1OWIyNVx1OWIyN1x1OWIyOFx1OWIy''@;'; put 'put ''OVx1OWIyYVx1OWIyZVx1OWIyZlx1OWIzMlx1OWI0NFx1OWI0M1x1OWI0Zlx1OWI0ZFx1OWI0ZVx1OWI1MVx1OWI1OFx1OWI3NFx1OWI5M1x1OWI4M1x1OWI5MVx1OWI5Nlx1OWI5N1x1OWI5Zlx1OWJhMFx1OWJhOFx1OWJiNFx1OWJjMFx1OWJjYVx1OWJiOVx1OWJjNlx1OWJjZlx1OWJkMVx1''@;'; put 'put ''OWJkMlx1OWJlM1x1OWJlMlx1OWJlNFx1OWJkNFx1OWJlMVx1OWMzYVx1OWJmMlx1OWJmMVx1OWJmMFx1OWMxNVx1OWMxNFx1OWMwOVx1OWMxM1x1OWMwY1x1OWMwNlx1OWMwOFx1OWMxMlx1OWMwYVx1OWMwNFx1OWMyZVx1OWMxYlx1OWMyNVx1OWMyNFx1OWMyMVx1OWMzMFx1OWM0N1x1OWMz''@;'; put 'put ''Mlx1OWM0Nlx1OWMzZVx1OWM1YVx1OWM2MFx1OWM2N1x1OWM3Nlx1OWM3OFx1OWNlN1x1OWNlY1x1OWNmMFx1OWQwOVx1OWQwOFx1OWNlYlx1OWQwM1x1OWQwNlx1OWQyYVx1OWQyNlx1OWRhZlx1OWQyM1x1OWQxZlx1OWQ0NFx1OWQxNVx1OWQxMlx1OWQ0MVx1OWQzZlx1OWQzZVx1OWQ0Nlx1''@;'; put 'put ''OWQ0OFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzM10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjMzXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMzNdW0VdXT01OTY0OCtFLExbNTk2NDgrRV09QlsyMzNdW0VdKTtmb3IoQlsyMzRdPSJcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlkNWRcdTlkNWVcdTlkNjRcdTlkNTFcdTlkNTBcdTlkNTlcdTlkNzJcdTlkODlcdTlkODdcdTlkYWJcdTlkNmZcdTlkN2FcdTlkOWFcdTlkYTRcdTlkYTlcdTlkYjJcdTlkYzRcdTlkYzFcdTlkYmJcdTlkYjhcdTlkYmFc''@;'; put 'put ''dTlkYzZcdTlkY2ZcdTlkYzJcdTlkZDlcdTlkZDNcdTlkZjhcdTlkZTZcdTlkZWRcdTlkZWZcdTlkZmRcdTllMWFcdTllMWJcdTllMWVcdTllNzVcdTllNzlcdTllN2RcdTllODFcdTllODhcdTllOGJcdTllOGNcdTllOTJcdTllOTVcdTllOTFcdTllOWRcdTllYTVcdTllYTlcdTllYjhcdTll''@;'; put 'put ''YWFcdTllYWRcdTk3NjFcdTllY2NcdTllY2VcdTllY2ZcdTllZDBcdTllZDRcdTllZGNcdTllZGVcdTllZGRcdTllZTBcdTllZTVcdTllZThcdTllZWZcdWZmZmRcdTllZjRcdTllZjZcdTllZjdcdTllZjlcdTllZmJcdTllZmNcdTllZmRcdTlmMDdcdTlmMDhcdTc2YjdcdTlmMTVcdTlmMjFc''@;'; put 'put ''dTlmMmNcdTlmM2VcdTlmNGFcdTlmNTJcdTlmNTRcdTlmNjNcdTlmNWZcdTlmNjBcdTlmNjFcdTlmNjZcdTlmNjdcdTlmNmNcdTlmNmFcdTlmNzdcdTlmNzJcdTlmNzZcdTlmOTVcdTlmOWNcdTlmYTBcdTU4MmZcdTY5YzdcdTkwNTlcdTc0NjRcdTUxZGNcdTcxOTlcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzNF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjM0XVtFXV09NTk5MDQrRSxMWzU5OTA0K0VdPUJbMjM0XVtFXSk7Zm9yKEJbMjM3XT0iXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZThhXHU4OTFjXHU5MzQ4XHU5Mjg4XHU4NGRjXHU0ZmM5XHU3MGJiXHU2NjMxXHU2OGM4XHU5MmY5XHU2NmZiXHU1ZjQ1XHU0ZTI4XHU0ZWUxXHU0ZWZjXHU0ZjAwXHU0ZjAzXHU0ZjM5XHU0ZjU2''@;'; put 'put ''XHU0ZjkyXHU0ZjhhXHU0ZjlhXHU0Zjk0XHU0ZmNkXHU1MDQwXHU1MDIyXHU0ZmZmXHU1MDFlXHU1MDQ2XHU1MDcwXHU1MDQyXHU1MDk0XHU1MGY0XHU1MGQ4XHU1MTRhXHU1MTY0XHU1MTlkXHU1MWJlXHU1MWVjXHU1MjE1XHU1MjljXHU1MmE2XHU1MmMwXHU1MmRiXHU1MzAwXHU1MzA3XHU1''@;'; put 'put ''MzI0XHU1MzcyXHU1MzkzXHU1M2IyXHU1M2RkXHVmYTBlXHU1NDljXHU1NDhhXHU1NGE5XHU1NGZmXHU1NTg2XHU1NzU5XHU1NzY1XHU1N2FjXHU1N2M4XHU1N2M3XHVmYTBmXHVmZmZkXHVmYTEwXHU1ODllXHU1OGIyXHU1OTBiXHU1OTUzXHU1OTViXHU1OTVkXHU1OTYzXHU1OWE0XHU1OWJh''@;'; put 'put ''XHU1YjU2XHU1YmMwXHU3NTJmXHU1YmQ4XHU1YmVjXHU1YzFlXHU1Y2E2XHU1Y2JhXHU1Y2Y1XHU1ZDI3XHU1ZDUzXHVmYTExXHU1ZDQyXHU1ZDZkXHU1ZGI4XHU1ZGI5XHU1ZGQwXHU1ZjIxXHU1ZjM0XHU1ZjY3XHU1ZmI3XHU1ZmRlXHU2MDVkXHU2MDg1XHU2MDhhXHU2MGRlXHU2MGQ1XHU2''@;'; put 'put ''MTIwXHU2MGYyXHU2MTExXHU2MTM3XHU2MTMwXHU2MTk4XHU2MjEzXHU2MmE2XHU2M2Y1XHU2NDYwXHU2NDlkXHU2NGNlXHU2NTRlXHU2NjAwXHU2NjE1XHU2NjNiXHU2NjA5XHU2NjJlXHU2NjFlXHU2NjI0XHU2NjY1XHU2NjU3XHU2NjU5XHVmYTEyXHU2NjczXHU2Njk5XHU2NmEwXHU2NmIy''@;'; put 'put ''XHU2NmJmXHU2NmZhXHU2NzBlXHVmOTI5XHU2NzY2XHU2N2JiXHU2ODUyXHU2N2MwXHU2ODAxXHU2ODQ0XHU2OGNmXHVmYTEzXHU2OTY4XHVmYTE0XHU2OTk4XHU2OWUyXHU2YTMwXHU2YTZiXHU2YTQ2XHU2YTczXHU2YTdlXHU2YWUyXHU2YWU0XHU2YmQ2XHU2YzNmXHU2YzVjXHU2Yzg2XHU2''@;'; put 'put ''YzZmXHU2Y2RhXHU2ZDA0XHU2ZDg3XHU2ZDZmXHU2ZDk2XHU2ZGFjXHU2ZGNmXHU2ZGY4XHU2ZGYyXHU2ZGZjXHU2ZTM5XHU2ZTVjXHU2ZTI3XHU2ZTNjXHU2ZWJmXHU2Zjg4XHU2ZmI1XHU2ZmY1XHU3MDA1XHU3MDA3XHU3MDI4XHU3MDg1XHU3MGFiXHU3MTBmXHU3MTA0XHU3MTVjXHU3MTQ2''@;'; put 'put ''XHU3MTQ3XHVmYTE1XHU3MWMxXHU3MWZlXHU3MmIxXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjM3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzddW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIzN11bRV1dPTYwNjcyK0UsTFs2MDY3MitFXT1CWzIzN11bRV0pO2Zv''@;'; put 'put ''cihCWzIzOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzJiZVx1NzMyNFx1ZmExNlx1NzM3N1x1NzNiZFx1NzNjOVx1NzNkNlx1NzNlM1x1NzNkMlx1NzQwN1x1NzNmNVx1NzQyNlx1NzQyYVx1NzQyOVx1NzQyZVx1NzQ2Mlx1NzQ4''@;'; put 'put ''OVx1NzQ5Zlx1NzUwMVx1NzU2Zlx1NzY4Mlx1NzY5Y1x1NzY5ZVx1NzY5Ylx1NzZhNlx1ZmExN1x1Nzc0Nlx1NTJhZlx1NzgyMVx1Nzg0ZVx1Nzg2NFx1Nzg3YVx1NzkzMFx1ZmExOFx1ZmExOVx1ZmExYVx1Nzk5NFx1ZmExYlx1Nzk5Ylx1N2FkMVx1N2FlN1x1ZmExY1x1N2FlYlx1N2I5ZVx1''@;'; put 'put ''ZmExZFx1N2Q0OFx1N2Q1Y1x1N2RiN1x1N2RhMFx1N2RkNlx1N2U1Mlx1N2Y0N1x1N2ZhMVx1ZmExZVx1ODMwMVx1ODM2Mlx1ODM3Zlx1ODNjN1x1ODNmNlx1ODQ0OFx1ODRiNFx1ODU1M1x1ODU1OVx1ZmZmZFx1ODU2Ylx1ZmExZlx1ODViMFx1ZmEyMFx1ZmEyMVx1ODgwN1x1ODhmNVx1OGEx''@;'; put 'put ''Mlx1OGEzN1x1OGE3OVx1OGFhN1x1OGFiZVx1OGFkZlx1ZmEyMlx1OGFmNlx1OGI1M1x1OGI3Zlx1OGNmMFx1OGNmNFx1OGQxMlx1OGQ3Nlx1ZmEyM1x1OGVjZlx1ZmEyNFx1ZmEyNVx1OTA2N1x1OTBkZVx1ZmEyNlx1OTExNVx1OTEyN1x1OTFkYVx1OTFkN1x1OTFkZVx1OTFlZFx1OTFlZVx1''@;'; put 'put ''OTFlNFx1OTFlNVx1OTIwNlx1OTIxMFx1OTIwYVx1OTIzYVx1OTI0MFx1OTIzY1x1OTI0ZVx1OTI1OVx1OTI1MVx1OTIzOVx1OTI2N1x1OTJhN1x1OTI3N1x1OTI3OFx1OTJlN1x1OTJkN1x1OTJkOVx1OTJkMFx1ZmEyN1x1OTJkNVx1OTJlMFx1OTJkM1x1OTMyNVx1OTMyMVx1OTJmYlx1ZmEy''@;'; put 'put ''OFx1OTMxZVx1OTJmZlx1OTMxZFx1OTMwMlx1OTM3MFx1OTM1N1x1OTNhNFx1OTNjNlx1OTNkZVx1OTNmOFx1OTQzMVx1OTQ0NVx1OTQ0OFx1OTU5Mlx1ZjlkY1x1ZmEyOVx1OTY5ZFx1OTZhZlx1OTczM1x1OTczYlx1OTc0M1x1OTc0ZFx1OTc0Zlx1OTc1MVx1OTc1NVx1OTg1N1x1OTg2NVx1''@;'; put 'put ''ZmEyYVx1ZmEyYlx1OTkyN1x1ZmEyY1x1OTk5ZVx1OWE0ZVx1OWFkOVx1OWFkY1x1OWI3NVx1OWI3Mlx1OWI4Zlx1OWJiMVx1OWJiYlx1OWMwMFx1OWQ3MFx1OWQ2Ylx1ZmEyZFx1OWUxOVx1OWVkMVx1ZmZmZFx1ZmZmZFx1MjE3MFx1MjE3MVx1MjE3Mlx1MjE3M1x1MjE3NFx1MjE3NVx1MjE3''@;'; put 'put ''Nlx1MjE3N1x1MjE3OFx1MjE3OVx1ZmZlMlx1ZmZlNFx1ZmYwN1x1ZmYwMlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzOF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjM4XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMzhdW0VdXT02MDkyOCtFLExbNjA5MjgrRV09''@;'; put 'put ''QlsyMzhdW0VdKTtmb3IoQlsyNTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIxNzBcdTIxNzFcdTIxNzJcdTIxNzNcdTIxNzRcdTIxNzVcdTIxNzZcdTIxNzdcdTIxNzhcdTIxNzlcdTIxNjBcdTIxNjFcdTIxNjJcdTIxNjNcdTIx''@;'; put 'put ''NjRcdTIxNjVcdTIxNjZcdTIxNjdcdTIxNjhcdTIxNjlcdWZmZTJcdWZmZTRcdWZmMDdcdWZmMDJcdTMyMzFcdTIxMTZcdTIxMjFcdTIyMzVcdTdlOGFcdTg5MWNcdTkzNDhcdTkyODhcdTg0ZGNcdTRmYzlcdTcwYmJcdTY2MzFcdTY4YzhcdTkyZjlcdTY2ZmJcdTVmNDVcdTRlMjhcdTRlZTFc''@;'; put 'put ''dTRlZmNcdTRmMDBcdTRmMDNcdTRmMzlcdTRmNTZcdTRmOTJcdTRmOGFcdTRmOWFcdTRmOTRcdTRmY2RcdTUwNDBcdTUwMjJcdTRmZmZcdTUwMWVcdTUwNDZcdTUwNzBcdTUwNDJcdTUwOTRcdTUwZjRcdTUwZDhcdTUxNGFcdWZmZmRcdTUxNjRcdTUxOWRcdTUxYmVcdTUxZWNcdTUyMTVcdTUy''@;'; put 'put ''OWNcdTUyYTZcdTUyYzBcdTUyZGJcdTUzMDBcdTUzMDdcdTUzMjRcdTUzNzJcdTUzOTNcdTUzYjJcdTUzZGRcdWZhMGVcdTU0OWNcdTU0OGFcdTU0YTlcdTU0ZmZcdTU1ODZcdTU3NTlcdTU3NjVcdTU3YWNcdTU3YzhcdTU3YzdcdWZhMGZcdWZhMTBcdTU4OWVcdTU4YjJcdTU5MGJcdTU5NTNc''@;'; put 'put ''dTU5NWJcdTU5NWRcdTU5NjNcdTU5YTRcdTU5YmFcdTViNTZcdTViYzBcdTc1MmZcdTViZDhcdTViZWNcdTVjMWVcdTVjYTZcdTVjYmFcdTVjZjVcdTVkMjdcdTVkNTNcdWZhMTFcdTVkNDJcdTVkNmRcdTVkYjhcdTVkYjlcdTVkZDBcdTVmMjFcdTVmMzRcdTVmNjdcdTVmYjdcdTVmZGVcdTYw''@;'; put 'put ''NWRcdTYwODVcdTYwOGFcdTYwZGVcdTYwZDVcdTYxMjBcdTYwZjJcdTYxMTFcdTYxMzdcdTYxMzBcdTYxOThcdTYyMTNcdTYyYTZcdTYzZjVcdTY0NjBcdTY0OWRcdTY0Y2VcdTY1NGVcdTY2MDBcdTY2MTVcdTY2M2JcdTY2MDlcdTY2MmVcdTY2MWVcdTY2MjRcdTY2NjVcdTY2NTdcdTY2NTlc''@;'; put 'put ''dWZhMTJcdTY2NzNcdTY2OTlcdTY2YTBcdTY2YjJcdTY2YmZcdTY2ZmFcdTY3MGVcdWY5MjlcdTY3NjZcdTY3YmJcdTY4NTJcdTY3YzBcdTY4MDFcdTY4NDRcdTY4Y2ZcdWZhMTNcdTY5NjhcdWZhMTRcdTY5OThcdTY5ZTJcdTZhMzBcdTZhNmJcdTZhNDZcdTZhNzNcdTZhN2VcdTZhZTJcdTZh''@;'; put 'put ''ZTRcdTZiZDZcdTZjM2ZcdTZjNWNcdTZjODZcdTZjNmZcdTZjZGFcdTZkMDRcdTZkODdcdTZkNmZcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNTBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI1MF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjUwXVtFXV09NjRlMytF''@;'; put 'put ''LExbNjRlMytFXT1CWzI1MF1bRV0pO2ZvcihCWzI1MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmQ5Nlx1NmRhY1x1NmRjZlx1NmRmOFx1NmRmMlx1NmRmY1x1NmUzOVx1NmU1Y1x1NmUyN1x1NmUzY1x1NmViZlx1NmY4OFx1NmZi''@;'; put 'put ''NVx1NmZmNVx1NzAwNVx1NzAwN1x1NzAyOFx1NzA4NVx1NzBhYlx1NzEwZlx1NzEwNFx1NzE1Y1x1NzE0Nlx1NzE0N1x1ZmExNVx1NzFjMVx1NzFmZVx1NzJiMVx1NzJiZVx1NzMyNFx1ZmExNlx1NzM3N1x1NzNiZFx1NzNjOVx1NzNkNlx1NzNlM1x1NzNkMlx1NzQwN1x1NzNmNVx1NzQyNlx1''@;'; put 'put ''NzQyYVx1NzQyOVx1NzQyZVx1NzQ2Mlx1NzQ4OVx1NzQ5Zlx1NzUwMVx1NzU2Zlx1NzY4Mlx1NzY5Y1x1NzY5ZVx1NzY5Ylx1NzZhNlx1ZmExN1x1Nzc0Nlx1NTJhZlx1NzgyMVx1Nzg0ZVx1Nzg2NFx1Nzg3YVx1NzkzMFx1ZmExOFx1ZmExOVx1ZmZmZFx1ZmExYVx1Nzk5NFx1ZmExYlx1Nzk5''@;'; put 'put ''Ylx1N2FkMVx1N2FlN1x1ZmExY1x1N2FlYlx1N2I5ZVx1ZmExZFx1N2Q0OFx1N2Q1Y1x1N2RiN1x1N2RhMFx1N2RkNlx1N2U1Mlx1N2Y0N1x1N2ZhMVx1ZmExZVx1ODMwMVx1ODM2Mlx1ODM3Zlx1ODNjN1x1ODNmNlx1ODQ0OFx1ODRiNFx1ODU1M1x1ODU1OVx1ODU2Ylx1ZmExZlx1ODViMFx1''@;'; put 'put ''ZmEyMFx1ZmEyMVx1ODgwN1x1ODhmNVx1OGExMlx1OGEzN1x1OGE3OVx1OGFhN1x1OGFiZVx1OGFkZlx1ZmEyMlx1OGFmNlx1OGI1M1x1OGI3Zlx1OGNmMFx1OGNmNFx1OGQxMlx1OGQ3Nlx1ZmEyM1x1OGVjZlx1ZmEyNFx1ZmEyNVx1OTA2N1x1OTBkZVx1ZmEyNlx1OTExNVx1OTEyN1x1OTFk''@;'; put 'put ''YVx1OTFkN1x1OTFkZVx1OTFlZFx1OTFlZVx1OTFlNFx1OTFlNVx1OTIwNlx1OTIxMFx1OTIwYVx1OTIzYVx1OTI0MFx1OTIzY1x1OTI0ZVx1OTI1OVx1OTI1MVx1OTIzOVx1OTI2N1x1OTJhN1x1OTI3N1x1OTI3OFx1OTJlN1x1OTJkN1x1OTJkOVx1OTJkMFx1ZmEyN1x1OTJkNVx1OTJlMFx1''@;'; put 'put ''OTJkM1x1OTMyNVx1OTMyMVx1OTJmYlx1ZmEyOFx1OTMxZVx1OTJmZlx1OTMxZFx1OTMwMlx1OTM3MFx1OTM1N1x1OTNhNFx1OTNjNlx1OTNkZVx1OTNmOFx1OTQzMVx1OTQ0NVx1OTQ0OFx1OTU5Mlx1ZjlkY1x1ZmEyOVx1OTY5ZFx1OTZhZlx1OTczM1x1OTczYlx1OTc0M1x1OTc0ZFx1OTc0''@;'; put 'put ''Zlx1OTc1MVx1OTc1NVx1OTg1N1x1OTg2NVx1ZmEyYVx1ZmEyYlx1OTkyN1x1ZmEyY1x1OTk5ZVx1OWE0ZVx1OWFkOVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI1MV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjUxXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyNTFd''@;'; put 'put ''W0VdXT02NDI1NitFLExbNjQyNTYrRV09QlsyNTFdW0VdKTtmb3IoQlsyNTJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlhZGNcdTliNzVcdTliNzJcdTliOGZcdTliYjFcdTliYmJcdTljMDBcdTlkNzBcdTlkNmJcdWZhMmRcdTll''@;'; put 'put ''MTlcdTllZDFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNTJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI1Ml1bRV0uY2hhckNvZGVBdCgw''@;'; put 'put ''KSYmKG1lW0JbMjUyXVtFXV09NjQ1MTIrRSxMWzY0NTEyK0VdPUJbMjUyXVtFXSk7cmV0dXJue2VuYzptZSxkZWM6TH19KCksSmVbOTM2XT1mdW5jdGlvbigpe3ZhciBFLEw9W10sbWU9e30sQj1bXTtmb3IoQlswXT0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxy''@;'; put 'put ''XHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6''@;'; put 'put ''e3x9flx4N2ZcdTIwYWNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlswXS5sZW5ndGg7KytFKTY1NTMzIT09QlswXVtF''@;'; put 'put ''XS5jaGFyQ29kZUF0KDApJiYobWVbQlswXVtFXV09MCtFLExbMCtFXT1CWzBdW0VdKTtmb3IoQlsxMjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRlMDJcdTRlMDRcdTRlMDVcdTRlMDZcdTRlMGZcdTRlMTJcdTRlMTdcdTRlMWZc''@;'; put 'put ''dTRlMjBcdTRlMjFcdTRlMjNcdTRlMjZcdTRlMjlcdTRlMmVcdTRlMmZcdTRlMzFcdTRlMzNcdTRlMzVcdTRlMzdcdTRlM2NcdTRlNDBcdTRlNDFcdTRlNDJcdTRlNDRcdTRlNDZcdTRlNGFcdTRlNTFcdTRlNTVcdTRlNTdcdTRlNWFcdTRlNWJcdTRlNjJcdTRlNjNcdTRlNjRcdTRlNjVcdTRl''@;'; put 'put ''NjdcdTRlNjhcdTRlNmFcdTRlNmJcdTRlNmNcdTRlNmRcdTRlNmVcdTRlNmZcdTRlNzJcdTRlNzRcdTRlNzVcdTRlNzZcdTRlNzdcdTRlNzhcdTRlNzlcdTRlN2FcdTRlN2JcdTRlN2NcdTRlN2RcdTRlN2ZcdTRlODBcdTRlODFcdTRlODJcdTRlODNcdTRlODRcdTRlODVcdTRlODdcdTRlOGFc''@;'; put 'put ''dWZmZmRcdTRlOTBcdTRlOTZcdTRlOTdcdTRlOTlcdTRlOWNcdTRlOWRcdTRlOWVcdTRlYTNcdTRlYWFcdTRlYWZcdTRlYjBcdTRlYjFcdTRlYjRcdTRlYjZcdTRlYjdcdTRlYjhcdTRlYjlcdTRlYmNcdTRlYmRcdTRlYmVcdTRlYzhcdTRlY2NcdTRlY2ZcdTRlZDBcdTRlZDJcdTRlZGFcdTRl''@;'; put 'put ''ZGJcdTRlZGNcdTRlZTBcdTRlZTJcdTRlZTZcdTRlZTdcdTRlZTlcdTRlZWRcdTRlZWVcdTRlZWZcdTRlZjFcdTRlZjRcdTRlZjhcdTRlZjlcdTRlZmFcdTRlZmNcdTRlZmVcdTRmMDBcdTRmMDJcdTRmMDNcdTRmMDRcdTRmMDVcdTRmMDZcdTRmMDdcdTRmMDhcdTRmMGJcdTRmMGNcdTRmMTJc''@;'; put 'put ''dTRmMTNcdTRmMTRcdTRmMTVcdTRmMTZcdTRmMWNcdTRmMWRcdTRmMjFcdTRmMjNcdTRmMjhcdTRmMjlcdTRmMmNcdTRmMmRcdTRmMmVcdTRmMzFcdTRmMzNcdTRmMzVcdTRmMzdcdTRmMzlcdTRmM2JcdTRmM2VcdTRmM2ZcdTRmNDBcdTRmNDFcdTRmNDJcdTRmNDRcdTRmNDVcdTRmNDdcdTRm''@;'; put 'put ''NDhcdTRmNDlcdTRmNGFcdTRmNGJcdTRmNGNcdTRmNTJcdTRmNTRcdTRmNTZcdTRmNjFcdTRmNjJcdTRmNjZcdTRmNjhcdTRmNmFcdTRmNmJcdTRmNmRcdTRmNmVcdTRmNzFcdTRmNzJcdTRmNzVcdTRmNzdcdTRmNzhcdTRmNzlcdTRmN2FcdTRmN2RcdTRmODBcdTRmODFcdTRmODJcdTRmODVc''@;'; put 'put ''dTRmODZcdTRmODdcdTRmOGFcdTRmOGNcdTRmOGVcdTRmOTBcdTRmOTJcdTRmOTNcdTRmOTVcdTRmOTZcdTRmOThcdTRmOTlcdTRmOWFcdTRmOWNcdTRmOWVcdTRmOWZcdTRmYTFcdTRmYTJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxMjldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEyOV1b''@;'; put 'put ''RV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTI5XVtFXV09MzMwMjQrRSxMWzMzMDI0K0VdPUJbMTI5XVtFXSk7Zm9yKEJbMTMwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZmE0XHU0ZmFiXHU0ZmFkXHU0ZmIwXHU0ZmIxXHU0ZmIy''@;'; put 'put ''XHU0ZmIzXHU0ZmI0XHU0ZmI2XHU0ZmI3XHU0ZmI4XHU0ZmI5XHU0ZmJhXHU0ZmJiXHU0ZmJjXHU0ZmJkXHU0ZmJlXHU0ZmMwXHU0ZmMxXHU0ZmMyXHU0ZmM2XHU0ZmM3XHU0ZmM4XHU0ZmM5XHU0ZmNiXHU0ZmNjXHU0ZmNkXHU0ZmQyXHU0ZmQzXHU0ZmQ0XHU0ZmQ1XHU0ZmQ2XHU0ZmQ5XHU0''@;'; put 'put ''ZmRiXHU0ZmUwXHU0ZmUyXHU0ZmU0XHU0ZmU1XHU0ZmU3XHU0ZmViXHU0ZmVjXHU0ZmYwXHU0ZmYyXHU0ZmY0XHU0ZmY1XHU0ZmY2XHU0ZmY3XHU0ZmY5XHU0ZmZiXHU0ZmZjXHU0ZmZkXHU0ZmZmXHU1MDAwXHU1MDAxXHU1MDAyXHU1MDAzXHU1MDA0XHU1MDA1XHU1MDA2XHU1MDA3XHU1MDA4''@;'; put 'put ''XHU1MDA5XHU1MDBhXHVmZmZkXHU1MDBiXHU1MDBlXHU1MDEwXHU1MDExXHU1MDEzXHU1MDE1XHU1MDE2XHU1MDE3XHU1MDFiXHU1MDFkXHU1MDFlXHU1MDIwXHU1MDIyXHU1MDIzXHU1MDI0XHU1MDI3XHU1MDJiXHU1MDJmXHU1MDMwXHU1MDMxXHU1MDMyXHU1MDMzXHU1MDM0XHU1MDM1XHU1''@;'; put 'put ''MDM2XHU1MDM3XHU1MDM4XHU1MDM5XHU1MDNiXHU1MDNkXHU1MDNmXHU1MDQwXHU1MDQxXHU1MDQyXHU1MDQ0XHU1MDQ1XHU1MDQ2XHU1MDQ5XHU1MDRhXHU1MDRiXHU1MDRkXHU1MDUwXHU1MDUxXHU1MDUyXHU1MDUzXHU1MDU0XHU1MDU2XHU1MDU3XHU1MDU4XHU1MDU5XHU1MDViXHU1MDVk''@;'; put 'put ''XHU1MDVlXHU1MDVmXHU1MDYwXHU1MDYxXHU1MDYyXHU1MDYzXHU1MDY0XHU1MDY2XHU1MDY3XHU1MDY4XHU1MDY5XHU1MDZhXHU1MDZiXHU1MDZkXHU1MDZlXHU1MDZmXHU1MDcwXHU1MDcxXHU1MDcyXHU1MDczXHU1MDc0XHU1MDc1XHU1MDc4XHU1MDc5XHU1MDdhXHU1MDdjXHU1MDdkXHU1''@;'; put 'put ''MDgxXHU1MDgyXHU1MDgzXHU1MDg0XHU1MDg2XHU1MDg3XHU1MDg5XHU1MDhhXHU1MDhiXHU1MDhjXHU1MDhlXHU1MDhmXHU1MDkwXHU1MDkxXHU1MDkyXHU1MDkzXHU1MDk0XHU1MDk1XHU1MDk2XHU1MDk3XHU1MDk4XHU1MDk5XHU1MDlhXHU1MDliXHU1MDljXHU1MDlkXHU1MDllXHU1MDlm''@;'; put 'put ''XHU1MGEwXHU1MGExXHU1MGEyXHU1MGE0XHU1MGE2XHU1MGFhXHU1MGFiXHU1MGFkXHU1MGFlXHU1MGFmXHU1MGIwXHU1MGIxXHU1MGIzXHU1MGI0XHU1MGI1XHU1MGI2XHU1MGI3XHU1MGI4XHU1MGI5XHU1MGJjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTMwXS5sZW5ndGg7KytFKTY1''@;'; put 'put ''NTMzIT09QlsxMzBdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzEzMF1bRV1dPTMzMjgwK0UsTFszMzI4MCtFXT1CWzEzMF1bRV0pO2ZvcihCWzEzMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTBiZFx1NTBiZVx1NTBiZlx1NTBj''@;'; put 'put ''MFx1NTBjMVx1NTBjMlx1NTBjM1x1NTBjNFx1NTBjNVx1NTBjNlx1NTBjN1x1NTBjOFx1NTBjOVx1NTBjYVx1NTBjYlx1NTBjY1x1NTBjZFx1NTBjZVx1NTBkMFx1NTBkMVx1NTBkMlx1NTBkM1x1NTBkNFx1NTBkNVx1NTBkN1x1NTBkOFx1NTBkOVx1NTBkYlx1NTBkY1x1NTBkZFx1NTBkZVx1''@;'; put 'put ''NTBkZlx1NTBlMFx1NTBlMVx1NTBlMlx1NTBlM1x1NTBlNFx1NTBlNVx1NTBlOFx1NTBlOVx1NTBlYVx1NTBlYlx1NTBlZlx1NTBmMFx1NTBmMVx1NTBmMlx1NTBmNFx1NTBmNlx1NTBmN1x1NTBmOFx1NTBmOVx1NTBmYVx1NTBmY1x1NTBmZFx1NTBmZVx1NTBmZlx1NTEwMFx1NTEwMVx1NTEw''@;'; put 'put ''Mlx1NTEwM1x1NTEwNFx1NTEwNVx1NTEwOFx1ZmZmZFx1NTEwOVx1NTEwYVx1NTEwY1x1NTEwZFx1NTEwZVx1NTEwZlx1NTExMFx1NTExMVx1NTExM1x1NTExNFx1NTExNVx1NTExNlx1NTExN1x1NTExOFx1NTExOVx1NTExYVx1NTExYlx1NTExY1x1NTExZFx1NTExZVx1NTExZlx1NTEyMFx1''@;'; put 'put ''NTEyMlx1NTEyM1x1NTEyNFx1NTEyNVx1NTEyNlx1NTEyN1x1NTEyOFx1NTEyOVx1NTEyYVx1NTEyYlx1NTEyY1x1NTEyZFx1NTEyZVx1NTEyZlx1NTEzMFx1NTEzMVx1NTEzMlx1NTEzM1x1NTEzNFx1NTEzNVx1NTEzNlx1NTEzN1x1NTEzOFx1NTEzOVx1NTEzYVx1NTEzYlx1NTEzY1x1NTEz''@;'; put 'put ''ZFx1NTEzZVx1NTE0Mlx1NTE0N1x1NTE0YVx1NTE0Y1x1NTE0ZVx1NTE0Zlx1NTE1MFx1NTE1Mlx1NTE1M1x1NTE1N1x1NTE1OFx1NTE1OVx1NTE1Ylx1NTE1ZFx1NTE1ZVx1NTE1Zlx1NTE2MFx1NTE2MVx1NTE2M1x1NTE2NFx1NTE2Nlx1NTE2N1x1NTE2OVx1NTE2YVx1NTE2Zlx1NTE3Mlx1''@;'; put 'put ''NTE3YVx1NTE3ZVx1NTE3Zlx1NTE4M1x1NTE4NFx1NTE4Nlx1NTE4N1x1NTE4YVx1NTE4Ylx1NTE4ZVx1NTE4Zlx1NTE5MFx1NTE5MVx1NTE5M1x1NTE5NFx1NTE5OFx1NTE5YVx1NTE5ZFx1NTE5ZVx1NTE5Zlx1NTFhMVx1NTFhM1x1NTFhNlx1NTFhN1x1NTFhOFx1NTFhOVx1NTFhYVx1NTFh''@;'; put 'put ''ZFx1NTFhZVx1NTFiNFx1NTFiOFx1NTFiOVx1NTFiYVx1NTFiZVx1NTFiZlx1NTFjMVx1NTFjMlx1NTFjM1x1NTFjNVx1NTFjOFx1NTFjYVx1NTFjZFx1NTFjZVx1NTFkMFx1NTFkMlx1NTFkM1x1NTFkNFx1NTFkNVx1NTFkNlx1NTFkN1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEzMV0u''@;'; put 'put ''bGVuZ3RoOysrRSk2NTUzMyE9PUJbMTMxXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxMzFdW0VdXT0zMzUzNitFLExbMzM1MzYrRV09QlsxMzFdW0VdKTtmb3IoQlsxMzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTUxZDhcdTUx''@;'; put 'put ''ZDlcdTUxZGFcdTUxZGNcdTUxZGVcdTUxZGZcdTUxZTJcdTUxZTNcdTUxZTVcdTUxZTZcdTUxZTdcdTUxZThcdTUxZTlcdTUxZWFcdTUxZWNcdTUxZWVcdTUxZjFcdTUxZjJcdTUxZjRcdTUxZjdcdTUxZmVcdTUyMDRcdTUyMDVcdTUyMDlcdTUyMGJcdTUyMGNcdTUyMGZcdTUyMTBcdTUyMTNc''@;'; put 'put ''dTUyMTRcdTUyMTVcdTUyMWNcdTUyMWVcdTUyMWZcdTUyMjFcdTUyMjJcdTUyMjNcdTUyMjVcdTUyMjZcdTUyMjdcdTUyMmFcdTUyMmNcdTUyMmZcdTUyMzFcdTUyMzJcdTUyMzRcdTUyMzVcdTUyM2NcdTUyM2VcdTUyNDRcdTUyNDVcdTUyNDZcdTUyNDdcdTUyNDhcdTUyNDlcdTUyNGJcdTUy''@;'; put 'put ''NGVcdTUyNGZcdTUyNTJcdTUyNTNcdTUyNTVcdTUyNTdcdTUyNThcdWZmZmRcdTUyNTlcdTUyNWFcdTUyNWJcdTUyNWRcdTUyNWZcdTUyNjBcdTUyNjJcdTUyNjNcdTUyNjRcdTUyNjZcdTUyNjhcdTUyNmJcdTUyNmNcdTUyNmRcdTUyNmVcdTUyNzBcdTUyNzFcdTUyNzNcdTUyNzRcdTUyNzVc''@;'; put 'put ''dTUyNzZcdTUyNzdcdTUyNzhcdTUyNzlcdTUyN2FcdTUyN2JcdTUyN2NcdTUyN2VcdTUyODBcdTUyODNcdTUyODRcdTUyODVcdTUyODZcdTUyODdcdTUyODlcdTUyOGFcdTUyOGJcdTUyOGNcdTUyOGRcdTUyOGVcdTUyOGZcdTUyOTFcdTUyOTJcdTUyOTRcdTUyOTVcdTUyOTZcdTUyOTdcdTUy''@;'; put 'put ''OThcdTUyOTlcdTUyOWFcdTUyOWNcdTUyYTRcdTUyYTVcdTUyYTZcdTUyYTdcdTUyYWVcdTUyYWZcdTUyYjBcdTUyYjRcdTUyYjVcdTUyYjZcdTUyYjdcdTUyYjhcdTUyYjlcdTUyYmFcdTUyYmJcdTUyYmNcdTUyYmRcdTUyYzBcdTUyYzFcdTUyYzJcdTUyYzRcdTUyYzVcdTUyYzZcdTUyYzhc''@;'; put 'put ''dTUyY2FcdTUyY2NcdTUyY2RcdTUyY2VcdTUyY2ZcdTUyZDFcdTUyZDNcdTUyZDRcdTUyZDVcdTUyZDdcdTUyZDlcdTUyZGFcdTUyZGJcdTUyZGNcdTUyZGRcdTUyZGVcdTUyZTBcdTUyZTFcdTUyZTJcdTUyZTNcdTUyZTVcdTUyZTZcdTUyZTdcdTUyZThcdTUyZTlcdTUyZWFcdTUyZWJcdTUy''@;'; put 'put ''ZWNcdTUyZWRcdTUyZWVcdTUyZWZcdTUyZjFcdTUyZjJcdTUyZjNcdTUyZjRcdTUyZjVcdTUyZjZcdTUyZjdcdTUyZjhcdTUyZmJcdTUyZmNcdTUyZmRcdTUzMDFcdTUzMDJcdTUzMDNcdTUzMDRcdTUzMDdcdTUzMDlcdTUzMGFcdTUzMGJcdTUzMGNcdTUzMGVcdWZmZmQiLnNwbGl0KCIiKSxF''@;'; put 'put ''PTA7RSE9QlsxMzJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEzMl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTMyXVtFXV09MzM3OTIrRSxMWzMzNzkyK0VdPUJbMTMyXVtFXSk7Zm9yKEJbMTMzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHU1MzExXHU1MzEyXHU1MzEzXHU1MzE0XHU1MzE4XHU1MzFiXHU1MzFjXHU1MzFlXHU1MzFmXHU1MzIyXHU1MzI0XHU1MzI1XHU1MzI3XHU1MzI4XHU1MzI5XHU1MzJiXHU1MzJjXHU1MzJkXHU1MzJmXHU1MzMwXHU1MzMxXHU1MzMyXHU1MzMzXHU1MzM0XHU1MzM1XHU1MzM2XHU1MzM3''@;'; put 'put ''XHU1MzM4XHU1MzNjXHU1MzNkXHU1MzQwXHU1MzQyXHU1MzQ0XHU1MzQ2XHU1MzRiXHU1MzRjXHU1MzRkXHU1MzUwXHU1MzU0XHU1MzU4XHU1MzU5XHU1MzViXHU1MzVkXHU1MzY1XHU1MzY4XHU1MzZhXHU1MzZjXHU1MzZkXHU1MzcyXHU1Mzc2XHU1Mzc5XHU1MzdiXHU1MzdjXHU1MzdkXHU1''@;'; put 'put ''MzdlXHU1MzgwXHU1MzgxXHU1MzgzXHU1Mzg3XHU1Mzg4XHU1MzhhXHU1MzhlXHU1MzhmXHVmZmZkXHU1MzkwXHU1MzkxXHU1MzkyXHU1MzkzXHU1Mzk0XHU1Mzk2XHU1Mzk3XHU1Mzk5XHU1MzliXHU1MzljXHU1MzllXHU1M2EwXHU1M2ExXHU1M2E0XHU1M2E3XHU1M2FhXHU1M2FiXHU1M2Fj''@;'; put 'put ''XHU1M2FkXHU1M2FmXHU1M2IwXHU1M2IxXHU1M2IyXHU1M2IzXHU1M2I0XHU1M2I1XHU1M2I3XHU1M2I4XHU1M2I5XHU1M2JhXHU1M2JjXHU1M2JkXHU1M2JlXHU1M2MwXHU1M2MzXHU1M2M0XHU1M2M1XHU1M2M2XHU1M2M3XHU1M2NlXHU1M2NmXHU1M2QwXHU1M2QyXHU1M2QzXHU1M2Q1XHU1''@;'; put 'put ''M2RhXHU1M2RjXHU1M2RkXHU1M2RlXHU1M2UxXHU1M2UyXHU1M2U3XHU1M2Y0XHU1M2ZhXHU1M2ZlXHU1M2ZmXHU1NDAwXHU1NDAyXHU1NDA1XHU1NDA3XHU1NDBiXHU1NDE0XHU1NDE4XHU1NDE5XHU1NDFhXHU1NDFjXHU1NDIyXHU1NDI0XHU1NDI1XHU1NDJhXHU1NDMwXHU1NDMzXHU1NDM2''@;'; put 'put ''XHU1NDM3XHU1NDNhXHU1NDNkXHU1NDNmXHU1NDQxXHU1NDQyXHU1NDQ0XHU1NDQ1XHU1NDQ3XHU1NDQ5XHU1NDRjXHU1NDRkXHU1NDRlXHU1NDRmXHU1NDUxXHU1NDVhXHU1NDVkXHU1NDVlXHU1NDVmXHU1NDYwXHU1NDYxXHU1NDYzXHU1NDY1XHU1NDY3XHU1NDY5XHU1NDZhXHU1NDZiXHU1''@;'; put 'put ''NDZjXHU1NDZkXHU1NDZlXHU1NDZmXHU1NDcwXHU1NDc0XHU1NDc5XHU1NDdhXHU1NDdlXHU1NDdmXHU1NDgxXHU1NDgzXHU1NDg1XHU1NDg3XHU1NDg4XHU1NDg5XHU1NDhhXHU1NDhkXHU1NDkxXHU1NDkzXHU1NDk3XHU1NDk4XHU1NDljXHU1NDllXHU1NDlmXHU1NGEwXHU1NGExXHVmZmZk''@;'; put 'put ''Ii5zcGxpdCgiIiksRT0wO0UhPUJbMTMzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxMzNdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzEzM11bRV1dPTM0MDQ4K0UsTFszNDA0OCtFXT1CWzEzM11bRV0pO2ZvcihCWzEzNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1NTRhMlx1NTRhNVx1NTRhZVx1NTRiMFx1NTRiMlx1NTRiNVx1NTRiNlx1NTRiN1x1NTRiOVx1NTRiYVx1NTRiY1x1NTRiZVx1NTRjM1x1NTRjNVx1NTRjYVx1NTRjYlx1NTRkNlx1NTRkOFx1NTRkYlx1NTRlMFx1NTRlMVx1NTRlMlx1NTRlM1x1NTRlNFx1NTRl''@;'; put 'put ''Ylx1NTRlY1x1NTRlZlx1NTRmMFx1NTRmMVx1NTRmNFx1NTRmNVx1NTRmNlx1NTRmN1x1NTRmOFx1NTRmOVx1NTRmYlx1NTRmZVx1NTUwMFx1NTUwMlx1NTUwM1x1NTUwNFx1NTUwNVx1NTUwOFx1NTUwYVx1NTUwYlx1NTUwY1x1NTUwZFx1NTUwZVx1NTUxMlx1NTUxM1x1NTUxNVx1NTUxNlx1''@;'; put 'put ''NTUxN1x1NTUxOFx1NTUxOVx1NTUxYVx1NTUxY1x1NTUxZFx1NTUxZVx1NTUxZlx1NTUyMVx1NTUyNVx1NTUyNlx1ZmZmZFx1NTUyOFx1NTUyOVx1NTUyYlx1NTUyZFx1NTUzMlx1NTUzNFx1NTUzNVx1NTUzNlx1NTUzOFx1NTUzOVx1NTUzYVx1NTUzYlx1NTUzZFx1NTU0MFx1NTU0Mlx1NTU0''@;'; put 'put ''NVx1NTU0N1x1NTU0OFx1NTU0Ylx1NTU0Y1x1NTU0ZFx1NTU0ZVx1NTU0Zlx1NTU1MVx1NTU1Mlx1NTU1M1x1NTU1NFx1NTU1N1x1NTU1OFx1NTU1OVx1NTU1YVx1NTU1Ylx1NTU1ZFx1NTU1ZVx1NTU1Zlx1NTU2MFx1NTU2Mlx1NTU2M1x1NTU2OFx1NTU2OVx1NTU2Ylx1NTU2Zlx1NTU3MFx1''@;'; put 'put ''NTU3MVx1NTU3Mlx1NTU3M1x1NTU3NFx1NTU3OVx1NTU3YVx1NTU3ZFx1NTU3Zlx1NTU4NVx1NTU4Nlx1NTU4Y1x1NTU4ZFx1NTU4ZVx1NTU5MFx1NTU5Mlx1NTU5M1x1NTU5NVx1NTU5Nlx1NTU5N1x1NTU5YVx1NTU5Ylx1NTU5ZVx1NTVhMFx1NTVhMVx1NTVhMlx1NTVhM1x1NTVhNFx1NTVh''@;'; put 'put ''NVx1NTVhNlx1NTVhOFx1NTVhOVx1NTVhYVx1NTVhYlx1NTVhY1x1NTVhZFx1NTVhZVx1NTVhZlx1NTViMFx1NTViMlx1NTViNFx1NTViNlx1NTViOFx1NTViYVx1NTViY1x1NTViZlx1NTVjMFx1NTVjMVx1NTVjMlx1NTVjM1x1NTVjNlx1NTVjN1x1NTVjOFx1NTVjYVx1NTVjYlx1NTVjZVx1''@;'; put 'put ''NTVjZlx1NTVkMFx1NTVkNVx1NTVkN1x1NTVkOFx1NTVkOVx1NTVkYVx1NTVkYlx1NTVkZVx1NTVlMFx1NTVlMlx1NTVlN1x1NTVlOVx1NTVlZFx1NTVlZVx1NTVmMFx1NTVmMVx1NTVmNFx1NTVmNlx1NTVmOFx1NTVmOVx1NTVmYVx1NTVmYlx1NTVmY1x1NTVmZlx1NTYwMlx1NTYwM1x1NTYw''@;'; put 'put ''NFx1NTYwNVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEzNF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTM0XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxMzRdW0VdXT0zNDMwNCtFLExbMzQzMDQrRV09QlsxMzRdW0VdKTtmb3IoQlsxMzVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU2MDZcdTU2MDdcdTU2MGFcdTU2MGJcdTU2MGRcdTU2MTBcdTU2MTFcdTU2MTJcdTU2MTNcdTU2MTRcdTU2MTVcdTU2MTZcdTU2MTdcdTU2MTlcdTU2MWFcdTU2MWNcdTU2MWRcdTU2MjBcdTU2MjFcdTU2MjJcdTU2MjVcdTU2MjZcdTU2''@;'; put 'put ''MjhcdTU2MjlcdTU2MmFcdTU2MmJcdTU2MmVcdTU2MmZcdTU2MzBcdTU2MzNcdTU2MzVcdTU2MzdcdTU2MzhcdTU2M2FcdTU2M2NcdTU2M2RcdTU2M2VcdTU2NDBcdTU2NDFcdTU2NDJcdTU2NDNcdTU2NDRcdTU2NDVcdTU2NDZcdTU2NDdcdTU2NDhcdTU2NDlcdTU2NGFcdTU2NGJcdTU2NGZc''@;'; put 'put ''dTU2NTBcdTU2NTFcdTU2NTJcdTU2NTNcdTU2NTVcdTU2NTZcdTU2NWFcdTU2NWJcdTU2NWRcdTU2NWVcdTU2NWZcdTU2NjBcdTU2NjFcdWZmZmRcdTU2NjNcdTU2NjVcdTU2NjZcdTU2NjdcdTU2NmRcdTU2NmVcdTU2NmZcdTU2NzBcdTU2NzJcdTU2NzNcdTU2NzRcdTU2NzVcdTU2NzdcdTU2''@;'; put 'put ''NzhcdTU2NzlcdTU2N2FcdTU2N2RcdTU2N2VcdTU2N2ZcdTU2ODBcdTU2ODFcdTU2ODJcdTU2ODNcdTU2ODRcdTU2ODdcdTU2ODhcdTU2ODlcdTU2OGFcdTU2OGJcdTU2OGNcdTU2OGRcdTU2OTBcdTU2OTFcdTU2OTJcdTU2OTRcdTU2OTVcdTU2OTZcdTU2OTdcdTU2OThcdTU2OTlcdTU2OWFc''@;'; put 'put ''dTU2OWJcdTU2OWNcdTU2OWRcdTU2OWVcdTU2OWZcdTU2YTBcdTU2YTFcdTU2YTJcdTU2YTRcdTU2YTVcdTU2YTZcdTU2YTdcdTU2YThcdTU2YTlcdTU2YWFcdTU2YWJcdTU2YWNcdTU2YWRcdTU2YWVcdTU2YjBcdTU2YjFcdTU2YjJcdTU2YjNcdTU2YjRcdTU2YjVcdTU2YjZcdTU2YjhcdTU2''@;'; put 'put ''YjlcdTU2YmFcdTU2YmJcdTU2YmRcdTU2YmVcdTU2YmZcdTU2YzBcdTU2YzFcdTU2YzJcdTU2YzNcdTU2YzRcdTU2YzVcdTU2YzZcdTU2YzdcdTU2YzhcdTU2YzlcdTU2Y2JcdTU2Y2NcdTU2Y2RcdTU2Y2VcdTU2Y2ZcdTU2ZDBcdTU2ZDFcdTU2ZDJcdTU2ZDNcdTU2ZDVcdTU2ZDZcdTU2ZDhc''@;'; put 'put ''dTU2ZDlcdTU2ZGNcdTU2ZTNcdTU2ZTVcdTU2ZTZcdTU2ZTdcdTU2ZThcdTU2ZTlcdTU2ZWFcdTU2ZWNcdTU2ZWVcdTU2ZWZcdTU2ZjJcdTU2ZjNcdTU2ZjZcdTU2ZjdcdTU2ZjhcdTU2ZmJcdTU2ZmNcdTU3MDBcdTU3MDFcdTU3MDJcdTU3MDVcdTU3MDdcdTU3MGJcdTU3MGNcdTU3MGRcdTU3''@;'; put 'put ''MGVcdTU3MGZcdTU3MTBcdTU3MTFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxMzVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEzNV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTM1XVtFXV09MzQ1NjArRSxMWzM0NTYwK0VdPUJbMTM1XVtFXSk7Zm9yKEJbMTM2XT0iXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NzEyXHU1NzEzXHU1NzE0XHU1NzE1XHU1NzE2XHU1NzE3XHU1NzE4XHU1NzE5XHU1NzFhXHU1NzFiXHU1NzFkXHU1NzFlXHU1NzIwXHU1NzIxXHU1NzIyXHU1NzI0XHU1NzI1XHU1NzI2XHU1NzI3XHU1NzJiXHU1''@;'; put 'put ''NzMxXHU1NzMyXHU1NzM0XHU1NzM1XHU1NzM2XHU1NzM3XHU1NzM4XHU1NzNjXHU1NzNkXHU1NzNmXHU1NzQxXHU1NzQzXHU1NzQ0XHU1NzQ1XHU1NzQ2XHU1NzQ4XHU1NzQ5XHU1NzRiXHU1NzUyXHU1NzUzXHU1NzU0XHU1NzU1XHU1NzU2XHU1NzU4XHU1NzU5XHU1NzYyXHU1NzYzXHU1NzY1''@;'; put 'put ''XHU1NzY3XHU1NzZjXHU1NzZlXHU1NzcwXHU1NzcxXHU1NzcyXHU1Nzc0XHU1Nzc1XHU1Nzc4XHU1Nzc5XHU1NzdhXHU1NzdkXHU1NzdlXHU1NzdmXHU1NzgwXHVmZmZkXHU1NzgxXHU1Nzg3XHU1Nzg4XHU1Nzg5XHU1NzhhXHU1NzhkXHU1NzhlXHU1NzhmXHU1NzkwXHU1NzkxXHU1Nzk0XHU1''@;'; put 'put ''Nzk1XHU1Nzk2XHU1Nzk3XHU1Nzk4XHU1Nzk5XHU1NzlhXHU1NzljXHU1NzlkXHU1NzllXHU1NzlmXHU1N2E1XHU1N2E4XHU1N2FhXHU1N2FjXHU1N2FmXHU1N2IwXHU1N2IxXHU1N2IzXHU1N2I1XHU1N2I2XHU1N2I3XHU1N2I5XHU1N2JhXHU1N2JiXHU1N2JjXHU1N2JkXHU1N2JlXHU1N2Jm''@;'; put 'put ''XHU1N2MwXHU1N2MxXHU1N2M0XHU1N2M1XHU1N2M2XHU1N2M3XHU1N2M4XHU1N2M5XHU1N2NhXHU1N2NjXHU1N2NkXHU1N2QwXHU1N2QxXHU1N2QzXHU1N2Q2XHU1N2Q3XHU1N2RiXHU1N2RjXHU1N2RlXHU1N2UxXHU1N2UyXHU1N2UzXHU1N2U1XHU1N2U2XHU1N2U3XHU1N2U4XHU1N2U5XHU1''@;'; put 'put ''N2VhXHU1N2ViXHU1N2VjXHU1N2VlXHU1N2YwXHU1N2YxXHU1N2YyXHU1N2YzXHU1N2Y1XHU1N2Y2XHU1N2Y3XHU1N2ZiXHU1N2ZjXHU1N2ZlXHU1N2ZmXHU1ODAxXHU1ODAzXHU1ODA0XHU1ODA1XHU1ODA4XHU1ODA5XHU1ODBhXHU1ODBjXHU1ODBlXHU1ODBmXHU1ODEwXHU1ODEyXHU1ODEz''@;'; put 'put ''XHU1ODE0XHU1ODE2XHU1ODE3XHU1ODE4XHU1ODFhXHU1ODFiXHU1ODFjXHU1ODFkXHU1ODFmXHU1ODIyXHU1ODIzXHU1ODI1XHU1ODI2XHU1ODI3XHU1ODI4XHU1ODI5XHU1ODJiXHU1ODJjXHU1ODJkXHU1ODJlXHU1ODJmXHU1ODMxXHU1ODMyXHU1ODMzXHU1ODM0XHU1ODM2XHU1ODM3XHU1''@;'; put 'put ''ODM4XHU1ODM5XHU1ODNhXHU1ODNiXHU1ODNjXHU1ODNkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTM2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxMzZdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzEzNl1bRV1dPTM0ODE2K0UsTFszNDgxNitFXT1CWzEzNl1bRV0pO2ZvcihCWzEzN109''@;'; put 'put ''Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTgzZVx1NTgzZlx1NTg0MFx1NTg0MVx1NTg0Mlx1NTg0M1x1NTg0NVx1NTg0Nlx1NTg0N1x1NTg0OFx1NTg0OVx1NTg0YVx1NTg0Ylx1NTg0ZVx1NTg0Zlx1NTg1MFx1NTg1Mlx1NTg1M1x1''@;'; put 'put ''NTg1NVx1NTg1Nlx1NTg1N1x1NTg1OVx1NTg1YVx1NTg1Ylx1NTg1Y1x1NTg1ZFx1NTg1Zlx1NTg2MFx1NTg2MVx1NTg2Mlx1NTg2M1x1NTg2NFx1NTg2Nlx1NTg2N1x1NTg2OFx1NTg2OVx1NTg2YVx1NTg2ZFx1NTg2ZVx1NTg2Zlx1NTg3MFx1NTg3MVx1NTg3Mlx1NTg3M1x1NTg3NFx1NTg3''@;'; put 'put ''NVx1NTg3Nlx1NTg3N1x1NTg3OFx1NTg3OVx1NTg3YVx1NTg3Ylx1NTg3Y1x1NTg3ZFx1NTg3Zlx1NTg4Mlx1NTg4NFx1NTg4Nlx1NTg4N1x1NTg4OFx1NTg4YVx1NTg4Ylx1NTg4Y1x1ZmZmZFx1NTg4ZFx1NTg4ZVx1NTg4Zlx1NTg5MFx1NTg5MVx1NTg5NFx1NTg5NVx1NTg5Nlx1NTg5N1x1''@;'; put 'put ''NTg5OFx1NTg5Ylx1NTg5Y1x1NTg5ZFx1NThhMFx1NThhMVx1NThhMlx1NThhM1x1NThhNFx1NThhNVx1NThhNlx1NThhN1x1NThhYVx1NThhYlx1NThhY1x1NThhZFx1NThhZVx1NThhZlx1NThiMFx1NThiMVx1NThiMlx1NThiM1x1NThiNFx1NThiNVx1NThiNlx1NThiN1x1NThiOFx1NThi''@;'; put 'put ''OVx1NThiYVx1NThiYlx1NThiZFx1NThiZVx1NThiZlx1NThjMFx1NThjMlx1NThjM1x1NThjNFx1NThjNlx1NThjN1x1NThjOFx1NThjOVx1NThjYVx1NThjYlx1NThjY1x1NThjZFx1NThjZVx1NThjZlx1NThkMFx1NThkMlx1NThkM1x1NThkNFx1NThkNlx1NThkN1x1NThkOFx1NThkOVx1''@;'; put 'put ''NThkYVx1NThkYlx1NThkY1x1NThkZFx1NThkZVx1NThkZlx1NThlMFx1NThlMVx1NThlMlx1NThlM1x1NThlNVx1NThlNlx1NThlN1x1NThlOFx1NThlOVx1NThlYVx1NThlZFx1NThlZlx1NThmMVx1NThmMlx1NThmNFx1NThmNVx1NThmN1x1NThmOFx1NThmYVx1NThmYlx1NThmY1x1NThm''@;'; put 'put ''ZFx1NThmZVx1NThmZlx1NTkwMFx1NTkwMVx1NTkwM1x1NTkwNVx1NTkwNlx1NTkwOFx1NTkwOVx1NTkwYVx1NTkwYlx1NTkwY1x1NTkwZVx1NTkxMFx1NTkxMVx1NTkxMlx1NTkxM1x1NTkxN1x1NTkxOFx1NTkxYlx1NTkxZFx1NTkxZVx1NTkyMFx1NTkyMVx1NTkyMlx1NTkyM1x1NTkyNlx1''@;'; put 'put ''NTkyOFx1NTkyY1x1NTkzMFx1NTkzMlx1NTkzM1x1NTkzNVx1NTkzNlx1NTkzYlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEzN10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTM3XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxMzddW0VdXT0zNTA3MitFLExbMzUwNzIrRV09QlsxMzddW0Vd''@;'; put 'put ''KTtmb3IoQlsxMzhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU5M2RcdTU5M2VcdTU5M2ZcdTU5NDBcdTU5NDNcdTU5NDVcdTU5NDZcdTU5NGFcdTU5NGNcdTU5NGRcdTU5NTBcdTU5NTJcdTU5NTNcdTU5NTlcdTU5NWJcdTU5NWNc''@;'; put 'put ''dTU5NWRcdTU5NWVcdTU5NWZcdTU5NjFcdTU5NjNcdTU5NjRcdTU5NjZcdTU5NjdcdTU5NjhcdTU5NjlcdTU5NmFcdTU5NmJcdTU5NmNcdTU5NmRcdTU5NmVcdTU5NmZcdTU5NzBcdTU5NzFcdTU5NzJcdTU5NzVcdTU5NzdcdTU5N2FcdTU5N2JcdTU5N2NcdTU5N2VcdTU5N2ZcdTU5ODBcdTU5''@;'; put 'put ''ODVcdTU5ODlcdTU5OGJcdTU5OGNcdTU5OGVcdTU5OGZcdTU5OTBcdTU5OTFcdTU5OTRcdTU5OTVcdTU5OThcdTU5OWFcdTU5OWJcdTU5OWNcdTU5OWRcdTU5OWZcdTU5YTBcdTU5YTFcdTU5YTJcdTU5YTZcdWZmZmRcdTU5YTdcdTU5YWNcdTU5YWRcdTU5YjBcdTU5YjFcdTU5YjNcdTU5YjRc''@;'; put 'put ''dTU5YjVcdTU5YjZcdTU5YjdcdTU5YjhcdTU5YmFcdTU5YmNcdTU5YmRcdTU5YmZcdTU5YzBcdTU5YzFcdTU5YzJcdTU5YzNcdTU5YzRcdTU5YzVcdTU5YzdcdTU5YzhcdTU5YzlcdTU5Y2NcdTU5Y2RcdTU5Y2VcdTU5Y2ZcdTU5ZDVcdTU5ZDZcdTU5ZDlcdTU5ZGJcdTU5ZGVcdTU5ZGZcdTU5''@;'; put 'put ''ZTBcdTU5ZTFcdTU5ZTJcdTU5ZTRcdTU5ZTZcdTU5ZTdcdTU5ZTlcdTU5ZWFcdTU5ZWJcdTU5ZWRcdTU5ZWVcdTU5ZWZcdTU5ZjBcdTU5ZjFcdTU5ZjJcdTU5ZjNcdTU5ZjRcdTU5ZjVcdTU5ZjZcdTU5ZjdcdTU5ZjhcdTU5ZmFcdTU5ZmNcdTU5ZmRcdTU5ZmVcdTVhMDBcdTVhMDJcdTVhMGFc''@;'; put 'put ''dTVhMGJcdTVhMGRcdTVhMGVcdTVhMGZcdTVhMTBcdTVhMTJcdTVhMTRcdTVhMTVcdTVhMTZcdTVhMTdcdTVhMTlcdTVhMWFcdTVhMWJcdTVhMWRcdTVhMWVcdTVhMjFcdTVhMjJcdTVhMjRcdTVhMjZcdTVhMjdcdTVhMjhcdTVhMmFcdTVhMmJcdTVhMmNcdTVhMmRcdTVhMmVcdTVhMmZcdTVh''@;'; put 'put ''MzBcdTVhMzNcdTVhMzVcdTVhMzdcdTVhMzhcdTVhMzlcdTVhM2FcdTVhM2JcdTVhM2RcdTVhM2VcdTVhM2ZcdTVhNDFcdTVhNDJcdTVhNDNcdTVhNDRcdTVhNDVcdTVhNDdcdTVhNDhcdTVhNGJcdTVhNGNcdTVhNGRcdTVhNGVcdTVhNGZcdTVhNTBcdTVhNTFcdTVhNTJcdTVhNTNcdTVhNTRc''@;'; put 'put ''dTVhNTZcdTVhNTdcdTVhNThcdTVhNTlcdTVhNWJcdTVhNWNcdTVhNWRcdTVhNWVcdTVhNWZcdTVhNjBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxMzhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEzOF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTM4XVtFXV09MzUzMjgrRSxMWzM1MzI4''@;'; put 'put ''K0VdPUJbMTM4XVtFXSk7Zm9yKEJbMTM5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YTYxXHU1YTYzXHU1YTY0XHU1YTY1XHU1YTY2XHU1YTY4XHU1YTY5XHU1YTZiXHU1YTZjXHU1YTZkXHU1YTZlXHU1YTZmXHU1YTcwXHU1YTcx''@;'; put 'put ''XHU1YTcyXHU1YTczXHU1YTc4XHU1YTc5XHU1YTdiXHU1YTdjXHU1YTdkXHU1YTdlXHU1YTgwXHU1YTgxXHU1YTgyXHU1YTgzXHU1YTg0XHU1YTg1XHU1YTg2XHU1YTg3XHU1YTg4XHU1YTg5XHU1YThhXHU1YThiXHU1YThjXHU1YThkXHU1YThlXHU1YThmXHU1YTkwXHU1YTkxXHU1YTkzXHU1''@;'; put 'put ''YTk0XHU1YTk1XHU1YTk2XHU1YTk3XHU1YTk4XHU1YTk5XHU1YTljXHU1YTlkXHU1YTllXHU1YTlmXHU1YWEwXHU1YWExXHU1YWEyXHU1YWEzXHU1YWE0XHU1YWE1XHU1YWE2XHU1YWE3XHU1YWE4XHU1YWE5XHU1YWFiXHU1YWFjXHVmZmZkXHU1YWFkXHU1YWFlXHU1YWFmXHU1YWIwXHU1YWIx''@;'; put 'put ''XHU1YWI0XHU1YWI2XHU1YWI3XHU1YWI5XHU1YWJhXHU1YWJiXHU1YWJjXHU1YWJkXHU1YWJmXHU1YWMwXHU1YWMzXHU1YWM0XHU1YWM1XHU1YWM2XHU1YWM3XHU1YWM4XHU1YWNhXHU1YWNiXHU1YWNkXHU1YWNlXHU1YWNmXHU1YWQwXHU1YWQxXHU1YWQzXHU1YWQ1XHU1YWQ3XHU1YWQ5XHU1''@;'; put 'put ''YWRhXHU1YWRiXHU1YWRkXHU1YWRlXHU1YWRmXHU1YWUyXHU1YWU0XHU1YWU1XHU1YWU3XHU1YWU4XHU1YWVhXHU1YWVjXHU1YWVkXHU1YWVlXHU1YWVmXHU1YWYwXHU1YWYyXHU1YWYzXHU1YWY0XHU1YWY1XHU1YWY2XHU1YWY3XHU1YWY4XHU1YWY5XHU1YWZhXHU1YWZiXHU1YWZjXHU1YWZk''@;'; put 'put ''XHU1YWZlXHU1YWZmXHU1YjAwXHU1YjAxXHU1YjAyXHU1YjAzXHU1YjA0XHU1YjA1XHU1YjA2XHU1YjA3XHU1YjA4XHU1YjBhXHU1YjBiXHU1YjBjXHU1YjBkXHU1YjBlXHU1YjBmXHU1YjEwXHU1YjExXHU1YjEyXHU1YjEzXHU1YjE0XHU1YjE1XHU1YjE4XHU1YjE5XHU1YjFhXHU1YjFiXHU1''@;'; put 'put ''YjFjXHU1YjFkXHU1YjFlXHU1YjFmXHU1YjIwXHU1YjIxXHU1YjIyXHU1YjIzXHU1YjI0XHU1YjI1XHU1YjI2XHU1YjI3XHU1YjI4XHU1YjI5XHU1YjJhXHU1YjJiXHU1YjJjXHU1YjJkXHU1YjJlXHU1YjJmXHU1YjMwXHU1YjMxXHU1YjMzXHU1YjM1XHU1YjM2XHU1YjM4XHU1YjM5XHU1YjNh''@;'; put 'put ''XHU1YjNiXHU1YjNjXHU1YjNkXHU1YjNlXHU1YjNmXHU1YjQxXHU1YjQyXHU1YjQzXHU1YjQ0XHU1YjQ1XHU1YjQ2XHU1YjQ3XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTM5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxMzldW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzEzOV1bRV1dPTM1''@;'; put 'put ''NTg0K0UsTFszNTU4NCtFXT1CWzEzOV1bRV0pO2ZvcihCWzE0MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWI0OFx1NWI0OVx1NWI0YVx1NWI0Ylx1NWI0Y1x1NWI0ZFx1NWI0ZVx1NWI0Zlx1NWI1Mlx1NWI1Nlx1NWI1ZVx1NWI2''@;'; put 'put ''MFx1NWI2MVx1NWI2N1x1NWI2OFx1NWI2Ylx1NWI2ZFx1NWI2ZVx1NWI2Zlx1NWI3Mlx1NWI3NFx1NWI3Nlx1NWI3N1x1NWI3OFx1NWI3OVx1NWI3Ylx1NWI3Y1x1NWI3ZVx1NWI3Zlx1NWI4Mlx1NWI4Nlx1NWI4YVx1NWI4ZFx1NWI4ZVx1NWI5MFx1NWI5MVx1NWI5Mlx1NWI5NFx1NWI5Nlx1''@;'; put 'put ''NWI5Zlx1NWJhN1x1NWJhOFx1NWJhOVx1NWJhY1x1NWJhZFx1NWJhZVx1NWJhZlx1NWJiMVx1NWJiMlx1NWJiN1x1NWJiYVx1NWJiYlx1NWJiY1x1NWJjMFx1NWJjMVx1NWJjM1x1NWJjOFx1NWJjOVx1NWJjYVx1NWJjYlx1NWJjZFx1NWJjZVx1NWJjZlx1ZmZmZFx1NWJkMVx1NWJkNFx1NWJk''@;'; put 'put ''NVx1NWJkNlx1NWJkN1x1NWJkOFx1NWJkOVx1NWJkYVx1NWJkYlx1NWJkY1x1NWJlMFx1NWJlMlx1NWJlM1x1NWJlNlx1NWJlN1x1NWJlOVx1NWJlYVx1NWJlYlx1NWJlY1x1NWJlZFx1NWJlZlx1NWJmMVx1NWJmMlx1NWJmM1x1NWJmNFx1NWJmNVx1NWJmNlx1NWJmN1x1NWJmZFx1NWJmZVx1''@;'; put 'put ''NWMwMFx1NWMwMlx1NWMwM1x1NWMwNVx1NWMwN1x1NWMwOFx1NWMwYlx1NWMwY1x1NWMwZFx1NWMwZVx1NWMxMFx1NWMxMlx1NWMxM1x1NWMxN1x1NWMxOVx1NWMxYlx1NWMxZVx1NWMxZlx1NWMyMFx1NWMyMVx1NWMyM1x1NWMyNlx1NWMyOFx1NWMyOVx1NWMyYVx1NWMyYlx1NWMyZFx1NWMy''@;'; put 'put ''ZVx1NWMyZlx1NWMzMFx1NWMzMlx1NWMzM1x1NWMzNVx1NWMzNlx1NWMzN1x1NWM0M1x1NWM0NFx1NWM0Nlx1NWM0N1x1NWM0Y1x1NWM0ZFx1NWM1Mlx1NWM1M1x1NWM1NFx1NWM1Nlx1NWM1N1x1NWM1OFx1NWM1YVx1NWM1Ylx1NWM1Y1x1NWM1ZFx1NWM1Zlx1NWM2Mlx1NWM2NFx1NWM2N1x1''@;'; put 'put ''NWM2OFx1NWM2OVx1NWM2YVx1NWM2Ylx1NWM2Y1x1NWM2ZFx1NWM3MFx1NWM3Mlx1NWM3M1x1NWM3NFx1NWM3NVx1NWM3Nlx1NWM3N1x1NWM3OFx1NWM3Ylx1NWM3Y1x1NWM3ZFx1NWM3ZVx1NWM4MFx1NWM4M1x1NWM4NFx1NWM4NVx1NWM4Nlx1NWM4N1x1NWM4OVx1NWM4YVx1NWM4Ylx1NWM4''@;'; put 'put ''ZVx1NWM4Zlx1NWM5Mlx1NWM5M1x1NWM5NVx1NWM5ZFx1NWM5ZVx1NWM5Zlx1NWNhMFx1NWNhMVx1NWNhNFx1NWNhNVx1NWNhNlx1NWNhN1x1NWNhOFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0MF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTQwXVtFXS5jaGFyQ29kZUF0KDApJiYobWVb''@;'; put 'put ''QlsxNDBdW0VdXT0zNTg0MCtFLExbMzU4NDArRV09QlsxNDBdW0VdKTtmb3IoQlsxNDFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVjYWFcdTVjYWVcdTVjYWZcdTVjYjBcdTVjYjJcdTVjYjRcdTVjYjZcdTVjYjlcdTVjYmFcdTVj''@;'; put 'put ''YmJcdTVjYmNcdTVjYmVcdTVjYzBcdTVjYzJcdTVjYzNcdTVjYzVcdTVjYzZcdTVjYzdcdTVjYzhcdTVjYzlcdTVjY2FcdTVjY2NcdTVjY2RcdTVjY2VcdTVjY2ZcdTVjZDBcdTVjZDFcdTVjZDNcdTVjZDRcdTVjZDVcdTVjZDZcdTVjZDdcdTVjZDhcdTVjZGFcdTVjZGJcdTVjZGNcdTVjZGRc''@;'; put 'put ''dTVjZGVcdTVjZGZcdTVjZTBcdTVjZTJcdTVjZTNcdTVjZTdcdTVjZTlcdTVjZWJcdTVjZWNcdTVjZWVcdTVjZWZcdTVjZjFcdTVjZjJcdTVjZjNcdTVjZjRcdTVjZjVcdTVjZjZcdTVjZjdcdTVjZjhcdTVjZjlcdTVjZmFcdTVjZmNcdTVjZmRcdTVjZmVcdTVjZmZcdTVkMDBcdWZmZmRcdTVk''@;'; put 'put ''MDFcdTVkMDRcdTVkMDVcdTVkMDhcdTVkMDlcdTVkMGFcdTVkMGJcdTVkMGNcdTVkMGRcdTVkMGZcdTVkMTBcdTVkMTFcdTVkMTJcdTVkMTNcdTVkMTVcdTVkMTdcdTVkMThcdTVkMTlcdTVkMWFcdTVkMWNcdTVkMWRcdTVkMWZcdTVkMjBcdTVkMjFcdTVkMjJcdTVkMjNcdTVkMjVcdTVkMjhc''@;'; put 'put ''dTVkMmFcdTVkMmJcdTVkMmNcdTVkMmZcdTVkMzBcdTVkMzFcdTVkMzJcdTVkMzNcdTVkMzVcdTVkMzZcdTVkMzdcdTVkMzhcdTVkMzlcdTVkM2FcdTVkM2JcdTVkM2NcdTVkM2ZcdTVkNDBcdTVkNDFcdTVkNDJcdTVkNDNcdTVkNDRcdTVkNDVcdTVkNDZcdTVkNDhcdTVkNDlcdTVkNGRcdTVk''@;'; put 'put ''NGVcdTVkNGZcdTVkNTBcdTVkNTFcdTVkNTJcdTVkNTNcdTVkNTRcdTVkNTVcdTVkNTZcdTVkNTdcdTVkNTlcdTVkNWFcdTVkNWNcdTVkNWVcdTVkNWZcdTVkNjBcdTVkNjFcdTVkNjJcdTVkNjNcdTVkNjRcdTVkNjVcdTVkNjZcdTVkNjdcdTVkNjhcdTVkNmFcdTVkNmRcdTVkNmVcdTVkNzBc''@;'; put 'put ''dTVkNzFcdTVkNzJcdTVkNzNcdTVkNzVcdTVkNzZcdTVkNzdcdTVkNzhcdTVkNzlcdTVkN2FcdTVkN2JcdTVkN2NcdTVkN2RcdTVkN2VcdTVkN2ZcdTVkODBcdTVkODFcdTVkODNcdTVkODRcdTVkODVcdTVkODZcdTVkODdcdTVkODhcdTVkODlcdTVkOGFcdTVkOGJcdTVkOGNcdTVkOGRcdTVk''@;'; put 'put ''OGVcdTVkOGZcdTVkOTBcdTVkOTFcdTVkOTJcdTVkOTNcdTVkOTRcdTVkOTVcdTVkOTZcdTVkOTdcdTVkOThcdTVkOWFcdTVkOWJcdTVkOWNcdTVkOWVcdTVkOWZcdTVkYTBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNDFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0MV1bRV0uY2hhckNv''@;'; put 'put ''ZGVBdCgwKSYmKG1lW0JbMTQxXVtFXV09MzYwOTYrRSxMWzM2MDk2K0VdPUJbMTQxXVtFXSk7Zm9yKEJbMTQyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZGExXHU1ZGEyXHU1ZGEzXHU1ZGE0XHU1ZGE1XHU1ZGE2XHU1ZGE3XHU1''@;'; put 'put ''ZGE4XHU1ZGE5XHU1ZGFhXHU1ZGFiXHU1ZGFjXHU1ZGFkXHU1ZGFlXHU1ZGFmXHU1ZGIwXHU1ZGIxXHU1ZGIyXHU1ZGIzXHU1ZGI0XHU1ZGI1XHU1ZGI2XHU1ZGI4XHU1ZGI5XHU1ZGJhXHU1ZGJiXHU1ZGJjXHU1ZGJkXHU1ZGJlXHU1ZGJmXHU1ZGMwXHU1ZGMxXHU1ZGMyXHU1ZGMzXHU1ZGM0''@;'; put 'put ''XHU1ZGM2XHU1ZGM3XHU1ZGM4XHU1ZGM5XHU1ZGNhXHU1ZGNiXHU1ZGNjXHU1ZGNlXHU1ZGNmXHU1ZGQwXHU1ZGQxXHU1ZGQyXHU1ZGQzXHU1ZGQ0XHU1ZGQ1XHU1ZGQ2XHU1ZGQ3XHU1ZGQ4XHU1ZGQ5XHU1ZGRhXHU1ZGRjXHU1ZGRmXHU1ZGUwXHU1ZGUzXHU1ZGU0XHU1ZGVhXHU1ZGVjXHU1''@;'; put 'put ''ZGVkXHVmZmZkXHU1ZGYwXHU1ZGY1XHU1ZGY2XHU1ZGY4XHU1ZGY5XHU1ZGZhXHU1ZGZiXHU1ZGZjXHU1ZGZmXHU1ZTAwXHU1ZTA0XHU1ZTA3XHU1ZTA5XHU1ZTBhXHU1ZTBiXHU1ZTBkXHU1ZTBlXHU1ZTEyXHU1ZTEzXHU1ZTE3XHU1ZTFlXHU1ZTFmXHU1ZTIwXHU1ZTIxXHU1ZTIyXHU1ZTIz''@;'; put 'put ''XHU1ZTI0XHU1ZTI1XHU1ZTI4XHU1ZTI5XHU1ZTJhXHU1ZTJiXHU1ZTJjXHU1ZTJmXHU1ZTMwXHU1ZTMyXHU1ZTMzXHU1ZTM0XHU1ZTM1XHU1ZTM2XHU1ZTM5XHU1ZTNhXHU1ZTNlXHU1ZTNmXHU1ZTQwXHU1ZTQxXHU1ZTQzXHU1ZTQ2XHU1ZTQ3XHU1ZTQ4XHU1ZTQ5XHU1ZTRhXHU1ZTRiXHU1''@;'; put 'put ''ZTRkXHU1ZTRlXHU1ZTRmXHU1ZTUwXHU1ZTUxXHU1ZTUyXHU1ZTUzXHU1ZTU2XHU1ZTU3XHU1ZTU4XHU1ZTU5XHU1ZTVhXHU1ZTVjXHU1ZTVkXHU1ZTVmXHU1ZTYwXHU1ZTYzXHU1ZTY0XHU1ZTY1XHU1ZTY2XHU1ZTY3XHU1ZTY4XHU1ZTY5XHU1ZTZhXHU1ZTZiXHU1ZTZjXHU1ZTZkXHU1ZTZl''@;'; put 'put ''XHU1ZTZmXHU1ZTcwXHU1ZTcxXHU1ZTc1XHU1ZTc3XHU1ZTc5XHU1ZTdlXHU1ZTgxXHU1ZTgyXHU1ZTgzXHU1ZTg1XHU1ZTg4XHU1ZTg5XHU1ZThjXHU1ZThkXHU1ZThlXHU1ZTkyXHU1ZTk4XHU1ZTliXHU1ZTlkXHU1ZWExXHU1ZWEyXHU1ZWEzXHU1ZWE0XHU1ZWE4XHU1ZWE5XHU1ZWFhXHU1''@;'; put 'put ''ZWFiXHU1ZWFjXHU1ZWFlXHU1ZWFmXHU1ZWIwXHU1ZWIxXHU1ZWIyXHU1ZWI0XHU1ZWJhXHU1ZWJiXHU1ZWJjXHU1ZWJkXHU1ZWJmXHU1ZWMwXHU1ZWMxXHU1ZWMyXHU1ZWMzXHU1ZWM0XHU1ZWM1XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTQyXS5sZW5ndGg7KytFKTY1NTMzIT09Qlsx''@;'; put 'put ''NDJdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE0Ml1bRV1dPTM2MzUyK0UsTFszNjM1MitFXT1CWzE0Ml1bRV0pO2ZvcihCWzE0M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWVjNlx1NWVjN1x1NWVjOFx1NWVjYlx1NWVjY1x1''@;'; put 'put ''NWVjZFx1NWVjZVx1NWVjZlx1NWVkMFx1NWVkNFx1NWVkNVx1NWVkN1x1NWVkOFx1NWVkOVx1NWVkYVx1NWVkY1x1NWVkZFx1NWVkZVx1NWVkZlx1NWVlMFx1NWVlMVx1NWVlMlx1NWVlM1x1NWVlNFx1NWVlNVx1NWVlNlx1NWVlN1x1NWVlOVx1NWVlYlx1NWVlY1x1NWVlZFx1NWVlZVx1NWVl''@;'; put 'put ''Zlx1NWVmMFx1NWVmMVx1NWVmMlx1NWVmM1x1NWVmNVx1NWVmOFx1NWVmOVx1NWVmYlx1NWVmY1x1NWVmZFx1NWYwNVx1NWYwNlx1NWYwN1x1NWYwOVx1NWYwY1x1NWYwZFx1NWYwZVx1NWYxMFx1NWYxMlx1NWYxNFx1NWYxNlx1NWYxOVx1NWYxYVx1NWYxY1x1NWYxZFx1NWYxZVx1NWYyMVx1''@;'; put 'put ''NWYyMlx1NWYyM1x1NWYyNFx1ZmZmZFx1NWYyOFx1NWYyYlx1NWYyY1x1NWYyZVx1NWYzMFx1NWYzMlx1NWYzM1x1NWYzNFx1NWYzNVx1NWYzNlx1NWYzN1x1NWYzOFx1NWYzYlx1NWYzZFx1NWYzZVx1NWYzZlx1NWY0MVx1NWY0Mlx1NWY0M1x1NWY0NFx1NWY0NVx1NWY0Nlx1NWY0N1x1NWY0''@;'; put 'put ''OFx1NWY0OVx1NWY0YVx1NWY0Ylx1NWY0Y1x1NWY0ZFx1NWY0ZVx1NWY0Zlx1NWY1MVx1NWY1NFx1NWY1OVx1NWY1YVx1NWY1Ylx1NWY1Y1x1NWY1ZVx1NWY1Zlx1NWY2MFx1NWY2M1x1NWY2NVx1NWY2N1x1NWY2OFx1NWY2Ylx1NWY2ZVx1NWY2Zlx1NWY3Mlx1NWY3NFx1NWY3NVx1NWY3Nlx1''@;'; put 'put ''NWY3OFx1NWY3YVx1NWY3ZFx1NWY3ZVx1NWY3Zlx1NWY4M1x1NWY4Nlx1NWY4ZFx1NWY4ZVx1NWY4Zlx1NWY5MVx1NWY5M1x1NWY5NFx1NWY5Nlx1NWY5YVx1NWY5Ylx1NWY5ZFx1NWY5ZVx1NWY5Zlx1NWZhMFx1NWZhMlx1NWZhM1x1NWZhNFx1NWZhNVx1NWZhNlx1NWZhN1x1NWZhOVx1NWZh''@;'; put 'put ''Ylx1NWZhY1x1NWZhZlx1NWZiMFx1NWZiMVx1NWZiMlx1NWZiM1x1NWZiNFx1NWZiNlx1NWZiOFx1NWZiOVx1NWZiYVx1NWZiYlx1NWZiZVx1NWZiZlx1NWZjMFx1NWZjMVx1NWZjMlx1NWZjN1x1NWZjOFx1NWZjYVx1NWZjYlx1NWZjZVx1NWZkM1x1NWZkNFx1NWZkNVx1NWZkYVx1NWZkYlx1''@;'; put 'put ''NWZkY1x1NWZkZVx1NWZkZlx1NWZlMlx1NWZlM1x1NWZlNVx1NWZlNlx1NWZlOFx1NWZlOVx1NWZlY1x1NWZlZlx1NWZmMFx1NWZmMlx1NWZmM1x1NWZmNFx1NWZmNlx1NWZmN1x1NWZmOVx1NWZmYVx1NWZmY1x1NjAwN1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0M10ubGVuZ3RoOysr''@;'; put 'put ''RSk2NTUzMyE9PUJbMTQzXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNDNdW0VdXT0zNjYwOCtFLExbMzY2MDgrRV09QlsxNDNdW0VdKTtmb3IoQlsxNDRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYwMDhcdTYwMDlcdTYwMGJc''@;'; put 'put ''dTYwMGNcdTYwMTBcdTYwMTFcdTYwMTNcdTYwMTdcdTYwMThcdTYwMWFcdTYwMWVcdTYwMWZcdTYwMjJcdTYwMjNcdTYwMjRcdTYwMmNcdTYwMmRcdTYwMmVcdTYwMzBcdTYwMzFcdTYwMzJcdTYwMzNcdTYwMzRcdTYwMzZcdTYwMzdcdTYwMzhcdTYwMzlcdTYwM2FcdTYwM2RcdTYwM2VcdTYw''@;'; put 'put ''NDBcdTYwNDRcdTYwNDVcdTYwNDZcdTYwNDdcdTYwNDhcdTYwNDlcdTYwNGFcdTYwNGNcdTYwNGVcdTYwNGZcdTYwNTFcdTYwNTNcdTYwNTRcdTYwNTZcdTYwNTdcdTYwNThcdTYwNWJcdTYwNWNcdTYwNWVcdTYwNWZcdTYwNjBcdTYwNjFcdTYwNjVcdTYwNjZcdTYwNmVcdTYwNzFcdTYwNzJc''@;'; put 'put ''dTYwNzRcdTYwNzVcdTYwNzdcdTYwN2VcdTYwODBcdWZmZmRcdTYwODFcdTYwODJcdTYwODVcdTYwODZcdTYwODdcdTYwODhcdTYwOGFcdTYwOGJcdTYwOGVcdTYwOGZcdTYwOTBcdTYwOTFcdTYwOTNcdTYwOTVcdTYwOTdcdTYwOThcdTYwOTlcdTYwOWNcdTYwOWVcdTYwYTFcdTYwYTJcdTYw''@;'; put 'put ''YTRcdTYwYTVcdTYwYTdcdTYwYTlcdTYwYWFcdTYwYWVcdTYwYjBcdTYwYjNcdTYwYjVcdTYwYjZcdTYwYjdcdTYwYjlcdTYwYmFcdTYwYmRcdTYwYmVcdTYwYmZcdTYwYzBcdTYwYzFcdTYwYzJcdTYwYzNcdTYwYzRcdTYwYzdcdTYwYzhcdTYwYzlcdTYwY2NcdTYwY2RcdTYwY2VcdTYwY2Zc''@;'; put 'put ''dTYwZDBcdTYwZDJcdTYwZDNcdTYwZDRcdTYwZDZcdTYwZDdcdTYwZDlcdTYwZGJcdTYwZGVcdTYwZTFcdTYwZTJcdTYwZTNcdTYwZTRcdTYwZTVcdTYwZWFcdTYwZjFcdTYwZjJcdTYwZjVcdTYwZjdcdTYwZjhcdTYwZmJcdTYwZmNcdTYwZmRcdTYwZmVcdTYwZmZcdTYxMDJcdTYxMDNcdTYx''@;'; put 'put ''MDRcdTYxMDVcdTYxMDdcdTYxMGFcdTYxMGJcdTYxMGNcdTYxMTBcdTYxMTFcdTYxMTJcdTYxMTNcdTYxMTRcdTYxMTZcdTYxMTdcdTYxMThcdTYxMTlcdTYxMWJcdTYxMWNcdTYxMWRcdTYxMWVcdTYxMjFcdTYxMjJcdTYxMjVcdTYxMjhcdTYxMjlcdTYxMmFcdTYxMmNcdTYxMmRcdTYxMmVc''@;'; put 'put ''dTYxMmZcdTYxMzBcdTYxMzFcdTYxMzJcdTYxMzNcdTYxMzRcdTYxMzVcdTYxMzZcdTYxMzdcdTYxMzhcdTYxMzlcdTYxM2FcdTYxM2JcdTYxM2NcdTYxM2RcdTYxM2VcdTYxNDBcdTYxNDFcdTYxNDJcdTYxNDNcdTYxNDRcdTYxNDVcdTYxNDZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9Qlsx''@;'; put 'put ''NDRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0NF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTQ0XVtFXV09MzY4NjQrRSxMWzM2ODY0K0VdPUJbMTQ0XVtFXSk7Zm9yKEJbMTQ1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MTQ3''@;'; put 'put ''XHU2MTQ5XHU2MTRiXHU2MTRkXHU2MTRmXHU2MTUwXHU2MTUyXHU2MTUzXHU2MTU0XHU2MTU2XHU2MTU3XHU2MTU4XHU2MTU5XHU2MTVhXHU2MTViXHU2MTVjXHU2MTVlXHU2MTVmXHU2MTYwXHU2MTYxXHU2MTYzXHU2MTY0XHU2MTY1XHU2MTY2XHU2MTY5XHU2MTZhXHU2MTZiXHU2MTZjXHU2''@;'; put 'put ''MTZkXHU2MTZlXHU2MTZmXHU2MTcxXHU2MTcyXHU2MTczXHU2MTc0XHU2MTc2XHU2MTc4XHU2MTc5XHU2MTdhXHU2MTdiXHU2MTdjXHU2MTdkXHU2MTdlXHU2MTdmXHU2MTgwXHU2MTgxXHU2MTgyXHU2MTgzXHU2MTg0XHU2MTg1XHU2MTg2XHU2MTg3XHU2MTg4XHU2MTg5XHU2MThhXHU2MThj''@;'; put 'put ''XHU2MThkXHU2MThmXHU2MTkwXHU2MTkxXHU2MTkyXHU2MTkzXHU2MTk1XHVmZmZkXHU2MTk2XHU2MTk3XHU2MTk4XHU2MTk5XHU2MTlhXHU2MTliXHU2MTljXHU2MTllXHU2MTlmXHU2MWEwXHU2MWExXHU2MWEyXHU2MWEzXHU2MWE0XHU2MWE1XHU2MWE2XHU2MWFhXHU2MWFiXHU2MWFkXHU2''@;'; put 'put ''MWFlXHU2MWFmXHU2MWIwXHU2MWIxXHU2MWIyXHU2MWIzXHU2MWI0XHU2MWI1XHU2MWI2XHU2MWI4XHU2MWI5XHU2MWJhXHU2MWJiXHU2MWJjXHU2MWJkXHU2MWJmXHU2MWMwXHU2MWMxXHU2MWMzXHU2MWM0XHU2MWM1XHU2MWM2XHU2MWM3XHU2MWM5XHU2MWNjXHU2MWNkXHU2MWNlXHU2MWNm''@;'; put 'put ''XHU2MWQwXHU2MWQzXHU2MWQ1XHU2MWQ2XHU2MWQ3XHU2MWQ4XHU2MWQ5XHU2MWRhXHU2MWRiXHU2MWRjXHU2MWRkXHU2MWRlXHU2MWRmXHU2MWUwXHU2MWUxXHU2MWUyXHU2MWUzXHU2MWU0XHU2MWU1XHU2MWU3XHU2MWU4XHU2MWU5XHU2MWVhXHU2MWViXHU2MWVjXHU2MWVkXHU2MWVlXHU2''@;'; put 'put ''MWVmXHU2MWYwXHU2MWYxXHU2MWYyXHU2MWYzXHU2MWY0XHU2MWY2XHU2MWY3XHU2MWY4XHU2MWY5XHU2MWZhXHU2MWZiXHU2MWZjXHU2MWZkXHU2MWZlXHU2MjAwXHU2MjAxXHU2MjAyXHU2MjAzXHU2MjA0XHU2MjA1XHU2MjA3XHU2MjA5XHU2MjEzXHU2MjE0XHU2MjE5XHU2MjFjXHU2MjFk''@;'; put 'put ''XHU2MjFlXHU2MjIwXHU2MjIzXHU2MjI2XHU2MjI3XHU2MjI4XHU2MjI5XHU2MjJiXHU2MjJkXHU2MjJmXHU2MjMwXHU2MjMxXHU2MjMyXHU2MjM1XHU2MjM2XHU2MjM4XHU2MjM5XHU2MjNhXHU2MjNiXHU2MjNjXHU2MjQyXHU2MjQ0XHU2MjQ1XHU2MjQ2XHU2MjRhXHVmZmZkIi5zcGxpdCgi''@;'; put 'put ''IiksRT0wO0UhPUJbMTQ1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNDVdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE0NV1bRV1dPTM3MTIwK0UsTFszNzEyMCtFXT1CWzE0NV1bRV0pO2ZvcihCWzE0Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1NjI0Zlx1NjI1MFx1NjI1NVx1NjI1Nlx1NjI1N1x1NjI1OVx1NjI1YVx1NjI1Y1x1NjI1ZFx1NjI1ZVx1NjI1Zlx1NjI2MFx1NjI2MVx1NjI2Mlx1NjI2NFx1NjI2NVx1NjI2OFx1NjI3MVx1NjI3Mlx1NjI3NFx1NjI3NVx1NjI3N1x1NjI3OFx1NjI3YVx1NjI3Ylx1NjI3ZFx1''@;'; put 'put ''NjI4MVx1NjI4Mlx1NjI4M1x1NjI4NVx1NjI4Nlx1NjI4N1x1NjI4OFx1NjI4Ylx1NjI4Y1x1NjI4ZFx1NjI4ZVx1NjI4Zlx1NjI5MFx1NjI5NFx1NjI5OVx1NjI5Y1x1NjI5ZFx1NjI5ZVx1NjJhM1x1NjJhNlx1NjJhN1x1NjJhOVx1NjJhYVx1NjJhZFx1NjJhZVx1NjJhZlx1NjJiMFx1NjJi''@;'; put 'put ''Mlx1NjJiM1x1NjJiNFx1NjJiNlx1NjJiN1x1NjJiOFx1NjJiYVx1NjJiZVx1NjJjMFx1NjJjMVx1ZmZmZFx1NjJjM1x1NjJjYlx1NjJjZlx1NjJkMVx1NjJkNVx1NjJkZFx1NjJkZVx1NjJlMFx1NjJlMVx1NjJlNFx1NjJlYVx1NjJlYlx1NjJmMFx1NjJmMlx1NjJmNVx1NjJmOFx1NjJmOVx1''@;'; put 'put ''NjJmYVx1NjJmYlx1NjMwMFx1NjMwM1x1NjMwNFx1NjMwNVx1NjMwNlx1NjMwYVx1NjMwYlx1NjMwY1x1NjMwZFx1NjMwZlx1NjMxMFx1NjMxMlx1NjMxM1x1NjMxNFx1NjMxNVx1NjMxN1x1NjMxOFx1NjMxOVx1NjMxY1x1NjMyNlx1NjMyN1x1NjMyOVx1NjMyY1x1NjMyZFx1NjMyZVx1NjMz''@;'; put 'put ''MFx1NjMzMVx1NjMzM1x1NjMzNFx1NjMzNVx1NjMzNlx1NjMzN1x1NjMzOFx1NjMzYlx1NjMzY1x1NjMzZVx1NjMzZlx1NjM0MFx1NjM0MVx1NjM0NFx1NjM0N1x1NjM0OFx1NjM0YVx1NjM1MVx1NjM1Mlx1NjM1M1x1NjM1NFx1NjM1Nlx1NjM1N1x1NjM1OFx1NjM1OVx1NjM1YVx1NjM1Ylx1''@;'; put 'put ''NjM1Y1x1NjM1ZFx1NjM2MFx1NjM2NFx1NjM2NVx1NjM2Nlx1NjM2OFx1NjM2YVx1NjM2Ylx1NjM2Y1x1NjM2Zlx1NjM3MFx1NjM3Mlx1NjM3M1x1NjM3NFx1NjM3NVx1NjM3OFx1NjM3OVx1NjM3Y1x1NjM3ZFx1NjM3ZVx1NjM3Zlx1NjM4MVx1NjM4M1x1NjM4NFx1NjM4NVx1NjM4Nlx1NjM4''@;'; put 'put ''Ylx1NjM4ZFx1NjM5MVx1NjM5M1x1NjM5NFx1NjM5NVx1NjM5N1x1NjM5OVx1NjM5YVx1NjM5Ylx1NjM5Y1x1NjM5ZFx1NjM5ZVx1NjM5Zlx1NjNhMVx1NjNhNFx1NjNhNlx1NjNhYlx1NjNhZlx1NjNiMVx1NjNiMlx1NjNiNVx1NjNiNlx1NjNiOVx1NjNiYlx1NjNiZFx1NjNiZlx1NjNjMFx1''@;'; put 'put ''ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTQ2XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNDZdW0VdXT0zNzM3NitFLExbMzczNzYrRV09QlsxNDZdW0VdKTtmb3IoQlsxNDddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYzYzFcdTYzYzJcdTYzYzNcdTYzYzVcdTYzYzdcdTYzYzhcdTYzY2FcdTYzY2JcdTYzY2NcdTYzZDFcdTYzZDNcdTYzZDRcdTYzZDVcdTYzZDdcdTYzZDhcdTYzZDlcdTYzZGFcdTYzZGJcdTYzZGNcdTYzZGRcdTYzZGZcdTYzZTJcdTYzZTRcdTYzZTVc''@;'; put 'put ''dTYzZTZcdTYzZTdcdTYzZThcdTYzZWJcdTYzZWNcdTYzZWVcdTYzZWZcdTYzZjBcdTYzZjFcdTYzZjNcdTYzZjVcdTYzZjdcdTYzZjlcdTYzZmFcdTYzZmJcdTYzZmNcdTYzZmVcdTY0MDNcdTY0MDRcdTY0MDZcdTY0MDdcdTY0MDhcdTY0MDlcdTY0MGFcdTY0MGRcdTY0MGVcdTY0MTFcdTY0''@;'; put 'put ''MTJcdTY0MTVcdTY0MTZcdTY0MTdcdTY0MThcdTY0MTlcdTY0MWFcdTY0MWRcdTY0MWZcdTY0MjJcdTY0MjNcdTY0MjRcdWZmZmRcdTY0MjVcdTY0MjdcdTY0MjhcdTY0MjlcdTY0MmJcdTY0MmVcdTY0MmZcdTY0MzBcdTY0MzFcdTY0MzJcdTY0MzNcdTY0MzVcdTY0MzZcdTY0MzdcdTY0Mzhc''@;'; put 'put ''dTY0MzlcdTY0M2JcdTY0M2NcdTY0M2VcdTY0NDBcdTY0NDJcdTY0NDNcdTY0NDlcdTY0NGJcdTY0NGNcdTY0NGRcdTY0NGVcdTY0NGZcdTY0NTBcdTY0NTFcdTY0NTNcdTY0NTVcdTY0NTZcdTY0NTdcdTY0NTlcdTY0NWFcdTY0NWJcdTY0NWNcdTY0NWRcdTY0NWZcdTY0NjBcdTY0NjFcdTY0''@;'; put 'put ''NjJcdTY0NjNcdTY0NjRcdTY0NjVcdTY0NjZcdTY0NjhcdTY0NmFcdTY0NmJcdTY0NmNcdTY0NmVcdTY0NmZcdTY0NzBcdTY0NzFcdTY0NzJcdTY0NzNcdTY0NzRcdTY0NzVcdTY0NzZcdTY0NzdcdTY0N2JcdTY0N2NcdTY0N2RcdTY0N2VcdTY0N2ZcdTY0ODBcdTY0ODFcdTY0ODNcdTY0ODZc''@;'; put 'put ''dTY0ODhcdTY0ODlcdTY0OGFcdTY0OGJcdTY0OGNcdTY0OGRcdTY0OGVcdTY0OGZcdTY0OTBcdTY0OTNcdTY0OTRcdTY0OTdcdTY0OThcdTY0OWFcdTY0OWJcdTY0OWNcdTY0OWRcdTY0OWZcdTY0YTBcdTY0YTFcdTY0YTJcdTY0YTNcdTY0YTVcdTY0YTZcdTY0YTdcdTY0YThcdTY0YWFcdTY0''@;'; put 'put ''YWJcdTY0YWZcdTY0YjFcdTY0YjJcdTY0YjNcdTY0YjRcdTY0YjZcdTY0YjlcdTY0YmJcdTY0YmRcdTY0YmVcdTY0YmZcdTY0YzFcdTY0YzNcdTY0YzRcdTY0YzZcdTY0YzdcdTY0YzhcdTY0YzlcdTY0Y2FcdTY0Y2JcdTY0Y2NcdTY0Y2ZcdTY0ZDFcdTY0ZDNcdTY0ZDRcdTY0ZDVcdTY0ZDZc''@;'; put 'put ''dTY0ZDlcdTY0ZGFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNDddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0N11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTQ3XVtFXV09Mzc2MzIrRSxMWzM3NjMyK0VdPUJbMTQ3XVtFXSk7Zm9yKEJbMTQ4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NGRiXHU2NGRjXHU2NGRkXHU2NGRmXHU2NGUwXHU2NGUxXHU2NGUzXHU2NGU1XHU2NGU3XHU2NGU4XHU2NGU5XHU2NGVhXHU2NGViXHU2NGVjXHU2NGVkXHU2NGVlXHU2NGVmXHU2NGYwXHU2NGYxXHU2NGYyXHU2NGYzXHU2NGY0''@;'; put 'put ''XHU2NGY1XHU2NGY2XHU2NGY3XHU2NGY4XHU2NGY5XHU2NGZhXHU2NGZiXHU2NGZjXHU2NGZkXHU2NGZlXHU2NGZmXHU2NTAxXHU2NTAyXHU2NTAzXHU2NTA0XHU2NTA1XHU2NTA2XHU2NTA3XHU2NTA4XHU2NTBhXHU2NTBiXHU2NTBjXHU2NTBkXHU2NTBlXHU2NTBmXHU2NTEwXHU2NTExXHU2''@;'; put 'put ''NTEzXHU2NTE0XHU2NTE1XHU2NTE2XHU2NTE3XHU2NTE5XHU2NTFhXHU2NTFiXHU2NTFjXHU2NTFkXHU2NTFlXHU2NTFmXHU2NTIwXHU2NTIxXHVmZmZkXHU2NTIyXHU2NTIzXHU2NTI0XHU2NTI2XHU2NTI3XHU2NTI4XHU2NTI5XHU2NTJhXHU2NTJjXHU2NTJkXHU2NTMwXHU2NTMxXHU2NTMy''@;'; put 'put ''XHU2NTMzXHU2NTM3XHU2NTNhXHU2NTNjXHU2NTNkXHU2NTQwXHU2NTQxXHU2NTQyXHU2NTQzXHU2NTQ0XHU2NTQ2XHU2NTQ3XHU2NTRhXHU2NTRiXHU2NTRkXHU2NTRlXHU2NTUwXHU2NTUyXHU2NTUzXHU2NTU0XHU2NTU3XHU2NTU4XHU2NTVhXHU2NTVjXHU2NTVmXHU2NTYwXHU2NTYxXHU2''@;'; put 'put ''NTY0XHU2NTY1XHU2NTY3XHU2NTY4XHU2NTY5XHU2NTZhXHU2NTZkXHU2NTZlXHU2NTZmXHU2NTcxXHU2NTczXHU2NTc1XHU2NTc2XHU2NTc4XHU2NTc5XHU2NTdhXHU2NTdiXHU2NTdjXHU2NTdkXHU2NTdlXHU2NTdmXHU2NTgwXHU2NTgxXHU2NTgyXHU2NTgzXHU2NTg0XHU2NTg1XHU2NTg2''@;'; put 'put ''XHU2NTg4XHU2NTg5XHU2NThhXHU2NThkXHU2NThlXHU2NThmXHU2NTkyXHU2NTk0XHU2NTk1XHU2NTk2XHU2NTk4XHU2NTlhXHU2NTlkXHU2NTllXHU2NWEwXHU2NWEyXHU2NWEzXHU2NWE2XHU2NWE4XHU2NWFhXHU2NWFjXHU2NWFlXHU2NWIxXHU2NWIyXHU2NWIzXHU2NWI0XHU2NWI1XHU2''@;'; put 'put ''NWI2XHU2NWI3XHU2NWI4XHU2NWJhXHU2NWJiXHU2NWJlXHU2NWJmXHU2NWMwXHU2NWMyXHU2NWM3XHU2NWM4XHU2NWM5XHU2NWNhXHU2NWNkXHU2NWQwXHU2NWQxXHU2NWQzXHU2NWQ0XHU2NWQ1XHU2NWQ4XHU2NWQ5XHU2NWRhXHU2NWRiXHU2NWRjXHU2NWRkXHU2NWRlXHU2NWRmXHU2NWUx''@;'; put 'put ''XHU2NWUzXHU2NWU0XHU2NWVhXHU2NWViXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTQ4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNDhdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE0OF1bRV1dPTM3ODg4K0UsTFszNzg4OCtFXT1CWzE0OF1bRV0pO2ZvcihCWzE0OV09Ilx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjVmMlx1NjVmM1x1NjVmNFx1NjVmNVx1NjVmOFx1NjVmOVx1NjVmYlx1NjVmY1x1NjVmZFx1NjVmZVx1NjVmZlx1NjYwMVx1NjYwNFx1NjYwNVx1NjYwN1x1NjYwOFx1NjYwOVx1NjYwYlx1NjYwZFx1NjYx''@;'; put 'put ''MFx1NjYxMVx1NjYxMlx1NjYxNlx1NjYxN1x1NjYxOFx1NjYxYVx1NjYxYlx1NjYxY1x1NjYxZVx1NjYyMVx1NjYyMlx1NjYyM1x1NjYyNFx1NjYyNlx1NjYyOVx1NjYyYVx1NjYyYlx1NjYyY1x1NjYyZVx1NjYzMFx1NjYzMlx1NjYzM1x1NjYzN1x1NjYzOFx1NjYzOVx1NjYzYVx1NjYzYlx1''@;'; put 'put ''NjYzZFx1NjYzZlx1NjY0MFx1NjY0Mlx1NjY0NFx1NjY0NVx1NjY0Nlx1NjY0N1x1NjY0OFx1NjY0OVx1NjY0YVx1NjY0ZFx1NjY0ZVx1NjY1MFx1NjY1MVx1NjY1OFx1ZmZmZFx1NjY1OVx1NjY1Ylx1NjY1Y1x1NjY1ZFx1NjY1ZVx1NjY2MFx1NjY2Mlx1NjY2M1x1NjY2NVx1NjY2N1x1NjY2''@;'; put 'put ''OVx1NjY2YVx1NjY2Ylx1NjY2Y1x1NjY2ZFx1NjY3MVx1NjY3Mlx1NjY3M1x1NjY3NVx1NjY3OFx1NjY3OVx1NjY3Ylx1NjY3Y1x1NjY3ZFx1NjY3Zlx1NjY4MFx1NjY4MVx1NjY4M1x1NjY4NVx1NjY4Nlx1NjY4OFx1NjY4OVx1NjY4YVx1NjY4Ylx1NjY4ZFx1NjY4ZVx1NjY4Zlx1NjY5MFx1''@;'; put 'put ''NjY5Mlx1NjY5M1x1NjY5NFx1NjY5NVx1NjY5OFx1NjY5OVx1NjY5YVx1NjY5Ylx1NjY5Y1x1NjY5ZVx1NjY5Zlx1NjZhMFx1NjZhMVx1NjZhMlx1NjZhM1x1NjZhNFx1NjZhNVx1NjZhNlx1NjZhOVx1NjZhYVx1NjZhYlx1NjZhY1x1NjZhZFx1NjZhZlx1NjZiMFx1NjZiMVx1NjZiMlx1NjZi''@;'; put 'put ''M1x1NjZiNVx1NjZiNlx1NjZiN1x1NjZiOFx1NjZiYVx1NjZiYlx1NjZiY1x1NjZiZFx1NjZiZlx1NjZjMFx1NjZjMVx1NjZjMlx1NjZjM1x1NjZjNFx1NjZjNVx1NjZjNlx1NjZjN1x1NjZjOFx1NjZjOVx1NjZjYVx1NjZjYlx1NjZjY1x1NjZjZFx1NjZjZVx1NjZjZlx1NjZkMFx1NjZkMVx1''@;'; put 'put ''NjZkMlx1NjZkM1x1NjZkNFx1NjZkNVx1NjZkNlx1NjZkN1x1NjZkOFx1NjZkYVx1NjZkZVx1NjZkZlx1NjZlMFx1NjZlMVx1NjZlMlx1NjZlM1x1NjZlNFx1NjZlNVx1NjZlN1x1NjZlOFx1NjZlYVx1NjZlYlx1NjZlY1x1NjZlZFx1NjZlZVx1NjZlZlx1NjZmMVx1NjZmNVx1NjZmNlx1NjZm''@;'; put 'put ''OFx1NjZmYVx1NjZmYlx1NjZmZFx1NjcwMVx1NjcwMlx1NjcwM1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0OV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTQ5XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNDldW0VdXT0zODE0NCtFLExbMzgxNDQrRV09QlsxNDldW0VdKTtmb3IoQlsx''@;'; put 'put ''NTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY3MDRcdTY3MDVcdTY3MDZcdTY3MDdcdTY3MGNcdTY3MGVcdTY3MGZcdTY3MTFcdTY3MTJcdTY3MTNcdTY3MTZcdTY3MThcdTY3MTlcdTY3MWFcdTY3MWNcdTY3MWVcdTY3MjBcdTY3''@;'; put 'put ''MjFcdTY3MjJcdTY3MjNcdTY3MjRcdTY3MjVcdTY3MjdcdTY3MjlcdTY3MmVcdTY3MzBcdTY3MzJcdTY3MzNcdTY3MzZcdTY3MzdcdTY3MzhcdTY3MzlcdTY3M2JcdTY3M2NcdTY3M2VcdTY3M2ZcdTY3NDFcdTY3NDRcdTY3NDVcdTY3NDdcdTY3NGFcdTY3NGJcdTY3NGRcdTY3NTJcdTY3NTRc''@;'; put 'put ''dTY3NTVcdTY3NTdcdTY3NThcdTY3NTlcdTY3NWFcdTY3NWJcdTY3NWRcdTY3NjJcdTY3NjNcdTY3NjRcdTY3NjZcdTY3NjdcdTY3NmJcdTY3NmNcdTY3NmVcdTY3NzFcdTY3NzRcdTY3NzZcdWZmZmRcdTY3NzhcdTY3NzlcdTY3N2FcdTY3N2JcdTY3N2RcdTY3ODBcdTY3ODJcdTY3ODNcdTY3''@;'; put 'put ''ODVcdTY3ODZcdTY3ODhcdTY3OGFcdTY3OGNcdTY3OGRcdTY3OGVcdTY3OGZcdTY3OTFcdTY3OTJcdTY3OTNcdTY3OTRcdTY3OTZcdTY3OTlcdTY3OWJcdTY3OWZcdTY3YTBcdTY3YTFcdTY3YTRcdTY3YTZcdTY3YTlcdTY3YWNcdTY3YWVcdTY3YjFcdTY3YjJcdTY3YjRcdTY3YjlcdTY3YmFc''@;'; put 'put ''dTY3YmJcdTY3YmNcdTY3YmRcdTY3YmVcdTY3YmZcdTY3YzBcdTY3YzJcdTY3YzVcdTY3YzZcdTY3YzdcdTY3YzhcdTY3YzlcdTY3Y2FcdTY3Y2JcdTY3Y2NcdTY3Y2RcdTY3Y2VcdTY3ZDVcdTY3ZDZcdTY3ZDdcdTY3ZGJcdTY3ZGZcdTY3ZTFcdTY3ZTNcdTY3ZTRcdTY3ZTZcdTY3ZTdcdTY3''@;'; put 'put ''ZThcdTY3ZWFcdTY3ZWJcdTY3ZWRcdTY3ZWVcdTY3ZjJcdTY3ZjVcdTY3ZjZcdTY3ZjdcdTY3ZjhcdTY3ZjlcdTY3ZmFcdTY3ZmJcdTY3ZmNcdTY3ZmVcdTY4MDFcdTY4MDJcdTY4MDNcdTY4MDRcdTY4MDZcdTY4MGRcdTY4MTBcdTY4MTJcdTY4MTRcdTY4MTVcdTY4MThcdTY4MTlcdTY4MWFc''@;'; put 'put ''dTY4MWJcdTY4MWNcdTY4MWVcdTY4MWZcdTY4MjBcdTY4MjJcdTY4MjNcdTY4MjRcdTY4MjVcdTY4MjZcdTY4MjdcdTY4MjhcdTY4MmJcdTY4MmNcdTY4MmRcdTY4MmVcdTY4MmZcdTY4MzBcdTY4MzFcdTY4MzRcdTY4MzVcdTY4MzZcdTY4M2FcdTY4M2JcdTY4M2ZcdTY4NDdcdTY4NGJcdTY4''@;'; put 'put ''NGRcdTY4NGZcdTY4NTJcdTY4NTZcdTY4NTdcdTY4NThcdTY4NTlcdTY4NWFcdTY4NWJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNTBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1MF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTUwXVtFXV09Mzg0MDArRSxMWzM4NDAwK0VdPUJbMTUw''@;'; put 'put ''XVtFXSk7Zm9yKEJbMTUxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ODVjXHU2ODVkXHU2ODVlXHU2ODVmXHU2ODZhXHU2ODZjXHU2ODZkXHU2ODZlXHU2ODZmXHU2ODcwXHU2ODcxXHU2ODcyXHU2ODczXHU2ODc1XHU2ODc4XHU2''@;'; put 'put ''ODc5XHU2ODdhXHU2ODdiXHU2ODdjXHU2ODdkXHU2ODdlXHU2ODdmXHU2ODgwXHU2ODgyXHU2ODg0XHU2ODg3XHU2ODg4XHU2ODg5XHU2ODhhXHU2ODhiXHU2ODhjXHU2ODhkXHU2ODhlXHU2ODkwXHU2ODkxXHU2ODkyXHU2ODk0XHU2ODk1XHU2ODk2XHU2ODk4XHU2ODk5XHU2ODlhXHU2ODli''@;'; put 'put ''XHU2ODljXHU2ODlkXHU2ODllXHU2ODlmXHU2OGEwXHU2OGExXHU2OGEzXHU2OGE0XHU2OGE1XHU2OGE5XHU2OGFhXHU2OGFiXHU2OGFjXHU2OGFlXHU2OGIxXHU2OGIyXHU2OGI0XHU2OGI2XHU2OGI3XHU2OGI4XHVmZmZkXHU2OGI5XHU2OGJhXHU2OGJiXHU2OGJjXHU2OGJkXHU2OGJlXHU2''@;'; put 'put ''OGJmXHU2OGMxXHU2OGMzXHU2OGM0XHU2OGM1XHU2OGM2XHU2OGM3XHU2OGM4XHU2OGNhXHU2OGNjXHU2OGNlXHU2OGNmXHU2OGQwXHU2OGQxXHU2OGQzXHU2OGQ0XHU2OGQ2XHU2OGQ3XHU2OGQ5XHU2OGRiXHU2OGRjXHU2OGRkXHU2OGRlXHU2OGRmXHU2OGUxXHU2OGUyXHU2OGU0XHU2OGU1''@;'; put 'put ''XHU2OGU2XHU2OGU3XHU2OGU4XHU2OGU5XHU2OGVhXHU2OGViXHU2OGVjXHU2OGVkXHU2OGVmXHU2OGYyXHU2OGYzXHU2OGY0XHU2OGY2XHU2OGY3XHU2OGY4XHU2OGZiXHU2OGZkXHU2OGZlXHU2OGZmXHU2OTAwXHU2OTAyXHU2OTAzXHU2OTA0XHU2OTA2XHU2OTA3XHU2OTA4XHU2OTA5XHU2''@;'; put 'put ''OTBhXHU2OTBjXHU2OTBmXHU2OTExXHU2OTEzXHU2OTE0XHU2OTE1XHU2OTE2XHU2OTE3XHU2OTE4XHU2OTE5XHU2OTFhXHU2OTFiXHU2OTFjXHU2OTFkXHU2OTFlXHU2OTIxXHU2OTIyXHU2OTIzXHU2OTI1XHU2OTI2XHU2OTI3XHU2OTI4XHU2OTI5XHU2OTJhXHU2OTJiXHU2OTJjXHU2OTJl''@;'; put 'put ''XHU2OTJmXHU2OTMxXHU2OTMyXHU2OTMzXHU2OTM1XHU2OTM2XHU2OTM3XHU2OTM4XHU2OTNhXHU2OTNiXHU2OTNjXHU2OTNlXHU2OTQwXHU2OTQxXHU2OTQzXHU2OTQ0XHU2OTQ1XHU2OTQ2XHU2OTQ3XHU2OTQ4XHU2OTQ5XHU2OTRhXHU2OTRiXHU2OTRjXHU2OTRkXHU2OTRlXHU2OTRmXHU2''@;'; put 'put ''OTUwXHU2OTUxXHU2OTUyXHU2OTUzXHU2OTU1XHU2OTU2XHU2OTU4XHU2OTU5XHU2OTViXHU2OTVjXHU2OTVmXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTUxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNTFdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE1MV1bRV1dPTM4NjU2K0UsTFsz''@;'; put 'put ''ODY1NitFXT1CWzE1MV1bRV0pO2ZvcihCWzE1Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Njk2MVx1Njk2Mlx1Njk2NFx1Njk2NVx1Njk2N1x1Njk2OFx1Njk2OVx1Njk2YVx1Njk2Y1x1Njk2ZFx1Njk2Zlx1Njk3MFx1Njk3Mlx1''@;'; put 'put ''Njk3M1x1Njk3NFx1Njk3NVx1Njk3Nlx1Njk3YVx1Njk3Ylx1Njk3ZFx1Njk3ZVx1Njk3Zlx1Njk4MVx1Njk4M1x1Njk4NVx1Njk4YVx1Njk4Ylx1Njk4Y1x1Njk4ZVx1Njk4Zlx1Njk5MFx1Njk5MVx1Njk5Mlx1Njk5M1x1Njk5Nlx1Njk5N1x1Njk5OVx1Njk5YVx1Njk5ZFx1Njk5ZVx1Njk5''@;'; put 'put ''Zlx1NjlhMFx1NjlhMVx1NjlhMlx1NjlhM1x1NjlhNFx1NjlhNVx1NjlhNlx1NjlhOVx1NjlhYVx1NjlhY1x1NjlhZVx1NjlhZlx1NjliMFx1NjliMlx1NjliM1x1NjliNVx1NjliNlx1NjliOFx1NjliOVx1NjliYVx1NjliY1x1NjliZFx1ZmZmZFx1NjliZVx1NjliZlx1NjljMFx1NjljMlx1''@;'; put 'put ''NjljM1x1NjljNFx1NjljNVx1NjljNlx1NjljN1x1NjljOFx1NjljOVx1NjljYlx1NjljZFx1NjljZlx1NjlkMVx1NjlkMlx1NjlkM1x1NjlkNVx1NjlkNlx1NjlkN1x1NjlkOFx1NjlkOVx1NjlkYVx1NjlkY1x1NjlkZFx1NjlkZVx1NjllMVx1NjllMlx1NjllM1x1NjllNFx1NjllNVx1Njll''@;'; put 'put ''Nlx1NjllN1x1NjllOFx1NjllOVx1NjllYVx1NjllYlx1NjllY1x1NjllZVx1NjllZlx1NjlmMFx1NjlmMVx1NjlmM1x1NjlmNFx1NjlmNVx1NjlmNlx1NjlmN1x1NjlmOFx1NjlmOVx1NjlmYVx1NjlmYlx1NjlmY1x1NjlmZVx1NmEwMFx1NmEwMVx1NmEwMlx1NmEwM1x1NmEwNFx1NmEwNVx1''@;'; put 'put ''NmEwNlx1NmEwN1x1NmEwOFx1NmEwOVx1NmEwYlx1NmEwY1x1NmEwZFx1NmEwZVx1NmEwZlx1NmExMFx1NmExMVx1NmExMlx1NmExM1x1NmExNFx1NmExNVx1NmExNlx1NmExOVx1NmExYVx1NmExYlx1NmExY1x1NmExZFx1NmExZVx1NmEyMFx1NmEyMlx1NmEyM1x1NmEyNFx1NmEyNVx1NmEy''@;'; put 'put ''Nlx1NmEyN1x1NmEyOVx1NmEyYlx1NmEyY1x1NmEyZFx1NmEyZVx1NmEzMFx1NmEzMlx1NmEzM1x1NmEzNFx1NmEzNlx1NmEzN1x1NmEzOFx1NmEzOVx1NmEzYVx1NmEzYlx1NmEzY1x1NmEzZlx1NmE0MFx1NmE0MVx1NmE0Mlx1NmE0M1x1NmE0NVx1NmE0Nlx1NmE0OFx1NmE0OVx1NmE0YVx1''@;'; put 'put ''NmE0Ylx1NmE0Y1x1NmE0ZFx1NmE0ZVx1NmE0Zlx1NmE1MVx1NmE1Mlx1NmE1M1x1NmE1NFx1NmE1NVx1NmE1Nlx1NmE1N1x1NmE1YVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTUyXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNTJdW0Vd''@;'; put 'put ''XT0zODkxMitFLExbMzg5MTIrRV09QlsxNTJdW0VdKTtmb3IoQlsxNTNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZhNWNcdTZhNWRcdTZhNWVcdTZhNWZcdTZhNjBcdTZhNjJcdTZhNjNcdTZhNjRcdTZhNjZcdTZhNjdcdTZhNjhc''@;'; put 'put ''dTZhNjlcdTZhNmFcdTZhNmJcdTZhNmNcdTZhNmRcdTZhNmVcdTZhNmZcdTZhNzBcdTZhNzJcdTZhNzNcdTZhNzRcdTZhNzVcdTZhNzZcdTZhNzdcdTZhNzhcdTZhN2FcdTZhN2JcdTZhN2RcdTZhN2VcdTZhN2ZcdTZhODFcdTZhODJcdTZhODNcdTZhODVcdTZhODZcdTZhODdcdTZhODhcdTZh''@;'; put 'put ''ODlcdTZhOGFcdTZhOGJcdTZhOGNcdTZhOGRcdTZhOGZcdTZhOTJcdTZhOTNcdTZhOTRcdTZhOTVcdTZhOTZcdTZhOThcdTZhOTlcdTZhOWFcdTZhOWJcdTZhOWNcdTZhOWRcdTZhOWVcdTZhOWZcdTZhYTFcdTZhYTJcdTZhYTNcdTZhYTRcdTZhYTVcdTZhYTZcdWZmZmRcdTZhYTdcdTZhYThc''@;'; put 'put ''dTZhYWFcdTZhYWRcdTZhYWVcdTZhYWZcdTZhYjBcdTZhYjFcdTZhYjJcdTZhYjNcdTZhYjRcdTZhYjVcdTZhYjZcdTZhYjdcdTZhYjhcdTZhYjlcdTZhYmFcdTZhYmJcdTZhYmNcdTZhYmRcdTZhYmVcdTZhYmZcdTZhYzBcdTZhYzFcdTZhYzJcdTZhYzNcdTZhYzRcdTZhYzVcdTZhYzZcdTZh''@;'; put 'put ''YzdcdTZhYzhcdTZhYzlcdTZhY2FcdTZhY2JcdTZhY2NcdTZhY2RcdTZhY2VcdTZhY2ZcdTZhZDBcdTZhZDFcdTZhZDJcdTZhZDNcdTZhZDRcdTZhZDVcdTZhZDZcdTZhZDdcdTZhZDhcdTZhZDlcdTZhZGFcdTZhZGJcdTZhZGNcdTZhZGRcdTZhZGVcdTZhZGZcdTZhZTBcdTZhZTFcdTZhZTJc''@;'; put 'put ''dTZhZTNcdTZhZTRcdTZhZTVcdTZhZTZcdTZhZTdcdTZhZThcdTZhZTlcdTZhZWFcdTZhZWJcdTZhZWNcdTZhZWRcdTZhZWVcdTZhZWZcdTZhZjBcdTZhZjFcdTZhZjJcdTZhZjNcdTZhZjRcdTZhZjVcdTZhZjZcdTZhZjdcdTZhZjhcdTZhZjlcdTZhZmFcdTZhZmJcdTZhZmNcdTZhZmRcdTZh''@;'; put 'put ''ZmVcdTZhZmZcdTZiMDBcdTZiMDFcdTZiMDJcdTZiMDNcdTZiMDRcdTZiMDVcdTZiMDZcdTZiMDdcdTZiMDhcdTZiMDlcdTZiMGFcdTZiMGJcdTZiMGNcdTZiMGRcdTZiMGVcdTZiMGZcdTZiMTBcdTZiMTFcdTZiMTJcdTZiMTNcdTZiMTRcdTZiMTVcdTZiMTZcdTZiMTdcdTZiMThcdTZiMTlc''@;'; put 'put ''dTZiMWFcdTZiMWJcdTZiMWNcdTZiMWRcdTZiMWVcdTZiMWZcdTZiMjVcdTZiMjZcdTZiMjhcdTZiMjlcdTZiMmFcdTZiMmJcdTZiMmNcdTZiMmRcdTZiMmVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNTNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1M11bRV0uY2hhckNvZGVBdCgwKSYm''@;'; put 'put ''KG1lW0JbMTUzXVtFXV09MzkxNjgrRSxMWzM5MTY4K0VdPUJbMTUzXVtFXSk7Zm9yKEJbMTU0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YjJmXHU2YjMwXHU2YjMxXHU2YjMzXHU2YjM0XHU2YjM1XHU2YjM2XHU2YjM4XHU2YjNi''@;'; put 'put ''XHU2YjNjXHU2YjNkXHU2YjNmXHU2YjQwXHU2YjQxXHU2YjQyXHU2YjQ0XHU2YjQ1XHU2YjQ4XHU2YjRhXHU2YjRiXHU2YjRkXHU2YjRlXHU2YjRmXHU2YjUwXHU2YjUxXHU2YjUyXHU2YjUzXHU2YjU0XHU2YjU1XHU2YjU2XHU2YjU3XHU2YjU4XHU2YjVhXHU2YjViXHU2YjVjXHU2YjVkXHU2''@;'; put 'put ''YjVlXHU2YjVmXHU2YjYwXHU2YjYxXHU2YjY4XHU2YjY5XHU2YjZiXHU2YjZjXHU2YjZkXHU2YjZlXHU2YjZmXHU2YjcwXHU2YjcxXHU2YjcyXHU2YjczXHU2Yjc0XHU2Yjc1XHU2Yjc2XHU2Yjc3XHU2Yjc4XHU2YjdhXHU2YjdkXHU2YjdlXHU2YjdmXHU2YjgwXHU2Yjg1XHU2Yjg4XHVmZmZk''@;'; put 'put ''XHU2YjhjXHU2YjhlXHU2YjhmXHU2YjkwXHU2YjkxXHU2Yjk0XHU2Yjk1XHU2Yjk3XHU2Yjk4XHU2Yjk5XHU2YjljXHU2YjlkXHU2YjllXHU2YjlmXHU2YmEwXHU2YmEyXHU2YmEzXHU2YmE0XHU2YmE1XHU2YmE2XHU2YmE3XHU2YmE4XHU2YmE5XHU2YmFiXHU2YmFjXHU2YmFkXHU2YmFlXHU2''@;'; put 'put ''YmFmXHU2YmIwXHU2YmIxXHU2YmIyXHU2YmI2XHU2YmI4XHU2YmI5XHU2YmJhXHU2YmJiXHU2YmJjXHU2YmJkXHU2YmJlXHU2YmMwXHU2YmMzXHU2YmM0XHU2YmM2XHU2YmM3XHU2YmM4XHU2YmM5XHU2YmNhXHU2YmNjXHU2YmNlXHU2YmQwXHU2YmQxXHU2YmQ4XHU2YmRhXHU2YmRjXHU2YmRk''@;'; put 'put ''XHU2YmRlXHU2YmRmXHU2YmUwXHU2YmUyXHU2YmUzXHU2YmU0XHU2YmU1XHU2YmU2XHU2YmU3XHU2YmU4XHU2YmU5XHU2YmVjXHU2YmVkXHU2YmVlXHU2YmYwXHU2YmYxXHU2YmYyXHU2YmY0XHU2YmY2XHU2YmY3XHU2YmY4XHU2YmZhXHU2YmZiXHU2YmZjXHU2YmZlXHU2YmZmXHU2YzAwXHU2''@;'; put 'put ''YzAxXHU2YzAyXHU2YzAzXHU2YzA0XHU2YzA4XHU2YzA5XHU2YzBhXHU2YzBiXHU2YzBjXHU2YzBlXHU2YzEyXHU2YzE3XHU2YzFjXHU2YzFkXHU2YzFlXHU2YzIwXHU2YzIzXHU2YzI1XHU2YzJiXHU2YzJjXHU2YzJkXHU2YzMxXHU2YzMzXHU2YzM2XHU2YzM3XHU2YzM5XHU2YzNhXHU2YzNi''@;'; put 'put ''XHU2YzNjXHU2YzNlXHU2YzNmXHU2YzQzXHU2YzQ0XHU2YzQ1XHU2YzQ4XHU2YzRiXHU2YzRjXHU2YzRkXHU2YzRlXHU2YzRmXHU2YzUxXHU2YzUyXHU2YzUzXHU2YzU2XHU2YzU4XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTU0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNTRdW0VdLmNo''@;'; put 'put ''YXJDb2RlQXQoMCkmJihtZVtCWzE1NF1bRV1dPTM5NDI0K0UsTFszOTQyNCtFXT1CWzE1NF1bRV0pO2ZvcihCWzE1NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmM1OVx1NmM1YVx1NmM2Mlx1NmM2M1x1NmM2NVx1NmM2Nlx1NmM2''@;'; put 'put ''N1x1NmM2Ylx1NmM2Y1x1NmM2ZFx1NmM2ZVx1NmM2Zlx1NmM3MVx1NmM3M1x1NmM3NVx1NmM3N1x1NmM3OFx1NmM3YVx1NmM3Ylx1NmM3Y1x1NmM3Zlx1NmM4MFx1NmM4NFx1NmM4N1x1NmM4YVx1NmM4Ylx1NmM4ZFx1NmM4ZVx1NmM5MVx1NmM5Mlx1NmM5NVx1NmM5Nlx1NmM5N1x1NmM5OFx1''@;'; put 'put ''NmM5YVx1NmM5Y1x1NmM5ZFx1NmM5ZVx1NmNhMFx1NmNhMlx1NmNhOFx1NmNhY1x1NmNhZlx1NmNiMFx1NmNiNFx1NmNiNVx1NmNiNlx1NmNiN1x1NmNiYVx1NmNjMFx1NmNjMVx1NmNjMlx1NmNjM1x1NmNjNlx1NmNjN1x1NmNjOFx1NmNjYlx1NmNjZFx1NmNjZVx1NmNjZlx1NmNkMVx1NmNk''@;'; put 'put ''Mlx1NmNkOFx1ZmZmZFx1NmNkOVx1NmNkYVx1NmNkY1x1NmNkZFx1NmNkZlx1NmNlNFx1NmNlNlx1NmNlN1x1NmNlOVx1NmNlY1x1NmNlZFx1NmNmMlx1NmNmNFx1NmNmOVx1NmNmZlx1NmQwMFx1NmQwMlx1NmQwM1x1NmQwNVx1NmQwNlx1NmQwOFx1NmQwOVx1NmQwYVx1NmQwZFx1NmQwZlx1''@;'; put 'put ''NmQxMFx1NmQxMVx1NmQxM1x1NmQxNFx1NmQxNVx1NmQxNlx1NmQxOFx1NmQxY1x1NmQxZFx1NmQxZlx1NmQyMFx1NmQyMVx1NmQyMlx1NmQyM1x1NmQyNFx1NmQyNlx1NmQyOFx1NmQyOVx1NmQyY1x1NmQyZFx1NmQyZlx1NmQzMFx1NmQzNFx1NmQzNlx1NmQzN1x1NmQzOFx1NmQzYVx1NmQz''@;'; put 'put ''Zlx1NmQ0MFx1NmQ0Mlx1NmQ0NFx1NmQ0OVx1NmQ0Y1x1NmQ1MFx1NmQ1NVx1NmQ1Nlx1NmQ1N1x1NmQ1OFx1NmQ1Ylx1NmQ1ZFx1NmQ1Zlx1NmQ2MVx1NmQ2Mlx1NmQ2NFx1NmQ2NVx1NmQ2N1x1NmQ2OFx1NmQ2Ylx1NmQ2Y1x1NmQ2ZFx1NmQ3MFx1NmQ3MVx1NmQ3Mlx1NmQ3M1x1NmQ3NVx1''@;'; put 'put ''NmQ3Nlx1NmQ3OVx1NmQ3YVx1NmQ3Ylx1NmQ3ZFx1NmQ3ZVx1NmQ3Zlx1NmQ4MFx1NmQ4MVx1NmQ4M1x1NmQ4NFx1NmQ4Nlx1NmQ4N1x1NmQ4YVx1NmQ4Ylx1NmQ4ZFx1NmQ4Zlx1NmQ5MFx1NmQ5Mlx1NmQ5Nlx1NmQ5N1x1NmQ5OFx1NmQ5OVx1NmQ5YVx1NmQ5Y1x1NmRhMlx1NmRhNVx1NmRh''@;'; put 'put ''Y1x1NmRhZFx1NmRiMFx1NmRiMVx1NmRiM1x1NmRiNFx1NmRiNlx1NmRiN1x1NmRiOVx1NmRiYVx1NmRiYlx1NmRiY1x1NmRiZFx1NmRiZVx1NmRjMVx1NmRjMlx1NmRjM1x1NmRjOFx1NmRjOVx1NmRjYVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1NV0ubGVuZ3RoOysrRSk2NTUzMyE9''@;'; put 'put ''PUJbMTU1XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNTVdW0VdXT0zOTY4MCtFLExbMzk2ODArRV09QlsxNTVdW0VdKTtmb3IoQlsxNTZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZkY2RcdTZkY2VcdTZkY2ZcdTZkZDBcdTZk''@;'; put 'put ''ZDJcdTZkZDNcdTZkZDRcdTZkZDVcdTZkZDdcdTZkZGFcdTZkZGJcdTZkZGNcdTZkZGZcdTZkZTJcdTZkZTNcdTZkZTVcdTZkZTdcdTZkZThcdTZkZTlcdTZkZWFcdTZkZWRcdTZkZWZcdTZkZjBcdTZkZjJcdTZkZjRcdTZkZjVcdTZkZjZcdTZkZjhcdTZkZmFcdTZkZmRcdTZkZmVcdTZkZmZc''@;'; put 'put ''dTZlMDBcdTZlMDFcdTZlMDJcdTZlMDNcdTZlMDRcdTZlMDZcdTZlMDdcdTZlMDhcdTZlMDlcdTZlMGJcdTZlMGZcdTZlMTJcdTZlMTNcdTZlMTVcdTZlMThcdTZlMTlcdTZlMWJcdTZlMWNcdTZlMWVcdTZlMWZcdTZlMjJcdTZlMjZcdTZlMjdcdTZlMjhcdTZlMmFcdTZlMmNcdTZlMmVcdTZl''@;'; put 'put ''MzBcdTZlMzFcdTZlMzNcdTZlMzVcdWZmZmRcdTZlMzZcdTZlMzdcdTZlMzlcdTZlM2JcdTZlM2NcdTZlM2RcdTZlM2VcdTZlM2ZcdTZlNDBcdTZlNDFcdTZlNDJcdTZlNDVcdTZlNDZcdTZlNDdcdTZlNDhcdTZlNDlcdTZlNGFcdTZlNGJcdTZlNGNcdTZlNGZcdTZlNTBcdTZlNTFcdTZlNTJc''@;'; put 'put ''dTZlNTVcdTZlNTdcdTZlNTlcdTZlNWFcdTZlNWNcdTZlNWRcdTZlNWVcdTZlNjBcdTZlNjFcdTZlNjJcdTZlNjNcdTZlNjRcdTZlNjVcdTZlNjZcdTZlNjdcdTZlNjhcdTZlNjlcdTZlNmFcdTZlNmNcdTZlNmRcdTZlNmZcdTZlNzBcdTZlNzFcdTZlNzJcdTZlNzNcdTZlNzRcdTZlNzVcdTZl''@;'; put 'put ''NzZcdTZlNzdcdTZlNzhcdTZlNzlcdTZlN2FcdTZlN2JcdTZlN2NcdTZlN2RcdTZlODBcdTZlODFcdTZlODJcdTZlODRcdTZlODdcdTZlODhcdTZlOGFcdTZlOGJcdTZlOGNcdTZlOGRcdTZlOGVcdTZlOTFcdTZlOTJcdTZlOTNcdTZlOTRcdTZlOTVcdTZlOTZcdTZlOTdcdTZlOTlcdTZlOWFc''@;'; put 'put ''dTZlOWJcdTZlOWRcdTZlOWVcdTZlYTBcdTZlYTFcdTZlYTNcdTZlYTRcdTZlYTZcdTZlYThcdTZlYTlcdTZlYWJcdTZlYWNcdTZlYWRcdTZlYWVcdTZlYjBcdTZlYjNcdTZlYjVcdTZlYjhcdTZlYjlcdTZlYmNcdTZlYmVcdTZlYmZcdTZlYzBcdTZlYzNcdTZlYzRcdTZlYzVcdTZlYzZcdTZl''@;'; put 'put ''YzhcdTZlYzlcdTZlY2FcdTZlY2NcdTZlY2RcdTZlY2VcdTZlZDBcdTZlZDJcdTZlZDZcdTZlZDhcdTZlZDlcdTZlZGJcdTZlZGNcdTZlZGRcdTZlZTNcdTZlZTdcdTZlZWFcdTZlZWJcdTZlZWNcdTZlZWRcdTZlZWVcdTZlZWZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNTZdLmxlbmd0''@;'; put 'put ''aDsrK0UpNjU1MzMhPT1CWzE1Nl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTU2XVtFXV09Mzk5MzYrRSxMWzM5OTM2K0VdPUJbMTU2XVtFXSk7Zm9yKEJbMTU3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZWYwXHU2ZWYxXHU2''@;'; put 'put ''ZWYyXHU2ZWYzXHU2ZWY1XHU2ZWY2XHU2ZWY3XHU2ZWY4XHU2ZWZhXHU2ZWZiXHU2ZWZjXHU2ZWZkXHU2ZWZlXHU2ZWZmXHU2ZjAwXHU2ZjAxXHU2ZjAzXHU2ZjA0XHU2ZjA1XHU2ZjA3XHU2ZjA4XHU2ZjBhXHU2ZjBiXHU2ZjBjXHU2ZjBkXHU2ZjBlXHU2ZjEwXHU2ZjExXHU2ZjEyXHU2ZjE2''@;'; put 'put ''XHU2ZjE3XHU2ZjE4XHU2ZjE5XHU2ZjFhXHU2ZjFiXHU2ZjFjXHU2ZjFkXHU2ZjFlXHU2ZjFmXHU2ZjIxXHU2ZjIyXHU2ZjIzXHU2ZjI1XHU2ZjI2XHU2ZjI3XHU2ZjI4XHU2ZjJjXHU2ZjJlXHU2ZjMwXHU2ZjMyXHU2ZjM0XHU2ZjM1XHU2ZjM3XHU2ZjM4XHU2ZjM5XHU2ZjNhXHU2ZjNiXHU2''@;'; put 'put ''ZjNjXHU2ZjNkXHU2ZjNmXHU2ZjQwXHU2ZjQxXHU2ZjQyXHVmZmZkXHU2ZjQzXHU2ZjQ0XHU2ZjQ1XHU2ZjQ4XHU2ZjQ5XHU2ZjRhXHU2ZjRjXHU2ZjRlXHU2ZjRmXHU2ZjUwXHU2ZjUxXHU2ZjUyXHU2ZjUzXHU2ZjU0XHU2ZjU1XHU2ZjU2XHU2ZjU3XHU2ZjU5XHU2ZjVhXHU2ZjViXHU2ZjVk''@;'; put 'put ''XHU2ZjVmXHU2ZjYwXHU2ZjYxXHU2ZjYzXHU2ZjY0XHU2ZjY1XHU2ZjY3XHU2ZjY4XHU2ZjY5XHU2ZjZhXHU2ZjZiXHU2ZjZjXHU2ZjZmXHU2ZjcwXHU2ZjcxXHU2ZjczXHU2Zjc1XHU2Zjc2XHU2Zjc3XHU2Zjc5XHU2ZjdiXHU2ZjdkXHU2ZjdlXHU2ZjdmXHU2ZjgwXHU2ZjgxXHU2ZjgyXHU2''@;'; put 'put ''ZjgzXHU2Zjg1XHU2Zjg2XHU2Zjg3XHU2ZjhhXHU2ZjhiXHU2ZjhmXHU2ZjkwXHU2ZjkxXHU2ZjkyXHU2ZjkzXHU2Zjk0XHU2Zjk1XHU2Zjk2XHU2Zjk3XHU2Zjk4XHU2Zjk5XHU2ZjlhXHU2ZjliXHU2ZjlkXHU2ZjllXHU2ZjlmXHU2ZmEwXHU2ZmEyXHU2ZmEzXHU2ZmE0XHU2ZmE1XHU2ZmE2''@;'; put 'put ''XHU2ZmE4XHU2ZmE5XHU2ZmFhXHU2ZmFiXHU2ZmFjXHU2ZmFkXHU2ZmFlXHU2ZmFmXHU2ZmIwXHU2ZmIxXHU2ZmIyXHU2ZmI0XHU2ZmI1XHU2ZmI3XHU2ZmI4XHU2ZmJhXHU2ZmJiXHU2ZmJjXHU2ZmJkXHU2ZmJlXHU2ZmJmXHU2ZmMxXHU2ZmMzXHU2ZmM0XHU2ZmM1XHU2ZmM2XHU2ZmM3XHU2''@;'; put 'put ''ZmM4XHU2ZmNhXHU2ZmNiXHU2ZmNjXHU2ZmNkXHU2ZmNlXHU2ZmNmXHU2ZmQwXHU2ZmQzXHU2ZmQ0XHU2ZmQ1XHU2ZmQ2XHU2ZmQ3XHU2ZmQ4XHU2ZmQ5XHU2ZmRhXHU2ZmRiXHU2ZmRjXHU2ZmRkXHU2ZmRmXHU2ZmUyXHU2ZmUzXHU2ZmU0XHU2ZmU1XHVmZmZkIi5zcGxpdCgiIiksRT0wO0Uh''@;'; put 'put ''PUJbMTU3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNTddW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE1N11bRV1dPTQwMTkyK0UsTFs0MDE5MitFXT1CWzE1N11bRV0pO2ZvcihCWzE1OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''NmZlNlx1NmZlN1x1NmZlOFx1NmZlOVx1NmZlYVx1NmZlYlx1NmZlY1x1NmZlZFx1NmZmMFx1NmZmMVx1NmZmMlx1NmZmM1x1NmZmNFx1NmZmNVx1NmZmNlx1NmZmN1x1NmZmOFx1NmZmOVx1NmZmYVx1NmZmYlx1NmZmY1x1NmZmZFx1NmZmZVx1NmZmZlx1NzAwMFx1NzAwMVx1NzAwMlx1NzAw''@;'; put 'put ''M1x1NzAwNFx1NzAwNVx1NzAwNlx1NzAwN1x1NzAwOFx1NzAwOVx1NzAwYVx1NzAwYlx1NzAwY1x1NzAwZFx1NzAwZVx1NzAwZlx1NzAxMFx1NzAxMlx1NzAxM1x1NzAxNFx1NzAxNVx1NzAxNlx1NzAxN1x1NzAxOFx1NzAxOVx1NzAxY1x1NzAxZFx1NzAxZVx1NzAxZlx1NzAyMFx1NzAyMVx1''@;'; put 'put ''NzAyMlx1NzAyNFx1NzAyNVx1NzAyNlx1NzAyN1x1NzAyOFx1NzAyOVx1NzAyYVx1ZmZmZFx1NzAyYlx1NzAyY1x1NzAyZFx1NzAyZVx1NzAyZlx1NzAzMFx1NzAzMVx1NzAzMlx1NzAzM1x1NzAzNFx1NzAzNlx1NzAzN1x1NzAzOFx1NzAzYVx1NzAzYlx1NzAzY1x1NzAzZFx1NzAzZVx1NzAz''@;'; put 'put ''Zlx1NzA0MFx1NzA0MVx1NzA0Mlx1NzA0M1x1NzA0NFx1NzA0NVx1NzA0Nlx1NzA0N1x1NzA0OFx1NzA0OVx1NzA0YVx1NzA0Ylx1NzA0ZFx1NzA0ZVx1NzA1MFx1NzA1MVx1NzA1Mlx1NzA1M1x1NzA1NFx1NzA1NVx1NzA1Nlx1NzA1N1x1NzA1OFx1NzA1OVx1NzA1YVx1NzA1Ylx1NzA1Y1x1''@;'; put 'put ''NzA1ZFx1NzA1Zlx1NzA2MFx1NzA2MVx1NzA2Mlx1NzA2M1x1NzA2NFx1NzA2NVx1NzA2Nlx1NzA2N1x1NzA2OFx1NzA2OVx1NzA2YVx1NzA2ZVx1NzA3MVx1NzA3Mlx1NzA3M1x1NzA3NFx1NzA3N1x1NzA3OVx1NzA3YVx1NzA3Ylx1NzA3ZFx1NzA4MVx1NzA4Mlx1NzA4M1x1NzA4NFx1NzA4''@;'; put 'put ''Nlx1NzA4N1x1NzA4OFx1NzA4Ylx1NzA4Y1x1NzA4ZFx1NzA4Zlx1NzA5MFx1NzA5MVx1NzA5M1x1NzA5N1x1NzA5OFx1NzA5YVx1NzA5Ylx1NzA5ZVx1NzA5Zlx1NzBhMFx1NzBhMVx1NzBhMlx1NzBhM1x1NzBhNFx1NzBhNVx1NzBhNlx1NzBhN1x1NzBhOFx1NzBhOVx1NzBhYVx1NzBiMFx1''@;'; put 'put ''NzBiMlx1NzBiNFx1NzBiNVx1NzBiNlx1NzBiYVx1NzBiZVx1NzBiZlx1NzBjNFx1NzBjNVx1NzBjNlx1NzBjN1x1NzBjOVx1NzBjYlx1NzBjY1x1NzBjZFx1NzBjZVx1NzBjZlx1NzBkMFx1NzBkMVx1NzBkMlx1NzBkM1x1NzBkNFx1NzBkNVx1NzBkNlx1NzBkN1x1NzBkYVx1ZmZmZCIuc3Bs''@;'; put 'put ''aXQoIiIpLEU9MDtFIT1CWzE1OF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTU4XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNThdW0VdXT00MDQ0OCtFLExbNDA0NDgrRV09QlsxNThdW0VdKTtmb3IoQlsxNTldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdTcwZGNcdTcwZGRcdTcwZGVcdTcwZTBcdTcwZTFcdTcwZTJcdTcwZTNcdTcwZTVcdTcwZWFcdTcwZWVcdTcwZjBcdTcwZjFcdTcwZjJcdTcwZjNcdTcwZjRcdTcwZjVcdTcwZjZcdTcwZjhcdTcwZmFcdTcwZmJcdTcwZmNcdTcwZmVcdTcwZmZcdTcxMDBcdTcxMDFcdTcx''@;'; put 'put ''MDJcdTcxMDNcdTcxMDRcdTcxMDVcdTcxMDZcdTcxMDdcdTcxMDhcdTcxMGJcdTcxMGNcdTcxMGRcdTcxMGVcdTcxMGZcdTcxMTFcdTcxMTJcdTcxMTRcdTcxMTdcdTcxMWJcdTcxMWNcdTcxMWRcdTcxMWVcdTcxMWZcdTcxMjBcdTcxMjFcdTcxMjJcdTcxMjNcdTcxMjRcdTcxMjVcdTcxMjdc''@;'; put 'put ''dTcxMjhcdTcxMjlcdTcxMmFcdTcxMmJcdTcxMmNcdTcxMmRcdTcxMmVcdTcxMzJcdTcxMzNcdTcxMzRcdWZmZmRcdTcxMzVcdTcxMzdcdTcxMzhcdTcxMzlcdTcxM2FcdTcxM2JcdTcxM2NcdTcxM2RcdTcxM2VcdTcxM2ZcdTcxNDBcdTcxNDFcdTcxNDJcdTcxNDNcdTcxNDRcdTcxNDZcdTcx''@;'; put 'put ''NDdcdTcxNDhcdTcxNDlcdTcxNGJcdTcxNGRcdTcxNGZcdTcxNTBcdTcxNTFcdTcxNTJcdTcxNTNcdTcxNTRcdTcxNTVcdTcxNTZcdTcxNTdcdTcxNThcdTcxNTlcdTcxNWFcdTcxNWJcdTcxNWRcdTcxNWZcdTcxNjBcdTcxNjFcdTcxNjJcdTcxNjNcdTcxNjVcdTcxNjlcdTcxNmFcdTcxNmJc''@;'; put 'put ''dTcxNmNcdTcxNmRcdTcxNmZcdTcxNzBcdTcxNzFcdTcxNzRcdTcxNzVcdTcxNzZcdTcxNzdcdTcxNzlcdTcxN2JcdTcxN2NcdTcxN2VcdTcxN2ZcdTcxODBcdTcxODFcdTcxODJcdTcxODNcdTcxODVcdTcxODZcdTcxODdcdTcxODhcdTcxODlcdTcxOGJcdTcxOGNcdTcxOGRcdTcxOGVcdTcx''@;'; put 'put ''OTBcdTcxOTFcdTcxOTJcdTcxOTNcdTcxOTVcdTcxOTZcdTcxOTdcdTcxOWFcdTcxOWJcdTcxOWNcdTcxOWRcdTcxOWVcdTcxYTFcdTcxYTJcdTcxYTNcdTcxYTRcdTcxYTVcdTcxYTZcdTcxYTdcdTcxYTlcdTcxYWFcdTcxYWJcdTcxYWRcdTcxYWVcdTcxYWZcdTcxYjBcdTcxYjFcdTcxYjJc''@;'; put 'put ''dTcxYjRcdTcxYjZcdTcxYjdcdTcxYjhcdTcxYmFcdTcxYmJcdTcxYmNcdTcxYmRcdTcxYmVcdTcxYmZcdTcxYzBcdTcxYzFcdTcxYzJcdTcxYzRcdTcxYzVcdTcxYzZcdTcxYzdcdTcxYzhcdTcxYzlcdTcxY2FcdTcxY2JcdTcxY2NcdTcxY2RcdTcxY2ZcdTcxZDBcdTcxZDFcdTcxZDJcdTcx''@;'; put 'put ''ZDNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNTldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1OV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTU5XVtFXV09NDA3MDQrRSxMWzQwNzA0K0VdPUJbMTU5XVtFXSk7Zm9yKEJbMTYwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MWQ2XHU3MWQ3XHU3MWQ4XHU3MWQ5XHU3MWRhXHU3MWRiXHU3MWRjXHU3MWRkXHU3MWRlXHU3MWRmXHU3MWUxXHU3MWUyXHU3MWUzXHU3MWU0XHU3MWU2XHU3MWU4XHU3MWU5XHU3MWVhXHU3MWViXHU3MWVjXHU3MWVkXHU3MWVmXHU3MWYwXHU3''@;'; put 'put ''MWYxXHU3MWYyXHU3MWYzXHU3MWY0XHU3MWY1XHU3MWY2XHU3MWY3XHU3MWY4XHU3MWZhXHU3MWZiXHU3MWZjXHU3MWZkXHU3MWZlXHU3MWZmXHU3MjAwXHU3MjAxXHU3MjAyXHU3MjAzXHU3MjA0XHU3MjA1XHU3MjA3XHU3MjA4XHU3MjA5XHU3MjBhXHU3MjBiXHU3MjBjXHU3MjBkXHU3MjBl''@;'; put 'put ''XHU3MjBmXHU3MjEwXHU3MjExXHU3MjEyXHU3MjEzXHU3MjE0XHU3MjE1XHU3MjE2XHU3MjE3XHU3MjE4XHU3MjE5XHU3MjFhXHVmZmZkXHU3MjFiXHU3MjFjXHU3MjFlXHU3MjFmXHU3MjIwXHU3MjIxXHU3MjIyXHU3MjIzXHU3MjI0XHU3MjI1XHU3MjI2XHU3MjI3XHU3MjI5XHU3MjJiXHU3''@;'; put 'put ''MjJkXHU3MjJlXHU3MjJmXHU3MjMyXHU3MjMzXHU3MjM0XHU3MjNhXHU3MjNjXHU3MjNlXHU3MjQwXHU3MjQxXHU3MjQyXHU3MjQzXHU3MjQ0XHU3MjQ1XHU3MjQ2XHU3MjQ5XHU3MjRhXHU3MjRiXHU3MjRlXHU3MjRmXHU3MjUwXHU3MjUxXHU3MjUzXHU3MjU0XHU3MjU1XHU3MjU3XHU3MjU4''@;'; put 'put ''XHU3MjVhXHU3MjVjXHU3MjVlXHU3MjYwXHU3MjYzXHU3MjY0XHU3MjY1XHU3MjY4XHU3MjZhXHU3MjZiXHU3MjZjXHU3MjZkXHU3MjcwXHU3MjcxXHU3MjczXHU3Mjc0XHU3Mjc2XHU3Mjc3XHU3Mjc4XHU3MjdiXHU3MjdjXHU3MjdkXHU3MjgyXHU3MjgzXHU3Mjg1XHU3Mjg2XHU3Mjg3XHU3''@;'; put 'put ''Mjg4XHU3Mjg5XHU3MjhjXHU3MjhlXHU3MjkwXHU3MjkxXHU3MjkzXHU3Mjk0XHU3Mjk1XHU3Mjk2XHU3Mjk3XHU3Mjk4XHU3Mjk5XHU3MjlhXHU3MjliXHU3MjljXHU3MjlkXHU3MjllXHU3MmEwXHU3MmExXHU3MmEyXHU3MmEzXHU3MmE0XHU3MmE1XHU3MmE2XHU3MmE3XHU3MmE4XHU3MmE5''@;'; put 'put ''XHU3MmFhXHU3MmFiXHU3MmFlXHU3MmIxXHU3MmIyXHU3MmIzXHU3MmI1XHU3MmJhXHU3MmJiXHU3MmJjXHU3MmJkXHU3MmJlXHU3MmJmXHU3MmMwXHU3MmM1XHU3MmM2XHU3MmM3XHU3MmM5XHU3MmNhXHU3MmNiXHU3MmNjXHU3MmNmXHU3MmQxXHU3MmQzXHU3MmQ0XHU3MmQ1XHU3MmQ2XHU3''@;'; put 'put ''MmQ4XHU3MmRhXHU3MmRiXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTYwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjBdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE2MF1bRV1dPTQwOTYwK0UsTFs0MDk2MCtFXT1CWzE2MF1bRV0pO2ZvcihCWzE2MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzAwMFx1MzAwMVx1MzAwMlx4YjdcdTAyYzlcdTAyYzdceGE4XHUz''@;'; put 'put ''MDAzXHUzMDA1XHUyMDE0XHVmZjVlXHUyMDE2XHUyMDI2XHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUzMDE0XHUzMDE1XHUzMDA4XHUzMDA5XHUzMDBhXHUzMDBiXHUzMDBjXHUzMDBkXHUzMDBlXHUzMDBmXHUzMDE2XHUzMDE3XHUzMDEwXHUzMDExXHhiMVx4ZDdceGY3XHUyMjM2XHUyMjI3''@;'; put 'put ''XHUyMjI4XHUyMjExXHUyMjBmXHUyMjJhXHUyMjI5XHUyMjA4XHUyMjM3XHUyMjFhXHUyMmE1XHUyMjI1XHUyMjIwXHUyMzEyXHUyMjk5XHUyMjJiXHUyMjJlXHUyMjYxXHUyMjRjXHUyMjQ4XHUyMjNkXHUyMjFkXHUyMjYwXHUyMjZlXHUyMjZmXHUyMjY0XHUyMjY1XHUyMjFlXHUyMjM1XHUy''@;'; put 'put ''MjM0XHUyNjQyXHUyNjQwXHhiMFx1MjAzMlx1MjAzM1x1MjEwM1x1ZmYwNFx4YTRcdWZmZTBcdWZmZTFcdTIwMzBceGE3XHUyMTE2XHUyNjA2XHUyNjA1XHUyNWNiXHUyNWNmXHUyNWNlXHUyNWM3XHUyNWM2XHUyNWExXHUyNWEwXHUyNWIzXHUyNWIyXHUyMDNiXHUyMTkyXHUyMTkwXHUyMTkx''@;'; put 'put ''XHUyMTkzXHUzMDEzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTYxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjFdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE2MV1bRV1dPTQxMjE2K0UsTFs0MTIxNitFXT1CWzE2MV1bRV0pO2ZvcihCWzE2Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjE3MFx1MjE3MVx1MjE3Mlx1MjE3M1x1MjE3NFx1MjE3NVx1MjE3Nlx1''@;'; put 'put ''MjE3N1x1MjE3OFx1MjE3OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjQ4OFx1MjQ4OVx1MjQ4YVx1MjQ4Ylx1MjQ4Y1x1MjQ4ZFx1MjQ4ZVx1MjQ4Zlx1MjQ5MFx1MjQ5MVx1MjQ5Mlx1MjQ5M1x1MjQ5NFx1MjQ5NVx1MjQ5Nlx1MjQ5N1x1MjQ5OFx1MjQ5OVx1MjQ5''@;'; put 'put ''YVx1MjQ5Ylx1MjQ3NFx1MjQ3NVx1MjQ3Nlx1MjQ3N1x1MjQ3OFx1MjQ3OVx1MjQ3YVx1MjQ3Ylx1MjQ3Y1x1MjQ3ZFx1MjQ3ZVx1MjQ3Zlx1MjQ4MFx1MjQ4MVx1MjQ4Mlx1MjQ4M1x1MjQ4NFx1MjQ4NVx1MjQ4Nlx1MjQ4N1x1MjQ2MFx1MjQ2MVx1MjQ2Mlx1MjQ2M1x1MjQ2NFx1MjQ2NVx1''@;'; put 'put ''MjQ2Nlx1MjQ2N1x1MjQ2OFx1MjQ2OVx1ZmZmZFx1ZmZmZFx1MzIyMFx1MzIyMVx1MzIyMlx1MzIyM1x1MzIyNFx1MzIyNVx1MzIyNlx1MzIyN1x1MzIyOFx1MzIyOVx1ZmZmZFx1ZmZmZFx1MjE2MFx1MjE2MVx1MjE2Mlx1MjE2M1x1MjE2NFx1MjE2NVx1MjE2Nlx1MjE2N1x1MjE2OFx1MjE2''@;'; put 'put ''OVx1MjE2YVx1MjE2Ylx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTYyXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNjJdW0VdXT00MTQ3MitFLExbNDE0NzIrRV09QlsxNjJdW0VdKTtmb3IoQlsxNjNdPSJcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmMDFcdWZmMDJcdWZmMDNcdWZmZTVcdWZmMDVc''@;'; put 'put ''dWZmMDZcdWZmMDdcdWZmMDhcdWZmMDlcdWZmMGFcdWZmMGJcdWZmMGNcdWZmMGRcdWZmMGVcdWZmMGZcdWZmMTBcdWZmMTFcdWZmMTJcdWZmMTNcdWZmMTRcdWZmMTVcdWZmMTZcdWZmMTdcdWZmMThcdWZmMTlcdWZmMWFcdWZmMWJcdWZmMWNcdWZmMWRcdWZmMWVcdWZmMWZcdWZmMjBcdWZm''@;'; put 'put ''MjFcdWZmMjJcdWZmMjNcdWZmMjRcdWZmMjVcdWZmMjZcdWZmMjdcdWZmMjhcdWZmMjlcdWZmMmFcdWZmMmJcdWZmMmNcdWZmMmRcdWZmMmVcdWZmMmZcdWZmMzBcdWZmMzFcdWZmMzJcdWZmMzNcdWZmMzRcdWZmMzVcdWZmMzZcdWZmMzdcdWZmMzhcdWZmMzlcdWZmM2FcdWZmM2JcdWZmM2Nc''@;'; put 'put ''dWZmM2RcdWZmM2VcdWZmM2ZcdWZmNDBcdWZmNDFcdWZmNDJcdWZmNDNcdWZmNDRcdWZmNDVcdWZmNDZcdWZmNDdcdWZmNDhcdWZmNDlcdWZmNGFcdWZmNGJcdWZmNGNcdWZmNGRcdWZmNGVcdWZmNGZcdWZmNTBcdWZmNTFcdWZmNTJcdWZmNTNcdWZmNTRcdWZmNTVcdWZmNTZcdWZmNTdcdWZm''@;'; put 'put ''NThcdWZmNTlcdWZmNWFcdWZmNWJcdWZmNWNcdWZmNWRcdWZmZTNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2M11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTYzXVtFXV09NDE3MjgrRSxMWzQxNzI4K0VdPUJbMTYzXVtFXSk7Zm9yKEJb''@;'; put 'put ''MTY0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMDQxXHUzMDQyXHUzMDQz''@;'; put 'put ''XHUzMDQ0XHUzMDQ1XHUzMDQ2XHUzMDQ3XHUzMDQ4XHUzMDQ5XHUzMDRhXHUzMDRiXHUzMDRjXHUzMDRkXHUzMDRlXHUzMDRmXHUzMDUwXHUzMDUxXHUzMDUyXHUzMDUzXHUzMDU0XHUzMDU1XHUzMDU2XHUzMDU3XHUzMDU4XHUzMDU5XHUzMDVhXHUzMDViXHUzMDVjXHUzMDVkXHUzMDVlXHUz''@;'; put 'put ''MDVmXHUzMDYwXHUzMDYxXHUzMDYyXHUzMDYzXHUzMDY0XHUzMDY1XHUzMDY2XHUzMDY3XHUzMDY4XHUzMDY5XHUzMDZhXHUzMDZiXHUzMDZjXHUzMDZkXHUzMDZlXHUzMDZmXHUzMDcwXHUzMDcxXHUzMDcyXHUzMDczXHUzMDc0XHUzMDc1XHUzMDc2XHUzMDc3XHUzMDc4XHUzMDc5XHUzMDdh''@;'; put 'put ''XHUzMDdiXHUzMDdjXHUzMDdkXHUzMDdlXHUzMDdmXHUzMDgwXHUzMDgxXHUzMDgyXHUzMDgzXHUzMDg0XHUzMDg1XHUzMDg2XHUzMDg3XHUzMDg4XHUzMDg5XHUzMDhhXHUzMDhiXHUzMDhjXHUzMDhkXHUzMDhlXHUzMDhmXHUzMDkwXHUzMDkxXHUzMDkyXHUzMDkzXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTY0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjRdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE2NF1bRV1dPTQxOTg0K0UsTFs0MTk4NCtFXT1CWzE2''@;'; put 'put ''NF1bRV0pO2ZvcihCWzE2NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzBh''@;'; put 'put ''MVx1MzBhMlx1MzBhM1x1MzBhNFx1MzBhNVx1MzBhNlx1MzBhN1x1MzBhOFx1MzBhOVx1MzBhYVx1MzBhYlx1MzBhY1x1MzBhZFx1MzBhZVx1MzBhZlx1MzBiMFx1MzBiMVx1MzBiMlx1MzBiM1x1MzBiNFx1MzBiNVx1MzBiNlx1MzBiN1x1MzBiOFx1MzBiOVx1MzBiYVx1MzBiYlx1MzBiY1x1''@;'; put 'put ''MzBiZFx1MzBiZVx1MzBiZlx1MzBjMFx1MzBjMVx1MzBjMlx1MzBjM1x1MzBjNFx1MzBjNVx1MzBjNlx1MzBjN1x1MzBjOFx1MzBjOVx1MzBjYVx1MzBjYlx1MzBjY1x1MzBjZFx1MzBjZVx1MzBjZlx1MzBkMFx1MzBkMVx1MzBkMlx1MzBkM1x1MzBkNFx1MzBkNVx1MzBkNlx1MzBkN1x1MzBk''@;'; put 'put ''OFx1MzBkOVx1MzBkYVx1MzBkYlx1MzBkY1x1MzBkZFx1MzBkZVx1MzBkZlx1MzBlMFx1MzBlMVx1MzBlMlx1MzBlM1x1MzBlNFx1MzBlNVx1MzBlNlx1MzBlN1x1MzBlOFx1MzBlOVx1MzBlYVx1MzBlYlx1MzBlY1x1MzBlZFx1MzBlZVx1MzBlZlx1MzBmMFx1MzBmMVx1MzBmMlx1MzBmM1x1''@;'; put 'put ''MzBmNFx1MzBmNVx1MzBmNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2NV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTY1XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNjVdW0VdXT00MjI0MCtFLExb''@;'; put 'put ''NDIyNDArRV09QlsxNjVdW0VdKTtmb3IoQlsxNjZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdTAzOTFcdTAzOTJcdTAzOTNcdTAzOTRcdTAzOTVcdTAzOTZcdTAzOTdcdTAzOThcdTAzOTlcdTAzOWFcdTAzOWJcdTAzOWNcdTAzOWRcdTAzOWVcdTAzOWZcdTAzYTBcdTAzYTFcdTAzYTNcdTAzYTRcdTAzYTVcdTAzYTZcdTAzYTdcdTAzYThcdTAzYTlcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTAzYjFcdTAzYjJcdTAzYjNcdTAzYjRcdTAzYjVcdTAzYjZcdTAzYjdcdTAzYjhcdTAzYjlcdTAzYmFcdTAzYmJcdTAzYmNcdTAzYmRcdTAzYmVcdTAzYmZcdTAzYzBcdTAzYzFcdTAzYzNcdTAzYzRcdTAzYzVcdTAzYzZcdTAz''@;'; put 'put ''YzdcdTAzYzhcdTAzYzlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZlMzVcdWZlMzZcdWZlMzlcdWZlM2FcdWZlM2ZcdWZlNDBcdWZlM2RcdWZlM2VcdWZlNDFcdWZlNDJcdWZlNDNcdWZlNDRcdWZmZmRcdWZmZmRcdWZlM2JcdWZlM2NcdWZlMzdcdWZlMzhc''@;'; put 'put ''dWZlMzFcdWZmZmRcdWZlMzNcdWZlMzRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2Nl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTY2XVtF''@;'; put 'put ''XV09NDI0OTYrRSxMWzQyNDk2K0VdPUJbMTY2XVtFXSk7Zm9yKEJbMTY3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDAxXHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2''@;'; put 'put ''XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwNDMwXHUwNDMxXHUwNDMyXHUw''@;'; put 'put ''NDMzXHUwNDM0XHUwNDM1XHUwNDUxXHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRk''@;'; put 'put ''XHUwNDRlXHUwNDRmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTY3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjddW0VdLmNoYXJDb2RlQXQoMCkm''@;'; put 'put ''JihtZVtCWzE2N11bRV1dPTQyNzUyK0UsTFs0Mjc1MitFXT1CWzE2N11bRV0pO2ZvcihCWzE2OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDJjYVx1MDJjYlx1MDJkOVx1MjAxM1x1MjAxNVx1MjAyNVx1MjAzNVx1MjEwNVx1MjEw''@;'; put 'put ''OVx1MjE5Nlx1MjE5N1x1MjE5OFx1MjE5OVx1MjIxNVx1MjIxZlx1MjIyM1x1MjI1Mlx1MjI2Nlx1MjI2N1x1MjJiZlx1MjU1MFx1MjU1MVx1MjU1Mlx1MjU1M1x1MjU1NFx1MjU1NVx1MjU1Nlx1MjU1N1x1MjU1OFx1MjU1OVx1MjU1YVx1MjU1Ylx1MjU1Y1x1MjU1ZFx1MjU1ZVx1MjU1Zlx1''@;'; put 'put ''MjU2MFx1MjU2MVx1MjU2Mlx1MjU2M1x1MjU2NFx1MjU2NVx1MjU2Nlx1MjU2N1x1MjU2OFx1MjU2OVx1MjU2YVx1MjU2Ylx1MjU2Y1x1MjU2ZFx1MjU2ZVx1MjU2Zlx1MjU3MFx1MjU3MVx1MjU3Mlx1MjU3M1x1MjU4MVx1MjU4Mlx1MjU4M1x1MjU4NFx1MjU4NVx1MjU4Nlx1MjU4N1x1ZmZm''@;'; put 'put ''ZFx1MjU4OFx1MjU4OVx1MjU4YVx1MjU4Ylx1MjU4Y1x1MjU4ZFx1MjU4ZVx1MjU4Zlx1MjU5M1x1MjU5NFx1MjU5NVx1MjViY1x1MjViZFx1MjVlMlx1MjVlM1x1MjVlNFx1MjVlNVx1MjYwOVx1MjI5NVx1MzAxMlx1MzAxZFx1MzAxZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDEwMVx4ZTFcdTAxY2VceGUwXHUwMTEzXHhlOVx1MDExYlx4ZThcdTAxMmJceGVkXHUwMWQwXHhlY1x1MDE0ZFx4ZjNcdTAxZDJceGYyXHUwMTZiXHhmYVx1MDFkNFx4ZjlcdTAxZDZcdTAxZDhcdTAxZGFcdTAxZGNceGZjXHhl''@;'; put 'put ''YVx1MDI1MVx1ZmZmZFx1MDE0NFx1MDE0OFx1ZmZmZFx1MDI2MVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzEwNVx1MzEwNlx1MzEwN1x1MzEwOFx1MzEwOVx1MzEwYVx1MzEwYlx1MzEwY1x1MzEwZFx1MzEwZVx1MzEwZlx1MzExMFx1MzExMVx1MzExMlx1MzExM1x1MzExNFx1MzExNVx1''@;'; put 'put ''MzExNlx1MzExN1x1MzExOFx1MzExOVx1MzExYVx1MzExYlx1MzExY1x1MzExZFx1MzExZVx1MzExZlx1MzEyMFx1MzEyMVx1MzEyMlx1MzEyM1x1MzEyNFx1MzEyNVx1MzEyNlx1MzEyN1x1MzEyOFx1MzEyOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2OF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTY4XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNjhd''@;'; put 'put ''W0VdXT00MzAwOCtFLExbNDMwMDgrRV09QlsxNjhdW0VdKTtmb3IoQlsxNjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMwMjFcdTMwMjJcdTMwMjNcdTMwMjRcdTMwMjVcdTMwMjZcdTMwMjdcdTMwMjhcdTMwMjlcdTMyYTNcdTMz''@;'; put 'put ''OGVcdTMzOGZcdTMzOWNcdTMzOWRcdTMzOWVcdTMzYTFcdTMzYzRcdTMzY2VcdTMzZDFcdTMzZDJcdTMzZDVcdWZlMzBcdWZmZTJcdWZmZTRcdWZmZmRcdTIxMjFcdTMyMzFcdWZmZmRcdTIwMTBcdWZmZmRcdWZmZmRcdWZmZmRcdTMwZmNcdTMwOWJcdTMwOWNcdTMwZmRcdTMwZmVcdTMwMDZc''@;'; put 'put ''dTMwOWRcdTMwOWVcdWZlNDlcdWZlNGFcdWZlNGJcdWZlNGNcdWZlNGRcdWZlNGVcdWZlNGZcdWZlNTBcdWZlNTFcdWZlNTJcdWZlNTRcdWZlNTVcdWZlNTZcdWZlNTdcdWZlNTlcdWZlNWFcdWZlNWJcdWZlNWNcdWZlNWRcdWZlNWVcdWZlNWZcdWZlNjBcdWZlNjFcdWZmZmRcdWZlNjJcdWZl''@;'; put 'put ''NjNcdWZlNjRcdWZlNjVcdWZlNjZcdWZlNjhcdWZlNjlcdWZlNmFcdWZlNmJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMwMDdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTI1MDBcdTI1MDFcdTI1MDJcdTI1MDNcdTI1MDRcdTI1MDVcdTI1MDZcdTI1MDdcdTI1MDhcdTI1MDlcdTI1MGFcdTI1MGJcdTI1MGNcdTI1MGRcdTI1MGVcdTI1MGZcdTI1MTBcdTI1MTFcdTI1MTJcdTI1MTNcdTI1''@;'; put 'put ''MTRcdTI1MTVcdTI1MTZcdTI1MTdcdTI1MThcdTI1MTlcdTI1MWFcdTI1MWJcdTI1MWNcdTI1MWRcdTI1MWVcdTI1MWZcdTI1MjBcdTI1MjFcdTI1MjJcdTI1MjNcdTI1MjRcdTI1MjVcdTI1MjZcdTI1MjdcdTI1MjhcdTI1MjlcdTI1MmFcdTI1MmJcdTI1MmNcdTI1MmRcdTI1MmVcdTI1MmZc''@;'; put 'put ''dTI1MzBcdTI1MzFcdTI1MzJcdTI1MzNcdTI1MzRcdTI1MzVcdTI1MzZcdTI1MzdcdTI1MzhcdTI1MzlcdTI1M2FcdTI1M2JcdTI1M2NcdTI1M2RcdTI1M2VcdTI1M2ZcdTI1NDBcdTI1NDFcdTI1NDJcdTI1NDNcdTI1NDRcdTI1NDVcdTI1NDZcdTI1NDdcdTI1NDhcdTI1NDlcdTI1NGFcdTI1''@;'; put 'put ''NGJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2OV1bRV0uY2hhckNvZGVBdCgw''@;'; put 'put ''KSYmKG1lW0JbMTY5XVtFXV09NDMyNjQrRSxMWzQzMjY0K0VdPUJbMTY5XVtFXSk7Zm9yKEJbMTcwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MmRjXHU3MmRkXHU3MmRmXHU3MmUyXHU3MmUzXHU3MmU0XHU3MmU1XHU3MmU2XHU3''@;'; put 'put ''MmU3XHU3MmVhXHU3MmViXHU3MmY1XHU3MmY2XHU3MmY5XHU3MmZkXHU3MmZlXHU3MmZmXHU3MzAwXHU3MzAyXHU3MzA0XHU3MzA1XHU3MzA2XHU3MzA3XHU3MzA4XHU3MzA5XHU3MzBiXHU3MzBjXHU3MzBkXHU3MzBmXHU3MzEwXHU3MzExXHU3MzEyXHU3MzE0XHU3MzE4XHU3MzE5XHU3MzFh''@;'; put 'put ''XHU3MzFmXHU3MzIwXHU3MzIzXHU3MzI0XHU3MzI2XHU3MzI3XHU3MzI4XHU3MzJkXHU3MzJmXHU3MzMwXHU3MzMyXHU3MzMzXHU3MzM1XHU3MzM2XHU3MzNhXHU3MzNiXHU3MzNjXHU3MzNkXHU3MzQwXHU3MzQxXHU3MzQyXHU3MzQzXHU3MzQ0XHU3MzQ1XHU3MzQ2XHU3MzQ3XHU3MzQ4XHVm''@;'; put 'put ''ZmZkXHU3MzQ5XHU3MzRhXHU3MzRiXHU3MzRjXHU3MzRlXHU3MzRmXHU3MzUxXHU3MzUzXHU3MzU0XHU3MzU1XHU3MzU2XHU3MzU4XHU3MzU5XHU3MzVhXHU3MzViXHU3MzVjXHU3MzVkXHU3MzVlXHU3MzVmXHU3MzYxXHU3MzYyXHU3MzYzXHU3MzY0XHU3MzY1XHU3MzY2XHU3MzY3XHU3MzY4''@;'; put 'put ''XHU3MzY5XHU3MzZhXHU3MzZiXHU3MzZlXHU3MzcwXHU3MzcxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTcwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzBdW0Vd''@;'; put 'put ''LmNoYXJDb2RlQXQoMCkmJihtZVtCWzE3MF1bRV1dPTQzNTIwK0UsTFs0MzUyMCtFXT1CWzE3MF1bRV0pO2ZvcihCWzE3MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzM3Mlx1NzM3M1x1NzM3NFx1NzM3NVx1NzM3Nlx1NzM3N1x1''@;'; put 'put ''NzM3OFx1NzM3OVx1NzM3YVx1NzM3Ylx1NzM3Y1x1NzM3ZFx1NzM3Zlx1NzM4MFx1NzM4MVx1NzM4Mlx1NzM4M1x1NzM4NVx1NzM4Nlx1NzM4OFx1NzM4YVx1NzM4Y1x1NzM4ZFx1NzM4Zlx1NzM5MFx1NzM5Mlx1NzM5M1x1NzM5NFx1NzM5NVx1NzM5N1x1NzM5OFx1NzM5OVx1NzM5YVx1NzM5''@;'; put 'put ''Y1x1NzM5ZFx1NzM5ZVx1NzNhMFx1NzNhMVx1NzNhM1x1NzNhNFx1NzNhNVx1NzNhNlx1NzNhN1x1NzNhOFx1NzNhYVx1NzNhY1x1NzNhZFx1NzNiMVx1NzNiNFx1NzNiNVx1NzNiNlx1NzNiOFx1NzNiOVx1NzNiY1x1NzNiZFx1NzNiZVx1NzNiZlx1NzNjMVx1NzNjM1x1NzNjNFx1NzNjNVx1''@;'; put 'put ''NzNjNlx1NzNjN1x1ZmZmZFx1NzNjYlx1NzNjY1x1NzNjZVx1NzNkMlx1NzNkM1x1NzNkNFx1NzNkNVx1NzNkNlx1NzNkN1x1NzNkOFx1NzNkYVx1NzNkYlx1NzNkY1x1NzNkZFx1NzNkZlx1NzNlMVx1NzNlMlx1NzNlM1x1NzNlNFx1NzNlNlx1NzNlOFx1NzNlYVx1NzNlYlx1NzNlY1x1NzNl''@;'; put 'put ''ZVx1NzNlZlx1NzNmMFx1NzNmMVx1NzNmM1x1NzNmNFx1NzNmNVx1NzNmNlx1NzNmN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3MV0ubGVuZ3RoOysrRSk2NTUz''@;'; put 'put ''MyE9PUJbMTcxXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNzFdW0VdXT00Mzc3NitFLExbNDM3NzYrRV09QlsxNzFdW0VdKTtmb3IoQlsxNzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTczZjhcdTczZjlcdTczZmFcdTczZmJc''@;'; put 'put ''dTczZmNcdTczZmRcdTczZmVcdTczZmZcdTc0MDBcdTc0MDFcdTc0MDJcdTc0MDRcdTc0MDdcdTc0MDhcdTc0MGJcdTc0MGNcdTc0MGRcdTc0MGVcdTc0MTFcdTc0MTJcdTc0MTNcdTc0MTRcdTc0MTVcdTc0MTZcdTc0MTdcdTc0MThcdTc0MTlcdTc0MWNcdTc0MWRcdTc0MWVcdTc0MWZcdTc0''@;'; put 'put ''MjBcdTc0MjFcdTc0MjNcdTc0MjRcdTc0MjdcdTc0MjlcdTc0MmJcdTc0MmRcdTc0MmZcdTc0MzFcdTc0MzJcdTc0MzdcdTc0MzhcdTc0MzlcdTc0M2FcdTc0M2JcdTc0M2RcdTc0M2VcdTc0M2ZcdTc0NDBcdTc0NDJcdTc0NDNcdTc0NDRcdTc0NDVcdTc0NDZcdTc0NDdcdTc0NDhcdTc0NDlc''@;'; put 'put ''dTc0NGFcdTc0NGJcdTc0NGNcdTc0NGRcdWZmZmRcdTc0NGVcdTc0NGZcdTc0NTBcdTc0NTFcdTc0NTJcdTc0NTNcdTc0NTRcdTc0NTZcdTc0NThcdTc0NWRcdTc0NjBcdTc0NjFcdTc0NjJcdTc0NjNcdTc0NjRcdTc0NjVcdTc0NjZcdTc0NjdcdTc0NjhcdTc0NjlcdTc0NmFcdTc0NmJcdTc0''@;'; put 'put ''NmNcdTc0NmVcdTc0NmZcdTc0NzFcdTc0NzJcdTc0NzNcdTc0NzRcdTc0NzVcdTc0NzhcdTc0NzlcdTc0N2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzJdLmxl''@;'; put 'put ''bmd0aDsrK0UpNjU1MzMhPT1CWzE3Ml1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTcyXVtFXV09NDQwMzIrRSxMWzQ0MDMyK0VdPUJbMTcyXVtFXSk7Zm9yKEJbMTczXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NDdiXHU3NDdj''@;'; put 'put ''XHU3NDdkXHU3NDdmXHU3NDgyXHU3NDg0XHU3NDg1XHU3NDg2XHU3NDg4XHU3NDg5XHU3NDhhXHU3NDhjXHU3NDhkXHU3NDhmXHU3NDkxXHU3NDkyXHU3NDkzXHU3NDk0XHU3NDk1XHU3NDk2XHU3NDk3XHU3NDk4XHU3NDk5XHU3NDlhXHU3NDliXHU3NDlkXHU3NDlmXHU3NGEwXHU3NGExXHU3''@;'; put 'put ''NGEyXHU3NGEzXHU3NGE0XHU3NGE1XHU3NGE2XHU3NGFhXHU3NGFiXHU3NGFjXHU3NGFkXHU3NGFlXHU3NGFmXHU3NGIwXHU3NGIxXHU3NGIyXHU3NGIzXHU3NGI0XHU3NGI1XHU3NGI2XHU3NGI3XHU3NGI4XHU3NGI5XHU3NGJiXHU3NGJjXHU3NGJkXHU3NGJlXHU3NGJmXHU3NGMwXHU3NGMx''@;'; put 'put ''XHU3NGMyXHU3NGMzXHU3NGM0XHU3NGM1XHU3NGM2XHU3NGM3XHVmZmZkXHU3NGM4XHU3NGM5XHU3NGNhXHU3NGNiXHU3NGNjXHU3NGNkXHU3NGNlXHU3NGNmXHU3NGQwXHU3NGQxXHU3NGQzXHU3NGQ0XHU3NGQ1XHU3NGQ2XHU3NGQ3XHU3NGQ4XHU3NGQ5XHU3NGRhXHU3NGRiXHU3NGRkXHU3''@;'; put 'put ''NGRmXHU3NGUxXHU3NGU1XHU3NGU3XHU3NGU4XHU3NGU5XHU3NGVhXHU3NGViXHU3NGVjXHU3NGVkXHU3NGYwXHU3NGYxXHU3NGYyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0w''@;'; put 'put ''O0UhPUJbMTczXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzNdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE3M11bRV1dPTQ0Mjg4K0UsTFs0NDI4OCtFXT1CWzE3M11bRV0pO2ZvcihCWzE3NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1NzRmM1x1NzRmNVx1NzRmOFx1NzRmOVx1NzRmYVx1NzRmYlx1NzRmY1x1NzRmZFx1NzRmZVx1NzUwMFx1NzUwMVx1NzUwMlx1NzUwM1x1NzUwNVx1NzUwNlx1NzUwN1x1NzUwOFx1NzUwOVx1NzUwYVx1NzUwYlx1NzUwY1x1NzUwZVx1NzUxMFx1NzUxMlx1NzUxNFx1NzUxNVx1NzUxNlx1''@;'; put 'put ''NzUxN1x1NzUxYlx1NzUxZFx1NzUxZVx1NzUyMFx1NzUyMVx1NzUyMlx1NzUyM1x1NzUyNFx1NzUyNlx1NzUyN1x1NzUyYVx1NzUyZVx1NzUzNFx1NzUzNlx1NzUzOVx1NzUzY1x1NzUzZFx1NzUzZlx1NzU0MVx1NzU0Mlx1NzU0M1x1NzU0NFx1NzU0Nlx1NzU0N1x1NzU0OVx1NzU0YVx1NzU0''@;'; put 'put ''ZFx1NzU1MFx1NzU1MVx1NzU1Mlx1NzU1M1x1NzU1NVx1NzU1Nlx1NzU1N1x1NzU1OFx1ZmZmZFx1NzU1ZFx1NzU1ZVx1NzU1Zlx1NzU2MFx1NzU2MVx1NzU2Mlx1NzU2M1x1NzU2NFx1NzU2N1x1NzU2OFx1NzU2OVx1NzU2Ylx1NzU2Y1x1NzU2ZFx1NzU2ZVx1NzU2Zlx1NzU3MFx1NzU3MVx1''@;'; put 'put ''NzU3M1x1NzU3NVx1NzU3Nlx1NzU3N1x1NzU3YVx1NzU3Ylx1NzU3Y1x1NzU3ZFx1NzU3ZVx1NzU4MFx1NzU4MVx1NzU4Mlx1NzU4NFx1NzU4NVx1NzU4N1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIu''@;'; put 'put ''c3BsaXQoIiIpLEU9MDtFIT1CWzE3NF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTc0XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNzRdW0VdXT00NDU0NCtFLExbNDQ1NDQrRV09QlsxNzRdW0VdKTtmb3IoQlsxNzVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdTc1ODhcdTc1ODlcdTc1OGFcdTc1OGNcdTc1OGRcdTc1OGVcdTc1OTBcdTc1OTNcdTc1OTVcdTc1OThcdTc1OWJcdTc1OWNcdTc1OWVcdTc1YTJcdTc1YTZcdTc1YTdcdTc1YThcdTc1YTlcdTc1YWFcdTc1YWRcdTc1YjZcdTc1YjdcdTc1YmFcdTc1YmJcdTc1YmZc''@;'; put 'put ''dTc1YzBcdTc1YzFcdTc1YzZcdTc1Y2JcdTc1Y2NcdTc1Y2VcdTc1Y2ZcdTc1ZDBcdTc1ZDFcdTc1ZDNcdTc1ZDdcdTc1ZDlcdTc1ZGFcdTc1ZGNcdTc1ZGRcdTc1ZGZcdTc1ZTBcdTc1ZTFcdTc1ZTVcdTc1ZTlcdTc1ZWNcdTc1ZWRcdTc1ZWVcdTc1ZWZcdTc1ZjJcdTc1ZjNcdTc1ZjVcdTc1''@;'; put 'put ''ZjZcdTc1ZjdcdTc1ZjhcdTc1ZmFcdTc1ZmJcdTc1ZmRcdTc1ZmVcdTc2MDJcdTc2MDRcdTc2MDZcdTc2MDdcdWZmZmRcdTc2MDhcdTc2MDlcdTc2MGJcdTc2MGRcdTc2MGVcdTc2MGZcdTc2MTFcdTc2MTJcdTc2MTNcdTc2MTRcdTc2MTZcdTc2MWFcdTc2MWNcdTc2MWRcdTc2MWVcdTc2MjFc''@;'; put 'put ''dTc2MjNcdTc2MjdcdTc2MjhcdTc2MmNcdTc2MmVcdTc2MmZcdTc2MzFcdTc2MzJcdTc2MzZcdTc2MzdcdTc2MzlcdTc2M2FcdTc2M2JcdTc2M2RcdTc2NDFcdTc2NDJcdTc2NDRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3NV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTc1XVtFXV09NDQ4MDArRSxMWzQ0ODAwK0VdPUJbMTc1XVtFXSk7Zm9yKEJbMTc2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NjQ1XHU3NjQ2XHU3NjQ3XHU3NjQ4XHU3NjQ5XHU3NjRhXHU3NjRiXHU3NjRlXHU3NjRmXHU3NjUwXHU3NjUxXHU3NjUyXHU3NjUzXHU3NjU1XHU3NjU3XHU3NjU4XHU3NjU5XHU3NjVhXHU3NjViXHU3NjVkXHU3NjVmXHU3NjYwXHU3NjYx''@;'; put 'put ''XHU3NjYyXHU3NjY0XHU3NjY1XHU3NjY2XHU3NjY3XHU3NjY4XHU3NjY5XHU3NjZhXHU3NjZjXHU3NjZkXHU3NjZlXHU3NjcwXHU3NjcxXHU3NjcyXHU3NjczXHU3Njc0XHU3Njc1XHU3Njc2XHU3Njc3XHU3Njc5XHU3NjdhXHU3NjdjXHU3NjdmXHU3NjgwXHU3NjgxXHU3NjgzXHU3Njg1XHU3''@;'; put 'put ''Njg5XHU3NjhhXHU3NjhjXHU3NjhkXHU3NjhmXHU3NjkwXHU3NjkyXHU3Njk0XHU3Njk1XHU3Njk3XHU3Njk4XHU3NjlhXHU3NjliXHVmZmZkXHU3NjljXHU3NjlkXHU3NjllXHU3NjlmXHU3NmEwXHU3NmExXHU3NmEyXHU3NmEzXHU3NmE1XHU3NmE2XHU3NmE3XHU3NmE4XHU3NmE5XHU3NmFh''@;'; put 'put ''XHU3NmFiXHU3NmFjXHU3NmFkXHU3NmFmXHU3NmIwXHU3NmIzXHU3NmI1XHU3NmI2XHU3NmI3XHU3NmI4XHU3NmI5XHU3NmJhXHU3NmJiXHU3NmJjXHU3NmJkXHU3NmJlXHU3NmMwXHU3NmMxXHU3NmMzXHU1NTRhXHU5NjNmXHU1N2MzXHU2MzI4XHU1NGNlXHU1NTA5XHU1NGMwXHU3NjkxXHU3''@;'; put 'put ''NjRjXHU4NTNjXHU3N2VlXHU4MjdlXHU3ODhkXHU3MjMxXHU5Njk4XHU5NzhkXHU2YzI4XHU1Yjg5XHU0ZmZhXHU2MzA5XHU2Njk3XHU1Y2I4XHU4MGZhXHU2ODQ4XHU4MGFlXHU2NjAyXHU3NmNlXHU1MWY5XHU2NTU2XHU3MWFjXHU3ZmYxXHU4ODg0XHU1MGIyXHU1OTY1XHU2MWNhXHU2ZmIz''@;'; put 'put ''XHU4MmFkXHU2MzRjXHU2MjUyXHU1M2VkXHU1NDI3XHU3YjA2XHU1MTZiXHU3NWE0XHU1ZGY0XHU2MmQ0XHU4ZGNiXHU5Nzc2XHU2MjhhXHU4MDE5XHU1NzVkXHU5NzM4XHU3ZjYyXHU3MjM4XHU3NjdkXHU2N2NmXHU3NjdlXHU2NDQ2XHU0ZjcwXHU4ZDI1XHU2MmRjXHU3YTE3XHU2NTkxXHU3''@;'; put 'put ''M2VkXHU2NDJjXHU2MjczXHU4MjJjXHU5ODgxXHU2NzdmXHU3MjQ4XHU2MjZlXHU2MmNjXHU0ZjM0XHU3NGUzXHU1MzRhXHU1MjllXHU3ZWNhXHU5MGE2XHU1ZTJlXHU2ODg2XHU2OTljXHU4MTgwXHU3ZWQxXHU2OGQyXHU3OGM1XHU4NjhjXHU5NTUxXHU1MDhkXHU4YzI0XHU4MmRlXHU4MGRl''@;'; put 'put ''XHU1MzA1XHU4OTEyXHU1MjY1XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTc2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzZdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE3Nl1bRV1dPTQ1MDU2K0UsTFs0NTA1NitFXT1CWzE3Nl1bRV0pO2ZvcihCWzE3N109Ilx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzZjNFx1NzZjN1x1NzZjOVx1NzZjYlx1NzZjY1x1NzZkM1x1NzZkNVx1NzZkOVx1NzZkYVx1NzZkY1x1NzZkZFx1NzZkZVx1NzZlMFx1NzZlMVx1NzZlMlx1NzZlM1x1NzZlNFx1NzZlNlx1NzZlN1x1NzZlOFx1NzZl''@;'; put 'put ''OVx1NzZlYVx1NzZlYlx1NzZlY1x1NzZlZFx1NzZmMFx1NzZmM1x1NzZmNVx1NzZmNlx1NzZmN1x1NzZmYVx1NzZmYlx1NzZmZFx1NzZmZlx1NzcwMFx1NzcwMlx1NzcwM1x1NzcwNVx1NzcwNlx1NzcwYVx1NzcwY1x1NzcwZVx1NzcwZlx1NzcxMFx1NzcxMVx1NzcxMlx1NzcxM1x1NzcxNFx1''@;'; put 'put ''NzcxNVx1NzcxNlx1NzcxN1x1NzcxOFx1NzcxYlx1NzcxY1x1NzcxZFx1NzcxZVx1NzcyMVx1NzcyM1x1NzcyNFx1NzcyNVx1NzcyN1x1NzcyYVx1NzcyYlx1ZmZmZFx1NzcyY1x1NzcyZVx1NzczMFx1NzczMVx1NzczMlx1NzczM1x1NzczNFx1NzczOVx1NzczYlx1NzczZFx1NzczZVx1Nzcz''@;'; put 'put ''Zlx1Nzc0Mlx1Nzc0NFx1Nzc0NVx1Nzc0Nlx1Nzc0OFx1Nzc0OVx1Nzc0YVx1Nzc0Ylx1Nzc0Y1x1Nzc0ZFx1Nzc0ZVx1Nzc0Zlx1Nzc1Mlx1Nzc1M1x1Nzc1NFx1Nzc1NVx1Nzc1Nlx1Nzc1N1x1Nzc1OFx1Nzc1OVx1Nzc1Y1x1ODU4NFx1OTZmOVx1NGZkZFx1NTgyMVx1OTk3MVx1NWI5ZFx1''@;'; put 'put ''NjJiMVx1NjJhNVx1NjZiNFx1OGM3OVx1OWM4ZFx1NzIwNlx1Njc2Zlx1Nzg5MVx1NjBiMlx1NTM1MVx1NTMxN1x1OGY4OFx1ODBjY1x1OGQxZFx1OTRhMVx1NTAwZFx1NzJjOFx1NTkwN1x1NjBlYlx1NzExOVx1ODhhYlx1NTk1NFx1ODJlZlx1NjcyY1x1N2IyOFx1NWQyOVx1N2VmN1x1NzUy''@;'; put 'put ''ZFx1NmNmNVx1OGU2Nlx1OGZmOFx1OTAzY1x1OWYzYlx1NmJkNFx1OTExOVx1N2IxNFx1NWY3Y1x1NzhhN1x1ODRkNlx1ODUzZFx1NmJkNVx1NmJkOVx1NmJkNlx1NWUwMVx1NWU4N1x1NzVmOVx1OTVlZFx1NjU1ZFx1NWYwYVx1NWZjNVx1OGY5Zlx1NThjMVx1ODFjMlx1OTA3Zlx1OTY1Ylx1''@;'; put 'put ''OTdhZFx1OGZiOVx1N2YxNlx1OGQyY1x1NjI0MVx1NGZiZlx1NTNkOFx1NTM1ZVx1OGZhOFx1OGZhOVx1OGZhYlx1OTA0ZFx1NjgwN1x1NWY2YVx1ODE5OFx1ODg2OFx1OWNkNlx1NjE4Ylx1NTIyYlx1NzYyYVx1NWY2Y1x1NjU4Y1x1NmZkMlx1NmVlOFx1NWJiZVx1NjQ0OFx1NTE3NVx1NTFi''@;'; put 'put ''MFx1NjdjNFx1NGUxOVx1NzljOVx1OTk3Y1x1NzBiM1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3N10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTc3XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNzddW0VdXT00NTMxMitFLExbNDUzMTIrRV09QlsxNzddW0VdKTtmb3IoQlsxNzhdPSJc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc3NWRcdTc3NWVcdTc3NWZcdTc3NjBcdTc3NjRcdTc3NjdcdTc3NjlcdTc3NmFcdTc3NmRcdTc3NmVcdTc3NmZcdTc3NzBcdTc3NzFcdTc3NzJcdTc3NzNcdTc3NzRcdTc3NzVcdTc3NzZcdTc3''@;'; put 'put ''NzdcdTc3NzhcdTc3N2FcdTc3N2JcdTc3N2NcdTc3ODFcdTc3ODJcdTc3ODNcdTc3ODZcdTc3ODdcdTc3ODhcdTc3ODlcdTc3OGFcdTc3OGJcdTc3OGZcdTc3OTBcdTc3OTNcdTc3OTRcdTc3OTVcdTc3OTZcdTc3OTdcdTc3OThcdTc3OTlcdTc3OWFcdTc3OWJcdTc3OWNcdTc3OWRcdTc3OWVc''@;'; put 'put ''dTc3YTFcdTc3YTNcdTc3YTRcdTc3YTZcdTc3YThcdTc3YWJcdTc3YWRcdTc3YWVcdTc3YWZcdTc3YjFcdTc3YjJcdTc3YjRcdTc3YjZcdTc3YjdcdTc3YjhcdTc3YjlcdTc3YmFcdWZmZmRcdTc3YmNcdTc3YmVcdTc3YzBcdTc3YzFcdTc3YzJcdTc3YzNcdTc3YzRcdTc3YzVcdTc3YzZcdTc3''@;'; put 'put ''YzdcdTc3YzhcdTc3YzlcdTc3Y2FcdTc3Y2JcdTc3Y2NcdTc3Y2VcdTc3Y2ZcdTc3ZDBcdTc3ZDFcdTc3ZDJcdTc3ZDNcdTc3ZDRcdTc3ZDVcdTc3ZDZcdTc3ZDhcdTc3ZDlcdTc3ZGFcdTc3ZGRcdTc3ZGVcdTc3ZGZcdTc3ZTBcdTc3ZTFcdTc3ZTRcdTc1YzVcdTVlNzZcdTczYmJcdTgzZTBc''@;'; put 'put ''dTY0YWRcdTYyZThcdTk0YjVcdTZjZTJcdTUzNWFcdTUyYzNcdTY0MGZcdTk0YzJcdTdiOTRcdTRmMmZcdTVlMWJcdTgyMzZcdTgxMTZcdTgxOGFcdTZlMjRcdTZjY2FcdTlhNzNcdTYzNTVcdTUzNWNcdTU0ZmFcdTg4NjVcdTU3ZTBcdTRlMGRcdTVlMDNcdTZiNjVcdTdjM2ZcdTkwZThcdTYw''@;'; put 'put ''MTZcdTY0ZTZcdTczMWNcdTg4YzFcdTY3NTBcdTYyNGRcdThkMjJcdTc3NmNcdThlMjlcdTkxYzdcdTVmNjlcdTgzZGNcdTg1MjFcdTk5MTBcdTUzYzJcdTg2OTVcdTZiOGJcdTYwZWRcdTYwZThcdTcwN2ZcdTgyY2RcdTgyMzFcdTRlZDNcdTZjYTdcdTg1Y2ZcdTY0Y2RcdTdjZDlcdTY5ZmRc''@;'; put 'put ''dTY2ZjlcdTgzNDlcdTUzOTVcdTdiNTZcdTRmYTdcdTUxOGNcdTZkNGJcdTVjNDJcdThlNmRcdTYzZDJcdTUzYzlcdTgzMmNcdTgzMzZcdTY3ZTVcdTc4YjRcdTY0M2RcdTViZGZcdTVjOTRcdTVkZWVcdThiZTdcdTYyYzZcdTY3ZjRcdThjN2FcdTY0MDBcdTYzYmFcdTg3NDlcdTk5OGJcdThj''@;'; put 'put ''MTdcdTdmMjBcdTk0ZjJcdTRlYTdcdTk2MTBcdTk4YTRcdTY2MGNcdTczMTZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3OF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTc4XVtFXV09NDU1NjgrRSxMWzQ1NTY4K0VdPUJbMTc4XVtFXSk7''@;'; put 'put ''Zm9yKEJbMTc5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3N2U2XHU3N2U4XHU3N2VhXHU3N2VmXHU3N2YwXHU3N2YxXHU3N2YyXHU3N2Y0XHU3N2Y1XHU3N2Y3XHU3N2Y5XHU3N2ZhXHU3N2ZiXHU3N2ZjXHU3ODAzXHU3ODA0XHU3''@;'; put 'put ''ODA1XHU3ODA2XHU3ODA3XHU3ODA4XHU3ODBhXHU3ODBiXHU3ODBlXHU3ODBmXHU3ODEwXHU3ODEzXHU3ODE1XHU3ODE5XHU3ODFiXHU3ODFlXHU3ODIwXHU3ODIxXHU3ODIyXHU3ODI0XHU3ODI4XHU3ODJhXHU3ODJiXHU3ODJlXHU3ODJmXHU3ODMxXHU3ODMyXHU3ODMzXHU3ODM1XHU3ODM2''@;'; put 'put ''XHU3ODNkXHU3ODNmXHU3ODQxXHU3ODQyXHU3ODQzXHU3ODQ0XHU3ODQ2XHU3ODQ4XHU3ODQ5XHU3ODRhXHU3ODRiXHU3ODRkXHU3ODRmXHU3ODUxXHU3ODUzXHU3ODU0XHU3ODU4XHU3ODU5XHU3ODVhXHVmZmZkXHU3ODViXHU3ODVjXHU3ODVlXHU3ODVmXHU3ODYwXHU3ODYxXHU3ODYyXHU3''@;'; put 'put ''ODYzXHU3ODY0XHU3ODY1XHU3ODY2XHU3ODY3XHU3ODY4XHU3ODY5XHU3ODZmXHU3ODcwXHU3ODcxXHU3ODcyXHU3ODczXHU3ODc0XHU3ODc1XHU3ODc2XHU3ODc4XHU3ODc5XHU3ODdhXHU3ODdiXHU3ODdkXHU3ODdlXHU3ODdmXHU3ODgwXHU3ODgxXHU3ODgyXHU3ODgzXHU1NzNhXHU1YzFk''@;'; put 'put ''XHU1ZTM4XHU5NTdmXHU1MDdmXHU4MGEwXHU1MzgyXHU2NTVlXHU3NTQ1XHU1NTMxXHU1MDIxXHU4ZDg1XHU2Mjg0XHU5NDllXHU2NzFkXHU1NjMyXHU2ZjZlXHU1ZGUyXHU1NDM1XHU3MDkyXHU4ZjY2XHU2MjZmXHU2NGE0XHU2M2EzXHU1ZjdiXHU2Zjg4XHU5MGY0XHU4MWUzXHU4ZmIwXHU1''@;'; put 'put ''YzE4XHU2NjY4XHU1ZmYxXHU2Yzg5XHU5NjQ4XHU4ZDgxXHU4ODZjXHU2NDkxXHU3OWYwXHU1N2NlXHU2YTU5XHU2MjEwXHU1NDQ4XHU0ZTU4XHU3YTBiXHU2MGU5XHU2Zjg0XHU4YmRhXHU2MjdmXHU5MDFlXHU5YThiXHU3OWU0XHU1NDAzXHU3NWY0XHU2MzAxXHU1MzE5XHU2YzYwXHU4ZmRm''@;'; put 'put ''XHU1ZjFiXHU5YTcwXHU4MDNiXHU5ZjdmXHU0Zjg4XHU1YzNhXHU4ZDY0XHU3ZmM1XHU2NWE1XHU3MGJkXHU1MTQ1XHU1MWIyXHU4NjZiXHU1ZDA3XHU1YmEwXHU2MmJkXHU5MTZjXHU3NTc0XHU4ZTBjXHU3YTIwXHU2MTAxXHU3Yjc5XHU0ZWM3XHU3ZWY4XHU3Nzg1XHU0ZTExXHU4MWVkXHU1''@;'; put 'put ''MjFkXHU1MWZhXHU2YTcxXHU1M2E4XHU4ZTg3XHU5NTA0XHU5NmNmXHU2ZWMxXHU5NjY0XHU2OTVhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTc5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzldW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE3OV1bRV1dPTQ1ODI0K0UsTFs0NTgyNCtF''@;'; put 'put ''XT1CWzE3OV1bRV0pO2ZvcihCWzE4MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Nzg4NFx1Nzg4NVx1Nzg4Nlx1Nzg4OFx1Nzg4YVx1Nzg4Ylx1Nzg4Zlx1Nzg5MFx1Nzg5Mlx1Nzg5NFx1Nzg5NVx1Nzg5Nlx1Nzg5OVx1Nzg5ZFx1''@;'; put 'put ''Nzg5ZVx1NzhhMFx1NzhhMlx1NzhhNFx1NzhhNlx1NzhhOFx1NzhhOVx1NzhhYVx1NzhhYlx1NzhhY1x1NzhhZFx1NzhhZVx1NzhhZlx1NzhiNVx1NzhiNlx1NzhiN1x1NzhiOFx1NzhiYVx1NzhiYlx1NzhiY1x1NzhiZFx1NzhiZlx1NzhjMFx1NzhjMlx1NzhjM1x1NzhjNFx1NzhjNlx1Nzhj''@;'; put 'put ''N1x1NzhjOFx1NzhjY1x1NzhjZFx1NzhjZVx1NzhjZlx1NzhkMVx1NzhkMlx1NzhkM1x1NzhkNlx1NzhkN1x1NzhkOFx1NzhkYVx1NzhkYlx1NzhkY1x1NzhkZFx1NzhkZVx1NzhkZlx1NzhlMFx1NzhlMVx1NzhlMlx1NzhlM1x1ZmZmZFx1NzhlNFx1NzhlNVx1NzhlNlx1NzhlN1x1NzhlOVx1''@;'; put 'put ''NzhlYVx1NzhlYlx1NzhlZFx1NzhlZVx1NzhlZlx1NzhmMFx1NzhmMVx1NzhmM1x1NzhmNVx1NzhmNlx1NzhmOFx1NzhmOVx1NzhmYlx1NzhmY1x1NzhmZFx1NzhmZVx1NzhmZlx1NzkwMFx1NzkwMlx1NzkwM1x1NzkwNFx1NzkwNlx1NzkwN1x1NzkwOFx1NzkwOVx1NzkwYVx1NzkwYlx1Nzkw''@;'; put 'put ''Y1x1Nzg0MFx1NTBhOFx1NzdkN1x1NjQxMFx1ODllNlx1NTkwNFx1NjNlM1x1NWRkZFx1N2E3Zlx1NjkzZFx1NGYyMFx1ODIzOVx1NTU5OFx1NGUzMlx1NzVhZVx1N2E5N1x1NWU2Mlx1NWU4YVx1OTVlZlx1NTIxYlx1NTQzOVx1NzA4YVx1NjM3Nlx1OTUyNFx1NTc4Mlx1NjYyNVx1NjkzZlx1''@;'; put 'put ''OTE4N1x1NTUwN1x1NmRmM1x1N2VhZlx1ODgyMlx1NjIzM1x1N2VmMFx1NzViNVx1ODMyOFx1NzhjMVx1OTZjY1x1OGY5ZVx1NjE0OFx1NzRmN1x1OGJjZFx1NmI2NFx1NTIzYVx1OGQ1MFx1NmIyMVx1ODA2YVx1ODQ3MVx1NTZmMVx1NTMwNlx1NGVjZVx1NGUxYlx1NTFkMVx1N2M5N1x1OTE4''@;'; put 'put ''Ylx1N2MwN1x1NGZjM1x1OGU3Zlx1N2JlMVx1N2E5Y1x1NjQ2N1x1NWQxNFx1NTBhY1x1ODEwNlx1NzYwMVx1N2NiOVx1NmRlY1x1N2ZlMFx1Njc1MVx1NWI1OFx1NWJmOFx1NzhjYlx1NjRhZVx1NjQxM1x1NjNhYVx1NjMyYlx1OTUxOVx1NjQyZFx1OGZiZVx1N2I1NFx1NzYyOVx1NjI1M1x1''@;'; put 'put ''NTkyN1x1NTQ0Nlx1NmI3OVx1NTBhM1x1NjIzNFx1NWUyNlx1NmI4Nlx1NGVlM1x1OGQzN1x1ODg4Ylx1NWY4NVx1OTAyZVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4MF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTgwXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxODBdW0VdXT00NjA4''@;'; put 'put ''MCtFLExbNDYwODArRV09QlsxODBdW0VdKTtmb3IoQlsxODFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc5MGRcdTc5MGVcdTc5MGZcdTc5MTBcdTc5MTFcdTc5MTJcdTc5MTRcdTc5MTVcdTc5MTZcdTc5MTdcdTc5MThcdTc5MTlc''@;'; put 'put ''dTc5MWFcdTc5MWJcdTc5MWNcdTc5MWRcdTc5MWZcdTc5MjBcdTc5MjFcdTc5MjJcdTc5MjNcdTc5MjVcdTc5MjZcdTc5MjdcdTc5MjhcdTc5MjlcdTc5MmFcdTc5MmJcdTc5MmNcdTc5MmRcdTc5MmVcdTc5MmZcdTc5MzBcdTc5MzFcdTc5MzJcdTc5MzNcdTc5MzVcdTc5MzZcdTc5MzdcdTc5''@;'; put 'put ''MzhcdTc5MzlcdTc5M2RcdTc5M2ZcdTc5NDJcdTc5NDNcdTc5NDRcdTc5NDVcdTc5NDdcdTc5NGFcdTc5NGJcdTc5NGNcdTc5NGRcdTc5NGVcdTc5NGZcdTc5NTBcdTc5NTFcdTc5NTJcdTc5NTRcdTc5NTVcdTc5NThcdTc5NTlcdTc5NjFcdTc5NjNcdWZmZmRcdTc5NjRcdTc5NjZcdTc5Njlc''@;'; put 'put ''dTc5NmFcdTc5NmJcdTc5NmNcdTc5NmVcdTc5NzBcdTc5NzFcdTc5NzJcdTc5NzNcdTc5NzRcdTc5NzVcdTc5NzZcdTc5NzlcdTc5N2JcdTc5N2NcdTc5N2RcdTc5N2VcdTc5N2ZcdTc5ODJcdTc5ODNcdTc5ODZcdTc5ODdcdTc5ODhcdTc5ODlcdTc5OGJcdTc5OGNcdTc5OGRcdTc5OGVcdTc5''@;'; put 'put ''OTBcdTc5OTFcdTc5OTJcdTYwMjBcdTgwM2RcdTYyYzVcdTRlMzlcdTUzNTVcdTkwZjhcdTYzYjhcdTgwYzZcdTY1ZTZcdTZjMmVcdTRmNDZcdTYwZWVcdTZkZTFcdThiZGVcdTVmMzlcdTg2Y2JcdTVmNTNcdTYzMjFcdTUxNWFcdTgzNjFcdTY4NjNcdTUyMDBcdTYzNjNcdThlNDhcdTUwMTJc''@;'; put 'put ''dTVjOWJcdTc5NzdcdTViZmNcdTUyMzBcdTdhM2JcdTYwYmNcdTkwNTNcdTc2ZDdcdTVmYjdcdTVmOTdcdTc2ODRcdThlNmNcdTcwNmZcdTc2N2JcdTdiNDlcdTc3YWFcdTUxZjNcdTkwOTNcdTU4MjRcdTRmNGVcdTZlZjRcdThmZWFcdTY1NGNcdTdiMWJcdTcyYzRcdTZkYTRcdTdmZGZcdTVh''@;'; put 'put ''ZTFcdTYyYjVcdTVlOTVcdTU3MzBcdTg0ODJcdTdiMmNcdTVlMWRcdTVmMWZcdTkwMTJcdTdmMTRcdTk4YTBcdTYzODJcdTZlYzdcdTc4OThcdTcwYjlcdTUxNzhcdTk3NWJcdTU3YWJcdTc1MzVcdTRmNDNcdTc1MzhcdTVlOTdcdTYwZTZcdTU5NjBcdTZkYzBcdTZiYmZcdTc4ODlcdTUzZmNc''@;'; put 'put ''dTk2ZDVcdTUxY2JcdTUyMDFcdTYzODlcdTU0MGFcdTk0OTNcdThjMDNcdThkY2NcdTcyMzlcdTc4OWZcdTg3NzZcdThmZWRcdThjMGRcdTUzZTBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4MV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0Jb''@;'; put 'put ''MTgxXVtFXV09NDYzMzYrRSxMWzQ2MzM2K0VdPUJbMTgxXVtFXSk7Zm9yKEJbMTgyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OTkzXHU3OTk0XHU3OTk1XHU3OTk2XHU3OTk3XHU3OTk4XHU3OTk5XHU3OTliXHU3OTljXHU3OTlk''@;'; put 'put ''XHU3OTllXHU3OTlmXHU3OWEwXHU3OWExXHU3OWEyXHU3OWEzXHU3OWE0XHU3OWE1XHU3OWE2XHU3OWE4XHU3OWE5XHU3OWFhXHU3OWFiXHU3OWFjXHU3OWFkXHU3OWFlXHU3OWFmXHU3OWIwXHU3OWIxXHU3OWIyXHU3OWI0XHU3OWI1XHU3OWI2XHU3OWI3XHU3OWI4XHU3OWJjXHU3OWJmXHU3''@;'; put 'put ''OWMyXHU3OWM0XHU3OWM1XHU3OWM3XHU3OWM4XHU3OWNhXHU3OWNjXHU3OWNlXHU3OWNmXHU3OWQwXHU3OWQzXHU3OWQ0XHU3OWQ2XHU3OWQ3XHU3OWQ5XHU3OWRhXHU3OWRiXHU3OWRjXHU3OWRkXHU3OWRlXHU3OWUwXHU3OWUxXHU3OWUyXHU3OWU1XHU3OWU4XHU3OWVhXHVmZmZkXHU3OWVj''@;'; put 'put ''XHU3OWVlXHU3OWYxXHU3OWYyXHU3OWYzXHU3OWY0XHU3OWY1XHU3OWY2XHU3OWY3XHU3OWY5XHU3OWZhXHU3OWZjXHU3OWZlXHU3OWZmXHU3YTAxXHU3YTA0XHU3YTA1XHU3YTA3XHU3YTA4XHU3YTA5XHU3YTBhXHU3YTBjXHU3YTBmXHU3YTEwXHU3YTExXHU3YTEyXHU3YTEzXHU3YTE1XHU3''@;'; put 'put ''YTE2XHU3YTE4XHU3YTE5XHU3YTFiXHU3YTFjXHU0ZTAxXHU3NmVmXHU1M2VlXHU5NDg5XHU5ODc2XHU5ZjBlXHU5NTJkXHU1YjlhXHU4YmEyXHU0ZTIyXHU0ZTFjXHU1MWFjXHU4NDYzXHU2MWMyXHU1MmE4XHU2ODBiXHU0Zjk3XHU2MDZiXHU1MWJiXHU2ZDFlXHU1MTVjXHU2Mjk2XHU2NTk3''@;'; put 'put ''XHU5NjYxXHU4YzQ2XHU5MDE3XHU3NWQ4XHU5MGZkXHU3NzYzXHU2YmQyXHU3MjhhXHU3MmVjXHU4YmZiXHU1ODM1XHU3Nzc5XHU4ZDRjXHU2NzVjXHU5NTQwXHU4MDlhXHU1ZWE2XHU2ZTIxXHU1OTkyXHU3YWVmXHU3N2VkXHU5NTNiXHU2YmI1XHU2NWFkXHU3ZjBlXHU1ODA2XHU1MTUxXHU5''@;'; put 'put ''NjFmXHU1YmY5XHU1OGE5XHU1NDI4XHU4ZTcyXHU2NTY2XHU5ODdmXHU1NmU0XHU5NDlkXHU3NmZlXHU5MDQxXHU2Mzg3XHU1NGM2XHU1OTFhXHU1OTNhXHU1NzliXHU4ZWIyXHU2NzM1XHU4ZGZhXHU4MjM1XHU1MjQxXHU2MGYwXHU1ODE1XHU4NmZlXHU1Y2U4XHU5ZTQ1XHU0ZmM0XHU5ODlk''@;'; put 'put ''XHU4YmI5XHU1YTI1XHU2MDc2XHU1Mzg0XHU2MjdjXHU5MDRmXHU5MTAyXHU5OTdmXHU2MDY5XHU4MDBjXHU1MTNmXHU4MDMzXHU1YzE0XHU5OTc1XHU2ZDMxXHU0ZThjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTgyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODJdW0VdLmNoYXJDb2Rl''@;'; put 'put ''QXQoMCkmJihtZVtCWzE4Ml1bRV1dPTQ2NTkyK0UsTFs0NjU5MitFXT1CWzE4Ml1bRV0pO2ZvcihCWzE4M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2ExZFx1N2ExZlx1N2EyMVx1N2EyMlx1N2EyNFx1N2EyNVx1N2EyNlx1N2Ey''@;'; put 'put ''N1x1N2EyOFx1N2EyOVx1N2EyYVx1N2EyYlx1N2EyY1x1N2EyZFx1N2EyZVx1N2EyZlx1N2EzMFx1N2EzMVx1N2EzMlx1N2EzNFx1N2EzNVx1N2EzNlx1N2EzOFx1N2EzYVx1N2EzZVx1N2E0MFx1N2E0MVx1N2E0Mlx1N2E0M1x1N2E0NFx1N2E0NVx1N2E0N1x1N2E0OFx1N2E0OVx1N2E0YVx1''@;'; put 'put ''N2E0Ylx1N2E0Y1x1N2E0ZFx1N2E0ZVx1N2E0Zlx1N2E1MFx1N2E1Mlx1N2E1M1x1N2E1NFx1N2E1NVx1N2E1Nlx1N2E1OFx1N2E1OVx1N2E1YVx1N2E1Ylx1N2E1Y1x1N2E1ZFx1N2E1ZVx1N2E1Zlx1N2E2MFx1N2E2MVx1N2E2Mlx1N2E2M1x1N2E2NFx1N2E2NVx1N2E2Nlx1N2E2N1x1N2E2''@;'; put 'put ''OFx1ZmZmZFx1N2E2OVx1N2E2YVx1N2E2Ylx1N2E2Y1x1N2E2ZFx1N2E2ZVx1N2E2Zlx1N2E3MVx1N2E3Mlx1N2E3M1x1N2E3NVx1N2E3Ylx1N2E3Y1x1N2E3ZFx1N2E3ZVx1N2E4Mlx1N2E4NVx1N2E4N1x1N2E4OVx1N2E4YVx1N2E4Ylx1N2E4Y1x1N2E4ZVx1N2E4Zlx1N2E5MFx1N2E5M1x1''@;'; put 'put ''N2E5NFx1N2E5OVx1N2E5YVx1N2E5Ylx1N2E5ZVx1N2FhMVx1N2FhMlx1OGQzMFx1NTNkMVx1N2Y1YVx1N2I0Zlx1NGYxMFx1NGU0Zlx1OTYwMFx1NmNkNVx1NzNkMFx1ODVlOVx1NWUwNlx1NzU2YVx1N2ZmYlx1NmEwYVx1NzdmZVx1OTQ5Mlx1N2U0MVx1NTFlMVx1NzBlNlx1NTNjZFx1OGZk''@;'; put 'put ''NFx1ODMwM1x1OGQyOVx1NzJhZlx1OTk2ZFx1NmNkYlx1NTc0YVx1ODJiM1x1NjViOVx1ODBhYVx1NjIzZlx1OTYzMlx1NTlhOFx1NGVmZlx1OGJiZlx1N2ViYVx1NjUzZVx1ODNmMlx1OTc1ZVx1NTU2MVx1OThkZVx1ODBhNVx1NTMyYVx1OGJmZFx1NTQyMFx1ODBiYVx1NWU5Zlx1NmNiOFx1''@;'; put 'put ''OGQzOVx1ODJhY1x1OTE1YVx1NTQyOVx1NmMxYlx1NTIwNlx1N2ViN1x1NTc1Zlx1NzExYVx1NmM3ZVx1N2M4OVx1NTk0Ylx1NGVmZFx1NWZmZlx1NjEyNFx1N2NhYVx1NGUzMFx1NWMwMVx1NjdhYlx1ODcwMlx1NWNmMFx1OTUwYlx1OThjZVx1NzVhZlx1NzBmZFx1OTAyMlx1NTFhZlx1N2Yx''@;'; put 'put ''ZFx1OGJiZFx1NTk0OVx1NTFlNFx1NGY1Ylx1NTQyNlx1NTkyYlx1NjU3N1x1ODBhNFx1NWI3NVx1NjI3Nlx1NjJjMlx1OGY5MFx1NWU0NVx1NmMxZlx1N2IyNlx1NGYwZlx1NGZkOFx1NjcwZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4M10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTgz''@;'; put 'put ''XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxODNdW0VdXT00Njg0OCtFLExbNDY4NDgrRV09QlsxODNdW0VdKTtmb3IoQlsxODRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhYTNcdTdhYTRcdTdhYTdcdTdhYTlcdTdhYWFcdTdh''@;'; put 'put ''YWJcdTdhYWVcdTdhYWZcdTdhYjBcdTdhYjFcdTdhYjJcdTdhYjRcdTdhYjVcdTdhYjZcdTdhYjdcdTdhYjhcdTdhYjlcdTdhYmFcdTdhYmJcdTdhYmNcdTdhYmRcdTdhYmVcdTdhYzBcdTdhYzFcdTdhYzJcdTdhYzNcdTdhYzRcdTdhYzVcdTdhYzZcdTdhYzdcdTdhYzhcdTdhYzlcdTdhY2Fc''@;'; put 'put ''dTdhY2NcdTdhY2RcdTdhY2VcdTdhY2ZcdTdhZDBcdTdhZDFcdTdhZDJcdTdhZDNcdTdhZDRcdTdhZDVcdTdhZDdcdTdhZDhcdTdhZGFcdTdhZGJcdTdhZGNcdTdhZGRcdTdhZTFcdTdhZTJcdTdhZTRcdTdhZTdcdTdhZThcdTdhZTlcdTdhZWFcdTdhZWJcdTdhZWNcdTdhZWVcdTdhZjBcdTdh''@;'; put 'put ''ZjFcdTdhZjJcdTdhZjNcdWZmZmRcdTdhZjRcdTdhZjVcdTdhZjZcdTdhZjdcdTdhZjhcdTdhZmJcdTdhZmNcdTdhZmVcdTdiMDBcdTdiMDFcdTdiMDJcdTdiMDVcdTdiMDdcdTdiMDlcdTdiMGNcdTdiMGRcdTdiMGVcdTdiMTBcdTdiMTJcdTdiMTNcdTdiMTZcdTdiMTdcdTdiMThcdTdiMWFc''@;'; put 'put ''dTdiMWNcdTdiMWRcdTdiMWZcdTdiMjFcdTdiMjJcdTdiMjNcdTdiMjdcdTdiMjlcdTdiMmRcdTZkNmVcdTZkYWFcdTc5OGZcdTg4YjFcdTVmMTdcdTc1MmJcdTYyOWFcdThmODVcdTRmZWZcdTkxZGNcdTY1YTdcdTgxMmZcdTgxNTFcdTVlOWNcdTgxNTBcdThkNzRcdTUyNmZcdTg5ODZcdThk''@;'; put 'put ''NGJcdTU5MGRcdTUwODVcdTRlZDhcdTk2MWNcdTcyMzZcdTgxNzlcdThkMWZcdTViY2NcdThiYTNcdTk2NDRcdTU5ODdcdTdmMWFcdTU0OTBcdTU2NzZcdTU2MGVcdThiZTVcdTY1MzlcdTY5ODJcdTk0OTlcdTc2ZDZcdTZlODlcdTVlNzJcdTc1MThcdTY3NDZcdTY3ZDFcdTdhZmZcdTgwOWRc''@;'; put 'put ''dThkNzZcdTYxMWZcdTc5YzZcdTY1NjJcdThkNjNcdTUxODhcdTUyMWFcdTk0YTJcdTdmMzhcdTgwOWJcdTdlYjJcdTVjOTdcdTZlMmZcdTY3NjBcdTdiZDlcdTc2OGJcdTlhZDhcdTgxOGZcdTdmOTRcdTdjZDVcdTY0MWVcdTk1NTBcdTdhM2ZcdTU0NGFcdTU0ZTVcdTZiNGNcdTY0MDFcdTYy''@;'; put 'put ''MDhcdTllM2RcdTgwZjNcdTc1OTlcdTUyNzJcdTk3NjlcdTg0NWJcdTY4M2NcdTg2ZTRcdTk2MDFcdTk2OTRcdTk0ZWNcdTRlMmFcdTU0MDRcdTdlZDlcdTY4MzlcdThkZGZcdTgwMTVcdTY2ZjRcdTVlOWFcdTdmYjlcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODRdLmxlbmd0aDsrK0Up''@;'; put 'put ''NjU1MzMhPT1CWzE4NF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTg0XVtFXV09NDcxMDQrRSxMWzQ3MTA0K0VdPUJbMTg0XVtFXSk7Zm9yKEJbMTg1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3YjJmXHU3YjMwXHU3YjMyXHU3''@;'; put 'put ''YjM0XHU3YjM1XHU3YjM2XHU3YjM3XHU3YjM5XHU3YjNiXHU3YjNkXHU3YjNmXHU3YjQwXHU3YjQxXHU3YjQyXHU3YjQzXHU3YjQ0XHU3YjQ2XHU3YjQ4XHU3YjRhXHU3YjRkXHU3YjRlXHU3YjUzXHU3YjU1XHU3YjU3XHU3YjU5XHU3YjVjXHU3YjVlXHU3YjVmXHU3YjYxXHU3YjYzXHU3YjY0''@;'; put 'put ''XHU3YjY1XHU3YjY2XHU3YjY3XHU3YjY4XHU3YjY5XHU3YjZhXHU3YjZiXHU3YjZjXHU3YjZkXHU3YjZmXHU3YjcwXHU3YjczXHU3Yjc0XHU3Yjc2XHU3Yjc4XHU3YjdhXHU3YjdjXHU3YjdkXHU3YjdmXHU3YjgxXHU3YjgyXHU3YjgzXHU3Yjg0XHU3Yjg2XHU3Yjg3XHU3Yjg4XHU3Yjg5XHU3''@;'; put 'put ''YjhhXHU3YjhiXHU3YjhjXHU3YjhlXHU3YjhmXHVmZmZkXHU3YjkxXHU3YjkyXHU3YjkzXHU3Yjk2XHU3Yjk4XHU3Yjk5XHU3YjlhXHU3YjliXHU3YjllXHU3YjlmXHU3YmEwXHU3YmEzXHU3YmE0XHU3YmE1XHU3YmFlXHU3YmFmXHU3YmIwXHU3YmIyXHU3YmIzXHU3YmI1XHU3YmI2XHU3YmI3''@;'; put 'put ''XHU3YmI5XHU3YmJhXHU3YmJiXHU3YmJjXHU3YmJkXHU3YmJlXHU3YmJmXHU3YmMwXHU3YmMyXHU3YmMzXHU3YmM0XHU1N2MyXHU4MDNmXHU2ODk3XHU1ZGU1XHU2NTNiXHU1MjlmXHU2MDZkXHU5ZjlhXHU0ZjliXHU4ZWFjXHU1MTZjXHU1YmFiXHU1ZjEzXHU1ZGU5XHU2YzVlXHU2MmYxXHU4''@;'; put 'put ''ZDIxXHU1MTcxXHU5NGE5XHU1MmZlXHU2YzlmXHU4MmRmXHU3MmQ3XHU1N2EyXHU2Nzg0XHU4ZDJkXHU1OTFmXHU4ZjljXHU4M2M3XHU1NDk1XHU3YjhkXHU0ZjMwXHU2Y2JkXHU1YjY0XHU1OWQxXHU5ZjEzXHU1M2U0XHU4NmNhXHU5YWE4XHU4YzM3XHU4MGExXHU2NTQ1XHU5ODdlXHU1NmZh''@;'; put 'put ''XHU5NmM3XHU1MjJlXHU3NGRjXHU1MjUwXHU1YmUxXHU2MzAyXHU4OTAyXHU0ZTU2XHU2MmQwXHU2MDJhXHU2OGZhXHU1MTczXHU1Yjk4XHU1MWEwXHU4OWMyXHU3YmExXHU5OTg2XHU3ZjUwXHU2MGVmXHU3MDRjXHU4ZDJmXHU1MTQ5XHU1ZTdmXHU5MDFiXHU3NDcwXHU4OWM0XHU1NzJkXHU3''@;'; put 'put ''ODQ1XHU1ZjUyXHU5ZjlmXHU5NWZhXHU4ZjY4XHU5YjNjXHU4YmUxXHU3Njc4XHU2ODQyXHU2N2RjXHU4ZGVhXHU4ZDM1XHU1MjNkXHU4ZjhhXHU2ZWRhXHU2OGNkXHU5NTA1XHU5MGVkXHU1NmZkXHU2NzljXHU4OGY5XHU4ZmM3XHU1NGM4XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTg1''@;'; put 'put ''XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODVdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE4NV1bRV1dPTQ3MzYwK0UsTFs0NzM2MCtFXT1CWzE4NV1bRV0pO2ZvcihCWzE4Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2JjNVx1''@;'; put 'put ''N2JjOFx1N2JjOVx1N2JjYVx1N2JjYlx1N2JjZFx1N2JjZVx1N2JjZlx1N2JkMFx1N2JkMlx1N2JkNFx1N2JkNVx1N2JkNlx1N2JkN1x1N2JkOFx1N2JkYlx1N2JkY1x1N2JkZVx1N2JkZlx1N2JlMFx1N2JlMlx1N2JlM1x1N2JlNFx1N2JlN1x1N2JlOFx1N2JlOVx1N2JlYlx1N2JlY1x1N2Jl''@;'; put 'put ''ZFx1N2JlZlx1N2JmMFx1N2JmMlx1N2JmM1x1N2JmNFx1N2JmNVx1N2JmNlx1N2JmOFx1N2JmOVx1N2JmYVx1N2JmYlx1N2JmZFx1N2JmZlx1N2MwMFx1N2MwMVx1N2MwMlx1N2MwM1x1N2MwNFx1N2MwNVx1N2MwNlx1N2MwOFx1N2MwOVx1N2MwYVx1N2MwZFx1N2MwZVx1N2MxMFx1N2MxMVx1''@;'; put 'put ''N2MxMlx1N2MxM1x1N2MxNFx1N2MxNVx1N2MxN1x1N2MxOFx1N2MxOVx1ZmZmZFx1N2MxYVx1N2MxYlx1N2MxY1x1N2MxZFx1N2MxZVx1N2MyMFx1N2MyMVx1N2MyMlx1N2MyM1x1N2MyNFx1N2MyNVx1N2MyOFx1N2MyOVx1N2MyYlx1N2MyY1x1N2MyZFx1N2MyZVx1N2MyZlx1N2MzMFx1N2Mz''@;'; put 'put ''MVx1N2MzMlx1N2MzM1x1N2MzNFx1N2MzNVx1N2MzNlx1N2MzN1x1N2MzOVx1N2MzYVx1N2MzYlx1N2MzY1x1N2MzZFx1N2MzZVx1N2M0Mlx1OWFiOFx1NWI2OVx1NmQ3N1x1NmMyNlx1NGVhNVx1NWJiM1x1OWE4N1x1OTE2M1x1NjFhOFx1OTBhZlx1OTdlOVx1NTQyYlx1NmRiNVx1NWJkMlx1''@;'; put 'put ''NTFmZFx1NTU4YVx1N2Y1NVx1N2ZmMFx1NjRiY1x1NjM0ZFx1NjVmMVx1NjFiZVx1NjA4ZFx1NzEwYVx1NmM1N1x1NmM0OVx1NTkyZlx1Njc2ZFx1ODIyYVx1NThkNVx1NTY4ZVx1OGM2YVx1NmJlYlx1OTBkZFx1NTk3ZFx1ODAxN1x1NTNmN1x1NmQ2OVx1NTQ3NVx1NTU5ZFx1ODM3N1x1ODNj''@;'; put 'put ''Zlx1NjgzOFx1NzliZVx1NTQ4Y1x1NGY1NVx1NTQwOFx1NzZkMlx1OGM4OVx1OTYwMlx1NmNiM1x1NmRiOFx1OGQ2Ylx1ODkxMFx1OWU2NFx1OGQzYVx1NTYzZlx1OWVkMVx1NzVkNVx1NWY4OFx1NzJlMFx1NjA2OFx1NTRmY1x1NGVhOFx1NmEyYVx1ODg2MVx1NjA1Mlx1OGY3MFx1NTRjNFx1''@;'; put 'put ''NzBkOFx1ODY3OVx1OWUzZlx1NmQyYVx1NWI4Zlx1NWYxOFx1N2VhMlx1NTU4OVx1NGZhZlx1NzMzNFx1NTQzY1x1NTM5YVx1NTAxOVx1NTQwZVx1NTQ3Y1x1NGU0ZVx1NWZmZFx1NzQ1YVx1NThmNlx1ODQ2Ylx1ODBlMVx1ODc3NFx1NzJkMFx1N2NjYVx1NmU1Nlx1ZmZmZCIuc3BsaXQoIiIp''@;'; put 'put ''LEU9MDtFIT1CWzE4Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTg2XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxODZdW0VdXT00NzYxNitFLExbNDc2MTYrRV09QlsxODZdW0VdKTtmb3IoQlsxODddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdTdjNDNcdTdjNDRcdTdjNDVcdTdjNDZcdTdjNDdcdTdjNDhcdTdjNDlcdTdjNGFcdTdjNGJcdTdjNGNcdTdjNGVcdTdjNGZcdTdjNTBcdTdjNTFcdTdjNTJcdTdjNTNcdTdjNTRcdTdjNTVcdTdjNTZcdTdjNTdcdTdjNThcdTdjNTlcdTdjNWFcdTdjNWJcdTdjNWNcdTdjNWRcdTdj''@;'; put 'put ''NWVcdTdjNWZcdTdjNjBcdTdjNjFcdTdjNjJcdTdjNjNcdTdjNjRcdTdjNjVcdTdjNjZcdTdjNjdcdTdjNjhcdTdjNjlcdTdjNmFcdTdjNmJcdTdjNmNcdTdjNmRcdTdjNmVcdTdjNmZcdTdjNzBcdTdjNzFcdTdjNzJcdTdjNzVcdTdjNzZcdTdjNzdcdTdjNzhcdTdjNzlcdTdjN2FcdTdjN2Vc''@;'; put 'put ''dTdjN2ZcdTdjODBcdTdjODFcdTdjODJcdTdjODNcdTdjODRcdTdjODVcdTdjODZcdTdjODdcdWZmZmRcdTdjODhcdTdjOGFcdTdjOGJcdTdjOGNcdTdjOGRcdTdjOGVcdTdjOGZcdTdjOTBcdTdjOTNcdTdjOTRcdTdjOTZcdTdjOTlcdTdjOWFcdTdjOWJcdTdjYTBcdTdjYTFcdTdjYTNcdTdj''@;'; put 'put ''YTZcdTdjYTdcdTdjYThcdTdjYTlcdTdjYWJcdTdjYWNcdTdjYWRcdTdjYWZcdTdjYjBcdTdjYjRcdTdjYjVcdTdjYjZcdTdjYjdcdTdjYjhcdTdjYmFcdTdjYmJcdTVmMjdcdTg2NGVcdTU1MmNcdTYyYTRcdTRlOTJcdTZjYWFcdTYyMzdcdTgyYjFcdTU0ZDdcdTUzNGVcdTczM2VcdTZlZDFc''@;'; put 'put ''dTc1M2JcdTUyMTJcdTUzMTZcdThiZGRcdTY5ZDBcdTVmOGFcdTYwMDBcdTZkZWVcdTU3NGZcdTZiMjJcdTczYWZcdTY4NTNcdThmZDhcdTdmMTNcdTYzNjJcdTYwYTNcdTU1MjRcdTc1ZWFcdThjNjJcdTcxMTVcdTZkYTNcdTViYTZcdTVlN2JcdTgzNTJcdTYxNGNcdTllYzRcdTc4ZmFcdTg3''@;'; put 'put ''NTdcdTdjMjdcdTc2ODdcdTUxZjBcdTYwZjZcdTcxNGNcdTY2NDNcdTVlNGNcdTYwNGRcdThjMGVcdTcwNzBcdTYzMjVcdThmODlcdTVmYmRcdTYwNjJcdTg2ZDRcdTU2ZGVcdTZiYzFcdTYwOTRcdTYxNjdcdTUzNDlcdTYwZTBcdTY2NjZcdThkM2ZcdTc5ZmRcdTRmMWFcdTcwZTlcdTZjNDdc''@;'; put 'put ''dThiYjNcdThiZjJcdTdlZDhcdTgzNjRcdTY2MGZcdTVhNWFcdTliNDJcdTZkNTFcdTZkZjdcdThjNDFcdTZkM2JcdTRmMTlcdTcwNmJcdTgzYjdcdTYyMTZcdTYwZDFcdTk3MGRcdThkMjdcdTc5NzhcdTUxZmJcdTU3M2VcdTU3ZmFcdTY3M2FcdTc1NzhcdTdhM2RcdTc5ZWZcdTdiOTVcdWZm''@;'; put 'put ''ZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4N11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTg3XVtFXV09NDc4NzIrRSxMWzQ3ODcyK0VdPUJbMTg3XVtFXSk7Zm9yKEJbMTg4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHU3Y2JmXHU3Y2MwXHU3Y2MyXHU3Y2MzXHU3Y2M0XHU3Y2M2XHU3Y2M5XHU3Y2NiXHU3Y2NlXHU3Y2NmXHU3Y2QwXHU3Y2QxXHU3Y2QyXHU3Y2QzXHU3Y2Q0XHU3Y2Q4XHU3Y2RhXHU3Y2RiXHU3Y2RkXHU3Y2RlXHU3Y2UxXHU3Y2UyXHU3Y2UzXHU3Y2U0XHU3''@;'; put 'put ''Y2U1XHU3Y2U2XHU3Y2U3XHU3Y2U5XHU3Y2VhXHU3Y2ViXHU3Y2VjXHU3Y2VkXHU3Y2VlXHU3Y2YwXHU3Y2YxXHU3Y2YyXHU3Y2YzXHU3Y2Y0XHU3Y2Y1XHU3Y2Y2XHU3Y2Y3XHU3Y2Y5XHU3Y2ZhXHU3Y2ZjXHU3Y2ZkXHU3Y2ZlXHU3Y2ZmXHU3ZDAwXHU3ZDAxXHU3ZDAyXHU3ZDAzXHU3ZDA0''@;'; put 'put ''XHU3ZDA1XHU3ZDA2XHU3ZDA3XHU3ZDA4XHU3ZDA5XHU3ZDBiXHU3ZDBjXHU3ZDBkXHU3ZDBlXHU3ZDBmXHU3ZDEwXHVmZmZkXHU3ZDExXHU3ZDEyXHU3ZDEzXHU3ZDE0XHU3ZDE1XHU3ZDE2XHU3ZDE3XHU3ZDE4XHU3ZDE5XHU3ZDFhXHU3ZDFiXHU3ZDFjXHU3ZDFkXHU3ZDFlXHU3ZDFmXHU3''@;'; put 'put ''ZDIxXHU3ZDIzXHU3ZDI0XHU3ZDI1XHU3ZDI2XHU3ZDI4XHU3ZDI5XHU3ZDJhXHU3ZDJjXHU3ZDJkXHU3ZDJlXHU3ZDMwXHU3ZDMxXHU3ZDMyXHU3ZDMzXHU3ZDM0XHU3ZDM1XHU3ZDM2XHU4MDhjXHU5OTY1XHU4ZmY5XHU2ZmMwXHU4YmE1XHU5ZTIxXHU1OWVjXHU3ZWU5XHU3ZjA5XHU1NDA5''@;'; put 'put ''XHU2NzgxXHU2OGQ4XHU4ZjkxXHU3YzRkXHU5NmM2XHU1M2NhXHU2MDI1XHU3NWJlXHU2YzcyXHU1MzczXHU1YWM5XHU3ZWE3XHU2MzI0XHU1MWUwXHU4MTBhXHU1ZGYxXHU4NGRmXHU2MjgwXHU1MTgwXHU1YjYzXHU0ZjBlXHU3OTZkXHU1MjQyXHU2MGI4XHU2ZDRlXHU1YmM0XHU1YmMyXHU4''@;'; put 'put ''YmExXHU4YmIwXHU2NWUyXHU1ZmNjXHU5NjQ1XHU1OTkzXHU3ZWU3XHU3ZWFhXHU1NjA5XHU2N2I3XHU1OTM5XHU0ZjczXHU1YmI2XHU1MmEwXHU4MzVhXHU5ODhhXHU4ZDNlXHU3NTMyXHU5NGJlXHU1MDQ3XHU3YTNjXHU0ZWY3XHU2N2I2XHU5YTdlXHU1YWMxXHU2YjdjXHU3NmQxXHU1NzVh''@;'; put 'put ''XHU1YzE2XHU3YjNhXHU5NWY0XHU3MTRlXHU1MTdjXHU4MGE5XHU4MjcwXHU1OTc4XHU3ZjA0XHU4MzI3XHU2OGMwXHU2N2VjXHU3OGIxXHU3ODc3XHU2MmUzXHU2MzYxXHU3YjgwXHU0ZmVkXHU1MjZhXHU1MWNmXHU4MzUwXHU2OWRiXHU5Mjc0XHU4ZGY1XHU4ZDMxXHU4OWMxXHU5NTJlXHU3''@;'; put 'put ''YmFkXHU0ZWY2XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTg4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODhdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE4OF1bRV1dPTQ4MTI4K0UsTFs0ODEyOCtFXT1CWzE4OF1bRV0pO2ZvcihCWzE4OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2QzN1x1N2QzOFx1N2QzOVx1N2QzYVx1N2QzYlx1N2QzY1x1N2QzZFx1N2QzZVx1N2QzZlx1N2Q0MFx1N2Q0MVx1N2Q0Mlx1N2Q0M1x1N2Q0NFx1N2Q0NVx1N2Q0Nlx1N2Q0N1x1N2Q0OFx1N2Q0OVx1N2Q0YVx1N2Q0Ylx1N2Q0Y1x1''@;'; put 'put ''N2Q0ZFx1N2Q0ZVx1N2Q0Zlx1N2Q1MFx1N2Q1MVx1N2Q1Mlx1N2Q1M1x1N2Q1NFx1N2Q1NVx1N2Q1Nlx1N2Q1N1x1N2Q1OFx1N2Q1OVx1N2Q1YVx1N2Q1Ylx1N2Q1Y1x1N2Q1ZFx1N2Q1ZVx1N2Q1Zlx1N2Q2MFx1N2Q2MVx1N2Q2Mlx1N2Q2M1x1N2Q2NFx1N2Q2NVx1N2Q2Nlx1N2Q2N1x1N2Q2''@;'; put 'put ''OFx1N2Q2OVx1N2Q2YVx1N2Q2Ylx1N2Q2Y1x1N2Q2ZFx1N2Q2Zlx1N2Q3MFx1N2Q3MVx1N2Q3Mlx1N2Q3M1x1N2Q3NFx1N2Q3NVx1N2Q3Nlx1ZmZmZFx1N2Q3OFx1N2Q3OVx1N2Q3YVx1N2Q3Ylx1N2Q3Y1x1N2Q3ZFx1N2Q3ZVx1N2Q3Zlx1N2Q4MFx1N2Q4MVx1N2Q4Mlx1N2Q4M1x1N2Q4NFx1''@;'; put 'put ''N2Q4NVx1N2Q4Nlx1N2Q4N1x1N2Q4OFx1N2Q4OVx1N2Q4YVx1N2Q4Ylx1N2Q4Y1x1N2Q4ZFx1N2Q4ZVx1N2Q4Zlx1N2Q5MFx1N2Q5MVx1N2Q5Mlx1N2Q5M1x1N2Q5NFx1N2Q5NVx1N2Q5Nlx1N2Q5N1x1N2Q5OFx1NTA2NVx1ODIzMFx1NTI1MVx1OTk2Zlx1NmUxMFx1NmU4NVx1NmRhN1x1NWVm''@;'; put 'put ''YVx1NTBmNVx1NTlkY1x1NWMwNlx1NmQ0Nlx1NmM1Zlx1NzU4Nlx1ODQ4Ylx1Njg2OFx1NTk1Nlx1OGJiMlx1NTMyMFx1OTE3MVx1OTY0ZFx1ODU0OVx1NjkxMlx1NzkwMVx1NzEyNlx1ODBmNlx1NGVhNFx1OTBjYVx1NmQ0N1x1OWE4NFx1NWEwN1x1NTZiY1x1NjQwNVx1OTRmMFx1NzdlYlx1''@;'; put 'put ''NGZhNVx1ODExYVx1NzJlMVx1ODlkMlx1OTk3YVx1N2YzNFx1N2VkZVx1NTI3Zlx1NjU1OVx1OTE3NVx1OGY3Zlx1OGY4M1x1NTNlYlx1N2E5Nlx1NjNlZFx1NjNhNVx1NzY4Nlx1NzlmOFx1ODg1N1x1OTYzNlx1NjIyYVx1NTJhYlx1ODI4Mlx1Njg1NFx1Njc3MFx1NjM3N1x1Nzc2Ylx1N2Fl''@;'; put 'put ''ZFx1NmQwMVx1N2VkM1x1ODllM1x1NTlkMFx1NjIxMlx1ODVjOVx1ODJhNVx1NzU0Y1x1NTAxZlx1NGVjYlx1NzVhNVx1OGJlYlx1NWM0YVx1NWRmZVx1N2I0Ylx1NjVhNFx1OTFkMVx1NGVjYVx1NmQyNVx1ODk1Zlx1N2QyN1x1OTUyNlx1NGVjNVx1OGMyOFx1OGZkYlx1OTc3M1x1NjY0Ylx1''@;'; put 'put ''Nzk4MVx1OGZkMVx1NzBlY1x1NmQ3OFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4OV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTg5XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxODldW0VdXT00ODM4NCtFLExbNDgzODQrRV09QlsxODldW0VdKTtmb3IoQlsxOTBdPSJcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdkOTlcdTdkOWFcdTdkOWJcdTdkOWNcdTdkOWRcdTdkOWVcdTdkOWZcdTdkYTBcdTdkYTFcdTdkYTJcdTdkYTNcdTdkYTRcdTdkYTVcdTdkYTdcdTdkYThcdTdkYTlcdTdkYWFcdTdkYWJcdTdkYWNcdTdkYWRc''@;'; put 'put ''dTdkYWZcdTdkYjBcdTdkYjFcdTdkYjJcdTdkYjNcdTdkYjRcdTdkYjVcdTdkYjZcdTdkYjdcdTdkYjhcdTdkYjlcdTdkYmFcdTdkYmJcdTdkYmNcdTdkYmRcdTdkYmVcdTdkYmZcdTdkYzBcdTdkYzFcdTdkYzJcdTdkYzNcdTdkYzRcdTdkYzVcdTdkYzZcdTdkYzdcdTdkYzhcdTdkYzlcdTdk''@;'; put 'put ''Y2FcdTdkY2JcdTdkY2NcdTdkY2RcdTdkY2VcdTdkY2ZcdTdkZDBcdTdkZDFcdTdkZDJcdTdkZDNcdTdkZDRcdTdkZDVcdTdkZDZcdTdkZDdcdTdkZDhcdTdkZDlcdWZmZmRcdTdkZGFcdTdkZGJcdTdkZGNcdTdkZGRcdTdkZGVcdTdkZGZcdTdkZTBcdTdkZTFcdTdkZTJcdTdkZTNcdTdkZTRc''@;'; put 'put ''dTdkZTVcdTdkZTZcdTdkZTdcdTdkZThcdTdkZTlcdTdkZWFcdTdkZWJcdTdkZWNcdTdkZWRcdTdkZWVcdTdkZWZcdTdkZjBcdTdkZjFcdTdkZjJcdTdkZjNcdTdkZjRcdTdkZjVcdTdkZjZcdTdkZjdcdTdkZjhcdTdkZjlcdTdkZmFcdTVjM2RcdTUyYjJcdTgzNDZcdTUxNjJcdTgzMGVcdTc3''@;'; put 'put ''NWJcdTY2NzZcdTljYjhcdTRlYWNcdTYwY2FcdTdjYmVcdTdjYjNcdTdlY2ZcdTRlOTVcdThiNjZcdTY2NmZcdTk4ODhcdTk3NTlcdTU4ODNcdTY1NmNcdTk1NWNcdTVmODRcdTc1YzlcdTk3NTZcdTdhZGZcdTdhZGVcdTUxYzBcdTcwYWZcdTdhOThcdTYzZWFcdTdhNzZcdTdlYTBcdTczOTZc''@;'; put 'put ''dTk3ZWRcdTRlNDVcdTcwNzhcdTRlNWRcdTkxNTJcdTUzYTlcdTY1NTFcdTY1ZTdcdTgxZmNcdTgyMDVcdTU0OGVcdTVjMzFcdTc1OWFcdTk3YTBcdTYyZDhcdTcyZDlcdTc1YmRcdTVjNDVcdTlhNzlcdTgzY2FcdTVjNDBcdTU0ODBcdTc3ZTlcdTRlM2VcdTZjYWVcdTgwNWFcdTYyZDJcdTYz''@;'; put 'put ''NmVcdTVkZThcdTUxNzdcdThkZGRcdThlMWVcdTk1MmZcdTRmZjFcdTUzZTVcdTYwZTdcdTcwYWNcdTUyNjdcdTYzNTBcdTllNDNcdTVhMWZcdTUwMjZcdTc3MzdcdTUzNzdcdTdlZTJcdTY0ODVcdTY1MmJcdTYyODlcdTYzOThcdTUwMTRcdTcyMzVcdTg5YzlcdTUxYjNcdThiYzBcdTdlZGRc''@;'; put 'put ''dTU3NDdcdTgzY2NcdTk0YTdcdTUxOWJcdTU0MWJcdTVjZmJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5MF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTkwXVtFXV09NDg2NDArRSxMWzQ4NjQwK0VdPUJbMTkwXVtFXSk7Zm9yKEJbMTkx''@;'; put 'put ''XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZGZiXHU3ZGZjXHU3ZGZkXHU3ZGZlXHU3ZGZmXHU3ZTAwXHU3ZTAxXHU3ZTAyXHU3ZTAzXHU3ZTA0XHU3ZTA1XHU3ZTA2XHU3ZTA3XHU3ZTA4XHU3ZTA5XHU3ZTBhXHU3ZTBiXHU3ZTBj''@;'; put 'put ''XHU3ZTBkXHU3ZTBlXHU3ZTBmXHU3ZTEwXHU3ZTExXHU3ZTEyXHU3ZTEzXHU3ZTE0XHU3ZTE1XHU3ZTE2XHU3ZTE3XHU3ZTE4XHU3ZTE5XHU3ZTFhXHU3ZTFiXHU3ZTFjXHU3ZTFkXHU3ZTFlXHU3ZTFmXHU3ZTIwXHU3ZTIxXHU3ZTIyXHU3ZTIzXHU3ZTI0XHU3ZTI1XHU3ZTI2XHU3ZTI3XHU3''@;'; put 'put ''ZTI4XHU3ZTI5XHU3ZTJhXHU3ZTJiXHU3ZTJjXHU3ZTJkXHU3ZTJlXHU3ZTJmXHU3ZTMwXHU3ZTMxXHU3ZTMyXHU3ZTMzXHU3ZTM0XHU3ZTM1XHU3ZTM2XHU3ZTM3XHU3ZTM4XHU3ZTM5XHVmZmZkXHU3ZTNhXHU3ZTNjXHU3ZTNkXHU3ZTNlXHU3ZTNmXHU3ZTQwXHU3ZTQyXHU3ZTQzXHU3ZTQ0''@;'; put 'put ''XHU3ZTQ1XHU3ZTQ2XHU3ZTQ4XHU3ZTQ5XHU3ZTRhXHU3ZTRiXHU3ZTRjXHU3ZTRkXHU3ZTRlXHU3ZTRmXHU3ZTUwXHU3ZTUxXHU3ZTUyXHU3ZTUzXHU3ZTU0XHU3ZTU1XHU3ZTU2XHU3ZTU3XHU3ZTU4XHU3ZTU5XHU3ZTVhXHU3ZTViXHU3ZTVjXHU3ZTVkXHU0ZmNhXHU3YWUzXHU2ZDVhXHU5''@;'; put 'put ''MGUxXHU5YThmXHU1NTgwXHU1NDk2XHU1MzYxXHU1NGFmXHU1ZjAwXHU2M2U5XHU2OTc3XHU1MWVmXHU2MTY4XHU1MjBhXHU1ODJhXHU1MmQ4XHU1NzRlXHU3ODBkXHU3NzBiXHU1ZWI3XHU2MTc3XHU3Y2UwXHU2MjViXHU2Mjk3XHU0ZWEyXHU3MDk1XHU4MDAzXHU2MmY3XHU3MGU0XHU5NzYw''@;'; put 'put ''XHU1Nzc3XHU4MmRiXHU2N2VmXHU2OGY1XHU3OGQ1XHU5ODk3XHU3OWQxXHU1OGYzXHU1NGIzXHU1M2VmXHU2ZTM0XHU1MTRiXHU1MjNiXHU1YmEyXHU4YmZlXHU4MGFmXHU1NTQzXHU1N2E2XHU2MDczXHU1NzUxXHU1NDJkXHU3YTdhXHU2MDUwXHU1YjU0XHU2M2E3XHU2MmEwXHU1M2UzXHU2''@;'; put 'put ''MjYzXHU1YmM3XHU2N2FmXHU1NGVkXHU3YTlmXHU4MmU2XHU5MTc3XHU1ZTkzXHU4OGU0XHU1OTM4XHU1N2FlXHU2MzBlXHU4ZGU4XHU4MGVmXHU1NzU3XHU3Yjc3XHU0ZmE5XHU1ZmViXHU1YmJkXHU2YjNlXHU1MzIxXHU3YjUwXHU3MmMyXHU2ODQ2XHU3N2ZmXHU3NzM2XHU2NWY3XHU1MWI1''@;'; put 'put ''XHU0ZThmXHU3NmQ0XHU1Y2JmXHU3YWE1XHU4NDc1XHU1OTRlXHU5YjQxXHU1MDgwXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTkxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTFdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE5MV1bRV1dPTQ4ODk2K0UsTFs0ODg5NitFXT1CWzE5MV1b''@;'; put 'put ''RV0pO2ZvcihCWzE5Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2U1ZVx1N2U1Zlx1N2U2MFx1N2U2MVx1N2U2Mlx1N2U2M1x1N2U2NFx1N2U2NVx1N2U2Nlx1N2U2N1x1N2U2OFx1N2U2OVx1N2U2YVx1N2U2Ylx1N2U2Y1x1N2U2''@;'; put 'put ''ZFx1N2U2ZVx1N2U2Zlx1N2U3MFx1N2U3MVx1N2U3Mlx1N2U3M1x1N2U3NFx1N2U3NVx1N2U3Nlx1N2U3N1x1N2U3OFx1N2U3OVx1N2U3YVx1N2U3Ylx1N2U3Y1x1N2U3ZFx1N2U3ZVx1N2U3Zlx1N2U4MFx1N2U4MVx1N2U4M1x1N2U4NFx1N2U4NVx1N2U4Nlx1N2U4N1x1N2U4OFx1N2U4OVx1''@;'; put 'put ''N2U4YVx1N2U4Ylx1N2U4Y1x1N2U4ZFx1N2U4ZVx1N2U4Zlx1N2U5MFx1N2U5MVx1N2U5Mlx1N2U5M1x1N2U5NFx1N2U5NVx1N2U5Nlx1N2U5N1x1N2U5OFx1N2U5OVx1N2U5YVx1N2U5Y1x1N2U5ZFx1N2U5ZVx1ZmZmZFx1N2VhZVx1N2ViNFx1N2ViYlx1N2ViY1x1N2VkNlx1N2VlNFx1N2Vl''@;'; put 'put ''Y1x1N2VmOVx1N2YwYVx1N2YxMFx1N2YxZVx1N2YzN1x1N2YzOVx1N2YzYlx1N2YzY1x1N2YzZFx1N2YzZVx1N2YzZlx1N2Y0MFx1N2Y0MVx1N2Y0M1x1N2Y0Nlx1N2Y0N1x1N2Y0OFx1N2Y0OVx1N2Y0YVx1N2Y0Ylx1N2Y0Y1x1N2Y0ZFx1N2Y0ZVx1N2Y0Zlx1N2Y1Mlx1N2Y1M1x1OTk4OFx1''@;'; put 'put ''NjEyN1x1NmU4M1x1NTc2NFx1NjYwNlx1NjM0Nlx1NTZmMFx1NjJlY1x1NjI2OVx1NWVkM1x1OTYxNFx1NTc4M1x1NjJjOVx1NTU4N1x1ODcyMVx1ODE0YVx1OGZhM1x1NTU2Nlx1ODNiMVx1Njc2NVx1OGQ1Nlx1ODRkZFx1NWE2YVx1NjgwZlx1NjJlNlx1N2JlZVx1OTYxMVx1NTE3MFx1NmY5''@;'; put 'put ''Y1x1OGMzMFx1NjNmZFx1ODljOFx1NjFkMlx1N2YwNlx1NzBjMlx1NmVlNVx1NzQwNVx1Njk5NFx1NzJmY1x1NWVjYVx1OTBjZVx1NjcxN1x1NmQ2YVx1NjM1ZVx1NTJiM1x1NzI2Mlx1ODAwMVx1NGY2Y1x1NTllNVx1OTE2YVx1NzBkOVx1NmQ5ZFx1NTJkMlx1NGU1MFx1OTZmN1x1OTU2ZFx1''@;'; put 'put ''ODU3ZVx1NzhjYVx1N2QyZlx1NTEyMVx1NTc5Mlx1NjRjMlx1ODA4Ylx1N2M3Ylx1NmNlYVx1NjhmMVx1Njk1ZVx1NTFiN1x1NTM5OFx1NjhhOFx1NzI4MVx1OWVjZVx1N2JmMVx1NzJmOFx1NzliYlx1NmYxM1x1NzQwNlx1Njc0ZVx1OTFjY1x1OWNhNFx1NzkzY1x1ODM4OVx1ODM1NFx1NTQw''@;'; put 'put ''Zlx1NjgxN1x1NGUzZFx1NTM4OVx1NTJiMVx1NzgzZVx1NTM4Nlx1NTIyOVx1NTA4OFx1NGY4Ylx1NGZkMFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTkyXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxOTJdW0VdXT00OTE1MitFLExbNDkx''@;'; put 'put ''NTIrRV09QlsxOTJdW0VdKTtmb3IoQlsxOTNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdmNTZcdTdmNTlcdTdmNWJcdTdmNWNcdTdmNWRcdTdmNWVcdTdmNjBcdTdmNjNcdTdmNjRcdTdmNjVcdTdmNjZcdTdmNjdcdTdmNmJcdTdm''@;'; put 'put ''NmNcdTdmNmRcdTdmNmZcdTdmNzBcdTdmNzNcdTdmNzVcdTdmNzZcdTdmNzdcdTdmNzhcdTdmN2FcdTdmN2JcdTdmN2NcdTdmN2RcdTdmN2ZcdTdmODBcdTdmODJcdTdmODNcdTdmODRcdTdmODVcdTdmODZcdTdmODdcdTdmODhcdTdmODlcdTdmOGJcdTdmOGRcdTdmOGZcdTdmOTBcdTdmOTFc''@;'; put 'put ''dTdmOTJcdTdmOTNcdTdmOTVcdTdmOTZcdTdmOTdcdTdmOThcdTdmOTlcdTdmOWJcdTdmOWNcdTdmYTBcdTdmYTJcdTdmYTNcdTdmYTVcdTdmYTZcdTdmYThcdTdmYTlcdTdmYWFcdTdmYWJcdTdmYWNcdTdmYWRcdTdmYWVcdTdmYjFcdWZmZmRcdTdmYjNcdTdmYjRcdTdmYjVcdTdmYjZcdTdm''@;'; put 'put ''YjdcdTdmYmFcdTdmYmJcdTdmYmVcdTdmYzBcdTdmYzJcdTdmYzNcdTdmYzRcdTdmYzZcdTdmYzdcdTdmYzhcdTdmYzlcdTdmY2JcdTdmY2RcdTdmY2ZcdTdmZDBcdTdmZDFcdTdmZDJcdTdmZDNcdTdmZDZcdTdmZDdcdTdmZDlcdTdmZGFcdTdmZGJcdTdmZGNcdTdmZGRcdTdmZGVcdTdmZTJc''@;'; put 'put ''dTdmZTNcdTc1ZTJcdTdhY2JcdTdjOTJcdTZjYTVcdTk2YjZcdTUyOWJcdTc0ODNcdTU0ZTlcdTRmZTlcdTgwNTRcdTgzYjJcdThmZGVcdTk1NzBcdTVlYzlcdTYwMWNcdTZkOWZcdTVlMThcdTY1NWJcdTgxMzhcdTk0ZmVcdTYwNGJcdTcwYmNcdTdlYzNcdTdjYWVcdTUxYzlcdTY4ODFcdTdj''@;'; put 'put ''YjFcdTgyNmZcdTRlMjRcdThmODZcdTkxY2ZcdTY2N2VcdTRlYWVcdThjMDVcdTY0YTlcdTgwNGFcdTUwZGFcdTc1OTdcdTcxY2VcdTViZTVcdThmYmRcdTZmNjZcdTRlODZcdTY0ODJcdTk1NjNcdTVlZDZcdTY1OTlcdTUyMTdcdTg4YzJcdTcwYzhcdTUyYTNcdTczMGVcdTc0MzNcdTY3OTdc''@;'; put 'put ''dTc4ZjdcdTk3MTZcdTRlMzRcdTkwYmJcdTljZGVcdTZkY2JcdTUxZGJcdThkNDFcdTU0MWRcdTYyY2VcdTczYjJcdTgzZjFcdTk2ZjZcdTlmODRcdTk0YzNcdTRmMzZcdTdmOWFcdTUxY2NcdTcwNzVcdTk2NzVcdTVjYWRcdTk4ODZcdTUzZTZcdTRlZTRcdTZlOWNcdTc0MDlcdTY5YjRcdTc4''@;'; put 'put ''NmJcdTk5OGZcdTc1NTlcdTUyMThcdTc2MjRcdTZkNDFcdTY3ZjNcdTUxNmRcdTlmOTlcdTgwNGJcdTU0OTlcdTdiM2NcdTdhYmZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5M11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTkzXVtFXV09''@;'; put 'put ''NDk0MDgrRSxMWzQ5NDA4K0VdPUJbMTkzXVtFXSk7Zm9yKEJbMTk0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZmU0XHU3ZmU3XHU3ZmU4XHU3ZmVhXHU3ZmViXHU3ZmVjXHU3ZmVkXHU3ZmVmXHU3ZmYyXHU3ZmY0XHU3ZmY1XHU3''@;'; put 'put ''ZmY2XHU3ZmY3XHU3ZmY4XHU3ZmY5XHU3ZmZhXHU3ZmZkXHU3ZmZlXHU3ZmZmXHU4MDAyXHU4MDA3XHU4MDA4XHU4MDA5XHU4MDBhXHU4MDBlXHU4MDBmXHU4MDExXHU4MDEzXHU4MDFhXHU4MDFiXHU4MDFkXHU4MDFlXHU4MDFmXHU4MDIxXHU4MDIzXHU4MDI0XHU4MDJiXHU4MDJjXHU4MDJk''@;'; put 'put ''XHU4MDJlXHU4MDJmXHU4MDMwXHU4MDMyXHU4MDM0XHU4MDM5XHU4MDNhXHU4MDNjXHU4MDNlXHU4MDQwXHU4MDQxXHU4MDQ0XHU4MDQ1XHU4MDQ3XHU4MDQ4XHU4MDQ5XHU4MDRlXHU4MDRmXHU4MDUwXHU4MDUxXHU4MDUzXHU4MDU1XHU4MDU2XHU4MDU3XHVmZmZkXHU4MDU5XHU4MDViXHU4''@;'; put 'put ''MDVjXHU4MDVkXHU4MDVlXHU4MDVmXHU4MDYwXHU4MDYxXHU4MDYyXHU4MDYzXHU4MDY0XHU4MDY1XHU4MDY2XHU4MDY3XHU4MDY4XHU4MDZiXHU4MDZjXHU4MDZkXHU4MDZlXHU4MDZmXHU4MDcwXHU4MDcyXHU4MDczXHU4MDc0XHU4MDc1XHU4MDc2XHU4MDc3XHU4MDc4XHU4MDc5XHU4MDdh''@;'; put 'put ''XHU4MDdiXHU4MDdjXHU4MDdkXHU5Njg2XHU1Nzg0XHU2MmUyXHU5NjQ3XHU2OTdjXHU1YTA0XHU2NDAyXHU3YmQzXHU2ZjBmXHU5NjRiXHU4MmE2XHU1MzYyXHU5ODg1XHU1ZTkwXHU3MDg5XHU2M2IzXHU1MzY0XHU4NjRmXHU5YzgxXHU5ZTkzXHU3ODhjXHU5NzMyXHU4ZGVmXHU4ZDQyXHU5''@;'; put 'put ''ZTdmXHU2ZjVlXHU3OTg0XHU1ZjU1XHU5NjQ2XHU2MjJlXHU5YTc0XHU1NDE1XHU5NGRkXHU0ZmEzXHU2NWM1XHU1YzY1XHU1YzYxXHU3ZjE1XHU4NjUxXHU2YzJmXHU1ZjhiXHU3Mzg3XHU2ZWU0XHU3ZWZmXHU1Y2U2XHU2MzFiXHU1YjZhXHU2ZWU2XHU1Mzc1XHU0ZTcxXHU2M2EwXHU3NTY1''@;'; put 'put ''XHU2MmExXHU4ZjZlXHU0ZjI2XHU0ZWQxXHU2Y2E2XHU3ZWI2XHU4YmJhXHU4NDFkXHU4N2JhXHU3ZjU3XHU5MDNiXHU5NTIzXHU3YmE5XHU5YWExXHU4OGY4XHU4NDNkXHU2ZDFiXHU5YTg2XHU3ZWRjXHU1OTg4XHU5ZWJiXHU3MzliXHU3ODAxXHU4NjgyXHU5YTZjXHU5YTgyXHU1NjFiXHU1''@;'; put 'put ''NDE3XHU1N2NiXHU0ZTcwXHU5ZWE2XHU1MzU2XHU4ZmM4XHU4MTA5XHU3NzkyXHU5OTkyXHU4NmVlXHU2ZWUxXHU4NTEzXHU2NmZjXHU2MTYyXHU2ZjJiXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTk0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTRdW0VdLmNoYXJDb2RlQXQoMCkmJiht''@;'; put 'put ''ZVtCWzE5NF1bRV1dPTQ5NjY0K0UsTFs0OTY2NCtFXT1CWzE5NF1bRV0pO2ZvcihCWzE5NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODA3ZVx1ODA4MVx1ODA4Mlx1ODA4NVx1ODA4OFx1ODA4YVx1ODA4ZFx1ODA4ZVx1ODA4Zlx1''@;'; put 'put ''ODA5MFx1ODA5MVx1ODA5Mlx1ODA5NFx1ODA5NVx1ODA5N1x1ODA5OVx1ODA5ZVx1ODBhM1x1ODBhNlx1ODBhN1x1ODBhOFx1ODBhY1x1ODBiMFx1ODBiM1x1ODBiNVx1ODBiNlx1ODBiOFx1ODBiOVx1ODBiYlx1ODBjNVx1ODBjN1x1ODBjOFx1ODBjOVx1ODBjYVx1ODBjYlx1ODBjZlx1ODBk''@;'; put 'put ''MFx1ODBkMVx1ODBkMlx1ODBkM1x1ODBkNFx1ODBkNVx1ODBkOFx1ODBkZlx1ODBlMFx1ODBlMlx1ODBlM1x1ODBlNlx1ODBlZVx1ODBmNVx1ODBmN1x1ODBmOVx1ODBmYlx1ODBmZVx1ODBmZlx1ODEwMFx1ODEwMVx1ODEwM1x1ODEwNFx1ODEwNVx1ODEwN1x1ODEwOFx1ODEwYlx1ZmZmZFx1''@;'; put 'put ''ODEwY1x1ODExNVx1ODExN1x1ODExOVx1ODExYlx1ODExY1x1ODExZFx1ODExZlx1ODEyMFx1ODEyMVx1ODEyMlx1ODEyM1x1ODEyNFx1ODEyNVx1ODEyNlx1ODEyN1x1ODEyOFx1ODEyOVx1ODEyYVx1ODEyYlx1ODEyZFx1ODEyZVx1ODEzMFx1ODEzM1x1ODEzNFx1ODEzNVx1ODEzN1x1ODEz''@;'; put 'put ''OVx1ODEzYVx1ODEzYlx1ODEzY1x1ODEzZFx1ODEzZlx1OGMyOVx1ODI5Mlx1ODMyYlx1NzZmMlx1NmMxM1x1NWZkOVx1ODNiZFx1NzMyYlx1ODMwNVx1OTUxYVx1NmJkYlx1NzdkYlx1OTRjNlx1NTM2Zlx1ODMwMlx1NTE5Mlx1NWUzZFx1OGM4Y1x1OGQzOFx1NGU0OFx1NzNhYlx1Njc5YVx1''@;'; put 'put ''Njg4NVx1OTE3Nlx1OTcwOVx1NzE2NFx1NmNhMVx1NzcwOVx1NWE5Mlx1OTU0MVx1NmJjZlx1N2Y4ZVx1NjYyN1x1NWJkMFx1NTliOVx1NWE5YVx1OTVlOFx1OTVmN1x1NGVlY1x1ODQwY1x1ODQ5OVx1NmFhY1x1NzZkZlx1OTUzMFx1NzMxYlx1NjhhNlx1NWI1Zlx1NzcyZlx1OTE5YVx1OTc2''@;'; put 'put ''MVx1N2NkY1x1OGZmN1x1OGMxY1x1NWYyNVx1N2M3M1x1NzlkOFx1ODljNVx1NmNjY1x1ODcxY1x1NWJjNlx1NWU0Mlx1NjhjOVx1NzcyMFx1N2VmNVx1NTE5NVx1NTE0ZFx1NTJjOVx1NWEyOVx1N2YwNVx1OTc2Mlx1ODJkN1x1NjNjZlx1Nzc4NFx1ODVkMFx1NzlkMlx1NmUzYVx1NWU5OVx1''@;'; put 'put ''NTk5OVx1ODUxMVx1NzA2ZFx1NmMxMVx1NjJiZlx1NzZiZlx1NjU0Zlx1NjBhZlx1OTVmZFx1NjYwZVx1ODc5Zlx1OWUyM1x1OTRlZFx1NTQwZFx1NTQ3ZFx1OGMyY1x1NjQ3OFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5NV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTk1XVtFXS5jaGFy''@;'; put 'put ''Q29kZUF0KDApJiYobWVbQlsxOTVdW0VdXT00OTkyMCtFLExbNDk5MjArRV09QlsxOTVdW0VdKTtmb3IoQlsxOTZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgxNDBcdTgxNDFcdTgxNDJcdTgxNDNcdTgxNDRcdTgxNDVcdTgxNDdc''@;'; put 'put ''dTgxNDlcdTgxNGRcdTgxNGVcdTgxNGZcdTgxNTJcdTgxNTZcdTgxNTdcdTgxNThcdTgxNWJcdTgxNWNcdTgxNWRcdTgxNWVcdTgxNWZcdTgxNjFcdTgxNjJcdTgxNjNcdTgxNjRcdTgxNjZcdTgxNjhcdTgxNmFcdTgxNmJcdTgxNmNcdTgxNmZcdTgxNzJcdTgxNzNcdTgxNzVcdTgxNzZcdTgx''@;'; put 'put ''NzdcdTgxNzhcdTgxODFcdTgxODNcdTgxODRcdTgxODVcdTgxODZcdTgxODdcdTgxODlcdTgxOGJcdTgxOGNcdTgxOGRcdTgxOGVcdTgxOTBcdTgxOTJcdTgxOTNcdTgxOTRcdTgxOTVcdTgxOTZcdTgxOTdcdTgxOTlcdTgxOWFcdTgxOWVcdTgxOWZcdTgxYTBcdTgxYTFcdTgxYTJcdTgxYTRc''@;'; put 'put ''dTgxYTVcdWZmZmRcdTgxYTdcdTgxYTlcdTgxYWJcdTgxYWNcdTgxYWRcdTgxYWVcdTgxYWZcdTgxYjBcdTgxYjFcdTgxYjJcdTgxYjRcdTgxYjVcdTgxYjZcdTgxYjdcdTgxYjhcdTgxYjlcdTgxYmNcdTgxYmRcdTgxYmVcdTgxYmZcdTgxYzRcdTgxYzVcdTgxYzdcdTgxYzhcdTgxYzlcdTgx''@;'; put 'put ''Y2JcdTgxY2RcdTgxY2VcdTgxY2ZcdTgxZDBcdTgxZDFcdTgxZDJcdTgxZDNcdTY0NzlcdTg2MTFcdTZhMjFcdTgxOWNcdTc4ZThcdTY0NjlcdTliNTRcdTYyYjlcdTY3MmJcdTgzYWJcdTU4YThcdTllZDhcdTZjYWJcdTZmMjBcdTViZGVcdTk2NGNcdThjMGJcdTcyNWZcdTY3ZDBcdTYyYzdc''@;'; put 'put ''dTcyNjFcdTRlYTlcdTU5YzZcdTZiY2RcdTU4OTNcdTY2YWVcdTVlNTVcdTUyZGZcdTYxNTVcdTY3MjhcdTc2ZWVcdTc3NjZcdTcyNjdcdTdhNDZcdTYyZmZcdTU0ZWFcdTU0NTBcdTk0YTBcdTkwYTNcdTVhMWNcdTdlYjNcdTZjMTZcdTRlNDNcdTU5NzZcdTgwMTBcdTU5NDhcdTUzNTdcdTc1''@;'; put 'put ''MzdcdTk2YmVcdTU2Y2FcdTYzMjBcdTgxMTFcdTYwN2NcdTk1ZjlcdTZkZDZcdTU0NjJcdTk5ODFcdTUxODVcdTVhZTlcdTgwZmRcdTU5YWVcdTk3MTNcdTUwMmFcdTZjZTVcdTVjM2NcdTYyZGZcdTRmNjBcdTUzM2ZcdTgxN2JcdTkwMDZcdTZlYmFcdTg1MmJcdTYyYzhcdTVlNzRcdTc4YmVc''@;'; put 'put ''dTY0YjVcdTYzN2JcdTVmZjVcdTVhMThcdTkxN2ZcdTllMWZcdTVjM2ZcdTYzNGZcdTgwNDJcdTViN2RcdTU1NmVcdTk1NGFcdTk1NGRcdTZkODVcdTYwYThcdTY3ZTBcdTcyZGVcdTUxZGRcdTViODFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTZdLmxlbmd0aDsrK0UpNjU1MzMhPT1C''@;'; put 'put ''WzE5Nl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTk2XVtFXV09NTAxNzYrRSxMWzUwMTc2K0VdPUJbMTk2XVtFXSk7Zm9yKEJbMTk3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MWQ0XHU4MWQ1XHU4MWQ2XHU4MWQ3XHU4MWQ4''@;'; put 'put ''XHU4MWQ5XHU4MWRhXHU4MWRiXHU4MWRjXHU4MWRkXHU4MWRlXHU4MWRmXHU4MWUwXHU4MWUxXHU4MWUyXHU4MWU0XHU4MWU1XHU4MWU2XHU4MWU4XHU4MWU5XHU4MWViXHU4MWVlXHU4MWVmXHU4MWYwXHU4MWYxXHU4MWYyXHU4MWY1XHU4MWY2XHU4MWY3XHU4MWY4XHU4MWY5XHU4MWZhXHU4''@;'; put 'put ''MWZkXHU4MWZmXHU4MjAzXHU4MjA3XHU4MjA4XHU4MjA5XHU4MjBhXHU4MjBiXHU4MjBlXHU4MjBmXHU4MjExXHU4MjEzXHU4MjE1XHU4MjE2XHU4MjE3XHU4MjE4XHU4MjE5XHU4MjFhXHU4MjFkXHU4MjIwXHU4MjI0XHU4MjI1XHU4MjI2XHU4MjI3XHU4MjI5XHU4MjJlXHU4MjMyXHU4MjNh''@;'; put 'put ''XHU4MjNjXHU4MjNkXHU4MjNmXHVmZmZkXHU4MjQwXHU4MjQxXHU4MjQyXHU4MjQzXHU4MjQ1XHU4MjQ2XHU4MjQ4XHU4MjRhXHU4MjRjXHU4MjRkXHU4MjRlXHU4MjUwXHU4MjUxXHU4MjUyXHU4MjUzXHU4MjU0XHU4MjU1XHU4MjU2XHU4MjU3XHU4MjU5XHU4MjViXHU4MjVjXHU4MjVkXHU4''@;'; put 'put ''MjVlXHU4MjYwXHU4MjYxXHU4MjYyXHU4MjYzXHU4MjY0XHU4MjY1XHU4MjY2XHU4MjY3XHU4MjY5XHU2MmU3XHU2Y2RlXHU3MjViXHU2MjZkXHU5NGFlXHU3ZWJkXHU4MTEzXHU2ZDUzXHU1MTljXHU1ZjA0XHU1OTc0XHU1MmFhXHU2MDEyXHU1OTczXHU2Njk2XHU4NjUwXHU3NTlmXHU2MzJh''@;'; put 'put ''XHU2MWU2XHU3Y2VmXHU4YmZhXHU1NGU2XHU2YjI3XHU5ZTI1XHU2YmI0XHU4NWQ1XHU1NDU1XHU1MDc2XHU2Y2E0XHU1NTZhXHU4ZGI0XHU3MjJjXHU1ZTE1XHU2MDE1XHU3NDM2XHU2MmNkXHU2MzkyXHU3MjRjXHU1Zjk4XHU2ZTQzXHU2ZDNlXHU2NTAwXHU2ZjU4XHU3NmQ4XHU3OGQwXHU3''@;'; put 'put ''NmZjXHU3NTU0XHU1MjI0XHU1M2RiXHU0ZTUzXHU1ZTllXHU2NWMxXHU4MDJhXHU4MGQ2XHU2MjliXHU1NDg2XHU1MjI4XHU3MGFlXHU4ODhkXHU4ZGQxXHU2Y2UxXHU1NDc4XHU4MGRhXHU1N2Y5XHU4OGY0XHU4ZDU0XHU5NjZhXHU5MTRkXHU0ZjY5XHU2YzliXHU1NWI3XHU3NmM2XHU3ODMw''@;'; put 'put ''XHU2MmE4XHU3MGY5XHU2ZjhlXHU1ZjZkXHU4NGVjXHU2OGRhXHU3ODdjXHU3YmY3XHU4MWE4XHU2NzBiXHU5ZTRmXHU2MzY3XHU3OGIwXHU1NzZmXHU3ODEyXHU5NzM5XHU2Mjc5XHU2MmFiXHU1Mjg4XHU3NDM1XHU2YmQ3XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTk3XS5sZW5ndGg7''@;'; put 'put ''KytFKTY1NTMzIT09QlsxOTddW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE5N11bRV1dPTUwNDMyK0UsTFs1MDQzMitFXT1CWzE5N11bRV0pO2ZvcihCWzE5OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODI2YVx1ODI2Ylx1ODI2''@;'; put 'put ''Y1x1ODI2ZFx1ODI3MVx1ODI3NVx1ODI3Nlx1ODI3N1x1ODI3OFx1ODI3Ylx1ODI3Y1x1ODI4MFx1ODI4MVx1ODI4M1x1ODI4NVx1ODI4Nlx1ODI4N1x1ODI4OVx1ODI4Y1x1ODI5MFx1ODI5M1x1ODI5NFx1ODI5NVx1ODI5Nlx1ODI5YVx1ODI5Ylx1ODI5ZVx1ODJhMFx1ODJhMlx1ODJhM1x1''@;'; put 'put ''ODJhN1x1ODJiMlx1ODJiNVx1ODJiNlx1ODJiYVx1ODJiYlx1ODJiY1x1ODJiZlx1ODJjMFx1ODJjMlx1ODJjM1x1ODJjNVx1ODJjNlx1ODJjOVx1ODJkMFx1ODJkNlx1ODJkOVx1ODJkYVx1ODJkZFx1ODJlMlx1ODJlN1x1ODJlOFx1ODJlOVx1ODJlYVx1ODJlY1x1ODJlZFx1ODJlZVx1ODJm''@;'; put 'put ''MFx1ODJmMlx1ODJmM1x1ODJmNVx1ODJmNlx1ODJmOFx1ZmZmZFx1ODJmYVx1ODJmY1x1ODJmZFx1ODJmZVx1ODJmZlx1ODMwMFx1ODMwYVx1ODMwYlx1ODMwZFx1ODMxMFx1ODMxMlx1ODMxM1x1ODMxNlx1ODMxOFx1ODMxOVx1ODMxZFx1ODMxZVx1ODMxZlx1ODMyMFx1ODMyMVx1ODMyMlx1''@;'; put 'put ''ODMyM1x1ODMyNFx1ODMyNVx1ODMyNlx1ODMyOVx1ODMyYVx1ODMyZVx1ODMzMFx1ODMzMlx1ODMzN1x1ODMzYlx1ODMzZFx1NTU2NFx1ODEzZVx1NzViMlx1NzZhZVx1NTMzOVx1NzVkZVx1NTBmYlx1NWM0MVx1OGI2Y1x1N2JjN1x1NTA0Zlx1NzI0N1x1OWE5N1x1OThkOFx1NmYwMlx1NzRl''@;'; put 'put ''Mlx1Nzk2OFx1NjQ4N1x1NzdhNVx1NjJmY1x1OTg5MVx1OGQyYlx1NTRjMVx1ODA1OFx1NGU1Mlx1NTc2YVx1ODJmOVx1ODQwZFx1NWU3M1x1NTFlZFx1NzRmNlx1OGJjNFx1NWM0Zlx1NTc2MVx1NmNmY1x1OTg4N1x1NWE0Nlx1NzgzNFx1OWI0NFx1OGZlYlx1N2M5NVx1NTI1Nlx1NjI1MVx1''@;'; put 'put ''OTRmYVx1NGVjNlx1ODM4Nlx1ODQ2MVx1ODNlOVx1ODRiMlx1NTdkNFx1NjczNFx1NTcwM1x1NjY2ZVx1NmQ2Nlx1OGMzMVx1NjZkZFx1NzAxMVx1NjcxZlx1NmIzYVx1NjgxNlx1NjIxYVx1NTliYlx1NGUwM1x1NTFjNFx1NmYwNlx1NjdkMlx1NmM4Zlx1NTE3Nlx1NjhjYlx1NTk0N1x1NmI2''@;'; put 'put ''N1x1NzU2Nlx1NWQwZVx1ODExMFx1OWY1MFx1NjVkN1x1Nzk0OFx1Nzk0MVx1OWE5MVx1OGQ3N1x1NWM4Mlx1NGU1ZVx1NGYwMVx1NTQyZlx1NTk1MVx1NzgwY1x1NTY2OFx1NmMxNFx1OGZjNFx1NWYwM1x1NmM3ZFx1NmNlM1x1OGJhYlx1NjM5MFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1C''@;'; put 'put ''WzE5OF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTk4XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxOThdW0VdXT01MDY4OCtFLExbNTA2ODgrRV09QlsxOThdW0VdKTtmb3IoQlsxOTldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgz''@;'; put 'put ''M2VcdTgzM2ZcdTgzNDFcdTgzNDJcdTgzNDRcdTgzNDVcdTgzNDhcdTgzNGFcdTgzNGJcdTgzNGNcdTgzNGRcdTgzNGVcdTgzNTNcdTgzNTVcdTgzNTZcdTgzNTdcdTgzNThcdTgzNTlcdTgzNWRcdTgzNjJcdTgzNzBcdTgzNzFcdTgzNzJcdTgzNzNcdTgzNzRcdTgzNzVcdTgzNzZcdTgzNzlc''@;'; put 'put ''dTgzN2FcdTgzN2VcdTgzN2ZcdTgzODBcdTgzODFcdTgzODJcdTgzODNcdTgzODRcdTgzODdcdTgzODhcdTgzOGFcdTgzOGJcdTgzOGNcdTgzOGRcdTgzOGZcdTgzOTBcdTgzOTFcdTgzOTRcdTgzOTVcdTgzOTZcdTgzOTdcdTgzOTlcdTgzOWFcdTgzOWRcdTgzOWZcdTgzYTFcdTgzYTJcdTgz''@;'; put 'put ''YTNcdTgzYTRcdTgzYTVcdTgzYTZcdTgzYTdcdTgzYWNcdTgzYWRcdTgzYWVcdWZmZmRcdTgzYWZcdTgzYjVcdTgzYmJcdTgzYmVcdTgzYmZcdTgzYzJcdTgzYzNcdTgzYzRcdTgzYzZcdTgzYzhcdTgzYzlcdTgzY2JcdTgzY2RcdTgzY2VcdTgzZDBcdTgzZDFcdTgzZDJcdTgzZDNcdTgzZDVc''@;'; put 'put ''dTgzZDdcdTgzZDlcdTgzZGFcdTgzZGJcdTgzZGVcdTgzZTJcdTgzZTNcdTgzZTRcdTgzZTZcdTgzZTdcdTgzZThcdTgzZWJcdTgzZWNcdTgzZWRcdTYwNzBcdTZkM2RcdTcyNzVcdTYyNjZcdTk0OGVcdTk0YzVcdTUzNDNcdThmYzFcdTdiN2VcdTRlZGZcdThjMjZcdTRlN2VcdTllZDRcdTk0''@;'; put 'put ''YjFcdTk0YjNcdTUyNGRcdTZmNWNcdTkwNjNcdTZkNDVcdThjMzRcdTU4MTFcdTVkNGNcdTZiMjBcdTZiNDlcdTY3YWFcdTU0NWJcdTgxNTRcdTdmOGNcdTU4OTlcdTg1MzdcdTVmM2FcdTYyYTJcdTZhNDdcdTk1MzlcdTY1NzJcdTYwODRcdTY4NjVcdTc3YTdcdTRlNTRcdTRmYThcdTVkZTdc''@;'; put 'put ''dTk3OThcdTY0YWNcdTdmZDhcdTVjZWRcdTRmY2ZcdTdhOGRcdTUyMDdcdTgzMDRcdTRlMTRcdTYwMmZcdTdhODNcdTk0YTZcdTRmYjVcdTRlYjJcdTc5ZTZcdTc0MzRcdTUyZTRcdTgyYjlcdTY0ZDJcdTc5YmRcdTViZGRcdTZjODFcdTk3NTJcdThmN2JcdTZjMjJcdTUwM2VcdTUzN2ZcdTZl''@;'; put 'put ''MDVcdTY0Y2VcdTY2NzRcdTZjMzBcdTYwYzVcdTk4NzdcdThiZjdcdTVlODZcdTc0M2NcdTdhNzdcdTc5Y2JcdTRlMThcdTkwYjFcdTc0MDNcdTZjNDJcdTU2ZGFcdTkxNGJcdTZjYzVcdThkOGJcdTUzM2FcdTg2YzZcdTY2ZjJcdThlYWZcdTVjNDhcdTlhNzFcdTZlMjBcdWZmZmQiLnNwbGl0''@;'; put 'put ''KCIiKSxFPTA7RSE9QlsxOTldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5OV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTk5XVtFXV09NTA5NDQrRSxMWzUwOTQ0K0VdPUJbMTk5XVtFXSk7Zm9yKEJbMjAwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHU4M2VlXHU4M2VmXHU4M2YzXHU4M2Y0XHU4M2Y1XHU4M2Y2XHU4M2Y3XHU4M2ZhXHU4M2ZiXHU4M2ZjXHU4M2ZlXHU4M2ZmXHU4NDAwXHU4NDAyXHU4NDA1XHU4NDA3XHU4NDA4XHU4NDA5XHU4NDBhXHU4NDEwXHU4NDEyXHU4NDEzXHU4NDE0XHU4NDE1XHU4NDE2XHU4NDE3''@;'; put 'put ''XHU4NDE5XHU4NDFhXHU4NDFiXHU4NDFlXHU4NDFmXHU4NDIwXHU4NDIxXHU4NDIyXHU4NDIzXHU4NDI5XHU4NDJhXHU4NDJiXHU4NDJjXHU4NDJkXHU4NDJlXHU4NDJmXHU4NDMwXHU4NDMyXHU4NDMzXHU4NDM0XHU4NDM1XHU4NDM2XHU4NDM3XHU4NDM5XHU4NDNhXHU4NDNiXHU4NDNlXHU4''@;'; put 'put ''NDNmXHU4NDQwXHU4NDQxXHU4NDQyXHU4NDQzXHU4NDQ0XHU4NDQ1XHU4NDQ3XHU4NDQ4XHU4NDQ5XHVmZmZkXHU4NDRhXHU4NDRiXHU4NDRjXHU4NDRkXHU4NDRlXHU4NDRmXHU4NDUwXHU4NDUyXHU4NDUzXHU4NDU0XHU4NDU1XHU4NDU2XHU4NDU4XHU4NDVkXHU4NDVlXHU4NDVmXHU4NDYw''@;'; put 'put ''XHU4NDYyXHU4NDY0XHU4NDY1XHU4NDY2XHU4NDY3XHU4NDY4XHU4NDZhXHU4NDZlXHU4NDZmXHU4NDcwXHU4NDcyXHU4NDc0XHU4NDc3XHU4NDc5XHU4NDdiXHU4NDdjXHU1M2Q2XHU1YTM2XHU5ZjhiXHU4ZGEzXHU1M2JiXHU1NzA4XHU5OGE3XHU2NzQzXHU5MTliXHU2Y2M5XHU1MTY4XHU3''@;'; put 'put ''NWNhXHU2MmYzXHU3MmFjXHU1MjM4XHU1MjlkXHU3ZjNhXHU3MDk0XHU3NjM4XHU1Mzc0XHU5ZTRhXHU2OWI3XHU3ODZlXHU5NmMwXHU4OGQ5XHU3ZmE0XHU3MTM2XHU3MWMzXHU1MTg5XHU2N2QzXHU3NGU0XHU1OGU0XHU2NTE4XHU1NmI3XHU4YmE5XHU5OTc2XHU2MjcwXHU3ZWQ1XHU2MGY5''@;'; put 'put ''XHU3MGVkXHU1OGVjXHU0ZWMxXHU0ZWJhXHU1ZmNkXHU5N2U3XHU0ZWZiXHU4YmE0XHU1MjAzXHU1OThhXHU3ZWFiXHU2MjU0XHU0ZWNkXHU2NWU1XHU2MjBlXHU4MzM4XHU4NGM5XHU4MzYzXHU4NzhkXHU3MTk0XHU2ZWI2XHU1YmI5XHU3ZWQyXHU1MTk3XHU2M2M5XHU2N2Q0XHU4MDg5XHU4''@;'; put 'put ''MzM5XHU4ODE1XHU1MTEyXHU1YjdhXHU1OTgyXHU4ZmIxXHU0ZTczXHU2YzVkXHU1MTY1XHU4OTI1XHU4ZjZmXHU5NjJlXHU4NTRhXHU3NDVlXHU5NTEwXHU5NWYwXHU2ZGE2XHU4MmU1XHU1ZjMxXHU2NDkyXHU2ZDEyXHU4NDI4XHU4MTZlXHU5Y2MzXHU1ODVlXHU4ZDViXHU0ZTA5XHU1M2Mx''@;'; put 'put ''XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjAwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDBdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIwMF1bRV1dPTUxMjAwK0UsTFs1MTIwMCtFXT1CWzIwMF1bRV0pO2ZvcihCWzIwMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODQ3ZFx1ODQ3ZVx1ODQ3Zlx1ODQ4MFx1ODQ4MVx1ODQ4M1x1ODQ4NFx1ODQ4NVx1ODQ4Nlx1ODQ4YVx1ODQ4ZFx1ODQ4Zlx1ODQ5MFx1ODQ5MVx1ODQ5Mlx1ODQ5M1x1ODQ5NFx1ODQ5NVx1ODQ5Nlx1ODQ5OFx1ODQ5YVx1ODQ5Ylx1ODQ5ZFx1ODQ5''@;'; put 'put ''ZVx1ODQ5Zlx1ODRhMFx1ODRhMlx1ODRhM1x1ODRhNFx1ODRhNVx1ODRhNlx1ODRhN1x1ODRhOFx1ODRhOVx1ODRhYVx1ODRhYlx1ODRhY1x1ODRhZFx1ODRhZVx1ODRiMFx1ODRiMVx1ODRiM1x1ODRiNVx1ODRiNlx1ODRiN1x1ODRiYlx1ODRiY1x1ODRiZVx1ODRjMFx1ODRjMlx1ODRjM1x1''@;'; put 'put ''ODRjNVx1ODRjNlx1ODRjN1x1ODRjOFx1ODRjYlx1ODRjY1x1ODRjZVx1ODRjZlx1ODRkMlx1ODRkNFx1ODRkNVx1ODRkN1x1ZmZmZFx1ODRkOFx1ODRkOVx1ODRkYVx1ODRkYlx1ODRkY1x1ODRkZVx1ODRlMVx1ODRlMlx1ODRlNFx1ODRlN1x1ODRlOFx1ODRlOVx1ODRlYVx1ODRlYlx1ODRl''@;'; put 'put ''ZFx1ODRlZVx1ODRlZlx1ODRmMVx1ODRmMlx1ODRmM1x1ODRmNFx1ODRmNVx1ODRmNlx1ODRmN1x1ODRmOFx1ODRmOVx1ODRmYVx1ODRmYlx1ODRmZFx1ODRmZVx1ODUwMFx1ODUwMVx1ODUwMlx1NGYxZVx1NjU2M1x1Njg1MVx1NTVkM1x1NGUyN1x1NjQxNFx1OWE5YVx1NjI2Ylx1NWFjMlx1''@;'; put 'put ''NzQ1Zlx1ODI3Mlx1NmRhOVx1NjhlZVx1NTBlN1x1ODM4ZVx1NzgwMlx1Njc0MFx1NTIzOVx1NmM5OVx1N2ViMVx1NTBiYlx1NTU2NVx1NzE1ZVx1N2I1Ylx1NjY1Mlx1NzNjYVx1ODJlYlx1Njc0OVx1NWM3MVx1NTIyMFx1NzE3ZFx1ODg2Ylx1OTVlYVx1OTY1NVx1NjRjNVx1OGQ2MVx1ODFi''@;'; put 'put ''M1x1NTU4NFx1NmM1NVx1NjI0N1x1N2YyZVx1NTg5Mlx1NGYyNFx1NTU0Nlx1OGQ0Zlx1NjY0Y1x1NGUwYVx1NWMxYVx1ODhmM1x1NjhhMlx1NjM0ZVx1N2EwZFx1NzBlN1x1ODI4ZFx1NTJmYVx1OTdmNlx1NWMxMVx1NTRlOFx1OTBiNVx1N2VjZFx1NTk2Mlx1OGQ0YVx1ODZjN1x1ODIwY1x1''@;'; put 'put ''ODIwZFx1OGQ2Nlx1NjQ0NFx1NWMwNFx1NjE1MVx1NmQ4OVx1NzkzZVx1OGJiZVx1NzgzN1x1NzUzM1x1NTQ3Ylx1NGYzOFx1OGVhYlx1NmRmMVx1NWEyMFx1N2VjNVx1Nzk1ZVx1NmM4OFx1NWJhMVx1NWE3Nlx1NzUxYVx1ODBiZVx1NjE0ZVx1NmUxN1x1NThmMFx1NzUxZlx1NzUyNVx1NzI3''@;'; put 'put ''Mlx1NTM0N1x1N2VmM1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwMV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjAxXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMDFdW0VdXT01MTQ1NitFLExbNTE0NTYrRV09QlsyMDFdW0VdKTtmb3IoQlsyMDJdPSJcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg1MDNcdTg1MDRcdTg1MDVcdTg1MDZcdTg1MDdcdTg1MDhcdTg1MDlcdTg1MGFcdTg1MGJcdTg1MGRcdTg1MGVcdTg1MGZcdTg1MTBcdTg1MTJcdTg1MTRcdTg1MTVcdTg1MTZcdTg1MThcdTg1MTlcdTg1MWJcdTg1MWNcdTg1''@;'; put 'put ''MWRcdTg1MWVcdTg1MjBcdTg1MjJcdTg1MjNcdTg1MjRcdTg1MjVcdTg1MjZcdTg1MjdcdTg1MjhcdTg1MjlcdTg1MmFcdTg1MmRcdTg1MmVcdTg1MmZcdTg1MzBcdTg1MzFcdTg1MzJcdTg1MzNcdTg1MzRcdTg1MzVcdTg1MzZcdTg1M2VcdTg1M2ZcdTg1NDBcdTg1NDFcdTg1NDJcdTg1NDRc''@;'; put 'put ''dTg1NDVcdTg1NDZcdTg1NDdcdTg1NGJcdTg1NGNcdTg1NGRcdTg1NGVcdTg1NGZcdTg1NTBcdTg1NTFcdTg1NTJcdTg1NTNcdTg1NTRcdTg1NTVcdWZmZmRcdTg1NTdcdTg1NThcdTg1NWFcdTg1NWJcdTg1NWNcdTg1NWRcdTg1NWZcdTg1NjBcdTg1NjFcdTg1NjJcdTg1NjNcdTg1NjVcdTg1''@;'; put 'put ''NjZcdTg1NjdcdTg1NjlcdTg1NmFcdTg1NmJcdTg1NmNcdTg1NmRcdTg1NmVcdTg1NmZcdTg1NzBcdTg1NzFcdTg1NzNcdTg1NzVcdTg1NzZcdTg1NzdcdTg1NzhcdTg1N2NcdTg1N2RcdTg1N2ZcdTg1ODBcdTg1ODFcdTc3MDFcdTc2ZGJcdTUyNjlcdTgwZGNcdTU3MjNcdTVlMDhcdTU5MzFc''@;'; put 'put ''dTcyZWVcdTY1YmRcdTZlN2ZcdThiZDdcdTVjMzhcdTg2NzFcdTUzNDFcdTc3ZjNcdTYyZmVcdTY1ZjZcdTRlYzBcdTk4ZGZcdTg2ODBcdTViOWVcdThiYzZcdTUzZjJcdTc3ZTJcdTRmN2ZcdTVjNGVcdTlhNzZcdTU5Y2JcdTVmMGZcdTc5M2FcdTU4ZWJcdTRlMTZcdTY3ZmZcdTRlOGJcdTYy''@;'; put 'put ''ZWRcdThhOTNcdTkwMWRcdTUyYmZcdTY2MmZcdTU1ZGNcdTU2NmNcdTkwMDJcdTRlZDVcdTRmOGRcdTkxY2FcdTk5NzBcdTZjMGZcdTVlMDJcdTYwNDNcdTViYTRcdTg5YzZcdThiZDVcdTY1MzZcdTYyNGJcdTk5OTZcdTViODhcdTViZmZcdTYzODhcdTU1MmVcdTUzZDdcdTc2MjZcdTUxN2Rc''@;'; put 'put ''dTg1MmNcdTY3YTJcdTY4YjNcdTZiOGFcdTYyOTJcdThmOTNcdTUzZDRcdTgyMTJcdTZkZDFcdTc1OGZcdTRlNjZcdThkNGVcdTViNzBcdTcxOWZcdTg1YWZcdTY2OTFcdTY2ZDlcdTdmNzJcdTg3MDBcdTllY2RcdTlmMjBcdTVjNWVcdTY3MmZcdThmZjBcdTY4MTFcdTY3NWZcdTYyMGRcdTdh''@;'; put 'put ''ZDZcdTU4ODVcdTVlYjZcdTY1NzBcdTZmMzFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwMl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjAyXVtFXV09NTE3MTIrRSxMWzUxNzEyK0VdPUJbMjAyXVtFXSk7Zm9yKEJbMjAzXT0iXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NTgyXHU4NTgzXHU4NTg2XHU4NTg4XHU4NTg5XHU4NThhXHU4NThiXHU4NThjXHU4NThkXHU4NThlXHU4NTkwXHU4NTkxXHU4NTkyXHU4NTkzXHU4NTk0XHU4NTk1XHU4NTk2XHU4NTk3XHU4NTk4XHU4''@;'; put 'put ''NTk5XHU4NTlhXHU4NTlkXHU4NTllXHU4NTlmXHU4NWEwXHU4NWExXHU4NWEyXHU4NWEzXHU4NWE1XHU4NWE2XHU4NWE3XHU4NWE5XHU4NWFiXHU4NWFjXHU4NWFkXHU4NWIxXHU4NWIyXHU4NWIzXHU4NWI0XHU4NWI1XHU4NWI2XHU4NWI4XHU4NWJhXHU4NWJiXHU4NWJjXHU4NWJkXHU4NWJl''@;'; put 'put ''XHU4NWJmXHU4NWMwXHU4NWMyXHU4NWMzXHU4NWM0XHU4NWM1XHU4NWM2XHU4NWM3XHU4NWM4XHU4NWNhXHU4NWNiXHU4NWNjXHU4NWNkXHU4NWNlXHU4NWQxXHU4NWQyXHVmZmZkXHU4NWQ0XHU4NWQ2XHU4NWQ3XHU4NWQ4XHU4NWQ5XHU4NWRhXHU4NWRiXHU4NWRkXHU4NWRlXHU4NWRmXHU4''@;'; put 'put ''NWUwXHU4NWUxXHU4NWUyXHU4NWUzXHU4NWU1XHU4NWU2XHU4NWU3XHU4NWU4XHU4NWVhXHU4NWViXHU4NWVjXHU4NWVkXHU4NWVlXHU4NWVmXHU4NWYwXHU4NWYxXHU4NWYyXHU4NWYzXHU4NWY0XHU4NWY1XHU4NWY2XHU4NWY3XHU4NWY4XHU2MDU1XHU1MjM3XHU4MDBkXHU2NDU0XHU4ODcw''@;'; put 'put ''XHU3NTI5XHU1ZTA1XHU2ODEzXHU2MmY0XHU5NzFjXHU1M2NjXHU3MjNkXHU4YzAxXHU2YzM0XHU3NzYxXHU3YTBlXHU1NDJlXHU3N2FjXHU5ODdhXHU4MjFjXHU4YmY0XHU3ODU1XHU2NzE0XHU3MGMxXHU2NWFmXHU2NDk1XHU1NjM2XHU2MDFkXHU3OWMxXHU1M2Y4XHU0ZTFkXHU2YjdiXHU4''@;'; put 'put ''MDg2XHU1YmZhXHU1NWUzXHU1NmRiXHU0ZjNhXHU0ZjNjXHU5OTcyXHU1ZGYzXHU2NzdlXHU4MDM4XHU2MDAyXHU5ODgyXHU5MDAxXHU1YjhiXHU4YmJjXHU4YmY1XHU2NDFjXHU4MjU4XHU2NGRlXHU1NWZkXHU4MmNmXHU5MTY1XHU0ZmQ3XHU3ZDIwXHU5MDFmXHU3YzlmXHU1MGYzXHU1ODUx''@;'; put 'put ''XHU2ZWFmXHU1YmJmXHU4YmM5XHU4MDgzXHU5MTc4XHU4NDljXHU3Yjk3XHU4NjdkXHU5NjhiXHU5NjhmXHU3ZWU1XHU5YWQzXHU3ODhlXHU1YzgxXHU3YTU3XHU5MDQyXHU5NmE3XHU3OTVmXHU1YjU5XHU2MzVmXHU3YjBiXHU4NGQxXHU2OGFkXHU1NTA2XHU3ZjI5XHU3NDEwXHU3ZDIyXHU5''@;'; put 'put ''NTAxXHU2MjQwXHU1ODRjXHU0ZWQ2XHU1YjgzXHU1OTc5XHU1ODU0XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjAzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDNdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIwM11bRV1dPTUxOTY4K0UsTFs1MTk2OCtFXT1CWzIwM11bRV0pO2ZvcihC''@;'; put 'put ''WzIwNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODVmOVx1ODVmYVx1ODVmY1x1ODVmZFx1ODVmZVx1ODYwMFx1ODYwMVx1ODYwMlx1ODYwM1x1ODYwNFx1ODYwNlx1ODYwN1x1ODYwOFx1ODYwOVx1ODYwYVx1ODYwYlx1ODYwY1x1''@;'; put 'put ''ODYwZFx1ODYwZVx1ODYwZlx1ODYxMFx1ODYxMlx1ODYxM1x1ODYxNFx1ODYxNVx1ODYxN1x1ODYxOFx1ODYxOVx1ODYxYVx1ODYxYlx1ODYxY1x1ODYxZFx1ODYxZVx1ODYxZlx1ODYyMFx1ODYyMVx1ODYyMlx1ODYyM1x1ODYyNFx1ODYyNVx1ODYyNlx1ODYyOFx1ODYyYVx1ODYyYlx1ODYy''@;'; put 'put ''Y1x1ODYyZFx1ODYyZVx1ODYyZlx1ODYzMFx1ODYzMVx1ODYzMlx1ODYzM1x1ODYzNFx1ODYzNVx1ODYzNlx1ODYzN1x1ODYzOVx1ODYzYVx1ODYzYlx1ODYzZFx1ODYzZVx1ODYzZlx1ODY0MFx1ZmZmZFx1ODY0MVx1ODY0Mlx1ODY0M1x1ODY0NFx1ODY0NVx1ODY0Nlx1ODY0N1x1ODY0OFx1''@;'; put 'put ''ODY0OVx1ODY0YVx1ODY0Ylx1ODY0Y1x1ODY1Mlx1ODY1M1x1ODY1NVx1ODY1Nlx1ODY1N1x1ODY1OFx1ODY1OVx1ODY1Ylx1ODY1Y1x1ODY1ZFx1ODY1Zlx1ODY2MFx1ODY2MVx1ODY2M1x1ODY2NFx1ODY2NVx1ODY2Nlx1ODY2N1x1ODY2OFx1ODY2OVx1ODY2YVx1NzM2ZFx1NjMxZVx1OGU0''@;'; put 'put ''Ylx1OGUwZlx1ODBjZVx1ODJkNFx1NjJhY1x1NTNmMFx1NmNmMFx1OTE1ZVx1NTkyYVx1NjAwMVx1NmM3MFx1NTc0ZFx1NjQ0YVx1OGQyYVx1NzYyYlx1NmVlOVx1NTc1Ylx1NmE4MFx1NzVmMFx1NmY2ZFx1OGMyZFx1OGMwOFx1NTc2Nlx1NmJlZlx1ODg5Mlx1NzhiM1x1NjNhMlx1NTNmOVx1''@;'; put 'put ''NzBhZFx1NmM2NFx1NTg1OFx1NjQyYVx1NTgwMlx1NjhlMFx1ODE5Ylx1NTUxMFx1N2NkNlx1NTAxOFx1OGViYVx1NmRjY1x1OGQ5Zlx1NzBlYlx1NjM4Zlx1NmQ5Ylx1NmVkNFx1N2VlNlx1ODQwNFx1Njg0M1x1OTAwM1x1NmRkOFx1OTY3Nlx1OGJhOFx1NTk1N1x1NzI3OVx1ODVlNFx1ODE3''@;'; put 'put ''ZVx1NzViY1x1OGE4YVx1NjhhZlx1NTI1NFx1OGUyMlx1OTUxMVx1NjNkMFx1OTg5OFx1OGU0NFx1NTU3Y1x1NGY1M1x1NjZmZlx1NTY4Zlx1NjBkNVx1NmQ5NVx1NTI0M1x1NWM0OVx1NTkyOVx1NmRmYlx1NTg2Ylx1NzUzMFx1NzUxY1x1NjA2Y1x1ODIxNFx1ODE0Nlx1NjMxMVx1Njc2MVx1''@;'; put 'put ''OGZlMlx1NzczYVx1OGRmM1x1OGQzNFx1OTRjMVx1NWUxNlx1NTM4NVx1NTQyY1x1NzBjM1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwNF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjA0XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMDRdW0VdXT01MjIyNCtFLExbNTIyMjQrRV09Qlsy''@;'; put 'put ''MDRdW0VdKTtmb3IoQlsyMDVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg2NmRcdTg2NmZcdTg2NzBcdTg2NzJcdTg2NzNcdTg2NzRcdTg2NzVcdTg2NzZcdTg2NzdcdTg2NzhcdTg2ODNcdTg2ODRcdTg2ODVcdTg2ODZcdTg2ODdc''@;'; put 'put ''dTg2ODhcdTg2ODlcdTg2OGVcdTg2OGZcdTg2OTBcdTg2OTFcdTg2OTJcdTg2OTRcdTg2OTZcdTg2OTdcdTg2OThcdTg2OTlcdTg2OWFcdTg2OWJcdTg2OWVcdTg2OWZcdTg2YTBcdTg2YTFcdTg2YTJcdTg2YTVcdTg2YTZcdTg2YWJcdTg2YWRcdTg2YWVcdTg2YjJcdTg2YjNcdTg2YjdcdTg2''@;'; put 'put ''YjhcdTg2YjlcdTg2YmJcdTg2YmNcdTg2YmRcdTg2YmVcdTg2YmZcdTg2YzFcdTg2YzJcdTg2YzNcdTg2YzVcdTg2YzhcdTg2Y2NcdTg2Y2RcdTg2ZDJcdTg2ZDNcdTg2ZDVcdTg2ZDZcdTg2ZDdcdTg2ZGFcdTg2ZGNcdWZmZmRcdTg2ZGRcdTg2ZTBcdTg2ZTFcdTg2ZTJcdTg2ZTNcdTg2ZTVc''@;'; put 'put ''dTg2ZTZcdTg2ZTdcdTg2ZThcdTg2ZWFcdTg2ZWJcdTg2ZWNcdTg2ZWZcdTg2ZjVcdTg2ZjZcdTg2ZjdcdTg2ZmFcdTg2ZmJcdTg2ZmNcdTg2ZmRcdTg2ZmZcdTg3MDFcdTg3MDRcdTg3MDVcdTg3MDZcdTg3MGJcdTg3MGNcdTg3MGVcdTg3MGZcdTg3MTBcdTg3MTFcdTg3MTRcdTg3MTZcdTZj''@;'; put 'put ''NDBcdTVlZjdcdTUwNWNcdTRlYWRcdTVlYWRcdTYzM2FcdTgyNDdcdTkwMWFcdTY4NTBcdTkxNmVcdTc3YjNcdTU0MGNcdTk0ZGNcdTVmNjRcdTdhZTVcdTY4NzZcdTYzNDVcdTdiNTJcdTdlZGZcdTc1ZGJcdTUwNzdcdTYyOTVcdTU5MzRcdTkwMGZcdTUxZjhcdTc5YzNcdTdhODFcdTU2ZmVc''@;'; put 'put ''dTVmOTJcdTkwMTRcdTZkODJcdTVjNjBcdTU3MWZcdTU0MTBcdTUxNTRcdTZlNGRcdTU2ZTJcdTYzYThcdTk4OTNcdTgxN2ZcdTg3MTVcdTg5MmFcdTkwMDBcdTU0MWVcdTVjNmZcdTgxYzBcdTYyZDZcdTYyNThcdTgxMzFcdTllMzVcdTk2NDBcdTlhNmVcdTlhN2NcdTY5MmRcdTU5YTVcdTYy''@;'; put 'put ''ZDNcdTU1M2VcdTYzMTZcdTU0YzdcdTg2ZDlcdTZkM2NcdTVhMDNcdTc0ZTZcdTg4OWNcdTZiNmFcdTU5MTZcdThjNGNcdTVmMmZcdTZlN2VcdTczYTlcdTk4N2RcdTRlMzhcdTcwZjdcdTViOGNcdTc4OTdcdTYzM2RcdTY2NWFcdTc2OTZcdTYwY2JcdTViOWJcdTVhNDlcdTRlMDdcdTgxNTVc''@;'; put 'put ''dTZjNmFcdTczOGJcdTRlYTFcdTY3ODlcdTdmNTFcdTVmODBcdTY1ZmFcdTY3MWJcdTVmZDhcdTU5ODRcdTVhMDFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwNV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjA1XVtFXV09NTI0ODArRSxM''@;'; put 'put ''WzUyNDgwK0VdPUJbMjA1XVtFXSk7Zm9yKEJbMjA2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NzE5XHU4NzFiXHU4NzFkXHU4NzFmXHU4NzIwXHU4NzI0XHU4NzI2XHU4NzI3XHU4NzI4XHU4NzJhXHU4NzJiXHU4NzJjXHU4NzJk''@;'; put 'put ''XHU4NzJmXHU4NzMwXHU4NzMyXHU4NzMzXHU4NzM1XHU4NzM2XHU4NzM4XHU4NzM5XHU4NzNhXHU4NzNjXHU4NzNkXHU4NzQwXHU4NzQxXHU4NzQyXHU4NzQzXHU4NzQ0XHU4NzQ1XHU4NzQ2XHU4NzRhXHU4NzRiXHU4NzRkXHU4NzRmXHU4NzUwXHU4NzUxXHU4NzUyXHU4NzU0XHU4NzU1XHU4''@;'; put 'put ''NzU2XHU4NzU4XHU4NzVhXHU4NzViXHU4NzVjXHU4NzVkXHU4NzVlXHU4NzVmXHU4NzYxXHU4NzYyXHU4NzY2XHU4NzY3XHU4NzY4XHU4NzY5XHU4NzZhXHU4NzZiXHU4NzZjXHU4NzZkXHU4NzZmXHU4NzcxXHU4NzcyXHU4NzczXHU4Nzc1XHVmZmZkXHU4Nzc3XHU4Nzc4XHU4Nzc5XHU4Nzdh''@;'; put 'put ''XHU4NzdmXHU4NzgwXHU4NzgxXHU4Nzg0XHU4Nzg2XHU4Nzg3XHU4Nzg5XHU4NzhhXHU4NzhjXHU4NzhlXHU4NzhmXHU4NzkwXHU4NzkxXHU4NzkyXHU4Nzk0XHU4Nzk1XHU4Nzk2XHU4Nzk4XHU4Nzk5XHU4NzlhXHU4NzliXHU4NzljXHU4NzlkXHU4NzllXHU4N2EwXHU4N2ExXHU4N2EyXHU4''@;'; put 'put ''N2EzXHU4N2E0XHU1ZGNkXHU1ZmFlXHU1MzcxXHU5N2U2XHU4ZmRkXHU2ODQ1XHU1NmY0XHU1NTJmXHU2MGRmXHU0ZTNhXHU2ZjRkXHU3ZWY0XHU4MmM3XHU4NDBlXHU1OWQ0XHU0ZjFmXHU0ZjJhXHU1YzNlXHU3ZWFjXHU2NzJhXHU4NTFhXHU1NDczXHU3NTRmXHU4MGMzXHU1NTgyXHU5YjRm''@;'; put 'put ''XHU0ZjRkXHU2ZTJkXHU4YzEzXHU1YzA5XHU2MTcwXHU1MzZiXHU3NjFmXHU2ZTI5XHU4NjhhXHU2NTg3XHU5NWZiXHU3ZWI5XHU1NDNiXHU3YTMzXHU3ZDBhXHU5NWVlXHU1NWUxXHU3ZmMxXHU3NGVlXHU2MzFkXHU4NzE3XHU2ZGExXHU3YTlkXHU2MjExXHU2NWExXHU1MzY3XHU2M2UxXHU2''@;'; put 'put ''YzgzXHU1ZGViXHU1NDVjXHU5NGE4XHU0ZTRjXHU2YzYxXHU4YmVjXHU1YzRiXHU2NWUwXHU4MjljXHU2OGE3XHU1NDNlXHU1NDM0XHU2YmNiXHU2YjY2XHU0ZTk0XHU2MzQyXHU1MzQ4XHU4MjFlXHU0ZjBkXHU0ZmFlXHU1NzVlXHU2MjBhXHU5NmZlXHU2NjY0XHU3MjY5XHU1MmZmXHU1MmEx''@;'; put 'put ''XHU2MDlmXHU4YmVmXHU2NjE0XHU3MTk5XHU2NzkwXHU4OTdmXHU3ODUyXHU3N2ZkXHU2NjcwXHU1NjNiXHU1NDM4XHU5NTIxXHU3MjdhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjA2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDZdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIwNl1b''@;'; put 'put ''RV1dPTUyNzM2K0UsTFs1MjczNitFXT1CWzIwNl1bRV0pO2ZvcihCWzIwN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODdhNVx1ODdhNlx1ODdhN1x1ODdhOVx1ODdhYVx1ODdhZVx1ODdiMFx1ODdiMVx1ODdiMlx1ODdiNFx1ODdi''@;'; put 'put ''Nlx1ODdiN1x1ODdiOFx1ODdiOVx1ODdiYlx1ODdiY1x1ODdiZVx1ODdiZlx1ODdjMVx1ODdjMlx1ODdjM1x1ODdjNFx1ODdjNVx1ODdjN1x1ODdjOFx1ODdjOVx1ODdjY1x1ODdjZFx1ODdjZVx1ODdjZlx1ODdkMFx1ODdkNFx1ODdkNVx1ODdkNlx1ODdkN1x1ODdkOFx1ODdkOVx1ODdkYVx1''@;'; put 'put ''ODdkY1x1ODdkZFx1ODdkZVx1ODdkZlx1ODdlMVx1ODdlMlx1ODdlM1x1ODdlNFx1ODdlNlx1ODdlN1x1ODdlOFx1ODdlOVx1ODdlYlx1ODdlY1x1ODdlZFx1ODdlZlx1ODdmMFx1ODdmMVx1ODdmMlx1ODdmM1x1ODdmNFx1ODdmNVx1ODdmNlx1ODdmN1x1ODdmOFx1ZmZmZFx1ODdmYVx1ODdm''@;'; put 'put ''Ylx1ODdmY1x1ODdmZFx1ODdmZlx1ODgwMFx1ODgwMVx1ODgwMlx1ODgwNFx1ODgwNVx1ODgwNlx1ODgwN1x1ODgwOFx1ODgwOVx1ODgwYlx1ODgwY1x1ODgwZFx1ODgwZVx1ODgwZlx1ODgxMFx1ODgxMVx1ODgxMlx1ODgxNFx1ODgxN1x1ODgxOFx1ODgxOVx1ODgxYVx1ODgxY1x1ODgxZFx1''@;'; put 'put ''ODgxZVx1ODgxZlx1ODgyMFx1ODgyM1x1N2EwMFx1NjA2Zlx1NWUwY1x1NjA4OVx1ODE5ZFx1NTkxNVx1NjBkY1x1NzE4NFx1NzBlZlx1NmVhYVx1NmM1MFx1NzI4MFx1NmE4NFx1ODhhZFx1NWUyZFx1NGU2MFx1NWFiM1x1NTU5Y1x1OTRlM1x1NmQxN1x1N2NmYlx1OTY5OVx1NjIwZlx1N2Vj''@;'; put 'put ''Nlx1Nzc4ZVx1ODY3ZVx1NTMyM1x1OTcxZVx1OGY5Nlx1NjY4N1x1NWNlMVx1NGZhMFx1NzJlZFx1NGUwYlx1NTNhNlx1NTkwZlx1NTQxM1x1NjM4MFx1OTUyOFx1NTE0OFx1NGVkOVx1OWM5Y1x1N2VhNFx1NTRiOFx1OGQyNFx1ODg1NFx1ODIzN1x1OTVmMlx1NmQ4ZVx1NWYyNlx1NWFjY1x1''@;'; put 'put ''NjYzZVx1OTY2OVx1NzNiMFx1NzMyZVx1NTNiZlx1ODE3YVx1OTk4NVx1N2ZhMVx1NWJhYVx1OTY3N1x1OTY1MFx1N2ViZlx1NzZmOFx1NTNhMlx1OTU3Nlx1OTk5OVx1N2JiMVx1ODk0NFx1NmU1OFx1NGU2MVx1N2ZkNFx1Nzk2NVx1OGJlNlx1NjBmM1x1NTRjZFx1NGVhYlx1OTg3OVx1NWRm''@;'; put 'put ''N1x1NmE2MVx1NTBjZlx1NTQxMVx1OGM2MVx1ODQyN1x1Nzg1ZFx1OTcwNFx1NTI0YVx1NTRlZVx1NTZhM1x1OTUwMFx1NmQ4OFx1NWJiNVx1NmRjNlx1NjY1M1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwN10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjA3XVtFXS5jaGFyQ29kZUF0KDAp''@;'; put 'put ''JiYobWVbQlsyMDddW0VdXT01Mjk5MitFLExbNTI5OTIrRV09QlsyMDddW0VdKTtmb3IoQlsyMDhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg4MjRcdTg4MjVcdTg4MjZcdTg4MjdcdTg4MjhcdTg4MjlcdTg4MmFcdTg4MmJcdTg4''@;'; put 'put ''MmNcdTg4MmRcdTg4MmVcdTg4MmZcdTg4MzBcdTg4MzFcdTg4MzNcdTg4MzRcdTg4MzVcdTg4MzZcdTg4MzdcdTg4MzhcdTg4M2FcdTg4M2JcdTg4M2RcdTg4M2VcdTg4M2ZcdTg4NDFcdTg4NDJcdTg4NDNcdTg4NDZcdTg4NDdcdTg4NDhcdTg4NDlcdTg4NGFcdTg4NGJcdTg4NGVcdTg4NGZc''@;'; put 'put ''dTg4NTBcdTg4NTFcdTg4NTJcdTg4NTNcdTg4NTVcdTg4NTZcdTg4NThcdTg4NWFcdTg4NWJcdTg4NWNcdTg4NWRcdTg4NWVcdTg4NWZcdTg4NjBcdTg4NjZcdTg4NjdcdTg4NmFcdTg4NmRcdTg4NmZcdTg4NzFcdTg4NzNcdTg4NzRcdTg4NzVcdTg4NzZcdTg4NzhcdTg4NzlcdTg4N2FcdWZm''@;'; put 'put ''ZmRcdTg4N2JcdTg4N2NcdTg4ODBcdTg4ODNcdTg4ODZcdTg4ODdcdTg4ODlcdTg4OGFcdTg4OGNcdTg4OGVcdTg4OGZcdTg4OTBcdTg4OTFcdTg4OTNcdTg4OTRcdTg4OTVcdTg4OTdcdTg4OThcdTg4OTlcdTg4OWFcdTg4OWJcdTg4OWRcdTg4OWVcdTg4OWZcdTg4YTBcdTg4YTFcdTg4YTNc''@;'; put 'put ''dTg4YTVcdTg4YTZcdTg4YTdcdTg4YThcdTg4YTlcdTg4YWFcdTVjMGZcdTViNWRcdTY4MjFcdTgwOTZcdTU1NzhcdTdiMTFcdTY1NDhcdTY5NTRcdTRlOWJcdTZiNDdcdTg3NGVcdTk3OGJcdTUzNGZcdTYzMWZcdTY0M2FcdTkwYWFcdTY1OWNcdTgwYzFcdThjMTBcdTUxOTlcdTY4YjBcdTUz''@;'; put 'put ''NzhcdTg3ZjlcdTYxYzhcdTZjYzRcdTZjZmJcdThjMjJcdTVjNTFcdTg1YWFcdTgyYWZcdTk1MGNcdTZiMjNcdThmOWJcdTY1YjBcdTVmZmJcdTVmYzNcdTRmZTFcdTg4NDVcdTY2MWZcdTgxNjVcdTczMjlcdTYwZmFcdTUxNzRcdTUyMTFcdTU3OGJcdTVmNjJcdTkwYTJcdTg4NGNcdTkxOTJc''@;'; put 'put ''dTVlNzhcdTY3NGZcdTYwMjdcdTU5ZDNcdTUxNDRcdTUxZjZcdTgwZjhcdTUzMDhcdTZjNzlcdTk2YzRcdTcxOGFcdTRmMTFcdTRmZWVcdTdmOWVcdTY3M2RcdTU1YzVcdTk1MDhcdTc5YzBcdTg4OTZcdTdlZTNcdTU4OWZcdTYyMGNcdTk3MDBcdTg2NWFcdTU2MThcdTk4N2JcdTVmOTBcdThi''@;'; put 'put ''YjhcdTg0YzRcdTkxNTdcdTUzZDlcdTY1ZWRcdTVlOGZcdTc1NWNcdTYwNjRcdTdkNmVcdTVhN2ZcdTdlZWFcdTdlZWRcdThmNjlcdTU1YTdcdTViYTNcdTYwYWNcdTY1Y2JcdTczODRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwOF1bRV0u''@;'; put 'put ''Y2hhckNvZGVBdCgwKSYmKG1lW0JbMjA4XVtFXV09NTMyNDgrRSxMWzUzMjQ4K0VdPUJbMjA4XVtFXSk7Zm9yKEJbMjA5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4OGFjXHU4OGFlXHU4OGFmXHU4OGIwXHU4OGIyXHU4OGIzXHU4''@;'; put 'put ''OGI0XHU4OGI1XHU4OGI2XHU4OGI4XHU4OGI5XHU4OGJhXHU4OGJiXHU4OGJkXHU4OGJlXHU4OGJmXHU4OGMwXHU4OGMzXHU4OGM0XHU4OGM3XHU4OGM4XHU4OGNhXHU4OGNiXHU4OGNjXHU4OGNkXHU4OGNmXHU4OGQwXHU4OGQxXHU4OGQzXHU4OGQ2XHU4OGQ3XHU4OGRhXHU4OGRiXHU4OGRj''@;'; put 'put ''XHU4OGRkXHU4OGRlXHU4OGUwXHU4OGUxXHU4OGU2XHU4OGU3XHU4OGU5XHU4OGVhXHU4OGViXHU4OGVjXHU4OGVkXHU4OGVlXHU4OGVmXHU4OGYyXHU4OGY1XHU4OGY2XHU4OGY3XHU4OGZhXHU4OGZiXHU4OGZkXHU4OGZmXHU4OTAwXHU4OTAxXHU4OTAzXHU4OTA0XHU4OTA1XHU4OTA2XHU4''@;'; put 'put ''OTA3XHU4OTA4XHVmZmZkXHU4OTA5XHU4OTBiXHU4OTBjXHU4OTBkXHU4OTBlXHU4OTBmXHU4OTExXHU4OTE0XHU4OTE1XHU4OTE2XHU4OTE3XHU4OTE4XHU4OTFjXHU4OTFkXHU4OTFlXHU4OTFmXHU4OTIwXHU4OTIyXHU4OTIzXHU4OTI0XHU4OTI2XHU4OTI3XHU4OTI4XHU4OTI5XHU4OTJj''@;'; put 'put ''XHU4OTJkXHU4OTJlXHU4OTJmXHU4OTMxXHU4OTMyXHU4OTMzXHU4OTM1XHU4OTM3XHU5MDA5XHU3NjYzXHU3NzI5XHU3ZWRhXHU5Nzc0XHU4NTliXHU1YjY2XHU3YTc0XHU5NmVhXHU4ODQwXHU1MmNiXHU3MThmXHU1ZmFhXHU2NWVjXHU4YmUyXHU1YmZiXHU5YTZmXHU1ZGUxXHU2Yjg5XHU2''@;'; put 'put ''YzViXHU4YmFkXHU4YmFmXHU5MDBhXHU4ZmM1XHU1MzhiXHU2MmJjXHU5ZTI2XHU5ZTJkXHU1NDQwXHU0ZTJiXHU4MmJkXHU3MjU5XHU4NjljXHU1ZDE2XHU4ODU5XHU2ZGFmXHU5NmM1XHU1NGQxXHU0ZTlhXHU4YmI2XHU3MTA5XHU1NGJkXHU5NjA5XHU3MGRmXHU2ZGY5XHU3NmQwXHU0ZTI1''@;'; put 'put ''XHU3ODE0XHU4NzEyXHU1Y2E5XHU1ZWY2XHU4YTAwXHU5ODljXHU5NjBlXHU3MDhlXHU2Y2JmXHU1OTQ0XHU2M2E5XHU3NzNjXHU4ODRkXHU2ZjE0XHU4MjczXHU1ODMwXHU3MWQ1XHU1MzhjXHU3ODFhXHU5NmMxXHU1NTAxXHU1ZjY2XHU3MTMwXHU1YmI0XHU4YzFhXHU5YThjXHU2YjgzXHU1''@;'; put 'put ''OTJlXHU5ZTJmXHU3OWU3XHU2NzY4XHU2MjZjXHU0ZjZmXHU3NWExXHU3ZjhhXHU2ZDBiXHU5NjMzXHU2YzI3XHU0ZWYwXHU3NWQyXHU1MTdiXHU2ODM3XHU2ZjNlXHU5MDgwXHU4MTcwXHU1OTk2XHU3NDc2XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjA5XS5sZW5ndGg7KytFKTY1NTMz''@;'; put 'put ''IT09QlsyMDldW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIwOV1bRV1dPTUzNTA0K0UsTFs1MzUwNCtFXT1CWzIwOV1bRV0pO2ZvcihCWzIxMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODkzOFx1ODkzOVx1ODkzYVx1ODkzYlx1''@;'; put 'put ''ODkzY1x1ODkzZFx1ODkzZVx1ODkzZlx1ODk0MFx1ODk0Mlx1ODk0M1x1ODk0NVx1ODk0Nlx1ODk0N1x1ODk0OFx1ODk0OVx1ODk0YVx1ODk0Ylx1ODk0Y1x1ODk0ZFx1ODk0ZVx1ODk0Zlx1ODk1MFx1ODk1MVx1ODk1Mlx1ODk1M1x1ODk1NFx1ODk1NVx1ODk1Nlx1ODk1N1x1ODk1OFx1ODk1''@;'; put 'put ''OVx1ODk1YVx1ODk1Ylx1ODk1Y1x1ODk1ZFx1ODk2MFx1ODk2MVx1ODk2Mlx1ODk2M1x1ODk2NFx1ODk2NVx1ODk2N1x1ODk2OFx1ODk2OVx1ODk2YVx1ODk2Ylx1ODk2Y1x1ODk2ZFx1ODk2ZVx1ODk2Zlx1ODk3MFx1ODk3MVx1ODk3Mlx1ODk3M1x1ODk3NFx1ODk3NVx1ODk3Nlx1ODk3N1x1''@;'; put 'put ''ODk3OFx1ODk3OVx1ODk3YVx1ODk3Y1x1ZmZmZFx1ODk3ZFx1ODk3ZVx1ODk4MFx1ODk4Mlx1ODk4NFx1ODk4NVx1ODk4N1x1ODk4OFx1ODk4OVx1ODk4YVx1ODk4Ylx1ODk4Y1x1ODk4ZFx1ODk4ZVx1ODk4Zlx1ODk5MFx1ODk5MVx1ODk5Mlx1ODk5M1x1ODk5NFx1ODk5NVx1ODk5Nlx1ODk5''@;'; put 'put ''N1x1ODk5OFx1ODk5OVx1ODk5YVx1ODk5Ylx1ODk5Y1x1ODk5ZFx1ODk5ZVx1ODk5Zlx1ODlhMFx1ODlhMVx1NjQ0N1x1NWMyN1x1OTA2NVx1N2E5MVx1OGMyM1x1NTlkYVx1NTRhY1x1ODIwMFx1ODM2Zlx1ODk4MVx1ODAwMFx1NjkzMFx1NTY0ZVx1ODAzNlx1NzIzN1x1OTFjZVx1NTFiNlx1''@;'; put 'put ''NGU1Zlx1OTg3NVx1NjM5Nlx1NGUxYVx1NTNmNlx1NjZmM1x1ODE0Ylx1NTkxY1x1NmRiMlx1NGUwMFx1NThmOVx1NTMzYlx1NjNkNlx1OTRmMVx1NGY5ZFx1NGYwYVx1ODg2M1x1OTg5MFx1NTkzN1x1OTA1N1x1NzlmYlx1NGVlYVx1ODBmMFx1NzU5MVx1NmM4Mlx1NWI5Y1x1NTllOFx1NWY1''@;'; put 'put ''ZFx1NjkwNVx1ODY4MVx1NTAxYVx1NWRmMlx1NGU1OVx1NzdlM1x1NGVlNVx1ODI3YVx1NjI5MVx1NjYxM1x1OTA5MVx1NWM3OVx1NGViZlx1NWY3OVx1ODFjNlx1OTAzOFx1ODA4NFx1NzVhYlx1NGVhNlx1ODhkNFx1NjEwZlx1NmJjNVx1NWZjNlx1NGU0OVx1NzZjYVx1NmVhMlx1OGJlM1x1''@;'; put 'put ''OGJhZVx1OGMwYVx1OGJkMVx1NWYwMlx1N2ZmY1x1N2ZjY1x1N2VjZVx1ODMzNVx1ODM2Ylx1NTZlMFx1NmJiN1x1OTdmM1x1OTYzNFx1NTlmYlx1NTQxZlx1OTRmNlx1NmRlYlx1NWJjNVx1OTk2ZVx1NWMzOVx1NWYxNVx1OTY5MFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxMF0ubGVu''@;'; put 'put ''Z3RoOysrRSk2NTUzMyE9PUJbMjEwXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMTBdW0VdXT01Mzc2MCtFLExbNTM3NjArRV09QlsyMTBdW0VdKTtmb3IoQlsyMTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg5YTJcdTg5YTNc''@;'; put 'put ''dTg5YTRcdTg5YTVcdTg5YTZcdTg5YTdcdTg5YThcdTg5YTlcdTg5YWFcdTg5YWJcdTg5YWNcdTg5YWRcdTg5YWVcdTg5YWZcdTg5YjBcdTg5YjFcdTg5YjJcdTg5YjNcdTg5YjRcdTg5YjVcdTg5YjZcdTg5YjdcdTg5YjhcdTg5YjlcdTg5YmFcdTg5YmJcdTg5YmNcdTg5YmRcdTg5YmVcdTg5''@;'; put 'put ''YmZcdTg5YzBcdTg5YzNcdTg5Y2RcdTg5ZDNcdTg5ZDRcdTg5ZDVcdTg5ZDdcdTg5ZDhcdTg5ZDlcdTg5ZGJcdTg5ZGRcdTg5ZGZcdTg5ZTBcdTg5ZTFcdTg5ZTJcdTg5ZTRcdTg5ZTdcdTg5ZThcdTg5ZTlcdTg5ZWFcdTg5ZWNcdTg5ZWRcdTg5ZWVcdTg5ZjBcdTg5ZjFcdTg5ZjJcdTg5ZjRc''@;'; put 'put ''dTg5ZjVcdTg5ZjZcdTg5ZjdcdTg5ZjhcdTg5ZjlcdTg5ZmFcdWZmZmRcdTg5ZmJcdTg5ZmNcdTg5ZmRcdTg5ZmVcdTg5ZmZcdThhMDFcdThhMDJcdThhMDNcdThhMDRcdThhMDVcdThhMDZcdThhMDhcdThhMDlcdThhMGFcdThhMGJcdThhMGNcdThhMGRcdThhMGVcdThhMGZcdThhMTBcdThh''@;'; put 'put ''MTFcdThhMTJcdThhMTNcdThhMTRcdThhMTVcdThhMTZcdThhMTdcdThhMThcdThhMTlcdThhMWFcdThhMWJcdThhMWNcdThhMWRcdTUzNzBcdTgyZjFcdTZhMzFcdTVhNzRcdTllNzBcdTVlOTRcdTdmMjhcdTgzYjlcdTg0MjRcdTg0MjVcdTgzNjdcdTg3NDdcdThmY2VcdThkNjJcdTc2Yzhc''@;'; put 'put ''dTVmNzFcdTk4OTZcdTc4NmNcdTY2MjBcdTU0ZGZcdTYyZTVcdTRmNjNcdTgxYzNcdTc1YzhcdTVlYjhcdTk2Y2RcdThlMGFcdTg2ZjlcdTU0OGZcdTZjZjNcdTZkOGNcdTZjMzhcdTYwN2ZcdTUyYzdcdTc1MjhcdTVlN2RcdTRmMThcdTYwYTBcdTVmZTdcdTVjMjRcdTc1MzFcdTkwYWVcdTk0''@;'; put 'put ''YzBcdTcyYjlcdTZjYjlcdTZlMzhcdTkxNDlcdTY3MDlcdTUzY2JcdTUzZjNcdTRmNTFcdTkxYzlcdThiZjFcdTUzYzhcdTVlN2NcdThmYzJcdTZkZTRcdTRlOGVcdTc2YzJcdTY5ODZcdTg2NWVcdTYxMWFcdTgyMDZcdTRmNTlcdTRmZGVcdTkwM2VcdTljN2NcdTYxMDlcdTZlMWRcdTZlMTRc''@;'; put 'put ''dTk2ODVcdTRlODhcdTVhMzFcdTk2ZThcdTRlMGVcdTVjN2ZcdTc5YjlcdTViODdcdThiZWRcdTdmYmRcdTczODlcdTU3ZGZcdTgyOGJcdTkwYzFcdTU0MDFcdTkwNDdcdTU1YmJcdTVjZWFcdTVmYTFcdTYxMDhcdTZiMzJcdTcyZjFcdTgwYjJcdThhODlcdWZmZmQiLnNwbGl0KCIiKSxFPTA7''@;'; put 'put ''RSE9QlsyMTFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxMV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjExXVtFXV09NTQwMTYrRSxMWzU0MDE2K0VdPUJbMjExXVtFXSk7Zm9yKEJbMjEyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHU4YTFlXHU4YTFmXHU4YTIwXHU4YTIxXHU4YTIyXHU4YTIzXHU4YTI0XHU4YTI1XHU4YTI2XHU4YTI3XHU4YTI4XHU4YTI5XHU4YTJhXHU4YTJiXHU4YTJjXHU4YTJkXHU4YTJlXHU4YTJmXHU4YTMwXHU4YTMxXHU4YTMyXHU4YTMzXHU4YTM0XHU4YTM1XHU4YTM2XHU4YTM3XHU4YTM4XHU4''@;'; put 'put ''YTM5XHU4YTNhXHU4YTNiXHU4YTNjXHU4YTNkXHU4YTNmXHU4YTQwXHU4YTQxXHU4YTQyXHU4YTQzXHU4YTQ0XHU4YTQ1XHU4YTQ2XHU4YTQ3XHU4YTQ5XHU4YTRhXHU4YTRiXHU4YTRjXHU4YTRkXHU4YTRlXHU4YTRmXHU4YTUwXHU4YTUxXHU4YTUyXHU4YTUzXHU4YTU0XHU4YTU1XHU4YTU2''@;'; put 'put ''XHU4YTU3XHU4YTU4XHU4YTU5XHU4YTVhXHU4YTViXHU4YTVjXHU4YTVkXHU4YTVlXHVmZmZkXHU4YTVmXHU4YTYwXHU4YTYxXHU4YTYyXHU4YTYzXHU4YTY0XHU4YTY1XHU4YTY2XHU4YTY3XHU4YTY4XHU4YTY5XHU4YTZhXHU4YTZiXHU4YTZjXHU4YTZkXHU4YTZlXHU4YTZmXHU4YTcwXHU4''@;'; put 'put ''YTcxXHU4YTcyXHU4YTczXHU4YTc0XHU4YTc1XHU4YTc2XHU4YTc3XHU4YTc4XHU4YTdhXHU4YTdiXHU4YTdjXHU4YTdkXHU4YTdlXHU4YTdmXHU4YTgwXHU2ZDc0XHU1YmQzXHU4OGQ1XHU5ODg0XHU4YzZiXHU5YTZkXHU5ZTMzXHU2ZTBhXHU1MWE0XHU1MTQzXHU1N2EzXHU4ODgxXHU1Mzlm''@;'; put 'put ''XHU2M2Y0XHU4Zjk1XHU1NmVkXHU1NDU4XHU1NzA2XHU3MzNmXHU2ZTkwXHU3ZjE4XHU4ZmRjXHU4MmQxXHU2MTNmXHU2MDI4XHU5NjYyXHU2NmYwXHU3ZWE2XHU4ZDhhXHU4ZGMzXHU5NGE1XHU1Y2IzXHU3Y2E0XHU2NzA4XHU2MGE2XHU5NjA1XHU4MDE4XHU0ZTkxXHU5MGU3XHU1MzAwXHU5''@;'; put 'put ''NjY4XHU1MTQxXHU4ZmQwXHU4NTc0XHU5MTVkXHU2NjU1XHU5N2Y1XHU1YjU1XHU1MzFkXHU3ODM4XHU2NzQyXHU2ODNkXHU1NGM5XHU3MDdlXHU1YmIwXHU4ZjdkXHU1MThkXHU1NzI4XHU1NGIxXHU2NTEyXHU2NjgyXHU4ZDVlXHU4ZDQzXHU4MTBmXHU4NDZjXHU5MDZkXHU3Y2RmXHU1MWZm''@;'; put 'put ''XHU4NWZiXHU2N2EzXHU2NWU5XHU2ZmExXHU4NmE0XHU4ZTgxXHU1NjZhXHU5MDIwXHU3NjgyXHU3MDc2XHU3MWU1XHU4ZDIzXHU2MmU5XHU1MjE5XHU2Y2ZkXHU4ZDNjXHU2MDBlXHU1ODllXHU2MThlXHU2NmZlXHU4ZDYwXHU2MjRlXHU1NWIzXHU2ZTIzXHU2NzJkXHU4ZjY3XHVmZmZkIi5z''@;'; put 'put ''cGxpdCgiIiksRT0wO0UhPUJbMjEyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMTJdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIxMl1bRV1dPTU0MjcyK0UsTFs1NDI3MitFXT1CWzIxMl1bRV0pO2ZvcihCWzIxM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1OGE4MVx1OGE4Mlx1OGE4M1x1OGE4NFx1OGE4NVx1OGE4Nlx1OGE4N1x1OGE4OFx1OGE4Ylx1OGE4Y1x1OGE4ZFx1OGE4ZVx1OGE4Zlx1OGE5MFx1OGE5MVx1OGE5Mlx1OGE5NFx1OGE5NVx1OGE5Nlx1OGE5N1x1OGE5OFx1OGE5OVx1OGE5YVx1OGE5Ylx1OGE5Y1x1''@;'; put 'put ''OGE5ZFx1OGE5ZVx1OGE5Zlx1OGFhMFx1OGFhMVx1OGFhMlx1OGFhM1x1OGFhNFx1OGFhNVx1OGFhNlx1OGFhN1x1OGFhOFx1OGFhOVx1OGFhYVx1OGFhYlx1OGFhY1x1OGFhZFx1OGFhZVx1OGFhZlx1OGFiMFx1OGFiMVx1OGFiMlx1OGFiM1x1OGFiNFx1OGFiNVx1OGFiNlx1OGFiN1x1OGFi''@;'; put 'put ''OFx1OGFiOVx1OGFiYVx1OGFiYlx1OGFiY1x1OGFiZFx1OGFiZVx1OGFiZlx1OGFjMFx1OGFjMVx1OGFjMlx1ZmZmZFx1OGFjM1x1OGFjNFx1OGFjNVx1OGFjNlx1OGFjN1x1OGFjOFx1OGFjOVx1OGFjYVx1OGFjYlx1OGFjY1x1OGFjZFx1OGFjZVx1OGFjZlx1OGFkMFx1OGFkMVx1OGFkMlx1''@;'; put 'put ''OGFkM1x1OGFkNFx1OGFkNVx1OGFkNlx1OGFkN1x1OGFkOFx1OGFkOVx1OGFkYVx1OGFkYlx1OGFkY1x1OGFkZFx1OGFkZVx1OGFkZlx1OGFlMFx1OGFlMVx1OGFlMlx1OGFlM1x1OTRlMVx1OTVmOFx1NzcyOFx1NjgwNVx1NjlhOFx1NTQ4Ylx1NGU0ZFx1NzBiOFx1OGJjOFx1NjQ1OFx1NjU4''@;'; put 'put ''Ylx1NWI4NVx1N2E4NFx1NTAzYVx1NWJlOFx1NzdiYlx1NmJlMVx1OGE3OVx1N2M5OFx1NmNiZVx1NzZjZlx1NjVhOVx1OGY5N1x1NWQyZFx1NWM1NVx1ODYzOFx1NjgwOFx1NTM2MFx1NjIxOFx1N2FkOVx1NmU1Ylx1N2VmZFx1NmExZlx1N2FlMFx1NWY3MFx1NmYzM1x1NWYyMFx1NjM4Y1x1''@;'; put 'put ''NmRhOFx1Njc1Nlx1NGUwOFx1NWUxMFx1OGQyNlx1NGVkN1x1ODBjMFx1NzYzNFx1OTY5Y1x1NjJkYlx1NjYyZFx1NjI3ZVx1NmNiY1x1OGQ3NVx1NzE2N1x1N2Y2OVx1NTE0Nlx1ODA4N1x1NTNlY1x1OTA2ZVx1NjI5OFx1NTRmMlx1ODZmMFx1OGY5OVx1ODAwNVx1OTUxN1x1ODUxN1x1OGZk''@;'; put 'put ''OVx1NmQ1OVx1NzNjZFx1NjU5Zlx1NzcxZlx1NzUwNFx1NzgyN1x1ODFmYlx1OGQxZVx1OTQ4OFx1NGZhNlx1Njc5NVx1NzViOVx1OGJjYVx1OTcwN1x1NjMyZlx1OTU0N1x1OTYzNVx1ODRiOFx1NjMyM1x1Nzc0MVx1NWY4MVx1NzJmMFx1NGU4OVx1NjAxNFx1NjU3NFx1NjJlZlx1NmI2M1x1''@;'; put 'put ''NjUzZlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxM10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjEzXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMTNdW0VdXT01NDUyOCtFLExbNTQ1MjgrRV09QlsyMTNdW0VdKTtmb3IoQlsyMTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThhZTRcdThhZTVcdThhZTZcdThhZTdcdThhZThcdThhZTlcdThhZWFcdThhZWJcdThhZWNcdThhZWRcdThhZWVcdThhZWZcdThhZjBcdThhZjFcdThhZjJcdThhZjNcdThhZjRcdThhZjVcdThhZjZcdThhZjdcdThhZjhcdThhZjlcdThhZmFc''@;'; put 'put ''dThhZmJcdThhZmNcdThhZmRcdThhZmVcdThhZmZcdThiMDBcdThiMDFcdThiMDJcdThiMDNcdThiMDRcdThiMDVcdThiMDZcdThiMDhcdThiMDlcdThiMGFcdThiMGJcdThiMGNcdThiMGRcdThiMGVcdThiMGZcdThiMTBcdThiMTFcdThiMTJcdThiMTNcdThiMTRcdThiMTVcdThiMTZcdThi''@;'; put 'put ''MTdcdThiMThcdThiMTlcdThiMWFcdThiMWJcdThiMWNcdThiMWRcdThiMWVcdThiMWZcdThiMjBcdThiMjFcdThiMjJcdThiMjNcdWZmZmRcdThiMjRcdThiMjVcdThiMjdcdThiMjhcdThiMjlcdThiMmFcdThiMmJcdThiMmNcdThiMmRcdThiMmVcdThiMmZcdThiMzBcdThiMzFcdThiMzJc''@;'; put 'put ''dThiMzNcdThiMzRcdThiMzVcdThiMzZcdThiMzdcdThiMzhcdThiMzlcdThiM2FcdThiM2JcdThiM2NcdThiM2RcdThiM2VcdThiM2ZcdThiNDBcdThiNDFcdThiNDJcdThiNDNcdThiNDRcdThiNDVcdTVlMjdcdTc1YzdcdTkwZDFcdThiYzFcdTgyOWRcdTY3OWRcdTY1MmZcdTU0MzFcdTg3''@;'; put 'put ''MThcdTc3ZTVcdTgwYTJcdTgxMDJcdTZjNDFcdTRlNGJcdTdlYzdcdTgwNGNcdTc2ZjRcdTY5MGRcdTZiOTZcdTYyNjdcdTUwM2NcdTRmODRcdTU3NDBcdTYzMDdcdTZiNjJcdThkYmVcdTUzZWFcdTY1ZThcdTdlYjhcdTVmZDdcdTYzMWFcdTYzYjdcdTgxZjNcdTgxZjRcdTdmNmVcdTVlMWNc''@;'; put 'put ''dTVjZDlcdTUyMzZcdTY2N2FcdTc5ZTlcdTdhMWFcdThkMjhcdTcwOTlcdTc1ZDRcdTZlZGVcdTZjYmJcdTdhOTJcdTRlMmRcdTc2YzVcdTVmZTBcdTk0OWZcdTg4NzdcdTdlYzhcdTc5Y2RcdTgwYmZcdTkxY2RcdTRlZjJcdTRmMTdcdTgyMWZcdTU0NjhcdTVkZGVcdTZkMzJcdThiY2NcdTdj''@;'; put 'put ''YTVcdThmNzRcdTgwOThcdTVlMWFcdTU0OTJcdTc2YjFcdTViOTlcdTY2M2NcdTlhYTRcdTczZTBcdTY4MmFcdTg2ZGJcdTY3MzFcdTczMmFcdThiZjhcdThiZGJcdTkwMTBcdTdhZjlcdTcwZGJcdTcxNmVcdTYyYzRcdTc3YTlcdTU2MzFcdTRlM2JcdTg0NTdcdTY3ZjFcdTUyYTlcdTg2YzBc''@;'; put 'put ''dThkMmVcdTk0ZjhcdTdiNTFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxNF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjE0XVtFXV09NTQ3ODQrRSxMWzU0Nzg0K0VdPUJbMjE0XVtFXSk7Zm9yKEJbMjE1XT0iXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YjQ2XHU4YjQ3XHU4YjQ4XHU4YjQ5XHU4YjRhXHU4YjRiXHU4YjRjXHU4YjRkXHU4YjRlXHU4YjRmXHU4YjUwXHU4YjUxXHU4YjUyXHU4YjUzXHU4YjU0XHU4YjU1XHU4YjU2XHU4YjU3XHU4YjU4XHU4YjU5XHU4YjVh''@;'; put 'put ''XHU4YjViXHU4YjVjXHU4YjVkXHU4YjVlXHU4YjVmXHU4YjYwXHU4YjYxXHU4YjYyXHU4YjYzXHU4YjY0XHU4YjY1XHU4YjY3XHU4YjY4XHU4YjY5XHU4YjZhXHU4YjZiXHU4YjZkXHU4YjZlXHU4YjZmXHU4YjcwXHU4YjcxXHU4YjcyXHU4YjczXHU4Yjc0XHU4Yjc1XHU4Yjc2XHU4Yjc3XHU4''@;'; put 'put ''Yjc4XHU4Yjc5XHU4YjdhXHU4YjdiXHU4YjdjXHU4YjdkXHU4YjdlXHU4YjdmXHU4YjgwXHU4YjgxXHU4YjgyXHU4YjgzXHU4Yjg0XHU4Yjg1XHU4Yjg2XHVmZmZkXHU4Yjg3XHU4Yjg4XHU4Yjg5XHU4YjhhXHU4YjhiXHU4YjhjXHU4YjhkXHU4YjhlXHU4YjhmXHU4YjkwXHU4YjkxXHU4Yjky''@;'; put 'put ''XHU4YjkzXHU4Yjk0XHU4Yjk1XHU4Yjk2XHU4Yjk3XHU4Yjk4XHU4Yjk5XHU4YjlhXHU4YjliXHU4YjljXHU4YjlkXHU4YjllXHU4YjlmXHU4YmFjXHU4YmIxXHU4YmJiXHU4YmM3XHU4YmQwXHU4YmVhXHU4YzA5XHU4YzFlXHU0ZjRmXHU2Y2U4XHU3OTVkXHU5YTdiXHU2MjkzXHU3MjJhXHU2''@;'; put 'put ''MmZkXHU0ZTEzXHU3ODE2XHU4ZjZjXHU2NGIwXHU4ZDVhXHU3YmM2XHU2ODY5XHU1ZTg0XHU4OGM1XHU1OTg2XHU2NDllXHU1OGVlXHU3MmI2XHU2OTBlXHU5NTI1XHU4ZmZkXHU4ZDU4XHU1NzYwXHU3ZjAwXHU4YzA2XHU1MWM2XHU2MzQ5XHU2MmQ5XHU1MzUzXHU2ODRjXHU3NDIyXHU4MzAx''@;'; put 'put ''XHU5MTRjXHU1NTQ0XHU3NzQwXHU3MDdjXHU2ZDRhXHU1MTc5XHU1NGE4XHU4ZDQ0XHU1OWZmXHU2ZWNiXHU2ZGM0XHU1YjVjXHU3ZDJiXHU0ZWQ0XHU3YzdkXHU2ZWQzXHU1YjUwXHU4MWVhXHU2ZTBkXHU1YjU3XHU5YjAzXHU2OGQ1XHU4ZTJhXHU1Yjk3XHU3ZWZjXHU2MDNiXHU3ZWI1XHU5''@;'; put 'put ''MGI5XHU4ZDcwXHU1OTRmXHU2M2NkXHU3OWRmXHU4ZGIzXHU1MzUyXHU2NWNmXHU3OTU2XHU4YmM1XHU5NjNiXHU3ZWM0XHU5NGJiXHU3ZTgyXHU1NjM0XHU5MTg5XHU2NzAwXHU3ZjZhXHU1YzBhXHU5MDc1XHU2NjI4XHU1ZGU2XHU0ZjUwXHU2N2RlXHU1MDVhXHU0ZjVjXHU1NzUwXHU1ZWE3''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjE1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMTVdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIxNV1bRV1dPTU1MDQwK0UsTFs1NTA0MCtFXT1CWzIxNV1bRV0pO2ZvcihCWzIxNl09Ilx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGMzOFx1OGMzOVx1OGMzYVx1OGMzYlx1OGMzY1x1OGMzZFx1OGMzZVx1OGMzZlx1OGM0MFx1OGM0Mlx1OGM0M1x1OGM0NFx1OGM0NVx1OGM0OFx1OGM0YVx1OGM0Ylx1OGM0ZFx1OGM0ZVx1OGM0''@;'; put 'put ''Zlx1OGM1MFx1OGM1MVx1OGM1Mlx1OGM1M1x1OGM1NFx1OGM1Nlx1OGM1N1x1OGM1OFx1OGM1OVx1OGM1Ylx1OGM1Y1x1OGM1ZFx1OGM1ZVx1OGM1Zlx1OGM2MFx1OGM2M1x1OGM2NFx1OGM2NVx1OGM2Nlx1OGM2N1x1OGM2OFx1OGM2OVx1OGM2Y1x1OGM2ZFx1OGM2ZVx1OGM2Zlx1OGM3MFx1''@;'; put 'put ''OGM3MVx1OGM3Mlx1OGM3NFx1OGM3NVx1OGM3Nlx1OGM3N1x1OGM3Ylx1OGM3Y1x1OGM3ZFx1OGM3ZVx1OGM3Zlx1OGM4MFx1OGM4MVx1OGM4M1x1OGM4NFx1OGM4Nlx1OGM4N1x1ZmZmZFx1OGM4OFx1OGM4Ylx1OGM4ZFx1OGM4ZVx1OGM4Zlx1OGM5MFx1OGM5MVx1OGM5Mlx1OGM5M1x1OGM5''@;'; put 'put ''NVx1OGM5Nlx1OGM5N1x1OGM5OVx1OGM5YVx1OGM5Ylx1OGM5Y1x1OGM5ZFx1OGM5ZVx1OGM5Zlx1OGNhMFx1OGNhMVx1OGNhMlx1OGNhM1x1OGNhNFx1OGNhNVx1OGNhNlx1OGNhN1x1OGNhOFx1OGNhOVx1OGNhYVx1OGNhYlx1OGNhY1x1OGNhZFx1NGU4ZFx1NGUwY1x1NTE0MFx1NGUxMFx1''@;'; put 'put ''NWVmZlx1NTM0NVx1NGUxNVx1NGU5OFx1NGUxZVx1OWIzMlx1NWI2Y1x1NTY2OVx1NGUyOFx1NzliYVx1NGUzZlx1NTMxNVx1NGU0N1x1NTkyZFx1NzIzYlx1NTM2ZVx1NmMxMFx1NTZkZlx1ODBlNFx1OTk5N1x1NmJkM1x1Nzc3ZVx1OWYxN1x1NGUzNlx1NGU5Zlx1OWYxMFx1NGU1Y1x1NGU2''@;'; put 'put ''OVx1NGU5M1x1ODI4OFx1NWI1Ylx1NTU2Y1x1NTYwZlx1NGVjNFx1NTM4ZFx1NTM5ZFx1NTNhM1x1NTNhNVx1NTNhZVx1OTc2NVx1OGQ1ZFx1NTMxYVx1NTNmNVx1NTMyNlx1NTMyZVx1NTMzZVx1OGQ1Y1x1NTM2Nlx1NTM2M1x1NTIwMlx1NTIwOFx1NTIwZVx1NTIyZFx1NTIzM1x1NTIzZlx1''@;'; put 'put ''NTI0MFx1NTI0Y1x1NTI1ZVx1NTI2MVx1NTI1Y1x1ODRhZlx1NTI3ZFx1NTI4Mlx1NTI4MVx1NTI5MFx1NTI5M1x1NTE4Mlx1N2Y1NFx1NGViYlx1NGVjM1x1NGVjOVx1NGVjMlx1NGVlOFx1NGVlMVx1NGVlYlx1NGVkZVx1NGYxYlx1NGVmM1x1NGYyMlx1NGY2NFx1NGVmNVx1NGYyNVx1NGYy''@;'; put 'put ''N1x1NGYwOVx1NGYyYlx1NGY1ZVx1NGY2N1x1NjUzOFx1NGY1YVx1NGY1ZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxNl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjE2XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMTZdW0VdXT01NTI5NitFLExbNTUyOTYrRV09QlsyMTZdW0VdKTtm''@;'; put 'put ''b3IoQlsyMTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThjYWVcdThjYWZcdThjYjBcdThjYjFcdThjYjJcdThjYjNcdThjYjRcdThjYjVcdThjYjZcdThjYjdcdThjYjhcdThjYjlcdThjYmFcdThjYmJcdThjYmNcdThjYmRcdThj''@;'; put 'put ''YmVcdThjYmZcdThjYzBcdThjYzFcdThjYzJcdThjYzNcdThjYzRcdThjYzVcdThjYzZcdThjYzdcdThjYzhcdThjYzlcdThjY2FcdThjY2JcdThjY2NcdThjY2RcdThjY2VcdThjY2ZcdThjZDBcdThjZDFcdThjZDJcdThjZDNcdThjZDRcdThjZDVcdThjZDZcdThjZDdcdThjZDhcdThjZDlc''@;'; put 'put ''dThjZGFcdThjZGJcdThjZGNcdThjZGRcdThjZGVcdThjZGZcdThjZTBcdThjZTFcdThjZTJcdThjZTNcdThjZTRcdThjZTVcdThjZTZcdThjZTdcdThjZThcdThjZTlcdThjZWFcdThjZWJcdThjZWNcdWZmZmRcdThjZWRcdThjZWVcdThjZWZcdThjZjBcdThjZjFcdThjZjJcdThjZjNcdThj''@;'; put 'put ''ZjRcdThjZjVcdThjZjZcdThjZjdcdThjZjhcdThjZjlcdThjZmFcdThjZmJcdThjZmNcdThjZmRcdThjZmVcdThjZmZcdThkMDBcdThkMDFcdThkMDJcdThkMDNcdThkMDRcdThkMDVcdThkMDZcdThkMDdcdThkMDhcdThkMDlcdThkMGFcdThkMGJcdThkMGNcdThkMGRcdTRmNWZcdTRmNTdc''@;'; put 'put ''dTRmMzJcdTRmM2RcdTRmNzZcdTRmNzRcdTRmOTFcdTRmODlcdTRmODNcdTRmOGZcdTRmN2VcdTRmN2JcdTRmYWFcdTRmN2NcdTRmYWNcdTRmOTRcdTRmZTZcdTRmZThcdTRmZWFcdTRmYzVcdTRmZGFcdTRmZTNcdTRmZGNcdTRmZDFcdTRmZGZcdTRmZjhcdTUwMjlcdTUwNGNcdTRmZjNcdTUw''@;'; put 'put ''MmNcdTUwMGZcdTUwMmVcdTUwMmRcdTRmZmVcdTUwMWNcdTUwMGNcdTUwMjVcdTUwMjhcdTUwN2VcdTUwNDNcdTUwNTVcdTUwNDhcdTUwNGVcdTUwNmNcdTUwN2JcdTUwYTVcdTUwYTdcdTUwYTlcdTUwYmFcdTUwZDZcdTUxMDZcdTUwZWRcdTUwZWNcdTUwZTZcdTUwZWVcdTUxMDdcdTUxMGJc''@;'; put 'put ''dTRlZGRcdTZjM2RcdTRmNThcdTRmNjVcdTRmY2VcdTlmYTBcdTZjNDZcdTdjNzRcdTUxNmVcdTVkZmRcdTllYzlcdTk5OThcdTUxODFcdTU5MTRcdTUyZjlcdTUzMGRcdThhMDdcdTUzMTBcdTUxZWJcdTU5MTlcdTUxNTVcdTRlYTBcdTUxNTZcdTRlYjNcdTg4NmVcdTg4YTRcdTRlYjVcdTgx''@;'; put 'put ''MTRcdTg4ZDJcdTc5ODBcdTViMzRcdTg4MDNcdTdmYjhcdTUxYWJcdTUxYjFcdTUxYmRcdTUxYmNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxN11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjE3XVtFXV09NTU1NTIrRSxMWzU1NTUyK0Vd''@;'; put 'put ''PUJbMjE3XVtFXSk7Zm9yKEJbMjE4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ZDBlXHU4ZDBmXHU4ZDEwXHU4ZDExXHU4ZDEyXHU4ZDEzXHU4ZDE0XHU4ZDE1XHU4ZDE2XHU4ZDE3XHU4ZDE4XHU4ZDE5XHU4ZDFhXHU4ZDFiXHU4''@;'; put 'put ''ZDFjXHU4ZDIwXHU4ZDUxXHU4ZDUyXHU4ZDU3XHU4ZDVmXHU4ZDY1XHU4ZDY4XHU4ZDY5XHU4ZDZhXHU4ZDZjXHU4ZDZlXHU4ZDZmXHU4ZDcxXHU4ZDcyXHU4ZDc4XHU4ZDc5XHU4ZDdhXHU4ZDdiXHU4ZDdjXHU4ZDdkXHU4ZDdlXHU4ZDdmXHU4ZDgwXHU4ZDgyXHU4ZDgzXHU4ZDg2XHU4ZDg3''@;'; put 'put ''XHU4ZDg4XHU4ZDg5XHU4ZDhjXHU4ZDhkXHU4ZDhlXHU4ZDhmXHU4ZDkwXHU4ZDkyXHU4ZDkzXHU4ZDk1XHU4ZDk2XHU4ZDk3XHU4ZDk4XHU4ZDk5XHU4ZDlhXHU4ZDliXHU4ZDljXHU4ZDlkXHU4ZDllXHU4ZGEwXHU4ZGExXHVmZmZkXHU4ZGEyXHU4ZGE0XHU4ZGE1XHU4ZGE2XHU4ZGE3XHU4''@;'; put 'put ''ZGE4XHU4ZGE5XHU4ZGFhXHU4ZGFiXHU4ZGFjXHU4ZGFkXHU4ZGFlXHU4ZGFmXHU4ZGIwXHU4ZGIyXHU4ZGI2XHU4ZGI3XHU4ZGI5XHU4ZGJiXHU4ZGJkXHU4ZGMwXHU4ZGMxXHU4ZGMyXHU4ZGM1XHU4ZGM3XHU4ZGM4XHU4ZGM5XHU4ZGNhXHU4ZGNkXHU4ZGQwXHU4ZGQyXHU4ZGQzXHU4ZGQ0''@;'; put 'put ''XHU1MWM3XHU1MTk2XHU1MWEyXHU1MWE1XHU4YmEwXHU4YmE2XHU4YmE3XHU4YmFhXHU4YmI0XHU4YmI1XHU4YmI3XHU4YmMyXHU4YmMzXHU4YmNiXHU4YmNmXHU4YmNlXHU4YmQyXHU4YmQzXHU4YmQ0XHU4YmQ2XHU4YmQ4XHU4YmQ5XHU4YmRjXHU4YmRmXHU4YmUwXHU4YmU0XHU4YmU4XHU4''@;'; put 'put ''YmU5XHU4YmVlXHU4YmYwXHU4YmYzXHU4YmY2XHU4YmY5XHU4YmZjXHU4YmZmXHU4YzAwXHU4YzAyXHU4YzA0XHU4YzA3XHU4YzBjXHU4YzBmXHU4YzExXHU4YzEyXHU4YzE0XHU4YzE1XHU4YzE2XHU4YzE5XHU4YzFiXHU4YzE4XHU4YzFkXHU4YzFmXHU4YzIwXHU4YzIxXHU4YzI1XHU4YzI3''@;'; put 'put ''XHU4YzJhXHU4YzJiXHU4YzJlXHU4YzJmXHU4YzMyXHU4YzMzXHU4YzM1XHU4YzM2XHU1MzY5XHU1MzdhXHU5NjFkXHU5NjIyXHU5NjIxXHU5NjMxXHU5NjJhXHU5NjNkXHU5NjNjXHU5NjQyXHU5NjQ5XHU5NjU0XHU5NjVmXHU5NjY3XHU5NjZjXHU5NjcyXHU5Njc0XHU5Njg4XHU5NjhkXHU5''@;'; put 'put ''Njk3XHU5NmIwXHU5MDk3XHU5MDliXHU5MDlkXHU5MDk5XHU5MGFjXHU5MGExXHU5MGI0XHU5MGIzXHU5MGI2XHU5MGJhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjE4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMThdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIxOF1bRV1dPTU1ODA4''@;'; put 'put ''K0UsTFs1NTgwOCtFXT1CWzIxOF1bRV0pO2ZvcihCWzIxOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGRkNVx1OGRkOFx1OGRkOVx1OGRkY1x1OGRlMFx1OGRlMVx1OGRlMlx1OGRlNVx1OGRlNlx1OGRlN1x1OGRlOVx1OGRlZFx1''@;'; put 'put ''OGRlZVx1OGRmMFx1OGRmMVx1OGRmMlx1OGRmNFx1OGRmNlx1OGRmY1x1OGRmZVx1OGRmZlx1OGUwMFx1OGUwMVx1OGUwMlx1OGUwM1x1OGUwNFx1OGUwNlx1OGUwN1x1OGUwOFx1OGUwYlx1OGUwZFx1OGUwZVx1OGUxMFx1OGUxMVx1OGUxMlx1OGUxM1x1OGUxNVx1OGUxNlx1OGUxN1x1OGUx''@;'; put 'put ''OFx1OGUxOVx1OGUxYVx1OGUxYlx1OGUxY1x1OGUyMFx1OGUyMVx1OGUyNFx1OGUyNVx1OGUyNlx1OGUyN1x1OGUyOFx1OGUyYlx1OGUyZFx1OGUzMFx1OGUzMlx1OGUzM1x1OGUzNFx1OGUzNlx1OGUzN1x1OGUzOFx1OGUzYlx1OGUzY1x1OGUzZVx1ZmZmZFx1OGUzZlx1OGU0M1x1OGU0NVx1''@;'; put 'put ''OGU0Nlx1OGU0Y1x1OGU0ZFx1OGU0ZVx1OGU0Zlx1OGU1MFx1OGU1M1x1OGU1NFx1OGU1NVx1OGU1Nlx1OGU1N1x1OGU1OFx1OGU1YVx1OGU1Ylx1OGU1Y1x1OGU1ZFx1OGU1ZVx1OGU1Zlx1OGU2MFx1OGU2MVx1OGU2Mlx1OGU2M1x1OGU2NFx1OGU2NVx1OGU2N1x1OGU2OFx1OGU2YVx1OGU2''@;'; put 'put ''Ylx1OGU2ZVx1OGU3MVx1OTBiOFx1OTBiMFx1OTBjZlx1OTBjNVx1OTBiZVx1OTBkMFx1OTBjNFx1OTBjN1x1OTBkM1x1OTBlNlx1OTBlMlx1OTBkY1x1OTBkN1x1OTBkYlx1OTBlYlx1OTBlZlx1OTBmZVx1OTEwNFx1OTEyMlx1OTExZVx1OTEyM1x1OTEzMVx1OTEyZlx1OTEzOVx1OTE0M1x1''@;'; put 'put ''OTE0Nlx1NTIwZFx1NTk0Mlx1NTJhMlx1NTJhY1x1NTJhZFx1NTJiZVx1NTRmZlx1NTJkMFx1NTJkNlx1NTJmMFx1NTNkZlx1NzFlZVx1NzdjZFx1NWVmNFx1NTFmNVx1NTFmY1x1OWIyZlx1NTNiNlx1NWYwMVx1NzU1YVx1NWRlZlx1NTc0Y1x1NTdhOVx1NTdhMVx1NTg3ZVx1NThiY1x1NThj''@;'; put 'put ''NVx1NThkMVx1NTcyOVx1NTcyY1x1NTcyYVx1NTczM1x1NTczOVx1NTcyZVx1NTcyZlx1NTc1Y1x1NTczYlx1NTc0Mlx1NTc2OVx1NTc4NVx1NTc2Ylx1NTc4Nlx1NTc3Y1x1NTc3Ylx1NTc2OFx1NTc2ZFx1NTc3Nlx1NTc3M1x1NTdhZFx1NTdhNFx1NTc4Y1x1NTdiMlx1NTdjZlx1NTdhN1x1''@;'; put 'put ''NTdiNFx1NTc5M1x1NTdhMFx1NTdkNVx1NTdkOFx1NTdkYVx1NTdkOVx1NTdkMlx1NTdiOFx1NTdmNFx1NTdlZlx1NTdmOFx1NTdlNFx1NTdkZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxOV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjE5XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsy''@;'; put 'put ''MTldW0VdXT01NjA2NCtFLExbNTYwNjQrRV09QlsyMTldW0VdKTtmb3IoQlsyMjBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThlNzNcdThlNzVcdThlNzdcdThlNzhcdThlNzlcdThlN2FcdThlN2JcdThlN2RcdThlN2VcdThlODBc''@;'; put 'put ''dThlODJcdThlODNcdThlODRcdThlODZcdThlODhcdThlODlcdThlOGFcdThlOGJcdThlOGNcdThlOGRcdThlOGVcdThlOTFcdThlOTJcdThlOTNcdThlOTVcdThlOTZcdThlOTdcdThlOThcdThlOTlcdThlOWFcdThlOWJcdThlOWRcdThlOWZcdThlYTBcdThlYTFcdThlYTJcdThlYTNcdThl''@;'; put 'put ''YTRcdThlYTVcdThlYTZcdThlYTdcdThlYThcdThlYTlcdThlYWFcdThlYWRcdThlYWVcdThlYjBcdThlYjFcdThlYjNcdThlYjRcdThlYjVcdThlYjZcdThlYjdcdThlYjhcdThlYjlcdThlYmJcdThlYmNcdThlYmRcdThlYmVcdThlYmZcdThlYzBcdThlYzFcdThlYzJcdWZmZmRcdThlYzNc''@;'; put 'put ''dThlYzRcdThlYzVcdThlYzZcdThlYzdcdThlYzhcdThlYzlcdThlY2FcdThlY2JcdThlY2NcdThlY2RcdThlY2ZcdThlZDBcdThlZDFcdThlZDJcdThlZDNcdThlZDRcdThlZDVcdThlZDZcdThlZDdcdThlZDhcdThlZDlcdThlZGFcdThlZGJcdThlZGNcdThlZGRcdThlZGVcdThlZGZcdThl''@;'; put 'put ''ZTBcdThlZTFcdThlZTJcdThlZTNcdThlZTRcdTU4MGJcdTU4MGRcdTU3ZmRcdTU3ZWRcdTU4MDBcdTU4MWVcdTU4MTlcdTU4NDRcdTU4MjBcdTU4NjVcdTU4NmNcdTU4ODFcdTU4ODlcdTU4OWFcdTU4ODBcdTk5YThcdTlmMTlcdTYxZmZcdTgyNzlcdTgyN2RcdTgyN2ZcdTgyOGZcdTgyOGFc''@;'; put 'put ''dTgyYThcdTgyODRcdTgyOGVcdTgyOTFcdTgyOTdcdTgyOTlcdTgyYWJcdTgyYjhcdTgyYmVcdTgyYjBcdTgyYzhcdTgyY2FcdTgyZTNcdTgyOThcdTgyYjdcdTgyYWVcdTgyY2JcdTgyY2NcdTgyYzFcdTgyYTlcdTgyYjRcdTgyYTFcdTgyYWFcdTgyOWZcdTgyYzRcdTgyY2VcdTgyYTRcdTgy''@;'; put 'put ''ZTFcdTgzMDlcdTgyZjdcdTgyZTRcdTgzMGZcdTgzMDdcdTgyZGNcdTgyZjRcdTgyZDJcdTgyZDhcdTgzMGNcdTgyZmJcdTgyZDNcdTgzMTFcdTgzMWFcdTgzMDZcdTgzMTRcdTgzMTVcdTgyZTBcdTgyZDVcdTgzMWNcdTgzNTFcdTgzNWJcdTgzNWNcdTgzMDhcdTgzOTJcdTgzM2NcdTgzMzRc''@;'; put 'put ''dTgzMzFcdTgzOWJcdTgzNWVcdTgzMmZcdTgzNGZcdTgzNDdcdTgzNDNcdTgzNWZcdTgzNDBcdTgzMTdcdTgzNjBcdTgzMmRcdTgzM2FcdTgzMzNcdTgzNjZcdTgzNjVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyMF1bRV0uY2hhckNvZGVB''@;'; put 'put ''dCgwKSYmKG1lW0JbMjIwXVtFXV09NTYzMjArRSxMWzU2MzIwK0VdPUJbMjIwXVtFXSk7Zm9yKEJbMjIxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ZWU1XHU4ZWU2XHU4ZWU3XHU4ZWU4XHU4ZWU5XHU4ZWVhXHU4ZWViXHU4ZWVj''@;'; put 'put ''XHU4ZWVkXHU4ZWVlXHU4ZWVmXHU4ZWYwXHU4ZWYxXHU4ZWYyXHU4ZWYzXHU4ZWY0XHU4ZWY1XHU4ZWY2XHU4ZWY3XHU4ZWY4XHU4ZWY5XHU4ZWZhXHU4ZWZiXHU4ZWZjXHU4ZWZkXHU4ZWZlXHU4ZWZmXHU4ZjAwXHU4ZjAxXHU4ZjAyXHU4ZjAzXHU4ZjA0XHU4ZjA1XHU4ZjA2XHU4ZjA3XHU4''@;'; put 'put ''ZjA4XHU4ZjA5XHU4ZjBhXHU4ZjBiXHU4ZjBjXHU4ZjBkXHU4ZjBlXHU4ZjBmXHU4ZjEwXHU4ZjExXHU4ZjEyXHU4ZjEzXHU4ZjE0XHU4ZjE1XHU4ZjE2XHU4ZjE3XHU4ZjE4XHU4ZjE5XHU4ZjFhXHU4ZjFiXHU4ZjFjXHU4ZjFkXHU4ZjFlXHU4ZjFmXHU4ZjIwXHU4ZjIxXHU4ZjIyXHU4ZjIz''@;'; put 'put ''XHVmZmZkXHU4ZjI0XHU4ZjI1XHU4ZjI2XHU4ZjI3XHU4ZjI4XHU4ZjI5XHU4ZjJhXHU4ZjJiXHU4ZjJjXHU4ZjJkXHU4ZjJlXHU4ZjJmXHU4ZjMwXHU4ZjMxXHU4ZjMyXHU4ZjMzXHU4ZjM0XHU4ZjM1XHU4ZjM2XHU4ZjM3XHU4ZjM4XHU4ZjM5XHU4ZjNhXHU4ZjNiXHU4ZjNjXHU4ZjNkXHU4''@;'; put 'put ''ZjNlXHU4ZjNmXHU4ZjQwXHU4ZjQxXHU4ZjQyXHU4ZjQzXHU4ZjQ0XHU4MzY4XHU4MzFiXHU4MzY5XHU4MzZjXHU4MzZhXHU4MzZkXHU4MzZlXHU4M2IwXHU4Mzc4XHU4M2IzXHU4M2I0XHU4M2EwXHU4M2FhXHU4MzkzXHU4MzljXHU4Mzg1XHU4MzdjXHU4M2I2XHU4M2E5XHU4MzdkXHU4M2I4''@;'; put 'put ''XHU4MzdiXHU4Mzk4XHU4MzllXHU4M2E4XHU4M2JhXHU4M2JjXHU4M2MxXHU4NDAxXHU4M2U1XHU4M2Q4XHU1ODA3XHU4NDE4XHU4NDBiXHU4M2RkXHU4M2ZkXHU4M2Q2XHU4NDFjXHU4NDM4XHU4NDExXHU4NDA2XHU4M2Q0XHU4M2RmXHU4NDBmXHU4NDAzXHU4M2Y4XHU4M2Y5XHU4M2VhXHU4''@;'; put 'put ''M2M1XHU4M2MwXHU4NDI2XHU4M2YwXHU4M2UxXHU4NDVjXHU4NDUxXHU4NDVhXHU4NDU5XHU4NDczXHU4NDg3XHU4NDg4XHU4NDdhXHU4NDg5XHU4NDc4XHU4NDNjXHU4NDQ2XHU4NDY5XHU4NDc2XHU4NDhjXHU4NDhlXHU4NDMxXHU4NDZkXHU4NGMxXHU4NGNkXHU4NGQwXHU4NGU2XHU4NGJk''@;'; put 'put ''XHU4NGQzXHU4NGNhXHU4NGJmXHU4NGJhXHU4NGUwXHU4NGExXHU4NGI5XHU4NGI0XHU4NDk3XHU4NGU1XHU4NGUzXHU4NTBjXHU3NTBkXHU4NTM4XHU4NGYwXHU4NTM5XHU4NTFmXHU4NTNhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjIxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjFd''@;'; put 'put ''W0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIyMV1bRV1dPTU2NTc2K0UsTFs1NjU3NitFXT1CWzIyMV1bRV0pO2ZvcihCWzIyMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGY0NVx1OGY0Nlx1OGY0N1x1OGY0OFx1OGY0OVx1OGY0''@;'; put 'put ''YVx1OGY0Ylx1OGY0Y1x1OGY0ZFx1OGY0ZVx1OGY0Zlx1OGY1MFx1OGY1MVx1OGY1Mlx1OGY1M1x1OGY1NFx1OGY1NVx1OGY1Nlx1OGY1N1x1OGY1OFx1OGY1OVx1OGY1YVx1OGY1Ylx1OGY1Y1x1OGY1ZFx1OGY1ZVx1OGY1Zlx1OGY2MFx1OGY2MVx1OGY2Mlx1OGY2M1x1OGY2NFx1OGY2NVx1''@;'; put 'put ''OGY2YVx1OGY4MFx1OGY4Y1x1OGY5Mlx1OGY5ZFx1OGZhMFx1OGZhMVx1OGZhMlx1OGZhNFx1OGZhNVx1OGZhNlx1OGZhN1x1OGZhYVx1OGZhY1x1OGZhZFx1OGZhZVx1OGZhZlx1OGZiMlx1OGZiM1x1OGZiNFx1OGZiNVx1OGZiN1x1OGZiOFx1OGZiYVx1OGZiYlx1OGZiY1x1OGZiZlx1OGZj''@;'; put 'put ''MFx1OGZjM1x1OGZjNlx1ZmZmZFx1OGZjOVx1OGZjYVx1OGZjYlx1OGZjY1x1OGZjZFx1OGZjZlx1OGZkMlx1OGZkNlx1OGZkN1x1OGZkYVx1OGZlMFx1OGZlMVx1OGZlM1x1OGZlN1x1OGZlY1x1OGZlZlx1OGZmMVx1OGZmMlx1OGZmNFx1OGZmNVx1OGZmNlx1OGZmYVx1OGZmYlx1OGZmY1x1''@;'; put 'put ''OGZmZVx1OGZmZlx1OTAwN1x1OTAwOFx1OTAwY1x1OTAwZVx1OTAxM1x1OTAxNVx1OTAxOFx1ODU1Nlx1ODUzYlx1ODRmZlx1ODRmY1x1ODU1OVx1ODU0OFx1ODU2OFx1ODU2NFx1ODU1ZVx1ODU3YVx1NzdhMlx1ODU0M1x1ODU3Mlx1ODU3Ylx1ODVhNFx1ODVhOFx1ODU4N1x1ODU4Zlx1ODU3''@;'; put 'put ''OVx1ODVhZVx1ODU5Y1x1ODU4NVx1ODViOVx1ODViN1x1ODViMFx1ODVkM1x1ODVjMVx1ODVkY1x1ODVmZlx1ODYyN1x1ODYwNVx1ODYyOVx1ODYxNlx1ODYzY1x1NWVmZVx1NWYwOFx1NTkzY1x1NTk0MVx1ODAzN1x1NTk1NVx1NTk1YVx1NTk1OFx1NTMwZlx1NWMyMlx1NWMyNVx1NWMyY1x1''@;'; put 'put ''NWMzNFx1NjI0Y1x1NjI2YVx1NjI5Zlx1NjJiYlx1NjJjYVx1NjJkYVx1NjJkN1x1NjJlZVx1NjMyMlx1NjJmNlx1NjMzOVx1NjM0Ylx1NjM0M1x1NjNhZFx1NjNmNlx1NjM3MVx1NjM3YVx1NjM4ZVx1NjNiNFx1NjM2ZFx1NjNhY1x1NjM4YVx1NjM2OVx1NjNhZVx1NjNiY1x1NjNmMlx1NjNm''@;'; put 'put ''OFx1NjNlMFx1NjNmZlx1NjNjNFx1NjNkZVx1NjNjZVx1NjQ1Mlx1NjNjNlx1NjNiZVx1NjQ0NVx1NjQ0MVx1NjQwYlx1NjQxYlx1NjQyMFx1NjQwY1x1NjQyNlx1NjQyMVx1NjQ1ZVx1NjQ4NFx1NjQ2ZFx1NjQ5Nlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyMl0ubGVuZ3RoOysrRSk2''@;'; put 'put ''NTUzMyE9PUJbMjIyXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMjJdW0VdXT01NjgzMitFLExbNTY4MzIrRV09QlsyMjJdW0VdKTtmb3IoQlsyMjNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkwMTlcdTkwMWNcdTkwMjNcdTkw''@;'; put 'put ''MjRcdTkwMjVcdTkwMjdcdTkwMjhcdTkwMjlcdTkwMmFcdTkwMmJcdTkwMmNcdTkwMzBcdTkwMzFcdTkwMzJcdTkwMzNcdTkwMzRcdTkwMzdcdTkwMzlcdTkwM2FcdTkwM2RcdTkwM2ZcdTkwNDBcdTkwNDNcdTkwNDVcdTkwNDZcdTkwNDhcdTkwNDlcdTkwNGFcdTkwNGJcdTkwNGNcdTkwNGVc''@;'; put 'put ''dTkwNTRcdTkwNTVcdTkwNTZcdTkwNTlcdTkwNWFcdTkwNWNcdTkwNWRcdTkwNWVcdTkwNWZcdTkwNjBcdTkwNjFcdTkwNjRcdTkwNjZcdTkwNjdcdTkwNjlcdTkwNmFcdTkwNmJcdTkwNmNcdTkwNmZcdTkwNzBcdTkwNzFcdTkwNzJcdTkwNzNcdTkwNzZcdTkwNzdcdTkwNzhcdTkwNzlcdTkw''@;'; put 'put ''N2FcdTkwN2JcdTkwN2NcdTkwN2VcdTkwODFcdWZmZmRcdTkwODRcdTkwODVcdTkwODZcdTkwODdcdTkwODlcdTkwOGFcdTkwOGNcdTkwOGRcdTkwOGVcdTkwOGZcdTkwOTBcdTkwOTJcdTkwOTRcdTkwOTZcdTkwOThcdTkwOWFcdTkwOWNcdTkwOWVcdTkwOWZcdTkwYTBcdTkwYTRcdTkwYTVc''@;'; put 'put ''dTkwYTdcdTkwYThcdTkwYTlcdTkwYWJcdTkwYWRcdTkwYjJcdTkwYjdcdTkwYmNcdTkwYmRcdTkwYmZcdTkwYzBcdTY0N2FcdTY0YjdcdTY0YjhcdTY0OTlcdTY0YmFcdTY0YzBcdTY0ZDBcdTY0ZDdcdTY0ZTRcdTY0ZTJcdTY1MDlcdTY1MjVcdTY1MmVcdTVmMGJcdTVmZDJcdTc1MTlcdTVm''@;'; put 'put ''MTFcdTUzNWZcdTUzZjFcdTUzZmRcdTUzZTlcdTUzZThcdTUzZmJcdTU0MTJcdTU0MTZcdTU0MDZcdTU0NGJcdTU0NTJcdTU0NTNcdTU0NTRcdTU0NTZcdTU0NDNcdTU0MjFcdTU0NTdcdTU0NTlcdTU0MjNcdTU0MzJcdTU0ODJcdTU0OTRcdTU0NzdcdTU0NzFcdTU0NjRcdTU0OWFcdTU0OWJc''@;'; put 'put ''dTU0ODRcdTU0NzZcdTU0NjZcdTU0OWRcdTU0ZDBcdTU0YWRcdTU0YzJcdTU0YjRcdTU0ZDJcdTU0YTdcdTU0YTZcdTU0ZDNcdTU0ZDRcdTU0NzJcdTU0YTNcdTU0ZDVcdTU0YmJcdTU0YmZcdTU0Y2NcdTU0ZDlcdTU0ZGFcdTU0ZGNcdTU0YTlcdTU0YWFcdTU0YTRcdTU0ZGRcdTU0Y2ZcdTU0''@;'; put 'put ''ZGVcdTU1MWJcdTU0ZTdcdTU1MjBcdTU0ZmRcdTU1MTRcdTU0ZjNcdTU1MjJcdTU1MjNcdTU1MGZcdTU1MTFcdTU1MjdcdTU1MmFcdTU1NjdcdTU1OGZcdTU1YjVcdTU1NDlcdTU1NmRcdTU1NDFcdTU1NTVcdTU1M2ZcdTU1NTBcdTU1M2NcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjNd''@;'; put 'put ''Lmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyM11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjIzXVtFXV09NTcwODgrRSxMWzU3MDg4K0VdPUJbMjIzXVtFXSk7Zm9yKEJbMjI0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MGMyXHU5''@;'; put 'put ''MGMzXHU5MGM2XHU5MGM4XHU5MGM5XHU5MGNiXHU5MGNjXHU5MGNkXHU5MGQyXHU5MGQ0XHU5MGQ1XHU5MGQ2XHU5MGQ4XHU5MGQ5XHU5MGRhXHU5MGRlXHU5MGRmXHU5MGUwXHU5MGUzXHU5MGU0XHU5MGU1XHU5MGU5XHU5MGVhXHU5MGVjXHU5MGVlXHU5MGYwXHU5MGYxXHU5MGYyXHU5MGYz''@;'; put 'put ''XHU5MGY1XHU5MGY2XHU5MGY3XHU5MGY5XHU5MGZhXHU5MGZiXHU5MGZjXHU5MGZmXHU5MTAwXHU5MTAxXHU5MTAzXHU5MTA1XHU5MTA2XHU5MTA3XHU5MTA4XHU5MTA5XHU5MTBhXHU5MTBiXHU5MTBjXHU5MTBkXHU5MTBlXHU5MTBmXHU5MTEwXHU5MTExXHU5MTEyXHU5MTEzXHU5MTE0XHU5''@;'; put 'put ''MTE1XHU5MTE2XHU5MTE3XHU5MTE4XHU5MTFhXHU5MTFiXHU5MTFjXHVmZmZkXHU5MTFkXHU5MTFmXHU5MTIwXHU5MTIxXHU5MTI0XHU5MTI1XHU5MTI2XHU5MTI3XHU5MTI4XHU5MTI5XHU5MTJhXHU5MTJiXHU5MTJjXHU5MTJkXHU5MTJlXHU5MTMwXHU5MTMyXHU5MTMzXHU5MTM0XHU5MTM1''@;'; put 'put ''XHU5MTM2XHU5MTM3XHU5MTM4XHU5MTNhXHU5MTNiXHU5MTNjXHU5MTNkXHU5MTNlXHU5MTNmXHU5MTQwXHU5MTQxXHU5MTQyXHU5MTQ0XHU1NTM3XHU1NTU2XHU1NTc1XHU1NTc2XHU1NTc3XHU1NTMzXHU1NTMwXHU1NTVjXHU1NThiXHU1NWQyXHU1NTgzXHU1NWIxXHU1NWI5XHU1NTg4XHU1''@;'; put 'put ''NTgxXHU1NTlmXHU1NTdlXHU1NWQ2XHU1NTkxXHU1NTdiXHU1NWRmXHU1NWJkXHU1NWJlXHU1NTk0XHU1NTk5XHU1NWVhXHU1NWY3XHU1NWM5XHU1NjFmXHU1NWQxXHU1NWViXHU1NWVjXHU1NWQ0XHU1NWU2XHU1NWRkXHU1NWM0XHU1NWVmXHU1NWU1XHU1NWYyXHU1NWYzXHU1NWNjXHU1NWNk''@;'; put 'put ''XHU1NWU4XHU1NWY1XHU1NWU0XHU4Zjk0XHU1NjFlXHU1NjA4XHU1NjBjXHU1NjAxXHU1NjI0XHU1NjIzXHU1NWZlXHU1NjAwXHU1NjI3XHU1NjJkXHU1NjU4XHU1NjM5XHU1NjU3XHU1NjJjXHU1NjRkXHU1NjYyXHU1NjU5XHU1NjVjXHU1NjRjXHU1NjU0XHU1Njg2XHU1NjY0XHU1NjcxXHU1''@;'; put 'put ''NjZiXHU1NjdiXHU1NjdjXHU1Njg1XHU1NjkzXHU1NmFmXHU1NmQ0XHU1NmQ3XHU1NmRkXHU1NmUxXHU1NmY1XHU1NmViXHU1NmY5XHU1NmZmXHU1NzA0XHU1NzBhXHU1NzA5XHU1NzFjXHU1ZTBmXHU1ZTE5XHU1ZTE0XHU1ZTExXHU1ZTMxXHU1ZTNiXHU1ZTNjXHVmZmZkIi5zcGxpdCgiIiks''@;'; put 'put ''RT0wO0UhPUJbMjI0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjRdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIyNF1bRV1dPTU3MzQ0K0UsTFs1NzM0NCtFXT1CWzIyNF1bRV0pO2ZvcihCWzIyNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1OTE0NVx1OTE0N1x1OTE0OFx1OTE1MVx1OTE1M1x1OTE1NFx1OTE1NVx1OTE1Nlx1OTE1OFx1OTE1OVx1OTE1Ylx1OTE1Y1x1OTE1Zlx1OTE2MFx1OTE2Nlx1OTE2N1x1OTE2OFx1OTE2Ylx1OTE2ZFx1OTE3M1x1OTE3YVx1OTE3Ylx1OTE3Y1x1OTE4MFx1OTE4MVx1OTE4Mlx1OTE4''@;'; put 'put ''M1x1OTE4NFx1OTE4Nlx1OTE4OFx1OTE4YVx1OTE4ZVx1OTE4Zlx1OTE5M1x1OTE5NFx1OTE5NVx1OTE5Nlx1OTE5N1x1OTE5OFx1OTE5OVx1OTE5Y1x1OTE5ZFx1OTE5ZVx1OTE5Zlx1OTFhMFx1OTFhMVx1OTFhNFx1OTFhNVx1OTFhNlx1OTFhN1x1OTFhOFx1OTFhOVx1OTFhYlx1OTFhY1x1''@;'; put 'put ''OTFiMFx1OTFiMVx1OTFiMlx1OTFiM1x1OTFiNlx1OTFiN1x1OTFiOFx1OTFiOVx1OTFiYlx1ZmZmZFx1OTFiY1x1OTFiZFx1OTFiZVx1OTFiZlx1OTFjMFx1OTFjMVx1OTFjMlx1OTFjM1x1OTFjNFx1OTFjNVx1OTFjNlx1OTFjOFx1OTFjYlx1OTFkMFx1OTFkMlx1OTFkM1x1OTFkNFx1OTFk''@;'; put 'put ''NVx1OTFkNlx1OTFkN1x1OTFkOFx1OTFkOVx1OTFkYVx1OTFkYlx1OTFkZFx1OTFkZVx1OTFkZlx1OTFlMFx1OTFlMVx1OTFlMlx1OTFlM1x1OTFlNFx1OTFlNVx1NWUzN1x1NWU0NFx1NWU1NFx1NWU1Ylx1NWU1ZVx1NWU2MVx1NWM4Y1x1NWM3YVx1NWM4ZFx1NWM5MFx1NWM5Nlx1NWM4OFx1''@;'; put 'put ''NWM5OFx1NWM5OVx1NWM5MVx1NWM5YVx1NWM5Y1x1NWNiNVx1NWNhMlx1NWNiZFx1NWNhY1x1NWNhYlx1NWNiMVx1NWNhM1x1NWNjMVx1NWNiN1x1NWNjNFx1NWNkMlx1NWNlNFx1NWNjYlx1NWNlNVx1NWQwMlx1NWQwM1x1NWQyN1x1NWQyNlx1NWQyZVx1NWQyNFx1NWQxZVx1NWQwNlx1NWQx''@;'; put 'put ''Ylx1NWQ1OFx1NWQzZVx1NWQzNFx1NWQzZFx1NWQ2Y1x1NWQ1Ylx1NWQ2Zlx1NWQ1ZFx1NWQ2Ylx1NWQ0Ylx1NWQ0YVx1NWQ2OVx1NWQ3NFx1NWQ4Mlx1NWQ5OVx1NWQ5ZFx1OGM3M1x1NWRiN1x1NWRjNVx1NWY3M1x1NWY3N1x1NWY4Mlx1NWY4N1x1NWY4OVx1NWY4Y1x1NWY5NVx1NWY5OVx1''@;'; put 'put ''NWY5Y1x1NWZhOFx1NWZhZFx1NWZiNVx1NWZiY1x1ODg2Mlx1NWY2MVx1NzJhZFx1NzJiMFx1NzJiNFx1NzJiN1x1NzJiOFx1NzJjM1x1NzJjMVx1NzJjZVx1NzJjZFx1NzJkMlx1NzJlOFx1NzJlZlx1NzJlOVx1NzJmMlx1NzJmNFx1NzJmN1x1NzMwMVx1NzJmM1x1NzMwM1x1NzJmYVx1ZmZm''@;'; put 'put ''ZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyNV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjI1XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMjVdW0VdXT01NzYwMCtFLExbNTc2MDArRV09QlsyMjVdW0VdKTtmb3IoQlsyMjZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdTkxZTZcdTkxZTdcdTkxZThcdTkxZTlcdTkxZWFcdTkxZWJcdTkxZWNcdTkxZWRcdTkxZWVcdTkxZWZcdTkxZjBcdTkxZjFcdTkxZjJcdTkxZjNcdTkxZjRcdTkxZjVcdTkxZjZcdTkxZjdcdTkxZjhcdTkxZjlcdTkxZmFcdTkxZmJcdTkxZmNcdTkxZmRcdTkx''@;'; put 'put ''ZmVcdTkxZmZcdTkyMDBcdTkyMDFcdTkyMDJcdTkyMDNcdTkyMDRcdTkyMDVcdTkyMDZcdTkyMDdcdTkyMDhcdTkyMDlcdTkyMGFcdTkyMGJcdTkyMGNcdTkyMGRcdTkyMGVcdTkyMGZcdTkyMTBcdTkyMTFcdTkyMTJcdTkyMTNcdTkyMTRcdTkyMTVcdTkyMTZcdTkyMTdcdTkyMThcdTkyMTlc''@;'; put 'put ''dTkyMWFcdTkyMWJcdTkyMWNcdTkyMWRcdTkyMWVcdTkyMWZcdTkyMjBcdTkyMjFcdTkyMjJcdTkyMjNcdTkyMjRcdWZmZmRcdTkyMjVcdTkyMjZcdTkyMjdcdTkyMjhcdTkyMjlcdTkyMmFcdTkyMmJcdTkyMmNcdTkyMmRcdTkyMmVcdTkyMmZcdTkyMzBcdTkyMzFcdTkyMzJcdTkyMzNcdTky''@;'; put 'put ''MzRcdTkyMzVcdTkyMzZcdTkyMzdcdTkyMzhcdTkyMzlcdTkyM2FcdTkyM2JcdTkyM2NcdTkyM2RcdTkyM2VcdTkyM2ZcdTkyNDBcdTkyNDFcdTkyNDJcdTkyNDNcdTkyNDRcdTkyNDVcdTcyZmJcdTczMTdcdTczMTNcdTczMjFcdTczMGFcdTczMWVcdTczMWRcdTczMTVcdTczMjJcdTczMzlc''@;'; put 'put ''dTczMjVcdTczMmNcdTczMzhcdTczMzFcdTczNTBcdTczNGRcdTczNTdcdTczNjBcdTczNmNcdTczNmZcdTczN2VcdTgyMWJcdTU5MjVcdTk4ZTdcdTU5MjRcdTU5MDJcdTk5NjNcdTk5NjdcdTk5NjhcdTk5NjlcdTk5NmFcdTk5NmJcdTk5NmNcdTk5NzRcdTk5NzdcdTk5N2RcdTk5ODBcdTk5''@;'; put 'put ''ODRcdTk5ODdcdTk5OGFcdTk5OGRcdTk5OTBcdTk5OTFcdTk5OTNcdTk5OTRcdTk5OTVcdTVlODBcdTVlOTFcdTVlOGJcdTVlOTZcdTVlYTVcdTVlYTBcdTVlYjlcdTVlYjVcdTVlYmVcdTVlYjNcdThkNTNcdTVlZDJcdTVlZDFcdTVlZGJcdTVlZThcdTVlZWFcdTgxYmFcdTVmYzRcdTVmYzlc''@;'; put 'put ''dTVmZDZcdTVmY2ZcdTYwMDNcdTVmZWVcdTYwMDRcdTVmZTFcdTVmZTRcdTVmZmVcdTYwMDVcdTYwMDZcdTVmZWFcdTVmZWRcdTVmZjhcdTYwMTlcdTYwMzVcdTYwMjZcdTYwMWJcdTYwMGZcdTYwMGRcdTYwMjlcdTYwMmJcdTYwMGFcdTYwM2ZcdTYwMjFcdTYwNzhcdTYwNzlcdTYwN2JcdTYw''@;'; put 'put ''N2FcdTYwNDJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyNl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjI2XVtFXV09NTc4NTYrRSxMWzU3ODU2K0VdPUJbMjI2XVtFXSk7Zm9yKEJbMjI3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MjQ2XHU5MjQ3XHU5MjQ4XHU5MjQ5XHU5MjRhXHU5MjRiXHU5MjRjXHU5MjRkXHU5MjRlXHU5MjRmXHU5MjUwXHU5MjUxXHU5MjUyXHU5MjUzXHU5MjU0XHU5MjU1XHU5MjU2XHU5MjU3XHU5MjU4XHU5MjU5XHU5MjVhXHU5MjViXHU5''@;'; put 'put ''MjVjXHU5MjVkXHU5MjVlXHU5MjVmXHU5MjYwXHU5MjYxXHU5MjYyXHU5MjYzXHU5MjY0XHU5MjY1XHU5MjY2XHU5MjY3XHU5MjY4XHU5MjY5XHU5MjZhXHU5MjZiXHU5MjZjXHU5MjZkXHU5MjZlXHU5MjZmXHU5MjcwXHU5MjcxXHU5MjcyXHU5MjczXHU5Mjc1XHU5Mjc2XHU5Mjc3XHU5Mjc4''@;'; put 'put ''XHU5Mjc5XHU5MjdhXHU5MjdiXHU5MjdjXHU5MjdkXHU5MjdlXHU5MjdmXHU5MjgwXHU5MjgxXHU5MjgyXHU5MjgzXHU5Mjg0XHU5Mjg1XHVmZmZkXHU5Mjg2XHU5Mjg3XHU5Mjg4XHU5Mjg5XHU5MjhhXHU5MjhiXHU5MjhjXHU5MjhkXHU5MjhmXHU5MjkwXHU5MjkxXHU5MjkyXHU5MjkzXHU5''@;'; put 'put ''Mjk0XHU5Mjk1XHU5Mjk2XHU5Mjk3XHU5Mjk4XHU5Mjk5XHU5MjlhXHU5MjliXHU5MjljXHU5MjlkXHU5MjllXHU5MjlmXHU5MmEwXHU5MmExXHU5MmEyXHU5MmEzXHU5MmE0XHU5MmE1XHU5MmE2XHU5MmE3XHU2MDZhXHU2MDdkXHU2MDk2XHU2MDlhXHU2MGFkXHU2MDlkXHU2MDgzXHU2MDky''@;'; put 'put ''XHU2MDhjXHU2MDliXHU2MGVjXHU2MGJiXHU2MGIxXHU2MGRkXHU2MGQ4XHU2MGM2XHU2MGRhXHU2MGI0XHU2MTIwXHU2MTI2XHU2MTE1XHU2MTIzXHU2MGY0XHU2MTAwXHU2MTBlXHU2MTJiXHU2MTRhXHU2MTc1XHU2MWFjXHU2MTk0XHU2MWE3XHU2MWI3XHU2MWQ0XHU2MWY1XHU1ZmRkXHU5''@;'; put 'put ''NmIzXHU5NWU5XHU5NWViXHU5NWYxXHU5NWYzXHU5NWY1XHU5NWY2XHU5NWZjXHU5NWZlXHU5NjAzXHU5NjA0XHU5NjA2XHU5NjA4XHU5NjBhXHU5NjBiXHU5NjBjXHU5NjBkXHU5NjBmXHU5NjEyXHU5NjE1XHU5NjE2XHU5NjE3XHU5NjE5XHU5NjFhXHU0ZTJjXHU3MjNmXHU2MjE1XHU2YzM1''@;'; put 'put ''XHU2YzU0XHU2YzVjXHU2YzRhXHU2Y2EzXHU2Yzg1XHU2YzkwXHU2Yzk0XHU2YzhjXHU2YzY4XHU2YzY5XHU2Yzc0XHU2Yzc2XHU2Yzg2XHU2Y2E5XHU2Y2QwXHU2Y2Q0XHU2Y2FkXHU2Y2Y3XHU2Y2Y4XHU2Y2YxXHU2Y2Q3XHU2Y2IyXHU2Y2UwXHU2Y2Q2XHU2Y2ZhXHU2Y2ViXHU2Y2VlXHU2''@;'; put 'put ''Y2IxXHU2Y2QzXHU2Y2VmXHU2Y2ZlXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjI3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjddW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIyN11bRV1dPTU4MTEyK0UsTFs1ODExMitFXT1CWzIyN11bRV0pO2ZvcihCWzIyOF09Ilx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTJhOFx1OTJhOVx1OTJhYVx1OTJhYlx1OTJhY1x1OTJhZFx1OTJhZlx1OTJiMFx1OTJiMVx1OTJiMlx1OTJiM1x1OTJiNFx1OTJiNVx1OTJiNlx1OTJiN1x1OTJiOFx1OTJiOVx1OTJiYVx1OTJiYlx1OTJiY1x1''@;'; put 'put ''OTJiZFx1OTJiZVx1OTJiZlx1OTJjMFx1OTJjMVx1OTJjMlx1OTJjM1x1OTJjNFx1OTJjNVx1OTJjNlx1OTJjN1x1OTJjOVx1OTJjYVx1OTJjYlx1OTJjY1x1OTJjZFx1OTJjZVx1OTJjZlx1OTJkMFx1OTJkMVx1OTJkMlx1OTJkM1x1OTJkNFx1OTJkNVx1OTJkNlx1OTJkN1x1OTJkOFx1OTJk''@;'; put 'put ''OVx1OTJkYVx1OTJkYlx1OTJkY1x1OTJkZFx1OTJkZVx1OTJkZlx1OTJlMFx1OTJlMVx1OTJlMlx1OTJlM1x1OTJlNFx1OTJlNVx1OTJlNlx1OTJlN1x1OTJlOFx1ZmZmZFx1OTJlOVx1OTJlYVx1OTJlYlx1OTJlY1x1OTJlZFx1OTJlZVx1OTJlZlx1OTJmMFx1OTJmMVx1OTJmMlx1OTJmM1x1''@;'; put 'put ''OTJmNFx1OTJmNVx1OTJmNlx1OTJmN1x1OTJmOFx1OTJmOVx1OTJmYVx1OTJmYlx1OTJmY1x1OTJmZFx1OTJmZVx1OTJmZlx1OTMwMFx1OTMwMVx1OTMwMlx1OTMwM1x1OTMwNFx1OTMwNVx1OTMwNlx1OTMwN1x1OTMwOFx1OTMwOVx1NmQzOVx1NmQyN1x1NmQwY1x1NmQ0M1x1NmQ0OFx1NmQw''@;'; put 'put ''N1x1NmQwNFx1NmQxOVx1NmQwZVx1NmQyYlx1NmQ0ZFx1NmQyZVx1NmQzNVx1NmQxYVx1NmQ0Zlx1NmQ1Mlx1NmQ1NFx1NmQzM1x1NmQ5MVx1NmQ2Zlx1NmQ5ZVx1NmRhMFx1NmQ1ZVx1NmQ5M1x1NmQ5NFx1NmQ1Y1x1NmQ2MFx1NmQ3Y1x1NmQ2M1x1NmUxYVx1NmRjN1x1NmRjNVx1NmRkZVx1''@;'; put 'put ''NmUwZVx1NmRiZlx1NmRlMFx1NmUxMVx1NmRlNlx1NmRkZFx1NmRkOVx1NmUxNlx1NmRhYlx1NmUwY1x1NmRhZVx1NmUyYlx1NmU2ZVx1NmU0ZVx1NmU2Ylx1NmViMlx1NmU1Zlx1NmU4Nlx1NmU1M1x1NmU1NFx1NmUzMlx1NmUyNVx1NmU0NFx1NmVkZlx1NmViMVx1NmU5OFx1NmVlMFx1NmYy''@;'; put 'put ''ZFx1NmVlMlx1NmVhNVx1NmVhN1x1NmViZFx1NmViYlx1NmViN1x1NmVkN1x1NmViNFx1NmVjZlx1NmU4Zlx1NmVjMlx1NmU5Zlx1NmY2Mlx1NmY0Nlx1NmY0N1x1NmYyNFx1NmYxNVx1NmVmOVx1NmYyZlx1NmYzNlx1NmY0Ylx1NmY3NFx1NmYyYVx1NmYwOVx1NmYyOVx1NmY4OVx1NmY4ZFx1''@;'; put 'put ''NmY4Y1x1NmY3OFx1NmY3Mlx1NmY3Y1x1NmY3YVx1NmZkMVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyOF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjI4XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMjhdW0VdXT01ODM2OCtFLExbNTgzNjgrRV09QlsyMjhdW0VdKTtmb3IoQlsyMjld''@;'; put 'put ''PSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkzMGFcdTkzMGJcdTkzMGNcdTkzMGRcdTkzMGVcdTkzMGZcdTkzMTBcdTkzMTFcdTkzMTJcdTkzMTNcdTkzMTRcdTkzMTVcdTkzMTZcdTkzMTdcdTkzMThcdTkzMTlcdTkzMWFcdTkzMWJc''@;'; put 'put ''dTkzMWNcdTkzMWRcdTkzMWVcdTkzMWZcdTkzMjBcdTkzMjFcdTkzMjJcdTkzMjNcdTkzMjRcdTkzMjVcdTkzMjZcdTkzMjdcdTkzMjhcdTkzMjlcdTkzMmFcdTkzMmJcdTkzMmNcdTkzMmRcdTkzMmVcdTkzMmZcdTkzMzBcdTkzMzFcdTkzMzJcdTkzMzNcdTkzMzRcdTkzMzVcdTkzMzZcdTkz''@;'; put 'put ''MzdcdTkzMzhcdTkzMzlcdTkzM2FcdTkzM2JcdTkzM2NcdTkzM2RcdTkzM2ZcdTkzNDBcdTkzNDFcdTkzNDJcdTkzNDNcdTkzNDRcdTkzNDVcdTkzNDZcdTkzNDdcdTkzNDhcdTkzNDlcdWZmZmRcdTkzNGFcdTkzNGJcdTkzNGNcdTkzNGRcdTkzNGVcdTkzNGZcdTkzNTBcdTkzNTFcdTkzNTJc''@;'; put 'put ''dTkzNTNcdTkzNTRcdTkzNTVcdTkzNTZcdTkzNTdcdTkzNThcdTkzNTlcdTkzNWFcdTkzNWJcdTkzNWNcdTkzNWRcdTkzNWVcdTkzNWZcdTkzNjBcdTkzNjFcdTkzNjJcdTkzNjNcdTkzNjRcdTkzNjVcdTkzNjZcdTkzNjdcdTkzNjhcdTkzNjlcdTkzNmJcdTZmYzlcdTZmYTdcdTZmYjlcdTZm''@;'; put 'put ''YjZcdTZmYzJcdTZmZTFcdTZmZWVcdTZmZGVcdTZmZTBcdTZmZWZcdTcwMWFcdTcwMjNcdTcwMWJcdTcwMzlcdTcwMzVcdTcwNGZcdTcwNWVcdTViODBcdTViODRcdTViOTVcdTViOTNcdTViYTVcdTViYjhcdTc1MmZcdTlhOWVcdTY0MzRcdTViZTRcdTViZWVcdTg5MzBcdTViZjBcdThlNDdc''@;'; put 'put ''dThiMDdcdThmYjZcdThmZDNcdThmZDVcdThmZTVcdThmZWVcdThmZTRcdThmZTlcdThmZTZcdThmZjNcdThmZThcdTkwMDVcdTkwMDRcdTkwMGJcdTkwMjZcdTkwMTFcdTkwMGRcdTkwMTZcdTkwMjFcdTkwMzVcdTkwMzZcdTkwMmRcdTkwMmZcdTkwNDRcdTkwNTFcdTkwNTJcdTkwNTBcdTkw''@;'; put 'put ''NjhcdTkwNThcdTkwNjJcdTkwNWJcdTY2YjlcdTkwNzRcdTkwN2RcdTkwODJcdTkwODhcdTkwODNcdTkwOGJcdTVmNTBcdTVmNTdcdTVmNTZcdTVmNThcdTVjM2JcdTU0YWJcdTVjNTBcdTVjNTlcdTViNzFcdTVjNjNcdTVjNjZcdTdmYmNcdTVmMmFcdTVmMjlcdTVmMmRcdTgyNzRcdTVmM2Nc''@;'; put 'put ''dTliM2JcdTVjNmVcdTU5ODFcdTU5ODNcdTU5OGRcdTU5YTlcdTU5YWFcdTU5YTNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyOV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjI5XVtFXV09NTg2MjQrRSxMWzU4NjI0K0VdPUJbMjI5XVtF''@;'; put 'put ''XSk7Zm9yKEJbMjMwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MzZjXHU5MzZkXHU5MzZlXHU5MzZmXHU5MzcwXHU5MzcxXHU5MzcyXHU5MzczXHU5Mzc0XHU5Mzc1XHU5Mzc2XHU5Mzc3XHU5Mzc4XHU5Mzc5XHU5MzdhXHU5Mzdi''@;'; put 'put ''XHU5MzdjXHU5MzdkXHU5MzdlXHU5MzdmXHU5MzgwXHU5MzgxXHU5MzgyXHU5MzgzXHU5Mzg0XHU5Mzg1XHU5Mzg2XHU5Mzg3XHU5Mzg4XHU5Mzg5XHU5MzhhXHU5MzhiXHU5MzhjXHU5MzhkXHU5MzhlXHU5MzkwXHU5MzkxXHU5MzkyXHU5MzkzXHU5Mzk0XHU5Mzk1XHU5Mzk2XHU5Mzk3XHU5''@;'; put 'put ''Mzk4XHU5Mzk5XHU5MzlhXHU5MzliXHU5MzljXHU5MzlkXHU5MzllXHU5MzlmXHU5M2EwXHU5M2ExXHU5M2EyXHU5M2EzXHU5M2E0XHU5M2E1XHU5M2E2XHU5M2E3XHU5M2E4XHU5M2E5XHU5M2FhXHU5M2FiXHVmZmZkXHU5M2FjXHU5M2FkXHU5M2FlXHU5M2FmXHU5M2IwXHU5M2IxXHU5M2Iy''@;'; put 'put ''XHU5M2IzXHU5M2I0XHU5M2I1XHU5M2I2XHU5M2I3XHU5M2I4XHU5M2I5XHU5M2JhXHU5M2JiXHU5M2JjXHU5M2JkXHU5M2JlXHU5M2JmXHU5M2MwXHU5M2MxXHU5M2MyXHU5M2MzXHU5M2M0XHU5M2M1XHU5M2M2XHU5M2M3XHU5M2M4XHU5M2M5XHU5M2NiXHU5M2NjXHU5M2NkXHU1OTk3XHU1''@;'; put 'put ''OWNhXHU1OWFiXHU1OTllXHU1OWE0XHU1OWQyXHU1OWIyXHU1OWFmXHU1OWQ3XHU1OWJlXHU1YTA1XHU1YTA2XHU1OWRkXHU1YTA4XHU1OWUzXHU1OWQ4XHU1OWY5XHU1YTBjXHU1YTA5XHU1YTMyXHU1YTM0XHU1YTExXHU1YTIzXHU1YTEzXHU1YTQwXHU1YTY3XHU1YTRhXHU1YTU1XHU1YTNj''@;'; put 'put ''XHU1YTYyXHU1YTc1XHU4MGVjXHU1YWFhXHU1YTliXHU1YTc3XHU1YTdhXHU1YWJlXHU1YWViXHU1YWIyXHU1YWQyXHU1YWQ0XHU1YWI4XHU1YWUwXHU1YWUzXHU1YWYxXHU1YWQ2XHU1YWU2XHU1YWQ4XHU1YWRjXHU1YjA5XHU1YjE3XHU1YjE2XHU1YjMyXHU1YjM3XHU1YjQwXHU1YzE1XHU1''@;'; put 'put ''YzFjXHU1YjVhXHU1YjY1XHU1YjczXHU1YjUxXHU1YjUzXHU1YjYyXHU5YTc1XHU5YTc3XHU5YTc4XHU5YTdhXHU5YTdmXHU5YTdkXHU5YTgwXHU5YTgxXHU5YTg1XHU5YTg4XHU5YThhXHU5YTkwXHU5YTkyXHU5YTkzXHU5YTk2XHU5YTk4XHU5YTliXHU5YTljXHU5YTlkXHU5YTlmXHU5YWEw''@;'; put 'put ''XHU5YWEyXHU5YWEzXHU5YWE1XHU5YWE3XHU3ZTlmXHU3ZWExXHU3ZWEzXHU3ZWE1XHU3ZWE4XHU3ZWE5XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjMwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzBdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIzMF1bRV1dPTU4ODgwK0UsTFs1ODg4''@;'; put 'put ''MCtFXT1CWzIzMF1bRV0pO2ZvcihCWzIzMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTNjZVx1OTNjZlx1OTNkMFx1OTNkMVx1OTNkMlx1OTNkM1x1OTNkNFx1OTNkNVx1OTNkN1x1OTNkOFx1OTNkOVx1OTNkYVx1OTNkYlx1OTNk''@;'; put 'put ''Y1x1OTNkZFx1OTNkZVx1OTNkZlx1OTNlMFx1OTNlMVx1OTNlMlx1OTNlM1x1OTNlNFx1OTNlNVx1OTNlNlx1OTNlN1x1OTNlOFx1OTNlOVx1OTNlYVx1OTNlYlx1OTNlY1x1OTNlZFx1OTNlZVx1OTNlZlx1OTNmMFx1OTNmMVx1OTNmMlx1OTNmM1x1OTNmNFx1OTNmNVx1OTNmNlx1OTNmN1x1''@;'; put 'put ''OTNmOFx1OTNmOVx1OTNmYVx1OTNmYlx1OTNmY1x1OTNmZFx1OTNmZVx1OTNmZlx1OTQwMFx1OTQwMVx1OTQwMlx1OTQwM1x1OTQwNFx1OTQwNVx1OTQwNlx1OTQwN1x1OTQwOFx1OTQwOVx1OTQwYVx1OTQwYlx1OTQwY1x1OTQwZFx1ZmZmZFx1OTQwZVx1OTQwZlx1OTQxMFx1OTQxMVx1OTQx''@;'; put 'put ''Mlx1OTQxM1x1OTQxNFx1OTQxNVx1OTQxNlx1OTQxN1x1OTQxOFx1OTQxOVx1OTQxYVx1OTQxYlx1OTQxY1x1OTQxZFx1OTQxZVx1OTQxZlx1OTQyMFx1OTQyMVx1OTQyMlx1OTQyM1x1OTQyNFx1OTQyNVx1OTQyNlx1OTQyN1x1OTQyOFx1OTQyOVx1OTQyYVx1OTQyYlx1OTQyY1x1OTQyZFx1''@;'; put 'put ''OTQyZVx1N2VhZFx1N2ViMFx1N2ViZVx1N2VjMFx1N2VjMVx1N2VjMlx1N2VjOVx1N2VjYlx1N2VjY1x1N2VkMFx1N2VkNFx1N2VkN1x1N2VkYlx1N2VlMFx1N2VlMVx1N2VlOFx1N2VlYlx1N2VlZVx1N2VlZlx1N2VmMVx1N2VmMlx1N2YwZFx1N2VmNlx1N2VmYVx1N2VmYlx1N2VmZVx1N2Yw''@;'; put 'put ''MVx1N2YwMlx1N2YwM1x1N2YwN1x1N2YwOFx1N2YwYlx1N2YwY1x1N2YwZlx1N2YxMVx1N2YxMlx1N2YxN1x1N2YxOVx1N2YxY1x1N2YxYlx1N2YxZlx1N2YyMVx1N2YyMlx1N2YyM1x1N2YyNFx1N2YyNVx1N2YyNlx1N2YyN1x1N2YyYVx1N2YyYlx1N2YyY1x1N2YyZFx1N2YyZlx1N2YzMFx1''@;'; put 'put ''N2YzMVx1N2YzMlx1N2YzM1x1N2YzNVx1NWU3YVx1NzU3Zlx1NWRkYlx1NzUzZVx1OTA5NVx1NzM4ZVx1NzM5MVx1NzNhZVx1NzNhMlx1NzM5Zlx1NzNjZlx1NzNjMlx1NzNkMVx1NzNiN1x1NzNiM1x1NzNjMFx1NzNjOVx1NzNjOFx1NzNlNVx1NzNkOVx1OTg3Y1x1NzQwYVx1NzNlOVx1NzNl''@;'; put 'put ''N1x1NzNkZVx1NzNiYVx1NzNmMlx1NzQwZlx1NzQyYVx1NzQ1Ylx1NzQyNlx1NzQyNVx1NzQyOFx1NzQzMFx1NzQyZVx1NzQyY1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzMV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjMxXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMzFdW0VdXT01''@;'; put 'put ''OTEzNitFLExbNTkxMzYrRV09QlsyMzFdW0VdKTtmb3IoQlsyMzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk0MmZcdTk0MzBcdTk0MzFcdTk0MzJcdTk0MzNcdTk0MzRcdTk0MzVcdTk0MzZcdTk0MzdcdTk0MzhcdTk0MzlcdTk0''@;'; put 'put ''M2FcdTk0M2JcdTk0M2NcdTk0M2RcdTk0M2ZcdTk0NDBcdTk0NDFcdTk0NDJcdTk0NDNcdTk0NDRcdTk0NDVcdTk0NDZcdTk0NDdcdTk0NDhcdTk0NDlcdTk0NGFcdTk0NGJcdTk0NGNcdTk0NGRcdTk0NGVcdTk0NGZcdTk0NTBcdTk0NTFcdTk0NTJcdTk0NTNcdTk0NTRcdTk0NTVcdTk0NTZc''@;'; put 'put ''dTk0NTdcdTk0NThcdTk0NTlcdTk0NWFcdTk0NWJcdTk0NWNcdTk0NWRcdTk0NWVcdTk0NWZcdTk0NjBcdTk0NjFcdTk0NjJcdTk0NjNcdTk0NjRcdTk0NjVcdTk0NjZcdTk0NjdcdTk0NjhcdTk0NjlcdTk0NmFcdTk0NmNcdTk0NmRcdTk0NmVcdTk0NmZcdWZmZmRcdTk0NzBcdTk0NzFcdTk0''@;'; put 'put ''NzJcdTk0NzNcdTk0NzRcdTk0NzVcdTk0NzZcdTk0NzdcdTk0NzhcdTk0NzlcdTk0N2FcdTk0N2JcdTk0N2NcdTk0N2RcdTk0N2VcdTk0N2ZcdTk0ODBcdTk0ODFcdTk0ODJcdTk0ODNcdTk0ODRcdTk0OTFcdTk0OTZcdTk0OThcdTk0YzdcdTk0Y2ZcdTk0ZDNcdTk0ZDRcdTk0ZGFcdTk0ZTZc''@;'; put 'put ''dTk0ZmJcdTk1MWNcdTk1MjBcdTc0MWJcdTc0MWFcdTc0NDFcdTc0NWNcdTc0NTdcdTc0NTVcdTc0NTlcdTc0NzdcdTc0NmRcdTc0N2VcdTc0OWNcdTc0OGVcdTc0ODBcdTc0ODFcdTc0ODdcdTc0OGJcdTc0OWVcdTc0YThcdTc0YTlcdTc0OTBcdTc0YTdcdTc0ZDJcdTc0YmFcdTk3ZWFcdTk3''@;'; put 'put ''ZWJcdTk3ZWNcdTY3NGNcdTY3NTNcdTY3NWVcdTY3NDhcdTY3NjlcdTY3YTVcdTY3ODdcdTY3NmFcdTY3NzNcdTY3OThcdTY3YTdcdTY3NzVcdTY3YThcdTY3OWVcdTY3YWRcdTY3OGJcdTY3NzdcdTY3N2NcdTY3ZjBcdTY4MDlcdTY3ZDhcdTY4MGFcdTY3ZTlcdTY3YjBcdTY4MGNcdTY3ZDlc''@;'; put 'put ''dTY3YjVcdTY3ZGFcdTY3YjNcdTY3ZGRcdTY4MDBcdTY3YzNcdTY3YjhcdTY3ZTJcdTY4MGVcdTY3YzFcdTY3ZmRcdTY4MzJcdTY4MzNcdTY4NjBcdTY4NjFcdTY4NGVcdTY4NjJcdTY4NDRcdTY4NjRcdTY4ODNcdTY4MWRcdTY4NTVcdTY4NjZcdTY4NDFcdTY4NjdcdTY4NDBcdTY4M2VcdTY4''@;'; put 'put ''NGFcdTY4NDlcdTY4MjlcdTY4YjVcdTY4OGZcdTY4NzRcdTY4NzdcdTY4OTNcdTY4NmJcdTY4YzJcdTY5NmVcdTY4ZmNcdTY5MWZcdTY5MjBcdTY4ZjlcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzMl1bRV0uY2hhckNvZGVBdCgwKSYmKG1l''@;'; put 'put ''W0JbMjMyXVtFXV09NTkzOTIrRSxMWzU5MzkyK0VdPUJbMjMyXVtFXSk7Zm9yKEJbMjMzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NTI3XHU5NTMzXHU5NTNkXHU5NTQzXHU5NTQ4XHU5NTRiXHU5NTU1XHU5NTVhXHU5NTYwXHU5''@;'; put 'put ''NTZlXHU5NTc0XHU5NTc1XHU5NTc3XHU5NTc4XHU5NTc5XHU5NTdhXHU5NTdiXHU5NTdjXHU5NTdkXHU5NTdlXHU5NTgwXHU5NTgxXHU5NTgyXHU5NTgzXHU5NTg0XHU5NTg1XHU5NTg2XHU5NTg3XHU5NTg4XHU5NTg5XHU5NThhXHU5NThiXHU5NThjXHU5NThkXHU5NThlXHU5NThmXHU5NTkw''@;'; put 'put ''XHU5NTkxXHU5NTkyXHU5NTkzXHU5NTk0XHU5NTk1XHU5NTk2XHU5NTk3XHU5NTk4XHU5NTk5XHU5NTlhXHU5NTliXHU5NTljXHU5NTlkXHU5NTllXHU5NTlmXHU5NWEwXHU5NWExXHU5NWEyXHU5NWEzXHU5NWE0XHU5NWE1XHU5NWE2XHU5NWE3XHU5NWE4XHU5NWE5XHU5NWFhXHVmZmZkXHU5''@;'; put 'put ''NWFiXHU5NWFjXHU5NWFkXHU5NWFlXHU5NWFmXHU5NWIwXHU5NWIxXHU5NWIyXHU5NWIzXHU5NWI0XHU5NWI1XHU5NWI2XHU5NWI3XHU5NWI4XHU5NWI5XHU5NWJhXHU5NWJiXHU5NWJjXHU5NWJkXHU5NWJlXHU5NWJmXHU5NWMwXHU5NWMxXHU5NWMyXHU5NWMzXHU5NWM0XHU5NWM1XHU5NWM2''@;'; put 'put ''XHU5NWM3XHU5NWM4XHU5NWM5XHU5NWNhXHU5NWNiXHU2OTI0XHU2OGYwXHU2OTBiXHU2OTAxXHU2OTU3XHU2OGUzXHU2OTEwXHU2OTcxXHU2OTM5XHU2OTYwXHU2OTQyXHU2OTVkXHU2OTg0XHU2OTZiXHU2OTgwXHU2OTk4XHU2OTc4XHU2OTM0XHU2OWNjXHU2OTg3XHU2OTg4XHU2OWNlXHU2''@;'; put 'put ''OTg5XHU2OTY2XHU2OTYzXHU2OTc5XHU2OTliXHU2OWE3XHU2OWJiXHU2OWFiXHU2OWFkXHU2OWQ0XHU2OWIxXHU2OWMxXHU2OWNhXHU2OWRmXHU2OTk1XHU2OWUwXHU2OThkXHU2OWZmXHU2YTJmXHU2OWVkXHU2YTE3XHU2YTE4XHU2YTY1XHU2OWYyXHU2YTQ0XHU2YTNlXHU2YWEwXHU2YTUw''@;'; put 'put ''XHU2YTViXHU2YTM1XHU2YThlXHU2YTc5XHU2YTNkXHU2YTI4XHU2YTU4XHU2YTdjXHU2YTkxXHU2YTkwXHU2YWE5XHU2YTk3XHU2YWFiXHU3MzM3XHU3MzUyXHU2YjgxXHU2YjgyXHU2Yjg3XHU2Yjg0XHU2YjkyXHU2YjkzXHU2YjhkXHU2YjlhXHU2YjliXHU2YmExXHU2YmFhXHU4ZjZiXHU4''@;'; put 'put ''ZjZkXHU4ZjcxXHU4ZjcyXHU4ZjczXHU4Zjc1XHU4Zjc2XHU4Zjc4XHU4Zjc3XHU4Zjc5XHU4ZjdhXHU4ZjdjXHU4ZjdlXHU4ZjgxXHU4ZjgyXHU4Zjg0XHU4Zjg3XHU4ZjhiXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjMzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzNdW0VdLmNoYXJD''@;'; put 'put ''b2RlQXQoMCkmJihtZVtCWzIzM11bRV1dPTU5NjQ4K0UsTFs1OTY0OCtFXT1CWzIzM11bRV0pO2ZvcihCWzIzNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTVjY1x1OTVjZFx1OTVjZVx1OTVjZlx1OTVkMFx1OTVkMVx1OTVkMlx1''@;'; put 'put ''OTVkM1x1OTVkNFx1OTVkNVx1OTVkNlx1OTVkN1x1OTVkOFx1OTVkOVx1OTVkYVx1OTVkYlx1OTVkY1x1OTVkZFx1OTVkZVx1OTVkZlx1OTVlMFx1OTVlMVx1OTVlMlx1OTVlM1x1OTVlNFx1OTVlNVx1OTVlNlx1OTVlN1x1OTVlY1x1OTVmZlx1OTYwN1x1OTYxM1x1OTYxOFx1OTYxYlx1OTYx''@;'; put 'put ''ZVx1OTYyMFx1OTYyM1x1OTYyNFx1OTYyNVx1OTYyNlx1OTYyN1x1OTYyOFx1OTYyOVx1OTYyYlx1OTYyY1x1OTYyZFx1OTYyZlx1OTYzMFx1OTYzN1x1OTYzOFx1OTYzOVx1OTYzYVx1OTYzZVx1OTY0MVx1OTY0M1x1OTY0YVx1OTY0ZVx1OTY0Zlx1OTY1MVx1OTY1Mlx1OTY1M1x1OTY1Nlx1''@;'; put 'put ''OTY1N1x1ZmZmZFx1OTY1OFx1OTY1OVx1OTY1YVx1OTY1Y1x1OTY1ZFx1OTY1ZVx1OTY2MFx1OTY2M1x1OTY2NVx1OTY2Nlx1OTY2Ylx1OTY2ZFx1OTY2ZVx1OTY2Zlx1OTY3MFx1OTY3MVx1OTY3M1x1OTY3OFx1OTY3OVx1OTY3YVx1OTY3Ylx1OTY3Y1x1OTY3ZFx1OTY3ZVx1OTY3Zlx1OTY4''@;'; put 'put ''MFx1OTY4MVx1OTY4Mlx1OTY4M1x1OTY4NFx1OTY4N1x1OTY4OVx1OTY4YVx1OGY4ZFx1OGY4ZVx1OGY4Zlx1OGY5OFx1OGY5YVx1OGVjZVx1NjIwYlx1NjIxN1x1NjIxYlx1NjIxZlx1NjIyMlx1NjIyMVx1NjIyNVx1NjIyNFx1NjIyY1x1ODFlN1x1NzRlZlx1NzRmNFx1NzRmZlx1NzUwZlx1''@;'; put 'put ''NzUxMVx1NzUxM1x1NjUzNFx1NjVlZVx1NjVlZlx1NjVmMFx1NjYwYVx1NjYxOVx1Njc3Mlx1NjYwM1x1NjYxNVx1NjYwMFx1NzA4NVx1NjZmN1x1NjYxZFx1NjYzNFx1NjYzMVx1NjYzNlx1NjYzNVx1ODAwNlx1NjY1Zlx1NjY1NFx1NjY0MVx1NjY0Zlx1NjY1Nlx1NjY2MVx1NjY1N1x1NjY3''@;'; put 'put ''N1x1NjY4NFx1NjY4Y1x1NjZhN1x1NjY5ZFx1NjZiZVx1NjZkYlx1NjZkY1x1NjZlNlx1NjZlOVx1OGQzMlx1OGQzM1x1OGQzNlx1OGQzYlx1OGQzZFx1OGQ0MFx1OGQ0NVx1OGQ0Nlx1OGQ0OFx1OGQ0OVx1OGQ0N1x1OGQ0ZFx1OGQ1NVx1OGQ1OVx1ODljN1x1ODljYVx1ODljYlx1ODljY1x1''@;'; put 'put ''ODljZVx1ODljZlx1ODlkMFx1ODlkMVx1NzI2ZVx1NzI5Zlx1NzI1ZFx1NzI2Nlx1NzI2Zlx1NzI3ZVx1NzI3Zlx1NzI4NFx1NzI4Ylx1NzI4ZFx1NzI4Zlx1NzI5Mlx1NjMwOFx1NjMzMlx1NjNiMFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzNF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJb''@;'; put 'put ''MjM0XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMzRdW0VdXT01OTkwNCtFLExbNTk5MDQrRV09QlsyMzRdW0VdKTtmb3IoQlsyMzVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk2OGNcdTk2OGVcdTk2OTFcdTk2OTJcdTk2OTNc''@;'; put 'put ''dTk2OTVcdTk2OTZcdTk2OWFcdTk2OWJcdTk2OWRcdTk2OWVcdTk2OWZcdTk2YTBcdTk2YTFcdTk2YTJcdTk2YTNcdTk2YTRcdTk2YTVcdTk2YTZcdTk2YThcdTk2YTlcdTk2YWFcdTk2YWJcdTk2YWNcdTk2YWRcdTk2YWVcdTk2YWZcdTk2YjFcdTk2YjJcdTk2YjRcdTk2YjVcdTk2YjdcdTk2''@;'; put 'put ''YjhcdTk2YmFcdTk2YmJcdTk2YmZcdTk2YzJcdTk2YzNcdTk2YzhcdTk2Y2FcdTk2Y2JcdTk2ZDBcdTk2ZDFcdTk2ZDNcdTk2ZDRcdTk2ZDZcdTk2ZDdcdTk2ZDhcdTk2ZDlcdTk2ZGFcdTk2ZGJcdTk2ZGNcdTk2ZGRcdTk2ZGVcdTk2ZGZcdTk2ZTFcdTk2ZTJcdTk2ZTNcdTk2ZTRcdTk2ZTVc''@;'; put 'put ''dTk2ZTZcdTk2ZTdcdTk2ZWJcdWZmZmRcdTk2ZWNcdTk2ZWRcdTk2ZWVcdTk2ZjBcdTk2ZjFcdTk2ZjJcdTk2ZjRcdTk2ZjVcdTk2ZjhcdTk2ZmFcdTk2ZmJcdTk2ZmNcdTk2ZmRcdTk2ZmZcdTk3MDJcdTk3MDNcdTk3MDVcdTk3MGFcdTk3MGJcdTk3MGNcdTk3MTBcdTk3MTFcdTk3MTJcdTk3''@;'; put 'put ''MTRcdTk3MTVcdTk3MTdcdTk3MThcdTk3MTlcdTk3MWFcdTk3MWJcdTk3MWRcdTk3MWZcdTk3MjBcdTY0M2ZcdTY0ZDhcdTgwMDRcdTZiZWFcdTZiZjNcdTZiZmRcdTZiZjVcdTZiZjlcdTZjMDVcdTZjMDdcdTZjMDZcdTZjMGRcdTZjMTVcdTZjMThcdTZjMTlcdTZjMWFcdTZjMjFcdTZjMjlc''@;'; put 'put ''dTZjMjRcdTZjMmFcdTZjMzJcdTY1MzVcdTY1NTVcdTY1NmJcdTcyNGRcdTcyNTJcdTcyNTZcdTcyMzBcdTg2NjJcdTUyMTZcdTgwOWZcdTgwOWNcdTgwOTNcdTgwYmNcdTY3MGFcdTgwYmRcdTgwYjFcdTgwYWJcdTgwYWRcdTgwYjRcdTgwYjdcdTgwZTdcdTgwZThcdTgwZTlcdTgwZWFcdTgw''@;'; put 'put ''ZGJcdTgwYzJcdTgwYzRcdTgwZDlcdTgwY2RcdTgwZDdcdTY3MTBcdTgwZGRcdTgwZWJcdTgwZjFcdTgwZjRcdTgwZWRcdTgxMGRcdTgxMGVcdTgwZjJcdTgwZmNcdTY3MTVcdTgxMTJcdThjNWFcdTgxMzZcdTgxMWVcdTgxMmNcdTgxMThcdTgxMzJcdTgxNDhcdTgxNGNcdTgxNTNcdTgxNzRc''@;'; put 'put ''dTgxNTlcdTgxNWFcdTgxNzFcdTgxNjBcdTgxNjlcdTgxN2NcdTgxN2RcdTgxNmRcdTgxNjdcdTU4NGRcdTVhYjVcdTgxODhcdTgxODJcdTgxOTFcdTZlZDVcdTgxYTNcdTgxYWFcdTgxY2NcdTY3MjZcdTgxY2FcdTgxYmJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzVdLmxlbmd0aDsr''@;'; put 'put ''K0UpNjU1MzMhPT1CWzIzNV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjM1XVtFXV09NjAxNjArRSxMWzYwMTYwK0VdPUJbMjM1XVtFXSk7Zm9yKEJbMjM2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NzIxXHU5NzIyXHU5NzIz''@;'; put 'put ''XHU5NzI0XHU5NzI1XHU5NzI2XHU5NzI3XHU5NzI4XHU5NzI5XHU5NzJiXHU5NzJjXHU5NzJlXHU5NzJmXHU5NzMxXHU5NzMzXHU5NzM0XHU5NzM1XHU5NzM2XHU5NzM3XHU5NzNhXHU5NzNiXHU5NzNjXHU5NzNkXHU5NzNmXHU5NzQwXHU5NzQxXHU5NzQyXHU5NzQzXHU5NzQ0XHU5NzQ1XHU5''@;'; put 'put ''NzQ2XHU5NzQ3XHU5NzQ4XHU5NzQ5XHU5NzRhXHU5NzRiXHU5NzRjXHU5NzRkXHU5NzRlXHU5NzRmXHU5NzUwXHU5NzUxXHU5NzU0XHU5NzU1XHU5NzU3XHU5NzU4XHU5NzVhXHU5NzVjXHU5NzVkXHU5NzVmXHU5NzYzXHU5NzY0XHU5NzY2XHU5NzY3XHU5NzY4XHU5NzZhXHU5NzZiXHU5NzZj''@;'; put 'put ''XHU5NzZkXHU5NzZlXHU5NzZmXHU5NzcwXHU5NzcxXHVmZmZkXHU5NzcyXHU5Nzc1XHU5Nzc3XHU5Nzc4XHU5Nzc5XHU5NzdhXHU5NzdiXHU5NzdkXHU5NzdlXHU5NzdmXHU5NzgwXHU5NzgxXHU5NzgyXHU5NzgzXHU5Nzg0XHU5Nzg2XHU5Nzg3XHU5Nzg4XHU5Nzg5XHU5NzhhXHU5NzhjXHU5''@;'; put 'put ''NzhlXHU5NzhmXHU5NzkwXHU5NzkzXHU5Nzk1XHU5Nzk2XHU5Nzk3XHU5Nzk5XHU5NzlhXHU5NzliXHU5NzljXHU5NzlkXHU4MWMxXHU4MWE2XHU2YjI0XHU2YjM3XHU2YjM5XHU2YjQzXHU2YjQ2XHU2YjU5XHU5OGQxXHU5OGQyXHU5OGQzXHU5OGQ1XHU5OGQ5XHU5OGRhXHU2YmIzXHU1ZjQw''@;'; put 'put ''XHU2YmMyXHU4OWYzXHU2NTkwXHU5ZjUxXHU2NTkzXHU2NWJjXHU2NWM2XHU2NWM0XHU2NWMzXHU2NWNjXHU2NWNlXHU2NWQyXHU2NWQ2XHU3MDgwXHU3MDljXHU3MDk2XHU3MDlkXHU3MGJiXHU3MGMwXHU3MGI3XHU3MGFiXHU3MGIxXHU3MGU4XHU3MGNhXHU3MTEwXHU3MTEzXHU3MTE2XHU3''@;'; put 'put ''MTJmXHU3MTMxXHU3MTczXHU3MTVjXHU3MTY4XHU3MTQ1XHU3MTcyXHU3MTRhXHU3MTc4XHU3MTdhXHU3MTk4XHU3MWIzXHU3MWI1XHU3MWE4XHU3MWEwXHU3MWUwXHU3MWQ0XHU3MWU3XHU3MWY5XHU3MjFkXHU3MjI4XHU3MDZjXHU3MTE4XHU3MTY2XHU3MWI5XHU2MjNlXHU2MjNkXHU2MjQz''@;'; put 'put ''XHU2MjQ4XHU2MjQ5XHU3OTNiXHU3OTQwXHU3OTQ2XHU3OTQ5XHU3OTViXHU3OTVjXHU3OTUzXHU3OTVhXHU3OTYyXHU3OTU3XHU3OTYwXHU3OTZmXHU3OTY3XHU3OTdhXHU3OTg1XHU3OThhXHU3OTlhXHU3OWE3XHU3OWIzXHU1ZmQxXHU1ZmQwXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJb''@;'; put 'put ''MjM2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzZdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIzNl1bRV1dPTYwNDE2K0UsTFs2MDQxNitFXT1CWzIzNl1bRV0pO2ZvcihCWzIzN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTc5''@;'; put 'put ''ZVx1OTc5Zlx1OTdhMVx1OTdhMlx1OTdhNFx1OTdhNVx1OTdhNlx1OTdhN1x1OTdhOFx1OTdhOVx1OTdhYVx1OTdhY1x1OTdhZVx1OTdiMFx1OTdiMVx1OTdiM1x1OTdiNVx1OTdiNlx1OTdiN1x1OTdiOFx1OTdiOVx1OTdiYVx1OTdiYlx1OTdiY1x1OTdiZFx1OTdiZVx1OTdiZlx1OTdjMFx1''@;'; put 'put ''OTdjMVx1OTdjMlx1OTdjM1x1OTdjNFx1OTdjNVx1OTdjNlx1OTdjN1x1OTdjOFx1OTdjOVx1OTdjYVx1OTdjYlx1OTdjY1x1OTdjZFx1OTdjZVx1OTdjZlx1OTdkMFx1OTdkMVx1OTdkMlx1OTdkM1x1OTdkNFx1OTdkNVx1OTdkNlx1OTdkN1x1OTdkOFx1OTdkOVx1OTdkYVx1OTdkYlx1OTdk''@;'; put 'put ''Y1x1OTdkZFx1OTdkZVx1OTdkZlx1OTdlMFx1OTdlMVx1OTdlMlx1OTdlM1x1ZmZmZFx1OTdlNFx1OTdlNVx1OTdlOFx1OTdlZVx1OTdlZlx1OTdmMFx1OTdmMVx1OTdmMlx1OTdmNFx1OTdmN1x1OTdmOFx1OTdmOVx1OTdmYVx1OTdmYlx1OTdmY1x1OTdmZFx1OTdmZVx1OTdmZlx1OTgwMFx1''@;'; put 'put ''OTgwMVx1OTgwMlx1OTgwM1x1OTgwNFx1OTgwNVx1OTgwNlx1OTgwN1x1OTgwOFx1OTgwOVx1OTgwYVx1OTgwYlx1OTgwY1x1OTgwZFx1OTgwZVx1NjAzY1x1NjA1ZFx1NjA1YVx1NjA2N1x1NjA0MVx1NjA1OVx1NjA2M1x1NjBhYlx1NjEwNlx1NjEwZFx1NjE1ZFx1NjFhOVx1NjE5ZFx1NjFj''@;'; put 'put ''Ylx1NjFkMVx1NjIwNlx1ODA4MFx1ODA3Zlx1NmM5M1x1NmNmNlx1NmRmY1x1NzdmNlx1NzdmOFx1NzgwMFx1NzgwOVx1NzgxN1x1NzgxOFx1NzgxMVx1NjVhYlx1NzgyZFx1NzgxY1x1NzgxZFx1NzgzOVx1NzgzYVx1NzgzYlx1NzgxZlx1NzgzY1x1NzgyNVx1NzgyY1x1NzgyM1x1NzgyOVx1''@;'; put 'put ''Nzg0ZVx1Nzg2ZFx1Nzg1Nlx1Nzg1N1x1NzgyNlx1Nzg1MFx1Nzg0N1x1Nzg0Y1x1Nzg2YVx1Nzg5Ylx1Nzg5M1x1Nzg5YVx1Nzg4N1x1Nzg5Y1x1NzhhMVx1NzhhM1x1NzhiMlx1NzhiOVx1NzhhNVx1NzhkNFx1NzhkOVx1NzhjOVx1NzhlY1x1NzhmMlx1NzkwNVx1NzhmNFx1NzkxM1x1Nzky''@;'; put 'put ''NFx1NzkxZVx1NzkzNFx1OWY5Ylx1OWVmOVx1OWVmYlx1OWVmY1x1NzZmMVx1NzcwNFx1NzcwZFx1NzZmOVx1NzcwN1x1NzcwOFx1NzcxYVx1NzcyMlx1NzcxOVx1NzcyZFx1NzcyNlx1NzczNVx1NzczOFx1Nzc1MFx1Nzc1MVx1Nzc0N1x1Nzc0M1x1Nzc1YVx1Nzc2OFx1ZmZmZCIuc3BsaXQo''@;'; put 'put ''IiIpLEU9MDtFIT1CWzIzN10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjM3XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMzddW0VdXT02MDY3MitFLExbNjA2NzIrRV09QlsyMzddW0VdKTtmb3IoQlsyMzhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdTk4MGZcdTk4MTBcdTk4MTFcdTk4MTJcdTk4MTNcdTk4MTRcdTk4MTVcdTk4MTZcdTk4MTdcdTk4MThcdTk4MTlcdTk4MWFcdTk4MWJcdTk4MWNcdTk4MWRcdTk4MWVcdTk4MWZcdTk4MjBcdTk4MjFcdTk4MjJcdTk4MjNcdTk4MjRcdTk4MjVcdTk4MjZcdTk4MjdcdTk4Mjhc''@;'; put 'put ''dTk4MjlcdTk4MmFcdTk4MmJcdTk4MmNcdTk4MmRcdTk4MmVcdTk4MmZcdTk4MzBcdTk4MzFcdTk4MzJcdTk4MzNcdTk4MzRcdTk4MzVcdTk4MzZcdTk4MzdcdTk4MzhcdTk4MzlcdTk4M2FcdTk4M2JcdTk4M2NcdTk4M2RcdTk4M2VcdTk4M2ZcdTk4NDBcdTk4NDFcdTk4NDJcdTk4NDNcdTk4''@;'; put 'put ''NDRcdTk4NDVcdTk4NDZcdTk4NDdcdTk4NDhcdTk4NDlcdTk4NGFcdTk4NGJcdTk4NGNcdTk4NGRcdWZmZmRcdTk4NGVcdTk4NGZcdTk4NTBcdTk4NTFcdTk4NTJcdTk4NTNcdTk4NTRcdTk4NTVcdTk4NTZcdTk4NTdcdTk4NThcdTk4NTlcdTk4NWFcdTk4NWJcdTk4NWNcdTk4NWRcdTk4NWVc''@;'; put 'put ''dTk4NWZcdTk4NjBcdTk4NjFcdTk4NjJcdTk4NjNcdTk4NjRcdTk4NjVcdTk4NjZcdTk4NjdcdTk4NjhcdTk4NjlcdTk4NmFcdTk4NmJcdTk4NmNcdTk4NmRcdTk4NmVcdTc3NjJcdTc3NjVcdTc3N2ZcdTc3OGRcdTc3N2RcdTc3ODBcdTc3OGNcdTc3OTFcdTc3OWZcdTc3YTBcdTc3YjBcdTc3''@;'; put 'put ''YjVcdTc3YmRcdTc1M2FcdTc1NDBcdTc1NGVcdTc1NGJcdTc1NDhcdTc1NWJcdTc1NzJcdTc1NzlcdTc1ODNcdTdmNThcdTdmNjFcdTdmNWZcdThhNDhcdTdmNjhcdTdmNzRcdTdmNzFcdTdmNzlcdTdmODFcdTdmN2VcdTc2Y2RcdTc2ZTVcdTg4MzJcdTk0ODVcdTk0ODZcdTk0ODdcdTk0OGJc''@;'; put 'put ''dTk0OGFcdTk0OGNcdTk0OGRcdTk0OGZcdTk0OTBcdTk0OTRcdTk0OTdcdTk0OTVcdTk0OWFcdTk0OWJcdTk0OWNcdTk0YTNcdTk0YTRcdTk0YWJcdTk0YWFcdTk0YWRcdTk0YWNcdTk0YWZcdTk0YjBcdTk0YjJcdTk0YjRcdTk0YjZcdTk0YjdcdTk0YjhcdTk0YjlcdTk0YmFcdTk0YmNcdTk0''@;'; put 'put ''YmRcdTk0YmZcdTk0YzRcdTk0YzhcdTk0YzlcdTk0Y2FcdTk0Y2JcdTk0Y2NcdTk0Y2RcdTk0Y2VcdTk0ZDBcdTk0ZDFcdTk0ZDJcdTk0ZDVcdTk0ZDZcdTk0ZDdcdTk0ZDlcdTk0ZDhcdTk0ZGJcdTk0ZGVcdTk0ZGZcdTk0ZTBcdTk0ZTJcdTk0ZTRcdTk0ZTVcdTk0ZTdcdTk0ZThcdTk0ZWFc''@;'; put 'put ''dWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzOF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjM4XVtFXV09NjA5MjgrRSxMWzYwOTI4K0VdPUJbMjM4XVtFXSk7Zm9yKEJbMjM5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ODZmXHU5ODcwXHU5ODcxXHU5ODcyXHU5ODczXHU5ODc0XHU5ODhiXHU5ODhlXHU5ODkyXHU5ODk1XHU5ODk5XHU5OGEzXHU5OGE4XHU5OGE5XHU5OGFhXHU5OGFiXHU5OGFjXHU5OGFkXHU5OGFlXHU5OGFmXHU5OGIwXHU5OGIxXHU5OGIyXHU5OGIz''@;'; put 'put ''XHU5OGI0XHU5OGI1XHU5OGI2XHU5OGI3XHU5OGI4XHU5OGI5XHU5OGJhXHU5OGJiXHU5OGJjXHU5OGJkXHU5OGJlXHU5OGJmXHU5OGMwXHU5OGMxXHU5OGMyXHU5OGMzXHU5OGM0XHU5OGM1XHU5OGM2XHU5OGM3XHU5OGM4XHU5OGM5XHU5OGNhXHU5OGNiXHU5OGNjXHU5OGNkXHU5OGNmXHU5''@;'; put 'put ''OGQwXHU5OGQ0XHU5OGQ2XHU5OGQ3XHU5OGRiXHU5OGRjXHU5OGRkXHU5OGUwXHU5OGUxXHU5OGUyXHU5OGUzXHU5OGU0XHVmZmZkXHU5OGU1XHU5OGU2XHU5OGU5XHU5OGVhXHU5OGViXHU5OGVjXHU5OGVkXHU5OGVlXHU5OGVmXHU5OGYwXHU5OGYxXHU5OGYyXHU5OGYzXHU5OGY0XHU5OGY1''@;'; put 'put ''XHU5OGY2XHU5OGY3XHU5OGY4XHU5OGY5XHU5OGZhXHU5OGZiXHU5OGZjXHU5OGZkXHU5OGZlXHU5OGZmXHU5OTAwXHU5OTAxXHU5OTAyXHU5OTAzXHU5OTA0XHU5OTA1XHU5OTA2XHU5OTA3XHU5NGU5XHU5NGViXHU5NGVlXHU5NGVmXHU5NGYzXHU5NGY0XHU5NGY1XHU5NGY3XHU5NGY5XHU5''@;'; put 'put ''NGZjXHU5NGZkXHU5NGZmXHU5NTAzXHU5NTAyXHU5NTA2XHU5NTA3XHU5NTA5XHU5NTBhXHU5NTBkXHU5NTBlXHU5NTBmXHU5NTEyXHU5NTEzXHU5NTE0XHU5NTE1XHU5NTE2XHU5NTE4XHU5NTFiXHU5NTFkXHU5NTFlXHU5NTFmXHU5NTIyXHU5NTJhXHU5NTJiXHU5NTI5XHU5NTJjXHU5NTMx''@;'; put 'put ''XHU5NTMyXHU5NTM0XHU5NTM2XHU5NTM3XHU5NTM4XHU5NTNjXHU5NTNlXHU5NTNmXHU5NTQyXHU5NTM1XHU5NTQ0XHU5NTQ1XHU5NTQ2XHU5NTQ5XHU5NTRjXHU5NTRlXHU5NTRmXHU5NTUyXHU5NTUzXHU5NTU0XHU5NTU2XHU5NTU3XHU5NTU4XHU5NTU5XHU5NTViXHU5NTVlXHU5NTVmXHU5''@;'; put 'put ''NTVkXHU5NTYxXHU5NTYyXHU5NTY0XHU5NTY1XHU5NTY2XHU5NTY3XHU5NTY4XHU5NTY5XHU5NTZhXHU5NTZiXHU5NTZjXHU5NTZmXHU5NTcxXHU5NTcyXHU5NTczXHU5NTNhXHU3N2U3XHU3N2VjXHU5NmM5XHU3OWQ1XHU3OWVkXHU3OWUzXHU3OWViXHU3YTA2XHU1ZDQ3XHU3YTAzXHU3YTAy''@;'; put 'put ''XHU3YTFlXHU3YTE0XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjM5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzldW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIzOV1bRV1dPTYxMTg0K0UsTFs2MTE4NCtFXT1CWzIzOV1bRV0pO2ZvcihCWzI0MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTkwOFx1OTkwOVx1OTkwYVx1OTkwYlx1OTkwY1x1OTkwZVx1OTkwZlx1OTkxMVx1OTkxMlx1OTkxM1x1OTkxNFx1OTkxNVx1OTkxNlx1OTkxN1x1OTkxOFx1OTkxOVx1OTkxYVx1OTkxYlx1OTkxY1x1OTkxZFx1OTkxZVx1OTkx''@;'; put 'put ''Zlx1OTkyMFx1OTkyMVx1OTkyMlx1OTkyM1x1OTkyNFx1OTkyNVx1OTkyNlx1OTkyN1x1OTkyOFx1OTkyOVx1OTkyYVx1OTkyYlx1OTkyY1x1OTkyZFx1OTkyZlx1OTkzMFx1OTkzMVx1OTkzMlx1OTkzM1x1OTkzNFx1OTkzNVx1OTkzNlx1OTkzN1x1OTkzOFx1OTkzOVx1OTkzYVx1OTkzYlx1''@;'; put 'put ''OTkzY1x1OTkzZFx1OTkzZVx1OTkzZlx1OTk0MFx1OTk0MVx1OTk0Mlx1OTk0M1x1OTk0NFx1OTk0NVx1OTk0Nlx1OTk0N1x1OTk0OFx1OTk0OVx1ZmZmZFx1OTk0YVx1OTk0Ylx1OTk0Y1x1OTk0ZFx1OTk0ZVx1OTk0Zlx1OTk1MFx1OTk1MVx1OTk1Mlx1OTk1M1x1OTk1Nlx1OTk1N1x1OTk1''@;'; put 'put ''OFx1OTk1OVx1OTk1YVx1OTk1Ylx1OTk1Y1x1OTk1ZFx1OTk1ZVx1OTk1Zlx1OTk2MFx1OTk2MVx1OTk2Mlx1OTk2NFx1OTk2Nlx1OTk3M1x1OTk3OFx1OTk3OVx1OTk3Ylx1OTk3ZVx1OTk4Mlx1OTk4M1x1OTk4OVx1N2EzOVx1N2EzN1x1N2E1MVx1OWVjZlx1OTlhNVx1N2E3MFx1NzY4OFx1''@;'; put 'put ''NzY4ZVx1NzY5M1x1NzY5OVx1NzZhNFx1NzRkZVx1NzRlMFx1NzUyY1x1OWUyMFx1OWUyMlx1OWUyOFx1OWUyOVx1OWUyYVx1OWUyYlx1OWUyY1x1OWUzMlx1OWUzMVx1OWUzNlx1OWUzOFx1OWUzN1x1OWUzOVx1OWUzYVx1OWUzZVx1OWU0MVx1OWU0Mlx1OWU0NFx1OWU0Nlx1OWU0N1x1OWU0''@;'; put 'put ''OFx1OWU0OVx1OWU0Ylx1OWU0Y1x1OWU0ZVx1OWU1MVx1OWU1NVx1OWU1N1x1OWU1YVx1OWU1Ylx1OWU1Y1x1OWU1ZVx1OWU2M1x1OWU2Nlx1OWU2N1x1OWU2OFx1OWU2OVx1OWU2YVx1OWU2Ylx1OWU2Y1x1OWU3MVx1OWU2ZFx1OWU3M1x1NzU5Mlx1NzU5NFx1NzU5Nlx1NzVhMFx1NzU5ZFx1''@;'; put 'put ''NzVhY1x1NzVhM1x1NzViM1x1NzViNFx1NzViOFx1NzVjNFx1NzViMVx1NzViMFx1NzVjM1x1NzVjMlx1NzVkNlx1NzVjZFx1NzVlM1x1NzVlOFx1NzVlNlx1NzVlNFx1NzVlYlx1NzVlN1x1NzYwM1x1NzVmMVx1NzVmY1x1NzVmZlx1NzYxMFx1NzYwMFx1NzYwNVx1NzYwY1x1NzYxN1x1NzYw''@;'; put 'put ''YVx1NzYyNVx1NzYxOFx1NzYxNVx1NzYxOVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0MF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQwXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyNDBdW0VdXT02MTQ0MCtFLExbNjE0NDArRV09QlsyNDBdW0VdKTtmb3IoQlsyNDFdPSJcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk5OGNcdTk5OGVcdTk5OWFcdTk5OWJcdTk5OWNcdTk5OWRcdTk5OWVcdTk5OWZcdTk5YTBcdTk5YTFcdTk5YTJcdTk5YTNcdTk5YTRcdTk5YTZcdTk5YTdcdTk5YTlcdTk5YWFcdTk5YWJcdTk5YWNcdTk5''@;'; put 'put ''YWRcdTk5YWVcdTk5YWZcdTk5YjBcdTk5YjFcdTk5YjJcdTk5YjNcdTk5YjRcdTk5YjVcdTk5YjZcdTk5YjdcdTk5YjhcdTk5YjlcdTk5YmFcdTk5YmJcdTk5YmNcdTk5YmRcdTk5YmVcdTk5YmZcdTk5YzBcdTk5YzFcdTk5YzJcdTk5YzNcdTk5YzRcdTk5YzVcdTk5YzZcdTk5YzdcdTk5Yzhc''@;'; put 'put ''dTk5YzlcdTk5Y2FcdTk5Y2JcdTk5Y2NcdTk5Y2RcdTk5Y2VcdTk5Y2ZcdTk5ZDBcdTk5ZDFcdTk5ZDJcdTk5ZDNcdTk5ZDRcdTk5ZDVcdTk5ZDZcdTk5ZDdcdTk5ZDhcdWZmZmRcdTk5ZDlcdTk5ZGFcdTk5ZGJcdTk5ZGNcdTk5ZGRcdTk5ZGVcdTk5ZGZcdTk5ZTBcdTk5ZTFcdTk5ZTJcdTk5''@;'; put 'put ''ZTNcdTk5ZTRcdTk5ZTVcdTk5ZTZcdTk5ZTdcdTk5ZThcdTk5ZTlcdTk5ZWFcdTk5ZWJcdTk5ZWNcdTk5ZWRcdTk5ZWVcdTk5ZWZcdTk5ZjBcdTk5ZjFcdTk5ZjJcdTk5ZjNcdTk5ZjRcdTk5ZjVcdTk5ZjZcdTk5ZjdcdTk5ZjhcdTk5ZjlcdTc2MWJcdTc2M2NcdTc2MjJcdTc2MjBcdTc2NDBc''@;'; put 'put ''dTc2MmRcdTc2MzBcdTc2M2ZcdTc2MzVcdTc2NDNcdTc2M2VcdTc2MzNcdTc2NGRcdTc2NWVcdTc2NTRcdTc2NWNcdTc2NTZcdTc2NmJcdTc2NmZcdTdmY2FcdTdhZTZcdTdhNzhcdTdhNzlcdTdhODBcdTdhODZcdTdhODhcdTdhOTVcdTdhYTZcdTdhYTBcdTdhYWNcdTdhYThcdTdhYWRcdTdh''@;'; put 'put ''YjNcdTg4NjRcdTg4NjlcdTg4NzJcdTg4N2RcdTg4N2ZcdTg4ODJcdTg4YTJcdTg4YzZcdTg4YjdcdTg4YmNcdTg4YzlcdTg4ZTJcdTg4Y2VcdTg4ZTNcdTg4ZTVcdTg4ZjFcdTg5MWFcdTg4ZmNcdTg4ZThcdTg4ZmVcdTg4ZjBcdTg5MjFcdTg5MTlcdTg5MTNcdTg5MWJcdTg5MGFcdTg5MzRc''@;'; put 'put ''dTg5MmJcdTg5MzZcdTg5NDFcdTg5NjZcdTg5N2JcdTc1OGJcdTgwZTVcdTc2YjJcdTc2YjRcdTc3ZGNcdTgwMTJcdTgwMTRcdTgwMTZcdTgwMWNcdTgwMjBcdTgwMjJcdTgwMjVcdTgwMjZcdTgwMjdcdTgwMjlcdTgwMjhcdTgwMzFcdTgwMGJcdTgwMzVcdTgwNDNcdTgwNDZcdTgwNGRcdTgw''@;'; put 'put ''NTJcdTgwNjlcdTgwNzFcdTg5ODNcdTk4NzhcdTk4ODBcdTk4ODNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0MV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjQxXVtFXV09NjE2OTYrRSxMWzYxNjk2K0VdPUJbMjQxXVtFXSk7Zm9yKEJb''@;'; put 'put ''MjQyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5OWZhXHU5OWZiXHU5OWZjXHU5OWZkXHU5OWZlXHU5OWZmXHU5YTAwXHU5YTAxXHU5YTAyXHU5YTAzXHU5YTA0XHU5YTA1XHU5YTA2XHU5YTA3XHU5YTA4XHU5YTA5XHU5YTBhXHU5''@;'; put 'put ''YTBiXHU5YTBjXHU5YTBkXHU5YTBlXHU5YTBmXHU5YTEwXHU5YTExXHU5YTEyXHU5YTEzXHU5YTE0XHU5YTE1XHU5YTE2XHU5YTE3XHU5YTE4XHU5YTE5XHU5YTFhXHU5YTFiXHU5YTFjXHU5YTFkXHU5YTFlXHU5YTFmXHU5YTIwXHU5YTIxXHU5YTIyXHU5YTIzXHU5YTI0XHU5YTI1XHU5YTI2''@;'; put 'put ''XHU5YTI3XHU5YTI4XHU5YTI5XHU5YTJhXHU5YTJiXHU5YTJjXHU5YTJkXHU5YTJlXHU5YTJmXHU5YTMwXHU5YTMxXHU5YTMyXHU5YTMzXHU5YTM0XHU5YTM1XHU5YTM2XHU5YTM3XHU5YTM4XHVmZmZkXHU5YTM5XHU5YTNhXHU5YTNiXHU5YTNjXHU5YTNkXHU5YTNlXHU5YTNmXHU5YTQwXHU5''@;'; put 'put ''YTQxXHU5YTQyXHU5YTQzXHU5YTQ0XHU5YTQ1XHU5YTQ2XHU5YTQ3XHU5YTQ4XHU5YTQ5XHU5YTRhXHU5YTRiXHU5YTRjXHU5YTRkXHU5YTRlXHU5YTRmXHU5YTUwXHU5YTUxXHU5YTUyXHU5YTUzXHU5YTU0XHU5YTU1XHU5YTU2XHU5YTU3XHU5YTU4XHU5YTU5XHU5ODg5XHU5ODhjXHU5ODhk''@;'; put 'put ''XHU5ODhmXHU5ODk0XHU5ODlhXHU5ODliXHU5ODllXHU5ODlmXHU5OGExXHU5OGEyXHU5OGE1XHU5OGE2XHU4NjRkXHU4NjU0XHU4NjZjXHU4NjZlXHU4NjdmXHU4NjdhXHU4NjdjXHU4NjdiXHU4NmE4XHU4NjhkXHU4NjhiXHU4NmFjXHU4NjlkXHU4NmE3XHU4NmEzXHU4NmFhXHU4NjkzXHU4''@;'; put 'put ''NmE5XHU4NmI2XHU4NmM0XHU4NmI1XHU4NmNlXHU4NmIwXHU4NmJhXHU4NmIxXHU4NmFmXHU4NmM5XHU4NmNmXHU4NmI0XHU4NmU5XHU4NmYxXHU4NmYyXHU4NmVkXHU4NmYzXHU4NmQwXHU4NzEzXHU4NmRlXHU4NmY0XHU4NmRmXHU4NmQ4XHU4NmQxXHU4NzAzXHU4NzA3XHU4NmY4XHU4NzA4''@;'; put 'put ''XHU4NzBhXHU4NzBkXHU4NzA5XHU4NzIzXHU4NzNiXHU4NzFlXHU4NzI1XHU4NzJlXHU4NzFhXHU4NzNlXHU4NzQ4XHU4NzM0XHU4NzMxXHU4NzI5XHU4NzM3XHU4NzNmXHU4NzgyXHU4NzIyXHU4NzdkXHU4NzdlXHU4NzdiXHU4NzYwXHU4NzcwXHU4NzRjXHU4NzZlXHU4NzhiXHU4NzUzXHU4''@;'; put 'put ''NzYzXHU4NzdjXHU4NzY0XHU4NzU5XHU4NzY1XHU4NzkzXHU4N2FmXHU4N2E4XHU4N2QyXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDJdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzI0Ml1bRV1dPTYxOTUyK0UsTFs2MTk1MitFXT1CWzI0''@;'; put 'put ''Ml1bRV0pO2ZvcihCWzI0M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWE1YVx1OWE1Ylx1OWE1Y1x1OWE1ZFx1OWE1ZVx1OWE1Zlx1OWE2MFx1OWE2MVx1OWE2Mlx1OWE2M1x1OWE2NFx1OWE2NVx1OWE2Nlx1OWE2N1x1OWE2OFx1''@;'; put 'put ''OWE2OVx1OWE2YVx1OWE2Ylx1OWE3Mlx1OWE4M1x1OWE4OVx1OWE4ZFx1OWE4ZVx1OWE5NFx1OWE5NVx1OWE5OVx1OWFhNlx1OWFhOVx1OWFhYVx1OWFhYlx1OWFhY1x1OWFhZFx1OWFhZVx1OWFhZlx1OWFiMlx1OWFiM1x1OWFiNFx1OWFiNVx1OWFiOVx1OWFiYlx1OWFiZFx1OWFiZVx1OWFi''@;'; put 'put ''Zlx1OWFjM1x1OWFjNFx1OWFjNlx1OWFjN1x1OWFjOFx1OWFjOVx1OWFjYVx1OWFjZFx1OWFjZVx1OWFjZlx1OWFkMFx1OWFkMlx1OWFkNFx1OWFkNVx1OWFkNlx1OWFkN1x1OWFkOVx1OWFkYVx1OWFkYlx1OWFkY1x1ZmZmZFx1OWFkZFx1OWFkZVx1OWFlMFx1OWFlMlx1OWFlM1x1OWFlNFx1''@;'; put 'put ''OWFlNVx1OWFlN1x1OWFlOFx1OWFlOVx1OWFlYVx1OWFlY1x1OWFlZVx1OWFmMFx1OWFmMVx1OWFmMlx1OWFmM1x1OWFmNFx1OWFmNVx1OWFmNlx1OWFmN1x1OWFmOFx1OWFmYVx1OWFmY1x1OWFmZFx1OWFmZVx1OWFmZlx1OWIwMFx1OWIwMVx1OWIwMlx1OWIwNFx1OWIwNVx1OWIwNlx1ODdj''@;'; put 'put ''Nlx1ODc4OFx1ODc4NVx1ODdhZFx1ODc5N1x1ODc4M1x1ODdhYlx1ODdlNVx1ODdhY1x1ODdiNVx1ODdiM1x1ODdjYlx1ODdkM1x1ODdiZFx1ODdkMVx1ODdjMFx1ODdjYVx1ODdkYlx1ODdlYVx1ODdlMFx1ODdlZVx1ODgxNlx1ODgxM1x1ODdmZVx1ODgwYVx1ODgxYlx1ODgyMVx1ODgzOVx1''@;'; put 'put ''ODgzY1x1N2YzNlx1N2Y0Mlx1N2Y0NFx1N2Y0NVx1ODIxMFx1N2FmYVx1N2FmZFx1N2IwOFx1N2IwM1x1N2IwNFx1N2IxNVx1N2IwYVx1N2IyYlx1N2IwZlx1N2I0N1x1N2IzOFx1N2IyYVx1N2IxOVx1N2IyZVx1N2IzMVx1N2IyMFx1N2IyNVx1N2IyNFx1N2IzM1x1N2IzZVx1N2IxZVx1N2I1''@;'; put 'put ''OFx1N2I1YVx1N2I0NVx1N2I3NVx1N2I0Y1x1N2I1ZFx1N2I2MFx1N2I2ZVx1N2I3Ylx1N2I2Mlx1N2I3Mlx1N2I3MVx1N2I5MFx1N2JhNlx1N2JhN1x1N2JiOFx1N2JhY1x1N2I5ZFx1N2JhOFx1N2I4NVx1N2JhYVx1N2I5Y1x1N2JhMlx1N2JhYlx1N2JiNFx1N2JkMVx1N2JjMVx1N2JjY1x1''@;'; put 'put ''N2JkZFx1N2JkYVx1N2JlNVx1N2JlNlx1N2JlYVx1N2MwY1x1N2JmZVx1N2JmY1x1N2MwZlx1N2MxNlx1N2MwYlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0M10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQzXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyNDNdW0VdXT02MjIwOCtFLExb''@;'; put 'put ''NjIyMDgrRV09QlsyNDNdW0VdKTtmb3IoQlsyNDRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTliMDdcdTliMDlcdTliMGFcdTliMGJcdTliMGNcdTliMGRcdTliMGVcdTliMTBcdTliMTFcdTliMTJcdTliMTRcdTliMTVcdTliMTZc''@;'; put 'put ''dTliMTdcdTliMThcdTliMTlcdTliMWFcdTliMWJcdTliMWNcdTliMWRcdTliMWVcdTliMjBcdTliMjFcdTliMjJcdTliMjRcdTliMjVcdTliMjZcdTliMjdcdTliMjhcdTliMjlcdTliMmFcdTliMmJcdTliMmNcdTliMmRcdTliMmVcdTliMzBcdTliMzFcdTliMzNcdTliMzRcdTliMzVcdTli''@;'; put 'put ''MzZcdTliMzdcdTliMzhcdTliMzlcdTliM2FcdTliM2RcdTliM2VcdTliM2ZcdTliNDBcdTliNDZcdTliNGFcdTliNGJcdTliNGNcdTliNGVcdTliNTBcdTliNTJcdTliNTNcdTliNTVcdTliNTZcdTliNTdcdTliNThcdTliNTlcdTliNWFcdWZmZmRcdTliNWJcdTliNWNcdTliNWRcdTliNWVc''@;'; put 'put ''dTliNWZcdTliNjBcdTliNjFcdTliNjJcdTliNjNcdTliNjRcdTliNjVcdTliNjZcdTliNjdcdTliNjhcdTliNjlcdTliNmFcdTliNmJcdTliNmNcdTliNmRcdTliNmVcdTliNmZcdTliNzBcdTliNzFcdTliNzJcdTliNzNcdTliNzRcdTliNzVcdTliNzZcdTliNzdcdTliNzhcdTliNzlcdTli''@;'; put 'put ''N2FcdTliN2JcdTdjMWZcdTdjMmFcdTdjMjZcdTdjMzhcdTdjNDFcdTdjNDBcdTgxZmVcdTgyMDFcdTgyMDJcdTgyMDRcdTgxZWNcdTg4NDRcdTgyMjFcdTgyMjJcdTgyMjNcdTgyMmRcdTgyMmZcdTgyMjhcdTgyMmJcdTgyMzhcdTgyM2JcdTgyMzNcdTgyMzRcdTgyM2VcdTgyNDRcdTgyNDlc''@;'; put 'put ''dTgyNGJcdTgyNGZcdTgyNWFcdTgyNWZcdTgyNjhcdTg4N2VcdTg4ODVcdTg4ODhcdTg4ZDhcdTg4ZGZcdTg5NWVcdTdmOWRcdTdmOWZcdTdmYTdcdTdmYWZcdTdmYjBcdTdmYjJcdTdjN2NcdTY1NDlcdTdjOTFcdTdjOWRcdTdjOWNcdTdjOWVcdTdjYTJcdTdjYjJcdTdjYmNcdTdjYmRcdTdj''@;'; put 'put ''YzFcdTdjYzdcdTdjY2NcdTdjY2RcdTdjYzhcdTdjYzVcdTdjZDdcdTdjZThcdTgyNmVcdTY2YThcdTdmYmZcdTdmY2VcdTdmZDVcdTdmZTVcdTdmZTFcdTdmZTZcdTdmZTlcdTdmZWVcdTdmZjNcdTdjZjhcdTdkNzdcdTdkYTZcdTdkYWVcdTdlNDdcdTdlOWJcdTllYjhcdTllYjRcdThkNzNc''@;'; put 'put ''dThkODRcdThkOTRcdThkOTFcdThkYjFcdThkNjdcdThkNmRcdThjNDdcdThjNDlcdTkxNGFcdTkxNTBcdTkxNGVcdTkxNGZcdTkxNjRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0NF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjQ0XVtF''@;'; put 'put ''XV09NjI0NjQrRSxMWzYyNDY0K0VdPUJbMjQ0XVtFXSk7Zm9yKEJbMjQ1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5YjdjXHU5YjdkXHU5YjdlXHU5YjdmXHU5YjgwXHU5YjgxXHU5YjgyXHU5YjgzXHU5Yjg0XHU5Yjg1XHU5Yjg2''@;'; put 'put ''XHU5Yjg3XHU5Yjg4XHU5Yjg5XHU5YjhhXHU5YjhiXHU5YjhjXHU5YjhkXHU5YjhlXHU5YjhmXHU5YjkwXHU5YjkxXHU5YjkyXHU5YjkzXHU5Yjk0XHU5Yjk1XHU5Yjk2XHU5Yjk3XHU5Yjk4XHU5Yjk5XHU5YjlhXHU5YjliXHU5YjljXHU5YjlkXHU5YjllXHU5YjlmXHU5YmEwXHU5YmExXHU5''@;'; put 'put ''YmEyXHU5YmEzXHU5YmE0XHU5YmE1XHU5YmE2XHU5YmE3XHU5YmE4XHU5YmE5XHU5YmFhXHU5YmFiXHU5YmFjXHU5YmFkXHU5YmFlXHU5YmFmXHU5YmIwXHU5YmIxXHU5YmIyXHU5YmIzXHU5YmI0XHU5YmI1XHU5YmI2XHU5YmI3XHU5YmI4XHU5YmI5XHU5YmJhXHVmZmZkXHU5YmJiXHU5YmJj''@;'; put 'put ''XHU5YmJkXHU5YmJlXHU5YmJmXHU5YmMwXHU5YmMxXHU5YmMyXHU5YmMzXHU5YmM0XHU5YmM1XHU5YmM2XHU5YmM3XHU5YmM4XHU5YmM5XHU5YmNhXHU5YmNiXHU5YmNjXHU5YmNkXHU5YmNlXHU5YmNmXHU5YmQwXHU5YmQxXHU5YmQyXHU5YmQzXHU5YmQ0XHU5YmQ1XHU5YmQ2XHU5YmQ3XHU5''@;'; put 'put ''YmQ4XHU5YmQ5XHU5YmRhXHU5YmRiXHU5MTYyXHU5MTYxXHU5MTcwXHU5MTY5XHU5MTZmXHU5MTdkXHU5MTdlXHU5MTcyXHU5MTc0XHU5MTc5XHU5MThjXHU5MTg1XHU5MTkwXHU5MThkXHU5MTkxXHU5MWEyXHU5MWEzXHU5MWFhXHU5MWFkXHU5MWFlXHU5MWFmXHU5MWI1XHU5MWI0XHU5MWJh''@;'; put 'put ''XHU4YzU1XHU5ZTdlXHU4ZGI4XHU4ZGViXHU4ZTA1XHU4ZTU5XHU4ZTY5XHU4ZGI1XHU4ZGJmXHU4ZGJjXHU4ZGJhXHU4ZGM0XHU4ZGQ2XHU4ZGQ3XHU4ZGRhXHU4ZGRlXHU4ZGNlXHU4ZGNmXHU4ZGRiXHU4ZGM2XHU4ZGVjXHU4ZGY3XHU4ZGY4XHU4ZGUzXHU4ZGY5XHU4ZGZiXHU4ZGU0XHU4''@;'; put 'put ''ZTA5XHU4ZGZkXHU4ZTE0XHU4ZTFkXHU4ZTFmXHU4ZTJjXHU4ZTJlXHU4ZTIzXHU4ZTJmXHU4ZTNhXHU4ZTQwXHU4ZTM5XHU4ZTM1XHU4ZTNkXHU4ZTMxXHU4ZTQ5XHU4ZTQxXHU4ZTQyXHU4ZTUxXHU4ZTUyXHU4ZTRhXHU4ZTcwXHU4ZTc2XHU4ZTdjXHU4ZTZmXHU4ZTc0XHU4ZTg1XHU4ZThm''@;'; put 'put ''XHU4ZTk0XHU4ZTkwXHU4ZTljXHU4ZTllXHU4Yzc4XHU4YzgyXHU4YzhhXHU4Yzg1XHU4Yzk4XHU4Yzk0XHU2NTliXHU4OWQ2XHU4OWRlXHU4OWRhXHU4OWRjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQ1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDVdW0VdLmNoYXJDb2RlQXQoMCkm''@;'; put 'put ''JihtZVtCWzI0NV1bRV1dPTYyNzIwK0UsTFs2MjcyMCtFXT1CWzI0NV1bRV0pO2ZvcihCWzI0Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWJkY1x1OWJkZFx1OWJkZVx1OWJkZlx1OWJlMFx1OWJlMVx1OWJlMlx1OWJlM1x1OWJl''@;'; put 'put ''NFx1OWJlNVx1OWJlNlx1OWJlN1x1OWJlOFx1OWJlOVx1OWJlYVx1OWJlYlx1OWJlY1x1OWJlZFx1OWJlZVx1OWJlZlx1OWJmMFx1OWJmMVx1OWJmMlx1OWJmM1x1OWJmNFx1OWJmNVx1OWJmNlx1OWJmN1x1OWJmOFx1OWJmOVx1OWJmYVx1OWJmYlx1OWJmY1x1OWJmZFx1OWJmZVx1OWJmZlx1''@;'; put 'put ''OWMwMFx1OWMwMVx1OWMwMlx1OWMwM1x1OWMwNFx1OWMwNVx1OWMwNlx1OWMwN1x1OWMwOFx1OWMwOVx1OWMwYVx1OWMwYlx1OWMwY1x1OWMwZFx1OWMwZVx1OWMwZlx1OWMxMFx1OWMxMVx1OWMxMlx1OWMxM1x1OWMxNFx1OWMxNVx1OWMxNlx1OWMxN1x1OWMxOFx1OWMxOVx1OWMxYVx1ZmZm''@;'; put 'put ''ZFx1OWMxYlx1OWMxY1x1OWMxZFx1OWMxZVx1OWMxZlx1OWMyMFx1OWMyMVx1OWMyMlx1OWMyM1x1OWMyNFx1OWMyNVx1OWMyNlx1OWMyN1x1OWMyOFx1OWMyOVx1OWMyYVx1OWMyYlx1OWMyY1x1OWMyZFx1OWMyZVx1OWMyZlx1OWMzMFx1OWMzMVx1OWMzMlx1OWMzM1x1OWMzNFx1OWMzNVx1''@;'; put 'put ''OWMzNlx1OWMzN1x1OWMzOFx1OWMzOVx1OWMzYVx1OWMzYlx1ODllNVx1ODllYlx1ODllZlx1OGEzZVx1OGIyNlx1OTc1M1x1OTZlOVx1OTZmM1x1OTZlZlx1OTcwNlx1OTcwMVx1OTcwOFx1OTcwZlx1OTcwZVx1OTcyYVx1OTcyZFx1OTczMFx1OTczZVx1OWY4MFx1OWY4M1x1OWY4NVx1OWY4''@;'; put 'put ''Nlx1OWY4N1x1OWY4OFx1OWY4OVx1OWY4YVx1OWY4Y1x1OWVmZVx1OWYwYlx1OWYwZFx1OTZiOVx1OTZiY1x1OTZiZFx1OTZjZVx1OTZkMlx1NzdiZlx1OTZlMFx1OTI4ZVx1OTJhZVx1OTJjOFx1OTMzZVx1OTM2YVx1OTNjYVx1OTM4Zlx1OTQzZVx1OTQ2Ylx1OWM3Zlx1OWM4Mlx1OWM4NVx1''@;'; put 'put ''OWM4Nlx1OWM4N1x1OWM4OFx1N2EyM1x1OWM4Ylx1OWM4ZVx1OWM5MFx1OWM5MVx1OWM5Mlx1OWM5NFx1OWM5NVx1OWM5YVx1OWM5Ylx1OWM5ZVx1OWM5Zlx1OWNhMFx1OWNhMVx1OWNhMlx1OWNhM1x1OWNhNVx1OWNhNlx1OWNhN1x1OWNhOFx1OWNhOVx1OWNhYlx1OWNhZFx1OWNhZVx1OWNi''@;'; put 'put ''MFx1OWNiMVx1OWNiMlx1OWNiM1x1OWNiNFx1OWNiNVx1OWNiNlx1OWNiN1x1OWNiYVx1OWNiYlx1OWNiY1x1OWNiZFx1OWNjNFx1OWNjNVx1OWNjNlx1OWNjN1x1OWNjYVx1OWNjYlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQ2XVtFXS5j''@;'; put 'put ''aGFyQ29kZUF0KDApJiYobWVbQlsyNDZdW0VdXT02Mjk3NitFLExbNjI5NzYrRV09QlsyNDZdW0VdKTtmb3IoQlsyNDddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTljM2NcdTljM2RcdTljM2VcdTljM2ZcdTljNDBcdTljNDFcdTlj''@;'; put 'put ''NDJcdTljNDNcdTljNDRcdTljNDVcdTljNDZcdTljNDdcdTljNDhcdTljNDlcdTljNGFcdTljNGJcdTljNGNcdTljNGRcdTljNGVcdTljNGZcdTljNTBcdTljNTFcdTljNTJcdTljNTNcdTljNTRcdTljNTVcdTljNTZcdTljNTdcdTljNThcdTljNTlcdTljNWFcdTljNWJcdTljNWNcdTljNWRc''@;'; put 'put ''dTljNWVcdTljNWZcdTljNjBcdTljNjFcdTljNjJcdTljNjNcdTljNjRcdTljNjVcdTljNjZcdTljNjdcdTljNjhcdTljNjlcdTljNmFcdTljNmJcdTljNmNcdTljNmRcdTljNmVcdTljNmZcdTljNzBcdTljNzFcdTljNzJcdTljNzNcdTljNzRcdTljNzVcdTljNzZcdTljNzdcdTljNzhcdTlj''@;'; put 'put ''NzlcdTljN2FcdWZmZmRcdTljN2JcdTljN2RcdTljN2VcdTljODBcdTljODNcdTljODRcdTljODlcdTljOGFcdTljOGNcdTljOGZcdTljOTNcdTljOTZcdTljOTdcdTljOThcdTljOTlcdTljOWRcdTljYWFcdTljYWNcdTljYWZcdTljYjlcdTljYmVcdTljYmZcdTljYzBcdTljYzFcdTljYzJc''@;'; put 'put ''dTljYzhcdTljYzlcdTljZDFcdTljZDJcdTljZGFcdTljZGJcdTljZTBcdTljZTFcdTljY2NcdTljY2RcdTljY2VcdTljY2ZcdTljZDBcdTljZDNcdTljZDRcdTljZDVcdTljZDdcdTljZDhcdTljZDlcdTljZGNcdTljZGRcdTljZGZcdTljZTJcdTk3N2NcdTk3ODVcdTk3OTFcdTk3OTJcdTk3''@;'; put 'put ''OTRcdTk3YWZcdTk3YWJcdTk3YTNcdTk3YjJcdTk3YjRcdTlhYjFcdTlhYjBcdTlhYjdcdTllNThcdTlhYjZcdTlhYmFcdTlhYmNcdTlhYzFcdTlhYzBcdTlhYzVcdTlhYzJcdTlhY2JcdTlhY2NcdTlhZDFcdTliNDVcdTliNDNcdTliNDdcdTliNDlcdTliNDhcdTliNGRcdTliNTFcdTk4ZThc''@;'; put 'put ''dTk5MGRcdTk5MmVcdTk5NTVcdTk5NTRcdTlhZGZcdTlhZTFcdTlhZTZcdTlhZWZcdTlhZWJcdTlhZmJcdTlhZWRcdTlhZjlcdTliMDhcdTliMGZcdTliMTNcdTliMWZcdTliMjNcdTllYmRcdTllYmVcdTdlM2JcdTllODJcdTllODdcdTllODhcdTllOGJcdTllOTJcdTkzZDZcdTllOWRcdTll''@;'; put 'put ''OWZcdTllZGJcdTllZGNcdTllZGRcdTllZTBcdTllZGZcdTllZTJcdTllZTlcdTllZTdcdTllZTVcdTllZWFcdTllZWZcdTlmMjJcdTlmMmNcdTlmMmZcdTlmMzlcdTlmMzdcdTlmM2RcdTlmM2VcdTlmNDRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDddLmxlbmd0aDsrK0UpNjU1MzMh''@;'; put 'put ''PT1CWzI0N11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjQ3XVtFXV09NjMyMzIrRSxMWzYzMjMyK0VdPUJbMjQ3XVtFXSk7Zm9yKEJbMjQ4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5Y2UzXHU5Y2U0XHU5Y2U1XHU5Y2U2XHU5''@;'; put 'put ''Y2U3XHU5Y2U4XHU5Y2U5XHU5Y2VhXHU5Y2ViXHU5Y2VjXHU5Y2VkXHU5Y2VlXHU5Y2VmXHU5Y2YwXHU5Y2YxXHU5Y2YyXHU5Y2YzXHU5Y2Y0XHU5Y2Y1XHU5Y2Y2XHU5Y2Y3XHU5Y2Y4XHU5Y2Y5XHU5Y2ZhXHU5Y2ZiXHU5Y2ZjXHU5Y2ZkXHU5Y2ZlXHU5Y2ZmXHU5ZDAwXHU5ZDAxXHU5ZDAy''@;'; put 'put ''XHU5ZDAzXHU5ZDA0XHU5ZDA1XHU5ZDA2XHU5ZDA3XHU5ZDA4XHU5ZDA5XHU5ZDBhXHU5ZDBiXHU5ZDBjXHU5ZDBkXHU5ZDBlXHU5ZDBmXHU5ZDEwXHU5ZDExXHU5ZDEyXHU5ZDEzXHU5ZDE0XHU5ZDE1XHU5ZDE2XHU5ZDE3XHU5ZDE4XHU5ZDE5XHU5ZDFhXHU5ZDFiXHU5ZDFjXHU5ZDFkXHU5''@;'; put 'put ''ZDFlXHU5ZDFmXHU5ZDIwXHU5ZDIxXHVmZmZkXHU5ZDIyXHU5ZDIzXHU5ZDI0XHU5ZDI1XHU5ZDI2XHU5ZDI3XHU5ZDI4XHU5ZDI5XHU5ZDJhXHU5ZDJiXHU5ZDJjXHU5ZDJkXHU5ZDJlXHU5ZDJmXHU5ZDMwXHU5ZDMxXHU5ZDMyXHU5ZDMzXHU5ZDM0XHU5ZDM1XHU5ZDM2XHU5ZDM3XHU5ZDM4''@;'; put 'put ''XHU5ZDM5XHU5ZDNhXHU5ZDNiXHU5ZDNjXHU5ZDNkXHU5ZDNlXHU5ZDNmXHU5ZDQwXHU5ZDQxXHU5ZDQyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQ4XS5sZW5n''@;'; put 'put ''dGg7KytFKTY1NTMzIT09QlsyNDhdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzI0OF1bRV1dPTYzNDg4K0UsTFs2MzQ4OCtFXT1CWzI0OF1bRV0pO2ZvcihCWzI0OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWQ0M1x1OWQ0NFx1''@;'; put 'put ''OWQ0NVx1OWQ0Nlx1OWQ0N1x1OWQ0OFx1OWQ0OVx1OWQ0YVx1OWQ0Ylx1OWQ0Y1x1OWQ0ZFx1OWQ0ZVx1OWQ0Zlx1OWQ1MFx1OWQ1MVx1OWQ1Mlx1OWQ1M1x1OWQ1NFx1OWQ1NVx1OWQ1Nlx1OWQ1N1x1OWQ1OFx1OWQ1OVx1OWQ1YVx1OWQ1Ylx1OWQ1Y1x1OWQ1ZFx1OWQ1ZVx1OWQ1Zlx1OWQ2''@;'; put 'put ''MFx1OWQ2MVx1OWQ2Mlx1OWQ2M1x1OWQ2NFx1OWQ2NVx1OWQ2Nlx1OWQ2N1x1OWQ2OFx1OWQ2OVx1OWQ2YVx1OWQ2Ylx1OWQ2Y1x1OWQ2ZFx1OWQ2ZVx1OWQ2Zlx1OWQ3MFx1OWQ3MVx1OWQ3Mlx1OWQ3M1x1OWQ3NFx1OWQ3NVx1OWQ3Nlx1OWQ3N1x1OWQ3OFx1OWQ3OVx1OWQ3YVx1OWQ3Ylx1''@;'; put 'put ''OWQ3Y1x1OWQ3ZFx1OWQ3ZVx1OWQ3Zlx1OWQ4MFx1OWQ4MVx1ZmZmZFx1OWQ4Mlx1OWQ4M1x1OWQ4NFx1OWQ4NVx1OWQ4Nlx1OWQ4N1x1OWQ4OFx1OWQ4OVx1OWQ4YVx1OWQ4Ylx1OWQ4Y1x1OWQ4ZFx1OWQ4ZVx1OWQ4Zlx1OWQ5MFx1OWQ5MVx1OWQ5Mlx1OWQ5M1x1OWQ5NFx1OWQ5NVx1OWQ5''@;'; put 'put ''Nlx1OWQ5N1x1OWQ5OFx1OWQ5OVx1OWQ5YVx1OWQ5Ylx1OWQ5Y1x1OWQ5ZFx1OWQ5ZVx1OWQ5Zlx1OWRhMFx1OWRhMVx1OWRhMlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtF''@;'; put 'put ''IT1CWzI0OV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQ5XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyNDldW0VdXT02Mzc0NCtFLExbNjM3NDQrRV09QlsyNDldW0VdKTtmb3IoQlsyNTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dTlkYTNcdTlkYTRcdTlkYTVcdTlkYTZcdTlkYTdcdTlkYThcdTlkYTlcdTlkYWFcdTlkYWJcdTlkYWNcdTlkYWRcdTlkYWVcdTlkYWZcdTlkYjBcdTlkYjFcdTlkYjJcdTlkYjNcdTlkYjRcdTlkYjVcdTlkYjZcdTlkYjdcdTlkYjhcdTlkYjlcdTlkYmFcdTlkYmJcdTlkYmNcdTlkYmRcdTlk''@;'; put 'put ''YmVcdTlkYmZcdTlkYzBcdTlkYzFcdTlkYzJcdTlkYzNcdTlkYzRcdTlkYzVcdTlkYzZcdTlkYzdcdTlkYzhcdTlkYzlcdTlkY2FcdTlkY2JcdTlkY2NcdTlkY2RcdTlkY2VcdTlkY2ZcdTlkZDBcdTlkZDFcdTlkZDJcdTlkZDNcdTlkZDRcdTlkZDVcdTlkZDZcdTlkZDdcdTlkZDhcdTlkZDlc''@;'; put 'put ''dTlkZGFcdTlkZGJcdTlkZGNcdTlkZGRcdTlkZGVcdTlkZGZcdTlkZTBcdTlkZTFcdWZmZmRcdTlkZTJcdTlkZTNcdTlkZTRcdTlkZTVcdTlkZTZcdTlkZTdcdTlkZThcdTlkZTlcdTlkZWFcdTlkZWJcdTlkZWNcdTlkZWRcdTlkZWVcdTlkZWZcdTlkZjBcdTlkZjFcdTlkZjJcdTlkZjNcdTlk''@;'; put 'put ''ZjRcdTlkZjVcdTlkZjZcdTlkZjdcdTlkZjhcdTlkZjlcdTlkZmFcdTlkZmJcdTlkZmNcdTlkZmRcdTlkZmVcdTlkZmZcdTllMDBcdTllMDFcdTllMDJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNw''@;'; put 'put ''bGl0KCIiKSxFPTA7RSE9QlsyNTBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI1MF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjUwXVtFXV09NjRlMytFLExbNjRlMytFXT1CWzI1MF1bRV0pO2ZvcihCWzI1MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1OWUwM1x1OWUwNFx1OWUwNVx1OWUwNlx1OWUwN1x1OWUwOFx1OWUwOVx1OWUwYVx1OWUwYlx1OWUwY1x1OWUwZFx1OWUwZVx1OWUwZlx1OWUxMFx1OWUxMVx1OWUxMlx1OWUxM1x1OWUxNFx1OWUxNVx1OWUxNlx1OWUxN1x1OWUxOFx1OWUxOVx1OWUxYVx1OWUxYlx1OWUx''@;'; put 'put ''Y1x1OWUxZFx1OWUxZVx1OWUyNFx1OWUyN1x1OWUyZVx1OWUzMFx1OWUzNFx1OWUzYlx1OWUzY1x1OWU0MFx1OWU0ZFx1OWU1MFx1OWU1Mlx1OWU1M1x1OWU1NFx1OWU1Nlx1OWU1OVx1OWU1ZFx1OWU1Zlx1OWU2MFx1OWU2MVx1OWU2Mlx1OWU2NVx1OWU2ZVx1OWU2Zlx1OWU3Mlx1OWU3NFx1''@;'; put 'put ''OWU3NVx1OWU3Nlx1OWU3N1x1OWU3OFx1OWU3OVx1OWU3YVx1OWU3Ylx1OWU3Y1x1OWU3ZFx1OWU4MFx1ZmZmZFx1OWU4MVx1OWU4M1x1OWU4NFx1OWU4NVx1OWU4Nlx1OWU4OVx1OWU4YVx1OWU4Y1x1OWU4ZFx1OWU4ZVx1OWU4Zlx1OWU5MFx1OWU5MVx1OWU5NFx1OWU5NVx1OWU5Nlx1OWU5''@;'; put 'put ''N1x1OWU5OFx1OWU5OVx1OWU5YVx1OWU5Ylx1OWU5Y1x1OWU5ZVx1OWVhMFx1OWVhMVx1OWVhMlx1OWVhM1x1OWVhNFx1OWVhNVx1OWVhN1x1OWVhOFx1OWVhOVx1OWVhYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI1MV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjUxXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyNTFdW0VdXT02NDI1NitFLExbNjQyNTYrRV09QlsyNTFdW0VdKTtmb3IoQlsyNTJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTllYWJcdTllYWNcdTllYWRcdTllYWVcdTllYWZcdTllYjBcdTllYjFcdTllYjJcdTllYjNcdTllYjVcdTllYjZcdTllYjdcdTllYjlcdTllYmFcdTllYmNcdTllYmZcdTllYzBcdTllYzFcdTllYzJcdTllYzNcdTllYzVcdTllYzZcdTllYzdcdTll''@;'; put 'put ''YzhcdTllY2FcdTllY2JcdTllY2NcdTllZDBcdTllZDJcdTllZDNcdTllZDVcdTllZDZcdTllZDdcdTllZDlcdTllZGFcdTllZGVcdTllZTFcdTllZTNcdTllZTRcdTllZTZcdTllZThcdTllZWJcdTllZWNcdTllZWRcdTllZWVcdTllZjBcdTllZjFcdTllZjJcdTllZjNcdTllZjRcdTllZjVc''@;'; put 'put ''dTllZjZcdTllZjdcdTllZjhcdTllZmFcdTllZmRcdTllZmZcdTlmMDBcdTlmMDFcdTlmMDJcdTlmMDNcdTlmMDRcdTlmMDVcdWZmZmRcdTlmMDZcdTlmMDdcdTlmMDhcdTlmMDlcdTlmMGFcdTlmMGNcdTlmMGZcdTlmMTFcdTlmMTJcdTlmMTRcdTlmMTVcdTlmMTZcdTlmMThcdTlmMWFcdTlm''@;'; put 'put ''MWJcdTlmMWNcdTlmMWRcdTlmMWVcdTlmMWZcdTlmMjFcdTlmMjNcdTlmMjRcdTlmMjVcdTlmMjZcdTlmMjdcdTlmMjhcdTlmMjlcdTlmMmFcdTlmMmJcdTlmMmRcdTlmMmVcdTlmMzBcdTlmMzFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNTJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI1Ml1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjUyXVtFXV09NjQ1MTIrRSxMWzY0NTEyK0VdPUJbMjUyXVtFXSk7Zm9yKEJbMjUzXT0iXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZjMyXHU5ZjMzXHU5ZjM0XHU5ZjM1XHU5ZjM2XHU5ZjM4XHU5ZjNhXHU5ZjNjXHU5ZjNmXHU5ZjQwXHU5ZjQxXHU5ZjQyXHU5ZjQzXHU5ZjQ1XHU5ZjQ2XHU5ZjQ3XHU5ZjQ4XHU5ZjQ5XHU5ZjRhXHU5ZjRiXHU5ZjRjXHU5''@;'; put 'put ''ZjRkXHU5ZjRlXHU5ZjRmXHU5ZjUyXHU5ZjUzXHU5ZjU0XHU5ZjU1XHU5ZjU2XHU5ZjU3XHU5ZjU4XHU5ZjU5XHU5ZjVhXHU5ZjViXHU5ZjVjXHU5ZjVkXHU5ZjVlXHU5ZjVmXHU5ZjYwXHU5ZjYxXHU5ZjYyXHU5ZjYzXHU5ZjY0XHU5ZjY1XHU5ZjY2XHU5ZjY3XHU5ZjY4XHU5ZjY5XHU5ZjZh''@;'; put 'put ''XHU5ZjZiXHU5ZjZjXHU5ZjZkXHU5ZjZlXHU5ZjZmXHU5ZjcwXHU5ZjcxXHU5ZjcyXHU5ZjczXHU5Zjc0XHU5Zjc1XHU5Zjc2XHU5Zjc3XHU5Zjc4XHVmZmZkXHU5Zjc5XHU5ZjdhXHU5ZjdiXHU5ZjdjXHU5ZjdkXHU5ZjdlXHU5ZjgxXHU5ZjgyXHU5ZjhkXHU5ZjhlXHU5ZjhmXHU5ZjkwXHU5''@;'; put 'put ''ZjkxXHU5ZjkyXHU5ZjkzXHU5Zjk0XHU5Zjk1XHU5Zjk2XHU5Zjk3XHU5Zjk4XHU5ZjljXHU5ZjlkXHU5ZjllXHU5ZmExXHU5ZmEyXHU5ZmEzXHU5ZmE0XHU5ZmE1XHVmOTJjXHVmOTc5XHVmOTk1XHVmOWU3XHVmOWYxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjUzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNTNdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzI1M11bRV1dPTY0NzY4K0UsTFs2NDc2OCtFXT1CWzI1M11bRV0pO2ZvcihCWzI1NF09Ilx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmEwY1x1ZmEwZFx1ZmEwZVx1ZmEwZlx1ZmExMVx1ZmExM1x1ZmExNFx1ZmExOFx1ZmExZlx1ZmEyMFx1ZmEyMVx1ZmEyM1x1ZmEyNFx1ZmEyN1x1ZmEyOFx1ZmEyOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI1NF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjU0XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyNTRdW0VdXT02NTAyNCtFLExbNjUwMjQrRV09QlsyNTRdW0VdKTtyZXR1''@;'; put 'put ''cm57ZW5jOm1lLGRlYzpMfX0oKSxKZVs5NDldPWZ1bmN0aW9uKCl7dmFyIEUsTD1bXSxtZT17fSxCPVtdO2ZvcihCWzBdPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFh''@;'; put 'put ''XHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzBdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzBdW0VdXT0wK0UsTFswK0VdPUJbMF1bRV0pO2Zv''@;'; put 'put ''cihCWzEyOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWMwMlx1YWMwM1x1YWMwNVx1YWMwNlx1YWMwYlx1YWMwY1x1YWMwZFx1YWMwZVx1YWMwZlx1YWMxOFx1YWMxZVx1YWMxZlx1YWMyMVx1YWMyMlx1YWMyM1x1YWMy''@;'; put 'put ''NVx1YWMyNlx1YWMyN1x1YWMyOFx1YWMyOVx1YWMyYVx1YWMyYlx1YWMyZVx1YWMzMlx1YWMzM1x1YWMzNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWMzNVx1YWMzNlx1YWMzN1x1YWMzYVx1YWMzYlx1YWMzZFx1YWMzZVx1YWMzZlx1YWM0MVx1YWM0Mlx1YWM0M1x1''@;'; put 'put ''YWM0NFx1YWM0NVx1YWM0Nlx1YWM0N1x1YWM0OFx1YWM0OVx1YWM0YVx1YWM0Y1x1YWM0ZVx1YWM0Zlx1YWM1MFx1YWM1MVx1YWM1Mlx1YWM1M1x1YWM1NVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWM1Nlx1YWM1N1x1YWM1OVx1YWM1YVx1YWM1Ylx1YWM1ZFx1YWM1''@;'; put 'put ''ZVx1YWM1Zlx1YWM2MFx1YWM2MVx1YWM2Mlx1YWM2M1x1YWM2NFx1YWM2NVx1YWM2Nlx1YWM2N1x1YWM2OFx1YWM2OVx1YWM2YVx1YWM2Ylx1YWM2Y1x1YWM2ZFx1YWM2ZVx1YWM2Zlx1YWM3Mlx1YWM3M1x1YWM3NVx1YWM3Nlx1YWM3OVx1YWM3Ylx1YWM3Y1x1YWM3ZFx1YWM3ZVx1YWM3Zlx1''@;'; put 'put ''YWM4Mlx1YWM4N1x1YWM4OFx1YWM4ZFx1YWM4ZVx1YWM4Zlx1YWM5MVx1YWM5Mlx1YWM5M1x1YWM5NVx1YWM5Nlx1YWM5N1x1YWM5OFx1YWM5OVx1YWM5YVx1YWM5Ylx1YWM5ZVx1YWNhMlx1YWNhM1x1YWNhNFx1YWNhNVx1YWNhNlx1YWNhN1x1YWNhYlx1YWNhZFx1YWNhZVx1YWNiMVx1YWNi''@;'; put 'put ''Mlx1YWNiM1x1YWNiNFx1YWNiNVx1YWNiNlx1YWNiN1x1YWNiYVx1YWNiZVx1YWNiZlx1YWNjMFx1YWNjMlx1YWNjM1x1YWNjNVx1YWNjNlx1YWNjN1x1YWNjOVx1YWNjYVx1YWNjYlx1YWNjZFx1YWNjZVx1YWNjZlx1YWNkMFx1YWNkMVx1YWNkMlx1YWNkM1x1YWNkNFx1YWNkNlx1YWNkOFx1''@;'; put 'put ''YWNkOVx1YWNkYVx1YWNkYlx1YWNkY1x1YWNkZFx1YWNkZVx1YWNkZlx1YWNlMlx1YWNlM1x1YWNlNVx1YWNlNlx1YWNlOVx1YWNlYlx1YWNlZFx1YWNlZVx1YWNmMlx1YWNmNFx1YWNmN1x1YWNmOFx1YWNmOVx1YWNmYVx1YWNmYlx1YWNmZVx1YWNmZlx1YWQwMVx1YWQwMlx1YWQwM1x1YWQw''@;'; put 'put ''NVx1YWQwN1x1YWQwOFx1YWQwOVx1YWQwYVx1YWQwYlx1YWQwZVx1YWQxMFx1YWQxMlx1YWQxM1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEyOV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTI5XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxMjldW0VdXT0zMzAyNCtFLExbMzMwMjQrRV09''@;'; put 'put ''QlsxMjldW0VdKTtmb3IoQlsxMzBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWFkMTRcdWFkMTVcdWFkMTZcdWFkMTdcdWFkMTlcdWFkMWFcdWFkMWJcdWFkMWRcdWFkMWVcdWFkMWZcdWFkMjFcdWFkMjJcdWFkMjNcdWFk''@;'; put 'put ''MjRcdWFkMjVcdWFkMjZcdWFkMjdcdWFkMjhcdWFkMmFcdWFkMmJcdWFkMmVcdWFkMmZcdWFkMzBcdWFkMzFcdWFkMzJcdWFkMzNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWFkMzZcdWFkMzdcdWFkMzlcdWFkM2FcdWFkM2JcdWFkM2RcdWFkM2VcdWFkM2ZcdWFkNDBc''@;'; put 'put ''dWFkNDFcdWFkNDJcdWFkNDNcdWFkNDZcdWFkNDhcdWFkNGFcdWFkNGJcdWFkNGNcdWFkNGRcdWFkNGVcdWFkNGZcdWFkNTFcdWFkNTJcdWFkNTNcdWFkNTVcdWFkNTZcdWFkNTdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWFkNTlcdWFkNWFcdWFkNWJcdWFkNWNcdWFk''@;'; put 'put ''NWRcdWFkNWVcdWFkNWZcdWFkNjBcdWFkNjJcdWFkNjRcdWFkNjVcdWFkNjZcdWFkNjdcdWFkNjhcdWFkNjlcdWFkNmFcdWFkNmJcdWFkNmVcdWFkNmZcdWFkNzFcdWFkNzJcdWFkNzdcdWFkNzhcdWFkNzlcdWFkN2FcdWFkN2VcdWFkODBcdWFkODNcdWFkODRcdWFkODVcdWFkODZcdWFkODdc''@;'; put 'put ''dWFkOGFcdWFkOGJcdWFkOGRcdWFkOGVcdWFkOGZcdWFkOTFcdWFkOTJcdWFkOTNcdWFkOTRcdWFkOTVcdWFkOTZcdWFkOTdcdWFkOThcdWFkOTlcdWFkOWFcdWFkOWJcdWFkOWVcdWFkOWZcdWFkYTBcdWFkYTFcdWFkYTJcdWFkYTNcdWFkYTVcdWFkYTZcdWFkYTdcdWFkYThcdWFkYTlcdWFk''@;'; put 'put ''YWFcdWFkYWJcdWFkYWNcdWFkYWRcdWFkYWVcdWFkYWZcdWFkYjBcdWFkYjFcdWFkYjJcdWFkYjNcdWFkYjRcdWFkYjVcdWFkYjZcdWFkYjhcdWFkYjlcdWFkYmFcdWFkYmJcdWFkYmNcdWFkYmRcdWFkYmVcdWFkYmZcdWFkYzJcdWFkYzNcdWFkYzVcdWFkYzZcdWFkYzdcdWFkYzlcdWFkY2Fc''@;'; put 'put ''dWFkY2JcdWFkY2NcdWFkY2RcdWFkY2VcdWFkY2ZcdWFkZDJcdWFkZDRcdWFkZDVcdWFkZDZcdWFkZDdcdWFkZDhcdWFkZDlcdWFkZGFcdWFkZGJcdWFkZGRcdWFkZGVcdWFkZGZcdWFkZTFcdWFkZTJcdWFkZTNcdWFkZTVcdWFkZTZcdWFkZTdcdWFkZThcdWFkZTlcdWFkZWFcdWFkZWJcdWFk''@;'; put 'put ''ZWNcdWFkZWRcdWFkZWVcdWFkZWZcdWFkZjBcdWFkZjFcdWFkZjJcdWFkZjNcdWFkZjRcdWFkZjVcdWFkZjZcdWFkZjdcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxMzBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEzMF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTMwXVtFXV09MzMyODAr''@;'; put 'put ''RSxMWzMzMjgwK0VdPUJbMTMwXVtFXSk7Zm9yKEJbMTMxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVhZGZhXHVhZGZiXHVhZGZkXHVhZGZlXHVhZTAyXHVhZTAzXHVhZTA0XHVhZTA1XHVhZTA2XHVhZTA3XHVhZTBhXHVh''@;'; put 'put ''ZTBjXHVhZTBlXHVhZTBmXHVhZTEwXHVhZTExXHVhZTEyXHVhZTEzXHVhZTE1XHVhZTE2XHVhZTE3XHVhZTE4XHVhZTE5XHVhZTFhXHVhZTFiXHVhZTFjXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVhZTFkXHVhZTFlXHVhZTFmXHVhZTIwXHVhZTIxXHVhZTIyXHVhZTIz''@;'; put 'put ''XHVhZTI0XHVhZTI1XHVhZTI2XHVhZTI3XHVhZTI4XHVhZTI5XHVhZTJhXHVhZTJiXHVhZTJjXHVhZTJkXHVhZTJlXHVhZTJmXHVhZTMyXHVhZTMzXHVhZTM1XHVhZTM2XHVhZTM5XHVhZTNiXHVhZTNjXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVhZTNkXHVhZTNlXHVh''@;'; put 'put ''ZTNmXHVhZTQyXHVhZTQ0XHVhZTQ3XHVhZTQ4XHVhZTQ5XHVhZTRiXHVhZTRmXHVhZTUxXHVhZTUyXHVhZTUzXHVhZTU1XHVhZTU3XHVhZTU4XHVhZTU5XHVhZTVhXHVhZTViXHVhZTVlXHVhZTYyXHVhZTYzXHVhZTY0XHVhZTY2XHVhZTY3XHVhZTZhXHVhZTZiXHVhZTZkXHVhZTZlXHVhZTZm''@;'; put 'put ''XHVhZTcxXHVhZTcyXHVhZTczXHVhZTc0XHVhZTc1XHVhZTc2XHVhZTc3XHVhZTdhXHVhZTdlXHVhZTdmXHVhZTgwXHVhZTgxXHVhZTgyXHVhZTgzXHVhZTg2XHVhZTg3XHVhZTg4XHVhZTg5XHVhZThhXHVhZThiXHVhZThkXHVhZThlXHVhZThmXHVhZTkwXHVhZTkxXHVhZTkyXHVhZTkzXHVh''@;'; put 'put ''ZTk0XHVhZTk1XHVhZTk2XHVhZTk3XHVhZTk4XHVhZTk5XHVhZTlhXHVhZTliXHVhZTljXHVhZTlkXHVhZTllXHVhZTlmXHVhZWEwXHVhZWExXHVhZWEyXHVhZWEzXHVhZWE0XHVhZWE1XHVhZWE2XHVhZWE3XHVhZWE4XHVhZWE5XHVhZWFhXHVhZWFiXHVhZWFjXHVhZWFkXHVhZWFlXHVhZWFm''@;'; put 'put ''XHVhZWIwXHVhZWIxXHVhZWIyXHVhZWIzXHVhZWI0XHVhZWI1XHVhZWI2XHVhZWI3XHVhZWI4XHVhZWI5XHVhZWJhXHVhZWJiXHVhZWJmXHVhZWMxXHVhZWMyXHVhZWMzXHVhZWM1XHVhZWM2XHVhZWM3XHVhZWM4XHVhZWM5XHVhZWNhXHVhZWNiXHVhZWNlXHVhZWQyXHVhZWQzXHVhZWQ0XHVh''@;'; put 'put ''ZWQ1XHVhZWQ2XHVhZWQ3XHVhZWRhXHVhZWRiXHVhZWRkXHVhZWRlXHVhZWRmXHVhZWUwXHVhZWUxXHVhZWUyXHVhZWUzXHVhZWU0XHVhZWU1XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTMxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxMzFdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzEz''@;'; put 'put ''MV1bRV1dPTMzNTM2K0UsTFszMzUzNitFXT1CWzEzMV1bRV0pO2ZvcihCWzEzMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWVlNlx1YWVlN1x1YWVlOVx1YWVlYVx1YWVlY1x1YWVlZVx1YWVlZlx1YWVmMFx1YWVmMVx1''@;'; put 'put ''YWVmMlx1YWVmM1x1YWVmNVx1YWVmNlx1YWVmN1x1YWVmOVx1YWVmYVx1YWVmYlx1YWVmZFx1YWVmZVx1YWVmZlx1YWYwMFx1YWYwMVx1YWYwMlx1YWYwM1x1YWYwNFx1YWYwNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWYwNlx1YWYwOVx1YWYwYVx1YWYwYlx1YWYw''@;'; put 'put ''Y1x1YWYwZVx1YWYwZlx1YWYxMVx1YWYxMlx1YWYxM1x1YWYxNFx1YWYxNVx1YWYxNlx1YWYxN1x1YWYxOFx1YWYxOVx1YWYxYVx1YWYxYlx1YWYxY1x1YWYxZFx1YWYxZVx1YWYxZlx1YWYyMFx1YWYyMVx1YWYyMlx1YWYyM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''YWYyNFx1YWYyNVx1YWYyNlx1YWYyN1x1YWYyOFx1YWYyOVx1YWYyYVx1YWYyYlx1YWYyZVx1YWYyZlx1YWYzMVx1YWYzM1x1YWYzNVx1YWYzNlx1YWYzN1x1YWYzOFx1YWYzOVx1YWYzYVx1YWYzYlx1YWYzZVx1YWY0MFx1YWY0NFx1YWY0NVx1YWY0Nlx1YWY0N1x1YWY0YVx1YWY0Ylx1YWY0''@;'; put 'put ''Y1x1YWY0ZFx1YWY0ZVx1YWY0Zlx1YWY1MVx1YWY1Mlx1YWY1M1x1YWY1NFx1YWY1NVx1YWY1Nlx1YWY1N1x1YWY1OFx1YWY1OVx1YWY1YVx1YWY1Ylx1YWY1ZVx1YWY1Zlx1YWY2MFx1YWY2MVx1YWY2Mlx1YWY2M1x1YWY2Nlx1YWY2N1x1YWY2OFx1YWY2OVx1YWY2YVx1YWY2Ylx1YWY2Y1x1''@;'; put 'put ''YWY2ZFx1YWY2ZVx1YWY2Zlx1YWY3MFx1YWY3MVx1YWY3Mlx1YWY3M1x1YWY3NFx1YWY3NVx1YWY3Nlx1YWY3N1x1YWY3OFx1YWY3YVx1YWY3Ylx1YWY3Y1x1YWY3ZFx1YWY3ZVx1YWY3Zlx1YWY4MVx1YWY4Mlx1YWY4M1x1YWY4NVx1YWY4Nlx1YWY4N1x1YWY4OVx1YWY4YVx1YWY4Ylx1YWY4''@;'; put 'put ''Y1x1YWY4ZFx1YWY4ZVx1YWY4Zlx1YWY5Mlx1YWY5M1x1YWY5NFx1YWY5Nlx1YWY5N1x1YWY5OFx1YWY5OVx1YWY5YVx1YWY5Ylx1YWY5ZFx1YWY5ZVx1YWY5Zlx1YWZhMFx1YWZhMVx1YWZhMlx1YWZhM1x1YWZhNFx1YWZhNVx1YWZhNlx1YWZhN1x1YWZhOFx1YWZhOVx1YWZhYVx1YWZhYlx1''@;'; put 'put ''YWZhY1x1YWZhZFx1YWZhZVx1YWZhZlx1YWZiMFx1YWZiMVx1YWZiMlx1YWZiM1x1YWZiNFx1YWZiNVx1YWZiNlx1YWZiN1x1YWZiYVx1YWZiYlx1YWZiZFx1YWZiZVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEzMl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTMyXVtFXS5jaGFyQ29kZUF0''@;'; put 'put ''KDApJiYobWVbQlsxMzJdW0VdXT0zMzc5MitFLExbMzM3OTIrRV09QlsxMzJdW0VdKTtmb3IoQlsxMzNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWFmYmZcdWFmYzFcdWFmYzJcdWFmYzNcdWFmYzRcdWFmYzVcdWFmYzZc''@;'; put 'put ''dWFmY2FcdWFmY2NcdWFmY2ZcdWFmZDBcdWFmZDFcdWFmZDJcdWFmZDNcdWFmZDVcdWFmZDZcdWFmZDdcdWFmZDhcdWFmZDlcdWFmZGFcdWFmZGJcdWFmZGRcdWFmZGVcdWFmZGZcdWFmZTBcdWFmZTFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWFmZTJcdWFmZTNcdWFm''@;'; put 'put ''ZTRcdWFmZTVcdWFmZTZcdWFmZTdcdWFmZWFcdWFmZWJcdWFmZWNcdWFmZWRcdWFmZWVcdWFmZWZcdWFmZjJcdWFmZjNcdWFmZjVcdWFmZjZcdWFmZjdcdWFmZjlcdWFmZmFcdWFmZmJcdWFmZmNcdWFmZmRcdWFmZmVcdWFmZmZcdWIwMDJcdWIwMDNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWIwMDVcdWIwMDZcdWIwMDdcdWIwMDhcdWIwMDlcdWIwMGFcdWIwMGJcdWIwMGRcdWIwMGVcdWIwMGZcdWIwMTFcdWIwMTJcdWIwMTNcdWIwMTVcdWIwMTZcdWIwMTdcdWIwMThcdWIwMTlcdWIwMWFcdWIwMWJcdWIwMWVcdWIwMWZcdWIwMjBcdWIwMjFcdWIwMjJcdWIw''@;'; put 'put ''MjNcdWIwMjRcdWIwMjVcdWIwMjZcdWIwMjdcdWIwMjlcdWIwMmFcdWIwMmJcdWIwMmNcdWIwMmRcdWIwMmVcdWIwMmZcdWIwMzBcdWIwMzFcdWIwMzJcdWIwMzNcdWIwMzRcdWIwMzVcdWIwMzZcdWIwMzdcdWIwMzhcdWIwMzlcdWIwM2FcdWIwM2JcdWIwM2NcdWIwM2RcdWIwM2VcdWIwM2Zc''@;'; put 'put ''dWIwNDBcdWIwNDFcdWIwNDJcdWIwNDNcdWIwNDZcdWIwNDdcdWIwNDlcdWIwNGJcdWIwNGRcdWIwNGZcdWIwNTBcdWIwNTFcdWIwNTJcdWIwNTZcdWIwNThcdWIwNWFcdWIwNWJcdWIwNWNcdWIwNWVcdWIwNWZcdWIwNjBcdWIwNjFcdWIwNjJcdWIwNjNcdWIwNjRcdWIwNjVcdWIwNjZcdWIw''@;'; put 'put ''NjdcdWIwNjhcdWIwNjlcdWIwNmFcdWIwNmJcdWIwNmNcdWIwNmRcdWIwNmVcdWIwNmZcdWIwNzBcdWIwNzFcdWIwNzJcdWIwNzNcdWIwNzRcdWIwNzVcdWIwNzZcdWIwNzdcdWIwNzhcdWIwNzlcdWIwN2FcdWIwN2JcdWIwN2VcdWIwN2ZcdWIwODFcdWIwODJcdWIwODNcdWIwODVcdWIwODZc''@;'; put 'put ''dWIwODdcdWIwODhcdWIwODlcdWIwOGFcdWIwOGJcdWIwOGVcdWIwOTBcdWIwOTJcdWIwOTNcdWIwOTRcdWIwOTVcdWIwOTZcdWIwOTdcdWIwOWJcdWIwOWRcdWIwOWVcdWIwYTNcdWIwYTRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxMzNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEzM11b''@;'; put 'put ''RV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTMzXVtFXV09MzQwNDgrRSxMWzM0MDQ4K0VdPUJbMTMzXVtFXSk7Zm9yKEJbMTM0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViMGE1XHViMGE2XHViMGE3XHViMGFhXHViMGIw''@;'; put 'put ''XHViMGIyXHViMGI2XHViMGI3XHViMGI5XHViMGJhXHViMGJiXHViMGJkXHViMGJlXHViMGJmXHViMGMwXHViMGMxXHViMGMyXHViMGMzXHViMGM2XHViMGNhXHViMGNiXHViMGNjXHViMGNkXHViMGNlXHViMGNmXHViMGQyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVi''@;'; put 'put ''MGQzXHViMGQ1XHViMGQ2XHViMGQ3XHViMGQ5XHViMGRhXHViMGRiXHViMGRjXHViMGRkXHViMGRlXHViMGRmXHViMGUxXHViMGUyXHViMGUzXHViMGU0XHViMGU2XHViMGU3XHViMGU4XHViMGU5XHViMGVhXHViMGViXHViMGVjXHViMGVkXHViMGVlXHViMGVmXHViMGYwXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViMGYxXHViMGYyXHViMGYzXHViMGY0XHViMGY1XHViMGY2XHViMGY3XHViMGY4XHViMGY5XHViMGZhXHViMGZiXHViMGZjXHViMGZkXHViMGZlXHViMGZmXHViMTAwXHViMTAxXHViMTAyXHViMTAzXHViMTA0XHViMTA1XHViMTA2XHViMTA3XHVi''@;'; put 'put ''MTBhXHViMTBkXHViMTBlXHViMTBmXHViMTExXHViMTE0XHViMTE1XHViMTE2XHViMTE3XHViMTFhXHViMTFlXHViMTFmXHViMTIwXHViMTIxXHViMTIyXHViMTI2XHViMTI3XHViMTI5XHViMTJhXHViMTJiXHViMTJkXHViMTJlXHViMTJmXHViMTMwXHViMTMxXHViMTMyXHViMTMzXHViMTM2''@;'; put 'put ''XHViMTNhXHViMTNiXHViMTNjXHViMTNkXHViMTNlXHViMTNmXHViMTQyXHViMTQzXHViMTQ1XHViMTQ2XHViMTQ3XHViMTQ5XHViMTRhXHViMTRiXHViMTRjXHViMTRkXHViMTRlXHViMTRmXHViMTUyXHViMTUzXHViMTU2XHViMTU3XHViMTU5XHViMTVhXHViMTViXHViMTVkXHViMTVlXHVi''@;'; put 'put ''MTVmXHViMTYxXHViMTYyXHViMTYzXHViMTY0XHViMTY1XHViMTY2XHViMTY3XHViMTY4XHViMTY5XHViMTZhXHViMTZiXHViMTZjXHViMTZkXHViMTZlXHViMTZmXHViMTcwXHViMTcxXHViMTcyXHViMTczXHViMTc0XHViMTc1XHViMTc2XHViMTc3XHViMTdhXHViMTdiXHViMTdkXHViMTdl''@;'; put 'put ''XHViMTdmXHViMTgxXHViMTgzXHViMTg0XHViMTg1XHViMTg2XHViMTg3XHViMThhXHViMThjXHViMThlXHViMThmXHViMTkwXHViMTkxXHViMTk1XHViMTk2XHViMTk3XHViMTk5XHViMTlhXHViMTliXHViMTlkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTM0XS5sZW5ndGg7KytFKTY1''@;'; put 'put ''NTMzIT09QlsxMzRdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzEzNF1bRV1dPTM0MzA0K0UsTFszNDMwNCtFXT1CWzEzNF1bRV0pO2ZvcihCWzEzNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjE5ZVx1YjE5Zlx1YjFh''@;'; put 'put ''MFx1YjFhMVx1YjFhMlx1YjFhM1x1YjFhNFx1YjFhNVx1YjFhNlx1YjFhN1x1YjFhOVx1YjFhYVx1YjFhYlx1YjFhY1x1YjFhZFx1YjFhZVx1YjFhZlx1YjFiMFx1YjFiMVx1YjFiMlx1YjFiM1x1YjFiNFx1YjFiNVx1YjFiNlx1YjFiN1x1YjFiOFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1YjFiOVx1YjFiYVx1YjFiYlx1YjFiY1x1YjFiZFx1YjFiZVx1YjFiZlx1YjFjMFx1YjFjMVx1YjFjMlx1YjFjM1x1YjFjNFx1YjFjNVx1YjFjNlx1YjFjN1x1YjFjOFx1YjFjOVx1YjFjYVx1YjFjYlx1YjFjZFx1YjFjZVx1YjFjZlx1YjFkMVx1YjFkMlx1YjFkM1x1YjFk''@;'; put 'put ''NVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjFkNlx1YjFkN1x1YjFkOFx1YjFkOVx1YjFkYVx1YjFkYlx1YjFkZVx1YjFlMFx1YjFlMVx1YjFlMlx1YjFlM1x1YjFlNFx1YjFlNVx1YjFlNlx1YjFlN1x1YjFlYVx1YjFlYlx1YjFlZFx1YjFlZVx1YjFlZlx1YjFmMVx1''@;'; put 'put ''YjFmMlx1YjFmM1x1YjFmNFx1YjFmNVx1YjFmNlx1YjFmN1x1YjFmOFx1YjFmYVx1YjFmY1x1YjFmZVx1YjFmZlx1YjIwMFx1YjIwMVx1YjIwMlx1YjIwM1x1YjIwNlx1YjIwN1x1YjIwOVx1YjIwYVx1YjIwZFx1YjIwZVx1YjIwZlx1YjIxMFx1YjIxMVx1YjIxMlx1YjIxM1x1YjIxNlx1YjIx''@;'; put 'put ''OFx1YjIxYVx1YjIxYlx1YjIxY1x1YjIxZFx1YjIxZVx1YjIxZlx1YjIyMVx1YjIyMlx1YjIyM1x1YjIyNFx1YjIyNVx1YjIyNlx1YjIyN1x1YjIyOFx1YjIyOVx1YjIyYVx1YjIyYlx1YjIyY1x1YjIyZFx1YjIyZVx1YjIyZlx1YjIzMFx1YjIzMVx1YjIzMlx1YjIzM1x1YjIzNVx1YjIzNlx1''@;'; put 'put ''YjIzN1x1YjIzOFx1YjIzOVx1YjIzYVx1YjIzYlx1YjIzZFx1YjIzZVx1YjIzZlx1YjI0MFx1YjI0MVx1YjI0Mlx1YjI0M1x1YjI0NFx1YjI0NVx1YjI0Nlx1YjI0N1x1YjI0OFx1YjI0OVx1YjI0YVx1YjI0Ylx1YjI0Y1x1YjI0ZFx1YjI0ZVx1YjI0Zlx1YjI1MFx1YjI1MVx1YjI1Mlx1YjI1''@;'; put 'put ''M1x1YjI1NFx1YjI1NVx1YjI1Nlx1YjI1N1x1YjI1OVx1YjI1YVx1YjI1Ylx1YjI1ZFx1YjI1ZVx1YjI1Zlx1YjI2MVx1YjI2Mlx1YjI2M1x1YjI2NFx1YjI2NVx1YjI2Nlx1YjI2N1x1YjI2YVx1YjI2Ylx1YjI2Y1x1YjI2ZFx1YjI2ZVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEzNV0u''@;'; put 'put ''bGVuZ3RoOysrRSk2NTUzMyE9PUJbMTM1XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxMzVdW0VdXT0zNDU2MCtFLExbMzQ1NjArRV09QlsxMzVdW0VdKTtmb3IoQlsxMzZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWIy''@;'; put 'put ''NmZcdWIyNzBcdWIyNzFcdWIyNzJcdWIyNzNcdWIyNzZcdWIyNzdcdWIyNzhcdWIyNzlcdWIyN2FcdWIyN2JcdWIyN2RcdWIyN2VcdWIyN2ZcdWIyODBcdWIyODFcdWIyODJcdWIyODNcdWIyODZcdWIyODdcdWIyODhcdWIyOGFcdWIyOGJcdWIyOGNcdWIyOGRcdWIyOGVcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWIyOGZcdWIyOTJcdWIyOTNcdWIyOTVcdWIyOTZcdWIyOTdcdWIyOWJcdWIyOWNcdWIyOWRcdWIyOWVcdWIyOWZcdWIyYTJcdWIyYTRcdWIyYTdcdWIyYThcdWIyYTlcdWIyYWJcdWIyYWRcdWIyYWVcdWIyYWZcdWIyYjFcdWIyYjJcdWIyYjNcdWIy''@;'; put 'put ''YjVcdWIyYjZcdWIyYjdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWIyYjhcdWIyYjlcdWIyYmFcdWIyYmJcdWIyYmNcdWIyYmRcdWIyYmVcdWIyYmZcdWIyYzBcdWIyYzFcdWIyYzJcdWIyYzNcdWIyYzRcdWIyYzVcdWIyYzZcdWIyYzdcdWIyY2FcdWIyY2JcdWIyY2Rc''@;'; put 'put ''dWIyY2VcdWIyY2ZcdWIyZDFcdWIyZDNcdWIyZDRcdWIyZDVcdWIyZDZcdWIyZDdcdWIyZGFcdWIyZGNcdWIyZGVcdWIyZGZcdWIyZTBcdWIyZTFcdWIyZTNcdWIyZTdcdWIyZTlcdWIyZWFcdWIyZjBcdWIyZjFcdWIyZjJcdWIyZjZcdWIyZmNcdWIyZmRcdWIyZmVcdWIzMDJcdWIzMDNcdWIz''@;'; put 'put ''MDVcdWIzMDZcdWIzMDdcdWIzMDlcdWIzMGFcdWIzMGJcdWIzMGNcdWIzMGRcdWIzMGVcdWIzMGZcdWIzMTJcdWIzMTZcdWIzMTdcdWIzMThcdWIzMTlcdWIzMWFcdWIzMWJcdWIzMWRcdWIzMWVcdWIzMWZcdWIzMjBcdWIzMjFcdWIzMjJcdWIzMjNcdWIzMjRcdWIzMjVcdWIzMjZcdWIzMjdc''@;'; put 'put ''dWIzMjhcdWIzMjlcdWIzMmFcdWIzMmJcdWIzMmNcdWIzMmRcdWIzMmVcdWIzMmZcdWIzMzBcdWIzMzFcdWIzMzJcdWIzMzNcdWIzMzRcdWIzMzVcdWIzMzZcdWIzMzdcdWIzMzhcdWIzMzlcdWIzM2FcdWIzM2JcdWIzM2NcdWIzM2RcdWIzM2VcdWIzM2ZcdWIzNDBcdWIzNDFcdWIzNDJcdWIz''@;'; put 'put ''NDNcdWIzNDRcdWIzNDVcdWIzNDZcdWIzNDdcdWIzNDhcdWIzNDlcdWIzNGFcdWIzNGJcdWIzNGNcdWIzNGRcdWIzNGVcdWIzNGZcdWIzNTBcdWIzNTFcdWIzNTJcdWIzNTNcdWIzNTdcdWIzNTlcdWIzNWFcdWIzNWRcdWIzNjBcdWIzNjFcdWIzNjJcdWIzNjNcdWZmZmQiLnNwbGl0KCIiKSxF''@;'; put 'put ''PTA7RSE9QlsxMzZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEzNl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTM2XVtFXV09MzQ4MTYrRSxMWzM0ODE2K0VdPUJbMTM2XVtFXSk7Zm9yKEJbMTM3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHViMzY2XHViMzY4XHViMzZhXHViMzZjXHViMzZkXHViMzZmXHViMzcyXHViMzczXHViMzc1XHViMzc2XHViMzc3XHViMzc5XHViMzdhXHViMzdiXHViMzdjXHViMzdkXHViMzdlXHViMzdmXHViMzgyXHViMzg2XHViMzg3XHViMzg4XHViMzg5XHViMzhhXHViMzhiXHViMzhk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViMzhlXHViMzhmXHViMzkxXHViMzkyXHViMzkzXHViMzk1XHViMzk2XHViMzk3XHViMzk4XHViMzk5XHViMzlhXHViMzliXHViMzljXHViMzlkXHViMzllXHViMzlmXHViM2EyXHViM2EzXHViM2E0XHViM2E1XHViM2E2XHVi''@;'; put 'put ''M2E3XHViM2E5XHViM2FhXHViM2FiXHViM2FkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViM2FlXHViM2FmXHViM2IwXHViM2IxXHViM2IyXHViM2IzXHViM2I0XHViM2I1XHViM2I2XHViM2I3XHViM2I4XHViM2I5XHViM2JhXHViM2JiXHViM2JjXHViM2JkXHViM2Jl''@;'; put 'put ''XHViM2JmXHViM2MwXHViM2MxXHViM2MyXHViM2MzXHViM2M2XHViM2M3XHViM2M5XHViM2NhXHViM2NkXHViM2NmXHViM2QxXHViM2QyXHViM2QzXHViM2Q2XHViM2Q4XHViM2RhXHViM2RjXHViM2RlXHViM2RmXHViM2UxXHViM2UyXHViM2UzXHViM2U1XHViM2U2XHViM2U3XHViM2U5XHVi''@;'; put 'put ''M2VhXHViM2ViXHViM2VjXHViM2VkXHViM2VlXHViM2VmXHViM2YwXHViM2YxXHViM2YyXHViM2YzXHViM2Y0XHViM2Y1XHViM2Y2XHViM2Y3XHViM2Y4XHViM2Y5XHViM2ZhXHViM2ZiXHViM2ZkXHViM2ZlXHViM2ZmXHViNDAwXHViNDAxXHViNDAyXHViNDAzXHViNDA0XHViNDA1XHViNDA2''@;'; put 'put ''XHViNDA3XHViNDA4XHViNDA5XHViNDBhXHViNDBiXHViNDBjXHViNDBkXHViNDBlXHViNDBmXHViNDExXHViNDEyXHViNDEzXHViNDE0XHViNDE1XHViNDE2XHViNDE3XHViNDE5XHViNDFhXHViNDFiXHViNDFkXHViNDFlXHViNDFmXHViNDIxXHViNDIyXHViNDIzXHViNDI0XHViNDI1XHVi''@;'; put 'put ''NDI2XHViNDI3XHViNDJhXHViNDJjXHViNDJkXHViNDJlXHViNDJmXHViNDMwXHViNDMxXHViNDMyXHViNDMzXHViNDM1XHViNDM2XHViNDM3XHViNDM4XHViNDM5XHViNDNhXHViNDNiXHViNDNjXHViNDNkXHViNDNlXHViNDNmXHViNDQwXHViNDQxXHViNDQyXHViNDQzXHViNDQ0XHVmZmZk''@;'; put 'put ''Ii5zcGxpdCgiIiksRT0wO0UhPUJbMTM3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxMzddW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzEzN11bRV1dPTM1MDcyK0UsTFszNTA3MitFXT1CWzEzN11bRV0pO2ZvcihCWzEzOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjQ0NVx1YjQ0Nlx1YjQ0N1x1YjQ0OFx1YjQ0OVx1YjQ0YVx1YjQ0Ylx1YjQ0Y1x1YjQ0ZFx1YjQ0ZVx1YjQ0Zlx1YjQ1Mlx1YjQ1M1x1YjQ1NVx1YjQ1Nlx1YjQ1N1x1YjQ1OVx1YjQ1YVx1YjQ1Ylx1YjQ1Y1x1YjQ1ZFx1YjQ1ZVx1YjQ1Zlx1YjQ2''@;'; put 'put ''Mlx1YjQ2NFx1YjQ2Nlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjQ2N1x1YjQ2OFx1YjQ2OVx1YjQ2YVx1YjQ2Ylx1YjQ2ZFx1YjQ2ZVx1YjQ2Zlx1YjQ3MFx1YjQ3MVx1YjQ3Mlx1YjQ3M1x1YjQ3NFx1YjQ3NVx1YjQ3Nlx1YjQ3N1x1YjQ3OFx1YjQ3OVx1YjQ3YVx1''@;'; put 'put ''YjQ3Ylx1YjQ3Y1x1YjQ3ZFx1YjQ3ZVx1YjQ3Zlx1YjQ4MVx1YjQ4Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjQ4M1x1YjQ4NFx1YjQ4NVx1YjQ4Nlx1YjQ4N1x1YjQ4OVx1YjQ4YVx1YjQ4Ylx1YjQ4Y1x1YjQ4ZFx1YjQ4ZVx1YjQ4Zlx1YjQ5MFx1YjQ5MVx1YjQ5''@;'; put 'put ''Mlx1YjQ5M1x1YjQ5NFx1YjQ5NVx1YjQ5Nlx1YjQ5N1x1YjQ5OFx1YjQ5OVx1YjQ5YVx1YjQ5Ylx1YjQ5Y1x1YjQ5ZVx1YjQ5Zlx1YjRhMFx1YjRhMVx1YjRhMlx1YjRhM1x1YjRhNVx1YjRhNlx1YjRhN1x1YjRhOVx1YjRhYVx1YjRhYlx1YjRhZFx1YjRhZVx1YjRhZlx1YjRiMFx1YjRiMVx1''@;'; put 'put ''YjRiMlx1YjRiM1x1YjRiNFx1YjRiNlx1YjRiOFx1YjRiYVx1YjRiYlx1YjRiY1x1YjRiZFx1YjRiZVx1YjRiZlx1YjRjMVx1YjRjMlx1YjRjM1x1YjRjNVx1YjRjNlx1YjRjN1x1YjRjOVx1YjRjYVx1YjRjYlx1YjRjY1x1YjRjZFx1YjRjZVx1YjRjZlx1YjRkMVx1YjRkMlx1YjRkM1x1YjRk''@;'; put 'put ''NFx1YjRkNlx1YjRkN1x1YjRkOFx1YjRkOVx1YjRkYVx1YjRkYlx1YjRkZVx1YjRkZlx1YjRlMVx1YjRlMlx1YjRlNVx1YjRlN1x1YjRlOFx1YjRlOVx1YjRlYVx1YjRlYlx1YjRlZVx1YjRmMFx1YjRmMlx1YjRmM1x1YjRmNFx1YjRmNVx1YjRmNlx1YjRmN1x1YjRmOVx1YjRmYVx1YjRmYlx1''@;'; put 'put ''YjRmY1x1YjRmZFx1YjRmZVx1YjRmZlx1YjUwMFx1YjUwMVx1YjUwMlx1YjUwM1x1YjUwNFx1YjUwNVx1YjUwNlx1YjUwN1x1YjUwOFx1YjUwOVx1YjUwYVx1YjUwYlx1YjUwY1x1YjUwZFx1YjUwZVx1YjUwZlx1YjUxMFx1YjUxMVx1YjUxMlx1YjUxM1x1YjUxNlx1YjUxN1x1YjUxOVx1YjUx''@;'; put 'put ''YVx1YjUxZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzEzOF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTM4XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxMzhdW0VdXT0zNTMyOCtFLExbMzUzMjgrRV09QlsxMzhdW0VdKTtmb3IoQlsxMzldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI1MWVcdWI1MWZcdWI1MjBcdWI1MjFcdWI1MjJcdWI1MjNcdWI1MjZcdWI1MmJcdWI1MmNcdWI1MmRcdWI1MmVcdWI1MmZcdWI1MzJcdWI1MzNcdWI1MzVcdWI1MzZcdWI1MzdcdWI1MzlcdWI1M2FcdWI1M2JcdWI1M2NcdWI1''@;'; put 'put ''M2RcdWI1M2VcdWI1M2ZcdWI1NDJcdWI1NDZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI1NDdcdWI1NDhcdWI1NDlcdWI1NGFcdWI1NGVcdWI1NGZcdWI1NTFcdWI1NTJcdWI1NTNcdWI1NTVcdWI1NTZcdWI1NTdcdWI1NThcdWI1NTlcdWI1NWFcdWI1NWJcdWI1NWVc''@;'; put 'put ''dWI1NjJcdWI1NjNcdWI1NjRcdWI1NjVcdWI1NjZcdWI1NjdcdWI1NjhcdWI1NjlcdWI1NmFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI1NmJcdWI1NmNcdWI1NmRcdWI1NmVcdWI1NmZcdWI1NzBcdWI1NzFcdWI1NzJcdWI1NzNcdWI1NzRcdWI1NzVcdWI1NzZcdWI1''@;'; put 'put ''NzdcdWI1NzhcdWI1NzlcdWI1N2FcdWI1N2JcdWI1N2NcdWI1N2RcdWI1N2VcdWI1N2ZcdWI1ODBcdWI1ODFcdWI1ODJcdWI1ODNcdWI1ODRcdWI1ODVcdWI1ODZcdWI1ODdcdWI1ODhcdWI1ODlcdWI1OGFcdWI1OGJcdWI1OGNcdWI1OGRcdWI1OGVcdWI1OGZcdWI1OTBcdWI1OTFcdWI1OTJc''@;'; put 'put ''dWI1OTNcdWI1OTRcdWI1OTVcdWI1OTZcdWI1OTdcdWI1OThcdWI1OTlcdWI1OWFcdWI1OWJcdWI1OWNcdWI1OWRcdWI1OWVcdWI1OWZcdWI1YTJcdWI1YTNcdWI1YTVcdWI1YTZcdWI1YTdcdWI1YTlcdWI1YWNcdWI1YWRcdWI1YWVcdWI1YWZcdWI1YjJcdWI1YjZcdWI1YjdcdWI1YjhcdWI1''@;'; put 'put ''YjlcdWI1YmFcdWI1YmVcdWI1YmZcdWI1YzFcdWI1YzJcdWI1YzNcdWI1YzVcdWI1YzZcdWI1YzdcdWI1YzhcdWI1YzlcdWI1Y2FcdWI1Y2JcdWI1Y2VcdWI1ZDJcdWI1ZDNcdWI1ZDRcdWI1ZDVcdWI1ZDZcdWI1ZDdcdWI1ZDlcdWI1ZGFcdWI1ZGJcdWI1ZGNcdWI1ZGRcdWI1ZGVcdWI1ZGZc''@;'; put 'put ''dWI1ZTBcdWI1ZTFcdWI1ZTJcdWI1ZTNcdWI1ZTRcdWI1ZTVcdWI1ZTZcdWI1ZTdcdWI1ZThcdWI1ZTlcdWI1ZWFcdWI1ZWJcdWI1ZWRcdWI1ZWVcdWI1ZWZcdWI1ZjBcdWI1ZjFcdWI1ZjJcdWI1ZjNcdWI1ZjRcdWI1ZjVcdWI1ZjZcdWI1ZjdcdWI1ZjhcdWI1ZjlcdWI1ZmFcdWI1ZmJcdWI1''@;'; put 'put ''ZmNcdWI1ZmRcdWI1ZmVcdWI1ZmZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxMzldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzEzOV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTM5XVtFXV09MzU1ODQrRSxMWzM1NTg0K0VdPUJbMTM5XVtFXSk7Zm9yKEJbMTQwXT0iXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViNjAwXHViNjAxXHViNjAyXHViNjAzXHViNjA0XHViNjA1XHViNjA2XHViNjA3XHViNjA4XHViNjA5XHViNjBhXHViNjBiXHViNjBjXHViNjBkXHViNjBlXHViNjBmXHViNjEyXHViNjEzXHViNjE1XHVi''@;'; put 'put ''NjE2XHViNjE3XHViNjE5XHViNjFhXHViNjFiXHViNjFjXHViNjFkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViNjFlXHViNjFmXHViNjIwXHViNjIxXHViNjIyXHViNjIzXHViNjI0XHViNjI2XHViNjI3XHViNjI4XHViNjI5XHViNjJhXHViNjJiXHViNjJkXHViNjJl''@;'; put 'put ''XHViNjJmXHViNjMwXHViNjMxXHViNjMyXHViNjMzXHViNjM1XHViNjM2XHViNjM3XHViNjM4XHViNjM5XHViNjNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViNjNiXHViNjNjXHViNjNkXHViNjNlXHViNjNmXHViNjQwXHViNjQxXHViNjQyXHViNjQzXHViNjQ0XHVi''@;'; put 'put ''NjQ1XHViNjQ2XHViNjQ3XHViNjQ5XHViNjRhXHViNjRiXHViNjRjXHViNjRkXHViNjRlXHViNjRmXHViNjUwXHViNjUxXHViNjUyXHViNjUzXHViNjU0XHViNjU1XHViNjU2XHViNjU3XHViNjU4XHViNjU5XHViNjVhXHViNjViXHViNjVjXHViNjVkXHViNjVlXHViNjVmXHViNjYwXHViNjYx''@;'; put 'put ''XHViNjYyXHViNjYzXHViNjY1XHViNjY2XHViNjY3XHViNjY5XHViNjZhXHViNjZiXHViNjZjXHViNjZkXHViNjZlXHViNjZmXHViNjcwXHViNjcxXHViNjcyXHViNjczXHViNjc0XHViNjc1XHViNjc2XHViNjc3XHViNjc4XHViNjc5XHViNjdhXHViNjdiXHViNjdjXHViNjdkXHViNjdlXHVi''@;'; put 'put ''NjdmXHViNjgwXHViNjgxXHViNjgyXHViNjgzXHViNjg0XHViNjg1XHViNjg2XHViNjg3XHViNjg4XHViNjg5XHViNjhhXHViNjhiXHViNjhjXHViNjhkXHViNjhlXHViNjhmXHViNjkwXHViNjkxXHViNjkyXHViNjkzXHViNjk0XHViNjk1XHViNjk2XHViNjk3XHViNjk4XHViNjk5XHViNjlh''@;'; put 'put ''XHViNjliXHViNjllXHViNjlmXHViNmExXHViNmEyXHViNmEzXHViNmE1XHViNmE2XHViNmE3XHViNmE4XHViNmE5XHViNmFhXHViNmFkXHViNmFlXHViNmFmXHViNmIwXHViNmIyXHViNmIzXHViNmI0XHViNmI1XHViNmI2XHViNmI3XHViNmI4XHViNmI5XHViNmJhXHViNmJiXHViNmJjXHVi''@;'; put 'put ''NmJkXHViNmJlXHViNmJmXHViNmMwXHViNmMxXHViNmMyXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTQwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNDBdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE0MF1bRV1dPTM1ODQwK0UsTFszNTg0MCtFXT1CWzE0MF1bRV0pO2ZvcihCWzE0MV09''@;'; put 'put ''Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjZjM1x1YjZjNFx1YjZjNVx1YjZjNlx1YjZjN1x1YjZjOFx1YjZjOVx1YjZjYVx1YjZjYlx1YjZjY1x1YjZjZFx1YjZjZVx1YjZjZlx1YjZkMFx1YjZkMVx1YjZkMlx1YjZkM1x1''@;'; put 'put ''YjZkNVx1YjZkNlx1YjZkN1x1YjZkOFx1YjZkOVx1YjZkYVx1YjZkYlx1YjZkY1x1YjZkZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjZkZVx1YjZkZlx1YjZlMFx1YjZlMVx1YjZlMlx1YjZlM1x1YjZlNFx1YjZlNVx1YjZlNlx1YjZlN1x1YjZlOFx1YjZlOVx1YjZl''@;'; put 'put ''YVx1YjZlYlx1YjZlY1x1YjZlZFx1YjZlZVx1YjZlZlx1YjZmMVx1YjZmMlx1YjZmM1x1YjZmNVx1YjZmNlx1YjZmN1x1YjZmOVx1YjZmYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjZmYlx1YjZmY1x1YjZmZFx1YjZmZVx1YjZmZlx1YjcwMlx1YjcwM1x1YjcwNFx1''@;'; put 'put ''YjcwNlx1YjcwN1x1YjcwOFx1YjcwOVx1YjcwYVx1YjcwYlx1YjcwY1x1YjcwZFx1YjcwZVx1YjcwZlx1YjcxMFx1YjcxMVx1YjcxMlx1YjcxM1x1YjcxNFx1YjcxNVx1YjcxNlx1YjcxN1x1YjcxOFx1YjcxOVx1YjcxYVx1YjcxYlx1YjcxY1x1YjcxZFx1YjcxZVx1YjcxZlx1YjcyMFx1Yjcy''@;'; put 'put ''MVx1YjcyMlx1YjcyM1x1YjcyNFx1YjcyNVx1YjcyNlx1YjcyN1x1YjcyYVx1YjcyYlx1YjcyZFx1YjcyZVx1YjczMVx1YjczMlx1YjczM1x1YjczNFx1YjczNVx1YjczNlx1YjczN1x1YjczYVx1YjczY1x1YjczZFx1YjczZVx1YjczZlx1Yjc0MFx1Yjc0MVx1Yjc0Mlx1Yjc0M1x1Yjc0NVx1''@;'; put 'put ''Yjc0Nlx1Yjc0N1x1Yjc0OVx1Yjc0YVx1Yjc0Ylx1Yjc0ZFx1Yjc0ZVx1Yjc0Zlx1Yjc1MFx1Yjc1MVx1Yjc1Mlx1Yjc1M1x1Yjc1Nlx1Yjc1N1x1Yjc1OFx1Yjc1OVx1Yjc1YVx1Yjc1Ylx1Yjc1Y1x1Yjc1ZFx1Yjc1ZVx1Yjc1Zlx1Yjc2MVx1Yjc2Mlx1Yjc2M1x1Yjc2NVx1Yjc2Nlx1Yjc2''@;'; put 'put ''N1x1Yjc2OVx1Yjc2YVx1Yjc2Ylx1Yjc2Y1x1Yjc2ZFx1Yjc2ZVx1Yjc2Zlx1Yjc3Mlx1Yjc3NFx1Yjc3Nlx1Yjc3N1x1Yjc3OFx1Yjc3OVx1Yjc3YVx1Yjc3Ylx1Yjc3ZVx1Yjc3Zlx1Yjc4MVx1Yjc4Mlx1Yjc4M1x1Yjc4NVx1Yjc4Nlx1Yjc4N1x1Yjc4OFx1Yjc4OVx1Yjc4YVx1Yjc4Ylx1''@;'; put 'put ''Yjc4ZVx1Yjc5M1x1Yjc5NFx1Yjc5NVx1Yjc5YVx1Yjc5Ylx1Yjc5ZFx1Yjc5ZVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0MV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTQxXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNDFdW0VdXT0zNjA5NitFLExbMzYwOTYrRV09QlsxNDFdW0Vd''@;'; put 'put ''KTtmb3IoQlsxNDJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI3OWZcdWI3YTFcdWI3YTJcdWI3YTNcdWI3YTRcdWI3YTVcdWI3YTZcdWI3YTdcdWI3YWFcdWI3YWVcdWI3YWZcdWI3YjBcdWI3YjFcdWI3YjJcdWI3YjNc''@;'; put 'put ''dWI3YjZcdWI3YjdcdWI3YjlcdWI3YmFcdWI3YmJcdWI3YmNcdWI3YmRcdWI3YmVcdWI3YmZcdWI3YzBcdWI3YzFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI3YzJcdWI3YzNcdWI3YzRcdWI3YzVcdWI3YzZcdWI3YzhcdWI3Y2FcdWI3Y2JcdWI3Y2NcdWI3Y2RcdWI3''@;'; put 'put ''Y2VcdWI3Y2ZcdWI3ZDBcdWI3ZDFcdWI3ZDJcdWI3ZDNcdWI3ZDRcdWI3ZDVcdWI3ZDZcdWI3ZDdcdWI3ZDhcdWI3ZDlcdWI3ZGFcdWI3ZGJcdWI3ZGNcdWI3ZGRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI3ZGVcdWI3ZGZcdWI3ZTBcdWI3ZTFcdWI3ZTJcdWI3ZTNc''@;'; put 'put ''dWI3ZTRcdWI3ZTVcdWI3ZTZcdWI3ZTdcdWI3ZThcdWI3ZTlcdWI3ZWFcdWI3ZWJcdWI3ZWVcdWI3ZWZcdWI3ZjFcdWI3ZjJcdWI3ZjNcdWI3ZjVcdWI3ZjZcdWI3ZjdcdWI3ZjhcdWI3ZjlcdWI3ZmFcdWI3ZmJcdWI3ZmVcdWI4MDJcdWI4MDNcdWI4MDRcdWI4MDVcdWI4MDZcdWI4MGFcdWI4''@;'; put 'put ''MGJcdWI4MGRcdWI4MGVcdWI4MGZcdWI4MTFcdWI4MTJcdWI4MTNcdWI4MTRcdWI4MTVcdWI4MTZcdWI4MTdcdWI4MWFcdWI4MWNcdWI4MWVcdWI4MWZcdWI4MjBcdWI4MjFcdWI4MjJcdWI4MjNcdWI4MjZcdWI4MjdcdWI4MjlcdWI4MmFcdWI4MmJcdWI4MmRcdWI4MmVcdWI4MmZcdWI4MzBc''@;'; put 'put ''dWI4MzFcdWI4MzJcdWI4MzNcdWI4MzZcdWI4M2FcdWI4M2JcdWI4M2NcdWI4M2RcdWI4M2VcdWI4M2ZcdWI4NDFcdWI4NDJcdWI4NDNcdWI4NDVcdWI4NDZcdWI4NDdcdWI4NDhcdWI4NDlcdWI4NGFcdWI4NGJcdWI4NGNcdWI4NGRcdWI4NGVcdWI4NGZcdWI4NTBcdWI4NTJcdWI4NTRcdWI4''@;'; put 'put ''NTVcdWI4NTZcdWI4NTdcdWI4NThcdWI4NTlcdWI4NWFcdWI4NWJcdWI4NWVcdWI4NWZcdWI4NjFcdWI4NjJcdWI4NjNcdWI4NjVcdWI4NjZcdWI4NjdcdWI4NjhcdWI4NjlcdWI4NmFcdWI4NmJcdWI4NmVcdWI4NzBcdWI4NzJcdWI4NzNcdWI4NzRcdWI4NzVcdWI4NzZcdWI4NzdcdWI4Nzlc''@;'; put 'put ''dWI4N2FcdWI4N2JcdWI4N2RcdWI4N2VcdWI4N2ZcdWI4ODBcdWI4ODFcdWI4ODJcdWI4ODNcdWI4ODRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNDJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0Ml1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTQyXVtFXV09MzYzNTIrRSxMWzM2MzUy''@;'; put 'put ''K0VdPUJbMTQyXVtFXSk7Zm9yKEJbMTQzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViODg1XHViODg2XHViODg3XHViODg4XHViODg5XHViODhhXHViODhiXHViODhjXHViODhlXHViODhmXHViODkwXHViODkxXHViODky''@;'; put 'put ''XHViODkzXHViODk0XHViODk1XHViODk2XHViODk3XHViODk4XHViODk5XHViODlhXHViODliXHViODljXHViODlkXHViODllXHViODlmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViOGEwXHViOGExXHViOGEyXHViOGEzXHViOGE0XHViOGE1XHViOGE2XHViOGE3XHVi''@;'; put 'put ''OGE5XHViOGFhXHViOGFiXHViOGFjXHViOGFkXHViOGFlXHViOGFmXHViOGIxXHViOGIyXHViOGIzXHViOGI1XHViOGI2XHViOGI3XHViOGI5XHViOGJhXHViOGJiXHViOGJjXHViOGJkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViOGJlXHViOGJmXHViOGMyXHViOGM0''@;'; put 'put ''XHViOGM2XHViOGM3XHViOGM4XHViOGM5XHViOGNhXHViOGNiXHViOGNkXHViOGNlXHViOGNmXHViOGQxXHViOGQyXHViOGQzXHViOGQ1XHViOGQ2XHViOGQ3XHViOGQ4XHViOGQ5XHViOGRhXHViOGRiXHViOGRjXHViOGRlXHViOGUwXHViOGUyXHViOGUzXHViOGU0XHViOGU1XHViOGU2XHVi''@;'; put 'put ''OGU3XHViOGVhXHViOGViXHViOGVkXHViOGVlXHViOGVmXHViOGYxXHViOGYyXHViOGYzXHViOGY0XHViOGY1XHViOGY2XHViOGY3XHViOGZhXHViOGZjXHViOGZlXHViOGZmXHViOTAwXHViOTAxXHViOTAyXHViOTAzXHViOTA1XHViOTA2XHViOTA3XHViOTA4XHViOTA5XHViOTBhXHViOTBi''@;'; put 'put ''XHViOTBjXHViOTBkXHViOTBlXHViOTBmXHViOTEwXHViOTExXHViOTEyXHViOTEzXHViOTE0XHViOTE1XHViOTE2XHViOTE3XHViOTE5XHViOTFhXHViOTFiXHViOTFjXHViOTFkXHViOTFlXHViOTFmXHViOTIxXHViOTIyXHViOTIzXHViOTI0XHViOTI1XHViOTI2XHViOTI3XHViOTI4XHVi''@;'; put 'put ''OTI5XHViOTJhXHViOTJiXHViOTJjXHViOTJkXHViOTJlXHViOTJmXHViOTMwXHViOTMxXHViOTMyXHViOTMzXHViOTM0XHViOTM1XHViOTM2XHViOTM3XHViOTM4XHViOTM5XHViOTNhXHViOTNiXHViOTNlXHViOTNmXHViOTQxXHViOTQyXHViOTQzXHViOTQ1XHViOTQ2XHViOTQ3XHViOTQ4''@;'; put 'put ''XHViOTQ5XHViOTRhXHViOTRiXHViOTRkXHViOTRlXHViOTUwXHViOTUyXHViOTUzXHViOTU0XHViOTU1XHViOTU2XHViOTU3XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTQzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNDNdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE0M11bRV1dPTM2''@;'; put 'put ''NjA4K0UsTFszNjYwOCtFXT1CWzE0M11bRV0pO2ZvcihCWzE0NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Yjk1YVx1Yjk1Ylx1Yjk1ZFx1Yjk1ZVx1Yjk1Zlx1Yjk2MVx1Yjk2Mlx1Yjk2M1x1Yjk2NFx1Yjk2NVx1Yjk2''@;'; put 'put ''Nlx1Yjk2N1x1Yjk2YVx1Yjk2Y1x1Yjk2ZVx1Yjk2Zlx1Yjk3MFx1Yjk3MVx1Yjk3Mlx1Yjk3M1x1Yjk3Nlx1Yjk3N1x1Yjk3OVx1Yjk3YVx1Yjk3Ylx1Yjk3ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Yjk3ZVx1Yjk3Zlx1Yjk4MFx1Yjk4MVx1Yjk4Mlx1Yjk4M1x1''@;'; put 'put ''Yjk4Nlx1Yjk4OFx1Yjk4Ylx1Yjk4Y1x1Yjk4Zlx1Yjk5MFx1Yjk5MVx1Yjk5Mlx1Yjk5M1x1Yjk5NFx1Yjk5NVx1Yjk5Nlx1Yjk5N1x1Yjk5OFx1Yjk5OVx1Yjk5YVx1Yjk5Ylx1Yjk5Y1x1Yjk5ZFx1Yjk5ZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Yjk5Zlx1Yjlh''@;'; put 'put ''MFx1YjlhMVx1YjlhMlx1YjlhM1x1YjlhNFx1YjlhNVx1YjlhNlx1YjlhN1x1YjlhOFx1YjlhOVx1YjlhYVx1YjlhYlx1YjlhZVx1YjlhZlx1YjliMVx1YjliMlx1YjliM1x1YjliNVx1YjliNlx1YjliN1x1YjliOFx1YjliOVx1YjliYVx1YjliYlx1YjliZVx1YjljMFx1YjljMlx1YjljM1x1''@;'; put 'put ''YjljNFx1YjljNVx1YjljNlx1YjljN1x1YjljYVx1YjljYlx1YjljZFx1YjlkM1x1YjlkNFx1YjlkNVx1YjlkNlx1YjlkN1x1YjlkYVx1YjlkY1x1YjlkZlx1YjllMFx1YjllMlx1YjllNlx1YjllN1x1YjllOVx1YjllYVx1YjllYlx1YjllZFx1YjllZVx1YjllZlx1YjlmMFx1YjlmMVx1Yjlm''@;'; put 'put ''Mlx1YjlmM1x1YjlmNlx1YjlmYlx1YjlmY1x1YjlmZFx1YjlmZVx1YjlmZlx1YmEwMlx1YmEwM1x1YmEwNFx1YmEwNVx1YmEwNlx1YmEwN1x1YmEwOVx1YmEwYVx1YmEwYlx1YmEwY1x1YmEwZFx1YmEwZVx1YmEwZlx1YmExMFx1YmExMVx1YmExMlx1YmExM1x1YmExNFx1YmExNlx1YmExN1x1''@;'; put 'put ''YmExOFx1YmExOVx1YmExYVx1YmExYlx1YmExY1x1YmExZFx1YmExZVx1YmExZlx1YmEyMFx1YmEyMVx1YmEyMlx1YmEyM1x1YmEyNFx1YmEyNVx1YmEyNlx1YmEyN1x1YmEyOFx1YmEyOVx1YmEyYVx1YmEyYlx1YmEyY1x1YmEyZFx1YmEyZVx1YmEyZlx1YmEzMFx1YmEzMVx1YmEzMlx1YmEz''@;'; put 'put ''M1x1YmEzNFx1YmEzNVx1YmEzNlx1YmEzN1x1YmEzYVx1YmEzYlx1YmEzZFx1YmEzZVx1YmEzZlx1YmE0MVx1YmE0M1x1YmE0NFx1YmE0NVx1YmE0Nlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0NF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTQ0XVtFXS5jaGFyQ29kZUF0KDApJiYobWVb''@;'; put 'put ''QlsxNDRdW0VdXT0zNjg2NCtFLExbMzY4NjQrRV09QlsxNDRdW0VdKTtmb3IoQlsxNDVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJhNDdcdWJhNGFcdWJhNGNcdWJhNGZcdWJhNTBcdWJhNTFcdWJhNTJcdWJhNTZcdWJh''@;'; put 'put ''NTdcdWJhNTlcdWJhNWFcdWJhNWJcdWJhNWRcdWJhNWVcdWJhNWZcdWJhNjBcdWJhNjFcdWJhNjJcdWJhNjNcdWJhNjZcdWJhNmFcdWJhNmJcdWJhNmNcdWJhNmRcdWJhNmVcdWJhNmZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJhNzJcdWJhNzNcdWJhNzVcdWJhNzZc''@;'; put 'put ''dWJhNzdcdWJhNzlcdWJhN2FcdWJhN2JcdWJhN2NcdWJhN2RcdWJhN2VcdWJhN2ZcdWJhODBcdWJhODFcdWJhODJcdWJhODZcdWJhODhcdWJhODlcdWJhOGFcdWJhOGJcdWJhOGRcdWJhOGVcdWJhOGZcdWJhOTBcdWJhOTFcdWJhOTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWJhOTNcdWJhOTRcdWJhOTVcdWJhOTZcdWJhOTdcdWJhOThcdWJhOTlcdWJhOWFcdWJhOWJcdWJhOWNcdWJhOWRcdWJhOWVcdWJhOWZcdWJhYTBcdWJhYTFcdWJhYTJcdWJhYTNcdWJhYTRcdWJhYTVcdWJhYTZcdWJhYTdcdWJhYWFcdWJhYWRcdWJhYWVcdWJhYWZcdWJhYjFcdWJhYjNc''@;'; put 'put ''dWJhYjRcdWJhYjVcdWJhYjZcdWJhYjdcdWJhYmFcdWJhYmNcdWJhYmVcdWJhYmZcdWJhYzBcdWJhYzFcdWJhYzJcdWJhYzNcdWJhYzVcdWJhYzZcdWJhYzdcdWJhYzlcdWJhY2FcdWJhY2JcdWJhY2NcdWJhY2RcdWJhY2VcdWJhY2ZcdWJhZDBcdWJhZDFcdWJhZDJcdWJhZDNcdWJhZDRcdWJh''@;'; put 'put ''ZDVcdWJhZDZcdWJhZDdcdWJhZGFcdWJhZGJcdWJhZGNcdWJhZGRcdWJhZGVcdWJhZGZcdWJhZTBcdWJhZTFcdWJhZTJcdWJhZTNcdWJhZTRcdWJhZTVcdWJhZTZcdWJhZTdcdWJhZThcdWJhZTlcdWJhZWFcdWJhZWJcdWJhZWNcdWJhZWRcdWJhZWVcdWJhZWZcdWJhZjBcdWJhZjFcdWJhZjJc''@;'; put 'put ''dWJhZjNcdWJhZjRcdWJhZjVcdWJhZjZcdWJhZjdcdWJhZjhcdWJhZjlcdWJhZmFcdWJhZmJcdWJhZmRcdWJhZmVcdWJhZmZcdWJiMDFcdWJiMDJcdWJiMDNcdWJiMDVcdWJiMDZcdWJiMDdcdWJiMDhcdWJiMDlcdWJiMGFcdWJiMGJcdWJiMGNcdWJiMGVcdWJiMTBcdWJiMTJcdWJiMTNcdWJi''@;'; put 'put ''MTRcdWJiMTVcdWJiMTZcdWJiMTdcdWJiMTlcdWJiMWFcdWJiMWJcdWJiMWRcdWJiMWVcdWJiMWZcdWJiMjFcdWJiMjJcdWJiMjNcdWJiMjRcdWJiMjVcdWJiMjZcdWJiMjdcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNDVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0NV1bRV0uY2hhckNv''@;'; put 'put ''ZGVBdCgwKSYmKG1lW0JbMTQ1XVtFXV09MzcxMjArRSxMWzM3MTIwK0VdPUJbMTQ1XVtFXSk7Zm9yKEJbMTQ2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViYjI4XHViYjJhXHViYjJjXHViYjJkXHViYjJlXHViYjJmXHVi''@;'; put 'put ''YjMwXHViYjMxXHViYjMyXHViYjMzXHViYjM3XHViYjM5XHViYjNhXHViYjNmXHViYjQwXHViYjQxXHViYjQyXHViYjQzXHViYjQ2XHViYjQ4XHViYjRhXHViYjRiXHViYjRjXHViYjRlXHViYjUxXHViYjUyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViYjUzXHViYjU1''@;'; put 'put ''XHViYjU2XHViYjU3XHViYjU5XHViYjVhXHViYjViXHViYjVjXHViYjVkXHViYjVlXHViYjVmXHViYjYwXHViYjYyXHViYjY0XHViYjY1XHViYjY2XHViYjY3XHViYjY4XHViYjY5XHViYjZhXHViYjZiXHViYjZkXHViYjZlXHViYjZmXHViYjcwXHViYjcxXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHViYjcyXHViYjczXHViYjc0XHViYjc1XHViYjc2XHViYjc3XHViYjc4XHViYjc5XHViYjdhXHViYjdiXHViYjdjXHViYjdkXHViYjdlXHViYjdmXHViYjgwXHViYjgxXHViYjgyXHViYjgzXHViYjg0XHViYjg1XHViYjg2XHViYjg3XHViYjg5XHViYjhhXHViYjhi''@;'; put 'put ''XHViYjhkXHViYjhlXHViYjhmXHViYjkxXHViYjkyXHViYjkzXHViYjk0XHViYjk1XHViYjk2XHViYjk3XHViYjk4XHViYjk5XHViYjlhXHViYjliXHViYjljXHViYjlkXHViYjllXHViYjlmXHViYmEwXHViYmExXHViYmEyXHViYmEzXHViYmE1XHViYmE2XHViYmE3XHViYmE5XHViYmFhXHVi''@;'; put 'put ''YmFiXHViYmFkXHViYmFlXHViYmFmXHViYmIwXHViYmIxXHViYmIyXHViYmIzXHViYmI1XHViYmI2XHViYmI4XHViYmI5XHViYmJhXHViYmJiXHViYmJjXHViYmJkXHViYmJlXHViYmJmXHViYmMxXHViYmMyXHViYmMzXHViYmM1XHViYmM2XHViYmM3XHViYmM5XHViYmNhXHViYmNiXHViYmNj''@;'; put 'put ''XHViYmNkXHViYmNlXHViYmNmXHViYmQxXHViYmQyXHViYmQ0XHViYmQ1XHViYmQ2XHViYmQ3XHViYmQ4XHViYmQ5XHViYmRhXHViYmRiXHViYmRjXHViYmRkXHViYmRlXHViYmRmXHViYmUwXHViYmUxXHViYmUyXHViYmUzXHViYmU0XHViYmU1XHViYmU2XHViYmU3XHViYmU4XHViYmU5XHVi''@;'; put 'put ''YmVhXHViYmViXHViYmVjXHViYmVkXHViYmVlXHViYmVmXHViYmYwXHViYmYxXHViYmYyXHViYmYzXHViYmY0XHViYmY1XHViYmY2XHViYmY3XHViYmZhXHViYmZiXHViYmZkXHViYmZlXHViYzAxXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTQ2XS5sZW5ndGg7KytFKTY1NTMzIT09Qlsx''@;'; put 'put ''NDZdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE0Nl1bRV1dPTM3Mzc2K0UsTFszNzM3NitFXT1CWzE0Nl1bRV0pO2ZvcihCWzE0N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmMwM1x1YmMwNFx1YmMwNVx1YmMwNlx1''@;'; put 'put ''YmMwN1x1YmMwYVx1YmMwZVx1YmMxMFx1YmMxMlx1YmMxM1x1YmMxOVx1YmMxYVx1YmMyMFx1YmMyMVx1YmMyMlx1YmMyM1x1YmMyNlx1YmMyOFx1YmMyYVx1YmMyYlx1YmMyY1x1YmMyZVx1YmMyZlx1YmMzMlx1YmMzM1x1YmMzNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1YmMzNlx1YmMzN1x1YmMzOVx1YmMzYVx1YmMzYlx1YmMzY1x1YmMzZFx1YmMzZVx1YmMzZlx1YmM0Mlx1YmM0Nlx1YmM0N1x1YmM0OFx1YmM0YVx1YmM0Ylx1YmM0ZVx1YmM0Zlx1YmM1MVx1YmM1Mlx1YmM1M1x1YmM1NFx1YmM1NVx1YmM1Nlx1YmM1N1x1YmM1OFx1YmM1OVx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmM1YVx1YmM1Ylx1YmM1Y1x1YmM1ZVx1YmM1Zlx1YmM2MFx1YmM2MVx1YmM2Mlx1YmM2M1x1YmM2NFx1YmM2NVx1YmM2Nlx1YmM2N1x1YmM2OFx1YmM2OVx1YmM2YVx1YmM2Ylx1YmM2Y1x1YmM2ZFx1YmM2ZVx1YmM2Zlx1YmM3MFx1YmM3''@;'; put 'put ''MVx1YmM3Mlx1YmM3M1x1YmM3NFx1YmM3NVx1YmM3Nlx1YmM3N1x1YmM3OFx1YmM3OVx1YmM3YVx1YmM3Ylx1YmM3Y1x1YmM3ZFx1YmM3ZVx1YmM3Zlx1YmM4MFx1YmM4MVx1YmM4Mlx1YmM4M1x1YmM4Nlx1YmM4N1x1YmM4OVx1YmM4YVx1YmM4ZFx1YmM4Zlx1YmM5MFx1YmM5MVx1YmM5Mlx1''@;'; put 'put ''YmM5M1x1YmM5Nlx1YmM5OFx1YmM5Ylx1YmM5Y1x1YmM5ZFx1YmM5ZVx1YmM5Zlx1YmNhMlx1YmNhM1x1YmNhNVx1YmNhNlx1YmNhOVx1YmNhYVx1YmNhYlx1YmNhY1x1YmNhZFx1YmNhZVx1YmNhZlx1YmNiMlx1YmNiNlx1YmNiN1x1YmNiOFx1YmNiOVx1YmNiYVx1YmNiYlx1YmNiZVx1YmNi''@;'; put 'put ''Zlx1YmNjMVx1YmNjMlx1YmNjM1x1YmNjNVx1YmNjNlx1YmNjN1x1YmNjOFx1YmNjOVx1YmNjYVx1YmNjYlx1YmNjY1x1YmNjZVx1YmNkMlx1YmNkM1x1YmNkNFx1YmNkNlx1YmNkN1x1YmNkOVx1YmNkYVx1YmNkYlx1YmNkZFx1YmNkZVx1YmNkZlx1YmNlMFx1YmNlMVx1YmNlMlx1YmNlM1x1''@;'; put 'put ''YmNlNFx1YmNlNVx1YmNlNlx1YmNlN1x1YmNlOFx1YmNlOVx1YmNlYVx1YmNlYlx1YmNlY1x1YmNlZFx1YmNlZVx1YmNlZlx1YmNmMFx1YmNmMVx1YmNmMlx1YmNmM1x1YmNmN1x1YmNmOVx1YmNmYVx1YmNmYlx1YmNmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE0N10ubGVuZ3RoOysr''@;'; put 'put ''RSk2NTUzMyE9PUJbMTQ3XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNDddW0VdXT0zNzYzMitFLExbMzc2MzIrRV09QlsxNDddW0VdKTtmb3IoQlsxNDhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJjZmVcdWJjZmZc''@;'; put 'put ''dWJkMDBcdWJkMDFcdWJkMDJcdWJkMDNcdWJkMDZcdWJkMDhcdWJkMGFcdWJkMGJcdWJkMGNcdWJkMGRcdWJkMGVcdWJkMGZcdWJkMTFcdWJkMTJcdWJkMTNcdWJkMTVcdWJkMTZcdWJkMTdcdWJkMThcdWJkMTlcdWJkMWFcdWJkMWJcdWJkMWNcdWJkMWRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWJkMWVcdWJkMWZcdWJkMjBcdWJkMjFcdWJkMjJcdWJkMjNcdWJkMjVcdWJkMjZcdWJkMjdcdWJkMjhcdWJkMjlcdWJkMmFcdWJkMmJcdWJkMmRcdWJkMmVcdWJkMmZcdWJkMzBcdWJkMzFcdWJkMzJcdWJkMzNcdWJkMzRcdWJkMzVcdWJkMzZcdWJkMzdcdWJkMzhc''@;'; put 'put ''dWJkMzlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJkM2FcdWJkM2JcdWJkM2NcdWJkM2RcdWJkM2VcdWJkM2ZcdWJkNDFcdWJkNDJcdWJkNDNcdWJkNDRcdWJkNDVcdWJkNDZcdWJkNDdcdWJkNGFcdWJkNGJcdWJkNGRcdWJkNGVcdWJkNGZcdWJkNTFcdWJkNTJcdWJk''@;'; put 'put ''NTNcdWJkNTRcdWJkNTVcdWJkNTZcdWJkNTdcdWJkNWFcdWJkNWJcdWJkNWNcdWJkNWRcdWJkNWVcdWJkNWZcdWJkNjBcdWJkNjFcdWJkNjJcdWJkNjNcdWJkNjVcdWJkNjZcdWJkNjdcdWJkNjlcdWJkNmFcdWJkNmJcdWJkNmNcdWJkNmRcdWJkNmVcdWJkNmZcdWJkNzBcdWJkNzFcdWJkNzJc''@;'; put 'put ''dWJkNzNcdWJkNzRcdWJkNzVcdWJkNzZcdWJkNzdcdWJkNzhcdWJkNzlcdWJkN2FcdWJkN2JcdWJkN2NcdWJkN2RcdWJkN2VcdWJkN2ZcdWJkODJcdWJkODNcdWJkODVcdWJkODZcdWJkOGJcdWJkOGNcdWJkOGRcdWJkOGVcdWJkOGZcdWJkOTJcdWJkOTRcdWJkOTZcdWJkOTdcdWJkOThcdWJk''@;'; put 'put ''OWJcdWJkOWRcdWJkOWVcdWJkOWZcdWJkYTBcdWJkYTFcdWJkYTJcdWJkYTNcdWJkYTVcdWJkYTZcdWJkYTdcdWJkYThcdWJkYTlcdWJkYWFcdWJkYWJcdWJkYWNcdWJkYWRcdWJkYWVcdWJkYWZcdWJkYjFcdWJkYjJcdWJkYjNcdWJkYjRcdWJkYjVcdWJkYjZcdWJkYjdcdWJkYjlcdWJkYmFc''@;'; put 'put ''dWJkYmJcdWJkYmNcdWJkYmRcdWJkYmVcdWJkYmZcdWJkYzBcdWJkYzFcdWJkYzJcdWJkYzNcdWJkYzRcdWJkYzVcdWJkYzZcdWJkYzdcdWJkYzhcdWJkYzlcdWJkY2FcdWJkY2JcdWJkY2NcdWJkY2RcdWJkY2VcdWJkY2ZcdWJkZDBcdWJkZDFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9Qlsx''@;'; put 'put ''NDhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE0OF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTQ4XVtFXV09Mzc4ODgrRSxMWzM3ODg4K0VdPUJbMTQ4XVtFXSk7Zm9yKEJbMTQ5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHViZGQyXHViZGQzXHViZGQ2XHViZGQ3XHViZGQ5XHViZGRhXHViZGRiXHViZGRkXHViZGRlXHViZGRmXHViZGUwXHViZGUxXHViZGUyXHViZGUzXHViZGU0XHViZGU1XHViZGU2XHViZGU3XHViZGU4XHViZGVhXHViZGViXHViZGVjXHViZGVkXHViZGVlXHViZGVmXHViZGYxXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViZGYyXHViZGYzXHViZGY1XHViZGY2XHViZGY3XHViZGY5XHViZGZhXHViZGZiXHViZGZjXHViZGZkXHViZGZlXHViZGZmXHViZTAxXHViZTAyXHViZTA0XHViZTA2XHViZTA3XHViZTA4XHViZTA5XHViZTBhXHViZTBiXHViZTBlXHViZTBm''@;'; put 'put ''XHViZTExXHViZTEyXHViZTEzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViZTE1XHViZTE2XHViZTE3XHViZTE4XHViZTE5XHViZTFhXHViZTFiXHViZTFlXHViZTIwXHViZTIxXHViZTIyXHViZTIzXHViZTI0XHViZTI1XHViZTI2XHViZTI3XHViZTI4XHViZTI5XHVi''@;'; put 'put ''ZTJhXHViZTJiXHViZTJjXHViZTJkXHViZTJlXHViZTJmXHViZTMwXHViZTMxXHViZTMyXHViZTMzXHViZTM0XHViZTM1XHViZTM2XHViZTM3XHViZTM4XHViZTM5XHViZTNhXHViZTNiXHViZTNjXHViZTNkXHViZTNlXHViZTNmXHViZTQwXHViZTQxXHViZTQyXHViZTQzXHViZTQ2XHViZTQ3''@;'; put 'put ''XHViZTQ5XHViZTRhXHViZTRiXHViZTRkXHViZTRmXHViZTUwXHViZTUxXHViZTUyXHViZTUzXHViZTU2XHViZTU4XHViZTVjXHViZTVkXHViZTVlXHViZTVmXHViZTYyXHViZTYzXHViZTY1XHViZTY2XHViZTY3XHViZTY5XHViZTZiXHViZTZjXHViZTZkXHViZTZlXHViZTZmXHViZTcyXHVi''@;'; put 'put ''ZTc2XHViZTc3XHViZTc4XHViZTc5XHViZTdhXHViZTdlXHViZTdmXHViZTgxXHViZTgyXHViZTgzXHViZTg1XHViZTg2XHViZTg3XHViZTg4XHViZTg5XHViZThhXHViZThiXHViZThlXHViZTkyXHViZTkzXHViZTk0XHViZTk1XHViZTk2XHViZTk3XHViZTlhXHViZTliXHViZTljXHViZTlk''@;'; put 'put ''XHViZTllXHViZTlmXHViZWEwXHViZWExXHViZWEyXHViZWEzXHViZWE0XHViZWE1XHViZWE2XHViZWE3XHViZWE5XHViZWFhXHViZWFiXHViZWFjXHViZWFkXHViZWFlXHViZWFmXHViZWIwXHViZWIxXHViZWIyXHViZWIzXHViZWI0XHViZWI1XHViZWI2XHViZWI3XHVmZmZkIi5zcGxpdCgi''@;'; put 'put ''IiksRT0wO0UhPUJbMTQ5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNDldW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE0OV1bRV1dPTM4MTQ0K0UsTFszODE0NCtFXT1CWzE0OV1bRV0pO2ZvcihCWzE1MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1YmViOFx1YmViOVx1YmViYVx1YmViYlx1YmViY1x1YmViZFx1YmViZVx1YmViZlx1YmVjMFx1YmVjMVx1YmVjMlx1YmVjM1x1YmVjNFx1YmVjNVx1YmVjNlx1YmVjN1x1YmVjOFx1YmVjOVx1YmVjYVx1YmVjYlx1YmVjY1x1YmVjZFx1YmVjZVx1YmVjZlx1YmVkMlx1''@;'; put 'put ''YmVkM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmVkNVx1YmVkNlx1YmVkOVx1YmVkYVx1YmVkYlx1YmVkY1x1YmVkZFx1YmVkZVx1YmVkZlx1YmVlMVx1YmVlMlx1YmVlNlx1YmVlN1x1YmVlOFx1YmVlOVx1YmVlYVx1YmVlYlx1YmVlZFx1YmVlZVx1YmVlZlx1YmVm''@;'; put 'put ''MFx1YmVmMVx1YmVmMlx1YmVmM1x1YmVmNFx1YmVmNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmVmNlx1YmVmN1x1YmVmOFx1YmVmOVx1YmVmYVx1YmVmYlx1YmVmY1x1YmVmZFx1YmVmZVx1YmVmZlx1YmYwMFx1YmYwMlx1YmYwM1x1YmYwNFx1YmYwNVx1YmYwNlx1''@;'; put 'put ''YmYwN1x1YmYwYVx1YmYwYlx1YmYwY1x1YmYwZFx1YmYwZVx1YmYwZlx1YmYxMFx1YmYxMVx1YmYxMlx1YmYxM1x1YmYxNFx1YmYxNVx1YmYxNlx1YmYxN1x1YmYxYVx1YmYxZVx1YmYxZlx1YmYyMFx1YmYyMVx1YmYyMlx1YmYyM1x1YmYyNFx1YmYyNVx1YmYyNlx1YmYyN1x1YmYyOFx1YmYy''@;'; put 'put ''OVx1YmYyYVx1YmYyYlx1YmYyY1x1YmYyZFx1YmYyZVx1YmYyZlx1YmYzMFx1YmYzMVx1YmYzMlx1YmYzM1x1YmYzNFx1YmYzNVx1YmYzNlx1YmYzN1x1YmYzOFx1YmYzOVx1YmYzYVx1YmYzYlx1YmYzY1x1YmYzZFx1YmYzZVx1YmYzZlx1YmY0Mlx1YmY0M1x1YmY0NVx1YmY0Nlx1YmY0N1x1''@;'; put 'put ''YmY0OVx1YmY0YVx1YmY0Ylx1YmY0Y1x1YmY0ZFx1YmY0ZVx1YmY0Zlx1YmY1Mlx1YmY1M1x1YmY1NFx1YmY1Nlx1YmY1N1x1YmY1OFx1YmY1OVx1YmY1YVx1YmY1Ylx1YmY1Y1x1YmY1ZFx1YmY1ZVx1YmY1Zlx1YmY2MFx1YmY2MVx1YmY2Mlx1YmY2M1x1YmY2NFx1YmY2NVx1YmY2Nlx1YmY2''@;'; put 'put ''N1x1YmY2OFx1YmY2OVx1YmY2YVx1YmY2Ylx1YmY2Y1x1YmY2ZFx1YmY2ZVx1YmY2Zlx1YmY3MFx1YmY3MVx1YmY3Mlx1YmY3M1x1YmY3NFx1YmY3NVx1YmY3Nlx1YmY3N1x1YmY3OFx1YmY3OVx1YmY3YVx1YmY3Ylx1YmY3Y1x1YmY3ZFx1YmY3ZVx1YmY3Zlx1YmY4MFx1YmY4MVx1YmY4Mlx1''@;'; put 'put ''ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1MF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTUwXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNTBdW0VdXT0zODQwMCtFLExbMzg0MDArRV09QlsxNTBdW0VdKTtmb3IoQlsxNTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJmODNcdWJmODRcdWJmODVcdWJmODZcdWJmODdcdWJmODhcdWJmODlcdWJmOGFcdWJmOGJcdWJmOGNcdWJmOGRcdWJmOGVcdWJmOGZcdWJmOTBcdWJmOTFcdWJmOTJcdWJmOTNcdWJmOTVcdWJmOTZcdWJmOTdcdWJmOThcdWJmOTlcdWJmOWFc''@;'; put 'put ''dWJmOWJcdWJmOWNcdWJmOWRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJmOWVcdWJmOWZcdWJmYTBcdWJmYTFcdWJmYTJcdWJmYTNcdWJmYTRcdWJmYTVcdWJmYTZcdWJmYTdcdWJmYThcdWJmYTlcdWJmYWFcdWJmYWJcdWJmYWNcdWJmYWRcdWJmYWVcdWJmYWZcdWJm''@;'; put 'put ''YjFcdWJmYjJcdWJmYjNcdWJmYjRcdWJmYjVcdWJmYjZcdWJmYjdcdWJmYjhcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJmYjlcdWJmYmFcdWJmYmJcdWJmYmNcdWJmYmRcdWJmYmVcdWJmYmZcdWJmYzBcdWJmYzFcdWJmYzJcdWJmYzNcdWJmYzRcdWJmYzZcdWJmYzdc''@;'; put 'put ''dWJmYzhcdWJmYzlcdWJmY2FcdWJmY2JcdWJmY2VcdWJmY2ZcdWJmZDFcdWJmZDJcdWJmZDNcdWJmZDVcdWJmZDZcdWJmZDdcdWJmZDhcdWJmZDlcdWJmZGFcdWJmZGJcdWJmZGRcdWJmZGVcdWJmZTBcdWJmZTJcdWJmZTNcdWJmZTRcdWJmZTVcdWJmZTZcdWJmZTdcdWJmZThcdWJmZTlcdWJm''@;'; put 'put ''ZWFcdWJmZWJcdWJmZWNcdWJmZWRcdWJmZWVcdWJmZWZcdWJmZjBcdWJmZjFcdWJmZjJcdWJmZjNcdWJmZjRcdWJmZjVcdWJmZjZcdWJmZjdcdWJmZjhcdWJmZjlcdWJmZmFcdWJmZmJcdWJmZmNcdWJmZmRcdWJmZmVcdWJmZmZcdWMwMDBcdWMwMDFcdWMwMDJcdWMwMDNcdWMwMDRcdWMwMDVc''@;'; put 'put ''dWMwMDZcdWMwMDdcdWMwMDhcdWMwMDlcdWMwMGFcdWMwMGJcdWMwMGNcdWMwMGRcdWMwMGVcdWMwMGZcdWMwMTBcdWMwMTFcdWMwMTJcdWMwMTNcdWMwMTRcdWMwMTVcdWMwMTZcdWMwMTdcdWMwMThcdWMwMTlcdWMwMWFcdWMwMWJcdWMwMWNcdWMwMWRcdWMwMWVcdWMwMWZcdWMwMjBcdWMw''@;'; put 'put ''MjFcdWMwMjJcdWMwMjNcdWMwMjRcdWMwMjVcdWMwMjZcdWMwMjdcdWMwMjhcdWMwMjlcdWMwMmFcdWMwMmJcdWMwMmNcdWMwMmRcdWMwMmVcdWMwMmZcdWMwMzBcdWMwMzFcdWMwMzJcdWMwMzNcdWMwMzRcdWMwMzVcdWMwMzZcdWMwMzdcdWMwMzhcdWMwMzlcdWMwM2FcdWMwM2JcdWMwM2Rc''@;'; put 'put ''dWMwM2VcdWMwM2ZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNTFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1MV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTUxXVtFXV09Mzg2NTYrRSxMWzM4NjU2K0VdPUJbMTUxXVtFXSk7Zm9yKEJbMTUyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjMDQwXHVjMDQxXHVjMDQyXHVjMDQzXHVjMDQ0XHVjMDQ1XHVjMDQ2XHVjMDQ3XHVjMDQ4XHVjMDQ5XHVjMDRhXHVjMDRiXHVjMDRjXHVjMDRkXHVjMDRlXHVjMDRmXHVjMDUwXHVjMDUyXHVjMDUzXHVjMDU0XHVjMDU1''@;'; put 'put ''XHVjMDU2XHVjMDU3XHVjMDU5XHVjMDVhXHVjMDViXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjMDVkXHVjMDVlXHVjMDVmXHVjMDYxXHVjMDYyXHVjMDYzXHVjMDY0XHVjMDY1XHVjMDY2XHVjMDY3XHVjMDZhXHVjMDZiXHVjMDZjXHVjMDZkXHVjMDZlXHVjMDZmXHVj''@;'; put 'put ''MDcwXHVjMDcxXHVjMDcyXHVjMDczXHVjMDc0XHVjMDc1XHVjMDc2XHVjMDc3XHVjMDc4XHVjMDc5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjMDdhXHVjMDdiXHVjMDdjXHVjMDdkXHVjMDdlXHVjMDdmXHVjMDgwXHVjMDgxXHVjMDgyXHVjMDgzXHVjMDg0XHVjMDg1''@;'; put 'put ''XHVjMDg2XHVjMDg3XHVjMDg4XHVjMDg5XHVjMDhhXHVjMDhiXHVjMDhjXHVjMDhkXHVjMDhlXHVjMDhmXHVjMDkyXHVjMDkzXHVjMDk1XHVjMDk2XHVjMDk3XHVjMDk5XHVjMDlhXHVjMDliXHVjMDljXHVjMDlkXHVjMDllXHVjMDlmXHVjMGEyXHVjMGE0XHVjMGE2XHVjMGE3XHVjMGE4XHVj''@;'; put 'put ''MGE5XHVjMGFhXHVjMGFiXHVjMGFlXHVjMGIxXHVjMGIyXHVjMGI3XHVjMGI4XHVjMGI5XHVjMGJhXHVjMGJiXHVjMGJlXHVjMGMyXHVjMGMzXHVjMGM0XHVjMGM2XHVjMGM3XHVjMGNhXHVjMGNiXHVjMGNkXHVjMGNlXHVjMGNmXHVjMGQxXHVjMGQyXHVjMGQzXHVjMGQ0XHVjMGQ1XHVjMGQ2''@;'; put 'put ''XHVjMGQ3XHVjMGRhXHVjMGRlXHVjMGRmXHVjMGUwXHVjMGUxXHVjMGUyXHVjMGUzXHVjMGU2XHVjMGU3XHVjMGU5XHVjMGVhXHVjMGViXHVjMGVkXHVjMGVlXHVjMGVmXHVjMGYwXHVjMGYxXHVjMGYyXHVjMGYzXHVjMGY2XHVjMGY4XHVjMGZhXHVjMGZiXHVjMGZjXHVjMGZkXHVjMGZlXHVj''@;'; put 'put ''MGZmXHVjMTAxXHVjMTAyXHVjMTAzXHVjMTA1XHVjMTA2XHVjMTA3XHVjMTA5XHVjMTBhXHVjMTBiXHVjMTBjXHVjMTBkXHVjMTBlXHVjMTBmXHVjMTExXHVjMTEyXHVjMTEzXHVjMTE0XHVjMTE2XHVjMTE3XHVjMTE4XHVjMTE5XHVjMTFhXHVjMTFiXHVjMTIxXHVjMTIyXHVjMTI1XHVjMTI4''@;'; put 'put ''XHVjMTI5XHVjMTJhXHVjMTJiXHVjMTJlXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTUyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNTJdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE1Ml1bRV1dPTM4OTEyK0UsTFszODkxMitFXT1CWzE1Ml1bRV0pO2ZvcihCWzE1M109Ilx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzEzMlx1YzEzM1x1YzEzNFx1YzEzNVx1YzEzN1x1YzEzYVx1YzEzYlx1YzEzZFx1YzEzZVx1YzEzZlx1YzE0MVx1YzE0Mlx1YzE0M1x1YzE0NFx1YzE0NVx1YzE0Nlx1YzE0N1x1YzE0YVx1YzE0''@;'; put 'put ''ZVx1YzE0Zlx1YzE1MFx1YzE1MVx1YzE1Mlx1YzE1M1x1YzE1Nlx1YzE1N1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzE1OVx1YzE1YVx1YzE1Ylx1YzE1ZFx1YzE1ZVx1YzE1Zlx1YzE2MFx1YzE2MVx1YzE2Mlx1YzE2M1x1YzE2Nlx1YzE2YVx1YzE2Ylx1YzE2Y1x1''@;'; put 'put ''YzE2ZFx1YzE2ZVx1YzE2Zlx1YzE3MVx1YzE3Mlx1YzE3M1x1YzE3NVx1YzE3Nlx1YzE3N1x1YzE3OVx1YzE3YVx1YzE3Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzE3Y1x1YzE3ZFx1YzE3ZVx1YzE3Zlx1YzE4MFx1YzE4MVx1YzE4Mlx1YzE4M1x1YzE4NFx1YzE4''@;'; put 'put ''Nlx1YzE4N1x1YzE4OFx1YzE4OVx1YzE4YVx1YzE4Ylx1YzE4Zlx1YzE5MVx1YzE5Mlx1YzE5M1x1YzE5NVx1YzE5N1x1YzE5OFx1YzE5OVx1YzE5YVx1YzE5Ylx1YzE5ZVx1YzFhMFx1YzFhMlx1YzFhM1x1YzFhNFx1YzFhNlx1YzFhN1x1YzFhYVx1YzFhYlx1YzFhZFx1YzFhZVx1YzFhZlx1''@;'; put 'put ''YzFiMVx1YzFiMlx1YzFiM1x1YzFiNFx1YzFiNVx1YzFiNlx1YzFiN1x1YzFiOFx1YzFiOVx1YzFiYVx1YzFiYlx1YzFiY1x1YzFiZVx1YzFiZlx1YzFjMFx1YzFjMVx1YzFjMlx1YzFjM1x1YzFjNVx1YzFjNlx1YzFjN1x1YzFjOVx1YzFjYVx1YzFjYlx1YzFjZFx1YzFjZVx1YzFjZlx1YzFk''@;'; put 'put ''MFx1YzFkMVx1YzFkMlx1YzFkM1x1YzFkNVx1YzFkNlx1YzFkOVx1YzFkYVx1YzFkYlx1YzFkY1x1YzFkZFx1YzFkZVx1YzFkZlx1YzFlMVx1YzFlMlx1YzFlM1x1YzFlNVx1YzFlNlx1YzFlN1x1YzFlOVx1YzFlYVx1YzFlYlx1YzFlY1x1YzFlZFx1YzFlZVx1YzFlZlx1YzFmMlx1YzFmNFx1''@;'; put 'put ''YzFmNVx1YzFmNlx1YzFmN1x1YzFmOFx1YzFmOVx1YzFmYVx1YzFmYlx1YzFmZVx1YzFmZlx1YzIwMVx1YzIwMlx1YzIwM1x1YzIwNVx1YzIwNlx1YzIwN1x1YzIwOFx1YzIwOVx1YzIwYVx1YzIwYlx1YzIwZVx1YzIxMFx1YzIxMlx1YzIxM1x1YzIxNFx1YzIxNVx1YzIxNlx1YzIxN1x1YzIx''@;'; put 'put ''YVx1YzIxYlx1YzIxZFx1YzIxZVx1YzIyMVx1YzIyMlx1YzIyM1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1M10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTUzXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNTNdW0VdXT0zOTE2OCtFLExbMzkxNjgrRV09QlsxNTNdW0VdKTtmb3IoQlsx''@;'; put 'put ''NTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWMyMjRcdWMyMjVcdWMyMjZcdWMyMjdcdWMyMmFcdWMyMmNcdWMyMmVcdWMyMzBcdWMyMzNcdWMyMzVcdWMyMzZcdWMyMzdcdWMyMzhcdWMyMzlcdWMyM2FcdWMyM2JcdWMy''@;'; put 'put ''M2NcdWMyM2RcdWMyM2VcdWMyM2ZcdWMyNDBcdWMyNDFcdWMyNDJcdWMyNDNcdWMyNDRcdWMyNDVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWMyNDZcdWMyNDdcdWMyNDlcdWMyNGFcdWMyNGJcdWMyNGNcdWMyNGRcdWMyNGVcdWMyNGZcdWMyNTJcdWMyNTNcdWMyNTVc''@;'; put 'put ''dWMyNTZcdWMyNTdcdWMyNTlcdWMyNWFcdWMyNWJcdWMyNWNcdWMyNWRcdWMyNWVcdWMyNWZcdWMyNjFcdWMyNjJcdWMyNjNcdWMyNjRcdWMyNjZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWMyNjdcdWMyNjhcdWMyNjlcdWMyNmFcdWMyNmJcdWMyNmVcdWMyNmZcdWMy''@;'; put 'put ''NzFcdWMyNzJcdWMyNzNcdWMyNzVcdWMyNzZcdWMyNzdcdWMyNzhcdWMyNzlcdWMyN2FcdWMyN2JcdWMyN2VcdWMyODBcdWMyODJcdWMyODNcdWMyODRcdWMyODVcdWMyODZcdWMyODdcdWMyOGFcdWMyOGJcdWMyOGNcdWMyOGRcdWMyOGVcdWMyOGZcdWMyOTFcdWMyOTJcdWMyOTNcdWMyOTRc''@;'; put 'put ''dWMyOTVcdWMyOTZcdWMyOTdcdWMyOTlcdWMyOWFcdWMyOWNcdWMyOWVcdWMyOWZcdWMyYTBcdWMyYTFcdWMyYTJcdWMyYTNcdWMyYTZcdWMyYTdcdWMyYTlcdWMyYWFcdWMyYWJcdWMyYWVcdWMyYWZcdWMyYjBcdWMyYjFcdWMyYjJcdWMyYjNcdWMyYjZcdWMyYjhcdWMyYmFcdWMyYmJcdWMy''@;'; put 'put ''YmNcdWMyYmRcdWMyYmVcdWMyYmZcdWMyYzBcdWMyYzFcdWMyYzJcdWMyYzNcdWMyYzRcdWMyYzVcdWMyYzZcdWMyYzdcdWMyYzhcdWMyYzlcdWMyY2FcdWMyY2JcdWMyY2NcdWMyY2RcdWMyY2VcdWMyY2ZcdWMyZDBcdWMyZDFcdWMyZDJcdWMyZDNcdWMyZDRcdWMyZDVcdWMyZDZcdWMyZDdc''@;'; put 'put ''dWMyZDhcdWMyZDlcdWMyZGFcdWMyZGJcdWMyZGVcdWMyZGZcdWMyZTFcdWMyZTJcdWMyZTVcdWMyZTZcdWMyZTdcdWMyZThcdWMyZTlcdWMyZWFcdWMyZWVcdWMyZjBcdWMyZjJcdWMyZjNcdWMyZjRcdWMyZjVcdWMyZjdcdWMyZmFcdWMyZmRcdWMyZmVcdWMyZmZcdWMzMDFcdWMzMDJcdWMz''@;'; put 'put ''MDNcdWMzMDRcdWMzMDVcdWMzMDZcdWMzMDdcdWMzMGFcdWMzMGJcdWMzMGVcdWMzMGZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNTRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1NF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTU0XVtFXV09Mzk0MjQrRSxMWzM5NDI0K0VdPUJbMTU0''@;'; put 'put ''XVtFXSk7Zm9yKEJbMTU1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjMzEwXHVjMzExXHVjMzEyXHVjMzE2XHVjMzE3XHVjMzE5XHVjMzFhXHVjMzFiXHVjMzFkXHVjMzFlXHVjMzFmXHVjMzIwXHVjMzIxXHVjMzIyXHVj''@;'; put 'put ''MzIzXHVjMzI2XHVjMzI3XHVjMzJhXHVjMzJiXHVjMzJjXHVjMzJkXHVjMzJlXHVjMzJmXHVjMzMwXHVjMzMxXHVjMzMyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjMzMzXHVjMzM0XHVjMzM1XHVjMzM2XHVjMzM3XHVjMzM4XHVjMzM5XHVjMzNhXHVjMzNiXHVjMzNj''@;'; put 'put ''XHVjMzNkXHVjMzNlXHVjMzNmXHVjMzQwXHVjMzQxXHVjMzQyXHVjMzQzXHVjMzQ0XHVjMzQ2XHVjMzQ3XHVjMzQ4XHVjMzQ5XHVjMzRhXHVjMzRiXHVjMzRjXHVjMzRkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjMzRlXHVjMzRmXHVjMzUwXHVjMzUxXHVjMzUyXHVj''@;'; put 'put ''MzUzXHVjMzU0XHVjMzU1XHVjMzU2XHVjMzU3XHVjMzU4XHVjMzU5XHVjMzVhXHVjMzViXHVjMzVjXHVjMzVkXHVjMzVlXHVjMzVmXHVjMzYwXHVjMzYxXHVjMzYyXHVjMzYzXHVjMzY0XHVjMzY1XHVjMzY2XHVjMzY3XHVjMzZhXHVjMzZiXHVjMzZkXHVjMzZlXHVjMzZmXHVjMzcxXHVjMzcz''@;'; put 'put ''XHVjMzc0XHVjMzc1XHVjMzc2XHVjMzc3XHVjMzdhXHVjMzdiXHVjMzdlXHVjMzdmXHVjMzgwXHVjMzgxXHVjMzgyXHVjMzgzXHVjMzg1XHVjMzg2XHVjMzg3XHVjMzg5XHVjMzhhXHVjMzhiXHVjMzhkXHVjMzhlXHVjMzhmXHVjMzkwXHVjMzkxXHVjMzkyXHVjMzkzXHVjMzk0XHVjMzk1XHVj''@;'; put 'put ''Mzk2XHVjMzk3XHVjMzk4XHVjMzk5XHVjMzlhXHVjMzliXHVjMzljXHVjMzlkXHVjMzllXHVjMzlmXHVjM2EwXHVjM2ExXHVjM2EyXHVjM2EzXHVjM2E0XHVjM2E1XHVjM2E2XHVjM2E3XHVjM2E4XHVjM2E5XHVjM2FhXHVjM2FiXHVjM2FjXHVjM2FkXHVjM2FlXHVjM2FmXHVjM2IwXHVjM2Ix''@;'; put 'put ''XHVjM2IyXHVjM2IzXHVjM2I0XHVjM2I1XHVjM2I2XHVjM2I3XHVjM2I4XHVjM2I5XHVjM2JhXHVjM2JiXHVjM2JjXHVjM2JkXHVjM2JlXHVjM2JmXHVjM2MxXHVjM2MyXHVjM2MzXHVjM2M0XHVjM2M1XHVjM2M2XHVjM2M3XHVjM2M4XHVjM2M5XHVjM2NhXHVjM2NiXHVjM2NjXHVjM2NkXHVj''@;'; put 'put ''M2NlXHVjM2NmXHVjM2QwXHVjM2QxXHVjM2QyXHVjM2QzXHVjM2Q0XHVjM2Q1XHVjM2Q2XHVjM2Q3XHVjM2RhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTU1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNTVdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE1NV1bRV1dPTM5NjgwK0UsTFsz''@;'; put 'put ''OTY4MCtFXT1CWzE1NV1bRV0pO2ZvcihCWzE1Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzNkYlx1YzNkZFx1YzNkZVx1YzNlMVx1YzNlM1x1YzNlNFx1YzNlNVx1YzNlNlx1YzNlN1x1YzNlYVx1YzNlYlx1YzNlY1x1''@;'; put 'put ''YzNlZVx1YzNlZlx1YzNmMFx1YzNmMVx1YzNmMlx1YzNmM1x1YzNmNlx1YzNmN1x1YzNmOVx1YzNmYVx1YzNmYlx1YzNmY1x1YzNmZFx1YzNmZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzNmZlx1YzQwMFx1YzQwMVx1YzQwMlx1YzQwM1x1YzQwNFx1YzQwNVx1YzQw''@;'; put 'put ''Nlx1YzQwN1x1YzQwOVx1YzQwYVx1YzQwYlx1YzQwY1x1YzQwZFx1YzQwZVx1YzQwZlx1YzQxMVx1YzQxMlx1YzQxM1x1YzQxNFx1YzQxNVx1YzQxNlx1YzQxN1x1YzQxOFx1YzQxOVx1YzQxYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzQxYlx1YzQxY1x1YzQxZFx1''@;'; put 'put ''YzQxZVx1YzQxZlx1YzQyMFx1YzQyMVx1YzQyMlx1YzQyM1x1YzQyNVx1YzQyNlx1YzQyN1x1YzQyOFx1YzQyOVx1YzQyYVx1YzQyYlx1YzQyZFx1YzQyZVx1YzQyZlx1YzQzMVx1YzQzMlx1YzQzM1x1YzQzNVx1YzQzNlx1YzQzN1x1YzQzOFx1YzQzOVx1YzQzYVx1YzQzYlx1YzQzZVx1YzQz''@;'; put 'put ''Zlx1YzQ0MFx1YzQ0MVx1YzQ0Mlx1YzQ0M1x1YzQ0NFx1YzQ0NVx1YzQ0Nlx1YzQ0N1x1YzQ0OVx1YzQ0YVx1YzQ0Ylx1YzQ0Y1x1YzQ0ZFx1YzQ0ZVx1YzQ0Zlx1YzQ1MFx1YzQ1MVx1YzQ1Mlx1YzQ1M1x1YzQ1NFx1YzQ1NVx1YzQ1Nlx1YzQ1N1x1YzQ1OFx1YzQ1OVx1YzQ1YVx1YzQ1Ylx1''@;'; put 'put ''YzQ1Y1x1YzQ1ZFx1YzQ1ZVx1YzQ1Zlx1YzQ2MFx1YzQ2MVx1YzQ2Mlx1YzQ2M1x1YzQ2Nlx1YzQ2N1x1YzQ2OVx1YzQ2YVx1YzQ2Ylx1YzQ2ZFx1YzQ2ZVx1YzQ2Zlx1YzQ3MFx1YzQ3MVx1YzQ3Mlx1YzQ3M1x1YzQ3Nlx1YzQ3N1x1YzQ3OFx1YzQ3YVx1YzQ3Ylx1YzQ3Y1x1YzQ3ZFx1YzQ3''@;'; put 'put ''ZVx1YzQ3Zlx1YzQ4MVx1YzQ4Mlx1YzQ4M1x1YzQ4NFx1YzQ4NVx1YzQ4Nlx1YzQ4N1x1YzQ4OFx1YzQ4OVx1YzQ4YVx1YzQ4Ylx1YzQ4Y1x1YzQ4ZFx1YzQ4ZVx1YzQ4Zlx1YzQ5MFx1YzQ5MVx1YzQ5Mlx1YzQ5M1x1YzQ5NVx1YzQ5Nlx1YzQ5N1x1YzQ5OFx1YzQ5OVx1YzQ5YVx1YzQ5Ylx1''@;'; put 'put ''YzQ5ZFx1YzQ5ZVx1YzQ5Zlx1YzRhMFx1YzRhMVx1YzRhMlx1YzRhM1x1YzRhNFx1YzRhNVx1YzRhNlx1YzRhN1x1YzRhOFx1YzRhOVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTU2XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNTZdW0Vd''@;'; put 'put ''XT0zOTkzNitFLExbMzk5MzYrRV09QlsxNTZdW0VdKTtmb3IoQlsxNTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM0YWFcdWM0YWJcdWM0YWNcdWM0YWRcdWM0YWVcdWM0YWZcdWM0YjBcdWM0YjFcdWM0YjJcdWM0YjNc''@;'; put 'put ''dWM0YjRcdWM0YjVcdWM0YjZcdWM0YjdcdWM0YjlcdWM0YmFcdWM0YmJcdWM0YmRcdWM0YmVcdWM0YmZcdWM0YzBcdWM0YzFcdWM0YzJcdWM0YzNcdWM0YzRcdWM0YzVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM0YzZcdWM0YzdcdWM0YzhcdWM0YzlcdWM0Y2FcdWM0''@;'; put 'put ''Y2JcdWM0Y2NcdWM0Y2RcdWM0Y2VcdWM0Y2ZcdWM0ZDBcdWM0ZDFcdWM0ZDJcdWM0ZDNcdWM0ZDRcdWM0ZDVcdWM0ZDZcdWM0ZDdcdWM0ZDhcdWM0ZDlcdWM0ZGFcdWM0ZGJcdWM0ZGNcdWM0ZGRcdWM0ZGVcdWM0ZGZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM0ZTBc''@;'; put 'put ''dWM0ZTFcdWM0ZTJcdWM0ZTNcdWM0ZTRcdWM0ZTVcdWM0ZTZcdWM0ZTdcdWM0ZThcdWM0ZWFcdWM0ZWJcdWM0ZWNcdWM0ZWRcdWM0ZWVcdWM0ZWZcdWM0ZjJcdWM0ZjNcdWM0ZjVcdWM0ZjZcdWM0ZjdcdWM0ZjlcdWM0ZmJcdWM0ZmNcdWM0ZmRcdWM0ZmVcdWM1MDJcdWM1MDNcdWM1MDRcdWM1''@;'; put 'put ''MDVcdWM1MDZcdWM1MDdcdWM1MDhcdWM1MDlcdWM1MGFcdWM1MGJcdWM1MGRcdWM1MGVcdWM1MGZcdWM1MTFcdWM1MTJcdWM1MTNcdWM1MTVcdWM1MTZcdWM1MTdcdWM1MThcdWM1MTlcdWM1MWFcdWM1MWJcdWM1MWRcdWM1MWVcdWM1MWZcdWM1MjBcdWM1MjFcdWM1MjJcdWM1MjNcdWM1MjRc''@;'; put 'put ''dWM1MjVcdWM1MjZcdWM1MjdcdWM1MmFcdWM1MmJcdWM1MmRcdWM1MmVcdWM1MmZcdWM1MzFcdWM1MzJcdWM1MzNcdWM1MzRcdWM1MzVcdWM1MzZcdWM1MzdcdWM1M2FcdWM1M2NcdWM1M2VcdWM1M2ZcdWM1NDBcdWM1NDFcdWM1NDJcdWM1NDNcdWM1NDZcdWM1NDdcdWM1NGJcdWM1NGZcdWM1''@;'; put 'put ''NTBcdWM1NTFcdWM1NTJcdWM1NTZcdWM1NWFcdWM1NWJcdWM1NWNcdWM1NWZcdWM1NjJcdWM1NjNcdWM1NjVcdWM1NjZcdWM1NjdcdWM1NjlcdWM1NmFcdWM1NmJcdWM1NmNcdWM1NmRcdWM1NmVcdWM1NmZcdWM1NzJcdWM1NzZcdWM1NzdcdWM1NzhcdWM1NzlcdWM1N2FcdWM1N2JcdWM1N2Vc''@;'; put 'put ''dWM1N2ZcdWM1ODFcdWM1ODJcdWM1ODNcdWM1ODVcdWM1ODZcdWM1ODhcdWM1ODlcdWM1OGFcdWM1OGJcdWM1OGVcdWM1OTBcdWM1OTJcdWM1OTNcdWM1OTRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNTddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE1N11bRV0uY2hhckNvZGVBdCgwKSYm''@;'; put 'put ''KG1lW0JbMTU3XVtFXV09NDAxOTIrRSxMWzQwMTkyK0VdPUJbMTU3XVtFXSk7Zm9yKEJbMTU4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjNTk2XHVjNTk5XHVjNTlhXHVjNTliXHVjNTlkXHVjNTllXHVjNTlmXHVjNWEx''@;'; put 'put ''XHVjNWEyXHVjNWEzXHVjNWE0XHVjNWE1XHVjNWE2XHVjNWE3XHVjNWE4XHVjNWFhXHVjNWFiXHVjNWFjXHVjNWFkXHVjNWFlXHVjNWFmXHVjNWIwXHVjNWIxXHVjNWIyXHVjNWIzXHVjNWI2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjNWI3XHVjNWJhXHVjNWJmXHVj''@;'; put 'put ''NWMwXHVjNWMxXHVjNWMyXHVjNWMzXHVjNWNiXHVjNWNkXHVjNWNmXHVjNWQyXHVjNWQzXHVjNWQ1XHVjNWQ2XHVjNWQ3XHVjNWQ5XHVjNWRhXHVjNWRiXHVjNWRjXHVjNWRkXHVjNWRlXHVjNWRmXHVjNWUyXHVjNWU0XHVjNWU2XHVjNWU3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVjNWU4XHVjNWU5XHVjNWVhXHVjNWViXHVjNWVmXHVjNWYxXHVjNWYyXHVjNWYzXHVjNWY1XHVjNWY4XHVjNWY5XHVjNWZhXHVjNWZiXHVjNjAyXHVjNjAzXHVjNjA0XHVjNjA5XHVjNjBhXHVjNjBiXHVjNjBkXHVjNjBlXHVjNjBmXHVjNjExXHVjNjEyXHVjNjEzXHVjNjE0XHVj''@;'; put 'put ''NjE1XHVjNjE2XHVjNjE3XHVjNjFhXHVjNjFkXHVjNjFlXHVjNjFmXHVjNjIwXHVjNjIxXHVjNjIyXHVjNjIzXHVjNjI2XHVjNjI3XHVjNjI5XHVjNjJhXHVjNjJiXHVjNjJmXHVjNjMxXHVjNjMyXHVjNjM2XHVjNjM4XHVjNjNhXHVjNjNjXHVjNjNkXHVjNjNlXHVjNjNmXHVjNjQyXHVjNjQz''@;'; put 'put ''XHVjNjQ1XHVjNjQ2XHVjNjQ3XHVjNjQ5XHVjNjRhXHVjNjRiXHVjNjRjXHVjNjRkXHVjNjRlXHVjNjRmXHVjNjUyXHVjNjU2XHVjNjU3XHVjNjU4XHVjNjU5XHVjNjVhXHVjNjViXHVjNjVlXHVjNjVmXHVjNjYxXHVjNjYyXHVjNjYzXHVjNjY0XHVjNjY1XHVjNjY2XHVjNjY3XHVjNjY4XHVj''@;'; put 'put ''NjY5XHVjNjZhXHVjNjZiXHVjNjZkXHVjNjZlXHVjNjcwXHVjNjcyXHVjNjczXHVjNjc0XHVjNjc1XHVjNjc2XHVjNjc3XHVjNjdhXHVjNjdiXHVjNjdkXHVjNjdlXHVjNjdmXHVjNjgxXHVjNjgyXHVjNjgzXHVjNjg0XHVjNjg1XHVjNjg2XHVjNjg3XHVjNjhhXHVjNjhjXHVjNjhlXHVjNjhm''@;'; put 'put ''XHVjNjkwXHVjNjkxXHVjNjkyXHVjNjkzXHVjNjk2XHVjNjk3XHVjNjk5XHVjNjlhXHVjNjliXHVjNjlkXHVjNjllXHVjNjlmXHVjNmEwXHVjNmExXHVjNmEyXHVjNmEzXHVjNmE2XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTU4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNThdW0VdLmNo''@;'; put 'put ''YXJDb2RlQXQoMCkmJihtZVtCWzE1OF1bRV1dPTQwNDQ4K0UsTFs0MDQ0OCtFXT1CWzE1OF1bRV0pO2ZvcihCWzE1OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzZhOFx1YzZhYVx1YzZhYlx1YzZhY1x1YzZhZFx1YzZh''@;'; put 'put ''ZVx1YzZhZlx1YzZiMlx1YzZiM1x1YzZiNVx1YzZiNlx1YzZiN1x1YzZiYlx1YzZiY1x1YzZiZFx1YzZiZVx1YzZiZlx1YzZjMlx1YzZjNFx1YzZjNlx1YzZjN1x1YzZjOFx1YzZjOVx1YzZjYVx1YzZjYlx1YzZjZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzZjZlx1''@;'; put 'put ''YzZkMVx1YzZkMlx1YzZkM1x1YzZkNVx1YzZkNlx1YzZkN1x1YzZkOFx1YzZkOVx1YzZkYVx1YzZkYlx1YzZkZVx1YzZkZlx1YzZlMlx1YzZlM1x1YzZlNFx1YzZlNVx1YzZlNlx1YzZlN1x1YzZlYVx1YzZlYlx1YzZlZFx1YzZlZVx1YzZlZlx1YzZmMVx1YzZmMlx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzZmM1x1YzZmNFx1YzZmNVx1YzZmNlx1YzZmN1x1YzZmYVx1YzZmYlx1YzZmY1x1YzZmZVx1YzZmZlx1YzcwMFx1YzcwMVx1YzcwMlx1YzcwM1x1YzcwNlx1YzcwN1x1YzcwOVx1YzcwYVx1YzcwYlx1YzcwZFx1YzcwZVx1YzcwZlx1YzcxMFx1YzcxMVx1''@;'; put 'put ''YzcxMlx1YzcxM1x1YzcxNlx1YzcxOFx1YzcxYVx1YzcxYlx1YzcxY1x1YzcxZFx1YzcxZVx1YzcxZlx1YzcyMlx1YzcyM1x1YzcyNVx1YzcyNlx1YzcyN1x1YzcyOVx1YzcyYVx1YzcyYlx1YzcyY1x1YzcyZFx1YzcyZVx1YzcyZlx1YzczMlx1YzczNFx1YzczNlx1YzczOFx1YzczOVx1Yzcz''@;'; put 'put ''YVx1YzczYlx1YzczZVx1YzczZlx1Yzc0MVx1Yzc0Mlx1Yzc0M1x1Yzc0NVx1Yzc0Nlx1Yzc0N1x1Yzc0OFx1Yzc0OVx1Yzc0Ylx1Yzc0ZVx1Yzc1MFx1Yzc1OVx1Yzc1YVx1Yzc1Ylx1Yzc1ZFx1Yzc1ZVx1Yzc1Zlx1Yzc2MVx1Yzc2Mlx1Yzc2M1x1Yzc2NFx1Yzc2NVx1Yzc2Nlx1Yzc2N1x1''@;'; put 'put ''Yzc2OVx1Yzc2YVx1Yzc2Y1x1Yzc2ZFx1Yzc2ZVx1Yzc2Zlx1Yzc3MFx1Yzc3MVx1Yzc3Mlx1Yzc3M1x1Yzc3Nlx1Yzc3N1x1Yzc3OVx1Yzc3YVx1Yzc3Ylx1Yzc3Zlx1Yzc4MFx1Yzc4MVx1Yzc4Mlx1Yzc4Nlx1Yzc4Ylx1Yzc4Y1x1Yzc4ZFx1Yzc4Zlx1Yzc5Mlx1Yzc5M1x1Yzc5NVx1Yzc5''@;'; put 'put ''OVx1Yzc5Ylx1Yzc5Y1x1Yzc5ZFx1Yzc5ZVx1Yzc5Zlx1YzdhMlx1YzdhN1x1YzdhOFx1YzdhOVx1YzdhYVx1YzdhYlx1YzdhZVx1YzdhZlx1YzdiMVx1YzdiMlx1YzdiM1x1YzdiNVx1YzdiNlx1YzdiN1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE1OV0ubGVuZ3RoOysrRSk2NTUzMyE9''@;'; put 'put ''PUJbMTU5XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNTldW0VdXT00MDcwNCtFLExbNDA3MDQrRV09QlsxNTldW0VdKTtmb3IoQlsxNjBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM3YjhcdWM3YjlcdWM3YmFcdWM3''@;'; put 'put ''YmJcdWM3YmVcdWM3YzJcdWM3YzNcdWM3YzRcdWM3YzVcdWM3YzZcdWM3YzdcdWM3Y2FcdWM3Y2JcdWM3Y2RcdWM3Y2ZcdWM3ZDFcdWM3ZDJcdWM3ZDNcdWM3ZDRcdWM3ZDVcdWM3ZDZcdWM3ZDdcdWM3ZDlcdWM3ZGFcdWM3ZGJcdWM3ZGNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWM3ZGVcdWM3ZGZcdWM3ZTBcdWM3ZTFcdWM3ZTJcdWM3ZTNcdWM3ZTVcdWM3ZTZcdWM3ZTdcdWM3ZTlcdWM3ZWFcdWM3ZWJcdWM3ZWRcdWM3ZWVcdWM3ZWZcdWM3ZjBcdWM3ZjFcdWM3ZjJcdWM3ZjNcdWM3ZjRcdWM3ZjVcdWM3ZjZcdWM3ZjdcdWM3ZjhcdWM3ZjlcdWM3ZmFcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM3ZmJcdWM3ZmNcdWM3ZmRcdWM3ZmVcdWM3ZmZcdWM4MDJcdWM4MDNcdWM4MDVcdWM4MDZcdWM4MDdcdWM4MDlcdWM4MGJcdWM4MGNcdWM4MGRcdWM4MGVcdWM4MGZcdWM4MTJcdWM4MTRcdWM4MTdcdWM4MThcdWM4MTlcdWM4MWFc''@;'; put 'put ''dWM4MWJcdWM4MWVcdWM4MWZcdWM4MjFcdWM4MjJcdWM4MjNcdWM4MjVcdWM4MjZcdWM4MjdcdWM4MjhcdWM4MjlcdWM4MmFcdWM4MmJcdWM4MmVcdWM4MzBcdWM4MzJcdWM4MzNcdWM4MzRcdWM4MzVcdWM4MzZcdWM4MzdcdWM4MzlcdWM4M2FcdWM4M2JcdWM4M2RcdWM4M2VcdWM4M2ZcdWM4''@;'; put 'put ''NDFcdWM4NDJcdWM4NDNcdWM4NDRcdWM4NDVcdWM4NDZcdWM4NDdcdWM4NGFcdWM4NGJcdWM4NGVcdWM4NGZcdWM4NTBcdWM4NTFcdWM4NTJcdWM4NTNcdWM4NTVcdWM4NTZcdWM4NTdcdWM4NThcdWM4NTlcdWM4NWFcdWM4NWJcdWM4NWNcdWM4NWRcdWM4NWVcdWM4NWZcdWM4NjBcdWM4NjFc''@;'; put 'put ''dWM4NjJcdWM4NjNcdWM4NjRcdWM4NjVcdWM4NjZcdWM4NjdcdWM4NjhcdWM4NjlcdWM4NmFcdWM4NmJcdWM4NmNcdWM4NmRcdWM4NmVcdWM4NmZcdWM4NzJcdWM4NzNcdWM4NzVcdWM4NzZcdWM4NzdcdWM4NzlcdWM4N2JcdWM4N2NcdWM4N2RcdWM4N2VcdWM4N2ZcdWM4ODJcdWM4ODRcdWM4''@;'; put 'put ''ODhcdWM4ODlcdWM4OGFcdWM4OGVcdWM4OGZcdWM4OTBcdWM4OTFcdWM4OTJcdWM4OTNcdWM4OTVcdWM4OTZcdWM4OTdcdWM4OThcdWM4OTlcdWM4OWFcdWM4OWJcdWM4OWNcdWM4OWVcdWM4YTBcdWM4YTJcdWM4YTNcdWM4YTRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjBdLmxlbmd0''@;'; put 'put ''aDsrK0UpNjU1MzMhPT1CWzE2MF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTYwXVtFXV09NDA5NjArRSxMWzQwOTYwK0VdPUJbMTYwXVtFXSk7Zm9yKEJbMTYxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOGE1XHVj''@;'; put 'put ''OGE2XHVjOGE3XHVjOGE5XHVjOGFhXHVjOGFiXHVjOGFjXHVjOGFkXHVjOGFlXHVjOGFmXHVjOGIwXHVjOGIxXHVjOGIyXHVjOGIzXHVjOGI0XHVjOGI1XHVjOGI2XHVjOGI3XHVjOGI4XHVjOGI5XHVjOGJhXHVjOGJiXHVjOGJlXHVjOGJmXHVjOGMwXHVjOGMxXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVjOGMyXHVjOGMzXHVjOGM1XHVjOGM2XHVjOGM3XHVjOGM5XHVjOGNhXHVjOGNiXHVjOGNkXHVjOGNlXHVjOGNmXHVjOGQwXHVjOGQxXHVjOGQyXHVjOGQzXHVjOGQ2XHVjOGQ4XHVjOGRhXHVjOGRiXHVjOGRjXHVjOGRkXHVjOGRlXHVjOGRmXHVjOGUyXHVj''@;'; put 'put ''OGUzXHVjOGU1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOGU2XHVjOGU3XHVjOGU4XHVjOGU5XHVjOGVhXHVjOGViXHVjOGVjXHVjOGVkXHVjOGVlXHVjOGVmXHVjOGYwXHVjOGYxXHVjOGYyXHVjOGYzXHVjOGY0XHVjOGY2XHVjOGY3XHVjOGY4XHVjOGY5XHVjOGZh''@;'; put 'put ''XHVjOGZiXHVjOGZlXHVjOGZmXHVjOTAxXHVjOTAyXHVjOTAzXHVjOTA3XHVjOTA4XHVjOTA5XHVjOTBhXHVjOTBiXHVjOTBlXHUzMDAwXHUzMDAxXHUzMDAyXHhiN1x1MjAyNVx1MjAyNlx4YThcdTMwMDNceGFkXHUyMDE1XHUyMjI1XHVmZjNjXHUyMjNjXHUyMDE4XHUyMDE5XHUyMDFjXHUy''@;'; put 'put ''MDFkXHUzMDE0XHUzMDE1XHUzMDA4XHUzMDA5XHUzMDBhXHUzMDBiXHUzMDBjXHUzMDBkXHUzMDBlXHUzMDBmXHUzMDEwXHUzMDExXHhiMVx4ZDdceGY3XHUyMjYwXHUyMjY0XHUyMjY1XHUyMjFlXHUyMjM0XHhiMFx1MjAzMlx1MjAzM1x1MjEwM1x1MjEyYlx1ZmZlMFx1ZmZlMVx1ZmZlNVx1''@;'; put 'put ''MjY0Mlx1MjY0MFx1MjIyMFx1MjJhNVx1MjMxMlx1MjIwMlx1MjIwN1x1MjI2MVx1MjI1Mlx4YTdcdTIwM2JcdTI2MDZcdTI2MDVcdTI1Y2JcdTI1Y2ZcdTI1Y2VcdTI1YzdcdTI1YzZcdTI1YTFcdTI1YTBcdTI1YjNcdTI1YjJcdTI1YmRcdTI1YmNcdTIxOTJcdTIxOTBcdTIxOTFcdTIxOTNc''@;'; put 'put ''dTIxOTRcdTMwMTNcdTIyNmFcdTIyNmJcdTIyMWFcdTIyM2RcdTIyMWRcdTIyMzVcdTIyMmJcdTIyMmNcdTIyMDhcdTIyMGJcdTIyODZcdTIyODdcdTIyODJcdTIyODNcdTIyMmFcdTIyMjlcdTIyMjdcdTIyMjhcdWZmZTJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjFdLmxlbmd0aDsr''@;'; put 'put ''K0UpNjU1MzMhPT1CWzE2MV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTYxXVtFXV09NDEyMTYrRSxMWzQxMjE2K0VdPUJbMTYxXVtFXSk7Zm9yKEJbMTYyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOTEwXHVjOTEy''@;'; put 'put ''XHVjOTEzXHVjOTE0XHVjOTE1XHVjOTE2XHVjOTE3XHVjOTE5XHVjOTFhXHVjOTFiXHVjOTFjXHVjOTFkXHVjOTFlXHVjOTFmXHVjOTIwXHVjOTIxXHVjOTIyXHVjOTIzXHVjOTI0XHVjOTI1XHVjOTI2XHVjOTI3XHVjOTI4XHVjOTI5XHVjOTJhXHVjOTJiXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVjOTJkXHVjOTJlXHVjOTJmXHVjOTMwXHVjOTMxXHVjOTMyXHVjOTMzXHVjOTM1XHVjOTM2XHVjOTM3XHVjOTM4XHVjOTM5XHVjOTNhXHVjOTNiXHVjOTNjXHVjOTNkXHVjOTNlXHVjOTNmXHVjOTQwXHVjOTQxXHVjOTQyXHVjOTQzXHVjOTQ0XHVjOTQ1XHVjOTQ2''@;'; put 'put ''XHVjOTQ3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOTQ4XHVjOTQ5XHVjOTRhXHVjOTRiXHVjOTRjXHVjOTRkXHVjOTRlXHVjOTRmXHVjOTUyXHVjOTUzXHVjOTU1XHVjOTU2XHVjOTU3XHVjOTU5XHVjOTVhXHVjOTViXHVjOTVjXHVjOTVkXHVjOTVlXHVjOTVmXHVj''@;'; put 'put ''OTYyXHVjOTY0XHVjOTY1XHVjOTY2XHVjOTY3XHVjOTY4XHVjOTY5XHVjOTZhXHVjOTZiXHVjOTZkXHVjOTZlXHVjOTZmXHUyMWQyXHUyMWQ0XHUyMjAwXHUyMjAzXHhiNFx1ZmY1ZVx1MDJjN1x1MDJkOFx1MDJkZFx1MDJkYVx1MDJkOVx4YjhcdTAyZGJceGExXHhiZlx1MDJkMFx1MjIyZVx1''@;'; put 'put ''MjIxMVx1MjIwZlx4YTRcdTIxMDlcdTIwMzBcdTI1YzFcdTI1YzBcdTI1YjdcdTI1YjZcdTI2NjRcdTI2NjBcdTI2NjFcdTI2NjVcdTI2NjdcdTI2NjNcdTIyOTlcdTI1YzhcdTI1YTNcdTI1ZDBcdTI1ZDFcdTI1OTJcdTI1YTRcdTI1YTVcdTI1YThcdTI1YTdcdTI1YTZcdTI1YTlcdTI2Njhc''@;'; put 'put ''dTI2MGZcdTI2MGVcdTI2MWNcdTI2MWVceGI2XHUyMDIwXHUyMDIxXHUyMTk1XHUyMTk3XHUyMTk5XHUyMTk2XHUyMTk4XHUyNjZkXHUyNjY5XHUyNjZhXHUyNjZjXHUzMjdmXHUzMjFjXHUyMTE2XHUzM2M3XHUyMTIyXHUzM2MyXHUzM2Q4XHUyMTIxXHUyMGFjXHhhZVx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2Ml0ubGVuZ3RoOysr''@;'; put 'put ''RSk2NTUzMyE9PUJbMTYyXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNjJdW0VdXT00MTQ3MitFLExbNDE0NzIrRV09QlsxNjJdW0VdKTtmb3IoQlsxNjNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM5NzFcdWM5NzJc''@;'; put 'put ''dWM5NzNcdWM5NzVcdWM5NzZcdWM5NzdcdWM5NzhcdWM5NzlcdWM5N2FcdWM5N2JcdWM5N2RcdWM5N2VcdWM5N2ZcdWM5ODBcdWM5ODFcdWM5ODJcdWM5ODNcdWM5ODRcdWM5ODVcdWM5ODZcdWM5ODdcdWM5OGFcdWM5OGJcdWM5OGRcdWM5OGVcdWM5OGZcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWM5OTFcdWM5OTJcdWM5OTNcdWM5OTRcdWM5OTVcdWM5OTZcdWM5OTdcdWM5OWFcdWM5OWNcdWM5OWVcdWM5OWZcdWM5YTBcdWM5YTFcdWM5YTJcdWM5YTNcdWM5YTRcdWM5YTVcdWM5YTZcdWM5YTdcdWM5YThcdWM5YTlcdWM5YWFcdWM5YWJcdWM5YWNcdWM5YWRc''@;'; put 'put ''dWM5YWVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM5YWZcdWM5YjBcdWM5YjFcdWM5YjJcdWM5YjNcdWM5YjRcdWM5YjVcdWM5YjZcdWM5YjdcdWM5YjhcdWM5YjlcdWM5YmFcdWM5YmJcdWM5YmNcdWM5YmRcdWM5YmVcdWM5YmZcdWM5YzJcdWM5YzNcdWM5YzVcdWM5''@;'; put 'put ''YzZcdWM5YzlcdWM5Y2JcdWM5Y2NcdWM5Y2RcdWM5Y2VcdWM5Y2ZcdWM5ZDJcdWM5ZDRcdWM5ZDdcdWM5ZDhcdWM5ZGJcdWZmMDFcdWZmMDJcdWZmMDNcdWZmMDRcdWZmMDVcdWZmMDZcdWZmMDdcdWZmMDhcdWZmMDlcdWZmMGFcdWZmMGJcdWZmMGNcdWZmMGRcdWZmMGVcdWZmMGZcdWZmMTBc''@;'; put 'put ''dWZmMTFcdWZmMTJcdWZmMTNcdWZmMTRcdWZmMTVcdWZmMTZcdWZmMTdcdWZmMThcdWZmMTlcdWZmMWFcdWZmMWJcdWZmMWNcdWZmMWRcdWZmMWVcdWZmMWZcdWZmMjBcdWZmMjFcdWZmMjJcdWZmMjNcdWZmMjRcdWZmMjVcdWZmMjZcdWZmMjdcdWZmMjhcdWZmMjlcdWZmMmFcdWZmMmJcdWZm''@;'; put 'put ''MmNcdWZmMmRcdWZmMmVcdWZmMmZcdWZmMzBcdWZmMzFcdWZmMzJcdWZmMzNcdWZmMzRcdWZmMzVcdWZmMzZcdWZmMzdcdWZmMzhcdWZmMzlcdWZmM2FcdWZmM2JcdWZmZTZcdWZmM2RcdWZmM2VcdWZmM2ZcdWZmNDBcdWZmNDFcdWZmNDJcdWZmNDNcdWZmNDRcdWZmNDVcdWZmNDZcdWZmNDdc''@;'; put 'put ''dWZmNDhcdWZmNDlcdWZmNGFcdWZmNGJcdWZmNGNcdWZmNGRcdWZmNGVcdWZmNGZcdWZmNTBcdWZmNTFcdWZmNTJcdWZmNTNcdWZmNTRcdWZmNTVcdWZmNTZcdWZmNTdcdWZmNThcdWZmNTlcdWZmNWFcdWZmNWJcdWZmNWNcdWZmNWRcdWZmZTNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9Qlsx''@;'; put 'put ''NjNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2M11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTYzXVtFXV09NDE3MjgrRSxMWzQxNzI4K0VdPUJbMTYzXVtFXSk7Zm9yKEJbMTY0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVjOWRlXHVjOWRmXHVjOWUxXHVjOWUzXHVjOWU1XHVjOWU2XHVjOWU4XHVjOWU5XHVjOWVhXHVjOWViXHVjOWVlXHVjOWYyXHVjOWYzXHVjOWY0XHVjOWY1XHVjOWY2XHVjOWY3XHVjOWZhXHVjOWZiXHVjOWZkXHVjOWZlXHVjOWZmXHVjYTAxXHVjYTAyXHVjYTAzXHVjYTA0XHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYTA1XHVjYTA2XHVjYTA3XHVjYTBhXHVjYTBlXHVjYTBmXHVjYTEwXHVjYTExXHVjYTEyXHVjYTEzXHVjYTE1XHVjYTE2XHVjYTE3XHVjYTE5XHVjYTFhXHVjYTFiXHVjYTFjXHVjYTFkXHVjYTFlXHVjYTFmXHVjYTIwXHVjYTIxXHVjYTIy''@;'; put 'put ''XHVjYTIzXHVjYTI0XHVjYTI1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYTI2XHVjYTI3XHVjYTI4XHVjYTJhXHVjYTJiXHVjYTJjXHVjYTJkXHVjYTJlXHVjYTJmXHVjYTMwXHVjYTMxXHVjYTMyXHVjYTMzXHVjYTM0XHVjYTM1XHVjYTM2XHVjYTM3XHVjYTM4XHVj''@;'; put 'put ''YTM5XHVjYTNhXHVjYTNiXHVjYTNjXHVjYTNkXHVjYTNlXHVjYTNmXHVjYTQwXHVjYTQxXHVjYTQyXHVjYTQzXHVjYTQ0XHVjYTQ1XHVjYTQ2XHUzMTMxXHUzMTMyXHUzMTMzXHUzMTM0XHUzMTM1XHUzMTM2XHUzMTM3XHUzMTM4XHUzMTM5XHUzMTNhXHUzMTNiXHUzMTNjXHUzMTNkXHUzMTNl''@;'; put 'put ''XHUzMTNmXHUzMTQwXHUzMTQxXHUzMTQyXHUzMTQzXHUzMTQ0XHUzMTQ1XHUzMTQ2XHUzMTQ3XHUzMTQ4XHUzMTQ5XHUzMTRhXHUzMTRiXHUzMTRjXHUzMTRkXHUzMTRlXHUzMTRmXHUzMTUwXHUzMTUxXHUzMTUyXHUzMTUzXHUzMTU0XHUzMTU1XHUzMTU2XHUzMTU3XHUzMTU4XHUzMTU5XHUz''@;'; put 'put ''MTVhXHUzMTViXHUzMTVjXHUzMTVkXHUzMTVlXHUzMTVmXHUzMTYwXHUzMTYxXHUzMTYyXHUzMTYzXHUzMTY0XHUzMTY1XHUzMTY2XHUzMTY3XHUzMTY4XHUzMTY5XHUzMTZhXHUzMTZiXHUzMTZjXHUzMTZkXHUzMTZlXHUzMTZmXHUzMTcwXHUzMTcxXHUzMTcyXHUzMTczXHUzMTc0XHUzMTc1''@;'; put 'put ''XHUzMTc2XHUzMTc3XHUzMTc4XHUzMTc5XHUzMTdhXHUzMTdiXHUzMTdjXHUzMTdkXHUzMTdlXHUzMTdmXHUzMTgwXHUzMTgxXHUzMTgyXHUzMTgzXHUzMTg0XHUzMTg1XHUzMTg2XHUzMTg3XHUzMTg4XHUzMTg5XHUzMThhXHUzMThiXHUzMThjXHUzMThkXHUzMThlXHVmZmZkIi5zcGxpdCgi''@;'; put 'put ''IiksRT0wO0UhPUJbMTY0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjRdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE2NF1bRV1dPTQxOTg0K0UsTFs0MTk4NCtFXT1CWzE2NF1bRV0pO2ZvcihCWzE2NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1Y2E0N1x1Y2E0OFx1Y2E0OVx1Y2E0YVx1Y2E0Ylx1Y2E0ZVx1Y2E0Zlx1Y2E1MVx1Y2E1Mlx1Y2E1M1x1Y2E1NVx1Y2E1Nlx1Y2E1N1x1Y2E1OFx1Y2E1OVx1Y2E1YVx1Y2E1Ylx1Y2E1ZVx1Y2E2Mlx1Y2E2M1x1Y2E2NFx1Y2E2NVx1Y2E2Nlx1Y2E2N1x1Y2E2OVx1''@;'; put 'put ''Y2E2YVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2E2Ylx1Y2E2Y1x1Y2E2ZFx1Y2E2ZVx1Y2E2Zlx1Y2E3MFx1Y2E3MVx1Y2E3Mlx1Y2E3M1x1Y2E3NFx1Y2E3NVx1Y2E3Nlx1Y2E3N1x1Y2E3OFx1Y2E3OVx1Y2E3YVx1Y2E3Ylx1Y2E3Y1x1Y2E3ZVx1Y2E3Zlx1Y2E4''@;'; put 'put ''MFx1Y2E4MVx1Y2E4Mlx1Y2E4M1x1Y2E4NVx1Y2E4Nlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2E4N1x1Y2E4OFx1Y2E4OVx1Y2E4YVx1Y2E4Ylx1Y2E4Y1x1Y2E4ZFx1Y2E4ZVx1Y2E4Zlx1Y2E5MFx1Y2E5MVx1Y2E5Mlx1Y2E5M1x1Y2E5NFx1Y2E5NVx1Y2E5Nlx1''@;'; put 'put ''Y2E5N1x1Y2E5OVx1Y2E5YVx1Y2E5Ylx1Y2E5Y1x1Y2E5ZFx1Y2E5ZVx1Y2E5Zlx1Y2FhMFx1Y2FhMVx1Y2FhMlx1Y2FhM1x1Y2FhNFx1Y2FhNVx1Y2FhNlx1Y2FhN1x1MjE3MFx1MjE3MVx1MjE3Mlx1MjE3M1x1MjE3NFx1MjE3NVx1MjE3Nlx1MjE3N1x1MjE3OFx1MjE3OVx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjE2MFx1MjE2MVx1MjE2Mlx1MjE2M1x1MjE2NFx1MjE2NVx1MjE2Nlx1MjE2N1x1MjE2OFx1MjE2OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x1''@;'; put 'put ''MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1MDNhM1x1MDNhNFx1MDNhNVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDNiMVx1MDNiMlx1MDNi''@;'; put 'put ''M1x1MDNiNFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1MDNjMVx1MDNjM1x1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MDNjOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2NV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTY1XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNjVdW0VdXT00MjI0MCtFLExbNDIyNDArRV09QlsxNjVdW0VdKTtmb3IoQlsxNjZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNhYThcdWNhYTlcdWNhYWFcdWNhYWJcdWNhYWNcdWNhYWRcdWNhYWVcdWNhYWZcdWNhYjBcdWNhYjFcdWNhYjJcdWNhYjNcdWNhYjRcdWNhYjVcdWNhYjZcdWNhYjdcdWNhYjhcdWNhYjlcdWNhYmFcdWNhYmJcdWNhYmVcdWNhYmZcdWNhYzFc''@;'; put 'put ''dWNhYzJcdWNhYzNcdWNhYzVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNhYzZcdWNhYzdcdWNhYzhcdWNhYzlcdWNhY2FcdWNhY2JcdWNhY2VcdWNhZDBcdWNhZDJcdWNhZDRcdWNhZDVcdWNhZDZcdWNhZDdcdWNhZGFcdWNhZGJcdWNhZGNcdWNhZGRcdWNhZGVcdWNh''@;'; put 'put ''ZGZcdWNhZTFcdWNhZTJcdWNhZTNcdWNhZTRcdWNhZTVcdWNhZTZcdWNhZTdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNhZThcdWNhZTlcdWNhZWFcdWNhZWJcdWNhZWRcdWNhZWVcdWNhZWZcdWNhZjBcdWNhZjFcdWNhZjJcdWNhZjNcdWNhZjVcdWNhZjZcdWNhZjdc''@;'; put 'put ''dWNhZjhcdWNhZjlcdWNhZmFcdWNhZmJcdWNhZmNcdWNhZmRcdWNhZmVcdWNhZmZcdWNiMDBcdWNiMDFcdWNiMDJcdWNiMDNcdWNiMDRcdWNiMDVcdWNiMDZcdWNiMDdcdWNiMDlcdWNiMGFcdTI1MDBcdTI1MDJcdTI1MGNcdTI1MTBcdTI1MThcdTI1MTRcdTI1MWNcdTI1MmNcdTI1MjRcdTI1''@;'; put 'put ''MzRcdTI1M2NcdTI1MDFcdTI1MDNcdTI1MGZcdTI1MTNcdTI1MWJcdTI1MTdcdTI1MjNcdTI1MzNcdTI1MmJcdTI1M2JcdTI1NGJcdTI1MjBcdTI1MmZcdTI1MjhcdTI1MzdcdTI1M2ZcdTI1MWRcdTI1MzBcdTI1MjVcdTI1MzhcdTI1NDJcdTI1MTJcdTI1MTFcdTI1MWFcdTI1MTlcdTI1MTZc''@;'; put 'put ''dTI1MTVcdTI1MGVcdTI1MGRcdTI1MWVcdTI1MWZcdTI1MjFcdTI1MjJcdTI1MjZcdTI1MjdcdTI1MjlcdTI1MmFcdTI1MmRcdTI1MmVcdTI1MzFcdTI1MzJcdTI1MzVcdTI1MzZcdTI1MzlcdTI1M2FcdTI1M2RcdTI1M2VcdTI1NDBcdTI1NDFcdTI1NDNcdTI1NDRcdTI1NDVcdTI1NDZcdTI1''@;'; put 'put ''NDdcdTI1NDhcdTI1NDlcdTI1NGFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2Nl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTY2XVtFXV09NDI0OTYrRSxMWzQyNDk2K0VdPUJbMTY2XVtFXSk7Zm9yKEJbMTY3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYjBiXHVjYjBjXHVjYjBkXHVjYjBlXHVjYjBmXHVjYjExXHVjYjEyXHVjYjEzXHVjYjE1XHVjYjE2XHVjYjE3XHVjYjE5XHVjYjFhXHVjYjFiXHVjYjFjXHVjYjFkXHVjYjFlXHVjYjFmXHVjYjIyXHVjYjIzXHVjYjI0''@;'; put 'put ''XHVjYjI1XHVjYjI2XHVjYjI3XHVjYjI4XHVjYjI5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYjJhXHVjYjJiXHVjYjJjXHVjYjJkXHVjYjJlXHVjYjJmXHVjYjMwXHVjYjMxXHVjYjMyXHVjYjMzXHVjYjM0XHVjYjM1XHVjYjM2XHVjYjM3XHVjYjM4XHVjYjM5XHVj''@;'; put 'put ''YjNhXHVjYjNiXHVjYjNjXHVjYjNkXHVjYjNlXHVjYjNmXHVjYjQwXHVjYjQyXHVjYjQzXHVjYjQ0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYjQ1XHVjYjQ2XHVjYjQ3XHVjYjRhXHVjYjRiXHVjYjRkXHVjYjRlXHVjYjRmXHVjYjUxXHVjYjUyXHVjYjUzXHVjYjU0''@;'; put 'put ''XHVjYjU1XHVjYjU2XHVjYjU3XHVjYjVhXHVjYjViXHVjYjVjXHVjYjVlXHVjYjVmXHVjYjYwXHVjYjYxXHVjYjYyXHVjYjYzXHVjYjY1XHVjYjY2XHVjYjY3XHVjYjY4XHVjYjY5XHVjYjZhXHVjYjZiXHVjYjZjXHUzMzk1XHUzMzk2XHUzMzk3XHUyMTEzXHUzMzk4XHUzM2M0XHUzM2EzXHUz''@;'; put 'put ''M2E0XHUzM2E1XHUzM2E2XHUzMzk5XHUzMzlhXHUzMzliXHUzMzljXHUzMzlkXHUzMzllXHUzMzlmXHUzM2EwXHUzM2ExXHUzM2EyXHUzM2NhXHUzMzhkXHUzMzhlXHUzMzhmXHUzM2NmXHUzMzg4XHUzMzg5XHUzM2M4XHUzM2E3XHUzM2E4XHUzM2IwXHUzM2IxXHUzM2IyXHUzM2IzXHUzM2I0''@;'; put 'put ''XHUzM2I1XHUzM2I2XHUzM2I3XHUzM2I4XHUzM2I5XHUzMzgwXHUzMzgxXHUzMzgyXHUzMzgzXHUzMzg0XHUzM2JhXHUzM2JiXHUzM2JjXHUzM2JkXHUzM2JlXHUzM2JmXHUzMzkwXHUzMzkxXHUzMzkyXHUzMzkzXHUzMzk0XHUyMTI2XHUzM2MwXHUzM2MxXHUzMzhhXHUzMzhiXHUzMzhjXHUz''@;'; put 'put ''M2Q2XHUzM2M1XHUzM2FkXHUzM2FlXHUzM2FmXHUzM2RiXHUzM2E5XHUzM2FhXHUzM2FiXHUzM2FjXHUzM2RkXHUzM2QwXHUzM2QzXHUzM2MzXHUzM2M5XHUzM2RjXHUzM2M2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTY3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjddW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE2N11bRV1dPTQyNzUyK0UsTFs0Mjc1MitFXT1CWzE2N11bRV0pO2ZvcihCWzE2OF09Ilx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2I2ZFx1Y2I2ZVx1Y2I2Zlx1Y2I3MFx1Y2I3MVx1Y2I3Mlx1Y2I3M1x1Y2I3NFx1Y2I3NVx1Y2I3Nlx1Y2I3N1x1Y2I3YVx1Y2I3Ylx1Y2I3Y1x1Y2I3ZFx1Y2I3ZVx1Y2I3Zlx1Y2I4MFx1Y2I4''@;'; put 'put ''MVx1Y2I4Mlx1Y2I4M1x1Y2I4NFx1Y2I4NVx1Y2I4Nlx1Y2I4N1x1Y2I4OFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2I4OVx1Y2I4YVx1Y2I4Ylx1Y2I4Y1x1Y2I4ZFx1Y2I4ZVx1Y2I4Zlx1Y2I5MFx1Y2I5MVx1Y2I5Mlx1Y2I5M1x1Y2I5NFx1Y2I5NVx1Y2I5Nlx1''@;'; put 'put ''Y2I5N1x1Y2I5OFx1Y2I5OVx1Y2I5YVx1Y2I5Ylx1Y2I5ZFx1Y2I5ZVx1Y2I5Zlx1Y2JhMFx1Y2JhMVx1Y2JhMlx1Y2JhM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2JhNFx1Y2JhNVx1Y2JhNlx1Y2JhN1x1Y2JhOFx1Y2JhOVx1Y2JhYVx1Y2JhYlx1Y2JhY1x1Y2Jh''@;'; put 'put ''ZFx1Y2JhZVx1Y2JhZlx1Y2JiMFx1Y2JiMVx1Y2JiMlx1Y2JiM1x1Y2JiNFx1Y2JiNVx1Y2JiNlx1Y2JiN1x1Y2JiOVx1Y2JiYVx1Y2JiYlx1Y2JiY1x1Y2JiZFx1Y2JiZVx1Y2JiZlx1Y2JjMFx1Y2JjMVx1Y2JjMlx1Y2JjM1x1Y2JjNFx4YzZceGQwXHhhYVx1MDEyNlx1ZmZmZFx1MDEzMlx1''@;'; put 'put ''ZmZmZFx1MDEzZlx1MDE0MVx4ZDhcdTAxNTJceGJhXHhkZVx1MDE2Nlx1MDE0YVx1ZmZmZFx1MzI2MFx1MzI2MVx1MzI2Mlx1MzI2M1x1MzI2NFx1MzI2NVx1MzI2Nlx1MzI2N1x1MzI2OFx1MzI2OVx1MzI2YVx1MzI2Ylx1MzI2Y1x1MzI2ZFx1MzI2ZVx1MzI2Zlx1MzI3MFx1MzI3MVx1MzI3''@;'; put 'put ''Mlx1MzI3M1x1MzI3NFx1MzI3NVx1MzI3Nlx1MzI3N1x1MzI3OFx1MzI3OVx1MzI3YVx1MzI3Ylx1MjRkMFx1MjRkMVx1MjRkMlx1MjRkM1x1MjRkNFx1MjRkNVx1MjRkNlx1MjRkN1x1MjRkOFx1MjRkOVx1MjRkYVx1MjRkYlx1MjRkY1x1MjRkZFx1MjRkZVx1MjRkZlx1MjRlMFx1MjRlMVx1''@;'; put 'put ''MjRlMlx1MjRlM1x1MjRlNFx1MjRlNVx1MjRlNlx1MjRlN1x1MjRlOFx1MjRlOVx1MjQ2MFx1MjQ2MVx1MjQ2Mlx1MjQ2M1x1MjQ2NFx1MjQ2NVx1MjQ2Nlx1MjQ2N1x1MjQ2OFx1MjQ2OVx1MjQ2YVx1MjQ2Ylx1MjQ2Y1x1MjQ2ZFx1MjQ2ZVx4YmRcdTIxNTNcdTIxNTRceGJjXHhiZVx1MjE1''@;'; put 'put ''Ylx1MjE1Y1x1MjE1ZFx1MjE1ZVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2OF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTY4XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNjhdW0VdXT00MzAwOCtFLExbNDMwMDgrRV09QlsxNjhdW0VdKTtmb3IoQlsxNjldPSJcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNiYzVcdWNiYzZcdWNiYzdcdWNiYzhcdWNiYzlcdWNiY2FcdWNiY2JcdWNiY2NcdWNiY2RcdWNiY2VcdWNiY2ZcdWNiZDBcdWNiZDFcdWNiZDJcdWNiZDNcdWNiZDVcdWNiZDZcdWNiZDdcdWNiZDhcdWNi''@;'; put 'put ''ZDlcdWNiZGFcdWNiZGJcdWNiZGNcdWNiZGRcdWNiZGVcdWNiZGZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNiZTBcdWNiZTFcdWNiZTJcdWNiZTNcdWNiZTVcdWNiZTZcdWNiZThcdWNiZWFcdWNiZWJcdWNiZWNcdWNiZWRcdWNiZWVcdWNiZWZcdWNiZjBcdWNiZjFc''@;'; put 'put ''dWNiZjJcdWNiZjNcdWNiZjRcdWNiZjVcdWNiZjZcdWNiZjdcdWNiZjhcdWNiZjlcdWNiZmFcdWNiZmJcdWNiZmNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNiZmRcdWNiZmVcdWNiZmZcdWNjMDBcdWNjMDFcdWNjMDJcdWNjMDNcdWNjMDRcdWNjMDVcdWNjMDZcdWNj''@;'; put 'put ''MDdcdWNjMDhcdWNjMDlcdWNjMGFcdWNjMGJcdWNjMGVcdWNjMGZcdWNjMTFcdWNjMTJcdWNjMTNcdWNjMTVcdWNjMTZcdWNjMTdcdWNjMThcdWNjMTlcdWNjMWFcdWNjMWJcdWNjMWVcdWNjMWZcdWNjMjBcdWNjMjNcdWNjMjRceGU2XHUwMTExXHhmMFx1MDEyN1x1MDEzMVx1MDEzM1x1MDEz''@;'; put 'put ''OFx1MDE0MFx1MDE0Mlx4ZjhcdTAxNTNceGRmXHhmZVx1MDE2N1x1MDE0Ylx1MDE0OVx1MzIwMFx1MzIwMVx1MzIwMlx1MzIwM1x1MzIwNFx1MzIwNVx1MzIwNlx1MzIwN1x1MzIwOFx1MzIwOVx1MzIwYVx1MzIwYlx1MzIwY1x1MzIwZFx1MzIwZVx1MzIwZlx1MzIxMFx1MzIxMVx1MzIxMlx1''@;'; put 'put ''MzIxM1x1MzIxNFx1MzIxNVx1MzIxNlx1MzIxN1x1MzIxOFx1MzIxOVx1MzIxYVx1MzIxYlx1MjQ5Y1x1MjQ5ZFx1MjQ5ZVx1MjQ5Zlx1MjRhMFx1MjRhMVx1MjRhMlx1MjRhM1x1MjRhNFx1MjRhNVx1MjRhNlx1MjRhN1x1MjRhOFx1MjRhOVx1MjRhYVx1MjRhYlx1MjRhY1x1MjRhZFx1MjRh''@;'; put 'put ''ZVx1MjRhZlx1MjRiMFx1MjRiMVx1MjRiMlx1MjRiM1x1MjRiNFx1MjRiNVx1MjQ3NFx1MjQ3NVx1MjQ3Nlx1MjQ3N1x1MjQ3OFx1MjQ3OVx1MjQ3YVx1MjQ3Ylx1MjQ3Y1x1MjQ3ZFx1MjQ3ZVx1MjQ3Zlx1MjQ4MFx1MjQ4MVx1MjQ4Mlx4YjlceGIyXHhiM1x1MjA3NFx1MjA3Zlx1MjA4MVx1''@;'; put 'put ''MjA4Mlx1MjA4M1x1MjA4NFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2OV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTY5XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNjldW0VdXT00MzI2NCtFLExbNDMyNjQrRV09QlsxNjldW0VdKTtmb3IoQlsxNzBdPSJcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNjMjVcdWNjMjZcdWNjMmFcdWNjMmJcdWNjMmRcdWNjMmZcdWNjMzFcdWNjMzJcdWNjMzNcdWNjMzRcdWNjMzVcdWNjMzZcdWNjMzdcdWNjM2FcdWNjM2ZcdWNjNDBcdWNjNDFcdWNjNDJcdWNjNDNcdWNjNDZc''@;'; put 'put ''dWNjNDdcdWNjNDlcdWNjNGFcdWNjNGJcdWNjNGRcdWNjNGVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNjNGZcdWNjNTBcdWNjNTFcdWNjNTJcdWNjNTNcdWNjNTZcdWNjNWFcdWNjNWJcdWNjNWNcdWNjNWRcdWNjNWVcdWNjNWZcdWNjNjFcdWNjNjJcdWNjNjNcdWNj''@;'; put 'put ''NjVcdWNjNjdcdWNjNjlcdWNjNmFcdWNjNmJcdWNjNmNcdWNjNmRcdWNjNmVcdWNjNmZcdWNjNzFcdWNjNzJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNjNzNcdWNjNzRcdWNjNzZcdWNjNzdcdWNjNzhcdWNjNzlcdWNjN2FcdWNjN2JcdWNjN2NcdWNjN2RcdWNjN2Vc''@;'; put 'put ''dWNjN2ZcdWNjODBcdWNjODFcdWNjODJcdWNjODNcdWNjODRcdWNjODVcdWNjODZcdWNjODdcdWNjODhcdWNjODlcdWNjOGFcdWNjOGJcdWNjOGNcdWNjOGRcdWNjOGVcdWNjOGZcdWNjOTBcdWNjOTFcdWNjOTJcdWNjOTNcdTMwNDFcdTMwNDJcdTMwNDNcdTMwNDRcdTMwNDVcdTMwNDZcdTMw''@;'; put 'put ''NDdcdTMwNDhcdTMwNDlcdTMwNGFcdTMwNGJcdTMwNGNcdTMwNGRcdTMwNGVcdTMwNGZcdTMwNTBcdTMwNTFcdTMwNTJcdTMwNTNcdTMwNTRcdTMwNTVcdTMwNTZcdTMwNTdcdTMwNThcdTMwNTlcdTMwNWFcdTMwNWJcdTMwNWNcdTMwNWRcdTMwNWVcdTMwNWZcdTMwNjBcdTMwNjFcdTMwNjJc''@;'; put 'put ''dTMwNjNcdTMwNjRcdTMwNjVcdTMwNjZcdTMwNjdcdTMwNjhcdTMwNjlcdTMwNmFcdTMwNmJcdTMwNmNcdTMwNmRcdTMwNmVcdTMwNmZcdTMwNzBcdTMwNzFcdTMwNzJcdTMwNzNcdTMwNzRcdTMwNzVcdTMwNzZcdTMwNzdcdTMwNzhcdTMwNzlcdTMwN2FcdTMwN2JcdTMwN2NcdTMwN2RcdTMw''@;'; put 'put ''N2VcdTMwN2ZcdTMwODBcdTMwODFcdTMwODJcdTMwODNcdTMwODRcdTMwODVcdTMwODZcdTMwODdcdTMwODhcdTMwODlcdTMwOGFcdTMwOGJcdTMwOGNcdTMwOGRcdTMwOGVcdTMwOGZcdTMwOTBcdTMwOTFcdTMwOTJcdTMwOTNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3MF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTcwXVtFXV09NDM1MjArRSxMWzQzNTIwK0VdPUJbMTcwXVtFXSk7Zm9yKEJbMTcxXT0iXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYzk0XHVjYzk1XHVjYzk2XHVjYzk3XHVjYzlhXHVjYzliXHVjYzlkXHVjYzllXHVjYzlmXHVjY2ExXHVjY2EyXHVjY2EzXHVjY2E0XHVjY2E1XHVjY2E2XHVjY2E3XHVjY2FhXHVjY2Fl''@;'; put 'put ''XHVjY2FmXHVjY2IwXHVjY2IxXHVjY2IyXHVjY2IzXHVjY2I2XHVjY2I3XHVjY2I5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjY2JhXHVjY2JiXHVjY2JkXHVjY2JlXHVjY2JmXHVjY2MwXHVjY2MxXHVjY2MyXHVjY2MzXHVjY2M2XHVjY2M4XHVjY2NhXHVjY2NiXHVj''@;'; put 'put ''Y2NjXHVjY2NkXHVjY2NlXHVjY2NmXHVjY2QxXHVjY2QyXHVjY2QzXHVjY2Q1XHVjY2Q2XHVjY2Q3XHVjY2Q4XHVjY2Q5XHVjY2RhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjY2RiXHVjY2RjXHVjY2RkXHVjY2RlXHVjY2RmXHVjY2UwXHVjY2UxXHVjY2UyXHVjY2Uz''@;'; put 'put ''XHVjY2U1XHVjY2U2XHVjY2U3XHVjY2U4XHVjY2U5XHVjY2VhXHVjY2ViXHVjY2VkXHVjY2VlXHVjY2VmXHVjY2YxXHVjY2YyXHVjY2YzXHVjY2Y0XHVjY2Y1XHVjY2Y2XHVjY2Y3XHVjY2Y4XHVjY2Y5XHVjY2ZhXHVjY2ZiXHVjY2ZjXHVjY2ZkXHUzMGExXHUzMGEyXHUzMGEzXHUzMGE0XHUz''@;'; put 'put ''MGE1XHUzMGE2XHUzMGE3XHUzMGE4XHUzMGE5XHUzMGFhXHUzMGFiXHUzMGFjXHUzMGFkXHUzMGFlXHUzMGFmXHUzMGIwXHUzMGIxXHUzMGIyXHUzMGIzXHUzMGI0XHUzMGI1XHUzMGI2XHUzMGI3XHUzMGI4XHUzMGI5XHUzMGJhXHUzMGJiXHUzMGJjXHUzMGJkXHUzMGJlXHUzMGJmXHUzMGMw''@;'; put 'put ''XHUzMGMxXHUzMGMyXHUzMGMzXHUzMGM0XHUzMGM1XHUzMGM2XHUzMGM3XHUzMGM4XHUzMGM5XHUzMGNhXHUzMGNiXHUzMGNjXHUzMGNkXHUzMGNlXHUzMGNmXHUzMGQwXHUzMGQxXHUzMGQyXHUzMGQzXHUzMGQ0XHUzMGQ1XHUzMGQ2XHUzMGQ3XHUzMGQ4XHUzMGQ5XHUzMGRhXHUzMGRiXHUz''@;'; put 'put ''MGRjXHUzMGRkXHUzMGRlXHUzMGRmXHUzMGUwXHUzMGUxXHUzMGUyXHUzMGUzXHUzMGU0XHUzMGU1XHUzMGU2XHUzMGU3XHUzMGU4XHUzMGU5XHUzMGVhXHUzMGViXHUzMGVjXHUzMGVkXHUzMGVlXHUzMGVmXHUzMGYwXHUzMGYxXHUzMGYyXHUzMGYzXHUzMGY0XHUzMGY1XHUzMGY2XHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTcxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzFdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE3MV1bRV1dPTQzNzc2K0UsTFs0Mzc3NitFXT1CWzE3MV1bRV0pO2Zv''@;'; put 'put ''cihCWzE3Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2NmZVx1Y2NmZlx1Y2QwMFx1Y2QwMlx1Y2QwM1x1Y2QwNFx1Y2QwNVx1Y2QwNlx1Y2QwN1x1Y2QwYVx1Y2QwYlx1Y2QwZFx1Y2QwZVx1Y2QwZlx1Y2QxMVx1Y2Qx''@;'; put 'put ''Mlx1Y2QxM1x1Y2QxNFx1Y2QxNVx1Y2QxNlx1Y2QxN1x1Y2QxYVx1Y2QxY1x1Y2QxZVx1Y2QxZlx1Y2QyMFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2QyMVx1Y2QyMlx1Y2QyM1x1Y2QyNVx1Y2QyNlx1Y2QyN1x1Y2QyOVx1Y2QyYVx1Y2QyYlx1Y2QyZFx1Y2QyZVx1''@;'; put 'put ''Y2QyZlx1Y2QzMFx1Y2QzMVx1Y2QzMlx1Y2QzM1x1Y2QzNFx1Y2QzNVx1Y2QzNlx1Y2QzN1x1Y2QzOFx1Y2QzYVx1Y2QzYlx1Y2QzY1x1Y2QzZFx1Y2QzZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2QzZlx1Y2Q0MFx1Y2Q0MVx1Y2Q0Mlx1Y2Q0M1x1Y2Q0NFx1Y2Q0''@;'; put 'put ''NVx1Y2Q0Nlx1Y2Q0N1x1Y2Q0OFx1Y2Q0OVx1Y2Q0YVx1Y2Q0Ylx1Y2Q0Y1x1Y2Q0ZFx1Y2Q0ZVx1Y2Q0Zlx1Y2Q1MFx1Y2Q1MVx1Y2Q1Mlx1Y2Q1M1x1Y2Q1NFx1Y2Q1NVx1Y2Q1Nlx1Y2Q1N1x1Y2Q1OFx1Y2Q1OVx1Y2Q1YVx1Y2Q1Ylx1Y2Q1ZFx1Y2Q1ZVx1Y2Q1Zlx1MDQxMFx1MDQxMVx1''@;'; put 'put ''MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQwMVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQy''@;'; put 'put ''Y1x1MDQyZFx1MDQyZVx1MDQyZlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQ1MVx1MDQzNlx1MDQzN1x1''@;'; put 'put ''MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTcyXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNzJdW0VdXT00NDAzMitFLExbNDQwMzIrRV09''@;'; put 'put ''QlsxNzJdW0VdKTtmb3IoQlsxNzNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNkNjFcdWNkNjJcdWNkNjNcdWNkNjVcdWNkNjZcdWNkNjdcdWNkNjhcdWNkNjlcdWNkNmFcdWNkNmJcdWNkNmVcdWNkNzBcdWNkNzJcdWNk''@;'; put 'put ''NzNcdWNkNzRcdWNkNzVcdWNkNzZcdWNkNzdcdWNkNzlcdWNkN2FcdWNkN2JcdWNkN2NcdWNkN2RcdWNkN2VcdWNkN2ZcdWNkODBcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNkODFcdWNkODJcdWNkODNcdWNkODRcdWNkODVcdWNkODZcdWNkODdcdWNkODlcdWNkOGFc''@;'; put 'put ''dWNkOGJcdWNkOGNcdWNkOGRcdWNkOGVcdWNkOGZcdWNkOTBcdWNkOTFcdWNkOTJcdWNkOTNcdWNkOTZcdWNkOTdcdWNkOTlcdWNkOWFcdWNkOWJcdWNkOWRcdWNkOWVcdWNkOWZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNkYTBcdWNkYTFcdWNkYTJcdWNkYTNcdWNk''@;'; put 'put ''YTZcdWNkYThcdWNkYWFcdWNkYWJcdWNkYWNcdWNkYWRcdWNkYWVcdWNkYWZcdWNkYjFcdWNkYjJcdWNkYjNcdWNkYjRcdWNkYjVcdWNkYjZcdWNkYjdcdWNkYjhcdWNkYjlcdWNkYmFcdWNkYmJcdWNkYmNcdWNkYmRcdWNkYmVcdWNkYmZcdWNkYzBcdWNkYzFcdWNkYzJcdWNkYzNcdWNkYzVc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3M11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTczXVtFXV09NDQyODgr''@;'; put 'put ''RSxMWzQ0Mjg4K0VdPUJbMTczXVtFXSk7Zm9yKEJbMTc0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZGM2XHVjZGM3XHVjZGM4XHVjZGM5XHVjZGNhXHVjZGNiXHVjZGNkXHVjZGNlXHVjZGNmXHVjZGQxXHVjZGQyXHVj''@;'; put 'put ''ZGQzXHVjZGQ0XHVjZGQ1XHVjZGQ2XHVjZGQ3XHVjZGQ4XHVjZGQ5XHVjZGRhXHVjZGRiXHVjZGRjXHVjZGRkXHVjZGRlXHVjZGRmXHVjZGUwXHVjZGUxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZGUyXHVjZGUzXHVjZGU0XHVjZGU1XHVjZGU2XHVjZGU3XHVjZGU5''@;'; put 'put ''XHVjZGVhXHVjZGViXHVjZGVkXHVjZGVlXHVjZGVmXHVjZGYxXHVjZGYyXHVjZGYzXHVjZGY0XHVjZGY1XHVjZGY2XHVjZGY3XHVjZGZhXHVjZGZjXHVjZGZlXHVjZGZmXHVjZTAwXHVjZTAxXHVjZTAyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZTAzXHVjZTA1XHVj''@;'; put 'put ''ZTA2XHVjZTA3XHVjZTA5XHVjZTBhXHVjZTBiXHVjZTBkXHVjZTBlXHVjZTBmXHVjZTEwXHVjZTExXHVjZTEyXHVjZTEzXHVjZTE1XHVjZTE2XHVjZTE3XHVjZTE4XHVjZTFhXHVjZTFiXHVjZTFjXHVjZTFkXHVjZTFlXHVjZTFmXHVjZTIyXHVjZTIzXHVjZTI1XHVjZTI2XHVjZTI3XHVjZTI5''@;'; put 'put ''XHVjZTJhXHVjZTJiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTc0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzRdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE3''@;'; put 'put ''NF1bRV1dPTQ0NTQ0K0UsTFs0NDU0NCtFXT1CWzE3NF1bRV0pO2ZvcihCWzE3NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2UyY1x1Y2UyZFx1Y2UyZVx1Y2UyZlx1Y2UzMlx1Y2UzNFx1Y2UzNlx1Y2UzN1x1Y2UzOFx1''@;'; put 'put ''Y2UzOVx1Y2UzYVx1Y2UzYlx1Y2UzY1x1Y2UzZFx1Y2UzZVx1Y2UzZlx1Y2U0MFx1Y2U0MVx1Y2U0Mlx1Y2U0M1x1Y2U0NFx1Y2U0NVx1Y2U0Nlx1Y2U0N1x1Y2U0OFx1Y2U0OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2U0YVx1Y2U0Ylx1Y2U0Y1x1Y2U0ZFx1Y2U0''@;'; put 'put ''ZVx1Y2U0Zlx1Y2U1MFx1Y2U1MVx1Y2U1Mlx1Y2U1M1x1Y2U1NFx1Y2U1NVx1Y2U1Nlx1Y2U1N1x1Y2U1YVx1Y2U1Ylx1Y2U1ZFx1Y2U1ZVx1Y2U2Mlx1Y2U2M1x1Y2U2NFx1Y2U2NVx1Y2U2Nlx1Y2U2N1x1Y2U2YVx1Y2U2Y1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''Y2U2ZVx1Y2U2Zlx1Y2U3MFx1Y2U3MVx1Y2U3Mlx1Y2U3M1x1Y2U3Nlx1Y2U3N1x1Y2U3OVx1Y2U3YVx1Y2U3Ylx1Y2U3ZFx1Y2U3ZVx1Y2U3Zlx1Y2U4MFx1Y2U4MVx1Y2U4Mlx1Y2U4M1x1Y2U4Nlx1Y2U4OFx1Y2U4YVx1Y2U4Ylx1Y2U4Y1x1Y2U4ZFx1Y2U4ZVx1Y2U4Zlx1Y2U5Mlx1Y2U5''@;'; put 'put ''M1x1Y2U5NVx1Y2U5Nlx1Y2U5N1x1Y2U5OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3NV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTc1XVtFXS5jaGFyQ29kZUF0''@;'; put 'put ''KDApJiYobWVbQlsxNzVdW0VdXT00NDgwMCtFLExbNDQ4MDArRV09QlsxNzVdW0VdKTtmb3IoQlsxNzZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNlOWFcdWNlOWJcdWNlOWNcdWNlOWRcdWNlOWVcdWNlOWZcdWNlYTJc''@;'; put 'put ''dWNlYTZcdWNlYTdcdWNlYThcdWNlYTlcdWNlYWFcdWNlYWJcdWNlYWVcdWNlYWZcdWNlYjBcdWNlYjFcdWNlYjJcdWNlYjNcdWNlYjRcdWNlYjVcdWNlYjZcdWNlYjdcdWNlYjhcdWNlYjlcdWNlYmFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNlYmJcdWNlYmNcdWNl''@;'; put 'put ''YmRcdWNlYmVcdWNlYmZcdWNlYzBcdWNlYzJcdWNlYzNcdWNlYzRcdWNlYzVcdWNlYzZcdWNlYzdcdWNlYzhcdWNlYzlcdWNlY2FcdWNlY2JcdWNlY2NcdWNlY2RcdWNlY2VcdWNlY2ZcdWNlZDBcdWNlZDFcdWNlZDJcdWNlZDNcdWNlZDRcdWNlZDVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWNlZDZcdWNlZDdcdWNlZDhcdWNlZDlcdWNlZGFcdWNlZGJcdWNlZGNcdWNlZGRcdWNlZGVcdWNlZGZcdWNlZTBcdWNlZTFcdWNlZTJcdWNlZTNcdWNlZTZcdWNlZTdcdWNlZTlcdWNlZWFcdWNlZWRcdWNlZWVcdWNlZWZcdWNlZjBcdWNlZjFcdWNlZjJcdWNlZjNcdWNl''@;'; put 'put ''ZjZcdWNlZmFcdWNlZmJcdWNlZmNcdWNlZmRcdWNlZmVcdWNlZmZcdWFjMDBcdWFjMDFcdWFjMDRcdWFjMDdcdWFjMDhcdWFjMDlcdWFjMGFcdWFjMTBcdWFjMTFcdWFjMTJcdWFjMTNcdWFjMTRcdWFjMTVcdWFjMTZcdWFjMTdcdWFjMTlcdWFjMWFcdWFjMWJcdWFjMWNcdWFjMWRcdWFjMjBc''@;'; put 'put ''dWFjMjRcdWFjMmNcdWFjMmRcdWFjMmZcdWFjMzBcdWFjMzFcdWFjMzhcdWFjMzlcdWFjM2NcdWFjNDBcdWFjNGJcdWFjNGRcdWFjNTRcdWFjNThcdWFjNWNcdWFjNzBcdWFjNzFcdWFjNzRcdWFjNzdcdWFjNzhcdWFjN2FcdWFjODBcdWFjODFcdWFjODNcdWFjODRcdWFjODVcdWFjODZcdWFj''@;'; put 'put ''ODlcdWFjOGFcdWFjOGJcdWFjOGNcdWFjOTBcdWFjOTRcdWFjOWNcdWFjOWRcdWFjOWZcdWFjYTBcdWFjYTFcdWFjYThcdWFjYTlcdWFjYWFcdWFjYWNcdWFjYWZcdWFjYjBcdWFjYjhcdWFjYjlcdWFjYmJcdWFjYmNcdWFjYmRcdWFjYzFcdWFjYzRcdWFjYzhcdWFjY2NcdWFjZDVcdWFjZDdc''@;'; put 'put ''dWFjZTBcdWFjZTFcdWFjZTRcdWFjZTdcdWFjZThcdWFjZWFcdWFjZWNcdWFjZWZcdWFjZjBcdWFjZjFcdWFjZjNcdWFjZjVcdWFjZjZcdWFjZmNcdWFjZmRcdWFkMDBcdWFkMDRcdWFkMDZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3Nl1b''@;'; put 'put ''RV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTc2XVtFXV09NDUwNTYrRSxMWzQ1MDU2K0VdPUJbMTc2XVtFXSk7Zm9yKEJbMTc3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZjAyXHVjZjAzXHVjZjA1XHVjZjA2XHVjZjA3''@;'; put 'put ''XHVjZjA5XHVjZjBhXHVjZjBiXHVjZjBjXHVjZjBkXHVjZjBlXHVjZjBmXHVjZjEyXHVjZjE0XHVjZjE2XHVjZjE3XHVjZjE4XHVjZjE5XHVjZjFhXHVjZjFiXHVjZjFkXHVjZjFlXHVjZjFmXHVjZjIxXHVjZjIyXHVjZjIzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVj''@;'; put 'put ''ZjI1XHVjZjI2XHVjZjI3XHVjZjI4XHVjZjI5XHVjZjJhXHVjZjJiXHVjZjJlXHVjZjMyXHVjZjMzXHVjZjM0XHVjZjM1XHVjZjM2XHVjZjM3XHVjZjM5XHVjZjNhXHVjZjNiXHVjZjNjXHVjZjNkXHVjZjNlXHVjZjNmXHVjZjQwXHVjZjQxXHVjZjQyXHVjZjQzXHVjZjQ0XHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZjQ1XHVjZjQ2XHVjZjQ3XHVjZjQ4XHVjZjQ5XHVjZjRhXHVjZjRiXHVjZjRjXHVjZjRkXHVjZjRlXHVjZjRmXHVjZjUwXHVjZjUxXHVjZjUyXHVjZjUzXHVjZjU2XHVjZjU3XHVjZjU5XHVjZjVhXHVjZjViXHVjZjVkXHVjZjVlXHVjZjVmXHVj''@;'; put 'put ''ZjYwXHVjZjYxXHVjZjYyXHVjZjYzXHVjZjY2XHVjZjY4XHVjZjZhXHVjZjZiXHVjZjZjXHVhZDBjXHVhZDBkXHVhZDBmXHVhZDExXHVhZDE4XHVhZDFjXHVhZDIwXHVhZDI5XHVhZDJjXHVhZDJkXHVhZDM0XHVhZDM1XHVhZDM4XHVhZDNjXHVhZDQ0XHVhZDQ1XHVhZDQ3XHVhZDQ5XHVhZDUw''@;'; put 'put ''XHVhZDU0XHVhZDU4XHVhZDYxXHVhZDYzXHVhZDZjXHVhZDZkXHVhZDcwXHVhZDczXHVhZDc0XHVhZDc1XHVhZDc2XHVhZDdiXHVhZDdjXHVhZDdkXHVhZDdmXHVhZDgxXHVhZDgyXHVhZDg4XHVhZDg5XHVhZDhjXHVhZDkwXHVhZDljXHVhZDlkXHVhZGE0XHVhZGI3XHVhZGMwXHVhZGMxXHVh''@;'; put 'put ''ZGM0XHVhZGM4XHVhZGQwXHVhZGQxXHVhZGQzXHVhZGRjXHVhZGUwXHVhZGU0XHVhZGY4XHVhZGY5XHVhZGZjXHVhZGZmXHVhZTAwXHVhZTAxXHVhZTA4XHVhZTA5XHVhZTBiXHVhZTBkXHVhZTE0XHVhZTMwXHVhZTMxXHVhZTM0XHVhZTM3XHVhZTM4XHVhZTNhXHVhZTQwXHVhZTQxXHVhZTQz''@;'; put 'put ''XHVhZTQ1XHVhZTQ2XHVhZTRhXHVhZTRjXHVhZTRkXHVhZTRlXHVhZTUwXHVhZTU0XHVhZTU2XHVhZTVjXHVhZTVkXHVhZTVmXHVhZTYwXHVhZTYxXHVhZTY1XHVhZTY4XHVhZTY5XHVhZTZjXHVhZTcwXHVhZTc4XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTc3XS5sZW5ndGg7KytFKTY1''@;'; put 'put ''NTMzIT09QlsxNzddW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE3N11bRV1dPTQ1MzEyK0UsTFs0NTMxMitFXT1CWzE3N11bRV0pO2ZvcihCWzE3OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2Y2ZFx1Y2Y2ZVx1Y2Y2''@;'; put 'put ''Zlx1Y2Y3Mlx1Y2Y3M1x1Y2Y3NVx1Y2Y3Nlx1Y2Y3N1x1Y2Y3OVx1Y2Y3YVx1Y2Y3Ylx1Y2Y3Y1x1Y2Y3ZFx1Y2Y3ZVx1Y2Y3Zlx1Y2Y4MVx1Y2Y4Mlx1Y2Y4M1x1Y2Y4NFx1Y2Y4Nlx1Y2Y4N1x1Y2Y4OFx1Y2Y4OVx1Y2Y4YVx1Y2Y4Ylx1Y2Y4ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1Y2Y4ZVx1Y2Y4Zlx1Y2Y5MFx1Y2Y5MVx1Y2Y5Mlx1Y2Y5M1x1Y2Y5NFx1Y2Y5NVx1Y2Y5Nlx1Y2Y5N1x1Y2Y5OFx1Y2Y5OVx1Y2Y5YVx1Y2Y5Ylx1Y2Y5Y1x1Y2Y5ZFx1Y2Y5ZVx1Y2Y5Zlx1Y2ZhMFx1Y2ZhMlx1Y2ZhM1x1Y2ZhNFx1Y2ZhNVx1Y2ZhNlx1Y2ZhN1x1Y2Zh''@;'; put 'put ''OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2ZhYVx1Y2ZhYlx1Y2ZhY1x1Y2ZhZFx1Y2ZhZVx1Y2ZhZlx1Y2ZiMVx1Y2ZiMlx1Y2ZiM1x1Y2ZiNFx1Y2ZiNVx1Y2ZiNlx1Y2ZiN1x1Y2ZiOFx1Y2ZiOVx1Y2ZiYVx1Y2ZiYlx1Y2ZiY1x1Y2ZiZFx1Y2ZiZVx1Y2ZiZlx1''@;'; put 'put ''Y2ZjMFx1Y2ZjMVx1Y2ZjMlx1Y2ZjM1x1Y2ZjNVx1Y2ZjNlx1Y2ZjN1x1Y2ZjOFx1Y2ZjOVx1Y2ZjYVx1Y2ZjYlx1YWU3OVx1YWU3Ylx1YWU3Y1x1YWU3ZFx1YWU4NFx1YWU4NVx1YWU4Y1x1YWViY1x1YWViZFx1YWViZVx1YWVjMFx1YWVjNFx1YWVjY1x1YWVjZFx1YWVjZlx1YWVkMFx1YWVk''@;'; put 'put ''MVx1YWVkOFx1YWVkOVx1YWVkY1x1YWVlOFx1YWVlYlx1YWVlZFx1YWVmNFx1YWVmOFx1YWVmY1x1YWYwN1x1YWYwOFx1YWYwZFx1YWYxMFx1YWYyY1x1YWYyZFx1YWYzMFx1YWYzMlx1YWYzNFx1YWYzY1x1YWYzZFx1YWYzZlx1YWY0MVx1YWY0Mlx1YWY0M1x1YWY0OFx1YWY0OVx1YWY1MFx1''@;'; put 'put ''YWY1Y1x1YWY1ZFx1YWY2NFx1YWY2NVx1YWY3OVx1YWY4MFx1YWY4NFx1YWY4OFx1YWY5MFx1YWY5MVx1YWY5NVx1YWY5Y1x1YWZiOFx1YWZiOVx1YWZiY1x1YWZjMFx1YWZjN1x1YWZjOFx1YWZjOVx1YWZjYlx1YWZjZFx1YWZjZVx1YWZkNFx1YWZkY1x1YWZlOFx1YWZlOVx1YWZmMFx1YWZm''@;'; put 'put ''MVx1YWZmNFx1YWZmOFx1YjAwMFx1YjAwMVx1YjAwNFx1YjAwY1x1YjAxMFx1YjAxNFx1YjAxY1x1YjAxZFx1YjAyOFx1YjA0NFx1YjA0NVx1YjA0OFx1YjA0YVx1YjA0Y1x1YjA0ZVx1YjA1M1x1YjA1NFx1YjA1NVx1YjA1N1x1YjA1OVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3OF0u''@;'; put 'put ''bGVuZ3RoOysrRSk2NTUzMyE9PUJbMTc4XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNzhdW0VdXT00NTU2OCtFLExbNDU1NjgrRV09QlsxNzhdW0VdKTtmb3IoQlsxNzldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNm''@;'; put 'put ''Y2NcdWNmY2RcdWNmY2VcdWNmY2ZcdWNmZDBcdWNmZDFcdWNmZDJcdWNmZDNcdWNmZDRcdWNmZDVcdWNmZDZcdWNmZDdcdWNmZDhcdWNmZDlcdWNmZGFcdWNmZGJcdWNmZGNcdWNmZGRcdWNmZGVcdWNmZGZcdWNmZTJcdWNmZTNcdWNmZTVcdWNmZTZcdWNmZTdcdWNmZTlcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNmZWFcdWNmZWJcdWNmZWNcdWNmZWRcdWNmZWVcdWNmZWZcdWNmZjJcdWNmZjRcdWNmZjZcdWNmZjdcdWNmZjhcdWNmZjlcdWNmZmFcdWNmZmJcdWNmZmRcdWNmZmVcdWNmZmZcdWQwMDFcdWQwMDJcdWQwMDNcdWQwMDVcdWQwMDZcdWQwMDdcdWQw''@;'; put 'put ''MDhcdWQwMDlcdWQwMGFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQwMGJcdWQwMGNcdWQwMGRcdWQwMGVcdWQwMGZcdWQwMTBcdWQwMTJcdWQwMTNcdWQwMTRcdWQwMTVcdWQwMTZcdWQwMTdcdWQwMTlcdWQwMWFcdWQwMWJcdWQwMWNcdWQwMWRcdWQwMWVcdWQwMWZc''@;'; put 'put ''dWQwMjBcdWQwMjFcdWQwMjJcdWQwMjNcdWQwMjRcdWQwMjVcdWQwMjZcdWQwMjdcdWQwMjhcdWQwMjlcdWQwMmFcdWQwMmJcdWQwMmNcdWIwNWRcdWIwN2NcdWIwN2RcdWIwODBcdWIwODRcdWIwOGNcdWIwOGRcdWIwOGZcdWIwOTFcdWIwOThcdWIwOTlcdWIwOWFcdWIwOWNcdWIwOWZcdWIw''@;'; put 'put ''YTBcdWIwYTFcdWIwYTJcdWIwYThcdWIwYTlcdWIwYWJcdWIwYWNcdWIwYWRcdWIwYWVcdWIwYWZcdWIwYjFcdWIwYjNcdWIwYjRcdWIwYjVcdWIwYjhcdWIwYmNcdWIwYzRcdWIwYzVcdWIwYzdcdWIwYzhcdWIwYzlcdWIwZDBcdWIwZDFcdWIwZDRcdWIwZDhcdWIwZTBcdWIwZTVcdWIxMDhc''@;'; put 'put ''dWIxMDlcdWIxMGJcdWIxMGNcdWIxMTBcdWIxMTJcdWIxMTNcdWIxMThcdWIxMTlcdWIxMWJcdWIxMWNcdWIxMWRcdWIxMjNcdWIxMjRcdWIxMjVcdWIxMjhcdWIxMmNcdWIxMzRcdWIxMzVcdWIxMzdcdWIxMzhcdWIxMzlcdWIxNDBcdWIxNDFcdWIxNDRcdWIxNDhcdWIxNTBcdWIxNTFcdWIx''@;'; put 'put ''NTRcdWIxNTVcdWIxNThcdWIxNWNcdWIxNjBcdWIxNzhcdWIxNzlcdWIxN2NcdWIxODBcdWIxODJcdWIxODhcdWIxODlcdWIxOGJcdWIxOGRcdWIxOTJcdWIxOTNcdWIxOTRcdWIxOThcdWIxOWNcdWIxYThcdWIxY2NcdWIxZDBcdWIxZDRcdWIxZGNcdWIxZGRcdWZmZmQiLnNwbGl0KCIiKSxF''@;'; put 'put ''PTA7RSE9QlsxNzldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3OV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTc5XVtFXV09NDU4MjQrRSxMWzQ1ODI0K0VdPUJbMTc5XVtFXSk7Zm9yKEJbMTgwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVkMDJlXHVkMDJmXHVkMDMwXHVkMDMxXHVkMDMyXHVkMDMzXHVkMDM2XHVkMDM3XHVkMDM5XHVkMDNhXHVkMDNiXHVkMDNkXHVkMDNlXHVkMDNmXHVkMDQwXHVkMDQxXHVkMDQyXHVkMDQzXHVkMDQ2XHVkMDQ4XHVkMDRhXHVkMDRiXHVkMDRjXHVkMDRkXHVkMDRlXHVkMDRm''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMDUxXHVkMDUyXHVkMDUzXHVkMDU1XHVkMDU2XHVkMDU3XHVkMDU5XHVkMDVhXHVkMDViXHVkMDVjXHVkMDVkXHVkMDVlXHVkMDVmXHVkMDYxXHVkMDYyXHVkMDYzXHVkMDY0XHVkMDY1XHVkMDY2XHVkMDY3XHVkMDY4XHVk''@;'; put 'put ''MDY5XHVkMDZhXHVkMDZiXHVkMDZlXHVkMDZmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMDcxXHVkMDcyXHVkMDczXHVkMDc1XHVkMDc2XHVkMDc3XHVkMDc4XHVkMDc5XHVkMDdhXHVkMDdiXHVkMDdlXHVkMDdmXHVkMDgwXHVkMDgyXHVkMDgzXHVkMDg0XHVkMDg1''@;'; put 'put ''XHVkMDg2XHVkMDg3XHVkMDg4XHVkMDg5XHVkMDhhXHVkMDhiXHVkMDhjXHVkMDhkXHVkMDhlXHVkMDhmXHVkMDkwXHVkMDkxXHVkMDkyXHVkMDkzXHVkMDk0XHViMWRmXHViMWU4XHViMWU5XHViMWVjXHViMWYwXHViMWY5XHViMWZiXHViMWZkXHViMjA0XHViMjA1XHViMjA4XHViMjBiXHVi''@;'; put 'put ''MjBjXHViMjE0XHViMjE1XHViMjE3XHViMjE5XHViMjIwXHViMjM0XHViMjNjXHViMjU4XHViMjVjXHViMjYwXHViMjY4XHViMjY5XHViMjc0XHViMjc1XHViMjdjXHViMjg0XHViMjg1XHViMjg5XHViMjkwXHViMjkxXHViMjk0XHViMjk4XHViMjk5XHViMjlhXHViMmEwXHViMmExXHViMmEz''@;'; put 'put ''XHViMmE1XHViMmE2XHViMmFhXHViMmFjXHViMmIwXHViMmI0XHViMmM4XHViMmM5XHViMmNjXHViMmQwXHViMmQyXHViMmQ4XHViMmQ5XHViMmRiXHViMmRkXHViMmUyXHViMmU0XHViMmU1XHViMmU2XHViMmU4XHViMmViXHViMmVjXHViMmVkXHViMmVlXHViMmVmXHViMmYzXHViMmY0XHVi''@;'; put 'put ''MmY1XHViMmY3XHViMmY4XHViMmY5XHViMmZhXHViMmZiXHViMmZmXHViMzAwXHViMzAxXHViMzA0XHViMzA4XHViMzEwXHViMzExXHViMzEzXHViMzE0XHViMzE1XHViMzFjXHViMzU0XHViMzU1XHViMzU2XHViMzU4XHViMzViXHViMzVjXHViMzVlXHViMzVmXHViMzY0XHViMzY1XHVmZmZk''@;'; put 'put ''Ii5zcGxpdCgiIiksRT0wO0UhPUJbMTgwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODBdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE4MF1bRV1dPTQ2MDgwK0UsTFs0NjA4MCtFXT1CWzE4MF1bRV0pO2ZvcihCWzE4MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDA5NVx1ZDA5Nlx1ZDA5N1x1ZDA5OFx1ZDA5OVx1ZDA5YVx1ZDA5Ylx1ZDA5Y1x1ZDA5ZFx1ZDA5ZVx1ZDA5Zlx1ZDBhMFx1ZDBhMVx1ZDBhMlx1ZDBhM1x1ZDBhNlx1ZDBhN1x1ZDBhOVx1ZDBhYVx1ZDBhYlx1ZDBhZFx1ZDBhZVx1ZDBhZlx1ZDBi''@;'; put 'put ''MFx1ZDBiMVx1ZDBiMlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDBiM1x1ZDBiNlx1ZDBiOFx1ZDBiYVx1ZDBiYlx1ZDBiY1x1ZDBiZFx1ZDBiZVx1ZDBiZlx1ZDBjMlx1ZDBjM1x1ZDBjNVx1ZDBjNlx1ZDBjN1x1ZDBjYVx1ZDBjYlx1ZDBjY1x1ZDBjZFx1ZDBjZVx1''@;'; put 'put ''ZDBjZlx1ZDBkMlx1ZDBkNlx1ZDBkN1x1ZDBkOFx1ZDBkOVx1ZDBkYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDBkYlx1ZDBkZVx1ZDBkZlx1ZDBlMVx1ZDBlMlx1ZDBlM1x1ZDBlNVx1ZDBlNlx1ZDBlN1x1ZDBlOFx1ZDBlOVx1ZDBlYVx1ZDBlYlx1ZDBlZVx1ZDBm''@;'; put 'put ''Mlx1ZDBmM1x1ZDBmNFx1ZDBmNVx1ZDBmNlx1ZDBmN1x1ZDBmOVx1ZDBmYVx1ZDBmYlx1ZDBmY1x1ZDBmZFx1ZDBmZVx1ZDBmZlx1ZDEwMFx1ZDEwMVx1ZDEwMlx1ZDEwM1x1ZDEwNFx1YjM2N1x1YjM2OVx1YjM2Ylx1YjM2ZVx1YjM3MFx1YjM3MVx1YjM3NFx1YjM3OFx1YjM4MFx1YjM4MVx1''@;'; put 'put ''YjM4M1x1YjM4NFx1YjM4NVx1YjM4Y1x1YjM5MFx1YjM5NFx1YjNhMFx1YjNhMVx1YjNhOFx1YjNhY1x1YjNjNFx1YjNjNVx1YjNjOFx1YjNjYlx1YjNjY1x1YjNjZVx1YjNkMFx1YjNkNFx1YjNkNVx1YjNkN1x1YjNkOVx1YjNkYlx1YjNkZFx1YjNlMFx1YjNlNFx1YjNlOFx1YjNmY1x1YjQx''@;'; put 'put ''MFx1YjQxOFx1YjQxY1x1YjQyMFx1YjQyOFx1YjQyOVx1YjQyYlx1YjQzNFx1YjQ1MFx1YjQ1MVx1YjQ1NFx1YjQ1OFx1YjQ2MFx1YjQ2MVx1YjQ2M1x1YjQ2NVx1YjQ2Y1x1YjQ4MFx1YjQ4OFx1YjQ5ZFx1YjRhNFx1YjRhOFx1YjRhY1x1YjRiNVx1YjRiN1x1YjRiOVx1YjRjMFx1YjRjNFx1''@;'; put 'put ''YjRjOFx1YjRkMFx1YjRkNVx1YjRkY1x1YjRkZFx1YjRlMFx1YjRlM1x1YjRlNFx1YjRlNlx1YjRlY1x1YjRlZFx1YjRlZlx1YjRmMVx1YjRmOFx1YjUxNFx1YjUxNVx1YjUxOFx1YjUxYlx1YjUxY1x1YjUyNFx1YjUyNVx1YjUyN1x1YjUyOFx1YjUyOVx1YjUyYVx1YjUzMFx1YjUzMVx1YjUz''@;'; put 'put ''NFx1YjUzOFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4MV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTgxXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxODFdW0VdXT00NjMzNitFLExbNDYzMzYrRV09QlsxODFdW0VdKTtmb3IoQlsxODJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQxMDVcdWQxMDZcdWQxMDdcdWQxMDhcdWQxMDlcdWQxMGFcdWQxMGJcdWQxMGNcdWQxMGVcdWQxMGZcdWQxMTBcdWQxMTFcdWQxMTJcdWQxMTNcdWQxMTRcdWQxMTVcdWQxMTZcdWQxMTdcdWQxMThcdWQxMTlcdWQxMWFcdWQx''@;'; put 'put ''MWJcdWQxMWNcdWQxMWRcdWQxMWVcdWQxMWZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQxMjBcdWQxMjFcdWQxMjJcdWQxMjNcdWQxMjRcdWQxMjVcdWQxMjZcdWQxMjdcdWQxMjhcdWQxMjlcdWQxMmFcdWQxMmJcdWQxMmNcdWQxMmRcdWQxMmVcdWQxMmZcdWQxMzJc''@;'; put 'put ''dWQxMzNcdWQxMzVcdWQxMzZcdWQxMzdcdWQxMzlcdWQxM2JcdWQxM2NcdWQxM2RcdWQxM2VcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQxM2ZcdWQxNDJcdWQxNDZcdWQxNDdcdWQxNDhcdWQxNDlcdWQxNGFcdWQxNGJcdWQxNGVcdWQxNGZcdWQxNTFcdWQxNTJcdWQx''@;'; put 'put ''NTNcdWQxNTVcdWQxNTZcdWQxNTdcdWQxNThcdWQxNTlcdWQxNWFcdWQxNWJcdWQxNWVcdWQxNjBcdWQxNjJcdWQxNjNcdWQxNjRcdWQxNjVcdWQxNjZcdWQxNjdcdWQxNjlcdWQxNmFcdWQxNmJcdWQxNmRcdWI1NDBcdWI1NDFcdWI1NDNcdWI1NDRcdWI1NDVcdWI1NGJcdWI1NGNcdWI1NGRc''@;'; put 'put ''dWI1NTBcdWI1NTRcdWI1NWNcdWI1NWRcdWI1NWZcdWI1NjBcdWI1NjFcdWI1YTBcdWI1YTFcdWI1YTRcdWI1YThcdWI1YWFcdWI1YWJcdWI1YjBcdWI1YjFcdWI1YjNcdWI1YjRcdWI1YjVcdWI1YmJcdWI1YmNcdWI1YmRcdWI1YzBcdWI1YzRcdWI1Y2NcdWI1Y2RcdWI1Y2ZcdWI1ZDBcdWI1''@;'; put 'put ''ZDFcdWI1ZDhcdWI1ZWNcdWI2MTBcdWI2MTFcdWI2MTRcdWI2MThcdWI2MjVcdWI2MmNcdWI2MzRcdWI2NDhcdWI2NjRcdWI2NjhcdWI2OWNcdWI2OWRcdWI2YTBcdWI2YTRcdWI2YWJcdWI2YWNcdWI2YjFcdWI2ZDRcdWI2ZjBcdWI2ZjRcdWI2ZjhcdWI3MDBcdWI3MDFcdWI3MDVcdWI3Mjhc''@;'; put 'put ''dWI3MjlcdWI3MmNcdWI3MmZcdWI3MzBcdWI3MzhcdWI3MzlcdWI3M2JcdWI3NDRcdWI3NDhcdWI3NGNcdWI3NTRcdWI3NTVcdWI3NjBcdWI3NjRcdWI3NjhcdWI3NzBcdWI3NzFcdWI3NzNcdWI3NzVcdWI3N2NcdWI3N2RcdWI3ODBcdWI3ODRcdWI3OGNcdWI3OGRcdWI3OGZcdWI3OTBcdWI3''@;'; put 'put ''OTFcdWI3OTJcdWI3OTZcdWI3OTdcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4Ml1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTgyXVtFXV09NDY1OTIrRSxMWzQ2NTkyK0VdPUJbMTgyXVtFXSk7Zm9yKEJbMTgzXT0iXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMTZlXHVkMTZmXHVkMTcwXHVkMTcxXHVkMTcyXHVkMTczXHVkMTc0XHVkMTc1XHVkMTc2XHVkMTc3XHVkMTc4XHVkMTc5XHVkMTdhXHVkMTdiXHVkMTdkXHVkMTdlXHVkMTdmXHVkMTgwXHVkMTgxXHVk''@;'; put 'put ''MTgyXHVkMTgzXHVkMTg1XHVkMTg2XHVkMTg3XHVkMTg5XHVkMThhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMThiXHVkMThjXHVkMThkXHVkMThlXHVkMThmXHVkMTkwXHVkMTkxXHVkMTkyXHVkMTkzXHVkMTk0XHVkMTk1XHVkMTk2XHVkMTk3XHVkMTk4XHVkMTk5''@;'; put 'put ''XHVkMTlhXHVkMTliXHVkMTljXHVkMTlkXHVkMTllXHVkMTlmXHVkMWEyXHVkMWEzXHVkMWE1XHVkMWE2XHVkMWE3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMWE5XHVkMWFhXHVkMWFiXHVkMWFjXHVkMWFkXHVkMWFlXHVkMWFmXHVkMWIyXHVkMWI0XHVkMWI2XHVk''@;'; put 'put ''MWI3XHVkMWI4XHVkMWI5XHVkMWJiXHVkMWJkXHVkMWJlXHVkMWJmXHVkMWMxXHVkMWMyXHVkMWMzXHVkMWM0XHVkMWM1XHVkMWM2XHVkMWM3XHVkMWM4XHVkMWM5XHVkMWNhXHVkMWNiXHVkMWNjXHVkMWNkXHVkMWNlXHVkMWNmXHViNzk4XHViNzk5XHViNzljXHViN2EwXHViN2E4XHViN2E5''@;'; put 'put ''XHViN2FiXHViN2FjXHViN2FkXHViN2I0XHViN2I1XHViN2I4XHViN2M3XHViN2M5XHViN2VjXHViN2VkXHViN2YwXHViN2Y0XHViN2ZjXHViN2ZkXHViN2ZmXHViODAwXHViODAxXHViODA3XHViODA4XHViODA5XHViODBjXHViODEwXHViODE4XHViODE5XHViODFiXHViODFkXHViODI0XHVi''@;'; put 'put ''ODI1XHViODI4XHViODJjXHViODM0XHViODM1XHViODM3XHViODM4XHViODM5XHViODQwXHViODQ0XHViODUxXHViODUzXHViODVjXHViODVkXHViODYwXHViODY0XHViODZjXHViODZkXHViODZmXHViODcxXHViODc4XHViODdjXHViODhkXHViOGE4XHViOGIwXHViOGI0XHViOGI4XHViOGMw''@;'; put 'put ''XHViOGMxXHViOGMzXHViOGM1XHViOGNjXHViOGQwXHViOGQ0XHViOGRkXHViOGRmXHViOGUxXHViOGU4XHViOGU5XHViOGVjXHViOGYwXHViOGY4XHViOGY5XHViOGZiXHViOGZkXHViOTA0XHViOTE4XHViOTIwXHViOTNjXHViOTNkXHViOTQwXHViOTQ0XHViOTRjXHViOTRmXHViOTUxXHVi''@;'; put 'put ''OTU4XHViOTU5XHViOTVjXHViOTYwXHViOTY4XHViOTY5XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTgzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODNdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE4M11bRV1dPTQ2ODQ4K0UsTFs0Njg0OCtFXT1CWzE4M11bRV0pO2ZvcihCWzE4NF09''@;'; put 'put ''Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDFkMFx1ZDFkMVx1ZDFkMlx1ZDFkM1x1ZDFkNFx1ZDFkNVx1ZDFkNlx1ZDFkN1x1ZDFkOVx1ZDFkYVx1ZDFkYlx1ZDFkY1x1ZDFkZFx1ZDFkZVx1ZDFkZlx1ZDFlMFx1ZDFlMVx1''@;'; put 'put ''ZDFlMlx1ZDFlM1x1ZDFlNFx1ZDFlNVx1ZDFlNlx1ZDFlN1x1ZDFlOFx1ZDFlOVx1ZDFlYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDFlYlx1ZDFlY1x1ZDFlZFx1ZDFlZVx1ZDFlZlx1ZDFmMFx1ZDFmMVx1ZDFmMlx1ZDFmM1x1ZDFmNVx1ZDFmNlx1ZDFmN1x1ZDFm''@;'; put 'put ''OVx1ZDFmYVx1ZDFmYlx1ZDFmY1x1ZDFmZFx1ZDFmZVx1ZDFmZlx1ZDIwMFx1ZDIwMVx1ZDIwMlx1ZDIwM1x1ZDIwNFx1ZDIwNVx1ZDIwNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDIwOFx1ZDIwYVx1ZDIwYlx1ZDIwY1x1ZDIwZFx1ZDIwZVx1ZDIwZlx1ZDIxMVx1''@;'; put 'put ''ZDIxMlx1ZDIxM1x1ZDIxNFx1ZDIxNVx1ZDIxNlx1ZDIxN1x1ZDIxOFx1ZDIxOVx1ZDIxYVx1ZDIxYlx1ZDIxY1x1ZDIxZFx1ZDIxZVx1ZDIxZlx1ZDIyMFx1ZDIyMVx1ZDIyMlx1ZDIyM1x1ZDIyNFx1ZDIyNVx1ZDIyNlx1ZDIyN1x1ZDIyOFx1ZDIyOVx1Yjk2Ylx1Yjk2ZFx1Yjk3NFx1Yjk3''@;'; put 'put ''NVx1Yjk3OFx1Yjk3Y1x1Yjk4NFx1Yjk4NVx1Yjk4N1x1Yjk4OVx1Yjk4YVx1Yjk4ZFx1Yjk4ZVx1YjlhY1x1YjlhZFx1YjliMFx1YjliNFx1YjliY1x1YjliZFx1YjliZlx1YjljMVx1YjljOFx1YjljOVx1YjljY1x1YjljZVx1YjljZlx1YjlkMFx1YjlkMVx1YjlkMlx1YjlkOFx1YjlkOVx1''@;'; put 'put ''YjlkYlx1YjlkZFx1YjlkZVx1YjllMVx1YjllM1x1YjllNFx1YjllNVx1YjllOFx1YjllY1x1YjlmNFx1YjlmNVx1YjlmN1x1YjlmOFx1YjlmOVx1YjlmYVx1YmEwMFx1YmEwMVx1YmEwOFx1YmExNVx1YmEzOFx1YmEzOVx1YmEzY1x1YmE0MFx1YmE0Mlx1YmE0OFx1YmE0OVx1YmE0Ylx1YmE0''@;'; put 'put ''ZFx1YmE0ZVx1YmE1M1x1YmE1NFx1YmE1NVx1YmE1OFx1YmE1Y1x1YmE2NFx1YmE2NVx1YmE2N1x1YmE2OFx1YmE2OVx1YmE3MFx1YmE3MVx1YmE3NFx1YmE3OFx1YmE4M1x1YmE4NFx1YmE4NVx1YmE4N1x1YmE4Y1x1YmFhOFx1YmFhOVx1YmFhYlx1YmFhY1x1YmFiMFx1YmFiMlx1YmFiOFx1''@;'; put 'put ''YmFiOVx1YmFiYlx1YmFiZFx1YmFjNFx1YmFjOFx1YmFkOFx1YmFkOVx1YmFmY1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4NF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTg0XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxODRdW0VdXT00NzEwNCtFLExbNDcxMDQrRV09QlsxODRdW0Vd''@;'; put 'put ''KTtmb3IoQlsxODVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQyMmFcdWQyMmJcdWQyMmVcdWQyMmZcdWQyMzFcdWQyMzJcdWQyMzNcdWQyMzVcdWQyMzZcdWQyMzdcdWQyMzhcdWQyMzlcdWQyM2FcdWQyM2JcdWQyM2Vc''@;'; put 'put ''dWQyNDBcdWQyNDJcdWQyNDNcdWQyNDRcdWQyNDVcdWQyNDZcdWQyNDdcdWQyNDlcdWQyNGFcdWQyNGJcdWQyNGNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQyNGRcdWQyNGVcdWQyNGZcdWQyNTBcdWQyNTFcdWQyNTJcdWQyNTNcdWQyNTRcdWQyNTVcdWQyNTZcdWQy''@;'; put 'put ''NTdcdWQyNThcdWQyNTlcdWQyNWFcdWQyNWJcdWQyNWRcdWQyNWVcdWQyNWZcdWQyNjBcdWQyNjFcdWQyNjJcdWQyNjNcdWQyNjVcdWQyNjZcdWQyNjdcdWQyNjhcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQyNjlcdWQyNmFcdWQyNmJcdWQyNmNcdWQyNmRcdWQyNmVc''@;'; put 'put ''dWQyNmZcdWQyNzBcdWQyNzFcdWQyNzJcdWQyNzNcdWQyNzRcdWQyNzVcdWQyNzZcdWQyNzdcdWQyNzhcdWQyNzlcdWQyN2FcdWQyN2JcdWQyN2NcdWQyN2RcdWQyN2VcdWQyN2ZcdWQyODJcdWQyODNcdWQyODVcdWQyODZcdWQyODdcdWQyODlcdWQyOGFcdWQyOGJcdWQyOGNcdWJiMDBcdWJi''@;'; put 'put ''MDRcdWJiMGRcdWJiMGZcdWJiMTFcdWJiMThcdWJiMWNcdWJiMjBcdWJiMjlcdWJiMmJcdWJiMzRcdWJiMzVcdWJiMzZcdWJiMzhcdWJiM2JcdWJiM2NcdWJiM2RcdWJiM2VcdWJiNDRcdWJiNDVcdWJiNDdcdWJiNDlcdWJiNGRcdWJiNGZcdWJiNTBcdWJiNTRcdWJiNThcdWJiNjFcdWJiNjNc''@;'; put 'put ''dWJiNmNcdWJiODhcdWJiOGNcdWJiOTBcdWJiYTRcdWJiYThcdWJiYWNcdWJiYjRcdWJiYjdcdWJiYzBcdWJiYzRcdWJiYzhcdWJiZDBcdWJiZDNcdWJiZjhcdWJiZjlcdWJiZmNcdWJiZmZcdWJjMDBcdWJjMDJcdWJjMDhcdWJjMDlcdWJjMGJcdWJjMGNcdWJjMGRcdWJjMGZcdWJjMTFcdWJj''@;'; put 'put ''MTRcdWJjMTVcdWJjMTZcdWJjMTdcdWJjMThcdWJjMWJcdWJjMWNcdWJjMWRcdWJjMWVcdWJjMWZcdWJjMjRcdWJjMjVcdWJjMjdcdWJjMjlcdWJjMmRcdWJjMzBcdWJjMzFcdWJjMzRcdWJjMzhcdWJjNDBcdWJjNDFcdWJjNDNcdWJjNDRcdWJjNDVcdWJjNDlcdWJjNGNcdWJjNGRcdWJjNTBc''@;'; put 'put ''dWJjNWRcdWJjODRcdWJjODVcdWJjODhcdWJjOGJcdWJjOGNcdWJjOGVcdWJjOTRcdWJjOTVcdWJjOTdcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4NV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTg1XVtFXV09NDczNjArRSxMWzQ3MzYw''@;'; put 'put ''K0VdPUJbMTg1XVtFXSk7Zm9yKEJbMTg2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMjhkXHVkMjhlXHVkMjhmXHVkMjkyXHVkMjkzXHVkMjk0XHVkMjk2XHVkMjk3XHVkMjk4XHVkMjk5XHVkMjlhXHVkMjliXHVkMjlk''@;'; put 'put ''XHVkMjllXHVkMjlmXHVkMmExXHVkMmEyXHVkMmEzXHVkMmE1XHVkMmE2XHVkMmE3XHVkMmE4XHVkMmE5XHVkMmFhXHVkMmFiXHVkMmFkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMmFlXHVkMmFmXHVkMmIwXHVkMmIyXHVkMmIzXHVkMmI0XHVkMmI1XHVkMmI2XHVk''@;'; put 'put ''MmI3XHVkMmJhXHVkMmJiXHVkMmJkXHVkMmJlXHVkMmMxXHVkMmMzXHVkMmM0XHVkMmM1XHVkMmM2XHVkMmM3XHVkMmNhXHVkMmNjXHVkMmNkXHVkMmNlXHVkMmNmXHVkMmQwXHVkMmQxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMmQyXHVkMmQzXHVkMmQ1XHVkMmQ2''@;'; put 'put ''XHVkMmQ3XHVkMmQ5XHVkMmRhXHVkMmRiXHVkMmRkXHVkMmRlXHVkMmRmXHVkMmUwXHVkMmUxXHVkMmUyXHVkMmUzXHVkMmU2XHVkMmU3XHVkMmU4XHVkMmU5XHVkMmVhXHVkMmViXHVkMmVjXHVkMmVkXHVkMmVlXHVkMmVmXHVkMmYyXHVkMmYzXHVkMmY1XHVkMmY2XHVkMmY3XHVkMmY5XHVk''@;'; put 'put ''MmZhXHViYzk5XHViYzlhXHViY2EwXHViY2ExXHViY2E0XHViY2E3XHViY2E4XHViY2IwXHViY2IxXHViY2IzXHViY2I0XHViY2I1XHViY2JjXHViY2JkXHViY2MwXHViY2M0XHViY2NkXHViY2NmXHViY2QwXHViY2QxXHViY2Q1XHViY2Q4XHViY2RjXHViY2Y0XHViY2Y1XHViY2Y2XHViY2Y4''@;'; put 'put ''XHViY2ZjXHViZDA0XHViZDA1XHViZDA3XHViZDA5XHViZDEwXHViZDE0XHViZDI0XHViZDJjXHViZDQwXHViZDQ4XHViZDQ5XHViZDRjXHViZDUwXHViZDU4XHViZDU5XHViZDY0XHViZDY4XHViZDgwXHViZDgxXHViZDg0XHViZDg3XHViZDg4XHViZDg5XHViZDhhXHViZDkwXHViZDkxXHVi''@;'; put 'put ''ZDkzXHViZDk1XHViZDk5XHViZDlhXHViZDljXHViZGE0XHViZGIwXHViZGI4XHViZGQ0XHViZGQ1XHViZGQ4XHViZGRjXHViZGU5XHViZGYwXHViZGY0XHViZGY4XHViZTAwXHViZTAzXHViZTA1XHViZTBjXHViZTBkXHViZTEwXHViZTE0XHViZTFjXHViZTFkXHViZTFmXHViZTQ0XHViZTQ1''@;'; put 'put ''XHViZTQ4XHViZTRjXHViZTRlXHViZTU0XHViZTU1XHViZTU3XHViZTU5XHViZTVhXHViZTViXHViZTYwXHViZTYxXHViZTY0XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTg2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODZdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE4Nl1bRV1dPTQ3''@;'; put 'put ''NjE2K0UsTFs0NzYxNitFXT1CWzE4Nl1bRV0pO2ZvcihCWzE4N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDJmYlx1ZDJmY1x1ZDJmZFx1ZDJmZVx1ZDJmZlx1ZDMwMlx1ZDMwNFx1ZDMwNlx1ZDMwN1x1ZDMwOFx1ZDMw''@;'; put 'put ''OVx1ZDMwYVx1ZDMwYlx1ZDMwZlx1ZDMxMVx1ZDMxMlx1ZDMxM1x1ZDMxNVx1ZDMxN1x1ZDMxOFx1ZDMxOVx1ZDMxYVx1ZDMxYlx1ZDMxZVx1ZDMyMlx1ZDMyM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDMyNFx1ZDMyNlx1ZDMyN1x1ZDMyYVx1ZDMyYlx1ZDMyZFx1''@;'; put 'put ''ZDMyZVx1ZDMyZlx1ZDMzMVx1ZDMzMlx1ZDMzM1x1ZDMzNFx1ZDMzNVx1ZDMzNlx1ZDMzN1x1ZDMzYVx1ZDMzZVx1ZDMzZlx1ZDM0MFx1ZDM0MVx1ZDM0Mlx1ZDM0M1x1ZDM0Nlx1ZDM0N1x1ZDM0OFx1ZDM0OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDM0YVx1ZDM0''@;'; put 'put ''Ylx1ZDM0Y1x1ZDM0ZFx1ZDM0ZVx1ZDM0Zlx1ZDM1MFx1ZDM1MVx1ZDM1Mlx1ZDM1M1x1ZDM1NFx1ZDM1NVx1ZDM1Nlx1ZDM1N1x1ZDM1OFx1ZDM1OVx1ZDM1YVx1ZDM1Ylx1ZDM1Y1x1ZDM1ZFx1ZDM1ZVx1ZDM1Zlx1ZDM2MFx1ZDM2MVx1ZDM2Mlx1ZDM2M1x1ZDM2NFx1ZDM2NVx1ZDM2Nlx1''@;'; put 'put ''ZDM2N1x1ZDM2OFx1ZDM2OVx1YmU2OFx1YmU2YVx1YmU3MFx1YmU3MVx1YmU3M1x1YmU3NFx1YmU3NVx1YmU3Ylx1YmU3Y1x1YmU3ZFx1YmU4MFx1YmU4NFx1YmU4Y1x1YmU4ZFx1YmU4Zlx1YmU5MFx1YmU5MVx1YmU5OFx1YmU5OVx1YmVhOFx1YmVkMFx1YmVkMVx1YmVkNFx1YmVkN1x1YmVk''@;'; put 'put ''OFx1YmVlMFx1YmVlM1x1YmVlNFx1YmVlNVx1YmVlY1x1YmYwMVx1YmYwOFx1YmYwOVx1YmYxOFx1YmYxOVx1YmYxYlx1YmYxY1x1YmYxZFx1YmY0MFx1YmY0MVx1YmY0NFx1YmY0OFx1YmY1MFx1YmY1MVx1YmY1NVx1YmY5NFx1YmZiMFx1YmZjNVx1YmZjY1x1YmZjZFx1YmZkMFx1YmZkNFx1''@;'; put 'put ''YmZkY1x1YmZkZlx1YmZlMVx1YzAzY1x1YzA1MVx1YzA1OFx1YzA1Y1x1YzA2MFx1YzA2OFx1YzA2OVx1YzA5MFx1YzA5MVx1YzA5NFx1YzA5OFx1YzBhMFx1YzBhMVx1YzBhM1x1YzBhNVx1YzBhY1x1YzBhZFx1YzBhZlx1YzBiMFx1YzBiM1x1YzBiNFx1YzBiNVx1YzBiNlx1YzBiY1x1YzBi''@;'; put 'put ''ZFx1YzBiZlx1YzBjMFx1YzBjMVx1YzBjNVx1YzBjOFx1YzBjOVx1YzBjY1x1YzBkMFx1YzBkOFx1YzBkOVx1YzBkYlx1YzBkY1x1YzBkZFx1YzBlNFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4N10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTg3XVtFXS5jaGFyQ29kZUF0KDApJiYobWVb''@;'; put 'put ''QlsxODddW0VdXT00Nzg3MitFLExbNDc4NzIrRV09QlsxODddW0VdKTtmb3IoQlsxODhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQzNmFcdWQzNmJcdWQzNmNcdWQzNmRcdWQzNmVcdWQzNmZcdWQzNzBcdWQzNzFcdWQz''@;'; put 'put ''NzJcdWQzNzNcdWQzNzRcdWQzNzVcdWQzNzZcdWQzNzdcdWQzNzhcdWQzNzlcdWQzN2FcdWQzN2JcdWQzN2VcdWQzN2ZcdWQzODFcdWQzODJcdWQzODNcdWQzODVcdWQzODZcdWQzODdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQzODhcdWQzODlcdWQzOGFcdWQzOGJc''@;'; put 'put ''dWQzOGVcdWQzOTJcdWQzOTNcdWQzOTRcdWQzOTVcdWQzOTZcdWQzOTdcdWQzOWFcdWQzOWJcdWQzOWRcdWQzOWVcdWQzOWZcdWQzYTFcdWQzYTJcdWQzYTNcdWQzYTRcdWQzYTVcdWQzYTZcdWQzYTdcdWQzYWFcdWQzYWNcdWQzYWVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWQzYWZcdWQzYjBcdWQzYjFcdWQzYjJcdWQzYjNcdWQzYjVcdWQzYjZcdWQzYjdcdWQzYjlcdWQzYmFcdWQzYmJcdWQzYmRcdWQzYmVcdWQzYmZcdWQzYzBcdWQzYzFcdWQzYzJcdWQzYzNcdWQzYzZcdWQzYzdcdWQzY2FcdWQzY2JcdWQzY2NcdWQzY2RcdWQzY2VcdWQzY2ZcdWQzZDFc''@;'; put 'put ''dWQzZDJcdWQzZDNcdWQzZDRcdWQzZDVcdWQzZDZcdWMwZTVcdWMwZThcdWMwZWNcdWMwZjRcdWMwZjVcdWMwZjdcdWMwZjlcdWMxMDBcdWMxMDRcdWMxMDhcdWMxMTBcdWMxMTVcdWMxMWNcdWMxMWRcdWMxMWVcdWMxMWZcdWMxMjBcdWMxMjNcdWMxMjRcdWMxMjZcdWMxMjdcdWMxMmNcdWMx''@;'; put 'put ''MmRcdWMxMmZcdWMxMzBcdWMxMzFcdWMxMzZcdWMxMzhcdWMxMzlcdWMxM2NcdWMxNDBcdWMxNDhcdWMxNDlcdWMxNGJcdWMxNGNcdWMxNGRcdWMxNTRcdWMxNTVcdWMxNThcdWMxNWNcdWMxNjRcdWMxNjVcdWMxNjdcdWMxNjhcdWMxNjlcdWMxNzBcdWMxNzRcdWMxNzhcdWMxODVcdWMxOGNc''@;'; put 'put ''dWMxOGRcdWMxOGVcdWMxOTBcdWMxOTRcdWMxOTZcdWMxOWNcdWMxOWRcdWMxOWZcdWMxYTFcdWMxYTVcdWMxYThcdWMxYTlcdWMxYWNcdWMxYjBcdWMxYmRcdWMxYzRcdWMxYzhcdWMxY2NcdWMxZDRcdWMxZDdcdWMxZDhcdWMxZTBcdWMxZTRcdWMxZThcdWMxZjBcdWMxZjFcdWMxZjNcdWMx''@;'; put 'put ''ZmNcdWMxZmRcdWMyMDBcdWMyMDRcdWMyMGNcdWMyMGRcdWMyMGZcdWMyMTFcdWMyMThcdWMyMTlcdWMyMWNcdWMyMWZcdWMyMjBcdWMyMjhcdWMyMjlcdWMyMmJcdWMyMmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4OF1bRV0uY2hhckNv''@;'; put 'put ''ZGVBdCgwKSYmKG1lW0JbMTg4XVtFXV09NDgxMjgrRSxMWzQ4MTI4K0VdPUJbMTg4XVtFXSk7Zm9yKEJbMTg5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkM2Q3XHVkM2Q5XHVkM2RhXHVkM2RiXHVkM2RjXHVkM2RkXHVk''@;'; put 'put ''M2RlXHVkM2RmXHVkM2UwXHVkM2UyXHVkM2U0XHVkM2U1XHVkM2U2XHVkM2U3XHVkM2U4XHVkM2U5XHVkM2VhXHVkM2ViXHVkM2VlXHVkM2VmXHVkM2YxXHVkM2YyXHVkM2YzXHVkM2Y1XHVkM2Y2XHVkM2Y3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkM2Y4XHVkM2Y5''@;'; put 'put ''XHVkM2ZhXHVkM2ZiXHVkM2ZlXHVkNDAwXHVkNDAyXHVkNDAzXHVkNDA0XHVkNDA1XHVkNDA2XHVkNDA3XHVkNDA5XHVkNDBhXHVkNDBiXHVkNDBjXHVkNDBkXHVkNDBlXHVkNDBmXHVkNDEwXHVkNDExXHVkNDEyXHVkNDEzXHVkNDE0XHVkNDE1XHVkNDE2XHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVkNDE3XHVkNDE4XHVkNDE5XHVkNDFhXHVkNDFiXHVkNDFjXHVkNDFlXHVkNDFmXHVkNDIwXHVkNDIxXHVkNDIyXHVkNDIzXHVkNDI0XHVkNDI1XHVkNDI2XHVkNDI3XHVkNDI4XHVkNDI5XHVkNDJhXHVkNDJiXHVkNDJjXHVkNDJkXHVkNDJlXHVkNDJmXHVkNDMw''@;'; put 'put ''XHVkNDMxXHVkNDMyXHVkNDMzXHVkNDM0XHVkNDM1XHVkNDM2XHVkNDM3XHVjMjJmXHVjMjMxXHVjMjMyXHVjMjM0XHVjMjQ4XHVjMjUwXHVjMjUxXHVjMjU0XHVjMjU4XHVjMjYwXHVjMjY1XHVjMjZjXHVjMjZkXHVjMjcwXHVjMjc0XHVjMjdjXHVjMjdkXHVjMjdmXHVjMjgxXHVjMjg4XHVj''@;'; put 'put ''Mjg5XHVjMjkwXHVjMjk4XHVjMjliXHVjMjlkXHVjMmE0XHVjMmE1XHVjMmE4XHVjMmFjXHVjMmFkXHVjMmI0XHVjMmI1XHVjMmI3XHVjMmI5XHVjMmRjXHVjMmRkXHVjMmUwXHVjMmUzXHVjMmU0XHVjMmViXHVjMmVjXHVjMmVkXHVjMmVmXHVjMmYxXHVjMmY2XHVjMmY4XHVjMmY5XHVjMmZi''@;'; put 'put ''XHVjMmZjXHVjMzAwXHVjMzA4XHVjMzA5XHVjMzBjXHVjMzBkXHVjMzEzXHVjMzE0XHVjMzE1XHVjMzE4XHVjMzFjXHVjMzI0XHVjMzI1XHVjMzI4XHVjMzI5XHVjMzQ1XHVjMzY4XHVjMzY5XHVjMzZjXHVjMzcwXHVjMzcyXHVjMzc4XHVjMzc5XHVjMzdjXHVjMzdkXHVjMzg0XHVjMzg4XHVj''@;'; put 'put ''MzhjXHVjM2MwXHVjM2Q4XHVjM2Q5XHVjM2RjXHVjM2RmXHVjM2UwXHVjM2UyXHVjM2U4XHVjM2U5XHVjM2VkXHVjM2Y0XHVjM2Y1XHVjM2Y4XHVjNDA4XHVjNDEwXHVjNDI0XHVjNDJjXHVjNDMwXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTg5XS5sZW5ndGg7KytFKTY1NTMzIT09Qlsx''@;'; put 'put ''ODldW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE4OV1bRV1dPTQ4Mzg0K0UsTFs0ODM4NCtFXT1CWzE4OV1bRV0pO2ZvcihCWzE5MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDQzOFx1ZDQzOVx1ZDQzYVx1ZDQzYlx1''@;'; put 'put ''ZDQzY1x1ZDQzZFx1ZDQzZVx1ZDQzZlx1ZDQ0MVx1ZDQ0Mlx1ZDQ0M1x1ZDQ0NVx1ZDQ0Nlx1ZDQ0N1x1ZDQ0OFx1ZDQ0OVx1ZDQ0YVx1ZDQ0Ylx1ZDQ0Y1x1ZDQ0ZFx1ZDQ0ZVx1ZDQ0Zlx1ZDQ1MFx1ZDQ1MVx1ZDQ1Mlx1ZDQ1M1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZDQ1NFx1ZDQ1NVx1ZDQ1Nlx1ZDQ1N1x1ZDQ1OFx1ZDQ1OVx1ZDQ1YVx1ZDQ1Ylx1ZDQ1ZFx1ZDQ1ZVx1ZDQ1Zlx1ZDQ2MVx1ZDQ2Mlx1ZDQ2M1x1ZDQ2NVx1ZDQ2Nlx1ZDQ2N1x1ZDQ2OFx1ZDQ2OVx1ZDQ2YVx1ZDQ2Ylx1ZDQ2Y1x1ZDQ2ZVx1ZDQ3MFx1ZDQ3MVx1ZDQ3Mlx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDQ3M1x1ZDQ3NFx1ZDQ3NVx1ZDQ3Nlx1ZDQ3N1x1ZDQ3YVx1ZDQ3Ylx1ZDQ3ZFx1ZDQ3ZVx1ZDQ4MVx1ZDQ4M1x1ZDQ4NFx1ZDQ4NVx1ZDQ4Nlx1ZDQ4N1x1ZDQ4YVx1ZDQ4Y1x1ZDQ4ZVx1ZDQ4Zlx1ZDQ5MFx1ZDQ5MVx1ZDQ5Mlx1ZDQ5''@;'; put 'put ''M1x1ZDQ5NVx1ZDQ5Nlx1ZDQ5N1x1ZDQ5OFx1ZDQ5OVx1ZDQ5YVx1ZDQ5Ylx1ZDQ5Y1x1ZDQ5ZFx1YzQzNFx1YzQzY1x1YzQzZFx1YzQ0OFx1YzQ2NFx1YzQ2NVx1YzQ2OFx1YzQ2Y1x1YzQ3NFx1YzQ3NVx1YzQ3OVx1YzQ4MFx1YzQ5NFx1YzQ5Y1x1YzRiOFx1YzRiY1x1YzRlOVx1YzRmMFx1''@;'; put 'put ''YzRmMVx1YzRmNFx1YzRmOFx1YzRmYVx1YzRmZlx1YzUwMFx1YzUwMVx1YzUwY1x1YzUxMFx1YzUxNFx1YzUxY1x1YzUyOFx1YzUyOVx1YzUyY1x1YzUzMFx1YzUzOFx1YzUzOVx1YzUzYlx1YzUzZFx1YzU0NFx1YzU0NVx1YzU0OFx1YzU0OVx1YzU0YVx1YzU0Y1x1YzU0ZFx1YzU0ZVx1YzU1''@;'; put 'put ''M1x1YzU1NFx1YzU1NVx1YzU1N1x1YzU1OFx1YzU1OVx1YzU1ZFx1YzU1ZVx1YzU2MFx1YzU2MVx1YzU2NFx1YzU2OFx1YzU3MFx1YzU3MVx1YzU3M1x1YzU3NFx1YzU3NVx1YzU3Y1x1YzU3ZFx1YzU4MFx1YzU4NFx1YzU4N1x1YzU4Y1x1YzU4ZFx1YzU4Zlx1YzU5MVx1YzU5NVx1YzU5N1x1''@;'; put 'put ''YzU5OFx1YzU5Y1x1YzVhMFx1YzVhOVx1YzViNFx1YzViNVx1YzViOFx1YzViOVx1YzViYlx1YzViY1x1YzViZFx1YzViZVx1YzVjNFx1YzVjNVx1YzVjNlx1YzVjN1x1YzVjOFx1YzVjOVx1YzVjYVx1YzVjY1x1YzVjZVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5MF0ubGVuZ3RoOysr''@;'; put 'put ''RSk2NTUzMyE9PUJbMTkwXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxOTBdW0VdXT00ODY0MCtFLExbNDg2NDArRV09QlsxOTBdW0VdKTtmb3IoQlsxOTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ0OWVcdWQ0OWZc''@;'; put 'put ''dWQ0YTBcdWQ0YTFcdWQ0YTJcdWQ0YTNcdWQ0YTRcdWQ0YTVcdWQ0YTZcdWQ0YTdcdWQ0YThcdWQ0YWFcdWQ0YWJcdWQ0YWNcdWQ0YWRcdWQ0YWVcdWQ0YWZcdWQ0YjBcdWQ0YjFcdWQ0YjJcdWQ0YjNcdWQ0YjRcdWQ0YjVcdWQ0YjZcdWQ0YjdcdWQ0YjhcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWQ0YjlcdWQ0YmFcdWQ0YmJcdWQ0YmNcdWQ0YmRcdWQ0YmVcdWQ0YmZcdWQ0YzBcdWQ0YzFcdWQ0YzJcdWQ0YzNcdWQ0YzRcdWQ0YzVcdWQ0YzZcdWQ0YzdcdWQ0YzhcdWQ0YzlcdWQ0Y2FcdWQ0Y2JcdWQ0Y2RcdWQ0Y2VcdWQ0Y2ZcdWQ0ZDFcdWQ0ZDJcdWQ0ZDNc''@;'; put 'put ''dWQ0ZDVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ0ZDZcdWQ0ZDdcdWQ0ZDhcdWQ0ZDlcdWQ0ZGFcdWQ0ZGJcdWQ0ZGRcdWQ0ZGVcdWQ0ZTBcdWQ0ZTFcdWQ0ZTJcdWQ0ZTNcdWQ0ZTRcdWQ0ZTVcdWQ0ZTZcdWQ0ZTdcdWQ0ZTlcdWQ0ZWFcdWQ0ZWJcdWQ0ZWRcdWQ0''@;'; put 'put ''ZWVcdWQ0ZWZcdWQ0ZjFcdWQ0ZjJcdWQ0ZjNcdWQ0ZjRcdWQ0ZjVcdWQ0ZjZcdWQ0ZjdcdWQ0ZjlcdWQ0ZmFcdWQ0ZmNcdWM1ZDBcdWM1ZDFcdWM1ZDRcdWM1ZDhcdWM1ZTBcdWM1ZTFcdWM1ZTNcdWM1ZTVcdWM1ZWNcdWM1ZWRcdWM1ZWVcdWM1ZjBcdWM1ZjRcdWM1ZjZcdWM1ZjdcdWM1ZmNc''@;'; put 'put ''dWM1ZmRcdWM1ZmVcdWM1ZmZcdWM2MDBcdWM2MDFcdWM2MDVcdWM2MDZcdWM2MDdcdWM2MDhcdWM2MGNcdWM2MTBcdWM2MThcdWM2MTlcdWM2MWJcdWM2MWNcdWM2MjRcdWM2MjVcdWM2MjhcdWM2MmNcdWM2MmRcdWM2MmVcdWM2MzBcdWM2MzNcdWM2MzRcdWM2MzVcdWM2MzdcdWM2MzlcdWM2''@;'; put 'put ''M2JcdWM2NDBcdWM2NDFcdWM2NDRcdWM2NDhcdWM2NTBcdWM2NTFcdWM2NTNcdWM2NTRcdWM2NTVcdWM2NWNcdWM2NWRcdWM2NjBcdWM2NmNcdWM2NmZcdWM2NzFcdWM2NzhcdWM2NzlcdWM2N2NcdWM2ODBcdWM2ODhcdWM2ODlcdWM2OGJcdWM2OGRcdWM2OTRcdWM2OTVcdWM2OThcdWM2OWNc''@;'; put 'put ''dWM2YTRcdWM2YTVcdWM2YTdcdWM2YTlcdWM2YjBcdWM2YjFcdWM2YjRcdWM2YjhcdWM2YjlcdWM2YmFcdWM2YzBcdWM2YzFcdWM2YzNcdWM2YzVcdWM2Y2NcdWM2Y2RcdWM2ZDBcdWM2ZDRcdWM2ZGNcdWM2ZGRcdWM2ZTBcdWM2ZTFcdWM2ZThcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9Qlsx''@;'; put 'put ''OTFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5MV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTkxXVtFXV09NDg4OTYrRSxMWzQ4ODk2K0VdPUJbMTkxXVtFXSk7Zm9yKEJbMTkyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVkNGZlXHVkNGZmXHVkNTAwXHVkNTAxXHVkNTAyXHVkNTAzXHVkNTA1XHVkNTA2XHVkNTA3XHVkNTA5XHVkNTBhXHVkNTBiXHVkNTBkXHVkNTBlXHVkNTBmXHVkNTEwXHVkNTExXHVkNTEyXHVkNTEzXHVkNTE2XHVkNTE4XHVkNTE5XHVkNTFhXHVkNTFiXHVkNTFjXHVkNTFkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNTFlXHVkNTFmXHVkNTIwXHVkNTIxXHVkNTIyXHVkNTIzXHVkNTI0XHVkNTI1XHVkNTI2XHVkNTI3XHVkNTI4XHVkNTI5XHVkNTJhXHVkNTJiXHVkNTJjXHVkNTJkXHVkNTJlXHVkNTJmXHVkNTMwXHVkNTMxXHVkNTMyXHVkNTMzXHVkNTM0''@;'; put 'put ''XHVkNTM1XHVkNTM2XHVkNTM3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNTM4XHVkNTM5XHVkNTNhXHVkNTNiXHVkNTNlXHVkNTNmXHVkNTQxXHVkNTQyXHVkNTQzXHVkNTQ1XHVkNTQ2XHVkNTQ3XHVkNTQ4XHVkNTQ5XHVkNTRhXHVkNTRiXHVkNTRlXHVkNTUwXHVk''@;'; put 'put ''NTUyXHVkNTUzXHVkNTU0XHVkNTU1XHVkNTU2XHVkNTU3XHVkNTVhXHVkNTViXHVkNTVkXHVkNTVlXHVkNTVmXHVkNTYxXHVkNTYyXHVkNTYzXHVjNmU5XHVjNmVjXHVjNmYwXHVjNmY4XHVjNmY5XHVjNmZkXHVjNzA0XHVjNzA1XHVjNzA4XHVjNzBjXHVjNzE0XHVjNzE1XHVjNzE3XHVjNzE5''@;'; put 'put ''XHVjNzIwXHVjNzIxXHVjNzI0XHVjNzI4XHVjNzMwXHVjNzMxXHVjNzMzXHVjNzM1XHVjNzM3XHVjNzNjXHVjNzNkXHVjNzQwXHVjNzQ0XHVjNzRhXHVjNzRjXHVjNzRkXHVjNzRmXHVjNzUxXHVjNzUyXHVjNzUzXHVjNzU0XHVjNzU1XHVjNzU2XHVjNzU3XHVjNzU4XHVjNzVjXHVjNzYwXHVj''@;'; put 'put ''NzY4XHVjNzZiXHVjNzc0XHVjNzc1XHVjNzc4XHVjNzdjXHVjNzdkXHVjNzdlXHVjNzgzXHVjNzg0XHVjNzg1XHVjNzg3XHVjNzg4XHVjNzg5XHVjNzhhXHVjNzhlXHVjNzkwXHVjNzkxXHVjNzk0XHVjNzk2XHVjNzk3XHVjNzk4XHVjNzlhXHVjN2EwXHVjN2ExXHVjN2EzXHVjN2E0XHVjN2E1''@;'; put 'put ''XHVjN2E2XHVjN2FjXHVjN2FkXHVjN2IwXHVjN2I0XHVjN2JjXHVjN2JkXHVjN2JmXHVjN2MwXHVjN2MxXHVjN2M4XHVjN2M5XHVjN2NjXHVjN2NlXHVjN2QwXHVjN2Q4XHVjN2RkXHVjN2U0XHVjN2U4XHVjN2VjXHVjODAwXHVjODAxXHVjODA0XHVjODA4XHVjODBhXHVmZmZkIi5zcGxpdCgi''@;'; put 'put ''IiksRT0wO0UhPUJbMTkyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTJdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE5Ml1bRV1dPTQ5MTUyK0UsTFs0OTE1MitFXT1CWzE5Ml1bRV0pO2ZvcihCWzE5M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZDU2NFx1ZDU2Nlx1ZDU2N1x1ZDU2YVx1ZDU2Y1x1ZDU2ZVx1ZDU2Zlx1ZDU3MFx1ZDU3MVx1ZDU3Mlx1ZDU3M1x1ZDU3Nlx1ZDU3N1x1ZDU3OVx1ZDU3YVx1ZDU3Ylx1ZDU3ZFx1ZDU3ZVx1ZDU3Zlx1ZDU4MFx1ZDU4MVx1ZDU4Mlx1ZDU4M1x1ZDU4Nlx1ZDU4YVx1''@;'; put 'put ''ZDU4Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDU4Y1x1ZDU4ZFx1ZDU4ZVx1ZDU4Zlx1ZDU5MVx1ZDU5Mlx1ZDU5M1x1ZDU5NFx1ZDU5NVx1ZDU5Nlx1ZDU5N1x1ZDU5OFx1ZDU5OVx1ZDU5YVx1ZDU5Ylx1ZDU5Y1x1ZDU5ZFx1ZDU5ZVx1ZDU5Zlx1ZDVhMFx1ZDVh''@;'; put 'put ''MVx1ZDVhMlx1ZDVhM1x1ZDVhNFx1ZDVhNlx1ZDVhN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDVhOFx1ZDVhOVx1ZDVhYVx1ZDVhYlx1ZDVhY1x1ZDVhZFx1ZDVhZVx1ZDVhZlx1ZDViMFx1ZDViMVx1ZDViMlx1ZDViM1x1ZDViNFx1ZDViNVx1ZDViNlx1ZDViN1x1''@;'; put 'put ''ZDViOFx1ZDViOVx1ZDViYVx1ZDViYlx1ZDViY1x1ZDViZFx1ZDViZVx1ZDViZlx1ZDVjMFx1ZDVjMVx1ZDVjMlx1ZDVjM1x1ZDVjNFx1ZDVjNVx1ZDVjNlx1ZDVjN1x1YzgxMFx1YzgxMVx1YzgxM1x1YzgxNVx1YzgxNlx1YzgxY1x1YzgxZFx1YzgyMFx1YzgyNFx1YzgyY1x1YzgyZFx1Yzgy''@;'; put 'put ''Zlx1YzgzMVx1YzgzOFx1YzgzY1x1Yzg0MFx1Yzg0OFx1Yzg0OVx1Yzg0Y1x1Yzg0ZFx1Yzg1NFx1Yzg3MFx1Yzg3MVx1Yzg3NFx1Yzg3OFx1Yzg3YVx1Yzg4MFx1Yzg4MVx1Yzg4M1x1Yzg4NVx1Yzg4Nlx1Yzg4N1x1Yzg4Ylx1Yzg4Y1x1Yzg4ZFx1Yzg5NFx1Yzg5ZFx1Yzg5Zlx1YzhhMVx1''@;'; put 'put ''YzhhOFx1YzhiY1x1YzhiZFx1YzhjNFx1YzhjOFx1YzhjY1x1YzhkNFx1YzhkNVx1YzhkN1x1YzhkOVx1YzhlMFx1YzhlMVx1YzhlNFx1YzhmNVx1YzhmY1x1YzhmZFx1YzkwMFx1YzkwNFx1YzkwNVx1YzkwNlx1YzkwY1x1YzkwZFx1YzkwZlx1YzkxMVx1YzkxOFx1YzkyY1x1YzkzNFx1Yzk1''@;'; put 'put ''MFx1Yzk1MVx1Yzk1NFx1Yzk1OFx1Yzk2MFx1Yzk2MVx1Yzk2M1x1Yzk2Y1x1Yzk3MFx1Yzk3NFx1Yzk3Y1x1Yzk4OFx1Yzk4OVx1Yzk4Y1x1Yzk5MFx1Yzk5OFx1Yzk5OVx1Yzk5Ylx1Yzk5ZFx1YzljMFx1YzljMVx1YzljNFx1YzljN1x1YzljOFx1YzljYVx1YzlkMFx1YzlkMVx1YzlkM1x1''@;'; put 'put ''ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5M10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTkzXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxOTNdW0VdXT00OTQwOCtFLExbNDk0MDgrRV09QlsxOTNdW0VdKTtmb3IoQlsxOTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ1Y2FcdWQ1Y2JcdWQ1Y2RcdWQ1Y2VcdWQ1Y2ZcdWQ1ZDFcdWQ1ZDNcdWQ1ZDRcdWQ1ZDVcdWQ1ZDZcdWQ1ZDdcdWQ1ZGFcdWQ1ZGNcdWQ1ZGVcdWQ1ZGZcdWQ1ZTBcdWQ1ZTFcdWQ1ZTJcdWQ1ZTNcdWQ1ZTZcdWQ1ZTdcdWQ1ZTlcdWQ1ZWFc''@;'; put 'put ''dWQ1ZWJcdWQ1ZWRcdWQ1ZWVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ1ZWZcdWQ1ZjBcdWQ1ZjFcdWQ1ZjJcdWQ1ZjNcdWQ1ZjZcdWQ1ZjhcdWQ1ZmFcdWQ1ZmJcdWQ1ZmNcdWQ1ZmRcdWQ1ZmVcdWQ1ZmZcdWQ2MDJcdWQ2MDNcdWQ2MDVcdWQ2MDZcdWQ2MDdcdWQ2''@;'; put 'put ''MDlcdWQ2MGFcdWQ2MGJcdWQ2MGNcdWQ2MGRcdWQ2MGVcdWQ2MGZcdWQ2MTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ2MTZcdWQ2MTdcdWQ2MThcdWQ2MTlcdWQ2MWFcdWQ2MWJcdWQ2MWRcdWQ2MWVcdWQ2MWZcdWQ2MjFcdWQ2MjJcdWQ2MjNcdWQ2MjVcdWQ2MjZc''@;'; put 'put ''dWQ2MjdcdWQ2MjhcdWQ2MjlcdWQ2MmFcdWQ2MmJcdWQ2MmNcdWQ2MmVcdWQ2MmZcdWQ2MzBcdWQ2MzFcdWQ2MzJcdWQ2MzNcdWQ2MzRcdWQ2MzVcdWQ2MzZcdWQ2MzdcdWQ2M2FcdWQ2M2JcdWM5ZDVcdWM5ZDZcdWM5ZDlcdWM5ZGFcdWM5ZGNcdWM5ZGRcdWM5ZTBcdWM5ZTJcdWM5ZTRcdWM5''@;'; put 'put ''ZTdcdWM5ZWNcdWM5ZWRcdWM5ZWZcdWM5ZjBcdWM5ZjFcdWM5ZjhcdWM5ZjlcdWM5ZmNcdWNhMDBcdWNhMDhcdWNhMDlcdWNhMGJcdWNhMGNcdWNhMGRcdWNhMTRcdWNhMThcdWNhMjlcdWNhNGNcdWNhNGRcdWNhNTBcdWNhNTRcdWNhNWNcdWNhNWRcdWNhNWZcdWNhNjBcdWNhNjFcdWNhNjhc''@;'; put 'put ''dWNhN2RcdWNhODRcdWNhOThcdWNhYmNcdWNhYmRcdWNhYzBcdWNhYzRcdWNhY2NcdWNhY2RcdWNhY2ZcdWNhZDFcdWNhZDNcdWNhZDhcdWNhZDlcdWNhZTBcdWNhZWNcdWNhZjRcdWNiMDhcdWNiMTBcdWNiMTRcdWNiMThcdWNiMjBcdWNiMjFcdWNiNDFcdWNiNDhcdWNiNDlcdWNiNGNcdWNi''@;'; put 'put ''NTBcdWNiNThcdWNiNTlcdWNiNWRcdWNiNjRcdWNiNzhcdWNiNzlcdWNiOWNcdWNiYjhcdWNiZDRcdWNiZTRcdWNiZTdcdWNiZTlcdWNjMGNcdWNjMGRcdWNjMTBcdWNjMTRcdWNjMWNcdWNjMWRcdWNjMjFcdWNjMjJcdWNjMjdcdWNjMjhcdWNjMjlcdWNjMmNcdWNjMmVcdWNjMzBcdWNjMzhc''@;'; put 'put ''dWNjMzlcdWNjM2JcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5NF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTk0XVtFXV09NDk2NjQrRSxMWzQ5NjY0K0VdPUJbMTk0XVtFXSk7Zm9yKEJbMTk1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNjNkXHVkNjNlXHVkNjNmXHVkNjQxXHVkNjQyXHVkNjQzXHVkNjQ0XHVkNjQ2XHVkNjQ3XHVkNjRhXHVkNjRjXHVkNjRlXHVkNjRmXHVkNjUwXHVkNjUyXHVkNjUzXHVkNjU2XHVkNjU3XHVkNjU5XHVkNjVhXHVkNjVi''@;'; put 'put ''XHVkNjVkXHVkNjVlXHVkNjVmXHVkNjYwXHVkNjYxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNjYyXHVkNjYzXHVkNjY0XHVkNjY1XHVkNjY2XHVkNjY4XHVkNjZhXHVkNjZiXHVkNjZjXHVkNjZkXHVkNjZlXHVkNjZmXHVkNjcyXHVkNjczXHVkNjc1XHVkNjc2XHVk''@;'; put 'put ''Njc3XHVkNjc4XHVkNjc5XHVkNjdhXHVkNjdiXHVkNjdjXHVkNjdkXHVkNjdlXHVkNjdmXHVkNjgwXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNjgxXHVkNjgyXHVkNjg0XHVkNjg2XHVkNjg3XHVkNjg4XHVkNjg5XHVkNjhhXHVkNjhiXHVkNjhlXHVkNjhmXHVkNjkx''@;'; put 'put ''XHVkNjkyXHVkNjkzXHVkNjk1XHVkNjk2XHVkNjk3XHVkNjk4XHVkNjk5XHVkNjlhXHVkNjliXHVkNjljXHVkNjllXHVkNmEwXHVkNmEyXHVkNmEzXHVkNmE0XHVkNmE1XHVkNmE2XHVkNmE3XHVkNmE5XHVkNmFhXHVjYzNjXHVjYzNkXHVjYzNlXHVjYzQ0XHVjYzQ1XHVjYzQ4XHVjYzRjXHVj''@;'; put 'put ''YzU0XHVjYzU1XHVjYzU3XHVjYzU4XHVjYzU5XHVjYzYwXHVjYzY0XHVjYzY2XHVjYzY4XHVjYzcwXHVjYzc1XHVjYzk4XHVjYzk5XHVjYzljXHVjY2EwXHVjY2E4XHVjY2E5XHVjY2FiXHVjY2FjXHVjY2FkXHVjY2I0XHVjY2I1XHVjY2I4XHVjY2JjXHVjY2M0XHVjY2M1XHVjY2M3XHVjY2M5''@;'; put 'put ''XHVjY2QwXHVjY2Q0XHVjY2U0XHVjY2VjXHVjY2YwXHVjZDAxXHVjZDA4XHVjZDA5XHVjZDBjXHVjZDEwXHVjZDE4XHVjZDE5XHVjZDFiXHVjZDFkXHVjZDI0XHVjZDI4XHVjZDJjXHVjZDM5XHVjZDVjXHVjZDYwXHVjZDY0XHVjZDZjXHVjZDZkXHVjZDZmXHVjZDcxXHVjZDc4XHVjZDg4XHVj''@;'; put 'put ''ZDk0XHVjZDk1XHVjZDk4XHVjZDljXHVjZGE0XHVjZGE1XHVjZGE3XHVjZGE5XHVjZGIwXHVjZGM0XHVjZGNjXHVjZGQwXHVjZGU4XHVjZGVjXHVjZGYwXHVjZGY4XHVjZGY5XHVjZGZiXHVjZGZkXHVjZTA0XHVjZTA4XHVjZTBjXHVjZTE0XHVjZTE5XHVjZTIwXHVjZTIxXHVjZTI0XHVjZTI4''@;'; put 'put ''XHVjZTMwXHVjZTMxXHVjZTMzXHVjZTM1XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTk1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTVdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE5NV1bRV1dPTQ5OTIwK0UsTFs0OTkyMCtFXT1CWzE5NV1bRV0pO2ZvcihCWzE5Nl09Ilx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDZhYlx1ZDZhZFx1ZDZhZVx1ZDZhZlx1ZDZiMVx1ZDZiMlx1ZDZiM1x1ZDZiNFx1ZDZiNVx1ZDZiNlx1ZDZiN1x1ZDZiOFx1ZDZiYVx1ZDZiY1x1ZDZiZFx1ZDZiZVx1ZDZiZlx1ZDZjMFx1ZDZj''@;'; put 'put ''MVx1ZDZjMlx1ZDZjM1x1ZDZjNlx1ZDZjN1x1ZDZjOVx1ZDZjYVx1ZDZjYlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDZjZFx1ZDZjZVx1ZDZjZlx1ZDZkMFx1ZDZkMlx1ZDZkM1x1ZDZkNVx1ZDZkNlx1ZDZkOFx1ZDZkYVx1ZDZkYlx1ZDZkY1x1ZDZkZFx1ZDZkZVx1''@;'; put 'put ''ZDZkZlx1ZDZlMVx1ZDZlMlx1ZDZlM1x1ZDZlNVx1ZDZlNlx1ZDZlN1x1ZDZlOVx1ZDZlYVx1ZDZlYlx1ZDZlY1x1ZDZlZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDZlZVx1ZDZlZlx1ZDZmMVx1ZDZmMlx1ZDZmM1x1ZDZmNFx1ZDZmNlx1ZDZmN1x1ZDZmOFx1ZDZm''@;'; put 'put ''OVx1ZDZmYVx1ZDZmYlx1ZDZmZVx1ZDZmZlx1ZDcwMVx1ZDcwMlx1ZDcwM1x1ZDcwNVx1ZDcwNlx1ZDcwN1x1ZDcwOFx1ZDcwOVx1ZDcwYVx1ZDcwYlx1ZDcwY1x1ZDcwZFx1ZDcwZVx1ZDcwZlx1ZDcxMFx1ZDcxMlx1ZDcxM1x1ZDcxNFx1Y2U1OFx1Y2U1OVx1Y2U1Y1x1Y2U1Zlx1Y2U2MFx1''@;'; put 'put ''Y2U2MVx1Y2U2OFx1Y2U2OVx1Y2U2Ylx1Y2U2ZFx1Y2U3NFx1Y2U3NVx1Y2U3OFx1Y2U3Y1x1Y2U4NFx1Y2U4NVx1Y2U4N1x1Y2U4OVx1Y2U5MFx1Y2U5MVx1Y2U5NFx1Y2U5OFx1Y2VhMFx1Y2VhMVx1Y2VhM1x1Y2VhNFx1Y2VhNVx1Y2VhY1x1Y2VhZFx1Y2VjMVx1Y2VlNFx1Y2VlNVx1Y2Vl''@;'; put 'put ''OFx1Y2VlYlx1Y2VlY1x1Y2VmNFx1Y2VmNVx1Y2VmN1x1Y2VmOFx1Y2VmOVx1Y2YwMFx1Y2YwMVx1Y2YwNFx1Y2YwOFx1Y2YxMFx1Y2YxMVx1Y2YxM1x1Y2YxNVx1Y2YxY1x1Y2YyMFx1Y2YyNFx1Y2YyY1x1Y2YyZFx1Y2YyZlx1Y2YzMFx1Y2YzMVx1Y2YzOFx1Y2Y1NFx1Y2Y1NVx1Y2Y1OFx1''@;'; put 'put ''Y2Y1Y1x1Y2Y2NFx1Y2Y2NVx1Y2Y2N1x1Y2Y2OVx1Y2Y3MFx1Y2Y3MVx1Y2Y3NFx1Y2Y3OFx1Y2Y4MFx1Y2Y4NVx1Y2Y4Y1x1Y2ZhMVx1Y2ZhOFx1Y2ZiMFx1Y2ZjNFx1Y2ZlMFx1Y2ZlMVx1Y2ZlNFx1Y2ZlOFx1Y2ZmMFx1Y2ZmMVx1Y2ZmM1x1Y2ZmNVx1Y2ZmY1x1ZDAwMFx1ZDAwNFx1ZDAx''@;'; put 'put ''MVx1ZDAxOFx1ZDAyZFx1ZDAzNFx1ZDAzNVx1ZDAzOFx1ZDAzY1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTk2XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxOTZdW0VdXT01MDE3NitFLExbNTAxNzYrRV09QlsxOTZdW0VdKTtmb3IoQlsx''@;'; put 'put ''OTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ3MTVcdWQ3MTZcdWQ3MTdcdWQ3MWFcdWQ3MWJcdWQ3MWRcdWQ3MWVcdWQ3MWZcdWQ3MjFcdWQ3MjJcdWQ3MjNcdWQ3MjRcdWQ3MjVcdWQ3MjZcdWQ3MjdcdWQ3MmFcdWQ3''@;'; put 'put ''MmNcdWQ3MmVcdWQ3MmZcdWQ3MzBcdWQ3MzFcdWQ3MzJcdWQ3MzNcdWQ3MzZcdWQ3MzdcdWQ3MzlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ3M2FcdWQ3M2JcdWQ3M2RcdWQ3M2VcdWQ3M2ZcdWQ3NDBcdWQ3NDFcdWQ3NDJcdWQ3NDNcdWQ3NDVcdWQ3NDZcdWQ3NDhc''@;'; put 'put ''dWQ3NGFcdWQ3NGJcdWQ3NGNcdWQ3NGRcdWQ3NGVcdWQ3NGZcdWQ3NTJcdWQ3NTNcdWQ3NTVcdWQ3NWFcdWQ3NWJcdWQ3NWNcdWQ3NWRcdWQ3NWVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ3NWZcdWQ3NjJcdWQ3NjRcdWQ3NjZcdWQ3NjdcdWQ3NjhcdWQ3NmFcdWQ3''@;'; put 'put ''NmJcdWQ3NmRcdWQ3NmVcdWQ3NmZcdWQ3NzFcdWQ3NzJcdWQ3NzNcdWQ3NzVcdWQ3NzZcdWQ3NzdcdWQ3NzhcdWQ3NzlcdWQ3N2FcdWQ3N2JcdWQ3N2VcdWQ3N2ZcdWQ3ODBcdWQ3ODJcdWQ3ODNcdWQ3ODRcdWQ3ODVcdWQ3ODZcdWQ3ODdcdWQ3OGFcdWQ3OGJcdWQwNDRcdWQwNDVcdWQwNDdc''@;'; put 'put ''dWQwNDlcdWQwNTBcdWQwNTRcdWQwNThcdWQwNjBcdWQwNmNcdWQwNmRcdWQwNzBcdWQwNzRcdWQwN2NcdWQwN2RcdWQwODFcdWQwYTRcdWQwYTVcdWQwYThcdWQwYWNcdWQwYjRcdWQwYjVcdWQwYjdcdWQwYjlcdWQwYzBcdWQwYzFcdWQwYzRcdWQwYzhcdWQwYzlcdWQwZDBcdWQwZDFcdWQw''@;'; put 'put ''ZDNcdWQwZDRcdWQwZDVcdWQwZGNcdWQwZGRcdWQwZTBcdWQwZTRcdWQwZWNcdWQwZWRcdWQwZWZcdWQwZjBcdWQwZjFcdWQwZjhcdWQxMGRcdWQxMzBcdWQxMzFcdWQxMzRcdWQxMzhcdWQxM2FcdWQxNDBcdWQxNDFcdWQxNDNcdWQxNDRcdWQxNDVcdWQxNGNcdWQxNGRcdWQxNTBcdWQxNTRc''@;'; put 'put ''dWQxNWNcdWQxNWRcdWQxNWZcdWQxNjFcdWQxNjhcdWQxNmNcdWQxN2NcdWQxODRcdWQxODhcdWQxYTBcdWQxYTFcdWQxYTRcdWQxYThcdWQxYjBcdWQxYjFcdWQxYjNcdWQxYjVcdWQxYmFcdWQxYmNcdWQxYzBcdWQxZDhcdWQxZjRcdWQxZjhcdWQyMDdcdWQyMDlcdWQyMTBcdWQyMmNcdWQy''@;'; put 'put ''MmRcdWQyMzBcdWQyMzRcdWQyM2NcdWQyM2RcdWQyM2ZcdWQyNDFcdWQyNDhcdWQyNWNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5N11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTk3XVtFXV09NTA0MzIrRSxMWzUwNDMyK0VdPUJbMTk3''@;'; put 'put ''XVtFXSk7Zm9yKEJbMTk4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNzhkXHVkNzhlXHVkNzhmXHVkNzkxXHVkNzkyXHVkNzkzXHVkNzk0XHVkNzk1XHVkNzk2XHVkNzk3XHVkNzlhXHVkNzljXHVkNzllXHVkNzlmXHVk''@;'; put 'put ''N2EwXHVkN2ExXHVkN2EyXHVkN2EzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMjY0''@;'; put 'put ''XHVkMjgwXHVkMjgxXHVkMjg0XHVkMjg4XHVkMjkwXHVkMjkxXHVkMjk1XHVkMjljXHVkMmEwXHVkMmE0XHVkMmFjXHVkMmIxXHVkMmI4XHVkMmI5XHVkMmJjXHVkMmJmXHVkMmMwXHVkMmMyXHVkMmM4XHVkMmM5XHVkMmNiXHVkMmQ0XHVkMmQ4XHVkMmRjXHVkMmU0XHVkMmU1XHVkMmYwXHVk''@;'; put 'put ''MmYxXHVkMmY0XHVkMmY4XHVkMzAwXHVkMzAxXHVkMzAzXHVkMzA1XHVkMzBjXHVkMzBkXHVkMzBlXHVkMzEwXHVkMzE0XHVkMzE2XHVkMzFjXHVkMzFkXHVkMzFmXHVkMzIwXHVkMzIxXHVkMzI1XHVkMzI4XHVkMzI5XHVkMzJjXHVkMzMwXHVkMzM4XHVkMzM5XHVkMzNiXHVkMzNjXHVkMzNk''@;'; put 'put ''XHVkMzQ0XHVkMzQ1XHVkMzdjXHVkMzdkXHVkMzgwXHVkMzg0XHVkMzhjXHVkMzhkXHVkMzhmXHVkMzkwXHVkMzkxXHVkMzk4XHVkMzk5XHVkMzljXHVkM2EwXHVkM2E4XHVkM2E5XHVkM2FiXHVkM2FkXHVkM2I0XHVkM2I4XHVkM2JjXHVkM2M0XHVkM2M1XHVkM2M4XHVkM2M5XHVkM2QwXHVk''@;'; put 'put ''M2Q4XHVkM2UxXHVkM2UzXHVkM2VjXHVkM2VkXHVkM2YwXHVkM2Y0XHVkM2ZjXHVkM2ZkXHVkM2ZmXHVkNDAxXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTk4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOThdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE5OF1bRV1dPTUwNjg4K0UsTFs1''@;'; put 'put ''MDY4OCtFXT1CWzE5OF1bRV0pO2ZvcihCWzE5OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZDQwOFx1ZDQxZFx1ZDQ0MFx1ZDQ0NFx1ZDQ1Y1x1ZDQ2MFx1ZDQ2NFx1ZDQ2ZFx1ZDQ2Zlx1ZDQ3OFx1ZDQ3OVx1ZDQ3Y1x1ZDQ3Zlx1ZDQ4MFx1ZDQ4Mlx1ZDQ4OFx1ZDQ4OVx1ZDQ4Ylx1ZDQ4ZFx1ZDQ5NFx1ZDRhOVx1ZDRjY1x1ZDRkMFx1ZDRkNFx1ZDRkY1x1ZDRkZlx1''@;'; put 'put ''ZDRlOFx1ZDRlY1x1ZDRmMFx1ZDRmOFx1ZDRmYlx1ZDRmZFx1ZDUwNFx1ZDUwOFx1ZDUwY1x1ZDUxNFx1ZDUxNVx1ZDUxN1x1ZDUzY1x1ZDUzZFx1ZDU0MFx1ZDU0NFx1ZDU0Y1x1ZDU0ZFx1ZDU0Zlx1ZDU1MVx1ZDU1OFx1ZDU1OVx1ZDU1Y1x1ZDU2MFx1ZDU2NVx1ZDU2OFx1ZDU2OVx1ZDU2''@;'; put 'put ''Ylx1ZDU2ZFx1ZDU3NFx1ZDU3NVx1ZDU3OFx1ZDU3Y1x1ZDU4NFx1ZDU4NVx1ZDU4N1x1ZDU4OFx1ZDU4OVx1ZDU5MFx1ZDVhNVx1ZDVjOFx1ZDVjOVx1ZDVjY1x1ZDVkMFx1ZDVkMlx1ZDVkOFx1ZDVkOVx1ZDVkYlx1ZDVkZFx1ZDVlNFx1ZDVlNVx1ZDVlOFx1ZDVlY1x1ZDVmNFx1ZDVmNVx1''@;'; put 'put ''ZDVmN1x1ZDVmOVx1ZDYwMFx1ZDYwMVx1ZDYwNFx1ZDYwOFx1ZDYxMFx1ZDYxMVx1ZDYxM1x1ZDYxNFx1ZDYxNVx1ZDYxY1x1ZDYyMFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5OV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTk5XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxOTldW0Vd''@;'; put 'put ''XT01MDk0NCtFLExbNTA5NDQrRV09QlsxOTldW0VdKTtmb3IoQlsyMDBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ2MjRcdWQ2MmRcdWQ2MzhcdWQ2MzlcdWQ2M2NcdWQ2NDBcdWQ2NDVcdWQ2NDhcdWQ2NDlcdWQ2NGJcdWQ2NGRcdWQ2NTFcdWQ2NTRcdWQ2NTVcdWQ2NThcdWQ2NWNcdWQ2NjdcdWQ2NjlcdWQ2NzBcdWQ2NzFcdWQ2NzRcdWQ2ODNcdWQ2ODVcdWQ2OGNc''@;'; put 'put ''dWQ2OGRcdWQ2OTBcdWQ2OTRcdWQ2OWRcdWQ2OWZcdWQ2YTFcdWQ2YThcdWQ2YWNcdWQ2YjBcdWQ2YjlcdWQ2YmJcdWQ2YzRcdWQ2YzVcdWQ2YzhcdWQ2Y2NcdWQ2ZDFcdWQ2ZDRcdWQ2ZDdcdWQ2ZDlcdWQ2ZTBcdWQ2ZTRcdWQ2ZThcdWQ2ZjBcdWQ2ZjVcdWQ2ZmNcdWQ2ZmRcdWQ3MDBcdWQ3''@;'; put 'put ''MDRcdWQ3MTFcdWQ3MThcdWQ3MTlcdWQ3MWNcdWQ3MjBcdWQ3MjhcdWQ3MjlcdWQ3MmJcdWQ3MmRcdWQ3MzRcdWQ3MzVcdWQ3MzhcdWQ3M2NcdWQ3NDRcdWQ3NDdcdWQ3NDlcdWQ3NTBcdWQ3NTFcdWQ3NTRcdWQ3NTZcdWQ3NTdcdWQ3NThcdWQ3NTlcdWQ3NjBcdWQ3NjFcdWQ3NjNcdWQ3NjVc''@;'; put 'put ''dWQ3NjlcdWQ3NmNcdWQ3NzBcdWQ3NzRcdWQ3N2NcdWQ3N2RcdWQ3ODFcdWQ3ODhcdWQ3ODlcdWQ3OGNcdWQ3OTBcdWQ3OThcdWQ3OTlcdWQ3OWJcdWQ3OWRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwMF1bRV0uY2hhckNvZGVBdCgwKSYm''@;'; put 'put ''KG1lW0JbMjAwXVtFXV09NTEyMDArRSxMWzUxMjAwK0VdPUJbMjAwXVtFXSk7Zm9yKEJbMjAyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZjNkXHU0ZjczXHU1MDQ3XHU1MGY5XHU1MmEwXHU1M2VmXHU1NDc1XHU1NGU1XHU1NjA5XHU1YWMxXHU1YmI2XHU2Njg3XHU2N2I2XHU2N2I3XHU2N2VmXHU2YjRjXHU3M2MyXHU3NWMyXHU3YTNjXHU4MmRiXHU4MzA0XHU4ODU3''@;'; put 'put ''XHU4ODg4XHU4YTM2XHU4Y2M4XHU4ZGNmXHU4ZWZiXHU4ZmU2XHU5OWQ1XHU1MjNiXHU1Mzc0XHU1NDA0XHU2MDZhXHU2MTY0XHU2YmJjXHU3M2NmXHU4MTFhXHU4OWJhXHU4OWQyXHU5NWEzXHU0ZjgzXHU1MjBhXHU1OGJlXHU1OTc4XHU1OWU2XHU1ZTcyXHU1ZTc5XHU2MWM3XHU2M2MwXHU2''@;'; put 'put ''NzQ2XHU2N2VjXHU2ODdmXHU2Zjk3XHU3NjRlXHU3NzBiXHU3OGY1XHU3YTA4XHU3YWZmXHU3YzIxXHU4MDlkXHU4MjZlXHU4MjcxXHU4YWViXHU5NTkzXHU0ZTZiXHU1NTlkXHU2NmY3XHU2ZTM0XHU3OGEzXHU3YWVkXHU4NDViXHU4OTEwXHU4NzRlXHU5N2E4XHU1MmQ4XHU1NzRlXHU1ODJh''@;'; put 'put ''XHU1ZDRjXHU2MTFmXHU2MWJlXHU2MjIxXHU2NTYyXHU2N2QxXHU2YTQ0XHU2ZTFiXHU3NTE4XHU3NWIzXHU3NmUzXHU3N2IwXHU3ZDNhXHU5MGFmXHU5NDUxXHU5NDUyXHU5Zjk1XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjAyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDJdW0VdLmNo''@;'; put 'put ''YXJDb2RlQXQoMCkmJihtZVtCWzIwMl1bRV1dPTUxNzEyK0UsTFs1MTcxMitFXT1CWzIwMl1bRV0pO2ZvcihCWzIwM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTMyM1x1NWNhY1x1NzUzMlx1ODBkYlx1OTI0MFx1OTU5OFx1NTI1Ylx1NTgwOFx1NTlkY1x1NWNhMVx1NWQxN1x1NWViN1x1NWYzYVx1NWY0YVx1NjE3N1x1NmM1Zlx1NzU3YVx1NzU4Nlx1N2NlMFx1N2Q3''@;'; put 'put ''M1x1N2RiMVx1N2Y4Y1x1ODE1NFx1ODIyMVx1ODU5MVx1ODk0MVx1OGIxYlx1OTJmY1x1OTY0ZFx1OWM0N1x1NGVjYlx1NGVmN1x1NTAwYlx1NTFmMVx1NTg0Zlx1NjEzN1x1NjEzZVx1NjE2OFx1NjUzOVx1NjllYVx1NmYxMVx1NzVhNVx1NzY4Nlx1NzZkNlx1N2I4N1x1ODJhNVx1ODRjYlx1''@;'; put 'put ''ZjkwMFx1OTNhN1x1OTU4Ylx1NTU4MFx1NWJhMlx1NTc1MVx1ZjkwMVx1N2NiM1x1N2ZiOVx1OTFiNVx1NTAyOFx1NTNiYlx1NWM0NVx1NWRlOFx1NjJkMlx1NjM2ZVx1NjRkYVx1NjRlN1x1NmUyMFx1NzBhY1x1Nzk1Ylx1OGRkZFx1OGUxZVx1ZjkwMlx1OTA3ZFx1OTI0NVx1OTJmOFx1NGU3''@;'; put 'put ''ZVx1NGVmNlx1NTA2NVx1NWRmZVx1NWVmYVx1NjEwNlx1Njk1N1x1ODE3MVx1ODY1NFx1OGU0N1x1OTM3NVx1OWEyYlx1NGU1ZVx1NTA5MVx1Njc3MFx1Njg0MFx1NTEwOVx1NTI4ZFx1NTI5Mlx1NmFhMlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwM10ubGVuZ3RoOysrRSk2NTUzMyE9''@;'; put 'put ''PUJbMjAzXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMDNdW0VdXT01MTk2OCtFLExbNTE5NjgrRV09QlsyMDNdW0VdKTtmb3IoQlsyMDRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc3YmNcdTkyMTBcdTllZDRcdTUyYWJcdTYwMmZcdThmZjJcdTUwNDhcdTYxYTlcdTYzZWRcdTY0Y2FcdTY4M2NcdTZhODRcdTZmYzBcdTgxODhcdTg5YTFcdTk2OTRcdTU4MDVcdTcy''@;'; put 'put ''N2RcdTcyYWNcdTc1MDRcdTdkNzlcdTdlNmRcdTgwYTlcdTg5OGJcdThiNzRcdTkwNjNcdTlkNTFcdTYyODlcdTZjN2FcdTZmNTRcdTdkNTBcdTdmM2FcdThhMjNcdTUxN2NcdTYxNGFcdTdiOWRcdThiMTlcdTkyNTdcdTkzOGNcdTRlYWNcdTRmZDNcdTUwMWVcdTUwYmVcdTUxMDZcdTUyYzFc''@;'; put 'put ''dTUyY2RcdTUzN2ZcdTU3NzBcdTU4ODNcdTVlOWFcdTVmOTFcdTYxNzZcdTYxYWNcdTY0Y2VcdTY1NmNcdTY2NmZcdTY2YmJcdTY2ZjRcdTY4OTdcdTZkODdcdTcwODVcdTcwZjFcdTc0OWZcdTc0YTVcdTc0Y2FcdTc1ZDlcdTc4NmNcdTc4ZWNcdTdhZGZcdTdhZjZcdTdkNDVcdTdkOTNcdTgw''@;'; put 'put ''MTVcdTgwM2ZcdTgxMWJcdTgzOTZcdThiNjZcdThmMTVcdTkwMTVcdTkzZTFcdTk4MDNcdTk4MzhcdTlhNWFcdTliZThcdTRmYzJcdTU1NTNcdTU4M2FcdTU5NTFcdTViNjNcdTVjNDZcdTYwYjhcdTYyMTJcdTY4NDJcdTY4YjBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDRdLmxlbmd0''@;'; put 'put ''aDsrK0UpNjU1MzMhPT1CWzIwNF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjA0XVtFXV09NTIyMjQrRSxMWzUyMjI0K0VdPUJbMjA0XVtFXSk7Zm9yKEJbMjA1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2OGU4XHU2ZWFhXHU3NTRjXHU3Njc4XHU3OGNlXHU3YTNkXHU3Y2ZiXHU3ZTZiXHU3ZTdjXHU4YTA4XHU4YWExXHU4YzNmXHU5NjhlXHU5ZGM0XHU1M2U0XHU1''@;'; put 'put ''M2U5XHU1NDRhXHU1NDcxXHU1NmZhXHU1OWQxXHU1YjY0XHU1YzNiXHU1ZWFiXHU2MmY3XHU2NTM3XHU2NTQ1XHU2NTcyXHU2NmEwXHU2N2FmXHU2OWMxXHU2Y2JkXHU3NWZjXHU3NjkwXHU3NzdlXHU3YTNmXHU3Zjk0XHU4MDAzXHU4MGExXHU4MThmXHU4MmU2XHU4MmZkXHU4M2YwXHU4NWMx''@;'; put 'put ''XHU4ODMxXHU4OGI0XHU4YWE1XHVmOTAzXHU4ZjljXHU5MzJlXHU5NmM3XHU5ODY3XHU5YWQ4XHU5ZjEzXHU1NGVkXHU2NTliXHU2NmYyXHU2ODhmXHU3YTQwXHU4YzM3XHU5ZDYwXHU1NmYwXHU1NzY0XHU1ZDExXHU2NjA2XHU2OGIxXHU2OGNkXHU2ZWZlXHU3NDI4XHU4ODllXHU5YmU0XHU2''@;'; put 'put ''YzY4XHVmOTA0XHU5YWE4XHU0ZjliXHU1MTZjXHU1MTcxXHU1MjlmXHU1YjU0XHU1ZGU1XHU2MDUwXHU2MDZkXHU2MmYxXHU2M2E3XHU2NTNiXHU3M2Q5XHU3YTdhXHU4NmEzXHU4Y2EyXHU5NzhmXHU0ZTMyXHU1YmUxXHU2MjA4XHU2NzljXHU3NGRjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0Uh''@;'; put 'put ''PUJbMjA1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDVdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIwNV1bRV1dPTUyNDgwK0UsTFs1MjQ4MCtFXT1CWzIwNV1bRV0pO2ZvcihCWzIwNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzlkMVx1ODNkM1x1OGE4N1x1OGFiMlx1OGRlOFx1OTA0ZVx1OTM0Ylx1OTg0Nlx1NWVkM1x1NjllOFx1ODVmZlx1OTBlZFx1ZjkwNVx1''@;'; put 'put ''NTFhMFx1NWI5OFx1NWJlY1x1NjE2M1x1NjhmYVx1NmIzZVx1NzA0Y1x1NzQyZlx1NzRkOFx1N2JhMVx1N2Y1MFx1ODNjNVx1ODljMFx1OGNhYlx1OTVkY1x1OTkyOFx1NTIyZVx1NjA1ZFx1NjJlY1x1OTAwMlx1NGY4YVx1NTE0OVx1NTMyMVx1NThkOVx1NWVlM1x1NjZlMFx1NmQzOFx1NzA5''@;'; put 'put ''YVx1NzJjMlx1NzNkNlx1N2I1MFx1ODBmMVx1OTQ1Ylx1NTM2Nlx1NjM5Ylx1N2Y2Ylx1NGU1Nlx1NTA4MFx1NTg0YVx1NThkZVx1NjAyYVx1NjEyN1x1NjJkMFx1NjlkMFx1OWI0MVx1NWI4Zlx1N2QxOFx1ODBiMVx1OGY1Zlx1NGVhNFx1NTBkMVx1NTRhY1x1NTVhY1x1NWIwY1x1NWRhMFx1''@;'; put 'put ''NWRlN1x1NjUyYVx1NjU0ZVx1NjgyMVx1NmE0Ylx1NzJlMVx1NzY4ZVx1NzdlZlx1N2Q1ZVx1N2ZmOVx1ODFhMFx1ODU0ZVx1ODZkZlx1OGYwM1x1OGY0ZVx1OTBjYVx1OTkwM1x1OWE1NVx1OWJhYlx1NGUxOFx1NGU0NVx1NGU1ZFx1NGVjN1x1NGZmMVx1NTE3N1x1NTJmZVx1ZmZmZCIuc3Bs''@;'; put 'put ''aXQoIiIpLEU9MDtFIT1CWzIwNl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjA2XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMDZdW0VdXT01MjczNitFLExbNTI3MzYrRV09QlsyMDZdW0VdKTtmb3IoQlsyMDddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTUzNDBcdTUzZTNcdTUzZTVcdTU0OGVcdTU2MTRcdTU3NzVcdTU3YTJcdTViYzdcdTVkODdcdTVlZDBcdTYxZmNc''@;'; put 'put ''dTYyZDhcdTY1NTFcdTY3YjhcdTY3ZTlcdTY5Y2JcdTZiNTBcdTZiYzZcdTZiZWNcdTZjNDJcdTZlOWRcdTcwNzhcdTcyZDdcdTczOTZcdTc0MDNcdTc3YmZcdTc3ZTlcdTdhNzZcdTdkN2ZcdTgwMDlcdTgxZmNcdTgyMDVcdTgyMGFcdTgyZGZcdTg4NjJcdThiMzNcdThjZmNcdThlYzBcdTkw''@;'; put 'put ''MTFcdTkwYjFcdTkyNjRcdTkyYjZcdTk5ZDJcdTlhNDVcdTljZTlcdTlkZDdcdTlmOWNcdTU3MGJcdTVjNDBcdTgzY2FcdTk3YTBcdTk3YWJcdTllYjRcdTU0MWJcdTdhOThcdTdmYTRcdTg4ZDlcdThlY2RcdTkwZTFcdTU4MDBcdTVjNDhcdTYzOThcdTdhOWZcdTViYWVcdTVmMTNcdTdhNzlc''@;'; put 'put ''dTdhYWVcdTgyOGVcdThlYWNcdTUwMjZcdTUyMzhcdTUyZjhcdTUzNzdcdTU3MDhcdTYyZjNcdTYzNzJcdTZiMGFcdTZkYzNcdTc3MzdcdTUzYTVcdTczNTdcdTg1NjhcdThlNzZcdTk1ZDVcdTY3M2FcdTZhYzNcdTZmNzBcdThhNmRcdThlY2NcdTk5NGJcdWY5MDZcdTY2NzdcdTZiNzhcdThj''@;'; put 'put ''YjRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwN11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjA3XVtFXV09NTI5OTIrRSxMWzUyOTkyK0VdPUJbMjA3XVtFXSk7Zm9yKEJbMjA4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5YjNjXHVmOTA3XHU1M2ViXHU1NzJkXHU1OTRlXHU2M2M2XHU2OWZiXHU3M2VhXHU3ODQ1''@;'; put 'put ''XHU3YWJhXHU3YWM1XHU3Y2ZlXHU4NDc1XHU4OThmXHU4ZDczXHU5MDM1XHU5NWE4XHU1MmZiXHU1NzQ3XHU3NTQ3XHU3YjYwXHU4M2NjXHU5MjFlXHVmOTA4XHU2YTU4XHU1MTRiXHU1MjRiXHU1Mjg3XHU2MjFmXHU2OGQ4XHU2OTc1XHU5Njk5XHU1MGM1XHU1MmE0XHU1MmU0XHU2MWMzXHU2''@;'; put 'put ''NWE0XHU2ODM5XHU2OWZmXHU3NDdlXHU3YjRiXHU4MmI5XHU4M2ViXHU4OWIyXHU4YjM5XHU4ZmQxXHU5OTQ5XHVmOTA5XHU0ZWNhXHU1OTk3XHU2NGQyXHU2NjExXHU2YThlXHU3NDM0XHU3OTgxXHU3OWJkXHU4MmE5XHU4ODdlXHU4ODdmXHU4OTVmXHVmOTBhXHU5MzI2XHU0ZjBiXHU1M2Nh''@;'; put 'put ''XHU2MDI1XHU2MjcxXHU2YzcyXHU3ZDFhXHU3ZDY2XHU0ZTk4XHU1MTYyXHU3N2RjXHU4MGFmXHU0ZjAxXHU0ZjBlXHU1MTc2XHU1MTgwXHU1NWRjXHU1NjY4XHU1NzNiXHU1N2ZhXHU1N2ZjXHU1OTE0XHU1OTQ3XHU1OTkzXHU1YmM0XHU1YzkwXHU1ZDBlXHU1ZGYxXHU1ZTdlXHU1ZmNjXHU2''@;'; put 'put ''MjgwXHU2NWQ3XHU2NWUzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjA4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDhdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIwOF1bRV1dPTUzMjQ4K0UsTFs1MzI0OCtFXT1CWzIwOF1bRV0pO2ZvcihCWzIwOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjcxZVx1NjcxZlx1Njc1ZVx1NjhjYlx1NjhjNFx1NmE1Zlx1NmIz''@;'; put 'put ''YVx1NmMyM1x1NmM3ZFx1NmM4Mlx1NmRjN1x1NzM5OFx1NzQyNlx1NzQyYVx1NzQ4Mlx1NzRhM1x1NzU3OFx1NzU3Zlx1Nzg4MVx1NzhlZlx1Nzk0MVx1Nzk0N1x1Nzk0OFx1Nzk3YVx1N2I5NVx1N2QwMFx1N2RiYVx1N2Y4OFx1ODAwNlx1ODAyZFx1ODA4Y1x1OGExOFx1OGI0Zlx1OGM0OFx1''@;'; put 'put ''OGQ3N1x1OTMyMVx1OTMyNFx1OThlMlx1OTk1MVx1OWEwZVx1OWEwZlx1OWE2NVx1OWU5Mlx1N2RjYVx1NGY3Nlx1NTQwOVx1NjJlZVx1Njg1NFx1OTFkMVx1NTVhYlx1NTEzYVx1ZjkwYlx1ZjkwY1x1NWExY1x1NjFlNlx1ZjkwZFx1NjJjZlx1NjJmZlx1ZjkwZVx1ZjkwZlx1ZjkxMFx1Zjkx''@;'; put 'put ''MVx1ZjkxMlx1ZjkxM1x1OTBhM1x1ZjkxNFx1ZjkxNVx1ZjkxNlx1ZjkxN1x1ZjkxOFx1OGFmZVx1ZjkxOVx1ZjkxYVx1ZjkxYlx1ZjkxY1x1NjY5Nlx1ZjkxZFx1NzE1Nlx1ZjkxZVx1ZjkxZlx1OTZlM1x1ZjkyMFx1NjM0Zlx1NjM3YVx1NTM1N1x1ZjkyMVx1Njc4Zlx1Njk2MFx1NmU3M1x1''@;'; put 'put ''ZjkyMlx1NzUzN1x1ZjkyM1x1ZjkyNFx1ZjkyNVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwOV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjA5XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMDldW0VdXT01MzUwNCtFLExbNTM1MDQrRV09QlsyMDldW0VdKTtmb3IoQlsyMTBdPSJcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdkMGRcdWY5MjZcdWY5MjdcdTg4NzJcdTU2''@;'; put 'put ''Y2FcdTVhMThcdWY5MjhcdWY5MjlcdWY5MmFcdWY5MmJcdWY5MmNcdTRlNDNcdWY5MmRcdTUxNjdcdTU5NDhcdTY3ZjBcdTgwMTBcdWY5MmVcdTU5NzNcdTVlNzRcdTY0OWFcdTc5Y2FcdTVmZjVcdTYwNmNcdTYyYzhcdTYzN2JcdTViZTdcdTViZDdcdTUyYWFcdWY5MmZcdTU5NzRcdTVmMjlc''@;'; put 'put ''dTYwMTJcdWY5MzBcdWY5MzFcdWY5MzJcdTc0NTlcdWY5MzNcdWY5MzRcdWY5MzVcdWY5MzZcdWY5MzdcdWY5MzhcdTk5ZDFcdWY5MzlcdWY5M2FcdWY5M2JcdWY5M2NcdWY5M2RcdWY5M2VcdWY5M2ZcdWY5NDBcdWY5NDFcdWY5NDJcdWY5NDNcdTZmYzNcdWY5NDRcdWY5NDVcdTgxYmZcdThm''@;'; put 'put ''YjJcdTYwZjFcdWY5NDZcdWY5NDdcdTgxNjZcdWY5NDhcdWY5NDlcdTVjM2ZcdWY5NGFcdWY5NGJcdWY5NGNcdWY5NGRcdWY5NGVcdWY5NGZcdWY5NTBcdWY5NTFcdTVhZTlcdThhMjVcdTY3N2JcdTdkMTBcdWY5NTJcdWY5NTNcdWY5NTRcdWY5NTVcdWY5NTZcdWY5NTdcdTgwZmRcdWY5NThc''@;'; put 'put ''dWY5NTlcdTVjM2NcdTZjZTVcdTUzM2ZcdTZlYmFcdTU5MWFcdTgzMzZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxMF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjEwXVtFXV09NTM3NjArRSxMWzUzNzYwK0VdPUJbMjEwXVtFXSk7Zm9y''@;'; put 'put ''KEJbMjExXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZTM5XHU0ZWI2XHU0''@;'; put 'put ''ZjQ2XHU1NWFlXHU1NzE4XHU1OGM3XHU1ZjU2XHU2NWI3XHU2NWU2XHU2YTgwXHU2YmI1XHU2ZTRkXHU3N2VkXHU3YWVmXHU3YzFlXHU3ZGRlXHU4NmNiXHU4ODkyXHU5MTMyXHU5MzViXHU2NGJiXHU2ZmJlXHU3MzdhXHU3NWI4XHU5MDU0XHU1NTU2XHU1NzRkXHU2MWJhXHU2NGQ0XHU2NmM3''@;'; put 'put ''XHU2ZGUxXHU2ZTViXHU2ZjZkXHU2ZmI5XHU3NWYwXHU4MDQzXHU4MWJkXHU4NTQxXHU4OTgzXHU4YWM3XHU4YjVhXHU5MzFmXHU2YzkzXHU3NTUzXHU3YjU0XHU4ZTBmXHU5MDVkXHU1NTEwXHU1ODAyXHU1ODU4XHU1ZTYyXHU2MjA3XHU2NDllXHU2OGUwXHU3NTc2XHU3Y2Q2XHU4N2IzXHU5''@;'; put 'put ''ZWU4XHU0ZWUzXHU1Nzg4XHU1NzZlXHU1OTI3XHU1YzBkXHU1Y2IxXHU1ZTM2XHU1Zjg1XHU2MjM0XHU2NGUxXHU3M2IzXHU4MWZhXHU4ODhiXHU4Y2I4XHU5NjhhXHU5ZWRiXHU1Yjg1XHU1ZmI3XHU2MGIzXHU1MDEyXHU1MjAwXHU1MjMwXHU1NzE2XHU1ODM1XHU1ODU3XHU1YzBlXHU1YzYw''@;'; put 'put ''XHU1Y2Y2XHU1ZDhiXHU1ZWE2XHU1ZjkyXHU2MGJjXHU2MzExXHU2Mzg5XHU2NDE3XHU2ODQzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjExXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMTFdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIxMV1bRV1dPTU0MDE2K0UsTFs1NDAxNitFXT1C''@;'; put 'put ''WzIxMV1bRV0pO2ZvcihCWzIxMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''NjhmOVx1NmFjMlx1NmRkOFx1NmUyMVx1NmVkNFx1NmZlNFx1NzFmZVx1NzZkY1x1Nzc3OVx1NzliMVx1N2EzYlx1ODQwNFx1ODlhOVx1OGNlZFx1OGRmM1x1OGU0OFx1OTAwM1x1OTAxNFx1OTA1M1x1OTBmZFx1OTM0ZFx1OTY3Nlx1OTdkY1x1NmJkMlx1NzAwNlx1NzI1OFx1NzJhMlx1NzM2''@;'; put 'put ''OFx1Nzc2M1x1NzliZlx1N2JlNFx1N2U5Ylx1OGI4MFx1NThhOVx1NjBjN1x1NjU2Nlx1NjVmZFx1NjZiZVx1NmM4Y1x1NzExZVx1NzFjOVx1OGM1YVx1OTgxM1x1NGU2ZFx1N2E4MVx1NGVkZFx1NTFhY1x1NTFjZFx1NTJkNVx1NTQwY1x1NjFhN1x1Njc3MVx1Njg1MFx1NjhkZlx1NmQxZVx1''@;'; put 'put ''NmY3Y1x1NzViY1x1NzdiM1x1N2FlNVx1ODBmNFx1ODQ2M1x1OTI4NVx1NTE1Y1x1NjU5N1x1Njc1Y1x1Njc5M1x1NzVkOFx1N2FjN1x1ODM3M1x1Zjk1YVx1OGM0Nlx1OTAxN1x1OTgyZFx1NWM2Zlx1ODFjMFx1ODI5YVx1OTA0MVx1OTA2Zlx1OTIwZFx1NWY5N1x1NWQ5ZFx1NmE1OVx1NzFj''@;'; put 'put ''OFx1NzY3Ylx1N2I0OVx1ODVlNFx1OGIwNFx1OTEyN1x1OWEzMFx1NTU4N1x1NjFmNlx1Zjk1Ylx1NzY2OVx1N2Y4NVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxMl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjEyXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMTJdW0VdXT01NDI3MitF''@;'; put 'put ''LExbNTQyNzIrRV09QlsyMTJdW0VdKTtmb3IoQlsyMTNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdTg2M2ZcdTg3YmFcdTg4ZjhcdTkwOGZcdWY5NWNcdTZkMWJcdTcwZDlcdTczZGVcdTdkNjFcdTg0M2RcdWY5NWRcdTkxNmFcdTk5ZjFcdWY5NWVcdTRlODJcdTUzNzVcdTZiMDRcdTZiMTJcdTcwM2VcdTcyMWJcdTg2MmRcdTllMWVcdTUyNGNcdThmYTNcdTVkNTBcdTY0''@;'; put 'put ''ZTVcdTY1MmNcdTZiMTZcdTZmZWJcdTdjNDNcdTdlOWNcdTg1Y2RcdTg5NjRcdTg5YmRcdTYyYzlcdTgxZDhcdTg4MWZcdTVlY2FcdTY3MTdcdTZkNmFcdTcyZmNcdTc0MDVcdTc0NmZcdTg3ODJcdTkwZGVcdTRmODZcdTVkMGRcdTVmYTBcdTg0MGFcdTUxYjdcdTYzYTBcdTc1NjVcdTRlYWVc''@;'; put 'put ''dTUwMDZcdTUxNjlcdTUxYzlcdTY4ODFcdTZhMTFcdTdjYWVcdTdjYjFcdTdjZTdcdTgyNmZcdThhZDJcdThmMWJcdTkxY2ZcdTRmYjZcdTUxMzdcdTUyZjVcdTU0NDJcdTVlZWNcdTYxNmVcdTYyM2VcdTY1YzVcdTZhZGFcdTZmZmVcdTc5MmFcdTg1ZGNcdTg4MjNcdTk1YWRcdTlhNjJcdTlh''@;'; put 'put ''NmFcdTllOTdcdTllY2VcdTUyOWJcdTY2YzZcdTZiNzdcdTcwMWRcdTc5MmJcdThmNjJcdTk3NDJcdTYxOTBcdTYyMDBcdTY1MjNcdTZmMjNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxM11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjEz''@;'; put 'put ''XVtFXV09NTQ1MjgrRSxMWzU0NTI4K0VdPUJbMjEzXVtFXSk7Zm9yKEJbMjE0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MTQ5XHU3NDg5XHU3ZGY0XHU4MDZmXHU4NGVlXHU4ZjI2XHU5MDIzXHU5MzRhXHU1MWJkXHU1MjE3XHU1MmEzXHU2ZDBjXHU3MGM4XHU4OGMyXHU1ZWM5XHU2NTgyXHU2YmFlXHU2ZmMyXHU3YzNlXHU3Mzc1XHU0ZWU0XHU0ZjM2XHU1NmY5XHVm''@;'; put 'put ''OTVmXHU1Y2JhXHU1ZGJhXHU2MDFjXHU3M2IyXHU3YjJkXHU3ZjlhXHU3ZmNlXHU4MDQ2XHU5MDFlXHU5MjM0XHU5NmY2XHU5NzQ4XHU5ODE4XHU5ZjYxXHU0ZjhiXHU2ZmE3XHU3OWFlXHU5MWI0XHU5NmI3XHU1MmRlXHVmOTYwXHU2NDg4XHU2NGM0XHU2YWQzXHU2ZjVlXHU3MDE4XHU3MjEw''@;'; put 'put ''XHU3NmU3XHU4MDAxXHU4NjA2XHU4NjVjXHU4ZGVmXHU4ZjA1XHU5NzMyXHU5YjZmXHU5ZGZhXHU5ZTc1XHU3ODhjXHU3OTdmXHU3ZGEwXHU4M2M5XHU5MzA0XHU5ZTdmXHU5ZTkzXHU4YWQ2XHU1OGRmXHU1ZjA0XHU2NzI3XHU3MDI3XHU3NGNmXHU3YzYwXHU4MDdlXHU1MTIxXHU3MDI4XHU3''@;'; put 'put ''MjYyXHU3OGNhXHU4Y2MyXHU4Y2RhXHU4Y2Y0XHU5NmY3XHU0ZTg2XHU1MGRhXHU1YmVlXHU1ZWQ2XHU2NTk5XHU3MWNlXHU3NjQyXHU3N2FkXHU4MDRhXHU4NGZjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjE0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMTRdW0VdLmNoYXJDb2RlQXQo''@;'; put 'put ''MCkmJihtZVtCWzIxNF1bRV1dPTU0Nzg0K0UsTFs1NDc4NCtFXT1CWzIxNF1bRV0pO2ZvcihCWzIxNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTA3Y1x1OWIyN1x1OWY4ZFx1NThkOFx1NWE0MVx1NWM2Mlx1NmExM1x1NmRkYVx1NmYwZlx1NzYzYlx1N2QyZlx1N2UzN1x1ODUxZVx1ODkzOFx1OTNlNFx1OTY0Ylx1NTI4OVx1NjVkMlx1NjdmM1x1NjliNFx1NmQ0MVx1''@;'; put 'put ''NmU5Y1x1NzAwZlx1NzQwOVx1NzQ2MFx1NzU1OVx1NzYyNFx1Nzg2Ylx1OGIyY1x1OTg1ZVx1NTE2ZFx1NjIyZVx1OTY3OFx1NGY5Nlx1NTAyYlx1NWQxOVx1NmRlYVx1N2RiOFx1OGYyYVx1NWY4Ylx1NjE0NFx1NjgxN1x1Zjk2MVx1OTY4Nlx1NTJkMlx1ODA4Ylx1NTFkY1x1NTFjY1x1Njk1''@;'; put 'put ''ZVx1N2ExY1x1N2RiZVx1ODNmMVx1OTY3NVx1NGZkYVx1NTIyOVx1NTM5OFx1NTQwZlx1NTUwZVx1NWM2NVx1NjBhN1x1Njc0ZVx1NjhhOFx1NmQ2Y1x1NzI4MVx1NzJmOFx1NzQwNlx1NzQ4M1x1Zjk2Mlx1NzVlMlx1N2M2Y1x1N2Y3OVx1N2ZiOFx1ODM4OVx1ODhjZlx1ODhlMVx1OTFjY1x1''@;'; put 'put ''OTFkMFx1OTZlMlx1OWJjOVx1NTQxZFx1NmY3ZVx1NzFkMFx1NzQ5OFx1ODVmYVx1OGVhYVx1OTZhM1x1OWM1N1x1OWU5Zlx1Njc5N1x1NmRjYlx1NzQzM1x1ODFlOFx1OTcxNlx1NzgyY1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxNV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjE1XVtF''@;'; put 'put ''XS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMTVdW0VdXT01NTA0MCtFLExbNTUwNDArRV09QlsyMTVdW0VdKTtmb3IoQlsyMTZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhY2JcdTdiMjBcdTdjOTJcdTY0NjlcdTc0NmFcdTc1ZjJcdTc4YmNcdTc4ZThcdTk5YWNcdTliNTRcdTllYmJcdTViZGVcdTVlNTVcdTZmMjBcdTgxOWNcdTgzYWJcdTkwODhcdTRlMDdcdTUzNGRc''@;'; put 'put ''dTVhMjlcdTVkZDJcdTVmNGVcdTYxNjJcdTYzM2RcdTY2NjlcdTY2ZmNcdTZlZmZcdTZmMmJcdTcwNjNcdTc3OWVcdTg0MmNcdTg1MTNcdTg4M2JcdThmMTNcdTk5NDVcdTljM2JcdTU1MWNcdTYyYjlcdTY3MmJcdTZjYWJcdTgzMDlcdTg5NmFcdTk3N2FcdTRlYTFcdTU5ODRcdTVmZDhcdTVm''@;'; put 'put ''ZDlcdTY3MWJcdTdkYjJcdTdmNTRcdTgyOTJcdTgzMmJcdTgzYmRcdThmMWVcdTkwOTlcdTU3Y2JcdTU5YjlcdTVhOTJcdTViZDBcdTY2MjdcdTY3OWFcdTY4ODVcdTZiY2ZcdTcxNjRcdTdmNzVcdThjYjdcdThjZTNcdTkwODFcdTliNDVcdTgxMDhcdThjOGFcdTk2NGNcdTlhNDBcdTllYTVc''@;'; put 'put ''dTViNWZcdTZjMTNcdTczMWJcdTc2ZjJcdTc2ZGZcdTg0MGNcdTUxYWFcdTg5OTNcdTUxNGRcdTUxOTVcdTUyYzlcdTY4YzlcdTZjOTRcdTc3MDRcdTc3MjBcdTdkYmZcdTdkZWNcdTk3NjJcdTllYjVcdTZlYzVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTZdLmxlbmd0aDsrK0UpNjU1''@;'; put 'put ''MzMhPT1CWzIxNl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjE2XVtFXV09NTUyOTYrRSxMWzU1Mjk2K0VdPUJbMjE2XVtFXSk7Zm9yKEJbMjE3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NTExXHU1MWE1XHU1NDBkXHU1NDdkXHU2NjBlXHU2NjlkXHU2OTI3XHU2ZTlmXHU3NmJmXHU3NzkxXHU4MzE3XHU4NGMyXHU4NzlmXHU5MTY5XHU5Mjk4XHU5Y2Y0XHU4ODgy''@;'; put 'put ''XHU0ZmFlXHU1MTkyXHU1MmRmXHU1OWM2XHU1ZTNkXHU2MTU1XHU2NDc4XHU2NDc5XHU2NmFlXHU2N2QwXHU2YTIxXHU2YmNkXHU2YmRiXHU3MjVmXHU3MjYxXHU3NDQxXHU3NzM4XHU3N2RiXHU4MDE3XHU4MmJjXHU4MzA1XHU4YjAwXHU4YjI4XHU4YzhjXHU2NzI4XHU2YzkwXHU3MjY3XHU3''@;'; put 'put ''NmVlXHU3NzY2XHU3YTQ2XHU5ZGE5XHU2YjdmXHU2YzkyXHU1OTIyXHU2NzI2XHU4NDk5XHU1MzZmXHU1ODkzXHU1OTk5XHU1ZWRmXHU2M2NmXHU2NjM0XHU2NzczXHU2ZTNhXHU3MzJiXHU3YWQ3XHU4MmQ3XHU5MzI4XHU1MmQ5XHU1ZGViXHU2MWFlXHU2MWNiXHU2MjBhXHU2MmM3XHU2NGFi''@;'; put 'put ''XHU2NWUwXHU2OTU5XHU2YjY2XHU2YmNiXHU3MTIxXHU3M2Y3XHU3NTVkXHU3ZTQ2XHU4MjFlXHU4MzAyXHU4NTZhXHU4YWEzXHU4Y2JmXHU5NzI3XHU5ZDYxXHU1OGE4XHU5ZWQ4XHU1MDExXHU1MjBlXHU1NDNiXHU1NTRmXHU2NTg3XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjE3XS5s''@;'; put 'put ''ZW5ndGg7KytFKTY1NTMzIT09QlsyMTddW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIxN11bRV1dPTU1NTUyK0UsTFs1NTU1MitFXT1CWzIxN11bRV0pO2ZvcihCWzIxOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmM3Nlx1N2QwYVx1N2QwYlx1ODA1ZVx1ODY4YVx1OTU4MFx1OTZlZlx1NTJmZlx1NmM5NVx1NzI2OVx1NTQ3M1x1NWE5YVx1NWMzZVx1NWQ0Ylx1NWY0''@;'; put 'put ''Y1x1NWZhZVx1NjcyYVx1NjhiNlx1Njk2M1x1NmUzY1x1NmU0NFx1NzcwOVx1N2M3M1x1N2Y4ZVx1ODU4N1x1OGIwZVx1OGZmN1x1OTc2MVx1OWVmNFx1NWNiN1x1NjBiNlx1NjEwZFx1NjFhYlx1NjU0Zlx1NjVmYlx1NjVmY1x1NmMxMVx1NmNlZlx1NzM5Zlx1NzNjOVx1N2RlMVx1OTU5NFx1''@;'; put 'put ''NWJjNlx1ODcxY1x1OGIxMFx1NTI1ZFx1NTM1YVx1NjJjZFx1NjQwZlx1NjRiMlx1NjczNFx1NmEzOFx1NmNjYVx1NzNjMFx1NzQ5ZVx1N2I5NFx1N2M5NVx1N2UxYlx1ODE4YVx1ODIzNlx1ODU4NFx1OGZlYlx1OTZmOVx1OTljMVx1NGYzNFx1NTM0YVx1NTNjZFx1NTNkYlx1NjJjY1x1NjQy''@;'; put 'put ''Y1x1NjUwMFx1NjU5MVx1NjljM1x1NmNlZVx1NmY1OFx1NzNlZFx1NzU1NFx1NzYyMlx1NzZlNFx1NzZmY1x1NzhkMFx1NzhmYlx1NzkyY1x1N2Q0Nlx1ODIyY1x1ODdlMFx1OGZkNFx1OTgxMlx1OThlZlx1NTJjM1x1NjJkNFx1NjRhNVx1NmUyNFx1NmY1MVx1ZmZmZCIuc3BsaXQoIiIpLEU9''@;'; put 'put ''MDtFIT1CWzIxOF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjE4XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMThdW0VdXT01NTgwOCtFLExbNTU4MDgrRV09QlsyMThdW0VdKTtmb3IoQlsyMTldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc2N2NcdThkY2JcdTkxYjFcdTkyNjJcdTlhZWVcdTliNDNcdTUwMjNcdTUwOGRcdTU3NGFcdTU5YThcdTVjMjhcdTVlNDdcdTVm''@;'; put 'put ''NzdcdTYyM2ZcdTY1M2VcdTY1YjlcdTY1YzFcdTY2MDlcdTY3OGJcdTY5OWNcdTZlYzJcdTc4YzVcdTdkMjFcdTgwYWFcdTgxODBcdTgyMmJcdTgyYjNcdTg0YTFcdTg2OGNcdThhMmFcdThiMTdcdTkwYTZcdTk2MzJcdTlmOTBcdTUwMGRcdTRmZjNcdWY5NjNcdTU3ZjlcdTVmOThcdTYyZGNc''@;'; put 'put ''dTYzOTJcdTY3NmZcdTZlNDNcdTcxMTlcdTc2YzNcdTgwY2NcdTgwZGFcdTg4ZjRcdTg4ZjVcdTg5MTlcdThjZTBcdThmMjlcdTkxNGRcdTk2NmFcdTRmMmZcdTRmNzBcdTVlMWJcdTY3Y2ZcdTY4MjJcdTc2N2RcdTc2N2VcdTliNDRcdTVlNjFcdTZhMGFcdTcxNjlcdTcxZDRcdTc1NmFcdWY5''@;'; put 'put ''NjRcdTdlNDFcdTg1NDNcdTg1ZTlcdTk4ZGNcdTRmMTBcdTdiNGZcdTdmNzBcdTk1YTVcdTUxZTFcdTVlMDZcdTY4YjVcdTZjM2VcdTZjNGVcdTZjZGJcdTcyYWZcdTdiYzRcdTgzMDNcdTZjZDVcdTc0M2FcdTUwZmJcdTUyODhcdTU4YzFcdTY0ZDhcdTZhOTdcdTc0YTdcdTc2NTZcdWZmZmQi''@;'; put 'put ''LnNwbGl0KCIiKSxFPTA7RSE9QlsyMTldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxOV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjE5XVtFXV09NTYwNjQrRSxMWzU2MDY0K0VdPUJbMjE5XVtFXSk7Zm9yKEJbMjIwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OGE3XHU4NjE3XHU5NWUyXHU5NzM5XHVmOTY1XHU1MzVlXHU1ZjAxXHU4YjhhXHU4ZmE4XHU4ZmFmXHU5''@;'; put 'put ''MDhhXHU1MjI1XHU3N2E1XHU5YzQ5XHU5ZjA4XHU0ZTE5XHU1MDAyXHU1MTc1XHU1YzViXHU1ZTc3XHU2NjFlXHU2NjNhXHU2N2M0XHU2OGM1XHU3MGIzXHU3NTAxXHU3NWM1XHU3OWM5XHU3YWRkXHU4ZjI3XHU5OTIwXHU5YTA4XHU0ZmRkXHU1ODIxXHU1ODMxXHU1YmY2XHU2NjZlXHU2YjY1''@;'; put 'put ''XHU2ZDExXHU2ZTdhXHU2ZjdkXHU3M2U0XHU3NTJiXHU4M2U5XHU4OGRjXHU4OTEzXHU4YjVjXHU4ZjE0XHU0ZjBmXHU1MGQ1XHU1MzEwXHU1MzVjXHU1YjkzXHU1ZmE5XHU2NzBkXHU3OThmXHU4MTc5XHU4MzJmXHU4NTE0XHU4OTA3XHU4OTg2XHU4ZjM5XHU4ZjNiXHU5OWE1XHU5YzEyXHU2''@;'; put 'put ''NzJjXHU0ZTc2XHU0ZmY4XHU1OTQ5XHU1YzAxXHU1Y2VmXHU1Y2YwXHU2MzY3XHU2OGQyXHU3MGZkXHU3MWEyXHU3NDJiXHU3ZTJiXHU4NGVjXHU4NzAyXHU5MDIyXHU5MmQyXHU5Y2YzXHU0ZTBkXHU0ZWQ4XHU0ZmVmXHU1MDg1XHU1MjU2XHU1MjZmXHU1NDI2XHU1NDkwXHU1N2UwXHU1OTJi''@;'; put 'put ''XHU1YTY2XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjIwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjBdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIyMF1bRV1dPTU2MzIwK0UsTFs1NjMyMCtFXT1CWzIyMF1bRV0pO2ZvcihCWzIyMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWI1YVx1NWI3NVx1NWJjY1x1NWU5Y1x1Zjk2Nlx1NjI3Nlx1NjU3N1x1NjVhN1x1''@;'; put 'put ''NmQ2ZVx1NmVhNVx1NzIzNlx1N2IyNlx1N2MzZlx1N2YzNlx1ODE1MFx1ODE1MVx1ODE5YVx1ODI0MFx1ODI5OVx1ODNhOVx1OGEwM1x1OGNhMFx1OGNlNlx1OGNmYlx1OGQ3NFx1OGRiYVx1OTBlOFx1OTFkY1x1OTYxY1x1OTY0NFx1OTlkOVx1OWNlN1x1NTMxN1x1NTIwNlx1NTQyOVx1NTY3''@;'; put 'put ''NFx1NThiM1x1NTk1NFx1NTk2ZVx1NWZmZlx1NjFhNFx1NjI2ZVx1NjYxMFx1NmM3ZVx1NzExYVx1NzZjNlx1N2M4OVx1N2NkZVx1N2QxYlx1ODJhY1x1OGNjMVx1OTZmMFx1Zjk2N1x1NGY1Ylx1NWYxN1x1NWY3Zlx1NjJjMlx1NWQyOVx1NjcwYlx1NjhkYVx1Nzg3Y1x1N2U0M1x1OWQ2Y1x1''@;'; put 'put ''NGUxNVx1NTA5OVx1NTMxNVx1NTMyYVx1NTM1MVx1NTk4M1x1NWE2Mlx1NWU4N1x1NjBiMlx1NjE4YVx1NjI0OVx1NjI3OVx1NjU5MFx1Njc4N1x1NjlhN1x1NmJkNFx1NmJkNlx1NmJkN1x1NmJkOFx1NmNiOFx1Zjk2OFx1NzQzNVx1NzVmYVx1NzgxMlx1Nzg5MVx1NzlkNVx1NzlkOFx1N2M4''@;'; put 'put ''M1x1N2RjYlx1N2ZlMVx1ODBhNVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyMV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjIxXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMjFdW0VdXT01NjU3NitFLExbNTY1NzYrRV09QlsyMjFdW0VdKTtmb3IoQlsyMjJdPSJcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgxM2VcdTgxYzJcdTgzZjJcdTg3MWFcdTg4ZThcdThhYjlc''@;'; put 'put ''dThiNmNcdThjYmJcdTkxMTlcdTk3NWVcdTk4ZGJcdTlmM2JcdTU2YWNcdTViMmFcdTVmNmNcdTY1OGNcdTZhYjNcdTZiYWZcdTZkNWNcdTZmZjFcdTcwMTVcdTcyNWRcdTczYWRcdThjYTdcdThjZDNcdTk4M2JcdTYxOTFcdTZjMzdcdTgwNThcdTlhMDFcdTRlNGRcdTRlOGJcdTRlOWJcdTRl''@;'; put 'put ''ZDVcdTRmM2FcdTRmM2NcdTRmN2ZcdTRmZGZcdTUwZmZcdTUzZjJcdTUzZjhcdTU1MDZcdTU1ZTNcdTU2ZGJcdTU4ZWJcdTU5NjJcdTVhMTFcdTViZWJcdTViZmFcdTVjMDRcdTVkZjNcdTVlMmJcdTVmOTlcdTYwMWRcdTYzNjhcdTY1OWNcdTY1YWZcdTY3ZjZcdTY3ZmJcdTY4YWRcdTZiN2Jc''@;'; put 'put ''dTZjOTlcdTZjZDdcdTZlMjNcdTcwMDlcdTczNDVcdTc4MDJcdTc5M2VcdTc5NDBcdTc5NjBcdTc5YzFcdTdiZTlcdTdkMTdcdTdkNzJcdTgwODZcdTgyMGRcdTgzOGVcdTg0ZDFcdTg2YzdcdTg4ZGZcdThhNTBcdThhNWVcdThiMWRcdThjZGNcdThkNjZcdThmYWRcdTkwYWFcdTk4ZmNcdTk5''@;'; put 'put ''ZGZcdTllOWRcdTUyNGFcdWY5NjlcdTY3MTRcdWY5NmFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyMl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjIyXVtFXV09NTY4MzIrRSxMWzU2ODMyK0VdPUJbMjIyXVtFXSk7Zm9yKEJbMjIzXT0i''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MDk4XHU1MjJhXHU1YzcxXHU2NTYz''@;'; put 'put ''XHU2YzU1XHU3M2NhXHU3NTIzXHU3NTlkXHU3Yjk3XHU4NDljXHU5MTc4XHU5NzMwXHU0ZTc3XHU2NDkyXHU2YmJhXHU3MTVlXHU4NWE5XHU0ZTA5XHVmOTZiXHU2NzQ5XHU2OGVlXHU2ZTE3XHU4MjlmXHU4NTE4XHU4ODZiXHU2M2Y3XHU2ZjgxXHU5MjEyXHU5OGFmXHU0ZTBhXHU1MGI3XHU1''@;'; put 'put ''MGNmXHU1MTFmXHU1NTQ2XHU1NWFhXHU1NjE3XHU1YjQwXHU1YzE5XHU1Y2UwXHU1ZTM4XHU1ZThhXHU1ZWEwXHU1ZWMyXHU2MGYzXHU2ODUxXHU2YTYxXHU2ZTU4XHU3MjNkXHU3MjQwXHU3MmMwXHU3NmY4XHU3OTY1XHU3YmIxXHU3ZmQ0XHU4OGYzXHU4OWY0XHU4YTczXHU4YzYxXHU4Y2Rl''@;'; put 'put ''XHU5NzFjXHU1ODVlXHU3NGJkXHU4Y2ZkXHU1NWM3XHVmOTZjXHU3YTYxXHU3ZDIyXHU4MjcyXHU3MjcyXHU3NTFmXHU3NTI1XHVmOTZkXHU3YjE5XHU1ODg1XHU1OGZiXHU1ZGJjXHU1ZThmXHU1ZWI2XHU1ZjkwXHU2MDU1XHU2MjkyXHU2MzdmXHU2NTRkXHU2NjkxXHU2NmQ5XHU2NmY4XHU2''@;'; put 'put ''ODE2XHU2OGYyXHU3MjgwXHU3NDVlXHU3YjZlXHU3ZDZlXHU3ZGQ2XHU3ZjcyXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjIzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjNdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIyM11bRV1dPTU3MDg4K0UsTFs1NzA4OCtFXT1CWzIyM11bRV0p''@;'; put 'put ''O2ZvcihCWzIyNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODBlNVx1ODIx''@;'; put 'put ''Mlx1ODVhZlx1ODk3Zlx1OGE5M1x1OTAxZFx1OTJlNFx1OWVjZFx1OWYyMFx1NTkxNVx1NTk2ZFx1NWUyZFx1NjBkY1x1NjYxNFx1NjY3M1x1Njc5MFx1NmM1MFx1NmRjNVx1NmY1Zlx1NzdmM1x1NzhhOVx1ODRjNlx1OTFjYlx1OTMyYlx1NGVkOVx1NTBjYVx1NTE0OFx1NTU4NFx1NWIwYlx1''@;'; put 'put ''NWJhM1x1NjI0N1x1NjU3ZVx1NjVjYlx1NmUzMlx1NzE3ZFx1NzQwMVx1NzQ0NFx1NzQ4N1x1NzRiZlx1NzY2Y1x1NzlhYVx1N2RkYVx1N2U1NVx1N2ZhOFx1ODE3YVx1ODFiM1x1ODIzOVx1ODYxYVx1ODdlY1x1OGE3NVx1OGRlM1x1OTA3OFx1OTI5MVx1OTQyNVx1OTk0ZFx1OWJhZVx1NTM2''@;'; put 'put ''OFx1NWM1MVx1Njk1NFx1NmNjNFx1NmQyOVx1NmUyYlx1ODIwY1x1ODU5Ylx1ODkzYlx1OGEyZFx1OGFhYVx1OTZlYVx1OWY2N1x1NTI2MVx1NjZiOVx1NmJiMlx1N2U5Nlx1ODdmZVx1OGQwZFx1OTU4M1x1OTY1ZFx1NjUxZFx1NmQ4OVx1NzFlZVx1Zjk2ZVx1NTdjZVx1NTlkM1x1NWJhY1x1''@;'; put 'put ''NjAyN1x1NjBmYVx1NjIxMFx1NjYxZlx1NjY1Zlx1NzMyOVx1NzNmOVx1NzZkYlx1NzcwMVx1N2I2Y1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyNF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjI0XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMjRdW0VdXT01NzM0NCtFLExbNTczNDQr''@;'; put 'put ''RV09QlsyMjRdW0VdKTtmb3IoQlsyMjVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdTgwNTZcdTgwNzJcdTgxNjVcdThhYTBcdTkxOTJcdTRlMTZcdTUyZTJcdTZiNzJcdTZkMTdcdTdhMDVcdTdiMzlcdTdkMzBcdWY5NmZcdThjYjBcdTUzZWNcdTU2MmZcdTU4NTFcdTViYjVcdTVjMGZcdTVjMTFcdTVkZTJcdTYyNDBcdTYzODNcdTY0MTRcdTY2MmRcdTY4YjNcdTZjYmNc''@;'; put 'put ''dTZkODhcdTZlYWZcdTcwMWZcdTcwYTRcdTcxZDJcdTc1MjZcdTc1OGZcdTc1OGVcdTc2MTlcdTdiMTFcdTdiZTBcdTdjMmJcdTdkMjBcdTdkMzlcdTg1MmNcdTg1NmRcdTg2MDdcdThhMzRcdTkwMGRcdTkwNjFcdTkwYjVcdTkyYjdcdTk3ZjZcdTlhMzdcdTRmZDdcdTVjNmNcdTY3NWZcdTZk''@;'; put 'put ''OTFcdTdjOWZcdTdlOGNcdThiMTZcdThkMTZcdTkwMWZcdTViNmJcdTVkZmRcdTY0MGRcdTg0YzBcdTkwNWNcdTk4ZTFcdTczODdcdTViOGJcdTYwOWFcdTY3N2VcdTZkZGVcdThhMWZcdThhYTZcdTkwMDFcdTk4MGNcdTUyMzdcdWY5NzBcdTcwNTFcdTc4OGVcdTkzOTZcdTg4NzBcdTkxZDdc''@;'; put 'put ''dTRmZWVcdTUzZDdcdTU1ZmRcdTU2ZGFcdTU3ODJcdTU4ZmRcdTVhYzJcdTViODhcdTVjYWJcdTVjYzBcdTVlMjVcdTYxMDFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyNV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjI1XVtFXV09NTc2''@;'; put 'put ''MDArRSxMWzU3NjAwK0VdPUJbMjI1XVtFXSk7Zm9yKEJbMjI2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHU2MjBkXHU2MjRiXHU2Mzg4XHU2NDFjXHU2NTM2XHU2NTc4XHU2YTM5XHU2YjhhXHU2YzM0XHU2ZDE5XHU2ZjMxXHU3MWU3XHU3MmU5XHU3Mzc4XHU3NDA3XHU3NGIyXHU3NjI2XHU3NzYxXHU3OWMwXHU3YTU3XHU3YWVhXHU3Y2I5XHU3ZDhmXHU3ZGFjXHU3ZTYx''@;'; put 'put ''XHU3ZjllXHU4MTI5XHU4MzMxXHU4NDkwXHU4NGRhXHU4NWVhXHU4ODk2XHU4YWIwXHU4YjkwXHU4ZjM4XHU5MDQyXHU5MDgzXHU5MTZjXHU5Mjk2XHU5MmI5XHU5NjhiXHU5NmE3XHU5NmE4XHU5NmQ2XHU5NzAwXHU5ODA4XHU5OTk2XHU5YWQzXHU5YjFhXHU1M2Q0XHU1ODdlXHU1OTE5XHU1''@;'; put 'put ''YjcwXHU1YmJmXHU2ZGQxXHU2ZjVhXHU3MTlmXHU3NDIxXHU3NGI5XHU4MDg1XHU4M2ZkXHU1ZGUxXHU1Zjg3XHU1ZmFhXHU2MDQyXHU2NWVjXHU2ODEyXHU2OTZmXHU2YTUzXHU2Yjg5XHU2ZDM1XHU2ZGYzXHU3M2UzXHU3NmZlXHU3N2FjXHU3YjRkXHU3ZDE0XHU4MTIzXHU4MjFjXHU4MzQw''@;'; put 'put ''XHU4NGY0XHU4NTYzXHU4YTYyXHU4YWM0XHU5MTg3XHU5MzFlXHU5ODA2XHU5OWI0XHU2MjBjXHU4ODUzXHU4ZmYwXHU5MjY1XHU1ZDA3XHU1ZDI3XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjI2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjZdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtC''@;'; put 'put ''WzIyNl1bRV1dPTU3ODU2K0UsTFs1Nzg1NitFXT1CWzIyNl1bRV0pO2ZvcihCWzIyN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWQ2OVx1NzQ1Zlx1ODE5ZFx1ODc2OFx1NmZkNVx1NjJmZVx1N2ZkMlx1ODkzNlx1ODk3Mlx1NGUxZVx1NGU1OFx1NTBlN1x1NTJkZFx1NTM0N1x1NjI3Zlx1NjYwN1x1N2U2OVx1ODgwNVx1OTY1ZVx1NGY4ZFx1NTMxOVx1NTYzNlx1NTlj''@;'; put 'put ''Ylx1NWFhNFx1NWMzOFx1NWM0ZVx1NWM0ZFx1NWUwMlx1NWYxMVx1NjA0M1x1NjViZFx1NjYyZlx1NjY0Mlx1NjdiZVx1NjdmNFx1NzMxY1x1NzdlMlx1NzkzYVx1N2ZjNVx1ODQ5NFx1ODRjZFx1ODk5Nlx1OGE2Nlx1OGE2OVx1OGFlMVx1OGM1NVx1OGM3YVx1NTdmNFx1NWJkNFx1NWYwZlx1''@;'; put 'put ''NjA2Zlx1NjJlZFx1NjkwZFx1NmI5Nlx1NmU1Y1x1NzE4NFx1N2JkMlx1ODc1NVx1OGI1OFx1OGVmZVx1OThkZlx1OThmZVx1NGYzOFx1NGY4MVx1NGZlMVx1NTQ3Ylx1NWEyMFx1NWJiOFx1NjEzY1x1NjViMFx1NjY2OFx1NzFmY1x1NzUzM1x1Nzk1ZVx1N2QzM1x1ODE0ZVx1ODFlM1x1ODM5''@;'; put 'put ''OFx1ODVhYVx1ODVjZVx1ODcwM1x1OGEwYVx1OGVhYlx1OGY5Ylx1Zjk3MVx1OGZjNVx1NTkzMVx1NWJhNFx1NWJlNlx1NjA4OVx1NWJlOVx1NWMwYlx1NWZjM1x1NmM4MVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyN10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjI3XVtFXS5jaGFyQ29k''@;'; put 'put ''ZUF0KDApJiYobWVbQlsyMjddW0VdXT01ODExMitFLExbNTgxMTIrRV09QlsyMjddW0VdKTtmb3IoQlsyMjhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWY5NzJcdTZkZjFcdTcwMGJcdTc1MWFcdTgyYWZcdThhZjZcdTRlYzBcdTUzNDFcdWY5NzNcdTk2ZDlcdTZjMGZcdTRlOWVcdTRmYzRcdTUxNTJcdTU1NWVcdTVhMjVcdTVjZThcdTYyMTFcdTcyNTlcdTgyYmRcdTgz''@;'; put 'put ''YWFcdTg2ZmVcdTg4NTlcdThhMWRcdTk2M2ZcdTk2YzVcdTk5MTNcdTlkMDlcdTlkNWRcdTU4MGFcdTVjYjNcdTVkYmRcdTVlNDRcdTYwZTFcdTYxMTVcdTYzZTFcdTZhMDJcdTZlMjVcdTkxMDJcdTkzNTRcdTk4NGVcdTljMTBcdTlmNzdcdTViODlcdTVjYjhcdTYzMDlcdTY2NGZcdTY4NDhc''@;'; put 'put ''dTc3M2NcdTk2YzFcdTk3OGRcdTk4NTRcdTliOWZcdTY1YTFcdThiMDFcdThlY2JcdTk1YmNcdTU1MzVcdTVjYTlcdTVkZDZcdTVlYjVcdTY2OTdcdTc2NGNcdTgzZjRcdTk1YzdcdTU4ZDNcdTYyYmNcdTcyY2VcdTlkMjhcdTRlZjBcdTU5MmVcdTYwMGZcdTY2M2JcdTZiODNcdTc5ZTdcdTlk''@;'; put 'put ''MjZcdTUzOTNcdTU0YzBcdTU3YzNcdTVkMTZcdTYxMWJcdTY2ZDZcdTZkYWZcdTc4OGRcdTgyN2VcdTk2OThcdTk3NDRcdTUzODRcdTYyN2NcdTYzOTZcdTZkYjJcdTdlMGFcdTgxNGJcdTk4NGRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIy''@;'; put 'put ''OF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjI4XVtFXV09NTgzNjgrRSxMWzU4MzY4K0VdPUJbMjI4XVtFXSk7Zm9yKEJbMjI5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YWZiXHU3ZjRjXHU5ZGFmXHU5ZTFhXHU0ZTVmXHU1MDNiXHU1MWI2XHU1OTFjXHU2MGY5XHU2M2Y2XHU2OTMwXHU3MjNhXHU4MDM2XHVmOTc0XHU5MWNlXHU1ZjMxXHVmOTc1XHVmOTc2XHU3''@;'; put 'put ''ZDA0XHU4MmU1XHU4NDZmXHU4NGJiXHU4NWU1XHU4ZThkXHVmOTc3XHU0ZjZmXHVmOTc4XHVmOTc5XHU1OGU0XHU1YjQzXHU2MDU5XHU2M2RhXHU2NTE4XHU2NTZkXHU2Njk4XHVmOTdhXHU2OTRhXHU2YTIzXHU2ZDBiXHU3MDAxXHU3MTZjXHU3NWQyXHU3NjBkXHU3OWIzXHU3YTcwXHVmOTdi''@;'; put 'put ''XHU3ZjhhXHVmOTdjXHU4OTQ0XHVmOTdkXHU4YjkzXHU5MWMwXHU5NjdkXHVmOTdlXHU5OTBhXHU1NzA0XHU1ZmExXHU2NWJjXHU2ZjAxXHU3NjAwXHU3OWE2XHU4YTllXHU5OWFkXHU5YjVhXHU5ZjZjXHU1MTA0XHU2MWI2XHU2MjkxXHU2YThkXHU4MWM2XHU1MDQzXHU1ODMwXHU1ZjY2XHU3''@;'; put 'put ''MTA5XHU4YTAwXHU4YWZhXHU1YjdjXHU4NjE2XHU0ZmZhXHU1MTNjXHU1NmI0XHU1OTQ0XHU2M2E5XHU2ZGY5XHU1ZGFhXHU2OTZkXHU1MTg2XHU0ZTg4XHU0ZjU5XHVmOTdmXHVmOTgwXHVmOTgxXHU1OTgyXHVmOTgyXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjI5XS5sZW5ndGg7KytF''@;'; put 'put ''KTY1NTMzIT09QlsyMjldW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIyOV1bRV1dPTU4NjI0K0UsTFs1ODYyNCtFXT1CWzIyOV1bRV0pO2ZvcihCWzIzMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Zjk4M1x1NmI1Zlx1NmM1ZFx1Zjk4NFx1NzRiNVx1NzkxNlx1Zjk4NVx1ODIwN1x1ODI0NVx1ODMzOVx1OGYzZlx1OGY1ZFx1Zjk4Nlx1OTkxOFx1Zjk4N1x1Zjk4OFx1''@;'; put 'put ''Zjk4OVx1NGVhNlx1Zjk4YVx1NTdkZlx1NWY3OVx1NjYxM1x1Zjk4Ylx1Zjk4Y1x1NzVhYlx1N2U3OVx1OGI2Zlx1Zjk4ZFx1OTAwNlx1OWE1Ylx1NTZhNVx1NTgyN1x1NTlmOFx1NWExZlx1NWJiNFx1Zjk4ZVx1NWVmNlx1Zjk4Zlx1Zjk5MFx1NjM1MFx1NjMzYlx1Zjk5MVx1NjkzZFx1NmM4''@;'; put 'put ''N1x1NmNiZlx1NmQ4ZVx1NmQ5M1x1NmRmNVx1NmYxNFx1Zjk5Mlx1NzBkZlx1NzEzNlx1NzE1OVx1Zjk5M1x1NzFjM1x1NzFkNVx1Zjk5NFx1Nzg0Zlx1Nzg2Zlx1Zjk5NVx1N2I3NVx1N2RlM1x1Zjk5Nlx1N2UyZlx1Zjk5N1x1ODg0ZFx1OGVkZlx1Zjk5OFx1Zjk5OVx1Zjk5YVx1OTI1Ylx1''@;'; put 'put ''Zjk5Ylx1OWNmNlx1Zjk5Y1x1Zjk5ZFx1Zjk5ZVx1NjA4NVx1NmQ4NVx1Zjk5Zlx1NzFiMVx1ZjlhMFx1ZjlhMVx1OTViMVx1NTNhZFx1ZjlhMlx1ZjlhM1x1ZjlhNFx1NjdkM1x1ZjlhNVx1NzA4ZVx1NzEzMFx1NzQzMFx1ODI3Nlx1ODJkMlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIz''@;'; put 'put ''MF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjMwXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMzBdW0VdXT01ODg4MCtFLExbNTg4ODArRV09QlsyMzBdW0VdKTtmb3IoQlsyMzFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWY5YTZcdTk1YmJcdTlhZTVcdTllN2RcdTY2YzRcdWY5YTdcdTcxYzFcdTg0NDlcdWY5YThcdWY5YTlcdTU4NGJcdWY5YWFcdWY5YWJcdTVkYjhc''@;'; put 'put ''dTVmNzFcdWY5YWNcdTY2MjBcdTY2OGVcdTY5NzlcdTY5YWVcdTZjMzhcdTZjZjNcdTZlMzZcdTZmNDFcdTZmZGFcdTcwMWJcdTcwMmZcdTcxNTBcdTcxZGZcdTczNzBcdWY5YWRcdTc0NWJcdWY5YWVcdTc0ZDRcdTc2YzhcdTdhNGVcdTdlOTNcdWY5YWZcdWY5YjBcdTgyZjFcdThhNjBcdThm''@;'; put 'put ''Y2VcdWY5YjFcdTkzNDhcdWY5YjJcdTk3MTlcdWY5YjNcdWY5YjRcdTRlNDJcdTUwMmFcdWY5YjVcdTUyMDhcdTUzZTFcdTY2ZjNcdTZjNmRcdTZmY2FcdTczMGFcdTc3N2ZcdTdhNjJcdTgyYWVcdTg1ZGRcdTg2MDJcdWY5YjZcdTg4ZDRcdThhNjNcdThiN2RcdThjNmJcdWY5YjdcdTkyYjNc''@;'; put 'put ''dWY5YjhcdTk3MTNcdTk4MTBcdTRlOTRcdTRmMGRcdTRmYzlcdTUwYjJcdTUzNDhcdTU0M2VcdTU0MzNcdTU1ZGFcdTU4NjJcdTU4YmFcdTU5NjdcdTVhMWJcdTViZTRcdTYwOWZcdWY5YjlcdTYxY2FcdTY1NTZcdTY1ZmZcdTY2NjRcdTY4YTdcdTZjNWFcdTZmYjNcdWZmZmQiLnNwbGl0KCIi''@;'; put 'put ''KSxFPTA7RSE9QlsyMzFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzMV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjMxXVtFXV09NTkxMzYrRSxMWzU5MTM2K0VdPUJbMjMxXVtFXSk7Zm9yKEJbMjMyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MGNmXHU3MWFjXHU3MzUyXHU3YjdkXHU4NzA4XHU4YWE0XHU5YzMyXHU5ZjA3XHU1YzRiXHU2YzgzXHU3MzQ0XHU3Mzg5''@;'; put 'put ''XHU5MjNhXHU2ZWFiXHU3NDY1XHU3NjFmXHU3YTY5XHU3ZTE1XHU4NjBhXHU1MTQwXHU1OGM1XHU2NGMxXHU3NGVlXHU3NTE1XHU3NjcwXHU3ZmMxXHU5MDk1XHU5NmNkXHU5OTU0XHU2ZTI2XHU3NGU2XHU3YWE5XHU3YWFhXHU4MWU1XHU4NmQ5XHU4Nzc4XHU4YTFiXHU1YTQ5XHU1YjhjXHU1''@;'; put 'put ''YjliXHU2OGExXHU2OTAwXHU2ZDYzXHU3M2E5XHU3NDEzXHU3NDJjXHU3ODk3XHU3ZGU5XHU3ZmViXHU4MTE4XHU4MTU1XHU4MzllXHU4YzRjXHU5NjJlXHU5ODExXHU2NmYwXHU1ZjgwXHU2NWZhXHU2Nzg5XHU2YzZhXHU3MzhiXHU1MDJkXHU1YTAzXHU2YjZhXHU3N2VlXHU1OTE2XHU1ZDZj''@;'; put 'put ''XHU1ZGNkXHU3MzI1XHU3NTRmXHVmOWJhXHVmOWJiXHU1MGU1XHU1MWY5XHU1ODJmXHU1OTJkXHU1OTk2XHU1OWRhXHU1YmU1XHVmOWJjXHVmOWJkXHU1ZGEyXHU2MmQ3XHU2NDE2XHU2NDkzXHU2NGZlXHVmOWJlXHU2NmRjXHVmOWJmXHU2YTQ4XHVmOWMwXHU3MWZmXHU3NDY0XHVmOWMxXHVm''@;'; put 'put ''ZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjMyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzJdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIzMl1bRV1dPTU5MzkyK0UsTFs1OTM5MitFXT1CWzIzMl1bRV0pO2ZvcihCWzIzM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2E4OFx1N2FhZlx1N2U0N1x1N2U1ZVx1ODAwMFx1ODE3MFx1ZjljMlx1ODdlZlx1ODk4MVx1OGIy''@;'; put 'put ''MFx1OTA1OVx1ZjljM1x1OTA4MFx1OTk1Mlx1NjE3ZVx1NmIzMlx1NmQ3NFx1N2UxZlx1ODkyNVx1OGZiMVx1NGZkMVx1NTBhZFx1NTE5N1x1NTJjN1x1NTdjN1x1NTg4OVx1NWJiOVx1NWViOFx1NjE0Mlx1Njk5NVx1NmQ4Y1x1NmU2N1x1NmViNlx1NzE5NFx1NzQ2Mlx1NzUyOFx1NzUyY1x1''@;'; put 'put ''ODA3M1x1ODMzOFx1ODRjOVx1OGUwYVx1OTM5NFx1OTNkZVx1ZjljNFx1NGU4ZVx1NGY1MVx1NTA3Nlx1NTEyYVx1NTNjOFx1NTNjYlx1NTNmM1x1NWI4N1x1NWJkM1x1NWMyNFx1NjExYVx1NjE4Mlx1NjVmNFx1NzI1Ylx1NzM5N1x1NzQ0MFx1NzZjMlx1Nzk1MFx1Nzk5MVx1NzliOVx1N2Qw''@;'; put 'put ''Nlx1N2ZiZFx1ODI4Ylx1ODVkNVx1ODY1ZVx1OGZjMlx1OTA0N1x1OTBmNVx1OTFlYVx1OTY4NVx1OTZlOFx1OTZlOVx1NTJkNlx1NWY2N1x1NjVlZFx1NjYzMVx1NjgyZlx1NzE1Y1x1N2EzNlx1OTBjMVx1OTgwYVx1NGU5MVx1ZjljNVx1NmE1Mlx1NmI5ZVx1NmY5MFx1NzE4OVx1ODAxOFx1''@;'; put 'put ''ODJiOFx1ODU1M1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzM10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjMzXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMzNdW0VdXT01OTY0OCtFLExbNTk2NDgrRV09QlsyMzNdW0VdKTtmb3IoQlsyMzRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkwNGJcdTk2OTVcdTk2ZjJcdTk3ZmJcdTg1MWFcdTliMzFcdTRlOTBcdTcx''@;'; put 'put ''OGFcdTk2YzRcdTUxNDNcdTUzOWZcdTU0ZTFcdTU3MTNcdTU3MTJcdTU3YTNcdTVhOWJcdTVhYzRcdTViYzNcdTYwMjhcdTYxM2ZcdTYzZjRcdTZjODVcdTZkMzlcdTZlNzJcdTZlOTBcdTcyMzBcdTczM2ZcdTc0NTdcdTgyZDFcdTg4ODFcdThmNDVcdTkwNjBcdWY5YzZcdTk2NjJcdTk4NThc''@;'; put 'put ''dTlkMWJcdTY3MDhcdThkOGFcdTkyNWVcdTRmNGRcdTUwNDlcdTUwZGVcdTUzNzFcdTU3MGRcdTU5ZDRcdTVhMDFcdTVjMDlcdTYxNzBcdTY2OTBcdTZlMmRcdTcyMzJcdTc0NGJcdTdkZWZcdTgwYzNcdTg0MGVcdTg0NjZcdTg1M2ZcdTg3NWZcdTg4NWJcdTg5MThcdThiMDJcdTkwNTVcdTk3''@;'; put 'put ''Y2JcdTliNGZcdTRlNzNcdTRmOTFcdTUxMTJcdTUxNmFcdWY5YzdcdTU1MmZcdTU1YTlcdTViN2FcdTViYTVcdTVlN2NcdTVlN2RcdTVlYmVcdTYwYTBcdTYwZGZcdTYxMDhcdTYxMDlcdTYzYzRcdTY1MzhcdTY3MDlcdWY5YzhcdTY3ZDRcdTY3ZGFcdWY5YzlcdTY5NjFcdTY5NjJcdTZjYjlc''@;'; put 'put ''dTZkMjdcdWY5Y2FcdTZlMzhcdWY5Y2JcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzNF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjM0XVtFXV09NTk5MDQrRSxMWzU5OTA0K0VdPUJbMjM0XVtFXSk7Zm9yKEJbMjM1XT0iXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZmUxXHU3MzM2XHU3MzM3XHVmOWNjXHU3NDVjXHU3''@;'; put 'put ''NTMxXHVmOWNkXHU3NjUyXHVmOWNlXHVmOWNmXHU3ZGFkXHU4MWZlXHU4NDM4XHU4OGQ1XHU4YTk4XHU4YWRiXHU4YWVkXHU4ZTMwXHU4ZTQyXHU5MDRhXHU5MDNlXHU5MDdhXHU5MTQ5XHU5MWM5XHU5MzZlXHVmOWQwXHVmOWQxXHU1ODA5XHVmOWQyXHU2YmQzXHU4MDg5XHU4MGIyXHVmOWQz''@;'; put 'put ''XHVmOWQ0XHU1MTQxXHU1OTZiXHU1YzM5XHVmOWQ1XHVmOWQ2XHU2ZjY0XHU3M2E3XHU4MGU0XHU4ZDA3XHVmOWQ3XHU5MjE3XHU5NThmXHVmOWQ4XHVmOWQ5XHVmOWRhXHVmOWRiXHU4MDdmXHU2MjBlXHU3MDFjXHU3ZDY4XHU4NzhkXHVmOWRjXHU1N2EwXHU2MDY5XHU2MTQ3XHU2YmI3XHU4''@;'; put 'put ''YWJlXHU5MjgwXHU5NmIxXHU0ZTU5XHU1NDFmXHU2ZGViXHU4NTJkXHU5NjcwXHU5N2YzXHU5OGVlXHU2M2Q2XHU2Y2UzXHU5MDkxXHU1MWRkXHU2MWM5XHU4MWJhXHU5ZGY5XHU0ZjlkXHU1MDFhXHU1MTAwXHU1YjljXHU2MTBmXHU2MWZmXHU2NGVjXHU2OTA1XHU2YmM1XHU3NTkxXHU3N2Uz''@;'; put 'put ''XHU3ZmE5XHU4MjY0XHU4NThmXHU4N2ZiXHU4ODYzXHU4YWJjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjM1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzVdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIzNV1bRV1dPTYwMTYwK0UsTFs2MDE2MCtFXT1CWzIzNV1bRV0pO2ZvcihCWzIz''@;'; put 'put ''Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGI3MFx1OTFhYlx1NGU4Y1x1''@;'; put 'put ''NGVlNVx1NGYwYVx1ZjlkZFx1ZjlkZVx1NTkzN1x1NTllOFx1ZjlkZlx1NWRmMlx1NWYxYlx1NWY1Ylx1NjAyMVx1ZjllMFx1ZjllMVx1ZjllMlx1ZjllM1x1NzIzZVx1NzNlNVx1ZjllNFx1NzU3MFx1NzVjZFx1ZjllNVx1NzlmYlx1ZjllNlx1ODAwY1x1ODAzM1x1ODA4NFx1ODJlMVx1ODM1''@;'; put 'put ''MVx1ZjllN1x1ZjllOFx1OGNiZFx1OGNiM1x1OTA4N1x1ZjllOVx1ZjllYVx1OThmNFx1OTkwY1x1ZjllYlx1ZjllY1x1NzAzN1x1NzZjYVx1N2ZjYVx1N2ZjY1x1N2ZmY1x1OGIxYVx1NGViYVx1NGVjMVx1NTIwM1x1NTM3MFx1ZjllZFx1NTRiZFx1NTZlMFx1NTlmYlx1NWJjNVx1NWYxNVx1''@;'; put 'put ''NWZjZFx1NmU2ZVx1ZjllZVx1ZjllZlx1N2Q2YVx1ODMzNVx1ZjlmMFx1ODY5M1x1OGE4ZFx1ZjlmMVx1OTc2ZFx1OTc3N1x1ZjlmMlx1ZjlmM1x1NGUwMFx1NGY1YVx1NGY3ZVx1NThmOVx1NjVlNVx1NmVhMlx1OTAzOFx1OTNiMFx1OTliOVx1NGVmYlx1NThlY1x1NTk4YVx1NTlkOVx1NjA0''@;'; put 'put ''MVx1ZjlmNFx1ZjlmNVx1N2ExNFx1ZjlmNlx1ODM0Zlx1OGNjM1x1NTE2NVx1NTM0NFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzNl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjM2XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMzZdW0VdXT02MDQxNitFLExbNjA0MTYrRV09QlsyMzZd''@;'; put 'put ''W0VdKTtmb3IoQlsyMzddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWY5Zjdc''@;'; put 'put ''dWY5ZjhcdWY5ZjlcdTRlY2RcdTUyNjlcdTViNTVcdTgyYmZcdTRlZDRcdTUyM2FcdTU0YThcdTU5YzlcdTU5ZmZcdTViNTBcdTViNTdcdTViNWNcdTYwNjNcdTYxNDhcdTZlY2JcdTcwOTlcdTcxNmVcdTczODZcdTc0ZjdcdTc1YjVcdTc4YzFcdTdkMmJcdTgwMDVcdTgxZWFcdTgzMjhcdTg1''@;'; put 'put ''MTdcdTg1YzlcdThhZWVcdThjYzdcdTk2Y2NcdTRmNWNcdTUyZmFcdTU2YmNcdTY1YWJcdTY2MjhcdTcwN2NcdTcwYjhcdTcyMzVcdTdkYmRcdTgyOGRcdTkxNGNcdTk2YzBcdTlkNzJcdTViNzFcdTY4ZTdcdTZiOThcdTZmN2FcdTc2ZGVcdTVjOTFcdTY2YWJcdTZmNWJcdTdiYjRcdTdjMmFc''@;'; put 'put ''dTg4MzZcdTk2ZGNcdTRlMDhcdTRlZDdcdTUzMjBcdTU4MzRcdTU4YmJcdTU4ZWZcdTU5NmNcdTVjMDdcdTVlMzNcdTVlODRcdTVmMzVcdTYzOGNcdTY2YjJcdTY3NTZcdTZhMWZcdTZhYTNcdTZiMGNcdTZmM2ZcdTcyNDZcdWY5ZmFcdTczNTBcdTc0OGJcdTdhZTBcdTdjYTdcdTgxNzhcdTgx''@;'; put 'put ''ZGZcdTgxZTdcdTgzOGFcdTg0NmNcdTg1MjNcdTg1OTRcdTg1Y2ZcdTg4ZGRcdThkMTNcdTkxYWNcdTk1NzdcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzN11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjM3XVtFXV09NjA2NzIrRSxMWzYw''@;'; put 'put ''NjcyK0VdPUJbMjM3XVtFXSk7Zm9yKEJbMjM4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHU5NjljXHU1MThkXHU1NGM5XHU1NzI4XHU1YmIwXHU2MjRkXHU2NzUwXHU2ODNkXHU2ODkzXHU2ZTNkXHU2ZWQzXHU3MDdkXHU3ZTIxXHU4OGMxXHU4Y2ExXHU4ZjA5XHU5ZjRiXHU5ZjRlXHU3MjJkXHU3YjhmXHU4YWNkXHU5MzFhXHU0ZjQ3XHU0ZjRlXHU1MTMyXHU1NDgwXHU1''@;'; put 'put ''OWQwXHU1ZTk1XHU2MmI1XHU2Nzc1XHU2OTZlXHU2YTE3XHU2Y2FlXHU2ZTFhXHU3MmQ5XHU3MzJhXHU3NWJkXHU3YmI4XHU3ZDM1XHU4MmU3XHU4M2Y5XHU4NDU3XHU4NWY3XHU4YTViXHU4Y2FmXHU4ZTg3XHU5MDE5XHU5MGI4XHU5NmNlXHU5ZjVmXHU1MmUzXHU1NDBhXHU1YWUxXHU1YmMy''@;'; put 'put ''XHU2NDU4XHU2NTc1XHU2ZWY0XHU3MmM0XHVmOWZiXHU3Njg0XHU3YTRkXHU3YjFiXHU3YzRkXHU3ZTNlXHU3ZmRmXHU4MzdiXHU4YjJiXHU4Y2NhXHU4ZDY0XHU4ZGUxXHU4ZTVmXHU4ZmVhXHU4ZmY5XHU5MDY5XHU5M2QxXHU0ZjQzXHU0ZjdhXHU1MGIzXHU1MTY4XHU1MTc4XHU1MjRkXHU1''@;'; put 'put ''MjZhXHU1ODYxXHU1ODdjXHU1OTYwXHU1YzA4XHU1YzU1XHU1ZWRiXHU2MDliXHU2MjMwXHU2ODEzXHU2YmJmXHU2YzA4XHU2ZmIxXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjM4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzhdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIzOF1bRV1d''@;'; put 'put ''PTYwOTI4K0UsTFs2MDkyOCtFXT1CWzIzOF1bRV0pO2ZvcihCWzIzOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzE0ZVx1NzQyMFx1NzUzMFx1NzUzOFx1NzU1MVx1NzY3Mlx1N2I0Y1x1N2I4Ylx1N2JhZFx1N2JjNlx1N2U4Zlx1OGE2ZVx1OGYzZVx1OGY0OVx1OTIzZlx1OTI5M1x1OTMyMlx1OTQyYlx1OTZmYlx1OTg1YVx1OTg2Ylx1OTkxZVx1NTIwN1x1NjIyYVx1''@;'; put 'put ''NjI5OFx1NmQ1OVx1NzY2NFx1N2FjYVx1N2JjMFx1N2Q3Nlx1NTM2MFx1NWNiZVx1NWU5N1x1NmYzOFx1NzBiOVx1N2M5OFx1OTcxMVx1OWI4ZVx1OWVkZVx1NjNhNVx1NjQ3YVx1ODc3Nlx1NGUwMVx1NGU5NVx1NGVhZFx1NTA1Y1x1NTA3NVx1NTQ0OFx1NTljM1x1NWI5YVx1NWU0MFx1NWVh''@;'; put 'put ''ZFx1NWVmN1x1NWY4MVx1NjBjNVx1NjMzYVx1NjUzZlx1NjU3NFx1NjVjY1x1NjY3Nlx1NjY3OFx1NjdmZVx1Njk2OFx1NmE4OVx1NmI2M1x1NmM0MFx1NmRjMFx1NmRlOFx1NmUxZlx1NmU1ZVx1NzAxZVx1NzBhMVx1NzM4ZVx1NzNmZFx1NzUzYVx1Nzc1Ylx1Nzg4N1x1Nzk4ZVx1N2EwYlx1''@;'; put 'put ''N2E3ZFx1N2NiZVx1N2Q4ZVx1ODI0N1x1OGEwMlx1OGFlYVx1OGM5ZVx1OTEyZFx1OTE0YVx1OTFkOFx1OTI2Nlx1OTJjY1x1OTMyMFx1OTcwNlx1OTc1Nlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzOV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjM5XVtFXS5jaGFyQ29kZUF0KDApJiYo''@;'; put 'put ''bWVbQlsyMzldW0VdXT02MTE4NCtFLExbNjExODQrRV09QlsyMzldW0VdKTtmb3IoQlsyNDBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk3NWNcdTk4MDJcdTlmMGVcdTUyMzZcdTUyOTFcdTU1N2NcdTU4MjRcdTVlMWRcdTVmMWZcdTYwOGNcdTYzZDBcdTY4YWZcdTZmZGZcdTc5NmRcdTdiMmNcdTgxY2RcdTg1YmFcdTg4ZmRcdThhZjhcdThlNDRcdTkxOGRcdTk2NjRc''@;'; put 'put ''dTk2OWJcdTk3M2RcdTk4NGNcdTlmNGFcdTRmY2VcdTUxNDZcdTUxY2JcdTUyYTlcdTU2MzJcdTVmMTRcdTVmNmJcdTYzYWFcdTY0Y2RcdTY1ZTlcdTY2NDFcdTY2ZmFcdTY2ZjlcdTY3MWRcdTY4OWRcdTY4ZDdcdTY5ZmRcdTZmMTVcdTZmNmVcdTcxNjdcdTcxZTVcdTcyMmFcdTc0YWFcdTc3''@;'; put 'put ''M2FcdTc5NTZcdTc5NWFcdTc5ZGZcdTdhMjBcdTdhOTVcdTdjOTdcdTdjZGZcdTdkNDRcdTdlNzBcdTgwODdcdTg1ZmJcdTg2YTRcdThhNTRcdThhYmZcdThkOTlcdThlODFcdTkwMjBcdTkwNmRcdTkxZTNcdTk2M2JcdTk2ZDVcdTljZTVcdTY1Y2ZcdTdjMDdcdThkYjNcdTkzYzNcdTViNThc''@;'; put 'put ''dTVjMGFcdTUzNTJcdTYyZDlcdTczMWRcdTUwMjdcdTViOTdcdTVmOWVcdTYwYjBcdTYxNmJcdTY4ZDVcdTZkZDlcdTc0MmVcdTdhMmVcdTdkNDJcdTdkOWNcdTdlMzFcdTgxNmJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0MF1bRV0uY2hh''@;'; put 'put ''ckNvZGVBdCgwKSYmKG1lW0JbMjQwXVtFXV09NjE0NDArRSxMWzYxNDQwK0VdPUJbMjQwXVtFXSk7Zm9yKEJbMjQxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ZTJhXHU4ZTM1XHU5MzdlXHU5NDE4XHU0ZjUwXHU1NzUwXHU1ZGU2XHU1ZWE3XHU2MzJiXHU3ZjZhXHU0ZTNiXHU0ZjRmXHU0ZjhmXHU1MDVhXHU1OWRkXHU4MGM0XHU1NDZhXHU1NDY4XHU1NWZlXHU1OTRm''@;'; put 'put ''XHU1Yjk5XHU1ZGRlXHU1ZWRhXHU2NjVkXHU2NzMxXHU2N2YxXHU2ODJhXHU2Y2U4XHU2ZDMyXHU2ZTRhXHU2ZjhkXHU3MGI3XHU3M2UwXHU3NTg3XHU3YzRjXHU3ZDAyXHU3ZDJjXHU3ZGEyXHU4MjFmXHU4NmRiXHU4YTNiXHU4YTg1XHU4ZDcwXHU4ZThhXHU4ZjMzXHU5MDMxXHU5MTRlXHU5''@;'; put 'put ''MTUyXHU5NDQ0XHU5OWQwXHU3YWY5XHU3Y2E1XHU0ZmNhXHU1MTAxXHU1MWM2XHU1N2M4XHU1YmVmXHU1Y2ZiXHU2NjU5XHU2YTNkXHU2ZDVhXHU2ZTk2XHU2ZmVjXHU3MTBjXHU3NTZmXHU3YWUzXHU4ODIyXHU5MDIxXHU5MDc1XHU5NmNiXHU5OWZmXHU4MzAxXHU0ZTJkXHU0ZWYyXHU4ODQ2''@;'; put 'put ''XHU5MWNkXHU1MzdkXHU2YWRiXHU2OTZiXHU2YzQxXHU4NDdhXHU1ODllXHU2MThlXHU2NmZlXHU2MmVmXHU3MGRkXHU3NTExXHU3NWM3XHU3ZTUyXHU4NGI4XHU4YjQ5XHU4ZDA4XHU0ZTRiXHU1M2VhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQxXS5sZW5ndGg7KytFKTY1NTMzIT09''@;'; put 'put ''QlsyNDFdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzI0MV1bRV1dPTYxNjk2K0UsTFs2MTY5NitFXT1CWzI0MV1bRV0pO2ZvcihCWzI0Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTRhYlx1NTczMFx1NTc0MFx1NWZkN1x1NjMwMVx1NjMwN1x1NjQ2Zlx1NjUyZlx1NjVlOFx1NjY3YVx1Njc5ZFx1NjdiM1x1NmI2Mlx1NmM2MFx1NmM5YVx1NmYyY1x1NzdlNVx1Nzgy''@;'; put 'put ''NVx1Nzk0OVx1Nzk1N1x1N2QxOVx1ODBhMlx1ODEwMlx1ODFmM1x1ODI5ZFx1ODJiN1x1ODcxOFx1OGE4Y1x1ZjlmY1x1OGQwNFx1OGRiZVx1OTA3Mlx1NzZmNFx1N2ExOVx1N2EzN1x1N2U1NFx1ODA3N1x1NTUwN1x1NTVkNFx1NTg3NVx1NjMyZlx1NjQyMlx1NjY0OVx1NjY0Ylx1Njg2ZFx1''@;'; put 'put ''Njk5Ylx1NmI4NFx1NmQyNVx1NmViMVx1NzNjZFx1NzQ2OFx1NzRhMVx1NzU1Ylx1NzViOVx1NzZlMVx1NzcxZVx1Nzc4Ylx1NzllNlx1N2UwOVx1N2UxZFx1ODFmYlx1ODUyZlx1ODg5N1x1OGEzYVx1OGNkMVx1OGVlYlx1OGZiMFx1OTAzMlx1OTNhZFx1OTY2M1x1OTY3M1x1OTcwN1x1NGY4''@;'; put 'put ''NFx1NTNmMVx1NTllYVx1NWFjOVx1NWUxOVx1Njg0ZVx1NzRjNlx1NzViZVx1NzllOVx1N2E5Mlx1ODFhM1x1ODZlZFx1OGNlYVx1OGRjY1x1OGZlZFx1NjU5Zlx1NjcxNVx1ZjlmZFx1NTdmN1x1NmY1N1x1N2RkZFx1OGYyZlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0Ml0ubGVuZ3Ro''@;'; put 'put ''OysrRSk2NTUzMyE9PUJbMjQyXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyNDJdW0VdXT02MTk1MitFLExbNjE5NTIrRV09QlsyNDJdW0VdKTtmb3IoQlsyNDNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkzZjZcdTk2YzZcdTVmYjVcdTYxZjJcdTZmODRcdTRlMTRcdTRmOThcdTUwMWZcdTUzYzlcdTU1ZGZcdTVkNmZcdTVkZWVcdTZiMjFcdTZiNjRcdTc4Y2JcdTdi''@;'; put 'put ''OWFcdWY5ZmVcdThlNDlcdThlY2FcdTkwNmVcdTYzNDlcdTY0M2VcdTc3NDBcdTdhODRcdTkzMmZcdTk0N2ZcdTlmNmFcdTY0YjBcdTZmYWZcdTcxZTZcdTc0YThcdTc0ZGFcdTdhYzRcdTdjMTJcdTdlODJcdTdjYjJcdTdlOThcdThiOWFcdThkMGFcdTk0N2RcdTk5MTBcdTk5NGNcdTUyMzlc''@;'; put 'put ''dTViZGZcdTY0ZTZcdTY3MmRcdTdkMmVcdTUwZWRcdTUzYzNcdTU4NzlcdTYxNThcdTYxNTlcdTYxZmFcdTY1YWNcdTdhZDlcdThiOTJcdThiOTZcdTUwMDlcdTUwMjFcdTUyNzVcdTU1MzFcdTVhM2NcdTVlZTBcdTVmNzBcdTYxMzRcdTY1NWVcdTY2MGNcdTY2MzZcdTY2YTJcdTY5Y2RcdTZl''@;'; put 'put ''YzRcdTZmMzJcdTczMTZcdTc2MjFcdTdhOTNcdTgxMzlcdTgyNTlcdTgzZDZcdTg0YmNcdTUwYjVcdTU3ZjBcdTViYzBcdTViZThcdTVmNjlcdTYzYTFcdTc4MjZcdTdkYjVcdTgzZGNcdTg1MjFcdTkxYzdcdTkxZjVcdTUxOGFcdTY3ZjVcdTdiNTZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9''@;'; put 'put ''QlsyNDNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0M11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjQzXVtFXV09NjIyMDgrRSxMWzYyMjA4K0VdPUJbMjQzXVtFXSk7Zm9yKEJbMjQ0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4Y2FjXHU1MWM0XHU1OWJiXHU2MGJkXHU4NjU1XHU1MDFjXHVmOWZmXHU1MjU0XHU1YzNhXHU2MTdkXHU2MjFhXHU2MmQzXHU2NGYyXHU2''@;'; put 'put ''NWE1XHU2ZWNjXHU3NjIwXHU4MTBhXHU4ZTYwXHU5NjVmXHU5NmJiXHU0ZWRmXHU1MzQzXHU1NTk4XHU1OTI5XHU1ZGRkXHU2NGM1XHU2Y2M5XHU2ZGZhXHU3Mzk0XHU3YTdmXHU4MjFiXHU4NWE2XHU4Y2U0XHU4ZTEwXHU5MDc3XHU5MWU3XHU5NWUxXHU5NjIxXHU5N2M2XHU1MWY4XHU1NGYy''@;'; put 'put ''XHU1NTg2XHU1ZmI5XHU2NGE0XHU2Zjg4XHU3ZGI0XHU4ZjFmXHU4ZjRkXHU5NDM1XHU1MGM5XHU1YzE2XHU2Y2JlXHU2ZGZiXHU3NTFiXHU3N2JiXHU3YzNkXHU3YzY0XHU4YTc5XHU4YWMyXHU1ODFlXHU1OWJlXHU1ZTE2XHU2Mzc3XHU3MjUyXHU3NThhXHU3NzZiXHU4YWRjXHU4Y2JjXHU4''@;'; put 'put ''ZjEyXHU1ZWYzXHU2Njc0XHU2ZGY4XHU4MDdkXHU4M2MxXHU4YWNiXHU5NzUxXHU5YmQ2XHVmYTAwXHU1MjQzXHU2NmZmXHU2ZDk1XHU2ZWVmXHU3ZGUwXHU4YWU2XHU5MDJlXHU5MDVlXHU5YWQ0XHU1MjFkXHU1MjdmXHU1NGU4XHU2MTk0XHU2Mjg0XHU2MmRiXHU2OGEyXHVmZmZkIi5zcGxp''@;'; put 'put ''dCgiIiksRT0wO0UhPUJbMjQ0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDRdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzI0NF1bRV1dPTYyNDY0K0UsTFs2MjQ2NCtFXT1CWzI0NF1bRV0pO2ZvcihCWzI0NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjkxMlx1Njk1YVx1NmEzNVx1NzA5Mlx1NzEyNlx1Nzg1ZFx1NzkwMVx1NzkwZVx1NzlkMlx1N2EwZFx1ODA5Nlx1''@;'; put 'put ''ODI3OFx1ODJkNVx1ODM0OVx1ODU0OVx1OGM4Mlx1OGQ4NVx1OTE2Mlx1OTE4Ylx1OTFhZVx1NGZjM1x1NTZkMVx1NzFlZFx1NzdkN1x1ODcwMFx1ODlmOFx1NWJmOFx1NWZkNlx1Njc1MVx1OTBhOFx1NTNlMlx1NTg1YVx1NWJmNVx1NjBhNFx1NjE4MVx1NjQ2MFx1N2UzZFx1ODA3MFx1ODUy''@;'; put 'put ''NVx1OTI4M1x1NjRhZVx1NTBhY1x1NWQxNFx1NjcwMFx1NTg5Y1x1NjJiZFx1NjNhOFx1NjkwZVx1Njk3OFx1NmExZVx1NmU2Ylx1NzZiYVx1NzljYlx1ODJiYlx1ODQyOVx1OGFjZlx1OGRhOFx1OGZmZFx1OTExMlx1OTE0Ylx1OTE5Y1x1OTMxMFx1OTMxOFx1OTM5YVx1OTZkYlx1OWEzNlx1''@;'; put 'put ''OWMwZFx1NGUxMVx1NzU1Y1x1Nzk1ZFx1N2FmYVx1N2I1MVx1N2JjOVx1N2UyZVx1ODRjNFx1OGU1OVx1OGU3NFx1OGVmOFx1OTAxMFx1NjYyNVx1NjkzZlx1NzQ0M1x1NTFmYVx1NjcyZVx1OWVkY1x1NTE0NVx1NWZlMFx1NmM5Nlx1ODdmMlx1ODg1ZFx1ODg3N1x1NjBiNFx1ODFiNVx1ODQw''@;'; put 'put ''M1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0NV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQ1XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyNDVdW0VdXT02MjcyMCtFLExbNjI3MjArRV09QlsyNDVdW0VdKTtmb3IoQlsyNDZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThkMDVcdTUzZDZcdTU0MzlcdTU2MzRcdTVhMzZcdTVjMzFcdTcwOGFcdTdmZTBcdTgwNWFc''@;'; put 'put ''dTgxMDZcdTgxZWRcdThkYTNcdTkxODlcdTlhNWZcdTlkZjJcdTUwNzRcdTRlYzRcdTUzYTBcdTYwZmJcdTZlMmNcdTVjNjRcdTRmODhcdTUwMjRcdTU1ZTRcdTVjZDlcdTVlNWZcdTYwNjVcdTY4OTRcdTZjYmJcdTZkYzRcdTcxYmVcdTc1ZDRcdTc1ZjRcdTc2NjFcdTdhMWFcdTdhNDlcdTdk''@;'; put 'put ''YzdcdTdkZmJcdTdmNmVcdTgxZjRcdTg2YTlcdThmMWNcdTk2YzlcdTk5YjNcdTlmNTJcdTUyNDdcdTUyYzVcdTk4ZWRcdTg5YWFcdTRlMDNcdTY3ZDJcdTZmMDZcdTRmYjVcdTViZTJcdTY3OTVcdTZjODhcdTZkNzhcdTc0MWJcdTc4MjdcdTkxZGRcdTkzN2NcdTg3YzRcdTc5ZTRcdTdhMzFc''@;'; put 'put ''dTVmZWJcdTRlZDZcdTU0YTRcdTU1M2VcdTU4YWVcdTU5YTVcdTYwZjBcdTYyNTNcdTYyZDZcdTY3MzZcdTY5NTVcdTgyMzVcdTk2NDBcdTk5YjFcdTk5ZGRcdTUwMmNcdTUzNTNcdTU1NDRcdTU3N2NcdWZhMDFcdTYyNThcdWZhMDJcdTY0ZTJcdTY2NmJcdTY3ZGRcdTZmYzFcdTZmZWZcdTc0''@;'; put 'put ''MjJcdTc0MzhcdThhMTdcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0Nl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjQ2XVtFXV09NjI5NzYrRSxMWzYyOTc2K0VdPUJbMjQ2XVtFXSk7Zm9yKEJbMjQ3XT0iXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NDM4XHU1NDUxXHU1NjA2XHU1NzY2XHU1ZjQ4XHU2MTlhXHU2YjRl''@;'; put 'put ''XHU3MDU4XHU3MGFkXHU3ZGJiXHU4YTk1XHU1OTZhXHU4MTJiXHU2M2EyXHU3NzA4XHU4MDNkXHU4Y2FhXHU1ODU0XHU2NDJkXHU2OWJiXHU1Yjk1XHU1ZTExXHU2ZTZmXHVmYTAzXHU4NTY5XHU1MTRjXHU1M2YwXHU1OTJhXHU2MDIwXHU2MTRiXHU2Yjg2XHU2YzcwXHU2Y2YwXHU3YjFlXHU4''@;'; put 'put ''MGNlXHU4MmQ0XHU4ZGM2XHU5MGIwXHU5OGIxXHVmYTA0XHU2NGM3XHU2ZmE0XHU2NDkxXHU2NTA0XHU1MTRlXHU1NDEwXHU1NzFmXHU4YTBlXHU2MTVmXHU2ODc2XHVmYTA1XHU3NWRiXHU3YjUyXHU3ZDcxXHU5MDFhXHU1ODA2XHU2OWNjXHU4MTdmXHU4OTJhXHU5MDAwXHU5ODM5XHU1MDc4''@;'; put 'put ''XHU1OTU3XHU1OWFjXHU2Mjk1XHU5MDBmXHU5YjJhXHU2MTVkXHU3Mjc5XHU5NWQ2XHU1NzYxXHU1YTQ2XHU1ZGY0XHU2MjhhXHU2NGFkXHU2NGZhXHU2Nzc3XHU2Y2UyXHU2ZDNlXHU3MjJjXHU3NDM2XHU3ODM0XHU3Zjc3XHU4MmFkXHU4ZGRiXHU5ODE3XHU1MjI0XHU1NzQyXHU2NzdmXHU3''@;'; put 'put ''MjQ4XHU3NGUzXHU4Y2E5XHU4ZmE2XHU5MjExXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQ3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDddW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzI0N11bRV1dPTYzMjMyK0UsTFs2MzIzMitFXT1CWzI0N11bRV0pO2ZvcihCWzI0OF09Ilx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTYyYVx1NTE2Ylx1NTNlZFx1NjM0Y1x1NGY2''@;'; put 'put ''OVx1NTUwNFx1NjA5Nlx1NjU1N1x1NmM5Ylx1NmQ3Zlx1NzI0Y1x1NzJmZFx1N2ExN1x1ODk4N1x1OGM5ZFx1NWY2ZFx1NmY4ZVx1NzBmOVx1ODFhOFx1NjEwZVx1NGZiZlx1NTA0Zlx1NjI0MVx1NzI0N1x1N2JjN1x1N2RlOFx1N2ZlOVx1OTA0ZFx1OTdhZFx1OWExOVx1OGNiNlx1NTc2YVx1''@;'; put 'put ''NWU3M1x1NjdiMFx1ODQwZFx1OGE1NVx1NTQyMFx1NWIxNlx1NWU2M1x1NWVlMlx1NWYwYVx1NjU4M1x1ODBiYVx1ODUzZFx1OTU4OVx1OTY1Ylx1NGY0OFx1NTMwNVx1NTMwZFx1NTMwZlx1NTQ4Nlx1NTRmYVx1NTcwM1x1NWUwM1x1NjAxNlx1NjI5Ylx1NjJiMVx1NjM1NVx1ZmEwNlx1NmNl''@;'; put 'put ''MVx1NmQ2Nlx1NzViMVx1NzgzMlx1ODBkZVx1ODEyZlx1ODJkZVx1ODQ2MVx1ODRiMlx1ODg4ZFx1ODkxMlx1OTAwYlx1OTJlYVx1OThmZFx1OWI5MVx1NWU0NVx1NjZiNFx1NjZkZFx1NzAxMVx1NzIwNlx1ZmEwN1x1NGZmNVx1NTI3ZFx1NWY2YVx1NjE1M1x1Njc1M1x1NmExOVx1NmYwMlx1''@;'; put 'put ''NzRlMlx1Nzk2OFx1ODg2OFx1OGM3OVx1OThjN1x1OThjNFx1OWE0M1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0OF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQ4XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyNDhdW0VdXT02MzQ4OCtFLExbNjM0ODgrRV09QlsyNDhdW0VdKTtmb3Io''@;'; put 'put ''QlsyNDldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU0YzFcdTdhMWZcdTY5''@;'; put 'put ''NTNcdThhZjdcdThjNGFcdTk4YThcdTk5YWVcdTVmN2NcdTYyYWJcdTc1YjJcdTc2YWVcdTg4YWJcdTkwN2ZcdTk2NDJcdTUzMzlcdTVmM2NcdTVmYzVcdTZjY2NcdTczY2NcdTc1NjJcdTc1OGJcdTdiNDZcdTgyZmVcdTk5OWRcdTRlNGZcdTkwM2NcdTRlMGJcdTRmNTVcdTUzYTZcdTU5MGZc''@;'; put 'put ''dTVlYzhcdTY2MzBcdTZjYjNcdTc0NTVcdTgzNzdcdTg3NjZcdThjYzBcdTkwNTBcdTk3MWVcdTljMTVcdTU4ZDFcdTViNzhcdTg2NTBcdThiMTRcdTlkYjRcdTViZDJcdTYwNjhcdTYwOGRcdTY1ZjFcdTZjNTdcdTZmMjJcdTZmYTNcdTcwMWFcdTdmNTVcdTdmZjBcdTk1OTFcdTk1OTJcdTk2''@;'; put 'put ''NTBcdTk3ZDNcdTUyNzJcdThmNDRcdTUxZmRcdTU0MmJcdTU0YjhcdTU1NjNcdTU1OGFcdTZhYmJcdTZkYjVcdTdkZDhcdTgyNjZcdTkyOWNcdTk2NzdcdTllNzlcdTU0MDhcdTU0YzhcdTc2ZDJcdTg2ZTRcdTk1YTRcdTk1ZDRcdTk2NWNcdTRlYTJcdTRmMDlcdTU5ZWVcdTVhZTZcdTVkZjdc''@;'; put 'put ''dTYwNTJcdTYyOTdcdTY3NmRcdTY4NDFcdTZjODZcdTZlMmZcdTdmMzhcdTgwOWJcdTgyMmFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0OV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjQ5XVtFXV09NjM3NDQrRSxMWzYzNzQ0K0VdPUJb''@;'; put 'put ''MjQ5XVtFXSk7Zm9yKEJbMjUwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''YTA4XHVmYTA5XHU5ODA1XHU0ZWE1XHU1MDU1XHU1NGIzXHU1NzkzXHU1OTVhXHU1YjY5XHU1YmIzXHU2MWM4XHU2OTc3XHU2ZDc3XHU3MDIzXHU4N2Y5XHU4OWUzXHU4YTcyXHU4YWU3XHU5MDgyXHU5OWVkXHU5YWI4XHU1MmJlXHU2ODM4XHU1MDE2XHU1ZTc4XHU2NzRmXHU4MzQ3XHU4ODRj''@;'; put 'put ''XHU0ZWFiXHU1NDExXHU1NmFlXHU3M2U2XHU5MTE1XHU5N2ZmXHU5OTA5XHU5OTU3XHU5OTk5XHU1NjUzXHU1ODlmXHU4NjViXHU4YTMxXHU2MWIyXHU2YWY2XHU3MzdiXHU4ZWQyXHU2YjQ3XHU5NmFhXHU5YTU3XHU1OTU1XHU3MjAwXHU4ZDZiXHU5NzY5XHU0ZmQ0XHU1Y2Y0XHU1ZjI2XHU2''@;'; put 'put ''MWY4XHU2NjViXHU2Y2ViXHU3MGFiXHU3Mzg0XHU3M2I5XHU3M2ZlXHU3NzI5XHU3NzRkXHU3ZDQzXHU3ZDYyXHU3ZTIzXHU4MjM3XHU4ODUyXHVmYTBhXHU4Y2UyXHU5MjQ5XHU5ODZmXHU1YjUxXHU3YTc0XHU4ODQwXHU5ODAxXHU1YWNjXHU0ZmUwXHU1MzU0XHU1OTNlXHU1Y2ZkXHU2MzNl''@;'; put 'put ''XHU2ZDc5XHU3MmY5XHU4MTA1XHU4MTA3XHU4M2EyXHU5MmNmXHU5ODMwXHU0ZWE4XHU1MTQ0XHU1MjExXHU1NzhiXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjUwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNTBdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzI1MF1bRV1dPTY0ZTMrRSxM''@;'; put 'put ''WzY0ZTMrRV09QlsyNTBdW0VdKTtmb3IoQlsyNTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdTVmNjJcdTZjYzJcdTZlY2VcdTcwMDVcdTcwNTBcdTcwYWZcdTcxOTJcdTczZTlcdTc0NjlcdTgzNGFcdTg3YTJcdTg4NjFcdTkwMDhcdTkwYTJcdTkzYTNcdTk5YThcdTUxNmVcdTVmNTdcdTYwZTBcdTYxNjdcdTY2YjNcdTg1NTlcdThlNGFcdTkxYWZcdTk3OGJcdTRlNGVc''@;'; put 'put ''dTRlOTJcdTU0N2NcdTU4ZDVcdTU4ZmFcdTU5N2RcdTVjYjVcdTVmMjdcdTYyMzZcdTYyNDhcdTY2MGFcdTY2NjdcdTZiZWJcdTZkNjlcdTZkY2ZcdTZlNTZcdTZlZjhcdTZmOTRcdTZmZTBcdTZmZTlcdTcwNWRcdTcyZDBcdTc0MjVcdTc0NWFcdTc0ZTBcdTc2OTNcdTc5NWNcdTdjY2FcdTdl''@;'; put 'put ''MWVcdTgwZTFcdTgyYTZcdTg0NmJcdTg0YmZcdTg2NGVcdTg2NWZcdTg3NzRcdThiNzdcdThjNmFcdTkzYWNcdTk4MDBcdTk4NjVcdTYwZDFcdTYyMTZcdTkxNzdcdTVhNWFcdTY2MGZcdTZkZjdcdTZlM2VcdTc0M2ZcdTliNDJcdTVmZmRcdTYwZGFcdTdiMGZcdTU0YzRcdTVmMThcdTZjNWVc''@;'; put 'put ''dTZjZDNcdTZkMmFcdTcwZDhcdTdkMDVcdTg2NzlcdThhMGNcdTlkM2JcdTUzMTZcdTU0OGNcdTViMDVcdTZhM2FcdTcwNmJcdTc1NzVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNTFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI1MV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjUxXVtF''@;'; put 'put ''XV09NjQyNTYrRSxMWzY0MjU2K0VdPUJbMjUxXVtFXSk7Zm9yKEJbMjUyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OThkXHU3OWJlXHU4MmIxXHU4M2VmXHU4YTcxXHU4YjQxXHU4Y2E4XHU5Nzc0XHVmYTBiXHU2NGY0XHU2NTJiXHU3OGJhXHU3OGJiXHU3YTZiXHU0ZTM4XHU1NTlhXHU1OTUwXHU1YmE2XHU1ZTdiXHU2MGEzXHU2M2RiXHU2YjYxXHU2NjY1XHU2ODUz''@;'; put 'put ''XHU2ZTE5XHU3MTY1XHU3NGIwXHU3ZDA4XHU5MDg0XHU5YTY5XHU5YzI1XHU2ZDNiXHU2ZWQxXHU3MzNlXHU4YzQxXHU5NWNhXHU1MWYwXHU1ZTRjXHU1ZmE4XHU2MDRkXHU2MGY2XHU2MTMwXHU2MTRjXHU2NjQzXHU2NjQ0XHU2OWE1XHU2Y2MxXHU2ZTVmXHU2ZWM5XHU2ZjYyXHU3MTRjXHU3''@;'; put 'put ''NDljXHU3Njg3XHU3YmMxXHU3YzI3XHU4MzUyXHU4NzU3XHU5MDUxXHU5NjhkXHU5ZWMzXHU1MzJmXHU1NmRlXHU1ZWZiXHU1ZjhhXHU2MDYyXHU2MDk0XHU2MWY3XHU2NjY2XHU2NzAzXHU2YTljXHU2ZGVlXHU2ZmFlXHU3MDcwXHU3MzZhXHU3ZTZhXHU4MWJlXHU4MzM0XHU4NmQ0XHU4YWE4''@;'; put 'put ''XHU4Y2M0XHU1MjgzXHU3MzcyXHU1Yjk2XHU2YTZiXHU5NDA0XHU1NGVlXHU1Njg2XHU1YjVkXHU2NTQ4XHU2NTg1XHU2NmM5XHU2ODlmXHU2ZDhkXHU2ZGM2XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjUyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNTJdW0VdLmNoYXJDb2RlQXQoMCkm''@;'; put 'put ''JihtZVtCWzI1Ml1bRV1dPTY0NTEyK0UsTFs2NDUxMitFXT1CWzI1Ml1bRV0pO2ZvcihCWzI1M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzIzYlx1ODBiNFx1OTE3NVx1OWE0ZFx1NGZhZlx1NTAxOVx1NTM5YVx1NTQwZVx1NTQzY1x1NTU4OVx1NTVjNVx1NWUzZlx1NWY4Y1x1NjczZFx1NzE2Nlx1NzNkZFx1OTAwNVx1NTJkYlx1NTJmM1x1NTg2NFx1NThjZVx1NzEw''@;'; put 'put ''NFx1NzE4Zlx1NzFmYlx1ODViMFx1OGExM1x1NjY4OFx1ODVhOFx1NTVhN1x1NjY4NFx1NzE0YVx1ODQzMVx1NTM0OVx1NTU5OVx1NmJjMVx1NWY1OVx1NWZiZFx1NjNlZVx1NjY4OVx1NzE0N1x1OGFmMVx1OGYxZFx1OWViZVx1NGYxMVx1NjQzYVx1NzBjYlx1NzU2Nlx1ODY2N1x1NjA2NFx1''@;'; put 'put ''OGI0ZVx1OWRmOFx1NTE0N1x1NTFmNlx1NTMwOFx1NmQzNlx1ODBmOFx1OWVkMVx1NjYxNVx1NmIyM1x1NzA5OFx1NzVkNVx1NTQwM1x1NWM3OVx1N2QwN1x1OGExNlx1NmIyMFx1NmIzZFx1NmI0Nlx1NTQzOFx1NjA3MFx1NmQzZFx1N2ZkNVx1ODIwOFx1NTBkNlx1NTFkZVx1NTU5Y1x1NTY2''@;'; put 'put ''Ylx1NTZjZFx1NTllY1x1NWIwOVx1NWUwY1x1NjE5OVx1NjE5OFx1NjIzMVx1NjY1ZVx1NjZlNlx1NzE5OVx1NzFiOVx1NzFiYVx1NzJhN1x1NzlhN1x1N2EwMFx1N2ZiMlx1OGE3MFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI1M10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjUzXVtFXS5j''@;'; put 'put ''aGFyQ29kZUF0KDApJiYobWVbQlsyNTNdW0VdXT02NDc2OCtFLExbNjQ3NjgrRV09QlsyNTNdW0VdKTtyZXR1cm57ZW5jOm1lLGRlYzpMfX0oKSxKZVs5NTBdPWZ1bmN0aW9uKCl7dmFyIEUsTD1bXSxtZT17fSxCPVtdO2ZvcihCWzBdPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdc''@;'; put 'put ''Ylx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5v''@;'; put 'put ''cHFyc3R1dnd4eXp7fH1+XHg3Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzBdLmxlbmd0aDsrK0UpNjU1''@;'; put 'put ''MzMhPT1CWzBdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzBdW0VdXT0wK0UsTFswK0VdPUJbMF1bRV0pO2ZvcihCWzE2MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzAwMFx1ZmYwY1x1MzAwMVx1MzAwMlx1ZmYwZVx1MjAyN1x1''@;'; put 'put ''ZmYxYlx1ZmYxYVx1ZmYxZlx1ZmYwMVx1ZmUzMFx1MjAyNlx1MjAyNVx1ZmU1MFx1ZmU1MVx1ZmU1Mlx4YjdcdWZlNTRcdWZlNTVcdWZlNTZcdWZlNTdcdWZmNWNcdTIwMTNcdWZlMzFcdTIwMTRcdWZlMzNcdTI1NzRcdWZlMzRcdWZlNGZcdWZmMDhcdWZmMDlcdWZlMzVcdWZlMzZcdWZmNWJc''@;'; put 'put ''dWZmNWRcdWZlMzdcdWZlMzhcdTMwMTRcdTMwMTVcdWZlMzlcdWZlM2FcdTMwMTBcdTMwMTFcdWZlM2JcdWZlM2NcdTMwMGFcdTMwMGJcdWZlM2RcdWZlM2VcdTMwMDhcdTMwMDlcdWZlM2ZcdWZlNDBcdTMwMGNcdTMwMGRcdWZlNDFcdWZlNDJcdTMwMGVcdTMwMGZcdWZlNDNcdWZlNDRcdWZl''@;'; put 'put ''NTlcdWZlNWFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZlNWJcdWZlNWNcdWZlNWRcdWZlNWVcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTMwMWRcdTMwMWVcdTIwMzVcdTIwMzJcdWZmMDNcdWZmMDZcdWZmMGFcdTIwM2JceGE3XHUzMDAzXHUyNWNiXHUyNWNm''@;'; put 'put ''XHUyNWIzXHUyNWIyXHUyNWNlXHUyNjA2XHUyNjA1XHUyNWM3XHUyNWM2XHUyNWExXHUyNWEwXHUyNWJkXHUyNWJjXHUzMmEzXHUyMTA1XHhhZlx1ZmZlM1x1ZmYzZlx1MDJjZFx1ZmU0OVx1ZmU0YVx1ZmU0ZFx1ZmU0ZVx1ZmU0Ylx1ZmU0Y1x1ZmU1Zlx1ZmU2MFx1ZmU2MVx1ZmYwYlx1ZmYw''@;'; put 'put ''ZFx4ZDdceGY3XHhiMVx1MjIxYVx1ZmYxY1x1ZmYxZVx1ZmYxZFx1MjI2Nlx1MjI2N1x1MjI2MFx1MjIxZVx1MjI1Mlx1MjI2MVx1ZmU2Mlx1ZmU2M1x1ZmU2NFx1ZmU2NVx1ZmU2Nlx1ZmY1ZVx1MjIyOVx1MjIyYVx1MjJhNVx1MjIyMFx1MjIxZlx1MjJiZlx1MzNkMlx1MzNkMVx1MjIyYlx1''@;'; put 'put ''MjIyZVx1MjIzNVx1MjIzNFx1MjY0MFx1MjY0Mlx1MjI5NVx1MjI5OVx1MjE5MVx1MjE5M1x1MjE5MFx1MjE5Mlx1MjE5Nlx1MjE5N1x1MjE5OVx1MjE5OFx1MjIyNVx1MjIyM1x1ZmYwZlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2MV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTYxXVtF''@;'; put 'put ''XS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNjFdW0VdXT00MTIxNitFLExbNDEyMTYrRV09QlsxNjFdW0VdKTtmb3IoQlsxNjJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmM2NcdTIyMTVcdWZlNjhcdWZmMDRcdWZmZTVcdTMwMTJc''@;'; put 'put ''dWZmZTBcdWZmZTFcdWZmMDVcdWZmMjBcdTIxMDNcdTIxMDlcdWZlNjlcdWZlNmFcdWZlNmJcdTMzZDVcdTMzOWNcdTMzOWRcdTMzOWVcdTMzY2VcdTMzYTFcdTMzOGVcdTMzOGZcdTMzYzRceGIwXHU1MTU5XHU1MTViXHU1MTVlXHU1MTVkXHU1MTYxXHU1MTYzXHU1NWU3XHU3NGU5XHU3Y2Nl''@;'; put 'put ''XHUyNTgxXHUyNTgyXHUyNTgzXHUyNTg0XHUyNTg1XHUyNTg2XHUyNTg3XHUyNTg4XHUyNThmXHUyNThlXHUyNThkXHUyNThjXHUyNThiXHUyNThhXHUyNTg5XHUyNTNjXHUyNTM0XHUyNTJjXHUyNTI0XHUyNTFjXHUyNTk0XHUyNTAwXHUyNTAyXHUyNTk1XHUyNTBjXHUyNTEwXHUyNTE0XHUy''@;'; put 'put ''NTE4XHUyNTZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyNTZlXHUyNTcwXHUyNTZmXHUyNTUwXHUyNTVlXHUyNTZhXHUyNTYxXHUyNWUyXHUyNWUzXHUyNWU1XHUyNWU0XHUyNTcxXHUyNTcyXHUyNTczXHVmZjEwXHVmZjExXHVmZjEyXHVmZjEzXHVmZjE0XHVm''@;'; put 'put ''ZjE1XHVmZjE2XHVmZjE3XHVmZjE4XHVmZjE5XHUyMTYwXHUyMTYxXHUyMTYyXHUyMTYzXHUyMTY0XHUyMTY1XHUyMTY2XHUyMTY3XHUyMTY4XHUyMTY5XHUzMDIxXHUzMDIyXHUzMDIzXHUzMDI0XHUzMDI1XHUzMDI2XHUzMDI3XHUzMDI4XHUzMDI5XHU1MzQxXHU1MzQ0XHU1MzQ1XHVmZjIx''@;'; put 'put ''XHVmZjIyXHVmZjIzXHVmZjI0XHVmZjI1XHVmZjI2XHVmZjI3XHVmZjI4XHVmZjI5XHVmZjJhXHVmZjJiXHVmZjJjXHVmZjJkXHVmZjJlXHVmZjJmXHVmZjMwXHVmZjMxXHVmZjMyXHVmZjMzXHVmZjM0XHVmZjM1XHVmZjM2XHVmZjM3XHVmZjM4XHVmZjM5XHVmZjNhXHVmZjQxXHVmZjQyXHVm''@;'; put 'put ''ZjQzXHVmZjQ0XHVmZjQ1XHVmZjQ2XHVmZjQ3XHVmZjQ4XHVmZjQ5XHVmZjRhXHVmZjRiXHVmZjRjXHVmZjRkXHVmZjRlXHVmZjRmXHVmZjUwXHVmZjUxXHVmZjUyXHVmZjUzXHVmZjU0XHVmZjU1XHVmZjU2XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTYyXS5sZW5ndGg7KytFKTY1NTMz''@;'; put 'put ''IT09QlsxNjJdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE2Ml1bRV1dPTQxNDcyK0UsTFs0MTQ3MitFXT1CWzE2Ml1bRV0pO2ZvcihCWzE2M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmY1N1x1ZmY1OFx1ZmY1OVx1ZmY1YVx1''@;'; put 'put ''MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1MDNhM1x1MDNhNFx1MDNhNVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1MDNiMVx1MDNiMlx1MDNiM1x1MDNi''@;'; put 'put ''NFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1MDNjMVx1MDNjM1x1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MDNjOVx1MzEwNVx1MzEwNlx1MzEwN1x1MzEwOFx1MzEwOVx1MzEwYVx1MzEwYlx1''@;'; put 'put ''MzEwY1x1MzEwZFx1MzEwZVx1MzEwZlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzExMFx1MzExMVx1MzExMlx1MzExM1x1MzExNFx1MzExNVx1MzExNlx1MzExN1x1MzExOFx1MzExOVx1MzExYVx1MzExYlx1MzExY1x1MzExZFx1MzExZVx1MzExZlx1MzEyMFx1''@;'; put 'put ''MzEyMVx1MzEyMlx1MzEyM1x1MzEyNFx1MzEyNVx1MzEyNlx1MzEyN1x1MzEyOFx1MzEyOVx1MDJkOVx1MDJjOVx1MDJjYVx1MDJjN1x1MDJjYlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjBhY1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2M10ubGVu''@;'; put 'put ''Z3RoOysrRSk2NTUzMyE9PUJbMTYzXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNjNdW0VdXT00MTcyOCtFLExbNDE3MjgrRV09QlsxNjNdW0VdKTtmb3IoQlsxNjRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRlMDBcdTRlNTlc''@;'; put 'put ''dTRlMDFcdTRlMDNcdTRlNDNcdTRlNWRcdTRlODZcdTRlOGNcdTRlYmFcdTUxM2ZcdTUxNjVcdTUxNmJcdTUxZTBcdTUyMDBcdTUyMDFcdTUyOWJcdTUzMTVcdTUzNDFcdTUzNWNcdTUzYzhcdTRlMDlcdTRlMGJcdTRlMDhcdTRlMGFcdTRlMmJcdTRlMzhcdTUxZTFcdTRlNDVcdTRlNDhcdTRl''@;'; put 'put ''NWZcdTRlNWVcdTRlOGVcdTRlYTFcdTUxNDBcdTUyMDNcdTUyZmFcdTUzNDNcdTUzYzlcdTUzZTNcdTU3MWZcdTU4ZWJcdTU5MTVcdTU5MjdcdTU5NzNcdTViNTBcdTViNTFcdTViNTNcdTViZjhcdTVjMGZcdTVjMjJcdTVjMzhcdTVjNzFcdTVkZGRcdTVkZTVcdTVkZjFcdTVkZjJcdTVkZjNc''@;'; put 'put ''dTVkZmVcdTVlNzJcdTVlZmVcdTVmMGJcdTVmMTNcdTYyNGRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRlMTFcdTRlMTBcdTRlMGRcdTRlMmRcdTRlMzBcdTRlMzlcdTRlNGJcdTVjMzlcdTRlODhcdTRlOTFcdTRlOTVcdTRlOTJcdTRlOTRcdTRlYTJcdTRlYzFc''@;'; put 'put ''dTRlYzBcdTRlYzNcdTRlYzZcdTRlYzdcdTRlY2RcdTRlY2FcdTRlY2JcdTRlYzRcdTUxNDNcdTUxNDFcdTUxNjdcdTUxNmRcdTUxNmVcdTUxNmNcdTUxOTdcdTUxZjZcdTUyMDZcdTUyMDdcdTUyMDhcdTUyZmJcdTUyZmVcdTUyZmZcdTUzMTZcdTUzMzlcdTUzNDhcdTUzNDdcdTUzNDVcdTUz''@;'; put 'put ''NWVcdTUzODRcdTUzY2JcdTUzY2FcdTUzY2RcdTU4ZWNcdTU5MjlcdTU5MmJcdTU5MmFcdTU5MmRcdTViNTRcdTVjMTFcdTVjMjRcdTVjM2FcdTVjNmZcdTVkZjRcdTVlN2JcdTVlZmZcdTVmMTRcdTVmMTVcdTVmYzNcdTYyMDhcdTYyMzZcdTYyNGJcdTYyNGVcdTY1MmZcdTY1ODdcdTY1OTdc''@;'; put 'put ''dTY1YTRcdTY1YjlcdTY1ZTVcdTY2ZjBcdTY3MDhcdTY3MjhcdTZiMjBcdTZiNjJcdTZiNzlcdTZiY2JcdTZiZDRcdTZiZGJcdTZjMGZcdTZjMzRcdTcwNmJcdTcyMmFcdTcyMzZcdTcyM2JcdTcyNDdcdTcyNTlcdTcyNWJcdTcyYWNcdTczOGJcdTRlMTlcdWZmZmQiLnNwbGl0KCIiKSxFPTA7''@;'; put 'put ''RSE9QlsxNjRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2NF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTY0XVtFXV09NDE5ODQrRSxMWzQxOTg0K0VdPUJbMTY0XVtFXSk7Zm9yKEJbMTY1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHU0ZTE2XHU0ZTE1XHU0ZTE0XHU0ZTE4XHU0ZTNiXHU0ZTRkXHU0ZTRmXHU0ZTRlXHU0ZWU1XHU0ZWQ4XHU0ZWQ0XHU0ZWQ1XHU0ZWQ2XHU0ZWQ3XHU0ZWUzXHU0ZWU0XHU0ZWQ5XHU0ZWRlXHU1MTQ1XHU1MTQ0XHU1MTg5XHU1MThhXHU1MWFjXHU1MWY5XHU1MWZhXHU1MWY4XHU1MjBhXHU1''@;'; put 'put ''MmEwXHU1MjlmXHU1MzA1XHU1MzA2XHU1MzE3XHU1MzFkXHU0ZWRmXHU1MzRhXHU1MzQ5XHU1MzYxXHU1MzYwXHU1MzZmXHU1MzZlXHU1M2JiXHU1M2VmXHU1M2U0XHU1M2YzXHU1M2VjXHU1M2VlXHU1M2U5XHU1M2U4XHU1M2ZjXHU1M2Y4XHU1M2Y1XHU1M2ViXHU1M2U2XHU1M2VhXHU1M2Yy''@;'; put 'put ''XHU1M2YxXHU1M2YwXHU1M2U1XHU1M2VkXHU1M2ZiXHU1NmRiXHU1NmRhXHU1OTE2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1OTJlXHU1OTMxXHU1OTc0XHU1OTc2XHU1YjU1XHU1YjgzXHU1YzNjXHU1ZGU4XHU1ZGU3XHU1ZGU2XHU1ZTAyXHU1ZTAzXHU1ZTcz''@;'; put 'put ''XHU1ZTdjXHU1ZjAxXHU1ZjE4XHU1ZjE3XHU1ZmM1XHU2MjBhXHU2MjUzXHU2MjU0XHU2MjUyXHU2MjUxXHU2NWE1XHU2NWU2XHU2NzJlXHU2NzJjXHU2NzJhXHU2NzJiXHU2NzJkXHU2YjYzXHU2YmNkXHU2YzExXHU2YzEwXHU2YzM4XHU2YzQxXHU2YzQwXHU2YzNlXHU3MmFmXHU3Mzg0XHU3''@;'; put 'put ''Mzg5XHU3NGRjXHU3NGU2XHU3NTE4XHU3NTFmXHU3NTI4XHU3NTI5XHU3NTMwXHU3NTMxXHU3NTMyXHU3NTMzXHU3NThiXHU3NjdkXHU3NmFlXHU3NmJmXHU3NmVlXHU3N2RiXHU3N2UyXHU3N2YzXHU3OTNhXHU3OWJlXHU3YTc0XHU3YWNiXHU0ZTFlXHU0ZTFmXHU0ZTUyXHU0ZTUzXHU0ZTY5''@;'; put 'put ''XHU0ZTk5XHU0ZWE0XHU0ZWE2XHU0ZWE1XHU0ZWZmXHU0ZjA5XHU0ZjE5XHU0ZjBhXHU0ZjE1XHU0ZjBkXHU0ZjEwXHU0ZjExXHU0ZjBmXHU0ZWYyXHU0ZWY2XHU0ZWZiXHU0ZWYwXHU0ZWYzXHU0ZWZkXHU0ZjAxXHU0ZjBiXHU1MTQ5XHU1MTQ3XHU1MTQ2XHU1MTQ4XHU1MTY4XHVmZmZkIi5z''@;'; put 'put ''cGxpdCgiIiksRT0wO0UhPUJbMTY1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjVdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE2NV1bRV1dPTQyMjQwK0UsTFs0MjI0MCtFXT1CWzE2NV1bRV0pO2ZvcihCWzE2Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1NTE3MVx1NTE4ZFx1NTFiMFx1NTIxN1x1NTIxMVx1NTIxMlx1NTIwZVx1NTIxNlx1NTJhM1x1NTMwOFx1NTMyMVx1NTMyMFx1NTM3MFx1NTM3MVx1NTQwOVx1NTQwZlx1NTQwY1x1NTQwYVx1NTQxMFx1NTQwMVx1NTQwYlx1NTQwNFx1NTQxMVx1NTQwZFx1NTQwOFx1''@;'; put 'put ''NTQwM1x1NTQwZVx1NTQwNlx1NTQxMlx1NTZlMFx1NTZkZVx1NTZkZFx1NTczM1x1NTczMFx1NTcyOFx1NTcyZFx1NTcyY1x1NTcyZlx1NTcyOVx1NTkxOVx1NTkxYVx1NTkzN1x1NTkzOFx1NTk4NFx1NTk3OFx1NTk4M1x1NTk3ZFx1NTk3OVx1NTk4Mlx1NTk4MVx1NWI1N1x1NWI1OFx1NWI4''@;'; put 'put ''N1x1NWI4OFx1NWI4NVx1NWI4OVx1NWJmYVx1NWMxNlx1NWM3OVx1NWRkZVx1NWUwNlx1NWU3Nlx1NWU3NFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWYwZlx1NWYxYlx1NWZkOVx1NWZkNlx1NjIwZVx1NjIwY1x1NjIwZFx1NjIxMFx1NjI2M1x1NjI1Ylx1NjI1''@;'; put 'put ''OFx1NjUzNlx1NjVlOVx1NjVlOFx1NjVlY1x1NjVlZFx1NjZmMlx1NjZmM1x1NjcwOVx1NjczZFx1NjczNFx1NjczMVx1NjczNVx1NmIyMVx1NmI2NFx1NmI3Ylx1NmMxNlx1NmM1ZFx1NmM1N1x1NmM1OVx1NmM1Zlx1NmM2MFx1NmM1MFx1NmM1NVx1NmM2MVx1NmM1Ylx1NmM0ZFx1NmM0ZVx1''@;'; put 'put ''NzA3MFx1NzI1Zlx1NzI1ZFx1NzY3ZVx1N2FmOVx1N2M3M1x1N2NmOFx1N2YzNlx1N2Y4YVx1N2ZiZFx1ODAwMVx1ODAwM1x1ODAwY1x1ODAxMlx1ODAzM1x1ODA3Zlx1ODA4OVx1ODA4Ylx1ODA4Y1x1ODFlM1x1ODFlYVx1ODFmM1x1ODFmY1x1ODIwY1x1ODIxYlx1ODIxZlx1ODI2ZVx1ODI3''@;'; put 'put ''Mlx1ODI3ZVx1ODY2Ylx1ODg0MFx1ODg0Y1x1ODg2M1x1ODk3Zlx1OTYyMVx1NGUzMlx1NGVhOFx1NGY0ZFx1NGY0Zlx1NGY0N1x1NGY1N1x1NGY1ZVx1NGYzNFx1NGY1Ylx1NGY1NVx1NGYzMFx1NGY1MFx1NGY1MVx1NGYzZFx1NGYzYVx1NGYzOFx1NGY0M1x1NGY1NFx1NGYzY1x1NGY0Nlx1''@;'; put 'put ''NGY2M1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTY2XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNjZdW0VdXT00MjQ5NitFLExbNDI0OTYrRV09QlsxNjZdW0VdKTtmb3IoQlsxNjddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRmNWNcdTRmNjBcdTRmMmZcdTRmNGVcdTRmMzZcdTRmNTlcdTRmNWRcdTRmNDhcdTRmNWFcdTUxNGNcdTUxNGJcdTUxNGRcdTUxNzVcdTUxYjZcdTUxYjdcdTUyMjVcdTUyMjRcdTUyMjlcdTUyMmFcdTUyMjhcdTUyYWJcdTUyYTlcdTUyYWFc''@;'; put 'put ''dTUyYWNcdTUzMjNcdTUzNzNcdTUzNzVcdTU0MWRcdTU0MmRcdTU0MWVcdTU0M2VcdTU0MjZcdTU0NGVcdTU0MjdcdTU0NDZcdTU0NDNcdTU0MzNcdTU0NDhcdTU0NDJcdTU0MWJcdTU0MjlcdTU0NGFcdTU0MzlcdTU0M2JcdTU0MzhcdTU0MmVcdTU0MzVcdTU0MzZcdTU0MjBcdTU0M2NcdTU0''@;'; put 'put ''NDBcdTU0MzFcdTU0MmJcdTU0MWZcdTU0MmNcdTU2ZWFcdTU2ZjBcdTU2ZTRcdTU2ZWJcdTU3NGFcdTU3NTFcdTU3NDBcdTU3NGRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU3NDdcdTU3NGVcdTU3M2VcdTU3NTBcdTU3NGZcdTU3M2JcdTU4ZWZcdTU5M2VcdTU5''@;'; put 'put ''OWRcdTU5OTJcdTU5YThcdTU5OWVcdTU5YTNcdTU5OTlcdTU5OTZcdTU5OGRcdTU5YTRcdTU5OTNcdTU5OGFcdTU5YTVcdTViNWRcdTViNWNcdTViNWFcdTViNWJcdTViOGNcdTViOGJcdTViOGZcdTVjMmNcdTVjNDBcdTVjNDFcdTVjM2ZcdTVjM2VcdTVjOTBcdTVjOTFcdTVjOTRcdTVjOGNc''@;'; put 'put ''dTVkZWJcdTVlMGNcdTVlOGZcdTVlODdcdTVlOGFcdTVlZjdcdTVmMDRcdTVmMWZcdTVmNjRcdTVmNjJcdTVmNzdcdTVmNzlcdTVmZDhcdTVmY2NcdTVmZDdcdTVmY2RcdTVmZjFcdTVmZWJcdTVmZjhcdTVmZWFcdTYyMTJcdTYyMTFcdTYyODRcdTYyOTdcdTYyOTZcdTYyODBcdTYyNzZcdTYy''@;'; put 'put ''ODlcdTYyNmRcdTYyOGFcdTYyN2NcdTYyN2VcdTYyNzlcdTYyNzNcdTYyOTJcdTYyNmZcdTYyOThcdTYyNmVcdTYyOTVcdTYyOTNcdTYyOTFcdTYyODZcdTY1MzlcdTY1M2JcdTY1MzhcdTY1ZjFcdTY2ZjRcdTY3NWZcdTY3NGVcdTY3NGZcdTY3NTBcdTY3NTFcdTY3NWNcdTY3NTZcdTY3NWVc''@;'; put 'put ''dTY3NDlcdTY3NDZcdTY3NjBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2N11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTY3XVtFXV09NDI3NTIrRSxMWzQyNzUyK0VdPUJbMTY3XVtFXSk7Zm9yKEJbMTY4XT0iXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NzUzXHU2NzU3XHU2YjY1XHU2YmNmXHU2YzQyXHU2YzVlXHU2Yzk5XHU2YzgxXHU2Yzg4XHU2Yzg5XHU2Yzg1XHU2YzliXHU2YzZhXHU2YzdhXHU2YzkwXHU2YzcwXHU2YzhjXHU2YzY4XHU2Yzk2XHU2YzkyXHU2Yzdk''@;'; put 'put ''XHU2YzgzXHU2YzcyXHU2YzdlXHU2Yzc0XHU2Yzg2XHU2Yzc2XHU2YzhkXHU2Yzk0XHU2Yzk4XHU2YzgyXHU3MDc2XHU3MDdjXHU3MDdkXHU3MDc4XHU3MjYyXHU3MjYxXHU3MjYwXHU3MmM0XHU3MmMyXHU3Mzk2XHU3NTJjXHU3NTJiXHU3NTM3XHU3NTM4XHU3NjgyXHU3NmVmXHU3N2UzXHU3''@;'; put 'put ''OWMxXHU3OWMwXHU3OWJmXHU3YTc2XHU3Y2ZiXHU3ZjU1XHU4MDk2XHU4MDkzXHU4MDlkXHU4MDk4XHU4MDliXHU4MDlhXHU4MGIyXHU4MjZmXHU4MjkyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MjhiXHU4MjhkXHU4OThiXHU4OWQyXHU4YTAwXHU4YzM3XHU4''@;'; put 'put ''YzQ2XHU4YzU1XHU4YzlkXHU4ZDY0XHU4ZDcwXHU4ZGIzXHU4ZWFiXHU4ZWNhXHU4ZjliXHU4ZmIwXHU4ZmMyXHU4ZmM2XHU4ZmM1XHU4ZmM0XHU1ZGUxXHU5MDkxXHU5MGEyXHU5MGFhXHU5MGE2XHU5MGEzXHU5MTQ5XHU5MWM2XHU5MWNjXHU5NjMyXHU5NjJlXHU5NjMxXHU5NjJhXHU5NjJj''@;'; put 'put ''XHU0ZTI2XHU0ZTU2XHU0ZTczXHU0ZThiXHU0ZTliXHU0ZTllXHU0ZWFiXHU0ZWFjXHU0ZjZmXHU0ZjlkXHU0ZjhkXHU0ZjczXHU0ZjdmXHU0ZjZjXHU0ZjliXHU0ZjhiXHU0Zjg2XHU0ZjgzXHU0ZjcwXHU0Zjc1XHU0Zjg4XHU0ZjY5XHU0ZjdiXHU0Zjk2XHU0ZjdlXHU0ZjhmXHU0ZjkxXHU0''@;'; put 'put ''ZjdhXHU1MTU0XHU1MTUyXHU1MTU1XHU1MTY5XHU1MTc3XHU1MTc2XHU1MTc4XHU1MWJkXHU1MWZkXHU1MjNiXHU1MjM4XHU1MjM3XHU1MjNhXHU1MjMwXHU1MjJlXHU1MjM2XHU1MjQxXHU1MmJlXHU1MmJiXHU1MzUyXHU1MzU0XHU1MzUzXHU1MzUxXHU1MzY2XHU1Mzc3XHU1Mzc4XHU1Mzc5''@;'; put 'put ''XHU1M2Q2XHU1M2Q0XHU1M2Q3XHU1NDczXHU1NDc1XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTY4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjhdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE2OF1bRV1dPTQzMDA4K0UsTFs0MzAwOCtFXT1CWzE2OF1bRV0pO2ZvcihCWzE2OV09Ilx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTQ5Nlx1NTQ3OFx1NTQ5NVx1NTQ4MFx1NTQ3Ylx1NTQ3N1x1NTQ4NFx1NTQ5Mlx1NTQ4Nlx1NTQ3Y1x1NTQ5MFx1NTQ3MVx1NTQ3Nlx1NTQ4Y1x1NTQ5YVx1NTQ2Mlx1NTQ2OFx1NTQ4Ylx1NTQ3''@;'; put 'put ''ZFx1NTQ4ZVx1NTZmYVx1NTc4M1x1NTc3N1x1NTc2YVx1NTc2OVx1NTc2MVx1NTc2Nlx1NTc2NFx1NTc3Y1x1NTkxY1x1NTk0OVx1NTk0N1x1NTk0OFx1NTk0NFx1NTk1NFx1NTliZVx1NTliYlx1NTlkNFx1NTliOVx1NTlhZVx1NTlkMVx1NTljNlx1NTlkMFx1NTljZFx1NTljYlx1NTlkM1x1''@;'; put 'put ''NTljYVx1NTlhZlx1NTliM1x1NTlkMlx1NTljNVx1NWI1Zlx1NWI2NFx1NWI2M1x1NWI5N1x1NWI5YVx1NWI5OFx1NWI5Y1x1NWI5OVx1NWI5Ylx1NWMxYVx1NWM0OFx1NWM0NVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWM0Nlx1NWNiN1x1NWNhMVx1NWNiOFx1''@;'; put 'put ''NWNhOVx1NWNhYlx1NWNiMVx1NWNiM1x1NWUxOFx1NWUxYVx1NWUxNlx1NWUxNVx1NWUxYlx1NWUxMVx1NWU3OFx1NWU5YVx1NWU5N1x1NWU5Y1x1NWU5NVx1NWU5Nlx1NWVmNlx1NWYyNlx1NWYyN1x1NWYyOVx1NWY4MFx1NWY4MVx1NWY3Zlx1NWY3Y1x1NWZkZFx1NWZlMFx1NWZmZFx1NWZm''@;'; put 'put ''NVx1NWZmZlx1NjAwZlx1NjAxNFx1NjAyZlx1NjAzNVx1NjAxNlx1NjAyYVx1NjAxNVx1NjAyMVx1NjAyN1x1NjAyOVx1NjAyYlx1NjAxYlx1NjIxNlx1NjIxNVx1NjIzZlx1NjIzZVx1NjI0MFx1NjI3Zlx1NjJjOVx1NjJjY1x1NjJjNFx1NjJiZlx1NjJjMlx1NjJiOVx1NjJkMlx1NjJkYlx1''@;'; put 'put ''NjJhYlx1NjJkM1x1NjJkNFx1NjJjYlx1NjJjOFx1NjJhOFx1NjJiZFx1NjJiY1x1NjJkMFx1NjJkOVx1NjJjN1x1NjJjZFx1NjJiNVx1NjJkYVx1NjJiMVx1NjJkOFx1NjJkNlx1NjJkN1x1NjJjNlx1NjJhY1x1NjJjZVx1NjUzZVx1NjVhN1x1NjViY1x1NjVmYVx1NjYxNFx1NjYxM1x1NjYw''@;'; put 'put ''Y1x1NjYwNlx1NjYwMlx1NjYwZVx1NjYwMFx1NjYwZlx1NjYxNVx1NjYwYVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2OV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTY5XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNjldW0VdXT00MzI2NCtFLExbNDMyNjQrRV09QlsxNjldW0VdKTtm''@;'; put 'put ''b3IoQlsxNzBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY2MDdcdTY3MGRcdTY3MGJcdTY3NmRcdTY3OGJcdTY3OTVcdTY3NzFcdTY3OWNcdTY3NzNcdTY3NzdcdTY3ODdcdTY3OWRcdTY3OTdcdTY3NmZcdTY3NzBcdTY3N2ZcdTY3''@;'; put 'put ''ODlcdTY3N2VcdTY3OTBcdTY3NzVcdTY3OWFcdTY3OTNcdTY3N2NcdTY3NmFcdTY3NzJcdTZiMjNcdTZiNjZcdTZiNjdcdTZiN2ZcdTZjMTNcdTZjMWJcdTZjZTNcdTZjZThcdTZjZjNcdTZjYjFcdTZjY2NcdTZjZTVcdTZjYjNcdTZjYmRcdTZjYmVcdTZjYmNcdTZjZTJcdTZjYWJcdTZjZDVc''@;'; put 'put ''dTZjZDNcdTZjYjhcdTZjYzRcdTZjYjlcdTZjYzFcdTZjYWVcdTZjZDdcdTZjYzVcdTZjZjFcdTZjYmZcdTZjYmJcdTZjZTFcdTZjZGJcdTZjY2FcdTZjYWNcdTZjZWZcdTZjZGNcdTZjZDZcdTZjZTBcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTcwOTVcdTcwOGVc''@;'; put 'put ''dTcwOTJcdTcwOGFcdTcwOTlcdTcyMmNcdTcyMmRcdTcyMzhcdTcyNDhcdTcyNjdcdTcyNjlcdTcyYzBcdTcyY2VcdTcyZDlcdTcyZDdcdTcyZDBcdTczYTlcdTczYThcdTczOWZcdTczYWJcdTczYTVcdTc1M2RcdTc1OWRcdTc1OTlcdTc1OWFcdTc2ODRcdTc2YzJcdTc2ZjJcdTc2ZjRcdTc3''@;'; put 'put ''ZTVcdTc3ZmRcdTc5M2VcdTc5NDBcdTc5NDFcdTc5YzlcdTc5YzhcdTdhN2FcdTdhNzlcdTdhZmFcdTdjZmVcdTdmNTRcdTdmOGNcdTdmOGJcdTgwMDVcdTgwYmFcdTgwYTVcdTgwYTJcdTgwYjFcdTgwYTFcdTgwYWJcdTgwYTlcdTgwYjRcdTgwYWFcdTgwYWZcdTgxZTVcdTgxZmVcdTgyMGRc''@;'; put 'put ''dTgyYjNcdTgyOWRcdTgyOTlcdTgyYWRcdTgyYmRcdTgyOWZcdTgyYjlcdTgyYjFcdTgyYWNcdTgyYTVcdTgyYWZcdTgyYjhcdTgyYTNcdTgyYjBcdTgyYmVcdTgyYjdcdTg2NGVcdTg2NzFcdTUyMWRcdTg4NjhcdThlY2JcdThmY2VcdThmZDRcdThmZDFcdTkwYjVcdTkwYjhcdTkwYjFcdTkw''@;'; put 'put ''YjZcdTkxYzdcdTkxZDFcdTk1NzdcdTk1ODBcdTk2MWNcdTk2NDBcdTk2M2ZcdTk2M2JcdTk2NDRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3MF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTcwXVtFXV09NDM1MjArRSxMWzQzNTIwK0Vd''@;'; put 'put ''PUJbMTcwXVtFXSk7Zm9yKEJbMTcxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NjQyXHU5NmI5XHU5NmU4XHU5NzUyXHU5NzVlXHU0ZTlmXHU0ZWFkXHU0ZWFlXHU0ZmUxXHU0ZmI1XHU0ZmFmXHU0ZmJmXHU0ZmUwXHU0ZmQxXHU0''@;'; put 'put ''ZmNmXHU0ZmRkXHU0ZmMzXHU0ZmI2XHU0ZmQ4XHU0ZmRmXHU0ZmNhXHU0ZmQ3XHU0ZmFlXHU0ZmQwXHU0ZmM0XHU0ZmMyXHU0ZmRhXHU0ZmNlXHU0ZmRlXHU0ZmI3XHU1MTU3XHU1MTkyXHU1MTkxXHU1MWEwXHU1MjRlXHU1MjQzXHU1MjRhXHU1MjRkXHU1MjRjXHU1MjRiXHU1MjQ3XHU1MmM3''@;'; put 'put ''XHU1MmM5XHU1MmMzXHU1MmMxXHU1MzBkXHU1MzU3XHU1MzdiXHU1MzlhXHU1M2RiXHU1NGFjXHU1NGMwXHU1NGE4XHU1NGNlXHU1NGM5XHU1NGI4XHU1NGE2XHU1NGIzXHU1NGM3XHU1NGMyXHU1NGJkXHU1NGFhXHU1NGMxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHU1NGM0XHU1NGM4XHU1NGFmXHU1NGFiXHU1NGIxXHU1NGJiXHU1NGE5XHU1NGE3XHU1NGJmXHU1NmZmXHU1NzgyXHU1NzhiXHU1N2EwXHU1N2EzXHU1N2EyXHU1N2NlXHU1N2FlXHU1NzkzXHU1OTU1XHU1OTUxXHU1OTRmXHU1OTRlXHU1OTUwXHU1OWRjXHU1OWQ4XHU1OWZmXHU1OWUzXHU1''@;'; put 'put ''OWU4XHU1YTAzXHU1OWU1XHU1OWVhXHU1OWRhXHU1OWU2XHU1YTAxXHU1OWZiXHU1YjY5XHU1YmEzXHU1YmE2XHU1YmE0XHU1YmEyXHU1YmE1XHU1YzAxXHU1YzRlXHU1YzRmXHU1YzRkXHU1YzRiXHU1Y2Q5XHU1Y2QyXHU1ZGY3XHU1ZTFkXHU1ZTI1XHU1ZTFmXHU1ZTdkXHU1ZWEwXHU1ZWE2''@;'; put 'put ''XHU1ZWZhXHU1ZjA4XHU1ZjJkXHU1ZjY1XHU1Zjg4XHU1Zjg1XHU1ZjhhXHU1ZjhiXHU1Zjg3XHU1ZjhjXHU1Zjg5XHU2MDEyXHU2MDFkXHU2MDIwXHU2MDI1XHU2MDBlXHU2MDI4XHU2MDRkXHU2MDcwXHU2MDY4XHU2MDYyXHU2MDQ2XHU2MDQzXHU2MDZjXHU2MDZiXHU2MDZhXHU2MDY0XHU2''@;'; put 'put ''MjQxXHU2MmRjXHU2MzE2XHU2MzA5XHU2MmZjXHU2MmVkXHU2MzAxXHU2MmVlXHU2MmZkXHU2MzA3XHU2MmYxXHU2MmY3XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTcxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzFdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE3MV1bRV1dPTQzNzc2''@;'; put 'put ''K0UsTFs0Mzc3NitFXT1CWzE3MV1bRV0pO2ZvcihCWzE3Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjJlZlx1NjJlY1x1NjJmZVx1NjJmNFx1NjMxMVx1NjMwMlx1NjUzZlx1NjU0NVx1NjVhYlx1NjViZFx1NjVlMlx1NjYyNVx1''@;'; put 'put ''NjYyZFx1NjYyMFx1NjYyN1x1NjYyZlx1NjYxZlx1NjYyOFx1NjYzMVx1NjYyNFx1NjZmN1x1NjdmZlx1NjdkM1x1NjdmMVx1NjdkNFx1NjdkMFx1NjdlY1x1NjdiNlx1NjdhZlx1NjdmNVx1NjdlOVx1NjdlZlx1NjdjNFx1NjdkMVx1NjdiNFx1NjdkYVx1NjdlNVx1NjdiOFx1NjdjZlx1Njdk''@;'; put 'put ''ZVx1NjdmM1x1NjdiMFx1NjdkOVx1NjdlMlx1NjdkZFx1NjdkMlx1NmI2YVx1NmI4M1x1NmI4Nlx1NmJiNVx1NmJkMlx1NmJkN1x1NmMxZlx1NmNjOVx1NmQwYlx1NmQzMlx1NmQyYVx1NmQ0MVx1NmQyNVx1NmQwY1x1NmQzMVx1NmQxZVx1NmQxN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1NmQzYlx1NmQzZFx1NmQzZVx1NmQzNlx1NmQxYlx1NmNmNVx1NmQzOVx1NmQyN1x1NmQzOFx1NmQyOVx1NmQyZVx1NmQzNVx1NmQwZVx1NmQyYlx1NzBhYlx1NzBiYVx1NzBiM1x1NzBhY1x1NzBhZlx1NzBhZFx1NzBiOFx1NzBhZVx1NzBhNFx1NzIzMFx1NzI3Mlx1''@;'; put 'put ''NzI2Zlx1NzI3NFx1NzJlOVx1NzJlMFx1NzJlMVx1NzNiN1x1NzNjYVx1NzNiYlx1NzNiMlx1NzNjZFx1NzNjMFx1NzNiM1x1NzUxYVx1NzUyZFx1NzU0Zlx1NzU0Y1x1NzU0ZVx1NzU0Ylx1NzVhYlx1NzVhNFx1NzVhNVx1NzVhMlx1NzVhM1x1NzY3OFx1NzY4Nlx1NzY4N1x1NzY4OFx1NzZj''@;'; put 'put ''OFx1NzZjNlx1NzZjM1x1NzZjNVx1NzcwMVx1NzZmOVx1NzZmOFx1NzcwOVx1NzcwYlx1NzZmZVx1NzZmY1x1NzcwN1x1NzdkY1x1NzgwMlx1NzgxNFx1NzgwY1x1NzgwZFx1Nzk0Nlx1Nzk0OVx1Nzk0OFx1Nzk0N1x1NzliOVx1NzliYVx1NzlkMVx1NzlkMlx1NzljYlx1N2E3Zlx1N2E4MVx1''@;'; put 'put ''N2FmZlx1N2FmZFx1N2M3ZFx1N2QwMlx1N2QwNVx1N2QwMFx1N2QwOVx1N2QwN1x1N2QwNFx1N2QwNlx1N2YzOFx1N2Y4ZVx1N2ZiZlx1ODAwNFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTcyXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsx''@;'; put 'put ''NzJdW0VdXT00NDAzMitFLExbNDQwMzIrRV09QlsxNzJdW0VdKTtmb3IoQlsxNzNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgwMTBcdTgwMGRcdTgwMTFcdTgwMzZcdTgwZDZcdTgwZTVcdTgwZGFcdTgwYzNcdTgwYzRcdTgwY2Nc''@;'; put 'put ''dTgwZTFcdTgwZGJcdTgwY2VcdTgwZGVcdTgwZTRcdTgwZGRcdTgxZjRcdTgyMjJcdTgyZTdcdTgzMDNcdTgzMDVcdTgyZTNcdTgyZGJcdTgyZTZcdTgzMDRcdTgyZTVcdTgzMDJcdTgzMDlcdTgyZDJcdTgyZDdcdTgyZjFcdTgzMDFcdTgyZGNcdTgyZDRcdTgyZDFcdTgyZGVcdTgyZDNcdTgy''@;'; put 'put ''ZGZcdTgyZWZcdTgzMDZcdTg2NTBcdTg2NzlcdTg2N2JcdTg2N2FcdTg4NGRcdTg4NmJcdTg5ODFcdTg5ZDRcdThhMDhcdThhMDJcdThhMDNcdThjOWVcdThjYTBcdThkNzRcdThkNzNcdThkYjRcdThlY2RcdThlY2NcdThmZjBcdThmZTZcdThmZTJcdThmZWFcdThmZTVcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThmZWRcdThmZWJcdThmZTRcdThmZThcdTkwY2FcdTkwY2VcdTkwYzFcdTkwYzNcdTkxNGJcdTkxNGFcdTkxY2RcdTk1ODJcdTk2NTBcdTk2NGJcdTk2NGNcdTk2NGRcdTk3NjJcdTk3NjlcdTk3Y2JcdTk3ZWRcdTk3ZjNcdTk4MDFcdTk4YThc''@;'; put 'put ''dTk4ZGJcdTk4ZGZcdTk5OTZcdTk5OTlcdTRlNThcdTRlYjNcdTUwMGNcdTUwMGRcdTUwMjNcdTRmZWZcdTUwMjZcdTUwMjVcdTRmZjhcdTUwMjlcdTUwMTZcdTUwMDZcdTUwM2NcdTUwMWZcdTUwMWFcdTUwMTJcdTUwMTFcdTRmZmFcdTUwMDBcdTUwMTRcdTUwMjhcdTRmZjFcdTUwMjFcdTUw''@;'; put 'put ''MGJcdTUwMTlcdTUwMThcdTRmZjNcdTRmZWVcdTUwMmRcdTUwMmFcdTRmZmVcdTUwMmJcdTUwMDlcdTUxN2NcdTUxYTRcdTUxYTVcdTUxYTJcdTUxY2RcdTUxY2NcdTUxYzZcdTUxY2JcdTUyNTZcdTUyNWNcdTUyNTRcdTUyNWJcdTUyNWRcdTUzMmFcdTUzN2ZcdTUzOWZcdTUzOWRcdTUzZGZc''@;'; put 'put ''dTU0ZThcdTU1MTBcdTU1MDFcdTU1MzdcdTU0ZmNcdTU0ZTVcdTU0ZjJcdTU1MDZcdTU0ZmFcdTU1MTRcdTU0ZTlcdTU0ZWRcdTU0ZTFcdTU1MDlcdTU0ZWVcdTU0ZWFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3M11bRV0uY2hhckNvZGVB''@;'; put 'put ''dCgwKSYmKG1lW0JbMTczXVtFXV09NDQyODgrRSxMWzQ0Mjg4K0VdPUJbMTczXVtFXSk7Zm9yKEJbMTc0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NGU2XHU1NTI3XHU1NTA3XHU1NGZkXHU1NTBmXHU1NzAzXHU1NzA0XHU1N2My''@;'; put 'put ''XHU1N2Q0XHU1N2NiXHU1N2MzXHU1ODA5XHU1OTBmXHU1OTU3XHU1OTU4XHU1OTVhXHU1YTExXHU1YTE4XHU1YTFjXHU1YTFmXHU1YTFiXHU1YTEzXHU1OWVjXHU1YTIwXHU1YTIzXHU1YTI5XHU1YTI1XHU1YTBjXHU1YTA5XHU1YjZiXHU1YzU4XHU1YmIwXHU1YmIzXHU1YmI2XHU1YmI0XHU1''@;'; put 'put ''YmFlXHU1YmI1XHU1YmI5XHU1YmI4XHU1YzA0XHU1YzUxXHU1YzU1XHU1YzUwXHU1Y2VkXHU1Y2ZkXHU1Y2ZiXHU1Y2VhXHU1Y2U4XHU1Y2YwXHU1Y2Y2XHU1ZDAxXHU1Y2Y0XHU1ZGVlXHU1ZTJkXHU1ZTJiXHU1ZWFiXHU1ZWFkXHU1ZWE3XHU1ZjMxXHU1ZjkyXHU1ZjkxXHU1ZjkwXHU2MDU5''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MDYzXHU2MDY1XHU2MDUwXHU2MDU1XHU2MDZkXHU2MDY5XHU2MDZmXHU2MDg0XHU2MDlmXHU2MDlhXHU2MDhkXHU2MDk0XHU2MDhjXHU2MDg1XHU2MDk2XHU2MjQ3XHU2MmYzXHU2MzA4XHU2MmZmXHU2MzRlXHU2MzNl''@;'; put 'put ''XHU2MzJmXHU2MzU1XHU2MzQyXHU2MzQ2XHU2MzRmXHU2MzQ5XHU2MzNhXHU2MzUwXHU2MzNkXHU2MzJhXHU2MzJiXHU2MzI4XHU2MzRkXHU2MzRjXHU2NTQ4XHU2NTQ5XHU2NTk5XHU2NWMxXHU2NWM1XHU2NjQyXHU2NjQ5XHU2NjRmXHU2NjQzXHU2NjUyXHU2NjRjXHU2NjQ1XHU2NjQxXHU2''@;'; put 'put ''NmY4XHU2NzE0XHU2NzE1XHU2NzE3XHU2ODIxXHU2ODM4XHU2ODQ4XHU2ODQ2XHU2ODUzXHU2ODM5XHU2ODQyXHU2ODU0XHU2ODI5XHU2OGIzXHU2ODE3XHU2ODRjXHU2ODUxXHU2ODNkXHU2N2Y0XHU2ODUwXHU2ODQwXHU2ODNjXHU2ODQzXHU2ODJhXHU2ODQ1XHU2ODEzXHU2ODE4XHU2ODQx''@;'; put 'put ''XHU2YjhhXHU2Yjg5XHU2YmI3XHU2YzIzXHU2YzI3XHU2YzI4XHU2YzI2XHU2YzI0XHU2Y2YwXHU2ZDZhXHU2ZDk1XHU2ZDg4XHU2ZDg3XHU2ZDY2XHU2ZDc4XHU2ZDc3XHU2ZDU5XHU2ZDkzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTc0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzRd''@;'; put 'put ''W0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE3NF1bRV1dPTQ0NTQ0K0UsTFs0NDU0NCtFXT1CWzE3NF1bRV0pO2ZvcihCWzE3NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmQ2Y1x1NmQ4OVx1NmQ2ZVx1NmQ1YVx1NmQ3NFx1NmQ2''@;'; put 'put ''OVx1NmQ4Y1x1NmQ4YVx1NmQ3OVx1NmQ4NVx1NmQ2NVx1NmQ5NFx1NzBjYVx1NzBkOFx1NzBlNFx1NzBkOVx1NzBjOFx1NzBjZlx1NzIzOVx1NzI3OVx1NzJmY1x1NzJmOVx1NzJmZFx1NzJmOFx1NzJmN1x1NzM4Nlx1NzNlZFx1NzQwOVx1NzNlZVx1NzNlMFx1NzNlYVx1NzNkZVx1NzU1NFx1''@;'; put 'put ''NzU1ZFx1NzU1Y1x1NzU1YVx1NzU1OVx1NzViZVx1NzVjNVx1NzVjN1x1NzViMlx1NzViM1x1NzViZFx1NzViY1x1NzViOVx1NzVjMlx1NzViOFx1NzY4Ylx1NzZiMFx1NzZjYVx1NzZjZFx1NzZjZVx1NzcyOVx1NzcxZlx1NzcyMFx1NzcyOFx1NzdlOVx1NzgzMFx1NzgyN1x1NzgzOFx1Nzgx''@;'; put 'put ''ZFx1NzgzNFx1NzgzN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzgyNVx1NzgyZFx1NzgyMFx1NzgxZlx1NzgzMlx1Nzk1NVx1Nzk1MFx1Nzk2MFx1Nzk1Zlx1Nzk1Nlx1Nzk1ZVx1Nzk1ZFx1Nzk1N1x1Nzk1YVx1NzllNFx1NzllM1x1NzllN1x1NzlkZlx1Nzll''@;'; put 'put ''Nlx1NzllOVx1NzlkOFx1N2E4NFx1N2E4OFx1N2FkOVx1N2IwNlx1N2IxMVx1N2M4OVx1N2QyMVx1N2QxN1x1N2QwYlx1N2QwYVx1N2QyMFx1N2QyMlx1N2QxNFx1N2QxMFx1N2QxNVx1N2QxYVx1N2QxY1x1N2QwZFx1N2QxOVx1N2QxYlx1N2YzYVx1N2Y1Zlx1N2Y5NFx1N2ZjNVx1N2ZjMVx1''@;'; put 'put ''ODAwNlx1ODAxOFx1ODAxNVx1ODAxOVx1ODAxN1x1ODAzZFx1ODAzZlx1ODBmMVx1ODEwMlx1ODBmMFx1ODEwNVx1ODBlZFx1ODBmNFx1ODEwNlx1ODBmOFx1ODBmM1x1ODEwOFx1ODBmZFx1ODEwYVx1ODBmY1x1ODBlZlx1ODFlZFx1ODFlY1x1ODIwMFx1ODIxMFx1ODIyYVx1ODIyYlx1ODIy''@;'; put 'put ''OFx1ODIyY1x1ODJiYlx1ODMyYlx1ODM1Mlx1ODM1NFx1ODM0YVx1ODMzOFx1ODM1MFx1ODM0OVx1ODMzNVx1ODMzNFx1ODM0Zlx1ODMzMlx1ODMzOVx1ODMzNlx1ODMxN1x1ODM0MFx1ODMzMVx1ODMyOFx1ODM0M1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3NV0ubGVuZ3RoOysrRSk2''@;'; put 'put ''NTUzMyE9PUJbMTc1XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNzVdW0VdXT00NDgwMCtFLExbNDQ4MDArRV09QlsxNzVdW0VdKTtmb3IoQlsxNzZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg2NTRcdTg2OGFcdTg2YWFcdTg2''@;'; put 'put ''OTNcdTg2YTRcdTg2YTlcdTg2OGNcdTg2YTNcdTg2OWNcdTg4NzBcdTg4NzdcdTg4ODFcdTg4ODJcdTg4N2RcdTg4NzlcdThhMThcdThhMTBcdThhMGVcdThhMGNcdThhMTVcdThhMGFcdThhMTdcdThhMTNcdThhMTZcdThhMGZcdThhMTFcdThjNDhcdThjN2FcdThjNzlcdThjYTFcdThjYTJc''@;'; put 'put ''dThkNzdcdThlYWNcdThlZDJcdThlZDRcdThlY2ZcdThmYjFcdTkwMDFcdTkwMDZcdThmZjdcdTkwMDBcdThmZmFcdThmZjRcdTkwMDNcdThmZmRcdTkwMDVcdThmZjhcdTkwOTVcdTkwZTFcdTkwZGRcdTkwZTJcdTkxNTJcdTkxNGRcdTkxNGNcdTkxZDhcdTkxZGRcdTkxZDdcdTkxZGNcdTkx''@;'; put 'put ''ZDlcdTk1ODNcdTk2NjJcdTk2NjNcdTk2NjFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk2NWJcdTk2NWRcdTk2NjRcdTk2NThcdTk2NWVcdTk2YmJcdTk4ZTJcdTk5YWNcdTlhYThcdTlhZDhcdTliMjVcdTliMzJcdTliM2NcdTRlN2VcdTUwN2FcdTUwN2RcdTUw''@;'; put 'put ''NWNcdTUwNDdcdTUwNDNcdTUwNGNcdTUwNWFcdTUwNDlcdTUwNjVcdTUwNzZcdTUwNGVcdTUwNTVcdTUwNzVcdTUwNzRcdTUwNzdcdTUwNGZcdTUwMGZcdTUwNmZcdTUwNmRcdTUxNWNcdTUxOTVcdTUxZjBcdTUyNmFcdTUyNmZcdTUyZDJcdTUyZDlcdTUyZDhcdTUyZDVcdTUzMTBcdTUzMGZc''@;'; put 'put ''dTUzMTlcdTUzM2ZcdTUzNDBcdTUzM2VcdTUzYzNcdTY2ZmNcdTU1NDZcdTU1NmFcdTU1NjZcdTU1NDRcdTU1NWVcdTU1NjFcdTU1NDNcdTU1NGFcdTU1MzFcdTU1NTZcdTU1NGZcdTU1NTVcdTU1MmZcdTU1NjRcdTU1MzhcdTU1MmVcdTU1NWNcdTU1MmNcdTU1NjNcdTU1MzNcdTU1NDFcdTU1''@;'; put 'put ''NTdcdTU3MDhcdTU3MGJcdTU3MDlcdTU3ZGZcdTU4MDVcdTU4MGFcdTU4MDZcdTU3ZTBcdTU3ZTRcdTU3ZmFcdTU4MDJcdTU4MzVcdTU3ZjdcdTU3ZjlcdTU5MjBcdTU5NjJcdTVhMzZcdTVhNDFcdTVhNDlcdTVhNjZcdTVhNmFcdTVhNDBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzZd''@;'; put 'put ''Lmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3Nl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTc2XVtFXV09NDUwNTYrRSxMWzQ1MDU2K0VdPUJbMTc2XVtFXSk7Zm9yKEJbMTc3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YTNjXHU1''@;'; put 'put ''YTYyXHU1YTVhXHU1YTQ2XHU1YTRhXHU1YjcwXHU1YmM3XHU1YmM1XHU1YmM0XHU1YmMyXHU1YmJmXHU1YmM2XHU1YzA5XHU1YzA4XHU1YzA3XHU1YzYwXHU1YzVjXHU1YzVkXHU1ZDA3XHU1ZDA2XHU1ZDBlXHU1ZDFiXHU1ZDE2XHU1ZDIyXHU1ZDExXHU1ZDI5XHU1ZDE0XHU1ZDE5XHU1ZDI0''@;'; put 'put ''XHU1ZDI3XHU1ZDE3XHU1ZGUyXHU1ZTM4XHU1ZTM2XHU1ZTMzXHU1ZTM3XHU1ZWI3XHU1ZWI4XHU1ZWI2XHU1ZWI1XHU1ZWJlXHU1ZjM1XHU1ZjM3XHU1ZjU3XHU1ZjZjXHU1ZjY5XHU1ZjZiXHU1Zjk3XHU1Zjk5XHU1ZjllXHU1Zjk4XHU1ZmExXHU1ZmEwXHU1ZjljXHU2MDdmXHU2MGEzXHU2''@;'; put 'put ''MDg5XHU2MGEwXHU2MGE4XHU2MGNiXHU2MGI0XHU2MGU2XHU2MGJkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MGM1XHU2MGJiXHU2MGI1XHU2MGRjXHU2MGJjXHU2MGQ4XHU2MGQ1XHU2MGM2XHU2MGRmXHU2MGI4XHU2MGRhXHU2MGM3XHU2MjFhXHU2MjFiXHU2''@;'; put 'put ''MjQ4XHU2M2EwXHU2M2E3XHU2MzcyXHU2Mzk2XHU2M2EyXHU2M2E1XHU2Mzc3XHU2MzY3XHU2Mzk4XHU2M2FhXHU2MzcxXHU2M2E5XHU2Mzg5XHU2MzgzXHU2MzliXHU2MzZiXHU2M2E4XHU2Mzg0XHU2Mzg4XHU2Mzk5XHU2M2ExXHU2M2FjXHU2MzkyXHU2MzhmXHU2MzgwXHU2MzdiXHU2MzY5''@;'; put 'put ''XHU2MzY4XHU2MzdhXHU2NTVkXHU2NTU2XHU2NTUxXHU2NTU5XHU2NTU3XHU1NTVmXHU2NTRmXHU2NTU4XHU2NTU1XHU2NTU0XHU2NTljXHU2NTliXHU2NWFjXHU2NWNmXHU2NWNiXHU2NWNjXHU2NWNlXHU2NjVkXHU2NjVhXHU2NjY0XHU2NjY4XHU2NjY2XHU2NjVlXHU2NmY5XHU1MmQ3XHU2''@;'; put 'put ''NzFiXHU2ODgxXHU2OGFmXHU2OGEyXHU2ODkzXHU2OGI1XHU2ODdmXHU2ODc2XHU2OGIxXHU2OGE3XHU2ODk3XHU2OGIwXHU2ODgzXHU2OGM0XHU2OGFkXHU2ODg2XHU2ODg1XHU2ODk0XHU2ODlkXHU2OGE4XHU2ODlmXHU2OGExXHU2ODgyXHU2YjMyXHU2YmJhXHVmZmZkIi5zcGxpdCgiIiks''@;'; put 'put ''RT0wO0UhPUJbMTc3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzddW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE3N11bRV1dPTQ1MzEyK0UsTFs0NTMxMitFXT1CWzE3N11bRV0pO2ZvcihCWzE3OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1NmJlYlx1NmJlY1x1NmMyYlx1NmQ4ZVx1NmRiY1x1NmRmM1x1NmRkOVx1NmRiMlx1NmRlMVx1NmRjY1x1NmRlNFx1NmRmYlx1NmRmYVx1NmUwNVx1NmRjN1x1NmRjYlx1NmRhZlx1NmRkMVx1NmRhZVx1NmRkZVx1NmRmOVx1NmRiOFx1NmRmN1x1NmRmNVx1NmRjNVx1NmRkMlx1NmUx''@;'; put 'put ''YVx1NmRiNVx1NmRkYVx1NmRlYlx1NmRkOFx1NmRlYVx1NmRmMVx1NmRlZVx1NmRlOFx1NmRjNlx1NmRjNFx1NmRhYVx1NmRlY1x1NmRiZlx1NmRlNlx1NzBmOVx1NzEwOVx1NzEwYVx1NzBmZFx1NzBlZlx1NzIzZFx1NzI3ZFx1NzI4MVx1NzMxY1x1NzMxYlx1NzMxNlx1NzMxM1x1NzMxOVx1''@;'; put 'put ''NzM4N1x1NzQwNVx1NzQwYVx1NzQwM1x1NzQwNlx1NzNmZVx1NzQwZFx1NzRlMFx1NzRmNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzRmN1x1NzUxY1x1NzUyMlx1NzU2NVx1NzU2Nlx1NzU2Mlx1NzU3MFx1NzU4Zlx1NzVkNFx1NzVkNVx1NzViNVx1NzVjYVx1''@;'; put 'put ''NzVjZFx1NzY4ZVx1NzZkNFx1NzZkMlx1NzZkYlx1NzczN1x1NzczZVx1NzczY1x1NzczNlx1NzczOFx1NzczYVx1Nzg2Ylx1Nzg0M1x1Nzg0ZVx1Nzk2NVx1Nzk2OFx1Nzk2ZFx1NzlmYlx1N2E5Mlx1N2E5NVx1N2IyMFx1N2IyOFx1N2IxYlx1N2IyY1x1N2IyNlx1N2IxOVx1N2IxZVx1N2Iy''@;'; put 'put ''ZVx1N2M5Mlx1N2M5N1x1N2M5NVx1N2Q0Nlx1N2Q0M1x1N2Q3MVx1N2QyZVx1N2QzOVx1N2QzY1x1N2Q0MFx1N2QzMFx1N2QzM1x1N2Q0NFx1N2QyZlx1N2Q0Mlx1N2QzMlx1N2QzMVx1N2YzZFx1N2Y5ZVx1N2Y5YVx1N2ZjY1x1N2ZjZVx1N2ZkMlx1ODAxY1x1ODA0YVx1ODA0Nlx1ODEyZlx1''@;'; put 'put ''ODExNlx1ODEyM1x1ODEyYlx1ODEyOVx1ODEzMFx1ODEyNFx1ODIwMlx1ODIzNVx1ODIzN1x1ODIzNlx1ODIzOVx1ODM4ZVx1ODM5ZVx1ODM5OFx1ODM3OFx1ODNhMlx1ODM5Nlx1ODNiZFx1ODNhYlx1ODM5Mlx1ODM4YVx1ODM5M1x1ODM4OVx1ODNhMFx1ODM3N1x1ODM3Ylx1ODM3Y1x1ZmZm''@;'; put 'put ''ZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3OF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTc4XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNzhdW0VdXT00NTU2OCtFLExbNDU1NjgrRV09QlsxNzhdW0VdKTtmb3IoQlsxNzldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdTgzODZcdTgzYTdcdTg2NTVcdTVmNmFcdTg2YzdcdTg2YzBcdTg2YjZcdTg2YzRcdTg2YjVcdTg2YzZcdTg2Y2JcdTg2YjFcdTg2YWZcdTg2YzlcdTg4NTNcdTg4OWVcdTg4ODhcdTg4YWJcdTg4OTJcdTg4OTZcdTg4OGRcdTg4OGJcdTg5OTNcdTg5OGZcdThh''@;'; put 'put ''MmFcdThhMWRcdThhMjNcdThhMjVcdThhMzFcdThhMmRcdThhMWZcdThhMWJcdThhMjJcdThjNDlcdThjNWFcdThjYTlcdThjYWNcdThjYWJcdThjYThcdThjYWFcdThjYTdcdThkNjdcdThkNjZcdThkYmVcdThkYmFcdThlZGJcdThlZGZcdTkwMTlcdTkwMGRcdTkwMWFcdTkwMTdcdTkwMjNc''@;'; put 'put ''dTkwMWZcdTkwMWRcdTkwMTBcdTkwMTVcdTkwMWVcdTkwMjBcdTkwMGZcdTkwMjJcdTkwMTZcdTkwMWJcdTkwMTRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkwZThcdTkwZWRcdTkwZmRcdTkxNTdcdTkxY2VcdTkxZjVcdTkxZTZcdTkxZTNcdTkxZTdcdTkxZWRc''@;'; put 'put ''dTkxZTlcdTk1ODlcdTk2NmFcdTk2NzVcdTk2NzNcdTk2NzhcdTk2NzBcdTk2NzRcdTk2NzZcdTk2NzdcdTk2NmNcdTk2YzBcdTk2ZWFcdTk2ZTlcdTdhZTBcdTdhZGZcdTk4MDJcdTk4MDNcdTliNWFcdTljZTVcdTllNzVcdTllN2ZcdTllYTVcdTllYmJcdTUwYTJcdTUwOGRcdTUwODVcdTUw''@;'; put 'put ''OTlcdTUwOTFcdTUwODBcdTUwOTZcdTUwOThcdTUwOWFcdTY3MDBcdTUxZjFcdTUyNzJcdTUyNzRcdTUyNzVcdTUyNjlcdTUyZGVcdTUyZGRcdTUyZGJcdTUzNWFcdTUzYTVcdTU1N2JcdTU1ODBcdTU1YTdcdTU1N2NcdTU1OGFcdTU1OWRcdTU1OThcdTU1ODJcdTU1OWNcdTU1YWFcdTU1OTRc''@;'; put 'put ''dTU1ODdcdTU1OGJcdTU1ODNcdTU1YjNcdTU1YWVcdTU1OWZcdTU1M2VcdTU1YjJcdTU1OWFcdTU1YmJcdTU1YWNcdTU1YjFcdTU1N2VcdTU1ODlcdTU1YWJcdTU1OTlcdTU3MGRcdTU4MmZcdTU4MmFcdTU4MzRcdTU4MjRcdTU4MzBcdTU4MzFcdTU4MjFcdTU4MWRcdTU4MjBcdTU4ZjlcdTU4''@;'; put 'put ''ZmFcdTU5NjBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3OV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTc5XVtFXV09NDU4MjQrRSxMWzQ1ODI0K0VdPUJbMTc5XVtFXSk7Zm9yKEJbMTgwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YTc3XHU1YTlhXHU1YTdmXHU1YTkyXHU1YTliXHU1YWE3XHU1YjczXHU1YjcxXHU1YmQyXHU1YmNjXHU1YmQzXHU1YmQwXHU1YzBhXHU1YzBiXHU1YzMxXHU1ZDRjXHU1ZDUwXHU1ZDM0XHU1ZDQ3XHU1ZGZkXHU1ZTQ1XHU1ZTNkXHU1''@;'; put 'put ''ZTQwXHU1ZTQzXHU1ZTdlXHU1ZWNhXHU1ZWMxXHU1ZWMyXHU1ZWM0XHU1ZjNjXHU1ZjZkXHU1ZmE5XHU1ZmFhXHU1ZmE4XHU2MGQxXHU2MGUxXHU2MGIyXHU2MGI2XHU2MGUwXHU2MTFjXHU2MTIzXHU2MGZhXHU2MTE1XHU2MGYwXHU2MGZiXHU2MGY0XHU2MTY4XHU2MGYxXHU2MTBlXHU2MGY2''@;'; put 'put ''XHU2MTA5XHU2MTAwXHU2MTEyXHU2MjFmXHU2MjQ5XHU2M2EzXHU2MzhjXHU2M2NmXHU2M2MwXHU2M2U5XHU2M2M5XHU2M2M2XHU2M2NkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2M2QyXHU2M2UzXHU2M2QwXHU2M2UxXHU2M2Q2XHU2M2VkXHU2M2VlXHU2Mzc2''@;'; put 'put ''XHU2M2Y0XHU2M2VhXHU2M2RiXHU2NDUyXHU2M2RhXHU2M2Y5XHU2NTVlXHU2NTY2XHU2NTYyXHU2NTYzXHU2NTkxXHU2NTkwXHU2NWFmXHU2NjZlXHU2NjcwXHU2Njc0XHU2Njc2XHU2NjZmXHU2NjkxXHU2NjdhXHU2NjdlXHU2Njc3XHU2NmZlXHU2NmZmXHU2NzFmXHU2NzFkXHU2OGZhXHU2''@;'; put 'put ''OGQ1XHU2OGUwXHU2OGQ4XHU2OGQ3XHU2OTA1XHU2OGRmXHU2OGY1XHU2OGVlXHU2OGU3XHU2OGY5XHU2OGQyXHU2OGYyXHU2OGUzXHU2OGNiXHU2OGNkXHU2OTBkXHU2OTEyXHU2OTBlXHU2OGM5XHU2OGRhXHU2OTZlXHU2OGZiXHU2YjNlXHU2YjNhXHU2YjNkXHU2Yjk4XHU2Yjk2XHU2YmJj''@;'; put 'put ''XHU2YmVmXHU2YzJlXHU2YzJmXHU2YzJjXHU2ZTJmXHU2ZTM4XHU2ZTU0XHU2ZTIxXHU2ZTMyXHU2ZTY3XHU2ZTRhXHU2ZTIwXHU2ZTI1XHU2ZTIzXHU2ZTFiXHU2ZTViXHU2ZTU4XHU2ZTI0XHU2ZTU2XHU2ZTZlXHU2ZTJkXHU2ZTI2XHU2ZTZmXHU2ZTM0XHU2ZTRkXHU2ZTNhXHU2ZTJjXHU2''@;'; put 'put ''ZTQzXHU2ZTFkXHU2ZTNlXHU2ZWNiXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTgwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODBdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE4MF1bRV1dPTQ2MDgwK0UsTFs0NjA4MCtFXT1CWzE4MF1bRV0pO2ZvcihCWzE4MV09Ilx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmU4OVx1NmUxOVx1NmU0ZVx1NmU2M1x1NmU0NFx1NmU3Mlx1NmU2OVx1NmU1Zlx1NzExOVx1NzExYVx1NzEyNlx1NzEzMFx1NzEyMVx1NzEzNlx1NzE2ZVx1NzExY1x1NzI0Y1x1NzI4NFx1NzI4MFx1NzMzNlx1''@;'; put 'put ''NzMyNVx1NzMzNFx1NzMyOVx1NzQzYVx1NzQyYVx1NzQzM1x1NzQyMlx1NzQyNVx1NzQzNVx1NzQzNlx1NzQzNFx1NzQyZlx1NzQxYlx1NzQyNlx1NzQyOFx1NzUyNVx1NzUyNlx1NzU2Ylx1NzU2YVx1NzVlMlx1NzVkYlx1NzVlM1x1NzVkOVx1NzVkOFx1NzVkZVx1NzVlMFx1NzY3Ylx1NzY3''@;'; put 'put ''Y1x1NzY5Nlx1NzY5M1x1NzZiNFx1NzZkY1x1Nzc0Zlx1NzdlZFx1Nzg1ZFx1Nzg2Y1x1Nzg2Zlx1N2EwZFx1N2EwOFx1N2EwYlx1N2EwNVx1N2EwMFx1N2E5OFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2E5N1x1N2E5Nlx1N2FlNVx1N2FlM1x1N2I0OVx1N2I1''@;'; put 'put ''Nlx1N2I0Nlx1N2I1MFx1N2I1Mlx1N2I1NFx1N2I0ZFx1N2I0Ylx1N2I0Zlx1N2I1MVx1N2M5Zlx1N2NhNVx1N2Q1ZVx1N2Q1MFx1N2Q2OFx1N2Q1NVx1N2QyYlx1N2Q2ZVx1N2Q3Mlx1N2Q2MVx1N2Q2Nlx1N2Q2Mlx1N2Q3MFx1N2Q3M1x1NTU4NFx1N2ZkNFx1N2ZkNVx1ODAwYlx1ODA1Mlx1''@;'; put 'put ''ODA4NVx1ODE1NVx1ODE1NFx1ODE0Ylx1ODE1MVx1ODE0ZVx1ODEzOVx1ODE0Nlx1ODEzZVx1ODE0Y1x1ODE1M1x1ODE3NFx1ODIxMlx1ODIxY1x1ODNlOVx1ODQwM1x1ODNmOFx1ODQwZFx1ODNlMFx1ODNjNVx1ODQwYlx1ODNjMVx1ODNlZlx1ODNmMVx1ODNmNFx1ODQ1N1x1ODQwYVx1ODNm''@;'; put 'put ''MFx1ODQwY1x1ODNjY1x1ODNmZFx1ODNmMlx1ODNjYVx1ODQzOFx1ODQwZVx1ODQwNFx1ODNkY1x1ODQwN1x1ODNkNFx1ODNkZlx1ODY1Ylx1ODZkZlx1ODZkOVx1ODZlZFx1ODZkNFx1ODZkYlx1ODZlNFx1ODZkMFx1ODZkZVx1ODg1N1x1ODhjMVx1ODhjMlx1ODhiMVx1ODk4M1x1ODk5Nlx1''@;'; put 'put ''OGEzYlx1OGE2MFx1OGE1NVx1OGE1ZVx1OGEzY1x1OGE0MVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4MV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTgxXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxODFdW0VdXT00NjMzNitFLExbNDYzMzYrRV09QlsxODFdW0VdKTtmb3IoQlsxODJd''@;'; put 'put ''PSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThhNTRcdThhNWJcdThhNTBcdThhNDZcdThhMzRcdThhM2FcdThhMzZcdThhNTZcdThjNjFcdThjODJcdThjYWZcdThjYmNcdThjYjNcdThjYmRcdThjYzFcdThjYmJcdThjYzBcdThjYjRc''@;'; put 'put ''dThjYjdcdThjYjZcdThjYmZcdThjYjhcdThkOGFcdThkODVcdThkODFcdThkY2VcdThkZGRcdThkY2JcdThkZGFcdThkZDFcdThkY2NcdThkZGJcdThkYzZcdThlZmJcdThlZjhcdThlZmNcdThmOWNcdTkwMmVcdTkwMzVcdTkwMzFcdTkwMzhcdTkwMzJcdTkwMzZcdTkxMDJcdTkwZjVcdTkx''@;'; put 'put ''MDlcdTkwZmVcdTkxNjNcdTkxNjVcdTkxY2ZcdTkyMTRcdTkyMTVcdTkyMjNcdTkyMDlcdTkyMWVcdTkyMGRcdTkyMTBcdTkyMDdcdTkyMTFcdTk1OTRcdTk1OGZcdTk1OGJcdTk1OTFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk1OTNcdTk1OTJcdTk1OGVcdTk2''@;'; put 'put ''OGFcdTk2OGVcdTk2OGJcdTk2N2RcdTk2ODVcdTk2ODZcdTk2OGRcdTk2NzJcdTk2ODRcdTk2YzFcdTk2YzVcdTk2YzRcdTk2YzZcdTk2YzdcdTk2ZWZcdTk2ZjJcdTk3Y2NcdTk4MDVcdTk4MDZcdTk4MDhcdTk4ZTdcdTk4ZWFcdTk4ZWZcdTk4ZTlcdTk4ZjJcdTk4ZWRcdTk5YWVcdTk5YWRc''@;'; put 'put ''dTllYzNcdTllY2RcdTllZDFcdTRlODJcdTUwYWRcdTUwYjVcdTUwYjJcdTUwYjNcdTUwYzVcdTUwYmVcdTUwYWNcdTUwYjdcdTUwYmJcdTUwYWZcdTUwYzdcdTUyN2ZcdTUyNzdcdTUyN2RcdTUyZGZcdTUyZTZcdTUyZTRcdTUyZTJcdTUyZTNcdTUzMmZcdTU1ZGZcdTU1ZThcdTU1ZDNcdTU1''@;'; put 'put ''ZTZcdTU1Y2VcdTU1ZGNcdTU1YzdcdTU1ZDFcdTU1ZTNcdTU1ZTRcdTU1ZWZcdTU1ZGFcdTU1ZTFcdTU1YzVcdTU1YzZcdTU1ZTVcdTU1YzlcdTU3MTJcdTU3MTNcdTU4NWVcdTU4NTFcdTU4NThcdTU4NTdcdTU4NWFcdTU4NTRcdTU4NmJcdTU4NGNcdTU4NmRcdTU4NGFcdTU4NjJcdTU4NTJc''@;'; put 'put ''dTU4NGJcdTU5NjdcdTVhYzFcdTVhYzlcdTVhY2NcdTVhYmVcdTVhYmRcdTVhYmNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4Ml1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTgyXVtFXV09NDY1OTIrRSxMWzQ2NTkyK0VdPUJbMTgyXVtF''@;'; put 'put ''XSk7Zm9yKEJbMTgzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YWIzXHU1YWMyXHU1YWIyXHU1ZDY5XHU1ZDZmXHU1ZTRjXHU1ZTc5XHU1ZWM5XHU1ZWM4XHU1ZjEyXHU1ZjU5XHU1ZmFjXHU1ZmFlXHU2MTFhXHU2MTBmXHU2MTQ4''@;'; put 'put ''XHU2MTFmXHU2MGYzXHU2MTFiXHU2MGY5XHU2MTAxXHU2MTA4XHU2MTRlXHU2MTRjXHU2MTQ0XHU2MTRkXHU2MTNlXHU2MTM0XHU2MTI3XHU2MTBkXHU2MTA2XHU2MTM3XHU2MjIxXHU2MjIyXHU2NDEzXHU2NDNlXHU2NDFlXHU2NDJhXHU2NDJkXHU2NDNkXHU2NDJjXHU2NDBmXHU2NDFjXHU2''@;'; put 'put ''NDE0XHU2NDBkXHU2NDM2XHU2NDE2XHU2NDE3XHU2NDA2XHU2NTZjXHU2NTlmXHU2NWIwXHU2Njk3XHU2Njg5XHU2Njg3XHU2Njg4XHU2Njk2XHU2Njg0XHU2Njk4XHU2NjhkXHU2NzAzXHU2OTk0XHU2OTZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2OTVhXHU2''@;'; put 'put ''OTc3XHU2OTYwXHU2OTU0XHU2OTc1XHU2OTMwXHU2OTgyXHU2OTRhXHU2OTY4XHU2OTZiXHU2OTVlXHU2OTUzXHU2OTc5XHU2OTg2XHU2OTVkXHU2OTYzXHU2OTViXHU2YjQ3XHU2YjcyXHU2YmMwXHU2YmJmXHU2YmQzXHU2YmZkXHU2ZWEyXHU2ZWFmXHU2ZWQzXHU2ZWI2XHU2ZWMyXHU2ZTkw''@;'; put 'put ''XHU2ZTlkXHU2ZWM3XHU2ZWM1XHU2ZWE1XHU2ZTk4XHU2ZWJjXHU2ZWJhXHU2ZWFiXHU2ZWQxXHU2ZTk2XHU2ZTljXHU2ZWM0XHU2ZWQ0XHU2ZWFhXHU2ZWE3XHU2ZWI0XHU3MTRlXHU3MTU5XHU3MTY5XHU3MTY0XHU3MTQ5XHU3MTY3XHU3MTVjXHU3MTZjXHU3MTY2XHU3MTRjXHU3MTY1XHU3''@;'; put 'put ''MTVlXHU3MTQ2XHU3MTY4XHU3MTU2XHU3MjNhXHU3MjUyXHU3MzM3XHU3MzQ1XHU3MzNmXHU3MzNlXHU3NDZmXHU3NDVhXHU3NDU1XHU3NDVmXHU3NDVlXHU3NDQxXHU3NDNmXHU3NDU5XHU3NDViXHU3NDVjXHU3NTc2XHU3NTc4XHU3NjAwXHU3NWYwXHU3NjAxXHU3NWYyXHU3NWYxXHU3NWZh''@;'; put 'put ''XHU3NWZmXHU3NWY0XHU3NWYzXHU3NmRlXHU3NmRmXHU3NzViXHU3NzZiXHU3NzY2XHU3NzVlXHU3NzYzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTgzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODNdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE4M11bRV1dPTQ2ODQ4K0UsTFs0Njg0''@;'; put 'put ''OCtFXT1CWzE4M11bRV0pO2ZvcihCWzE4NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Nzc3OVx1Nzc2YVx1Nzc2Y1x1Nzc1Y1x1Nzc2NVx1Nzc2OFx1Nzc2Mlx1NzdlZVx1Nzg4ZVx1NzhiMFx1Nzg5N1x1Nzg5OFx1Nzg4Y1x1Nzg4''@;'; put 'put ''OVx1Nzg3Y1x1Nzg5MVx1Nzg5M1x1Nzg3Zlx1Nzk3YVx1Nzk3Zlx1Nzk4MVx1ODQyY1x1NzliZFx1N2ExY1x1N2ExYVx1N2EyMFx1N2ExNFx1N2ExZlx1N2ExZVx1N2E5Zlx1N2FhMFx1N2I3N1x1N2JjMFx1N2I2MFx1N2I2ZVx1N2I2N1x1N2NiMVx1N2NiM1x1N2NiNVx1N2Q5M1x1N2Q3OVx1''@;'; put 'put ''N2Q5MVx1N2Q4MVx1N2Q4Zlx1N2Q1Ylx1N2Y2ZVx1N2Y2OVx1N2Y2YVx1N2Y3Mlx1N2ZhOVx1N2ZhOFx1N2ZhNFx1ODA1Nlx1ODA1OFx1ODA4Nlx1ODA4NFx1ODE3MVx1ODE3MFx1ODE3OFx1ODE2NVx1ODE2ZVx1ODE3M1x1ODE2Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ODE3OVx1ODE3YVx1ODE2Nlx1ODIwNVx1ODI0N1x1ODQ4Mlx1ODQ3N1x1ODQzZFx1ODQzMVx1ODQ3NVx1ODQ2Nlx1ODQ2Ylx1ODQ0OVx1ODQ2Y1x1ODQ1Ylx1ODQzY1x1ODQzNVx1ODQ2MVx1ODQ2M1x1ODQ2OVx1ODQ2ZFx1ODQ0Nlx1ODY1ZVx1ODY1Y1x1ODY1Zlx1ODZmOVx1ODcx''@;'; put 'put ''M1x1ODcwOFx1ODcwN1x1ODcwMFx1ODZmZVx1ODZmYlx1ODcwMlx1ODcwM1x1ODcwNlx1ODcwYVx1ODg1OVx1ODhkZlx1ODhkNFx1ODhkOVx1ODhkY1x1ODhkOFx1ODhkZFx1ODhlMVx1ODhjYVx1ODhkNVx1ODhkMlx1ODk5Y1x1ODllM1x1OGE2Ylx1OGE3Mlx1OGE3M1x1OGE2Nlx1OGE2OVx1''@;'; put 'put ''OGE3MFx1OGE4N1x1OGE3Y1x1OGE2M1x1OGFhMFx1OGE3MVx1OGE4NVx1OGE2ZFx1OGE2Mlx1OGE2ZVx1OGE2Y1x1OGE3OVx1OGE3Ylx1OGEzZVx1OGE2OFx1OGM2Mlx1OGM4YVx1OGM4OVx1OGNjYVx1OGNjN1x1OGNjOFx1OGNjNFx1OGNiMlx1OGNjM1x1OGNjMlx1OGNjNVx1OGRlMVx1OGRk''@;'; put 'put ''Zlx1OGRlOFx1OGRlZlx1OGRmM1x1OGRmYVx1OGRlYVx1OGRlNFx1OGRlNlx1OGViMlx1OGYwM1x1OGYwOVx1OGVmZVx1OGYwYVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4NF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTg0XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxODRdW0VdXT00''@;'; put 'put ''NzEwNCtFLExbNDcxMDQrRV09QlsxODRdW0VdKTtmb3IoQlsxODVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThmOWZcdThmYjJcdTkwNGJcdTkwNGFcdTkwNTNcdTkwNDJcdTkwNTRcdTkwM2NcdTkwNTVcdTkwNTBcdTkwNDdcdTkw''@;'; put 'put ''NGZcdTkwNGVcdTkwNGRcdTkwNTFcdTkwM2VcdTkwNDFcdTkxMTJcdTkxMTdcdTkxNmNcdTkxNmFcdTkxNjlcdTkxYzlcdTkyMzdcdTkyNTdcdTkyMzhcdTkyM2RcdTkyNDBcdTkyM2VcdTkyNWJcdTkyNGJcdTkyNjRcdTkyNTFcdTkyMzRcdTkyNDlcdTkyNGRcdTkyNDVcdTkyMzlcdTkyM2Zc''@;'; put 'put ''dTkyNWFcdTk1OThcdTk2OThcdTk2OTRcdTk2OTVcdTk2Y2RcdTk2Y2JcdTk2YzlcdTk2Y2FcdTk2ZjdcdTk2ZmJcdTk2ZjlcdTk2ZjZcdTk3NTZcdTk3NzRcdTk3NzZcdTk4MTBcdTk4MTFcdTk4MTNcdTk4MGFcdTk4MTJcdTk4MGNcdTk4ZmNcdTk4ZjRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdTk4ZmRcdTk4ZmVcdTk5YjNcdTk5YjFcdTk5YjRcdTlhZTFcdTljZTlcdTllODJcdTlmMGVcdTlmMTNcdTlmMjBcdTUwZTdcdTUwZWVcdTUwZTVcdTUwZDZcdTUwZWRcdTUwZGFcdTUwZDVcdTUwY2ZcdTUwZDFcdTUwZjFcdTUwY2VcdTUwZTlcdTUxNjJcdTUx''@;'; put 'put ''ZjNcdTUyODNcdTUyODJcdTUzMzFcdTUzYWRcdTU1ZmVcdTU2MDBcdTU2MWJcdTU2MTdcdTU1ZmRcdTU2MTRcdTU2MDZcdTU2MDlcdTU2MGRcdTU2MGVcdTU1ZjdcdTU2MTZcdTU2MWZcdTU2MDhcdTU2MTBcdTU1ZjZcdTU3MThcdTU3MTZcdTU4NzVcdTU4N2VcdTU4ODNcdTU4OTNcdTU4OGFc''@;'; put 'put ''dTU4NzlcdTU4ODVcdTU4N2RcdTU4ZmRcdTU5MjVcdTU5MjJcdTU5MjRcdTU5NmFcdTU5NjlcdTVhZTFcdTVhZTZcdTVhZTlcdTVhZDdcdTVhZDZcdTVhZDhcdTVhZTNcdTViNzVcdTViZGVcdTViZTdcdTViZTFcdTViZTVcdTViZTZcdTViZThcdTViZTJcdTViZTRcdTViZGZcdTVjMGRcdTVj''@;'; put 'put ''NjJcdTVkODRcdTVkODdcdTVlNWJcdTVlNjNcdTVlNTVcdTVlNTdcdTVlNTRcdTVlZDNcdTVlZDZcdTVmMGFcdTVmNDZcdTVmNzBcdTVmYjlcdTYxNDdcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4NV1bRV0uY2hhckNvZGVBdCgwKSYmKG1l''@;'; put 'put ''W0JbMTg1XVtFXV09NDczNjArRSxMWzQ3MzYwK0VdPUJbMTg1XVtFXSk7Zm9yKEJbMTg2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MTNmXHU2MTRiXHU2MTc3XHU2MTYyXHU2MTYzXHU2MTVmXHU2MTVhXHU2MTU4XHU2MTc1XHU2''@;'; put 'put ''MjJhXHU2NDg3XHU2NDU4XHU2NDU0XHU2NGE0XHU2NDc4XHU2NDVmXHU2NDdhXHU2NDUxXHU2NDY3XHU2NDM0XHU2NDZkXHU2NDdiXHU2NTcyXHU2NWExXHU2NWQ3XHU2NWQ2XHU2NmEyXHU2NmE4XHU2NjlkXHU2OTljXHU2OWE4XHU2OTk1XHU2OWMxXHU2OWFlXHU2OWQzXHU2OWNiXHU2OTli''@;'; put 'put ''XHU2OWI3XHU2OWJiXHU2OWFiXHU2OWI0XHU2OWQwXHU2OWNkXHU2OWFkXHU2OWNjXHU2OWE2XHU2OWMzXHU2OWEzXHU2YjQ5XHU2YjRjXHU2YzMzXHU2ZjMzXHU2ZjE0XHU2ZWZlXHU2ZjEzXHU2ZWY0XHU2ZjI5XHU2ZjNlXHU2ZjIwXHU2ZjJjXHU2ZjBmXHU2ZjAyXHU2ZjIyXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZWZmXHU2ZWVmXHU2ZjA2XHU2ZjMxXHU2ZjM4XHU2ZjMyXHU2ZjIzXHU2ZjE1XHU2ZjJiXHU2ZjJmXHU2Zjg4XHU2ZjJhXHU2ZWVjXHU2ZjAxXHU2ZWYyXHU2ZWNjXHU2ZWY3XHU3MTk0XHU3MTk5XHU3MTdkXHU3MThhXHU3MTg0XHU3''@;'; put 'put ''MTkyXHU3MjNlXHU3MjkyXHU3Mjk2XHU3MzQ0XHU3MzUwXHU3NDY0XHU3NDYzXHU3NDZhXHU3NDcwXHU3NDZkXHU3NTA0XHU3NTkxXHU3NjI3XHU3NjBkXHU3NjBiXHU3NjA5XHU3NjEzXHU3NmUxXHU3NmUzXHU3Nzg0XHU3NzdkXHU3NzdmXHU3NzYxXHU3OGMxXHU3ODlmXHU3OGE3XHU3OGIz''@;'; put 'put ''XHU3OGE5XHU3OGEzXHU3OThlXHU3OThmXHU3OThkXHU3YTJlXHU3YTMxXHU3YWFhXHU3YWE5XHU3YWVkXHU3YWVmXHU3YmExXHU3Yjk1XHU3YjhiXHU3Yjc1XHU3Yjk3XHU3YjlkXHU3Yjk0XHU3YjhmXHU3YmI4XHU3Yjg3XHU3Yjg0XHU3Y2I5XHU3Y2JkXHU3Y2JlXHU3ZGJiXHU3ZGIwXHU3''@;'; put 'put ''ZDljXHU3ZGJkXHU3ZGJlXHU3ZGEwXHU3ZGNhXHU3ZGI0XHU3ZGIyXHU3ZGIxXHU3ZGJhXHU3ZGEyXHU3ZGJmXHU3ZGI1XHU3ZGI4XHU3ZGFkXHU3ZGQyXHU3ZGM3XHU3ZGFjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTg2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODZdW0VdLmNoYXJD''@;'; put 'put ''b2RlQXQoMCkmJihtZVtCWzE4Nl1bRV1dPTQ3NjE2K0UsTFs0NzYxNitFXT1CWzE4Nl1bRV0pO2ZvcihCWzE4N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2Y3MFx1N2ZlMFx1N2ZlMVx1N2ZkZlx1ODA1ZVx1ODA1YVx1ODA4N1x1''@;'; put 'put ''ODE1MFx1ODE4MFx1ODE4Zlx1ODE4OFx1ODE4YVx1ODE3Zlx1ODE4Mlx1ODFlN1x1ODFmYVx1ODIwN1x1ODIxNFx1ODIxZVx1ODI0Ylx1ODRjOVx1ODRiZlx1ODRjNlx1ODRjNFx1ODQ5OVx1ODQ5ZVx1ODRiMlx1ODQ5Y1x1ODRjYlx1ODRiOFx1ODRjMFx1ODRkM1x1ODQ5MFx1ODRiY1x1ODRk''@;'; put 'put ''MVx1ODRjYVx1ODczZlx1ODcxY1x1ODczYlx1ODcyMlx1ODcyNVx1ODczNFx1ODcxOFx1ODc1NVx1ODczN1x1ODcyOVx1ODhmM1x1ODkwMlx1ODhmNFx1ODhmOVx1ODhmOFx1ODhmZFx1ODhlOFx1ODkxYVx1ODhlZlx1OGFhNlx1OGE4Y1x1OGE5ZVx1OGFhM1x1OGE4ZFx1OGFhMVx1OGE5M1x1''@;'; put 'put ''OGFhNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGFhYVx1OGFhNVx1OGFhOFx1OGE5OFx1OGE5MVx1OGE5YVx1OGFhN1x1OGM2YVx1OGM4ZFx1OGM4Y1x1OGNkM1x1OGNkMVx1OGNkMlx1OGQ2Ylx1OGQ5OVx1OGQ5NVx1OGRmY1x1OGYxNFx1OGYxMlx1OGYxNVx1''@;'; put 'put ''OGYxM1x1OGZhM1x1OTA2MFx1OTA1OFx1OTA1Y1x1OTA2M1x1OTA1OVx1OTA1ZVx1OTA2Mlx1OTA1ZFx1OTA1Ylx1OTExOVx1OTExOFx1OTExZVx1OTE3NVx1OTE3OFx1OTE3N1x1OTE3NFx1OTI3OFx1OTI4MFx1OTI4NVx1OTI5OFx1OTI5Nlx1OTI3Ylx1OTI5M1x1OTI5Y1x1OTJhOFx1OTI3''@;'; put 'put ''Y1x1OTI5MVx1OTVhMVx1OTVhOFx1OTVhOVx1OTVhM1x1OTVhNVx1OTVhNFx1OTY5OVx1OTY5Y1x1OTY5Ylx1OTZjY1x1OTZkMlx1OTcwMFx1OTc3Y1x1OTc4NVx1OTdmNlx1OTgxN1x1OTgxOFx1OThhZlx1OThiMVx1OTkwM1x1OTkwNVx1OTkwY1x1OTkwOVx1OTljMVx1OWFhZlx1OWFiMFx1''@;'; put 'put ''OWFlNlx1OWI0MVx1OWI0Mlx1OWNmNFx1OWNmNlx1OWNmM1x1OWViY1x1OWYzYlx1OWY0YVx1NTEwNFx1NTEwMFx1NTBmYlx1NTBmNVx1NTBmOVx1NTEwMlx1NTEwOFx1NTEwOVx1NTEwNVx1NTFkY1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4N10ubGVuZ3RoOysrRSk2NTUzMyE9PUJb''@;'; put 'put ''MTg3XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxODddW0VdXT00Nzg3MitFLExbNDc4NzIrRV09QlsxODddW0VdKTtmb3IoQlsxODhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTUyODdcdTUyODhcdTUyODlcdTUyOGRcdTUyOGFc''@;'; put 'put ''dTUyZjBcdTUzYjJcdTU2MmVcdTU2M2JcdTU2MzlcdTU2MzJcdTU2M2ZcdTU2MzRcdTU2MjlcdTU2NTNcdTU2NGVcdTU2NTdcdTU2NzRcdTU2MzZcdTU2MmZcdTU2MzBcdTU4ODBcdTU4OWZcdTU4OWVcdTU4YjNcdTU4OWNcdTU4YWVcdTU4YTlcdTU4YTZcdTU5NmRcdTViMDlcdTVhZmJcdTVi''@;'; put 'put ''MGJcdTVhZjVcdTViMGNcdTViMDhcdTViZWVcdTViZWNcdTViZTlcdTViZWJcdTVjNjRcdTVjNjVcdTVkOWRcdTVkOTRcdTVlNjJcdTVlNWZcdTVlNjFcdTVlZTJcdTVlZGFcdTVlZGZcdTVlZGRcdTVlZTNcdTVlZTBcdTVmNDhcdTVmNzFcdTVmYjdcdTVmYjVcdTYxNzZcdTYxNjdcdTYxNmVc''@;'; put 'put ''dTYxNWRcdTYxNTVcdTYxODJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYxN2NcdTYxNzBcdTYxNmJcdTYxN2VcdTYxYTdcdTYxOTBcdTYxYWJcdTYxOGVcdTYxYWNcdTYxOWFcdTYxYTRcdTYxOTRcdTYxYWVcdTYyMmVcdTY0NjlcdTY0NmZcdTY0NzlcdTY0OWVc''@;'; put 'put ''dTY0YjJcdTY0ODhcdTY0OTBcdTY0YjBcdTY0YTVcdTY0OTNcdTY0OTVcdTY0YTlcdTY0OTJcdTY0YWVcdTY0YWRcdTY0YWJcdTY0OWFcdTY0YWNcdTY0OTlcdTY0YTJcdTY0YjNcdTY1NzVcdTY1NzdcdTY1NzhcdTY2YWVcdTY2YWJcdTY2YjRcdTY2YjFcdTZhMjNcdTZhMWZcdTY5ZThcdTZh''@;'; put 'put ''MDFcdTZhMWVcdTZhMTlcdTY5ZmRcdTZhMjFcdTZhMTNcdTZhMGFcdTY5ZjNcdTZhMDJcdTZhMDVcdTY5ZWRcdTZhMTFcdTZiNTBcdTZiNGVcdTZiYTRcdTZiYzVcdTZiYzZcdTZmM2ZcdTZmN2NcdTZmODRcdTZmNTFcdTZmNjZcdTZmNTRcdTZmODZcdTZmNmRcdTZmNWJcdTZmNzhcdTZmNmVc''@;'; put 'put ''dTZmOGVcdTZmN2FcdTZmNzBcdTZmNjRcdTZmOTdcdTZmNThcdTZlZDVcdTZmNmZcdTZmNjBcdTZmNWZcdTcxOWZcdTcxYWNcdTcxYjFcdTcxYThcdTcyNTZcdTcyOWJcdTczNGVcdTczNTdcdTc0NjlcdTc0OGJcdTc0ODNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODhdLmxlbmd0aDsr''@;'; put 'put ''K0UpNjU1MzMhPT1CWzE4OF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTg4XVtFXV09NDgxMjgrRSxMWzQ4MTI4K0VdPUJbMTg4XVtFXSk7Zm9yKEJbMTg5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NDdlXHU3NDgwXHU3NTdm''@;'; put 'put ''XHU3NjIwXHU3NjI5XHU3NjFmXHU3NjI0XHU3NjI2XHU3NjIxXHU3NjIyXHU3NjlhXHU3NmJhXHU3NmU0XHU3NzhlXHU3Nzg3XHU3NzhjXHU3NzkxXHU3NzhiXHU3OGNiXHU3OGM1XHU3OGJhXHU3OGNhXHU3OGJlXHU3OGQ1XHU3OGJjXHU3OGQwXHU3YTNmXHU3YTNjXHU3YTQwXHU3YTNkXHU3''@;'; put 'put ''YTM3XHU3YTNiXHU3YWFmXHU3YWFlXHU3YmFkXHU3YmIxXHU3YmM0XHU3YmI0XHU3YmM2XHU3YmM3XHU3YmMxXHU3YmEwXHU3YmNjXHU3Y2NhXHU3ZGUwXHU3ZGY0XHU3ZGVmXHU3ZGZiXHU3ZGQ4XHU3ZGVjXHU3ZGRkXHU3ZGU4XHU3ZGUzXHU3ZGRhXHU3ZGRlXHU3ZGU5XHU3ZDllXHU3ZGQ5''@;'; put 'put ''XHU3ZGYyXHU3ZGY5XHU3Zjc1XHU3Zjc3XHU3ZmFmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZmU5XHU4MDI2XHU4MTliXHU4MTljXHU4MTlkXHU4MWEwXHU4MTlhXHU4MTk4XHU4NTE3XHU4NTNkXHU4NTFhXHU4NGVlXHU4NTJjXHU4NTJkXHU4NTEzXHU4NTEx''@;'; put 'put ''XHU4NTIzXHU4NTIxXHU4NTE0XHU4NGVjXHU4NTI1XHU4NGZmXHU4NTA2XHU4NzgyXHU4Nzc0XHU4Nzc2XHU4NzYwXHU4NzY2XHU4Nzc4XHU4NzY4XHU4NzU5XHU4NzU3XHU4NzRjXHU4NzUzXHU4ODViXHU4ODVkXHU4OTEwXHU4OTA3XHU4OTEyXHU4OTEzXHU4OTE1XHU4OTBhXHU4YWJjXHU4''@;'; put 'put ''YWQyXHU4YWM3XHU4YWM0XHU4YTk1XHU4YWNiXHU4YWY4XHU4YWIyXHU4YWM5XHU4YWMyXHU4YWJmXHU4YWIwXHU4YWQ2XHU4YWNkXHU4YWI2XHU4YWI5XHU4YWRiXHU4YzRjXHU4YzRlXHU4YzZjXHU4Y2UwXHU4Y2RlXHU4Y2U2XHU4Y2U0XHU4Y2VjXHU4Y2VkXHU4Y2UyXHU4Y2UzXHU4Y2Rj''@;'; put 'put ''XHU4Y2VhXHU4Y2UxXHU4ZDZkXHU4ZDlmXHU4ZGEzXHU4ZTJiXHU4ZTEwXHU4ZTFkXHU4ZTIyXHU4ZTBmXHU4ZTI5XHU4ZTFmXHU4ZTIxXHU4ZTFlXHU4ZWJhXHU4ZjFkXHU4ZjFiXHU4ZjFmXHU4ZjI5XHU4ZjI2XHU4ZjJhXHU4ZjFjXHU4ZjFlXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJb''@;'; put 'put ''MTg5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODldW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE4OV1bRV1dPTQ4Mzg0K0UsTFs0ODM4NCtFXT1CWzE4OV1bRV0pO2ZvcihCWzE5MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGYy''@;'; put 'put ''NVx1OTA2OVx1OTA2ZVx1OTA2OFx1OTA2ZFx1OTA3N1x1OTEzMFx1OTEyZFx1OTEyN1x1OTEzMVx1OTE4N1x1OTE4OVx1OTE4Ylx1OTE4M1x1OTJjNVx1OTJiYlx1OTJiN1x1OTJlYVx1OTJhY1x1OTJlNFx1OTJjMVx1OTJiM1x1OTJiY1x1OTJkMlx1OTJjN1x1OTJmMFx1OTJiMlx1OTVhZFx1''@;'; put 'put ''OTViMVx1OTcwNFx1OTcwNlx1OTcwN1x1OTcwOVx1OTc2MFx1OTc4ZFx1OTc4Ylx1OTc4Zlx1OTgyMVx1OTgyYlx1OTgxY1x1OThiM1x1OTkwYVx1OTkxM1x1OTkxMlx1OTkxOFx1OTlkZFx1OTlkMFx1OTlkZlx1OTlkYlx1OTlkMVx1OTlkNVx1OTlkMlx1OTlkOVx1OWFiN1x1OWFlZVx1OWFl''@;'; put 'put ''Zlx1OWIyN1x1OWI0NVx1OWI0NFx1OWI3N1x1OWI2Zlx1OWQwNlx1OWQwOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWQwM1x1OWVhOVx1OWViZVx1OWVjZVx1NThhOFx1OWY1Mlx1NTExMlx1NTExOFx1NTExNFx1NTExMFx1NTExNVx1NTE4MFx1NTFhYVx1NTFk''@;'; put 'put ''ZFx1NTI5MVx1NTI5M1x1NTJmM1x1NTY1OVx1NTY2Ylx1NTY3OVx1NTY2OVx1NTY2NFx1NTY3OFx1NTY2YVx1NTY2OFx1NTY2NVx1NTY3MVx1NTY2Zlx1NTY2Y1x1NTY2Mlx1NTY3Nlx1NThjMVx1NThiZVx1NThjN1x1NThjNVx1NTk2ZVx1NWIxZFx1NWIzNFx1NWI3OFx1NWJmMFx1NWMwZVx1''@;'; put 'put ''NWY0YVx1NjFiMlx1NjE5MVx1NjFhOVx1NjE4YVx1NjFjZFx1NjFiNlx1NjFiZVx1NjFjYVx1NjFjOFx1NjIzMFx1NjRjNVx1NjRjMVx1NjRjYlx1NjRiYlx1NjRiY1x1NjRkYVx1NjRjNFx1NjRjN1x1NjRjMlx1NjRjZFx1NjRiZlx1NjRkMlx1NjRkNFx1NjRiZVx1NjU3NFx1NjZjNlx1NjZj''@;'; put 'put ''OVx1NjZiOVx1NjZjNFx1NjZjN1x1NjZiOFx1NmEzZFx1NmEzOFx1NmEzYVx1NmE1OVx1NmE2Ylx1NmE1OFx1NmEzOVx1NmE0NFx1NmE2Mlx1NmE2MVx1NmE0Ylx1NmE0N1x1NmEzNVx1NmE1Zlx1NmE0OFx1NmI1OVx1NmI3N1x1NmMwNVx1NmZjMlx1NmZiMVx1NmZhMVx1ZmZmZCIuc3BsaXQo''@;'; put 'put ''IiIpLEU9MDtFIT1CWzE5MF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTkwXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxOTBdW0VdXT00ODY0MCtFLExbNDg2NDArRV09QlsxOTBdW0VdKTtmb3IoQlsxOTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdTZmYzNcdTZmYTRcdTZmYzFcdTZmYTdcdTZmYjNcdTZmYzBcdTZmYjlcdTZmYjZcdTZmYTZcdTZmYTBcdTZmYjRcdTcxYmVcdTcxYzlcdTcxZDBcdTcxZDJcdTcxYzhcdTcxZDVcdTcxYjlcdTcxY2VcdTcxZDlcdTcxZGNcdTcxYzNcdTcxYzRcdTczNjhcdTc0OWNcdTc0YTNc''@;'; put 'put ''dTc0OThcdTc0OWZcdTc0OWVcdTc0ZTJcdTc1MGNcdTc1MGRcdTc2MzRcdTc2MzhcdTc2M2FcdTc2ZTdcdTc2ZTVcdTc3YTBcdTc3OWVcdTc3OWZcdTc3YTVcdTc4ZThcdTc4ZGFcdTc4ZWNcdTc4ZTdcdTc5YTZcdTdhNGRcdTdhNGVcdTdhNDZcdTdhNGNcdTdhNGJcdTdhYmFcdTdiZDlcdTdj''@;'; put 'put ''MTFcdTdiYzlcdTdiZTRcdTdiZGJcdTdiZTFcdTdiZTlcdTdiZTZcdTdjZDVcdTdjZDZcdTdlMGFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdlMTFcdTdlMDhcdTdlMWJcdTdlMjNcdTdlMWVcdTdlMWRcdTdlMDlcdTdlMTBcdTdmNzlcdTdmYjJcdTdmZjBcdTdm''@;'; put 'put ''ZjFcdTdmZWVcdTgwMjhcdTgxYjNcdTgxYTlcdTgxYThcdTgxZmJcdTgyMDhcdTgyNThcdTgyNTlcdTg1NGFcdTg1NTlcdTg1NDhcdTg1NjhcdTg1NjlcdTg1NDNcdTg1NDlcdTg1NmRcdTg1NmFcdTg1NWVcdTg3ODNcdTg3OWZcdTg3OWVcdTg3YTJcdTg3OGRcdTg4NjFcdTg5MmFcdTg5MzJc''@;'; put 'put ''dTg5MjVcdTg5MmJcdTg5MjFcdTg5YWFcdTg5YTZcdThhZTZcdThhZmFcdThhZWJcdThhZjFcdThiMDBcdThhZGNcdThhZTdcdThhZWVcdThhZmVcdThiMDFcdThiMDJcdThhZjdcdThhZWRcdThhZjNcdThhZjZcdThhZmNcdThjNmJcdThjNmRcdThjOTNcdThjZjRcdThlNDRcdThlMzFcdThl''@;'; put 'put ''MzRcdThlNDJcdThlMzlcdThlMzVcdThmM2JcdThmMmZcdThmMzhcdThmMzNcdThmYThcdThmYTZcdTkwNzVcdTkwNzRcdTkwNzhcdTkwNzJcdTkwN2NcdTkwN2FcdTkxMzRcdTkxOTJcdTkzMjBcdTkzMzZcdTkyZjhcdTkzMzNcdTkzMmZcdTkzMjJcdTkyZmNcdTkzMmJcdTkzMDRcdTkzMWFc''@;'; put 'put ''dWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5MV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTkxXVtFXV09NDg4OTYrRSxMWzQ4ODk2K0VdPUJbMTkxXVtFXSk7Zm9yKEJbMTkyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MzEwXHU5MzI2XHU5MzIxXHU5MzE1XHU5MzJlXHU5MzE5XHU5NWJiXHU5NmE3XHU5NmE4XHU5NmFhXHU5NmQ1XHU5NzBlXHU5NzExXHU5NzE2XHU5NzBkXHU5NzEzXHU5NzBmXHU5NzViXHU5NzVjXHU5NzY2XHU5Nzk4XHU5ODMwXHU5ODM4XHU5ODNi''@;'; put 'put ''XHU5ODM3XHU5ODJkXHU5ODM5XHU5ODI0XHU5OTEwXHU5OTI4XHU5OTFlXHU5OTFiXHU5OTIxXHU5OTFhXHU5OWVkXHU5OWUyXHU5OWYxXHU5YWI4XHU5YWJjXHU5YWZiXHU5YWVkXHU5YjI4XHU5YjkxXHU5ZDE1XHU5ZDIzXHU5ZDI2XHU5ZDI4XHU5ZDEyXHU5ZDFiXHU5ZWQ4XHU5ZWQ0XHU5''@;'; put 'put ''ZjhkXHU5ZjljXHU1MTJhXHU1MTFmXHU1MTIxXHU1MTMyXHU1MmY1XHU1NjhlXHU1NjgwXHU1NjkwXHU1Njg1XHU1Njg3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NjhmXHU1OGQ1XHU1OGQzXHU1OGQxXHU1OGNlXHU1YjMwXHU1YjJhXHU1YjI0XHU1YjdhXHU1''@;'; put 'put ''YzM3XHU1YzY4XHU1ZGJjXHU1ZGJhXHU1ZGJkXHU1ZGI4XHU1ZTZiXHU1ZjRjXHU1ZmJkXHU2MWM5XHU2MWMyXHU2MWM3XHU2MWU2XHU2MWNiXHU2MjMyXHU2MjM0XHU2NGNlXHU2NGNhXHU2NGQ4XHU2NGUwXHU2NGYwXHU2NGU2XHU2NGVjXHU2NGYxXHU2NGUyXHU2NGVkXHU2NTgyXHU2NTgz''@;'; put 'put ''XHU2NmQ5XHU2NmQ2XHU2YTgwXHU2YTk0XHU2YTg0XHU2YWEyXHU2YTljXHU2YWRiXHU2YWEzXHU2YTdlXHU2YTk3XHU2YTkwXHU2YWEwXHU2YjVjXHU2YmFlXHU2YmRhXHU2YzA4XHU2ZmQ4XHU2ZmYxXHU2ZmRmXHU2ZmUwXHU2ZmRiXHU2ZmU0XHU2ZmViXHU2ZmVmXHU2ZjgwXHU2ZmVjXHU2''@;'; put 'put ''ZmUxXHU2ZmU5XHU2ZmQ1XHU2ZmVlXHU2ZmYwXHU3MWU3XHU3MWRmXHU3MWVlXHU3MWU2XHU3MWU1XHU3MWVkXHU3MWVjXHU3MWY0XHU3MWUwXHU3MjM1XHU3MjQ2XHU3MzcwXHU3MzcyXHU3NGE5XHU3NGIwXHU3NGE2XHU3NGE4XHU3NjQ2XHU3NjQyXHU3NjRjXHU3NmVhXHU3N2IzXHU3N2Fh''@;'; put 'put ''XHU3N2IwXHU3N2FjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTkyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTJdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE5Ml1bRV1dPTQ5MTUyK0UsTFs0OTE1MitFXT1CWzE5Ml1bRV0pO2ZvcihCWzE5M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzdhN1x1NzdhZFx1NzdlZlx1NzhmN1x1NzhmYVx1NzhmNFx1NzhlZlx1NzkwMVx1NzlhN1x1NzlhYVx1N2E1N1x1N2FiZlx1N2MwN1x1N2MwZFx1N2JmZVx1N2JmN1x1N2MwY1x1N2JlMFx1N2NlMFx1N2NkY1x1N2NkZVx1N2Nl''@;'; put 'put ''Mlx1N2NkZlx1N2NkOVx1N2NkZFx1N2UyZVx1N2UzZVx1N2U0Nlx1N2UzN1x1N2UzMlx1N2U0M1x1N2UyYlx1N2UzZFx1N2UzMVx1N2U0NVx1N2U0MVx1N2UzNFx1N2UzOVx1N2U0OFx1N2UzNVx1N2UzZlx1N2UyZlx1N2Y0NFx1N2ZmM1x1N2ZmY1x1ODA3MVx1ODA3Mlx1ODA3MFx1ODA2Zlx1''@;'; put 'put ''ODA3M1x1ODFjNlx1ODFjM1x1ODFiYVx1ODFjMlx1ODFjMFx1ODFiZlx1ODFiZFx1ODFjOVx1ODFiZVx1ODFlOFx1ODIwOVx1ODI3MVx1ODVhYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODU4NFx1ODU3ZVx1ODU5Y1x1ODU5MVx1ODU5NFx1ODVhZlx1ODU5Ylx1''@;'; put 'put ''ODU4N1x1ODVhOFx1ODU4YVx1ODY2N1x1ODdjMFx1ODdkMVx1ODdiM1x1ODdkMlx1ODdjNlx1ODdhYlx1ODdiYlx1ODdiYVx1ODdjOFx1ODdjYlx1ODkzYlx1ODkzNlx1ODk0NFx1ODkzOFx1ODkzZFx1ODlhY1x1OGIwZVx1OGIxN1x1OGIxOVx1OGIxYlx1OGIwYVx1OGIyMFx1OGIxZFx1OGIw''@;'; put 'put ''NFx1OGIxMFx1OGM0MVx1OGMzZlx1OGM3M1x1OGNmYVx1OGNmZFx1OGNmY1x1OGNmOFx1OGNmYlx1OGRhOFx1OGU0OVx1OGU0Ylx1OGU0OFx1OGU0YVx1OGY0NFx1OGYzZVx1OGY0Mlx1OGY0NVx1OGYzZlx1OTA3Zlx1OTA3ZFx1OTA4NFx1OTA4MVx1OTA4Mlx1OTA4MFx1OTEzOVx1OTFhM1x1''@;'; put 'put ''OTE5ZVx1OTE5Y1x1OTM0ZFx1OTM4Mlx1OTMyOFx1OTM3NVx1OTM0YVx1OTM2NVx1OTM0Ylx1OTMxOFx1OTM3ZVx1OTM2Y1x1OTM1Ylx1OTM3MFx1OTM1YVx1OTM1NFx1OTVjYVx1OTVjYlx1OTVjY1x1OTVjOFx1OTVjNlx1OTZiMVx1OTZiOFx1OTZkNlx1OTcxY1x1OTcxZVx1OTdhMFx1OTdk''@;'; put 'put ''M1x1OTg0Nlx1OThiNlx1OTkzNVx1OWEwMVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5M10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTkzXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxOTNdW0VdXT00OTQwOCtFLExbNDk0MDgrRV09QlsxOTNdW0VdKTtmb3IoQlsxOTRdPSJcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk5ZmZcdTliYWVcdTliYWJcdTliYWFcdTliYWRcdTlkM2JcdTlkM2ZcdTllOGJcdTllY2ZcdTllZGVcdTllZGNcdTllZGRcdTllZGJcdTlmM2VcdTlmNGJcdTUzZTJcdTU2OTVcdTU2YWVcdTU4ZDlcdTU4''@;'; put 'put ''ZDhcdTViMzhcdTVmNWRcdTYxZTNcdTYyMzNcdTY0ZjRcdTY0ZjJcdTY0ZmVcdTY1MDZcdTY0ZmFcdTY0ZmJcdTY0ZjdcdTY1YjdcdTY2ZGNcdTY3MjZcdTZhYjNcdTZhYWNcdTZhYzNcdTZhYmJcdTZhYjhcdTZhYzJcdTZhYWVcdTZhYWZcdTZiNWZcdTZiNzhcdTZiYWZcdTcwMDlcdTcwMGJc''@;'; put 'put ''dTZmZmVcdTcwMDZcdTZmZmFcdTcwMTFcdTcwMGZcdTcxZmJcdTcxZmNcdTcxZmVcdTcxZjhcdTczNzdcdTczNzVcdTc0YTdcdTc0YmZcdTc1MTVcdTc2NTZcdTc2NThcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc2NTJcdTc3YmRcdTc3YmZcdTc3YmJcdTc3YmNc''@;'; put 'put ''dTc5MGVcdTc5YWVcdTdhNjFcdTdhNjJcdTdhNjBcdTdhYzRcdTdhYzVcdTdjMmJcdTdjMjdcdTdjMmFcdTdjMWVcdTdjMjNcdTdjMjFcdTdjZTdcdTdlNTRcdTdlNTVcdTdlNWVcdTdlNWFcdTdlNjFcdTdlNTJcdTdlNTlcdTdmNDhcdTdmZjlcdTdmZmJcdTgwNzdcdTgwNzZcdTgxY2RcdTgx''@;'; put 'put ''Y2ZcdTgyMGFcdTg1Y2ZcdTg1YTlcdTg1Y2RcdTg1ZDBcdTg1YzlcdTg1YjBcdTg1YmFcdTg1YjlcdTg1YTZcdTg3ZWZcdTg3ZWNcdTg3ZjJcdTg3ZTBcdTg5ODZcdTg5YjJcdTg5ZjRcdThiMjhcdThiMzlcdThiMmNcdThiMmJcdThjNTBcdThkMDVcdThlNTlcdThlNjNcdThlNjZcdThlNjRc''@;'; put 'put ''dThlNWZcdThlNTVcdThlYzBcdThmNDlcdThmNGRcdTkwODdcdTkwODNcdTkwODhcdTkxYWJcdTkxYWNcdTkxZDBcdTkzOTRcdTkzOGFcdTkzOTZcdTkzYTJcdTkzYjNcdTkzYWVcdTkzYWNcdTkzYjBcdTkzOThcdTkzOWFcdTkzOTdcdTk1ZDRcdTk1ZDZcdTk1ZDBcdTk1ZDVcdTk2ZTJcdTk2''@;'; put 'put ''ZGNcdTk2ZDlcdTk2ZGJcdTk2ZGVcdTk3MjRcdTk3YTNcdTk3YTZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5NF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTk0XVtFXV09NDk2NjQrRSxMWzQ5NjY0K0VdPUJbMTk0XVtFXSk7Zm9yKEJb''@;'; put 'put ''MTk1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5N2FkXHU5N2Y5XHU5ODRkXHU5ODRmXHU5ODRjXHU5ODRlXHU5ODUzXHU5OGJhXHU5OTNlXHU5OTNmXHU5OTNkXHU5OTJlXHU5OWE1XHU5YTBlXHU5YWMxXHU5YjAzXHU5YjA2XHU5''@;'; put 'put ''YjRmXHU5YjRlXHU5YjRkXHU5YmNhXHU5YmM5XHU5YmZkXHU5YmM4XHU5YmMwXHU5ZDUxXHU5ZDVkXHU5ZDYwXHU5ZWUwXHU5ZjE1XHU5ZjJjXHU1MTMzXHU1NmE1XHU1OGRlXHU1OGRmXHU1OGUyXHU1YmY1XHU5ZjkwXHU1ZWVjXHU2MWYyXHU2MWY3XHU2MWY2XHU2MWY1XHU2NTAwXHU2NTBm''@;'; put 'put ''XHU2NmUwXHU2NmRkXHU2YWU1XHU2YWRkXHU2YWRhXHU2YWQzXHU3MDFiXHU3MDFmXHU3MDI4XHU3MDFhXHU3MDFkXHU3MDE1XHU3MDE4XHU3MjA2XHU3MjBkXHU3MjU4XHU3MmEyXHU3Mzc4XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MzdhXHU3NGJkXHU3NGNh''@;'; put 'put ''XHU3NGUzXHU3NTg3XHU3NTg2XHU3NjVmXHU3NjYxXHU3N2M3XHU3OTE5XHU3OWIxXHU3YTZiXHU3YTY5XHU3YzNlXHU3YzNmXHU3YzM4XHU3YzNkXHU3YzM3XHU3YzQwXHU3ZTZiXHU3ZTZkXHU3ZTc5XHU3ZTY5XHU3ZTZhXHU3Zjg1XHU3ZTczXHU3ZmI2XHU3ZmI5XHU3ZmI4XHU4MWQ4XHU4''@;'; put 'put ''NWU5XHU4NWRkXHU4NWVhXHU4NWQ1XHU4NWU0XHU4NWU1XHU4NWY3XHU4N2ZiXHU4ODA1XHU4ODBkXHU4N2Y5XHU4N2ZlXHU4OTYwXHU4OTVmXHU4OTU2XHU4OTVlXHU4YjQxXHU4YjVjXHU4YjU4XHU4YjQ5XHU4YjVhXHU4YjRlXHU4YjRmXHU4YjQ2XHU4YjU5XHU4ZDA4XHU4ZDBhXHU4ZTdj''@;'; put 'put ''XHU4ZTcyXHU4ZTg3XHU4ZTc2XHU4ZTZjXHU4ZTdhXHU4ZTc0XHU4ZjU0XHU4ZjRlXHU4ZmFkXHU5MDhhXHU5MDhiXHU5MWIxXHU5MWFlXHU5M2UxXHU5M2QxXHU5M2RmXHU5M2MzXHU5M2M4XHU5M2RjXHU5M2RkXHU5M2Q2XHU5M2UyXHU5M2NkXHU5M2Q4XHU5M2U0XHU5M2Q3XHU5M2U4XHU5''@;'; put 'put ''NWRjXHU5NmI0XHU5NmUzXHU5NzJhXHU5NzI3XHU5NzYxXHU5N2RjXHU5N2ZiXHU5ODVlXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTk1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTVdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE5NV1bRV1dPTQ5OTIwK0UsTFs0OTkyMCtFXT1CWzE5''@;'; put 'put ''NV1bRV0pO2ZvcihCWzE5Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTg1OFx1OTg1Ylx1OThiY1x1OTk0NVx1OTk0OVx1OWExNlx1OWExOVx1OWIwZFx1OWJlOFx1OWJlN1x1OWJkNlx1OWJkYlx1OWQ4OVx1OWQ2MVx1OWQ3Mlx1''@;'; put 'put ''OWQ2YVx1OWQ2Y1x1OWU5Mlx1OWU5N1x1OWU5M1x1OWViNFx1NTJmOFx1NTZhOFx1NTZiN1x1NTZiNlx1NTZiNFx1NTZiY1x1NThlNFx1NWI0MFx1NWI0M1x1NWI3ZFx1NWJmNlx1NWRjOVx1NjFmOFx1NjFmYVx1NjUxOFx1NjUxNFx1NjUxOVx1NjZlNlx1NjcyN1x1NmFlY1x1NzAzZVx1NzAz''@;'; put 'put ''MFx1NzAzMlx1NzIxMFx1NzM3Ylx1NzRjZlx1NzY2Mlx1NzY2NVx1NzkyNlx1NzkyYVx1NzkyY1x1NzkyYlx1N2FjN1x1N2FmNlx1N2M0Y1x1N2M0M1x1N2M0ZFx1N2NlZlx1N2NmMFx1OGZhZVx1N2U3ZFx1N2U3Y1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2U4''@;'; put 'put ''Mlx1N2Y0Y1x1ODAwMFx1ODFkYVx1ODI2Nlx1ODVmYlx1ODVmOVx1ODYxMVx1ODVmYVx1ODYwNlx1ODYwYlx1ODYwN1x1ODYwYVx1ODgxNFx1ODgxNVx1ODk2NFx1ODliYVx1ODlmOFx1OGI3MFx1OGI2Y1x1OGI2Nlx1OGI2Zlx1OGI1Zlx1OGI2Ylx1OGQwZlx1OGQwZFx1OGU4OVx1OGU4MVx1''@;'; put 'put ''OGU4NVx1OGU4Mlx1OTFiNFx1OTFjYlx1OTQxOFx1OTQwM1x1OTNmZFx1OTVlMVx1OTczMFx1OThjNFx1OTk1Mlx1OTk1MVx1OTlhOFx1OWEyYlx1OWEzMFx1OWEzN1x1OWEzNVx1OWMxM1x1OWMwZFx1OWU3OVx1OWViNVx1OWVlOFx1OWYyZlx1OWY1Zlx1OWY2M1x1OWY2MVx1NTEzN1x1NTEz''@;'; put 'put ''OFx1NTZjMVx1NTZjMFx1NTZjMlx1NTkxNFx1NWM2Y1x1NWRjZFx1NjFmY1x1NjFmZVx1NjUxZFx1NjUxY1x1NjU5NVx1NjZlOVx1NmFmYlx1NmIwNFx1NmFmYVx1NmJiMlx1NzA0Y1x1NzIxYlx1NzJhN1x1NzRkNlx1NzRkNFx1NzY2OVx1NzdkM1x1N2M1MFx1N2U4Zlx1N2U4Y1x1N2ZiY1x1''@;'; put 'put ''ODYxN1x1ODYyZFx1ODYxYVx1ODgyM1x1ODgyMlx1ODgyMVx1ODgxZlx1ODk2YVx1ODk2Y1x1ODliZFx1OGI3NFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTk2XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxOTZdW0VdXT01MDE3NitFLExb''@;'; put 'put ''NTAxNzYrRV09QlsxOTZdW0VdKTtmb3IoQlsxOTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThiNzdcdThiN2RcdThkMTNcdThlOGFcdThlOGRcdThlOGJcdThmNWZcdThmYWZcdTkxYmFcdTk0MmVcdTk0MzNcdTk0MzVcdTk0M2Fc''@;'; put 'put ''dTk0MzhcdTk0MzJcdTk0MmJcdTk1ZTJcdTk3MzhcdTk3MzlcdTk3MzJcdTk3ZmZcdTk4NjdcdTk4NjVcdTk5NTdcdTlhNDVcdTlhNDNcdTlhNDBcdTlhM2VcdTlhY2ZcdTliNTRcdTliNTFcdTljMmRcdTljMjVcdTlkYWZcdTlkYjRcdTlkYzJcdTlkYjhcdTllOWRcdTllZWZcdTlmMTlcdTlm''@;'; put 'put ''NWNcdTlmNjZcdTlmNjdcdTUxM2NcdTUxM2JcdTU2YzhcdTU2Y2FcdTU2YzlcdTViN2ZcdTVkZDRcdTVkZDJcdTVmNGVcdTYxZmZcdTY1MjRcdTZiMGFcdTZiNjFcdTcwNTFcdTcwNThcdTczODBcdTc0ZTRcdTc1OGFcdTc2NmVcdTc2NmNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdTc5YjNcdTdjNjBcdTdjNWZcdTgwN2VcdTgwN2RcdTgxZGZcdTg5NzJcdTg5NmZcdTg5ZmNcdThiODBcdThkMTZcdThkMTdcdThlOTFcdThlOTNcdThmNjFcdTkxNDhcdTk0NDRcdTk0NTFcdTk0NTJcdTk3M2RcdTk3M2VcdTk3YzNcdTk3YzFcdTk4NmJcdTk5NTVcdTlhNTVc''@;'; put 'put ''dTlhNGRcdTlhZDJcdTliMWFcdTljNDlcdTljMzFcdTljM2VcdTljM2JcdTlkZDNcdTlkZDdcdTlmMzRcdTlmNmNcdTlmNmFcdTlmOTRcdTU2Y2NcdTVkZDZcdTYyMDBcdTY1MjNcdTY1MmJcdTY1MmFcdTY2ZWNcdTZiMTBcdTc0ZGFcdTdhY2FcdTdjNjRcdTdjNjNcdTdjNjVcdTdlOTNcdTdl''@;'; put 'put ''OTZcdTdlOTRcdTgxZTJcdTg2MzhcdTg2M2ZcdTg4MzFcdThiOGFcdTkwOTBcdTkwOGZcdTk0NjNcdTk0NjBcdTk0NjRcdTk3NjhcdTk4NmZcdTk5NWNcdTlhNWFcdTlhNWJcdTlhNTdcdTlhZDNcdTlhZDRcdTlhZDFcdTljNTRcdTljNTdcdTljNTZcdTlkZTVcdTllOWZcdTllZjRcdTU2ZDFc''@;'; put 'put ''dTU4ZTlcdTY1MmNcdTcwNWVcdTc2NzFcdTc2NzJcdTc3ZDdcdTdmNTBcdTdmODhcdTg4MzZcdTg4MzlcdTg4NjJcdThiOTNcdThiOTJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5N11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTk3XVtF''@;'; put 'put ''XV09NTA0MzIrRSxMWzUwNDMyK0VdPUJbMTk3XVtFXSk7Zm9yKEJbMTk4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4Yjk2XHU4Mjc3XHU4ZDFiXHU5MWMwXHU5NDZhXHU5NzQyXHU5NzQ4XHU5NzQ0XHU5N2M2XHU5ODcwXHU5YTVm''@;'; put 'put ''XHU5YjIyXHU5YjU4XHU5YzVmXHU5ZGY5XHU5ZGZhXHU5ZTdjXHU5ZTdkXHU5ZjA3XHU5Zjc3XHU5ZjcyXHU1ZWYzXHU2YjE2XHU3MDYzXHU3YzZjXHU3YzZlXHU4ODNiXHU4OWMwXHU4ZWExXHU5MWMxXHU5NDcyXHU5NDcwXHU5ODcxXHU5OTVlXHU5YWQ2XHU5YjIzXHU5ZWNjXHU3MDY0XHU3''@;'; put 'put ''N2RhXHU4YjlhXHU5NDc3XHU5N2M5XHU5YTYyXHU5YTY1XHU3ZTljXHU4YjljXHU4ZWFhXHU5MWM1XHU5NDdkXHU5NDdlXHU5NDdjXHU5Yzc3XHU5Yzc4XHU5ZWY3XHU4YzU0XHU5NDdmXHU5ZTFhXHU3MjI4XHU5YTZhXHU5YjMxXHU5ZTFiXHU5ZTFlXHU3YzcyXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTk4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOThdW0VdLmNoYXJDb2RlQXQoMCkm''@;'; put 'put ''JihtZVtCWzE5OF1bRV1dPTUwNjg4K0UsTFs1MDY4OCtFXT1CWzE5OF1bRV0pO2ZvcihCWzIwMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGU0Mlx1NGU1Y1x1NTFmNVx1NTMxYVx1NTM4Mlx1NGUwN1x1NGUwY1x1NGU0N1x1NGU4''@;'; put 'put ''ZFx1NTZkN1x1ZmEwY1x1NWM2ZVx1NWY3M1x1NGUwZlx1NTE4N1x1NGUwZVx1NGUyZVx1NGU5M1x1NGVjMlx1NGVjOVx1NGVjOFx1NTE5OFx1NTJmY1x1NTM2Y1x1NTNiOVx1NTcyMFx1NTkwM1x1NTkyY1x1NWMxMFx1NWRmZlx1NjVlMVx1NmJiM1x1NmJjY1x1NmMxNFx1NzIzZlx1NGUzMVx1''@;'; put 'put ''NGUzY1x1NGVlOFx1NGVkY1x1NGVlOVx1NGVlMVx1NGVkZFx1NGVkYVx1NTIwY1x1NTMxY1x1NTM0Y1x1NTcyMlx1NTcyM1x1NTkxN1x1NTkyZlx1NWI4MVx1NWI4NFx1NWMxMlx1NWMzYlx1NWM3NFx1NWM3M1x1NWUwNFx1NWU4MFx1NWU4Mlx1NWZjOVx1NjIwOVx1NjI1MFx1NmMxNVx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmMzNlx1NmM0M1x1NmMzZlx1NmMzYlx1NzJhZVx1NzJiMFx1NzM4YVx1NzliOFx1ODA4YVx1OTYxZVx1NGYwZVx1NGYxOFx1NGYyY1x1NGVmNVx1NGYxNFx1NGVmMVx1NGYwMFx1NGVmN1x1NGYwOFx1NGYxZFx1NGYwMlx1NGYw''@;'; put 'put ''NVx1NGYyMlx1NGYxM1x1NGYwNFx1NGVmNFx1NGYxMlx1NTFiMVx1NTIxM1x1NTIwOVx1NTIxMFx1NTJhNlx1NTMyMlx1NTMxZlx1NTM0ZFx1NTM4YVx1NTQwN1x1NTZlMVx1NTZkZlx1NTcyZVx1NTcyYVx1NTczNFx1NTkzY1x1NTk4MFx1NTk3Y1x1NTk4NVx1NTk3Ylx1NTk3ZVx1NTk3N1x1''@;'; put 'put ''NTk3Zlx1NWI1Nlx1NWMxNVx1NWMyNVx1NWM3Y1x1NWM3YVx1NWM3Ylx1NWM3ZVx1NWRkZlx1NWU3NVx1NWU4NFx1NWYwMlx1NWYxYVx1NWY3NFx1NWZkNVx1NWZkNFx1NWZjZlx1NjI1Y1x1NjI1ZVx1NjI2NFx1NjI2MVx1NjI2Nlx1NjI2Mlx1NjI1OVx1NjI2MFx1NjI1YVx1NjI2NVx1NjVl''@;'; put 'put ''Zlx1NjVlZVx1NjczZVx1NjczOVx1NjczOFx1NjczYlx1NjczYVx1NjczZlx1NjczY1x1NjczM1x1NmMxOFx1NmM0Nlx1NmM1Mlx1NmM1Y1x1NmM0Zlx1NmM0YVx1NmM1NFx1NmM0Ylx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwMV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjAxXVtFXS5j''@;'; put 'put ''aGFyQ29kZUF0KDApJiYobWVbQlsyMDFdW0VdXT01MTQ1NitFLExbNTE0NTYrRV09QlsyMDFdW0VdKTtmb3IoQlsyMDJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZjNGNcdTcwNzFcdTcyNWVcdTcyYjRcdTcyYjVcdTczOGVcdTc1''@;'; put 'put ''MmFcdTc2N2ZcdTdhNzVcdTdmNTFcdTgyNzhcdTgyN2NcdTgyODBcdTgyN2RcdTgyN2ZcdTg2NGRcdTg5N2VcdTkwOTlcdTkwOTdcdTkwOThcdTkwOWJcdTkwOTRcdTk2MjJcdTk2MjRcdTk2MjBcdTk2MjNcdTRmNTZcdTRmM2JcdTRmNjJcdTRmNDlcdTRmNTNcdTRmNjRcdTRmM2VcdTRmNjdc''@;'; put 'put ''dTRmNTJcdTRmNWZcdTRmNDFcdTRmNThcdTRmMmRcdTRmMzNcdTRmM2ZcdTRmNjFcdTUxOGZcdTUxYjlcdTUyMWNcdTUyMWVcdTUyMjFcdTUyYWRcdTUyYWVcdTUzMDlcdTUzNjNcdTUzNzJcdTUzOGVcdTUzOGZcdTU0MzBcdTU0MzdcdTU0MmFcdTU0NTRcdTU0NDVcdTU0MTlcdTU0MWNcdTU0''@;'; put 'put ''MjVcdTU0MThcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU0M2RcdTU0NGZcdTU0NDFcdTU0MjhcdTU0MjRcdTU0NDdcdTU2ZWVcdTU2ZTdcdTU2ZTVcdTU3NDFcdTU3NDVcdTU3NGNcdTU3NDlcdTU3NGJcdTU3NTJcdTU5MDZcdTU5NDBcdTU5YTZcdTU5OThcdTU5''@;'; put 'put ''YTBcdTU5OTdcdTU5OGVcdTU5YTJcdTU5OTBcdTU5OGZcdTU5YTdcdTU5YTFcdTViOGVcdTViOTJcdTVjMjhcdTVjMmFcdTVjOGRcdTVjOGZcdTVjODhcdTVjOGJcdTVjODlcdTVjOTJcdTVjOGFcdTVjODZcdTVjOTNcdTVjOTVcdTVkZTBcdTVlMGFcdTVlMGVcdTVlOGJcdTVlODlcdTVlOGNc''@;'; put 'put ''dTVlODhcdTVlOGRcdTVmMDVcdTVmMWRcdTVmNzhcdTVmNzZcdTVmZDJcdTVmZDFcdTVmZDBcdTVmZWRcdTVmZThcdTVmZWVcdTVmZjNcdTVmZTFcdTVmZTRcdTVmZTNcdTVmZmFcdTVmZWZcdTVmZjdcdTVmZmJcdTYwMDBcdTVmZjRcdTYyM2FcdTYyODNcdTYyOGNcdTYyOGVcdTYyOGZcdTYy''@;'; put 'put ''OTRcdTYyODdcdTYyNzFcdTYyN2JcdTYyN2FcdTYyNzBcdTYyODFcdTYyODhcdTYyNzdcdTYyN2RcdTYyNzJcdTYyNzRcdTY1MzdcdTY1ZjBcdTY1ZjRcdTY1ZjNcdTY1ZjJcdTY1ZjVcdTY3NDVcdTY3NDdcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDJdLmxlbmd0aDsrK0UpNjU1MzMh''@;'; put 'put ''PT1CWzIwMl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjAyXVtFXV09NTE3MTIrRSxMWzUxNzEyK0VdPUJbMjAyXVtFXSk7Zm9yKEJbMjAzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NzU5XHU2NzU1XHU2NzRjXHU2NzQ4XHU2''@;'; put 'put ''NzVkXHU2NzRkXHU2NzVhXHU2NzRiXHU2YmQwXHU2YzE5XHU2YzFhXHU2Yzc4XHU2YzY3XHU2YzZiXHU2Yzg0XHU2YzhiXHU2YzhmXHU2YzcxXHU2YzZmXHU2YzY5XHU2YzlhXHU2YzZkXHU2Yzg3XHU2Yzk1XHU2YzljXHU2YzY2XHU2YzczXHU2YzY1XHU2YzdiXHU2YzhlXHU3MDc0XHU3MDdh''@;'; put 'put ''XHU3MjYzXHU3MmJmXHU3MmJkXHU3MmMzXHU3MmM2XHU3MmMxXHU3MmJhXHU3MmM1XHU3Mzk1XHU3Mzk3XHU3MzkzXHU3Mzk0XHU3MzkyXHU3NTNhXHU3NTM5XHU3NTk0XHU3NTk1XHU3NjgxXHU3OTNkXHU4MDM0XHU4MDk1XHU4MDk5XHU4MDkwXHU4MDkyXHU4MDljXHU4MjkwXHU4MjhmXHU4''@;'; put 'put ''Mjg1XHU4MjhlXHU4MjkxXHU4MjkzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MjhhXHU4MjgzXHU4Mjg0XHU4Yzc4XHU4ZmM5XHU4ZmJmXHU5MDlmXHU5MGExXHU5MGE1XHU5MDllXHU5MGE3XHU5MGEwXHU5NjMwXHU5NjI4XHU5NjJmXHU5NjJkXHU0ZTMzXHU0''@;'; put 'put ''Zjk4XHU0ZjdjXHU0Zjg1XHU0ZjdkXHU0ZjgwXHU0Zjg3XHU0Zjc2XHU0Zjc0XHU0Zjg5XHU0Zjg0XHU0Zjc3XHU0ZjRjXHU0Zjk3XHU0ZjZhXHU0ZjlhXHU0Zjc5XHU0ZjgxXHU0Zjc4XHU0ZjkwXHU0ZjljXHU0Zjk0XHU0ZjllXHU0ZjkyXHU0ZjgyXHU0Zjk1XHU0ZjZiXHU0ZjZlXHU1MTll''@;'; put 'put ''XHU1MWJjXHU1MWJlXHU1MjM1XHU1MjMyXHU1MjMzXHU1MjQ2XHU1MjMxXHU1MmJjXHU1MzBhXHU1MzBiXHU1MzNjXHU1MzkyXHU1Mzk0XHU1NDg3XHU1NDdmXHU1NDgxXHU1NDkxXHU1NDgyXHU1NDg4XHU1NDZiXHU1NDdhXHU1NDdlXHU1NDY1XHU1NDZjXHU1NDc0XHU1NDY2XHU1NDhkXHU1''@;'; put 'put ''NDZmXHU1NDYxXHU1NDYwXHU1NDk4XHU1NDYzXHU1NDY3XHU1NDY0XHU1NmY3XHU1NmY5XHU1NzZmXHU1NzcyXHU1NzZkXHU1NzZiXHU1NzcxXHU1NzcwXHU1Nzc2XHU1NzgwXHU1Nzc1XHU1NzdiXHU1NzczXHU1Nzc0XHU1NzYyXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjAzXS5sZW5n''@;'; put 'put ''dGg7KytFKTY1NTMzIT09QlsyMDNdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIwM11bRV1dPTUxOTY4K0UsTFs1MTk2OCtFXT1CWzIwM11bRV0pO2ZvcihCWzIwNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTc2OFx1NTc3ZFx1''@;'; put 'put ''NTkwY1x1NTk0NVx1NTliNVx1NTliYVx1NTljZlx1NTljZVx1NTliMlx1NTljY1x1NTljMVx1NTliNlx1NTliY1x1NTljM1x1NTlkNlx1NTliMVx1NTliZFx1NTljMFx1NTljOFx1NTliNFx1NTljN1x1NWI2Mlx1NWI2NVx1NWI5M1x1NWI5NVx1NWM0NFx1NWM0N1x1NWNhZVx1NWNhNFx1NWNh''@;'; put 'put ''MFx1NWNiNVx1NWNhZlx1NWNhOFx1NWNhY1x1NWM5Zlx1NWNhM1x1NWNhZFx1NWNhMlx1NWNhYVx1NWNhN1x1NWM5ZFx1NWNhNVx1NWNiNlx1NWNiMFx1NWNhNlx1NWUxN1x1NWUxNFx1NWUxOVx1NWYyOFx1NWYyMlx1NWYyM1x1NWYyNFx1NWY1NFx1NWY4Mlx1NWY3ZVx1NWY3ZFx1NWZkZVx1''@;'; put 'put ''NWZlNVx1NjAyZFx1NjAyNlx1NjAxOVx1NjAzMlx1NjAwYlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjAzNFx1NjAwYVx1NjAxN1x1NjAzM1x1NjAxYVx1NjAxZVx1NjAyY1x1NjAyMlx1NjAwZFx1NjAxMFx1NjAyZVx1NjAxM1x1NjAxMVx1NjAwY1x1NjAwOVx1''@;'; put 'put ''NjAxY1x1NjIxNFx1NjIzZFx1NjJhZFx1NjJiNFx1NjJkMVx1NjJiZVx1NjJhYVx1NjJiNlx1NjJjYVx1NjJhZVx1NjJiM1x1NjJhZlx1NjJiYlx1NjJhOVx1NjJiMFx1NjJiOFx1NjUzZFx1NjVhOFx1NjViYlx1NjYwOVx1NjVmY1x1NjYwNFx1NjYxMlx1NjYwOFx1NjVmYlx1NjYwM1x1NjYw''@;'; put 'put ''Ylx1NjYwZFx1NjYwNVx1NjVmZFx1NjYxMVx1NjYxMFx1NjZmNlx1NjcwYVx1Njc4NVx1Njc2Y1x1Njc4ZVx1Njc5Mlx1Njc3Nlx1Njc3Ylx1Njc5OFx1Njc4Nlx1Njc4NFx1Njc3NFx1Njc4ZFx1Njc4Y1x1Njc3YVx1Njc5Zlx1Njc5MVx1Njc5OVx1Njc4M1x1Njc3ZFx1Njc4MVx1Njc3OFx1''@;'; put 'put ''Njc3OVx1Njc5NFx1NmIyNVx1NmI4MFx1NmI3ZVx1NmJkZVx1NmMxZFx1NmM5M1x1NmNlY1x1NmNlYlx1NmNlZVx1NmNkOVx1NmNiNlx1NmNkNFx1NmNhZFx1NmNlN1x1NmNiN1x1NmNkMFx1NmNjMlx1NmNiYVx1NmNjM1x1NmNjNlx1NmNlZFx1NmNmMlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtF''@;'; put 'put ''IT1CWzIwNF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjA0XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMDRdW0VdXT01MjIyNCtFLExbNTIyMjQrRV09QlsyMDRdW0VdKTtmb3IoQlsyMDVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dTZjZDJcdTZjZGRcdTZjYjRcdTZjOGFcdTZjOWRcdTZjODBcdTZjZGVcdTZjYzBcdTZkMzBcdTZjY2RcdTZjYzdcdTZjYjBcdTZjZjlcdTZjY2ZcdTZjZTlcdTZjZDFcdTcwOTRcdTcwOThcdTcwODVcdTcwOTNcdTcwODZcdTcwODRcdTcwOTFcdTcwOTZcdTcwODJcdTcwOWFcdTcwODNcdTcy''@;'; put 'put ''NmFcdTcyZDZcdTcyY2JcdTcyZDhcdTcyYzlcdTcyZGNcdTcyZDJcdTcyZDRcdTcyZGFcdTcyY2NcdTcyZDFcdTczYTRcdTczYTFcdTczYWRcdTczYTZcdTczYTJcdTczYTBcdTczYWNcdTczOWRcdTc0ZGRcdTc0ZThcdTc1M2ZcdTc1NDBcdTc1M2VcdTc1OGNcdTc1OThcdTc2YWZcdTc2ZjNc''@;'; put 'put ''dTc2ZjFcdTc2ZjBcdTc2ZjVcdTc3ZjhcdTc3ZmNcdTc3ZjlcdTc3ZmJcdTc3ZmFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc3ZjdcdTc5NDJcdTc5M2ZcdTc5YzVcdTdhNzhcdTdhN2JcdTdhZmJcdTdjNzVcdTdjZmRcdTgwMzVcdTgwOGZcdTgwYWVcdTgwYTNc''@;'; put 'put ''dTgwYjhcdTgwYjVcdTgwYWRcdTgyMjBcdTgyYTBcdTgyYzBcdTgyYWJcdTgyOWFcdTgyOThcdTgyOWJcdTgyYjVcdTgyYTdcdTgyYWVcdTgyYmNcdTgyOWVcdTgyYmFcdTgyYjRcdTgyYThcdTgyYTFcdTgyYTlcdTgyYzJcdTgyYTRcdTgyYzNcdTgyYjZcdTgyYTJcdTg2NzBcdTg2NmZcdTg2''@;'; put 'put ''NmRcdTg2NmVcdThjNTZcdThmZDJcdThmY2JcdThmZDNcdThmY2RcdThmZDZcdThmZDVcdThmZDdcdTkwYjJcdTkwYjRcdTkwYWZcdTkwYjNcdTkwYjBcdTk2MzlcdTk2M2RcdTk2M2NcdTk2M2FcdTk2NDNcdTRmY2RcdTRmYzVcdTRmZDNcdTRmYjJcdTRmYzlcdTRmY2JcdTRmYzFcdTRmZDRc''@;'; put 'put ''dTRmZGNcdTRmZDlcdTRmYmJcdTRmYjNcdTRmZGJcdTRmYzdcdTRmZDZcdTRmYmFcdTRmYzBcdTRmYjlcdTRmZWNcdTUyNDRcdTUyNDlcdTUyYzBcdTUyYzJcdTUzM2RcdTUzN2NcdTUzOTdcdTUzOTZcdTUzOTlcdTUzOThcdTU0YmFcdTU0YTFcdTU0YWRcdTU0YTVcdTU0Y2ZcdWZmZmQiLnNw''@;'; put 'put ''bGl0KCIiKSxFPTA7RSE9QlsyMDVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwNV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjA1XVtFXV09NTI0ODArRSxMWzUyNDgwK0VdPUJbMjA1XVtFXSk7Zm9yKEJbMjA2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHU1NGMzXHU4MzBkXHU1NGI3XHU1NGFlXHU1NGQ2XHU1NGI2XHU1NGM1XHU1NGM2XHU1NGEwXHU1NDcwXHU1NGJjXHU1NGEyXHU1NGJlXHU1NDcyXHU1NGRlXHU1NGIwXHU1N2I1XHU1NzllXHU1NzlmXHU1N2E0XHU1NzhjXHU1Nzk3XHU1NzlkXHU1NzliXHU1Nzk0XHU1''@;'; put 'put ''Nzk4XHU1NzhmXHU1Nzk5XHU1N2E1XHU1NzlhXHU1Nzk1XHU1OGY0XHU1OTBkXHU1OTUzXHU1OWUxXHU1OWRlXHU1OWVlXHU1YTAwXHU1OWYxXHU1OWRkXHU1OWZhXHU1OWZkXHU1OWZjXHU1OWY2XHU1OWU0XHU1OWYyXHU1OWY3XHU1OWRiXHU1OWU5XHU1OWYzXHU1OWY1XHU1OWUwXHU1OWZl''@;'; put 'put ''XHU1OWY0XHU1OWVkXHU1YmE4XHU1YzRjXHU1Y2QwXHU1Y2Q4XHU1Y2NjXHU1Y2Q3XHU1Y2NiXHU1Y2RiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1Y2RlXHU1Y2RhXHU1Y2M5XHU1Y2M3XHU1Y2NhXHU1Y2Q2XHU1Y2QzXHU1Y2Q0XHU1Y2NmXHU1Y2M4XHU1Y2M2''@;'; put 'put ''XHU1Y2NlXHU1Y2RmXHU1Y2Y4XHU1ZGY5XHU1ZTIxXHU1ZTIyXHU1ZTIzXHU1ZTIwXHU1ZTI0XHU1ZWIwXHU1ZWE0XHU1ZWEyXHU1ZTliXHU1ZWEzXHU1ZWE1XHU1ZjA3XHU1ZjJlXHU1ZjU2XHU1Zjg2XHU2MDM3XHU2MDM5XHU2MDU0XHU2MDcyXHU2MDVlXHU2MDQ1XHU2MDUzXHU2MDQ3XHU2''@;'; put 'put ''MDQ5XHU2MDViXHU2MDRjXHU2MDQwXHU2MDQyXHU2MDVmXHU2MDI0XHU2MDQ0XHU2MDU4XHU2MDY2XHU2MDZlXHU2MjQyXHU2MjQzXHU2MmNmXHU2MzBkXHU2MzBiXHU2MmY1XHU2MzBlXHU2MzAzXHU2MmViXHU2MmY5XHU2MzBmXHU2MzBjXHU2MmY4XHU2MmY2XHU2MzAwXHU2MzEzXHU2MzE0''@;'; put 'put ''XHU2MmZhXHU2MzE1XHU2MmZiXHU2MmYwXHU2NTQxXHU2NTQzXHU2NWFhXHU2NWJmXHU2NjM2XHU2NjIxXHU2NjMyXHU2NjM1XHU2NjFjXHU2NjI2XHU2NjIyXHU2NjMzXHU2NjJiXHU2NjNhXHU2NjFkXHU2NjM0XHU2NjM5XHU2NjJlXHU2NzBmXHU2NzEwXHU2N2MxXHU2N2YyXHU2N2M4XHU2''@;'; put 'put ''N2JhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjA2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDZdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIwNl1bRV1dPTUyNzM2K0UsTFs1MjczNitFXT1CWzIwNl1bRV0pO2ZvcihCWzIwN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjdkY1x1NjdiYlx1NjdmOFx1NjdkOFx1NjdjMFx1NjdiN1x1NjdjNVx1NjdlYlx1NjdlNFx1NjdkZlx1NjdiNVx1NjdjZFx1NjdiM1x1NjdmN1x1NjdmNlx1NjdlZVx1NjdlM1x1NjdjMlx1NjdiOVx1NjdjZVx1NjdlN1x1NjdmMFx1NjdiMlx1''@;'; put 'put ''NjdmY1x1NjdjNlx1NjdlZFx1NjdjY1x1NjdhZVx1NjdlNlx1NjdkYlx1NjdmYVx1NjdjOVx1NjdjYVx1NjdjM1x1NjdlYVx1NjdjYlx1NmIyOFx1NmI4Mlx1NmI4NFx1NmJiNlx1NmJkNlx1NmJkOFx1NmJlMFx1NmMyMFx1NmMyMVx1NmQyOFx1NmQzNFx1NmQyZFx1NmQxZlx1NmQzY1x1NmQz''@;'; put 'put ''Zlx1NmQxMlx1NmQwYVx1NmNkYVx1NmQzM1x1NmQwNFx1NmQxOVx1NmQzYVx1NmQxYVx1NmQxMVx1NmQwMFx1NmQxZFx1NmQ0Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmQwMVx1NmQxOFx1NmQzN1x1NmQwM1x1NmQwZlx1NmQ0MFx1NmQwN1x1NmQyMFx1NmQy''@;'; put 'put ''Y1x1NmQwOFx1NmQyMlx1NmQwOVx1NmQxMFx1NzBiN1x1NzA5Zlx1NzBiZVx1NzBiMVx1NzBiMFx1NzBhMVx1NzBiNFx1NzBiNVx1NzBhOVx1NzI0MVx1NzI0OVx1NzI0YVx1NzI2Y1x1NzI3MFx1NzI3M1x1NzI2ZVx1NzJjYVx1NzJlNFx1NzJlOFx1NzJlYlx1NzJkZlx1NzJlYVx1NzJlNlx1''@;'; put 'put ''NzJlM1x1NzM4NVx1NzNjY1x1NzNjMlx1NzNjOFx1NzNjNVx1NzNiOVx1NzNiNlx1NzNiNVx1NzNiNFx1NzNlYlx1NzNiZlx1NzNjN1x1NzNiZVx1NzNjM1x1NzNjNlx1NzNiOFx1NzNjYlx1NzRlY1x1NzRlZVx1NzUyZVx1NzU0N1x1NzU0OFx1NzVhN1x1NzVhYVx1NzY3OVx1NzZjNFx1Nzcw''@;'; put 'put ''OFx1NzcwM1x1NzcwNFx1NzcwNVx1NzcwYVx1NzZmN1x1NzZmYlx1NzZmYVx1NzdlN1x1NzdlOFx1NzgwNlx1NzgxMVx1NzgxMlx1NzgwNVx1NzgxMFx1NzgwZlx1NzgwZVx1NzgwOVx1NzgwM1x1NzgxM1x1Nzk0YVx1Nzk0Y1x1Nzk0Ylx1Nzk0NVx1Nzk0NFx1NzlkNVx1NzljZFx1NzljZlx1''@;'; put 'put ''NzlkNlx1NzljZVx1N2E4MFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwN10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjA3XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMDddW0VdXT01Mjk5MitFLExbNTI5OTIrRV09QlsyMDddW0VdKTtmb3IoQlsyMDhdPSJcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhN2VcdTdhZDFcdTdiMDBcdTdiMDFcdTdjN2FcdTdjNzhcdTdjNzlcdTdjN2ZcdTdjODBcdTdjODFcdTdkMDNcdTdkMDhcdTdkMDFcdTdmNThcdTdmOTFcdTdmOGRcdTdmYmVcdTgwMDdcdTgwMGVcdTgwMGZcdTgwMTRc''@;'; put 'put ''dTgwMzdcdTgwZDhcdTgwYzdcdTgwZTBcdTgwZDFcdTgwYzhcdTgwYzJcdTgwZDBcdTgwYzVcdTgwZTNcdTgwZDlcdTgwZGNcdTgwY2FcdTgwZDVcdTgwYzlcdTgwY2ZcdTgwZDdcdTgwZTZcdTgwY2RcdTgxZmZcdTgyMjFcdTgyOTRcdTgyZDlcdTgyZmVcdTgyZjlcdTgzMDdcdTgyZThcdTgz''@;'; put 'put ''MDBcdTgyZDVcdTgzM2FcdTgyZWJcdTgyZDZcdTgyZjRcdTgyZWNcdTgyZTFcdTgyZjJcdTgyZjVcdTgzMGNcdTgyZmJcdTgyZjZcdTgyZjBcdTgyZWFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgyZTRcdTgyZTBcdTgyZmFcdTgyZjNcdTgyZWRcdTg2NzdcdTg2''@;'; put 'put ''NzRcdTg2N2NcdTg2NzNcdTg4NDFcdTg4NGVcdTg4NjdcdTg4NmFcdTg4NjlcdTg5ZDNcdThhMDRcdThhMDdcdThkNzJcdThmZTNcdThmZTFcdThmZWVcdThmZTBcdTkwZjFcdTkwYmRcdTkwYmZcdTkwZDVcdTkwYzVcdTkwYmVcdTkwYzdcdTkwY2JcdTkwYzhcdTkxZDRcdTkxZDNcdTk2NTRc''@;'; put 'put ''dTk2NGZcdTk2NTFcdTk2NTNcdTk2NGFcdTk2NGVcdTUwMWVcdTUwMDVcdTUwMDdcdTUwMTNcdTUwMjJcdTUwMzBcdTUwMWJcdTRmZjVcdTRmZjRcdTUwMzNcdTUwMzdcdTUwMmNcdTRmZjZcdTRmZjdcdTUwMTdcdTUwMWNcdTUwMjBcdTUwMjdcdTUwMzVcdTUwMmZcdTUwMzFcdTUwMGVcdTUx''@;'; put 'put ''NWFcdTUxOTRcdTUxOTNcdTUxY2FcdTUxYzRcdTUxYzVcdTUxYzhcdTUxY2VcdTUyNjFcdTUyNWFcdTUyNTJcdTUyNWVcdTUyNWZcdTUyNTVcdTUyNjJcdTUyY2RcdTUzMGVcdTUzOWVcdTU1MjZcdTU0ZTJcdTU1MTdcdTU1MTJcdTU0ZTdcdTU0ZjNcdTU0ZTRcdTU1MWFcdTU0ZmZcdTU1MDRc''@;'; put 'put ''dTU1MDhcdTU0ZWJcdTU1MTFcdTU1MDVcdTU0ZjFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwOF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjA4XVtFXV09NTMyNDgrRSxMWzUzMjQ4K0VdPUJbMjA4XVtFXSk7Zm9yKEJbMjA5XT0iXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NTBhXHU1NGZiXHU1NGY3XHU1NGY4XHU1NGUwXHU1NTBlXHU1NTAzXHU1NTBiXHU1NzAxXHU1NzAyXHU1N2NjXHU1ODMyXHU1N2Q1XHU1N2QyXHU1N2JhXHU1N2M2XHU1N2JkXHU1N2JjXHU1N2I4''@;'; put 'put ''XHU1N2I2XHU1N2JmXHU1N2M3XHU1N2QwXHU1N2I5XHU1N2MxXHU1OTBlXHU1OTRhXHU1YTE5XHU1YTE2XHU1YTJkXHU1YTJlXHU1YTE1XHU1YTBmXHU1YTE3XHU1YTBhXHU1YTFlXHU1YTMzXHU1YjZjXHU1YmE3XHU1YmFkXHU1YmFjXHU1YzAzXHU1YzU2XHU1YzU0XHU1Y2VjXHU1Y2ZmXHU1''@;'; put 'put ''Y2VlXHU1Y2YxXHU1Y2Y3XHU1ZDAwXHU1Y2Y5XHU1ZTI5XHU1ZTI4XHU1ZWE4XHU1ZWFlXHU1ZWFhXHU1ZWFjXHU1ZjMzXHU1ZjMwXHU1ZjY3XHU2MDVkXHU2MDVhXHU2MDY3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MDQxXHU2MGEyXHU2MDg4XHU2MDgwXHU2''@;'; put 'put ''MDkyXHU2MDgxXHU2MDlkXHU2MDgzXHU2MDk1XHU2MDliXHU2MDk3XHU2MDg3XHU2MDljXHU2MDhlXHU2MjE5XHU2MjQ2XHU2MmYyXHU2MzEwXHU2MzU2XHU2MzJjXHU2MzQ0XHU2MzQ1XHU2MzM2XHU2MzQzXHU2M2U0XHU2MzM5XHU2MzRiXHU2MzRhXHU2MzNjXHU2MzI5XHU2MzQxXHU2MzM0''@;'; put 'put ''XHU2MzU4XHU2MzU0XHU2MzU5XHU2MzJkXHU2MzQ3XHU2MzMzXHU2MzVhXHU2MzUxXHU2MzM4XHU2MzU3XHU2MzQwXHU2MzQ4XHU2NTRhXHU2NTQ2XHU2NWM2XHU2NWMzXHU2NWM0XHU2NWMyXHU2NjRhXHU2NjVmXHU2NjQ3XHU2NjUxXHU2NzEyXHU2NzEzXHU2ODFmXHU2ODFhXHU2ODQ5XHU2''@;'; put 'put ''ODMyXHU2ODMzXHU2ODNiXHU2ODRiXHU2ODRmXHU2ODE2XHU2ODMxXHU2ODFjXHU2ODM1XHU2ODJiXHU2ODJkXHU2ODJmXHU2ODRlXHU2ODQ0XHU2ODM0XHU2ODFkXHU2ODEyXHU2ODE0XHU2ODI2XHU2ODI4XHU2ODJlXHU2ODRkXHU2ODNhXHU2ODI1XHU2ODIwXHU2YjJjXHU2YjJmXHU2YjJk''@;'; put 'put ''XHU2YjMxXHU2YjM0XHU2YjZkXHU4MDgyXHU2Yjg4XHU2YmU2XHU2YmU0XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjA5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDldW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIwOV1bRV1dPTUzNTA0K0UsTFs1MzUwNCtFXT1CWzIwOV1bRV0pO2Zv''@;'; put 'put ''cihCWzIxMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmJlOFx1NmJlM1x1NmJlMlx1NmJlN1x1NmMyNVx1NmQ3YVx1NmQ2M1x1NmQ2NFx1NmQ3Nlx1NmQwZFx1NmQ2MVx1NmQ5Mlx1NmQ1OFx1NmQ2Mlx1NmQ2ZFx1NmQ2Zlx1NmQ5''@;'; put 'put ''MVx1NmQ4ZFx1NmRlZlx1NmQ3Zlx1NmQ4Nlx1NmQ1ZVx1NmQ2N1x1NmQ2MFx1NmQ5N1x1NmQ3MFx1NmQ3Y1x1NmQ1Zlx1NmQ4Mlx1NmQ5OFx1NmQyZlx1NmQ2OFx1NmQ4Ylx1NmQ3ZVx1NmQ4MFx1NmQ4NFx1NmQxNlx1NmQ4M1x1NmQ3Ylx1NmQ3ZFx1NmQ3NVx1NmQ5MFx1NzBkY1x1NzBkM1x1''@;'; put 'put ''NzBkMVx1NzBkZFx1NzBjYlx1N2YzOVx1NzBlMlx1NzBkN1x1NzBkMlx1NzBkZVx1NzBlMFx1NzBkNFx1NzBjZFx1NzBjNVx1NzBjNlx1NzBjN1x1NzBkYVx1NzBjZVx1NzBlMVx1NzI0Mlx1NzI3OFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzI3N1x1NzI3Nlx1''@;'; put 'put ''NzMwMFx1NzJmYVx1NzJmNFx1NzJmZVx1NzJmNlx1NzJmM1x1NzJmYlx1NzMwMVx1NzNkM1x1NzNkOVx1NzNlNVx1NzNkNlx1NzNiY1x1NzNlN1x1NzNlM1x1NzNlOVx1NzNkY1x1NzNkMlx1NzNkYlx1NzNkNFx1NzNkZFx1NzNkYVx1NzNkN1x1NzNkOFx1NzNlOFx1NzRkZVx1NzRkZlx1NzRm''@;'; put 'put ''NFx1NzRmNVx1NzUyMVx1NzU1Ylx1NzU1Zlx1NzViMFx1NzVjMVx1NzViYlx1NzVjNFx1NzVjMFx1NzViZlx1NzViNlx1NzViYVx1NzY4YVx1NzZjOVx1NzcxZFx1NzcxYlx1NzcxMFx1NzcxM1x1NzcxMlx1NzcyM1x1NzcxMVx1NzcxNVx1NzcxOVx1NzcxYVx1NzcyMlx1NzcyN1x1NzgyM1x1''@;'; put 'put ''NzgyY1x1NzgyMlx1NzgzNVx1NzgyZlx1NzgyOFx1NzgyZVx1NzgyYlx1NzgyMVx1NzgyOVx1NzgzM1x1NzgyYVx1NzgzMVx1Nzk1NFx1Nzk1Ylx1Nzk0Zlx1Nzk1Y1x1Nzk1M1x1Nzk1Mlx1Nzk1MVx1NzllYlx1NzllY1x1NzllMFx1NzllZVx1NzllZFx1NzllYVx1NzlkY1x1NzlkZVx1Nzlk''@;'; put 'put ''ZFx1N2E4Nlx1N2E4OVx1N2E4NVx1N2E4Ylx1N2E4Y1x1N2E4YVx1N2E4N1x1N2FkOFx1N2IxMFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxMF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjEwXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMTBdW0VdXT01Mzc2MCtFLExbNTM3NjArRV09''@;'; put 'put ''QlsyMTBdW0VdKTtmb3IoQlsyMTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdiMDRcdTdiMTNcdTdiMDVcdTdiMGZcdTdiMDhcdTdiMGFcdTdiMGVcdTdiMDlcdTdiMTJcdTdjODRcdTdjOTFcdTdjOGFcdTdjOGNcdTdjODhcdTdj''@;'; put 'put ''OGRcdTdjODVcdTdkMWVcdTdkMWRcdTdkMTFcdTdkMGVcdTdkMThcdTdkMTZcdTdkMTNcdTdkMWZcdTdkMTJcdTdkMGZcdTdkMGNcdTdmNWNcdTdmNjFcdTdmNWVcdTdmNjBcdTdmNWRcdTdmNWJcdTdmOTZcdTdmOTJcdTdmYzNcdTdmYzJcdTdmYzBcdTgwMTZcdTgwM2VcdTgwMzlcdTgwZmFc''@;'; put 'put ''dTgwZjJcdTgwZjlcdTgwZjVcdTgxMDFcdTgwZmJcdTgxMDBcdTgyMDFcdTgyMmZcdTgyMjVcdTgzMzNcdTgzMmRcdTgzNDRcdTgzMTlcdTgzNTFcdTgzMjVcdTgzNTZcdTgzM2ZcdTgzNDFcdTgzMjZcdTgzMWNcdTgzMjJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dTgzNDJcdTgzNGVcdTgzMWJcdTgzMmFcdTgzMDhcdTgzM2NcdTgzNGRcdTgzMTZcdTgzMjRcdTgzMjBcdTgzMzdcdTgzMmZcdTgzMjlcdTgzNDdcdTgzNDVcdTgzNGNcdTgzNTNcdTgzMWVcdTgzMmNcdTgzNGJcdTgzMjdcdTgzNDhcdTg2NTNcdTg2NTJcdTg2YTJcdTg2YThcdTg2OTZcdTg2''@;'; put 'put ''OGRcdTg2OTFcdTg2OWVcdTg2ODdcdTg2OTdcdTg2ODZcdTg2OGJcdTg2OWFcdTg2ODVcdTg2YTVcdTg2OTlcdTg2YTFcdTg2YTdcdTg2OTVcdTg2OThcdTg2OGVcdTg2OWRcdTg2OTBcdTg2OTRcdTg4NDNcdTg4NDRcdTg4NmRcdTg4NzVcdTg4NzZcdTg4NzJcdTg4ODBcdTg4NzFcdTg4N2Zc''@;'; put 'put ''dTg4NmZcdTg4ODNcdTg4N2VcdTg4NzRcdTg4N2NcdThhMTJcdThjNDdcdThjNTdcdThjN2JcdThjYTRcdThjYTNcdThkNzZcdThkNzhcdThkYjVcdThkYjdcdThkYjZcdThlZDFcdThlZDNcdThmZmVcdThmZjVcdTkwMDJcdThmZmZcdThmZmJcdTkwMDRcdThmZmNcdThmZjZcdTkwZDZcdTkw''@;'; put 'put ''ZTBcdTkwZDlcdTkwZGFcdTkwZTNcdTkwZGZcdTkwZTVcdTkwZDhcdTkwZGJcdTkwZDdcdTkwZGNcdTkwZTRcdTkxNTBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxMV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjExXVtFXV09NTQwMTYr''@;'; put 'put ''RSxMWzU0MDE2K0VdPUJbMjExXVtFXSk7Zm9yKEJbMjEyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MTRlXHU5MTRmXHU5MWQ1XHU5MWUyXHU5MWRhXHU5NjVjXHU5NjVmXHU5NmJjXHU5OGUzXHU5YWRmXHU5YjJmXHU0ZTdmXHU1''@;'; put 'put ''MDcwXHU1MDZhXHU1MDYxXHU1MDVlXHU1MDYwXHU1MDUzXHU1MDRiXHU1MDVkXHU1MDcyXHU1MDQ4XHU1MDRkXHU1MDQxXHU1MDViXHU1MDRhXHU1MDYyXHU1MDE1XHU1MDQ1XHU1MDVmXHU1MDY5XHU1MDZiXHU1MDYzXHU1MDY0XHU1MDQ2XHU1MDQwXHU1MDZlXHU1MDczXHU1MDU3XHU1MDUx''@;'; put 'put ''XHU1MWQwXHU1MjZiXHU1MjZkXHU1MjZjXHU1MjZlXHU1MmQ2XHU1MmQzXHU1MzJkXHU1MzljXHU1NTc1XHU1NTc2XHU1NTNjXHU1NTRkXHU1NTUwXHU1NTM0XHU1NTJhXHU1NTUxXHU1NTYyXHU1NTM2XHU1NTM1XHU1NTMwXHU1NTUyXHU1NTQ1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHU1NTBjXHU1NTMyXHU1NTY1XHU1NTRlXHU1NTM5XHU1NTQ4XHU1NTJkXHU1NTNiXHU1NTQwXHU1NTRiXHU1NzBhXHU1NzA3XHU1N2ZiXHU1ODE0XHU1N2UyXHU1N2Y2XHU1N2RjXHU1N2Y0XHU1ODAwXHU1N2VkXHU1N2ZkXHU1ODA4XHU1N2Y4XHU1ODBiXHU1N2YzXHU1''@;'; put 'put ''N2NmXHU1ODA3XHU1N2VlXHU1N2UzXHU1N2YyXHU1N2U1XHU1N2VjXHU1N2UxXHU1ODBlXHU1N2ZjXHU1ODEwXHU1N2U3XHU1ODAxXHU1ODBjXHU1N2YxXHU1N2U5XHU1N2YwXHU1ODBkXHU1ODA0XHU1OTVjXHU1YTYwXHU1YTU4XHU1YTU1XHU1YTY3XHU1YTVlXHU1YTM4XHU1YTM1XHU1YTZk''@;'; put 'put ''XHU1YTUwXHU1YTVmXHU1YTY1XHU1YTZjXHU1YTUzXHU1YTY0XHU1YTU3XHU1YTQzXHU1YTVkXHU1YTUyXHU1YTQ0XHU1YTViXHU1YTQ4XHU1YThlXHU1YTNlXHU1YTRkXHU1YTM5XHU1YTRjXHU1YTcwXHU1YTY5XHU1YTQ3XHU1YTUxXHU1YTU2XHU1YTQyXHU1YTVjXHU1YjcyXHU1YjZlXHU1''@;'; put 'put ''YmMxXHU1YmMwXHU1YzU5XHU1ZDFlXHU1ZDBiXHU1ZDFkXHU1ZDFhXHU1ZDIwXHU1ZDBjXHU1ZDI4XHU1ZDBkXHU1ZDI2XHU1ZDI1XHU1ZDBmXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjEyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMTJdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIx''@;'; put 'put ''Ml1bRV1dPTU0MjcyK0UsTFs1NDI3MitFXT1CWzIxMl1bRV0pO2ZvcihCWzIxM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWQzMFx1NWQxMlx1NWQyM1x1NWQxZlx1NWQyZVx1NWUzZVx1NWUzNFx1NWViMVx1NWViNFx1NWViOVx1''@;'; put 'put ''NWViMlx1NWViM1x1NWYzNlx1NWYzOFx1NWY5Ylx1NWY5Nlx1NWY5Zlx1NjA4YVx1NjA5MFx1NjA4Nlx1NjBiZVx1NjBiMFx1NjBiYVx1NjBkM1x1NjBkNFx1NjBjZlx1NjBlNFx1NjBkOVx1NjBkZFx1NjBjOFx1NjBiMVx1NjBkYlx1NjBiN1x1NjBjYVx1NjBiZlx1NjBjM1x1NjBjZFx1NjBj''@;'; put 'put ''MFx1NjMzMlx1NjM2NVx1NjM4YVx1NjM4Mlx1NjM3ZFx1NjNiZFx1NjM5ZVx1NjNhZFx1NjM5ZFx1NjM5N1x1NjNhYlx1NjM4ZVx1NjM2Zlx1NjM4N1x1NjM5MFx1NjM2ZVx1NjNhZlx1NjM3NVx1NjM5Y1x1NjM2ZFx1NjNhZVx1NjM3Y1x1NjNhNFx1NjMzYlx1NjM5Zlx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjM3OFx1NjM4NVx1NjM4MVx1NjM5MVx1NjM4ZFx1NjM3MFx1NjU1M1x1NjVjZFx1NjY2NVx1NjY2MVx1NjY1Ylx1NjY1OVx1NjY1Y1x1NjY2Mlx1NjcxOFx1Njg3OVx1Njg4N1x1Njg5MFx1Njg5Y1x1Njg2ZFx1Njg2ZVx1NjhhZVx1NjhhYlx1''@;'; put 'put ''Njk1Nlx1Njg2Zlx1NjhhM1x1NjhhY1x1NjhhOVx1Njg3NVx1Njg3NFx1NjhiMlx1Njg4Zlx1Njg3N1x1Njg5Mlx1Njg3Y1x1Njg2Ylx1Njg3Mlx1NjhhYVx1Njg4MFx1Njg3MVx1Njg3ZVx1Njg5Ylx1Njg5Nlx1Njg4Ylx1NjhhMFx1Njg4OVx1NjhhNFx1Njg3OFx1Njg3Ylx1Njg5MVx1Njg4''@;'; put 'put ''Y1x1Njg4YVx1Njg3ZFx1NmIzNlx1NmIzM1x1NmIzN1x1NmIzOFx1NmI5MVx1NmI4Zlx1NmI4ZFx1NmI4ZVx1NmI4Y1x1NmMyYVx1NmRjMFx1NmRhYlx1NmRiNFx1NmRiM1x1NmU3NFx1NmRhY1x1NmRlOVx1NmRlMlx1NmRiN1x1NmRmNlx1NmRkNFx1NmUwMFx1NmRjOFx1NmRlMFx1NmRkZlx1''@;'; put 'put ''NmRkNlx1NmRiZVx1NmRlNVx1NmRkY1x1NmRkZFx1NmRkYlx1NmRmNFx1NmRjYVx1NmRiZFx1NmRlZFx1NmRmMFx1NmRiYVx1NmRkNVx1NmRjMlx1NmRjZlx1NmRjOVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxM10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjEzXVtFXS5jaGFyQ29kZUF0''@;'; put 'put ''KDApJiYobWVbQlsyMTNdW0VdXT01NDUyOCtFLExbNTQ1MjgrRV09QlsyMTNdW0VdKTtmb3IoQlsyMTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZkZDBcdTZkZjJcdTZkZDNcdTZkZmRcdTZkZDdcdTZkY2RcdTZkZTNcdTZkYmJc''@;'; put 'put ''dTcwZmFcdTcxMGRcdTcwZjdcdTcxMTdcdTcwZjRcdTcxMGNcdTcwZjBcdTcxMDRcdTcwZjNcdTcxMTBcdTcwZmNcdTcwZmZcdTcxMDZcdTcxMTNcdTcxMDBcdTcwZjhcdTcwZjZcdTcxMGJcdTcxMDJcdTcxMGVcdTcyN2VcdTcyN2JcdTcyN2NcdTcyN2ZcdTczMWRcdTczMTdcdTczMDdcdTcz''@;'; put 'put ''MTFcdTczMThcdTczMGFcdTczMDhcdTcyZmZcdTczMGZcdTczMWVcdTczODhcdTczZjZcdTczZjhcdTczZjVcdTc0MDRcdTc0MDFcdTczZmRcdTc0MDdcdTc0MDBcdTczZmFcdTczZmNcdTczZmZcdTc0MGNcdTc0MGJcdTczZjRcdTc0MDhcdTc1NjRcdTc1NjNcdTc1Y2VcdTc1ZDJcdTc1Y2Zc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc1Y2JcdTc1Y2NcdTc1ZDFcdTc1ZDBcdTc2OGZcdTc2ODlcdTc2ZDNcdTc3MzlcdTc3MmZcdTc3MmRcdTc3MzFcdTc3MzJcdTc3MzRcdTc3MzNcdTc3M2RcdTc3MjVcdTc3M2JcdTc3MzVcdTc4NDhcdTc4NTJcdTc4NDlc''@;'; put 'put ''dTc4NGRcdTc4NGFcdTc4NGNcdTc4MjZcdTc4NDVcdTc4NTBcdTc5NjRcdTc5NjdcdTc5NjlcdTc5NmFcdTc5NjNcdTc5NmJcdTc5NjFcdTc5YmJcdTc5ZmFcdTc5ZjhcdTc5ZjZcdTc5ZjdcdTdhOGZcdTdhOTRcdTdhOTBcdTdiMzVcdTdiNDdcdTdiMzRcdTdiMjVcdTdiMzBcdTdiMjJcdTdi''@;'; put 'put ''MjRcdTdiMzNcdTdiMThcdTdiMmFcdTdiMWRcdTdiMzFcdTdiMmJcdTdiMmRcdTdiMmZcdTdiMzJcdTdiMzhcdTdiMWFcdTdiMjNcdTdjOTRcdTdjOThcdTdjOTZcdTdjYTNcdTdkMzVcdTdkM2RcdTdkMzhcdTdkMzZcdTdkM2FcdTdkNDVcdTdkMmNcdTdkMjlcdTdkNDFcdTdkNDdcdTdkM2Vc''@;'; put 'put ''dTdkM2ZcdTdkNGFcdTdkM2JcdTdkMjhcdTdmNjNcdTdmOTVcdTdmOWNcdTdmOWRcdTdmOWJcdTdmY2FcdTdmY2JcdTdmY2RcdTdmZDBcdTdmZDFcdTdmYzdcdTdmY2ZcdTdmYzlcdTgwMWZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxNF1b''@;'; put 'put ''RV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjE0XVtFXV09NTQ3ODQrRSxMWzU0Nzg0K0VdPUJbMjE0XVtFXSk7Zm9yKEJbMjE1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MDFlXHU4MDFiXHU4MDQ3XHU4MDQzXHU4MDQ4XHU4MTE4''@;'; put 'put ''XHU4MTI1XHU4MTE5XHU4MTFiXHU4MTJkXHU4MTFmXHU4MTJjXHU4MTFlXHU4MTIxXHU4MTE1XHU4MTI3XHU4MTFkXHU4MTIyXHU4MjExXHU4MjM4XHU4MjMzXHU4MjNhXHU4MjM0XHU4MjMyXHU4Mjc0XHU4MzkwXHU4M2EzXHU4M2E4XHU4MzhkXHU4MzdhXHU4MzczXHU4M2E0XHU4Mzc0XHU4''@;'; put 'put ''MzhmXHU4MzgxXHU4Mzk1XHU4Mzk5XHU4Mzc1XHU4Mzk0XHU4M2E5XHU4MzdkXHU4MzgzXHU4MzhjXHU4MzlkXHU4MzliXHU4M2FhXHU4MzhiXHU4MzdlXHU4M2E1XHU4M2FmXHU4Mzg4XHU4Mzk3XHU4M2IwXHU4MzdmXHU4M2E2XHU4Mzg3XHU4M2FlXHU4Mzc2XHU4MzlhXHU4NjU5XHU4NjU2''@;'; put 'put ''XHU4NmJmXHU4NmI3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NmMyXHU4NmMxXHU4NmM1XHU4NmJhXHU4NmIwXHU4NmM4XHU4NmI5XHU4NmIzXHU4NmI4XHU4NmNjXHU4NmI0XHU4NmJiXHU4NmJjXHU4NmMzXHU4NmJkXHU4NmJlXHU4ODUyXHU4ODg5XHU4ODk1''@;'; put 'put ''XHU4OGE4XHU4OGEyXHU4OGFhXHU4ODlhXHU4ODkxXHU4OGExXHU4ODlmXHU4ODk4XHU4OGE3XHU4ODk5XHU4ODliXHU4ODk3XHU4OGE0XHU4OGFjXHU4ODhjXHU4ODkzXHU4ODhlXHU4OTgyXHU4OWQ2XHU4OWQ5XHU4OWQ1XHU4YTMwXHU4YTI3XHU4YTJjXHU4YTFlXHU4YzM5XHU4YzNiXHU4''@;'; put 'put ''YzVjXHU4YzVkXHU4YzdkXHU4Y2E1XHU4ZDdkXHU4ZDdiXHU4ZDc5XHU4ZGJjXHU4ZGMyXHU4ZGI5XHU4ZGJmXHU4ZGMxXHU4ZWQ4XHU4ZWRlXHU4ZWRkXHU4ZWRjXHU4ZWQ3XHU4ZWUwXHU4ZWUxXHU5MDI0XHU5MDBiXHU5MDExXHU5MDFjXHU5MDBjXHU5MDIxXHU5MGVmXHU5MGVhXHU5MGYw''@;'; put 'put ''XHU5MGY0XHU5MGYyXHU5MGYzXHU5MGQ0XHU5MGViXHU5MGVjXHU5MGU5XHU5MTU2XHU5MTU4XHU5MTVhXHU5MTUzXHU5MTU1XHU5MWVjXHU5MWY0XHU5MWYxXHU5MWYzXHU5MWY4XHU5MWU0XHU5MWY5XHU5MWVhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjE1XS5sZW5ndGg7KytFKTY1''@;'; put 'put ''NTMzIT09QlsyMTVdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIxNV1bRV1dPTU1MDQwK0UsTFs1NTA0MCtFXT1CWzIxNV1bRV0pO2ZvcihCWzIxNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTFlYlx1OTFmN1x1OTFlOFx1OTFl''@;'; put 'put ''ZVx1OTU3YVx1OTU4Nlx1OTU4OFx1OTY3Y1x1OTY2ZFx1OTY2Ylx1OTY3MVx1OTY2Zlx1OTZiZlx1OTc2YVx1OTgwNFx1OThlNVx1OTk5N1x1NTA5Ylx1NTA5NVx1NTA5NFx1NTA5ZVx1NTA4Ylx1NTBhM1x1NTA4M1x1NTA4Y1x1NTA4ZVx1NTA5ZFx1NTA2OFx1NTA5Y1x1NTA5Mlx1NTA4Mlx1''@;'; put 'put ''NTA4N1x1NTE1Zlx1NTFkNFx1NTMxMlx1NTMxMVx1NTNhNFx1NTNhN1x1NTU5MVx1NTVhOFx1NTVhNVx1NTVhZFx1NTU3N1x1NTY0NVx1NTVhMlx1NTU5M1x1NTU4OFx1NTU4Zlx1NTViNVx1NTU4MVx1NTVhM1x1NTU5Mlx1NTVhNFx1NTU3ZFx1NTU4Y1x1NTVhNlx1NTU3Zlx1NTU5NVx1NTVh''@;'; put 'put ''MVx1NTU4ZVx1NTcwY1x1NTgyOVx1NTgzN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTgxOVx1NTgxZVx1NTgyN1x1NTgyM1x1NTgyOFx1NTdmNVx1NTg0OFx1NTgyNVx1NTgxY1x1NTgxYlx1NTgzM1x1NTgzZlx1NTgzNlx1NTgyZVx1NTgzOVx1NTgzOFx1NTgy''@;'; put 'put ''ZFx1NTgyY1x1NTgzYlx1NTk2MVx1NWFhZlx1NWE5NFx1NWE5Zlx1NWE3YVx1NWFhMlx1NWE5ZVx1NWE3OFx1NWFhNlx1NWE3Y1x1NWFhNVx1NWFhY1x1NWE5NVx1NWFhZVx1NWEzN1x1NWE4NFx1NWE4YVx1NWE5N1x1NWE4M1x1NWE4Ylx1NWFhOVx1NWE3Ylx1NWE3ZFx1NWE4Y1x1NWE5Y1x1''@;'; put 'put ''NWE4Zlx1NWE5M1x1NWE5ZFx1NWJlYVx1NWJjZFx1NWJjYlx1NWJkNFx1NWJkMVx1NWJjYVx1NWJjZVx1NWMwY1x1NWMzMFx1NWQzN1x1NWQ0M1x1NWQ2Ylx1NWQ0MVx1NWQ0Ylx1NWQzZlx1NWQzNVx1NWQ1MVx1NWQ0ZVx1NWQ1NVx1NWQzM1x1NWQzYVx1NWQ1Mlx1NWQzZFx1NWQzMVx1NWQ1''@;'; put 'put ''OVx1NWQ0Mlx1NWQzOVx1NWQ0OVx1NWQzOFx1NWQzY1x1NWQzMlx1NWQzNlx1NWQ0MFx1NWQ0NVx1NWU0NFx1NWU0MVx1NWY1OFx1NWZhNlx1NWZhNVx1NWZhYlx1NjBjOVx1NjBiOVx1NjBjY1x1NjBlMlx1NjBjZVx1NjBjNFx1NjExNFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxNl0u''@;'; put 'put ''bGVuZ3RoOysrRSk2NTUzMyE9PUJbMjE2XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMTZdW0VdXT01NTI5NitFLExbNTUyOTYrRV09QlsyMTZdW0VdKTtmb3IoQlsyMTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYwZjJcdTYx''@;'; put 'put ''MGFcdTYxMTZcdTYxMDVcdTYwZjVcdTYxMTNcdTYwZjhcdTYwZmNcdTYwZmVcdTYwYzFcdTYxMDNcdTYxMThcdTYxMWRcdTYxMTBcdTYwZmZcdTYxMDRcdTYxMGJcdTYyNGFcdTYzOTRcdTYzYjFcdTYzYjBcdTYzY2VcdTYzZTVcdTYzZThcdTYzZWZcdTYzYzNcdTY0OWRcdTYzZjNcdTYzY2Fc''@;'; put 'put ''dTYzZTBcdTYzZjZcdTYzZDVcdTYzZjJcdTYzZjVcdTY0NjFcdTYzZGZcdTYzYmVcdTYzZGRcdTYzZGNcdTYzYzRcdTYzZDhcdTYzZDNcdTYzYzJcdTYzYzdcdTYzY2NcdTYzY2JcdTYzYzhcdTYzZjBcdTYzZDdcdTYzZDlcdTY1MzJcdTY1NjdcdTY1NmFcdTY1NjRcdTY1NWNcdTY1NjhcdTY1''@;'; put 'put ''NjVcdTY1OGNcdTY1OWRcdTY1OWVcdTY1YWVcdTY1ZDBcdTY1ZDJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY2N2NcdTY2NmNcdTY2N2JcdTY2ODBcdTY2NzFcdTY2NzlcdTY2NmFcdTY2NzJcdTY3MDFcdTY5MGNcdTY4ZDNcdTY5MDRcdTY4ZGNcdTY5MmFcdTY4''@;'; put 'put ''ZWNcdTY4ZWFcdTY4ZjFcdTY5MGZcdTY4ZDZcdTY4ZjdcdTY4ZWJcdTY4ZTRcdTY4ZjZcdTY5MTNcdTY5MTBcdTY4ZjNcdTY4ZTFcdTY5MDdcdTY4Y2NcdTY5MDhcdTY5NzBcdTY4YjRcdTY5MTFcdTY4ZWZcdTY4YzZcdTY5MTRcdTY4ZjhcdTY4ZDBcdTY4ZmRcdTY4ZmNcdTY4ZThcdTY5MGJc''@;'; put 'put ''dTY5MGFcdTY5MTdcdTY4Y2VcdTY4YzhcdTY4ZGRcdTY4ZGVcdTY4ZTZcdTY4ZjRcdTY4ZDFcdTY5MDZcdTY4ZDRcdTY4ZTlcdTY5MTVcdTY5MjVcdTY4YzdcdTZiMzlcdTZiM2JcdTZiM2ZcdTZiM2NcdTZiOTRcdTZiOTdcdTZiOTlcdTZiOTVcdTZiYmRcdTZiZjBcdTZiZjJcdTZiZjNcdTZj''@;'; put 'put ''MzBcdTZkZmNcdTZlNDZcdTZlNDdcdTZlMWZcdTZlNDlcdTZlODhcdTZlM2NcdTZlM2RcdTZlNDVcdTZlNjJcdTZlMmJcdTZlM2ZcdTZlNDFcdTZlNWRcdTZlNzNcdTZlMWNcdTZlMzNcdTZlNGJcdTZlNDBcdTZlNTFcdTZlM2JcdTZlMDNcdTZlMmVcdTZlNWVcdWZmZmQiLnNwbGl0KCIiKSxF''@;'; put 'put ''PTA7RSE9QlsyMTddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxN11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjE3XVtFXV09NTU1NTIrRSxMWzU1NTUyK0VdPUJbMjE3XVtFXSk7Zm9yKEJbMjE4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHU2ZTY4XHU2ZTVjXHU2ZTYxXHU2ZTMxXHU2ZTI4XHU2ZTYwXHU2ZTcxXHU2ZTZiXHU2ZTM5XHU2ZTIyXHU2ZTMwXHU2ZTUzXHU2ZTY1XHU2ZTI3XHU2ZTc4XHU2ZTY0XHU2ZTc3XHU2ZTU1XHU2ZTc5XHU2ZTUyXHU2ZTY2XHU2ZTM1XHU2ZTM2XHU2ZTVhXHU3MTIwXHU3MTFlXHU3MTJm''@;'; put 'put ''XHU3MGZiXHU3MTJlXHU3MTMxXHU3MTIzXHU3MTI1XHU3MTIyXHU3MTMyXHU3MTFmXHU3MTI4XHU3MTNhXHU3MTFiXHU3MjRiXHU3MjVhXHU3Mjg4XHU3Mjg5XHU3Mjg2XHU3Mjg1XHU3MjhiXHU3MzEyXHU3MzBiXHU3MzMwXHU3MzIyXHU3MzMxXHU3MzMzXHU3MzI3XHU3MzMyXHU3MzJkXHU3''@;'; put 'put ''MzI2XHU3MzIzXHU3MzM1XHU3MzBjXHU3NDJlXHU3NDJjXHU3NDMwXHU3NDJiXHU3NDE2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NDFhXHU3NDIxXHU3NDJkXHU3NDMxXHU3NDI0XHU3NDIzXHU3NDFkXHU3NDI5XHU3NDIwXHU3NDMyXHU3NGZiXHU3NTJmXHU3''@;'; put 'put ''NTZmXHU3NTZjXHU3NWU3XHU3NWRhXHU3NWUxXHU3NWU2XHU3NWRkXHU3NWRmXHU3NWU0XHU3NWQ3XHU3Njk1XHU3NjkyXHU3NmRhXHU3NzQ2XHU3NzQ3XHU3NzQ0XHU3NzRkXHU3NzQ1XHU3NzRhXHU3NzRlXHU3NzRiXHU3NzRjXHU3N2RlXHU3N2VjXHU3ODYwXHU3ODY0XHU3ODY1XHU3ODVj''@;'; put 'put ''XHU3ODZkXHU3ODcxXHU3ODZhXHU3ODZlXHU3ODcwXHU3ODY5XHU3ODY4XHU3ODVlXHU3ODYyXHU3OTc0XHU3OTczXHU3OTcyXHU3OTcwXHU3YTAyXHU3YTBhXHU3YTAzXHU3YTBjXHU3YTA0XHU3YTk5XHU3YWU2XHU3YWU0XHU3YjRhXHU3YjNiXHU3YjQ0XHU3YjQ4XHU3YjRjXHU3YjRlXHU3''@;'; put 'put ''YjQwXHU3YjU4XHU3YjQ1XHU3Y2EyXHU3YzllXHU3Y2E4XHU3Y2ExXHU3ZDU4XHU3ZDZmXHU3ZDYzXHU3ZDUzXHU3ZDU2XHU3ZDY3XHU3ZDZhXHU3ZDRmXHU3ZDZkXHU3ZDVjXHU3ZDZiXHU3ZDUyXHU3ZDU0XHU3ZDY5XHU3ZDUxXHU3ZDVmXHU3ZDRlXHU3ZjNlXHU3ZjNmXHU3ZjY1XHVmZmZk''@;'; put 'put ''Ii5zcGxpdCgiIiksRT0wO0UhPUJbMjE4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMThdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIxOF1bRV1dPTU1ODA4K0UsTFs1NTgwOCtFXT1CWzIxOF1bRV0pO2ZvcihCWzIxOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1N2Y2Nlx1N2ZhMlx1N2ZhMFx1N2ZhMVx1N2ZkN1x1ODA1MVx1ODA0Zlx1ODA1MFx1ODBmZVx1ODBkNFx1ODE0M1x1ODE0YVx1ODE1Mlx1ODE0Zlx1ODE0N1x1ODEzZFx1ODE0ZFx1ODEzYVx1ODFlNlx1ODFlZVx1ODFmN1x1ODFmOFx1ODFmOVx1ODIwNFx1ODIz''@;'; put 'put ''Y1x1ODIzZFx1ODIzZlx1ODI3NVx1ODMzYlx1ODNjZlx1ODNmOVx1ODQyM1x1ODNjMFx1ODNlOFx1ODQxMlx1ODNlN1x1ODNlNFx1ODNmY1x1ODNmNlx1ODQxMFx1ODNjNlx1ODNjOFx1ODNlYlx1ODNlM1x1ODNiZlx1ODQwMVx1ODNkZFx1ODNlNVx1ODNkOFx1ODNmZlx1ODNlMVx1ODNjYlx1''@;'; put 'put ''ODNjZVx1ODNkNlx1ODNmNVx1ODNjOVx1ODQwOVx1ODQwZlx1ODNkZVx1ODQxMVx1ODQwNlx1ODNjMlx1ODNmM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODNkNVx1ODNmYVx1ODNjN1x1ODNkMVx1ODNlYVx1ODQxM1x1ODNjM1x1ODNlY1x1ODNlZVx1ODNjNFx1''@;'; put 'put ''ODNmYlx1ODNkN1x1ODNlMlx1ODQxYlx1ODNkYlx1ODNmZVx1ODZkOFx1ODZlMlx1ODZlNlx1ODZkM1x1ODZlM1x1ODZkYVx1ODZlYVx1ODZkZFx1ODZlYlx1ODZkY1x1ODZlY1x1ODZlOVx1ODZkN1x1ODZlOFx1ODZkMVx1ODg0OFx1ODg1Nlx1ODg1NVx1ODhiYVx1ODhkN1x1ODhiOVx1ODhi''@;'; put 'put ''OFx1ODhjMFx1ODhiZVx1ODhiNlx1ODhiY1x1ODhiN1x1ODhiZFx1ODhiMlx1ODkwMVx1ODhjOVx1ODk5NVx1ODk5OFx1ODk5N1x1ODlkZFx1ODlkYVx1ODlkYlx1OGE0ZVx1OGE0ZFx1OGEzOVx1OGE1OVx1OGE0MFx1OGE1N1x1OGE1OFx1OGE0NFx1OGE0NVx1OGE1Mlx1OGE0OFx1OGE1MVx1''@;'; put 'put ''OGE0YVx1OGE0Y1x1OGE0Zlx1OGM1Zlx1OGM4MVx1OGM4MFx1OGNiYVx1OGNiZVx1OGNiMFx1OGNiOVx1OGNiNVx1OGQ4NFx1OGQ4MFx1OGQ4OVx1OGRkOFx1OGRkM1x1OGRjZFx1OGRjN1x1OGRkNlx1OGRkY1x1OGRjZlx1OGRkNVx1OGRkOVx1OGRjOFx1OGRkN1x1OGRjNVx1OGVlZlx1OGVm''@;'; put 'put ''N1x1OGVmYVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxOV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjE5XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMTldW0VdXT01NjA2NCtFLExbNTYwNjQrRV09QlsyMTldW0VdKTtmb3IoQlsyMjBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThlZjlcdThlZTZcdThlZWVcdThlZTVcdThlZjVcdThlZTdcdThlZThcdThlZjZcdThlZWJcdThlZjFcdThlZWNcdThlZjRcdThlZTlcdTkwMmRcdTkwMzRcdTkwMmZcdTkxMDZcdTkxMmNcdTkxMDRcdTkwZmZcdTkwZmNcdTkxMDhcdTkw''@;'; put 'put ''ZjlcdTkwZmJcdTkxMDFcdTkxMDBcdTkxMDdcdTkxMDVcdTkxMDNcdTkxNjFcdTkxNjRcdTkxNWZcdTkxNjJcdTkxNjBcdTkyMDFcdTkyMGFcdTkyMjVcdTkyMDNcdTkyMWFcdTkyMjZcdTkyMGZcdTkyMGNcdTkyMDBcdTkyMTJcdTkxZmZcdTkxZmRcdTkyMDZcdTkyMDRcdTkyMjdcdTkyMDJc''@;'; put 'put ''dTkyMWNcdTkyMjRcdTkyMTlcdTkyMTdcdTkyMDVcdTkyMTZcdTk1N2JcdTk1OGRcdTk1OGNcdTk1OTBcdTk2ODdcdTk2N2VcdTk2ODhcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk2ODlcdTk2ODNcdTk2ODBcdTk2YzJcdTk2YzhcdTk2YzNcdTk2ZjFcdTk2ZjBc''@;'; put 'put ''dTk3NmNcdTk3NzBcdTk3NmVcdTk4MDdcdTk4YTlcdTk4ZWJcdTljZTZcdTllZjlcdTRlODNcdTRlODRcdTRlYjZcdTUwYmRcdTUwYmZcdTUwYzZcdTUwYWVcdTUwYzRcdTUwY2FcdTUwYjRcdTUwYzhcdTUwYzJcdTUwYjBcdTUwYzFcdTUwYmFcdTUwYjFcdTUwY2JcdTUwYzlcdTUwYjZcdTUw''@;'; put 'put ''YjhcdTUxZDdcdTUyN2FcdTUyNzhcdTUyN2JcdTUyN2NcdTU1YzNcdTU1ZGJcdTU1Y2NcdTU1ZDBcdTU1Y2JcdTU1Y2FcdTU1ZGRcdTU1YzBcdTU1ZDRcdTU1YzRcdTU1ZTlcdTU1YmZcdTU1ZDJcdTU1OGRcdTU1Y2ZcdTU1ZDVcdTU1ZTJcdTU1ZDZcdTU1YzhcdTU1ZjJcdTU1Y2RcdTU1ZDlc''@;'; put 'put ''dTU1YzJcdTU3MTRcdTU4NTNcdTU4NjhcdTU4NjRcdTU4NGZcdTU4NGRcdTU4NDlcdTU4NmZcdTU4NTVcdTU4NGVcdTU4NWRcdTU4NTlcdTU4NjVcdTU4NWJcdTU4M2RcdTU4NjNcdTU4NzFcdTU4ZmNcdTVhYzdcdTVhYzRcdTVhY2JcdTVhYmFcdTVhYjhcdTVhYjFcdTVhYjVcdTVhYjBcdTVh''@;'; put 'put ''YmZcdTVhYzhcdTVhYmJcdTVhYzZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyMF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjIwXVtFXV09NTYzMjArRSxMWzU2MzIwK0VdPUJbMjIwXVtFXSk7Zm9yKEJbMjIxXT0iXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YWI3XHU1YWMwXHU1YWNhXHU1YWI0XHU1YWI2XHU1YWNkXHU1YWI5XHU1YTkwXHU1YmQ2XHU1YmQ4XHU1YmQ5XHU1YzFmXHU1YzMzXHU1ZDcxXHU1ZDYzXHU1ZDRhXHU1ZDY1XHU1ZDcyXHU1ZDZjXHU1ZDVlXHU1''@;'; put 'put ''ZDY4XHU1ZDY3XHU1ZDYyXHU1ZGYwXHU1ZTRmXHU1ZTRlXHU1ZTRhXHU1ZTRkXHU1ZTRiXHU1ZWM1XHU1ZWNjXHU1ZWM2XHU1ZWNiXHU1ZWM3XHU1ZjQwXHU1ZmFmXHU1ZmFkXHU2MGY3XHU2MTQ5XHU2MTRhXHU2MTJiXHU2MTQ1XHU2MTM2XHU2MTMyXHU2MTJlXHU2MTQ2XHU2MTJmXHU2MTRm''@;'; put 'put ''XHU2MTI5XHU2MTQwXHU2MjIwXHU5MTY4XHU2MjIzXHU2MjI1XHU2MjI0XHU2M2M1XHU2M2YxXHU2M2ViXHU2NDEwXHU2NDEyXHU2NDA5XHU2NDIwXHU2NDI0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NDMzXHU2NDQzXHU2NDFmXHU2NDE1XHU2NDE4XHU2NDM5''@;'; put 'put ''XHU2NDM3XHU2NDIyXHU2NDIzXHU2NDBjXHU2NDI2XHU2NDMwXHU2NDI4XHU2NDQxXHU2NDM1XHU2NDJmXHU2NDBhXHU2NDFhXHU2NDQwXHU2NDI1XHU2NDI3XHU2NDBiXHU2M2U3XHU2NDFiXHU2NDJlXHU2NDIxXHU2NDBlXHU2NTZmXHU2NTkyXHU2NWQzXHU2Njg2XHU2NjhjXHU2Njk1XHU2''@;'; put 'put ''NjkwXHU2NjhiXHU2NjhhXHU2Njk5XHU2Njk0XHU2Njc4XHU2NzIwXHU2OTY2XHU2OTVmXHU2OTM4XHU2OTRlXHU2OTYyXHU2OTcxXHU2OTNmXHU2OTQ1XHU2OTZhXHU2OTM5XHU2OTQyXHU2OTU3XHU2OTU5XHU2OTdhXHU2OTQ4XHU2OTQ5XHU2OTM1XHU2OTZjXHU2OTMzXHU2OTNkXHU2OTY1''@;'; put 'put ''XHU2OGYwXHU2OTc4XHU2OTM0XHU2OTY5XHU2OTQwXHU2OTZmXHU2OTQ0XHU2OTc2XHU2OTU4XHU2OTQxXHU2OTc0XHU2OTRjXHU2OTNiXHU2OTRiXHU2OTM3XHU2OTVjXHU2OTRmXHU2OTUxXHU2OTMyXHU2OTUyXHU2OTJmXHU2OTdiXHU2OTNjXHU2YjQ2XHU2YjQ1XHU2YjQzXHU2YjQyXHU2''@;'; put 'put ''YjQ4XHU2YjQxXHU2YjliXHVmYTBkXHU2YmZiXHU2YmZjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjIxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjFdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIyMV1bRV1dPTU2NTc2K0UsTFs1NjU3NitFXT1CWzIyMV1bRV0pO2ZvcihCWzIyMl09''@;'; put 'put ''Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmJmOVx1NmJmN1x1NmJmOFx1NmU5Ylx1NmVkNlx1NmVjOFx1NmU4Zlx1NmVjMFx1NmU5Zlx1NmU5M1x1NmU5NFx1NmVhMFx1NmViMVx1NmViOVx1NmVjNlx1NmVkMlx1NmViZFx1NmVjMVx1''@;'; put 'put ''NmU5ZVx1NmVjOVx1NmViN1x1NmViMFx1NmVjZFx1NmVhNlx1NmVjZlx1NmViMlx1NmViZVx1NmVjM1x1NmVkY1x1NmVkOFx1NmU5OVx1NmU5Mlx1NmU4ZVx1NmU4ZFx1NmVhNFx1NmVhMVx1NmViZlx1NmViM1x1NmVkMFx1NmVjYVx1NmU5N1x1NmVhZVx1NmVhM1x1NzE0N1x1NzE1NFx1NzE1''@;'; put 'put ''Mlx1NzE2M1x1NzE2MFx1NzE0MVx1NzE1ZFx1NzE2Mlx1NzE3Mlx1NzE3OFx1NzE2YVx1NzE2MVx1NzE0Mlx1NzE1OFx1NzE0M1x1NzE0Ylx1NzE3MFx1NzE1Zlx1NzE1MFx1NzE1M1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzE0NFx1NzE0ZFx1NzE1YVx1NzI0''@;'; put 'put ''Zlx1NzI4ZFx1NzI4Y1x1NzI5MVx1NzI5MFx1NzI4ZVx1NzMzY1x1NzM0Mlx1NzMzYlx1NzMzYVx1NzM0MFx1NzM0YVx1NzM0OVx1NzQ0NFx1NzQ0YVx1NzQ0Ylx1NzQ1Mlx1NzQ1MVx1NzQ1N1x1NzQ0MFx1NzQ0Zlx1NzQ1MFx1NzQ0ZVx1NzQ0Mlx1NzQ0Nlx1NzQ0ZFx1NzQ1NFx1NzRlMVx1''@;'; put 'put ''NzRmZlx1NzRmZVx1NzRmZFx1NzUxZFx1NzU3OVx1NzU3N1x1Njk4M1x1NzVlZlx1NzYwZlx1NzYwM1x1NzVmN1x1NzVmZVx1NzVmY1x1NzVmOVx1NzVmOFx1NzYxMFx1NzVmYlx1NzVmNlx1NzVlZFx1NzVmNVx1NzVmZFx1NzY5OVx1NzZiNVx1NzZkZFx1Nzc1NVx1Nzc1Zlx1Nzc2MFx1Nzc1''@;'; put 'put ''Mlx1Nzc1Nlx1Nzc1YVx1Nzc2OVx1Nzc2N1x1Nzc1NFx1Nzc1OVx1Nzc2ZFx1NzdlMFx1Nzg4N1x1Nzg5YVx1Nzg5NFx1Nzg4Zlx1Nzg4NFx1Nzg5NVx1Nzg4NVx1Nzg4Nlx1NzhhMVx1Nzg4M1x1Nzg3OVx1Nzg5OVx1Nzg4MFx1Nzg5Nlx1Nzg3Ylx1Nzk3Y1x1Nzk4Mlx1Nzk3ZFx1Nzk3OVx1''@;'; put 'put ''N2ExMVx1N2ExOFx1N2ExOVx1N2ExMlx1N2ExN1x1N2ExNVx1N2EyMlx1N2ExM1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyMl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjIyXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMjJdW0VdXT01NjgzMitFLExbNTY4MzIrRV09QlsyMjJdW0Vd''@;'; put 'put ''KTtmb3IoQlsyMjNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhMWJcdTdhMTBcdTdhYTNcdTdhYTJcdTdhOWVcdTdhZWJcdTdiNjZcdTdiNjRcdTdiNmRcdTdiNzRcdTdiNjlcdTdiNzJcdTdiNjVcdTdiNzNcdTdiNzFcdTdiNzBc''@;'; put 'put ''dTdiNjFcdTdiNzhcdTdiNzZcdTdiNjNcdTdjYjJcdTdjYjRcdTdjYWZcdTdkODhcdTdkODZcdTdkODBcdTdkOGRcdTdkN2ZcdTdkODVcdTdkN2FcdTdkOGVcdTdkN2JcdTdkODNcdTdkN2NcdTdkOGNcdTdkOTRcdTdkODRcdTdkN2RcdTdkOTJcdTdmNmRcdTdmNmJcdTdmNjdcdTdmNjhcdTdm''@;'; put 'put ''NmNcdTdmYTZcdTdmYTVcdTdmYTdcdTdmZGJcdTdmZGNcdTgwMjFcdTgxNjRcdTgxNjBcdTgxNzdcdTgxNWNcdTgxNjlcdTgxNWJcdTgxNjJcdTgxNzJcdTY3MjFcdTgxNWVcdTgxNzZcdTgxNjdcdTgxNmZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgxNDRcdTgx''@;'; put 'put ''NjFcdTgyMWRcdTgyNDlcdTgyNDRcdTgyNDBcdTgyNDJcdTgyNDVcdTg0ZjFcdTg0M2ZcdTg0NTZcdTg0NzZcdTg0NzlcdTg0OGZcdTg0OGRcdTg0NjVcdTg0NTFcdTg0NDBcdTg0ODZcdTg0NjdcdTg0MzBcdTg0NGRcdTg0N2RcdTg0NWFcdTg0NTlcdTg0NzRcdTg0NzNcdTg0NWRcdTg1MDdc''@;'; put 'put ''dTg0NWVcdTg0MzdcdTg0M2FcdTg0MzRcdTg0N2FcdTg0NDNcdTg0NzhcdTg0MzJcdTg0NDVcdTg0MjlcdTgzZDlcdTg0NGJcdTg0MmZcdTg0NDJcdTg0MmRcdTg0NWZcdTg0NzBcdTg0MzlcdTg0NGVcdTg0NGNcdTg0NTJcdTg0NmZcdTg0YzVcdTg0OGVcdTg0M2JcdTg0NDdcdTg0MzZcdTg0''@;'; put 'put ''MzNcdTg0NjhcdTg0N2VcdTg0NDRcdTg0MmJcdTg0NjBcdTg0NTRcdTg0NmVcdTg0NTBcdTg3MGJcdTg3MDRcdTg2ZjdcdTg3MGNcdTg2ZmFcdTg2ZDZcdTg2ZjVcdTg3NGRcdTg2ZjhcdTg3MGVcdTg3MDlcdTg3MDFcdTg2ZjZcdTg3MGRcdTg3MDVcdTg4ZDZcdTg4Y2JcdTg4Y2RcdTg4Y2Vc''@;'; put 'put ''dTg4ZGVcdTg4ZGJcdTg4ZGFcdTg4Y2NcdTg4ZDBcdTg5ODVcdTg5OWJcdTg5ZGZcdTg5ZTVcdTg5ZTRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyM11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjIzXVtFXV09NTcwODgrRSxMWzU3MDg4''@;'; put 'put ''K0VdPUJbMjIzXVtFXSk7Zm9yKEJbMjI0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4OWUxXHU4OWUwXHU4OWUyXHU4OWRjXHU4OWU2XHU4YTc2XHU4YTg2XHU4YTdmXHU4YTYxXHU4YTNmXHU4YTc3XHU4YTgyXHU4YTg0XHU4YTc1''@;'; put 'put ''XHU4YTgzXHU4YTgxXHU4YTc0XHU4YTdhXHU4YzNjXHU4YzRiXHU4YzRhXHU4YzY1XHU4YzY0XHU4YzY2XHU4Yzg2XHU4Yzg0XHU4Yzg1XHU4Y2NjXHU4ZDY4XHU4ZDY5XHU4ZDkxXHU4ZDhjXHU4ZDhlXHU4ZDhmXHU4ZDhkXHU4ZDkzXHU4ZDk0XHU4ZDkwXHU4ZDkyXHU4ZGYwXHU4ZGUwXHU4''@;'; put 'put ''ZGVjXHU4ZGYxXHU4ZGVlXHU4ZGQwXHU4ZGU5XHU4ZGUzXHU4ZGUyXHU4ZGU3XHU4ZGYyXHU4ZGViXHU4ZGY0XHU4ZjA2XHU4ZWZmXHU4ZjAxXHU4ZjAwXHU4ZjA1XHU4ZjA3XHU4ZjA4XHU4ZjAyXHU4ZjBiXHU5MDUyXHU5MDNmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHU5MDQ0XHU5MDQ5XHU5MDNkXHU5MTEwXHU5MTBkXHU5MTBmXHU5MTExXHU5MTE2XHU5MTE0XHU5MTBiXHU5MTBlXHU5MTZlXHU5MTZmXHU5MjQ4XHU5MjUyXHU5MjMwXHU5MjNhXHU5MjY2XHU5MjMzXHU5MjY1XHU5MjVlXHU5MjgzXHU5MjJlXHU5MjRhXHU5MjQ2XHU5MjZkXHU5MjZj''@;'; put 'put ''XHU5MjRmXHU5MjYwXHU5MjY3XHU5MjZmXHU5MjM2XHU5MjYxXHU5MjcwXHU5MjMxXHU5MjU0XHU5MjYzXHU5MjUwXHU5MjcyXHU5MjRlXHU5MjUzXHU5MjRjXHU5MjU2XHU5MjMyXHU5NTlmXHU5NTljXHU5NTllXHU5NTliXHU5NjkyXHU5NjkzXHU5NjkxXHU5Njk3XHU5NmNlXHU5NmZhXHU5''@;'; put 'put ''NmZkXHU5NmY4XHU5NmY1XHU5NzczXHU5Nzc3XHU5Nzc4XHU5NzcyXHU5ODBmXHU5ODBkXHU5ODBlXHU5OGFjXHU5OGY2XHU5OGY5XHU5OWFmXHU5OWIyXHU5OWIwXHU5OWI1XHU5YWFkXHU5YWFiXHU5YjViXHU5Y2VhXHU5Y2VkXHU5Y2U3XHU5ZTgwXHU5ZWZkXHU1MGU2XHU1MGQ0XHU1MGQ3''@;'; put 'put ''XHU1MGU4XHU1MGYzXHU1MGRiXHU1MGVhXHU1MGRkXHU1MGU0XHU1MGQzXHU1MGVjXHU1MGYwXHU1MGVmXHU1MGUzXHU1MGUwXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjI0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjRdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIyNF1bRV1dPTU3''@;'; put 'put ''MzQ0K0UsTFs1NzM0NCtFXT1CWzIyNF1bRV0pO2ZvcihCWzIyNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTFkOFx1NTI4MFx1NTI4MVx1NTJlOVx1NTJlYlx1NTMzMFx1NTNhY1x1NTYyN1x1NTYxNVx1NTYwY1x1NTYxMlx1NTVm''@;'; put 'put ''Y1x1NTYwZlx1NTYxY1x1NTYwMVx1NTYxM1x1NTYwMlx1NTVmYVx1NTYxZFx1NTYwNFx1NTVmZlx1NTVmOVx1NTg4OVx1NTg3Y1x1NTg5MFx1NTg5OFx1NTg4Nlx1NTg4MVx1NTg3Zlx1NTg3NFx1NTg4Ylx1NTg3YVx1NTg4N1x1NTg5MVx1NTg4ZVx1NTg3Nlx1NTg4Mlx1NTg4OFx1NTg3Ylx1''@;'; put 'put ''NTg5NFx1NTg4Zlx1NThmZVx1NTk2Ylx1NWFkY1x1NWFlZVx1NWFlNVx1NWFkNVx1NWFlYVx1NWFkYVx1NWFlZFx1NWFlYlx1NWFmM1x1NWFlMlx1NWFlMFx1NWFkYlx1NWFlY1x1NWFkZVx1NWFkZFx1NWFkOVx1NWFlOFx1NWFkZlx1NWI3N1x1NWJlMFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1NWJlM1x1NWM2M1x1NWQ4Mlx1NWQ4MFx1NWQ3ZFx1NWQ4Nlx1NWQ3YVx1NWQ4MVx1NWQ3N1x1NWQ4YVx1NWQ4OVx1NWQ4OFx1NWQ3ZVx1NWQ3Y1x1NWQ4ZFx1NWQ3OVx1NWQ3Zlx1NWU1OFx1NWU1OVx1NWU1M1x1NWVkOFx1NWVkMVx1NWVkN1x1NWVjZVx1NWVk''@;'; put 'put ''Y1x1NWVkNVx1NWVkOVx1NWVkMlx1NWVkNFx1NWY0NFx1NWY0M1x1NWY2Zlx1NWZiNlx1NjEyY1x1NjEyOFx1NjE0MVx1NjE1ZVx1NjE3MVx1NjE3M1x1NjE1Mlx1NjE1M1x1NjE3Mlx1NjE2Y1x1NjE4MFx1NjE3NFx1NjE1NFx1NjE3YVx1NjE1Ylx1NjE2NVx1NjEzYlx1NjE2YVx1NjE2MVx1''@;'; put 'put ''NjE1Nlx1NjIyOVx1NjIyN1x1NjIyYlx1NjQyYlx1NjQ0ZFx1NjQ1Ylx1NjQ1ZFx1NjQ3NFx1NjQ3Nlx1NjQ3Mlx1NjQ3M1x1NjQ3ZFx1NjQ3NVx1NjQ2Nlx1NjRhNlx1NjQ0ZVx1NjQ4Mlx1NjQ1ZVx1NjQ1Y1x1NjQ0Ylx1NjQ1M1x1NjQ2MFx1NjQ1MFx1NjQ3Zlx1NjQzZlx1NjQ2Y1x1NjQ2''@;'; put 'put ''Ylx1NjQ1OVx1NjQ2NVx1NjQ3N1x1NjU3M1x1NjVhMFx1NjZhMVx1NjZhMFx1NjY5Zlx1NjcwNVx1NjcwNFx1NjcyMlx1NjliMVx1NjliNlx1NjljOVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyNV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjI1XVtFXS5jaGFyQ29kZUF0KDApJiYobWVb''@;'; put 'put ''QlsyMjVdW0VdXT01NzYwMCtFLExbNTc2MDArRV09QlsyMjVdW0VdKTtmb3IoQlsyMjZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY5YTBcdTY5Y2VcdTY5OTZcdTY5YjBcdTY5YWNcdTY5YmNcdTY5OTFcdTY5OTlcdTY5OGVcdTY5''@;'; put 'put ''YTdcdTY5OGRcdTY5YTlcdTY5YmVcdTY5YWZcdTY5YmZcdTY5YzRcdTY5YmRcdTY5YTRcdTY5ZDRcdTY5YjlcdTY5Y2FcdTY5OWFcdTY5Y2ZcdTY5YjNcdTY5OTNcdTY5YWFcdTY5YTFcdTY5OWVcdTY5ZDlcdTY5OTdcdTY5OTBcdTY5YzJcdTY5YjVcdTY5YTVcdTY5YzZcdTZiNGFcdTZiNGRc''@;'; put 'put ''dTZiNGJcdTZiOWVcdTZiOWZcdTZiYTBcdTZiYzNcdTZiYzRcdTZiZmVcdTZlY2VcdTZlZjVcdTZlZjFcdTZmMDNcdTZmMjVcdTZlZjhcdTZmMzdcdTZlZmJcdTZmMmVcdTZmMDlcdTZmNGVcdTZmMTlcdTZmMWFcdTZmMjdcdTZmMThcdTZmM2JcdTZmMTJcdTZlZWRcdTZmMGFcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZmMzZcdTZmNzNcdTZlZjlcdTZlZWVcdTZmMmRcdTZmNDBcdTZmMzBcdTZmM2NcdTZmMzVcdTZlZWJcdTZmMDdcdTZmMGVcdTZmNDNcdTZmMDVcdTZlZmRcdTZlZjZcdTZmMzlcdTZmMWNcdTZlZmNcdTZmM2FcdTZmMWZcdTZmMGRcdTZm''@;'; put 'put ''MWVcdTZmMDhcdTZmMjFcdTcxODdcdTcxOTBcdTcxODlcdTcxODBcdTcxODVcdTcxODJcdTcxOGZcdTcxN2JcdTcxODZcdTcxODFcdTcxOTdcdTcyNDRcdTcyNTNcdTcyOTdcdTcyOTVcdTcyOTNcdTczNDNcdTczNGRcdTczNTFcdTczNGNcdTc0NjJcdTc0NzNcdTc0NzFcdTc0NzVcdTc0NzJc''@;'; put 'put ''dTc0NjdcdTc0NmVcdTc1MDBcdTc1MDJcdTc1MDNcdTc1N2RcdTc1OTBcdTc2MTZcdTc2MDhcdTc2MGNcdTc2MTVcdTc2MTFcdTc2MGFcdTc2MTRcdTc2YjhcdTc3ODFcdTc3N2NcdTc3ODVcdTc3ODJcdTc3NmVcdTc3ODBcdTc3NmZcdTc3N2VcdTc3ODNcdTc4YjJcdTc4YWFcdTc4YjRcdTc4''@;'; put 'put ''YWRcdTc4YThcdTc4N2VcdTc4YWJcdTc4OWVcdTc4YTVcdTc4YTBcdTc4YWNcdTc4YTJcdTc4YTRcdTc5OThcdTc5OGFcdTc5OGJcdTc5OTZcdTc5OTVcdTc5OTRcdTc5OTNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyNl1bRV0uY2hhckNv''@;'; put 'put ''ZGVBdCgwKSYmKG1lW0JbMjI2XVtFXV09NTc4NTYrRSxMWzU3ODU2K0VdPUJbMjI2XVtFXSk7Zm9yKEJbMjI3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OTk3XHU3OTg4XHU3OTkyXHU3OTkwXHU3YTJiXHU3YTRhXHU3YTMwXHU3''@;'; put 'put ''YTJmXHU3YTI4XHU3YTI2XHU3YWE4XHU3YWFiXHU3YWFjXHU3YWVlXHU3Yjg4XHU3YjljXHU3YjhhXHU3YjkxXHU3YjkwXHU3Yjk2XHU3YjhkXHU3YjhjXHU3YjliXHU3YjhlXHU3Yjg1XHU3Yjk4XHU1Mjg0XHU3Yjk5XHU3YmE0XHU3YjgyXHU3Y2JiXHU3Y2JmXHU3Y2JjXHU3Y2JhXHU3ZGE3''@;'; put 'put ''XHU3ZGI3XHU3ZGMyXHU3ZGEzXHU3ZGFhXHU3ZGMxXHU3ZGMwXHU3ZGM1XHU3ZDlkXHU3ZGNlXHU3ZGM0XHU3ZGM2XHU3ZGNiXHU3ZGNjXHU3ZGFmXHU3ZGI5XHU3ZDk2XHU3ZGJjXHU3ZDlmXHU3ZGE2XHU3ZGFlXHU3ZGE5XHU3ZGExXHU3ZGM5XHU3ZjczXHU3ZmUyXHU3ZmUzXHU3ZmU1XHU3''@;'; put 'put ''ZmRlXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MDI0XHU4MDVkXHU4MDVjXHU4MTg5XHU4MTg2XHU4MTgzXHU4MTg3XHU4MThkXHU4MThjXHU4MThiXHU4MjE1XHU4NDk3XHU4NGE0XHU4NGExXHU4NDlmXHU4NGJhXHU4NGNlXHU4NGMyXHU4NGFjXHU4NGFlXHU4''@;'; put 'put ''NGFiXHU4NGI5XHU4NGI0XHU4NGMxXHU4NGNkXHU4NGFhXHU4NDlhXHU4NGIxXHU4NGQwXHU4NDlkXHU4NGE3XHU4NGJiXHU4NGEyXHU4NDk0XHU4NGM3XHU4NGNjXHU4NDliXHU4NGE5XHU4NGFmXHU4NGE4XHU4NGQ2XHU4NDk4XHU4NGI2XHU4NGNmXHU4NGEwXHU4NGQ3XHU4NGQ0XHU4NGQy''@;'; put 'put ''XHU4NGRiXHU4NGIwXHU4NDkxXHU4NjYxXHU4NzMzXHU4NzIzXHU4NzI4XHU4NzZiXHU4NzQwXHU4NzJlXHU4NzFlXHU4NzIxXHU4NzE5XHU4NzFiXHU4NzQzXHU4NzJjXHU4NzQxXHU4NzNlXHU4NzQ2XHU4NzIwXHU4NzMyXHU4NzJhXHU4NzJkXHU4NzNjXHU4NzEyXHU4NzNhXHU4NzMxXHU4''@;'; put 'put ''NzM1XHU4NzQyXHU4NzI2XHU4NzI3XHU4NzM4XHU4NzI0XHU4NzFhXHU4NzMwXHU4NzExXHU4OGY3XHU4OGU3XHU4OGYxXHU4OGYyXHU4OGZhXHU4OGZlXHU4OGVlXHU4OGZjXHU4OGY2XHU4OGZiXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjI3XS5sZW5ndGg7KytFKTY1NTMzIT09Qlsy''@;'; put 'put ''MjddW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIyN11bRV1dPTU4MTEyK0UsTFs1ODExMitFXT1CWzIyN11bRV0pO2ZvcihCWzIyOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODhmMFx1ODhlY1x1ODhlYlx1ODk5ZFx1ODlhMVx1''@;'; put 'put ''ODk5Zlx1ODk5ZVx1ODllOVx1ODllYlx1ODllOFx1OGFhYlx1OGE5OVx1OGE4Ylx1OGE5Mlx1OGE4Zlx1OGE5Nlx1OGMzZFx1OGM2OFx1OGM2OVx1OGNkNVx1OGNjZlx1OGNkN1x1OGQ5Nlx1OGUwOVx1OGUwMlx1OGRmZlx1OGUwZFx1OGRmZFx1OGUwYVx1OGUwM1x1OGUwN1x1OGUwNlx1OGUw''@;'; put 'put ''NVx1OGRmZVx1OGUwMFx1OGUwNFx1OGYxMFx1OGYxMVx1OGYwZVx1OGYwZFx1OTEyM1x1OTExY1x1OTEyMFx1OTEyMlx1OTExZlx1OTExZFx1OTExYVx1OTEyNFx1OTEyMVx1OTExYlx1OTE3YVx1OTE3Mlx1OTE3OVx1OTE3M1x1OTJhNVx1OTJhNFx1OTI3Nlx1OTI5Ylx1OTI3YVx1OTJhMFx1''@;'; put 'put ''OTI5NFx1OTJhYVx1OTI4ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTJhNlx1OTI5YVx1OTJhYlx1OTI3OVx1OTI5N1x1OTI3Zlx1OTJhM1x1OTJlZVx1OTI4ZVx1OTI4Mlx1OTI5NVx1OTJhMlx1OTI3ZFx1OTI4OFx1OTJhMVx1OTI4YVx1OTI4Nlx1OTI4Y1x1''@;'; put 'put ''OTI5OVx1OTJhN1x1OTI3ZVx1OTI4N1x1OTJhOVx1OTI5ZFx1OTI4Ylx1OTIyZFx1OTY5ZVx1OTZhMVx1OTZmZlx1OTc1OFx1OTc3ZFx1OTc3YVx1OTc3ZVx1OTc4M1x1OTc4MFx1OTc4Mlx1OTc3Ylx1OTc4NFx1OTc4MVx1OTc3Zlx1OTdjZVx1OTdjZFx1OTgxNlx1OThhZFx1OThhZVx1OTkw''@;'; put 'put ''Mlx1OTkwMFx1OTkwN1x1OTk5ZFx1OTk5Y1x1OTljM1x1OTliOVx1OTliYlx1OTliYVx1OTljMlx1OTliZFx1OTljN1x1OWFiMVx1OWFlM1x1OWFlN1x1OWIzZVx1OWIzZlx1OWI2MFx1OWI2MVx1OWI1Zlx1OWNmMVx1OWNmMlx1OWNmNVx1OWVhN1x1NTBmZlx1NTEwM1x1NTEzMFx1NTBmOFx1''@;'; put 'put ''NTEwNlx1NTEwN1x1NTBmNlx1NTBmZVx1NTEwYlx1NTEwY1x1NTBmZFx1NTEwYVx1NTI4Ylx1NTI4Y1x1NTJmMVx1NTJlZlx1NTY0OFx1NTY0Mlx1NTY0Y1x1NTYzNVx1NTY0MVx1NTY0YVx1NTY0OVx1NTY0Nlx1NTY1OFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyOF0ubGVuZ3RoOysr''@;'; put 'put ''RSk2NTUzMyE9PUJbMjI4XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMjhdW0VdXT01ODM2OCtFLExbNTgzNjgrRV09QlsyMjhdW0VdKTtmb3IoQlsyMjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU2NWFcdTU2NDBcdTU2MzNc''@;'; put 'put ''dTU2M2RcdTU2MmNcdTU2M2VcdTU2MzhcdTU2MmFcdTU2M2FcdTU3MWFcdTU4YWJcdTU4OWRcdTU4YjFcdTU4YTBcdTU4YTNcdTU4YWZcdTU4YWNcdTU4YTVcdTU4YTFcdTU4ZmZcdTVhZmZcdTVhZjRcdTVhZmRcdTVhZjdcdTVhZjZcdTViMDNcdTVhZjhcdTViMDJcdTVhZjlcdTViMDFcdTVi''@;'; put 'put ''MDdcdTViMDVcdTViMGZcdTVjNjdcdTVkOTlcdTVkOTdcdTVkOWZcdTVkOTJcdTVkYTJcdTVkOTNcdTVkOTVcdTVkYTBcdTVkOWNcdTVkYTFcdTVkOWFcdTVkOWVcdTVlNjlcdTVlNWRcdTVlNjBcdTVlNWNcdTdkZjNcdTVlZGJcdTVlZGVcdTVlZTFcdTVmNDlcdTVmYjJcdTYxOGJcdTYxODNc''@;'; put 'put ''dTYxNzlcdTYxYjFcdTYxYjBcdTYxYTJcdTYxODlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYxOWJcdTYxOTNcdTYxYWZcdTYxYWRcdTYxOWZcdTYxOTJcdTYxYWFcdTYxYTFcdTYxOGRcdTYxNjZcdTYxYjNcdTYyMmRcdTY0NmVcdTY0NzBcdTY0OTZcdTY0YTBc''@;'; put 'put ''dTY0ODVcdTY0OTdcdTY0OWNcdTY0OGZcdTY0OGJcdTY0OGFcdTY0OGNcdTY0YTNcdTY0OWZcdTY0NjhcdTY0YjFcdTY0OThcdTY1NzZcdTY1N2FcdTY1NzlcdTY1N2JcdTY1YjJcdTY1YjNcdTY2YjVcdTY2YjBcdTY2YTlcdTY2YjJcdTY2YjdcdTY2YWFcdTY2YWZcdTZhMDBcdTZhMDZcdTZh''@;'; put 'put ''MTdcdTY5ZTVcdTY5ZjhcdTZhMTVcdTY5ZjFcdTY5ZTRcdTZhMjBcdTY5ZmZcdTY5ZWNcdTY5ZTJcdTZhMWJcdTZhMWRcdTY5ZmVcdTZhMjdcdTY5ZjJcdTY5ZWVcdTZhMTRcdTY5ZjdcdTY5ZTdcdTZhNDBcdTZhMDhcdTY5ZTZcdTY5ZmJcdTZhMGRcdTY5ZmNcdTY5ZWJcdTZhMDlcdTZhMDRc''@;'; put 'put ''dTZhMThcdTZhMjVcdTZhMGZcdTY5ZjZcdTZhMjZcdTZhMDdcdTY5ZjRcdTZhMTZcdTZiNTFcdTZiYTVcdTZiYTNcdTZiYTJcdTZiYTZcdTZjMDFcdTZjMDBcdTZiZmZcdTZjMDJcdTZmNDFcdTZmMjZcdTZmN2VcdTZmODdcdTZmYzZcdTZmOTJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9Qlsy''@;'; put 'put ''MjldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyOV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjI5XVtFXV09NTg2MjQrRSxMWzU4NjI0K0VdPUJbMjI5XVtFXSk7Zm9yKEJbMjMwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2Zjhk''@;'; put 'put ''XHU2Zjg5XHU2ZjhjXHU2ZjYyXHU2ZjRmXHU2Zjg1XHU2ZjVhXHU2Zjk2XHU2Zjc2XHU2ZjZjXHU2ZjgyXHU2ZjU1XHU2ZjcyXHU2ZjUyXHU2ZjUwXHU2ZjU3XHU2Zjk0XHU2ZjkzXHU2ZjVkXHU2ZjAwXHU2ZjYxXHU2ZjZiXHU2ZjdkXHU2ZjY3XHU2ZjkwXHU2ZjUzXHU2ZjhiXHU2ZjY5XHU2''@;'; put 'put ''ZjdmXHU2Zjk1XHU2ZjYzXHU2Zjc3XHU2ZjZhXHU2ZjdiXHU3MWIyXHU3MWFmXHU3MTliXHU3MWIwXHU3MWEwXHU3MTlhXHU3MWE5XHU3MWI1XHU3MTlkXHU3MWE1XHU3MTllXHU3MWE0XHU3MWExXHU3MWFhXHU3MTljXHU3MWE3XHU3MWIzXHU3Mjk4XHU3MjlhXHU3MzU4XHU3MzUyXHU3MzVl''@;'; put 'put ''XHU3MzVmXHU3MzYwXHU3MzVkXHU3MzViXHU3MzYxXHU3MzVhXHU3MzU5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MzYyXHU3NDg3XHU3NDg5XHU3NDhhXHU3NDg2XHU3NDgxXHU3NDdkXHU3NDg1XHU3NDg4XHU3NDdjXHU3NDc5XHU3NTA4XHU3NTA3XHU3NTdl''@;'; put 'put ''XHU3NjI1XHU3NjFlXHU3NjE5XHU3NjFkXHU3NjFjXHU3NjIzXHU3NjFhXHU3NjI4XHU3NjFiXHU3NjljXHU3NjlkXHU3NjllXHU3NjliXHU3NzhkXHU3NzhmXHU3Nzg5XHU3Nzg4XHU3OGNkXHU3OGJiXHU3OGNmXHU3OGNjXHU3OGQxXHU3OGNlXHU3OGQ0XHU3OGM4XHU3OGMzXHU3OGM0XHU3''@;'; put 'put ''OGM5XHU3OTlhXHU3OWExXHU3OWEwXHU3OTljXHU3OWEyXHU3OTliXHU2Yjc2XHU3YTM5XHU3YWIyXHU3YWI0XHU3YWIzXHU3YmI3XHU3YmNiXHU3YmJlXHU3YmFjXHU3YmNlXHU3YmFmXHU3YmI5XHU3YmNhXHU3YmI1XHU3Y2M1XHU3Y2M4XHU3Y2NjXHU3Y2NiXHU3ZGY3XHU3ZGRiXHU3ZGVh''@;'; put 'put ''XHU3ZGU3XHU3ZGQ3XHU3ZGUxXHU3ZTAzXHU3ZGZhXHU3ZGU2XHU3ZGY2XHU3ZGYxXHU3ZGYwXHU3ZGVlXHU3ZGRmXHU3Zjc2XHU3ZmFjXHU3ZmIwXHU3ZmFkXHU3ZmVkXHU3ZmViXHU3ZmVhXHU3ZmVjXHU3ZmU2XHU3ZmU4XHU4MDY0XHU4MDY3XHU4MWEzXHU4MTlmXHVmZmZkIi5zcGxpdCgi''@;'; put 'put ''IiksRT0wO0UhPUJbMjMwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzBdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIzMF1bRV1dPTU4ODgwK0UsTFs1ODg4MCtFXT1CWzIzMF1bRV0pO2ZvcihCWzIzMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ODE5ZVx1ODE5NVx1ODFhMlx1ODE5OVx1ODE5N1x1ODIxNlx1ODI0Zlx1ODI1M1x1ODI1Mlx1ODI1MFx1ODI0ZVx1ODI1MVx1ODUyNFx1ODUzYlx1ODUwZlx1ODUwMFx1ODUyOVx1ODUwZVx1ODUwOVx1ODUwZFx1ODUxZlx1ODUwYVx1ODUyN1x1ODUxY1x1ODRmYlx1ODUyYlx1''@;'; put 'put ''ODRmYVx1ODUwOFx1ODUwY1x1ODRmNFx1ODUyYVx1ODRmMlx1ODUxNVx1ODRmN1x1ODRlYlx1ODRmM1x1ODRmY1x1ODUxMlx1ODRlYVx1ODRlOVx1ODUxNlx1ODRmZVx1ODUyOFx1ODUxZFx1ODUyZVx1ODUwMlx1ODRmZFx1ODUxZVx1ODRmNlx1ODUzMVx1ODUyNlx1ODRlN1x1ODRlOFx1ODRm''@;'; put 'put ''MFx1ODRlZlx1ODRmOVx1ODUxOFx1ODUyMFx1ODUzMFx1ODUwYlx1ODUxOVx1ODUyZlx1ODY2Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODc1Nlx1ODc2M1x1ODc2NFx1ODc3N1x1ODdlMVx1ODc3M1x1ODc1OFx1ODc1NFx1ODc1Ylx1ODc1Mlx1ODc2MVx1ODc1''@;'; put 'put ''YVx1ODc1MVx1ODc1ZVx1ODc2ZFx1ODc2YVx1ODc1MFx1ODc0ZVx1ODc1Zlx1ODc1ZFx1ODc2Zlx1ODc2Y1x1ODc3YVx1ODc2ZVx1ODc1Y1x1ODc2NVx1ODc0Zlx1ODc3Ylx1ODc3NVx1ODc2Mlx1ODc2N1x1ODc2OVx1ODg1YVx1ODkwNVx1ODkwY1x1ODkxNFx1ODkwYlx1ODkxN1x1ODkxOFx1''@;'; put 'put ''ODkxOVx1ODkwNlx1ODkxNlx1ODkxMVx1ODkwZVx1ODkwOVx1ODlhMlx1ODlhNFx1ODlhM1x1ODllZFx1ODlmMFx1ODllY1x1OGFjZlx1OGFjNlx1OGFiOFx1OGFkM1x1OGFkMVx1OGFkNFx1OGFkNVx1OGFiYlx1OGFkN1x1OGFiZVx1OGFjMFx1OGFjNVx1OGFkOFx1OGFjM1x1OGFiYVx1OGFi''@;'; put 'put ''ZFx1OGFkOVx1OGMzZVx1OGM0ZFx1OGM4Zlx1OGNlNVx1OGNkZlx1OGNkOVx1OGNlOFx1OGNkYVx1OGNkZFx1OGNlN1x1OGRhMFx1OGQ5Y1x1OGRhMVx1OGQ5Ylx1OGUyMFx1OGUyM1x1OGUyNVx1OGUyNFx1OGUyZVx1OGUxNVx1OGUxYlx1OGUxNlx1OGUxMVx1OGUxOVx1OGUyNlx1OGUyN1x1''@;'; put 'put ''ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzMV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjMxXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMzFdW0VdXT01OTEzNitFLExbNTkxMzYrRV09QlsyMzFdW0VdKTtmb3IoQlsyMzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThlMTRcdThlMTJcdThlMThcdThlMTNcdThlMWNcdThlMTdcdThlMWFcdThmMmNcdThmMjRcdThmMThcdThmMWFcdThmMjBcdThmMjNcdThmMTZcdThmMTdcdTkwNzNcdTkwNzBcdTkwNmZcdTkwNjdcdTkwNmJcdTkxMmZcdTkxMmJcdTkxMjlcdTkxMmFc''@;'; put 'put ''dTkxMzJcdTkxMjZcdTkxMmVcdTkxODVcdTkxODZcdTkxOGFcdTkxODFcdTkxODJcdTkxODRcdTkxODBcdTkyZDBcdTkyYzNcdTkyYzRcdTkyYzBcdTkyZDlcdTkyYjZcdTkyY2ZcdTkyZjFcdTkyZGZcdTkyZDhcdTkyZTlcdTkyZDdcdTkyZGRcdTkyY2NcdTkyZWZcdTkyYzJcdTkyZThcdTky''@;'; put 'put ''Y2FcdTkyYzhcdTkyY2VcdTkyZTZcdTkyY2RcdTkyZDVcdTkyYzlcdTkyZTBcdTkyZGVcdTkyZTdcdTkyZDFcdTkyZDNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkyYjVcdTkyZTFcdTkyYzZcdTkyYjRcdTk1N2NcdTk1YWNcdTk1YWJcdTk1YWVcdTk1YjBcdTk2''@;'; put 'put ''YTRcdTk2YTJcdTk2ZDNcdTk3MDVcdTk3MDhcdTk3MDJcdTk3NWFcdTk3OGFcdTk3OGVcdTk3ODhcdTk3ZDBcdTk3Y2ZcdTk4MWVcdTk4MWRcdTk4MjZcdTk4MjlcdTk4MjhcdTk4MjBcdTk4MWJcdTk4MjdcdTk4YjJcdTk5MDhcdTk4ZmFcdTk5MTFcdTk5MTRcdTk5MTZcdTk5MTdcdTk5MTVc''@;'; put 'put ''dTk5ZGNcdTk5Y2RcdTk5Y2ZcdTk5ZDNcdTk5ZDRcdTk5Y2VcdTk5YzlcdTk5ZDZcdTk5ZDhcdTk5Y2JcdTk5ZDdcdTk5Y2NcdTlhYjNcdTlhZWNcdTlhZWJcdTlhZjNcdTlhZjJcdTlhZjFcdTliNDZcdTliNDNcdTliNjdcdTliNzRcdTliNzFcdTliNjZcdTliNzZcdTliNzVcdTliNzBcdTli''@;'; put 'put ''NjhcdTliNjRcdTliNmNcdTljZmNcdTljZmFcdTljZmRcdTljZmZcdTljZjdcdTlkMDdcdTlkMDBcdTljZjlcdTljZmJcdTlkMDhcdTlkMDVcdTlkMDRcdTllODNcdTllZDNcdTlmMGZcdTlmMTBcdTUxMWNcdTUxMTNcdTUxMTdcdTUxMWFcdTUxMTFcdTUxZGVcdTUzMzRcdTUzZTFcdTU2NzBc''@;'; put 'put ''dTU2NjBcdTU2NmVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzMl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjMyXVtFXV09NTkzOTIrRSxMWzU5MzkyK0VdPUJbMjMyXVtFXSk7Zm9yKEJbMjMzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NjczXHU1NjY2XHU1NjYzXHU1NjZkXHU1NjcyXHU1NjVlXHU1Njc3XHU1NzFjXHU1NzFiXHU1OGM4XHU1OGJkXHU1OGM5XHU1OGJmXHU1OGJhXHU1OGMyXHU1OGJjXHU1OGM2XHU1YjE3XHU1YjE5XHU1YjFiXHU1YjIxXHU1YjE0''@;'; put 'put ''XHU1YjEzXHU1YjEwXHU1YjE2XHU1YjI4XHU1YjFhXHU1YjIwXHU1YjFlXHU1YmVmXHU1ZGFjXHU1ZGIxXHU1ZGE5XHU1ZGE3XHU1ZGI1XHU1ZGIwXHU1ZGFlXHU1ZGFhXHU1ZGE4XHU1ZGIyXHU1ZGFkXHU1ZGFmXHU1ZGI0XHU1ZTY3XHU1ZTY4XHU1ZTY2XHU1ZTZmXHU1ZWU5XHU1ZWU3XHU1''@;'; put 'put ''ZWU2XHU1ZWU4XHU1ZWU1XHU1ZjRiXHU1ZmJjXHU2MTlkXHU2MWE4XHU2MTk2XHU2MWM1XHU2MWI0XHU2MWM2XHU2MWMxXHU2MWNjXHU2MWJhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MWJmXHU2MWI4XHU2MThjXHU2NGQ3XHU2NGQ2XHU2NGQwXHU2NGNmXHU2''@;'; put 'put ''NGM5XHU2NGJkXHU2NDg5XHU2NGMzXHU2NGRiXHU2NGYzXHU2NGQ5XHU2NTMzXHU2NTdmXHU2NTdjXHU2NWEyXHU2NmM4XHU2NmJlXHU2NmMwXHU2NmNhXHU2NmNiXHU2NmNmXHU2NmJkXHU2NmJiXHU2NmJhXHU2NmNjXHU2NzIzXHU2YTM0XHU2YTY2XHU2YTQ5XHU2YTY3XHU2YTMyXHU2YTY4''@;'; put 'put ''XHU2YTNlXHU2YTVkXHU2YTZkXHU2YTc2XHU2YTViXHU2YTUxXHU2YTI4XHU2YTVhXHU2YTNiXHU2YTNmXHU2YTQxXHU2YTZhXHU2YTY0XHU2YTUwXHU2YTRmXHU2YTU0XHU2YTZmXHU2YTY5XHU2YTYwXHU2YTNjXHU2YTVlXHU2YTU2XHU2YTU1XHU2YTRkXHU2YTRlXHU2YTQ2XHU2YjU1XHU2''@;'; put 'put ''YjU0XHU2YjU2XHU2YmE3XHU2YmFhXHU2YmFiXHU2YmM4XHU2YmM3XHU2YzA0XHU2YzAzXHU2YzA2XHU2ZmFkXHU2ZmNiXHU2ZmEzXHU2ZmM3XHU2ZmJjXHU2ZmNlXHU2ZmM4XHU2ZjVlXHU2ZmM0XHU2ZmJkXHU2ZjllXHU2ZmNhXHU2ZmE4XHU3MDA0XHU2ZmE1XHU2ZmFlXHU2ZmJhXHU2ZmFj''@;'; put 'put ''XHU2ZmFhXHU2ZmNmXHU2ZmJmXHU2ZmI4XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjMzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzNdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIzM11bRV1dPTU5NjQ4K0UsTFs1OTY0OCtFXT1CWzIzM11bRV0pO2ZvcihCWzIzNF09Ilx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmZhMlx1NmZjOVx1NmZhYlx1NmZjZFx1NmZhZlx1NmZiMlx1NmZiMFx1NzFjNVx1NzFjMlx1NzFiZlx1NzFiOFx1NzFkNlx1NzFjMFx1NzFjMVx1NzFjYlx1NzFkNFx1NzFjYVx1NzFjN1x1NzFjZlx1NzFi''@;'; put 'put ''ZFx1NzFkOFx1NzFiY1x1NzFjNlx1NzFkYVx1NzFkYlx1NzI5ZFx1NzI5ZVx1NzM2OVx1NzM2Nlx1NzM2N1x1NzM2Y1x1NzM2NVx1NzM2Ylx1NzM2YVx1NzQ3Zlx1NzQ5YVx1NzRhMFx1NzQ5NFx1NzQ5Mlx1NzQ5NVx1NzRhMVx1NzUwYlx1NzU4MFx1NzYyZlx1NzYyZFx1NzYzMVx1NzYzZFx1''@;'; put 'put ''NzYzM1x1NzYzY1x1NzYzNVx1NzYzMlx1NzYzMFx1NzZiYlx1NzZlNlx1Nzc5YVx1Nzc5ZFx1NzdhMVx1Nzc5Y1x1Nzc5Ylx1NzdhMlx1NzdhM1x1Nzc5NVx1Nzc5OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Nzc5N1x1NzhkZFx1NzhlOVx1NzhlNVx1NzhlYVx1''@;'; put 'put ''NzhkZVx1NzhlM1x1NzhkYlx1NzhlMVx1NzhlMlx1NzhlZFx1NzhkZlx1NzhlMFx1NzlhNFx1N2E0NFx1N2E0OFx1N2E0N1x1N2FiNlx1N2FiOFx1N2FiNVx1N2FiMVx1N2FiN1x1N2JkZVx1N2JlM1x1N2JlN1x1N2JkZFx1N2JkNVx1N2JlNVx1N2JkYVx1N2JlOFx1N2JmOVx1N2JkNFx1N2Jl''@;'; put 'put ''YVx1N2JlMlx1N2JkY1x1N2JlYlx1N2JkOFx1N2JkZlx1N2NkMlx1N2NkNFx1N2NkN1x1N2NkMFx1N2NkMVx1N2UxMlx1N2UyMVx1N2UxN1x1N2UwY1x1N2UxZlx1N2UyMFx1N2UxM1x1N2UwZVx1N2UxY1x1N2UxNVx1N2UxYVx1N2UyMlx1N2UwYlx1N2UwZlx1N2UxNlx1N2UwZFx1N2UxNFx1''@;'; put 'put ''N2UyNVx1N2UyNFx1N2Y0M1x1N2Y3Ylx1N2Y3Y1x1N2Y3YVx1N2ZiMVx1N2ZlZlx1ODAyYVx1ODAyOVx1ODA2Y1x1ODFiMVx1ODFhNlx1ODFhZVx1ODFiOVx1ODFiNVx1ODFhYlx1ODFiMFx1ODFhY1x1ODFiNFx1ODFiMlx1ODFiN1x1ODFhN1x1ODFmMlx1ODI1NVx1ODI1Nlx1ODI1N1x1ODU1''@;'; put 'put ''Nlx1ODU0NVx1ODU2Ylx1ODU0ZFx1ODU1M1x1ODU2MVx1ODU1OFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzNF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjM0XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMzRdW0VdXT01OTkwNCtFLExbNTk5MDQrRV09QlsyMzRdW0VdKTtmb3IoQlsy''@;'; put 'put ''MzVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg1NDBcdTg1NDZcdTg1NjRcdTg1NDFcdTg1NjJcdTg1NDRcdTg1NTFcdTg1NDdcdTg1NjNcdTg1M2VcdTg1NWJcdTg1NzFcdTg1NGVcdTg1NmVcdTg1NzVcdTg1NTVcdTg1NjdcdTg1''@;'; put 'put ''NjBcdTg1OGNcdTg1NjZcdTg1NWRcdTg1NTRcdTg1NjVcdTg1NmNcdTg2NjNcdTg2NjVcdTg2NjRcdTg3OWJcdTg3OGZcdTg3OTdcdTg3OTNcdTg3OTJcdTg3ODhcdTg3ODFcdTg3OTZcdTg3OThcdTg3NzlcdTg3ODdcdTg3YTNcdTg3ODVcdTg3OTBcdTg3OTFcdTg3OWRcdTg3ODRcdTg3OTRc''@;'; put 'put ''dTg3OWNcdTg3OWFcdTg3ODlcdTg5MWVcdTg5MjZcdTg5MzBcdTg5MmRcdTg5MmVcdTg5MjdcdTg5MzFcdTg5MjJcdTg5MjlcdTg5MjNcdTg5MmZcdTg5MmNcdTg5MWZcdTg5ZjFcdThhZTBcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThhZTJcdThhZjJcdThhZjRc''@;'; put 'put ''dThhZjVcdThhZGRcdThiMTRcdThhZTRcdThhZGZcdThhZjBcdThhYzhcdThhZGVcdThhZTFcdThhZThcdThhZmZcdThhZWZcdThhZmJcdThjOTFcdThjOTJcdThjOTBcdThjZjVcdThjZWVcdThjZjFcdThjZjBcdThjZjNcdThkNmNcdThkNmVcdThkYTVcdThkYTdcdThlMzNcdThlM2VcdThl''@;'; put 'put ''MzhcdThlNDBcdThlNDVcdThlMzZcdThlM2NcdThlM2RcdThlNDFcdThlMzBcdThlM2ZcdThlYmRcdThmMzZcdThmMmVcdThmMzVcdThmMzJcdThmMzlcdThmMzdcdThmMzRcdTkwNzZcdTkwNzlcdTkwN2JcdTkwODZcdTkwZmFcdTkxMzNcdTkxMzVcdTkxMzZcdTkxOTNcdTkxOTBcdTkxOTFc''@;'; put 'put ''dTkxOGRcdTkxOGZcdTkzMjdcdTkzMWVcdTkzMDhcdTkzMWZcdTkzMDZcdTkzMGZcdTkzN2FcdTkzMzhcdTkzM2NcdTkzMWJcdTkzMjNcdTkzMTJcdTkzMDFcdTkzNDZcdTkzMmRcdTkzMGVcdTkzMGRcdTkyY2JcdTkzMWRcdTkyZmFcdTkzMjVcdTkzMTNcdTkyZjlcdTkyZjdcdTkzMzRcdTkz''@;'; put 'put ''MDJcdTkzMjRcdTkyZmZcdTkzMjlcdTkzMzlcdTkzMzVcdTkzMmFcdTkzMTRcdTkzMGNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzNV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjM1XVtFXV09NjAxNjArRSxMWzYwMTYwK0VdPUJbMjM1''@;'; put 'put ''XVtFXSk7Zm9yKEJbMjM2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MzBiXHU5MmZlXHU5MzA5XHU5MzAwXHU5MmZiXHU5MzE2XHU5NWJjXHU5NWNkXHU5NWJlXHU5NWI5XHU5NWJhXHU5NWI2XHU5NWJmXHU5NWI1XHU5NWJkXHU5''@;'; put 'put ''NmE5XHU5NmQ0XHU5NzBiXHU5NzEyXHU5NzEwXHU5Nzk5XHU5Nzk3XHU5Nzk0XHU5N2YwXHU5N2Y4XHU5ODM1XHU5ODJmXHU5ODMyXHU5OTI0XHU5OTFmXHU5OTI3XHU5OTI5XHU5OTllXHU5OWVlXHU5OWVjXHU5OWU1XHU5OWU0XHU5OWYwXHU5OWUzXHU5OWVhXHU5OWU5XHU5OWU3XHU5YWI5''@;'; put 'put ''XHU5YWJmXHU5YWI0XHU5YWJiXHU5YWY2XHU5YWZhXHU5YWY5XHU5YWY3XHU5YjMzXHU5YjgwXHU5Yjg1XHU5Yjg3XHU5YjdjXHU5YjdlXHU5YjdiXHU5YjgyXHU5YjkzXHU5YjkyXHU5YjkwXHU5YjdhXHU5Yjk1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5Yjdk''@;'; put 'put ''XHU5Yjg4XHU5ZDI1XHU5ZDE3XHU5ZDIwXHU5ZDFlXHU5ZDE0XHU5ZDI5XHU5ZDFkXHU5ZDE4XHU5ZDIyXHU5ZDEwXHU5ZDE5XHU5ZDFmXHU5ZTg4XHU5ZTg2XHU5ZTg3XHU5ZWFlXHU5ZWFkXHU5ZWQ1XHU5ZWQ2XHU5ZWZhXHU5ZjEyXHU5ZjNkXHU1MTI2XHU1MTI1XHU1MTIyXHU1MTI0XHU1''@;'; put 'put ''MTIwXHU1MTI5XHU1MmY0XHU1NjkzXHU1NjhjXHU1NjhkXHU1Njg2XHU1Njg0XHU1NjgzXHU1NjdlXHU1NjgyXHU1NjdmXHU1NjgxXHU1OGQ2XHU1OGQ0XHU1OGNmXHU1OGQyXHU1YjJkXHU1YjI1XHU1YjMyXHU1YjIzXHU1YjJjXHU1YjI3XHU1YjI2XHU1YjJmXHU1YjJlXHU1YjdiXHU1YmYx''@;'; put 'put ''XHU1YmYyXHU1ZGI3XHU1ZTZjXHU1ZTZhXHU1ZmJlXHU1ZmJiXHU2MWMzXHU2MWI1XHU2MWJjXHU2MWU3XHU2MWUwXHU2MWU1XHU2MWU0XHU2MWU4XHU2MWRlXHU2NGVmXHU2NGU5XHU2NGUzXHU2NGViXHU2NGU0XHU2NGU4XHU2NTgxXHU2NTgwXHU2NWI2XHU2NWRhXHU2NmQyXHU2YThkXHU2''@;'; put 'put ''YTk2XHU2YTgxXHU2YWE1XHU2YTg5XHU2YTlmXHU2YTliXHU2YWExXHU2YTllXHU2YTg3XHU2YTkzXHU2YThlXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjM2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzZdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIzNl1bRV1dPTYwNDE2K0UsTFs2''@;'; put 'put ''MDQxNitFXT1CWzIzNl1bRV0pO2ZvcihCWzIzN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmE5NVx1NmE4M1x1NmFhOFx1NmFhNFx1NmE5MVx1NmE3Zlx1NmFhNlx1NmE5YVx1NmE4NVx1NmE4Y1x1NmE5Mlx1NmI1Ylx1NmJhZFx1''@;'; put 'put ''NmMwOVx1NmZjY1x1NmZhOVx1NmZmNFx1NmZkNFx1NmZlM1x1NmZkY1x1NmZlZFx1NmZlN1x1NmZlNlx1NmZkZVx1NmZmMlx1NmZkZFx1NmZlMlx1NmZlOFx1NzFlMVx1NzFmMVx1NzFlOFx1NzFmMlx1NzFlNFx1NzFmMFx1NzFlMlx1NzM3M1x1NzM2ZVx1NzM2Zlx1NzQ5N1x1NzRiMlx1NzRh''@;'; put 'put ''Ylx1NzQ5MFx1NzRhYVx1NzRhZFx1NzRiMVx1NzRhNVx1NzRhZlx1NzUxMFx1NzUxMVx1NzUxMlx1NzUwZlx1NzU4NFx1NzY0M1x1NzY0OFx1NzY0OVx1NzY0N1x1NzZhNFx1NzZlOVx1NzdiNVx1NzdhYlx1NzdiMlx1NzdiN1x1NzdiNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1NzdiNFx1NzdiMVx1NzdhOFx1NzdmMFx1NzhmM1x1NzhmZFx1NzkwMlx1NzhmYlx1NzhmY1x1NzhmMlx1NzkwNVx1NzhmOVx1NzhmZVx1NzkwNFx1NzlhYlx1NzlhOFx1N2E1Y1x1N2E1Ylx1N2E1Nlx1N2E1OFx1N2E1NFx1N2E1YVx1N2FiZVx1N2FjMFx1N2FjMVx1N2MwNVx1''@;'; put 'put ''N2MwZlx1N2JmMlx1N2MwMFx1N2JmZlx1N2JmYlx1N2MwZVx1N2JmNFx1N2MwYlx1N2JmM1x1N2MwMlx1N2MwOVx1N2MwM1x1N2MwMVx1N2JmOFx1N2JmZFx1N2MwNlx1N2JmMFx1N2JmMVx1N2MxMFx1N2MwYVx1N2NlOFx1N2UyZFx1N2UzY1x1N2U0Mlx1N2UzM1x1OTg0OFx1N2UzOFx1N2Uy''@;'; put 'put ''YVx1N2U0OVx1N2U0MFx1N2U0N1x1N2UyOVx1N2U0Y1x1N2UzMFx1N2UzYlx1N2UzNlx1N2U0NFx1N2UzYVx1N2Y0NVx1N2Y3Zlx1N2Y3ZVx1N2Y3ZFx1N2ZmNFx1N2ZmMlx1ODAyY1x1ODFiYlx1ODFjNFx1ODFjY1x1ODFjYVx1ODFjNVx1ODFjN1x1ODFiY1x1ODFlOVx1ODI1Ylx1ODI1YVx1''@;'; put 'put ''ODI1Y1x1ODU4M1x1ODU4MFx1ODU4Zlx1ODVhN1x1ODU5NVx1ODVhMFx1ODU4Ylx1ODVhM1x1ODU3Ylx1ODVhNFx1ODU5YVx1ODU5ZVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzN10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjM3XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMzddW0Vd''@;'; put 'put ''XT02MDY3MitFLExbNjA2NzIrRV09QlsyMzddW0VdKTtmb3IoQlsyMzhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg1NzdcdTg1N2NcdTg1ODlcdTg1YTFcdTg1N2FcdTg1NzhcdTg1NTdcdTg1OGVcdTg1OTZcdTg1ODZcdTg1OGRc''@;'; put 'put ''dTg1OTlcdTg1OWRcdTg1ODFcdTg1YTJcdTg1ODJcdTg1ODhcdTg1ODVcdTg1NzlcdTg1NzZcdTg1OThcdTg1OTBcdTg1OWZcdTg2NjhcdTg3YmVcdTg3YWFcdTg3YWRcdTg3YzVcdTg3YjBcdTg3YWNcdTg3YjlcdTg3YjVcdTg3YmNcdTg3YWVcdTg3YzlcdTg3YzNcdTg3YzJcdTg3Y2NcdTg3''@;'; put 'put ''YjdcdTg3YWZcdTg3YzRcdTg3Y2FcdTg3YjRcdTg3YjZcdTg3YmZcdTg3YjhcdTg3YmRcdTg3ZGVcdTg3YjJcdTg5MzVcdTg5MzNcdTg5M2NcdTg5M2VcdTg5NDFcdTg5NTJcdTg5MzdcdTg5NDJcdTg5YWRcdTg5YWZcdTg5YWVcdTg5ZjJcdTg5ZjNcdThiMWVcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThiMThcdThiMTZcdThiMTFcdThiMDVcdThiMGJcdThiMjJcdThiMGZcdThiMTJcdThiMTVcdThiMDdcdThiMGRcdThiMDhcdThiMDZcdThiMWNcdThiMTNcdThiMWFcdThjNGZcdThjNzBcdThjNzJcdThjNzFcdThjNmZcdThjOTVcdThjOTRcdThjZjlc''@;'; put 'put ''dThkNmZcdThlNGVcdThlNGRcdThlNTNcdThlNTBcdThlNGNcdThlNDdcdThmNDNcdThmNDBcdTkwODVcdTkwN2VcdTkxMzhcdTkxOWFcdTkxYTJcdTkxOWJcdTkxOTlcdTkxOWZcdTkxYTFcdTkxOWRcdTkxYTBcdTkzYTFcdTkzODNcdTkzYWZcdTkzNjRcdTkzNTZcdTkzNDdcdTkzN2NcdTkz''@;'; put 'put ''NThcdTkzNWNcdTkzNzZcdTkzNDlcdTkzNTBcdTkzNTFcdTkzNjBcdTkzNmRcdTkzOGZcdTkzNGNcdTkzNmFcdTkzNzlcdTkzNTdcdTkzNTVcdTkzNTJcdTkzNGZcdTkzNzFcdTkzNzdcdTkzN2JcdTkzNjFcdTkzNWVcdTkzNjNcdTkzNjdcdTkzODBcdTkzNGVcdTkzNTlcdTk1YzdcdTk1YzBc''@;'; put 'put ''dTk1YzlcdTk1YzNcdTk1YzVcdTk1YjdcdTk2YWVcdTk2YjBcdTk2YWNcdTk3MjBcdTk3MWZcdTk3MThcdTk3MWRcdTk3MTlcdTk3OWFcdTk3YTFcdTk3OWNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzOF1bRV0uY2hhckNvZGVBdCgwKSYm''@;'; put 'put ''KG1lW0JbMjM4XVtFXV09NjA5MjgrRSxMWzYwOTI4K0VdPUJbMjM4XVtFXSk7Zm9yKEJbMjM5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NzllXHU5NzlkXHU5N2Q1XHU5N2Q0XHU5N2YxXHU5ODQxXHU5ODQ0XHU5ODRhXHU5ODQ5''@;'; put 'put ''XHU5ODQ1XHU5ODQzXHU5OTI1XHU5OTJiXHU5OTJjXHU5OTJhXHU5OTMzXHU5OTMyXHU5OTJmXHU5OTJkXHU5OTMxXHU5OTMwXHU5OTk4XHU5OWEzXHU5OWExXHU5YTAyXHU5OWZhXHU5OWY0XHU5OWY3XHU5OWY5XHU5OWY4XHU5OWY2XHU5OWZiXHU5OWZkXHU5OWZlXHU5OWZjXHU5YTAzXHU5''@;'; put 'put ''YWJlXHU5YWZlXHU5YWZkXHU5YjAxXHU5YWZjXHU5YjQ4XHU5YjlhXHU5YmE4XHU5YjllXHU5YjliXHU5YmE2XHU5YmExXHU5YmE1XHU5YmE0XHU5Yjg2XHU5YmEyXHU5YmEwXHU5YmFmXHU5ZDMzXHU5ZDQxXHU5ZDY3XHU5ZDM2XHU5ZDJlXHU5ZDJmXHU5ZDMxXHU5ZDM4XHU5ZDMwXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZDQ1XHU5ZDQyXHU5ZDQzXHU5ZDNlXHU5ZDM3XHU5ZDQwXHU5ZDNkXHU3ZmY1XHU5ZDJkXHU5ZThhXHU5ZTg5XHU5ZThkXHU5ZWIwXHU5ZWM4XHU5ZWRhXHU5ZWZiXHU5ZWZmXHU5ZjI0XHU5ZjIzXHU5ZjIyXHU5ZjU0XHU5ZmEw''@;'; put 'put ''XHU1MTMxXHU1MTJkXHU1MTJlXHU1Njk4XHU1NjljXHU1Njk3XHU1NjlhXHU1NjlkXHU1Njk5XHU1OTcwXHU1YjNjXHU1YzY5XHU1YzZhXHU1ZGMwXHU1ZTZkXHU1ZTZlXHU2MWQ4XHU2MWRmXHU2MWVkXHU2MWVlXHU2MWYxXHU2MWVhXHU2MWYwXHU2MWViXHU2MWQ2XHU2MWU5XHU2NGZmXHU2''@;'; put 'put ''NTA0XHU2NGZkXHU2NGY4XHU2NTAxXHU2NTAzXHU2NGZjXHU2NTk0XHU2NWRiXHU2NmRhXHU2NmRiXHU2NmQ4XHU2YWM1XHU2YWI5XHU2YWJkXHU2YWUxXHU2YWM2XHU2YWJhXHU2YWI2XHU2YWI3XHU2YWM3XHU2YWI0XHU2YWFkXHU2YjVlXHU2YmM5XHU2YzBiXHU3MDA3XHU3MDBjXHU3MDBk''@;'; put 'put ''XHU3MDAxXHU3MDA1XHU3MDE0XHU3MDBlXHU2ZmZmXHU3MDAwXHU2ZmZiXHU3MDI2XHU2ZmZjXHU2ZmY3XHU3MDBhXHU3MjAxXHU3MWZmXHU3MWY5XHU3MjAzXHU3MWZkXHU3Mzc2XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjM5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzldW0VdLmNo''@;'; put 'put ''YXJDb2RlQXQoMCkmJihtZVtCWzIzOV1bRV1dPTYxMTg0K0UsTFs2MTE4NCtFXT1CWzIzOV1bRV0pO2ZvcihCWzI0MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzRiOFx1NzRjMFx1NzRiNVx1NzRjMVx1NzRiZVx1NzRiNlx1NzRi''@;'; put 'put ''Ylx1NzRjMlx1NzUxNFx1NzUxM1x1NzY1Y1x1NzY2NFx1NzY1OVx1NzY1MFx1NzY1M1x1NzY1N1x1NzY1YVx1NzZhNlx1NzZiZFx1NzZlY1x1NzdjMlx1NzdiYVx1NzhmZlx1NzkwY1x1NzkxM1x1NzkxNFx1NzkwOVx1NzkxMFx1NzkxMlx1NzkxMVx1NzlhZFx1NzlhY1x1N2E1Zlx1N2MxY1x1''@;'; put 'put ''N2MyOVx1N2MxOVx1N2MyMFx1N2MxZlx1N2MyZFx1N2MxZFx1N2MyNlx1N2MyOFx1N2MyMlx1N2MyNVx1N2MzMFx1N2U1Y1x1N2U1MFx1N2U1Nlx1N2U2M1x1N2U1OFx1N2U2Mlx1N2U1Zlx1N2U1MVx1N2U2MFx1N2U1N1x1N2U1M1x1N2ZiNVx1N2ZiM1x1N2ZmN1x1N2ZmOFx1ODA3NVx1ODFk''@;'; put 'put ''MVx1ODFkMlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODFkMFx1ODI1Zlx1ODI1ZVx1ODViNFx1ODVjNlx1ODVjMFx1ODVjM1x1ODVjMlx1ODViM1x1ODViNVx1ODViZFx1ODVjN1x1ODVjNFx1ODViZlx1ODVjYlx1ODVjZVx1ODVjOFx1ODVjNVx1ODViMVx1ODVi''@;'; put 'put ''Nlx1ODVkMlx1ODYyNFx1ODViOFx1ODViN1x1ODViZVx1ODY2OVx1ODdlN1x1ODdlNlx1ODdlMlx1ODdkYlx1ODdlYlx1ODdlYVx1ODdlNVx1ODdkZlx1ODdmM1x1ODdlNFx1ODdkNFx1ODdkY1x1ODdkM1x1ODdlZFx1ODdkOFx1ODdlM1x1ODdhNFx1ODdkN1x1ODdkOVx1ODgwMVx1ODdmNFx1''@;'; put 'put ''ODdlOFx1ODdkZFx1ODk1M1x1ODk0Ylx1ODk0Zlx1ODk0Y1x1ODk0Nlx1ODk1MFx1ODk1MVx1ODk0OVx1OGIyYVx1OGIyN1x1OGIyM1x1OGIzM1x1OGIzMFx1OGIzNVx1OGI0N1x1OGIyZlx1OGIzY1x1OGIzZVx1OGIzMVx1OGIyNVx1OGIzN1x1OGIyNlx1OGIzNlx1OGIyZVx1OGIyNFx1OGIz''@;'; put 'put ''Ylx1OGIzZFx1OGIzYVx1OGM0Mlx1OGM3NVx1OGM5OVx1OGM5OFx1OGM5N1x1OGNmZVx1OGQwNFx1OGQwMlx1OGQwMFx1OGU1Y1x1OGU2Mlx1OGU2MFx1OGU1N1x1OGU1Nlx1OGU1ZVx1OGU2NVx1OGU2N1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0MF0ubGVuZ3RoOysrRSk2NTUzMyE9''@;'; put 'put ''PUJbMjQwXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyNDBdW0VdXT02MTQ0MCtFLExbNjE0NDArRV09QlsyNDBdW0VdKTtmb3IoQlsyNDFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThlNWJcdThlNWFcdThlNjFcdThlNWRcdThl''@;'; put 'put ''NjlcdThlNTRcdThmNDZcdThmNDdcdThmNDhcdThmNGJcdTkxMjhcdTkxM2FcdTkxM2JcdTkxM2VcdTkxYThcdTkxYTVcdTkxYTdcdTkxYWZcdTkxYWFcdTkzYjVcdTkzOGNcdTkzOTJcdTkzYjdcdTkzOWJcdTkzOWRcdTkzODlcdTkzYTdcdTkzOGVcdTkzYWFcdTkzOWVcdTkzYTZcdTkzOTVc''@;'; put 'put ''dTkzODhcdTkzOTlcdTkzOWZcdTkzOGRcdTkzYjFcdTkzOTFcdTkzYjJcdTkzYTRcdTkzYThcdTkzYjRcdTkzYTNcdTkzYTVcdTk1ZDJcdTk1ZDNcdTk1ZDFcdTk2YjNcdTk2ZDdcdTk2ZGFcdTVkYzJcdTk2ZGZcdTk2ZDhcdTk2ZGRcdTk3MjNcdTk3MjJcdTk3MjVcdTk3YWNcdTk3YWVcdTk3''@;'; put 'put ''YThcdTk3YWJcdTk3YTRcdTk3YWFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk3YTJcdTk3YTVcdTk3ZDdcdTk3ZDlcdTk3ZDZcdTk3ZDhcdTk3ZmFcdTk4NTBcdTk4NTFcdTk4NTJcdTk4YjhcdTk5NDFcdTk5M2NcdTk5M2FcdTlhMGZcdTlhMGJcdTlhMDlcdTlh''@;'; put 'put ''MGRcdTlhMDRcdTlhMTFcdTlhMGFcdTlhMDVcdTlhMDdcdTlhMDZcdTlhYzBcdTlhZGNcdTliMDhcdTliMDRcdTliMDVcdTliMjlcdTliMzVcdTliNGFcdTliNGNcdTliNGJcdTliYzdcdTliYzZcdTliYzNcdTliYmZcdTliYzFcdTliYjVcdTliYjhcdTliZDNcdTliYjZcdTliYzRcdTliYjlc''@;'; put 'put ''dTliYmRcdTlkNWNcdTlkNTNcdTlkNGZcdTlkNGFcdTlkNWJcdTlkNGJcdTlkNTlcdTlkNTZcdTlkNGNcdTlkNTdcdTlkNTJcdTlkNTRcdTlkNWZcdTlkNThcdTlkNWFcdTllOGVcdTllOGNcdTllZGZcdTlmMDFcdTlmMDBcdTlmMTZcdTlmMjVcdTlmMmJcdTlmMmFcdTlmMjlcdTlmMjhcdTlm''@;'; put 'put ''NGNcdTlmNTVcdTUxMzRcdTUxMzVcdTUyOTZcdTUyZjdcdTUzYjRcdTU2YWJcdTU2YWRcdTU2YTZcdTU2YTdcdTU2YWFcdTU2YWNcdTU4ZGFcdTU4ZGRcdTU4ZGJcdTU5MTJcdTViM2RcdTViM2VcdTViM2ZcdTVkYzNcdTVlNzBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDFdLmxlbmd0''@;'; put 'put ''aDsrK0UpNjU1MzMhPT1CWzI0MV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjQxXVtFXV09NjE2OTYrRSxMWzYxNjk2K0VdPUJbMjQxXVtFXSk7Zm9yKEJbMjQyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZmJmXHU2MWZiXHU2''@;'; put 'put ''NTA3XHU2NTEwXHU2NTBkXHU2NTA5XHU2NTBjXHU2NTBlXHU2NTg0XHU2NWRlXHU2NWRkXHU2NmRlXHU2YWU3XHU2YWUwXHU2YWNjXHU2YWQxXHU2YWQ5XHU2YWNiXHU2YWRmXHU2YWRjXHU2YWQwXHU2YWViXHU2YWNmXHU2YWNkXHU2YWRlXHU2YjYwXHU2YmIwXHU2YzBjXHU3MDE5XHU3MDI3''@;'; put 'put ''XHU3MDIwXHU3MDE2XHU3MDJiXHU3MDIxXHU3MDIyXHU3MDIzXHU3MDI5XHU3MDE3XHU3MDI0XHU3MDFjXHU3MDJhXHU3MjBjXHU3MjBhXHU3MjA3XHU3MjAyXHU3MjA1XHU3MmE1XHU3MmE2XHU3MmE0XHU3MmEzXHU3MmExXHU3NGNiXHU3NGM1XHU3NGI3XHU3NGMzXHU3NTE2XHU3NjYwXHU3''@;'; put 'put ''N2M5XHU3N2NhXHU3N2M0XHU3N2YxXHU3OTFkXHU3OTFiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OTIxXHU3OTFjXHU3OTE3XHU3OTFlXHU3OWIwXHU3YTY3XHU3YTY4XHU3YzMzXHU3YzNjXHU3YzM5XHU3YzJjXHU3YzNiXHU3Y2VjXHU3Y2VhXHU3ZTc2XHU3''@;'; put 'put ''ZTc1XHU3ZTc4XHU3ZTcwXHU3ZTc3XHU3ZTZmXHU3ZTdhXHU3ZTcyXHU3ZTc0XHU3ZTY4XHU3ZjRiXHU3ZjRhXHU3ZjgzXHU3Zjg2XHU3ZmI3XHU3ZmZkXHU3ZmZlXHU4MDc4XHU4MWQ3XHU4MWQ1XHU4MjY0XHU4MjYxXHU4MjYzXHU4NWViXHU4NWYxXHU4NWVkXHU4NWQ5XHU4NWUxXHU4NWU4''@;'; put 'put ''XHU4NWRhXHU4NWQ3XHU4NWVjXHU4NWYyXHU4NWY4XHU4NWQ4XHU4NWRmXHU4NWUzXHU4NWRjXHU4NWQxXHU4NWYwXHU4NWU2XHU4NWVmXHU4NWRlXHU4NWUyXHU4ODAwXHU4N2ZhXHU4ODAzXHU4N2Y2XHU4N2Y3XHU4ODA5XHU4ODBjXHU4ODBiXHU4ODA2XHU4N2ZjXHU4ODA4XHU4N2ZmXHU4''@;'; put 'put ''ODBhXHU4ODAyXHU4OTYyXHU4OTVhXHU4OTViXHU4OTU3XHU4OTYxXHU4OTVjXHU4OTU4XHU4OTVkXHU4OTU5XHU4OTg4XHU4OWI3XHU4OWI2XHU4OWY2XHU4YjUwXHU4YjQ4XHU4YjRhXHU4YjQwXHU4YjUzXHU4YjU2XHU4YjU0XHU4YjRiXHU4YjU1XHVmZmZkIi5zcGxpdCgiIiksRT0wO0Uh''@;'; put 'put ''PUJbMjQyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDJdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzI0Ml1bRV1dPTYxOTUyK0UsTFs2MTk1MitFXT1CWzI0Ml1bRV0pO2ZvcihCWzI0M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''OGI1MVx1OGI0Mlx1OGI1Mlx1OGI1N1x1OGM0M1x1OGM3N1x1OGM3Nlx1OGM5YVx1OGQwNlx1OGQwN1x1OGQwOVx1OGRhY1x1OGRhYVx1OGRhZFx1OGRhYlx1OGU2ZFx1OGU3OFx1OGU3M1x1OGU2YVx1OGU2Zlx1OGU3Ylx1OGVjMlx1OGY1Mlx1OGY1MVx1OGY0Zlx1OGY1MFx1OGY1M1x1OGZi''@;'; put 'put ''NFx1OTE0MFx1OTEzZlx1OTFiMFx1OTFhZFx1OTNkZVx1OTNjN1x1OTNjZlx1OTNjMlx1OTNkYVx1OTNkMFx1OTNmOVx1OTNlY1x1OTNjY1x1OTNkOVx1OTNhOVx1OTNlNlx1OTNjYVx1OTNkNFx1OTNlZVx1OTNlM1x1OTNkNVx1OTNjNFx1OTNjZVx1OTNjMFx1OTNkMlx1OTNlN1x1OTU3ZFx1''@;'; put 'put ''OTVkYVx1OTVkYlx1OTZlMVx1OTcyOVx1OTcyYlx1OTcyY1x1OTcyOFx1OTcyNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTdiM1x1OTdiN1x1OTdiNlx1OTdkZFx1OTdkZVx1OTdkZlx1OTg1Y1x1OTg1OVx1OTg1ZFx1OTg1N1x1OThiZlx1OThiZFx1OThiYlx1''@;'; put 'put ''OThiZVx1OTk0OFx1OTk0N1x1OTk0M1x1OTlhNlx1OTlhN1x1OWExYVx1OWExNVx1OWEyNVx1OWExZFx1OWEyNFx1OWExYlx1OWEyMlx1OWEyMFx1OWEyN1x1OWEyM1x1OWExZVx1OWExY1x1OWExNFx1OWFjMlx1OWIwYlx1OWIwYVx1OWIwZVx1OWIwY1x1OWIzN1x1OWJlYVx1OWJlYlx1OWJl''@;'; put 'put ''MFx1OWJkZVx1OWJlNFx1OWJlNlx1OWJlMlx1OWJmMFx1OWJkNFx1OWJkN1x1OWJlY1x1OWJkY1x1OWJkOVx1OWJlNVx1OWJkNVx1OWJlMVx1OWJkYVx1OWQ3N1x1OWQ4MVx1OWQ4YVx1OWQ4NFx1OWQ4OFx1OWQ3MVx1OWQ4MFx1OWQ3OFx1OWQ4Nlx1OWQ4Ylx1OWQ4Y1x1OWQ3ZFx1OWQ2Ylx1''@;'; put 'put ''OWQ3NFx1OWQ3NVx1OWQ3MFx1OWQ2OVx1OWQ4NVx1OWQ3M1x1OWQ3Ylx1OWQ4Mlx1OWQ2Zlx1OWQ3OVx1OWQ3Zlx1OWQ4N1x1OWQ2OFx1OWU5NFx1OWU5MVx1OWVjMFx1OWVmY1x1OWYyZFx1OWY0MFx1OWY0MVx1OWY0ZFx1OWY1Nlx1OWY1N1x1OWY1OFx1NTMzN1x1NTZiMlx1ZmZmZCIuc3Bs''@;'; put 'put ''aXQoIiIpLEU9MDtFIT1CWzI0M10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQzXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyNDNdW0VdXT02MjIwOCtFLExbNjIyMDgrRV09QlsyNDNdW0VdKTtmb3IoQlsyNDRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdTU2YjVcdTU2YjNcdTU4ZTNcdTViNDVcdTVkYzZcdTVkYzdcdTVlZWVcdTVlZWZcdTVmYzBcdTVmYzFcdTYxZjlcdTY1MTdcdTY1MTZcdTY1MTVcdTY1MTNcdTY1ZGZcdTY2ZThcdTY2ZTNcdTY2ZTRcdTZhZjNcdTZhZjBcdTZhZWFcdTZhZThcdTZhZjlcdTZhZjFcdTZh''@;'; put 'put ''ZWVcdTZhZWZcdTcwM2NcdTcwMzVcdTcwMmZcdTcwMzdcdTcwMzRcdTcwMzFcdTcwNDJcdTcwMzhcdTcwM2ZcdTcwM2FcdTcwMzlcdTcwNDBcdTcwM2JcdTcwMzNcdTcwNDFcdTcyMTNcdTcyMTRcdTcyYThcdTczN2RcdTczN2NcdTc0YmFcdTc2YWJcdTc2YWFcdTc2YmVcdTc2ZWRcdTc3Y2Nc''@;'; put 'put ''dTc3Y2VcdTc3Y2ZcdTc3Y2RcdTc3ZjJcdTc5MjVcdTc5MjNcdTc5MjdcdTc5MjhcdTc5MjRcdTc5MjlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc5YjJcdTdhNmVcdTdhNmNcdTdhNmRcdTdhZjdcdTdjNDlcdTdjNDhcdTdjNGFcdTdjNDdcdTdjNDVcdTdjZWVc''@;'; put 'put ''dTdlN2JcdTdlN2VcdTdlODFcdTdlODBcdTdmYmFcdTdmZmZcdTgwNzlcdTgxZGJcdTgxZDlcdTgyMGJcdTgyNjhcdTgyNjlcdTg2MjJcdTg1ZmZcdTg2MDFcdTg1ZmVcdTg2MWJcdTg2MDBcdTg1ZjZcdTg2MDRcdTg2MDlcdTg2MDVcdTg2MGNcdTg1ZmRcdTg4MTlcdTg4MTBcdTg4MTFcdTg4''@;'; put 'put ''MTdcdTg4MTNcdTg4MTZcdTg5NjNcdTg5NjZcdTg5YjlcdTg5ZjdcdThiNjBcdThiNmFcdThiNWRcdThiNjhcdThiNjNcdThiNjVcdThiNjdcdThiNmRcdThkYWVcdThlODZcdThlODhcdThlODRcdThmNTlcdThmNTZcdThmNTdcdThmNTVcdThmNThcdThmNWFcdTkwOGRcdTkxNDNcdTkxNDFc''@;'; put 'put ''dTkxYjdcdTkxYjVcdTkxYjJcdTkxYjNcdTk0MGJcdTk0MTNcdTkzZmJcdTk0MjBcdTk0MGZcdTk0MTRcdTkzZmVcdTk0MTVcdTk0MTBcdTk0MjhcdTk0MTlcdTk0MGRcdTkzZjVcdTk0MDBcdTkzZjdcdTk0MDdcdTk0MGVcdTk0MTZcdTk0MTJcdTkzZmFcdTk0MDlcdTkzZjhcdTk0MGFcdTkz''@;'; put 'put ''ZmZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0NF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjQ0XVtFXV09NjI0NjQrRSxMWzYyNDY0K0VdPUJbMjQ0XVtFXSk7Zm9yKEJbMjQ1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5M2ZjXHU5NDBjXHU5M2Y2XHU5NDExXHU5NDA2XHU5NWRlXHU5NWUwXHU5NWRmXHU5NzJlXHU5NzJmXHU5N2I5XHU5N2JiXHU5N2ZkXHU5N2ZlXHU5ODYwXHU5ODYyXHU5ODYzXHU5ODVmXHU5OGMxXHU5OGMyXHU5OTUwXHU5OTRlXHU5OTU5XHU5''@;'; put 'put ''OTRjXHU5OTRiXHU5OTUzXHU5YTMyXHU5YTM0XHU5YTMxXHU5YTJjXHU5YTJhXHU5YTM2XHU5YTI5XHU5YTJlXHU5YTM4XHU5YTJkXHU5YWM3XHU5YWNhXHU5YWM2XHU5YjEwXHU5YjEyXHU5YjExXHU5YzBiXHU5YzA4XHU5YmY3XHU5YzA1XHU5YzEyXHU5YmY4XHU5YzQwXHU5YzA3XHU5YzBl''@;'; put 'put ''XHU5YzA2XHU5YzE3XHU5YzE0XHU5YzA5XHU5ZDlmXHU5ZDk5XHU5ZGE0XHU5ZDlkXHU5ZDkyXHU5ZDk4XHU5ZDkwXHU5ZDliXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZGEwXHU5ZDk0XHU5ZDljXHU5ZGFhXHU5ZDk3XHU5ZGExXHU5ZDlhXHU5ZGEyXHU5ZGE4''@;'; put 'put ''XHU5ZDllXHU5ZGEzXHU5ZGJmXHU5ZGE5XHU5ZDk2XHU5ZGE2XHU5ZGE3XHU5ZTk5XHU5ZTliXHU5ZTlhXHU5ZWU1XHU5ZWU0XHU5ZWU3XHU5ZWU2XHU5ZjMwXHU5ZjJlXHU5ZjViXHU5ZjYwXHU5ZjVlXHU5ZjVkXHU5ZjU5XHU5ZjkxXHU1MTNhXHU1MTM5XHU1Mjk4XHU1Mjk3XHU1NmMzXHU1''@;'; put 'put ''NmJkXHU1NmJlXHU1YjQ4XHU1YjQ3XHU1ZGNiXHU1ZGNmXHU1ZWYxXHU2MWZkXHU2NTFiXHU2YjAyXHU2YWZjXHU2YjAzXHU2YWY4XHU2YjAwXHU3MDQzXHU3MDQ0XHU3MDRhXHU3MDQ4XHU3MDQ5XHU3MDQ1XHU3MDQ2XHU3MjFkXHU3MjFhXHU3MjE5XHU3MzdlXHU3NTE3XHU3NjZhXHU3N2Qw''@;'; put 'put ''XHU3OTJkXHU3OTMxXHU3OTJmXHU3YzU0XHU3YzUzXHU3Y2YyXHU3ZThhXHU3ZTg3XHU3ZTg4XHU3ZThiXHU3ZTg2XHU3ZThkXHU3ZjRkXHU3ZmJiXHU4MDMwXHU4MWRkXHU4NjE4XHU4NjJhXHU4NjI2XHU4NjFmXHU4NjIzXHU4NjFjXHU4NjE5XHU4NjI3XHU4NjJlXHU4NjIxXHU4NjIwXHU4''@;'; put 'put ''NjI5XHU4NjFlXHU4NjI1XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQ1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDVdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzI0NV1bRV1dPTYyNzIwK0UsTFs2MjcyMCtFXT1CWzI0NV1bRV0pO2ZvcihCWzI0Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODgyOVx1ODgxZFx1ODgxYlx1ODgyMFx1ODgyNFx1ODgxY1x1ODgyYlx1ODg0YVx1ODk2ZFx1ODk2OVx1ODk2ZVx1ODk2Ylx1ODlmYVx1OGI3OVx1OGI3OFx1OGI0NVx1OGI3YVx1OGI3Ylx1OGQxMFx1OGQxNFx1OGRhZlx1''@;'; put 'put ''OGU4ZVx1OGU4Y1x1OGY1ZVx1OGY1Ylx1OGY1ZFx1OTE0Nlx1OTE0NFx1OTE0NVx1OTFiOVx1OTQzZlx1OTQzYlx1OTQzNlx1OTQyOVx1OTQzZFx1OTQzY1x1OTQzMFx1OTQzOVx1OTQyYVx1OTQzN1x1OTQyY1x1OTQ0MFx1OTQzMVx1OTVlNVx1OTVlNFx1OTVlM1x1OTczNVx1OTczYVx1OTdi''@;'; put 'put ''Zlx1OTdlMVx1OTg2NFx1OThjOVx1OThjNlx1OThjMFx1OTk1OFx1OTk1Nlx1OWEzOVx1OWEzZFx1OWE0Nlx1OWE0NFx1OWE0Mlx1OWE0MVx1OWEzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWEzZlx1OWFjZFx1OWIxNVx1OWIxN1x1OWIxOFx1OWIxNlx1OWIz''@;'; put 'put ''YVx1OWI1Mlx1OWMyYlx1OWMxZFx1OWMxY1x1OWMyY1x1OWMyM1x1OWMyOFx1OWMyOVx1OWMyNFx1OWMyMVx1OWRiN1x1OWRiNlx1OWRiY1x1OWRjMVx1OWRjN1x1OWRjYVx1OWRjZlx1OWRiZVx1OWRjNVx1OWRjM1x1OWRiYlx1OWRiNVx1OWRjZVx1OWRiOVx1OWRiYVx1OWRhY1x1OWRjOFx1''@;'; put 'put ''OWRiMVx1OWRhZFx1OWRjY1x1OWRiM1x1OWRjZFx1OWRiMlx1OWU3YVx1OWU5Y1x1OWVlYlx1OWVlZVx1OWVlZFx1OWYxYlx1OWYxOFx1OWYxYVx1OWYzMVx1OWY0ZVx1OWY2NVx1OWY2NFx1OWY5Mlx1NGViOVx1NTZjNlx1NTZjNVx1NTZjYlx1NTk3MVx1NWI0Ylx1NWI0Y1x1NWRkNVx1NWRk''@;'; put 'put ''MVx1NWVmMlx1NjUyMVx1NjUyMFx1NjUyNlx1NjUyMlx1NmIwYlx1NmIwOFx1NmIwOVx1NmMwZFx1NzA1NVx1NzA1Nlx1NzA1N1x1NzA1Mlx1NzIxZVx1NzIxZlx1NzJhOVx1NzM3Zlx1NzRkOFx1NzRkNVx1NzRkOVx1NzRkN1x1NzY2ZFx1NzZhZFx1NzkzNVx1NzliNFx1N2E3MFx1N2E3MVx1''@;'; put 'put ''N2M1N1x1N2M1Y1x1N2M1OVx1N2M1Ylx1N2M1YVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQ2XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyNDZdW0VdXT02Mjk3NitFLExbNjI5NzYrRV09QlsyNDZdW0VdKTtmb3IoQlsyNDddPSJcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdjZjRcdTdjZjFcdTdlOTFcdTdmNGZcdTdmODdcdTgxZGVcdTgyNmJcdTg2MzRcdTg2MzVcdTg2MzNcdTg2MmNcdTg2MzJcdTg2MzZcdTg4MmNcdTg4MjhcdTg4MjZcdTg4MmFcdTg4MjVcdTg5NzFc''@;'; put 'put ''dTg5YmZcdTg5YmVcdTg5ZmJcdThiN2VcdThiODRcdThiODJcdThiODZcdThiODVcdThiN2ZcdThkMTVcdThlOTVcdThlOTRcdThlOWFcdThlOTJcdThlOTBcdThlOTZcdThlOTdcdThmNjBcdThmNjJcdTkxNDdcdTk0NGNcdTk0NTBcdTk0NGFcdTk0NGJcdTk0NGZcdTk0NDdcdTk0NDVcdTk0''@;'; put 'put ''NDhcdTk0NDlcdTk0NDZcdTk3M2ZcdTk3ZTNcdTk4NmFcdTk4NjlcdTk4Y2JcdTk5NTRcdTk5NWJcdTlhNGVcdTlhNTNcdTlhNTRcdTlhNGNcdTlhNGZcdTlhNDhcdTlhNGFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlhNDlcdTlhNTJcdTlhNTBcdTlhZDBcdTli''@;'; put 'put ''MTlcdTliMmJcdTliM2JcdTliNTZcdTliNTVcdTljNDZcdTljNDhcdTljM2ZcdTljNDRcdTljMzlcdTljMzNcdTljNDFcdTljM2NcdTljMzdcdTljMzRcdTljMzJcdTljM2RcdTljMzZcdTlkZGJcdTlkZDJcdTlkZGVcdTlkZGFcdTlkY2JcdTlkZDBcdTlkZGNcdTlkZDFcdTlkZGZcdTlkZTlc''@;'; put 'put ''dTlkZDlcdTlkZDhcdTlkZDZcdTlkZjVcdTlkZDVcdTlkZGRcdTllYjZcdTllZjBcdTlmMzVcdTlmMzNcdTlmMzJcdTlmNDJcdTlmNmJcdTlmOTVcdTlmYTJcdTUxM2RcdTUyOTlcdTU4ZThcdTU4ZTdcdTU5NzJcdTViNGRcdTVkZDhcdTg4MmZcdTVmNGZcdTYyMDFcdTYyMDNcdTYyMDRcdTY1''@;'; put 'put ''MjlcdTY1MjVcdTY1OTZcdTY2ZWJcdTZiMTFcdTZiMTJcdTZiMGZcdTZiY2FcdTcwNWJcdTcwNWFcdTcyMjJcdTczODJcdTczODFcdTczODNcdTc2NzBcdTc3ZDRcdTdjNjdcdTdjNjZcdTdlOTVcdTgyNmNcdTg2M2FcdTg2NDBcdTg2MzlcdTg2M2NcdTg2MzFcdTg2M2JcdTg2M2VcdTg4MzBc''@;'; put 'put ''dTg4MzJcdTg4MmVcdTg4MzNcdTg5NzZcdTg5NzRcdTg5NzNcdTg5ZmVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0N11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjQ3XVtFXV09NjMyMzIrRSxMWzYzMjMyK0VdPUJbMjQ3XVtFXSk7Zm9y''@;'; put 'put ''KEJbMjQ4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YjhjXHU4YjhlXHU4YjhiXHU4Yjg4XHU4YzQ1XHU4ZDE5XHU4ZTk4XHU4ZjY0XHU4ZjYzXHU5MWJjXHU5NDYyXHU5NDU1XHU5NDVkXHU5NDU3XHU5NDVlXHU5N2M0XHU5N2M1''@;'; put 'put ''XHU5ODAwXHU5YTU2XHU5YTU5XHU5YjFlXHU5YjFmXHU5YjIwXHU5YzUyXHU5YzU4XHU5YzUwXHU5YzRhXHU5YzRkXHU5YzRiXHU5YzU1XHU5YzU5XHU5YzRjXHU5YzRlXHU5ZGZiXHU5ZGY3XHU5ZGVmXHU5ZGUzXHU5ZGViXHU5ZGY4XHU5ZGU0XHU5ZGY2XHU5ZGUxXHU5ZGVlXHU5ZGU2XHU5''@;'; put 'put ''ZGYyXHU5ZGYwXHU5ZGUyXHU5ZGVjXHU5ZGY0XHU5ZGYzXHU5ZGU4XHU5ZGVkXHU5ZWMyXHU5ZWQwXHU5ZWYyXHU5ZWYzXHU5ZjA2XHU5ZjFjXHU5ZjM4XHU5ZjM3XHU5ZjM2XHU5ZjQzXHU5ZjRmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZjcxXHU5ZjcwXHU5''@;'; put 'put ''ZjZlXHU5ZjZmXHU1NmQzXHU1NmNkXHU1YjRlXHU1YzZkXHU2NTJkXHU2NmVkXHU2NmVlXHU2YjEzXHU3MDVmXHU3MDYxXHU3MDVkXHU3MDYwXHU3MjIzXHU3NGRiXHU3NGU1XHU3N2Q1XHU3OTM4XHU3OWI3XHU3OWI2XHU3YzZhXHU3ZTk3XHU3Zjg5XHU4MjZkXHU4NjQzXHU4ODM4XHU4ODM3''@;'; put 'put ''XHU4ODM1XHU4ODRiXHU4Yjk0XHU4Yjk1XHU4ZTllXHU4ZTlmXHU4ZWEwXHU4ZTlkXHU5MWJlXHU5MWJkXHU5MWMyXHU5NDZiXHU5NDY4XHU5NDY5XHU5NmU1XHU5NzQ2XHU5NzQzXHU5NzQ3XHU5N2M3XHU5N2U1XHU5YTVlXHU5YWQ1XHU5YjU5XHU5YzYzXHU5YzY3XHU5YzY2XHU5YzYyXHU5''@;'; put 'put ''YzVlXHU5YzYwXHU5ZTAyXHU5ZGZlXHU5ZTA3XHU5ZTAzXHU5ZTA2XHU5ZTA1XHU5ZTAwXHU5ZTAxXHU5ZTA5XHU5ZGZmXHU5ZGZkXHU5ZTA0XHU5ZWEwXHU5ZjFlXHU5ZjQ2XHU5Zjc0XHU5Zjc1XHU5Zjc2XHU1NmQ0XHU2NTJlXHU2NWI4XHU2YjE4XHU2YjE5XHU2YjE3XHU2YjFhXHU3MDYy''@;'; put 'put ''XHU3MjI2XHU3MmFhXHU3N2Q4XHU3N2Q5XHU3OTM5XHU3YzY5XHU3YzZiXHU3Y2Y2XHU3ZTlhXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQ4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDhdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzI0OF1bRV1dPTYzNDg4K0UsTFs2MzQ4OCtFXT1C''@;'; put 'put ''WzI0OF1bRV0pO2ZvcihCWzI0OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2U5OFx1N2U5Ylx1N2U5OVx1ODFlMFx1ODFlMVx1ODY0Nlx1ODY0N1x1ODY0OFx1ODk3OVx1ODk3YVx1ODk3Y1x1ODk3Ylx1ODlmZlx1OGI5OFx1OGI5''@;'; put 'put ''OVx1OGVhNVx1OGVhNFx1OGVhM1x1OTQ2ZVx1OTQ2ZFx1OTQ2Zlx1OTQ3MVx1OTQ3M1x1OTc0OVx1OTg3Mlx1OTk1Zlx1OWM2OFx1OWM2ZVx1OWM2ZFx1OWUwYlx1OWUwZFx1OWUxMFx1OWUwZlx1OWUxMlx1OWUxMVx1OWVhMVx1OWVmNVx1OWYwOVx1OWY0N1x1OWY3OFx1OWY3Ylx1OWY3YVx1''@;'; put 'put ''OWY3OVx1NTcxZVx1NzA2Nlx1N2M2Zlx1ODgzY1x1OGRiMlx1OGVhNlx1OTFjM1x1OTQ3NFx1OTQ3OFx1OTQ3Nlx1OTQ3NVx1OWE2MFx1OWM3NFx1OWM3M1x1OWM3MVx1OWM3NVx1OWUxNFx1OWUxM1x1OWVmNlx1OWYwYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''OWZhNFx1NzA2OFx1NzA2NVx1N2NmN1x1ODY2YVx1ODgzZVx1ODgzZFx1ODgzZlx1OGI5ZVx1OGM5Y1x1OGVhOVx1OGVjOVx1OTc0Ylx1OTg3M1x1OTg3NFx1OThjY1x1OTk2MVx1OTlhYlx1OWE2NFx1OWE2Nlx1OWE2N1x1OWIyNFx1OWUxNVx1OWUxN1x1OWY0OFx1NjIwN1x1NmIxZVx1NzIy''@;'; put 'put ''N1x1ODY0Y1x1OGVhOFx1OTQ4Mlx1OTQ4MFx1OTQ4MVx1OWE2OVx1OWE2OFx1OWIyZVx1OWUxOVx1NzIyOVx1ODY0Ylx1OGI5Zlx1OTQ4M1x1OWM3OVx1OWViN1x1NzY3NVx1OWE2Ylx1OWM3YVx1OWUxZFx1NzA2OVx1NzA2YVx1OWVhNFx1OWY3ZVx1OWY0OVx1OWY5OFx1Nzg4MVx1OTJiOVx1''@;'; put 'put ''ODhjZlx1NThiYlx1NjA1Mlx1N2NhN1x1NWFmYVx1MjU1NFx1MjU2Nlx1MjU1N1x1MjU2MFx1MjU2Y1x1MjU2M1x1MjU1YVx1MjU2OVx1MjU1ZFx1MjU1Mlx1MjU2NFx1MjU1NVx1MjU1ZVx1MjU2YVx1MjU2MVx1MjU1OFx1MjU2N1x1MjU1Ylx1MjU1M1x1MjU2NVx1MjU1Nlx1MjU1Zlx1MjU2''@;'; put 'put ''Ylx1MjU2Mlx1MjU1OVx1MjU2OFx1MjU1Y1x1MjU1MVx1MjU1MFx1MjU2ZFx1MjU2ZVx1MjU3MFx1MjU2Zlx1MjU5M1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0OV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQ5XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyNDldW0VdXT02Mzc0NCtF''@;'; put 'put ''LExbNjM3NDQrRV09QlsyNDldW0VdKTtyZXR1cm57ZW5jOm1lLGRlYzpMfX0oKSxKZVsxMjUwXT1mdW5jdGlvbigpe2Zvcih2YXIgTD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThc''@;'; put 'put ''eDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTIwYWNcdWZmZmRcdTIwMWFcdWZmZmRcdTIwMWVcdTIwMjZc''@;'; put 'put ''dTIwMjBcdTIwMjFcdWZmZmRcdTIwMzBcdTAxNjBcdTIwMzlcdTAxNWFcdTAxNjRcdTAxN2RcdTAxNzlcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdTIxMjJcdTAxNjFcdTIwM2FcdTAxNWJcdTAxNjVcdTAxN2VcdTAxN2FceGEwXHUwMmM3''@;'; put 'put ''XHUwMmQ4XHUwMTQxXHhhNFx1MDEwNFx4YTZceGE3XHhhOFx4YTlcdTAxNWVceGFiXHhhY1x4YWRceGFlXHUwMTdiXHhiMFx4YjFcdTAyZGJcdTAxNDJceGI0XHhiNVx4YjZceGI3XHhiOFx1MDEwNVx1MDE1Zlx4YmJcdTAxM2RcdTAyZGRcdTAxM2VcdTAxN2NcdTAxNTRceGMxXHhjMlx1MDEw''@;'; put 'put ''Mlx4YzRcdTAxMzlcdTAxMDZceGM3XHUwMTBjXHhjOVx1MDExOFx4Y2JcdTAxMWFceGNkXHhjZVx1MDEwZVx1MDExMFx1MDE0M1x1MDE0N1x4ZDNceGQ0XHUwMTUwXHhkNlx4ZDdcdTAxNThcdTAxNmVceGRhXHUwMTcwXHhkY1x4ZGRcdTAxNjJceGRmXHUwMTU1XHhlMVx4ZTJcdTAxMDNceGU0''@;'; put 'put ''XHUwMTNhXHUwMTA3XHhlN1x1MDEwZFx4ZTlcdTAxMTlceGViXHUwMTFiXHhlZFx4ZWVcdTAxMGZcdTAxMTFcdTAxNDRcdTAxNDhceGYzXHhmNFx1MDE1MVx4ZjZceGY3XHUwMTU5XHUwMTZmXHhmYVx1MDE3MVx4ZmNceGZkXHUwMTYzXHUwMmQ5IixtZT1bXSxCPXt9LEU9MDtFIT1MLmxlbmd0''@;'; put 'put ''aDsrK0UpNjU1MzMhPT1MLmNoYXJDb2RlQXQoRSkmJihCW0wuY2hhckF0KEUpXT1FKSxtZVtFXT1MLmNoYXJBdChFKTtyZXR1cm57ZW5jOkIsZGVjOm1lfX0oKSxKZVsxMjUxXT1mdW5jdGlvbigpe2Zvcih2YXIgTD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxy''@;'; put 'put ''XHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6''@;'; put 'put ''e3x9flx4N2ZcdTA0MDJcdTA0MDNcdTIwMWFcdTA0NTNcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTIwYWNcdTIwMzBcdTA0MDlcdTIwMzlcdTA0MGFcdTA0MGNcdTA0MGJcdTA0MGZcdTA0NTJcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdTIxMjJc''@;'; put 'put ''dTA0NTlcdTIwM2FcdTA0NWFcdTA0NWNcdTA0NWJcdTA0NWZceGEwXHUwNDBlXHUwNDVlXHUwNDA4XHhhNFx1MDQ5MFx4YTZceGE3XHUwNDAxXHhhOVx1MDQwNFx4YWJceGFjXHhhZFx4YWVcdTA0MDdceGIwXHhiMVx1MDQwNlx1MDQ1Nlx1MDQ5MVx4YjVceGI2XHhiN1x1MDQ1MVx1MjExNlx1''@;'; put 'put ''MDQ1NFx4YmJcdTA0NThcdTA0MDVcdTA0NTVcdTA0NTdcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVc''@;'; put 'put ''dTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NDBcdTA0''@;'; put 'put ''NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGYiLG1lPVtdLEI9e30sRT0wO0UhPUwubGVuZ3RoOysrRSk2NTUzMyE9PUwuY2hhckNvZGVBdChFKSYmKEJbTC5jaGFyQXQoRSldPUUpLG1l''@;'; put 'put ''W0VdPUwuY2hhckF0KEUpO3JldHVybntlbmM6QixkZWM6bWV9fSgpLEplWzEyNTJdPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFh''@;'; put 'put ''XHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MjBhY1x1ZmZmZFx1MjAxYVx1MDE5Mlx1MjAxZVx1MjAyNlx1MjAyMFx1''@;'; put 'put ''MjAyMVx1MDJjNlx1MjAzMFx1MDE2MFx1MjAzOVx1MDE1Mlx1ZmZmZFx1MDE3ZFx1ZmZmZFx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDJkY1x1MjEyMlx1MDE2MVx1MjAzYVx1MDE1M1x1ZmZmZFx1MDE3ZVx1MDE3OFx4YTBceGExXHhhMlx4YTNc''@;'; put 'put ''eGE0XHhhNVx4YTZceGE3XHhhOFx4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHhiYVx4YmJceGJjXHhiZFx4YmVceGJmXHhjMFx4YzFceGMyXHhjM1x4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHhjY1x4''@;'; put 'put ''Y2RceGNlXHhjZlx4ZDBceGQxXHhkMlx4ZDNceGQ0XHhkNVx4ZDZceGQ3XHhkOFx4ZDlceGRhXHhkYlx4ZGNceGRkXHhkZVx4ZGZceGUwXHhlMVx4ZTJceGUzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHhmMFx4ZjFceGYyXHhmM1x4ZjRceGY1XHhm''@;'; put 'put ''Nlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhmY1x4ZmRceGZlXHhmZiIsbWU9W10sQj17fSxFPTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSksbWVbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzptZX19KCksSmVbMTI1M109''@;'; put 'put ''ZnVuY3Rpb24oKXtmb3IodmFyIEw9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7''@;'; put 'put ''PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHVmZmZkXHUyMDMwXHVmZmZkXHUyMDM5XHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHUyMTIyXHVmZmZkXHUyMDNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHhhMFx1MDM4NVx1MDM4Nlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlcdWZmZmRceGFiXHhhY1x4YWRceGFl''@;'; put 'put ''XHUyMDE1XHhiMFx4YjFceGIyXHhiM1x1MDM4NFx4YjVceGI2XHhiN1x1MDM4OFx1MDM4OVx1MDM4YVx4YmJcdTAzOGNceGJkXHUwMzhlXHUwMzhmXHUwMzkwXHUwMzkxXHUwMzkyXHUwMzkzXHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk4XHUwMzk5XHUwMzlhXHUwMzliXHUwMzljXHUw''@;'; put 'put ''MzlkXHUwMzllXHUwMzlmXHUwM2EwXHUwM2ExXHVmZmZkXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHUwM2FhXHUwM2FiXHUwM2FjXHUwM2FkXHUwM2FlXHUwM2FmXHUwM2IwXHUwM2IxXHUwM2IyXHUwM2IzXHUwM2I0XHUwM2I1XHUwM2I2XHUwM2I3XHUwM2I4''@;'; put 'put ''XHUwM2I5XHUwM2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MyXHUwM2MzXHUwM2M0XHUwM2M1XHUwM2M2XHUwM2M3XHUwM2M4XHUwM2M5XHUwM2NhXHUwM2NiXHUwM2NjXHUwM2NkXHUwM2NlXHVmZmZkIixtZT1bXSxCPXt9LEU9MDtFIT1MLmxlbmd0''@;'; put 'put ''aDsrK0UpNjU1MzMhPT1MLmNoYXJDb2RlQXQoRSkmJihCW0wuY2hhckF0KEUpXT1FKSxtZVtFXT1MLmNoYXJBdChFKTtyZXR1cm57ZW5jOkIsZGVjOm1lfX0oKSxKZVsxMjU0XT1mdW5jdGlvbigpe2Zvcih2YXIgTD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxy''@;'; put 'put ''XHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6''@;'; put 'put ''e3x9flx4N2ZcdTIwYWNcdWZmZmRcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTAyYzZcdTIwMzBcdTAxNjBcdTIwMzlcdTAxNTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTAyZGNcdTIxMjJc''@;'; put 'put ''dTAxNjFcdTIwM2FcdTAxNTNcdWZmZmRcdWZmZmRcdTAxNzhceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4''@;'; put 'put ''YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZcdTAxMWVceGQxXHhkMlx4ZDNceGQ0XHhkNVx4ZDZceGQ3XHhkOFx4ZDlceGRhXHhkYlx4ZGNcdTAxMzBcdTAxNWVceGRmXHhlMFx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx4ZTdc''@;'; put 'put ''eGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx1MDExZlx4ZjFceGYyXHhmM1x4ZjRceGY1XHhmNlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhmY1x1MDEzMVx1MDE1Zlx4ZmYiLG1lPVtdLEI9e30sRT0wO0UhPUwubGVuZ3RoOysrRSk2NTUzMyE9PUwuY2hhckNvZGVBdChFKSYmKEJbTC5j''@;'; put 'put ''aGFyQXQoRSldPUUpLG1lW0VdPUwuY2hhckF0KEUpO3JldHVybntlbmM6QixkZWM6bWV9fSgpLEplWzEyNTVdPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZc''@;'; put 'put ''eDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MjBhY1x1ZmZmZFx1MjAxYVx1MDE5Mlx1MjAx''@;'; put 'put ''ZVx1MjAyNlx1MjAyMFx1MjAyMVx1MDJjNlx1MjAzMFx1ZmZmZFx1MjAzOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDJkY1x1MjEyMlx1ZmZmZFx1MjAzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx4''@;'; put 'put ''YTBceGExXHhhMlx4YTNcdTIwYWFceGE1XHhhNlx4YTdceGE4XHhhOVx4ZDdceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGY3XHhiYlx4YmNceGJkXHhiZVx4YmZcdTA1YjBcdTA1YjFcdTA1YjJcdTA1YjNcdTA1YjRcdTA1YjVc''@;'; put 'put ''dTA1YjZcdTA1YjdcdTA1YjhcdTA1YjlcdWZmZmRcdTA1YmJcdTA1YmNcdTA1YmRcdTA1YmVcdTA1YmZcdTA1YzBcdTA1YzFcdTA1YzJcdTA1YzNcdTA1ZjBcdTA1ZjFcdTA1ZjJcdTA1ZjNcdTA1ZjRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTA1ZDBcdTA1''@;'; put 'put ''ZDFcdTA1ZDJcdTA1ZDNcdTA1ZDRcdTA1ZDVcdTA1ZDZcdTA1ZDdcdTA1ZDhcdTA1ZDlcdTA1ZGFcdTA1ZGJcdTA1ZGNcdTA1ZGRcdTA1ZGVcdTA1ZGZcdTA1ZTBcdTA1ZTFcdTA1ZTJcdTA1ZTNcdTA1ZTRcdTA1ZTVcdTA1ZTZcdTA1ZTdcdTA1ZThcdTA1ZTlcdTA1ZWFcdWZmZmRcdWZmZmRc''@;'; put 'put ''dTIwMGVcdTIwMGZcdWZmZmQiLG1lPVtdLEI9e30sRT0wO0UhPUwubGVuZ3RoOysrRSk2NTUzMyE9PUwuY2hhckNvZGVBdChFKSYmKEJbTC5jaGFyQXQoRSldPUUpLG1lW0VdPUwuY2hhckF0KEUpO3JldHVybntlbmM6QixkZWM6bWV9fSgpLEplWzEyNTZdPWZ1bmN0aW9uKCl7Zm9yKHZhciBM''@;'; put 'put ''PSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5P''@;'; put 'put ''UFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MjBhY1x1MDY3ZVx1MjAxYVx1MDE5Mlx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MDJjNlx1MjAzMFx1MDY3OVx1MjAzOVx1MDE1Mlx1MDY4Nlx1MDY5OFx1MDY4OFx1MDZhZlx1MjAxOFx1MjAx''@;'; put 'put ''OVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDZhOVx1MjEyMlx1MDY5MVx1MjAzYVx1MDE1M1x1MjAwY1x1MjAwZFx1MDZiYVx4YTBcdTA2MGNceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx1MDZiZVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4''@;'; put 'put ''YjRceGI1XHhiNlx4YjdceGI4XHhiOVx1MDYxYlx4YmJceGJjXHhiZFx4YmVcdTA2MWZcdTA2YzFcdTA2MjFcdTA2MjJcdTA2MjNcdTA2MjRcdTA2MjVcdTA2MjZcdTA2MjdcdTA2MjhcdTA2MjlcdTA2MmFcdTA2MmJcdTA2MmNcdTA2MmRcdTA2MmVcdTA2MmZcdTA2MzBcdTA2MzFcdTA2MzJc''@;'; put 'put ''dTA2MzNcdTA2MzRcdTA2MzVcdTA2MzZceGQ3XHUwNjM3XHUwNjM4XHUwNjM5XHUwNjNhXHUwNjQwXHUwNjQxXHUwNjQyXHUwNjQzXHhlMFx1MDY0NFx4ZTJcdTA2NDVcdTA2NDZcdTA2NDdcdTA2NDhceGU3XHhlOFx4ZTlceGVhXHhlYlx1MDY0OVx1MDY0YVx4ZWVceGVmXHUwNjRiXHUwNjRj''@;'; put 'put ''XHUwNjRkXHUwNjRlXHhmNFx1MDY0Zlx1MDY1MFx4ZjdcdTA2NTFceGY5XHUwNjUyXHhmYlx4ZmNcdTIwMGVcdTIwMGZcdTA2ZDIiLG1lPVtdLEI9e30sRT0wO0UhPUwubGVuZ3RoOysrRSk2NTUzMyE9PUwuY2hhckNvZGVBdChFKSYmKEJbTC5jaGFyQXQoRSldPUUpLG1lW0VdPUwuY2hhckF0''@;'; put 'put ''KEUpO3JldHVybntlbmM6QixkZWM6bWV9fSgpLEplWzEyNTddPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFk''@;'; put 'put ''XHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MjBhY1x1ZmZmZFx1MjAxYVx1ZmZmZFx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1ZmZmZFx1''@;'; put 'put ''MjAzMFx1ZmZmZFx1MjAzOVx1ZmZmZFx4YThcdTAyYzdceGI4XHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHUyMTIyXHVmZmZkXHUyMDNhXHVmZmZkXHhhZlx1MDJkYlx1ZmZmZFx4YTBcdWZmZmRceGEyXHhhM1x4YTRcdWZmZmRceGE2XHhh''@;'; put 'put ''N1x4ZDhceGE5XHUwMTU2XHhhYlx4YWNceGFkXHhhZVx4YzZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4ZjhceGI5XHUwMTU3XHhiYlx4YmNceGJkXHhiZVx4ZTZcdTAxMDRcdTAxMmVcdTAxMDBcdTAxMDZceGM0XHhjNVx1MDExOFx1MDExMlx1MDEwY1x4YzlcdTAxNzlcdTAx''@;'; put 'put ''MTZcdTAxMjJcdTAxMzZcdTAxMmFcdTAxM2JcdTAxNjBcdTAxNDNcdTAxNDVceGQzXHUwMTRjXHhkNVx4ZDZceGQ3XHUwMTcyXHUwMTQxXHUwMTVhXHUwMTZhXHhkY1x1MDE3Ylx1MDE3ZFx4ZGZcdTAxMDVcdTAxMmZcdTAxMDFcdTAxMDdceGU0XHhlNVx1MDExOVx1MDExM1x1MDEwZFx4ZTlc''@;'; put 'put ''dTAxN2FcdTAxMTdcdTAxMjNcdTAxMzdcdTAxMmJcdTAxM2NcdTAxNjFcdTAxNDRcdTAxNDZceGYzXHUwMTRkXHhmNVx4ZjZceGY3XHUwMTczXHUwMTQyXHUwMTViXHUwMTZiXHhmY1x1MDE3Y1x1MDE3ZVx1MDJkOSIsbWU9W10sQj17fSxFPTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5j''@;'; put 'put ''aGFyQ29kZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSksbWVbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzptZX19KCksSmVbMTI1OF09ZnVuY3Rpb24oKXtmb3IodmFyIEw9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFc''@;'; put 'put ''eDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUyMGFjXHVm''@;'; put 'put ''ZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHVmZmZkXHUyMDM5XHUwMTUyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwMmRjXHUyMTIyXHVmZmZkXHUyMDNhXHUwMTUz''@;'; put 'put ''XHVmZmZkXHVmZmZkXHUwMTc4XHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZceGMwXHhjMVx4YzJcdTAxMDJc''@;'; put 'put ''eGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx1MDMwMFx4Y2RceGNlXHhjZlx1MDExMFx4ZDFcdTAzMDlceGQzXHhkNFx1MDFhMFx4ZDZceGQ3XHhkOFx4ZDlceGRhXHhkYlx4ZGNcdTAxYWZcdTAzMDNceGRmXHhlMFx4ZTFceGUyXHUwMTAzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5''@;'; put 'put ''XHhlYVx4ZWJcdTAzMDFceGVkXHhlZVx4ZWZcdTAxMTFceGYxXHUwMzIzXHhmM1x4ZjRcdTAxYTFceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHUwMWIwXHUyMGFiXHhmZiIsbWU9W10sQj17fSxFPTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltMLmNo''@;'; put 'put ''YXJBdChFKV09RSksbWVbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzptZX19KCksSmVbMWU0XT1mdW5jdGlvbigpe2Zvcih2YXIgTD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgx''@;'; put 'put ''N1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGM0XHhjNVx4YzdceGM5XHhkMVx4ZDZceGRjXHhl''@;'; put 'put ''MVx4ZTBceGUyXHhlNFx4ZTNceGU1XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGVkXHhlY1x4ZWVceGVmXHhmMVx4ZjNceGYyXHhmNFx4ZjZceGY1XHhmYVx4ZjlceGZiXHhmY1x1MjAyMFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2XHhkZlx4YWVceGE5XHUyMTIyXHhiNFx4YThcdTIyNjBceGM2''@;'; put 'put ''XHhkOFx1MjIxZVx4YjFcdTIyNjRcdTIyNjVceGE1XHhiNVx1MjIwMlx1MjIxMVx1MjIwZlx1MDNjMFx1MjIyYlx4YWFceGJhXHUyMTI2XHhlNlx4ZjhceGJmXHhhMVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIyMDZceGFiXHhiYlx1MjAyNlx4YTBceGMwXHhjM1x4ZDVcdTAxNTJcdTAxNTNc''@;'; put 'put ''dTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNhXHhmZlx1MDE3OFx1MjA0NFx4YTRcdTIwMzlcdTIwM2FcdWZiMDFcdWZiMDJcdTIwMjFceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx4Y2FceGMxXHhjYlx4YzhceGNkXHhjZVx4Y2ZceGNjXHhkM1x4ZDRcdWZm''@;'; put 'put ''ZmRceGQyXHhkYVx4ZGJceGQ5XHUwMTMxXHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1MDJkYVx4YjhcdTAyZGRcdTAyZGJcdTAyYzciLG1lPVtdLEI9e30sRT0wO0UhPUwubGVuZ3RoOysrRSk2NTUzMyE9PUwuY2hhckNvZGVBdChFKSYmKEJbTC5jaGFyQXQoRSldPUUpLG1lW0VdPUwu''@;'; put 'put ''Y2hhckF0KEUpO3JldHVybntlbmM6QixkZWM6bWV9fSgpLEplWzEwMDA2XT1mdW5jdGlvbigpe2Zvcih2YXIgTD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJc''@;'; put 'put ''eDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGM0XHhiOVx4YjJceGM5XHhiM1x4ZDZceGRjXHUwMzg1XHhlMFx4ZTJceGU0XHUw''@;'; put 'put ''Mzg0XHhhOFx4ZTdceGU5XHhlOFx4ZWFceGViXHhhM1x1MjEyMlx4ZWVceGVmXHUyMDIyXHhiZFx1MjAzMFx4ZjRceGY2XHhhNlx4YWRceGY5XHhmYlx4ZmNcdTIwMjBcdTAzOTNcdTAzOTRcdTAzOThcdTAzOWJcdTAzOWVcdTAzYTBceGRmXHhhZVx4YTlcdTAzYTNcdTAzYWFceGE3XHUyMjYw''@;'; put 'put ''XHhiMFx1MDM4N1x1MDM5MVx4YjFcdTIyNjRcdTIyNjVceGE1XHUwMzkyXHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk5XHUwMzlhXHUwMzljXHUwM2E2XHUwM2FiXHUwM2E4XHUwM2E5XHUwM2FjXHUwMzlkXHhhY1x1MDM5Zlx1MDNhMVx1MjI0OFx1MDNhNFx4YWJceGJiXHUyMDI2XHhhMFx1MDNh''@;'; put 'put ''NVx1MDNhN1x1MDM4Nlx1MDM4OFx1MDE1M1x1MjAxM1x1MjAxNVx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTAzODlcdTAzOGFcdTAzOGNcdTAzOGVcdTAzYWRcdTAzYWVcdTAzYWZcdTAzY2NcdTAzOGZcdTAzY2RcdTAzYjFcdTAzYjJcdTAzYzhcdTAzYjRcdTAzYjVcdTAzYzZcdTAz''@;'; put 'put ''YjNcdTAzYjdcdTAzYjlcdTAzYmVcdTAzYmFcdTAzYmJcdTAzYmNcdTAzYmRcdTAzYmZcdTAzYzBcdTAzY2VcdTAzYzFcdTAzYzNcdTAzYzRcdTAzYjhcdTAzYzlcdTAzYzJcdTAzYzdcdTAzYzVcdTAzYjZcdTAzY2FcdTAzY2JcdTAzOTBcdTAzYjBcdWZmZmQiLG1lPVtdLEI9e30sRT0wO0Uh''@;'; put 'put ''PUwubGVuZ3RoOysrRSk2NTUzMyE9PUwuY2hhckNvZGVBdChFKSYmKEJbTC5jaGFyQXQoRSldPUUpLG1lW0VdPUwuY2hhckF0KEUpO3JldHVybntlbmM6QixkZWM6bWV9fSgpLEplWzEwMDA3XT1mdW5jdGlvbigpe2Zvcih2YXIgTD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJc''@;'; put 'put ''dFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3Bx''@;'; put 'put ''cnN0dXZ3eHl6e3x9flx4N2ZcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0''@;'; put 'put ''MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTIwMjBceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx1MDQwNlx4YWVceGE5XHUyMTIyXHUwNDAyXHUwNDUyXHUyMjYwXHUwNDAzXHUwNDUzXHUyMjFlXHhiMVx1MjI2NFx1MjI2NVx1MDQ1Nlx4YjVcdTIyMDJc''@;'; put 'put ''dTA0MDhcdTA0MDRcdTA0NTRcdTA0MDdcdTA0NTdcdTA0MDlcdTA0NTlcdTA0MGFcdTA0NWFcdTA0NThcdTA0MDVceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHUwNDBiXHUwNDViXHUwNDBjXHUwNDVjXHUwNDU1XHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFk''@;'; put 'put ''XHUyMDE4XHUyMDE5XHhmN1x1MjAxZVx1MDQwZVx1MDQ1ZVx1MDQwZlx1MDQ1Zlx1MjExNlx1MDQwMVx1MDQ1MVx1MDQ0Zlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQz''@;'; put 'put ''Zlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx4YTQiLG1lPVtdLEI9e30sRT0wO0UhPUwubGVuZ3RoOysrRSk2NTUzMyE9PUwuY2hhckNvZGVBdChFKSYmKEJbTC5jaGFyQXQo''@;'; put 'put ''RSldPUUpLG1lW0VdPUwuY2hhckF0KEUpO3JldHVybntlbmM6QixkZWM6bWV9fSgpLEplWzEwMDA4XT1mdW5jdGlvbigpe3ZhciBFLEw9W10sbWU9e30sQj1bXTtmb3IoQlswXT0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJc''@;'; put 'put ''eDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceDgwXHVmOGQ4XHVm''@;'; put 'put ''OGQ5XHVmOGRhXHVmOGRiXHVmOGRjXHVmOGRkXHVmOGRlXHVmOGRmXHVmOGUwXHVmOGUxXHVmOGUyXHVmOGUzXHVmOGU0XHVmOGU1XHVmOGU2XHVmOGU3XHVmOGU4XHVmOGU5XHVmOGVhXHVmOGViXHVmOGVjXHVmOGVkXHVmOGVlXHVmOGVmXHVmOGYwXHVmOGYxXHVmOGYyXHVmOGYzXHVmOGY0''@;'; put 'put ''XHVmOGY1XHVmOGY2XHVmOGY3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmOGY4XHVmOGY5XHVmOGZhXHVmOGZiXHVmOGZjXHVmOGZkXHVmOGZlXHVmOGZmIi5zcGxpdCgiIiksRT0wO0UhPUJbMF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0Jb''@;'; put 'put ''MF1bRV1dPTArRSxMWzArRV09QlswXVtFXSk7Zm9yKEJbMTYxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHUzMDAwXHUzMDAxXHUzMDAyXHUzMGZiXHUwMmM5XHUwMmM3XHhhOFx1MzAwM1x1MzAwNVx1MjAxNVx1ZmY1ZVx1ZmZmZFx1MjAyNlx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MzAxNFx1MzAxNVx1MzAwOFx1MzAwOVx1MzAwYVx1MzAwYlx1MzAwY1x1MzAwZFx1''@;'; put 'put ''MzAwZVx1MzAwZlx1MzAxNlx1MzAxN1x1MzAxMFx1MzAxMVx4YjFceGQ3XHhmN1x1MjIzNlx1MjIyN1x1MjIyOFx1MjIxMVx1MjIwZlx1MjIyYVx1MjIyOVx1MjIwOFx1MjIzN1x1MjIxYVx1MjJhNVx1MjIyNVx1MjIyMFx1MjMxMlx1MjI5OVx1MjIyYlx1MjIyZVx1MjI2MVx1MjI0Y1x1MjI0''@;'; put 'put ''OFx1MjIzZFx1MjIxZFx1MjI2MFx1MjI2ZVx1MjI2Zlx1MjI2NFx1MjI2NVx1MjIxZVx1MjIzNVx1MjIzNFx1MjY0Mlx1MjY0MFx4YjBcdTIwMzJcdTIwMzNcdTIxMDNcdWZmMDRceGE0XHVmZmUwXHVmZmUxXHUyMDMwXHhhN1x1MjExNlx1MjYwNlx1MjYwNVx1MjVjYlx1MjVjZlx1MjVjZVx1''@;'; put 'put ''MjVjN1x1MjVjNlx1MjVhMVx1MjVhMFx1MjViM1x1MjViMlx1MjAzYlx1MjE5Mlx1MjE5MFx1MjE5MVx1MjE5M1x1MzAxM1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2MV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTYxXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNjFdW0VdXT00MTIx''@;'; put 'put ''NitFLExbNDEyMTYrRV09QlsxNjFdW0VdKTtmb3IoQlsxNjJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTI0ODhcdTI0ODlcdTI0OGFcdTI0OGJcdTI0OGNcdTI0OGRcdTI0OGVcdTI0OGZcdTI0OTBc''@;'; put 'put ''dTI0OTFcdTI0OTJcdTI0OTNcdTI0OTRcdTI0OTVcdTI0OTZcdTI0OTdcdTI0OThcdTI0OTlcdTI0OWFcdTI0OWJcdTI0NzRcdTI0NzVcdTI0NzZcdTI0NzdcdTI0NzhcdTI0NzlcdTI0N2FcdTI0N2JcdTI0N2NcdTI0N2RcdTI0N2VcdTI0N2ZcdTI0ODBcdTI0ODFcdTI0ODJcdTI0ODNcdTI0''@;'; put 'put ''ODRcdTI0ODVcdTI0ODZcdTI0ODdcdTI0NjBcdTI0NjFcdTI0NjJcdTI0NjNcdTI0NjRcdTI0NjVcdTI0NjZcdTI0NjdcdTI0NjhcdTI0NjlcdWZmZmRcdWZmZmRcdTMyMjBcdTMyMjFcdTMyMjJcdTMyMjNcdTMyMjRcdTMyMjVcdTMyMjZcdTMyMjdcdTMyMjhcdTMyMjlcdWZmZmRcdWZmZmRc''@;'; put 'put ''dTIxNjBcdTIxNjFcdTIxNjJcdTIxNjNcdTIxNjRcdTIxNjVcdTIxNjZcdTIxNjdcdTIxNjhcdTIxNjlcdTIxNmFcdTIxNmJcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2Ml1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0Jb''@;'; put 'put ''MTYyXVtFXV09NDE0NzIrRSxMWzQxNDcyK0VdPUJbMTYyXVtFXSk7Zm9yKEJbMTYzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZjAxXHVmZjAyXHVmZjAzXHVmZmU1XHVmZjA1XHVmZjA2XHVmZjA3XHVmZjA4XHVmZjA5XHVmZjBhXHVmZjBiXHVmZjBjXHVmZjBkXHVmZjBlXHVmZjBmXHVmZjEwXHVmZjExXHVmZjEyXHVmZjEzXHVmZjE0XHVmZjE1XHVmZjE2XHVmZjE3''@;'; put 'put ''XHVmZjE4XHVmZjE5XHVmZjFhXHVmZjFiXHVmZjFjXHVmZjFkXHVmZjFlXHVmZjFmXHVmZjIwXHVmZjIxXHVmZjIyXHVmZjIzXHVmZjI0XHVmZjI1XHVmZjI2XHVmZjI3XHVmZjI4XHVmZjI5XHVmZjJhXHVmZjJiXHVmZjJjXHVmZjJkXHVmZjJlXHVmZjJmXHVmZjMwXHVmZjMxXHVmZjMyXHVm''@;'; put 'put ''ZjMzXHVmZjM0XHVmZjM1XHVmZjM2XHVmZjM3XHVmZjM4XHVmZjM5XHVmZjNhXHVmZjNiXHVmZjNjXHVmZjNkXHVmZjNlXHVmZjNmXHVmZjQwXHVmZjQxXHVmZjQyXHVmZjQzXHVmZjQ0XHVmZjQ1XHVmZjQ2XHVmZjQ3XHVmZjQ4XHVmZjQ5XHVmZjRhXHVmZjRiXHVmZjRjXHVmZjRkXHVmZjRl''@;'; put 'put ''XHVmZjRmXHVmZjUwXHVmZjUxXHVmZjUyXHVmZjUzXHVmZjU0XHVmZjU1XHVmZjU2XHVmZjU3XHVmZjU4XHVmZjU5XHVmZjVhXHVmZjViXHVmZjVjXHVmZjVkXHVmZmUzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTYzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjNdW0VdLmNoYXJDb2Rl''@;'; put 'put ''QXQoMCkmJihtZVtCWzE2M11bRV1dPTQxNzI4K0UsTFs0MTcyOCtFXT1CWzE2M11bRV0pO2ZvcihCWzE2NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzA0MVx1MzA0Mlx1MzA0M1x1MzA0NFx1MzA0NVx1MzA0Nlx1MzA0N1x1MzA0OFx1MzA0OVx1MzA0YVx1MzA0Ylx1MzA0Y1x1MzA0ZFx1MzA0ZVx1MzA0Zlx1MzA1MFx1MzA1MVx1MzA1Mlx1MzA1M1x1MzA1NFx1MzA1''@;'; put 'put ''NVx1MzA1Nlx1MzA1N1x1MzA1OFx1MzA1OVx1MzA1YVx1MzA1Ylx1MzA1Y1x1MzA1ZFx1MzA1ZVx1MzA1Zlx1MzA2MFx1MzA2MVx1MzA2Mlx1MzA2M1x1MzA2NFx1MzA2NVx1MzA2Nlx1MzA2N1x1MzA2OFx1MzA2OVx1MzA2YVx1MzA2Ylx1MzA2Y1x1MzA2ZFx1MzA2ZVx1MzA2Zlx1MzA3MFx1''@;'; put 'put ''MzA3MVx1MzA3Mlx1MzA3M1x1MzA3NFx1MzA3NVx1MzA3Nlx1MzA3N1x1MzA3OFx1MzA3OVx1MzA3YVx1MzA3Ylx1MzA3Y1x1MzA3ZFx1MzA3ZVx1MzA3Zlx1MzA4MFx1MzA4MVx1MzA4Mlx1MzA4M1x1MzA4NFx1MzA4NVx1MzA4Nlx1MzA4N1x1MzA4OFx1MzA4OVx1MzA4YVx1MzA4Ylx1MzA4''@;'; put 'put ''Y1x1MzA4ZFx1MzA4ZVx1MzA4Zlx1MzA5MFx1MzA5MVx1MzA5Mlx1MzA5M1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE2NF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTY0''@;'; put 'put ''XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNjRdW0VdXT00MTk4NCtFLExbNDE5ODQrRV09QlsxNjRdW0VdKTtmb3IoQlsxNjVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMwYTFcdTMwYTJcdTMwYTNcdTMwYTRcdTMwYTVcdTMwYTZcdTMwYTdcdTMwYThcdTMwYTlcdTMwYWFcdTMwYWJcdTMwYWNcdTMwYWRcdTMwYWVcdTMwYWZcdTMwYjBcdTMwYjFcdTMwYjJcdTMw''@;'; put 'put ''YjNcdTMwYjRcdTMwYjVcdTMwYjZcdTMwYjdcdTMwYjhcdTMwYjlcdTMwYmFcdTMwYmJcdTMwYmNcdTMwYmRcdTMwYmVcdTMwYmZcdTMwYzBcdTMwYzFcdTMwYzJcdTMwYzNcdTMwYzRcdTMwYzVcdTMwYzZcdTMwYzdcdTMwYzhcdTMwYzlcdTMwY2FcdTMwY2JcdTMwY2NcdTMwY2RcdTMwY2Vc''@;'; put 'put ''dTMwY2ZcdTMwZDBcdTMwZDFcdTMwZDJcdTMwZDNcdTMwZDRcdTMwZDVcdTMwZDZcdTMwZDdcdTMwZDhcdTMwZDlcdTMwZGFcdTMwZGJcdTMwZGNcdTMwZGRcdTMwZGVcdTMwZGZcdTMwZTBcdTMwZTFcdTMwZTJcdTMwZTNcdTMwZTRcdTMwZTVcdTMwZTZcdTMwZTdcdTMwZThcdTMwZTlcdTMw''@;'; put 'put ''ZWFcdTMwZWJcdTMwZWNcdTMwZWRcdTMwZWVcdTMwZWZcdTMwZjBcdTMwZjFcdTMwZjJcdTMwZjNcdTMwZjRcdTMwZjVcdTMwZjZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNjVdLmxlbmd0aDsrK0Up''@;'; put 'put ''NjU1MzMhPT1CWzE2NV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTY1XVtFXV09NDIyNDArRSxMWzQyMjQwK0VdPUJbMTY1XVtFXSk7Zm9yKEJbMTY2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwMzkxXHUwMzkyXHUwMzkzXHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk4XHUwMzk5XHUwMzlhXHUwMzliXHUwMzljXHUwMzlkXHUwMzllXHUwMzlmXHUwM2EwXHUw''@;'; put 'put ''M2ExXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwM2IxXHUwM2IyXHUwM2IzXHUwM2I0XHUwM2I1XHUwM2I2XHUwM2I3XHUwM2I4XHUwM2I5XHUwM2JhXHUwM2JiXHUwM2Jj''@;'; put 'put ''XHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MzXHUwM2M0XHUwM2M1XHUwM2M2XHUwM2M3XHUwM2M4XHUwM2M5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTY2''@;'; put 'put ''XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjZdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE2Nl1bRV1dPTQyNDk2K0UsTFs0MjQ5NitFXT1CWzE2Nl1bRV0pO2ZvcihCWzE2N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQwMVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1''@;'; put 'put ''MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQ1MVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1''@;'; put 'put ''MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIp''@;'; put 'put ''LEU9MDtFIT1CWzE2N10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTY3XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNjddW0VdXT00Mjc1MitFLExbNDI3NTIrRV09QlsxNjddW0VdKTtmb3IoQlsxNjhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTAxMDFceGUxXHUwMWNlXHhlMFx1MDExM1x4ZTlcdTAxMWJceGU4XHUwMTJiXHhlZFx1MDFkMFx4ZWNcdTAxNGRceGYzXHUw''@;'; put 'put ''MWQyXHhmMlx1MDE2Ylx4ZmFcdTAxZDRceGY5XHUwMWQ2XHUwMWQ4XHUwMWRhXHUwMWRjXHhmY1x4ZWFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMxMDVcdTMxMDZcdTMxMDdcdTMxMDhcdTMxMDlcdTMxMGFcdTMxMGJcdTMx''@;'; put 'put ''MGNcdTMxMGRcdTMxMGVcdTMxMGZcdTMxMTBcdTMxMTFcdTMxMTJcdTMxMTNcdTMxMTRcdTMxMTVcdTMxMTZcdTMxMTdcdTMxMThcdTMxMTlcdTMxMWFcdTMxMWJcdTMxMWNcdTMxMWRcdTMxMWVcdTMxMWZcdTMxMjBcdTMxMjFcdTMxMjJcdTMxMjNcdTMxMjRcdTMxMjVcdTMxMjZcdTMxMjdc''@;'; put 'put ''dTMxMjhcdTMxMjlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9Qlsx''@;'; put 'put ''NjhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE2OF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTY4XVtFXV09NDMwMDgrRSxMWzQzMDA4K0VdPUJbMTY4XVtFXSk7Zm9yKEJbMTY5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyNTAwXHUyNTAxXHUyNTAyXHUyNTAzXHUyNTA0XHUyNTA1XHUyNTA2XHUyNTA3XHUyNTA4XHUyNTA5XHUyNTBh''@;'; put 'put ''XHUyNTBiXHUyNTBjXHUyNTBkXHUyNTBlXHUyNTBmXHUyNTEwXHUyNTExXHUyNTEyXHUyNTEzXHUyNTE0XHUyNTE1XHUyNTE2XHUyNTE3XHUyNTE4XHUyNTE5XHUyNTFhXHUyNTFiXHUyNTFjXHUyNTFkXHUyNTFlXHUyNTFmXHUyNTIwXHUyNTIxXHUyNTIyXHUyNTIzXHUyNTI0XHUyNTI1XHUy''@;'; put 'put ''NTI2XHUyNTI3XHUyNTI4XHUyNTI5XHUyNTJhXHUyNTJiXHUyNTJjXHUyNTJkXHUyNTJlXHUyNTJmXHUyNTMwXHUyNTMxXHUyNTMyXHUyNTMzXHUyNTM0XHUyNTM1XHUyNTM2XHUyNTM3XHUyNTM4XHUyNTM5XHUyNTNhXHUyNTNiXHUyNTNjXHUyNTNkXHUyNTNlXHUyNTNmXHUyNTQwXHUyNTQx''@;'; put 'put ''XHUyNTQyXHUyNTQzXHUyNTQ0XHUyNTQ1XHUyNTQ2XHUyNTQ3XHUyNTQ4XHUyNTQ5XHUyNTRhXHUyNTRiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgi''@;'; put 'put ''IiksRT0wO0UhPUJbMTY5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNjldW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE2OV1bRV1dPTQzMjY0K0UsTFs0MzI2NCtFXT1CWzE2OV1bRV0pO2ZvcihCWzE3Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTU0YVx1OTYzZlx1NTdjM1x1NjMyOFx1NTRjZVx1NTUwOVx1NTRjMFx1NzY5MVx1NzY0Y1x1ODUzY1x1NzdlZVx1ODI3''@;'; put 'put ''ZVx1Nzg4ZFx1NzIzMVx1OTY5OFx1OTc4ZFx1NmMyOFx1NWI4OVx1NGZmYVx1NjMwOVx1NjY5N1x1NWNiOFx1ODBmYVx1Njg0OFx1ODBhZVx1NjYwMlx1NzZjZVx1NTFmOVx1NjU1Nlx1NzFhY1x1N2ZmMVx1ODg4NFx1NTBiMlx1NTk2NVx1NjFjYVx1NmZiM1x1ODJhZFx1NjM0Y1x1NjI1Mlx1''@;'; put 'put ''NTNlZFx1NTQyN1x1N2IwNlx1NTE2Ylx1NzVhNFx1NWRmNFx1NjJkNFx1OGRjYlx1OTc3Nlx1NjI4YVx1ODAxOVx1NTc1ZFx1OTczOFx1N2Y2Mlx1NzIzOFx1NzY3ZFx1NjdjZlx1NzY3ZVx1NjQ0Nlx1NGY3MFx1OGQyNVx1NjJkY1x1N2ExN1x1NjU5MVx1NzNlZFx1NjQyY1x1NjI3M1x1ODIy''@;'; put 'put ''Y1x1OTg4MVx1Njc3Zlx1NzI0OFx1NjI2ZVx1NjJjY1x1NGYzNFx1NzRlM1x1NTM0YVx1NTI5ZVx1N2VjYVx1OTBhNlx1NWUyZVx1Njg4Nlx1Njk5Y1x1ODE4MFx1N2VkMVx1NjhkMlx1NzhjNVx1ODY4Y1x1OTU1MVx1NTA4ZFx1OGMyNFx1ODJkZVx1ODBkZVx1NTMwNVx1ODkxMlx1NTI2NVx1''@;'; put 'put ''ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3Nl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTc2XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNzZdW0VdXT00NTA1NitFLExbNDUwNTYrRV09QlsxNzZdW0VdKTtmb3IoQlsxNzddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg1ODRcdTk2ZjlcdTRmZGRcdTU4MjFcdTk5NzFcdTViOWRcdTYyYjFcdTYyYTVcdTY2YjRcdThj''@;'; put 'put ''NzlcdTljOGRcdTcyMDZcdTY3NmZcdTc4OTFcdTYwYjJcdTUzNTFcdTUzMTdcdThmODhcdTgwY2NcdThkMWRcdTk0YTFcdTUwMGRcdTcyYzhcdTU5MDdcdTYwZWJcdTcxMTlcdTg4YWJcdTU5NTRcdTgyZWZcdTY3MmNcdTdiMjhcdTVkMjlcdTdlZjdcdTc1MmRcdTZjZjVcdThlNjZcdThmZjhc''@;'; put 'put ''dTkwM2NcdTlmM2JcdTZiZDRcdTkxMTlcdTdiMTRcdTVmN2NcdTc4YTdcdTg0ZDZcdTg1M2RcdTZiZDVcdTZiZDlcdTZiZDZcdTVlMDFcdTVlODdcdTc1ZjlcdTk1ZWRcdTY1NWRcdTVmMGFcdTVmYzVcdThmOWZcdTU4YzFcdTgxYzJcdTkwN2ZcdTk2NWJcdTk3YWRcdThmYjlcdTdmMTZcdThk''@;'; put 'put ''MmNcdTYyNDFcdTRmYmZcdTUzZDhcdTUzNWVcdThmYThcdThmYTlcdThmYWJcdTkwNGRcdTY4MDdcdTVmNmFcdTgxOThcdTg4NjhcdTljZDZcdTYxOGJcdTUyMmJcdTc2MmFcdTVmNmNcdTY1OGNcdTZmZDJcdTZlZThcdTViYmVcdTY0NDhcdTUxNzVcdTUxYjBcdTY3YzRcdTRlMTlcdTc5Yzlc''@;'; put 'put ''dTk5N2NcdTcwYjNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxNzddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE3N11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTc3XVtFXV09NDUzMTIrRSxMWzQ1MzEyK0VdPUJbMTc3XVtFXSk7Zm9yKEJbMTc4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NWM1XHU1ZTc2XHU3M2JiXHU4M2UwXHU2NGFkXHU2MmU4XHU5NGI1XHU2''@;'; put 'put ''Y2UyXHU1MzVhXHU1MmMzXHU2NDBmXHU5NGMyXHU3Yjk0XHU0ZjJmXHU1ZTFiXHU4MjM2XHU4MTE2XHU4MThhXHU2ZTI0XHU2Y2NhXHU5YTczXHU2MzU1XHU1MzVjXHU1NGZhXHU4ODY1XHU1N2UwXHU0ZTBkXHU1ZTAzXHU2YjY1XHU3YzNmXHU5MGU4XHU2MDE2XHU2NGU2XHU3MzFjXHU4OGMx''@;'; put 'put ''XHU2NzUwXHU2MjRkXHU4ZDIyXHU3NzZjXHU4ZTI5XHU5MWM3XHU1ZjY5XHU4M2RjXHU4NTIxXHU5OTEwXHU1M2MyXHU4Njk1XHU2YjhiXHU2MGVkXHU2MGU4XHU3MDdmXHU4MmNkXHU4MjMxXHU0ZWQzXHU2Y2E3XHU4NWNmXHU2NGNkXHU3Y2Q5XHU2OWZkXHU2NmY5XHU4MzQ5XHU1Mzk1XHU3''@;'; put 'put ''YjU2XHU0ZmE3XHU1MThjXHU2ZDRiXHU1YzQyXHU4ZTZkXHU2M2QyXHU1M2M5XHU4MzJjXHU4MzM2XHU2N2U1XHU3OGI0XHU2NDNkXHU1YmRmXHU1Yzk0XHU1ZGVlXHU4YmU3XHU2MmM2XHU2N2Y0XHU4YzdhXHU2NDAwXHU2M2JhXHU4NzQ5XHU5OThiXHU4YzE3XHU3ZjIwXHU5NGYyXHU0ZWE3''@;'; put 'put ''XHU5NjEwXHU5OGE0XHU2NjBjXHU3MzE2XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTc4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxNzhdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE3OF1bRV1dPTQ1NTY4K0UsTFs0NTU2OCtFXT1CWzE3OF1bRV0pO2ZvcihCWzE3OV09Ilx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTczYVx1NWMxZFx1NWUzOFx1OTU3Zlx1NTA3Zlx1''@;'; put 'put ''ODBhMFx1NTM4Mlx1NjU1ZVx1NzU0NVx1NTUzMVx1NTAyMVx1OGQ4NVx1NjI4NFx1OTQ5ZVx1NjcxZFx1NTYzMlx1NmY2ZVx1NWRlMlx1NTQzNVx1NzA5Mlx1OGY2Nlx1NjI2Zlx1NjRhNFx1NjNhM1x1NWY3Ylx1NmY4OFx1OTBmNFx1ODFlM1x1OGZiMFx1NWMxOFx1NjY2OFx1NWZmMVx1NmM4''@;'; put 'put ''OVx1OTY0OFx1OGQ4MVx1ODg2Y1x1NjQ5MVx1NzlmMFx1NTdjZVx1NmE1OVx1NjIxMFx1NTQ0OFx1NGU1OFx1N2EwYlx1NjBlOVx1NmY4NFx1OGJkYVx1NjI3Zlx1OTAxZVx1OWE4Ylx1NzllNFx1NTQwM1x1NzVmNFx1NjMwMVx1NTMxOVx1NmM2MFx1OGZkZlx1NWYxYlx1OWE3MFx1ODAzYlx1''@;'; put 'put ''OWY3Zlx1NGY4OFx1NWMzYVx1OGQ2NFx1N2ZjNVx1NjVhNVx1NzBiZFx1NTE0NVx1NTFiMlx1ODY2Ylx1NWQwN1x1NWJhMFx1NjJiZFx1OTE2Y1x1NzU3NFx1OGUwY1x1N2EyMFx1NjEwMVx1N2I3OVx1NGVjN1x1N2VmOFx1Nzc4NVx1NGUxMVx1ODFlZFx1NTIxZFx1NTFmYVx1NmE3MVx1NTNh''@;'; put 'put ''OFx1OGU4N1x1OTUwNFx1OTZjZlx1NmVjMVx1OTY2NFx1Njk1YVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE3OV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTc5XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxNzldW0VdXT00NTgyNCtFLExbNDU4MjQrRV09QlsxNzldW0VdKTtmb3IoQlsx''@;'; put 'put ''ODBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc4NDBcdTUwYThcdTc3ZDdc''@;'; put 'put ''dTY0MTBcdTg5ZTZcdTU5MDRcdTYzZTNcdTVkZGRcdTdhN2ZcdTY5M2RcdTRmMjBcdTgyMzlcdTU1OThcdTRlMzJcdTc1YWVcdTdhOTdcdTVlNjJcdTVlOGFcdTk1ZWZcdTUyMWJcdTU0MzlcdTcwOGFcdTYzNzZcdTk1MjRcdTU3ODJcdTY2MjVcdTY5M2ZcdTkxODdcdTU1MDdcdTZkZjNcdTdl''@;'; put 'put ''YWZcdTg4MjJcdTYyMzNcdTdlZjBcdTc1YjVcdTgzMjhcdTc4YzFcdTk2Y2NcdThmOWVcdTYxNDhcdTc0ZjdcdThiY2RcdTZiNjRcdTUyM2FcdThkNTBcdTZiMjFcdTgwNmFcdTg0NzFcdTU2ZjFcdTUzMDZcdTRlY2VcdTRlMWJcdTUxZDFcdTdjOTdcdTkxOGJcdTdjMDdcdTRmYzNcdThlN2Zc''@;'; put 'put ''dTdiZTFcdTdhOWNcdTY0NjdcdTVkMTRcdTUwYWNcdTgxMDZcdTc2MDFcdTdjYjlcdTZkZWNcdTdmZTBcdTY3NTFcdTViNThcdTViZjhcdTc4Y2JcdTY0YWVcdTY0MTNcdTYzYWFcdTYzMmJcdTk1MTlcdTY0MmRcdThmYmVcdTdiNTRcdTc2MjlcdTYyNTNcdTU5MjdcdTU0NDZcdTZiNzlcdTUw''@;'; put 'put ''YTNcdTYyMzRcdTVlMjZcdTZiODZcdTRlZTNcdThkMzdcdTg4OGJcdTVmODVcdTkwMmVcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4MF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTgwXVtFXV09NDYwODArRSxMWzQ2MDgwK0VdPUJbMTgw''@;'; put 'put ''XVtFXSk7Zm9yKEJbMTgxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MDIw''@;'; put 'put ''XHU4MDNkXHU2MmM1XHU0ZTM5XHU1MzU1XHU5MGY4XHU2M2I4XHU4MGM2XHU2NWU2XHU2YzJlXHU0ZjQ2XHU2MGVlXHU2ZGUxXHU4YmRlXHU1ZjM5XHU4NmNiXHU1ZjUzXHU2MzIxXHU1MTVhXHU4MzYxXHU2ODYzXHU1MjAwXHU2MzYzXHU4ZTQ4XHU1MDEyXHU1YzliXHU3OTc3XHU1YmZjXHU1''@;'; put 'put ''MjMwXHU3YTNiXHU2MGJjXHU5MDUzXHU3NmQ3XHU1ZmI3XHU1Zjk3XHU3Njg0XHU4ZTZjXHU3MDZmXHU3NjdiXHU3YjQ5XHU3N2FhXHU1MWYzXHU5MDkzXHU1ODI0XHU0ZjRlXHU2ZWY0XHU4ZmVhXHU2NTRjXHU3YjFiXHU3MmM0XHU2ZGE0XHU3ZmRmXHU1YWUxXHU2MmI1XHU1ZTk1XHU1NzMw''@;'; put 'put ''XHU4NDgyXHU3YjJjXHU1ZTFkXHU1ZjFmXHU5MDEyXHU3ZjE0XHU5OGEwXHU2MzgyXHU2ZWM3XHU3ODk4XHU3MGI5XHU1MTc4XHU5NzViXHU1N2FiXHU3NTM1XHU0ZjQzXHU3NTM4XHU1ZTk3XHU2MGU2XHU1OTYwXHU2ZGMwXHU2YmJmXHU3ODg5XHU1M2ZjXHU5NmQ1XHU1MWNiXHU1MjAxXHU2''@;'; put 'put ''Mzg5XHU1NDBhXHU5NDkzXHU4YzAzXHU4ZGNjXHU3MjM5XHU3ODlmXHU4Nzc2XHU4ZmVkXHU4YzBkXHU1M2UwXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTgxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODFdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE4MV1bRV1dPTQ2MzM2K0UsTFs0''@;'; put 'put ''NjMzNitFXT1CWzE4MV1bRV0pO2ZvcihCWzE4Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1NGUwMVx1NzZlZlx1NTNlZVx1OTQ4OVx1OTg3Nlx1OWYwZVx1OTUyZFx1NWI5YVx1OGJhMlx1NGUyMlx1NGUxY1x1NTFhY1x1ODQ2M1x1NjFjMlx1NTJhOFx1NjgwYlx1NGY5N1x1NjA2Ylx1NTFiYlx1NmQxZVx1NTE1Y1x1NjI5Nlx1NjU5N1x1OTY2MVx1OGM0Nlx1OTAxN1x1''@;'; put 'put ''NzVkOFx1OTBmZFx1Nzc2M1x1NmJkMlx1NzI4YVx1NzJlY1x1OGJmYlx1NTgzNVx1Nzc3OVx1OGQ0Y1x1Njc1Y1x1OTU0MFx1ODA5YVx1NWVhNlx1NmUyMVx1NTk5Mlx1N2FlZlx1NzdlZFx1OTUzYlx1NmJiNVx1NjVhZFx1N2YwZVx1NTgwNlx1NTE1MVx1OTYxZlx1NWJmOVx1NThhOVx1NTQy''@;'; put 'put ''OFx1OGU3Mlx1NjU2Nlx1OTg3Zlx1NTZlNFx1OTQ5ZFx1NzZmZVx1OTA0MVx1NjM4N1x1NTRjNlx1NTkxYVx1NTkzYVx1NTc5Ylx1OGViMlx1NjczNVx1OGRmYVx1ODIzNVx1NTI0MVx1NjBmMFx1NTgxNVx1ODZmZVx1NWNlOFx1OWU0NVx1NGZjNFx1OTg5ZFx1OGJiOVx1NWEyNVx1NjA3Nlx1''@;'; put 'put ''NTM4NFx1NjI3Y1x1OTA0Zlx1OTEwMlx1OTk3Zlx1NjA2OVx1ODAwY1x1NTEzZlx1ODAzM1x1NWMxNFx1OTk3NVx1NmQzMVx1NGU4Y1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTgyXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxODJdW0Vd''@;'; put 'put ''XT00NjU5MitFLExbNDY1OTIrRV09QlsxODJdW0VdKTtmb3IoQlsxODNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThkMzBcdTUzZDFcdTdmNWFcdTdiNGZcdTRmMTBcdTRlNGZcdTk2MDBcdTZjZDVcdTczZDBcdTg1ZTlcdTVlMDZcdTc1NmFcdTdmZmJcdTZhMGFcdTc3ZmVcdTk0OTJcdTdlNDFcdTUxZTFcdTcwZTZcdTUzY2RcdThmZDRcdTgzMDNcdThkMjlcdTcyYWZc''@;'; put 'put ''dTk5NmRcdTZjZGJcdTU3NGFcdTgyYjNcdTY1YjlcdTgwYWFcdTYyM2ZcdTk2MzJcdTU5YThcdTRlZmZcdThiYmZcdTdlYmFcdTY1M2VcdTgzZjJcdTk3NWVcdTU1NjFcdTk4ZGVcdTgwYTVcdTUzMmFcdThiZmRcdTU0MjBcdTgwYmFcdTVlOWZcdTZjYjhcdThkMzlcdTgyYWNcdTkxNWFcdTU0''@;'; put 'put ''MjlcdTZjMWJcdTUyMDZcdTdlYjdcdTU3NWZcdTcxMWFcdTZjN2VcdTdjODlcdTU5NGJcdTRlZmRcdTVmZmZcdTYxMjRcdTdjYWFcdTRlMzBcdTVjMDFcdTY3YWJcdTg3MDJcdTVjZjBcdTk1MGJcdTk4Y2VcdTc1YWZcdTcwZmRcdTkwMjJcdTUxYWZcdTdmMWRcdThiYmRcdTU5NDlcdTUxZTRc''@;'; put 'put ''dTRmNWJcdTU0MjZcdTU5MmJcdTY1NzdcdTgwYTRcdTViNzVcdTYyNzZcdTYyYzJcdThmOTBcdTVlNDVcdTZjMWZcdTdiMjZcdTRmMGZcdTRmZDhcdTY3MGRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4M11bRV0uY2hhckNvZGVBdCgwKSYm''@;'; put 'put ''KG1lW0JbMTgzXVtFXV09NDY4NDgrRSxMWzQ2ODQ4K0VdPUJbMTgzXVtFXSk7Zm9yKEJbMTg0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZDZlXHU2ZGFhXHU3OThmXHU4OGIxXHU1ZjE3XHU3NTJiXHU2MjlhXHU4Zjg1XHU0ZmVmXHU5MWRjXHU2NWE3XHU4MTJmXHU4MTUxXHU1ZTljXHU4MTUwXHU4ZDc0XHU1MjZmXHU4OTg2XHU4ZDRiXHU1OTBkXHU1MDg1XHU0ZWQ4''@;'; put 'put ''XHU5NjFjXHU3MjM2XHU4MTc5XHU4ZDFmXHU1YmNjXHU4YmEzXHU5NjQ0XHU1OTg3XHU3ZjFhXHU1NDkwXHU1Njc2XHU1NjBlXHU4YmU1XHU2NTM5XHU2OTgyXHU5NDk5XHU3NmQ2XHU2ZTg5XHU1ZTcyXHU3NTE4XHU2NzQ2XHU2N2QxXHU3YWZmXHU4MDlkXHU4ZDc2XHU2MTFmXHU3OWM2XHU2''@;'; put 'put ''NTYyXHU4ZDYzXHU1MTg4XHU1MjFhXHU5NGEyXHU3ZjM4XHU4MDliXHU3ZWIyXHU1Yzk3XHU2ZTJmXHU2NzYwXHU3YmQ5XHU3NjhiXHU5YWQ4XHU4MThmXHU3Zjk0XHU3Y2Q1XHU2NDFlXHU5NTUwXHU3YTNmXHU1NDRhXHU1NGU1XHU2YjRjXHU2NDAxXHU2MjA4XHU5ZTNkXHU4MGYzXHU3NTk5''@;'; put 'put ''XHU1MjcyXHU5NzY5XHU4NDViXHU2ODNjXHU4NmU0XHU5NjAxXHU5Njk0XHU5NGVjXHU0ZTJhXHU1NDA0XHU3ZWQ5XHU2ODM5XHU4ZGRmXHU4MDE1XHU2NmY0XHU1ZTlhXHU3ZmI5XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTg0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODRdW0VdLmNo''@;'; put 'put ''YXJDb2RlQXQoMCkmJihtZVtCWzE4NF1bRV1dPTQ3MTA0K0UsTFs0NzEwNCtFXT1CWzE4NF1bRV0pO2ZvcihCWzE4NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTdjMlx1ODAzZlx1Njg5N1x1NWRlNVx1NjUzYlx1NTI5Zlx1NjA2ZFx1OWY5YVx1NGY5Ylx1OGVhY1x1NTE2Y1x1NWJhYlx1NWYxM1x1NWRlOVx1NmM1ZVx1NjJmMVx1OGQyMVx1NTE3MVx1OTRhOVx1NTJm''@;'; put 'put ''ZVx1NmM5Zlx1ODJkZlx1NzJkN1x1NTdhMlx1Njc4NFx1OGQyZFx1NTkxZlx1OGY5Y1x1ODNjN1x1NTQ5NVx1N2I4ZFx1NGYzMFx1NmNiZFx1NWI2NFx1NTlkMVx1OWYxM1x1NTNlNFx1ODZjYVx1OWFhOFx1OGMzN1x1ODBhMVx1NjU0NVx1OTg3ZVx1NTZmYVx1OTZjN1x1NTIyZVx1NzRkY1x1''@;'; put 'put ''NTI1MFx1NWJlMVx1NjMwMlx1ODkwMlx1NGU1Nlx1NjJkMFx1NjAyYVx1NjhmYVx1NTE3M1x1NWI5OFx1NTFhMFx1ODljMlx1N2JhMVx1OTk4Nlx1N2Y1MFx1NjBlZlx1NzA0Y1x1OGQyZlx1NTE0OVx1NWU3Zlx1OTAxYlx1NzQ3MFx1ODljNFx1NTcyZFx1Nzg0NVx1NWY1Mlx1OWY5Zlx1OTVm''@;'; put 'put ''YVx1OGY2OFx1OWIzY1x1OGJlMVx1NzY3OFx1Njg0Mlx1NjdkY1x1OGRlYVx1OGQzNVx1NTIzZFx1OGY4YVx1NmVkYVx1NjhjZFx1OTUwNVx1OTBlZFx1NTZmZFx1Njc5Y1x1ODhmOVx1OGZjN1x1NTRjOFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE4NV0ubGVuZ3RoOysrRSk2NTUzMyE9''@;'; put 'put ''PUJbMTg1XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxODVdW0VdXT00NzM2MCtFLExbNDczNjArRV09QlsxODVdW0VdKTtmb3IoQlsxODZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlhYjhcdTViNjlcdTZkNzdcdTZjMjZcdTRlYTVcdTViYjNcdTlhODdcdTkxNjNcdTYxYThcdTkwYWZcdTk3ZTlcdTU0MmJcdTZkYjVcdTViZDJcdTUxZmRcdTU1OGFcdTdmNTVcdTdm''@;'; put 'put ''ZjBcdTY0YmNcdTYzNGRcdTY1ZjFcdTYxYmVcdTYwOGRcdTcxMGFcdTZjNTdcdTZjNDlcdTU5MmZcdTY3NmRcdTgyMmFcdTU4ZDVcdTU2OGVcdThjNmFcdTZiZWJcdTkwZGRcdTU5N2RcdTgwMTdcdTUzZjdcdTZkNjlcdTU0NzVcdTU1OWRcdTgzNzdcdTgzY2ZcdTY4MzhcdTc5YmVcdTU0OGNc''@;'; put 'put ''dTRmNTVcdTU0MDhcdTc2ZDJcdThjODlcdTk2MDJcdTZjYjNcdTZkYjhcdThkNmJcdTg5MTBcdTllNjRcdThkM2FcdTU2M2ZcdTllZDFcdTc1ZDVcdTVmODhcdTcyZTBcdTYwNjhcdTU0ZmNcdTRlYThcdTZhMmFcdTg4NjFcdTYwNTJcdThmNzBcdTU0YzRcdTcwZDhcdTg2NzlcdTllM2ZcdTZk''@;'; put 'put ''MmFcdTViOGZcdTVmMThcdTdlYTJcdTU1ODlcdTRmYWZcdTczMzRcdTU0M2NcdTUzOWFcdTUwMTlcdTU0MGVcdTU0N2NcdTRlNGVcdTVmZmRcdTc0NWFcdTU4ZjZcdTg0NmJcdTgwZTFcdTg3NzRcdTcyZDBcdTdjY2FcdTZlNTZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODZdLmxlbmd0''@;'; put 'put ''aDsrK0UpNjU1MzMhPT1CWzE4Nl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTg2XVtFXV09NDc2MTYrRSxMWzQ3NjE2K0VdPUJbMTg2XVtFXSk7Zm9yKEJbMTg3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZjI3XHU4NjRlXHU1NTJjXHU2MmE0XHU0ZTkyXHU2Y2FhXHU2MjM3XHU4MmIxXHU1NGQ3XHU1MzRlXHU3MzNlXHU2ZWQxXHU3NTNiXHU1MjEyXHU1MzE2XHU4''@;'; put 'put ''YmRkXHU2OWQwXHU1ZjhhXHU2MDAwXHU2ZGVlXHU1NzRmXHU2YjIyXHU3M2FmXHU2ODUzXHU4ZmQ4XHU3ZjEzXHU2MzYyXHU2MGEzXHU1NTI0XHU3NWVhXHU4YzYyXHU3MTE1XHU2ZGEzXHU1YmE2XHU1ZTdiXHU4MzUyXHU2MTRjXHU5ZWM0XHU3OGZhXHU4NzU3XHU3YzI3XHU3Njg3XHU1MWYw''@;'; put 'put ''XHU2MGY2XHU3MTRjXHU2NjQzXHU1ZTRjXHU2MDRkXHU4YzBlXHU3MDcwXHU2MzI1XHU4Zjg5XHU1ZmJkXHU2MDYyXHU4NmQ0XHU1NmRlXHU2YmMxXHU2MDk0XHU2MTY3XHU1MzQ5XHU2MGUwXHU2NjY2XHU4ZDNmXHU3OWZkXHU0ZjFhXHU3MGU5XHU2YzQ3XHU4YmIzXHU4YmYyXHU3ZWQ4XHU4''@;'; put 'put ''MzY0XHU2NjBmXHU1YTVhXHU5YjQyXHU2ZDUxXHU2ZGY3XHU4YzQxXHU2ZDNiXHU0ZjE5XHU3MDZiXHU4M2I3XHU2MjE2XHU2MGQxXHU5NzBkXHU4ZDI3XHU3OTc4XHU1MWZiXHU1NzNlXHU1N2ZhXHU2NzNhXHU3NTc4XHU3YTNkXHU3OWVmXHU3Yjk1XHVmZmZkIi5zcGxpdCgiIiksRT0wO0Uh''@;'; put 'put ''PUJbMTg3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxODddW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE4N11bRV1dPTQ3ODcyK0UsTFs0Nzg3MitFXT1CWzE4N11bRV0pO2ZvcihCWzE4OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODA4Y1x1OTk2NVx1OGZmOVx1NmZjMFx1OGJhNVx1OWUyMVx1NTllY1x1N2VlOVx1N2YwOVx1NTQwOVx1Njc4MVx1NjhkOFx1OGY5MVx1''@;'; put 'put ''N2M0ZFx1OTZjNlx1NTNjYVx1NjAyNVx1NzViZVx1NmM3Mlx1NTM3M1x1NWFjOVx1N2VhN1x1NjMyNFx1NTFlMFx1ODEwYVx1NWRmMVx1ODRkZlx1NjI4MFx1NTE4MFx1NWI2M1x1NGYwZVx1Nzk2ZFx1NTI0Mlx1NjBiOFx1NmQ0ZVx1NWJjNFx1NWJjMlx1OGJhMVx1OGJiMFx1NjVlMlx1NWZj''@;'; put 'put ''Y1x1OTY0NVx1NTk5M1x1N2VlN1x1N2VhYVx1NTYwOVx1NjdiN1x1NTkzOVx1NGY3M1x1NWJiNlx1NTJhMFx1ODM1YVx1OTg4YVx1OGQzZVx1NzUzMlx1OTRiZVx1NTA0N1x1N2EzY1x1NGVmN1x1NjdiNlx1OWE3ZVx1NWFjMVx1NmI3Y1x1NzZkMVx1NTc1YVx1NWMxNlx1N2IzYVx1OTVmNFx1''@;'; put 'put ''NzE0ZVx1NTE3Y1x1ODBhOVx1ODI3MFx1NTk3OFx1N2YwNFx1ODMyN1x1NjhjMFx1NjdlY1x1NzhiMVx1Nzg3N1x1NjJlM1x1NjM2MVx1N2I4MFx1NGZlZFx1NTI2YVx1NTFjZlx1ODM1MFx1NjlkYlx1OTI3NFx1OGRmNVx1OGQzMVx1ODljMVx1OTUyZVx1N2JhZFx1NGVmNlx1ZmZmZCIuc3Bs''@;'; put 'put ''aXQoIiIpLEU9MDtFIT1CWzE4OF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTg4XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxODhdW0VdXT00ODEyOCtFLExbNDgxMjgrRV09QlsxODhdW0VdKTtmb3IoQlsxODldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTUwNjVcdTgyMzBcdTUyNTFcdTk5NmZcdTZlMTBcdTZlODVcdTZkYTdcdTVlZmFcdTUwZjVcdTU5ZGNcdTVjMDZc''@;'; put 'put ''dTZkNDZcdTZjNWZcdTc1ODZcdTg0OGJcdTY4NjhcdTU5NTZcdThiYjJcdTUzMjBcdTkxNzFcdTk2NGRcdTg1NDlcdTY5MTJcdTc5MDFcdTcxMjZcdTgwZjZcdTRlYTRcdTkwY2FcdTZkNDdcdTlhODRcdTVhMDdcdTU2YmNcdTY0MDVcdTk0ZjBcdTc3ZWJcdTRmYTVcdTgxMWFcdTcyZTFcdTg5''@;'; put 'put ''ZDJcdTk5N2FcdTdmMzRcdTdlZGVcdTUyN2ZcdTY1NTlcdTkxNzVcdThmN2ZcdThmODNcdTUzZWJcdTdhOTZcdTYzZWRcdTYzYTVcdTc2ODZcdTc5ZjhcdTg4NTdcdTk2MzZcdTYyMmFcdTUyYWJcdTgyODJcdTY4NTRcdTY3NzBcdTYzNzdcdTc3NmJcdTdhZWRcdTZkMDFcdTdlZDNcdTg5ZTNc''@;'; put 'put ''dTU5ZDBcdTYyMTJcdTg1YzlcdTgyYTVcdTc1NGNcdTUwMWZcdTRlY2JcdTc1YTVcdThiZWJcdTVjNGFcdTVkZmVcdTdiNGJcdTY1YTRcdTkxZDFcdTRlY2FcdTZkMjVcdTg5NWZcdTdkMjdcdTk1MjZcdTRlYzVcdThjMjhcdThmZGJcdTk3NzNcdTY2NGJcdTc5ODFcdThmZDFcdTcwZWNcdTZk''@;'; put 'put ''NzhcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxODldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE4OV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTg5XVtFXV09NDgzODQrRSxMWzQ4Mzg0K0VdPUJbMTg5XVtFXSk7Zm9yKEJbMTkwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YzNkXHU1MmIyXHU4MzQ2XHU1MTYyXHU4MzBlXHU3NzViXHU2Njc2XHU5Y2I4XHU0ZWFj''@;'; put 'put ''XHU2MGNhXHU3Y2JlXHU3Y2IzXHU3ZWNmXHU0ZTk1XHU4YjY2XHU2NjZmXHU5ODg4XHU5NzU5XHU1ODgzXHU2NTZjXHU5NTVjXHU1Zjg0XHU3NWM5XHU5NzU2XHU3YWRmXHU3YWRlXHU1MWMwXHU3MGFmXHU3YTk4XHU2M2VhXHU3YTc2XHU3ZWEwXHU3Mzk2XHU5N2VkXHU0ZTQ1XHU3MDc4XHU0''@;'; put 'put ''ZTVkXHU5MTUyXHU1M2E5XHU2NTUxXHU2NWU3XHU4MWZjXHU4MjA1XHU1NDhlXHU1YzMxXHU3NTlhXHU5N2EwXHU2MmQ4XHU3MmQ5XHU3NWJkXHU1YzQ1XHU5YTc5XHU4M2NhXHU1YzQwXHU1NDgwXHU3N2U5XHU0ZTNlXHU2Y2FlXHU4MDVhXHU2MmQyXHU2MzZlXHU1ZGU4XHU1MTc3XHU4ZGRk''@;'; put 'put ''XHU4ZTFlXHU5NTJmXHU0ZmYxXHU1M2U1XHU2MGU3XHU3MGFjXHU1MjY3XHU2MzUwXHU5ZTQzXHU1YTFmXHU1MDI2XHU3NzM3XHU1Mzc3XHU3ZWUyXHU2NDg1XHU2NTJiXHU2Mjg5XHU2Mzk4XHU1MDE0XHU3MjM1XHU4OWM5XHU1MWIzXHU4YmMwXHU3ZWRkXHU1NzQ3XHU4M2NjXHU5NGE3XHU1''@;'; put 'put ''MTliXHU1NDFiXHU1Y2ZiXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTkwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTBdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE5MF1bRV1dPTQ4NjQwK0UsTFs0ODY0MCtFXT1CWzE5MF1bRV0pO2ZvcihCWzE5MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGZjYVx1N2FlM1x1NmQ1YVx1OTBlMVx1OWE4Zlx1NTU4MFx1NTQ5''@;'; put 'put ''Nlx1NTM2MVx1NTRhZlx1NWYwMFx1NjNlOVx1Njk3N1x1NTFlZlx1NjE2OFx1NTIwYVx1NTgyYVx1NTJkOFx1NTc0ZVx1NzgwZFx1NzcwYlx1NWViN1x1NjE3N1x1N2NlMFx1NjI1Ylx1NjI5N1x1NGVhMlx1NzA5NVx1ODAwM1x1NjJmN1x1NzBlNFx1OTc2MFx1NTc3N1x1ODJkYlx1NjdlZlx1''@;'; put 'put ''NjhmNVx1NzhkNVx1OTg5N1x1NzlkMVx1NThmM1x1NTRiM1x1NTNlZlx1NmUzNFx1NTE0Ylx1NTIzYlx1NWJhMlx1OGJmZVx1ODBhZlx1NTU0M1x1NTdhNlx1NjA3M1x1NTc1MVx1NTQyZFx1N2E3YVx1NjA1MFx1NWI1NFx1NjNhN1x1NjJhMFx1NTNlM1x1NjI2M1x1NWJjN1x1NjdhZlx1NTRl''@;'; put 'put ''ZFx1N2E5Zlx1ODJlNlx1OTE3N1x1NWU5M1x1ODhlNFx1NTkzOFx1NTdhZVx1NjMwZVx1OGRlOFx1ODBlZlx1NTc1N1x1N2I3N1x1NGZhOVx1NWZlYlx1NWJiZFx1NmIzZVx1NTMyMVx1N2I1MFx1NzJjMlx1Njg0Nlx1NzdmZlx1NzczNlx1NjVmN1x1NTFiNVx1NGU4Zlx1NzZkNFx1NWNiZlx1''@;'; put 'put ''N2FhNVx1ODQ3NVx1NTk0ZVx1OWI0MVx1NTA4MFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5MV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTkxXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxOTFdW0VdXT00ODg5NitFLExbNDg4OTYrRV09QlsxOTFdW0VdKTtmb3IoQlsxOTJdPSJcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk5ODhcdTYxMjdcdTZlODNcdTU3NjRcdTY2''@;'; put 'put ''MDZcdTYzNDZcdTU2ZjBcdTYyZWNcdTYyNjlcdTVlZDNcdTk2MTRcdTU3ODNcdTYyYzlcdTU1ODdcdTg3MjFcdTgxNGFcdThmYTNcdTU1NjZcdTgzYjFcdTY3NjVcdThkNTZcdTg0ZGRcdTVhNmFcdTY4MGZcdTYyZTZcdTdiZWVcdTk2MTFcdTUxNzBcdTZmOWNcdThjMzBcdTYzZmRcdTg5Yzhc''@;'; put 'put ''dTYxZDJcdTdmMDZcdTcwYzJcdTZlZTVcdTc0MDVcdTY5OTRcdTcyZmNcdTVlY2FcdTkwY2VcdTY3MTdcdTZkNmFcdTYzNWVcdTUyYjNcdTcyNjJcdTgwMDFcdTRmNmNcdTU5ZTVcdTkxNmFcdTcwZDlcdTZkOWRcdTUyZDJcdTRlNTBcdTk2ZjdcdTk1NmRcdTg1N2VcdTc4Y2FcdTdkMmZcdTUx''@;'; put 'put ''MjFcdTU3OTJcdTY0YzJcdTgwOGJcdTdjN2JcdTZjZWFcdTY4ZjFcdTY5NWVcdTUxYjdcdTUzOThcdTY4YThcdTcyODFcdTllY2VcdTdiZjFcdTcyZjhcdTc5YmJcdTZmMTNcdTc0MDZcdTY3NGVcdTkxY2NcdTljYTRcdTc5M2NcdTgzODlcdTgzNTRcdTU0MGZcdTY4MTdcdTRlM2RcdTUzODlc''@;'; put 'put ''dTUyYjFcdTc4M2VcdTUzODZcdTUyMjlcdTUwODhcdTRmOGJcdTRmZDBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5Ml1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTkyXVtFXV09NDkxNTIrRSxMWzQ5MTUyK0VdPUJbMTkyXVtFXSk7Zm9y''@;'; put 'put ''KEJbMTkzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NWUyXHU3YWNiXHU3''@;'; put 'put ''YzkyXHU2Y2E1XHU5NmI2XHU1MjliXHU3NDgzXHU1NGU5XHU0ZmU5XHU4MDU0XHU4M2IyXHU4ZmRlXHU5NTcwXHU1ZWM5XHU2MDFjXHU2ZDlmXHU1ZTE4XHU2NTViXHU4MTM4XHU5NGZlXHU2MDRiXHU3MGJjXHU3ZWMzXHU3Y2FlXHU1MWM5XHU2ODgxXHU3Y2IxXHU4MjZmXHU0ZTI0XHU4Zjg2''@;'; put 'put ''XHU5MWNmXHU2NjdlXHU0ZWFlXHU4YzA1XHU2NGE5XHU4MDRhXHU1MGRhXHU3NTk3XHU3MWNlXHU1YmU1XHU4ZmJkXHU2ZjY2XHU0ZTg2XHU2NDgyXHU5NTYzXHU1ZWQ2XHU2NTk5XHU1MjE3XHU4OGMyXHU3MGM4XHU1MmEzXHU3MzBlXHU3NDMzXHU2Nzk3XHU3OGY3XHU5NzE2XHU0ZTM0XHU5''@;'; put 'put ''MGJiXHU5Y2RlXHU2ZGNiXHU1MWRiXHU4ZDQxXHU1NDFkXHU2MmNlXHU3M2IyXHU4M2YxXHU5NmY2XHU5Zjg0XHU5NGMzXHU0ZjM2XHU3ZjlhXHU1MWNjXHU3MDc1XHU5Njc1XHU1Y2FkXHU5ODg2XHU1M2U2XHU0ZWU0XHU2ZTljXHU3NDA5XHU2OWI0XHU3ODZiXHU5OThmXHU3NTU5XHU1MjE4''@;'; put 'put ''XHU3NjI0XHU2ZDQxXHU2N2YzXHU1MTZkXHU5Zjk5XHU4MDRiXHU1NDk5XHU3YjNjXHU3YWJmXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTkzXS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTNdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE5M11bRV1dPTQ5NDA4K0UsTFs0OTQwOCtFXT1C''@;'; put 'put ''WzE5M11bRV0pO2ZvcihCWzE5NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''OTY4Nlx1NTc4NFx1NjJlMlx1OTY0N1x1Njk3Y1x1NWEwNFx1NjQwMlx1N2JkM1x1NmYwZlx1OTY0Ylx1ODJhNlx1NTM2Mlx1OTg4NVx1NWU5MFx1NzA4OVx1NjNiM1x1NTM2NFx1ODY0Zlx1OWM4MVx1OWU5M1x1Nzg4Y1x1OTczMlx1OGRlZlx1OGQ0Mlx1OWU3Zlx1NmY1ZVx1Nzk4NFx1NWY1''@;'; put 'put ''NVx1OTY0Nlx1NjIyZVx1OWE3NFx1NTQxNVx1OTRkZFx1NGZhM1x1NjVjNVx1NWM2NVx1NWM2MVx1N2YxNVx1ODY1MVx1NmMyZlx1NWY4Ylx1NzM4N1x1NmVlNFx1N2VmZlx1NWNlNlx1NjMxYlx1NWI2YVx1NmVlNlx1NTM3NVx1NGU3MVx1NjNhMFx1NzU2NVx1NjJhMVx1OGY2ZVx1NGYyNlx1''@;'; put 'put ''NGVkMVx1NmNhNlx1N2ViNlx1OGJiYVx1ODQxZFx1ODdiYVx1N2Y1N1x1OTAzYlx1OTUyM1x1N2JhOVx1OWFhMVx1ODhmOFx1ODQzZFx1NmQxYlx1OWE4Nlx1N2VkY1x1NTk4OFx1OWViYlx1NzM5Ylx1NzgwMVx1ODY4Mlx1OWE2Y1x1OWE4Mlx1NTYxYlx1NTQxN1x1NTdjYlx1NGU3MFx1OWVh''@;'; put 'put ''Nlx1NTM1Nlx1OGZjOFx1ODEwOVx1Nzc5Mlx1OTk5Mlx1ODZlZVx1NmVlMVx1ODUxM1x1NjZmY1x1NjE2Mlx1NmYyYlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5NF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTk0XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsxOTRdW0VdXT00OTY2NCtF''@;'; put 'put ''LExbNDk2NjQrRV09QlsxOTRdW0VdKTtmb3IoQlsxOTVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdThjMjlcdTgyOTJcdTgzMmJcdTc2ZjJcdTZjMTNcdTVmZDlcdTgzYmRcdTczMmJcdTgzMDVcdTk1MWFcdTZiZGJcdTc3ZGJcdTk0YzZcdTUzNmZcdTgzMDJcdTUxOTJcdTVlM2RcdThjOGNcdThkMzhcdTRlNDhcdTczYWJcdTY3OWFcdTY4ODVcdTkxNzZcdTk3MDlcdTcx''@;'; put 'put ''NjRcdTZjYTFcdTc3MDlcdTVhOTJcdTk1NDFcdTZiY2ZcdTdmOGVcdTY2MjdcdTViZDBcdTU5YjlcdTVhOWFcdTk1ZThcdTk1ZjdcdTRlZWNcdTg0MGNcdTg0OTlcdTZhYWNcdTc2ZGZcdTk1MzBcdTczMWJcdTY4YTZcdTViNWZcdTc3MmZcdTkxOWFcdTk3NjFcdTdjZGNcdThmZjdcdThjMWNc''@;'; put 'put ''dTVmMjVcdTdjNzNcdTc5ZDhcdTg5YzVcdTZjY2NcdTg3MWNcdTViYzZcdTVlNDJcdTY4YzlcdTc3MjBcdTdlZjVcdTUxOTVcdTUxNGRcdTUyYzlcdTVhMjlcdTdmMDVcdTk3NjJcdTgyZDdcdTYzY2ZcdTc3ODRcdTg1ZDBcdTc5ZDJcdTZlM2FcdTVlOTlcdTU5OTlcdTg1MTFcdTcwNmRcdTZj''@;'; put 'put ''MTFcdTYyYmZcdTc2YmZcdTY1NGZcdTYwYWZcdTk1ZmRcdTY2MGVcdTg3OWZcdTllMjNcdTk0ZWRcdTU0MGRcdTU0N2RcdThjMmNcdTY0NzhcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOTVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzE5NV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTk1''@;'; put 'put ''XVtFXV09NDk5MjArRSxMWzQ5OTIwK0VdPUJbMTk1XVtFXSk7Zm9yKEJbMTk2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NDc5XHU4NjExXHU2YTIxXHU4MTljXHU3OGU4XHU2NDY5XHU5YjU0XHU2MmI5XHU2NzJiXHU4M2FiXHU1OGE4XHU5ZWQ4XHU2Y2FiXHU2ZjIwXHU1YmRlXHU5NjRjXHU4YzBiXHU3MjVmXHU2N2QwXHU2MmM3XHU3MjYxXHU0ZWE5XHU1OWM2XHU2''@;'; put 'put ''YmNkXHU1ODkzXHU2NmFlXHU1ZTU1XHU1MmRmXHU2MTU1XHU2NzI4XHU3NmVlXHU3NzY2XHU3MjY3XHU3YTQ2XHU2MmZmXHU1NGVhXHU1NDUwXHU5NGEwXHU5MGEzXHU1YTFjXHU3ZWIzXHU2YzE2XHU0ZTQzXHU1OTc2XHU4MDEwXHU1OTQ4XHU1MzU3XHU3NTM3XHU5NmJlXHU1NmNhXHU2MzIw''@;'; put 'put ''XHU4MTExXHU2MDdjXHU5NWY5XHU2ZGQ2XHU1NDYyXHU5OTgxXHU1MTg1XHU1YWU5XHU4MGZkXHU1OWFlXHU5NzEzXHU1MDJhXHU2Y2U1XHU1YzNjXHU2MmRmXHU0ZjYwXHU1MzNmXHU4MTdiXHU5MDA2XHU2ZWJhXHU4NTJiXHU2MmM4XHU1ZTc0XHU3OGJlXHU2NGI1XHU2MzdiXHU1ZmY1XHU1''@;'; put 'put ''YTE4XHU5MTdmXHU5ZTFmXHU1YzNmXHU2MzRmXHU4MDQyXHU1YjdkXHU1NTZlXHU5NTRhXHU5NTRkXHU2ZDg1XHU2MGE4XHU2N2UwXHU3MmRlXHU1MWRkXHU1YjgxXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTk2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsxOTZdW0VdLmNoYXJDb2RlQXQo''@;'; put 'put ''MCkmJihtZVtCWzE5Nl1bRV1dPTUwMTc2K0UsTFs1MDE3NitFXT1CWzE5Nl1bRV0pO2ZvcihCWzE5N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjJlN1x1NmNkZVx1NzI1Ylx1NjI2ZFx1OTRhZVx1N2ViZFx1ODExM1x1NmQ1M1x1NTE5Y1x1NWYwNFx1NTk3NFx1NTJhYVx1NjAxMlx1NTk3M1x1NjY5Nlx1ODY1MFx1NzU5Zlx1NjMyYVx1NjFlNlx1N2NlZlx1OGJmYVx1''@;'; put 'put ''NTRlNlx1NmIyN1x1OWUyNVx1NmJiNFx1ODVkNVx1NTQ1NVx1NTA3Nlx1NmNhNFx1NTU2YVx1OGRiNFx1NzIyY1x1NWUxNVx1NjAxNVx1NzQzNlx1NjJjZFx1NjM5Mlx1NzI0Y1x1NWY5OFx1NmU0M1x1NmQzZVx1NjUwMFx1NmY1OFx1NzZkOFx1NzhkMFx1NzZmY1x1NzU1NFx1NTIyNFx1NTNk''@;'; put 'put ''Ylx1NGU1M1x1NWU5ZVx1NjVjMVx1ODAyYVx1ODBkNlx1NjI5Ylx1NTQ4Nlx1NTIyOFx1NzBhZVx1ODg4ZFx1OGRkMVx1NmNlMVx1NTQ3OFx1ODBkYVx1NTdmOVx1ODhmNFx1OGQ1NFx1OTY2YVx1OTE0ZFx1NGY2OVx1NmM5Ylx1NTViN1x1NzZjNlx1NzgzMFx1NjJhOFx1NzBmOVx1NmY4ZVx1''@;'; put 'put ''NWY2ZFx1ODRlY1x1NjhkYVx1Nzg3Y1x1N2JmN1x1ODFhOFx1NjcwYlx1OWU0Zlx1NjM2N1x1NzhiMFx1NTc2Zlx1NzgxMlx1OTczOVx1NjI3OVx1NjJhYlx1NTI4OFx1NzQzNVx1NmJkN1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzE5N10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMTk3XVtF''@;'; put 'put ''XS5jaGFyQ29kZUF0KDApJiYobWVbQlsxOTddW0VdXT01MDQzMitFLExbNTA0MzIrRV09QlsxOTddW0VdKTtmb3IoQlsxOThdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU1NjRcdTgxM2VcdTc1YjJcdTc2YWVcdTUzMzlcdTc1ZGVcdTUwZmJcdTVjNDFcdThiNmNcdTdiYzdcdTUwNGZcdTcyNDdcdTlhOTdcdTk4ZDhcdTZmMDJcdTc0ZTJcdTc5NjhcdTY0ODdcdTc3YTVc''@;'; put 'put ''dTYyZmNcdTk4OTFcdThkMmJcdTU0YzFcdTgwNThcdTRlNTJcdTU3NmFcdTgyZjlcdTg0MGRcdTVlNzNcdTUxZWRcdTc0ZjZcdThiYzRcdTVjNGZcdTU3NjFcdTZjZmNcdTk4ODdcdTVhNDZcdTc4MzRcdTliNDRcdThmZWJcdTdjOTVcdTUyNTZcdTYyNTFcdTk0ZmFcdTRlYzZcdTgzODZcdTg0''@;'; put 'put ''NjFcdTgzZTlcdTg0YjJcdTU3ZDRcdTY3MzRcdTU3MDNcdTY2NmVcdTZkNjZcdThjMzFcdTY2ZGRcdTcwMTFcdTY3MWZcdTZiM2FcdTY4MTZcdTYyMWFcdTU5YmJcdTRlMDNcdTUxYzRcdTZmMDZcdTY3ZDJcdTZjOGZcdTUxNzZcdTY4Y2JcdTU5NDdcdTZiNjdcdTc1NjZcdTVkMGVcdTgxMTBc''@;'; put 'put ''dTlmNTBcdTY1ZDdcdTc5NDhcdTc5NDFcdTlhOTFcdThkNzdcdTVjODJcdTRlNWVcdTRmMDFcdTU0MmZcdTU5NTFcdTc4MGNcdTU2NjhcdTZjMTRcdThmYzRcdTVmMDNcdTZjN2RcdTZjZTNcdThiYWJcdTYzOTBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsxOThdLmxlbmd0aDsrK0UpNjU1''@;'; put 'put ''MzMhPT1CWzE5OF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMTk4XVtFXV09NTA2ODgrRSxMWzUwNjg4K0VdPUJbMTk4XVtFXSk7Zm9yKEJbMTk5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MDcwXHU2ZDNkXHU3Mjc1XHU2MjY2XHU5NDhlXHU5NGM1XHU1MzQzXHU4ZmMxXHU3YjdlXHU0ZWRmXHU4YzI2XHU0ZTdlXHU5ZWQ0XHU5NGIxXHU5NGIzXHU1MjRkXHU2ZjVj''@;'; put 'put ''XHU5MDYzXHU2ZDQ1XHU4YzM0XHU1ODExXHU1ZDRjXHU2YjIwXHU2YjQ5XHU2N2FhXHU1NDViXHU4MTU0XHU3ZjhjXHU1ODk5XHU4NTM3XHU1ZjNhXHU2MmEyXHU2YTQ3XHU5NTM5XHU2NTcyXHU2MDg0XHU2ODY1XHU3N2E3XHU0ZTU0XHU0ZmE4XHU1ZGU3XHU5Nzk4XHU2NGFjXHU3ZmQ4XHU1''@;'; put 'put ''Y2VkXHU0ZmNmXHU3YThkXHU1MjA3XHU4MzA0XHU0ZTE0XHU2MDJmXHU3YTgzXHU5NGE2XHU0ZmI1XHU0ZWIyXHU3OWU2XHU3NDM0XHU1MmU0XHU4MmI5XHU2NGQyXHU3OWJkXHU1YmRkXHU2YzgxXHU5NzUyXHU4ZjdiXHU2YzIyXHU1MDNlXHU1MzdmXHU2ZTA1XHU2NGNlXHU2Njc0XHU2YzMw''@;'; put 'put ''XHU2MGM1XHU5ODc3XHU4YmY3XHU1ZTg2XHU3NDNjXHU3YTc3XHU3OWNiXHU0ZTE4XHU5MGIxXHU3NDAzXHU2YzQyXHU1NmRhXHU5MTRiXHU2Y2M1XHU4ZDhiXHU1MzNhXHU4NmM2XHU2NmYyXHU4ZWFmXHU1YzQ4XHU5YTcxXHU2ZTIwXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMTk5XS5s''@;'; put 'put ''ZW5ndGg7KytFKTY1NTMzIT09QlsxOTldW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzE5OV1bRV1dPTUwOTQ0K0UsTFs1MDk0NCtFXT1CWzE5OV1bRV0pO2ZvcihCWzIwMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTNkNlx1NWEzNlx1OWY4Ylx1OGRhM1x1NTNiYlx1NTcwOFx1OThhN1x1Njc0M1x1OTE5Ylx1NmNjOVx1NTE2OFx1NzVjYVx1NjJmM1x1NzJhY1x1NTIz''@;'; put 'put ''OFx1NTI5ZFx1N2YzYVx1NzA5NFx1NzYzOFx1NTM3NFx1OWU0YVx1NjliN1x1Nzg2ZVx1OTZjMFx1ODhkOVx1N2ZhNFx1NzEzNlx1NzFjM1x1NTE4OVx1NjdkM1x1NzRlNFx1NThlNFx1NjUxOFx1NTZiN1x1OGJhOVx1OTk3Nlx1NjI3MFx1N2VkNVx1NjBmOVx1NzBlZFx1NThlY1x1NGVjMVx1''@;'; put 'put ''NGViYVx1NWZjZFx1OTdlN1x1NGVmYlx1OGJhNFx1NTIwM1x1NTk4YVx1N2VhYlx1NjI1NFx1NGVjZFx1NjVlNVx1NjIwZVx1ODMzOFx1ODRjOVx1ODM2M1x1ODc4ZFx1NzE5NFx1NmViNlx1NWJiOVx1N2VkMlx1NTE5N1x1NjNjOVx1NjdkNFx1ODA4OVx1ODMzOVx1ODgxNVx1NTExMlx1NWI3''@;'; put 'put ''YVx1NTk4Mlx1OGZiMVx1NGU3M1x1NmM1ZFx1NTE2NVx1ODkyNVx1OGY2Zlx1OTYyZVx1ODU0YVx1NzQ1ZVx1OTUxMFx1OTVmMFx1NmRhNlx1ODJlNVx1NWYzMVx1NjQ5Mlx1NmQxMlx1ODQyOFx1ODE2ZVx1OWNjM1x1NTg1ZVx1OGQ1Ylx1NGUwOVx1NTNjMVx1ZmZmZCIuc3BsaXQoIiIpLEU9''@;'; put 'put ''MDtFIT1CWzIwMF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjAwXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMDBdW0VdXT01MTIwMCtFLExbNTEyMDArRV09QlsyMDBdW0VdKTtmb3IoQlsyMDFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRmMWVcdTY1NjNcdTY4NTFcdTU1ZDNcdTRlMjdcdTY0MTRcdTlhOWFcdTYyNmJcdTVhYzJcdTc0NWZcdTgyNzJcdTZkYTlcdTY4''@;'; put 'put ''ZWVcdTUwZTdcdTgzOGVcdTc4MDJcdTY3NDBcdTUyMzlcdTZjOTlcdTdlYjFcdTUwYmJcdTU1NjVcdTcxNWVcdTdiNWJcdTY2NTJcdTczY2FcdTgyZWJcdTY3NDlcdTVjNzFcdTUyMjBcdTcxN2RcdTg4NmJcdTk1ZWFcdTk2NTVcdTY0YzVcdThkNjFcdTgxYjNcdTU1ODRcdTZjNTVcdTYyNDdc''@;'; put 'put ''dTdmMmVcdTU4OTJcdTRmMjRcdTU1NDZcdThkNGZcdTY2NGNcdTRlMGFcdTVjMWFcdTg4ZjNcdTY4YTJcdTYzNGVcdTdhMGRcdTcwZTdcdTgyOGRcdTUyZmFcdTk3ZjZcdTVjMTFcdTU0ZThcdTkwYjVcdTdlY2RcdTU5NjJcdThkNGFcdTg2YzdcdTgyMGNcdTgyMGRcdThkNjZcdTY0NDRcdTVj''@;'; put 'put ''MDRcdTYxNTFcdTZkODlcdTc5M2VcdThiYmVcdTc4MzdcdTc1MzNcdTU0N2JcdTRmMzhcdThlYWJcdTZkZjFcdTVhMjBcdTdlYzVcdTc5NWVcdTZjODhcdTViYTFcdTVhNzZcdTc1MWFcdTgwYmVcdTYxNGVcdTZlMTdcdTU4ZjBcdTc1MWZcdTc1MjVcdTcyNzJcdTUzNDdcdTdlZjNcdWZmZmQi''@;'; put 'put ''LnNwbGl0KCIiKSxFPTA7RSE9QlsyMDFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwMV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjAxXVtFXV09NTE0NTYrRSxMWzUxNDU2K0VdPUJbMjAxXVtFXSk7Zm9yKEJbMjAyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NzAxXHU3NmRiXHU1MjY5XHU4MGRjXHU1NzIzXHU1ZTA4XHU1OTMxXHU3MmVlXHU2NWJkXHU2ZTdmXHU4''@;'; put 'put ''YmQ3XHU1YzM4XHU4NjcxXHU1MzQxXHU3N2YzXHU2MmZlXHU2NWY2XHU0ZWMwXHU5OGRmXHU4NjgwXHU1YjllXHU4YmM2XHU1M2YyXHU3N2UyXHU0ZjdmXHU1YzRlXHU5YTc2XHU1OWNiXHU1ZjBmXHU3OTNhXHU1OGViXHU0ZTE2XHU2N2ZmXHU0ZThiXHU2MmVkXHU4YTkzXHU5MDFkXHU1MmJm''@;'; put 'put ''XHU2NjJmXHU1NWRjXHU1NjZjXHU5MDAyXHU0ZWQ1XHU0ZjhkXHU5MWNhXHU5OTcwXHU2YzBmXHU1ZTAyXHU2MDQzXHU1YmE0XHU4OWM2XHU4YmQ1XHU2NTM2XHU2MjRiXHU5OTk2XHU1Yjg4XHU1YmZmXHU2Mzg4XHU1NTJlXHU1M2Q3XHU3NjI2XHU1MTdkXHU4NTJjXHU2N2EyXHU2OGIzXHU2''@;'; put 'put ''YjhhXHU2MjkyXHU4ZjkzXHU1M2Q0XHU4MjEyXHU2ZGQxXHU3NThmXHU0ZTY2XHU4ZDRlXHU1YjcwXHU3MTlmXHU4NWFmXHU2NjkxXHU2NmQ5XHU3ZjcyXHU4NzAwXHU5ZWNkXHU5ZjIwXHU1YzVlXHU2NzJmXHU4ZmYwXHU2ODExXHU2NzVmXHU2MjBkXHU3YWQ2XHU1ODg1XHU1ZWI2XHU2NTcw''@;'; put 'put ''XHU2ZjMxXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjAyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDJdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIwMl1bRV1dPTUxNzEyK0UsTFs1MTcxMitFXT1CWzIwMl1bRV0pO2ZvcihCWzIwM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjA1NVx1NTIzN1x1ODAwZFx1NjQ1NFx1ODg3MFx1NzUyOVx1NWUwNVx1NjgxM1x1''@;'; put 'put ''NjJmNFx1OTcxY1x1NTNjY1x1NzIzZFx1OGMwMVx1NmMzNFx1Nzc2MVx1N2EwZVx1NTQyZVx1NzdhY1x1OTg3YVx1ODIxY1x1OGJmNFx1Nzg1NVx1NjcxNFx1NzBjMVx1NjVhZlx1NjQ5NVx1NTYzNlx1NjAxZFx1NzljMVx1NTNmOFx1NGUxZFx1NmI3Ylx1ODA4Nlx1NWJmYVx1NTVlM1x1NTZk''@;'; put 'put ''Ylx1NGYzYVx1NGYzY1x1OTk3Mlx1NWRmM1x1Njc3ZVx1ODAzOFx1NjAwMlx1OTg4Mlx1OTAwMVx1NWI4Ylx1OGJiY1x1OGJmNVx1NjQxY1x1ODI1OFx1NjRkZVx1NTVmZFx1ODJjZlx1OTE2NVx1NGZkN1x1N2QyMFx1OTAxZlx1N2M5Zlx1NTBmM1x1NTg1MVx1NmVhZlx1NWJiZlx1OGJjOVx1''@;'; put 'put ''ODA4M1x1OTE3OFx1ODQ5Y1x1N2I5N1x1ODY3ZFx1OTY4Ylx1OTY4Zlx1N2VlNVx1OWFkM1x1Nzg4ZVx1NWM4MVx1N2E1N1x1OTA0Mlx1OTZhN1x1Nzk1Zlx1NWI1OVx1NjM1Zlx1N2IwYlx1ODRkMVx1NjhhZFx1NTUwNlx1N2YyOVx1NzQxMFx1N2QyMlx1OTUwMVx1NjI0MFx1NTg0Y1x1NGVk''@;'; put 'put ''Nlx1NWI4M1x1NTk3OVx1NTg1NFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwM10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjAzXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMDNdW0VdXT01MTk2OCtFLExbNTE5NjgrRV09QlsyMDNdW0VdKTtmb3IoQlsyMDRdPSJcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTczNmRcdTYzMWVcdThlNGJcdThlMGZcdTgwY2VcdTgyZDRc''@;'; put 'put ''dTYyYWNcdTUzZjBcdTZjZjBcdTkxNWVcdTU5MmFcdTYwMDFcdTZjNzBcdTU3NGRcdTY0NGFcdThkMmFcdTc2MmJcdTZlZTlcdTU3NWJcdTZhODBcdTc1ZjBcdTZmNmRcdThjMmRcdThjMDhcdTU3NjZcdTZiZWZcdTg4OTJcdTc4YjNcdTYzYTJcdTUzZjlcdTcwYWRcdTZjNjRcdTU4NThcdTY0''@;'; put 'put ''MmFcdTU4MDJcdTY4ZTBcdTgxOWJcdTU1MTBcdTdjZDZcdTUwMThcdThlYmFcdTZkY2NcdThkOWZcdTcwZWJcdTYzOGZcdTZkOWJcdTZlZDRcdTdlZTZcdTg0MDRcdTY4NDNcdTkwMDNcdTZkZDhcdTk2NzZcdThiYThcdTU5NTdcdTcyNzlcdTg1ZTRcdTgxN2VcdTc1YmNcdThhOGFcdTY4YWZc''@;'; put 'put ''dTUyNTRcdThlMjJcdTk1MTFcdTYzZDBcdTk4OThcdThlNDRcdTU1N2NcdTRmNTNcdTY2ZmZcdTU2OGZcdTYwZDVcdTZkOTVcdTUyNDNcdTVjNDlcdTU5MjlcdTZkZmJcdTU4NmJcdTc1MzBcdTc1MWNcdTYwNmNcdTgyMTRcdTgxNDZcdTYzMTFcdTY3NjFcdThmZTJcdTc3M2FcdThkZjNcdThk''@;'; put 'put ''MzRcdTk0YzFcdTVlMTZcdTUzODVcdTU0MmNcdTcwYzNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwNF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjA0XVtFXV09NTIyMjQrRSxMWzUyMjI0K0VdPUJbMjA0XVtFXSk7Zm9yKEJbMjA1XT0i''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YzQwXHU1ZWY3XHU1MDVjXHU0ZWFk''@;'; put 'put ''XHU1ZWFkXHU2MzNhXHU4MjQ3XHU5MDFhXHU2ODUwXHU5MTZlXHU3N2IzXHU1NDBjXHU5NGRjXHU1ZjY0XHU3YWU1XHU2ODc2XHU2MzQ1XHU3YjUyXHU3ZWRmXHU3NWRiXHU1MDc3XHU2Mjk1XHU1OTM0XHU5MDBmXHU1MWY4XHU3OWMzXHU3YTgxXHU1NmZlXHU1ZjkyXHU5MDE0XHU2ZDgyXHU1''@;'; put 'put ''YzYwXHU1NzFmXHU1NDEwXHU1MTU0XHU2ZTRkXHU1NmUyXHU2M2E4XHU5ODkzXHU4MTdmXHU4NzE1XHU4OTJhXHU5MDAwXHU1NDFlXHU1YzZmXHU4MWMwXHU2MmQ2XHU2MjU4XHU4MTMxXHU5ZTM1XHU5NjQwXHU5YTZlXHU5YTdjXHU2OTJkXHU1OWE1XHU2MmQzXHU1NTNlXHU2MzE2XHU1NGM3''@;'; put 'put ''XHU4NmQ5XHU2ZDNjXHU1YTAzXHU3NGU2XHU4ODljXHU2YjZhXHU1OTE2XHU4YzRjXHU1ZjJmXHU2ZTdlXHU3M2E5XHU5ODdkXHU0ZTM4XHU3MGY3XHU1YjhjXHU3ODk3XHU2MzNkXHU2NjVhXHU3Njk2XHU2MGNiXHU1YjliXHU1YTQ5XHU0ZTA3XHU4MTU1XHU2YzZhXHU3MzhiXHU0ZWExXHU2''@;'; put 'put ''Nzg5XHU3ZjUxXHU1ZjgwXHU2NWZhXHU2NzFiXHU1ZmQ4XHU1OTg0XHU1YTAxXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjA1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDVdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIwNV1bRV1dPTUyNDgwK0UsTFs1MjQ4MCtFXT1CWzIwNV1bRV0p''@;'; put 'put ''O2ZvcihCWzIwNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWRjZFx1NWZh''@;'; put 'put ''ZVx1NTM3MVx1OTdlNlx1OGZkZFx1Njg0NVx1NTZmNFx1NTUyZlx1NjBkZlx1NGUzYVx1NmY0ZFx1N2VmNFx1ODJjN1x1ODQwZVx1NTlkNFx1NGYxZlx1NGYyYVx1NWMzZVx1N2VhY1x1NjcyYVx1ODUxYVx1NTQ3M1x1NzU0Zlx1ODBjM1x1NTU4Mlx1OWI0Zlx1NGY0ZFx1NmUyZFx1OGMxM1x1''@;'; put 'put ''NWMwOVx1NjE3MFx1NTM2Ylx1NzYxZlx1NmUyOVx1ODY4YVx1NjU4N1x1OTVmYlx1N2ViOVx1NTQzYlx1N2EzM1x1N2QwYVx1OTVlZVx1NTVlMVx1N2ZjMVx1NzRlZVx1NjMxZFx1ODcxN1x1NmRhMVx1N2E5ZFx1NjIxMVx1NjVhMVx1NTM2N1x1NjNlMVx1NmM4M1x1NWRlYlx1NTQ1Y1x1OTRh''@;'; put 'put ''OFx1NGU0Y1x1NmM2MVx1OGJlY1x1NWM0Ylx1NjVlMFx1ODI5Y1x1NjhhN1x1NTQzZVx1NTQzNFx1NmJjYlx1NmI2Nlx1NGU5NFx1NjM0Mlx1NTM0OFx1ODIxZVx1NGYwZFx1NGZhZVx1NTc1ZVx1NjIwYVx1OTZmZVx1NjY2NFx1NzI2OVx1NTJmZlx1NTJhMVx1NjA5Zlx1OGJlZlx1NjYxNFx1''@;'; put 'put ''NzE5OVx1Njc5MFx1ODk3Zlx1Nzg1Mlx1NzdmZFx1NjY3MFx1NTYzYlx1NTQzOFx1OTUyMVx1NzI3YVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwNl0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjA2XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMDZdW0VdXT01MjczNitFLExbNTI3MzYr''@;'; put 'put ''RV09QlsyMDZdW0VdKTtmb3IoQlsyMDddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdTdhMDBcdTYwNmZcdTVlMGNcdTYwODlcdTgxOWRcdTU5MTVcdTYwZGNcdTcxODRcdTcwZWZcdTZlYWFcdTZjNTBcdTcyODBcdTZhODRcdTg4YWRcdTVlMmRcdTRlNjBcdTVhYjNcdTU1OWNcdTk0ZTNcdTZkMTdcdTdjZmJcdTk2OTlcdTYyMGZcdTdlYzZcdTc3OGVcdTg2N2VcdTUzMjNc''@;'; put 'put ''dTk3MWVcdThmOTZcdTY2ODdcdTVjZTFcdTRmYTBcdTcyZWRcdTRlMGJcdTUzYTZcdTU5MGZcdTU0MTNcdTYzODBcdTk1MjhcdTUxNDhcdTRlZDlcdTljOWNcdTdlYTRcdTU0YjhcdThkMjRcdTg4NTRcdTgyMzdcdTk1ZjJcdTZkOGVcdTVmMjZcdTVhY2NcdTY2M2VcdTk2NjlcdTczYjBcdTcz''@;'; put 'put ''MmVcdTUzYmZcdTgxN2FcdTk5ODVcdTdmYTFcdTViYWFcdTk2NzdcdTk2NTBcdTdlYmZcdTc2ZjhcdTUzYTJcdTk1NzZcdTk5OTlcdTdiYjFcdTg5NDRcdTZlNThcdTRlNjFcdTdmZDRcdTc5NjVcdThiZTZcdTYwZjNcdTU0Y2RcdTRlYWJcdTk4NzlcdTVkZjdcdTZhNjFcdTUwY2ZcdTU0MTFc''@;'; put 'put ''dThjNjFcdTg0MjdcdTc4NWRcdTk3MDRcdTUyNGFcdTU0ZWVcdTU2YTNcdTk1MDBcdTZkODhcdTViYjVcdTZkYzZcdTY2NTNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMDddLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIwN11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjA3XVtFXV09NTI5''@;'; put 'put ''OTIrRSxMWzUyOTkyK0VdPUJbMjA3XVtFXSk7Zm9yKEJbMjA4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHU1YzBmXHU1YjVkXHU2ODIxXHU4MDk2XHU1NTc4XHU3YjExXHU2NTQ4XHU2OTU0XHU0ZTliXHU2YjQ3XHU4NzRlXHU5NzhiXHU1MzRmXHU2MzFmXHU2NDNhXHU5MGFhXHU2NTljXHU4MGMxXHU4YzEwXHU1MTk5XHU2OGIwXHU1Mzc4XHU4N2Y5XHU2MWM4XHU2Y2M0''@;'; put 'put ''XHU2Y2ZiXHU4YzIyXHU1YzUxXHU4NWFhXHU4MmFmXHU5NTBjXHU2YjIzXHU4ZjliXHU2NWIwXHU1ZmZiXHU1ZmMzXHU0ZmUxXHU4ODQ1XHU2NjFmXHU4MTY1XHU3MzI5XHU2MGZhXHU1MTc0XHU1MjExXHU1NzhiXHU1ZjYyXHU5MGEyXHU4ODRjXHU5MTkyXHU1ZTc4XHU2NzRmXHU2MDI3XHU1''@;'; put 'put ''OWQzXHU1MTQ0XHU1MWY2XHU4MGY4XHU1MzA4XHU2Yzc5XHU5NmM0XHU3MThhXHU0ZjExXHU0ZmVlXHU3ZjllXHU2NzNkXHU1NWM1XHU5NTA4XHU3OWMwXHU4ODk2XHU3ZWUzXHU1ODlmXHU2MjBjXHU5NzAwXHU4NjVhXHU1NjE4XHU5ODdiXHU1ZjkwXHU4YmI4XHU4NGM0XHU5MTU3XHU1M2Q5''@;'; put 'put ''XHU2NWVkXHU1ZThmXHU3NTVjXHU2MDY0XHU3ZDZlXHU1YTdmXHU3ZWVhXHU3ZWVkXHU4ZjY5XHU1NWE3XHU1YmEzXHU2MGFjXHU2NWNiXHU3Mzg0XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjA4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMDhdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtC''@;'; put 'put ''WzIwOF1bRV1dPTUzMjQ4K0UsTFs1MzI0OCtFXT1CWzIwOF1bRV0pO2ZvcihCWzIwOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTAwOVx1NzY2M1x1NzcyOVx1N2VkYVx1OTc3NFx1ODU5Ylx1NWI2Nlx1N2E3NFx1OTZlYVx1ODg0MFx1NTJjYlx1NzE4Zlx1NWZhYVx1NjVlY1x1OGJlMlx1NWJmYlx1OWE2Zlx1NWRlMVx1NmI4OVx1NmM1Ylx1OGJhZFx1OGJhZlx1OTAw''@;'; put 'put ''YVx1OGZjNVx1NTM4Ylx1NjJiY1x1OWUyNlx1OWUyZFx1NTQ0MFx1NGUyYlx1ODJiZFx1NzI1OVx1ODY5Y1x1NWQxNlx1ODg1OVx1NmRhZlx1OTZjNVx1NTRkMVx1NGU5YVx1OGJiNlx1NzEwOVx1NTRiZFx1OTYwOVx1NzBkZlx1NmRmOVx1NzZkMFx1NGUyNVx1NzgxNFx1ODcxMlx1NWNhOVx1''@;'; put 'put ''NWVmNlx1OGEwMFx1OTg5Y1x1OTYwZVx1NzA4ZVx1NmNiZlx1NTk0NFx1NjNhOVx1NzczY1x1ODg0ZFx1NmYxNFx1ODI3M1x1NTgzMFx1NzFkNVx1NTM4Y1x1NzgxYVx1OTZjMVx1NTUwMVx1NWY2Nlx1NzEzMFx1NWJiNFx1OGMxYVx1OWE4Y1x1NmI4M1x1NTkyZVx1OWUyZlx1NzllN1x1Njc2''@;'; put 'put ''OFx1NjI2Y1x1NGY2Zlx1NzVhMVx1N2Y4YVx1NmQwYlx1OTYzM1x1NmMyN1x1NGVmMFx1NzVkMlx1NTE3Ylx1NjgzN1x1NmYzZVx1OTA4MFx1ODE3MFx1NTk5Nlx1NzQ3Nlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIwOV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjA5XVtFXS5jaGFyQ29k''@;'; put 'put ''ZUF0KDApJiYobWVbQlsyMDldW0VdXT01MzUwNCtFLExbNTM1MDQrRV09QlsyMDldW0VdKTtmb3IoQlsyMTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY0NDdcdTVjMjdcdTkwNjVcdTdhOTFcdThjMjNcdTU5ZGFcdTU0YWNcdTgyMDBcdTgzNmZcdTg5ODFcdTgwMDBcdTY5MzBcdTU2NGVcdTgwMzZcdTcyMzdcdTkxY2VcdTUxYjZcdTRlNWZcdTk4NzVcdTYzOTZcdTRl''@;'; put 'put ''MWFcdTUzZjZcdTY2ZjNcdTgxNGJcdTU5MWNcdTZkYjJcdTRlMDBcdTU4ZjlcdTUzM2JcdTYzZDZcdTk0ZjFcdTRmOWRcdTRmMGFcdTg4NjNcdTk4OTBcdTU5MzdcdTkwNTdcdTc5ZmJcdTRlZWFcdTgwZjBcdTc1OTFcdTZjODJcdTViOWNcdTU5ZThcdTVmNWRcdTY5MDVcdTg2ODFcdTUwMWFc''@;'; put 'put ''dTVkZjJcdTRlNTlcdTc3ZTNcdTRlZTVcdTgyN2FcdTYyOTFcdTY2MTNcdTkwOTFcdTVjNzlcdTRlYmZcdTVmNzlcdTgxYzZcdTkwMzhcdTgwODRcdTc1YWJcdTRlYTZcdTg4ZDRcdTYxMGZcdTZiYzVcdTVmYzZcdTRlNDlcdTc2Y2FcdTZlYTJcdThiZTNcdThiYWVcdThjMGFcdThiZDFcdTVm''@;'; put 'put ''MDJcdTdmZmNcdTdmY2NcdTdlY2VcdTgzMzVcdTgzNmJcdTU2ZTBcdTZiYjdcdTk3ZjNcdTk2MzRcdTU5ZmJcdTU0MWZcdTk0ZjZcdTZkZWJcdTViYzVcdTk5NmVcdTVjMzlcdTVmMTVcdTk2OTBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIx''@;'; put 'put ''MF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjEwXVtFXV09NTM3NjArRSxMWzUzNzYwK0VdPUJbMjEwXVtFXSk7Zm9yKEJbMjExXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MzcwXHU4MmYxXHU2YTMxXHU1YTc0XHU5ZTcwXHU1ZTk0XHU3ZjI4XHU4M2I5XHU4NDI0XHU4NDI1XHU4MzY3XHU4NzQ3XHU4ZmNlXHU4ZDYyXHU3NmM4XHU1ZjcxXHU5ODk2XHU3ODZjXHU2''@;'; put 'put ''NjIwXHU1NGRmXHU2MmU1XHU0ZjYzXHU4MWMzXHU3NWM4XHU1ZWI4XHU5NmNkXHU4ZTBhXHU4NmY5XHU1NDhmXHU2Y2YzXHU2ZDhjXHU2YzM4XHU2MDdmXHU1MmM3XHU3NTI4XHU1ZTdkXHU0ZjE4XHU2MGEwXHU1ZmU3XHU1YzI0XHU3NTMxXHU5MGFlXHU5NGMwXHU3MmI5XHU2Y2I5XHU2ZTM4''@;'; put 'put ''XHU5MTQ5XHU2NzA5XHU1M2NiXHU1M2YzXHU0ZjUxXHU5MWM5XHU4YmYxXHU1M2M4XHU1ZTdjXHU4ZmMyXHU2ZGU0XHU0ZThlXHU3NmMyXHU2OTg2XHU4NjVlXHU2MTFhXHU4MjA2XHU0ZjU5XHU0ZmRlXHU5MDNlXHU5YzdjXHU2MTA5XHU2ZTFkXHU2ZTE0XHU5Njg1XHU0ZTg4XHU1YTMxXHU5''@;'; put 'put ''NmU4XHU0ZTBlXHU1YzdmXHU3OWI5XHU1Yjg3XHU4YmVkXHU3ZmJkXHU3Mzg5XHU1N2RmXHU4MjhiXHU5MGMxXHU1NDAxXHU5MDQ3XHU1NWJiXHU1Y2VhXHU1ZmExXHU2MTA4XHU2YjMyXHU3MmYxXHU4MGIyXHU4YTg5XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjExXS5sZW5ndGg7KytF''@;'; put 'put ''KTY1NTMzIT09QlsyMTFdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIxMV1bRV1dPTU0MDE2K0UsTFs1NDAxNitFXT1CWzIxMV1bRV0pO2ZvcihCWzIxMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmQ3NFx1NWJkM1x1ODhkNVx1OTg4NFx1OGM2Ylx1OWE2ZFx1OWUzM1x1NmUwYVx1NTFhNFx1NTE0M1x1NTdhM1x1ODg4MVx1NTM5Zlx1NjNmNFx1OGY5NVx1NTZlZFx1''@;'; put 'put ''NTQ1OFx1NTcwNlx1NzMzZlx1NmU5MFx1N2YxOFx1OGZkY1x1ODJkMVx1NjEzZlx1NjAyOFx1OTY2Mlx1NjZmMFx1N2VhNlx1OGQ4YVx1OGRjM1x1OTRhNVx1NWNiM1x1N2NhNFx1NjcwOFx1NjBhNlx1OTYwNVx1ODAxOFx1NGU5MVx1OTBlN1x1NTMwMFx1OTY2OFx1NTE0MVx1OGZkMFx1ODU3''@;'; put 'put ''NFx1OTE1ZFx1NjY1NVx1OTdmNVx1NWI1NVx1NTMxZFx1NzgzOFx1Njc0Mlx1NjgzZFx1NTRjOVx1NzA3ZVx1NWJiMFx1OGY3ZFx1NTE4ZFx1NTcyOFx1NTRiMVx1NjUxMlx1NjY4Mlx1OGQ1ZVx1OGQ0M1x1ODEwZlx1ODQ2Y1x1OTA2ZFx1N2NkZlx1NTFmZlx1ODVmYlx1NjdhM1x1NjVlOVx1''@;'; put 'put ''NmZhMVx1ODZhNFx1OGU4MVx1NTY2YVx1OTAyMFx1NzY4Mlx1NzA3Nlx1NzFlNVx1OGQyM1x1NjJlOVx1NTIxOVx1NmNmZFx1OGQzY1x1NjAwZVx1NTg5ZVx1NjE4ZVx1NjZmZVx1OGQ2MFx1NjI0ZVx1NTViM1x1NmUyM1x1NjcyZFx1OGY2N1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIx''@;'; put 'put ''Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjEyXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMTJdW0VdXT01NDI3MitFLExbNTQyNzIrRV09QlsyMTJdW0VdKTtmb3IoQlsyMTNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk0ZTFcdTk1ZjhcdTc3MjhcdTY4MDVcdTY5YThcdTU0OGJcdTRlNGRcdTcwYjhcdThiYzhcdTY0NThcdTY1OGJcdTViODVcdTdhODRcdTUwM2Fc''@;'; put 'put ''dTViZThcdTc3YmJcdTZiZTFcdThhNzlcdTdjOThcdTZjYmVcdTc2Y2ZcdTY1YTlcdThmOTdcdTVkMmRcdTVjNTVcdTg2MzhcdTY4MDhcdTUzNjBcdTYyMThcdTdhZDlcdTZlNWJcdTdlZmRcdTZhMWZcdTdhZTBcdTVmNzBcdTZmMzNcdTVmMjBcdTYzOGNcdTZkYThcdTY3NTZcdTRlMDhcdTVl''@;'; put 'put ''MTBcdThkMjZcdTRlZDdcdTgwYzBcdTc2MzRcdTk2OWNcdTYyZGJcdTY2MmRcdTYyN2VcdTZjYmNcdThkNzVcdTcxNjdcdTdmNjlcdTUxNDZcdTgwODdcdTUzZWNcdTkwNmVcdTYyOThcdTU0ZjJcdTg2ZjBcdThmOTlcdTgwMDVcdTk1MTdcdTg1MTdcdThmZDlcdTZkNTlcdTczY2RcdTY1OWZc''@;'; put 'put ''dTc3MWZcdTc1MDRcdTc4MjdcdTgxZmJcdThkMWVcdTk0ODhcdTRmYTZcdTY3OTVcdTc1YjlcdThiY2FcdTk3MDdcdTYzMmZcdTk1NDdcdTk2MzVcdTg0YjhcdTYzMjNcdTc3NDFcdTVmODFcdTcyZjBcdTRlODlcdTYwMTRcdTY1NzRcdTYyZWZcdTZiNjNcdTY1M2ZcdWZmZmQiLnNwbGl0KCIi''@;'; put 'put ''KSxFPTA7RSE9QlsyMTNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxM11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjEzXVtFXV09NTQ1MjgrRSxMWzU0NTI4K0VdPUJbMjEzXVtFXSk7Zm9yKEJbMjE0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZTI3XHU3NWM3XHU5MGQxXHU4YmMxXHU4MjlkXHU2NzlkXHU2NTJmXHU1NDMxXHU4NzE4XHU3N2U1XHU4MGEyXHU4MTAy''@;'; put 'put ''XHU2YzQxXHU0ZTRiXHU3ZWM3XHU4MDRjXHU3NmY0XHU2OTBkXHU2Yjk2XHU2MjY3XHU1MDNjXHU0Zjg0XHU1NzQwXHU2MzA3XHU2YjYyXHU4ZGJlXHU1M2VhXHU2NWU4XHU3ZWI4XHU1ZmQ3XHU2MzFhXHU2M2I3XHU4MWYzXHU4MWY0XHU3ZjZlXHU1ZTFjXHU1Y2Q5XHU1MjM2XHU2NjdhXHU3''@;'; put 'put ''OWU5XHU3YTFhXHU4ZDI4XHU3MDk5XHU3NWQ0XHU2ZWRlXHU2Y2JiXHU3YTkyXHU0ZTJkXHU3NmM1XHU1ZmUwXHU5NDlmXHU4ODc3XHU3ZWM4XHU3OWNkXHU4MGJmXHU5MWNkXHU0ZWYyXHU0ZjE3XHU4MjFmXHU1NDY4XHU1ZGRlXHU2ZDMyXHU4YmNjXHU3Y2E1XHU4Zjc0XHU4MDk4XHU1ZTFh''@;'; put 'put ''XHU1NDkyXHU3NmIxXHU1Yjk5XHU2NjNjXHU5YWE0XHU3M2UwXHU2ODJhXHU4NmRiXHU2NzMxXHU3MzJhXHU4YmY4XHU4YmRiXHU5MDEwXHU3YWY5XHU3MGRiXHU3MTZlXHU2MmM0XHU3N2E5XHU1NjMxXHU0ZTNiXHU4NDU3XHU2N2YxXHU1MmE5XHU4NmMwXHU4ZDJlXHU5NGY4XHU3YjUxXHVm''@;'; put 'put ''ZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjE0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMTRdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIxNF1bRV1dPTU0Nzg0K0UsTFs1NDc4NCtFXT1CWzIxNF1bRV0pO2ZvcihCWzIxNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGY0Zlx1NmNlOFx1Nzk1ZFx1OWE3Ylx1NjI5M1x1NzIyYVx1NjJmZFx1NGUxM1x1NzgxNlx1OGY2''@;'; put 'put ''Y1x1NjRiMFx1OGQ1YVx1N2JjNlx1Njg2OVx1NWU4NFx1ODhjNVx1NTk4Nlx1NjQ5ZVx1NThlZVx1NzJiNlx1NjkwZVx1OTUyNVx1OGZmZFx1OGQ1OFx1NTc2MFx1N2YwMFx1OGMwNlx1NTFjNlx1NjM0OVx1NjJkOVx1NTM1M1x1Njg0Y1x1NzQyMlx1ODMwMVx1OTE0Y1x1NTU0NFx1Nzc0MFx1''@;'; put 'put ''NzA3Y1x1NmQ0YVx1NTE3OVx1NTRhOFx1OGQ0NFx1NTlmZlx1NmVjYlx1NmRjNFx1NWI1Y1x1N2QyYlx1NGVkNFx1N2M3ZFx1NmVkM1x1NWI1MFx1ODFlYVx1NmUwZFx1NWI1N1x1OWIwM1x1NjhkNVx1OGUyYVx1NWI5N1x1N2VmY1x1NjAzYlx1N2ViNVx1OTBiOVx1OGQ3MFx1NTk0Zlx1NjNj''@;'; put 'put ''ZFx1NzlkZlx1OGRiM1x1NTM1Mlx1NjVjZlx1Nzk1Nlx1OGJjNVx1OTYzYlx1N2VjNFx1OTRiYlx1N2U4Mlx1NTYzNFx1OTE4OVx1NjcwMFx1N2Y2YVx1NWMwYVx1OTA3NVx1NjYyOFx1NWRlNlx1NGY1MFx1NjdkZVx1NTA1YVx1NGY1Y1x1NTc1MFx1NWVhN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxNV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjE1XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMTVdW0VdXT01NTA0MCtFLExbNTUwNDArRV09QlsyMTVdW0VdKTtmb3IoQlsyMTZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRlOGRcdTRlMGNcdTUxNDBcdTRlMTBcdTVlZmZcdTUzNDVcdTRlMTVcdTRl''@;'; put 'put ''OThcdTRlMWVcdTliMzJcdTViNmNcdTU2NjlcdTRlMjhcdTc5YmFcdTRlM2ZcdTUzMTVcdTRlNDdcdTU5MmRcdTcyM2JcdTUzNmVcdTZjMTBcdTU2ZGZcdTgwZTRcdTk5OTdcdTZiZDNcdTc3N2VcdTlmMTdcdTRlMzZcdTRlOWZcdTlmMTBcdTRlNWNcdTRlNjlcdTRlOTNcdTgyODhcdTViNWJc''@;'; put 'put ''dTU1NmNcdTU2MGZcdTRlYzRcdTUzOGRcdTUzOWRcdTUzYTNcdTUzYTVcdTUzYWVcdTk3NjVcdThkNWRcdTUzMWFcdTUzZjVcdTUzMjZcdTUzMmVcdTUzM2VcdThkNWNcdTUzNjZcdTUzNjNcdTUyMDJcdTUyMDhcdTUyMGVcdTUyMmRcdTUyMzNcdTUyM2ZcdTUyNDBcdTUyNGNcdTUyNWVcdTUy''@;'; put 'put ''NjFcdTUyNWNcdTg0YWZcdTUyN2RcdTUyODJcdTUyODFcdTUyOTBcdTUyOTNcdTUxODJcdTdmNTRcdTRlYmJcdTRlYzNcdTRlYzlcdTRlYzJcdTRlZThcdTRlZTFcdTRlZWJcdTRlZGVcdTRmMWJcdTRlZjNcdTRmMjJcdTRmNjRcdTRlZjVcdTRmMjVcdTRmMjdcdTRmMDlcdTRmMmJcdTRmNWVc''@;'; put 'put ''dTRmNjdcdTY1MzhcdTRmNWFcdTRmNWRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxNl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjE2XVtFXV09NTUyOTYrRSxMWzU1Mjk2K0VdPUJbMjE2XVtFXSk7Zm9yKEJbMjE3XT0iXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZjVmXHU0ZjU3XHU0ZjMyXHU0ZjNkXHU0Zjc2XHU0''@;'; put 'put ''Zjc0XHU0ZjkxXHU0Zjg5XHU0ZjgzXHU0ZjhmXHU0ZjdlXHU0ZjdiXHU0ZmFhXHU0ZjdjXHU0ZmFjXHU0Zjk0XHU0ZmU2XHU0ZmU4XHU0ZmVhXHU0ZmM1XHU0ZmRhXHU0ZmUzXHU0ZmRjXHU0ZmQxXHU0ZmRmXHU0ZmY4XHU1MDI5XHU1MDRjXHU0ZmYzXHU1MDJjXHU1MDBmXHU1MDJlXHU1MDJk''@;'; put 'put ''XHU0ZmZlXHU1MDFjXHU1MDBjXHU1MDI1XHU1MDI4XHU1MDdlXHU1MDQzXHU1MDU1XHU1MDQ4XHU1MDRlXHU1MDZjXHU1MDdiXHU1MGE1XHU1MGE3XHU1MGE5XHU1MGJhXHU1MGQ2XHU1MTA2XHU1MGVkXHU1MGVjXHU1MGU2XHU1MGVlXHU1MTA3XHU1MTBiXHU0ZWRkXHU2YzNkXHU0ZjU4XHU0''@;'; put 'put ''ZjY1XHU0ZmNlXHU5ZmEwXHU2YzQ2XHU3Yzc0XHU1MTZlXHU1ZGZkXHU5ZWM5XHU5OTk4XHU1MTgxXHU1OTE0XHU1MmY5XHU1MzBkXHU4YTA3XHU1MzEwXHU1MWViXHU1OTE5XHU1MTU1XHU0ZWEwXHU1MTU2XHU0ZWIzXHU4ODZlXHU4OGE0XHU0ZWI1XHU4MTE0XHU4OGQyXHU3OTgwXHU1YjM0''@;'; put 'put ''XHU4ODAzXHU3ZmI4XHU1MWFiXHU1MWIxXHU1MWJkXHU1MWJjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjE3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMTddW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIxN11bRV1dPTU1NTUyK0UsTFs1NTU1MitFXT1CWzIxN11bRV0pO2ZvcihCWzIx''@;'; put 'put ''OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTFjN1x1NTE5Nlx1NTFhMlx1''@;'; put 'put ''NTFhNVx1OGJhMFx1OGJhNlx1OGJhN1x1OGJhYVx1OGJiNFx1OGJiNVx1OGJiN1x1OGJjMlx1OGJjM1x1OGJjYlx1OGJjZlx1OGJjZVx1OGJkMlx1OGJkM1x1OGJkNFx1OGJkNlx1OGJkOFx1OGJkOVx1OGJkY1x1OGJkZlx1OGJlMFx1OGJlNFx1OGJlOFx1OGJlOVx1OGJlZVx1OGJmMFx1OGJm''@;'; put 'put ''M1x1OGJmNlx1OGJmOVx1OGJmY1x1OGJmZlx1OGMwMFx1OGMwMlx1OGMwNFx1OGMwN1x1OGMwY1x1OGMwZlx1OGMxMVx1OGMxMlx1OGMxNFx1OGMxNVx1OGMxNlx1OGMxOVx1OGMxYlx1OGMxOFx1OGMxZFx1OGMxZlx1OGMyMFx1OGMyMVx1OGMyNVx1OGMyN1x1OGMyYVx1OGMyYlx1OGMyZVx1''@;'; put 'put ''OGMyZlx1OGMzMlx1OGMzM1x1OGMzNVx1OGMzNlx1NTM2OVx1NTM3YVx1OTYxZFx1OTYyMlx1OTYyMVx1OTYzMVx1OTYyYVx1OTYzZFx1OTYzY1x1OTY0Mlx1OTY0OVx1OTY1NFx1OTY1Zlx1OTY2N1x1OTY2Y1x1OTY3Mlx1OTY3NFx1OTY4OFx1OTY4ZFx1OTY5N1x1OTZiMFx1OTA5N1x1OTA5''@;'; put 'put ''Ylx1OTA5ZFx1OTA5OVx1OTBhY1x1OTBhMVx1OTBiNFx1OTBiM1x1OTBiNlx1OTBiYVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIxOF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjE4XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMThdW0VdXT01NTgwOCtFLExbNTU4MDgrRV09QlsyMThd''@;'; put 'put ''W0VdKTtmb3IoQlsyMTldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkwYjhc''@;'; put 'put ''dTkwYjBcdTkwY2ZcdTkwYzVcdTkwYmVcdTkwZDBcdTkwYzRcdTkwYzdcdTkwZDNcdTkwZTZcdTkwZTJcdTkwZGNcdTkwZDdcdTkwZGJcdTkwZWJcdTkwZWZcdTkwZmVcdTkxMDRcdTkxMjJcdTkxMWVcdTkxMjNcdTkxMzFcdTkxMmZcdTkxMzlcdTkxNDNcdTkxNDZcdTUyMGRcdTU5NDJcdTUy''@;'; put 'put ''YTJcdTUyYWNcdTUyYWRcdTUyYmVcdTU0ZmZcdTUyZDBcdTUyZDZcdTUyZjBcdTUzZGZcdTcxZWVcdTc3Y2RcdTVlZjRcdTUxZjVcdTUxZmNcdTliMmZcdTUzYjZcdTVmMDFcdTc1NWFcdTVkZWZcdTU3NGNcdTU3YTlcdTU3YTFcdTU4N2VcdTU4YmNcdTU4YzVcdTU4ZDFcdTU3MjlcdTU3MmNc''@;'; put 'put ''dTU3MmFcdTU3MzNcdTU3MzlcdTU3MmVcdTU3MmZcdTU3NWNcdTU3M2JcdTU3NDJcdTU3NjlcdTU3ODVcdTU3NmJcdTU3ODZcdTU3N2NcdTU3N2JcdTU3NjhcdTU3NmRcdTU3NzZcdTU3NzNcdTU3YWRcdTU3YTRcdTU3OGNcdTU3YjJcdTU3Y2ZcdTU3YTdcdTU3YjRcdTU3OTNcdTU3YTBcdTU3''@;'; put 'put ''ZDVcdTU3ZDhcdTU3ZGFcdTU3ZDlcdTU3ZDJcdTU3YjhcdTU3ZjRcdTU3ZWZcdTU3ZjhcdTU3ZTRcdTU3ZGRcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMTldLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIxOV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjE5XVtFXV09NTYwNjQrRSxMWzU2''@;'; put 'put ''MDY0K0VdPUJbMjE5XVtFXSk7Zm9yKEJbMjIwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHU1ODBiXHU1ODBkXHU1N2ZkXHU1N2VkXHU1ODAwXHU1ODFlXHU1ODE5XHU1ODQ0XHU1ODIwXHU1ODY1XHU1ODZjXHU1ODgxXHU1ODg5XHU1ODlhXHU1ODgwXHU5OWE4XHU5ZjE5XHU2MWZmXHU4Mjc5XHU4MjdkXHU4MjdmXHU4MjhmXHU4MjhhXHU4MmE4XHU4Mjg0XHU4MjhlXHU4''@;'; put 'put ''MjkxXHU4Mjk3XHU4Mjk5XHU4MmFiXHU4MmI4XHU4MmJlXHU4MmIwXHU4MmM4XHU4MmNhXHU4MmUzXHU4Mjk4XHU4MmI3XHU4MmFlXHU4MmNiXHU4MmNjXHU4MmMxXHU4MmE5XHU4MmI0XHU4MmExXHU4MmFhXHU4MjlmXHU4MmM0XHU4MmNlXHU4MmE0XHU4MmUxXHU4MzA5XHU4MmY3XHU4MmU0''@;'; put 'put ''XHU4MzBmXHU4MzA3XHU4MmRjXHU4MmY0XHU4MmQyXHU4MmQ4XHU4MzBjXHU4MmZiXHU4MmQzXHU4MzExXHU4MzFhXHU4MzA2XHU4MzE0XHU4MzE1XHU4MmUwXHU4MmQ1XHU4MzFjXHU4MzUxXHU4MzViXHU4MzVjXHU4MzA4XHU4MzkyXHU4MzNjXHU4MzM0XHU4MzMxXHU4MzliXHU4MzVlXHU4''@;'; put 'put ''MzJmXHU4MzRmXHU4MzQ3XHU4MzQzXHU4MzVmXHU4MzQwXHU4MzE3XHU4MzYwXHU4MzJkXHU4MzNhXHU4MzMzXHU4MzY2XHU4MzY1XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjIwXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjBdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIyMF1bRV1d''@;'; put 'put ''PTU2MzIwK0UsTFs1NjMyMCtFXT1CWzIyMF1bRV0pO2ZvcihCWzIyMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODM2OFx1ODMxYlx1ODM2OVx1ODM2Y1x1ODM2YVx1ODM2ZFx1ODM2ZVx1ODNiMFx1ODM3OFx1ODNiM1x1ODNiNFx1ODNhMFx1ODNhYVx1ODM5M1x1ODM5Y1x1ODM4NVx1ODM3Y1x1ODNiNlx1ODNhOVx1ODM3ZFx1ODNiOFx1ODM3Ylx1ODM5OFx1ODM5ZVx1''@;'; put 'put ''ODNhOFx1ODNiYVx1ODNiY1x1ODNjMVx1ODQwMVx1ODNlNVx1ODNkOFx1NTgwN1x1ODQxOFx1ODQwYlx1ODNkZFx1ODNmZFx1ODNkNlx1ODQxY1x1ODQzOFx1ODQxMVx1ODQwNlx1ODNkNFx1ODNkZlx1ODQwZlx1ODQwM1x1ODNmOFx1ODNmOVx1ODNlYVx1ODNjNVx1ODNjMFx1ODQyNlx1ODNm''@;'; put 'put ''MFx1ODNlMVx1ODQ1Y1x1ODQ1MVx1ODQ1YVx1ODQ1OVx1ODQ3M1x1ODQ4N1x1ODQ4OFx1ODQ3YVx1ODQ4OVx1ODQ3OFx1ODQzY1x1ODQ0Nlx1ODQ2OVx1ODQ3Nlx1ODQ4Y1x1ODQ4ZVx1ODQzMVx1ODQ2ZFx1ODRjMVx1ODRjZFx1ODRkMFx1ODRlNlx1ODRiZFx1ODRkM1x1ODRjYVx1ODRiZlx1''@;'; put 'put ''ODRiYVx1ODRlMFx1ODRhMVx1ODRiOVx1ODRiNFx1ODQ5N1x1ODRlNVx1ODRlM1x1ODUwY1x1NzUwZFx1ODUzOFx1ODRmMFx1ODUzOVx1ODUxZlx1ODUzYVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyMV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjIxXVtFXS5jaGFyQ29kZUF0KDApJiYo''@;'; put 'put ''bWVbQlsyMjFdW0VdXT01NjU3NitFLExbNTY1NzYrRV09QlsyMjFdW0VdKTtmb3IoQlsyMjJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg1NTZcdTg1M2JcdTg0ZmZcdTg0ZmNcdTg1NTlcdTg1NDhcdTg1NjhcdTg1NjRcdTg1NWVcdTg1N2FcdTc3YTJcdTg1NDNcdTg1NzJcdTg1N2JcdTg1YTRcdTg1YThcdTg1ODdcdTg1OGZcdTg1NzlcdTg1YWVcdTg1OWNcdTg1ODVc''@;'; put 'put ''dTg1YjlcdTg1YjdcdTg1YjBcdTg1ZDNcdTg1YzFcdTg1ZGNcdTg1ZmZcdTg2MjdcdTg2MDVcdTg2MjlcdTg2MTZcdTg2M2NcdTVlZmVcdTVmMDhcdTU5M2NcdTU5NDFcdTgwMzdcdTU5NTVcdTU5NWFcdTU5NThcdTUzMGZcdTVjMjJcdTVjMjVcdTVjMmNcdTVjMzRcdTYyNGNcdTYyNmFcdTYy''@;'; put 'put ''OWZcdTYyYmJcdTYyY2FcdTYyZGFcdTYyZDdcdTYyZWVcdTYzMjJcdTYyZjZcdTYzMzlcdTYzNGJcdTYzNDNcdTYzYWRcdTYzZjZcdTYzNzFcdTYzN2FcdTYzOGVcdTYzYjRcdTYzNmRcdTYzYWNcdTYzOGFcdTYzNjlcdTYzYWVcdTYzYmNcdTYzZjJcdTYzZjhcdTYzZTBcdTYzZmZcdTYzYzRc''@;'; put 'put ''dTYzZGVcdTYzY2VcdTY0NTJcdTYzYzZcdTYzYmVcdTY0NDVcdTY0NDFcdTY0MGJcdTY0MWJcdTY0MjBcdTY0MGNcdTY0MjZcdTY0MjFcdTY0NWVcdTY0ODRcdTY0NmRcdTY0OTZcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjJdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyMl1bRV0uY2hh''@;'; put 'put ''ckNvZGVBdCgwKSYmKG1lW0JbMjIyXVtFXV09NTY4MzIrRSxMWzU2ODMyK0VdPUJbMjIyXVtFXSk7Zm9yKEJbMjIzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NDdhXHU2NGI3XHU2NGI4XHU2NDk5XHU2NGJhXHU2NGMwXHU2NGQwXHU2NGQ3XHU2NGU0XHU2NGUyXHU2NTA5XHU2NTI1XHU2NTJlXHU1ZjBiXHU1ZmQyXHU3NTE5XHU1ZjExXHU1MzVmXHU1M2YxXHU1M2Zk''@;'; put 'put ''XHU1M2U5XHU1M2U4XHU1M2ZiXHU1NDEyXHU1NDE2XHU1NDA2XHU1NDRiXHU1NDUyXHU1NDUzXHU1NDU0XHU1NDU2XHU1NDQzXHU1NDIxXHU1NDU3XHU1NDU5XHU1NDIzXHU1NDMyXHU1NDgyXHU1NDk0XHU1NDc3XHU1NDcxXHU1NDY0XHU1NDlhXHU1NDliXHU1NDg0XHU1NDc2XHU1NDY2XHU1''@;'; put 'put ''NDlkXHU1NGQwXHU1NGFkXHU1NGMyXHU1NGI0XHU1NGQyXHU1NGE3XHU1NGE2XHU1NGQzXHU1NGQ0XHU1NDcyXHU1NGEzXHU1NGQ1XHU1NGJiXHU1NGJmXHU1NGNjXHU1NGQ5XHU1NGRhXHU1NGRjXHU1NGE5XHU1NGFhXHU1NGE0XHU1NGRkXHU1NGNmXHU1NGRlXHU1NTFiXHU1NGU3XHU1NTIw''@;'; put 'put ''XHU1NGZkXHU1NTE0XHU1NGYzXHU1NTIyXHU1NTIzXHU1NTBmXHU1NTExXHU1NTI3XHU1NTJhXHU1NTY3XHU1NThmXHU1NWI1XHU1NTQ5XHU1NTZkXHU1NTQxXHU1NTU1XHU1NTNmXHU1NTUwXHU1NTNjXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjIzXS5sZW5ndGg7KytFKTY1NTMzIT09''@;'; put 'put ''QlsyMjNdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIyM11bRV1dPTU3MDg4K0UsTFs1NzA4OCtFXT1CWzIyM11bRV0pO2ZvcihCWzIyNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTUzN1x1NTU1Nlx1NTU3NVx1NTU3Nlx1NTU3N1x1NTUzM1x1NTUzMFx1NTU1Y1x1NTU4Ylx1NTVkMlx1NTU4M1x1NTViMVx1NTViOVx1NTU4OFx1NTU4MVx1NTU5Zlx1NTU3ZVx1NTVk''@;'; put 'put ''Nlx1NTU5MVx1NTU3Ylx1NTVkZlx1NTViZFx1NTViZVx1NTU5NFx1NTU5OVx1NTVlYVx1NTVmN1x1NTVjOVx1NTYxZlx1NTVkMVx1NTVlYlx1NTVlY1x1NTVkNFx1NTVlNlx1NTVkZFx1NTVjNFx1NTVlZlx1NTVlNVx1NTVmMlx1NTVmM1x1NTVjY1x1NTVjZFx1NTVlOFx1NTVmNVx1NTVlNFx1''@;'; put 'put ''OGY5NFx1NTYxZVx1NTYwOFx1NTYwY1x1NTYwMVx1NTYyNFx1NTYyM1x1NTVmZVx1NTYwMFx1NTYyN1x1NTYyZFx1NTY1OFx1NTYzOVx1NTY1N1x1NTYyY1x1NTY0ZFx1NTY2Mlx1NTY1OVx1NTY1Y1x1NTY0Y1x1NTY1NFx1NTY4Nlx1NTY2NFx1NTY3MVx1NTY2Ylx1NTY3Ylx1NTY3Y1x1NTY4''@;'; put 'put ''NVx1NTY5M1x1NTZhZlx1NTZkNFx1NTZkN1x1NTZkZFx1NTZlMVx1NTZmNVx1NTZlYlx1NTZmOVx1NTZmZlx1NTcwNFx1NTcwYVx1NTcwOVx1NTcxY1x1NWUwZlx1NWUxOVx1NWUxNFx1NWUxMVx1NWUzMVx1NWUzYlx1NWUzY1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyNF0ubGVuZ3Ro''@;'; put 'put ''OysrRSk2NTUzMyE9PUJbMjI0XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMjRdW0VdXT01NzM0NCtFLExbNTczNDQrRV09QlsyMjRdW0VdKTtmb3IoQlsyMjVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVlMzdcdTVlNDRcdTVlNTRcdTVlNWJcdTVlNWVcdTVlNjFcdTVjOGNcdTVjN2FcdTVjOGRcdTVjOTBcdTVjOTZcdTVjODhcdTVjOThcdTVjOTlcdTVjOTFcdTVj''@;'; put 'put ''OWFcdTVjOWNcdTVjYjVcdTVjYTJcdTVjYmRcdTVjYWNcdTVjYWJcdTVjYjFcdTVjYTNcdTVjYzFcdTVjYjdcdTVjYzRcdTVjZDJcdTVjZTRcdTVjY2JcdTVjZTVcdTVkMDJcdTVkMDNcdTVkMjdcdTVkMjZcdTVkMmVcdTVkMjRcdTVkMWVcdTVkMDZcdTVkMWJcdTVkNThcdTVkM2VcdTVkMzRc''@;'; put 'put ''dTVkM2RcdTVkNmNcdTVkNWJcdTVkNmZcdTVkNWRcdTVkNmJcdTVkNGJcdTVkNGFcdTVkNjlcdTVkNzRcdTVkODJcdTVkOTlcdTVkOWRcdThjNzNcdTVkYjdcdTVkYzVcdTVmNzNcdTVmNzdcdTVmODJcdTVmODdcdTVmODlcdTVmOGNcdTVmOTVcdTVmOTlcdTVmOWNcdTVmYThcdTVmYWRcdTVm''@;'; put 'put ''YjVcdTVmYmNcdTg4NjJcdTVmNjFcdTcyYWRcdTcyYjBcdTcyYjRcdTcyYjdcdTcyYjhcdTcyYzNcdTcyYzFcdTcyY2VcdTcyY2RcdTcyZDJcdTcyZThcdTcyZWZcdTcyZTlcdTcyZjJcdTcyZjRcdTcyZjdcdTczMDFcdTcyZjNcdTczMDNcdTcyZmFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9''@;'; put 'put ''QlsyMjVdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyNV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjI1XVtFXV09NTc2MDArRSxMWzU3NjAwK0VdPUJbMjI1XVtFXSk7Zm9yKEJbMjI2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MmZiXHU3MzE3XHU3MzEzXHU3MzIxXHU3MzBhXHU3MzFlXHU3MzFkXHU3MzE1XHU3MzIyXHU3MzM5XHU3MzI1XHU3MzJjXHU3MzM4XHU3''@;'; put 'put ''MzMxXHU3MzUwXHU3MzRkXHU3MzU3XHU3MzYwXHU3MzZjXHU3MzZmXHU3MzdlXHU4MjFiXHU1OTI1XHU5OGU3XHU1OTI0XHU1OTAyXHU5OTYzXHU5OTY3XHU5OTY4XHU5OTY5XHU5OTZhXHU5OTZiXHU5OTZjXHU5OTc0XHU5OTc3XHU5OTdkXHU5OTgwXHU5OTg0XHU5OTg3XHU5OThhXHU5OThk''@;'; put 'put ''XHU5OTkwXHU5OTkxXHU5OTkzXHU5OTk0XHU5OTk1XHU1ZTgwXHU1ZTkxXHU1ZThiXHU1ZTk2XHU1ZWE1XHU1ZWEwXHU1ZWI5XHU1ZWI1XHU1ZWJlXHU1ZWIzXHU4ZDUzXHU1ZWQyXHU1ZWQxXHU1ZWRiXHU1ZWU4XHU1ZWVhXHU4MWJhXHU1ZmM0XHU1ZmM5XHU1ZmQ2XHU1ZmNmXHU2MDAzXHU1''@;'; put 'put ''ZmVlXHU2MDA0XHU1ZmUxXHU1ZmU0XHU1ZmZlXHU2MDA1XHU2MDA2XHU1ZmVhXHU1ZmVkXHU1ZmY4XHU2MDE5XHU2MDM1XHU2MDI2XHU2MDFiXHU2MDBmXHU2MDBkXHU2MDI5XHU2MDJiXHU2MDBhXHU2MDNmXHU2MDIxXHU2MDc4XHU2MDc5XHU2MDdiXHU2MDdhXHU2MDQyXHVmZmZkIi5zcGxp''@;'; put 'put ''dCgiIiksRT0wO0UhPUJbMjI2XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjZdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIyNl1bRV1dPTU3ODU2K0UsTFs1Nzg1NitFXT1CWzIyNl1bRV0pO2ZvcihCWzIyN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjA2YVx1NjA3ZFx1NjA5Nlx1NjA5YVx1NjBhZFx1NjA5ZFx1NjA4M1x1NjA5Mlx1NjA4Y1x1NjA5Ylx1NjBlY1x1''@;'; put 'put ''NjBiYlx1NjBiMVx1NjBkZFx1NjBkOFx1NjBjNlx1NjBkYVx1NjBiNFx1NjEyMFx1NjEyNlx1NjExNVx1NjEyM1x1NjBmNFx1NjEwMFx1NjEwZVx1NjEyYlx1NjE0YVx1NjE3NVx1NjFhY1x1NjE5NFx1NjFhN1x1NjFiN1x1NjFkNFx1NjFmNVx1NWZkZFx1OTZiM1x1OTVlOVx1OTVlYlx1OTVm''@;'; put 'put ''MVx1OTVmM1x1OTVmNVx1OTVmNlx1OTVmY1x1OTVmZVx1OTYwM1x1OTYwNFx1OTYwNlx1OTYwOFx1OTYwYVx1OTYwYlx1OTYwY1x1OTYwZFx1OTYwZlx1OTYxMlx1OTYxNVx1OTYxNlx1OTYxN1x1OTYxOVx1OTYxYVx1NGUyY1x1NzIzZlx1NjIxNVx1NmMzNVx1NmM1NFx1NmM1Y1x1NmM0YVx1''@;'; put 'put ''NmNhM1x1NmM4NVx1NmM5MFx1NmM5NFx1NmM4Y1x1NmM2OFx1NmM2OVx1NmM3NFx1NmM3Nlx1NmM4Nlx1NmNhOVx1NmNkMFx1NmNkNFx1NmNhZFx1NmNmN1x1NmNmOFx1NmNmMVx1NmNkN1x1NmNiMlx1NmNlMFx1NmNkNlx1NmNmYVx1NmNlYlx1NmNlZVx1NmNiMVx1NmNkM1x1NmNlZlx1NmNm''@;'; put 'put ''ZVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIyN10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjI3XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMjddW0VdXT01ODExMitFLExbNTgxMTIrRV09QlsyMjddW0VdKTtmb3IoQlsyMjhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZkMzlcdTZkMjdcdTZkMGNcdTZkNDNcdTZkNDhcdTZkMDdcdTZkMDRcdTZkMTlcdTZkMGVc''@;'; put 'put ''dTZkMmJcdTZkNGRcdTZkMmVcdTZkMzVcdTZkMWFcdTZkNGZcdTZkNTJcdTZkNTRcdTZkMzNcdTZkOTFcdTZkNmZcdTZkOWVcdTZkYTBcdTZkNWVcdTZkOTNcdTZkOTRcdTZkNWNcdTZkNjBcdTZkN2NcdTZkNjNcdTZlMWFcdTZkYzdcdTZkYzVcdTZkZGVcdTZlMGVcdTZkYmZcdTZkZTBcdTZl''@;'; put 'put ''MTFcdTZkZTZcdTZkZGRcdTZkZDlcdTZlMTZcdTZkYWJcdTZlMGNcdTZkYWVcdTZlMmJcdTZlNmVcdTZlNGVcdTZlNmJcdTZlYjJcdTZlNWZcdTZlODZcdTZlNTNcdTZlNTRcdTZlMzJcdTZlMjVcdTZlNDRcdTZlZGZcdTZlYjFcdTZlOThcdTZlZTBcdTZmMmRcdTZlZTJcdTZlYTVcdTZlYTdc''@;'; put 'put ''dTZlYmRcdTZlYmJcdTZlYjdcdTZlZDdcdTZlYjRcdTZlY2ZcdTZlOGZcdTZlYzJcdTZlOWZcdTZmNjJcdTZmNDZcdTZmNDdcdTZmMjRcdTZmMTVcdTZlZjlcdTZmMmZcdTZmMzZcdTZmNGJcdTZmNzRcdTZmMmFcdTZmMDlcdTZmMjlcdTZmODlcdTZmOGRcdTZmOGNcdTZmNzhcdTZmNzJcdTZm''@;'; put 'put ''N2NcdTZmN2FcdTZmZDFcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMjhdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIyOF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjI4XVtFXV09NTgzNjgrRSxMWzU4MzY4K0VdPUJbMjI4XVtFXSk7Zm9yKEJbMjI5XT0iXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZmM5XHU2ZmE3XHU2ZmI5XHU2ZmI2XHU2ZmMyXHU2ZmUxXHU2ZmVl''@;'; put 'put ''XHU2ZmRlXHU2ZmUwXHU2ZmVmXHU3MDFhXHU3MDIzXHU3MDFiXHU3MDM5XHU3MDM1XHU3MDRmXHU3MDVlXHU1YjgwXHU1Yjg0XHU1Yjk1XHU1YjkzXHU1YmE1XHU1YmI4XHU3NTJmXHU5YTllXHU2NDM0XHU1YmU0XHU1YmVlXHU4OTMwXHU1YmYwXHU4ZTQ3XHU4YjA3XHU4ZmI2XHU4ZmQzXHU4''@;'; put 'put ''ZmQ1XHU4ZmU1XHU4ZmVlXHU4ZmU0XHU4ZmU5XHU4ZmU2XHU4ZmYzXHU4ZmU4XHU5MDA1XHU5MDA0XHU5MDBiXHU5MDI2XHU5MDExXHU5MDBkXHU5MDE2XHU5MDIxXHU5MDM1XHU5MDM2XHU5MDJkXHU5MDJmXHU5MDQ0XHU5MDUxXHU5MDUyXHU5MDUwXHU5MDY4XHU5MDU4XHU5MDYyXHU5MDVi''@;'; put 'put ''XHU2NmI5XHU5MDc0XHU5MDdkXHU5MDgyXHU5MDg4XHU5MDgzXHU5MDhiXHU1ZjUwXHU1ZjU3XHU1ZjU2XHU1ZjU4XHU1YzNiXHU1NGFiXHU1YzUwXHU1YzU5XHU1YjcxXHU1YzYzXHU1YzY2XHU3ZmJjXHU1ZjJhXHU1ZjI5XHU1ZjJkXHU4Mjc0XHU1ZjNjXHU5YjNiXHU1YzZlXHU1OTgxXHU1''@;'; put 'put ''OTgzXHU1OThkXHU1OWE5XHU1OWFhXHU1OWEzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjI5XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMjldW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIyOV1bRV1dPTU4NjI0K0UsTFs1ODYyNCtFXT1CWzIyOV1bRV0pO2ZvcihCWzIzMF09Ilx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTk5N1x1NTljYVx1NTlhYlx1NTk5ZVx1NTlh''@;'; put 'put ''NFx1NTlkMlx1NTliMlx1NTlhZlx1NTlkN1x1NTliZVx1NWEwNVx1NWEwNlx1NTlkZFx1NWEwOFx1NTllM1x1NTlkOFx1NTlmOVx1NWEwY1x1NWEwOVx1NWEzMlx1NWEzNFx1NWExMVx1NWEyM1x1NWExM1x1NWE0MFx1NWE2N1x1NWE0YVx1NWE1NVx1NWEzY1x1NWE2Mlx1NWE3NVx1ODBlY1x1''@;'; put 'put ''NWFhYVx1NWE5Ylx1NWE3N1x1NWE3YVx1NWFiZVx1NWFlYlx1NWFiMlx1NWFkMlx1NWFkNFx1NWFiOFx1NWFlMFx1NWFlM1x1NWFmMVx1NWFkNlx1NWFlNlx1NWFkOFx1NWFkY1x1NWIwOVx1NWIxN1x1NWIxNlx1NWIzMlx1NWIzN1x1NWI0MFx1NWMxNVx1NWMxY1x1NWI1YVx1NWI2NVx1NWI3''@;'; put 'put ''M1x1NWI1MVx1NWI1M1x1NWI2Mlx1OWE3NVx1OWE3N1x1OWE3OFx1OWE3YVx1OWE3Zlx1OWE3ZFx1OWE4MFx1OWE4MVx1OWE4NVx1OWE4OFx1OWE4YVx1OWE5MFx1OWE5Mlx1OWE5M1x1OWE5Nlx1OWE5OFx1OWE5Ylx1OWE5Y1x1OWE5ZFx1OWE5Zlx1OWFhMFx1OWFhMlx1OWFhM1x1OWFhNVx1''@;'; put 'put ''OWFhN1x1N2U5Zlx1N2VhMVx1N2VhM1x1N2VhNVx1N2VhOFx1N2VhOVx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzMF0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjMwXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMzBdW0VdXT01ODg4MCtFLExbNTg4ODArRV09QlsyMzBdW0VdKTtmb3Io''@;'; put 'put ''QlsyMzFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdlYWRcdTdlYjBcdTdl''@;'; put 'put ''YmVcdTdlYzBcdTdlYzFcdTdlYzJcdTdlYzlcdTdlY2JcdTdlY2NcdTdlZDBcdTdlZDRcdTdlZDdcdTdlZGJcdTdlZTBcdTdlZTFcdTdlZThcdTdlZWJcdTdlZWVcdTdlZWZcdTdlZjFcdTdlZjJcdTdmMGRcdTdlZjZcdTdlZmFcdTdlZmJcdTdlZmVcdTdmMDFcdTdmMDJcdTdmMDNcdTdmMDdc''@;'; put 'put ''dTdmMDhcdTdmMGJcdTdmMGNcdTdmMGZcdTdmMTFcdTdmMTJcdTdmMTdcdTdmMTlcdTdmMWNcdTdmMWJcdTdmMWZcdTdmMjFcdTdmMjJcdTdmMjNcdTdmMjRcdTdmMjVcdTdmMjZcdTdmMjdcdTdmMmFcdTdmMmJcdTdmMmNcdTdmMmRcdTdmMmZcdTdmMzBcdTdmMzFcdTdmMzJcdTdmMzNcdTdm''@;'; put 'put ''MzVcdTVlN2FcdTc1N2ZcdTVkZGJcdTc1M2VcdTkwOTVcdTczOGVcdTczOTFcdTczYWVcdTczYTJcdTczOWZcdTczY2ZcdTczYzJcdTczZDFcdTczYjdcdTczYjNcdTczYzBcdTczYzlcdTczYzhcdTczZTVcdTczZDlcdTk4N2NcdTc0MGFcdTczZTlcdTczZTdcdTczZGVcdTczYmFcdTczZjJc''@;'; put 'put ''dTc0MGZcdTc0MmFcdTc0NWJcdTc0MjZcdTc0MjVcdTc0MjhcdTc0MzBcdTc0MmVcdTc0MmNcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzFdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzMV1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjMxXVtFXV09NTkxMzYrRSxMWzU5MTM2K0VdPUJb''@;'; put 'put ''MjMxXVtFXSk7Zm9yKEJbMjMyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3''@;'; put 'put ''NDFiXHU3NDFhXHU3NDQxXHU3NDVjXHU3NDU3XHU3NDU1XHU3NDU5XHU3NDc3XHU3NDZkXHU3NDdlXHU3NDljXHU3NDhlXHU3NDgwXHU3NDgxXHU3NDg3XHU3NDhiXHU3NDllXHU3NGE4XHU3NGE5XHU3NDkwXHU3NGE3XHU3NGQyXHU3NGJhXHU5N2VhXHU5N2ViXHU5N2VjXHU2NzRjXHU2NzUz''@;'; put 'put ''XHU2NzVlXHU2NzQ4XHU2NzY5XHU2N2E1XHU2Nzg3XHU2NzZhXHU2NzczXHU2Nzk4XHU2N2E3XHU2Nzc1XHU2N2E4XHU2NzllXHU2N2FkXHU2NzhiXHU2Nzc3XHU2NzdjXHU2N2YwXHU2ODA5XHU2N2Q4XHU2ODBhXHU2N2U5XHU2N2IwXHU2ODBjXHU2N2Q5XHU2N2I1XHU2N2RhXHU2N2IzXHU2''@;'; put 'put ''N2RkXHU2ODAwXHU2N2MzXHU2N2I4XHU2N2UyXHU2ODBlXHU2N2MxXHU2N2ZkXHU2ODMyXHU2ODMzXHU2ODYwXHU2ODYxXHU2ODRlXHU2ODYyXHU2ODQ0XHU2ODY0XHU2ODgzXHU2ODFkXHU2ODU1XHU2ODY2XHU2ODQxXHU2ODY3XHU2ODQwXHU2ODNlXHU2ODRhXHU2ODQ5XHU2ODI5XHU2OGI1''@;'; put 'put ''XHU2ODhmXHU2ODc0XHU2ODc3XHU2ODkzXHU2ODZiXHU2OGMyXHU2OTZlXHU2OGZjXHU2OTFmXHU2OTIwXHU2OGY5XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjMyXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzJdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIzMl1bRV1dPTU5MzkyK0Us''@;'; put 'put ''TFs1OTM5MitFXT1CWzIzMl1bRV0pO2ZvcihCWzIzM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1NjkyNFx1NjhmMFx1NjkwYlx1NjkwMVx1Njk1N1x1NjhlM1x1NjkxMFx1Njk3MVx1NjkzOVx1Njk2MFx1Njk0Mlx1Njk1ZFx1Njk4NFx1Njk2Ylx1Njk4MFx1Njk5OFx1Njk3OFx1NjkzNFx1NjljY1x1Njk4N1x1Njk4OFx1NjljZVx1Njk4OVx1Njk2Nlx1Njk2M1x1Njk3''@;'; put 'put ''OVx1Njk5Ylx1NjlhN1x1NjliYlx1NjlhYlx1NjlhZFx1NjlkNFx1NjliMVx1NjljMVx1NjljYVx1NjlkZlx1Njk5NVx1NjllMFx1Njk4ZFx1NjlmZlx1NmEyZlx1NjllZFx1NmExN1x1NmExOFx1NmE2NVx1NjlmMlx1NmE0NFx1NmEzZVx1NmFhMFx1NmE1MFx1NmE1Ylx1NmEzNVx1NmE4ZVx1''@;'; put 'put ''NmE3OVx1NmEzZFx1NmEyOFx1NmE1OFx1NmE3Y1x1NmE5MVx1NmE5MFx1NmFhOVx1NmE5N1x1NmFhYlx1NzMzN1x1NzM1Mlx1NmI4MVx1NmI4Mlx1NmI4N1x1NmI4NFx1NmI5Mlx1NmI5M1x1NmI4ZFx1NmI5YVx1NmI5Ylx1NmJhMVx1NmJhYVx1OGY2Ylx1OGY2ZFx1OGY3MVx1OGY3Mlx1OGY3''@;'; put 'put ''M1x1OGY3NVx1OGY3Nlx1OGY3OFx1OGY3N1x1OGY3OVx1OGY3YVx1OGY3Y1x1OGY3ZVx1OGY4MVx1OGY4Mlx1OGY4NFx1OGY4N1x1OGY4Ylx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzM10ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjMzXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMzNd''@;'; put 'put ''W0VdXT01OTY0OCtFLExbNTk2NDgrRV09QlsyMzNdW0VdKTtmb3IoQlsyMzRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThmOGRcdThmOGVcdThmOGZcdThmOThcdThmOWFcdThlY2VcdTYyMGJcdTYyMTdcdTYyMWJcdTYyMWZcdTYyMjJcdTYyMjFcdTYyMjVcdTYyMjRcdTYyMmNcdTgxZTdcdTc0ZWZcdTc0ZjRcdTc0ZmZcdTc1MGZcdTc1MTFcdTc1MTNcdTY1MzRcdTY1''@;'; put 'put ''ZWVcdTY1ZWZcdTY1ZjBcdTY2MGFcdTY2MTlcdTY3NzJcdTY2MDNcdTY2MTVcdTY2MDBcdTcwODVcdTY2ZjdcdTY2MWRcdTY2MzRcdTY2MzFcdTY2MzZcdTY2MzVcdTgwMDZcdTY2NWZcdTY2NTRcdTY2NDFcdTY2NGZcdTY2NTZcdTY2NjFcdTY2NTdcdTY2NzdcdTY2ODRcdTY2OGNcdTY2YTdc''@;'; put 'put ''dTY2OWRcdTY2YmVcdTY2ZGJcdTY2ZGNcdTY2ZTZcdTY2ZTlcdThkMzJcdThkMzNcdThkMzZcdThkM2JcdThkM2RcdThkNDBcdThkNDVcdThkNDZcdThkNDhcdThkNDlcdThkNDdcdThkNGRcdThkNTVcdThkNTlcdTg5YzdcdTg5Y2FcdTg5Y2JcdTg5Y2NcdTg5Y2VcdTg5Y2ZcdTg5ZDBcdTg5''@;'; put 'put ''ZDFcdTcyNmVcdTcyOWZcdTcyNWRcdTcyNjZcdTcyNmZcdTcyN2VcdTcyN2ZcdTcyODRcdTcyOGJcdTcyOGRcdTcyOGZcdTcyOTJcdTYzMDhcdTYzMzJcdTYzYjBcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzRdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzIzNF1bRV0uY2hhckNvZGVBdCgw''@;'; put 'put ''KSYmKG1lW0JbMjM0XVtFXV09NTk5MDQrRSxMWzU5OTA0K0VdPUJbMjM0XVtFXSk7Zm9yKEJbMjM1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NDNmXHU2NGQ4XHU4MDA0XHU2YmVhXHU2YmYzXHU2YmZkXHU2YmY1XHU2YmY5XHU2YzA1XHU2YzA3XHU2YzA2XHU2YzBkXHU2YzE1XHU2YzE4XHU2YzE5XHU2YzFhXHU2YzIxXHU2YzI5XHU2YzI0XHU2YzJhXHU2YzMyXHU2''@;'; put 'put ''NTM1XHU2NTU1XHU2NTZiXHU3MjRkXHU3MjUyXHU3MjU2XHU3MjMwXHU4NjYyXHU1MjE2XHU4MDlmXHU4MDljXHU4MDkzXHU4MGJjXHU2NzBhXHU4MGJkXHU4MGIxXHU4MGFiXHU4MGFkXHU4MGI0XHU4MGI3XHU4MGU3XHU4MGU4XHU4MGU5XHU4MGVhXHU4MGRiXHU4MGMyXHU4MGM0XHU4MGQ5''@;'; put 'put ''XHU4MGNkXHU4MGQ3XHU2NzEwXHU4MGRkXHU4MGViXHU4MGYxXHU4MGY0XHU4MGVkXHU4MTBkXHU4MTBlXHU4MGYyXHU4MGZjXHU2NzE1XHU4MTEyXHU4YzVhXHU4MTM2XHU4MTFlXHU4MTJjXHU4MTE4XHU4MTMyXHU4MTQ4XHU4MTRjXHU4MTUzXHU4MTc0XHU4MTU5XHU4MTVhXHU4MTcxXHU4''@;'; put 'put ''MTYwXHU4MTY5XHU4MTdjXHU4MTdkXHU4MTZkXHU4MTY3XHU1ODRkXHU1YWI1XHU4MTg4XHU4MTgyXHU4MTkxXHU2ZWQ1XHU4MWEzXHU4MWFhXHU4MWNjXHU2NzI2XHU4MWNhXHU4MWJiXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjM1XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzVdW0Vd''@;'; put 'put ''LmNoYXJDb2RlQXQoMCkmJihtZVtCWzIzNV1bRV1dPTYwMTYwK0UsTFs2MDE2MCtFXT1CWzIzNV1bRV0pO2ZvcihCWzIzNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODFjMVx1ODFhNlx1NmIyNFx1NmIzN1x1NmIzOVx1NmI0M1x1NmI0Nlx1NmI1OVx1OThkMVx1OThkMlx1OThkM1x1OThkNVx1OThkOVx1OThkYVx1NmJiM1x1NWY0MFx1NmJjMlx1ODlmM1x1NjU5MFx1''@;'; put 'put ''OWY1MVx1NjU5M1x1NjViY1x1NjVjNlx1NjVjNFx1NjVjM1x1NjVjY1x1NjVjZVx1NjVkMlx1NjVkNlx1NzA4MFx1NzA5Y1x1NzA5Nlx1NzA5ZFx1NzBiYlx1NzBjMFx1NzBiN1x1NzBhYlx1NzBiMVx1NzBlOFx1NzBjYVx1NzExMFx1NzExM1x1NzExNlx1NzEyZlx1NzEzMVx1NzE3M1x1NzE1''@;'; put 'put ''Y1x1NzE2OFx1NzE0NVx1NzE3Mlx1NzE0YVx1NzE3OFx1NzE3YVx1NzE5OFx1NzFiM1x1NzFiNVx1NzFhOFx1NzFhMFx1NzFlMFx1NzFkNFx1NzFlN1x1NzFmOVx1NzIxZFx1NzIyOFx1NzA2Y1x1NzExOFx1NzE2Nlx1NzFiOVx1NjIzZVx1NjIzZFx1NjI0M1x1NjI0OFx1NjI0OVx1NzkzYlx1''@;'; put 'put ''Nzk0MFx1Nzk0Nlx1Nzk0OVx1Nzk1Ylx1Nzk1Y1x1Nzk1M1x1Nzk1YVx1Nzk2Mlx1Nzk1N1x1Nzk2MFx1Nzk2Zlx1Nzk2N1x1Nzk3YVx1Nzk4NVx1Nzk4YVx1Nzk5YVx1NzlhN1x1NzliM1x1NWZkMVx1NWZkMFx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzIzNl0ubGVuZ3RoOysrRSk2NTUz''@;'; put 'put ''MyE9PUJbMjM2XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMzZdW0VdXT02MDQxNitFLExbNjA0MTYrRV09QlsyMzZdW0VdKTtmb3IoQlsyMzddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYwM2NcdTYwNWRcdTYwNWFcdTYwNjdcdTYwNDFcdTYwNTlcdTYwNjNcdTYwYWJcdTYxMDZcdTYxMGRcdTYxNWRcdTYxYTlcdTYxOWRcdTYxY2JcdTYxZDFcdTYyMDZcdTgwODBc''@;'; put 'put ''dTgwN2ZcdTZjOTNcdTZjZjZcdTZkZmNcdTc3ZjZcdTc3ZjhcdTc4MDBcdTc4MDlcdTc4MTdcdTc4MThcdTc4MTFcdTY1YWJcdTc4MmRcdTc4MWNcdTc4MWRcdTc4MzlcdTc4M2FcdTc4M2JcdTc4MWZcdTc4M2NcdTc4MjVcdTc4MmNcdTc4MjNcdTc4MjlcdTc4NGVcdTc4NmRcdTc4NTZcdTc4''@;'; put 'put ''NTdcdTc4MjZcdTc4NTBcdTc4NDdcdTc4NGNcdTc4NmFcdTc4OWJcdTc4OTNcdTc4OWFcdTc4ODdcdTc4OWNcdTc4YTFcdTc4YTNcdTc4YjJcdTc4YjlcdTc4YTVcdTc4ZDRcdTc4ZDlcdTc4YzlcdTc4ZWNcdTc4ZjJcdTc5MDVcdTc4ZjRcdTc5MTNcdTc5MjRcdTc5MWVcdTc5MzRcdTlmOWJc''@;'; put 'put ''dTllZjlcdTllZmJcdTllZmNcdTc2ZjFcdTc3MDRcdTc3MGRcdTc2ZjlcdTc3MDdcdTc3MDhcdTc3MWFcdTc3MjJcdTc3MTlcdTc3MmRcdTc3MjZcdTc3MzVcdTc3MzhcdTc3NTBcdTc3NTFcdTc3NDdcdTc3NDNcdTc3NWFcdTc3NjhcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyMzddLmxl''@;'; put 'put ''bmd0aDsrK0UpNjU1MzMhPT1CWzIzN11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjM3XVtFXV09NjA2NzIrRSxMWzYwNjcyK0VdPUJbMjM3XVtFXSk7Zm9yKEJbMjM4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NzYyXHU3NzY1XHU3NzdmXHU3NzhkXHU3NzdkXHU3NzgwXHU3NzhjXHU3NzkxXHU3NzlmXHU3N2EwXHU3N2IwXHU3N2I1XHU3N2JkXHU3NTNhXHU3NTQw''@;'; put 'put ''XHU3NTRlXHU3NTRiXHU3NTQ4XHU3NTViXHU3NTcyXHU3NTc5XHU3NTgzXHU3ZjU4XHU3ZjYxXHU3ZjVmXHU4YTQ4XHU3ZjY4XHU3Zjc0XHU3ZjcxXHU3Zjc5XHU3ZjgxXHU3ZjdlXHU3NmNkXHU3NmU1XHU4ODMyXHU5NDg1XHU5NDg2XHU5NDg3XHU5NDhiXHU5NDhhXHU5NDhjXHU5NDhkXHU5''@;'; put 'put ''NDhmXHU5NDkwXHU5NDk0XHU5NDk3XHU5NDk1XHU5NDlhXHU5NDliXHU5NDljXHU5NGEzXHU5NGE0XHU5NGFiXHU5NGFhXHU5NGFkXHU5NGFjXHU5NGFmXHU5NGIwXHU5NGIyXHU5NGI0XHU5NGI2XHU5NGI3XHU5NGI4XHU5NGI5XHU5NGJhXHU5NGJjXHU5NGJkXHU5NGJmXHU5NGM0XHU5NGM4''@;'; put 'put ''XHU5NGM5XHU5NGNhXHU5NGNiXHU5NGNjXHU5NGNkXHU5NGNlXHU5NGQwXHU5NGQxXHU5NGQyXHU5NGQ1XHU5NGQ2XHU5NGQ3XHU5NGQ5XHU5NGQ4XHU5NGRiXHU5NGRlXHU5NGRmXHU5NGUwXHU5NGUyXHU5NGU0XHU5NGU1XHU5NGU3XHU5NGU4XHU5NGVhXHVmZmZkIi5zcGxpdCgiIiksRT0w''@;'; put 'put ''O0UhPUJbMjM4XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyMzhdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzIzOF1bRV1dPTYwOTI4K0UsTFs2MDkyOCtFXT1CWzIzOF1bRV0pO2ZvcihCWzIzOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTRlOVx1OTRlYlx1OTRlZVx1OTRlZlx1OTRmM1x1OTRmNFx1OTRmNVx1OTRmN1x1OTRmOVx1OTRmY1x1OTRmZFx1OTRmZlx1OTUw''@;'; put 'put ''M1x1OTUwMlx1OTUwNlx1OTUwN1x1OTUwOVx1OTUwYVx1OTUwZFx1OTUwZVx1OTUwZlx1OTUxMlx1OTUxM1x1OTUxNFx1OTUxNVx1OTUxNlx1OTUxOFx1OTUxYlx1OTUxZFx1OTUxZVx1OTUxZlx1OTUyMlx1OTUyYVx1OTUyYlx1OTUyOVx1OTUyY1x1OTUzMVx1OTUzMlx1OTUzNFx1OTUzNlx1''@;'; put 'put ''OTUzN1x1OTUzOFx1OTUzY1x1OTUzZVx1OTUzZlx1OTU0Mlx1OTUzNVx1OTU0NFx1OTU0NVx1OTU0Nlx1OTU0OVx1OTU0Y1x1OTU0ZVx1OTU0Zlx1OTU1Mlx1OTU1M1x1OTU1NFx1OTU1Nlx1OTU1N1x1OTU1OFx1OTU1OVx1OTU1Ylx1OTU1ZVx1OTU1Zlx1OTU1ZFx1OTU2MVx1OTU2Mlx1OTU2''@;'; put 'put ''NFx1OTU2NVx1OTU2Nlx1OTU2N1x1OTU2OFx1OTU2OVx1OTU2YVx1OTU2Ylx1OTU2Y1x1OTU2Zlx1OTU3MVx1OTU3Mlx1OTU3M1x1OTUzYVx1NzdlN1x1NzdlY1x1OTZjOVx1NzlkNVx1NzllZFx1NzllM1x1NzllYlx1N2EwNlx1NWQ0N1x1N2EwM1x1N2EwMlx1N2ExZVx1N2ExNFx1ZmZmZCIu''@;'; put 'put ''c3BsaXQoIiIpLEU9MDtFIT1CWzIzOV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjM5XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyMzldW0VdXT02MTE4NCtFLExbNjExODQrRV09QlsyMzldW0VdKTtmb3IoQlsyNDBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhMzlcdTdhMzdcdTdhNTFcdTllY2ZcdTk5YTVcdTdhNzBcdTc2ODhcdTc2OGVcdTc2OTNcdTc2OTlcdTc2''@;'; put 'put ''YTRcdTc0ZGVcdTc0ZTBcdTc1MmNcdTllMjBcdTllMjJcdTllMjhcdTllMjlcdTllMmFcdTllMmJcdTllMmNcdTllMzJcdTllMzFcdTllMzZcdTllMzhcdTllMzdcdTllMzlcdTllM2FcdTllM2VcdTllNDFcdTllNDJcdTllNDRcdTllNDZcdTllNDdcdTllNDhcdTllNDlcdTllNGJcdTllNGNc''@;'; put 'put ''dTllNGVcdTllNTFcdTllNTVcdTllNTdcdTllNWFcdTllNWJcdTllNWNcdTllNWVcdTllNjNcdTllNjZcdTllNjdcdTllNjhcdTllNjlcdTllNmFcdTllNmJcdTllNmNcdTllNzFcdTllNmRcdTllNzNcdTc1OTJcdTc1OTRcdTc1OTZcdTc1YTBcdTc1OWRcdTc1YWNcdTc1YTNcdTc1YjNcdTc1''@;'; put 'put ''YjRcdTc1YjhcdTc1YzRcdTc1YjFcdTc1YjBcdTc1YzNcdTc1YzJcdTc1ZDZcdTc1Y2RcdTc1ZTNcdTc1ZThcdTc1ZTZcdTc1ZTRcdTc1ZWJcdTc1ZTdcdTc2MDNcdTc1ZjFcdTc1ZmNcdTc1ZmZcdTc2MTBcdTc2MDBcdTc2MDVcdTc2MGNcdTc2MTdcdTc2MGFcdTc2MjVcdTc2MThcdTc2MTVc''@;'; put 'put ''dTc2MTlcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDBdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0MF1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjQwXVtFXV09NjE0NDArRSxMWzYxNDQwK0VdPUJbMjQwXVtFXSk7Zm9yKEJbMjQxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NjFiXHU3NjNjXHU3NjIyXHU3NjIwXHU3NjQwXHU3NjJkXHU3NjMwXHU3NjNmXHU3''@;'; put 'put ''NjM1XHU3NjQzXHU3NjNlXHU3NjMzXHU3NjRkXHU3NjVlXHU3NjU0XHU3NjVjXHU3NjU2XHU3NjZiXHU3NjZmXHU3ZmNhXHU3YWU2XHU3YTc4XHU3YTc5XHU3YTgwXHU3YTg2XHU3YTg4XHU3YTk1XHU3YWE2XHU3YWEwXHU3YWFjXHU3YWE4XHU3YWFkXHU3YWIzXHU4ODY0XHU4ODY5XHU4ODcy''@;'; put 'put ''XHU4ODdkXHU4ODdmXHU4ODgyXHU4OGEyXHU4OGM2XHU4OGI3XHU4OGJjXHU4OGM5XHU4OGUyXHU4OGNlXHU4OGUzXHU4OGU1XHU4OGYxXHU4OTFhXHU4OGZjXHU4OGU4XHU4OGZlXHU4OGYwXHU4OTIxXHU4OTE5XHU4OTEzXHU4OTFiXHU4OTBhXHU4OTM0XHU4OTJiXHU4OTM2XHU4OTQxXHU4''@;'; put 'put ''OTY2XHU4OTdiXHU3NThiXHU4MGU1XHU3NmIyXHU3NmI0XHU3N2RjXHU4MDEyXHU4MDE0XHU4MDE2XHU4MDFjXHU4MDIwXHU4MDIyXHU4MDI1XHU4MDI2XHU4MDI3XHU4MDI5XHU4MDI4XHU4MDMxXHU4MDBiXHU4MDM1XHU4MDQzXHU4MDQ2XHU4MDRkXHU4MDUyXHU4MDY5XHU4MDcxXHU4OTgz''@;'; put 'put ''XHU5ODc4XHU5ODgwXHU5ODgzXHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQxXS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDFdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzI0MV1bRV1dPTYxNjk2K0UsTFs2MTY5NitFXT1CWzI0MV1bRV0pO2ZvcihCWzI0Ml09Ilx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTg4OVx1OTg4Y1x1OTg4ZFx1OTg4Zlx1OTg5NFx1OTg5YVx1''@;'; put 'put ''OTg5Ylx1OTg5ZVx1OTg5Zlx1OThhMVx1OThhMlx1OThhNVx1OThhNlx1ODY0ZFx1ODY1NFx1ODY2Y1x1ODY2ZVx1ODY3Zlx1ODY3YVx1ODY3Y1x1ODY3Ylx1ODZhOFx1ODY4ZFx1ODY4Ylx1ODZhY1x1ODY5ZFx1ODZhN1x1ODZhM1x1ODZhYVx1ODY5M1x1ODZhOVx1ODZiNlx1ODZjNFx1ODZi''@;'; put 'put ''NVx1ODZjZVx1ODZiMFx1ODZiYVx1ODZiMVx1ODZhZlx1ODZjOVx1ODZjZlx1ODZiNFx1ODZlOVx1ODZmMVx1ODZmMlx1ODZlZFx1ODZmM1x1ODZkMFx1ODcxM1x1ODZkZVx1ODZmNFx1ODZkZlx1ODZkOFx1ODZkMVx1ODcwM1x1ODcwN1x1ODZmOFx1ODcwOFx1ODcwYVx1ODcwZFx1ODcwOVx1''@;'; put 'put ''ODcyM1x1ODczYlx1ODcxZVx1ODcyNVx1ODcyZVx1ODcxYVx1ODczZVx1ODc0OFx1ODczNFx1ODczMVx1ODcyOVx1ODczN1x1ODczZlx1ODc4Mlx1ODcyMlx1ODc3ZFx1ODc3ZVx1ODc3Ylx1ODc2MFx1ODc3MFx1ODc0Y1x1ODc2ZVx1ODc4Ylx1ODc1M1x1ODc2M1x1ODc3Y1x1ODc2NFx1ODc1''@;'; put 'put ''OVx1ODc2NVx1ODc5M1x1ODdhZlx1ODdhOFx1ODdkMlx1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0Ml0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQyXVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyNDJdW0VdXT02MTk1MitFLExbNjE5NTIrRV09QlsyNDJdW0VdKTtmb3IoQlsyNDNdPSJc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg3YzZcdTg3ODhcdTg3ODVcdTg3YWRc''@;'; put 'put ''dTg3OTdcdTg3ODNcdTg3YWJcdTg3ZTVcdTg3YWNcdTg3YjVcdTg3YjNcdTg3Y2JcdTg3ZDNcdTg3YmRcdTg3ZDFcdTg3YzBcdTg3Y2FcdTg3ZGJcdTg3ZWFcdTg3ZTBcdTg3ZWVcdTg4MTZcdTg4MTNcdTg3ZmVcdTg4MGFcdTg4MWJcdTg4MjFcdTg4MzlcdTg4M2NcdTdmMzZcdTdmNDJcdTdm''@;'; put 'put ''NDRcdTdmNDVcdTgyMTBcdTdhZmFcdTdhZmRcdTdiMDhcdTdiMDNcdTdiMDRcdTdiMTVcdTdiMGFcdTdiMmJcdTdiMGZcdTdiNDdcdTdiMzhcdTdiMmFcdTdiMTlcdTdiMmVcdTdiMzFcdTdiMjBcdTdiMjVcdTdiMjRcdTdiMzNcdTdiM2VcdTdiMWVcdTdiNThcdTdiNWFcdTdiNDVcdTdiNzVc''@;'; put 'put ''dTdiNGNcdTdiNWRcdTdiNjBcdTdiNmVcdTdiN2JcdTdiNjJcdTdiNzJcdTdiNzFcdTdiOTBcdTdiYTZcdTdiYTdcdTdiYjhcdTdiYWNcdTdiOWRcdTdiYThcdTdiODVcdTdiYWFcdTdiOWNcdTdiYTJcdTdiYWJcdTdiYjRcdTdiZDFcdTdiYzFcdTdiY2NcdTdiZGRcdTdiZGFcdTdiZTVcdTdi''@;'; put 'put ''ZTZcdTdiZWFcdTdjMGNcdTdiZmVcdTdiZmNcdTdjMGZcdTdjMTZcdTdjMGJcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDNdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0M11bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0JbMjQzXVtFXV09NjIyMDgrRSxMWzYyMjA4K0VdPUJbMjQzXVtFXSk7''@;'; put 'put ''Zm9yKEJbMjQ0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3YzFmXHU3YzJh''@;'; put 'put ''XHU3YzI2XHU3YzM4XHU3YzQxXHU3YzQwXHU4MWZlXHU4MjAxXHU4MjAyXHU4MjA0XHU4MWVjXHU4ODQ0XHU4MjIxXHU4MjIyXHU4MjIzXHU4MjJkXHU4MjJmXHU4MjI4XHU4MjJiXHU4MjM4XHU4MjNiXHU4MjMzXHU4MjM0XHU4MjNlXHU4MjQ0XHU4MjQ5XHU4MjRiXHU4MjRmXHU4MjVhXHU4''@;'; put 'put ''MjVmXHU4MjY4XHU4ODdlXHU4ODg1XHU4ODg4XHU4OGQ4XHU4OGRmXHU4OTVlXHU3ZjlkXHU3ZjlmXHU3ZmE3XHU3ZmFmXHU3ZmIwXHU3ZmIyXHU3YzdjXHU2NTQ5XHU3YzkxXHU3YzlkXHU3YzljXHU3YzllXHU3Y2EyXHU3Y2IyXHU3Y2JjXHU3Y2JkXHU3Y2MxXHU3Y2M3XHU3Y2NjXHU3Y2Nk''@;'; put 'put ''XHU3Y2M4XHU3Y2M1XHU3Y2Q3XHU3Y2U4XHU4MjZlXHU2NmE4XHU3ZmJmXHU3ZmNlXHU3ZmQ1XHU3ZmU1XHU3ZmUxXHU3ZmU2XHU3ZmU5XHU3ZmVlXHU3ZmYzXHU3Y2Y4XHU3ZDc3XHU3ZGE2XHU3ZGFlXHU3ZTQ3XHU3ZTliXHU5ZWI4XHU5ZWI0XHU4ZDczXHU4ZDg0XHU4ZDk0XHU4ZDkxXHU4''@;'; put 'put ''ZGIxXHU4ZDY3XHU4ZDZkXHU4YzQ3XHU4YzQ5XHU5MTRhXHU5MTUwXHU5MTRlXHU5MTRmXHU5MTY0XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQ0XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDRdW0VdLmNoYXJDb2RlQXQoMCkmJihtZVtCWzI0NF1bRV1dPTYyNDY0K0UsTFs2MjQ2NCtF''@;'; put 'put ''XT1CWzI0NF1bRV0pO2ZvcihCWzI0NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1OTE2Mlx1OTE2MVx1OTE3MFx1OTE2OVx1OTE2Zlx1OTE3ZFx1OTE3ZVx1OTE3Mlx1OTE3NFx1OTE3OVx1OTE4Y1x1OTE4NVx1OTE5MFx1OTE4ZFx1OTE5MVx1OTFhMlx1OTFhM1x1OTFhYVx1OTFhZFx1OTFhZVx1OTFhZlx1OTFiNVx1OTFiNFx1OTFiYVx1OGM1NVx1OWU3ZVx1OGRiOFx1''@;'; put 'put ''OGRlYlx1OGUwNVx1OGU1OVx1OGU2OVx1OGRiNVx1OGRiZlx1OGRiY1x1OGRiYVx1OGRjNFx1OGRkNlx1OGRkN1x1OGRkYVx1OGRkZVx1OGRjZVx1OGRjZlx1OGRkYlx1OGRjNlx1OGRlY1x1OGRmN1x1OGRmOFx1OGRlM1x1OGRmOVx1OGRmYlx1OGRlNFx1OGUwOVx1OGRmZFx1OGUxNFx1OGUx''@;'; put 'put ''ZFx1OGUxZlx1OGUyY1x1OGUyZVx1OGUyM1x1OGUyZlx1OGUzYVx1OGU0MFx1OGUzOVx1OGUzNVx1OGUzZFx1OGUzMVx1OGU0OVx1OGU0MVx1OGU0Mlx1OGU1MVx1OGU1Mlx1OGU0YVx1OGU3MFx1OGU3Nlx1OGU3Y1x1OGU2Zlx1OGU3NFx1OGU4NVx1OGU4Zlx1OGU5NFx1OGU5MFx1OGU5Y1x1''@;'; put 'put ''OGU5ZVx1OGM3OFx1OGM4Mlx1OGM4YVx1OGM4NVx1OGM5OFx1OGM5NFx1NjU5Ylx1ODlkNlx1ODlkZVx1ODlkYVx1ODlkY1x1ZmZmZCIuc3BsaXQoIiIpLEU9MDtFIT1CWzI0NV0ubGVuZ3RoOysrRSk2NTUzMyE9PUJbMjQ1XVtFXS5jaGFyQ29kZUF0KDApJiYobWVbQlsyNDVdW0VdXT02Mjcy''@;'; put 'put ''MCtFLExbNjI3MjArRV09QlsyNDVdW0VdKTtmb3IoQlsyNDZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdTg5ZTVcdTg5ZWJcdTg5ZWZcdThhM2VcdThiMjZcdTk3NTNcdTk2ZTlcdTk2ZjNcdTk2ZWZcdTk3MDZcdTk3MDFcdTk3MDhcdTk3MGZcdTk3MGVcdTk3MmFcdTk3MmRcdTk3MzBcdTk3M2VcdTlmODBcdTlmODNcdTlmODVcdTlmODZcdTlmODdcdTlmODhcdTlmODlc''@;'; put 'put ''dTlmOGFcdTlmOGNcdTllZmVcdTlmMGJcdTlmMGRcdTk2YjlcdTk2YmNcdTk2YmRcdTk2Y2VcdTk2ZDJcdTc3YmZcdTk2ZTBcdTkyOGVcdTkyYWVcdTkyYzhcdTkzM2VcdTkzNmFcdTkzY2FcdTkzOGZcdTk0M2VcdTk0NmJcdTljN2ZcdTljODJcdTljODVcdTljODZcdTljODdcdTljODhcdTdh''@;'; put 'put ''MjNcdTljOGJcdTljOGVcdTljOTBcdTljOTFcdTljOTJcdTljOTRcdTljOTVcdTljOWFcdTljOWJcdTljOWVcdTljOWZcdTljYTBcdTljYTFcdTljYTJcdTljYTNcdTljYTVcdTljYTZcdTljYTdcdTljYThcdTljYTlcdTljYWJcdTljYWRcdTljYWVcdTljYjBcdTljYjFcdTljYjJcdTljYjNc''@;'; put 'put ''dTljYjRcdTljYjVcdTljYjZcdTljYjdcdTljYmFcdTljYmJcdTljYmNcdTljYmRcdTljYzRcdTljYzVcdTljYzZcdTljYzdcdTljY2FcdTljY2JcdWZmZmQiLnNwbGl0KCIiKSxFPTA7RSE9QlsyNDZdLmxlbmd0aDsrK0UpNjU1MzMhPT1CWzI0Nl1bRV0uY2hhckNvZGVBdCgwKSYmKG1lW0Jb''@;'; put 'put ''MjQ2XVtFXV09NjI5NzYrRSxMWzYyOTc2K0VdPUJbMjQ2XVtFXSk7Zm9yKEJbMjQ3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5Y2NjXHU5Y2NkXHU5Y2NlXHU5Y2NmXHU5Y2QwXHU5Y2QzXHU5Y2Q0XHU5Y2Q1XHU5Y2Q3XHU5Y2Q4XHU5Y2Q5XHU5Y2RjXHU5Y2RkXHU5Y2RmXHU5Y2UyXHU5NzdjXHU5Nzg1XHU5NzkxXHU5NzkyXHU5Nzk0XHU5N2FmXHU5N2FiXHU5N2Ez''@;'; put 'put ''XHU5N2IyXHU5N2I0XHU5YWIxXHU5YWIwXHU5YWI3XHU5ZTU4XHU5YWI2XHU5YWJhXHU5YWJjXHU5YWMxXHU5YWMwXHU5YWM1XHU5YWMyXHU5YWNiXHU5YWNjXHU5YWQxXHU5YjQ1XHU5YjQzXHU5YjQ3XHU5YjQ5XHU5YjQ4XHU5YjRkXHU5YjUxXHU5OGU4XHU5OTBkXHU5OTJlXHU5OTU1XHU5''@;'; put 'put ''OTU0XHU5YWRmXHU5YWUxXHU5YWU2XHU5YWVmXHU5YWViXHU5YWZiXHU5YWVkXHU5YWY5XHU5YjA4XHU5YjBmXHU5YjEzXHU5YjFmXHU5YjIzXHU5ZWJkXHU5ZWJlXHU3ZTNiXHU5ZTgyXHU5ZTg3XHU5ZTg4XHU5ZThiXHU5ZTkyXHU5M2Q2XHU5ZTlkXHU5ZTlmXHU5ZWRiXHU5ZWRjXHU5ZWRk''@;'; put 'put ''XHU5ZWUwXHU5ZWRmXHU5ZWUyXHU5ZWU5XHU5ZWU3XHU5ZWU1XHU5ZWVhXHU5ZWVmXHU5ZjIyXHU5ZjJjXHU5ZjJmXHU5ZjM5XHU5ZjM3XHU5ZjNkXHU5ZjNlXHU5ZjQ0XHVmZmZkIi5zcGxpdCgiIiksRT0wO0UhPUJbMjQ3XS5sZW5ndGg7KytFKTY1NTMzIT09QlsyNDddW0VdLmNoYXJDb2Rl''@;'; put 'put ''QXQoMCkmJihtZVtCWzI0N11bRV1dPTYzMjMyK0UsTFs2MzIzMitFXT1CWzI0N11bRV0pO3JldHVybntlbmM6bWUsZGVjOkx9fSgpLEplWzEwMDI5XT1mdW5jdGlvbigpe2Zvcih2YXIgTD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgx''@;'; put 'put ''MVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGM0XHUw''@;'; put 'put ''MTAwXHUwMTAxXHhjOVx1MDEwNFx4ZDZceGRjXHhlMVx1MDEwNVx1MDEwY1x4ZTRcdTAxMGRcdTAxMDZcdTAxMDdceGU5XHUwMTc5XHUwMTdhXHUwMTBlXHhlZFx1MDEwZlx1MDExMlx1MDExM1x1MDExNlx4ZjNcdTAxMTdceGY0XHhmNlx4ZjVceGZhXHUwMTFhXHUwMTFiXHhmY1x1MjAyMFx4''@;'; put 'put ''YjBcdTAxMThceGEzXHhhN1x1MjAyMlx4YjZceGRmXHhhZVx4YTlcdTIxMjJcdTAxMTlceGE4XHUyMjYwXHUwMTIzXHUwMTJlXHUwMTJmXHUwMTJhXHUyMjY0XHUyMjY1XHUwMTJiXHUwMTM2XHUyMjAyXHUyMjExXHUwMTQyXHUwMTNiXHUwMTNjXHUwMTNkXHUwMTNlXHUwMTM5XHUwMTNhXHUw''@;'; put 'put ''MTQ1XHUwMTQ2XHUwMTQzXHhhY1x1MjIxYVx1MDE0NFx1MDE0N1x1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx1MDE0OFx1MDE1MFx4ZDVcdTAxNTFcdTAxNGNcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNhXHUwMTRkXHUwMTU0XHUwMTU1XHUwMTU4XHUyMDM5''@;'; put 'put ''XHUyMDNhXHUwMTU5XHUwMTU2XHUwMTU3XHUwMTYwXHUyMDFhXHUyMDFlXHUwMTYxXHUwMTVhXHUwMTViXHhjMVx1MDE2NFx1MDE2NVx4Y2RcdTAxN2RcdTAxN2VcdTAxNmFceGQzXHhkNFx1MDE2Ylx1MDE2ZVx4ZGFcdTAxNmZcdTAxNzBcdTAxNzFcdTAxNzJcdTAxNzNceGRkXHhmZFx1MDEz''@;'; put 'put ''N1x1MDE3Ylx1MDE0MVx1MDE3Y1x1MDEyMlx1MDJjNyIsbWU9W10sQj17fSxFPTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSksbWVbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzptZX19KCksSmVbMTAwNzldPWZ1bmN0''@;'; put 'put ''aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9A''@;'; put 'put ''QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzRceGM1XHhjN1x4YzlceGQxXHhkNlx4ZGNceGUxXHhlMFx4ZTJceGU0XHhlM1x4ZTVceGU3XHhlOVx4ZThceGVhXHhlYlx4ZWRceGVjXHhlZVx4ZWZceGYxXHhmM1x4''@;'; put 'put ''ZjJceGY0XHhmNlx4ZjVceGZhXHhmOVx4ZmJceGZjXHhkZFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2XHhkZlx4YWVceGE5XHUyMTIyXHhiNFx4YThcdTIyNjBceGM2XHhkOFx1MjIxZVx4YjFcdTIyNjRcdTIyNjVceGE1XHhiNVx1MjIwMlx1MjIxMVx1MjIwZlx1MDNjMFx1MjIyYlx4YWFc''@;'; put 'put ''eGJhXHUyMTI2XHhlNlx4ZjhceGJmXHhhMVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIyMDZceGFiXHhiYlx1MjAyNlx4YTBceGMwXHhjM1x4ZDVcdTAxNTJcdTAxNTNcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNhXHhmZlx1MDE3OFx1MjA0NFx4YTRceGQw''@;'; put 'put ''XHhmMFx4ZGVceGZlXHhmZFx4YjdcdTIwMWFcdTIwMWVcdTIwMzBceGMyXHhjYVx4YzFceGNiXHhjOFx4Y2RceGNlXHhjZlx4Y2NceGQzXHhkNFx1ZmZmZFx4ZDJceGRhXHhkYlx4ZDlcdTAxMzFcdTAyYzZcdTAyZGNceGFmXHUwMmQ4XHUwMmQ5XHUwMmRhXHhiOFx1MDJkZFx1MDJkYlx1MDJj''@;'; put 'put ''NyIsbWU9W10sQj17fSxFPTA7RSE9TC5sZW5ndGg7KytFKTY1NTMzIT09TC5jaGFyQ29kZUF0KEUpJiYoQltMLmNoYXJBdChFKV09RSksbWVbRV09TC5jaGFyQXQoRSk7cmV0dXJue2VuYzpCLGRlYzptZX19KCksSmVbMTAwODFdPWZ1bmN0aW9uKCl7Zm9yKHZhciBMPSJcMFx4MDFceDAyXHgw''@;'; put 'put ''M1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxd''@;'; put 'put ''Xl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzRceGM1XHhjN1x4YzlceGQxXHhkNlx4ZGNceGUxXHhlMFx4ZTJceGU0XHhlM1x4ZTVceGU3XHhlOVx4ZThceGVhXHhlYlx4ZWRceGVjXHhlZVx4ZWZceGYxXHhmM1x4ZjJceGY0XHhmNlx4ZjVceGZhXHhmOVx4ZmJceGZj''@;'; put 'put ''XHUyMDIwXHhiMFx4YTJceGEzXHhhN1x1MjAyMlx4YjZceGRmXHhhZVx4YTlcdTIxMjJceGI0XHhhOFx1MjI2MFx4YzZceGQ4XHUyMjFlXHhiMVx1MjI2NFx1MjI2NVx4YTVceGI1XHUyMjAyXHUyMjExXHUyMjBmXHUwM2MwXHUyMjJiXHhhYVx4YmFcdTIxMjZceGU2XHhmOFx4YmZceGExXHhh''@;'; put 'put ''Y1x1MjIxYVx1MDE5Mlx1MjI0OFx1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx4YzBceGMzXHhkNVx1MDE1Mlx1MDE1M1x1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTI1Y2FceGZmXHUwMTc4XHUwMTFlXHUwMTFmXHUwMTMwXHUwMTMxXHUwMTVlXHUwMTVmXHUyMDIx''@;'; put 'put ''XHhiN1x1MjAxYVx1MjAxZVx1MjAzMFx4YzJceGNhXHhjMVx4Y2JceGM4XHhjZFx4Y2VceGNmXHhjY1x4ZDNceGQ0XHVmZmZkXHhkMlx4ZGFceGRiXHhkOVx1ZmZmZFx1MDJjNlx1MDJkY1x4YWZcdTAyZDhcdTAyZDlcdTAyZGFceGI4XHUwMmRkXHUwMmRiXHUwMmM3IixtZT1bXSxCPXt9LEU9''@;'; put 'put ''MDtFIT1MLmxlbmd0aDsrK0UpNjU1MzMhPT1MLmNoYXJDb2RlQXQoRSkmJihCW0wuY2hhckF0KEUpXT1FKSxtZVtFXT1MLmNoYXJBdChFKTtyZXR1cm57ZW5jOkIsZGVjOm1lfX0oKSxKZVsyODU5MV09ZnVuY3Rpb24oKXtmb3IodmFyIEw9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgw''@;'; put 'put ''N1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xt''@;'; put 'put ''bm9wcXJzdHV2d3h5ent8fX5ceDdmXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHhhMVx4YTJceGEz''@;'; put 'put ''XHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx4Y2Nc''@;'; put 'put ''eGNkXHhjZVx4Y2ZceGQwXHhkMVx4ZDJceGQzXHhkNFx4ZDVceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHhkZFx4ZGVceGRmXHhlMFx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx4ZjBceGYxXHhmMlx4ZjNceGY0XHhmNVx4''@;'; put 'put ''ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNceGZkXHhmZVx4ZmYiLG1lPVtdLEI9e30sRT0wO0UhPUwubGVuZ3RoOysrRSk2NTUzMyE9PUwuY2hhckNvZGVBdChFKSYmKEJbTC5jaGFyQXQoRSldPUUpLG1lW0VdPUwuY2hhckF0KEUpO3JldHVybntlbmM6QixkZWM6bWV9fSgpLFhlLmV4cG9y''@;'; put 'put ''dHMmJiJ1bmRlZmluZWQiPT10eXBlb2YgRE9fTk9UX0VYUE9SVF9DT0RFUEFHRSYmKFhlLmV4cG9ydHM9SmUpLGZ1bmN0aW9uKEwsbWUpeyJ1c2Ugc3RyaWN0IjtpZih2b2lkIDA9PT1KZSl7dmFyIEI9SmU7WGUuZXhwb3J0cyYmInVuZGVmaW5lZCI9PXR5cGVvZiBET19OT1RfRVhQT1JUX0NP''@;'; put 'put ''REVQQUdFP1hlLmV4cG9ydHM9bWUoQik6TC5jcHRhYmxlPW1lKEIpfWVsc2UgSmU9bWUoSmUpfSh0aGlzLGZ1bmN0aW9uKEwpeyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9ezEyMDA6InV0ZjE2bGUiLDEyMDE6InV0ZjE2YmUiLDEyZTM6InV0ZjMybGUiLDEyMDAxOiJ1dGYzMmJlIiwxNjk2OToidXRm''@;'; put 'put ''NjRsZSIsMjAxMjc6ImFzY2lpIiw2NWUzOiJ1dGY3Iiw2NTAwMToidXRmOCJ9LEI9Wzg3NCwxMjUwLDEyNTEsMTI1MiwxMjUzLDEyNTQsMTI1NSwxMjU2LDFlNF0sRT1bOTMyLDkzNiw5NDksOTUwXSxFZT1bNjUwMDFdLFU9e30sUT17fSxqPXt9LHJlPXt9LGFlPWZ1bmN0aW9uKFYpe3JldHVy''@;'; put 'put ''biBTdHJpbmcuZnJvbUNoYXJDb2RlKFYpfSxZPWZ1bmN0aW9uKFYpe3JldHVybiBWLmNoYXJDb2RlQXQoMCl9LFc9InVuZGVmaW5lZCIhPXR5cGVvZiBCdWZmZXIsTj1mdW5jdGlvbigpe307aWYoVyl7dmFyIHRlPSFCdWZmZXIuZnJvbTtpZighdGUpdHJ5e0J1ZmZlci5mcm9tKCJmb28iLCJ1''@;'; put 'put ''dGY4Iil9Y2F0Y2goUCl7dGU9ITB9Tj10ZT9mdW5jdGlvbihQLFYpe3JldHVybiBWP25ldyBCdWZmZXIoUCxWKTpuZXcgQnVmZmVyKFApfTpCdWZmZXIuZnJvbS5iaW5kKEJ1ZmZlciksQnVmZmVyLmFsbG9jVW5zYWZlfHwoQnVmZmVyLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKFApe3JldHVybiBu''@;'; put 'put ''ZXcgQnVmZmVyKFApfSk7dmFyIEs9MTAyNCxKPUJ1ZmZlci5hbGxvY1Vuc2FmZShLKSxvZT1mdW5jdGlvbihWKXt2YXIgVD1mdW5jdGlvbihWKXtmb3IodmFyIFQ9QnVmZmVyLmFsbG9jVW5zYWZlKDY1NTM2KSxTPTA7Uzw2NTUzNjsrK1MpVFtTXT0wO2Zvcih2YXIgRj1PYmplY3Qua2V5cyhW''@;'; put 'put ''KSx5ZT1GLmxlbmd0aCxDZT0wLERlPUZbQ2VdO0NlPHllOysrQ2UpIShEZT1GW0NlXSl8fChUW0RlLmNoYXJDb2RlQXQoMCldPVZbRGVdKTtyZXR1cm4gVH0oTFtWXS5lbmMpO3JldHVybiBmdW5jdGlvbihGLHllKXt2YXIgRGUsQ2U9Ri5sZW5ndGgsUGU9MCxRZT0wLCRlPTAsZ3Q9MDtpZigi''@;'; put 'put ''c3RyaW5nIj09dHlwZW9mIEYpZm9yKERlPUJ1ZmZlci5hbGxvY1Vuc2FmZShDZSksUGU9MDtQZTxDZTsrK1BlKURlW1BlXT1UW0YuY2hhckNvZGVBdChQZSldO2Vsc2UgaWYoQnVmZmVyLmlzQnVmZmVyKEYpKXtmb3IoRGU9QnVmZmVyLmFsbG9jVW5zYWZlKDIqQ2UpLFFlPTAsUGU9MDtQZTxD''@;'; put 'put ''ZTsrK1BlKSgkZT1GW1BlXSk8MTI4P0RlW1FlKytdPVRbJGVdOiRlPDIyND8oRGVbUWUrK109VFsoKDMxJiRlKTw8NikrKDYzJkZbUGUrMV0pXSwrK1BlKTokZTwyNDA/KERlW1FlKytdPVRbKCgxNSYkZSk8PDEyKSsoKDYzJkZbUGUrMV0pPDw2KSsoNjMmRltQZSsyXSldLFBlKz0yKTooZ3Q9''@;'; put 'put ''KCg3JiRlKTw8MTgpKygoNjMmRltQZSsxXSk8PDEyKSsoKDYzJkZbUGUrMl0pPDw2KSsoNjMmRltQZSszXSksUGUrPTMsZ3Q8NjU1MzY/RGVbUWUrK109VFtndF06KERlW1FlKytdPVRbNTUyOTYrKChndC09NjU1MzYpPj4xMCYxMDIzKV0sRGVbUWUrK109VFs1NjMyMCsoMTAyMyZndCldKSk7''@;'; put 'put ''RGU9RGUuc2xpY2UoMCxRZSl9ZWxzZSBmb3IoRGU9QnVmZmVyLmFsbG9jVW5zYWZlKENlKSxQZT0wO1BlPENlOysrUGUpRGVbUGVdPVRbRltQZV0uY2hhckNvZGVBdCgwKV07cmV0dXJuIHllJiYiYnVmIiE9PXllPyJhcnIiIT09eWU/RGUudG9TdHJpbmcoImJpbmFyeSIpOltdLnNsaWNlLmNh''@;'; put 'put ''bGwoRGUpOkRlfX0sY2U9ZnVuY3Rpb24oVil7dmFyIFQ9TFtWXS5kZWMsUz1CdWZmZXIuYWxsb2NVbnNhZmUoMTMxMDcyKSxGPTAseWU9IiI7Zm9yKEY9MDtGPFQubGVuZ3RoOysrRilpZih5ZT1UW0ZdKXt2YXIgQ2U9eWUuY2hhckNvZGVBdCgwKTtTWzIqRl09MjU1JkNlLFNbMipGKzFdPUNl''@;'; put 'put ''Pj44fXJldHVybiBmdW5jdGlvbihQZSl7dmFyIFFlPVBlLmxlbmd0aCwkZT0wLGd0PTA7aWYoMipRZT5LJiYoSz0yKlFlLEo9QnVmZmVyLmFsbG9jVW5zYWZlKEspKSxCdWZmZXIuaXNCdWZmZXIoUGUpKWZvcigkZT0wOyRlPFFlOyRlKyspSlsyKiRlXT1TW2d0PTIqUGVbJGVdXSxKWzIqJGUr''@;'; put 'put ''MV09U1tndCsxXTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgUGUpZm9yKCRlPTA7JGU8UWU7JGUrKylndD0yKlBlLmNoYXJDb2RlQXQoJGUpLEpbMiokZV09U1tndF0sSlsyKiRlKzFdPVNbZ3QrMV07ZWxzZSBmb3IoJGU9MDskZTxRZTskZSsrKUpbMiokZV09U1tndD0yKlBlWyRlXV0sSlsy''@;'; put 'put ''KiRlKzFdPVNbZ3QrMV07cmV0dXJuIEouc2xpY2UoMCwyKlFlKS50b1N0cmluZygidWNzMiIpfX0sZGU9ZnVuY3Rpb24oVil7Zm9yKHZhciBUPUxbVl0uZW5jLFM9QnVmZmVyLmFsbG9jVW5zYWZlKDEzMTA3MiksRj0wO0Y8MTMxMDcyOysrRilTW0ZdPTA7Zm9yKHZhciB5ZT1PYmplY3Qua2V5''@;'; put 'put ''cyhUKSxDZT0wLERlPXllW0NlXTtDZTx5ZS5sZW5ndGg7KytDZSlpZihEZT15ZVtDZV0pe3ZhciBQZT1EZS5jaGFyQ29kZUF0KDApO1NbMipQZV09MjU1JlRbRGVdLFNbMipQZSsxXT1UW0RlXT4+OH1yZXR1cm4gZnVuY3Rpb24oJGUsZ3Qpe3ZhciB3dD0kZS5sZW5ndGgsbXQ9QnVmZmVyLmFs''@;'; put 'put ''bG9jVW5zYWZlKDIqd3QpLHZ0PTAsQXQ9MCxodD0wLEJ0PTAsb249MDtpZigic3RyaW5nIj09dHlwZW9mICRlKXtmb3IodnQ9QnQ9MDt2dDx3dDsrK3Z0KUF0PTIqJGUuY2hhckNvZGVBdCh2dCksbXRbQnQrK109U1tBdCsxXXx8U1tBdF0sU1tBdCsxXT4wJiYobXRbQnQrK109U1tBdF0pO210''@;'; put 'put ''PW10LnNsaWNlKDAsQnQpfWVsc2UgaWYoQnVmZmVyLmlzQnVmZmVyKCRlKSl7Zm9yKHZ0PUJ0PTA7dnQ8d3Q7Kyt2dCkob249JGVbdnRdKTwxMjg/QXQ9b246b248MjI0PyhBdD0oKDMxJm9uKTw8NikrKDYzJiRlW3Z0KzFdKSwrK3Z0KTpvbjwyNDA/KEF0PSgoMTUmb24pPDwxMikrKCg2MyYk''@;'; put 'put ''ZVt2dCsxXSk8PDYpKyg2MyYkZVt2dCsyXSksdnQrPTIpOihBdD0oKDcmb24pPDwxOCkrKCg2MyYkZVt2dCsxXSk8PDEyKSsoKDYzJiRlW3Z0KzJdKTw8NikrKDYzJiRlW3Z0KzNdKSx2dCs9MyksQXQ8NjU1MzY/KG10W0J0KytdPVNbMSsoQXQqPTIpXXx8U1tBdF0sU1tBdCsxXT4wJiYobXRb''@;'; put 'put ''QnQrK109U1tBdF0pKToobXRbQnQrK109U1sxKyhBdD0yKig1NTI5NisoKGh0PUF0LTY1NTM2KT4+MTAmMTAyMykpKV18fFNbQXRdLFNbQXQrMV0+MCYmKG10W0J0KytdPVNbQXRdKSxtdFtCdCsrXT1TWzErKEF0PTIqKDU2MzIwKygxMDIzJmh0KSkpXXx8U1tBdF0sU1tBdCsxXT4wJiYobXRb''@;'; put 'put ''QnQrK109U1tBdF0pKTttdD1tdC5zbGljZSgwLEJ0KX1lbHNlIGZvcih2dD1CdD0wO3Z0PHd0O3Z0KyspQXQ9MiokZVt2dF0uY2hhckNvZGVBdCgwKSxtdFtCdCsrXT1TW0F0KzFdfHxTW0F0XSxTW0F0KzFdPjAmJihtdFtCdCsrXT1TW0F0XSk7cmV0dXJuIGd0JiYiYnVmIiE9PWd0PyJhcnIi''@;'; put 'put ''IT09Z3Q/bXQudG9TdHJpbmcoImJpbmFyeSIpOltdLnNsaWNlLmNhbGwobXQpOm10fX0sdmU9ZnVuY3Rpb24oVil7dmFyIHllLFQ9TFtWXS5kZWMsUz1CdWZmZXIuYWxsb2NVbnNhZmUoMTMxMDcyKSxGPTAsQ2U9MCxEZT0wLFBlPTA7Zm9yKFBlPTA7UGU8NjU1MzY7KytQZSlTWzIqUGVdPTI1''@;'; put 'put ''NSxTWzIqUGUrMV09MjUzO2ZvcihGPTA7RjxULmxlbmd0aDsrK0YpISh5ZT1UW0ZdKXx8KENlPXllLmNoYXJDb2RlQXQoMCksU1tEZT0yKkZdPTI1NSZDZSxTW0RlKzFdPUNlPj44KTtyZXR1cm4gZnVuY3Rpb24oJGUpe3ZhciBndD0kZS5sZW5ndGgsd3Q9QnVmZmVyLmFsbG9jVW5zYWZlKDIq''@;'; put 'put ''Z3QpLG10PTAsdnQ9MCxBdD0wO2lmKEJ1ZmZlci5pc0J1ZmZlcigkZSkpZm9yKG10PTA7bXQ8Z3Q7bXQrKykyNTU9PT1TW3Z0PTIqJGVbbXRdXSYmMjUzPT09U1t2dCsxXSYmKHZ0PTIqKCgkZVttdF08PDgpKyRlW210KzFdKSwrK210KSx3dFtBdCsrXT1TW3Z0XSx3dFtBdCsrXT1TW3Z0KzFd''@;'; put 'put ''O2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiAkZSlmb3IobXQ9MDttdDxndDttdCsrKXZ0PTIqJGUuY2hhckNvZGVBdChtdCksMjU1PT09U1t2dF0mJjI1Mz09PVNbdnQrMV0mJih2dD0yKigoJGUuY2hhckNvZGVBdChtdCk8PDgpKyRlLmNoYXJDb2RlQXQobXQrMSkpLCsrbXQpLHd0W0F0Kytd''@;'; put 'put ''PVNbdnRdLHd0W0F0KytdPVNbdnQrMV07ZWxzZSBmb3IobXQ9MDttdDxndDttdCsrKTI1NT09PVNbdnQ9MiokZVttdF1dJiYyNTM9PT1TW3Z0KzFdJiYodnQ9MiooKCRlW210XTw8OCkrJGVbbXQrMV0pLCsrbXQpLHd0W0F0KytdPVNbdnRdLHd0W0F0KytdPVNbdnQrMV07cmV0dXJuIHd0LnNs''@;'; put 'put ''aWNlKDAsQXQpLnRvU3RyaW5nKCJ1Y3MyIil9fTtVWzY1MDAxXT1mdW5jdGlvbiBQKFYpe2lmKCJzdHJpbmciPT10eXBlb2YgVilyZXR1cm4gUChWLnNwbGl0KCIiKS5tYXAoWSkpO3ZhciBUPVYubGVuZ3RoLFM9MCxGPTA7NCpUPksmJihLPTQqVCxKPUJ1ZmZlci5hbGxvY1Vuc2FmZShLKSk7''@;'; put 'put ''dmFyIHllPTA7VD49MyYmMjM5PT1WWzBdJiYxODc9PVZbMV0mJjE5MT09VlsyXSYmKHllPTMpO2Zvcih2YXIgQ2U9MSxEZT0wLFBlPTA7eWU8VDt5ZSs9Q2UpQ2U9MSwoUGU9Vlt5ZV0pPDEyOD9TPVBlOlBlPDIyND8oUz02NCooMzEmUGUpKyg2MyZWW3llKzFdKSxDZT0yKTpQZTwyNDA/KFM9''@;'; put 'put ''KCgxNSZQZSk8PDEyKSs2NCooNjMmVlt5ZSsxXSkrKDYzJlZbeWUrMl0pLENlPTMpOihTPTI2MjE0NCooNyZQZSkrKCg2MyZWW3llKzFdKTw8MTIpKzY0Kig2MyZWW3llKzJdKSsoNjMmVlt5ZSszXSksQ2U9NCksUzw2NTUzNj8oSltEZSsrXT0yNTUmUyxKW0RlKytdPVM+PjgpOihGPTU1Mjk2''@;'; put 'put ''KygoUy09NjU1MzYpPj4xMCYxMDIzKSxTPTU2MzIwKygxMDIzJlMpLEpbRGUrK109MjU1JkYsSltEZSsrXT1GPj4+OCxKW0RlKytdPTI1NSZTLEpbRGUrK109Uz4+PjgmMjU1KTtyZXR1cm4gSi5zbGljZSgwLERlKS50b1N0cmluZygidWNzMiIpfSxRWzY1MDAxXT1mdW5jdGlvbihWLFQpe2lm''@;'; put 'put ''KFcmJkJ1ZmZlci5pc0J1ZmZlcihWKSlyZXR1cm4gVCYmImJ1ZiIhPT1UPyJhcnIiIT09VD9WLnRvU3RyaW5nKCJiaW5hcnkiKTpbXS5zbGljZS5jYWxsKFYpOlY7dmFyIFM9Vi5sZW5ndGgsRj0wLHllPTAsQ2U9MCxEZT0ic3RyaW5nIj09dHlwZW9mIFY7NCpTPksmJihLPTQqUyxKPUJ1ZmZl''@;'; put 'put ''ci5hbGxvY1Vuc2FmZShLKSk7Zm9yKHZhciBQZT0wO1BlPFM7KytQZSkoRj1EZT9WLmNoYXJDb2RlQXQoUGUpOlZbUGVdLmNoYXJDb2RlQXQoMCkpPD0xMjc/SltDZSsrXT1GOkY8PTIwNDc/KEpbQ2UrK109MTkyKyhGPj42KSxKW0NlKytdPTEyOCsoNjMmRikpOkY+PTU1Mjk2JiZGPD01NzM0''@;'; put 'put ''Mz8oRi09NTUyOTYsKytQZSx5ZT0oRGU/Vi5jaGFyQ29kZUF0KFBlKTpWW1BlXS5jaGFyQ29kZUF0KDApKS01NjMyMCsoRjw8MTApLEpbQ2UrK109MjQwKyh5ZT4+PjE4JjcpLEpbQ2UrK109MTQ0Kyh5ZT4+PjEyJjYzKSxKW0NlKytdPTEyOCsoeWU+Pj42JjYzKSxKW0NlKytdPTEyOCsoNjMm''@;'; put 'put ''eWUpKTooSltDZSsrXT0yMjQrKEY+PjEyKSxKW0NlKytdPTEyOCsoRj4+NiY2MyksSltDZSsrXT0xMjgrKDYzJkYpKTtyZXR1cm4gVCYmImJ1ZiIhPT1UPyJhcnIiIT09VD9KLnNsaWNlKDAsQ2UpLnRvU3RyaW5nKCJiaW5hcnkiKTpbXS5zbGljZS5jYWxsKEosMCxDZSk6Si5zbGljZSgwLENl''@;'; put 'put ''KX19dmFyIEFlPWZ1bmN0aW9uKCl7aWYoVyl7aWYoaltCWzBdXSlyZXR1cm47dmFyIFY9MCxUPTA7Zm9yKFY9MDtWPEIubGVuZ3RoOysrVilMW1Q9QltWXV0mJihqW1RdPWNlKFQpLHJlW1RdPW9lKFQpKTtmb3IoVj0wO1Y8RS5sZW5ndGg7KytWKUxbVD1FW1ZdXSYmKGpbVF09dmUoVCkscmVb''@;'; put 'put ''VF09ZGUoVCkpO2ZvcihWPTA7VjxFZS5sZW5ndGg7KytWKVVbVD1FZVtWXV0mJihqW1RdPVVbVF0pLFFbVF0mJihyZVtUXT1RW1RdKX19LGtlPWZ1bmN0aW9uKFAsVil7cmV0dXJuIiJ9LFNlPWZ1bmN0aW9uKFYpe2RlbGV0ZSBqW1ZdLGRlbGV0ZSByZVtWXX0sVGU9e2VuY2FjaGU6QWUsZGVj''@;'; put 'put ''YWNoZTpmdW5jdGlvbigpe2lmKFcpe2lmKCFqW0JbMF1dKXJldHVybjtCLmZvckVhY2goU2UpLEUuZm9yRWFjaChTZSksRWUuZm9yRWFjaChTZSl9Tz1rZSx6PTB9LHNiY3M6QixkYmNzOkV9O0FlKCk7dmFyIE1lPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3Bx''@;'; put 'put ''cnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIixPPWtlLHo9MDtyZXR1cm4gTC51dGlscz17ZGVjb2RlOmZ1bmN0aW9uIFAoVixUKXt2YXIgUztpZihTPWpbVl0pcmV0dXJuIFMoVCk7aWYoInN0cmluZyI9PXR5cGVvZiBUKXJldHVybiBQKFYsVC5zcGxpdCgiIikubWFwKFkpKTt2YXIgbXQsRj1ULmxl''@;'; put 'put ''bmd0aCx5ZT1uZXcgQXJyYXkoRiksQ2U9IiIsRGU9MCxQZT0wLFFlPTEsJGU9MCxndD0wLHd0PUxbVl0sdnQ9IiI7aWYod3QmJihtdD13dC5kZWMpKWZvcihQZT0wO1BlPEY7UGUrPVFlKXtpZihRZT0yLChDZT1tdFsoVFtQZV08PDgpK1RbUGUrMV1dKXx8KFFlPTEsQ2U9bXRbVFtQZV1dKSwh''@;'; put 'put ''Q2UpdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgY29kZTogIitUW1BlXSsiICIrVFtQZStRZS0xXSsiICIrUGUrIiAiK1FlKyIgIittdFtUW1BlXV0pO3llWyRlKytdPUNlfWVsc2V7aWYoISh2dD1tZVtWXSkpdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgQ1A6ICIrVik7c3dp''@;'; put 'put ''dGNoKHZ0KXtjYXNlInV0ZjgiOmZvcihGPj0zJiYyMzk9PVRbMF0mJjE4Nz09VFsxXSYmMTkxPT1UWzJdJiYoUGU9Myk7UGU8RjtQZSs9UWUpUWU9MSxUW1BlXTwxMjg/RGU9VFtQZV06VFtQZV08MjI0PyhEZT02NCooMzEmVFtQZV0pKyg2MyZUW1BlKzFdKSxRZT0yKTpUW1BlXTwyNDA/KERl''@;'; put 'put ''PSgoMTUmVFtQZV0pPDwxMikrNjQqKDYzJlRbUGUrMV0pKyg2MyZUW1BlKzJdKSxRZT0zKTooRGU9MjYyMTQ0Kig3JlRbUGVdKSsoKDYzJlRbUGUrMV0pPDwxMikrNjQqKDYzJlRbUGUrMl0pKyg2MyZUW1BlKzNdKSxRZT00KSxEZTw2NTUzNnx8KGd0PTU1Mjk2KygoRGUtPTY1NTM2KT4+MTAm''@;'; put 'put ''MTAyMyksRGU9NTYzMjArKDEwMjMmRGUpLHllWyRlKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoZ3QpKSx5ZVskZSsrXT1TdHJpbmcuZnJvbUNoYXJDb2RlKERlKTticmVhaztjYXNlImFzY2lpIjppZihXJiZCdWZmZXIuaXNCdWZmZXIoVCkpcmV0dXJuIFQudG9TdHJpbmcodnQpO2ZvcihQZT0w''@;'; put 'put ''O1BlPEY7UGUrKyl5ZVtQZV09U3RyaW5nLmZyb21DaGFyQ29kZShUW1BlXSk7JGU9RjticmVhaztjYXNlInV0ZjE2bGUiOmlmKEY+PTImJjI1NT09VFswXSYmMjU0PT1UWzFdJiYoUGU9MiksVyYmQnVmZmVyLmlzQnVmZmVyKFQpKXJldHVybiBULnRvU3RyaW5nKHZ0KTtmb3IoUWU9MjtQZSsx''@;'; put 'put ''PEY7UGUrPVFlKXllWyRlKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoKFRbUGUrMV08PDgpK1RbUGVdKTticmVhaztjYXNlInV0ZjE2YmUiOmZvcihGPj0yJiYyNTQ9PVRbMF0mJjI1NT09VFsxXSYmKFBlPTIpLFFlPTI7UGUrMTxGO1BlKz1RZSl5ZVskZSsrXT1TdHJpbmcuZnJvbUNoYXJDb2Rl''@;'; put 'put ''KChUW1BlXTw8OCkrVFtQZSsxXSk7YnJlYWs7Y2FzZSJ1dGYzMmxlIjpmb3IoRj49NCYmMjU1PT1UWzBdJiYyNTQ9PVRbMV0mJjA9PT1UWzJdJiYwPT09VFszXSYmKFBlPTQpLFFlPTQ7UGU8RjtQZSs9UWUpKERlPShUW1BlKzNdPDwyNCkrKFRbUGUrMl08PDE2KSsoVFtQZSsxXTw8OCkrVFtQ''@;'; put 'put ''ZV0pPjY1NTM1PyhEZS09NjU1MzYseWVbJGUrK109U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NisoRGU+PjEwJjEwMjMpKSx5ZVskZSsrXT1TdHJpbmcuZnJvbUNoYXJDb2RlKDU2MzIwKygxMDIzJkRlKSkpOnllWyRlKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoRGUpO2JyZWFrO2Nhc2UidXRm''@;'; put 'put ''MzJiZSI6Zm9yKEY+PTQmJjI1NT09VFszXSYmMjU0PT1UWzJdJiYwPT09VFsxXSYmMD09PVRbMF0mJihQZT00KSxRZT00O1BlPEY7UGUrPVFlKShEZT0oVFtQZV08PDI0KSsoVFtQZSsxXTw8MTYpKyhUW1BlKzJdPDw4KStUW1BlKzNdKT42NTUzNT8oRGUtPTY1NTM2LHllWyRlKytdPVN0cmlu''@;'; put 'put ''Zy5mcm9tQ2hhckNvZGUoNTUyOTYrKERlPj4xMCYxMDIzKSkseWVbJGUrK109U3RyaW5nLmZyb21DaGFyQ29kZSg1NjMyMCsoMTAyMyZEZSkpKTp5ZVskZSsrXT1TdHJpbmcuZnJvbUNoYXJDb2RlKERlKTticmVhaztjYXNlInV0ZjciOmZvcihGPj00JiY0Mz09VFswXSYmNDc9PVRbMV0mJjEx''@;'; put 'put ''OD09VFsyXSYmKEY+PTUmJjU2PT1UWzNdJiY0NT09VFs0XT9QZT01Oig1Nj09VFszXXx8NTc9PVRbM118fDQzPT1UWzNdfHw0Nz09VFszXSkmJihQZT00KSk7UGU8RjtQZSs9UWUpaWYoNDM9PT1UW1BlXSlpZihRZT0xLDQ1IT09VFtQZSsxXSl7Zm9yKDtTdHJpbmcuZnJvbUNoYXJDb2RlKFRb''@;'; put 'put ''UGUrUWVdKS5tYXRjaCgvW0EtWmEtejAtOStcL10vKTspUWUrKzt2YXIgQXQ9MDs0NT09PVRbUGUrUWVdJiYoKytRZSxBdD0xKTtmb3IodmFyIGh0PVtdLEJ0PSIiLGV0PTAsbHQ9MCxMdD0wLEN0PTAsZnQ9MTtmdDxRZS1BdCYmKGV0PU1lLmluZGV4T2YoU3RyaW5nLmZyb21DaGFyQ29kZShU''@;'; put 'put ''W1BlK2Z0KytdKSksbHQ9TWUuaW5kZXhPZihTdHJpbmcuZnJvbUNoYXJDb2RlKFRbUGUrZnQrK10pKSxodC5wdXNoKGV0PDwyfGx0Pj40KSwtMSE9PShMdD1NZS5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUoVFtQZStmdCsrXSkpKSYmKGh0LnB1c2goKDE1Jmx0KTw8NHxMdD4+MiksLTEh''@;'; put 'put ''PT0oQ3Q9TWUuaW5kZXhPZihTdHJpbmcuZnJvbUNoYXJDb2RlKFRbUGUrZnQrK10pKSkpKTspQ3Q8NjQmJmh0LnB1c2goKDMmTHQpPDw2fEN0KTtmb3IoQnQ9UCgxMjAxLGh0KSxmdD0wO2Z0PEJ0Lmxlbmd0aDsrK2Z0KXllWyRlKytdPUJ0LmNoYXJBdChmdCl9ZWxzZSBRZT0yLHllWyRlKytd''@;'; put 'put ''PSIrIjtlbHNlIFFlPTEseWVbJGUrK109U3RyaW5nLmZyb21DaGFyQ29kZShUW1BlXSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIG1hZ2ljOiAiK1YrIiAiK21lW1ZdKX19cmV0dXJuIHllLnNsaWNlKDAsJGUpLmpvaW4oIiIpfSxlbmNvZGU6ZnVuY3Rpb24g''@;'; put 'put ''UChWLFQsUyl7aWYoVj09PXomJk8pcmV0dXJuIE8oVCxTKTtpZihyZVtWXSlyZXR1cm4oTz1yZVt6PVZdKShULFMpO1cmJkJ1ZmZlci5pc0J1ZmZlcihUKSYmKFQ9VC50b1N0cmluZygidXRmOCIpKTt2YXIgZ3QsRj1ULmxlbmd0aCx5ZT1XP0J1ZmZlci5hbGxvY1Vuc2FmZSg0KkYpOltdLENl''@;'; put 'put ''PTAsRGU9MCxQZT0wLFFlPTAsJGU9TFtWXSx3dD0iIixtdD0ic3RyaW5nIj09dHlwZW9mIFQ7aWYoJGUmJihndD0kZS5lbmMpKWZvcihEZT0wO0RlPEY7KytEZSwrK1BlKShDZT1ndFttdD9ULmNoYXJBdChEZSk6VFtEZV1dKT4yNTU/KHllW1BlXT1DZT4+OCx5ZVsrK1BlXT0yNTUmQ2UpOnll''@;'; put 'put ''W1BlXT0yNTUmQ2U7ZWxzZXtpZighKHd0PW1lW1ZdKSl0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBDUDogIitWKTtzd2l0Y2god3Qpe2Nhc2UidXRmOCI6aWYoVyYmbXQpe1BlPSh5ZT1OKFQsd3QpKS5sZW5ndGg7YnJlYWt9Zm9yKERlPTA7RGU8RjsrK0RlLCsrUGUpKENlPW10P1Qu''@;'; put 'put ''Y2hhckNvZGVBdChEZSk6VFtEZV0uY2hhckNvZGVBdCgwKSk8PTEyNz95ZVtQZV09Q2U6Q2U8PTIwNDc/KHllW1BlXT0xOTIrKENlPj42KSx5ZVsrK1BlXT0xMjgrKDYzJkNlKSk6Q2U+PTU1Mjk2JiZDZTw9NTczNDM/KENlLT01NTI5NixRZT0obXQ/VC5jaGFyQ29kZUF0KCsrRGUpOlRbKytE''@;'; put 'put ''ZV0uY2hhckNvZGVBdCgwKSktNTYzMjArKENlPDwxMCkseWVbUGVdPTI0MCsoUWU+Pj4xOCY3KSx5ZVsrK1BlXT0xNDQrKFFlPj4+MTImNjMpLHllWysrUGVdPTEyOCsoUWU+Pj42JjYzKSx5ZVsrK1BlXT0xMjgrKDYzJlFlKSk6KHllW1BlXT0yMjQrKENlPj4xMikseWVbKytQZV09MTI4KyhD''@;'; put 'put ''ZT4+NiY2MykseWVbKytQZV09MTI4Kyg2MyZDZSkpO2JyZWFrO2Nhc2UiYXNjaWkiOmlmKFcmJiJzdHJpbmciPT10eXBlb2YgVCl7UGU9KHllPU4oVCx3dCkpLmxlbmd0aDticmVha31mb3IoRGU9MDtEZTxGOysrRGUsKytQZSl7aWYoISgoQ2U9bXQ/VC5jaGFyQ29kZUF0KERlKTpUW0RlXS5j''@;'; put 'put ''aGFyQ29kZUF0KDApKTw9MTI3KSl0aHJvdyBuZXcgRXJyb3IoImJhZCBhc2NpaSAiK0NlKTt5ZVtQZV09Q2V9YnJlYWs7Y2FzZSJ1dGYxNmxlIjppZihXJiYic3RyaW5nIj09dHlwZW9mIFQpe1BlPSh5ZT1OKFQsd3QpKS5sZW5ndGg7YnJlYWt9Zm9yKERlPTA7RGU8RjsrK0RlKUNlPW10P1Qu''@;'; put 'put ''Y2hhckNvZGVBdChEZSk6VFtEZV0uY2hhckNvZGVBdCgwKSx5ZVtQZSsrXT0yNTUmQ2UseWVbUGUrK109Q2U+Pjg7YnJlYWs7Y2FzZSJ1dGYxNmJlIjpmb3IoRGU9MDtEZTxGOysrRGUpQ2U9bXQ/VC5jaGFyQ29kZUF0KERlKTpUW0RlXS5jaGFyQ29kZUF0KDApLHllW1BlKytdPUNlPj44LHll''@;'; put 'put ''W1BlKytdPTI1NSZDZTticmVhaztjYXNlInV0ZjMybGUiOmZvcihEZT0wO0RlPEY7KytEZSkoQ2U9bXQ/VC5jaGFyQ29kZUF0KERlKTpUW0RlXS5jaGFyQ29kZUF0KDApKT49NTUyOTYmJkNlPD01NzM0MyYmKENlPTY1NTM2KyhDZS01NTI5Njw8MTApKyhUWysrRGVdLmNoYXJDb2RlQXQoMCkt''@;'; put 'put ''NTYzMjApKSx5ZVtQZSsrXT0yNTUmQ2UseWVbUGUrK109MjU1JihDZT4+PTgpLHllW1BlKytdPTI1NSYoQ2U+Pj04KSx5ZVtQZSsrXT0yNTUmKENlPj49OCk7YnJlYWs7Y2FzZSJ1dGYzMmJlIjpmb3IoRGU9MDtEZTxGOysrRGUpKENlPW10P1QuY2hhckNvZGVBdChEZSk6VFtEZV0uY2hhckNv''@;'; put 'put ''ZGVBdCgwKSk+PTU1Mjk2JiZDZTw9NTczNDMmJihDZT02NTUzNisoQ2UtNTUyOTY8PDEwKSsoVFsrK0RlXS5jaGFyQ29kZUF0KDApLTU2MzIwKSkseWVbUGUrM109MjU1JkNlLHllW1BlKzJdPTI1NSYoQ2U+Pj04KSx5ZVtQZSsxXT0yNTUmKENlPj49OCkseWVbUGVdPTI1NSYoQ2U+Pj04KSxQ''@;'; put 'put ''ZSs9NDticmVhaztjYXNlInV0ZjciOmZvcihEZT0wO0RlPEY7RGUrKyl7dmFyIHZ0PW10P1QuY2hhckF0KERlKTpUW0RlXS5jaGFyQXQoMCk7aWYoIisiIT09dnQpaWYoIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JygpLC0u''@;'; put 'put ''Lzo/Ii5pbmRleE9mKHZ0KT4tMSl5ZVtQZSsrXT12dC5jaGFyQ29kZUF0KDApO2Vsc2V7dmFyIEF0PVAoMTIwMSx2dCk7eWVbUGUrK109NDMseWVbUGUrK109TWUuY2hhckNvZGVBdChBdFswXT4+MikseWVbUGUrK109TWUuY2hhckNvZGVBdCgoKDMmQXRbMF0pPDw0KSsoKEF0WzFdfHwwKT4+''@;'; put 'put ''NCkpLHllW1BlKytdPU1lLmNoYXJDb2RlQXQoKCgxNSZBdFsxXSk8PDIpKygoQXRbMl18fDApPj42KSkseWVbUGUrK109NDV9ZWxzZSB5ZVtQZSsrXT00Myx5ZVtQZSsrXT00NX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgbWFnaWM6ICIrVisiICIrbWVbVl0p''@;'; put 'put ''fX1yZXR1cm4geWU9eWUuc2xpY2UoMCxQZSksVz9TJiYiYnVmIiE9PVM/ImFyciIhPT1TP3llLnRvU3RyaW5nKCJiaW5hcnkiKTpbXS5zbGljZS5jYWxsKHllKTp5ZToic3RyIj09Uz95ZS5tYXAoYWUpLmpvaW4oIiIpOnllfSxoYXNjcDpmdW5jdGlvbihWKXtyZXR1cm4hKCFMW1ZdJiYhbWVb''@;'; put 'put ''Vl0pfSxtYWdpYzptZSxjYWNoZTpUZX0sTH0pfSw2OTk2MzooWGUsSmUpPT57dmFyIEwsbWUsQjshZnVuY3Rpb24oRSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBET19OT1RfRVhQT1JUX0pTWklQKVhlLmV4cG9ydHM9RSgpO2Vsc2UgaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBET19OT1RfRVhQ''@;'; put 'put ''T1JUX0pTWklQKUpTWmlwU3luYz1FKCksbWU9W10sdm9pZCAwIT09KEI9ImZ1bmN0aW9uIj09dHlwZW9mKEw9RSk/TC5hcHBseShKZSxtZSk6TCkmJihYZS5leHBvcnRzPUIpO2Vsc2V7dmFyIEVlOyJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9FZT1nbG9iYWxUaGlzOiJ1bmRlZmlu''@;'; put 'put ''ZWQiIT10eXBlb2Ygd2luZG93P0VlPXdpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9FZT1nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiAkJiYkLmdsb2JhbD9FZT0kLmdsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJihFZT1zZWxmKSxFZS5KU1ppcFN5bmM9RSgpfX0o''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gUShqLHJlLGFlKXtmdW5jdGlvbiBZKHRlLEspe2lmKCFyZVt0ZV0pe2lmKCFqW3RlXSl7aWYoVylyZXR1cm4gVyh0ZSwhMCk7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrdGUrIiciKX12YXIgc2U9cmVbdGVdPXtleHBv''@;'; put 'put ''cnRzOnt9fTtqW3RlXVswXS5jYWxsKHNlLmV4cG9ydHMsZnVuY3Rpb24ob2Upe3JldHVybiBZKGpbdGVdWzFdW29lXXx8b2UpfSxzZSxzZS5leHBvcnRzLFEsaixyZSxhZSl9cmV0dXJuIHJlW3RlXS5leHBvcnRzfWZvcih2YXIgVz12b2lkIDAsTj0wO048YWUubGVuZ3RoO04rKylZKGFlW05d''@;'; put 'put ''KTtyZXR1cm4gWX0oezE6W2Z1bmN0aW9uKFEsaixyZSl7InVzZSBzdHJpY3QiO3ZhciBhZT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0iO3JlLmVuY29kZT1mdW5jdGlvbihZLFcpe2Zvcih2YXIgdGUsSyxKLHNlLG9l''@;'; put 'put ''LGNlLGRlLE49IiIsdmU9MDt2ZTxZLmxlbmd0aDspc2U9KHRlPVkuY2hhckNvZGVBdCh2ZSsrKSk+PjIsb2U9KDMmdGUpPDw0fChLPVkuY2hhckNvZGVBdCh2ZSsrKSk+PjQsY2U9KDE1JkspPDwyfChKPVkuY2hhckNvZGVBdCh2ZSsrKSk+PjYsZGU9NjMmSixpc05hTihLKT9jZT1kZT02NDpp''@;'; put 'put ''c05hTihKKSYmKGRlPTY0KSxOPU4rYWUuY2hhckF0KHNlKSthZS5jaGFyQXQob2UpK2FlLmNoYXJBdChjZSkrYWUuY2hhckF0KGRlKTtyZXR1cm4gTn0scmUuZGVjb2RlPWZ1bmN0aW9uKFksVyl7dmFyIEssSixzZSxvZSxjZSxkZSxOPSIiLHZlPTA7Zm9yKFk9WS5yZXBsYWNlKC9bXkEtWmEt''@;'; put 'put ''ejAtOVwrXC9cPV0vZywiIik7dmU8WS5sZW5ndGg7KXNlPWFlLmluZGV4T2YoWS5jaGFyQXQodmUrKykpLEs9KDE1JihvZT1hZS5pbmRleE9mKFkuY2hhckF0KHZlKyspKSkpPDw0fChjZT1hZS5pbmRleE9mKFkuY2hhckF0KHZlKyspKSk+PjIsSj0oMyZjZSk8PDZ8KGRlPWFlLmluZGV4T2Yo''@;'; put 'put ''WS5jaGFyQXQodmUrKykpKSxOKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHNlPDwyfG9lPj40KSw2NCE9Y2UmJihOKz1TdHJpbmcuZnJvbUNoYXJDb2RlKEspKSw2NCE9ZGUmJihOKz1TdHJpbmcuZnJvbUNoYXJDb2RlKEopKTtyZXR1cm4gTn19LHt9XSwyOltmdW5jdGlvbihRLGoscmUpeyJ1c2Ug''@;'; put 'put ''c3RyaWN0IjtmdW5jdGlvbiBhZSgpe3RoaXMuY29tcHJlc3NlZFNpemU9MCx0aGlzLnVuY29tcHJlc3NlZFNpemU9MCx0aGlzLmNyYzMyPTAsdGhpcy5jb21wcmVzc2lvbk1ldGhvZD1udWxsLHRoaXMuY29tcHJlc3NlZENvbnRlbnQ9bnVsbH1hZS5wcm90b3R5cGU9e2dldENvbnRlbnQ6ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gbnVsbH0sZ2V0Q29tcHJlc3NlZENvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19LGouZXhwb3J0cz1hZX0se31dLDM6W2Z1bmN0aW9uKFEsaixyZSl7InVzZSBzdHJpY3QiO3JlLlNUT1JFPXttYWdpYzoiXDBcMCIsY29tcHJlc3M6ZnVuY3Rpb24oYWUpe3Jl''@;'; put 'put ''dHVybiBhZX0sdW5jb21wcmVzczpmdW5jdGlvbihhZSl7cmV0dXJuIGFlfSxjb21wcmVzc0lucHV0VHlwZTpudWxsLHVuY29tcHJlc3NJbnB1dFR5cGU6bnVsbH0scmUuREVGTEFURT1RKCIuL2ZsYXRlIil9LHsiLi9mbGF0ZSI6OH1dLDQ6W2Z1bmN0aW9uKFEsaixyZSl7InVzZSBzdHJpY3Qi''@;'; put 'put ''O3ZhciBhZT1RKCIuL3V0aWxzIiksWT1bMCwxOTk2OTU5ODk0LDM5OTM5MTk3ODgsMjU2NzUyNDc5NCwxMjQ2MzQxMzcsMTg4NjA1NzYxNSwzOTE1NjIxNjg1LDI2NTczOTIwMzUsMjQ5MjY4Mjc0LDIwNDQ1MDgzMjQsMzc3MjExNTIzMCwyNTQ3MTc3ODY0LDE2Mjk0MTk5NSwyMTI1NTYxMDIx''@;'; put 'put ''LDM4ODc2MDcwNDcsMjQyODQ0NDA0OSw0OTg1MzY1NDgsMTc4OTkyNzY2Niw0MDg5MDE2NjQ4LDIyMjcwNjEyMTQsNDUwNTQ4ODYxLDE4NDMyNTg2MDMsNDEwNzU4MDc1MywyMjExNjc3NjM5LDMyNTg4Mzk5MCwxNjg0Nzc3MTUyLDQyNTExMjIwNDIsMjMyMTkyNjYzNiwzMzU2MzM0ODcsMTY2''@;'; put 'put ''MTM2NTQ2NSw0MTk1MzAyNzU1LDIzNjYxMTUzMTcsOTk3MDczMDk2LDEyODE5NTM4ODYsMzU3OTg1NTMzMiwyNzI0Njg4MjQyLDEwMDY4ODgxNDUsMTI1ODYwNzY4NywzNTI0MTAxNjI5LDI3Njg5NDI0NDMsOTAxMDk3NzIyLDExMTkwMDA2ODQsMzY4NjUxNzIwNiwyODk4MDY1NzI4LDg1MzA0''@;'; put 'put ''NDQ1MSwxMTcyMjY2MTAxLDM3MDUwMTU3NTksMjg4MjYxNjY2NSw2NTE3Njc5ODAsMTM3MzUwMzU0NiwzMzY5NTU0MzA0LDMyMTgxMDQ1OTgsNTY1NTA3MjUzLDE0NTQ2MjE3MzEsMzQ4NTExMTcwNSwzMDk5NDM2MzAzLDY3MTI2Njk3NCwxNTk0MTk4MDI0LDMzMjI3MzA5MzAsMjk3MDM0Nzgx''@;'; put 'put ''Miw3OTU4MzU1MjcsMTQ4MzIzMDIyNSwzMjQ0MzY3Mjc1LDMwNjAxNDk1NjUsMTk5NDE0NjE5MiwzMTE1ODUzNCwyNTYzOTA3NzcyLDQwMjM3MTc5MzAsMTkwNzQ1OTQ2NSwxMTI2MzcyMTUsMjY4MDE1MzI1MywzOTA0NDI3MDU5LDIwMTM3NzYyOTAsMjUxNzIyMDM2LDI1MTcyMTUzNzQsMzc3''@;'; put 'put ''NTgzMDA0MCwyMTM3NjU2NzYzLDE0MTM3NjgxMywyNDM5Mjc3NzE5LDM4NjUyNzEyOTcsMTgwMjE5NTQ0NCw0NzY4NjQ4NjYsMjIzODAwMTM2OCw0MDY2NTA4ODc4LDE4MTIzNzA5MjUsNDUzMDkyNzMxLDIxODE2MjUwMjUsNDExMTQ1MTIyMywxNzA2MDg4OTAyLDMxNDA0MjcwNCwyMzQ0NTMy''@;'; put 'put ''MjAyLDQyNDAwMTc1MzIsMTY1ODY1ODI3MSwzNjY2MTk5NzcsMjM2MjY3MDMyMyw0MjI0OTk0NDA1LDEzMDM1MzU5NjAsOTg0OTYxNDg2LDI3NDcwMDcwOTIsMzU2OTAzNzUzOCwxMjU2MTcwODE3LDEwMzc2MDQzMTEsMjc2NTIxMDczMywzNTU0MDc5OTk1LDExMzEwMTQ1MDYsODc5Njc5OTk2''@;'; put 'put ''LDI5MDkyNDM0NjIsMzY2Mzc3MTg1NiwxMTQxMTI0NDY3LDg1NTg0MjI3NywyODUyODAxNjMxLDM3MDg2NDg2NDksMTM0MjUzMzk0OCw2NTQ0NTkzMDYsMzE4ODM5NjA0OCwzMzczMDE1MTc0LDE0NjY0Nzk5MDksNTQ0MTc5NjM1LDMxMTA1MjM5MTMsMzQ2MjUyMjAxNSwxNTkxNjcxMDU0LDcw''@;'; put 'put ''MjEzODc3NiwyOTY2NDYwNDUwLDMzNTI3OTk0MTIsMTUwNDkxODgwNyw3ODM1NTE4NzMsMzA4MjY0MDQ0MywzMjMzNDQyOTg5LDM5ODgyOTIzODQsMjU5NjI1NDY0Niw2MjMxNzA2OCwxOTU3ODEwODQyLDM5Mzk4NDU5NDUsMjY0NzgxNjExMSw4MTQ3MDk5NywxOTQzODAzNTIzLDM4MTQ5MTg5''@;'; put 'put ''MzAsMjQ4OTU5NjgwNCwyMjUyNzQ0MzAsMjA1Mzc5MDM3NiwzODI2MTc1NzU1LDI0NjY5MDYwMTMsMTY3ODE2NzQzLDIwOTc2NTEzNzcsNDAyNzU1MjU4MCwyMjY1NDkwMzg2LDUwMzQ0NDA3MiwxNzYyMDUwODE0LDQxNTA0MTcyNDUsMjE1NDEyOTM1NSw0MjY1MjIyMjUsMTg1MjUwNzg3OSw0''@;'; put 'put ''Mjc1MzEzNTI2LDIzMTIzMTc5MjAsMjgyNzUzNjI2LDE3NDI1NTU4NTIsNDE4OTcwODE0MywyMzk0ODc3OTQ1LDM5NzkxNzc2MywxNjIyMTgzNjM3LDM2MDQzOTA4ODgsMjcxNDg2NjU1OCw5NTM3Mjk3MzIsMTM0MDA3NjYyNiwzNTE4NzE5OTg1LDI3OTczNjA5OTksMTA2ODgyODM4MSwxMjE5''@;'; put 'put ''NjM4ODU5LDM2MjQ3NDE4NTAsMjkzNjY3NTE0OCw5MDYxODU0NjIsMTA5MDgxMjUxMiwzNzQ3NjcyMDAzLDI4MjUzNzk2NjksODI5MzI5MTM1LDExODEzMzUxNjEsMzQxMjE3NzgwNCwzMTYwODM0ODQyLDYyODA4NTQwOCwxMzgyNjA1MzY2LDM0MjMzNjkxMDksMzEzODA3ODQ2Nyw1NzA1NjIy''@;'; put 'put ''MzMsMTQyNjQwMDgxNSwzMzE3MzE2NTQyLDI5OTg3MzM2MDgsNzMzMjM5OTU0LDE1NTUyNjE5NTYsMzI2ODkzNTU5MSwzMDUwMzYwNjI1LDc1MjQ1OTQwMywxNTQxMzIwMjIxLDI2MDcwNzE5MjAsMzk2NTk3MzAzMCwxOTY5OTIyOTcyLDQwNzM1NDk4LDI2MTc4MzcyMjUsMzk0MzU3NzE1MSwx''@;'; put 'put ''OTEzMDg3ODc3LDgzOTA4MzcxLDI1MTIzNDE2MzQsMzgwMzc0MDY5MiwyMDc1MjA4NjIyLDIxMzI2MTExMiwyNDYzMjcyNjAzLDM4NTU5OTAyODUsMjA5NDg1NDA3MSwxOTg5NTg4ODEsMjI2MjAyOTAxMiw0MDU3MjYwNjEwLDE3NTkzNTk5OTIsNTM0NDE0MTkwLDIxNzY3MTg1NDEsNDEzOTMy''@;'; put 'put ''OTExNSwxODczODM2MDAxLDQxNDY2NDU2NywyMjgyMjQ4OTM0LDQyNzkyMDAzNjgsMTcxMTY4NDU1NCwyODUyODExMTYsMjQwNTgwMTcyNyw0MTY3MjE2NzQ1LDE2MzQ0Njc3OTUsMzc2MjI5NzAxLDI2ODUwNjc4OTYsMzYwODAwNzQwNiwxMzA4OTE4NjEyLDk1NjU0MzkzOCwyODA4NTU1MTA1''@;'; put 'put ''LDM0OTU5NTgyNjMsMTIzMTYzNjMwMSwxMDQ3NDI3MDM1LDI5MzI5NTk4MTgsMzY1NDcwMzgzNiwxMDg4MzU5MjcwLDkzNjkxOGUzLDI4NDc3MTQ4OTksMzczNjgzNzgyOSwxMjAyOTAwODYzLDgxNzIzMzg5NywzMTgzMzQyMTA4LDM0MDEyMzcxMzAsMTQwNDI3NzU1Miw2MTU4MTgxNTAsMzEz''@;'; put 'put ''NDIwNzQ5MywzNDUzNDIxMjAzLDE0MjM4NTc0NDksNjAxNDUwNDMxLDMwMDk4Mzc2MTQsMzI5NDcxMDQ1NiwxNTY3MTAzNzQ2LDcxMTkyODcyNCwzMDIwNjY4NDcxLDMyNzIzODAwNjUsMTUxMDMzNDIzNSw3NTUxNjcxMTddO2ouZXhwb3J0cz1mdW5jdGlvbihOLHRlKXtpZih2b2lkIDA9PT1O''@;'; put 'put ''fHwhTi5sZW5ndGgpcmV0dXJuIDA7dmFyIEs9InN0cmluZyIhPT1hZS5nZXRUeXBlT2YoTik7dm9pZCAwPT09dGUmJih0ZT0wKTt2YXIgb2U9MDt0ZV49LTE7Zm9yKHZhciBjZT0wLGRlPU4ubGVuZ3RoO2NlPGRlO2NlKyspb2U9Sz9OW2NlXTpOLmNoYXJDb2RlQXQoY2UpLHRlPXRlPj4+OF5Z''@;'; put 'put ''WzI1NSYodGVeb2UpXTtyZXR1cm4tMV50ZX19LHsiLi91dGlscyI6MjF9XSw1OltmdW5jdGlvbihRLGoscmUpeyJ1c2Ugc3RyaWN0Ijt2YXIgYWU9USgiLi91dGlscyIpO2Z1bmN0aW9uIFkoVyl7dGhpcy5kYXRhPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLmluZGV4PTB9WS5wcm90b3R5cGU9''@;'; put 'put ''e2NoZWNrT2Zmc2V0OmZ1bmN0aW9uKFcpe3RoaXMuY2hlY2tJbmRleCh0aGlzLmluZGV4K1cpfSxjaGVja0luZGV4OmZ1bmN0aW9uKFcpe2lmKHRoaXMubGVuZ3RoPFd8fFc8MCl0aHJvdyBuZXcgRXJyb3IoIkVuZCBvZiBkYXRhIHJlYWNoZWQgKGRhdGEgbGVuZ3RoID0gIit0aGlzLmxlbmd0''@;'; put 'put ''aCsiLCBhc2tlZCBpbmRleCA9ICIrVysiKS4gQ29ycnVwdGVkIHppcCA/Iil9LHNldEluZGV4OmZ1bmN0aW9uKFcpe3RoaXMuY2hlY2tJbmRleChXKSx0aGlzLmluZGV4PVd9LHNraXA6ZnVuY3Rpb24oVyl7dGhpcy5zZXRJbmRleCh0aGlzLmluZGV4K1cpfSxieXRlQXQ6ZnVuY3Rpb24oVyl7''@;'; put 'put ''fSxyZWFkSW50OmZ1bmN0aW9uKFcpe3ZhciB0ZSxOPTA7Zm9yKHRoaXMuY2hlY2tPZmZzZXQoVyksdGU9dGhpcy5pbmRleCtXLTE7dGU+PXRoaXMuaW5kZXg7dGUtLSlOPShOPDw4KSt0aGlzLmJ5dGVBdCh0ZSk7cmV0dXJuIHRoaXMuaW5kZXgrPVcsTn0scmVhZFN0cmluZzpmdW5jdGlvbihX''@;'; put 'put ''KXtyZXR1cm4gYWUudHJhbnNmb3JtVG8oInN0cmluZyIsdGhpcy5yZWFkRGF0YShXKSl9LHJlYWREYXRhOmZ1bmN0aW9uKFcpe30sbGFzdEluZGV4T2ZTaWduYXR1cmU6ZnVuY3Rpb24oVyl7fSxyZWFkRGF0ZTpmdW5jdGlvbigpe3ZhciBXPXRoaXMucmVhZEludCg0KTtyZXR1cm4gbmV3IERh''@;'; put 'put ''dGUoMTk4MCsoVz4+MjUmMTI3KSwoVz4+MjEmMTUpLTEsVz4+MTYmMzEsVz4+MTEmMzEsVz4+NSY2MywoMzEmVyk8PDEpfX0sai5leHBvcnRzPVl9LHsiLi91dGlscyI6MjF9XSw2OltmdW5jdGlvbihRLGoscmUpeyJ1c2Ugc3RyaWN0IjtyZS5iYXNlNjQ9ITEscmUuYmluYXJ5PSExLHJlLmRp''@;'; put 'put ''cj0hMSxyZS5jcmVhdGVGb2xkZXJzPSExLHJlLmRhdGU9bnVsbCxyZS5jb21wcmVzc2lvbj1udWxsLHJlLmNvbW1lbnQ9bnVsbH0se31dLDc6W2Z1bmN0aW9uKFEsaixyZSl7InVzZSBzdHJpY3QiO3ZhciBhZT1RKCIuL3V0aWxzIik7cmUuc3RyaW5nMmJpbmFyeT1mdW5jdGlvbihZKXtyZXR1''@;'; put 'put ''cm4gYWUuc3RyaW5nMmJpbmFyeShZKX0scmUuc3RyaW5nMlVpbnQ4QXJyYXk9ZnVuY3Rpb24oWSl7cmV0dXJuIGFlLnRyYW5zZm9ybVRvKCJ1aW50OGFycmF5IixZKX0scmUudWludDhBcnJheTJTdHJpbmc9ZnVuY3Rpb24oWSl7cmV0dXJuIGFlLnRyYW5zZm9ybVRvKCJzdHJpbmciLFkpfSxy''@;'; put 'put ''ZS5zdHJpbmcyQmxvYj1mdW5jdGlvbihZKXt2YXIgVz1hZS50cmFuc2Zvcm1UbygiYXJyYXlidWZmZXIiLFkpO3JldHVybiBhZS5hcnJheUJ1ZmZlcjJCbG9iKFcpfSxyZS5hcnJheUJ1ZmZlcjJCbG9iPWZ1bmN0aW9uKFkpe3JldHVybiBhZS5hcnJheUJ1ZmZlcjJCbG9iKFkpfSxyZS50cmFu''@;'; put 'put ''c2Zvcm1Ubz1mdW5jdGlvbihZLFcpe3JldHVybiBhZS50cmFuc2Zvcm1UbyhZLFcpfSxyZS5nZXRUeXBlT2Y9ZnVuY3Rpb24oWSl7cmV0dXJuIGFlLmdldFR5cGVPZihZKX0scmUuY2hlY2tTdXBwb3J0PWZ1bmN0aW9uKFkpe3JldHVybiBhZS5jaGVja1N1cHBvcnQoWSl9LHJlLk1BWF9WQUxV''@;'; put 'put ''RV8xNkJJVFM9YWUuTUFYX1ZBTFVFXzE2QklUUyxyZS5NQVhfVkFMVUVfMzJCSVRTPWFlLk1BWF9WQUxVRV8zMkJJVFMscmUucHJldHR5PWZ1bmN0aW9uKFkpe3JldHVybiBhZS5wcmV0dHkoWSl9LHJlLmZpbmRDb21wcmVzc2lvbj1mdW5jdGlvbihZKXtyZXR1cm4gYWUuZmluZENvbXByZXNz''@;'; put 'put ''aW9uKFkpfSxyZS5pc1JlZ0V4cD1mdW5jdGlvbihZKXtyZXR1cm4gYWUuaXNSZWdFeHAoWSl9fSx7Ii4vdXRpbHMiOjIxfV0sODpbZnVuY3Rpb24oUSxqLHJlKXsidXNlIHN0cmljdCI7dmFyIGFlPSJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhBcnJheSYmInVuZGVmaW5lZCIhPXR5cGVvZiBV''@;'; put 'put ''aW50MTZBcnJheSYmInVuZGVmaW5lZCIhPXR5cGVvZiBVaW50MzJBcnJheSxZPVEoInBha28iKTtyZS51bmNvbXByZXNzSW5wdXRUeXBlPWFlPyJ1aW50OGFycmF5IjoiYXJyYXkiLHJlLmNvbXByZXNzSW5wdXRUeXBlPWFlPyJ1aW50OGFycmF5IjoiYXJyYXkiLHJlLm1hZ2ljPSJcYlwwIixy''@;'; put 'put ''ZS5jb21wcmVzcz1mdW5jdGlvbihXKXtyZXR1cm4gWS5kZWZsYXRlUmF3KFcpfSxyZS51bmNvbXByZXNzPWZ1bmN0aW9uKFcpe3JldHVybiBZLmluZmxhdGVSYXcoVyl9fSx7cGFrbzoyNH1dLDk6W2Z1bmN0aW9uKFEsaixyZSl7InVzZSBzdHJpY3QiO3ZhciBhZT1RKCIuL2Jhc2U2NCIpO2Z1''@;'; put 'put ''bmN0aW9uIFkoVyxOKXtpZighKHRoaXMgaW5zdGFuY2VvZiBZKSlyZXR1cm4gbmV3IFkoVyxOKTt0aGlzLmZpbGVzPXt9LHRoaXMuY29tbWVudD1udWxsLHRoaXMucm9vdD0iIixXJiZ0aGlzLmxvYWQoVyxOKSx0aGlzLmNsb25lPWZ1bmN0aW9uKCl7dmFyIHRlPW5ldyBZO2Zvcih2YXIgSyBp''@;'; put 'put ''biB0aGlzKSJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzW0tdJiYodGVbS109dGhpc1tLXSk7cmV0dXJuIHRlfX0oWS5wcm90b3R5cGU9USgiLi9vYmplY3QiKSkubG9hZD1RKCIuL2xvYWQiKSxZLnN1cHBvcnQ9USgiLi9zdXBwb3J0IiksWS5kZWZhdWx0cz1RKCIuL2RlZmF1bHRzIiksWS51dGls''@;'; put 'put ''cz1RKCIuL2RlcHJlY2F0ZWRQdWJsaWNVdGlscyIpLFkuYmFzZTY0PXtlbmNvZGU6ZnVuY3Rpb24oVyl7cmV0dXJuIGFlLmVuY29kZShXKX0sZGVjb2RlOmZ1bmN0aW9uKFcpe3JldHVybiBhZS5kZWNvZGUoVyl9fSxZLmNvbXByZXNzaW9ucz1RKCIuL2NvbXByZXNzaW9ucyIpLGouZXhwb3J0''@;'; put 'put ''cz1ZfSx7Ii4vYmFzZTY0IjoxLCIuL2NvbXByZXNzaW9ucyI6MywiLi9kZWZhdWx0cyI6NiwiLi9kZXByZWNhdGVkUHVibGljVXRpbHMiOjcsIi4vbG9hZCI6MTAsIi4vb2JqZWN0IjoxMywiLi9zdXBwb3J0IjoxN31dLDEwOltmdW5jdGlvbihRLGoscmUpeyJ1c2Ugc3RyaWN0Ijt2YXIgYWU9''@;'; put 'put ''USgiLi9iYXNlNjQiKSxZPVEoIi4vemlwRW50cmllcyIpO2ouZXhwb3J0cz1mdW5jdGlvbihXLE4pe3ZhciB0ZSxLLEosc2U7Zm9yKChOPU58fHt9KS5iYXNlNjQmJihXPWFlLmRlY29kZShXKSksdGU9KEs9bmV3IFkoVyxOKSkuZmlsZXMsSj0wO0o8dGUubGVuZ3RoO0orKyl0aGlzLmZpbGUo''@;'; put 'put ''KHNlPXRlW0pdKS5maWxlTmFtZSxzZS5kZWNvbXByZXNzZWQse2JpbmFyeTohMCxvcHRpbWl6ZWRCaW5hcnlTdHJpbmc6ITAsZGF0ZTpzZS5kYXRlLGRpcjpzZS5kaXIsY29tbWVudDpzZS5maWxlQ29tbWVudC5sZW5ndGg/c2UuZmlsZUNvbW1lbnQ6bnVsbCxjcmVhdGVGb2xkZXJzOk4uY3Jl''@;'; put 'put ''YXRlRm9sZGVyc30pO3JldHVybiBLLnppcENvbW1lbnQubGVuZ3RoJiYodGhpcy5jb21tZW50PUsuemlwQ29tbWVudCksdGhpc319LHsiLi9iYXNlNjQiOjEsIi4vemlwRW50cmllcyI6MjJ9XSwxMTpbZnVuY3Rpb24oUSxqLHJlKXsoZnVuY3Rpb24oYWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgWT1m''@;'; put 'put ''dW5jdGlvbigpe307aWYodm9pZCAwIT09YWUpe3ZhciBXPSFhZS5mcm9tO2lmKCFXKXRyeXthZS5mcm9tKCJmb28iLCJ1dGY4Iil9Y2F0Y2goTil7Vz0hMH1ZPVc/ZnVuY3Rpb24oTix0ZSl7cmV0dXJuIHRlP25ldyBhZShOLHRlKTpuZXcgYWUoTil9OmFlLmZyb20uYmluZChhZSksYWUuYWxs''@;'; put 'put ''b2N8fChhZS5hbGxvYz1mdW5jdGlvbihOKXtyZXR1cm4gbmV3IGFlKE4pfSl9ai5leHBvcnRzPWZ1bmN0aW9uKE4sdGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgTj9hZS5hbGxvYyhOKTpZKE4sdGUpfSxqLmV4cG9ydHMudGVzdD1mdW5jdGlvbihOKXtyZXR1cm4gYWUuaXNCdWZmZXIoTil9''@;'; put 'put ''fSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgQnVmZmVyP0J1ZmZlcjp2b2lkIDApfSx7fV0sMTI6W2Z1bmN0aW9uKFEsaixyZSl7InVzZSBzdHJpY3QiO3ZhciBhZT1RKCIuL3VpbnQ4QXJyYXlSZWFkZXIiKTtmdW5jdGlvbiBZKFcpe3RoaXMuZGF0YT1XLHRoaXMubGVuZ3RoPXRo''@;'; put 'put ''aXMuZGF0YS5sZW5ndGgsdGhpcy5pbmRleD0wfShZLnByb3RvdHlwZT1uZXcgYWUpLnJlYWREYXRhPWZ1bmN0aW9uKFcpe3RoaXMuY2hlY2tPZmZzZXQoVyk7dmFyIE49dGhpcy5kYXRhLnNsaWNlKHRoaXMuaW5kZXgsdGhpcy5pbmRleCtXKTtyZXR1cm4gdGhpcy5pbmRleCs9VyxOfSxqLmV4''@;'; put 'put ''cG9ydHM9WX0seyIuL3VpbnQ4QXJyYXlSZWFkZXIiOjE4fV0sMTM6W2Z1bmN0aW9uKFEsaixyZSl7InVzZSBzdHJpY3QiO3ZhciBhZT1RKCIuL3N1cHBvcnQiKSxZPVEoIi4vdXRpbHMiKSxXPVEoIi4vY3JjMzIiKSxOPVEoIi4vc2lnbmF0dXJlIiksdGU9USgiLi9kZWZhdWx0cyIpLEs9USgi''@;'; put 'put ''Li9iYXNlNjQiKSxKPVEoIi4vY29tcHJlc3Npb25zIiksc2U9USgiLi9jb21wcmVzc2VkT2JqZWN0Iiksb2U9USgiLi9ub2RlQnVmZmVyIiksY2U9USgiLi91dGY4IiksZGU9USgiLi9zdHJpbmdXcml0ZXIiKSx2ZT1RKCIuL3VpbnQ4QXJyYXlXcml0ZXIiKSxBZT1mdW5jdGlvbihWKXtpZihW''@;'; put 'put ''Ll9kYXRhIGluc3RhbmNlb2Ygc2UmJihWLl9kYXRhPVYuX2RhdGEuZ2V0Q29udGVudCgpLFYub3B0aW9ucy5iaW5hcnk9ITAsVi5vcHRpb25zLmJhc2U2ND0hMSwidWludDhhcnJheSI9PT1ZLmdldFR5cGVPZihWLl9kYXRhKSkpe3ZhciBUPVYuX2RhdGE7Vi5fZGF0YT1uZXcgVWludDhBcnJh''@;'; put 'put ''eShULmxlbmd0aCksMCE9PVQubGVuZ3RoJiZWLl9kYXRhLnNldChULDApfXJldHVybiBWLl9kYXRhfSxrZT1mdW5jdGlvbihWKXt2YXIgVD1BZShWKTtyZXR1cm4ic3RyaW5nIj09PVkuZ2V0VHlwZU9mKFQpPyFWLm9wdGlvbnMuYmluYXJ5JiZhZS5ub2RlYnVmZmVyP29lKFQsInV0Zi04Iik6''@;'; put 'put ''Vi5hc0JpbmFyeSgpOlR9LFNlPWZ1bmN0aW9uKFYpe3ZhciBUPUFlKHRoaXMpO3JldHVybiBudWxsPT1UPyIiOih0aGlzLm9wdGlvbnMuYmFzZTY0JiYoVD1LLmRlY29kZShUKSksVD1WJiZ0aGlzLm9wdGlvbnMuYmluYXJ5P1AudXRmOGRlY29kZShUKTpZLnRyYW5zZm9ybVRvKCJzdHJpbmci''@;'; put 'put ''LFQpLCFWJiYhdGhpcy5vcHRpb25zLmJpbmFyeSYmKFQ9WS50cmFuc2Zvcm1Ubygic3RyaW5nIixQLnV0ZjhlbmNvZGUoVCkpKSxUKX0sSWU9ZnVuY3Rpb24oVixULFMpe3RoaXMubmFtZT1WLHRoaXMuZGlyPVMuZGlyLHRoaXMuZGF0ZT1TLmRhdGUsdGhpcy5jb21tZW50PVMuY29tbWVudCx0''@;'; put 'put ''aGlzLl9kYXRhPVQsdGhpcy5vcHRpb25zPVMsdGhpcy5faW5pdGlhbE1ldGFkYXRhPXtkaXI6Uy5kaXIsZGF0ZTpTLmRhdGV9fTtJZS5wcm90b3R5cGU9e2FzVGV4dDpmdW5jdGlvbigpe3JldHVybiBTZS5jYWxsKHRoaXMsITApfSxhc0JpbmFyeTpmdW5jdGlvbigpe3JldHVybiBTZS5jYWxs''@;'; put 'put ''KHRoaXMsITEpfSxhc05vZGVCdWZmZXI6ZnVuY3Rpb24oKXt2YXIgVj1rZSh0aGlzKTtyZXR1cm4gWS50cmFuc2Zvcm1Ubygibm9kZWJ1ZmZlciIsVil9LGFzVWludDhBcnJheTpmdW5jdGlvbigpe3ZhciBWPWtlKHRoaXMpO3JldHVybiBZLnRyYW5zZm9ybVRvKCJ1aW50OGFycmF5IixWKX0s''@;'; put 'put ''YXNBcnJheUJ1ZmZlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFzVWludDhBcnJheSgpLmJ1ZmZlcn19O3ZhciBUZT1mdW5jdGlvbihWLFQpe3ZhciBGLFM9IiI7Zm9yKEY9MDtGPFQ7RisrKVMrPVN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JlYpLFY+Pj49ODtyZXR1cm4gU30sTWU9ZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgVCxTLFY9e307Zm9yKFQ9MDtUPGFyZ3VtZW50cy5sZW5ndGg7VCsrKWZvcihTIGluIGFyZ3VtZW50c1tUXSlhcmd1bWVudHNbVF0uaGFzT3duUHJvcGVydHkoUykmJnZvaWQgMD09PVZbU10mJihWW1NdPWFyZ3VtZW50c1tUXVtTXSk7cmV0dXJuIFZ9LE89ZnVuY3Rpb24oVixU''@;'; put 'put ''LFMpe3ZhciB5ZSxGPVkuZ2V0VHlwZU9mKFQpO2lmKFM9ZnVuY3Rpb24oVil7cmV0dXJuITA9PT0oVj1WfHx7fSkuYmFzZTY0JiZudWxsPT1WLmJpbmFyeSYmKFYuYmluYXJ5PSEwKSwoVj1NZShWLHRlKSkuZGF0ZT1WLmRhdGV8fG5ldyBEYXRlLG51bGwhPT1WLmNvbXByZXNzaW9uJiYoVi5j''@;'; put 'put ''b21wcmVzc2lvbj1WLmNvbXByZXNzaW9uLnRvVXBwZXJDYXNlKCkpLFZ9KFMpLFMuY3JlYXRlRm9sZGVycyYmKHllPXooVikpJiZlZS5jYWxsKHRoaXMseWUsITApLFMuZGlyfHxudWxsPT1UKVMuYmFzZTY0PSExLFMuYmluYXJ5PSExLFQ9bnVsbDtlbHNlIGlmKCJzdHJpbmciPT09RilTLmJp''@;'; put 'put ''bmFyeSYmIVMuYmFzZTY0JiYhMCE9PVMub3B0aW1pemVkQmluYXJ5U3RyaW5nJiYoVD1ZLnN0cmluZzJiaW5hcnkoVCkpO2Vsc2V7aWYoUy5iYXNlNjQ9ITEsUy5iaW5hcnk9ITAsIShGfHxUIGluc3RhbmNlb2Ygc2UpKXRocm93IG5ldyBFcnJvcigiVGhlIGRhdGEgb2YgJyIrVisiJyBpcyBp''@;'; put 'put ''biBhbiB1bnN1cHBvcnRlZCBmb3JtYXQgISIpOyJhcnJheWJ1ZmZlciI9PT1GJiYoVD1ZLnRyYW5zZm9ybVRvKCJ1aW50OGFycmF5IixUKSl9dmFyIENlPW5ldyBJZShWLFQsUyk7cmV0dXJuIHRoaXMuZmlsZXNbVl09Q2UsQ2V9LHo9ZnVuY3Rpb24oVil7Ii8iPT1WLnNsaWNlKC0xKSYmKFY9''@;'; put 'put ''Vi5zdWJzdHJpbmcoMCxWLmxlbmd0aC0xKSk7dmFyIFQ9Vi5sYXN0SW5kZXhPZigiLyIpO3JldHVybiBUPjA/Vi5zdWJzdHJpbmcoMCxUKToiIn0sZWU9ZnVuY3Rpb24oVixUKXtyZXR1cm4iLyIhPVYuc2xpY2UoLTEpJiYoVis9Ii8iKSxUPXZvaWQgMCE9PVQmJlQsdGhpcy5maWxlc1tWXXx8''@;'; put 'put ''Ty5jYWxsKHRoaXMsVixudWxsLHtkaXI6ITAsY3JlYXRlRm9sZGVyczpUfSksdGhpcy5maWxlc1tWXX0sbmU9ZnVuY3Rpb24oVixUKXt2YXIgRixTPW5ldyBzZTtyZXR1cm4gVi5fZGF0YSBpbnN0YW5jZW9mIHNlPyhTLnVuY29tcHJlc3NlZFNpemU9Vi5fZGF0YS51bmNvbXByZXNzZWRTaXpl''@;'; put 'put ''LFMuY3JjMzI9Vi5fZGF0YS5jcmMzMiwwPT09Uy51bmNvbXByZXNzZWRTaXplfHxWLmRpcj8oVD1KLlNUT1JFLFMuY29tcHJlc3NlZENvbnRlbnQ9IiIsUy5jcmMzMj0wKTpWLl9kYXRhLmNvbXByZXNzaW9uTWV0aG9kPT09VC5tYWdpYz9TLmNvbXByZXNzZWRDb250ZW50PVYuX2RhdGEuZ2V0''@;'; put 'put ''Q29tcHJlc3NlZENvbnRlbnQoKTooRj1WLl9kYXRhLmdldENvbnRlbnQoKSxTLmNvbXByZXNzZWRDb250ZW50PVQuY29tcHJlc3MoWS50cmFuc2Zvcm1UbyhULmNvbXByZXNzSW5wdXRUeXBlLEYpKSkpOigoIShGPWtlKFYpKXx8MD09PUYubGVuZ3RofHxWLmRpcikmJihUPUouU1RPUkUsRj0i''@;'; put 'put ''IiksUy51bmNvbXByZXNzZWRTaXplPUYubGVuZ3RoLFMuY3JjMzI9VyhGKSxTLmNvbXByZXNzZWRDb250ZW50PVQuY29tcHJlc3MoWS50cmFuc2Zvcm1UbyhULmNvbXByZXNzSW5wdXRUeXBlLEYpKSksUy5jb21wcmVzc2VkU2l6ZT1TLmNvbXByZXNzZWRDb250ZW50Lmxlbmd0aCxTLmNvbXBy''@;'; put 'put ''ZXNzaW9uTWV0aG9kPVQubWFnaWMsU30seD1mdW5jdGlvbihWLFQsUyxGKXt2YXIgd3QsbXQsQnQsb24sQ2U9WS50cmFuc2Zvcm1Ubygic3RyaW5nIixjZS51dGY4ZW5jb2RlKFQubmFtZSkpLERlPVQuY29tbWVudHx8IiIsUGU9WS50cmFuc2Zvcm1Ubygic3RyaW5nIixjZS51dGY4ZW5jb2Rl''@;'; put 'put ''KERlKSksUWU9Q2UubGVuZ3RoIT09VC5uYW1lLmxlbmd0aCwkZT1QZS5sZW5ndGghPT1EZS5sZW5ndGgsZ3Q9VC5vcHRpb25zLHZ0PSIiLEF0PSIiLGh0PSIiO0J0PVQuX2luaXRpYWxNZXRhZGF0YS5kaXIhPT1ULmRpcj9ULmRpcjpndC5kaXIsd3Q9KG9uPVQuX2luaXRpYWxNZXRhZGF0YS5k''@;'; put 'put ''YXRlIT09VC5kYXRlP1QuZGF0ZTpndC5kYXRlKS5nZXRIb3VycygpLHd0PDw9Nix3dHw9b24uZ2V0TWludXRlcygpLHd0PDw9NSx3dHw9b24uZ2V0U2Vjb25kcygpLzIsbXQ9b24uZ2V0RnVsbFllYXIoKS0xOTgwLG10PDw9NCxtdHw9b24uZ2V0TW9udGgoKSsxLG10PDw9NSxtdHw9b24uZ2V0''@;'; put 'put ''RGF0ZSgpLFFlJiYoQXQ9VGUoMSwxKStUZShXKENlKSw0KStDZSx2dCs9InVwIitUZShBdC5sZW5ndGgsMikrQXQpLCRlJiYoaHQ9VGUoMSwxKStUZSh0aGlzLmNyYzMyKFBlKSw0KStQZSx2dCs9InVjIitUZShodC5sZW5ndGgsMikraHQpO3ZhciBfdD0iIjtyZXR1cm4gX3QrPSJcblwwIixf''@;'; put 'put ''dCs9UWV8fCRlPyJcMFxiIjoiXDBcMCIsX3QrPVMuY29tcHJlc3Npb25NZXRob2QsX3QrPVRlKHd0LDIpLF90Kz1UZShtdCwyKSxfdCs9VGUoUy5jcmMzMiw0KSxfdCs9VGUoUy5jb21wcmVzc2VkU2l6ZSw0KSxfdCs9VGUoUy51bmNvbXByZXNzZWRTaXplLDQpLF90Kz1UZShDZS5sZW5ndGgs''@;'; put 'put ''MiksX3QrPVRlKHZ0Lmxlbmd0aCwyKSx7ZmlsZVJlY29yZDpOLkxPQ0FMX0ZJTEVfSEVBREVSK190K0NlK3Z0LGRpclJlY29yZDpOLkNFTlRSQUxfRklMRV9IRUFERVIrIlx4MTRcMCIrX3QrVGUoUGUubGVuZ3RoLDIpKyJcMFwwXDBcMCIrKCEwPT09QnQ/Ilx4MTBcMFwwXDAiOiJcMFwwXDBc''@;'; put 'put ''MCIpK1RlKEYsNCkrQ2UrdnQrUGUsY29tcHJlc3NlZE9iamVjdDpTfX0sUD17bG9hZDpmdW5jdGlvbihWLFQpe3Rocm93IG5ldyBFcnJvcigiTG9hZCBtZXRob2QgaXMgbm90IGRlZmluZWQuIElzIHRoZSBmaWxlIGpzemlwLWxvYWQuanMgaW5jbHVkZWQgPyIpfSxmaWx0ZXI6ZnVuY3Rpb24o''@;'; put 'put ''Vil7dmFyIFMsRix5ZSxDZSxUPVtdO2ZvcihTIGluIHRoaXMuZmlsZXMpIXRoaXMuZmlsZXMuaGFzT3duUHJvcGVydHkoUyl8fChDZT1uZXcgSWUoKHllPXRoaXMuZmlsZXNbU10pLm5hbWUseWUuX2RhdGEsTWUoeWUub3B0aW9ucykpLEY9Uy5zbGljZSh0aGlzLnJvb3QubGVuZ3RoLFMubGVu''@;'; put 'put ''Z3RoKSxTLnNsaWNlKDAsdGhpcy5yb290Lmxlbmd0aCk9PT10aGlzLnJvb3QmJlYoRixDZSkmJlQucHVzaChDZSkpO3JldHVybiBUfSxmaWxlOmZ1bmN0aW9uKFYsVCxTKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7aWYoWS5pc1JlZ0V4cChWKSl7dmFyIEY9VjtyZXR1cm4gdGhpcy5maWx0''@;'; put 'put ''ZXIoZnVuY3Rpb24oeWUsQ2Upe3JldHVybiFDZS5kaXImJkYudGVzdCh5ZSl9KX1yZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oeWUsQ2Upe3JldHVybiFDZS5kaXImJnllPT09Vn0pWzBdfHxudWxsfXJldHVybiBPLmNhbGwodGhpcyxWPXRoaXMucm9vdCtWLFQsUyksdGhpc30sZm9sZGVy''@;'; put 'put ''OmZ1bmN0aW9uKFYpe2lmKCFWKXJldHVybiB0aGlzO2lmKFkuaXNSZWdFeHAoVikpcmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKHllLENlKXtyZXR1cm4gQ2UuZGlyJiZWLnRlc3QoeWUpfSk7dmFyIFM9ZWUuY2FsbCh0aGlzLHRoaXMucm9vdCtWKSxGPXRoaXMuY2xvbmUoKTtyZXR1cm4g''@;'; put 'put ''Ri5yb290PVMubmFtZSxGfSxyZW1vdmU6ZnVuY3Rpb24oVil7dmFyIFQ9dGhpcy5maWxlc1tWPXRoaXMucm9vdCtWXTtpZihUfHwoIi8iIT1WLnNsaWNlKC0xKSYmKFYrPSIvIiksVD10aGlzLmZpbGVzW1ZdKSxUJiYhVC5kaXIpZGVsZXRlIHRoaXMuZmlsZXNbVl07ZWxzZSBmb3IodmFyIFM9''@;'; put 'put ''dGhpcy5maWx0ZXIoZnVuY3Rpb24oeWUsQ2Upe3JldHVybiBDZS5uYW1lLnNsaWNlKDAsVi5sZW5ndGgpPT09Vn0pLEY9MDtGPFMubGVuZ3RoO0YrKylkZWxldGUgdGhpcy5maWxlc1tTW0ZdLm5hbWVdO3JldHVybiB0aGlzfSxnZW5lcmF0ZTpmdW5jdGlvbihWKXtWPU1lKFZ8fHt9LHtiYXNl''@;'; put 'put ''NjQ6ITAsY29tcHJlc3Npb246IlNUT1JFIix0eXBlOiJiYXNlNjQiLGNvbW1lbnQ6bnVsbH0pLFkuY2hlY2tTdXBwb3J0KFYudHlwZSk7dmFyIHllLENlLHZ0LFQ9W10sUz0wLEY9MCxEZT1ZLnRyYW5zZm9ybVRvKCJzdHJpbmciLHRoaXMudXRmOGVuY29kZShWLmNvbW1lbnR8fHRoaXMuY29t''@;'; put 'put ''bWVudHx8IiIpKTtmb3IodmFyIFBlIGluIHRoaXMuZmlsZXMpaWYodGhpcy5maWxlcy5oYXNPd25Qcm9wZXJ0eShQZSkpe3ZhciBRZT10aGlzLmZpbGVzW1BlXSwkZT1RZS5vcHRpb25zLmNvbXByZXNzaW9ufHxWLmNvbXByZXNzaW9uLnRvVXBwZXJDYXNlKCksZ3Q9SlskZV07aWYoIWd0KXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigkZSsiIGlzIG5vdCBhIHZhbGlkIGNvbXByZXNzaW9uIG1ldGhvZCAhIik7dmFyIHd0PW5lLmNhbGwodGhpcyxRZSxndCksbXQ9eC5jYWxsKHRoaXMsUGUsUWUsd3QsUyk7Uys9bXQuZmlsZVJlY29yZC5sZW5ndGgrd3QuY29tcHJlc3NlZFNpemUsRis9bXQuZGlyUmVj''@;'; put 'put ''b3JkLmxlbmd0aCxULnB1c2gobXQpfXZ0PU4uQ0VOVFJBTF9ESVJFQ1RPUllfRU5EKyJcMFwwXDBcMCIrVGUoVC5sZW5ndGgsMikrVGUoVC5sZW5ndGgsMikrVGUoRiw0KStUZShTLDQpK1RlKERlLmxlbmd0aCwyKStEZTt2YXIgQXQ9Vi50eXBlLnRvTG93ZXJDYXNlKCk7Zm9yKHllPSJ1aW50''@;'; put 'put ''OGFycmF5Ij09PUF0fHwiYXJyYXlidWZmZXIiPT09QXR8fCJibG9iIj09PUF0fHwibm9kZWJ1ZmZlciI9PT1BdD9uZXcgdmUoUytGK3Z0Lmxlbmd0aCk6bmV3IGRlKFMrRit2dC5sZW5ndGgpLENlPTA7Q2U8VC5sZW5ndGg7Q2UrKyl5ZS5hcHBlbmQoVFtDZV0uZmlsZVJlY29yZCkseWUuYXBw''@;'; put 'put ''ZW5kKFRbQ2VdLmNvbXByZXNzZWRPYmplY3QuY29tcHJlc3NlZENvbnRlbnQpO2ZvcihDZT0wO0NlPFQubGVuZ3RoO0NlKyspeWUuYXBwZW5kKFRbQ2VdLmRpclJlY29yZCk7eWUuYXBwZW5kKHZ0KTt2YXIgaHQ9eWUuZmluYWxpemUoKTtzd2l0Y2goVi50eXBlLnRvTG93ZXJDYXNlKCkpe2Nh''@;'; put 'put ''c2UidWludDhhcnJheSI6Y2FzZSJhcnJheWJ1ZmZlciI6Y2FzZSJub2RlYnVmZmVyIjpyZXR1cm4gWS50cmFuc2Zvcm1UbyhWLnR5cGUudG9Mb3dlckNhc2UoKSxodCk7Y2FzZSJibG9iIjpyZXR1cm4gWS5hcnJheUJ1ZmZlcjJCbG9iKFkudHJhbnNmb3JtVG8oImFycmF5YnVmZmVyIixodCkp''@;'; put 'put ''O2Nhc2UiYmFzZTY0IjpyZXR1cm4gVi5iYXNlNjQ/Sy5lbmNvZGUoaHQpOmh0O2RlZmF1bHQ6cmV0dXJuIGh0fX0sY3JjMzI6ZnVuY3Rpb24oVixUKXtyZXR1cm4gVyhWLFQpfSx1dGY4ZW5jb2RlOmZ1bmN0aW9uKFYpe3JldHVybiBZLnRyYW5zZm9ybVRvKCJzdHJpbmciLGNlLnV0ZjhlbmNv''@;'; put 'put ''ZGUoVikpfSx1dGY4ZGVjb2RlOmZ1bmN0aW9uKFYpe3JldHVybiBjZS51dGY4ZGVjb2RlKFYpfX07ai5leHBvcnRzPVB9LHsiLi9iYXNlNjQiOjEsIi4vY29tcHJlc3NlZE9iamVjdCI6MiwiLi9jb21wcmVzc2lvbnMiOjMsIi4vY3JjMzIiOjQsIi4vZGVmYXVsdHMiOjYsIi4vbm9kZUJ1ZmZl''@;'; put 'put ''ciI6MTEsIi4vc2lnbmF0dXJlIjoxNCwiLi9zdHJpbmdXcml0ZXIiOjE2LCIuL3N1cHBvcnQiOjE3LCIuL3VpbnQ4QXJyYXlXcml0ZXIiOjE5LCIuL3V0ZjgiOjIwLCIuL3V0aWxzIjoyMX1dLDE0OltmdW5jdGlvbihRLGoscmUpeyJ1c2Ugc3RyaWN0IjtyZS5MT0NBTF9GSUxFX0hFQURFUj0i''@;'; put 'put ''UEtceDAzXHgwNCIscmUuQ0VOVFJBTF9GSUxFX0hFQURFUj0iUEtceDAxXHgwMiIscmUuQ0VOVFJBTF9ESVJFQ1RPUllfRU5EPSJQS1x4MDVceDA2IixyZS5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9MT0NBVE9SPSJQS1x4MDZceDA3IixyZS5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9FTkQ9''@;'; put 'put ''IlBLXHgwNlx4MDYiLHJlLkRBVEFfREVTQ1JJUFRPUj0iUEtceDA3XGIifSx7fV0sMTU6W2Z1bmN0aW9uKFEsaixyZSl7InVzZSBzdHJpY3QiO3ZhciBhZT1RKCIuL2RhdGFSZWFkZXIiKSxZPVEoIi4vdXRpbHMiKTtmdW5jdGlvbiBXKE4sdGUpe3RoaXMuZGF0YT1OLHRlfHwodGhpcy5kYXRh''@;'; put 'put ''PVkuc3RyaW5nMmJpbmFyeSh0aGlzLmRhdGEpKSx0aGlzLmxlbmd0aD10aGlzLmRhdGEubGVuZ3RoLHRoaXMuaW5kZXg9MH0oVy5wcm90b3R5cGU9bmV3IGFlKS5ieXRlQXQ9ZnVuY3Rpb24oTil7cmV0dXJuIHRoaXMuZGF0YS5jaGFyQ29kZUF0KE4pfSxXLnByb3RvdHlwZS5sYXN0SW5kZXhP''@;'; put 'put ''ZlNpZ25hdHVyZT1mdW5jdGlvbihOKXtyZXR1cm4gdGhpcy5kYXRhLmxhc3RJbmRleE9mKE4pfSxXLnByb3RvdHlwZS5yZWFkRGF0YT1mdW5jdGlvbihOKXt0aGlzLmNoZWNrT2Zmc2V0KE4pO3ZhciB0ZT10aGlzLmRhdGEuc2xpY2UodGhpcy5pbmRleCx0aGlzLmluZGV4K04pO3JldHVybiB0''@;'; put 'put ''aGlzLmluZGV4Kz1OLHRlfSxqLmV4cG9ydHM9V30seyIuL2RhdGFSZWFkZXIiOjUsIi4vdXRpbHMiOjIxfV0sMTY6W2Z1bmN0aW9uKFEsaixyZSl7InVzZSBzdHJpY3QiO3ZhciBhZT1RKCIuL3V0aWxzIiksWT1mdW5jdGlvbigpe3RoaXMuZGF0YT1bXX07WS5wcm90b3R5cGU9e2FwcGVuZDpm''@;'; put 'put ''dW5jdGlvbihXKXtXPWFlLnRyYW5zZm9ybVRvKCJzdHJpbmciLFcpLHRoaXMuZGF0YS5wdXNoKFcpfSxmaW5hbGl6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEuam9pbigiIil9fSxqLmV4cG9ydHM9WX0seyIuL3V0aWxzIjoyMX1dLDE3OltmdW5jdGlvbihRLGoscmUpeyhmdW5jdGlv''@;'; put 'put ''bihhZSl7InVzZSBzdHJpY3QiO2lmKHJlLmJhc2U2ND0hMCxyZS5hcnJheT0hMCxyZS5zdHJpbmc9ITAscmUuYXJyYXlidWZmZXI9InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5LHJlLm5vZGVidWZmZXI9dm9pZCAwIT09YWUs''@;'; put 'put ''cmUudWludDhhcnJheT0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXksInVuZGVmaW5lZCI9PXR5cGVvZiBBcnJheUJ1ZmZlcilyZS5ibG9iPSExO2Vsc2V7dmFyIFk9bmV3IEFycmF5QnVmZmVyKDApO3RyeXtyZS5ibG9iPTA9PT1uZXcgQmxvYihbWV0se3R5cGU6ImFwcGxpY2F0aW9u''@;'; put 'put ''L3ppcCJ9KS5zaXplfWNhdGNoKHRlKXt0cnl7dmFyIE49bmV3KHdpbmRvdy5CbG9iQnVpbGRlcnx8d2luZG93LldlYktpdEJsb2JCdWlsZGVyfHx3aW5kb3cuTW96QmxvYkJ1aWxkZXJ8fHdpbmRvdy5NU0Jsb2JCdWlsZGVyKTtOLmFwcGVuZChZKSxyZS5ibG9iPTA9PT1OLmdldEJsb2IoImFw''@;'; put 'put ''cGxpY2F0aW9uL3ppcCIpLnNpemV9Y2F0Y2goSyl7cmUuYmxvYj0hMX19fX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIEJ1ZmZlcj9CdWZmZXI6dm9pZCAwKX0se31dLDE4OltmdW5jdGlvbihRLGoscmUpeyJ1c2Ugc3RyaWN0Ijt2YXIgYWU9USgiLi9kYXRhUmVhZGVyIik7ZnVu''@;'; put 'put ''Y3Rpb24gWShXKXtXJiYodGhpcy5kYXRhPVcsdGhpcy5sZW5ndGg9dGhpcy5kYXRhLmxlbmd0aCx0aGlzLmluZGV4PTApfShZLnByb3RvdHlwZT1uZXcgYWUpLmJ5dGVBdD1mdW5jdGlvbihXKXtyZXR1cm4gdGhpcy5kYXRhW1ddfSxZLnByb3RvdHlwZS5sYXN0SW5kZXhPZlNpZ25hdHVyZT1m''@;'; put 'put ''dW5jdGlvbihXKXtmb3IodmFyIE49Vy5jaGFyQ29kZUF0KDApLHRlPVcuY2hhckNvZGVBdCgxKSxLPVcuY2hhckNvZGVBdCgyKSxKPVcuY2hhckNvZGVBdCgzKSxzZT10aGlzLmxlbmd0aC00O3NlPj0wOy0tc2UpaWYodGhpcy5kYXRhW3NlXT09PU4mJnRoaXMuZGF0YVtzZSsxXT09PXRlJiZ0''@;'; put 'put ''aGlzLmRhdGFbc2UrMl09PT1LJiZ0aGlzLmRhdGFbc2UrM109PT1KKXJldHVybiBzZTtyZXR1cm4tMX0sWS5wcm90b3R5cGUucmVhZERhdGE9ZnVuY3Rpb24oVyl7aWYodGhpcy5jaGVja09mZnNldChXKSwwPT09VylyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7dmFyIE49dGhpcy5kYXRhLnN1''@;'; put 'put ''YmFycmF5KHRoaXMuaW5kZXgsdGhpcy5pbmRleCtXKTtyZXR1cm4gdGhpcy5pbmRleCs9VyxOfSxqLmV4cG9ydHM9WX0seyIuL2RhdGFSZWFkZXIiOjV9XSwxOTpbZnVuY3Rpb24oUSxqLHJlKXsidXNlIHN0cmljdCI7dmFyIGFlPVEoIi4vdXRpbHMiKSxZPWZ1bmN0aW9uKFcpe3RoaXMuZGF0''@;'; put 'put ''YT1uZXcgVWludDhBcnJheShXKSx0aGlzLmluZGV4PTB9O1kucHJvdG90eXBlPXthcHBlbmQ6ZnVuY3Rpb24oVyl7MCE9PVcubGVuZ3RoJiYoVz1hZS50cmFuc2Zvcm1UbygidWludDhhcnJheSIsVyksdGhpcy5kYXRhLnNldChXLHRoaXMuaW5kZXgpLHRoaXMuaW5kZXgrPVcubGVuZ3RoKX0s''@;'; put 'put ''ZmluYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhfX0sai5leHBvcnRzPVl9LHsiLi91dGlscyI6MjF9XSwyMDpbZnVuY3Rpb24oUSxqLHJlKXsidXNlIHN0cmljdCI7Zm9yKHZhciBhZT1RKCIuL3V0aWxzIiksWT1RKCIuL3N1cHBvcnQiKSxXPVEoIi4vbm9kZUJ1ZmZlciIpLE49''@;'; put 'put ''bmV3IEFycmF5KDI1NiksdGU9MDt0ZTwyNTY7dGUrKylOW3RlXT10ZT49MjUyPzY6dGU+PTI0OD81OnRlPj0yNDA/NDp0ZT49MjI0PzM6dGU+PTE5Mj8yOjE7TlsyNTRdPU5bMjU0XT0xO3ZhciBKPWZ1bmN0aW9uKG9lLGNlKXt2YXIgZGU7Zm9yKChjZT1jZXx8b2UubGVuZ3RoKT5vZS5sZW5n''@;'; put 'put ''dGgmJihjZT1vZS5sZW5ndGgpLGRlPWNlLTE7ZGU+PTAmJjEyOD09KDE5MiZvZVtkZV0pOylkZS0tO3JldHVybiBkZTwwfHwwPT09ZGU/Y2U6ZGUrTltvZVtkZV1dPmNlP2RlOmNlfSxzZT1mdW5jdGlvbihvZSl7dmFyIGRlLHZlLEFlLGtlLFNlPW9lLmxlbmd0aCxJZT1uZXcgQXJyYXkoMipT''@;'; put 'put ''ZSk7Zm9yKHZlPTAsZGU9MDtkZTxTZTspaWYoKEFlPW9lW2RlKytdKTwxMjgpSWVbdmUrK109QWU7ZWxzZSBpZigoa2U9TltBZV0pPjQpSWVbdmUrK109NjU1MzMsZGUrPWtlLTE7ZWxzZXtmb3IoQWUmPTI9PT1rZT8zMTozPT09a2U/MTU6NztrZT4xJiZkZTxTZTspQWU9QWU8PDZ8NjMmb2Vb''@;'; put 'put ''ZGUrK10sa2UtLTtrZT4xP0llW3ZlKytdPTY1NTMzOkFlPDY1NTM2P0llW3ZlKytdPUFlOihJZVt2ZSsrXT01NTI5NnwoQWUtPTY1NTM2KT4+MTAmMTAyMyxJZVt2ZSsrXT01NjMyMHwxMDIzJkFlKX1yZXR1cm4gSWUubGVuZ3RoIT09dmUmJihJZS5zdWJhcnJheT9JZT1JZS5zdWJhcnJheSgw''@;'; put 'put ''LHZlKTpJZS5sZW5ndGg9dmUpLGFlLmFwcGx5RnJvbUNoYXJDb2RlKEllKX07cmUudXRmOGVuY29kZT1mdW5jdGlvbihjZSl7cmV0dXJuIFkubm9kZWJ1ZmZlcj9XKGNlLCJ1dGYtOCIpOmZ1bmN0aW9uKG9lKXt2YXIgY2UsZGUsdmUsQWUsa2UsU2U9b2UubGVuZ3RoLEllPTA7Zm9yKEFlPTA7''@;'; put 'put ''QWU8U2U7QWUrKyk1NTI5Nj09KDY0NTEyJihkZT1vZS5jaGFyQ29kZUF0KEFlKSkpJiZBZSsxPFNlJiY1NjMyMD09KDY0NTEyJih2ZT1vZS5jaGFyQ29kZUF0KEFlKzEpKSkmJihkZT02NTUzNisoZGUtNTUyOTY8PDEwKSsodmUtNTYzMjApLEFlKyspLEllKz1kZTwxMjg/MTpkZTwyMDQ4PzI6''@;'; put 'put ''ZGU8NjU1MzY/Mzo0O2ZvcihjZT1ZLnVpbnQ4YXJyYXk/bmV3IFVpbnQ4QXJyYXkoSWUpOm5ldyBBcnJheShJZSksa2U9MCxBZT0wO2tlPEllO0FlKyspNTUyOTY9PSg2NDUxMiYoZGU9b2UuY2hhckNvZGVBdChBZSkpKSYmQWUrMTxTZSYmNTYzMjA9PSg2NDUxMiYodmU9b2UuY2hhckNvZGVB''@;'; put 'put ''dChBZSsxKSkpJiYoZGU9NjU1MzYrKGRlLTU1Mjk2PDwxMCkrKHZlLTU2MzIwKSxBZSsrKSxkZTwxMjg/Y2Vba2UrK109ZGU6ZGU8MjA0OD8oY2Vba2UrK109MTkyfGRlPj4+NixjZVtrZSsrXT0xMjh8NjMmZGUpOmRlPDY1NTM2PyhjZVtrZSsrXT0yMjR8ZGU+Pj4xMixjZVtrZSsrXT0xMjh8''@;'; put 'put ''ZGU+Pj42JjYzLGNlW2tlKytdPTEyOHw2MyZkZSk6KGNlW2tlKytdPTI0MHxkZT4+PjE4LGNlW2tlKytdPTEyOHxkZT4+PjEyJjYzLGNlW2tlKytdPTEyOHxkZT4+PjYmNjMsY2Vba2UrK109MTI4fDYzJmRlKTtyZXR1cm4gY2V9KGNlKX0scmUudXRmOGRlY29kZT1mdW5jdGlvbihjZSl7aWYo''@;'; put 'put ''WS5ub2RlYnVmZmVyKXJldHVybiBhZS50cmFuc2Zvcm1Ubygibm9kZWJ1ZmZlciIsY2UpLnRvU3RyaW5nKCJ1dGYtOCIpO2Zvcih2YXIgZGU9W10sdmU9MCxBZT0oY2U9YWUudHJhbnNmb3JtVG8oWS51aW50OGFycmF5PyJ1aW50OGFycmF5IjoiYXJyYXkiLGNlKSkubGVuZ3RoO3ZlPEFlOyl7''@;'; put 'put ''dmFyIFNlPUooY2UsTWF0aC5taW4odmUrNjU1MzYsQWUpKTtkZS5wdXNoKHNlKFkudWludDhhcnJheT9jZS5zdWJhcnJheSh2ZSxTZSk6Y2Uuc2xpY2UodmUsU2UpKSksdmU9U2V9cmV0dXJuIGRlLmpvaW4oIiIpfX0seyIuL25vZGVCdWZmZXIiOjExLCIuL3N1cHBvcnQiOjE3LCIuL3V0aWxz''@;'; put 'put ''IjoyMX1dLDIxOltmdW5jdGlvbihRLGoscmUpeyJ1c2Ugc3RyaWN0Ijt2YXIgYWU9USgiLi9zdXBwb3J0IiksWT1RKCIuL2NvbXByZXNzaW9ucyIpLFc9USgiLi9ub2RlQnVmZmVyIik7ZnVuY3Rpb24gTihvZSl7cmV0dXJuIG9lfWZ1bmN0aW9uIHRlKG9lLGNlKXtmb3IodmFyIGRlPTA7ZGU8''@;'; put 'put ''b2UubGVuZ3RoOysrZGUpY2VbZGVdPTI1NSZvZS5jaGFyQ29kZUF0KGRlKTtyZXR1cm4gY2V9ZnVuY3Rpb24gSyhvZSl7dmFyIGNlPTY1NTM2LGRlPVtdLHZlPW9lLmxlbmd0aCxBZT1yZS5nZXRUeXBlT2Yob2UpLGtlPTAsU2U9ITA7dHJ5e3N3aXRjaChBZSl7Y2FzZSJ1aW50OGFycmF5IjpT''@;'; put 'put ''dHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsbmV3IFVpbnQ4QXJyYXkoMCkpO2JyZWFrO2Nhc2Uibm9kZWJ1ZmZlciI6U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLFcoMCkpfX1jYXRjaChNZSl7U2U9ITF9aWYoIVNlKXtmb3IodmFyIEllPSIiLFRlPTA7VGU8b2UubGVuZ3Ro''@;'; put 'put ''O1RlKyspSWUrPVN0cmluZy5mcm9tQ2hhckNvZGUob2VbVGVdKTtyZXR1cm4gSWV9Zm9yKDtrZTx2ZSYmY2U+MTspdHJ5e2RlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCJhcnJheSI9PT1BZXx8Im5vZGVidWZmZXIiPT09QWU/b2Uuc2xpY2Uoa2UsTWF0aC5taW4oa2Ur''@;'; put 'put ''Y2UsdmUpKTpvZS5zdWJhcnJheShrZSxNYXRoLm1pbihrZStjZSx2ZSkpKSksa2UrPWNlfWNhdGNoKE1lKXtjZT1NYXRoLmZsb29yKGNlLzIpfXJldHVybiBkZS5qb2luKCIiKX1mdW5jdGlvbiBKKG9lLGNlKXtmb3IodmFyIGRlPTA7ZGU8b2UubGVuZ3RoO2RlKyspY2VbZGVdPW9lW2RlXTty''@;'; put 'put ''ZXR1cm4gY2V9cmUuc3RyaW5nMmJpbmFyeT1mdW5jdGlvbihvZSl7Zm9yKHZhciBjZT0iIixkZT0wO2RlPG9lLmxlbmd0aDtkZSsrKWNlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZvZS5jaGFyQ29kZUF0KGRlKSk7cmV0dXJuIGNlfSxyZS5hcnJheUJ1ZmZlcjJCbG9iPWZ1bmN0aW9uKG9l''@;'; put 'put ''KXtyZS5jaGVja1N1cHBvcnQoImJsb2IiKTt0cnl7cmV0dXJuIG5ldyBCbG9iKFtvZV0se3R5cGU6ImFwcGxpY2F0aW9uL3ppcCJ9KX1jYXRjaCh2ZSl7dHJ5e3ZhciBkZT1uZXcod2luZG93LkJsb2JCdWlsZGVyfHx3aW5kb3cuV2ViS2l0QmxvYkJ1aWxkZXJ8fHdpbmRvdy5Nb3pCbG9iQnVp''@;'; put 'put ''bGRlcnx8d2luZG93Lk1TQmxvYkJ1aWxkZXIpO3JldHVybiBkZS5hcHBlbmQob2UpLGRlLmdldEJsb2IoImFwcGxpY2F0aW9uL3ppcCIpfWNhdGNoKEFlKXt0aHJvdyBuZXcgRXJyb3IoIkJ1ZyA6IGNhbid0IGNvbnN0cnVjdCB0aGUgQmxvYi4iKX19fSxyZS5hcHBseUZyb21DaGFyQ29kZT1L''@;'; put 'put ''O3ZhciBzZT17fTtzZS5zdHJpbmc9e3N0cmluZzpOLGFycmF5OmZ1bmN0aW9uKG9lKXtyZXR1cm4gdGUob2UsbmV3IEFycmF5KG9lLmxlbmd0aCkpfSxhcnJheWJ1ZmZlcjpmdW5jdGlvbihvZSl7cmV0dXJuIHNlLnN0cmluZy51aW50OGFycmF5KG9lKS5idWZmZXJ9LHVpbnQ4YXJyYXk6ZnVu''@;'; put 'put ''Y3Rpb24ob2Upe3JldHVybiB0ZShvZSxuZXcgVWludDhBcnJheShvZS5sZW5ndGgpKX0sbm9kZWJ1ZmZlcjpmdW5jdGlvbihvZSl7cmV0dXJuIHRlKG9lLFcob2UubGVuZ3RoKSl9fSxzZS5hcnJheT17c3RyaW5nOkssYXJyYXk6TixhcnJheWJ1ZmZlcjpmdW5jdGlvbihvZSl7cmV0dXJuIG5l''@;'; put 'put ''dyBVaW50OEFycmF5KG9lKS5idWZmZXJ9LHVpbnQ4YXJyYXk6ZnVuY3Rpb24ob2Upe3JldHVybiBuZXcgVWludDhBcnJheShvZSl9LG5vZGVidWZmZXI6ZnVuY3Rpb24ob2Upe3JldHVybiBXKG9lKX19LHNlLmFycmF5YnVmZmVyPXtzdHJpbmc6ZnVuY3Rpb24ob2Upe3JldHVybiBLKG5ldyBV''@;'; put 'put ''aW50OEFycmF5KG9lKSl9LGFycmF5OmZ1bmN0aW9uKG9lKXtyZXR1cm4gSihuZXcgVWludDhBcnJheShvZSksbmV3IEFycmF5KG9lLmJ5dGVMZW5ndGgpKX0sYXJyYXlidWZmZXI6Tix1aW50OGFycmF5OmZ1bmN0aW9uKG9lKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkob2UpfSxub2RlYnVmZmVy''@;'; put 'put ''OmZ1bmN0aW9uKG9lKXtyZXR1cm4gVyhuZXcgVWludDhBcnJheShvZSkpfX0sc2UudWludDhhcnJheT17c3RyaW5nOkssYXJyYXk6ZnVuY3Rpb24ob2Upe3JldHVybiBKKG9lLG5ldyBBcnJheShvZS5sZW5ndGgpKX0sYXJyYXlidWZmZXI6ZnVuY3Rpb24ob2Upe3JldHVybiBvZS5idWZmZXJ9''@;'; put 'put ''LHVpbnQ4YXJyYXk6Tixub2RlYnVmZmVyOmZ1bmN0aW9uKG9lKXtyZXR1cm4gVyhvZSl9fSxzZS5ub2RlYnVmZmVyPXtzdHJpbmc6SyxhcnJheTpmdW5jdGlvbihvZSl7cmV0dXJuIEoob2UsbmV3IEFycmF5KG9lLmxlbmd0aCkpfSxhcnJheWJ1ZmZlcjpmdW5jdGlvbihvZSl7cmV0dXJuIHNl''@;'; put 'put ''Lm5vZGVidWZmZXIudWludDhhcnJheShvZSkuYnVmZmVyfSx1aW50OGFycmF5OmZ1bmN0aW9uKG9lKXtyZXR1cm4gSihvZSxuZXcgVWludDhBcnJheShvZS5sZW5ndGgpKX0sbm9kZWJ1ZmZlcjpOfSxyZS50cmFuc2Zvcm1Ubz1mdW5jdGlvbihvZSxjZSl7aWYoY2V8fChjZT0iIiksIW9lKXJl''@;'; put 'put ''dHVybiBjZTtyZS5jaGVja1N1cHBvcnQob2UpO3ZhciBkZT1yZS5nZXRUeXBlT2YoY2UpO3JldHVybiBzZVtkZV1bb2VdKGNlKX0scmUuZ2V0VHlwZU9mPWZ1bmN0aW9uKG9lKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG9lPyJzdHJpbmciOiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJv''@;'; put 'put ''dG90eXBlLnRvU3RyaW5nLmNhbGwob2UpPyJhcnJheSI6YWUubm9kZWJ1ZmZlciYmVy50ZXN0KG9lKT8ibm9kZWJ1ZmZlciI6YWUudWludDhhcnJheSYmb2UgaW5zdGFuY2VvZiBVaW50OEFycmF5PyJ1aW50OGFycmF5IjphZS5hcnJheWJ1ZmZlciYmb2UgaW5zdGFuY2VvZiBBcnJheUJ1ZmZl''@;'; put 'put ''cj8iYXJyYXlidWZmZXIiOnZvaWQgMH0scmUuY2hlY2tTdXBwb3J0PWZ1bmN0aW9uKG9lKXtpZighYWVbb2UudG9Mb3dlckNhc2UoKV0pdGhyb3cgbmV3IEVycm9yKG9lKyIgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXIiKX0scmUuTUFYX1ZBTFVFXzE2QklUUz02NTUzNSxyZS5N''@;'; put 'put ''QVhfVkFMVUVfMzJCSVRTPS0xLHJlLnByZXR0eT1mdW5jdGlvbihvZSl7dmFyIGRlLHZlLGNlPSIiO2Zvcih2ZT0wO3ZlPChvZXx8IiIpLmxlbmd0aDt2ZSsrKWNlKz0iXFx4IisoKGRlPW9lLmNoYXJDb2RlQXQodmUpKTwxNj8iMCI6IiIpK2RlLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgp''@;'; put 'put ''O3JldHVybiBjZX0scmUuZmluZENvbXByZXNzaW9uPWZ1bmN0aW9uKG9lKXtmb3IodmFyIGNlIGluIFkpaWYoWS5oYXNPd25Qcm9wZXJ0eShjZSkmJllbY2VdLm1hZ2ljPT09b2UpcmV0dXJuIFlbY2VdO3JldHVybiBudWxsfSxyZS5pc1JlZ0V4cD1mdW5jdGlvbihvZSl7cmV0dXJuIltvYmpl''@;'; put 'put ''Y3QgUmVnRXhwXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2UpfX0seyIuL2NvbXByZXNzaW9ucyI6MywiLi9ub2RlQnVmZmVyIjoxMSwiLi9zdXBwb3J0IjoxN31dLDIyOltmdW5jdGlvbihRLGoscmUpeyJ1c2Ugc3RyaWN0Ijt2YXIgYWU9USgiLi9zdHJpbmdSZWFkZXIi''@;'; put 'put ''KSxZPVEoIi4vbm9kZUJ1ZmZlclJlYWRlciIpLFc9USgiLi91aW50OEFycmF5UmVhZGVyIiksTj1RKCIuL3V0aWxzIiksdGU9USgiLi9zaWduYXR1cmUiKSxLPVEoIi4vemlwRW50cnkiKSxKPVEoIi4vc3VwcG9ydCIpLHNlPVEoIi4vb2JqZWN0Iik7ZnVuY3Rpb24gb2UoY2UsZGUpe3RoaXMu''@;'; put 'put ''ZmlsZXM9W10sdGhpcy5sb2FkT3B0aW9ucz1kZSxjZSYmdGhpcy5sb2FkKGNlKX1vZS5wcm90b3R5cGU9e2NoZWNrU2lnbmF0dXJlOmZ1bmN0aW9uKGNlKXt2YXIgZGU9dGhpcy5yZWFkZXIucmVhZFN0cmluZyg0KTtpZihkZSE9PWNlKXRocm93IG5ldyBFcnJvcigiQ29ycnVwdGVkIHppcCBv''@;'; put 'put ''ciBidWcgOiB1bmV4cGVjdGVkIHNpZ25hdHVyZSAoIitOLnByZXR0eShkZSkrIiwgZXhwZWN0ZWQgIitOLnByZXR0eShjZSkrIikiKX0scmVhZEJsb2NrRW5kT2ZDZW50cmFsOmZ1bmN0aW9uKCl7dGhpcy5kaXNrTnVtYmVyPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksdGhpcy5kaXNrV2l0aENl''@;'; put 'put ''bnRyYWxEaXJTdGFydD10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuY2VudHJhbERpclJlY29yZHNPblRoaXNEaXNrPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksdGhpcy5jZW50cmFsRGlyUmVjb3Jkcz10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuY2VudHJhbERpclNpemU9dGhpcy5y''@;'; put 'put ''ZWFkZXIucmVhZEludCg0KSx0aGlzLmNlbnRyYWxEaXJPZmZzZXQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLnppcENvbW1lbnRMZW5ndGg9dGhpcy5yZWFkZXIucmVhZEludCgyKSx0aGlzLnppcENvbW1lbnQ9dGhpcy5yZWFkZXIucmVhZFN0cmluZyh0aGlzLnppcENvbW1lbnRMZW5n''@;'; put 'put ''dGgpLHRoaXMuemlwQ29tbWVudD1zZS51dGY4ZGVjb2RlKHRoaXMuemlwQ29tbWVudCl9LHJlYWRCbG9ja1ppcDY0RW5kT2ZDZW50cmFsOmZ1bmN0aW9uKCl7dGhpcy56aXA2NEVuZE9mQ2VudHJhbFNpemU9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlzLnZlcnNpb25NYWRlQnk9dGhpcy5y''@;'; put 'put ''ZWFkZXIucmVhZFN0cmluZygyKSx0aGlzLnZlcnNpb25OZWVkZWQ9dGhpcy5yZWFkZXIucmVhZEludCgyKSx0aGlzLmRpc2tOdW1iZXI9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLmRpc2tXaXRoQ2VudHJhbERpclN0YXJ0PXRoaXMucmVhZGVyLnJlYWRJbnQoNCksdGhpcy5jZW50cmFs''@;'; put 'put ''RGlyUmVjb3Jkc09uVGhpc0Rpc2s9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlzLmNlbnRyYWxEaXJSZWNvcmRzPXRoaXMucmVhZGVyLnJlYWRJbnQoOCksdGhpcy5jZW50cmFsRGlyU2l6ZT10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMuY2VudHJhbERpck9mZnNldD10aGlzLnJlYWRl''@;'; put 'put ''ci5yZWFkSW50KDgpLHRoaXMuemlwNjRFeHRlbnNpYmxlRGF0YT17fTtmb3IodmFyIHZlLEFlLGtlLGNlPXRoaXMuemlwNjRFbmRPZkNlbnRyYWxTaXplLTQ0OzA8Y2U7KXZlPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksQWU9dGhpcy5yZWFkZXIucmVhZEludCg0KSxrZT10aGlzLnJlYWRlci5y''@;'; put 'put ''ZWFkU3RyaW5nKEFlKSx0aGlzLnppcDY0RXh0ZW5zaWJsZURhdGFbdmVdPXtpZDp2ZSxsZW5ndGg6QWUsdmFsdWU6a2V9fSxyZWFkQmxvY2taaXA2NEVuZE9mQ2VudHJhbExvY2F0b3I6ZnVuY3Rpb24oKXtpZih0aGlzLmRpc2tXaXRoWmlwNjRDZW50cmFsRGlyU3RhcnQ9dGhpcy5yZWFkZXIu''@;'; put 'put ''cmVhZEludCg0KSx0aGlzLnJlbGF0aXZlT2Zmc2V0RW5kT2ZaaXA2NENlbnRyYWxEaXI9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlzLmRpc2tzQ291bnQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLmRpc2tzQ291bnQ+MSl0aHJvdyBuZXcgRXJyb3IoIk11bHRpLXZvbHVtZXMgemlw''@;'; put 'put ''IGFyZSBub3Qgc3VwcG9ydGVkIil9LHJlYWRMb2NhbEZpbGVzOmZ1bmN0aW9uKCl7dmFyIGNlLGRlO2ZvcihjZT0wO2NlPHRoaXMuZmlsZXMubGVuZ3RoO2NlKyspdGhpcy5yZWFkZXIuc2V0SW5kZXgoKGRlPXRoaXMuZmlsZXNbY2VdKS5sb2NhbEhlYWRlck9mZnNldCksdGhpcy5jaGVja1Np''@;'; put 'put ''Z25hdHVyZSh0ZS5MT0NBTF9GSUxFX0hFQURFUiksZGUucmVhZExvY2FsUGFydCh0aGlzLnJlYWRlciksZGUuaGFuZGxlVVRGOCgpfSxyZWFkQ2VudHJhbERpcjpmdW5jdGlvbigpe3ZhciBjZTtmb3IodGhpcy5yZWFkZXIuc2V0SW5kZXgodGhpcy5jZW50cmFsRGlyT2Zmc2V0KTt0aGlzLnJl''@;'; put 'put ''YWRlci5yZWFkU3RyaW5nKDQpPT09dGUuQ0VOVFJBTF9GSUxFX0hFQURFUjspKGNlPW5ldyBLKHt6aXA2NDp0aGlzLnppcDY0fSx0aGlzLmxvYWRPcHRpb25zKSkucmVhZENlbnRyYWxQYXJ0KHRoaXMucmVhZGVyKSx0aGlzLmZpbGVzLnB1c2goY2UpfSxyZWFkRW5kT2ZDZW50cmFsOmZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIGNlPXRoaXMucmVhZGVyLmxhc3RJbmRleE9mU2lnbmF0dXJlKHRlLkNFTlRSQUxfRElSRUNUT1JZX0VORCk7aWYoLTE9PT1jZSl0aHJvdyBuZXcgRXJyb3IoIkNvcnJ1cHRlZCB6aXAgOiBjYW4ndCBmaW5kIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSIpO2lmKHRoaXMucmVh''@;'; put 'put ''ZGVyLnNldEluZGV4KGNlKSx0aGlzLmNoZWNrU2lnbmF0dXJlKHRlLkNFTlRSQUxfRElSRUNUT1JZX0VORCksdGhpcy5yZWFkQmxvY2tFbmRPZkNlbnRyYWwoKSx0aGlzLmRpc2tOdW1iZXI9PT1OLk1BWF9WQUxVRV8xNkJJVFN8fHRoaXMuZGlza1dpdGhDZW50cmFsRGlyU3RhcnQ9PT1OLk1B''@;'; put 'put ''WF9WQUxVRV8xNkJJVFN8fHRoaXMuY2VudHJhbERpclJlY29yZHNPblRoaXNEaXNrPT09Ti5NQVhfVkFMVUVfMTZCSVRTfHx0aGlzLmNlbnRyYWxEaXJSZWNvcmRzPT09Ti5NQVhfVkFMVUVfMTZCSVRTfHx0aGlzLmNlbnRyYWxEaXJTaXplPT09Ti5NQVhfVkFMVUVfMzJCSVRTfHx0aGlzLmNl''@;'; put 'put ''bnRyYWxEaXJPZmZzZXQ9PT1OLk1BWF9WQUxVRV8zMkJJVFMpe2lmKHRoaXMuemlwNjQ9ITAsLTE9PT0oY2U9dGhpcy5yZWFkZXIubGFzdEluZGV4T2ZTaWduYXR1cmUodGUuWklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfTE9DQVRPUikpKXRocm93IG5ldyBFcnJvcigiQ29ycnVwdGVkIHppcCA6''@;'; put 'put ''IGNhbid0IGZpbmQgdGhlIFpJUDY0IGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSBsb2NhdG9yIik7dGhpcy5yZWFkZXIuc2V0SW5kZXgoY2UpLHRoaXMuY2hlY2tTaWduYXR1cmUodGUuWklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfTE9DQVRPUiksdGhpcy5yZWFkQmxvY2taaXA2NEVuZE9mQ2Vu''@;'; put 'put ''dHJhbExvY2F0b3IoKSx0aGlzLnJlYWRlci5zZXRJbmRleCh0aGlzLnJlbGF0aXZlT2Zmc2V0RW5kT2ZaaXA2NENlbnRyYWxEaXIpLHRoaXMuY2hlY2tTaWduYXR1cmUodGUuWklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfRU5EKSx0aGlzLnJlYWRCbG9ja1ppcDY0RW5kT2ZDZW50cmFsKCl9fSxw''@;'; put 'put ''cmVwYXJlUmVhZGVyOmZ1bmN0aW9uKGNlKXt2YXIgZGU9Ti5nZXRUeXBlT2YoY2UpO3RoaXMucmVhZGVyPSJzdHJpbmciIT09ZGV8fEoudWludDhhcnJheT8ibm9kZWJ1ZmZlciI9PT1kZT9uZXcgWShjZSk6bmV3IFcoTi50cmFuc2Zvcm1UbygidWludDhhcnJheSIsY2UpKTpuZXcgYWUoY2Us''@;'; put 'put ''dGhpcy5sb2FkT3B0aW9ucy5vcHRpbWl6ZWRCaW5hcnlTdHJpbmcpfSxsb2FkOmZ1bmN0aW9uKGNlKXt0aGlzLnByZXBhcmVSZWFkZXIoY2UpLHRoaXMucmVhZEVuZE9mQ2VudHJhbCgpLHRoaXMucmVhZENlbnRyYWxEaXIoKSx0aGlzLnJlYWRMb2NhbEZpbGVzKCl9fSxqLmV4cG9ydHM9b2V9''@;'; put 'put ''LHsiLi9ub2RlQnVmZmVyUmVhZGVyIjoxMiwiLi9vYmplY3QiOjEzLCIuL3NpZ25hdHVyZSI6MTQsIi4vc3RyaW5nUmVhZGVyIjoxNSwiLi9zdXBwb3J0IjoxNywiLi91aW50OEFycmF5UmVhZGVyIjoxOCwiLi91dGlscyI6MjEsIi4vemlwRW50cnkiOjIzfV0sMjM6W2Z1bmN0aW9uKFEsaixy''@;'; put 'put ''ZSl7InVzZSBzdHJpY3QiO3ZhciBhZT1RKCIuL3N0cmluZ1JlYWRlciIpLFk9USgiLi91dGlscyIpLFc9USgiLi9jb21wcmVzc2VkT2JqZWN0IiksTj1RKCIuL29iamVjdCIpO2Z1bmN0aW9uIHRlKEssSil7dGhpcy5vcHRpb25zPUssdGhpcy5sb2FkT3B0aW9ucz1KfXRlLnByb3RvdHlwZT17''@;'; put 'put ''aXNFbmNyeXB0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09KDEmdGhpcy5iaXRGbGFnKX0sdXNlVVRGODpmdW5jdGlvbigpe3JldHVybiAyMDQ4PT0oMjA0OCZ0aGlzLmJpdEZsYWcpfSxwcmVwYXJlQ29tcHJlc3NlZENvbnRlbnQ6ZnVuY3Rpb24oSyxKLHNlKXtyZXR1cm4gZnVuY3Rpb24oKXt2''@;'; put 'put ''YXIgb2U9Sy5pbmRleDtLLnNldEluZGV4KEopO3ZhciBjZT1LLnJlYWREYXRhKHNlKTtyZXR1cm4gSy5zZXRJbmRleChvZSksY2V9fSxwcmVwYXJlQ29udGVudDpmdW5jdGlvbihLLEosc2Usb2UsY2Upe3JldHVybiBmdW5jdGlvbigpe3ZhciBkZT1ZLnRyYW5zZm9ybVRvKG9lLnVuY29tcHJl''@;'; put 'put ''c3NJbnB1dFR5cGUsdGhpcy5nZXRDb21wcmVzc2VkQ29udGVudCgpKSx2ZT1vZS51bmNvbXByZXNzKGRlKTtpZih2ZS5sZW5ndGghPT1jZSl0aHJvdyBuZXcgRXJyb3IoIkJ1ZyA6IHVuY29tcHJlc3NlZCBkYXRhIHNpemUgbWlzbWF0Y2giKTtyZXR1cm4gdmV9fSxyZWFkTG9jYWxQYXJ0OmZ1''@;'; put 'put ''bmN0aW9uKEspe3ZhciBKLHNlO2lmKEsuc2tpcCgyMiksdGhpcy5maWxlTmFtZUxlbmd0aD1LLnJlYWRJbnQoMiksc2U9Sy5yZWFkSW50KDIpLHRoaXMuZmlsZU5hbWU9Sy5yZWFkU3RyaW5nKHRoaXMuZmlsZU5hbWVMZW5ndGgpLEsuc2tpcChzZSksLTE9PXRoaXMuY29tcHJlc3NlZFNpemV8''@;'; put 'put ''fC0xPT10aGlzLnVuY29tcHJlc3NlZFNpemUpdGhyb3cgbmV3IEVycm9yKCJCdWcgb3IgY29ycnVwdGVkIHppcCA6IGRpZG4ndCBnZXQgZW5vdWdoIGluZm9ybWF0aW9ucyBmcm9tIHRoZSBjZW50cmFsIGRpcmVjdG9yeSAoY29tcHJlc3NlZFNpemUgPT0gLTEgfHwgdW5jb21wcmVzc2VkU2l6''@;'; put 'put ''ZSA9PSAtMSkiKTtpZihudWxsPT09KEo9WS5maW5kQ29tcHJlc3Npb24odGhpcy5jb21wcmVzc2lvbk1ldGhvZCkpKXRocm93IG5ldyBFcnJvcigiQ29ycnVwdGVkIHppcCA6IGNvbXByZXNzaW9uICIrWS5wcmV0dHkodGhpcy5jb21wcmVzc2lvbk1ldGhvZCkrIiB1bmtub3duIChpbm5lciBm''@;'; put 'put ''aWxlIDogIit0aGlzLmZpbGVOYW1lKyIpIik7aWYodGhpcy5kZWNvbXByZXNzZWQ9bmV3IFcsdGhpcy5kZWNvbXByZXNzZWQuY29tcHJlc3NlZFNpemU9dGhpcy5jb21wcmVzc2VkU2l6ZSx0aGlzLmRlY29tcHJlc3NlZC51bmNvbXByZXNzZWRTaXplPXRoaXMudW5jb21wcmVzc2VkU2l6ZSx0''@;'; put 'put ''aGlzLmRlY29tcHJlc3NlZC5jcmMzMj10aGlzLmNyYzMyLHRoaXMuZGVjb21wcmVzc2VkLmNvbXByZXNzaW9uTWV0aG9kPXRoaXMuY29tcHJlc3Npb25NZXRob2QsdGhpcy5kZWNvbXByZXNzZWQuZ2V0Q29tcHJlc3NlZENvbnRlbnQ9dGhpcy5wcmVwYXJlQ29tcHJlc3NlZENvbnRlbnQoSyxL''@;'; put 'put ''LmluZGV4LHRoaXMuY29tcHJlc3NlZFNpemUsSiksdGhpcy5kZWNvbXByZXNzZWQuZ2V0Q29udGVudD10aGlzLnByZXBhcmVDb250ZW50KEssSy5pbmRleCx0aGlzLmNvbXByZXNzZWRTaXplLEosdGhpcy51bmNvbXByZXNzZWRTaXplKSx0aGlzLmxvYWRPcHRpb25zLmNoZWNrQ1JDMzImJih0''@;'; put 'put ''aGlzLmRlY29tcHJlc3NlZD1ZLnRyYW5zZm9ybVRvKCJzdHJpbmciLHRoaXMuZGVjb21wcmVzc2VkLmdldENvbnRlbnQoKSksTi5jcmMzMih0aGlzLmRlY29tcHJlc3NlZCkhPT10aGlzLmNyYzMyKSl0aHJvdyBuZXcgRXJyb3IoIkNvcnJ1cHRlZCB6aXAgOiBDUkMzMiBtaXNtYXRjaCIpfSxy''@;'; put 'put ''ZWFkQ2VudHJhbFBhcnQ6ZnVuY3Rpb24oSyl7aWYodGhpcy52ZXJzaW9uTWFkZUJ5PUsucmVhZFN0cmluZygyKSx0aGlzLnZlcnNpb25OZWVkZWQ9Sy5yZWFkSW50KDIpLHRoaXMuYml0RmxhZz1LLnJlYWRJbnQoMiksdGhpcy5jb21wcmVzc2lvbk1ldGhvZD1LLnJlYWRTdHJpbmcoMiksdGhp''@;'; put 'put ''cy5kYXRlPUsucmVhZERhdGUoKSx0aGlzLmNyYzMyPUsucmVhZEludCg0KSx0aGlzLmNvbXByZXNzZWRTaXplPUsucmVhZEludCg0KSx0aGlzLnVuY29tcHJlc3NlZFNpemU9Sy5yZWFkSW50KDQpLHRoaXMuZmlsZU5hbWVMZW5ndGg9Sy5yZWFkSW50KDIpLHRoaXMuZXh0cmFGaWVsZHNMZW5n''@;'; put 'put ''dGg9Sy5yZWFkSW50KDIpLHRoaXMuZmlsZUNvbW1lbnRMZW5ndGg9Sy5yZWFkSW50KDIpLHRoaXMuZGlza051bWJlclN0YXJ0PUsucmVhZEludCgyKSx0aGlzLmludGVybmFsRmlsZUF0dHJpYnV0ZXM9Sy5yZWFkSW50KDIpLHRoaXMuZXh0ZXJuYWxGaWxlQXR0cmlidXRlcz1LLnJlYWRJbnQo''@;'; put 'put ''NCksdGhpcy5sb2NhbEhlYWRlck9mZnNldD1LLnJlYWRJbnQoNCksdGhpcy5pc0VuY3J5cHRlZCgpKXRocm93IG5ldyBFcnJvcigiRW5jcnlwdGVkIHppcCBhcmUgbm90IHN1cHBvcnRlZCIpO3RoaXMuZmlsZU5hbWU9Sy5yZWFkU3RyaW5nKHRoaXMuZmlsZU5hbWVMZW5ndGgpLHRoaXMucmVh''@;'; put 'put ''ZEV4dHJhRmllbGRzKEspLHRoaXMucGFyc2VaSVA2NEV4dHJhRmllbGQoSyksdGhpcy5maWxlQ29tbWVudD1LLnJlYWRTdHJpbmcodGhpcy5maWxlQ29tbWVudExlbmd0aCksdGhpcy5kaXI9ISEoMTYmdGhpcy5leHRlcm5hbEZpbGVBdHRyaWJ1dGVzKX0scGFyc2VaSVA2NEV4dHJhRmllbGQ6''@;'; put 'put ''ZnVuY3Rpb24oSyl7aWYodGhpcy5leHRyYUZpZWxkc1sxXSl7dmFyIEo9bmV3IGFlKHRoaXMuZXh0cmFGaWVsZHNbMV0udmFsdWUpO3RoaXMudW5jb21wcmVzc2VkU2l6ZT09PVkuTUFYX1ZBTFVFXzMyQklUUyYmKHRoaXMudW5jb21wcmVzc2VkU2l6ZT1KLnJlYWRJbnQoOCkpLHRoaXMuY29t''@;'; put 'put ''cHJlc3NlZFNpemU9PT1ZLk1BWF9WQUxVRV8zMkJJVFMmJih0aGlzLmNvbXByZXNzZWRTaXplPUoucmVhZEludCg4KSksdGhpcy5sb2NhbEhlYWRlck9mZnNldD09PVkuTUFYX1ZBTFVFXzMyQklUUyYmKHRoaXMubG9jYWxIZWFkZXJPZmZzZXQ9Si5yZWFkSW50KDgpKSx0aGlzLmRpc2tOdW1i''@;'; put 'put ''ZXJTdGFydD09PVkuTUFYX1ZBTFVFXzMyQklUUyYmKHRoaXMuZGlza051bWJlclN0YXJ0PUoucmVhZEludCg0KSl9fSxyZWFkRXh0cmFGaWVsZHM6ZnVuY3Rpb24oSyl7dmFyIHNlLG9lLGNlLEo9Sy5pbmRleDtmb3IodGhpcy5leHRyYUZpZWxkcz10aGlzLmV4dHJhRmllbGRzfHx7fTtLLmlu''@;'; put 'put ''ZGV4PEordGhpcy5leHRyYUZpZWxkc0xlbmd0aDspc2U9Sy5yZWFkSW50KDIpLG9lPUsucmVhZEludCgyKSxjZT1LLnJlYWRTdHJpbmcob2UpLHRoaXMuZXh0cmFGaWVsZHNbc2VdPXtpZDpzZSxsZW5ndGg6b2UsdmFsdWU6Y2V9fSxoYW5kbGVVVEY4OmZ1bmN0aW9uKCl7aWYodGhpcy51c2VV''@;'; put 'put ''VEY4KCkpdGhpcy5maWxlTmFtZT1OLnV0ZjhkZWNvZGUodGhpcy5maWxlTmFtZSksdGhpcy5maWxlQ29tbWVudD1OLnV0ZjhkZWNvZGUodGhpcy5maWxlQ29tbWVudCk7ZWxzZXt2YXIgSz10aGlzLmZpbmRFeHRyYUZpZWxkVW5pY29kZVBhdGgoKTtudWxsIT09SyYmKHRoaXMuZmlsZU5hbWU9''@;'; put 'put ''Syk7dmFyIEo9dGhpcy5maW5kRXh0cmFGaWVsZFVuaWNvZGVDb21tZW50KCk7bnVsbCE9PUomJih0aGlzLmZpbGVDb21tZW50PUopfX0sZmluZEV4dHJhRmllbGRVbmljb2RlUGF0aDpmdW5jdGlvbigpe3ZhciBLPXRoaXMuZXh0cmFGaWVsZHNbMjg3ODldO2lmKEspe3ZhciBKPW5ldyBhZShL''@;'; put 'put ''LnZhbHVlKTtyZXR1cm4gMSE9PUoucmVhZEludCgxKXx8Ti5jcmMzMih0aGlzLmZpbGVOYW1lKSE9PUoucmVhZEludCg0KT9udWxsOk4udXRmOGRlY29kZShKLnJlYWRTdHJpbmcoSy5sZW5ndGgtNSkpfXJldHVybiBudWxsfSxmaW5kRXh0cmFGaWVsZFVuaWNvZGVDb21tZW50OmZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIEs9dGhpcy5leHRyYUZpZWxkc1syNTQ2MV07aWYoSyl7dmFyIEo9bmV3IGFlKEsudmFsdWUpO3JldHVybiAxIT09Si5yZWFkSW50KDEpfHxOLmNyYzMyKHRoaXMuZmlsZUNvbW1lbnQpIT09Si5yZWFkSW50KDQpP251bGw6Ti51dGY4ZGVjb2RlKEoucmVhZFN0cmluZyhLLmxlbmd0''@;'; put 'put ''aC01KSl9cmV0dXJuIG51bGx9fSxqLmV4cG9ydHM9dGV9LHsiLi9jb21wcmVzc2VkT2JqZWN0IjoyLCIuL29iamVjdCI6MTMsIi4vc3RyaW5nUmVhZGVyIjoxNSwiLi91dGlscyI6MjF9XSwyNDpbZnVuY3Rpb24oUSxqLHJlKXsidXNlIHN0cmljdCI7dmFyIHRlPXt9OygwLFEoIi4vbGliL3V0''@;'; put 'put ''aWxzL2NvbW1vbiIpLmFzc2lnbikodGUsUSgiLi9saWIvZGVmbGF0ZSIpLFEoIi4vbGliL2luZmxhdGUiKSxRKCIuL2xpYi96bGliL2NvbnN0YW50cyIpKSxqLmV4cG9ydHM9dGV9LHsiLi9saWIvZGVmbGF0ZSI6MjUsIi4vbGliL2luZmxhdGUiOjI2LCIuL2xpYi91dGlscy9jb21tb24iOjI3''@;'; put 'put ''LCIuL2xpYi96bGliL2NvbnN0YW50cyI6MzB9XSwyNTpbZnVuY3Rpb24oUSxqLHJlKXsidXNlIHN0cmljdCI7dmFyIGFlPVEoIi4vemxpYi9kZWZsYXRlLmpzIiksWT1RKCIuL3V0aWxzL2NvbW1vbiIpLFc9USgiLi91dGlscy9zdHJpbmdzIiksTj1RKCIuL3psaWIvbWVzc2FnZXMiKSx0ZT1R''@;'; put 'put ''KCIuL3psaWIvenN0cmVhbSIpLEFlPWZ1bmN0aW9uKFRlKXt0aGlzLm9wdGlvbnM9WS5hc3NpZ24oe2xldmVsOi0xLG1ldGhvZDo4LGNodW5rU2l6ZToxNjM4NCx3aW5kb3dCaXRzOjE1LG1lbUxldmVsOjgsc3RyYXRlZ3k6MCx0bzoiIn0sVGV8fHt9KTt2YXIgTWU9dGhpcy5vcHRpb25zO01l''@;'; put 'put ''LnJhdyYmTWUud2luZG93Qml0cz4wP01lLndpbmRvd0JpdHM9LU1lLndpbmRvd0JpdHM6TWUuZ3ppcCYmTWUud2luZG93Qml0cz4wJiZNZS53aW5kb3dCaXRzPDE2JiYoTWUud2luZG93Qml0cys9MTYpLHRoaXMuZXJyPTAsdGhpcy5tc2c9IiIsdGhpcy5lbmRlZD0hMSx0aGlzLmNodW5rcz1b''@;'; put 'put ''XSx0aGlzLnN0cm09bmV3IHRlLHRoaXMuc3RybS5hdmFpbF9vdXQ9MDt2YXIgaGU9YWUuZGVmbGF0ZUluaXQyKHRoaXMuc3RybSxNZS5sZXZlbCxNZS5tZXRob2QsTWUud2luZG93Qml0cyxNZS5tZW1MZXZlbCxNZS5zdHJhdGVneSk7aWYoMCE9PWhlKXRocm93IG5ldyBFcnJvcihOW2hlXSk7''@;'; put 'put ''TWUuaGVhZGVyJiZhZS5kZWZsYXRlU2V0SGVhZGVyKHRoaXMuc3RybSxNZS5oZWFkZXIpfTtmdW5jdGlvbiBrZShUZSxNZSl7dmFyIGhlPW5ldyBBZShNZSk7aWYoaGUucHVzaChUZSwhMCksaGUuZXJyKXRocm93IGhlLm1zZztyZXR1cm4gaGUucmVzdWx0fUFlLnByb3RvdHlwZS5wdXNoPWZ1''@;'; put 'put ''bmN0aW9uKFRlLE1lKXt2YXIgeixlZSxoZT10aGlzLnN0cm0sTz10aGlzLm9wdGlvbnMuY2h1bmtTaXplO2lmKHRoaXMuZW5kZWQpcmV0dXJuITE7ZWU9TWU9PT1+fk1lP01lOiEwPT09TWU/NDowLGhlLmlucHV0PSJzdHJpbmciPT10eXBlb2YgVGU/Vy5zdHJpbmcyYnVmKFRlKTpUZSxoZS5u''@;'; put 'put ''ZXh0X2luPTAsaGUuYXZhaWxfaW49aGUuaW5wdXQubGVuZ3RoO2Rve2lmKDA9PT1oZS5hdmFpbF9vdXQmJihoZS5vdXRwdXQ9bmV3IFkuQnVmOChPKSxoZS5uZXh0X291dD0wLGhlLmF2YWlsX291dD1PKSwxIT09KHo9YWUuZGVmbGF0ZShoZSxlZSkpJiYwIT09eilyZXR1cm4gdGhpcy5vbkVu''@;'; put 'put ''ZCh6KSx0aGlzLmVuZGVkPSEwLCExOygwPT09aGUuYXZhaWxfb3V0fHwwPT09aGUuYXZhaWxfaW4mJjQ9PT1lZSkmJnRoaXMub25EYXRhKCJzdHJpbmciPT09dGhpcy5vcHRpb25zLnRvP1cuYnVmMmJpbnN0cmluZyhZLnNocmlua0J1ZihoZS5vdXRwdXQsaGUubmV4dF9vdXQpKTpZLnNocmlu''@;'; put 'put ''a0J1ZihoZS5vdXRwdXQsaGUubmV4dF9vdXQpKX13aGlsZSgoaGUuYXZhaWxfaW4+MHx8MD09PWhlLmF2YWlsX291dCkmJjEhPT16KTtyZXR1cm4gNCE9PWVlfHwoej1hZS5kZWZsYXRlRW5kKHRoaXMuc3RybSksdGhpcy5vbkVuZCh6KSx0aGlzLmVuZGVkPSEwLDA9PT16KX0sQWUucHJvdG90''@;'; put 'put ''eXBlLm9uRGF0YT1mdW5jdGlvbihUZSl7dGhpcy5jaHVua3MucHVzaChUZSl9LEFlLnByb3RvdHlwZS5vbkVuZD1mdW5jdGlvbihUZSl7MD09PVRlJiYodGhpcy5yZXN1bHQ9InN0cmluZyI9PT10aGlzLm9wdGlvbnMudG8/dGhpcy5jaHVua3Muam9pbigiIik6WS5mbGF0dGVuQ2h1bmtzKHRo''@;'; put 'put ''aXMuY2h1bmtzKSksdGhpcy5jaHVua3M9W10sdGhpcy5lcnI9VGUsdGhpcy5tc2c9dGhpcy5zdHJtLm1zZ30scmUuRGVmbGF0ZT1BZSxyZS5kZWZsYXRlPWtlLHJlLmRlZmxhdGVSYXc9ZnVuY3Rpb24gU2UoVGUsTWUpe3JldHVybihNZT1NZXx8e30pLnJhdz0hMCxrZShUZSxNZSl9LHJlLmd6''@;'; put 'put ''aXA9ZnVuY3Rpb24gSWUoVGUsTWUpe3JldHVybihNZT1NZXx8e30pLmd6aXA9ITAsa2UoVGUsTWUpfX0seyIuL3V0aWxzL2NvbW1vbiI6MjcsIi4vdXRpbHMvc3RyaW5ncyI6MjgsIi4vemxpYi9kZWZsYXRlLmpzIjozMiwiLi96bGliL21lc3NhZ2VzIjozNywiLi96bGliL3pzdHJlYW0iOjM5''@;'; put 'put ''fV0sMjY6W2Z1bmN0aW9uKFEsaixyZSl7InVzZSBzdHJpY3QiO3ZhciBhZT1RKCIuL3psaWIvaW5mbGF0ZS5qcyIpLFk9USgiLi91dGlscy9jb21tb24iKSxXPVEoIi4vdXRpbHMvc3RyaW5ncyIpLE49USgiLi96bGliL2NvbnN0YW50cyIpLHRlPVEoIi4vemxpYi9tZXNzYWdlcyIpLEs9USgi''@;'; put 'put ''Li96bGliL3pzdHJlYW0iKSxKPVEoIi4vemxpYi9nemhlYWRlciIpLHNlPWZ1bmN0aW9uKGRlKXt0aGlzLm9wdGlvbnM9WS5hc3NpZ24oe2NodW5rU2l6ZToxNjM4NCx3aW5kb3dCaXRzOjAsdG86IiJ9LGRlfHx7fSk7dmFyIHZlPXRoaXMub3B0aW9uczt2ZS5yYXcmJnZlLndpbmRvd0JpdHM+''@;'; put 'put ''PTAmJnZlLndpbmRvd0JpdHM8MTYmJih2ZS53aW5kb3dCaXRzPS12ZS53aW5kb3dCaXRzLDA9PT12ZS53aW5kb3dCaXRzJiYodmUud2luZG93Qml0cz0tMTUpKSx2ZS53aW5kb3dCaXRzPj0wJiZ2ZS53aW5kb3dCaXRzPDE2JiYhKGRlJiZkZS53aW5kb3dCaXRzKSYmKHZlLndpbmRvd0JpdHMr''@;'; put 'put ''PTMyKSx2ZS53aW5kb3dCaXRzPjE1JiZ2ZS53aW5kb3dCaXRzPDQ4JiYwPT0oMTUmdmUud2luZG93Qml0cykmJih2ZS53aW5kb3dCaXRzfD0xNSksdGhpcy5lcnI9MCx0aGlzLm1zZz0iIix0aGlzLmVuZGVkPSExLHRoaXMuY2h1bmtzPVtdLHRoaXMuc3RybT1uZXcgSyx0aGlzLnN0cm0uYXZh''@;'; put 'put ''aWxfb3V0PTA7dmFyIEFlPWFlLmluZmxhdGVJbml0Mih0aGlzLnN0cm0sdmUud2luZG93Qml0cyk7aWYoQWUhPT1OLlpfT0spdGhyb3cgbmV3IEVycm9yKHRlW0FlXSk7dGhpcy5oZWFkZXI9bmV3IEosYWUuaW5mbGF0ZUdldEhlYWRlcih0aGlzLnN0cm0sdGhpcy5oZWFkZXIpfTtmdW5jdGlv''@;'; put 'put ''biBvZShkZSx2ZSl7dmFyIEFlPW5ldyBzZSh2ZSk7aWYoQWUucHVzaChkZSwhMCksQWUuZXJyKXRocm93IEFlLm1zZztyZXR1cm4gQWUucmVzdWx0fXNlLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGRlLHZlKXt2YXIgU2UsSWUsVGUsTWUsaGUsQWU9dGhpcy5zdHJtLGtlPXRoaXMub3B0aW9u''@;'; put 'put ''cy5jaHVua1NpemU7aWYodGhpcy5lbmRlZClyZXR1cm4hMTtJZT12ZT09PX5+dmU/dmU6ITA9PT12ZT9OLlpfRklOSVNIOk4uWl9OT19GTFVTSCxBZS5pbnB1dD0ic3RyaW5nIj09dHlwZW9mIGRlP1cuYmluc3RyaW5nMmJ1ZihkZSk6ZGUsQWUubmV4dF9pbj0wLEFlLmF2YWlsX2luPUFlLmlu''@;'; put 'put ''cHV0Lmxlbmd0aDtkb3tpZigwPT09QWUuYXZhaWxfb3V0JiYoQWUub3V0cHV0PW5ldyBZLkJ1Zjgoa2UpLEFlLm5leHRfb3V0PTAsQWUuYXZhaWxfb3V0PWtlKSwoU2U9YWUuaW5mbGF0ZShBZSxOLlpfTk9fRkxVU0gpKSE9PU4uWl9TVFJFQU1fRU5EJiZTZSE9PU4uWl9PSylyZXR1cm4gdGhp''@;'; put 'put ''cy5vbkVuZChTZSksdGhpcy5lbmRlZD0hMCwhMTtBZS5uZXh0X291dCYmKDA9PT1BZS5hdmFpbF9vdXR8fFNlPT09Ti5aX1NUUkVBTV9FTkR8fDA9PT1BZS5hdmFpbF9pbiYmSWU9PT1OLlpfRklOSVNIKSYmKCJzdHJpbmciPT09dGhpcy5vcHRpb25zLnRvPyhUZT1XLnV0Zjhib3JkZXIoQWUu''@;'; put 'put ''b3V0cHV0LEFlLm5leHRfb3V0KSxNZT1BZS5uZXh0X291dC1UZSxoZT1XLmJ1ZjJzdHJpbmcoQWUub3V0cHV0LFRlKSxBZS5uZXh0X291dD1NZSxBZS5hdmFpbF9vdXQ9a2UtTWUsTWUmJlkuYXJyYXlTZXQoQWUub3V0cHV0LEFlLm91dHB1dCxUZSxNZSwwKSx0aGlzLm9uRGF0YShoZSkpOnRo''@;'; put 'put ''aXMub25EYXRhKFkuc2hyaW5rQnVmKEFlLm91dHB1dCxBZS5uZXh0X291dCkpKX13aGlsZShBZS5hdmFpbF9pbj4wJiZTZSE9PU4uWl9TVFJFQU1fRU5EKTtyZXR1cm4gU2U9PT1OLlpfU1RSRUFNX0VORCYmKEllPU4uWl9GSU5JU0gpLEllIT09Ti5aX0ZJTklTSHx8KFNlPWFlLmluZmxhdGVF''@;'; put 'put ''bmQodGhpcy5zdHJtKSx0aGlzLm9uRW5kKFNlKSx0aGlzLmVuZGVkPSEwLFNlPT09Ti5aX09LKX0sc2UucHJvdG90eXBlLm9uRGF0YT1mdW5jdGlvbihkZSl7dGhpcy5jaHVua3MucHVzaChkZSl9LHNlLnByb3RvdHlwZS5vbkVuZD1mdW5jdGlvbihkZSl7ZGU9PT1OLlpfT0smJih0aGlzLnJl''@;'; put 'put ''c3VsdD0ic3RyaW5nIj09PXRoaXMub3B0aW9ucy50bz90aGlzLmNodW5rcy5qb2luKCIiKTpZLmZsYXR0ZW5DaHVua3ModGhpcy5jaHVua3MpKSx0aGlzLmNodW5rcz1bXSx0aGlzLmVycj1kZSx0aGlzLm1zZz10aGlzLnN0cm0ubXNnfSxyZS5JbmZsYXRlPXNlLHJlLmluZmxhdGU9b2UscmUu''@;'; put 'put ''aW5mbGF0ZVJhdz1mdW5jdGlvbiBjZShkZSx2ZSl7cmV0dXJuKHZlPXZlfHx7fSkucmF3PSEwLG9lKGRlLHZlKX0scmUudW5nemlwPW9lfSx7Ii4vdXRpbHMvY29tbW9uIjoyNywiLi91dGlscy9zdHJpbmdzIjoyOCwiLi96bGliL2NvbnN0YW50cyI6MzAsIi4vemxpYi9nemhlYWRlciI6MzMs''@;'; put 'put ''Ii4vemxpYi9pbmZsYXRlLmpzIjozNSwiLi96bGliL21lc3NhZ2VzIjozNywiLi96bGliL3pzdHJlYW0iOjM5fV0sMjc6W2Z1bmN0aW9uKFEsaixyZSl7InVzZSBzdHJpY3QiO3ZhciBhZT0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXkmJiJ1bmRlZmluZWQiIT10eXBlb2YgVWludDE2''@;'; put 'put ''QXJyYXkmJiJ1bmRlZmluZWQiIT10eXBlb2YgSW50MzJBcnJheTtyZS5hc3NpZ249ZnVuY3Rpb24oTil7Zm9yKHZhciB0ZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7dGUubGVuZ3RoOyl7dmFyIEs9dGUuc2hpZnQoKTtpZihLKXtpZigib2JqZWN0IiE9dHlwZW9m''@;'; put 'put ''IEspdGhyb3cgbmV3IFR5cGVFcnJvcihLKyJtdXN0IGJlIG5vbi1vYmplY3QiKTtmb3IodmFyIEogaW4gSylLLmhhc093blByb3BlcnR5KEopJiYoTltKXT1LW0pdKX19cmV0dXJuIE59LHJlLnNocmlua0J1Zj1mdW5jdGlvbihOLHRlKXtyZXR1cm4gTi5sZW5ndGg9PT10ZT9OOk4uc3ViYXJy''@;'; put 'put ''YXk/Ti5zdWJhcnJheSgwLHRlKTooTi5sZW5ndGg9dGUsTil9O3ZhciBZPXthcnJheVNldDpmdW5jdGlvbihOLHRlLEssSixzZSl7aWYodGUuc3ViYXJyYXkmJk4uc3ViYXJyYXkpTi5zZXQodGUuc3ViYXJyYXkoSyxLK0opLHNlKTtlbHNlIGZvcih2YXIgb2U9MDtvZTxKO29lKyspTltzZStv''@;'; put 'put ''ZV09dGVbSytvZV19LGZsYXR0ZW5DaHVua3M6ZnVuY3Rpb24oTil7dmFyIHRlLEssSixzZSxvZSxjZTtmb3IoSj0wLHRlPTAsSz1OLmxlbmd0aDt0ZTxLO3RlKyspSis9Tlt0ZV0ubGVuZ3RoO2ZvcihjZT1uZXcgVWludDhBcnJheShKKSxzZT0wLHRlPTAsSz1OLmxlbmd0aDt0ZTxLO3RlKysp''@;'; put 'put ''Y2Uuc2V0KG9lPU5bdGVdLHNlKSxzZSs9b2UubGVuZ3RoO3JldHVybiBjZX19LFc9e2FycmF5U2V0OmZ1bmN0aW9uKE4sdGUsSyxKLHNlKXtmb3IodmFyIG9lPTA7b2U8SjtvZSsrKU5bc2Urb2VdPXRlW0srb2VdfSxmbGF0dGVuQ2h1bmtzOmZ1bmN0aW9uKE4pe3JldHVybltdLmNvbmNhdC5h''@;'; put 'put ''cHBseShbXSxOKX19O3JlLnNldFR5cGVkPWZ1bmN0aW9uKE4pe04/KHJlLkJ1Zjg9VWludDhBcnJheSxyZS5CdWYxNj1VaW50MTZBcnJheSxyZS5CdWYzMj1JbnQzMkFycmF5LHJlLmFzc2lnbihyZSxZKSk6KHJlLkJ1Zjg9QXJyYXkscmUuQnVmMTY9QXJyYXkscmUuQnVmMzI9QXJyYXkscmUu''@;'; put 'put ''YXNzaWduKHJlLFcpKX0scmUuc2V0VHlwZWQoYWUpfSx7fV0sMjg6W2Z1bmN0aW9uKFEsaixyZSl7InVzZSBzdHJpY3QiO3ZhciBhZT1RKCIuL2NvbW1vbiIpLFk9ITAsVz0hMDt0cnl7U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLFswXSl9Y2F0Y2goSil7WT0hMX10cnl7U3RyaW5n''@;'; put 'put ''LmZyb21DaGFyQ29kZS5hcHBseShudWxsLG5ldyBVaW50OEFycmF5KDEpKX1jYXRjaChKKXtXPSExfWZvcih2YXIgTj1uZXcgYWUuQnVmOCgyNTYpLHRlPTA7dGU8MjU2O3RlKyspTlt0ZV09dGU+PTI1Mj82OnRlPj0yNDg/NTp0ZT49MjQwPzQ6dGU+PTIyND8zOnRlPj0xOTI/MjoxO2Z1bmN0''@;'; put 'put ''aW9uIEsoSixzZSl7aWYoc2U8NjU1MzcmJihKLnN1YmFycmF5JiZXfHwhSi5zdWJhcnJheSYmWSkpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxhZS5zaHJpbmtCdWYoSixzZSkpO2Zvcih2YXIgb2U9IiIsY2U9MDtjZTxzZTtjZSsrKW9lKz1TdHJpbmcuZnJvbUNoYXJD''@;'; put 'put ''b2RlKEpbY2VdKTtyZXR1cm4gb2V9TlsyNTRdPU5bMjU0XT0xLHJlLnN0cmluZzJidWY9ZnVuY3Rpb24oSil7dmFyIHNlLG9lLGNlLGRlLHZlLEFlPUoubGVuZ3RoLGtlPTA7Zm9yKGRlPTA7ZGU8QWU7ZGUrKyk1NTI5Nj09KDY0NTEyJihvZT1KLmNoYXJDb2RlQXQoZGUpKSkmJmRlKzE8QWUm''@;'; put 'put ''JjU2MzIwPT0oNjQ1MTImKGNlPUouY2hhckNvZGVBdChkZSsxKSkpJiYob2U9NjU1MzYrKG9lLTU1Mjk2PDwxMCkrKGNlLTU2MzIwKSxkZSsrKSxrZSs9b2U8MTI4PzE6b2U8MjA0OD8yOm9lPDY1NTM2PzM6NDtmb3Ioc2U9bmV3IGFlLkJ1Zjgoa2UpLHZlPTAsZGU9MDt2ZTxrZTtkZSsrKTU1''@;'; put 'put ''Mjk2PT0oNjQ1MTImKG9lPUouY2hhckNvZGVBdChkZSkpKSYmZGUrMTxBZSYmNTYzMjA9PSg2NDUxMiYoY2U9Si5jaGFyQ29kZUF0KGRlKzEpKSkmJihvZT02NTUzNisob2UtNTUyOTY8PDEwKSsoY2UtNTYzMjApLGRlKyspLG9lPDEyOD9zZVt2ZSsrXT1vZTpvZTwyMDQ4PyhzZVt2ZSsrXT0x''@;'; put 'put ''OTJ8b2U+Pj42LHNlW3ZlKytdPTEyOHw2MyZvZSk6b2U8NjU1MzY/KHNlW3ZlKytdPTIyNHxvZT4+PjEyLHNlW3ZlKytdPTEyOHxvZT4+PjYmNjMsc2VbdmUrK109MTI4fDYzJm9lKTooc2VbdmUrK109MjQwfG9lPj4+MTgsc2VbdmUrK109MTI4fG9lPj4+MTImNjMsc2VbdmUrK109MTI4fG9l''@;'; put 'put ''Pj4+NiY2MyxzZVt2ZSsrXT0xMjh8NjMmb2UpO3JldHVybiBzZX0scmUuYnVmMmJpbnN0cmluZz1mdW5jdGlvbihKKXtyZXR1cm4gSyhKLEoubGVuZ3RoKX0scmUuYmluc3RyaW5nMmJ1Zj1mdW5jdGlvbihKKXtmb3IodmFyIHNlPW5ldyBhZS5CdWY4KEoubGVuZ3RoKSxvZT0wLGNlPXNlLmxl''@;'; put 'put ''bmd0aDtvZTxjZTtvZSsrKXNlW29lXT1KLmNoYXJDb2RlQXQob2UpO3JldHVybiBzZX0scmUuYnVmMnN0cmluZz1mdW5jdGlvbihKLHNlKXt2YXIgb2UsY2UsZGUsdmUsQWU9c2V8fEoubGVuZ3RoLGtlPW5ldyBBcnJheSgyKkFlKTtmb3IoY2U9MCxvZT0wO29lPEFlOylpZigoZGU9SltvZSsr''@;'; put 'put ''XSk8MTI4KWtlW2NlKytdPWRlO2Vsc2UgaWYoKHZlPU5bZGVdKT40KWtlW2NlKytdPTY1NTMzLG9lKz12ZS0xO2Vsc2V7Zm9yKGRlJj0yPT09dmU/MzE6Mz09PXZlPzE1Ojc7dmU+MSYmb2U8QWU7KWRlPWRlPDw2fDYzJkpbb2UrK10sdmUtLTt2ZT4xP2tlW2NlKytdPTY1NTMzOmRlPDY1NTM2''@;'; put 'put ''P2tlW2NlKytdPWRlOihrZVtjZSsrXT01NTI5NnwoZGUtPTY1NTM2KT4+MTAmMTAyMyxrZVtjZSsrXT01NjMyMHwxMDIzJmRlKX1yZXR1cm4gSyhrZSxjZSl9LHJlLnV0Zjhib3JkZXI9ZnVuY3Rpb24oSixzZSl7dmFyIG9lO2Zvcigoc2U9c2V8fEoubGVuZ3RoKT5KLmxlbmd0aCYmKHNlPUou''@;'; put 'put ''bGVuZ3RoKSxvZT1zZS0xO29lPj0wJiYxMjg9PSgxOTImSltvZV0pOylvZS0tO3JldHVybiBvZTwwfHwwPT09b2U/c2U6b2UrTltKW29lXV0+c2U/b2U6c2V9fSx7Ii4vY29tbW9uIjoyN31dLDI5OltmdW5jdGlvbihRLGoscmUpeyJ1c2Ugc3RyaWN0IjtqLmV4cG9ydHM9ZnVuY3Rpb24gYWUo''@;'; put 'put ''WSxXLE4sdGUpe2Zvcih2YXIgSz02NTUzNSZZfDAsSj1ZPj4+MTYmNjU1MzV8MCxzZT0wOzAhPT1OOyl7Ti09c2U9Tj4yZTM/MmUzOk47ZG97Sj1KKyhLPUsrV1t0ZSsrXXwwKXwwfXdoaWxlKC0tc2UpO0slPTY1NTIxLEolPTY1NTIxfXJldHVybiBLfEo8PDE2fDB9fSx7fV0sMzA6W2Z1bmN0''@;'; put 'put ''aW9uKFEsaixyZSl7ai5leHBvcnRzPXtaX05PX0ZMVVNIOjAsWl9QQVJUSUFMX0ZMVVNIOjEsWl9TWU5DX0ZMVVNIOjIsWl9GVUxMX0ZMVVNIOjMsWl9GSU5JU0g6NCxaX0JMT0NLOjUsWl9UUkVFUzo2LFpfT0s6MCxaX1NUUkVBTV9FTkQ6MSxaX05FRURfRElDVDoyLFpfRVJSTk86LTEsWl9T''@;'; put 'put ''VFJFQU1fRVJST1I6LTIsWl9EQVRBX0VSUk9SOi0zLFpfQlVGX0VSUk9SOi01LFpfTk9fQ09NUFJFU1NJT046MCxaX0JFU1RfU1BFRUQ6MSxaX0JFU1RfQ09NUFJFU1NJT046OSxaX0RFRkFVTFRfQ09NUFJFU1NJT046LTEsWl9GSUxURVJFRDoxLFpfSFVGRk1BTl9PTkxZOjIsWl9STEU6Myxa''@;'; put 'put ''X0ZJWEVEOjQsWl9ERUZBVUxUX1NUUkFURUdZOjAsWl9CSU5BUlk6MCxaX1RFWFQ6MSxaX1VOS05PV046MixaX0RFRkxBVEVEOjh9fSx7fV0sMzE6W2Z1bmN0aW9uKFEsaixyZSl7InVzZSBzdHJpY3QiO3ZhciBZPWZ1bmN0aW9uIGFlKCl7Zm9yKHZhciBOLHRlPVtdLEs9MDtLPDI1NjtLKysp''@;'; put 'put ''e049Sztmb3IodmFyIEo9MDtKPDg7SisrKU49MSZOPzM5ODgyOTIzODReTj4+PjE6Tj4+PjE7dGVbS109Tn1yZXR1cm4gdGV9KCk7ai5leHBvcnRzPWZ1bmN0aW9uIFcoTix0ZSxLLEope3ZhciBzZT1ZLG9lPUorSztOXj0tMTtmb3IodmFyIGNlPUo7Y2U8b2U7Y2UrKylOPU4+Pj44XnNlWzI1''@;'; put 'put ''NSYoTl50ZVtjZV0pXTtyZXR1cm4tMV5OfX0se31dLDMyOltmdW5jdGlvbihRLGoscmUpeyJ1c2Ugc3RyaWN0Ijt2YXIgYWU9USgiLi4vdXRpbHMvY29tbW9uIiksWT1RKCIuL3RyZWVzIiksVz1RKCIuL2FkbGVyMzIiKSxOPVEoIi4vY3JjMzIiKSx0ZT1RKCIuL21lc3NhZ2VzIiksZ3Q9MjYy''@;'; put 'put ''O2Z1bmN0aW9uIGZ0KE50LHNuKXtyZXR1cm4gTnQubXNnPXRlW3NuXSxzbn1mdW5jdGlvbiBIdChOdCl7cmV0dXJuKE50PDwxKS0oTnQ+ND85OjApfWZ1bmN0aW9uIEdlKE50KXtmb3IodmFyIHNuPU50Lmxlbmd0aDstLXNuPj0wOylOdFtzbl09MH1mdW5jdGlvbiBVZShOdCl7dmFyIHNuPU50''@;'; put 'put ''LnN0YXRlLFVuPXNuLnBlbmRpbmc7VW4+TnQuYXZhaWxfb3V0JiYoVW49TnQuYXZhaWxfb3V0KSwwIT09VW4mJihhZS5hcnJheVNldChOdC5vdXRwdXQsc24ucGVuZGluZ19idWYsc24ucGVuZGluZ19vdXQsVW4sTnQubmV4dF9vdXQpLE50Lm5leHRfb3V0Kz1Vbixzbi5wZW5kaW5nX291dCs9''@;'; put 'put ''VW4sTnQudG90YWxfb3V0Kz1VbixOdC5hdmFpbF9vdXQtPVVuLHNuLnBlbmRpbmctPVVuLDA9PT1zbi5wZW5kaW5nJiYoc24ucGVuZGluZ19vdXQ9MCkpfWZ1bmN0aW9uIHl0KE50LHNuKXtZLl90cl9mbHVzaF9ibG9jayhOdCxOdC5ibG9ja19zdGFydD49MD9OdC5ibG9ja19zdGFydDotMSxO''@;'; put 'put ''dC5zdHJzdGFydC1OdC5ibG9ja19zdGFydCxzbiksTnQuYmxvY2tfc3RhcnQ9TnQuc3Ryc3RhcnQsVWUoTnQuc3RybSl9ZnVuY3Rpb24ganQoTnQsc24pe050LnBlbmRpbmdfYnVmW050LnBlbmRpbmcrK109c259ZnVuY3Rpb24gSnQoTnQsc24pe050LnBlbmRpbmdfYnVmW050LnBlbmRpbmcr''@;'; put 'put ''K109c24+Pj44JjI1NSxOdC5wZW5kaW5nX2J1ZltOdC5wZW5kaW5nKytdPTI1NSZzbn1mdW5jdGlvbiBnbihOdCxzbixVbix3bil7dmFyIHRuPU50LmF2YWlsX2luO3JldHVybiB0bj53biYmKHRuPXduKSwwPT09dG4/MDooTnQuYXZhaWxfaW4tPXRuLGFlLmFycmF5U2V0KHNuLE50LmlucHV0''@;'; put 'put ''LE50Lm5leHRfaW4sdG4sVW4pLDE9PT1OdC5zdGF0ZS53cmFwP050LmFkbGVyPVcoTnQuYWRsZXIsc24sdG4sVW4pOjI9PT1OdC5zdGF0ZS53cmFwJiYoTnQuYWRsZXI9TihOdC5hZGxlcixzbix0bixVbikpLE50Lm5leHRfaW4rPXRuLE50LnRvdGFsX2luKz10bix0bil9ZnVuY3Rpb24gZG4o''@;'; put 'put ''TnQsc24pe3ZhciB0bix6bixVbj1OdC5tYXhfY2hhaW5fbGVuZ3RoLHduPU50LnN0cnN0YXJ0LFRyPU50LnByZXZfbGVuZ3RoLEJuPU50Lm5pY2VfbWF0Y2gsa3I9TnQuc3Ryc3RhcnQ+TnQud19zaXplLWd0P050LnN0cnN0YXJ0LShOdC53X3NpemUtZ3QpOjAsbW49TnQud2luZG93LHVuPU50''@;'; put 'put ''LndfbWFzayxjbj1OdC5wcmV2LF9uPU50LnN0cnN0YXJ0KzI1OCxHdD1tblt3bitUci0xXSxrbj1tblt3bitUcl07TnQucHJldl9sZW5ndGg+PU50Lmdvb2RfbWF0Y2gmJihVbj4+PTIpLEJuPk50Lmxvb2thaGVhZCYmKEJuPU50Lmxvb2thaGVhZCk7ZG97aWYobW5bKHRuPXNuKStUcl09PT1r''@;'; put 'put ''biYmbW5bdG4rVHItMV09PT1HdCYmbW5bdG5dPT09bW5bd25dJiZtblsrK3RuXT09PW1uW3duKzFdKXt3bis9Mix0bisrO2Rve313aGlsZShtblsrK3duXT09PW1uWysrdG5dJiZtblsrK3duXT09PW1uWysrdG5dJiZtblsrK3duXT09PW1uWysrdG5dJiZtblsrK3duXT09PW1uWysrdG5dJiZt''@;'; put 'put ''blsrK3duXT09PW1uWysrdG5dJiZtblsrK3duXT09PW1uWysrdG5dJiZtblsrK3duXT09PW1uWysrdG5dJiZtblsrK3duXT09PW1uWysrdG5dJiZ3bjxfbik7aWYoem49MjU4LShfbi13biksd249X24tMjU4LHpuPlRyKXtpZihOdC5tYXRjaF9zdGFydD1zbixUcj16bix6bj49Qm4pYnJlYWs7''@;'; put 'put ''R3Q9bW5bd24rVHItMV0sa249bW5bd24rVHJdfX19d2hpbGUoKHNuPWNuW3NuJnVuXSk+a3ImJjAhPS0tVW4pO3JldHVybiBUcjw9TnQubG9va2FoZWFkP1RyOk50Lmxvb2thaGVhZH1mdW5jdGlvbiB5bihOdCl7dmFyIFVuLHduLHRuLHpuLFRyLHNuPU50Lndfc2l6ZTtkb3tpZih6bj1OdC53''@;'; put 'put ''aW5kb3dfc2l6ZS1OdC5sb29rYWhlYWQtTnQuc3Ryc3RhcnQsTnQuc3Ryc3RhcnQ+PXNuKyhzbi1ndCkpe2FlLmFycmF5U2V0KE50LndpbmRvdyxOdC53aW5kb3csc24sc24sMCksTnQubWF0Y2hfc3RhcnQtPXNuLE50LnN0cnN0YXJ0LT1zbixOdC5ibG9ja19zdGFydC09c24sVW49d249TnQu''@;'; put 'put ''aGFzaF9zaXplO2Rve3RuPU50LmhlYWRbLS1Vbl0sTnQuaGVhZFtVbl09dG4+PXNuP3RuLXNuOjB9d2hpbGUoLS13bik7VW49d249c247ZG97dG49TnQucHJldlstLVVuXSxOdC5wcmV2W1VuXT10bj49c24/dG4tc246MH13aGlsZSgtLXduKTt6bis9c259aWYoMD09PU50LnN0cm0uYXZhaWxf''@;'; put 'put ''aW4pYnJlYWs7aWYod249Z24oTnQuc3RybSxOdC53aW5kb3csTnQuc3Ryc3RhcnQrTnQubG9va2FoZWFkLHpuKSxOdC5sb29rYWhlYWQrPXduLE50Lmxvb2thaGVhZCtOdC5pbnNlcnQ+PTMpZm9yKE50Lmluc19oPU50LndpbmRvd1tUcj1OdC5zdHJzdGFydC1OdC5pbnNlcnRdLE50Lmluc19o''@;'; put 'put ''PShOdC5pbnNfaDw8TnQuaGFzaF9zaGlmdF5OdC53aW5kb3dbVHIrMV0pJk50Lmhhc2hfbWFzaztOdC5pbnNlcnQmJihOdC5pbnNfaD0oTnQuaW5zX2g8PE50Lmhhc2hfc2hpZnReTnQud2luZG93W1RyKzMtMV0pJk50Lmhhc2hfbWFzayxOdC5wcmV2W1RyJk50LndfbWFza109TnQuaGVhZFtO''@;'; put 'put ''dC5pbnNfaF0sTnQuaGVhZFtOdC5pbnNfaF09VHIsVHIrKyxOdC5pbnNlcnQtLSwhKE50Lmxvb2thaGVhZCtOdC5pbnNlcnQ8MykpOyk7fXdoaWxlKE50Lmxvb2thaGVhZDxndCYmMCE9PU50LnN0cm0uYXZhaWxfaW4pfWZ1bmN0aW9uIE5uKE50LHNuKXtmb3IodmFyIFVuLHduOzspe2lmKE50''@;'; put 'put ''Lmxvb2thaGVhZDxndCl7aWYoeW4oTnQpLE50Lmxvb2thaGVhZDxndCYmMD09PXNuKXJldHVybiAxO2lmKDA9PT1OdC5sb29rYWhlYWQpYnJlYWt9aWYoVW49MCxOdC5sb29rYWhlYWQ+PTMmJihOdC5pbnNfaD0oTnQuaW5zX2g8PE50Lmhhc2hfc2hpZnReTnQud2luZG93W050LnN0cnN0YXJ0''@;'; put 'put ''KzMtMV0pJk50Lmhhc2hfbWFzayxVbj1OdC5wcmV2W050LnN0cnN0YXJ0Jk50LndfbWFza109TnQuaGVhZFtOdC5pbnNfaF0sTnQuaGVhZFtOdC5pbnNfaF09TnQuc3Ryc3RhcnQpLDAhPT1VbiYmTnQuc3Ryc3RhcnQtVW48PU50Lndfc2l6ZS1ndCYmKE50Lm1hdGNoX2xlbmd0aD1kbihOdCxV''@;'; put 'put ''bikpLE50Lm1hdGNoX2xlbmd0aD49MylpZih3bj1ZLl90cl90YWxseShOdCxOdC5zdHJzdGFydC1OdC5tYXRjaF9zdGFydCxOdC5tYXRjaF9sZW5ndGgtMyksTnQubG9va2FoZWFkLT1OdC5tYXRjaF9sZW5ndGgsTnQubWF0Y2hfbGVuZ3RoPD1OdC5tYXhfbGF6eV9tYXRjaCYmTnQubG9va2Fo''@;'; put 'put ''ZWFkPj0zKXtOdC5tYXRjaF9sZW5ndGgtLTtkb3tOdC5zdHJzdGFydCsrLE50Lmluc19oPShOdC5pbnNfaDw8TnQuaGFzaF9zaGlmdF5OdC53aW5kb3dbTnQuc3Ryc3RhcnQrMy0xXSkmTnQuaGFzaF9tYXNrLFVuPU50LnByZXZbTnQuc3Ryc3RhcnQmTnQud19tYXNrXT1OdC5oZWFkW050Lmlu''@;'; put 'put ''c19oXSxOdC5oZWFkW050Lmluc19oXT1OdC5zdHJzdGFydH13aGlsZSgwIT0tLU50Lm1hdGNoX2xlbmd0aCk7TnQuc3Ryc3RhcnQrK31lbHNlIE50LnN0cnN0YXJ0Kz1OdC5tYXRjaF9sZW5ndGgsTnQubWF0Y2hfbGVuZ3RoPTAsTnQuaW5zX2g9TnQud2luZG93W050LnN0cnN0YXJ0XSxOdC5p''@;'; put 'put ''bnNfaD0oTnQuaW5zX2g8PE50Lmhhc2hfc2hpZnReTnQud2luZG93W050LnN0cnN0YXJ0KzFdKSZOdC5oYXNoX21hc2s7ZWxzZSB3bj1ZLl90cl90YWxseShOdCwwLE50LndpbmRvd1tOdC5zdHJzdGFydF0pLE50Lmxvb2thaGVhZC0tLE50LnN0cnN0YXJ0Kys7aWYod24mJih5dChOdCwhMSks''@;'; put 'put ''MD09PU50LnN0cm0uYXZhaWxfb3V0KSlyZXR1cm4gMX1yZXR1cm4gTnQuaW5zZXJ0PU50LnN0cnN0YXJ0PDI/TnQuc3Ryc3RhcnQ6Miw0PT09c24/KHl0KE50LCEwKSwwPT09TnQuc3RybS5hdmFpbF9vdXQ/Mzo0KTpOdC5sYXN0X2xpdCYmKHl0KE50LCExKSwwPT09TnQuc3RybS5hdmFpbF9v''@;'; put 'put ''dXQpPzE6Mn1mdW5jdGlvbiBibihOdCxzbil7Zm9yKHZhciBVbix3bix0bjs7KXtpZihOdC5sb29rYWhlYWQ8Z3Qpe2lmKHluKE50KSxOdC5sb29rYWhlYWQ8Z3QmJjA9PT1zbilyZXR1cm4gMTtpZigwPT09TnQubG9va2FoZWFkKWJyZWFrfWlmKFVuPTAsTnQubG9va2FoZWFkPj0zJiYoTnQu''@;'; put 'put ''aW5zX2g9KE50Lmluc19oPDxOdC5oYXNoX3NoaWZ0Xk50LndpbmRvd1tOdC5zdHJzdGFydCszLTFdKSZOdC5oYXNoX21hc2ssVW49TnQucHJldltOdC5zdHJzdGFydCZOdC53X21hc2tdPU50LmhlYWRbTnQuaW5zX2hdLE50LmhlYWRbTnQuaW5zX2hdPU50LnN0cnN0YXJ0KSxOdC5wcmV2X2xl''@;'; put 'put ''bmd0aD1OdC5tYXRjaF9sZW5ndGgsTnQucHJldl9tYXRjaD1OdC5tYXRjaF9zdGFydCxOdC5tYXRjaF9sZW5ndGg9MiwwIT09VW4mJk50LnByZXZfbGVuZ3RoPE50Lm1heF9sYXp5X21hdGNoJiZOdC5zdHJzdGFydC1Vbjw9TnQud19zaXplLWd0JiYoTnQubWF0Y2hfbGVuZ3RoPWRuKE50LFVu''@;'; put 'put ''KSxOdC5tYXRjaF9sZW5ndGg8PTUmJigxPT09TnQuc3RyYXRlZ3l8fDM9PT1OdC5tYXRjaF9sZW5ndGgmJk50LnN0cnN0YXJ0LU50Lm1hdGNoX3N0YXJ0PjQwOTYpJiYoTnQubWF0Y2hfbGVuZ3RoPTIpKSxOdC5wcmV2X2xlbmd0aD49MyYmTnQubWF0Y2hfbGVuZ3RoPD1OdC5wcmV2X2xlbmd0''@;'; put 'put ''aCl7dG49TnQuc3Ryc3RhcnQrTnQubG9va2FoZWFkLTMsd249WS5fdHJfdGFsbHkoTnQsTnQuc3Ryc3RhcnQtMS1OdC5wcmV2X21hdGNoLE50LnByZXZfbGVuZ3RoLTMpLE50Lmxvb2thaGVhZC09TnQucHJldl9sZW5ndGgtMSxOdC5wcmV2X2xlbmd0aC09Mjtkb3srK050LnN0cnN0YXJ0PD10''@;'; put 'put ''biYmKE50Lmluc19oPShOdC5pbnNfaDw8TnQuaGFzaF9zaGlmdF5OdC53aW5kb3dbTnQuc3Ryc3RhcnQrMy0xXSkmTnQuaGFzaF9tYXNrLFVuPU50LnByZXZbTnQuc3Ryc3RhcnQmTnQud19tYXNrXT1OdC5oZWFkW050Lmluc19oXSxOdC5oZWFkW050Lmluc19oXT1OdC5zdHJzdGFydCl9d2hp''@;'; put 'put ''bGUoMCE9LS1OdC5wcmV2X2xlbmd0aCk7aWYoTnQubWF0Y2hfYXZhaWxhYmxlPTAsTnQubWF0Y2hfbGVuZ3RoPTIsTnQuc3Ryc3RhcnQrKyx3biYmKHl0KE50LCExKSwwPT09TnQuc3RybS5hdmFpbF9vdXQpKXJldHVybiAxfWVsc2UgaWYoTnQubWF0Y2hfYXZhaWxhYmxlKXtpZigod249WS5f''@;'; put 'put ''dHJfdGFsbHkoTnQsMCxOdC53aW5kb3dbTnQuc3Ryc3RhcnQtMV0pKSYmeXQoTnQsITEpLE50LnN0cnN0YXJ0KyssTnQubG9va2FoZWFkLS0sMD09PU50LnN0cm0uYXZhaWxfb3V0KXJldHVybiAxfWVsc2UgTnQubWF0Y2hfYXZhaWxhYmxlPTEsTnQuc3Ryc3RhcnQrKyxOdC5sb29rYWhlYWQt''@;'; put 'put ''LX1yZXR1cm4gTnQubWF0Y2hfYXZhaWxhYmxlJiYod249WS5fdHJfdGFsbHkoTnQsMCxOdC53aW5kb3dbTnQuc3Ryc3RhcnQtMV0pLE50Lm1hdGNoX2F2YWlsYWJsZT0wKSxOdC5pbnNlcnQ9TnQuc3Ryc3RhcnQ8Mj9OdC5zdHJzdGFydDoyLDQ9PT1zbj8oeXQoTnQsITApLDA9PT1OdC5zdHJt''@;'; put 'put ''LmF2YWlsX291dD8zOjQpOk50Lmxhc3RfbGl0JiYoeXQoTnQsITEpLDA9PT1OdC5zdHJtLmF2YWlsX291dCk/MToyfXZhciBGcixYbj1mdW5jdGlvbihOdCxzbixVbix3bix0bil7dGhpcy5nb29kX2xlbmd0aD1OdCx0aGlzLm1heF9sYXp5PXNuLHRoaXMubmljZV9sZW5ndGg9VW4sdGhpcy5t''@;'; put 'put ''YXhfY2hhaW49d24sdGhpcy5mdW5jPXRufTtmdW5jdGlvbiBxdCgpe3RoaXMuc3RybT1udWxsLHRoaXMuc3RhdHVzPTAsdGhpcy5wZW5kaW5nX2J1Zj1udWxsLHRoaXMucGVuZGluZ19idWZfc2l6ZT0wLHRoaXMucGVuZGluZ19vdXQ9MCx0aGlzLnBlbmRpbmc9MCx0aGlzLndyYXA9MCx0aGlz''@;'; put 'put ''Lmd6aGVhZD1udWxsLHRoaXMuZ3ppbmRleD0wLHRoaXMubWV0aG9kPTgsdGhpcy5sYXN0X2ZsdXNoPS0xLHRoaXMud19zaXplPTAsdGhpcy53X2JpdHM9MCx0aGlzLndfbWFzaz0wLHRoaXMud2luZG93PW51bGwsdGhpcy53aW5kb3dfc2l6ZT0wLHRoaXMucHJldj1udWxsLHRoaXMuaGVhZD1u''@;'; put 'put ''dWxsLHRoaXMuaW5zX2g9MCx0aGlzLmhhc2hfc2l6ZT0wLHRoaXMuaGFzaF9iaXRzPTAsdGhpcy5oYXNoX21hc2s9MCx0aGlzLmhhc2hfc2hpZnQ9MCx0aGlzLmJsb2NrX3N0YXJ0PTAsdGhpcy5tYXRjaF9sZW5ndGg9MCx0aGlzLnByZXZfbWF0Y2g9MCx0aGlzLm1hdGNoX2F2YWlsYWJsZT0w''@;'; put 'put ''LHRoaXMuc3Ryc3RhcnQ9MCx0aGlzLm1hdGNoX3N0YXJ0PTAsdGhpcy5sb29rYWhlYWQ9MCx0aGlzLnByZXZfbGVuZ3RoPTAsdGhpcy5tYXhfY2hhaW5fbGVuZ3RoPTAsdGhpcy5tYXhfbGF6eV9tYXRjaD0wLHRoaXMubGV2ZWw9MCx0aGlzLnN0cmF0ZWd5PTAsdGhpcy5nb29kX21hdGNoPTAs''@;'; put 'put ''dGhpcy5uaWNlX21hdGNoPTAsdGhpcy5keW5fbHRyZWU9bmV3IGFlLkJ1ZjE2KDExNDYpLHRoaXMuZHluX2R0cmVlPW5ldyBhZS5CdWYxNigxMjIpLHRoaXMuYmxfdHJlZT1uZXcgYWUuQnVmMTYoNzgpLEdlKHRoaXMuZHluX2x0cmVlKSxHZSh0aGlzLmR5bl9kdHJlZSksR2UodGhpcy5ibF90''@;'; put 'put ''cmVlKSx0aGlzLmxfZGVzYz1udWxsLHRoaXMuZF9kZXNjPW51bGwsdGhpcy5ibF9kZXNjPW51bGwsdGhpcy5ibF9jb3VudD1uZXcgYWUuQnVmMTYoMTYpLHRoaXMuaGVhcD1uZXcgYWUuQnVmMTYoNTczKSxHZSh0aGlzLmhlYXApLHRoaXMuaGVhcF9sZW49MCx0aGlzLmhlYXBfbWF4PTAsdGhp''@;'; put 'put ''cy5kZXB0aD1uZXcgYWUuQnVmMTYoNTczKSxHZSh0aGlzLmRlcHRoKSx0aGlzLmxfYnVmPTAsdGhpcy5saXRfYnVmc2l6ZT0wLHRoaXMubGFzdF9saXQ9MCx0aGlzLmRfYnVmPTAsdGhpcy5vcHRfbGVuPTAsdGhpcy5zdGF0aWNfbGVuPTAsdGhpcy5tYXRjaGVzPTAsdGhpcy5pbnNlcnQ9MCx0''@;'; put 'put ''aGlzLmJpX2J1Zj0wLHRoaXMuYmlfdmFsaWQ9MH1mdW5jdGlvbiBwcihOdCl7dmFyIHNuO3JldHVybiBOdCYmTnQuc3RhdGU/KE50LnRvdGFsX2luPU50LnRvdGFsX291dD0wLE50LmRhdGFfdHlwZT0yLChzbj1OdC5zdGF0ZSkucGVuZGluZz0wLHNuLnBlbmRpbmdfb3V0PTAsc24ud3JhcDww''@;'; put 'put ''JiYoc24ud3JhcD0tc24ud3JhcCksc24uc3RhdHVzPXNuLndyYXA/NDI6MTEzLE50LmFkbGVyPTI9PT1zbi53cmFwPzA6MSxzbi5sYXN0X2ZsdXNoPTAsWS5fdHJfaW5pdChzbiksMCk6ZnQoTnQsLTIpfWZ1bmN0aW9uIG5yKE50KXt2YXIgc249cHIoTnQpO3JldHVybiAwPT09c24mJmZ1bmN0''@;'; put 'put ''aW9uIHhyKE50KXtOdC53aW5kb3dfc2l6ZT0yKk50Lndfc2l6ZSxHZShOdC5oZWFkKSxOdC5tYXhfbGF6eV9tYXRjaD1GcltOdC5sZXZlbF0ubWF4X2xhenksTnQuZ29vZF9tYXRjaD1GcltOdC5sZXZlbF0uZ29vZF9sZW5ndGgsTnQubmljZV9tYXRjaD1GcltOdC5sZXZlbF0ubmljZV9sZW5n''@;'; put 'put ''dGgsTnQubWF4X2NoYWluX2xlbmd0aD1GcltOdC5sZXZlbF0ubWF4X2NoYWluLE50LnN0cnN0YXJ0PTAsTnQuYmxvY2tfc3RhcnQ9MCxOdC5sb29rYWhlYWQ9MCxOdC5pbnNlcnQ9MCxOdC5tYXRjaF9sZW5ndGg9TnQucHJldl9sZW5ndGg9MixOdC5tYXRjaF9hdmFpbGFibGU9MCxOdC5pbnNf''@;'; put 'put ''aD0wfShOdC5zdGF0ZSksc259ZnVuY3Rpb24gcW4oTnQsc24sVW4sd24sdG4sem4pe2lmKCFOdClyZXR1cm4tMjt2YXIgVHI9MTtpZigtMT09PXNuJiYoc249Niksd248MD8oVHI9MCx3bj0td24pOnduPjE1JiYoVHI9Mix3bi09MTYpLHRuPDF8fHRuPjl8fDghPT1Vbnx8d248OHx8d24+MTV8''@;'; put 'put ''fHNuPDB8fHNuPjl8fHpuPDB8fHpuPjQpcmV0dXJuIGZ0KE50LC0yKTs4PT09d24mJih3bj05KTt2YXIgQm49bmV3IHF0O3JldHVybiBOdC5zdGF0ZT1CbixCbi5zdHJtPU50LEJuLndyYXA9VHIsQm4uZ3poZWFkPW51bGwsQm4ud19iaXRzPXduLEJuLndfc2l6ZT0xPDxCbi53X2JpdHMsQm4u''@;'; put 'put ''d19tYXNrPUJuLndfc2l6ZS0xLEJuLmhhc2hfYml0cz10bis3LEJuLmhhc2hfc2l6ZT0xPDxCbi5oYXNoX2JpdHMsQm4uaGFzaF9tYXNrPUJuLmhhc2hfc2l6ZS0xLEJuLmhhc2hfc2hpZnQ9fn4oKEJuLmhhc2hfYml0cyszLTEpLzMpLEJuLndpbmRvdz1uZXcgYWUuQnVmOCgyKkJuLndfc2l6''@;'; put 'put ''ZSksQm4uaGVhZD1uZXcgYWUuQnVmMTYoQm4uaGFzaF9zaXplKSxCbi5wcmV2PW5ldyBhZS5CdWYxNihCbi53X3NpemUpLEJuLmxpdF9idWZzaXplPTE8PHRuKzYsQm4ucGVuZGluZ19idWZfc2l6ZT00KkJuLmxpdF9idWZzaXplLEJuLnBlbmRpbmdfYnVmPW5ldyBhZS5CdWY4KEJuLnBlbmRp''@;'; put 'put ''bmdfYnVmX3NpemUpLEJuLmRfYnVmPUJuLmxpdF9idWZzaXplPj4xLEJuLmxfYnVmPTMqQm4ubGl0X2J1ZnNpemUsQm4ubGV2ZWw9c24sQm4uc3RyYXRlZ3k9em4sQm4ubWV0aG9kPVVuLG5yKE50KX1Gcj1bbmV3IFhuKDAsMCwwLDAsZnVuY3Rpb24gbG4oTnQsc24pe3ZhciBVbj02NTUzNTtm''@;'; put 'put ''b3IoVW4+TnQucGVuZGluZ19idWZfc2l6ZS01JiYoVW49TnQucGVuZGluZ19idWZfc2l6ZS01KTs7KXtpZihOdC5sb29rYWhlYWQ8PTEpe2lmKHluKE50KSwwPT09TnQubG9va2FoZWFkJiYwPT09c24pcmV0dXJuIDE7aWYoMD09PU50Lmxvb2thaGVhZClicmVha31OdC5zdHJzdGFydCs9TnQu''@;'; put 'put ''bG9va2FoZWFkLE50Lmxvb2thaGVhZD0wO3ZhciB3bj1OdC5ibG9ja19zdGFydCtVbjtpZigoMD09PU50LnN0cnN0YXJ0fHxOdC5zdHJzdGFydD49d24pJiYoTnQubG9va2FoZWFkPU50LnN0cnN0YXJ0LXduLE50LnN0cnN0YXJ0PXduLHl0KE50LCExKSwwPT09TnQuc3RybS5hdmFpbF9vdXQp''@;'; put 'put ''fHxOdC5zdHJzdGFydC1OdC5ibG9ja19zdGFydD49TnQud19zaXplLWd0JiYoeXQoTnQsITEpLDA9PT1OdC5zdHJtLmF2YWlsX291dCkpcmV0dXJuIDF9cmV0dXJuIE50Lmluc2VydD0wLDQ9PT1zbj8oeXQoTnQsITApLDA9PT1OdC5zdHJtLmF2YWlsX291dD8zOjQpOihOdC5zdHJzdGFydD5O''@;'; put 'put ''dC5ibG9ja19zdGFydCYmeXQoTnQsITEpLDEpfSksbmV3IFhuKDQsNCw4LDQsTm4pLG5ldyBYbig0LDUsMTYsOCxObiksbmV3IFhuKDQsNiwzMiwzMixObiksbmV3IFhuKDQsNCwxNiwxNixibiksbmV3IFhuKDgsMTYsMzIsMzIsYm4pLG5ldyBYbig4LDE2LDEyOCwxMjgsYm4pLG5ldyBYbig4''@;'; put 'put ''LDMyLDEyOCwyNTYsYm4pLG5ldyBYbigzMiwxMjgsMjU4LDEwMjQsYm4pLG5ldyBYbigzMiwyNTgsMjU4LDQwOTYsYm4pXSxyZS5kZWZsYXRlSW5pdD1mdW5jdGlvbiBXdChOdCxzbil7cmV0dXJuIHFuKE50LHNuLDgsMTUsOCwwKX0scmUuZGVmbGF0ZUluaXQyPXFuLHJlLmRlZmxhdGVSZXNl''@;'; put 'put ''dD1ucixyZS5kZWZsYXRlUmVzZXRLZWVwPXByLHJlLmRlZmxhdGVTZXRIZWFkZXI9ZnVuY3Rpb24gQW4oTnQsc24pe3JldHVybiBOdCYmTnQuc3RhdGUmJjI9PT1OdC5zdGF0ZS53cmFwPyhOdC5zdGF0ZS5nemhlYWQ9c24sMCk6LTJ9LHJlLmRlZmxhdGU9ZnVuY3Rpb24gcG4oTnQsc24pe3Zh''@;'; put 'put ''ciBVbix3bix0bix6bjtpZighTnR8fCFOdC5zdGF0ZXx8c24+NXx8c248MClyZXR1cm4gTnQ/ZnQoTnQsLTIpOi0yO2lmKHduPU50LnN0YXRlLCFOdC5vdXRwdXR8fCFOdC5pbnB1dCYmMCE9PU50LmF2YWlsX2lufHw2NjY9PT13bi5zdGF0dXMmJjQhPT1zbilyZXR1cm4gZnQoTnQsMD09PU50''@;'; put 'put ''LmF2YWlsX291dD8tNTotMik7aWYod24uc3RybT1OdCxVbj13bi5sYXN0X2ZsdXNoLHduLmxhc3RfZmx1c2g9c24sNDI9PT13bi5zdGF0dXMpaWYoMj09PXduLndyYXApTnQuYWRsZXI9MCxqdCh3biwzMSksanQod24sMTM5KSxqdCh3biw4KSx3bi5nemhlYWQ/KGp0KHduLCh3bi5nemhlYWQu''@;'; put 'put ''dGV4dD8xOjApKyh3bi5nemhlYWQuaGNyYz8yOjApKyh3bi5nemhlYWQuZXh0cmE/NDowKSsod24uZ3poZWFkLm5hbWU/ODowKSsod24uZ3poZWFkLmNvbW1lbnQ/MTY6MCkpLGp0KHduLDI1NSZ3bi5nemhlYWQudGltZSksanQod24sd24uZ3poZWFkLnRpbWU+PjgmMjU1KSxqdCh3bix3bi5n''@;'; put 'put ''emhlYWQudGltZT4+MTYmMjU1KSxqdCh3bix3bi5nemhlYWQudGltZT4+MjQmMjU1KSxqdCh3biw5PT09d24ubGV2ZWw/Mjp3bi5zdHJhdGVneT49Mnx8d24ubGV2ZWw8Mj80OjApLGp0KHduLDI1NSZ3bi5nemhlYWQub3MpLHduLmd6aGVhZC5leHRyYSYmd24uZ3poZWFkLmV4dHJhLmxlbmd0''@;'; put 'put ''aCYmKGp0KHduLDI1NSZ3bi5nemhlYWQuZXh0cmEubGVuZ3RoKSxqdCh3bix3bi5nemhlYWQuZXh0cmEubGVuZ3RoPj44JjI1NSkpLHduLmd6aGVhZC5oY3JjJiYoTnQuYWRsZXI9TihOdC5hZGxlcix3bi5wZW5kaW5nX2J1Zix3bi5wZW5kaW5nLDApKSx3bi5nemluZGV4PTAsd24uc3RhdHVz''@;'; put 'put ''PTY5KTooanQod24sMCksanQod24sMCksanQod24sMCksanQod24sMCksanQod24sMCksanQod24sOT09PXduLmxldmVsPzI6d24uc3RyYXRlZ3k+PTJ8fHduLmxldmVsPDI/NDowKSxqdCh3biwzKSx3bi5zdGF0dXM9MTEzKTtlbHNle3ZhciBUcj04Kyh3bi53X2JpdHMtODw8NCk8PDg7VHJ8''@;'; put 'put ''PSh3bi5zdHJhdGVneT49Mnx8d24ubGV2ZWw8Mj8wOnduLmxldmVsPDY/MTo2PT09d24ubGV2ZWw/MjozKTw8NiwwIT09d24uc3Ryc3RhcnQmJihUcnw9MzIpLFRyKz0zMS1UciUzMSx3bi5zdGF0dXM9MTEzLEp0KHduLFRyKSwwIT09d24uc3Ryc3RhcnQmJihKdCh3bixOdC5hZGxlcj4+PjE2''@;'; put 'put ''KSxKdCh3biw2NTUzNSZOdC5hZGxlcikpLE50LmFkbGVyPTF9aWYoNjk9PT13bi5zdGF0dXMpaWYod24uZ3poZWFkLmV4dHJhKXtmb3IodG49d24ucGVuZGluZzt3bi5nemluZGV4PCg2NTUzNSZ3bi5nemhlYWQuZXh0cmEubGVuZ3RoKSYmKHduLnBlbmRpbmchPT13bi5wZW5kaW5nX2J1Zl9z''@;'; put 'put ''aXplfHwod24uZ3poZWFkLmhjcmMmJnduLnBlbmRpbmc+dG4mJihOdC5hZGxlcj1OKE50LmFkbGVyLHduLnBlbmRpbmdfYnVmLHduLnBlbmRpbmctdG4sdG4pKSxVZShOdCksdG49d24ucGVuZGluZyx3bi5wZW5kaW5nIT09d24ucGVuZGluZ19idWZfc2l6ZSkpOylqdCh3biwyNTUmd24uZ3po''@;'; put 'put ''ZWFkLmV4dHJhW3duLmd6aW5kZXhdKSx3bi5nemluZGV4Kys7d24uZ3poZWFkLmhjcmMmJnduLnBlbmRpbmc+dG4mJihOdC5hZGxlcj1OKE50LmFkbGVyLHduLnBlbmRpbmdfYnVmLHduLnBlbmRpbmctdG4sdG4pKSx3bi5nemluZGV4PT09d24uZ3poZWFkLmV4dHJhLmxlbmd0aCYmKHduLmd6''@;'; put 'put ''aW5kZXg9MCx3bi5zdGF0dXM9NzMpfWVsc2Ugd24uc3RhdHVzPTczO2lmKDczPT09d24uc3RhdHVzKWlmKHduLmd6aGVhZC5uYW1lKXt0bj13bi5wZW5kaW5nO2Rve2lmKHduLnBlbmRpbmc9PT13bi5wZW5kaW5nX2J1Zl9zaXplJiYod24uZ3poZWFkLmhjcmMmJnduLnBlbmRpbmc+dG4mJihO''@;'; put 'put ''dC5hZGxlcj1OKE50LmFkbGVyLHduLnBlbmRpbmdfYnVmLHduLnBlbmRpbmctdG4sdG4pKSxVZShOdCksdG49d24ucGVuZGluZyx3bi5wZW5kaW5nPT09d24ucGVuZGluZ19idWZfc2l6ZSkpe3puPTE7YnJlYWt9em49d24uZ3ppbmRleDx3bi5nemhlYWQubmFtZS5sZW5ndGg/MjU1JnduLmd6''@;'; put 'put ''aGVhZC5uYW1lLmNoYXJDb2RlQXQod24uZ3ppbmRleCsrKTowLGp0KHduLHpuKX13aGlsZSgwIT09em4pO3duLmd6aGVhZC5oY3JjJiZ3bi5wZW5kaW5nPnRuJiYoTnQuYWRsZXI9TihOdC5hZGxlcix3bi5wZW5kaW5nX2J1Zix3bi5wZW5kaW5nLXRuLHRuKSksMD09PXpuJiYod24uZ3ppbmRl''@;'; put 'put ''eD0wLHduLnN0YXR1cz05MSl9ZWxzZSB3bi5zdGF0dXM9OTE7aWYoOTE9PT13bi5zdGF0dXMpaWYod24uZ3poZWFkLmNvbW1lbnQpe3RuPXduLnBlbmRpbmc7ZG97aWYod24ucGVuZGluZz09PXduLnBlbmRpbmdfYnVmX3NpemUmJih3bi5nemhlYWQuaGNyYyYmd24ucGVuZGluZz50biYmKE50''@;'; put 'put ''LmFkbGVyPU4oTnQuYWRsZXIsd24ucGVuZGluZ19idWYsd24ucGVuZGluZy10bix0bikpLFVlKE50KSx0bj13bi5wZW5kaW5nLHduLnBlbmRpbmc9PT13bi5wZW5kaW5nX2J1Zl9zaXplKSl7em49MTticmVha316bj13bi5nemluZGV4PHduLmd6aGVhZC5jb21tZW50Lmxlbmd0aD8yNTUmd24u''@;'; put 'put ''Z3poZWFkLmNvbW1lbnQuY2hhckNvZGVBdCh3bi5nemluZGV4KyspOjAsanQod24sem4pfXdoaWxlKDAhPT16bik7d24uZ3poZWFkLmhjcmMmJnduLnBlbmRpbmc+dG4mJihOdC5hZGxlcj1OKE50LmFkbGVyLHduLnBlbmRpbmdfYnVmLHduLnBlbmRpbmctdG4sdG4pKSwwPT09em4mJih3bi5z''@;'; put 'put ''dGF0dXM9MTAzKX1lbHNlIHduLnN0YXR1cz0xMDM7aWYoMTAzPT09d24uc3RhdHVzJiYod24uZ3poZWFkLmhjcmM/KHduLnBlbmRpbmcrMj53bi5wZW5kaW5nX2J1Zl9zaXplJiZVZShOdCksd24ucGVuZGluZysyPD13bi5wZW5kaW5nX2J1Zl9zaXplJiYoanQod24sMjU1Jk50LmFkbGVyKSxq''@;'; put 'put ''dCh3bixOdC5hZGxlcj4+OCYyNTUpLE50LmFkbGVyPTAsd24uc3RhdHVzPTExMykpOnduLnN0YXR1cz0xMTMpLDAhPT13bi5wZW5kaW5nKXtpZihVZShOdCksMD09PU50LmF2YWlsX291dClyZXR1cm4gd24ubGFzdF9mbHVzaD0tMSwwfWVsc2UgaWYoMD09PU50LmF2YWlsX2luJiZIdChzbik8''@;'; put 'put ''PUh0KFVuKSYmNCE9PXNuKXJldHVybiBmdChOdCwtNSk7aWYoNjY2PT09d24uc3RhdHVzJiYwIT09TnQuYXZhaWxfaW4pcmV0dXJuIGZ0KE50LC01KTtpZigwIT09TnQuYXZhaWxfaW58fDAhPT13bi5sb29rYWhlYWR8fDAhPT1zbiYmNjY2IT09d24uc3RhdHVzKXt2YXIga3I9Mj09PXduLnN0''@;'; put 'put ''cmF0ZWd5P2Z1bmN0aW9uIHNyKE50LHNuKXtmb3IodmFyIFVuOzspe2lmKDA9PT1OdC5sb29rYWhlYWQmJih5bihOdCksMD09PU50Lmxvb2thaGVhZCkpe2lmKDA9PT1zbilyZXR1cm4gMTticmVha31pZihOdC5tYXRjaF9sZW5ndGg9MCxVbj1ZLl90cl90YWxseShOdCwwLE50LndpbmRvd1tO''@;'; put 'put ''dC5zdHJzdGFydF0pLE50Lmxvb2thaGVhZC0tLE50LnN0cnN0YXJ0KyssVW4mJih5dChOdCwhMSksMD09PU50LnN0cm0uYXZhaWxfb3V0KSlyZXR1cm4gMX1yZXR1cm4gTnQuaW5zZXJ0PTAsND09PXNuPyh5dChOdCwhMCksMD09PU50LnN0cm0uYXZhaWxfb3V0PzM6NCk6TnQubGFzdF9saXQm''@;'; put 'put ''Jih5dChOdCwhMSksMD09PU50LnN0cm0uYXZhaWxfb3V0KT8xOjJ9KHduLHNuKTozPT09d24uc3RyYXRlZ3k/ZnVuY3Rpb24gZXIoTnQsc24pe2Zvcih2YXIgVW4sd24sdG4sem4sVHI9TnQud2luZG93Ozspe2lmKE50Lmxvb2thaGVhZDw9MjU4KXtpZih5bihOdCksTnQubG9va2FoZWFkPD0y''@;'; put 'put ''NTgmJjA9PT1zbilyZXR1cm4gMTtpZigwPT09TnQubG9va2FoZWFkKWJyZWFrfWlmKE50Lm1hdGNoX2xlbmd0aD0wLE50Lmxvb2thaGVhZD49MyYmTnQuc3Ryc3RhcnQ+MCYmKHduPVRyW3RuPU50LnN0cnN0YXJ0LTFdKT09PVRyWysrdG5dJiZ3bj09PVRyWysrdG5dJiZ3bj09PVRyWysrdG5d''@;'; put 'put ''KXt6bj1OdC5zdHJzdGFydCsyNTg7ZG97fXdoaWxlKHduPT09VHJbKyt0bl0mJnduPT09VHJbKyt0bl0mJnduPT09VHJbKyt0bl0mJnduPT09VHJbKyt0bl0mJnduPT09VHJbKyt0bl0mJnduPT09VHJbKyt0bl0mJnduPT09VHJbKyt0bl0mJnduPT09VHJbKyt0bl0mJnRuPHpuKTtOdC5tYXRj''@;'; put 'put ''aF9sZW5ndGg9MjU4LSh6bi10biksTnQubWF0Y2hfbGVuZ3RoPk50Lmxvb2thaGVhZCYmKE50Lm1hdGNoX2xlbmd0aD1OdC5sb29rYWhlYWQpfWlmKE50Lm1hdGNoX2xlbmd0aD49Mz8oVW49WS5fdHJfdGFsbHkoTnQsMSxOdC5tYXRjaF9sZW5ndGgtMyksTnQubG9va2FoZWFkLT1OdC5tYXRj''@;'; put 'put ''aF9sZW5ndGgsTnQuc3Ryc3RhcnQrPU50Lm1hdGNoX2xlbmd0aCxOdC5tYXRjaF9sZW5ndGg9MCk6KFVuPVkuX3RyX3RhbGx5KE50LDAsTnQud2luZG93W050LnN0cnN0YXJ0XSksTnQubG9va2FoZWFkLS0sTnQuc3Ryc3RhcnQrKyksVW4mJih5dChOdCwhMSksMD09PU50LnN0cm0uYXZhaWxf''@;'; put 'put ''b3V0KSlyZXR1cm4gMX1yZXR1cm4gTnQuaW5zZXJ0PTAsND09PXNuPyh5dChOdCwhMCksMD09PU50LnN0cm0uYXZhaWxfb3V0PzM6NCk6TnQubGFzdF9saXQmJih5dChOdCwhMSksMD09PU50LnN0cm0uYXZhaWxfb3V0KT8xOjJ9KHduLHNuKTpGclt3bi5sZXZlbF0uZnVuYyh3bixzbik7aWYo''@;'; put 'put ''KDM9PT1rcnx8ND09PWtyKSYmKHduLnN0YXR1cz02NjYpLDE9PT1rcnx8Mz09PWtyKXJldHVybiAwPT09TnQuYXZhaWxfb3V0JiYod24ubGFzdF9mbHVzaD0tMSksMDtpZigyPT09a3ImJigxPT09c24/WS5fdHJfYWxpZ24od24pOjUhPT1zbiYmKFkuX3RyX3N0b3JlZF9ibG9jayh3biwwLDAs''@;'; put 'put ''ITEpLDM9PT1zbiYmKEdlKHduLmhlYWQpLDA9PT13bi5sb29rYWhlYWQmJih3bi5zdHJzdGFydD0wLHduLmJsb2NrX3N0YXJ0PTAsd24uaW5zZXJ0PTApKSksVWUoTnQpLDA9PT1OdC5hdmFpbF9vdXQpKXJldHVybiB3bi5sYXN0X2ZsdXNoPS0xLDB9cmV0dXJuIDQhPT1zbj8wOnduLndyYXA8''@;'; put 'put ''PTA/MTooMj09PXduLndyYXA/KGp0KHduLDI1NSZOdC5hZGxlciksanQod24sTnQuYWRsZXI+PjgmMjU1KSxqdCh3bixOdC5hZGxlcj4+MTYmMjU1KSxqdCh3bixOdC5hZGxlcj4+MjQmMjU1KSxqdCh3biwyNTUmTnQudG90YWxfaW4pLGp0KHduLE50LnRvdGFsX2luPj44JjI1NSksanQod24s''@;'; put 'put ''TnQudG90YWxfaW4+PjE2JjI1NSksanQod24sTnQudG90YWxfaW4+PjI0JjI1NSkpOihKdCh3bixOdC5hZGxlcj4+PjE2KSxKdCh3biw2NTUzNSZOdC5hZGxlcikpLFVlKE50KSx3bi53cmFwPjAmJih3bi53cmFwPS13bi53cmFwKSwwIT09d24ucGVuZGluZz8wOjEpfSxyZS5kZWZsYXRlRW5k''@;'; put 'put ''PWZ1bmN0aW9uIEtuKE50KXt2YXIgc247cmV0dXJuIE50JiZOdC5zdGF0ZT80MiE9PShzbj1OdC5zdGF0ZS5zdGF0dXMpJiY2OSE9PXNuJiY3MyE9PXNuJiY5MSE9PXNuJiYxMDMhPT1zbiYmMTEzIT09c24mJjY2NiE9PXNuP2Z0KE50LC0yKTooTnQuc3RhdGU9bnVsbCwxMTM9PT1zbj9mdChO''@;'; put 'put ''dCwtMyk6MCk6LTJ9LHJlLmRlZmxhdGVJbmZvPSJwYWtvIGRlZmxhdGUgKGZyb20gTm9kZWNhIHByb2plY3QpIn0seyIuLi91dGlscy9jb21tb24iOjI3LCIuL2FkbGVyMzIiOjI5LCIuL2NyYzMyIjozMSwiLi9tZXNzYWdlcyI6MzcsIi4vdHJlZXMiOjM4fV0sMzM6W2Z1bmN0aW9uKFEsaixy''@;'; put 'put ''ZSl7InVzZSBzdHJpY3QiO2ouZXhwb3J0cz1mdW5jdGlvbiBhZSgpe3RoaXMudGV4dD0wLHRoaXMudGltZT0wLHRoaXMueGZsYWdzPTAsdGhpcy5vcz0wLHRoaXMuZXh0cmE9bnVsbCx0aGlzLmV4dHJhX2xlbj0wLHRoaXMubmFtZT0iIix0aGlzLmNvbW1lbnQ9IiIsdGhpcy5oY3JjPTAsdGhp''@;'; put 'put ''cy5kb25lPSExfX0se31dLDM0OltmdW5jdGlvbihRLGoscmUpeyJ1c2Ugc3RyaWN0IjtqLmV4cG9ydHM9ZnVuY3Rpb24oTix0ZSl7dmFyIEssSixzZSxvZSxjZSxkZSx2ZSxBZSxrZSxTZSxJZSxUZSxNZSxoZSxPLHosZWUsbmUseCxQLFYsVCxTLEYseWU7Rj1OLmlucHV0LHNlPShKPU4ubmV4''@;'; put 'put ''dF9pbikrKE4uYXZhaWxfaW4tNSkseWU9Ti5vdXRwdXQsY2U9KG9lPU4ubmV4dF9vdXQpLSh0ZS1OLmF2YWlsX291dCksZGU9b2UrKE4uYXZhaWxfb3V0LTI1NyksdmU9KEs9Ti5zdGF0ZSkuZG1heCxBZT1LLndzaXplLGtlPUsud2hhdmUsU2U9Sy53bmV4dCxJZT1LLndpbmRvdyxUZT1LLmhv''@;'; put 'put ''bGQsTWU9Sy5iaXRzLGhlPUsubGVuY29kZSxPPUsuZGlzdGNvZGUsej0oMTw8Sy5sZW5iaXRzKS0xLGVlPSgxPDxLLmRpc3RiaXRzKS0xO2U6ZG97TWU8MTUmJihUZSs9RltKKytdPDxNZSxUZSs9RltKKytdPDwoTWUrPTgpLE1lKz04KSxuZT1oZVtUZSZ6XTt0OmZvcig7Oyl7aWYoVGU+Pj49''@;'; put 'put ''eD1uZT4+PjI0LE1lLT14LDA9PSh4PW5lPj4+MTYmMjU1KSl5ZVtvZSsrXT02NTUzNSZuZTtlbHNle2lmKCEoMTYmeCkpe2lmKDA9PSg2NCZ4KSl7bmU9aGVbKDY1NTM1Jm5lKSsoVGUmKDE8PHgpLTEpXTtjb250aW51ZSB0fWlmKDMyJngpe0subW9kZT0xMjticmVhayBlfU4ubXNnPSJpbnZh''@;'; put 'put ''bGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiLEsubW9kZT0zMDticmVhayBlfVA9NjU1MzUmbmUsKHgmPTE1KSYmKE1lPHgmJihUZSs9RltKKytdPDxNZSxNZSs9OCksUCs9VGUmKDE8PHgpLTEsVGU+Pj49eCxNZS09eCksTWU8MTUmJihUZSs9RltKKytdPDxNZSxUZSs9RltKKytdPDwoTWUrPTgp''@;'; put 'put ''LE1lKz04KSxuZT1PW1RlJmVlXTtuOmZvcig7Oyl7aWYoVGU+Pj49eD1uZT4+PjI0LE1lLT14LCEoMTYmKHg9bmU+Pj4xNiYyNTUpKSl7aWYoMD09KDY0JngpKXtuZT1PWyg2NTUzNSZuZSkrKFRlJigxPDx4KS0xKV07Y29udGludWUgbn1OLm1zZz0iaW52YWxpZCBkaXN0YW5jZSBjb2RlIixL''@;'; put 'put ''Lm1vZGU9MzA7YnJlYWsgZX1pZihWPTY1NTM1Jm5lLE1lPCh4Jj0xNSkmJihUZSs9RltKKytdPDxNZSwoTWUrPTgpPHgmJihUZSs9RltKKytdPDxNZSxNZSs9OCkpLChWKz1UZSYoMTw8eCktMSk+dmUpe04ubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsSy5tb2RlPTMwO2Jy''@;'; put 'put ''ZWFrIGV9aWYoVGU+Pj49eCxNZS09eCxWPih4PW9lLWNlKSl7aWYoKHg9Vi14KT5rZSYmSy5zYW5lKXtOLm1zZz0iaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2siLEsubW9kZT0zMDticmVhayBlfWlmKFQ9MCxTPUllLDA9PT1TZSl7aWYoVCs9QWUteCx4PFApe1AtPXg7ZG97eWVbb2Ur''@;'; put 'put ''K109SWVbVCsrXX13aGlsZSgtLXgpO1Q9b2UtVixTPXllfX1lbHNlIGlmKFNlPHgpe2lmKFQrPUFlK1NlLXgsKHgtPVNlKTxQKXtQLT14O2Rve3llW29lKytdPUllW1QrK119d2hpbGUoLS14KTtpZihUPTAsU2U8UCl7UC09eD1TZTtkb3t5ZVtvZSsrXT1JZVtUKytdfXdoaWxlKC0teCk7VD1v''@;'; put 'put ''ZS1WLFM9eWV9fX1lbHNlIGlmKFQrPVNlLXgseDxQKXtQLT14O2Rve3llW29lKytdPUllW1QrK119d2hpbGUoLS14KTtUPW9lLVYsUz15ZX1mb3IoO1A+MjspeWVbb2UrK109U1tUKytdLHllW29lKytdPVNbVCsrXSx5ZVtvZSsrXT1TW1QrK10sUC09MztQJiYoeWVbb2UrK109U1tUKytdLFA+''@;'; put 'put ''MSYmKHllW29lKytdPVNbVCsrXSkpfWVsc2V7VD1vZS1WO2Rve3llW29lKytdPXllW1QrK10seWVbb2UrK109eWVbVCsrXSx5ZVtvZSsrXT15ZVtUKytdLFAtPTN9d2hpbGUoUD4yKTtQJiYoeWVbb2UrK109eWVbVCsrXSxQPjEmJih5ZVtvZSsrXT15ZVtUKytdKSl9YnJlYWt9fWJyZWFrfX13''@;'; put 'put ''aGlsZShKPHNlJiZvZTxkZSk7VGUmPSgxPDwoTWUtPShQPU1lPj4zKTw8MykpLTEsTi5uZXh0X2luPUotPVAsTi5uZXh0X291dD1vZSxOLmF2YWlsX2luPUo8c2U/c2UtSis1OjUtKEotc2UpLE4uYXZhaWxfb3V0PW9lPGRlP2RlLW9lKzI1NzoyNTctKG9lLWRlKSxLLmhvbGQ9VGUsSy5iaXRz''@;'; put 'put ''PU1lfX0se31dLDM1OltmdW5jdGlvbihRLGoscmUpeyJ1c2Ugc3RyaWN0Ijt2YXIgYWU9USgiLi4vdXRpbHMvY29tbW9uIiksWT1RKCIuL2FkbGVyMzIiKSxXPVEoIi4vY3JjMzIiKSxOPVEoIi4vaW5mZmFzdCIpLHRlPVEoIi4vaW5mdHJlZXMiKTtmdW5jdGlvbiBKdChBbil7cmV0dXJuKEFu''@;'; put 'put ''Pj4+MjQmMjU1KSsoQW4+Pj44JjY1MjgwKSsoKDY1MjgwJkFuKTw8OCkrKCgyNTUmQW4pPDwyNCl9ZnVuY3Rpb24gZ24oKXt0aGlzLm1vZGU9MCx0aGlzLmxhc3Q9ITEsdGhpcy53cmFwPTAsdGhpcy5oYXZlZGljdD0hMSx0aGlzLmZsYWdzPTAsdGhpcy5kbWF4PTAsdGhpcy5jaGVjaz0wLHRo''@;'; put 'put ''aXMudG90YWw9MCx0aGlzLmhlYWQ9bnVsbCx0aGlzLndiaXRzPTAsdGhpcy53c2l6ZT0wLHRoaXMud2hhdmU9MCx0aGlzLnduZXh0PTAsdGhpcy53aW5kb3c9bnVsbCx0aGlzLmhvbGQ9MCx0aGlzLmJpdHM9MCx0aGlzLmxlbmd0aD0wLHRoaXMub2Zmc2V0PTAsdGhpcy5leHRyYT0wLHRoaXMu''@;'; put 'put ''bGVuY29kZT1udWxsLHRoaXMuZGlzdGNvZGU9bnVsbCx0aGlzLmxlbmJpdHM9MCx0aGlzLmRpc3RiaXRzPTAsdGhpcy5uY29kZT0wLHRoaXMubmxlbj0wLHRoaXMubmRpc3Q9MCx0aGlzLmhhdmU9MCx0aGlzLm5leHQ9bnVsbCx0aGlzLmxlbnM9bmV3IGFlLkJ1ZjE2KDMyMCksdGhpcy53b3Jr''@;'; put 'put ''PW5ldyBhZS5CdWYxNigyODgpLHRoaXMubGVuZHluPW51bGwsdGhpcy5kaXN0ZHluPW51bGwsdGhpcy5zYW5lPTAsdGhpcy5iYWNrPTAsdGhpcy53YXM9MH1mdW5jdGlvbiBkbihBbil7dmFyIHFuO3JldHVybiBBbiYmQW4uc3RhdGU/KEFuLnRvdGFsX2luPUFuLnRvdGFsX291dD0ocW49QW4u''@;'; put 'put ''c3RhdGUpLnRvdGFsPTAsQW4ubXNnPSIiLHFuLndyYXAmJihBbi5hZGxlcj0xJnFuLndyYXApLHFuLm1vZGU9MSxxbi5sYXN0PTAscW4uaGF2ZWRpY3Q9MCxxbi5kbWF4PTMyNzY4LHFuLmhlYWQ9bnVsbCxxbi5ob2xkPTAscW4uYml0cz0wLHFuLmxlbmNvZGU9cW4ubGVuZHluPW5ldyBhZS5C''@;'; put 'put ''dWYzMig4NTIpLHFuLmRpc3Rjb2RlPXFuLmRpc3RkeW49bmV3IGFlLkJ1ZjMyKDU5MikscW4uc2FuZT0xLHFuLmJhY2s9LTEsMCk6LTJ9ZnVuY3Rpb24geW4oQW4pe3ZhciBxbjtyZXR1cm4gQW4mJkFuLnN0YXRlPygocW49QW4uc3RhdGUpLndzaXplPTAscW4ud2hhdmU9MCxxbi53bmV4dD0w''@;'; put 'put ''LGRuKEFuKSk6LTJ9ZnVuY3Rpb24gbG4oQW4scW4pe3ZhciBXdCxwbjtyZXR1cm4hQW58fCFBbi5zdGF0ZXx8KHBuPUFuLnN0YXRlLHFuPDA/KFd0PTAscW49LXFuKTooV3Q9MSsocW4+PjQpLHFuPDQ4JiYocW4mPTE1KSkscW4mJihxbjw4fHxxbj4xNSkpPy0yOihudWxsIT09cG4ud2luZG93''@;'; put 'put ''JiZwbi53Yml0cyE9PXFuJiYocG4ud2luZG93PW51bGwpLHBuLndyYXA9V3QscG4ud2JpdHM9cW4seW4oQW4pKX1mdW5jdGlvbiBObihBbixxbil7dmFyIFd0LHBuO3JldHVybiBBbj8ocG49bmV3IGduLEFuLnN0YXRlPXBuLHBuLndpbmRvdz1udWxsLDAhPT0oV3Q9bG4oQW4scW4pKSYmKEFu''@;'; put 'put ''LnN0YXRlPW51bGwpLFd0KTotMn12YXIgc3IsWG4sZXI9ITA7ZnVuY3Rpb24gRnIoQW4pe2lmKGVyKXt2YXIgcW47Zm9yKHNyPW5ldyBhZS5CdWYzMig1MTIpLFhuPW5ldyBhZS5CdWYzMigzMikscW49MDtxbjwxNDQ7KUFuLmxlbnNbcW4rK109ODtmb3IoO3FuPDI1NjspQW4ubGVuc1txbisr''@;'; put 'put ''XT05O2Zvcig7cW48MjgwOylBbi5sZW5zW3FuKytdPTc7Zm9yKDtxbjwyODg7KUFuLmxlbnNbcW4rK109ODtmb3IodGUoMSxBbi5sZW5zLDAsMjg4LHNyLDAsQW4ud29yayx7Yml0czo5fSkscW49MDtxbjwzMjspQW4ubGVuc1txbisrXT01O3RlKDIsQW4ubGVucywwLDMyLFhuLDAsQW4ud29y''@;'; put 'put ''ayx7Yml0czo1fSksZXI9ITF9QW4ubGVuY29kZT1zcixBbi5sZW5iaXRzPTksQW4uZGlzdGNvZGU9WG4sQW4uZGlzdGJpdHM9NX1yZS5pbmZsYXRlUmVzZXQ9eW4scmUuaW5mbGF0ZVJlc2V0Mj1sbixyZS5pbmZsYXRlUmVzZXRLZWVwPWRuLHJlLmluZmxhdGVJbml0PWZ1bmN0aW9uIGJuKEFu''@;'; put 'put ''KXtyZXR1cm4gTm4oQW4sMTUpfSxyZS5pbmZsYXRlSW5pdDI9Tm4scmUuaW5mbGF0ZT1mdW5jdGlvbiBxdChBbixxbil7dmFyIFd0LHBuLEtuLE50LHNuLFVuLHduLHRuLHpuLFRyLEJuLGtyLG1uLHVuLF9uLEd0LGtuLFZuLGVuLEluLEpuLG9yLEtyLFZyLGNuPTAsZ3I9bmV3IGFlLkJ1Zjgo''@;'; put 'put ''NCksaWk9WzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdO2lmKCFBbnx8IUFuLnN0YXRlfHwhQW4ub3V0cHV0fHwhQW4uaW5wdXQmJjAhPT1Bbi5hdmFpbF9pbilyZXR1cm4tMjsxMj09PShXdD1Bbi5zdGF0ZSkubW9kZSYmKFd0Lm1vZGU9MTMpLHNuPUFu''@;'; put 'put ''Lm5leHRfb3V0LEtuPUFuLm91dHB1dCxOdD1Bbi5uZXh0X2luLHBuPUFuLmlucHV0LHRuPVd0LmhvbGQsem49V3QuYml0cyxUcj1Vbj1Bbi5hdmFpbF9pbixCbj13bj1Bbi5hdmFpbF9vdXQsb3I9MDtlOmZvcig7Oylzd2l0Y2goV3QubW9kZSl7Y2FzZSAxOmlmKDA9PT1XdC53cmFwKXtXdC5t''@;'; put 'put ''b2RlPTEzO2JyZWFrfWZvcig7em48MTY7KXtpZigwPT09VW4pYnJlYWsgZTtVbi0tLHRuKz1wbltOdCsrXTw8em4sem4rPTh9aWYoMiZXdC53cmFwJiYzNTYxNT09PXRuKXtXdC5jaGVjaz0wLGdyWzBdPTI1NSZ0bixnclsxXT10bj4+PjgmMjU1LFd0LmNoZWNrPVcoV3QuY2hlY2ssZ3IsMiww''@;'; put 'put ''KSx0bj0wLHpuPTAsV3QubW9kZT0yO2JyZWFrfWlmKFd0LmZsYWdzPTAsV3QuaGVhZCYmKFd0LmhlYWQuZG9uZT0hMSksISgxJld0LndyYXApfHwoKCgyNTUmdG4pPDw4KSsodG4+PjgpKSUzMSl7QW4ubXNnPSJpbmNvcnJlY3QgaGVhZGVyIGNoZWNrIixXdC5tb2RlPTMwO2JyZWFrfWlmKDgh''@;'; put 'put ''PSgxNSZ0bikpe0FuLm1zZz0idW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QiLFd0Lm1vZGU9MzA7YnJlYWt9aWYoem4tPTQsSm49OCsoMTUmKHRuPj4+PTQpKSwwPT09V3Qud2JpdHMpV3Qud2JpdHM9Sm47ZWxzZSBpZihKbj5XdC53Yml0cyl7QW4ubXNnPSJpbnZhbGlkIHdpbmRvdyBzaXpl''@;'; put 'put ''IixXdC5tb2RlPTMwO2JyZWFrfVd0LmRtYXg9MTw8Sm4sQW4uYWRsZXI9V3QuY2hlY2s9MSxXdC5tb2RlPTUxMiZ0bj8xMDoxMix0bj0wLHpuPTA7YnJlYWs7Y2FzZSAyOmZvcig7em48MTY7KXtpZigwPT09VW4pYnJlYWsgZTtVbi0tLHRuKz1wbltOdCsrXTw8em4sem4rPTh9aWYoV3QuZmxh''@;'; put 'put ''Z3M9dG4sOCE9KDI1NSZXdC5mbGFncykpe0FuLm1zZz0idW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QiLFd0Lm1vZGU9MzA7YnJlYWt9aWYoNTczNDQmV3QuZmxhZ3Mpe0FuLm1zZz0idW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0IixXdC5tb2RlPTMwO2JyZWFrfVd0LmhlYWQmJihXdC5oZWFk''@;'; put 'put ''LnRleHQ9dG4+PjgmMSksNTEyJld0LmZsYWdzJiYoZ3JbMF09MjU1JnRuLGdyWzFdPXRuPj4+OCYyNTUsV3QuY2hlY2s9VyhXdC5jaGVjayxnciwyLDApKSx0bj0wLHpuPTAsV3QubW9kZT0zO2Nhc2UgMzpmb3IoO3puPDMyOyl7aWYoMD09PVVuKWJyZWFrIGU7VW4tLSx0bis9cG5bTnQrK108''@;'; put 'put ''PHpuLHpuKz04fVd0LmhlYWQmJihXdC5oZWFkLnRpbWU9dG4pLDUxMiZXdC5mbGFncyYmKGdyWzBdPTI1NSZ0bixnclsxXT10bj4+PjgmMjU1LGdyWzJdPXRuPj4+MTYmMjU1LGdyWzNdPXRuPj4+MjQmMjU1LFd0LmNoZWNrPVcoV3QuY2hlY2ssZ3IsNCwwKSksdG49MCx6bj0wLFd0Lm1vZGU9''@;'; put 'put ''NDtjYXNlIDQ6Zm9yKDt6bjwxNjspe2lmKDA9PT1VbilicmVhayBlO1VuLS0sdG4rPXBuW050KytdPDx6bix6bis9OH1XdC5oZWFkJiYoV3QuaGVhZC54ZmxhZ3M9MjU1JnRuLFd0LmhlYWQub3M9dG4+PjgpLDUxMiZXdC5mbGFncyYmKGdyWzBdPTI1NSZ0bixnclsxXT10bj4+PjgmMjU1LFd0''@;'; put 'put ''LmNoZWNrPVcoV3QuY2hlY2ssZ3IsMiwwKSksdG49MCx6bj0wLFd0Lm1vZGU9NTtjYXNlIDU6aWYoMTAyNCZXdC5mbGFncyl7Zm9yKDt6bjwxNjspe2lmKDA9PT1VbilicmVhayBlO1VuLS0sdG4rPXBuW050KytdPDx6bix6bis9OH1XdC5sZW5ndGg9dG4sV3QuaGVhZCYmKFd0LmhlYWQuZXh0''@;'; put 'put ''cmFfbGVuPXRuKSw1MTImV3QuZmxhZ3MmJihnclswXT0yNTUmdG4sZ3JbMV09dG4+Pj44JjI1NSxXdC5jaGVjaz1XKFd0LmNoZWNrLGdyLDIsMCkpLHRuPTAsem49MH1lbHNlIFd0LmhlYWQmJihXdC5oZWFkLmV4dHJhPW51bGwpO1d0Lm1vZGU9NjtjYXNlIDY6aWYoMTAyNCZXdC5mbGFncyYm''@;'; put 'put ''KChrcj1XdC5sZW5ndGgpPlVuJiYoa3I9VW4pLGtyJiYoV3QuaGVhZCYmKEpuPVd0LmhlYWQuZXh0cmFfbGVuLVd0Lmxlbmd0aCxXdC5oZWFkLmV4dHJhfHwoV3QuaGVhZC5leHRyYT1uZXcgQXJyYXkoV3QuaGVhZC5leHRyYV9sZW4pKSxhZS5hcnJheVNldChXdC5oZWFkLmV4dHJhLHBuLE50''@;'; put 'put ''LGtyLEpuKSksNTEyJld0LmZsYWdzJiYoV3QuY2hlY2s9VyhXdC5jaGVjayxwbixrcixOdCkpLFVuLT1rcixOdCs9a3IsV3QubGVuZ3RoLT1rciksV3QubGVuZ3RoKSlicmVhayBlO1d0Lmxlbmd0aD0wLFd0Lm1vZGU9NztjYXNlIDc6aWYoMjA0OCZXdC5mbGFncyl7aWYoMD09PVVuKWJyZWFr''@;'; put 'put ''IGU7a3I9MDtkb3tKbj1wbltOdCtrcisrXSxXdC5oZWFkJiZKbiYmV3QubGVuZ3RoPDY1NTM2JiYoV3QuaGVhZC5uYW1lKz1TdHJpbmcuZnJvbUNoYXJDb2RlKEpuKSl9d2hpbGUoSm4mJmtyPFVuKTtpZig1MTImV3QuZmxhZ3MmJihXdC5jaGVjaz1XKFd0LmNoZWNrLHBuLGtyLE50KSksVW4t''@;'; put 'put ''PWtyLE50Kz1rcixKbilicmVhayBlfWVsc2UgV3QuaGVhZCYmKFd0LmhlYWQubmFtZT1udWxsKTtXdC5sZW5ndGg9MCxXdC5tb2RlPTg7Y2FzZSA4OmlmKDQwOTYmV3QuZmxhZ3Mpe2lmKDA9PT1VbilicmVhayBlO2tyPTA7ZG97Sm49cG5bTnQra3IrK10sV3QuaGVhZCYmSm4mJld0Lmxlbmd0''@;'; put 'put ''aDw2NTUzNiYmKFd0LmhlYWQuY29tbWVudCs9U3RyaW5nLmZyb21DaGFyQ29kZShKbikpfXdoaWxlKEpuJiZrcjxVbik7aWYoNTEyJld0LmZsYWdzJiYoV3QuY2hlY2s9VyhXdC5jaGVjayxwbixrcixOdCkpLFVuLT1rcixOdCs9a3IsSm4pYnJlYWsgZX1lbHNlIFd0LmhlYWQmJihXdC5oZWFk''@;'; put 'put ''LmNvbW1lbnQ9bnVsbCk7V3QubW9kZT05O2Nhc2UgOTppZig1MTImV3QuZmxhZ3Mpe2Zvcig7em48MTY7KXtpZigwPT09VW4pYnJlYWsgZTtVbi0tLHRuKz1wbltOdCsrXTw8em4sem4rPTh9aWYodG4hPT0oNjU1MzUmV3QuY2hlY2spKXtBbi5tc2c9ImhlYWRlciBjcmMgbWlzbWF0Y2giLFd0''@;'; put 'put ''Lm1vZGU9MzA7YnJlYWt9dG49MCx6bj0wfVd0LmhlYWQmJihXdC5oZWFkLmhjcmM9V3QuZmxhZ3M+PjkmMSxXdC5oZWFkLmRvbmU9ITApLEFuLmFkbGVyPVd0LmNoZWNrPTAsV3QubW9kZT0xMjticmVhaztjYXNlIDEwOmZvcig7em48MzI7KXtpZigwPT09VW4pYnJlYWsgZTtVbi0tLHRuKz1w''@;'; put 'put ''bltOdCsrXTw8em4sem4rPTh9QW4uYWRsZXI9V3QuY2hlY2s9SnQodG4pLHRuPTAsem49MCxXdC5tb2RlPTExO2Nhc2UgMTE6aWYoMD09PVd0LmhhdmVkaWN0KXJldHVybiBBbi5uZXh0X291dD1zbixBbi5hdmFpbF9vdXQ9d24sQW4ubmV4dF9pbj1OdCxBbi5hdmFpbF9pbj1VbixXdC5ob2xk''@;'; put 'put ''PXRuLFd0LmJpdHM9em4sMjtBbi5hZGxlcj1XdC5jaGVjaz0xLFd0Lm1vZGU9MTI7Y2FzZSAxMjppZig1PT09cW58fDY9PT1xbilicmVhayBlO2Nhc2UgMTM6aWYoV3QubGFzdCl7dG4+Pj49NyZ6bix6bi09NyZ6bixXdC5tb2RlPTI3O2JyZWFrfWZvcig7em48Mzspe2lmKDA9PT1VbilicmVh''@;'; put 'put ''ayBlO1VuLS0sdG4rPXBuW050KytdPDx6bix6bis9OH1zd2l0Y2goV3QubGFzdD0xJnRuLHpuLT0xLDMmKHRuPj4+PTEpKXtjYXNlIDA6V3QubW9kZT0xNDticmVhaztjYXNlIDE6aWYoRnIoV3QpLFd0Lm1vZGU9MjAsNj09PXFuKXt0bj4+Pj0yLHpuLT0yO2JyZWFrIGV9YnJlYWs7Y2FzZSAy''@;'; put 'put ''Old0Lm1vZGU9MTc7YnJlYWs7Y2FzZSAzOkFuLm1zZz0iaW52YWxpZCBibG9jayB0eXBlIixXdC5tb2RlPTMwfXRuPj4+PTIsem4tPTI7YnJlYWs7Y2FzZSAxNDpmb3IodG4+Pj49NyZ6bix6bi09NyZ6bjt6bjwzMjspe2lmKDA9PT1VbilicmVhayBlO1VuLS0sdG4rPXBuW050KytdPDx6bix6''@;'; put 'put ''bis9OH1pZigoNjU1MzUmdG4pIT0odG4+Pj4xNl42NTUzNSkpe0FuLm1zZz0iaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocyIsV3QubW9kZT0zMDticmVha31pZihXdC5sZW5ndGg9NjU1MzUmdG4sdG49MCx6bj0wLFd0Lm1vZGU9MTUsNj09PXFuKWJyZWFrIGU7Y2FzZSAxNTpXdC5tb2Rl''@;'; put 'put ''PTE2O2Nhc2UgMTY6aWYoa3I9V3QubGVuZ3RoKXtpZihrcj5VbiYmKGtyPVVuKSxrcj53biYmKGtyPXduKSwwPT09a3IpYnJlYWsgZTthZS5hcnJheVNldChLbixwbixOdCxrcixzbiksVW4tPWtyLE50Kz1rcix3bi09a3Isc24rPWtyLFd0Lmxlbmd0aC09a3I7YnJlYWt9V3QubW9kZT0xMjti''@;'; put 'put ''cmVhaztjYXNlIDE3OmZvcig7em48MTQ7KXtpZigwPT09VW4pYnJlYWsgZTtVbi0tLHRuKz1wbltOdCsrXTw8em4sem4rPTh9aWYoV3Qubmxlbj0yNTcrKDMxJnRuKSx6bi09NSxXdC5uZGlzdD0xKygzMSYodG4+Pj49NSkpLHpuLT01LFd0Lm5jb2RlPTQrKDE1Jih0bj4+Pj01KSksdG4+Pj49''@;'; put 'put ''NCx6bi09NCxXdC5ubGVuPjI4Nnx8V3QubmRpc3Q+MzApe0FuLm1zZz0idG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMiLFd0Lm1vZGU9MzA7YnJlYWt9V3QuaGF2ZT0wLFd0Lm1vZGU9MTg7Y2FzZSAxODpmb3IoO1d0LmhhdmU8V3QubmNvZGU7KXtmb3IoO3puPDM7KXtpZigw''@;'; put 'put ''PT09VW4pYnJlYWsgZTtVbi0tLHRuKz1wbltOdCsrXTw8em4sem4rPTh9V3QubGVuc1tpaVtXdC5oYXZlKytdXT03JnRuLHRuPj4+PTMsem4tPTN9Zm9yKDtXdC5oYXZlPDE5OylXdC5sZW5zW2lpW1d0LmhhdmUrK11dPTA7aWYoV3QubGVuY29kZT1XdC5sZW5keW4sV3QubGVuYml0cz03LG9y''@;'; put 'put ''PXRlKDAsV3QubGVucywwLDE5LFd0LmxlbmNvZGUsMCxXdC53b3JrLEtyPXtiaXRzOld0LmxlbmJpdHN9KSxXdC5sZW5iaXRzPUtyLmJpdHMsb3Ipe0FuLm1zZz0iaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0IixXdC5tb2RlPTMwO2JyZWFrfVd0LmhhdmU9MCxXdC5tb2RlPTE5O2Nhc2UgMTk6''@;'; put 'put ''Zm9yKDtXdC5oYXZlPFd0Lm5sZW4rV3QubmRpc3Q7KXtmb3IoO0d0PShjbj1XdC5sZW5jb2RlW3RuJigxPDxXdC5sZW5iaXRzKS0xXSk+Pj4xNiYyNTUsa249NjU1MzUmY24sISgoX249Y24+Pj4yNCk8PXpuKTspe2lmKDA9PT1VbilicmVhayBlO1VuLS0sdG4rPXBuW050KytdPDx6bix6bis9''@;'; put 'put ''OH1pZihrbjwxNil0bj4+Pj1fbix6bi09X24sV3QubGVuc1tXdC5oYXZlKytdPWtuO2Vsc2V7aWYoMTY9PT1rbil7Zm9yKFZyPV9uKzI7em48VnI7KXtpZigwPT09VW4pYnJlYWsgZTtVbi0tLHRuKz1wbltOdCsrXTw8em4sem4rPTh9aWYodG4+Pj49X24sem4tPV9uLDA9PT1XdC5oYXZlKXtB''@;'; put 'put ''bi5tc2c9ImludmFsaWQgYml0IGxlbmd0aCByZXBlYXQiLFd0Lm1vZGU9MzA7YnJlYWt9Sm49V3QubGVuc1tXdC5oYXZlLTFdLGtyPTMrKDMmdG4pLHRuPj4+PTIsem4tPTJ9ZWxzZSBpZigxNz09PWtuKXtmb3IoVnI9X24rMzt6bjxWcjspe2lmKDA9PT1VbilicmVhayBlO1VuLS0sdG4rPXBu''@;'; put 'put ''W050KytdPDx6bix6bis9OH16bi09X24sSm49MCxrcj0zKyg3Jih0bj4+Pj1fbikpLHRuPj4+PTMsem4tPTN9ZWxzZXtmb3IoVnI9X24rNzt6bjxWcjspe2lmKDA9PT1VbilicmVhayBlO1VuLS0sdG4rPXBuW050KytdPDx6bix6bis9OH16bi09X24sSm49MCxrcj0xMSsoMTI3Jih0bj4+Pj1f''@;'; put 'put ''bikpLHRuPj4+PTcsem4tPTd9aWYoV3QuaGF2ZStrcj5XdC5ubGVuK1d0Lm5kaXN0KXtBbi5tc2c9ImludmFsaWQgYml0IGxlbmd0aCByZXBlYXQiLFd0Lm1vZGU9MzA7YnJlYWt9Zm9yKDtrci0tOylXdC5sZW5zW1d0LmhhdmUrK109Sm59fWlmKDMwPT09V3QubW9kZSlicmVhaztpZigwPT09''@;'; put 'put ''V3QubGVuc1syNTZdKXtBbi5tc2c9ImludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jayIsV3QubW9kZT0zMDticmVha31pZihXdC5sZW5iaXRzPTksb3I9dGUoMSxXdC5sZW5zLDAsV3QubmxlbixXdC5sZW5jb2RlLDAsV3Qud29yayxLcj17Yml0czpXdC5sZW5iaXRzfSksV3Qu''@;'; put 'put ''bGVuYml0cz1Lci5iaXRzLG9yKXtBbi5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldCIsV3QubW9kZT0zMDticmVha31pZihXdC5kaXN0Yml0cz02LFd0LmRpc3Rjb2RlPVd0LmRpc3RkeW4sb3I9dGUoMixXdC5sZW5zLFd0Lm5sZW4sV3QubmRpc3QsV3QuZGlzdGNvZGUsMCxXdC53''@;'; put 'put ''b3JrLEtyPXtiaXRzOld0LmRpc3RiaXRzfSksV3QuZGlzdGJpdHM9S3IuYml0cyxvcil7QW4ubXNnPSJpbnZhbGlkIGRpc3RhbmNlcyBzZXQiLFd0Lm1vZGU9MzA7YnJlYWt9aWYoV3QubW9kZT0yMCw2PT09cW4pYnJlYWsgZTtjYXNlIDIwOld0Lm1vZGU9MjE7Y2FzZSAyMTppZihVbj49NiYm''@;'; put 'put ''d24+PTI1OCl7QW4ubmV4dF9vdXQ9c24sQW4uYXZhaWxfb3V0PXduLEFuLm5leHRfaW49TnQsQW4uYXZhaWxfaW49VW4sV3QuaG9sZD10bixXdC5iaXRzPXpuLE4oQW4sQm4pLHNuPUFuLm5leHRfb3V0LEtuPUFuLm91dHB1dCx3bj1Bbi5hdmFpbF9vdXQsTnQ9QW4ubmV4dF9pbixwbj1Bbi5p''@;'; put 'put ''bnB1dCxVbj1Bbi5hdmFpbF9pbix0bj1XdC5ob2xkLHpuPVd0LmJpdHMsMTI9PT1XdC5tb2RlJiYoV3QuYmFjaz0tMSk7YnJlYWt9Zm9yKFd0LmJhY2s9MDtHdD0oY249V3QubGVuY29kZVt0biYoMTw8V3QubGVuYml0cyktMV0pPj4+MTYmMjU1LGtuPTY1NTM1JmNuLCEoKF9uPWNuPj4+MjQp''@;'; put 'put ''PD16bik7KXtpZigwPT09VW4pYnJlYWsgZTtVbi0tLHRuKz1wbltOdCsrXTw8em4sem4rPTh9aWYoR3QmJjA9PSgyNDAmR3QpKXtmb3IoVm49X24sZW49R3QsSW49a247R3Q9KGNuPVd0LmxlbmNvZGVbSW4rKCh0biYoMTw8Vm4rZW4pLTEpPj5WbildKT4+PjE2JjI1NSxrbj02NTUzNSZjbiwh''@;'; put 'put ''KFZuKyhfbj1jbj4+PjI0KTw9em4pOyl7aWYoMD09PVVuKWJyZWFrIGU7VW4tLSx0bis9cG5bTnQrK108PHpuLHpuKz04fXRuPj4+PVZuLHpuLT1WbixXdC5iYWNrKz1Wbn1pZih0bj4+Pj1fbix6bi09X24sV3QuYmFjays9X24sV3QubGVuZ3RoPWtuLDA9PT1HdCl7V3QubW9kZT0yNjticmVh''@;'; put 'put ''a31pZigzMiZHdCl7V3QuYmFjaz0tMSxXdC5tb2RlPTEyO2JyZWFrfWlmKDY0Jkd0KXtBbi5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSIsV3QubW9kZT0zMDticmVha31XdC5leHRyYT0xNSZHdCxXdC5tb2RlPTIyO2Nhc2UgMjI6aWYoV3QuZXh0cmEpe2ZvcihWcj1XdC5leHRy''@;'; put 'put ''YTt6bjxWcjspe2lmKDA9PT1VbilicmVhayBlO1VuLS0sdG4rPXBuW050KytdPDx6bix6bis9OH1XdC5sZW5ndGgrPXRuJigxPDxXdC5leHRyYSktMSx0bj4+Pj1XdC5leHRyYSx6bi09V3QuZXh0cmEsV3QuYmFjays9V3QuZXh0cmF9V3Qud2FzPVd0Lmxlbmd0aCxXdC5tb2RlPTIzO2Nhc2Ug''@;'; put 'put ''MjM6Zm9yKDtHdD0oY249V3QuZGlzdGNvZGVbdG4mKDE8PFd0LmRpc3RiaXRzKS0xXSk+Pj4xNiYyNTUsa249NjU1MzUmY24sISgoX249Y24+Pj4yNCk8PXpuKTspe2lmKDA9PT1VbilicmVhayBlO1VuLS0sdG4rPXBuW050KytdPDx6bix6bis9OH1pZigwPT0oMjQwJkd0KSl7Zm9yKFZuPV9u''@;'; put 'put ''LGVuPUd0LEluPWtuO0d0PShjbj1XdC5kaXN0Y29kZVtJbisoKHRuJigxPDxWbitlbiktMSk+PlZuKV0pPj4+MTYmMjU1LGtuPTY1NTM1JmNuLCEoVm4rKF9uPWNuPj4+MjQpPD16bik7KXtpZigwPT09VW4pYnJlYWsgZTtVbi0tLHRuKz1wbltOdCsrXTw8em4sem4rPTh9dG4+Pj49Vm4sem4t''@;'; put 'put ''PVZuLFd0LmJhY2srPVZufWlmKHRuPj4+PV9uLHpuLT1fbixXdC5iYWNrKz1fbiw2NCZHdCl7QW4ubXNnPSJpbnZhbGlkIGRpc3RhbmNlIGNvZGUiLFd0Lm1vZGU9MzA7YnJlYWt9V3Qub2Zmc2V0PWtuLFd0LmV4dHJhPTE1Jkd0LFd0Lm1vZGU9MjQ7Y2FzZSAyNDppZihXdC5leHRyYSl7Zm9y''@;'; put 'put ''KFZyPVd0LmV4dHJhO3puPFZyOyl7aWYoMD09PVVuKWJyZWFrIGU7VW4tLSx0bis9cG5bTnQrK108PHpuLHpuKz04fVd0Lm9mZnNldCs9dG4mKDE8PFd0LmV4dHJhKS0xLHRuPj4+PVd0LmV4dHJhLHpuLT1XdC5leHRyYSxXdC5iYWNrKz1XdC5leHRyYX1pZihXdC5vZmZzZXQ+V3QuZG1heCl7''@;'; put 'put ''QW4ubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsV3QubW9kZT0zMDticmVha31XdC5tb2RlPTI1O2Nhc2UgMjU6aWYoMD09PXduKWJyZWFrIGU7aWYoV3Qub2Zmc2V0Pihrcj1Cbi13bikpe2lmKChrcj1XdC5vZmZzZXQta3IpPld0LndoYXZlJiZXdC5zYW5lKXtBbi5tc2c9''@;'; put 'put ''ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIixXdC5tb2RlPTMwO2JyZWFrfW1uPWtyPld0LnduZXh0P1d0LndzaXplLShrci09V3Qud25leHQpOld0LnduZXh0LWtyLGtyPld0Lmxlbmd0aCYmKGtyPVd0Lmxlbmd0aCksdW49V3Qud2luZG93fWVsc2UgdW49S24sbW49c24tV3Qub2Zm''@;'; put 'put ''c2V0LGtyPVd0Lmxlbmd0aDtrcj53biYmKGtyPXduKSx3bi09a3IsV3QubGVuZ3RoLT1rcjtkb3tLbltzbisrXT11blttbisrXX13aGlsZSgtLWtyKTswPT09V3QubGVuZ3RoJiYoV3QubW9kZT0yMSk7YnJlYWs7Y2FzZSAyNjppZigwPT09d24pYnJlYWsgZTtLbltzbisrXT1XdC5sZW5ndGgs''@;'; put 'put ''d24tLSxXdC5tb2RlPTIxO2JyZWFrO2Nhc2UgMjc6aWYoV3Qud3JhcCl7Zm9yKDt6bjwzMjspe2lmKDA9PT1VbilicmVhayBlO1VuLS0sdG58PXBuW050KytdPDx6bix6bis9OH1pZihBbi50b3RhbF9vdXQrPUJuLT13bixXdC50b3RhbCs9Qm4sQm4mJihBbi5hZGxlcj1XdC5jaGVjaz1XdC5m''@;'; put 'put ''bGFncz9XKFd0LmNoZWNrLEtuLEJuLHNuLUJuKTpZKFd0LmNoZWNrLEtuLEJuLHNuLUJuKSksQm49d24sKFd0LmZsYWdzP3RuOkp0KHRuKSkhPT1XdC5jaGVjayl7QW4ubXNnPSJpbmNvcnJlY3QgZGF0YSBjaGVjayIsV3QubW9kZT0zMDticmVha310bj0wLHpuPTB9V3QubW9kZT0yODtjYXNl''@;'; put 'put ''IDI4OmlmKFd0LndyYXAmJld0LmZsYWdzKXtmb3IoO3puPDMyOyl7aWYoMD09PVVuKWJyZWFrIGU7VW4tLSx0bis9cG5bTnQrK108PHpuLHpuKz04fWlmKHRuIT09KDQyOTQ5NjcyOTUmV3QudG90YWwpKXtBbi5tc2c9ImluY29ycmVjdCBsZW5ndGggY2hlY2siLFd0Lm1vZGU9MzA7YnJlYWt9''@;'; put 'put ''dG49MCx6bj0wfVd0Lm1vZGU9Mjk7Y2FzZSAyOTpvcj0xO2JyZWFrIGU7Y2FzZSAzMDpvcj0tMzticmVhayBlO2Nhc2UgMzE6cmV0dXJuLTQ7ZGVmYXVsdDpyZXR1cm4tMn1yZXR1cm4gQW4ubmV4dF9vdXQ9c24sQW4uYXZhaWxfb3V0PXduLEFuLm5leHRfaW49TnQsQW4uYXZhaWxfaW49VW4s''@;'; put 'put ''V3QuaG9sZD10bixXdC5iaXRzPXpuLChXdC53c2l6ZXx8Qm4hPT1Bbi5hdmFpbF9vdXQmJld0Lm1vZGU8MzAmJihXdC5tb2RlPDI3fHw0IT09cW4pKSYmZnVuY3Rpb24geHIoQW4scW4sV3QscG4pe3ZhciBLbixOdD1Bbi5zdGF0ZTtyZXR1cm4gbnVsbD09PU50LndpbmRvdyYmKE50LndzaXpl''@;'; put 'put ''PTE8PE50LndiaXRzLE50LnduZXh0PTAsTnQud2hhdmU9MCxOdC53aW5kb3c9bmV3IGFlLkJ1ZjgoTnQud3NpemUpKSxwbj49TnQud3NpemU/KGFlLmFycmF5U2V0KE50LndpbmRvdyxxbixXdC1OdC53c2l6ZSxOdC53c2l6ZSwwKSxOdC53bmV4dD0wLE50LndoYXZlPU50LndzaXplKTooKEtu''@;'; put 'put ''PU50LndzaXplLU50LnduZXh0KT5wbiYmKEtuPXBuKSxhZS5hcnJheVNldChOdC53aW5kb3cscW4sV3QtcG4sS24sTnQud25leHQpLChwbi09S24pPyhhZS5hcnJheVNldChOdC53aW5kb3cscW4sV3QtcG4scG4sMCksTnQud25leHQ9cG4sTnQud2hhdmU9TnQud3NpemUpOihOdC53bmV4dCs9''@;'; put 'put ''S24sTnQud25leHQ9PT1OdC53c2l6ZSYmKE50LnduZXh0PTApLE50LndoYXZlPE50LndzaXplJiYoTnQud2hhdmUrPUtuKSkpLDB9KEFuLEFuLm91dHB1dCxBbi5uZXh0X291dCxCbi1Bbi5hdmFpbF9vdXQpPyhXdC5tb2RlPTMxLC00KTooQm4tPUFuLmF2YWlsX291dCxBbi50b3RhbF9pbis9''@;'; put 'put ''VHItPUFuLmF2YWlsX2luLEFuLnRvdGFsX291dCs9Qm4sV3QudG90YWwrPUJuLFd0LndyYXAmJkJuJiYoQW4uYWRsZXI9V3QuY2hlY2s9V3QuZmxhZ3M/VyhXdC5jaGVjayxLbixCbixBbi5uZXh0X291dC1Cbik6WShXdC5jaGVjayxLbixCbixBbi5uZXh0X291dC1CbikpLEFuLmRhdGFfdHlw''@;'; put 'put ''ZT1XdC5iaXRzKyhXdC5sYXN0PzY0OjApKygxMj09PVd0Lm1vZGU/MTI4OjApKygyMD09PVd0Lm1vZGV8fDE1PT09V3QubW9kZT8yNTY6MCksKDA9PT1UciYmMD09PUJufHw0PT09cW4pJiYwPT09b3ImJihvcj0tNSksb3IpfSxyZS5pbmZsYXRlRW5kPWZ1bmN0aW9uIHByKEFuKXtpZighQW58''@;'; put 'put ''fCFBbi5zdGF0ZSlyZXR1cm4tMjt2YXIgcW49QW4uc3RhdGU7cmV0dXJuIHFuLndpbmRvdyYmKHFuLndpbmRvdz1udWxsKSxBbi5zdGF0ZT1udWxsLDB9LHJlLmluZmxhdGVHZXRIZWFkZXI9ZnVuY3Rpb24gbnIoQW4scW4pe3ZhciBXdDtyZXR1cm4gQW4mJkFuLnN0YXRlJiYwIT0oMiYoV3Q9''@;'; put 'put ''QW4uc3RhdGUpLndyYXApPyhXdC5oZWFkPXFuLHFuLmRvbmU9ITEsMCk6LTJ9LHJlLmluZmxhdGVJbmZvPSJwYWtvIGluZmxhdGUgKGZyb20gTm9kZWNhIHByb2plY3QpIn0seyIuLi91dGlscy9jb21tb24iOjI3LCIuL2FkbGVyMzIiOjI5LCIuL2NyYzMyIjozMSwiLi9pbmZmYXN0IjozNCwi''@;'; put 'put ''Li9pbmZ0cmVlcyI6MzZ9XSwzNjpbZnVuY3Rpb24oUSxqLHJlKXsidXNlIHN0cmljdCI7dmFyIGFlPVEoIi4uL3V0aWxzL2NvbW1vbiIpLHNlPVszLDQsNSw2LDcsOCw5LDEwLDExLDEzLDE1LDE3LDE5LDIzLDI3LDMxLDM1LDQzLDUxLDU5LDY3LDgzLDk5LDExNSwxMzEsMTYzLDE5NSwyMjcs''@;'; put 'put ''MjU4LDAsMF0sb2U9WzE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE3LDE3LDE3LDE3LDE4LDE4LDE4LDE4LDE5LDE5LDE5LDE5LDIwLDIwLDIwLDIwLDIxLDIxLDIxLDIxLDE2LDcyLDc4XSxjZT1bMSwyLDMsNCw1LDcsOSwxMywxNywyNSwzMyw0OSw2NSw5NywxMjksMTkzLDI1NywzODUsNTEz''@;'; put 'put ''LDc2OSwxMDI1LDE1MzcsMjA0OSwzMDczLDQwOTcsNjE0NSw4MTkzLDEyMjg5LDE2Mzg1LDI0NTc3LDAsMF0sZGU9WzE2LDE2LDE2LDE2LDE3LDE3LDE4LDE4LDE5LDE5LDIwLDIwLDIxLDIxLDIyLDIyLDIzLDIzLDI0LDI0LDI1LDI1LDI2LDI2LDI3LDI3LDI4LDI4LDI5LDI5LDY0LDY0XTtq''@;'; put 'put ''LmV4cG9ydHM9ZnVuY3Rpb24oQWUsa2UsU2UsSWUsVGUsTWUsaGUsTyl7dmFyIERlLFBlLFFlLCRlLGd0LHZ0LF90LHR0LGV0LHo9Ty5iaXRzLGVlPTAsbmU9MCx4PTAsUD0wLFY9MCxUPTAsUz0wLEY9MCx5ZT0wLENlPTAsd3Q9bnVsbCxtdD0wLEF0PW5ldyBhZS5CdWYxNigxNiksaHQ9bmV3''@;'; put 'put ''IGFlLkJ1ZjE2KDE2KSxCdD1udWxsLG9uPTA7Zm9yKGVlPTA7ZWU8PTE1O2VlKyspQXRbZWVdPTA7Zm9yKG5lPTA7bmU8SWU7bmUrKylBdFtrZVtTZStuZV1dKys7Zm9yKFY9eixQPTE1O1A+PTEmJjA9PT1BdFtQXTtQLS0pO2lmKFY+UCYmKFY9UCksMD09PVApcmV0dXJuIFRlW01lKytdPTIw''@;'; put 'put ''OTcxNTIwLFRlW01lKytdPTIwOTcxNTIwLE8uYml0cz0xLDA7Zm9yKHg9MTt4PFAmJjA9PT1BdFt4XTt4KyspO2ZvcihWPHgmJihWPXgpLEY9MSxlZT0xO2VlPD0xNTtlZSsrKWlmKEY8PD0xLChGLT1BdFtlZV0pPDApcmV0dXJuLTE7aWYoRj4wJiYoMD09PUFlfHwxIT09UCkpcmV0dXJuLTE7''@;'; put 'put ''Zm9yKGh0WzFdPTAsZWU9MTtlZTwxNTtlZSsrKWh0W2VlKzFdPWh0W2VlXStBdFtlZV07Zm9yKG5lPTA7bmU8SWU7bmUrKykwIT09a2VbU2UrbmVdJiYoaGVbaHRba2VbU2UrbmVdXSsrXT1uZSk7aWYoMD09PUFlPyh3dD1CdD1oZSx2dD0xOSk6MT09PUFlPyh3dD1zZSxtdC09MjU3LEJ0PW9l''@;'; put 'put ''LG9uLT0yNTcsdnQ9MjU2KTood3Q9Y2UsQnQ9ZGUsdnQ9LTEpLENlPTAsbmU9MCxlZT14LGd0PU1lLFQ9VixTPTAsUWU9LTEsJGU9KHllPTE8PFYpLTEsMT09PUFlJiZ5ZT44NTJ8fDI9PT1BZSYmeWU+NTkyKXJldHVybiAxO2Zvcig7Oyl7X3Q9ZWUtUyxoZVtuZV08dnQ/KHR0PTAsZXQ9aGVb''@;'; put 'put ''bmVdKTpoZVtuZV0+dnQ/KHR0PUJ0W29uK2hlW25lXV0sZXQ9d3RbbXQraGVbbmVdXSk6KHR0PTk2LGV0PTApLERlPTE8PGVlLVMseD1QZT0xPDxUO2Rve1RlW2d0KyhDZT4+UykrKFBlLT1EZSldPV90PDwyNHx0dDw8MTZ8ZXR8MH13aGlsZSgwIT09UGUpO2ZvcihEZT0xPDxlZS0xO0NlJkRl''@;'; put 'put ''OylEZT4+PTE7aWYoMCE9PURlPyhDZSY9RGUtMSxDZSs9RGUpOkNlPTAsbmUrKywwPT0tLUF0W2VlXSl7aWYoZWU9PT1QKWJyZWFrO2VlPWtlW1NlK2hlW25lXV19aWYoZWU+ViYmKENlJiRlKSE9PVFlKXtmb3IoMD09PVMmJihTPVYpLGd0Kz14LEY9MTw8KFQ9ZWUtUyk7VCtTPFAmJiEoKEYt''@;'; put 'put ''PUF0W1QrU10pPD0wKTspVCsrLEY8PD0xO2lmKHllKz0xPDxULDE9PT1BZSYmeWU+ODUyfHwyPT09QWUmJnllPjU5MilyZXR1cm4gMTtUZVtRZT1DZSYkZV09Vjw8MjR8VDw8MTZ8Z3QtTWV8MH19cmV0dXJuIDAhPT1DZSYmKFRlW2d0K0NlXT1lZS1TPDwyNHw2NDw8MTZ8MCksTy5iaXRzPVYs''@;'; put 'put ''MH19LHsiLi4vdXRpbHMvY29tbW9uIjoyN31dLDM3OltmdW5jdGlvbihRLGoscmUpeyJ1c2Ugc3RyaWN0IjtqLmV4cG9ydHM9ezI6Im5lZWQgZGljdGlvbmFyeSIsMToic3RyZWFtIGVuZCIsMDoiIiwiLTEiOiJmaWxlIGVycm9yIiwiLTIiOiJzdHJlYW0gZXJyb3IiLCItMyI6ImRhdGEgZXJy''@;'; put 'put ''b3IiLCItNCI6Imluc3VmZmljaWVudCBtZW1vcnkiLCItNSI6ImJ1ZmZlciBlcnJvciIsIi02IjoiaW5jb21wYXRpYmxlIHZlcnNpb24ifX0se31dLDM4OltmdW5jdGlvbihRLGoscmUpeyJ1c2Ugc3RyaWN0Ijt2YXIgYWU9USgiLi4vdXRpbHMvY29tbW9uIik7ZnVuY3Rpb24gSyhxdCl7Zm9y''@;'; put 'put ''KHZhciBwcj1xdC5sZW5ndGg7LS1wcj49MDspcXRbcHJdPTB9dmFyIFA9WzAsMCwwLDAsMCwwLDAsMCwxLDEsMSwxLDIsMiwyLDIsMywzLDMsMyw0LDQsNCw0LDUsNSw1LDUsMF0sVj1bMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LDcsOCw4LDksOSwxMCwxMCwxMSwxMSwxMiwx''@;'; put 'put ''MiwxMywxM10sVD1bMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDMsN10sUz1bMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV0seWU9bmV3IEFycmF5KDU3Nik7Syh5ZSk7dmFyIENlPW5ldyBBcnJheSg2MCk7SyhDZSk7dmFyIERlPW5ldyBB''@;'; put 'put ''cnJheSg1MTIpO0soRGUpO3ZhciBQZT1uZXcgQXJyYXkoMjU2KTtLKFBlKTt2YXIgUWU9bmV3IEFycmF5KDI5KTtLKFFlKTt2YXIgJGU9bmV3IEFycmF5KDMwKTtLKCRlKTt2YXIgd3QsbXQsdnQsZ3Q9ZnVuY3Rpb24ocXQscHIsbnIsQW4scW4pe3RoaXMuc3RhdGljX3RyZWU9cXQsdGhpcy5l''@;'; put 'put ''eHRyYV9iaXRzPXByLHRoaXMuZXh0cmFfYmFzZT1ucix0aGlzLmVsZW1zPUFuLHRoaXMubWF4X2xlbmd0aD1xbix0aGlzLmhhc19zdHJlZT1xdCYmcXQubGVuZ3RofSxBdD1mdW5jdGlvbihxdCxwcil7dGhpcy5keW5fdHJlZT1xdCx0aGlzLm1heF9jb2RlPTAsdGhpcy5zdGF0X2Rlc2M9cHJ9''@;'; put 'put ''O2Z1bmN0aW9uIGh0KHF0KXtyZXR1cm4gcXQ8MjU2P0RlW3F0XTpEZVsyNTYrKHF0Pj4+NyldfWZ1bmN0aW9uIEJ0KHF0LHByKXtxdC5wZW5kaW5nX2J1ZltxdC5wZW5kaW5nKytdPTI1NSZwcixxdC5wZW5kaW5nX2J1ZltxdC5wZW5kaW5nKytdPXByPj4+OCYyNTV9ZnVuY3Rpb24gb24ocXQs''@;'; put 'put ''cHIsbnIpe3F0LmJpX3ZhbGlkPjE2LW5yPyhxdC5iaV9idWZ8PXByPDxxdC5iaV92YWxpZCY2NTUzNSxCdChxdCxxdC5iaV9idWYpLHF0LmJpX2J1Zj1wcj4+MTYtcXQuYmlfdmFsaWQscXQuYmlfdmFsaWQrPW5yLTE2KToocXQuYmlfYnVmfD1wcjw8cXQuYmlfdmFsaWQmNjU1MzUscXQuYmlf''@;'; put 'put ''dmFsaWQrPW5yKX1mdW5jdGlvbiBfdChxdCxwcixucil7b24ocXQsbnJbMipwcl0sbnJbMipwcisxXSl9ZnVuY3Rpb24gdHQocXQscHIpe3ZhciBucj0wO2Rve25yfD0xJnF0LHF0Pj4+PTEsbnI8PD0xfXdoaWxlKC0tcHI+MCk7cmV0dXJuIG5yPj4+MX1mdW5jdGlvbiBMdChxdCxwcixucil7''@;'; put 'put ''dmFyIFd0LHBuLEFuPW5ldyBBcnJheSgxNikscW49MDtmb3IoV3Q9MTtXdDw9MTU7V3QrKylBbltXdF09cW49cW4rbnJbV3QtMV08PDE7Zm9yKHBuPTA7cG48PXByO3BuKyspe3ZhciBLbj1xdFsyKnBuKzFdOzAhPT1LbiYmKHF0WzIqcG5dPXR0KEFuW0tuXSsrLEtuKSl9fWZ1bmN0aW9uIGZ0''@;'; put 'put ''KHF0KXt2YXIgcHI7Zm9yKHByPTA7cHI8Mjg2O3ByKyspcXQuZHluX2x0cmVlWzIqcHJdPTA7Zm9yKHByPTA7cHI8MzA7cHIrKylxdC5keW5fZHRyZWVbMipwcl09MDtmb3IocHI9MDtwcjwxOTtwcisrKXF0LmJsX3RyZWVbMipwcl09MDtxdC5keW5fbHRyZWVbNTEyXT0xLHF0Lm9wdF9sZW49''@;'; put 'put ''cXQuc3RhdGljX2xlbj0wLHF0Lmxhc3RfbGl0PXF0Lm1hdGNoZXM9MH1mdW5jdGlvbiBIdChxdCl7cXQuYmlfdmFsaWQ+OD9CdChxdCxxdC5iaV9idWYpOnF0LmJpX3ZhbGlkPjAmJihxdC5wZW5kaW5nX2J1ZltxdC5wZW5kaW5nKytdPXF0LmJpX2J1ZikscXQuYmlfYnVmPTAscXQuYmlfdmFs''@;'; put 'put ''aWQ9MH1mdW5jdGlvbiBVZShxdCxwcixucixBbil7dmFyIHFuPTIqcHIsV3Q9MipucjtyZXR1cm4gcXRbcW5dPHF0W1d0XXx8cXRbcW5dPT09cXRbV3RdJiZBbltwcl08PUFuW25yXX1mdW5jdGlvbiB5dChxdCxwcixucil7Zm9yKHZhciBBbj1xdC5oZWFwW25yXSxxbj1ucjw8MTtxbjw9cXQu''@;'; put 'put ''aGVhcF9sZW4mJihxbjxxdC5oZWFwX2xlbiYmVWUocHIscXQuaGVhcFtxbisxXSxxdC5oZWFwW3FuXSxxdC5kZXB0aCkmJnFuKyssIVVlKHByLEFuLHF0LmhlYXBbcW5dLHF0LmRlcHRoKSk7KXF0LmhlYXBbbnJdPXF0LmhlYXBbcW5dLG5yPXFuLHFuPDw9MTtxdC5oZWFwW25yXT1Bbn1mdW5j''@;'; put 'put ''dGlvbiBqdChxdCxwcixucil7dmFyIEFuLHFuLHBuLEtuLFd0PTA7aWYoMCE9PXF0Lmxhc3RfbGl0KWRve0FuPXF0LnBlbmRpbmdfYnVmW3F0LmRfYnVmKzIqV3RdPDw4fHF0LnBlbmRpbmdfYnVmW3F0LmRfYnVmKzIqV3QrMV0scW49cXQucGVuZGluZ19idWZbcXQubF9idWYrV3RdLFd0Kyss''@;'; put 'put ''MD09PUFuP190KHF0LHFuLHByKTooX3QocXQsKHBuPVBlW3FuXSkrMjU2KzEscHIpLDAhPT0oS249UFtwbl0pJiZvbihxdCxxbi09UWVbcG5dLEtuKSxfdChxdCxwbj1odCgtLUFuKSxuciksMCE9PShLbj1WW3BuXSkmJm9uKHF0LEFuLT0kZVtwbl0sS24pKX13aGlsZShXdDxxdC5sYXN0X2xp''@;'; put 'put ''dCk7X3QocXQsMjU2LHByKX1mdW5jdGlvbiBKdChxdCxwcil7dmFyIHBuLEtuLHNuLG5yPXByLmR5bl90cmVlLEFuPXByLnN0YXRfZGVzYy5zdGF0aWNfdHJlZSxxbj1wci5zdGF0X2Rlc2MuaGFzX3N0cmVlLFd0PXByLnN0YXRfZGVzYy5lbGVtcyxOdD0tMTtmb3IocXQuaGVhcF9sZW49MCxx''@;'; put 'put ''dC5oZWFwX21heD01NzMscG49MDtwbjxXdDtwbisrKTAhPT1uclsyKnBuXT8ocXQuaGVhcFsrK3F0LmhlYXBfbGVuXT1OdD1wbixxdC5kZXB0aFtwbl09MCk6bnJbMipwbisxXT0wO2Zvcig7cXQuaGVhcF9sZW48MjspbnJbMiooc249cXQuaGVhcFsrK3F0LmhlYXBfbGVuXT1OdDwyPysrTnQ6''@;'; put 'put ''MCldPTEscXQuZGVwdGhbc25dPTAscXQub3B0X2xlbi0tLHFuJiYocXQuc3RhdGljX2xlbi09QW5bMipzbisxXSk7Zm9yKHByLm1heF9jb2RlPU50LHBuPXF0LmhlYXBfbGVuPj4xO3BuPj0xO3BuLS0peXQocXQsbnIscG4pO3NuPVd0O2Rve3BuPXF0LmhlYXBbMV0scXQuaGVhcFsxXT1xdC5o''@;'; put 'put ''ZWFwW3F0LmhlYXBfbGVuLS1dLHl0KHF0LG5yLDEpLEtuPXF0LmhlYXBbMV0scXQuaGVhcFstLXF0LmhlYXBfbWF4XT1wbixxdC5oZWFwWy0tcXQuaGVhcF9tYXhdPUtuLG5yWzIqc25dPW5yWzIqcG5dK25yWzIqS25dLHF0LmRlcHRoW3NuXT0ocXQuZGVwdGhbcG5dPj1xdC5kZXB0aFtLbl0/''@;'; put 'put ''cXQuZGVwdGhbcG5dOnF0LmRlcHRoW0tuXSkrMSxuclsyKnBuKzFdPW5yWzIqS24rMV09c24scXQuaGVhcFsxXT1zbisrLHl0KHF0LG5yLDEpfXdoaWxlKHF0LmhlYXBfbGVuPj0yKTtxdC5oZWFwWy0tcXQuaGVhcF9tYXhdPXF0LmhlYXBbMV0sZnVuY3Rpb24gbHQocXQscHIpe3ZhciBzbixV''@;'; put 'put ''bix3bix0bix6bixUcixucj1wci5keW5fdHJlZSxBbj1wci5tYXhfY29kZSxxbj1wci5zdGF0X2Rlc2Muc3RhdGljX3RyZWUsV3Q9cHIuc3RhdF9kZXNjLmhhc19zdHJlZSxwbj1wci5zdGF0X2Rlc2MuZXh0cmFfYml0cyxLbj1wci5zdGF0X2Rlc2MuZXh0cmFfYmFzZSxOdD1wci5zdGF0X2Rl''@;'; put 'put ''c2MubWF4X2xlbmd0aCxCbj0wO2Zvcih0bj0wO3RuPD0xNTt0bisrKXF0LmJsX2NvdW50W3RuXT0wO2ZvcihuclsyKnF0LmhlYXBbcXQuaGVhcF9tYXhdKzFdPTAsc249cXQuaGVhcF9tYXgrMTtzbjw1NzM7c24rKykodG49bnJbMipuclsyKihVbj1xdC5oZWFwW3NuXSkrMV0rMV0rMSk+TnQm''@;'; put 'put ''Jih0bj1OdCxCbisrKSxuclsyKlVuKzFdPXRuLCEoVW4+QW4pJiYocXQuYmxfY291bnRbdG5dKyssem49MCxVbj49S24mJih6bj1wbltVbi1Lbl0pLHF0Lm9wdF9sZW4rPShUcj1uclsyKlVuXSkqKHRuK3puKSxXdCYmKHF0LnN0YXRpY19sZW4rPVRyKihxblsyKlVuKzFdK3puKSkpO2lmKDAh''@;'; put 'put ''PT1Cbil7ZG97Zm9yKHRuPU50LTE7MD09PXF0LmJsX2NvdW50W3RuXTspdG4tLTtxdC5ibF9jb3VudFt0bl0tLSxxdC5ibF9jb3VudFt0bisxXSs9MixxdC5ibF9jb3VudFtOdF0tLSxCbi09Mn13aGlsZShCbj4wKTtmb3IodG49TnQ7MCE9PXRuO3RuLS0pZm9yKFVuPXF0LmJsX2NvdW50W3Ru''@;'; put 'put ''XTswIT09VW47KSEoKHduPXF0LmhlYXBbLS1zbl0pPkFuKSYmKG5yWzIqd24rMV0hPT10biYmKHF0Lm9wdF9sZW4rPSh0bi1uclsyKnduKzFdKSpuclsyKnduXSxuclsyKnduKzFdPXRuKSxVbi0tKX19KHF0LHByKSxMdChucixOdCxxdC5ibF9jb3VudCl9ZnVuY3Rpb24gZ24ocXQscHIsbnIp''@;'; put 'put ''e3ZhciBBbixXdCxxbj0tMSxwbj1wclsxXSxLbj0wLE50PTcsc249NDtmb3IoMD09PXBuJiYoTnQ9MTM4LHNuPTMpLHByWzIqKG5yKzEpKzFdPTY1NTM1LEFuPTA7QW48PW5yO0FuKyspV3Q9cG4scG49cHJbMiooQW4rMSkrMV0sISgrK0tuPE50JiZXdD09PXBuKSYmKEtuPHNuP3F0LmJsX3Ry''@;'; put 'put ''ZWVbMipXdF0rPUtuOjAhPT1XdD8oV3QhPT1xbiYmcXQuYmxfdHJlZVsyKld0XSsrLHF0LmJsX3RyZWVbMzJdKyspOktuPD0xMD9xdC5ibF90cmVlWzM0XSsrOnF0LmJsX3RyZWVbMzZdKyssS249MCxxbj1XdCwwPT09cG4/KE50PTEzOCxzbj0zKTpXdD09PXBuPyhOdD02LHNuPTMpOihOdD03''@;'; put 'put ''LHNuPTQpKX1mdW5jdGlvbiBkbihxdCxwcixucil7dmFyIEFuLFd0LHFuPS0xLHBuPXByWzFdLEtuPTAsTnQ9Nyxzbj00O2ZvcigwPT09cG4mJihOdD0xMzgsc249MyksQW49MDtBbjw9bnI7QW4rKylpZihXdD1wbixwbj1wclsyKihBbisxKSsxXSwhKCsrS248TnQmJld0PT09cG4pKXtpZihL''@;'; put 'put ''bjxzbilkb3tfdChxdCxXdCxxdC5ibF90cmVlKX13aGlsZSgwIT0tLUtuKTtlbHNlIDAhPT1XdD8oV3QhPT1xbiYmKF90KHF0LFd0LHF0LmJsX3RyZWUpLEtuLS0pLF90KHF0LDE2LHF0LmJsX3RyZWUpLG9uKHF0LEtuLTMsMikpOktuPD0xMD8oX3QocXQsMTcscXQuYmxfdHJlZSksb24ocXQs''@;'; put 'put ''S24tMywzKSk6KF90KHF0LDE4LHF0LmJsX3RyZWUpLG9uKHF0LEtuLTExLDcpKTtLbj0wLHFuPVd0LDA9PT1wbj8oTnQ9MTM4LHNuPTMpOld0PT09cG4/KE50PTYsc249Myk6KE50PTcsc249NCl9fXZhciBibj0hMTtmdW5jdGlvbiBzcihxdCxwcixucixBbil7b24ocXQsMCsoQW4/MTowKSwz''@;'; put 'put ''KSxmdW5jdGlvbiBHZShxdCxwcixucixBbil7SHQocXQpLEFuJiYoQnQocXQsbnIpLEJ0KHF0LH5ucikpLGFlLmFycmF5U2V0KHF0LnBlbmRpbmdfYnVmLHF0LndpbmRvdyxwcixucixxdC5wZW5kaW5nKSxxdC5wZW5kaW5nKz1ucn0ocXQscHIsbnIsITApfXJlLl90cl9pbml0PWZ1bmN0aW9u''@;'; put 'put ''IGVyKHF0KXtibnx8KGZ1bmN0aW9uIEN0KCl7dmFyIHF0LHByLG5yLEFuLHFuLFd0PW5ldyBBcnJheSgxNik7Zm9yKG5yPTAsQW49MDtBbjwyODtBbisrKWZvcihRZVtBbl09bnIscXQ9MDtxdDwxPDxQW0FuXTtxdCsrKVBlW25yKytdPUFuO2ZvcihQZVtuci0xXT1Bbixxbj0wLEFuPTA7QW48''@;'; put 'put ''MTY7QW4rKylmb3IoJGVbQW5dPXFuLHF0PTA7cXQ8MTw8VltBbl07cXQrKylEZVtxbisrXT1Bbjtmb3IocW4+Pj03O0FuPDMwO0FuKyspZm9yKCRlW0FuXT1xbjw8NyxxdD0wO3F0PDE8PFZbQW5dLTc7cXQrKylEZVsyNTYrcW4rK109QW47Zm9yKHByPTA7cHI8PTE1O3ByKyspV3RbcHJdPTA7''@;'; put 'put ''Zm9yKHF0PTA7cXQ8PTE0MzspeWVbMipxdCsxXT04LHF0KyssV3RbOF0rKztmb3IoO3F0PD0yNTU7KXllWzIqcXQrMV09OSxxdCsrLFd0WzldKys7Zm9yKDtxdDw9Mjc5Oyl5ZVsyKnF0KzFdPTcscXQrKyxXdFs3XSsrO2Zvcig7cXQ8PTI4NzspeWVbMipxdCsxXT04LHF0KyssV3RbOF0rKztm''@;'; put 'put ''b3IoTHQoeWUsMjg3LFd0KSxxdD0wO3F0PDMwO3F0KyspQ2VbMipxdCsxXT01LENlWzIqcXRdPXR0KHF0LDUpO3d0PW5ldyBndCh5ZSxQLDI1NywyODYsMTUpLG10PW5ldyBndChDZSxWLDAsMzAsMTUpLHZ0PW5ldyBndChuZXcgQXJyYXkoMCksVCwwLDE5LDcpfSgpLGJuPSEwKSxxdC5sX2Rl''@;'; put 'put ''c2M9bmV3IEF0KHF0LmR5bl9sdHJlZSx3dCkscXQuZF9kZXNjPW5ldyBBdChxdC5keW5fZHRyZWUsbXQpLHF0LmJsX2Rlc2M9bmV3IEF0KHF0LmJsX3RyZWUsdnQpLHF0LmJpX2J1Zj0wLHF0LmJpX3ZhbGlkPTAsZnQocXQpfSxyZS5fdHJfc3RvcmVkX2Jsb2NrPXNyLHJlLl90cl9mbHVzaF9i''@;'; put 'put ''bG9jaz1mdW5jdGlvbiBGcihxdCxwcixucixBbil7dmFyIHFuLFd0LHBuPTA7cXQubGV2ZWw+MD8oMj09PXF0LnN0cm0uZGF0YV90eXBlJiYocXQuc3RybS5kYXRhX3R5cGU9ZnVuY3Rpb24gTm4ocXQpe3ZhciBucixwcj00MDkzNjI0NDQ3O2Zvcihucj0wO25yPD0zMTtucisrLHByPj4+PTEp''@;'; put 'put ''aWYoMSZwciYmMCE9PXF0LmR5bl9sdHJlZVsyKm5yXSlyZXR1cm4gMDtpZigwIT09cXQuZHluX2x0cmVlWzE4XXx8MCE9PXF0LmR5bl9sdHJlZVsyMF18fDAhPT1xdC5keW5fbHRyZWVbMjZdKXJldHVybiAxO2Zvcihucj0zMjtucjwyNTY7bnIrKylpZigwIT09cXQuZHluX2x0cmVlWzIqbnJd''@;'; put 'put ''KXJldHVybiAxO3JldHVybiAwfShxdCkpLEp0KHF0LHF0LmxfZGVzYyksSnQocXQscXQuZF9kZXNjKSxwbj1mdW5jdGlvbiB5bihxdCl7dmFyIHByO2ZvcihnbihxdCxxdC5keW5fbHRyZWUscXQubF9kZXNjLm1heF9jb2RlKSxnbihxdCxxdC5keW5fZHRyZWUscXQuZF9kZXNjLm1heF9jb2Rl''@;'; put 'put ''KSxKdChxdCxxdC5ibF9kZXNjKSxwcj0xODtwcj49MyYmMD09PXF0LmJsX3RyZWVbMipTW3ByXSsxXTtwci0tKTtyZXR1cm4gcXQub3B0X2xlbis9MyoocHIrMSkrNSs1KzQscHJ9KHF0KSwoV3Q9cXQuc3RhdGljX2xlbiszKzc+Pj4zKTw9KHFuPXF0Lm9wdF9sZW4rMys3Pj4+MykmJihxbj1X''@;'; put 'put ''dCkpOnFuPVd0PW5yKzUsbnIrNDw9cW4mJi0xIT09cHI/c3IocXQscHIsbnIsQW4pOjQ9PT1xdC5zdHJhdGVneXx8V3Q9PT1xbj8ob24ocXQsMisoQW4/MTowKSwzKSxqdChxdCx5ZSxDZSkpOihvbihxdCw0KyhBbj8xOjApLDMpLGZ1bmN0aW9uIGxuKHF0LHByLG5yLEFuKXt2YXIgcW47Zm9y''@;'; put 'put ''KG9uKHF0LHByLTI1Nyw1KSxvbihxdCxuci0xLDUpLG9uKHF0LEFuLTQsNCkscW49MDtxbjxBbjtxbisrKW9uKHF0LHF0LmJsX3RyZWVbMipTW3FuXSsxXSwzKTtkbihxdCxxdC5keW5fbHRyZWUscHItMSksZG4ocXQscXQuZHluX2R0cmVlLG5yLTEpfShxdCxxdC5sX2Rlc2MubWF4X2NvZGUr''@;'; put 'put ''MSxxdC5kX2Rlc2MubWF4X2NvZGUrMSxwbisxKSxqdChxdCxxdC5keW5fbHRyZWUscXQuZHluX2R0cmVlKSksZnQocXQpLEFuJiZIdChxdCl9LHJlLl90cl90YWxseT1mdW5jdGlvbiB4cihxdCxwcixucil7cmV0dXJuIHF0LnBlbmRpbmdfYnVmW3F0LmRfYnVmKzIqcXQubGFzdF9saXRdPXBy''@;'; put 'put ''Pj4+OCYyNTUscXQucGVuZGluZ19idWZbcXQuZF9idWYrMipxdC5sYXN0X2xpdCsxXT0yNTUmcHIscXQucGVuZGluZ19idWZbcXQubF9idWYrcXQubGFzdF9saXRdPTI1NSZucixxdC5sYXN0X2xpdCsrLDA9PT1wcj9xdC5keW5fbHRyZWVbMipucl0rKzoocXQubWF0Y2hlcysrLHByLS0scXQu''@;'; put 'put ''ZHluX2x0cmVlWzIqKFBlW25yXSsyNTYrMSldKysscXQuZHluX2R0cmVlWzIqaHQocHIpXSsrKSxxdC5sYXN0X2xpdD09PXF0LmxpdF9idWZzaXplLTF9LHJlLl90cl9hbGlnbj1mdW5jdGlvbiBYbihxdCl7b24ocXQsMiwzKSxfdChxdCwyNTYseWUpLGZ1bmN0aW9uIGV0KHF0KXsxNj09PXF0''@;'; put 'put ''LmJpX3ZhbGlkPyhCdChxdCxxdC5iaV9idWYpLHF0LmJpX2J1Zj0wLHF0LmJpX3ZhbGlkPTApOnF0LmJpX3ZhbGlkPj04JiYocXQucGVuZGluZ19idWZbcXQucGVuZGluZysrXT0yNTUmcXQuYmlfYnVmLHF0LmJpX2J1Zj4+PTgscXQuYmlfdmFsaWQtPTgpfShxdCl9fSx7Ii4uL3V0aWxzL2Nv''@;'; put 'put ''bW1vbiI6Mjd9XSwzOTpbZnVuY3Rpb24oUSxqLHJlKXsidXNlIHN0cmljdCI7ai5leHBvcnRzPWZ1bmN0aW9uIGFlKCl7dGhpcy5pbnB1dD1udWxsLHRoaXMubmV4dF9pbj0wLHRoaXMuYXZhaWxfaW49MCx0aGlzLnRvdGFsX2luPTAsdGhpcy5vdXRwdXQ9bnVsbCx0aGlzLm5leHRfb3V0PTAs''@;'; put 'put ''dGhpcy5hdmFpbF9vdXQ9MCx0aGlzLnRvdGFsX291dD0wLHRoaXMubXNnPSIiLHRoaXMuc3RhdGU9bnVsbCx0aGlzLmRhdGFfdHlwZT0yLHRoaXMuYWRsZXI9MH19LHt9XX0se30sWzldKSg5KX0pfSwzMDYyODooWGUsSmUsTCk9PnshZnVuY3Rpb24gQihVKXtVLnZlcnNpb249IjEuMjAyMTEx''@;'; put 'put ''MjIuMSI7dmFyIFE9MTIwMCxqPTEyNTI7InVuZGVmaW5lZCI9PXR5cGVvZiBjcHRhYmxlJiYoInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsLmNwdGFibGU9TCg1MzM5OSk6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJih3aW5kb3cuY3B0YWJsZT1MKDUzMzk5KSkpO2Zvcih2''@;'; put 'put ''YXIgcmU9Wzg3NCw5MzIsOTM2LDk0OSw5NTAsMWU0XSxhZT0wO2FlPD04OysrYWUpcmUucHVzaCgxMjUwK2FlKTt2YXIgWT17MDoxMjUyLDE6NjUwMDEsMjo2NTAwMSw3NzoxZTQsMTI4OjkzMiwxMjk6OTQ5LDEzMDoxMzYxLDEzNDo5MzYsMTM2Ojk1MCwxNjE6MTI1MywxNjI6MTI1NCwxNjM6''@;'; put 'put ''MTI1OCwxNzc6MTI1NSwxNzg6MTI1NiwxODY6MTI1NywyMDQ6MTI1MSwyMjI6ODc0LDIzODoxMjUwLDI1NToxMjUyLDY5OjY5Njl9LFc9ZnVuY3Rpb24oSCl7LTEhPXJlLmluZGV4T2YoSCkmJihqPVlbMF09SCl9LHRlPWZ1bmN0aW9uKEgpe1E9SCxXKEgpfTtmdW5jdGlvbiBLKCl7dGUoMTIw''@;'; put 'put ''MCksZnVuY3Rpb24gTigpe1coMTI1Mil9KCl9ZnVuY3Rpb24gSihIKXtmb3IodmFyIGllPVtdLFg9MCx3ZT1ILmxlbmd0aDtYPHdlOysrWClpZVtYXT1ILmNoYXJDb2RlQXQoWCk7cmV0dXJuIGllfXZhciBjZT1mdW5jdGlvbihIKXt2YXIgaWU9SC5jaGFyQ29kZUF0KDApLFg9SC5jaGFyQ29k''@;'; put 'put ''ZUF0KDEpO3JldHVybiAyNTU9PWllJiYyNTQ9PVg/ZnVuY3Rpb24gc2UoSCl7Zm9yKHZhciBpZT1bXSxYPTA7WDxILmxlbmd0aD4+MTsrK1gpaWVbWF09U3RyaW5nLmZyb21DaGFyQ29kZShILmNoYXJDb2RlQXQoMipYKSsoSC5jaGFyQ29kZUF0KDIqWCsxKTw8OCkpO3JldHVybiBpZS5qb2lu''@;'; put 'put ''KCIiKX0oSC5zbGljZSgyKSk6MjU0PT1pZSYmMjU1PT1YP2Z1bmN0aW9uIG9lKEgpe2Zvcih2YXIgaWU9W10sWD0wO1g8SC5sZW5ndGg+PjE7KytYKWllW1hdPVN0cmluZy5mcm9tQ2hhckNvZGUoSC5jaGFyQ29kZUF0KDIqWCsxKSsoSC5jaGFyQ29kZUF0KDIqWCk8PDgpKTtyZXR1cm4gaWUu''@;'; put 'put ''am9pbigiIil9KEguc2xpY2UoMikpOjY1Mjc5PT1pZT9ILnNsaWNlKDEpOkh9LGRlPWZ1bmN0aW9uKGllKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShpZSl9LHZlPWZ1bmN0aW9uKGllKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShpZSl9OyJ1bmRlZmluZWQiIT10eXBlb2YgY3B0''@;'; put 'put ''YWJsZSYmKHRlPWZ1bmN0aW9uKEgpe1E9SCxXKEgpfSxjZT1mdW5jdGlvbihIKXtyZXR1cm4gMjU1PT09SC5jaGFyQ29kZUF0KDApJiYyNTQ9PT1ILmNoYXJDb2RlQXQoMSk/Y3B0YWJsZS51dGlscy5kZWNvZGUoMTIwMCxKKEguc2xpY2UoMikpKTpIfSxkZT1mdW5jdGlvbihpZSl7cmV0dXJu''@;'; put 'put ''IDEyMDA9PT1RP1N0cmluZy5mcm9tQ2hhckNvZGUoaWUpOmNwdGFibGUudXRpbHMuZGVjb2RlKFEsWzI1NSZpZSxpZT4+OF0pWzBdfSx2ZT1mdW5jdGlvbihpZSl7cmV0dXJuIGNwdGFibGUudXRpbHMuZGVjb2RlKGosW2llXSlbMF19KTt2YXIgaWUsU2U9KGllPSJBQkNERUZHSElKS0xNTk9Q''@;'; put 'put ''UVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSIse2VuY29kZTpmdW5jdGlvbihYKXtmb3IodmFyIHdlPSIiLHhlPTAsRmU9MCxaZT0wLGplPTAsWWU9MCxNdD0wLHh0PTAsUnQ9MDtSdDxYLmxlbmd0aDspamU9KHhlPVguY2hhckNvZGVBdChSdCsrKSk+''@;'; put 'put ''PjIsWWU9KDMmeGUpPDw0fChGZT1YLmNoYXJDb2RlQXQoUnQrKykpPj40LE10PSgxNSZGZSk8PDJ8KFplPVguY2hhckNvZGVBdChSdCsrKSk+PjYseHQ9NjMmWmUsaXNOYU4oRmUpP010PXh0PTY0OmlzTmFOKFplKSYmKHh0PTY0KSx3ZSs9aWUuY2hhckF0KGplKStpZS5jaGFyQXQoWWUpK2ll''@;'; put 'put ''LmNoYXJBdChNdCkraWUuY2hhckF0KHh0KTtyZXR1cm4gd2V9LGRlY29kZTpmdW5jdGlvbih3ZSl7dmFyIHhlPSIiLFllPTAsTXQ9MCx4dD0wLFJ0PTA7d2U9d2UucmVwbGFjZSgvW15cd1wrXC9cPV0vZywiIik7Zm9yKHZhciBVdD0wO1V0PHdlLmxlbmd0aDspWWU9aWUuaW5kZXhPZih3ZS5j''@;'; put 'put ''aGFyQXQoVXQrKykpLE10PWllLmluZGV4T2Yod2UuY2hhckF0KFV0KyspKSx4ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShZZTw8MnxNdD4+NCksNjQhPT0oeHQ9aWUuaW5kZXhPZih3ZS5jaGFyQXQoVXQrKykpKSYmKHhlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCgxNSZNdCk8PDR8eHQ+PjIpKSw2''@;'; put 'put ''NCE9PShSdD1pZS5pbmRleE9mKHdlLmNoYXJBdChVdCsrKSkpJiYoeGUrPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMmeHQpPDw2fFJ0KSk7cmV0dXJuIHhlfX0pLEllPSJ1bmRlZmluZWQiIT10eXBlb2YgQnVmZmVyJiYidW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJnZvaWQgMCE9PXByb2Nl''@;'; put 'put ''c3MudmVyc2lvbnMmJiEhcHJvY2Vzcy52ZXJzaW9ucy5ub2RlLFRlPWZ1bmN0aW9uKCl7fTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEJ1ZmZlcil7dmFyIE1lPSFCdWZmZXIuZnJvbTtpZighTWUpdHJ5e0J1ZmZlci5mcm9tKCJmb28iLCJ1dGY4Iil9Y2F0Y2goSCl7TWU9ITB9VGU9TWU/ZnVu''@;'; put 'put ''Y3Rpb24oSCxpZSl7cmV0dXJuIGllP25ldyBCdWZmZXIoSCxpZSk6bmV3IEJ1ZmZlcihIKX06QnVmZmVyLmZyb20uYmluZChCdWZmZXIpLEJ1ZmZlci5hbGxvY3x8KEJ1ZmZlci5hbGxvYz1mdW5jdGlvbihIKXtyZXR1cm4gbmV3IEJ1ZmZlcihIKX0pLEJ1ZmZlci5hbGxvY1Vuc2FmZXx8KEJ1''@;'; put 'put ''ZmZlci5hbGxvY1Vuc2FmZT1mdW5jdGlvbihIKXtyZXR1cm4gbmV3IEJ1ZmZlcihIKX0pfWZ1bmN0aW9uIGhlKEgpe3JldHVybiBJZT9CdWZmZXIuYWxsb2MoSCk6bmV3IEFycmF5KEgpfWZ1bmN0aW9uIE8oSCl7cmV0dXJuIEllP0J1ZmZlci5hbGxvY1Vuc2FmZShIKTpuZXcgQXJyYXkoSCl9''@;'; put 'put ''dmFyIHo9ZnVuY3Rpb24oaWUpe3JldHVybiBJZT9UZShpZSwiYmluYXJ5Iik6aWUuc3BsaXQoIiIpLm1hcChmdW5jdGlvbihYKXtyZXR1cm4gMjU1JlguY2hhckNvZGVBdCgwKX0pfTtmdW5jdGlvbiBlZShIKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIEFycmF5QnVmZmVyKXJldHVybiB6KEgp''@;'; put 'put ''O2Zvcih2YXIgaWU9bmV3IEFycmF5QnVmZmVyKEgubGVuZ3RoKSxYPW5ldyBVaW50OEFycmF5KGllKSx3ZT0wO3dlIT1ILmxlbmd0aDsrK3dlKVhbd2VdPTI1NSZILmNoYXJDb2RlQXQod2UpO3JldHVybiBpZX1mdW5jdGlvbiBuZShIKXtpZihBcnJheS5pc0FycmF5KEgpKXJldHVybiBILm1h''@;'; put 'put ''cChmdW5jdGlvbih3ZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUod2UpfSkuam9pbigiIik7Zm9yKHZhciBpZT1bXSxYPTA7WDxILmxlbmd0aDsrK1gpaWVbWF09U3RyaW5nLmZyb21DaGFyQ29kZShIW1hdKTtyZXR1cm4gaWUuam9pbigiIil9ZnVuY3Rpb24gUChIKXtpZigidW5kZWZp''@;'; put 'put ''bmVkIj09dHlwZW9mIEFycmF5QnVmZmVyKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQiKTtpZihIIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpcmV0dXJuIFAobmV3IFVpbnQ4QXJyYXkoSCkpO2Zvcih2YXIgaWU9bmV3IEFycmF5KEgubGVuZ3RoKSxYPTA7WDxILmxlbmd0aDsrK1gpaWVb''@;'; put 'put ''WF09SFtYXTtyZXR1cm4gaWV9dmFyIFY9ZnVuY3Rpb24oSCl7dmFyIGllPVtdO3JldHVybiBILmZvckVhY2goZnVuY3Rpb24oWCl7QXJyYXkuaXNBcnJheShYKT9pZT1pZS5jb25jYXQoWCk6KCJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhBcnJheSYmWCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8''@;'; put 'put ''fCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJlggaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikmJihpZT1pZS5jb25jYXQoUChYKSkpfSksaWV9LFQ9L1x1MDAwMC9nLFM9L1tcdTAwMDEtXHUwMDA2XS9nLEY9e30seWU9ZnVuY3Rpb24oaWUpe2Z1bmN0aW9uIFgocnIpe2Zvcih2YXIg''@;'; put 'put ''SXI9IiIsWnI9cnIubGVuZ3RoLTE7WnI+PTA7KUlyKz1yci5jaGFyQXQoWnItLSk7cmV0dXJuIElyfWZ1bmN0aW9uIHdlKHJyLElyKXtmb3IodmFyIFpyPSIiO1pyLmxlbmd0aDxJcjspWnIrPXJyO3JldHVybiBacn1mdW5jdGlvbiB4ZShycixJcil7dmFyIFpyPSIiK3JyO3JldHVybiBaci5s''@;'; put 'put ''ZW5ndGg+PUlyP1pyOndlKCIwIixJci1aci5sZW5ndGgpK1pyfWZ1bmN0aW9uIEZlKHJyLElyKXt2YXIgWnI9IiIrcnI7cmV0dXJuIFpyLmxlbmd0aD49SXI/WnI6d2UoIiAiLElyLVpyLmxlbmd0aCkrWnJ9ZnVuY3Rpb24gWmUocnIsSXIpe3ZhciBacj0iIitycjtyZXR1cm4gWnIubGVuZ3Ro''@;'; put 'put ''Pj1Jcj9acjpacit3ZSgiICIsSXItWnIubGVuZ3RoKX1pZS52ZXJzaW9uPSIxLjIwMjEwNzI2LjEiO3ZhciBNdD1NYXRoLnBvdygyLDMyKTtmdW5jdGlvbiB4dChycixJcil7cmV0dXJuIHJyPk10fHxycjwtTXQ/ZnVuY3Rpb24gamUocnIsSXIpe3ZhciBacj0iIitNYXRoLnJvdW5kKHJyKTty''@;'; put 'put ''ZXR1cm4gWnIubGVuZ3RoPj1Jcj9acjp3ZSgiMCIsSXItWnIubGVuZ3RoKStacn0ocnIsSXIpOmZ1bmN0aW9uIFllKHJyLElyKXt2YXIgWnI9IiIrcnI7cmV0dXJuIFpyLmxlbmd0aD49SXI/WnI6d2UoIjAiLElyLVpyLmxlbmd0aCkrWnJ9KE1hdGgucm91bmQocnIpLElyKX1mdW5jdGlvbiBS''@;'; put 'put ''dChycixJcil7cmV0dXJuIHJyLmxlbmd0aD49NysoSXI9SXJ8fDApJiYxMDM9PSgzMnxyci5jaGFyQ29kZUF0KElyKSkmJjEwMT09KDMyfHJyLmNoYXJDb2RlQXQoSXIrMSkpJiYxMTA9PSgzMnxyci5jaGFyQ29kZUF0KElyKzIpKSYmMTAxPT0oMzJ8cnIuY2hhckNvZGVBdChJciszKSkmJjEx''@;'; put 'put ''ND09KDMyfHJyLmNoYXJDb2RlQXQoSXIrNCkpJiY5Nz09KDMyfHJyLmNoYXJDb2RlQXQoSXIrNSkpJiYxMDg9PSgzMnxyci5jaGFyQ29kZUF0KElyKzYpKX1mdW5jdGlvbiBVdChycil7Zm9yKHZhciBJcj1bXSxacj1PYmplY3Qua2V5cyhycikscWk9MDtxaSE9PVpyLmxlbmd0aDsrK3FpKUly''@;'; put 'put ''W3JyW1pyW3FpXV1dPVpyW3FpXTtyZXR1cm4gSXJ9dmFyIG5uPVtbIlN1biIsIlN1bmRheSJdLFsiTW9uIiwiTW9uZGF5Il0sWyJUdWUiLCJUdWVzZGF5Il0sWyJXZWQiLCJXZWRuZXNkYXkiXSxbIlRodSIsIlRodXJzZGF5Il0sWyJGcmkiLCJGcmlkYXkiXSxbIlNhdCIsIlNhdHVyZGF5Il1d''@;'; put 'put ''LENuPVtbIkoiLCJKYW4iLCJKYW51YXJ5Il0sWyJGIiwiRmViIiwiRmVicnVhcnkiXSxbIk0iLCJNYXIiLCJNYXJjaCJdLFsiQSIsIkFwciIsIkFwcmlsIl0sWyJNIiwiTWF5IiwiTWF5Il0sWyJKIiwiSnVuIiwiSnVuZSJdLFsiSiIsIkp1bCIsIkp1bHkiXSxbIkEiLCJBdWciLCJBdWd1c3Qi''@;'; put 'put ''XSxbIlMiLCJTZXAiLCJTZXB0ZW1iZXIiXSxbIk8iLCJPY3QiLCJPY3RvYmVyIl0sWyJOIiwiTm92IiwiTm92ZW1iZXIiXSxbIkQiLCJEZWMiLCJEZWNlbWJlciJdXTtmdW5jdGlvbiBEdChycil7cnJbMF09IkdlbmVyYWwiLHJyWzFdPSIwIixyclsyXT0iMC4wMCIscnJbM109IiMsIyMwIixy''@;'; put 'put ''cls0XT0iIywjIzAuMDAiLHJyWzldPSIwJSIscnJbMTBdPSIwLjAwJSIscnJbMTFdPSIwLjAwRSswMCIscnJbMTJdPSIjID8vPyIscnJbMTNdPSIjID8/Lz8/IixyclsxNF09Im0vZC95eSIscnJbMTVdPSJkLW1tbS15eSIscnJbMTZdPSJkLW1tbSIscnJbMTddPSJtbW0teXkiLHJyWzE4XT0i''@;'; put 'put ''aDptbSBBTS9QTSIscnJbMTldPSJoOm1tOnNzIEFNL1BNIixyclsyMF09Img6bW0iLHJyWzIxXT0iaDptbTpzcyIscnJbMjJdPSJtL2QveXkgaDptbSIscnJbMzddPSIjLCMjMCA7KCMsIyMwKSIscnJbMzhdPSIjLCMjMCA7W1JlZF0oIywjIzApIixyclszOV09IiMsIyMwLjAwOygjLCMjMC4w''@;'; put 'put ''MCkiLHJyWzQwXT0iIywjIzAuMDA7W1JlZF0oIywjIzAuMDApIixycls0NV09Im1tOnNzIixycls0Nl09IltoXTptbTpzcyIscnJbNDddPSJtbXNzLjAiLHJyWzQ4XT0iIyMwLjBFKzAiLHJyWzQ5XT0iQCIscnJbNTZdPSciXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCAiaGgiXHU2NjQyIm1t''@;'; put 'put ''Ilx1NTIwNiJzcyJcdTc5ZDIgIicsTnIocnIpfXZhciB6dD17fTtEdCh6dCk7dmFyIFBuPVtdLFRuPTA7Zm9yKFRuPTU7VG48PTg7KytUbilQbltUbl09MzIrVG47Zm9yKFRuPTIzO1RuPD0yNjsrK1RuKVBuW1RuXT0wO2ZvcihUbj0yNztUbjw9MzE7KytUbilQbltUbl09MTQ7Zm9yKFRuPTUw''@;'; put 'put ''O1RuPD01ODsrK1RuKVBuW1RuXT0xNDtmb3IoVG49NTk7VG48PTYyOysrVG4pUG5bVG5dPVRuLTU4O2ZvcihUbj02NztUbjw9Njg7KytUbilQbltUbl09VG4tNTg7Zm9yKFRuPTcyO1RuPD03NTsrK1RuKVBuW1RuXT1Ubi01ODtmb3IoVG49Njc7VG48PTY4OysrVG4pUG5bVG5dPVRuLTU3O2Zv''@;'; put 'put ''cihUbj03NjtUbjw9Nzg7KytUbilQbltUbl09VG4tNTY7Zm9yKFRuPTc5O1RuPD04MTsrK1RuKVBuW1RuXT1Ubi0zNDt2YXIgT249W107ZnVuY3Rpb24gWW4ocnIsSXIsWnIpe2Zvcih2YXIgcWk9cnI8MD8tMToxLHJpPXJyKnFpLHIwPTAscGk9MSxlMD0wLE9vPTEsazA9MCxwbz0wLHAwPU1h''@;'; put 'put ''dGguZmxvb3IocmkpO2swPElyJiYoZTA9KHAwPU1hdGguZmxvb3IocmkpKSpwaStyMCxwbz1wMCprMCtPbywhKHJpLXAwPDVlLTgpKTspcmk9MS8ocmktcDApLHIwPXBpLHBpPWUwLE9vPWswLGswPXBvO2lmKHBvPklyJiYoazA+SXI/KHBvPU9vLGUwPXIwKToocG89azAsZTA9cGkpKSwhWnIp''@;'; put 'put ''cmV0dXJuWzAscWkqZTAscG9dO3ZhciBRbD1NYXRoLmZsb29yKHFpKmUwL3BvKTtyZXR1cm5bUWwscWkqZTAtUWwqcG8scG9dfWZ1bmN0aW9uIE1yKHJyLElyLFpyKXtpZihycj4yOTU4NDY1fHxycjwwKXJldHVybiBudWxsO3ZhciBxaT0wfHJyLHJpPU1hdGguZmxvb3IoODY0MDAqKHJyLXFp''@;'; put 'put ''KSkscjA9MCxwaT1bXSxlMD17RDpxaSxUOnJpLHU6ODY0MDAqKHJyLXFpKS1yaSx5OjAsbTowLGQ6MCxIOjAsTTowLFM6MCxxOjB9O2lmKE1hdGguYWJzKGUwLnUpPDFlLTYmJihlMC51PTApLElyJiZJci5kYXRlMTkwNCYmKHFpKz0xNDYyKSxlMC51Pi45OTk5JiYoZTAudT0wLDg2NDAwPT0r''@;'; put 'put ''K3JpJiYoZTAuVD1yaT0wLCsrcWksKytlMC5EKSksNjA9PT1xaSlwaT1acj9bMTMxNywxMCwyOV06WzE5MDAsMiwyOV0scjA9MztlbHNlIGlmKDA9PT1xaSlwaT1acj9bMTMxNyw4LDI5XTpbMTkwMCwxLDBdLHIwPTY7ZWxzZXtxaT42MCYmLS1xaTt2YXIgT289bmV3IERhdGUoMTkwMCwwLDEp''@;'; put 'put ''O09vLnNldERhdGUoT28uZ2V0RGF0ZSgpK3FpLTEpLHBpPVtPby5nZXRGdWxsWWVhcigpLE9vLmdldE1vbnRoKCkrMSxPby5nZXREYXRlKCldLHIwPU9vLmdldERheSgpLHFpPDYwJiYocjA9KHIwKzYpJTcpLFpyJiYocjA9ZnVuY3Rpb24gb2EocnIsSXIpe0lyWzBdLT01ODE7dmFyIFpyPXJy''@;'; put 'put ''LmdldERheSgpO3JldHVybiBycjw2MCYmKFpyPShacis2KSU3KSxacn0oT28scGkpKX1yZXR1cm4gZTAueT1waVswXSxlMC5tPXBpWzFdLGUwLmQ9cGlbMl0sZTAuUz1yaSU2MCxyaT1NYXRoLmZsb29yKHJpLzYwKSxlMC5NPXJpJTYwLHJpPU1hdGguZmxvb3IocmkvNjApLGUwLkg9cmksZTAu''@;'; put 'put ''cT1yMCxlMH1Pbls1XT1Pbls2M109JyIkIiMsIyMwXyk7XFwoIiQiIywjIzBcXCknLE9uWzZdPU9uWzY0XT0nIiQiIywjIzBfKTtbUmVkXVxcKCIkIiMsIyMwXFwpJyxPbls3XT1Pbls2NV09JyIkIiMsIyMwLjAwXyk7XFwoIiQiIywjIzAuMDBcXCknLE9uWzhdPU9uWzY2XT0nIiQiIywjIzAu''@;'; put 'put ''MDBfKTtbUmVkXVxcKCIkIiMsIyMwLjAwXFwpJyxPbls0MV09J18oKiAjLCMjMF8pO18oKiBcXCgjLCMjMFxcKTtfKCogIi0iXyk7XyhAXyknLE9uWzQyXT0nXygiJCIqICMsIyMwXyk7XygiJCIqIFxcKCMsIyMwXFwpO18oIiQiKiAiLSJfKTtfKEBfKScsT25bNDNdPSdfKCogIywjIzAuMDBf''@;'; put 'put ''KTtfKCogXFwoIywjIzAuMDBcXCk7XygqICItIj8/Xyk7XyhAXyknLE9uWzQ0XT0nXygiJCIqICMsIyMwLjAwXyk7XygiJCIqIFxcKCMsIyMwLjAwXFwpO18oIiQiKiAiLSI/P18pO18oQF8pJyxpZS5wYXJzZV9kYXRlX2NvZGU9TXI7dmFyIGFpPW5ldyBEYXRlKDE4OTksMTEsMzEsMCwwLDAp''@;'; put 'put ''LHlyPWFpLmdldFRpbWUoKSxhcj1uZXcgRGF0ZSgxOTAwLDIsMSwwLDAsMCk7ZnVuY3Rpb24gR3IocnIsSXIpe3ZhciBacj1yci5nZXRUaW1lKCk7cmV0dXJuIElyP1pyLT0xMjYyMzA0ZTU6cnI+PWFyJiYoWnIrPTg2NGU1KSwoWnItKHlyKzZlNCoocnIuZ2V0VGltZXpvbmVPZmZzZXQoKS1h''@;'; put 'put ''aS5nZXRUaW1lem9uZU9mZnNldCgpKSkpLzg2NGU1fXZhciB6cj0iIixxcj17ImVuLXVzIjp7eToieSIsZDoiZCIsIiwiOiIsIiwiLiI6Ii4iLGRhdGU6Il8vIn0sImRlLWRlIjp7eToiaiIsZDoidCIsIiwiOiIuIiwiLiI6IiwiLGRhdGU6Il8uIn0sIml0LWl0Ijp7eToieSIsZDoiZCIsIiwi''@;'; put 'put ''OiIuIiwiLiI6IiwiLGRhdGU6Il8vIn19LG9pPXFyW3pyLnRvTG93ZXJDYXNlKCldfHxxclsiZW4tdXMiXSxjcj1VdChvaSksZGk9IiQiLHYwPSIiLEEwPSIsIixiaT0iLiIsWXI9Ii8iO2Z1bmN0aW9uIE5yKHJyKXtzd2l0Y2goKHpyfHwiIikudG9Mb3dlckNhc2UoKSl7Y2FzZSJ6aC10dyI6''@;'; put 'put ''cnJbMjddPSJbJC00MDRdZS9tL2QiLHJyWzI4XT0nWyQtNDA0XWUiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1IicscnJbMjldPSdbJC00MDRdZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxyclszMF09J20iLyJkIi8ieXknLHJyWzMxXT0neXl5eSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1''@;'; put 'put ''ZTUiJyxyclszMl09J2hoIlx1NjY0MiJtbSJcdTUyMDYiJyxyclszM109J2hoIlx1NjY0MiJtbSJcdTUyMDYic3MiXHU3OWQyIicscnJbMzRdPSdcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4IGhoIlx1NjY0MiJtbSJcdTUyMDYiJyxyclszNV09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDgg''@;'; put 'put ''aGgiXHU2NjQyIm1tIlx1NTIwNiJzcyJcdTc5ZDIiJyxyclszNl09IlskLTQwNF1lL20vZCIscnJbNTBdPSJbJC00MDRdZS9tL2QiLHJyWzUxXT0nWyQtNDA0XWUiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1IicscnJbNTJdPSdcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4IGhoIlx1NjY0MiJt''@;'; put 'put ''bSJcdTUyMDYiJyxycls1M109J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaGgiXHU2NjQyIm1tIlx1NTIwNiJzcyJcdTc5ZDIiJyxycls1NF09J1skLTQwNF1lIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLHJyWzU1XT0nXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCBoaCJcdTY2NDIi''@;'; put 'put ''bW0iXHU1MjA2IicscnJbNTZdPSdcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4IGhoIlx1NjY0MiJtbSJcdTUyMDYic3MiXHU3OWQyIicscnJbNTddPSJbJC00MDRdZS9tL2QiLHJyWzU4XT0nWyQtNDA0XWUiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1Iic7YnJlYWs7Y2FzZSJ6aC1jbiI6cnJb''@;'; put 'put ''MjddPSd5eXl5Ilx1NWU3NCJtIlx1NjcwOCInLHJyWzI4XT0nbSJcdTY3MDgiZCJcdTY1ZTUiJyxyclsyOV09J20iXHU2NzA4ImQiXHU2NWU1IicscnJbMzBdPSdtIi0iZCItInl5JyxyclszMV09J3l5eXkiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1IicscnJbMzJdPSdoIlx1NjVmNiJtbSJc''@;'; put 'put ''dTUyMDYiJyxyclszM109J2giXHU2NWY2Im1tIlx1NTIwNiJzcyJcdTc5ZDIiJyxyclszNF09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaCJcdTY1ZjYibW0iXHU1MjA2IicscnJbMzVdPSdcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4IGgiXHU2NWY2Im1tIlx1NTIwNiJzcyJcdTc5ZDIi''@;'; put 'put ''JyxyclszNl09J3l5eXkiXHU1ZTc0Im0iXHU2NzA4IicscnJbNTBdPSd5eXl5Ilx1NWU3NCJtIlx1NjcwOCInLHJyWzUxXT0nbSJcdTY3MDgiZCJcdTY1ZTUiJyxycls1Ml09J3l5eXkiXHU1ZTc0Im0iXHU2NzA4IicscnJbNTNdPSdtIlx1NjcwOCJkIlx1NjVlNSInLHJyWzU0XT0nbSJcdTY3''@;'; put 'put ''MDgiZCJcdTY1ZTUiJyxycls1NV09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaCJcdTY1ZjYibW0iXHU1MjA2IicscnJbNTZdPSdcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4IGgiXHU2NWY2Im1tIlx1NTIwNiJzcyJcdTc5ZDIiJyxycls1N109J3l5eXkiXHU1ZTc0Im0iXHU2NzA4Iics''@;'; put 'put ''cnJbNThdPSdtIlx1NjcwOCJkIlx1NjVlNSInO2JyZWFrO2Nhc2UiamEtanAiOnJyWzI3XT0nWyQtNDExXWdlIi4ibSIuImQnLHJyWzI4XT0nWyQtNDExXWdnZ2UiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1IicscnJbMjldPSdbJC00MTFdZ2dnZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUi''@;'; put 'put ''JyxyclszMF09J20iLyJkIi8ieXknLHJyWzMxXT0neXl5eSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxyclszMl09J2giXHU2NjQyIm1tIlx1NTIwNiInLHJyWzMzXT0naCJcdTY2NDIibW0iXHU1MjA2InNzIlx1NzlkMiInLHJyWzM0XT0neXl5eSJcdTVlNzQibSJcdTY3MDgiJyxyclsz''@;'; put 'put ''NV09J20iXHU2NzA4ImQiXHU2NWU1IicscnJbMzZdPSdbJC00MTFdZ2UiLiJtIi4iZCcscnJbNTBdPSdbJC00MTFdZ2UiLiJtIi4iZCcscnJbNTFdPSdbJC00MTFdZ2dnZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxycls1Ml09J3l5eXkiXHU1ZTc0Im0iXHU2NzA4IicscnJbNTNdPSdt''@;'; put 'put ''Ilx1NjcwOCJkIlx1NjVlNSInLHJyWzU0XT0nWyQtNDExXWdnZ2UiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1IicscnJbNTVdPSd5eXl5Ilx1NWU3NCJtIlx1NjcwOCInLHJyWzU2XT0nbSJcdTY3MDgiZCJcdTY1ZTUiJyxycls1N109J1skLTQxMV1nZSIuIm0iLiJkJyxycls1OF09J1skLTQx''@;'; put 'put ''MV1nZ2dlIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInO2JyZWFrO2Nhc2Uia28ta3IiOnJyWzI3XT0neXl5eSJcdTVlNzQiIG1tIlx1NjcwOCIgZGQiXHU2NWU1IicscnJbMjhdPSJtbS1kZCIscnJbMjldPSJtbS1kZCIscnJbMzBdPSJtbS1kZC15eSIscnJbMzFdPSd5eXl5Ilx1YjE0NCIg''@;'; put 'put ''bW0iXHVjNmQ0IiBkZCJcdWM3N2MiJyxyclszMl09J2giXHVjMmRjIiBtbSJcdWJkODQiJyxyclszM109J2giXHVjMmRjIiBtbSJcdWJkODQiIHNzIlx1Y2QwOCInLHJyWzM0XT0ieXl5eS1tbS1kZCIscnJbMzVdPSJ5eXl5LW1tLWRkIixyclszNl09J3l5eXkiXHU1ZTc0IiBtbSJcdTY3MDgi''@;'; put 'put ''IGRkIlx1NjVlNSInLHJyWzUwXT0neXl5eSJcdTVlNzQiIG1tIlx1NjcwOCIgZGQiXHU2NWU1IicscnJbNTFdPSJtbS1kZCIscnJbNTJdPSJ5eXl5LW1tLWRkIixycls1M109Inl5eXktbW0tZGQiLHJyWzU0XT0ibW0tZGQiLHJyWzU1XT0ieXl5eS1tbS1kZCIscnJbNTZdPSJ5eXl5LW1tLWRk''@;'; put 'put ''Iixycls1N109J3l5eXkiXHU1ZTc0IiBtbSJcdTY3MDgiIGRkIlx1NjVlNSInLHJyWzU4XT0ibW0tZGQiO2JyZWFrO2Nhc2UidGgtdGgiOnJyWzU5XT0nInQiMCcscnJbNjBdPScidCIwLjAwJyxycls2MV09JyJ0IiMsIyMwJyxycls2Ml09JyJ0IiMsIyMwLjAwJyxycls2N109InQwJSIscnJb''@;'; put 'put ''NjhdPSJ0MC4wMCUiLHJyWzY5XT0idCMgPy8/Iixycls3MF09InQjID8/Lz8/Iixycls3MV09J1x1MGUyNyIvIlx1MGUxNCIvIlx1MGUxYlx1MGUxYlx1MGUxYlx1MGUxYicscnJbNzJdPSdcdTBlMjciLSJcdTBlMTRcdTBlMTRcdTBlMTQiLSJcdTBlMWJcdTBlMWInLHJyWzczXT0nXHUwZTI3''@;'; put 'put ''Ii0iXHUwZTE0XHUwZTE0XHUwZTE0Jyxycls3NF09J1x1MGUxNFx1MGUxNFx1MGUxNCItIlx1MGUxYlx1MGUxYicscnJbNzVdPSdcdTBlMGEiOiJcdTBlMTlcdTBlMTknLHJyWzc2XT0nXHUwZTBhIjoiXHUwZTE5XHUwZTE5IjoiXHUwZTE3XHUwZTE3Jyxycls3N109J1x1MGUyNyIvIlx1MGUx''@;'; put 'put ''NCIvIlx1MGUxYlx1MGUxYlx1MGUxYlx1MGUxYiBcdTBlMGEiOiJcdTBlMTlcdTBlMTknLHJyWzc4XT0nXHUwZTE5XHUwZTE5IjoiXHUwZTE3XHUwZTE3Jyxycls3OV09J1tcdTBlMGFdXHUwZTE5XHUwZTE5IjoiXHUwZTE3XHUwZTE3Jyxycls4MF09J1x1MGUxOVx1MGUxOSI6Ilx1MGUxN1x1''@;'; put 'put ''MGUxNy4wJyxycls4MV09ImQvbS9iYiJ9fWllLl9nZW5lcmFsX2ludD1mdW5jdGlvbiBOMChycil7cmV0dXJuIHJyLnRvU3RyaW5nKDEwKX07dmFyIHQwPWZ1bmN0aW9uKCl7dmFyIElyPS8oPzpcLjAqfChcLlxkKlsxLTldKTArKSQvO2Z1bmN0aW9uIFpyKGswKXtyZXR1cm4tMT09azAuaW5k''@;'; put 'put ''ZXhPZigiLiIpP2swOmswLnJlcGxhY2UoSXIsIiQxIil9dmFyIHFpPS8oPzpcLjAqfChcLlxkKlsxLTldKTArKVtFZV0vLHJpPS8oRVsrLV0pKFxkKSQvO3JldHVybiBmdW5jdGlvbihwbyl7dmFyIHAwPWZ1bmN0aW9uIE9vKGswKXt2YXIgcDAscG89TWF0aC5mbG9vcihNYXRoLmxvZyhNYXRo''@;'; put 'put ''LmFicyhrMCkpKk1hdGguTE9HMTBFKTtyZXR1cm4gcDA9cG8+PS00JiZwbzw9LTE/azAudG9QcmVjaXNpb24oMTArcG8pOk1hdGguYWJzKHBvKTw9OT9mdW5jdGlvbiBwaShrMCl7dmFyIHBvPWswPDA/MTI6MTEscDA9WnIoazAudG9GaXhlZCgxMikpO3JldHVybiBwMC5sZW5ndGg8PXBvfHwo''@;'; put 'put ''cDA9azAudG9QcmVjaXNpb24oMTApKS5sZW5ndGg8PXBvP3AwOmswLnRvRXhwb25lbnRpYWwoNSl9KGswKToxMD09PXBvP2swLnRvRml4ZWQoMTApLnN1YnN0cigwLDEyKTpmdW5jdGlvbiBlMChrMCl7dmFyIHBvPVpyKGswLnRvRml4ZWQoMTEpKTtyZXR1cm4gcG8ubGVuZ3RoPihrMDwwPzEy''@;'; put 'put ''OjExKXx8IjAiPT09cG98fCItMCI9PT1wbz9rMC50b1ByZWNpc2lvbig2KTpwb30oazApLFpyKGZ1bmN0aW9uIHIwKGswKXtyZXR1cm4tMT09azAuaW5kZXhPZigiRSIpP2swOmswLnJlcGxhY2UocWksIiQxRSIpLnJlcGxhY2UocmksIiQxMCQyIil9KHAwLnRvVXBwZXJDYXNlKCkpKX0ocG8p''@;'; put 'put ''O3JldHVybiIsIj09PUEwJiYiLiI9PT1iaT9wMDpwMC5yZXBsYWNlKC9bLC5dL2csZnVuY3Rpb24oUWwpe3JldHVybiIsIj09UWw/QTA6Yml9KX19KCk7ZnVuY3Rpb24gaW8ocnIsSXIpe3N3aXRjaCh0eXBlb2YgcnIpe2Nhc2Uic3RyaW5nIjpyZXR1cm4gcnI7Y2FzZSJib29sZWFuIjpyZXR1''@;'; put 'put ''cm4gcnI/IlRSVUUiOiJGQUxTRSI7Y2FzZSJudW1iZXIiOnJldHVybigwfHJyKT09PXJyP3JyLnRvU3RyaW5nKDEwKTp0MChycik7Y2FzZSJ1bmRlZmluZWQiOnJldHVybiIiO2Nhc2Uib2JqZWN0IjppZihudWxsPT1ycilyZXR1cm4iIjtpZihyciBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIE1j''@;'; put 'put ''KDE0LEdyKHJyLElyJiZJci5kYXRlMTkwNCksSXIpfXRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgdmFsdWUgaW4gR2VuZXJhbCBmb3JtYXQ6ICIrcnIpfWllLl9nZW5lcmFsX251bT10MCxpZS5fZ2VuZXJhbD1pbzt2YXIgJDA9Ilx1MGU1MFx1MGU1MVx1MGU1Mlx1MGU1M1x1MGU1NFx1''@;'; put 'put ''MGU1NVx1MGU1Nlx1MGU1N1x1MGU1OFx1MGU1OSIuc3BsaXQoIiIpO2Z1bmN0aW9uIFZhKHJyLElyLFpyLHFpKXt2YXIgT28scmk9IiIscjA9MCxwaT0wLGUwPVpyLnksazA9MDtzd2l0Y2gocnIpe2Nhc2UgOTg6ZTA9WnIueSs1NDM7Y2FzZSAxMjE6c3dpdGNoKElyLmxlbmd0aCl7Y2FzZSAx''@;'; put 'put ''OmNhc2UgMjpPbz1lMCUxMDAsazA9MjticmVhaztkZWZhdWx0Ok9vPWUwJTFlNCxrMD00fWJyZWFrO2Nhc2UgMTA5OnN3aXRjaChJci5sZW5ndGgpe2Nhc2UgMTpjYXNlIDI6T289WnIubSxrMD1Jci5sZW5ndGg7YnJlYWs7Y2FzZSAzOnJldHVybiBDbltaci5tLTFdWzFdO2Nhc2UgNTpyZXR1''@;'; put 'put ''cm4gQ25bWnIubS0xXVswXTtkZWZhdWx0OnJldHVybiBDbltaci5tLTFdWzJdfWJyZWFrO2Nhc2UgMTAwOnN3aXRjaChJci5sZW5ndGgpe2Nhc2UgMTpjYXNlIDI6T289WnIuZCxrMD1Jci5sZW5ndGg7YnJlYWs7Y2FzZSAzOnJldHVybiBubltaci5xXVswXTtkZWZhdWx0OnJldHVybiBublta''@;'; put 'put ''ci5xXVsxXX1icmVhaztjYXNlIDEwNDpzd2l0Y2goSXIubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOk9vPTErKFpyLkgrMTEpJTEyLGswPUlyLmxlbmd0aDticmVhaztkZWZhdWx0OnRocm93ImJhZCBob3VyIGZvcm1hdDogIitJcn1icmVhaztjYXNlIDcyOnN3aXRjaChJci5sZW5ndGgpe2Nhc2Ug''@;'; put 'put ''MTpjYXNlIDI6T289WnIuSCxrMD1Jci5sZW5ndGg7YnJlYWs7ZGVmYXVsdDp0aHJvdyJiYWQgaG91ciBmb3JtYXQ6ICIrSXJ9YnJlYWs7Y2FzZSA3Nzpzd2l0Y2goSXIubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOk9vPVpyLk0sazA9SXIubGVuZ3RoO2JyZWFrO2RlZmF1bHQ6dGhyb3ciYmFkIG1p''@;'; put 'put ''bnV0ZSBmb3JtYXQ6ICIrSXJ9YnJlYWs7Y2FzZSAxMTU6aWYoInMiIT1JciYmInNzIiE9SXImJiIuMCIhPUlyJiYiLjAwIiE9SXImJiIuMDAwIiE9SXIpdGhyb3ciYmFkIHNlY29uZCBmb3JtYXQ6ICIrSXI7cmV0dXJuIDAhPT1aci51fHwicyIhPUlyJiYic3MiIT1Jcj8ocGk9cWk+PTI/Mz09''@;'; put 'put ''PXFpPzFlMzoxMDA6MT09PXFpPzEwOjEsKHIwPU1hdGgucm91bmQocGkqKFpyLlMrWnIudSkpKT49NjAqcGkmJihyMD0wKSwicyI9PT1Jcj8wPT09cjA/IjAiOiIiK3IwL3BpOihyaT14ZShyMCwyK3FpKSwic3MiPT09SXI/cmkuc3Vic3RyKDAsMik6Ii4iK3JpLnN1YnN0cigyLElyLmxlbmd0''@;'; put 'put ''aC0xKSkpOnhlKFpyLlMsSXIubGVuZ3RoKTtjYXNlIDkwOnN3aXRjaChJcil7Y2FzZSJbaF0iOmNhc2UiW2hoXSI6Y2FzZSJbXHUwZTBhXSI6Y2FzZSJbXHUwZTBhXHUwZTBhXSI6T289MjQqWnIuRCtaci5IO2JyZWFrO2Nhc2UiW21dIjpjYXNlIlttbV0iOmNhc2UiW1x1MGUxOV0iOmNhc2Ui''@;'; put 'put ''W1x1MGUxOVx1MGUxOV0iOk9vPTYwKigyNCpaci5EK1pyLkgpK1pyLk07YnJlYWs7Y2FzZSJbc10iOmNhc2UiW3NzXSI6Y2FzZSJbXHUwZTE3XSI6Y2FzZSJbXHUwZTE3XHUwZTE3XSI6T289NjAqKDYwKigyNCpaci5EK1pyLkgpK1pyLk0pK01hdGgucm91bmQoWnIuUytaci51KTticmVhaztk''@;'; put 'put ''ZWZhdWx0OnRocm93ImJhZCBhYnN0aW1lIGZvcm1hdDogIitJcn1rMD0zPT09SXIubGVuZ3RoPzE6MjticmVhaztjYXNlIDEwMTpPbz1lMCxrMD0xO2JyZWFrO2Nhc2UgMzYyMzpPbz1aci5kLGswPUlyLmxlbmd0aDticmVhaztjYXNlIDM2MDQ6c3dpdGNoKElyLmxlbmd0aCl7Y2FzZSAxOmNh''@;'; put 'put ''c2UgMjpPbz1aci5tLGswPUlyLmxlbmd0aDticmVhaztjYXNlIDM6cmV0dXJuIENuW1pyLm0tMV1bMV07Y2FzZSA1OnJldHVybiBDbltaci5tLTFdWzBdO2RlZmF1bHQ6cmV0dXJuIENuW1pyLm0tMV1bMl19YnJlYWs7Y2FzZSAzNjExOnN3aXRjaChlMD1aci55KzU0MyxJci5sZW5ndGgpe2Nh''@;'; put 'put ''c2UgMTpjYXNlIDI6T289ZTAlMTAwLGswPTI7YnJlYWs7ZGVmYXVsdDpPbz1lMCUxZTQsazA9NH1icmVhaztjYXNlIDM1OTQ6T289WnIuSCxrMD1Jci5sZW5ndGg7YnJlYWs7Y2FzZSAzNjA5Ok9vPVpyLk0sazA9SXIubGVuZ3RoO2JyZWFrO2Nhc2UgMzYwNzpPbz1aci5TLGswPUlyLmxlbmd0''@;'; put 'put ''aDticmVhaztkZWZhdWx0OnRocm93IHJyLnRvU3RyaW5nKDE2KX12YXIgcG89azA+MD94ZShPbyxrMCk6IiI7cmV0dXJuKDkwPT1ycj9Jci5jaGFyQ29kZUF0KDEpPDM1ODQ6cnI8MzU4NCk/cG86cG8ucmVwbGFjZSgvWzAtOV0vZyxmdW5jdGlvbihwMCl7cmV0dXJuICQwWytwMF19KX1mdW5j''@;'; put 'put ''dGlvbiBqbyhycil7aWYocnIubGVuZ3RoPD0zKXJldHVybiBycjtmb3IodmFyIFpyPXJyLmxlbmd0aCUzLHFpPXJyLnN1YnN0cigwLFpyKTtaciE9cnIubGVuZ3RoO1pyKz0zKXFpKz0ocWkubGVuZ3RoPjA/IiwiOiIiKStyci5zdWJzdHIoWnIsMyk7cmV0dXJuIHFpfXZhciB3YT1mdW5jdGlv''@;'; put 'put ''bigpe3ZhciBJcj0vJS9nO2Z1bmN0aW9uIHJpKGRyLFduKXt2YXIgJG4sYnI9ZHIuaW5kZXhPZigiRSIpLWRyLmluZGV4T2YoIi4iKS0xO2lmKGRyLm1hdGNoKC9eIyswLjBFXCswJC8pKXtpZigwPT1XbilyZXR1cm4iMC4wRSswIjtpZihXbjwwKXJldHVybiItIityaShkciwtV24pO3ZhciBX''@;'; put 'put ''cj1kci5pbmRleE9mKCIuIik7LTE9PT1XciYmKFdyPWRyLmluZGV4T2YoIkUiKSk7dmFyIHVpPU1hdGguZmxvb3IoTWF0aC5sb2coV24pKk1hdGguTE9HMTBFKSVXcjtpZih1aTwwJiYodWkrPVdyKSwtMT09PSgkbj0oV24vTWF0aC5wb3coMTAsdWkpKS50b1ByZWNpc2lvbihicisxKyhXcit1''@;'; put 'put ''aSklV3IpKS5pbmRleE9mKCJlIikpe3ZhciBJaT1NYXRoLmZsb29yKE1hdGgubG9nKFduKSpNYXRoLkxPRzEwRSk7Zm9yKC0xPT09JG4uaW5kZXhPZigiLiIpPyRuPSRuLmNoYXJBdCgwKSsiLiIrJG4uc3Vic3RyKDEpKyJFKyIrKElpLSRuLmxlbmd0aCt1aSk6JG4rPSJFKyIrKElpLXVpKTsi''@;'; put 'put ''MC4iPT09JG4uc3Vic3RyKDAsMik7KSRuPSgkbj0kbi5jaGFyQXQoMCkrJG4uc3Vic3RyKDIsV3IpKyIuIiskbi5zdWJzdHIoMitXcikpLnJlcGxhY2UoL14wKyhbMS05XSkvLCIkMSIpLnJlcGxhY2UoL14wK1wuLywiMC4iKTskbj0kbi5yZXBsYWNlKC9cKy0vLCItIil9JG49JG4ucmVwbGFj''@;'; put 'put ''ZSgvXihbKy1dPykoXGQqKVwuKFxkKilbRWVdLyxmdW5jdGlvbih1MCx6aSxKMCxJMCl7cmV0dXJuIHppK0owK0kwLnN1YnN0cigwLChXcit1aSklV3IpKyIuIitJMC5zdWJzdHIodWkpKyJFIn0pfWVsc2UgJG49V24udG9FeHBvbmVudGlhbChicik7cmV0dXJuIGRyLm1hdGNoKC9FXCswMCQv''@;'; put 'put ''KSYmJG4ubWF0Y2goL2VbKy1dXGQkLykmJigkbj0kbi5zdWJzdHIoMCwkbi5sZW5ndGgtMSkrIjAiKyRuLmNoYXJBdCgkbi5sZW5ndGgtMSkpLGRyLm1hdGNoKC9FXC0vKSYmJG4ubWF0Y2goL2VcKy8pJiYoJG49JG4ucmVwbGFjZSgvZVwrLywiZSIpKSwkbi5yZXBsYWNlKCJlIiwiRSIpfXZh''@;'; put 'put ''ciByMD0vIyAoXD8rKSggPylcLyggPykoXGQrKS8sT289L14jKjAqXC4oWzAjXSspLyxrMD0vXCkuKlswI10vLHBvPS9cKCMjI1wpICMjI1xcPy0jIyMjLztmdW5jdGlvbiBwMChkcil7Zm9yKHZhciAkbixXbj0iIixicj0wO2JyIT1kci5sZW5ndGg7Kyticilzd2l0Y2goJG49ZHIuY2hhckNv''@;'; put 'put ''ZGVBdChicikpe2Nhc2UgMzU6YnJlYWs7Y2FzZSA2MzpXbis9IiAiO2JyZWFrO2Nhc2UgNDg6V24rPSIwIjticmVhaztkZWZhdWx0OlduKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCRuKX1yZXR1cm4gV259ZnVuY3Rpb24gUWwoZHIsV24pe3ZhciAkbj1NYXRoLnBvdygxMCxXbik7cmV0dXJuIiIr''@;'; put 'put ''TWF0aC5yb3VuZChkciokbikvJG59ZnVuY3Rpb24gQWwoZHIsV24pe2lmKFduPjExKXJldHVybiBBbChkciwxMSkqTWF0aC5wb3coMTAsV24tMTEpO3ZhciAkbj1kci1NYXRoLmZsb29yKGRyKSxicj1NYXRoLnBvdygxMCxXbik7cmV0dXJuIFduPCgiIitNYXRoLnJvdW5kKCRuKmJyKSkubGVu''@;'; put 'put ''Z3RoPzA6TWF0aC5yb3VuZCgkbipicil9ZnVuY3Rpb24gS3MoZHIsV24sJG4pe2lmKDQwPT09ZHIuY2hhckNvZGVBdCgwKSYmIVduLm1hdGNoKGswKSl7dmFyIGJyPVduLnJlcGxhY2UoL1woICovLCIiKS5yZXBsYWNlKC8gXCkvLCIiKS5yZXBsYWNlKC9cKS8sIiIpO3JldHVybiAkbj49MD9L''@;'; put 'put ''cygibiIsYnIsJG4pOiIoIitLcygibiIsYnIsLSRuKSsiKSJ9aWYoNDQ9PT1Xbi5jaGFyQ29kZUF0KFduLmxlbmd0aC0xKSlyZXR1cm4gZnVuY3Rpb24gcWkoZHIsV24sJG4pe2Zvcih2YXIgYnI9V24ubGVuZ3RoLTE7NDQ9PT1Xbi5jaGFyQ29kZUF0KGJyLTEpOyktLWJyO3JldHVybiB3YShk''@;'; put 'put ''cixXbi5zdWJzdHIoMCxiciksJG4vTWF0aC5wb3coMTAsMyooV24ubGVuZ3RoLWJyKSkpfShkcixXbiwkbik7aWYoLTEhPT1Xbi5pbmRleE9mKCIlIikpcmV0dXJuIGZ1bmN0aW9uIFpyKGRyLFduLCRuKXt2YXIgYnI9V24ucmVwbGFjZShJciwiIiksV3I9V24ubGVuZ3RoLWJyLmxlbmd0aDty''@;'; put 'put ''ZXR1cm4gd2EoZHIsYnIsJG4qTWF0aC5wb3coMTAsMipXcikpK3dlKCIlIixXcil9KGRyLFduLCRuKTtpZigtMSE9PVduLmluZGV4T2YoIkUiKSlyZXR1cm4gcmkoV24sJG4pO2lmKDM2PT09V24uY2hhckNvZGVBdCgwKSlyZXR1cm4iJCIrS3MoZHIsV24uc3Vic3RyKCIgIj09V24uY2hhckF0''@;'; put 'put ''KDEpPzI6MSksJG4pO3ZhciBXcix1aSxJaSx1MCx6aT1NYXRoLmFicygkbiksSjA9JG48MD8iLSI6IiI7aWYoV24ubWF0Y2goL14wMCskLykpcmV0dXJuIEowK3h0KHppLFduLmxlbmd0aCk7aWYoV24ubWF0Y2goL15bIz9dKyQvKSlyZXR1cm4iMCI9PT0oV3I9eHQoJG4sMCkpJiYoV3I9IiIp''@;'; put 'put ''LFdyLmxlbmd0aD5Xbi5sZW5ndGg/V3I6cDAoV24uc3Vic3RyKDAsV24ubGVuZ3RoLVdyLmxlbmd0aCkpK1dyO2lmKHVpPVduLm1hdGNoKHIwKSlyZXR1cm4gZnVuY3Rpb24gcGkoZHIsV24sJG4pe3ZhciBicj1wYXJzZUludChkcls0XSwxMCksV3I9TWF0aC5yb3VuZChXbipiciksdWk9TWF0''@;'; put 'put ''aC5mbG9vcihXci9iciksSWk9V3ItdWkqYnIsdTA9YnI7cmV0dXJuICRuKygwPT09dWk/IiI6IiIrdWkpKyIgIisoMD09PUlpP3dlKCIgIixkclsxXS5sZW5ndGgrMStkcls0XS5sZW5ndGgpOkZlKElpLGRyWzFdLmxlbmd0aCkrZHJbMl0rIi8iK2RyWzNdK3hlKHUwLGRyWzRdLmxlbmd0aCkp''@;'; put 'put ''fSh1aSx6aSxKMCk7aWYoV24ubWF0Y2goL14jKzArJC8pKXJldHVybiBKMCt4dCh6aSxXbi5sZW5ndGgtV24uaW5kZXhPZigiMCIpKTtpZih1aT1Xbi5tYXRjaChPbykpcmV0dXJuIFdyPVFsKCRuLHVpWzFdLmxlbmd0aCkucmVwbGFjZSgvXihbXlwuXSspJC8sIiQxLiIrcDAodWlbMV0pKS5y''@;'; put 'put ''ZXBsYWNlKC9cLiQvLCIuIitwMCh1aVsxXSkpLnJlcGxhY2UoL1wuKFxkKikkLyxmdW5jdGlvbigkYSxqcyl7cmV0dXJuIi4iK2pzK3dlKCIwIixwMCh1aVsxXSkubGVuZ3RoLWpzLmxlbmd0aCl9KSwtMSE9PVduLmluZGV4T2YoIjAuIik/V3I6V3IucmVwbGFjZSgvXjBcLi8sIi4iKTtpZihX''@;'; put 'put ''bj1Xbi5yZXBsYWNlKC9eIysoWzAuXSkvLCIkMSIpLHVpPVduLm1hdGNoKC9eKDAqKVwuKCMqKSQvKSlyZXR1cm4gSjArUWwoemksdWlbMl0ubGVuZ3RoKS5yZXBsYWNlKC9cLihcZCpbMS05XSkwKiQvLCIuJDEiKS5yZXBsYWNlKC9eKC0/XGQqKSQvLCIkMS4iKS5yZXBsYWNlKC9eMFwuLyx1''@;'; put 'put ''aVsxXS5sZW5ndGg/IjAuIjoiLiIpO2lmKHVpPVduLm1hdGNoKC9eI3sxLDN9LCMjMChcLj8pJC8pKXJldHVybiBKMCtqbyh4dCh6aSwwKSk7aWYodWk9V24ubWF0Y2goL14jLCMjMFwuKFsjMF0qMCkkLykpcmV0dXJuICRuPDA/Ii0iK0tzKGRyLFduLC0kbik6am8oIiIrKE1hdGguZmxvb3Io''@;'; put 'put ''JG4pK2Z1bmN0aW9uIHEyKGRyLFduKXtyZXR1cm4gV248KCIiK01hdGgucm91bmQoKGRyLU1hdGguZmxvb3IoZHIpKSpNYXRoLnBvdygxMCxXbikpKS5sZW5ndGg/MTowfSgkbix1aVsxXS5sZW5ndGgpKSkrIi4iK3hlKEFsKCRuLHVpWzFdLmxlbmd0aCksdWlbMV0ubGVuZ3RoKTtpZih1aT1X''@;'; put 'put ''bi5tYXRjaCgvXiMsIyosIzAvKSlyZXR1cm4gS3MoZHIsV24ucmVwbGFjZSgvXiMsIyosLywiIiksJG4pO2lmKHVpPVduLm1hdGNoKC9eKFswI10rKShcXD8tKFswI10rKSkrJC8pKXJldHVybiBXcj1YKEtzKGRyLFduLnJlcGxhY2UoL1tcXC1dL2csIiIpLCRuKSksSWk9MCxYKFgoV24ucmVw''@;'; put 'put ''bGFjZSgvXFwvZywiIikpLnJlcGxhY2UoL1swI10vZyxmdW5jdGlvbigkYSl7cmV0dXJuIElpPFdyLmxlbmd0aD9Xci5jaGFyQXQoSWkrKyk6IjAiPT09JGE/IjAiOiIifSkpO2lmKFduLm1hdGNoKHBvKSlyZXR1cm4iKCIrKFdyPUtzKGRyLCIjIyMjIyMjIyMjIiwkbikpLnN1YnN0cigwLDMp''@;'; put 'put ''KyIpICIrV3Iuc3Vic3RyKDMsMykrIi0iK1dyLnN1YnN0cig2KTt2YXIgSTA9IiI7aWYodWk9V24ubWF0Y2goL14oWyMwP10rKSggPylcLyggPykoWyMwP10rKS8pKXJldHVybiBJaT1NYXRoLm1pbih1aVs0XS5sZW5ndGgsNyksdTA9WW4oemksTWF0aC5wb3coMTAsSWkpLTEsITEpLFdyPSIi''@;'; put 'put ''K0owLCIgIj09KEkwPXdhKCJuIix1aVsxXSx1MFsxXSkpLmNoYXJBdChJMC5sZW5ndGgtMSkmJihJMD1JMC5zdWJzdHIoMCxJMC5sZW5ndGgtMSkrIjAiKSxXcis9STArdWlbMl0rIi8iK3VpWzNdLChJMD1aZSh1MFsyXSxJaSkpLmxlbmd0aDx1aVs0XS5sZW5ndGgmJihJMD1wMCh1aVs0XS5z''@;'; put 'put ''dWJzdHIodWlbNF0ubGVuZ3RoLUkwLmxlbmd0aCkpK0kwKSxXcis9STA7aWYodWk9V24ubWF0Y2goL14jIChbIzA/XSspKCA/KVwvKCA/KShbIzA/XSspLykpcmV0dXJuIElpPU1hdGgubWluKE1hdGgubWF4KHVpWzFdLmxlbmd0aCx1aVs0XS5sZW5ndGgpLDcpLEowKygodTA9WW4oemksTWF0''@;'; put 'put ''aC5wb3coMTAsSWkpLTEsITApKVswXXx8KHUwWzFdPyIiOiIwIikpKyIgIisodTBbMV0/RmUodTBbMV0sSWkpK3VpWzJdKyIvIit1aVszXStaZSh1MFsyXSxJaSk6d2UoIiAiLDIqSWkrMSt1aVsyXS5sZW5ndGgrdWlbM10ubGVuZ3RoKSk7aWYodWk9V24ubWF0Y2goL15bIzA/XSskLykpcmV0''@;'; put 'put ''dXJuIFdyPXh0KCRuLDApLFduLmxlbmd0aDw9V3IubGVuZ3RoP1dyOnAwKFduLnN1YnN0cigwLFduLmxlbmd0aC1Xci5sZW5ndGgpKStXcjtpZih1aT1Xbi5tYXRjaCgvXihbIzA/XSspXC4oWyMwXSspJC8pKXtXcj0iIiskbi50b0ZpeGVkKE1hdGgubWluKHVpWzJdLmxlbmd0aCwxMCkpLnJl''@;'; put 'put ''cGxhY2UoLyhbXjBdKTArJC8sIiQxIiksSWk9V3IuaW5kZXhPZigiLiIpO3ZhciBlYT1Xbi5pbmRleE9mKCIuIiktSWksWW89V24ubGVuZ3RoLVdyLmxlbmd0aC1lYTtyZXR1cm4gcDAoV24uc3Vic3RyKDAsZWEpK1dyK1duLnN1YnN0cihXbi5sZW5ndGgtWW8pKX1pZih1aT1Xbi5tYXRjaCgv''@;'; put 'put ''XjAwLDAwMFwuKFsjMF0qMCkkLykpcmV0dXJuIElpPUFsKCRuLHVpWzFdLmxlbmd0aCksJG48MD8iLSIrS3MoZHIsV24sLSRuKTpqbyhmdW5jdGlvbiBlMShkcil7cmV0dXJuIGRyPDIxNDc0ODM2NDcmJmRyPi0yMTQ3NDgzNjQ4PyIiKyhkcj49MD8wfGRyOmRyLTF8MCk6IiIrTWF0aC5mbG9v''@;'; put 'put ''cihkcil9KCRuKSkucmVwbGFjZSgvXlxkLFxkezN9JC8sIjAkJiIpLnJlcGxhY2UoL15cZCokLyxmdW5jdGlvbigkYSl7cmV0dXJuIjAwLCIrKCRhLmxlbmd0aDwzP3hlKDAsMy0kYS5sZW5ndGgpOiIiKSskYX0pKyIuIit4ZShJaSx1aVsxXS5sZW5ndGgpO3N3aXRjaChXbil7Y2FzZSIjIyMs''@;'; put 'put ''IyMwLjAwIjpyZXR1cm4gS3MoZHIsIiMsIyMwLjAwIiwkbik7Y2FzZSIjIyMsIyMjIjpjYXNlIiMjLCMjIyI6Y2FzZSIjLCMjIyI6dmFyIHlvPWpvKHh0KHppLDApKTtyZXR1cm4iMCIhPT15bz9KMCt5bzoiIjtjYXNlIiMjIywjIyMuMDAiOnJldHVybiBLcyhkciwiIyMjLCMjMC4wMCIsJG4p''@;'; put 'put ''LnJlcGxhY2UoL14wXC4vLCIuIik7Y2FzZSIjLCMjIy4wMCI6cmV0dXJuIEtzKGRyLCIjLCMjMC4wMCIsJG4pLnJlcGxhY2UoL14wXC4vLCIuIil9dGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBmb3JtYXQgfCIrV24rInwiKX1mdW5jdGlvbiBscihkcixXbil7dmFyICRuLGJyPWRyLmlu''@;'; put 'put ''ZGV4T2YoIkUiKS1kci5pbmRleE9mKCIuIiktMTtpZihkci5tYXRjaCgvXiMrMC4wRVwrMCQvKSl7aWYoMD09V24pcmV0dXJuIjAuMEUrMCI7aWYoV248MClyZXR1cm4iLSIrbHIoZHIsLVduKTt2YXIgV3I9ZHIuaW5kZXhPZigiLiIpOy0xPT09V3ImJihXcj1kci5pbmRleE9mKCJFIikpO3Zh''@;'; put 'put ''ciB1aT1NYXRoLmZsb29yKE1hdGgubG9nKFduKSpNYXRoLkxPRzEwRSklV3I7aWYodWk8MCYmKHVpKz1XciksISgkbj0oV24vTWF0aC5wb3coMTAsdWkpKS50b1ByZWNpc2lvbihicisxKyhXcit1aSklV3IpKS5tYXRjaCgvW0VlXS8pKXt2YXIgSWk9TWF0aC5mbG9vcihNYXRoLmxvZyhXbikq''@;'; put 'put ''TWF0aC5MT0cxMEUpOy0xPT09JG4uaW5kZXhPZigiLiIpPyRuPSRuLmNoYXJBdCgwKSsiLiIrJG4uc3Vic3RyKDEpKyJFKyIrKElpLSRuLmxlbmd0aCt1aSk6JG4rPSJFKyIrKElpLXVpKSwkbj0kbi5yZXBsYWNlKC9cKy0vLCItIil9JG49JG4ucmVwbGFjZSgvXihbKy1dPykoXGQqKVwuKFxk''@;'; put 'put ''KilbRWVdLyxmdW5jdGlvbih1MCx6aSxKMCxJMCl7cmV0dXJuIHppK0owK0kwLnN1YnN0cigwLChXcit1aSklV3IpKyIuIitJMC5zdWJzdHIodWkpKyJFIn0pfWVsc2UgJG49V24udG9FeHBvbmVudGlhbChicik7cmV0dXJuIGRyLm1hdGNoKC9FXCswMCQvKSYmJG4ubWF0Y2goL2VbKy1dXGQk''@;'; put 'put ''LykmJigkbj0kbi5zdWJzdHIoMCwkbi5sZW5ndGgtMSkrIjAiKyRuLmNoYXJBdCgkbi5sZW5ndGgtMSkpLGRyLm1hdGNoKC9FXC0vKSYmJG4ubWF0Y2goL2VcKy8pJiYoJG49JG4ucmVwbGFjZSgvZVwrLywiZSIpKSwkbi5yZXBsYWNlKCJlIiwiRSIpfWZ1bmN0aW9uIEJyKGRyLFduLCRuKXtp''@;'; put 'put ''Zig0MD09PWRyLmNoYXJDb2RlQXQoMCkmJiFXbi5tYXRjaChrMCkpe3ZhciBicj1Xbi5yZXBsYWNlKC9cKCAqLywiIikucmVwbGFjZSgvIFwpLywiIikucmVwbGFjZSgvXCkvLCIiKTtyZXR1cm4gJG4+PTA/QnIoIm4iLGJyLCRuKToiKCIrQnIoIm4iLGJyLC0kbikrIikifWlmKDQ0PT09V24u''@;'; put 'put ''Y2hhckNvZGVBdChXbi5sZW5ndGgtMSkpcmV0dXJuIGZ1bmN0aW9uIFA2KGRyLFduLCRuKXtmb3IodmFyIGJyPVduLmxlbmd0aC0xOzQ0PT09V24uY2hhckNvZGVBdChici0xKTspLS1icjtyZXR1cm4gd2EoZHIsV24uc3Vic3RyKDAsYnIpLCRuL01hdGgucG93KDEwLDMqKFduLmxlbmd0aC1i''@;'; put 'put ''cikpKX0oZHIsV24sJG4pO2lmKC0xIT09V24uaW5kZXhPZigiJSIpKXJldHVybiBmdW5jdGlvbiB0aChkcixXbiwkbil7dmFyIGJyPVduLnJlcGxhY2UoSXIsIiIpLFdyPVduLmxlbmd0aC1ici5sZW5ndGg7cmV0dXJuIHdhKGRyLGJyLCRuKk1hdGgucG93KDEwLDIqV3IpKSt3ZSgiJSIsV3Ip''@;'; put 'put ''fShkcixXbiwkbik7aWYoLTEhPT1Xbi5pbmRleE9mKCJFIikpcmV0dXJuIGxyKFduLCRuKTtpZigzNj09PVduLmNoYXJDb2RlQXQoMCkpcmV0dXJuIiQiK0JyKGRyLFduLnN1YnN0cigiICI9PVduLmNoYXJBdCgxKT8yOjEpLCRuKTt2YXIgV3IsdWksSWksdTAsemk9TWF0aC5hYnMoJG4pLEow''@;'; put 'put ''PSRuPDA/Ii0iOiIiO2lmKFduLm1hdGNoKC9eMDArJC8pKXJldHVybiBKMCt4ZSh6aSxXbi5sZW5ndGgpO2lmKFduLm1hdGNoKC9eWyM/XSskLykpcmV0dXJuIFdyPSIiKyRuLDA9PT0kbiYmKFdyPSIiKSxXci5sZW5ndGg+V24ubGVuZ3RoP1dyOnAwKFduLnN1YnN0cigwLFduLmxlbmd0aC1X''@;'; put 'put ''ci5sZW5ndGgpKStXcjtpZih1aT1Xbi5tYXRjaChyMCkpcmV0dXJuIGZ1bmN0aW9uIGUwKGRyLFduLCRuKXtyZXR1cm4gJG4rKDA9PT1Xbj8iIjoiIitXbikrd2UoIiAiLGRyWzFdLmxlbmd0aCsyK2RyWzRdLmxlbmd0aCl9KHVpLHppLEowKTtpZihXbi5tYXRjaCgvXiMrMCskLykpcmV0dXJu''@;'; put 'put ''IEowK3hlKHppLFduLmxlbmd0aC1Xbi5pbmRleE9mKCIwIikpO2lmKHVpPVduLm1hdGNoKE9vKSlyZXR1cm4gV3I9KFdyPSgiIiskbikucmVwbGFjZSgvXihbXlwuXSspJC8sIiQxLiIrcDAodWlbMV0pKS5yZXBsYWNlKC9cLiQvLCIuIitwMCh1aVsxXSkpKS5yZXBsYWNlKC9cLihcZCopJC8s''@;'; put 'put ''ZnVuY3Rpb24oJGEsanMpe3JldHVybiIuIitqcyt3ZSgiMCIscDAodWlbMV0pLmxlbmd0aC1qcy5sZW5ndGgpfSksLTEhPT1Xbi5pbmRleE9mKCIwLiIpP1dyOldyLnJlcGxhY2UoL14wXC4vLCIuIik7aWYoV249V24ucmVwbGFjZSgvXiMrKFswLl0pLywiJDEiKSx1aT1Xbi5tYXRjaCgvXigw''@;'; put 'put ''KilcLigjKikkLykpcmV0dXJuIEowKygiIit6aSkucmVwbGFjZSgvXC4oXGQqWzEtOV0pMCokLywiLiQxIikucmVwbGFjZSgvXigtP1xkKikkLywiJDEuIikucmVwbGFjZSgvXjBcLi8sdWlbMV0ubGVuZ3RoPyIwLiI6Ii4iKTtpZih1aT1Xbi5tYXRjaCgvXiN7MSwzfSwjIzAoXC4/KSQvKSly''@;'; put 'put ''ZXR1cm4gSjAram8oIiIremkpO2lmKHVpPVduLm1hdGNoKC9eIywjIzBcLihbIzBdKjApJC8pKXJldHVybiAkbjwwPyItIitCcihkcixXbiwtJG4pOmpvKCIiKyRuKSsiLiIrd2UoIjAiLHVpWzFdLmxlbmd0aCk7aWYodWk9V24ubWF0Y2goL14jLCMqLCMwLykpcmV0dXJuIEJyKGRyLFduLnJl''@;'; put 'put ''cGxhY2UoL14jLCMqLC8sIiIpLCRuKTtpZih1aT1Xbi5tYXRjaCgvXihbMCNdKykoXFw/LShbMCNdKykpKyQvKSlyZXR1cm4gV3I9WChCcihkcixXbi5yZXBsYWNlKC9bXFwtXS9nLCIiKSwkbikpLElpPTAsWChYKFduLnJlcGxhY2UoL1xcL2csIiIpKS5yZXBsYWNlKC9bMCNdL2csZnVuY3Rp''@;'; put 'put ''b24oJGEpe3JldHVybiBJaTxXci5sZW5ndGg/V3IuY2hhckF0KElpKyspOiIwIj09PSRhPyIwIjoiIn0pKTtpZihXbi5tYXRjaChwbykpcmV0dXJuIigiKyhXcj1CcihkciwiIyMjIyMjIyMjIyIsJG4pKS5zdWJzdHIoMCwzKSsiKSAiK1dyLnN1YnN0cigzLDMpKyItIitXci5zdWJzdHIoNik7''@;'; put 'put ''dmFyIEkwPSIiO2lmKHVpPVduLm1hdGNoKC9eKFsjMD9dKykoID8pXC8oID8pKFsjMD9dKykvKSlyZXR1cm4gSWk9TWF0aC5taW4odWlbNF0ubGVuZ3RoLDcpLHUwPVluKHppLE1hdGgucG93KDEwLElpKS0xLCExKSxXcj0iIitKMCwiICI9PShJMD13YSgibiIsdWlbMV0sdTBbMV0pKS5jaGFy''@;'; put 'put ''QXQoSTAubGVuZ3RoLTEpJiYoSTA9STAuc3Vic3RyKDAsSTAubGVuZ3RoLTEpKyIwIiksV3IrPUkwK3VpWzJdKyIvIit1aVszXSwoSTA9WmUodTBbMl0sSWkpKS5sZW5ndGg8dWlbNF0ubGVuZ3RoJiYoSTA9cDAodWlbNF0uc3Vic3RyKHVpWzRdLmxlbmd0aC1JMC5sZW5ndGgpKStJMCksV3Ir''@;'; put 'put ''PUkwO2lmKHVpPVduLm1hdGNoKC9eIyAoWyMwP10rKSggPylcLyggPykoWyMwP10rKS8pKXJldHVybiBJaT1NYXRoLm1pbihNYXRoLm1heCh1aVsxXS5sZW5ndGgsdWlbNF0ubGVuZ3RoKSw3KSxKMCsoKHUwPVluKHppLE1hdGgucG93KDEwLElpKS0xLCEwKSlbMF18fCh1MFsxXT8iIjoiMCIp''@;'; put 'put ''KSsiICIrKHUwWzFdP0ZlKHUwWzFdLElpKSt1aVsyXSsiLyIrdWlbM10rWmUodTBbMl0sSWkpOndlKCIgIiwyKklpKzErdWlbMl0ubGVuZ3RoK3VpWzNdLmxlbmd0aCkpO2lmKHVpPVduLm1hdGNoKC9eWyMwP10rJC8pKXJldHVybiBXbi5sZW5ndGg8PShXcj0iIiskbikubGVuZ3RoP1dyOnAw''@;'; put 'put ''KFduLnN1YnN0cigwLFduLmxlbmd0aC1Xci5sZW5ndGgpKStXcjtpZih1aT1Xbi5tYXRjaCgvXihbIzBdKylcLihbIzBdKykkLykpe1dyPSIiKyRuLnRvRml4ZWQoTWF0aC5taW4odWlbMl0ubGVuZ3RoLDEwKSkucmVwbGFjZSgvKFteMF0pMCskLywiJDEiKSxJaT1Xci5pbmRleE9mKCIuIik7''@;'; put 'put ''dmFyIGVhPVduLmluZGV4T2YoIi4iKS1JaSxZbz1Xbi5sZW5ndGgtV3IubGVuZ3RoLWVhO3JldHVybiBwMChXbi5zdWJzdHIoMCxlYSkrV3IrV24uc3Vic3RyKFduLmxlbmd0aC1ZbykpfWlmKHVpPVduLm1hdGNoKC9eMDAsMDAwXC4oWyMwXSowKSQvKSlyZXR1cm4gJG48MD8iLSIrQnIoZHIs''@;'; put 'put ''V24sLSRuKTpqbygiIiskbikucmVwbGFjZSgvXlxkLFxkezN9JC8sIjAkJiIpLnJlcGxhY2UoL15cZCokLyxmdW5jdGlvbigkYSl7cmV0dXJuIjAwLCIrKCRhLmxlbmd0aDwzP3hlKDAsMy0kYS5sZW5ndGgpOiIiKSskYX0pKyIuIit4ZSgwLHVpWzFdLmxlbmd0aCk7dmFyIHlvPWpvKCIiK3pp''@;'; put 'put ''KTtzd2l0Y2goV24pe2Nhc2UiIyMjLCMjIyI6Y2FzZSIjIywjIyMiOmNhc2UiIywjIyMiOnJldHVybiIwIiE9PXlvP0owK3lvOiIiO2Nhc2UiIywjMDAiOnJldHVybiIwMCIhPT0oeW89eGUoeW8sMikpP0owK3lvOiIiO2RlZmF1bHQ6aWYoV24ubWF0Y2goL1wuWzAjP10qJC8pKXJldHVybiBC''@;'; put 'put ''cihkcixXbi5zbGljZSgwLFduLmxhc3RJbmRleE9mKCIuIikpLCRuKStwMChXbi5zbGljZShXbi5sYXN0SW5kZXhPZigiLiIpKSl9dGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBmb3JtYXQgfCIrV24rInwiKX1yZXR1cm4gZnVuY3Rpb24oV24sJG4sYnIpe3JldHVybiIwLDAiPT0kbiYm''@;'; put 'put ''KCRuPSIjLCMwMCIpLCgwfGJyKT09PWJyP0JyKFduLCRuLGJyKTpLcyhXbiwkbixicil9fSgpO2Z1bmN0aW9uIGFvKHJyKXtmb3IodmFyIElyPVtdLFpyPSExLHFpPTAscmk9MDtxaTxyci5sZW5ndGg7KytxaSlzd2l0Y2gocnIuY2hhckNvZGVBdChxaSkpe2Nhc2UgMzQ6WnI9IVpyO2JyZWFr''@;'; put 'put ''O2Nhc2UgOTU6Y2FzZSA0MjpjYXNlIDkyOisrcWk7YnJlYWs7Y2FzZSA1OTpJcltJci5sZW5ndGhdPXJyLnN1YnN0cihyaSxxaS1yaSkscmk9cWkrMX1pZihJcltJci5sZW5ndGhdPXJyLnN1YnN0cihyaSksITA9PT1acil0aHJvdyBuZXcgRXJyb3IoIkZvcm1hdCB8IitycisifCB1bnRlcm1p''@;'; put 'put ''bmF0ZWQgc3RyaW5nICIpO3JldHVybiBJcn1pZS5fc3BsaXQ9YW87dmFyIHgwPS9cW1tIaE1tU3NcdTBFMEFcdTBFMTlcdTBFMTddKlxdLztmdW5jdGlvbiBoMChycil7Zm9yKHZhciBJcj0wLFpyPSIiLHFpPSIiO0lyPHJyLmxlbmd0aDspc3dpdGNoKFpyPXJyLmNoYXJBdChJcikpe2Nhc2Ui''@;'; put 'put ''RyI6UnQocnIsSXIpJiYoSXIrPTYpLElyKys7YnJlYWs7Y2FzZSciJzpmb3IoOzM0IT09cnIuY2hhckNvZGVBdCgrK0lyKSYmSXI8cnIubGVuZ3RoOyk7KytJcjticmVhaztjYXNlIlxcIjpjYXNlIl8iOklyKz0yO2JyZWFrO2Nhc2UiQCI6KytJcjticmVhaztjYXNlIkIiOmNhc2UiYiI6aWYo''@;'; put 'put ''IjEiPT09cnIuY2hhckF0KElyKzEpfHwiMiI9PT1yci5jaGFyQXQoSXIrMSkpcmV0dXJuITA7Y2FzZSJNIjpjYXNlIkQiOmNhc2UiWSI6Y2FzZSJIIjpjYXNlIlMiOmNhc2UiRSI6Y2FzZSJtIjpjYXNlImQiOmNhc2UieSI6Y2FzZSJoIjpjYXNlInMiOmNhc2UiZSI6Y2FzZSJnIjpyZXR1cm4h''@;'; put 'put ''MDtjYXNlIkEiOmNhc2UiYSI6Y2FzZSJcdTRlMGEiOmlmKCJBL1AiPT09cnIuc3Vic3RyKElyLDMpLnRvVXBwZXJDYXNlKCl8fCJBTS9QTSI9PT1yci5zdWJzdHIoSXIsNSkudG9VcHBlckNhc2UoKXx8Ilx1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDgiPT09cnIuc3Vic3RyKElyLDUpLnRvVXBw''@;'; put 'put ''ZXJDYXNlKCkpcmV0dXJuITA7KytJcjticmVhaztjYXNlIlsiOmZvcihxaT1acjsiXSIhPT1yci5jaGFyQXQoSXIrKykmJklyPHJyLmxlbmd0aDspcWkrPXJyLmNoYXJBdChJcik7aWYocWkubWF0Y2goeDApKXJldHVybiEwO2JyZWFrO2Nhc2UiLiI6Y2FzZSIwIjpjYXNlIiMiOmZvcig7SXI8''@;'; put 'put ''cnIubGVuZ3RoJiYoIjAjPy4sRSstJSIuaW5kZXhPZihacj1yci5jaGFyQXQoKytJcikpPi0xfHwiXFwiPT1aciYmIi0iPT1yci5jaGFyQXQoSXIrMSkmJiIwIyIuaW5kZXhPZihyci5jaGFyQXQoSXIrMikpPi0xKTspO2JyZWFrO2Nhc2UiPyI6Zm9yKDtyci5jaGFyQXQoKytJcik9PT1acjsp''@;'; put 'put ''O2JyZWFrO2Nhc2UiKiI6KytJciwoIiAiPT1yci5jaGFyQXQoSXIpfHwiKiI9PXJyLmNoYXJBdChJcikpJiYrK0lyO2JyZWFrO2Nhc2UiKCI6Y2FzZSIpIjorK0lyO2JyZWFrO2Nhc2UiMSI6Y2FzZSIyIjpjYXNlIjMiOmNhc2UiNCI6Y2FzZSI1IjpjYXNlIjYiOmNhc2UiNyI6Y2FzZSI4Ijpj''@;'; put 'put ''YXNlIjkiOmZvcig7SXI8cnIubGVuZ3RoJiYiMDEyMzQ1Njc4OSIuaW5kZXhPZihyci5jaGFyQXQoKytJcikpPi0xOyk7YnJlYWs7ZGVmYXVsdDorK0lyfXJldHVybiExfWZ1bmN0aW9uIGpyKHJyLElyLFpyLHFpKXtmb3IodmFyIGswLHBvLHAwLHJpPVtdLHIwPSIiLHBpPTAsZTA9IiIsT289''@;'; put 'put ''InQiLFFsPSJIIjtwaTxyci5sZW5ndGg7KXN3aXRjaChlMD1yci5jaGFyQXQocGkpKXtjYXNlIkciOmlmKCFSdChycixwaSkpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgY2hhcmFjdGVyICIrZTArIiBpbiAiK3JyKTtyaVtyaS5sZW5ndGhdPXt0OiJHIix2OiJHZW5lcmFsIn0scGkr''@;'; put 'put ''PTc7YnJlYWs7Y2FzZSciJzpmb3IocjA9IiI7MzQhPT0ocDA9cnIuY2hhckNvZGVBdCgrK3BpKSkmJnBpPHJyLmxlbmd0aDspcjArPVN0cmluZy5mcm9tQ2hhckNvZGUocDApO3JpW3JpLmxlbmd0aF09e3Q6InQiLHY6cjB9LCsrcGk7YnJlYWs7Y2FzZSJcXCI6dmFyIEFsPXJyLmNoYXJBdCgr''@;'; put 'put ''K3BpKTtyaVtyaS5sZW5ndGhdPXt0OiIoIj09PUFsfHwiKSI9PT1BbD9BbDoidCIsdjpBbH0sKytwaTticmVhaztjYXNlIl8iOnJpW3JpLmxlbmd0aF09e3Q6InQiLHY6IiAifSxwaSs9MjticmVhaztjYXNlIkAiOnJpW3JpLmxlbmd0aF09e3Q6IlQiLHY6SXJ9LCsrcGk7YnJlYWs7Y2FzZSJC''@;'; put 'put ''IjpjYXNlImIiOmlmKCIxIj09PXJyLmNoYXJBdChwaSsxKXx8IjIiPT09cnIuY2hhckF0KHBpKzEpKXtpZihudWxsPT1rMCYmbnVsbD09KGswPU1yKElyLFpyLCIyIj09PXJyLmNoYXJBdChwaSsxKSkpKXJldHVybiIiO3JpW3JpLmxlbmd0aF09e3Q6IlgiLHY6cnIuc3Vic3RyKHBpLDIpfSxP''@;'; put 'put ''bz1lMCxwaSs9MjticmVha31jYXNlIk0iOmNhc2UiRCI6Y2FzZSJZIjpjYXNlIkgiOmNhc2UiUyI6Y2FzZSJFIjplMD1lMC50b0xvd2VyQ2FzZSgpO2Nhc2UibSI6Y2FzZSJkIjpjYXNlInkiOmNhc2UiaCI6Y2FzZSJzIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJcdTBlMjciOmNhc2UiXHUwZTE0''@;'; put 'put ''IjpjYXNlIlx1MGUxYiI6Y2FzZSJcdTBlMGEiOmNhc2UiXHUwZTE5IjpjYXNlIlx1MGUxNyI6aWYoSXI8MHx8bnVsbD09azAmJm51bGw9PShrMD1NcihJcixacikpKXJldHVybiIiO2ZvcihyMD1lMDsrK3BpPHJyLmxlbmd0aCYmcnIuY2hhckF0KHBpKS50b0xvd2VyQ2FzZSgpPT09ZTA7KXIw''@;'; put 'put ''Kz1lMDsibSI9PT1lMCYmImgiPT09T28udG9Mb3dlckNhc2UoKSYmKGUwPSJNIiksImgiPT09ZTAmJihlMD1RbCkscmlbcmkubGVuZ3RoXT17dDplMCx2OnIwfSxPbz1lMDticmVhaztjYXNlIkEiOmNhc2UiYSI6Y2FzZSJcdTRlMGEiOnZhciBlMT17dDplMCx2OmUwfTtpZihudWxsPT1rMCYm''@;'; put 'put ''KGswPU1yKElyLFpyKSksIkEvUCI9PT1yci5zdWJzdHIocGksMykudG9VcHBlckNhc2UoKT8obnVsbCE9azAmJihlMS52PWswLkg+PTEyPyJQIjoiQSIpLGUxLnQ9IlQiLFFsPSJoIixwaSs9Myk6IkFNL1BNIj09PXJyLnN1YnN0cihwaSw1KS50b1VwcGVyQ2FzZSgpPyhudWxsIT1rMCYmKGUx''@;'; put 'put ''LnY9azAuSD49MTI/IlBNIjoiQU0iKSxlMS50PSJUIixwaSs9NSxRbD0iaCIpOiJcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4Ij09PXJyLnN1YnN0cihwaSw1KS50b1VwcGVyQ2FzZSgpPyhudWxsIT1rMCYmKGUxLnY9azAuSD49MTI/Ilx1NGUwYlx1NTM0OCI6Ilx1NGUwYVx1NTM0OCIpLGUx''@;'; put 'put ''LnQ9IlQiLHBpKz01LFFsPSJoIik6KGUxLnQ9InQiLCsrcGkpLG51bGw9PWswJiYiVCI9PT1lMS50KXJldHVybiIiO3JpW3JpLmxlbmd0aF09ZTEsT289ZTA7YnJlYWs7Y2FzZSJbIjpmb3IocjA9ZTA7Il0iIT09cnIuY2hhckF0KHBpKyspJiZwaTxyci5sZW5ndGg7KXIwKz1yci5jaGFyQXQo''@;'; put 'put ''cGkpO2lmKCJdIiE9PXIwLnNsaWNlKC0xKSl0aHJvdyd1bnRlcm1pbmF0ZWQgIlsiIGJsb2NrOiB8JytyMCsifCI7aWYocjAubWF0Y2goeDApKXtpZihudWxsPT1rMCYmbnVsbD09KGswPU1yKElyLFpyKSkpcmV0dXJuIiI7cmlbcmkubGVuZ3RoXT17dDoiWiIsdjpyMC50b0xvd2VyQ2FzZSgp''@;'; put 'put ''fSxPbz1yMC5jaGFyQXQoMSl9ZWxzZSByMC5pbmRleE9mKCIkIik+LTEmJihyMD0ocjAubWF0Y2goL1wkKFteLVxbXF1dKikvKXx8W10pWzFdfHwiJCIsaDAocnIpfHwocmlbcmkubGVuZ3RoXT17dDoidCIsdjpyMH0pKTticmVhaztjYXNlIi4iOmlmKG51bGwhPWswKXtmb3IocjA9ZTA7Kytw''@;'; put 'put ''aTxyci5sZW5ndGgmJiIwIj09PShlMD1yci5jaGFyQXQocGkpKTspcjArPWUwO3JpW3JpLmxlbmd0aF09e3Q6InMiLHY6cjB9O2JyZWFrfWNhc2UiMCI6Y2FzZSIjIjpmb3IocjA9ZTA7KytwaTxyci5sZW5ndGgmJiIwIz8uLEUrLSUiLmluZGV4T2YoZTA9cnIuY2hhckF0KHBpKSk+LTE7KXIw''@;'; put 'put ''Kz1lMDtyaVtyaS5sZW5ndGhdPXt0OiJuIix2OnIwfTticmVhaztjYXNlIj8iOmZvcihyMD1lMDtyci5jaGFyQXQoKytwaSk9PT1lMDspcjArPWUwO3JpW3JpLmxlbmd0aF09e3Q6ZTAsdjpyMH0sT289ZTA7YnJlYWs7Y2FzZSIqIjorK3BpLCgiICI9PXJyLmNoYXJBdChwaSl8fCIqIj09cnIu''@;'; put 'put ''Y2hhckF0KHBpKSkmJisrcGk7YnJlYWs7Y2FzZSIoIjpjYXNlIikiOnJpW3JpLmxlbmd0aF09e3Q6MT09PXFpPyJ0IjplMCx2OmUwfSwrK3BpO2JyZWFrO2Nhc2UiMSI6Y2FzZSIyIjpjYXNlIjMiOmNhc2UiNCI6Y2FzZSI1IjpjYXNlIjYiOmNhc2UiNyI6Y2FzZSI4IjpjYXNlIjkiOmZvcihy''@;'; put 'put ''MD1lMDtwaTxyci5sZW5ndGgmJiIwMTIzNDU2Nzg5Ii5pbmRleE9mKHJyLmNoYXJBdCgrK3BpKSk+LTE7KXIwKz1yci5jaGFyQXQocGkpO3JpW3JpLmxlbmd0aF09e3Q6IkQiLHY6cjB9O2JyZWFrO2Nhc2UiICI6cmlbcmkubGVuZ3RoXT17dDplMCx2OmUwfSwrK3BpO2JyZWFrO2Nhc2UiJCI6''@;'; put 'put ''cmlbcmkubGVuZ3RoXT17dDoidCIsdjpkaX0sKytwaTticmVhaztjYXNlIi8iOnJpW3JpLmxlbmd0aF09cmkubGVuZ3RoPjAmJmgwKHJpW3JpLmxlbmd0aC0xXS52KT97dDoidCIsdjpZcn06e3Q6InQiLHY6Ii8ifSwrK3BpO2JyZWFrO2RlZmF1bHQ6aWYoLTE9PT0iLCQtKy8oKTohXiYnfnt9''@;'; put 'put ''PD49XHUyMGFjYWNmaWprbG9wcXJ0dXZ3eHpQIi5pbmRleE9mKGUwKSl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCBjaGFyYWN0ZXIgIitlMCsiIGluICIrcnIpO3JpW3JpLmxlbmd0aF09e3Q6InQiLHY6ZTB9LCsrcGl9dmFyIHRoLEtzPTAsUDY9MDtmb3IocGk9cmkubGVuZ3RoLTEs''@;'; put 'put ''T289InQiO3BpPj0wOy0tcGkpc3dpdGNoKHJpW3BpXS50KXtjYXNlImgiOmNhc2UiSCI6cmlbcGldLnQ9UWwsT289ImgiLEtzPDEmJihLcz0xKTticmVhaztjYXNlInMiOih0aD1yaVtwaV0udi5tYXRjaCgvXC4wKyQvKSkmJihQNj1NYXRoLm1heChQNix0aFswXS5sZW5ndGgtMSkpLEtzPDMm''@;'; put 'put ''JihLcz0zKTtjYXNlImQiOmNhc2UieSI6Y2FzZSJNIjpjYXNlImUiOk9vPXJpW3BpXS50O2JyZWFrO2Nhc2UibSI6InMiPT09T28mJihyaVtwaV0udD0iTSIsS3M8MiYmKEtzPTIpKTticmVhaztjYXNlIlgiOmJyZWFrO2Nhc2UiWiI6S3M8MSYmcmlbcGldLnYubWF0Y2goL1tIaF0vKSYmKEtz''@;'; put 'put ''PTEpLEtzPDImJnJpW3BpXS52Lm1hdGNoKC9bTW1dLykmJihLcz0yKSxLczwzJiZyaVtwaV0udi5tYXRjaCgvW1NzXS8pJiYoS3M9Myl9c3dpdGNoKEtzKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOmswLnU+PS41JiYoazAudT0wLCsrazAuUyksazAuUz49NjAmJihrMC5TPTAsKytrMC5NKSxrMC5N''@;'; put 'put ''Pj02MCYmKGswLk09MCwrK2swLkgpO2JyZWFrO2Nhc2UgMjprMC51Pj0uNSYmKGswLnU9MCwrK2swLlMpLGswLlM+PTYwJiYoazAuUz0wLCsrazAuTSl9dmFyIEJyLGxyPSIiO2ZvcihwaT0wO3BpPHJpLmxlbmd0aDsrK3BpKXN3aXRjaChyaVtwaV0udCl7Y2FzZSJ0IjpjYXNlIlQiOmNhc2Ui''@;'; put 'put ''ICI6Y2FzZSJEIjpicmVhaztjYXNlIlgiOnJpW3BpXS52PSIiLHJpW3BpXS50PSI7IjticmVhaztjYXNlImQiOmNhc2UibSI6Y2FzZSJ5IjpjYXNlImgiOmNhc2UiSCI6Y2FzZSJNIjpjYXNlInMiOmNhc2UiZSI6Y2FzZSJiIjpjYXNlIloiOmNhc2UiXHUwZTI3IjpjYXNlIlx1MGUxNCI6Y2Fz''@;'; put 'put ''ZSJcdTBlMWIiOmNhc2UiXHUwZTBhIjpjYXNlIlx1MGUxOSI6Y2FzZSJcdTBlMTciOnJpW3BpXS52PVZhKHJpW3BpXS50LmNoYXJDb2RlQXQoMCkscmlbcGldLnYsazAsUDYpLHJpW3BpXS50PSJ0IjticmVhaztjYXNlIm4iOmNhc2UiPyI6Zm9yKEJyPXBpKzE7bnVsbCE9cmlbQnJdJiYoIj8i''@;'; put 'put ''PT09KGUwPXJpW0JyXS50KXx8IkQiPT09ZTB8fCgiICI9PT1lMHx8InQiPT09ZTApJiZudWxsIT1yaVtCcisxXSYmKCI/Ij09PXJpW0JyKzFdLnR8fCJ0Ij09PXJpW0JyKzFdLnQmJiIvIj09PXJpW0JyKzFdLnYpfHwiKCI9PT1yaVtwaV0udCYmKCIgIj09PWUwfHwibiI9PT1lMHx8IikiPT09''@;'; put 'put ''ZTApfHwidCI9PT1lMCYmKCIvIj09PXJpW0JyXS52fHwiICI9PT1yaVtCcl0udiYmbnVsbCE9cmlbQnIrMV0mJiI/Ij09cmlbQnIrMV0udCkpOylyaVtwaV0udis9cmlbQnJdLnYscmlbQnJdPXt2OiIiLHQ6IjsifSwrK0JyO2xyKz1yaVtwaV0udixwaT1Cci0xO2JyZWFrO2Nhc2UiRyI6cmlb''@;'; put 'put ''cGldLnQ9InQiLHJpW3BpXS52PWlvKElyLFpyKX12YXIgV24sJG4sZHI9IiI7aWYobHIubGVuZ3RoPjApezQwPT1sci5jaGFyQ29kZUF0KDApPyhXbj1JcjwwJiY0NT09PWxyLmNoYXJDb2RlQXQoMCk/LUlyOklyLCRuPXdhKCJuIixscixXbikpOigkbj13YSgibiIsbHIsV249SXI8MCYmcWk+''@;'; put 'put ''MT8tSXI6SXIpLFduPDAmJnJpWzBdJiYidCI9PXJpWzBdLnQmJigkbj0kbi5zdWJzdHIoMSkscmlbMF0udj0iLSIrcmlbMF0udikpLEJyPSgkbj0kbi5yZXBsYWNlKC9bLFwuXS9nLGZ1bmN0aW9uKElpKXtyZXR1cm4iLiI9PUlpP2JpOkEwfSkpLmxlbmd0aC0xO3ZhciBicj1yaS5sZW5ndGg7''@;'; put 'put ''Zm9yKHBpPTA7cGk8cmkubGVuZ3RoOysrcGkpaWYobnVsbCE9cmlbcGldJiYidCIhPXJpW3BpXS50JiZyaVtwaV0udi5pbmRleE9mKCIuIik+LTEpe2JyPXBpO2JyZWFrfXZhciBXcj1yaS5sZW5ndGg7aWYoYnI9PT1yaS5sZW5ndGgmJi0xPT09JG4uaW5kZXhPZigiRSIpKXtmb3IocGk9cmku''@;'; put 'put ''bGVuZ3RoLTE7cGk+PTA7LS1waSludWxsPT1yaVtwaV18fC0xPT09Im4/Ii5pbmRleE9mKHJpW3BpXS50KXx8KEJyPj1yaVtwaV0udi5sZW5ndGgtMT9yaVtwaV0udj0kbi5zdWJzdHIoMSsoQnItPXJpW3BpXS52Lmxlbmd0aCkscmlbcGldLnYubGVuZ3RoKTpCcjwwP3JpW3BpXS52PSIiOihy''@;'; put 'put ''aVtwaV0udj0kbi5zdWJzdHIoMCxCcisxKSxCcj0tMSkscmlbcGldLnQ9InQiLFdyPXBpKTtCcj49MCYmV3I8cmkubGVuZ3RoJiYocmlbV3JdLnY9JG4uc3Vic3RyKDAsQnIrMSkrcmlbV3JdLnYpfWVsc2UgaWYoYnIhPT1yaS5sZW5ndGgmJi0xPT09JG4uaW5kZXhPZigiRSIpKXtmb3IoQnI9''@;'; put 'put ''JG4uaW5kZXhPZihiaSktMSxwaT1icjtwaT49MDstLXBpKWlmKG51bGwhPXJpW3BpXSYmLTEhPT0ibj8iLmluZGV4T2YocmlbcGldLnQpKXtmb3IocG89cmlbcGldLnYuaW5kZXhPZigiLiIpPi0xJiZwaT09PWJyP3JpW3BpXS52LmluZGV4T2YoIi4iKS0xOnJpW3BpXS52Lmxlbmd0aC0xLGRy''@;'; put 'put ''PXJpW3BpXS52LnN1YnN0cihwbysxKTtwbz49MDstLXBvKUJyPj0wJiYoIjAiPT09cmlbcGldLnYuY2hhckF0KHBvKXx8IiMiPT09cmlbcGldLnYuY2hhckF0KHBvKSkmJihkcj0kbi5jaGFyQXQoQnItLSkrZHIpO3JpW3BpXS52PWRyLHJpW3BpXS50PSJ0IixXcj1waX1mb3IoQnI+PTAmJldy''@;'; put 'put ''PHJpLmxlbmd0aCYmKHJpW1dyXS52PSRuLnN1YnN0cigwLEJyKzEpK3JpW1dyXS52KSxCcj0kbi5pbmRleE9mKGJpKSsxLHBpPWJyO3BpPHJpLmxlbmd0aDsrK3BpKWlmKG51bGwhPXJpW3BpXSYmKC0xIT09Im4/KCIuaW5kZXhPZihyaVtwaV0udCl8fHBpPT09YnIpKXtmb3IocG89cmlbcGld''@;'; put 'put ''LnYuaW5kZXhPZihiaSk+LTEmJnBpPT09YnI/cmlbcGldLnYuaW5kZXhPZihiaSkrMTowLGRyPXJpW3BpXS52LnN1YnN0cigwLHBvKTtwbzxyaVtwaV0udi5sZW5ndGg7KytwbylCcjwkbi5sZW5ndGgmJihkcis9JG4uY2hhckF0KEJyKyspKTtyaVtwaV0udj1kcixyaVtwaV0udD0idCIsV3I9''@;'; put 'put ''cGl9fX1mb3IocGk9MDtwaTxyaS5sZW5ndGg7KytwaSludWxsIT1yaVtwaV0mJiJuPyIuaW5kZXhPZihyaVtwaV0udCk+LTEmJihyaVtwaV0udj13YShyaVtwaV0udCxyaVtwaV0udixXbj1xaT4xJiZJcjwwJiZwaT4wJiYiLSI9PT1yaVtwaS0xXS52Py1JcjpJcikucmVwbGFjZSgvXC4vZyxi''@;'; put 'put ''aSkucmVwbGFjZSgvLC8sQTApLHJpW3BpXS50PSJ0Iik7dmFyIHVpPSIiO2ZvcihwaT0wO3BpIT09cmkubGVuZ3RoOysrcGkpbnVsbCE9cmlbcGldJiYodWkrPXJpW3BpXS52KTtyZXR1cm4gdWl9aWUuaXNfZGF0ZT1oMCxpZS5fZXZhbD1qcjt2YXIgdm89L1xbWz08Pl0vLHhvPS9cWyg9fD5b''@;'; put 'put ''PV0/fDxbPj1dPykoLT9cZCsoPzpcLlxkKik/KVxdLztmdW5jdGlvbiAkaShycixJcil7aWYobnVsbD09SXIpcmV0dXJuITE7dmFyIFpyPXBhcnNlRmxvYXQoSXJbMl0pO3N3aXRjaChJclsxXSl7Y2FzZSI9IjppZihycj09WnIpcmV0dXJuITA7YnJlYWs7Y2FzZSI+IjppZihycj5acilyZXR1''@;'; put 'put ''cm4hMDticmVhaztjYXNlIjwiOmlmKHJyPFpyKXJldHVybiEwO2JyZWFrO2Nhc2UiPD4iOmlmKHJyIT1acilyZXR1cm4hMDticmVhaztjYXNlIj49IjppZihycj49WnIpcmV0dXJuITA7YnJlYWs7Y2FzZSI8PSI6aWYocnI8PVpyKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIE1jKHJyLEly''@;'; put 'put ''LFpyKXtudWxsPT1aciYmKFpyPXt9KTt2YXIgcWk9IiI7c3dpdGNoKHR5cGVvZiBycil7Y2FzZSJzdHJpbmciOnFpPSJtL2QveXkiPT1yciYmWnIuZGF0ZU5GP1pyLmRhdGVORjpycjticmVhaztjYXNlIm51bWJlciI6bnVsbD09KHFpPTE0PT1yciYmWnIuZGF0ZU5GP1pyLmRhdGVORjoobnVs''@;'; put 'put ''bCE9WnIudGFibGU/WnIudGFibGU6enQpW3JyXSkmJihxaT1aci50YWJsZSYmWnIudGFibGVbUG5bcnJdXXx8enRbUG5bcnJdXSksbnVsbD09cWkmJihxaT1Pbltycl18fCJHZW5lcmFsIil9aWYoUnQocWksMCkpcmV0dXJuIGlvKElyLFpyKTtJciBpbnN0YW5jZW9mIERhdGUmJihJcj1HcihJ''@;'; put 'put ''cixaci5kYXRlMTkwNCkpO3ZhciByaT1mdW5jdGlvbiBsMihycixJcil7dmFyIFpyPWFvKHJyKSxxaT1aci5sZW5ndGgscmk9WnJbcWktMV0uaW5kZXhPZigiQCIpO2lmKHFpPDQmJnJpPi0xJiYtLXFpLFpyLmxlbmd0aD40KXRocm93IG5ldyBFcnJvcigiY2Fubm90IGZpbmQgcmlnaHQgZm9y''@;'; put 'put ''bWF0IGZvciB8Iitaci5qb2luKCJ8IikrInwiKTtpZigibnVtYmVyIiE9dHlwZW9mIElyKXJldHVybls0LDQ9PT1aci5sZW5ndGh8fHJpPi0xP1pyW1pyLmxlbmd0aC0xXToiQCJdO3N3aXRjaChaci5sZW5ndGgpe2Nhc2UgMTpacj1yaT4tMT9bIkdlbmVyYWwiLCJHZW5lcmFsIiwiR2VuZXJh''@;'; put 'put ''bCIsWnJbMF1dOltaclswXSxaclswXSxaclswXSwiQCJdO2JyZWFrO2Nhc2UgMjpacj1yaT4tMT9bWnJbMF0sWnJbMF0sWnJbMF0sWnJbMV1dOltaclswXSxaclsxXSxaclswXSwiQCJdO2JyZWFrO2Nhc2UgMzpacj1yaT4tMT9bWnJbMF0sWnJbMV0sWnJbMF0sWnJbMl1dOltaclswXSxaclsx''@;'; put 'put ''XSxaclsyXSwiQCJdfXZhciByMD1Jcj4wP1pyWzBdOklyPDA/WnJbMV06WnJbMl07aWYoLTE9PT1aclswXS5pbmRleE9mKCJbIikmJi0xPT09WnJbMV0uaW5kZXhPZigiWyIpKXJldHVybltxaSxyMF07aWYobnVsbCE9WnJbMF0ubWF0Y2godm8pfHxudWxsIT1aclsxXS5tYXRjaCh2bykpe3Zh''@;'; put 'put ''ciBwaT1aclswXS5tYXRjaCh4byksZTA9WnJbMV0ubWF0Y2goeG8pO3JldHVybiAkaShJcixwaSk/W3FpLFpyWzBdXTokaShJcixlMCk/W3FpLFpyWzFdXTpbcWksWnJbbnVsbCE9cGkmJm51bGwhPWUwPzI6MV1dfXJldHVybltxaSxyMF19KHFpLElyKTtpZihSdChyaVsxXSkpcmV0dXJuIGlv''@;'; put 'put ''KElyLFpyKTtpZighMD09PUlyKUlyPSJUUlVFIjtlbHNlIGlmKCExPT09SXIpSXI9IkZBTFNFIjtlbHNlIGlmKCIiPT09SXJ8fG51bGw9PUlyKXJldHVybiIiO3JldHVybiBqcihyaVsxXSxJcixacixyaVswXSl9ZnVuY3Rpb24gcDIocnIsSXIpe2lmKCJudW1iZXIiIT10eXBlb2YgSXIpe0ly''@;'; put 'put ''PStJcnx8LTE7Zm9yKHZhciBacj0wO1pyPDM5MjsrK1pyKWlmKG51bGwhPXp0W1pyXSl7aWYoenRbWnJdPT1ycil7SXI9WnI7YnJlYWt9fWVsc2UgSXI8MCYmKElyPVpyKTtJcjwwJiYoSXI9MzkxKX1yZXR1cm4genRbSXJdPXJyLElyfWllLmxvYWQ9cDIsaWUuX3RhYmxlPXp0LGllLmdldF90''@;'; put 'put ''YWJsZT1mdW5jdGlvbigpe3JldHVybiB6dH0saWUubG9hZF90YWJsZT1mdW5jdGlvbihJcil7Zm9yKHZhciBacj0wOzM5MiE9WnI7Kytacil2b2lkIDAhPT1Jcltacl0mJnAyKElyW1pyXSxacil9LGllLmluaXRfdGFibGU9RHQsaWUuZm9ybWF0PU1jLGllLmdldGxvY2FsZT1mdW5jdGlvbiBF''@;'; put 'put ''aSgpe3JldHVybiB6cnx8ImVuLVVTIn0saWUuc2V0bG9jYWxlPWZ1bmN0aW9uIGhpKHJyKXtpZihmdW5jdGlvbiBraShycil7dmFyIElyPTA7c3dpdGNoKCh6cnx8IiIpLnRvTG93ZXJDYXNlKCkpe2Nhc2UiemgtdHciOmNhc2UiemgtY24iOmNhc2UiamEtanAiOmNhc2Uia28ta3IiOmZvcihJ''@;'; put 'put ''cj0yNztJcjw9MzY7KytJcilkZWxldGUgcnJbSXJdO2ZvcihJcj01MDtJcjw9NTg7KytJcilkZWxldGUgcnJbSXJdO2JyZWFrO2Nhc2UidGgtdGgiOmZvcihJcj01OTtJcjw9NjI7KytJcilkZWxldGUgcnJbSXJdO2ZvcihJcj02NztJcjw9ODE7KytJcilkZWxldGUgcnJbSXJdfX0oenQpLHpy''@;'; put 'put ''PXJyLE5yKHp0KSwidW5kZWZpbmVkIiE9dHlwZW9mIEludGwpe3ZhciBJcj1JbnRsLkRhdGVUaW1lRm9ybWF0KHJyKTtpZihJci5mb3JtYXRUb1BhcnRzKXtmb3IodmFyIFpyPUlyLmZvcm1hdFRvUGFydHMobmV3IERhdGUoMjAyMCwwLDUsMCwwLDApKSxxaT0wO3FpPDc7KytxaSlubltxaV1b''@;'; put 'put ''MV09SW50bC5EYXRlVGltZUZvcm1hdChycix7d2Vla2RheToibG9uZyJ9KS5mb3JtYXRUb1BhcnRzKG5ldyBEYXRlKDIwMjAsMCw1K3FpLDAsMCwwKSlbMF0udmFsdWUsbm5bcWldWzBdPUludGwuRGF0ZVRpbWVGb3JtYXQocnIse3dlZWtkYXk6InNob3J0In0pLmZvcm1hdFRvUGFydHMobmV3''@;'; put 'put ''IERhdGUoMjAyMCwwLDUrcWksMCwwLDApKVswXS52YWx1ZTtmb3IodmFyIHJpPTA7cmk8MTI7KytyaSlDbltyaV1bMl09SW50bC5EYXRlVGltZUZvcm1hdChycix7bW9udGg6ImxvbmcifSkuZm9ybWF0VG9QYXJ0cyhuZXcgRGF0ZSgyMDIwLHJpLDIsMCwwLDApKVswXS52YWx1ZSxDbltyaV1b''@;'; put 'put ''MV09SW50bC5EYXRlVGltZUZvcm1hdChycix7bW9udGg6InNob3J0In0pLmZvcm1hdFRvUGFydHMobmV3IERhdGUoMjAyMCxyaSwyLDAsMCwwKSlbMF0udmFsdWUsQ25bcmldWzBdPUNuW3JpXVsxXS5zbGljZSgwLDEpO2Zvcih2YXIgcjA9IiIscGk9MDtwaTxaci5sZW5ndGg7KytwaSl7dmFy''@;'; put 'put ''IGUwPVpyW3BpXS52YWx1ZTtzd2l0Y2goWnJbcGldLnR5cGUpe2Nhc2UieWVhciI6cjArPTI9PWUwLmxlbmd0aD8ieXkiOiJ5eXl5IjticmVhaztjYXNlIm1vbnRoIjpyMCs9IjEiPT1lMD8ibSI6IjAxIj09ZTA/Im1tIjplMD09Q25bMF1bMV0/Im1tbSI6ZTA9PUNuWzBdWzJdPyJtbW1tIjpl''@;'; put 'put ''MD09Q25bMF1bMF0/Im1tbW1tIjoibW0iO2JyZWFrO2Nhc2UiZGF5IjpyMCs9IjUiPT1lMD8iZCI6IjA1Ij09ZTA/ImRkIjplMD09bm5bMF1bMF0/ImRkZCI6ZTA9PW5uWzBdWzFdPyJkZGRkIjoiZGQiO2JyZWFrO2Nhc2UibGl0ZXJhbCI6cjArPWUwLnJlcGxhY2UoLy4vZywiXFwkJiIpLDE9''@;'; put 'put ''PWUwLmxlbmd0aCYmKFlyPWUwKX19KHJyLm1hdGNoKC9lbi9pKSYmcnIubWF0Y2goL3VzL2kpfHwhcnIpJiYocjA9Im0vZC95eSIpLHp0WzE0XT1yMH1lbHNlImphLWpwIj09cnIudG9Mb3dlckNhc2UoKSYmKHp0WzE0XT0ieXl5eVxcL21cXC9kIik7dmFyIE9vPUludGwuTnVtYmVyRm9ybWF0''@;'; put 'put ''KHJyLHt9KS5mb3JtYXQoMTIzNDU2Ny44OSk7T28mJihBMD0oT28ubWF0Y2goLzEoLiopMi8pfHxbXSlbMV0sYmk9KE9vLm1hdGNoKC83KC4qKTgvKXx8W10pWzFdKX1xcltyci50b0xvd2VyQ2FzZSgpXXx8KHFyW3JyLnRvTG93ZXJDYXNlKCldPXsiLiI6YmksIiwiOkEwfSksY3I9VXQob2k9''@;'; put 'put ''cXJbcnIudG9Mb3dlckNhc2UoKV18fHFyWyJlbi11cyJdKX0saWUubm9ybWFsaXplPWZ1bmN0aW9uIEhpKHJyKXtmb3IodmFyIElyPTAsWnI9MCxxaT0iIixyaT0iIixyMD0iIixwaT1vaS55fHwieSIsZTA9cGkudG9VcHBlckNhc2UoKSxPbz1vaS5kfHwiZCIsazA9T28udG9VcHBlckNhc2Uo''@;'; put 'put ''KSxwbz1vaVsiLiJdLHAwPW9pWyIsIl0sUWw9IjAjP0UrLSUiK29pWyIsIl0rcG87SXI8cnIubGVuZ3RoOylzd2l0Y2gocWk9cnIuY2hhckF0KElyKSl7Y2FzZSJHIjpJcisrLHIwKz1xaTticmVhaztjYXNlJyInOmZvcihyMCs9cWk7MzQhPT0oWnI9cnIuY2hhckNvZGVBdCgrK0lyKSkmJkly''@;'; put 'put ''PHJyLmxlbmd0aDspcjArPVN0cmluZy5mcm9tQ2hhckNvZGUoWnIpO3IwKz0nIicsKytJcjticmVhaztjYXNlIlxcIjpjYXNlIl8iOnIwKz1yci5zbGljZShJcixJcisyKSxJcis9MjticmVhaztjYXNlIkAiOnIwKz1xaSwrK0lyO2JyZWFrO2Nhc2UiQiI6Y2FzZSJiIjorK0lyLHIwKz1xaTti''@;'; put 'put ''cmVhaztjYXNlIHBpOmNhc2UgZTA6Y2FzZSBPbzpjYXNlIGswOnIwKz1jcltxaS50b0xvd2VyQ2FzZSgpXSwrK0lyO2JyZWFrO2Nhc2UiTSI6Y2FzZSJIIjpjYXNlIlMiOmNhc2UiRSI6Y2FzZSJtIjpjYXNlImgiOmNhc2UicyI6Y2FzZSJlIjpjYXNlImciOmNhc2UiQSI6Y2FzZSJhIjpyMCs9''@;'; put 'put ''cWksKytJcjticmVhaztjYXNlIlsiOmZvcihyaT1xaTsiXSIhPT1yci5jaGFyQXQoSXIrKykmJklyPHJyLmxlbmd0aDspcmkrPXJyLmNoYXJBdChJcik7cjArPXJpO2JyZWFrO2Nhc2UgcDA6cjArPSciJytxaSsnIicsKytJcjticmVhaztjYXNlIHBvOmlmKCEoSXI8cnIubGVuZ3RoJiYoUWwu''@;'; put 'put ''aW5kZXhPZihxaT1yci5jaGFyQXQoKytJcikpPi0xfHwiXFwiPT1xaSYmIi0iPT1yci5jaGFyQXQoSXIrMSkmJiIwIyIuaW5kZXhPZihyci5jaGFyQXQoSXIrMikpPi0xKSkpe3IwKz0nIicrcG8rJyInO2JyZWFrfXFpPXBvLC0tSXI7Y2FzZSIwIjpjYXNlIiMiOmZvcihyMCs9Y3JbcWkudG9M''@;'; put 'put ''b3dlckNhc2UoKV18fHFpO0lyPHJyLmxlbmd0aCYmKFFsLmluZGV4T2YocWk9cnIuY2hhckF0KCsrSXIpKT4tMXx8IlxcIj09cWkmJiItIj09cnIuY2hhckF0KElyKzEpJiYiMCMiLmluZGV4T2YocnIuY2hhckF0KElyKzIpKT4tMSk7KXIwKz1jcltxaS50b0xvd2VyQ2FzZSgpXXx8cWk7YnJl''@;'; put 'put ''YWs7Y2FzZSI/Ijpmb3IocjArPXFpO3JyLmNoYXJBdCgrK0lyKT09PXFpOylyMCs9cWk7YnJlYWs7Y2FzZSIqIjpyMCs9cWksKytJciwoIiAiPT1yci5jaGFyQXQoSXIpfHwiKiI9PXJyLmNoYXJBdChJcikpJiYocjArPXJyLmNoYXJBdChJciksKytJcik7YnJlYWs7Y2FzZSIoIjpjYXNlIiki''@;'; put 'put ''OnIwKz1xaSwrK0lyO2JyZWFrO2Nhc2UiMSI6Y2FzZSIyIjpjYXNlIjMiOmNhc2UiNCI6Y2FzZSI1IjpjYXNlIjYiOmNhc2UiNyI6Y2FzZSI4IjpjYXNlIjkiOmZvcihyMCs9cWk7SXI8cnIubGVuZ3RoJiYiMDEyMzQ1Njc4OSIuaW5kZXhPZihyci5jaGFyQXQoKytJcikpPi0xOylyMCs9cnIu''@;'; put 'put ''Y2hhckF0KElyKTticmVhaztkZWZhdWx0OnIwKz1xaSwrK0lyfXJldHVybiByMH0saWUuZ2V0Y3VycmVuY3k9ZnVuY3Rpb24gVWkoKXtyZXR1cm4gdjB8fCJVU0QifSxpZS5zZXRjdXJyZW5jeT1mdW5jdGlvbiB0byhycil7djA9cnIsZGk9InVuZGVmaW5lZCIhPXR5cGVvZiBJbnRsP0ludGwu''@;'; put 'put ''TnVtYmVyRm9ybWF0KHpyLHtzdHlsZToiY3VycmVuY3kiLGN1cnJlbmN5RGlzcGxheToic3ltYm9sIixjdXJyZW5jeTpycn0pLmZvcm1hdCgwKS5yZXBsYWNlKC9bMFwuXCxcc10vZywiIik6IiQifX07eWUoRik7dmFyIHd0LENlPXsiR2VuZXJhbCBOdW1iZXIiOiJHZW5lcmFsIiwiR2VuZXJh''@;'; put 'put ''bCBEYXRlIjpGLl90YWJsZVsyMl0sIkxvbmcgRGF0ZSI6ImRkZGQsIG1tbW0gZGQsIHl5eXkiLCJNZWRpdW0gRGF0ZSI6Ri5fdGFibGVbMTVdLCJTaG9ydCBEYXRlIjpGLl90YWJsZVsxNF0sIkxvbmcgVGltZSI6Ri5fdGFibGVbMTldLCJNZWRpdW0gVGltZSI6Ri5fdGFibGVbMThdLCJTaG9y''@;'; put 'put ''dCBUaW1lIjpGLl90YWJsZVsyMF0sQ3VycmVuY3k6JyIkIiMsIyMwLjAwXyk7W1JlZF1cXCgiJCIjLCMjMC4wMFxcKScsRml4ZWQ6Ri5fdGFibGVbMl0sU3RhbmRhcmQ6Ri5fdGFibGVbNF0sUGVyY2VudDpGLl90YWJsZVsxMF0sU2NpZW50aWZpYzpGLl90YWJsZVsxMV0sIlllcy9ObyI6JyJZ''@;'; put 'put ''ZXMiOyJZZXMiOyJObyI7QCcsIlRydWUvRmFsc2UiOiciVHJ1ZSI7IlRydWUiOyJGYWxzZSI7QCcsIk9uL09mZiI6JyJZZXMiOyJZZXMiOyJObyI7QCd9LERlPXs1OiciJCIjLCMjMF8pO1xcKCIkIiMsIyMwXFwpJyw2OiciJCIjLCMjMF8pO1tSZWRdXFwoIiQiIywjIzBcXCknLDc6JyIkIiMs''@;'; put 'put ''IyMwLjAwXyk7XFwoIiQiIywjIzAuMDBcXCknLDg6JyIkIiMsIyMwLjAwXyk7W1JlZF1cXCgiJCIjLCMjMC4wMFxcKScsMjM6IkdlbmVyYWwiLDI0OiJHZW5lcmFsIiwyNToiR2VuZXJhbCIsMjY6IkdlbmVyYWwiLDI3OiJtL2QveXkiLDI4OiJtL2QveXkiLDI5OiJtL2QveXkiLDMwOiJtL2Qv''@;'; put 'put ''eXkiLDMxOiJtL2QveXkiLDMyOiJoOm1tOnNzIiwzMzoiaDptbTpzcyIsMzQ6Img6bW06c3MiLDM1OiJoOm1tOnNzIiwzNjoibS9kL3l5Iiw0MTonXygqICMsIyMwXyk7XygqICgjLCMjMCk7XygqICItIl8pO18oQF8pJyw0MjonXygiJCIqICMsIyMwXyk7XygiJCIqICgjLCMjMCk7XygiJCIq''@;'; put 'put ''ICItIl8pO18oQF8pJyw0MzonXygqICMsIyMwLjAwXyk7XygqICgjLCMjMC4wMCk7XygqICItIj8/Xyk7XyhAXyknLDQ0OidfKCIkIiogIywjIzAuMDBfKTtfKCIkIiogKCMsIyMwLjAwKTtfKCIkIiogIi0iPz9fKTtfKEBfKScsNTA6Im0vZC95eSIsNTE6Im0vZC95eSIsNTI6Im0vZC95eSIs''@;'; put 'put ''NTM6Im0vZC95eSIsNTQ6Im0vZC95eSIsNTU6Im0vZC95eSIsNTY6Im0vZC95eSIsNTc6Im0vZC95eSIsNTg6Im0vZC95eSIsNTk6IjAiLDYwOiIwLjAwIiw2MToiIywjIzAiLDYyOiIjLCMjMC4wMCIsNjM6JyIkIiMsIyMwXyk7XFwoIiQiIywjIzBcXCknLDY0OiciJCIjLCMjMF8pO1tSZWRd''@;'; put 'put ''XFwoIiQiIywjIzBcXCknLDY1OiciJCIjLCMjMC4wMF8pO1xcKCIkIiMsIyMwLjAwXFwpJyw2NjonIiQiIywjIzAuMDBfKTtbUmVkXVxcKCIkIiMsIyMwLjAwXFwpJyw2NzoiMCUiLDY4OiIwLjAwJSIsNjk6IiMgPy8/Iiw3MDoiIyA/Py8/PyIsNzE6Im0vZC95eSIsNzI6Im0vZC95eSIsNzM6''@;'; put 'put ''ImQtbW1tLXl5Iiw3NDoiZC1tbW0iLDc1OiJtbW0teXkiLDc2OiJoOm1tIiw3NzoiaDptbTpzcyIsNzg6Im0vZC95eSBoOm1tIiw3OToibW06c3MiLDgwOiJbaF06bW06c3MiLDgxOiJtbXNzLjAifSxQZT0vW2REXSt8W21NXSt8W3lZZUVdK3xbSGhdK3xbU3NdKy9nOyFmdW5jdGlvbihIKXtI''@;'; put 'put ''LnZlcnNpb249IjEuMi4wIjt2YXIgWD1mdW5jdGlvbiBpZSgpe2Zvcih2YXIgamU9MCxZZT1uZXcgQXJyYXkoMjU2KSxNdD0wOzI1NiE9TXQ7KytNdClZZVtNdF09amU9MSYoamU9MSYoamU9MSYoamU9MSYoamU9MSYoamU9MSYoamU9MSYoamU9MSYoamU9TXQpPy0zMDY2NzQ5MTJeamU+Pj4x''@;'; put 'put ''OmplPj4+MSk/LTMwNjY3NDkxMl5qZT4+PjE6amU+Pj4xKT8tMzA2Njc0OTEyXmplPj4+MTpqZT4+PjEpPy0zMDY2NzQ5MTJeamU+Pj4xOmplPj4+MSk/LTMwNjY3NDkxMl5qZT4+PjE6amU+Pj4xKT8tMzA2Njc0OTEyXmplPj4+MTpqZT4+PjEpPy0zMDY2NzQ5MTJeamU+Pj4xOmplPj4+MSk/''@;'; put 'put ''LTMwNjY3NDkxMl5qZT4+PjE6amU+Pj4xO3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgSW50MzJBcnJheT9uZXcgSW50MzJBcnJheShZZSk6WWV9KCk7SC50YWJsZT1YLEguYnN0cj1mdW5jdGlvbiB3ZShqZSxZZSl7Zm9yKHZhciBNdD0tMV5ZZSx4dD1qZS5sZW5ndGgtMSxSdD0wO1J0PHh0''@;'; put 'put ''OylNdD0oTXQ9TXQ+Pj44XlhbMjU1JihNdF5qZS5jaGFyQ29kZUF0KFJ0KyspKV0pPj4+OF5YWzI1NSYoTXReamUuY2hhckNvZGVBdChSdCsrKSldO3JldHVybiBSdD09PXh0JiYoTXQ9TXQ+Pj44XlhbMjU1JihNdF5qZS5jaGFyQ29kZUF0KFJ0KSldKSwtMV5NdH0sSC5idWY9ZnVuY3Rpb24g''@;'; put 'put ''eGUoamUsWWUpe2lmKGplLmxlbmd0aD4xZTQpcmV0dXJuIGZ1bmN0aW9uIEZlKGplLFllKXtmb3IodmFyIE10PS0xXlllLHh0PWplLmxlbmd0aC03LFJ0PTA7UnQ8eHQ7KU10PShNdD0oTXQ9KE10PShNdD0oTXQ9KE10PShNdD1NdD4+PjheWFsyNTUmKE10XmplW1J0KytdKV0pPj4+OF5YWzI1''@;'; put 'put ''NSYoTXReamVbUnQrK10pXSk+Pj44XlhbMjU1JihNdF5qZVtSdCsrXSldKT4+PjheWFsyNTUmKE10XmplW1J0KytdKV0pPj4+OF5YWzI1NSYoTXReamVbUnQrK10pXSk+Pj44XlhbMjU1JihNdF5qZVtSdCsrXSldKT4+PjheWFsyNTUmKE10XmplW1J0KytdKV0pPj4+OF5YWzI1NSYoTXReamVb''@;'; put 'put ''UnQrK10pXTtmb3IoO1J0PHh0Kzc7KU10PU10Pj4+OF5YWzI1NSYoTXReamVbUnQrK10pXTtyZXR1cm4tMV5NdH0oamUsWWUpO2Zvcih2YXIgTXQ9LTFeWWUseHQ9amUubGVuZ3RoLTMsUnQ9MDtSdDx4dDspTXQ9KE10PShNdD0oTXQ9TXQ+Pj44XlhbMjU1JihNdF5qZVtSdCsrXSldKT4+Pjhe''@;'; put 'put ''WFsyNTUmKE10XmplW1J0KytdKV0pPj4+OF5YWzI1NSYoTXReamVbUnQrK10pXSk+Pj44XlhbMjU1JihNdF5qZVtSdCsrXSldO2Zvcig7UnQ8eHQrMzspTXQ9TXQ+Pj44XlhbMjU1JihNdF5qZVtSdCsrXSldO3JldHVybi0xXk10fSxILnN0cj1mdW5jdGlvbiBaZShqZSxZZSl7Zm9yKHZhciBV''@;'; put 'put ''dCxubixNdD0tMV5ZZSx4dD0wLFJ0PWplLmxlbmd0aDt4dDxSdDspKFV0PWplLmNoYXJDb2RlQXQoeHQrKykpPDEyOD9NdD1NdD4+PjheWFsyNTUmKE10XlV0KV06VXQ8MjA0OD9NdD0oTXQ9TXQ+Pj44XlhbMjU1JihNdF4oMTkyfFV0Pj42JjMxKSldKT4+PjheWFsyNTUmKE10XigxMjh8NjMm''@;'; put 'put ''VXQpKV06VXQ+PTU1Mjk2JiZVdDw1NzM0ND8oVXQ9NjQrKDEwMjMmVXQpLG5uPTEwMjMmamUuY2hhckNvZGVBdCh4dCsrKSxNdD0oTXQ9KE10PShNdD1NdD4+PjheWFsyNTUmKE10XigyNDB8VXQ+PjgmNykpXSk+Pj44XlhbMjU1JihNdF4oMTI4fFV0Pj4yJjYzKSldKT4+PjheWFsyNTUmKE10''@;'; put 'put ''XigxMjh8bm4+PjYmMTV8KDMmVXQpPDw0KSldKT4+PjheWFsyNTUmKE10XigxMjh8NjMmbm4pKV0pOk10PShNdD0oTXQ9TXQ+Pj44XlhbMjU1JihNdF4oMjI0fFV0Pj4xMiYxNSkpXSk+Pj44XlhbMjU1JihNdF4oMTI4fFV0Pj42JjYzKSldKT4+PjheWFsyNTUmKE10XigxMjh8NjMmVXQpKV07''@;'; put 'put ''cmV0dXJuLTFeTXR9fSh3dD17fSk7dmFyIHZ0LG10PWZ1bmN0aW9uKCl7dmFyIFllLGllPXt9O2Z1bmN0aW9uIHdlKGxyKXtpZigiLyI9PWxyLmNoYXJBdChsci5sZW5ndGgtMSkpcmV0dXJuLTE9PT1sci5zbGljZSgwLC0xKS5pbmRleE9mKCIvIik/bHI6d2UobHIuc2xpY2UoMCwtMSkpO3Zh''@;'; put 'put ''ciBCcj1sci5sYXN0SW5kZXhPZigiLyIpO3JldHVybi0xPT09QnI/bHI6bHIuc2xpY2UoMCxCcisxKX1mdW5jdGlvbiB4ZShscil7aWYoIi8iPT1sci5jaGFyQXQobHIubGVuZ3RoLTEpKXJldHVybiB4ZShsci5zbGljZSgwLC0xKSk7dmFyIEJyPWxyLmxhc3RJbmRleE9mKCIvIik7cmV0dXJu''@;'; put 'put ''LTE9PT1Ccj9scjpsci5zbGljZShCcisxKX1mdW5jdGlvbiBGZShscixCcil7InN0cmluZyI9PXR5cGVvZiBCciYmKEJyPW5ldyBEYXRlKEJyKSk7dmFyIGRyPUJyLmdldEhvdXJzKCk7ZHI9KGRyPWRyPDw2fEJyLmdldE1pbnV0ZXMoKSk8PDV8QnIuZ2V0U2Vjb25kcygpPj4+MSxsci53cml0''@;'; put 'put ''ZV9zaGlmdCgyLGRyKTt2YXIgV249QnIuZ2V0RnVsbFllYXIoKS0xOTgwO1duPShXbj1Xbjw8NHxCci5nZXRNb250aCgpKzEpPDw1fEJyLmdldERhdGUoKSxsci53cml0ZV9zaGlmdCgyLFduKX1mdW5jdGlvbiBqZShscil7S2wobHIsMCk7Zm9yKHZhciBCcj17fSxkcj0wO2xyLmw8PWxyLmxl''@;'; put 'put ''bmd0aC00Oyl7dmFyIFduPWxyLnJlYWRfc2hpZnQoMiksJG49bHIucmVhZF9zaGlmdCgyKSxicj1sci5sKyRuLFdyPXt9OzIxNTg5PT09V24mJigxJihkcj1sci5yZWFkX3NoaWZ0KDEpKSYmKFdyLm10aW1lPWxyLnJlYWRfc2hpZnQoNCkpLCRuPjUmJigyJmRyJiYoV3IuYXRpbWU9bHIucmVh''@;'; put 'put ''ZF9zaGlmdCg0KSksNCZkciYmKFdyLmN0aW1lPWxyLnJlYWRfc2hpZnQoNCkpKSxXci5tdGltZSYmKFdyLm10PW5ldyBEYXRlKDFlMypXci5tdGltZSkpKSxsci5sPWJyLEJyW1duXT1Xcn1yZXR1cm4gQnJ9ZnVuY3Rpb24gTXQoKXtyZXR1cm4gWWV8fChZZT1MKDc4NzczKSl9ZnVuY3Rpb24g''@;'; put 'put ''eHQobHIsQnIpe2lmKDgwPT1sclswXSYmNzU9PWxyWzFdKXJldHVybiBwMChscixCcik7aWYobHIubGVuZ3RoPDUxMil0aHJvdyBuZXcgRXJyb3IoIkNGQiBmaWxlIHNpemUgIitsci5sZW5ndGgrIiA8IDUxMiIpO3ZhciBkciwkbixicixXcix1aSxJaSxXbj01MTIsdTA9W10semk9bHIuc2xp''@;'; put 'put ''Y2UoMCw1MTIpO0tsKHppLDApO3ZhciBKMD1mdW5jdGlvbiBSdChscil7aWYoODA9PWxyW2xyLmxdJiY3NT09bHJbbHIubCsxXSlyZXR1cm5bMCwwXTtsci5jaGsoZGksIkhlYWRlciBTaWduYXR1cmU6ICIpLGxyLmwrPTE2O3ZhciBCcj1sci5yZWFkX3NoaWZ0KDIsInUiKTtyZXR1cm5bbHIu''@;'; put 'put ''cmVhZF9zaGlmdCgyLCJ1IiksQnJdfSh6aSk7c3dpdGNoKGRyPUowWzBdKXtjYXNlIDM6V249NTEyO2JyZWFrO2Nhc2UgNDpXbj00MDk2O2JyZWFrO2Nhc2UgMDppZigwPT1KMFsxXSlyZXR1cm4gcDAobHIsQnIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJNYWpvciBWZXJzaW9uOiBFeHBl''@;'; put 'put ''Y3RlZCAzIG9yIDQgc2F3ICIrZHIpfTUxMiE9PVduJiZLbCh6aT1sci5zbGljZSgwLFduKSwyOCk7dmFyIEkwPWxyLnNsaWNlKDAsV24pOyFmdW5jdGlvbiBVdChscixCcil7dmFyIGRyO3N3aXRjaChsci5sKz0yLGRyPWxyLnJlYWRfc2hpZnQoMikpe2Nhc2UgOTppZigzIT1Ccil0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIlNlY3RvciBTaGlmdDogRXhwZWN0ZWQgOSBzYXcgIitkcik7YnJlYWs7Y2FzZSAxMjppZig0IT1Ccil0aHJvdyBuZXcgRXJyb3IoIlNlY3RvciBTaGlmdDogRXhwZWN0ZWQgMTIgc2F3ICIrZHIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJTZWN0b3IgU2hpZnQ6''@;'; put 'put ''IEV4cGVjdGVkIDkgb3IgMTIgc2F3ICIrZHIpfWxyLmNoaygiMDYwMCIsIk1pbmkgU2VjdG9yIFNoaWZ0OiAiKSxsci5jaGsoIjAwMDAwMDAwMDAwMCIsIlJlc2VydmVkOiAiKX0oemksZHIpO3ZhciBlYT16aS5yZWFkX3NoaWZ0KDQsImkiKTtpZigzPT09ZHImJjAhPT1lYSl0aHJvdyBuZXcg''@;'; put 'put ''RXJyb3IoIiMgRGlyZWN0b3J5IFNlY3RvcnM6IEV4cGVjdGVkIDAgc2F3ICIrZWEpO3ppLmwrPTQsV3I9emkucmVhZF9zaGlmdCg0LCJpIiksemkubCs9NCx6aS5jaGsoIjAwMTAwMDAwIiwiTWluaSBTdHJlYW0gQ3V0b2ZmIFNpemU6ICIpLHVpPXppLnJlYWRfc2hpZnQoNCwiaSIpLCRuPXpp''@;'; put 'put ''LnJlYWRfc2hpZnQoNCwiaSIpLElpPXppLnJlYWRfc2hpZnQoNCwiaSIpLGJyPXppLnJlYWRfc2hpZnQoNCwiaSIpO2Zvcih2YXIgWW89LTEseW89MDt5bzwxMDkmJiEoKFlvPXppLnJlYWRfc2hpZnQoNCwiaSIpKTwwKTsrK3lvKXUwW3lvXT1Zbzt2YXIgJGE9ZnVuY3Rpb24gbm4obHIsQnIp''@;'; put 'put ''e2Zvcih2YXIgZHI9TWF0aC5jZWlsKGxyLmxlbmd0aC9CciktMSxXbj1bXSwkbj0xOyRuPGRyOysrJG4pV25bJG4tMV09bHIuc2xpY2UoJG4qQnIsKCRuKzEpKkJyKTtyZXR1cm4gV25bZHItMV09bHIuc2xpY2UoZHIqQnIpLFdufShscixXbik7enQoSWksYnIsJGEsV24sdTApO3ZhciBqcz1m''@;'; put 'put ''dW5jdGlvbiBUbihscixCcixkcixXbil7dmFyICRuPWxyLmxlbmd0aCxicj1bXSxXcj1bXSx1aT1bXSxJaT1bXSx1MD1Xbi0xLHppPTAsSjA9MCxJMD0wLGVhPTA7Zm9yKHppPTA7emk8JG47Kyt6aSlpZih1aT1bXSwoSTA9emkrQnIpPj0kbiYmKEkwLT0kbiksIVdyW0kwXSl7SWk9W107dmFy''@;'; put 'put ''IFlvPVtdO2ZvcihKMD1JMDtKMD49MDspe1lvW0owXT0hMCxXcltKMF09ITAsdWlbdWkubGVuZ3RoXT1KMCxJaS5wdXNoKGxyW0owXSk7dmFyIHlvPWRyW01hdGguZmxvb3IoNCpKMC9XbildO2lmKFduPDQrKGVhPTQqSjAmdTApKXRocm93IG5ldyBFcnJvcigiRkFUIGJvdW5kYXJ5IGNyb3Nz''@;'; put 'put ''ZWQ6ICIrSjArIiA0ICIrV24pO2lmKCFsclt5b118fFlvW0owPU5jKGxyW3lvXSxlYSldKWJyZWFrfWJyW0kwXT17bm9kZXM6dWksZGF0YTp2bihbSWldKX19cmV0dXJuIGJyfSgkYSxXcix1MCxXbik7anNbV3JdLm5hbWU9IiFEaXJlY3RvcnkiLCRuPjAmJnVpIT09Y3ImJihqc1t1aV0ubmFt''@;'; put 'put ''ZT0iIU1pbmlGQVQiKSxqc1t1MFswXV0ubmFtZT0iIUZBVCIsanMuZmF0X2FkZHJzPXUwLGpzLnNzej1Xbjt2YXIgT3U9W10scHM9W10sd3M9W107KGZ1bmN0aW9uIE9uKGxyLEJyLGRyLFduLCRuLGJyLFdyLHVpKXtmb3IodmFyIGVhLElpPTAsdTA9V24ubGVuZ3RoPzI6MCx6aT1Ccltscl0u''@;'; put 'put ''ZGF0YSxKMD0wLEkwPTA7SjA8emkubGVuZ3RoO0owKz0xMjgpe3ZhciBZbz16aS5zbGljZShKMCxKMCsxMjgpO0tsKFlvLDY0KSxJMD1Zby5yZWFkX3NoaWZ0KDIpLGVhPWdjKFlvLDAsSTAtdTApLFduLnB1c2goZWEpO3ZhciB5bz17bmFtZTplYSx0eXBlOllvLnJlYWRfc2hpZnQoMSksY29s''@;'; put 'put ''b3I6WW8ucmVhZF9zaGlmdCgxKSxMOllvLnJlYWRfc2hpZnQoNCwiaSIpLFI6WW8ucmVhZF9zaGlmdCg0LCJpIiksQzpZby5yZWFkX3NoaWZ0KDQsImkiKSxjbHNpZDpZby5yZWFkX3NoaWZ0KDE2KSxzdGF0ZTpZby5yZWFkX3NoaWZ0KDQsImkiKSxzdGFydDowLHNpemU6MH07MCE9PVlvLnJl''@;'; put 'put ''YWRfc2hpZnQoMikrWW8ucmVhZF9zaGlmdCgyKStZby5yZWFkX3NoaWZ0KDIpK1lvLnJlYWRfc2hpZnQoMikmJih5by5jdD1ZbihZbyxZby5sLTgpKSwwIT09WW8ucmVhZF9zaGlmdCgyKStZby5yZWFkX3NoaWZ0KDIpK1lvLnJlYWRfc2hpZnQoMikrWW8ucmVhZF9zaGlmdCgyKSYmKHlvLm10''@;'; put 'put ''PVluKFlvLFlvLmwtOCkpLHlvLnN0YXJ0PVlvLnJlYWRfc2hpZnQoNCwiaSIpLHlvLnNpemU9WW8ucmVhZF9zaGlmdCg0LCJpIikseW8uc2l6ZTwwJiZ5by5zdGFydDwwJiYoeW8uc2l6ZT15by50eXBlPTAseW8uc3RhcnQ9Y3IseW8ubmFtZT0iIiksNT09PXlvLnR5cGU/KElpPXlvLnN0YXJ0''@;'; put 'put ''LCRuPjAmJklpIT09Y3ImJihCcltJaV0ubmFtZT0iIVN0cmVhbURhdGEiKSk6eW8uc2l6ZT49NDA5Nj8oeW8uc3RvcmFnZT0iZmF0Iix2b2lkIDA9PT1Cclt5by5zdGFydF0mJihCclt5by5zdGFydF09UG4oZHIseW8uc3RhcnQsQnIuZmF0X2FkZHJzLEJyLnNzeikpLEJyW3lvLnN0YXJ0XS5u''@;'; put 'put ''YW1lPXlvLm5hbWUseW8uY29udGVudD1Cclt5by5zdGFydF0uZGF0YS5zbGljZSgwLHlvLnNpemUpKTooeW8uc3RvcmFnZT0ibWluaWZhdCIseW8uc2l6ZTwwP3lvLnNpemU9MDpJaSE9PWNyJiZ5by5zdGFydCE9PWNyJiZCcltJaV0mJih5by5jb250ZW50PUR0KHlvLEJyW0lpXS5kYXRhLChC''@;'; put 'put ''clt1aV18fHt9KS5kYXRhKSkpLHlvLmNvbnRlbnQmJktsKHlvLmNvbnRlbnQsMCksYnJbZWFdPXlvLFdyLnB1c2goeW8pfX0pKFdyLGpzLCRhLE91LCRuLHt9LHBzLHVpKSxmdW5jdGlvbiBDbihscixCcixkcil7Zm9yKHZhciBXbj0wLCRuPTAsYnI9MCxXcj0wLHVpPTAsSWk9ZHIubGVuZ3Ro''@;'; put 'put ''LHUwPVtdLHppPVtdO1duPElpOysrV24pdTBbV25dPXppW1duXT1XbixCcltXbl09ZHJbV25dO2Zvcig7dWk8emkubGVuZ3RoOysrdWkpJG49bHJbV249emlbdWldXS5MLGJyPWxyW1duXS5SLFdyPWxyW1duXS5DLHUwW1duXT09PVduJiYoLTEhPT0kbiYmdTBbJG5dIT09JG4mJih1MFtXbl09''@;'; put 'put ''dTBbJG5dKSwtMSE9PWJyJiZ1MFticl0hPT1iciYmKHUwW1duXT11MFticl0pKSwtMSE9PVdyJiYodTBbV3JdPVduKSwtMSE9PSRuJiZXbiE9dTBbV25dJiYodTBbJG5dPXUwW1duXSx6aS5sYXN0SW5kZXhPZigkbik8dWkmJnppLnB1c2goJG4pKSwtMSE9PWJyJiZXbiE9dTBbV25dJiYodTBb''@;'; put 'put ''YnJdPXUwW1duXSx6aS5sYXN0SW5kZXhPZihicik8dWkmJnppLnB1c2goYnIpKTtmb3IoV249MTtXbjxJaTsrK1duKXUwW1duXT09PVduJiYoLTEhPT1iciYmdTBbYnJdIT09YnI/dTBbV25dPXUwW2JyXTotMSE9PSRuJiZ1MFskbl0hPT0kbiYmKHUwW1duXT11MFskbl0pKTtmb3IoV249MTtX''@;'; put 'put ''bjxJaTsrK1duKWlmKDAhPT1scltXbl0udHlwZSl7aWYoKHVpPVduKSE9dTBbdWldKWRve0JyW1duXT1Cclt1aT11MFt1aV1dKyIvIitCcltXbl19d2hpbGUoMCE9PXVpJiYtMSE9PXUwW3VpXSYmdWkhPXUwW3VpXSk7dTBbV25dPS0xfWZvcihCclswXSs9Ii8iLFduPTE7V248SWk7KytXbiky''@;'; put 'put ''IT09bHJbV25dLnR5cGUmJihCcltXbl0rPSIvIil9KHBzLHdzLE91KSxPdS5zaGlmdCgpO3ZhciBFcz17RmlsZUluZGV4OnBzLEZ1bGxQYXRoczp3c307cmV0dXJuIEJyJiZCci5yYXcmJihFcy5yYXc9e2hlYWRlcjpJMCxzZWN0b3JzOiRhfSksRXN9ZnVuY3Rpb24gRHQobHIsQnIsZHIpe2Zv''@;'; put 'put ''cih2YXIgJG49bHIuc2l6ZSxicj1bXSxXcj1sci5zdGFydDtkciYmJG4+MCYmV3I+PTA7KWJyLnB1c2goQnIuc2xpY2UoV3Iqb2ksV3Iqb2krb2kpKSwkbi09b2ksV3I9TmMoZHIsNCpXcik7cmV0dXJuIDA9PT1ici5sZW5ndGg/UmkoMCk6Vihicikuc2xpY2UoMCxsci5zaXplKX1mdW5jdGlv''@;'; put 'put ''biB6dChscixCcixkcixXbiwkbil7dmFyIGJyPWNyO2lmKGxyPT09Y3Ipe2lmKDAhPT1Ccil0aHJvdyBuZXcgRXJyb3IoIkRJRkFUIGNoYWluIHNob3J0ZXIgdGhhbiBleHBlY3RlZCIpfWVsc2UgaWYoLTEhPT1scil7dmFyIFdyPWRyW2xyXSx1aT0oV24+Pj4yKS0xO2lmKCFXcilyZXR1cm47''@;'; put 'put ''Zm9yKHZhciBJaT0wO0lpPHVpJiYoYnI9TmMoV3IsNCpJaSkpIT09Y3I7KytJaSkkbi5wdXNoKGJyKTt6dChOYyhXcixXbi00KSxCci0xLGRyLFduLCRuKX19ZnVuY3Rpb24gUG4obHIsQnIsZHIsV24sJG4pe3ZhciBicj1bXSxXcj1bXTskbnx8KCRuPVtdKTt2YXIgdWk9V24tMSxJaT0wLHUw''@;'; put 'put ''PTA7Zm9yKElpPUJyO0lpPj0wOyl7JG5bSWldPSEwLGJyW2JyLmxlbmd0aF09SWksV3IucHVzaChscltJaV0pO3ZhciB6aT1kcltNYXRoLmZsb29yKDQqSWkvV24pXTtpZihXbjw0Kyh1MD00KklpJnVpKSl0aHJvdyBuZXcgRXJyb3IoIkZBVCBib3VuZGFyeSBjcm9zc2VkOiAiK0lpKyIgNCAi''@;'; put 'put ''K1duKTtpZighbHJbemldKWJyZWFrO0lpPU5jKGxyW3ppXSx1MCl9cmV0dXJue25vZGVzOmJyLGRhdGE6dm4oW1dyXSl9fWZ1bmN0aW9uIFluKGxyLEJyKXtyZXR1cm4gbmV3IERhdGUoMWUzKihZbChscixCcis0KS8xZTcqTWF0aC5wb3coMiwzMikrWWwobHIsQnIpLzFlNy0xMTY0NDQ3MzYw''@;'; put 'put ''MCkpfWZ1bmN0aW9uIHlyKGxyLEJyKXt2YXIgZHI9QnJ8fHt9LFduPWRyLnJvb3R8fCJSb290IEVudHJ5IjtpZihsci5GdWxsUGF0aHN8fChsci5GdWxsUGF0aHM9W10pLGxyLkZpbGVJbmRleHx8KGxyLkZpbGVJbmRleD1bXSksbHIuRnVsbFBhdGhzLmxlbmd0aCE9PWxyLkZpbGVJbmRleC5s''@;'; put 'put ''ZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJpbmNvbnNpc3RlbnQgQ0ZCIHN0cnVjdHVyZSIpOzA9PT1sci5GdWxsUGF0aHMubGVuZ3RoJiYobHIuRnVsbFBhdGhzWzBdPVduKyIvIixsci5GaWxlSW5kZXhbMF09e25hbWU6V24sdHlwZTo1fSksZHIuQ0xTSUQmJihsci5GaWxlSW5kZXhbMF0uY2xz''@;'; put 'put ''aWQ9ZHIuQ0xTSUQpLGZ1bmN0aW9uIGFyKGxyKXt2YXIgQnI9Ilx4MDFTaDMzdEo1IjtpZighbXQuZmluZChsciwiLyIrQnIpKXt2YXIgZHI9UmkoNCk7ZHJbMF09NTUsZHJbMV09ZHJbM109NTAsZHJbMl09NTQsbHIuRmlsZUluZGV4LnB1c2goe25hbWU6QnIsdHlwZToyLGNvbnRlbnQ6ZHIs''@;'; put 'put ''c2l6ZTo0LEw6NjksUjo2OSxDOjY5fSksbHIuRnVsbFBhdGhzLnB1c2gobHIuRnVsbFBhdGhzWzBdK0JyKSxHcihscil9fShscil9ZnVuY3Rpb24gR3IobHIsQnIpe3lyKGxyKTtmb3IodmFyIGRyPSExLFduPSExLCRuPWxyLkZ1bGxQYXRocy5sZW5ndGgtMTskbj49MDstLSRuKXt2YXIgYnI9''@;'; put 'put ''bHIuRmlsZUluZGV4WyRuXTtzd2l0Y2goYnIudHlwZSl7Y2FzZSAwOlduP2RyPSEwOihsci5GaWxlSW5kZXgucG9wKCksbHIuRnVsbFBhdGhzLnBvcCgpKTticmVhaztjYXNlIDE6Y2FzZSAyOmNhc2UgNTpXbj0hMCxpc05hTihici5SKmJyLkwqYnIuQykmJihkcj0hMCksYnIuUj4tMSYmYnIu''@;'; put 'put ''TD4tMSYmYnIuUj09YnIuTCYmKGRyPSEwKTticmVhaztkZWZhdWx0OmRyPSEwfX1pZihkcnx8QnIpe3ZhciBXcj1uZXcgRGF0ZSgxOTg3LDEsMTkpLHVpPTAsSWk9W107Zm9yKCRuPTA7JG48bHIuRnVsbFBhdGhzLmxlbmd0aDsrKyRuKTAhPT1sci5GaWxlSW5kZXhbJG5dLnR5cGUmJklpLnB1''@;'; put 'put ''c2goW2xyLkZ1bGxQYXRoc1skbl0sbHIuRmlsZUluZGV4WyRuXV0pO2Zvcigkbj0wOyRuPElpLmxlbmd0aDsrKyRuKXt2YXIgdTA9d2UoSWlbJG5dWzBdKTtmb3IoV249ITEsdWk9MDt1aTxJaS5sZW5ndGg7Kyt1aSlJaVt1aV1bMF09PT11MCYmKFduPSEwKTtXbnx8SWkucHVzaChbdTAse25h''@;'; put 'put ''bWU6eGUodTApLnJlcGxhY2UoIi8iLCIiKSx0eXBlOjEsY2xzaWQ6VWksY3Q6V3IsbXQ6V3IsY29udGVudDpudWxsfV0pfWZvcihJaS5zb3J0KGZ1bmN0aW9uKEkwLGVhKXtyZXR1cm4gZnVuY3Rpb24gWChscixCcil7Zm9yKHZhciBkcj1sci5zcGxpdCgiLyIpLFduPUJyLnNwbGl0KCIvIiks''@;'; put 'put ''JG49MCxicj0wLFdyPU1hdGgubWluKGRyLmxlbmd0aCxXbi5sZW5ndGgpOyRuPFdyOysrJG4pe2lmKGJyPWRyWyRuXS5sZW5ndGgtV25bJG5dLmxlbmd0aClyZXR1cm4gYnI7aWYoZHJbJG5dIT1Xblskbl0pcmV0dXJuIGRyWyRuXTxXblskbl0/LTE6MX1yZXR1cm4gZHIubGVuZ3RoLVduLmxl''@;'; put 'put ''bmd0aH0oSTBbMF0sZWFbMF0pfSksbHIuRnVsbFBhdGhzPVtdLGxyLkZpbGVJbmRleD1bXSwkbj0wOyRuPElpLmxlbmd0aDsrKyRuKWxyLkZ1bGxQYXRoc1skbl09SWlbJG5dWzBdLGxyLkZpbGVJbmRleFskbl09SWlbJG5dWzFdO2Zvcigkbj0wOyRuPElpLmxlbmd0aDsrKyRuKXt2YXIgemk9''@;'; put 'put ''bHIuRmlsZUluZGV4WyRuXSxKMD1sci5GdWxsUGF0aHNbJG5dO2lmKHppLm5hbWU9eGUoSjApLnJlcGxhY2UoIi8iLCIiKSx6aS5MPXppLlI9emkuQz0tKHppLmNvbG9yPTEpLHppLnNpemU9emkuY29udGVudD96aS5jb250ZW50Lmxlbmd0aDowLHppLnN0YXJ0PTAsemkuY2xzaWQ9emkuY2xz''@;'; put 'put ''aWR8fFVpLDA9PT0kbil6aS5DPUlpLmxlbmd0aD4xPzE6LTEsemkuc2l6ZT0wLHppLnR5cGU9NTtlbHNlIGlmKCIvIj09SjAuc2xpY2UoLTEpKXtmb3IodWk9JG4rMTt1aTxJaS5sZW5ndGgmJndlKGxyLkZ1bGxQYXRoc1t1aV0pIT1KMDsrK3VpKTtmb3IoemkuQz11aT49SWkubGVuZ3RoPy0x''@;'; put 'put ''OnVpLHVpPSRuKzE7dWk8SWkubGVuZ3RoJiZ3ZShsci5GdWxsUGF0aHNbdWldKSE9d2UoSjApOysrdWkpO3ppLlI9dWk+PUlpLmxlbmd0aD8tMTp1aSx6aS50eXBlPTF9ZWxzZSB3ZShsci5GdWxsUGF0aHNbJG4rMV18fCIiKT09d2UoSjApJiYoemkuUj0kbisxKSx6aS50eXBlPTJ9fX1mdW5j''@;'; put 'put ''dGlvbiB6cihscixCcil7dmFyIGRyPUJyfHx7fTtpZihHcihsciksInppcCI9PWRyLmZpbGVUeXBlKXJldHVybiBmdW5jdGlvbiBBbChscixCcil7dmFyIGRyPUJyfHx7fSxXbj1bXSwkbj1bXSxicj1SaSgxKSxXcj1kci5jb21wcmVzc2lvbj84OjAsdTA9MCx6aT0wLEowPTAsSTA9MCxlYT1s''@;'; put 'put ''ci5GdWxsUGF0aHNbMF0sWW89ZWEseW89bHIuRmlsZUluZGV4WzBdLCRhPVtdLGpzPTA7Zm9yKHUwPTE7dTA8bHIuRnVsbFBhdGhzLmxlbmd0aDsrK3UwKWlmKFlvPWxyLkZ1bGxQYXRoc1t1MF0uc2xpY2UoZWEubGVuZ3RoKSwoeW89bHIuRmlsZUluZGV4W3UwXSkuc2l6ZSYmeW8uY29udGVu''@;'; put 'put ''dCYmIlx4MDFTaDMzdEo1IiE9WW8pe3ZhciBFYz1KMCxPdT1SaShZby5sZW5ndGgpO2Zvcih6aT0wO3ppPFlvLmxlbmd0aDsrK3ppKU91LndyaXRlX3NoaWZ0KDEsMTI3JllvLmNoYXJDb2RlQXQoemkpKTtPdT1PdS5zbGljZSgwLE91LmwpLCRhW0kwXT13dC5idWYoeW8uY29udGVudCwwKTt2''@;'; put 'put ''YXIgcHM9eW8uY29udGVudDs4PT1XciYmKHBzPWtpKHBzKSksKGJyPVJpKDMwKSkud3JpdGVfc2hpZnQoNCw2NzMyNDc1MiksYnIud3JpdGVfc2hpZnQoMiwyMCksYnIud3JpdGVfc2hpZnQoMiwwKSxici53cml0ZV9zaGlmdCgyLFdyKSx5by5tdD9GZShicix5by5tdCk6YnIud3JpdGVfc2hp''@;'; put 'put ''ZnQoNCwwKSxici53cml0ZV9zaGlmdCgtNCwkYVtJMF0pLGJyLndyaXRlX3NoaWZ0KDQscHMubGVuZ3RoKSxici53cml0ZV9zaGlmdCg0LHlvLmNvbnRlbnQubGVuZ3RoKSxici53cml0ZV9zaGlmdCgyLE91Lmxlbmd0aCksYnIud3JpdGVfc2hpZnQoMiwwKSxKMCs9YnIubGVuZ3RoLFduLnB1''@;'; put 'put ''c2goYnIpLEowKz1PdS5sZW5ndGgsV24ucHVzaChPdSksSjArPXBzLmxlbmd0aCxXbi5wdXNoKHBzKSwoYnI9UmkoNDYpKS53cml0ZV9zaGlmdCg0LDMzNjM5MjQ4KSxici53cml0ZV9zaGlmdCgyLDApLGJyLndyaXRlX3NoaWZ0KDIsMjApLGJyLndyaXRlX3NoaWZ0KDIsMCksYnIud3JpdGVf''@;'; put 'put ''c2hpZnQoMixXciksYnIud3JpdGVfc2hpZnQoNCwwKSxici53cml0ZV9zaGlmdCgtNCwkYVtJMF0pLGJyLndyaXRlX3NoaWZ0KDQscHMubGVuZ3RoKSxici53cml0ZV9zaGlmdCg0LHlvLmNvbnRlbnQubGVuZ3RoKSxici53cml0ZV9zaGlmdCgyLE91Lmxlbmd0aCksYnIud3JpdGVfc2hpZnQo''@;'; put 'put ''MiwwKSxici53cml0ZV9zaGlmdCgyLDApLGJyLndyaXRlX3NoaWZ0KDIsMCksYnIud3JpdGVfc2hpZnQoMiwwKSxici53cml0ZV9zaGlmdCg0LDApLGJyLndyaXRlX3NoaWZ0KDQsRWMpLGpzKz1ici5sLCRuLnB1c2goYnIpLGpzKz1PdS5sZW5ndGgsJG4ucHVzaChPdSksKytJMH1yZXR1cm4o''@;'; put 'put ''YnI9UmkoMjIpKS53cml0ZV9zaGlmdCg0LDEwMTAxMDI1NiksYnIud3JpdGVfc2hpZnQoMiwwKSxici53cml0ZV9zaGlmdCgyLDApLGJyLndyaXRlX3NoaWZ0KDIsSTApLGJyLndyaXRlX3NoaWZ0KDIsSTApLGJyLndyaXRlX3NoaWZ0KDQsanMpLGJyLndyaXRlX3NoaWZ0KDQsSjApLGJyLndy''@;'; put 'put ''aXRlX3NoaWZ0KDIsMCksVihbVihXbiksVigkbiksYnJdKX0obHIsZHIpO3ZhciBXbj1mdW5jdGlvbihlYSl7Zm9yKHZhciBZbz0wLHlvPTAsJGE9MDskYTxlYS5GaWxlSW5kZXgubGVuZ3RoOysrJGEpe3ZhciBqcz1lYS5GaWxlSW5kZXhbJGFdO2lmKGpzLmNvbnRlbnQpe3ZhciBFYz1qcy5j''@;'; put 'put ''b250ZW50Lmxlbmd0aDtFYz4wJiYoRWM8NDA5Nj9Zbys9RWMrNjM+PjY6eW8rPUVjKzUxMT4+OSl9fWZvcih2YXIgT3U9ZWEuRnVsbFBhdGhzLmxlbmd0aCszPj4yLHdzPVlvKzEyNz4+NyxFcz0oWW8rNz4+MykreW8rT3Urd3MsazE9RXMrMTI3Pj43LHI3PWsxPD0xMDk/MDpNYXRoLmNlaWwo''@;'; put 'put ''KGsxLTEwOSkvMTI3KTtFcytrMStyNysxMjc+Pjc+azE7KXI3PSsrazE8PTEwOT8wOk1hdGguY2VpbCgoazEtMTA5KS8xMjcpO3ZhciBXZD1bMSxyNyxrMSx3cyxPdSx5byxZbywwXTtyZXR1cm4gZWEuRmlsZUluZGV4WzBdLnNpemU9WW88PDYsV2RbN109KGVhLkZpbGVJbmRleFswXS5zdGFy''@;'; put 'put ''dD1XZFswXStXZFsxXStXZFsyXStXZFszXStXZFs0XStXZFs1XSkrKFdkWzZdKzc+PjMpLFdkfShsciksJG49UmkoV25bN108PDkpLGJyPTAsV3I9MDtmb3IoYnI9MDticjw4OysrYnIpJG4ud3JpdGVfc2hpZnQoMSx2MFticl0pO2Zvcihicj0wO2JyPDg7Kyticikkbi53cml0ZV9zaGlmdCgy''@;'; put 'put ''LDApO2Zvcigkbi53cml0ZV9zaGlmdCgyLDYyKSwkbi53cml0ZV9zaGlmdCgyLDMpLCRuLndyaXRlX3NoaWZ0KDIsNjU1MzQpLCRuLndyaXRlX3NoaWZ0KDIsOSksJG4ud3JpdGVfc2hpZnQoMiw2KSxicj0wO2JyPDM7Kyticikkbi53cml0ZV9zaGlmdCgyLDApO2Zvcigkbi53cml0ZV9zaGlm''@;'; put 'put ''dCg0LDApLCRuLndyaXRlX3NoaWZ0KDQsV25bMl0pLCRuLndyaXRlX3NoaWZ0KDQsV25bMF0rV25bMV0rV25bMl0rV25bM10tMSksJG4ud3JpdGVfc2hpZnQoNCwwKSwkbi53cml0ZV9zaGlmdCg0LDQwOTYpLCRuLndyaXRlX3NoaWZ0KDQsV25bM10/V25bMF0rV25bMV0rV25bMl0tMTpjciks''@;'; put 'put ''JG4ud3JpdGVfc2hpZnQoNCxXblszXSksJG4ud3JpdGVfc2hpZnQoLTQsV25bMV0/V25bMF0tMTpjciksJG4ud3JpdGVfc2hpZnQoNCxXblsxXSksYnI9MDticjwxMDk7Kyticikkbi53cml0ZV9zaGlmdCgtNCxicjxXblsyXT9XblsxXSticjotMSk7aWYoV25bMV0pZm9yKFdyPTA7V3I8V25b''@;'; put 'put ''MV07KytXcil7Zm9yKDticjwyMzYrMTI3KldyOysrYnIpJG4ud3JpdGVfc2hpZnQoLTQsYnI8V25bMl0/V25bMV0rYnI6LTEpOyRuLndyaXRlX3NoaWZ0KC00LFdyPT09V25bMV0tMT9jcjpXcisxKX12YXIgdWk9ZnVuY3Rpb24oZWEpe2ZvcihXcis9ZWE7YnI8V3ItMTsrK2JyKSRuLndyaXRl''@;'; put 'put ''X3NoaWZ0KC00LGJyKzEpO2VhJiYoKyticiwkbi53cml0ZV9zaGlmdCgtNCxjcikpfTtmb3IoV3I9YnI9MCxXcis9V25bMV07YnI8V3I7Kyticikkbi53cml0ZV9zaGlmdCgtNCx0by5ESUZTRUNUKTtmb3IoV3IrPVduWzJdO2JyPFdyOysrYnIpJG4ud3JpdGVfc2hpZnQoLTQsdG8uRkFUU0VD''@;'; put 'put ''VCk7dWkoV25bM10pLHVpKFduWzRdKTtmb3IodmFyIElpPTAsdTA9MCx6aT1sci5GaWxlSW5kZXhbMF07SWk8bHIuRmlsZUluZGV4Lmxlbmd0aDsrK0lpKSh6aT1sci5GaWxlSW5kZXhbSWldKS5jb250ZW50JiYhKCh1MD16aS5jb250ZW50Lmxlbmd0aCk8NDA5NikmJih6aS5zdGFydD1Xcix1''@;'; put 'put ''aSh1MCs1MTE+PjkpKTtmb3IodWkoV25bNl0rNz4+Myk7NTExJiRuLmw7KSRuLndyaXRlX3NoaWZ0KC00LHRvLkVORE9GQ0hBSU4pO2ZvcihXcj1icj0wLElpPTA7SWk8bHIuRmlsZUluZGV4Lmxlbmd0aDsrK0lpKSh6aT1sci5GaWxlSW5kZXhbSWldKS5jb250ZW50JiYodTA9emkuY29udGVu''@;'; put 'put ''dC5sZW5ndGgpJiYhKHUwPj00MDk2KSYmKHppLnN0YXJ0PVdyLHVpKHUwKzYzPj42KSk7Zm9yKDs1MTEmJG4ubDspJG4ud3JpdGVfc2hpZnQoLTQsdG8uRU5ET0ZDSEFJTik7Zm9yKGJyPTA7YnI8V25bNF08PDI7Kyticil7dmFyIEowPWxyLkZ1bGxQYXRoc1ticl07aWYoSjAmJjAhPT1KMC5s''@;'; put 'put ''ZW5ndGgpe3ppPWxyLkZpbGVJbmRleFticl0sMD09PWJyJiYoemkuc3RhcnQ9emkuc2l6ZT96aS5zdGFydC0xOmNyKTt2YXIgSTA9MD09PWJyJiZkci5yb290fHx6aS5uYW1lO2lmKHUwPTIqKEkwLmxlbmd0aCsxKSwkbi53cml0ZV9zaGlmdCg2NCxJMCwidXRmMTZsZSIpLCRuLndyaXRlX3No''@;'; put 'put ''aWZ0KDIsdTApLCRuLndyaXRlX3NoaWZ0KDEsemkudHlwZSksJG4ud3JpdGVfc2hpZnQoMSx6aS5jb2xvciksJG4ud3JpdGVfc2hpZnQoLTQsemkuTCksJG4ud3JpdGVfc2hpZnQoLTQsemkuUiksJG4ud3JpdGVfc2hpZnQoLTQsemkuQyksemkuY2xzaWQpJG4ud3JpdGVfc2hpZnQoMTYsemku''@;'; put 'put ''Y2xzaWQsImhleCIpO2Vsc2UgZm9yKElpPTA7SWk8NDsrK0lpKSRuLndyaXRlX3NoaWZ0KDQsMCk7JG4ud3JpdGVfc2hpZnQoNCx6aS5zdGF0ZXx8MCksJG4ud3JpdGVfc2hpZnQoNCwwKSwkbi53cml0ZV9zaGlmdCg0LDApLCRuLndyaXRlX3NoaWZ0KDQsMCksJG4ud3JpdGVfc2hpZnQoNCww''@;'; put 'put ''KSwkbi53cml0ZV9zaGlmdCg0LHppLnN0YXJ0KSwkbi53cml0ZV9zaGlmdCg0LHppLnNpemUpLCRuLndyaXRlX3NoaWZ0KDQsMCl9ZWxzZXtmb3IoSWk9MDtJaTwxNzsrK0lpKSRuLndyaXRlX3NoaWZ0KDQsMCk7Zm9yKElpPTA7SWk8MzsrK0lpKSRuLndyaXRlX3NoaWZ0KDQsLTEpO2ZvcihJ''@;'; put 'put ''aT0wO0lpPDEyOysrSWkpJG4ud3JpdGVfc2hpZnQoNCwwKX19Zm9yKGJyPTE7YnI8bHIuRmlsZUluZGV4Lmxlbmd0aDsrK2JyKWlmKCh6aT1sci5GaWxlSW5kZXhbYnJdKS5zaXplPj00MDk2KXtmb3IoJG4ubD16aS5zdGFydCsxPDw5LElpPTA7SWk8emkuc2l6ZTsrK0lpKSRuLndyaXRlX3No''@;'; put 'put ''aWZ0KDEsemkuY29udGVudFtJaV0pO2Zvcig7NTExJklpOysrSWkpJG4ud3JpdGVfc2hpZnQoMSwwKX1mb3IoYnI9MTticjxsci5GaWxlSW5kZXgubGVuZ3RoOysrYnIpaWYoKHppPWxyLkZpbGVJbmRleFticl0pLnNpemU+MCYmemkuc2l6ZTw0MDk2KXtmb3IoSWk9MDtJaTx6aS5zaXplOysr''@;'; put 'put ''SWkpJG4ud3JpdGVfc2hpZnQoMSx6aS5jb250ZW50W0lpXSk7Zm9yKDs2MyZJaTsrK0lpKSRuLndyaXRlX3NoaWZ0KDEsMCl9Zm9yKDskbi5sPCRuLmxlbmd0aDspJG4ud3JpdGVfc2hpZnQoMSwwKTtyZXR1cm4gJG59aWUudmVyc2lvbj0iMS4xLjQiO3ZhciBFaSxvaT02NCxjcj0tMixkaT0i''@;'; put 'put ''ZDBjZjExZTBhMWIxMWFlMSIsdjA9WzIwOCwyMDcsMTcsMjI0LDE2MSwxNzcsMjYsMjI1XSxVaT0iMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLHRvPXtNQVhSRUdTRUNUOi02LERJRlNFQ1Q6LTQsRkFUU0VDVDotMyxFTkRPRkNIQUlOOmNyLEZSRUVTRUNUOi0xLEhFQURFUl9T''@;'; put 'put ''SUdOQVRVUkU6ZGksSEVBREVSX01JTk9SX1ZFUlNJT046IjNlMDAiLE1BWFJFR1NJRDotNixOT1NUUkVBTTotMSxIRUFERVJfQ0xTSUQ6VWksRW50cnlUeXBlczpbInVua25vd24iLCJzdG9yYWdlIiwic3RyZWFtIiwibG9ja2J5dGVzIiwicHJvcGVydHkiLCJyb290Il19O2Z1bmN0aW9uIGJp''@;'; put 'put ''KGxyKXtmb3IodmFyIEJyPW5ldyBBcnJheShsci5sZW5ndGgpLGRyPTA7ZHI8bHIubGVuZ3RoOysrZHIpQnJbZHJdPVN0cmluZy5mcm9tQ2hhckNvZGUobHJbZHJdKTtyZXR1cm4gQnIuam9pbigiIil9ZnVuY3Rpb24ga2kobHIpe3JldHVybiBFaT9FaS5kZWZsYXRlUmF3U3luYyhscik6bDIo''@;'; put 'put ''bHIpfWZvcih2YXIgbHIsQnIsTjA9WzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdLHQwPVszLDQsNSw2LDcsOCw5LDEwLDExLDEzLDE1LDE3LDE5LDIzLDI3LDMxLDM1LDQzLDUxLDU5LDY3LDgzLDk5LDExNSwxMzEsMTYzLDE5NSwyMjcsMjU4XSxpbz1b''@;'; put 'put ''MSwyLDMsNCw1LDcsOSwxMywxNywyNSwzMyw0OSw2NSw5NywxMjksMTkzLDI1NywzODUsNTEzLDc2OSwxMDI1LDE1MzcsMjA0OSwzMDczLDQwOTcsNjE0NSw4MTkzLDEyMjg5LDE2Mzg1LDI0NTc3XSwkMD0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXksVmE9JDA/bmV3IFVpbnQ4QXJy''@;'; put 'put ''YXkoMjU2KTpbXSxqbz0wO2pvPDI1NjsrK2pvKVZhW2pvXT0odm9pZCAwLDI1NSYoKEJyPTEzOTUzNiYoKGxyPWpvKTw8MXxscjw8MTEpfDU1ODE0NCYobHI8PDV8bHI8PDE1KSk+PjE2fEJyPj44fEJyKSk7ZnVuY3Rpb24gd2EobHIsQnIpe3ZhciBkcj1WYVsyNTUmbHJdO3JldHVybiBCcjw9''@;'; put 'put ''OD9kcj4+PjgtQnI6KGRyPWRyPDw4fFZhW2xyPj44JjI1NV0sQnI8PTE2P2RyPj4+MTYtQnI6KGRyPWRyPDw4fFZhW2xyPj4xNiYyNTVdKT4+PjI0LUJyKX1mdW5jdGlvbiBhbyhscixCcil7dmFyIGRyPTcmQnIsV249QnI+Pj4zO3JldHVybihscltXbl18KGRyPD02PzA6bHJbV24rMV08PDgp''@;'; put 'put ''KT4+PmRyJjN9ZnVuY3Rpb24geDAobHIsQnIpe3ZhciBkcj03JkJyLFduPUJyPj4+MztyZXR1cm4obHJbV25dfChkcjw9NT8wOmxyW1duKzFdPDw4KSk+Pj5kciY3fWZ1bmN0aW9uIGpyKGxyLEJyKXt2YXIgZHI9NyZCcixXbj1Ccj4+PjM7cmV0dXJuKGxyW1duXXwoZHI8PTM/MDpscltXbisx''@;'; put 'put ''XTw8OCkpPj4+ZHImMzF9ZnVuY3Rpb24gSGkobHIsQnIpe3ZhciBkcj03JkJyLFduPUJyPj4+MztyZXR1cm4obHJbV25dfChkcjw9MT8wOmxyW1duKzFdPDw4KSk+Pj5kciYxMjd9ZnVuY3Rpb24gdm8obHIsQnIsZHIpe3ZhciBXbj03JkJyLCRuPUJyPj4+MyxXcj1sclskbl0+Pj5XbjtyZXR1''@;'; put 'put ''cm4gZHI8OC1Xbnx8KFdyfD1sclskbisxXTw8OC1XbixkcjwxNi1Xbil8fChXcnw9bHJbJG4rMl08PDE2LVduLGRyPDI0LVduKXx8KFdyfD1sclskbiszXTw8MjQtV24pLFdyJigxPDxkciktMX1mdW5jdGlvbiB4byhscixCcil7dmFyIGRyPWxyLmxlbmd0aCxXbj0yKmRyPkJyPzIqZHI6QnIr''@;'; put 'put ''NSwkbj0wO2lmKGRyPj1CcilyZXR1cm4gbHI7aWYoSWUpe3ZhciBicj1PKFduKTtpZihsci5jb3B5KWxyLmNvcHkoYnIpO2Vsc2UgZm9yKDskbjxsci5sZW5ndGg7Kyskbiliclskbl09bHJbJG5dO3JldHVybiBicn1pZigkMCl7dmFyIFdyPW5ldyBVaW50OEFycmF5KFduKTtpZihXci5zZXQp''@;'; put 'put ''V3Iuc2V0KGxyKTtlbHNlIGZvcig7JG48bHIubGVuZ3RoOysrJG4pV3JbJG5dPWxyWyRuXTtyZXR1cm4gV3J9cmV0dXJuIGxyLmxlbmd0aD1Xbixscn1mdW5jdGlvbiAkaShscil7Zm9yKHZhciBCcj1uZXcgQXJyYXkobHIpLGRyPTA7ZHI8bHI7KytkcilCcltkcl09MDtyZXR1cm4gQnJ9dmFy''@;'; put 'put ''IGwyPWZ1bmN0aW9uKEJyKXt2YXIgZHI9UmkoNTArTWF0aC5mbG9vcigxLjEqQnIubGVuZ3RoKSksV249ZnVuY3Rpb24oZHIsV24pe2Zvcih2YXIgJG49MDskbjxkci5sZW5ndGg7KXt2YXIgYnI9TWF0aC5taW4oNjU1MzUsZHIubGVuZ3RoLSRuKTtmb3IoV24ud3JpdGVfc2hpZnQoMSwrKCRu''@;'; put 'put ''K2JyPT1kci5sZW5ndGgpKSxXbi53cml0ZV9zaGlmdCgyLGJyKSxXbi53cml0ZV9zaGlmdCgyLDY1NTM1Jn5icik7YnItLSA+MDspV25bV24ubCsrXT1kclskbisrXX1yZXR1cm4gV24ubH0oQnIsZHIpO3JldHVybiBkci5zbGljZSgwLFduKX07ZnVuY3Rpb24gTWMobHIsQnIsZHIpe3ZhciBX''@;'; put 'put ''bj0xLCRuPTAsYnI9MCxXcj0wLHVpPTAsSWk9bHIubGVuZ3RoLHUwPSQwP25ldyBVaW50MTZBcnJheSgzMik6JGkoMzIpO2Zvcihicj0wO2JyPDMyOysrYnIpdTBbYnJdPTA7Zm9yKGJyPUlpO2JyPGRyOysrYnIpbHJbYnJdPTA7SWk9bHIubGVuZ3RoO3ZhciB6aT0kMD9uZXcgVWludDE2QXJy''@;'; put 'put ''YXkoSWkpOiRpKElpKTtmb3IoYnI9MDticjxJaTsrK2JyKXUwWyRuPWxyW2JyXV0rKyxXbjwkbiYmKFduPSRuKSx6aVticl09MDtmb3IodTBbMF09MCxicj0xO2JyPD1XbjsrK2JyKXUwW2JyKzE2XT11aT11aSt1MFtici0xXTw8MTtmb3IoYnI9MDticjxJaTsrK2JyKTAhPSh1aT1sclticl0p''@;'; put 'put ''JiYoemlbYnJdPXUwW3VpKzE2XSsrKTt2YXIgSjA9MDtmb3IoYnI9MDticjxJaTsrK2JyKWlmKDAhPShKMD1sclticl0pKWZvcih1aT13YSh6aVticl0sV24pPj5Xbi1KMCxXcj0oMTw8V24rNC1KMCktMTtXcj49MDstLVdyKUJyW3VpfFdyPDxKMF09MTUmSjB8YnI8PDQ7cmV0dXJuIFdufXZh''@;'; put 'put ''ciBwMj0kMD9uZXcgVWludDE2QXJyYXkoNTEyKTokaSg1MTIpLHJyPSQwP25ldyBVaW50MTZBcnJheSgzMik6JGkoMzIpO2lmKCEkMCl7Zm9yKHZhciBJcj0wO0lyPDUxMjsrK0lyKXAyW0lyXT0wO2ZvcihJcj0wO0lyPDMyOysrSXIpcnJbSXJdPTB9IWZ1bmN0aW9uKCl7Zm9yKHZhciBscj1b''@;'; put 'put ''XSxCcj0wO0JyPDMyO0JyKyspbHIucHVzaCg1KTtNYyhscixyciwzMik7dmFyIGRyPVtdO2ZvcihCcj0wO0JyPD0xNDM7QnIrKylkci5wdXNoKDgpO2Zvcig7QnI8PTI1NTtCcisrKWRyLnB1c2goOSk7Zm9yKDtCcjw9Mjc5O0JyKyspZHIucHVzaCg3KTtmb3IoO0JyPD0yODc7QnIrKylkci5w''@;'; put 'put ''dXNoKDgpO01jKGRyLHAyLDI4OCl9KCk7dmFyIFpyPSQwP25ldyBVaW50MTZBcnJheSgzMjc2OCk6JGkoMzI3NjgpLHFpPSQwP25ldyBVaW50MTZBcnJheSgzMjc2OCk6JGkoMzI3NjgpLHJpPSQwP25ldyBVaW50MTZBcnJheSgxMjgpOiRpKDEyOCkscjA9MSxwaT0xO2Z1bmN0aW9uIGUwKGxy''@;'; put 'put ''LEJyKXt2YXIgZHI9anIobHIsQnIpKzI1NyxXbj1qcihscixCcis9NSkrMSwkbj1mdW5jdGlvbiBoMChscixCcil7dmFyIGRyPTcmQnIsV249QnI+Pj4zO3JldHVybihscltXbl18KGRyPD00PzA6bHJbV24rMV08PDgpKT4+PmRyJjE1fShscixCcis9NSkrNDtCcis9NDtmb3IodmFyIGJyPTAs''@;'; put 'put ''V3I9JDA/bmV3IFVpbnQ4QXJyYXkoMTkpOiRpKDE5KSx1aT1bMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF0sSWk9MSx1MD0kMD9uZXcgVWludDhBcnJheSg4KTokaSg4KSx6aT0kMD9uZXcgVWludDhBcnJheSg4KTokaSg4KSxKMD1Xci5sZW5ndGgsSTA9MDtJMDwkbjsr''@;'; put 'put ''K0kwKVdyW04wW0kwXV09YnI9eDAobHIsQnIpLElpPGJyJiYoSWk9YnIpLHUwW2JyXSsrLEJyKz0zO3ZhciBlYT0wO2Zvcih1MFswXT0wLEkwPTE7STA8PUlpOysrSTApemlbSTBdPWVhPWVhK3UwW0kwLTFdPDwxO2ZvcihJMD0wO0kwPEowOysrSTApMCE9KGVhPVdyW0kwXSkmJih1aVtJMF09''@;'; put 'put ''emlbZWFdKyspO3ZhciBZbz0wO2ZvcihJMD0wO0kwPEowOysrSTApaWYoMCE9KFlvPVdyW0kwXSkpe2VhPVZhW3VpW0kwXV0+PjgtWW87Zm9yKHZhciB5bz0oMTw8Ny1ZbyktMTt5bz49MDstLXlvKXJpW2VhfHlvPDxZb109NyZZb3xJMDw8M312YXIgJGE9W107Zm9yKElpPTE7JGEubGVuZ3Ro''@;'; put 'put ''PGRyK1duOylzd2l0Y2goZWE9cmlbSGkobHIsQnIpXSxCcis9NyZlYSxlYT4+Pj0zKXtjYXNlIDE2OmZvcihicj0zK2FvKGxyLEJyKSxCcis9MixlYT0kYVskYS5sZW5ndGgtMV07YnItLSA+MDspJGEucHVzaChlYSk7YnJlYWs7Y2FzZSAxNzpmb3IoYnI9Myt4MChscixCciksQnIrPTM7YnIt''@;'; put 'put ''LSA+MDspJGEucHVzaCgwKTticmVhaztjYXNlIDE4OmZvcihicj0xMStIaShscixCciksQnIrPTc7YnItLSA+MDspJGEucHVzaCgwKTticmVhaztkZWZhdWx0OiRhLnB1c2goZWEpLElpPGVhJiYoSWk9ZWEpfXZhciBqcz0kYS5zbGljZSgwLGRyKSxFYz0kYS5zbGljZShkcik7Zm9yKEkwPWRy''@;'; put 'put ''O0kwPDI4NjsrK0kwKWpzW0kwXT0wO2ZvcihJMD1XbjtJMDwzMDsrK0kwKUVjW0kwXT0wO3JldHVybiByMD1NYyhqcyxaciwyODYpLHBpPU1jKEVjLHFpLDMwKSxCcn1mdW5jdGlvbiBrMChscixCcil7dmFyIFduPWZ1bmN0aW9uIE9vKGxyLEJyKXtpZigzPT1sclswXSYmISgzJmxyWzFdKSly''@;'; put 'put ''ZXR1cm5baGUoQnIpLDJdO2Zvcih2YXIgZHI9MCxXbj0wLCRuPU8oQnJ8fDE8PDE4KSxicj0wLFdyPSRuLmxlbmd0aD4+PjAsdWk9MCxJaT0wOzA9PSgxJlduKTspaWYoV249eDAobHIsZHIpLGRyKz0zLFduPj4+MSE9MClmb3IoV24+Pj4xPT0xPyh1aT05LElpPTUpOihkcj1lMChscixkciks''@;'; put 'put ''dWk9cjAsSWk9cGkpLCFCciYmV3I8YnIrMzI3NjcmJihXcj0oJG49eG8oJG4sYnIrMzI3NjcpKS5sZW5ndGgpOzspe3ZhciB6aT12byhscixkcix1aSksSjA9V24+Pj4xPT0xP3AyW3ppXTpaclt6aV07aWYoZHIrPTE1JkowLDA9PSgoSjA+Pj49NCk+Pj44JjI1NSkpJG5bYnIrK109SjA7ZWxz''@;'; put 'put ''ZXtpZigyNTY9PUowKWJyZWFrO3ZhciBJMD0oSjAtPTI1Nyk8OD8wOkowLTQ+PjI7STA+NSYmKEkwPTApO3ZhciBlYT1icit0MFtKMF07STA+MCYmKGVhKz12byhscixkcixJMCksZHIrPUkwKSx6aT12byhscixkcixJaSksZHIrPTE1JihKMD1Xbj4+PjE9PTE/cnJbemldOnFpW3ppXSk7dmFy''@;'; put 'put ''IFlvPShKMD4+Pj00KTw0PzA6SjAtMj4+MSx5bz1pb1tKMF07Zm9yKFlvPjAmJih5bys9dm8obHIsZHIsWW8pLGRyKz1ZbyksIUJyJiZXcjxlYSYmKFdyPSgkbj14bygkbixlYSkpLmxlbmd0aCk7YnI8ZWE7KSRuW2JyXT0kbltici15b10sKyticn19ZWxzZXs3JmRyJiYoZHIrPTgtKDcmZHIp''@;'; put 'put ''KTt2YXIgdTA9bHJbZHI+Pj4zXXxsclsxKyhkcj4+PjMpXTw8ODtpZihkcis9MzIsIUJyJiZXcjxicit1MCYmKFdyPSgkbj14bygkbixicit1MCkpLmxlbmd0aCksImZ1bmN0aW9uIj09dHlwZW9mIGxyLmNvcHkpbHIuY29weSgkbixicixkcj4+PjMsKGRyPj4+MykrdTApLGJyKz11MCxkcis9''@;'; put 'put ''OCp1MDtlbHNlIGZvcig7dTAtLSA+MDspJG5bYnIrK109bHJbZHI+Pj4zXSxkcis9OH1yZXR1cm5bQnI/JG46JG4uc2xpY2UoMCxiciksZHIrNz4+PjNdfShsci5zbGljZShsci5sfHwwKSxCcik7cmV0dXJuIGxyLmwrPVduWzFdLFduWzBdfWZ1bmN0aW9uIHBvKGxyLEJyKXtpZighbHIpdGhy''@;'; put 'put ''b3cgbmV3IEVycm9yKEJyKTsidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUuZXJyb3IoQnIpfWZ1bmN0aW9uIHAwKGxyLEJyKXt2YXIgZHI9bHI7S2woZHIsMCk7dmFyIGJyPXtGaWxlSW5kZXg6W10sRnVsbFBhdGhzOltdfTt5cihicix7cm9vdDpCci5yb290fSk7Zm9yKHZh''@;'; put 'put ''ciBXcj1kci5sZW5ndGgtNDsoODAhPWRyW1dyXXx8NzUhPWRyW1dyKzFdfHw1IT1kcltXcisyXXx8NiE9ZHJbV3IrM10pJiZXcj49MDspLS1Xcjtkci5sPVdyKzQsZHIubCs9NDt2YXIgdWk9ZHIucmVhZF9zaGlmdCgyKTtkci5sKz02O3ZhciBJaT1kci5yZWFkX3NoaWZ0KDQpO2Zvcihkci5s''@;'; put 'put ''PUlpLFdyPTA7V3I8dWk7KytXcil7ZHIubCs9MjA7dmFyIHUwPWRyLnJlYWRfc2hpZnQoNCksemk9ZHIucmVhZF9zaGlmdCg0KSxKMD1kci5yZWFkX3NoaWZ0KDIpLEkwPWRyLnJlYWRfc2hpZnQoMiksZWE9ZHIucmVhZF9zaGlmdCgyKTtkci5sKz04O3ZhciBZbz1kci5yZWFkX3NoaWZ0KDQp''@;'; put 'put ''LHlvPWplKGRyLnNsaWNlKGRyLmwrSjAsZHIubCtKMCtJMCkpO2RyLmwrPUowK0kwK2VhO3ZhciAkYT1kci5sO2RyLmw9WW8rNCxRbChkcix1MCx6aSxicix5byksZHIubD0kYX1yZXR1cm4gYnJ9ZnVuY3Rpb24gUWwobHIsQnIsZHIsV24sJG4pe2xyLmwrPTI7dmFyIGJyPWxyLnJlYWRfc2hp''@;'; put 'put ''ZnQoMiksV3I9bHIucmVhZF9zaGlmdCgyKSx1aT1mdW5jdGlvbiBaZShscil7dmFyIEJyPTY1NTM1JmxyLnJlYWRfc2hpZnQoMiksZHI9NjU1MzUmbHIucmVhZF9zaGlmdCgyKSxXbj1uZXcgRGF0ZSwkbj0zMSZkcixicj0xNSYoZHI+Pj49NSk7ZHI+Pj49NCxXbi5zZXRNaWxsaXNlY29uZHMo''@;'; put 'put ''MCksV24uc2V0RnVsbFllYXIoZHIrMTk4MCksV24uc2V0TW9udGgoYnItMSksV24uc2V0RGF0ZSgkbik7dmFyIFdyPTMxJkJyLHVpPTYzJihCcj4+Pj01KTtyZXR1cm4gV24uc2V0SG91cnMoQnI+Pj49NiksV24uc2V0TWludXRlcyh1aSksV24uc2V0U2Vjb25kcyhXcjw8MSksV259KGxyKTtp''@;'; put 'put ''Zig4MjU3JmJyKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgWklQIGVuY3J5cHRpb24iKTtmb3IodmFyIElpPWxyLnJlYWRfc2hpZnQoNCksdTA9bHIucmVhZF9zaGlmdCg0KSx6aT1sci5yZWFkX3NoaWZ0KDQpLEowPWxyLnJlYWRfc2hpZnQoMiksSTA9bHIucmVhZF9zaGlmdCgyKSxl''@;'; put 'put ''YT0iIixZbz0wO1lvPEowOysrWW8pZWErPVN0cmluZy5mcm9tQ2hhckNvZGUobHJbbHIubCsrXSk7aWYoSTApe3ZhciB5bz1qZShsci5zbGljZShsci5sLGxyLmwrSTApKTsoeW9bMjE1ODldfHx7fSkubXQmJih1aT15b1syMTU4OV0ubXQpLCgoJG58fHt9KVsyMTU4OV18fHt9KS5tdCYmKHVp''@;'; put 'put ''PSRuWzIxNTg5XS5tdCl9bHIubCs9STA7dmFyICRhPWxyLnNsaWNlKGxyLmwsbHIubCt1MCk7c3dpdGNoKFdyKXtjYXNlIDg6JGE9ZnVuY3Rpb24gTnIobHIsQnIpe2lmKCFFaSlyZXR1cm4gazAobHIsQnIpO3ZhciBXbj1uZXcoMCxFaS5JbmZsYXRlUmF3KSwkbj1Xbi5fcHJvY2Vzc0NodW5r''@;'; put 'put ''KGxyLnNsaWNlKGxyLmwpLFduLl9maW5pc2hGbHVzaEZsYWcpO3JldHVybiBsci5sKz1Xbi5ieXRlc1JlYWQsJG59KGxyLHppKTticmVhaztjYXNlIDA6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIFpJUCBDb21wcmVzc2lvbiBtZXRob2QgIitXcil9dmFyIGpz''@;'; put 'put ''PSExOzgmYnImJigxMzQ2OTU3NjA9PShJaT1sci5yZWFkX3NoaWZ0KDQpKSYmKElpPWxyLnJlYWRfc2hpZnQoNCksanM9ITApLHUwPWxyLnJlYWRfc2hpZnQoNCksemk9bHIucmVhZF9zaGlmdCg0KSksdTAhPUJyJiZwbyhqcywiQmFkIGNvbXByZXNzZWQgc2l6ZTogIitCcisiICE9ICIrdTAp''@;'; put 'put ''LHppIT1kciYmcG8oanMsIkJhZCB1bmNvbXByZXNzZWQgc2l6ZTogIitkcisiICE9ICIremkpO3ZhciBFYz13dC5idWYoJGEsMCk7SWk+PjAhPUVjPj4wJiZwbyhqcywiQmFkIENSQzMyIGNoZWNrc3VtOiAiK0lpKyIgIT0gIitFYyksZTEoV24sZWEsJGEse3Vuc2FmZTohMCxtdDp1aX0pfWZ1''@;'; put 'put ''bmN0aW9uIGUxKGxyLEJyLGRyLFduKXt2YXIgJG49V24mJlduLnVuc2FmZTskbnx8eXIobHIpO3ZhciBicj0hJG4mJm10LmZpbmQobHIsQnIpO2lmKCFicil7dmFyIFdyPWxyLkZ1bGxQYXRoc1swXTtCci5zbGljZSgwLFdyLmxlbmd0aCk9PVdyP1dyPUJyOigiLyIhPVdyLnNsaWNlKC0xKSYm''@;'; put 'put ''KFdyKz0iLyIpLFdyPShXcitCcikucmVwbGFjZSgiLy8iLCIvIikpLGJyPXtuYW1lOnhlKEJyKSx0eXBlOjJ9LGxyLkZpbGVJbmRleC5wdXNoKGJyKSxsci5GdWxsUGF0aHMucHVzaChXciksJG58fG10LnV0aWxzLmNmYl9nYyhscil9cmV0dXJuIGJyLmNvbnRlbnQ9ZHIsYnIuc2l6ZT1kcj9k''@;'; put 'put ''ci5sZW5ndGg6MCxXbiYmKFduLkNMU0lEJiYoYnIuY2xzaWQ9V24uQ0xTSUQpLFduLm10JiYoYnIubXQ9V24ubXQpLFduLmN0JiYoYnIuY3Q9V24uY3QpKSxicn1yZXR1cm4gaWUuZmluZD1mdW5jdGlvbiBxcihscixCcil7dmFyIGRyPWxyLkZ1bGxQYXRocy5tYXAoZnVuY3Rpb24oSWkpe3Jl''@;'; put 'put ''dHVybiBJaS50b1VwcGVyQ2FzZSgpfSksV249ZHIubWFwKGZ1bmN0aW9uKElpKXt2YXIgdTA9SWkuc3BsaXQoIi8iKTtyZXR1cm4gdTBbdTAubGVuZ3RoLSgiLyI9PUlpLnNsaWNlKC0xKT8yOjEpXX0pLCRuPSExOzQ3PT09QnIuY2hhckNvZGVBdCgwKT8oJG49ITAsQnI9ZHJbMF0uc2xpY2Uo''@;'; put 'put ''MCwtMSkrQnIpOiRuPS0xIT09QnIuaW5kZXhPZigiLyIpO3ZhciBicj1Cci50b1VwcGVyQ2FzZSgpLFdyPSEwPT09JG4/ZHIuaW5kZXhPZihicik6V24uaW5kZXhPZihicik7aWYoLTEhPT1XcilyZXR1cm4gbHIuRmlsZUluZGV4W1dyXTt2YXIgdWk9IWJyLm1hdGNoKFMpO2Zvcihicj1ici5y''@;'; put 'put ''ZXBsYWNlKFQsIiIpLHVpJiYoYnI9YnIucmVwbGFjZShTLCIhIikpLFdyPTA7V3I8ZHIubGVuZ3RoOysrV3IpaWYoKHVpP2RyW1dyXS5yZXBsYWNlKFMsIiEiKTpkcltXcl0pLnJlcGxhY2UoVCwiIik9PWJyfHwodWk/V25bV3JdLnJlcGxhY2UoUywiISIpOlduW1dyXSkucmVwbGFjZShULCIi''@;'; put 'put ''KT09YnIpcmV0dXJuIGxyLkZpbGVJbmRleFtXcl07cmV0dXJuIG51bGx9LGllLnJlYWQ9ZnVuY3Rpb24gYWkobHIsQnIpe3N3aXRjaChCciYmQnIudHlwZXx8ImJhc2U2NCIpe2Nhc2UiZmlsZSI6cmV0dXJuIGZ1bmN0aW9uIE1yKGxyLEJyKXtyZXR1cm4gTXQoKSx4dChZZS5yZWFkRmlsZVN5''@;'; put 'put ''bmMobHIpLEJyKX0obHIsQnIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4geHQoeihTZS5kZWNvZGUobHIpKSxCcik7Y2FzZSJiaW5hcnkiOnJldHVybiB4dCh6KGxyKSxCcil9cmV0dXJuIHh0KGxyLEJyKX0saWUucGFyc2U9eHQsaWUud3JpdGU9ZnVuY3Rpb24gWXIobHIsQnIpe3ZhciBkcj16cihs''@;'; put 'put ''cixCcik7c3dpdGNoKEJyJiZCci50eXBlKXtjYXNlImZpbGUiOnJldHVybiBNdCgpLFllLndyaXRlRmlsZVN5bmMoQnIuZmlsZW5hbWUsZHIpLGRyO2Nhc2UiYmluYXJ5IjpyZXR1cm4gYmkoZHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gU2UuZW5jb2RlKGJpKGRyKSl9cmV0dXJuIGRyfSxpZS53''@;'; put 'put ''cml0ZUZpbGU9ZnVuY3Rpb24gQTAobHIsQnIsZHIpe010KCk7dmFyIFduPXpyKGxyLGRyKTtZZS53cml0ZUZpbGVTeW5jKEJyLFduKX0saWUudXRpbHM9e2NmYl9uZXc6ZnVuY3Rpb24gcTIobHIpe3ZhciBCcj17fTtyZXR1cm4geXIoQnIsbHIpLEJyfSxjZmJfYWRkOmUxLGNmYl9kZWw6ZnVu''@;'; put 'put ''Y3Rpb24gS3MobHIsQnIpe3lyKGxyKTt2YXIgZHI9bXQuZmluZChscixCcik7aWYoZHIpZm9yKHZhciBXbj0wO1duPGxyLkZpbGVJbmRleC5sZW5ndGg7KytXbilpZihsci5GaWxlSW5kZXhbV25dPT1kcilyZXR1cm4gbHIuRmlsZUluZGV4LnNwbGljZShXbiwxKSxsci5GdWxsUGF0aHMuc3Bs''@;'; put 'put ''aWNlKFduLDEpLCEwO3JldHVybiExfSxjZmJfbW92OmZ1bmN0aW9uIFA2KGxyLEJyLGRyKXt5cihscik7dmFyIFduPW10LmZpbmQobHIsQnIpO2lmKFduKWZvcih2YXIgJG49MDskbjxsci5GaWxlSW5kZXgubGVuZ3RoOysrJG4paWYobHIuRmlsZUluZGV4WyRuXT09V24pcmV0dXJuIGxyLkZp''@;'; put 'put ''bGVJbmRleFskbl0ubmFtZT14ZShkciksbHIuRnVsbFBhdGhzWyRuXT1kciwhMDtyZXR1cm4hMX0sY2ZiX2djOmZ1bmN0aW9uIHRoKGxyKXtHcihsciwhMCl9LFJlYWRTaGlmdDpDNCxDaGVja0ZpZWxkOkYxLHByZXBfYmxvYjpLbCxiY29uY2F0OlYsdXNlX3psaWI6ZnVuY3Rpb24gaGkobHIp''@;'; put 'put ''e3RyeXt2YXIgZHI9bmV3KDAsbHIuSW5mbGF0ZVJhdyk7aWYoZHIuX3Byb2Nlc3NDaHVuayhuZXcgVWludDhBcnJheShbMywwXSksZHIuX2ZpbmlzaEZsdXNoRmxhZyksIWRyLmJ5dGVzUmVhZCl0aHJvdyBuZXcgRXJyb3IoInpsaWIgZG9lcyBub3QgZXhwb3NlIGJ5dGVzUmVhZCIpO0VpPWxy''@;'; put 'put ''fWNhdGNoKFduKXtjb25zb2xlLmVycm9yKCJjYW5ub3QgdXNlIG5hdGl2ZSB6bGliOiAiKyhXbi5tZXNzYWdlfHxXbikpfX0sX2RlZmxhdGVSYXc6bDIsX2luZmxhdGVSYXc6azAsY29uc3RzOnRvfSxpZX0oKTt0cnl7dnQ9TCg3ODc3Myl9Y2F0Y2goSCl7fWZ1bmN0aW9uIEF0KEgpe3JldHVy''@;'; put 'put ''biJzdHJpbmciPT10eXBlb2YgSD9lZShIKTpBcnJheS5pc0FycmF5KEgpP2Z1bmN0aW9uIHgoSCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBVaW50OEFycmF5KXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQiKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoSCl9KEgpOkh9ZnVuY3Rpb24gaHQo''@;'; put 'put ''SCxpZSxYKXtpZih2b2lkIDAhPT12dCYmdnQud3JpdGVGaWxlU3luYylyZXR1cm4gWD92dC53cml0ZUZpbGVTeW5jKEgsaWUsWCk6dnQud3JpdGVGaWxlU3luYyhILGllKTt2YXIgd2U9InV0ZjgiPT1YP0VvKGllKTppZTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIElFX1NhdmVGaWxlKXJldHVy''@;'; put 'put ''biBJRV9TYXZlRmlsZSh3ZSxIKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEJsb2Ipe3ZhciB4ZT1uZXcgQmxvYihbQXQod2UpXSx7dHlwZToiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn0pO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3IubXNTYXZlQmxvYily''@;'; put 'put ''ZXR1cm4gbmF2aWdhdG9yLm1zU2F2ZUJsb2IoeGUsSCk7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBzYXZlQXMpcmV0dXJuIHNhdmVBcyh4ZSxIKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFVSTCYmInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuY3JlYXRlRWxlbWVudCYm''@;'; put 'put ''VVJMLmNyZWF0ZU9iamVjdFVSTCl7dmFyIEZlPVVSTC5jcmVhdGVPYmplY3RVUkwoeGUpO2lmKCJvYmplY3QiPT10eXBlb2YgY2hyb21lJiYiZnVuY3Rpb24iPT10eXBlb2YoY2hyb21lLmRvd25sb2Fkc3x8e30pLmRvd25sb2FkKXJldHVybiBVUkwucmV2b2tlT2JqZWN0VVJMJiYidW5kZWZp''@;'; put 'put ''bmVkIiE9dHlwZW9mIHNldFRpbWVvdXQmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtVUkwucmV2b2tlT2JqZWN0VVJMKEZlKX0sNmU0KSxjaHJvbWUuZG93bmxvYWRzLmRvd25sb2FkKHt1cmw6RmUsZmlsZW5hbWU6SCxzYXZlQXM6ITB9KTt2YXIgWmU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi''@;'; put 'put ''YSIpO2lmKG51bGwhPVplLmRvd25sb2FkKXJldHVybiBaZS5kb3dubG9hZD1ILFplLmhyZWY9RmUsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChaZSksWmUuY2xpY2soKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKFplKSxVUkwucmV2b2tlT2JqZWN0VVJMJiYidW5kZWZpbmVkIiE9dHlw''@;'; put 'put ''ZW9mIHNldFRpbWVvdXQmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtVUkwucmV2b2tlT2JqZWN0VVJMKEZlKX0sNmU0KSxGZX19aWYoInVuZGVmaW5lZCIhPXR5cGVvZiAkJiYidW5kZWZpbmVkIiE9dHlwZW9mIEZpbGUmJiJ1bmRlZmluZWQiIT10eXBlb2YgRm9sZGVyKXRyeXt2YXIgamU9Rmls''@;'; put 'put ''ZShIKTtyZXR1cm4gamUub3BlbigidyIpLGplLmVuY29kaW5nPSJiaW5hcnkiLEFycmF5LmlzQXJyYXkoaWUpJiYoaWU9bmUoaWUpKSxqZS53cml0ZShpZSksamUuY2xvc2UoKSxpZX1jYXRjaChZZSl7aWYoIVllLm1lc3NhZ2V8fCFZZS5tZXNzYWdlLm1hdGNoKC9vbnN0cnVjdC8pKXRocm93''@;'; put 'put ''IFllfXRocm93IG5ldyBFcnJvcigiY2Fubm90IHNhdmUgZmlsZSAiK0gpfWZ1bmN0aW9uIG9uKEgpe2Zvcih2YXIgaWU9T2JqZWN0LmtleXMoSCksWD1bXSx3ZT0wO3dlPGllLmxlbmd0aDsrK3dlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChILGllW3dlXSkmJlgucHVz''@;'; put 'put ''aChpZVt3ZV0pO3JldHVybiBYfWZ1bmN0aW9uIF90KEgsaWUpe2Zvcih2YXIgWD1bXSx3ZT1vbihIKSx4ZT0wO3hlIT09d2UubGVuZ3RoOysreGUpbnVsbD09WFtIW3dlW3hlXV1baWVdXSYmKFhbSFt3ZVt4ZV1dW2llXV09d2VbeGVdKTtyZXR1cm4gWH1mdW5jdGlvbiB0dChIKXtmb3IodmFy''@;'; put 'put ''IGllPVtdLFg9b24oSCksd2U9MDt3ZSE9PVgubGVuZ3RoOysrd2UpaWVbSFtYW3dlXV1dPVhbd2VdO3JldHVybiBpZX1mdW5jdGlvbiBldChIKXtmb3IodmFyIGllPVtdLFg9b24oSCksd2U9MDt3ZSE9PVgubGVuZ3RoOysrd2UpaWVbSFtYW3dlXV1dPXBhcnNlSW50KFhbd2VdLDEwKTtyZXR1''@;'; put 'put ''cm4gaWV9dmFyIGZ0LEh0LEx0PW5ldyBEYXRlKDE4OTksMTEsMzAsMCwwLDApLEN0PTA7ZnVuY3Rpb24gR2UoKXtDdD1MdC5nZXRUaW1lKCkrNmU0KigobmV3IERhdGUpLmdldFRpbWV6b25lT2Zmc2V0KCktTHQuZ2V0VGltZXpvbmVPZmZzZXQoKSksZnQ9ZnVuY3Rpb24oaWUsWCl7dmFyIHdl''@;'; put 'put ''PWllLmdldFRpbWUoKTtyZXR1cm4gWCYmKHdlLT0xMjYzMTY4ZTUpLCh3ZS1DdCkvODY0ZTV9LEh0PWZ1bmN0aW9uKGllKXt2YXIgWD1uZXcgRGF0ZTtyZXR1cm4gWC5zZXRUaW1lKDI0KmllKjYwKjYwKjFlMytDdCksWH19ZnVuY3Rpb24ganQoSCl7dmFyIGllPTAsWD0wLHdlPSExLHhlPUgu''@;'; put 'put ''bWF0Y2goL1AoWzAtOVwuXStZKT8oWzAtOVwuXStNKT8oWzAtOVwuXStEKT9UKFswLTlcLl0rSCk/KFswLTlcLl0rTSk/KFswLTlcLl0rUyk/Lyk7aWYoIXhlKXRocm93IG5ldyBFcnJvcigifCIrSCsifCBpcyBub3QgYW4gSVNPODYwMSBEdXJhdGlvbiIpO2Zvcih2YXIgRmU9MTtGZSE9eGUu''@;'; put 'put ''bGVuZ3RoOysrRmUpaWYoeGVbRmVdKXtzd2l0Y2goWD0xLEZlPjMmJih3ZT0hMCkseGVbRmVdLnNsaWNlKHhlW0ZlXS5sZW5ndGgtMSkpe2Nhc2UiWSI6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBJU08gRHVyYXRpb24gRmllbGQ6ICIreGVbRmVdLnNsaWNlKHhlW0ZlXS5sZW5ndGgt''@;'; put 'put ''MSkpO2Nhc2UiRCI6WCo9MjQ7Y2FzZSJIIjpYKj02MDtjYXNlIk0iOmlmKCF3ZSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIElTTyBEdXJhdGlvbiBGaWVsZDogTSIpO1gqPTYwfWllKz1YKnBhcnNlSW50KHhlW0ZlXSwxMCl9cmV0dXJuIGllfUdlKCk7dmFyIEp0PW5ldyBEYXRlKCIy''@;'; put 'put ''MDE3LTAyLTE5VDE5OjA2OjA5LjAwMFoiKTtpc05hTihKdC5nZXRGdWxsWWVhcigpKSYmKEp0PW5ldyBEYXRlKCIyLzE5LzE3IikpO3ZhciBnbj0yMDE3PT1KdC5nZXRGdWxsWWVhcigpO2Z1bmN0aW9uIGRuKEgsaWUpe3ZhciBYPW5ldyBEYXRlKEgpO2lmKGduKXJldHVybiBpZT4wP1guc2V0''@;'; put 'put ''VGltZShYLmdldFRpbWUoKSs2MCpYLmdldFRpbWV6b25lT2Zmc2V0KCkqMWUzKTppZTwwJiZYLnNldFRpbWUoWC5nZXRUaW1lKCktNjAqWC5nZXRUaW1lem9uZU9mZnNldCgpKjFlMyksWDtpZihIIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gSDtpZigxOTE3PT1KdC5nZXRGdWxsWWVhcigpJiYh''@;'; put 'put ''aXNOYU4oWC5nZXRGdWxsWWVhcigpKSl7dmFyIHdlPVguZ2V0RnVsbFllYXIoKTtyZXR1cm4gSC5pbmRleE9mKCIiK3dlKT4tMXx8WC5zZXRGdWxsWWVhcihYLmdldEZ1bGxZZWFyKCkrMTAwKSxYfXZhciB4ZT1ILm1hdGNoKC9cZCsvZyl8fFsiMjAxNyIsIjIiLCIxOSIsIjAiLCIwIiwiMCJd''@;'; put 'put ''LEZlPW5ldyBEYXRlKCt4ZVswXSwreGVbMV0tMSwreGVbMl0sK3hlWzNdfHwwLCt4ZVs0XXx8MCwreGVbNV18fDApO3JldHVybiBILmluZGV4T2YoIloiKT4tMSYmKEZlPW5ldyBEYXRlKEZlLmdldFRpbWUoKS02MCpGZS5nZXRUaW1lem9uZU9mZnNldCgpKjFlMykpLEZlfWZ1bmN0aW9uIHlu''@;'; put 'put ''KEgpe2Zvcih2YXIgaWU9IiIsWD0wO1ghPUgubGVuZ3RoOysrWClpZSs9U3RyaW5nLmZyb21DaGFyQ29kZShIW1hdKTtyZXR1cm4gaWV9ZnVuY3Rpb24gbG4oSCl7aWYoIm9iamVjdCIhPXR5cGVvZiBIfHxudWxsPT1IKXJldHVybiBIO2lmKEggaW5zdGFuY2VvZiBEYXRlKXJldHVybiBuZXcg''@;'; put 'put ''RGF0ZShILmdldFRpbWUoKSk7aWYoQXJyYXkuaXNBcnJheShIKSlyZXR1cm4gZnVuY3Rpb24gTm4oSCl7Zm9yKHZhciBpZT1bXSxYPTA7WDxILmxlbmd0aDsrK1gpe3ZhciB3ZT1IW1hdOyJvYmplY3QiPT10eXBlb2Ygd2U/aWVbWF09bG4od2UpOm51bGwhPXdlJiYoaWVbWF09d2UpfXJldHVy''@;'; put 'put ''biBpZX0oSCk7dmFyIGllPXt9O2Zvcih2YXIgWCBpbiBIKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChILFgpJiYoaWVbWF09bG4oSFtYXSkpO3JldHVybiBpZX1mdW5jdGlvbiBibihILGllKXtpZigib2JqZWN0IiE9dHlwZW9mIGllfHxudWxsPT1pZSlyZXR1cm4gSDtm''@;'; put 'put ''b3IodmFyIFggaW4gaWUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGllLFgpJiYoSFtYXT1sbihpZVtYXSkpO3JldHVybiBIfWZ1bmN0aW9uIGVyKEgsaWUpe2Zvcih2YXIgWD0iIjtYLmxlbmd0aDxpZTspWCs9SDtyZXR1cm4gWH1mdW5jdGlvbiBzcihIKXt2YXIgaWU9''@;'; put 'put ''TnVtYmVyKEgpO2lmKCFpc05hTihpZSkpcmV0dXJuIGlzRmluaXRlKGllKT9pZTpOYU47aWYoIS9cZC8udGVzdChIKSlyZXR1cm4gaWU7dmFyIFg9MSx3ZT1ILnJlcGxhY2UoLyhbXGRdKSwoW1xkXSkvZywiJDEkMiIpLnJlcGxhY2UoL1skXS9nLCIiKS5yZXBsYWNlKC9bJV0vZyxmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiBYKj0xMDAsIiJ9KTtyZXR1cm4gaXNOYU4oaWU9TnVtYmVyKHdlKSkmJih3ZT13ZS5yZXBsYWNlKC9bKF0oLiopWyldLyxmdW5jdGlvbih4ZSxGZSl7cmV0dXJuIFg9LVgsRmV9KSxpc05hTihpZT1OdW1iZXIod2UpKSk/aWU6aWUvWH1mdW5jdGlvbiBYbihIKXt2YXIgaWU9''@;'; put 'put ''bmV3IERhdGUoSCksWD1uZXcgRGF0ZShOYU4pLHdlPWllLmdldFllYXIoKSx4ZT1pZS5nZXRNb250aCgpLEZlPWllLmdldERhdGUoKTtyZXR1cm4gaXNOYU4oRmUpfHx3ZTwwfHx3ZT44MDk5P1g6KHhlPjB8fEZlPjEpJiYxMDEhPXdlfHxILnRvTG93ZXJDYXNlKCkubWF0Y2goL2phbnxmZWJ8''@;'; put 'put ''bWFyfGFwcnxtYXl8anVufGp1bHxhdWd8c2VwfG9jdHxub3Z8ZGVjLyk/aWU6SC5tYXRjaCgvW14tMC05OixcL1xcXS8pP1g6aWV9ZnVuY3Rpb24gRnIoSCxpZSl7aWYoaWUmJmllLnJhdylyZXR1cm57dDoicyIsdjpIfTtpZighSClyZXR1cm57dDoieiJ9O2lmKCJUUlVFIj09PUgpcmV0dXJu''@;'; put 'put ''e3Q6ImIiLHY6ITB9O2lmKCJGQUxTRSI9PT1IKXJldHVybnt0OiJiIix2OiExfTt2YXIgWD0iIix3ZT1OdW1iZXIoSCk7aWYoaXNGaW5pdGUod2UpKXJldHVybnt0OiJuIix2OndlfTtpZihpc05hTih3ZSkmJi9cZC8udGVzdChIKSl7dmFyIHhlPTEsRmU9SC5yZXBsYWNlKC8oW1xkXSksKFtc''@;'; put 'put ''ZF0pL2csZnVuY3Rpb24oVXQsbm4sQ24pe3JldHVybiBYfHwoWD0iIywjIzAiKSxubitDbn0pLnJlcGxhY2UoL1skXS9nLCIiKS5yZXBsYWNlKC9cLlxkKi8sZnVuY3Rpb24oVXQpe1h8fChYPSIwIiksWCs9Ii4iO2Zvcih2YXIgbm49Mjtubjw9VXQubGVuZ3RoOysrbm4pWCs9IjAiO3JldHVy''@;'; put 'put ''biBVdH0pLnJlcGxhY2UoL1slXS9nLGZ1bmN0aW9uKCl7cmV0dXJuIHhlKj0xMDAsWHx8KFg9IjAiKSxYKz0iJSIsIiJ9KTtpZighaXNOYU4od2U9TnVtYmVyKEZlKSkpcmV0dXJue3Q6Im4iLHY6d2UveGUsejpYfTtpZihGZT1GZS5yZXBsYWNlKC9bKF0oLiopWyldLyxmdW5jdGlvbihVdCxu''@;'; put 'put ''bil7cmV0dXJuIHhlPS14ZSxubn0pLCFpc05hTih3ZT1OdW1iZXIoRmUpKSlyZXR1cm57dDoibiIsdjp3ZS94ZSx6OihYfHwiMCIpKyJfKTsoIisoWHx8IjAiKSsiKTtAIn19ZTppZighaWV8fCFpZS5yYXdEYXRlcyl7dmFyIFplPWllJiZpZS5jZWxsRGF0ZXMsamU9bmV3IERhdGUoSCksTXQ9''@;'; put 'put ''KG5ldyBEYXRlKE5hTiksamUuZ2V0WWVhcigpKSx4dD1qZS5nZXRNb250aCgpLFJ0PWplLmdldERhdGUoKTtpZihpc05hTihSdCl8fE10PDB8fE10PjgwOTkpYnJlYWsgZTtpZigoeHQ+MHx8UnQ+MSkmJjEwMSE9TXQpcmV0dXJue3Q6WmU/ImQiOiJuIix2OlplP2plOmZ0KGplKSx6OmllLmRh''@;'; put 'put ''dGVORnx8Ri5fdGFibGVbMTRdfTtpZihILnRvTG93ZXJDYXNlKCkubWF0Y2goL2phbnxmZWJ8bWFyfGFwcnxtYXl8anVufGp1bHxhdWd8c2VwfG9jdHxub3Z8ZGVjLykpcmV0dXJue3Q6WmU/ImQiOiJuIix2OlplP2plOmZ0KGplKSx6OmllLmRhdGVORnx8Ri5fdGFibGVbMTRdfTtpZihILm1h''@;'; put 'put ''dGNoKC9bXi0wLTk6LFwvXFxdLykpYnJlYWsgZTtyZXR1cm4gamV9cmV0dXJue3Q6InMiLHY6SH19dmFyIEJuLHhyPTU9PSJhYmFjYWJhIi5zcGxpdCgvKDo/YikvaSkubGVuZ3RoO2Z1bmN0aW9uIG5yKEgpe3JldHVybiBudWxsIT1IJiYhSH1mdW5jdGlvbiBBbihIKXtyZXR1cm4gSC5jaGFy''@;'; put 'put ''QXQoMCkudG9VcHBlckNhc2UoKStILnNsaWNlKDEpfWZ1bmN0aW9uIHFuKEgpe3JldHVybiBIP0guZGF0YT9jZShILmRhdGEpOkguYXNOb2RlQnVmZmVyJiZJZT9jZShILmFzTm9kZUJ1ZmZlcigpLnRvU3RyaW5nKCJiaW5hcnkiKSk6SC5hc0JpbmFyeT9jZShILmFzQmluYXJ5KCkpOkguX2Rh''@;'; put 'put ''dGEmJkguX2RhdGEuZ2V0Q29udGVudD9jZSh5bihBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChILl9kYXRhLmdldENvbnRlbnQoKSwwKSkpOkguY29udGVudCYmSC50eXBlP2NlKHluKEguY29udGVudCkpOm51bGw6bnVsbH1mdW5jdGlvbiBXdChIKXtpZighSClyZXR1cm4gbnVsbDtpZihI''@;'; put 'put ''LmRhdGEpcmV0dXJuIEooSC5kYXRhKTtpZihILmFzTm9kZUJ1ZmZlciYmSWUpcmV0dXJuIEguYXNOb2RlQnVmZmVyKCk7aWYoSC5fZGF0YSYmSC5fZGF0YS5nZXRDb250ZW50KXt2YXIgaWU9SC5fZGF0YS5nZXRDb250ZW50KCk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBpZT9KKGllKTpBcnJh''@;'; put 'put ''eS5wcm90b3R5cGUuc2xpY2UuY2FsbChpZSl9cmV0dXJuIEguY29udGVudCYmSC50eXBlP0guY29udGVudDpudWxsfWZ1bmN0aW9uIEtuKEgsaWUpe2Zvcih2YXIgWD1ILkZ1bGxQYXRoc3x8b24oSC5maWxlcyksd2U9aWUudG9Mb3dlckNhc2UoKSx4ZT13ZS5yZXBsYWNlKC9cLy9nLCJcXCIp''@;'; put 'put ''LEZlPTA7RmU8WC5sZW5ndGg7KytGZSl7dmFyIFplPVhbRmVdLnRvTG93ZXJDYXNlKCk7aWYod2U9PVplfHx4ZT09WmUpcmV0dXJuIEguZmlsZXNbWFtGZV1dfXJldHVybiBudWxsfWZ1bmN0aW9uIE50KEgsaWUpe3ZhciBYPUtuKEgsaWUpO2lmKG51bGw9PVgpdGhyb3cgbmV3IEVycm9yKCJD''@;'; put 'put ''YW5ub3QgZmluZCBmaWxlICIraWUrIiBpbiB6aXAiKTtyZXR1cm4gWH1mdW5jdGlvbiBzbihILGllLFgpe2lmKCFYKXJldHVybiBmdW5jdGlvbiBwbihIKXtyZXR1cm4gSCYmIi5iaW4iPT09SC5uYW1lLnNsaWNlKC00KT9XdChIKTpxbihIKX0oTnQoSCxpZSkpO2lmKCFpZSlyZXR1cm4gbnVs''@;'; put 'put ''bDt0cnl7cmV0dXJuIHNuKEgsaWUpfWNhdGNoKHdlKXtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gVW4oSCxpZSxYKXtpZighWClyZXR1cm4gcW4oTnQoSCxpZSkpO2lmKCFpZSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIFVuKEgsaWUpfWNhdGNoKHdlKXtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gd24o''@;'; put 'put ''SCxpZSxYKXtpZighWClyZXR1cm4gV3QoTnQoSCxpZSkpO2lmKCFpZSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIHduKEgsaWUpfWNhdGNoKHdlKXtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gem4oSCxpZSxYKXtILkZ1bGxQYXRocz9tdC51dGlscy5jZmJfYWRkKEgsaWUsWCk6SC5maWxlKGllLFgp''@;'; put 'put ''fWZ1bmN0aW9uIGtyKCl7cmV0dXJuIEJuP25ldyBCbjptdC51dGlscy5jZmJfbmV3KCl9ZnVuY3Rpb24gbW4oSCxpZSl7dmFyIFg7aWYoQm4pc3dpdGNoKGllLnR5cGUpe2Nhc2UiYmFzZTY0IjpYPW5ldyBCbihILHtiYXNlNjQ6ITB9KTticmVhaztjYXNlImJpbmFyeSI6Y2FzZSJhcnJheSI6''@;'; put 'put ''WD1uZXcgQm4oSCx7YmFzZTY0OiExfSk7YnJlYWs7Y2FzZSJidWZmZXIiOlg9bmV3IEJuKEgpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK2llLnR5cGUpfWVsc2Ugc3dpdGNoKGllLnR5cGUpe2Nhc2UiYmFzZTY0IjpYPW10LnJlYWQoSCx7dHlw''@;'; put 'put ''ZToiYmFzZTY0In0pO2JyZWFrO2Nhc2UiYmluYXJ5IjpYPW10LnJlYWQoSCx7dHlwZToiYmluYXJ5In0pO2JyZWFrO2Nhc2UiYnVmZmVyIjpjYXNlImFycmF5IjpYPW10LnJlYWQoSCx7dHlwZToiYnVmZmVyIn0pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQg''@;'; put 'put ''dHlwZSAiK2llLnR5cGUpfXJldHVybiBYfWZ1bmN0aW9uIHVuKEgsaWUpe2lmKCIvIj09SC5jaGFyQXQoMCkpcmV0dXJuIEguc2xpY2UoMSk7dmFyIFg9aWUuc3BsaXQoIi8iKTsiLyIhPWllLnNsaWNlKC0xKSYmWC5wb3AoKTtmb3IodmFyIHdlPUguc3BsaXQoIi8iKTswIT09d2UubGVuZ3Ro''@;'; put 'put ''Oyl7dmFyIHhlPXdlLnNoaWZ0KCk7Ii4uIj09PXhlP1gucG9wKCk6Ii4iIT09eGUmJlgucHVzaCh4ZSl9cmV0dXJuIFguam9pbigiLyIpfSJ1bmRlZmluZWQiIT10eXBlb2YgSlNaaXBTeW5jJiYoQm49SlNaaXBTeW5jKSxYZS5leHBvcnRzJiZ2b2lkIDA9PT1CbiYmKEJuPUwoNjk5NjMpKTt2''@;'; put 'put ''YXIgY249Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz5cclxuJyxfbj0vKD86W14iXHM/PlwvXSspXHMqPVxzKigoPzoiKSg/OlteIl0qPykoPzoiKXwoPzonKSg/OlteJ10qPykoPzonKXwoPzpbXiciPlxzXSspKS9nLEd0PS88W1wvXD9d''@;'; put 'put ''P1thLXpBLVowLTk6Xy1dKyg/OlxzK1teIlxzPz5cL10rXHMqPVxzKig/OiJbXiJdKiJ8J1teJ10qJ3xbXiciPlxzPV0rKSkqXHM/W1wvXD9dPz4vZztjbi5tYXRjaChHdCl8fChHdD0vPFtePl0qPi9nKTt2YXIga249Lzxcdyo6LyxWbj0vPChcLz8pXHcrOi87ZnVuY3Rpb24gZW4oSCxpZSxY''@;'; put 'put ''KXtmb3IodmFyIHdlPXt9LHhlPTAsRmU9MDt4ZSE9PUgubGVuZ3RoJiYzMiE9PShGZT1ILmNoYXJDb2RlQXQoeGUpKSYmMTAhPT1GZSYmMTMhPT1GZTsrK3hlKTtpZihpZXx8KHdlWzBdPUguc2xpY2UoMCx4ZSkpLHhlPT09SC5sZW5ndGgpcmV0dXJuIHdlO3ZhciBaZT1ILm1hdGNoKF9uKSxq''@;'; put 'put ''ZT0wLFllPSIiLE10PTAseHQ9IiIsUnQ9IiIsVXQ9MTtpZihaZSlmb3IoTXQ9MDtNdCE9WmUubGVuZ3RoOysrTXQpe2ZvcihSdD1aZVtNdF0sRmU9MDtGZSE9UnQubGVuZ3RoJiY2MSE9PVJ0LmNoYXJDb2RlQXQoRmUpOysrRmUpO2Zvcih4dD1SdC5zbGljZSgwLEZlKS50cmltKCk7MzI9PVJ0''@;'; put 'put ''LmNoYXJDb2RlQXQoRmUrMSk7KSsrRmU7Zm9yKFV0PTM0PT0oeGU9UnQuY2hhckNvZGVBdChGZSsxKSl8fDM5PT14ZT8xOjAsWWU9UnQuc2xpY2UoRmUrMStVdCxSdC5sZW5ndGgtVXQpLGplPTA7amUhPXh0Lmxlbmd0aCYmNTghPT14dC5jaGFyQ29kZUF0KGplKTsrK2plKTtpZihqZT09PXh0''@;'; put 'put ''Lmxlbmd0aCl4dC5pbmRleE9mKCJfIik+MCYmKHh0PXh0LnNsaWNlKDAseHQuaW5kZXhPZigiXyIpKSksd2VbeHRdPVllLFh8fCh3ZVt4dC50b0xvd2VyQ2FzZSgpXT1ZZSk7ZWxzZXt2YXIgbm49KDU9PT1qZSYmInhtbG5zIj09PXh0LnNsaWNlKDAsNSk/InhtbG5zIjoiIikreHQuc2xpY2Uo''@;'; put 'put ''amUrMSk7aWYod2Vbbm5dJiYiZXh0Ij09eHQuc2xpY2UoamUtMyxqZSkpY29udGludWU7d2Vbbm5dPVllLFh8fCh3ZVtubi50b0xvd2VyQ2FzZSgpXT1ZZSl9fXJldHVybiB3ZX1mdW5jdGlvbiBJbihIKXtyZXR1cm4gSC5yZXBsYWNlKFZuLCI8JDEiKX12YXIgSm49eyImcXVvdDsiOiciJywi''@;'; put 'put ''JmFwb3M7IjoiJyIsIiZndDsiOiI+IiwiJmx0OyI6IjwiLCImYW1wOyI6IiYifSxvcj10dChKbiksZ3I9ZnVuY3Rpb24oKXt2YXIgSD0vJig/OnF1b3R8YXBvc3xndHxsdHxhbXB8I3g/KFtcZGEtZkEtRl0rKSk7L2dpLGllPS9feChbXGRhLWZBLUZdezR9KV8vZ2k7cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''IFgod2Upe3ZhciB4ZT13ZSsiIixGZT14ZS5pbmRleE9mKCI8IVtDREFUQVsiKTtpZigtMT09RmUpcmV0dXJuIHhlLnJlcGxhY2UoSCxmdW5jdGlvbihqZSxZZSl7cmV0dXJuIEpuW2plXXx8U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChZZSxqZS5pbmRleE9mKCJ4Iik+LTE/MTY6MTAp''@;'; put 'put ''KXx8amV9KS5yZXBsYWNlKGllLGZ1bmN0aW9uKGplLFllKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChZZSwxNikpfSk7dmFyIFplPXhlLmluZGV4T2YoIl1dPiIpO3JldHVybiBYKHhlLnNsaWNlKDAsRmUpKSt4ZS5zbGljZShGZSs5LFplKStYKHhlLnNsaWNlKFplKzMp''@;'; put 'put ''KX19KCksS3I9L1smPD4nIl0vZyxWcj0vW1x1MDAwMC1cdTAwMDhcdTAwMGItXHUwMDFmXS9nLGlpPS9feFswLTlhLWZBLUZdezR9Xy9nO2Z1bmN0aW9uIFJyKEgpe3JldHVybihIKyIiKS5yZXBsYWNlKGlpLCJfeDAwNUYkJiIpLnJlcGxhY2UoS3IsZnVuY3Rpb24oWCl7cmV0dXJuIG9yW1hd''@;'; put 'put ''fSkucmVwbGFjZShWcixmdW5jdGlvbihYKXtyZXR1cm4iX3giKygiMDAwIitYLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCkrIl8ifSl9ZnVuY3Rpb24gbGkoSCl7cmV0dXJuIFJyKEgpLnJlcGxhY2UoL1xuL2csIl94MDAwYV8iKX1mdW5jdGlvbiBNaShIKXtyZXR1cm4g''@;'; put 'put ''UnIoSCkucmVwbGFjZSgvIC9nLCJfeDAwMjBfIil9dmFyIG8wPS9bXHUwMDAwLVx1MDAxZl0vZztmdW5jdGlvbiBuMChIKXtyZXR1cm4oSCsiIikucmVwbGFjZShLcixmdW5jdGlvbihYKXtyZXR1cm4gb3JbWF19KS5yZXBsYWNlKC9cbi9nLCI8YnIvPiIpLnJlcGxhY2UobzAsZnVuY3Rpb24o''@;'; put 'put ''WCl7cmV0dXJuIiYjeCIrKCIwMDAiK1guY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KSsiOyJ9KX1mdW5jdGlvbiBkMChIKXtyZXR1cm4oSCsiIikucmVwbGFjZShLcixmdW5jdGlvbihYKXtyZXR1cm4gb3JbWF19KS5yZXBsYWNlKG8wLGZ1bmN0aW9uKFgpe3JldHVybiIm''@;'; put 'put ''I3giK1guY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSsiOyJ9KX12YXIgbTA9ZnVuY3Rpb24oKXt2YXIgSD0vJiMoXGQrKTsvZztmdW5jdGlvbiBpZShYLHdlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludCh3ZSwxMCkpfXJldHVybiBmdW5jdGlv''@;'; put 'put ''bih3ZSl7cmV0dXJuIHdlLnJlcGxhY2UoSCxpZSl9fSgpO2Z1bmN0aW9uIERpKEgpe3N3aXRjaChIKXtjYXNlIDE6Y2FzZSEwOmNhc2UiMSI6Y2FzZSJ0cnVlIjpjYXNlIlRSVUUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fXZhciBXMD1mdW5jdGlvbihpZSl7Zm9yKHZhciBYPSIiLHdl''@;'; put 'put ''PTAseGU9MCxGZT0wLFplPTAsamU9MCxZZT0wO3dlPGllLmxlbmd0aDspKHhlPWllLmNoYXJDb2RlQXQod2UrKykpPDEyOD9YKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHhlKTooRmU9aWUuY2hhckNvZGVBdCh3ZSsrKSx4ZT4xOTEmJnhlPDIyND8oamU9KDMxJnhlKTw8NixqZXw9NjMmRmUsWCs9''@;'; put 'put ''U3RyaW5nLmZyb21DaGFyQ29kZShqZSkpOihaZT1pZS5jaGFyQ29kZUF0KHdlKyspLHhlPDI0MD9YKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCgxNSZ4ZSk8PDEyfCg2MyZGZSk8PDZ8NjMmWmUpOihZZT0oKDcmeGUpPDwxOHwoNjMmRmUpPDwxMnwoNjMmWmUpPDw2fDYzJihqZT1pZS5jaGFyQ29k''@;'; put 'put ''ZUF0KHdlKyspKSktNjU1MzYsWCs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NisoWWU+Pj4xMCYxMDIzKSksWCs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NjMyMCsoMTAyMyZZZSkpKSkpO3JldHVybiBYfSxFbz1mdW5jdGlvbihIKXtmb3IodmFyIGllPVtdLFg9MCx3ZT0wLHhlPTA7WDxILmxl''@;'; put 'put ''bmd0aDspc3dpdGNoKHdlPUguY2hhckNvZGVBdChYKyspLCEwKXtjYXNlIHdlPDEyODppZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUod2UpKTticmVhaztjYXNlIHdlPDIwNDg6aWUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDE5Misod2U+PjYpKSksaWUucHVzaChTdHJpbmcuZnJvbUNo''@;'; put 'put ''YXJDb2RlKDEyOCsoNjMmd2UpKSk7YnJlYWs7Y2FzZSB3ZT49NTUyOTYmJndlPDU3MzQ0OndlLT01NTI5Nix4ZT1ILmNoYXJDb2RlQXQoWCsrKS01NjMyMCsod2U8PDEwKSxpZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMjQwKyh4ZT4+MTgmNykpKSxpZS5wdXNoKFN0cmluZy5mcm9tQ2hh''@;'; put 'put ''ckNvZGUoMTQ0Kyh4ZT4+MTImNjMpKSksaWUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCsoeGU+PjYmNjMpKSksaWUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCsoNjMmeGUpKSk7YnJlYWs7ZGVmYXVsdDppZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMjI0Kyh3ZT4+MTIp''@;'; put 'put ''KSksaWUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCsod2U+PjYmNjMpKSksaWUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCsoNjMmd2UpKSl9cmV0dXJuIGllLmpvaW4oIiIpfTtpZihJZSl7dmFyIHFvPWZ1bmN0aW9uKGllKXt2YXIgd2UseGUsWWUsWD1CdWZmZXIuYWxsb2Mo''@;'; put 'put ''MippZS5sZW5ndGgpLEZlPTEsWmU9MCxqZT0wO2Zvcih4ZT0wO3hlPGllLmxlbmd0aDt4ZSs9RmUpRmU9MSwoWWU9aWUuY2hhckNvZGVBdCh4ZSkpPDEyOD93ZT1ZZTpZZTwyMjQ/KHdlPTY0KigzMSZZZSkrKDYzJmllLmNoYXJDb2RlQXQoeGUrMSkpLEZlPTIpOlllPDI0MD8od2U9NDA5Nioo''@;'; put 'put ''MTUmWWUpKzY0Kig2MyZpZS5jaGFyQ29kZUF0KHhlKzEpKSsoNjMmaWUuY2hhckNvZGVBdCh4ZSsyKSksRmU9Myk6KEZlPTQsd2U9MjYyMTQ0Kig3JlllKSs0MDk2Kig2MyZpZS5jaGFyQ29kZUF0KHhlKzEpKSs2NCooNjMmaWUuY2hhckNvZGVBdCh4ZSsyKSkrKDYzJmllLmNoYXJDb2RlQXQo''@;'; put 'put ''eGUrMykpLGplPTU1Mjk2Kygod2UtPTY1NTM2KT4+PjEwJjEwMjMpLHdlPTU2MzIwKygxMDIzJndlKSksMCE9PWplJiYoWFtaZSsrXT0yNTUmamUsWFtaZSsrXT1qZT4+PjgsamU9MCksWFtaZSsrXT13ZSUyNTYsWFtaZSsrXT13ZT4+Pjg7cmV0dXJuIFguc2xpY2UoMCxaZSkudG9TdHJpbmco''@;'; put 'put ''InVjczIiKX0sY2E9ImZvbyBiYXIgYmF6XHhlMlx4OThceDgzXHhmMFx4OWZceDhkXHhhMyI7VzAoY2EpPT1xbyhjYSkmJihXMD1xbyk7dmFyIGxsPWZ1bmN0aW9uKGllKXtyZXR1cm4gVGUoaWUsImJpbmFyeSIpLnRvU3RyaW5nKCJ1dGY4Iil9O1cwKGNhKT09bGwoY2EpJiYoVzA9bGwpLEVv''@;'; put 'put ''PWZ1bmN0aW9uKEgpe3JldHVybiBUZShILCJ1dGY4IikudG9TdHJpbmcoImJpbmFyeSIpfX12YXIgSCxRaT0oSD17fSxmdW5jdGlvbihYLHdlKXt2YXIgeGU9WCsifCIrKHdlfHwiIik7cmV0dXJuIEhbeGVdP0hbeGVdOkhbeGVdPW5ldyBSZWdFeHAoIjwoPzpcXHcrOik/IitYKycoPzogeG1s''@;'; put 'put ''OnNwYWNlPSJwcmVzZXJ2ZSIpPyg/OltePl0qKT4oW1xcc1xcU10qPyk8Lyg/Olxcdys6KT8nK1grIj4iLHdlfHwiIil9KSxNYT1mdW5jdGlvbigpe3ZhciBIPVtbIm5ic3AiLCIgIl0sWyJtaWRkb3QiLCJceGI3Il0sWyJxdW90IiwnIiddLFsiYXBvcyIsIiciXSxbImd0IiwiPiJdLFsibHQi''@;'; put 'put ''LCI8Il0sWyJhbXAiLCImIl1dLm1hcChmdW5jdGlvbihpZSl7cmV0dXJuW25ldyBSZWdFeHAoIiYiK2llWzBdKyI7IiwiaWciKSxpZVsxXV19KTtyZXR1cm4gZnVuY3Rpb24oWCl7Zm9yKHZhciB3ZT1YLnJlcGxhY2UoL15bXHRcblxyIF0rLywiIikucmVwbGFjZSgvW1x0XG5cciBdKyQvLCIi''@;'; put 'put ''KS5yZXBsYWNlKC9bXHRcblxyIF0rL2csIiAiKS5yZXBsYWNlKC88XHMqW2JCXVtyUl1ccypcLz8+L2csIlxuIikucmVwbGFjZSgvPFtePl0qPi9nLCIiKSx4ZT0wO3hlPEgubGVuZ3RoOysreGUpd2U9d2UucmVwbGFjZShIW3hlXVswXSxIW3hlXVsxXSk7cmV0dXJuIHdlfX0oKSxubD1mdW5j''@;'; put 'put ''dGlvbigpe3ZhciBIPXt9O3JldHVybiBmdW5jdGlvbihYKXtyZXR1cm4gdm9pZCAwIT09SFtYXT9IW1hdOkhbWF09bmV3IFJlZ0V4cCgiPCg/OnZ0Oik/IitYKyI+KFtcXHNcXFNdKj8pPC8oPzp2dDopPyIrWCsiPiIsImciKX19KCksZ2w9LzxcLz8oPzp2dDopP3ZhcmlhbnQ+L2csQWk9Lzwo''@;'; put 'put ''Pzp2dDopKFtePl0qKT4oW1xzXFNdKik8LztmdW5jdGlvbiB2aShILGllKXt2YXIgWD1lbihIKSx3ZT1ILm1hdGNoKG5sKFguYmFzZVR5cGUpKXx8W10seGU9W107aWYod2UubGVuZ3RoIT1YLnNpemUpe2lmKGllLldURil0aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgdmVjdG9yIGxlbmd0''@;'; put 'put ''aCAiK3dlLmxlbmd0aCsiICE9ICIrWC5zaXplKTtyZXR1cm4geGV9cmV0dXJuIHdlLmZvckVhY2goZnVuY3Rpb24oRmUpe3ZhciBaZT1GZS5yZXBsYWNlKGdsLCIiKS5tYXRjaChBaSk7WmUmJnhlLnB1c2goe3Y6VzAoWmVbMl0pLHQ6WmVbMV19KX0pLHhlfXZhciBiMD0vKF5cc3xccyR8XG4p''@;'; put 'put ''LztmdW5jdGlvbiBzYShILGllKXtyZXR1cm4iPCIrSCsoaWUubWF0Y2goYjApPycgeG1sOnNwYWNlPSJwcmVzZXJ2ZSInOiIiKSsiPiIraWUrIjwvIitIKyI+In1mdW5jdGlvbiBybChIKXtyZXR1cm4gb24oSCkubWFwKGZ1bmN0aW9uKGllKXtyZXR1cm4iICIraWUrJz0iJytIW2llXSsnIid9''@;'; put 'put ''KS5qb2luKCIiKX1mdW5jdGlvbiBfaShILGllLFgpe3JldHVybiI8IitIKyhudWxsIT1YP3JsKFgpOiIiKSsobnVsbCE9aWU/KGllLm1hdGNoKGIwKT8nIHhtbDpzcGFjZT0icHJlc2VydmUiJzoiIikrIj4iK2llKyI8LyIrSDoiLyIpKyI+In1mdW5jdGlvbiBVMChILGllKXt0cnl7cmV0dXJu''@;'; put 'put ''IEgudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9cLlxkKi8sIiIpfWNhdGNoKFgpe2lmKGllKXRocm93IFh9cmV0dXJuIiJ9dmFyIGZpLFIwLFgwPXtkYzoiaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iLGRjdGVybXM6Imh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8iLGRjbWl0eXBl''@;'; put 'put ''OiJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvIixteDoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvbWFjL2V4Y2VsLzIwMDgvbWFpbiIscjoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcyIs''@;'; put 'put ''c2pzOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3NoZWV0anMvY29yZS1wcm9wZXJ0aWVzIix2dDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvZG9jUHJvcHNWVHlwZXMiLHhzaToiaHR0cDovL3d3''@;'; put 'put ''dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLHhzZDoiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiLG1haW46WyJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW4iLCJodHRwOi8vcHVybC5vY2xjLm9yZy9vb3ht''@;'; put 'put ''bC9zcHJlYWRzaGVldG1sL21haW4iLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9leGNlbC8yMDA2L21haW4iLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9leGNlbC8yMDA2LzIiXX0sdWFfbz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZp''@;'; put 'put ''Y2U6b2ZmaWNlIix1YV94PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpleGNlbCIsdWFfc3M9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOnNwcmVhZHNoZWV0Iix1YV92PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCIsdm49ZnVuY3Rpb24oSCl7Zm9y''@;'; put 'put ''KHZhciBpZT1bXSx3ZT0wO3dlPEhbMF0ubGVuZ3RoOysrd2UpaWYoSFswXVt3ZV0pZm9yKHZhciB4ZT0wLEZlPUhbMF1bd2VdLmxlbmd0aDt4ZTxGZTt4ZSs9MTAyNDApaWUucHVzaC5hcHBseShpZSxIWzBdW3dlXS5zbGljZSh4ZSx4ZSsxMDI0MCkpO3JldHVybiBpZX0sXzA9dm4sZ2M9ZnVu''@;'; put 'put ''Y3Rpb24oSCxpZSxYKXtmb3IodmFyIHdlPVtdLHhlPWllO3hlPFg7eGUrPTIpd2UucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKFBzKEgseGUpKSk7cmV0dXJuIHdlLmpvaW4oIiIpLnJlcGxhY2UoVCwiIil9LHBkPWdjLEIxPWZ1bmN0aW9uKEgsaWUsWCl7Zm9yKHZhciB3ZT1bXSx4ZT1pZTt4''@;'; put 'put ''ZTxpZStYOysreGUpd2UucHVzaCgoIjAiK0hbeGVdLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKTtyZXR1cm4gd2Uuam9pbigiIil9LGF1PUIxLFAxPWZ1bmN0aW9uKEgsaWUsWCl7Zm9yKHZhciB3ZT1bXSx4ZT1pZTt4ZTxYO3hlKyspd2UucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKFRpKEgs''@;'; put 'put ''eGUpKSk7cmV0dXJuIHdlLmpvaW4oIiIpfSxtYz1QMSx4Mj1mdW5jdGlvbihILGllKXt2YXIgWD1ZbChILGllKTtyZXR1cm4gWD4wP1AxKEgsaWUrNCxpZSs0K1gtMSk6IiJ9LFBsPXgyLGQzPWZ1bmN0aW9uKEgsaWUpe3ZhciBYPVlsKEgsaWUpO3JldHVybiBYPjA/UDEoSCxpZSs0LGllKzQr''@;'; put 'put ''WC0xKToiIn0sUTI9ZDMsczE9ZnVuY3Rpb24oSCxpZSl7dmFyIFg9MipZbChILGllKTtyZXR1cm4gWD4wP1AxKEgsaWUrNCxpZSs0K1gtMSk6IiJ9LFowPXMxO2ZpPVIwPWZ1bmN0aW9uKGllLFgpe3ZhciB3ZT1ZbChpZSxYKTtyZXR1cm4gd2U+MD9nYyhpZSxYKzQsWCs0K3dlKToiIn07dmFy''@;'; put 'put ''IGRzLG4yLG1vPWZ1bmN0aW9uKEgsaWUpe3ZhciBYPVlsKEgsaWUpO3JldHVybiBYPjA/UDEoSCxpZSs0LGllKzQrWCk6IiJ9LHJzPW1vO2RzPW4yPWZ1bmN0aW9uKEgsaWUpe3JldHVybiBmdW5jdGlvbiBqMChILGllKXtmb3IodmFyIFg9MS0yKihIW2llKzddPj4+Nyksd2U9KCgxMjcmSFtp''@;'; put 'put ''ZSs3XSk8PDQpKyhIW2llKzZdPj4+NCYxNSkseGU9MTUmSFtpZSs2XSxGZT01O0ZlPj0wOy0tRmUpeGU9MjU2KnhlK0hbaWUrRmVdO3JldHVybiAyMDQ3PT13ZT8wPT14ZT9YKigxLzApOk5hTjooMD09d2U/d2U9LTEwMjI6KHdlLT0xMDIzLHhlKz1NYXRoLnBvdygyLDUyKSksWCpNYXRoLnBv''@;'; put 'put ''dygyLHdlLTUyKSp4ZSl9KEgsaWUpfTt2YXIgVDI9ZnVuY3Rpb24oaWUpe3JldHVybiBBcnJheS5pc0FycmF5KGllKX07SWUmJihnYz1mdW5jdGlvbihILGllLFgpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIoSCk/SC50b1N0cmluZygidXRmMTZsZSIsaWUsWCkucmVwbGFjZShULCIiKTpwZChI''@;'; put 'put ''LGllLFgpfSxCMT1mdW5jdGlvbihILGllLFgpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIoSCk/SC50b1N0cmluZygiaGV4IixpZSxpZStYKTphdShILGllLFgpfSx4Mj1mdW5jdGlvbihpZSxYKXtpZighQnVmZmVyLmlzQnVmZmVyKGllKSlyZXR1cm4gUGwoaWUsWCk7dmFyIHdlPWllLnJlYWRV''@;'; put 'put ''SW50MzJMRShYKTtyZXR1cm4gd2U+MD9pZS50b1N0cmluZygidXRmOCIsWCs0LFgrNCt3ZS0xKToiIn0sZDM9ZnVuY3Rpb24oaWUsWCl7aWYoIUJ1ZmZlci5pc0J1ZmZlcihpZSkpcmV0dXJuIFEyKGllLFgpO3ZhciB3ZT1pZS5yZWFkVUludDMyTEUoWCk7cmV0dXJuIHdlPjA/aWUudG9TdHJp''@;'; put 'put ''bmcoInV0ZjgiLFgrNCxYKzQrd2UtMSk6IiJ9LHMxPWZ1bmN0aW9uKGllLFgpe2lmKCFCdWZmZXIuaXNCdWZmZXIoaWUpKXJldHVybiBaMChpZSxYKTt2YXIgd2U9MippZS5yZWFkVUludDMyTEUoWCk7cmV0dXJuIGllLnRvU3RyaW5nKCJ1dGYxNmxlIixYKzQsWCs0K3dlLTEpfSxmaT1mdW5j''@;'; put 'put ''dGlvbihpZSxYKXtpZighQnVmZmVyLmlzQnVmZmVyKGllKSlyZXR1cm4gUjAoaWUsWCk7dmFyIHdlPWllLnJlYWRVSW50MzJMRShYKTtyZXR1cm4gaWUudG9TdHJpbmcoInV0ZjE2bGUiLFgrNCxYKzQrd2UpfSxtbz1mdW5jdGlvbihpZSxYKXtpZighQnVmZmVyLmlzQnVmZmVyKGllKSlyZXR1''@;'; put 'put ''cm4gcnMoaWUsWCk7dmFyIHdlPWllLnJlYWRVSW50MzJMRShYKTtyZXR1cm4gaWUudG9TdHJpbmcoInV0ZjgiLFgrNCxYKzQrd2UpfSxQMT1mdW5jdGlvbihpZSxYLHdlKXtyZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGllKT9pZS50b1N0cmluZygidXRmOCIsWCx3ZSk6bWMoaWUsWCx3ZSl9LHZu''@;'; put 'put ''PWZ1bmN0aW9uKEgpe3JldHVybiBIWzBdLmxlbmd0aD4wJiZCdWZmZXIuaXNCdWZmZXIoSFswXVswXSk/QnVmZmVyLmNvbmNhdChIWzBdKTpfMChIKX0sVj1mdW5jdGlvbihIKXtyZXR1cm4gQnVmZmVyLmlzQnVmZmVyKEhbMF0pP0J1ZmZlci5jb25jYXQoSCk6W10uY29uY2F0LmFwcGx5KFtd''@;'; put 'put ''LEgpfSxkcz1mdW5jdGlvbihpZSxYKXtyZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGllKT9pZS5yZWFkRG91YmxlTEUoWCk6bjIoaWUsWCl9LFQyPWZ1bmN0aW9uKGllKXtyZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGllKXx8QXJyYXkuaXNBcnJheShpZSl9KSwidW5kZWZpbmVkIiE9dHlwZW9mIGNw''@;'; put 'put ''dGFibGUmJihnYz1mdW5jdGlvbihILGllLFgpe3JldHVybiBjcHRhYmxlLnV0aWxzLmRlY29kZSgxMjAwLEguc2xpY2UoaWUsWCkpLnJlcGxhY2UoVCwiIil9LFAxPWZ1bmN0aW9uKEgsaWUsWCl7cmV0dXJuIGNwdGFibGUudXRpbHMuZGVjb2RlKDY1MDAxLEguc2xpY2UoaWUsWCkpfSx4Mj1m''@;'; put 'put ''dW5jdGlvbihILGllKXt2YXIgWD1ZbChILGllKTtyZXR1cm4gWD4wP2NwdGFibGUudXRpbHMuZGVjb2RlKGosSC5zbGljZShpZSs0LGllKzQrWC0xKSk6IiJ9LGQzPWZ1bmN0aW9uKEgsaWUpe3ZhciBYPVlsKEgsaWUpO3JldHVybiBYPjA/Y3B0YWJsZS51dGlscy5kZWNvZGUoUSxILnNsaWNl''@;'; put 'put ''KGllKzQsaWUrNCtYLTEpKToiIn0sczE9ZnVuY3Rpb24oSCxpZSl7dmFyIFg9MipZbChILGllKTtyZXR1cm4gWD4wP2NwdGFibGUudXRpbHMuZGVjb2RlKDEyMDAsSC5zbGljZShpZSs0LGllKzQrWC0xKSk6IiJ9LGZpPWZ1bmN0aW9uKEgsaWUpe3ZhciBYPVlsKEgsaWUpO3JldHVybiBYPjA/''@;'; put 'put ''Y3B0YWJsZS51dGlscy5kZWNvZGUoMTIwMCxILnNsaWNlKGllKzQsaWUrNCtYKSk6IiJ9LG1vPWZ1bmN0aW9uKEgsaWUpe3ZhciBYPVlsKEgsaWUpO3JldHVybiBYPjA/Y3B0YWJsZS51dGlscy5kZWNvZGUoNjUwMDEsSC5zbGljZShpZSs0LGllKzQrWCkpOiIifSk7dmFyIFRpPWZ1bmN0aW9u''@;'; put 'put ''KEgsaWUpe3JldHVybiBIW2llXX0sUHM9ZnVuY3Rpb24oSCxpZSl7cmV0dXJuIDI1NipIW2llKzFdK0hbaWVdfSxOZj1mdW5jdGlvbihILGllKXt2YXIgWD0yNTYqSFtpZSsxXStIW2llXTtyZXR1cm4gWDwzMjc2OD9YOi0xKig2NTUzNS1YKzEpfSxZbD1mdW5jdGlvbihILGllKXtyZXR1cm4g''@;'; put 'put ''SFtpZSszXSooMTw8MjQpKyhIW2llKzJdPDwxNikrKEhbaWUrMV08PDgpK0hbaWVdfSxOYz1mdW5jdGlvbihILGllKXtyZXR1cm4gSFtpZSszXTw8MjR8SFtpZSsyXTw8MTZ8SFtpZSsxXTw8OHxIW2llXX0sY289ZnVuY3Rpb24oSCxpZSl7cmV0dXJuIEhbaWVdPDwyNHxIW2llKzFdPDwxNnxI''@;'; put 'put ''W2llKzJdPDw4fEhbaWUrM119O2Z1bmN0aW9uIEM0KEgsaWUpe3ZhciB3ZSx4ZSxaZSxqZSxZZSxNdCxYPSIiLEZlPVtdO3N3aXRjaChpZSl7Y2FzZSJkYmNzIjppZihNdD10aGlzLmwsSWUmJkJ1ZmZlci5pc0J1ZmZlcih0aGlzKSlYPXRoaXMuc2xpY2UodGhpcy5sLHRoaXMubCsyKkgpLnRv''@;'; put 'put ''U3RyaW5nKCJ1dGYxNmxlIik7ZWxzZSBmb3IoWWU9MDtZZTxIOysrWWUpWCs9U3RyaW5nLmZyb21DaGFyQ29kZShQcyh0aGlzLE10KSksTXQrPTI7SCo9MjticmVhaztjYXNlInV0ZjgiOlg9UDEodGhpcyx0aGlzLmwsdGhpcy5sK0gpO2JyZWFrO2Nhc2UidXRmMTZsZSI6WD1nYyh0aGlzLHRo''@;'; put 'put ''aXMubCx0aGlzLmwrKEgqPTIpKTticmVhaztjYXNlIndzdHIiOmlmKCJ1bmRlZmluZWQiPT10eXBlb2YgY3B0YWJsZSlyZXR1cm4gQzQuY2FsbCh0aGlzLEgsImRiY3MiKTtYPWNwdGFibGUudXRpbHMuZGVjb2RlKFEsdGhpcy5zbGljZSh0aGlzLmwsdGhpcy5sKzIqSCkpLEgqPTI7YnJlYWs7''@;'; put 'put ''Y2FzZSJscHN0ci1hbnNpIjpYPXgyKHRoaXMsdGhpcy5sKSxIPTQrWWwodGhpcyx0aGlzLmwpO2JyZWFrO2Nhc2UibHBzdHItY3AiOlg9ZDModGhpcyx0aGlzLmwpLEg9NCtZbCh0aGlzLHRoaXMubCk7YnJlYWs7Y2FzZSJscHdzdHIiOlg9czEodGhpcyx0aGlzLmwpLEg9NCsyKllsKHRoaXMs''@;'; put 'put ''dGhpcy5sKTticmVhaztjYXNlImxwcDQiOkg9NCtZbCh0aGlzLHRoaXMubCksWD1maSh0aGlzLHRoaXMubCksMiZIJiYoSCs9Mik7YnJlYWs7Y2FzZSI4bHBwNCI6SD00K1lsKHRoaXMsdGhpcy5sKSxYPW1vKHRoaXMsdGhpcy5sKSwzJkgmJihIKz00LSgzJkgpKTticmVhaztjYXNlImNzdHIi''@;'; put 'put ''OmZvcihIPTAsWD0iIjswIT09KFplPVRpKHRoaXMsdGhpcy5sK0grKykpOylGZS5wdXNoKGRlKFplKSk7WD1GZS5qb2luKCIiKTticmVhaztjYXNlIl93c3RyIjpmb3IoSD0wLFg9IiI7MCE9PShaZT1Qcyh0aGlzLHRoaXMubCtIKSk7KUZlLnB1c2goZGUoWmUpKSxIKz0yO0grPTIsWD1GZS5q''@;'; put 'put ''b2luKCIiKTticmVhaztjYXNlImRiY3MtY29udCI6Zm9yKFg9IiIsTXQ9dGhpcy5sLFllPTA7WWU8SDsrK1llKXtpZih0aGlzLmxlbnMmJi0xIT09dGhpcy5sZW5zLmluZGV4T2YoTXQpKXJldHVybiBaZT1UaSh0aGlzLE10KSx0aGlzLmw9TXQrMSxqZT1DNC5jYWxsKHRoaXMsSC1ZZSxaZT8i''@;'; put 'put ''ZGJjcy1jb250Ijoic2Jjcy1jb250IiksRmUuam9pbigiIikramU7RmUucHVzaChkZShQcyh0aGlzLE10KSkpLE10Kz0yfVg9RmUuam9pbigiIiksSCo9MjticmVhaztjYXNlImNwc3RyIjppZigidW5kZWZpbmVkIiE9dHlwZW9mIGNwdGFibGUpe1g9Y3B0YWJsZS51dGlscy5kZWNvZGUoUSx0''@;'; put 'put ''aGlzLnNsaWNlKHRoaXMubCx0aGlzLmwrSCkpO2JyZWFrfWNhc2Uic2Jjcy1jb250Ijpmb3IoWD0iIixNdD10aGlzLmwsWWU9MDtZZSE9SDsrK1llKXtpZih0aGlzLmxlbnMmJi0xIT09dGhpcy5sZW5zLmluZGV4T2YoTXQpKXJldHVybiBaZT1UaSh0aGlzLE10KSx0aGlzLmw9TXQrMSxqZT1D''@;'; put 'put ''NC5jYWxsKHRoaXMsSC1ZZSxaZT8iZGJjcy1jb250Ijoic2Jjcy1jb250IiksRmUuam9pbigiIikramU7RmUucHVzaChkZShUaSh0aGlzLE10KSkpLE10Kz0xfVg9RmUuam9pbigiIik7YnJlYWs7ZGVmYXVsdDpzd2l0Y2goSCl7Y2FzZSAxOnJldHVybiB3ZT1UaSh0aGlzLHRoaXMubCksdGhp''@;'; put 'put ''cy5sKyssd2U7Y2FzZSAyOnJldHVybiB3ZT0oImkiPT09aWU/TmY6UHMpKHRoaXMsdGhpcy5sKSx0aGlzLmwrPTIsd2U7Y2FzZSA0OmNhc2UtNDpyZXR1cm4iaSI9PT1pZXx8MD09KDEyOCZ0aGlzW3RoaXMubCszXSk/KHdlPShIPjA/TmM6Y28pKHRoaXMsdGhpcy5sKSx0aGlzLmwrPTQsd2Up''@;'; put 'put ''Oih4ZT1ZbCh0aGlzLHRoaXMubCksdGhpcy5sKz00LHhlKTtjYXNlIDg6Y2FzZS04OmlmKCJmIj09PWllKXJldHVybiB4ZT04PT1IP2RzKHRoaXMsdGhpcy5sKTpkcyhbdGhpc1t0aGlzLmwrN10sdGhpc1t0aGlzLmwrNl0sdGhpc1t0aGlzLmwrNV0sdGhpc1t0aGlzLmwrNF0sdGhpc1t0aGlz''@;'; put 'put ''LmwrM10sdGhpc1t0aGlzLmwrMl0sdGhpc1t0aGlzLmwrMV0sdGhpc1t0aGlzLmwrMF1dLDApLHRoaXMubCs9OCx4ZTtIPTg7Y2FzZSAxNjpYPUIxKHRoaXMsdGhpcy5sLEgpfX1yZXR1cm4gdGhpcy5sKz1ILFh9dmFyIFVzPWZ1bmN0aW9uKEgsaWUsWCl7SFtYXT0yNTUmaWUsSFtYKzFdPWll''@;'; put 'put ''Pj4+OCYyNTV9O2Z1bmN0aW9uIHZzKEgsaWUsWCl7dmFyIHdlPTAseGU9MDtpZigiZGJjcyI9PT1YKXtmb3IoeGU9MDt4ZSE9aWUubGVuZ3RoOysreGUpVXModGhpcyxpZS5jaGFyQ29kZUF0KHhlKSx0aGlzLmwrMip4ZSk7d2U9MippZS5sZW5ndGh9ZWxzZSBpZigic2JjcyI9PT1YKXtpZigi''@;'; put 'put ''dW5kZWZpbmVkIiE9dHlwZW9mIGNwdGFibGUmJjg3ND09ailmb3IoeGU9MDt4ZSE9aWUubGVuZ3RoOysreGUpe3ZhciBGZT1jcHRhYmxlLnV0aWxzLmVuY29kZShqLGllLmNoYXJBdCh4ZSkpO3RoaXNbdGhpcy5sK3hlXT1GZVswXX1lbHNlIGZvcihpZT1pZS5yZXBsYWNlKC9bXlx4MDAtXHg3''@;'; put 'put ''Rl0vZywiXyIpLHhlPTA7eGUhPWllLmxlbmd0aDsrK3hlKXRoaXNbdGhpcy5sK3hlXT0yNTUmaWUuY2hhckNvZGVBdCh4ZSk7d2U9aWUubGVuZ3RofWVsc2V7aWYoImhleCI9PT1YKXtmb3IoO3hlPEg7Kyt4ZSl0aGlzW3RoaXMubCsrXT1wYXJzZUludChpZS5zbGljZSgyKnhlLDIqeGUrMiks''@;'; put 'put ''MTYpfHwwO3JldHVybiB0aGlzfWlmKCJ1dGYxNmxlIj09PVgpe3ZhciBaZT1NYXRoLm1pbih0aGlzLmwrSCx0aGlzLmxlbmd0aCk7Zm9yKHhlPTA7eGU8TWF0aC5taW4oaWUubGVuZ3RoLEgpOysreGUpe3ZhciBqZT1pZS5jaGFyQ29kZUF0KHhlKTt0aGlzW3RoaXMubCsrXT0yNTUmamUsdGhp''@;'; put 'put ''c1t0aGlzLmwrK109amU+Pjh9Zm9yKDt0aGlzLmw8WmU7KXRoaXNbdGhpcy5sKytdPTA7cmV0dXJuIHRoaXN9c3dpdGNoKEgpe2Nhc2UgMTp3ZT0xLHRoaXNbdGhpcy5sXT0yNTUmaWU7YnJlYWs7Y2FzZSAyOndlPTIsdGhpc1t0aGlzLmxdPTI1NSZpZSx0aGlzW3RoaXMubCsxXT0yNTUmKGll''@;'; put 'put ''Pj4+PTgpO2JyZWFrO2Nhc2UgMzp3ZT0zLHRoaXNbdGhpcy5sXT0yNTUmaWUsdGhpc1t0aGlzLmwrMV09MjU1JihpZT4+Pj04KSx0aGlzW3RoaXMubCsyXT0yNTUmKGllPj4+PTgpO2JyZWFrO2Nhc2UgNDp3ZT00LGZ1bmN0aW9uKEgsaWUsWCl7SFtYXT0yNTUmaWUsSFtYKzFdPWllPj4+OCYy''@;'; put 'put ''NTUsSFtYKzJdPWllPj4+MTYmMjU1LEhbWCszXT1pZT4+PjI0JjI1NX0odGhpcyxpZSx0aGlzLmwpO2JyZWFrO2Nhc2UgODppZih3ZT04LCJmIj09PVgpeyFmdW5jdGlvbiBCbChILGllLFgpe3ZhciB3ZT0oaWU8MHx8MS9pZT09LTEvMD8xOjApPDw3LHhlPTAsRmU9MCxaZT13ZT8taWU6aWU7''@;'; put 'put ''aXNGaW5pdGUoWmUpPzA9PVplP3hlPUZlPTA6KHhlPU1hdGguZmxvb3IoTWF0aC5sb2coWmUpL01hdGguTE4yKSxGZT1aZSpNYXRoLnBvdygyLDUyLXhlKSx4ZTw9LTEwMjMmJighaXNGaW5pdGUoRmUpfHxGZTxNYXRoLnBvdygyLDUyKSk/eGU9LTEwMjI6KEZlLT1NYXRoLnBvdygyLDUyKSx4''@;'; put 'put ''ZSs9MTAyMykpOih4ZT0yMDQ3LEZlPWlzTmFOKGllKT8yNjk4NTowKTtmb3IodmFyIGplPTA7amU8PTU7KytqZSxGZS89MjU2KUhbWCtqZV09MjU1JkZlO0hbWCs2XT0oMTUmeGUpPDw0fDE1JkZlLEhbWCs3XT14ZT4+NHx3ZX0odGhpcyxpZSx0aGlzLmwpO2JyZWFrfWNhc2UgMTY6YnJlYWs7''@;'; put 'put ''Y2FzZS00OndlPTQsZnVuY3Rpb24oSCxpZSxYKXtIW1hdPTI1NSZpZSxIW1grMV09aWU+PjgmMjU1LEhbWCsyXT1pZT4+MTYmMjU1LEhbWCszXT1pZT4+MjQmMjU1fSh0aGlzLGllLHRoaXMubCl9fXJldHVybiB0aGlzLmwrPXdlLHRoaXN9ZnVuY3Rpb24gRjEoSCxpZSl7dmFyIFg9QjEodGhp''@;'; put 'put ''cyx0aGlzLmwsSC5sZW5ndGg+PjEpO2lmKFghPT1IKXRocm93IG5ldyBFcnJvcihpZSsiRXhwZWN0ZWQgIitIKyIgc2F3ICIrWCk7dGhpcy5sKz1ILmxlbmd0aD4+MX1mdW5jdGlvbiBLbChILGllKXtILmw9aWUsSC5yZWFkX3NoaWZ0PUM0LEguY2hrPUYxLEgud3JpdGVfc2hpZnQ9dnN9ZnVu''@;'; put 'put ''Y3Rpb24gQ3MoSCxpZSl7SC5sKz1pZX1mdW5jdGlvbiBSaShIKXt2YXIgaWU9aGUoSCk7cmV0dXJuIEtsKGllLDApLGllfWZ1bmN0aW9uIEgxKEgsaWUsWCl7aWYoSCl7dmFyIHdlLHhlLEZlO0tsKEgsSC5sfHwwKTtmb3IodmFyIFplPUgubGVuZ3RoLGplPTAsWWU9MDtILmw8WmU7KXsxMjgm''@;'; put 'put ''KGplPUgucmVhZF9zaGlmdCgxKSkmJihqZT0oMTI3JmplKSsoKDEyNyZILnJlYWRfc2hpZnQoMSkpPDw3KSk7dmFyIE10PXg1W2plXXx8eDVbNjU1MzVdO2ZvcihGZT0xMjcmKHdlPUgucmVhZF9zaGlmdCgxKSkseGU9MTt4ZTw0JiYxMjgmd2U7Kyt4ZSlGZSs9KDEyNyYod2U9SC5yZWFkX3No''@;'; put 'put ''aWZ0KDEpKSk8PDcqeGU7WWU9SC5sK0ZlO3ZhciB4dD0oTXQuZnx8Q3MpKEgsRmUsWCk7aWYoSC5sPVllLGllKHh0LE10Lm4samUpKXJldHVybn19fWZ1bmN0aW9uIEoyKCl7dmFyIEg9W10saWU9SWU/MjU2OjIwNDgsWD1mdW5jdGlvbihNdCl7dmFyIHh0PVJpKE10KTtyZXR1cm4gS2woeHQs''@;'; put 'put ''MCkseHR9LHdlPVgoaWUpLHhlPWZ1bmN0aW9uKCl7IXdlfHwod2UubGVuZ3RoPndlLmwmJigod2U9d2Uuc2xpY2UoMCx3ZS5sKSkubD13ZS5sZW5ndGgpLHdlLmxlbmd0aD4wJiZILnB1c2god2UpLHdlPW51bGwpfSxGZT1mdW5jdGlvbihNdCl7cmV0dXJuIHdlJiZNdDx3ZS5sZW5ndGgtd2Uu''@;'; put 'put ''bD93ZTooeGUoKSx3ZT1YKE1hdGgubWF4KE10KzEsaWUpKSl9O3JldHVybntuZXh0OkZlLHB1c2g6ZnVuY3Rpb24oTXQpe3hlKCksbnVsbD09KHdlPU10KS5sJiYod2UubD13ZS5sZW5ndGgpLEZlKGllKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHhlKCksdm4oW0hdKX0sX2J1ZnM6SH19ZnVu''@;'; put 'put ''Y3Rpb24gQzAoSCxpZSxYLHdlKXt2YXIgRmUseGU9K3VUW2llXTtpZighaXNOYU4oeGUpKXt3ZXx8KHdlPXg1W3hlXS5wfHwoWHx8W10pLmxlbmd0aHx8MCksRmU9MSsoeGU+PTEyOD8xOjApKzEsd2U+PTEyOCYmKytGZSx3ZT49MTYzODQmJisrRmUsd2U+PTIwOTcxNTImJisrRmU7dmFyIFpl''@;'; put 'put ''PUgubmV4dChGZSk7eGU8PTEyNz9aZS53cml0ZV9zaGlmdCgxLHhlKTooWmUud3JpdGVfc2hpZnQoMSwxMjgrKDEyNyZ4ZSkpLFplLndyaXRlX3NoaWZ0KDEseGU+PjcpKTtmb3IodmFyIGplPTA7NCE9amU7KytqZSl7aWYoISh3ZT49MTI4KSl7WmUud3JpdGVfc2hpZnQoMSx3ZSk7YnJlYWt9''@;'; put 'put ''WmUud3JpdGVfc2hpZnQoMSwxMjgrKDEyNyZ3ZSkpLHdlPj49N313ZT4wJiZUMihYKSYmSC5wdXNoKFgpfX1mdW5jdGlvbiB1MShILGllLFgpe3ZhciB3ZT1sbihIKTtpZihpZS5zPyh3ZS5jUmVsJiYod2UuYys9aWUucy5jKSx3ZS5yUmVsJiYod2Uucis9aWUucy5yKSk6KHdlLmNSZWwmJih3''@;'; put 'put ''ZS5jKz1pZS5jKSx3ZS5yUmVsJiYod2Uucis9aWUucikpLCFYfHxYLmJpZmY8MTIpe2Zvcig7d2UuYz49MjU2Oyl3ZS5jLT0yNTY7Zm9yKDt3ZS5yPj02NTUzNjspd2Uuci09NjU1MzZ9cmV0dXJuIHdlfWZ1bmN0aW9uIG1sKEgsaWUsWCl7dmFyIHdlPWxuKEgpO3JldHVybiB3ZS5zPXUxKHdl''@;'; put 'put ''LnMsaWUucyxYKSx3ZS5lPXUxKHdlLmUsaWUucyxYKSx3ZX1mdW5jdGlvbiBwMyhILGllKXtpZihILmNSZWwmJkguYzwwKWZvcihIPWxuKEgpO0guYzwwOylILmMrPWllPjg/MTYzODQ6MjU2O2lmKEguclJlbCYmSC5yPDApZm9yKEg9bG4oSCk7SC5yPDA7KUgucis9aWU+OD8xMDQ4NTc2Omll''@;'; put 'put ''PjU/NjU1MzY6MTYzODQ7aWYoSC5jUmVsJiZILmM+PShpZT44PzE2Mzg0OjI1NikpZm9yKEg9bG4oSCk7SC5jPj0oaWU+OD8xNjM4NDoyNTYpOylILmMtPWllPjg/MTYzODQ6MjU2O2lmKEguclJlbCYmSC5yPj0xMDQ4NTc2KWZvcihIPWxuKEgpO0gucj49MTA0ODU3NjspSC5yLT0xMDQ4NTc2''@;'; put 'put ''O3ZhciBYPVkwKEgpO3JldHVybiFILmNSZWwmJm51bGwhPUguY1JlbCYmKFg9ZnVuY3Rpb24ganAoSCl7cmV0dXJuIEgucmVwbGFjZSgvXihbQS1aXSkvLCIkJCQxIil9KFgpKSwhSC5yUmVsJiZudWxsIT1ILnJSZWwmJihYPWZ1bmN0aW9uIFV1KEgpe3JldHVybiBILnJlcGxhY2UoLyhbQS1a''@;'; put 'put ''XXxeKShcZCspJC8sIiQxJCQkMiIpfShYKSksWH1mdW5jdGlvbiBZdShILGllKXtyZXR1cm4gMCE9SC5zLnJ8fEgucy5yUmVsfHxILmUuciE9KGllLmJpZmY+PTEyPzEwNDg1NzU6aWUuYmlmZj49OD82NTUzNjoxNjM4NCl8fEguZS5yUmVsPzAhPUgucy5jfHxILnMuY1JlbHx8SC5lLmMhPShp''@;'; put 'put ''ZS5iaWZmPj0xMj8xNjM4MzoyNTUpfHxILmUuY1JlbD9wMyhILnMsaWUuYmlmZikrIjoiK3AzKEguZSxpZS5iaWZmKTooSC5zLnJSZWw/IiI6IiQiKStYYShILnMucikrIjoiKyhILmUuclJlbD8iIjoiJCIpK1hhKEguZS5yKTooSC5zLmNSZWw/IiI6IiQiKStfYShILnMuYykrIjoiKyhILmUu''@;'; put 'put ''Y1JlbD8iIjoiJCIpK19hKEguZS5jKX12YXIgc289e307ZnVuY3Rpb24gYXMoSCl7cmV0dXJuIHBhcnNlSW50KGZ1bmN0aW9uIEExKEgpe3JldHVybiBILnJlcGxhY2UoL1wkKFxkKykkLywiJDEiKX0oSCksMTApLTF9ZnVuY3Rpb24gWGEoSCl7cmV0dXJuIiIrKEgrMSl9ZnVuY3Rpb24gbWgo''@;'; put 'put ''SCl7Zm9yKHZhciBpZT1mdW5jdGlvbiBrNChIKXtyZXR1cm4gSC5yZXBsYWNlKC9eXCQoW0EtWl0pLywiJDEiKX0oSCksWD0wLHdlPTA7d2UhPT1pZS5sZW5ndGg7Kyt3ZSlYPTI2KlgraWUuY2hhckNvZGVBdCh3ZSktNjQ7cmV0dXJuIFgtMX1mdW5jdGlvbiBfYShIKXtpZihIPDApdGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCJpbnZhbGlkIGNvbHVtbiAiK0gpO3ZhciBpZT0iIjtmb3IoKytIO0g7SD1NYXRoLmZsb29yKChILTEpLzI2KSlpZT1TdHJpbmcuZnJvbUNoYXJDb2RlKChILTEpJTI2KzY1KStpZTtyZXR1cm4gaWV9ZnVuY3Rpb24gdWwoSCl7Zm9yKHZhciBpZT0wLFg9MCx3ZT0wO3dlPEgu''@;'; put 'put ''bGVuZ3RoOysrd2Upe3ZhciB4ZT1ILmNoYXJDb2RlQXQod2UpO3hlPj00OCYmeGU8PTU3P2llPTEwKmllKyh4ZS00OCk6eGU+PTY1JiZ4ZTw9OTAmJihYPTI2KlgrKHhlLTY0KSl9cmV0dXJue2M6WC0xLHI6aWUtMX19ZnVuY3Rpb24gWTAoSCl7Zm9yKHZhciBpZT1ILmMrMSxYPSIiO2llO2ll''@;'; put 'put ''PShpZS0xKS8yNnwwKVg9U3RyaW5nLmZyb21DaGFyQ29kZSgoaWUtMSklMjYrNjUpK1g7cmV0dXJuIFgrKEgucisxKX1mdW5jdGlvbiBBcyhIKXt2YXIgaWU9SC5pbmRleE9mKCI6Iik7cmV0dXJuLTE9PWllP3tzOnVsKEgpLGU6dWwoSCl9OntzOnVsKEguc2xpY2UoMCxpZSkpLGU6dWwoSC5z''@;'; put 'put ''bGljZShpZSsxKSl9fWZ1bmN0aW9uIGZhKEgsaWUpe3JldHVybiB2b2lkIDA9PT1pZXx8Im51bWJlciI9PXR5cGVvZiBpZT9mYShILnMsSC5lKTooInN0cmluZyIhPXR5cGVvZiBIJiYoSD1ZMChIKSksInN0cmluZyIhPXR5cGVvZiBpZSYmKGllPVkwKGllKSksSD09aWU/SDpIKyI6IitpZSl9''@;'; put 'put ''ZnVuY3Rpb24gRm8oSCl7dmFyIGllPUpTT04ucGFyc2UoJ3sicyI6eyJjIjowLCJyIjowfSwiZSI6eyJjIjowLCJyIjowfX0nKSxYPTAsd2U9MCx4ZT0wLEZlPUgubGVuZ3RoO2ZvcihYPTA7d2U8RmUmJiEoKHhlPUguY2hhckNvZGVBdCh3ZSktNjQpPDF8fHhlPjI2KTsrK3dlKVg9MjYqWCt4''@;'; put 'put ''ZTtmb3IoaWUucy5jPS0tWCxYPTA7d2U8RmUmJiEoKHhlPUguY2hhckNvZGVBdCh3ZSktNDgpPDB8fHhlPjkpOysrd2UpWD0xMCpYK3hlO2lmKGllLnMucj0tLVgsd2U9PT1GZXx8NTg9PT1ILmNoYXJDb2RlQXQoKyt3ZSkpcmV0dXJuIGllLmUuYz1pZS5zLmMsaWUuZS5yPWllLnMucixpZTtm''@;'; put 'put ''b3IoWD0wO3dlIT1GZSYmISgoeGU9SC5jaGFyQ29kZUF0KHdlKS02NCk8MXx8eGU+MjYpOysrd2UpWD0yNipYK3hlO2ZvcihpZS5lLmM9LS1YLFg9MDt3ZSE9RmUmJiEoKHhlPUguY2hhckNvZGVBdCh3ZSktNDgpPDB8fHhlPjkpOysrd2UpWD0xMCpYK3hlO3JldHVybiBpZS5lLnI9LS1YLGll''@;'; put 'put ''fWZ1bmN0aW9uIGdkKEgsaWUpe3ZhciBYPSJkIj09SC50JiZpZSBpbnN0YW5jZW9mIERhdGU7aWYobnVsbCE9SC56KXRyeXtyZXR1cm4gSC53PUYuZm9ybWF0KEgueixYP2Z0KGllKTppZSl9Y2F0Y2god2Upe310cnl7cmV0dXJuIEgudz1GLmZvcm1hdCgoSC5YRnx8e30pLm51bUZtdElkfHwo''@;'; put 'put ''WD8xNDowKSxYP2Z0KGllKTppZSl9Y2F0Y2god2Upe3JldHVybiIiK2llfX1mdW5jdGlvbiB5MShILGllLFgpe3JldHVybiBudWxsPT1IfHxudWxsPT1ILnR8fCJ6Ij09SC50PyIiOnZvaWQgMCE9PUgudz9ILnc6KCJkIj09SC50JiYhSC56JiZYJiZYLmRhdGVORiYmKEguej1YLmRhdGVORiks''@;'; put 'put ''ImUiPT1ILnQ/TjFbSC52XXx8SC52OmdkKEgsbnVsbD09aWU/SC52OmllKSl9ZnVuY3Rpb24gdzEoSCxpZSl7dmFyIFg9aWUmJmllLnNoZWV0P2llLnNoZWV0OiJTaGVldDEiLHdlPXt9O3JldHVybiB3ZVtYXT1ILHtTaGVldE5hbWVzOltYXSxTaGVldHM6d2V9fWZ1bmN0aW9uIGxmKEgsaWUs''@;'; put 'put ''WCl7dmFyIHdlPVh8fHt9LHhlPUg/QXJyYXkuaXNBcnJheShIKTp3ZS5kZW5zZSxGZT1IfHwoeGU/W106e30pLFplPTAsamU9MDtpZihGZSYmbnVsbCE9d2Uub3JpZ2luKXtpZigibnVtYmVyIj09dHlwZW9mIHdlLm9yaWdpbilaZT13ZS5vcmlnaW47ZWxzZXt2YXIgWWU9InN0cmluZyI9PXR5''@;'; put 'put ''cGVvZiB3ZS5vcmlnaW4/dWwod2Uub3JpZ2luKTp3ZS5vcmlnaW47WmU9WWUucixqZT1ZZS5jfUZlWyIhcmVmIl18fChGZVsiIXJlZiJdPSJBMTpBMSIpfXZhciBNdD17czp7YzoxZTcscjoxZTd9LGU6e2M6MCxyOjB9fTtpZihGZVsiIXJlZiJdKXt2YXIgeHQ9Rm8oRmVbIiFyZWYiXSk7TXQu''@;'; put 'put ''cy5jPXh0LnMuYyxNdC5zLnI9eHQucy5yLE10LmUuYz1NYXRoLm1heChNdC5lLmMseHQuZS5jKSxNdC5lLnI9TWF0aC5tYXgoTXQuZS5yLHh0LmUuciksLTE9PVplJiYoTXQuZS5yPVplPXh0LmUucisxKX1mb3IodmFyIFJ0PTA7UnQhPWllLmxlbmd0aDsrK1J0KWlmKGllW1J0XSl7aWYoIUFy''@;'; put 'put ''cmF5LmlzQXJyYXkoaWVbUnRdKSl0aHJvdyBuZXcgRXJyb3IoImFvYV90b19zaGVldCBleHBlY3RzIGFuIGFycmF5IG9mIGFycmF5cyIpO2Zvcih2YXIgVXQ9MDtVdCE9aWVbUnRdLmxlbmd0aDsrK1V0KWlmKHZvaWQgMCE9PWllW1J0XVtVdF0pe3ZhciBubj17djppZVtSdF1bVXRdfSxDbj1a''@;'; put 'put ''ZStSdCxEdD1qZStVdDtpZihNdC5zLnI+Q24mJihNdC5zLnI9Q24pLE10LnMuYz5EdCYmKE10LnMuYz1EdCksTXQuZS5yPENuJiYoTXQuZS5yPUNuKSxNdC5lLmM8RHQmJihNdC5lLmM9RHQpLCFpZVtSdF1bVXRdfHwib2JqZWN0IiE9dHlwZW9mIGllW1J0XVtVdF18fEFycmF5LmlzQXJyYXko''@;'; put 'put ''aWVbUnRdW1V0XSl8fGllW1J0XVtVdF1pbnN0YW5jZW9mIERhdGUpaWYoQXJyYXkuaXNBcnJheShubi52KSYmKG5uLmY9aWVbUnRdW1V0XVsxXSxubi52PW5uLnZbMF0pLG51bGw9PT1ubi52KWlmKG5uLmYpbm4udD0ibiI7ZWxzZSBpZih3ZS5udWxsRXJyb3Ipbm4udD0iZSIsbm4udj0wO2Vs''@;'; put 'put ''c2V7aWYoIXdlLnNoZWV0U3R1YnMpY29udGludWU7bm4udD0ieiJ9ZWxzZSJudW1iZXIiPT10eXBlb2Ygbm4udj9ubi50PSJuIjoiYm9vbGVhbiI9PXR5cGVvZiBubi52P25uLnQ9ImIiOm5uLnYgaW5zdGFuY2VvZiBEYXRlPyhubi56PXdlLmRhdGVORnx8Ri5fdGFibGVbMTRdLHdlLmNlbGxE''@;'; put 'put ''YXRlcz8obm4udD0iZCIsbm4udz1GLmZvcm1hdChubi56LGZ0KG5uLnYpKSk6KG5uLnQ9Im4iLG5uLnY9ZnQobm4udiksbm4udz1GLmZvcm1hdChubi56LG5uLnYpKSk6bm4udD0icyI7ZWxzZSBubj1pZVtSdF1bVXRdO2lmKG5uJiZubi5oKXRyeXtubi5SPXVzLmh0bWxfdG9fcnMobm4uaCks''@;'; put 'put ''bm4udj0iIjtmb3IodmFyIHp0PTA7enQ8bm4uUi5sZW5ndGg7Kyt6dClubi52Kz1ubi5SW3p0XS52fHwiIn1jYXRjaChUbil7fWlmKHhlKUZlW0NuXXx8KEZlW0NuXT1bXSksRmVbQ25dW0R0XSYmRmVbQ25dW0R0XS5zJiYobm4ucz1GZVtDbl1bRHRdLnMpLEZlW0NuXVtEdF0mJkZlW0NuXVtE''@;'; put 'put ''dF0ueiYmKG5uLno9RmVbQ25dW0R0XS56KSxGZVtDbl1bRHRdPW5uO2Vsc2V7dmFyIFBuPVkwKHtjOkR0LHI6Q259KTtGZVtQbl0mJkZlW1BuXS5zJiYobm4ucz1GZVtQbl0ucyksRmVbUG5dJiZGZVtQbl0ueiYmKG5uLno9RmVbUG5dLnopLEZlW1BuXT1ubn19fXJldHVybiBNdC5zLmM8MWU3''@;'; put 'put ''JiYoRmVbIiFyZWYiXT1mYShNdCkpLEZlfWZ1bmN0aW9uIG1kKEgsaWUpe3JldHVybiBsZihudWxsLEgsaWUpfWZ1bmN0aW9uICRsKEgsaWUpe3JldHVybiBpZXx8KGllPVJpKDQpKSxpZS53cml0ZV9zaGlmdCg0LEgpLGllfWZ1bmN0aW9uIHh1KEgpe3ZhciBpZT1ILnJlYWRfc2hpZnQoNCk7''@;'; put 'put ''cmV0dXJuIDA9PT1pZT8iIjpILnJlYWRfc2hpZnQoaWUsImRiY3MiKX1mdW5jdGlvbiBsdShILGllKXt2YXIgWD0hMTtyZXR1cm4gbnVsbD09aWUmJihYPSEwLGllPVJpKDQrMipILmxlbmd0aCkpLGllLndyaXRlX3NoaWZ0KDQsSC5sZW5ndGgpLEgubGVuZ3RoPjAmJmllLndyaXRlX3NoaWZ0''@;'; put 'put ''KDAsSCwiZGJjcyIpLFg/aWUuc2xpY2UoMCxpZS5sKTppZX1mdW5jdGlvbiBzZihIKXtyZXR1cm57aWNoOkgucmVhZF9zaGlmdCgyKSxpZm50OkgucmVhZF9zaGlmdCgyKX19ZnVuY3Rpb24ga3MoSCxpZSl7dmFyIFg9SC5sLHdlPUgucmVhZF9zaGlmdCgxKSx4ZT14dShIKSxGZT1bXSxaZT17''@;'; put 'put ''dDp4ZSxoOnhlfTtpZigwIT0oMSZ3ZSkpe2Zvcih2YXIgamU9SC5yZWFkX3NoaWZ0KDQpLFllPTA7WWUhPWplOysrWWUpRmUucHVzaChzZihIKSk7WmUucj1GZX1lbHNlIFplLnI9W3tpY2g6MCxpZm50OjB9XTtyZXR1cm4gSC5sPVgraWUsWmV9IWZ1bmN0aW9uKEgsaWUpe3ZhciBYO2lmKCJ1''@;'; put 'put ''bmRlZmluZWQiIT10eXBlb2YgY3J5cHRvQnJvd3NlcmlmeSlYPWNyeXB0b0Jyb3dzZXJpZnk7ZWxzZSBpZih2b2lkIDAhPT1pZSlYPWllO2Vsc2UgdHJ5e1g9TCg0MTM0OCl9Y2F0Y2god2Upe1g9bnVsbH1ILnJjND1mdW5jdGlvbih3ZSx4ZSl7dmFyIEZlPW5ldyBBcnJheSgyNTYpLFplPTAs''@;'; put 'put ''amU9MCxZZT0wLE10PTA7Zm9yKGplPTA7MjU2IT1qZTsrK2plKUZlW2plXT1qZTtmb3IoamU9MDsyNTYhPWplOysramUpWWU9WWUrRmVbamVdK3dlW2plJXdlLmxlbmd0aF0uY2hhckNvZGVBdCgwKSYyNTUsTXQ9RmVbamVdLEZlW2plXT1GZVtZZV0sRmVbWWVdPU10O2plPVllPTA7dmFyIHh0''@;'; put 'put ''PWhlKHhlLmxlbmd0aCk7Zm9yKFplPTA7WmUhPXhlLmxlbmd0aDsrK1plKU10PUZlW2plPWplKzEmMjU1XSxGZVtqZV09RmVbWWU9KFllK0ZlW2plXSklMjU2XSxGZVtZZV09TXQseHRbWmVdPXhlW1plXV5GZVtGZVtqZV0rRmVbWWVdJjI1NV07cmV0dXJuIHh0fSxILm1kNT1mdW5jdGlvbih3''@;'; put 'put ''ZSl7aWYoIVgpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBjcnlwdG8iKTtyZXR1cm4gWC5jcmVhdGVIYXNoKCJtZDUiKS51cGRhdGUoQnVmZmVyLmZyb20od2UpKS5kaWdlc3QoImhleCIpfX0oc28sInVuZGVmaW5lZCIhPXR5cGVvZiBjcnlwdG8/Y3J5cHRvOnZvaWQgMCk7dmFyIFZm''@;'; put 'put ''PWtzO2Z1bmN0aW9uIHZoKEgpe3ZhciBpZT1ILnJlYWRfc2hpZnQoNCksWD1ILnJlYWRfc2hpZnQoMik7cmV0dXJuIFgrPUgucmVhZF9zaGlmdCgxKTw8MTYsSC5sKysse2M6aWUsaVN0eWxlUmVmOlh9fWZ1bmN0aW9uIFM0KEgsaWUpe3JldHVybiBudWxsPT1pZSYmKGllPVJpKDgpKSxpZS53''@;'; put 'put ''cml0ZV9zaGlmdCgtNCxILmMpLGllLndyaXRlX3NoaWZ0KDMsSC5pU3R5bGVSZWZ8fEgucyksaWUud3JpdGVfc2hpZnQoMSwwKSxpZX1mdW5jdGlvbiBNNChIKXt2YXIgaWU9SC5yZWFkX3NoaWZ0KDIpO3JldHVybiBpZSs9SC5yZWFkX3NoaWZ0KDEpPDwxNixILmwrKyx7YzotMSxpU3R5bGVS''@;'; put 'put ''ZWY6aWV9fWZ1bmN0aW9uIEFoKEgsaWUpe3JldHVybiBudWxsPT1pZSYmKGllPVJpKDQpKSxpZS53cml0ZV9zaGlmdCgzLEguaVN0eWxlUmVmfHxILnMpLGllLndyaXRlX3NoaWZ0KDEsMCksaWV9dmFyIGViPXh1LFRNPWx1O2Z1bmN0aW9uIHloKEgpe3ZhciBpZT1ILnJlYWRfc2hpZnQoNCk7''@;'; put 'put ''cmV0dXJuIDA9PT1pZXx8NDI5NDk2NzI5NT09PWllPyIiOkgucmVhZF9zaGlmdChpZSwiZGJjcyIpfWZ1bmN0aW9uIFpwKEgsaWUpe3ZhciBYPSExO3JldHVybiBudWxsPT1pZSYmKFg9ITAsaWU9UmkoMTI3KSksaWUud3JpdGVfc2hpZnQoNCxILmxlbmd0aD4wP0gubGVuZ3RoOjQyOTQ5Njcy''@;'; put 'put ''OTUpLEgubGVuZ3RoPjAmJmllLndyaXRlX3NoaWZ0KDAsSCwiZGJjcyIpLFg/aWUuc2xpY2UoMCxpZS5sKTppZX12YXIgbDk9eHUsR2c9eWgsenA9WnA7ZnVuY3Rpb24gV2coSCl7dmFyIGllPUguc2xpY2UoSC5sLEgubCs0KSxYPTEmaWVbMF0sd2U9MiZpZVswXTtILmwrPTQsaWVbMF0mPTI1''@;'; put 'put ''Mjt2YXIgeGU9MD09PXdlP2RzKFswLDAsMCwwLGllWzBdLGllWzFdLGllWzJdLGllWzNdXSwwKTpOYyhpZSwwKT4+MjtyZXR1cm4gWD94ZS8xMDA6eGV9ZnVuY3Rpb24gSU0oSCxpZSl7bnVsbD09aWUmJihpZT1SaSg0KSk7dmFyIFg9MCx3ZT0wLHhlPTEwMCpIO2lmKEg9PSgwfEgpJiZIPj0t''@;'; put 'put ''KDE8PDI5KSYmSDwxPDwyOT93ZT0xOnhlPT0oMHx4ZSkmJnhlPj0tKDE8PDI5KSYmeGU8MTw8MjkmJih3ZT0xLFg9MSksIXdlKXRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgUmtOdW1iZXIgIitIKTtpZS53cml0ZV9zaGlmdCgtNCwoKFg/eGU6SCk8PDIpKyhYKzIpKX1mdW5jdGlvbiBz''@;'; put 'put ''OShIKXt2YXIgaWU9e3M6e30sZTp7fX07cmV0dXJuIGllLnMucj1ILnJlYWRfc2hpZnQoNCksaWUuZS5yPUgucmVhZF9zaGlmdCg0KSxpZS5zLmM9SC5yZWFkX3NoaWZ0KDQpLGllLmUuYz1ILnJlYWRfc2hpZnQoNCksaWV9dmFyIHdoPXM5LEdwPWZ1bmN0aW9uIFlnKEgsaWUpe3JldHVybiBp''@;'; put 'put ''ZXx8KGllPVJpKDE2KSksaWUud3JpdGVfc2hpZnQoNCxILnMuciksaWUud3JpdGVfc2hpZnQoNCxILmUuciksaWUud3JpdGVfc2hpZnQoNCxILnMuYyksaWUud3JpdGVfc2hpZnQoNCxILmUuYyksaWV9O2Z1bmN0aW9uIHU5KEgpe2Zvcih2YXIgaWU9SC5yZWFkX3NoaWZ0KDQpLFg9W10sd2U9''@;'; put 'put ''MDt3ZTxpZTsrK3dlKXt2YXIgeGU9d2goSCk7WC5wdXNoKGZhKHhlKSl9cmV0dXJuIFguam9pbigiLCIpfWZ1bmN0aW9uIEkyKEgpe2lmKEgubGVuZ3RoLUgubDw4KXRocm93IlhMUyBYbnVtIEJ1ZmZlciB1bmRlcmZsb3ciO3JldHVybiBILnJlYWRfc2hpZnQoOCwiZiIpfWZ1bmN0aW9uIHVm''@;'; put 'put ''KEgsaWUpe3JldHVybihpZXx8UmkoOCkpLndyaXRlX3NoaWZ0KDgsSCwiZiIpfWZ1bmN0aW9uIFVnKEgpe3ZhciBpZT17fSx3ZT1ILnJlYWRfc2hpZnQoMSk+Pj4xLHhlPUgucmVhZF9zaGlmdCgxKSxGZT1ILnJlYWRfc2hpZnQoMiwiaSIpLFplPUgucmVhZF9zaGlmdCgxKSxqZT1ILnJlYWRf''@;'; put 'put ''c2hpZnQoMSksWWU9SC5yZWFkX3NoaWZ0KDEpO3N3aXRjaChILmwrKyx3ZSl7Y2FzZSAwOmllLmF1dG89MTticmVhaztjYXNlIDE6aWUuaW5kZXg9eGU7dmFyIE10PXV1W3hlXTtNdCYmKGllLnJnYj1iMyhNdCkpO2JyZWFrO2Nhc2UgMjppZS5yZ2I9YjMoW1plLGplLFllXSk7YnJlYWs7Y2Fz''@;'; put 'put ''ZSAzOmllLnRoZW1lPXhlfXJldHVybiAwIT1GZSYmKGllLnRpbnQ9RmU+MD9GZS8zMjc2NzpGZS8zMjc2OCksaWV9ZnVuY3Rpb24gamYoSCxpZSl7aWYoaWV8fChpZT1SaSg4KSksIUh8fEguYXV0bylyZXR1cm4gaWUud3JpdGVfc2hpZnQoNCwwKSxpZS53cml0ZV9zaGlmdCg0LDApLGllO251''@;'; put 'put ''bGwhPUguaW5kZXg/KGllLndyaXRlX3NoaWZ0KDEsMiksaWUud3JpdGVfc2hpZnQoMSxILmluZGV4KSk6bnVsbCE9SC50aGVtZT8oaWUud3JpdGVfc2hpZnQoMSw2KSxpZS53cml0ZV9zaGlmdCgxLEgudGhlbWUpKTooaWUud3JpdGVfc2hpZnQoMSw1KSxpZS53cml0ZV9zaGlmdCgxLDApKTt2''@;'; put 'put ''YXIgWD1ILnRpbnR8fDA7aWYoWD4wP1gqPTMyNzY3Olg8MCYmKFgqPTMyNzY4KSxpZS53cml0ZV9zaGlmdCgyLFgpLEgucmdiJiZudWxsPT1ILnRoZW1lKXt2YXIgd2U9SC5yZ2J8fCJGRkZGRkYiOyJudW1iZXIiPT10eXBlb2Ygd2UmJih3ZT0oIjAwMDAwMCIrd2UudG9TdHJpbmcoMTYpKS5z''@;'; put 'put ''bGljZSgtNikpLGllLndyaXRlX3NoaWZ0KDEscGFyc2VJbnQod2Uuc2xpY2UoMCwyKSwxNikpLGllLndyaXRlX3NoaWZ0KDEscGFyc2VJbnQod2Uuc2xpY2UoMiw0KSwxNikpLGllLndyaXRlX3NoaWZ0KDEscGFyc2VJbnQod2Uuc2xpY2UoNCw2KSwxNikpLGllLndyaXRlX3NoaWZ0KDEsMjU1''@;'; put 'put ''KX1lbHNlIGllLndyaXRlX3NoaWZ0KDIsMCksaWUud3JpdGVfc2hpZnQoMSwwKSxpZS53cml0ZV9zaGlmdCgxLDApO3JldHVybiBpZX1mdW5jdGlvbiB0YihIKXt2YXIgaWU9SC5yZWFkX3NoaWZ0KDEpO3JldHVybiBILmwrKyx7ZkJvbGQ6MSZpZSxmSXRhbGljOjImaWUsZlVuZGVybGluZTo0''@;'; put 'put ''JmllLGZTdHJpa2VvdXQ6OCZpZSxmT3V0bGluZToxNiZpZSxmU2hhZG93OjMyJmllLGZDb25kZW5zZTo2NCZpZSxmRXh0ZW5kOjEyOCZpZX19ZnVuY3Rpb24gZjkoSCxpZSl7dmFyIHdlPUgucmVhZF9zaGlmdCg0KTtzd2l0Y2god2Upe2Nhc2UgMDpyZXR1cm4iIjtjYXNlIDQyOTQ5NjcyOTU6''@;'; put 'put ''Y2FzZSA0Mjk0OTY3Mjk0OnJldHVybnsyOiJCSVRNQVAiLDM6Ik1FVEFGSUxFUElDVCIsODoiRElCIiwxNDoiRU5ITUVUQUZJTEUifVtILnJlYWRfc2hpZnQoNCldfHwiIn1pZih3ZT40MDApdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBDbGlwYm9hcmQ6ICIrd2UudG9TdHJpbmcoMTYp''@;'; put 'put ''KTtyZXR1cm4gSC5sLT00LEgucmVhZF9zaGlmdCgwLDE9PWllPyJscHN0ciI6Imxwd3N0ciIpfXZhciBMTT1bODAsODFdLHJiPXsxOntuOiJDb2RlUGFnZSIsdDoyfSwyOntuOiJDYXRlZ29yeSIsdDo4MH0sMzp7bjoiUHJlc2VudGF0aW9uRm9ybWF0Iix0OjgwfSw0OntuOiJCeXRlQ291bnQi''@;'; put 'put ''LHQ6M30sNTp7bjoiTGluZUNvdW50Iix0OjN9LDY6e246IlBhcmFncmFwaENvdW50Iix0OjN9LDc6e246IlNsaWRlQ291bnQiLHQ6M30sODp7bjoiTm90ZUNvdW50Iix0OjN9LDk6e246IkhpZGRlbkNvdW50Iix0OjN9LDEwOntuOiJNdWx0aW1lZGlhQ2xpcENvdW50Iix0OjN9LDExOntuOiJT''@;'; put 'put ''Y2FsZUNyb3AiLHQ6MTF9LDEyOntuOiJIZWFkaW5nUGFpcnMiLHQ6NDEwOH0sMTM6e246IlRpdGxlc09mUGFydHMiLHQ6NDEyNn0sMTQ6e246Ik1hbmFnZXIiLHQ6ODB9LDE1OntuOiJDb21wYW55Iix0OjgwfSwxNjp7bjoiTGlua3NVcFRvRGF0ZSIsdDoxMX0sMTc6e246IkNoYXJhY3RlckNv''@;'; put 'put ''dW50Iix0OjN9LDE5OntuOiJTaGFyZWREb2MiLHQ6MTF9LDIyOntuOiJIeXBlcmxpbmtzQ2hhbmdlZCIsdDoxMX0sMjM6e246IkFwcFZlcnNpb24iLHQ6MyxwOiJ2ZXJzaW9uIn0sMjQ6e246IkRpZ1NpZyIsdDo2NX0sMjY6e246IkNvbnRlbnRUeXBlIix0OjgwfSwyNzp7bjoiQ29udGVudFN0''@;'; put 'put ''YXR1cyIsdDo4MH0sMjg6e246Ikxhbmd1YWdlIix0OjgwfSwyOTp7bjoiVmVyc2lvbiIsdDo4MH0sMjU1Ont9LDIxNDc0ODM2NDg6e246IkxvY2FsZSIsdDoxOX0sMjE0NzQ4MzY1MTp7bjoiQmVoYXZpb3IiLHQ6MTl9LDE5MTkwNTQ0MzQ6e319LFVwPXsxOntuOiJDb2RlUGFnZSIsdDoyfSwy''@;'; put 'put ''OntuOiJUaXRsZSIsdDo4MH0sMzp7bjoiU3ViamVjdCIsdDo4MH0sNDp7bjoiQXV0aG9yIix0OjgwfSw1OntuOiJLZXl3b3JkcyIsdDo4MH0sNjp7bjoiQ29tbWVudHMiLHQ6ODB9LDc6e246IlRlbXBsYXRlIix0OjgwfSw4OntuOiJMYXN0QXV0aG9yIix0OjgwfSw5OntuOiJSZXZOdW1iZXIi''@;'; put 'put ''LHQ6ODB9LDEwOntuOiJFZGl0VGltZSIsdDo2NH0sMTE6e246Ikxhc3RQcmludGVkIix0OjY0fSwxMjp7bjoiQ3JlYXRlZERhdGUiLHQ6NjR9LDEzOntuOiJNb2RpZmllZERhdGUiLHQ6NjR9LDE0OntuOiJQYWdlQ291bnQiLHQ6M30sMTU6e246IldvcmRDb3VudCIsdDozfSwxNjp7bjoiQ2hh''@;'; put 'put ''ckNvdW50Iix0OjN9LDE3OntuOiJUaHVtYm5haWwiLHQ6NzF9LDE4OntuOiJBcHBsaWNhdGlvbiIsdDo4MH0sMTk6e246IkRvY1NlY3VyaXR5Iix0OjN9LDI1NTp7fSwyMTQ3NDgzNjQ4OntuOiJMb2NhbGUiLHQ6MTl9LDIxNDc0ODM2NTE6e246IkJlaGF2aW9yIix0OjE5fSwxOTE5MDU0NDM0''@;'; put 'put ''Ont9fSx2Yz1fdChyYiwibiIpLHA5PV90KFVwLCJuIiksWGc9ezE6IlVTIiwyOiJDQSIsMzoiIiw3OiJSVSIsMjA6IkVHIiwzMDoiR1IiLDMxOiJOTCIsMzI6IkJFIiwzMzoiRlIiLDM0OiJFUyIsMzY6IkhVIiwzOToiSVQiLDQxOiJDSCIsNDM6IkFUIiw0NDoiR0IiLDQ1OiJESyIsNDY6IlNF''@;'; put 'put ''Iiw0NzoiTk8iLDQ4OiJQTCIsNDk6IkRFIiw1MjoiTVgiLDU1OiJCUiIsNjE6IkFVIiw2NDoiTloiLDY2OiJUSCIsODE6IkpQIiw4MjoiS1IiLDg0OiJWTiIsODY6IkNOIiw5MDoiVFIiLDEwNToiSlMiLDIxMzoiRFoiLDIxNjoiTUEiLDIxODoiTFkiLDM1MToiUFQiLDM1NDoiSVMiLDM1ODoi''@;'; put 'put ''RkkiLDQyMDoiQ1oiLDg4NjoiVFciLDk2MToiTEIiLDk2MjoiSk8iLDk2MzoiU1kiLDk2NDoiSVEiLDk2NToiS1ciLDk2NjoiU0EiLDk3MToiQUUiLDk3MjoiSUwiLDk3NDoiUUEiLDk4MToiSVIiLDY1NTM1OiJVUyJ9LFFwPVtudWxsLCJzb2xpZCIsIm1lZGl1bUdyYXkiLCJkYXJrR3JheSIs''@;'; put 'put ''ImxpZ2h0R3JheSIsImRhcmtIb3Jpem9udGFsIiwiZGFya1ZlcnRpY2FsIiwiZGFya0Rvd24iLCJkYXJrVXAiLCJkYXJrR3JpZCIsImRhcmtUcmVsbGlzIiwibGlnaHRIb3Jpem9udGFsIiwibGlnaHRWZXJ0aWNhbCIsImxpZ2h0RG93biIsImxpZ2h0VXAiLCJsaWdodEdyaWQiLCJsaWdodFRy''@;'; put 'put ''ZWxsaXMiLCJncmF5MTI1IiwiZ3JheTA2MjUiXTtmdW5jdGlvbiBRdShIKXtyZXR1cm4gSC5tYXAoZnVuY3Rpb24oaWUpe3JldHVybltpZT4+MTYmMjU1LGllPj44JjI1NSwyNTUmaWVdfSl9dmFyIEtnPVF1KFswLDE2Nzc3MjE1LDE2NzExNjgwLDY1MjgwLDI1NSwxNjc3Njk2MCwxNjcxMTkz''@;'; put 'put ''NSw2NTUzNSwwLDE2Nzc3MjE1LDE2NzExNjgwLDY1MjgwLDI1NSwxNjc3Njk2MCwxNjcxMTkzNSw2NTUzNSw4Mzg4NjA4LDMyNzY4LDEyOCw4NDIxMzc2LDgzODg3MzYsMzI4OTYsMTI2MzIyNTYsODQyMTUwNCwxMDA2NjQzMSwxMDA0MDE2NiwxNjc3NzE2NCwxMzQzNDg3OSw2Njg0Nzc0LDE2''@;'; put 'put ''NzQ0NTc2LDI2MzE2LDEzNDIxODIzLDEyOCwxNjcxMTkzNSwxNjc3Njk2MCw2NTUzNSw4Mzg4NzM2LDgzODg2MDgsMzI4OTYsMjU1LDUyNDc5LDEzNDM0ODc5LDEzNDM0ODI4LDE2Nzc3MTEzLDEwMDc5NDg3LDE2NzUxMDUyLDEzNDA4NzY3LDE2NzY0MDU3LDMzNjg3MDMsMzM5NDc2NCwxMDA3''@;'; put 'put ''OTIzMiwxNjc2MzkwNCwxNjc1MDg0OCwxNjczNzc5Miw2NzEwOTM3LDk4Njg5NTAsMTMxNTgsMzM4MTYwNiwxMzA1NiwzMzU1MzkyLDEwMDQwMDY0LDEwMDQwMTY2LDMzNTU1NDUsMzM1NTQ0MywwLDE2Nzc3MjE1LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdKSx1dT1sbihLZyks''@;'; put 'put ''T009UXUoWzEyNjMyMjU2LDk4Njg5NTAsODQyMTUwNCw2NzEwODg2LDMzNTU0NDMsMTY3MTE2ODAsMzI3NjgsMTMzNjk0OTcsMTI4LDMzOTQ1NjAsMjYzNjcsMTAwMjcyMTIsMTAwNTMxNzEsMTI4LDMyNzY4LDgzODg2MDgsMzI4OTYsODM4ODczNiw4NDIxMzc2LDEzNjMxNDg4LDE0NTM5OTk0''@;'; put 'put ''LDEzMDY4ODUwLDEzOTI0MzUyLDk5Njc0OTYsOTE3NTI2Nyw5MTk1MDA4LDM2ODM1MzcsMTA2OTI1OCw4ODgwODk5LDc0OTQ2NCwyODkzNDc2LDExNzQ1NzMwLDM3NTAyMDEsMTU1NTk1MDMsMTgzNzk0MSwxMjA4NDM1OSw3NjMyMjUwLDczNjMzMjgsOTUxNDU4OCw4Mjg4NjE3LDMwMzY4MTQs''@;'; put 'put ''MTExODQ4MTBdKSxOMT17MDoiI05VTEwhIiw3OiIjRElWLzAhIiwxNToiI1ZBTFVFISIsMjM6IiNSRUYhIiwyOToiI05BTUU/IiwzNjoiI05VTSEiLDQyOiIjTi9BIiw0MzoiI0dFVFRJTkdfREFUQSIsMjU1OiIjV1RGPyJ9LF9oPWV0KE4xKSx2ZD17ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1s''@;'; put 'put ''Zm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Lm1haW4reG1sIjoid29ya2Jvb2tzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmJpbkluZGV4V3MiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmludGxtYWNyb3NoZWV0IjoiVE9ETyIsImFwcGxp''@;'; put 'put ''Y2F0aW9uL3ZuZC5tcy1leGNlbC5iaW5JbmRleE1zIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLmNvcmUtcHJvcGVydGllcyt4bWwiOiJjb3JlcHJvcHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuY3VzdG9t''@;'; put 'put ''LXByb3BlcnRpZXMreG1sIjoiY3VzdHByb3BzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmV4dGVuZGVkLXByb3BlcnRpZXMreG1sIjoiZXh0cHJvcHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuY3VzdG9t''@;'; put 'put ''WG1sUHJvcGVydGllcyt4bWwiOiJjdXN0b214bWxwcm9wcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmN1c3RvbVByb3BlcnR5IjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdFRhYmxlIjoicGl2b3Rz''@;'; put 'put ''IiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RUYWJsZSt4bWwiOiJwaXZvdHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmNoYXJ0K3htbCI6ImNoYXJ0b2Jq''@;'; put 'put ''cyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuY2hhcnRjb2xvcnN0eWxlK3htbCI6ImNoYXJ0Y29sb3JzIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5jaGFydHN0eWxlK3htbCI6ImNoYXJ0c3R5bGVzIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5jaGFydGV4K3htbCI6ImNo''@;'; put 'put ''YXJ0ZXhzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNhbGNDaGFpbiI6ImNhbGNjaGFpbnMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jYWxjQ2hhaW4reG1sIjoiY2FsY2NoYWlucyIsImFwcGxpY2F0aW9uL3ZuZC5v''@;'; put 'put ''cGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnByaW50ZXJTZXR0aW5ncyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmFjdGl2ZVgiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5hY3RpdmVYK3htbCI6IlRPRE8iLCJhcHBsaWNh''@;'; put 'put ''dGlvbi92bmQubXMtZXhjZWwuYXR0YWNoZWRUb29sYmFycyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29ubmVjdGlvbnMiOiJjb25ucyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbm5lY3Rpb25zK3ht''@;'; put 'put ''bCI6ImNvbm5zIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmV4dGVybmFsTGluayI6ImxpbmtzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuZXh0ZXJuYWxMaW5rK3htbCI6ImxpbmtzIiwiYXBwbGljYXRpb24vdm5kLm1z''@;'; put 'put ''LWV4Y2VsLnNoZWV0TWV0YWRhdGEiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRNZXRhZGF0YSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnBpdm90Q2FjaGVEZWZpbml0aW9uIjoi''@;'; put 'put ''cGl2b3RjYWNoZXMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RDYWNoZVJlY29yZHMiOiJwaXZvdHJlY29yZHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdENhY2hlRGVmaW5pdGlvbit4bWwiOiJwaXZv''@;'; put 'put ''dGNhY2hlcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Q2FjaGVSZWNvcmRzK3htbCI6InBpdm90cmVjb3JkcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5xdWVyeVRhYmxlIjoiVE9ETyIsImFwcGxpY2F0aW9u''@;'; put 'put ''L3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnF1ZXJ5VGFibGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC51c2VyTmFtZXMiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnJldmlzaW9uSGVhZGVycyI6IlRPRE8i''@;'; put 'put ''LCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucmV2aXNpb25Mb2ciOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucmV2aXNpb25IZWFkZXJzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1h''@;'; put 'put ''dHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5yZXZpc2lvbkxvZyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudXNlck5hbWVzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwu''@;'; put 'put ''dGFibGVTaW5nbGVDZWxscyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZVNpbmdsZUNlbGxzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyIjoiVE9ETyIsImFwcGxpY2F0''@;'; put 'put ''aW9uL3ZuZC5tcy1leGNlbC5zbGljZXJDYWNoZSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyQ2FjaGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC53c1NvcnRN''@;'; put 'put ''YXAiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnRhYmxlIjoidGFibGVzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGUreG1sIjoidGFibGVzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRz''@;'; put 'put ''LW9mZmljZWRvY3VtZW50LnRoZW1lK3htbCI6InRoZW1lcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC50aGVtZU92ZXJyaWRlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuVGltZWxpbmUreG1sIjoiVE9ETyIsImFwcGxpY2F0''@;'; put 'put ''aW9uL3ZuZC5tcy1leGNlbC5UaW1lbGluZUNhY2hlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3QiOiJ2YmEiLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3RTaWduYXR1cmUiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLW9m''@;'; put 'put ''ZmljZS52b2xhdGlsZURlcGVuZGVuY2llcyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC52b2xhdGlsZURlcGVuZGVuY2llcyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbnRyb2xwcm9w''@;'; put 'put ''ZXJ0aWVzK3htbCI6ImN0cmxwcm9wcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5tb2RlbCtkYXRhIjoiZGF0YW1vZGVscyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5TdXJ2ZXkreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1s''@;'; put 'put ''Zm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nK3htbCI6ImRyYXdpbmdzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5jaGFydHNoYXBlcyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmlj''@;'; put 'put ''ZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtQ29sb3JzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1EYXRhK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNl''@;'; put 'put ''ZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1MYXlvdXQreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbVN0eWxlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNl''@;'; put 'put ''ZG9jdW1lbnQudm1sRHJhd2luZyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbCI6InJlbHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQub2xlT2JqZWN0IjoiVE9ETyIsImltYWdl''@;'; put 'put ''L3BuZyI6IlRPRE8iLHNoZWV0OiJqcyJ9LENhPWZ1bmN0aW9uKCl7dmFyIEg9e3dvcmtib29rczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQubWFpbit4bWwiLHhsc206ImFwcGxpY2F0aW9uL3ZuZC5tcy1l''@;'; put 'put ''eGNlbC5zaGVldC5tYWNyb0VuYWJsZWQubWFpbit4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9FbmFibGVkLm1haW4iLHhsYW06ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb0VuYWJsZWQubWFpbit4bWwiLHhsdHg6ImFw''@;'; put 'put ''cGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRlbXBsYXRlLm1haW4reG1sIn0sc3Ryczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hhcmVkU3RyaW5ncyt4''@;'; put 'put ''bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGFyZWRTdHJpbmdzIn0sY29tbWVudHM6e3hsc3g6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbW1lbnRzK3htbCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1z''@;'; put 'put ''LWV4Y2VsLmNvbW1lbnRzIn0sc2hlZXRzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwud29ya3NoZWV0In0sY2hhcnRzOnt4bHN4OiJh''@;'; put 'put ''cHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jaGFydHNoZWV0K3htbCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNoYXJ0c2hlZXQifSxkaWFsb2dzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMt''@;'; put 'put ''b2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5kaWFsb2dzaGVldCt4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5kaWFsb2dzaGVldCJ9LG1hY3Jvczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLm1hY3Jvc2hlZXQreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92''@;'; put 'put ''bmQubXMtZXhjZWwubWFjcm9zaGVldCJ9LHRhYmxlczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGUreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGFibGUifSxwaXZvdHM6e3hsc3g6ImFw''@;'; put 'put ''cGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90VGFibGUreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RUYWJsZSJ9LHBpdm90Y2FjaGVzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1h''@;'; put 'put ''dHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdENhY2hlRGVmaW5pdGlvbit4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdENhY2hlRGVmaW5pdGlvbiJ9LHBpdm90cmVjb3Jkczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9m''@;'; put 'put ''ZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RDYWNoZVJlY29yZHMreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RDYWNoZVJlY29yZHMifSxjb25uczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVh''@;'; put 'put ''ZHNoZWV0bWwuY29ubmVjdGlvbnMreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29ubmVjdGlvbnMifSxsaW5rczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuZXh0ZXJuYWxMaW5rK3htbCIseGxz''@;'; put 'put ''YjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmV4dGVybmFsTGluayJ9LHN0eWxlczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnN0eWxl''@;'; put 'put ''cyJ9fTtyZXR1cm4gb24oSCkuZm9yRWFjaChmdW5jdGlvbihpZSl7WyJ4bHNtIiwieGxhbSJdLmZvckVhY2goZnVuY3Rpb24oWCl7SFtpZV1bWF18fChIW2llXVtYXT1IW2llXS54bHN4KX0pfSksb24oSCkuZm9yRWFjaChmdW5jdGlvbihpZSl7b24oSFtpZV0pLmZvckVhY2goZnVuY3Rpb24o''@;'; put 'put ''WCl7dmRbSFtpZV1bWF1dPWllfSl9KSxIfSgpLCRnPWZ1bmN0aW9uIGx0KEgpe2Zvcih2YXIgaWU9W10sWD1vbihIKSx3ZT0wO3dlIT09WC5sZW5ndGg7Kyt3ZSludWxsPT1pZVtIW1hbd2VdXV0mJihpZVtIW1hbd2VdXV09W10pLGllW0hbWFt3ZV1dXS5wdXNoKFhbd2VdKTtyZXR1cm4gaWV9''@;'; put 'put ''KHZkKTtYMC5DVD0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9jb250ZW50LXR5cGVzIjt2YXIgZjI9X2koIlR5cGVzIixudWxsLHt4bWxuczpYMC5DVCwieG1sbnM6eHNkIjpYMC54c2QsInhtbG5zOnhzaSI6WDAueHNpfSkscFI9W1sieG1sIiwiYXBw''@;'; put 'put ''bGljYXRpb24veG1sIl0sWyJiaW4iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQuYmluYXJ5Lm1hY3JvRW5hYmxlZC5tYWluIl0sWyJ2bWwiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudm1sRHJhd2luZyJdLFsiZGF0YSIsImFwcGxpY2F0''@;'; put 'put ''aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5tb2RlbCtkYXRhIl0sWyJibXAiLCJpbWFnZS9ibXAiXSxbInBuZyIsImltYWdlL3BuZyJdLFsiZ2lmIiwiaW1hZ2UvZ2lmIl0sWyJlbWYiLCJpbWFnZS94LWVtZiJdLFsid21mIiwiaW1hZ2UveC13bWYiXSxbImpwZyIsImlt''@;'; put 'put ''YWdlL2pwZWciXSxbImpwZWciLCJpbWFnZS9qcGVnIl0sWyJ0aWYiLCJpbWFnZS90aWZmIl0sWyJ0aWZmIiwiaW1hZ2UvdGlmZiJdLFsicGRmIiwiYXBwbGljYXRpb24vcGRmIl0sWyJyZWxzIiwkZy5yZWxzWzBdXV0ubWFwKGZ1bmN0aW9uKEgpe3JldHVybiBfaSgiRGVmYXVsdCIsbnVsbCx7''@;'; put 'put ''RXh0ZW5zaW9uOkhbMF0sQ29udGVudFR5cGU6SFsxXX0pfSksZHQ9e1dCOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL29mZmljZURvY3VtZW50IixTSEVFVDoiaHR0cDovL3NoZWV0anMub3BlbnhtbGZvcm1hdHMu''@;'; put 'put ''b3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9vZmZpY2VEb2N1bWVudCIsSExJTks6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvaHlwZXJsaW5rIixWTUw6Imh0dHA6Ly9zY2hlbWFzLm9wZW54''@;'; put 'put ''bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvdm1sRHJhd2luZyIsWFBBVEg6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZXh0ZXJuYWxMaW5rUGF0aCIsWE1JU1M6Imh0dHA6''@;'; put 'put ''Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYvcmVsYXRpb25zaGlwcy94bEV4dGVybmFsTGlua1BhdGgveGxQYXRoTWlzc2luZyIsWExJTks6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZXh0ZXJu''@;'; put 'put ''YWxMaW5rIixDWE1MOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2N1c3RvbVhtbCIsQ1hNTFA6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hp''@;'; put 'put ''cHMvY3VzdG9tWG1sUHJvcHMiLFZCQToiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9yZWxhdGlvbnNoaXBzL3ZiYVByb2plY3QifTtmdW5jdGlvbiBJdChIKXt2YXIgaWU9SC5sYXN0SW5kZXhPZigiLyIpO3JldHVybiBILnNsaWNlKDAsaWUrMSkrIl9yZWxzLyIr''@;'; put 'put ''SC5zbGljZShpZSsxKSsiLnJlbHMifWZ1bmN0aW9uIFB0KEgsaWUpe3ZhciBYPXsiIWlkIjp7fX07aWYoIUgpcmV0dXJuIFg7Ii8iIT09aWUuY2hhckF0KDApJiYoaWU9Ii8iK2llKTt2YXIgd2U9e307cmV0dXJuKEgubWF0Y2goR3QpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4ZSl7dmFyIEZl''@;'; put 'put ''PWVuKHhlKTtpZigiPFJlbGF0aW9uc2hpcCI9PT1GZVswXSl7dmFyIFplPXt9O1plLlR5cGU9RmUuVHlwZSxaZS5UYXJnZXQ9RmUuVGFyZ2V0LFplLklkPUZlLklkLFplLlRhcmdldE1vZGU9RmUuVGFyZ2V0TW9kZTt2YXIgamU9IkV4dGVybmFsIj09PUZlLlRhcmdldE1vZGU/RmUuVGFyZ2V0''@;'; put 'put ''OnVuKEZlLlRhcmdldCxpZSk7WFtqZV09WmUsd2VbRmUuSWRdPVplfX0pLFhbIiFpZCJdPXdlLFh9WDAuUkVMUz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzIjt2YXIgZmU9X2koIlJlbGF0aW9uc2hpcHMiLG51bGwse3htbG5z''@;'; put 'put ''OlgwLlJFTFN9KTtmdW5jdGlvbiBpdChIKXt2YXIgaWU9W2NuLGZlXTtyZXR1cm4gb24oSFsiIWlkIl0pLmZvckVhY2goZnVuY3Rpb24oWCl7aWVbaWUubGVuZ3RoXT1faSgiUmVsYXRpb25zaGlwIixudWxsLEhbIiFpZCJdW1hdKX0pLGllLmxlbmd0aD4yJiYoaWVbaWUubGVuZ3RoXT0iPC9S''@;'; put 'put ''ZWxhdGlvbnNoaXBzPiIsaWVbMV09aWVbMV0ucmVwbGFjZSgiLz4iLCI+IikpLGllLmpvaW4oIiIpfXZhciBhPVtkdC5ITElOSyxkdC5YUEFUSCxkdC5YTUlTU107ZnVuY3Rpb24gWHQoSCxpZSxYLHdlLHhlLEZlKXtpZih4ZXx8KHhlPXt9KSxIWyIhaWQiXXx8KEhbIiFpZCJdPXt9KSxpZTww''@;'; put 'put ''KWZvcihpZT0xO0hbIiFpZCJdWyJySWQiK2llXTsrK2llKTtpZih4ZS5JZD0icklkIitpZSx4ZS5UeXBlPXdlLHhlLlRhcmdldD1YLEZlP3hlLlRhcmdldE1vZGU9RmU6YS5pbmRleE9mKHhlLlR5cGUpPi0xJiYoeGUuVGFyZ2V0TW9kZT0iRXh0ZXJuYWwiKSxIWyIhaWQiXVt4ZS5JZF0pdGhy''@;'; put 'put ''b3cgbmV3IEVycm9yKCJDYW5ub3QgcmV3cml0ZSBySWQgIitpZSk7cmV0dXJuIEhbIiFpZCJdW3hlLklkXT14ZSxIWygiLyIreGUuVGFyZ2V0KS5yZXBsYWNlKCIvLyIsIi8iKV09eGUsaWV9ZnVuY3Rpb24gXyhILGllLFgpe3JldHVyblsnICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0i''@;'; put 'put ''JytIKyciPlxuJywnICAgIDxyZGY6dHlwZSByZGY6cmVzb3VyY2U9Imh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL25zL29mZmljZS8xLjIvbWV0YS8nKyhYfHwib2RmIikrIiMiK2llKyciLz5cbicsIiAgPC9yZGY6RGVzY3JpcHRpb24+XG4iXS5qb2luKCIiKX1mdW5jdGlvbiBBbyhILGll''@;'; put 'put ''KXtyZXR1cm5bJyAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IicrSCsnIj5cbicsJyAgICA8bnMwOmhhc1BhcnQgeG1sbnM6bnMwPSJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9ucy9vZmZpY2UvMS4yL21ldGEvcGtnIyIgcmRmOnJlc291cmNlPSInK2llKyciLz5cbicsIiAgPC9y''@;'; put 'put ''ZGY6RGVzY3JpcHRpb24+XG4iXS5qb2luKCIiKX12YXIgJG89ZnVuY3Rpb24oKXt2YXIgSD0nPG9mZmljZTpkb2N1bWVudC1tZXRhIHhtbG5zOm9mZmljZT0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIiB4bWxuczptZXRhPSJ1cm46b2FzaXM6bmFt''@;'; put 'put ''ZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm1ldGE6MS4wIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBvZmZpY2U6dmVyc2lvbj0iMS4yIj48b2ZmaWNlOm1ldGE+PG1ldGE6Z2Vu''@;'; put 'put ''ZXJhdG9yPlNoZWV0SlMgJytVLnZlcnNpb24rIjwvbWV0YTpnZW5lcmF0b3I+PC9vZmZpY2U6bWV0YT48L29mZmljZTpkb2N1bWVudC1tZXRhPiI7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEh9fSgpLGxlPVtbImNwOmNhdGVnb3J5IiwiQ2F0ZWdvcnkiXSxbImNwOmNvbnRlbnRTdGF0dXMi''@;'; put 'put ''LCJDb250ZW50U3RhdHVzIl0sWyJjcDprZXl3b3JkcyIsIktleXdvcmRzIl0sWyJjcDpsYXN0TW9kaWZpZWRCeSIsIkxhc3RBdXRob3IiXSxbImNwOmxhc3RQcmludGVkIiwiTGFzdFByaW50ZWQiXSxbImNwOnJldmlzaW9uIiwiUmV2TnVtYmVyIl0sWyJjcDp2ZXJzaW9uIiwiVmVyc2lvbiJd''@;'; put 'put ''LFsiZGM6Y3JlYXRvciIsIkF1dGhvciJdLFsiZGM6ZGVzY3JpcHRpb24iLCJDb21tZW50cyJdLFsiZGM6aWRlbnRpZmllciIsIklkZW50aWZpZXIiXSxbImRjOmxhbmd1YWdlIiwiTGFuZ3VhZ2UiXSxbImRjOnN1YmplY3QiLCJTdWJqZWN0Il0sWyJkYzp0aXRsZSIsIlRpdGxlIl0sWyJkY3Rl''@;'; put 'put ''cm1zOmNyZWF0ZWQiLCJDcmVhdGVkRGF0ZSIsImRhdGUiXSxbImRjdGVybXM6bW9kaWZpZWQiLCJNb2RpZmllZERhdGUiLCJkYXRlIl1dO1gwLkNPUkVfUFJPUFM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvbWV0YWRhdGEvY29yZS1wcm9wZXJ0aWVz''@;'; put 'put ''IixkdC5DT1JFX1BST1BTPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMvbWV0YWRhdGEvY29yZS1wcm9wZXJ0aWVzIjt2YXIgVjE9ZnVuY3Rpb24oKXtmb3IodmFyIEg9bmV3IEFycmF5KGxlLmxlbmd0aCksaWU9MDtpZTxsZS5s''@;'; put 'put ''ZW5ndGg7KytpZSl7dmFyIFg9bGVbaWVdLHdlPSIoPzoiK1hbMF0uc2xpY2UoMCxYWzBdLmluZGV4T2YoIjoiKSkrIjopIitYWzBdLnNsaWNlKFhbMF0uaW5kZXhPZigiOiIpKzEpO0hbaWVdPW5ldyBSZWdFeHAoIjwiK3dlKyJbXj5dKj4oW1xcc1xcU10qPyk8LyIrd2UrIj4iKX1yZXR1cm4g''@;'; put 'put ''SH0oKTtmdW5jdGlvbiBscyhIKXt2YXIgaWU9e307SD1XMChIKTtmb3IodmFyIFg9MDtYPGxlLmxlbmd0aDsrK1gpe3ZhciB3ZT1sZVtYXSx4ZT1ILm1hdGNoKFYxW1hdKTtudWxsIT14ZSYmeGUubGVuZ3RoPjAmJihpZVt3ZVsxXV09Z3IoeGVbMV0pKSwiZGF0ZSI9PT13ZVsyXSYmaWVbd2Vb''@;'; put 'put ''MV1dJiYoaWVbd2VbMV1dPWRuKGllW3dlWzFdXSkpfXJldHVybiBpZX12YXIgTW49X2koImNwOmNvcmVQcm9wZXJ0aWVzIixudWxsLHsieG1sbnM6Y3AiOlgwLkNPUkVfUFJPUFMsInhtbG5zOmRjIjpYMC5kYywieG1sbnM6ZGN0ZXJtcyI6WDAuZGN0ZXJtcywieG1sbnM6ZGNtaXR5cGUiOlgw''@;'; put 'put ''LmRjbWl0eXBlLCJ4bWxuczp4c2kiOlgwLnhzaX0pO2Z1bmN0aW9uIHhuKEgsaWUsWCx3ZSx4ZSl7bnVsbCE9eGVbSF18fG51bGw9PWllfHwiIj09PWllfHwoeGVbSF09aWUsaWU9UnIoaWUpLHdlW3dlLmxlbmd0aF09WD9faShILGllLFgpOnNhKEgsaWUpKX12YXIgbzI9W1siQXBwbGljYXRp''@;'; put 'put ''b24iLCJBcHBsaWNhdGlvbiIsInN0cmluZyJdLFsiQXBwVmVyc2lvbiIsIkFwcFZlcnNpb24iLCJzdHJpbmciXSxbIkNvbXBhbnkiLCJDb21wYW55Iiwic3RyaW5nIl0sWyJEb2NTZWN1cml0eSIsIkRvY1NlY3VyaXR5Iiwic3RyaW5nIl0sWyJNYW5hZ2VyIiwiTWFuYWdlciIsInN0cmluZyJd''@;'; put 'put ''LFsiSHlwZXJsaW5rc0NoYW5nZWQiLCJIeXBlcmxpbmtzQ2hhbmdlZCIsImJvb2wiXSxbIlNoYXJlZERvYyIsIlNoYXJlZERvYyIsImJvb2wiXSxbIkxpbmtzVXBUb0RhdGUiLCJMaW5rc1VwVG9EYXRlIiwiYm9vbCJdLFsiU2NhbGVDcm9wIiwiU2NhbGVDcm9wIiwiYm9vbCJdLFsiSGVhZGlu''@;'; put 'put ''Z1BhaXJzIiwiSGVhZGluZ1BhaXJzIiwicmF3Il0sWyJUaXRsZXNPZlBhcnRzIiwiVGl0bGVzT2ZQYXJ0cyIsInJhdyJdXTtmdW5jdGlvbiB5cyhILGllLFgsd2Upe3ZhciB4ZT1bXTtpZigic3RyaW5nIj09dHlwZW9mIEgpeGU9dmkoSCx3ZSk7ZWxzZSBmb3IodmFyIEZlPTA7RmU8SC5sZW5n''@;'; put 'put ''dGg7KytGZSl4ZT14ZS5jb25jYXQoSFtGZV0ubWFwKGZ1bmN0aW9uKHh0KXtyZXR1cm57djp4dH19KSk7dmFyIFplPSJzdHJpbmciPT10eXBlb2YgaWU/dmkoaWUsd2UpLm1hcChmdW5jdGlvbih4dCl7cmV0dXJuIHh0LnZ9KTppZSxqZT0wLFllPTA7aWYoWmUubGVuZ3RoPjApZm9yKHZhciBN''@;'; put 'put ''dD0wO010IT09eGUubGVuZ3RoO010Kz0yKXtzd2l0Y2goWWU9K3hlW010KzFdLnYseGVbTXRdLnYpe2Nhc2UiV29ya3NoZWV0cyI6Y2FzZSJcdTVkZTVcdTRmNWNcdTg4NjgiOmNhc2UiXHUwNDFiXHUwNDM4XHUwNDQxXHUwNDQyXHUwNDRiIjpjYXNlIlx1MDYyM1x1MDY0OFx1MDYzMVx1MDYy''@;'; put 'put ''N1x1MDY0MiBcdTA2MjdcdTA2NDRcdTA2MzlcdTA2NDVcdTA2NDQiOmNhc2UiXHUzMGVmXHUzMGZjXHUzMGFmXHUzMGI3XHUzMGZjXHUzMGM4IjpjYXNlIlx1MDVkMlx1MDVkY1x1MDVkOVx1MDVkNVx1MDVlMFx1MDVkNVx1MDVlYSBcdTA1ZTJcdTA1ZDFcdTA1ZDVcdTA1ZDNcdTA1ZDQiOmNh''@;'; put 'put ''c2UiQXJiZWl0c2JsXHhlNHR0ZXIiOmNhc2UiXHhjN2FsXHUwMTMxXHUwMTVmbWEgU2F5ZmFsYXJcdTAxMzEiOmNhc2UiRmV1aWxsZXMgZGUgY2FsY3VsIjpjYXNlIkZvZ2xpIGRpIGxhdm9ybyI6Y2FzZSJGb2xoYXMgZGUgY1x4ZTFsY3VsbyI6Y2FzZSJQbGFuaWxoYXMiOmNhc2UiUmVnbmVh''@;'; put 'put ''cmsiOmNhc2UiSG9qYXMgZGUgY1x4ZTFsY3VsbyI6Y2FzZSJXZXJrYmxhZGVuIjpYLldvcmtzaGVldHM9WWUsWC5TaGVldE5hbWVzPVplLnNsaWNlKGplLGplK1llKTticmVhaztjYXNlIk5hbWVkIFJhbmdlcyI6Y2FzZSJSYW5nb3MgY29uIG5vbWJyZSI6Y2FzZSJcdTU0MGRcdTUyNGRcdTRl''@;'; put 'put ''ZDhcdTMwNGRcdTRlMDBcdTg5YTciOmNhc2UiQmVuYW5udGUgQmVyZWljaGUiOmNhc2UiTmF2bmdpdm5lIG9tclx4ZTVkZXIiOlguTmFtZWRSYW5nZXM9WWUsWC5EZWZpbmVkTmFtZXM9WmUuc2xpY2UoamUsamUrWWUpO2JyZWFrO2Nhc2UiQ2hhcnRzIjpjYXNlIkRpYWdyYW1tZSI6WC5DaGFy''@;'; put 'put ''dHNoZWV0cz1ZZSxYLkNoYXJ0TmFtZXM9WmUuc2xpY2UoamUsamUrWWUpfWplKz1ZZX19WDAuRVhUX1BST1BTPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9leHRlbmRlZC1wcm9wZXJ0aWVzIixkdC5FWFRfUFJPUFM9Imh0dHA6Ly9zY2hl''@;'; put 'put ''bWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZXh0ZW5kZWQtcHJvcGVydGllcyI7dmFyIFBNPV9pKCJQcm9wZXJ0aWVzIixudWxsLHt4bWxuczpYMC5FWFRfUFJPUFMsInhtbG5zOnZ0IjpYMC52dH0pO1gwLkNVU1RfUFJPUFM9Imh0dHA6''@;'; put 'put ''Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2N1c3RvbS1wcm9wZXJ0aWVzIixkdC5DVVNUX1BST1BTPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2N1c3RvbS1wcm9wZXJ0''@;'; put 'put ''aWVzIjt2YXIgbTk9LzxbXj5dKz5bXjxdKi9nLERuPV9pKCJQcm9wZXJ0aWVzIixudWxsLHt4bWxuczpYMC5DVVNUX1BST1BTLCJ4bWxuczp2dCI6WDAudnR9KTt2YXIgZW89e1RpdGxlOiJUaXRsZSIsU3ViamVjdDoiU3ViamVjdCIsQXV0aG9yOiJBdXRob3IiLEtleXdvcmRzOiJLZXl3b3Jk''@;'; put 'put ''cyIsQ29tbWVudHM6IkRlc2NyaXB0aW9uIixMYXN0QXV0aG9yOiJMYXN0QXV0aG9yIixSZXZOdW1iZXI6IlJldmlzaW9uIixBcHBsaWNhdGlvbjoiQXBwTmFtZSIsTGFzdFByaW50ZWQ6Ikxhc3RQcmludGVkIixDcmVhdGVkRGF0ZToiQ3JlYXRlZCIsTW9kaWZpZWREYXRlOiJMYXN0U2F2ZWQi''@;'; put 'put ''LENhdGVnb3J5OiJDYXRlZ29yeSIsTWFuYWdlcjoiTWFuYWdlciIsQ29tcGFueToiQ29tcGFueSIsQXBwVmVyc2lvbjoiVmVyc2lvbiIsQ29udGVudFN0YXR1czoiQ29udGVudFN0YXR1cyIsSWRlbnRpZmllcjoiSWRlbnRpZmllciIsTGFuZ3VhZ2U6Ikxhbmd1YWdlIn0sRDA9dHQoZW8pO2Z1''@;'; put 'put ''bmN0aW9uIHFsKEgsaWUsWCl7SFtpZT1EMFtpZV18fGllXT1YfWZ1bmN0aW9uIFQ4KEgpe3ZhciBpZT1ILnJlYWRfc2hpZnQoNCksWD1ILnJlYWRfc2hpZnQoNCk7cmV0dXJuIG5ldyBEYXRlKDFlMyooWC8xZTcqTWF0aC5wb3coMiwzMikraWUvMWU3LTExNjQ0NDczNjAwKSkudG9JU09TdHJp''@;'; put 'put ''bmcoKS5yZXBsYWNlKC9cLjAwMC8sIiIpfWZ1bmN0aW9uIFhwKEgsaWUsWCl7dmFyIHdlPUgubCx4ZT1ILnJlYWRfc2hpZnQoMCwibHBzdHItY3AiKTtpZihYKWZvcig7SC5sLXdlJjM7KSsrSC5sO3JldHVybiB4ZX1mdW5jdGlvbiBaZihILGllLFgpe3ZhciB3ZT1ILnJlYWRfc2hpZnQoMCwi''@;'; put 'put ''bHB3c3RyIik7cmV0dXJuIFgmJihILmwrPTQtKHdlLmxlbmd0aCsxJjMpJjMpLHdlfWZ1bmN0aW9uIFVsKEgsaWUsWCl7cmV0dXJuIDMxPT09aWU/WmYoSCk6WHAoSCwwLFgpfWZ1bmN0aW9uIHpmKEgsaWUsWCl7cmV0dXJuIFVsKEgsaWUsITE9PT1YPzA6NCl9ZnVuY3Rpb24gYWIoSCl7dmFy''@;'; put 'put ''IGllPUgubCxYPXlkKEgsODEpO3JldHVybiAwPT1IW0gubF0mJjA9PUhbSC5sKzFdJiZILmwtaWUmMiYmKEgubCs9MiksW1gseWQoSCwzKV19ZnVuY3Rpb24gQWQoSCxpZSl7Zm9yKHZhciBYPUgucmVhZF9zaGlmdCg0KSx3ZT17fSx4ZT0wO3hlIT1YOysreGUpe3ZhciBGZT1ILnJlYWRfc2hp''@;'; put 'put ''ZnQoNCksWmU9SC5yZWFkX3NoaWZ0KDQpO3dlW0ZlXT1ILnJlYWRfc2hpZnQoWmUsMTIwMD09PWllPyJ1dGYxNmxlIjoidXRmOCIpLnJlcGxhY2UoVCwiIikucmVwbGFjZShTLCIhIiksMTIwMD09PWllJiZaZSUyJiYoSC5sKz0yKX1yZXR1cm4gMyZILmwmJihILmw9SC5sPj4zPDwyKSx3ZX1m''@;'; put 'put ''dW5jdGlvbiB3MihIKXt2YXIgaWU9SC5yZWFkX3NoaWZ0KDQpLFg9SC5zbGljZShILmwsSC5sK2llKTtyZXR1cm4gSC5sKz1pZSwoMyZpZSk+MCYmKEgubCs9NC0oMyZpZSkmMyksWH1mdW5jdGlvbiB5ZChILGllLFgpe3ZhciB4ZSx3ZT1ILnJlYWRfc2hpZnQoMiksRmU9WHx8e307aWYoSC5s''@;'; put 'put ''Kz0yLDEyIT09aWUmJndlIT09aWUmJi0xPT09TE0uaW5kZXhPZihpZSkmJig0MTI2IT0oNjU1MzQmaWUpfHw0MTI2IT0oNjU1MzQmd2UpKSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHR5cGUgIitpZSsiIHNhdyAiK3dlKTtzd2l0Y2goMTI9PT1pZT93ZTppZSl7Y2FzZSAyOnJldHVybiB4''@;'; put 'put ''ZT1ILnJlYWRfc2hpZnQoMiwiaSIpLEZlLnJhd3x8KEgubCs9MikseGU7Y2FzZSAzOnJldHVybiBILnJlYWRfc2hpZnQoNCwiaSIpO2Nhc2UgMTE6cmV0dXJuIDAhPT1ILnJlYWRfc2hpZnQoNCk7Y2FzZSAxOTpyZXR1cm4gSC5yZWFkX3NoaWZ0KDQpO2Nhc2UgMzA6cmV0dXJuIFhwKEgsMCw0''@;'; put 'put ''KS5yZXBsYWNlKFQsIiIpO2Nhc2UgMzE6cmV0dXJuIFpmKEgpO2Nhc2UgNjQ6cmV0dXJuIFQ4KEgpO2Nhc2UgNjU6cmV0dXJuIHcyKEgpO2Nhc2UgNzE6cmV0dXJuIGZ1bmN0aW9uIGVtKEgpe3ZhciBpZT17fTtyZXR1cm4gaWUuU2l6ZT1ILnJlYWRfc2hpZnQoNCksSC5sKz1pZS5TaXplKzMt''@;'; put 'put ''KGllLlNpemUtMSklNCxpZX0oSCk7Y2FzZSA4MDpyZXR1cm4gemYoSCx3ZSwhRmUucmF3KS5yZXBsYWNlKFQsIiIpO2Nhc2UgODE6cmV0dXJuIGZ1bmN0aW9uIEYyKEgsaWUpe2lmKCFpZSl0aHJvdyBuZXcgRXJyb3IoIlZ0VW5hbGlnbmVkU3RyaW5nIG11c3QgaGF2ZSBwb3NpdGl2ZSBsZW5n''@;'; put 'put ''dGgiKTtyZXR1cm4gVWwoSCxpZSwwKX0oSCx3ZSkucmVwbGFjZShULCIiKTtjYXNlIDQxMDg6cmV0dXJuIGZ1bmN0aW9uIEZNKEgpe2Zvcih2YXIgaWU9SC5yZWFkX3NoaWZ0KDQpLFg9W10sd2U9MDt3ZTxpZS8yOysrd2UpWC5wdXNoKGFiKEgpKTtyZXR1cm4gWH0oSCk7Y2FzZSA0MTI2OmNh''@;'; put 'put ''c2UgNDEyNzpyZXR1cm4gNDEyNz09d2U/ZnVuY3Rpb24gSXUoSCl7Zm9yKHZhciBpZT1ILnJlYWRfc2hpZnQoNCksWD1bXSx3ZT0wO3dlIT1pZTsrK3dlKXt2YXIgeGU9SC5sO1hbd2VdPUgucmVhZF9zaGlmdCgwLCJscHdzdHIiKS5yZXBsYWNlKFQsIiIpLEgubC14ZSYyJiYoSC5sKz0yKX1y''@;'; put 'put ''ZXR1cm4gWH0oSCk6ZnVuY3Rpb24gQXIoSCl7Zm9yKHZhciBpZT1ILnJlYWRfc2hpZnQoNCksWD1bXSx3ZT0wO3dlIT1pZTsrK3dlKVhbd2VdPUgucmVhZF9zaGlmdCgwLCJscHN0ci1jcCIpLnJlcGxhY2UoVCwiIik7cmV0dXJuIFh9KEgpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBl''@;'; put 'put ''ZFByb3BlcnR5VmFsdWUgdW5yZWNvZ25pemVkIHR5cGUgIitpZSsiICIrd2UpfX1mdW5jdGlvbiBLcChILGllKXt2YXIgWD1SaSg0KSx3ZT1SaSg0KTtzd2l0Y2goWC53cml0ZV9zaGlmdCg0LDgwPT1IPzMxOkgpLEgpe2Nhc2UgMzp3ZS53cml0ZV9zaGlmdCgtNCxpZSk7YnJlYWs7Y2FzZSA1''@;'; put 'put ''Oih3ZT1SaSg4KSkud3JpdGVfc2hpZnQoOCxpZSwiZiIpO2JyZWFrO2Nhc2UgMTE6d2Uud3JpdGVfc2hpZnQoNCxpZT8xOjApO2JyZWFrO2Nhc2UgNjQ6d2U9ZnVuY3Rpb24gSnAoSCl7dmFyIFg9KCJzdHJpbmciPT10eXBlb2YgSD9uZXcgRGF0ZShEYXRlLnBhcnNlKEgpKTpIKS5nZXRUaW1l''@;'; put 'put ''KCkvMWUzKzExNjQ0NDczNjAwLHdlPVglTWF0aC5wb3coMiwzMikseGU9KFgtd2UpL01hdGgucG93KDIsMzIpO3hlKj0xZTc7dmFyIEZlPSh3ZSo9MWU3KS9NYXRoLnBvdygyLDMyKXwwO0ZlPjAmJih3ZSU9TWF0aC5wb3coMiwzMikseGUrPUZlKTt2YXIgWmU9UmkoOCk7cmV0dXJuIFplLndy''@;'; put 'put ''aXRlX3NoaWZ0KDQsd2UpLFplLndyaXRlX3NoaWZ0KDQseGUpLFplfShpZSk7YnJlYWs7Y2FzZSAzMTpjYXNlIDgwOmZvcigod2U9UmkoNCsyKihpZS5sZW5ndGgrMSkrKGllLmxlbmd0aCUyPzA6MikpKS53cml0ZV9zaGlmdCg0LGllLmxlbmd0aCsxKSx3ZS53cml0ZV9zaGlmdCgwLGllLCJk''@;'; put 'put ''YmNzIik7d2UubCE9d2UubGVuZ3RoOyl3ZS53cml0ZV9zaGlmdCgxLDApO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlZFByb3BlcnR5VmFsdWUgdW5yZWNvZ25pemVkIHR5cGUgIitIKyIgIitpZSl9cmV0dXJuIFYoW1gsd2VdKX1mdW5jdGlvbiBmZihILGllKXt2YXIgWD1I''@;'; put 'put ''Lmwsd2U9SC5yZWFkX3NoaWZ0KDQpLHhlPUgucmVhZF9zaGlmdCg0KSxGZT1bXSxaZT0wLGplPTAsWWU9LTEsTXQ9e307Zm9yKFplPTA7WmUhPXhlOysrWmUpe3ZhciB4dD1ILnJlYWRfc2hpZnQoNCksUnQ9SC5yZWFkX3NoaWZ0KDQpO0ZlW1plXT1beHQsUnQrWF19RmUuc29ydChmdW5jdGlv''@;'; put 'put ''bihUbixPbil7cmV0dXJuIFRuWzFdLU9uWzFdfSk7dmFyIFV0PXt9O2ZvcihaZT0wO1plIT14ZTsrK1plKXtpZihILmwhPT1GZVtaZV1bMV0pe3ZhciBubj0hMDtpZihaZT4wJiZpZSlzd2l0Y2goaWVbRmVbWmUtMV1bMF1dLnQpe2Nhc2UgMjpILmwrMj09PUZlW1plXVsxXSYmKEgubCs9Mixu''@;'; put 'put ''bj0hMSk7YnJlYWs7Y2FzZSA4MDpjYXNlIDQxMDg6SC5sPD1GZVtaZV1bMV0mJihILmw9RmVbWmVdWzFdLG5uPSExKX1pZigoIWllfHwwPT1aZSkmJkgubDw9RmVbWmVdWzFdJiYobm49ITEsSC5sPUZlW1plXVsxXSksbm4pdGhyb3cgbmV3IEVycm9yKCJSZWFkIEVycm9yOiBFeHBlY3RlZCBh''@;'; put 'put ''ZGRyZXNzICIrRmVbWmVdWzFdKyIgYXQgIitILmwrIiA6IitaZSl9aWYoaWUpe3ZhciBDbj1pZVtGZVtaZV1bMF1dO2lmKFV0W0NuLm5dPXlkKEgsQ24udCx7cmF3OiEwfSksInZlcnNpb24iPT09Q24ucCYmKFV0W0NuLm5dPVN0cmluZyhVdFtDbi5uXT4+MTYpKyIuIisoIjAwMDAiK1N0cmlu''@;'; put 'put ''Zyg2NTUzNSZVdFtDbi5uXSkpLnNsaWNlKC00KSksIkNvZGVQYWdlIj09Q24ubilzd2l0Y2goVXRbQ24ubl0pe2Nhc2UgMDpVdFtDbi5uXT0xMjUyO2Nhc2UgODc0OmNhc2UgOTMyOmNhc2UgOTM2OmNhc2UgOTQ5OmNhc2UgOTUwOmNhc2UgMTI1MDpjYXNlIDEyNTE6Y2FzZSAxMjUzOmNhc2Ug''@;'; put 'put ''MTI1NDpjYXNlIDEyNTU6Y2FzZSAxMjU2OmNhc2UgMTI1NzpjYXNlIDEyNTg6Y2FzZSAxZTQ6Y2FzZSAxMjAwOmNhc2UgMTIwMTpjYXNlIDEyNTI6Y2FzZSA2NWUzOmNhc2UtNTM2OmNhc2UgNjUwMDE6Y2FzZS01MzU6dGUoamU9VXRbQ24ubl0+Pj4wJjY1NTM1KTticmVhaztkZWZhdWx0OnRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgQ29kZVBhZ2U6ICIrVXRbQ24ubl0pfX1lbHNlIGlmKDE9PT1GZVtaZV1bMF0pe2lmKGplPVV0LkNvZGVQYWdlPXlkKEgsMiksdGUoamUpLC0xIT09WWUpe3ZhciBEdD1ILmw7SC5sPUZlW1llXVsxXSxNdD1BZChILGplKSxILmw9RHR9fWVsc2Ug''@;'; put 'put ''aWYoMD09PUZlW1plXVswXSl7aWYoMD09PWplKXtZZT1aZSxILmw9RmVbWmUrMV1bMV07Y29udGludWV9TXQ9QWQoSCxqZSl9ZWxzZXt2YXIgUG4senQ9TXRbRmVbWmVdWzBdXTtzd2l0Y2goSFtILmxdKXtjYXNlIDY1OkgubCs9NCxQbj13MihIKTticmVhaztjYXNlIDMwOmNhc2UgMzE6SC5s''@;'; put 'put ''Kz00LFBuPXpmKEgsSFtILmwtNF0pLnJlcGxhY2UoL1x1MDAwMCskLywiIik7YnJlYWs7Y2FzZSAzOkgubCs9NCxQbj1ILnJlYWRfc2hpZnQoNCwiaSIpO2JyZWFrO2Nhc2UgMTk6SC5sKz00LFBuPUgucmVhZF9zaGlmdCg0KTticmVhaztjYXNlIDU6SC5sKz00LFBuPUgucmVhZF9zaGlmdCg4''@;'; put 'put ''LCJmIik7YnJlYWs7Y2FzZSAxMTpILmwrPTQsUG49dGEoSCw0KTticmVhaztjYXNlIDY0OkgubCs9NCxQbj1kbihUOChIKSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVucGFyc2VkIHZhbHVlOiAiK0hbSC5sXSl9VXRbenRdPVBufX1yZXR1cm4gSC5sPVgrd2UsVXR9dmFyIEk4''@;'; put 'put ''PVsiQ29kZVBhZ2UiLCJUaHVtYm5haWwiLCJfUElEX0xJTktCQVNFIiwiX1BJRF9ITElOS1MiLCJTeXN0ZW1JZGVudGlmaWVyIiwiRk1USUQiXS5jb25jYXQoWyJXb3Jrc2hlZXRzIiwiU2hlZXROYW1lcyIsIk5hbWVkUmFuZ2VzIiwiRGVmaW5lZE5hbWVzIiwiQ2hhcnRzaGVldHMiLCJDaGFy''@;'; put 'put ''dE5hbWVzIl0pO2Z1bmN0aW9uIEhNKEgpe3N3aXRjaCh0eXBlb2YgSCl7Y2FzZSJib29sZWFuIjpyZXR1cm4gMTE7Y2FzZSJudW1iZXIiOnJldHVybigwfEgpPT1IPzM6NTtjYXNlInN0cmluZyI6cmV0dXJuIDMxO2Nhc2Uib2JqZWN0IjppZihIIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gNjR9''@;'; put 'put ''cmV0dXJuLTF9ZnVuY3Rpb24gQ2goSCxpZSxYKXt2YXIgd2U9UmkoOCkseGU9W10sRmU9W10sWmU9OCxqZT0wLFllPVJpKDgpLE10PVJpKDgpO2lmKFllLndyaXRlX3NoaWZ0KDQsMiksWWUud3JpdGVfc2hpZnQoNCwxMjAwKSxNdC53cml0ZV9zaGlmdCg0LDEpLEZlLnB1c2goWWUpLHhlLnB1''@;'; put 'put ''c2goTXQpLFplKz04K1llLmxlbmd0aCwhaWUpeyhNdD1SaSg4KSkud3JpdGVfc2hpZnQoNCwwKSx4ZS51bnNoaWZ0KE10KTt2YXIgeHQ9W1JpKDQpXTtmb3IoeHRbMF0ud3JpdGVfc2hpZnQoNCxILmxlbmd0aCksamU9MDtqZTxILmxlbmd0aDsrK2plKXt2YXIgUnQ9SFtqZV1bMF07Zm9yKChZ''@;'; put 'put ''ZT1SaSg4KzIqKFJ0Lmxlbmd0aCsxKSsoUnQubGVuZ3RoJTI/MDoyKSkpLndyaXRlX3NoaWZ0KDQsamUrMiksWWUud3JpdGVfc2hpZnQoNCxSdC5sZW5ndGgrMSksWWUud3JpdGVfc2hpZnQoMCxSdCwiZGJjcyIpO1llLmwhPVllLmxlbmd0aDspWWUud3JpdGVfc2hpZnQoMSwwKTt4dC5wdXNo''@;'; put 'put ''KFllKX1ZZT1WKHh0KSxGZS51bnNoaWZ0KFllKSxaZSs9OCtZZS5sZW5ndGh9Zm9yKGplPTA7amU8SC5sZW5ndGg7KytqZSlpZigoIWllfHxpZVtIW2plXVswXV0pJiYhKEk4LmluZGV4T2YoSFtqZV1bMF0pPi0xKSYmbnVsbCE9SFtqZV1bMV0pe3ZhciBVdD1IW2plXVsxXSxubj0wO2lmKGll''@;'; put 'put ''KXt2YXIgQ249WFtubj0raWVbSFtqZV1bMF1dXTtpZigidmVyc2lvbiI9PUNuLnAmJiJzdHJpbmciPT10eXBlb2YgVXQpe3ZhciBEdD1VdC5zcGxpdCgiLiIpO1V0PSgrRHRbMF08PDE2KSsoK0R0WzFdfHwwKX1ZZT1LcChDbi50LFV0KX1lbHNle3ZhciB6dD1ITShVdCk7LTE9PXp0JiYoenQ9''@;'; put 'put ''MzEsVXQ9U3RyaW5nKFV0KSksWWU9S3AoenQsVXQpfUZlLnB1c2goWWUpLChNdD1SaSg4KSkud3JpdGVfc2hpZnQoNCxpZT9ubjoyK2plKSx4ZS5wdXNoKE10KSxaZSs9OCtZZS5sZW5ndGh9dmFyIFBuPTgqKEZlLmxlbmd0aCsxKTtmb3IoamU9MDtqZTxGZS5sZW5ndGg7KytqZSl4ZVtqZV0u''@;'; put 'put ''d3JpdGVfc2hpZnQoNCxQbiksUG4rPUZlW2plXS5sZW5ndGg7cmV0dXJuIHdlLndyaXRlX3NoaWZ0KDQsWmUpLHdlLndyaXRlX3NoaWZ0KDQsRmUubGVuZ3RoKSxWKFt3ZV0uY29uY2F0KHhlKS5jb25jYXQoRmUpKX1mdW5jdGlvbiB3ZChILGllLFgpe3ZhciB3ZT1ILmNvbnRlbnQ7aWYoIXdl''@;'; put 'put ''KXJldHVybnt9O0tsKHdlLDApO3ZhciB4ZSxGZSxaZSxqZSxZZT0wO3dlLmNoaygiZmVmZiIsIkJ5dGUgT3JkZXI6ICIpLHdlLnJlYWRfc2hpZnQoMik7dmFyIE10PXdlLnJlYWRfc2hpZnQoNCkseHQ9d2UucmVhZF9zaGlmdCgxNik7aWYoeHQhPT1tdC51dGlscy5jb25zdHMuSEVBREVSX0NM''@;'; put 'put ''U0lEJiZ4dCE9PVgpdGhyb3cgbmV3IEVycm9yKCJCYWQgUHJvcGVydHlTZXQgQ0xTSUQgIit4dCk7aWYoMSE9PSh4ZT13ZS5yZWFkX3NoaWZ0KDQpKSYmMiE9PXhlKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkICNTZXRzOiAiK3hlKTtpZihGZT13ZS5yZWFkX3NoaWZ0KDE2KSxqZT13''@;'; put 'put ''ZS5yZWFkX3NoaWZ0KDQpLDE9PT14ZSYmamUhPT13ZS5sKXRocm93IG5ldyBFcnJvcigiTGVuZ3RoIG1pc21hdGNoOiAiK2plKyIgIT09ICIrd2UubCk7Mj09PXhlJiYoWmU9d2UucmVhZF9zaGlmdCgxNiksWWU9d2UucmVhZF9zaGlmdCg0KSk7dmFyIENuLFJ0PWZmKHdlLGllKSxVdD17U3lz''@;'; put 'put ''dGVtSWRlbnRpZmllcjpNdH07Zm9yKHZhciBubiBpbiBSdClVdFtubl09UnRbbm5dO2lmKFV0LkZNVElEPUZlLDE9PT14ZSlyZXR1cm4gVXQ7aWYoWWUtd2UubD09MiYmKHdlLmwrPTIpLHdlLmwhPT1ZZSl0aHJvdyBuZXcgRXJyb3IoIkxlbmd0aCBtaXNtYXRjaCAyOiAiK3dlLmwrIiAhPT0g''@;'; put 'put ''IitZZSk7dHJ5e0NuPWZmKHdlLG51bGwpfWNhdGNoKER0KXt9Zm9yKG5uIGluIENuKVV0W25uXT1Dbltubl07cmV0dXJuIFV0LkZNVElEPVtGZSxaZV0sVXR9ZnVuY3Rpb24gYTAoSCxpZSxYLHdlLHhlLEZlKXt2YXIgWmU9UmkoeGU/Njg6NDgpLGplPVtaZV07WmUud3JpdGVfc2hpZnQoMiw2''@;'; put 'put ''NTUzNCksWmUud3JpdGVfc2hpZnQoMiwwKSxaZS53cml0ZV9zaGlmdCg0LDg0MjQxMjU5OSksWmUud3JpdGVfc2hpZnQoMTYsbXQudXRpbHMuY29uc3RzLkhFQURFUl9DTFNJRCwiaGV4IiksWmUud3JpdGVfc2hpZnQoNCx4ZT8yOjEpLFplLndyaXRlX3NoaWZ0KDE2LGllLCJoZXgiKSxaZS53''@;'; put 'put ''cml0ZV9zaGlmdCg0LHhlPzY4OjQ4KTt2YXIgWWU9Q2goSCxYLHdlKTtpZihqZS5wdXNoKFllKSx4ZSl7dmFyIE10PUNoKHhlLG51bGwsbnVsbCk7WmUud3JpdGVfc2hpZnQoMTYsRmUsImhleCIpLFplLndyaXRlX3NoaWZ0KDQsNjgrWWUubGVuZ3RoKSxqZS5wdXNoKE10KX1yZXR1cm4gVihq''@;'; put 'put ''ZSl9ZnVuY3Rpb24gRmwoSCxpZSl7cmV0dXJuIEgucmVhZF9zaGlmdChpZSksbnVsbH1mdW5jdGlvbiB0YShILGllKXtyZXR1cm4gMT09PUgucmVhZF9zaGlmdChpZSl9ZnVuY3Rpb24gajEoSCxpZSl7cmV0dXJuIGllfHwoaWU9UmkoMikpLGllLndyaXRlX3NoaWZ0KDIsKyEhSCksaWV9ZnVu''@;'; put 'put ''Y3Rpb24gYzEoSCl7cmV0dXJuIEgucmVhZF9zaGlmdCgyLCJ1Iil9ZnVuY3Rpb24gaGYoSCxpZSl7cmV0dXJuIGllfHwoaWU9UmkoMikpLGllLndyaXRlX3NoaWZ0KDIsSCksaWV9ZnVuY3Rpb24gWmMoSCxpZSl7cmV0dXJuIGZ1bmN0aW9uIEpzKEgsaWUsWCl7Zm9yKHZhciB3ZT1bXSx4ZT1I''@;'; put 'put ''LmwraWU7SC5sPHhlOyl3ZS5wdXNoKFgoSCx4ZS1ILmwpKTtpZih4ZSE9PUgubCl0aHJvdyBuZXcgRXJyb3IoIlNsdXJwIGVycm9yIik7cmV0dXJuIHdlfShILGllLGMxKX1mdW5jdGlvbiBaMShILGllLFgpe3JldHVybiBYfHwoWD1SaSgyKSksWC53cml0ZV9zaGlmdCgxLCJlIj09aWU/K0g6''@;'; put 'put ''KyEhSCksWC53cml0ZV9zaGlmdCgxLCJlIj09aWU/MTowKSxYfWZ1bmN0aW9uIHpjKEgsaWUsWCl7dmFyIHdlPUgucmVhZF9zaGlmdChYJiZYLmJpZmY+PTEyPzI6MSkseGU9InNiY3MtY29udCIsRmU9UTtYJiZYLmJpZmY+PTgmJihRPTEyMDApLFgmJjghPVguYmlmZj8xMj09WC5iaWZmJiYo''@;'; put 'put ''eGU9IndzdHIiKTpILnJlYWRfc2hpZnQoMSkmJih4ZT0iZGJjcy1jb250IiksWC5iaWZmPj0yJiZYLmJpZmY8PTUmJih4ZT0iY3BzdHIiKTt2YXIgamU9d2U/SC5yZWFkX3NoaWZ0KHdlLHhlKToiIjtyZXR1cm4gUT1GZSxqZX1mdW5jdGlvbiBsYihIKXt2YXIgaWU9UTtRPTEyMDA7dmFyIFll''@;'; put 'put ''LFg9SC5yZWFkX3NoaWZ0KDIpLHdlPUgucmVhZF9zaGlmdCgxKSx4ZT00JndlLEZlPTgmd2UsWmU9MSsoMSZ3ZSksamU9MCxNdD17fTtGZSYmKGplPUgucmVhZF9zaGlmdCgyKSkseGUmJihZZT1ILnJlYWRfc2hpZnQoNCkpO3ZhciBSdD0wPT09WD8iIjpILnJlYWRfc2hpZnQoWCwyPT1aZT8i''@;'; put 'put ''ZGJjcy1jb250Ijoic2Jjcy1jb250Iik7aWYoRmUpZm9yKE10Ll9SPVtdO2plLS0gPjA7KU10Ll9SLnB1c2goe2lkeDpILnJlYWRfc2hpZnQoMiksaWZudDpILnJlYWRfc2hpZnQoMil9KTtyZXR1cm4geGUmJihILmwrPVllKSxNdC50PVJ0LEZlfHwoTXQucj0iPHQ+IitNdC50KyI8L3Q+Iiks''@;'; put 'put ''UT1pZSxNdH1mdW5jdGlvbiBHYyhILGllKXt2YXIgWD1ILlImJkguUi5sZW5ndGh8fEgucjtILnImJihILlI9VzgoSC5yKSk7dmFyIHdlPSIiLHhlPTA7WD9ILlIuZm9yRWFjaChmdW5jdGlvbihDbil7eGUrKyx3ZSs9Q24udnx8IiJ9KTood2U9SC50fHwiIix4ZT0xKTt2YXIgRmU9UmkoMyso''@;'; put 'put ''eGU+MT8yOjApKTtGZS53cml0ZV9zaGlmdCgyLHdlLmxlbmd0aCksRmUud3JpdGVfc2hpZnQoMSwxfCh4ZT4xPzg6MCkpLHhlPjEmJkZlLndyaXRlX3NoaWZ0KDIseGUpO3ZhciBaZT1SaSgyKndlLmxlbmd0aCk7WmUud3JpdGVfc2hpZnQoMip3ZS5sZW5ndGgsd2UsInV0ZjE2bGUiKTt2YXIg''@;'; put 'put ''amU9W0ZlLFplXTtpZihYKXt2YXIgWWU9UmkoNCpILlIubGVuZ3RoKSxNdD0wO2plLnB1c2goWWUpO2Zvcih2YXIgeHQ9MDt4dDxILlIubGVuZ3RoOysreHQpe3ZhciBSdD1ILlJbeHRdO1llLndyaXRlX3NoaWZ0KDIsTXQpLE10Kz0oUnQudnx8IiIpLmxlbmd0aDt2YXIgVXQ9UnQucz9ZMShp''@;'; put 'put ''ZS5jZWxsWGZzLGllLmNlbGxTdHlsZVhmcyx7dDoibiIsdjowLHM6UnQuc30saWUpOjAsbm49aWUuY2VsbFhmc1tVdF0uZm9udElkO1llLndyaXRlX3NoaWZ0KDIsbm48ND9ubjpubisxKX19cmV0dXJuIFYoamUpfWZ1bmN0aW9uIGN1KEgsaWUsWCl7aWYoWCl7aWYoWC5iaWZmPj0yJiZYLmJp''@;'; put 'put ''ZmY8PTUpcmV0dXJuIEgucmVhZF9zaGlmdChpZSwiY3BzdHIiKTtpZihYLmJpZmY+PTEyKXJldHVybiBILnJlYWRfc2hpZnQoaWUsImRiY3MtY29udCIpfXZhciB4ZT1ILnJlYWRfc2hpZnQoMSk7cmV0dXJuIEgucmVhZF9zaGlmdChpZSwwPT09eGU/InNiY3MtY29udCI6ImRiY3MtY29udCIp''@;'; put 'put ''fWZ1bmN0aW9uIHg0KEgsaWUsWCl7dmFyIHdlPUgucmVhZF9zaGlmdChYJiYyPT1YLmJpZmY/MToyKTtyZXR1cm4gMD09PXdlPyhILmwrKywiIik6Y3UoSCx3ZSxYKX1mdW5jdGlvbiBkZihILGllLFgpe2lmKFguYmlmZj41KXJldHVybiB4NChILDAsWCk7dmFyIHdlPUgucmVhZF9zaGlmdCgx''@;'; put 'put ''KTtyZXR1cm4gMD09PXdlPyhILmwrKywiIik6SC5yZWFkX3NoaWZ0KHdlLFguYmlmZjw9NHx8IUgubGVucz8iY3BzdHIiOiJzYmNzLWNvbnQiKX1mdW5jdGlvbiBQcihILGllLFgpe3JldHVybiBYfHwoWD1SaSgzKzIqSC5sZW5ndGgpKSxYLndyaXRlX3NoaWZ0KDIsSC5sZW5ndGgpLFgud3Jp''@;'; put 'put ''dGVfc2hpZnQoMSwxKSxYLndyaXRlX3NoaWZ0KDMxLEgsInV0ZjE2bGUiKSxYfWZ1bmN0aW9uIHFwKEgpe3ZhciBpZT1ILnJlYWRfc2hpZnQoNCk7cmV0dXJuIGllPjA/SC5yZWFkX3NoaWZ0KGllLCJ1dGYxNmxlIikucmVwbGFjZShULCIiKToiIn1mdW5jdGlvbiBwZihILGllKXtpZXx8KGll''@;'; put 'put ''PVJpKDYrMipILmxlbmd0aCkpLGllLndyaXRlX3NoaWZ0KDQsMStILmxlbmd0aCk7Zm9yKHZhciBYPTA7WDxILmxlbmd0aDsrK1gpaWUud3JpdGVfc2hpZnQoMixILmNoYXJDb2RlQXQoWCkpO3JldHVybiBpZS53cml0ZV9zaGlmdCgyLDApLGllfWZ1bmN0aW9uIGU2KEgpe3ZhciBpZT1SaSg1''@;'; put 'put ''MTIpLFg9MCx3ZT1ILlRhcmdldDsiZmlsZTovLyI9PXdlLnNsaWNlKDAsNykmJih3ZT13ZS5zbGljZSg3KSk7dmFyIHhlPXdlLmluZGV4T2YoIiMiKSxGZT14ZT4tMT8zMToyMztzd2l0Y2god2UuY2hhckF0KDApKXtjYXNlIiMiOkZlPTI4O2JyZWFrO2Nhc2UiLiI6RmUmPS0zfWllLndyaXRl''@;'; put 'put ''X3NoaWZ0KDQsMiksaWUud3JpdGVfc2hpZnQoNCxGZSk7dmFyIFplPVs4LDY4MTU4MjcsNjYxOTIzNyw0ODQ5NzgwLDgzXTtmb3IoWD0wO1g8WmUubGVuZ3RoOysrWClpZS53cml0ZV9zaGlmdCg0LFplW1hdKTtpZigyOD09RmUpcGYod2U9d2Uuc2xpY2UoMSksaWUpO2Vsc2UgaWYoMiZGZSl7''@;'; put 'put ''Zm9yKFplPSJlMCBjOSBlYSA3OSBmOSBiYSBjZSAxMSA4YyA4MiAwMCBhYSAwMCA0YiBhOSAwYiIuc3BsaXQoIiAiKSxYPTA7WDxaZS5sZW5ndGg7KytYKWllLndyaXRlX3NoaWZ0KDEscGFyc2VJbnQoWmVbWF0sMTYpKTt2YXIgamU9eGU+LTE/d2Uuc2xpY2UoMCx4ZSk6d2U7Zm9yKGllLndy''@;'; put 'put ''aXRlX3NoaWZ0KDQsMiooamUubGVuZ3RoKzEpKSxYPTA7WDxqZS5sZW5ndGg7KytYKWllLndyaXRlX3NoaWZ0KDIsamUuY2hhckNvZGVBdChYKSk7aWUud3JpdGVfc2hpZnQoMiwwKSw4JkZlJiZwZih4ZT4tMT93ZS5zbGljZSh4ZSsxKToiIixpZSl9ZWxzZXtmb3IoWmU9IjAzIDAzIDAwIDAw''@;'; put 'put ''IDAwIDAwIDAwIDAwIGMwIDAwIDAwIDAwIDAwIDAwIDAwIDQ2Ii5zcGxpdCgiICIpLFg9MDtYPFplLmxlbmd0aDsrK1gpaWUud3JpdGVfc2hpZnQoMSxwYXJzZUludChaZVtYXSwxNikpO2Zvcih2YXIgWWU9MDsiLi4vIj09d2Uuc2xpY2UoMypZZSwzKlllKzMpfHwiLi5cXCI9PXdlLnNsaWNl''@;'; put 'put ''KDMqWWUsMypZZSszKTspKytZZTtmb3IoaWUud3JpdGVfc2hpZnQoMixZZSksaWUud3JpdGVfc2hpZnQoNCx3ZS5sZW5ndGgtMypZZSsxKSxYPTA7WDx3ZS5sZW5ndGgtMypZZTsrK1gpaWUud3JpdGVfc2hpZnQoMSwyNTUmd2UuY2hhckNvZGVBdChYKzMqWWUpKTtmb3IoaWUud3JpdGVfc2hp''@;'; put 'put ''ZnQoMSwwKSxpZS53cml0ZV9zaGlmdCgyLDY1NTM1KSxpZS53cml0ZV9zaGlmdCgyLDU3MDA1KSxYPTA7WDw2OysrWClpZS53cml0ZV9zaGlmdCg0LDApfXJldHVybiBpZS5zbGljZSgwLGllLmwpfWZ1bmN0aW9uIHQ2KEgpe3JldHVybltILnJlYWRfc2hpZnQoMSksSC5yZWFkX3NoaWZ0KDEp''@;'; put 'put ''LEgucmVhZF9zaGlmdCgxKSxILnJlYWRfc2hpZnQoMSldfWZ1bmN0aW9uIFI4KEgsaWUpe3ZhciBYPXQ2KEgpO3JldHVybiBYWzNdPTAsWH1mdW5jdGlvbiBBYyhIKXtyZXR1cm57cjpILnJlYWRfc2hpZnQoMiksYzpILnJlYWRfc2hpZnQoMiksaXhmZTpILnJlYWRfc2hpZnQoMil9fWZ1bmN0''@;'; put 'put ''aW9uIEdmKEgsaWUsWCx3ZSl7cmV0dXJuIHdlfHwod2U9UmkoNikpLHdlLndyaXRlX3NoaWZ0KDIsSCksd2Uud3JpdGVfc2hpZnQoMixpZSksd2Uud3JpdGVfc2hpZnQoMixYfHwwKSx3ZX1mdW5jdGlvbiB2OShILGllLFgpe3ZhciB3ZT1YLmJpZmY+OD80OjI7cmV0dXJuW0gucmVhZF9zaGlm''@;'; put 'put ''dCh3ZSksSC5yZWFkX3NoaWZ0KHdlLCJpIiksSC5yZWFkX3NoaWZ0KHdlLCJpIildfWZ1bmN0aW9uIHRtKEgpe3JldHVybltILnJlYWRfc2hpZnQoMiksV2coSCldfWZ1bmN0aW9uIG42KEgpe3ZhciBpZT1ILnJlYWRfc2hpZnQoMiksWD1ILnJlYWRfc2hpZnQoMik7cmV0dXJue3M6e2M6SC5y''@;'; put 'put ''ZWFkX3NoaWZ0KDIpLHI6aWV9LGU6e2M6SC5yZWFkX3NoaWZ0KDIpLHI6WH19fWZ1bmN0aW9uIEp1KEgsaWUpe3JldHVybiBpZXx8KGllPVJpKDgpKSxpZS53cml0ZV9zaGlmdCgyLEgucy5yKSxpZS53cml0ZV9zaGlmdCgyLEguZS5yKSxpZS53cml0ZV9zaGlmdCgyLEgucy5jKSxpZS53cml0''@;'; put 'put ''ZV9zaGlmdCgyLEguZS5jKSxpZX1mdW5jdGlvbiBUNChIKXt2YXIgaWU9SC5yZWFkX3NoaWZ0KDIpLFg9SC5yZWFkX3NoaWZ0KDIpO3JldHVybntzOntjOkgucmVhZF9zaGlmdCgxKSxyOmllfSxlOntjOkgucmVhZF9zaGlmdCgxKSxyOlh9fX12YXIgdWI9VDQ7ZnVuY3Rpb24gQTkoSCl7SC5s''@;'; put 'put ''Kz00O3ZhciBpZT1ILnJlYWRfc2hpZnQoMiksWD1ILnJlYWRfc2hpZnQoMiksd2U9SC5yZWFkX3NoaWZ0KDIpO3JldHVybiBILmwrPTEyLFtYLGllLHdlXX1mdW5jdGlvbiBmbChIKXtILmwrPTIsSC5sKz1ILnJlYWRfc2hpZnQoMil9dmFyIG5tPXswOmZsLDQ6ZmwsNTpmbCw2OmZsLDc6ZnVu''@;'; put 'put ''Y3Rpb24gVk0oSCl7cmV0dXJuIEgubCs9NCxILmNmPUgucmVhZF9zaGlmdCgyKSx7fX0sODpmbCw5OmZsLDEwOmZsLDExOmZsLDEyOmZsLDEzOmZ1bmN0aW9uIEk0KEgpe3ZhciBpZT17fTtyZXR1cm4gSC5sKz00LEgubCs9MTYsaWUuZlNoYXJlZE5vdGU9SC5yZWFkX3NoaWZ0KDIpLEgubCs9''@;'; put 'put ''NCxpZX0sMTQ6ZmwsMTU6ZmwsMTY6ZmwsMTc6ZmwsMTg6ZmwsMTk6ZmwsMjA6ZmwsMjE6QTl9O2Z1bmN0aW9uIER1KEgsaWUpe3ZhciBYPXtCSUZGVmVyOjAsZHQ6MH07c3dpdGNoKFguQklGRlZlcj1ILnJlYWRfc2hpZnQoMiksKGllLT0yKT49MiYmKFguZHQ9SC5yZWFkX3NoaWZ0KDIpLEgu''@;'; put 'put ''bC09MiksWC5CSUZGVmVyKXtjYXNlIDE1MzY6Y2FzZSAxMjgwOmNhc2UgMTAyNDpjYXNlIDc2ODpjYXNlIDUxMjpjYXNlIDI6Y2FzZSA3OmJyZWFrO2RlZmF1bHQ6aWYoaWU+Nil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgQklGRiBWZXIgIitYLkJJRkZWZXIpfXJldHVybiBILnJlYWRf''@;'; put 'put ''c2hpZnQoaWUpLFh9ZnVuY3Rpb24gZzMoSCxpZSxYKXt2YXIgd2U9MTUzNix4ZT0xNjtzd2l0Y2goWC5ib29rVHlwZSl7Y2FzZSJiaWZmOCI6Y2FzZSJ4bGEiOmJyZWFrO2Nhc2UiYmlmZjUiOndlPTEyODAseGU9ODticmVhaztjYXNlImJpZmY0Ijp3ZT00LHhlPTY7YnJlYWs7Y2FzZSJiaWZm''@;'; put 'put ''MyI6d2U9Myx4ZT02O2JyZWFrO2Nhc2UiYmlmZjIiOndlPTIseGU9NDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgQklGRiB2ZXJzaW9uIil9dmFyIEZlPVJpKHhlKTtyZXR1cm4gRmUud3JpdGVfc2hpZnQoMix3ZSksRmUud3JpdGVfc2hpZnQoMixpZSkseGU+''@;'; put 'put ''NCYmRmUud3JpdGVfc2hpZnQoMiwyOTI4MikseGU+NiYmRmUud3JpdGVfc2hpZnQoMiwxOTk3KSx4ZT44JiYoRmUud3JpdGVfc2hpZnQoMiw0OTE2MSksRmUud3JpdGVfc2hpZnQoMiwxKSxGZS53cml0ZV9zaGlmdCgyLDE3OTgpLEZlLndyaXRlX3NoaWZ0KDIsMCkpLEZlfWZ1bmN0aW9uIFdm''@;'; put 'put ''KEgsaWUpe3ZhciBYPSFpZXx8aWUuYmlmZj49OD8yOjEsd2U9UmkoOCtYKkgubmFtZS5sZW5ndGgpO3dlLndyaXRlX3NoaWZ0KDQsSC5wb3MpLHdlLndyaXRlX3NoaWZ0KDEsSC5oc3x8MCksd2Uud3JpdGVfc2hpZnQoMSxILmR0KSx3ZS53cml0ZV9zaGlmdCgxLEgubmFtZS5sZW5ndGgpLGll''@;'; put 'put ''LmJpZmY+PTgmJndlLndyaXRlX3NoaWZ0KDEsMSksd2Uud3JpdGVfc2hpZnQoWCpILm5hbWUubGVuZ3RoLEgubmFtZSxpZS5iaWZmPDg/InNiY3MiOiJ1dGYxNmxlIik7dmFyIHhlPXdlLnNsaWNlKDAsd2UubCk7cmV0dXJuIHhlLmw9d2UubCx4ZX1mdW5jdGlvbiBZaShIKXtyZXR1cm4gSC5y''@;'; put 'put ''ZWFkX3NoaWZ0KDQpLHdoKEgpfWZ1bmN0aW9uIHphKEgpe3JldHVybiBILnJlYWRfc2hpZnQoNCksdTkoSCl9ZnVuY3Rpb24gS3UoSCxpZSxYKXtyZXR1cm4gSC5yZWFkX3NoaWZ0KDQpLHpCKEgsMCxYKX1mdW5jdGlvbiBXYyhILGllLFgpe3ZhciB3ZT0wO1gmJjI9PVguYmlmZnx8KHdlPUgu''@;'; put 'put ''cmVhZF9zaGlmdCgyKSk7dmFyIHhlPUgucmVhZF9zaGlmdCgyKTtyZXR1cm4gWCYmMj09WC5iaWZmJiYod2U9MS0oeGU+PjE1KSx4ZSY9MzI3NjcpLFt7VW5zeW5jZWQ6MSZ3ZSxEeVplcm86KDImd2UpPj4xLEV4QXNjOig0JndlKT4+MixFeERzYzooOCZ3ZSk+PjN9LHhlXX1mdW5jdGlvbiBo''@;'; put 'put ''YihILGllLFgsd2Upe3ZhciB4ZT1YJiY1PT1YLmJpZmY7d2V8fCh3ZT1SaSh4ZT8zK2llLmxlbmd0aDo1KzIqaWUubGVuZ3RoKSksd2Uud3JpdGVfc2hpZnQoMixIKSx3ZS53cml0ZV9zaGlmdCh4ZT8xOjIsaWUubGVuZ3RoKSx4ZXx8d2Uud3JpdGVfc2hpZnQoMSwxKSx3ZS53cml0ZV9zaGlm''@;'; put 'put ''dCgoeGU/MToyKSppZS5sZW5ndGgsaWUseGU/InNiY3MiOiJ1dGYxNmxlIik7dmFyIEZlPXdlLmxlbmd0aD53ZS5sP3dlLnNsaWNlKDAsd2UubCk6d2U7cmV0dXJuIG51bGw9PUZlLmwmJihGZS5sPUZlLmxlbmd0aCksRmV9dmFyIFljPWRmO2Z1bmN0aW9uIGltKEgsaWUsWCl7dmFyIHdlPUgu''@;'; put 'put ''bCtpZSx4ZT04IT1YLmJpZmYmJlguYmlmZj8yOjQsRmU9SC5yZWFkX3NoaWZ0KHhlKSxaZT1ILnJlYWRfc2hpZnQoeGUpLGplPUgucmVhZF9zaGlmdCgyKSxZZT1ILnJlYWRfc2hpZnQoMik7cmV0dXJuIEgubD13ZSx7czp7cjpGZSxjOmplfSxlOntyOlplLGM6WWV9fX1mdW5jdGlvbiBTaChI''@;'; put 'put ''LGllLFgsd2Upe3ZhciBGZT0hWHx8IVguYmlmZnx8OD09WC5iaWZmO3dlfHwod2U9UmkoWCYmNT09WC5iaWZmPzE2OjIwKSksd2Uud3JpdGVfc2hpZnQoMixGZSYmWC5jZWxsU3R5bGVzJiZILmZvbnRJZCYmKEguZm9udElkPDQ/SC5mb250SWQ6SC5mb250SWQrMSl8fDApO3ZhciBaZT0xO0gu''@;'; put 'put ''cHJvdGVjdGlvbiYmKEgucHJvdGVjdGlvbi5lZGl0YWJsZSYmKFplJj0tMiksSC5wcm90ZWN0aW9uLmhpZGRlbiYmKFplfD0yKSksSC5zdHlsZT8od2Uud3JpdGVfc2hpZnQoMixILm51bUZtdElkfHwwKSx3ZS53cml0ZV9zaGlmdCgyLDY1NTI0fFplKSk6KHdlLndyaXRlX3NoaWZ0KDIsSC5u''@;'; put 'put ''dW1GbXRJZHx8MCksd2Uud3JpdGVfc2hpZnQoMixpZTw8NHxaZSkpO3ZhciBqZT1ILmFsaWdubWVudHx8e307aWYoRmUpe3ZhciBZZT0wLE10PTA7UDkuaW5kZXhPZihqZS5ob3Jpem9udGFsKT4tMSYmKFllfD1QOS5pbmRleE9mKGplLmhvcml6b250YWwpKSxqZS53cmFwVGV4dCYmKFllfD04''@;'; put 'put ''KSx5bS5pbmRleE9mKGplLnZlcnRpY2FsKT4tMT9ZZXw9eW0uaW5kZXhPZihqZS52ZXJ0aWNhbCk8PDQ6bnVsbD09amUudmVydGljYWwmJihZZXw9MzIpLHdlLndyaXRlX3NoaWZ0KDEsWWUpLHdlLndyaXRlX3NoaWZ0KDEsMCksamUuc2hyaW5rVG9GaXQmJihNdHw9MTYpLHdlLndyaXRlX3No''@;'; put 'put ''aWZ0KDIsTXQpO3ZhciB4dD1udWxsO251bGwhPUguYm9yZGVySWQmJih4dD1YLkJvcmRlcnMmJlguQm9yZGVyc1tILmJvcmRlcklkfHwwXXx8e30pO3ZhciBSdD0wLFV0PTAsbm49MDt4dCYmKG51bGwhPXh0LmxlZnQmJnh0LmxlZnQuc3R5bGUmJihSdHw9KG5uPVQzLmluZGV4T2YoeHQubGVm''@;'; put 'put ''dC5zdHlsZSkpPi0xP25uOjApLG51bGwhPXh0LnJpZ2h0JiZ4dC5yaWdodC5zdHlsZSYmKFJ0fD0oKG5uPVQzLmluZGV4T2YoeHQucmlnaHQuc3R5bGUpKT4tMT9ubjowKTw8NCksbnVsbCE9eHQudG9wJiZ4dC50b3Auc3R5bGUmJihVdHw9KG5uPVQzLmluZGV4T2YoeHQudG9wLnN0eWxlKSk+''@;'; put 'put ''LTE/bm46MCksbnVsbCE9eHQuYm90dG9tJiZ4dC5ib3R0b20uc3R5bGUmJihVdHw9KChubj1UMy5pbmRleE9mKHh0LmJvdHRvbS5zdHlsZSkpPi0xP25uOjApPDw0KSksd2Uud3JpdGVfc2hpZnQoMSxSdCksd2Uud3JpdGVfc2hpZnQoMSxVdCksd2Uud3JpdGVfc2hpZnQoMiwwKSx3ZS53cml0''@;'; put 'put ''ZV9zaGlmdCgyLDApLHdlLndyaXRlX3NoaWZ0KDEsMCk7dmFyIENuPTAsRHQ9WC5GaWxscyYmWC5GaWxsc1tILmZpbGxJZHx8MF18fHt9OyhEdC5mZ0NvbG9yfHxEdC5iZ0NvbG9yKSYmKENufD00KSx3ZS53cml0ZV9zaGlmdCgxLENuKTt2YXIgenQ9MDt6dHw9UmIoRHQuZmdDb2xvciw2NSks''@;'; put 'put ''enR8PVJiKER0LmJnQ29sb3IsNjUpPDw3LHdlLndyaXRlX3NoaWZ0KDIsenQpfWVsc2Ugd2Uud3JpdGVfc2hpZnQoNCwwKSx3ZS53cml0ZV9zaGlmdCg0LDApLHdlLndyaXRlX3NoaWZ0KDIsMCk7cmV0dXJuIHdlfWZ1bmN0aW9uIGFtKEgsaWUsWCl7dmFyIHdlPUFjKEgpOygyPT1YLmJpZmZ8''@;'; put 'put ''fDk9PWllKSYmKytILmw7dmFyIHhlPWZ1bmN0aW9uIHNzKEgpe3ZhciBpZT1ILnJlYWRfc2hpZnQoMSk7cmV0dXJuIDE9PT1ILnJlYWRfc2hpZnQoMSk/aWU6MT09PWllfShIKTtyZXR1cm4gd2UudmFsPXhlLHdlLnQ9ITA9PT14ZXx8ITE9PT14ZT8iYiI6ImUiLHdlfXZhciBEND1mdW5jdGlv''@;'; put 'put ''biBiZChILGllLFgpe3JldHVybiAwPT09aWU/IiI6ZGYoSCwwLFgpfTtmdW5jdGlvbiBHTShILGllLFgpe3ZhciB4ZSx3ZT1ILnJlYWRfc2hpZnQoMiksRmU9e2ZCdWlsdEluOjEmd2UsZldhbnRBZHZpc2U6d2U+Pj4xJjEsZldhbnRQaWN0OndlPj4+MiYxLGZPbGU6d2U+Pj4zJjEsZk9sZUxp''@;'; put 'put ''bms6d2U+Pj40JjEsY2Y6d2U+Pj41JjEwMjMsZkljb246d2U+Pj4xNSYxfTtyZXR1cm4gMTQ4NDk9PT1YLnNiY2NoJiYoeGU9ZnVuY3Rpb24gQjgoSCxpZSxYKXtILmwrPTQ7dmFyIHdlPUgubCsoaWUtPTQpLHhlPXpjKEgsMCxYKSxGZT1ILnJlYWRfc2hpZnQoMik7aWYoRmUhPT0od2UtPUgu''@;'; put 'put ''bCkpdGhyb3cgbmV3IEVycm9yKCJNYWxmb3JtZWQgQWRkaW5VZGY6IHBhZGRpbmcgPSAiK3dlKyIgIT0gIitGZSk7cmV0dXJuIEgubCs9RmUseGV9KEgsaWUtMixYKSksRmUuYm9keT14ZXx8SC5yZWFkX3NoaWZ0KGllLTIpLCJzdHJpbmciPT10eXBlb2YgeGUmJihGZS5OYW1lPXhlKSxGZX12''@;'; put 'put ''YXIgV009WyJfeGxubS5Db25zb2xpZGF0ZV9BcmVhIiwiX3hsbm0uQXV0b19PcGVuIiwiX3hsbm0uQXV0b19DbG9zZSIsIl94bG5tLkV4dHJhY3QiLCJfeGxubS5EYXRhYmFzZSIsIl94bG5tLkNyaXRlcmlhIiwiX3hsbm0uUHJpbnRfQXJlYSIsIl94bG5tLlByaW50X1RpdGxlcyIsIl94bG5t''@;'; put 'put ''LlJlY29yZGVyIiwiX3hsbm0uRGF0YV9Gb3JtIiwiX3hsbm0uQXV0b19BY3RpdmF0ZSIsIl94bG5tLkF1dG9fRGVhY3RpdmF0ZSIsIl94bG5tLlNoZWV0X1RpdGxlIiwiX3hsbm0uX0ZpbHRlckRhdGFiYXNlIl07ZnVuY3Rpb24gcGIoSCxpZSxYKXt2YXIgd2U9SC5sK2llLHhlPUgucmVhZF9z''@;'; put 'put ''aGlmdCgyKSxGZT1ILnJlYWRfc2hpZnQoMSksWmU9SC5yZWFkX3NoaWZ0KDEpLGplPUgucmVhZF9zaGlmdChYJiYyPT1YLmJpZmY/MToyKSxZZT0wOyghWHx8WC5iaWZmPj01KSYmKDUhPVguYmlmZiYmKEgubCs9MiksWWU9SC5yZWFkX3NoaWZ0KDIpLDU9PVguYmlmZiYmKEgubCs9MiksSC5s''@;'; put 'put ''Kz00KTt2YXIgTXQ9Y3UoSCxaZSxYKTszMiZ4ZSYmKE10PVdNW010LmNoYXJDb2RlQXQoMCldKTt2YXIgeHQ9d2UtSC5sO1gmJjI9PVguYmlmZiYmLS14dDt2YXIgUnQ9d2UhPUgubCYmMCE9PWplJiZ4dD4wP2Z1bmN0aW9uIG5BKEgsaWUsWCx3ZSl7dmFyIFplLHhlPUgubCtpZSxGZT1qNChI''@;'; put 'put ''LHdlLFgpO3JldHVybiB4ZSE9PUgubCYmKFplPUxkKEgseGUtSC5sLEZlLFgpKSxbRmUsWmVdfShILHh0LFgsamUpOltdO3JldHVybntjaEtleTpGZSxOYW1lOk10LGl0YWI6WWUscmdjZTpSdH19ZnVuY3Rpb24gVjgoSCxpZSxYKXtpZihYLmJpZmY8OClyZXR1cm4gZnVuY3Rpb24gajgoSCxp''@;'; put 'put ''ZSxYKXszPT1IW0gubCsxXSYmSFtILmxdKys7dmFyIHdlPXpjKEgsMCxYKTtyZXR1cm4gMz09d2UuY2hhckNvZGVBdCgwKT93ZS5zbGljZSgxKTp3ZX0oSCwwLFgpO2Zvcih2YXIgd2U9W10seGU9SC5sK2llLEZlPUgucmVhZF9zaGlmdChYLmJpZmY+OD80OjIpOzAhPUZlLS07KXdlLnB1c2go''@;'; put 'put ''djkoSCwwLFgpKTtpZihILmwhPXhlKXRocm93IG5ldyBFcnJvcigiQmFkIEV4dGVyblNoZWV0OiAiK0gubCsiICE9ICIreGUpO3JldHVybiB3ZX1mdW5jdGlvbiBnYihILGllLFgpe3ZhciB3ZT11YihILDYpO3N3aXRjaChYLmJpZmYpe2Nhc2UgMjpILmwrKyxpZS09NzticmVhaztjYXNlIDM6''@;'; put 'put ''Y2FzZSA0OkgubCs9MixpZS09ODticmVhaztkZWZhdWx0OkgubCs9NixpZS09MTJ9cmV0dXJuW3dlLGhHKEgsaWUsWCldfXZhciBfOT1bXTtmdW5jdGlvbiBVTShIKXt2YXIgaWU9UmkoMjQpLFg9dWwoSFswXSk7aWUud3JpdGVfc2hpZnQoMixYLnIpLGllLndyaXRlX3NoaWZ0KDIsWC5yKSxp''@;'; put 'put ''ZS53cml0ZV9zaGlmdCgyLFguYyksaWUud3JpdGVfc2hpZnQoMixYLmMpO2Zvcih2YXIgd2U9ImQwIGM5IGVhIDc5IGY5IGJhIGNlIDExIDhjIDgyIDAwIGFhIDAwIDRiIGE5IDBiIi5zcGxpdCgiICIpLHhlPTA7eGU8MTY7Kyt4ZSlpZS53cml0ZV9zaGlmdCgxLHBhcnNlSW50KHdlW3hlXSwx''@;'; put 'put ''NikpO3JldHVybiBWKFtpZSxlNihIWzFdKV0pfWZ1bmN0aW9uIHNtKEgpe3ZhciBpZT1IWzFdLlRvb2x0aXAsWD1SaSgxMCsyKihpZS5sZW5ndGgrMSkpO1gud3JpdGVfc2hpZnQoMiwyMDQ4KTt2YXIgd2U9dWwoSFswXSk7WC53cml0ZV9zaGlmdCgyLHdlLnIpLFgud3JpdGVfc2hpZnQoMix3''@;'; put 'put ''ZS5yKSxYLndyaXRlX3NoaWZ0KDIsd2UuYyksWC53cml0ZV9zaGlmdCgyLHdlLmMpO2Zvcih2YXIgeGU9MDt4ZTxpZS5sZW5ndGg7Kyt4ZSlYLndyaXRlX3NoaWZ0KDIsaWUuY2hhckNvZGVBdCh4ZSkpO3JldHVybiBYLndyaXRlX3NoaWZ0KDIsMCksWH1mdW5jdGlvbiB2MyhILGllLFgpe2lm''@;'; put 'put ''KCFYLmNlbGxTdHlsZXMpcmV0dXJuIENzKEgsaWUpO3ZhciB3ZT1YJiZYLmJpZmY+PTEyPzQ6Mix4ZT1ILnJlYWRfc2hpZnQod2UpLEZlPUgucmVhZF9zaGlmdCh3ZSksWmU9SC5yZWFkX3NoaWZ0KHdlKSxqZT1ILnJlYWRfc2hpZnQod2UpLFllPUgucmVhZF9zaGlmdCgyKTsyPT13ZSYmKEgu''@;'; put 'put ''bCs9Mik7dmFyIE10PXtzOnhlLGU6RmUsdzpaZSxpeGZlOmplLGZsYWdzOlllfTtyZXR1cm4oWC5iaWZmPj01fHwhWC5iaWZmKSYmKE10LmxldmVsPVllPj44JjcpLE10fV85WzhdPWZ1bmN0aW9uKEgsaWUpe3ZhciBYPUgubCtpZTtILmwrPTEwO3ZhciB3ZT1ILnJlYWRfc2hpZnQoMik7SC5s''@;'; put 'put ''Kz00LEgubCs9MixILmwrPTIsSC5sKz0yLEgubCs9NDt2YXIgeGU9SC5yZWFkX3NoaWZ0KDEpO3JldHVybiBILmwrPXhlLEgubD1YLHtmbXQ6d2V9fTt2YXIgVFI9QWMsUzk9WmMsejg9eDQ7dmFyIFlmPWZ1bmN0aW9uKCl7dmFyIEg9ezE6NDM3LDI6ODUwLDM6MTI1Miw0OjFlNCwxMDA6ODUy''@;'; put 'put ''LDEwMTo4NjYsMTAyOjg2NSwxMDM6ODYxLDEwNDo4OTUsMTA1OjYyMCwxMDY6NzM3LDEwNzo4NTcsMTIwOjk1MCwxMjE6OTQ5LDEyMjo5MzYsMTIzOjkzMiwxMjQ6ODc0LDEyNToxMjU1LDEyNjoxMjU2LDE1MDoxMDAwNywxNTE6MTAwMjksMTUyOjEwMDA2LDIwMDoxMjUwLDIwMToxMjUxLDIw''@;'; put 'put ''MjoxMjU0LDIwMzoxMjUzLDA6MjAxMjcsODo4NjUsOTo0MzcsMTA6ODUwLDExOjQzNywxMzo0MzcsMTQ6ODUwLDE1OjQzNywxNjo4NTAsMTc6NDM3LDE4Ojg1MCwxOTo5MzIsMjA6ODUwLDIxOjQzNywyMjo4NTAsMjM6ODY1LDI0OjQzNywyNTo0MzcsMjY6ODUwLDI3OjQzNywyODo4NjMsMjk6''@;'; put 'put ''ODUwLDMxOjg1MiwzNDo4NTIsMzU6ODUyLDM2Ojg2MCwzNzo4NTAsMzg6ODY2LDU1Ojg1MCw2NDo4NTIsNzc6OTM2LDc4Ojk0OSw3OTo5NTAsODA6ODc0LDg3OjEyNTIsODg6MTI1Miw4OToxMjUyLDEwODo4NjMsMTM0OjczNywxMzU6ODUyLDEzNjo4NTcsMjA0OjEyNTcsMjU1OjE2OTY5fSxp''@;'; put 'put ''ZT10dCh7MTo0MzcsMjo4NTAsMzoxMjUyLDQ6MWU0LDEwMDo4NTIsMTAxOjg2NiwxMDI6ODY1LDEwMzo4NjEsMTA0Ojg5NSwxMDU6NjIwLDEwNjo3MzcsMTA3Ojg1NywxMjA6OTUwLDEyMTo5NDksMTIyOjkzNiwxMjM6OTMyLDEyNDo4NzQsMTI1OjEyNTUsMTI2OjEyNTYsMTUwOjEwMDA3LDE1''@;'; put 'put ''MToxMDAyOSwxNTI6MTAwMDYsMjAwOjEyNTAsMjAxOjEyNTEsMjAyOjEyNTQsMjAzOjEyNTMsMDoyMDEyN30pO2Z1bmN0aW9uIHhlKFllLE10KXt2YXIgeHQ9TXR8fHt9O3JldHVybiB4dC5kYXRlTkZ8fCh4dC5kYXRlTkY9Inl5eXltbWRkIiksbWQoZnVuY3Rpb24gd2UoWWUsTXQpe3ZhciB4''@;'; put 'put ''dD1bXSxSdD1oZSgxKTtzd2l0Y2goTXQudHlwZSl7Y2FzZSJiYXNlNjQiOlJ0PXooU2UuZGVjb2RlKFllKSk7YnJlYWs7Y2FzZSJiaW5hcnkiOlJ0PXooWWUpO2JyZWFrO2Nhc2UiYnVmZmVyIjpjYXNlImFycmF5IjpSdD1ZZX1LbChSdCwwKTt2YXIgVXQ9UnQucmVhZF9zaGlmdCgxKSxubj0h''@;'; put 'put ''ISgxMzYmVXQpLENuPSExLER0PSExO3N3aXRjaChVdCl7Y2FzZSAyOmNhc2UgMzpjYXNlIDEzMTpjYXNlIDEzOTpjYXNlIDI0NTpicmVhaztjYXNlIDQ4OmNhc2UgNDk6Q249ITAsbm49ITA7YnJlYWs7Y2FzZSAxNDA6RHQ9ITA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkRCRiBV''@;'; put 'put ''bnN1cHBvcnRlZCBWZXJzaW9uOiAiK1V0LnRvU3RyaW5nKDE2KSl9dmFyIHp0PTAsUG49NTIxOzI9PVV0JiYoenQ9UnQucmVhZF9zaGlmdCgyKSksUnQubCs9MywyIT1VdCYmKHp0PVJ0LnJlYWRfc2hpZnQoNCkpLHp0PjEwNDg1NzYmJih6dD0xZTYpLDIhPVV0JiYoUG49UnQucmVhZF9zaGlm''@;'; put 'put ''dCgyKSk7dmFyIFRuPVJ0LnJlYWRfc2hpZnQoMiksT249TXQuY29kZXBhZ2V8fDEyNTI7MiE9VXQmJihSdC5sKz0xNixSdC5yZWFkX3NoaWZ0KDEpLDAhPT1SdFtSdC5sXSYmKE9uPUhbUnRbUnQubF1dKSxSdC5sKz0xLFJ0LmwrPTIpLER0JiYoUnQubCs9MzYpO2Zvcih2YXIgWW49W10sTXI9''@;'; put 'put ''e30sYWk9TWF0aC5taW4oUnQubGVuZ3RoLDI9PVV0PzUyMTpQbi0xMC0oQ24/MjY0OjApKSx5cj1EdD8zMjoxMTtSdC5sPGFpJiYxMyE9UnRbUnQubF07KXN3aXRjaChNcj17fSxNci5uYW1lPWNwdGFibGUudXRpbHMuZGVjb2RlKE9uLFJ0LnNsaWNlKFJ0LmwsUnQubCt5cikpLnJlcGxhY2Uo''@;'; put 'put ''L1tcdTAwMDBcclxuXS4qJC9nLCIiKSxSdC5sKz15cixNci50eXBlPVN0cmluZy5mcm9tQ2hhckNvZGUoUnQucmVhZF9zaGlmdCgxKSksMiE9VXQmJiFEdCYmKE1yLm9mZnNldD1SdC5yZWFkX3NoaWZ0KDQpKSxNci5sZW49UnQucmVhZF9zaGlmdCgxKSwyPT1VdCYmKE1yLm9mZnNldD1SdC5y''@;'; put 'put ''ZWFkX3NoaWZ0KDIpKSxNci5kZWM9UnQucmVhZF9zaGlmdCgxKSxNci5uYW1lLmxlbmd0aCYmWW4ucHVzaChNciksMiE9VXQmJihSdC5sKz1EdD8xMzoxNCksTXIudHlwZSl7Y2FzZSJCIjooIUNufHw4IT1Nci5sZW4pJiZNdC5XVEYmJmNvbnNvbGUubG9nKCJTa2lwcGluZyAiK01yLm5hbWUr''@;'; put 'put ''IjoiK01yLnR5cGUpO2JyZWFrO2Nhc2UiRyI6Y2FzZSJQIjpNdC5XVEYmJmNvbnNvbGUubG9nKCJTa2lwcGluZyAiK01yLm5hbWUrIjoiK01yLnR5cGUpO2JyZWFrO2Nhc2UiKyI6Y2FzZSIwIjpjYXNlIkAiOmNhc2UiQyI6Y2FzZSJEIjpjYXNlIkYiOmNhc2UiSSI6Y2FzZSJMIjpjYXNlIk0i''@;'; put 'put ''OmNhc2UiTiI6Y2FzZSJPIjpjYXNlIlQiOmNhc2UiWSI6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gRmllbGQgVHlwZTogIitNci50eXBlKX1pZigxMyE9PVJ0W1J0LmxdJiYoUnQubD1Qbi0xKSwxMyE9PVJ0LnJlYWRfc2hpZnQoMSkpdGhyb3cgbmV3IEVycm9yKCJE''@;'; put 'put ''QkYgVGVybWluYXRvciBub3QgZm91bmQgIitSdC5sKyIgIitSdFtSdC5sXSk7UnQubD1Qbjt2YXIgYXI9MCxHcj0wO2Zvcih4dFswXT1bXSxHcj0wO0dyIT1Zbi5sZW5ndGg7KytHcil4dFswXVtHcl09WW5bR3JdLm5hbWU7Zm9yKDt6dC0tID4wOylpZig0MiE9PVJ0W1J0LmxdKWZvcigrK1J0''@;'; put 'put ''LmwseHRbKythcl09W10sR3I9MCxHcj0wO0dyIT1Zbi5sZW5ndGg7KytHcil7dmFyIHpyPVJ0LnNsaWNlKFJ0LmwsUnQubCtZbltHcl0ubGVuKTtSdC5sKz1ZbltHcl0ubGVuLEtsKHpyLDApO3ZhciBxcj1jcHRhYmxlLnV0aWxzLmRlY29kZShPbix6cik7c3dpdGNoKFluW0dyXS50eXBlKXtj''@;'; put 'put ''YXNlIkMiOnFyLnRyaW0oKS5sZW5ndGgmJih4dFthcl1bR3JdPXFyLnJlcGxhY2UoL1xzKyQvLCIiKSk7YnJlYWs7Y2FzZSJEIjp4dFthcl1bR3JdPTg9PT1xci5sZW5ndGg/bmV3IERhdGUoK3FyLnNsaWNlKDAsNCksK3FyLnNsaWNlKDQsNiktMSwrcXIuc2xpY2UoNiw4KSk6cXI7YnJlYWs7''@;'; put 'put ''Y2FzZSJGIjp4dFthcl1bR3JdPXBhcnNlRmxvYXQocXIudHJpbSgpKTticmVhaztjYXNlIisiOmNhc2UiSSI6eHRbYXJdW0dyXT1EdD8yMTQ3NDgzNjQ4XnpyLnJlYWRfc2hpZnQoLTQsImkiKTp6ci5yZWFkX3NoaWZ0KDQsImkiKTticmVhaztjYXNlIkwiOnN3aXRjaChxci50cmltKCkudG9V''@;'; put 'put ''cHBlckNhc2UoKSl7Y2FzZSJZIjpjYXNlIlQiOnh0W2FyXVtHcl09ITA7YnJlYWs7Y2FzZSJOIjpjYXNlIkYiOnh0W2FyXVtHcl09ITE7YnJlYWs7Y2FzZSIiOmNhc2UiPyI6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkRCRiBVbnJlY29nbml6ZWQgTDp8IitxcisifCIpfWJyZWFr''@;'; put 'put ''O2Nhc2UiTSI6aWYoIW5uKXRocm93IG5ldyBFcnJvcigiREJGIFVuZXhwZWN0ZWQgTUVNTyBmb3IgdHlwZSAiK1V0LnRvU3RyaW5nKDE2KSk7eHRbYXJdW0dyXT0iIyNNRU1PIyMiKyhEdD9wYXJzZUludChxci50cmltKCksMTApOnpyLnJlYWRfc2hpZnQoNCkpO2JyZWFrO2Nhc2UiTiI6KHFy''@;'; put 'put ''PXFyLnJlcGxhY2UoL1x1MDAwMC9nLCIiKS50cmltKCkpJiYiLiIhPXFyJiYoeHRbYXJdW0dyXT0rcXJ8fDApO2JyZWFrO2Nhc2UiQCI6eHRbYXJdW0dyXT1uZXcgRGF0ZSh6ci5yZWFkX3NoaWZ0KC04LCJmIiktNjIxMzU2ODMyZTUpO2JyZWFrO2Nhc2UiVCI6eHRbYXJdW0dyXT1uZXcgRGF0''@;'; put 'put ''ZSg4NjRlNSooenIucmVhZF9zaGlmdCg0KS0yNDQwNTg4KSt6ci5yZWFkX3NoaWZ0KDQpKTticmVhaztjYXNlIlkiOnh0W2FyXVtHcl09enIucmVhZF9zaGlmdCg0LCJpIikvMWU0O2JyZWFrO2Nhc2UiTyI6eHRbYXJdW0dyXT0tenIucmVhZF9zaGlmdCgtOCwiZiIpO2JyZWFrO2Nhc2UiQiI6''@;'; put 'put ''aWYoQ24mJjg9PVluW0dyXS5sZW4pe3h0W2FyXVtHcl09enIucmVhZF9zaGlmdCg4LCJmIik7YnJlYWt9Y2FzZSJHIjpjYXNlIlAiOnpyLmwrPVluW0dyXS5sZW47YnJlYWs7Y2FzZSIwIjppZigiX051bGxGbGFncyI9PT1ZbltHcl0ubmFtZSlicmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJv''@;'; put 'put ''cigiREJGIFVuc3VwcG9ydGVkIGRhdGEgdHlwZSAiK1luW0dyXS50eXBlKX19ZWxzZSBSdC5sKz1UbjtpZigyIT1VdCYmUnQubDxSdC5sZW5ndGgmJjI2IT1SdFtSdC5sKytdKXRocm93IG5ldyBFcnJvcigiREJGIEVPRiBNYXJrZXIgbWlzc2luZyAiKyhSdC5sLTEpKyIgb2YgIitSdC5sZW5n''@;'; put 'put ''dGgrIiAiK1J0W1J0LmwtMV0udG9TdHJpbmcoMTYpKTtyZXR1cm4gTXQmJk10LnNoZWV0Um93cyYmKHh0PXh0LnNsaWNlKDAsTXQuc2hlZXRSb3dzKSkseHR9KFllLHh0KSx4dCl9dmFyIFplPXtCOjgsQzoyNTAsTDoxLEQ6OCwiPyI6MCwiIjowfTtyZXR1cm57dmVyc2lvbnM6WzIsMyw0OCw0''@;'; put 'put ''OSwxMzEsMTM5LDE0MCwyNDVdLHRvX3dvcmtib29rOmZ1bmN0aW9uIEZlKFllLE10KXt0cnl7cmV0dXJuIHcxKHhlKFllLE10KSxNdCl9Y2F0Y2goeHQpe2lmKE10JiZNdC5XVEYpdGhyb3cgeHR9cmV0dXJue1NoZWV0TmFtZXM6W10sU2hlZXRzOnt9fX0sdG9fc2hlZXQ6eGUsZnJvbV9zaGVl''@;'; put 'put ''dDpmdW5jdGlvbiBqZShZZSxNdCl7dmFyIHh0PU10fHx7fTtpZigreHQuY29kZXBhZ2U+PTAmJnRlKCt4dC5jb2RlcGFnZSksInN0cmluZyI9PXh0LnR5cGUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgd3JpdGUgREJGIHRvIEpTIHN0cmluZyIpO3ZhciBSdD1KMigpLFV0PU9BKFllLHtoZWFk''@;'; put 'put ''ZXI6MSxyYXc6ITAsY2VsbERhdGVzOiEwfSksbm49VXRbMF0sQ249VXQuc2xpY2UoMSksRHQ9MCx6dD0wLFBuPTAsVG49MTtmb3IoRHQ9MDtEdDxubi5sZW5ndGg7KytEdClpZihudWxsIT1EdCl7aWYoKytQbiwibnVtYmVyIj09dHlwZW9mIG5uW0R0XSYmKG5uW0R0XT1ubltEdF0udG9TdHJp''@;'; put 'put ''bmcoMTApKSwic3RyaW5nIiE9dHlwZW9mIG5uW0R0XSl0aHJvdyBuZXcgRXJyb3IoIkRCRiBJbnZhbGlkIGNvbHVtbiBuYW1lICIrbm5bRHRdKyIgfCIrdHlwZW9mIG5uW0R0XSsifCIpO2lmKG5uLmluZGV4T2Yobm5bRHRdKSE9PUR0KWZvcih6dD0wO3p0PDEwMjQ7Kyt6dClpZigtMT09bm4u''@;'; put 'put ''aW5kZXhPZihubltEdF0rIl8iK3p0KSl7bm5bRHRdKz0iXyIrenQ7YnJlYWt9fXZhciBPbj1GbyhZZVsiIXJlZiJdKSxZbj1bXTtmb3IoRHQ9MDtEdDw9T24uZS5jLU9uLnMuYzsrK0R0KXt2YXIgTXI9W107Zm9yKHp0PTA7enQ8Q24ubGVuZ3RoOysrenQpbnVsbCE9Q25benRdW0R0XSYmTXIu''@;'; put 'put ''cHVzaChDblt6dF1bRHRdKTtpZigwIT1Nci5sZW5ndGgmJm51bGwhPW5uW0R0XSl7dmFyIGFpPSIiLHlyPSIiO2Zvcih6dD0wO3p0PE1yLmxlbmd0aDsrK3p0KXtzd2l0Y2godHlwZW9mIE1yW3p0XSl7Y2FzZSJudW1iZXIiOnlyPSJCIjticmVhaztjYXNlInN0cmluZyI6ZGVmYXVsdDp5cj0i''@;'; put 'put ''QyI7YnJlYWs7Y2FzZSJib29sZWFuIjp5cj0iTCI7YnJlYWs7Y2FzZSJvYmplY3QiOnlyPU1yW3p0XWluc3RhbmNlb2YgRGF0ZT8iRCI6IkMifWlmKCJDIj09KGFpPWFpJiZhaSE9eXI/IkMiOnlyKSlicmVha31Ubis9WmVbYWldfHwwLFluW0R0XT1haX1lbHNlIFluW0R0XT0iPyJ9dmFyIGFy''@;'; put 'put ''PVJ0Lm5leHQoMzIpO2Zvcihhci53cml0ZV9zaGlmdCg0LDMxODkwMjU3NiksYXIud3JpdGVfc2hpZnQoNCxDbi5sZW5ndGgpLGFyLndyaXRlX3NoaWZ0KDIsMjk2KzMyKlBuKSxhci53cml0ZV9zaGlmdCgyLFRuKSxEdD0wO0R0PDQ7KytEdClhci53cml0ZV9zaGlmdCg0LDApO2Zvcihhci53''@;'; put 'put ''cml0ZV9zaGlmdCg0LDB8KCtpZVtqXXx8Myk8PDgpLER0PTAsenQ9MDtEdDxubi5sZW5ndGg7KytEdClpZihudWxsIT1ubltEdF0pe3ZhciBHcj1SdC5uZXh0KDMyKSx6cj0obm5bRHRdLnNsaWNlKC0xMCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiKS5zbGljZSgwLDExKTtHci53cml0ZV9z''@;'; put 'put ''aGlmdCgxLHpyLCJzYmNzIiksR3Iud3JpdGVfc2hpZnQoMSwiPyI9PVluW0R0XT8iQyI6WW5bRHRdLCJzYmNzIiksR3Iud3JpdGVfc2hpZnQoNCx6dCksR3Iud3JpdGVfc2hpZnQoMSxaZVtZbltEdF1dfHwwKSxHci53cml0ZV9zaGlmdCgxLDApLEdyLndyaXRlX3NoaWZ0KDEsMiksR3Iud3Jp''@;'; put 'put ''dGVfc2hpZnQoNCwwKSxHci53cml0ZV9zaGlmdCgxLDApLEdyLndyaXRlX3NoaWZ0KDQsMCksR3Iud3JpdGVfc2hpZnQoNCwwKSx6dCs9WmVbWW5bRHRdXXx8MH12YXIgcXI9UnQubmV4dCgyNjQpO2Zvcihxci53cml0ZV9zaGlmdCg0LDEzKSxEdD0wO0R0PDY1OysrRHQpcXIud3JpdGVfc2hp''@;'; put 'put ''ZnQoNCwwKTtmb3IoRHQ9MDtEdDxDbi5sZW5ndGg7KytEdCl7dmFyIG9pPVJ0Lm5leHQoVG4pO2ZvcihvaS53cml0ZV9zaGlmdCgxLDApLHp0PTA7enQ8bm4ubGVuZ3RoOysrenQpaWYobnVsbCE9bm5benRdKXN3aXRjaChZblt6dF0pe2Nhc2UiTCI6b2kud3JpdGVfc2hpZnQoMSxudWxsPT1D''@;'; put 'put ''bltEdF1benRdPzYzOkNuW0R0XVt6dF0/ODQ6NzApO2JyZWFrO2Nhc2UiQiI6b2kud3JpdGVfc2hpZnQoOCxDbltEdF1benRdfHwwLCJmIik7YnJlYWs7Y2FzZSJEIjpDbltEdF1benRdPyhvaS53cml0ZV9zaGlmdCg0LCgiMDAwMCIrQ25bRHRdW3p0XS5nZXRGdWxsWWVhcigpKS5zbGljZSgt''@;'; put 'put ''NCksInNiY3MiKSxvaS53cml0ZV9zaGlmdCgyLCgiMDAiKyhDbltEdF1benRdLmdldE1vbnRoKCkrMSkpLnNsaWNlKC0yKSwic2JjcyIpLG9pLndyaXRlX3NoaWZ0KDIsKCIwMCIrQ25bRHRdW3p0XS5nZXREYXRlKCkpLnNsaWNlKC0yKSwic2JjcyIpKTpvaS53cml0ZV9zaGlmdCg4LCIwMDAw''@;'; put 'put ''MDAwMCIsInNiY3MiKTticmVhaztjYXNlIkMiOnZhciBjcj1TdHJpbmcoQ25bRHRdW3p0XXx8IiIpO2ZvcihvaS53cml0ZV9zaGlmdCgxLGNyLCJzYmNzIiksUG49MDtQbjwyNTAtY3IubGVuZ3RoOysrUG4pb2kud3JpdGVfc2hpZnQoMSwzMil9fXJldHVybiBSdC5uZXh0KDEpLndyaXRlX3No''@;'; put 'put ''aWZ0KDEsMjYpLFJ0LmVuZCgpfX19KCksZm09ZnVuY3Rpb24oKXt2YXIgSD17QUE6Ilx4YzAiLEJBOiJceGMxIixDQToiXHhjMiIsREE6MTk1LEhBOiJceGM0IixKQToxOTcsQUU6Ilx4YzgiLEJFOiJceGM5IixDRToiXHhjYSIsSEU6Ilx4Y2IiLEFJOiJceGNjIixCSToiXHhjZCIsQ0k6Ilx4''@;'; put 'put ''Y2UiLEhJOiJceGNmIixBTzoiXHhkMiIsQk86Ilx4ZDMiLENPOiJceGQ0IixETzoyMTMsSE86Ilx4ZDYiLEFVOiJceGQ5IixCVToiXHhkYSIsQ1U6Ilx4ZGIiLEhVOiJceGRjIixBYToiXHhlMCIsQmE6Ilx4ZTEiLENhOiJceGUyIixEYToyMjcsSGE6Ilx4ZTQiLEphOjIyOSxBZToiXHhlOCIs''@;'; put 'put ''QmU6Ilx4ZTkiLENlOiJceGVhIixIZToiXHhlYiIsQWk6Ilx4ZWMiLEJpOiJceGVkIixDaToiXHhlZSIsSGk6Ilx4ZWYiLEFvOiJceGYyIixCbzoiXHhmMyIsQ286Ilx4ZjQiLERvOjI0NSxIbzoiXHhmNiIsQXU6Ilx4ZjkiLEJ1OiJceGZhIixDdToiXHhmYiIsSHU6Ilx4ZmMiLEtDOiJceGM3''@;'; put 'put ''IixLYzoiXHhlNyIscToiXHhlNiIsejoiXHUwMTUzIixhOiJceGM2IixqOiJcdTAxNTIiLEROOjIwOSxEbjoyNDEsSHk6MjU1LFM6MTY5LGM6MTcwLFI6MTc0LCJCICI6MTgwLDA6MTc2LDE6MTc3LDI6MTc4LDM6MTc5LDU6MTgxLDY6MTgyLDc6MTgzLFE6MTg1LGs6MTg2LGI6MjA4LGk6MjE2''@;'; put 'put ''LGw6MjIyLHM6MjQwLHk6MjQ4LCIhIjoxNjEsJyInOjE2MiwiIyI6MTYzLCIoIjoxNjQsIiUiOjE2NSwiJyI6MTY3LCJIICI6MTY4LCIrIjoxNzEsIjsiOjE4NywiPCI6MTg4LCI9IjoxODksIj4iOjE5MCwiPyI6MTkxLCJ7IjoyMjN9LGllPW5ldyBSZWdFeHAoIlx4MWJOKCIrb24oSCkuam9p''@;'; put 'put ''bigifCIpLnJlcGxhY2UoL1x8XHxcfC8sInxcXHx8IikucmVwbGFjZSgvKFs/KCkrXSkvZywiXFwkMSIpKyJ8XFx8KSIsImdtIiksWD1mdW5jdGlvbihVdCxubil7dmFyIENuPUhbbm5dO3JldHVybiJudW1iZXIiPT10eXBlb2YgQ24/dmUoQ24pOkNufSx3ZT1mdW5jdGlvbihVdCxubixDbil7''@;'; put 'put ''dmFyIER0PW5uLmNoYXJDb2RlQXQoMCktMzI8PDR8Q24uY2hhckNvZGVBdCgwKS00ODtyZXR1cm4gNTk9PUR0P1V0OnZlKER0KX07ZnVuY3Rpb24gRmUoVXQsbm4pe3ZhciBxcixDbj1VdC5zcGxpdCgvW1xuXHJdKy8pLER0PS0xLHp0PS0xLFBuPTAsVG49MCxPbj1bXSxZbj1bXSxNcj1udWxs''@;'; put 'put ''LGFpPXt9LHlyPVtdLGFyPVtdLEdyPVtdLHpyPTA7Zm9yKCtubi5jb2RlcGFnZT49MCYmdGUoK25uLmNvZGVwYWdlKTtQbiE9PUNuLmxlbmd0aDsrK1BuKXt6cj0wO3ZhciB2MCxvaT1DbltQbl0udHJpbSgpLnJlcGxhY2UoL1x4MUIoW1x4MjAtXHgyRl0pKFtceDMwLVx4M0ZdKS9nLHdlKS5y''@;'; put 'put ''ZXBsYWNlKGllLFgpLGNyPW9pLnJlcGxhY2UoLzs7L2csIlwwIikuc3BsaXQoIjsiKS5tYXAoZnVuY3Rpb24oTjApe3JldHVybiBOMC5yZXBsYWNlKC9cdTAwMDAvZywiOyIpfSk7aWYob2kubGVuZ3RoPjApc3dpdGNoKGNyWzBdKXtjYXNlIklEIjpjYXNlIkUiOmNhc2UiQiI6Y2FzZSJPIjpj''@;'; put 'put ''YXNlIlciOmJyZWFrO2Nhc2UiUCI6IlAiPT1jclsxXS5jaGFyQXQoMCkmJlluLnB1c2gob2kuc2xpY2UoMykucmVwbGFjZSgvOzsvZywiOyIpKTticmVhaztjYXNlIkMiOnZhciBVaT0hMSx0bz0hMSxBMD0hMSxiaT0hMSxZcj0tMSxFaT0tMTtmb3IoVG49MTtUbjxjci5sZW5ndGg7KytUbilz''@;'; put 'put ''d2l0Y2goY3JbVG5dLmNoYXJBdCgwKSl7Y2FzZSJBIjpjYXNlIkciOmJyZWFrO2Nhc2UiWCI6enQ9cGFyc2VJbnQoY3JbVG5dLnNsaWNlKDEpKS0xLHRvPSEwO2JyZWFrO2Nhc2UiWSI6Zm9yKER0PXBhcnNlSW50KGNyW1RuXS5zbGljZSgxKSktMSx0b3x8KHp0PTApLHFyPU9uLmxlbmd0aDtx''@;'; put 'put ''cjw9RHQ7KytxcilPbltxcl09W107YnJlYWs7Y2FzZSJLIjonIic9PT0odjA9Y3JbVG5dLnNsaWNlKDEpKS5jaGFyQXQoMCk/djA9djAuc2xpY2UoMSx2MC5sZW5ndGgtMSk6IlRSVUUiPT09djA/djA9ITA6IkZBTFNFIj09PXYwP3YwPSExOmlzTmFOKHNyKHYwKSk/aXNOYU4oWG4odjApLmdl''@;'; put 'put ''dERhdGUoKSl8fCh2MD1kbih2MCkpOih2MD1zcih2MCksbnVsbCE9PU1yJiZGLmlzX2RhdGUoTXIpJiYodjA9SHQodjApKSksInVuZGVmaW5lZCIhPXR5cGVvZiBjcHRhYmxlJiYic3RyaW5nIj09dHlwZW9mIHYwJiYic3RyaW5nIiE9KG5ufHx7fSkudHlwZSYmKG5ufHx7fSkuY29kZXBhZ2Um''@;'; put 'put ''Jih2MD1jcHRhYmxlLnV0aWxzLmRlY29kZShubi5jb2RlcGFnZSx2MCkpLFVpPSEwO2JyZWFrO2Nhc2UiRSI6Ymk9ITA7dmFyIGhpPUQzKGNyW1RuXS5zbGljZSgxKSx7cjpEdCxjOnp0fSk7T25bRHRdW3p0XT1bT25bRHRdW3p0XSxoaV07YnJlYWs7Y2FzZSJTIjpBMD0hMCxPbltEdF1benRd''@;'; put 'put ''PVtPbltEdF1benRdLCJTNVMiXTticmVhaztjYXNlIlIiOllyPXBhcnNlSW50KGNyW1RuXS5zbGljZSgxKSktMTticmVhaztjYXNlIkMiOkVpPXBhcnNlSW50KGNyW1RuXS5zbGljZSgxKSktMTticmVhaztkZWZhdWx0OmlmKG5uJiZubi5XVEYpdGhyb3cgbmV3IEVycm9yKCJTWUxLIGJhZCBy''@;'; put 'put ''ZWNvcmQgIitvaSl9aWYoVWkmJihPbltEdF1benRdJiYyPT1PbltEdF1benRdLmxlbmd0aD9PbltEdF1benRdWzBdPXYwOk9uW0R0XVt6dF09djAsTXI9bnVsbCksQTApe2lmKGJpKXRocm93IG5ldyBFcnJvcigiU1lMSyBzaGFyZWQgZm9ybXVsYSBjYW5ub3QgaGF2ZSBvd24gZm9ybXVsYSIp''@;'; put 'put ''O3ZhciBOcj1Zcj4tMSYmT25bWXJdW0VpXTtpZighTnJ8fCFOclsxXSl0aHJvdyBuZXcgRXJyb3IoIlNZTEsgc2hhcmVkIGZvcm11bGEgY2Fubm90IGZpbmQgYmFzZSIpO09uW0R0XVt6dF1bMV09UTkoTnJbMV0se3I6RHQtWXIsYzp6dC1FaX0pfWJyZWFrO2Nhc2UiRiI6dmFyIGtpPTA7Zm9y''@;'; put 'put ''KFRuPTE7VG48Y3IubGVuZ3RoOysrVG4pc3dpdGNoKGNyW1RuXS5jaGFyQXQoMCkpe2Nhc2UiWCI6enQ9cGFyc2VJbnQoY3JbVG5dLnNsaWNlKDEpKS0xLCsra2k7YnJlYWs7Y2FzZSJZIjpmb3IoRHQ9cGFyc2VJbnQoY3JbVG5dLnNsaWNlKDEpKS0xLHFyPU9uLmxlbmd0aDtxcjw9RHQ7Kytx''@;'; put 'put ''cilPbltxcl09W107YnJlYWs7Y2FzZSJNIjp6cj1wYXJzZUludChjcltUbl0uc2xpY2UoMSkpLzIwO2JyZWFrO2Nhc2UiRiI6Y2FzZSJHIjpjYXNlIlMiOmNhc2UiRCI6Y2FzZSJOIjpicmVhaztjYXNlIlAiOk1yPVluW3BhcnNlSW50KGNyW1RuXS5zbGljZSgxKSldO2JyZWFrO2Nhc2UiVyI6''@;'; put 'put ''Zm9yKEdyPWNyW1RuXS5zbGljZSgxKS5zcGxpdCgiICIpLHFyPXBhcnNlSW50KEdyWzBdLDEwKTtxcjw9cGFyc2VJbnQoR3JbMV0sMTApOysrcXIpenI9cGFyc2VJbnQoR3JbMl0sMTApLGFyW3FyLTFdPTA9PT16cj97aGlkZGVuOiEwfTp7d2NoOnpyfSx5Yyhhcltxci0xXSk7YnJlYWs7Y2Fz''@;'; put 'put ''ZSJDIjphclt6dD1wYXJzZUludChjcltUbl0uc2xpY2UoMSkpLTFdfHwoYXJbenRdPXt9KTticmVhaztjYXNlIlIiOnlyW0R0PXBhcnNlSW50KGNyW1RuXS5zbGljZSgxKSktMV18fCh5cltEdF09e30pLHpyPjA/KHlyW0R0XS5ocHQ9enIseXJbRHRdLmhweD1BZih6cikpOjA9PT16ciYmKHly''@;'; put 'put ''W0R0XS5oaWRkZW49ITApO2JyZWFrO2RlZmF1bHQ6aWYobm4mJm5uLldURil0aHJvdyBuZXcgRXJyb3IoIlNZTEsgYmFkIHJlY29yZCAiK29pKX1raTwxJiYoTXI9bnVsbCk7YnJlYWs7ZGVmYXVsdDppZihubiYmbm4uV1RGKXRocm93IG5ldyBFcnJvcigiU1lMSyBiYWQgcmVjb3JkICIrb2kp''@;'; put 'put ''fX1yZXR1cm4geXIubGVuZ3RoPjAmJihhaVsiIXJvd3MiXT15ciksYXIubGVuZ3RoPjAmJihhaVsiIWNvbHMiXT1hciksbm4mJm5uLnNoZWV0Um93cyYmKE9uPU9uLnNsaWNlKDAsbm4uc2hlZXRSb3dzKSksW09uLGFpXX1mdW5jdGlvbiBaZShVdCxubil7dmFyIENuPWZ1bmN0aW9uIHhlKFV0''@;'; put 'put ''LG5uKXtzd2l0Y2gobm4udHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiBGZShTZS5kZWNvZGUoVXQpLG5uKTtjYXNlImJpbmFyeSI6cmV0dXJuIEZlKFV0LG5uKTtjYXNlImJ1ZmZlciI6cmV0dXJuIEZlKFV0LnRvU3RyaW5nKCJiaW5hcnkiKSxubik7Y2FzZSJhcnJheSI6cmV0dXJuIEZlKHlu''@;'; put 'put ''KFV0KSxubil9dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK25uLnR5cGUpfShVdCxubiksenQ9Q25bMV0sUG49bWQoQ25bMF0sbm4pO3JldHVybiBvbih6dCkuZm9yRWFjaChmdW5jdGlvbihUbil7UG5bVG5dPXp0W1RuXX0pLFBufWZ1bmN0aW9uIFllKFV0LG5uLENuLER0''@;'; put 'put ''KXt2YXIgenQ9IkM7WSIrKENuKzEpKyI7WCIrKER0KzEpKyI7SyI7c3dpdGNoKFV0LnQpe2Nhc2UibiI6enQrPVV0LnZ8fDAsVXQuZiYmIVV0LkYmJih6dCs9IjtFIitWRShVdC5mLHtyOkNuLGM6RHR9KSk7YnJlYWs7Y2FzZSJiIjp6dCs9VXQudj8iVFJVRSI6IkZBTFNFIjticmVhaztjYXNl''@;'; put 'put ''ImUiOnp0Kz1VdC53fHxVdC52O2JyZWFrO2Nhc2UiZCI6enQrPSciJysoVXQud3x8VXQudikrJyInO2JyZWFrO2Nhc2UicyI6enQrPSciJytVdC52LnJlcGxhY2UoLyIvZywiIikrJyInfXJldHVybiB6dH1yZXR1cm4gSFsifCJdPTI1NCx7dG9fd29ya2Jvb2s6ZnVuY3Rpb24gamUoVXQsbm4p''@;'; put 'put ''e3JldHVybiB3MShaZShVdCxubiksbm4pfSx0b19zaGVldDpaZSxmcm9tX3NoZWV0OmZ1bmN0aW9uIFJ0KFV0LG5uKXt2YXIgUG4sQ249WyJJRDtQU2hlZXRKUztOO0UiXSxEdD1bXSx6dD1GbyhVdFsiIXJlZiJdKSxUbj1BcnJheS5pc0FycmF5KFV0KSxPbj0iXHJcbiI7Q24ucHVzaCgiUDtQ''@;'; put 'put ''R2VuZXJhbCIpLENuLnB1c2goIkY7UDA7REcwRzg7TTI1NSIpLFV0WyIhY29scyJdJiZmdW5jdGlvbiBNdChVdCxubil7bm4uZm9yRWFjaChmdW5jdGlvbihDbixEdCl7dmFyIHp0PSJGO1ciKyhEdCsxKSsiICIrKER0KzEpKyIgIjtDbi5oaWRkZW4/enQrPSIwIjooIm51bWJlciI9PXR5cGVv''@;'; put 'put ''ZiBDbi53aWR0aCYmIUNuLndweCYmKENuLndweD1tbShDbi53aWR0aCkpLCJudW1iZXIiPT10eXBlb2YgQ24ud3B4JiYhQ24ud2NoJiYoQ24ud2NoPUk5KENuLndweCkpLCJudW1iZXIiPT10eXBlb2YgQ24ud2NoJiYoenQrPU1hdGgucm91bmQoQ24ud2NoKSkpLCIgIiE9enQuY2hhckF0KHp0''@;'; put 'put ''Lmxlbmd0aC0xKSYmVXQucHVzaCh6dCl9KX0oQ24sVXRbIiFjb2xzIl0pLFV0WyIhcm93cyJdJiZmdW5jdGlvbiB4dChVdCxubil7bm4uZm9yRWFjaChmdW5jdGlvbihDbixEdCl7dmFyIHp0PSJGOyI7Q24uaGlkZGVuP3p0Kz0iTTA7IjpDbi5ocHQ/enQrPSJNIisyMCpDbi5ocHQrIjsiOkNu''@;'; put 'put ''LmhweCYmKHp0Kz0iTSIrMjAqVGgoQ24uaHB4KSsiOyIpLHp0Lmxlbmd0aD4yJiZVdC5wdXNoKHp0KyJSIisoRHQrMSkpfSl9KENuLFV0WyIhcm93cyJdKSxDbi5wdXNoKCJCO1kiKyh6dC5lLnItenQucy5yKzEpKyI7WCIrKHp0LmUuYy16dC5zLmMrMSkrIjtEIitbenQucy5jLHp0LnMucix6''@;'; put 'put ''dC5lLmMsenQuZS5yXS5qb2luKCIgIikpO2Zvcih2YXIgWW49enQucy5yO1luPD16dC5lLnI7KytZbilmb3IodmFyIE1yPXp0LnMuYztNcjw9enQuZS5jOysrTXIpe3ZhciBhaT1ZMCh7cjpZbixjOk1yfSk7KFBuPVRuPyhVdFtZbl18fFtdKVtNcl06VXRbYWldKSYmKG51bGwhPVBuLnZ8fFBu''@;'; put 'put ''LmYmJiFQbi5GKSYmRHQucHVzaChZZShQbiwwLFluLE1yKSl9cmV0dXJuIENuLmpvaW4oT24pK09uK0R0LmpvaW4oT24pK09uKyJFIitPbn19fSgpLHZiPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaWUoRmUsWmUpe2Zvcih2YXIgamU9RmUuc3BsaXQoIlxuIiksWWU9LTEsTXQ9LTEseHQ9MCxSdD1b''@;'; put 'put ''XTt4dCE9PWplLmxlbmd0aDsrK3h0KWlmKCJCT1QiIT09amVbeHRdLnRyaW0oKSl7aWYoIShZZTwwKSl7Zm9yKHZhciBVdD1qZVt4dF0udHJpbSgpLnNwbGl0KCIsIiksbm49VXRbMF0sQ249VXRbMV0sRHQ9amVbKyt4dF18fCIiOzEmKER0Lm1hdGNoKC9bIl0vZyl8fFtdKS5sZW5ndGgmJnh0''@;'; put 'put ''PGplLmxlbmd0aC0xOylEdCs9IlxuIitqZVsrK3h0XTtzd2l0Y2goRHQ9RHQudHJpbSgpLCtubil7Y2FzZS0xOmlmKCJCT1QiPT09RHQpe1J0WysrWWVdPVtdLE10PTA7Y29udGludWV9aWYoIkVPRCIhPT1EdCl0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBESUYgc3BlY2lhbCBjb21t''@;'; put 'put ''YW5kICIrRHQpO2JyZWFrO2Nhc2UgMDpSdFtZZV1bTXRdPSJUUlVFIj09PUR0fHwiRkFMU0UiIT09RHQmJihpc05hTihzcihDbikpP2lzTmFOKFhuKENuKS5nZXREYXRlKCkpP0NuOmRuKENuKTpzcihDbikpLCsrTXQ7YnJlYWs7Y2FzZSAxOihEdD0oRHQ9RHQuc2xpY2UoMSxEdC5sZW5ndGgt''@;'; put 'put ''MSkpLnJlcGxhY2UoLyIiL2csJyInKSkmJkR0Lm1hdGNoKC9ePSIuKiIkLykmJihEdD1EdC5zbGljZSgyLC0xKSksUnRbWWVdW010KytdPSIiIT09RHQ/RHQ6bnVsbH1pZigiRU9EIj09PUR0KWJyZWFrfX1lbHNlIFJ0WysrWWVdPVtdLE10PTA7cmV0dXJuIFplJiZaZS5zaGVldFJvd3MmJihS''@;'; put 'put ''dD1SdC5zbGljZSgwLFplLnNoZWV0Um93cykpLFJ0fWZ1bmN0aW9uIFgoRmUsWmUpe3JldHVybiBtZChmdW5jdGlvbiBIKEZlLFplKXtzd2l0Y2goWmUudHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiBpZShTZS5kZWNvZGUoRmUpLFplKTtjYXNlImJpbmFyeSI6cmV0dXJuIGllKEZlLFplKTtj''@;'; put 'put ''YXNlImJ1ZmZlciI6cmV0dXJuIGllKEZlLnRvU3RyaW5nKCJiaW5hcnkiKSxaZSk7Y2FzZSJhcnJheSI6cmV0dXJuIGllKHluKEZlKSxaZSl9dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK1plLnR5cGUpfShGZSxaZSksWmUpfXZhciBGZSxaZTtyZXR1cm57dG9fd29ya2Jv''@;'; put 'put ''b2s6ZnVuY3Rpb24gd2UoRmUsWmUpe3JldHVybiB3MShYKEZlLFplKSxaZSl9LHRvX3NoZWV0OlgsZnJvbV9zaGVldDooRmU9ZnVuY3Rpb24oWWUsTXQseHQsUnQsVXQpe1llLnB1c2goTXQpLFllLnB1c2goeHQrIiwiK1J0KSxZZS5wdXNoKCciJytVdC5yZXBsYWNlKC8iL2csJyIiJykrJyIn''@;'; put 'put ''KX0sWmU9ZnVuY3Rpb24oWWUsTXQseHQsUnQpe1llLnB1c2goTXQrIiwiK3h0KSxZZS5wdXNoKDE9PU10PyciJytSdC5yZXBsYWNlKC8iL2csJyIiJykrJyInOlJ0KX0sZnVuY3Rpb24oWWUpe3ZhciBSdCxNdD1bXSx4dD1GbyhZZVsiIXJlZiJdKSxVdD1BcnJheS5pc0FycmF5KFllKTtGZShN''@;'; put 'put ''dCwiVEFCTEUiLDAsMSwic2hlZXRqcyIpLEZlKE10LCJWRUNUT1JTIiwwLHh0LmUuci14dC5zLnIrMSwiIiksRmUoTXQsIlRVUExFUyIsMCx4dC5lLmMteHQucy5jKzEsIiIpLEZlKE10LCJEQVRBIiwwLDAsIiIpO2Zvcih2YXIgbm49eHQucy5yO25uPD14dC5lLnI7Kytubil7WmUoTXQsLTEs''@;'; put 'put ''MCwiQk9UIik7Zm9yKHZhciBDbj14dC5zLmM7Q248PXh0LmUuYzsrK0NuKXt2YXIgRHQ9WTAoe3I6bm4sYzpDbn0pO2lmKFJ0PVV0PyhZZVtubl18fFtdKVtDbl06WWVbRHRdKXN3aXRjaChSdC50KXtjYXNlIm4iOnZhciB6dD1SdC53OyF6dCYmbnVsbCE9UnQudiYmKHp0PVJ0LnYpLG51bGw9''@;'; put 'put ''PXp0P1plKE10LDEsMCxSdC5mJiYhUnQuRj8iPSIrUnQuZjoiIik6WmUoTXQsMCx6dCwiViIpO2JyZWFrO2Nhc2UiYiI6WmUoTXQsMCxSdC52PzE6MCxSdC52PyJUUlVFIjoiRkFMU0UiKTticmVhaztjYXNlInMiOlplKE10LDEsMCxpc05hTihSdC52KT9SdC52Oic9IicrUnQudisnIicpO2Jy''@;'; put 'put ''ZWFrO2Nhc2UiZCI6UnQud3x8KFJ0Lnc9Ri5mb3JtYXQoUnQuenx8Ri5fdGFibGVbMTRdLGZ0KGRuKFJ0LnYpKSkpLFplKE10LDAsUnQudywiViIpO2JyZWFrO2RlZmF1bHQ6WmUoTXQsMSwwLCIiKX1lbHNlIFplKE10LDEsMCwiIil9fXJldHVybiBaZShNdCwtMSwwLCJFT0QiKSxNdC5qb2lu''@;'; put 'put ''KCJcclxuIil9KX19KCksZUU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBIKFJ0KXtyZXR1cm4gUnQucmVwbGFjZSgvXFxiL2csIlxcIikucmVwbGFjZSgvXFxjL2csIjoiKS5yZXBsYWNlKC9cXG4vZywiXG4iKX1mdW5jdGlvbiBpZShSdCl7cmV0dXJuIFJ0LnJlcGxhY2UoL1xcL2csIlxcYiIpLnJl''@;'; put 'put ''cGxhY2UoLzovZywiXFxjIikucmVwbGFjZSgvXG4vZywiXFxuIil9ZnVuY3Rpb24gd2UoUnQsVXQpe3JldHVybiBtZChmdW5jdGlvbiBYKFJ0LFV0KXtmb3IodmFyIG5uPVJ0LnNwbGl0KCJcbiIpLENuPS0xLER0PS0xLHp0PTAsUG49W107enQhPT1ubi5sZW5ndGg7Kyt6dCl7dmFyIFRuPW5u''@;'; put 'put ''W3p0XS50cmltKCkuc3BsaXQoIjoiKTtpZigiY2VsbCI9PT1UblswXSl7dmFyIE9uPXVsKFRuWzFdKTtpZihQbi5sZW5ndGg8PU9uLnIpZm9yKENuPVBuLmxlbmd0aDtDbjw9T24ucjsrK0NuKVBuW0NuXXx8KFBuW0NuXT1bXSk7c3dpdGNoKENuPU9uLnIsRHQ9T24uYyxUblsyXSl7Y2FzZSJ0''@;'; put 'put ''IjpQbltDbl1bRHRdPUgoVG5bM10pO2JyZWFrO2Nhc2UidiI6UG5bQ25dW0R0XT0rVG5bM107YnJlYWs7Y2FzZSJ2dGYiOnZhciBZbj1UbltUbi5sZW5ndGgtMV07Y2FzZSJ2dGMiOlBuW0NuXVtEdF09Im5sIj09PVRuWzNdPyEhK1RuWzRdOitUbls0XSwidnRmIj09VG5bMl0mJihQbltDbl1b''@;'; put 'put ''RHRdPVtQbltDbl1bRHRdLFluXSl9fX1yZXR1cm4gVXQmJlV0LnNoZWV0Um93cyYmKFBuPVBuLnNsaWNlKDAsVXQuc2hlZXRSb3dzKSksUG59KFJ0LFV0KSxVdCl9dmFyIEZlPVsic29jaWFsY2FsYzp2ZXJzaW9uOjEuNSIsIk1JTUUtVmVyc2lvbjogMS4wIiwiQ29udGVudC1UeXBlOiBtdWx0''@;'; put 'put ''aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PVNvY2lhbENhbGNTcHJlYWRzaGVldENvbnRyb2xTYXZlIl0uam9pbigiXG4iKSxaZT1bIi0tU29jaWFsQ2FsY1NwcmVhZHNoZWV0Q29udHJvbFNhdmUiLCJDb250ZW50LXR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgiXS5qb2luKCJcbiIpKyJc''@;'; put 'put ''biIsamU9WyIjIFNvY2lhbENhbGMgU3ByZWFkc2hlZXQgQ29udHJvbCBTYXZlIiwicGFydDpzaGVldCJdLmpvaW4oIlxuIiksWWU9Ii0tU29jaWFsQ2FsY1NwcmVhZHNoZWV0Q29udHJvbFNhdmUtLSI7ZnVuY3Rpb24gTXQoUnQpe2lmKCFSdHx8IVJ0WyIhcmVmIl0pcmV0dXJuIiI7Zm9yKHZh''@;'; put 'put ''ciBDbixVdD1bXSxubj1bXSxEdD0iIix6dD1BcyhSdFsiIXJlZiJdKSxQbj1BcnJheS5pc0FycmF5KFJ0KSxUbj16dC5zLnI7VG48PXp0LmUucjsrK1RuKWZvcih2YXIgT249enQucy5jO09uPD16dC5lLmM7KytPbilpZihEdD1ZMCh7cjpUbixjOk9ufSksKENuPVBuPyhSdFtUbl18fFtdKVtP''@;'; put 'put ''bl06UnRbRHRdKSYmbnVsbCE9Q24udiYmInoiIT09Q24udCl7c3dpdGNoKG5uPVsiY2VsbCIsRHQsInQiXSxDbi50KXtjYXNlInMiOmNhc2Uic3RyIjpubi5wdXNoKGllKENuLnYpKTticmVhaztjYXNlIm4iOkNuLmY/KG5uWzJdPSJ2dGYiLG5uWzNdPSJuIixubls0XT1Dbi52LG5uWzVdPWll''@;'; put 'put ''KENuLmYpKToobm5bMl09InYiLG5uWzNdPUNuLnYpO2JyZWFrO2Nhc2UiYiI6bm5bMl09InZ0IisoQ24uZj8iZiI6ImMiKSxublszXT0ibmwiLG5uWzRdPUNuLnY/IjEiOiIwIixubls1XT1pZShDbi5mfHwoQ24udj8iVFJVRSI6IkZBTFNFIikpO2JyZWFrO2Nhc2UiZCI6dmFyIFluPWZ0KGRu''@;'; put 'put ''KENuLnYpKTtublsyXT0idnRjIixublszXT0ibmQiLG5uWzRdPSIiK1luLG5uWzVdPUNuLnd8fEYuZm9ybWF0KENuLnp8fEYuX3RhYmxlWzE0XSxZbik7YnJlYWs7Y2FzZSJlIjpjb250aW51ZX1VdC5wdXNoKG5uLmpvaW4oIjoiKSl9cmV0dXJuIFV0LnB1c2goInNoZWV0OmM6IisoenQuZS5j''@;'; put 'put ''LXp0LnMuYysxKSsiOnI6IisoenQuZS5yLXp0LnMucisxKSsiOnR2ZjoxIiksVXQucHVzaCgidmFsdWVmb3JtYXQ6MTp0ZXh0LXdpa2kiKSxVdC5qb2luKCJcbiIpfXJldHVybnt0b193b3JrYm9vazpmdW5jdGlvbiB4ZShSdCxVdCl7cmV0dXJuIHcxKHdlKFJ0LFV0KSxVdCl9LHRvX3NoZWV0''@;'; put 'put ''OndlLGZyb21fc2hlZXQ6ZnVuY3Rpb24geHQoUnQpe3JldHVybltGZSxaZSxqZSxaZSxNdChSdCksWWVdLmpvaW4oIlxuIil9fX0oKSxBMz1mdW5jdGlvbigpe2Z1bmN0aW9uIEgoeHQsUnQsVXQsbm4sQ24pe0NuLnJhdz9SdFtVdF1bbm5dPXh0OiIiPT09eHR8fChSdFtVdF1bbm5dPUZyKHh0''@;'; put 'put ''LENuKT9Gcih4dCxDbikudjp4dCl9dmFyIFg9ezQ0OiIsIiw5OiJcdCIsNTk6IjsifSx3ZT17NDQ6Myw5OjIsNTk6MX07ZnVuY3Rpb24geGUoeHQpe2Zvcih2YXIgUnQ9e30sVXQ9ITEsbm49MCxDbj0wO25uPHh0Lmxlbmd0aDsrK25uKTM0PT0oQ249eHQuY2hhckNvZGVBdChubikpP1V0PSFV''@;'; put 'put ''dDohVXQmJkNuIGluIFgmJihSdFtDbl09KFJ0W0NuXXx8MCkrMSk7Zm9yKG5uIGluIENuPVtdLFJ0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChSdCxubikmJkNuLnB1c2goW1J0W25uXSxubl0pO2lmKCFDbi5sZW5ndGgpZm9yKG5uIGluIFJ0PXdlKU9iamVjdC5wcm90''@;'; put 'put ''b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChSdCxubikmJkNuLnB1c2goW1J0W25uXSxubl0pO3JldHVybiBDbi5zb3J0KGZ1bmN0aW9uKER0LHp0KXtyZXR1cm4gRHRbMF0tenRbMF18fHdlW0R0WzFdXS13ZVt6dFsxXV19KSxYW0NuLnBvcCgpWzFdXX1mdW5jdGlvbiBaZSh4dCxSdCl7cmV0''@;'; put 'put ''dXJuIVJ0fHwhUnQuUFJOfHwic2VwPSI9PXh0LnNsaWNlKDAsNCl8fHh0LmluZGV4T2YoIlx0Iik+PTB8fHh0LmluZGV4T2YoIiwiKT49MHx8eHQuaW5kZXhPZigiOyIpPj0wP2Z1bmN0aW9uIEZlKHh0LFJ0KXt2YXIgVXQ9UnR8fHt9LG5uPSIiLENuPVV0LmRlbnNlP1tdOnt9LER0PXtzOntj''@;'; put 'put ''OjAscjowfSxlOntjOjAscjowfX07InNlcD0iPT14dC5zbGljZSgwLDQpPzEzPT14dC5jaGFyQ29kZUF0KDUpJiYxMD09eHQuY2hhckNvZGVBdCg2KT8obm49eHQuY2hhckF0KDQpLHh0PXh0LnNsaWNlKDcpKToxMz09eHQuY2hhckNvZGVBdCg1KXx8MTA9PXh0LmNoYXJDb2RlQXQoNSk/KG5u''@;'; put 'put ''PXh0LmNoYXJBdCg0KSx4dD14dC5zbGljZSg2KSk6bm49eGUoeHQuc2xpY2UoMCwxMDI0KSk6bm49eGUoeHQuc2xpY2UoMCwxMDI0KSk7dmFyIHp0PTAsUG49MCxUbj0wLE9uPTAsWW49MCxNcj1ubi5jaGFyQ29kZUF0KDApLGFpPSExLHlyPTAsYXI9eHQuY2hhckNvZGVBdCgwKTt4dD14dC5y''@;'; put 'put ''ZXBsYWNlKC9cclxuL2dtLCJcbiIpO3ZhciBHcj1udWxsIT1VdC5kYXRlTkY/ZnVuY3Rpb24gUWUoSCl7dmFyIGllPSJudW1iZXIiPT10eXBlb2YgSD9GLl90YWJsZVtIXTpIO3JldHVybiBpZT1pZS5yZXBsYWNlKFBlLCIoXFxkKykiKSxuZXcgUmVnRXhwKCJeIitpZSsiJCIpfShVdC5kYXRl''@;'; put 'put ''TkYpOm51bGw7ZnVuY3Rpb24genIoKXt2YXIgcXI9eHQuc2xpY2UoT24sWW4pLG9pPXt9O2lmKCciJz09cXIuY2hhckF0KDApJiYnIic9PXFyLmNoYXJBdChxci5sZW5ndGgtMSkmJihxcj1xci5zbGljZSgxLC0xKS5yZXBsYWNlKC8iIi9nLCciJykpLDA9PT1xci5sZW5ndGgpb2kudD0ieiI7''@;'; put 'put ''ZWxzZSBpZihVdC5yYXcpb2kudD0icyIsb2kudj1xcjtlbHNlIGlmKDA9PT1xci50cmltKCkubGVuZ3RoKW9pLnQ9InMiLG9pLnY9cXI7ZWxzZSBpZig2MT09cXIuY2hhckNvZGVBdCgwKSkzND09cXIuY2hhckNvZGVBdCgxKSYmMzQ9PXFyLmNoYXJDb2RlQXQocXIubGVuZ3RoLTEpPyhvaS50''@;'; put 'put ''PSJzIixvaS52PXFyLnNsaWNlKDIsLTEpLnJlcGxhY2UoLyIiL2csJyInKSk6ZnVuY3Rpb24geGQoSCl7cmV0dXJuIDEhPUgubGVuZ3RofShxcik/KG9pLnQ9Im4iLG9pLmY9cXIuc2xpY2UoMSkpOihvaS50PSJzIixvaS52PXFyKTtlbHNlIGlmKCJUUlVFIj09cXIpb2kudD0iYiIsb2kudj0h''@;'; put 'put ''MDtlbHNlIGlmKCJGQUxTRSI9PXFyKW9pLnQ9ImIiLG9pLnY9ITE7ZWxzZSBpZihpc05hTihUbj1zcihxcikpKWlmKCFpc05hTihYbihxcikuZ2V0RGF0ZSgpKXx8R3ImJnFyLm1hdGNoKEdyKSl7b2kuej1VdC5kYXRlTkZ8fEYuX3RhYmxlWzE0XTt2YXIgY3I9MDtHciYmcXIubWF0Y2goR3Ip''@;'; put 'put ''JiYocXI9ZnVuY3Rpb24gJGUoSCxpZSxYKXt2YXIgd2U9LTEseGU9LTEsRmU9LTEsWmU9LTEsamU9LTEsWWU9LTE7KGllLm1hdGNoKFBlKXx8W10pLmZvckVhY2goZnVuY3Rpb24oUnQsVXQpe3ZhciBubj1wYXJzZUludChYW1V0KzFdLDEwKTtzd2l0Y2goUnQudG9Mb3dlckNhc2UoKS5jaGFy''@;'; put 'put ''QXQoMCkpe2Nhc2UieSI6d2U9bm47YnJlYWs7Y2FzZSJkIjpGZT1ubjticmVhaztjYXNlImgiOlplPW5uO2JyZWFrO2Nhc2UicyI6WWU9bm47YnJlYWs7Y2FzZSJtIjpaZT49MD9qZT1ubjp4ZT1ubn19KSxZZT49MCYmLTE9PWplJiZ4ZT49MCYmKGplPXhlLHhlPS0xKTt2YXIgTXQ9KCIiKyh3''@;'; put 'put ''ZT49MD93ZToobmV3IERhdGUpLmdldEZ1bGxZZWFyKCkpKS5zbGljZSgtNCkrIi0iKygiMDAiKyh4ZT49MT94ZToxKSkuc2xpY2UoLTIpKyItIisoIjAwIisoRmU+PTE/RmU6MSkpLnNsaWNlKC0yKTs3PT1NdC5sZW5ndGgmJihNdD0iMCIrTXQpLDg9PU10Lmxlbmd0aCYmKE10PSIyMCIrTXQp''@;'; put 'put ''O3ZhciB4dD0oIjAwIisoWmU+PTA/WmU6MCkpLnNsaWNlKC0yKSsiOiIrKCIwMCIrKGplPj0wP2plOjApKS5zbGljZSgtMikrIjoiKygiMDAiKyhZZT49MD9ZZTowKSkuc2xpY2UoLTIpO3JldHVybi0xPT1aZSYmLTE9PWplJiYtMT09WWU/TXQ6LTE9PXdlJiYtMT09eGUmJi0xPT1GZT94dDpN''@;'; put 'put ''dCsiVCIreHR9KDAsVXQuZGF0ZU5GLHFyLm1hdGNoKEdyKXx8W10pLGNyPTEpLFV0LmNlbGxEYXRlcz8ob2kudD0iZCIsb2kudj1kbihxcixjcikpOihvaS50PSJuIixvaS52PWZ0KGRuKHFyLGNyKSkpLCExIT09VXQuY2VsbFRleHQmJihvaS53PUYuZm9ybWF0KG9pLnosb2kudiBpbnN0YW5j''@;'; put 'put ''ZW9mIERhdGU/ZnQob2kudik6b2kudikpLFV0LmNlbGxORnx8ZGVsZXRlIG9pLnp9ZWxzZSBvaS50PSJzIixvaS52PXFyO2Vsc2Ugb2kudD0ibiIsITEhPT1VdC5jZWxsVGV4dCYmKG9pLnc9cXIpLG9pLnY9VG47aWYoInoiPT1vaS50fHwoVXQuZGVuc2U/KENuW3p0XXx8KENuW3p0XT1bXSks''@;'; put 'put ''Q25benRdW1BuXT1vaSk6Q25bWTAoe2M6UG4scjp6dH0pXT1vaSksYXI9eHQuY2hhckNvZGVBdChPbj1ZbisxKSxEdC5lLmM8UG4mJihEdC5lLmM9UG4pLER0LmUucjx6dCYmKER0LmUucj16dCkseXI9PU1yKSsrUG47ZWxzZSBpZihQbj0wLCsrenQsVXQuc2hlZXRSb3dzJiZVdC5zaGVldFJv''@;'; put 'put ''d3M8PXp0KXJldHVybiEwfWU6Zm9yKDtZbjx4dC5sZW5ndGg7KytZbilzd2l0Y2goeXI9eHQuY2hhckNvZGVBdChZbikpe2Nhc2UgMzQ6MzQ9PT1hciYmKGFpPSFhaSk7YnJlYWs7Y2FzZSBNcjpjYXNlIDEwOmNhc2UgMTM6aWYoIWFpJiZ6cigpKWJyZWFrIGV9cmV0dXJuIFluLU9uPjAmJnpy''@;'; put 'put ''KCksQ25bIiFyZWYiXT1mYShEdCksQ259KHh0LFJ0KTptZChmdW5jdGlvbiBpZSh4dCxSdCl7dmFyIFV0PVJ0fHx7fSxubj1bXTtpZigheHR8fDA9PT14dC5sZW5ndGgpcmV0dXJuIG5uO2Zvcih2YXIgQ249eHQuc3BsaXQoL1tcclxuXS8pLER0PUNuLmxlbmd0aC0xO0R0Pj0wJiYwPT09Q25b''@;'; put 'put ''RHRdLmxlbmd0aDspLS1EdDtmb3IodmFyIHp0PTEwLFBuPTAsVG49MDtUbjw9RHQ7KytUbiktMT09KFBuPUNuW1RuXS5pbmRleE9mKCIgIikpP1BuPUNuW1RuXS5sZW5ndGg6UG4rKyx6dD1NYXRoLm1heCh6dCxQbik7Zm9yKFRuPTA7VG48PUR0OysrVG4pe25uW1RuXT1bXTt2YXIgT249MDtm''@;'; put 'put ''b3IoSChDbltUbl0uc2xpY2UoMCx6dCkudHJpbSgpLG5uLFRuLE9uLFV0KSxPbj0xO09uPD0oQ25bVG5dLmxlbmd0aC16dCkvMTArMTsrK09uKUgoQ25bVG5dLnNsaWNlKHp0KzEwKihPbi0xKSx6dCsxMCpPbikudHJpbSgpLG5uLFRuLE9uLFV0KX1yZXR1cm4gVXQuc2hlZXRSb3dzJiYobm49''@;'; put 'put ''bm4uc2xpY2UoMCxVdC5zaGVldFJvd3MpKSxubn0oeHQsUnQpLFJ0KX1mdW5jdGlvbiBqZSh4dCxSdCl7dmFyIFV0PSIiLG5uPSJzdHJpbmciPT1SdC50eXBlP1swLDAsMCwwXTpmQyh4dCxSdCk7c3dpdGNoKFJ0LnR5cGUpe2Nhc2UiYmFzZTY0IjpVdD1TZS5kZWNvZGUoeHQpO2JyZWFrO2Nh''@;'; put 'put ''c2UiYmluYXJ5IjpjYXNlInN0cmluZyI6VXQ9eHQ7YnJlYWs7Y2FzZSJidWZmZXIiOlV0PTY1MDAxPT1SdC5jb2RlcGFnZT94dC50b1N0cmluZygidXRmOCIpOlJ0LmNvZGVwYWdlJiYidW5kZWZpbmVkIiE9dHlwZW9mIGNwdGFibGU/Y3B0YWJsZS51dGlscy5kZWNvZGUoUnQuY29kZXBhZ2Us''@;'; put 'put ''eHQpOnh0LnRvU3RyaW5nKCJiaW5hcnkiKTticmVhaztjYXNlImFycmF5IjpVdD15bih4dCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrUnQudHlwZSl9cmV0dXJuIDIzOT09bm5bMF0mJjE4Nz09bm5bMV0mJjE5MT09bm5bMl0/VXQ9VzAoVXQu''@;'; put 'put ''c2xpY2UoMykpOiJiaW5hcnkiPT1SdC50eXBlJiYidW5kZWZpbmVkIiE9dHlwZW9mIGNwdGFibGUmJlJ0LmNvZGVwYWdlJiYoVXQ9Y3B0YWJsZS51dGlscy5kZWNvZGUoUnQuY29kZXBhZ2UsY3B0YWJsZS51dGlscy5lbmNvZGUoMjg1OTEsVXQpKSksInNvY2lhbGNhbGM6dmVyc2lvbjoiPT1V''@;'; put 'put ''dC5zbGljZSgwLDE5KT9lRS50b19zaGVldCgic3RyaW5nIj09UnQudHlwZT9VdDpXMChVdCksUnQpOlplKFV0LFJ0KX1yZXR1cm57dG9fd29ya2Jvb2s6ZnVuY3Rpb24gWWUoeHQsUnQpe3JldHVybiB3MShqZSh4dCxSdCksUnQpfSx0b19zaGVldDpqZSxmcm9tX3NoZWV0OmZ1bmN0aW9uIE10''@;'; put 'put ''KHh0KXtmb3IodmFyIG5uLFJ0PVtdLFV0PUZvKHh0WyIhcmVmIl0pLENuPUFycmF5LmlzQXJyYXkoeHQpLER0PVV0LnMucjtEdDw9VXQuZS5yOysrRHQpe2Zvcih2YXIgenQ9W10sUG49VXQucy5jO1BuPD1VdC5lLmM7KytQbil7dmFyIFRuPVkwKHtyOkR0LGM6UG59KTtpZigobm49Q24/KHh0''@;'; put 'put ''W0R0XXx8W10pW1BuXTp4dFtUbl0pJiZudWxsIT1ubi52KXtmb3IodmFyIE9uPShubi53fHwoeTEobm4pLG5uLncpfHwiIikuc2xpY2UoMCwxMCk7T24ubGVuZ3RoPDEwOylPbis9IiAiO3p0LnB1c2goT24rKDA9PT1Qbj8iICI6IiIpKX1lbHNlIHp0LnB1c2goIiAgICAgICAgICAiKX1SdC5w''@;'; put 'put ''dXNoKHp0LmpvaW4oIiIpKX1yZXR1cm4gUnQuam9pbigiXG4iKX19fSgpLEcxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gSChZcixFaSxoaSl7aWYoWXIpe0tsKFlyLFlyLmx8fDApO2Zvcih2YXIgTnI9aGkuRW51bXx8QTA7WXIubDxZci5sZW5ndGg7KXt2YXIga2k9WXIucmVhZF9zaGlmdCgyKSxO''@;'; put 'put ''MD1OcltraV18fE5yWzY1NTM1XSx0MD1Zci5yZWFkX3NoaWZ0KDIpLGlvPVlyLmwrdDAsb2E9TjAuZiYmTjAuZihZcix0MCxoaSk7aWYoWXIubD1pbyxFaShvYSxOMCxraSkpcmV0dXJufX19ZnVuY3Rpb24gWChZcixFaSl7aWYoIVlyKXJldHVybiBZcjt2YXIgaGk9RWl8fHt9LE5yPWhpLmRl''@;'; put 'put ''bnNlP1tdOnt9LGtpPSJTaGVldDEiLE4wPTAsdDA9e30saW89W2tpXSxvYT1bXSwkMD17czp7cjowLGM6MH0sZTp7cjowLGM6MH19LFZhPWhpLnNoZWV0Um93c3x8MDtpZigyPT1ZclsyXSloaS5FbnVtPUEwLEgoWXIsZnVuY3Rpb24oeDAsaDAsanIpe3N3aXRjaChqcil7Y2FzZSAwOmhpLnZl''@;'; put 'put ''cnM9eDAseDA+PTQwOTYmJihoaS5xcHJvPSEwKTticmVhaztjYXNlIDY6JDA9eDA7YnJlYWs7Y2FzZSAxNTpjYXNlIDUxOmhpLnFwcm98fCh4MFsxXS52PXgwWzFdLnYuc2xpY2UoMSkpO2Nhc2UgMTM6Y2FzZSAxNDpjYXNlIDE2OjE0PT1qciYmMTEyPT0oMTEyJngwWzJdKSYmKDE1JngwWzJd''@;'; put 'put ''KT4xJiYoMTUmeDBbMl0pPDE1JiYoeDBbMV0uej1oaS5kYXRlTkZ8fEYuX3RhYmxlWzE0XSxoaS5jZWxsRGF0ZXMmJih4MFsxXS50PSJkIix4MFsxXS52PUh0KHgwWzFdLnYpKSk7dmFyIEhpPWhpLmRlbnNlPyhOclt4MFswXS5yXXx8W10pW3gwWzBdLmNdOk5yW1kwKHgwWzBdKV07aWYoSGkp''@;'; put 'put ''e0hpLnQ9eDBbMV0udCxIaS52PXgwWzFdLnYsbnVsbCE9eDBbMV0ueiYmKEhpLno9eDBbMV0ueiksbnVsbCE9eDBbMV0uZiYmKEhpLmY9eDBbMV0uZik7YnJlYWt9aGkuZGVuc2U/KE5yW3gwWzBdLnJdfHwoTnJbeDBbMF0ucl09W10pLE5yW3gwWzBdLnJdW3gwWzBdLmNdPXgwWzFdKTpOcltZ''@;'; put 'put ''MCh4MFswXSldPXgwWzFdfX0saGkpO2Vsc2V7aWYoMjYhPVlyWzJdJiYxNCE9WXJbMl0pdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgTE9UVVMgQk9GICIrWXJbMl0pO2hpLkVudW09YmksMTQ9PVlyWzJdJiYoaGkucXBybz0hMCxZci5sPTApLEgoWXIsZnVuY3Rpb24oeDAsaDAsanIp''@;'; put 'put ''e3N3aXRjaChqcil7Y2FzZSAyMjp4MFsxXS52PXgwWzFdLnYuc2xpY2UoMSk7Y2FzZSAyMzpjYXNlIDI0OmNhc2UgMjU6Y2FzZSAzNzpjYXNlIDM5OmNhc2UgNDA6aWYoeDBbM10+TjAmJihOclsiIXJlZiJdPWZhKCQwKSx0MFtraV09TnIsTnI9aGkuZGVuc2U/W106e30sJDA9e3M6e3I6MCxj''@;'; put 'put ''OjB9LGU6e3I6MCxjOjB9fSxpby5wdXNoKGtpPSJTaGVldCIrKChOMD14MFszXSkrMSkpKSxWYT4wJiZ4MFswXS5yPj1WYSlicmVhaztoaS5kZW5zZT8oTnJbeDBbMF0ucl18fChOclt4MFswXS5yXT1bXSksTnJbeDBbMF0ucl1beDBbMF0uY109eDBbMV0pOk5yW1kwKHgwWzBdKV09eDBbMV0s''@;'; put 'put ''JDAuZS5jPHgwWzBdLmMmJigkMC5lLmM9eDBbMF0uYyksJDAuZS5yPHgwWzBdLnImJigkMC5lLnI9eDBbMF0ucik7YnJlYWs7Y2FzZSAyNzp4MFsxNGUzXSYmKG9hW3gwWzE0ZTNdWzBdXT14MFsxNGUzXVsxXSl9fSxoaSl9aWYoTnJbIiFyZWYiXT1mYSgkMCksdDBba2ldPU5yLCFvYS5sZW5n''@;'; put 'put ''dGgpcmV0dXJue1NoZWV0TmFtZXM6aW8sU2hlZXRzOnQwfTtmb3IodmFyIGpvPXt9LHdhPVtdLGFvPTA7YW88b2EubGVuZ3RoOysrYW8pdDBbaW9bYW9dXSYmKHdhLnB1c2gob2FbYW9dKSxqb1tvYVthb11dPXQwW2lvW2FvXV0pO3JldHVybntTaGVldE5hbWVzOndhLFNoZWV0czpqb319ZnVu''@;'; put 'put ''Y3Rpb24gTXQoWXIsRWksaGkpe3ZhciBOcj1be2M6MCxyOjB9LHt0OiJuIix2OjB9LDBdO3JldHVybiBoaS5xcHJvJiYyMDc2OCE9aGkudmVycz8oTnJbMF0uYz1Zci5yZWFkX3NoaWZ0KDEpLFlyLmwrKyxOclswXS5yPVlyLnJlYWRfc2hpZnQoMiksWXIubCs9Mik6KE5yWzJdPVlyLnJlYWRf''@;'; put 'put ''c2hpZnQoMSksTnJbMF0uYz1Zci5yZWFkX3NoaWZ0KDIpLE5yWzBdLnI9WXIucmVhZF9zaGlmdCgyKSksTnJ9ZnVuY3Rpb24geHQoWXIsRWksaGkpe3ZhciBOcj1Zci5sK0VpLGtpPU10KFlyLDAsaGkpO2lmKGtpWzFdLnQ9InMiLDIwNzY4PT1oaS52ZXJzKXtZci5sKys7dmFyIE4wPVlyLnJl''@;'; put 'put ''YWRfc2hpZnQoMSk7cmV0dXJuIGtpWzFdLnY9WXIucmVhZF9zaGlmdChOMCwidXRmOCIpLGtpfXJldHVybiBoaS5xcHJvJiZZci5sKyssa2lbMV0udj1Zci5yZWFkX3NoaWZ0KE5yLVlyLmwsImNzdHIiKSxraX1mdW5jdGlvbiBSdChZcixFaSxoaSl7dmFyIE5yPVJpKDcraGkubGVuZ3RoKTtO''@;'; put 'put ''ci53cml0ZV9zaGlmdCgxLDI1NSksTnIud3JpdGVfc2hpZnQoMixFaSksTnIud3JpdGVfc2hpZnQoMixZciksTnIud3JpdGVfc2hpZnQoMSwzOSk7Zm9yKHZhciBraT0wO2tpPE5yLmxlbmd0aDsrK2tpKXt2YXIgTjA9aGkuY2hhckNvZGVBdChraSk7TnIud3JpdGVfc2hpZnQoMSxOMD49MTI4''@;'; put 'put ''Pzk1Ok4wKX1yZXR1cm4gTnIud3JpdGVfc2hpZnQoMSwwKSxOcn1mdW5jdGlvbiBubihZcixFaSxoaSl7dmFyIE5yPVJpKDcpO3JldHVybiBOci53cml0ZV9zaGlmdCgxLDI1NSksTnIud3JpdGVfc2hpZnQoMixFaSksTnIud3JpdGVfc2hpZnQoMixZciksTnIud3JpdGVfc2hpZnQoMixoaSwi''@;'; put 'put ''aSIpLE5yfWZ1bmN0aW9uIER0KFlyLEVpLGhpKXt2YXIgTnI9UmkoMTMpO3JldHVybiBOci53cml0ZV9zaGlmdCgxLDI1NSksTnIud3JpdGVfc2hpZnQoMixFaSksTnIud3JpdGVfc2hpZnQoMixZciksTnIud3JpdGVfc2hpZnQoOCxoaSwiZiIpLE5yfWZ1bmN0aW9uIFBuKFlyLEVpLGhpKXt2''@;'; put 'put ''YXIgTnI9MzI3NjgmRWk7cmV0dXJuIEVpPShOcj9ZcjowKSsoKEVpJj0tMzI3NjkpPj04MTkyP0VpLTE2Mzg0OkVpKSwoTnI/IiI6IiQiKSsoaGk/X2EoRWkpOlhhKEVpKSl9dmFyIE9uPXs1MTpbIkZBTFNFIiwwXSw1MjpbIlRSVUUiLDBdLDcwOlsiTEVOIiwxXSw4MDpbIlNVTSIsNjldLDgx''@;'; put 'put ''OlsiQVZFUkFHRUEiLDY5XSw4MjpbIkNPVU5UQSIsNjldLDgzOlsiTUlOQSIsNjldLDg0OlsiTUFYQSIsNjldLDExMTpbIlQiLDFdfSxZbj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIisiLCItIiwiKiIsIi8iLCJeIiwiPSIsIjw+IiwiPD0iLCI+PSIsIjwiLCI+IiwiIiwiIiwiIiwi''@;'; put 'put ''IiwiJiIsIiIsIiIsIiIsIiIsIiIsIiIsIiJdO2Z1bmN0aW9uIGFpKFlyKXt2YXIgRWk9W3tjOjAscjowfSx7dDoibiIsdjowfSwwXTtyZXR1cm4gRWlbMF0ucj1Zci5yZWFkX3NoaWZ0KDIpLEVpWzNdPVlyW1lyLmwrK10sRWlbMF0uYz1ZcltZci5sKytdLEVpfWZ1bmN0aW9uIGFyKFlyLEVp''@;'; put 'put ''LGhpLE5yKXt2YXIga2k9UmkoNitOci5sZW5ndGgpO2tpLndyaXRlX3NoaWZ0KDIsWXIpLGtpLndyaXRlX3NoaWZ0KDEsaGkpLGtpLndyaXRlX3NoaWZ0KDEsRWkpLGtpLndyaXRlX3NoaWZ0KDEsMzkpO2Zvcih2YXIgTjA9MDtOMDxOci5sZW5ndGg7KytOMCl7dmFyIHQwPU5yLmNoYXJDb2Rl''@;'; put 'put ''QXQoTjApO2tpLndyaXRlX3NoaWZ0KDEsdDA+PTEyOD85NTp0MCl9cmV0dXJuIGtpLndyaXRlX3NoaWZ0KDEsMCksa2l9ZnVuY3Rpb24genIoWXIsRWkpe3ZhciBoaT1haShZciksTnI9WXIucmVhZF9zaGlmdCg0KSxraT1Zci5yZWFkX3NoaWZ0KDQpLE4wPVlyLnJlYWRfc2hpZnQoMik7aWYo''@;'; put 'put ''NjU1MzU9PU4wKXJldHVybiAwPT09TnImJjMyMjEyMjU0NzI9PT1raT8oaGlbMV0udD0iZSIsaGlbMV0udj0xNSk6MD09PU5yJiYzNDg5NjYwOTI4PT09a2k/KGhpWzFdLnQ9ImUiLGhpWzFdLnY9NDIpOmhpWzFdLnY9MCxoaTt2YXIgdDA9MzI3NjgmTjA7cmV0dXJuIE4wPSgzMjc2NyZOMCkt''@;'; put 'put ''MTY0NDYsaGlbMV0udj0oMS0yKnQwKSooa2kqTWF0aC5wb3coMixOMCszMikrTnIqTWF0aC5wb3coMixOMCkpLGhpfWZ1bmN0aW9uIHFyKFlyLEVpLGhpLE5yKXt2YXIga2k9UmkoMTQpO2lmKGtpLndyaXRlX3NoaWZ0KDIsWXIpLGtpLndyaXRlX3NoaWZ0KDEsaGkpLGtpLndyaXRlX3NoaWZ0''@;'; put 'put ''KDEsRWkpLDA9PU5yKXJldHVybiBraS53cml0ZV9zaGlmdCg0LDApLGtpLndyaXRlX3NoaWZ0KDQsMCksa2kud3JpdGVfc2hpZnQoMiw2NTUzNSksa2k7dmFyIE4wPTAsdDA9MCxvYT0wO3JldHVybiBOcjwwJiYoTjA9MSxOcj0tTnIpLHQwPTB8TWF0aC5sb2cyKE5yKSwwPT0oMjE0NzQ4MzY0''@;'; put 'put ''OCYob2E9KE5yLz1NYXRoLnBvdygyLHQwLTMxKSk+Pj4wKSkmJigrK3QwLG9hPShOci89Mik+Pj4wKSxOci09b2Esb2F8PTIxNDc0ODM2NDgsb2E+Pj49MCxOcio9TWF0aC5wb3coMiwzMiksa2kud3JpdGVfc2hpZnQoNCxOcj4+PjApLGtpLndyaXRlX3NoaWZ0KDQsb2EpLGtpLndyaXRlX3No''@;'; put 'put ''aWZ0KDIsdDArPTE2MzgzKyhOMD8zMjc2ODowKSksa2l9ZnVuY3Rpb24gZGkoWXIsRWkpe3ZhciBoaT1haShZciksTnI9WXIucmVhZF9zaGlmdCg4LCJmIik7cmV0dXJuIGhpWzFdLnY9TnIsaGl9ZnVuY3Rpb24gdG8oWXIsRWkpe3ZhciBoaT1SaSg1K1lyLmxlbmd0aCk7aGkud3JpdGVfc2hp''@;'; put 'put ''ZnQoMiwxNGUzKSxoaS53cml0ZV9zaGlmdCgyLEVpKTtmb3IodmFyIE5yPTA7TnI8WXIubGVuZ3RoOysrTnIpe3ZhciBraT1Zci5jaGFyQ29kZUF0KE5yKTtoaVtoaS5sKytdPWtpPjEyNz85NTpraX1yZXR1cm4gaGlbaGkubCsrXT0wLGhpfXZhciBBMD17MDp7bjoiQk9GIixmOmMxfSwxOntu''@;'; put 'put ''OiJFT0YifSwyOntuOiJDQUxDTU9ERSJ9LDM6e246IkNBTENPUkRFUiJ9LDQ6e246IlNQTElUIn0sNTp7bjoiU1lOQyJ9LDY6e246IlJBTkdFIixmOmZ1bmN0aW9uIGplKFlyKXt2YXIgRWk9e3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fTtyZXR1cm4gRWkucy5jPVlyLnJlYWRfc2hpZnQoMiks''@;'; put 'put ''RWkucy5yPVlyLnJlYWRfc2hpZnQoMiksRWkuZS5jPVlyLnJlYWRfc2hpZnQoMiksRWkuZS5yPVlyLnJlYWRfc2hpZnQoMiksNjU1MzU9PUVpLnMuYyYmKEVpLnMuYz1FaS5lLmM9RWkucy5yPUVpLmUucj0wKSxFaX19LDc6e246IldJTkRPVzEifSw4OntuOiJDT0xXMSJ9LDk6e246IldJTlRX''@;'; put 'put ''TyJ9LDEwOntuOiJDT0xXMiJ9LDExOntuOiJOQU1FIn0sMTI6e246IkJMQU5LIn0sMTM6e246IklOVEVHRVIiLGY6ZnVuY3Rpb24gVXQoWXIsRWksaGkpe3ZhciBOcj1NdChZciwwLGhpKTtyZXR1cm4gTnJbMV0udj1Zci5yZWFkX3NoaWZ0KDIsImkiKSxOcn19LDE0OntuOiJOVU1CRVIiLGY6''@;'; put 'put ''ZnVuY3Rpb24gQ24oWXIsRWksaGkpe3ZhciBOcj1NdChZciwwLGhpKTtyZXR1cm4gTnJbMV0udj1Zci5yZWFkX3NoaWZ0KDgsImYiKSxOcn19LDE1OntuOiJMQUJFTCIsZjp4dH0sMTY6e246IkZPUk1VTEEiLGY6ZnVuY3Rpb24genQoWXIsRWksaGkpe3ZhciBOcj1Zci5sK0VpLGtpPU10KFly''@;'; put 'put ''LDAsaGkpO2lmKGtpWzFdLnY9WXIucmVhZF9zaGlmdCg4LCJmIiksaGkucXBybylZci5sPU5yO2Vsc2V7dmFyIE4wPVlyLnJlYWRfc2hpZnQoMik7KGZ1bmN0aW9uIE1yKFlyLEVpKXtLbChZciwwKTtmb3IodmFyIGhpPVtdLE5yPTAsa2k9IiIsTjA9IiI7WXIubDxZci5sZW5ndGg7KXt2YXIg''@;'; put 'put ''dDA9WXJbWXIubCsrXTtzd2l0Y2godDApe2Nhc2UgMDpoaS5wdXNoKFlyLnJlYWRfc2hpZnQoOCwiZiIpKTticmVhaztjYXNlIDE6TjA9UG4oRWlbMF0uYyxZci5yZWFkX3NoaWZ0KDIpLCEwKSxraT1QbihFaVswXS5yLFlyLnJlYWRfc2hpZnQoMiksITEpLGhpLnB1c2goTjAra2kpO2JyZWFr''@;'; put 'put ''O2Nhc2UgMjp2YXIgaW89UG4oRWlbMF0uYyxZci5yZWFkX3NoaWZ0KDIpLCEwKSxvYT1QbihFaVswXS5yLFlyLnJlYWRfc2hpZnQoMiksITEpO04wPVBuKEVpWzBdLmMsWXIucmVhZF9zaGlmdCgyKSwhMCksa2k9UG4oRWlbMF0ucixZci5yZWFkX3NoaWZ0KDIpLCExKSxoaS5wdXNoKGlvK29h''@;'; put 'put ''KyI6IitOMCtraSk7YnJlYWs7Y2FzZSAzOmlmKFlyLmw8WXIubGVuZ3RoKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIldLMSBwcmVtYXR1cmUgZm9ybXVsYSBlbmQiKTticmVhaztjYXNlIDQ6aGkucHVzaCgiKCIraGkucG9wKCkrIikiKTticmVhaztjYXNlIDU6aGkucHVzaChZci5yZWFk''@;'; put 'put ''X3NoaWZ0KDIpKTticmVhaztjYXNlIDY6Zm9yKHZhciAkMD0iIjt0MD1ZcltZci5sKytdOykkMCs9U3RyaW5nLmZyb21DaGFyQ29kZSh0MCk7aGkucHVzaCgnIicrJDAucmVwbGFjZSgvIi9nLCciIicpKyciJyk7YnJlYWs7Y2FzZSA4OmhpLnB1c2goIi0iK2hpLnBvcCgpKTticmVhaztjYXNl''@;'; put 'put ''IDIzOmhpLnB1c2goIisiK2hpLnBvcCgpKTticmVhaztjYXNlIDIyOmhpLnB1c2goIk5PVCgiK2hpLnBvcCgpKyIpIik7YnJlYWs7Y2FzZSAyMDpjYXNlIDIxOnZhciBWYT1oaS5wb3AoKSxqbz1oaS5wb3AoKTtoaS5wdXNoKFsiQU5EIiwiT1IiXVt0MC0yMF0rIigiK2pvKyIsIitWYSsiKSIp''@;'; put 'put ''O2JyZWFrO2RlZmF1bHQ6aWYodDA8MzImJlluW3QwXSlWYT1oaS5wb3AoKSxqbz1oaS5wb3AoKSxoaS5wdXNoKGpvK1luW3QwXStWYSk7ZWxzZXtpZighT25bdDBdKXJldHVybiB0MDw9Nz9jb25zb2xlLmVycm9yKCJXSzEgaW52YWxpZCBvcGNvZGUgIit0MC50b1N0cmluZygxNikpOnQwPD0y''@;'; put 'put ''ND9jb25zb2xlLmVycm9yKCJXSzEgdW5zdXBwb3J0ZWQgb3AgIit0MC50b1N0cmluZygxNikpOnQwPD0zMD9jb25zb2xlLmVycm9yKCJXSzEgaW52YWxpZCBvcGNvZGUgIit0MC50b1N0cmluZygxNikpOnQwPD0xMTU/Y29uc29sZS5lcnJvcigiV0sxIHVuc3VwcG9ydGVkIGZ1bmN0aW9uIG9w''@;'; put 'put ''Y29kZSAiK3QwLnRvU3RyaW5nKDE2KSk6Y29uc29sZS5lcnJvcigiV0sxIHVucmVjb2duaXplZCBvcGNvZGUgIit0MC50b1N0cmluZygxNikpO2lmKDY5PT0oTnI9T25bdDBdWzFdKSYmKE5yPVlyW1lyLmwrK10pLE5yPmhpLmxlbmd0aClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJXSzEg''@;'; put 'put ''YmFkIGZvcm11bGEgcGFyc2UgMHgiK3QwLnRvU3RyaW5nKDE2KSsiOnwiK2hpLmpvaW4oInwiKSsifCIpO3ZhciB3YT1oaS5zbGljZSgtTnIpO2hpLmxlbmd0aC09TnIsaGkucHVzaChPblt0MF1bMF0rIigiK3dhLmpvaW4oIiwiKSsiKSIpfX19MT09aGkubGVuZ3RoP0VpWzFdLmY9IiIraGlb''@;'; put 'put ''MF06Y29uc29sZS5lcnJvcigiV0sxIGJhZCBmb3JtdWxhIHBhcnNlIHwiK2hpLmpvaW4oInwiKSsifCIpfSkoWXIuc2xpY2UoWXIubCxZci5sK04wKSxraSksWXIubCs9TjB9cmV0dXJuIGtpfX0sMjQ6e246IlRBQkxFIn0sMjU6e246Ik9SQU5HRSJ9LDI2OntuOiJQUkFOR0UifSwyNzp7bjoi''@;'; put 'put ''U1JBTkdFIn0sMjg6e246IkZSQU5HRSJ9LDI5OntuOiJLUkFOR0UxIn0sMzI6e246IkhSQU5HRSJ9LDM1OntuOiJLUkFOR0UyIn0sMzY6e246IlBST1RFQyJ9LDM3OntuOiJGT09URVIifSwzODp7bjoiSEVBREVSIn0sMzk6e246IlNFVFVQIn0sNDA6e246Ik1BUkdJTlMifSw0MTp7bjoiTEFC''@;'; put 'put ''RUxGTVQifSw0Mjp7bjoiVElUTEVTIn0sNDM6e246IlNIRUVUSlMifSw0NTp7bjoiR1JBUEgifSw0Njp7bjoiTkdSQVBIIn0sNDc6e246IkNBTENDT1VOVCJ9LDQ4OntuOiJVTkZPUk1BVFRFRCJ9LDQ5OntuOiJDVVJTT1JXMTIifSw1MDp7bjoiV0lORE9XIn0sNTE6e246IlNUUklORyIsZjp4''@;'; put 'put ''dH0sNTU6e246IlBBU1NXT1JEIn0sNTY6e246IkxPQ0tFRCJ9LDYwOntuOiJRVUVSWSJ9LDYxOntuOiJRVUVSWU5BTUUifSw2Mjp7bjoiUFJJTlQifSw2Mzp7bjoiUFJJTlROQU1FIn0sNjQ6e246IkdSQVBIMiJ9LDY1OntuOiJHUkFQSE5BTUUifSw2Njp7bjoiWk9PTSJ9LDY3OntuOiJTWU1T''@;'; put 'put ''UExJVCJ9LDY4OntuOiJOU1JPV1MifSw2OTp7bjoiTlNDT0xTIn0sNzA6e246IlJVTEVSIn0sNzE6e246Ik5OQU1FIn0sNzI6e246IkFDT01NIn0sNzM6e246IkFNQUNSTyJ9LDc0OntuOiJQQVJTRSJ9LDEwMjp7bjoiUFJBTkdFUz8/In0sMTAzOntuOiJSUkFOR0VTPz8ifSwxMDQ6e246IkZO''@;'; put 'put ''QU1FPz8ifSwxMDU6e246Ik1SQU5HRVM/PyJ9LDY1NTM1OntuOiIifX0sYmk9ezA6e246IkJPRiJ9LDE6e246IkVPRiJ9LDI6e246IlBBU1NXT1JEIn0sMzp7bjoiQ0FMQ1NFVCJ9LDQ6e246IldJTkRPV1NFVCJ9LDU6e246IlNIRUVUQ0VMTFBUUiJ9LDY6e246IlNIRUVUTEFZT1VUIn0sNzp7''@;'; put 'put ''bjoiQ09MVU1OV0lEVEgifSw4OntuOiJISURERU5DT0xVTU4ifSw5OntuOiJVU0VSUkFOR0UifSwxMDp7bjoiU1lTVEVNUkFOR0UifSwxMTp7bjoiWkVST0ZPUkNFIn0sMTI6e246IlNPUlRLRVlESVIifSwxMzp7bjoiRklMRVNFQUwifSwxNDp7bjoiREFUQUZJTExOVU1TIn0sMTU6e246IlBS''@;'; put 'put ''SU5UTUFJTiJ9LDE2OntuOiJQUklOVFNUUklORyJ9LDE3OntuOiJHUkFQSE1BSU4ifSwxODp7bjoiR1JBUEhTVFJJTkcifSwxOTp7bjoiPz8ifSwyMDp7bjoiRVJSQ0VMTCJ9LDIxOntuOiJOQUNFTEwifSwyMjp7bjoiTEFCRUwxNiIsZjpmdW5jdGlvbiB5cihZcixFaSl7dmFyIGhpPWFpKFly''@;'; put 'put ''KTtyZXR1cm4gaGlbMV0udD0icyIsaGlbMV0udj1Zci5yZWFkX3NoaWZ0KEVpLTQsImNzdHIiKSxoaX19LDIzOntuOiJOVU1CRVIxNyIsZjp6cn0sMjQ6e246Ik5VTUJFUjE4IixmOmZ1bmN0aW9uIEdyKFlyLEVpKXt2YXIgaGk9YWkoWXIpO2hpWzFdLnY9WXIucmVhZF9zaGlmdCgyKTt2YXIg''@;'; put 'put ''TnI9aGlbMV0udj4+MTtpZigxJmhpWzFdLnYpc3dpdGNoKDcmTnIpe2Nhc2UgMDpOcj01ZTMqKE5yPj4zKTticmVhaztjYXNlIDE6TnI9NTAwKihOcj4+Myk7YnJlYWs7Y2FzZSAyOk5yPShOcj4+MykvMjA7YnJlYWs7Y2FzZSAzOk5yPShOcj4+MykvMjAwO2JyZWFrO2Nhc2UgNDpOcj0oTnI+''@;'; put 'put ''PjMpLzJlMzticmVhaztjYXNlIDU6TnI9KE5yPj4zKS8yZTQ7YnJlYWs7Y2FzZSA2Ok5yPShOcj4+MykvMTY7YnJlYWs7Y2FzZSA3Ok5yPShOcj4+MykvNjR9cmV0dXJuIGhpWzFdLnY9TnIsaGl9fSwyNTp7bjoiRk9STVVMQTE5IixmOmZ1bmN0aW9uIG9pKFlyLEVpKXt2YXIgaGk9enIoWXIp''@;'; put 'put ''O3JldHVybiBZci5sKz1FaS0xNCxoaX19LDI2OntuOiJGT1JNVUxBMUEifSwyNzp7bjoiWEZPUk1BVCIsZjpmdW5jdGlvbiBVaShZcixFaSl7Zm9yKHZhciBoaT17fSxOcj1Zci5sK0VpO1lyLmw8TnI7KXt2YXIga2k9WXIucmVhZF9zaGlmdCgyKTtpZigxNGUzPT1raSl7Zm9yKGhpW2tpXT1b''@;'; put 'put ''MCwiIl0saGlba2ldWzBdPVlyLnJlYWRfc2hpZnQoMik7WXJbWXIubF07KWhpW2tpXVsxXSs9U3RyaW5nLmZyb21DaGFyQ29kZShZcltZci5sXSksWXIubCsrO1lyLmwrK319cmV0dXJuIGhpfX0sMjg6e246IkRUTEFCRUxNSVNDIn0sMjk6e246IkRUTEFCRUxDRUxMIn0sMzA6e246IkdSQVBI''@;'; put 'put ''V0lORE9XIn0sMzE6e246IkNQQSJ9LDMyOntuOiJMUExBVVRPIn0sMzM6e246IlFVRVJZIn0sMzQ6e246IkhJRERFTlNIRUVUIn0sMzU6e246Ij8/In0sMzc6e246Ik5VTUJFUjI1IixmOmZ1bmN0aW9uIGNyKFlyLEVpKXt2YXIgaGk9YWkoWXIpLE5yPVlyLnJlYWRfc2hpZnQoNCk7cmV0dXJu''@;'; put 'put ''IGhpWzFdLnY9TnI+PjYsaGl9fSwzODp7bjoiPz8ifSwzOTp7bjoiTlVNQkVSMjciLGY6ZGl9LDQwOntuOiJGT1JNVUxBMjgiLGY6ZnVuY3Rpb24gdjAoWXIsRWkpe3ZhciBoaT1kaShZcik7cmV0dXJuIFlyLmwrPUVpLTEwLGhpfX0sMTQyOntuOiI/PyJ9LDE0Nzp7bjoiPz8ifSwxNTA6e246''@;'; put 'put ''Ij8/In0sMTUxOntuOiI/PyJ9LDE1Mjp7bjoiPz8ifSwxNTM6e246Ij8/In0sMTU0OntuOiI/PyJ9LDE1NTp7bjoiPz8ifSwxNTY6e246Ij8/In0sMTYzOntuOiI/PyJ9LDE3NDp7bjoiPz8ifSwxNzU6e246Ij8/In0sMTc2OntuOiI/PyJ9LDE3Nzp7bjoiPz8ifSwxODQ6e246Ij8/In0sMTg1''@;'; put 'put ''OntuOiI/PyJ9LDE4Njp7bjoiPz8ifSwxODc6e246Ij8/In0sMTg4OntuOiI/PyJ9LDE5NTp7bjoiPz8ifSwyMDE6e246Ij8/In0sMjA1OntuOiI/PyJ9LDIwNjp7bjoiPz8ifSwyMDc6e246Ij8/In0sMjA4OntuOiI/PyJ9LDI1Njp7bjoiPz8ifSwyNTk6e246Ij8/In0sMjYwOntuOiI/PyJ9''@;'; put 'put ''LDI2MTp7bjoiPz8ifSwyNjI6e246Ij8/In0sMjYzOntuOiI/PyJ9LDI2NTp7bjoiPz8ifSwyNjY6e246Ij8/In0sMjY3OntuOiI/PyJ9LDI2ODp7bjoiPz8ifSwyNzA6e246Ij8/In0sMjcxOntuOiI/PyJ9LDM4NDp7bjoiPz8ifSwzODk6e246Ij8/In0sMzkwOntuOiI/PyJ9LDM5Mzp7bjoi''@;'; put 'put ''Pz8ifSwzOTY6e246Ij8/In0sNTEyOntuOiI/PyJ9LDUxNDp7bjoiPz8ifSw1MTM6e246Ij8/In0sNTE2OntuOiI/PyJ9LDUxNzp7bjoiPz8ifSw2NDA6e246Ij8/In0sNjQxOntuOiI/PyJ9LDY0Mjp7bjoiPz8ifSw2NDM6e246Ij8/In0sNjQ0OntuOiI/PyJ9LDY0NTp7bjoiPz8ifSw2NDY6''@;'; put 'put ''e246Ij8/In0sNjQ3OntuOiI/PyJ9LDY0ODp7bjoiPz8ifSw2NTg6e246Ij8/In0sNjU5OntuOiI/PyJ9LDY2MDp7bjoiPz8ifSw2NjE6e246Ij8/In0sNjYyOntuOiI/PyJ9LDY2NTp7bjoiPz8ifSw2NjY6e246Ij8/In0sNzY4OntuOiI/PyJ9LDc3Mjp7bjoiPz8ifSwxNjAwOntuOiI/PyJ9''@;'; put 'put ''LDE2MDI6e246Ij8/In0sMTc5Mzp7bjoiPz8ifSwxNzk0OntuOiI/PyJ9LDE3OTU6e246Ij8/In0sMTc5Njp7bjoiPz8ifSwxOTIwOntuOiI/PyJ9LDIwNDg6e246Ij8/In0sMjA0OTp7bjoiPz8ifSwyMDUyOntuOiI/PyJ9LDI2ODg6e246Ij8/In0sMTA5OTg6e246Ij8/In0sMTI4NDk6e246''@;'; put 'put ''Ij8/In0sMjgyMzM6e246Ij8/In0sMjg0ODQ6e246Ij8/In0sNjU1MzU6e246IiJ9fTtyZXR1cm57c2hlZXRfdG9fd2sxOmZ1bmN0aW9uIHdlKFlyLEVpKXt2YXIgaGk9RWl8fHt9O2lmKCtoaS5jb2RlcGFnZT49MCYmdGUoK2hpLmNvZGVwYWdlKSwic3RyaW5nIj09aGkudHlwZSl0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIkNhbm5vdCB3cml0ZSBXSzEgdG8gSlMgc3RyaW5nIik7dmFyIE5yPUoyKCksa2k9Rm8oWXJbIiFyZWYiXSksTjA9QXJyYXkuaXNBcnJheShZciksdDA9W107czAoTnIsMCxmdW5jdGlvbiBGZShZcil7dmFyIEVpPVJpKDIpO3JldHVybiBFaS53cml0ZV9zaGlmdCgyLFlyKSxF''@;'; put 'put ''aX0oMTAzMCkpLHMwKE5yLDYsZnVuY3Rpb24gWWUoWXIpe3ZhciBFaT1SaSg4KTtyZXR1cm4gRWkud3JpdGVfc2hpZnQoMixZci5zLmMpLEVpLndyaXRlX3NoaWZ0KDIsWXIucy5yKSxFaS53cml0ZV9zaGlmdCgyLFlyLmUuYyksRWkud3JpdGVfc2hpZnQoMixZci5lLnIpLEVpfShraSkpO2Zv''@;'; put 'put ''cih2YXIgaW89a2kucy5yO2lvPD1raS5lLnI7Kytpbylmb3IodmFyIG9hPVhhKGlvKSwkMD1raS5zLmM7JDA8PWtpLmUuYzsrKyQwKXtpbz09PWtpLnMuciYmKHQwWyQwXT1fYSgkMCkpO3ZhciBqbz1OMD8oWXJbaW9dfHxbXSlbJDBdOllyW3QwWyQwXStvYV07am8mJiJ6IiE9am8udCYmKCJu''@;'; put 'put ''Ij09am8udD8oMHxqby52KT09am8udiYmam8udj49LTMyNzY4JiZqby52PD0zMjc2Nz9zMChOciwxMyxubihpbywkMCxqby52KSk6czAoTnIsMTQsRHQoaW8sJDAsam8udikpOnMwKE5yLDE1LFJ0KGlvLCQwLHkxKGpvKS5zbGljZSgwLDIzOSkpKSl9cmV0dXJuIHMwKE5yLDEpLE5yLmVuZCgp''@;'; put 'put ''fSxib29rX3RvX3drMzpmdW5jdGlvbiB4ZShZcixFaSl7dmFyIGhpPUVpfHx7fTtpZigraGkuY29kZXBhZ2U+PTAmJnRlKCtoaS5jb2RlcGFnZSksInN0cmluZyI9PWhpLnR5cGUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgd3JpdGUgV0szIHRvIEpTIHN0cmluZyIpO3ZhciBOcj1KMigpO3Mw''@;'; put 'put ''KE5yLDAsZnVuY3Rpb24gWmUoWXIpe3ZhciBFaT1SaSgyNik7RWkud3JpdGVfc2hpZnQoMiw0MDk2KSxFaS53cml0ZV9zaGlmdCgyLDQpLEVpLndyaXRlX3NoaWZ0KDQsMCk7Zm9yKHZhciBoaT0wLE5yPTAsa2k9MCxOMD0wO04wPFlyLlNoZWV0TmFtZXMubGVuZ3RoOysrTjApe3ZhciBpbz1Z''@;'; put 'put ''ci5TaGVldHNbWXIuU2hlZXROYW1lc1tOMF1dO2lmKGlvJiZpb1siIXJlZiJdKXsrK2tpO3ZhciBvYT1Bcyhpb1siIXJlZiJdKTtoaTxvYS5lLnImJihoaT1vYS5lLnIpLE5yPG9hLmUuYyYmKE5yPW9hLmUuYyl9fXJldHVybiBFaS53cml0ZV9zaGlmdCgyLGhpKSxFaS53cml0ZV9zaGlmdCgx''@;'; put 'put ''LGtpKSxFaS53cml0ZV9zaGlmdCgxLE5yKSxFaS53cml0ZV9zaGlmdCgyLDApLEVpLndyaXRlX3NoaWZ0KDIsMCksRWkud3JpdGVfc2hpZnQoMSwxKSxFaS53cml0ZV9zaGlmdCgxLDIpLEVpLndyaXRlX3NoaWZ0KDQsMCksRWkud3JpdGVfc2hpZnQoNCwwKSxFaX0oWXIpKTtmb3IodmFyIGtp''@;'; put 'put ''PTAsTjA9MDtraTxZci5TaGVldE5hbWVzLmxlbmd0aDsrK2tpKShZci5TaGVldHNbWXIuU2hlZXROYW1lc1traV1dfHx7fSlbIiFyZWYiXSYmczAoTnIsMjcsdG8oWXIuU2hlZXROYW1lc1traV0sTjArKykpO3ZhciB0MD0wO2ZvcihraT0wO2tpPFlyLlNoZWV0TmFtZXMubGVuZ3RoOysra2kp''@;'; put 'put ''e3ZhciBpbz1Zci5TaGVldHNbWXIuU2hlZXROYW1lc1traV1dO2lmKGlvJiZpb1siIXJlZiJdKXtmb3IodmFyIG9hPUZvKGlvWyIhcmVmIl0pLCQwPUFycmF5LmlzQXJyYXkoaW8pLFZhPVtdLGpvPW9hLnMucjtqbzw9b2EuZS5yOysram8pZm9yKHZhciB3YT1YYShqbyksYW89b2Eucy5jO2Fv''@;'; put 'put ''PD1vYS5lLmM7Kythbyl7am89PT1vYS5zLnImJihWYVthb109X2EoYW8pKTt2YXIgaDA9JDA/KGlvW2pvXXx8W10pW2FvXTppb1tWYVthb10rd2FdO2gwJiYieiIhPWgwLnQmJigibiI9PWgwLnQ/czAoTnIsMjMscXIoam8sYW8sdDAsaDAudikpOnMwKE5yLDIyLGFyKGpvLGFvLHQwLHkxKGgw''@;'; put 'put ''KS5zbGljZSgwLDIzOSkpKSl9Kyt0MH19cmV0dXJuIHMwKE5yLDEpLE5yLmVuZCgpfSx0b193b3JrYm9vazpmdW5jdGlvbiBpZShZcixFaSl7c3dpdGNoKEVpLnR5cGUpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gWCh6KFNlLmRlY29kZShZcikpLEVpKTtjYXNlImJpbmFyeSI6cmV0dXJuIFgoeihZ''@;'; put 'put ''ciksRWkpO2Nhc2UiYnVmZmVyIjpjYXNlImFycmF5IjpyZXR1cm4gWChZcixFaSl9dGhyb3ciVW5zdXBwb3J0ZWQgdHlwZSAiK0VpLnR5cGV9fX0oKSxXOD1mdW5jdGlvbigpe3ZhciBIPVFpKCJ0IiksaWU9UWkoInJQciIpO2Z1bmN0aW9uIFgoRmUpe3ZhciBaZT1GZS5tYXRjaChIKTtpZigh''@;'; put 'put ''WmUpcmV0dXJue3Q6InMiLHY6IiJ9O3ZhciBqZT17dDoicyIsdjpncihaZVsxXSl9LFllPUZlLm1hdGNoKGllKTtyZXR1cm4gWWUmJihqZS5zPWZ1bmN0aW9uIEVoKEgpe3ZhciBpZT17fSxYPUgubWF0Y2goR3QpLHdlPTAseGU9ITE7aWYoWClmb3IoO3dlIT1YLmxlbmd0aDsrK3dlKXt2YXIg''@;'; put 'put ''RmU9ZW4oWFt3ZV0pO3N3aXRjaChGZVswXS5yZXBsYWNlKC9cdyo6L2csIiIpKXtjYXNlIjxjb25kZW5zZSI6Y2FzZSI8ZXh0ZW5kIjpicmVhaztjYXNlIjxzaGFkb3ciOmlmKCFGZS52YWwpYnJlYWs7Y2FzZSI8c2hhZG93PiI6Y2FzZSI8c2hhZG93Lz4iOmllLnNoYWRvdz0xO2JyZWFrO2Nh''@;'; put 'put ''c2UiPC9zaGFkb3c+IjpicmVhaztjYXNlIjxjaGFyc2V0IjppZigiMSI9PUZlLnZhbClicmVhaztpZS5jcD1ZW3BhcnNlSW50KEZlLnZhbCwxMCldO2JyZWFrO2Nhc2UiPG91dGxpbmUiOmlmKCFGZS52YWwpYnJlYWs7Y2FzZSI8b3V0bGluZT4iOmNhc2UiPG91dGxpbmUvPiI6aWUub3V0bGlu''@;'; put 'put ''ZT0xO2JyZWFrO2Nhc2UiPC9vdXRsaW5lPiI6YnJlYWs7Y2FzZSI8ckZvbnQiOmllLm5hbWU9RmUudmFsO2JyZWFrO2Nhc2UiPHN6IjppZS5zej1GZS52YWw7YnJlYWs7Y2FzZSI8c3RyaWtlIjppZighRmUudmFsKWJyZWFrO2Nhc2UiPHN0cmlrZT4iOmNhc2UiPHN0cmlrZS8+IjppZS5zdHJp''@;'; put 'put ''a2U9MTticmVhaztjYXNlIjwvc3RyaWtlPiI6YnJlYWs7Y2FzZSI8dSI6aWYoIUZlLnZhbClicmVhaztzd2l0Y2goRmUudmFsKXtjYXNlImRvdWJsZSI6aWUudW5kZXJsaW5lPTI7YnJlYWs7Y2FzZSJzaW5nbGVBY2NvdW50aW5nIjppZS51bmRlcmxpbmU9MzM7YnJlYWs7Y2FzZSJkb3VibGVB''@;'; put 'put ''Y2NvdW50aW5nIjppZS51bmRlcmxpbmU9MzR9Y2FzZSI8dT4iOmNhc2UiPHUvPiI6aWUudW5kZXJsaW5lfHwoaWUudW5kZXJsaW5lPTEpO2JyZWFrO2Nhc2UiPC91PiI6YnJlYWs7Y2FzZSI8YiI6aWYoIjAiPT1GZS52YWwpYnJlYWs7Y2FzZSI8Yj4iOmNhc2UiPGIvPiI6aWUuYm9sZD0xO2Jy''@;'; put 'put ''ZWFrO2Nhc2UiPC9iPiI6YnJlYWs7Y2FzZSI8aSI6aWYoIjAiPT1GZS52YWwpYnJlYWs7Y2FzZSI8aT4iOmNhc2UiPGkvPiI6aWUuaXRhbGljPTE7YnJlYWs7Y2FzZSI8L2k+IjpicmVhaztjYXNlIjxjb2xvciI6RmUucmdiJiYoaWUuY29sb3I9e3JnYjo4PT1GZS5yZ2IubGVuZ3RoP0ZlLnJn''@;'; put 'put ''Yi5zbGljZSgyLDgpOigiMDAwMDAwIitGZS5yZ2IpLnNsaWNlKC02KX0pO2JyZWFrO2Nhc2UiPGZhbWlseSI6aWUuZmFtaWx5PUZlLnZhbDticmVhaztjYXNlIjx2ZXJ0QWxpZ24iOiJub25lIiE9KEZlLnZhbHx8Im5vbmUiKSYmKGllLnZhbGlnbj1GZS52YWwucmVwbGFjZSgic2NyaXB0Iiwi''@;'; put 'put ''IikpO2JyZWFrO2Nhc2UiPHNjaGVtZSI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8ZXh0Ijp4ZT0hMDticmVhaztjYXNlIjwvZXh0PiI6eGU9ITE7YnJlYWs7ZGVmYXVsdDppZig0NyE9PUZlWzBdLmNoYXJDb2RlQXQoMSkmJiF4ZSl0''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCByaWNoIGZvcm1hdCAiK0ZlWzBdKX19cmV0dXJuIGllfShZZVsxXSkpLGplfXZhciB3ZT0vPCg/Olx3KzopP3I+L2cseGU9LzxcLyg/Olx3KzopP3I+LztyZXR1cm4gZnVuY3Rpb24oWmUpe3JldHVybiBaZS5yZXBsYWNlKHdlLCIiKS5zcGxp''@;'; put 'put ''dCh4ZSkubWFwKFgpLmZpbHRlcihmdW5jdGlvbihqZSl7cmV0dXJuIGplLnZ9KX19KCksTzQ9ezE6InNpbmdsZSIsMjoiZG91YmxlIiwzMzoic2luZ2xlLWFjY291bnRpbmciLDM0OiJkb3VibGUtYWNjb3VudGluZyJ9LGhtPWZ1bmN0aW9uKCl7dmFyIGllPS8oXHJcbnxcbikvZztmdW5jdGlv''@;'; put 'put ''biB3ZSh4ZSl7dmFyIEZlPVtbXSx4ZS52LFtdXTtyZXR1cm4geGUudj8oeGUucyYmZnVuY3Rpb24gWCh4ZSxGZSxaZSl7dmFyIGplPVtdO3hlLnVuZGVybGluZSYmamUucHVzaCgidGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IikseGUudW5kZXJsaW5lPjEmJmplLnB1c2goInRleHQtdW5k''@;'; put 'put ''ZXJsaW5lLXN0eWxlOiIrTzRbeGUudW5kZXJsaW5lXSsiOyIpLHhlLnN6JiZqZS5wdXNoKCJmb250LXNpemU6Iit4ZS5zeisicHQ7IikseGUub3V0bGluZSYmamUucHVzaCgidGV4dC1lZmZlY3Q6IG91dGxpbmU7IikseGUuc2hhZG93JiZqZS5wdXNoKCJ0ZXh0LXNoYWRvdzogYXV0bzsiKSx4''@;'; put 'put ''ZS5jb2xvciYmeGUuY29sb3IucmdiJiZqZS5wdXNoKCJjb2xvcjogIyIrTG8oeGUuY29sb3IucmdiKSsiOyIpLEZlLnB1c2goJzxzcGFuIHN0eWxlPSInK2plLmpvaW4oIiIpKyciPicpLHhlLmJvbGQmJihGZS5wdXNoKCI8Yj4iKSxaZS5wdXNoKCI8L2I+IikpLHhlLml0YWxpYyYmKEZlLnB1''@;'; put 'put ''c2goIjxpPiIpLFplLnB1c2goIjwvaT4iKSkseGUuc3RyaWtlJiYoRmUucHVzaCgiPHM+IiksWmUucHVzaCgiPC9zPiIpKTt2YXIgWWU9eGUudmFsaWdufHwiIjsic3VwZXJzY3JpcHQiPT1ZZXx8InN1cGVyIj09WWU/WWU9InN1cCI6InN1YnNjcmlwdCI9PVllJiYoWWU9InN1YiIpLCIiIT1Z''@;'; put 'put ''ZSYmKEZlLnB1c2goIjwiK1llKyI+IiksWmUucHVzaCgiPC8iK1llKyI+IikpLFplLnB1c2goIjwvc3Bhbj4iKX0oeGUucyxGZVswXSxGZVsyXSksRmVbMF0uam9pbigiIikrRmVbMV0ucmVwbGFjZShpZSwiPGJyLz4iKStGZVsyXS5qb2luKCIiKSk6IiJ9cmV0dXJuIGZ1bmN0aW9uKEZlKXty''@;'; put 'put ''ZXR1cm4gRmUubWFwKHdlKS5qb2luKCIiKX19KCk7ZnVuY3Rpb24gdTYoSCl7cmV0dXJuIEgubWFwKGZ1bmN0aW9uKFgpe3JldHVybiBmdW5jdGlvbiBtYShIKXt2YXIgaWU9IiIsWD1bXTtyZXR1cm4gSC5zJiYoSC5zLmJvbGQmJlgucHVzaCgiPGIvPiIpLEgucy5pdGFsaWMmJlgucHVzaCgi''@;'; put 'put ''PGkvPiIpLEgucy5zdHJpa2UmJlgucHVzaCgiPHN0cmlrZS8+IiksSC5zLnVuZGVybGluZSYmWC5wdXNoKCc8dSB2YWw9IicrKE85W0gucy51bmRlcmxpbmVdfHwic2luZ2xlIikrJyIvPicpLEgucy5jb2xvciYmWC5wdXNoKFhzKEgucy5jb2xvcikpLEgucy5zeiYmWC5wdXNoKCc8c3ogdmFs''@;'; put 'put ''PSInK0gucy5zeisnIi8+JyksSC5zLm5hbWUmJlgucHVzaCgnPHJGb250IHZhbD0iJytILnMubmFtZSsnIi8+JyksKCJzdXBlciI9PUgucy52YWxpZ258fCJzdWIiPT1ILnMudmFsaWduKSYmWC5wdXNoKCc8dmVydEFsaWduIHZhbD0iJytILnMudmFsaWduKydzY3JpcHQiLz4nKSksWC5sZW5n''@;'; put 'put ''dGgmJihpZSs9IjxyUHI+IitYLmpvaW4oIiIpKyI8L3JQcj4iKSwiPHI+IisoaWUrPV9pKCJ0IixScihILnYpLG51bGwpKSsiPC9yPiJ9KFgpfSkuam9pbigiIil9dmFyIGhsPS88KD86XHcrOik/dFtePl0qPihbXjxdKik8XC8oPzpcdys6KT90Pi9nLFVmPS88KD86XHcrOik/clxiW14+XSo+''@;'; put 'put ''LyxkMj0vPCg/Olx3KzopP3JQaC4qPz4oW1xzXFNdKj8pPFwvKD86XHcrOik/clBoPi9nO2Z1bmN0aW9uICR1KEgsaWUpe3ZhciBYPSFpZXx8aWUuY2VsbEhUTUwsd2U9e307cmV0dXJuIEg/KEgubWF0Y2goL15ccyo8KD86XHcrOik/dFtePl0qPi8pPyh3ZS50PWdyKFcwKEguc2xpY2UoSC5p''@;'; put 'put ''bmRleE9mKCI+IikrMSkuc3BsaXQoLzxcLyg/Olx3KzopP3Q+LylbMF18fCIiKSksd2Uucj1XMChIKSxYJiYod2UuaD1uMCh3ZS50KSkpOkgubWF0Y2goVWYpJiYod2Uucj1XMChIKSx3ZS50PWdyKFcwKChILnJlcGxhY2UoZDIsIiIpLm1hdGNoKGhsKXx8W10pLmpvaW4oIiIpLnJlcGxhY2Uo''@;'; put 'put ''R3QsIiIpKSksd2UuUj1XOCh3ZS5yKSxYJiYod2UuaD1obSh3ZS5SKSkpLHdlKTp7dDoiIn19dmFyIGthPS88KD86XHcrOik/c3N0KFtePl0qKT4oW1xzXFNdKik8XC8oPzpcdys6KT9zc3Q+Lyx5Mz0vPCg/Olx3KzopPyg/OnNpfHNzdEl0ZW0pPi9nLFFmPS88XC8oPzpcdys6KT8oPzpzaXxz''@;'; put 'put ''c3RJdGVtKT4vO2R0LlNTVD0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9zaGFyZWRTdHJpbmdzIjt2YXIgZG09L15cc3xccyR8W1x0XG5ccl0vO2Z1bmN0aW9uIHRFKEgsaWUpe2lmKCFpZS5ib29rU1NUKXJldHVy''@;'; put 'put ''biIiO3ZhciBYPVtjbl07WFtYLmxlbmd0aF09X2koInNzdCIsbnVsbCx7eG1sbnM6WDAubWFpblswXSxjb3VudDpILkNvdW50LHVuaXF1ZUNvdW50OkguVW5pcXVlfSk7Zm9yKHZhciB3ZT0wO3dlIT1ILmxlbmd0aDsrK3dlKWlmKG51bGwhPUhbd2VdKXt2YXIgeGU9SFt3ZV0sRmU9IjxzaT4i''@;'; put 'put ''O3hlLnI/RmUrPXhlLnI6KEZlKz0iPHQiLHhlLnR8fCh4ZS50PSIiKSx4ZS50Lm1hdGNoKGRtKSYmKEZlKz0nIHhtbDpzcGFjZT0icHJlc2VydmUiJyksRmUrPSI+IitScih4ZS50KSsiPC90PiIpLFhbWC5sZW5ndGhdPUZlKz0iPC9zaT4ifXJldHVybiBYLmxlbmd0aD4yJiYoWFtYLmxlbmd0''@;'; put 'put ''aF09Ijwvc3N0PiIsWFsxXT1YWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSxYLmpvaW4oIiIpfXZhciBMUj1mdW5jdGlvbiB6ZyhILGllLFgpe3ZhciB3ZT0xMys0KkgudC5sZW5ndGgseGU9SC5SJiZILlIubGVuZ3RofHxILnI7SC5yJiYoSC5SPVc4KEgucikpLHhlJiYod2UrPTQrNCpILlIubGVu''@;'; put 'put ''Z3RoKTt2YXIgRmU9ITE7aWYobnVsbD09WCYmKEZlPSEwLFg9Umkod2UpKSxYLndyaXRlX3NoaWZ0KDEseGU/MTowKSxsdShILnQsWCkseGUpe1gud3JpdGVfc2hpZnQoNCxILlIubGVuZ3RoKTtmb3IodmFyIFplPTAsamU9MDtqZTxILlIubGVuZ3RoOysramUpe3ZhciBZZT1ILlJbamVdO1gu''@;'; put 'put ''d3JpdGVfc2hpZnQoMixaZSksWmUrPShZZS52fHwiIikubGVuZ3RoO3ZhciBNdD1ZZS5zP1kxKGllLmNlbGxYZnMsaWUuY2VsbFN0eWxlWGZzLHt0OiJuIix2OjAsczpZZS5zfSxpZSk6MDtYLndyaXRlX3NoaWZ0KDIsaWUuY2VsbFhmc1tNdF0uZm9udElkKX19cmV0dXJuIEZlP1guc2xpY2Uo''@;'; put 'put ''MCxYLmwpOlh9O2Z1bmN0aW9uIE9SKEgsaWUpe3ZhciBYPUoyKCk7QzAoWCwiQnJ0QmVnaW5Tc3QiLGZ1bmN0aW9uIHJFKEgsaWUpe3JldHVybiBpZXx8KGllPVJpKDgpKSxpZS53cml0ZV9zaGlmdCg0LEguQ291bnQpLGllLndyaXRlX3NoaWZ0KDQsSC5VbmlxdWUpLGllfShIKSk7Zm9yKHZh''@;'; put 'put ''ciB3ZT0wO3dlPEgubGVuZ3RoOysrd2UpQzAoWCwiQnJ0U1NUSXRlbSIsTFIoSFt3ZV0saWUpKTtyZXR1cm4gQzAoWCwiQnJ0RW5kU3N0IiksWC5lbmQoKX1mdW5jdGlvbiBpRShIKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGNwdGFibGUpcmV0dXJuIGNwdGFibGUudXRpbHMuZW5jb2RlKGos''@;'; put 'put ''SCk7Zm9yKHZhciBpZT1bXSxYPUguc3BsaXQoIiIpLHdlPTA7d2U8WC5sZW5ndGg7Kyt3ZSlpZVt3ZV09WFt3ZV0uY2hhckNvZGVBdCgwKTtyZXR1cm4gaWV9ZnVuY3Rpb24gdmYoSCxpZSl7dmFyIFg9e307cmV0dXJuIFguTWFqb3I9SC5yZWFkX3NoaWZ0KDIpLFguTWlub3I9SC5yZWFkX3No''@;'; put 'put ''aWZ0KDIpLGllPj00JiYoSC5sKz1pZS00KSxYfWZ1bmN0aW9uIHczKEgpe2Zvcih2YXIgaWU9SC5yZWFkX3NoaWZ0KDQpLFg9SC5sK2llLTQsd2U9e30seGU9SC5yZWFkX3NoaWZ0KDQpLEZlPVtdO3hlLS0gPjA7KUZlLnB1c2goe3Q6SC5yZWFkX3NoaWZ0KDQpLHY6SC5yZWFkX3NoaWZ0KDAs''@;'; put 'put ''ImxwcDQiKX0pO2lmKHdlLm5hbWU9SC5yZWFkX3NoaWZ0KDAsImxwcDQiKSx3ZS5jb21wcz1GZSxILmwhPVgpdGhyb3cgbmV3IEVycm9yKCJCYWQgRGF0YVNwYWNlTWFwRW50cnk6ICIrSC5sKyIgIT0gIitYKTtyZXR1cm4gd2V9ZnVuY3Rpb24gUlIoSCxpZSl7dmFyIFg9SC5sK2llLHdlPXt9''@;'; put 'put ''O3dlLkZsYWdzPTYzJkgucmVhZF9zaGlmdCg0KSxILmwrPTQsd2UuQWxnSUQ9SC5yZWFkX3NoaWZ0KDQpO3ZhciB4ZT0hMTtzd2l0Y2god2UuQWxnSUQpe2Nhc2UgMjYxMjY6Y2FzZSAyNjEyNzpjYXNlIDI2MTI4OnhlPTM2PT13ZS5GbGFnczticmVhaztjYXNlIDI2NjI1OnhlPTQ9PSg1MiZ3''@;'; put 'put ''ZS5GbGFncyk7YnJlYWs7Y2FzZSAwOnhlPTE2PT13ZS5GbGFnc3x8ND09d2UuRmxhZ3N8fDM2PT13ZS5GbGFnczticmVhaztkZWZhdWx0OnRocm93IlVucmVjb2duaXplZCBlbmNyeXB0aW9uIGFsZ29yaXRobTogIit3ZS5BbGdJRH1pZigheGUpdGhyb3cgbmV3IEVycm9yKCJFbmNyeXB0aW9u''@;'; put 'put ''IEZsYWdzL0FsZ0lEIG1pc21hdGNoIik7cmV0dXJuIHdlLkFsZ0lESGFzaD1ILnJlYWRfc2hpZnQoNCksd2UuS2V5U2l6ZT1ILnJlYWRfc2hpZnQoNCksd2UuUHJvdmlkZXJUeXBlPUgucmVhZF9zaGlmdCg0KSxILmwrPTgsd2UuQ1NQTmFtZT1ILnJlYWRfc2hpZnQoWC1ILmw+PjEsInV0ZjE2''@;'; put 'put ''bGUiKSxILmw9WCx3ZX1mdW5jdGlvbiBCUihILGllKXt2YXIgWD17fSx3ZT1ILmwraWU7cmV0dXJuIEgubCs9NCxYLlNhbHQ9SC5zbGljZShILmwsSC5sKzE2KSxILmwrPTE2LFguVmVyaWZpZXI9SC5zbGljZShILmwsSC5sKzE2KSxILmwrPTE2LEgucmVhZF9zaGlmdCg0KSxYLlZlcmlmaWVy''@;'; put 'put ''SGFzaD1ILnNsaWNlKEgubCx3ZSksSC5sPXdlLFh9ZnVuY3Rpb24geWIoSCl7aWYoMzYhPSg2MyZILnJlYWRfc2hpZnQoNCkpKXRocm93IG5ldyBFcnJvcigiRW5jcnlwdGlvbkluZm8gbWlzbWF0Y2giKTt2YXIgWD1ILnJlYWRfc2hpZnQoNCk7cmV0dXJue3Q6IlN0ZCIsaDpSUihILFgpLHY6''@;'; put 'put ''QlIoSCxILmxlbmd0aC1ILmwpfX1mdW5jdGlvbiB3Yigpe3Rocm93IG5ldyBFcnJvcigiRmlsZSBpcyBwYXNzd29yZC1wcm90ZWN0ZWQ6IEVDTUEtMzc2IEV4dGVuc2libGUiKX1mdW5jdGlvbiBiYihIKXt2YXIgaWU9WyJzYWx0U2l6ZSIsImJsb2NrU2l6ZSIsImtleUJpdHMiLCJoYXNoU2l6''@;'; put 'put ''ZSIsImNpcGhlckFsZ29yaXRobSIsImNpcGhlckNoYWluaW5nIiwiaGFzaEFsZ29yaXRobSIsInNhbHRWYWx1ZSJdO0gubCs9NDt2YXIgWD1ILnJlYWRfc2hpZnQoSC5sZW5ndGgtSC5sLCJ1dGY4Iiksd2U9e307cmV0dXJuIFgucmVwbGFjZShHdCxmdW5jdGlvbihGZSl7dmFyIFplPWVuKEZl''@;'; put 'put ''KTtzd2l0Y2goSW4oWmVbMF0pKXtjYXNlIjw/eG1sIjpjYXNlIjxlbmNyeXB0aW9uIjpjYXNlIjwvZW5jcnlwdGlvbj4iOmNhc2UiPC9rZXlFbmNyeXB0b3JzPiI6Y2FzZSI8L2tleUVuY3J5cHRvcj4iOmJyZWFrO2Nhc2UiPGtleURhdGEiOmllLmZvckVhY2goZnVuY3Rpb24oamUpe3dlW2pl''@;'; put 'put ''XT1aZVtqZV19KTticmVhaztjYXNlIjxkYXRhSW50ZWdyaXR5Ijp3ZS5lbmNyeXB0ZWRIbWFjS2V5PVplLmVuY3J5cHRlZEhtYWNLZXksd2UuZW5jcnlwdGVkSG1hY1ZhbHVlPVplLmVuY3J5cHRlZEhtYWNWYWx1ZTticmVhaztjYXNlIjxrZXlFbmNyeXB0b3JzPiI6Y2FzZSI8a2V5RW5jcnlw''@;'; put 'put ''dG9ycyI6d2UuZW5jcz1bXTticmVhaztjYXNlIjxrZXlFbmNyeXB0b3IiOndlLnVyaT1aZS51cmk7YnJlYWs7Y2FzZSI8ZW5jcnlwdGVkS2V5Ijp3ZS5lbmNzLnB1c2goWmUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgWmVbMF19fSksd2V9ZnVuY3Rpb24gTTkoSCl7dmFyIFgsRmUsaWU9MCx3ZT1p''@;'; put 'put ''RShIKSx4ZT13ZS5sZW5ndGgrMTtmb3IoKFg9aGUoeGUpKVswXT13ZS5sZW5ndGgsRmU9MTtGZSE9eGU7KytGZSlYW0ZlXT13ZVtGZS0xXTtmb3IoRmU9eGUtMTtGZT49MDstLUZlKWllPSgoMD09KDE2Mzg0JmllKT8wOjEpfGllPDwxJjMyNzY3KV5YW0ZlXTtyZXR1cm4gNTI4MTFeaWV9dmFy''@;'; put 'put ''IEU5PWZ1bmN0aW9uKCl7dmFyIEg9WzE4NywyNTUsMjU1LDE4NiwyNTUsMjU1LDE4NSwxMjgsMCwxOTAsMTUsMCwxOTEsMTUsMF0saWU9WzU3ODQwLDc0MzksNTIzODAsMzM5ODQsNDM2NCwzNjAwLDYxOTAyLDEyNjA2LDYyNTgsNTc2NTcsNTQyODcsMzQwNDEsMTAyNTIsNDMzNzAsMjAxNjNd''@;'; put 'put ''LFg9WzQ0Nzk2LDE5OTI5LDM5ODU4LDEwMDUzLDIwMTA2LDQwMjEyLDEwNzYxLDMxNTg1LDYzMTcwLDY0OTMzLDYwMjY3LDUwOTM1LDQwMzk5LDExMTk5LDE3NzYzLDM1NTI2LDE0NTMsMjkwNiw1ODEyLDExNjI0LDIzMjQ4LDg4NSwxNzcwLDM1NDAsNzA4MCwxNDE2MCwyODMyMCw1NjY0MCw1''@;'; put 'put ''NTM2OSw0MTEzOSwyMDgwNyw0MTYxNCwyMTgyMSw0MzY0MiwxNzYyMSwyODQ4NSw1Njk3MCw0NDM0MSwxOTAxOSwzODAzOCwxNDYwNSwyOTIxMCw2MDE5NSw1MDc5MSw0MDE3NSwxMDc1MSwyMTUwMiw0MzAwNCwyNDUzNywxODM4NywzNjc3NCwzOTQ5LDc4OTgsMTU3OTYsMzE1OTIsNjMxODQs''@;'; put 'put ''NDcyMDEsMjQ4MDMsNDk2MDYsMzc4MDUsMTQyMDMsMjg0MDYsNTY4MTIsMTc4MjQsMzU2NDgsMTY5NywzMzk0LDY3ODgsMTM1NzYsMjcxNTIsNDM2MDEsMTc1MzksMzUwNzgsNTU3LDExMTQsMjIyOCw0NDU2LDMwMzg4LDYwNzc2LDUxOTUzLDM0MjQzLDcwNzksMTQxNTgsMjgzMTYsMTQxMjgs''@;'; put 'put ''MjgyNTYsNTY1MTIsNDM0MjUsMTcyNTEsMzQ1MDIsNzU5NywxMzEwNSwyNjIxMCw1MjQyMCwzNTI0MSw4ODMsMTc2NiwzNTMyLDQxMjksODI1OCwxNjUxNiwzMzAzMiw0NjU3LDkzMTQsMTg2MjhdLHhlPWZ1bmN0aW9uKFplLGplKXtyZXR1cm4gZnVuY3Rpb24oWmUpe3JldHVybiAyNTUmKFpl''@;'; put 'put ''Pj4xfFplPDw3KX0oWmVeamUpfTtyZXR1cm4gZnVuY3Rpb24oamUpe2Zvcih2YXIgWWU9aUUoamUpLE10PWZ1bmN0aW9uKFplKXtmb3IodmFyIGplPWllW1plLmxlbmd0aC0xXSxZZT0xMDQsTXQ9WmUubGVuZ3RoLTE7TXQ+PTA7LS1NdClmb3IodmFyIHh0PVplW010XSxSdD0wOzchPVJ0Oysr''@;'; put 'put ''UnQpNjQmeHQmJihqZV49WFtZZV0pLHh0Kj0yLC0tWWU7cmV0dXJuIGplfShZZSkseHQ9WWUubGVuZ3RoLFJ0PWhlKDE2KSxVdD0wOzE2IT1VdDsrK1V0KVJ0W1V0XT0wO3ZhciBEdDtmb3IoMT09KDEmeHQpJiYoUnRbeHRdPXhlKEhbMF0sTXQ+PjgpLFJ0Wy0teHRdPXhlKFllW1llLmxlbmd0''@;'; put 'put ''aC0xXSwyNTUmTXQpKTt4dD4wOylSdFstLXh0XT14ZShZZVt4dF0sTXQ+PjgpLFJ0Wy0teHRdPXhlKFllW3h0XSwyNTUmTXQpO2Zvcih4dD0xNSxEdD0xNS1ZZS5sZW5ndGg7RHQ+MDspUnRbeHRdPXhlKEhbRHRdLE10Pj44KSwtLUR0LFJ0Wy0teHRdPXhlKFllW3h0XSwyNTUmTXQpLC0teHQs''@;'; put 'put ''LS1EdDtyZXR1cm4gUnR9fSgpO3ZhciB4OT1mdW5jdGlvbigpe2Z1bmN0aW9uIEgoeGUsRmUpe3N3aXRjaChGZS50eXBlKXtjYXNlImJhc2U2NCI6cmV0dXJuIGllKFNlLmRlY29kZSh4ZSksRmUpO2Nhc2UiYmluYXJ5IjpyZXR1cm4gaWUoeGUsRmUpO2Nhc2UiYnVmZmVyIjpyZXR1cm4gaWUo''@;'; put 'put ''eGUudG9TdHJpbmcoImJpbmFyeSIpLEZlKTtjYXNlImFycmF5IjpyZXR1cm4gaWUoeW4oeGUpLEZlKX10aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrRmUudHlwZSl9ZnVuY3Rpb24gaWUoeGUsRmUpe3ZhciBqZT0oRmV8fHt9KS5kZW5zZT9bXTp7fTtpZigheGUubWF0Y2go''@;'; put 'put ''L1xcdHJvd2QvKSl0aHJvdyBuZXcgRXJyb3IoIlJURiBtaXNzaW5nIHRhYmxlIik7cmV0dXJuIGplWyIhcmVmIl09ZmEoe3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fSksamV9cmV0dXJue3RvX3dvcmtib29rOmZ1bmN0aW9uIFgoeGUsRmUpe3JldHVybiB3MShIKHhlLEZlKSxGZSl9LHRvX3No''@;'; put 'put ''ZWV0OkgsZnJvbV9zaGVldDpmdW5jdGlvbiB3ZSh4ZSl7Zm9yKHZhciBqZSxGZT1bIntcXHJ0ZjFcXGFuc2kiXSxaZT1Gbyh4ZVsiIXJlZiJdKSxZZT1BcnJheS5pc0FycmF5KHhlKSxNdD1aZS5zLnI7TXQ8PVplLmUucjsrK010KXtGZS5wdXNoKCJcXHRyb3dkXFx0cmF1dG9maXQxIik7Zm9y''@;'; put 'put ''KHZhciB4dD1aZS5zLmM7eHQ8PVplLmUuYzsrK3h0KUZlLnB1c2goIlxcY2VsbHgiKyh4dCsxKSk7Zm9yKEZlLnB1c2goIlxccGFyZFxcaW50YmwiKSx4dD1aZS5zLmM7eHQ8PVplLmUuYzsrK3h0KXt2YXIgUnQ9WTAoe3I6TXQsYzp4dH0pOyhqZT1ZZT8oeGVbTXRdfHxbXSlbeHRdOnhlW1J0''@;'; put 'put ''XSkmJihudWxsIT1qZS52fHxqZS5mJiYhamUuRikmJihGZS5wdXNoKCIgIisoamUud3x8KHkxKGplKSxqZS53KSkpLEZlLnB1c2goIlxcY2VsbCIpKX1GZS5wdXNoKCJcXHBhcmRcXGludGJsXFxyb3ciKX1yZXR1cm4gRmUuam9pbigiIikrIn0ifX19KCk7ZnVuY3Rpb24gWTgoSCl7dmFyIGll''@;'; put 'put ''PUguc2xpY2UoIiMiPT09SFswXT8xOjApLnNsaWNlKDAsNik7cmV0dXJuW3BhcnNlSW50KGllLnNsaWNlKDAsMiksMTYpLHBhcnNlSW50KGllLnNsaWNlKDIsNCksMTYpLHBhcnNlSW50KGllLnNsaWNlKDQsNiksMTYpXX1mdW5jdGlvbiBiMyhIKXtmb3IodmFyIGllPTAsWD0xOzMhPWllOysr''@;'; put 'put ''aWUpWD0yNTYqWCsoSFtpZV0+MjU1PzI1NTpIW2llXTwwPzA6SFtpZV0pO3JldHVybiBYLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpLnNsaWNlKDEpfWZ1bmN0aW9uIF8zKEgsaWUpe2lmKG51bGw9PUgpcmV0dXJuIG51bGwhPWllO2lmKG51bGw9PWllKXJldHVybiEwO2lmKDE9PUguYXV0''@;'; put 'put ''byYmMT09aWUuYXV0bylyZXR1cm4hMTtpZighIUguYXV0byE9ISFpZS5hdXRvfHxudWxsPT1ILnRoZW1lIT0obnVsbD09aWUudGhlbWUpKXJldHVybiEwO2lmKG51bGwhPUgudGhlbWUpcmV0dXJuIEgudGhlbWUhPWllLnRoZW1lfHxILnRpbnQhPWllLnRpbnQ7aWYobnVsbD09SC5yZ2ImJm51''@;'; put 'put ''bGw9PWllLnJnYilyZXR1cm4hMTt2YXIgWD1ILnJnYjsibnVtYmVyIj09dHlwZW9mIFgmJihYPVgudG9TdHJpbmcoMTYpKSxYPVguc2xpY2UoLTYpO3ZhciB3ZT1pZS5yZ2I7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB3ZSYmKHdlPXdlLnRvU3RyaW5nKDE2KSksd2U9d2Uuc2xpY2UoLTYpLFgu''@;'; put 'put ''dG9Mb3dlckNhc2UoKSE9d2UudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBUOShILGllKXtyZXR1cm4gbnVsbD09SD9udWxsIT1pZTpudWxsPT1pZT9udWxsIT1IOkguc3R5bGUhPWllLnN0eWxlfHxfMyhILmNvbG9yLGllLmNvbG9yKX1mdW5jdGlvbiBROChILGllKXtpZigwPT09aWUpcmV0dXJu''@;'; put 'put ''IEg7dmFyIFg9ZnVuY3Rpb24gYTIoSCl7dmFyIGllPUhbMF0vMjU1LFg9SFsxXS8yNTUsd2U9SFsyXS8yNTUseGU9TWF0aC5tYXgoaWUsWCx3ZSksRmU9TWF0aC5taW4oaWUsWCx3ZSksWmU9eGUtRmU7aWYoMD09PVplKXJldHVyblswLDAsaWVdO3ZhciBZZSxqZT0wLE10PXhlK0ZlO3N3aXRj''@;'; put 'put ''aChZZT1aZS8oTXQ+MT8yLU10Ok10KSx4ZSl7Y2FzZSBpZTpqZT0oKFgtd2UpL1plKzYpJTY7YnJlYWs7Y2FzZSBYOmplPSh3ZS1pZSkvWmUrMjticmVhaztjYXNlIHdlOmplPShpZS1YKS9aZSs0fXJldHVybltqZS82LFllLE10LzJdfShZOChIKSk7cmV0dXJuIFhbMl09aWU8MD9YWzJdKigx''@;'; put 'put ''K2llKToxLSgxLVhbMl0pKigxLWllKSxiMyhmdW5jdGlvbiBVOChIKXt2YXIgWWUsWD1IWzFdLHdlPUhbMl0seGU9MipYKih3ZTwuNT93ZToxLXdlKSxGZT13ZS14ZS8yLFplPVtGZSxGZSxGZV0samU9NipIWzBdO2lmKDAhPT1YKXN3aXRjaCgwfGplKXtjYXNlIDA6Y2FzZSA2OlllPXhlKmpl''@;'; put 'put ''LFplWzBdKz14ZSxaZVsxXSs9WWU7YnJlYWs7Y2FzZSAxOlplWzBdKz1ZZT14ZSooMi1qZSksWmVbMV0rPXhlO2JyZWFrO2Nhc2UgMjpZZT14ZSooamUtMiksWmVbMV0rPXhlLFplWzJdKz1ZZTticmVhaztjYXNlIDM6WmVbMV0rPVllPXhlKig0LWplKSxaZVsyXSs9eGU7YnJlYWs7Y2FzZSA0''@;'; put 'put ''OlllPXhlKihqZS00KSxaZVsyXSs9eGUsWmVbMF0rPVllO2JyZWFrO2Nhc2UgNTpaZVsyXSs9WWU9eGUqKDYtamUpLFplWzBdKz14ZX1mb3IodmFyIE10PTA7MyE9TXQ7KytNdClaZVtNdF09TWF0aC5yb3VuZCgyNTUqWmVbTXRdKTtyZXR1cm4gWmV9KFgpKX12YXIgSzI9NjtmdW5jdGlvbiBt''@;'; put 'put ''bShIKXtyZXR1cm4gTWF0aC5mbG9vcigoSCtNYXRoLnJvdW5kKDEyOC9LMikvMjU2KSpLMil9ZnVuY3Rpb24gSTkoSCl7cmV0dXJuIE1hdGguZmxvb3IoKEgtNSkvSzIqMTAwKy41KS8xMDB9ZnVuY3Rpb24gX2IoSCl7cmV0dXJuIE1hdGgucm91bmQoKEgqSzIrNSkvSzIqMjU2KS8yNTZ9ZnVu''@;'; put 'put ''Y3Rpb24geWMoSCl7SC5iZXN0Rml0JiZkZWxldGUgSC5iZXN0Rml0LEgud2lkdGg/KEgud3B4PW1tKEgud2lkdGgpLEgud2NoPUk5KEgud3B4KSxILk1EVz1LMik6SC53cHg/KEgud2NoPUk5KEgud3B4KSxILndpZHRoPV9iKEgud2NoKSxILk1EVz1LMik6Im51bWJlciI9PXR5cGVvZiBILndj''@;'; put 'put ''aCYmKEgud2lkdGg9X2IoSC53Y2gpLEgud3B4PW1tKEgud2lkdGgpLEguTURXPUsyKSxILmN1c3RvbVdpZHRoJiZkZWxldGUgSC5jdXN0b21XaWR0aH12YXIgUjQ9OTY7ZnVuY3Rpb24gVGgoSCl7cmV0dXJuIDcyKkgvUjR9ZnVuY3Rpb24gQWYoSCl7cmV0dXJuIEgqUjQvNzJ9ZnVuY3Rpb24g''@;'; put 'put ''QzMoSCl7UjQ9SD17b3N4OjcyLHdpbjo5Nix3aW4xMDA6OTYsd2luMTI1OjEyMCx3aW4xNTA6MTQ0fVtIXXx8SHx8OTYsQ2I9ZjZbSF19ZnVuY3Rpb24gSjgoSCl7SC5ocHg/SC5ocHQ9VGgoSC5ocHgpOkguaHB0JiYoSC5ocHg9QWYoSC5ocHQpKX12YXIgalI9e05vbmU6Im5vbmUiLFNvbGlk''@;'; put 'put ''OiJzb2xpZCIsR3JheTUwOiJtZWRpdW1HcmF5IixHcmF5NzU6ImRhcmtHcmF5IixHcmF5MjU6ImxpZ2h0R3JheSIsSG9yelN0cmlwZToiZGFya0hvcml6b250YWwiLFZlcnRTdHJpcGU6ImRhcmtWZXJ0aWNhbCIsUmV2ZXJzZURpYWdTdHJpcGU6ImRhcmtEb3duIixEaWFnU3RyaXBlOiJkYXJr''@;'; put 'put ''VXAiLERpYWdDcm9zczoiZGFya0dyaWQiLFRoaWNrRGlhZ0Nyb3NzOiJkYXJrVHJlbGxpcyIsVGhpbkhvcnpTdHJpcGU6ImxpZ2h0SG9yaXpvbnRhbCIsVGhpblZlcnRTdHJpcGU6ImxpZ2h0VmVydGljYWwiLFRoaW5SZXZlcnNlRGlhZ1N0cmlwZToibGlnaHREb3duIixUaGluSG9yekNyb3Nz''@;'; put 'put ''OiJsaWdodEdyaWQifSxoRT10dChqUiksRDk9e29yYW5nZToxNjc1MzkyMCxibGFjazowLG5hdnk6MTI4LGJsdWU6MjU1LGdyZWVuOjMyNzY4LHRlYWw6MzI4OTYsbGltZTo2NTI4MCxhcXVhOjY1NTM1LHNpbHZlcjoxMjYzMjI1NixtYXJvb246ODM4ODYwOCxwdXJwbGU6ODM4ODczNixvbGl2''@;'; put 'put ''ZTo4NDIxMzc2LGdyYXk6ODQyMTUwNCxyZWQ6MTY3MTE2ODAsZnVjaHNpYToxNjcxMTkzNSx5ZWxsb3c6MTY3NzY5NjAsd2hpdGU6MTY3NzcyMTV9O2Z1bmN0aW9uIFg4KEgsaWUpe2lmKEgucmVwbGFjZSgiIyIsIiIpLm1hdGNoKC9eWzAtOWEtZkEtRl17Nn0kLykpcmV0dXJuIHBhcnNlSW50''@;'; put 'put ''KEgucmVwbGFjZSgiIyIsIiIpLDE2KTtpZihEOVtIXSlyZXR1cm4gRDlbSF07dmFyIFg9SC5tYXRjaCgvcmdiXChccyooXGQqKVxzKixccyooXGQqKVxzKixccyooXGQqKVxzKlwpLyk7aWYoWClyZXR1cm4oK1hbMV08PDE2KSsoK1hbMl08PDgpKyArWFszXTtpZihYPUgubWF0Y2goL3JnYmFc''@;'; put 'put ''KFxzKihcZCopXHMqLFxzKihcZCopXHMqLFxzKihcZCopXHMqKFxkKikvKSlyZXR1cm4gMCE9KFhbNF0mJlhbNF0ubGVuZ3RoPjAmJitYWzRdfHwwKXx8K1hbMV0+MHx8K1hbMl0+MHx8K1hbM10+MD8oK1hbMV08PDE2KSsoK1hbMl08PDgpKyArWFszXTppZT8tMToxNjc3NzIxNTt0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIlVua25vd24gSFRNTCBjb2xvciAiK0gpfXZhciBmNj17fTtmdW5jdGlvbiBrMyhIKXtIPUh8fDk2O3ZhciBpZT17Q2FsaWJyaTpbXSxBcmlhbDpbXSwiU3Bhcmthc3NlIFJnIjpbXSxcdTViOGJcdTRmNTM6W10sXHU2ZTM4XHUzMGI0XHUzMGI3XHUzMGMzXHUzMGFmOltdLCJD''@;'; put 'put ''ZW50dXJ5IEdvdGhpYyI6W119O3JldHVybiBpZS5DYWxpYnJpWzExXT03LGllLkNhbGlicmlbMTJdPXs3Mjo2LDk2OjgsMTIwOjEwLDE0NDoxMn1bSF18fDgsaWUuQ2FsaWJyaVsxM109MTAsaWUuQ2FsaWJyaVsxNF09MTEsaWUuQ2FsaWJyaVsxNl09MTIsaWUuQ2FsaWJyaVsxOF09MTQsaWUu''@;'; put 'put ''Q2FsaWJyaVsyMF09MTYsaWUuXHU1YjhiXHU0ZjUzWzExXT04LGllLlx1NmUzOFx1MzBiNFx1MzBiN1x1MzBjM1x1MzBhZlsxMV09OCxpZVsiU3Bhcmthc3NlIFJnIl1bMTFdPTcsaWUuQXJpYWxbMTBdPTcsaWVbIkNlbnR1cnkgR290aGljIl1bMTJdPTksaWV9ZjZbNzJdPWszKDcyKSxmNls5''@;'; put 'put ''Nl09azMoOTYpLGY2WzEyMF09azMoMTIwKSxmNlsxNDRdPWszKDE0NCk7dmFyIENiPWY2Wzk2XTtmdW5jdGlvbiB2bShIKXtyZXR1cm4oQ2JbSC5uYW1lfHxILkZvbnROYW1lXXx8W10pW0guc3p8fEguU2l6ZV19ZnVuY3Rpb24gUzMoSCl7aWYoSCl7dmFyIGllPXZtKEgpO2lmKGllKXJldHVy''@;'; put 'put ''biBLMj1pZX1yZXR1cm4gSzI9Nn1mdW5jdGlvbiBoNihILGllLFgpe3JldHVybiBiMyhmdW5jdGlvbiBaUihILGllLFgpe3JldHVybltNYXRoLnJvdW5kKGllWzBdKlgrSFswXSooMS1YKSksTWF0aC5yb3VuZChpZVsxXSpYK0hbMV0qKDEtWCkpLE1hdGgucm91bmQoaWVbMl0qWCtIWzJdKigx''@;'; put 'put ''LVgpKV19KFk4KCJudW1iZXIiPT10eXBlb2YgSC5yZ2I/KCIwMDAwMCIrSC50b1N0cmluZygxNikpLnNsaWNlKC02KTpILnJnYiksWTgoIm51bWJlciI9PXR5cGVvZiBpZS5yZ2I/KCIwMDAwMCIraWUudG9TdHJpbmcoMTYpKS5zbGljZSgtNik6aWUucmdiKSxYKSl9ZnVuY3Rpb24gTTMoSCxp''@;'; put 'put ''ZSxYKXtpZihYKXN3aXRjaCgrSCl7Y2FzZSA2NDpIPTY1O2JyZWFrO2Nhc2UgNjU6SD02NH12YXIgd2U9aWUmJmllWytIXXx8dXVbK0hdfHxPTVsrSC0yMDBdO2lmKDgxPT0rSCYmKHdlPXV1WzFdKSx3ZXx8KHdlPXV1WzFdKSwhd2UpdGhyb3cgbmV3IEVycm9yKCJiYWQgSUNWIGluZGV4ICIr''@;'; put 'put ''SCk7cmV0dXJuIGIzKHdlKX1mdW5jdGlvbiBFMyhILGllLFgpe3ZhciB3ZT17fTtyZXR1cm4gbnVsbCE9SC5pbmRleGVkJiYod2UuaW5kZXg9cGFyc2VJbnQoSC5pbmRleGVkLDEwKSx3ZS5yZ2I9TTMod2UuaW5kZXgsaWUuSW5kZXhlZCkpLG51bGwhPUgudGhlbWUmJih3ZS50aGVtZT1wYXJz''@;'; put 'put ''ZUludChILnRoZW1lLDEwKSksbnVsbCE9SC50aW50JiYod2UudGludD1wYXJzZUZsb2F0KEgudGludCkpLG51bGwhPUgucmdiJiYod2UucmdiPUgucmdiLnNsaWNlKC02KSksbnVsbCE9d2UudGhlbWUmJiF3ZS5yZ2ImJlgudGhlbWVFbGVtZW50cyYmKHdlLnJnYj1ROChYLnRoZW1lRWxlbWVu''@;'; put 'put ''dHMuY2xyU2NoZW1lW3dlLnRoZW1lXS5yZ2Isd2UudGludHx8MCksd2UucmF3X3JnYj1YLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW3dlLnRoZW1lXS5yZ2IpLHdlfWZ1bmN0aW9uIGtiKEgsaWUsWCx3ZSl7aWUuQm9yZGVycz1bXTt2YXIgeGU9e30sRmU9e30sWmU9ITE7KEhbMF0ubWF0Y2go''@;'; put 'put ''R3QpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihqZSl7dmFyIFllPWVuKGplKTtzd2l0Y2goSW4oWWVbMF0pKXtjYXNlIjxib3JkZXJzIjpjYXNlIjxib3JkZXJzPiI6Y2FzZSI8L2JvcmRlcnM+IjpjYXNlIjwvYm9yZGVyPiI6Y2FzZSI8bGVmdC8+IjpjYXNlIjwvbGVmdD4iOmNhc2UiPHJpZ2h0''@;'; put 'put ''Lz4iOmNhc2UiPC9yaWdodD4iOmNhc2UiPHRvcC8+IjpjYXNlIjwvdG9wPiI6Y2FzZSI8Ym90dG9tLz4iOmNhc2UiPC9ib3R0b20+IjpjYXNlIjxkaWFnb25hbCI6Y2FzZSI8ZGlhZ29uYWw+IjpjYXNlIjxkaWFnb25hbC8+IjpjYXNlIjxob3Jpem9udGFsIjpjYXNlIjxob3Jpem9udGFsPiI6''@;'; put 'put ''Y2FzZSI8aG9yaXpvbnRhbC8+IjpjYXNlIjx2ZXJ0aWNhbCI6Y2FzZSI8dmVydGljYWw+IjpjYXNlIjx2ZXJ0aWNhbC8+IjpjYXNlIjxzdGFydCI6Y2FzZSI8c3RhcnQ+IjpjYXNlIjxzdGFydC8+IjpjYXNlIjwvc3RhcnQ+IjpjYXNlIjxlbmQiOmNhc2UiPGVuZD4iOmNhc2UiPGVuZC8+Ijpj''@;'; put 'put ''YXNlIjwvZW5kPiI6Y2FzZSI8Y29sb3IvPiI6Y2FzZSI8L2NvbG9yPiI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8Ym9yZGVyIjpjYXNlIjxib3JkZXI+IjpjYXNlIjxib3JkZXIvPiI6eGU9e30sWWUuZGlhZ29uYWxVcCYmKHhlLmRp''@;'; put 'put ''YWdvbmFsVXA9RGkoWWUuZGlhZ29uYWxVcCkpLFllLmRpYWdvbmFsRG93biYmKHhlLmRpYWdvbmFsRG93bj1EaShZZS5kaWFnb25hbERvd24pKSxpZS5Cb3JkZXJzLnB1c2goeGUpO2JyZWFrO2Nhc2UiPGxlZnQiOmNhc2UiPGxlZnQ+IjpGZT14ZS5sZWZ0PXt9LFllLnN0eWxlJiYoRmUuc3R5''@;'; put 'put ''bGU9WWUuc3R5bGUpO2JyZWFrO2Nhc2UiPHJpZ2h0IjpjYXNlIjxyaWdodD4iOkZlPXhlLnJpZ2h0PXt9LFllLnN0eWxlJiYoRmUuc3R5bGU9WWUuc3R5bGUpO2JyZWFrO2Nhc2UiPHRvcCI6Y2FzZSI8dG9wPiI6RmU9eGUudG9wPXt9LFllLnN0eWxlJiYoRmUuc3R5bGU9WWUuc3R5bGUpO2Jy''@;'; put 'put ''ZWFrO2Nhc2UiPGJvdHRvbSI6Y2FzZSI8Ym90dG9tPiI6RmU9eGUuYm90dG9tPXt9LFllLnN0eWxlJiYoRmUuc3R5bGU9WWUuc3R5bGUpO2JyZWFrO2Nhc2UiPC9kaWFnb25hbD4iOnhlLmRpYWdvbmFsPUZlLEZlPXt9O2JyZWFrO2Nhc2UiPC9ob3Jpem9udGFsPiI6eGUuaG9yaXpvbnRhbD1G''@;'; put 'put ''ZSxGZT17fTticmVhaztjYXNlIjwvdmVydGljYWw+Ijp4ZS52ZXJ0aWNhbD1GZSxGZT17fTticmVhaztjYXNlIjxjb2xvciI6Y2FzZSI8Y29sb3I+IjpGZS5jb2xvcnx8KEZlLmNvbG9yPXt9KSxZZS5hdXRvJiYoRmUuY29sb3IuYXV0bz1EaShZZS5hdXRvKSksbnVsbCE9WWUucmdiP0ZlLmNv''@;'; put 'put ''bG9yLnJnYj1ZZS5yZ2Iuc2xpY2UoLTYpOlllLmluZGV4ZWQ/KEZlLmNvbG9yLmluZGV4PXBhcnNlSW50KFllLmluZGV4ZWQsMTApLEZlLmNvbG9yLnJnYj1NMyhGZS5jb2xvci5pbmRleCxpZS5JbmRleGVkLCExKSk6WWUudGhlbWUmJihGZS5jb2xvci50aGVtZT1wYXJzZUludChZZS50aGVt''@;'; put 'put ''ZSwxMCksWWUudGludCYmKEZlLmNvbG9yLnRpbnQ9cGFyc2VGbG9hdChZZS50aW50KSksWWUudGhlbWUmJlgudGhlbWVFbGVtZW50cyYmWC50aGVtZUVsZW1lbnRzLmNsclNjaGVtZSYmKEZlLmNvbG9yLnJnYj1ROChYLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW0ZlLmNvbG9yLnRoZW1lXS5y''@;'; put 'put ''Z2IsRmUuY29sb3IudGludHx8MCkpKSwhWWUuYXV0byYmbnVsbD09WWUucmdiJiYhWWUuaW5kZXhlZCYmZGVsZXRlIEZlLmNvbG9yO2JyZWFrO2Nhc2UiPGV4dCI6WmU9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOlplPSExO2JyZWFrO2RlZmF1bHQ6aWYod2UmJndlLldURiYmIVplKXRocm93IG5l''@;'; put 'put ''dyBFcnJvcigidW5yZWNvZ25pemVkICIrWWVbMF0rIiBpbiBib3JkZXJzIil9fSl9ZnVuY3Rpb24ga2QoSCxpZSl7dmFyIFg9WyI8IitpZV07cmV0dXJuIEgmJkguc3R5bGU/KFgucHVzaCgnIHN0eWxlPSInK0guc3R5bGUrJyInKSxILmNvbG9yPyhYLnB1c2goIj4iKSxYLnB1c2goWHMoSC5j''@;'; put 'put ''b2xvciwhMCkpLFguam9pbigiIikrIjwvIitpZSsiPiIpOlguam9pbigiIikrIi8+Iik6WFswXSsiLz4ifWZ1bmN0aW9uIGRFKEgsaWUsWCx3ZSl7aWUuRmlsbHM9W107dmFyIHhlPXt9LEZlPXt9LFplPSExLGplPSExOyhIWzBdLm1hdGNoKEd0KXx8W10pLmZvckVhY2goZnVuY3Rpb24oWWUp''@;'; put 'put ''e3ZhciBNdD1lbihZZSk7c3dpdGNoKEluKE10WzBdKSl7Y2FzZSI8ZmlsbHMiOmNhc2UiPGZpbGxzPiI6Y2FzZSI8L2ZpbGxzPiI6Y2FzZSI8L2ZpbGw+IjpjYXNlIjwvZ3JhZGllbnRGaWxsPiI6Y2FzZSI8YmdDb2xvci8+IjpjYXNlIjwvYmdDb2xvcj4iOmNhc2UiPGZnQ29sb3IvPiI6Y2Fz''@;'; put 'put ''ZSI8L2ZnQ29sb3I+IjpjYXNlIjxjb2xvci8+IjpjYXNlIjwvY29sb3I+IjpjYXNlIjxzdG9wLz4iOmNhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPGZpbGw+IjpjYXNlIjxmaWxsIjpjYXNlIjxmaWxsLz4iOmllLkZpbGxzLnB1c2goeGU9''@;'; put 'put ''e30pO2JyZWFrO2Nhc2UiPGdyYWRpZW50RmlsbD4iOnhlLnN0b3BzPVtdO2JyZWFrO2Nhc2UiPGdyYWRpZW50RmlsbCI6eGUuc3RvcHM9W10sTXQuZGVncmVlJiYoeGUuYW5nbGU9K010LmRlZ3JlZSk7YnJlYWs7Y2FzZSI8cGF0dGVybkZpbGwiOmNhc2UiPHBhdHRlcm5GaWxsPiI6TXQucGF0''@;'; put 'put ''dGVyblR5cGUmJih4ZS5wYXR0ZXJuVHlwZT1NdC5wYXR0ZXJuVHlwZSk7YnJlYWs7Y2FzZSI8cGF0dGVybkZpbGwvPiI6Y2FzZSI8L3BhdHRlcm5GaWxsPiI6aWYoWmUpdGhyb3cgbmV3IEVycm9yKCJiYWQgc3RvcCIpO2JyZWFrO2Nhc2UiPGNvbG9yIjpjYXNlIjxiZ0NvbG9yIjpjYXNlIjxm''@;'; put 'put ''Z0NvbG9yIjp2YXIgeHQ9SW4oTXRbMF0pLnNsaWNlKDEpOyJjb2xvciIhPXh0JiYheGVbeHRdJiYoeGVbeHRdPXt9KTt2YXIgUnQ9WmU/RmU6eGVbeHRdO251bGwhPU10LmluZGV4ZWQmJihSdC5pbmRleD1wYXJzZUludChNdC5pbmRleGVkLDEwKSxSdC5yZ2I9TTMoUnQuaW5kZXgsaWUuSW5k''@;'; put 'put ''ZXhlZCkpLG51bGwhPU10LnRoZW1lJiYoUnQudGhlbWU9cGFyc2VJbnQoTXQudGhlbWUsMTApKSxudWxsIT1NdC50aW50JiYoUnQudGludD1wYXJzZUZsb2F0KE10LnRpbnQpKSxudWxsIT1NdC5yZ2ImJihSdC5yZ2I9TXQucmdiLnNsaWNlKC02KSksbnVsbCE9TXQuYXV0byYmZGVsZXRlIHhl''@;'; put 'put ''W3h0XSxudWxsIT1SdC50aGVtZSYmIVJ0LnJnYiYmWC50aGVtZUVsZW1lbnRzJiYoUnQucmdiPVE4KFgudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbUnQudGhlbWVdLnJnYixSdC50aW50fHwwKSx3ZS5XVEYmJihSdC5yYXdfcmdiPVgudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbUnQudGhlbWVd''@;'; put 'put ''LnJnYikpO2JyZWFrO2Nhc2UiPHN0b3A+IjpaZT0hMCxGZT17fTticmVhaztjYXNlIjxzdG9wIjpaZT0hMCxGZT17fSxudWxsIT1NdC5wb3NpdGlvbiYmKEZlLnY9cGFyc2VGbG9hdChNdC5wb3NpdGlvbikpO2JyZWFrO2Nhc2UiPC9zdG9wPiI6WmU9ITEseGUuc3RvcHMucHVzaChGZSk7YnJl''@;'; put 'put ''YWs7Y2FzZSI8ZXh0IjpqZT0hMDticmVhaztjYXNlIjwvZXh0PiI6amU9ITE7YnJlYWs7ZGVmYXVsdDppZih3ZSYmd2UuV1RGJiYhamUpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitNdFswXSsiIGluIGZpbGxzIil9fSl9ZnVuY3Rpb24gZDYoSCxpZSxYLHdlKXtpZS5Gb250cz1b''@;'; put 'put ''XTt2YXIgeGU9e30sRmU9ITE7KEhbMF0ubWF0Y2goR3QpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihaZSl7dmFyIGplPWVuKFplKTtzd2l0Y2goSW4oamVbMF0pKXtjYXNlIjxmb250cyI6Y2FzZSI8Zm9udHM+IjpjYXNlIjwvZm9udHM+IjpicmVhaztjYXNlIjxmb250IjpjYXNlIjxmb250PiI6''@;'; put 'put ''aWYoIi8+IiE9WmUuc2xpY2UoLTIpKWJyZWFrO2Nhc2UiPC9mb250PiI6Y2FzZSI8Zm9udC8+IjppZS5Gb250cy5wdXNoKHhlKSx4ZT17fTticmVhaztjYXNlIjxuYW1lIjpqZS52YWwmJih4ZS5uYW1lPVcwKGplLnZhbCkpO2JyZWFrO2Nhc2UiPG5hbWUvPiI6Y2FzZSI8L25hbWU+IjpicmVh''@;'; put 'put ''aztjYXNlIjxiIjp4ZS5ib2xkPWplLnZhbD9EaShqZS52YWwpOjE7YnJlYWs7Y2FzZSI8Yi8+IjpjYXNlIjxiPiI6eGUuYm9sZD0xO2JyZWFrO2Nhc2UiPC9iPiI6YnJlYWs7Y2FzZSI8aSI6eGUuaXRhbGljPWplLnZhbD9EaShqZS52YWwpOjE7YnJlYWs7Y2FzZSI8aS8+IjpjYXNlIjxpPiI6''@;'; put 'put ''eGUuaXRhbGljPTE7YnJlYWs7Y2FzZSI8L2k+IjpicmVhaztjYXNlIjx1Ijpzd2l0Y2goamUudmFsKXtjYXNlIm5vbmUiOnhlLnVuZGVybGluZT0wO2JyZWFrO2Nhc2Uic2luZ2xlIjp4ZS51bmRlcmxpbmU9MTticmVhaztjYXNlImRvdWJsZSI6eGUudW5kZXJsaW5lPTI7YnJlYWs7Y2FzZSJz''@;'; put 'put ''aW5nbGVBY2NvdW50aW5nIjp4ZS51bmRlcmxpbmU9MzM7YnJlYWs7Y2FzZSJkb3VibGVBY2NvdW50aW5nIjp4ZS51bmRlcmxpbmU9MzR9YnJlYWs7Y2FzZSI8dS8+IjpjYXNlIjx1PiI6eGUudW5kZXJsaW5lPTE7YnJlYWs7Y2FzZSI8L3U+IjpicmVhaztjYXNlIjxzdHJpa2UiOnhlLnN0cmlr''@;'; put 'put ''ZT1qZS52YWw/RGkoamUudmFsKToxO2JyZWFrO2Nhc2UiPHN0cmlrZS8+Ijp4ZS5zdHJpa2U9MTticmVhaztjYXNlIjxvdXRsaW5lIjp4ZS5vdXRsaW5lPWplLnZhbD9EaShqZS52YWwpOjE7YnJlYWs7Y2FzZSI8b3V0bGluZS8+Ijp4ZS5vdXRsaW5lPTE7YnJlYWs7Y2FzZSI8c2hhZG93Ijp4''@;'; put 'put ''ZS5zaGFkb3c9amUudmFsP0RpKGplLnZhbCk6MTticmVhaztjYXNlIjxzaGFkb3cvPiI6eGUuc2hhZG93PTE7YnJlYWs7Y2FzZSI8Y29uZGVuc2UiOnhlLmNvbmRlbnNlPWplLnZhbD9EaShqZS52YWwpOjE7YnJlYWs7Y2FzZSI8Y29uZGVuc2UvPiI6eGUuY29uZGVuc2U9MTticmVhaztjYXNl''@;'; put 'put ''IjxleHRlbmQiOnhlLmV4dGVuZD1qZS52YWw/RGkoamUudmFsKToxO2JyZWFrO2Nhc2UiPGV4dGVuZC8+Ijp4ZS5leHRlbmQ9MTticmVhaztjYXNlIjxzeiI6amUudmFsJiYoeGUuc3o9K2plLnZhbCk7YnJlYWs7Y2FzZSI8c3ovPiI6Y2FzZSI8L3N6PiI6YnJlYWs7Y2FzZSI8dmVydEFsaWdu''@;'; put 'put ''Ijoibm9uZSIhPShqZS52YWx8fCJub25lIikmJih4ZS52YWxpZ249amUudmFsLnJlcGxhY2UoInNjcmlwdCIsIiIpKTticmVhaztjYXNlIjx2ZXJ0QWxpZ24vPiI6Y2FzZSI8L3ZlcnRBbGlnbj4iOmJyZWFrO2Nhc2UiPGZhbWlseSI6amUudmFsJiYoeGUuZmFtaWx5PXBhcnNlSW50KGplLnZh''@;'; put 'put ''bCwxMCkpO2JyZWFrO2Nhc2UiPGZhbWlseS8+IjpjYXNlIjwvZmFtaWx5PiI6YnJlYWs7Y2FzZSI8c2NoZW1lIjpqZS52YWwmJih4ZS5zY2hlbWU9amUudmFsKTticmVhaztjYXNlIjxzY2hlbWUvPiI6Y2FzZSI8L3NjaGVtZT4iOmJyZWFrO2Nhc2UiPGNoYXJzZXQiOmlmKCIxIj09amUudmFs''@;'; put 'put ''KWJyZWFrO2plLmNvZGVwYWdlPVlbcGFyc2VJbnQoamUudmFsLDEwKV07YnJlYWs7Y2FzZSI8Y29sb3IiOnhlLmNvbG9yfHwoeGUuY29sb3I9e30pLGplLmF1dG8mJih4ZS5jb2xvci5hdXRvPURpKGplLmF1dG8pKSxqZS5yZ2I/eGUuY29sb3IucmdiPWplLnJnYi5zbGljZSgtNik6amUuaW5k''@;'; put 'put ''ZXhlZD8oeGUuY29sb3IuaW5kZXg9cGFyc2VJbnQoamUuaW5kZXhlZCwxMCkseGUuY29sb3IucmdiPU0zKHhlLmNvbG9yLmluZGV4LGllLkluZGV4ZWQpKTpqZS50aGVtZSYmKHhlLmNvbG9yLnRoZW1lPXBhcnNlSW50KGplLnRoZW1lLDEwKSxqZS50aW50JiYoeGUuY29sb3IudGludD1wYXJz''@;'; put 'put ''ZUZsb2F0KGplLnRpbnQpKSxqZS50aGVtZSYmWC50aGVtZUVsZW1lbnRzJiZYLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lJiYoeGUuY29sb3IucmdiPVE4KFgudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbeGUuY29sb3IudGhlbWVdLnJnYix4ZS5jb2xvci50aW50fHwwKSkpO2JyZWFrO2Nhc2Ui''@;'; put 'put ''PGNvbG9yLz4iOmNhc2UiPC9jb2xvcj4iOmJyZWFrO2Nhc2UiPEFsdGVybmF0ZUNvbnRlbnQiOkZlPSEwO2JyZWFrO2Nhc2UiPC9BbHRlcm5hdGVDb250ZW50PiI6RmU9ITE7YnJlYWs7Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8ZXh0''@;'; put 'put ''IjpGZT0hMDticmVhaztjYXNlIjwvZXh0PiI6RmU9ITE7YnJlYWs7ZGVmYXVsdDppZih3ZSYmd2UuV1RGJiYhRmUpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitqZVswXSsiIGluIGZvbnRzIil9fSl9dmFyIE85PXswOiJub25lIiwxOiJzaW5nbGUiLDI6ImRvdWJsZSIsMzM6InNp''@;'; put 'put ''bmdsZUFjY291bnRpbmciLDM0OiJkb3VibGVBY2NvdW50aW5nIn0seDM9WyJudW1GbXRJZCIsImZpbGxJZCIsImZvbnRJZCIsImJvcmRlcklkIiwieGZJZCJdLEI0PVsiYXBwbHlBbGlnbm1lbnQiLCJhcHBseUJvcmRlciIsImFwcGx5RmlsbCIsImFwcGx5Rm9udCIsImFwcGx5TnVtYmVyRm9y''@;'; put 'put ''bWF0IiwiYXBwbHlQcm90ZWN0aW9uIiwicGl2b3RCdXR0b24iLCJxdW90ZVByZWZpeCJdLHA2PWZ1bmN0aW9uKCl7dmFyIEg9LzwoPzpcdys6KT9mb250KFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2ZvbnQ+LyxpZT0vPCg/Olx3KzopP251bUZtdChbXj5dKilcLz4vLFg9LzwoPzpcdys6''@;'; put 'put ''KT9maWxsKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2ZpbGw+Lyx4ZT0vPCg/Olx3KzopP2JvcmRlcihbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9ib3JkZXI+LztyZXR1cm4gZnVuY3Rpb24oamUsWWUsTXQseHQpe3ZhciBubixDbixSdD17fSxVdD17fTtyZXR1cm4obm49amUubWF0''@;'; put 'put ''Y2goSCkpJiYoZDYobm4sUnQsTXQseHQpLChSdC5Gb250c3x8W10pWzBdJiZibihVdCxSdC5Gb250c1swXSkpLChubj1qZS5tYXRjaChpZSkpJiYoQ249ZW4oVzAobm5bMF0pKSxVdC56PUNuLmZvcm1hdENvZGU/Z3IoQ24uZm9ybWF0Q29kZSk6KFllLk51bWJlckZtdHx8W10pWytDbi5udW1G''@;'; put 'put ''bXRJZF18fCJHZW5lcmFsIiksKG5uPWplLm1hdGNoKFgpKSYmKGRFKG5uLFJ0LE10LHh0KSwoUnQuRmlsbHN8fFtdKVswXSYmYm4oVXQsUnQuRmlsbHNbMF0pKSwobm49amUubWF0Y2goeGUpKSYmKGtiKG5uLFJ0LE10LHh0KSwoUnQuQm9yZGVyc3x8W10pWzBdJiZibihVdCxSdC5Cb3JkZXJz''@;'; put 'put ''WzBdKSksVXR9fSgpLGJvPS88KD86XHcrOik/ZHhmPltcU1xzXSo/PFwvKD86XHcrOik/ZHhmPi9nLEdhPS88KD86XHcrOik/dGFibGVTdHlsZVxiLio/PltcU1xzXSo/PFwvKD86XHcrOik/dGFibGVTdHlsZT4vZzt2YXIgQjk9ZnVuY3Rpb24oKXt2YXIgaWU9LzwoPzpcdys6KT9udW1GbXRz''@;'; put 'put ''KFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP251bUZtdHM+LyxYPS88KD86XHcrOik/Y2VsbFN0eWxlWGZzKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2NlbGxTdHlsZVhmcz4vLHdlPS88KD86XHcrOik/Y2VsbFN0eWxlcyhbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9jZWxsU3R5''@;'; put 'put ''bGVzPi8seGU9LzwoPzpcdys6KT9jZWxsWGZzKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2NlbGxYZnM+LyxGZT0vPCg/Olx3KzopP2ZpbGxzKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2ZpbGxzPi8sWmU9LzwoPzpcdys6KT9mb250cyhbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6''@;'; put 'put ''KT9mb250cz4vLGplPS88KD86XHcrOik/Ym9yZGVycyhbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9ib3JkZXJzPi8sWWU9LzwoPzpcdys6KT9pbmRleGVkQ29sb3JzKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2luZGV4ZWRDb2xvcnM+LyxNdD0vPCg/Olx3KzopP3RhYmxlU3R5bGVz''@;'; put 'put ''KFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP3RhYmxlU3R5bGVzPi8seHQ9LzwoPzpcdys6KT9keGZzKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2R4ZnM+LztyZXR1cm4gZnVuY3Rpb24oVXQsbm4sQ24pe3ZhciB6dCxEdD17fTtyZXR1cm4gVXQ/KCh6dD0oVXQ9VXQucmVwbGFjZSgv''@;'; put 'put ''PCEtLShbXHNcU10qPyktLT4vZ20sIiIpLnJlcGxhY2UoLzwhRE9DVFlQRVteXFtdKlxbW15cXV0qXF0+L2dtLCIiKSkubWF0Y2goWWUpKSYmZnVuY3Rpb24gd0UoSCxpZSxYKXtpZS5JbmRleGVkfHwoaWUuSW5kZXhlZD1bXSk7dmFyIHdlPSExOyhIWzBdLm1hdGNoKEd0KXx8W10pLmZvckVh''@;'; put 'put ''Y2goZnVuY3Rpb24oeGUpe3ZhciBGZT1lbih4ZSk7c3dpdGNoKEluKEZlWzBdKSl7Y2FzZSI8aW5kZXhlZENvbG9ycz4iOmNhc2UiPGluZGV4ZWRDb2xvcnMiOmNhc2UiPGluZGV4ZWRDb2xvcnMvPiI6Y2FzZSI8L2luZGV4ZWRDb2xvcnM+IjpjYXNlIjwvcmdiQ29sb3I+IjpjYXNlIjxleHRM''@;'; put 'put ''c3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxyZ2JDb2xvciI6ZGVsZXRlIEZlWzBdO3ZhciBaZT1wYXJzZUludChGZS5yZ2Iuc2xpY2UoLTYpLDE2KTtpZS5JbmRleGVkLnB1c2goW1plPj4xNiYyNTUsWmU+PjgmMjU1LDI1NSZaZV0pO2JyZWFrO2Nhc2Ui''@;'; put 'put ''PGV4dCI6d2U9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOndlPSExO2JyZWFrO2RlZmF1bHQ6aWYoWCYmWC5XVEYmJiF3ZSl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK0ZlWzBdKyIgaW4gY2VsbFN0eWxlcyIpfX0pfSh6dCxEdCxDbiksKHp0PVV0Lm1hdGNoKGllKSkmJmZ1bmN0aW9u''@;'; put 'put ''IGdFKEgsaWUsWCl7aWUuTnVtYmVyRm10PVtdO2Zvcih2YXIgd2U9b24oRi5fdGFibGUpLHhlPTA7eGU8d2UubGVuZ3RoOysreGUpaWUuTnVtYmVyRm10W3dlW3hlXV09Ri5fdGFibGVbd2VbeGVdXTt2YXIgRmU9SFswXS5tYXRjaChHdCk7aWYoRmUpZm9yKHhlPTA7eGU8RmUubGVuZ3RoOysr''@;'; put 'put ''eGUpe3ZhciBaZT1lbihGZVt4ZV0pO3N3aXRjaChJbihaZVswXSkpe2Nhc2UiPG51bUZtdHMiOmNhc2UiPC9udW1GbXRzPiI6Y2FzZSI8bnVtRm10cy8+IjpjYXNlIjxudW1GbXRzPiI6Y2FzZSI8L251bUZtdD4iOmJyZWFrO2Nhc2UiPG51bUZtdCI6dmFyIGplPWdyKFcwKFplLmZvcm1hdENv''@;'; put 'put ''ZGUpKSxZZT1wYXJzZUludChaZS5udW1GbXRJZCwxMCk7aWYoaWUuTnVtYmVyRm10W1llXT1qZSxZZT4wKXtpZihZZT4zOTIpe2ZvcihZZT0zOTI7WWU+NjAmJm51bGwhPWllLk51bWJlckZtdFtZZV07LS1ZZSk7aWUuTnVtYmVyRm10W1llXT1qZX1GLmxvYWQoamUsWWUpfWJyZWFrO2RlZmF1''@;'; put 'put ''bHQ6aWYoWC5XVEYpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitaZVswXSsiIGluIG51bUZtdHMiKX19fSh6dCxEdCxDbiksKHp0PVV0Lm1hdGNoKFplKSkmJmQ2KHp0LER0LG5uLENuKSwoenQ9VXQubWF0Y2goRmUpKSYmZEUoenQsRHQsbm4sQ24pLCh6dD1VdC5tYXRjaChqZSkp''@;'; put 'put ''JiZrYih6dCxEdCxubixDbiksKHp0PVV0Lm1hdGNoKFgpKSYmZnVuY3Rpb24gQUUoSCxpZSxYKXtpZS5DZWxsU3R5bGVYZj1bXTt2YXIgd2UseGU9ITE7KEhbMF0ubWF0Y2goR3QpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihGZSl7dmFyIFplPWVuKEZlKSxqZT0wO3N3aXRjaChJbihaZVswXSkp''@;'; put 'put ''e2Nhc2UiPGNlbGxTdHlsZVhmcyI6Y2FzZSI8Y2VsbFN0eWxlWGZzPiI6Y2FzZSI8Y2VsbFN0eWxlWGZzLz4iOmNhc2UiPC9jZWxsU3R5bGVYZnM+IjpjYXNlIjwveGY+IjpjYXNlIjwvYWxpZ25tZW50PiI6Y2FzZSI8L3Byb3RlY3Rpb24+IjpjYXNlIjxwcm90ZWN0aW9uLz4iOmNhc2UiPGV4''@;'; put 'put ''dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPHhmIjpjYXNlIjx4Zi8+Ijpmb3IoZGVsZXRlKHdlPVplKVswXSxqZT0wO2plPHgzLmxlbmd0aDsrK2plKXdlW3gzW2plXV0mJih3ZVt4M1tqZV1dPXBhcnNlSW50KHdlW3gzW2plXV0sMTApKTtmb3IoamU9''@;'; put 'put ''MDtqZTxCNC5sZW5ndGg7KytqZSl3ZVtCNFtqZV1dJiYod2VbQjRbamVdXT1EaSh3ZVtCNFtqZV1dKSk7aWYoaWUuTnVtYmVyRm10JiZ3ZS5udW1GbXRJZD4zOTIpZm9yKGplPTM5MjtqZT42MDstLWplKWlmKGllLk51bWJlckZtdFt3ZS5udW1GbXRJZF09PWllLk51bWJlckZtdFtqZV0pe3dl''@;'; put 'put ''Lm51bUZtdElkPWplO2JyZWFrfWllLkNlbGxTdHlsZVhmLnB1c2god2UpO2JyZWFrO2Nhc2UiPGFsaWdubWVudCI6Y2FzZSI8YWxpZ25tZW50Lz4iOnZhciBZZT17fTtaZS52ZXJ0aWNhbCYmKFllLnZlcnRpY2FsPVplLnZlcnRpY2FsKSxaZS5ob3Jpem9udGFsJiYoWWUuaG9yaXpvbnRhbD1a''@;'; put 'put ''ZS5ob3Jpem9udGFsKSxudWxsIT1aZS50ZXh0Um90YXRpb24mJihZZS50ZXh0Um90YXRpb249WmUudGV4dFJvdGF0aW9uKSxaZS5pbmRlbnQmJihZZS5pbmRlbnQ9WmUuaW5kZW50KSxaZS53cmFwVGV4dCYmKFllLndyYXBUZXh0PVplLndyYXBUZXh0KSxaZS5zaHJpbmtUb0ZpdCYmKFllLnNo''@;'; put 'put ''cmlua1RvRml0PURpKFplLnNocmlua1RvRml0KSksd2UuYWxpZ25tZW50PVllO2JyZWFrO2Nhc2UiPHByb3RlY3Rpb24iOndlLnByb3RlY3Rpb249e30sRGkoWmUuaGlkZGVuKSYmKHdlLnByb3RlY3Rpb24uaGlkZGVuPSEwKSxudWxsIT1aZS5sb2NrZWQmJih3ZS5wcm90ZWN0aW9uLmVkaXRh''@;'; put 'put ''YmxlPSFEaShaZS5sb2NrZWQpKTticmVhaztjYXNlIjxleHQiOnhlPSEwO2JyZWFrO2Nhc2UiPC9leHQ+Ijp4ZT0hMTticmVhaztkZWZhdWx0OmlmKFgmJlguV1RGJiYheGUpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitaZVswXSsiIGluIGNlbGxTdHlsZVhmcyIpfX0pfSh6dCxE''@;'; put 'put ''dCxDbiksKHp0PVV0Lm1hdGNoKHdlKSkmJmZ1bmN0aW9uIHlFKEgsaWUsWCl7aWUuQ2VsbFN0eWxlWGZ8fChpZS5DZWxsU3R5bGVYZj1bXSk7dmFyIHdlPSExOyhIWzBdLm1hdGNoKEd0KXx8W10pLmZvckVhY2goZnVuY3Rpb24oeGUpe3ZhciBGZT1lbih4ZSk7c3dpdGNoKEluKEZlWzBdKSl7''@;'; put 'put ''Y2FzZSI8Y2VsbFN0eWxlcyI6Y2FzZSI8Y2VsbFN0eWxlcz4iOmNhc2UiPGNlbGxTdHlsZXMvPiI6Y2FzZSI8L2NlbGxTdHlsZXM+IjpjYXNlIjwveGY+IjpjYXNlIjwvY2VsbFN0eWxlPiI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8''@;'; put 'put ''Y2VsbFN0eWxlIjpjYXNlIjxjZWxsU3R5bGUvPiI6ZGVsZXRlIEZlWzBdO3ZhciBaZT0rRmUueGZJZDtpZihpZS5DZWxsU3R5bGVYZltaZV0paWUuQ2VsbFN0eWxlWGZbWmVdLnN0eWxlPVcwKEZlLm5hbWUpO2Vsc2UgaWYoIUZlLmJ1aWx0aW5JZCl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5v''@;'; put 'put ''dCBmaW5kIENlbGxTdHlsZSAiK1plKTticmVhaztjYXNlIjxleHQiOndlPSEwO2JyZWFrO2Nhc2UiPC9leHQ+Ijp3ZT0hMTticmVhaztkZWZhdWx0OmlmKFgmJlguV1RGJiYhd2UpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitGZVswXSsiIGluIGNlbGxTdHlsZXMiKX19KX0oenQs''@;'; put 'put ''RHQsQ24pLCh6dD1VdC5tYXRjaCh4ZSkpJiZmdW5jdGlvbiB2RShILGllLFgpe2llLkNlbGxYZj1bXTt2YXIgd2UseGU9ITE7KEhbMF0ubWF0Y2goR3QpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihGZSl7dmFyIFplPWVuKEZlKSxqZT0wO3N3aXRjaChJbihaZVswXSkpe2Nhc2UiPGNlbGxYZnMi''@;'; put 'put ''OmNhc2UiPGNlbGxYZnM+IjpjYXNlIjxjZWxsWGZzLz4iOmNhc2UiPC9jZWxsWGZzPiI6Y2FzZSI8L3hmPiI6Y2FzZSI8L2FsaWdubWVudD4iOmNhc2UiPC9wcm90ZWN0aW9uPiI6Y2FzZSI8cHJvdGVjdGlvbi8+IjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+''@;'; put 'put ''IjpicmVhaztjYXNlIjx4ZiI6Y2FzZSI8eGYvPiI6Zm9yKGRlbGV0ZSh3ZT1aZSlbMF0samU9MDtqZTx4My5sZW5ndGg7KytqZSl3ZVt4M1tqZV1dJiYod2VbeDNbamVdXT1wYXJzZUludCh3ZVt4M1tqZV1dLDEwKSk7Zm9yKGplPTA7amU8QjQubGVuZ3RoOysramUpd2VbQjRbamVdXSYmKHdl''@;'; put 'put ''W0I0W2plXV09RGkod2VbQjRbamVdXSkpO2lmKGllLk51bWJlckZtdCYmd2UubnVtRm10SWQ+MzkyKWZvcihqZT0zOTI7amU+NjA7LS1qZSlpZihpZS5OdW1iZXJGbXRbd2UubnVtRm10SWRdPT1pZS5OdW1iZXJGbXRbamVdKXt3ZS5udW1GbXRJZD1qZTticmVha31pZS5DZWxsU3R5bGVYZiYm''@;'; put 'put ''d2UueGZJZCYmaWUuQ2VsbFN0eWxlWGZbd2UueGZJZF0mJmllLkNlbGxTdHlsZVhmW3dlLnhmSWRdLnN0eWxlJiYod2Uuc3R5bGU9aWUuQ2VsbFN0eWxlWGZbd2UueGZJZF0uc3R5bGUpLGllLkNlbGxYZi5wdXNoKHdlKTticmVhaztjYXNlIjxhbGlnbm1lbnQiOmNhc2UiPGFsaWdubWVudC8+''@;'; put 'put ''Ijp2YXIgWWU9e307WmUudmVydGljYWwmJihZZS52ZXJ0aWNhbD1aZS52ZXJ0aWNhbCksWmUuaG9yaXpvbnRhbCYmKFllLmhvcml6b250YWw9WmUuaG9yaXpvbnRhbCksbnVsbCE9WmUudGV4dFJvdGF0aW9uJiYoWWUudGV4dFJvdGF0aW9uPVplLnRleHRSb3RhdGlvbiksWmUuaW5kZW50JiYo''@;'; put 'put ''WWUuaW5kZW50PVplLmluZGVudCksWmUud3JhcFRleHQmJihZZS53cmFwVGV4dD1EaShaZS53cmFwVGV4dCkpLFplLnNocmlua1RvRml0JiYoWWUuc2hyaW5rVG9GaXQ9RGkoWmUuc2hyaW5rVG9GaXQpKSx3ZS5hbGlnbm1lbnQ9WWU7YnJlYWs7Y2FzZSI8cHJvdGVjdGlvbiI6d2UucHJvdGVj''@;'; put 'put ''dGlvbj17fSxEaShaZS5oaWRkZW4pJiYod2UucHJvdGVjdGlvbi5oaWRkZW49ITApLG51bGwhPVplLmxvY2tlZCYmKHdlLnByb3RlY3Rpb24uZWRpdGFibGU9IURpKFplLmxvY2tlZCkpO2JyZWFrO2Nhc2UiPEFsdGVybmF0ZUNvbnRlbnQiOmNhc2UiPGV4dCI6eGU9ITA7YnJlYWs7Y2FzZSI8''@;'; put 'put ''L0FsdGVybmF0ZUNvbnRlbnQ+IjpjYXNlIjwvZXh0PiI6eGU9ITE7YnJlYWs7ZGVmYXVsdDppZihYJiZYLldURiYmIXhlKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrWmVbMF0rIiBpbiBjZWxsWGZzIil9fSl9KHp0LER0LENuKSwoenQ9VXQubWF0Y2goeHQpKSYmZnVuY3Rpb24g''@;'; put 'put ''UjkoSCxpZSxYLHdlKXtpZS5EWEZ8fChpZS5EWEY9W10pLChIWzBdLm1hdGNoKGJvKXx8W10pLmZvckVhY2goZnVuY3Rpb24oeGUpe2llLkRYRi5wdXNoKHA2KHhlLGllLFgsd2UpKX0pfSh6dCxEdCxubixDbiksKHp0PVV0Lm1hdGNoKE10KSkmJmZ1bmN0aW9uIFlSKEgsaWUsWCx3ZSl7aWUu''@;'; put 'put ''VGFibGV8fChpZS5UYWJsZT1bXSksKEhbMF0ubWF0Y2goR2EpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4ZSl7aWUuVGFibGUucHVzaChmdW5jdGlvbiBXUihILGllLFgsd2Upe3ZhciB4ZT0hMSxGZT17fTtyZXR1cm4oSC5tYXRjaChHdCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKFplKXt2YXIg''@;'; put 'put ''amU9ZW4oWmUpO3N3aXRjaChJbihqZVswXSkpe2Nhc2UiPHRhYmxlU3R5bGU+IjpjYXNlIjx0YWJsZVN0eWxlIjpGZS5uYW1lPWplLm5hbWUucmVwbGFjZSgvXihUYWJsZXxQaXZvdClTdHlsZS8sIiIpLEZlLnJhd25hbWU9amUubmFtZSxGZS5waXZvdD0hamUucGl2b3R8fERpKGplLnBpdm90''@;'; put 'put ''KSxGZS50YWJsZT0hamUudGFibGV8fERpKGplLnRhYmxlKTticmVhaztjYXNlIjx0YWJsZVN0eWxlLz4iOmNhc2UiPC90YWJsZVN0eWxlPiI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8dGFibGVTdHlsZUVsZW1lbnQiOmlmKGplLnR5''@;'; put 'put ''cGUmJmplLmR4ZklkKXtpZighaWUuRFhGfHwhaWUuRFhGWytqZS5keGZJZF0pdGhyb3cgbmV3IEVycm9yKFplKyIgY2Fubm90IGZpbmQgRFhGIik7RmVbamUudHlwZV09aWUuRFhGWytqZS5keGZJZF19YnJlYWs7Y2FzZSI8ZXh0Ijp4ZT0hMDticmVhaztjYXNlIjwvZXh0PiI6eGU9ITE7YnJl''@;'; put 'put ''YWs7ZGVmYXVsdDppZih3ZSYmd2UuV1RGJiYheGUpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitqZVswXSsiIGluIHRhYmxlU3R5bGUiKX19KSxGZX0oeGUsaWUsMCx3ZSkpfSl9KHp0LER0LDAsQ24pLChEdC5Gb250c3x8W10pWzBdJiZTMyhEdC5Gb250c1swXSksRHQpOkR0fX0o''@;'; put 'put ''KSxVUj1faSgic3R5bGVTaGVldCIsbnVsbCx7eG1sbnM6WDAubWFpblswXSwieG1sbnM6dnQiOlgwLnZ0fSk7ZnVuY3Rpb24gUVIoSCxpZSl7dmFyIHdlLFg9W2NuLFVSXTtILlNTRiYmbnVsbCE9KHdlPWZ1bmN0aW9uIG1FKEgpe3ZhciBpZT1bIjxudW1GbXRzPiJdO3JldHVybltbNSw4XSxb''@;'; put 'put ''MjMsMjZdLFs0MSw0NF0sWzUwLDM5Ml1dLmZvckVhY2goZnVuY3Rpb24oWCl7Zm9yKHZhciB3ZT1YWzBdO3dlPD1YWzFdOysrd2UpbnVsbCE9SFt3ZV0mJihpZVtpZS5sZW5ndGhdPV9pKCJudW1GbXQiLG51bGwse251bUZtdElkOndlLGZvcm1hdENvZGU6UnIoSFt3ZV0pfSkpfSksMT09PWll''@;'; put 'put ''Lmxlbmd0aD8iIjooaWVbaWUubGVuZ3RoXT0iPC9udW1GbXRzPiIsaWVbMF09X2koIm51bUZtdHMiLG51bGwse2NvdW50OmllLmxlbmd0aC0yfSkucmVwbGFjZSgiLz4iLCI+IiksaWUuam9pbigiIikpfShILlNTRikpJiYoWFtYLmxlbmd0aF09d2UpLFhbWC5sZW5ndGhdPWZ1bmN0aW9uIHpS''@;'; put 'put ''KEgpe3ZhciBpZT1bXTtyZXR1cm4gSC5mb3JFYWNoKGZ1bmN0aW9uKFgpe3ZhciB3ZT1bIjxmb250PiJdO1guYm9sZCYmd2UucHVzaCgiPGIvPiIpLFguaXRhbGljJiZ3ZS5wdXNoKCI8aS8+IiksWC5zdHJpa2UmJndlLnB1c2goIjxzdHJpa2UvPiIpLFguc2hhZG93JiZ3ZS5wdXNoKCI8c2hh''@;'; put 'put ''ZG93Lz4iKSxPOVsrWC51bmRlcmxpbmVdJiZ3ZS5wdXNoKCc8dSB2YWw9IicrTzlbK1gudW5kZXJsaW5lXSsnIi8+JyksWC5zeiYmd2UucHVzaCgnPHN6IHZhbD0iJytYLnN6KyciLz4nKSxYLmNvbG9yJiZ3ZS5wdXNoKFhzKFguY29sb3IsITApKSxYLm5hbWUmJndlLnB1c2goJzxuYW1lIHZh''@;'; put 'put ''bD0iJytYLm5hbWUrJyIvPicpLFguZmFtaWx5JiZ3ZS5wdXNoKCc8ZmFtaWx5IHZhbD0iJytYLmZhbWlseSsnIi8+JyksWC5zY2hlbWUmJndlLnB1c2goJzxzY2hlbWUgdmFsPSInK1guc2NoZW1lKyciLz4nKSxYLnZhbGlnbiYmd2UucHVzaCgnPHZlcnRBbGlnbiB2YWw9IicrWC52YWxpZ24r''@;'; put 'put ''KCJzdWIiPT1YLnZhbGlnbnx8InN1cGVyIj09WC52YWxpZ24/InNjcmlwdCI6IiIpKyciLz4nKSxpZS5wdXNoKHdlLmpvaW4oIiIpKyI8L2ZvbnQ+Iil9KSwnPGZvbnRzIGNvdW50PSInK2llLmxlbmd0aCsnIj4nK2llLmpvaW4oIiIpKyI8L2ZvbnRzPiJ9KChILlN0eWxlc3x8e30pLkZvbnRz''@;'; put 'put ''fHxbXSksWFtYLmxlbmd0aF09ZnVuY3Rpb24gcEUoSCl7dmFyIGllPVtdO3JldHVybiBILmZvckVhY2goZnVuY3Rpb24oWCl7dmFyIHdlPW51bGw7aWYoWC5zdG9wcyYmWC5zdG9wcy5sZW5ndGgpe3ZhciB4ZT17fTtYLmFuZ2xlJiYoeGUuZGVncmVlPU1hdGgucm91bmQoWC5hbmdsZSkpLHdl''@;'; put 'put ''PVguc3RvcHMubWFwKGZ1bmN0aW9uKEZlKXtyZXR1cm4gX2koInN0b3AiLFhzKEZlLCJjb2xvciIsITApLG51bGwhPUZlLnY/e3Bvc2l0aW9uOkZlLnZ9Ont9KX0pLGllLnB1c2goIjxmaWxsPiIrX2koImdyYWRpZW50RmlsbCIsd2Uuam9pbigiIikseGUpKyI8L2ZpbGw+Iil9ZWxzZXtpZihY''@;'; put 'put ''LmZnQ29sb3Ipe2lmKHdlPSh3ZXx8IiIpKyI8ZmdDb2xvciAiLFguZmdDb2xvci50aGVtZSl3ZSs9J3RoZW1lPSInK1guZmdDb2xvci50aGVtZSsnIicrKFguZmdDb2xvci50aW50PycgdGludD0iJytYLmZnQ29sb3IudGludCsnIic6IiIpKyIvPiI7ZWxzZSBpZihudWxsIT1YLmZnQ29sb3Iu''@;'; put 'put ''aW5kZXgmJm51bGw9PVguZmdDb2xvci5yZ2Ipd2UrPSdpbmRleGVkPSInK1guZmdDb2xvci5pbmRleCsnIi8+JztlbHNlIGlmKFguZmdDb2xvci5hdXRvKXdlKz0nYXV0bz0iMSIvPic7ZWxzZXtpZihudWxsPT1YLmZnQ29sb3IucmdiKXRocm93IG5ldyBFcnJvcigiQmFkIGNvbG9yICIrb24o''@;'; put 'put ''WC5mZ0NvbG9yKS5qb2luKCJ8IikpO3dlKz0ncmdiPSJGRicrTG8oWC5mZ0NvbG9yLnJnYikrJyIvPid9InNvbGlkIj09WC5wYXR0ZXJuVHlwZSYmIVguYmdDb2xvciYmKFguYmdDb2xvcj17aW5kZXg6NjR9KX1pZihYLmJnQ29sb3IpaWYod2U9KHdlfHwiIikrIjxiZ0NvbG9yICIsWC5iZ0Nv''@;'; put 'put ''bG9yLnRoZW1lKXdlKz0ndGhlbWU9IicrWC5iZ0NvbG9yLnRoZW1lKyciLz4nO2Vsc2UgaWYobnVsbCE9WC5iZ0NvbG9yLmluZGV4JiZudWxsPT1YLmJnQ29sb3IucmdiKXdlKz0naW5kZXhlZD0iJytYLmJnQ29sb3IuaW5kZXgrJyIvPic7ZWxzZSBpZihYLmJnQ29sb3IuYXV0byl3ZSs9J2F1''@;'; put 'put ''dG89IjEiLz4nO2Vsc2V7aWYobnVsbD09WC5iZ0NvbG9yLnJnYil0aHJvdyBuZXcgRXJyb3IoIkJhZCBjb2xvciAiK29uKFguYmdDb2xvcikuam9pbigifCIpKTt3ZSs9J3JnYj0iRkYnK0xvKFguYmdDb2xvci5yZ2IpKyciLz4nfWllLnB1c2goIjxmaWxsPiIrX2koInBhdHRlcm5GaWxsIix3''@;'; put 'put ''ZSx7cGF0dGVyblR5cGU6WC5wYXR0ZXJuVHlwZX0pKyI8L2ZpbGw+Iil9fSksJzxmaWxscyBjb3VudD0iJytpZS5sZW5ndGgrJyI+JytpZS5qb2luKCIiKSsiPC9maWxscz4ifSgoSC5TdHlsZXN8fHt9KS5GaWxsc3x8W10pLFhbWC5sZW5ndGhdPWZ1bmN0aW9uIEw5KEgpe3ZhciBpZT1bXTty''@;'; put 'put ''ZXR1cm4gSC5mb3JFYWNoKGZ1bmN0aW9uKFgpe3ZhciB3ZT1bXTt3ZS5wdXNoKGtkKFgubGVmdCwibGVmdCIpKSx3ZS5wdXNoKGtkKFgucmlnaHQsInJpZ2h0IikpLHdlLnB1c2goa2QoWC50b3AsInRvcCIpKSx3ZS5wdXNoKGtkKFguYm90dG9tLCJib3R0b20iKSksd2UucHVzaChrZChYLmRp''@;'; put 'put ''YWdvbmFsLCJkaWFnb25hbCIpKSxpZS5wdXNoKCI8Ym9yZGVyPiIrd2Uuam9pbigiIikrIjwvYm9yZGVyPiIpfSksJzxib3JkZXJzIGNvdW50PSInK2llLmxlbmd0aCsnIj4nK2llLmpvaW4oIiIpKyI8L2JvcmRlcnM+In0oKEguU3R5bGVzfHx7fSkuQm9yZGVyc3x8W10pLFhbWC5sZW5ndGhd''@;'; put 'put ''PWZ1bmN0aW9uIGVHKEgpe3ZhciBpZT1bJzx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIi8+J107aWYoSClmb3IodmFyIFg9MTtYPEgubGVuZ3RoOysrWClpZS5wdXNoKF9pKCJ4ZiIsbnVsbCx7bnVtRm10SWQ6SFtYXS5udW1GbXRJZHx8MCxmb250''@;'; put 'put ''SWQ6SFtYXS5mb250SWR8fDAsZmlsbElkOkhbWF0uZmlsbElkfHwwLGJvcmRlcklkOkhbWF0uYm9yZGVySWR8fDB9KSk7cmV0dXJuJzxjZWxsU3R5bGVYZnMgY291bnQ9IicraWUubGVuZ3RoKyciPicraWUuam9pbigiIikrIjwvY2VsbFN0eWxlWGZzPiJ9KGllLmNlbGxTdHlsZVhmcyksKHdl''@;'; put 'put ''PWZ1bmN0aW9uIEdSKEgpe3ZhciBpZT1bXTtyZXR1cm4gaWVbaWUubGVuZ3RoXT1faSgiY2VsbFhmcyIsbnVsbCksSC5mb3JFYWNoKGZ1bmN0aW9uKFgpe3ZhciB3ZT1YLmFsaWdubWVudDtkZWxldGUgWC5hbGlnbm1lbnQ7dmFyIHhlPVgucHJvdGVjdGlvbjtkZWxldGUgWC5wcm90ZWN0aW9u''@;'; put 'put ''O3ZhciBGZT13ZT9faSgiYWxpZ25tZW50IixudWxsLHdlKToiIjtGZSs9eGU/X2koInByb3RlY3Rpb24iLG51bGwse2hpZGRlbjp4ZS5oaWRkZW4/MTowLGxvY2tlZDp4ZS5lZGl0YWJsZT8wOjF9KToiIixpZVtpZS5sZW5ndGhdPV9pKCJ4ZiIsRmV8fG51bGwsWCksd2UmJihYLmFsaWdubWVu''@;'; put 'put ''dD13ZSkseGUmJihYLnByb3RlY3Rpb249eGUpfSksaWVbaWUubGVuZ3RoXT0iPC9jZWxsWGZzPiIsMj09PWllLmxlbmd0aD8iIjooaWVbMF09X2koImNlbGxYZnMiLG51bGwse2NvdW50OmllLmxlbmd0aC0yfSkucmVwbGFjZSgiLz4iLCI+IiksaWUuam9pbigiIikpfShpZS5jZWxsWGZzKSkm''@;'; put 'put ''JihYW1gubGVuZ3RoXT13ZSksWFtYLmxlbmd0aF09ZnVuY3Rpb24gU2QoSCl7dmFyIGllPVsnPGNlbGxTdHlsZSBuYW1lPSJOb3JtYWwiIHhmSWQ9IjAiIGJ1aWx0aW5JZD0iMCIvPiddO2lmKEgpZm9yKHZhciBYPTE7WDxILmxlbmd0aDsrK1gpaWUucHVzaChfaSgiY2VsbFN0eWxlIixudWxs''@;'; put 'put ''LHtuYW1lOkhbWF0ubmFtZSx4ZklkOlh9KSk7cmV0dXJuJzxjZWxsU3R5bGVzIGNvdW50PSInK2llLmxlbmd0aCsnIj4nK2llLmpvaW4oIiIpKyI8L2NlbGxTdHlsZXM+In0oaWUuY2VsbFN0eWxlWGZzKSxILlN0eWxlcy5EWEZ8fChILlN0eWxlcy5EWEY9W10pO3ZhciB4ZT1mdW5jdGlvbiBi''@;'; put 'put ''RShILGllLFgpe3ZhciB3ZT1bJzx0YWJsZVN0eWxlcyBjb3VudD0iJysoSHx8W10pLmxlbmd0aCsnIiBkZWZhdWx0VGFibGVTdHlsZT0iVGFibGVTdHlsZU1lZGl1bTkiIGRlZmF1bHRQaXZvdFN0eWxlPSJQaXZvdFN0eWxlTWVkaXVtNCInXTtyZXR1cm4gSCYmSC5sZW5ndGg/KHdlWzBdKz0i''@;'; put 'put ''PiIsSC5mb3JFYWNoKGZ1bmN0aW9uKHhlKXt3ZS5wdXNoKGZ1bmN0aW9uIE1kKEgsaWUsWCl7dmFyIHdlPVtdO1sid2hvbGVUYWJsZSIsImhlYWRlclJvdyIsInRvdGFsUm93IiwiZmlyc3RDb2x1bW4iLCJsYXN0Q29sdW1uIiwiZmlyc3RSb3dTdHJpcGUiLCJzZWNvbmRSb3dTdHJpcGUiLCJm''@;'; put 'put ''aXJzdENvbHVtblN0cmlwZSIsInNlY29uZENvbHVtblN0cmlwZSIsImZpcnN0SGVhZGVyQ2VsbCIsImxhc3RIZWFkZXJDZWxsIiwiZmlyc3RUb3RhbENlbGwiLCJsYXN0VG90YWxDZWxsIiwiZmlyc3RTdWJ0b3RhbENvbHVtbiIsInNlY29uZFN1YnRvdGFsQ29sdW1uIiwidGhpcmRTdWJ0b3Rh''@;'; put 'put ''bENvbHVtbiIsImZpcnN0U3VidG90YWxSb3ciLCJzZWNvbmRTdWJ0b3RhbFJvdyIsInRoaXJkU3VidG90YWxSb3ciLCJibGFua1JvdyIsImZpcnN0Q29sdW1uU3ViaGVhZGluZyIsInNlY29uZENvbHVtblN1YmhlYWRpbmciLCJ0aGlyZENvbHVtblN1YmhlYWRpbmciLCJmaXJzdFJvd1N1Ymhl''@;'; put 'put ''YWRpbmciLCJzZWNvbmRSb3dTdWJoZWFkaW5nIiwidGhpcmRSb3dTdWJoZWFkaW5nIiwicGFnZUZpZWxkTGFiZWxzIiwicGFnZUZpZWxkVmFsdWVzIl0uZm9yRWFjaChmdW5jdGlvbihGZSl7aWYoSFtGZV0pe3ZhciBaZT16NChpZSxIW0ZlXSk7d2UucHVzaCgnPHRhYmxlU3R5bGVFbGVtZW50''@;'; put 'put ''IGR4ZklkPSInK1plKyciIHR5cGU9IicrRmUrJyIvPicpfX0pO3ZhciB4ZT0nPHRhYmxlU3R5bGUgY291bnQ9Iicrd2UubGVuZ3RoKyciIHBpdm90PSInKyArISFILnBpdm90KyciIG5hbWU9IicrSC5uYW1lKyciJztyZXR1cm4gd2UubGVuZ3RoP3hlKyI+Iit3ZS5qb2luKCIiKSsiPC90YWJs''@;'; put 'put ''ZVN0eWxlPiI6eGUrIi8+In0oeGUsaWUpKX0pLHdlLmpvaW4oIiIpKyI8L3RhYmxlU3R5bGVzPiIpOndlWzBdKyIvPiJ9KChILlN0eWxlc3x8e30pLlRhYmxlfHxbXSxILlN0eWxlcy5EWEYpO3JldHVybiBYW1gubGVuZ3RoXT1mdW5jdGlvbiBfRShILGllKXtpZighSC5sZW5ndGgpcmV0dXJu''@;'; put 'put ''JzxkeGZzIGNvdW50PSIwIi8+Jzt2YXIgWD1bJzxkeGZzIGNvdW50PSInK0gubGVuZ3RoKyciPiddO3JldHVybiBILmZvckVhY2goZnVuY3Rpb24od2Upe1gucHVzaChmdW5jdGlvbiBQNChILGllKXt2YXIgWD17Ym9sZDoiYiIsaXRhbGljOiJpIix2YWxpZ246InZlcnRBbGlnbiJ9LHdlPVsi''@;'; put 'put ''PGR4Zj4iXSx4ZT1bXSxGZT1bXSxaZT1bXSxZZT1bXTtpZihvbihIKS5mb3JFYWNoKGZ1bmN0aW9uKHh0KXtzd2l0Y2goeHQpe2Nhc2UiYm9sZCI6Y2FzZSJpdGFsaWMiOmNhc2Uic3RyaWtlIjpjYXNlInVuZGVybGluZSI6Y2FzZSJjb2xvciI6Y2FzZSJ2YWxpZ24iOmNhc2Uic3oiOmNhc2Ui''@;'; put 'put ''bmFtZSI6Y2FzZSJvdXRsaW5lIjpjYXNlInNoYWRvdyI6Y2FzZSJjaGFyc2V0IjpjYXNlImZhbWlseSI6Y2FzZSJjb25kZW5zZSI6Y2FzZSJleHRlbmQiOmNhc2Uic2NoZW1lIjp4ZS5wdXNoKHh0KTticmVhaztjYXNlImJnQ29sb3IiOmNhc2UiZmdDb2xvciI6WmUucHVzaCh4dCk7YnJlYWs7''@;'; put 'put ''Y2FzZSJ6IjpGZS5wdXNoKHh0KTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOmNhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJkaWFnb25hbCI6Y2FzZSJ2ZXJ0aWNhbCI6Y2FzZSJob3Jpem9udGFsIjpZZS5wdXNoKHh0KTticmVhaztjYXNlInBhdHRlcm5UeXBlIjpjYXNlImRpYWdv''@;'; put 'put ''bmFsRG93biI6Y2FzZSJkaWFnb25hbFVwIjpjYXNlInN0b3BzIjpjYXNlImRlZ3JlZSI6YnJlYWs7ZGVmYXVsdDp0aHJvdyJVbnJlY29nbml6ZWQgIit4dCsiIGluIERYRiJ9fSkseGUubGVuZ3RoPjAmJih3ZS5wdXNoKCI8Zm9udD4iKSx4ZS5mb3JFYWNoKGZ1bmN0aW9uKHh0KXtzd2l0Y2go''@;'; put 'put ''eHQpe2Nhc2UiYm9sZCI6Y2FzZSJpdGFsaWMiOmNhc2Uic3RyaWtlIjpjYXNlIm91dGxpbmUiOmNhc2Uic2hhZG93IjpjYXNlImNvbmRlbnNlIjpjYXNlImV4dGVuZCI6d2UucHVzaCgiPCIrKFhbeHRdfHx4dCkrJyB2YWw9IicrKEhbeHRdPyIxIjoiMCIpKyciLz4nKTticmVhaztjYXNlImNv''@;'; put 'put ''bG9yIjp3ZS5wdXNoKFhzKEhbeHRdLHh0LCEwKSk7YnJlYWs7Y2FzZSJmYW1pbHkiOmNhc2UibmFtZSI6Y2FzZSJzeiI6Y2FzZSJzY2hlbWUiOndlLnB1c2goIjwiKyhYW3h0XXx8eHQpKycgdmFsPSInK0hbeHRdKyciLz4nKTticmVhaztjYXNlInVuZGVybGluZSI6d2UucHVzaCgnPHUgdmFs''@;'; put 'put ''PSInK085W0hbeHRdfHwwXSsnIi8+Jyk7YnJlYWs7Y2FzZSJ2YWxpZ24iOndlLnB1c2goJzx2ZXJ0QWxpZ24gdmFsPSInK0gudmFsaWduKygic3ViIj09SC52YWxpZ258fCJzdXBlciI9PUgudmFsaWduPyJzY3JpcHQiOiIiKSsnIi8+Jyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJVbnN1cHBvcnRl''@;'; put 'put ''ZCAiK3h0KyIgOiBmb250IERYRiJ9fSksd2UucHVzaCgiPC9mb250PiIpKSxGZS5sZW5ndGg+MCYmd2UucHVzaCgnPG51bUZtdCBmb3JtYXRDb2RlPSInK1JyKEgueikrJyIgbnVtRm10SWQ9IicrZnVuY3Rpb24gaDUoSCxpZSl7aWYoIm51bWJlciI9PXR5cGVvZiBIKXJldHVybiBIO3ZhciBY''@;'; put 'put ''PWllLnJldnNzZltudWxsIT1IP0g6IkdlbmVyYWwiXSx3ZT02MDtpZihudWxsPT1YKWZvcig7d2U8MzkyOysrd2UpaWYobnVsbD09aWUuc3NmW3dlXSlyZXR1cm4gRi5sb2FkKEgsd2UpLGllLnNzZlt3ZV09SCxpZS5yZXZzc2ZbSF09d2Usd2U7cmV0dXJuIFh9KEgueixpZSkrJyIvPicpLFpl''@;'; put 'put ''Lmxlbmd0aD4wJiYod2UucHVzaCgiPGZpbGw+Iiksd2UucHVzaCgiPHBhdHRlcm5GaWxsIisoSC5wYXR0ZXJuVHlwZT8nIHBhdHRlcm5UeXBlPSInK0gucGF0dGVyblR5cGUrJyI+JzoiPiIpKSxaZS5mb3JFYWNoKGZ1bmN0aW9uKHh0KXtzd2l0Y2goeHQpe2Nhc2UicGF0dGVyblR5cGUiOmJy''@;'; put 'put ''ZWFrO2Nhc2UiZmdDb2xvciI6Y2FzZSJiZ0NvbG9yIjp3ZS5wdXNoKFhzKEhbeHRdLHh0LCEwKSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJVbnN1cHBvcnRlZCAiK3h0KyIgOiBmaWxsIERYRiJ9fSksd2UucHVzaCgiPC9wYXR0ZXJuRmlsbD4iKSx3ZS5wdXNoKCI8L2ZpbGw+IikpLFtdLmxlbmd0''@;'; put 'put ''aD4wKXRocm93IlVuc3VwcG9ydGVkIGFsaWduIC0gRFhGIjtpZihZZS5sZW5ndGg+MD8od2UucHVzaChbIjxib3JkZXIiLG51bGwhPUguZGlhZ29uYWxEb3duPycgZGlhZ29uYWxEb3duPSInKyArISFILmRpYWdvbmFsRG93bisnIic6IiIsbnVsbCE9SC5kaWFnb25hbFVwPycgZGlhZ29uYWxV''@;'; put 'put ''cD0iJysgKyEhSC5kaWFnb25hbFVwKyciJzoiIiwiPiJdLmpvaW4oIiIpKSxZZS5mb3JFYWNoKGZ1bmN0aW9uKHh0KXt3ZS5wdXNoKGtkKEhbeHRdLHh0KSl9KSx3ZS5wdXNoKCI8L2JvcmRlcj4iKSk6KG51bGwhPUguZGlhZ29uYWxEb3dufHxudWxsIT1ILmRpYWdvbmFsVXApJiZ3ZS5wdXNo''@;'; put 'put ''KFsiPGJvcmRlciIsbnVsbCE9SC5kaWFnb25hbERvd24/JyBkaWFnb25hbERvd249IicrICshIUguZGlhZ29uYWxEb3duKyciJzoiIixudWxsIT1ILmRpYWdvbmFsVXA/JyBkaWFnb25hbFVwPSInKyArISFILmRpYWdvbmFsVXArJyInOiIiLCIvPiJdLmpvaW4oIiIpKSxbXS5sZW5ndGg+MCl0''@;'; put 'put ''aHJvdyJVbnN1cHBvcnRlZCBwcm90ZWN0aW9uIC0gRFhGIjtyZXR1cm4gMT09d2UubGVuZ3RoPyI8ZHhmLz4iOndlLmpvaW4oIiIpKyI8L2R4Zj4ifSh3ZSxpZSkpfSksWC5qb2luKCIiKSsiPC9keGZzPiJ9KEguU3R5bGVzLkRYRixpZSksWFtYLmxlbmd0aF09eGUsWC5sZW5ndGg+MiYmKFhb''@;'; put 'put ''WC5sZW5ndGhdPSI8L3N0eWxlU2hlZXQ+IixYWzFdPVhbMV0ucmVwbGFjZSgiLz4iLCI+IikpLFguam9pbigiIil9ZnVuY3Rpb24gSlIoSCxpZSxYKXtYfHwoWD1SaSg2KzQqaWUubGVuZ3RoKSksWC53cml0ZV9zaGlmdCgyLEgpLGx1KGllLFgpO3ZhciB3ZT1YLmxlbmd0aD5YLmw/WC5zbGlj''@;'; put 'put ''ZSgwLFgubCk6WDtyZXR1cm4gbnVsbD09WC5sJiYoWC5sPVgubGVuZ3RoKSx3ZX1mdW5jdGlvbiBuRyhIKXtyZXR1cm57Y29sb3I6VWcoSCkscG9zOkkyKEgpfX1kdC5TVFk9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hp''@;'; put 'put ''cHMvc3R5bGVzIjt2YXIgWFI9WyJub25lIiwic29saWQiLCJtZWRpdW1HcmF5IiwiZGFya0dyYXkiLCJsaWdodEdyYXkiLCJkYXJrSG9yaXpvbnRhbCIsImRhcmtWZXJ0aWNhbCIsImRhcmtEb3duIiwiZGFya1VwIiwiZGFya0dyaWQiLCJkYXJrVHJlbGxpcyIsImxpZ2h0SG9yaXpvbnRhbCIs''@;'; put 'put ''ImxpZ2h0VmVydGljYWwiLCJsaWdodERvd24iLCJsaWdodFVwIiwibGlnaHRHcmlkIiwibGlnaHRUcmVsbGlzIiwiZ3JheTEyNSIsImdyYXkwNjI1Il0sckc9dHQoWFIpLFA5PVsiZ2VuZXJhbCIsImxlZnQiLCJjZW50ZXIiLCJyaWdodCIsImZpbGwiLCJqdXN0aWZ5IiwiY2VudGVyQ29udGlu''@;'; put 'put ''dW91cyIsImRpc3RyaWJ1dGVkIl0seW09WyJ0b3AiLCJjZW50ZXIiLCJib3R0b20iLCJqdXN0aWZ5IiwiZGlzdHJpYnV0ZWQiXTtmdW5jdGlvbiBGOShILGllLFgpe1h8fChYPVJpKDE2KSksWC53cml0ZV9zaGlmdCgyLGllfHwwKSxYLndyaXRlX3NoaWZ0KDIsSC5udW1GbXRJZHx8MCksWC53''@;'; put 'put ''cml0ZV9zaGlmdCgyLEguZm9udElkfHwwKSxYLndyaXRlX3NoaWZ0KDIsSC5maWxsSWR8fDApLFgud3JpdGVfc2hpZnQoMixILmJvcmRlcklkfHwwKSxYLndyaXRlX3NoaWZ0KDEsSC5hbGlnbm1lbnQmJkguYWxpZ25tZW50LnRleHRSb3RhdGlvbnx8MCksWC53cml0ZV9zaGlmdCgxLEguYWxp''@;'; put 'put ''Z25tZW50JiZILmFsaWdubWVudC5pbmRlbnR8fDApO3ZhciB3ZT0wLHhlPTA7aWYoSC5hbGlnbm1lbnQpe2lmKEguYWxpZ25tZW50Lmhvcml6b250YWwpe3ZhciBGZT1QOS5pbmRleE9mKEguYWxpZ25tZW50Lmhvcml6b250YWwpO0ZlPDAmJihGZT0wKSx3ZXw9RmV9aWYoSC5hbGlnbm1lbnQu''@;'; put 'put ''dmVydGljYWwpe3ZhciBaZT15bS5pbmRleE9mKEguYWxpZ25tZW50LnZlcnRpY2FsKTtaZTwwJiYoWmU9Miksd2V8PVplPDwzfUguYWxpZ25tZW50LndyYXBUZXh0JiYod2V8PTY0KSxILmFsaWdubWVudC5zaHJpbmtUb0ZpdCYmKHhlfD0xKX1yZXR1cm4gWC53cml0ZV9zaGlmdCgxLHdlKSxY''@;'; put 'put ''LndyaXRlX3NoaWZ0KDEseGUpLFgud3JpdGVfc2hpZnQoMSwwKSxYLndyaXRlX3NoaWZ0KDEsMCksWH12YXIgVDM9WyJub25lIiwidGhpbiIsIm1lZGl1bSIsImRhc2hlZCIsImRvdHRlZCIsInRoaWNrIiwiZG91YmxlIiwiaGFpciIsIm1lZGl1bURhc2hlZCIsImRhc2hEb3QiLCJtZWRpdW1E''@;'; put 'put ''YXNoRG90IiwiZGFzaERvdERvdCIsIm1lZGl1bURhc2hEb3REb3QiLCJzbGFudERhc2hEb3QiXTtmdW5jdGlvbiBnNihIKXt2YXIgaWU9SC5yZWFkX3NoaWZ0KDEpO0gubCs9MTt2YXIgWD1VZyhIKTtyZXR1cm57c3R5bGU6VDNbaWVdLGNvbG9yOlh9fWZ1bmN0aW9uIG02KEgsaWUpe3JldHVy''@;'; put 'put ''biBpZXx8KGllPVJpKDEwKSksSCYmSC5zdHlsZSYmIiIhPUguc3R5bGUmJiJub25lIiE9SC5zdHlsZSYmLTEhPT1UMy5pbmRleE9mKEguc3R5bGUpPyhpZS53cml0ZV9zaGlmdCgxLFQzLmluZGV4T2YoSC5zdHlsZSkpLGllLndyaXRlX3NoaWZ0KDEsMCksSC5jb2xvcj9qZihILmNvbG9yLGll''@;'; put 'put ''KTooaWUud3JpdGVfc2hpZnQoNCwwKSxpZS53cml0ZV9zaGlmdCg0LDApKSk6KGllLndyaXRlX3NoaWZ0KDEsMCksaWUud3JpdGVfc2hpZnQoMSwwKSxpZS53cml0ZV9zaGlmdCg0LDApLGllLndyaXRlX3NoaWZ0KDQsMCkpLGllfWZ1bmN0aW9uIHY2KEgsaWUpe3JldHVybiBpZXx8KGllPVJp''@;'; put 'put ''KDUyKSksaWUud3JpdGVfc2hpZnQoNCxILnhmSWQpLGllLndyaXRlX3NoaWZ0KDIsMSksaWUud3JpdGVfc2hpZnQoMSwrSC5idWlsdGluSWQpLGllLndyaXRlX3NoaWZ0KDEsMCksWnAoSC5uYW1lfHwiIixpZSksaWUubGVuZ3RoPmllLmw/aWUuc2xpY2UoMCxpZS5sKTppZX1mdW5jdGlvbiB3''@;'; put 'put ''bShILGllKXshaWV8fCFpZS50aGVtZUVsZW1lbnRzfHwhaWUudGhlbWVFbGVtZW50cy5jbHJTY2hlbWV8fG51bGwhPUgudGhlbWUmJihILnJnYj1ROChpZS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtILnRoZW1lXS5yZ2IsSC50aW50fHwwKSl9ZnVuY3Rpb24gTUUoSCxpZSl7dmFyIFg9SjIo''@;'; put 'put ''KTtyZXR1cm4gQzAoWCwiQnJ0QmVnaW5TdHlsZVNoZWV0IiksZnVuY3Rpb24gTWIoSCxpZSl7aWYoaWUpe3ZhciBYPTA7W1s1LDhdLFsyMywyNl0sWzQxLDQ0XSxbNTAsMzkyXV0uZm9yRWFjaChmdW5jdGlvbih3ZSl7Zm9yKHZhciB4ZT13ZVswXTt4ZTw9d2VbMV07Kyt4ZSludWxsIT1pZVt4''@;'; put 'put ''ZV0mJisrWH0pLDAhPVgmJihDMChILCJCcnRCZWdpbkZtdHMiLCRsKFgpKSxbWzUsOF0sWzIzLDI2XSxbNDEsNDRdLFs1MCwzOTJdXS5mb3JFYWNoKGZ1bmN0aW9uKHdlKXtmb3IodmFyIHhlPXdlWzBdO3hlPD13ZVsxXTsrK3hlKW51bGwhPWllW3hlXSYmQzAoSCwiQnJ0Rm10IixKUih4ZSxp''@;'; put 'put ''ZVt4ZV0pKX0pLEMwKEgsIkJydEVuZEZtdHMiKSl9fShYLEguU1NGKSxmdW5jdGlvbiBrRShILGllKXt2YXIgWD1pZS5sZW5ndGg7MCE9WCYmKEMwKEgsIkJydEJlZ2luRm9udHMiLCRsKFgpKSxpZS5mb3JFYWNoKGZ1bmN0aW9uKHdlKXtDMChILCJCcnRGb250IixmdW5jdGlvbiBBbShILGll''@;'; put 'put ''KXtpZXx8KGllPVJpKDE1MykpLGllLndyaXRlX3NoaWZ0KDIsMjAqSC5zeiksZnVuY3Rpb24gRDIoSCxpZSl7aWV8fChpZT1SaSgyKSksaWUud3JpdGVfc2hpZnQoMSwoSC5pdGFsaWM/MjowKXwoSC5zdHJpa2U/ODowKXwoSC5vdXRsaW5lPzE2OjApfChILnNoYWRvdz8zMjowKXwoSC5jb25k''@;'; put 'put ''ZW5zZT82NDowKXwoSC5leHRlbmQ/MTI4OjApKSxpZS53cml0ZV9zaGlmdCgxLDApfShILGllKSxpZS53cml0ZV9zaGlmdCgyLEguYm9sZD83MDA6NDAwKTt2YXIgWD0wOyJzdXBlciI9PUgudmFsaWduP1g9MToic3ViIj09SC52YWxpZ24mJihYPTIpLGllLndyaXRlX3NoaWZ0KDIsWCksaWUu''@;'; put 'put ''d3JpdGVfc2hpZnQoMSxILnVuZGVybGluZXx8MCksaWUud3JpdGVfc2hpZnQoMSxILmZhbWlseXx8MCksaWUud3JpdGVfc2hpZnQoMSxILmNoYXJzZXR8fDApLGllLndyaXRlX3NoaWZ0KDEsMCksamYoSC5jb2xvcixpZSk7dmFyIHdlPTA7cmV0dXJuIm1ham9yIj09SC5zY2hlbWUmJih3ZT0x''@;'; put 'put ''KSwibWlub3IiPT1ILnNjaGVtZSYmKHdlPTIpLGllLndyaXRlX3NoaWZ0KDEsd2UpLGx1KEgubmFtZSxpZSksaWUubGVuZ3RoPmllLmw/aWUuc2xpY2UoMCxpZS5sKTppZX0od2UpKX0pLEMwKEgsIkJydEVuZEZvbnRzIikpfShYLChILlN0eWxlc3x8e30pLkZvbnRzfHxbXSksZnVuY3Rpb24g''@;'; put 'put ''U0UoSCxpZSl7dmFyIFg9aWUubGVuZ3RoOzAhPVgmJihDMChILCJCcnRCZWdpbkZpbGxzIiwkbChYKSksaWUuZm9yRWFjaChmdW5jdGlvbih3ZSl7QzAoSCwiQnJ0RmlsbCIsZnVuY3Rpb24gaUcoSCxpZSl7aWV8fChpZT1SaSg4NCkpO3ZhciBYPXJHW0gucGF0dGVyblR5cGVdO251bGw9PVgm''@;'; put 'put ''JihYPTQwKSxpZS53cml0ZV9zaGlmdCg0LFg9K1gpO3ZhciB3ZT0wO2lmKDQwIT1YKWZvcihqZihILmZnQ29sb3J8fHtpbmRleDo2NH0saWUpLGpmKEguYmdDb2xvcnx8e2luZGV4OjY1fSxpZSk7d2U8MTI7Kyt3ZSlpZS53cml0ZV9zaGlmdCg0LDApO2Vsc2V7Zm9yKDt3ZTw0Oysrd2UpaWUu''@;'; put 'put ''d3JpdGVfc2hpZnQoNCwwKTtmb3IoO3dlPDEyOysrd2UpaWUud3JpdGVfc2hpZnQoNCwwKX1yZXR1cm4gaWUubGVuZ3RoPmllLmw/aWUuc2xpY2UoMCxpZS5sKTppZX0od2UpKX0pLEMwKEgsIkJydEVuZEZpbGxzIikpfShYLChILlN0eWxlc3x8e30pLkZpbGxzfHxbXSksZnVuY3Rpb24gZUIo''@;'; put 'put ''SCxpZSl7dmFyIFg9aWUubGVuZ3RoOzAhPVgmJihDMChILCJCcnRCZWdpbkJvcmRlcnMiLCRsKFgpKSxpZS5mb3JFYWNoKGZ1bmN0aW9uKHdlKXtDMChILCJCcnRCb3JkZXIiLGZ1bmN0aW9uIFNiKEgsaWUpe3JldHVybiBpZXx8KGllPVJpKDUxKSksaWUud3JpdGVfc2hpZnQoMSwwKSxtNihI''@;'; put 'put ''LnRvcCxpZSksbTYoSC5ib3R0b20saWUpLG02KEgubGVmdCxpZSksbTYoSC5yaWdodCxpZSksbTYobnVsbCxpZSksaWUubGVuZ3RoPmllLmw/aWUuc2xpY2UoMCxpZS5sKTppZX0od2UpKX0pLEMwKEgsIkJydEVuZEJvcmRlcnMiKSl9KFgsKEguU3R5bGVzfHx7fSkuQm9yZGVyc3x8W10pLGZ1''@;'; put 'put ''bmN0aW9uIHRCKEgsaWUpe3ZhciBYPTE7aWYoaWUmJihYPWllLmxlbmd0aCksQzAoSCwiQnJ0QmVnaW5DZWxsU3R5bGVYRnMiLCRsKFgpKSxDMChILCJCcnRYRiIsRjkoe251bUZtdElkOjAsZm9udElkOjAsZmlsbElkOjAsYm9yZGVySWQ6MH0sNjU1MzUpKSxpZSlmb3IodmFyIHdlPTE7d2U8''@;'; put 'put ''aWUubGVuZ3RoOysrd2UpQzAoSCwiQnJ0WEYiLEY5KHtudW1GbXRJZDppZVt3ZV0ubnVtRm10SWR8fDAsZm9udElkOmllW3dlXS5mb250SWR8fDAsZmlsbElkOmllW3dlXS5maWxsSWR8fDAsYm9yZGVySWQ6aWVbd2VdLmJvcmRlcklkfHwwfSw2NTUzNSkpO0MwKEgsIkJydEVuZENlbGxTdHls''@;'; put 'put ''ZVhGcyIpfShYLGllLmNlbGxTdHlsZVhmcyksZnVuY3Rpb24gRWIoSCxpZSl7QzAoSCwiQnJ0QmVnaW5DZWxsWEZzIiwkbChpZS5sZW5ndGgpKSxpZS5mb3JFYWNoKGZ1bmN0aW9uKFgpe0MwKEgsIkJydFhGIixGOShYLDApKX0pLEMwKEgsIkJydEVuZENlbGxYRnMiKX0oWCxpZS5jZWxsWGZz''@;'; put 'put ''KSxmdW5jdGlvbiBuQihILGllKXt2YXIgWD0xO2lmKGllJiYoWD1pZS5sZW5ndGgpLEMwKEgsIkJydEJlZ2luU3R5bGVzIiwkbChYKSksQzAoSCwiQnJ0U3R5bGUiLHY2KHt4ZklkOjAsYnVpbHRpbklkOjAsbmFtZToiTm9ybWFsIn0pKSxpZSlmb3IodmFyIHdlPTE7d2U8aWUubGVuZ3RoOysr''@;'; put 'put ''d2UpQzAoSCwiQnJ0U3R5bGUiLHY2KHt4ZklkOndlLGJ1aWx0aW5JZDowLG5hbWU6aWVbd2VdLm5hbWV9KSk7QzAoSCwiQnJ0RW5kU3R5bGVzIil9KFgsaWUuY2VsbFN0eWxlWGZzKSxmdW5jdGlvbiByQihIKXtDMChILCJCcnRCZWdpbkRYRnMiLCRsKDApKSxDMChILCJCcnRFbmREWEZzIil9''@;'; put 'put ''KFgpLGZ1bmN0aW9uIGlCKEgpe0MwKEgsIkJydEJlZ2luVGFibGVTdHlsZXMiLGZ1bmN0aW9uIHFSKEgsaWUsWCl7dmFyIHdlPVJpKDIwNTIpO3JldHVybiB3ZS53cml0ZV9zaGlmdCg0LEgpLFpwKGllLHdlKSxacChYLHdlKSx3ZS5sZW5ndGg+d2UubD93ZS5zbGljZSgwLHdlLmwpOndlfSgw''@;'; put 'put ''LCJUYWJsZVN0eWxlTWVkaXVtOSIsIlBpdm90U3R5bGVNZWRpdW00IikpLEMwKEgsIkJydEVuZFRhYmxlU3R5bGVzIil9KFgpLEMwKFgsIkJydEVuZFN0eWxlU2hlZXQiKSxYLmVuZCgpfWR0LlRIRU1FPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQv''@;'; put 'put ''MjAwNi9yZWxhdGlvbnNoaXBzL3RoZW1lIjt2YXIgYUI9WyI8L2E6bHQxPiIsIjwvYTpkazE+IiwiPC9hOmx0Mj4iLCI8L2E6ZGsyPiIsIjwvYTphY2NlbnQxPiIsIjwvYTphY2NlbnQyPiIsIjwvYTphY2NlbnQzPiIsIjwvYTphY2NlbnQ0PiIsIjwvYTphY2NlbnQ1PiIsIjwvYTphY2NlbnQ2''@;'; put 'put ''PiIsIjwvYTpobGluaz4iLCI8L2E6Zm9sSGxpbms+Il07ZnVuY3Rpb24gYmMoSCxpZSxYKXtpZS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZT1bXTt2YXIgd2U9e307KEhbMF0ubWF0Y2goR3QpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4ZSl7dmFyIEZlPWVuKHhlKTtzd2l0Y2goRmVbMF0pe2Nh''@;'; put 'put ''c2UiPGE6Y2xyU2NoZW1lIjpjYXNlIjwvYTpjbHJTY2hlbWU+IjpjYXNlIjwvYTpzcmdiQ2xyPiI6Y2FzZSI8L2E6c3lzQ2xyPiI6YnJlYWs7Y2FzZSI8YTpzcmdiQ2xyIjp3ZS5yZ2I9RmUudmFsO2JyZWFrO2Nhc2UiPGE6c3lzQ2xyIjp3ZS5yZ2I9RmUubGFzdENscjticmVhaztjYXNlIjxh''@;'; put 'put ''OmRrMT4iOmNhc2UiPC9hOmRrMT4iOmNhc2UiPGE6bHQxPiI6Y2FzZSI8L2E6bHQxPiI6Y2FzZSI8YTpkazI+IjpjYXNlIjwvYTpkazI+IjpjYXNlIjxhOmx0Mj4iOmNhc2UiPC9hOmx0Mj4iOmNhc2UiPGE6YWNjZW50MT4iOmNhc2UiPC9hOmFjY2VudDE+IjpjYXNlIjxhOmFjY2VudDI+Ijpj''@;'; put 'put ''YXNlIjwvYTphY2NlbnQyPiI6Y2FzZSI8YTphY2NlbnQzPiI6Y2FzZSI8L2E6YWNjZW50Mz4iOmNhc2UiPGE6YWNjZW50ND4iOmNhc2UiPC9hOmFjY2VudDQ+IjpjYXNlIjxhOmFjY2VudDU+IjpjYXNlIjwvYTphY2NlbnQ1PiI6Y2FzZSI8YTphY2NlbnQ2PiI6Y2FzZSI8L2E6YWNjZW50Nj4i''@;'; put 'put ''OmNhc2UiPGE6aGxpbms+IjpjYXNlIjwvYTpobGluaz4iOmNhc2UiPGE6Zm9sSGxpbms+IjpjYXNlIjwvYTpmb2xIbGluaz4iOiIvIj09PUZlWzBdLmNoYXJBdCgxKT8oaWUudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbYUIuaW5kZXhPZihGZVswXSldPXdlLHdlPXt9KTp3ZS5uYW1lPUZlWzBd''@;'; put 'put ''LnNsaWNlKDMsRmVbMF0ubGVuZ3RoLTEpO2JyZWFrO2RlZmF1bHQ6aWYoWCYmWC5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgIitGZVswXSsiIGluIGNsclNjaGVtZSIpfX0pfWZ1bmN0aW9uIHhiKCl7fWZ1bmN0aW9uIEVFKCl7fXZhciBUYj0vPGE6Y2xyU2NoZW1lKFtePl0q''@;'; put 'put ''KT5bXHNcU10qPFwvYTpjbHJTY2hlbWU+LyxxdT0vPGE6Zm9udFNjaGVtZShbXj5dKik+W1xzXFNdKjxcL2E6Zm9udFNjaGVtZT4vLGJtPS88YTpmbXRTY2hlbWUoW14+XSopPltcc1xTXSo8XC9hOmZtdFNjaGVtZT4vLERiPS88YTp0aGVtZUVsZW1lbnRzKFtePl0qKT5bXHNcU10qPFwvYTp0''@;'; put 'put ''aGVtZUVsZW1lbnRzPi87ZnVuY3Rpb24gSDkoSCxpZSl7aWYoIUh8fDA9PT1ILmxlbmd0aClyZXR1cm4gSDkoTjkoKSk7dmFyIFgsd2U9e307aWYoIShYPUgubWF0Y2goRGIpKSl0aHJvdyBuZXcgRXJyb3IoInRoZW1lRWxlbWVudHMgbm90IGZvdW5kIGluIHRoZW1lIik7cmV0dXJuIGZ1bmN0''@;'; put 'put ''aW9uIEliKEgsaWUsWCl7dmFyIHdlO2llLnRoZW1lRWxlbWVudHM9e30sW1siY2xyU2NoZW1lIixUYixiY10sWyJmb250U2NoZW1lIixxdSx4Yl0sWyJmbXRTY2hlbWUiLGJtLEVFXV0uZm9yRWFjaChmdW5jdGlvbih4ZSl7aWYoISh3ZT1ILm1hdGNoKHhlWzFdKSkpdGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KHhlWzBdKyIgbm90IGZvdW5kIGluIHRoZW1lRWxlbWVudHMiKTt4ZVsyXSh3ZSxpZSxYKX0pfShYWzBdLHdlLGllKSx3ZS5yYXc9SCx3ZX1mdW5jdGlvbiBOOShILGllKXtpZihpZSYmaWUudGhlbWVYTFNYKXJldHVybiBpZS50aGVtZVhMU1g7aWYoSCYmInN0cmluZyI9PXR5cGVvZiBILnJh''@;'; put 'put ''dylyZXR1cm4gSC5yYXc7dmFyIFg9W2NuXTtyZXR1cm4gWFtYLmxlbmd0aF09JzxhOnRoZW1lIHhtbG5zOmE9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9kcmF3aW5nbWwvMjAwNi9tYWluIiBuYW1lPSJPZmZpY2UgVGhlbWUiPicsWFtYLmxlbmd0aF09IjxhOnRoZW1lRWxl''@;'; put 'put ''bWVudHM+IixYW1gubGVuZ3RoXT0nPGE6Y2xyU2NoZW1lIG5hbWU9Ik9mZmljZSI+JyxYW1gubGVuZ3RoXT0nPGE6ZGsxPjxhOnN5c0NsciB2YWw9IndpbmRvd1RleHQiIGxhc3RDbHI9IjAwMDAwMCIvPjwvYTpkazE+JyxYW1gubGVuZ3RoXT0nPGE6bHQxPjxhOnN5c0NsciB2YWw9IndpbmRv''@;'; put 'put ''dyIgbGFzdENscj0iRkZGRkZGIi8+PC9hOmx0MT4nLFhbWC5sZW5ndGhdPSc8YTpkazI+PGE6c3JnYkNsciB2YWw9IjFGNDk3RCIvPjwvYTpkazI+JyxYW1gubGVuZ3RoXT0nPGE6bHQyPjxhOnNyZ2JDbHIgdmFsPSJFRUVDRTEiLz48L2E6bHQyPicsWFtYLmxlbmd0aF09JzxhOmFjY2VudDE+''@;'; put 'put ''PGE6c3JnYkNsciB2YWw9IjRGODFCRCIvPjwvYTphY2NlbnQxPicsWFtYLmxlbmd0aF09JzxhOmFjY2VudDI+PGE6c3JnYkNsciB2YWw9IkMwNTA0RCIvPjwvYTphY2NlbnQyPicsWFtYLmxlbmd0aF09JzxhOmFjY2VudDM+PGE6c3JnYkNsciB2YWw9IjlCQkI1OSIvPjwvYTphY2NlbnQzPics''@;'; put 'put ''WFtYLmxlbmd0aF09JzxhOmFjY2VudDQ+PGE6c3JnYkNsciB2YWw9IjgwNjRBMiIvPjwvYTphY2NlbnQ0PicsWFtYLmxlbmd0aF09JzxhOmFjY2VudDU+PGE6c3JnYkNsciB2YWw9IjRCQUNDNiIvPjwvYTphY2NlbnQ1PicsWFtYLmxlbmd0aF09JzxhOmFjY2VudDY+PGE6c3JnYkNsciB2YWw9''@;'; put 'put ''IkY3OTY0NiIvPjwvYTphY2NlbnQ2PicsWFtYLmxlbmd0aF09JzxhOmhsaW5rPjxhOnNyZ2JDbHIgdmFsPSIwMDAwRkYiLz48L2E6aGxpbms+JyxYW1gubGVuZ3RoXT0nPGE6Zm9sSGxpbms+PGE6c3JnYkNsciB2YWw9IjgwMDA4MCIvPjwvYTpmb2xIbGluaz4nLFhbWC5sZW5ndGhdPSI8L2E6''@;'; put 'put ''Y2xyU2NoZW1lPiIsWFtYLmxlbmd0aF09JzxhOmZvbnRTY2hlbWUgbmFtZT0iT2ZmaWNlIj4nLFhbWC5sZW5ndGhdPSI8YTptYWpvckZvbnQ+IixYW1gubGVuZ3RoXT0nPGE6bGF0aW4gdHlwZWZhY2U9IkNhbWJyaWEiLz4nLFhbWC5sZW5ndGhdPSc8YTplYSB0eXBlZmFjZT0iIi8+JyxYW1gu''@;'; put 'put ''bGVuZ3RoXT0nPGE6Y3MgdHlwZWZhY2U9IiIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJKcGFuIiB0eXBlZmFjZT0iXHVmZjJkXHVmZjMzIFx1ZmYzMFx1MzBiNFx1MzBiN1x1MzBjM1x1MzBhZiIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIYW5nIiB0eXBlZmFj''@;'; put 'put ''ZT0iXHViOWQxXHVjNzQwIFx1YWNlMFx1YjUxNSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIYW5zIiB0eXBlZmFjZT0iXHU1YjhiXHU0ZjUzIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbnQiIHR5cGVmYWNlPSJcdTY1YjBcdTdkMzBcdTY2MGVcdTlhZDQi''@;'; put 'put ''Lz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQXJhYiIgdHlwZWZhY2U9IlRpbWVzIE5ldyBSb21hbiIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIZWJyIiB0eXBlZmFjZT0iVGltZXMgTmV3IFJvbWFuIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRo''@;'; put 'put ''YWkiIHR5cGVmYWNlPSJUYWhvbWEiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iRXRoaSIgdHlwZWZhY2U9Ik55YWxhIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkJlbmciIHR5cGVmYWNlPSJWcmluZGEiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0i''@;'; put 'put ''R3VqciIgdHlwZWZhY2U9IlNocnV0aSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJLaG1yIiB0eXBlZmFjZT0iTW9vbEJvcmFuIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IktuZGEiIHR5cGVmYWNlPSJUdW5nYSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2Ny''@;'; put 'put ''aXB0PSJHdXJ1IiB0eXBlZmFjZT0iUmFhdmkiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQ2FucyIgdHlwZWZhY2U9IkV1cGhlbWlhIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkNoZXIiIHR5cGVmYWNlPSJQbGFudGFnZW5ldCBDaGVyb2tlZSIvPicsWFtYLmxl''@;'; put 'put ''bmd0aF09JzxhOmZvbnQgc2NyaXB0PSJZaWlpIiB0eXBlZmFjZT0iTWljcm9zb2Z0IFlpIEJhaXRpIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRpYnQiIHR5cGVmYWNlPSJNaWNyb3NvZnQgSGltYWxheWEiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGhhYSIg''@;'; put 'put ''dHlwZWZhY2U9Ik1WIEJvbGkiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iRGV2YSIgdHlwZWZhY2U9Ik1hbmdhbCIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUZWx1IiB0eXBlZmFjZT0iR2F1dGFtaSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJU''@;'; put 'put ''YW1sIiB0eXBlZmFjZT0iTGF0aGEiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iU3lyYyIgdHlwZWZhY2U9IkVzdHJhbmdlbG8gRWRlc3NhIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik9yeWEiIHR5cGVmYWNlPSJLYWxpbmdhIi8+JyxYW1gubGVuZ3RoXT0nPGE6''@;'; put 'put ''Zm9udCBzY3JpcHQ9Ik1seW0iIHR5cGVmYWNlPSJLYXJ0aWthIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikxhb28iIHR5cGVmYWNlPSJEb2tDaGFtcGEiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iU2luaCIgdHlwZWZhY2U9Iklza29vbGEgUG90YSIvPicsWFtY''@;'; put 'put ''Lmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJNb25nIiB0eXBlZmFjZT0iTW9uZ29saWFuIEJhaXRpIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlZpZXQiIHR5cGVmYWNlPSJUaW1lcyBOZXcgUm9tYW4iLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVWlnaCIgdHlw''@;'; put 'put ''ZWZhY2U9Ik1pY3Jvc29mdCBVaWdodXIiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR2VvciIgdHlwZWZhY2U9IlN5bGZhZW4iLz4nLFhbWC5sZW5ndGhdPSI8L2E6bWFqb3JGb250PiIsWFtYLmxlbmd0aF09IjxhOm1pbm9yRm9udD4iLFhbWC5sZW5ndGhdPSc8YTpsYXRpbiB0''@;'; put 'put ''eXBlZmFjZT0iQ2FsaWJyaSIvPicsWFtYLmxlbmd0aF09JzxhOmVhIHR5cGVmYWNlPSIiLz4nLFhbWC5sZW5ndGhdPSc8YTpjcyB0eXBlZmFjZT0iIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkpwYW4iIHR5cGVmYWNlPSJcdWZmMmRcdWZmMzMgXHVmZjMwXHUzMGI0XHUzMGI3''@;'; put 'put ''XHUzMGMzXHUzMGFmIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbmciIHR5cGVmYWNlPSJcdWI5ZDFcdWM3NDAgXHVhY2UwXHViNTE1Ii8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbnMiIHR5cGVmYWNlPSJcdTViOGJcdTRmNTMiLz4nLFhbWC5sZW5ndGhd''@;'; put 'put ''PSc8YTpmb250IHNjcmlwdD0iSGFudCIgdHlwZWZhY2U9Ilx1NjViMFx1N2QzMFx1NjYwZVx1OWFkNCIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJBcmFiIiB0eXBlZmFjZT0iQXJpYWwiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGViciIgdHlwZWZhY2U9IkFy''@;'; put 'put ''aWFsIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRoYWkiIHR5cGVmYWNlPSJUYWhvbWEiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iRXRoaSIgdHlwZWZhY2U9Ik55YWxhIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkJlbmciIHR5cGVmYWNlPSJW''@;'; put 'put ''cmluZGEiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR3VqciIgdHlwZWZhY2U9IlNocnV0aSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJLaG1yIiB0eXBlZmFjZT0iRGF1blBlbmgiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iS25kYSIgdHlwZWZh''@;'; put 'put ''Y2U9IlR1bmdhIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikd1cnUiIHR5cGVmYWNlPSJSYWF2aSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJDYW5zIiB0eXBlZmFjZT0iRXVwaGVtaWEiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQ2hlciIgdHlw''@;'; put 'put ''ZWZhY2U9IlBsYW50YWdlbmV0IENoZXJva2VlIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IllpaWkiIHR5cGVmYWNlPSJNaWNyb3NvZnQgWWkgQmFpdGkiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGlidCIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBIaW1hbGF5YSIv''@;'; put 'put ''PicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUaGFhIiB0eXBlZmFjZT0iTVYgQm9saSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJEZXZhIiB0eXBlZmFjZT0iTWFuZ2FsIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRlbHUiIHR5cGVmYWNlPSJHYXV0''@;'; put 'put ''YW1pIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRhbWwiIHR5cGVmYWNlPSJMYXRoYSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJTeXJjIiB0eXBlZmFjZT0iRXN0cmFuZ2VsbyBFZGVzc2EiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iT3J5YSIg''@;'; put 'put ''dHlwZWZhY2U9IkthbGluZ2EiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTWx5bSIgdHlwZWZhY2U9IkthcnRpa2EiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTGFvbyIgdHlwZWZhY2U9IkRva0NoYW1wYSIvPicsWFtYLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0''@;'; put 'put ''PSJTaW5oIiB0eXBlZmFjZT0iSXNrb29sYSBQb3RhIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik1vbmciIHR5cGVmYWNlPSJNb25nb2xpYW4gQmFpdGkiLz4nLFhbWC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVmlldCIgdHlwZWZhY2U9IkFyaWFsIi8+JyxYW1gubGVuZ3Ro''@;'; put 'put ''XT0nPGE6Zm9udCBzY3JpcHQ9IlVpZ2giIHR5cGVmYWNlPSJNaWNyb3NvZnQgVWlnaHVyIi8+JyxYW1gubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikdlb3IiIHR5cGVmYWNlPSJTeWxmYWVuIi8+JyxYW1gubGVuZ3RoXT0iPC9hOm1pbm9yRm9udD4iLFhbWC5sZW5ndGhdPSI8L2E6Zm9udFNj''@;'; put 'put ''aGVtZT4iLFhbWC5sZW5ndGhdPSc8YTpmbXRTY2hlbWUgbmFtZT0iT2ZmaWNlIj4nLFhbWC5sZW5ndGhdPSI8YTpmaWxsU3R5bGVMc3Q+IixYW1gubGVuZ3RoXT0nPGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD4nLFhbWC5sZW5ndGhdPSc8YTpn''@;'; put 'put ''cmFkRmlsbCByb3RXaXRoU2hhcGU9IjEiPicsWFtYLmxlbmd0aF09IjxhOmdzTHN0PiIsWFtYLmxlbmd0aF09JzxhOmdzIHBvcz0iMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI1MDAwMCIvPjxhOnNhdE1vZCB2YWw9IjMwMDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9h''@;'; put 'put ''OmdzPicsWFtYLmxlbmd0aF09JzxhOmdzIHBvcz0iMzUwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iMzcwMDAiLz48YTpzYXRNb2QgdmFsPSIzMDAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLFhbWC5sZW5ndGhdPSc8YTpncyBwb3M9IjEwMDAwMCI+PGE6''@;'; put 'put ''c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSIxNTAwMCIvPjxhOnNhdE1vZCB2YWw9IjM1MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicsWFtYLmxlbmd0aF09IjwvYTpnc0xzdD4iLFhbWC5sZW5ndGhdPSc8YTpsaW4gYW5nPSIxNjIwMDAwMCIgc2NhbGVkPSIxIi8+JyxY''@;'; put 'put ''W1gubGVuZ3RoXT0iPC9hOmdyYWRGaWxsPiIsWFtYLmxlbmd0aF09JzxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+JyxYW1gubGVuZ3RoXT0iPGE6Z3NMc3Q+IixYW1gubGVuZ3RoXT0nPGE6Z3MgcG9zPSIwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjEwMDAw''@;'; put 'put ''MCIvPjxhOnNoYWRlIHZhbD0iMTAwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMTMwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxYW1gubGVuZ3RoXT0nPGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iNTAwMDAiLz48YTpzaGFkZSB2YWw9''@;'; put 'put ''IjEwMDAwMCIvPjxhOnNhdE1vZCB2YWw9IjM1MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicsWFtYLmxlbmd0aF09IjwvYTpnc0xzdD4iLFhbWC5sZW5ndGhdPSc8YTpsaW4gYW5nPSIxNjIwMDAwMCIgc2NhbGVkPSIwIi8+JyxYW1gubGVuZ3RoXT0iPC9hOmdyYWRGaWxsPiIsWFtYLmxl''@;'; put 'put ''bmd0aF09IjwvYTpmaWxsU3R5bGVMc3Q+IixYW1gubGVuZ3RoXT0iPGE6bG5TdHlsZUxzdD4iLFhbWC5sZW5ndGhdPSc8YTpsbiB3PSI5NTI1IiBjYXA9ImZsYXQiIGNtcGQ9InNuZyIgYWxnbj0iY3RyIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnNoYWRlIHZh''@;'; put 'put ''bD0iOTUwMDAiLz48YTpzYXRNb2QgdmFsPSIxMDUwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPSJzb2xpZCIvPjwvYTpsbj4nLFhbWC5sZW5ndGhdPSc8YTpsbiB3PSIyNTQwMCIgY2FwPSJmbGF0IiBjbXBkPSJzbmciIGFsZ249ImN0ciI+PGE6c29s''@;'; put 'put ''aWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9InNvbGlkIi8+PC9hOmxuPicsWFtYLmxlbmd0aF09JzxhOmxuIHc9IjM4MTAwIiBjYXA9ImZsYXQiIGNtcGQ9InNuZyIgYWxnbj0iY3RyIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1l''@;'; put 'put ''Q2xyIHZhbD0icGhDbHIiLz48L2E6c29saWRGaWxsPjxhOnByc3REYXNoIHZhbD0ic29saWQiLz48L2E6bG4+JyxYW1gubGVuZ3RoXT0iPC9hOmxuU3R5bGVMc3Q+IixYW1gubGVuZ3RoXT0iPGE6ZWZmZWN0U3R5bGVMc3Q+IixYW1gubGVuZ3RoXT0iPGE6ZWZmZWN0U3R5bGU+IixYW1gubGVu''@;'; put 'put ''Z3RoXT0iPGE6ZWZmZWN0THN0PiIsWFtYLmxlbmd0aF09JzxhOm91dGVyU2hkdyBibHVyUmFkPSI0MDAwMCIgZGlzdD0iMjAwMDAiIGRpcj0iNTQwMDAwMCIgcm90V2l0aFNoYXBlPSIwIj48YTpzcmdiQ2xyIHZhbD0iMDAwMDAwIj48YTphbHBoYSB2YWw9IjM4MDAwIi8+PC9hOnNyZ2JDbHI+''@;'; put 'put ''PC9hOm91dGVyU2hkdz4nLFhbWC5sZW5ndGhdPSI8L2E6ZWZmZWN0THN0PiIsWFtYLmxlbmd0aF09IjwvYTplZmZlY3RTdHlsZT4iLFhbWC5sZW5ndGhdPSI8YTplZmZlY3RTdHlsZT4iLFhbWC5sZW5ndGhdPSI8YTplZmZlY3RMc3Q+IixYW1gubGVuZ3RoXT0nPGE6b3V0ZXJTaGR3IGJsdXJS''@;'; put 'put ''YWQ9IjQwMDAwIiBkaXN0PSIyMzAwMCIgZGlyPSI1NDAwMDAwIiByb3RXaXRoU2hhcGU9IjAiPjxhOnNyZ2JDbHIgdmFsPSIwMDAwMDAiPjxhOmFscGhhIHZhbD0iMzUwMDAiLz48L2E6c3JnYkNscj48L2E6b3V0ZXJTaGR3PicsWFtYLmxlbmd0aF09IjwvYTplZmZlY3RMc3Q+IixYW1gubGVu''@;'; put 'put ''Z3RoXT0iPC9hOmVmZmVjdFN0eWxlPiIsWFtYLmxlbmd0aF09IjxhOmVmZmVjdFN0eWxlPiIsWFtYLmxlbmd0aF09IjxhOmVmZmVjdExzdD4iLFhbWC5sZW5ndGhdPSc8YTpvdXRlclNoZHcgYmx1clJhZD0iNDAwMDAiIGRpc3Q9IjIzMDAwIiBkaXI9IjU0MDAwMDAiIHJvdFdpdGhTaGFwZT0i''@;'; put 'put ''MCI+PGE6c3JnYkNsciB2YWw9IjAwMDAwMCI+PGE6YWxwaGEgdmFsPSIzNTAwMCIvPjwvYTpzcmdiQ2xyPjwvYTpvdXRlclNoZHc+JyxYW1gubGVuZ3RoXT0iPC9hOmVmZmVjdExzdD4iLFhbWC5sZW5ndGhdPSc8YTpzY2VuZTNkPjxhOmNhbWVyYSBwcnN0PSJvcnRob2dyYXBoaWNGcm9udCI+''@;'; put 'put ''PGE6cm90IGxhdD0iMCIgbG9uPSIwIiByZXY9IjAiLz48L2E6Y2FtZXJhPjxhOmxpZ2h0UmlnIHJpZz0idGhyZWVQdCIgZGlyPSJ0Ij48YTpyb3QgbGF0PSIwIiBsb249IjAiIHJldj0iMTIwMDAwMCIvPjwvYTpsaWdodFJpZz48L2E6c2NlbmUzZD4nLFhbWC5sZW5ndGhdPSc8YTpzcDNkPjxh''@;'; put 'put ''OmJldmVsVCB3PSI2MzUwMCIgaD0iMjU0MDAiLz48L2E6c3AzZD4nLFhbWC5sZW5ndGhdPSI8L2E6ZWZmZWN0U3R5bGU+IixYW1gubGVuZ3RoXT0iPC9hOmVmZmVjdFN0eWxlTHN0PiIsWFtYLmxlbmd0aF09IjxhOmJnRmlsbFN0eWxlTHN0PiIsWFtYLmxlbmd0aF09JzxhOnNvbGlkRmlsbD48''@;'; put 'put ''YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+JyxYW1gubGVuZ3RoXT0nPGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPSIxIj4nLFhbWC5sZW5ndGhdPSI8YTpnc0xzdD4iLFhbWC5sZW5ndGhdPSc8YTpncyBwb3M9IjAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0''@;'; put 'put ''aW50IHZhbD0iNDAwMDAiLz48YTpzYXRNb2QgdmFsPSIzNTAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLFhbWC5sZW5ndGhdPSc8YTpncyBwb3M9IjQwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjQ1MDAwIi8+PGE6c2hhZGUgdmFsPSI5OTAwMCIvPjxh''@;'; put 'put ''OnNhdE1vZCB2YWw9IjM1MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicsWFtYLmxlbmd0aF09JzxhOmdzIHBvcz0iMTAwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6c2hhZGUgdmFsPSIyMDAwMCIvPjxhOnNhdE1vZCB2YWw9IjI1NTAwMCIvPjwvYTpzY2hlbWVDbHI+PC9h''@;'; put 'put ''OmdzPicsWFtYLmxlbmd0aF09IjwvYTpnc0xzdD4iLFhbWC5sZW5ndGhdPSc8YTpwYXRoIHBhdGg9ImNpcmNsZSI+PGE6ZmlsbFRvUmVjdCBsPSI1MDAwMCIgdD0iLTgwMDAwIiByPSI1MDAwMCIgYj0iMTgwMDAwIi8+PC9hOnBhdGg+JyxYW1gubGVuZ3RoXT0iPC9hOmdyYWRGaWxsPiIsWFtY''@;'; put 'put ''Lmxlbmd0aF09JzxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+JyxYW1gubGVuZ3RoXT0iPGE6Z3NMc3Q+IixYW1gubGVuZ3RoXT0nPGE6Z3MgcG9zPSIwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjgwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMzAwMDAwIi8+PC9h''@;'; put 'put ''OnNjaGVtZUNscj48L2E6Z3M+JyxYW1gubGVuZ3RoXT0nPGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpzaGFkZSB2YWw9IjMwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMjAwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxYW1gubGVuZ3RoXT0iPC9hOmdz''@;'; put 'put ''THN0PiIsWFtYLmxlbmd0aF09JzxhOnBhdGggcGF0aD0iY2lyY2xlIj48YTpmaWxsVG9SZWN0IGw9IjUwMDAwIiB0PSI1MDAwMCIgcj0iNTAwMDAiIGI9IjUwMDAwIi8+PC9hOnBhdGg+JyxYW1gubGVuZ3RoXT0iPC9hOmdyYWRGaWxsPiIsWFtYLmxlbmd0aF09IjwvYTpiZ0ZpbGxTdHlsZUxz''@;'; put 'put ''dD4iLFhbWC5sZW5ndGhdPSI8L2E6Zm10U2NoZW1lPiIsWFtYLmxlbmd0aF09IjwvYTp0aGVtZUVsZW1lbnRzPiIsWFtYLmxlbmd0aF09IjxhOm9iamVjdERlZmF1bHRzPiIsWFtYLmxlbmd0aF09IjxhOnNwRGVmPiIsWFtYLmxlbmd0aF09JzxhOnNwUHIvPjxhOmJvZHlQci8+PGE6bHN0U3R5''@;'; put 'put ''bGUvPjxhOnN0eWxlPjxhOmxuUmVmIGlkeD0iMSI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTpsblJlZj48YTpmaWxsUmVmIGlkeD0iMyI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTpmaWxsUmVmPjxhOmVmZmVjdFJlZiBpZHg9IjIiPjxhOnNjaGVtZUNsciB2YWw9''@;'; put 'put ''ImFjY2VudDEiLz48L2E6ZWZmZWN0UmVmPjxhOmZvbnRSZWYgaWR4PSJtaW5vciI+PGE6c2NoZW1lQ2xyIHZhbD0ibHQxIi8+PC9hOmZvbnRSZWY+PC9hOnN0eWxlPicsWFtYLmxlbmd0aF09IjwvYTpzcERlZj4iLFhbWC5sZW5ndGhdPSI8YTpsbkRlZj4iLFhbWC5sZW5ndGhdPSc8YTpzcFBy''@;'; put 'put ''Lz48YTpib2R5UHIvPjxhOmxzdFN0eWxlLz48YTpzdHlsZT48YTpsblJlZiBpZHg9IjIiPjxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz48L2E6bG5SZWY+PGE6ZmlsbFJlZiBpZHg9IjAiPjxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz48L2E6ZmlsbFJlZj48YTplZmZlY3RSZWYgaWR4''@;'; put 'put ''PSIxIj48YTpzY2hlbWVDbHIgdmFsPSJhY2NlbnQxIi8+PC9hOmVmZmVjdFJlZj48YTpmb250UmVmIGlkeD0ibWlub3IiPjxhOnNjaGVtZUNsciB2YWw9InR4MSIvPjwvYTpmb250UmVmPjwvYTpzdHlsZT4nLFhbWC5sZW5ndGhdPSI8L2E6bG5EZWY+IixYW1gubGVuZ3RoXT0iPC9hOm9iamVj''@;'; put 'put ''dERlZmF1bHRzPiIsWFtYLmxlbmd0aF09IjxhOmV4dHJhQ2xyU2NoZW1lTHN0Lz4iLFhbWC5sZW5ndGhdPSI8L2E6dGhlbWU+IixYLmpvaW4oIiIpfWZ1bmN0aW9uIHVCKEgpe3ZhciBpZT1ILnJlYWRfc2hpZnQoMiksWD1ILnJlYWRfc2hpZnQoMiktNCx3ZT1baWVdO3N3aXRjaChpZSl7Y2Fz''@;'; put 'put ''ZSA0OmNhc2UgNTpjYXNlIDc6Y2FzZSA4OmNhc2UgOTpjYXNlIDEwOmNhc2UgMTE6Y2FzZSAxMzp3ZVsxXT1mdW5jdGlvbiBzQihIKXt2YXIgaWU9e307c3dpdGNoKGllLnhjbHJUeXBlPUgucmVhZF9zaGlmdCgyKSxpZS5uVGludFNoYWRlPUgucmVhZF9zaGlmdCgyKSxpZS54Y2xyVHlwZSl7''@;'; put 'put ''Y2FzZSAwOmNhc2UgNDpILmwrPTQ7YnJlYWs7Y2FzZSAxOmllLnhjbHJWYWx1ZT1mdW5jdGlvbiBURShILGllKXtyZXR1cm4gQ3MoSCxpZSl9KEgsNCk7YnJlYWs7Y2FzZSAyOmllLnhjbHJWYWx1ZT10NihIKTticmVhaztjYXNlIDM6aWUueGNsclZhbHVlPWZ1bmN0aW9uIHhFKEgpe3JldHVy''@;'; put 'put ''biBILnJlYWRfc2hpZnQoNCl9KEgpfXJldHVybiBILmwrPTgsaWV9KEgpO2JyZWFrO2Nhc2UgNjp3ZVsxXT1mdW5jdGlvbiBJRShILGllKXtyZXR1cm4gQ3MoSCxpZSl9KEgsWCk7YnJlYWs7Y2FzZSAxNDpjYXNlIDE1OndlWzFdPUgucmVhZF9zaGlmdCgxPT09WD8xOjIpO2JyZWFrO2RlZmF1''@;'; put 'put ''bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgRXh0UHJvcCB0eXBlOiAiK2llKyIgIitYKX1yZXR1cm4gd2V9ZnVuY3Rpb24gTGIoSCxpZSl7aWUuZm9yRWFjaChmdW5jdGlvbihYKXtzd2l0Y2goWFswXSl7Y2FzZSA0OmNhc2UgNTpjYXNlIDY6Y2FzZSA3OmNhc2UgODpjYXNlIDk6''@;'; put 'put ''Y2FzZSAxMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpicmVhaztjYXNlIDEzOkguZm9udCYmSC5mb250LmNvbG9yJiZBcnJheS5pc0FycmF5KFhbMV0ueGNsclZhbHVlKSYmKEguZm9udC5jb2xvci5yZ2I9YjMoWFsxXS54Y2xyVmFsdWUpKX19KX1mdW5jdGlvbiBIbChIKXtyZXR1cm4gSC85''@;'; put 'put ''MTQ0MDAqUjR9ZnVuY3Rpb24gJDgoSCxpZSl7dmFyIFg9e307aWYoSC5wb3MpWC54PUhsKEgucG9zLngpLFgueT1IbChILnBvcy55KTtlbHNle2lmKCFILmZyb20pdGhyb3ciYmFkIGFuY2hvciBzdGFydCI7WC5yPUguZnJvbS5yfHwwLFguYz1ILmZyb20uY3x8MCxILmZyb20uY09mZiYmKFgu''@;'; put 'put ''eD1IbChILmZyb20uY09mZikpLEguZnJvbS5yT2ZmJiYoWC55PUhsKEguZnJvbS5yT2ZmKSl9aWYoSC5leHQpWC53PUhsKEguZXh0LngpLFguaD1IbChILmV4dC55KTtlbHNle2lmKCFILnRvKXRocm93ImJhZCBhbmNob3IgZW5kIjtYLkM9SC50by5jLFguUj1ILnRvLnIsSC50by5jT2ZmJiYo''@;'; put 'put ''WC5YPUhsKEgudG8uY09mZikpLEgudG8uck9mZiYmKFguWT1IbChILnRvLnJPZmYpKX1yZXR1cm4gWH1mdW5jdGlvbiB5ZihILGllKXt2YXIgWD17eDotMSx5Oi0xLHc6LTEsaDotMX07aWYoSC5wb3MpWC54PUhsKEgucG9zLngpLFgueT1IbChILnBvcy55KTtlbHNle2lmKCFILmZyb20pdGhy''@;'; put 'put ''b3ciYmFkIGFuY2hvciBzdGFydCI7WC54PWZ1KGllLEguZnJvbS5jLCJDIikrSGwoSC5mcm9tLmNPZmYpLFgueT1mdShpZSxILmZyb20uciwiUiIpK0hsKEguZnJvbS5yT2ZmKX1pZihILmV4dClYLnc9SGwoSC5leHQueCksWC5oPUhsKEguZXh0LnkpO2Vsc2V7aWYoIUgudG8pdGhyb3ciYmFk''@;'; put 'put ''IGFuY2hvciBlbmQiO1gudz1mdShpZSxILnRvLmMsIkMiKStIbChILnRvLmNPZmYpLVgueCxYLmg9ZnUoaWUsSC50by5yLCJSIikrSGwoSC50by5yT2ZmKS1YLnl9cmV0dXJuIFh9ZnVuY3Rpb24gT2IoSCxpZSl7dmFyIFg9e3I6LTEsYzotMSx4Oi0xLHk6LTEsUjotMSxDOi0xLFg6LTEsWTot''@;'; put 'put ''MX07c3dpdGNoKEgudHlwZSl7Y2FzZSJ0d29DZWxsQW5jaG9yIjpYLnI9SC5mcm9tLnIsWC55PUhsKEguZnJvbS5yT2ZmKSxYLlI9SC50by5yLFguWT1IbChILnRvLnJPZmYpLFguYz1ILmZyb20uYyxYLng9SGwoSC5mcm9tLmNPZmYpLFguQz1ILnRvLmMsWC5YPUhsKEgudG8uY09mZik7YnJl''@;'; put 'put ''YWs7Y2FzZSJvbmVDZWxsQW5jaG9yIjpYLnI9SC5mcm9tLnIsWC55PUhsKEguZnJvbS5yT2ZmKTt2YXIgd2U9RWQoaWUsWC5yLFgueStIbChILmV4dC55KSk7WC5SPXdlWzBdLFguWT13ZVsxXSxYLmM9SC5mcm9tLmMsWC54PUhsKEguZnJvbS5jT2ZmKTt2YXIgeGU9X20oaWUsWC5jLFgueCtI''@;'; put 'put ''bChILmV4dC54KSk7WC5DPXhlWzBdLFguWD14ZVsxXTticmVhaztjYXNlImFic29sdXRlQW5jaG9yIjp2YXIgRmU9RWQoaWUsMCxIbChILnBvcy55KSk7WC5yPUZlWzBdLFgueT1GZVsxXTt2YXIgWmU9RWQoaWUsWC5yLFgueStIbChILmV4dC55KSk7WC5SPVplWzBdLFguWT1aZVsxXTt2YXIg''@;'; put 'put ''amU9RWQoaWUsMCxIbChILnBvcy54KSk7WC5jPWplWzBdLFgueD1qZVsxXTt2YXIgWWU9RWQoaWUsWC5jLFgueCtIbChILmV4dC54KSk7WC5DPVllWzBdLFguWD1ZZVsxXTticmVhaztkZWZhdWx0OnRocm93ImJhZCBhbmNob3IgdHlwZSAiK0gudHlwZX1yZXR1cm4gWH1mdW5jdGlvbiBERShI''@;'; put 'put ''LGllKXt2YXIgWD1ILnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8pO2llWyIhcG9zIl09e2M6K1hbMF0seDorWFsxXSxyOitYWzJdLHk6K1hbM10sQzorWFs0XSxYOitYWzVdLFI6K1hbNl0sWTorWFs3XX19ZnVuY3Rpb24gaEIoSCxpZSxYKXt2YXIgd2U9LTE7aWYobnVsbCE9SC5SfHxudWxsIT1I''@;'; put 'put ''LkMpd2U9MDtlbHNle2lmKG51bGw9PUgueHx8bnVsbD09SC55fHxudWxsPT1ILnd8fG51bGw9PUguaCl0aHJvdyJjYW5ub3QgcGFyc2UgYW5jaG9yICIrSlNPTi5zdHJpbmdpZnkoSCk7d2U9MSsyKiEoSC5jfHxILnIpfWlmKHdlIT1pZSl7c3dpdGNoKGllKXtjYXNlIDA6Y2FzZSAxOmlmKDMh''@;'; put 'put ''PXdlKWJyZWFrO3ZhciB4ZT1fbShYLEguY3x8MCxILnh8fDApO0guYz14ZVswXSxILng9eGVbMV07dmFyIEZlPUVkKFgsSC5yfHwwLEgueXx8MCk7SC5yPUZlWzBdLEgueT1GZVsxXTticmVhaztjYXNlIDM6aWYoMz09d2UpYnJlYWs7dmFyIFplPUguY3x8MCxqZT1ILnh8fDA7ZGVsZXRlIEgu''@;'; put 'put ''YyxkZWxldGUgSC54LEgueD0oWmU/VjkoWCxaZSk6MCkramU7dmFyIFllPUgucnx8MCxNdD1ILnl8fDA7ZGVsZXRlIEgucixkZWxldGUgSC55LEgueT0oWWU/cTgoWCxZZSk6MCkrTXQ7YnJlYWs7ZGVmYXVsdDp0aHJvdyJjb252ZXJ0X2FuY2hvciB1bnJlY29nbml6ZWQgdHlwZSAiK2llfXN3''@;'; put 'put ''aXRjaChpZSl7Y2FzZSAwOmlmKDA9PXdlKWJyZWFrO3ZhciB4dD1fbShYLEguY3x8MCwoSC54fHwwKStILncpO2RlbGV0ZSBILncsSC5DPXh0WzBdLEguWD14dFsxXTt2YXIgUnQ9RWQoWCxILnJ8fDAsKEgueXx8MCkrSC5oKTtkZWxldGUgSC5oLEguUj1SdFswXSxILlk9UnRbMV07YnJlYWs7''@;'; put 'put ''Y2FzZSAxOmNhc2UgMzppZigwIT13ZSlicmVhazt2YXIgVXQ9SC5DfHwwLG5uPUguWHx8MDtkZWxldGUgSC5DLGRlbGV0ZSBILlgsSC53PVY5KFgsVXQpK25uLShILmM/VjkoWCxILmMpOjApLShILnh8fDApO3ZhciBDbj1ILlJ8fDAsRHQ9SC5ZfHwwO2RlbGV0ZSBILlIsZGVsZXRlIEguWSxI''@;'; put 'put ''Lmg9cTgoWCxDbikrRHQtKEgucj9xOChYLEgucik6MCktKEgueXx8MCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJjb252ZXJ0X2FuY2hvciB1bnJlY29nbml6ZWQgdHlwZSAiK2llfX19ZnVuY3Rpb24gZEIoSCl7dmFyIGllPVtILmN8fDAsTWF0aC5yb3VuZChILnh8fDApLEgucnx8MCxNYXRoLnJv''@;'; put 'put ''dW5kKEgueXx8MCldO3JldHVybihpZT1pZS5jb25jYXQoSC5oJiZILnc/W2llWzBdLE1hdGgucm91bmQoaWVbMV0rSC53KSxpZVsyXSxNYXRoLnJvdW5kKGllWzNdK0guaCldOltILkN8fDAsTWF0aC5yb3VuZChILlh8fDApLEguUnx8MCxNYXRoLnJvdW5kKEguWXx8MCldKSkuam9pbigiLCAi''@;'; put 'put ''KX1mdW5jdGlvbiBxOChILGllKXtpZighSClyZXR1cm4gMDtmb3IodmFyIFg9MDstLWllPj0wOyl7dmFyIHdlPSgoSFsiIXJvd3MiXXx8W10pW2llXXx8e30pLmhweDtudWxsPT13ZSYmKHdlPSgoSFsiIXNoZWV0Rm9ybWF0Il18fHt9KS5yb3d8fHt9KS5ocHgpLG51bGw9PXdlJiYod2U9MjQp''@;'; put 'put ''LFgrPXdlfXJldHVybiBYfWZ1bmN0aW9uIFY5KEgsaWUpe2lmKCFIKXJldHVybiAwO2Zvcih2YXIgWD0wOy0taWU+PTA7KXt2YXIgd2U9KChIWyIhY29scyJdfHxbXSlbaWVdfHx7fSkud3B4O2lmKG51bGw9PXdlJiYod2U9KChIWyIhc2hlZXRGb3JtYXQiXXx8e30pLmNvbHx8e30pLndweCks''@;'; put 'put ''bnVsbD09d2Upe3ZhciB4ZT17d2NoOjguNDN9O3ljKHhlKSxIWyIhY29scyJdJiYoSFsiIWNvbHMiXVtpZV09eGUpLHdlPXhlLndweH1YKz13ZX1yZXR1cm4gWH1mdW5jdGlvbiBmdShILGllLFgpe3JldHVybiJDIj09WD9WOShILGllKTpxOChILGllKX1mdW5jdGlvbiBFZChILGllLFgpe3Zh''@;'; put 'put ''ciB3ZT1baWUsWF07aWYoIUgpcmV0dXJuIHdlO2Zvcig7Oyl7dmFyIHhlPShIWyIhcm93cyJdfHxbXSlbd2VbMF1dfHx7fTtpZih4ZS5oaWRkZW4pKyt3ZVswXTtlbHNle3ZhciBGZT14ZS5ocHg7aWYobnVsbD09RmUmJihGZT0oKEhbIiFzaGVldEZvcm1hdCJdfHx7fSkucm93fHx7fSkuaHB4''@;'; put 'put ''KSxudWxsPT1GZSYmKEZlPUFmKDE1KSksd2VbMV08RmUpYnJlYWs7d2VbMF0rKyx3ZVsxXS09RmV9fXJldHVybiB3ZX1mdW5jdGlvbiBfbShILGllLFgpe3ZhciB3ZT1baWUsWF07aWYoIUgpcmV0dXJuIHdlO2Zvcig7Oyl7dmFyIHhlPShIWyIhY29scyJdfHxbXSlbd2VbMF1dfHx7fTtpZih4''@;'; put 'put ''ZS5oaWRkZW58fDA9PT14ZS53cHgpKyt3ZVswXTtlbHNle3ZhciBGZT14ZS53cHg7aWYobnVsbD09RmUmJihGZT0oKEhbIiFzaGVldEZvcm1hdCJdfHx7fSkuY29sfHx7fSkud3B4KSxudWxsPT1GZSl7dmFyIFplPXt3Y2g6OC40M307eWMoWmUpLEhbIiFjb2xzIl0mJihIWyIhY29scyJdW3dl''@;'; put 'put ''WzBdXT1aZSksRmU9WmUud3B4fWlmKHdlWzFdPEZlKWJyZWFrO3dlWzBdKyssd2VbMV0tPUZlfX1yZXR1cm4gd2V9ZnVuY3Rpb24gTG8oSCl7cmV0dXJuKCIwMDAwMDAiKygibnVtYmVyIj09dHlwZW9mIEg/SC50b1N0cmluZygxNik6SCkpLnNsaWNlKC02KX1mdW5jdGlvbiBYcyhILGllLFgp''@;'; put 'put ''e3ZhciB3ZT0ic3RyaW5nIj09dHlwZW9mIGllPyEhWDohIWllOyJzdHJpbmciIT10eXBlb2YgaWUmJihpZT0iY29sb3IiKTt2YXIgeGU9IjwiK2llKyIgIjtyZXR1cm4gSC5hdXRvP3hlKydhdXRvPSIxIi8+JzpILmluZGV4JiZudWxsPT1ILnJnYj94ZSsnaW5kZXhlZD0iJytILmluZGV4Kyci''@;'; put 'put ''Lz4nOm51bGwhPUgudGhlbWU/eGUrJ3RoZW1lPSInK0gudGhlbWUrJyInKyhILnRpbnQ/JyB0aW50PSInK0gudGludCsnIic6IiIpKyIvPiI6bnVsbCE9SC5yZ2I/eGUrJ3JnYj0iJysod2U/IkZGIjoiIikrTG8oSC5yZ2IpKyciLz4nOnhlKyIvPiJ9ZnVuY3Rpb24gUmIoSCxpZSl7aWYoIUh8''@;'; put 'put ''fG51bGw9PUgucmdiKXJldHVybiBpZTtmb3IodmFyIFg9KCIwMDAwMDAiK0gucmdiLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTYpLHdlPVtYLnNsaWNlKDAsMiksWC5zbGljZSgyLDQpLFguc2xpY2UoNCw2KV0ubWFwKGZ1bmN0aW9uKFplKXtyZXR1cm4gcGFyc2VJbnQoWmUsMTYpfSkseGU9MDt4''@;'; put 'put ''ZTx1dS5sZW5ndGg7Kyt4ZSl7dmFyIEZlPXV1W3hlXTtpZihGZVswXT09d2VbMF0mJkZlWzFdPT13ZVsxXSYmRmVbMl09PXdlWzJdKXJldHVybiB4ZX1yZXR1cm4gdXUubGVuZ3RoPDY0Pyh1dS5wdXNoKFt3ZVswXSx3ZVsxXSx3ZVsyXV0pLHV1Lmxlbmd0aC0xKTppZX1mdW5jdGlvbiBJMyhI''@;'; put 'put ''KXt2YXIgaWU9WyIiLCIiLCIiXTtpZighSClyZXR1cm5bXTt2YXIgWD0iIix3ZT1IJiZILnM/ZnVuY3Rpb24gZTUoSCl7dmFyIGllPVsiIiwiIl07aWYoIUgpcmV0dXJuIGllO2lmKEguc3omJihpZVswXSs9IiYiK0guc3osaWVbMV09IiYxMiIraWVbMV0pLEgubmFtZSYmKGllWzBdKz0nJiIn''@;'; put 'put ''K0gubmFtZSsnLFJlZ3VsYXIiJyxpZVsxXT0nJiItLFJlZ3VsYXIiJytpZVsxXSksSC5ib2xkJiYoaWVbMF0rPSImQiIsaWVbMV09IiZCIitpZVsxXSksSC51bmRlcmxpbmUpe3ZhciBYPTI9PUgudW5kZXJsaW5lPyImRSI6IiZVIjtpZVswXSs9WCxpZVsxXT1YK2llWzFdfXJldHVybiBILml0''@;'; put 'put ''YWxpYyYmKGllWzBdKz0iJkkiLGllWzFdPSImSSIraWVbMV0pLEguY29sb3ImJm51bGwhPUguY29sb3IucmdiJiYoaWVbMF0rPSImSyIrTG8oSC5jb2xvci5yZ2IpLGllWzFdKz0iJkswMDAwMDAiKSxILnN0cmlrZSYmKGllWzBdKz0iJlMiLGllWzFdPSImUyIraWVbMV0pLCJzdXBlciI9PUgu''@;'; put 'put ''dmFsaWduJiYoaWVbMF0rPSImWCIsaWVbMV09IiZYIitpZVsxXSksInN1YiI9PUgudmFsaWduJiYoaWVbMF0rPSImWSIsaWVbMV09IiZZIitpZVsxXSksaWV9KEgucyk6WyIiLCIiXTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIEg/W0gsSCxIXTpudWxsIT1ILmZpcnN0fHxudWxsIT1ILmV2ZW58''@;'; put 'put ''fG51bGwhPUgub2RkPyhudWxsIT1ILm9kZCYmKGllWzBdPUkzKEgub2RkKVswXSksdm9pZCAwPT09SC5maXJzdCYmaWVbMF0mJihpZVsxXT1pZVswXSksbnVsbCE9SC5maXJzdCYmKGllWzFdPUkzKEguZmlyc3QpWzBdKSxudWxsIT1ILmV2ZW4mJihpZVsyXT1JMyhILmV2ZW4pWzBdKSxpZSk6''@;'; put 'put ''SC5sZWZ0fHxILmNlbnRlcnx8SC5yaWdodD8oSC5sZWZ0JiYoWCs9IiZMIitJMyhILmxlZnQpWzBdKSxILmNlbnRlciYmKFgrPSImQyIrSTMoSC5jZW50ZXIpWzBdKSxILnJpZ2h0JiYoWCs9IiZSIitJMyhILnJpZ2h0KVswXSksW1gsWCxYXSk6bnVsbCE9SC52P1tYPXdlWzBdK0gudi5yZXBs''@;'; put 'put ''YWNlKC8mL2csIiYmIikrd2VbMV0sWCxYXTpudWxsIT1ILnc/W1g9d2VbMF0rSC53K3dlWzFdLFgsWF06QXJyYXkuaXNBcnJheShILlIpPyhILlIuZm9yRWFjaChmdW5jdGlvbih4ZSl7WCs9STMoeGUpWzBdfSksW1gsWCxYXSk6W119dmFyIFo5PXsxOiJMZXR0ZXIiLDM6IlRhYmxvaWQiLDU6''@;'; put 'put ''IkxlZ2FsIiw3OiJFeGVjdXRpdmUiLDg6IkEzIiw5OiJBNCIsMTE6IkE1IiwxMjoiQjQiLDEzOiJCNSIsMTQ6IkZvbGlvIiwyMDoiRW52ZWxvcGUiLDM3OiJNb25hcmNoIiw3MDoiQTYifSxQYj10dChaOSk7ZHQuQ09OTj0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmlj''@;'; put 'put ''ZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jb25uZWN0aW9ucyI7dmFyIHk2PV9pKCJleHRlcm5hbExpbmsiLG51bGwse3htbG5zOlgwLm1haW5bMF19KTtkdC5JTUc9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hp''@;'; put 'put ''cHMvaW1hZ2UiLGR0LkRSQVc9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZHJhd2luZyI7dmFyIE9FPXt0OiJ0b3AiLGN0cjoiY2VudGVyIixiOiJib3R0b20iLGp1c3Q6InRvcCIsZGlzdDoidG9wIn0sSGI9e2N0''@;'; put 'put ''cjoiY2VudGVyIixkaXN0OiJjZW50ZXIiLGp1c3Q6ImNlbnRlciIsanVzdExvdzoiY2VudGVyIixsOiJsZWZ0IixyOiJyaWdodCIsdGhhaURpc3Q6ImNlbnRlciJ9O2Z1bmN0aW9uIE5iKCl7dmFyIEg9W2NuXTtyZXR1cm4gSC5wdXNoKCc8eGRyOndzRHIgeG1sbnM6eGRyPSJodHRwOi8vc2No''@;'; put 'put ''ZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvZHJhd2luZ21sLzIwMDYvc3ByZWFkc2hlZXREcmF3aW5nIiB4bWxuczphPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvZHJhd2luZ21sLzIwMDYvbWFpbiIvPicpLEguam9pbigiIil9ZnVuY3Rpb24gQkUoSCl7dmFyIFgsaWU9SFsi''@;'; put 'put ''IWRhdGEiXTtyZXR1cm4iYmFzZTY0Ij09PUhbIiFkYXRhdHlwZSJdPygoWD1pZS5tYXRjaCgvXmRhdGE6LiosLykpJiYoaWU9aWUuc2xpY2UoWFswXS5sZW5ndGgpKSxTZS5kZWNvZGUoaWUpKTppZX1mdW5jdGlvbiB6OShILGllLFgsd2UseGUpe3ZhciBGZT17c3R5bGU6e30saGVhZGVyOjB9''@;'; put 'put ''LFplPSExO0gucmVwbGFjZShHdCxmdW5jdGlvbihqZSl7dmFyIFllPWVuKGplKTtzd2l0Y2goSW4oWWVbMF0pKXtjYXNlIjw/eG1sIjpjYXNlIjwvdGFibGU+IjpjYXNlIjwvYXV0b0ZpbHRlcj4iOmNhc2UiPHNvcnRTdGF0ZSI6Y2FzZSI8c29ydFN0YXRlPiI6Y2FzZSI8L3NvcnRTdGF0ZT4i''@;'; put 'put ''OmNhc2UiPC90YWJsZUNvbHVtbnMiOmNhc2UiPC90YWJsZUNvbHVtbnM+IjpjYXNlIjwvdGFibGVDb2x1bW4+IjpjYXNlIjxjYWxjdWxhdGVkQ29sdW1uRm9ybXVsYT4iOmNhc2UiPGNhbGN1bGF0ZWRDb2x1bW5Gb3JtdWxhIjpjYXNlIjwvY2FsY3VsYXRlZENvbHVtbkZvcm11bGE+IjpjYXNl''@;'; put 'put ''Ijx0b3RhbHNSb3dGb3JtdWxhPiI6Y2FzZSI8dG90YWxzUm93Rm9ybXVsYSI6Y2FzZSI8L3RvdGFsc1Jvd0Zvcm11bGE+IjpjYXNlIjx4bWxDb2x1bW5Qcj4iOmNhc2UiPHhtbENvbHVtblByIjpjYXNlIjwveG1sQ29sdW1uUHI+IjpjYXNlIjxzb3J0Q29uZGl0aW9uPiI6Y2FzZSI8c29ydENv''@;'; put 'put ''bmRpdGlvbiI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6Y2FzZSI8ZXh0THN0Lz4iOmJyZWFrO2Nhc2UiPHRhYmxlIjpZZS5yZWYmJihGZS5yZWY9WWUucmVmKSxZZS5uYW1lP0ZlLm5hbWU9WWUubmFtZTpZZS5kaXNwbGF5TmFtZSYmKEZlLm5hbWU9WWUu''@;'; put 'put ''ZGlzcGxheU5hbWUpLG51bGwhPVllLmhlYWRlcnJvd2NvdW50JiYxIT0rWWUuaGVhZGVycm93Y291bnQ/RmUuaGVhZGVyPStZZS5oZWFkZXJyb3djb3VudDpudWxsPT1ZZS5oZWFkZXJyb3djb3VudCYmKEZlLmhlYWRlcj0xKTticmVhaztjYXNlIjxhdXRvRmlsdGVyIjpjYXNlIjxhdXRvRmls''@;'; put 'put ''dGVyPiI6RmUuZmlsdGVyPSEwO2JyZWFrO2Nhc2UiPHRhYmxlQ29sdW1ucyI6Y2FzZSI8dGFibGVDb2x1bW5zPiI6RmUuY29scz1bXTticmVhaztjYXNlIjx0YWJsZVN0eWxlSW5mbyI6WWUuc2hvd1Jvd1N0cmlwZXMmJihGZS5zdHlsZS5yb3dzdHJpcGU9RGkoWWUuc2hvd1Jvd1N0cmlwZXMp''@;'; put 'put ''KSxZZS5zaG93Q29sdW1uU3RyaXBlcyYmKEZlLnN0eWxlLmNvbHN0cmlwZT1EaShZZS5zaG93Q29sdW1uU3RyaXBlcykpLFllLnNob3dGaXJzdENvbHVtbiYmKEZlLnN0eWxlLmNvbGZpcnN0PURpKFllLnNob3dGaXJzdENvbHVtbikpLFllLnNob3dMYXN0Q29sdW1uJiYoRmUuc3R5bGUuY29s''@;'; put 'put ''bGFzdD1EaShZZS5zaG93TGFzdENvbHVtbikpLFllLm5hbWUmJihGZS5zdHlsZS5uYW1lPVllLm5hbWUucmVwbGFjZSgvXlRhYmxlU3R5bGUvLCIiKSk7YnJlYWs7Y2FzZSI8dGFibGVDb2x1bW4iOmNhc2UiPHRhYmxlQ29sdW1uPiI6RmUuY29scy5wdXNoKHtpZDorWWUuaWQsbmFtZTpZZS5u''@;'; put 'put ''YW1lfSk7YnJlYWs7Y2FzZSI8ZmlsdGVyQ29sdW1uPiI6Y2FzZSI8ZmlsdGVyQ29sdW1uIjpjYXNlIjxjdXN0b21GaWx0ZXJzIjpjYXNlIjxjdXN0b21GaWx0ZXJzPiI6Y2FzZSI8ZXh0IjpaZT0hMDticmVhaztjYXNlIjwvZmlsdGVyQ29sdW1uPiI6Y2FzZSI8L2N1c3RvbUZpbHRlcnM+Ijpj''@;'; put 'put ''YXNlIjwvZXh0PiI6WmU9ITE7YnJlYWs7ZGVmYXVsdDppZighWmUmJnhlLldURil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK1llWzBdKyIgaW4gdGFibGUiKX1yZXR1cm4gamV9KSxGZS5maWx0ZXJ8fChGZS5maWx0ZXI9ITEpLEZlLnN0eWxlLm5hbWUmJiFGZS5zdHlsZS5uYW1l''@;'; put 'put ''Lm1hdGNoKC9eKExpZ2h0fE1lZGl1bXxEYXJrKVxkKyQvKSYmWC5UYWJsZSYmWC5UYWJsZS5mb3JFYWNoKGZ1bmN0aW9uKGplKXsoamUubmFtZT09RmUuc3R5bGUubmFtZXx8amUucmF3bmFtZT09RmUuc3R5bGUubmFtZSkmJihGZS5zdHlsZS5yYXc9bG4oamUpKX0pLGllWyIhdGFibGVzIl0u''@;'; put 'put ''cHVzaChGZSl9ZnVuY3Rpb24gVmIoSCxpZSxYLHdlKXtILmZvckVhY2goZnVuY3Rpb24oeGUsRmUpe3ZhciBaZT1pZS5TaGVldHNbaWUuU2hlZXROYW1lc1t4ZVswXV1dLGplPSJ4bC90YWJsZXMvdGFibGUiKyh4ZVswXSsxKSsiXyIreGVbMV0rIi54bWwiO3dlLnRhYmxlcy5wdXNoKGplKTt2''@;'; put 'put ''YXIgWWU9eGVbMl0ucmVmfHxaZVsiIXJlZiJdOyJzdHJpbmciIT10eXBlb2YgWWUmJihZZT1mYShZZSkpO3ZhciBNdD1GbyhZZSkseHQ9eGVbMl0ubmFtZXx8InNqc3RibF8iK3hlWzBdKyJfIit4ZVsxXSxSdD1bY25dLFV0PSFucih4ZVsyXS5oZWFkZXIpLG5uPVV0JiYhbnIoeGVbMl0uZmls''@;'; put 'put ''dGVyKTtSdC5wdXNoKCc8dGFibGUgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIgaWQ9IicrKEZlKzEpKyciIG5hbWU9IicrUnIoeHQpKyciIGRpc3BsYXlOYW1lPSInK1JyKHh0KSsnIiByZWY9IicrWWUrJyIgJysobnVs''@;'; put 'put ''bCE9eGVbMl0uaGVhZGVyJiYxIT14ZVsyXS5oZWFkZXI/J2hlYWRlclJvd0NvdW50PSInKyh4ZVsyXS5oZWFkZXJ8fDApKyciICc6IiIpKyI+Iiksbm4mJlJ0LnB1c2goJzxhdXRvRmlsdGVyIHJlZj0iJytZZSsnIi8+JyksUnQucHVzaCgnPHRhYmxlQ29sdW1ucyBjb3VudD0iJysoTXQuZS5j''@;'; put 'put ''LU10LnMuYysxKSsnIj4nKTtmb3IodmFyIENuPVtdLER0PU10LnMuYztEdDw9TXQuZS5jOysrRHQpaWYoVXQpe2Zvcih2YXIgenQ9WTAoe3I6TXQucy5yLGM6RHR9KSxQbj1aZVt6dF0sVG49eGVbMl0uY29scyYmeGVbMl0uY29sc1tEdC1NdC5zLmNdJiZ4ZVsyXS5jb2xzW0R0LU10LnMuY10u''@;'; put 'put ''bmFtZXx8UG4mJihQbi53fHxQbi52KXx8IkNvbHVtbiAiKyhEdC1NdC5zLmMrMSksT249VG4sWW49MTtDbi5pbmRleE9mKE9uKT4tMSYmKytZbjwxNjM4NDspT249VG4rWW47aWYoT24hPVRuKXRocm93InRhYmxlIGNvbHVtbnMgIitEdCsiIGFuZCAiKyhDbi5pbmRleE9mKFRuKStNdC5zLmMp''@;'; put 'put ''KyIgaGF2ZSB0aGUgc2FtZSBoZWFkZXIgJyIrVG4rIic7IHRyeSBzZXR0aW5nIGNlbGwgIit6dCsiIHRvICciK09uKyInIjtDbi5wdXNoKE9uKSxSdC5wdXNoKCc8dGFibGVDb2x1bW4gaWQ9IicrKHhlWzJdLmNvbHMmJnhlWzJdLmNvbHNbRHQtTXQucy5jXSYmbnVsbCE9eGVbMl0uY29sc1tE''@;'; put 'put ''dC1NdC5zLmNdLmlkP3hlWzJdLmNvbHNbRHQtTXQucy5jXS5pZDpEdC1NdC5zLmMrMSkrJyIgbmFtZT0iJytScihPbikrJyIvPicpfWVsc2UgUnQucHVzaCh4ZVsyXS5jb2xzJiZ4ZVsyXS5jb2xzW0R0LU10LnMuY10/Jzx0YWJsZUNvbHVtbiBpZD0iJyt4ZVsyXS5jb2xzW0R0LU10LnMuY10u''@;'; put 'put ''aWQrJyIgbmFtZT0iJyt4ZVsyXS5jb2xzW0R0LU10LnMuY10ubmFtZSsnIi8+JzonPHRhYmxlQ29sdW1uIGlkPSInKyhEdC1NdC5zLmMrMSkrJyIgdW5pcXVlTmFtZT0iJysoRHQtTXQucy5jKzEpKyciIG5hbWU9IicrKER0LU10LnMuYysxKSsnIi8+Jyk7UnQucHVzaCgiPC90YWJsZUNvbHVt''@;'; put 'put ''bnM+Iik7dmFyIGFpPSsoITEhPT0oeGVbMl0uc3R5bGV8fHt9KS5yb3dzdHJpcGUpLHlyPSshISh4ZVsyXS5zdHlsZXx8e30pLmNvbHN0cmlwZSxhcj0rISEoeGVbMl0uc3R5bGV8fHt9KS5jb2xmaXJzdCxHcj0rISEoeGVbMl0uc3R5bGV8fHt9KS5jb2xsYXN0LHpyPSh4ZVsyXS5zdHlsZXx8''@;'; put 'put ''e30pLm5hbWV8fCJNZWRpdW05Ijt6cj16ci5tYXRjaCgvXihMaWdodHxNZWRpdW18RGFyaylcZCskLyk/IlRhYmxlU3R5bGUiK3pyOnpyLFJ0LnB1c2goJzx0YWJsZVN0eWxlSW5mbyBuYW1lPSInK3pyKyciIHNob3dGaXJzdENvbHVtbj0iJythcisnIiBzaG93TGFzdENvbHVtbj0iJytHcisn''@;'; put 'put ''IiBzaG93Um93U3RyaXBlcz0iJythaSsnIiBzaG93Q29sdW1uU3RyaXBlcz0iJyt5cisnIi8+JyksUnQucHVzaCgiPC90YWJsZT4iKSx6bihYLGplLFJ0LmpvaW4oIiIpKX0pfWR0LlRBQkxFPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9y''@;'; put 'put ''ZWxhdGlvbnNoaXBzL3RhYmxlIjt2YXIgcEI9LzwoPzpcdys6KT9zaGFwZSg/OlteXHddW14+XSopPz4oW1xzXFNdKj8pPFwvKD86XHcrOik/c2hhcGU+L2c7ZnVuY3Rpb24gWmIoSCxpZSxYLHdlKXt2YXIgeGU9WzIxNjAwLDIxNjAwXSxGZT1bIm0wLDBsMCIseGVbMV0seGVbMF0seGVbMV0s''@;'; put 'put ''eGVbMF0sIjB4ZSJdLmpvaW4oIiwiKSxaZT1bX2koInhtbCIsbnVsbCx7InhtbG5zOnYiOnVhX3YsInhtbG5zOm8iOnVhX28sInhtbG5zOngiOnVhX3gsInhtbG5zOm12IjoiaHR0cDovL21hY1ZtbFNjaGVtYVVyaSJ9KS5yZXBsYWNlKC9cLz4vLCI+IiksX2koIm86c2hhcGVsYXlvdXQiLF9p''@;'; put 'put ''KCJvOmlkbWFwIixudWxsLHsidjpleHQiOiJlZGl0In0pLHsidjpleHQiOiJlZGl0In0pXSxqZT0xMDI0KkgsWWU9WHx8W107WWUubGVuZ3RoPjAmJlplLnB1c2goX2koInY6c2hhcGV0eXBlIixbX2koInY6c3Ryb2tlIixudWxsLHtqb2luc3R5bGU6Im1pdGVyIn0pLF9pKCJ2OnBhdGgiLG51''@;'; put 'put ''bGwse3NoYWRvd29rOiJmIixleHRydXNpb25vazoiZiIsc3Ryb2tlb2s6ImYiLGZpbGxvazoiZiIsIm86Y29ubmVjdHR5cGUiOiJyZWN0In0pLF9pKCJvOmxvY2siLG51bGwseyJ2OmV4dCI6ImVkaXQiLHNoYXBldHlwZToidCJ9KV0uam9pbigiIikse2lkOiJfeDAwMDBfdDIwMSIsY29vcmRz''@;'; put 'put ''aXplOnhlLmpvaW4oIiwiKSwibzpzcHQiOjIwMSxwYXRoOkZlfSkpLHZvaWQgMCE9PUc5JiZZZS5mb3JFYWNoKGZ1bmN0aW9uKHh0KXsrK2plLFplPVplLmNvbmNhdChHOSh4dCxqZSkpfSk7dmFyIE10PWllfHxbXTtyZXR1cm4gTXQubGVuZ3RoPjAmJlplLnB1c2goX2koInY6c2hhcGV0eXBl''@;'; put 'put ''IixbX2koInY6c3Ryb2tlIixudWxsLHtqb2luc3R5bGU6Im1pdGVyIn0pLF9pKCJ2OnBhdGgiLG51bGwse2dyYWRpZW50c2hhcGVvazoidCIsIm86Y29ubmVjdHR5cGUiOiJyZWN0In0pXS5qb2luKCIiKSx7aWQ6Il94MDAwMF90MjAyIixjb29yZHNpemU6eGUuam9pbigiLCIpLCJvOnNwdCI6''@;'; put 'put ''MjAyLHBhdGg6RmV9KSksTXQuZm9yRWFjaChmdW5jdGlvbih4dCl7KytqZSxaZT1aZS5jb25jYXQoZnVuY3Rpb24gZ0IoSCxpZSxYKXt2YXIgd2U9dWwoSFswXSkseGU9SFsxXS5maWxsfHx7fTtIWzFdLnMmJih4ZT17dHlwZTpIWzFdLnMucGF0dGVyblR5cGV8fCJzb2xpZCJ9LEhbMV0ucy5m''@;'; put 'put ''Z0NvbG9yJiYoeGUuY29sb3IyPXhlLmNvbG9yMT0iIyIrTG8oSFsxXS5zLmZnQ29sb3IucmdiKSksSFsxXS5zLmJnQ29sb3ImJih4ZS5jb2xvcjI9IiMiK0xvKEhbMV0ucy5iZ0NvbG9yLnJnYikpKTt2YXIgRmU9e2NvbG9yMjp4ZS5jb2xvcjJ8fCIjQkVGRjgyIix0eXBlOnhlLnR5cGV8fCJn''@;'; put 'put ''cmFkaWVudCJ9OyJncmFkaWVudCI9PUZlLnR5cGUmJihGZS5hbmdsZT0iLTE4MCIpO3ZhciBaZT0iZ3JhZGllbnQiPT1GZS50eXBlP19pKCJvOmZpbGwiLG51bGwse3R5cGU6ImdyYWRpZW50VW5zY2FsZWQiLCJ2OmV4dCI6InZpZXcifSk6bnVsbCxqZT1faSgidjpmaWxsIixaZSxGZSksWWU9''@;'; put 'put ''e307SFsxXS5zaGFkb3cmJihIWzFdLnNoYWRvdy5jb2xvciYmKFllLmNvbG9yPUhbMV0uc2hhZG93LmNvbG9yKSxIWzFdLnNoYWRvdy5vbiYmKFllLm9uPUhbMV0uc2hhZG93Lm9uKSksWWUub2JzY3VyZWQ9InQiO3ZhciBNdD0hMCx4dD0hMCxSdD1IWzFdWyIhcG9zIl0/bG4oSFsxXVsiIXBv''@;'; put 'put ''cyJdKTpudWxsO3JldHVybiBSdCYmKHh0PW51bGw9PVJ0LlImJm51bGw9PVJ0LkMmJm51bGw9PVJ0LlgmJm51bGw9PVJ0LlksTXQ9IVJ0LnImJiFSdC5jLGhCKFJ0LDAsWCkpLFsiPHY6c2hhcGUiK3JsKHtpZDoiX3gwMDAwX3MiK2llLHR5cGU6IiNfeDAwMDBfdDIwMiIsc3R5bGU6InBvc2l0''@;'; put 'put ''aW9uOmFic29sdXRlOyBtYXJnaW4tbGVmdDo4MHB0O21hcmdpbi10b3A6NXB0O3dpZHRoOjEwNHB0O2hlaWdodDo2NHB0O3otaW5kZXg6MTAiKyhIWzFdLmhpZGRlbj8iO3Zpc2liaWxpdHk6aGlkZGVuIjoiIiksZmlsbGNvbG9yOnhlLmNvbG9yMXx8IiNFQ0ZBRDQiLHN0cm9rZWNvbG9yOihI''@;'; put 'put ''WzFdLnN0cm9rZXx8e30pLmNvbG9yfHwiI2VkZWFhMSJ9KSsiPiIsamUsX2koInY6c2hhZG93IixudWxsLFllKSxfaSgidjpwYXRoIixudWxsLHsibzpjb25uZWN0dHlwZSI6Im5vbmUifSksJzx2OnRleHRib3g+PGRpdiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij48L2Rpdj48L3Y6dGV4dGJv''@;'; put 'put ''eD4nLCc8eDpDbGllbnREYXRhIE9iamVjdFR5cGU9Ik5vdGUiPicsTXQ/Ijx4Ok1vdmVXaXRoQ2VsbHMvPiI6IiIseHQ/Ijx4OlNpemVXaXRoQ2VsbHMvPiI6IiIsc2EoIng6QW5jaG9yIixSdD9kQihSdCk6SFsxXS5yYXdhbmNob3J8fFt3ZS5jKzEsMCx3ZS5yKzEsMCx3ZS5jKzMsMjAsd2Uu''@;'; put 'put ''cis1LDIwXS5qb2luKCIsIikpLHNhKCJ4OkF1dG9GaWxsIiwiRmFsc2UiKSxzYSgieDpSb3ciLFN0cmluZyh3ZS5yKSksc2EoIng6Q29sdW1uIixTdHJpbmcod2UuYykpLEhbMV0uaGlkZGVuPyIiOiI8eDpWaXNpYmxlLz4iLCI8L3g6Q2xpZW50RGF0YT4iLCI8L3Y6c2hhcGU+Il19KHh0LGpl''@;'; put 'put ''LHdlKSl9KSxaZS5wdXNoKCI8L3htbD4iKSxaZS5qb2luKCIiKX12YXIgTjQ9e0J1dHRvbjpbIjx4OkF1dG9GaWxsPkZhbHNlPC94OkF1dG9GaWxsPiIsIjx4OlRleHRIQWxpZ24+Q2VudGVyPC94OlRleHRIQWxpZ24+IiwiPHg6VGV4dFZBbGlnbj5DZW50ZXI8L3g6VGV4dFZBbGlnbj4iXSxH''@;'; put 'put ''Qm94OlsiPHg6U2l6ZVdpdGhDZWxscy8+IiwiPHg6QXV0b0ZpbGw+RmFsc2U8L3g6QXV0b0ZpbGw+IiwiPHg6Tm9UaHJlZUQvPiJdLExhYmVsOlsiPHg6QXV0b0ZpbGw+RmFsc2U8L3g6QXV0b0ZpbGw+IiwiPHg6QXV0b0xpbmU+RmFsc2U8L3g6QXV0b0xpbmU+Il0sUmFkaW86WyI8eDpTaXpl''@;'; put 'put ''V2l0aENlbGxzLz4iLCI8eDpBdXRvRmlsbD5GYWxzZTwveDpBdXRvRmlsbD4iLCI8eDpBdXRvTGluZT5GYWxzZTwveDpBdXRvTGluZT4iLCI8eDpUZXh0VkFsaWduPkNlbnRlcjwveDpUZXh0VkFsaWduPiIsIjx4Ok5vVGhyZWVELz4iXSxDaGVja2JveDpbIjx4OlNpemVXaXRoQ2VsbHMvPiIs''@;'; put 'put ''Ijx4OkF1dG9GaWxsPkZhbHNlPC94OkF1dG9GaWxsPiIsIjx4OkF1dG9MaW5lPkZhbHNlPC94OkF1dG9MaW5lPiIsIjx4OlRleHRWQWxpZ24+Q2VudGVyPC94OlRleHRWQWxpZ24+IiwiPHg6Tm9UaHJlZUQvPiJdLERyb3A6WyI8eDpTaXplV2l0aENlbGxzLz4iLCI8eDpBdXRvTGluZT5GYWxz''@;'; put 'put ''ZTwveDpBdXRvTGluZT4iLCI8eDpOb1RocmVlRDIvPiIsIjx4OlNlbFR5cGU+U2luZ2xlPC94OlNlbFR5cGU+IiwiPHg6RHJvcFN0eWxlPkNvbWJvPC94OkRyb3BTdHlsZT4iLCI8eDpMQ1Q+Tm9ybWFsPC94OkxDVD4iLCI8eDpEcm9wTGluZXM+NDwveDpEcm9wTGluZXM+Il0sTGlzdDpbIjx4''@;'; put 'put ''OlNpemVXaXRoQ2VsbHMvPiIsIjx4OkF1dG9MaW5lPkZhbHNlPC94OkF1dG9MaW5lPiIsIjx4Ok5vVGhyZWVEMi8+IiwiPHg6TENUPk5vcm1hbDwveDpMQ1Q+IiwiPHg6VmFsPjA8L3g6VmFsPiIsIjx4Ok1pbj4wPC94Ok1pbj4iLCI8eDpNYXg+NTwveDpNYXg+IiwiPHg6SW5jPjE8L3g6SW5j''@;'; put 'put ''PiIsIjx4OlBhZ2U+NDwveDpQYWdlPiIsIjx4OkR4PjE1PC94OkR4PiJdLFNjcm9sbDpbIjx4OlNpemVXaXRoQ2VsbHMvPiIsIjx4Okhvcml6Lz4iLCI8eDpEeD4xNTwveDpEeD4iXSxTcGluOlsiPHg6RHg+MTU8L3g6RHg+Il19LHpiPXtCdXR0b246Ijx2OnRleHRib3ggc3R5bGU9J21zby1k''@;'; put 'put ''aXJlY3Rpb24tYWx0OmF1dG8nIG86c2luZ2xlY2xpY2s9J2YnPjxkaXYgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyJz48Zm9udCBmYWNlPSdDYWxpYnJpJyBzaXplPScyNDAnIGNvbG9yPScjMDAwMDAwJz4jIyMjPC9mb250PjwvZGl2Pjwvdjp0ZXh0Ym94PiIsR0JveDoiPHY6dGV4dGJveCBz''@;'; put 'put ''dHlsZT0nbXNvLWRpcmVjdGlvbi1hbHQ6YXV0bycgbzpzaW5nbGVjbGljaz0nZic+PGRpdiBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Jz48Zm9udCBmYWNlPSdMdWNpZGEgR3JhbmRlJyBzaXplPScyNjAnIGNvbG9yPScjMDAwMDAwJz4jIyMjPC9mb250PjwvZGl2Pjwvdjp0ZXh0Ym94PiIsUmFk''@;'; put 'put ''aW86Ijx2OnRleHRib3ggc3R5bGU9J21zby1kaXJlY3Rpb24tYWx0OmF1dG8nIG86c2luZ2xlY2xpY2s9J2YnPjxkaXYgc3R5bGU9J3RleHQtYWxpZ246bGVmdCc+PGZvbnQgZmFjZT0nTHVjaWRhIEdyYW5kZScgc2l6ZT0nMjYwJyBjb2xvcj0nYXV0byc+IyMjIzwvZm9udD48L2Rpdj48L3Y6''@;'; put 'put ''dGV4dGJveD4iLExhYmVsOiI8djp0ZXh0Ym94IHN0eWxlPSdtc28tZGlyZWN0aW9uLWFsdDphdXRvJyBvOnNpbmdsZWNsaWNrPSdmJz48ZGl2IHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQnPjxmb250IGZhY2U9J0x1Y2lkYSBHcmFuZGUnIHNpemU9JzI2MCcgY29sb3I9JyMwMDAwMDAnPiMjIyM8''@;'; put 'put ''L2ZvbnQ+PC9kaXY+PC92OnRleHRib3g+IixDaGVja2JveDoiPHY6dGV4dGJveCBzdHlsZT0nbXNvLWRpcmVjdGlvbi1hbHQ6YXV0bycgbzpzaW5nbGVjbGljaz0nZic+PGRpdiBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Jz48Zm9udCBmYWNlPSdMdWNpZGEgR3JhbmRlJyBzaXplPScyNjAnIGNv''@;'; put 'put ''bG9yPScjMDAwMDAwJz4jIyMjPC9mb250PjwvZGl2Pjwvdjp0ZXh0Ym94PiIsc2hlZXRqczoiZGFmdXEifSxHYj17QnV0dG9uOlsnPHY6ZmlsbCBjb2xvcjI9IiNmMGYwZjAgWzY3XSIgbzpkZXRlY3Rtb3VzZWNsaWNrPSJ0Ii8+JywnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQi''@;'; put 'put ''Lz4nXSxHQm94OlsnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiLz4nXSxEcm9wOlsnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiIHRleHQ9InQiLz4nXSxMaXN0OlsnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiIHRleHQ9InQiLz4nXSxTcGluOlsn''@;'; put 'put ''PG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiIHRleHQ9InQiLz4nXSxTY3JvbGw6Wyc8bzpsb2NrIHY6ZXh0PSJlZGl0IiByb3RhdGlvbj0idCIgdGV4dD0idCIvPiddLExhYmVsOlsnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiLz4nXSxSYWRpbzpbJzx2OnBhdGgg''@;'; put 'put ''c2hhZG93b2s9InQiIHN0cm9rZW9rPSJ0IiBmaWxsb2s9InQiLz4nLCc8bzpsb2NrIHY6ZXh0PSJlZGl0IiByb3RhdGlvbj0idCIvPiddLENoZWNrYm94OlsnPHY6cGF0aCBzaGFkb3dvaz0idCIgc3Ryb2tlb2s9InQiIGZpbGxvaz0idCIvPicsJzxvOmxvY2sgdjpleHQ9ImVkaXQiIHJvdGF0''@;'; put 'put ''aW9uPSJ0Ii8+J10sc2hlZXRqczpbXX07ZnVuY3Rpb24gRzkoSCxpZSl7dmFyIFg9e2lkOiJfeDAwMDBfcyIraWUsdHlwZToiI194MDAwMF90MjAxIixzdHlsZToibXNvLXdyYXAtc3R5bGU6dGlnaHQifTsoIlJhZGlvIj09SFsiIXR5cGUiXXx8IkNoZWNrYm94Ij09SFsiIXR5cGUiXXx8Ikxp''@;'; put 'put ''c3QiPT1IWyIhdHlwZSJdfHwiRHJvcCI9PUhbIiF0eXBlIl0pJiYoWC5zdHJva2VkPSJmIiksIkxhYmVsIj09SFsiIXR5cGUiXSYmKFguZmlsbGVkPSJmIik7dmFyIHdlPSIiO0gudCYmemJbSFsiIXR5cGUiXV0mJih3ZT16YltIWyIhdHlwZSJdXS5yZXBsYWNlKC8jIyMjLyxScihILnQpKSk7''@;'; put 'put ''dmFyIHhlPVtdO3JldHVybiBILm1hY3JvJiZ4ZS5wdXNoKHNhKCJ4OkZtbGFNYWNybyIsSC5tYWNybykpLEgubGluayYmeGUucHVzaChzYSgieDpGbWxhTGluayIsSC5saW5rKSksSC52YWwmJnhlLnB1c2goc2EoIlJhZGlvIj09SFsiIXR5cGUiXXx8IkNoZWNrYm94Ij09SFsiIXR5cGUiXT8i''@;'; put 'put ''eDpDaGVja2VkIjoieDpWYWwiLFN0cmluZyhILnZhbCkpKSxILnJlZiYmeGUucHVzaChzYSgieDpGbWxhUmFuZ2UiLEgucmVmKSksSC5zZWwmJiJMaXN0Ij09SFsiIXR5cGUiXSYmeGUucHVzaChzYSgieDpTZWxUeXBlIixILnNlbCkpLEgubWluJiZ4ZS5wdXNoKHNhKCJ4Ok1pbiIsU3RyaW5n''@;'; put 'put ''KEgubWluKSkpLEgubWF4JiZ4ZS5wdXNoKHNhKCJ4Ok1heCIsU3RyaW5nKEgubWF4KSkpLEguc3RlcCYmeGUucHVzaChzYSgieDpJbmMiLFN0cmluZyhILnN0ZXApKSksSC5wYWdlJiZ4ZS5wdXNoKHNhKCJ4OlBhZ2UiLFN0cmluZyhILnBhZ2UpKSksW10uY29uY2F0KFsiPHY6c2hhcGUiK3Js''@;'; put 'put ''KFgpKyI+Il0pLmNvbmNhdChHYltIWyIhdHlwZSJdXXx8W10pLmNvbmNhdChbd2VdKS5jb25jYXQoWyc8eDpDbGllbnREYXRhIE9iamVjdFR5cGU9IicrSFsiIXR5cGUiXSsnIj4nLHNhKCJ4OkFuY2hvciIsZEIoSFsiIXBvcyJdKSksc2EoIng6UHJpbnRPYmplY3QiLCJGYWxzZSIpXSkuY29u''@;'; put 'put ''Y2F0KHhlKS5jb25jYXQoTjRbSFsiIXR5cGUiXV18fFtdKS5jb25jYXQoWyI8L3g6Q2xpZW50RGF0YT4iLCI8L3Y6c2hhcGU+Il0pfWZ1bmN0aW9uIENtKEgsaWUsWCx3ZSl7dmFyIHhlPXsiIWlkIjp7fX0sRmU9W19pKCJ4bWwiLG51bGwseyJ4bWxuczp2Ijp1YV92LCJ4bWxuczpvIjp1YV9v''@;'; put 'put ''LCJ4bWxuczp4Ijp1YV94fSkucmVwbGFjZSgvXC8+LywiPiIpLF9pKCJvOnNoYXBlbGF5b3V0IixfaSgibzppZG1hcCIsbnVsbCx7InY6ZXh0IjoiZWRpdCIsZGF0YToxfSkseyJ2OmV4dCI6ImVkaXQifSksJzx2OnNoYXBldHlwZSBpZD0iX3gwMDAwX3Q3NSIgY29vcmRzaXplPSIyMTYwMCwy''@;'; put 'put ''MTYwMCIgbzpzcHQ9Ijc1IiBvOnByZWZlcnJlbGF0aXZlPSJ0IiBwYXRoPSJtQDRANWxANEAxMUA5QDExQDlANXhlIiBmaWxsZWQ9ImYiIHN0cm9rZWQ9ImYiPicsJzx2OnN0cm9rZSBqb2luc3R5bGU9Im1pdGVyIi8+JywiPHY6Zm9ybXVsYXM+IiwnPHY6ZiBlcW49ImlmIGxpbmVEcmF3biBw''@;'; put 'put ''aXhlbExpbmVXaWR0aCAwIi8+JywnPHY6ZiBlcW49InN1bSBAMCAxIDAiLz4nLCc8djpmIGVxbj0ic3VtIDAgMCBAMSIvPicsJzx2OmYgZXFuPSJwcm9kIEAyIDEgMiIvPicsJzx2OmYgZXFuPSJwcm9kIEAzIDIxNjAwIHBpeGVsV2lkdGgiLz4nLCc8djpmIGVxbj0icHJvZCBAMyAyMTYwMCBw''@;'; put 'put ''aXhlbEhlaWdodCIvPicsJzx2OmYgZXFuPSJzdW0gQDAgMCAxIi8+JywnPHY6ZiBlcW49InByb2QgQDYgMSAyIi8+JywnPHY6ZiBlcW49InByb2QgQDcgMjE2MDAgcGl4ZWxXaWR0aCIvPicsJzx2OmYgZXFuPSJzdW0gQDggMjE2MDAgMCIvPicsJzx2OmYgZXFuPSJwcm9kIEA3IDIxNjAwIHBp''@;'; put 'put ''eGVsSGVpZ2h0Ii8+JywnPHY6ZiBlcW49InN1bSBAMTAgMjE2MDAgMCIvPicsIjwvdjpmb3JtdWxhcz4iLCc8djpwYXRoIG86ZXh0cnVzaW9ub2s9ImYiIGdyYWRpZW50c2hhcGVvaz0idCIgbzpjb25uZWN0dHlwZT0icmVjdCIvPicsJzxvOmxvY2sgdjpleHQ9ImVkaXQiIGFzcGVjdHJhdGlv''@;'; put 'put ''PSJ0Ii8+JywiPC92OnNoYXBldHlwZT4iXSxaZT0xO1siaGVhZGVyIiwiZm9vdGVyIl0uZm9yRWFjaChmdW5jdGlvbihqZSl7IXdlW2plXXx8WyJvZGQiLCJldmVuIiwiZmlyc3QiXS5mb3JFYWNoKGZ1bmN0aW9uKFllKXshd2VbamVdW1llXXx8WyJsZWZ0IiwicmlnaHQiLCJjZW50ZXIiXS5m''@;'; put 'put ''b3JFYWNoKGZ1bmN0aW9uKE10KXtpZihBcnJheS5pc0FycmF5KHdlW2plXVtZZV1bTXRdKSlmb3IodmFyIHh0PTA7eHQ8d2VbamVdW1llXVtNdF0ubGVuZ3RoOysreHQpaWYod2VbamVdW1llXVtNdF1beHRdKXt2YXIgUnQ9d2VbamVdW1llXVtNdF1beHRdO2lmKCJyZW1vdGUiPT1SdFsiIWRh''@;'; put 'put ''dGF0eXBlIl0pdGhyb3ciQ2Fubm90IHVzZSBsaW5rZWQgaW1hZ2UgaW4gaGVhZGVyIG9yIGZvb3RlciI7Zm9yKDtLbihILCJ4bC9tZWRpYS9pbWFnZSIrWmUrIi5qcGciKTspKytaZTtILmZpbGUoInhsL21lZGlhL2ltYWdlIitaZSsiLmpwZyIsQkUoUnQpLHtiaW5hcnk6ITB9KSxYdCh4ZSwt''@;'; put 'put ''MSwiLi4vbWVkaWEvaW1hZ2UiK1plKyIuanBnIixkdC5JTUcpO3ZhciBVdD0iX3gwMDAwX3MiKygxMDI1K1J0Ll9jbnQpLG5uPSJwb3NpdGlvbjphYnNvbHV0ZTttYXJnaW4tbGVmdDowO21hcmdpbi10b3A6MDt6LWluZGV4OiIrKFJ0Ll9jbnQrMSkrIjsiO25uKz0id2lkdGg6IitSdFsiIXBv''@;'; put 'put ''cyJdLncrInB4OyIsbm4rPSJoZWlnaHQ6IitSdFsiIXBvcyJdLmgrInB4OyI7dmFyIENuPU10LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2plLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpOyJvZGQiIT09WWUmJihDbis9WWUudG9VcHBlckNhc2UoKSksd2VbamVdW1llXVtNdF0ubGVuZ3RoPjEm''@;'; put 'put ''JihDbis9eHQpLEZlLnB1c2goX2koInY6c2hhcGUiLFsnPHY6aW1hZ2VkYXRhIG86cmVsaWQ9InJJZCcrKFJ0Ll9jbnQrMSkrJyIgbzp0aXRsZT0ic2hlZXRqcyIvPicsJzxvOmxvY2sgdjpleHQ9ImVkaXQiIHJvdGF0aW9uPSJ0Ii8+J10uam9pbigiIikse2lkOkNuLCJvOnNwaWQiOlV0LHR5''@;'; put 'put ''cGU6IiNfeDAwMDBfdDc1IixzdHlsZTpubn0pKX19KX0pfSksRmUucHVzaCgiPC94bWw+IiksSC5maWxlKCJ4bC9kcmF3aW5ncy92bWxEcmF3aW5nIitYKyJIRi52bWwiLEZlLmpvaW4oIiIpKSxILmZpbGUoInhsL2RyYXdpbmdzL19yZWxzL3ZtbERyYXdpbmciK1grIkhGLnZtbC5yZWxzIixp''@;'; put 'put ''dCh4ZSkpfWR0LkNNTlQ9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY29tbWVudHMiO3ZhciBiNj1faSgiY29tbWVudHMiLG51bGwse3htbG5zOlgwLm1haW5bMF19KTtmdW5jdGlvbiBXYihIKXt2YXIgaWU9W2Nu''@;'; put 'put ''LGI2XSxYPVtdO3JldHVybiBpZS5wdXNoKCI8YXV0aG9ycz4iKSxILmZvckVhY2goZnVuY3Rpb24od2Upe3dlWzFdLmZvckVhY2goZnVuY3Rpb24oeGUpe3ZhciBGZT1Scih4ZS5hKTtYLmluZGV4T2YoRmUpPi0xfHwoWC5wdXNoKEZlKSxpZS5wdXNoKCI8YXV0aG9yPiIrRmUrIjwvYXV0aG9y''@;'; put 'put ''PiIpKX0pfSksaWUucHVzaCgiPC9hdXRob3JzPiIpLGllLnB1c2goIjxjb21tZW50TGlzdD4iKSxILmZvckVhY2goZnVuY3Rpb24od2Upe3dlWzFdLmZvckVhY2goZnVuY3Rpb24oeGUpe2llLnB1c2goJzxjb21tZW50IHJlZj0iJyt3ZVswXSsnIiBhdXRob3JJZD0iJytYLmluZGV4T2YoUnIo''@;'; put 'put ''eGUuYSkpKyciPjx0ZXh0PicpLGllLnB1c2goeGUuUj91Nih4ZS5SKTpzYSgidCIsbnVsbD09eGUudD8iIjpScih4ZS50KSkpLGllLnB1c2goIjwvdGV4dD48L2NvbW1lbnQ+Iil9KX0pLGllLnB1c2goIjwvY29tbWVudExpc3Q+IiksaWUubGVuZ3RoPjImJihpZVtpZS5sZW5ndGhdPSI8L2Nv''@;'; put 'put ''bW1lbnRzPiIsaWVbMV09aWVbMV0ucmVwbGFjZSgiLz4iLCI+IikpLGllLmpvaW4oIiIpfXZhciBiZj14dTtmdW5jdGlvbiBVYihIKXt2YXIgaWU9SjIoKSxYPVtdO3JldHVybiBDMChpZSwiQnJ0QmVnaW5Db21tZW50cyIpLEMwKGllLCJCcnRCZWdpbkNvbW1lbnRBdXRob3JzIiksSC5mb3JF''@;'; put 'put ''YWNoKGZ1bmN0aW9uKHdlKXt3ZVsxXS5mb3JFYWNoKGZ1bmN0aW9uKHhlKXtYLmluZGV4T2YoeGUuYSk+LTF8fChYLnB1c2goeGUuYS5zbGljZSgwLDU0KSksQzAoaWUsIkJydENvbW1lbnRBdXRob3IiLGZ1bmN0aW9uIEloKEgpe3JldHVybiBsdShILnNsaWNlKDAsNTQpKX0oeGUuYSkpKX0p''@;'; put 'put ''fSksQzAoaWUsIkJydEVuZENvbW1lbnRBdXRob3JzIiksQzAoaWUsIkJydEJlZ2luQ29tbWVudExpc3QiKSxILmZvckVhY2goZnVuY3Rpb24od2Upe3dlWzFdLmZvckVhY2goZnVuY3Rpb24oeGUpe3hlLmlhdXRob3I9WC5pbmRleE9mKHhlLmEpO3ZhciBGZT17czp1bCh3ZVswXSksZTp1bCh3''@;'; put 'put ''ZVswXSl9O0MwKGllLCJCcnRCZWdpbkNvbW1lbnQiLGZ1bmN0aW9uIEZFKEgsaWUpe3JldHVybiBudWxsPT1pZSYmKGllPVJpKDM2KSksaWUud3JpdGVfc2hpZnQoNCxIWzFdLmlhdXRob3IpLEdwKEhbMF0saWUpLGllLndyaXRlX3NoaWZ0KDQsMCksaWUud3JpdGVfc2hpZnQoNCwwKSxpZS53''@;'; put 'put ''cml0ZV9zaGlmdCg0LDApLGllLndyaXRlX3NoaWZ0KDQsMCksaWV9KFtGZSx4ZV0pKSx4ZS50JiZ4ZS50Lmxlbmd0aD4wJiZDMChpZSwiQnJ0Q29tbWVudFRleHQiLGZ1bmN0aW9uIHF3KEgsaWUpe3ZhciBYPSExO3JldHVybiBudWxsPT1pZSYmKFg9ITAsaWU9UmkoMjMrNCpILnQubGVuZ3Ro''@;'; put 'put ''KSksaWUud3JpdGVfc2hpZnQoMSwxKSxsdShILnQsaWUpLGllLndyaXRlX3NoaWZ0KDQsMSksZnVuY3Rpb24gS28oSCxpZSl7aWV8fChpZT1SaSg0KSksaWUud3JpdGVfc2hpZnQoMixILmljaHx8MCksaWUud3JpdGVfc2hpZnQoMixILmlmbnR8fDApfSh7aWNoOjAsaWZudDowfSxpZSksWD9p''@;'; put 'put ''ZS5zbGljZSgwLGllLmwpOmllfSh4ZSkpLEMwKGllLCJCcnRFbmRDb21tZW50IiksZGVsZXRlIHhlLmlhdXRob3J9KX0pLEMwKGllLCJCcnRFbmRDb21tZW50TGlzdCIpLEMwKGllLCJCcnRFbmRDb21tZW50cyIpLGllLmVuZCgpfXZhciBtQj1bInhsc2IiLCJ4bHNtIiwieGxhbSIsImJpZmY4''@;'; put 'put ''IiwieGxhIl07ZHQuRFM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZGlhbG9nc2hlZXQiLGR0Lk1TPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA2L3JlbGF0aW9uc2hpcHMveGxNYWNy''@;'; put 'put ''b3NoZWV0Ijt2YXIgRDM9ZnVuY3Rpb24oKXt2YXIgSD0vKF58W15BLVphLXpfXSlSKFxbPy0/XGQrXF18WzEtOV1cZCp8KUMoXFs/LT9cZCtcXXxbMS05XVxkKnwpKD8hW0EtWmEtejAtOV9dKS9nLGllPXtyOjAsYzowfTtmdW5jdGlvbiBYKHdlLHhlLEZlLFplKXt2YXIgamU9ITEsWWU9ITE7''@;'; put 'put ''MD09RmUubGVuZ3RoP1llPSEwOiJbIj09RmUuY2hhckF0KDApJiYoWWU9ITAsRmU9RmUuc2xpY2UoMSwtMSkpLDA9PVplLmxlbmd0aD9qZT0hMDoiWyI9PVplLmNoYXJBdCgwKSYmKGplPSEwLFplPVplLnNsaWNlKDEsLTEpKTt2YXIgTXQ9RmUubGVuZ3RoPjA/MHxwYXJzZUludChGZSwxMCk6''@;'; put 'put ''MCx4dD1aZS5sZW5ndGg+MD8wfHBhcnNlSW50KFplLDEwKTowO3JldHVybiBqZT94dCs9aWUuYzotLXh0LFllP010Kz1pZS5yOi0tTXQseGUrKGplPyIiOiIkIikrX2EoeHQpKyhZZT8iIjoiJCIpK1hhKE10KX1yZXR1cm4gZnVuY3Rpb24oeGUsRmUpe3JldHVybiBpZT1GZSx4ZS5yZXBsYWNl''@;'; put 'put ''KEgsWCl9fSgpLFNtPS8oXnxbXi5fQS1aMC05XSkoWyRdPykoW0EtWl17MSwyfXxbQS1XXVtBLVpdezJ9fFhbQS1FXVtBLVpdfFhGW0EtRF0pKFskXT8pKDEwWzAtM11cZHs0fXwxMDRbMC03XVxkezN9fDEwNDhbMC00XVxkezJ9fDEwNDg1WzAtNl1cZHwxMDQ4NTdbMC02XXxbMS05XVxkezAs''@;'; put 'put ''NX0pKD8hW18uXChBLVphLXowLTldKS9nLFZFPWZ1bmN0aW9uKGllLFgpe3JldHVybiBpZS5yZXBsYWNlKFNtLGZ1bmN0aW9uKHdlLHhlLEZlLFplLGplLFllKXt2YXIgTXQ9bWgoWmUpLShGZT8wOlguYykseHQ9YXMoWWUpLShqZT8wOlgucik7cmV0dXJuIHhlKyJSIisoMD09eHQ/IiI6amU/''@;'; put 'put ''eHQrMToiWyIreHQrIl0iKSsiQyIrKDA9PU10PyIiOkZlP010KzE6IlsiK010KyJdIil9KX07ZnVuY3Rpb24gUTkoSCxpZSl7cmV0dXJuIEgucmVwbGFjZShTbSxmdW5jdGlvbihYLHdlLHhlLEZlLFplLGplKXtyZXR1cm4gd2UrKCIkIj09eGU/eGUrRmU6X2EobWgoRmUpK2llLmMpKSsoIiQi''@;'; put 'put ''PT1aZT9aZStqZTpYYShhcyhqZSkraWUucikpfSkucmVwbGFjZSgvKFxkKyk6KFxkKykvZyxmdW5jdGlvbihYLHdlLHhlKXtyZXR1cm4gWGEoYXMod2UpK2llLnIpKyI6IitYYShhcyh4ZSkraWUucil9KX1mdW5jdGlvbiBWNChILGllLFgpe3ZhciB4ZT1BcyhpZSkucyxGZT11bChYKTtyZXR1''@;'; put 'put ''cm4gUTkoSCx7cjpGZS5yLXhlLnIsYzpGZS5jLXhlLmN9KX1mdW5jdGlvbiBYYihIKXtyZXR1cm4gSC5yZXBsYWNlKC9feGxmblwuL2csIiIpfWZ1bmN0aW9uIGIxKEgpe0gubCs9MX1mdW5jdGlvbiBodShILGllKXt2YXIgWD1ILnJlYWRfc2hpZnQoMT09aWU/MToyKTtyZXR1cm5bMTYzODMm''@;'; put 'put ''WCxYPj4xNCYxLFg+PjE1JjFdfWZ1bmN0aW9uIE1tKEgsaWUsWCl7dmFyIHdlPTI7aWYoWCl7aWYoWC5iaWZmPj0yJiZYLmJpZmY8PTUpcmV0dXJuIEtiKEgpOzEyPT1YLmJpZmYmJih3ZT00KX12YXIgeGU9SC5yZWFkX3NoaWZ0KHdlKSxGZT1ILnJlYWRfc2hpZnQod2UpLFplPWh1KEgsMiks''@;'; put 'put ''amU9aHUoSCwyKTtyZXR1cm57czp7cjp4ZSxjOlplWzBdLGNSZWw6WmVbMV0sclJlbDpaZVsyXX0sZTp7cjpGZSxjOmplWzBdLGNSZWw6amVbMV0sclJlbDpqZVsyXX19fWZ1bmN0aW9uIEtiKEgpe3ZhciBpZT1odShILDIpLFg9aHUoSCwyKSx3ZT1ILnJlYWRfc2hpZnQoMSkseGU9SC5yZWFk''@;'; put 'put ''X3NoaWZ0KDEpO3JldHVybntzOntyOmllWzBdLGM6d2UsY1JlbDppZVsxXSxyUmVsOmllWzJdfSxlOntyOlhbMF0sYzp4ZSxjUmVsOlhbMV0sclJlbDpYWzJdfX19ZnVuY3Rpb24gakUoSCxpZSxYKXtpZihYJiZYLmJpZmY+PTImJlguYmlmZjw9NSlyZXR1cm4gZnVuY3Rpb24gWkUoSCl7dmFy''@;'; put 'put ''IGllPWh1KEgsMiksWD1ILnJlYWRfc2hpZnQoMSk7cmV0dXJue3I6aWVbMF0sYzpYLGNSZWw6aWVbMV0sclJlbDppZVsyXX19KEgpO3ZhciB3ZT1ILnJlYWRfc2hpZnQoWCYmMTI9PVguYmlmZj80OjIpLHhlPWh1KEgsMik7cmV0dXJue3I6d2UsYzp4ZVswXSxjUmVsOnhlWzFdLHJSZWw6eGVb''@;'; put 'put ''Ml19fWZ1bmN0aW9uIHlCKEgpe3ZhciBpZT1ILnJlYWRfc2hpZnQoMiksWD1ILnJlYWRfc2hpZnQoMik7cmV0dXJue3I6aWUsYzoyNTUmWCxmUXVvdGVkOiEhKDE2Mzg0JlgpLGNSZWw6WD4+MTUsclJlbDpYPj4xNX19ZnVuY3Rpb24gVGQoSCl7cmV0dXJuW0gucmVhZF9zaGlmdCgxKSxILnJl''@;'; put 'put ''YWRfc2hpZnQoMSldfWZ1bmN0aW9uIHI1KEgsaWUpe3ZhciBYPVtILnJlYWRfc2hpZnQoMSldO2lmKDEyPT1pZSlzd2l0Y2goWFswXSl7Y2FzZSAyOlhbMF09NDticmVhaztjYXNlIDQ6WFswXT0xNjticmVhaztjYXNlIDA6WFswXT0xO2JyZWFrO2Nhc2UgMTpYWzBdPTJ9c3dpdGNoKFhbMF0p''@;'; put 'put ''e2Nhc2UgNDpYWzFdPXRhKEgsMSk/IlRSVUUiOiJGQUxTRSIsMTIhPWllJiYoSC5sKz03KTticmVhaztjYXNlIDM3OmNhc2UgMTY6WFsxXT1OMVtIW0gubF1dLEgubCs9MTI9PWllPzQ6ODticmVhaztjYXNlIDA6SC5sKz04O2JyZWFrO2Nhc2UgMTpYWzFdPUkyKEgpO2JyZWFrO2Nhc2UgMjpY''@;'; put 'put ''WzFdPWRmKEgsMCx7YmlmZjppZT4wJiZpZTw4PzI6aWV9KTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiQmFkIFNlckFyOiAiK1hbMF0pfXJldHVybiBYfWZ1bmN0aW9uIElCKEgsaWUsWCl7Zm9yKHZhciB3ZT1ILnJlYWRfc2hpZnQoMTI9PVguYmlmZj80OjIpLHhlPVtdLEZlPTA7''@;'; put 'put ''RmUhPXdlOysrRmUpeGUucHVzaCgoMTI9PVguYmlmZj93aDpuNikoSCw4KSk7cmV0dXJuIHhlfWZ1bmN0aW9uIFhFKEgsaWUsWCl7dmFyIHdlPTAseGU9MDsxMj09WC5iaWZmPyh3ZT1ILnJlYWRfc2hpZnQoNCkseGU9SC5yZWFkX3NoaWZ0KDQpKTooeGU9MStILnJlYWRfc2hpZnQoMSksd2U9''@;'; put 'put ''MStILnJlYWRfc2hpZnQoMikpLFguYmlmZj49MiYmWC5iaWZmPDgmJigtLXdlLDA9PS0teGUmJih4ZT0yNTYpKTtmb3IodmFyIEZlPTAsWmU9W107RmUhPXdlJiYoWmVbRmVdPVtdKTsrK0ZlKWZvcih2YXIgamU9MDtqZSE9eGU7KytqZSlaZVtGZV1bamVdPXI1KEgsWC5iaWZmKTtyZXR1cm4g''@;'; put 'put ''WmV9ZnVuY3Rpb24gbzUoSCxpZSxYKXtyZXR1cm4gSC5sKz0yLFt5QihIKV19ZnVuY3Rpb24gWDkoSCl7cmV0dXJuIEgubCs9NixbXX12YXIgdF89bzUsZkc9WDksbl89WDksSEI9bzU7ZnVuY3Rpb24gTkIoSCl7cmV0dXJuIEgubCs9MixbYzEoSCksMSZILnJlYWRfc2hpZnQoMildfXZhciBL''@;'; put 'put ''dD1vNSxLOT1OQixxRT1YOSwkOT1vNSxEaD1vNSxyXz1bIkRhdGEiLCJBbGwiLCJIZWFkZXJzIiwiPz8iLCI/RGF0YTIiLCI/PyIsIj9EYXRhSGVhZGVycyIsIj8/IiwiVG90YWxzIiwiPz8iLCI/PyIsIj8/IiwiP0RhdGFUb3RhbHMiLCI/PyIsIj8/IiwiPz8iLCI/Q3VycmVudCJdLGw1PXsx''@;'; put 'put ''OntuOiJQdGdFeHAiLGY6ZnVuY3Rpb24gdUcoSCxpZSxYKXtyZXR1cm4gSC5sKyssWCYmMTI9PVguYmlmZj9bSC5yZWFkX3NoaWZ0KDQsImkiKSwwXTpbSC5yZWFkX3NoaWZ0KDIpLEgucmVhZF9zaGlmdChYJiYyPT1YLmJpZmY/MToyKV19fSwyOntuOiJQdGdUYmwiLGY6Q3N9LDM6e246IlB0''@;'; put 'put ''Z0FkZCIsZjpiMX0sNDp7bjoiUHRnU3ViIixmOmIxfSw1OntuOiJQdGdNdWwiLGY6YjF9LDY6e246IlB0Z0RpdiIsZjpiMX0sNzp7bjoiUHRnUG93ZXIiLGY6YjF9LDg6e246IlB0Z0NvbmNhdCIsZjpiMX0sOTp7bjoiUHRnTHQiLGY6YjF9LDEwOntuOiJQdGdMZSIsZjpiMX0sMTE6e246IlB0''@;'; put 'put ''Z0VxIixmOmIxfSwxMjp7bjoiUHRnR2UiLGY6YjF9LDEzOntuOiJQdGdHdCIsZjpiMX0sMTQ6e246IlB0Z05lIixmOmIxfSwxNTp7bjoiUHRnSXNlY3QiLGY6YjF9LDE2OntuOiJQdGdVbmlvbiIsZjpiMX0sMTc6e246IlB0Z1JhbmdlIixmOmIxfSwxODp7bjoiUHRnVXBsdXMiLGY6YjF9LDE5''@;'; put 'put ''OntuOiJQdGdVbWludXMiLGY6YjF9LDIwOntuOiJQdGdQZXJjZW50IixmOmIxfSwyMTp7bjoiUHRnUGFyZW4iLGY6YjF9LDIyOntuOiJQdGdNaXNzQXJnIixmOmIxfSwyMzp7bjoiUHRnU3RyIixmOmZ1bmN0aW9uIFRCKEgsaWUsWCl7cmV0dXJuIEgubCsrLHpjKEgsMCxYKX19LDI2OntuOiJQ''@;'; put 'put ''dGdTaGVldCIsZjpmdW5jdGlvbiBEZChILGllLFgpe3JldHVybiBILmwrPTUsSC5sKz0yLEgubCs9Mj09WC5iaWZmPzE6NCxbIlBUR1NIRUVUIl19fSwyNzp7bjoiUHRnRW5kU2hlZXQiLGY6ZnVuY3Rpb24gXzYoSCxpZSxYKXtyZXR1cm4gSC5sKz0yPT1YLmJpZmY/NDo1LFsiUFRHRU5EU0hF''@;'; put 'put ''RVQiXX19LDI4OntuOiJQdGdFcnIiLGY6ZnVuY3Rpb24gSWQoSCl7cmV0dXJuIEgubCsrLE4xW0gucmVhZF9zaGlmdCgxKV19fSwyOTp7bjoiUHRnQm9vbCIsZjpmdW5jdGlvbiBKRShIKXtyZXR1cm4gSC5sKyssMCE9PUgucmVhZF9zaGlmdCgxKX19LDMwOntuOiJQdGdJbnQiLGY6ZnVuY3Rp''@;'; put 'put ''b24geEIoSCl7cmV0dXJuIEgubCsrLEgucmVhZF9zaGlmdCgyKX19LDMxOntuOiJQdGdOdW0iLGY6ZnVuY3Rpb24gY0coSCl7cmV0dXJuIEgubCsrLEkyKEgpfX0sMzI6e246IlB0Z0FycmF5IixmOmZ1bmN0aW9uIEdFKEgsaWUsWCl7dmFyIHdlPSg5NiZIW0gubCsrXSk+PjU7cmV0dXJuIEgu''@;'; put 'put ''bCs9Mj09WC5iaWZmPzY6MTI9PVguYmlmZj8xNDo3LFt3ZV19fSwzMzp7bjoiUHRnRnVuYyIsZjpmdW5jdGlvbiBxYihILGllLFgpe3ZhciB3ZT0oOTYmSFtILmxdKT4+NTtILmwrPTE7dmFyIHhlPUgucmVhZF9zaGlmdChYJiZYLmJpZmY8PTM/MToyKTtyZXR1cm5bY19beGVdLGM1W3hlXSx3''@;'; put 'put ''ZV19fSwzNDp7bjoiUHRnRnVuY1ZhciIsZjpmdW5jdGlvbiBlXyhILGllLFgpe3ZhciB3ZT1IW0gubCsrXSx4ZT1ILnJlYWRfc2hpZnQoMSksRmU9WCYmWC5iaWZmPD0zP1s4OD09d2U/LTE6MCxILnJlYWRfc2hpZnQoMSldOmZ1bmN0aW9uIEVCKEgpe3JldHVybltIW0gubCsxXT4+NywzMjc2''@;'; put 'put ''NyZILnJlYWRfc2hpZnQoMildfShIKTtyZXR1cm5beGUsKDA9PT1GZVswXT9jNTp1XylbRmVbMV1dXX19LDM1OntuOiJQdGdOYW1lIixmOmZ1bmN0aW9uIEo5KEgsaWUsWCl7dmFyIHdlPUgucmVhZF9zaGlmdCgxKT4+PjUmMyxGZT1ILnJlYWRfc2hpZnQoIVh8fFguYmlmZj49OD80OjIpO3N3''@;'; put 'put ''aXRjaChYLmJpZmYpe2Nhc2UgMjpILmwrPTU7YnJlYWs7Y2FzZSAzOmNhc2UgNDpILmwrPTg7YnJlYWs7Y2FzZSA1OkgubCs9MTJ9cmV0dXJuW3dlLDAsRmVdfX0sMzY6e246IlB0Z1JlZiIsZjpmdW5jdGlvbiBuNShILGllLFgpe3ZhciB3ZT0oOTYmSFtILmxdKT4+NTtyZXR1cm4gSC5sKz0x''@;'; put 'put ''LFt3ZSxqRShILDAsWCldfX0sMzc6e246IlB0Z0FyZWEiLGY6ZnVuY3Rpb24gYkIoSCxpZSxYKXtyZXR1cm5bKDk2JkhbSC5sKytdKT4+NSxNbShILDAsWCldfX0sMzg6e246IlB0Z01lbUFyZWEiLGY6ZnVuY3Rpb24gTEIoSCxpZSxYKXt2YXIgd2U9SC5yZWFkX3NoaWZ0KDEpPj4+NSYzO3Jl''@;'; put 'put ''dHVybiBILmwrPVgmJjI9PVguYmlmZj8zOjQsW3dlLEgucmVhZF9zaGlmdChYJiYyPT1YLmJpZmY/MToyKV19fSwzOTp7bjoiUHRnTWVtRXJyIixmOkNzfSw0MDp7bjoiUHRnTWVtTm9NZW0iLGY6Q3N9LDQxOntuOiJQdGdNZW1GdW5jIixmOmZ1bmN0aW9uIE9CKEgsaWUsWCl7cmV0dXJuW0gu''@;'; put 'put ''cmVhZF9zaGlmdCgxKT4+PjUmMyxILnJlYWRfc2hpZnQoWCYmMj09WC5iaWZmPzE6MildfX0sNDI6e246IlB0Z1JlZkVyciIsZjpmdW5jdGlvbiBSQihILGllLFgpe3ZhciB3ZT1ILnJlYWRfc2hpZnQoMSk+Pj41JjM7cmV0dXJuIEgubCs9NCxYLmJpZmY8OCYmSC5sLS0sMTI9PVguYmlmZiYm''@;'; put 'put ''KEgubCs9MiksW3dlXX19LDQzOntuOiJQdGdBcmVhRXJyIixmOmZ1bmN0aW9uIE5hKEgsaWUsWCl7dmFyIHdlPSg5NiZIW0gubCsrXSk+PjU7cmV0dXJuIEgubCs9WCYmWC5iaWZmPjg/MTI6WC5iaWZmPDg/Njo4LFt3ZV19fSw0NDp7bjoiUHRnUmVmTiIsZjpmdW5jdGlvbiBTcyhILGllLFgp''@;'; put 'put ''e3ZhciB3ZT0oOTYmSFtILmxdKT4+NTtILmwrPTE7dmFyIHhlPWZ1bmN0aW9uIHpFKEgsaWUsWCl7dmFyIHdlPVgmJlguYmlmZj9YLmJpZmY6ODtpZih3ZT49MiYmd2U8PTUpcmV0dXJuIGZ1bmN0aW9uIHdCKEgpe3ZhciBpZT1ILnJlYWRfc2hpZnQoMiksWD1ILnJlYWRfc2hpZnQoMSksd2U9''@;'; put 'put ''KDMyNzY4JmllKT4+MTUseGU9KDE2Mzg0JmllKT4+MTQ7cmV0dXJuIGllJj0xNjM4MywxPT13ZSYmaWU+PTgxOTImJihpZS09MTYzODQpLDE9PXhlJiZYPj0xMjgmJihYLT0yNTYpLHtyOmllLGM6WCxjUmVsOnhlLHJSZWw6d2V9fShIKTt2YXIgeGU9SC5yZWFkX3NoaWZ0KHdlPj0xMj80OjIp''@;'; put 'put ''LEZlPUgucmVhZF9zaGlmdCgyKSxaZT0oMTYzODQmRmUpPj4xNCxqZT0oMzI3NjgmRmUpPj4xNTtpZihGZSY9MTYzODMsMT09amUpZm9yKDt4ZT41MjQyODc7KXhlLT0xMDQ4NTc2O2lmKDE9PVplKWZvcig7RmU+ODE5MTspRmUtPTE2Mzg0O3JldHVybntyOnhlLGM6RmUsY1JlbDpaZSxyUmVs''@;'; put 'put ''OmplfX0oSCwwLFgpO3JldHVyblt3ZSx4ZV19fSw0NTp7bjoiUHRnQXJlYU4iLGY6ZnVuY3Rpb24gJGIoSCxpZSxYKXt2YXIgd2U9KDk2JkhbSC5sKytdKT4+NSx4ZT1mdW5jdGlvbiBBQihILGllLFgpe2lmKFguYmlmZjw4KXJldHVybiBLYihIKTt2YXIgd2U9SC5yZWFkX3NoaWZ0KDEyPT1Y''@;'; put 'put ''LmJpZmY/NDoyKSx4ZT1ILnJlYWRfc2hpZnQoMTI9PVguYmlmZj80OjIpLEZlPWh1KEgsMiksWmU9aHUoSCwyKTtyZXR1cm57czp7cjp3ZSxjOkZlWzBdLGNSZWw6RmVbMV0sclJlbDpGZVsyXX0sZTp7cjp4ZSxjOlplWzBdLGNSZWw6WmVbMV0sclJlbDpaZVsyXX19fShILDAsWCk7cmV0dXJu''@;'; put 'put ''W3dlLHhlXX19LDQ2OntuOiJQdGdNZW1BcmVhTiIsZjpmdW5jdGlvbiBlQShIKXtyZXR1cm5bSC5yZWFkX3NoaWZ0KDEpPj4+NSYzLEgucmVhZF9zaGlmdCgyKV19fSw0Nzp7bjoiUHRnTWVtTm9NZW1OIixmOmZ1bmN0aW9uIGE1KEgpe3JldHVybltILnJlYWRfc2hpZnQoMSk+Pj41JjMsSC5y''@;'; put 'put ''ZWFkX3NoaWZ0KDIpXX19LDU3OntuOiJQdGdOYW1lWCIsZjpmdW5jdGlvbiBEQihILGllLFgpe3JldHVybiA1PT1YLmJpZmY/ZnVuY3Rpb24gS0UoSCl7dmFyIGllPUgucmVhZF9zaGlmdCgxKT4+PjUmMyxYPUgucmVhZF9zaGlmdCgyLCJpIik7SC5sKz04O3ZhciB3ZT1ILnJlYWRfc2hpZnQo''@;'; put 'put ''Mik7cmV0dXJuIEgubCs9MTIsW2llLFgsd2VdfShIKTpbSC5yZWFkX3NoaWZ0KDEpPj4+NSYzLEgucmVhZF9zaGlmdCgyKSxILnJlYWRfc2hpZnQoNCldfX0sNTg6e246IlB0Z1JlZjNkIixmOmZ1bmN0aW9uIE1CKEgsaWUsWCl7dmFyIHdlPSg5NiZIW0gubF0pPj41O0gubCs9MTt2YXIgeGU9''@;'; put 'put ''SC5yZWFkX3NoaWZ0KDIpO3JldHVybiBYJiY1PT1YLmJpZmYmJihILmwrPTEyKSxbd2UseGUsakUoSCwwLFgpXX19LDU5OntuOiJQdGdBcmVhM2QiLGY6ZnVuY3Rpb24gX0IoSCxpZSxYKXt2YXIgd2U9KDk2JkhbSC5sKytdKT4+NSx4ZT1ILnJlYWRfc2hpZnQoMiwiaSIpO2lmKFgmJjU9PT1Y''@;'; put 'put ''LmJpZmYpSC5sKz0xMjtyZXR1cm5bd2UseGUsTW0oSCwwLFgpXX19LDYwOntuOiJQdGdSZWZFcnIzZCIsZjpmdW5jdGlvbiBCQihILGllLFgpe3ZhciB3ZT0oOTYmSFtILmwrK10pPj41LHhlPUgucmVhZF9zaGlmdCgyKSxGZT00O2lmKFgpc3dpdGNoKFguYmlmZil7Y2FzZSA1OkZlPTE1O2Jy''@;'; put 'put ''ZWFrO2Nhc2UgMTI6RmU9Nn1yZXR1cm4gSC5sKz1GZSxbd2UseGVdfX0sNjE6e246IlB0Z0FyZWFFcnIzZCIsZjpmdW5jdGlvbiB1dChILGllLFgpe3ZhciB3ZT0oOTYmSFtILmwrK10pPj41LHhlPUgucmVhZF9zaGlmdCgyKSxGZT04O2lmKFgpc3dpdGNoKFguYmlmZil7Y2FzZSA1OkgubCs9''@;'; put 'put ''MTIsRmU9NjticmVhaztjYXNlIDEyOkZlPTEyfXJldHVybiBILmwrPUZlLFt3ZSx4ZV19fSwyNTU6e319LG9fPXs2NDozMiw5NjozMiw2NTozMyw5NzozMyw2NjozNCw5ODozNCw2NzozNSw5OTozNSw2ODozNiwxMDA6MzYsNjk6MzcsMTAxOjM3LDcwOjM4LDEwMjozOCw3MTozOSwxMDM6Mzks''@;'; put 'put ''NzI6NDAsMTA0OjQwLDczOjQxLDEwNTo0MSw3NDo0MiwxMDY6NDIsNzU6NDMsMTA3OjQzLDc2OjQ0LDEwODo0NCw3Nzo0NSwxMDk6NDUsNzg6NDYsMTEwOjQ2LDc5OjQ3LDExMTo0Nyw4ODozNCwxMjA6MzQsODk6NTcsMTIxOjU3LDkwOjU4LDEyMjo1OCw5MTo1OSwxMjM6NTksOTI6NjAsMTI0''@;'; put 'put ''OjYwLDkzOjYxLDEyNTo2MX07IWZ1bmN0aW9uKCl7Zm9yKHZhciBIIGluIG9fKWw1W0hdPWw1W29fW0hdXX0oKTt2YXIgRW09ezE6e246IlB0Z0VsZkxlbCIsZjpOQn0sMjp7bjoiUHRnRWxmUnciLGY6JDl9LDM6e246IlB0Z0VsZkNvbCIsZjp0X30sNjp7bjoiUHRnRWxmUndWIixmOkRofSw3''@;'; put 'put ''OntuOiJQdGdFbGZDb2xWIixmOkhCfSwxMDp7bjoiUHRnRWxmUmFkaWNhbCIsZjpLdH0sMTE6e246IlB0Z0VsZlJhZGljYWxTIixmOnFFfSwxMzp7bjoiUHRnRWxmQ29sUyIsZjpmR30sMTU6e246IlB0Z0VsZkNvbFNWIixmOm5ffSwxNjp7bjoiUHRnRWxmUmFkaWNhbExlbCIsZjpLOX0sMjU6''@;'; put 'put ''e246IlB0Z0xpc3QiLGY6ZnVuY3Rpb24gcTkoSCl7SC5sKz0yO3ZhciBpZT1ILnJlYWRfc2hpZnQoMiksWD1ILnJlYWRfc2hpZnQoMiksd2U9SC5yZWFkX3NoaWZ0KDQpLHhlPUgucmVhZF9zaGlmdCgyKSxGZT1ILnJlYWRfc2hpZnQoMik7cmV0dXJue2l4dGk6aWUsY29sdHlwZTozJlgscnQ6''@;'; put 'put ''cl9bWD4+MiYzMV0saWR4OndlLGM6eGUsQzpGZX19fSwyOTp7bjoiUHRnU3hOYW1lIixmOmZ1bmN0aW9uIGlfKEgpe3JldHVybiBILmwrPTIsW0gucmVhZF9zaGlmdCg0KV19fSwyNTU6e319LF9mPXswOntuOiJQdGdBdHRyTm9vcCIsZjpmdW5jdGlvbiBleChIKXtyZXR1cm4gSC5sKz00LFsw''@;'; put 'put ''LDBdfX0sMTp7bjoiUHRnQXR0clNlbWkiLGY6ZnVuY3Rpb24gU0IoSCxpZSxYKXt2YXIgd2U9MjU1JkhbSC5sKzFdPzE6MDtyZXR1cm4gSC5sKz1YJiYyPT1YLmJpZmY/Mzo0LFt3ZV19fSwyOntuOiJQdGdBdHRySWYiLGY6ZnVuY3Rpb24gWUUoSCxpZSxYKXt2YXIgd2U9MjU1JkhbSC5sKzFd''@;'; put 'put ''PzE6MDtyZXR1cm4gSC5sKz0yLFt3ZSxILnJlYWRfc2hpZnQoWCYmMj09WC5iaWZmPzE6MildfX0sNDp7bjoiUHRnQXR0ckNob29zZSIsZjpmdW5jdGlvbiBrQihILGllLFgpe0gubCs9Mjtmb3IodmFyIHdlPUgucmVhZF9zaGlmdChYJiYyPT1YLmJpZmY/MToyKSx4ZT1bXSxGZT0wO0ZlPD13''@;'; put 'put ''ZTsrK0ZlKXhlLnB1c2goSC5yZWFkX3NoaWZ0KFgmJjI9PVguYmlmZj8xOjIpKTtyZXR1cm4geGV9fSw4OntuOiJQdGdBdHRyR290byIsZjpmdW5jdGlvbiBXRShILGllLFgpe3ZhciB3ZT0yNTUmSFtILmwrMV0/MTowO3JldHVybiBILmwrPTIsW3dlLEgucmVhZF9zaGlmdChYJiYyPT1YLmJp''@;'; put 'put ''ZmY/MToyKV19fSwxNjp7bjoiUHRnQXR0clN1bSIsZjpmdW5jdGlvbiBzRyhILGllLFgpe0gubCs9WCYmMj09WC5iaWZmPzM6NH19LDMyOntuOiJQdGdBdHRyQmF4Y2VsIixmOmZ1bmN0aW9uIENCKEgpe3ZhciBpZT0xJkhbSC5sKzFdO3JldHVybiBILmwrPTQsW2llLDFdfX0sNjQ6e246IlB0''@;'; put 'put ''Z0F0dHJTcGFjZSIsZjpmdW5jdGlvbiBsRyhIKXtyZXR1cm4gSC5yZWFkX3NoaWZ0KDIpLFRkKEgpfX0sNjU6e246IlB0Z0F0dHJTcGFjZVNlbWkiLGY6ZnVuY3Rpb24gUUUoSCl7cmV0dXJuIEgucmVhZF9zaGlmdCgyKSxUZChIKX19LDEyODp7bjoiUHRnQXR0cklmRXJyb3IiLGY6ZnVuY3Rp''@;'; put 'put ''b24gVUUoSCl7dmFyIGllPTI1NSZIW0gubCsxXT8xOjA7cmV0dXJuIEgubCs9MixbaWUsSC5yZWFkX3NoaWZ0KDIpXX19LDI1NTp7fX07ZnVuY3Rpb24gTGQoSCxpZSxYLHdlLHhlKXtpZih3ZS5iaWZmPDgpcmV0dXJuIENzKEgsaWUpO2Zvcih2YXIgRmU9SC5sK2llLFplPVtdLGplPTA7amUh''@;'; put 'put ''PT1YLmxlbmd0aDsrK2plKXN3aXRjaChYW2plXVswXSl7Y2FzZSJQdGdBcnJheSI6WFtqZV1bMV09WEUoSCwwLHdlKSxaZS5wdXNoKFhbamVdWzFdKTticmVhaztjYXNlIlB0Z01lbUFyZWEiOlhbamVdWzJdPUlCKEgsMCx3ZSksWmUucHVzaChYW2plXVsyXSk7YnJlYWs7Y2FzZSJQdGdFeHAi''@;'; put 'put ''OndlJiYxMj09d2UuYmlmZiYmKFhbamVdWzFdWzFdPUgucmVhZF9zaGlmdCg0KSxaZS5wdXNoKFhbamVdWzFdKSk7YnJlYWs7Y2FzZSJQdGdMaXN0IjpjYXNlIlB0Z0VsZlJhZGljYWxTIjpjYXNlIlB0Z0VsZkNvbFMiOmNhc2UiUHRnRWxmQ29sU1YiOnRocm93IlVuc3VwcG9ydGVkICIrWFtq''@;'; put 'put ''ZV1bMF19cmV0dXJuIGllPUZlLUgubCwheGUmJjAhPT1pZSYmWmUucHVzaChDcyhILGllKSksWmV9ZnVuY3Rpb24gajQoSCxpZSxYKXtmb3IodmFyIHhlLEZlLHdlPUgubCtpZSxaZT1bXTt3ZSE9SC5sOylpZT13ZS1ILmwseGU9bDVbRmU9SFtILmxdXSwoMjQ9PT1GZXx8MjU9PT1GZSkmJih4''@;'; put 'put ''ZT0oMjQ9PT1GZT9FbTpfZilbSFtILmwrMV1dKSx4ZSYmeGUuZj9aZS5wdXNoKFt4ZS5uLHhlLmYoSCxpZSxYKV0pOkNzKEgsaWUpO3JldHVybiBaZX1mdW5jdGlvbiBhXyhIKXtmb3IodmFyIGllPVtdLFg9MDtYPEgubGVuZ3RoOysrWCl7Zm9yKHZhciB3ZT1IW1hdLHhlPVtdLEZlPTA7RmU8''@;'; put 'put ''d2UubGVuZ3RoOysrRmUpe3ZhciBaZT13ZVtGZV07eGUucHVzaChaZT8yPT09WmVbMF0/JyInK1plWzFdLnJlcGxhY2UoLyIvZywnIiInKSsnIic6WmVbMV06IiIpfWllLnB1c2goeGUuam9pbigiLCIpKX1yZXR1cm4gaWUuam9pbigiOyIpfV9mWzMzXT1fZlszMl07dmFyIHR4PXtQdGdBZGQ6''@;'; put 'put ''IisiLFB0Z0NvbmNhdDoiJiIsUHRnRGl2OiIvIixQdGdFcToiPSIsUHRnR2U6Ij49IixQdGdHdDoiPiIsUHRnTGU6Ijw9IixQdGdMdDoiPCIsUHRnTXVsOiIqIixQdGdOZToiPD4iLFB0Z1Bvd2VyOiJeIixQdGdTdWI6Ii0ifSx0QT1uZXcgUmVnRXhwKC9bXlx3XHU0RTAwLVx1OUZGRlx1MzA0''@;'; put 'put ''MC1cdTMwRkZdLyk7ZnVuY3Rpb24gbngoSCxpZSxYKXtpZighSClyZXR1cm4iU0gzM1RKU0VSUjAiO2lmKFguYmlmZj44JiYoIUguWFRJfHwhSC5YVElbaWVdKSlyZXR1cm4gSC5TaGVldE5hbWVzW2llXTtpZighSC5YVEkpcmV0dXJuIlNIMzNUSlNFUlI2Ijt2YXIgd2U9SC5YVElbaWVdO2lm''@;'; put 'put ''KFguYmlmZjw4KXJldHVybiBpZT4xZTQmJihpZS09NjU1MzYpLGllPDAmJihpZT0taWUpLDA9PWllPyIiOkguWFRJW2llLTFdO2lmKCF3ZSlyZXR1cm4iU0gzM1RKU0VSUjEiO3ZhciB4ZT0iIjtpZihYLmJpZmY+OClzd2l0Y2goSFt3ZVswXV1bMF0pe2Nhc2UgMzU3OnJldHVybiB4ZT0tMT09''@;'; put 'put ''d2VbMV0/IiNSRUYiOkguU2hlZXROYW1lc1t3ZVsxXV0sd2VbMV09PXdlWzJdP3hlOnhlKyI6IitILlNoZWV0TmFtZXNbd2VbMl1dO2Nhc2UgMzU4OnJldHVybiBudWxsIT1YLlNJRD9ILlNoZWV0TmFtZXNbWC5TSURdOiJTSDMzVEpTU0FNRSIrSFt3ZVswXV1bMF07ZGVmYXVsdDpyZXR1cm4i''@;'; put 'put ''U0gzM1RKU1NSQyIrSFt3ZVswXV1bMF19c3dpdGNoKEhbd2VbMF1dWzBdWzBdKXtjYXNlIDEwMjU6cmV0dXJuIHhlPS0xPT13ZVsxXT8iI1JFRiI6SC5TaGVldE5hbWVzW3dlWzFdXXx8IlNIMzNUSlNFUlIzIix3ZVsxXT09d2VbMl0/eGU6eGUrIjoiK0guU2hlZXROYW1lc1t3ZVsyXV07Y2Fz''@;'; put 'put ''ZSAxNDg0OTpyZXR1cm4gSFt3ZVswXV0uc2xpY2UoMSkubWFwKGZ1bmN0aW9uKEZlKXtyZXR1cm4gRmUuTmFtZX0pLmpvaW4oIjs7Iik7ZGVmYXVsdDpyZXR1cm4gSFt3ZVswXV1bMF1bM10/KHhlPS0xPT13ZVsxXT8iI1JFRiI6SFt3ZVswXV1bMF1bM11bd2VbMV1dfHwiU0gzM1RKU0VSUjQi''@;'; put 'put ''LHdlWzFdPT13ZVsyXT94ZTp4ZSsiOiIrSFt3ZVswXV1bMF1bM11bd2VbMl1dKToiU0gzM1RKU0VSUjIifX1mdW5jdGlvbiBsXyhILGllLFgpe3JldHVybiBmdW5jdGlvbiBWQihILGllKXtpZighKEh8fGllJiZpZS5iaWZmPD01JiZpZS5iaWZmPj0yKSl0aHJvdyBuZXcgRXJyb3IoImVtcHR5''@;'; put 'put ''IHNoZWV0IG5hbWUiKTtyZXR1cm4vI1JFRi8udGVzdChIKT9IOnRBLnRlc3QoSCk/IiciK0grIiciOkh9KG54KEgsaWUsWCksWCl9ZnVuY3Rpb24gVzEoSCxpZSxYLHdlLHhlLEZlKXt2YXIgTXQseHQsUnQsQ24sWmU9eGUmJnhlLmJpZmZ8fDgsamU9RmUmJm51bGwhPWllP2llOntzOntjOjAs''@;'; put 'put ''cjowfSxlOntjOjAscjowfX0sWWU9W10sVXQ9MCxubj0wLER0PSIiO2lmKCFIWzBdfHwhSFswXVswXSlyZXR1cm4iIjtmb3IodmFyIHp0PS0xLFBuPSIiLFRuPTAsT249SFswXS5sZW5ndGg7VG48T247KytUbil7dmFyIFluPUhbMF1bVG5dO3N3aXRjaChZblswXSl7Y2FzZSJQdGdVbWludXMi''@;'; put 'put ''OlllLnB1c2goIi0iK1llLnBvcCgpKTticmVhaztjYXNlIlB0Z1VwbHVzIjpZZS5wdXNoKCIrIitZZS5wb3AoKSk7YnJlYWs7Y2FzZSJQdGdQZXJjZW50IjpZZS5wdXNoKFllLnBvcCgpKyIlIik7YnJlYWs7Y2FzZSJQdGdBZGQiOmNhc2UiUHRnQ29uY2F0IjpjYXNlIlB0Z0RpdiI6Y2FzZSJQ''@;'; put 'put ''dGdFcSI6Y2FzZSJQdGdHZSI6Y2FzZSJQdGdHdCI6Y2FzZSJQdGdMZSI6Y2FzZSJQdGdMdCI6Y2FzZSJQdGdNdWwiOmNhc2UiUHRnTmUiOmNhc2UiUHRnUG93ZXIiOmNhc2UiUHRnU3ViIjppZihNdD1ZZS5wb3AoKSx4dD1ZZS5wb3AoKSx6dD49MCl7c3dpdGNoKEhbMF1benRdWzFdWzBdKXtj''@;'; put 'put ''YXNlIDA6UG49ZXIoIiAiLEhbMF1benRdWzFdWzFdKTticmVhaztjYXNlIDE6UG49ZXIoIlxyIixIWzBdW3p0XVsxXVsxXSk7YnJlYWs7ZGVmYXVsdDppZihQbj0iIix4ZS5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIFB0Z0F0dHJTcGFjZVR5cGUgIitIWzBdW3p0XVsxXVswXSl9''@;'; put 'put ''eHQrPVBuLHp0PS0xfVllLnB1c2goeHQrdHhbWW5bMF1dK010KTticmVhaztjYXNlIlB0Z0lzZWN0IjpNdD1ZZS5wb3AoKSx4dD1ZZS5wb3AoKSxZZS5wdXNoKHh0KyIgIitNdCk7YnJlYWs7Y2FzZSJQdGdVbmlvbiI6TXQ9WWUucG9wKCkseHQ9WWUucG9wKCksWWUucHVzaCh4dCsiLCIrTXQp''@;'; put 'put ''O2JyZWFrO2Nhc2UiUHRnUmFuZ2UiOk10PVllLnBvcCgpLHh0PVllLnBvcCgpLFllLnB1c2goeHQrIjoiK010KTticmVhaztjYXNlIlB0Z0F0dHJDaG9vc2UiOmNhc2UiUHRnQXR0ckdvdG8iOmNhc2UiUHRnQXR0cklmIjpjYXNlIlB0Z0F0dHJJZkVycm9yIjpjYXNlIlB0Z0F0dHJCYXhjZWwi''@;'; put 'put ''OmNhc2UiUHRnQXR0clNlbWkiOmNhc2UiUHRnTWVtQXJlYSI6Y2FzZSJQdGdUYmwiOmNhc2UiUHRnTWVtRXJyIjpjYXNlIlB0Z01lbUFyZWFOIjpjYXNlIlB0Z01lbU5vTWVtTiI6Y2FzZSJQdGdBdHRyTm9vcCI6Y2FzZSJQdGdTaGVldCI6Y2FzZSJQdGdFbmRTaGVldCI6Y2FzZSJQdGdNZW1G''@;'; put 'put ''dW5jIjpjYXNlIlB0Z01lbU5vTWVtIjpicmVhaztjYXNlIlB0Z1JlZiI6UnQ9dTEoWW5bMV1bMV0samUseGUpLFllLnB1c2gocDMoUnQsWmUpKTticmVhaztjYXNlIlB0Z1JlZk4iOlJ0PVg/dTEoWW5bMV1bMV0sWCx4ZSk6WW5bMV1bMV0sWWUucHVzaChwMyhSdCxaZSkpO2JyZWFrO2Nhc2Ui''@;'; put 'put ''UHRnUmVmM2QiOlV0PVluWzFdWzFdLFJ0PXUxKFluWzFdWzJdLGplLHhlKSxEdD1sXyh3ZSxVdCx4ZSksWWUucHVzaChEdCsiISIrcDMoUnQsWmUpKTticmVhaztjYXNlIlB0Z0Z1bmMiOmNhc2UiUHRnRnVuY1ZhciI6dmFyIGFpPVluWzFdWzBdLHlyPVluWzFdWzFdO2FpfHwoYWk9MCk7dmFy''@;'; put 'put ''IGFyPTA9PShhaSY9MTI3KT9bXTpZZS5zbGljZSgtYWkpO1llLmxlbmd0aC09YWksIlVzZXIiPT09eXImJih5cj1hci5zaGlmdCgpKSxZZS5wdXNoKHlyKyIoIithci5qb2luKCIsIikrIikiKTticmVhaztjYXNlIlB0Z0Jvb2wiOlllLnB1c2goWW5bMV0/IlRSVUUiOiJGQUxTRSIpO2JyZWFr''@;'; put 'put ''O2Nhc2UiUHRnSW50IjpjYXNlIlB0Z051bSI6WWUucHVzaChTdHJpbmcoWW5bMV0pKTticmVhaztjYXNlIlB0Z1N0ciI6WWUucHVzaCgnIicrWW5bMV0ucmVwbGFjZSgvIi9nLCciIicpKyciJyk7YnJlYWs7Y2FzZSJQdGdFcnIiOlllLnB1c2goWW5bMV0pO2JyZWFrO2Nhc2UiUHRnQXJlYU4i''@;'; put 'put ''OkNuPW1sKFluWzFdWzFdLFg/e3M6WH06amUseGUpLFllLnB1c2goWXUoQ24seGUpKTticmVhaztjYXNlIlB0Z0FyZWEiOkNuPW1sKFluWzFdWzFdLGplLHhlKSxZZS5wdXNoKFl1KENuLHhlKSk7YnJlYWs7Y2FzZSJQdGdBcmVhM2QiOlV0PVluWzFdWzFdLENuPW1sKFluWzFdWzJdLGplLHhl''@;'; put 'put ''KSxEdD1sXyh3ZSxVdCx4ZSksWWUucHVzaChEdCsiISIrWXUoQ24seGUpKTticmVhaztjYXNlIlB0Z0F0dHJTdW0iOlllLnB1c2goIlNVTSgiK1llLnBvcCgpKyIpIik7YnJlYWs7Y2FzZSJQdGdOYW1lIjp2YXIgR3I9KHdlLm5hbWVzfHxbXSlbKG5uPVluWzFdWzJdKS0xXXx8KHdlWzBdfHxb''@;'; put 'put ''XSlbbm5dLHpyPUdyP0dyLk5hbWU6IlNIMzNUSlNOQU1FIitTdHJpbmcobm4pO3pyIGluIGF4JiYoenI9YXhbenJdKSxZZS5wdXNoKHpyKTticmVhaztjYXNlIlB0Z05hbWVYIjp2YXIgb2kscXI9WW5bMV1bMV07aWYobm49WW5bMV1bMl0sISh4ZS5iaWZmPD01KSl7dmFyIGNyPSIiO2lmKDE0''@;'; put 'put ''ODQ5PT0oKHdlW3FyXXx8W10pWzBdfHxbXSlbMF18fCgxMDI1PT0oKHdlW3FyXXx8W10pWzBdfHxbXSlbMF0/d2VbcXJdW25uXSYmd2VbcXJdW25uXS5pdGFiPjAmJihjcj13ZS5TaGVldE5hbWVzW3dlW3FyXVtubl0uaXRhYi0xXSsiISIpOmNyPXdlLlNoZWV0TmFtZXNbbm4tMV0rIiEiKSx3''@;'; put 'put ''ZVtxcl0mJndlW3FyXVtubl0pY3IrPXdlW3FyXVtubl0uTmFtZTtlbHNlIGlmKHdlWzBdJiZ3ZVswXVtubl0pY3IrPXdlWzBdW25uXS5OYW1lO2Vsc2V7dmFyIHYwPShueCh3ZSxxcix4ZSl8fCIiKS5zcGxpdCgiOzsiKTt2MFtubi0xXT9jcj12MFtubi0xXTpjcis9IlNIMzNUSlNFUlJYIn1Z''@;'; put 'put ''ZS5wdXNoKGNyKTticmVha31xcjwwJiYocXI9LXFyKSx3ZVtxcl0mJihvaT13ZVtxcl1bbm5dKSxvaXx8KG9pPXtOYW1lOiJTSDMzVEpTRVJSWSJ9KSxZZS5wdXNoKG9pLk5hbWUpO2JyZWFrO2Nhc2UiUHRnUGFyZW4iOnZhciBVaT0iKCIsdG89IikiO2lmKHp0Pj0wKXtzd2l0Y2goUG49IiIs''@;'; put 'put ''SFswXVt6dF1bMV1bMF0pe2Nhc2UgMjpVaT1lcigiICIsSFswXVt6dF1bMV1bMV0pK1VpO2JyZWFrO2Nhc2UgMzpVaT1lcigiXHIiLEhbMF1benRdWzFdWzFdKStVaTticmVhaztjYXNlIDQ6dG89ZXIoIiAiLEhbMF1benRdWzFdWzFdKSt0bzticmVhaztjYXNlIDU6dG89ZXIoIlxyIixIWzBd''@;'; put 'put ''W3p0XVsxXVsxXSkrdG87YnJlYWs7ZGVmYXVsdDppZih4ZS5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIFB0Z0F0dHJTcGFjZVR5cGUgIitIWzBdW3p0XVsxXVswXSl9enQ9LTF9WWUucHVzaChVaStZZS5wb3AoKSt0byk7YnJlYWs7Y2FzZSJQdGdSZWZFcnIiOmNhc2UiUHRnQXJl''@;'; put 'put ''YUVyciI6Y2FzZSJQdGdBcmVhRXJyM2QiOmNhc2UiUHRnUmVmRXJyM2QiOlllLnB1c2goIiNSRUYhIik7YnJlYWs7Y2FzZSJQdGdFeHAiOnZhciBiaT17YzpYLmMscjpYLnJ9O2lmKHdlLnNoYXJlZGZbWTAoUnQ9e2M6WW5bMV1bMV0scjpZblsxXVswXX0pXSl7dmFyIFlyPXdlLnNoYXJlZGZb''@;'; put 'put ''WTAoUnQpXTtZZS5wdXNoKFcxKFlyLGplLGJpLHdlLHhlKSl9ZWxzZXt2YXIgRWk9ITE7Zm9yKE10PTA7TXQhPXdlLmFycmF5Zi5sZW5ndGg7KytNdClpZighKFJ0LmM8KHh0PXdlLmFycmF5ZltNdF0pWzBdLnMuY3x8UnQuYz54dFswXS5lLmN8fFJ0LnI8eHRbMF0ucy5yfHxSdC5yPnh0WzBd''@;'; put 'put ''LmUucikpe1llLnB1c2goVzEoeHRbMV0samUsYmksd2UseGUpKSxFaT0hMDticmVha31FaXx8WWUucHVzaChZblsxXSl9YnJlYWs7Y2FzZSJQdGdBcnJheSI6WWUucHVzaCgieyIrYV8oWW5bMV0pKyJ9Iik7YnJlYWs7Y2FzZSJQdGdBdHRyU3BhY2UiOmNhc2UiUHRnQXR0clNwYWNlU2VtaSI6''@;'; put 'put ''enQ9VG47YnJlYWs7Y2FzZSJQdGdNaXNzQXJnIjpZZS5wdXNoKCIiKTticmVhaztjYXNlIlB0Z0xpc3QiOlllLnB1c2goIlRhYmxlIitZblsxXS5pZHgrIlsjIitZblsxXS5ydCsiXSIpO2JyZWFrO2Nhc2UiUHRnRWxmQ29sIjpjYXNlIlB0Z0VsZkNvbFMiOmNhc2UiUHRnRWxmQ29sU1YiOmNh''@;'; put 'put ''c2UiUHRnRWxmQ29sViI6Y2FzZSJQdGdFbGZMZWwiOmNhc2UiUHRnRWxmUmFkaWNhbCI6Y2FzZSJQdGdFbGZSYWRpY2FsTGVsIjpjYXNlIlB0Z0VsZlJhZGljYWxTIjpjYXNlIlB0Z0VsZlJ3IjpjYXNlIlB0Z0VsZlJ3ViI6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBFTEZzIik7ZGVm''@;'; put 'put ''YXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBGb3JtdWxhIFRva2VuOiAiK1N0cmluZyhZbikpfWlmKDMhPXhlLmJpZmYmJnp0Pj0wJiYtMT09WyJQdGdBdHRyU3BhY2UiLCJQdGdBdHRyU3BhY2VTZW1pIiwiUHRnQXR0ckdvdG8iXS5pbmRleE9mKEhbMF1bVG5dWzBdKSl7dmFy''@;'; put 'put ''IE5yPSEwO3N3aXRjaCgoWW49SFswXVt6dF0pWzFdWzBdKXtjYXNlIDQ6TnI9ITE7Y2FzZSAwOlBuPWVyKCIgIixZblsxXVsxXSk7YnJlYWs7Y2FzZSA1Ok5yPSExO2Nhc2UgMTpQbj1lcigiXHIiLFluWzFdWzFdKTticmVhaztkZWZhdWx0OmlmKFBuPSIiLHhlLldURil0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIlVuZXhwZWN0ZWQgUHRnQXR0clNwYWNlVHlwZSAiK1luWzFdWzBdKX1ZZS5wdXNoKChOcj9QbjoiIikrWWUucG9wKCkrKE5yPyIiOlBuKSksenQ9LTF9fWlmKFllLmxlbmd0aD4xJiZ4ZS5XVEYpdGhyb3cgbmV3IEVycm9yKCJiYWQgZm9ybXVsYSBzdGFjayIpO3JldHVybiBZZVswXX1m''@;'; put 'put ''dW5jdGlvbiBoRyhILGllLFgpe3ZhciBGZSx3ZT1ILmwraWUseGU9Mj09WC5iaWZmPzE6MixaZT1ILnJlYWRfc2hpZnQoeGUpO2lmKDY1NTM1PT1aZSlyZXR1cm5bW10sQ3MoSCxpZS0yKV07dmFyIGplPWo0KEgsWmUsWCk7cmV0dXJuIGllIT09WmUreGUmJihGZT1MZChILGllLVplLXhlLGpl''@;'; put 'put ''LFgpKSxILmw9d2UsW2plLEZlXX1mdW5jdGlvbiBzNShILGllLFgpe3ZhciB4ZSx3ZT1ILmwraWUsRmU9SC5yZWFkX3NoaWZ0KDIpLFplPWo0KEgsRmUsWCk7cmV0dXJuIDY1NTM1PT1GZT9bW10sQ3MoSCxpZS0yKV06KGllIT09RmUrMiYmKHhlPUxkKEgsd2UtRmUtMixaZSxYKSksW1plLHhl''@;'; put 'put ''XSl9ZnVuY3Rpb24gdTUoSCxpZSxYKXt2YXIgd2U9SC5sK2llLHhlPUFjKEgpOzI9PVguYmlmZiYmKytILmw7dmFyIEZlPWZ1bmN0aW9uIHJ4KEgpe3ZhciBpZTtpZig2NTUzNSE9PVBzKEgsSC5sKzYpKXJldHVybltJMihIKSwibiJdO3N3aXRjaChIW0gubF0pe2Nhc2UgMDpyZXR1cm4gSC5s''@;'; put 'put ''Kz04LFsiU3RyaW5nIiwicyJdO2Nhc2UgMTpyZXR1cm4gaWU9MT09PUhbSC5sKzJdLEgubCs9OCxbaWUsImIiXTtjYXNlIDI6cmV0dXJuIGllPUhbSC5sKzJdLEgubCs9OCxbaWUsImUiXTtjYXNlIDM6cmV0dXJuIEgubCs9OCxbIiIsInMiXX1yZXR1cm5bXX0oSCksWmU9SC5yZWFkX3NoaWZ0''@;'; put 'put ''KDEpOzIhPVguYmlmZiYmKEgucmVhZF9zaGlmdCgxKSxYLmJpZmY+PTUmJkgucmVhZF9zaGlmdCg0KSk7dmFyIGplPWZ1bmN0aW9uIHhtKEgsaWUsWCl7dmFyIEZlLHdlPUgubCtpZSx4ZT0yPT1YLmJpZmY/MToyLFplPUgucmVhZF9zaGlmdCh4ZSk7aWYoNjU1MzU9PVplKXJldHVybltbXSxD''@;'; put 'put ''cyhILGllLTIpXTt2YXIgamU9ajQoSCxaZSxYKTtyZXR1cm4gaWUhPT1aZSt4ZSYmKEZlPUxkKEgsaWUtWmUteGUsamUsWCkpLEgubD13ZSxbamUsRmVdfShILHdlLUgubCxYKTtyZXR1cm57Y2VsbDp4ZSx2YWw6RmVbMF0sZm9ybXVsYTpqZSxzaGFyZWQ6WmU+PjMmMSx0dDpGZVsxXX19ZnVu''@;'; put 'put ''Y3Rpb24gckEoSCxpZSxYKXt2YXIgd2U9SC5yZWFkX3NoaWZ0KDQpLHhlPWo0KEgsd2UsWCksRmU9SC5yZWFkX3NoaWZ0KDQpO3JldHVyblt4ZSxGZT4wP0xkKEgsRmUseGUsWCwhMCk6bnVsbF19dmFyIHBHPXJBLHNfPXJBLFpCPXJBLHpCPWZ1bmN0aW9uIEpmKEgsaWUsWCl7dmFyIHdlPUgu''@;'; put 'put ''cmVhZF9zaGlmdCg0KSx4ZT1ILnJlYWRfc2hpZnQoNCksRmU9ajQoSCx3ZSxYKTtyZXR1cm5bRmUseGU+MD9MZChILHhlLEZlLFgsITApOm51bGxdfSxnRz1yQSxtRz1yQTtmdW5jdGlvbiBpeChIKXtpZigoMHxIKT09SCYmSDxNYXRoLnBvdygyLDE2KSYmSD49MCl7dmFyIGllPVJpKDExKTty''@;'; put 'put ''ZXR1cm4gaWUud3JpdGVfc2hpZnQoNCwzKSxpZS53cml0ZV9zaGlmdCgxLDMwKSxpZS53cml0ZV9zaGlmdCgyLEgpLGllLndyaXRlX3NoaWZ0KDQsMCksaWV9dmFyIFg9UmkoMTcpO3JldHVybiBYLndyaXRlX3NoaWZ0KDQsMTEpLFgud3JpdGVfc2hpZnQoMSwzMSksWC53cml0ZV9zaGlmdCg4''@;'; put 'put ''LEgpLFgud3JpdGVfc2hpZnQoNCwwKSxYfWZ1bmN0aW9uIGlBKEgpe3ZhciBpZT1SaSg3KTtpZS53cml0ZV9zaGlmdCg0LDMrMipILmxlbmd0aCksaWUud3JpdGVfc2hpZnQoMSwyMyksaWUud3JpdGVfc2hpZnQoMixILmxlbmd0aCk7dmFyIFg9UmkoMipILmxlbmd0aCk7WC53cml0ZV9zaGlm''@;'; put 'put ''dCgyKkgubGVuZ3RoLEgsInV0ZjE2bGUiKTt2YXIgd2U9UmkoNCk7cmV0dXJuIHdlLndyaXRlX3NoaWZ0KDQsMCksVihbaWUsWCx3ZV0pfWZ1bmN0aW9uIFRtKEgpe2lmKEgubWF0Y2goL14jKERJVlwvMCF8R0VUVElOR19EQVRBfE5cL0F8TkFNRVw/fE5VTEwhfE5VTSF8UkVGIXxWQUxVRSEp''@;'; put 'put ''JC8pKXJldHVybiBmdW5jdGlvbiBaNChIKXt2YXIgaWU9UmkoMTApO3JldHVybiBpZS53cml0ZV9zaGlmdCg0LDIpLGllLndyaXRlX3NoaWZ0KDEsMjgpLGllLndyaXRlX3NoaWZ0KDEsSCksaWUud3JpdGVfc2hpZnQoNCwwKSxpZX0oK19oW0hdKTtpZihILm1hdGNoKC9eXCQ/KD86W0EtV11b''@;'; put 'put ''QS1aXXsyfXxYW0EtRV1bQS1aXXxYRltBLURdfFtBLVpdezEsMn0pXCQ/KD86MTBbMC0zXVxkezR9fDEwNFswLTddXGR7M318MTA0OFswLTRdXGR7Mn18MTA0ODVbMC02XVxkfDEwNDg1N1swLTZdfFsxLTldXGR7MCw1fSkkLykpcmV0dXJuIGZ1bmN0aW9uIG94KEgpe3ZhciBpZT11bChIKSxY''@;'; put 'put ''PVJpKDE1KTtyZXR1cm4gWC53cml0ZV9zaGlmdCg0LDcpLFgud3JpdGVfc2hpZnQoMSwzNiksWC53cml0ZV9zaGlmdCg0LGllLnIpLFgud3JpdGVfc2hpZnQoMixpZS5jfCgiJCI9PUguY2hhckF0KDApPzA6MSk8PDE0fChILm1hdGNoKC9cJFxkLyk/MDoxKTw8MTUpLFgud3JpdGVfc2hpZnQo''@;'; put 'put ''NCwwKSxYfShIKTtpZihILm1hdGNoKC9eIi4qIiQvKSlyZXR1cm4gaUEoSCk7dGhyb3ciRm9ybXVsYSB8IitIKyJ8IG5vdCBzdXBwb3J0ZWQgZm9yIFhMU0IifXZhciB1Xz17MDoiQkVFUCIsMToiT1BFTiIsMjoiT1BFTi5MSU5LUyIsMzoiQ0xPU0UuQUxMIiw0OiJTQVZFIiw1OiJTQVZFLkFT''@;'; put 'put ''Iiw2OiJGSUxFLkRFTEVURSIsNzoiUEFHRS5TRVRVUCIsODoiUFJJTlQiLDk6IlBSSU5URVIuU0VUVVAiLDEwOiJRVUlUIiwxMToiTkVXLldJTkRPVyIsMTI6IkFSUkFOR0UuQUxMIiwxMzoiV0lORE9XLlNJWkUiLDE0OiJXSU5ET1cuTU9WRSIsMTU6IkZVTEwiLDE2OiJDTE9TRSIsMTc6IlJV''@;'; put 'put ''TiIsMjI6IlNFVC5QUklOVC5BUkVBIiwyMzoiU0VULlBSSU5ULlRJVExFUyIsMjQ6IlNFVC5QQUdFLkJSRUFLIiwyNToiUkVNT1ZFLlBBR0UuQlJFQUsiLDI2OiJGT05UIiwyNzoiRElTUExBWSIsMjg6IlBST1RFQ1QuRE9DVU1FTlQiLDI5OiJQUkVDSVNJT04iLDMwOiJBMS5SMUMxIiwzMToi''@;'; put 'put ''Q0FMQ1VMQVRFLk5PVyIsMzI6IkNBTENVTEFUSU9OIiwzNDoiREFUQS5GSU5EIiwzNToiRVhUUkFDVCIsMzY6IkRBVEEuREVMRVRFIiwzNzoiU0VULkRBVEFCQVNFIiwzODoiU0VULkNSSVRFUklBIiwzOToiU09SVCIsNDA6IkRBVEEuU0VSSUVTIiw0MToiVEFCTEUiLDQyOiJGT1JNQVQuTlVN''@;'; put 'put ''QkVSIiw0MzoiQUxJR05NRU5UIiw0NDoiU1RZTEUiLDQ1OiJCT1JERVIiLDQ2OiJDRUxMLlBST1RFQ1RJT04iLDQ3OiJDT0xVTU4uV0lEVEgiLDQ4OiJVTkRPIiw0OToiQ1VUIiw1MDoiQ09QWSIsNTE6IlBBU1RFIiw1MjoiQ0xFQVIiLDUzOiJQQVNURS5TUEVDSUFMIiw1NDoiRURJVC5ERUxF''@;'; put 'put ''VEUiLDU1OiJJTlNFUlQiLDU2OiJGSUxMLlJJR0hUIiw1NzoiRklMTC5ET1dOIiw2MToiREVGSU5FLk5BTUUiLDYyOiJDUkVBVEUuTkFNRVMiLDYzOiJGT1JNVUxBLkdPVE8iLDY0OiJGT1JNVUxBLkZJTkQiLDY1OiJTRUxFQ1QuTEFTVC5DRUxMIiw2NjoiU0hPVy5BQ1RJVkUuQ0VMTCIsNjc6''@;'; put 'put ''IkdBTExFUlkuQVJFQSIsNjg6IkdBTExFUlkuQkFSIiw2OToiR0FMTEVSWS5DT0xVTU4iLDcwOiJHQUxMRVJZLkxJTkUiLDcxOiJHQUxMRVJZLlBJRSIsNzI6IkdBTExFUlkuU0NBVFRFUiIsNzM6IkNPTUJJTkFUSU9OIiw3NDoiUFJFRkVSUkVEIiw3NToiQURELk9WRVJMQVkiLDc2OiJHUklE''@;'; put 'put ''TElORVMiLDc3OiJTRVQuUFJFRkVSUkVEIiw3ODoiQVhFUyIsNzk6IkxFR0VORCIsODA6IkFUVEFDSC5URVhUIiw4MToiQURELkFSUk9XIiw4MjoiU0VMRUNULkNIQVJUIiw4MzoiU0VMRUNULlBMT1QuQVJFQSIsODQ6IlBBVFRFUk5TIiw4NToiTUFJTi5DSEFSVCIsODY6Ik9WRVJMQVkiLDg3''@;'; put 'put ''OiJTQ0FMRSIsODg6IkZPUk1BVC5MRUdFTkQiLDg5OiJGT1JNQVQuVEVYVCIsOTA6IkVESVQuUkVQRUFUIiw5MToiUEFSU0UiLDkyOiJKVVNUSUZZIiw5MzoiSElERSIsOTQ6IlVOSElERSIsOTU6IldPUktTUEFDRSIsOTY6IkZPUk1VTEEiLDk3OiJGT1JNVUxBLkZJTEwiLDk4OiJGT1JNVUxB''@;'; put 'put ''LkFSUkFZIiw5OToiREFUQS5GSU5ELk5FWFQiLDEwMDoiREFUQS5GSU5ELlBSRVYiLDEwMToiRk9STVVMQS5GSU5ELk5FWFQiLDEwMjoiRk9STVVMQS5GSU5ELlBSRVYiLDEwMzoiQUNUSVZBVEUiLDEwNDoiQUNUSVZBVEUuTkVYVCIsMTA1OiJBQ1RJVkFURS5QUkVWIiwxMDY6IlVOTE9DS0VE''@;'; put 'put ''Lk5FWFQiLDEwNzoiVU5MT0NLRUQuUFJFViIsMTA4OiJDT1BZLlBJQ1RVUkUiLDEwOToiU0VMRUNUIiwxMTA6IkRFTEVURS5OQU1FIiwxMTE6IkRFTEVURS5GT1JNQVQiLDExMjoiVkxJTkUiLDExMzoiSExJTkUiLDExNDoiVlBBR0UiLDExNToiSFBBR0UiLDExNjoiVlNDUk9MTCIsMTE3OiJI''@;'; put 'put ''U0NST0xMIiwxMTg6IkFMRVJUIiwxMTk6Ik5FVyIsMTIwOiJDQU5DRUwuQ09QWSIsMTIxOiJTSE9XLkNMSVBCT0FSRCIsMTIyOiJNRVNTQUdFIiwxMjQ6IlBBU1RFLkxJTksiLDEyNToiQVBQLkFDVElWQVRFIiwxMjY6IkRFTEVURS5BUlJPVyIsMTI3OiJST1cuSEVJR0hUIiwxMjg6IkZPUk1B''@;'; put 'put ''VC5NT1ZFIiwxMjk6IkZPUk1BVC5TSVpFIiwxMzA6IkZPUk1VTEEuUkVQTEFDRSIsMTMxOiJTRU5ELktFWVMiLDEzMjoiU0VMRUNULlNQRUNJQUwiLDEzMzoiQVBQTFkuTkFNRVMiLDEzNDoiUkVQTEFDRS5GT05UIiwxMzU6IkZSRUVaRS5QQU5FUyIsMTM2OiJTSE9XLklORk8iLDEzNzoiU1BM''@;'; put 'put ''SVQiLDEzODoiT04uV0lORE9XIiwxMzk6Ik9OLkRBVEEiLDE0MDoiRElTQUJMRS5JTlBVVCIsMTQyOiJPVVRMSU5FIiwxNDM6IkxJU1QuTkFNRVMiLDE0NDoiRklMRS5DTE9TRSIsMTQ1OiJTQVZFLldPUktCT09LIiwxNDY6IkRBVEEuRk9STSIsMTQ3OiJDT1BZLkNIQVJUIiwxNDg6Ik9OLlRJ''@;'; put 'put ''TUUiLDE0OToiV0FJVCIsMTUwOiJGT1JNQVQuRk9OVCIsMTUxOiJGSUxMLlVQIiwxNTI6IkZJTEwuTEVGVCIsMTUzOiJERUxFVEUuT1ZFUkxBWSIsMTU1OiJTSE9SVC5NRU5VUyIsMTU5OiJTRVQuVVBEQVRFLlNUQVRVUyIsMTYxOiJDT0xPUi5QQUxFVFRFIiwxNjI6IkRFTEVURS5TVFlMRSIs''@;'; put 'put ''MTYzOiJXSU5ET1cuUkVTVE9SRSIsMTY0OiJXSU5ET1cuTUFYSU1JWkUiLDE2NjoiQ0hBTkdFLkxJTksiLDE2NzoiQ0FMQ1VMQVRFLkRPQ1VNRU5UIiwxNjg6Ik9OLktFWSIsMTY5OiJBUFAuUkVTVE9SRSIsMTcwOiJBUFAuTU9WRSIsMTcxOiJBUFAuU0laRSIsMTcyOiJBUFAuTUlOSU1JWkUi''@;'; put 'put ''LDE3MzoiQVBQLk1BWElNSVpFIiwxNzQ6IkJSSU5HLlRPLkZST05UIiwxNzU6IlNFTkQuVE8uQkFDSyIsMTg1OiJNQUlOLkNIQVJULlRZUEUiLDE4NjoiT1ZFUkxBWS5DSEFSVC5UWVBFIiwxODc6IlNFTEVDVC5FTkQiLDE4ODoiT1BFTi5NQUlMIiwxODk6IlNFTkQuTUFJTCIsMTkwOiJTVEFO''@;'; put 'put ''REFSRC5GT05UIiwxOTE6IkNPTlNPTElEQVRFIiwxOTI6IlNPUlQuU1BFQ0lBTCIsMTkzOiJHQUxMRVJZLjNELkFSRUEiLDE5NDoiR0FMTEVSWS4zRC5DT0xVTU4iLDE5NToiR0FMTEVSWS4zRC5MSU5FIiwxOTY6IkdBTExFUlkuM0QuUElFIiwxOTc6IlZJRVcuM0QiLDE5ODoiR09BTC5TRUVL''@;'; put 'put ''IiwxOTk6IldPUktHUk9VUCIsMjAwOiJGSUxMLkdST1VQIiwyMDE6IlVQREFURS5MSU5LIiwyMDI6IlBST01PVEUiLDIwMzoiREVNT1RFIiwyMDQ6IlNIT1cuREVUQUlMIiwyMDY6IlVOR1JPVVAiLDIwNzoiT0JKRUNULlBST1BFUlRJRVMiLDIwODoiU0FWRS5ORVcuT0JKRUNUIiwyMDk6IlNI''@;'; put 'put ''QVJFIiwyMTA6IlNIQVJFLk5BTUUiLDIxMToiRFVQTElDQVRFIiwyMTI6IkFQUExZLlNUWUxFIiwyMTM6IkFTU0lHTi5UTy5PQkpFQ1QiLDIxNDoiT0JKRUNULlBST1RFQ1RJT04iLDIxNToiSElERS5PQkpFQ1QiLDIxNjoiU0VULkVYVFJBQ1QiLDIxNzoiQ1JFQVRFLlBVQkxJU0hFUiIsMjE4''@;'; put 'put ''OiJTVUJTQ1JJQkUuVE8iLDIxOToiQVRUUklCVVRFUyIsMjIwOiJTSE9XLlRPT0xCQVIiLDIyMjoiUFJJTlQuUFJFVklFVyIsMjIzOiJFRElULkNPTE9SIiwyMjQ6IlNIT1cuTEVWRUxTIiwyMjU6IkZPUk1BVC5NQUlOIiwyMjY6IkZPUk1BVC5PVkVSTEFZIiwyMjc6Ik9OLlJFQ0FMQyIsMjI4''@;'; put 'put ''OiJFRElULlNFUklFUyIsMjI5OiJERUZJTkUuU1RZTEUiLDI0MDoiTElORS5QUklOVCIsMjQzOiJFTlRFUi5EQVRBIiwyNDk6IkdBTExFUlkuUkFEQVIiLDI1MDoiTUVSR0UuU1RZTEVTIiwyNTE6IkVESVRJT04uT1BUSU9OUyIsMjUyOiJQQVNURS5QSUNUVVJFIiwyNTM6IlBBU1RFLlBJQ1RV''@;'; put 'put ''UkUuTElOSyIsMjU0OiJTUEVMTElORyIsMjU2OiJaT09NIiwyNTk6IklOU0VSVC5PQkpFQ1QiLDI2MDoiV0lORE9XLk1JTklNSVpFIiwyNjU6IlNPVU5ELk5PVEUiLDI2NjoiU09VTkQuUExBWSIsMjY3OiJGT1JNQVQuU0hBUEUiLDI2ODoiRVhURU5ELlBPTFlHT04iLDI2OToiRk9STUFULkFV''@;'; put 'put ''VE8iLDI3MjoiR0FMTEVSWS4zRC5CQVIiLDI3MzoiR0FMTEVSWS4zRC5TVVJGQUNFIiwyNzQ6IkZJTEwuQVVUTyIsMjc2OiJDVVNUT01JWkUuVE9PTEJBUiIsMjc3OiJBREQuVE9PTCIsMjc4OiJFRElULk9CSkVDVCIsMjc5OiJPTi5ET1VCTEVDTElDSyIsMjgwOiJPTi5FTlRSWSIsMjgxOiJX''@;'; put 'put ''T1JLQk9PSy5BREQiLDI4MjoiV09SS0JPT0suTU9WRSIsMjgzOiJXT1JLQk9PSy5DT1BZIiwyODQ6IldPUktCT09LLk9QVElPTlMiLDI4NToiU0FWRS5XT1JLU1BBQ0UiLDI4ODoiQ0hBUlQuV0laQVJEIiwyODk6IkRFTEVURS5UT09MIiwyOTA6Ik1PVkUuVE9PTCIsMjkxOiJXT1JLQk9PSy5T''@;'; put 'put ''RUxFQ1QiLDI5MjoiV09SS0JPT0suQUNUSVZBVEUiLDI5MzoiQVNTSUdOLlRPLlRPT0wiLDI5NToiQ09QWS5UT09MIiwyOTY6IlJFU0VULlRPT0wiLDI5NzoiQ09OU1RSQUlOLk5VTUVSSUMiLDI5ODoiUEFTVEUuVE9PTCIsMzAyOiJXT1JLQk9PSy5ORVciLDMwNToiU0NFTkFSSU8uQ0VMTFMi''@;'; put 'put ''LDMwNjoiU0NFTkFSSU8uREVMRVRFIiwzMDc6IlNDRU5BUklPLkFERCIsMzA4OiJTQ0VOQVJJTy5FRElUIiwzMDk6IlNDRU5BUklPLlNIT1ciLDMxMDoiU0NFTkFSSU8uU0hPVy5ORVhUIiwzMTE6IlNDRU5BUklPLlNVTU1BUlkiLDMxMjoiUElWT1QuVEFCTEUuV0laQVJEIiwzMTM6IlBJVk9U''@;'; put 'put ''LkZJRUxELlBST1BFUlRJRVMiLDMxNDoiUElWT1QuRklFTEQiLDMxNToiUElWT1QuSVRFTSIsMzE2OiJQSVZPVC5BREQuRklFTERTIiwzMTg6Ik9QVElPTlMuQ0FMQ1VMQVRJT04iLDMxOToiT1BUSU9OUy5FRElUIiwzMjA6Ik9QVElPTlMuVklFVyIsMzIxOiJBRERJTi5NQU5BR0VSIiwzMjI6''@;'; put 'put ''Ik1FTlUuRURJVE9SIiwzMjM6IkFUVEFDSC5UT09MQkFSUyIsMzI0OiJWQkFBY3RpdmF0ZSIsMzI1OiJPUFRJT05TLkNIQVJUIiwzMjg6IlZCQS5JTlNFUlQuRklMRSIsMzMwOiJWQkEuUFJPQ0VEVVJFLkRFRklOSVRJT04iLDMzNjoiUk9VVElORy5TTElQIiwzMzg6IlJPVVRFLkRPQ1VNRU5U''@;'; put 'put ''IiwzMzk6Ik1BSUwuTE9HT04iLDM0MjoiSU5TRVJULlBJQ1RVUkUiLDM0MzoiRURJVC5UT09MIiwzNDQ6IkdBTExFUlkuRE9VR0hOVVQiLDM1MDoiQ0hBUlQuVFJFTkQiLDM1MjoiUElWT1QuSVRFTS5QUk9QRVJUSUVTIiwzNTQ6IldPUktCT09LLklOU0VSVCIsMzU1OiJPUFRJT05TLlRSQU5T''@;'; put 'put ''SVRJT04iLDM1NjoiT1BUSU9OUy5HRU5FUkFMIiwzNzA6IkZJTFRFUi5BRFZBTkNFRCIsMzczOiJNQUlMLkFERC5NQUlMRVIiLDM3NDoiTUFJTC5ERUxFVEUuTUFJTEVSIiwzNzU6Ik1BSUwuUkVQTFkiLDM3NjoiTUFJTC5SRVBMWS5BTEwiLDM3NzoiTUFJTC5GT1JXQVJEIiwzNzg6Ik1BSUwu''@;'; put 'put ''TkVYVC5MRVRURVIiLDM3OToiREFUQS5MQUJFTCIsMzgwOiJJTlNFUlQuVElUTEUiLDM4MToiRk9OVC5QUk9QRVJUSUVTIiwzODI6Ik1BQ1JPLk9QVElPTlMiLDM4MzoiV09SS0JPT0suSElERSIsMzg0OiJXT1JLQk9PSy5VTkhJREUiLDM4NToiV09SS0JPT0suREVMRVRFIiwzODY6IldPUktC''@;'; put 'put ''T09LLk5BTUUiLDM4ODoiR0FMTEVSWS5DVVNUT00iLDM5MDoiQURELkNIQVJULkFVVE9GT1JNQVQiLDM5MToiREVMRVRFLkNIQVJULkFVVE9GT1JNQVQiLDM5MjoiQ0hBUlQuQURELkRBVEEiLDM5MzoiQVVUTy5PVVRMSU5FIiwzOTQ6IlRBQi5PUkRFUiIsMzk1OiJTSE9XLkRJQUxPRyIsMzk2''@;'; put 'put ''OiJTRUxFQ1QuQUxMIiwzOTc6IlVOR1JPVVAuU0hFRVRTIiwzOTg6IlNVQlRPVEFMLkNSRUFURSIsMzk5OiJTVUJUT1RBTC5SRU1PVkUiLDQwMDoiUkVOQU1FLk9CSkVDVCIsNDEyOiJXT1JLQk9PSy5TQ1JPTEwiLDQxMzoiV09SS0JPT0suTkVYVCIsNDE0OiJXT1JLQk9PSy5QUkVWIiw0MTU6''@;'; put 'put ''IldPUktCT09LLlRBQi5TUExJVCIsNDE2OiJGVUxMLlNDUkVFTiIsNDE3OiJXT1JLQk9PSy5QUk9URUNUIiw0MjA6IlNDUk9MTEJBUi5QUk9QRVJUSUVTIiw0MjE6IlBJVk9ULlNIT1cuUEFHRVMiLDQyMjoiVEVYVC5UTy5DT0xVTU5TIiw0MjM6IkZPUk1BVC5DSEFSVFRZUEUiLDQyNDoiTElO''@;'; put 'put ''Sy5GT1JNQVQiLDQyNToiVFJBQ0VSLkRJU1BMQVkiLDQzMDoiVFJBQ0VSLk5BVklHQVRFIiw0MzE6IlRSQUNFUi5DTEVBUiIsNDMyOiJUUkFDRVIuRVJST1IiLDQzMzoiUElWT1QuRklFTEQuR1JPVVAiLDQzNDoiUElWT1QuRklFTEQuVU5HUk9VUCIsNDM1OiJDSEVDS0JPWC5QUk9QRVJUSUVT''@;'; put 'put ''Iiw0MzY6IkxBQkVMLlBST1BFUlRJRVMiLDQzNzoiTElTVEJPWC5QUk9QRVJUSUVTIiw0Mzg6IkVESVRCT1guUFJPUEVSVElFUyIsNDM5OiJQSVZPVC5SRUZSRVNIIiw0NDA6IkxJTksuQ09NQk8iLDQ0MToiT1BFTi5URVhUIiw0NDI6IkhJREUuRElBTE9HIiw0NDM6IlNFVC5ESUFMT0cuRk9D''@;'; put 'put ''VVMiLDQ0NDoiRU5BQkxFLk9CSkVDVCIsNDQ1OiJQVVNIQlVUVE9OLlBST1BFUlRJRVMiLDQ0NjoiU0VULkRJQUxPRy5ERUZBVUxUIiw0NDc6IkZJTFRFUiIsNDQ4OiJGSUxURVIuU0hPVy5BTEwiLDQ0OToiQ0xFQVIuT1VUTElORSIsNDUwOiJGVU5DVElPTi5XSVpBUkQiLDQ1MToiQURELkxJ''@;'; put 'put ''U1QuSVRFTSIsNDUyOiJTRVQuTElTVC5JVEVNIiw0NTM6IlJFTU9WRS5MSVNULklURU0iLDQ1NDoiU0VMRUNULkxJU1QuSVRFTSIsNDU1OiJTRVQuQ09OVFJPTC5WQUxVRSIsNDU2OiJTQVZFLkNPUFkuQVMiLDQ1ODoiT1BUSU9OUy5MSVNUUy5BREQiLDQ1OToiT1BUSU9OUy5MSVNUUy5ERUxF''@;'; put 'put ''VEUiLDQ2MDoiU0VSSUVTLkFYRVMiLDQ2MToiU0VSSUVTLlgiLDQ2MjoiU0VSSUVTLlkiLDQ2MzoiRVJST1JCQVIuWCIsNDY0OiJFUlJPUkJBUi5ZIiw0NjU6IkZPUk1BVC5DSEFSVCIsNDY2OiJTRVJJRVMuT1JERVIiLDQ2NzoiTUFJTC5MT0dPRkYiLDQ2ODoiQ0xFQVIuUk9VVElORy5TTElQ''@;'; put 'put ''Iiw0Njk6IkFQUC5BQ1RJVkFURS5NSUNST1NPRlQiLDQ3MDoiTUFJTC5FRElULk1BSUxFUiIsNDcxOiJPTi5TSEVFVCIsNDcyOiJTVEFOREFSRC5XSURUSCIsNDczOiJTQ0VOQVJJTy5NRVJHRSIsNDc0OiJTVU1NQVJZLklORk8iLDQ3NToiRklORC5GSUxFIiw0NzY6IkFDVElWRS5DRUxMLkZP''@;'; put 'put ''TlQiLDQ3NzoiRU5BQkxFLlRJUFdJWkFSRCIsNDc4OiJWQkEuTUFLRS5BRERJTiIsNDgwOiJJTlNFUlREQVRBVEFCTEUiLDQ4MToiV09SS0dST1VQLk9QVElPTlMiLDQ4MjoiTUFJTC5TRU5ELk1BSUxFUiIsNDg1OiJBVVRPQ09SUkVDVCIsNDg5OiJQT1NULkRPQ1VNRU5UIiw0OTE6IlBJQ0tM''@;'; put 'put ''SVNUIiw0OTM6IlZJRVcuU0hPVyIsNDk0OiJWSUVXLkRFRklORSIsNDk1OiJWSUVXLkRFTEVURSIsNTA5OiJTSEVFVC5CQUNLR1JPVU5EIiw1MTA6IklOU0VSVC5NQVAuT0JKRUNUIiw1MTE6Ik9QVElPTlMuTUVOT05PIiw1MTc6Ik1TT0NIRUNLUyIsNTE4OiJOT1JNQUwiLDUxOToiTEFZT1VU''@;'; put 'put ''Iiw1MjA6IlJNLlBSSU5ULkFSRUEiLDUyMToiQ0xFQVIuUFJJTlQuQVJFQSIsNTIyOiJBREQuUFJJTlQuQVJFQSIsNTIzOiJNT1ZFLkJSSyIsNTQ1OiJISURFQ1VSUi5OT1RFIiw1NDY6IkhJREVBTEwuTk9URVMiLDU0NzoiREVMRVRFLk5PVEUiLDU0ODoiVFJBVkVSU0UuTk9URVMiLDU0OToi''@;'; put 'put ''QUNUSVZBVEUuTk9URVMiLDYyMDoiUFJPVEVDVC5SRVZJU0lPTlMiLDYyMToiVU5QUk9URUNULlJFVklTSU9OUyIsNjQ3OiJPUFRJT05TLk1FIiw2NTM6IldFQi5QVUJMSVNIIiw2Njc6Ik5FV1dFQlFVRVJZIiw2NzM6IlBJVk9ULlRBQkxFLkNIQVJUIiw3NTM6Ik9QVElPTlMuU0FWRSIsNzU1''@;'; put 'put ''OiJPUFRJT05TLlNQRUxMIiw4MDg6IkhJREVBTEwuSU5LQU5OT1RTIn0sYzU9ezA6IkNPVU5UIiwxOiJJRiIsMjoiSVNOQSIsMzoiSVNFUlJPUiIsNDoiU1VNIiw1OiJBVkVSQUdFIiw2OiJNSU4iLDc6Ik1BWCIsODoiUk9XIiw5OiJDT0xVTU4iLDEwOiJOQSIsMTE6Ik5QViIsMTI6IlNUREVW''@;'; put 'put ''IiwxMzoiRE9MTEFSIiwxNDoiRklYRUQiLDE1OiJTSU4iLDE2OiJDT1MiLDE3OiJUQU4iLDE4OiJBVEFOIiwxOToiUEkiLDIwOiJTUVJUIiwyMToiRVhQIiwyMjoiTE4iLDIzOiJMT0cxMCIsMjQ6IkFCUyIsMjU6IklOVCIsMjY6IlNJR04iLDI3OiJST1VORCIsMjg6IkxPT0tVUCIsMjk6IklO''@;'; put 'put ''REVYIiwzMDoiUkVQVCIsMzE6Ik1JRCIsMzI6IkxFTiIsMzM6IlZBTFVFIiwzNDoiVFJVRSIsMzU6IkZBTFNFIiwzNjoiQU5EIiwzNzoiT1IiLDM4OiJOT1QiLDM5OiJNT0QiLDQwOiJEQ09VTlQiLDQxOiJEU1VNIiw0MjoiREFWRVJBR0UiLDQzOiJETUlOIiw0NDoiRE1BWCIsNDU6IkRTVERF''@;'; put 'put ''ViIsNDY6IlZBUiIsNDc6IkRWQVIiLDQ4OiJURVhUIiw0OToiTElORVNUIiw1MDoiVFJFTkQiLDUxOiJMT0dFU1QiLDUyOiJHUk9XVEgiLDUzOiJHT1RPIiw1NDoiSEFMVCIsNTU6IlJFVFVSTiIsNTY6IlBWIiw1NzoiRlYiLDU4OiJOUEVSIiw1OToiUE1UIiw2MDoiUkFURSIsNjE6Ik1JUlIi''@;'; put 'put ''LDYyOiJJUlIiLDYzOiJSQU5EIiw2NDoiTUFUQ0giLDY1OiJEQVRFIiw2NjoiVElNRSIsNjc6IkRBWSIsNjg6Ik1PTlRIIiw2OToiWUVBUiIsNzA6IldFRUtEQVkiLDcxOiJIT1VSIiw3MjoiTUlOVVRFIiw3MzoiU0VDT05EIiw3NDoiTk9XIiw3NToiQVJFQVMiLDc2OiJST1dTIiw3NzoiQ09M''@;'; put 'put ''VU1OUyIsNzg6Ik9GRlNFVCIsNzk6IkFCU1JFRiIsODA6IlJFTFJFRiIsODE6IkFSR1VNRU5UIiw4MjoiU0VBUkNIIiw4MzoiVFJBTlNQT1NFIiw4NDoiRVJST1IiLDg1OiJTVEVQIiw4NjoiVFlQRSIsODc6IkVDSE8iLDg4OiJTRVQuTkFNRSIsODk6IkNBTExFUiIsOTA6IkRFUkVGIiw5MToi''@;'; put 'put ''V0lORE9XUyIsOTI6IlNFUklFUyIsOTM6IkRPQ1VNRU5UUyIsOTQ6IkFDVElWRS5DRUxMIiw5NToiU0VMRUNUSU9OIiw5NjoiUkVTVUxUIiw5NzoiQVRBTjIiLDk4OiJBU0lOIiw5OToiQUNPUyIsMTAwOiJDSE9PU0UiLDEwMToiSExPT0tVUCIsMTAyOiJWTE9PS1VQIiwxMDM6IkxJTktTIiwx''@;'; put 'put ''MDQ6IklOUFVUIiwxMDU6IklTUkVGIiwxMDY6IkdFVC5GT1JNVUxBIiwxMDc6IkdFVC5OQU1FIiwxMDg6IlNFVC5WQUxVRSIsMTA5OiJMT0ciLDExMDoiRVhFQyIsMTExOiJDSEFSIiwxMTI6IkxPV0VSIiwxMTM6IlVQUEVSIiwxMTQ6IlBST1BFUiIsMTE1OiJMRUZUIiwxMTY6IlJJR0hUIiwx''@;'; put 'put ''MTc6IkVYQUNUIiwxMTg6IlRSSU0iLDExOToiUkVQTEFDRSIsMTIwOiJTVUJTVElUVVRFIiwxMjE6IkNPREUiLDEyMjoiTkFNRVMiLDEyMzoiRElSRUNUT1JZIiwxMjQ6IkZJTkQiLDEyNToiQ0VMTCIsMTI2OiJJU0VSUiIsMTI3OiJJU1RFWFQiLDEyODoiSVNOVU1CRVIiLDEyOToiSVNCTEFO''@;'; put 'put ''SyIsMTMwOiJUIiwxMzE6Ik4iLDEzMjoiRk9QRU4iLDEzMzoiRkNMT1NFIiwxMzQ6IkZTSVpFIiwxMzU6IkZSRUFETE4iLDEzNjoiRlJFQUQiLDEzNzoiRldSSVRFTE4iLDEzODoiRldSSVRFIiwxMzk6IkZQT1MiLDE0MDoiREFURVZBTFVFIiwxNDE6IlRJTUVWQUxVRSIsMTQyOiJTTE4iLDE0''@;'; put 'put ''MzoiU1lEIiwxNDQ6IkREQiIsMTQ1OiJHRVQuREVGIiwxNDY6IlJFRlRFWFQiLDE0NzoiVEVYVFJFRiIsMTQ4OiJJTkRJUkVDVCIsMTQ5OiJSRUdJU1RFUiIsMTUwOiJDQUxMIiwxNTE6IkFERC5CQVIiLDE1MjoiQURELk1FTlUiLDE1MzoiQURELkNPTU1BTkQiLDE1NDoiRU5BQkxFLkNPTU1B''@;'; put 'put ''TkQiLDE1NToiQ0hFQ0suQ09NTUFORCIsMTU2OiJSRU5BTUUuQ09NTUFORCIsMTU3OiJTSE9XLkJBUiIsMTU4OiJERUxFVEUuTUVOVSIsMTU5OiJERUxFVEUuQ09NTUFORCIsMTYwOiJHRVQuQ0hBUlQuSVRFTSIsMTYxOiJESUFMT0cuQk9YIiwxNjI6IkNMRUFOIiwxNjM6Ik1ERVRFUk0iLDE2''@;'; put 'put ''NDoiTUlOVkVSU0UiLDE2NToiTU1VTFQiLDE2NjoiRklMRVMiLDE2NzoiSVBNVCIsMTY4OiJQUE1UIiwxNjk6IkNPVU5UQSIsMTcwOiJDQU5DRUwuS0VZIiwxNzE6IkZPUiIsMTcyOiJXSElMRSIsMTczOiJCUkVBSyIsMTc0OiJORVhUIiwxNzU6IklOSVRJQVRFIiwxNzY6IlJFUVVFU1QiLDE3''@;'; put 'put ''NzoiUE9LRSIsMTc4OiJFWEVDVVRFIiwxNzk6IlRFUk1JTkFURSIsMTgwOiJSRVNUQVJUIiwxODE6IkhFTFAiLDE4MjoiR0VULkJBUiIsMTgzOiJQUk9EVUNUIiwxODQ6IkZBQ1QiLDE4NToiR0VULkNFTEwiLDE4NjoiR0VULldPUktTUEFDRSIsMTg3OiJHRVQuV0lORE9XIiwxODg6IkdFVC5E''@;'; put 'put ''T0NVTUVOVCIsMTg5OiJEUFJPRFVDVCIsMTkwOiJJU05PTlRFWFQiLDE5MToiR0VULk5PVEUiLDE5MjoiTk9URSIsMTkzOiJTVERFVlAiLDE5NDoiVkFSUCIsMTk1OiJEU1RERVZQIiwxOTY6IkRWQVJQIiwxOTc6IlRSVU5DIiwxOTg6IklTTE9HSUNBTCIsMTk5OiJEQ09VTlRBIiwyMDA6IkRF''@;'; put 'put ''TEVURS5CQVIiLDIwMToiVU5SRUdJU1RFUiIsMjA0OiJVU0RPTExBUiIsMjA1OiJGSU5EQiIsMjA2OiJTRUFSQ0hCIiwyMDc6IlJFUExBQ0VCIiwyMDg6IkxFRlRCIiwyMDk6IlJJR0hUQiIsMjEwOiJNSURCIiwyMTE6IkxFTkIiLDIxMjoiUk9VTkRVUCIsMjEzOiJST1VORERPV04iLDIxNDoi''@;'; put 'put ''QVNDIiwyMTU6IkRCQ1MiLDIxNjoiUkFOSyIsMjE5OiJBRERSRVNTIiwyMjA6IkRBWVMzNjAiLDIyMToiVE9EQVkiLDIyMjoiVkRCIiwyMjM6IkVMU0UiLDIyNDoiRUxTRS5JRiIsMjI1OiJFTkQuSUYiLDIyNjoiRk9SLkNFTEwiLDIyNzoiTUVESUFOIiwyMjg6IlNVTVBST0RVQ1QiLDIyOToi''@;'; put 'put ''U0lOSCIsMjMwOiJDT1NIIiwyMzE6IlRBTkgiLDIzMjoiQVNJTkgiLDIzMzoiQUNPU0giLDIzNDoiQVRBTkgiLDIzNToiREdFVCIsMjM2OiJDUkVBVEUuT0JKRUNUIiwyMzc6IlZPTEFUSUxFIiwyMzg6IkxBU1QuRVJST1IiLDIzOToiQ1VTVE9NLlVORE8iLDI0MDoiQ1VTVE9NLlJFUEVBVCIs''@;'; put 'put ''MjQxOiJGT1JNVUxBLkNPTlZFUlQiLDI0MjoiR0VULkxJTksuSU5GTyIsMjQzOiJURVhULkJPWCIsMjQ0OiJJTkZPIiwyNDU6IkdST1VQIiwyNDY6IkdFVC5PQkpFQ1QiLDI0NzoiREIiLDI0ODoiUEFVU0UiLDI1MToiUkVTVU1FIiwyNTI6IkZSRVFVRU5DWSIsMjUzOiJBREQuVE9PTEJBUiIs''@;'; put 'put ''MjU0OiJERUxFVEUuVE9PTEJBUiIsMjU1OiJVc2VyIiwyNTY6IlJFU0VULlRPT0xCQVIiLDI1NzoiRVZBTFVBVEUiLDI1ODoiR0VULlRPT0xCQVIiLDI1OToiR0VULlRPT0wiLDI2MDoiU1BFTExJTkcuQ0hFQ0siLDI2MToiRVJST1IuVFlQRSIsMjYyOiJBUFAuVElUTEUiLDI2MzoiV0lORE9X''@;'; put 'put ''LlRJVExFIiwyNjQ6IlNBVkUuVE9PTEJBUiIsMjY1OiJFTkFCTEUuVE9PTCIsMjY2OiJQUkVTUy5UT09MIiwyNjc6IlJFR0lTVEVSLklEIiwyNjg6IkdFVC5XT1JLQk9PSyIsMjY5OiJBVkVERVYiLDI3MDoiQkVUQURJU1QiLDI3MToiR0FNTUFMTiIsMjcyOiJCRVRBSU5WIiwyNzM6IkJJTk9N''@;'; put 'put ''RElTVCIsMjc0OiJDSElESVNUIiwyNzU6IkNISUlOViIsMjc2OiJDT01CSU4iLDI3NzoiQ09ORklERU5DRSIsMjc4OiJDUklUQklOT00iLDI3OToiRVZFTiIsMjgwOiJFWFBPTkRJU1QiLDI4MToiRkRJU1QiLDI4MjoiRklOViIsMjgzOiJGSVNIRVIiLDI4NDoiRklTSEVSSU5WIiwyODU6IkZM''@;'; put 'put ''T09SIiwyODY6IkdBTU1BRElTVCIsMjg3OiJHQU1NQUlOViIsMjg4OiJDRUlMSU5HIiwyODk6IkhZUEdFT01ESVNUIiwyOTA6IkxPR05PUk1ESVNUIiwyOTE6IkxPR0lOViIsMjkyOiJORUdCSU5PTURJU1QiLDI5MzoiTk9STURJU1QiLDI5NDoiTk9STVNESVNUIiwyOTU6Ik5PUk1JTlYiLDI5''@;'; put 'put ''NjoiTk9STVNJTlYiLDI5NzoiU1RBTkRBUkRJWkUiLDI5ODoiT0REIiwyOTk6IlBFUk1VVCIsMzAwOiJQT0lTU09OIiwzMDE6IlRESVNUIiwzMDI6IldFSUJVTEwiLDMwMzoiU1VNWE1ZMiIsMzA0OiJTVU1YMk1ZMiIsMzA1OiJTVU1YMlBZMiIsMzA2OiJDSElURVNUIiwzMDc6IkNPUlJFTCIs''@;'; put 'put ''MzA4OiJDT1ZBUiIsMzA5OiJGT1JFQ0FTVCIsMzEwOiJGVEVTVCIsMzExOiJJTlRFUkNFUFQiLDMxMjoiUEVBUlNPTiIsMzEzOiJSU1EiLDMxNDoiU1RFWVgiLDMxNToiU0xPUEUiLDMxNjoiVFRFU1QiLDMxNzoiUFJPQiIsMzE4OiJERVZTUSIsMzE5OiJHRU9NRUFOIiwzMjA6IkhBUk1FQU4i''@;'; put 'put ''LDMyMToiU1VNU1EiLDMyMjoiS1VSVCIsMzIzOiJTS0VXIiwzMjQ6IlpURVNUIiwzMjU6IkxBUkdFIiwzMjY6IlNNQUxMIiwzMjc6IlFVQVJUSUxFIiwzMjg6IlBFUkNFTlRJTEUiLDMyOToiUEVSQ0VOVFJBTksiLDMzMDoiTU9ERSIsMzMxOiJUUklNTUVBTiIsMzMyOiJUSU5WIiwzMzQ6Ik1P''@;'; put 'put ''VklFLkNPTU1BTkQiLDMzNToiR0VULk1PVklFIiwzMzY6IkNPTkNBVEVOQVRFIiwzMzc6IlBPV0VSIiwzMzg6IlBJVk9ULkFERC5EQVRBIiwzMzk6IkdFVC5QSVZPVC5UQUJMRSIsMzQwOiJHRVQuUElWT1QuRklFTEQiLDM0MToiR0VULlBJVk9ULklURU0iLDM0MjoiUkFESUFOUyIsMzQzOiJE''@;'; put 'put ''RUdSRUVTIiwzNDQ6IlNVQlRPVEFMIiwzNDU6IlNVTUlGIiwzNDY6IkNPVU5USUYiLDM0NzoiQ09VTlRCTEFOSyIsMzQ4OiJTQ0VOQVJJTy5HRVQiLDM0OToiT1BUSU9OUy5MSVNUUy5HRVQiLDM1MDoiSVNQTVQiLDM1MToiREFURURJRiIsMzUyOiJEQVRFU1RSSU5HIiwzNTM6Ik5VTUJFUlNU''@;'; put 'put ''UklORyIsMzU0OiJST01BTiIsMzU1OiJPUEVOLkRJQUxPRyIsMzU2OiJTQVZFLkRJQUxPRyIsMzU3OiJWSUVXLkdFVCIsMzU4OiJHRVRQSVZPVERBVEEiLDM1OToiSFlQRVJMSU5LIiwzNjA6IlBIT05FVElDIiwzNjE6IkFWRVJBR0VBIiwzNjI6Ik1BWEEiLDM2MzoiTUlOQSIsMzY0OiJTVERF''@;'; put 'put ''VlBBIiwzNjU6IlZBUlBBIiwzNjY6IlNUREVWQSIsMzY3OiJWQVJBIiwzNjg6IkJBSFRURVhUIiwzNjk6IlRIQUlEQVlPRldFRUsiLDM3MDoiVEhBSURJR0lUIiwzNzE6IlRIQUlNT05USE9GWUVBUiIsMzcyOiJUSEFJTlVNU09VTkQiLDM3MzoiVEhBSU5VTVNUUklORyIsMzc0OiJUSEFJU1RS''@;'; put 'put ''SU5HTEVOR1RIIiwzNzU6IklTVEhBSURJR0lUIiwzNzY6IlJPVU5EQkFIVERPV04iLDM3NzoiUk9VTkRCQUhUVVAiLDM3ODoiVEhBSVlFQVIiLDM3OToiUlREIiwzODA6IkNVQkVWQUxVRSIsMzgxOiJDVUJFTUVNQkVSIiwzODI6IkNVQkVNRU1CRVJQUk9QRVJUWSIsMzgzOiJDVUJFUkFOS0VE''@;'; put 'put ''TUVNQkVSIiwzODQ6IkhFWDJCSU4iLDM4NToiSEVYMkRFQyIsMzg2OiJIRVgyT0NUIiwzODc6IkRFQzJCSU4iLDM4ODoiREVDMkhFWCIsMzg5OiJERUMyT0NUIiwzOTA6Ik9DVDJCSU4iLDM5MToiT0NUMkhFWCIsMzkyOiJPQ1QyREVDIiwzOTM6IkJJTjJERUMiLDM5NDoiQklOMk9DVCIsMzk1''@;'; put 'put ''OiJCSU4ySEVYIiwzOTY6IklNU1VCIiwzOTc6IklNRElWIiwzOTg6IklNUE9XRVIiLDM5OToiSU1BQlMiLDQwMDoiSU1TUVJUIiw0MDE6IklNTE4iLDQwMjoiSU1MT0cyIiw0MDM6IklNTE9HMTAiLDQwNDoiSU1TSU4iLDQwNToiSU1DT1MiLDQwNjoiSU1FWFAiLDQwNzoiSU1BUkdVTUVOVCIs''@;'; put 'put ''NDA4OiJJTUNPTkpVR0FURSIsNDA5OiJJTUFHSU5BUlkiLDQxMDoiSU1SRUFMIiw0MTE6IkNPTVBMRVgiLDQxMjoiSU1TVU0iLDQxMzoiSU1QUk9EVUNUIiw0MTQ6IlNFUklFU1NVTSIsNDE1OiJGQUNURE9VQkxFIiw0MTY6IlNRUlRQSSIsNDE3OiJRVU9USUVOVCIsNDE4OiJERUxUQSIsNDE5''@;'; put 'put ''OiJHRVNURVAiLDQyMDoiSVNFVkVOIiw0MjE6IklTT0REIiw0MjI6Ik1ST1VORCIsNDIzOiJFUkYiLDQyNDoiRVJGQyIsNDI1OiJCRVNTRUxKIiw0MjY6IkJFU1NFTEsiLDQyNzoiQkVTU0VMWSIsNDI4OiJCRVNTRUxJIiw0Mjk6IlhJUlIiLDQzMDoiWE5QViIsNDMxOiJQUklDRU1BVCIsNDMy''@;'; put 'put ''OiJZSUVMRE1BVCIsNDMzOiJJTlRSQVRFIiw0MzQ6IlJFQ0VJVkVEIiw0MzU6IkRJU0MiLDQzNjoiUFJJQ0VESVNDIiw0Mzc6IllJRUxERElTQyIsNDM4OiJUQklMTEVRIiw0Mzk6IlRCSUxMUFJJQ0UiLDQ0MDoiVEJJTExZSUVMRCIsNDQxOiJQUklDRSIsNDQyOiJZSUVMRCIsNDQzOiJET0xM''@;'; put 'put ''QVJERSIsNDQ0OiJET0xMQVJGUiIsNDQ1OiJOT01JTkFMIiw0NDY6IkVGRkVDVCIsNDQ3OiJDVU1QUklOQyIsNDQ4OiJDVU1JUE1UIiw0NDk6IkVEQVRFIiw0NTA6IkVPTU9OVEgiLDQ1MToiWUVBUkZSQUMiLDQ1MjoiQ09VUERBWUJTIiw0NTM6IkNPVVBEQVlTIiw0NTQ6IkNPVVBEQVlTTkMi''@;'; put 'put ''LDQ1NToiQ09VUE5DRCIsNDU2OiJDT1VQTlVNIiw0NTc6IkNPVVBQQ0QiLDQ1ODoiRFVSQVRJT04iLDQ1OToiTURVUkFUSU9OIiw0NjA6Ik9ERExQUklDRSIsNDYxOiJPRERMWUlFTEQiLDQ2MjoiT0RERlBSSUNFIiw0NjM6Ik9EREZZSUVMRCIsNDY0OiJSQU5EQkVUV0VFTiIsNDY1OiJXRUVL''@;'; put 'put ''TlVNIiw0NjY6IkFNT1JERUdSQyIsNDY3OiJBTU9STElOQyIsNDY4OiJDT05WRVJUIiw3MjQ6IlNIRUVUSlMiLDQ2OToiQUNDUklOVCIsNDcwOiJBQ0NSSU5UTSIsNDcxOiJXT1JLREFZIiw0NzI6Ik5FVFdPUktEQVlTIiw0NzM6IkdDRCIsNDc0OiJNVUxUSU5PTUlBTCIsNDc1OiJMQ00iLDQ3''@;'; put 'put ''NjoiRlZTQ0hFRFVMRSIsNDc3OiJDVUJFS1BJTUVNQkVSIiw0Nzg6IkNVQkVTRVQiLDQ3OToiQ1VCRVNFVENPVU5UIiw0ODA6IklGRVJST1IiLDQ4MToiQ09VTlRJRlMiLDQ4MjoiU1VNSUZTIiw0ODM6IkFWRVJBR0VJRiIsNDg0OiJBVkVSQUdFSUZTIn0sY189ezI6MSwzOjEsMTA6MCwxNTox''@;'; put 'put ''LDE2OjEsMTc6MSwxODoxLDE5OjAsMjA6MSwyMToxLDIyOjEsMjM6MSwyNDoxLDI1OjEsMjY6MSwyNzoyLDMwOjIsMzE6MywzMjoxLDMzOjEsMzQ6MCwzNTowLDM4OjEsMzk6Miw0MDozLDQxOjMsNDI6Myw0MzozLDQ0OjMsNDU6Myw0NzozLDQ4OjIsNTM6MSw2MTozLDYzOjAsNjU6Myw2Njoz''@;'; put 'put ''LDY3OjEsNjg6MSw2OToxLDcwOjEsNzE6MSw3MjoxLDczOjEsNzQ6MCw3NToxLDc2OjEsNzc6MSw3OToyLDgwOjIsODM6MSw4NTowLDg2OjEsODk6MCw5MDoxLDk0OjAsOTU6MCw5NzoyLDk4OjEsOTk6MSwxMDE6MywxMDI6MywxMDU6MSwxMDY6MSwxMDg6MiwxMTE6MSwxMTI6MSwxMTM6MSwx''@;'; put 'put ''MTQ6MSwxMTc6MiwxMTg6MSwxMTk6NCwxMjE6MSwxMjY6MSwxMjc6MSwxMjg6MSwxMjk6MSwxMzA6MSwxMzE6MSwxMzM6MSwxMzQ6MSwxMzU6MSwxMzY6MiwxMzc6MiwxMzg6MiwxNDA6MSwxNDE6MSwxNDI6MywxNDM6NCwxNDQ6NCwxNjE6MSwxNjI6MSwxNjM6MSwxNjQ6MSwxNjU6MiwxNzI6''@;'; put 'put ''MSwxNzU6MiwxNzY6MiwxNzc6MywxNzg6MiwxNzk6MSwxODQ6MSwxODY6MSwxODk6MywxOTA6MSwxOTU6MywxOTY6MywxOTc6MSwxOTg6MSwxOTk6MywyMDE6MSwyMDc6NCwyMTA6MywyMTE6MSwyMTI6MiwyMTM6MiwyMTQ6MSwyMTU6MSwyMjU6MCwyMjk6MSwyMzA6MSwyMzE6MSwyMzI6MSwy''@;'; put 'put ''MzM6MSwyMzQ6MSwyMzU6MywyNDQ6MSwyNDc6NCwyNTI6MiwyNTc6MSwyNjE6MSwyNzE6MSwyNzM6NCwyNzQ6MiwyNzU6MiwyNzY6MiwyNzc6MywyNzg6MywyNzk6MSwyODA6MywyODE6MywyODI6MywyODM6MSwyODQ6MSwyODU6MiwyODY6NCwyODc6MywyODg6MiwyODk6NCwyOTA6MywyOTE6''@;'; put 'put ''MywyOTI6MywyOTM6NCwyOTQ6MSwyOTU6MywyOTY6MSwyOTc6MywyOTg6MSwyOTk6MiwzMDA6MywzMDE6MywzMDI6NCwzMDM6MiwzMDQ6MiwzMDU6MiwzMDY6MiwzMDc6MiwzMDg6MiwzMDk6MywzMTA6MiwzMTE6MiwzMTI6MiwzMTM6MiwzMTQ6MiwzMTU6MiwzMTY6NCwzMjU6MiwzMjY6Miwz''@;'; put 'put ''Mjc6MiwzMjg6MiwzMzE6MiwzMzI6MiwzMzc6MiwzNDI6MSwzNDM6MSwzNDY6MiwzNDc6MSwzNTA6NCwzNTE6MywzNTI6MSwzNTM6MiwzNjA6MSwzNjg6MSwzNjk6MSwzNzA6MSwzNzE6MSwzNzI6MSwzNzM6MSwzNzQ6MSwzNzU6MSwzNzY6MSwzNzc6MSwzNzg6MSwzODI6MywzODU6MSwzOTI6''@;'; put 'put ''MSwzOTM6MSwzOTY6MiwzOTc6MiwzOTg6MiwzOTk6MSw0MDA6MSw0MDE6MSw0MDI6MSw0MDM6MSw0MDQ6MSw0MDU6MSw0MDY6MSw0MDc6MSw0MDg6MSw0MDk6MSw0MTA6MSw0MTQ6NCw0MTU6MSw0MTY6MSw0MTc6Miw0MjA6MSw0MjE6MSw0MjI6Miw0MjQ6MSw0MjU6Miw0MjY6Miw0Mjc6Miw0''@;'; put 'put ''Mjg6Miw0MzA6Myw0Mzg6Myw0Mzk6Myw0NDA6Myw0NDM6Miw0NDQ6Miw0NDU6Miw0NDY6Miw0NDc6Niw0NDg6Niw0NDk6Miw0NTA6Miw0NjQ6Miw0Njg6Myw0NzY6Miw0Nzk6MSw0ODA6Miw2NTUzNTowfSxheD17Il94bGZuLkFDT1QiOiJBQ09UIiwiX3hsZm4uQUNPVEgiOiJBQ09USCIsIl94''@;'; put 'put ''bGZuLkFHR1JFR0FURSI6IkFHR1JFR0FURSIsIl94bGZuLkFSQUJJQyI6IkFSQUJJQyIsIl94bGZuLkFWRVJBR0VJRiI6IkFWRVJBR0VJRiIsIl94bGZuLkFWRVJBR0VJRlMiOiJBVkVSQUdFSUZTIiwiX3hsZm4uQkFTRSI6IkJBU0UiLCJfeGxmbi5CRVRBLkRJU1QiOiJCRVRBLkRJU1QiLCJf''@;'; put 'put ''eGxmbi5CRVRBLklOViI6IkJFVEEuSU5WIiwiX3hsZm4uQklOT00uRElTVCI6IkJJTk9NLkRJU1QiLCJfeGxmbi5CSU5PTS5ESVNULlJBTkdFIjoiQklOT00uRElTVC5SQU5HRSIsIl94bGZuLkJJTk9NLklOViI6IkJJTk9NLklOViIsIl94bGZuLkJJVEFORCI6IkJJVEFORCIsIl94bGZuLkJJ''@;'; put 'put ''VExTSElGVCI6IkJJVExTSElGVCIsIl94bGZuLkJJVE9SIjoiQklUT1IiLCJfeGxmbi5CSVRSU0hJRlQiOiJCSVRSU0hJRlQiLCJfeGxmbi5CSVRYT1IiOiJCSVRYT1IiLCJfeGxmbi5DRUlMSU5HLk1BVEgiOiJDRUlMSU5HLk1BVEgiLCJfeGxmbi5DRUlMSU5HLlBSRUNJU0UiOiJDRUlMSU5H''@;'; put 'put ''LlBSRUNJU0UiLCJfeGxmbi5DSElTUS5ESVNUIjoiQ0hJU1EuRElTVCIsIl94bGZuLkNISVNRLkRJU1QuUlQiOiJDSElTUS5ESVNULlJUIiwiX3hsZm4uQ0hJU1EuSU5WIjoiQ0hJU1EuSU5WIiwiX3hsZm4uQ0hJU1EuSU5WLlJUIjoiQ0hJU1EuSU5WLlJUIiwiX3hsZm4uQ0hJU1EuVEVTVCI6''@;'; put 'put ''IkNISVNRLlRFU1QiLCJfeGxmbi5DT01CSU5BIjoiQ09NQklOQSIsIl94bGZuLkNPTkNBVCI6IkNPTkNBVCIsIl94bGZuLkNPTkZJREVOQ0UuTk9STSI6IkNPTkZJREVOQ0UuTk9STSIsIl94bGZuLkNPTkZJREVOQ0UuVCI6IkNPTkZJREVOQ0UuVCIsIl94bGZuLkNPVCI6IkNPVCIsIl94bGZu''@;'; put 'put ''LkNPVEgiOiJDT1RIIiwiX3hsZm4uQ09VTlRJRlMiOiJDT1VOVElGUyIsIl94bGZuLkNPVkFSSUFOQ0UuUCI6IkNPVkFSSUFOQ0UuUCIsIl94bGZuLkNPVkFSSUFOQ0UuUyI6IkNPVkFSSUFOQ0UuUyIsIl94bGZuLkNTQyI6IkNTQyIsIl94bGZuLkNTQ0giOiJDU0NIIiwiX3hsZm4uREFZUyI6''@;'; put 'put ''IkRBWVMiLCJfeGxmbi5ERUNJTUFMIjoiREVDSU1BTCIsIl94bGZuLkVDTUEuQ0VJTElORyI6IkVDTUEuQ0VJTElORyIsIl94bGZuLkVSRi5QUkVDSVNFIjoiRVJGLlBSRUNJU0UiLCJfeGxmbi5FUkZDLlBSRUNJU0UiOiJFUkZDLlBSRUNJU0UiLCJfeGxmbi5FWFBPTi5ESVNUIjoiRVhQT04u''@;'; put 'put ''RElTVCIsIl94bGZuLkYuRElTVCI6IkYuRElTVCIsIl94bGZuLkYuRElTVC5SVCI6IkYuRElTVC5SVCIsIl94bGZuLkYuSU5WIjoiRi5JTlYiLCJfeGxmbi5GLklOVi5SVCI6IkYuSU5WLlJUIiwiX3hsZm4uRi5URVNUIjoiRi5URVNUIiwiX3hsZm4uRklMVEVSWE1MIjoiRklMVEVSWE1MIiwi''@;'; put 'put ''X3hsZm4uRkxPT1IuTUFUSCI6IkZMT09SLk1BVEgiLCJfeGxmbi5GTE9PUi5QUkVDSVNFIjoiRkxPT1IuUFJFQ0lTRSIsIl94bGZuLkZPUkVDQVNULkVUUyI6IkZPUkVDQVNULkVUUyIsIl94bGZuLkZPUkVDQVNULkVUUy5DT05GSU5UIjoiRk9SRUNBU1QuRVRTLkNPTkZJTlQiLCJfeGxmbi5G''@;'; put 'put ''T1JFQ0FTVC5FVFMuU0VBU09OQUxJVFkiOiJGT1JFQ0FTVC5FVFMuU0VBU09OQUxJVFkiLCJfeGxmbi5GT1JFQ0FTVC5FVFMuU1RBVCI6IkZPUkVDQVNULkVUUy5TVEFUIiwiX3hsZm4uRk9SRUNBU1QuTElORUFSIjoiRk9SRUNBU1QuTElORUFSIiwiX3hsZm4uRk9STVVMQVRFWFQiOiJGT1JN''@;'; put 'put ''VUxBVEVYVCIsIl94bGZuLkdBTU1BIjoiR0FNTUEiLCJfeGxmbi5HQU1NQS5ESVNUIjoiR0FNTUEuRElTVCIsIl94bGZuLkdBTU1BLklOViI6IkdBTU1BLklOViIsIl94bGZuLkdBTU1BTE4uUFJFQ0lTRSI6IkdBTU1BTE4uUFJFQ0lTRSIsIl94bGZuLkdBVVNTIjoiR0FVU1MiLCJfeGxmbi5I''@;'; put 'put ''WVBHRU9NLkRJU1QiOiJIWVBHRU9NLkRJU1QiLCJfeGxmbi5JRkVSUk9SIjoiSUZFUlJPUiIsIl94bGZuLklGTkEiOiJJRk5BIiwiX3hsZm4uSUZTIjoiSUZTIiwiX3hsZm4uSU1DT1NIIjoiSU1DT1NIIiwiX3hsZm4uSU1DT1QiOiJJTUNPVCIsIl94bGZuLklNQ1NDIjoiSU1DU0MiLCJfeGxm''@;'; put 'put ''bi5JTUNTQ0giOiJJTUNTQ0giLCJfeGxmbi5JTVNFQyI6IklNU0VDIiwiX3hsZm4uSU1TRUNIIjoiSU1TRUNIIiwiX3hsZm4uSU1TSU5IIjoiSU1TSU5IIiwiX3hsZm4uSU1UQU4iOiJJTVRBTiIsIl94bGZuLklTRk9STVVMQSI6IklTRk9STVVMQSIsIl94bGZuLklTTy5DRUlMSU5HIjoiSVNP''@;'; put 'put ''LkNFSUxJTkciLCJfeGxmbi5JU09XRUVLTlVNIjoiSVNPV0VFS05VTSIsIl94bGZuLkxPR05PUk0uRElTVCI6IkxPR05PUk0uRElTVCIsIl94bGZuLkxPR05PUk0uSU5WIjoiTE9HTk9STS5JTlYiLCJfeGxmbi5NQVhJRlMiOiJNQVhJRlMiLCJfeGxmbi5NSU5JRlMiOiJNSU5JRlMiLCJfeGxm''@;'; put 'put ''bi5NT0RFLk1VTFQiOiJNT0RFLk1VTFQiLCJfeGxmbi5NT0RFLlNOR0wiOiJNT0RFLlNOR0wiLCJfeGxmbi5NVU5JVCI6Ik1VTklUIiwiX3hsZm4uTkVHQklOT00uRElTVCI6Ik5FR0JJTk9NLkRJU1QiLCJfeGxmbi5ORVRXT1JLREFZUy5JTlRMIjoiTkVUV09SS0RBWVMuSU5UTCIsIl94bGZu''@;'; put 'put ''Lk5JR0JJTk9NIjoiTklHQklOT00iLCJfeGxmbi5OT1JNLkRJU1QiOiJOT1JNLkRJU1QiLCJfeGxmbi5OT1JNLklOViI6Ik5PUk0uSU5WIiwiX3hsZm4uTk9STS5TLkRJU1QiOiJOT1JNLlMuRElTVCIsIl94bGZuLk5PUk0uUy5JTlYiOiJOT1JNLlMuSU5WIiwiX3hsZm4uTlVNQkVSVkFMVUUi''@;'; put 'put ''OiJOVU1CRVJWQUxVRSIsIl94bGZuLlBEVVJBVElPTiI6IlBEVVJBVElPTiIsIl94bGZuLlBFUkNFTlRJTEUuRVhDIjoiUEVSQ0VOVElMRS5FWEMiLCJfeGxmbi5QRVJDRU5USUxFLklOQyI6IlBFUkNFTlRJTEUuSU5DIiwiX3hsZm4uUEVSQ0VOVFJBTksuRVhDIjoiUEVSQ0VOVFJBTksuRVhD''@;'; put 'put ''IiwiX3hsZm4uUEVSQ0VOVFJBTksuSU5DIjoiUEVSQ0VOVFJBTksuSU5DIiwiX3hsZm4uUEVSTVVUQVRJT05BIjoiUEVSTVVUQVRJT05BIiwiX3hsZm4uUEhJIjoiUEhJIiwiX3hsZm4uUE9JU1NPTi5ESVNUIjoiUE9JU1NPTi5ESVNUIiwiX3hsZm4uUVVBUlRJTEUuRVhDIjoiUVVBUlRJTEUu''@;'; put 'put ''RVhDIiwiX3hsZm4uUVVBUlRJTEUuSU5DIjoiUVVBUlRJTEUuSU5DIiwiX3hsZm4uUVVFUllTVFJJTkciOiJRVUVSWVNUUklORyIsIl94bGZuLlJBTksuQVZHIjoiUkFOSy5BVkciLCJfeGxmbi5SQU5LLkVRIjoiUkFOSy5FUSIsIl94bGZuLlJSSSI6IlJSSSIsIl94bGZuLlNFQyI6IlNFQyIs''@;'; put 'put ''Il94bGZuLlNFQ0giOiJTRUNIIiwiX3hsZm4uU0hFRVQiOiJTSEVFVCIsIl94bGZuLlNIRUVUUyI6IlNIRUVUUyIsIl94bGZuLlNLRVcuUCI6IlNLRVcuUCIsIl94bGZuLlNUREVWLlAiOiJTVERFVi5QIiwiX3hsZm4uU1RERVYuUyI6IlNUREVWLlMiLCJfeGxmbi5TVU1JRlMiOiJTVU1JRlMi''@;'; put 'put ''LCJfeGxmbi5TV0lUQ0giOiJTV0lUQ0giLCJfeGxmbi5ULkRJU1QiOiJULkRJU1QiLCJfeGxmbi5ULkRJU1QuMlQiOiJULkRJU1QuMlQiLCJfeGxmbi5ULkRJU1QuUlQiOiJULkRJU1QuUlQiLCJfeGxmbi5ULklOViI6IlQuSU5WIiwiX3hsZm4uVC5JTlYuMlQiOiJULklOVi4yVCIsIl94bGZu''@;'; put 'put ''LlQuVEVTVCI6IlQuVEVTVCIsIl94bGZuLlRFWFRKT0lOIjoiVEVYVEpPSU4iLCJfeGxmbi5VTklDSEFSIjoiVU5JQ0hBUiIsIl94bGZuLlVOSUNPREUiOiJVTklDT0RFIiwiX3hsZm4uVkFSLlAiOiJWQVIuUCIsIl94bGZuLlZBUi5TIjoiVkFSLlMiLCJfeGxmbi5XRUJTRVJWSUNFIjoiV0VC''@;'; put 'put ''U0VSVklDRSIsIl94bGZuLldFSUJVTEwuRElTVCI6IldFSUJVTEwuRElTVCIsIl94bGZuLldPUktEQVkuSU5UTCI6IldPUktEQVkuSU5UTCIsIl94bGZuLlhPUiI6IlhPUiIsIl94bGZuLlouVEVTVCI6IlouVEVTVCJ9O2Z1bmN0aW9uIExoKEgpe3JldHVybiJvZjoiPT1ILnNsaWNlKDAsMykm''@;'; put 'put ''JihIPUguc2xpY2UoMykpLDYxPT1ILmNoYXJDb2RlQXQoMCkmJjYxPT0oSD1ILnNsaWNlKDEpKS5jaGFyQ29kZUF0KDApJiYoSD1ILnNsaWNlKDEpKSwoSD0oSD0oSD1ILnJlcGxhY2UoL0NPTVwuTUlDUk9TT0ZUXC4vZywiIikpLnJlcGxhY2UoL1xbKCg/OlwuW0EtWl0rWzAtOV0rKSg/Ojpc''@;'; put 'put ''LltBLVpdK1swLTldKyk/KVxdL2csZnVuY3Rpb24oaWUsWCl7cmV0dXJuIFgucmVwbGFjZSgvXC4vZywiIil9KSkucmVwbGFjZSgvXFsuKCNbQS1aXSpbPyFdKVxdL2csIiQxIikpLnJlcGxhY2UoL1s7fl0vZywiLCIpLnJlcGxhY2UoL1x8L2csIjsiKX1mdW5jdGlvbiBseChIKXtyZXR1cm4o''@;'; put 'put ''Im9mOj0iK0gucmVwbGFjZShTbSwiJDFbLiQyJDMkNCQ1XSIpLnJlcGxhY2UoL1xdOlxbL2csIjoiKSkucmVwbGFjZSgvOy9nLCJ8IikucmVwbGFjZSgvLC9nLCI7Iil9ZnVuY3Rpb24gZl8oSCl7dmFyIGllPUguc3BsaXQoIjoiKTtyZXR1cm5baWVbMF0uc3BsaXQoIi4iKVswXSxpZVswXS5z''@;'; put 'put ''cGxpdCgiLiIpWzFdKyhpZS5sZW5ndGg+MT8iOiIrKGllWzFdLnNwbGl0KCIuIilbMV18fGllWzFdLnNwbGl0KCIuIilbMF0pOiIiKV19ZnVuY3Rpb24gaF8oSCl7cmV0dXJuIEgucmVwbGFjZSgvXC4vLCIhIil9dmFyIE9kPXt9LFVjPXt9O2R0LldTPVsiaHR0cDovL3NjaGVtYXMub3Blbnht''@;'; put 'put ''bGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy93b3Jrc2hlZXQiLCJodHRwOi8vcHVybC5vY2xjLm9yZy9vb3htbC9vZmZpY2VEb2N1bWVudC9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCJdO3ZhciBmNT0idW5kZWZpbmVkIiE9dHlwZW9mIE1hcDtmdW5jdGlv''@;'; put 'put ''biBDNihILGllLFgsd2Upe3ZhciB4ZT0wLEZlPUgubGVuZ3RoO2lmKHdlKXtpZihmNT93ZS5oYXMoaWUpOk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh3ZSxpZSkpZm9yKHZhciBaZT1mNT93ZS5nZXQoaWUpOndlW2llXTt4ZTxaZS5sZW5ndGg7Kyt4ZSlpZihIW1plW3hl''@;'; put 'put ''XV0udD09PWllJiYoIUhbWmVbeGVdXS5yJiYhWHx8SFtaZVt4ZV1dLnI9PVgpKXJldHVybiBILkNvdW50KyssWmVbeGVdfWVsc2UgZm9yKDt4ZTxGZTsrK3hlKWlmKEhbeGVdLnQ9PT1pZSYmKCFIW3hlXS5yJiYhWHx8SFt4ZV0ucj09WCkpcmV0dXJuIEguQ291bnQrKyx4ZTtyZXR1cm4gSFtG''@;'; put 'put ''ZV09e3Q6aWUscjpYfSxILkNvdW50KyssSC5VbmlxdWUrKyx3ZSYmKGY1Pyh3ZS5oYXMoaWUpfHx3ZS5zZXQoaWUsW10pLHdlLmdldChpZSkucHVzaChGZSkpOihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwod2UsaWUpfHwod2VbaWVdPVtdKSx3ZVtpZV0ucHVzaChGZSkp''@;'; put 'put ''KSxGZX1mdW5jdGlvbiBrNihILGllKXt2YXIgWD17bWluOkgrMSxtYXg6SCsxfSx3ZT1LMjtpZighaWUpcmV0dXJuIGllO3ZhciB4ZT0tMTtyZXR1cm4gaWUuYXV0byYmKFguYmVzdEZpdD0xLGllLmJlc3R3aWR0aCYmKHhlPWllLmJlc3R3aWR0aCksZGVsZXRlIGllLmJlc3R3aWR0aCksbnVs''@;'; put 'put ''bCE9aWUud3B4P3hlPUk5KGllLndweCk6bnVsbCE9aWUud2NoP3hlPWllLndjaDpudWxsIT1pZS53aWR0aCYmKFguY3VzdG9tV2lkdGg9MSkseGU+LTE/KFgud2lkdGg9X2IoeGUpLFguY3VzdG9tV2lkdGg9MSk6bnVsbCE9aWUud2lkdGgmJihYLndpZHRoPWllLndpZHRoKSxpZS5oaWRkZW4m''@;'; put 'put ''JihYLmhpZGRlbj0hMCksWC5iZXN0Rml0JiZkZWxldGUgWC5jdXN0b21XaWR0aCxLMj13ZSxudWxsIT1pZS5sZXZlbCYmKFgub3V0bGluZUxldmVsPVgubGV2ZWw9aWUubGV2ZWwpLG51bGwhPWllLnN0eWxlJiYoWC5zdHlsZT1pZS5zdHlsZSksWH1mdW5jdGlvbiBTNihILGllLFgpe3ZhciB3''@;'; put 'put ''ZT1BcyhIWyIhcmVmIl0pLHhlPTAsRmU9SFsiIW1lcmdlcyJdfHxbXSxaZT1BcnJheS5pc0FycmF5KEgpO2U6Zm9yKHZhciBqZT0wO2plPD13ZS5lLnI7KytqZSl7Zm9yKHZhciBZZT0wO1llPEZlLmxlbmd0aDsrK1llKWlmKEZlW1llXS5zLnI8PWplJiZqZTw9RmVbWWVdLmUuciYmRmVbWWVd''@;'; put 'put ''LnMuYzw9WCYmWDw9RmVbWWVdLmUuYyljb250aW51ZSBlO3ZhciBNdD1aZT8oSFtqZV18fFtdKVtYXTpIW1kwKHtyOmplLGM6WH0pXTtpZihNdCl7dmFyIHh0PTE7aWYoTXQucyYmKHh0PXZtKE10LnMpL0NiLkNhbGlicmlbMTJdfHwxKSxNdC53KXhlPU1hdGgubWF4KHhlLE10LncubGVuZ3Ro''@;'; put 'put ''Knh0KTtlbHNlIHN3aXRjaChNdC50KXtjYXNlImIiOmNhc2UiZSI6eGU9TWF0aC5tYXgoeGUsNSp4dCk7YnJlYWs7Y2FzZSJzIjp4ZT1NYXRoLm1heCh4ZSxNdC52Lmxlbmd0aCp4dCoxLjJ8MCk7YnJlYWs7Y2FzZSJuIjpnZChNdCxNdC52KSx4ZT1NYXRoLm1heCh4ZSxTdHJpbmcoTXQud3x8''@;'; put 'put ''TXQudikubGVuZ3RoKnh0KTticmVhaztjYXNlImQiOnhlPU1hdGgubWF4KHhlLDgqeHQpfX19eGU8MSYmKHhlPTEpLGllLmJlc3R3aWR0aD14ZX1mdW5jdGlvbiBSZChILGllKXtpZihIKXt2YXIgWD1bLjcsLjcsLjc1LC43NSwuMywuM107InhsbWwiPT1pZSYmKFg9WzEsMSwxLDEsLjUsLjVd''@;'; put 'put ''KSxudWxsPT1ILmxlZnQmJihILmxlZnQ9WFswXSksbnVsbD09SC5yaWdodCYmKEgucmlnaHQ9WFsxXSksbnVsbD09SC50b3AmJihILnRvcD1YWzJdKSxudWxsPT1ILmJvdHRvbSYmKEguYm90dG9tPVhbM10pLG51bGw9PUguaGVhZGVyJiYoSC5oZWFkZXI9WFs0XSksbnVsbD09SC5mb290ZXIm''@;'; put 'put ''JihILmZvb3Rlcj1YWzVdKX19ZnVuY3Rpb24gejQoSCxpZSl7Zm9yKHZhciBYPW9uKGllKSx3ZT0wO3dlPEgubGVuZ3RoOysrd2Upe3ZhciB4ZT0hMCxGZT1IW3dlXTtpZihGZSYmWC5sZW5ndGg9PW9uKEZlKS5sZW5ndGgmJihYLmZvckVhY2goZnVuY3Rpb24oWmUpe2lmKHhlKXtpZihudWxs''@;'; put 'put ''PT09aWVbWmVdIT0obnVsbD09PUZlW1plXSkpcmV0dXJuIHZvaWQoeGU9ITEpO2lmKCJvYmplY3QiPT10eXBlb2YgaWVbWmVdKWlmKFsiY29sb3IiLCJmZ0NvbG9yIiwiYmdDb2xvciJdLmluZGV4T2YoWmUpPi0xKXtpZihfMyhpZVtaZV0sRmVbWmVdKSlyZXR1cm4gdm9pZCh4ZT0hMSl9ZWxz''@;'; put 'put ''ZXtpZighKFsibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIl0uaW5kZXhPZihaZSk+LTEpKXJldHVybiB2b2lkKHhlPSExKTtpZihUOShpZVtaZV0sRmVbWmVdKSlyZXR1cm4gdm9pZCh4ZT0hMSl9aWYoaWVbWmVdIT1GZVtaZV0pcmV0dXJuIHZvaWQoeGU9ITEpfX0pLHhlKSlyZXR1cm4g''@;'; put 'put ''d2V9cmV0dXJuIEhbSC5sZW5ndGhdPWxuKGllKSxILmxlbmd0aC0xfWZ1bmN0aW9uIFkxKEgsaWUsWCx3ZSl7dmFyIHhlPXdlLnJldnNzZltudWxsIT1YLno/WC56OiJHZW5lcmFsIl0sRmU9NjAsWmU9SC5sZW5ndGg7aWYobnVsbD09eGUmJndlLnNzZilmb3IoO0ZlPDM5MjsrK0ZlKWlmKG51''@;'; put 'put ''bGw9PXdlLnNzZltGZV0pe0YubG9hZChYLnosRmUpLHdlLnNzZltGZV09WC56LHdlLnJldnNzZltYLnpdPXhlPUZlO2JyZWFrfXZhciBqZT0wLFllPTAsTXQ9MCx4dD0wO2lmKHdlLmNlbGxTdHlsZXMpe2lmKFgucyl7aWYod2UuRm9udHMpe1gucy5jb2xvcnx8KFgucy5jb2xvcj17dGhlbWU6''@;'; put 'put ''MSxyZ2I6IjAwMDAwMCJ9KTtmb3IodmFyIFJ0PShYLnMuYm9sZD8xOjApfChYLnMuaXRhbGljPzI6MCl8KFgucy5zdHJpa2U/NDowKXwoWC5zLnNoYWRvdz84OjApO2plPHdlLkZvbnRzLmxlbmd0aDsrK2plKXt2YXIgVXQ9d2UuRm9udHNbamVdO2lmKG51bGw9PVV0LmZvbnRoYXNoJiYoVXQu''@;'; put 'put ''Zm9udGhhc2g9KFV0LmJvbGQ/MTowKXwoVXQuaXRhbGljPzI6MCl8KFV0LnN0cmlrZT80OjApfChVdC5zaGFkb3c/ODowKSksIShSdCE9VXQuZm9udGhhc2h8fCEhWC5zLmNvbG9yIT0hIVV0LmNvbG9yfHxYLnMudmFsaWduIT1VdC52YWxpZ258fChYLnMuc3p8fFV0LnN6KSYmKFgucy5zenx8''@;'; put 'put ''MTIpIT0oVXQuc3p8fDEyKXx8WC5zLm5hbWUmJlgucy5uYW1lIT1VdC5uYW1lfHwoWC5zLnVuZGVybGluZXx8MCkhPShVdC51bmRlcmxpbmV8fDApfHxYLnMuY29sb3ImJl8zKFgucy5jb2xvcixVdC5jb2xvcikpKWJyZWFrfWplPT13ZS5Gb250cy5sZW5ndGgmJih3ZS5Gb250cy5wdXNoKHtz''@;'; put 'put ''ejpYLnMuc3p8fDEyLGNvbG9yOlgucy5jb2xvcnx8e3RoZW1lOjEscmdiOiIwMDAwMDAifSxuYW1lOlgucy5uYW1lfHwiQ2FsaWJyaSIsZmFtaWx5Olgucy5mYW1pbHl8fDIsc2NoZW1lOlgucy5zY2hlbWUsYm9sZDpYLnMuYm9sZCxpdGFsaWM6WC5zLml0YWxpYyxzdHJpa2U6WC5zLnN0cmlr''@;'; put 'put ''ZSxzaGFkb3c6WC5zLnNoYWRvdyx2YWxpZ246WC5zLnZhbGlnbix1bmRlcmxpbmU6WC5zLnVuZGVybGluZX0pLDE9PXdlLkZvbnRzLmxlbmd0aCYmUzMod2UuRm9udHNbMF0pKX1pZih3ZS5GaWxscyl7Zm9yKDtZZTx3ZS5GaWxscy5sZW5ndGg7KytZZSl7dmFyIG5uPXdlLkZpbGxzW1llXTtp''@;'; put 'put ''ZighIVgucy5zdG9wcz09ISFubi5zdG9wcyl7aWYoWC5zLnN0b3BzKXtpZihYLnMuYW5nbGUhPW5uLmFuZ2xlKWNvbnRpbnVlO3ZhciBDbj0hMDtpZihYLnMuc3RvcHMuZm9yRWFjaChmdW5jdGlvbihUbixPbil7XzMoVG4sbm4uc3RvcHNbT25dKSYmKENuPSExKSxUbi52IT1ubi5zdG9wc1tP''@;'; put 'put ''bl0udiYmKENuPSExKX0pLCFDbiljb250aW51ZX1lbHNle2lmKG51bGw9PVgucy5wYXR0ZXJuVHlwZSYmWC5zLmZnQ29sb3ImJihYLnMucGF0dGVyblR5cGU9InNvbGlkIiksbnVsbD09WC5zLnBhdHRlcm5UeXBlKWJyZWFrO2lmKFgucy5wYXR0ZXJuVHlwZSE9bm4ucGF0dGVyblR5cGV8fF8z''@;'; put 'put ''KFgucy5mZ0NvbG9yLG5uLmZnQ29sb3IpfHxfMyhYLnMuYmdDb2xvcixubi5iZ0NvbG9yKSljb250aW51ZX1icmVha319aWYoWWU9PXdlLkZpbGxzLmxlbmd0aCl7dmFyIER0PXt9O1gucy5zdG9wcz8obnVsbCE9WC5zLmFuZ2xlJiYoRHQuYW5nbGU9WC5zLmFuZ2xlKSxEdC5zdG9wcz1bXSxY''@;'; put 'put ''LnMuc3RvcHMuZm9yRWFjaChmdW5jdGlvbihUbil7RHQuc3RvcHMucHVzaChsbihUbikpfSkpOkR0PXtwYXR0ZXJuVHlwZTpYLnMucGF0dGVyblR5cGUsZmdDb2xvcjpYLnMuZmdDb2xvcixiZ0NvbG9yOlgucy5iZ0NvbG9yfSx3ZS5GaWxscy5wdXNoKER0KX19aWYod2UuQm9yZGVycyl7Zm9y''@;'; put 'put ''KDtNdDx3ZS5Cb3JkZXJzLmxlbmd0aDsrK010KXt2YXIgenQ9d2UuQm9yZGVyc1tNdF0sUG49InRvcCI7aWYoWC5zW1BuXSl7aWYoIXp0W1BuXXx8WC5zW1BuXS5zdHlsZSE9enRbUG5dLnN0eWxlfHxfMyhYLnNbUG5dLmNvbG9yLHp0W1BuXS5jb2xvcikpY29udGludWV9ZWxzZSBpZihudWxs''@;'; put 'put ''IT16dFtQbl0pY29udGludWU7aWYoWC5zW1BuPSJib3R0b20iXSl7aWYoIXp0W1BuXXx8WC5zW1BuXS5zdHlsZSE9enRbUG5dLnN0eWxlfHxfMyhYLnNbUG5dLmNvbG9yLHp0W1BuXS5jb2xvcikpY29udGludWV9ZWxzZSBpZihudWxsIT16dFtQbl0pY29udGludWU7aWYoWC5zW1BuPSJsZWZ0''@;'; put 'put ''Il0pe2lmKCF6dFtQbl18fFguc1tQbl0uc3R5bGUhPXp0W1BuXS5zdHlsZXx8XzMoWC5zW1BuXS5jb2xvcix6dFtQbl0uY29sb3IpKWNvbnRpbnVlfWVsc2UgaWYobnVsbCE9enRbUG5dKWNvbnRpbnVlO2lmKFguc1tQbj0icmlnaHQiXSl7aWYoIXp0W1BuXXx8WC5zW1BuXS5zdHlsZSE9enRb''@;'; put 'put ''UG5dLnN0eWxlfHxfMyhYLnNbUG5dLmNvbG9yLHp0W1BuXS5jb2xvcikpY29udGludWV9ZWxzZSBpZihudWxsIT16dFtQbl0pY29udGludWU7YnJlYWt9TXQ9PXdlLkJvcmRlcnMubGVuZ3RoJiZ3ZS5Cb3JkZXJzLnB1c2goe3RvcDpYLnMudG9wJiZsbihYLnMudG9wKXx8dm9pZCAwLGJvdHRv''@;'; put 'put ''bTpYLnMuYm90dG9tJiZsbihYLnMuYm90dG9tKXx8dm9pZCAwLGxlZnQ6WC5zLmxlZnQmJmxuKFgucy5sZWZ0KXx8dm9pZCAwLHJpZ2h0Olgucy5yaWdodCYmbG4oWC5zLnJpZ2h0KXx8dm9pZCAwfSl9aWYoaWUmJlgucy5zdHlsZSYmIk5vcm1hbCIhPT1YLnMuc3R5bGUpe2Zvcih4dD0xO3h0''@;'; put 'put ''PGllLmxlbmd0aCYmaWVbeHRdLm5hbWUhPVgucy5zdHlsZTsrK3h0KTt4dD09aWUubGVuZ3RoJiZpZS5wdXNoKHtuYW1lOlgucy5zdHlsZSxudW1GbXRJZDp4ZSxmb250SWQ6amUsZmlsbElkOlllLGJvcmRlcklkOk10fSl9fWZvcihGZT0wO0ZlIT1aZTsrK0ZlKWlmKEhbRmVdLm51bUZtdElk''@;'; put 'put ''PT14ZSYmSFtGZV0uZm9udElkPT1qZSYmSFtGZV0uZmlsbElkPT1ZZSYmSFtGZV0uYm9yZGVySWQ9PU10JiZIW0ZlXS54ZklkPT14dCl7aWYoWC5zJiZYLnMuYWxpZ25tZW50KXtpZighSFtGZV0uYWxpZ25tZW50KWNvbnRpbnVlO2lmKFgucy5hbGlnbm1lbnQuaG9yaXpvbnRhbCE9SFtGZV0u''@;'; put 'put ''YWxpZ25tZW50Lmhvcml6b250YWx8fFgucy5hbGlnbm1lbnQudmVydGljYWwhPUhbRmVdLmFsaWdubWVudC52ZXJ0aWNhbHx8WC5zLmFsaWdubWVudC53cmFwVGV4dCE9SFtGZV0uYWxpZ25tZW50LndyYXBUZXh0fHxYLnMuYWxpZ25tZW50LnNocmlua1RvRml0IT1IW0ZlXS5hbGlnbm1lbnQu''@;'; put 'put ''c2hyaW5rVG9GaXR8fFgucy5hbGlnbm1lbnQudGV4dFJvdGF0aW9uIT1IW0ZlXS5hbGlnbm1lbnQudGV4dFJvdGF0aW9ufHxYLnMuYWxpZ25tZW50LmluZGVudCE9SFtGZV0uYWxpZ25tZW50LmluZGVudCljb250aW51ZX1lbHNlIGlmKEhbRmVdLmFsaWdubWVudCljb250aW51ZTtpZihYLnMp''@;'; put 'put ''e2lmKCEhWC5zLmhpZGRlbj09KCFIW0ZlXS5wcm90ZWN0aW9ufHwhSFtGZV0ucHJvdGVjdGlvbi5oaWRkZW4pfHwhIVgucy5lZGl0YWJsZT09KCFIW0ZlXS5wcm90ZWN0aW9ufHwhSFtGZV0ucHJvdGVjdGlvbi5lZGl0YWJsZSkpY29udGludWV9ZWxzZSBpZihIW0ZlXS5wcm90ZWN0aW9uKWNv''@;'; put 'put ''bnRpbnVlO3JldHVybiBGZX19ZWxzZSBmb3IoRmU9MDtGZSE9WmU7KytGZSlpZihIW0ZlXS5udW1GbXRJZD09PXhlKXJldHVybiBGZTtyZXR1cm4gSFtaZV09e251bUZtdElkOnhlLGZvbnRJZDpqZSxmaWxsSWQ6WWUsYm9yZGVySWQ6TXQseGZJZDp4dCxhcHBseU51bWJlckZvcm1hdDoxfSxq''@;'; put 'put ''ZT4wJiYoSFtaZV0uYXBwbHlGb250PTEpLFllPjAmJihIW1plXS5hcHBseUZpbGw9MSksTXQ+MCYmKEhbWmVdLmFwcGx5Qm9yZGVyPTEpLCFpZSYmWC5zJiZYLnMuc3R5bGUmJiJOb3JtYWwiIT1YLnMuc3R5bGUmJihIW1plXS5zdHlsZT1YLnMuc3R5bGUpLFgucyYmWC5zLmFsaWdubWVudCYm''@;'; put 'put ''KEhbWmVdLmFsaWdubWVudD17fSxbImhvcml6b250YWwiLCJ2ZXJ0aWNhbCIsIndyYXBUZXh0Iiwic2hyaW5rVG9GaXQiLCJpbmRlbnQiLCJ0ZXh0Um90YXRpb24iXS5mb3JFYWNoKGZ1bmN0aW9uKFRuKXtudWxsIT1YLnMuYWxpZ25tZW50W1RuXSYmKEhbWmVdLmFsaWdubWVudFtUbl09WC5z''@;'; put 'put ''LmFsaWdubWVudFtUbl0pfSkpLFgucyYmWC5zLmhpZGRlbiYmKEhbWmVdLnByb3RlY3Rpb258fChIW1plXS5wcm90ZWN0aW9uPXt9KSxIW1plXS5wcm90ZWN0aW9uLmhpZGRlbj0hMCksWC5zJiZYLnMuZWRpdGFibGUmJihIW1plXS5wcm90ZWN0aW9ufHwoSFtaZV0ucHJvdGVjdGlvbj17fSks''@;'; put 'put ''SFtaZV0ucHJvdGVjdGlvbi5lZGl0YWJsZT0hMCksWmV9ZnVuY3Rpb24gZDUoSCxpZSxYLHdlLHhlLEZlLFplLGplKXsiZCI9PT1ILnQmJiJzdHJpbmciPT10eXBlb2YgSC52JiYoSC52PWRuKEgudikpO3RyeXtGZS5jZWxsTkYmJihILno9Ri5fdGFibGVbaWVdKX1jYXRjaChNdCl7aWYoRmUu''@;'; put 'put ''V1RGKXRocm93IE10fWlmKCghRmV8fCExIT09RmUuY2VsbFRleHQpJiYieiIhPUgudCl0cnl7aWYobnVsbD09Ri5fdGFibGVbaWVdJiZGLmxvYWQoRGVbaWVdfHwiR2VuZXJhbCIsaWUpLCJlIj09PUgudClILnc9SC53fHxOMVtILnZdO2Vsc2UgaWYoMD09PWllKWlmKCJuIj09PUgudClILnc9''@;'; put 'put ''KDB8SC52KT09PUgudj9GLl9nZW5lcmFsX2ludChILnYpOkYuX2dlbmVyYWxfbnVtKEgudik7ZWxzZSBpZigiZCI9PT1ILnQpe3ZhciBZZT1mdChILnYpO0gudz0oMHxZZSk9PT1ZZT9GLl9nZW5lcmFsX2ludChZZSk6Ri5fZ2VuZXJhbF9udW0oWWUpfWVsc2V7aWYodm9pZCAwPT09SC52KXJl''@;'; put 'put ''dHVybiIiO0gudz1GLl9nZW5lcmFsKEgudixVYyl9ZWxzZSBILnc9Ri5mb3JtYXQoaWUsImQiPT09SC50P2Z0KEgudik6SC52LFVjKX1jYXRjaChNdCl7aWYoRmUuV1RGKXRocm93IE10fWlmKEZlLmNlbGxTdHlsZXMmJmplKXtpZihILnM9e30sbnVsbCE9WCYmamUuRmlsbHMpdHJ5e2JuKEgu''@;'; put 'put ''cyxqZS5GaWxsc1tYXSl9Y2F0Y2goTXQpe2lmKEZlLldURil0aHJvdyBNdH1pZihudWxsIT13ZSYmamUuRm9udHMpdHJ5e2JuKEgucyxqZS5Gb250c1t3ZV0pfWNhdGNoKE10KXtpZihGZS5XVEYpdGhyb3cgTXR9aWYobnVsbCE9eGUmJmplLkJvcmRlcnMpdHJ5e2JuKEgucyxqZS5Cb3JkZXJz''@;'; put 'put ''W3hlXSl9Y2F0Y2goTXQpe2lmKEZlLldURil0aHJvdyBNdH19fWZ1bmN0aW9uIG9BKEgsaWUsWCl7aWYoSCYmSFsiIXJlZiJdKXt2YXIgd2U9Rm8oSFsiIXJlZiJdKTtpZih3ZS5lLmM8d2Uucy5jfHx3ZS5lLnI8d2Uucy5yKXRocm93IG5ldyBFcnJvcigiQmFkIHJhbmdlICgiK1grIik6ICIr''@;'; put 'put ''SFsiIXJlZiJdKX19dmFyIHBfPS88KD86XHc6KT9tZXJnZUNlbGwgcmVmPSJbQS1aMC05Ol0rIlxzKltcL10/Pi9nLGdfPS88KD86XHcrOik/c2hlZXREYXRhW14+XSo+KFtcc1xTXSopPFwvKD86XHcrOik/c2hlZXREYXRhPi8sc3g9LzwoPzpcdzopP2h5cGVybGluayBbXj5dKj4vZ20sbV89''@;'; put 'put ''LyIoXHcqOlx3KikiLyxHQj0vPCg/Olx3Oik/Y29sXGJbXj5dKltcL10/Pi9nLHZHPS88KD86XHc6KT9jb250cm9sXGJbXj5dKltcL10/Pi9nLGFBPS88KD86XHc6KT9hdXRvRmlsdGVyW14+XSooW1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9hdXRvRmlsdGVyKT4vZyx2Xz0vPCg/Olx3Oik/''@;'; put 'put ''cGFnZU1hcmdpbnNbXj5dKlwvPi9nLEFfPS88KD86XHc6KT9zaGVldFByXGIoPzpbXj5hLXpdW14+XSopP1wvPi8sbEE9LzwoPzpcdzopP3NoZWV0UHJvdGVjdGlvblxiKD86W14+YS16XVtePl0qKT9cLz4vLEltPS88KD86XHc6KT9zaGVldFByW14+XSooPzpbXC9dfD4oW1xzXFNdKik8XC8o''@;'; put 'put ''PzpcdzopP3NoZWV0UHIpPi8sV0I9LzwoPzpcdzopP3NoZWV0Vmlld3NbXj5dKig/OltcL118PihbXHNcU10qKTxcLyg/Olx3Oik/c2hlZXRWaWV3cyk+LyxlYz0vPCg/Olx3KzopP2RhdGFWYWxpZGF0aW9uc1tePl0qKD86W1wvXXw+KFtcc1xTXSo/KTxcLyg/Olx3KzopP2RhdGFWYWxpZGF0''@;'; put 'put ''aW9ucyk+LyxEbT0vPCg/Olx3KzopP2NvbmRpdGlvbmFsRm9ybWF0dGluZ1xiW14+XSooPzpbXC9dfD4oW1xzXFNdKj8pPFwvKD86XHcrOik/Y29uZGl0aW9uYWxGb3JtYXR0aW5nKT4vZyxMbT0vPCg/Olx3Oik/c2hlZXRGb3JtYXRQcltePl0qXC8+LyxBRz0vPCg/Olx3KzopP3RhYmxlUGFy''@;'; put 'put ''dHMuKj8+KFtcc1xTXSo/KTxcLyg/Olx3KzopP3RhYmxlUGFydHM+LyxZQj0vPCg/Olx3Oik/cGFnZVNldHVwW14+XSpcLz4vLHlfPS88KD86XHc6KT9yb3dCcmVha3NbXj5dKig/OltcL118PihbXHNcU10qKTxcLyg/Olx3Oik/cm93QnJlYWtzKT4vLHNBPS88KD86XHc6KT9jb2xCcmVha3Nb''@;'; put 'put ''Xj5dKig/OltcL118PihbXHNcU10qKTxcLyg/Olx3Oik/Y29sQnJlYWtzKT4vLHVBPS88KD86XHc6KT9oZWFkZXJGb290ZXJbXj5dKig/OltcL118PihbXHNcU10qKTxcLyg/Olx3Oik/aGVhZGVyRm9vdGVyKT4vLHV4PS88KD86XHc6KT9wcmludE9wdGlvbnNcYltePlwvXSpcLz4vO3ZhciBf''@;'; put 'put ''MT0vPCg/Olx3Oik/dGFibGVQYXJ0XGJbXlwvPl0qW1wvXT8+L2c7ZnVuY3Rpb24gT20oSCxpZSxYLHdlKXt2YXIgeGU9ZW4oSCk7WC5TaGVldHNbd2VdfHwoWC5TaGVldHNbd2VdPXt9KSx4ZS5jb2RlTmFtZSYmKFguU2hlZXRzW3dlXS5Db2RlTmFtZT14ZS5jb2RlTmFtZSl9dmFyIGJfPS88''@;'; put 'put ''KD86XHc6KT90YWJDb2xvcltePl0qW1wvXT8+LyxjeD0vPCg/Olx3Oik/cGFnZVNldFVwUHJbXj5dKltcL10/Pi8sZkE9LzwoPzpcdzopP291dGxpbmVQcltePl0qW1wvXT8+LyxfXz17ZGlzcGxheWVkOiJhc0Rpc3BsYXllZCIsZW5kOiJhdEVuZCIsbm9uZToibm9uZSJ9LENfPXR0KF9fKSxf''@;'; put 'put ''Mj17ZGlzcGxheWVkOiJkaXNwbGF5ZWQiLG5vbmU6ImJsYW5rIixkYXNoOiJkYXNoIiwibi9hIjoiTkEifSxoQT10dChfMiksZEE9LzwoPzpcdzopP2Jya1tePl0qXC8+L2csTV89WyJvYmplY3RzIiwic2NlbmFyaW9zIiwic2VsZWN0TG9ja2VkQ2VsbHMiLCJzZWxlY3RVbmxvY2tlZENlbGxz''@;'; put 'put ''Il0sZ0E9WyJmb3JtYXRDb2x1bW5zIiwiZm9ybWF0Um93cyIsImZvcm1hdENlbGxzIiwiaW5zZXJ0Q29sdW1ucyIsImluc2VydFJvd3MiLCJpbnNlcnRIeXBlcmxpbmtzIiwiZGVsZXRlQ29sdW1ucyIsImRlbGV0ZVJvd3MiLCJzb3J0IiwiYXV0b0ZpbHRlciIsInBpdm90VGFibGVzIl07ZnVu''@;'; put 'put ''Y3Rpb24gUG0oSCl7dmFyIGllPXt9O3JldHVyblsibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIiwiaGVhZGVyIiwiZm9vdGVyIl0uZm9yRWFjaChmdW5jdGlvbihYKXtIW1hdJiYoaWVbWF09cGFyc2VGbG9hdChIW1hdKSl9KSxpZX12YXIgUmg9e0N1c3RvbToiY3VzdG9tIixEYXRlOiJk''@;'; put 'put ''YXRlIixUaW1lOiJ0aW1lIixMZW5ndGg6InRleHRMZW5ndGgiLExpc3Q6Imxpc3QiLERlY2ltYWw6ImRlY2ltYWwiLFdob2xlOiJ3aG9sZSIsQW55OiJub25lIn0scDU9dHQoUmgpLEc0PXtJTjoiYmV0d2VlbiIsT1Q6Im5vdEJldHdlZW4iLEVROiJlcXVhbCIsTkU6Im5vdEVxdWFsIixHVDoi''@;'; put 'put ''Z3JlYXRlclRoYW4iLExUOiJsZXNzVGhhbiIsR0U6ImdyZWF0ZXJUaGFuT3JFcXVhbCIsTEU6Imxlc3NUaGFuT3JFcXVhbCJ9LE02PXR0KEc0KTtmdW5jdGlvbiBBQShILGllLFgpe3ZhciB3ZT1bXSx4ZT17fSxGZT0iIixaZT0hMSxqZT0wLFllPTA7cmV0dXJuIEgucmVwbGFjZShHdCxmdW5j''@;'; put 'put ''dGlvbihNdCx4dCl7dmFyIFJ0PWVuKE10KTtzd2l0Y2goSW4oUnRbMF0pKXtjYXNlIjxkYXRhVmFsaWRhdGlvbnMiOmNhc2UiPGRhdGFWYWxpZGF0aW9ucz4iOmNhc2UiPC9kYXRhVmFsaWRhdGlvbnM+IjpicmVhaztjYXNlIjxkYXRhVmFsaWRhdGlvbiI6eGU9e3Q6cDVbUnQudHlwZXx8Im5v''@;'; put 'put ''bmUiXSxyZWY6KEZlPVJ0LnNxcmVmKT9GZS5pbmRleE9mKCIgIik+LTE/RmU6Rm8oRmUpOiIifSxSdC5vcGVyYXRvciYmKHhlLm9wPU02W1J0Lm9wZXJhdG9yXSkseGUuYmxhbms9ISFSdC5hbGxvd0JsYW5rJiZEaShSdC5hbGxvd0JsYW5rKSwoIVJ0LnNob3dJbnB1dE1lc3NhZ2V8fCFEaShS''@;'; put 'put ''dC5zaG93SW5wdXRNZXNzYWdlKSkmJih4ZS5pbnB1dD0hMSksUnQucHJvbXB0VGl0bGUmJigoeGUuaW5wdXR8fCh4ZS5pbnB1dD17fSkpLnRpdGxlPWdyKFJ0LnByb21wdFRpdGxlKSksUnQucHJvbXB0JiYoKHhlLmlucHV0fHwoeGUuaW5wdXQ9e30pKS5tZXNzYWdlPWdyKFJ0LnByb21wdCkp''@;'; put 'put ''LCghUnQuc2hvd0Vycm9yTWVzc2FnZXx8IURpKFJ0LnNob3dFcnJvck1lc3NhZ2UpKSYmKHhlLmVycm9yPSExKSxSdC5lcnJvclRpdGxlJiYoKHhlLmVycm9yfHwoeGUuZXJyb3I9e30pKS50aXRsZT1ncihSdC5lcnJvclRpdGxlKSksUnQuZXJyb3ImJigoeGUuZXJyb3J8fCh4ZS5lcnJvcj17''@;'; put 'put ''fSkpLm1lc3NhZ2U9Z3IoUnQuZXJyb3IpKSx4ZS5lcnJvcj94ZS5lcnJvci5zdHlsZT1SdC5lcnJvclN0eWxlfHwic3RvcCI6UnQuZXJyb3JTdHlsZSYmKHhlLmVycm9yPXtzdHlsZTpSdC5lcnJvclN0eWxlfSkseGUudCYmd2UucHVzaCh4ZSk7YnJlYWs7Y2FzZSI8ZGF0YVZhbGlkYXRpb24v''@;'; put 'put ''PiI6Y2FzZSI8L2RhdGFWYWxpZGF0aW9uPiI6YnJlYWs7Y2FzZSI8c3FyZWY+IjpZZT14dCtNdC5sZW5ndGg7YnJlYWs7Y2FzZSI8L3NxcmVmPiI6RmU9SC5zbGljZShZZSx4dCkseGUucmVmPUZlP0ZlLmluZGV4T2YoIiAiKT4tMT9GZTpGbyhGZSk6IiI7YnJlYWs7Y2FzZSI8Zj4iOmNhc2Ui''@;'; put 'put ''PGZvcm11bGExIjpjYXNlIjxmb3JtdWxhMT4iOmNhc2UiPGZvcm11bGEyIjpjYXNlIjxmb3JtdWxhMj4iOmplPXh0K010Lmxlbmd0aDticmVhaztjYXNlIjwvZm9ybXVsYTE+IjpjYXNlIjwvZm9ybXVsYTI+IjppZihYKWJyZWFrO2Nhc2UiPC9mPiI6dmFyIFV0PWdyKFcwKEguc2xpY2UoamUs''@;'; put 'put ''eHQpKSk7c3dpdGNoKHhlLnQpe2Nhc2UiTGlzdCI6aWYoeGUubHx8eGUuZilicmVhaztpZigzND09VXQuY2hhckNvZGVBdCgwKSl7eGUubD1VdC5zbGljZSgxLC0xKS5zcGxpdCgiLCIpO2JyZWFrfWNhc2UiQ3VzdG9tIjpudWxsPT14ZS5mJiYoeGUuZj1VdCk7YnJlYWs7Y2FzZSJEYXRlIjpj''@;'; put 'put ''YXNlIkRlY2ltYWwiOmNhc2UiTGVuZ3RoIjpjYXNlIlRpbWUiOmNhc2UiV2hvbGUiOnhlLm9wfHwoeGUub3A9IklOIiksbnVsbD09eGUudj94ZS52PWlzTmFOKCtVdCk/VXQ6K1V0Oih4ZS5taW49eGUudix4ZS5tYXg9aXNOYU4oK1V0KT9VdDorVXQsZGVsZXRlIHhlLnYpfWJyZWFrO2Nhc2Ui''@;'; put 'put ''PGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPGV4dCI6WmU9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOlplPSExO2JyZWFrO2RlZmF1bHQ6aWYoaWUmJmllLldURiYmIVplKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrUnRbMF0rIiBpbiBk''@;'; put 'put ''YXRhIHZhbGlkYXRpb24iKX1yZXR1cm4gTXR9KSx3ZX12YXIgeUE9e0lOOiJjb250YWluc1RleHQiLE9UOiJub3RDb250YWluc1RleHQiLFNUOiJiZWdpbnNXaXRoIixORDoiZW5kc1dpdGgifSxMXz10dCh5QSksd0E9e0xNOiJsYXN0TW9udGgiLExTOiJsYXN0N0RheXMiLExXOiJsYXN0V2Vl''@;'; put 'put ''ayIsTk06Im5leHRNb250aCIsTlc6Im5leHRXZWVrIixUTToidGhpc01vbnRoIixUVzoidGhpc1dlZWsiLFREOiJ0b2RheSIsVE86InRvbW9ycm93IixZUzoieWVzdGVyZGF5In0sRm09dHQod0EpO2Z1bmN0aW9uIEhtKEgpe3ZhciBpZT17fTtyZXR1cm4gbnVsbCE9SC52YWwmJihpc05hTigr''@;'; put 'put ''SC52YWwpP2llLmY9SC52YWw6aWUudj0rSC52YWwpLGllLnQ9SC50eXBlLGllfWZ1bmN0aW9uIEJkKEgpe3JldHVybiBfaSgiY2Z2byIsbnVsbCx7dHlwZTpILnQsdmFsOm51bGwhPUgudj9ILnY6UnIoSC5mKX0pfWZ1bmN0aW9uIE9fKEgsaWUsWCx3ZSl7dmFyIHhlPUhtKEgpO3JldHVybiB4''@;'; put 'put ''ZS5jb2xvcj1FMyhpZSxYLHdlKSx4ZX1mdW5jdGlvbiBneChILGllLFgsd2UseGUpe3ZhciBGZT0oSC5tYXRjaCgvc3FyZWY9IihbXHc6JCBdKikiLyl8fFtdKVsxXTtyZXR1cm4gZnVuY3Rpb24gd0coSCxpZSxYLHdlLHhlLEZlKXt2YXIgWmU9ITEsamU9W10sWWU9e2Y6W119LE10PTAseHQ9''@;'; put 'put ''MCxSdD17Y2Z2b3M6W10sY29sb3JzOltdfSxVdD17fSxubj0tMSxDbj0wLER0PSIiO3JldHVybiBILnJlcGxhY2UoR3QsZnVuY3Rpb24oenQsUG4pe3ZhciBUbj1lbih6dCk7c3dpdGNoKEluKFRuWzBdKSl7Y2FzZSI8Y29uZGl0aW9uYWxGb3JtYXR0aW5nIjpjYXNlIjwvY29uZGl0aW9uYWxG''@;'; put 'put ''b3JtYXR0aW5nPiI6YnJlYWs7Y2FzZSI8Y2ZSdWxlIjpjYXNlIjxjZlJ1bGU+IjppZih4dD1QbixVdD1UbixZZT17cmVmOmllLGY6W119LCF6dC5tYXRjaCgvXC8+LykpYnJlYWs7Y2FzZSI8L2NmUnVsZT4iOnN3aXRjaChVdC5keGZJZCYmeGUmJnhlLkRYRiYmKFllLnM9eGUuRFhGWytVdC5k''@;'; put 'put ''eGZJZF0pLFV0LnR5cGUpe2Nhc2UiZHVwbGljYXRlVmFsdWVzIjpZZS50PSJkdXAiO2JyZWFrO2Nhc2UidW5pcXVlVmFsdWVzIjpZZS50PSJ1bmlxdWUiO2JyZWFrO2Nhc2UiY29udGFpbnNCbGFua3MiOlllLnQ9ImJsYW5rIixZZS52PSEwO2JyZWFrO2Nhc2Uibm90Q29udGFpbnNCbGFua3Mi''@;'; put 'put ''OlllLnQ9ImJsYW5rIixZZS52PSExO2JyZWFrO2Nhc2UiY29udGFpbnNFcnJvcnMiOlllLnQ9ImVycm9yIixZZS52PSEwO2JyZWFrO2Nhc2Uibm90Q29udGFpbnNFcnJvcnMiOlllLnQ9ImVycm9yIixZZS52PSExO2JyZWFrO2Nhc2UiY2VsbElzIjpzd2l0Y2goVXQub3BlcmF0b3Ipe2Nhc2Ui''@;'; put 'put ''Y29udGFpbnNUZXh0IjpjYXNlIm5vdENvbnRhaW5zIjpjYXNlImJlZ2luc1dpdGgiOmNhc2UiZW5kc1dpdGgiOmlmKFllLnQ9InRleHQiLFllLm9wPUxfW1V0Lm9wZXJhdG9yXSxudWxsPT1VdC50ZXh0KXRocm93IG5ldyBFcnJvcigiQ0YgVGV4dCBSdWxlICIrWWUub3ArIiBtaXNzaW5nIHRl''@;'; put 'put ''eHQiKTtZZS52PVV0LnRleHQsWWUuZj1ZZS5mWzBdLG51bGw9PVllLmYmJmRlbGV0ZSBZZS5mO2JyZWFrO2RlZmF1bHQ6WWUudD0idmFsIixZZS5vcD1NNltVdC5vcGVyYXRvcl0sMT09WWUuZi5sZW5ndGg/aXNOYU4oK1llLmZbMF0pP1llLmY9WWUuZlswXTooWWUudj0rWWUuZlswXSxkZWxl''@;'; put 'put ''dGUgWWUuZik6KFllLm1pbj1pc05hTigrWWUuZlswXSk/WWUuZlswXTorWWUuZlswXSxZZS5tYXg9aXNOYU4oK1llLmZbMV0pP1llLmZbMV06K1llLmZbMV0sZGVsZXRlIFllLmYpfWJyZWFrO2Nhc2UiZXhwcmVzc2lvbiI6WWUudD0iZm9ybXVsYSIsWWUuZj1ZZS5mWzBdO2JyZWFrO2Nhc2Ui''@;'; put 'put ''Y29udGFpbnNUZXh0IjpjYXNlIm5vdENvbnRhaW5zVGV4dCI6Y2FzZSJiZWdpbnNXaXRoIjpjYXNlImVuZHNXaXRoIjppZihZZS50PSJ0ZXh0IixZZS5vcD1MX1tVdC50eXBlXSxudWxsPT1VdC50ZXh0JiZZZS5mLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcigiQ0YgVGV4dCBSdWxlICIrWWUu''@;'; put 'put ''b3ArIiBtaXNzaW5nIHRleHQiKTtZZS52PW51bGwhPVV0LnRleHQ/VXQudGV4dDpZZS5mWzFdLm1hdGNoKC8iLioiLyk/WWUuZlsxXS5zbGljZSgxLC0xKTpZZS5mWzFdLFllLmY9WWUuZlswXSxudWxsPT1ZZS5mJiZkZWxldGUgWWUuZjticmVhaztjYXNlImNvbG9yU2NhbGUiOmlmKFllLnQ9''@;'; put 'put ''InNjYWxlIiwhWWUuY29sb3JTY2FsZSl0aHJvdyBuZXcgRXJyb3IoIm1pc3NpbmcgY29sb3JTY2FsZSIpO1llLmNtaW49T18oKFJ0PVllLmNvbG9yU2NhbGUpLmNmdm9zWzBdLFJ0LmNvbG9yc1swXSx4ZSx3ZSksMz09UnQuY2Z2b3MubGVuZ3RoJiYoWWUuY21pZD1PXyhSdC5jZnZvc1sxXSxS''@;'; put 'put ''dC5jb2xvcnNbMV0seGUsd2UpKSxZZS5jbWF4PU9fKFJ0LmNmdm9zW1J0LmNmdm9zLmxlbmd0aC0xXSxSdC5jb2xvcnNbUnQuY2Z2b3MubGVuZ3RoLTFdLHhlLHdlKTticmVhaztjYXNlImRhdGFCYXIiOmlmKFllLnQ9ImJhciIsIVllLmRhdGFCYXIpdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5n''@;'; put 'put ''IGRhdGFCYXIiKTsoUnQ9WWUuZGF0YUJhcikuY29sb3JzWzBdJiYoWWUuY29sb3I9RTMoUnQuY29sb3JzWzBdLHhlLHdlKSksWWUuY21pbj1IbShSdC5jZnZvc1swXSksWWUuY21heD1IbShSdC5jZnZvc1sxXSk7YnJlYWs7Y2FzZSJpY29uU2V0IjppZihZZS50PSJpY29uIiwhWWUuaWNvblNl''@;'; put 'put ''dCl0aHJvdyBuZXcgRXJyb3IoIm1pc3NpbmcgaWNvblNldCIpO1llLnRocmVzaD0oUnQ9WWUuaWNvblNldCkuY2Z2b3MubWFwKGZ1bmN0aW9uKE9uKXtyZXR1cm4gSG0oT24pfSksWWUudj1SdC50YWcmJlJ0LnRhZy5pY29uU2V0fHwiM1RyYWZmaWNMaWdodHMxIixZZS5yZXY9RGkoUnQudGFn''@;'; put 'put ''LnJldmVyc2V8fCJmYWxzZSIpLFllLnBjdD1EaShSdC50YWcucGVyY2VudHx8InRydWUiKSxZZS5oaWRkZW49IURpKFJ0LnRhZy5zaG93VmFsdWV8fCJ0cnVlIik7YnJlYWs7Y2FzZSJ0aW1lUGVyaW9kIjpZZS50PSJkYXRlIixZZS5vcD1GbVtVdC50aW1lUGVyaW9kXTticmVhaztjYXNlImFi''@;'; put 'put ''b3ZlQXZlcmFnZSI6WWUudD0iYXZnIixZZS5vcD0iMCI9PVV0LmFib3ZlQXZlcmFnZT8iTCI6IkciLFllLm9wKz1VdC5zdGREZXY/VXQuc3RkRGV2OkRpKFV0LmVxdWFsQXZlcmFnZXx8IjAiKT8iRSI6IlQiO2JyZWFrO2Nhc2UidG9wMTAiOlllLnQ9InJhbmsiLFllLm9wPShEaShVdC5ib3R0''@;'; put 'put ''b218fCIwIik/IkIiOiJUIikrKERpKFV0LnBlcmNlbnR8fCIwIik/IlAiOiJWIiksWWUudj0rVXQucmFuazticmVhaztkZWZhdWx0OnRocm93IlVuc3VwcG9ydGVkIENGIFR5cGUgIitVdC50eXBlfWlmKGRlbGV0ZSBZZS5jb2xvclNjYWxlLGRlbGV0ZSBZZS5kYXRhQmFyLGRlbGV0ZSBZZS5p''@;'; put 'put ''Y29uU2V0LCFZZS50KXRocm93IGNvbnNvbGUubG9nKEguc2xpY2UoeHQsUG4renQubGVuZ3RoKSksImJhZCBDRiBydWxlIjtudWxsIT1ZZS5mJiYhWWUuZi5sZW5ndGgmJmRlbGV0ZSBZZS5mLFllLmRlbHx8amUucHVzaChZZSk7YnJlYWs7Y2FzZSI8Zm9ybXVsYSI6Y2FzZSI8Zm9ybXVsYT4i''@;'; put 'put ''Ok10PVBuK3p0Lmxlbmd0aDticmVhaztjYXNlIjwvZm9ybXVsYT4iOlllLmYucHVzaChncihILnNsaWNlKE10LFBuKSkpO2JyZWFrO2Nhc2UiPGYiOmNhc2UiPGY+IjpNdD1Qbit6dC5sZW5ndGg7YnJlYWs7Y2FzZSI8L2Y+IjpZZS5mLnB1c2goZ3IoSC5zbGljZShNdCxQbikpKTticmVhaztj''@;'; put 'put ''YXNlIjxzcXJlZj4iOkNuPVBuK3p0Lmxlbmd0aDticmVhaztjYXNlIjwvc3FyZWY+IjpEdD1ILnNsaWNlKENuLFBuKSxpZT1EdD9EdC5pbmRleE9mKCIgIik+LTE/RHQ6Rm8oRHQpOiIiLFllLnJlZj1pZSxqZS5mb3JFYWNoKGZ1bmN0aW9uKE9uKXtPbi5yZWY9aWV9KTticmVhaztjYXNlIjxj''@;'; put 'put ''b2xvclNjYWxlIjpjYXNlIjxjb2xvclNjYWxlPiI6Y2FzZSI8ZGF0YUJhciI6Y2FzZSI8ZGF0YUJhcj4iOmNhc2UiPGljb25TZXQiOmNhc2UiPGljb25TZXQ+IjpSdD17Y2Z2b3M6W10sY29sb3JzOltdLHRhZzpUbn0sTXQ9UG4renQubGVuZ3RoO2JyZWFrO2Nhc2UiPC9jb2xvclNjYWxlPiI6''@;'; put 'put ''WWUuY29sb3JTY2FsZT1SdDticmVhaztjYXNlIjwvZGF0YUJhcj4iOlllLmRhdGFCYXI9UnQ7YnJlYWs7Y2FzZSI8L2ljb25TZXQ+IjpZZS5pY29uU2V0PVJ0O2JyZWFrO2Nhc2UiPGNmdm8iOmNhc2UiPGNmdm8vPiI6UnQuY2Z2b3MucHVzaChUbik7YnJlYWs7Y2FzZSI8L2Nmdm8+IjpicmVh''@;'; put 'put ''aztjYXNlIjxjb2xvciI6UnQuY29sb3JzLnB1c2goVG4pO2JyZWFrO2Nhc2UiPC9jb2xvcj4iOmNhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPGV4dCI6WmU9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOlplPSExO2JyZWFrO2Nhc2UiPG5lZ2F0''@;'; put 'put ''aXZlRmlsbENvbG9yIjpjYXNlIjxheGlzQ29sb3IiOmNhc2UiPGJvcmRlckNvbG9yIjpjYXNlIjxuZWdhdGl2ZUJvcmRlckNvbG9yIjpjYXNlIjxjZkljb24iOlllLmRlbD0hMDticmVhaztjYXNlIjxkeGY+IjpaZT0hMCxubj1QbjticmVhaztjYXNlIjwvZHhmPiI6WmU9ITEsWWUucz1wNihI''@;'; put 'put ''LnNsaWNlKG5uLFBuK3p0Lmxlbmd0aCkseGUsd2UsWCk7YnJlYWs7ZGVmYXVsdDppZihYJiZYLldURil7aWYoRmUpYnJlYWs7aWYoIVplKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrVG5bMF0rIiBpbiBjb25kZm10Iil9fXJldHVybiB6dH0pLGplfShILEZlLGllLFgsd2UseGUp''@;'; put 'put ''fXZhciB2eD0vPCg/Olx3Oik/c2hlZXRWaWV3KD86W14+YS16XVtePl0qKT9cLz8+L2c7ZnVuY3Rpb24gRG8oSCxpZSl7dmFyIFg9MCx3ZT0wLHhlPTAsRmU9MDtpZighaWV8fCFpZS5DZWxsWGYpcmV0dXJuIG51bGw7dmFyIFplPWllLkNlbGxYZltIXTtudWxsIT1aZSYmKG51bGwhPVplLm51''@;'; put 'put ''bUZtdElkJiYoWD1aZS5udW1GbXRJZCksbnVsbCE9WmUuZmlsbElkJiYod2U9WmUuZmlsbElkKSxudWxsIT1aZS5mb250SWQmJih4ZT1aZS5mb250SWQpLG51bGwhPVplLmJvcmRlcklkJiYoRmU9WmUuYm9yZGVySWQpKTt2YXIgamU9e3Q6InoifTt0cnl7ZDUoamUsWCx3ZSx4ZSxGZSx7V1RG''@;'; put 'put ''OjEsY2VsbFN0eWxlczohMH0sMCxpZSl9Y2F0Y2goWWUpe31yZXR1cm4gamUuc31mdW5jdGlvbiBYQihILGllLFgsd2Upe2lmKHZvaWQgMD09PUgudiYmdm9pZCAwPT09SC5mJiZudWxsPT1ILnMmJiFILmN8fCJ6Ij09PUgudCYmIUguYyYmIXdlLnNoZWV0U3R1YnMpcmV0dXJuIiI7dmFyIHhl''@;'; put 'put ''PSIiLEZlPUgudCxaZT1ILnY7aWYoInoiIT09SC50KXN3aXRjaChILnQpe2Nhc2UiYiI6eGU9SC52PyIxIjoiMCI7YnJlYWs7Y2FzZSJuIjp4ZT0iIitILnY7YnJlYWs7Y2FzZSJlIjp4ZT1OMVtILnZdO2JyZWFrO2Nhc2UiZCI6d2UmJndlLmNlbGxEYXRlcz94ZT1kbihILnYsLTEpLnRvSVNP''@;'; put 'put ''U3RyaW5nKCk6KChIPWxuKEgpKS50PSJuIix4ZT0iIisoSC52PWZ0KGRuKEgudikpKSksdm9pZCAwPT09SC56JiYoSC56PUYuX3RhYmxlWzE0XSk7YnJlYWs7ZGVmYXVsdDp4ZT1ILnZ9dmFyIGplPSJ6Ij09SC50PyIiOnNhKCJ2IixScih4ZSkpLFllPXtyOmllfSxNdD13ZT9ZMSh3ZS5jZWxs''@;'; put 'put ''WGZzLHdlLmNlbGxTdHlsZVhmcyxILHdlKTowO3N3aXRjaCgwIT09TXQmJihZZS5zPU10KSxILnQpe2Nhc2UibiI6Y2FzZSJ6IjpicmVhaztjYXNlImQiOlllLnQ9ImQiO2JyZWFrO2Nhc2UiYiI6WWUudD0iYiI7YnJlYWs7Y2FzZSJlIjpZZS50PSJlIjticmVhaztkZWZhdWx0OmlmKG51bGw9''@;'; put 'put ''PUgudil7ZGVsZXRlIEgudDticmVha31pZih3ZSYmd2UuYm9va1NTVCl7amU9c2EoInYiLCIiK0M2KHdlLlN0cmluZ3MsSC52LEguUj9ILnI9dTYoSC5SKTpudWxsLHdlLnJldlN0cmluZ3MpKSxZZS50PSJzIjticmVha31BcnJheS5pc0FycmF5KEguUik/KGplPSI8aXM+Iit1NihILlIpKyI8''@;'; put 'put ''L2lzPiIsWWUudD0iaW5saW5lU3RyIik6WWUudD0ic3RyIn1pZihILnQhPUZlJiYoSC50PUZlLEgudj1aZSksSC5mKXt2YXIgeHQ9SC5GJiZILkYuc2xpY2UoMCxpZS5sZW5ndGgpPT1pZT97dDoiYXJyYXkiLHJlZjpILkZ9Om51bGw7amU9X2koImYiLFJyKEguZikseHQpKyhudWxsIT1ILnY/''@;'; put 'put ''amU6IiIpfXJldHVybiBILmwmJlhbIiFsaW5rcyJdLnB1c2goW2llLEgubF0pLEguYyYmWFsiIWNvbW1lbnRzIl0ucHVzaChbaWUsSC5jXSksX2koImMiLGplLFllKX12YXIgUl89ZnVuY3Rpb24oKXt2YXIgSD0vPCg/Olx3KzopP2NbIFwvPl0vLGllPS88XC8oPzpcdys6KT9yb3c+LyxYPS9y''@;'; put 'put ''PVsiJ10oW14iJ10qKVsiJ10vLHdlPS88KD86XHcrOik/aXM+KFtcU1xzXSo/KTxcLyg/Olx3KzopP2lzPi8seGU9L3JlZj1bIiddKFteIiddKilbIiddLyxGZT1RaSgidiIpLFplPVFpKCJmIik7cmV0dXJuIGZ1bmN0aW9uKFllLE10LHh0LFJ0LFV0LG5uLENuKXtmb3IodmFyIHlyLGFyLHFy''@;'; put 'put ''LG9pLEEwLER0PTAsenQ9IiIsUG49W10sVG49W10sT249MCxZbj0wLE1yPTAsYWk9IiIsR3I9MCx6cj0wLGNyPTAsZGk9MCx2MD0wLFVpPTAsdG89QXJyYXkuaXNBcnJheShDbi5DZWxsWGYpLGJpPVtdLFlyPVtdLEVpPUFycmF5LmlzQXJyYXkoeHQpLGhpPVtdLE5yPXt9LGtpPSExLE4wPVll''@;'; put 'put ''LnNwbGl0KGllKSx0MD0hIVJ0LnNoZWV0U3R1YnMsaW89ISFSdC5jZWxsSFRNTCxvYT0hKCExPT09UnQuY2VsbFRleHQmJiFSdC5jZWxsTkYmJiFSdC5jZWxsU3R5bGVzKSwkMD0wLFZhPU4wLmxlbmd0aDskMCE9VmE7KyskMCl7dmFyIGpvPSh6dD1OMFskMF0udHJpbSgpKS5sZW5ndGg7aWYo''@;'; put 'put ''MCE9PWpvKXt2YXIgd2E9MDtlOmZvcihEdD0wO0R0PGpvOysrRHQpc3dpdGNoKHp0W0R0XSl7Y2FzZSI+IjppZigiLyIhPXp0W0R0LTFdKXsrK0R0O2JyZWFrIGV9UnQuY2VsbFN0eWxlcyYmbnVsbCE9KGFyPWVuKHp0LnNsaWNlKHdhLER0KSwhMCkpLnImJnBhcnNlSW50KGFyLnIsMTApJiYo''@;'; put 'put ''R3I9cGFyc2VJbnQoYXIuciwxMCksTnI9e30sa2k9ITEsYXIuaHQmJihraT0hMCxOci5ocHQ9cGFyc2VGbG9hdChhci5odCksTnIuaHB4PUFmKE5yLmhwdCkpLGFyLmR5RGVzY2VudCYmKGtpPSEwLE5yLmR5RGVzY2VudD1hci5keURlc2NlbnQpLCIxIj09YXIuaGlkZGVuJiYoa2k9ITAsTnIu''@;'; put 'put ''aGlkZGVuPSEwKSxudWxsIT1hci5vdXRsaW5lTGV2ZWwmJihraT0hMCxOci5sZXZlbD0rYXIub3V0bGluZUxldmVsKSxhci5zJiZDbiYmQ24uQ2VsbFhmJiYoa2k9ITAsTnIucz1Ebyhhci5zLENuKSksa2kmJihoaVtHci0xXT1OcikpO2JyZWFrO2Nhc2UiPCI6d2E9RHR9aWYod2E+PUR0KWJy''@;'; put 'put ''ZWFrO2lmKEdyPW51bGwhPShhcj1lbih6dC5zbGljZSh3YSxEdCksITApKS5yP3BhcnNlSW50KGFyLnIsMTApOkdyKzEsenI9LTEsIShSdC5zaGVldFJvd3MmJlJ0LnNoZWV0Um93czxHcikpe1J0Lm5vZGltfHwoVXQucy5yPkdyLTEmJihVdC5zLnI9R3ItMSksVXQuZS5yPEdyLTEmJihVdC5l''@;'; put 'put ''LnI9R3ItMSkpO3ZhciBhbz17dDoicm93Iixyb3c6W10sUjpHci0xLGlkeDpNdH07UnQuY2VsbFN0eWxlcyYmKE5yPXt9LGtpPSExLGFyLmh0JiYoa2k9ITAsTnIuaHB0PXBhcnNlRmxvYXQoYXIuaHQpLE5yLmhweD1BZihOci5ocHQpKSxhci5keURlc2NlbnQmJihraT0hMCxOci5keURlc2Nl''@;'; put 'put ''bnQ9YXIuZHlEZXNjZW50KSwiMSI9PWFyLmhpZGRlbiYmKGtpPSEwLE5yLmhpZGRlbj0hMCksbnVsbCE9YXIub3V0bGluZUxldmVsJiYoa2k9ITAsTnIubGV2ZWw9K2FyLm91dGxpbmVMZXZlbCksYXIucyYmKGtpPSEwLE5yLnM9RG8oYXIucyxDbikpLGtpJiYoUnQuY2FsbGJhY2s/YW8ucHJv''@;'; put 'put ''cHM9TnI6aGlbR3ItMV09TnIpKSxQbj16dC5zbGljZShEdCkuc3BsaXQoSCk7Zm9yKHZhciB4MD0wO3gwIT1Qbi5sZW5ndGgmJiI8Ij09UG5beDBdLnRyaW0oKS5jaGFyQXQoMCk7Kyt4MCk7Zm9yKFBuPVBuLnNsaWNlKHgwKSxEdD0wO0R0IT1Qbi5sZW5ndGg7KytEdClpZigwIT09KHp0PVBu''@;'; put 'put ''W0R0XS50cmltKCkpLmxlbmd0aCl7aWYoVG49enQubWF0Y2goWCksT249RHQsWW49MCxNcj0wLHp0PSI8YyAiKygiPCI9PXp0LnNsaWNlKDAsMSk/Ij4iOiIiKSt6dCxudWxsIT1UbiYmMj09PVRuLmxlbmd0aCl7Zm9yKE9uPTAsYWk9VG5bMV0sWW49MDtZbiE9YWkubGVuZ3RoJiYhKChNcj1h''@;'; put 'put ''aS5jaGFyQ29kZUF0KFluKS02NCk8MXx8TXI+MjYpOysrWW4pT249MjYqT24rTXI7enI9LS1Pbn1lbHNlKyt6cjtmb3IoWW49MDtZbiE9enQubGVuZ3RoJiY2MiE9PXp0LmNoYXJDb2RlQXQoWW4pOysrWW4pO2lmKCsrWW4sKGFyPWVuKHp0LnNsaWNlKDAsWW4pLCEwKSkucnx8KGFyLnI9WTAo''@;'; put 'put ''e3I6R3ItMSxjOnpyfSkpLHlyPXt0OiIifSxudWxsIT0oVG49KGFpPXp0LnNsaWNlKFluKSkubWF0Y2goRmUpKSYmIiIhPT1UblsxXSYmKHlyLnY9Z3IoVG5bMV0pKSxSdC5jZWxsRm9ybXVsYSl7aWYobnVsbCE9KFRuPWFpLm1hdGNoKFplKSkmJiIiIT09VG5bMV0pe2lmKHlyLmY9Z3IoVzAo''@;'; put 'put ''VG5bMV0pKS5yZXBsYWNlKC9cclxuL2csIlxuIiksUnQueGxmbnx8KHlyLmY9WGIoeXIuZikpLFRuWzBdLmluZGV4T2YoJ3Q9ImFycmF5IicpPi0xKXlyLkY9KGFpLm1hdGNoKHhlKXx8W10pWzFdLHlyLkYuaW5kZXhPZigiOiIpPi0xJiZiaS5wdXNoKFtGbyh5ci5GKSx5ci5GXSk7ZWxzZSBp''@;'; put 'put ''ZihUblswXS5pbmRleE9mKCd0PSJzaGFyZWQiJyk+LTEpe29pPWVuKFRuWzBdKTt2YXIgaDA9Z3IoVzAoVG5bMV0pKTtSdC54bGZufHwoaDA9WGIoaDApKSxZcltwYXJzZUludChvaS5zaSwxMCldPVtvaSxoMCxhci5yXX19ZWxzZShUbj1haS5tYXRjaCgvPGZbXj5dKlwvPi8pKSYmWXJbKG9p''@;'; put 'put ''PWVuKFRuWzBdKSkuc2ldJiYoeXIuZj1WNChZcltvaS5zaV1bMV0sWXJbb2kuc2ldWzJdLGFyLnIpKTt2YXIganI9dWwoYXIucik7Zm9yKFluPTA7WW48YmkubGVuZ3RoOysrWW4panIucj49YmlbWW5dWzBdLnMuciYmanIucjw9YmlbWW5dWzBdLmUuciYmanIuYz49YmlbWW5dWzBdLnMuYyYm''@;'; put 'put ''anIuYzw9YmlbWW5dWzBdLmUuYyYmKHlyLkY9YmlbWW5dWzFdKX1pZihudWxsPT1hci50JiZ2b2lkIDA9PT15ci52KWlmKHlyLmZ8fHlyLkYpeXIudj0wLHlyLnQ9Im4iO2Vsc2V7aWYoIXQwKWNvbnRpbnVlO3lyLnQ9InoifWVsc2UgeXIudD1hci50fHwibiI7c3dpdGNoKFV0LnMuYz56ciYm''@;'; put 'put ''KFV0LnMuYz16ciksVXQuZS5jPHpyJiYoVXQuZS5jPXpyKSx5ci50KXtjYXNlIm4iOmlmKCIiPT15ci52fHxudWxsPT15ci52KXtpZighdDApY29udGludWU7eXIudD0ieiJ9ZWxzZSB5ci52PXBhcnNlRmxvYXQoeXIudik7YnJlYWs7Y2FzZSJzIjppZih2b2lkIDA9PT15ci52KXtpZighdDAp''@;'; put 'put ''Y29udGludWU7eXIudD0ieiJ9ZWxzZSBxcj1PZFtwYXJzZUludCh5ci52LDEwKV0seXIudj1xci50LHlyLnI9cXIucixxci5SJiYoeXIuUj1xci5SKSxpbyYmKHlyLmg9cXIuaCk7YnJlYWs7Y2FzZSJzdHIiOnlyLnQ9InMiLHlyLnY9bnVsbCE9eXIudj9XMCh5ci52KToiIixpbyYmKHlyLmg9''@;'; put 'put ''bjAoeXIudikpO2JyZWFrO2Nhc2UiaW5saW5lU3RyIjpUbj1haS5tYXRjaCh3ZSkseXIudD0icyIsbnVsbCE9VG4mJihxcj0kdShUblsxXSkpPyh5ci52PXFyLnQscXIuUiYmKHlyLlI9cXIuUiksaW8mJih5ci5oPXFyLmgpKTp5ci52PSIiO2JyZWFrO2Nhc2UiYiI6eXIudj1EaSh5ci52KTti''@;'; put 'put ''cmVhaztjYXNlImQiOlJ0LmNlbGxEYXRlcz95ci52PWRuKHlyLnYsMSk6KHlyLnY9ZnQoZG4oeXIudiwxKSkseXIudD0ibiIpO2JyZWFrO2Nhc2UiZSI6ITEhPT1SdC5jZWxsVGV4dCYmKHlyLnc9eXIudikseXIudj1faFt5ci52XX1pZihvYSl7Y3I9ZGk9djA9VWk9MCxBMD1udWxsLHRvJiZ2''@;'; put 'put ''b2lkIDAhPT1hci5zJiZudWxsIT0oQTA9Q24uQ2VsbFhmW2FyLnNdKSYmKG51bGwhPUEwLm51bUZtdElkJiYoY3I9QTAubnVtRm10SWQpLFJ0LmNlbGxTdHlsZXMmJihudWxsIT1BMC5maWxsSWQmJihkaT1BMC5maWxsSWQpLG51bGwhPUEwLmZvbnRJZCYmKHYwPUEwLmZvbnRJZCksbnVsbCE9''@;'; put 'put ''QTAuYm9yZGVySWQmJihVaT1BMC5ib3JkZXJJZCkpKTt0cnl7ZDUoeXIsY3IsZGksdjAsVWksUnQsMCxDbil9Y2F0Y2godm8pe31SdC5jZWxsU3R5bGVzJiZ5ci5zJiYoQTAmJkEwLmFsaWdubWVudCYmKHlyLnMuYWxpZ25tZW50PWxuKEEwLmFsaWdubWVudCkpLEEwJiZBMC5wcm90ZWN0aW9u''@;'; put 'put ''JiYobnVsbCE9QTAucHJvdGVjdGlvbi5oaWRkZW4mJih5ci5zLmhpZGRlbj1BMC5wcm90ZWN0aW9uLmhpZGRlbiksbnVsbCE9QTAucHJvdGVjdGlvbi5lZGl0YWJsZSYmKHlyLnMuZWRpdGFibGU9QTAucHJvdGVjdGlvbi5lZGl0YWJsZSkpLEEwJiZBMC5zdHlsZSYmKHlyLnMuc3R5bGU9QTAu''@;'; put 'put ''c3R5bGUpKSxSdC5jZWxsRGF0ZXMmJnRvJiYibiI9PXlyLnQmJkYuaXNfZGF0ZShGLl90YWJsZVtjcl0pJiYoeXIudD0iZCIseXIudj1IdCh5ci52KSl9dmFyIEhpO1J0Lm5vZGltJiYoSGk9dWwoYXIuciksVXQucy5yPkhpLnImJihVdC5zLnI9SGkuciksVXQuZS5yPEhpLnImJihVdC5lLnI9''@;'; put 'put ''SGkucikpLFJ0LmNhbGxiYWNrPyhIaT11bChhci5yKSxhby5yb3dbSGkuY109eXIpOkVpPyh4dFsoSGk9dWwoYXIucikpLnJdfHwoeHRbSGkucl09W10pLHh0W0hpLnJdW0hpLmNdPXlyKTp4dFthci5yXT15cn1SdC5jYWxsYmFjayYmUnQuY2FsbGJhY2soYW8pfX19dDAmJiFSdC5jYWxsYmFj''@;'; put 'put ''ayYmRG8oMCxDbiksaGkubGVuZ3RoPjAmJih4dFsiIXJvd3MiXT1oaSl9fSgpLEtCPV9pKCJ3b3Jrc2hlZXQiLG51bGwse3htbG5zOlgwLm1haW5bMF0sInhtbG5zOnIiOlgwLnIsInhtbG5zOngxNGFjIjoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRt''@;'; put 'put ''bC8yMDA5LzkvYWMiLCJ4bWxuczptYyI6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2IiwibWM6SWdub3JhYmxlIjoieDE0YWMifSk7ZnVuY3Rpb24gJEIoSCxpZSxYLHdlKXt2YXIgWmUseGU9W2NuLEtCXSxqZT0iIixZZT1YLlNo''@;'; put 'put ''ZWV0c1tYLlNoZWV0TmFtZXNbSF1dO251bGw9PVllJiYoWWU9e30pO3ZhciBNdD1ZZVsiIXJlZiJdfHwiQTEiLHh0PUZvKE10KTtpZih4dC5lLmM+MTYzODN8fHh0LmUucj4xMDQ4NTc1KXtpZihpZS5XVEYpdGhyb3cgbmV3IEVycm9yKCJSYW5nZSAiK010KyIgZXhjZWVkcyBmb3JtYXQgbGlt''@;'; put 'put ''aXQgQTE6WEZEMTA0ODU3NiIpO3h0LmUuYz1NYXRoLm1pbih4dC5lLmMsMTYzODMpLHh0LmUucj1NYXRoLm1pbih4dC5lLmMsMTA0ODU3NSksTXQ9ZmEoeHQpfXdlfHwod2U9e30pLFllWyIhY29tbWVudHMiXT1bXTt2YXIgUnQ9W10sVXQ9WWVbIiFwcmludCJdO2lmKGZ1bmN0aW9uIHZsKEgs''@;'; put 'put ''aWUsWCx3ZSx4ZSl7dmFyIEZlPSExLFplPXt9LGplPW51bGw7aWYoInhsc3giIT09d2UuYm9va1R5cGUmJmllLnZiYXJhdyl7dmFyIFllPWllLlNoZWV0TmFtZXNbWF07dHJ5e2llLldvcmtib29rJiYoWWU9aWUuV29ya2Jvb2suU2hlZXRzW1hdLkNvZGVOYW1lfHxZZSl9Y2F0Y2goVXQpe31G''@;'; put 'put ''ZT0hMCxaZS5jb2RlTmFtZT1ScihZZSl9SCYmSFsiIWNvbmRmbXQiXSYmKFplLmVuYWJsZUZvcm1hdENvbmRpdGlvbnNDYWxjdWxhdGlvbj0iMSIpLEgmJkhbIiF0YWJjb2xvciJdJiYoamU9KGplfHwiIikrJzx0YWJDb2xvciByZ2I9IkZGJytMbyhIWyIhdGFiY29sb3IiXS5yZ2IpKyciLz4n''@;'; put 'put ''KTt2YXIgTXQ9ITEseHQ9e307aWYoKCgoSHx8e30pWyIhcHJpbnQiXXx8e30pLnByb3BzfHx7fSkuZml0JiYoTXQ9ITAseHQuZml0VG9QYWdlPTEpLE10JiYoamU9KGplfHwiIikrX2koInBhZ2VTZXRVcFByIixudWxsLHh0KSksSCYmSFsiIW91dGxpbmUiXSl7dmFyIFJ0PXtzdW1tYXJ5QmVs''@;'; put 'put ''b3c6MSxzdW1tYXJ5UmlnaHQ6MX07SFsiIW91dGxpbmUiXS5hYm92ZSYmKFJ0LnN1bW1hcnlCZWxvdz0wKSxIWyIhb3V0bGluZSJdLmxlZnQmJihSdC5zdW1tYXJ5UmlnaHQ9MCksamU9KGplfHwiIikrX2koIm91dGxpbmVQciIsbnVsbCxSdCl9IUZlJiYhamV8fCh4ZVt4ZS5sZW5ndGhdPV9p''@;'; put 'put ''KCJzaGVldFByIixqZSxaZSkpfShZZSxYLEgsaWUseGUpLHhlW3hlLmxlbmd0aF09X2koImRpbWVuc2lvbiIsbnVsbCx7cmVmOk10fSkseGVbeGUubGVuZ3RoXT1mdW5jdGlvbiBBeChILGllLFgsd2Upe3ZhciB4ZT17d29ya2Jvb2tWaWV3SWQ6IjAifTtpZigoKCh3ZXx8e30pLldvcmtib29r''@;'; put 'put ''fHx7fSkuVmlld3N8fFtdKS5sZW5ndGgpe3ZhciBGZT13ZS5Xb3JrYm9vay5WaWV3cyxaZT1GZVtYXXx8RmVbMF07eGUucmlnaHRUb0xlZnQ9WmUuUlRMPyIxIjoiMCIsWmUuem9vbSYmKHhlLnpvb21TY2FsZT1aZS56b29tKSxudWxsIT1aZS5ncmlkJiYoeGUuc2hvd0dyaWRMaW5lcz1aZS5n''@;'; put 'put ''cmlkKSxaZS52aWV3JiYoeGUudmlldz1aZS52aWV3KX1udWxsIT1IWyIhZ3JpZGxpbmVzIl0mJih4ZS5zaG93R3JpZExpbmVzPSEhSFsiIWdyaWRsaW5lcyJdKTt2YXIgamU9IiIsWWU9e3I6MCxjOjB9O2lmKEhbIiFzZWwiXSl7aWYoIShZZT1IWyIhc2VsIl0uY2VsbCkpe2lmKCFIWyIhc2Vs''@;'; put 'put ''Il0ucmFuZ2UpdGhyb3cgbmV3IEVycm9yKCJNdXN0IHNwZWNpZnkgYSBzZWxlY3Rpb24gY2VsbCBvciByYW5nZSIpO1llPUFzKEhbIiFzZWwiXS5yYW5nZS5yZXBsYWNlKC9ccy4qJC8sIiIpKS5zfSJzdHJpbmciPT10eXBlb2YgWWUmJihZZT11bChZZSkpfXZhciB4dD1IWyIhZnJlZXplIl0/''@;'; put 'put ''InN0cmluZyI9PXR5cGVvZiBIWyIhZnJlZXplIl0/dWwoSFsiIWZyZWV6ZSJdKTpIWyIhZnJlZXplIl06e2M6MCxyOjB9O2lmKEhbIiFmcmVlemUiXSl7dmFyIFJ0PVkwKHh0KSxVdD17c3RhdGU6ImZyb3plbiIseFNwbGl0Onh0LmMseVNwbGl0Onh0LnIsdG9wTGVmdENlbGw6UnR9O0hbIiFz''@;'; put 'put ''ZWwiXSYmKFV0LmFjdGl2ZVBhbmU9KFllLnI+PXh0LnImJnh0LnI+MD8iYm90dG9tIjoidG9wIikrKFllLmM+PXh0LmMmJnh0LmM+MD8iUmlnaHQiOiJMZWZ0IikpLGplPV9pKCJwYW5lIixudWxsLFV0KX1pZihIWyIhc2VsIl0pe3ZhciBubj17YWN0aXZlQ2VsbDoic3RyaW5nIj09dHlwZW9m''@;'; put 'put ''IFllP1llOlkwKFllKX07bm4uc3FyZWY9SFsiIXNlbCJdLnJhbmdlP0hbIiFzZWwiXS5yYW5nZTpubi5hY3RpdmVDZWxsKyI6Iitubi5hY3RpdmVDZWxsLGplKz1faSgic2VsZWN0aW9uIixudWxsLG5uKSxIWyIhZnJlZXplIl0mJih4dC5jPjAmJihubi5wYW5lPSJ0b3BSaWdodCIsamUrPV9p''@;'; put 'put ''KCJzZWxlY3Rpb24iLG51bGwsbm4pKSx4dC5yPjAmJihubi5wYW5lPSJib3R0b21MZWZ0IixqZSs9X2koInNlbGVjdGlvbiIsbnVsbCxubikpLHh0LmM+MCYmeHQucj4wJiYobm4ucGFuZT0iYm90dG9tUmlnaHQiLGplKz1faSgic2VsZWN0aW9uIixudWxsLG5uKSkpfXJldHVybiBfaSgic2hl''@;'; put 'put ''ZXRWaWV3cyIsX2koInNoZWV0VmlldyIsamV8fG51bGwseGUpLHt9KX0oWWUsMCxILFgpLGllLnNoZWV0Rm9ybWF0KXt2YXIgbm49e2RlZmF1bHRSb3dIZWlnaHQ6aWUuc2hlZXRGb3JtYXQuZGVmYXVsdFJvd0hlaWdodHx8IjE2IixiYXNlQ29sV2lkdGg6aWUuc2hlZXRGb3JtYXQuYmFzZUNv''@;'; put 'put ''bFdpZHRofHwiMTAifTtudWxsIT1pZS5zaGVldEZvcm1hdC5vdXRsaW5lTGV2ZWxSb3cmJihubi5vdXRsaW5lTGV2ZWxSb3c9aWUuc2hlZXRGb3JtYXQub3V0bGluZUxldmVsUm93KSx4ZVt4ZS5sZW5ndGhdPV9pKCJzaGVldEZvcm1hdFByIixudWxsLG5uKX1lbHNlIGlmKFllWyIhc2hlZXRG''@;'; put 'put ''b3JtYXQiXSl7dmFyIENuPXt9LER0PSExO1llWyIhc2hlZXRGb3JtYXQiXS5yb3cmJihZZVsiIXNoZWV0Rm9ybWF0Il0ucm93LmhwdD8oRHQ9ITAsQ24uZGVmYXVsdFJvd0hlaWdodD1ZZVsiIXNoZWV0Rm9ybWF0Il0ucm93LmhwdCxDbi5jdXN0b21IZWlnaHQ9MSk6WWVbIiFzaGVldEZvcm1h''@;'; put 'put ''dCJdLnJvdy5ocHg/KER0PSEwLENuLmRlZmF1bHRSb3dIZWlnaHQ9VGgoWWVbIiFzaGVldEZvcm1hdCJdLnJvdy5ocHgpLENuLmN1c3RvbUhlaWdodD0xKTooMD09PVllWyIhc2hlZXRGb3JtYXQiXS5yb3cuaHB0fHwwPT09WWVbIiFzaGVldEZvcm1hdCJdLnJvdy5ocHh8fFllWyIhc2hlZXRG''@;'; put 'put ''b3JtYXQiXS5yb3cuaGlkZGVuKSYmKER0PSEwLENuLmRlZmF1bHRSb3dIZWlnaHQ9Q24uZGVmYXVsdFJvd0hlaWdodHx8MTYsQ24uY3VzdG9tSGVpZ2h0PTEsQ24uemVyb0hlaWdodD0xKSxZZVsiIXNoZWV0Rm9ybWF0Il0uZHlEZXNjZW50JiYoQ25bIngxNGFjOmR5RGVzY2VudCJdPVllWyIh''@;'; put 'put ''c2hlZXRGb3JtYXQiXS5keURlc2NlbnQpKSxZZVsiIXNoZWV0Rm9ybWF0Il0uY29sJiYoWWVbIiFzaGVldEZvcm1hdCJdLmNvbC53Y2h8fHljKFllWyIhc2hlZXRGb3JtYXQiXS5jb2wpLENuLmRlZmF1bHRDb2xXaWR0aD1ZZVsiIXNoZWV0Rm9ybWF0Il0uY29sLndjaCs1L0syfHwwLER0PSEw''@;'; put 'put ''KSxudWxsPT1Dbi5kZWZhdWx0Um93SGVpZ2h0JiYoQ24uZGVmYXVsdFJvd0hlaWdodD0xNiksbnVsbD09Q24uZGVmYXVsdENvbFdpZHRoJiYoQ24uZGVmYXVsdENvbFdpZHRoPTEwKSxDbi5vdXRsaW5lTGV2ZWxSb3c9Q24ub3V0bGluZUxldmVsUm93fHw3LER0JiYoeGVbeGUubGVuZ3RoXT1f''@;'; put 'put ''aSgic2hlZXRGb3JtYXRQciIsbnVsbCxDbikpfW51bGwhPVllWyIhY29scyJdJiZZZVsiIWNvbHMiXS5sZW5ndGg+MCYmKHhlW3hlLmxlbmd0aF09ZnVuY3Rpb24geF8oSCxpZSxYKXtmb3IodmFyIHhlLHdlPVsiPGNvbHM+Il0sRmU9MDtGZSE9aWUubGVuZ3RoOysrRmUpaWYoeGU9aWVbRmVd''@;'; put 'put ''KXtpZih4ZS5hdXRvJiZTNihILHhlLEZlKSx4ZS5zfHx4ZS56KXt2YXIgWmU9e3Q6InoifTtudWxsIT14ZS5zJiYoWmUucz14ZS5zKSxudWxsIT14ZS56JiYoWmUuej14ZS56KSx4ZS5zdHlsZT1ZMShYLmNlbGxYZnMsWC5jZWxsU3R5bGVYZnMsWmUsWCl9d2Vbd2UubGVuZ3RoXT1faSgiY29s''@;'; put 'put ''IixudWxsLGs2KEZlLHhlKSl9cmV0dXJuIHdlW3dlLmxlbmd0aF09IjwvY29scz4iLHdlLmpvaW4oIiIpfShZZSxZZVsiIWNvbHMiXSxpZSkpLHhlW1plPXhlLmxlbmd0aF09IjxzaGVldERhdGEvPiIsWWVbIiFsaW5rcyJdPVtdLG51bGwhPVllWyIhcmVmIl0mJihqZT1mdW5jdGlvbiB5eChI''@;'; put 'put ''LGllLFgsd2Upe3ZhciBZZSx6dCx4ZT1bXSxGZT1bXSxaZT1GbyhIWyIhcmVmIl0pLGplPSIiLE10PSIiLHh0PVtdLFJ0PTAsVXQ9MCxubj1IWyIhcm93cyJdLENuPUFycmF5LmlzQXJyYXkoSCksRHQ9e3I6TXR9LFBuPS0xO2ZvcihVdD1aZS5zLmM7VXQ8PVplLmUuYzsrK1V0KXh0W1V0XT1f''@;'; put 'put ''YShVdCk7Zm9yKFJ0PVplLnMucjtSdDw9WmUuZS5yOysrUnQpe2ZvcihGZT1bXSxNdD1YYShSdCksVXQ9WmUucy5jO1V0PD1aZS5lLmM7KytVdCl7WWU9eHRbVXRdK010O3ZhciBUbj1Dbj8oSFtSdF18fFtdKVtVdF06SFtZZV07dm9pZCAwIT09VG4mJm51bGwhPShqZT1YQihUbixZZSxILGll''@;'; put 'put ''KSkmJkZlLnB1c2goamUpfShGZS5sZW5ndGg+MHx8bm4mJm5uW1J0XSkmJihEdD17cjpNdH0sbm4mJm5uW1J0XSYmKCh6dD1ubltSdF0pLmhpZGRlbiYmKER0LmhpZGRlbj0xKSxQbj0tMSx6dC5ocHg/UG49VGgoenQuaHB4KTp6dC5ocHQmJihQbj16dC5ocHQpLFBuPi0xJiYoRHQuaHQ9UG4s''@;'; put 'put ''RHQuY3VzdG9tSGVpZ2h0PTEpLHp0LmxldmVsJiYoRHQub3V0bGluZUxldmVsPXp0LmxldmVsKSx6dC5keURlc2NlbnQmJihEdFsieDE0YWM6ZHlEZXNjZW50Il09enQuZHlEZXNjZW50KSx6dC5zJiYoRHQucz1ZMShpZS5jZWxsWGZzLGllLmNlbGxTdHlsZVhmcyx7dDoieiIsczp6dC5zfSxp''@;'; put 'put ''ZSksRHQuY3VzdG9tRm9ybWF0PTEpKSx4ZVt4ZS5sZW5ndGhdPV9pKCJyb3ciLEZlLmpvaW4oIiIpLER0KSl9aWYobm4pZm9yKDtSdDxubi5sZW5ndGg7KytSdClubiYmbm5bUnRdJiYoRHQ9e3I6UnQrMX0sKHp0PW5uW1J0XSkuaGlkZGVuJiYoRHQuaGlkZGVuPTEpLFBuPS0xLHp0LmhweD9Q''@;'; put 'put ''bj1UaCh6dC5ocHgpOnp0LmhwdCYmKFBuPXp0LmhwdCksUG4+LTEmJihEdC5odD1QbixEdC5jdXN0b21IZWlnaHQ9MSksenQubGV2ZWwmJihEdC5vdXRsaW5lTGV2ZWw9enQubGV2ZWwpLHhlW3hlLmxlbmd0aF09X2koInJvdyIsIiIsRHQpKTtyZXR1cm4geGUuam9pbigiIil9KFllLGllKSxq''@;'; put 'put ''ZS5sZW5ndGg+MCYmKHhlW3hlLmxlbmd0aF09amUpKSx4ZS5sZW5ndGg+WmUrMSYmKHhlW3hlLmxlbmd0aF09Ijwvc2hlZXREYXRhPiIseGVbWmVdPXhlW1plXS5yZXBsYWNlKCIvPiIsIj4iKSksWWVbIiFwcm90ZWN0Il0mJih4ZVt4ZS5sZW5ndGhdPWZ1bmN0aW9uIEVfKEgpe3ZhciBpZT17''@;'; put 'put ''c2hlZXQ6MX07cmV0dXJuIE1fLmZvckVhY2goZnVuY3Rpb24oWCl7bnVsbCE9SFtYXSYmSFtYXSYmKGllW1hdPSIxIil9KSxnQS5mb3JFYWNoKGZ1bmN0aW9uKFgpe251bGwhPUhbWF0mJiFIW1hdJiYoaWVbWF09IjAiKX0pLEgucGFzc3dvcmQ/aWUucGFzc3dvcmQ9TTkoSC5wYXNzd29yZCku''@;'; put 'put ''dG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk6SC5lbmNyeXB0aW9uJiYoaWUuYWxnb3JpdGhtTmFtZT1ILmVuY3J5cHRpb24uYWxnbyxpZS5oYXNoVmFsdWU9SC5lbmNyeXB0aW9uLmhhc2gsaWUuc2FsdFZhbHVlPUguZW5jcnlwdGlvbi5zYWx0LGllLnNwaW5Db3VudD1ILmVuY3J5cHRpb24u''@;'; put 'put ''c3BpbiksX2koInNoZWV0UHJvdGVjdGlvbiIsbnVsbCxpZSl9KFllWyIhcHJvdGVjdCJdKSksbnVsbCE9WWVbIiFhdXRvZmlsdGVyIl0mJih4ZVt4ZS5sZW5ndGhdPWZ1bmN0aW9uIElfKEgsaWUsWCx3ZSl7dmFyIHhlPSJzdHJpbmciPT10eXBlb2YgSC5yZWY/SC5yZWY6ZmEoSC5yZWYpO1gu''@;'; put 'put ''V29ya2Jvb2t8fChYLldvcmtib29rPXtTaGVldHM6W119KSxYLldvcmtib29rLk5hbWVzfHwoWC5Xb3JrYm9vay5OYW1lcz1bXSk7dmFyIEZlPVguV29ya2Jvb2suTmFtZXMsWmU9QXMoeGUpO1plLnMucj09WmUuZS5yJiYoWmUuZS5yPUFzKGllWyIhcmVmIl0pLmUucix4ZT1mYShaZSkpO2Zv''@;'; put 'put ''cih2YXIgamU9MDtqZTxGZS5sZW5ndGg7KytqZSl7dmFyIFllPUZlW2plXTtpZigiX3hsbm0uX0ZpbHRlckRhdGFiYXNlIj09WWUuTmFtZSYmWWUuU2hlZXQ9PXdlKXtZZS5SZWY9IiciK1guU2hlZXROYW1lc1t3ZV0rIichIit4ZTticmVha319cmV0dXJuIGplPT1GZS5sZW5ndGgmJkZlLnB1''@;'; put 'put ''c2goe05hbWU6Il94bG5tLl9GaWx0ZXJEYXRhYmFzZSIsU2hlZXQ6d2UsUmVmOiInIitYLlNoZWV0TmFtZXNbd2VdKyInISIreGV9KSxfaSgiYXV0b0ZpbHRlciIsbnVsbCx7cmVmOnhlfSl9KFllWyIhYXV0b2ZpbHRlciJdLFllLFgsSCkpLG51bGwhPVllWyIhbWVyZ2VzIl0mJlllWyIhbWVy''@;'; put 'put ''Z2VzIl0ubGVuZ3RoPjAmJih4ZVt4ZS5sZW5ndGhdPWZ1bmN0aW9uIHdfKEgpe2lmKDA9PT1ILmxlbmd0aClyZXR1cm4iIjtmb3IodmFyIGllPSc8bWVyZ2VDZWxscyBjb3VudD0iJytILmxlbmd0aCsnIj4nLFg9MDtYIT1ILmxlbmd0aDsrK1gpaWUrPSc8bWVyZ2VDZWxsIHJlZj0iJytmYShI''@;'; put 'put ''W1hdKSsnIi8+JztyZXR1cm4gaWUrIjwvbWVyZ2VDZWxscz4ifShZZVsiIW1lcmdlcyJdKSksWWVbIiFjb25kZm10Il0mJih4ZVt4ZS5sZW5ndGhdPWZ1bmN0aW9uIG14KEgsaWUpe3JldHVybiBILm1hcChmdW5jdGlvbihYLHdlKXtyZXR1cm4gZnVuY3Rpb24gSkIoSCxpZSxYKXt2YXIgd2U9''@;'; put 'put ''SC5zP3o0KFguRFhGLEgucyk6LTEseGU9InN0cmluZyI9PXR5cGVvZiBILnJlZj9ILnJlZjpmYShILnJlZiksWmU9Rm8oeGUucmVwbGFjZSgvXHMuKiQvLCIiKSkucztaZS5yPDAmJihaZS5yPTApLFplLmM8MCYmKFplLmM9MCk7dmFyIGplPSIiLFllPXtwcmlvcml0eTppZSsxfTtzd2l0Y2go''@;'; put 'put ''d2U+LTEmJihZZS5keGZJZD13ZSksSC50KXtjYXNlInVuaXF1ZSI6WWUudHlwZT0idW5pcXVlVmFsdWVzIjticmVhaztjYXNlImR1cCI6WWUudHlwZT0iZHVwbGljYXRlVmFsdWVzIjticmVhaztjYXNlImJsYW5rIjpZZS50eXBlPShILnY/ImMiOiJub3RDIikrIm9udGFpbnNCbGFua3MiLGpl''@;'; put 'put ''PSI8Zm9ybXVsYT5MRU4oVFJJTSgiK1kwKFplKSsiKSkiKyhILnY/Ij0iOiImZ3Q7IikrIjA8L2Zvcm11bGE+IjticmVhaztjYXNlImVycm9yIjpZZS50eXBlPShILnY/ImMiOiJub3RDIikrIm9udGFpbnNFcnJvcnMiO2JyZWFrO2Nhc2UiZm9ybXVsYSI6WWUudHlwZT0iZXhwcmVzc2lvbiIs''@;'; put 'put ''amU9X2koImZvcm11bGEiLFJyKEguZikse30pO2JyZWFrO2Nhc2UiZGF0ZSI6WWUudHlwZT0idGltZVBlcmlvZCIsWWUudGltZVBlcmlvZD13QVtILm9wXTticmVhaztjYXNlInRleHQiOnN3aXRjaChZZS50eXBlPVllLm9wZXJhdG9yPXlBW0gub3BdLFllLnRleHQ9SC52LEgub3Ape2Nhc2Ui''@;'; put 'put ''SU4iOmplPSc8Zm9ybXVsYT5OT1QoSVNFUlJPUihTRUFSQ0goIicrUnIoSC52KSsnIiwnK1kwKFplKSsiKSkpPC9mb3JtdWxhPiI7YnJlYWs7Y2FzZSJPVCI6amU9Jzxmb3JtdWxhPklTRVJST1IoU0VBUkNIKCInK1JyKEgudikrJyIsJytZMChaZSkrIikpPC9mb3JtdWxhPiI7YnJlYWs7Y2Fz''@;'; put 'put ''ZSJTVCI6amU9Ijxmb3JtdWxhPkxFRlQoIitZMChaZSkrJyxMRU4oIicrUnIoSC52KSsnIikpPSInK1JyKEgudikrJyI8L2Zvcm11bGE+JzticmVhaztjYXNlIk5EIjpqZT0iPGZvcm11bGE+UklHSFQoIitZMChaZSkrJyxMRU4oIicrUnIoSC52KSsnIikpPSInK1JyKEgudikrJyI8L2Zvcm11''@;'; put 'put ''bGE+J31icmVhaztjYXNlInZhbCI6WWUudHlwZT0iY2VsbElzIixZZS5vcGVyYXRvcj1HNFtILm9wXSxqZT1udWxsIT1ILm1pbj9faSgiZm9ybXVsYSIsUnIoU3RyaW5nKEgubWluKSkse30pK19pKCJmb3JtdWxhIixScihTdHJpbmcoSC5tYXgpKSx7fSk6X2koImZvcm11bGEiLFJyKG51bGwh''@;'; put 'put ''PUgudj9TdHJpbmcoInN0cmluZyI9PXR5cGVvZiBILnY/JyInK0gudi5yZXBsYWNlKC8iL2csJyIiJykrJyInOkgudik6SC5mKSx7fSk7YnJlYWs7Y2FzZSJhdmciOnN3aXRjaChZZS50eXBlPSJhYm92ZUF2ZXJhZ2UiLFllLmFib3ZlQXZlcmFnZT0iTCI9PUgub3AuY2hhckF0KDApPyIwIjoi''@;'; put 'put ''MSIsSC5vcC5jaGFyQXQoMSkpe2Nhc2UiVCI6WWUuZXF1YWxBdmVyYWdlPSIwIjticmVhaztjYXNlIkUiOlllLmVxdWFsQXZlcmFnZT0iMSI7YnJlYWs7ZGVmYXVsdDpZZS5zdGREZXY9SC5vcC5jaGFyQXQoMSl9YnJlYWs7Y2FzZSJyYW5rIjpZZS50eXBlPSJ0b3AxMCIsWWUuYm90dG9tPSJC''@;'; put 'put ''Ij09SC5vcC5jaGFyQXQoMCk/IjEiOiIwIixZZS5wZXJjZW50PSJQIj09SC5vcC5jaGFyQXQoMSk/IjEiOiIwIixZZS5yYW5rPUgudjticmVhaztjYXNlImljb24iOlllLnR5cGU9Imljb25TZXQiO3ZhciBNdD17aWNvblNldDpILnYscGVyY2VudDpILnBjdD8idHJ1ZSI6ImZhbHNlIn07SC5y''@;'; put 'put ''ZXYmJihNdC5yZXZlcnNlPSJ0cnVlIiksSC5oaWRkZW4mJihNdC5zaG93VmFsdWU9ImZhbHNlIiksamU9X2koImljb25TZXQiLEgudGhyZXNoLm1hcChCZCkuam9pbigiIiksTXQpO2JyZWFrO2Nhc2Uic2NhbGUiOlllLnR5cGU9ImNvbG9yU2NhbGUiLGplKz1CZChILmNtaW4pLEguY21pZCYm''@;'; put 'put ''KGplKz1CZChILmNtaWQpKSxqZSs9QmQoSC5jbWF4KSxqZSs9WHMoSC5jbWluLmNvbG9yKSxILmNtaWQmJihqZSs9WHMoSC5jbWlkLmNvbG9yKSksamU9X2koImNvbG9yU2NhbGUiLGplKz1YcyhILmNtYXguY29sb3IpLHt9KTticmVhaztjYXNlImJhciI6WWUudHlwZT0iZGF0YUJhciIsamUr''@;'; put 'put ''PUJkKEguY21pbiksamUrPUJkKEguY21heCksamU9X2koImRhdGFCYXIiLGplKz1YcyhILmNvbG9yKSx7fSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBjb25zb2xlLmxvZyhIKSwiQ0YgbWlzc2luZyB0eXBlICIrSC50fXJldHVybic8Y29uZGl0aW9uYWxGb3JtYXR0aW5nIHNxcmVmPSInK3hlKyci''@;'; put 'put ''PicrX2koImNmUnVsZSIsIiI9PWplP251bGw6amUsWWUpKyI8L2NvbmRpdGlvbmFsRm9ybWF0dGluZz4ifShYLHdlLGllKX0pLmpvaW4oIiIpfShZZVsiIWNvbmRmbXQiXSxpZSkpLFllWyIhdmFsaWRhdGlvbnMiXSYmKHhlW3hlLmxlbmd0aF09ZnVuY3Rpb24gRF8oSCl7aWYoIUh8fDA9PUgu''@;'; put 'put ''bGVuZ3RoKXJldHVybiIiO2Zvcih2YXIgaWU9W10sWD0wLHdlPTA7d2U8SC5sZW5ndGg7Kyt3ZSl7dmFyIHhlPUhbd2VdLEZlPVJoW3hlLnRdO2lmKHhlLnJlZiYmKCJzdHJpbmciIT10eXBlb2YgeGUucmVmfHwtMSE9eGUucmVmLmluZGV4T2YoIiAiKXx8KHhlLnJlZj1Gbyh4ZS5yZWYpLHhl''@;'; put 'put ''LnJlZi5zJiYhKHhlLnJlZi5zLmM8MCkpKSl7KytYO3ZhciBaZT17dHlwZTpGZSxhbGxvd0JsYW5rOisoMCE9eGUuYmxhbmspLHNob3dJbnB1dE1lc3NhZ2U6KygwIT14ZS5pbnB1dCksc2hvd0Vycm9yTWVzc2FnZTorKDAhPXhlLmVycm9yKSxzcXJlZjoic3RyaW5nIj09dHlwZW9mIHhlLnJl''@;'; put 'put ''Zj94ZS5yZWY6ZmEoeGUucmVmKX07aWYoeGUuaW5wdXQmJih4ZS5pbnB1dC50aXRsZSYmKFplLnByb21wdFRpdGxlPWxpKHhlLmlucHV0LnRpdGxlKSkseGUuaW5wdXQubWVzc2FnZSYmKFplLnByb21wdD1saSh4ZS5pbnB1dC5tZXNzYWdlKSkpLHhlLmVycm9yJiYoeGUuZXJyb3IudGl0bGUm''@;'; put 'put ''JihaZS5lcnJvclRpdGxlPWxpKHhlLmVycm9yLnRpdGxlKSkseGUuZXJyb3IubWVzc2FnZSYmKFplLmVycm9yPWxpKHhlLmVycm9yLm1lc3NhZ2UpKSx4ZS5lcnJvci5zdHlsZSYmKFplLmVycm9yU3R5bGU9eGUuZXJyb3Iuc3R5bGUpKSwhRmUpdGhyb3cgbmV3IEVycm9yKCJCYWQgdmFsaWRh''@;'; put 'put ''dGlvbjogdW5yZWNvZ25pemVkIHR5cGUgIit4ZS50KTt2YXIgamU9IiI7c3dpdGNoKHhlLnQpe2Nhc2UiQW55IjpicmVhaztjYXNlIkxpc3QiOmNhc2UiQ3VzdG9tIjppZih4ZS5sKXtpZih4ZS5sLmpvaW4oIiwiKS5sZW5ndGg+MjUwKXRocm93IG5ldyBFcnJvcigiRFYgbGVuZ3RoID4gMjUw''@;'; put 'put ''IHRyaWdnZXJzIGNvcnJ1cHRpb24gZXJyb3JzIGluIEV4Y2VsLiAgVXNlIGEgbG9va3VwIHRhYmxlIik7amU9Jzxmb3JtdWxhMT4iJytScih4ZS5sLmpvaW4oIiwiKSkrJyI8L2Zvcm11bGExPid9ZWxzZSBqZT0iPGZvcm11bGExPiIrUnIoeGUuZikrIjwvZm9ybXVsYTE+IjticmVhaztjYXNl''@;'; put 'put ''IkRhdGUiOmNhc2UiVGltZSI6Y2FzZSJEZWNpbWFsIjpjYXNlIkxlbmd0aCI6Y2FzZSJXaG9sZSI6aWYoIUc0W3hlLm9wXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBEYXRhIFZhbGlkYXRpb24gdHlwZSAiK3hlLm9wKyIgZm9yICIreGUudCk7aWYoWmUub3BlcmF0b3I9RzRbeGUub3BdLG51bGwh''@;'; put 'put ''PXhlLnYpamU9Ijxmb3JtdWxhMT4iK1JyKFN0cmluZyh4ZS52IGluc3RhbmNlb2YgRGF0ZT9mdCh4ZS52KTp4ZS52KSkrIjwvZm9ybXVsYTE+IjtlbHNle2lmKG51bGw9PXhlLm1pbnx8bnVsbD09eGUubWF4KXRocm93IG5ldyBFcnJvcigiQmFkIERhdGEgVmFsaWRhdGlvbjogYHZgIG9yIGBt''@;'; put 'put ''aW5gK2BtYXhgIHJlcXVpcmVkIGZvciBUeXBlICIreGUudCk7amU9Ijxmb3JtdWxhMT4iK1JyKFN0cmluZyh4ZS5taW4gaW5zdGFuY2VvZiBEYXRlP2Z0KHhlLm1pbik6eGUubWluKSkrIjwvZm9ybXVsYTE+PGZvcm11bGEyPiIrUnIoU3RyaW5nKHhlLm1heCBpbnN0YW5jZW9mIERhdGU/ZnQo''@;'; put 'put ''eGUubWF4KTp4ZS5tYXgpKSsiPC9mb3JtdWxhMj4ifX1pZS5wdXNoKF9pKCJkYXRhVmFsaWRhdGlvbiIsamV8fG51bGwsWmUpKX19cmV0dXJuIFg+MD8nPGRhdGFWYWxpZGF0aW9ucyBjb3VudD0iJytYKyciPicraWUuam9pbigiIikrIjwvZGF0YVZhbGlkYXRpb25zPiI6IiJ9KFllWyIhdmFs''@;'; put 'put ''aWRhdGlvbnMiXSkpO3ZhciBQbix6dD0tMSxUbj0tMTtpZihZZVsiIWxpbmtzIl0ubGVuZ3RoPjAmJih4ZVt4ZS5sZW5ndGhdPSI8aHlwZXJsaW5rcz4iLFllWyIhbGlua3MiXS5mb3JFYWNoKGZ1bmN0aW9uKHlyKXsheXJbMV0uVGFyZ2V0fHwoUG49e3JlZjp5clswXX0sIiMiIT15clsxXS5U''@;'; put 'put ''YXJnZXQuY2hhckF0KDApJiYoVG49WHQod2UsLTEsUnIoeXJbMV0uVGFyZ2V0KS5yZXBsYWNlKC8jLiokLywiIiksZHQuSExJTkspLFBuWyJyOmlkIl09InJJZCIrVG4pLCh6dD15clsxXS5UYXJnZXQuaW5kZXhPZigiIyIpKT4tMSYmKFBuLmxvY2F0aW9uPVJyKHlyWzFdLlRhcmdldC5zbGlj''@;'; put 'put ''ZSh6dCsxKSkpLHlyWzFdLlRvb2x0aXAmJihQbi50b29sdGlwPVJyKHlyWzFdLlRvb2x0aXApKSx4ZVt4ZS5sZW5ndGhdPV9pKCJoeXBlcmxpbmsiLG51bGwsUG4pKX0pLHhlW3hlLmxlbmd0aF09IjwvaHlwZXJsaW5rcz4iKSxkZWxldGUgWWVbIiFsaW5rcyJdLFV0KXt2YXIgT249ZnVuY3Rp''@;'; put 'put ''b24ga18oSCl7aWYoSC5wcm9wcyl7dmFyIGllPXt9LFg9SC5wcm9wcztyZXR1cm4gWC5ncmlkbGluZXMmJihpZS5ncmlkTGluZXM9aWUuZ3JpZExpbmVzU2V0PTEpLFguaGVhZGluZ3MmJihpZS5oZWFkaW5ncz0xKSxYLmNlbnRlclgmJihpZS5ob3Jpem9udGFsQ2VudGVyZWQ9MSksWC5jZW50''@;'; put 'put ''ZXJZJiYoaWUudmVydGljYWxDZW50ZXJlZD0xKSxfaSgicHJpbnRPcHRpb25zIixudWxsLGllKX1yZXR1cm4iIn0oVXQpO09uLmxlbmd0aCYmKHhlW3hlLmxlbmd0aF09T24pfWlmKChudWxsIT1ZZVsiIW1hcmdpbnMiXXx8VXQmJlV0Lm1hcmdpbnMpJiYoeGVbeGUubGVuZ3RoXT1mdW5jdGlv''@;'; put 'put ''biB5RyhIKXtyZXR1cm4gUmQoSCksX2koInBhZ2VNYXJnaW5zIixudWxsLEgpfShZZVsiIW1hcmdpbnMiXXx8VXQubWFyZ2lucykpLFV0KXt2YXIgWW49ZnVuY3Rpb24gZngoSCl7aWYoSC5wcm9wcyl7dmFyIGllPXt9LFg9SC5wcm9wcztpZihYLm9yaWVudGF0aW9uJiYoaWUub3JpZW50YXRp''@;'; put 'put ''b249WC5vcmllbnRhdGlvbiksWC5zY2FsZSYmKGllLnNjYWxlPVguc2NhbGUpLFguZml0JiYobnVsbCE9WC5maXQuaGVpZ2h0JiYoaWUuZml0VG9IZWlnaHQ9WC5maXQuaGVpZ2h0KSxudWxsIT1YLmZpdC53aWR0aCYmKGllLmZpdFRvV2lkdGg9WC5maXQud2lkdGgpKSxYLmRwaSYmKGllLmhv''@;'; put 'put ''cml6b250YWxEcGk9aWUudmVydGljYWxEcGk9WC5kcGkpLG51bGwhPVguZmlyc3QmJihpZS5maXJzdFBhZ2VOdW1iZXI9WC5maXJzdCxpZS51c2VGaXJzdFBhZ2VOdW1iZXI9MSksWC5idyYmKGllLmJsYWNrQW5kV2hpdGU9MSksWC5kcmFmdCYmKGllLmRyYWZ0PTEpLFguY29tbWVudHMmJihp''@;'; put 'put ''ZS5jZWxsQ29tbWVudHM9X19bWC5jb21tZW50c118fCJub25lIiksWC5lcnJvcnMmJihpZS5lcnJvcnM9XzJbWC5lcnJvcnNdfHwibm9uZSIpLFgucGFwZXIpc3dpdGNoKHR5cGVvZiBYLnBhcGVyKXtjYXNlIm51bWJlciI6aWUucGFwZXJTaXplPVgucGFwZXI7YnJlYWs7Y2FzZSJzdHJpbmci''@;'; put 'put ''OlBiW1gucGFwZXJdP2llLnBhcGVyU2l6ZT1QYltYLnBhcGVyXTorWC5wYXBlciYmKGllLnBhcGVyU2l6ZT0rWC5wYXBlcik7YnJlYWs7Y2FzZSJvYmplY3QiOmlmKCFYLnBhcGVyLmhlaWdodHx8IVgucGFwZXIud2lkdGgpdGhyb3ciQ3VzdG9tIFBhcGVyIFNpemUgbXVzdCBpbmNsdWRlIHdp''@;'; put 'put ''ZHRoIGFuZCBoZWlnaHQhIjtpZS5wYXBlckhlaWdodD1YLnBhcGVyLmhlaWdodCxpZS5wYXBlcldpZHRoPVgucGFwZXIud2lkdGh9cmV0dXJuWzEsITAsInRydWUiLCJvdmVyIl0uaW5kZXhPZihYLm9yZGVyKT4tMSYmKGllLnBhZ2VPcmRlcj0ib3ZlclRoZW5Eb3duIiksX2koInBhZ2VTZXR1''@;'; put 'put ''cCIsbnVsbCxpZSl9cmV0dXJuIiJ9KFV0KTtZbi5sZW5ndGgmJih4ZVt4ZS5sZW5ndGhdPVluKSxZbj1mdW5jdGlvbiB2QShIKXt2YXIgaWU9W10sWD0iIix3ZT0iIix4ZT0iIixGZT0iIixaZT0iIixqZT0iIixZZT0iIixNdD1JMyhILmhlYWRlcik7TXQubGVuZ3RoJiYod2U9TXRbMF0samU9''@;'; put 'put ''TXRbMV0sRmU9TXRbMl0pO3ZhciB4dD1JMyhILmZvb3Rlcik7cmV0dXJuIHh0Lmxlbmd0aCYmKHhlPXh0WzBdLFllPXh0WzFdLFplPXh0WzJdKSx3ZSYmaWUucHVzaCgiPG9kZEhlYWRlcj4iK1JyKHdlKSsiPC9vZGRIZWFkZXI+IikseGUmJmllLnB1c2goIjxvZGRGb290ZXI+IitScih4ZSkr''@;'; put 'put ''Ijwvb2RkRm9vdGVyPiIpLChaZSE9eGV8fEZlIT13ZSkmJihYKz0nIGRpZmZlcmVudE9kZEV2ZW49IjEiJyxpZS5wdXNoKCI8ZXZlbkhlYWRlcj4iK1JyKEZlKSsiPC9ldmVuSGVhZGVyPiIpLGllLnB1c2goIjxldmVuRm9vdGVyPiIrUnIoWmUpKyI8L2V2ZW5Gb290ZXI+IikpLChZZSE9eGV8''@;'; put 'put ''fGplIT13ZSkmJihYKz0nIGRpZmZlcmVudEZpcnN0PSIxIicsaWUucHVzaCgiPGZpcnN0SGVhZGVyPiIrUnIoamUpKyI8L2ZpcnN0SGVhZGVyPiIpLGllLnB1c2goIjxmaXJzdEZvb3Rlcj4iK1JyKFllKSsiPC9maXJzdEZvb3Rlcj4iKSksaWUubGVuZ3RoPyI8aGVhZGVyRm9vdGVyIitYKyI+''@;'; put 'put ''IitpZS5qb2luKCIiKSsiPC9oZWFkZXJGb290ZXI+IjoiIn0oVXQpLFluLmxlbmd0aCYmKHhlW3hlLmxlbmd0aF09WW4pfWlmKChudWxsIT1ZZVsiIXJvd0JyZWFrcyJdfHxVdCYmVXQucm93QnJlYWtzKSYmKHhlW3hlLmxlbmd0aF09ZnVuY3Rpb24gUm0oSCl7aWYoMD09SC5sZW5ndGgpcmV0''@;'; put 'put ''dXJuIiI7Zm9yKHZhciBpZT1bJzxyb3dCcmVha3MgY291bnQ9IicrSC5sZW5ndGgrJyIgbWFudWFsQnJlYWtDb3VudD0iJytILmxlbmd0aCsnIj4nXSxYPTA7WDxILmxlbmd0aDsrK1gpaWUucHVzaCgnPGJyayBpZD0iJytIW1hdLlIrJyIgbWFuPSIxIi8+Jyk7cmV0dXJuIGllLmpvaW4oIiIp''@;'; put 'put ''KyI8L3Jvd0JyZWFrcz4ifShZZVsiIXJvd0JyZWFrcyJdfHxVdC5yb3dCcmVha3MpKSwobnVsbCE9WWVbIiFjb2xCcmVha3MiXXx8VXQmJlV0LmNvbEJyZWFrcykmJih4ZVt4ZS5sZW5ndGhdPWZ1bmN0aW9uIEJtKEgpe2lmKDA9PUgubGVuZ3RoKXJldHVybiIiO2Zvcih2YXIgaWU9Wyc8Y29s''@;'; put 'put ''QnJlYWtzIGNvdW50PSInK0gubGVuZ3RoKyciIG1hbnVhbEJyZWFrQ291bnQ9IicrSC5sZW5ndGgrJyI+J10sWD0wO1g8SC5sZW5ndGg7KytYKWllLnB1c2goJzxicmsgaWQ9IicrSFtYXS5DKyciIG1hbj0iMSIvPicpO3JldHVybiBpZS5qb2luKCIiKSsiPC9jb2xCcmVha3M+In0oWWVbIiFj''@;'; put 'put ''b2xCcmVha3MiXXx8VXQuY29sQnJlYWtzKSksKCFpZXx8aWUuaWdub3JlRUN8fG51bGw9PWllLmlnbm9yZUVDKSYmKHhlW3hlLmxlbmd0aF09c2EoImlnbm9yZWRFcnJvcnMiLF9pKCJpZ25vcmVkRXJyb3IiLG51bGwse251bWJlclN0b3JlZEFzVGV4dDoxLHNxcmVmOk10fSkpKSxZZVsiIWNo''@;'; put 'put ''YXJ0cyJdJiZSdC5wdXNoLmFwcGx5KFJ0LFllWyIhY2hhcnRzIl0pLFllWyIhaW1hZ2VzIl0mJlJ0LnB1c2guYXBwbHkoUnQsWWVbIiFpbWFnZXMiXSksWWVbIiFzaGFwZXMiXSYmUnQucHVzaC5hcHBseShSdCxZZVsiIXNoYXBlcyJdKSxSdC5sZW5ndGg+MCYmKFRuPVh0KHdlLC0xLCIuLi9k''@;'; put 'put ''cmF3aW5ncy9kcmF3aW5nIisoSCsxKSsiLnhtbCIsZHQuRFJBVykseGVbeGUubGVuZ3RoXT1faSgiZHJhd2luZyIsbnVsbCx7InI6aWQiOiJySWQiK1RufSksWWVbIiFkcmF3aW5nIl09UnQpLChZZVsiIWNvbW1lbnRzIl0ubGVuZ3RoPjB8fChZZVsiIWNvbnRyb2xzIl18fFtdKS5sZW5ndGg+''@;'; put 'put ''MCkmJihUbj1YdCh3ZSwtMSwiLi4vZHJhd2luZ3Mvdm1sRHJhd2luZyIrKEgrMSkrIi52bWwiLGR0LlZNTCkseGVbeGUubGVuZ3RoXT1faSgibGVnYWN5RHJhd2luZyIsbnVsbCx7InI6aWQiOiJySWQiK1RufSksWWVbIiFsZWdhY3kiXT1UbiksWWVbIiFwcmludCJdJiZZZVsiIXByaW50Il0u''@;'; put 'put ''aW1hZ2VzKXt2YXIgTXI9WWVbIiFwcmludCJdLmltYWdlcyxhaT0wO1siaGVhZGVyIiwiZm9vdGVyIl0uZm9yRWFjaChmdW5jdGlvbih5cil7IU1yW3lyXXx8WyJvZGQiLCJldmVuIiwiZmlyc3QiXS5mb3JFYWNoKGZ1bmN0aW9uKGFyKXshTXJbeXJdW2FyXXx8WyJsZWZ0IiwicmlnaHQiLCJj''@;'; put 'put ''ZW50ZXIiXS5mb3JFYWNoKGZ1bmN0aW9uKEdyKXtpZihBcnJheS5pc0FycmF5KE1yW3lyXVthcl1bR3JdKSlmb3IodmFyIHpyPTA7enI8TXJbeXJdW2FyXVtHcl0ubGVuZ3RoOysrenIpTXJbeXJdW2FyXVtHcl1benJdJiYoTXJbeXJdW2FyXVtHcl1benJdLl9jbnQ9YWkrKyl9KX0pfSksYWk+''@;'; put 'put ''MCYmKFRuPVh0KHdlLC0xLCIuLi9kcmF3aW5ncy92bWxEcmF3aW5nIisoSCsxKSsiSEYudm1sIixkdC5WTUwpLHhlW3hlLmxlbmd0aF09X2koImxlZ2FjeURyYXdpbmdIRiIsbnVsbCx7InI6aWQiOiJySWQiK1RufSksWWVbIiFsZWdhY3lIRiJdPVRuKX1yZXR1cm4oWWVbIiF0YWJsZXMiXXx8''@;'; put 'put ''W10pLmxlbmd0aD4wJiYoeGVbeGUubGVuZ3RoXT0nPHRhYmxlUGFydHMgY291bnQ9IicrWWVbIiF0YWJsZXMiXS5sZW5ndGgrJyI+JyxZZVsiIXRhYmxlcyJdLmZvckVhY2goZnVuY3Rpb24oeXIsYXIpe1RuPVh0KHdlLC0xLCIuLi90YWJsZXMvdGFibGUiKyhIKzEpKyJfIithcisiLnhtbCIs''@;'; put 'put ''ZHQuVEFCTEUpLHhlW3hlLmxlbmd0aF09Jzx0YWJsZVBhcnQgcjppZD0icklkJytUbisnIi8+J30pLHhlW3hlLmxlbmd0aF09IjwvdGFibGVQYXJ0cz4iKSx4ZS5sZW5ndGg+MSYmKHhlW3hlLmxlbmd0aF09Ijwvd29ya3NoZWV0PiIseGVbMV09eGVbMV0ucmVwbGFjZSgiLz4iLCI+IikpLHhl''@;'; put 'put ''LmpvaW4oIiIpfWZ1bmN0aW9uIHRQKEgsaWUsWCx3ZSl7dmFyIHhlPWZ1bmN0aW9uIGVQKEgsaWUsWCl7dmFyIHdlPVJpKDE0NSkseGU9KFhbIiFyb3dzIl18fFtdKVtIXXx8e307d2Uud3JpdGVfc2hpZnQoNCxIKSx3ZS53cml0ZV9zaGlmdCg0LDApO3ZhciBGZT0zMjA7eGUuaHB4P0ZlPTIw''@;'; put 'put ''KlRoKHhlLmhweCk6eGUuaHB0JiYoRmU9MjAqeGUuaHB0KSx3ZS53cml0ZV9zaGlmdCgyLEZlKSx3ZS53cml0ZV9zaGlmdCgxLDApO3ZhciBaZT0wO3hlLmxldmVsJiYoWmV8PXhlLmxldmVsKSx4ZS5oaWRkZW4mJihaZXw9MTYpLCh4ZS5ocHh8fHhlLmhwdCkmJihaZXw9MzIpLHdlLndyaXRl''@;'; put 'put ''X3NoaWZ0KDEsWmUpLHdlLndyaXRlX3NoaWZ0KDEsMCk7dmFyIGplPTAsWWU9d2UubDt3ZS5sKz00O2Zvcih2YXIgTXQ9e3I6SCxjOjB9LHh0PTA7eHQ8MTY7Kyt4dClpZighKGllLnMuYz54dCsxPDwxMHx8aWUuZS5jPHh0PDwxMCkpe2Zvcih2YXIgUnQ9LTEsVXQ9LTEsbm49eHQ8PDEwO25u''@;'; put 'put ''PHh0KzE8PDEwOysrbm4pTXQuYz1ubiwoQXJyYXkuaXNBcnJheShYKT8oWFtNdC5yXXx8W10pW010LmNdOlhbWTAoTXQpXSkmJihSdDwwJiYoUnQ9bm4pLFV0PW5uKTtSdDwwfHwoKytqZSx3ZS53cml0ZV9zaGlmdCg0LFJ0KSx3ZS53cml0ZV9zaGlmdCg0LFV0KSl9dmFyIER0PXdlLmw7cmV0''@;'; put 'put ''dXJuIHdlLmw9WWUsd2Uud3JpdGVfc2hpZnQoNCxqZSksd2UubD1EdCx3ZS5sZW5ndGg+d2UubD93ZS5zbGljZSgwLHdlLmwpOndlfSh3ZSxYLGllKTsoeGUubGVuZ3RoPjE3fHwoaWVbIiFyb3dzIl18fFtdKVt3ZV0pJiZDMChILCJCcnRSb3dIZHIiLHhlKX12YXIgVzQ9d2gsRTY9R3A7ZnVu''@;'; put 'put ''Y3Rpb24gVTQoSCl7cmV0dXJuW000KEgpLEkyKEgpLCJuIl19dmFyIGt4PXdoLHZhPUdwLHdpPVsibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIiwiaGVhZGVyIiwiZm9vdGVyIl0sam09WyJBbnkiLCJXaG9sZSIsIkRlY2ltYWwiLCJMaXN0IiwiRGF0ZSIsIlRpbWUiLCJMZW5ndGgiLCJD''@;'; put 'put ''dXN0b20iXSxDQT1bIklOIiwiT1QiLCJFUSIsIk5FIiwiR1QiLCJMVCIsIkdFIiwiTEUiXTtmdW5jdGlvbiBOaShIKXt2YXIgaWU9UmkoNCksWD1baWVdLHdlPWptLmluZGV4T2YoSC50KTtpZih3ZTwwKXRocm93IG5ldyBFcnJvcigiQmFkIHZhbGlkYXRpb246IHVucmVjb2duaXplZCB0eXBl''@;'; put 'put ''ICIrSC50KTt2YXIgRmU9Q0EuaW5kZXhPZihILm9wKTtzd2l0Y2god2Upe2Nhc2UgMDpjYXNlIDM6Y2FzZSA3OkZlPTA7YnJlYWs7ZGVmYXVsdDppZigtMT09RmUpdGhyb3cgbmV3IEVycm9yKCJCYWQgRGF0YSBWYWxpZGF0aW9uIHR5cGUgIitILm9wKyIgZm9yICIrSC50KX1pZS53cml0ZV9z''@;'; put 'put ''aGlmdCgxLDB8d2UpLGllLndyaXRlX3NoaWZ0KDEsMSksaWUud3JpdGVfc2hpZnQoMSwxMnxGZTw8NCksaWUud3JpdGVfc2hpZnQoMSwwKSxYLnB1c2goZnVuY3Rpb24gYzkoSCl7dmFyIGllPUguc3BsaXQoL1xzKixccyovKSxYPVJpKDQpO1gud3JpdGVfc2hpZnQoNCxpZS5sZW5ndGgpO3Zh''@;'; put 'put ''ciB3ZT1bWF07cmV0dXJuIGllLmZvckVhY2goZnVuY3Rpb24oeGUpe3dlLnB1c2goR3AoRm8oeGUpKSl9KSxWKHdlKX0oInN0cmluZyI9PXR5cGVvZiBILnJlZj9ILnJlZjpmYShILnJlZikpKTt2YXIgWmU9UmkoMTYpO1plLndyaXRlX3NoaWZ0KDQsNDI5NDk2NzI5NSksWmUud3JpdGVfc2hp''@;'; put 'put ''ZnQoNCw0Mjk0OTY3Mjk1KSxaZS53cml0ZV9zaGlmdCg0LDQyOTQ5NjcyOTUpLFplLndyaXRlX3NoaWZ0KDQsNDI5NDk2NzI5NSksWC5wdXNoKFplKTt2YXIgamU9UmkoOCk7amUud3JpdGVfc2hpZnQoNCwwKSxqZS53cml0ZV9zaGlmdCg0LDApO3ZhciBZZT0xO3N3aXRjaChILnQpe2Nhc2Ui''@;'; put 'put ''QW55IjpYLnB1c2goamUpLFgucHVzaChqZSk7YnJlYWs7Y2FzZSJEZWNpbWFsIjpjYXNlIkxlbmd0aCI6Y2FzZSJXaG9sZSI6aWYobnVsbCE9SC52fHxudWxsIT1ILmYpWC5wdXNoKCJudW1iZXIiPT10eXBlb2YgSC52P2l4KEgudik6VG0obnVsbD09SC52P0guZjpILnYpKTtlbHNle2lmKG51''@;'; put 'put ''bGw9PUgubWlufHxudWxsPT1ILm1heCl0aHJvdyJVbnN1cHBvcnRlZCBEYXRhIFZhbGlkYXRpb246IGB2YCBvciBgbWluYCtgbWF4YCByZXF1aXJlZCBmb3IgVHlwZSAiK0gudDtYLnB1c2goIm51bWJlciI9PXR5cGVvZiBILm1pbj9peChILm1pbik6VG0oSC5taW4pKSxYLnB1c2goIm51bWJl''@;'; put 'put ''ciI9PXR5cGVvZiBILm1heD9peChILm1heCk6VG0oSC5tYXgpKSxZZT0yfWJyZWFrO2Nhc2UiTGlzdCI6aWYobnVsbCE9SC5sKXtYLnB1c2goaUEoSC5sLmpvaW4oIiwiKSkpO2JyZWFrfWNhc2UiQ3VzdG9tIjppZigibnVsbCIhPUguZil7WC5wdXNoKFRtKEguZikpO2JyZWFrfXRocm93IlVu''@;'; put 'put ''c3VwcG9ydGVkIERhdGEgVmFsaWRhdGlvbjogYGZgIisoIkxpc3QiPT1ILnQ/IiBvciBgbGAiOiIiKSsiIHJlcXVpcmVkIGZvciBUeXBlICIrSC50O2RlZmF1bHQ6dGhyb3ciWExTQiBkb2VzIG5vdCBzdXBwb3J0IERhdGEgVmFsaWRhdGlvbiB0eXBlICIrSC50fXJldHVybiAxPT1ZZSYmWC5w''@;'; put 'put ''dXNoKGplKSxWKFgpfWZ1bmN0aW9uIFptKEgsaWUsWCx3ZSx4ZSxGZSxaZSl7aWYodm9pZCAwPT09aWUudiYmbnVsbD09aWUuc3x8InoiPT09aWUudCYmIXhlLnNoZWV0U3R1YnMpcmV0dXJuITE7dmFyIGplPSIiO3N3aXRjaChpZS50KXtjYXNlImIiOmplPWllLnY/IjEiOiIwIjticmVhaztj''@;'; put 'put ''YXNlImQiOihpZT1sbihpZSkpLno9aWUuenx8Ri5fdGFibGVbMTRdLGllLnY9ZnQoZG4oaWUudikpLGllLnQ9Im4iO2JyZWFrO2Nhc2UibiI6Y2FzZSJlIjpqZT0iIitpZS52O2JyZWFrO2RlZmF1bHQ6amU9aWUudn12YXIgWWU9e3I6WCxjOndlfTtzd2l0Y2goWWUucz1ZMSh4ZS5jZWxsWGZz''@;'; put 'put ''LHhlLmNlbGxTdHlsZVhmcyxpZSx4ZSksaWUubCYmRmVbIiFsaW5rcyJdLnB1c2goW1kwKFllKSxpZS5sXSksaWUuYyYmRmVbIiFjb21tZW50cyJdLnB1c2goW1kwKFllKSxpZS5jXSksaWUudCl7Y2FzZSJzIjpjYXNlInN0ciI6aWYoeGUuYm9va1NTVCl7aWYoamU9QzYoeGUuU3RyaW5ncyxp''@;'; put 'put ''ZS52LGllLlI/aWUucj11NihpZS5SKTpudWxsLHhlLnJldlN0cmluZ3MpLGllLlIpZm9yKHZhciBNdD0wO010PGllLlIubGVuZ3RoOysrTXQpaWUuUltNdF0ucyYmWTEoeGUuY2VsbFhmcyx4ZS5jZWxsU3R5bGVYZnMse3Q6Im4iLHY6MCxzOmllLlJbTXRdLnN9LHhlKTtZZS50PSJzIixZZS52''@;'; put 'put ''PWplLFplP0MwKEgsIkJydFNob3J0SXNzdCIsZnVuY3Rpb24gWTQoSCxpZSxYKXtyZXR1cm4gbnVsbD09WCYmKFg9UmkoOCkpLEFoKGllLFgpLFgud3JpdGVfc2hpZnQoNCxpZS52KSxYfSgwLFllKSk6QzAoSCwiQnJ0Q2VsbElzc3QiLGZ1bmN0aW9uIEZkKEgsaWUsWCl7cmV0dXJuIG51bGw9''@;'; put 'put ''PVgmJihYPVJpKDEyKSksUzQoaWUsWCksWC53cml0ZV9zaGlmdCg0LGllLnYpLFh9KDAsWWUpKX1lbHNlIFllLnQ9InN0ciIsWmU/QzAoSCwiQnJ0U2hvcnRTdCIsZnVuY3Rpb24gUF8oSCxpZSxYKXtyZXR1cm4gbnVsbD09WCYmKFg9UmkoOCs0Kkgudi5sZW5ndGgpKSxBaChpZSxYKSxsdShI''@;'; put 'put ''LnYsWCksWC5sZW5ndGg+WC5sP1guc2xpY2UoMCxYLmwpOlh9KGllLFllKSk6QzAoSCwiQnJ0Q2VsbFN0IixmdW5jdGlvbiB5NShILGllLFgpe3JldHVybiBudWxsPT1YJiYoWD1SaSgxMis0Kkgudi5sZW5ndGgpKSxTNChpZSxYKSxsdShILnYsWCksWC5sZW5ndGg+WC5sP1guc2xpY2UoMCxY''@;'; put 'put ''LmwpOlh9KGllLFllKSk7cmV0dXJuITA7Y2FzZSJuIjpyZXR1cm4gaWUudj09KDB8aWUudikmJmllLnY+LTFlMyYmaWUudjwxZTM/WmU/QzAoSCwiQnJ0U2hvcnRSayIsZnVuY3Rpb24gSGQoSCxpZSxYKXtyZXR1cm4gbnVsbD09WCYmKFg9UmkoOCkpLEFoKGllLFgpLElNKEgudixYKSxYfShp''@;'; put 'put ''ZSxZZSkpOkMwKEgsIkJydENlbGxSayIsZnVuY3Rpb24gQmgoSCxpZSxYKXtyZXR1cm4gbnVsbD09WCYmKFg9UmkoMTIpKSxTNChpZSxYKSxJTShILnYsWCksWH0oaWUsWWUpKTpaZT9DMChILCJCcnRTaG9ydFJlYWwiLGZ1bmN0aW9uIEE1KEgsaWUsWCl7cmV0dXJuIG51bGw9PVgmJihYPVJp''@;'; put 'put ''KDEyKSksQWgoaWUsWCksdWYoSC52LFgpLFh9KGllLFllKSk6QzAoSCwiQnJ0Q2VsbFJlYWwiLGZ1bmN0aW9uIHY1KEgsaWUsWCl7cmV0dXJuIG51bGw9PVgmJihYPVJpKDE2KSksUzQoaWUsWCksdWYoSC52LFgpLFh9KGllLFllKSksITA7Y2FzZSJiIjpyZXR1cm4gWWUudD0iYiIsWmU/QzAo''@;'; put 'put ''SCwiQnJ0U2hvcnRCb29sIixmdW5jdGlvbiBiQShILGllLFgpe3JldHVybiBudWxsPT1YJiYoWD1SaSg1KSksQWgoaWUsWCksWC53cml0ZV9zaGlmdCgxLEgudj8xOjApLFh9KGllLFllKSk6QzAoSCwiQnJ0Q2VsbEJvb2wiLGZ1bmN0aW9uIHRjKEgsaWUsWCl7cmV0dXJuIG51bGw9PVgmJihY''@;'; put 'put ''PVJpKDkpKSxTNChpZSxYKSxYLndyaXRlX3NoaWZ0KDEsSC52PzE6MCksWH0oaWUsWWUpKSwhMDtjYXNlImUiOnJldHVybiBZZS50PSJlIixaZT9DMChILCJCcnRTaG9ydEVycm9yIixmdW5jdGlvbiBtNShILGllLFgpe3JldHVybiBudWxsPT1YJiYoWD1SaSg4KSksQWgoaWUsWCksWC53cml0''@;'; put 'put ''ZV9zaGlmdCgxLEgudiksWC53cml0ZV9zaGlmdCgyLDApLFgud3JpdGVfc2hpZnQoMSwwKSxYfShpZSxZZSkpOkMwKEgsIkJydENlbGxFcnJvciIsZnVuY3Rpb24gR2koSCxpZSxYKXtyZXR1cm4gbnVsbD09WCYmKFg9UmkoOSkpLFM0KGllLFgpLFgud3JpdGVfc2hpZnQoMSxILnYpLFh9KGll''@;'; put 'put ''LFllKSksITB9cmV0dXJuIFplP0MwKEgsIkJydFNob3J0QmxhbmsiLGZ1bmN0aW9uIEwzKEgsaWUsWCl7cmV0dXJuIG51bGw9PVgmJihYPVJpKDQpKSxBaChpZSxYKX0oMCxZZSkpOkMwKEgsIkJydENlbGxCbGFuayIsZnVuY3Rpb24gQl8oSCxpZSxYKXtyZXR1cm4gbnVsbD09WCYmKFg9Umko''@;'; put 'put ''OCkpLFM0KGllLFgpfSgwLFllKSksITB9ZnVuY3Rpb24gRHgoSCxpZSxYLHdlKXt2YXIgeGU9SjIoKSxGZT1YLlNoZWV0TmFtZXNbSF0sWmU9WC5TaGVldHNbRmVdfHx7fSxqZT1GZTt0cnl7WCYmWC5Xb3JrYm9vayYmKGplPVguV29ya2Jvb2suU2hlZXRzW0hdLkNvZGVOYW1lfHxqZSl9Y2F0''@;'; put 'put ''Y2goTXQpe312YXIgWWU9Rm8oWmVbIiFyZWYiXXx8IkExIik7aWYoWWUuZS5jPjE2MzgzfHxZZS5lLnI+MTA0ODU3NSl7aWYoaWUuV1RGKXRocm93IG5ldyBFcnJvcigiUmFuZ2UgIisoWmVbIiFyZWYiXXx8IkExIikrIiBleGNlZWRzIGZvcm1hdCBsaW1pdCBBMTpYRkQxMDQ4NTc2Iik7WWUu''@;'; put 'put ''ZS5jPU1hdGgubWluKFllLmUuYywxNjM4MyksWWUuZS5yPU1hdGgubWluKFllLmUuYywxMDQ4NTc1KX1yZXR1cm4gWmVbIiFsaW5rcyJdPVtdLFplWyIhY29tbWVudHMiXT1bXSxDMCh4ZSwiQnJ0QmVnaW5TaGVldCIpLChYLnZiYXJhd3x8WmVbIiFvdXRsaW5lIl0pJiZDMCh4ZSwiQnJ0V3NQ''@;'; put 'put ''cm9wIixmdW5jdGlvbiByUChILGllLFgpe251bGw9PVgmJihYPVJpKDg0KzQqSC5sZW5ndGgpKTt2YXIgd2U9MTkyO2llJiYoaWUuYWJvdmUmJih3ZSY9LTY1KSxpZS5sZWZ0JiYod2UmPS0xMjkpKSxYLndyaXRlX3NoaWZ0KDEsd2UpO2Zvcih2YXIgeGU9MTt4ZTwzOysreGUpWC53cml0ZV9z''@;'; put 'put ''aGlmdCgxLDApO3JldHVybiBqZih7YXV0bzoxfSxYKSxYLndyaXRlX3NoaWZ0KC00LC0xKSxYLndyaXRlX3NoaWZ0KC00LC0xKSxUTShILFgpLFguc2xpY2UoMCxYLmwpfShqZSxaZVsiIW91dGxpbmUiXSkpLEMwKHhlLCJCcnRXc0RpbSIsRTYoWWUpKSxmdW5jdGlvbiBJeChILGllLFgpe0Mw''@;'; put 'put ''KEgsIkJydEJlZ2luV3NWaWV3cyIpLEMwKEgsIkJydEJlZ2luV3NWaWV3IixmdW5jdGlvbiBHbihILGllLFgpe251bGw9PVgmJihYPVJpKDMwKSk7dmFyIHdlPTkyNDtyZXR1cm4oKChpZXx8e30pLlZpZXdzfHxbXSlbMF18fHt9KS5SVEwmJih3ZXw9MzIpLG5yKEhbIiFncmlkbGluZXMiXSkm''@;'; put 'put ''Jih3ZSY9LTUpLG5yKCgoKGllfHx7fSkuVmlld3N8fFtdKVswXXx8e30pLmdyaWQpJiYod2UmPS01KSxYLndyaXRlX3NoaWZ0KDIsd2UpLFgud3JpdGVfc2hpZnQoNCwwKSxYLndyaXRlX3NoaWZ0KDQsMCksWC53cml0ZV9zaGlmdCg0LDApLFgud3JpdGVfc2hpZnQoMSwwKSxYLndyaXRlX3No''@;'; put 'put ''aWZ0KDEsMCksWC53cml0ZV9zaGlmdCgyLDApLFgud3JpdGVfc2hpZnQoMiwxMDApLFgud3JpdGVfc2hpZnQoMiwwKSxYLndyaXRlX3NoaWZ0KDIsMCksWC53cml0ZV9zaGlmdCgyLDApLFgud3JpdGVfc2hpZnQoNCwwKSxYfShpZSxYKSksaWVbIiFmcmVlemUiXSYmQzAoSCwiQnJ0UGFuZSIs''@;'; put 'put ''ZnVuY3Rpb24gb3QoSCl7dmFyIGllPXVsKEhbIiFmcmVlemUiXSksWD1SaSgyOSk7cmV0dXJuIFgud3JpdGVfc2hpZnQoOCxpZS5jLCJmIiksWC53cml0ZV9zaGlmdCg4LGllLnIsImYiKSxYLndyaXRlX3NoaWZ0KDQsaWUuciksWC53cml0ZV9zaGlmdCg0LGllLmMpLFgud3JpdGVfc2hpZnQo''@;'; put 'put ''NCwwKSxYLndyaXRlX3NoaWZ0KDEsMyksWH0oaWUpKSxpZVsiIXNlbCJdJiZDMChILCJCcnRTZWwiLGZ1bmN0aW9uIHc1KEgsaWUpe3ZhciBYPVJpKDM2KSx3ZT1ILmNlbGw7aWYoIXdlKXtpZighSC5yYW5nZSl0aHJvdyBuZXcgRXJyb3IoIk11c3Qgc3BlY2lmeSBhIHNlbGVjdGlvbiBjZWxs''@;'; put 'put ''IG9yIHJhbmdlIik7d2U9WTAoQXMoSC5yYW5nZS5yZXBsYWNlKC9ccy4qJC8sIiIpKS5zKX12YXIgeGU9InN0cmluZyI9PXR5cGVvZiB3ZT91bCh3ZSk6d2U7aWYoaWUpe3ZhciBGZT0ic3RyaW5nIj09dHlwZW9mIGllP3VsKGllKTppZTtYLndyaXRlX3NoaWZ0KDQseGUucj49RmUuciYmeGUu''@;'; put 'put ''Yz49RmUuYz8wOnhlLnI+PUZlLnImJnhlLmM8RmUuYz8yOnhlLnI8RmUuciYmeGUuYz49RmUuYz8xOjMpfWVsc2UgWC53cml0ZV9zaGlmdCg0LDMpO3JldHVybiBYLndyaXRlX3NoaWZ0KDQseGUuciksWC53cml0ZV9zaGlmdCg0LHhlLmMpLFgud3JpdGVfc2hpZnQoNCwwKSxYLndyaXRlX3No''@;'; put 'put ''aWZ0KDQsMSksWC53cml0ZV9zaGlmdCg0LHhlLnIpLFgud3JpdGVfc2hpZnQoNCx4ZS5yKSxYLndyaXRlX3NoaWZ0KDQseGUuYyksWC53cml0ZV9zaGlmdCg0LHhlLmMpLFh9KGllWyIhc2VsIl0saWVbIiFmcmVlemUiXSkpLEMwKEgsIkJydEVuZFdzVmlldyIpLEMwKEgsIkJydEVuZFdzVmll''@;'; put 'put ''d3MiKX0oeGUsWmUsWC5Xb3JrYm9vayksZnVuY3Rpb24gUTQoSCxpZSl7IWllfHwhaWVbIiFjb2xzIl18fChDMChILCJCcnRCZWdpbkNvbEluZm9zIiksaWVbIiFjb2xzIl0uZm9yRWFjaChmdW5jdGlvbihYLHdlKXtYJiZDMChILCJCcnRDb2xJbmZvIixmdW5jdGlvbiBmMShILGllLFgpe251''@;'; put 'put ''bGw9PVgmJihYPVJpKDE4KSk7dmFyIHdlPWs2KEgsaWUpO1gud3JpdGVfc2hpZnQoLTQsSCksWC53cml0ZV9zaGlmdCgtNCxIKSxYLndyaXRlX3NoaWZ0KDQsMjU2Kih3ZS53aWR0aHx8MTApKSxYLndyaXRlX3NoaWZ0KDQsMCk7dmFyIHhlPTA7cmV0dXJuIGllLmhpZGRlbiYmKHhlfD0xKSwi''@;'; put 'put ''bnVtYmVyIj09dHlwZW9mIHdlLndpZHRoJiYoeGV8PTIpLGllLmxldmVsJiYoeGV8PWllLmxldmVsPDw4KSxYLndyaXRlX3NoaWZ0KDIseGUpLFh9KHdlLFgpKX0pLEMwKEgsIkJydEVuZENvbEluZm9zIikpfSh4ZSxaZSksZnVuY3Rpb24gal8oSCxpZSxYLHdlKXt2YXIgeGU9Rm8oaWVbIiFy''@;'; put 'put ''ZWYiXXx8IkExIiksWmU9IiIsamU9W107QzAoSCwiQnJ0QmVnaW5TaGVldERhdGEiKTt2YXIgWWU9QXJyYXkuaXNBcnJheShpZSksTXQ9eGUuZS5yO2llWyIhcm93cyJdJiYoTXQ9TWF0aC5tYXgoeGUuZS5yLGllWyIhcm93cyJdLmxlbmd0aC0xKSk7Zm9yKHZhciB4dD14ZS5zLnI7eHQ8PU10''@;'; put 'put ''OysreHQpe1plPVhhKHh0KSx0UChILGllLHhlLHh0KTt2YXIgUnQ9ITE7aWYoeHQ8PXhlLmUucilmb3IodmFyIFV0PXhlLnMuYztVdDw9eGUuZS5jOysrVXQpe3h0PT09eGUucy5yJiYoamVbVXRdPV9hKFV0KSk7dmFyIG5uPVllPyhpZVt4dF18fFtdKVtVdF06aWVbamVbVXRdK1plXTtSdD0h''@;'; put 'put ''IW5uJiZabShILG5uLHh0LFV0LHdlLGllLFJ0KX19QzAoSCwiQnJ0RW5kU2hlZXREYXRhIil9KHhlLFplLDAsaWUpLGZ1bmN0aW9uIHVQKEgsaWUpeyFpZVsiIXByb3RlY3QiXXx8QzAoSCwiQnJ0U2hlZXRQcm90ZWN0aW9uIixmdW5jdGlvbiBsUChILGllKXtyZXR1cm4gbnVsbD09aWUmJihp''@;'; put 'put ''ZT1SaSg2NikpLGllLndyaXRlX3NoaWZ0KDIsSC5wYXNzd29yZD9NOShILnBhc3N3b3JkKTowKSxpZS53cml0ZV9zaGlmdCg0LDEpLFtbIm9iamVjdHMiLCExXSxbInNjZW5hcmlvcyIsITFdLFsiZm9ybWF0Q2VsbHMiLCEwXSxbImZvcm1hdENvbHVtbnMiLCEwXSxbImZvcm1hdFJvd3MiLCEw''@;'; put 'put ''XSxbImluc2VydENvbHVtbnMiLCEwXSxbImluc2VydFJvd3MiLCEwXSxbImluc2VydEh5cGVybGlua3MiLCEwXSxbImRlbGV0ZUNvbHVtbnMiLCEwXSxbImRlbGV0ZVJvd3MiLCEwXSxbInNlbGVjdExvY2tlZENlbGxzIiwhMV0sWyJzb3J0IiwhMF0sWyJhdXRvRmlsdGVyIiwhMF0sWyJwaXZv''@;'; put 'put ''dFRhYmxlcyIsITBdLFsic2VsZWN0VW5sb2NrZWRDZWxscyIsITFdXS5mb3JFYWNoKGZ1bmN0aW9uKFgpe2llLndyaXRlX3NoaWZ0KDQsWFsxXT9udWxsPT1IW1hbMF1dfHxIW1hbMF1dPzA6MTpudWxsIT1IW1hbMF1dJiZIW1hbMF1dPzA6MSl9KSxpZX0oaWVbIiFwcm90ZWN0Il0pKX0oeGUs''@;'; put 'put ''WmUpLGZ1bmN0aW9uIHptKEgsaWUsWCx3ZSl7aWYoaWVbIiFhdXRvZmlsdGVyIl0pe3ZhciB4ZT1pZVsiIWF1dG9maWx0ZXIiXSxGZT0ic3RyaW5nIj09dHlwZW9mIHhlLnJlZj94ZS5yZWY6ZmEoeGUucmVmKTtYLldvcmtib29rfHwoWC5Xb3JrYm9vaz17U2hlZXRzOltdfSksWC5Xb3JrYm9v''@;'; put 'put ''ay5OYW1lc3x8KFguV29ya2Jvb2suTmFtZXM9W10pO3ZhciBaZT1YLldvcmtib29rLk5hbWVzLGplPUFzKEZlKTtqZS5zLnI9PWplLmUuciYmKGplLmUucj1BcyhpZVsiIXJlZiJdKS5lLnIsRmU9ZmEoamUpKTtmb3IodmFyIFllPTA7WWU8WmUubGVuZ3RoOysrWWUpe3ZhciBNdD1aZVtZZV07''@;'; put 'put ''aWYoIl94bG5tLl9GaWx0ZXJEYXRhYmFzZSI9PU10Lk5hbWUmJk10LlNoZWV0PT13ZSl7TXQuUmVmPSInIitYLlNoZWV0TmFtZXNbd2VdKyInISIrRmU7YnJlYWt9fVllPT1aZS5sZW5ndGgmJlplLnB1c2goe05hbWU6Il94bG5tLl9GaWx0ZXJEYXRhYmFzZSIsU2hlZXQ6d2UsUmVmOiInIitY''@;'; put 'put ''LlNoZWV0TmFtZXNbd2VdKyInISIrRmV9KSxDMChILCJCcnRCZWdpbkFGaWx0ZXIiLEdwKEZvKEZlKSkpLEMwKEgsIkJydEVuZEFGaWx0ZXIiKX19KHhlLFplLFgsSCksZnVuY3Rpb24gTXgoSCxpZSl7IWllfHwhaWVbIiFtZXJnZXMiXXx8KEMwKEgsIkJydEJlZ2luTWVyZ2VDZWxscyIsZnVu''@;'; put 'put ''Y3Rpb24gVHQoSCxpZSl7cmV0dXJuIG51bGw9PWllJiYoaWU9UmkoNCkpLGllLndyaXRlX3NoaWZ0KDQsSCksaWV9KGllWyIhbWVyZ2VzIl0ubGVuZ3RoKSksaWVbIiFtZXJnZXMiXS5mb3JFYWNoKGZ1bmN0aW9uKFgpe0MwKEgsIkJydE1lcmdlQ2VsbCIsdmEoWCkpfSksQzAoSCwiQnJ0RW5k''@;'; put 'put ''TWVyZ2VDZWxscyIpKX0oeGUsWmUpLGZ1bmN0aW9uIGNQKEgsaWUpe2lmKGllKXtDMChILCJCcnRCZWdpbkRWYWxzIixmdW5jdGlvbiBWXyhILGllKXtudWxsPT1pZSYmKGllPVJpKDE4KSksaWUud3JpdGVfc2hpZnQoMiwwKSxpZS53cml0ZV9zaGlmdCg0LDApLGllLndyaXRlX3NoaWZ0KDQs''@;'; put 'put ''MCksaWUud3JpdGVfc2hpZnQoNCwwKTtmb3IodmFyIFg9MCx3ZT0wO3dlPEgubGVuZ3RoOysrd2UpKChIW3dlXXx8e30pLnJlZnx8e30pLnMmJkhbd2VdLnJlZi5zLmM8MHx8KytYO3JldHVybiBpZS53cml0ZV9zaGlmdCg0LFgpLGllfShpZSkpO2Zvcih2YXIgWD0wO1g8aWUubGVuZ3RoOysr''@;'; put 'put ''WCkoKGllW1hdfHx7fSkucmVmfHx7fSkucyYmaWVbWF0ucmVmLnMuYzwwfHxDMChILCJCcnREVmFsIixOaShpZVtYXSkpO0MwKEgsIkJydEVuZERWYWxzIil9fSh4ZSxaZVsiIXZhbGlkYXRpb25zIl0pLGZ1bmN0aW9uIHh4KEgsaWUsWCl7aWVbIiFsaW5rcyJdLmZvckVhY2goZnVuY3Rpb24o''@;'; put 'put ''d2Upe2lmKHdlWzFdLlRhcmdldCl7dmFyIHhlPVh0KFgsLTEsd2VbMV0uVGFyZ2V0LnJlcGxhY2UoLyMuKiQvLCIiKSxkdC5ITElOSyk7QzAoSCwiQnJ0SExpbmsiLGZ1bmN0aW9uIGFQKEgsaWUpe3ZhciBYPVJpKDUwKzQqKEhbMV0uVGFyZ2V0Lmxlbmd0aCsoSFsxXS5Ub29sdGlwfHwiIiku''@;'; put 'put ''bGVuZ3RoKSk7R3Aoe3M6dWwoSFswXSksZTp1bChIWzBdKX0sWCksenAoInJJZCIraWUsWCk7dmFyIHdlPUhbMV0uVGFyZ2V0LmluZGV4T2YoIiMiKTtyZXR1cm4gbHUoKC0xPT13ZT8iIjpIWzFdLlRhcmdldC5zbGljZSh3ZSsxKSl8fCIiLFgpLGx1KEhbMV0uVG9vbHRpcHx8IiIsWCksbHUo''@;'; put 'put ''IiIsWCksWC5zbGljZSgwLFgubCl9KHdlLHhlKSl9fSksZGVsZXRlIGllWyIhbGlua3MiXX0oeGUsWmUsd2UpLFplWyIhbWFyZ2lucyJdJiZDMCh4ZSwiQnJ0TWFyZ2lucyIsZnVuY3Rpb24gU3goSCxpZSl7cmV0dXJuIG51bGw9PWllJiYoaWU9UmkoNDgpKSxSZChIKSx3aS5mb3JFYWNoKGZ1''@;'; put 'put ''bmN0aW9uKFgpe3VmKEhbWF0saWUpfSksaWV9KFplWyIhbWFyZ2lucyJdKSksKCFpZXx8aWUuaWdub3JlRUN8fG51bGw9PWllLmlnbm9yZUVDKSYmZnVuY3Rpb24gRXgoSCxpZSl7IWllfHwhaWVbIiFyZWYiXXx8KEMwKEgsIkJydEJlZ2luQ2VsbElnbm9yZUVDcyIpLEMwKEgsIkJydENlbGxJ''@;'; put 'put ''Z25vcmVFQyIsZnVuY3Rpb24gTl8oSCl7dmFyIGllPVJpKDI0KTtyZXR1cm4gaWUud3JpdGVfc2hpZnQoNCw0KSxpZS53cml0ZV9zaGlmdCg0LDEpLEdwKEgsaWUpLGllfShGbyhpZVsiIXJlZiJdKSkpLEMwKEgsIkJydEVuZENlbGxJZ25vcmVFQ3MiKSl9KHhlLFplKSxmdW5jdGlvbiBUeChI''@;'; put 'put ''LGllLFgsd2Upe2lmKGllWyIhY29tbWVudHMiXS5sZW5ndGg+MCl7dmFyIHhlPVh0KHdlLC0xLCIuLi9kcmF3aW5ncy92bWxEcmF3aW5nIisoWCsxKSsiLnZtbCIsZHQuVk1MKTtDMChILCJCcnRMZWdhY3lEcmF3aW5nIix6cCgicklkIit4ZSkpLGllWyIhbGVnYWN5Il09eGV9fSh4ZSxaZSxI''@;'; put 'put ''LHdlKSxDMCh4ZSwiQnJ0RW5kU2hlZXQiKSx4ZS5lbmQoKX1mdW5jdGlvbiBaXyhIKXt2YXIgd2UsaWU9W10sWD1ILm1hdGNoKC9ePGM6bnVtQ2FjaGU+Lyk7KEgubWF0Y2goLzxjOnB0IGlkeD0iKFxkKikiPiguKj8pPFwvYzpwdD4vZ20pfHxbXSkuZm9yRWFjaChmdW5jdGlvbihGZSl7dmFy''@;'; put 'put ''IFplPUZlLm1hdGNoKC88YzpwdCBpZHg9IihcZCo/KSI+PGM6dj4oLiopPFwvYzp2PjxcL2M6cHQ+Lyk7IVplfHwoaWVbK1plWzFdXT1YPytaZVsyXTpaZVsyXSl9KTt2YXIgeGU9Z3IoKEgubWF0Y2goLzxjOmZvcm1hdENvZGU+KFtcc1xTXSo/KTxcL2M6Zm9ybWF0Q29kZT4vKXx8WyIiLCJH''@;'; put 'put ''ZW5lcmFsIl0pWzFdKTtyZXR1cm4oSC5tYXRjaCgvPGM6Zj4oLio/KTxcL2M6Zj4vZ20pfHxbXSkuZm9yRWFjaChmdW5jdGlvbihGZSl7d2U9RmUucmVwbGFjZSgvPC4qPz4vZywiIil9KSxbaWUseGUsd2VdfWR0LkNIQVJUPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2Zm''@;'; put 'put ''aWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2NoYXJ0IixkdC5DSEFSVEVYPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDE0L3JlbGF0aW9uc2hpcHMvY2hhcnRFeCI7dmFyIE94PS88KD86XHcrOik/Y2hhcnQ+KFtcc1xTXSo/KTxcLyg/Olx3KzopP2NoYXJ0''@;'; put 'put ''Pi8sZlA9LzwoPzpcdys6KT9wbG90QXJlYT4oW1xzXFNdKj8pPFwvKD86XHcrOik/cGxvdEFyZWE+LyxSeD0vPCg/Olx3KzopP2xlZ2VuZD4oW1xzXFNdKj8pPFwvKD86XHcrOik/bGVnZW5kPi8saFA9LzwoPzpcdys6KT90aXRsZT4oW1xzXFNdKj8pPFwvKD86XHcrOik/dGl0bGU+LztmdW5j''@;'; put 'put ''dGlvbiBCeChILGllLFgsd2UseGUsRmUsWmUsamUpe3ZhciBZZT1GZXx8eyIhdHlwZSI6ImNoYXJ0In07aWYoIUgpcmV0dXJuIEZlO1plJiZaZS5BbmNob3ImJihZZVsiIXBvcyJdPXlmKFplLkFuY2hvcixqZSksWWVbIiFwb3NUeXBlIl09WmUuQW5jaG9yLnR5cGUucmVwbGFjZSgvQW5jaG9y''@;'; put 'put ''LywiIiksWWVbIiFhYnNwb3MiXT15ZihaZS5BbmNob3IsamUpLFllWyIhcmVscG9zIl09T2IoWmUuQW5jaG9yLGplKSksWWVbIiFwbG90Il09W107dmFyIE10PSIiLHh0PSIiLFJ0PUgubWF0Y2goT3gpO1J0PyhNdD1ILnNsaWNlKDAsUnQuaW5kZXgpLHh0PUguc2xpY2UoUnQuaW5kZXgrUnRb''@;'; put 'put ''MF0ubGVuZ3RoKSk6TXQ9eHQ9SDt2YXIgVXQ9W10sbm49TXQubWF0Y2goLzxjOmxhbmcuKj8+Lyl8fEgubWF0Y2goLzxjOmxhbmcuKj8+Lyl8fHh0Lm1hdGNoKC88YzpsYW5nLio/Pi8pO3JldHVybiBubiYmKFllWyIhbGFuZyJdPShlbihublswXSl8fHt9KS52YWx8fCJlbi1VUyIpLFJ0JiYo''@;'; put 'put ''KFV0PVJ0WzFdLm1hdGNoKGhQKSkmJmZ1bmN0aW9uIEx4KEgsaWUpe3ZhciBYPSIiO0gubWF0Y2goLzxjOnJpY2g+LykmJkgucmVwbGFjZSgvPGE6dD4oW1xzXFNdKj8pPFwvYTp0Pi9nLGZ1bmN0aW9uKHdlLHhlKXtYKz14ZX0pLGllWyIhdGl0bGUiXT1YfHwiQ2hhcnQgVGl0bGUifShVdFsx''@;'; put 'put ''XSxZZSksZnVuY3Rpb24gZFAoSCxpZSl7aWYoSCl7dmFyIFg9MCx3ZT0wLHhlPSJBIixGZT17czp7cjoyZTYsYzoyZTZ9LGU6e3I6MCxjOjB9fTtILnJlcGxhY2UoUHgsZnVuY3Rpb24oWmUsamUpe3ZhciBZZT17dDpqZSxjOlgsdzowLHNlcjpbXX0sTXQ9W10seHQ9KFplLm1hdGNoKC88Yzpz''@;'; put 'put ''ZXIvKXx8W10pLmluZGV4LFJ0PXh0P1plLnNsaWNlKDAseHQpOlplOyJzY2F0dGVyIj09amUmJihNdD1aZS5tYXRjaCgvPGM6c2NhdHRlclN0eWxlKFteXC8+XSopXC8+L20pKSYmZW4oTXRbMF0pLCJiYXIiPT1qZSYmKE10PVplLm1hdGNoKC88YzpiYXJEaXIoW15cLz5dKilcLz4vbSkpJiYo''@;'; put 'put ''WWUuYmFyRGlyPSJiYXIiPT1lbihNdFswXSkudmFsPyJoIjoidiIpLChNdD1SdC5tYXRjaCgvPGM6Z3JvdXBpbmcoW15cLz5dKilcLz4vbSkpJiYoWWUuZ3JvdXBpbmc9ZW4oTXRbMF0pLnZhbHx8InN0YW5kYXJkIiksKFplLm1hdGNoKGI1KXx8W10pLmZvckVhY2goZnVuY3Rpb24obm4pe3Zh''@;'; put 'put ''ciBDbj1bXSxEdD17fSx6dD1bXTtpZihubi5tYXRjaCgvPGM6dHg+Lykpe3ZhciBQbj1aXygobm4ubWF0Y2goLzxjOnR4PihbXHNcU10qPyk8XC9jOnR4Pi8pfHxbXSlbMV18fCIiKXx8W107UG5bMF0mJlBuWzBdWzBdJiYoRHQubmFtZT1QblswXVswXSksUG5bMl0mJihEdC5uYW1lcmVmPVBu''@;'; put 'put ''WzJdKX1bInhWYWwiLCJ5VmFsIiwiY2F0IiwidmFsIiwiYnViYmxlU2l6ZSJdLmZvckVhY2goZnVuY3Rpb24oVG4pe3ZhciBZbixPbj1ubi5tYXRjaChuZXcgUmVnRXhwKCI8YzoiK1RuKyI+W1xcc1xcU10qPzxcXC9jOiIrVG4rIj4iLCJnbSIpKTtPbiYmKChPblswXS5tYXRjaCgvPGM6Zj4o''@;'; put 'put ''Lio/KTxcL2M6Zj4vZ20pfHxbXSkuZm9yRWFjaChmdW5jdGlvbihNcil7WW49TXIucmVwbGFjZSgvPC4qPz4vZywiIil9KSwoT25bMF0ubWF0Y2goLzxjOig/Olx3KilDYWNoZT5bXHNcU10qPzxcL2M6KD86XHcqKUNhY2hlPi9nbSl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKE1yKXt2YXIgYWk9''@;'; put 'put ''Wl8oTXIpO0ZlLnMucj1GZS5zLmM9MCxGZS5lLmM9WCx4ZT1fYShYKSxhaVswXS5mb3JFYWNoKGZ1bmN0aW9uKHlyLGFyKXtpZVt4ZStYYShhcildPXt0OiJudW1iZXIiPT10eXBlb2YgeXI/Im4iOiJzIix2OnlyLHo6YWlbMV19LHdlPWFyfSksRmUuZS5yPHdlJiYoRmUuZS5yPXdlKSwrK1gs''@;'; put 'put ''WWUudysrLENuLnB1c2goVG4pLChhaVsyXXx8WW4pJiZ6dC5wdXNoKGFpWzJdfHxZbiksInZhbCI9PVRuJiYoRHQuej1haVsxXXx8IkdlbmVyYWwiKX0pKX0pLChNdD1aZS5tYXRjaCgvPGM6c21vb3RoKFteXC8+XSopXC8+L20pKSYmKER0LnNtb290aD1udWxsPT1lbihNdFswXSkudmFsfHxE''@;'; put 'put ''aShlbihNdFswXSkudmFsKSksRHQuY29scz1DbixEdC5yYW5nZXM9enQsWWUuc2VyLnB1c2goRHQpfSksImRvdWdobnV0Ij09amUmJihNdD1aZS5tYXRjaCgvPGM6aG9sZVNpemUoW15cLz5dKilcLz4vbSkpJiYoWWUuaG9sZT0oZW4oTXRbMF0pLnZhbHx8MTApLzEwMCksaWVbIiFwbG90Il0u''@;'; put 'put ''cHVzaChZZSl9KSxYPjAmJihpZVsiIXJlZiJdPWZhKEZlKSl9fSgoUnRbMV0ubWF0Y2goZlApfHxbXSlbMV0sWWUpLG51bGwhPShVdD1SdFsxXS5tYXRjaChSeCkpJiZmdW5jdGlvbiBVMShILGllKXt2YXIgWDtpZVsiIWxlZ2VuZCJdPXtwb3M6InIifSwoWD1ILm1hdGNoKC88YzpsZWdlbmRQ''@;'; put 'put ''b3MoW15cLz5dKilcLz4vbSkpJiYoaWVbIiFsZWdlbmQiXS5wb3M9ZW4oWFswXSkudmFsfHwiciIpfShVdFswXSxZZSkpLFllfXZhciBQeD0vPGM6KCg/OmFyZWF8bGluZXxzdG9ja3xyYWRhcnxzY2F0dGVyfHBpZXxkb3VnaG51dHxiYXJ8b2ZQaWV8c3VyZmFjZXxidWJibGUpKD86M0QpPylD''@;'; put 'put ''aGFydFtePl0qPihbXHNcU10qPyk8XC9jOig/OmFyZWF8bGluZXxzdG9ja3xyYWRhcnxzY2F0dGVyfHBpZXxkb3VnaG51dHxiYXJ8b2ZQaWV8c3VyZmFjZXxidWJibGUpKD86M0QpP0NoYXJ0Pi9nbSxiNT0vPGM6c2VyPihbXHNcU10qPyk8XC9jOnNlcj4vZ207ZHQuQ1M9Imh0dHA6Ly9zY2hl''@;'; put 'put ''bWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY2hhcnRzaGVldCI7dmFyIHBQPV9pKCJjaGFydHNoZWV0IixudWxsLHt4bWxuczpYMC5tYWluWzBdLCJ4bWxuczpyIjpYMC5yfSk7ZnVuY3Rpb24gZ1AoSCxpZSxYLHdlKXt2YXIgeGU9W2Nu''@;'; put 'put ''LHBQXTtyZXR1cm4geGUucHVzaCgiPHNoZWV0UHIvPiIpLHhlLnB1c2goJzxzaGVldFZpZXdzPjxzaGVldFZpZXcgem9vbVNjYWxlPSIxMDAiIHdvcmtib29rVmlld0lkPSIwIiB6b29tVG9GaXQ9IjEiLz48L3NoZWV0Vmlld3M+JykseGVbeGUubGVuZ3RoXT1faSgiZHJhd2luZyIsbnVsbCx7''@;'; put 'put ''InI6aWQiOiJySWQxIn0pLFh0KHdlLC0xLCIuLi9kcmF3aW5ncy9kcmF3aW5nIisoSCsxKSsiLnhtbCIsZHQuRFJBVykseGUubGVuZ3RoPjImJih4ZVt4ZS5sZW5ndGhdPSI8L2NoYXJ0c2hlZXQ+Iix4ZVsxXT14ZVsxXS5yZXBsYWNlKCIvPiIsIj4iKSkseGUuam9pbigiIil9ZnVuY3Rpb24g''@;'; put 'put ''TmQoKXt2YXIgSD1KMigpO3JldHVybiBDMChILCJCcnRCZWdpblNoZWV0IiksQzAoSCwiQnJ0RW5kU2hlZXQiKSxILmVuZCgpfXZhciBGaT1bWyJhbGxvd1JlZnJlc2hRdWVyeSIsITEsImJvb2wiXSxbImF1dG9Db21wcmVzc1BpY3R1cmVzIiwhMCwiYm9vbCJdLFsiYmFja3VwRmlsZSIsITEs''@;'; put 'put ''ImJvb2wiXSxbImNoZWNrQ29tcGF0aWJpbGl0eSIsITEsImJvb2wiXSxbIkNvZGVOYW1lIiwiIl0sWyJkYXRlMTkwNCIsITEsImJvb2wiXSxbImRlZmF1bHRUaGVtZVZlcnNpb24iLDAsImludCJdLFsiZmlsdGVyUHJpdmFjeSIsITEsImJvb2wiXSxbImhpZGVQaXZvdEZpZWxkTGlzdCIsITEs''@;'; put 'put ''ImJvb2wiXSxbInByb21wdGVkU29sdXRpb25zIiwhMSwiYm9vbCJdLFsicHVibGlzaEl0ZW1zIiwhMSwiYm9vbCJdLFsicmVmcmVzaEFsbENvbm5lY3Rpb25zIiwhMSwiYm9vbCJdLFsic2F2ZUV4dGVybmFsTGlua1ZhbHVlcyIsITAsImJvb2wiXSxbInNob3dCb3JkZXJVbnNlbGVjdGVkVGFi''@;'; put 'put ''bGVzIiwhMCwiYm9vbCJdLFsic2hvd0lua0Fubm90YXRpb24iLCEwLCJib29sIl0sWyJzaG93T2JqZWN0cyIsImFsbCJdLFsic2hvd1Bpdm90Q2hhcnRGaWx0ZXIiLCExLCJib29sIl0sWyJ1cGRhdGVMaW5rcyIsInVzZXJTZXQiXV0sUjM9W1siYWN0aXZlVGFiIiwwLCJpbnQiXSxbImF1dG9G''@;'; put 'put ''aWx0ZXJEYXRlR3JvdXBpbmciLCEwLCJib29sIl0sWyJmaXJzdFNoZWV0IiwwLCJpbnQiXSxbIm1pbmltaXplZCIsITEsImJvb2wiXSxbInNob3dIb3Jpem9udGFsU2Nyb2xsIiwhMCwiYm9vbCJdLFsic2hvd1NoZWV0VGFicyIsITAsImJvb2wiXSxbInNob3dWZXJ0aWNhbFNjcm9sbCIsITAs''@;'; put 'put ''ImJvb2wiXSxbInRhYlJhdGlvIiw2MDAsImludCJdLFsidmlzaWJpbGl0eSIsInZpc2libGUiXV0sdlA9W10sTng9W1siY2FsY0NvbXBsZXRlZCIsInRydWUiXSxbImNhbGNNb2RlIiwiYXV0byJdLFsiY2FsY09uU2F2ZSIsInRydWUiXSxbImNvbmN1cnJlbnRDYWxjIiwidHJ1ZSJdLFsiZnVs''@;'; put 'put ''bENhbGNPbkxvYWQiLCJmYWxzZSJdLFsiZnVsbFByZWNpc2lvbiIsInRydWUiXSxbIml0ZXJhdGUiLCJmYWxzZSJdLFsiaXRlcmF0ZUNvdW50IiwiMTAwIl0sWyJpdGVyYXRlRGVsdGEiLCIwLjAwMSJdLFsicmVmTW9kZSIsIkExIl1dO2Z1bmN0aW9uIFBoKEgsaWUpe2Zvcih2YXIgWD0wO1gh''@;'; put 'put ''PUgubGVuZ3RoOysrWClmb3IodmFyIHdlPUhbWF0seGU9MDt4ZSE9aWUubGVuZ3RoOysreGUpe3ZhciBGZT1pZVt4ZV07aWYobnVsbD09d2VbRmVbMF1dKXdlW0ZlWzBdXT1GZVsxXTtlbHNlIHN3aXRjaChGZVsyXSl7Y2FzZSJib29sIjoic3RyaW5nIj09dHlwZW9mIHdlW0ZlWzBdXSYmKHdl''@;'; put 'put ''W0ZlWzBdXT1EaSh3ZVtGZVswXV0pKTticmVhaztjYXNlImludCI6InN0cmluZyI9PXR5cGVvZiB3ZVtGZVswXV0mJih3ZVtGZVswXV09cGFyc2VJbnQod2VbRmVbMF1dLDEwKSl9fX1mdW5jdGlvbiAkZihILGllKXtmb3IodmFyIFg9MDtYIT1pZS5sZW5ndGg7KytYKXt2YXIgd2U9aWVbWF07''@;'; put 'put ''aWYobnVsbD09SFt3ZVswXV0pSFt3ZVswXV09d2VbMV07ZWxzZSBzd2l0Y2god2VbMl0pe2Nhc2UiYm9vbCI6InN0cmluZyI9PXR5cGVvZiBIW3dlWzBdXSYmKEhbd2VbMF1dPURpKEhbd2VbMF1dKSk7YnJlYWs7Y2FzZSJpbnQiOiJzdHJpbmciPT10eXBlb2YgSFt3ZVswXV0mJihIW3dlWzBd''@;'; put 'put ''XT1wYXJzZUludChIW3dlWzBdXSwxMCkpfX19ZnVuY3Rpb24gcWYoSCl7JGYoSC5XQlByb3BzLEZpKSwkZihILkNhbGNQcixOeCksUGgoSC5XQlZpZXcsUjMpLFBoKEguU2hlZXRzLHZQKSxVYy5kYXRlMTkwND1EaShILldCUHJvcHMuZGF0ZTE5MDQpfXZhciBqeD0iXVsqPy9cXCIuc3BsaXQo''@;'; put 'put ''IiIpO2Z1bmN0aW9uIFp4KEgsaWUpe2lmKEgubGVuZ3RoPjMxKXtpZihpZSlyZXR1cm4hMTt0aHJvdyBuZXcgRXJyb3IoIlNoZWV0IG5hbWVzIGNhbm5vdCBleGNlZWQgMzEgY2hhcnMiKX12YXIgWD0hMDtyZXR1cm4ganguZm9yRWFjaChmdW5jdGlvbih3ZSl7aWYoLTEhPUguaW5kZXhPZih3''@;'; put 'put ''ZSkpe2lmKCFpZSl0aHJvdyBuZXcgRXJyb3IoIlNoZWV0IG5hbWUgY2Fubm90IGNvbnRhaW4gOiBcXCAvID8gKiBbIF0iKTtYPSExfX0pLFh9dmFyIHp4PS88XHcrOndvcmtib29rLyxXeD1faSgid29ya2Jvb2siLG51bGwse3htbG5zOlgwLm1haW5bMF0sInhtbG5zOnIiOlgwLnJ9KTtmdW5j''@;'; put 'put ''dGlvbiB3UChILGllKXt2YXIgWD1pZXx8e30sd2U9W2NuXTt3ZVt3ZS5sZW5ndGhdPVd4O3ZhciB4ZT1ILldvcmtib29rJiYoSC5Xb3JrYm9vay5OYW1lc3x8W10pLmxlbmd0aD4wO0guV29ya2Jvb2smJkguV29ya2Jvb2suTW9kaWZ5JiYod2Vbd2UubGVuZ3RoXT1mdW5jdGlvbiBfNShIKXt2''@;'; put 'put ''YXIgaWU9e307cmV0dXJuIEgud2FybiYmKGllLnJlYWRPbmx5UmVjb21tZW5kZWQ9MSksaWUudXNlck5hbWU9SC51c2VyfHwiU2hlZXQgSlMiLEguZW5jcnlwdGlvbiYmKEguZW5jcnlwdGlvbi5hbGdvJiYoaWUuYWxnb3JpdGhtTmFtZT1ILmVuY3J5cHRpb24uYWxnbyksSC5lbmNyeXB0aW9u''@;'; put 'put ''Lmhhc2gmJihpZS5oYXNoVmFsdWU9SC5lbmNyeXB0aW9uLmhhc2gpLEguZW5jcnlwdGlvbi5zYWx0JiYoaWUuc2FsdFZhbHVlPUguZW5jcnlwdGlvbi5zYWx0KSxILmVuY3J5cHRpb24uc3BpbiYmKGllLnNwaW5Db3VudD1ILmVuY3J5cHRpb24uc3BpbikpLF9pKCJmaWxlU2hhcmluZyIsbnVs''@;'; put 'put ''bCxpZSl9KEguV29ya2Jvb2suTW9kaWZ5KSk7dmFyIEZlPXtjb2RlTmFtZToiVGhpc1dvcmtib29rIn07SC5Xb3JrYm9vayYmSC5Xb3JrYm9vay5XQlByb3BzJiYoRmkuZm9yRWFjaChmdW5jdGlvbihNdCl7bnVsbCE9SC5Xb3JrYm9vay5XQlByb3BzW010WzBdXSYmSC5Xb3JrYm9vay5XQlBy''@;'; put 'put ''b3BzW010WzBdXSE9TXRbMV0mJihGZVtNdFswXV09SC5Xb3JrYm9vay5XQlByb3BzW010WzBdXSl9KSxILldvcmtib29rLldCUHJvcHMuQ29kZU5hbWUmJihGZS5jb2RlTmFtZT1ILldvcmtib29rLldCUHJvcHMuQ29kZU5hbWUsZGVsZXRlIEZlLkNvZGVOYW1lKSksd2Vbd2UubGVuZ3RoXT1f''@;'; put 'put ''aSgid29ya2Jvb2tQciIsbnVsbCxGZSksSC5Xb3JrYm9vayYmSC5Xb3JrYm9vay5Qcm90ZWN0aW9uJiYod2Vbd2UubGVuZ3RoXT1mdW5jdGlvbiBHeChIKXt2YXIgaWU9e307cmV0dXJuIEgubG9ja1N0cnVjdHVyZSYmKGllLmxvY2tTdHJ1Y3R1cmU9MSksSC5sb2NrV2luZG93cyYmKGllLmxv''@;'; put 'put ''Y2tXaW5kb3dzPTEpLEguZW5jcnlwdGlvbiYmKEguZW5jcnlwdGlvbi5hbGdvJiYoaWUud29ya2Jvb2tBbGdvcml0aG1OYW1lPUguZW5jcnlwdGlvbi5hbGdvKSxILmVuY3J5cHRpb24uaGFzaCYmKGllLndvcmtib29rSGFzaFZhbHVlPUguZW5jcnlwdGlvbi5oYXNoKSxILmVuY3J5cHRpb24u''@;'; put 'put ''c2FsdCYmKGllLndvcmtib29rU2FsdFZhbHVlPUguZW5jcnlwdGlvbi5zYWx0KSxILmVuY3J5cHRpb24uc3BpbiYmKGllLndvcmtib29rU3BpbkNvdW50PUguZW5jcnlwdGlvbi5zcGluKSksX2koIndvcmtib29rUHJvdGVjdGlvbiIsbnVsbCxpZSl9KEguV29ya2Jvb2suUHJvdGVjdGlvbikp''@;'; put 'put ''O3ZhciBaZT1ILldvcmtib29rJiZILldvcmtib29rLlNoZWV0c3x8W10samU9MDtpZihaZSYmWmVbMF0mJlplWzBdLkhpZGRlbil7Zm9yKHdlW3dlLmxlbmd0aF09Ijxib29rVmlld3M+IixqZT0wO2plIT1ILlNoZWV0TmFtZXMubGVuZ3RoJiZaZVtqZV0mJlplW2plXS5IaWRkZW47KytqZSk7''@;'; put 'put ''amU9PUguU2hlZXROYW1lcy5sZW5ndGgmJihqZT0wKSx3ZVt3ZS5sZW5ndGhdPSc8d29ya2Jvb2tWaWV3IGZpcnN0U2hlZXQ9IicramUrJyIgYWN0aXZlVGFiPSInK2plKyciLz4nLHdlW3dlLmxlbmd0aF09IjwvYm9va1ZpZXdzPiJ9Zm9yKHdlW3dlLmxlbmd0aF09IjxzaGVldHM+IixqZT0w''@;'; put 'put ''O2plIT1ILlNoZWV0TmFtZXMubGVuZ3RoOysramUpe3ZhciBZZT17bmFtZTpScihILlNoZWV0TmFtZXNbamVdLnNsaWNlKDAsMzEpKX07aWYoWWUuc2hlZXRJZD0iIisoamUrMSksWWVbInI6aWQiXT0icklkIisoamUrMSksWmVbamVdKXN3aXRjaChaZVtqZV0uSGlkZGVuKXtjYXNlIDE6WWUu''@;'; put 'put ''c3RhdGU9ImhpZGRlbiI7YnJlYWs7Y2FzZSAyOlllLnN0YXRlPSJ2ZXJ5SGlkZGVuIn13ZVt3ZS5sZW5ndGhdPV9pKCJzaGVldCIsbnVsbCxZZSl9cmV0dXJuIHdlW3dlLmxlbmd0aF09Ijwvc2hlZXRzPiIsSC5FeHRlcm5hbFdCJiZILkV4dGVybmFsV0IubGVuZ3RoJiYod2Vbd2UubGVuZ3Ro''@;'; put 'put ''XT0iPGV4dGVybmFsUmVmZXJlbmNlcz4iLChILkV4dGVybmFsV0J8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKE10LHh0KXt2YXIgUnQ9WHQoWC53YnJlbHMsLTEsImV4dGVybmFsTGlua3MvZXh0ZXJuYWxMaW5rIisoeHQrMSkrIi54bWwiLGR0LlhMSU5LKTt3ZVt3ZS5sZW5ndGhdPSc8ZXh0ZXJu''@;'; put 'put ''YWxSZWZlcmVuY2UgcjppZD0icklkJytSdCsnIi8+J30pLHdlW3dlLmxlbmd0aF09IjwvZXh0ZXJuYWxSZWZlcmVuY2VzPiIpLHhlJiYod2Vbd2UubGVuZ3RoXT0iPGRlZmluZWROYW1lcz4iLEguV29ya2Jvb2smJkguV29ya2Jvb2suTmFtZXMmJkguV29ya2Jvb2suTmFtZXMuZm9yRWFjaChm''@;'; put 'put ''dW5jdGlvbihNdCl7dmFyIHh0PXtuYW1lOk10Lk5hbWV9O010LkNvbW1lbnQmJih4dC5jb21tZW50PU10LkNvbW1lbnQpLG51bGwhPU10LlNoZWV0JiYoeHQubG9jYWxTaGVldElkPSIiK010LlNoZWV0KSxNdC5IaWRkZW4mJih4dC5oaWRkZW49IjEiKSxNdC5SZWYmJih3ZVt3ZS5sZW5ndGhd''@;'; put 'put ''PV9pKCJkZWZpbmVkTmFtZSIsUnIoTXQuUmVmKSx4dCkpfSksd2Vbd2UubGVuZ3RoXT0iPC9kZWZpbmVkTmFtZXM+IiksWCYmWC5waXZvdHMmJlgucGl2b3RzLmxlbmd0aD4wJiYod2UucHVzaCgiPHBpdm90Q2FjaGVzPiIpLFgucGl2b3RzLmZvckVhY2goZnVuY3Rpb24oTXQseHQpe3dlLnB1''@;'; put 'put ''c2goJzxwaXZvdENhY2hlIGNhY2hlSWQ9IicrKHh0KzEpKyciIHI6aWQ9InJJZCcrTXRbMl0rJyIvPicpfSksd2UucHVzaCgiPC9waXZvdENhY2hlcz4iKSksd2UubGVuZ3RoPjImJih3ZVt3ZS5sZW5ndGhdPSI8L3dvcmtib29rPiIsd2VbMV09d2VbMV0ucmVwbGFjZSgiLz4iLCI+IikpLHdl''@;'; put 'put ''LmpvaW4oIiIpfWZ1bmN0aW9uIFdfKEgsaWUpe3JldHVybiBpZXx8KGllPVJpKDEyNykpLGllLndyaXRlX3NoaWZ0KDQsSC5IaWRkZW4pLGllLndyaXRlX3NoaWZ0KDQsSC5pVGFiSUQpLHpwKEguc3RyUmVsSUQsaWUpLGx1KEgubmFtZS5zbGljZSgwLDMxKSxpZSksaWUubGVuZ3RoPmllLmw/''@;'; put 'put ''aWUuc2xpY2UoMCxpZS5sKTppZX1mdW5jdGlvbiBHbShILGllKXt2YXIgWD17fTtyZXR1cm4gSC5yZWFkX3NoaWZ0KDQpLFguQXJjaElEPUgucmVhZF9zaGlmdCg0KSxILmwrPWllLTgsWH1mdW5jdGlvbiBZXyhILGllKXt2YXIgWD1KMigpO3JldHVybiBDMChYLCJCcnRCZWdpbkJvb2siKSxD''@;'; put 'put ''MChYLCJCcnRGaWxlVmVyc2lvbiIsZnVuY3Rpb24gRmgoSCxpZSl7aWV8fChpZT1SaSgxMjcpKTtmb3IodmFyIFg9MDs0IT1YOysrWClpZS53cml0ZV9zaGlmdCg0LDApO3JldHVybiBsdSgiU2hlZXRKUyIsaWUpLGx1KFUudmVyc2lvbixpZSksbHUoVS52ZXJzaW9uLGllKSxsdSgiNzI2MiIs''@;'; put 'put ''aWUpLGllLmxlbmd0aD5pZS5sP2llLnNsaWNlKDAsaWUubCk6aWV9KCkpLEMwKFgsIkJydFdiUHJvcCIsZnVuY3Rpb24gTHUoSCxpZSl7aWV8fChpZT1SaSg3MikpO3ZhciBYPTA7cmV0dXJuIEgmJkguZmlsdGVyUHJpdmFjeSYmKFh8PTgpLGllLndyaXRlX3NoaWZ0KDQsWCksaWUud3JpdGVf''@;'; put 'put ''c2hpZnQoNCwwKSxUTShIJiZILkNvZGVOYW1lfHwiVGhpc1dvcmtib29rIixpZSksaWUuc2xpY2UoMCxpZS5sKX0oSC5Xb3JrYm9vayYmSC5Xb3JrYm9vay5XQlByb3BzfHxudWxsKSksZnVuY3Rpb24gU0EoSCxpZSl7aWYoaWUuV29ya2Jvb2smJmllLldvcmtib29rLlNoZWV0cyl7Zm9yKHZh''@;'; put 'put ''ciBYPWllLldvcmtib29rLlNoZWV0cyx3ZT0wLHhlPS0xLEZlPS0xO3dlPFgubGVuZ3RoOysrd2UpIVhbd2VdfHwhWFt3ZV0uSGlkZGVuJiYtMT09eGU/eGU9d2U6MT09WFt3ZV0uSGlkZGVuJiYtMT09RmUmJihGZT13ZSk7RmU+eGV8fChDMChILCJCcnRCZWdpbkJvb2tWaWV3cyIpLEMwKEgs''@;'; put 'put ''IkJydEJvb2tWaWV3IixmdW5jdGlvbiBrZihILGllKXtyZXR1cm4gaWV8fChpZT1SaSgyOSkpLGllLndyaXRlX3NoaWZ0KC00LDApLGllLndyaXRlX3NoaWZ0KC00LDQ2MCksaWUud3JpdGVfc2hpZnQoNCwyODgwMCksaWUud3JpdGVfc2hpZnQoNCwxNzYwMCksaWUud3JpdGVfc2hpZnQoNCw1''@;'; put 'put ''MDApLGllLndyaXRlX3NoaWZ0KDQsSCksaWUud3JpdGVfc2hpZnQoNCxIKSxpZS53cml0ZV9zaGlmdCgxLDEyMCksaWUubGVuZ3RoPmllLmw/aWUuc2xpY2UoMCxpZS5sKTppZX0oeGUpKSxDMChILCJCcnRFbmRCb29rVmlld3MiKSl9fShYLEgpLGZ1bmN0aW9uIEppKEgsaWUpe0MwKEgsIkJy''@;'; put 'put ''dEJlZ2luQnVuZGxlU2hzIik7Zm9yKHZhciBYPTA7WCE9aWUuU2hlZXROYW1lcy5sZW5ndGg7KytYKUMwKEgsIkJydEJ1bmRsZVNoIixXXyh7SGlkZGVuOmllLldvcmtib29rJiZpZS5Xb3JrYm9vay5TaGVldHMmJmllLldvcmtib29rLlNoZWV0c1tYXSYmaWUuV29ya2Jvb2suU2hlZXRzW1hd''@;'; put 'put ''LkhpZGRlbnx8MCxpVGFiSUQ6WCsxLHN0clJlbElEOiJySWQiKyhYKzEpLG5hbWU6aWUuU2hlZXROYW1lc1tYXX0pKTtDMChILCJCcnRFbmRCdW5kbGVTaHMiKX0oWCxIKSxDMChYLCJCcnRFbmRCb29rIiksWC5lbmQoKX1mdW5jdGlvbiBYeChILGllLFgsd2UseGUpe3JldHVybigiLmJpbiI9''@;'; put 'put ''PT1pZS5zbGljZSgtNCk/RHg6JEIpKEgsWCx3ZSx4ZSl9ZnVuY3Rpb24gTVAoSCxpZSxYLHdlLHhlKXtyZXR1cm4oIi5iaW4iPT09aWUuc2xpY2UoLTQpP05kOmdQKShILFgsd2UseGUpfWZ1bmN0aW9uIEVQKEgsaWUsWCl7cmV0dXJuKCIuYmluIj09PWllLnNsaWNlKC00KT9PUjp0RSkoSCxY''@;'; put 'put ''KX1mdW5jdGlvbiB4UChILGllLFgpe3JldHVybigiLmJpbiI9PT1pZS5zbGljZSgtNCk/VWI6V2IpKEgsWCl9dmFyIFhfPS8oW1x3Ol0rKT0oKD86IikoW14iXSopKD86Iil8KD86JykoW14nXSopKD86JykpL2csJHg9LyhbXHc6XSspPSgoPzoiKSg/OlteIl0qKSg/OiIpfCg/OicpKD86W14n''@;'; put 'put ''XSopKD86JykpLztmdW5jdGlvbiBuYyhILGllKXt2YXIgWD1ILnNwbGl0KC9ccysvKSx3ZT1bXTtpZihpZXx8KHdlWzBdPVhbMF0pLDE9PT1YLmxlbmd0aClyZXR1cm4gd2U7dmFyIEZlLFplLFllLHhlPUgubWF0Y2goWF8pO2lmKHhlKWZvcihZZT0wO1llIT14ZS5sZW5ndGg7KytZZSktMT09''@;'; put 'put ''PShaZT0oRmU9eGVbWWVdLm1hdGNoKCR4KSlbMV0uaW5kZXhPZigiOiIpKT93ZVtGZVsxXV09RmVbMl0uc2xpY2UoMSxGZVsyXS5sZW5ndGgtMSk6d2VbInhtbG5zOiI9PT1GZVsxXS5zbGljZSgwLDYpPyJ4bWxucyIrRmVbMV0uc2xpY2UoNik6RmVbMV0uc2xpY2UoWmUrMSldPUZlWzJdLnNs''@;'; put 'put ''aWNlKDEsRmVbMl0ubGVuZ3RoLTEpO3JldHVybiB3ZX1mdW5jdGlvbiBxeChIKXt2YXIgWD17fTtpZigxPT09SC5zcGxpdCgvXHMrLykubGVuZ3RoKXJldHVybiBYO3ZhciB4ZSxGZSxqZSx3ZT1ILm1hdGNoKFhfKTtpZih3ZSlmb3IoamU9MDtqZSE9d2UubGVuZ3RoOysramUpLTE9PT0oRmU9''@;'; put 'put ''KHhlPXdlW2plXS5tYXRjaCgkeCkpWzFdLmluZGV4T2YoIjoiKSk/WFt4ZVsxXV09eGVbMl0uc2xpY2UoMSx4ZVsyXS5sZW5ndGgtMSk6WFsieG1sbnM6Ij09PXhlWzFdLnNsaWNlKDAsNik/InhtbG5zIit4ZVsxXS5zbGljZSg2KTp4ZVsxXS5zbGljZShGZSsxKV09eGVbMl0uc2xpY2UoMSx4''@;'; put 'put ''ZVsyXS5sZW5ndGgtMSk7cmV0dXJuIFh9ZnVuY3Rpb24gV20oSCl7dmFyIGllPXt9O2lmKEguRGVmYXVsdFJvd0hlaWdodCl7dmFyIFg9e2hweDo0KnBhcnNlSW50KEguRGVmYXVsdFJvd0hlaWdodCkvM307SjgoWCksaWUucm93PVh9aWYoSC5EZWZhdWx0Q29sV2lkdGgpe3ZhciB3ZT17d3B4''@;'; put 'put ''OjQqcGFyc2VJbnQoSC5EZWZhdWx0Q29sV2lkdGgpLzN9O3ljKHdlKSxpZS5jb2w9d2V9cmV0dXJuIGllfWZ1bmN0aW9uIEhoKEgsaWUsWCx3ZSl7dmFyIHhlPXdlO3N3aXRjaCgoWFswXS5tYXRjaCgvZHQ6ZHQ9IihbXHcuXSspIi8pfHxbIiIsIiJdKVsxXSl7Y2FzZSJib29sZWFuIjp4ZT1E''@;'; put 'put ''aSh3ZSk7YnJlYWs7Y2FzZSJpMiI6Y2FzZSJpbnQiOnhlPXBhcnNlSW50KHdlLDEwKTticmVhaztjYXNlInI0IjpjYXNlImZsb2F0Ijp4ZT1wYXJzZUZsb2F0KHdlKTticmVhaztjYXNlImRhdGUiOmNhc2UiZGF0ZVRpbWUudHoiOnhlPWRuKHdlKTticmVhaztjYXNlImk4IjpjYXNlInN0cmlu''@;'; put 'put ''ZyI6Y2FzZSJmaXhlZCI6Y2FzZSJ1dWlkIjpjYXNlImJpbi5iYXNlNjQiOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJiYWQgY3VzdHByb3A6IitYWzBdKX1IW2dyKGllKV09eGV9dmFyIEtfPXswOiJOb25lIiwxOiJTaW5nbGUiLDI6IkRvdWJsZSIsMzM6IlNpbmdsZUFjY291bnRp''@;'; put 'put ''bmciLDM0OiJEb3VibGVBY2NvdW50aW5nIn0sdFQ9ZXQoS18pO2Z1bmN0aW9uIG5UKEgsaWUsWCx3ZSl7aWYod2UuY2VsbFN0eWxlcyl7aWYoWD1YLnJlcGxhY2UoL1xzKy9nLCIgIiksaWUuSW50ZXJpb3Ipe3ZhciB4ZT1pZS5JbnRlcmlvcjt4ZS5QYXR0ZXJuJiYoeGUucGF0dGVyblR5cGU9''@;'; put 'put ''alJbeGUuUGF0dGVybl18fHhlLlBhdHRlcm4pLHhlLkNvbG9yJiZ4ZS5Db2xvci5tYXRjaCgvI1swLTlBLUZhLWZdKi8pJiYoeGUuZmdDb2xvcj17cmdiOnhlLkNvbG9yLnNsaWNlKDEpfSl9IWZ1bmN0aW9uIEQ2KEgpeyFILkJvcmRlcnN8fChILkJvcmRlcnMuZm9yRWFjaChmdW5jdGlvbihp''@;'; put 'put ''ZSl7dmFyIFg9aWUuUG9zaXRpb24udG9Mb3dlckNhc2UoKTtIW1hdPXtzdHlsZTpyVChpZS5MaW5lU3R5bGUsK2llLldlaWdodCksY29sb3I6e3JnYjooaWUuQ29sb3J8fCIjMDAwMDAwIikuc2xpY2UoMSl9fX0pLGRlbGV0ZSBILkJvcmRlcnMpfShpZSk7dmFyIFplLEZlPVgubWF0Y2goLzwo''@;'; put 'put ''Pzpcdys6KT9Gb250XHNbXj5dKj4vKTtGZSYmKERpKChaZT1lbihGZVswXSkpLkJvbGQpJiYoaWUuQm9sZD0hMCksRGkoWmUuSXRhbGljKSYmKGllLkl0YWxpYz0hMCksRGkoWmUuU3RyaWtlVGhyb3VnaCkmJihpZS5TdHJpa2U9ITApLFplLlNpemUmJihpZS5TaXplPStaZS5TaXplKSxpZS5G''@;'; put 'put ''b250TmFtZT1aZS5Gb250TmFtZT9aZS5Gb250TmFtZToiQXJpYWwiLFplLlVuZGVybGluZSYmKGllLlVuZGVybGluZT10VFtaZS5VbmRlcmxpbmVdKSxaZS5Db2xvciYmKGllLlJHQj1aZS5Db2xvci5zbGljZSgtNikpKSxpZS5BbGlnbm1lbnQmJihpZS5hbGlnbm1lbnQ9e30saWUuQWxpZ25t''@;'; put 'put ''ZW50LlZlcnRpY2FsJiYoaWUuYWxpZ25tZW50LnZlcnRpY2FsPWllLkFsaWdubWVudC5WZXJ0aWNhbC50b0xvd2VyQ2FzZSgpKSxpZS5BbGlnbm1lbnQuSG9yaXpvbnRhbCYmKGllLmFsaWdubWVudC5ob3Jpem9udGFsPWllLkFsaWdubWVudC5Ib3Jpem9udGFsLnRvTG93ZXJDYXNlKCkpLERp''@;'; put 'put ''KGllLkFsaWdubWVudC5XcmFwVGV4dHx8IjAiKT9pZS5hbGlnbm1lbnQud3JhcFRleHQ9ITA6bnVsbD09aWUuQWxpZ25tZW50LldyYXBUZXh0JiZkZWxldGUgaWUuYWxpZ25tZW50LndyYXBUZXh0LERpKGllLkFsaWdubWVudC5TaHJpbmtUb0ZpdHx8IjAiKSYmKGllLmFsaWdubWVudC5zaHJp''@;'; put 'put ''bmtUb0ZpdD0hMCksK2llLkFsaWdubWVudC5JbmRlbnQmJihpZS5hbGlnbm1lbnQuaW5kZW50PStpZS5BbGlnbm1lbnQuSW5kZW50fHwwKSwraWUuQWxpZ25tZW50LlJvdGF0ZSYmKGllLmFsaWdubWVudC50ZXh0Um90YXRpb249K2llLkFsaWdubWVudC5Sb3RhdGV8fDApKX1IW2llLklEXT1p''@;'; put 'put ''ZSwoIkRlZmF1bHQiPT1pZS5JRHx8Ik5vcm1hbCI9PWllLk5hbWUpJiZTMyhpZSl9ZnVuY3Rpb24gclQoSCxpZSl7c3dpdGNoKEgpe2Nhc2UiTm9uZSI6cmV0dXJuIm5vbmUiO2Nhc2UiRGFzaCI6cmV0dXJuImRhc2hlZCI7Y2FzZSJEb3QiOnJldHVybiJkb3R0ZWQiO2Nhc2UiRGFzaERvdCI6''@;'; put 'put ''cmV0dXJuImRhc2hEb3QiO2Nhc2UiRGFzaERvdERvdCI6cmV0dXJuImRhc2hEb3REb3QiO2Nhc2UiU2xhbnREYXNoRG90IjpyZXR1cm4ic2xhbnREYXNoRG90IjtjYXNlIkRvdWJsZSI6cmV0dXJuImRvdWJsZSI7Y2FzZSJDb250aW51b3VzIjpzd2l0Y2goK2llfHwwKXtjYXNlIDA6cmV0dXJu''@;'; put 'put ''ImhhaXIiO2Nhc2UgMTpyZXR1cm4idGhpbiI7Y2FzZSAyOnJldHVybiJtZWRpdW0iO2Nhc2UgMzpyZXR1cm4idGhpY2sifXJldHVybiJ0aGluIn1yZXR1cm4gSH1mdW5jdGlvbiAkXyhILGllLFgsd2UseGUsRmUsWmUsamUsWWUsTXQpe3ZhciB4dD0iR2VuZXJhbCIsUnQ9d2UuU3R5bGVJRCxV''@;'; put 'put ''dD17fTtNdD1NdHx8e307dmFyIG5uPVtdLENuPTA7Zm9yKHZvaWQgMD09PVJ0JiZqZSYmKFJ0PWplLlN0eWxlSUQpLHZvaWQgMD09PVJ0JiZaZSYmKFJ0PVplLlN0eWxlSUQpO3ZvaWQgMCE9PUZlW1J0XTspe3ZhciBEdD1GZVtSdF07aWYoIkdlbmVyYWwiPT14dCYmRHQubmYmJih4dD1GZVtS''@;'; put 'put ''dF0ubmYpLER0LkludGVyaW9yJiZubi5wdXNoKEZlW1J0XS5JbnRlcmlvciksRHQuYWxpZ25tZW50JiYoVXQuYWxpZ25tZW50fHwoVXQuYWxpZ25tZW50PWxuKER0LmFsaWdubWVudCkpKSxudWxsPT1VdC5ib2xkJiZEdC5Cb2xkJiYoVXQuYm9sZD0hMCksbnVsbD09VXQuaXRhbGljJiZEdC5J''@;'; put 'put ''dGFsaWMmJihVdC5pdGFsaWM9ITApLG51bGw9PVV0LnN0cmlrZSYmRHQuU3RyaWtlJiYoVXQuc3RyaWtlPSEwKSxudWxsPT1VdC5zeiYmRHQuU2l6ZSYmKFV0LnN6PUR0LlNpemUpLG51bGw9PVV0Lm5hbWUmJkR0LkZvbnROYW1lJiYoVXQubmFtZT1EdC5Gb250TmFtZSksbnVsbD09VXQudW5k''@;'; put 'put ''ZXJsaW5lJiZEdC5VbmRlcmxpbmUmJihVdC51bmRlcmxpbmU9RHQuVW5kZXJsaW5lKSxudWxsPT1VdC5jb2xvciYmRHQuUkdCJiYoVXQuY29sb3I9e3JnYjpEdC5SR0J9KSxbInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCJdLmZvckVhY2goZnVuY3Rpb24oT24pe251bGw9PVV0W09uXSYm''@;'; put 'put ''RHRbT25dJiYoVXRbT25dPWxuKER0W09uXSkpfSksIkRlZmF1bHQiPT1SdClicmVhaztSdD1EdC5QYXJlbnR8fCJEZWZhdWx0In1VdC5uYW1lfHwoVXQubmFtZT1GZS5EZWZhdWx0JiZGZS5EZWZhdWx0LkZvbnROYW1lfHwiQXJpYWwiKSxVdC5zenx8KFV0LnN6PUZlLkRlZmF1bHQmJkZlLkRl''@;'; put 'put ''ZmF1bHQuU2l6ZXx8MTIpO3ZhciB6dD0iIjtpZihIfHx3ZS5Gb3JtdWxhfHwiU3RyaW5nIj09WC5UeXBlfHwiTnVtYmVyIj09WC5UeXBlKXN3aXRjaChYLlR5cGUpe2Nhc2UiQm9vbGVhbiI6d2UudD0iYiIsd2Uudj1EaShIKTticmVhaztjYXNlIlN0cmluZyI6d2UudD0icyIsenQ9bTAoZ3Io''@;'; put 'put ''SCkpLHdlLnY9SC5pbmRleE9mKCI8Iik+LTE/Z3IoaWV8fEgpLnJlcGxhY2UoLzxbXl0qPz4vZywiIik6enQsSC5pbmRleE9mKCI8Iik+LTEmJih3ZS5SPXVzLmh0bWxfdG9fcnMoZ3IoSCkpKTticmVhaztjYXNlIkRhdGVUaW1lIjoiWiIhPUguc2xpY2UoLTEpJiYoSCs9IloiKSx3ZS52PShk''@;'; put 'put ''bihIKS1uZXcgRGF0ZShEYXRlLlVUQygxODk5LDExLDMwKSkpLzg2NGU1LHdlLnYhPXdlLnY/d2Uudj1ncihIKTp3ZS52PDYwJiYod2Uudj13ZS52LTEpLCgheHR8fCJHZW5lcmFsIj09eHQpJiYoeHQ9Inl5eXktbW0tZGQiKTtjYXNlIk51bWJlciI6dm9pZCAwPT09d2UudiYmKHdlLnY9K0gp''@;'; put 'put ''LHdlLnR8fCh3ZS50PSJuIik7YnJlYWs7Y2FzZSJFcnJvciI6d2UudD0iZSIsd2Uudj1faFtIXSwhMSE9PU10LmNlbGxUZXh0JiYod2Uudz1IKTticmVhaztkZWZhdWx0OiIiPT1IJiYiIj09aWU/d2UudD0ieiI6KHdlLnQ9InMiLHp0PW0wKGdyKEgpKSx3ZS52PUguaW5kZXhPZigiPCIpPi0x''@;'; put 'put ''P2dyKGllfHxIKS5yZXBsYWNlKC88W15dKj8+L2csIiIpOnp0LEguaW5kZXhPZigiPCIpPi0xJiYod2UuUj11cy5odG1sX3RvX3JzKGdyKEgpKSkpfWVsc2Ugd2UudD0ieiIsZGVsZXRlIHdlLnY7aWYoZnVuY3Rpb24gZVQoSCxpZSxYKXtpZigieiIhPT1ILnQpe2lmKCFYfHwhMSE9PVguY2Vs''@;'; put 'put ''bFRleHQpdHJ5e0gudz0iZSI9PT1ILnQ/SC53fHxOMVtILnZdOiJHZW5lcmFsIj09PWllPyJuIj09PUgudD8oMHxILnYpPT09SC52P0YuX2dlbmVyYWxfaW50KEgudik6Ri5fZ2VuZXJhbF9udW0oSC52KTpGLl9nZW5lcmFsKEgudik6ZnVuY3Rpb24gWW0oSCxpZSl7dmFyIFg9Q2VbSF18fGdy''@;'; put 'put ''KEgpO3JldHVybiJHZW5lcmFsIj09PVg/Ri5fZ2VuZXJhbChpZSk6Ri5mb3JtYXQoWCxpZSl9KGllfHwiR2VuZXJhbCIsSC52KX1jYXRjaChGZSl7aWYoWC5XVEYpdGhyb3cgRmV9dHJ5e3ZhciB3ZT1DZVtpZV18fGllfHwiR2VuZXJhbCI7aWYoWC5jZWxsTkYmJihILno9d2UpLFguY2VsbERh''@;'; put 'put ''dGVzJiYibiI9PUgudCYmRi5pc19kYXRlKHdlKSl7dmFyIHhlPUYucGFyc2VfZGF0ZV9jb2RlKEgudik7eGUmJihILnQ9ImQiLEgudj1uZXcgRGF0ZSh4ZS55LHhlLm0tMSx4ZS5kLHhlLkgseGUuTSx4ZS5TLHhlLnUpKX19Y2F0Y2goRmUpe2lmKFguV1RGKXRocm93IEZlfX19KHdlLHh0LE10''@;'; put 'put ''KSwhMSE9PU10LmNlbGxGb3JtdWxhKWlmKHdlLkZvcm11bGEpe3ZhciBQbj1ncih3ZS5Gb3JtdWxhKTs2MT09UG4uY2hhckNvZGVBdCgwKSYmKFBuPVBuLnNsaWNlKDEpKSx3ZS5mPUQzKFBuLHhlKSxkZWxldGUgd2UuRm9ybXVsYSwiUkMiPT13ZS5BcnJheVJhbmdlP3dlLkY9RDMoIlJDOlJD''@;'; put 'put ''Iix4ZSk6d2UuQXJyYXlSYW5nZSYmKHdlLkY9RDMod2UuQXJyYXlSYW5nZSx4ZSksWWUucHVzaChbRm8od2UuRiksd2UuRl0pKX1lbHNlIGZvcihDbj0wO0NuPFllLmxlbmd0aDsrK0NuKXhlLnI+PVllW0NuXVswXS5zLnImJnhlLnI8PVllW0NuXVswXS5lLnImJnhlLmM+PVllW0NuXVswXS5z''@;'; put 'put ''LmMmJnhlLmM8PVllW0NuXVswXS5lLmMmJih3ZS5GPVllW0NuXVsxXSk7aWYoTXQuY2VsbFN0eWxlcyYmKG5uLmZvckVhY2goZnVuY3Rpb24oT24peyFVdC5wYXR0ZXJuVHlwZSYmT24ucGF0dGVyblR5cGUmJihVdC5wYXR0ZXJuVHlwZT1Pbi5wYXR0ZXJuVHlwZSksIVV0LmZnQ29sb3ImJk9u''@;'; put 'put ''LmZnQ29sb3ImJihVdC5mZ0NvbG9yPU9uLmZnQ29sb3IpfSksd2Uucz1VdCksdm9pZCAwIT09d2UuU3R5bGVJRCYmKHdlLml4ZmU9d2UuU3R5bGVJRCksd2UuUiYmd2Uucyl7dmFyIFRuPWxuKHdlLnMpO2RlbGV0ZSBUbi5ib2xkLGRlbGV0ZSBUbi5pdGFsaWMsZGVsZXRlIFRuLnVuZGVybGlu''@;'; put 'put ''ZSxkZWxldGUgVG4uc3RyaWtlLHdlLlIuZm9yRWFjaChmdW5jdGlvbihPbil7T24ucz1ibihsbihUbiksT24ucyl9KX19ZnVuY3Rpb24gQjMoSCl7SC50PUgudnx8IiIsSC50PUgudC5yZXBsYWNlKC9cclxuL2csIlxuIikucmVwbGFjZSgvXHIvZywiXG4iKSxILnY9SC53PUguaXhmZT12b2lk''@;'; put 'put ''IDB9ZnVuY3Rpb24gQzUoSCl7aWYoSWUmJkJ1ZmZlci5pc0J1ZmZlcihIKSlyZXR1cm4gSC50b1N0cmluZygidXRmOCIpO2lmKCJzdHJpbmciPT10eXBlb2YgSClyZXR1cm4gSDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXkmJkggaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVy''@;'; put 'put ''biBXMChuZShQKEgpKSk7dGhyb3cgbmV3IEVycm9yKCJCYWQgaW5wdXQgZm9ybWF0OiBleHBlY3RlZCBCdWZmZXIgb3Igc3RyaW5nIil9dmFyIE5oPS88KFwvPykoW15ccz8+PCFcLzpdKjp8KShbXlxzPzw+OlwvXFtdKykoPzpbXHM/OjxcL11bXj5dKik/Pi9nbTtmdW5jdGlvbiBxXyhILGll''@;'; put 'put ''KXt2YXIgWD1pZXx8e30sd2U9Y2UoQzUoSCkpOygiYmluYXJ5Ij09WC50eXBlfHwiYXJyYXkiPT1YLnR5cGV8fCJiYXNlNjQiPT1YLnR5cGUpJiYod2U9InVuZGVmaW5lZCIhPXR5cGVvZiBjcHRhYmxlP2NwdGFibGUudXRpbHMuZGVjb2RlKDY1MDAxLEood2UpKTpXMCh3ZSkpO3ZhciB4ZT13''@;'; put 'put ''ZS5zbGljZSgwLDEwMjQpLnRvTG93ZXJDYXNlKCksRmU9ITE7aWYoKDEwMjMmeGUuaW5kZXhPZigiPiIpKT5NYXRoLm1pbigxMDIzJnhlLmluZGV4T2YoIiwiKSwxMDIzJnhlLmluZGV4T2YoIjsiKSkpe3ZhciBaZT1sbihYKTtyZXR1cm4gWmUudHlwZT0ic3RyaW5nIixBMy50b193b3JrYm9v''@;'; put 'put ''ayh3ZSxaZSl9aWYoLTE9PXhlLmluZGV4T2YoIjw/eG1sIikmJlsiaHRtbCIsInRhYmxlIiwiaGVhZCIsIm1ldGEiLCJzY3JpcHQiLCJzdHlsZSIsImRpdiJdLmZvckVhY2goZnVuY3Rpb24oTWMpe3hlLmluZGV4T2YoIjwiK01jKT49MCYmKEZlPSEwKX0pLEZlKXJldHVybiB1cy50b193b3Jr''@;'; put 'put ''Ym9vayh3ZSxYKTt2YXIgamUsTXQsYmksWWU9W10seHQ9e30sUnQ9W10sVXQ9WC5kZW5zZT9bXTp7fSxubj0iIixDbj17fSxEdD17fSx6dD17fSxQbj1uYygnPERhdGEgc3M6VHlwZT0iU3RyaW5nIj4nKSxUbj0wLE9uPTAsWW49MCxNcj17czp7cjoyZTYsYzoyZTZ9LGU6e3I6MCxjOjB9fSxh''@;'; put 'put ''aT17fSx5cj17fSxhcj0iIixHcj0wLHpyPVtdLHFyPXt9LG9pPXt9LGNyPTAsZGk9W10sdjA9e30sVWk9W10sdG89e30sQTA9W10sWXI9ITEsRWk9W10saGk9W10sTnI9e30sa2k9MCxOMD0wLHQwPXtTaGVldHM6W10sV0JQcm9wczp7ZGF0ZTE5MDQ6ITF9fSxpbz17fTtOaC5sYXN0SW5kZXg9''@;'; put 'put ''MCx3ZT13ZS5yZXBsYWNlKC88IS0tKFtcc1xTXSo/KS0tPi9nbSwiIik7Zm9yKHZhciBvYT0iIjtqZT1OaC5leGVjKHdlKTspc3dpdGNoKGplWzNdPShvYT1qZVszXSkudG9Mb3dlckNhc2UoKSl7Y2FzZSJkYXRhIjppZigiZGF0YSI9PW9hKXtpZigiLyI9PT1qZVsxXSl7aWYoKE10PVllLnBv''@;'; put 'put ''cCgpKVswXSE9PWplWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK010LmpvaW4oInwiKSl9ZWxzZSIvIiE9PWplWzBdLmNoYXJBdChqZVswXS5sZW5ndGgtMikmJlllLnB1c2goW2plWzNdLCEwXSk7YnJlYWt9aWYoWWVbWWUubGVuZ3RoLTFdWzFdKWJyZWFrOyIvIj09PWplWzFd''@;'; put 'put ''PyRfKHdlLnNsaWNlKFRuLGplLmluZGV4KSxhcixQbiwiY29tbWVudCI9PVllW1llLmxlbmd0aC0xXVswXT90bzpEdCx7YzpPbixyOllufSxhaSxBMFtPbl0senQsRWksWCk6KGFyPSIiLFBuPW5jKGplWzBdKSxUbj1qZS5pbmRleCtqZVswXS5sZW5ndGgpO2JyZWFrO2Nhc2UiY2VsbCI6aWYo''@;'; put 'put ''Ii8iPT09amVbMV18fCIvPiI9PT1qZVswXS5zbGljZSgtMikpe2lmKCIvPiI9PT1qZVswXS5zbGljZSgtMikpe2lmKChEdD1xeChqZVswXSkpLkluZGV4JiYoT249K0R0LkluZGV4LTEpLE9uPE1yLnMuYyYmKE1yLnMuYz1PbiksT24+TXIuZS5jJiYoTXIuZS5jPU9uKSxVaT1bXSwhWC5zaGVl''@;'; put 'put ''dFN0dWJzKXsrK09uO2JyZWFrfSRfKCIiLCIiLHt9LCJjb21tZW50Ij09WWVbWWUubGVuZ3RoLTFdWzBdP3RvOkR0LHtjOk9uLHI6WW59LGFpLEEwW09uXSx6dCxFaSxYKX1pZihVaS5sZW5ndGg+MCYmKER0LmM9VWkpLCghWC5zaGVldFJvd3N8fFguc2hlZXRSb3dzPlluKSYmKHZvaWQgMCE9''@;'; put 'put ''PUR0LnZ8fFguc2hlZXRTdHVicykmJihYLmRlbnNlPyhVdFtZbl18fChVdFtZbl09W10pLFV0W1luXVtPbl09RHQpOlV0W19hKE9uKStYYShZbildPUR0KSxEdC5IUmVmJiYoRHQubD17VGFyZ2V0OmdyKER0LkhSZWYpfSxEdC5IUmVmU2NyZWVuVGlwJiYoRHQubC5Ub29sdGlwPUR0LkhSZWZT''@;'; put 'put ''Y3JlZW5UaXApLGRlbGV0ZSBEdC5IUmVmLGRlbGV0ZSBEdC5IUmVmU2NyZWVuVGlwKSwoRHQuTWVyZ2VBY3Jvc3N8fER0Lk1lcmdlRG93bikmJihraT1PbisoMHxwYXJzZUludChEdC5NZXJnZUFjcm9zcywxMCkpLE4wPVluKygwfHBhcnNlSW50KER0Lk1lcmdlRG93biwxMCkpLChraT5Pbnx8''@;'; put 'put ''TjA+WW4pJiZ6ci5wdXNoKHtzOntjOk9uLHI6WW59LGU6e2M6a2kscjpOMH19KSksWC5zaGVldFN0dWJzKWlmKER0Lk1lcmdlQWNyb3NzfHxEdC5NZXJnZURvd24pe2Zvcih2YXIgJDA9T247JDA8PWtpOysrJDApZm9yKHZhciBWYT1ZbjtWYTw9TjA7KytWYSkoJDA+T258fFZhPlluKSYmKFgu''@;'; put 'put ''ZGVuc2U/KFV0W1ZhXXx8KFV0W1ZhXT1bXSksVXRbVmFdWyQwXT17dDoieiJ9KTpVdFtfYSgkMCkrWGEoVmEpXT17dDoieiJ9KTtPbj1raSsxfWVsc2UrK09uO2Vsc2UgRHQuTWVyZ2VBY3Jvc3M/T249a2krMTorK09ufWVsc2UoRHQ9cXgoamVbMF0pKS5JbmRleCYmKE9uPStEdC5JbmRleC0x''@;'; put 'put ''KSxPbjxNci5zLmMmJihNci5zLmM9T24pLE9uPk1yLmUuYyYmKE1yLmUuYz1PbiksIi8+Ij09PWplWzBdLnNsaWNlKC0yKSYmKytPbixVaT1bXTticmVhaztjYXNlInJvdyI6Ii8iPT09amVbMV18fCIvPiI9PT1qZVswXS5zbGljZSgtMik/KFluPE1yLnMuciYmKE1yLnMucj1ZbiksWW4+TXIu''@;'; put 'put ''ZS5yJiYoTXIuZS5yPVluKSwiLz4iPT09amVbMF0uc2xpY2UoLTIpJiYoenQ9bmMoamVbMF0pKS5JbmRleCYmKFluPSt6dC5JbmRleC0xKSxPbj0wLCsrWW4pOigoenQ9bmMoamVbMF0pKS5JbmRleCYmKFluPSt6dC5JbmRleC0xKSxOcj17fSwoIjAiPT16dC5BdXRvRml0SGVpZ2h0fHx6dC5I''@;'; put 'put ''ZWlnaHQpJiYoTnIuaHB0PXBhcnNlRmxvYXQoenQuSGVpZ2h0KSxOci5ocHg9QWYoTnIuaHB0KSxoaVtZbl09TnIpLCIxIj09enQuSGlkZGVuJiYoTnIuaGlkZGVuPSEwLGhpW1luXT1OcikpO2JyZWFrO2Nhc2Uid29ya3NoZWV0IjppZigiLyI9PT1qZVsxXSl7aWYoKE10PVllLnBvcCgpKVsw''@;'; put 'put ''XSE9PWplWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK010LmpvaW4oInwiKSk7UnQucHVzaChubiksTXIucy5yPD1Nci5lLnImJk1yLnMuYzw9TXIuZS5jJiYoVXRbIiFyZWYiXT1mYShNciksWC5zaGVldFJvd3MmJlguc2hlZXRSb3dzPD1Nci5lLnImJihVdFsiIWZ1bGxyZWYi''@;'; put 'put ''XT1VdFsiIXJlZiJdLE1yLmUucj1YLnNoZWV0Um93cy0xLFV0WyIhcmVmIl09ZmEoTXIpKSksenIubGVuZ3RoJiYoVXRbIiFtZXJnZXMiXT16ciksQTAubGVuZ3RoPjAmJihVdFsiIWNvbHMiXT1BMCksaGkubGVuZ3RoPjAmJihVdFsiIXJvd3MiXT1oaSksQ24mJihVdFsiIXNoZWV0Rm9ybWF0''@;'; put 'put ''Il09V20oQ24pKSx4dFtubl09VXR9ZWxzZSBNcj17czp7cjoyZTYsYzoyZTZ9LGU6e3I6MCxjOjB9fSxZbj1Pbj0wLFllLnB1c2goW2plWzNdLCExXSksTXQ9bmMoamVbMF0pLG5uPWdyKE10Lk5hbWUpLFV0PVguZGVuc2U/W106e30senI9W10sRWk9W10saGk9W10sdDAuU2hlZXRzLnB1c2go''@;'; put 'put ''aW89e25hbWU6bm4sSGlkZGVuOjB9KTticmVhaztjYXNlInRhYmxlIjppZigiLyI9PT1qZVsxXSl7aWYoKE10PVllLnBvcCgpKVswXSE9PWplWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK010LmpvaW4oInwiKSl9ZWxzZXtpZigiLz4iPT1qZVswXS5zbGljZSgtMikpYnJlYWs7''@;'; put 'put ''Q249bmMoamVbMF0pLFllLnB1c2goW2plWzNdLCExXSksQTA9W10sWXI9ITF9YnJlYWs7Y2FzZSJzdHlsZSI6Ii8iPT09amVbMV0/blQoYWkseXIsYXIsWCk6KHlyPW5jKGplWzBdKSxhcj0iIik7YnJlYWs7Y2FzZSJudW1iZXJmb3JtYXQiOnlyLm5mPWdyKG5jKGplWzBdKS5Gb3JtYXR8fCJH''@;'; put 'put ''ZW5lcmFsIiksQ2VbeXIubmZdJiYoeXIubmY9Q2VbeXIubmZdKTtmb3IodmFyIGpvPTA7MzkyIT1qbyYmRi5fdGFibGVbam9dIT15ci5uZjsrK2pvKTtpZigzOTI9PWpvKWZvcihqbz01NzszOTIhPWpvOysram8paWYobnVsbD09Ri5fdGFibGVbam9dKXtGLmxvYWQoeXIubmYsam8pO2JyZWFr''@;'; put 'put ''fWJyZWFrO2Nhc2UiY29sdW1uIjppZigidGFibGUiIT09WWVbWWUubGVuZ3RoLTFdWzBdfHwiLyI9PT1qZVsxXSlicmVhaztpZigoYmk9bmMoamVbMF0pKS5IaWRkZW4mJihiaS5oaWRkZW49ITAsZGVsZXRlIGJpLkhpZGRlbiksYmkuV2lkdGg/Ymkud3B4PTQqcGFyc2VJbnQoYmkuV2lkdGgs''@;'; put 'put ''MTApLzM6K2JpLkF1dG9GaXRXaWR0aCYmKGJpLmF1dG89MSksIVlyJiZiaS53cHg+MTApe1lyPSEwLEsyPTY7Zm9yKHZhciB3YT0wO3dhPEEwLmxlbmd0aDsrK3dhKUEwW3dhXSYmeWMoQTBbd2FdKX1ZciYmeWMoYmkpLEEwW2JpLkluZGV4LTF8fEEwLmxlbmd0aF09Ymk7Zm9yKHZhciBhbz0w''@;'; put 'put ''O2FvPCtiaS5TcGFuOysrYW8pQTBbQTAubGVuZ3RoXT1sbihiaSk7YnJlYWs7Y2FzZSJuYW1lZHJhbmdlIjppZigiLyI9PT1qZVsxXSlicmVhazt0MC5OYW1lc3x8KHQwLk5hbWVzPVtdKTt2YXIgeDA9ZW4oamVbMF0pLGgwPXtOYW1lOngwLk5hbWUsUmVmOkQzKHgwLlJlZmVyc1RvLnNsaWNl''@;'; put 'put ''KDEpLHtyOjAsYzowfSl9O3QwLlNoZWV0cy5sZW5ndGg+MCYmKGgwLlNoZWV0PXQwLlNoZWV0cy5sZW5ndGgtMSksdDAuTmFtZXMucHVzaChoMCk7YnJlYWs7Y2FzZSJuYW1lZGNlbGwiOmNhc2UiYiI6Y2FzZSJpIjpjYXNlInUiOmNhc2UicyI6Y2FzZSJlbSI6Y2FzZSJoMiI6Y2FzZSJoMyI6''@;'; put 'put ''Y2FzZSJzdWIiOmNhc2Uic3VwIjpjYXNlInNwYW4iOmNhc2UicHJvdGVjdGlvbiI6Y2FzZSJwYXJhZ3JhcGhzIjpjYXNlIm5hbWUiOmJyZWFrO2Nhc2UiYWxpZ25tZW50IjppZighWC5jZWxsU3R5bGVzfHwiLyI9PT1qZVsxXSlicmVhazt5ci5BbGlnbm1lbnQ9bmMoamVbMF0pO2JyZWFrO2Nh''@;'; put 'put ''c2UiYm9yZGVycyI6Ii8iIT09amVbMV0mJih5ci5Cb3JkZXJzPVtdKTticmVhaztjYXNlImJvcmRlciI6aWYoIi8iPT09amVbMV0pYnJlYWs7eXIuQm9yZGVyc3x8KHlyLkJvcmRlcnM9W10pLHlyLkJvcmRlcnMucHVzaChuYyhqZVswXSkpO2JyZWFrO2Nhc2UiZm9udCI6aWYoIi8+Ij09PWpl''@;'; put 'put ''WzBdLnNsaWNlKC0yKSl7YXIrPWplWzBdO2JyZWFrfSIvIj09PWplWzFdP2FyKz13ZS5zbGljZShHcixqZS5pbmRleCtqZVswXS5sZW5ndGgpOkdyPWplLmluZGV4O2JyZWFrO2Nhc2UiaW50ZXJpb3IiOmlmKCFYLmNlbGxTdHlsZXN8fCIvIj09PWplWzFdKWJyZWFrO3lyLkludGVyaW9yPW5j''@;'; put 'put ''KGplWzBdKTticmVhaztjYXNlImF1dGhvciI6Y2FzZSJ0aXRsZSI6Y2FzZSJkZXNjcmlwdGlvbiI6Y2FzZSJjcmVhdGVkIjpjYXNlImtleXdvcmRzIjpjYXNlInN1YmplY3QiOmNhc2UiY2F0ZWdvcnkiOmNhc2UiY29tcGFueSI6Y2FzZSJsYXN0YXV0aG9yIjpjYXNlImxhc3RzYXZlZCI6Y2Fz''@;'; put 'put ''ZSJsYXN0cHJpbnRlZCI6Y2FzZSJ2ZXJzaW9uIjpjYXNlInJldmlzaW9uIjpjYXNlInRvdGFsdGltZSI6Y2FzZSJoeXBlcmxpbmtiYXNlIjpjYXNlIm1hbmFnZXIiOmNhc2UiY29udGVudHN0YXR1cyI6Y2FzZSJpZGVudGlmaWVyIjpjYXNlImxhbmd1YWdlIjpjYXNlImFwcG5hbWUiOmlmKCIv''@;'; put 'put ''PiI9PT1qZVswXS5zbGljZSgtMikpYnJlYWs7Ii8iPT09amVbMV0/cWwocXIsb2Esd2Uuc2xpY2UoY3IsamUuaW5kZXgpKTpjcj1qZS5pbmRleCtqZVswXS5sZW5ndGg7YnJlYWs7Y2FzZSJzdHlsZXMiOmNhc2Uid29ya2Jvb2siOmlmKCIvIj09PWplWzFdKXtpZigoTXQ9WWUucG9wKCkpWzBd''@;'; put 'put ''IT09amVbM10pdGhyb3cgbmV3IEVycm9yKCJCYWQgc3RhdGU6ICIrTXQuam9pbigifCIpKX1lbHNlIFllLnB1c2goW2plWzNdLCExXSk7YnJlYWs7Y2FzZSJjb21tZW50IjppZigiLyI9PT1qZVsxXSl7aWYoKE10PVllLnBvcCgpKVswXSE9PWplWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0''@;'; put 'put ''YXRlOiAiK010LmpvaW4oInwiKSk7QjModG8pLFVpLnB1c2godG8pfWVsc2UgWWUucHVzaChbamVbM10sITFdKSx0bz17YTooTXQ9bmMoamVbMF0pKS5BdXRob3J9O2JyZWFrO2Nhc2UiYXV0b2ZpbHRlciI6aWYoIi8iPT09amVbMV0pe2lmKChNdD1ZZS5wb3AoKSlbMF0hPT1qZVszXSl0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitNdC5qb2luKCJ8IikpfWVsc2UgaWYoIi8iIT09amVbMF0uY2hhckF0KGplWzBdLmxlbmd0aC0yKSl7dmFyIGpyPW5jKGplWzBdKTtVdFsiIWF1dG9maWx0ZXIiXT17cmVmOkQzKGpyLlJhbmdlKS5yZXBsYWNlKC9cJC9nLCIiKX0sWWUucHVzaChb''@;'; put 'put ''amVbM10sITBdKX1icmVhaztjYXNlImRhdGF2YWxpZGF0aW9uIjppZihVdFsiIXZhbGlkYXRpb25zIl18fChVdFsiIXZhbGlkYXRpb25zIl09W10pLCIvIj09PWplWzFdKXtpZigoTXQ9WWUucG9wKCkpWzBdIT09amVbM10pdGhyb3cgbmV3IEVycm9yKCJCYWQgc3RhdGU6ICIrTXQuam9pbigi''@;'; put 'put ''fCIpKX1lbHNlIi8iIT09amVbMF0uY2hhckF0KGplWzBdLmxlbmd0aC0yKSYmWWUucHVzaChbamVbM10sITBdKSx2MD17fTticmVhaztjYXNlInBpeGVsc3BlcmluY2giOmlmKCIvIj09PWplWzFdKXt2YXIgSGk9K3dlLnNsaWNlKFRuLGplLmluZGV4KTsoNzI9PUhpfHw5Nj09SGkpJiZDMyhI''@;'; put 'put ''aSl9ZWxzZSBUbj1qZS5pbmRleCtqZVswXS5sZW5ndGg7YnJlYWs7Y2FzZSJjb21wb25lbnRvcHRpb25zIjpjYXNlImRvY3VtZW50cHJvcGVydGllcyI6Y2FzZSJjdXN0b21kb2N1bWVudHByb3BlcnRpZXMiOmNhc2Uib2ZmaWNlZG9jdW1lbnRzZXR0aW5ncyI6Y2FzZSJwaXZvdHRhYmxlIjpj''@;'; put 'put ''YXNlInBpdm90Y2FjaGUiOmNhc2UibmFtZXMiOmNhc2UibWFwaW5mbyI6Y2FzZSJwYWdlYnJlYWtzIjpjYXNlInF1ZXJ5dGFibGUiOmNhc2Uic29ydGluZyI6Y2FzZSJzY2hlbWEiOmNhc2UiY29uZGl0aW9uYWxmb3JtYXR0aW5nIjpjYXNlInNtYXJ0dGFndHlwZSI6Y2FzZSJzbWFydHRhZ3Mi''@;'; put 'put ''OmNhc2UiZXhjZWx3b3JrYm9vayI6Y2FzZSJ3b3JrYm9va29wdGlvbnMiOmNhc2Uid29ya3NoZWV0b3B0aW9ucyI6aWYoIi8iPT09amVbMV0pe2lmKChNdD1ZZS5wb3AoKSlbMF0hPT1qZVszXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitNdC5qb2luKCJ8IikpfWVsc2UiLyIhPT1q''@;'; put 'put ''ZVswXS5jaGFyQXQoamVbMF0ubGVuZ3RoLTIpJiZZZS5wdXNoKFtqZVszXSwhMF0pO2JyZWFrO2RlZmF1bHQ6aWYoMD09WWUubGVuZ3RoJiYiZG9jdW1lbnQiPT1qZVszXXx8MD09WWUubGVuZ3RoJiYidW9mIj09amVbM10pcmV0dXJuIGljKHdlLFgpO3ZhciB2bz0hMDtzd2l0Y2goWWVbWWUu''@;'; put 'put ''bGVuZ3RoLTFdWzBdKXtjYXNlIm9mZmljZWRvY3VtZW50c2V0dGluZ3MiOnN3aXRjaChqZVszXSl7Y2FzZSJhbGxvd3BuZyI6Y2FzZSJyZW1vdmVwZXJzb25hbGluZm9ybWF0aW9uIjpjYXNlImRvd25sb2FkY29tcG9uZW50cyI6Y2FzZSJsb2NhdGlvbm9mY29tcG9uZW50cyI6Y2FzZSJjb2xv''@;'; put 'put ''cnMiOmNhc2UiY29sb3IiOmNhc2UiaW5kZXgiOmNhc2UicmdiIjpjYXNlInRhcmdldHNjcmVlbnNpemUiOmNhc2UicmVhZG9ubHlyZWNvbW1lbmRlZCI6YnJlYWs7ZGVmYXVsdDp2bz0hMX1icmVhaztjYXNlImNvbXBvbmVudG9wdGlvbnMiOnN3aXRjaChqZVszXSl7Y2FzZSJ0b29sYmFyIjpj''@;'; put 'put ''YXNlImhpZGVvZmZpY2Vsb2dvIjpjYXNlInNwcmVhZHNoZWV0YXV0b2ZpdCI6Y2FzZSJsYWJlbCI6Y2FzZSJjYXB0aW9uIjpjYXNlIm1heGhlaWdodCI6Y2FzZSJtYXh3aWR0aCI6Y2FzZSJuZXh0c2hlZXRudW1iZXIiOmJyZWFrO2RlZmF1bHQ6dm89ITF9YnJlYWs7Y2FzZSJleGNlbHdvcmti''@;'; put 'put ''b29rIjpzd2l0Y2goamVbM10pe2Nhc2UiZGF0ZTE5MDQiOnQwLldCUHJvcHMuZGF0ZTE5MDQ9ITA7YnJlYWs7Y2FzZSJ3aW5kb3doZWlnaHQiOmNhc2Uid2luZG93d2lkdGgiOmNhc2Uid2luZG93dG9weCI6Y2FzZSJ3aW5kb3d0b3B5IjpjYXNlInRhYnJhdGlvIjpjYXNlInByb3RlY3RzdHJ1''@;'; put 'put ''Y3R1cmUiOmNhc2UicHJvdGVjdHdpbmRvdyI6Y2FzZSJwcm90ZWN0d2luZG93cyI6Y2FzZSJhY3RpdmVzaGVldCI6Y2FzZSJkaXNwbGF5aW5rbm90ZXMiOmNhc2UiZmlyc3R2aXNpYmxlc2hlZXQiOmNhc2Uic3VwYm9vayI6Y2FzZSJzaGVldG5hbWUiOmNhc2Uic2hlZXRpbmRleCI6Y2FzZSJz''@;'; put 'put ''aGVldGluZGV4Zmlyc3QiOmNhc2Uic2hlZXRpbmRleGxhc3QiOmNhc2UiZGxsIjpjYXNlImFjY2VwdGxhYmVsc2luZm9ybXVsYXMiOmNhc2UiZG9ub3RzYXZlbGlua3ZhbHVlcyI6Y2FzZSJpdGVyYXRpb24iOmNhc2UibWF4aXRlcmF0aW9ucyI6Y2FzZSJtYXhjaGFuZ2UiOmNhc2UicGF0aCI6''@;'; put 'put ''Y2FzZSJ4Y3QiOmNhc2UiY291bnQiOmNhc2Uic2VsZWN0ZWRzaGVldHMiOmNhc2UiY2FsY3VsYXRpb24iOmNhc2UidW5jYWxjZWQiOmNhc2Uic3RhcnR1cHByb21wdCI6Y2FzZSJjcm4iOmNhc2UiZXh0ZXJubmFtZSI6Y2FzZSJmb3JtdWxhIjpjYXNlImNvbGZpcnN0IjpjYXNlImNvbGxhc3Qi''@;'; put 'put ''OmNhc2Uid2FudGFkdmlzZSI6Y2FzZSJib29sZWFuIjpjYXNlImVycm9yIjpjYXNlInRleHQiOmNhc2Uib2xlIjpjYXNlIm5vYXV0b3JlY292ZXIiOmNhc2UicHVibGlzaG9iamVjdHMiOmNhc2UiZG9ub3RjYWxjdWxhdGViZWZvcmVzYXZlIjpjYXNlIm51bWJlciI6Y2FzZSJyZWZtb2RlcjFj''@;'; put 'put ''MSI6Y2FzZSJlbWJlZHNhdmVzbWFydHRhZ3MiOmJyZWFrO2RlZmF1bHQ6dm89ITF9YnJlYWs7Y2FzZSJ3b3JrYm9va29wdGlvbnMiOnN3aXRjaChqZVszXSl7Y2FzZSJvd2N2ZXJzaW9uIjpjYXNlImhlaWdodCI6Y2FzZSJ3aWR0aCI6YnJlYWs7ZGVmYXVsdDp2bz0hMX1icmVhaztjYXNlIndv''@;'; put 'put ''cmtzaGVldG9wdGlvbnMiOnN3aXRjaChqZVszXSl7Y2FzZSJ2aXNpYmxlIjppZigiLz4iIT09amVbMF0uc2xpY2UoLTIpKWlmKCIvIj09PWplWzFdKXN3aXRjaCh3ZS5zbGljZShjcixqZS5pbmRleCkpe2Nhc2UiU2hlZXRIaWRkZW4iOmlvLkhpZGRlbj0xO2JyZWFrO2Nhc2UiU2hlZXRWZXJ5''@;'; put 'put ''SGlkZGVuIjppby5IaWRkZW49Mn1lbHNlIGNyPWplLmluZGV4K2plWzBdLmxlbmd0aDticmVhaztjYXNlImhlYWRlciI6VXRbIiFtYXJnaW5zIl18fFJkKFV0WyIhbWFyZ2lucyJdPXt9LCJ4bG1sIiksVXRbIiFtYXJnaW5zIl0uaGVhZGVyPWVuKGplWzBdKS5NYXJnaW47YnJlYWs7Y2FzZSJm''@;'; put 'put ''b290ZXIiOlV0WyIhbWFyZ2lucyJdfHxSZChVdFsiIW1hcmdpbnMiXT17fSwieGxtbCIpLFV0WyIhbWFyZ2lucyJdLmZvb3Rlcj1lbihqZVswXSkuTWFyZ2luO2JyZWFrO2Nhc2UicGFnZW1hcmdpbnMiOnZhciB4bz1lbihqZVswXSk7VXRbIiFtYXJnaW5zIl18fFJkKFV0WyIhbWFyZ2lucyJd''@;'; put 'put ''PXt9LCJ4bG1sIikseG8uVG9wJiYoVXRbIiFtYXJnaW5zIl0udG9wPXhvLlRvcCkseG8uTGVmdCYmKFV0WyIhbWFyZ2lucyJdLmxlZnQ9eG8uTGVmdCkseG8uUmlnaHQmJihVdFsiIW1hcmdpbnMiXS5yaWdodD14by5SaWdodCkseG8uQm90dG9tJiYoVXRbIiFtYXJnaW5zIl0uYm90dG9tPXhv''@;'; put 'put ''LkJvdHRvbSk7YnJlYWs7Y2FzZSJkaXNwbGF5cmlnaHR0b2xlZnQiOnQwLlZpZXdzfHwodDAuVmlld3M9W10pLHQwLlZpZXdzWzBdfHwodDAuVmlld3NbMF09e30pLHQwLlZpZXdzWzBdLlJUTD0hMDticmVhaztjYXNlImZyZWV6ZXBhbmVzIjpjYXNlImZyb3plbm5vc3BsaXQiOmNhc2UiYWN0''@;'; put 'put ''aXZlcm93IjpjYXNlImFjdGl2ZWNvbCI6Y2FzZSJ0b3Byb3dib3R0b21wYW5lIjpjYXNlImxlZnRjb2x1bW5yaWdodHBhbmUiOmNhc2UidW5zeW5jZWQiOmNhc2UicHJpbnQiOmNhc2UicHJpbnRlcnJvcnMiOmNhc2UicGFuZXMiOmNhc2Uic2NhbGUiOmNhc2UicGFuZSI6Y2FzZSJudW1iZXIi''@;'; put 'put ''OmNhc2UibGF5b3V0IjpjYXNlInBhZ2VzZXR1cCI6Y2FzZSJzZWxlY3RlZCI6Y2FzZSJwcm90ZWN0b2JqZWN0cyI6Y2FzZSJlbmFibGVzZWxlY3Rpb24iOmNhc2UicHJvdGVjdHNjZW5hcmlvcyI6Y2FzZSJ2YWxpZHByaW50ZXJpbmZvIjpjYXNlImhvcml6b250YWxyZXNvbHV0aW9uIjpjYXNl''@;'; put 'put ''InZlcnRpY2FscmVzb2x1dGlvbiI6Y2FzZSJudW1iZXJvZmNvcGllcyI6Y2FzZSJhY3RpdmVwYW5lIjpjYXNlInRvcHJvd3Zpc2libGUiOmNhc2UibGVmdGNvbHVtbnZpc2libGUiOmNhc2UiZml0dG9wYWdlIjpjYXNlInJhbmdlc2VsZWN0aW9uIjpjYXNlInBhcGVyc2l6ZWluZGV4IjpjYXNl''@;'; put 'put ''InBhZ2VsYXlvdXR6b29tIjpjYXNlInBhZ2VicmVha3pvb20iOmNhc2UiZmlsdGVyb24iOmNhc2UiZml0d2lkdGgiOmNhc2UiZml0aGVpZ2h0IjpjYXNlImNvbW1lbnRzbGF5b3V0IjpjYXNlInpvb20iOmNhc2UibGVmdHRvcmlnaHQiOmNhc2UiZ3JpZGxpbmVzIjpjYXNlImFsbG93c29ydCI6''@;'; put 'put ''Y2FzZSJhbGxvd2ZpbHRlciI6Y2FzZSJhbGxvd2luc2VydHJvd3MiOmNhc2UiYWxsb3dkZWxldGVyb3dzIjpjYXNlImFsbG93aW5zZXJ0Y29scyI6Y2FzZSJhbGxvd2RlbGV0ZWNvbHMiOmNhc2UiYWxsb3dpbnNlcnRoeXBlcmxpbmtzIjpjYXNlImFsbG93Zm9ybWF0Y2VsbHMiOmNhc2UiYWxs''@;'; put 'put ''b3dzaXplY29scyI6Y2FzZSJhbGxvd3NpemVyb3dzIjpjYXNlInRhYmNvbG9yaW5kZXgiOmNhc2UiZG9ub3RkaXNwbGF5aGVhZGluZ3MiOmNhc2Uic2hvd3BhZ2VsYXlvdXR6b29tIjpjYXNlImJsYWNrYW5kd2hpdGUiOmNhc2UiZG9ub3RkaXNwbGF5emVyb3MiOmNhc2UiZGlzcGxheXBhZ2Vi''@;'; put 'put ''cmVhayI6Y2FzZSJyb3djb2xoZWFkaW5ncyI6Y2FzZSJkb25vdGRpc3BsYXlvdXRsaW5lIjpjYXNlIm5vb3JpZW50YXRpb24iOmNhc2UiYWxsb3d1c2VwaXZvdHRhYmxlcyI6Y2FzZSJ6ZXJvaGVpZ2h0IjpjYXNlInZpZXdhYmxlcmFuZ2UiOmNhc2Uic2VsZWN0aW9uIjpjYXNlInByb3RlY3Rj''@;'; put 'put ''b250ZW50cyI6YnJlYWs7Y2FzZSJzcGxpdGhvcml6b250YWwiOmNhc2Uic3BsaXR2ZXJ0aWNhbCI6aWYoIi8+IiE9PWplWzBdLnNsaWNlKC0yKSlpZigiLyI9PWplWzFdKXtVdFsiIWZyZWV6ZSJdfHwoVXRbIiFmcmVlemUiXT0iQTEiKTt2YXIgJGk9dWwoVXRbIiFmcmVlemUiXSk7InNwbGl0''@;'; put 'put ''aG9yaXpvbnRhbCI9PWplWzNdPyRpLnI9K3dlLnNsaWNlKGNyLGplLmluZGV4KTokaS5jPSt3ZS5zbGljZShjcixqZS5pbmRleCksVXRbIiFmcmVlemUiXT1ZMCgkaSl9ZWxzZSBjcj1qZS5pbmRleCtqZVswXS5sZW5ndGg7YnJlYWs7Y2FzZSJkb25vdGRpc3BsYXlncmlkbGluZXMiOlV0WyIh''@;'; put 'put ''Z3JpZGxpbmVzIl09ITE7YnJlYWs7Y2FzZSJub3N1bW1hcnlyb3dzYmVsb3dkZXRhaWwiOlV0WyIhb3V0bGluZSJdfHwoVXRbIiFvdXRsaW5lIl09e30pLFV0WyIhb3V0bGluZSJdLmFib3ZlPSEwO2JyZWFrO2Nhc2Uibm9zdW1tYXJ5Y29sdW1uc3JpZ2h0ZGV0YWlsIjpVdFsiIW91dGxpbmUi''@;'; put 'put ''XXx8KFV0WyIhb3V0bGluZSJdPXt9KSxVdFsiIW91dGxpbmUiXS5sZWZ0PSEwO2JyZWFrO2RlZmF1bHQ6dm89ITF9YnJlYWs7Y2FzZSJwaXZvdHRhYmxlIjpjYXNlInBpdm90Y2FjaGUiOnN3aXRjaChqZVszXSl7Y2FzZSJpbW1lZGlhdGVpdGVtc29uZHJvcCI6Y2FzZSJzaG93cGFnZW11bHRp''@;'; put 'put ''cGxlaXRlbWxhYmVsIjpjYXNlImNvbXBhY3Ryb3dpbmRlbnQiOmNhc2UibG9jYXRpb24iOmNhc2UicGl2b3RmaWVsZCI6Y2FzZSJvcmllbnRhdGlvbiI6Y2FzZSJsYXlvdXRmb3JtIjpjYXNlImxheW91dHN1YnRvdGFsbG9jYXRpb24iOmNhc2UibGF5b3V0Y29tcGFjdHJvdyI6Y2FzZSJwb3Np''@;'; put 'put ''dGlvbiI6Y2FzZSJwaXZvdGl0ZW0iOmNhc2UiZGF0YXR5cGUiOmNhc2UiZGF0YWZpZWxkIjpjYXNlInNvdXJjZW5hbWUiOmNhc2UicGFyZW50ZmllbGQiOmNhc2UicHRsaW5laXRlbXMiOmNhc2UicHRsaW5laXRlbSI6Y2FzZSJjb3VudG9mc2FtZWl0ZW1zIjpjYXNlIml0ZW0iOmNhc2UiaXRl''@;'; put 'put ''bXR5cGUiOmNhc2UicHRzb3VyY2UiOmNhc2UiY2FjaGVpbmRleCI6Y2FzZSJjb25zb2xpZGF0aW9ucmVmZXJlbmNlIjpjYXNlImZpbGVuYW1lIjpjYXNlInJlZmVyZW5jZSI6Y2FzZSJub2NvbHVtbmdyYW5kIjpjYXNlIm5vcm93Z3JhbmQiOmNhc2UiYmxhbmtsaW5lYWZ0ZXJpdGVtcyI6Y2Fz''@;'; put 'put ''ZSJoaWRkZW4iOmNhc2Uic3VidG90YWwiOmNhc2UiYmFzZWZpZWxkIjpjYXNlIm1hcGNoaWxkaXRlbXMiOmNhc2UiZnVuY3Rpb24iOmNhc2UicmVmcmVzaG9uZmlsZW9wZW4iOmNhc2UicHJpbnRzZXR0aXRsZXMiOmNhc2UibWVyZ2VsYWJlbHMiOmNhc2UiZGVmYXVsdHZlcnNpb24iOmNhc2Ui''@;'; put 'put ''cmVmcmVzaG5hbWUiOmNhc2UicmVmcmVzaGRhdGUiOmNhc2UicmVmcmVzaGRhdGVjb3B5IjpjYXNlInZlcnNpb25sYXN0cmVmcmVzaCI6Y2FzZSJ2ZXJzaW9ubGFzdHVwZGF0ZSI6Y2FzZSJ2ZXJzaW9udXBkYXRlYWJsZW1pbiI6Y2FzZSJ2ZXJzaW9ucmVmcmVzaGFibGVtaW4iOmNhc2UiY2Fs''@;'; put 'put ''Y3VsYXRpb24iOmJyZWFrO2RlZmF1bHQ6dm89ITF9YnJlYWs7Y2FzZSJwYWdlYnJlYWtzIjpzd2l0Y2goamVbM10pe2Nhc2UiY29sYnJlYWtzIjpjYXNlImNvbGJyZWFrIjpjYXNlInJvd2JyZWFrcyI6Y2FzZSJyb3dicmVhayI6Y2FzZSJjb2xzdGFydCI6Y2FzZSJjb2xlbmQiOmNhc2Uicm93''@;'; put 'put ''ZW5kIjpicmVhaztkZWZhdWx0OnZvPSExfWJyZWFrO2Nhc2UiYXV0b2ZpbHRlciI6c3dpdGNoKGplWzNdKXtjYXNlImF1dG9maWx0ZXJjb2x1bW4iOmNhc2UiYXV0b2ZpbHRlcmNvbmRpdGlvbiI6Y2FzZSJhdXRvZmlsdGVyYW5kIjpjYXNlImF1dG9maWx0ZXJvciI6YnJlYWs7ZGVmYXVsdDp2''@;'; put 'put ''bz0hMX1icmVhaztjYXNlInF1ZXJ5dGFibGUiOnN3aXRjaChqZVszXSl7Y2FzZSJpZCI6Y2FzZSJhdXRvZm9ybWF0Zm9udCI6Y2FzZSJhdXRvZm9ybWF0cGF0dGVybiI6Y2FzZSJxdWVyeXNvdXJjZSI6Y2FzZSJxdWVyeXR5cGUiOmNhc2UiZW5hYmxlcmVkaXJlY3Rpb25zIjpjYXNlInJlZnJl''@;'; put 'put ''c2hlZGlueGw5IjpjYXNlInVybHN0cmluZyI6Y2FzZSJodG1sdGFibGVzIjpjYXNlImNvbm5lY3Rpb24iOmNhc2UiY29tbWFuZHRleHQiOmNhc2UicmVmcmVzaGluZm8iOmNhc2Uibm90aXRsZXMiOmNhc2UibmV4dGlkIjpjYXNlImNvbHVtbmluZm8iOmNhc2Uib3ZlcndyaXRlY2VsbHMiOmNh''@;'; put 'put ''c2UiZG9ub3Rwcm9tcHRmb3JmaWxlIjpjYXNlInRleHR3aXphcmRzZXR0aW5ncyI6Y2FzZSJzb3VyY2UiOmNhc2UibnVtYmVyIjpjYXNlImRlY2ltYWwiOmNhc2UidGhvdXNhbmRzZXBhcmF0b3IiOmNhc2UidHJhaWxpbmdtaW51c251bWJlcnMiOmNhc2UiZm9ybWF0c2V0dGluZ3MiOmNhc2Ui''@;'; put 'put ''ZmllbGR0eXBlIjpjYXNlImRlbGltaXRlcnMiOmNhc2UidGFiIjpjYXNlImNvbW1hIjpjYXNlImF1dG9mb3JtYXRuYW1lIjpjYXNlInZlcnNpb25sYXN0ZWRpdCI6Y2FzZSJ2ZXJzaW9ubGFzdHJlZnJlc2giOmJyZWFrO2RlZmF1bHQ6dm89ITF9YnJlYWs7Y2FzZSJkYXRhdmFsaWRhdGlvbiI6''@;'; put 'put ''c3dpdGNoKGplWzNdKXtjYXNlInJhbmdlIjp2MC5yZWY9amU7YnJlYWs7Y2FzZSJ0eXBlIjpjYXNlIm1pbiI6Y2FzZSJtYXgiOmNhc2Uic29ydCI6Y2FzZSJkZXNjZW5kaW5nIjpjYXNlIm9yZGVyIjpjYXNlImNhc2VzZW5zaXRpdmUiOmNhc2UidmFsdWUiOmNhc2UiZXJyb3JzdHlsZSI6Y2Fz''@;'; put 'put ''ZSJlcnJvcm1lc3NhZ2UiOmNhc2UiZXJyb3J0aXRsZSI6Y2FzZSJpbnB1dG1lc3NhZ2UiOmNhc2UiaW5wdXR0aXRsZSI6Y2FzZSJjb21ib2hpZGUiOmNhc2UiaW5wdXRoaWRlIjpjYXNlImNvbmRpdGlvbiI6Y2FzZSJxdWFsaWZpZXIiOmNhc2UidXNlYmxhbmsiOmNhc2UidmFsdWUxIjpjYXNl''@;'; put 'put ''InZhbHVlMiI6Y2FzZSJmb3JtYXQiOmNhc2UiY2VsbHJhbmdlbGlzdCI6YnJlYWs7ZGVmYXVsdDp2bz0hMX1icmVhaztjYXNlInNvcnRpbmciOmNhc2UiY29uZGl0aW9uYWxmb3JtYXR0aW5nIjpzd2l0Y2goamVbM10pe2Nhc2UicmFuZ2UiOmNhc2UidHlwZSI6Y2FzZSJtaW4iOmNhc2UibWF4''@;'; put 'put ''IjpjYXNlInNvcnQiOmNhc2UiZGVzY2VuZGluZyI6Y2FzZSJvcmRlciI6Y2FzZSJjYXNlc2Vuc2l0aXZlIjpjYXNlInZhbHVlIjpjYXNlImVycm9yc3R5bGUiOmNhc2UiZXJyb3JtZXNzYWdlIjpjYXNlImVycm9ydGl0bGUiOmNhc2UiY2VsbHJhbmdlbGlzdCI6Y2FzZSJpbnB1dG1lc3NhZ2Ui''@;'; put 'put ''OmNhc2UiaW5wdXR0aXRsZSI6Y2FzZSJjb21ib2hpZGUiOmNhc2UiaW5wdXRoaWRlIjpjYXNlImNvbmRpdGlvbiI6Y2FzZSJxdWFsaWZpZXIiOmNhc2UidXNlYmxhbmsiOmNhc2UidmFsdWUxIjpjYXNlInZhbHVlMiI6Y2FzZSJmb3JtYXQiOmJyZWFrO2RlZmF1bHQ6dm89ITF9YnJlYWs7Y2Fz''@;'; put 'put ''ZSJtYXBpbmZvIjpjYXNlInNjaGVtYSI6Y2FzZSJkYXRhIjpzd2l0Y2goamVbM10pe2Nhc2UibWFwIjpjYXNlImVudHJ5IjpjYXNlInJhbmdlIjpjYXNlInhwYXRoIjpjYXNlImZpZWxkIjpjYXNlInhzZHR5cGUiOmNhc2UiZmlsdGVyb24iOmNhc2UiYWdncmVnYXRlIjpjYXNlImVsZW1lbnR0''@;'; put 'put ''eXBlIjpjYXNlImF0dHJpYnV0ZXR5cGUiOmNhc2Uic2NoZW1hIjpjYXNlImVsZW1lbnQiOmNhc2UiY29tcGxleHR5cGUiOmNhc2UiZGF0YXR5cGUiOmNhc2UiYWxsIjpjYXNlImF0dHJpYnV0ZSI6Y2FzZSJleHRlbmRzIjpjYXNlInJvdyI6YnJlYWs7ZGVmYXVsdDp2bz0hMX1icmVhaztjYXNl''@;'; put 'put ''InNtYXJ0dGFncyI6YnJlYWs7ZGVmYXVsdDp2bz0hMX1pZih2b3x8amVbM10ubWF0Y2goLyFcW0NEQVRBLykpYnJlYWs7aWYoIVllW1llLmxlbmd0aC0xXVsxXSl0aHJvdyJVbnJlY29nbml6ZWQgdGFnOiAiK2plWzNdKyJ8IitZZS5qb2luKCJ8Iik7aWYoImN1c3RvbWRvY3VtZW50cHJvcGVy''@;'; put 'put ''dGllcyI9PT1ZZVtZZS5sZW5ndGgtMV1bMF0pe2lmKCIvPiI9PT1qZVswXS5zbGljZSgtMikpYnJlYWs7Ii8iPT09amVbMV0/SGgob2ksb2EsZGksd2Uuc2xpY2UoY3IsamUuaW5kZXgpKTooZGk9amUsY3I9amUuaW5kZXgramVbMF0ubGVuZ3RoKTticmVha31pZihYLldURil0aHJvdyJVbnJl''@;'; put 'put ''Y29nbml6ZWQgdGFnOiAiK2plWzNdKyJ8IitZZS5qb2luKCJ8Iil9dmFyIGwyPXt9O3JldHVybiFYLmJvb2tTaGVldHMmJiFYLmJvb2tQcm9wcyYmKGwyLlNoZWV0cz14dCksbDIuU2hlZXROYW1lcz1SdCxsMi5Xb3JrYm9vaz10MCxsMi5TU0Y9Ri5nZXRfdGFibGUoKSxsMi5Qcm9wcz1xcixs''@;'; put 'put ''Mi5DdXN0cHJvcHM9b2ksbDIuU2hlZXRzJiZsMi5TaGVldE5hbWVzLmZvckVhY2goZnVuY3Rpb24oTWMpe3ZhciBwMj1sMi5TaGVldHNbTWNdO3AyWyIhbWVyZ2VzIl0mJnAyWyIhbWVyZ2VzIl0uZm9yRWFjaChmdW5jdGlvbihycil7InN0cmluZyI9PXR5cGVvZiByciYmKHJyPVUudXRpbHMu''@;'; put 'put ''ZGVjb2RlX3JhbmdlKHJyKSk7dmFyIElyPVUudXRpbHMuZW5jb2RlX2NlbGwocnIucyksWnI9QXJyYXkuaXNBcnJheShwMik/KHAyW3JyLnMucl18fFtdKVtyci5zLmNdOnAyW0lyXTtaciYmWnIucyYmKG51bGwhPVpyLnMudG9wJiZhYy5zaGVldF9zZXRfcmFuZ2Vfc3R5bGUocDIscnIse3Rv''@;'; put 'put ''cDpaci5zLnRvcH0pLG51bGwhPVpyLnMuYm90dG9tJiZhYy5zaGVldF9zZXRfcmFuZ2Vfc3R5bGUocDIscnIse2JvdHRvbTpaci5zLmJvdHRvbX0pLG51bGwhPVpyLnMubGVmdCYmYWMuc2hlZXRfc2V0X3JhbmdlX3N0eWxlKHAyLHJyLHtsZWZ0OlpyLnMubGVmdH0pLG51bGwhPVpyLnMucmln''@;'; put 'put ''aHQmJmFjLnNoZWV0X3NldF9yYW5nZV9zdHlsZShwMixycix7cmlnaHQ6WnIucy5yaWdodH0pKX0pfSksbDJ9ZnVuY3Rpb24gZUMoSCxpZSl7c3dpdGNoKE1mKGllPWllfHx7fSksaWUudHlwZXx8ImJhc2U2NCIpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gcV8oU2UuZGVjb2RlKEgpLGllKTtjYXNl''@;'; put 'put ''ImJpbmFyeSI6Y2FzZSJidWZmZXIiOmNhc2UiZmlsZSI6cmV0dXJuIHFfKEgsaWUpO2Nhc2UiYXJyYXkiOnJldHVybiBxXyhuZShIKSxpZSl9fWZ1bmN0aW9uIElQKEgpe3JldHVybiBfaSgiTmFtZWRSYW5nZSIsbnVsbCx7InNzOk5hbWUiOkguTmFtZSwic3M6UmVmZXJzVG8iOiI9IitWRShI''@;'; put 'put ''LlJlZix7cjowLGM6MH0pfSl9ZnVuY3Rpb24gRFAoSCxpZSxYLHdlLHhlLEZlLFplKXtpZighSHx8bnVsbD09SC52JiZudWxsPT1ILmYmJiF3ZS5zaGVldFN0dWJzKXJldHVybiIiO3ZhciBqZT17fTtpZihILmYmJihqZVsic3M6Rm9ybXVsYSJdPSI9IitScihWRShILmYsWmUpKSksSC5GJiZI''@;'; put 'put ''LkYuc2xpY2UoMCxpZS5sZW5ndGgpPT1pZSl7dmFyIFllPXVsKEguRi5zbGljZShpZS5sZW5ndGgrMSkpO2plWyJzczpBcnJheVJhbmdlIl09IlJDOlIiKyhZZS5yPT1aZS5yPyIiOiJbIisoWWUuci1aZS5yKSsiXSIpKyJDIisoWWUuYz09WmUuYz8iIjoiWyIrKFllLmMtWmUuYykrIl0iKX1p''@;'; put 'put ''ZihILmwmJkgubC5UYXJnZXQmJihqZVsic3M6SFJlZiJdPVJyKEgubC5UYXJnZXQpLEgubC5Ub29sdGlwJiYoamVbIng6SFJlZlNjcmVlblRpcCJdPVJyKEgubC5Ub29sdGlwKSkpLFhbIiFtZXJnZXMiXSlmb3IodmFyIE10PVhbIiFtZXJnZXMiXSx4dD0wO3h0IT1NdC5sZW5ndGg7Kyt4dClN''@;'; put 'put ''dFt4dF0ucy5jIT1aZS5jfHxNdFt4dF0ucy5yIT1aZS5yfHwoTXRbeHRdLmUuYz5NdFt4dF0ucy5jJiYoamVbInNzOk1lcmdlQWNyb3NzIl09TXRbeHRdLmUuYy1NdFt4dF0ucy5jKSxNdFt4dF0uZS5yPk10W3h0XS5zLnImJihqZVsic3M6TWVyZ2VEb3duIl09TXRbeHRdLmUuci1NdFt4dF0u''@;'; put 'put ''cy5yKSk7dmFyIFJ0PSIiLFV0PSIiO3N3aXRjaChILnQpe2Nhc2UieiI6aWYoIXdlLnNoZWV0U3R1YnMpcmV0dXJuIiI7YnJlYWs7Y2FzZSJuIjpSdD0iTnVtYmVyIixVdD1TdHJpbmcoSC52KTticmVhaztjYXNlImIiOlJ0PSJCb29sZWFuIixVdD1ILnY/IjEiOiIwIjticmVhaztjYXNlImUi''@;'; put 'put ''OlJ0PSJFcnJvciIsVXQ9TjFbSC52XTticmVhaztjYXNlImQiOlJ0PSJEYXRlVGltZSIsVXQ9bmV3IERhdGUoSC52KS50b0lTT1N0cmluZygpLG51bGw9PUgueiYmKEguej1ILnp8fEYuX3RhYmxlWzE0XSk7YnJlYWs7Y2FzZSJzIjpSdD0iU3RyaW5nIixVdD1kMChILnZ8fCIiKX12YXIgbm49''@;'; put 'put ''WTEod2UuY2VsbFhmcyxudWxsLEgsd2UpO2plWyJzczpTdHlsZUlEIl09InMiKygyMStubiksamVbInNzOkluZGV4Il09WmUuYysxO3ZhciBDbj1udWxsIT1ILnY/VXQ6IiIsRHQ9InoiPT1ILnQ/IiI6SC5SP2Z1bmN0aW9uIG9UKEgpe3JldHVybic8c3M6RGF0YSBzczpUeXBlPSJTdHJpbmci''@;'; put 'put ''IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4nK0gubWFwKGZ1bmN0aW9uKFgpe3ZhciB3ZT1kMChYLnYpO3JldHVybiBYLnMmJihYLnMuYm9sZCYmKHdlPSI8Qj4iK3dlKyI8L0I+IiksWC5zLml0YWxpYyYmKHdlPSI8ST4iK3dlKyI8L0k+IiksWC5zLnN0cmlrZSYm''@;'; put 'put ''KHdlPSI8Uz4iK3dlKyI8L1M+IiksWC5zLnVuZGVybGluZSYmKHdlPSI8VT4iK3dlKyI8L1U+IiksInN1cGVyIj09WC5zLnZhbGlnbiYmKHdlPSI8U3VwPiIrd2UrIjwvU3VwPiIpLCJzdWIiPT1YLnMudmFsaWduJiYod2U9IjxTdWI+Iit3ZSsiPC9TdWI+IiksKFgucy5uYW1lfHxYLnMuc3p8''@;'; put 'put ''fFgucy5jb2xvciYmbnVsbCE9WC5zLmNvbG9yLnJnYikmJih3ZT1bIjxGb250IixYLnMubmFtZT8nIGh0bWw6RmFjZT0iJytYLnMubmFtZSsnIic6IiIsWC5zLnN6PycgaHRtbDpTaXplPSInK1gucy5zeisnIic6IiIsWC5zLmNvbG9yPycgaHRtbDpDb2xvcj0iIycrKCIwMDAwMDAiKygibnVt''@;'; put 'put ''YmVyIj09dHlwZW9mIFgucy5jb2xvci5yZ2I/WC5zLmNvbG9yLnJnYi50b1N0cmluZygxNik6WC5zLmNvbG9yLnJnYikpLnNsaWNlKC02KSsnIic6IiIsIj4iLHdlLCI8L0ZvbnQ+Il0uam9pbigiIikpKSx3ZX0pLmpvaW4oIiIpKyI8L0RhdGE+In0oSC5SKTonPERhdGEgc3M6VHlwZT0iJytS''@;'; put 'put ''dCsnIj4nK0NuKyI8L0RhdGE+IjtyZXR1cm4oSC5jfHxbXSkubGVuZ3RoPjAmJihEdCs9ZnVuY3Rpb24gTW8oSCl7cmV0dXJuIEgubWFwKGZ1bmN0aW9uKGllKXt2YXIgd2U9X2koInNzOkRhdGEiLGZ1bmN0aW9uKGllKXtyZXR1cm4gaWUucmVwbGFjZSgvKFxyXG58W1xyXG5dKS9nLCImIzEw''@;'; put 'put ''OyIpfShpZS50fHwiIikse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIn0pO3JldHVybiBfaSgiQ29tbWVudCIsd2UseyJzczpBdXRob3IiOmllLmF9KX0pLmpvaW4oIiIpfShILmMpKSxfaSgiQ2VsbCIsRHQsamUpfWZ1bmN0aW9uIExQKEgsaWUpe3ZhciBYPSc8Um93''@;'; put 'put ''IHNzOkluZGV4PSInKyhIKzEpKyciJztyZXR1cm4gaWUmJihpZS5ocHgmJiFpZS5ocHQmJihpZS5ocHQ9VGgoaWUuaHB4KSksaWUuaHB0JiYoWCs9JyBzczpBdXRvRml0SGVpZ2h0PSIwIiBzczpIZWlnaHQ9IicraWUuaHB0KyciJyksaWUuaGlkZGVuJiYoWCs9JyBzczpIaWRkZW49IjEiJykp''@;'; put 'put ''LFgrIj4ifWZ1bmN0aW9uIE9QKEgsaWUsWCl7dmFyIHdlPVtdLEZlPVguU2hlZXRzW1guU2hlZXROYW1lc1tIXV0sWmU9RmU/ZnVuY3Rpb24gaVQoSCxpZSxYLHdlKXtpZighSHx8ISgod2V8fHt9KS5Xb3JrYm9va3x8e30pLk5hbWVzKXJldHVybiIiO2Zvcih2YXIgeGU9d2UuV29ya2Jvb2su''@;'; put 'put ''TmFtZXMsRmU9W10sWmU9MDtaZTx4ZS5sZW5ndGg7KytaZSl7dmFyIGplPXhlW1plXTtqZS5TaGVldD09WCYmKGplLk5hbWUubWF0Y2goL15feGxmblwuLyl8fEZlLnB1c2goSVAoamUpKSl9cmV0dXJuIEZlLmpvaW4oIiIpfShGZSwwLEgsWCk6IiI7cmV0dXJuIFplLmxlbmd0aD4wJiZ3ZS5w''@;'; put 'put ''dXNoKCI8TmFtZXM+IitaZSsiPC9OYW1lcz4iKSxaZT1GZT9mdW5jdGlvbiBTNShILGllLFgsd2Upe2lmKCFIWyIhcmVmIl0pcmV0dXJuIiI7dmFyIHhlPUZvKEhbIiFyZWYiXSksRmU9SFsiIW1lcmdlcyJdfHxbXSxaZT0wLGplPVtdO0hbIiFjb2xzIl0mJkhbIiFjb2xzIl0uZm9yRWFjaChm''@;'; put 'put ''dW5jdGlvbih6dCxQbil7eWMoenQpO3ZhciBUbj0hIXp0LndpZHRoLE9uPWs2KFBuLHp0KSxZbj17InNzOkluZGV4IjpQbisxfTtUbiYmKFluWyJzczpXaWR0aCJdPW1tKE9uLndpZHRoKSksenQuaGlkZGVuJiYoWW5bInNzOkhpZGRlbiJdPSIxIiksamUucHVzaChfaSgiQ29sdW1uIixudWxs''@;'; put 'put ''LFluKSl9KTtmb3IodmFyIFllPUFycmF5LmlzQXJyYXkoSCksTXQ9eGUucy5yO010PD14ZS5lLnI7KytNdCl7Zm9yKHZhciB4dD1bTFAoTXQsKEhbIiFyb3dzIl18fFtdKVtNdF0pXSxSdD14ZS5zLmM7UnQ8PXhlLmUuYzsrK1J0KXt2YXIgVXQ9ITE7Zm9yKFplPTA7WmUhPUZlLmxlbmd0aDsr''@;'; put 'put ''K1plKWlmKCEoRmVbWmVdLnMuYz5SdHx8RmVbWmVdLnMucj5NdHx8RmVbWmVdLmUuYzxSdHx8RmVbWmVdLmUucjxNdCkpeyhGZVtaZV0ucy5jIT1SdHx8RmVbWmVdLnMuciE9TXQpJiYoVXQ9ITApO2JyZWFrfWlmKCFVdCl7dmFyIG5uPXtyOk10LGM6UnR9LENuPVkwKG5uKTt4dC5wdXNoKERQ''@;'; put 'put ''KFllPyhIW010XXx8W10pW1J0XTpIW0NuXSxDbixILGllLDAsMCxubikpfX14dC5wdXNoKCI8L1Jvdz4iKSx4dC5sZW5ndGg+MiYmamUucHVzaCh4dC5qb2luKCIiKSl9cmV0dXJuIGplLmpvaW4oIiIpfShGZSxpZSk6IiIsWmUubGVuZ3RoPjAmJndlLnB1c2goIjxUYWJsZT4iK1plKyI8L1Rh''@;'; put 'put ''YmxlPiIpLHdlLnB1c2goZnVuY3Rpb24gX0coSCxpZSxYLHdlKXtpZighSClyZXR1cm4iIjt2YXIgeGU9W107aWYoSFsiIW1hcmdpbnMiXSYmKHhlLnB1c2goIjxQYWdlU2V0dXA+IiksSFsiIW1hcmdpbnMiXS5oZWFkZXImJnhlLnB1c2goX2koIkhlYWRlciIsbnVsbCx7Ing6TWFyZ2luIjpI''@;'; put 'put ''WyIhbWFyZ2lucyJdLmhlYWRlcn0pKSxIWyIhbWFyZ2lucyJdLmZvb3RlciYmeGUucHVzaChfaSgiRm9vdGVyIixudWxsLHsieDpNYXJnaW4iOkhbIiFtYXJnaW5zIl0uZm9vdGVyfSkpLHhlLnB1c2goX2koIlBhZ2VNYXJnaW5zIixudWxsLHsieDpCb3R0b20iOkhbIiFtYXJnaW5zIl0uYm90''@;'; put 'put ''dG9tfHwiMC43NSIsIng6TGVmdCI6SFsiIW1hcmdpbnMiXS5sZWZ0fHwiMC43IiwieDpSaWdodCI6SFsiIW1hcmdpbnMiXS5yaWdodHx8IjAuNyIsIng6VG9wIjpIWyIhbWFyZ2lucyJdLnRvcHx8IjAuNzUifSkpLHhlLnB1c2goIjwvUGFnZVNldHVwPiIpKSx3ZSYmd2UuV29ya2Jvb2smJndl''@;'; put 'put ''Lldvcmtib29rLlNoZWV0cyYmd2UuV29ya2Jvb2suU2hlZXRzW1hdKWlmKHdlLldvcmtib29rLlNoZWV0c1tYXS5IaWRkZW4peGUucHVzaChfaSgiVmlzaWJsZSIsMT09d2UuV29ya2Jvb2suU2hlZXRzW1hdLkhpZGRlbj8iU2hlZXRIaWRkZW4iOiJTaGVldFZlcnlIaWRkZW4iLHt9KSk7ZWxz''@;'; put 'put ''ZXtmb3IodmFyIEZlPTA7RmU8WCYmKCF3ZS5Xb3JrYm9vay5TaGVldHNbRmVdfHx3ZS5Xb3JrYm9vay5TaGVldHNbRmVdLkhpZGRlbik7KytGZSk7RmU9PVgmJnhlLnB1c2goIjxTZWxlY3RlZC8+Iil9aWYoKCgoKHdlfHx7fSkuV29ya2Jvb2t8fHt9KS5WaWV3c3x8W10pWzBdfHx7fSkuUlRM''@;'; put 'put ''JiZ4ZS5wdXNoKCI8RGlzcGxheVJpZ2h0VG9MZWZ0Lz4iKSxucihIWyIhZ3JpZGxpbmVzIl0pJiZ4ZS5wdXNoKCI8RG9Ob3REaXNwbGF5R3JpZGxpbmVzLz4iKSxIWyIhZnJlZXplIl0pe3hlLnB1c2goIjxGcmVlemVQYW5lcy8+IikseGUucHVzaCgiPEZyb3plbk5vU3BsaXQvPiIpO3ZhciBa''@;'; put 'put ''ZT11bChIWyIhZnJlZXplIl0pO1plLnI+MCYmKHhlLnB1c2goc2EoIlNwbGl0SG9yaXpvbnRhbCIsIiIrWmUucikpLHhlLnB1c2goc2EoIlRvcFJvd0JvdHRvbVBhbmUiLCIiK1plLnIpKSksWmUuYz4wJiYoeGUucHVzaChzYSgiU3BsaXRWZXJ0aWNhbCIsIiIrWmUuYykpLHhlLnB1c2goc2Eo''@;'; put 'put ''IkxlZnRDb2x1bW5SaWdodFBhbmUiLCIiK1plLmMpKSl9cmV0dXJuIEhbIiFwcm90ZWN0Il0mJih4ZS5wdXNoKHNhKCJQcm90ZWN0Q29udGVudHMiLCJUcnVlIikpLEhbIiFwcm90ZWN0Il0ub2JqZWN0cyYmeGUucHVzaChzYSgiUHJvdGVjdE9iamVjdHMiLCJUcnVlIikpLEhbIiFwcm90ZWN0''@;'; put 'put ''Il0uc2NlbmFyaW9zJiZ4ZS5wdXNoKHNhKCJQcm90ZWN0U2NlbmFyaW9zIiwiVHJ1ZSIpKSxudWxsPT1IWyIhcHJvdGVjdCJdLnNlbGVjdExvY2tlZENlbGxzfHxIWyIhcHJvdGVjdCJdLnNlbGVjdExvY2tlZENlbGxzP251bGwhPUhbIiFwcm90ZWN0Il0uc2VsZWN0VW5sb2NrZWRDZWxscyYm''@;'; put 'put ''IUhbIiFwcm90ZWN0Il0uc2VsZWN0VW5sb2NrZWRDZWxscyYmeGUucHVzaChzYSgiRW5hYmxlU2VsZWN0aW9uIiwiVW5sb2NrZWRDZWxscyIpKTp4ZS5wdXNoKHNhKCJFbmFibGVTZWxlY3Rpb24iLCJOb1NlbGVjdGlvbiIpKSxbWyJmb3JtYXRDZWxscyIsIkFsbG93Rm9ybWF0Q2VsbHMiXSxb''@;'; put 'put ''ImZvcm1hdENvbHVtbnMiLCJBbGxvd1NpemVDb2xzIl0sWyJmb3JtYXRSb3dzIiwiQWxsb3dTaXplUm93cyJdLFsiaW5zZXJ0Q29sdW1ucyIsIkFsbG93SW5zZXJ0Q29scyJdLFsiaW5zZXJ0Um93cyIsIkFsbG93SW5zZXJ0Um93cyJdLFsiaW5zZXJ0SHlwZXJsaW5rcyIsIkFsbG93SW5zZXJ0''@;'; put 'put ''SHlwZXJsaW5rcyJdLFsiZGVsZXRlQ29sdW1ucyIsIkFsbG93RGVsZXRlQ29scyJdLFsiZGVsZXRlUm93cyIsIkFsbG93RGVsZXRlUm93cyJdLFsic29ydCIsIkFsbG93U29ydCJdLFsiYXV0b0ZpbHRlciIsIkFsbG93RmlsdGVyIl0sWyJwaXZvdFRhYmxlcyIsIkFsbG93VXNlUGl2b3RUYWJs''@;'; put 'put ''ZXMiXV0uZm9yRWFjaChmdW5jdGlvbihqZSl7SFsiIXByb3RlY3QiXVtqZVswXV0mJnhlLnB1c2goIjwiK2plWzFdKyIvPiIpfSkpLDA9PXhlLmxlbmd0aD8iIjpfaSgiV29ya3NoZWV0T3B0aW9ucyIseGUuam9pbigiIikse3htbG5zOnVhX3h9KX0oRmUsMCxILFgpKSx3ZS5qb2luKCIiKX1m''@;'; put 'put ''dW5jdGlvbiBNQShILGllKXtpZXx8KGllPXt9KSxILlNTRnx8KEguU1NGPUYuZ2V0X3RhYmxlKCkpLEguU1NGJiYoeWUoRiksRi5sb2FkX3RhYmxlKEguU1NGKSxpZS5yZXZzc2Y9ZXQoSC5TU0YpLGllLnJldnNzZltILlNTRls2NTUzNV1dPTAsaWUuc3NmPUguU1NGLEguU3R5bGVzPXtGb250''@;'; put 'put ''czppZS5Gb250cz1be3N6OjEyLGNvbG9yOnt0aGVtZToxLHJnYjoiMDAwMDAwIn0sbmFtZToiQ2FsaWJyaSIsZmFtaWx5OjIsc2NoZW1lOiJtaW5vciJ9XSxGaWxsczppZS5GaWxscz1be3BhdHRlcm5UeXBlOiJub25lIn0se3BhdHRlcm5UeXBlOiJncmF5MTI1In1dLEJvcmRlcnM6aWUuQm9y''@;'; put 'put ''ZGVycz1be31dfSxpZS5jZWxsWGZzPVtdLGllLmNlbGxTdHlsZVhmcz1be25hbWU6Ik5vcm1hbCJ9XSxZMShpZS5jZWxsWGZzLG51bGwse30se3JldnNzZjp7R2VuZXJhbDowfX0pKTt2YXIgWD1bXTtYLnB1c2goZnVuY3Rpb24gazUoSCxpZSl7dmFyIFg9W107cmV0dXJuIEguUHJvcHMmJlgu''@;'; put 'put ''cHVzaChmdW5jdGlvbiBoYShILGllKXt2YXIgWD1bXTtyZXR1cm4gb24oZW8pLm1hcChmdW5jdGlvbih3ZSl7Zm9yKHZhciB4ZT0wO3hlPGxlLmxlbmd0aDsrK3hlKWlmKGxlW3hlXVsxXT09d2UpcmV0dXJuIGxlW3hlXTtmb3IoeGU9MDt4ZTxvMi5sZW5ndGg7Kyt4ZSlpZihvMlt4ZV1bMV09''@;'; put 'put ''PXdlKXJldHVybiBvMlt4ZV07dGhyb3cgd2V9KS5mb3JFYWNoKGZ1bmN0aW9uKHdlKXtpZihudWxsIT1IW3dlWzFdXSl7dmFyIHhlPWllJiZpZS5Qcm9wcyYmbnVsbCE9aWUuUHJvcHNbd2VbMV1dP2llLlByb3BzW3dlWzFdXTpIW3dlWzFdXTsiZGF0ZSI9PT13ZVsyXSYmKHhlPW5ldyBEYXRl''@;'; put 'put ''KHhlKS50b0lTT1N0cmluZygpLnJlcGxhY2UoL1wuXGQqWi8sIloiKSksIm51bWJlciI9PXR5cGVvZiB4ZT94ZT1TdHJpbmcoeGUpOiEwPT09eGV8fCExPT09eGU/eGU9eGU/IjEiOiIwIjp4ZSBpbnN0YW5jZW9mIERhdGUmJih4ZT1uZXcgRGF0ZSh4ZSkudG9JU09TdHJpbmcoKS5yZXBsYWNl''@;'; put 'put ''KC9cLlxkKlovLCIiKSksWC5wdXNoKHNhKGVvW3dlWzFdXXx8d2VbMV0seGUpKX19KSxfaSgiRG9jdW1lbnRQcm9wZXJ0aWVzIixYLmpvaW4oIiIpLHt4bWxuczp1YV9vfSl9KEguUHJvcHMsaWUpKSxILkN1c3Rwcm9wcyYmWC5wdXNoKGZ1bmN0aW9uIERhKEgsaWUpe3ZhciBYPVsiV29ya3No''@;'; put 'put ''ZWV0cyIsIlNoZWV0TmFtZXMiXSx3ZT0iQ3VzdG9tRG9jdW1lbnRQcm9wZXJ0aWVzIix4ZT1bXTtyZXR1cm4gSCYmb24oSCkuZm9yRWFjaChmdW5jdGlvbihGZSl7aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEgsRmUpKXtmb3IodmFyIFplPTA7WmU8bGUubGVuZ3Ro''@;'; put 'put ''OysrWmUpaWYoRmU9PWxlW1plXVsxXSlyZXR1cm47Zm9yKFplPTA7WmU8bzIubGVuZ3RoOysrWmUpaWYoRmU9PW8yW1plXVsxXSlyZXR1cm47Zm9yKFplPTA7WmU8WC5sZW5ndGg7KytaZSlpZihGZT09WFtaZV0pcmV0dXJuO3ZhciBqZT1IW0ZlXSxZZT0ic3RyaW5nIjsibnVtYmVyIj09dHlw''@;'; put 'put ''ZW9mIGplPyhZZT0iZmxvYXQiLGplPVN0cmluZyhqZSkpOiEwPT09amV8fCExPT09amU/KFllPSJib29sZWFuIixqZT1qZT8iMSI6IjAiKTpqZT1TdHJpbmcoamUpLHhlLnB1c2goX2koTWkoRmUpLGplLHsiZHQ6ZHQiOlllfSkpfX0pLGllJiZvbihpZSkuZm9yRWFjaChmdW5jdGlvbihGZSl7''@;'; put 'put ''aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGllLEZlKSYmKCFIfHwhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEgsRmUpKSl7dmFyIFplPWllW0ZlXSxqZT0ic3RyaW5nIjsibnVtYmVyIj09dHlwZW9mIFplPyhqZT0iZmxvYXQiLFplPVN0cmlu''@;'; put 'put ''ZyhaZSkpOiEwPT09WmV8fCExPT09WmU/KGplPSJib29sZWFuIixaZT1aZT8iMSI6IjAiKTpaZSBpbnN0YW5jZW9mIERhdGU/KGplPSJkYXRlVGltZS50eiIsWmU9WmUudG9JU09TdHJpbmcoKSk6WmU9U3RyaW5nKFplKSx4ZS5wdXNoKF9pKE1pKEZlKSxaZSx7ImR0OmR0IjpqZX0pKX19KSwi''@;'; put 'put ''PCIrd2UrJyB4bWxucz0iJyt1YV9vKyciPicreGUuam9pbigiIikrIjwvIit3ZSsiPiJ9KEguUHJvcHMsSC5DdXN0cHJvcHMpKSxYLmpvaW4oIiIpfShILGllKSksWC5wdXNoKCIiKSxYLnB1c2goIiIpLFgucHVzaCgiIik7Zm9yKHZhciB3ZT0wO3dlPEguU2hlZXROYW1lcy5sZW5ndGg7Kyt3''@;'; put 'put ''ZSlYLnB1c2goX2koIldvcmtzaGVldCIsT1Aod2UsaWUsSCkseyJzczpOYW1lIjpScihILlNoZWV0TmFtZXNbd2VdKX0pKTtyZXR1cm4gWFsyXT1mdW5jdGlvbiByYyhILGllKXt2YXIgd2U9W1snPFN0eWxlIHNzOklEPSJEZWZhdWx0IiBzczpOYW1lPSJOb3JtYWwiPicsJzxBbGlnbm1lbnQg''@;'; put 'put ''c3M6VmVydGljYWw9IkJvdHRvbSIvPicsIjxCb3JkZXJzLz4iLCc8Rm9udCBzczpGb250TmFtZT0iQ2FsaWJyaSIgeDpGYW1pbHk9IlN3aXNzIiBzczpTaXplPSIxMiIgc3M6Q29sb3I9IiMwMDAwMDAiLz4nLCI8SW50ZXJpb3IvPiIsIjxOdW1iZXJGb3JtYXQvPiIsIjxQcm90ZWN0aW9uLz4i''@;'; put 'put ''LCI8L1N0eWxlPiJdLmpvaW4oIiIpXTtyZXR1cm4gaWUuY2VsbFhmcy5mb3JFYWNoKGZ1bmN0aW9uKHhlLEZlKXt2YXIgWmU9W107aWYoeGUuYWxpZ25tZW50KXt2YXIgamU9e307eGUuYWxpZ25tZW50LnNocmlua1RvRml0JiYoamVbInNzOlNocmlua1RvRml0Il09IjEiKSx4ZS5hbGlnbm1l''@;'; put 'put ''bnQud3JhcFRleHQmJihqZVsic3M6V3JhcFRleHQiXT0iMSIpLHhlLmFsaWdubWVudC52ZXJ0aWNhbCYmKGplWyJzczpWZXJ0aWNhbCJdPUFuKHhlLmFsaWdubWVudC52ZXJ0aWNhbCkpLHhlLmFsaWdubWVudC5ob3Jpem9udGFsJiYoamVbInNzOkhvcml6b250YWwiXT1Bbih4ZS5hbGlnbm1l''@;'; put 'put ''bnQuaG9yaXpvbnRhbCkpLHhlLmFsaWdubWVudC5pbmRlbnQmJihqZVsic3M6SW5kZW50Il09eGUuYWxpZ25tZW50LmluZGVudCkseGUuYWxpZ25tZW50LnRleHRSb3RhdGlvbiYmKGplWyJzczpSb3RhdGUiXT14ZS5hbGlnbm1lbnQudGV4dFJvdGF0aW9uKSxaZS5wdXNoKF9pKCJBbGlnbm1l''@;'; put 'put ''bnQiLG51bGwsamUpKX1lOmlmKG51bGwhPXhlLmZvbnRJZCl7dmFyIFllPWllLkZvbnRzW3hlLmZvbnRJZF07aWYoIVllKWJyZWFrIGU7dmFyIE10PXsic3M6Rm9udE5hbWUiOiJDYWxpYnJpIiwic3M6U2l6ZSI6IjEyIn0seHQ9ITE7WWUuYm9sZCYmKHh0PSEwLE10WyJzczpCb2xkIl09IjEi''@;'; put 'put ''KSxZZS5pdGFsaWMmJih4dD0hMCxNdFsic3M6SXRhbGljIl09IjEiKSxZZS5zdHJpa2UmJih4dD0hMCxNdFsic3M6U3RyaWtlVGhyb3VnaCJdPSIxIiksbnVsbCE9WWUudW5kZXJsaW5lJiYoeHQ9ITAsTXRbInNzOlVuZGVybGluZSJdPUtfW1llLnVuZGVybGluZV18fChZZS51bmRlcmxpbmU/''@;'; put 'put ''IlNpbmdsZSI6Ik5vbmUiKSksbnVsbCE9WWUuc3omJih4dD0hMCxNdFsic3M6U2l6ZSJdPVllLnN6KSxudWxsIT1ZZS5uYW1lJiYoeHQ9ITAsTXRbInNzOkZvbnROYW1lIl09WWUubmFtZSksWWUuY29sb3ImJm51bGwhPVllLmNvbG9yLnJnYiYmKHh0PSEwLE10WyJzczpDb2xvciJdPSIjIiso''@;'; put 'put ''Im51bWJlciI9PXR5cGVvZiBZZS5jb2xvci5yZ2I/IjAwMDAwMCIrWWUuY29sb3IucmdiLnRvU3RyaW5nKDE2KTpZZS5jb2xvci5yZ2IpLnNsaWNlKC02KSksWyJzdWIiLCJzdXBlciJdLmluZGV4T2YoWWUudmFsaWduKT4tMSYmKE10WyJzczpWZXJ0aWNhbEFsaWduIl09QW4oWWUudmFsaWdu''@;'; put 'put ''KSsic2NyaXB0IikseHQmJlplLnB1c2goX2koIkZvbnQiLG51bGwsTXQpKX1lOmlmKHhlLmZpbGxJZD4wKXt2YXIgUnQ9aWUuRmlsbHNbeGUuZmlsbElkXTtpZighUnR8fCFSdC5mZ0NvbG9yfHxudWxsPT1SdC5mZ0NvbG9yLnJnYilicmVhayBlO1plLnB1c2goX2koIkludGVyaW9yIixudWxs''@;'; put 'put ''LHsic3M6UGF0dGVybiI6aEVbUnQucGF0dGVyblR5cGVdfHwiU29saWQiLCJzczpDb2xvciI6IiMiKygibnVtYmVyIj09dHlwZW9mIFJ0LmZnQ29sb3IucmdiPyIwMCIrUnQuZmdDb2xvci5yZ2IudG9TdHJpbmcoMTYpOlJ0LmZnQ29sb3IucmdiKS5zbGljZSgtNil9KSl9WmUucHVzaChfaSgi''@;'; put 'put ''TnVtYmVyRm9ybWF0IixudWxsLHsic3M6Rm9ybWF0IjpScihGLl90YWJsZVt4ZS5udW1GbXRJZF0pfSkpO3ZhciBVdD17InNzOklEIjoicyIrKDIxK0ZlKX07eGUuc3R5bGUmJihVdFsic3M6TmFtZSJdPXhlLnN0eWxlKSx3ZS5wdXNoKF9pKCJTdHlsZSIsWmUuam9pbigiIiksVXQpKX0pLF9p''@;'; put 'put ''KCJTdHlsZXMiLHdlLmpvaW4oIiIpKX0oMCxpZSksWFszXT1mdW5jdGlvbiB0QyhIKXtpZighKChIfHx7fSkuV29ya2Jvb2t8fHt9KS5OYW1lcylyZXR1cm4iIjtmb3IodmFyIGllPUguV29ya2Jvb2suTmFtZXMsWD1bXSx3ZT0wO3dlPGllLmxlbmd0aDsrK3dlKXt2YXIgeGU9aWVbd2VdO251''@;'; put 'put ''bGw9PXhlLlNoZWV0JiYoeGUuTmFtZS5tYXRjaCgvXl94bGZuXC4vKXx8WC5wdXNoKElQKHhlKSkpfXJldHVybiBfaSgiTmFtZXMiLFguam9pbigiIikpfShIKSxjbitfaSgiV29ya2Jvb2siLFguam9pbigiIikse3htbG5zOnVhX3NzLCJ4bWxuczpvIjp1YV9vLCJ4bWxuczp4Ijp1YV94LCJ4''@;'; put 'put ''bWxuczpzcyI6dWFfc3MsInhtbG5zOmR0IjoidXVpZDpDMkY0MTAxMC02NUIzLTExZDEtQTI5Ri0wMEFBMDBDMTQ4ODIiLCJ4bWxuczpodG1sIjoiaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MCJ9KX1mdW5jdGlvbiAkMihILGllLFgsd2Upe3ZhciB4ZT1YLEZlPVtdLFplPWllLnNs''@;'; put 'put ''aWNlKGllLmwsaWUubCt4ZSk7aWYod2UmJndlLmVuYyYmd2UuZW5jLmluc2l0dSYmWmUubGVuZ3RoPjApc3dpdGNoKEgubil7Y2FzZSJCT0YiOmNhc2UiRmlsZVBhc3MiOmNhc2UiRmlsZUxvY2siOmNhc2UiSW50ZXJmYWNlSGRyIjpjYXNlIlJSREluZm8iOmNhc2UiUlJESGVhZCI6Y2FzZSJV''@;'; put 'put ''c3JFeGNsIjpjYXNlIkVPRiI6d2UuZW5jLmluc2l0dShUZSh7bGVuZ3RoOlplLmxlbmd0aH0pLCJza2lwIik7YnJlYWs7Y2FzZSJCb3VuZFNoZWV0OCI6d2UuZW5jLmluc2l0dShUZSh7bGVuZ3RoOjR9KSwic2tpcCIpLFplPUJ1ZmZlci5jb25jYXQoW0J1ZmZlci5mcm9tKFplLnNsaWNlKDAs''@;'; put 'put ''NCkpLEJ1ZmZlci5mcm9tKHdlLmVuYy5pbnNpdHUoWmUuc2xpY2UoNCkpKV0pO2JyZWFrO2RlZmF1bHQ6WmU9d2UuZW5jLmluc2l0dShaZSl9QXJyYXkuaXNBcnJheShpZSkmJiFBcnJheS5pc0FycmF5KFplKSYmKFplPUFycmF5LmZyb20oWmUpKSxGZS5wdXNoKFplKSxpZS5sKz14ZTtmb3Io''@;'; put 'put ''dmFyIGplPU5sW1BzKGllLGllLmwpXSxZZT0wO251bGwhPWplJiYiQ29udGludWUiPT09amUubi5zbGljZSgwLDgpOyl4ZT1QcyhpZSxpZS5sKzIpLFllPWllLmwrNCx3ZSYmd2UuZW5jJiZ3ZS5lbmMuaW5zaXR1JiZ3ZS5lbmMuaW5zaXR1KFRlKHtsZW5ndGg6NH0pLCJza2lwIiksIkNvbnRp''@;'; put 'put ''bnVlRnJ0Ij09amUubj9ZZSs9NDoiQ29udGludWVGcnQiPT1qZS5uLnNsaWNlKDAsMTEpJiYoWWUrPTEyLHdlJiZ3ZS5lbmMmJndlLmVuYy5pbnNpdHUmJndlLmVuYy5pbnNpdHUoVGUoe2xlbmd0aDo4fSksInNraXAiKSksWmU9aWUuc2xpY2UoWWUsaWUubCs0K3hlKSx3ZSYmd2UuZW5jJiZ3''@;'; put 'put ''ZS5lbmMuaW5zaXR1JiZaZS5sZW5ndGg+MCYmKFplPXdlLmVuYy5pbnNpdHUoWmUpKSxGZS5wdXNoKFplKSxpZS5sKz00K3hlLGplPU5sW1BzKGllLGllLmwpXTt2YXIgTXQ9VihGZSk7S2woTXQsMCk7dmFyIHh0PTA7TXQubGVucz1bXTtmb3IodmFyIFJ0PTA7UnQ8RmUubGVuZ3RoOysrUnQp''@;'; put 'put ''TXQubGVucy5wdXNoKHh0KSx4dCs9RmVbUnRdLmxlbmd0aDtpZihNdC5sZW5ndGg8WCl0aHJvdyJYTFMgUmVjb3JkICIrKEgmJkgubnx8Ij8/IikrIiBUcnVuY2F0ZWQ6ICIrTXQubGVuZ3RoKyIgPCAiK1g7cmV0dXJuIEguZihNdCxNdC5sZW5ndGgsd2UpfWZ1bmN0aW9uIFZkKEgsaWUsWCl7''@;'; put 'put ''aWYoInoiIT09SC50JiZILlhGKXt2YXIgd2U9MDt0cnl7d2U9SC56fHxILlhGLm51bUZtdElkfHwwLGllLmNlbGxORiYmKEguej1GLl90YWJsZVt3ZV0pfWNhdGNoKEZlKXtpZihpZS5XVEYpdGhyb3cgRmV9aWYoIWllfHwhMSE9PWllLmNlbGxUZXh0KXRyeXtILnc9ImUiPT09SC50P0gud3x8''@;'; put 'put ''TjFbSC52XTowPT09d2V8fCJHZW5lcmFsIj09d2U/Im4iPT09SC50PygwfEgudik9PT1ILnY/Ri5fZ2VuZXJhbF9pbnQoSC52KTpGLl9nZW5lcmFsX251bShILnYpOkYuX2dlbmVyYWwoSC52KTpGLmZvcm1hdCh3ZSxILnYse2RhdGUxOTA0OiEhWCxkYXRlTkY6aWUmJmllLmRhdGVORn0pfWNh''@;'; put 'put ''dGNoKEZlKXtpZihpZS5XVEYpdGhyb3cgRmV9aWYoaWUuY2VsbERhdGVzJiZ3ZSYmIm4iPT1ILnQmJkYuaXNfZGF0ZShGLl90YWJsZVt3ZV18fFN0cmluZyh3ZSkpKXt2YXIgeGU9Ri5wYXJzZV9kYXRlX2NvZGUoSC52KTt4ZSYmKEgudD0iZCIsSC52PW5ldyBEYXRlKHhlLnkseGUubS0xLHhl''@;'; put 'put ''LmQseGUuSCx4ZS5NLHhlLlMseGUudSkpfX19ZnVuY3Rpb24gTTUoSCxpZSxYKXtyZXR1cm57djpILGl4ZmU6aWUsdDpYfX12YXIgYVQ9ZnVuY3Rpb24oSCxpZSxYKXtpZVsiIW9iamVjdHMiXT1IfSxFNV9TST0iZTA4NTlmZjJmOTRmNjgxMGFiOTEwODAwMmIyN2IzZDkiLEU1X0RTST0iMDJk''@;'; put 'put ''NWNkZDU5YzJlMWIxMDkzOTcwODAwMmIyY2Y5YWUiO2Z1bmN0aW9uIFVtKEgsaWUpe3ZhciBYLHdlLHhlLEZlO2lmKGllfHwoaWU9e30pLE1mKGllKSxLKCksaWUuY29kZXBhZ2UmJlcoaWUuY29kZXBhZ2UpLEguRnVsbFBhdGhzKXtpZihtdC5maW5kKEgsIi9lbmNyeXB0aW9uIikpdGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZCIpO1g9bXQuZmluZChILCIhQ29tcE9iaiIpLHdlPW10LmZpbmQoSCwiL1dvcmtib29rIil8fG10LmZpbmQoSCwiL0Jvb2siKX1lbHNle3N3aXRjaChpZS50eXBlKXtjYXNlImJhc2U2NCI6SD16KFNlLmRlY29kZShIKSk7YnJl''@;'; put 'put ''YWs7Y2FzZSJiaW5hcnkiOkg9eihIKTticmVhaztjYXNlImJ1ZmZlciI6YnJlYWs7Y2FzZSJhcnJheSI6QXJyYXkuaXNBcnJheShIKXx8KEg9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoSCkpfUtsKEgsMCksd2U9e2NvbnRlbnQ6SH19aWYoWCYmZnVuY3Rpb24gRUEoSCl7dmFyIGllPXt9''@;'; put 'put ''LFg9SC5jb250ZW50O2lmKFgubD0yOCxpZS5BbnNpVXNlclR5cGU9WC5yZWFkX3NoaWZ0KDAsImxwc3RyLWFuc2kiKSxpZS5BbnNpQ2xpcGJvYXJkRm9ybWF0PWZ1bmN0aW9uIG5iKEgpe3JldHVybiBmOShILDEpfShYKSxYLmxlbmd0aC1YLmw8PTQpcmV0dXJuIGllO3ZhciB3ZT1YLnJlYWRf''@;'; put 'put ''c2hpZnQoNCk7aWYoMD09d2V8fHdlPjQwfHwoWC5sLT00LGllLlJlc2VydmVkMT1YLnJlYWRfc2hpZnQoMCwibHBzdHItYW5zaSIpLFgubGVuZ3RoLVgubDw9NCl8fDE5MDc1MDU2NTIhPT0od2U9WC5yZWFkX3NoaWZ0KDQpKXx8KGllLlVuaWNvZGVDbGlwYm9hcmRGb3JtYXQ9ZnVuY3Rpb24g''@;'; put 'put ''UWcoSCl7cmV0dXJuIGY5KEgsMil9KFgpLDA9PSh3ZT1YLnJlYWRfc2hpZnQoNCkpfHx3ZT40MCkpcmV0dXJuIGllO1gubC09NCxpZS5SZXNlcnZlZDI9WC5yZWFkX3NoaWZ0KDAsImxwd3N0ciIpfShYKSxpZS5ib29rUHJvcHMmJiFpZS5ib29rU2hlZXRzKXhlPXt9O2Vsc2V7dmFyIFplPUll''@;'; put 'put ''PyJidWZmZXIiOiJhcnJheSI7aWYod2UmJndlLmNvbnRlbnQpeGU9ZnVuY3Rpb24gUlAoSCxpZSl7dmFyIFJ0LG5uLER0LHp0LE9uLFluLFg9e29wdHM6e319LHdlPXt9LHhlPWllLmRlbnNlP1tdOnt9LEZlPXt9LFplPXt9LGplPW51bGwsWWU9W10sTXQ9IiIseHQ9e30sVXQ9IiIsUG49e30s''@;'; put 'put ''VG49W10sTXI9W10sYWk9W10seXI9e1NoZWV0czpbXSxXQlByb3BzOntkYXRlMTkwNDohMX0sVmlld3M6W3t9XX0sYXI9e30sR3I9e0ZvbnRzOltdfSx6cj1mdW5jdGlvbihwMCl7cmV0dXJuIHAwPDg/dXVbcDBdOnAwPDY0JiZhaVtwMC04XXx8dXVbcDBdfSxxcj1mdW5jdGlvbihwMCxRbCl7''@;'; put 'put ''dmFyIHEyLEFsPXAwLlhGLmRhdGE7QWwmJihBbC5wYXR0ZXJuVHlwZXx8bnVsbCE9QWwuaWN2Rm9yZSkmJlFsJiZRbC5jZWxsU3R5bGVzJiYocDAucz17fSxwMC5zLnBhdHRlcm5UeXBlPUFsLnBhdHRlcm5UeXBlLHAwLlhGLmZvbnQmJmJuKHAwLnMscDAuWEYuZm9udCksQWwuZldyYXAmJigo''@;'; put 'put ''cDAucy5hbGlnbm1lbnR8fChwMC5zLmFsaWdubWVudD17fSkpLndyYXBUZXh0PSEwKSxBbC5mU2hyaW5rVG9GaXQmJigocDAucy5hbGlnbm1lbnR8fChwMC5zLmFsaWdubWVudD17fSkpLnNocmlua1RvRml0PSEwKSxBbC5oYWxpZ24mJigocDAucy5hbGlnbm1lbnR8fChwMC5zLmFsaWdubWVu''@;'; put 'put ''dD17fSkpLmhvcml6b250YWw9QWwuaGFsaWduKSxBbC52YWxpZ24mJigocDAucy5hbGlnbm1lbnR8fChwMC5zLmFsaWdubWVudD17fSkpLnZlcnRpY2FsPUFsLnZhbGlnbiksQWwuY0luZGVudCYmKChwMC5zLmFsaWdubWVudHx8KHAwLnMuYWxpZ25tZW50PXt9KSkuaW5kZW50PUFsLmNJbmRl''@;'; put 'put ''bnQpLDY0IT1BbC5pY3ZGb3JlJiY2NSE9QWwuaWN2QmFjayYmKChxMj1iMyh6cihBbC5pY3ZGb3JlKSkpJiYocDAucy5mZ0NvbG9yPXtyZ2I6cTJ9KSwocTI9YjMoenIoQWwuaWN2QmFjaykpKSYmKHAwLnMuYmdDb2xvcj17cmdiOnEyfSkpLFsiTGVmdCIsIlJpZ2h0IiwiVG9wIiwiQm90dG9t''@;'; put 'put ''Il0uZm9yRWFjaChmdW5jdGlvbihlMSl7QWxbImRnIitlMV0mJihwMC5zW2UxLnRvTG93ZXJDYXNlKCldPXtzdHlsZTpUM1tBbFsiZGciK2UxXV0sY29sb3I6e3JnYjpiMyh6cihBbFsiaWN2IitlMV0pKX19KX0pKX0sb2k9ZnVuY3Rpb24ocDAsUWwsQWwpe2lmKCEoTjA+MXx8QWwuc2hlZXRS''@;'; put 'put ''b3dzJiZwMC5yPj1BbC5zaGVldFJvd3MpKXtpZihBbC5jZWxsU3R5bGVzJiZRbC5YRiYmUWwuWEYuZGF0YSYmcXIoUWwsQWwpLGRlbGV0ZSBRbC5peGZlLGRlbGV0ZSBRbC5YRixSdD1wMCxVdD1ZMChwMCksKCFaZXx8IVplLnN8fCFaZS5lKSYmKFplPXtzOntyOjAsYzowfSxlOntyOjAsYzow''@;'; put 'put ''fX0pLHAwLnI8WmUucy5yJiYoWmUucy5yPXAwLnIpLHAwLmM8WmUucy5jJiYoWmUucy5jPXAwLmMpLHAwLnIrMT5aZS5lLnImJihaZS5lLnI9cDAucisxKSxwMC5jKzE+WmUuZS5jJiYoWmUuZS5jPXAwLmMrMSksQWwuY2VsbEZvcm11bGEmJlFsLmYpZm9yKHZhciBxMj0wO3EyPFRuLmxlbmd0''@;'; put 'put ''aDsrK3EyKWlmKCEoVG5bcTJdWzBdLnMuYz5wMC5jfHxUbltxMl1bMF0ucy5yPnAwLnJ8fFRuW3EyXVswXS5lLmM8cDAuY3x8VG5bcTJdWzBdLmUucjxwMC5yKSl7UWwuRj1mYShUbltxMl1bMF0pLChUbltxMl1bMF0ucy5jIT1wMC5jfHxUbltxMl1bMF0ucy5yIT1wMC5yKSYmZGVsZXRlIFFs''@;'; put 'put ''LmYsUWwuZiYmKFFsLmY9IiIrVzEoVG5bcTJdWzFdLFplLHAwLE5yLGNyKSk7YnJlYWt9QWwuZGVuc2U/KHhlW3AwLnJdfHwoeGVbcDAucl09W10pLHhlW3AwLnJdW3AwLmNdPVFsKTp4ZVtVdF09UWx9fSxjcj17ZW5jOiExLHNiY2NoOjAsc25hbWVzOltdLHNoYXJlZGY6UG4sYXJyYXlmOlRu''@;'; put 'put ''LHJydGFiaWQ6W10sbGFzdHVzZXI6IiIsYmlmZjo4LGNvZGVwYWdlOjAsd2lubG9ja2VkOjAsY2VsbFN0eWxlczohIWllJiYhIWllLmNlbGxTdHlsZXMsV1RGOiEhaWUmJiEhaWUud3RmfTtjci5wYXNzd29yZD1pZS5wYXNzd29yZD9pZS5wYXNzd29yZDoiVmVsdmV0U3dlYXRzaG9wIjt2YXIg''@;'; put 'put ''djAsZGk9bnVsbCxVaT1bXSx0bz1bXSxBMD1bXSxiaT1bXSxoaT0hMSxOcj1bXTtOci5TaGVldE5hbWVzPWNyLnNuYW1lcyxOci5zaGFyZWRmPWNyLnNoYXJlZGYsTnIuYXJyYXlmPWNyLmFycmF5ZixOci5uYW1lcz1bXSxOci5YVEk9W107dmFyICQwLGtpPSIiLE4wPTAsdDA9MCxpbz1bXSxv''@;'; put 'put ''YT1bXTtjci5jb2RlcGFnZT0xMjAwLHRlKDEyMDApO2Zvcih2YXIgVmE9ITE7SC5sPEgubGVuZ3RoLTE7KXt2YXIgam89SC5sLHdhPUgucmVhZF9zaGlmdCgyKTtpZihjciYmY3IuZW5jJiZjci5lbmMuaW5zaXR1JiZjci5lbmMuaW5zaXR1KFRlKFswLDBdKSwiaGVhZGVyLTAiKSwwPT09d2Em''@;'; put 'put ''JiJFT0YiPT09a2kpYnJlYWs7dmFyIGFvPUgubD09PUgubGVuZ3RoPzA6SC5yZWFkX3NoaWZ0KDIpO2NyJiZjci5lbmMmJmNyLmVuYy5pbnNpdHUmJmNyLmVuYy5pbnNpdHUoVGUoWzAsMF0pLCJsZW5ndGgtMCIpO3ZhciB4MD1ObFt3YV07aWYoeDAmJngwLmYpe2lmKGllLmJvb2tTaGVldHMm''@;'; put 'put ''JiJCb3VuZFNoZWV0OCI9PT1raSYmIkJvdW5kU2hlZXQ4IiE9PXgwLm4pYnJlYWs7aWYoa2k9eDAubiwyPT09eDAucnx8MTI9PXgwLnIpe3ZhciBoMD1ILnJlYWRfc2hpZnQoMik7aWYoYW8tPTIsY3ImJmNyLmVuYyYmY3IuZW5jLmluc2l0dSYmY3IuZW5jLmluc2l0dShUZShbMCwwXSkpLCFj''@;'; put 'put ''ci5lbmMmJmgwIT09d2EmJigoMjU1JmgwKTw8OHxoMD4+OCkhPT13YSl0aHJvdyBuZXcgRXJyb3IoInJ0IG1pc21hdGNoOiAiK2gwKyIhPSIrd2EpOzEyPT14MC5yJiYoSC5sKz0xMCxhby09MTAsY3ImJmNyLmVuYyYmY3IuZW5jLmluc2l0dSYmY3IuZW5jLmluc2l0dShUZShbMCwwLDAsMCww''@;'; put 'put ''LDAsMCwwLDAsMF0pKSl9dmFyIGpyPSQyKHgwLEgsYW8sY3IpLEhpPXgwLm47aWYoMD09TjAmJiJCT0YiIT1IaSljb250aW51ZTtzd2l0Y2goSGkpe2Nhc2UiRGF0ZTE5MDQiOlgub3B0cy5EYXRlMTkwND15ci5XQlByb3BzLmRhdGUxOTA0PWpyO2JyZWFrO2Nhc2UiV3JpdGVQcm90ZWN0IjpY''@;'; put 'put ''Lm9wdHMuV3JpdGVQcm90ZWN0PSEwO2JyZWFrO2Nhc2UiRmlsZVBhc3MiOmlmKGNyLmVuY3x8KEgubD0wLE4wPTApLGNyLmVuYz1qciwhaWUucGFzc3dvcmQmJm51bGw9PWpyLnZhbGlkKXRocm93IG5ldyBFcnJvcigiRmlsZSBpcyBwYXNzd29yZC1wcm90ZWN0ZWQiKTtpZihudWxsPT1qci52''@;'; put 'put ''YWxpZCl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRpb24gc2NoZW1lIHVuc3VwcG9ydGVkIik7aWYoIWpyLnZhbGlkKXRocm93IG5ldyBFcnJvcigiUGFzc3dvcmQgaXMgaW5jb3JyZWN0Iik7YnJlYWs7Y2FzZSJXcml0ZUFjY2VzcyI6Y3IubGFzdHVzZXI9anI7YnJlYWs7Y2FzZSJGaWxlU2hh''@;'; put 'put ''cmluZyI6Y2FzZSJUZW1wbGF0ZSI6Y2FzZSJCb29rQm9vbCI6Y2FzZSJVc2VzRUxGcyI6Y2FzZSJNVFJTZXR0aW5ncyI6Y2FzZSJVbmNhbGNlZCI6Y2FzZSJFeHRTU1QiOmNhc2UiQm9va0V4dCI6Y2FzZSJSaWNoVGV4dFN0cmVhbSI6Y2FzZSJCa0hpbSI6Y2FzZSJJbmRleCI6Y2FzZSJQcm90''@;'; put 'put ''NFJldiI6Y2FzZSJQcm90NFJldlBhc3MiOmJyZWFrO2Nhc2UiQ29kZVBhZ2UiOnZhciB2bz1OdW1iZXIoanIpO3N3aXRjaCh2byl7Y2FzZSAyMTAxMDp2bz0xMjAwO2JyZWFrO2Nhc2UgMzI3Njg6dm89MWU0O2JyZWFrO2Nhc2UgMzI3Njk6dm89MTI1Mn10ZShjci5jb2RlcGFnZT12byksVmE9''@;'; put 'put ''ITA7YnJlYWs7Y2FzZSJSUlRhYklkIjpjci5ycnRhYmlkPWpyO2JyZWFrO2Nhc2UiV2luUHJvdGVjdCI6Y3Iud2lubG9ja2VkPWpyO2JyZWFrO2Nhc2UiUmVmcmVzaEFsbCI6Y2FzZSJDYWxjQ291bnQiOmNhc2UiQ2FsY0RlbHRhIjpjYXNlIkNhbGNJdGVyIjpjYXNlIkNhbGNNb2RlIjpjYXNl''@;'; put 'put ''IkNhbGNQcmVjaXNpb24iOmNhc2UiQ2FsY1NhdmVSZWNhbGMiOlgub3B0c1tIaV09anI7YnJlYWs7Y2FzZSJDYWxjUmVmTW9kZSI6Y3IuQ2FsY1JlZk1vZGU9anI7YnJlYWs7Y2FzZSJGb3JjZUZ1bGxDYWxjdWxhdGlvbiI6WC5vcHRzLkZ1bGxDYWxjPWpyO2JyZWFrO2Nhc2UiV3NCb29sIjpq''@;'; put 'put ''ci5mRGlhbG9nJiYoeGVbIiF0eXBlIl09ImRpYWxvZyIpLGpyLmZCZWxvd3x8KCh4ZVsiIW91dGxpbmUiXXx8KHhlWyIhb3V0bGluZSJdPXt9KSkuYWJvdmU9ITApLGpyLmZSaWdodHx8KCh4ZVsiIW91dGxpbmUiXXx8KHhlWyIhb3V0bGluZSJdPXt9KSkubGVmdD0hMCk7YnJlYWs7Y2FzZSJY''@;'; put 'put ''RiI6anIuZm9udD1Hci5Gb250c1tqci5pZm50PDQ/anIuaWZudDpqci5pZm50LTFdLE1yLnB1c2goanIpO2JyZWFrO2Nhc2UiU3VwQm9vayI6TnIucHVzaChbanJdKSxOcltOci5sZW5ndGgtMV0uWFRJPVtdO2JyZWFrO2Nhc2UiRXh0ZXJuTmFtZSI6TnJbTnIubGVuZ3RoLTFdLnB1c2goanIp''@;'; put 'put ''O2JyZWFrO2Nhc2UiTGJsIjokMD17TmFtZTpqci5OYW1lLFJlZjpXMShqci5yZ2NlLFplLG51bGwsTnIsY3IpfSxqci5pdGFiPjAmJigkMC5TaGVldD1qci5pdGFiLTEpLE5yLm5hbWVzLnB1c2goJDApLE5yWzBdfHwoTnJbMF09W10sTnJbMF0uWFRJPVtdKSxOcltOci5sZW5ndGgtMV0ucHVz''@;'; put 'put ''aChqciksIl94bG5tLl9GaWx0ZXJEYXRhYmFzZSI9PWpyLk5hbWUmJmpyLml0YWI+MCYmanIucmdjZSYmanIucmdjZVswXSYmanIucmdjZVswXVswXSYmIlB0Z0FyZWEzZCI9PWpyLnJnY2VbMF1bMF1bMF0mJihvYVtqci5pdGFiLTFdPXtyZWY6ZmEoanIucmdjZVswXVswXVsxXVsyXSl9KTti''@;'; put 'put ''cmVhaztjYXNlIkV4dGVybkNvdW50Ijpjci5FeHRlcm5Db3VudD1qcjticmVhaztjYXNlIkV4dGVyblNoZWV0IjowPT1Oci5sZW5ndGgmJihOclswXT1bXSxOclswXS5YVEk9W10pLE5yW05yLmxlbmd0aC0xXS5YVEk9TnJbTnIubGVuZ3RoLTFdLlhUSS5jb25jYXQoanIpLE5yLlhUST1Oci5Y''@;'; put 'put ''VEkuY29uY2F0KGpyKTticmVhaztjYXNlIk5hbWVDbXQiOmlmKGNyLmJpZmY8OClicmVhaztudWxsIT0kMCYmKCQwLkNvbW1lbnQ9anJbMV0pO2JyZWFrO2Nhc2UiUHJvdGVjdCI6eGVbIiFwcm90ZWN0Il09anI7YnJlYWs7Y2FzZSJQYXNzd29yZCI6MCE9PWpyJiZjci5XVEYmJmNvbnNvbGUu''@;'; put 'put ''ZXJyb3IoIlBhc3N3b3JkIHZlcmlmaWVyOiAiK2pyKTticmVhaztjYXNlIkJvdW5kU2hlZXQ4IjpGZVtqci5wb3NdPWpyLGNyLnNuYW1lcy5wdXNoKGpyLm5hbWUpO2JyZWFrO2Nhc2UiRU9GIjppZih4ZVsiIWdyaWRsaW5lcyJdPSFkaXx8ZGkuZ3JpZCxkaT1udWxsLC0tTjApYnJlYWs7aWYo''@;'; put 'put ''WmUuZSl7aWYoWmUuZS5yPjAmJlplLmUuYz4wKXtpZihaZS5lLnItLSxaZS5lLmMtLSx4ZVsiIXJlZiJdPWZhKFplKSxpZS5zaGVldFJvd3MmJmllLnNoZWV0Um93czw9WmUuZS5yKXt2YXIgeG89WmUuZS5yO1plLmUucj1pZS5zaGVldFJvd3MtMSx4ZVsiIWZ1bGxyZWYiXT14ZVsiIXJlZiJd''@;'; put 'put ''LHhlWyIhcmVmIl09ZmEoWmUpLFplLmUucj14b31aZS5lLnIrKyxaZS5lLmMrK31VaS5sZW5ndGg+MCYmKHhlWyIhbWVyZ2VzIl09VWkpLHRvLmxlbmd0aD4wJiZhVCh0byx4ZSksQTAubGVuZ3RoPjAmJih4ZVsiIWNvbHMiXT1BMCksYmkubGVuZ3RoPjAmJih4ZVsiIXJvd3MiXT1iaSkseXIu''@;'; put 'put ''U2hlZXRzLnB1c2goYXIpfSIiPT09TXQ/eHQ9eGU6d2VbTXRdPXhlLHhlPWllLmRlbnNlP1tdOnt9O2JyZWFrO2Nhc2UiQk9GIjppZig4PT09Y3IuYmlmZiYmKGNyLmJpZmY9ezk6Miw1MjE6MywxMDMzOjR9W3dhXXx8ezUxMjoyLDc2ODozLDEwMjQ6NCwxMjgwOjUsMTUzNjo4LDI6Miw3OjJ9''@;'; put 'put ''W2pyLkJJRkZWZXJdfHw4KSxjci5iaWZmZ3Vlc3M9MD09anIuQklGRlZlciwwPT1qci5CSUZGVmVyJiY0MDk2PT1qci5kdCYmKGNyLmJpZmY9NSxWYT0hMCx0ZShjci5jb2RlcGFnZT0yODU5MSkpLDg9PWNyLmJpZmYmJjA9PWpyLkJJRkZWZXImJjE2PT1qci5kdCYmKGNyLmJpZmY9MiksTjAr''@;'; put 'put ''KylicmVhaztpZih4ZT1pZS5kZW5zZT9bXTp7fSxjci5iaWZmPDgmJiFWYSYmKFZhPSEwLHRlKGNyLmNvZGVwYWdlPWllLmNvZGVwYWdlfHwxMjUyKSksY3IuYmlmZjw1fHwwPT1qci5CSUZGVmVyJiY0MDk2PT1qci5kdCl7IiI9PT1NdCYmKE10PSJTaGVldDEiKSxaZT17czp7cjowLGM6MH0s''@;'; put 'put ''ZTp7cjowLGM6MH19O3ZhciAkaT17cG9zOkgubC1hbyxuYW1lOk10fTtGZVskaS5wb3NdPSRpLGNyLnNuYW1lcy5wdXNoKE10KX1lbHNlIE10PShGZVtqb118fHtuYW1lOiIifSkubmFtZTszMj09anIuZHQmJih4ZVsiIXR5cGUiXT0iY2hhcnQiKSw2ND09anIuZHQmJih4ZVsiIXR5cGUiXT0i''@;'; put 'put ''bWFjcm8iKSxVaT1bXSx0bz1bXSxjci5hcnJheWY9VG49W10sQTA9W10sYmk9W10saGk9ITEsYXI9e0hpZGRlbjooRmVbam9dfHx7aHM6MH0pLmhzLG5hbWU6TXR9O2JyZWFrO2Nhc2UiTnVtYmVyIjpjYXNlIkJJRkYyTlVNIjpjYXNlIkJJRkYySU5UIjoiY2hhcnQiPT14ZVsiIXR5cGUiXSYm''@;'; put 'put ''KGllLmRlbnNlPyh4ZVtqci5yXXx8W10pW2pyLmNdOnhlW1kwKHtjOmpyLmMscjpqci5yfSldKSYmKytqci5jLE9uPXtpeGZlOmpyLml4ZmUsWEY6TXJbanIuaXhmZV18fHt9LHY6anIudmFsLHQ6Im4ifSx0MD4wJiYoT24uej1pb1tPbi5peGZlPj44JjYzXSksVmQoT24saWUsWC5vcHRzLkRh''@;'; put 'put ''dGUxOTA0KSxvaSh7Yzpqci5jLHI6anIucn0sT24saWUpO2JyZWFrO2Nhc2UiQm9vbEVyciI6T249e2l4ZmU6anIuaXhmZSxYRjpNcltqci5peGZlXSx2OmpyLnZhbCx0OmpyLnR9LHQwPjAmJihPbi56PWlvW09uLml4ZmU+PjgmNjNdKSxWZChPbixpZSxYLm9wdHMuRGF0ZTE5MDQpLG9pKHtj''@;'; put 'put ''OmpyLmMscjpqci5yfSxPbixpZSk7YnJlYWs7Y2FzZSJSSyI6T249e2l4ZmU6anIuaXhmZSxYRjpNcltqci5peGZlXSx2OmpyLnJrbnVtLHQ6Im4ifSx0MD4wJiYoT24uej1pb1tPbi5peGZlPj44JjYzXSksVmQoT24saWUsWC5vcHRzLkRhdGUxOTA0KSxvaSh7Yzpqci5jLHI6anIucn0sT24s''@;'; put 'put ''aWUpO2JyZWFrO2Nhc2UiTXVsUmsiOmZvcih2YXIgbDI9anIuYztsMjw9anIuQzsrK2wyKXt2YXIgTWM9anIucmtyZWNbbDItanIuY11bMF07T249e2l4ZmU6TWMsWEY6TXJbTWNdLHY6anIucmtyZWNbbDItanIuY11bMV0sdDoibiJ9LHQwPjAmJihPbi56PWlvW09uLml4ZmU+PjgmNjNdKSxW''@;'; put 'put ''ZChPbixpZSxYLm9wdHMuRGF0ZTE5MDQpLG9pKHtjOmwyLHI6anIucn0sT24saWUpfWJyZWFrO2Nhc2UiRm9ybXVsYSI6aWYoIlN0cmluZyI9PWpyLnZhbCl7amU9anI7YnJlYWt9aWYoKE9uPU01KGpyLnZhbCxqci5jZWxsLml4ZmUsanIudHQpKS5YRj1NcltPbi5peGZlXSxpZS5jZWxsRm9y''@;'; put 'put ''bXVsYSl7dmFyIHAyPWpyLmZvcm11bGE7aWYocDImJnAyWzBdJiZwMlswXVswXSYmIlB0Z0V4cCI9PXAyWzBdWzBdWzBdKXt2YXIgcnI9cDJbMF1bMF1bMV1bMF0sSXI9cDJbMF1bMF1bMV1bMV0sWnI9WTAoe3I6cnIsYzpJcn0pO1BuW1pyXT9Pbi5mPSIiK1cxKGpyLmZvcm11bGEsWmUsanIu''@;'; put 'put ''Y2VsbCxOcixjcik6T24uRj0oKGllLmRlbnNlPyh4ZVtycl18fFtdKVtJcl06eGVbWnJdKXx8e30pLkZ9ZWxzZSBPbi5mPSIiK1cxKGpyLmZvcm11bGEsWmUsanIuY2VsbCxOcixjcil9dDA+MCYmKE9uLno9aW9bT24uaXhmZT4+OCY2M10pLFZkKE9uLGllLFgub3B0cy5EYXRlMTkwNCksb2ko''@;'; put 'put ''anIuY2VsbCxPbixpZSksamU9anI7YnJlYWs7Y2FzZSJTdHJpbmciOmlmKCFqZSl0aHJvdyBuZXcgRXJyb3IoIlN0cmluZyByZWNvcmQgZXhwZWN0cyBGb3JtdWxhIik7amUudmFsPWpyLChPbj1NNShqcixqZS5jZWxsLml4ZmUsInMiKSkuWEY9TXJbT24uaXhmZV0saWUuY2VsbEZvcm11bGEm''@;'; put 'put ''JihPbi5mPSIiK1cxKGplLmZvcm11bGEsWmUsamUuY2VsbCxOcixjcikpLHQwPjAmJihPbi56PWlvW09uLml4ZmU+PjgmNjNdKSxWZChPbixpZSxYLm9wdHMuRGF0ZTE5MDQpLG9pKGplLmNlbGwsT24saWUpLGplPW51bGw7YnJlYWs7Y2FzZSJBcnJheSI6VG4ucHVzaChqcik7dmFyIHFpPVkw''@;'; put 'put ''KGpyWzBdLnMpO2lmKG5uPWllLmRlbnNlPyh4ZVtqclswXS5zLnJdfHxbXSlbanJbMF0ucy5jXTp4ZVtxaV0saWUuY2VsbEZvcm11bGEmJm5uKXtpZighamV8fCFxaXx8IW5uKWJyZWFrO25uLmY9IiIrVzEoanJbMV0sWmUsanJbMF0sTnIsY3IpLG5uLkY9ZmEoanJbMF0pfWJyZWFrO2Nhc2Ui''@;'; put 'put ''U2hyRm1sYSI6aWYoIWllLmNlbGxGb3JtdWxhKWJyZWFrO2lmKFV0KXtpZighamUpYnJlYWs7UG5bWTAoamUuY2VsbCldPWpyWzBdLCgobm49aWUuZGVuc2U/KHhlW2plLmNlbGwucl18fFtdKVtqZS5jZWxsLmNdOnhlW1kwKGplLmNlbGwpXSl8fHt9KS5mPSIiK1cxKGpyWzBdLFplLFJ0LE5y''@;'; put 'put ''LGNyKX1icmVhaztjYXNlIkxhYmVsU3N0IjpPbj1NNShZZVtqci5pc3N0XS50LGpyLml4ZmUsInMiKSxZZVtqci5pc3N0XS5oJiYoT24uaD1ZZVtqci5pc3N0XS5oKSxPbi5YRj1NcltPbi5peGZlXSx0MD4wJiYoT24uej1pb1tPbi5peGZlPj44JjYzXSksVmQoT24saWUsWC5vcHRzLkRhdGUx''@;'; put 'put ''OTA0KSxvaSh7Yzpqci5jLHI6anIucn0sT24saWUpLFllW2pyLmlzc3RdLlImJihPbi5SPVllW2pyLmlzc3RdLlIubWFwKGZ1bmN0aW9uKHBvKXt2YXIgcDA9bG4ocG8pO3JldHVybiBwby5zPT1Hci5Gb250c1swXSYmKHAwLnM9T24ucykscDB9KSk7YnJlYWs7Y2FzZSJCbGFuayI6aWUuc2hl''@;'; put 'put ''ZXRTdHVicyYmKE9uPXtpeGZlOmpyLml4ZmUsWEY6TXJbanIuaXhmZV0sdDoieiJ9LHQwPjAmJihPbi56PWlvW09uLml4ZmU+PjgmNjNdKSxWZChPbixpZSxYLm9wdHMuRGF0ZTE5MDQpLG9pKHtjOmpyLmMscjpqci5yfSxPbixpZSkpO2JyZWFrO2Nhc2UiTXVsQmxhbmsiOmlmKGllLnNoZWV0''@;'; put 'put ''U3R1YnMpZm9yKHZhciByaT1qci5jO3JpPD1qci5DOysrcmkpe3ZhciByMD1qci5peGZlW3JpLWpyLmNdO09uPXtpeGZlOnIwLFhGOk1yW3IwXSx0OiJ6In0sdDA+MCYmKE9uLno9aW9bT24uaXhmZT4+OCY2M10pLFZkKE9uLGllLFgub3B0cy5EYXRlMTkwNCksb2koe2M6cmkscjpqci5yfSxP''@;'; put 'put ''bixpZSl9YnJlYWs7Y2FzZSJSU3RyaW5nIjpjYXNlIkxhYmVsIjpjYXNlIkJJRkYyU1RSIjooT249TTUoanIudmFsLGpyLml4ZmUsInMiKSkuWEY9TXJbT24uaXhmZV0sdDA+MCYmKE9uLno9aW9bT24uaXhmZT4+OCY2M10pLFZkKE9uLGllLFgub3B0cy5EYXRlMTkwNCksb2koe2M6anIuYyxy''@;'; put 'put ''OmpyLnJ9LE9uLGllKTticmVhaztjYXNlIkRpbWVuc2lvbnMiOjE9PT1OMCYmKFplPWpyKTticmVhaztjYXNlIlNTVCI6KFllPWpyKS5mb3JFYWNoKGZ1bmN0aW9uKHBvKXtwby5fUj8ocG8uX1JbMF0mJnBvLl9SWzBdLmlkeD4wJiZwby5fUi51bnNoaWZ0KHtpZHg6MCxpZm50OjB9KSxwby5S''@;'; put 'put ''PXBvLl9SLm1hcChmdW5jdGlvbihwMCxRbCl7cmV0dXJue3Q6InMiLHY6cG8udC5zbGljZShwMC5pZHgsKHBvLl9SW1FsKzFdfHx7fSkuaWR4KSxzOkdyLkZvbnRzW3AwLmlmbnQ8ND9wMC5pZm50OnAwLmlmbnQtMV19fSksaWUuY2VsbEhUTUwmJihwby5oPWhtKHBvLlIpKSk6aWUuY2VsbEhU''@;'; put 'put ''TUwmJihwby5oPW4wKHBvLnQpKSxkZWxldGUgcG8uX1J9KTticmVhaztjYXNlIkZvcm1hdCI6aWYoND09Y3IuYmlmZil7aW9bdDArK109anJbMV07Zm9yKHZhciBwaT0wO3BpPHQwKzE2MyYmRi5fdGFibGVbcGldIT1qclsxXTsrK3BpKTtwaT49MTYzJiZGLmxvYWQoanJbMV0sdDArMTYzKX1l''@;'; put 'put ''bHNlIEYubG9hZChqclsxXSxqclswXSk7YnJlYWs7Y2FzZSJCSUZGMkZPUk1BVCI6aW9bdDArK109anI7Zm9yKHZhciBlMD0wO2UwPHQwKzE2MyYmRi5fdGFibGVbZTBdIT1qcjsrK2UwKTtlMD49MTYzJiZGLmxvYWQoanIsdDArMTYzKTticmVhaztjYXNlIk1lcmdlQ2VsbHMiOlVpPVVpLmNv''@;'; put 'put ''bmNhdChqcik7YnJlYWs7Y2FzZSJPYmoiOnRvW2pyLmNtb1swXV09Y3IubGFzdG9iaj1qcjticmVhaztjYXNlIlR4TyI6Y3IubGFzdG9iai5UeE89anI7YnJlYWs7Y2FzZSJJbURhdGEiOmNyLmxhc3RvYmouSW1EYXRhPWpyO2JyZWFrO2Nhc2UiSExpbmsiOmZvcih6dD1qclswXS5zLnI7enQ8''@;'; put 'put ''PWpyWzBdLmUucjsrK3p0KWZvcihEdD1qclswXS5zLmM7RHQ8PWpyWzBdLmUuYzsrK0R0KShubj1pZS5kZW5zZT8oeGVbenRdfHxbXSlbRHRdOnhlW1kwKHtjOkR0LHI6enR9KV0pJiYobm4ubD1qclsxXSk7YnJlYWs7Y2FzZSJITGlua1Rvb2x0aXAiOmZvcih6dD1qclswXS5zLnI7enQ8PWpy''@;'; put 'put ''WzBdLmUucjsrK3p0KWZvcihEdD1qclswXS5zLmM7RHQ8PWpyWzBdLmUuYzsrK0R0KShubj1pZS5kZW5zZT8oeGVbenRdfHxbXSlbRHRdOnhlW1kwKHtjOkR0LHI6enR9KV0pJiZubi5sJiYobm4ubC5Ub29sdGlwPWpyWzFdKTticmVhaztjYXNlIk5vdGUiOmlmKGNyLmJpZmY8PTUmJmNyLmJp''@;'; put 'put ''ZmY+PTIpYnJlYWs7bm49aWUuZGVuc2U/KHhlW2pyWzBdLnJdfHxbXSlbanJbMF0uY106eGVbWTAoanJbMF0pXTt2YXIgT289dG9banJbMl1dO25ufHwoaWUuZGVuc2U/KHhlW2pyWzBdLnJdfHwoeGVbanJbMF0ucl09W10pLG5uPXhlW2pyWzBdLnJdW2pyWzBdLmNdPXt0OiJ6In0pOm5uPXhl''@;'; put 'put ''W1kwKGpyWzBdKV09e3Q6InoifSxaZS5lLnI9TWF0aC5tYXgoWmUuZS5yLGpyWzBdLnIpLFplLnMucj1NYXRoLm1pbihaZS5zLnIsanJbMF0uciksWmUuZS5jPU1hdGgubWF4KFplLmUuYyxqclswXS5jKSxaZS5zLmM9TWF0aC5taW4oWmUucy5jLGpyWzBdLmMpKSxubi5jfHwobm4uYz1bXSks''@;'; put 'put ''bm4uYy5wdXNoKHthOmpyWzFdLHQ6T28uVHhPLnR9KTticmVhaztkZWZhdWx0OnN3aXRjaCh4MC5uKXtjYXNlIkNscnRDbGllbnQiOmNhc2UiSGVhZGVyIjpjYXNlIkZvb3RlciI6Y2FzZSJIQ2VudGVyIjpjYXNlIlZDZW50ZXIiOmNhc2UiUGxzIjpjYXNlIkdDVyI6Y2FzZSJMSFJlY29yZCI6''@;'; put 'put ''Y2FzZSJEQkNlbGwiOmNhc2UiRW50RXhVMiI6Y2FzZSJTeFZpZXciOmNhc2UiU3h2ZCI6Y2FzZSJTWFZJIjpjYXNlIlNYVkRFeCI6Y2FzZSJTeEl2ZCI6Y2FzZSJTWFN0cmluZyI6Y2FzZSJTeW5jIjpjYXNlIkFkZGluIjpjYXNlIlNYREkiOmNhc2UiU1hMSSI6Y2FzZSJTWEV4IjpjYXNlIlFz''@;'; put 'put ''aVNYVGFnIjpjYXNlIkZlYXQiOmNhc2UiRmVhdEhkciI6Y2FzZSJGZWF0SGRyMTEiOmNhc2UiRmVhdHVyZTExIjpjYXNlIkZlYXR1cmUxMiI6Y2FzZSJMaXN0MTIiOmNhc2UiUmVjYWxjSWQiOmNhc2UiRHhHQ29sIjpjYXNlIkZiaSI6Y2FzZSJGYmkyIjpjYXNlIkdlbEZyYW1lIjpjYXNlIlhG''@;'; put 'put ''Q1JDIjpjYXNlIlN0eWxlIjpjYXNlIlN0eWxlRXh0IjpjYXNlIlNjZW5hcmlvUHJvdGVjdCI6Y2FzZSJPYmpQcm90ZWN0IjpjYXNlIkNvbmRGbXQxMiI6Y2FzZSJUYWJsZSI6Y2FzZSJUYWJsZVN0eWxlcyI6Y2FzZSJUYWJsZVN0eWxlIjpjYXNlIlRhYmxlU3R5bGVFbGVtZW50IjpjYXNlIlNY''@;'; put 'put ''U3RyZWFtSUQiOmNhc2UiU1hWUyI6Y2FzZSJEQ29uUmVmIjpjYXNlIlNYQWRkbCI6Y2FzZSJEQ29uQmluIjpjYXNlIkRDb25OYW1lIjpjYXNlIlNYUEkiOmNhc2UiU3hGb3JtYXQiOmNhc2UiU3hTZWxlY3QiOmNhc2UiU3hSdWxlIjpjYXNlIlN4RmlsdCI6Y2FzZSJTeEl0bSI6Y2FzZSJTeERY''@;'; put 'put ''RiI6Y2FzZSJTY2VuTWFuIjpjYXNlIkRDb24iOmNhc2UiQ2VsbFdhdGNoIjpjYXNlIlByaW50Um93Q29sIjpjYXNlIlByaW50R3JpZCI6Y2FzZSJQcmludFNpemUiOmNhc2UiWENUIjpjYXNlIkNSTiI6Y2FzZSJTY2wiOmNhc2UiU2hlZXRFeHQiOmNhc2UiU2hlZXRFeHRPcHRpb25hbCI6Y2Fz''@;'; put 'put ''ZSJPYk5vTWFjcm9zIjpjYXNlIk9iUHJvaiI6Y2FzZSJHVUlEVHlwZUxpYiI6Y2FzZSJXT3B0IjpjYXNlIlBob25ldGljSW5mbyI6Y2FzZSJPbGVPYmplY3RTaXplIjpjYXNlIkRYRiI6Y2FzZSJEWEZOIjpjYXNlIkRYRk4xMiI6Y2FzZSJEWEZOMTJMaXN0IjpjYXNlIkRYRk4xMk5vQ0IiOmNh''@;'; put 'put ''c2UiRHYiOmNhc2UiRFZhbCI6Y2FzZSJCUkFJIjpjYXNlIlNlcmllcyI6Y2FzZSJTZXJpZXNUZXh0IjpjYXNlIkRDb25uIjpjYXNlIkRiT3JQYXJhbVFyeSI6Y2FzZSJEQlF1ZXJ5RXh0IjpjYXNlIk9sZURiQ29ubiI6Y2FzZSJFeHRTdHJpbmciOmNhc2UiSUZtdFJlY29yZCI6Y2FzZSJDb25k''@;'; put 'put ''Rm10IjpjYXNlIkNGIjpjYXNlIkNGMTIiOmNhc2UiQ0ZFeCI6Y2FzZSJFeGNlbDlGaWxlIjpjYXNlIlVuaXRzIjpjYXNlIkludGVyZmFjZUhkciI6Y2FzZSJNbXMiOmNhc2UiSW50ZXJmYWNlRW5kIjpjYXNlIkRTRiI6Y2FzZSJCdWlsdEluRm5Hcm91cENvdW50IjpjYXNlIldpbmRvdzEiOmNh''@;'; put 'put ''c2UiSGlkZU9iaiI6Y2FzZSJHcmlkU2V0IjpjYXNlIkd1dHMiOmNhc2UiVXNlckJWaWV3IjpjYXNlIlVzZXJTVmlld0JlZ2luIjpjYXNlIlVzZXJTVmlld0VuZCI6Y2FzZSJEZWZDb2xXaWR0aCI6Y2FzZSJEZWZhdWx0Um93SGVpZ2h0IjpicmVhaztjYXNlIlhGRXh0IjpMYihNcltqci5peGZl''@;'; put 'put ''XSxqci5leHQpO2JyZWFrO2Nhc2UiQ29sSW5mbyI6aWYoIWNyLmNlbGxTdHlsZXMpYnJlYWs7Zm9yKDtqci5lPj1qci5zOylBMFtqci5lLS1dPXt3aWR0aDpqci53LzI1NixsZXZlbDpqci5sZXZlbHx8MCxoaWRkZW46ISEoMSZqci5mbGFncyl9LGhpfHwoaGk9ITApLHljKEEwW2pyLmUrMV0p''@;'; put 'put ''O2JyZWFrO2Nhc2UiUm93Ijp2YXIgazA9e307bnVsbCE9anIubGV2ZWwmJihiaVtqci5yXT1rMCxrMC5sZXZlbD1qci5sZXZlbCksanIuaGlkZGVuJiYoYmlbanIucl09azAsazAuaGlkZGVuPSEwKSxqci5ocHQmJihiaVtqci5yXT1rMCxrMC5ocHQ9anIuaHB0LGswLmhweD1BZihqci5ocHQp''@;'; put 'put ''KSxqci5peGZlJiYoYmlbanIucl09azAscXIoT249e2l4ZmU6anIuaXhmZSxYRjpNcltqci5peGZlXXx8e30sdjowLHQ6Im4ifSxpZSksazAucz1Pbi5zKTticmVhaztjYXNlIkxlZnRNYXJnaW4iOmNhc2UiUmlnaHRNYXJnaW4iOmNhc2UiVG9wTWFyZ2luIjpjYXNlIkJvdHRvbU1hcmdpbiI6''@;'; put 'put ''eGVbIiFtYXJnaW5zIl18fFJkKHhlWyIhbWFyZ2lucyJdPXt9KSx4ZVsiIW1hcmdpbnMiXVtIaS5zbGljZSgwLC02KS50b0xvd2VyQ2FzZSgpXT1qcjticmVhaztjYXNlIlNlbGVjdGlvbiI6eGVbIiFzZWwiXT1qcjticmVhaztjYXNlIlNldHVwIjp4ZVsiIW1hcmdpbnMiXXx8UmQoeGVbIiFt''@;'; put 'put ''YXJnaW5zIl09e30pLHhlWyIhbWFyZ2lucyJdLmhlYWRlcj1qci5oZWFkZXIseGVbIiFtYXJnaW5zIl0uZm9vdGVyPWpyLmZvb3RlcjticmVhaztjYXNlIldpbmRvdzIiOmpyLlJUTCYmKHlyLlZpZXdzWzBdLlJUTD0hMCksZGk9anI7YnJlYWs7Y2FzZSJDb3VudHJ5IjpZbj1qcjticmVhaztj''@;'; put 'put ''YXNlIkZvbnQiOmpyLmljdiYmenIoanIuaWN2KSYmKGpyLmNvbG9yPXtyZ2I6YjMoenIoanIuaWN2KSl9KSxkZWxldGUganIuaWN2LDA9PUdyLkZvbnRzLmxlbmd0aCYmUzMoanIpLEdyLkZvbnRzLnB1c2goanIpO2JyZWFrO2Nhc2UiUGFsZXR0ZSI6YWk9anI7YnJlYWs7Y2FzZSJUaGVtZSI6''@;'; put 'put ''djA9anI7YnJlYWs7Y2FzZSJDb2RlTmFtZSI6TXQ/YXIuQ29kZU5hbWU9anJ8fGFyLm5hbWU6eXIuV0JQcm9wcy5Db2RlTmFtZT1qcnx8IlRoaXNXb3JrYm9vayI7YnJlYWs7Y2FzZSJQYW5lIjooZGl8fHt9KS5mcm96ZW4mJih4ZVsiIWZyZWV6ZSJdPVkwKHtyOmpyLnl8fDAsYzpqci54fHww''@;'; put 'put ''fSkpO2JyZWFrO2RlZmF1bHQ6c3dpdGNoKHgwLm4pe2Nhc2UiRGF0IjpjYXNlIkJlZ2luIjpjYXNlIkVuZCI6Y2FzZSJTdGFydEJsb2NrIjpjYXNlIkVuZEJsb2NrIjpjYXNlIkZyYW1lIjpjYXNlIkFyZWEiOmNhc2UiQXhpcyI6Y2FzZSJBeGlzTGluZSI6Y2FzZSJUaWNrIjpjYXNlIkF4ZXNV''@;'; put 'put ''c2VkIjpjYXNlIkNydExheW91dDEyIjpjYXNlIkNydExheW91dDEyQSI6Y2FzZSJDcnRMaW5rIjpjYXNlIkNydExpbmUiOmNhc2UiQ3J0TWxGcnQiOmNhc2UiQ3J0TWxGcnRDb250aW51ZSI6Y2FzZSJMaW5lRm9ybWF0IjpjYXNlIkFyZWFGb3JtYXQiOmNhc2UiQ2hhcnQiOmNhc2UiQ2hhcnQz''@;'; put 'put ''ZCI6Y2FzZSJDaGFydDNEQmFyU2hhcGUiOmNhc2UiQ2hhcnRGb3JtYXQiOmNhc2UiQ2hhcnRGcnRJbmZvIjpjYXNlIlBsb3RBcmVhIjpjYXNlIlBsb3RHcm93dGgiOmNhc2UiU2VyaWVzTGlzdCI6Y2FzZSJTZXJQYXJlbnQiOmNhc2UiU2VyQXV4VHJlbmQiOmNhc2UiRGF0YUZvcm1hdCI6Y2Fz''@;'; put 'put ''ZSJTZXJUb0NydCI6Y2FzZSJGb250WCI6Y2FzZSJDYXRTZXJSYW5nZSI6Y2FzZSJBeGNFeHQiOmNhc2UiU2VyRm10IjpjYXNlIlNodFByb3BzIjpjYXNlIkRlZmF1bHRUZXh0IjpjYXNlIlRleHQiOmNhc2UiQ2F0TGFiIjpjYXNlIkRhdGFMYWJFeHRDb250ZW50cyI6Y2FzZSJMZWdlbmQiOmNh''@;'; put 'put ''c2UiTGVnZW5kRXhjZXB0aW9uIjpjYXNlIlBpZSI6Y2FzZSJTY2F0dGVyIjpjYXNlIlBpZUZvcm1hdCI6Y2FzZSJNYXJrZXJGb3JtYXQiOmNhc2UiU3RhcnRPYmplY3QiOmNhc2UiRW5kT2JqZWN0IjpjYXNlIkFsUnVucyI6Y2FzZSJPYmplY3RMaW5rIjpjYXNlIlNJSW5kZXgiOmNhc2UiQXR0''@;'; put 'put ''YWNoZWRMYWJlbCI6Y2FzZSJZTXVsdCI6Y2FzZSJMaW5lIjpjYXNlIkJhciI6Y2FzZSJTdXJmIjpjYXNlIkF4aXNQYXJlbnQiOmNhc2UiUG9zIjpjYXNlIlZhbHVlUmFuZ2UiOmNhc2UiU1hWaWV3RXg5IjpjYXNlIlNYVmlld0xpbmsiOmNhc2UiUGl2b3RDaGFydEJpdHMiOmNhc2UiU0Jhc2VS''@;'; put 'put ''ZWYiOmNhc2UiVGV4dFByb3BzU3RyZWFtIjpjYXNlIkxuRXh0IjpjYXNlIk1rckV4dCI6Y2FzZSJDcnRDb29wdCI6Y2FzZSJRc2kiOmNhc2UiUXNpZiI6Y2FzZSJRc2lyIjpjYXNlIlFzaVNYVGFnIjpjYXNlIlR4dFFyeSI6Y2FzZSJGaWx0ZXJNb2RlIjpjYXNlIkF1dG9GaWx0ZXIiOmNhc2Ui''@;'; put 'put ''QXV0b0ZpbHRlckluZm8iOmNhc2UiQXV0b0ZpbHRlcjEyIjpjYXNlIkRyb3BEb3duT2JqSWRzIjpjYXNlIlNvcnQiOmNhc2UiU29ydERhdGEiOmNhc2UiU2hhcGVQcm9wc1N0cmVhbSI6Y2FzZSJNc29EcmF3aW5nIjpjYXNlIk1zb0RyYXdpbmdHcm91cCI6Y2FzZSJNc29EcmF3aW5nU2VsZWN0''@;'; put 'put ''aW9uIjpjYXNlIldlYlB1YiI6Y2FzZSJBdXRvV2ViUHViIjpjYXNlIkhlYWRlckZvb3RlciI6Y2FzZSJIRlBpY3R1cmUiOmNhc2UiUExWIjpjYXNlIkhvcml6b250YWxQYWdlQnJlYWtzIjpjYXNlIlZlcnRpY2FsUGFnZUJyZWFrcyI6Y2FzZSJCYWNrdXAiOmNhc2UiQ29tcHJlc3NQaWN0dXJl''@;'; put 'put ''cyI6Y2FzZSJDb21wYXQxMiI6Y2FzZSJDb250aW51ZSI6Y2FzZSJDb250aW51ZUZydDEyIjpjYXNlIkZydEZvbnRMaXN0IjpjYXNlIkZydFdyYXBwZXIiOmJyZWFrO2RlZmF1bHQ6c3dpdGNoKHgwLm4pe2Nhc2UiVGFiSWRDb25mIjpjYXNlIlJhZGFyIjpjYXNlIlJhZGFyQXJlYSI6Y2FzZSJE''@;'; put 'put ''cm9wQmFyIjpjYXNlIkludGwiOmNhc2UiQ29vcmRMaXN0IjpjYXNlIlNlckF1eEVyckJhciI6Y2FzZSJCSUZGMkZPTlRDTFIiOmNhc2UiQklGRjJGTVRDTlQiOmNhc2UiQklGRjJGT05UWFRSQSI6Y2FzZSJCSUZGMlhGIjpjYXNlIkJJRkYzWEYiOmNhc2UiQklGRjRYRiI6Y2FzZSJCSUZGMlhG''@;'; put 'put ''SU5ERVgiOmNhc2UiQklGRjRGTVRDTlQiOmNhc2UiQklGRjJST1ciOmNhc2UiQklGRjJXSU5ET1cyIjpjYXNlIlNDRU5BUklPIjpjYXNlIkRDb25CaW4iOmNhc2UiUGljRiI6Y2FzZSJEYXRhTGFiRXh0IjpjYXNlIkxlbCI6Y2FzZSJCb3BQb3AiOmNhc2UiQm9wUG9wQ3VzdG9tIjpjYXNlIlJl''@;'; put 'put ''YWxUaW1lRGF0YSI6Y2FzZSJOYW1lIjpjYXNlIkxITkdyYXBoIjpjYXNlIkZuR3JvdXBOYW1lIjpjYXNlIkFkZE1lbnUiOmNhc2UiTFByIjpjYXNlIkxpc3RPYmoiOmNhc2UiTGlzdEZpZWxkIjpjYXNlIlJSU29ydCI6Y2FzZSJCaWdOYW1lIjpjYXNlIlRvb2xiYXJIZHIiOmNhc2UiVG9vbGJh''@;'; put 'put ''ckVuZCI6Y2FzZSJEREVPYmpOYW1lIjpjYXNlIkZSVEFyY2hJZCQiOmJyZWFrO2RlZmF1bHQ6aWYoaWUuV1RGKXRocm93IlVucmVjb2duaXplZCBSZWNvcmQgIit4MC5ufX19fX1lbHNlIEgubCs9YW8sY3ImJmNyLmVuYyYmY3IuZW5jLmluc2l0dSYmY3IuZW5jLmluc2l0dShUZSh7bGVuZ3Ro''@;'; put 'put ''OmFvfSkpfXJldHVybiBYLlNoZWV0TmFtZXM9b24oRmUpLnNvcnQoZnVuY3Rpb24ocG8scDApe3JldHVybiBOdW1iZXIocG8pLU51bWJlcihwMCl9KS5tYXAoZnVuY3Rpb24ocG8pe3JldHVybiBGZVtwb10ubmFtZX0pLGllLmJvb2tTaGVldHN8fChYLlNoZWV0cz13ZSksIVguU2hlZXROYW1l''@;'; put 'put ''cy5sZW5ndGgmJnh0WyIhcmVmIl0/KFguU2hlZXROYW1lcy5wdXNoKCJTaGVldDEiKSxYLlNoZWV0cyYmKFguU2hlZXRzLlNoZWV0MT14dCkpOlguUHJlYW1ibGU9eHQsWC5TaGVldHMmJm9hLmZvckVhY2goZnVuY3Rpb24ocG8scDApe1guU2hlZXRzW1guU2hlZXROYW1lc1twMF1dWyIhYXV0''@;'; put 'put ''b2ZpbHRlciJdPXBvfSksWC5TdHJpbmdzPVllLFguU1NGPUYuZ2V0X3RhYmxlKCksY3IuZW5jJiYoWC5FbmNyeXB0aW9uPWNyLmVuYyksdjAmJihYLlRoZW1lcz12MCksWC5NZXRhZGF0YT17fSx2b2lkIDAhPT1ZbiYmKFguTWV0YWRhdGEuQ291bnRyeT1ZbiksTnIubmFtZXMubGVuZ3RoPjAm''@;'; put 'put ''Jih5ci5OYW1lcz1Oci5uYW1lcyksWC5Xb3JrYm9vaz15cixYfSh3ZS5jb250ZW50LGllKTtlbHNlIGlmKChGZT1tdC5maW5kKEgsIlBlcmZlY3RPZmZpY2VfTUFJTiIpKSYmRmUuY29udGVudCl4ZT1HMS50b193b3JrYm9vayhGZS5jb250ZW50LChpZS50eXBlPVplLGllKSk7ZWxzZXtpZigh''@;'; put 'put ''KEZlPW10LmZpbmQoSCwiTmF0aXZlQ29udGVudF9NQUlOIikpfHwhRmUuY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIFdvcmtib29rIHN0cmVhbSIpO3hlPUcxLnRvX3dvcmtib29rKEZlLmNvbnRlbnQsKGllLnR5cGU9WmUsaWUpKX1pZS5ib29rVkJBJiZILkZ1bGxQYXRo''@;'; put 'put ''cyYmbXQuZmluZChILCIvX1ZCQV9QUk9KRUNUX0NVUi9WQkEvZGlyIikmJih4ZS52YmFyYXc9ZnVuY3Rpb24gUWIoSCl7dmFyIGllPW10LnV0aWxzLmNmYl9uZXcoe3Jvb3Q6IlIifSk7cmV0dXJuIEguRnVsbFBhdGhzLmZvckVhY2goZnVuY3Rpb24oWCx3ZSl7aWYoIi8iIT09WC5zbGljZSgt''@;'; put 'put ''MSkmJlgubWF0Y2goL19WQkFfUFJPSkVDVF9DVVIvKSl7dmFyIHhlPVgucmVwbGFjZSgvXlteXC9dKi8sIlIiKS5yZXBsYWNlKC9cL19WQkFfUFJPSkVDVF9DVVJcdTAwMDAqLywiIik7bXQudXRpbHMuY2ZiX2FkZChpZSx4ZSxILkZpbGVJbmRleFt3ZV0uY29udGVudCl9fSksbXQud3JpdGUo''@;'; put 'put ''aWUpfShIKSl9dmFyIGplPXt9O3JldHVybiBILkZ1bGxQYXRocyYmZnVuY3Rpb24gbFQoSCxpZSxYKXt2YXIgd2U9bXQuZmluZChILCIhRG9jdW1lbnRTdW1tYXJ5SW5mb3JtYXRpb24iKTtpZih3ZSYmd2Uuc2l6ZT4wKXRyeXt2YXIgeGU9d2Qod2UscmIsRTVfRFNJKTtmb3IodmFyIEZlIGlu''@;'; put 'put ''IHhlKWllW0ZlXT14ZVtGZV19Y2F0Y2goTXQpe2lmKFguV1RGKXRocm93IE10fXZhciBaZT1tdC5maW5kKEgsIiFTdW1tYXJ5SW5mb3JtYXRpb24iKTtpZihaZSYmWmUuc2l6ZT4wKXRyeXt2YXIgamU9d2QoWmUsVXAsRTVfU0kpO2Zvcih2YXIgWWUgaW4gamUpbnVsbD09aWVbWWVdJiYoaWVb''@;'; put 'put ''WWVdPWplW1llXSl9Y2F0Y2goTXQpe2lmKFguV1RGKXRocm93IE10fWllLkhlYWRpbmdQYWlycyYmaWUuVGl0bGVzT2ZQYXJ0cyYmKHlzKGllLkhlYWRpbmdQYWlycyxpZS5UaXRsZXNPZlBhcnRzLGllLFgpLGRlbGV0ZSBpZS5IZWFkaW5nUGFpcnMsZGVsZXRlIGllLlRpdGxlc09mUGFydHMp''@;'; put 'put ''fShILGplLGllKSx4ZS5Qcm9wcz14ZS5DdXN0cHJvcHM9amUsaWUuYm9va0ZpbGVzJiYoeGUuY2ZiPUgpLHhlfXZhciB4NT17MDp7bjoiQnJ0Um93SGRyIixmOmZ1bmN0aW9uIHFCKEgsaWUpe3ZhciBYPXt9LHdlPUgubCtpZTtYLnI9SC5yZWFkX3NoaWZ0KDQpLEgubCs9NDt2YXIgeGU9SC5y''@;'; put 'put ''ZWFkX3NoaWZ0KDIpO0gubCs9MTt2YXIgRmU9SC5yZWFkX3NoaWZ0KDEpO3JldHVybiBILmw9d2UsNyZGZSYmKFgubGV2ZWw9NyZGZSksMTYmRmUmJihYLmhpZGRlbj0hMCksMzImRmUmJihYLmhwdD14ZS8yMCksWH19LDE6e246IkJydENlbGxCbGFuayIsZjpmdW5jdGlvbiBpUChIKXtyZXR1''@;'; put 'put ''cm5bdmgoSCldfX0sMjp7bjoiQnJ0Q2VsbFJrIixmOmZ1bmN0aW9uIHd4KEgpe3JldHVyblt2aChIKSxXZyhIKSwibiJdfX0sMzp7bjoiQnJ0Q2VsbEVycm9yIixmOmZ1bmN0aW9uIFhmKEgpe3JldHVyblt2aChIKSxILnJlYWRfc2hpZnQoMSksImUiXX19LDQ6e246IkJydENlbGxCb29sIixm''@;'; put 'put ''OmZ1bmN0aW9uIE5tKEgpe3JldHVyblt2aChIKSxILnJlYWRfc2hpZnQoMSksImIiXX19LDU6e246IkJydENlbGxSZWFsIixmOmZ1bmN0aW9uIE8zKEgpe3JldHVyblt2aChIKSxJMihIKSwibiJdfX0sNjp7bjoiQnJ0Q2VsbFN0IixmOmZ1bmN0aW9uIF94KEgpe3JldHVyblt2aChIKSx4dShI''@;'; put 'put ''KSwic3RyIl19fSw3OntuOiJCcnRDZWxsSXNzdCIsZjpmdW5jdGlvbiBLZihIKXtyZXR1cm5bdmgoSCksSC5yZWFkX3NoaWZ0KDQpLCJzIl19fSw4OntuOiJCcnRGbWxhU3RyaW5nIixmOmZ1bmN0aW9uIHJuKEgsaWUsWCl7dmFyIHdlPUgubCtpZSx4ZT12aChIKTt4ZS5yPVhbIiFyb3ciXTt2''@;'; put 'put ''YXIgWmU9W3hlLHh1KEgpLCJzdHIiXTtpZihYLmNlbGxGb3JtdWxhKXtILmwrPTI7dmFyIGplPXNfKEgsd2UtSC5sLFgpO1plWzNdPVcxKGplLG51bGwseGUsWC5zdXBib29rcyxYKX1lbHNlIEgubD13ZTtyZXR1cm4gWmV9fSw5OntuOiJCcnRGbWxhTnVtIixmOmZ1bmN0aW9uIF9BKEgsaWUs''@;'; put 'put ''WCl7dmFyIHdlPUgubCtpZSx4ZT12aChIKTt4ZS5yPVhbIiFyb3ciXTt2YXIgWmU9W3hlLEkyKEgpLCJuIl07aWYoWC5jZWxsRm9ybXVsYSl7SC5sKz0yO3ZhciBqZT1zXyhILHdlLUgubCxYKTtaZVszXT1XMShqZSxudWxsLHhlLFguc3VwYm9va3MsWCl9ZWxzZSBILmw9d2U7cmV0dXJuIFpl''@;'; put 'put ''fX0sMTA6e246IkJydEZtbGFCb29sIixmOmZ1bmN0aW9uIGR1KEgsaWUsWCl7dmFyIHdlPUgubCtpZSx4ZT12aChIKTt4ZS5yPVhbIiFyb3ciXTt2YXIgWmU9W3hlLEgucmVhZF9zaGlmdCgxKSwiYiJdO2lmKFguY2VsbEZvcm11bGEpe0gubCs9Mjt2YXIgamU9c18oSCx3ZS1ILmwsWCk7WmVb''@;'; put 'put ''M109VzEoamUsbnVsbCx4ZSxYLnN1cGJvb2tzLFgpfWVsc2UgSC5sPXdlO3JldHVybiBaZX19LDExOntuOiJCcnRGbWxhRXJyb3IiLGY6ZnVuY3Rpb24gX2MoSCxpZSxYKXt2YXIgd2U9SC5sK2llLHhlPXZoKEgpO3hlLnI9WFsiIXJvdyJdO3ZhciBaZT1beGUsSC5yZWFkX3NoaWZ0KDEpLCJl''@;'; put 'put ''Il07aWYoWC5jZWxsRm9ybXVsYSl7SC5sKz0yO3ZhciBqZT1zXyhILHdlLUgubCxYKTtaZVszXT1XMShqZSxudWxsLHhlLFguc3VwYm9va3MsWCl9ZWxzZSBILmw9d2U7cmV0dXJuIFplfX0sMTI6e246IkJydFNob3J0QmxhbmsiLGY6ZnVuY3Rpb24gb1AoSCl7cmV0dXJuW000KEgpXX19LDEz''@;'; put 'put ''OntuOiJCcnRTaG9ydFJrIixmOmZ1bmN0aW9uIGJ4KEgpe3JldHVybltNNChIKSxXZyhIKSwibiJdfX0sMTQ6e246IkJydFNob3J0RXJyb3IiLGY6ZnVuY3Rpb24gZzUoSCl7cmV0dXJuW000KEgpLEgucmVhZF9zaGlmdCgxKSwiZSJdfX0sMTU6e246IkJydFNob3J0Qm9vbCIsZjpmdW5jdGlv''@;'; put 'put ''biB4NihIKXtyZXR1cm5bTTQoSCksSC5yZWFkX3NoaWZ0KDEpLCJiIl19fSwxNjp7bjoiQnJ0U2hvcnRSZWFsIixmOlU0fSwxNzp7bjoiQnJ0U2hvcnRTdCIsZjpmdW5jdGlvbiBDeChIKXtyZXR1cm5bTTQoSCkseHUoSCksInN0ciJdfX0sMTg6e246IkJydFNob3J0SXNzdCIsZjpmdW5jdGlv''@;'; put 'put ''biBUNihIKXtyZXR1cm5bTTQoSCksSC5yZWFkX3NoaWZ0KDQpLCJzIl19fSwxOTp7bjoiQnJ0U1NUSXRlbSIsZjprc30sMjA6e246IkJydFBDRElNaXNzaW5nIn0sMjE6e246IkJydFBDRElOdW1iZXIifSwyMjp7bjoiQnJ0UENESUJvb2xlYW4ifSwyMzp7bjoiQnJ0UENESUVycm9yIn0sMjQ6''@;'; put 'put ''e246IkJydFBDRElTdHJpbmcifSwyNTp7bjoiQnJ0UENESURhdGV0aW1lIn0sMjY6e246IkJydFBDRElJbmRleCJ9LDI3OntuOiJCcnRQQ0RJQU1pc3NpbmcifSwyODp7bjoiQnJ0UENESUFOdW1iZXIifSwyOTp7bjoiQnJ0UENESUFCb29sZWFuIn0sMzA6e246IkJydFBDRElBRXJyb3IifSwz''@;'; put 'put ''MTp7bjoiQnJ0UENESUFTdHJpbmcifSwzMjp7bjoiQnJ0UENESUFEYXRldGltZSJ9LDMzOntuOiJCcnRQQ1JSZWNvcmQifSwzNDp7bjoiQnJ0UENSUmVjb3JkRHQifSwzNTp7bjoiQnJ0RlJUQmVnaW4ifSwzNjp7bjoiQnJ0RlJURW5kIn0sMzc6e246IkJydEFDQmVnaW4ifSwzODp7bjoiQnJ0''@;'; put 'put ''QUNFbmQifSwzOTp7bjoiQnJ0TmFtZSIsZjpmdW5jdGlvbiBZdChILGllLFgpe3ZhciB3ZT1ILmwraWU7SC5sKz00LEgubCs9MTt2YXIgeGU9SC5yZWFkX3NoaWZ0KDQpLEZlPWw5KEgpLFplPWdHKEgsMCxYKSxqZT15aChIKTtILmw9d2U7dmFyIFllPXtOYW1lOkZlLFB0ZzpaZX07cmV0dXJu''@;'; put 'put ''IHhlPDI2ODQzNTQ1NSYmKFllLlNoZWV0PXhlKSxqZSYmKFllLkNvbW1lbnQ9amUpLFllfX0sNDA6e246IkJydEluZGV4Um93QmxvY2sifSw0Mjp7bjoiQnJ0SW5kZXhCbG9jayJ9LDQzOntuOiJCcnRGb250IixmOmZ1bmN0aW9uIHRHKEgsaWUsWCl7dmFyIHdlPXt9O3dlLnN6PUgucmVhZF9z''@;'; put 'put ''aGlmdCgyKS8yMDt2YXIgeGU9dGIoSCk7c3dpdGNoKHhlLmZCb2xkJiYod2UuYm9sZD0xKSx4ZS5mSXRhbGljJiYod2UuaXRhbGljPTEpLHhlLmZVbmRlcmxpbmUmJih3ZS51bmRlcmxpbmU9MSkseGUuZkNvbmRlbnNlJiYod2UuY29uZGVuc2U9MSkseGUuZkV4dGVuZCYmKHdlLmV4dGVuZD0x''@;'; put 'put ''KSx4ZS5mU2hhZG93JiYod2Uuc2hhZG93PTEpLHhlLmZPdXRsaW5lJiYod2Uub3V0bGluZT0xKSx4ZS5mU3RyaWtlb3V0JiYod2Uuc3RyaWtlPTEpLDcwMD09PUgucmVhZF9zaGlmdCgyKSYmKHdlLmJvbGQ9MSksSC5yZWFkX3NoaWZ0KDIpKXtjYXNlIDE6d2UudmFsaWduPSJzdXBlciI7YnJl''@;'; put 'put ''YWs7Y2FzZSAyOndlLnZhbGlnbj0ic3ViIn12YXIgWmU9SC5yZWFkX3NoaWZ0KDEpOzAhPVplJiYod2UudW5kZXJsaW5lPVplKTt2YXIgamU9SC5yZWFkX3NoaWZ0KDEpO2plPjAmJih3ZS5mYW1pbHk9amUpO3ZhciBZZT1ILnJlYWRfc2hpZnQoMSk7c3dpdGNoKFllPjAmJih3ZS5jaGFyc2V0''@;'; put 'put ''PVllKSxILmwrKyx3ZS5jb2xvcj1VZyhIKSxILnJlYWRfc2hpZnQoMSkpe2Nhc2UgMTp3ZS5zY2hlbWU9Im1ham9yIjticmVhaztjYXNlIDI6d2Uuc2NoZW1lPSJtaW5vciJ9cmV0dXJuIHdlLm5hbWU9eHUoSCksd2V9fSw0NDp7bjoiQnJ0Rm10IixmOmZ1bmN0aW9uIEs4KEgsaWUpe3JldHVy''@;'; put 'put ''bltILnJlYWRfc2hpZnQoMikseHUoSCldfX0sNDU6e246IkJydEZpbGwiLGY6ZnVuY3Rpb24gS1IoSCxpZSl7dmFyIFg9SC5sK2llLHdlPXt9LHhlPUgucmVhZF9zaGlmdCg0KTtpZig0MCE9eGUpe3dlLnBhdHRlcm5UeXBlPVhSW3hlXTt2YXIgRmU9VWcoSCk7NjQhPUZlLmluZGV4JiYod2Uu''@;'; put 'put ''ZmdDb2xvcj1GZSk7dmFyIFplPVVnKEgpOzY1IT1aZS5pbmRleCYmKHdlLmJnQ29sb3I9WmUpfWVsc2V7SC5sKz0xNixILnJlYWRfc2hpZnQoNCksSTIoSCksSTIoSCksSTIoSCksSTIoSCksSTIoSCk7Zm9yKHZhciBqZT1ILnJlYWRfc2hpZnQoNCksWWU9W10sTXQ9MDtNdDxqZTsrK010KVll''@;'; put 'put ''LnB1c2gobkcoSCkpfXJldHVybiBILmw9WCx3ZX19LDQ2OntuOiJCcnRCb3JkZXIiLGY6ZnVuY3Rpb24gJFIoSCl7dmFyIGllPXt9O0gucmVhZF9zaGlmdCgxKTt2YXIgWD1nNihIKTsibm9uZSIhPVguc3R5bGUmJihpZS50b3A9WCk7dmFyIHdlPWc2KEgpOyJub25lIiE9d2Uuc3R5bGUmJihp''@;'; put 'put ''ZS5ib3R0b209d2UpO3ZhciB4ZT1nNihIKTsibm9uZSIhPXhlLnN0eWxlJiYoaWUubGVmdD14ZSk7dmFyIEZlPWc2KEgpOyJub25lIiE9RmUuc3R5bGUmJihpZS5yaWdodD1GZSk7dmFyIFplPWc2KEgpO3JldHVybiJub25lIiE9WmUuc3R5bGUmJihpZS5kaWFnPVplKSxpZX19LDQ3OntuOiJC''@;'; put 'put ''cnRYRiIsZjpmdW5jdGlvbiBGNChILGllKXt2YXIgWD1ILmwraWUsd2U9e30seGU9SC5yZWFkX3NoaWZ0KDIpLEZlPUgucmVhZF9zaGlmdCgyKSxaZT1ILnJlYWRfc2hpZnQoMiksamU9SC5yZWFkX3NoaWZ0KDIpLFllPUgucmVhZF9zaGlmdCgyKSxNdD1ILnJlYWRfc2hpZnQoMSk7SC5yZWFk''@;'; put 'put ''X3NoaWZ0KDEpO3ZhciB4dD1ILnJlYWRfc2hpZnQoMiksUnQ9SC5yZWFkX3NoaWZ0KDEpO0gubD1YLHdlLnhmSWQ9eGUsd2UubnVtRm10SWQ9RmUsd2UuZm9udElkPVplLHdlLmZpbGxJZD1qZSx3ZS5ib3JkZXJJZD1ZZSwxJlJ0JiYwIT13ZS5udW1GbXRJZCYmKHdlLmFwcGx5TnVtYmVyRm9y''@;'; put 'put ''bWF0PSEwKSx3ZS5hbGlnbm1lbnQ9e30sTXQ+MCYmKHdlLmFsaWdubWVudC50ZXh0Um90YXRpb249TXQpO3ZhciBVdD0hMTtyZXR1cm4gNyZ4dCYmKFV0PSEwLHdlLmFsaWdubWVudC5ob3Jpem9udGFsPVA5WzcmeHRdKSx3ZS5hbGlnbm1lbnQudmVydGljYWw9eW1beHQ+Pj4zJjddLHdlLmFs''@;'; put 'put ''aWdubWVudC52ZXJ0aWNhbCYmKFV0PSEwKSx4dD4+PjYmMSYmKHdlLmFsaWdubWVudC53cmFwVGV4dD0hMCkseHQ+Pj44JjEmJih3ZS5hbGlnbm1lbnQuc2hyaW5rVG9GaXQ9ITApLFV0fHxkZWxldGUgd2UuYWxpZ25tZW50LDQmUnQmJlV0JiYod2UuYXBwbHlBbGlnbm1lbnQ9ITApLHdlfX0s''@;'; put 'put ''NDg6e246IkJydFN0eWxlIn0sNDk6e246IkJydENlbGxNZXRhIn0sNTA6e246IkJydFZhbHVlTWV0YSJ9LDUxOntuOiJCcnRNZGIifSw1Mjp7bjoiQnJ0QmVnaW5GbWQifSw1Mzp7bjoiQnJ0RW5kRm1kIn0sNTQ6e246IkJydEJlZ2luTWR4In0sNTU6e246IkJydEVuZE1keCJ9LDU2OntuOiJC''@;'; put 'put ''cnRCZWdpbk1keFR1cGxlIn0sNTc6e246IkJydEVuZE1keFR1cGxlIn0sNTg6e246IkJydE1keE1icklzdHIifSw1OTp7bjoiQnJ0U3RyIn0sNjA6e246IkJydENvbEluZm8iLGY6djN9LDYyOntuOiJCcnRDZWxsUlN0cmluZyJ9LDYzOntuOiJCcnRDYWxjQ2hhaW5JdGVtJCIsZjpmdW5jdGlv''@;'; put 'put ''biBBNihIKXt2YXIgaWU9e307aWUuaT1ILnJlYWRfc2hpZnQoNCk7dmFyIFg9e307WC5yPUgucmVhZF9zaGlmdCg0KSxYLmM9SC5yZWFkX3NoaWZ0KDQpLGllLnI9WTAoWCk7dmFyIHdlPUgucmVhZF9zaGlmdCgxKTtyZXR1cm4gMiZ3ZSYmKGllLmw9IjEiKSw4JndlJiYoaWUuYT0iMSIpLGll''@;'; put 'put ''fX0sNjQ6e246IkJydERWYWwiLGY6ZnVuY3Rpb24gUXQoSCxpZSxYKXt2YXIgd2U9SC5sK2llLHhlPUgucmVhZF9zaGlmdCg0KSxGZT11OShIKSxaZT15aChIKSxqZT15aChIKSxZZT15aChIKSxNdD15aChIKSx4dD1aQihILGllLFgpLFJ0PUgubDx3ZT9aQihILGllLFgpOm51bGwsVXQ9MTUm''@;'; put 'put ''eGUsbm49e3Q6am1bVXRdLHNxcmZ4OkZlLHM6W1plLGplLFllLE10XX07cmV0dXJuIHh0JiYobm4uZjE9eHQpLFJ0JiYobm4uZjI9UnQpLDA9PVV0fHwzPT1VdHx8Nz09VXR8fChubi5vcD1DQVt4ZT4+MjAmMTVdKSxubn19LDY1OntuOiJCcnRTeHZjZWxsTnVtIn0sNjY6e246IkJydFN4dmNl''@;'; put 'put ''bGxTdHIifSw2Nzp7bjoiQnJ0U3h2Y2VsbEJvb2wifSw2ODp7bjoiQnJ0U3h2Y2VsbEVyciJ9LDY5OntuOiJCcnRTeHZjZWxsRGF0ZSJ9LDcwOntuOiJCcnRTeHZjZWxsTmlsIn0sMTI4OntuOiJCcnRGaWxlVmVyc2lvbiJ9LDEyOTp7bjoiQnJ0QmVnaW5TaGVldCJ9LDEzMDp7bjoiQnJ0RW5k''@;'; put 'put ''U2hlZXQifSwxMzE6e246IkJydEJlZ2luQm9vayIsZjpDcyxwOjB9LDEzMjp7bjoiQnJ0RW5kQm9vayJ9LDEzMzp7bjoiQnJ0QmVnaW5Xc1ZpZXdzIn0sMTM0OntuOiJCcnRFbmRXc1ZpZXdzIn0sMTM1OntuOiJCcnRCZWdpbkJvb2tWaWV3cyJ9LDEzNjp7bjoiQnJ0RW5kQm9va1ZpZXdzIn0s''@;'; put 'put ''MTM3OntuOiJCcnRCZWdpbldzVmlldyIsZjpmdW5jdGlvbiBIXyhIKXt2YXIgaWU9SC5yZWFkX3NoaWZ0KDIpO3JldHVybiBILmwrPTI4LHtSVEw6MzImaWUsZ3JpZDohISg0JmllKX19fSwxMzg6e246IkJydEVuZFdzVmlldyJ9LDEzOTp7bjoiQnJ0QmVnaW5Dc1ZpZXdzIn0sMTQwOntuOiJC''@;'; put 'put ''cnRFbmRDc1ZpZXdzIn0sMTQxOntuOiJCcnRCZWdpbkNzVmlldyJ9LDE0Mjp7bjoiQnJ0RW5kQ3NWaWV3In0sMTQzOntuOiJCcnRCZWdpbkJ1bmRsZVNocyJ9LDE0NDp7bjoiQnJ0RW5kQnVuZGxlU2hzIn0sMTQ1OntuOiJCcnRCZWdpblNoZWV0RGF0YSJ9LDE0Njp7bjoiQnJ0RW5kU2hlZXRE''@;'; put 'put ''YXRhIn0sMTQ3OntuOiJCcnRXc1Byb3AiLGY6ZnVuY3Rpb24gUGQoSCxpZSl7dmFyIFg9e30sd2U9SFtILmxdO3JldHVybisrSC5sLFguYWJvdmU9ISg2NCZ3ZSksWC5sZWZ0PSEoMTI4JndlKSxILmwrPTE4LFgubmFtZT1lYihILGllLTE5KSxYfX0sMTQ4OntuOiJCcnRXc0RpbSIsZjpXNCxw''@;'; put 'put ''OjE2fSwxNTE6e246IkJydFBhbmUiLGY6ZnVuY3Rpb24gbnQoSCxpZSl7dmFyIFg9SC5sK2llO0kyKEgpLEkyKEgpO3ZhciB3ZT1ILnJlYWRfc2hpZnQoNCwiaSIpLHhlPUgucmVhZF9zaGlmdCg0LCJpIik7aWYoSC5yZWFkX3NoaWZ0KDQpLEgucmVhZF9zaGlmdCgxKSxYIT1ILmwpdGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCJCYWQgQnJ0UGFuZTogIitYKyIgIT0gIitILmwpO3JldHVybltZMCh7cjp3ZSxjOnhlfSldfX0sMTUyOntuOiJCcnRTZWwiLGY6ZnVuY3Rpb24gQ3IoSCxpZSl7cmV0dXJuIEgucmVhZF9zaGlmdCg0KSx7Y2VsbDpZMCh7cjpILnJlYWRfc2hpZnQoNCksYzpILnJlYWRfc2hp''@;'; put 'put ''ZnQoNCl9KX19fSwxNTM6e246IkJydFdiUHJvcCIsZjpmdW5jdGlvbiBrQShILGllKXt2YXIgWD17fSx3ZT1ILnJlYWRfc2hpZnQoNCk7WC5kZWZhdWx0VGhlbWVWZXJzaW9uPUgucmVhZF9zaGlmdCg0KTt2YXIgeGU9aWU+OD94dShIKToiIjtyZXR1cm4geGUubGVuZ3RoPjAmJihYLkNvZGVO''@;'; put 'put ''YW1lPXhlKSxYLmF1dG9Db21wcmVzc1BpY3R1cmVzPSEhKDY1NTM2JndlKSxYLmJhY2t1cEZpbGU9ISEoNjQmd2UpLFguY2hlY2tDb21wYXRpYmlsaXR5PSEhKDQwOTYmd2UpLFguZGF0ZTE5MDQ9ISEoMSZ3ZSksWC5maWx0ZXJQcml2YWN5PSEhKDgmd2UpLFguaGlkZVBpdm90RmllbGRMaXN0''@;'; put 'put ''PSEhKDEwMjQmd2UpLFgucHJvbXB0ZWRTb2x1dGlvbnM9ISEoMTYmd2UpLFgucHVibGlzaEl0ZW1zPSEhKDIwNDgmd2UpLFgucmVmcmVzaEFsbENvbm5lY3Rpb25zPSEhKDI2MjE0NCZ3ZSksWC5zYXZlRXh0ZXJuYWxMaW5rVmFsdWVzPSEhKDEyOCZ3ZSksWC5zaG93Qm9yZGVyVW5zZWxlY3Rl''@;'; put 'put ''ZFRhYmxlcz0hISg0JndlKSxYLnNob3dJbmtBbm5vdGF0aW9uPSEhKDMyJndlKSxYLnNob3dPYmplY3RzPVsiYWxsIiwicGxhY2Vob2xkZXJzIiwibm9uZSJdW3dlPj4xMyYzXSxYLnNob3dQaXZvdENoYXJ0RmlsdGVyPSEhKDMyNzY4JndlKSxYLnVwZGF0ZUxpbmtzPVsidXNlclNldCIsIm5l''@;'; put 'put ''dmVyIiwiYWx3YXlzIl1bd2U+PjgmM10sWH19LDE1NDp7bjoiQnJ0V2JGYWN0b2lkIn0sMTU1OntuOiJCcnRGaWxlUmVjb3ZlciJ9LDE1Njp7bjoiQnJ0QnVuZGxlU2giLGY6ZnVuY3Rpb24gR18oSCxpZSl7dmFyIFg9e307cmV0dXJuIFguSGlkZGVuPUgucmVhZF9zaGlmdCg0KSxYLmlUYWJJ''@;'; put 'put ''RD1ILnJlYWRfc2hpZnQoNCksWC5zdHJSZWxJRD1HZyhILGllLTgpLFgubmFtZT14dShIKSxYfX0sMTU3OntuOiJCcnRDYWxjUHJvcCJ9LDE1ODp7bjoiQnJ0Qm9va1ZpZXcifSwxNTk6e246IkJydEJlZ2luU3N0IixmOmZ1bmN0aW9uIG5FKEgpe3JldHVybltILnJlYWRfc2hpZnQoNCksSC5y''@;'; put 'put ''ZWFkX3NoaWZ0KDQpXX19LDE2MDp7bjoiQnJ0RW5kU3N0In0sMTYxOntuOiJCcnRCZWdpbkFGaWx0ZXIiLGY6d2h9LDE2Mjp7bjoiQnJ0RW5kQUZpbHRlciJ9LDE2Mzp7bjoiQnJ0QmVnaW5GaWx0ZXJDb2x1bW4ifSwxNjQ6e246IkJydEVuZEZpbHRlckNvbHVtbiJ9LDE2NTp7bjoiQnJ0QmVn''@;'; put 'put ''aW5GaWx0ZXJzIn0sMTY2OntuOiJCcnRFbmRGaWx0ZXJzIn0sMTY3OntuOiJCcnRGaWx0ZXIifSwxNjg6e246IkJydENvbG9yRmlsdGVyIn0sMTY5OntuOiJCcnRJY29uRmlsdGVyIn0sMTcwOntuOiJCcnRUb3AxMEZpbHRlciJ9LDE3MTp7bjoiQnJ0RHluYW1pY0ZpbHRlciJ9LDE3Mjp7bjoi''@;'; put 'put ''QnJ0QmVnaW5DdXN0b21GaWx0ZXJzIn0sMTczOntuOiJCcnRFbmRDdXN0b21GaWx0ZXJzIn0sMTc0OntuOiJCcnRDdXN0b21GaWx0ZXIifSwxNzU6e246IkJydEFGaWx0ZXJEYXRlR3JvdXBJdGVtIn0sMTc2OntuOiJCcnRNZXJnZUNlbGwiLGY6a3h9LDE3Nzp7bjoiQnJ0QmVnaW5NZXJnZUNl''@;'; put 'put ''bGxzIn0sMTc4OntuOiJCcnRFbmRNZXJnZUNlbGxzIn0sMTc5OntuOiJCcnRCZWdpblBpdm90Q2FjaGVEZWYifSwxODA6e246IkJydEVuZFBpdm90Q2FjaGVEZWYifSwxODE6e246IkJydEJlZ2luUENERmllbGRzIn0sMTgyOntuOiJCcnRFbmRQQ0RGaWVsZHMifSwxODM6e246IkJydEJlZ2lu''@;'; put 'put ''UENERmllbGQifSwxODQ6e246IkJydEVuZFBDREZpZWxkIn0sMTg1OntuOiJCcnRCZWdpblBDRFNvdXJjZSJ9LDE4Njp7bjoiQnJ0RW5kUENEU291cmNlIn0sMTg3OntuOiJCcnRCZWdpblBDRFNSYW5nZSJ9LDE4ODp7bjoiQnJ0RW5kUENEU1JhbmdlIn0sMTg5OntuOiJCcnRCZWdpblBDREZB''@;'; put 'put ''dGJsIn0sMTkwOntuOiJCcnRFbmRQQ0RGQXRibCJ9LDE5MTp7bjoiQnJ0QmVnaW5QQ0RJUnVuIn0sMTkyOntuOiJCcnRFbmRQQ0RJUnVuIn0sMTkzOntuOiJCcnRCZWdpblBpdm90Q2FjaGVSZWNvcmRzIn0sMTk0OntuOiJCcnRFbmRQaXZvdENhY2hlUmVjb3JkcyJ9LDE5NTp7bjoiQnJ0QmVn''@;'; put 'put ''aW5QQ0RIaWVyYXJjaGllcyJ9LDE5Njp7bjoiQnJ0RW5kUENESGllcmFyY2hpZXMifSwxOTc6e246IkJydEJlZ2luUENESGllcmFyY2h5In0sMTk4OntuOiJCcnRFbmRQQ0RIaWVyYXJjaHkifSwxOTk6e246IkJydEJlZ2luUENESEZpZWxkc1VzYWdlIn0sMjAwOntuOiJCcnRFbmRQQ0RIRmll''@;'; put 'put ''bGRzVXNhZ2UifSwyMDE6e246IkJydEJlZ2luRXh0Q29ubmVjdGlvbiJ9LDIwMjp7bjoiQnJ0RW5kRXh0Q29ubmVjdGlvbiJ9LDIwMzp7bjoiQnJ0QmVnaW5FQ0RiUHJvcHMifSwyMDQ6e246IkJydEVuZEVDRGJQcm9wcyJ9LDIwNTp7bjoiQnJ0QmVnaW5FQ09sYXBQcm9wcyJ9LDIwNjp7bjoi''@;'; put 'put ''QnJ0RW5kRUNPbGFwUHJvcHMifSwyMDc6e246IkJydEJlZ2luUENEU0NvbnNvbCJ9LDIwODp7bjoiQnJ0RW5kUENEU0NvbnNvbCJ9LDIwOTp7bjoiQnJ0QmVnaW5QQ0RTQ1BhZ2VzIn0sMjEwOntuOiJCcnRFbmRQQ0RTQ1BhZ2VzIn0sMjExOntuOiJCcnRCZWdpblBDRFNDUGFnZSJ9LDIxMjp7''@;'; put 'put ''bjoiQnJ0RW5kUENEU0NQYWdlIn0sMjEzOntuOiJCcnRCZWdpblBDRFNDUEl0ZW0ifSwyMTQ6e246IkJydEVuZFBDRFNDUEl0ZW0ifSwyMTU6e246IkJydEJlZ2luUENEU0NTZXRzIn0sMjE2OntuOiJCcnRFbmRQQ0RTQ1NldHMifSwyMTc6e246IkJydEJlZ2luUENEU0NTZXQifSwyMTg6e246''@;'; put 'put ''IkJydEVuZFBDRFNDU2V0In0sMjE5OntuOiJCcnRCZWdpblBDREZHcm91cCJ9LDIyMDp7bjoiQnJ0RW5kUENERkdyb3VwIn0sMjIxOntuOiJCcnRCZWdpblBDREZHSXRlbXMifSwyMjI6e246IkJydEVuZFBDREZHSXRlbXMifSwyMjM6e246IkJydEJlZ2luUENERkdSYW5nZSJ9LDIyNDp7bjoi''@;'; put 'put ''QnJ0RW5kUENERkdSYW5nZSJ9LDIyNTp7bjoiQnJ0QmVnaW5QQ0RGR0Rpc2NyZXRlIn0sMjI2OntuOiJCcnRFbmRQQ0RGR0Rpc2NyZXRlIn0sMjI3OntuOiJCcnRCZWdpblBDRFNEVHVwbGVDYWNoZSJ9LDIyODp7bjoiQnJ0RW5kUENEU0RUdXBsZUNhY2hlIn0sMjI5OntuOiJCcnRCZWdpblBD''@;'; put 'put ''RFNEVENFbnRyaWVzIn0sMjMwOntuOiJCcnRFbmRQQ0RTRFRDRW50cmllcyJ9LDIzMTp7bjoiQnJ0QmVnaW5QQ0RTRFRDRU1lbWJlcnMifSwyMzI6e246IkJydEVuZFBDRFNEVENFTWVtYmVycyJ9LDIzMzp7bjoiQnJ0QmVnaW5QQ0RTRFRDRU1lbWJlciJ9LDIzNDp7bjoiQnJ0RW5kUENEU0RU''@;'; put 'put ''Q0VNZW1iZXIifSwyMzU6e246IkJydEJlZ2luUENEU0RUQ1F1ZXJpZXMifSwyMzY6e246IkJydEVuZFBDRFNEVENRdWVyaWVzIn0sMjM3OntuOiJCcnRCZWdpblBDRFNEVENRdWVyeSJ9LDIzODp7bjoiQnJ0RW5kUENEU0RUQ1F1ZXJ5In0sMjM5OntuOiJCcnRCZWdpblBDRFNEVENTZXRzIn0s''@;'; put 'put ''MjQwOntuOiJCcnRFbmRQQ0RTRFRDU2V0cyJ9LDI0MTp7bjoiQnJ0QmVnaW5QQ0RTRFRDU2V0In0sMjQyOntuOiJCcnRFbmRQQ0RTRFRDU2V0In0sMjQzOntuOiJCcnRCZWdpblBDRENhbGNJdGVtcyJ9LDI0NDp7bjoiQnJ0RW5kUENEQ2FsY0l0ZW1zIn0sMjQ1OntuOiJCcnRCZWdpblBDRENh''@;'; put 'put ''bGNJdGVtIn0sMjQ2OntuOiJCcnRFbmRQQ0RDYWxjSXRlbSJ9LDI0Nzp7bjoiQnJ0QmVnaW5QUnVsZSJ9LDI0ODp7bjoiQnJ0RW5kUFJ1bGUifSwyNDk6e246IkJydEJlZ2luUFJGaWx0ZXJzIn0sMjUwOntuOiJCcnRFbmRQUkZpbHRlcnMifSwyNTE6e246IkJydEJlZ2luUFJGaWx0ZXIifSwy''@;'; put 'put ''NTI6e246IkJydEVuZFBSRmlsdGVyIn0sMjUzOntuOiJCcnRCZWdpblBOYW1lcyJ9LDI1NDp7bjoiQnJ0RW5kUE5hbWVzIn0sMjU1OntuOiJCcnRCZWdpblBOYW1lIn0sMjU2OntuOiJCcnRFbmRQTmFtZSJ9LDI1Nzp7bjoiQnJ0QmVnaW5QTlBhaXJzIn0sMjU4OntuOiJCcnRFbmRQTlBhaXJz''@;'; put 'put ''In0sMjU5OntuOiJCcnRCZWdpblBOUGFpciJ9LDI2MDp7bjoiQnJ0RW5kUE5QYWlyIn0sMjYxOntuOiJCcnRCZWdpbkVDV2ViUHJvcHMifSwyNjI6e246IkJydEVuZEVDV2ViUHJvcHMifSwyNjM6e246IkJydEJlZ2luRWNXcFRhYmxlcyJ9LDI2NDp7bjoiQnJ0RW5kRUNXUFRhYmxlcyJ9LDI2''@;'; put 'put ''NTp7bjoiQnJ0QmVnaW5FQ1BhcmFtcyJ9LDI2Njp7bjoiQnJ0RW5kRUNQYXJhbXMifSwyNjc6e246IkJydEJlZ2luRUNQYXJhbSJ9LDI2ODp7bjoiQnJ0RW5kRUNQYXJhbSJ9LDI2OTp7bjoiQnJ0QmVnaW5QQ0RLUElzIn0sMjcwOntuOiJCcnRFbmRQQ0RLUElzIn0sMjcxOntuOiJCcnRCZWdp''@;'; put 'put ''blBDREtQSSJ9LDI3Mjp7bjoiQnJ0RW5kUENES1BJIn0sMjczOntuOiJCcnRCZWdpbkRpbXMifSwyNzQ6e246IkJydEVuZERpbXMifSwyNzU6e246IkJydEJlZ2luRGltIn0sMjc2OntuOiJCcnRFbmREaW0ifSwyNzc6e246IkJydEluZGV4UGFydEVuZCJ9LDI3ODp7bjoiQnJ0QmVnaW5TdHls''@;'; put 'put ''ZVNoZWV0In0sMjc5OntuOiJCcnRFbmRTdHlsZVNoZWV0In0sMjgwOntuOiJCcnRCZWdpblNYVmlldyJ9LDI4MTp7bjoiQnJ0RW5kU1hWSSJ9LDI4Mjp7bjoiQnJ0QmVnaW5TWFZJIn0sMjgzOntuOiJCcnRCZWdpblNYVklzIn0sMjg0OntuOiJCcnRFbmRTWFZJcyJ9LDI4NTp7bjoiQnJ0QmVn''@;'; put 'put ''aW5TWFZEIn0sMjg2OntuOiJCcnRFbmRTWFZEIn0sMjg3OntuOiJCcnRCZWdpblNYVkRzIn0sMjg4OntuOiJCcnRFbmRTWFZEcyJ9LDI4OTp7bjoiQnJ0QmVnaW5TWFBJIn0sMjkwOntuOiJCcnRFbmRTWFBJIn0sMjkxOntuOiJCcnRCZWdpblNYUElzIn0sMjkyOntuOiJCcnRFbmRTWFBJcyJ9''@;'; put 'put ''LDI5Mzp7bjoiQnJ0QmVnaW5TWERJIn0sMjk0OntuOiJCcnRFbmRTWERJIn0sMjk1OntuOiJCcnRCZWdpblNYRElzIn0sMjk2OntuOiJCcnRFbmRTWERJcyJ9LDI5Nzp7bjoiQnJ0QmVnaW5TWExJIn0sMjk4OntuOiJCcnRFbmRTWExJIn0sMjk5OntuOiJCcnRCZWdpblNYTElSd3MifSwzMDA6''@;'; put 'put ''e246IkJydEVuZFNYTElSd3MifSwzMDE6e246IkJydEJlZ2luU1hMSUNvbHMifSwzMDI6e246IkJydEVuZFNYTElDb2xzIn0sMzAzOntuOiJCcnRCZWdpblNYRm9ybWF0In0sMzA0OntuOiJCcnRFbmRTWEZvcm1hdCJ9LDMwNTp7bjoiQnJ0QmVnaW5TWEZvcm1hdHMifSwzMDY6e246IkJydEVu''@;'; put 'put ''ZFN4Rm9ybWF0cyJ9LDMwNzp7bjoiQnJ0QmVnaW5TeFNlbGVjdCJ9LDMwODp7bjoiQnJ0RW5kU3hTZWxlY3QifSwzMDk6e246IkJydEJlZ2luSVNYVkRSd3MifSwzMTA6e246IkJydEVuZElTWFZEUndzIn0sMzExOntuOiJCcnRCZWdpbklTWFZEQ29scyJ9LDMxMjp7bjoiQnJ0RW5kSVNYVkRD''@;'; put 'put ''b2xzIn0sMzEzOntuOiJCcnRFbmRTWExvY2F0aW9uIn0sMzE0OntuOiJCcnRCZWdpblNYTG9jYXRpb24ifSwzMTU6e246IkJydEVuZFNYVmlldyJ9LDMxNjp7bjoiQnJ0QmVnaW5TWFRIcyJ9LDMxNzp7bjoiQnJ0RW5kU1hUSHMifSwzMTg6e246IkJydEJlZ2luU1hUSCJ9LDMxOTp7bjoiQnJ0''@;'; put 'put ''RW5kU1hUSCJ9LDMyMDp7bjoiQnJ0QmVnaW5JU1hUSFJ3cyJ9LDMyMTp7bjoiQnJ0RW5kSVNYVEhSd3MifSwzMjI6e246IkJydEJlZ2luSVNYVEhDb2xzIn0sMzIzOntuOiJCcnRFbmRJU1hUSENvbHMifSwzMjQ6e246IkJydEJlZ2luU1hURE1QUyJ9LDMyNTp7bjoiQnJ0RW5kU1hURE1QcyJ9''@;'; put 'put ''LDMyNjp7bjoiQnJ0QmVnaW5TWFRETVAifSwzMjc6e246IkJydEVuZFNYVERNUCJ9LDMyODp7bjoiQnJ0QmVnaW5TWFRISXRlbXMifSwzMjk6e246IkJydEVuZFNYVEhJdGVtcyJ9LDMzMDp7bjoiQnJ0QmVnaW5TWFRISXRlbSJ9LDMzMTp7bjoiQnJ0RW5kU1hUSEl0ZW0ifSwzMzI6e246IkJy''@;'; put 'put ''dEJlZ2luTWV0YWRhdGEifSwzMzM6e246IkJydEVuZE1ldGFkYXRhIn0sMzM0OntuOiJCcnRCZWdpbkVzbWR0aW5mbyJ9LDMzNTp7bjoiQnJ0TWR0aW5mbyJ9LDMzNjp7bjoiQnJ0RW5kRXNtZHRpbmZvIn0sMzM3OntuOiJCcnRCZWdpbkVzbWRiIn0sMzM4OntuOiJCcnRFbmRFc21kYiJ9LDMz''@;'; put 'put ''OTp7bjoiQnJ0QmVnaW5Fc2ZtZCJ9LDM0MDp7bjoiQnJ0RW5kRXNmbWQifSwzNDE6e246IkJydEJlZ2luU2luZ2xlQ2VsbHMifSwzNDI6e246IkJydEVuZFNpbmdsZUNlbGxzIn0sMzQzOntuOiJCcnRCZWdpbkxpc3QifSwzNDQ6e246IkJydEVuZExpc3QifSwzNDU6e246IkJydEJlZ2luTGlz''@;'; put 'put ''dENvbHMifSwzNDY6e246IkJydEVuZExpc3RDb2xzIn0sMzQ3OntuOiJCcnRCZWdpbkxpc3RDb2wifSwzNDg6e246IkJydEVuZExpc3RDb2wifSwzNDk6e246IkJydEJlZ2luTGlzdFhtbENQciJ9LDM1MDp7bjoiQnJ0RW5kTGlzdFhtbENQciJ9LDM1MTp7bjoiQnJ0TGlzdENDRm1sYSJ9LDM1''@;'; put 'put ''Mjp7bjoiQnJ0TGlzdFRyRm1sYSJ9LDM1Mzp7bjoiQnJ0QmVnaW5FeHRlcm5hbHMifSwzNTQ6e246IkJydEVuZEV4dGVybmFscyJ9LDM1NTp7bjoiQnJ0U3VwQm9va1NyYyIsZjpHZ30sMzU3OntuOiJCcnRTdXBTZWxmIn0sMzU4OntuOiJCcnRTdXBTYW1lIn0sMzU5OntuOiJCcnRTdXBUYWJz''@;'; put 'put ''In0sMzYwOntuOiJCcnRCZWdpblN1cEJvb2sifSwzNjE6e246IkJydFBsYWNlaG9sZGVyTmFtZSJ9LDM2Mjp7bjoiQnJ0RXh0ZXJuU2hlZXQiLGY6Vjh9LDM2Mzp7bjoiQnJ0RXh0ZXJuVGFibGVTdGFydCJ9LDM2NDp7bjoiQnJ0RXh0ZXJuVGFibGVFbmQifSwzNjY6e246IkJydEV4dGVyblJv''@;'; put 'put ''d0hkciJ9LDM2Nzp7bjoiQnJ0RXh0ZXJuQ2VsbEJsYW5rIn0sMzY4OntuOiJCcnRFeHRlcm5DZWxsUmVhbCJ9LDM2OTp7bjoiQnJ0RXh0ZXJuQ2VsbEJvb2wifSwzNzA6e246IkJydEV4dGVybkNlbGxFcnJvciJ9LDM3MTp7bjoiQnJ0RXh0ZXJuQ2VsbFN0cmluZyJ9LDM3Mjp7bjoiQnJ0QmVn''@;'; put 'put ''aW5Fc21keCJ9LDM3Mzp7bjoiQnJ0RW5kRXNtZHgifSwzNzQ6e246IkJydEJlZ2luTWR4U2V0In0sMzc1OntuOiJCcnRFbmRNZHhTZXQifSwzNzY6e246IkJydEJlZ2luTWR4TWJyUHJvcCJ9LDM3Nzp7bjoiQnJ0RW5kTWR4TWJyUHJvcCJ9LDM3ODp7bjoiQnJ0QmVnaW5NZHhLUEkifSwzNzk6''@;'; put 'put ''e246IkJydEVuZE1keEtQSSJ9LDM4MDp7bjoiQnJ0QmVnaW5Fc3N0ciJ9LDM4MTp7bjoiQnJ0RW5kRXNzdHIifSwzODI6e246IkJydEJlZ2luUFJGSXRlbSJ9LDM4Mzp7bjoiQnJ0RW5kUFJGSXRlbSJ9LDM4NDp7bjoiQnJ0QmVnaW5QaXZvdENhY2hlSURzIn0sMzg1OntuOiJCcnRFbmRQaXZv''@;'; put 'put ''dENhY2hlSURzIn0sMzg2OntuOiJCcnRCZWdpblBpdm90Q2FjaGVJRCJ9LDM4Nzp7bjoiQnJ0RW5kUGl2b3RDYWNoZUlEIn0sMzg4OntuOiJCcnRCZWdpbklTWFZJcyJ9LDM4OTp7bjoiQnJ0RW5kSVNYVklzIn0sMzkwOntuOiJCcnRCZWdpbkNvbEluZm9zIn0sMzkxOntuOiJCcnRFbmRDb2xJ''@;'; put 'put ''bmZvcyJ9LDM5Mjp7bjoiQnJ0QmVnaW5Sd0JyayJ9LDM5Mzp7bjoiQnJ0RW5kUndCcmsifSwzOTQ6e246IkJydEJlZ2luQ29sQnJrIn0sMzk1OntuOiJCcnRFbmRDb2xCcmsifSwzOTY6e246IkJydEJyayJ9LDM5Nzp7bjoiQnJ0VXNlckJvb2tWaWV3In0sMzk4OntuOiJCcnRJbmZvIn0sMzk5''@;'; put 'put ''OntuOiJCcnRDVXNyIn0sNDAwOntuOiJCcnRVc3IifSw0MDE6e246IkJydEJlZ2luVXNlcnMifSw0MDM6e246IkJydEVPRiJ9LDQwNDp7bjoiQnJ0VUNSIn0sNDA1OntuOiJCcnRSUkluc0RlbCJ9LDQwNjp7bjoiQnJ0UlJFbmRJbnNEZWwifSw0MDc6e246IkJydFJSTW92ZSJ9LDQwODp7bjoi''@;'; put 'put ''QnJ0UlJFbmRNb3ZlIn0sNDA5OntuOiJCcnRSUkNoZ0NlbGwifSw0MTA6e246IkJydFJSRW5kQ2hnQ2VsbCJ9LDQxMTp7bjoiQnJ0UlJIZWFkZXIifSw0MTI6e246IkJydFJSVXNlclZpZXcifSw0MTM6e246IkJydFJSUmVuU2hlZXQifSw0MTQ6e246IkJydFJSSW5zZXJ0U2gifSw0MTU6e246''@;'; put 'put ''IkJydFJSRGVmTmFtZSJ9LDQxNjp7bjoiQnJ0UlJOb3RlIn0sNDE3OntuOiJCcnRSUkNvbmZsaWN0In0sNDE4OntuOiJCcnRSUlRRU0lGIn0sNDE5OntuOiJCcnRSUkZvcm1hdCJ9LDQyMDp7bjoiQnJ0UlJFbmRGb3JtYXQifSw0MjE6e246IkJydFJSQXV0b0ZtdCJ9LDQyMjp7bjoiQnJ0QmVn''@;'; put 'put ''aW5Vc2VyU2hWaWV3cyJ9LDQyMzp7bjoiQnJ0QmVnaW5Vc2VyU2hWaWV3In0sNDI0OntuOiJCcnRFbmRVc2VyU2hWaWV3In0sNDI1OntuOiJCcnRFbmRVc2VyU2hWaWV3cyJ9LDQyNjp7bjoiQnJ0QXJyRm1sYSIsZjpmdW5jdGlvbiBCMChILGllLFgpe3ZhciB3ZT1ILmwraWUseGU9czkoSCks''@;'; put 'put ''RmU9SC5yZWFkX3NoaWZ0KDEpLFplPVt4ZV07aWYoWmVbMl09RmUsWC5jZWxsRm9ybXVsYSl7dmFyIGplPXBHKEgsd2UtSC5sLFgpO1plWzFdPWplfWVsc2UgSC5sPXdlO3JldHVybiBaZX19LDQyNzp7bjoiQnJ0U2hyRm1sYSIsZjpmdW5jdGlvbiBQMChILGllLFgpe3ZhciB3ZT1ILmwraWUs''@;'; put 'put ''RmU9W3doKEgsMTYpXTtpZihYLmNlbGxGb3JtdWxhKXt2YXIgWmU9bUcoSCx3ZS1ILmwsWCk7RmVbMV09WmUsSC5sPXdlfWVsc2UgSC5sPXdlO3JldHVybiBGZX19LDQyODp7bjoiQnJ0VGFibGUifSw0Mjk6e246IkJydEJlZ2luRXh0Q29ubmVjdGlvbnMifSw0MzA6e246IkJydEVuZEV4dENv''@;'; put 'put ''bm5lY3Rpb25zIn0sNDMxOntuOiJCcnRCZWdpblBDRENhbGNNZW1zIn0sNDMyOntuOiJCcnRFbmRQQ0RDYWxjTWVtcyJ9LDQzMzp7bjoiQnJ0QmVnaW5QQ0RDYWxjTWVtIn0sNDM0OntuOiJCcnRFbmRQQ0RDYWxjTWVtIn0sNDM1OntuOiJCcnRCZWdpblBDREhHTGV2ZWxzIn0sNDM2OntuOiJC''@;'; put 'put ''cnRFbmRQQ0RIR0xldmVscyJ9LDQzNzp7bjoiQnJ0QmVnaW5QQ0RIR0xldmVsIn0sNDM4OntuOiJCcnRFbmRQQ0RIR0xldmVsIn0sNDM5OntuOiJCcnRCZWdpblBDREhHTEdyb3VwcyJ9LDQ0MDp7bjoiQnJ0RW5kUENESEdMR3JvdXBzIn0sNDQxOntuOiJCcnRCZWdpblBDREhHTEdyb3VwIn0s''@;'; put 'put ''NDQyOntuOiJCcnRFbmRQQ0RIR0xHcm91cCJ9LDQ0Mzp7bjoiQnJ0QmVnaW5QQ0RIR0xHTWVtYmVycyJ9LDQ0NDp7bjoiQnJ0RW5kUENESEdMR01lbWJlcnMifSw0NDU6e246IkJydEJlZ2luUENESEdMR01lbWJlciJ9LDQ0Njp7bjoiQnJ0RW5kUENESEdMR01lbWJlciJ9LDQ0Nzp7bjoiQnJ0''@;'; put 'put ''QmVnaW5RU0kifSw0NDg6e246IkJydEVuZFFTSSJ9LDQ0OTp7bjoiQnJ0QmVnaW5RU0lSIn0sNDUwOntuOiJCcnRFbmRRU0lSIn0sNDUxOntuOiJCcnRCZWdpbkRlbGV0ZWROYW1lcyJ9LDQ1Mjp7bjoiQnJ0RW5kRGVsZXRlZE5hbWVzIn0sNDUzOntuOiJCcnRCZWdpbkRlbGV0ZWROYW1lIn0s''@;'; put 'put ''NDU0OntuOiJCcnRFbmREZWxldGVkTmFtZSJ9LDQ1NTp7bjoiQnJ0QmVnaW5RU0lGcyJ9LDQ1Njp7bjoiQnJ0RW5kUVNJRnMifSw0NTc6e246IkJydEJlZ2luUVNJRiJ9LDQ1ODp7bjoiQnJ0RW5kUVNJRiJ9LDQ1OTp7bjoiQnJ0QmVnaW5BdXRvU29ydFNjb3BlIn0sNDYwOntuOiJCcnRFbmRB''@;'; put 'put ''dXRvU29ydFNjb3BlIn0sNDYxOntuOiJCcnRCZWdpbkNvbmRpdGlvbmFsRm9ybWF0dGluZyJ9LDQ2Mjp7bjoiQnJ0RW5kQ29uZGl0aW9uYWxGb3JtYXR0aW5nIn0sNDYzOntuOiJCcnRCZWdpbkNGUnVsZSJ9LDQ2NDp7bjoiQnJ0RW5kQ0ZSdWxlIn0sNDY1OntuOiJCcnRCZWdpbkljb25TZXQi''@;'; put 'put ''fSw0NjY6e246IkJydEVuZEljb25TZXQifSw0Njc6e246IkJydEJlZ2luRGF0YWJhciJ9LDQ2ODp7bjoiQnJ0RW5kRGF0YWJhciJ9LDQ2OTp7bjoiQnJ0QmVnaW5Db2xvclNjYWxlIn0sNDcwOntuOiJCcnRFbmRDb2xvclNjYWxlIn0sNDcxOntuOiJCcnRDRlZPIn0sNDcyOntuOiJCcnRFeHRl''@;'; put 'put ''cm5WYWx1ZU1ldGEifSw0NzM6e246IkJydEJlZ2luQ29sb3JQYWxldHRlIn0sNDc0OntuOiJCcnRFbmRDb2xvclBhbGV0dGUifSw0NzU6e246IkJydEluZGV4ZWRDb2xvciJ9LDQ3Njp7bjoiQnJ0TWFyZ2lucyIsZjpmdW5jdGlvbiBWbShIKXt2YXIgaWU9e307cmV0dXJuIHdpLmZvckVhY2go''@;'; put 'put ''ZnVuY3Rpb24oWCl7aWVbWF09STIoSCl9KSxpZX19LDQ3Nzp7bjoiQnJ0UHJpbnRPcHRpb25zIn0sNDc4OntuOiJCcnRQYWdlU2V0dXAifSw0Nzk6e246IkJydEJlZ2luSGVhZGVyRm9vdGVyIn0sNDgwOntuOiJCcnRFbmRIZWFkZXJGb290ZXIifSw0ODE6e246IkJydEJlZ2luU1hDcnRGb3Jt''@;'; put 'put ''YXQifSw0ODI6e246IkJydEVuZFNYQ3J0Rm9ybWF0In0sNDgzOntuOiJCcnRCZWdpblNYQ3J0Rm9ybWF0cyJ9LDQ4NDp7bjoiQnJ0RW5kU1hDcnRGb3JtYXRzIn0sNDg1OntuOiJCcnRXc0ZtdEluZm8iLGY6ZnVuY3Rpb24gblAoSCl7dmFyIGllPXt9LFg9e30sd2U9e30seGU9SC5yZWFkX3No''@;'; put 'put ''aWZ0KDQpLEZlPUgucmVhZF9zaGlmdCgyKTt3ZS53Y2g9eGU8PTY1NTM2P3hlLzI1NjpGZTt2YXIgWmU9SC5yZWFkX3NoaWZ0KDIpO1guaHB0PVplLzIwO3ZhciBqZT1ILnJlYWRfc2hpZnQoMik7cmV0dXJuIDImamUmJihYLmhpZGRlbj0hMCksNCZqZSYmKGllLnRvcHRoaWNrPSEwKSw4Jmpl''@;'; put 'put ''JiYoaWUuYm90dGhpY2s9ITApLGllLnJvd291dGxpbmU9SC5yZWFkX3NoaWZ0KDEpLGllLmNvbG91dGxpbmU9SC5yZWFkX3NoaWZ0KDEpLEo4KFgpLGllLnJvdz1YLHljKHdlKSxpZS5jb2w9d2UsaWV9fSw0ODY6e246IkJydEJlZ2luTWdzIn0sNDg3OntuOiJCcnRFbmRNR3MifSw0ODg6e246''@;'; put 'put ''IkJydEJlZ2luTUdNYXBzIn0sNDg5OntuOiJCcnRFbmRNR01hcHMifSw0OTA6e246IkJydEJlZ2luTUcifSw0OTE6e246IkJydEVuZE1HIn0sNDkyOntuOiJCcnRCZWdpbk1hcCJ9LDQ5Mzp7bjoiQnJ0RW5kTWFwIn0sNDk0OntuOiJCcnRITGluayIsZjpmdW5jdGlvbiBGXyhILGllKXt2YXIg''@;'; put 'put ''WD1ILmwraWUsd2U9d2goSCwxNikseGU9eWgoSCksRmU9eHUoSCksWmU9eHUoSCksamU9eHUoSCk7SC5sPVg7dmFyIFllPXtyZng6d2UscmVsSWQ6eGUsbG9jOkZlLGRpc3BsYXk6amV9O3JldHVybiBaZSYmKFllLlRvb2x0aXA9WmUpLFllfX0sNDk1OntuOiJCcnRCZWdpbkRDb24ifSw0OTY6''@;'; put 'put ''e246IkJydEVuZERDb24ifSw0OTc6e246IkJydEJlZ2luRFJlZnMifSw0OTg6e246IkJydEVuZERSZWZzIn0sNDk5OntuOiJCcnREUmVmIn0sNTAwOntuOiJCcnRCZWdpblNjZW5NYW4ifSw1MDE6e246IkJydEVuZFNjZW5NYW4ifSw1MDI6e246IkJydEJlZ2luU2N0In0sNTAzOntuOiJCcnRF''@;'; put 'put ''bmRTY3QifSw1MDQ6e246IkJydFNsYyJ9LDUwNTp7bjoiQnJ0QmVnaW5EWEZzIn0sNTA2OntuOiJCcnRFbmREWEZzIn0sNTA3OntuOiJCcnREWEYifSw1MDg6e246IkJydEJlZ2luVGFibGVTdHlsZXMifSw1MDk6e246IkJydEVuZFRhYmxlU3R5bGVzIn0sNTEwOntuOiJCcnRCZWdpblRhYmxl''@;'; put 'put ''U3R5bGUifSw1MTE6e246IkJydEVuZFRhYmxlU3R5bGUifSw1MTI6e246IkJydFRhYmxlU3R5bGVFbGVtZW50In0sNTEzOntuOiJCcnRUYWJsZVN0eWxlQ2xpZW50In0sNTE0OntuOiJCcnRCZWdpblZvbERlcHMifSw1MTU6e246IkJydEVuZFZvbERlcHMifSw1MTY6e246IkJydEJlZ2luVm9s''@;'; put 'put ''VHlwZSJ9LDUxNzp7bjoiQnJ0RW5kVm9sVHlwZSJ9LDUxODp7bjoiQnJ0QmVnaW5Wb2xNYWluIn0sNTE5OntuOiJCcnRFbmRWb2xNYWluIn0sNTIwOntuOiJCcnRCZWdpblZvbFRvcGljIn0sNTIxOntuOiJCcnRFbmRWb2xUb3BpYyJ9LDUyMjp7bjoiQnJ0Vm9sU3VidG9waWMifSw1MjM6e246''@;'; put 'put ''IkJydFZvbFJlZiJ9LDUyNDp7bjoiQnJ0Vm9sTnVtIn0sNTI1OntuOiJCcnRWb2xFcnIifSw1MjY6e246IkJydFZvbFN0ciJ9LDUyNzp7bjoiQnJ0Vm9sQm9vbCJ9LDUyODp7bjoiQnJ0QmVnaW5DYWxjQ2hhaW4kIn0sNTI5OntuOiJCcnRFbmRDYWxjQ2hhaW4kIn0sNTMwOntuOiJCcnRCZWdp''@;'; put 'put ''blNvcnRTdGF0ZSJ9LDUzMTp7bjoiQnJ0RW5kU29ydFN0YXRlIn0sNTMyOntuOiJCcnRCZWdpblNvcnRDb25kIn0sNTMzOntuOiJCcnRFbmRTb3J0Q29uZCJ9LDUzNDp7bjoiQnJ0Qm9va1Byb3RlY3Rpb24ifSw1MzU6e246IkJydFNoZWV0UHJvdGVjdGlvbiJ9LDUzNjp7bjoiQnJ0UmFuZ2VQ''@;'; put 'put ''cm90ZWN0aW9uIn0sNTM3OntuOiJCcnRQaG9uZXRpY0luZm8ifSw1Mzg6e246IkJydEJlZ2luRUNUeHRXaXoifSw1Mzk6e246IkJydEVuZEVDVHh0V2l6In0sNTQwOntuOiJCcnRCZWdpbkVDVFdGbGRJbmZvTHN0In0sNTQxOntuOiJCcnRFbmRFQ1RXRmxkSW5mb0xzdCJ9LDU0Mjp7bjoiQnJ0''@;'; put 'put ''QmVnaW5FQ1R3RmxkSW5mbyJ9LDU0ODp7bjoiQnJ0RmlsZVNoYXJpbmcifSw1NDk6e246IkJydE9sZVNpemUifSw1NTA6e246IkJydERyYXdpbmciLGY6R2d9LDU1MTp7bjoiQnJ0TGVnYWN5RHJhd2luZyJ9LDU1Mjp7bjoiQnJ0TGVnYWN5RHJhd2luZ0hGIn0sNTUzOntuOiJCcnRXZWJPcHQi''@;'; put 'put ''fSw1NTQ6e246IkJydEJlZ2luV2ViUHViSXRlbXMifSw1NTU6e246IkJydEVuZFdlYlB1Ykl0ZW1zIn0sNTU2OntuOiJCcnRCZWdpbldlYlB1Ykl0ZW0ifSw1NTc6e246IkJydEVuZFdlYlB1Ykl0ZW0ifSw1NTg6e246IkJydEJlZ2luU1hDb25kRm10In0sNTU5OntuOiJCcnRFbmRTWENvbmRG''@;'; put 'put ''bXQifSw1NjA6e246IkJydEJlZ2luU1hDb25kRm10cyJ9LDU2MTp7bjoiQnJ0RW5kU1hDb25kRm10cyJ9LDU2Mjp7bjoiQnJ0QmtIaW0ifSw1NjQ6e246IkJydENvbG9yIn0sNTY1OntuOiJCcnRCZWdpbkluZGV4ZWRDb2xvcnMifSw1NjY6e246IkJydEVuZEluZGV4ZWRDb2xvcnMifSw1Njk6''@;'; put 'put ''e246IkJydEJlZ2luTVJVQ29sb3JzIn0sNTcwOntuOiJCcnRFbmRNUlVDb2xvcnMifSw1NzI6e246IkJydE1SVUNvbG9yIn0sNTczOntuOiJCcnRCZWdpbkRWYWxzIn0sNTc0OntuOiJCcnRFbmREVmFscyJ9LDU3Nzp7bjoiQnJ0U3VwTmFtZVN0YXJ0In0sNTc4OntuOiJCcnRTdXBOYW1lVmFs''@;'; put 'put ''dWVTdGFydCJ9LDU3OTp7bjoiQnJ0U3VwTmFtZVZhbHVlRW5kIn0sNTgwOntuOiJCcnRTdXBOYW1lTnVtIn0sNTgxOntuOiJCcnRTdXBOYW1lRXJyIn0sNTgyOntuOiJCcnRTdXBOYW1lU3QifSw1ODM6e246IkJydFN1cE5hbWVOaWwifSw1ODQ6e246IkJydFN1cE5hbWVCb29sIn0sNTg1Ontu''@;'; put 'put ''OiJCcnRTdXBOYW1lRm1sYSJ9LDU4Njp7bjoiQnJ0U3VwTmFtZUJpdHMifSw1ODc6e246IkJydFN1cE5hbWVFbmQifSw1ODg6e246IkJydEVuZFN1cEJvb2sifSw1ODk6e246IkJydENlbGxTbWFydFRhZ1Byb3BlcnR5In0sNTkwOntuOiJCcnRCZWdpbkNlbGxTbWFydFRhZyJ9LDU5MTp7bjoi''@;'; put 'put ''QnJ0RW5kQ2VsbFNtYXJ0VGFnIn0sNTkyOntuOiJCcnRCZWdpbkNlbGxTbWFydFRhZ3MifSw1OTM6e246IkJydEVuZENlbGxTbWFydFRhZ3MifSw1OTQ6e246IkJydEJlZ2luU21hcnRUYWdzIn0sNTk1OntuOiJCcnRFbmRTbWFydFRhZ3MifSw1OTY6e246IkJydFNtYXJ0VGFnVHlwZSJ9LDU5''@;'; put 'put ''Nzp7bjoiQnJ0QmVnaW5TbWFydFRhZ1R5cGVzIn0sNTk4OntuOiJCcnRFbmRTbWFydFRhZ1R5cGVzIn0sNTk5OntuOiJCcnRCZWdpblNYRmlsdGVycyJ9LDYwMDp7bjoiQnJ0RW5kU1hGaWx0ZXJzIn0sNjAxOntuOiJCcnRCZWdpblNYRklMVEVSIn0sNjAyOntuOiJCcnRFbmRTWEZpbHRlciJ9''@;'; put 'put ''LDYwMzp7bjoiQnJ0QmVnaW5GaWxscyJ9LDYwNDp7bjoiQnJ0RW5kRmlsbHMifSw2MDU6e246IkJydEJlZ2luQ2VsbFdhdGNoZXMifSw2MDY6e246IkJydEVuZENlbGxXYXRjaGVzIn0sNjA3OntuOiJCcnRDZWxsV2F0Y2gifSw2MDg6e246IkJydEJlZ2luQ1JFcnJzIn0sNjA5OntuOiJCcnRF''@;'; put 'put ''bmRDUkVycnMifSw2MTA6e246IkJydENyYXNoUmVjRXJyIn0sNjExOntuOiJCcnRCZWdpbkZvbnRzIn0sNjEyOntuOiJCcnRFbmRGb250cyJ9LDYxMzp7bjoiQnJ0QmVnaW5Cb3JkZXJzIn0sNjE0OntuOiJCcnRFbmRCb3JkZXJzIn0sNjE1OntuOiJCcnRCZWdpbkZtdHMifSw2MTY6e246IkJy''@;'; put 'put ''dEVuZEZtdHMifSw2MTc6e246IkJydEJlZ2luQ2VsbFhGcyJ9LDYxODp7bjoiQnJ0RW5kQ2VsbFhGcyJ9LDYxOTp7bjoiQnJ0QmVnaW5TdHlsZXMifSw2MjA6e246IkJydEVuZFN0eWxlcyJ9LDYyNTp7bjoiQnJ0QmlnTmFtZSJ9LDYyNjp7bjoiQnJ0QmVnaW5DZWxsU3R5bGVYRnMifSw2Mjc6''@;'; put 'put ''e246IkJydEVuZENlbGxTdHlsZVhGcyJ9LDYyODp7bjoiQnJ0QmVnaW5Db21tZW50cyJ9LDYyOTp7bjoiQnJ0RW5kQ29tbWVudHMifSw2MzA6e246IkJydEJlZ2luQ29tbWVudEF1dGhvcnMifSw2MzE6e246IkJydEVuZENvbW1lbnRBdXRob3JzIn0sNjMyOntuOiJCcnRDb21tZW50QXV0aG9y''@;'; put 'put ''IixmOmJmfSw2MzM6e246IkJydEJlZ2luQ29tbWVudExpc3QifSw2MzQ6e246IkJydEVuZENvbW1lbnRMaXN0In0sNjM1OntuOiJCcnRCZWdpbkNvbW1lbnQiLGY6ZnVuY3Rpb24gWTkoSCl7dmFyIGllPXt9O2llLmlhdXRob3I9SC5yZWFkX3NoaWZ0KDQpO3ZhciBYPXdoKEgsMTYpO3JldHVy''@;'; put 'put ''biBpZS5yZng9WC5zLGllLnJlZj1ZMChYLnMpLEgubCs9MTYsaWV9fSw2MzY6e246IkJydEVuZENvbW1lbnQifSw2Mzc6e246IkJydENvbW1lbnRUZXh0IixmOlZmfSw2Mzg6e246IkJydEJlZ2luT2xlT2JqZWN0cyJ9LDYzOTp7bjoiQnJ0T2xlT2JqZWN0In0sNjQwOntuOiJCcnRFbmRPbGVP''@;'; put 'put ''YmplY3RzIn0sNjQxOntuOiJCcnRCZWdpblN4cnVsZXMifSw2NDI6e246IkJydEVuZFN4UnVsZXMifSw2NDM6e246IkJydEJlZ2luQWN0aXZlWENvbnRyb2xzIn0sNjQ0OntuOiJCcnRBY3RpdmVYIn0sNjQ1OntuOiJCcnRFbmRBY3RpdmVYQ29udHJvbHMifSw2NDY6e246IkJydEJlZ2luUENE''@;'; put 'put ''U0RUQ0VNZW1iZXJzU29ydEJ5In0sNjQ4OntuOiJCcnRCZWdpbkNlbGxJZ25vcmVFQ3MifSw2NDk6e246IkJydENlbGxJZ25vcmVFQyJ9LDY1MDp7bjoiQnJ0RW5kQ2VsbElnbm9yZUVDcyJ9LDY1MTp7bjoiQnJ0Q3NQcm9wIixmOmZ1bmN0aW9uIEh4KEgsaWUpe3JldHVybiBILmwrPTEwLHtu''@;'; put 'put ''YW1lOnh1KEgpfX19LDY1Mjp7bjoiQnJ0Q3NQYWdlU2V0dXAifSw2NTM6e246IkJydEJlZ2luVXNlckNzVmlld3MifSw2NTQ6e246IkJydEVuZFVzZXJDc1ZpZXdzIn0sNjU1OntuOiJCcnRCZWdpblVzZXJDc1ZpZXcifSw2NTY6e246IkJydEVuZFVzZXJDc1ZpZXcifSw2NTc6e246IkJydEJl''@;'; put 'put ''Z2luUGNkU0ZDSUVudHJpZXMifSw2NTg6e246IkJydEVuZFBDRFNGQ0lFbnRyaWVzIn0sNjU5OntuOiJCcnRQQ0RTRkNJRW50cnkifSw2NjA6e246IkJydEJlZ2luTGlzdFBhcnRzIn0sNjYxOntuOiJCcnRMaXN0UGFydCJ9LDY2Mjp7bjoiQnJ0RW5kTGlzdFBhcnRzIn0sNjYzOntuOiJCcnRT''@;'; put 'put ''aGVldENhbGNQcm9wIn0sNjY0OntuOiJCcnRCZWdpbkZuR3JvdXAifSw2NjU6e246IkJydEZuR3JvdXAifSw2NjY6e246IkJydEVuZEZuR3JvdXAifSw2Njc6e246IkJydFN1cEFkZGluIn0sNjY4OntuOiJCcnRTWFRETVBPcmRlciJ9LDY2OTp7bjoiQnJ0Q3NQcm90ZWN0aW9uIn0sNjcxOntu''@;'; put 'put ''OiJCcnRCZWdpbldzU29ydE1hcCJ9LDY3Mjp7bjoiQnJ0RW5kV3NTb3J0TWFwIn0sNjczOntuOiJCcnRCZWdpblJSU29ydCJ9LDY3NDp7bjoiQnJ0RW5kUlJTb3J0In0sNjc1OntuOiJCcnRSUlNvcnRJdGVtIn0sNjc2OntuOiJCcnRGaWxlU2hhcmluZ0lzbyJ9LDY3Nzp7bjoiQnJ0Qm9va1By''@;'; put 'put ''b3RlY3Rpb25Jc28ifSw2Nzg6e246IkJydFNoZWV0UHJvdGVjdGlvbklzbyJ9LDY3OTp7bjoiQnJ0Q3NQcm90ZWN0aW9uSXNvIn0sNjgwOntuOiJCcnRSYW5nZVByb3RlY3Rpb25Jc28ifSw2ODE6e246IkJydERWYWxMaXN0In0sMTAyNDp7bjoiQnJ0UndEZXNjZW50In0sMTAyNTp7bjoiQnJ0''@;'; put 'put ''S25vd25Gb250cyJ9LDEwMjY6e246IkJydEJlZ2luU1hUdXBsZVNldCJ9LDEwMjc6e246IkJydEVuZFNYVHVwbGVTZXQifSwxMDI4OntuOiJCcnRCZWdpblNYVHVwbGVTZXRIZWFkZXIifSwxMDI5OntuOiJCcnRFbmRTWFR1cGxlU2V0SGVhZGVyIn0sMTAzMDp7bjoiQnJ0U1hUdXBsZVNldEhl''@;'; put 'put ''YWRlckl0ZW0ifSwxMDMxOntuOiJCcnRCZWdpblNYVHVwbGVTZXREYXRhIn0sMTAzMjp7bjoiQnJ0RW5kU1hUdXBsZVNldERhdGEifSwxMDMzOntuOiJCcnRCZWdpblNYVHVwbGVTZXRSb3cifSwxMDM0OntuOiJCcnRFbmRTWFR1cGxlU2V0Um93In0sMTAzNTp7bjoiQnJ0U1hUdXBsZVNldFJv''@;'; put 'put ''d0l0ZW0ifSwxMDM2OntuOiJCcnROYW1lRXh0In0sMTAzNzp7bjoiQnJ0UENESDE0In0sMTAzODp7bjoiQnJ0QmVnaW5QQ0RDYWxjTWVtMTQifSwxMDM5OntuOiJCcnRFbmRQQ0RDYWxjTWVtMTQifSwxMDQwOntuOiJCcnRTWFRIMTQifSwxMDQxOntuOiJCcnRCZWdpblNwYXJrbGluZUdyb3Vw''@;'; put 'put ''In0sMTA0Mjp7bjoiQnJ0RW5kU3BhcmtsaW5lR3JvdXAifSwxMDQzOntuOiJCcnRTcGFya2xpbmUifSwxMDQ0OntuOiJCcnRTWERJMTQifSwxMDQ1OntuOiJCcnRXc0ZtdEluZm9FeDE0In0sMTA0Njp7bjoiQnJ0QmVnaW5Db25kaXRpb25hbEZvcm1hdHRpbmcxNCJ9LDEwNDc6e246IkJydEVu''@;'; put 'put ''ZENvbmRpdGlvbmFsRm9ybWF0dGluZzE0In0sMTA0ODp7bjoiQnJ0QmVnaW5DRlJ1bGUxNCJ9LDEwNDk6e246IkJydEVuZENGUnVsZTE0In0sMTA1MDp7bjoiQnJ0Q0ZWTzE0In0sMTA1MTp7bjoiQnJ0QmVnaW5EYXRhYmFyMTQifSwxMDUyOntuOiJCcnRCZWdpbkljb25TZXQxNCJ9LDEwNTM6''@;'; put 'put ''e246IkJydERWYWwxNCIsZjpmdW5jdGlvbiBzUChILGllLFgpe3ZhciB3ZT1mdW5jdGlvbiB0cihILGllLFgpe3ZhciB3ZT1ILnJlYWRfc2hpZnQoNCkseGU9e307cmV0dXJuIDEmd2UmJih4ZS5yZWZzPWZ1bmN0aW9uIGVpKEgpe2Zvcih2YXIgaWU9SC5yZWFkX3NoaWZ0KDQpLFg9W107aWUt''@;'; put 'put ''LSA+MDspWC5wdXNoKFlpKEgpKTtyZXR1cm4gWH0oSCkpLDImd2UmJih4ZS5zcXJlZnM9ZnVuY3Rpb24gZGEoSCl7Zm9yKHZhciBpZT1ILnJlYWRfc2hpZnQoNCksWD1bXTtpZS0tID4wOylYLnB1c2goemEoSCkpO3JldHVybiBYfShIKSksNCZ3ZSYmKHhlLmZvcm11bGFzPWZ1bmN0aW9uIEZz''@;'; put 'put ''KEgsaWUsWCl7Zm9yKHZhciB3ZT1ILnJlYWRfc2hpZnQoNCkseGU9W107d2UtLSA+MDspeGUucHVzaChLdShILDAsWCkpO3JldHVybiB4ZX0oSCwwLFgpKSw4JndlJiYoeGUucmVsSUQ9ZnVuY3Rpb24gVHUoSCl7dmFyIGllPUgucmVhZF9zaGlmdCgyKTtyZXR1cm4gMD09PWllPyIiOkgucmVh''@;'; put 'put ''ZF9zaGlmdChpZSwidXRmMTZsZSIpfShIKSkseGV9KEgsMCxYKSx4ZT1ILnJlYWRfc2hpZnQoNCksRmU9eWgoSCksWmU9eWgoSCksamU9eWgoSCksWWU9eWgoSCksTXQ9KHdlLmZvcm11bGFzfHxbXSlbMF0seHQ9KHdlLmZvcm11bGFzfHxbXSlbMV0sUnQ9MTUmeGUsVXQ9e3Q6am1bUnRdLHNx''@;'; put 'put ''cmZ4OndlLnNxcmVmc1swXSxzOltGZSxaZSxqZSxZZV19O3JldHVybiBNdCYmKFV0LmYxPU10KSx4dCYmKFV0LmYyPXh0KSwwPT1SdHx8Mz09UnR8fDc9PVJ0fHwoVXQub3A9Q0FbeGU+PjIwJjE1XSksVXR9fSwxMDU0OntuOiJCcnRCZWdpbkRWYWxzMTQifSwxMDU1OntuOiJCcnRDb2xvcjE0''@;'; put 'put ''In0sMTA1Njp7bjoiQnJ0QmVnaW5TcGFya2xpbmVzIn0sMTA1Nzp7bjoiQnJ0RW5kU3BhcmtsaW5lcyJ9LDEwNTg6e246IkJydEJlZ2luU3BhcmtsaW5lR3JvdXBzIn0sMTA1OTp7bjoiQnJ0RW5kU3BhcmtsaW5lR3JvdXBzIn0sMTA2MTp7bjoiQnJ0U1hWRDE0In0sMTA2Mjp7bjoiQnJ0QmVn''@;'; put 'put ''aW5TWFZpZXcxNCJ9LDEwNjM6e246IkJydEVuZFNYVmlldzE0In0sMTA2NDp7bjoiQnJ0QmVnaW5TWFZpZXcxNiJ9LDEwNjU6e246IkJydEVuZFNYVmlldzE2In0sMTA2Njp7bjoiQnJ0QmVnaW5QQ0QxNCJ9LDEwNjc6e246IkJydEVuZFBDRDE0In0sMTA2ODp7bjoiQnJ0QmVnaW5FeHRDb25u''@;'; put 'put ''MTQifSwxMDY5OntuOiJCcnRFbmRFeHRDb25uMTQifSwxMDcwOntuOiJCcnRCZWdpblNsaWNlckNhY2hlSURzIn0sMTA3MTp7bjoiQnJ0RW5kU2xpY2VyQ2FjaGVJRHMifSwxMDcyOntuOiJCcnRCZWdpblNsaWNlckNhY2hlSUQifSwxMDczOntuOiJCcnRFbmRTbGljZXJDYWNoZUlEIn0sMTA3''@;'; put 'put ''NTp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZSJ9LDEwNzY6e246IkJydEVuZFNsaWNlckNhY2hlIn0sMTA3Nzp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZURlZiJ9LDEwNzg6e246IkJydEVuZFNsaWNlckNhY2hlRGVmIn0sMTA3OTp7bjoiQnJ0QmVnaW5TbGljZXJzRXgifSwxMDgwOntuOiJCcnRF''@;'; put 'put ''bmRTbGljZXJzRXgifSwxMDgxOntuOiJCcnRCZWdpblNsaWNlckV4In0sMTA4Mjp7bjoiQnJ0RW5kU2xpY2VyRXgifSwxMDgzOntuOiJCcnRCZWdpblNsaWNlciJ9LDEwODQ6e246IkJydEVuZFNsaWNlciJ9LDEwODU6e246IkJydFNsaWNlckNhY2hlUGl2b3RUYWJsZXMifSwxMDg2OntuOiJC''@;'; put 'put ''cnRCZWdpblNsaWNlckNhY2hlT2xhcEltcGwifSwxMDg3OntuOiJCcnRFbmRTbGljZXJDYWNoZU9sYXBJbXBsIn0sMTA4ODp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZUxldmVsc0RhdGEifSwxMDg5OntuOiJCcnRFbmRTbGljZXJDYWNoZUxldmVsc0RhdGEifSwxMDkwOntuOiJCcnRCZWdpblNs''@;'; put 'put ''aWNlckNhY2hlTGV2ZWxEYXRhIn0sMTA5MTp7bjoiQnJ0RW5kU2xpY2VyQ2FjaGVMZXZlbERhdGEifSwxMDkyOntuOiJCcnRCZWdpblNsaWNlckNhY2hlU2lSYW5nZXMifSwxMDkzOntuOiJCcnRFbmRTbGljZXJDYWNoZVNpUmFuZ2VzIn0sMTA5NDp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZVNp''@;'; put 'put ''UmFuZ2UifSwxMDk1OntuOiJCcnRFbmRTbGljZXJDYWNoZVNpUmFuZ2UifSwxMDk2OntuOiJCcnRTbGljZXJDYWNoZU9sYXBJdGVtIn0sMTA5Nzp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZVNlbGVjdGlvbnMifSwxMDk4OntuOiJCcnRTbGljZXJDYWNoZVNlbGVjdGlvbiJ9LDEwOTk6e246IkJy''@;'; put 'put ''dEVuZFNsaWNlckNhY2hlU2VsZWN0aW9ucyJ9LDExMDA6e246IkJydEJlZ2luU2xpY2VyQ2FjaGVOYXRpdmUifSwxMTAxOntuOiJCcnRFbmRTbGljZXJDYWNoZU5hdGl2ZSJ9LDExMDI6e246IkJydFNsaWNlckNhY2hlTmF0aXZlSXRlbSJ9LDExMDM6e246IkJydFJhbmdlUHJvdGVjdGlvbjE0''@;'; put 'put ''In0sMTEwNDp7bjoiQnJ0UmFuZ2VQcm90ZWN0aW9uSXNvMTQifSwxMTA1OntuOiJCcnRDZWxsSWdub3JlRUMxNCJ9LDExMTE6e246IkJydExpc3QxNCJ9LDExMTI6e246IkJydENGSWNvbiJ9LDExMTM6e246IkJydEJlZ2luU2xpY2VyQ2FjaGVzUGl2b3RDYWNoZUlEcyJ9LDExMTQ6e246IkJy''@;'; put 'put ''dEVuZFNsaWNlckNhY2hlc1Bpdm90Q2FjaGVJRHMifSwxMTE1OntuOiJCcnRCZWdpblNsaWNlcnMifSwxMTE2OntuOiJCcnRFbmRTbGljZXJzIn0sMTExNzp7bjoiQnJ0V2JQcm9wMTQifSwxMTE4OntuOiJCcnRCZWdpblNYRWRpdCJ9LDExMTk6e246IkJydEVuZFNYRWRpdCJ9LDExMjA6e246''@;'; put 'put ''IkJydEJlZ2luU1hFZGl0cyJ9LDExMjE6e246IkJydEVuZFNYRWRpdHMifSwxMTIyOntuOiJCcnRCZWdpblNYQ2hhbmdlIn0sMTEyMzp7bjoiQnJ0RW5kU1hDaGFuZ2UifSwxMTI0OntuOiJCcnRCZWdpblNYQ2hhbmdlcyJ9LDExMjU6e246IkJydEVuZFNYQ2hhbmdlcyJ9LDExMjY6e246IkJy''@;'; put 'put ''dFNYVHVwbGVJdGVtcyJ9LDExMjg6e246IkJydEJlZ2luU2xpY2VyU3R5bGUifSwxMTI5OntuOiJCcnRFbmRTbGljZXJTdHlsZSJ9LDExMzA6e246IkJydFNsaWNlclN0eWxlRWxlbWVudCJ9LDExMzE6e246IkJydEJlZ2luU3R5bGVTaGVldEV4dDE0In0sMTEzMjp7bjoiQnJ0RW5kU3R5bGVT''@;'; put 'put ''aGVldEV4dDE0In0sMTEzMzp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZXNQaXZvdENhY2hlSUQifSwxMTM0OntuOiJCcnRFbmRTbGljZXJDYWNoZXNQaXZvdENhY2hlSUQifSwxMTM1OntuOiJCcnRCZWdpbkNvbmRpdGlvbmFsRm9ybWF0dGluZ3MifSwxMTM2OntuOiJCcnRFbmRDb25kaXRpb25h''@;'; put 'put ''bEZvcm1hdHRpbmdzIn0sMTEzNzp7bjoiQnJ0QmVnaW5QQ0RDYWxjTWVtRXh0In0sMTEzODp7bjoiQnJ0RW5kUENEQ2FsY01lbUV4dCJ9LDExMzk6e246IkJydEJlZ2luUENEQ2FsY01lbXNFeHQifSwxMTQwOntuOiJCcnRFbmRQQ0RDYWxjTWVtc0V4dCJ9LDExNDE6e246IkJydFBDREZpZWxk''@;'; put 'put ''MTQifSwxMTQyOntuOiJCcnRCZWdpblNsaWNlclN0eWxlcyJ9LDExNDM6e246IkJydEVuZFNsaWNlclN0eWxlcyJ9LDExNDQ6e246IkJydEJlZ2luU2xpY2VyU3R5bGVFbGVtZW50cyJ9LDExNDU6e246IkJydEVuZFNsaWNlclN0eWxlRWxlbWVudHMifSwxMTQ2OntuOiJCcnRDRlJ1bGVFeHQi''@;'; put 'put ''fSwxMTQ3OntuOiJCcnRCZWdpblNYQ29uZEZtdDE0In0sMTE0ODp7bjoiQnJ0RW5kU1hDb25kRm10MTQifSwxMTQ5OntuOiJCcnRCZWdpblNYQ29uZEZtdHMxNCJ9LDExNTA6e246IkJydEVuZFNYQ29uZEZtdHMxNCJ9LDExNTI6e246IkJydEJlZ2luU29ydENvbmQxNCJ9LDExNTM6e246IkJy''@;'; put 'put ''dEVuZFNvcnRDb25kMTQifSwxMTU0OntuOiJCcnRFbmREVmFsczE0In0sMTE1NTp7bjoiQnJ0RW5kSWNvblNldDE0In0sMTE1Njp7bjoiQnJ0RW5kRGF0YWJhcjE0In0sMTE1Nzp7bjoiQnJ0QmVnaW5Db2xvclNjYWxlMTQifSwxMTU4OntuOiJCcnRFbmRDb2xvclNjYWxlMTQifSwxMTU5Ontu''@;'; put 'put ''OiJCcnRCZWdpblN4cnVsZXMxNCJ9LDExNjA6e246IkJydEVuZFN4cnVsZXMxNCJ9LDExNjE6e246IkJydEJlZ2luUFJ1bGUxNCJ9LDExNjI6e246IkJydEVuZFBSdWxlMTQifSwxMTYzOntuOiJCcnRCZWdpblBSRmlsdGVyczE0In0sMTE2NDp7bjoiQnJ0RW5kUFJGaWx0ZXJzMTQifSwxMTY1''@;'; put 'put ''OntuOiJCcnRCZWdpblBSRmlsdGVyMTQifSwxMTY2OntuOiJCcnRFbmRQUkZpbHRlcjE0In0sMTE2Nzp7bjoiQnJ0QmVnaW5QUkZJdGVtMTQifSwxMTY4OntuOiJCcnRFbmRQUkZJdGVtMTQifSwxMTY5OntuOiJCcnRCZWdpbkNlbGxJZ25vcmVFQ3MxNCJ9LDExNzA6e246IkJydEVuZENlbGxJ''@;'; put 'put ''Z25vcmVFQ3MxNCJ9LDExNzE6e246IkJydER4ZjE0In0sMTE3Mjp7bjoiQnJ0QmVnaW5EeEYxNHMifSwxMTczOntuOiJCcnRFbmREeGYxNHMifSwxMTc3OntuOiJCcnRGaWx0ZXIxNCJ9LDExNzg6e246IkJydEJlZ2luQ3VzdG9tRmlsdGVyczE0In0sMTE4MDp7bjoiQnJ0Q3VzdG9tRmlsdGVy''@;'; put 'put ''MTQifSwxMTgxOntuOiJCcnRJY29uRmlsdGVyMTQifSwxMTgyOntuOiJCcnRQaXZvdENhY2hlQ29ubmVjdGlvbk5hbWUifSwyMDQ4OntuOiJCcnRCZWdpbkRlY291cGxlZFBpdm90Q2FjaGVJRHMifSwyMDQ5OntuOiJCcnRFbmREZWNvdXBsZWRQaXZvdENhY2hlSURzIn0sMjA1MDp7bjoiQnJ0''@;'; put 'put ''RGVjb3VwbGVkUGl2b3RDYWNoZUlEIn0sMjA1MTp7bjoiQnJ0QmVnaW5QaXZvdFRhYmxlUmVmcyJ9LDIwNTI6e246IkJydEVuZFBpdm90VGFibGVSZWZzIn0sMjA1Mzp7bjoiQnJ0UGl2b3RUYWJsZVJlZiJ9LDIwNTQ6e246IkJydFNsaWNlckNhY2hlQm9va1Bpdm90VGFibGVzIn0sMjA1NTp7''@;'; put 'put ''bjoiQnJ0QmVnaW5TeHZjZWxscyJ9LDIwNTY6e246IkJydEVuZFN4dmNlbGxzIn0sMjA1Nzp7bjoiQnJ0QmVnaW5TeFJvdyJ9LDIwNTg6e246IkJydEVuZFN4Um93In0sMjA2MDp7bjoiQnJ0UGNkQ2FsY01lbTE1In0sMjA2Nzp7bjoiQnJ0UXNpMTUifSwyMDY4OntuOiJCcnRCZWdpbldlYkV4''@;'; put 'put ''dGVuc2lvbnMifSwyMDY5OntuOiJCcnRFbmRXZWJFeHRlbnNpb25zIn0sMjA3MDp7bjoiQnJ0V2ViRXh0ZW5zaW9uIn0sMjA3MTp7bjoiQnJ0QWJzUGF0aDE1In0sMjA3Mjp7bjoiQnJ0QmVnaW5QaXZvdFRhYmxlVUlTZXR0aW5ncyJ9LDIwNzM6e246IkJydEVuZFBpdm90VGFibGVVSVNldHRp''@;'; put 'put ''bmdzIn0sMjA3NTp7bjoiQnJ0VGFibGVTbGljZXJDYWNoZUlEcyJ9LDIwNzY6e246IkJydFRhYmxlU2xpY2VyQ2FjaGVJRCJ9LDIwNzc6e246IkJydEJlZ2luVGFibGVTbGljZXJDYWNoZSJ9LDIwNzg6e246IkJydEVuZFRhYmxlU2xpY2VyQ2FjaGUifSwyMDc5OntuOiJCcnRTeEZpbHRlcjE1''@;'; put 'put ''In0sMjA4MDp7bjoiQnJ0QmVnaW5UaW1lbGluZUNhY2hlUGl2b3RDYWNoZUlEcyJ9LDIwODE6e246IkJydEVuZFRpbWVsaW5lQ2FjaGVQaXZvdENhY2hlSURzIn0sMjA4Mjp7bjoiQnJ0VGltZWxpbmVDYWNoZVBpdm90Q2FjaGVJRCJ9LDIwODM6e246IkJydEJlZ2luVGltZWxpbmVDYWNoZUlE''@;'; put 'put ''cyJ9LDIwODQ6e246IkJydEVuZFRpbWVsaW5lQ2FjaGVJRHMifSwyMDg1OntuOiJCcnRCZWdpblRpbWVsaW5lQ2FjaGVJRCJ9LDIwODY6e246IkJydEVuZFRpbWVsaW5lQ2FjaGVJRCJ9LDIwODc6e246IkJydEJlZ2luVGltZWxpbmVzRXgifSwyMDg4OntuOiJCcnRFbmRUaW1lbGluZXNFeCJ9''@;'; put 'put ''LDIwODk6e246IkJydEJlZ2luVGltZWxpbmVFeCJ9LDIwOTA6e246IkJydEVuZFRpbWVsaW5lRXgifSwyMDkxOntuOiJCcnRXb3JrQm9va1ByMTUifSwyMDkyOntuOiJCcnRQQ0RIMTUifSwyMDkzOntuOiJCcnRCZWdpblRpbWVsaW5lU3R5bGUifSwyMDk0OntuOiJCcnRFbmRUaW1lbGluZVN0''@;'; put 'put ''eWxlIn0sMjA5NTp7bjoiQnJ0VGltZWxpbmVTdHlsZUVsZW1lbnQifSwyMDk2OntuOiJCcnRCZWdpblRpbWVsaW5lU3R5bGVzaGVldEV4dDE1In0sMjA5Nzp7bjoiQnJ0RW5kVGltZWxpbmVTdHlsZXNoZWV0RXh0MTUifSwyMDk4OntuOiJCcnRCZWdpblRpbWVsaW5lU3R5bGVzIn0sMjA5OTp7''@;'; put 'put ''bjoiQnJ0RW5kVGltZWxpbmVTdHlsZXMifSwyMTAwOntuOiJCcnRCZWdpblRpbWVsaW5lU3R5bGVFbGVtZW50cyJ9LDIxMDE6e246IkJydEVuZFRpbWVsaW5lU3R5bGVFbGVtZW50cyJ9LDIxMDI6e246IkJydER4ZjE1In0sMjEwMzp7bjoiQnJ0QmVnaW5EeGZzMTUifSwyMTA0OntuOiJicnRF''@;'; put 'put ''bmREeGZzMTUifSwyMTA1OntuOiJCcnRTbGljZXJDYWNoZUhpZGVJdGVtc1dpdGhOb0RhdGEifSwyMTA2OntuOiJCcnRCZWdpbkl0ZW1VbmlxdWVOYW1lcyJ9LDIxMDc6e246IkJydEVuZEl0ZW1VbmlxdWVOYW1lcyJ9LDIxMDg6e246IkJydEl0ZW1VbmlxdWVOYW1lIn0sMjEwOTp7bjoiQnJ0''@;'; put 'put ''QmVnaW5FeHRDb25uMTUifSwyMTEwOntuOiJCcnRFbmRFeHRDb25uMTUifSwyMTExOntuOiJCcnRCZWdpbk9sZWRiUHIxNSJ9LDIxMTI6e246IkJydEVuZE9sZWRiUHIxNSJ9LDIxMTM6e246IkJydEJlZ2luRGF0YUZlZWRQcjE1In0sMjExNDp7bjoiQnJ0RW5kRGF0YUZlZWRQcjE1In0sMjEx''@;'; put 'put ''NTp7bjoiQnJ0VGV4dFByMTUifSwyMTE2OntuOiJCcnRSYW5nZVByMTUifSwyMTE3OntuOiJCcnREYkNvbW1hbmQxNSJ9LDIxMTg6e246IkJydEJlZ2luRGJUYWJsZXMxNSJ9LDIxMTk6e246IkJydEVuZERiVGFibGVzMTUifSwyMTIwOntuOiJCcnREYlRhYmxlMTUifSwyMTIxOntuOiJCcnRC''@;'; put 'put ''ZWdpbkRhdGFNb2RlbCJ9LDIxMjI6e246IkJydEVuZERhdGFNb2RlbCJ9LDIxMjM6e246IkJydEJlZ2luTW9kZWxUYWJsZXMifSwyMTI0OntuOiJCcnRFbmRNb2RlbFRhYmxlcyJ9LDIxMjU6e246IkJydE1vZGVsVGFibGUifSwyMTI2OntuOiJCcnRCZWdpbk1vZGVsUmVsYXRpb25zaGlwcyJ9''@;'; put 'put ''LDIxMjc6e246IkJydEVuZE1vZGVsUmVsYXRpb25zaGlwcyJ9LDIxMjg6e246IkJydE1vZGVsUmVsYXRpb25zaGlwIn0sMjEyOTp7bjoiQnJ0QmVnaW5FQ1R4dFdpejE1In0sMjEzMDp7bjoiQnJ0RW5kRUNUeHRXaXoxNSJ9LDIxMzE6e246IkJydEJlZ2luRUNUV0ZsZEluZm9Mc3QxNSJ9LDIx''@;'; put 'put ''MzI6e246IkJydEVuZEVDVFdGbGRJbmZvTHN0MTUifSwyMTMzOntuOiJCcnRCZWdpbkVDVFdGbGRJbmZvMTUifSwyMTM0OntuOiJCcnRGaWVsZExpc3RBY3RpdmVJdGVtIn0sMjEzNTp7bjoiQnJ0UGl2b3RDYWNoZUlkVmVyc2lvbiJ9LDIxMzY6e246IkJydFNYREkxNSJ9LDIxMzc6e246IkJy''@;'; put 'put ''dEJlZ2luTW9kZWxUaW1lR3JvdXBpbmdzIn0sMjEzODp7bjoiQnJ0RW5kTW9kZWxUaW1lR3JvdXBpbmdzIn0sMjEzOTp7bjoiQnJ0QmVnaW5Nb2RlbFRpbWVHcm91cGluZyJ9LDIxNDA6e246IkJydEVuZE1vZGVsVGltZUdyb3VwaW5nIn0sMjE0MTp7bjoiQnJ0TW9kZWxUaW1lR3JvdXBpbmdD''@;'; put 'put ''YWxjQ29sIn0sMzA3Mjp7bjoiQnJ0VWlkIn0sMzA3Mzp7bjoiQnJ0UmV2aXNpb25QdHIifSw1MDk1OntuOiJCcnRCZWdpbkNhbGNGZWF0dXJlcyJ9LDUwOTY6e246IkJydEVuZENhbGNGZWF0dXJlcyJ9LDUwOTc6e246IkJydENhbGNGZWF0dXJlIn0sNjU1MzU6e246IiJ9fSx1VD1fdCh4NSwi''@;'; put 'put ''biIpO3VULkJydEZSVEFyY2hJRCQ9MTY7dmFyIE5sPXs2OntuOiJGb3JtdWxhIixmOnU1fSwxMDp7bjoiRU9GIixmOkZsfSwxMjp7bjoiQ2FsY0NvdW50IixmOmMxfSwxMzp7bjoiQ2FsY01vZGUiLGY6YzF9LDE0OntuOiJDYWxjUHJlY2lzaW9uIixmOnRhfSwxNTp7bjoiQ2FsY1JlZk1vZGUi''@;'; put 'put ''LGY6dGF9LDE2OntuOiJDYWxjRGVsdGEiLGY6STJ9LDE3OntuOiJDYWxjSXRlciIsZjp0YX0sMTg6e246IlByb3RlY3QiLGY6dGF9LDE5OntuOiJQYXNzd29yZCIsZjpjMX0sMjA6e246IkhlYWRlciIsZjpENH0sMjE6e246IkZvb3RlciIsZjpENH0sMjM6e246IkV4dGVyblNoZWV0IixmOlY4''@;'; put 'put ''fSwyNDp7bjoiTGJsIixmOnBifSwyNTp7bjoiV2luUHJvdGVjdCIsZjp0YX0sMjY6e246IlZlcnRpY2FsUGFnZUJyZWFrcyJ9LDI3OntuOiJIb3Jpem9udGFsUGFnZUJyZWFrcyJ9LDI4OntuOiJOb3RlIixmOmZ1bmN0aW9uIGxtKEgsaWUsWCl7cmV0dXJuIGZ1bmN0aW9uIGI5KEgsaWUsWCl7''@;'; put 'put ''aWYoIShYLmJpZmY8OCkpe3ZhciB3ZT1ILnJlYWRfc2hpZnQoMikseGU9SC5yZWFkX3NoaWZ0KDIpLEZlPUgucmVhZF9zaGlmdCgyKSxaZT1ILnJlYWRfc2hpZnQoMiksamU9ZGYoSCwwLFgpO3JldHVybiBYLmJpZmY8OCYmSC5yZWFkX3NoaWZ0KDEpLFt7cjp3ZSxjOnhlfSxqZSxaZSxGZV19''@;'; put 'put ''fShILDAsWCl9fSwyOTp7bjoiU2VsZWN0aW9uIixmOmZ1bmN0aW9uIE1oKEgsaWUsWCl7cmV0dXJuIFgmJlguYmlmZjw1PyhILmwrPWllLHtjZWxsOntyOjAsYzowfX0pOihILnJlYWRfc2hpZnQoMSkse2NlbGw6WTAoe3I6SC5yZWFkX3NoaWZ0KDIpLGM6SC5yZWFkX3NoaWZ0KDIpfSl9KX19''@;'; put 'put ''LDM0OntuOiJEYXRlMTkwNCIsZjp0YX0sMzU6e246IkV4dGVybk5hbWUiLGY6R019LDM4OntuOiJMZWZ0TWFyZ2luIixmOkkyfSwzOTp7bjoiUmlnaHRNYXJnaW4iLGY6STJ9LDQwOntuOiJUb3BNYXJnaW4iLGY6STJ9LDQxOntuOiJCb3R0b21NYXJnaW4iLGY6STJ9LDQyOntuOiJQcmludFJv''@;'; put 'put ''d0NvbCIsZjp0YX0sNDM6e246IlByaW50R3JpZCIsZjp0YX0sNDc6e246IkZpbGVQYXNzIixmOmZ1bmN0aW9uIGdtKEgsaWUsWCl7aWYoWC5lbmMpcmV0dXJuIFguZW5jO3ZhciB3ZT17VHlwZTpYLmJpZmY+PTg/SC5yZWFkX3NoaWZ0KDIpOjB9O3JldHVybiB3ZS5UeXBlP2Z1bmN0aW9uIHVF''@;'; put 'put ''KEgsaWUsWCx3ZSl7dmFyIHhlPXdlfHx7fTtpZih4ZS5JbmZvPUgucmVhZF9zaGlmdCgyKSxILmwtPTIsMT09PXhlLkluZm8pe2lmKHhlLkRhdGE9ZnVuY3Rpb24gcXooSCl7dmFyIGllPXt9LFg9aWUuRW5jcnlwdGlvblZlcnNpb25JbmZvPXZmKEgsNCk7aWYoMSE9WC5NYWpvcnx8MSE9WC5N''@;'; put 'put ''aW5vcil0aHJvdyJ1bnJlY29nbml6ZWQgdmVyc2lvbiBjb2RlICIrWC5NYWpvcisiIDogIitYLk1pbm9yO3JldHVybiBpZS5TYWx0PUgucmVhZF9zaGlmdCgxNiksaWUuRW5jcnlwdGVkVmVyaWZpZXI9SC5yZWFkX3NoaWZ0KDE2KSxpZS5FbmNyeXB0ZWRWZXJpZmllckhhc2g9SC5yZWFkX3No''@;'; put 'put ''aWZ0KDE2KSxpZX0oSCksWC5wYXNzd29yZCYmdm9pZCAwIT09UjYpe3ZhciBGZT1SNihYLnBhc3N3b3JkLHhlLkRhdGEuU2FsdCwiMDAwMDAwMDAiKSxaZT1UZSh4ZS5EYXRhLkVuY3J5cHRlZFZlcmlmaWVyK3hlLkRhdGEuRW5jcnlwdGVkVmVyaWZpZXJIYXNoLCJoZXgiKSxqZT1zby5yYzQo''@;'; put 'put ''VGUoRmUsImhleCIpLnRvU3RyaW5nKCJiaW5hcnkiKSxaZSk7d2UudmFsaWQ9c28ubWQ1KGplLnNsaWNlKDAsMTYpKT09QnVmZmVyLmZyb20oamUuc2xpY2UoMTYpKS50b1N0cmluZygiaGV4IikseGUuRGF0YS5LZXk9RmUsd2UuaW5zaXR1PWZ1bmN0aW9uIEdQKEgsaWUpe3ZhciBYPW5ldyBB''@;'; put 'put ''cnJheSgyNTYpLHdlPTAseGU9MCxGZT0wLFplPTA7ZnVuY3Rpb24gamUoVXQpe2Zvcih3ZT0wLHhlPTAsRmU9MCxaZT0wLHhlPTA7MjU2IT14ZTsrK3hlKVhbeGVdPXhlO2ZvcihGZT0wLHhlPTA7MjU2IT14ZTsrK3hlKXt0cnl7RmU9RmUrWFt4ZV0rVXRbeGUlVXQubGVuZ3RoXS5jaGFyQ29k''@;'; put 'put ''ZUF0KDApJjI1NX1jYXRjaChubil7dGhyb3cgY29uc29sZS5sb2coeGUsVXRbeGUlVXQubGVuZ3RoXSksbm59WmU9WFt4ZV0sWFt4ZV09WFtGZV0sWFtGZV09WmV9eGU9RmU9MH1mdW5jdGlvbiBZZShVdCl7dmFyIG5uPWhlKFV0Lmxlbmd0aCk7Zm9yKHdlPTA7d2UhPVV0Lmxlbmd0aDsrK3dl''@;'; put 'put ''KVplPVhbeGU9eGUrMSYyNTVdLFhbeGVdPVhbRmU9KEZlK1hbeGVdKSUyNTZdLFhbRmVdPVplLG5uW3dlXT1VdFt3ZV1eWFtYW3hlXStYW0ZlXSYyNTVdO3JldHVybiBCdWZmZXIuZnJvbShubil9dmFyIE10PUguS2V5LHh0PTA7amUoVGUoTXQsImhleCIpLnRvU3RyaW5nKCJiaW5hcnkiKSk7''@;'; put 'put ''dmFyIFJ0PTA7cmV0dXJuIGZ1bmN0aW9uKFV0KXtpZihSdCtVdC5sZW5ndGg8MTAyNClyZXR1cm4gUnQrPVV0Lmxlbmd0aCxZZShVdCk7dmFyIER0PTAsenQ9VGUoVXQuc2xpY2UoRHQsRHQrKENuPTEwMjQtUnQpKSk7RHQrPUNuLFJ0PTA7dmFyIFBuPVllKHp0KTtmb3IoRHQ9PVV0Lmxlbmd0''@;'; put 'put ''aCYmKCsreHQsTXQ9UjYoaWUsSC5TYWx0LEk1KHh0KSksamUoVGUoTXQsImhleCIpLnRvU3RyaW5nKCJiaW5hcnkiKSkpO0R0PFV0Lmxlbmd0aDspeysreHQsTXQ9UjYoaWUsSC5TYWx0LEk1KHh0KSksamUoQnVmZmVyLmZyb20oTXQsImhleCIpLnRvU3RyaW5nKCJiaW5hcnkiKSk7dmFyIENu''@;'; put 'put ''PU1hdGgubWluKDEwMjQsVXQubGVuZ3RoLUR0KTt6dD1UZShVdC5zbGljZShEdCxEdCtDbikpLER0Kz1DbixSdD1DbixQbj1CdWZmZXIuY29uY2F0KFtQbixZZSh6dCldKX1yZXR1cm4gUG59fSh4ZS5EYXRhLFgucGFzc3dvcmQpfX1lbHNlIGlmKHhlLkRhdGE9ZnVuY3Rpb24gJHooSCxpZSl7''@;'; put 'put ''dmFyIFg9e30sd2U9WC5FbmNyeXB0aW9uVmVyc2lvbkluZm89dmYoSCw0KTtpZihpZS09NCwyIT13ZS5NaW5vcil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCBtaW5vciB2ZXJzaW9uIGNvZGU6ICIrd2UuTWlub3IpO2lmKHdlLk1ham9yPjR8fHdlLk1ham9yPDIpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJ1bnJlY29nbml6ZWQgbWFqb3IgdmVyc2lvbiBjb2RlOiAiK3dlLk1ham9yKTtYLkZsYWdzPUgucmVhZF9zaGlmdCg0KSxpZS09NDt2YXIgeGU9SC5yZWFkX3NoaWZ0KDQpO3JldHVybiBpZS09NCxYLkVuY3J5cHRpb25IZWFkZXI9UlIoSCx4ZSksWC5FbmNyeXB0aW9uVmVyaWZpZXI9''@;'; put 'put ''QlIoSCxpZS09eGUpLFh9KEgsaWUpLHhlLkRhdGEmJnhlLkRhdGEuRW5jcnlwdGlvbkhlYWRlciYmMjY2MjU9PT14ZS5EYXRhLkVuY3J5cHRpb25IZWFkZXIuQWxnSUQmJlgucGFzc3dvcmQmJnZvaWQgMCE9PURBKXt2YXIgWWU9REEoWC5wYXNzd29yZCx4ZS5EYXRhLkVuY3J5cHRpb25WZXJp''@;'; put 'put ''Zmllci5TYWx0LnRvU3RyaW5nKCJoZXgiKSwiMDAwMDAwMDAiKSxNdD14ZS5EYXRhLkVuY3J5cHRpb25IZWFkZXIuS2V5U2l6ZT4+PjM7NT09TXR8fE10PFllLmxlbmd0aCYmKFllPVllLnNsaWNlKDAsTXQpKTt2YXIgeHQ9VGUoeGUuRGF0YS5FbmNyeXB0aW9uVmVyaWZpZXIuVmVyaWZpZXIu''@;'; put 'put ''dG9TdHJpbmcoImhleCIpK3hlLkRhdGEuRW5jcnlwdGlvblZlcmlmaWVyLlZlcmlmaWVySGFzaC50b1N0cmluZygiaGV4IiksImhleCIpLFJ0PXNvLnJjNChZZS50b1N0cmluZygiYmluYXJ5IikseHQpO3dlLnZhbGlkPWsyKFJ0LnNsaWNlKDAsTXQpLCJTSEExIikudG9TdHJpbmcoImhleCIp''@;'; put 'put ''PT1SdC5zbGljZShNdCkudG9TdHJpbmcoImhleCIpLHhlLkRhdGEuS2V5PVllLHdlLnZhbGlkJiYod2UuaW5zaXR1PWZ1bmN0aW9uIHcwKEgsaWUpe3ZhciBYPW5ldyBBcnJheSgyNTYpLHdlPTAseGU9MCxGZT0wLFplPTAsamU9SC5FbmNyeXB0aW9uSGVhZGVyLktleVNpemU+Pj4zO2Z1bmN0''@;'; put 'put ''aW9uIFllKG5uKXtmb3Iobm49QnVmZmVyLmZyb20obm4uc2xpY2UoMCxqZSkpLHdlPTAseGU9MCxGZT0wLFplPTAseGU9MDsyNTYhPXhlOysreGUpWFt4ZV09eGU7Zm9yKEZlPTAseGU9MDsyNTYhPXhlOysreGUpe3ZhciBDbj1ublt4ZSVubi5sZW5ndGhdO0ZlPUZlK1hbeGVdKygic3RyaW5n''@;'; put 'put ''Ij09dHlwZW9mIENuP0NuLmNoYXJDb2RlQXQoMCk6Q24pJjI1NSxaZT1YW3hlXSxYW3hlXT1YW0ZlXSxYW0ZlXT1aZX14ZT1GZT0wfWZ1bmN0aW9uIE10KG5uKXt2YXIgQ249aGUobm4ubGVuZ3RoKTtmb3Iod2U9MDt3ZSE9bm4ubGVuZ3RoOysrd2UpWmU9WFt4ZT14ZSsxJjI1NV0sWFt4ZV09''@;'; put 'put ''WFtGZT0oRmUrWFt4ZV0pJTI1Nl0sWFtGZV09WmUsQ25bd2VdPW5uW3dlXV5YW1hbeGVdK1hbRmVdJjI1NV07cmV0dXJuIEJ1ZmZlci5mcm9tKENuKX12YXIgeHQ9SC5LZXksUnQ9MDtZZShUZSh4dCwiaGV4IikudG9TdHJpbmcoImJpbmFyeSIpKTt2YXIgVXQ9MDtyZXR1cm4gZnVuY3Rpb24o''@;'; put 'put ''bm4pe2lmKFV0K25uLmxlbmd0aDwxMDI0KXJldHVybiBVdCs9bm4ubGVuZ3RoLE10KG5uKTt2YXIgRHQ9MTAyNC1VdCx6dD0wLFBuPUJ1ZmZlci5mcm9tKG5uLnNsaWNlKHp0LHp0K0R0KSk7enQrPUR0LFV0PTA7dmFyIFRuPU10KFBuKTtmb3IoenQ9PW5uLmxlbmd0aCYmKCsrUnQseHQ9REEo''@;'; put 'put ''aWUsSC5FbmNyeXB0aW9uVmVyaWZpZXIuU2FsdCxJNShSdCkpLFllKEJ1ZmZlci5mcm9tKHh0LCJoZXgiKS50b1N0cmluZygiYmluYXJ5IikpKTt6dDxubi5sZW5ndGg7KSsrUnQseHQ9REEoaWUsSC5FbmNyeXB0aW9uVmVyaWZpZXIuU2FsdCxJNShSdCkpLFllKEJ1ZmZlci5mcm9tKHh0LCJo''@;'; put 'put ''ZXgiKS50b1N0cmluZygiYmluYXJ5IikpLER0PU1hdGgubWluKDEwMjQsbm4ubGVuZ3RoLXp0KSxQbj1CdWZmZXIuZnJvbShubi5zbGljZSh6dCx6dCtEdCkpLHp0Kz1EdCxEdDwxMDI0JiYoVXQ9RHQpLFRuPUJ1ZmZlci5jb25jYXQoW1RuLE10KFBuKV0pO3JldHVybiBUbn19KHhlLkRhdGEs''@;'; put 'put ''WC5wYXNzd29yZCkpfXJldHVybiB4ZX0oSCxpZS0yLFgsd2UpOmZ1bmN0aW9uIEhSKEgsaWUsWCx3ZSl7dmFyIHhlPXtrZXk6YzEoSCksdmVyaWZpY2F0aW9uQnl0ZXM6YzEoSCl9O1gucGFzc3dvcmQmJih4ZS52ZXJpZmllcj1NOShYLnBhc3N3b3JkKSksd2UudmFsaWQ9eGUudmVyaWZpY2F0''@;'; put 'put ''aW9uQnl0ZXM9PT14ZS52ZXJpZmllcix3ZS52YWxpZCYmKHdlLmluc2l0dT1mdW5jdGlvbihILGllKXt2YXIgWD1pZXx8MCx3ZT1FOShIKTtyZXR1cm4gZnVuY3Rpb24oeGUpe3ZhciBGZT1mdW5jdGlvbihILGllLFgsd2UseGUpe3ZhciBGZSxaZTtmb3IoeGV8fCh4ZT1pZSksd2V8fCh3ZT1F''@;'; put 'put ''OSgiIikpLEZlPTA7RmUhPWllLmxlbmd0aDsrK0ZlKVplPTI1NSYoKFplPWllW0ZlXSk+PjV8WmU8PDMpLHhlW0ZlXT1aZV49d2VbWF0sWD1YKzEmMTU7cmV0dXJuW3hlLFgsd2VdfSgwLHhlLFgsd2UpO3JldHVybiBYPUZlWzFdLEZlWzBdfX0oWC5wYXNzd29yZCwwKSl9KEgsMCxYLHdlKSx3''@;'; put 'put ''ZX19LDQ5OntuOiJGb250IixmOmZ1bmN0aW9uIENkKEgsaWUsWCl7dmFyIHdlPXtzejpILnJlYWRfc2hpZnQoMikvMjB9LHhlPXRiKEgpO3hlLmZCb2xkJiYod2UuYm9sZD0xKSx4ZS5mSXRhbGljJiYod2UuaXRhbGljPTEpLHhlLmZVbmRlcmxpbmUmJih3ZS51bmRlcmxpbmU9MSkseGUuZkNv''@;'; put 'put ''bmRlbnNlJiYod2UuY29uZGVuc2U9MSkseGUuZkV4dGVuZCYmKHdlLmV4dGVuZD0xKSx4ZS5mU2hhZG93JiYod2Uuc2hhZG93PTEpLHhlLmZPdXRsaW5lJiYod2Uub3V0bGluZT0xKSx4ZS5mU3RyaWtlb3V0JiYod2Uuc3RyaWtlPTEpO3ZhciBGZT1YJiZYLmJpZmZ8fDg7aWYoMiE9RmUmJih3''@;'; put 'put ''ZS5pY3Y9SC5yZWFkX3NoaWZ0KDIpLDMhPUZlJiY0IT1GZSkpe3N3aXRjaCg3MDA9PT1ILnJlYWRfc2hpZnQoMikmJih3ZS5ib2xkPTEpLEgucmVhZF9zaGlmdCgyKSl7Y2FzZSAxOndlLnZhbGlnbj0ic3VwZXIiO2JyZWFrO2Nhc2UgMjp3ZS52YWxpZ249InN1YiJ9dmFyIGplPUgucmVhZF9z''@;'; put 'put ''aGlmdCgxKTswIT1qZSYmKHdlLnVuZGVybGluZT1qZSk7dmFyIFllPUgucmVhZF9zaGlmdCgxKTtZZT4wJiYod2UuZmFtaWx5PVllKTt2YXIgTXQ9SC5yZWFkX3NoaWZ0KDEpO010PjAmJih3ZS5jaGFyc2V0PU10KSxILmwrPTF9cmV0dXJuIHdlLm5hbWU9emMoSCwwLFgpLHdlfX0sNTE6e246''@;'; put 'put ''IlByaW50U2l6ZSIsZjpjMX0sNjA6e246IkNvbnRpbnVlIn0sNjE6e246IldpbmRvdzEiLGY6ZnVuY3Rpb24gcm0oSCl7cmV0dXJue1BvczpbSC5yZWFkX3NoaWZ0KDIpLEgucmVhZF9zaGlmdCgyKV0sRGltOltILnJlYWRfc2hpZnQoMiksSC5yZWFkX3NoaWZ0KDIpXSxGbGFnczpILnJlYWRf''@;'; put 'put ''c2hpZnQoMiksQ3VyVGFiOkgucmVhZF9zaGlmdCgyKSxGaXJzdFRhYjpILnJlYWRfc2hpZnQoMiksU2VsZWN0ZWQ6SC5yZWFkX3NoaWZ0KDIpLFRhYlJhdGlvOkgucmVhZF9zaGlmdCgyKX19fSw2NDp7bjoiQmFja3VwIixmOnRhfSw2NTp7bjoiUGFuZSIsZjpmdW5jdGlvbiBfZChILGllLFgp''@;'; put 'put ''e2lmKFgmJlguYmlmZjw1KXJldHVybnt9O3ZhciB3ZT17fTtyZXR1cm4gd2UueD1ILnJlYWRfc2hpZnQoMiksd2UueT1ILnJlYWRfc2hpZnQoMiksd2UucndUb3A9SC5yZWFkX3NoaWZ0KDIpLHdlLmNvbExlZnQ9SC5yZWFkX3NoaWZ0KDIpLHdlLnBubkFjY3Q9SC5yZWFkX3NoaWZ0KDEpLEgu''@;'; put 'put ''cmVhZF9zaGlmdCgxKSx3ZX19LDY2OntuOiJDb2RlUGFnZSIsZjpjMX0sNzc6e246IlBscyIsZjpDc30sODA6e246IkRDb24ifSw4MTp7bjoiRENvblJlZiJ9LDgyOntuOiJEQ29uTmFtZSJ9LDg1OntuOiJEZWZDb2xXaWR0aCIsZjpjMX0sODk6e246IlhDVCJ9LDkwOntuOiJDUk4ifSw5MTp7''@;'; put 'put ''bjoiRmlsZVNoYXJpbmcifSw5Mjp7bjoiV3JpdGVBY2Nlc3MiLGY6ZnVuY3Rpb24gbzYoSCxpZSxYKXtpZihYLmVuYylyZXR1cm4gSC5sKz1pZSwiIjt2YXIgd2U9SC5sLHhlPWRmKEgsMCxYKTtyZXR1cm4gSC5yZWFkX3NoaWZ0KGllK3dlLUgubCkseGV9fSw5Mzp7bjoiT2JqIixmOmZ1bmN0''@;'; put 'put ''aW9uIHoxKEgsaWUsWCl7aWYoWCYmWC5iaWZmPDgpcmV0dXJuIGZ1bmN0aW9uIG1mKEgsaWUsWCl7SC5sKz00O3ZhciB3ZT1ILnJlYWRfc2hpZnQoMikseGU9SC5yZWFkX3NoaWZ0KDIpLEZlPUgucmVhZF9zaGlmdCgyKTtILmwrPTIsSC5sKz0yLEgubCs9MixILmwrPTIsSC5sKz0yLEgubCs9''@;'; put 'put ''MixILmwrPTIsSC5sKz0yLEgubCs9MixILmwrPTY7dmFyIFplPVtdO3JldHVybiBaZS5wdXNoKChfOVt3ZV18fENzKShILGllLT0zNixYKSkse2NtbzpbeGUsd2UsRmVdLGZ0OlplfX0oSCxpZSxYKTt2YXIgd2U9QTkoSCkseGU9ZnVuY3Rpb24gWHUoSCxpZSxYKXtmb3IodmFyIHdlPUgubCtp''@;'; put 'put ''ZSx4ZT1bXTtILmw8d2U7KXt2YXIgRmU9SC5yZWFkX3NoaWZ0KDIpO0gubC09Mjt0cnl7eGVbRmVdPW5tW0ZlXShILHdlLUgubCl9Y2F0Y2goWmUpe3JldHVybiBILmw9d2UseGV9fXJldHVybiBILmwhPXdlJiYoSC5sPXdlKSx4ZX0oSCxpZS0yMik7cmV0dXJue2Ntbzp3ZSxmdDp4ZX19fSw5''@;'; put 'put ''NDp7bjoiVW5jYWxjZWQifSw5NTp7bjoiQ2FsY1NhdmVSZWNhbGMiLGY6dGF9LDk2OntuOiJUZW1wbGF0ZSJ9LDk3OntuOiJJbnRsIn0sOTk6e246Ik9ialByb3RlY3QiLGY6dGF9LDEyNTp7bjoiQ29sSW5mbyIsZjp2M30sMTI4OntuOiJHdXRzIixmOmZ1bmN0aW9uIHM2KEgpe0gubCs9NDt2''@;'; put 'put ''YXIgaWU9W0gucmVhZF9zaGlmdCgyKSxILnJlYWRfc2hpZnQoMildO2lmKDAhPT1pZVswXSYmaWVbMF0tLSwwIT09aWVbMV0mJmllWzFdLS0saWVbMF0+N3x8aWVbMV0+Nyl0aHJvdyBuZXcgRXJyb3IoIkJhZCBHdXR0ZXJzOiAiK2llLmpvaW4oInwiKSk7cmV0dXJuIGllfX0sMTI5OntuOiJX''@;'; put 'put ''c0Jvb2wiLGY6ZnVuY3Rpb24gY2IoSCxpZSxYKXt2YXIgd2U9WCYmOD09WC5iaWZmfHwyPT1pZT9ILnJlYWRfc2hpZnQoMik6KEgubCs9aWUsMCk7cmV0dXJue2ZEaWFsb2c6MTYmd2UsZkJlbG93OjY0JndlLGZSaWdodDoxMjgmd2V9fX0sMTMwOntuOiJHcmlkU2V0IixmOmMxfSwxMzE6e246''@;'; put 'put ''IkhDZW50ZXIiLGY6dGF9LDEzMjp7bjoiVkNlbnRlciIsZjp0YX0sMTMzOntuOiJCb3VuZFNoZWV0OCIsZjpmdW5jdGlvbiBQOChILGllLFgpe3ZhciB3ZT1ILnJlYWRfc2hpZnQoNCkseGU9MyZILnJlYWRfc2hpZnQoMSksRmU9SC5yZWFkX3NoaWZ0KDEpO3N3aXRjaChGZSl7Y2FzZSAwOkZl''@;'; put 'put ''PSJXb3Jrc2hlZXQiO2JyZWFrO2Nhc2UgMTpGZT0iTWFjcm9zaGVldCI7YnJlYWs7Y2FzZSAyOkZlPSJDaGFydHNoZWV0IjticmVhaztjYXNlIDY6RmU9IlZCQU1vZHVsZSJ9dmFyIFplPXpjKEgsMCxYKTtyZXR1cm4gMD09PVplLmxlbmd0aCYmKFplPSJTaGVldDEiKSx7cG9zOndlLGhzOnhl''@;'; put 'put ''LGR0OkZlLG5hbWU6WmV9fX0sMTM0OntuOiJXcml0ZVByb3RlY3QifSwxNDA6e246IkNvdW50cnkiLGY6ZnVuY3Rpb24gQzkoSCl7dmFyIFgsaWU9WzAsMF07cmV0dXJuIFg9SC5yZWFkX3NoaWZ0KDIpLGllWzBdPVhnW1hdfHxYLFg9SC5yZWFkX3NoaWZ0KDIpLGllWzFdPVhnW1hdfHxYLGll''@;'; put 'put ''fX0sMTQxOntuOiJIaWRlT2JqIixmOmMxfSwxNDQ6e246IlNvcnQifSwxNDY6e246IlBhbGV0dGUiLGY6ZnVuY3Rpb24gTVIoSCl7Zm9yKHZhciBpZT1ILnJlYWRfc2hpZnQoMiksWD1bXTtpZS0tID4wOylYLnB1c2goUjgoSCkpO3JldHVybiBYfX0sMTUxOntuOiJTeW5jIn0sMTUyOntuOiJM''@;'; put 'put ''UHIifSwxNTM6e246IkR4R0NvbCJ9LDE1NDp7bjoiRm5Hcm91cE5hbWUifSwxNTU6e246IkZpbHRlck1vZGUifSwxNTY6e246IkJ1aWx0SW5Gbkdyb3VwQ291bnQiLGY6YzF9LDE1Nzp7bjoiQXV0b0ZpbHRlckluZm8ifSwxNTg6e246IkF1dG9GaWx0ZXIifSwxNjA6e246IlNjbCIsZjpTOX0s''@;'; put 'put ''MTYxOntuOiJTZXR1cCIsZjpmdW5jdGlvbiBYTShILGllKXt2YXIgWD17fTtyZXR1cm4gaWU8MzJ8fChILmwrPTE2LFguaGVhZGVyPUkyKEgpLFguZm9vdGVyPUkyKEgpLEgubCs9MiksWH19LDE3NDp7bjoiU2Nlbk1hbiJ9LDE3NTp7bjoiU0NFTkFSSU8ifSwxNzY6e246IlN4VmlldyJ9LDE3''@;'; put 'put ''Nzp7bjoiU3h2ZCJ9LDE3ODp7bjoiU1hWSSJ9LDE4MDp7bjoiU3hJdmQifSwxODE6e246IlNYTEkifSwxODI6e246IlNYUEkifSwxODQ6e246IkRvY1JvdXRlIn0sMTg1OntuOiJSZWNpcE5hbWUifSwxODk6e246Ik11bFJrIixmOmZ1bmN0aW9uIG9tKEgsaWUpe2Zvcih2YXIgWD1ILmwraWUt''@;'; put 'put ''Mix3ZT1ILnJlYWRfc2hpZnQoMikseGU9SC5yZWFkX3NoaWZ0KDIpLEZlPVtdO0gubDxYOylGZS5wdXNoKHRtKEgpKTtpZihILmwhPT1YKXRocm93IG5ldyBFcnJvcigiTXVsUksgcmVhZCBlcnJvciIpO3ZhciBaZT1ILnJlYWRfc2hpZnQoMik7aWYoRmUubGVuZ3RoIT1aZS14ZSsxKXRocm93''@;'; put 'put ''IG5ldyBFcnJvcigiTXVsUksgbGVuZ3RoIG1pc21hdGNoIik7cmV0dXJue3I6d2UsYzp4ZSxDOlplLHJrcmVjOkZlfX19LDE5MDp7bjoiTXVsQmxhbmsiLGY6ZnVuY3Rpb24geVIoSCxpZSl7Zm9yKHZhciBYPUgubCtpZS0yLHdlPUgucmVhZF9zaGlmdCgyKSx4ZT1ILnJlYWRfc2hpZnQoMiks''@;'; put 'put ''RmU9W107SC5sPFg7KUZlLnB1c2goSC5yZWFkX3NoaWZ0KDIpKTtpZihILmwhPT1YKXRocm93IG5ldyBFcnJvcigiTXVsQmxhbmsgcmVhZCBlcnJvciIpO3ZhciBaZT1ILnJlYWRfc2hpZnQoMik7aWYoRmUubGVuZ3RoIT1aZS14ZSsxKXRocm93IG5ldyBFcnJvcigiTXVsQmxhbmsgbGVuZ3Ro''@;'; put 'put ''IG1pc21hdGNoIik7cmV0dXJue3I6d2UsYzp4ZSxDOlplLGl4ZmU6RmV9fX0sMTkzOntuOiJNbXMiLGY6Rmx9LDE5Nzp7bjoiU1hESSJ9LDE5ODp7bjoiU1hEQiJ9LDE5OTp7bjoiU1hGREIifSwyMDA6e246IlNYREJCIn0sMjAxOntuOiJTWE51bSJ9LDIwMjp7bjoiU3hCb29sIixmOnRhfSwy''@;'; put 'put ''MDM6e246IlN4RXJyIn0sMjA0OntuOiJTWEludCJ9LDIwNTp7bjoiU1hTdHJpbmcifSwyMDY6e246IlNYRHRyIn0sMjA3OntuOiJTeE5pbCJ9LDIwODp7bjoiU1hUYmwifSwyMDk6e246IlNYVEJSR0lJVE0ifSwyMTA6e246IlN4VGJwZyJ9LDIxMTp7bjoiT2JQcm9qIn0sMjEzOntuOiJTWFN0''@;'; put 'put ''cmVhbUlEIn0sMjE1OntuOiJEQkNlbGwifSwyMTY6e246IlNYUm5nIn0sMjE3OntuOiJTeElzeG9wZXIifSwyMTg6e246IkJvb2tCb29sIixmOmMxfSwyMjA6e246IkRiT3JQYXJhbVFyeSJ9LDIyMTp7bjoiU2NlbmFyaW9Qcm90ZWN0IixmOnRhfSwyMjI6e246Ik9sZU9iamVjdFNpemUifSwy''@;'; put 'put ''MjQ6e246IlhGIixmOmZ1bmN0aW9uIFpNKEgsaWUsWCl7dmFyIHdlPXt9O3JldHVybiB3ZS5pZm50PUgucmVhZF9zaGlmdCgyKSx3ZS5udW1GbXRJZD1ILnJlYWRfc2hpZnQoMiksd2UuZmxhZ3M9SC5yZWFkX3NoaWZ0KDIpLHdlLmZTdHlsZT13ZS5mbGFncz4+MiYxLHdlLmRhdGE9ZnVuY3Rp''@;'; put 'put ''b24gZGIoSCxpZSxYLHdlKXt2YXIgeGU9e30sRmU9SC5yZWFkX3NoaWZ0KDQpLFplPUgucmVhZF9zaGlmdCg0KSxqZT1ILnJlYWRfc2hpZnQoNCksWWU9SC5yZWFkX3NoaWZ0KDIpO2lmKHhlLnBhdHRlcm5UeXBlPVFwW2plPj4yNl0sIXdlLmNlbGxTdHlsZXMpcmV0dXJuIHhlO3ZhciBNdD03''@;'; put 'put ''JkZlO3N3aXRjaChNdCl7Y2FzZSAxOnhlLmhhbGlnbj0ibGVmdCI7YnJlYWs7Y2FzZSAyOnhlLmhhbGlnbj0iY2VudGVyIjticmVhaztjYXNlIDM6eGUuaGFsaWduPSJyaWdodCJ9c3dpdGNoKHhlLmZXcmFwPUZlPj4zJjEsTXQ9RmU+PjQmNyl7Y2FzZSAwOnhlLnZhbGlnbj0idG9wIjticmVh''@;'; put 'put ''aztjYXNlIDE6eGUudmFsaWduPSJjZW50ZXIiO2JyZWFrO2Nhc2UgMjp4ZS52YWxpZ249ImJvdHRvbSJ9cmV0dXJuIHhlLmZKdXN0TGFzdD1GZT4+NyYxLHhlLnRyb3Q9RmU+PjgmMjU1LHhlLmNJbmRlbnQ9RmU+PjE2JjE1LHhlLmZTaHJpbmtUb0ZpdD1GZT4+MjAmMSx4ZS5pUmVhZE9yZGVy''@;'; put 'put ''PUZlPj4yMiYyLHhlLmZBdHJOdW09RmU+PjI2JjEseGUuZkF0ckZudD1GZT4+MjcmMSx4ZS5mQXRyQWxjPUZlPj4yOCYxLHhlLmZBdHJCZHI9RmU+PjI5JjEseGUuZkF0clBhdD1GZT4+MzAmMSx4ZS5mQXRyUHJvdD1GZT4+MzEmMSx4ZS5kZ0xlZnQ9MTUmWmUseGUuZGdSaWdodD1aZT4+NCYx''@;'; put 'put ''NSx4ZS5kZ1RvcD1aZT4+OCYxNSx4ZS5kZ0JvdHRvbT1aZT4+MTImMTUseGUuaWN2TGVmdD1aZT4+MTYmMTI3LHhlLmljdlJpZ2h0PVplPj4yMyYxMjcseGUuZ3JiaXREaWFnPVplPj4zMCYzLHhlLmljdlRvcD0xMjcmamUseGUuaWN2Qm90dG9tPWplPj43JjEyNyx4ZS5pY3ZEaWFnPWplPj4x''@;'; put 'put ''NCYxMjcseGUuZGdEaWFnPWplPj4yMSYxNSx4ZS5pY3ZGb3JlPTEyNyZZZSx4ZS5pY3ZCYWNrPVllPj43JjEyNyx4ZS5mc3hCdXR0b249WWU+PjE0JjEseGV9KEgsMCwwLFgpLHdlfX0sMjI1OntuOiJJbnRlcmZhY2VIZHIiLGY6ZnVuY3Rpb24gaTYoSCxpZSl7cmV0dXJuIDA9PT1pZXx8SC5y''@;'; put 'put ''ZWFkX3NoaWZ0KDIpLDEyMDB9fSwyMjY6e246IkludGVyZmFjZUVuZCIsZjpGbH0sMjI3OntuOiJTWFZTIn0sMjI5OntuOiJNZXJnZUNlbGxzIixmOmZ1bmN0aW9uIENSKEgsaWUpe2Zvcih2YXIgWD1bXSx3ZT1ILnJlYWRfc2hpZnQoMik7d2UtLTspWC5wdXNoKG42KEgpKTtyZXR1cm4gWH19''@;'; put 'put ''LDIzMzp7bjoiQmtIaW0ifSwyMzU6e246Ik1zb0RyYXdpbmdHcm91cCJ9LDIzNjp7bjoiTXNvRHJhd2luZyJ9LDIzNzp7bjoiTXNvRHJhd2luZ1NlbGVjdGlvbiJ9LDIzOTp7bjoiUGhvbmV0aWNJbmZvIn0sMjQwOntuOiJTeFJ1bGUifSwyNDE6e246IlNYRXgifSwyNDI6e246IlN4RmlsdCJ9''@;'; put 'put ''LDI0NDp7bjoiU3hEWEYifSwyNDU6e246IlN4SXRtIn0sMjQ2OntuOiJTeE5hbWUifSwyNDc6e246IlN4U2VsZWN0In0sMjQ4OntuOiJTWFBhaXIifSwyNDk6e246IlN4Rm1sYSJ9LDI1MTp7bjoiU3hGb3JtYXQifSwyNTI6e246IlNTVCIsZjpmdW5jdGlvbiB5OShILGllKXtmb3IodmFyIFg9''@;'; put 'put ''SC5sK2llLHdlPUgucmVhZF9zaGlmdCg0KSx4ZT1ILnJlYWRfc2hpZnQoNCksRmU9W10sWmU9MDtaZSE9eGUmJkgubDxYOysrWmUpRmUucHVzaChsYihIKSk7cmV0dXJuIEZlLkNvdW50PXdlLEZlLlVuaXF1ZT14ZSxGZX19LDI1Mzp7bjoiTGFiZWxTc3QiLGY6ZnVuY3Rpb24gak0oSCl7dmFy''@;'; put 'put ''IGllPUFjKEgpO3JldHVybiBpZS5pc3N0PUgucmVhZF9zaGlmdCg0KSxpZX19LDI1NTp7bjoiRXh0U1NUIixmOmZ1bmN0aW9uIHplKEgsaWUpe3ZhciBYPXt9O3JldHVybiBYLmRzc3Q9SC5yZWFkX3NoaWZ0KDIpLEgubCs9aWUtMixYfX0sMjU2OntuOiJTWFZERXgifSwyNTk6e246IlNYRm9y''@;'; put 'put ''bXVsYSJ9LDI5MDp7bjoiU1hEQkV4In0sMzExOntuOiJSUkRJbnNEZWwifSwzMTI6e246IlJSREhlYWQifSwzMTU6e246IlJSRENoZ0NlbGwifSwzMTc6e246IlJSVGFiSWQiLGY6WmN9LDMxODp7bjoiUlJEUmVuU2hlZXQifSwzMTk6e246IlJSU29ydCJ9LDMyMDp7bjoiUlJETW92ZSJ9LDMz''@;'; put 'put ''MDp7bjoiUlJGb3JtYXQifSwzMzE6e246IlJSQXV0b0ZtdCJ9LDMzMzp7bjoiUlJJbnNlcnRTaCJ9LDMzNDp7bjoiUlJETW92ZUJlZ2luIn0sMzM1OntuOiJSUkRNb3ZlRW5kIn0sMzM2OntuOiJSUkRJbnNEZWxCZWdpbiJ9LDMzNzp7bjoiUlJESW5zRGVsRW5kIn0sMzM4OntuOiJSUkRDb25m''@;'; put 'put ''bGljdCJ9LDMzOTp7bjoiUlJERGVmTmFtZSJ9LDM0MDp7bjoiUlJEUnN0RXR4cCJ9LDM1MTp7bjoiTFJuZyJ9LDM1Mjp7bjoiVXNlc0VMRnMiLGY6dGF9LDM1Mzp7bjoiRFNGIixmOkZsfSw0MDE6e246IkNVc3IifSw0MDI6e246IkNiVXNyIn0sNDAzOntuOiJVc3JJbmZvIn0sNDA0OntuOiJV''@;'; put 'put ''c3JFeGNsIn0sNDA1OntuOiJGaWxlTG9jayJ9LDQwNjp7bjoiUlJESW5mbyJ9LDQwNzp7bjoiQkNVc3JzIn0sNDA4OntuOiJVc3JDaGsifSw0MjU6e246IlVzZXJCVmlldyJ9LDQyNjp7bjoiVXNlclNWaWV3QmVnaW4ifSw0Mjc6e246IlVzZXJTVmlld0VuZCJ9LDQyODp7bjoiUlJEVXNlclZp''@;'; put 'put ''ZXcifSw0Mjk6e246IlFzaSJ9LDQzMDp7bjoiU3VwQm9vayIsZjpmdW5jdGlvbiBiUihILGllLFgpe3ZhciB3ZT1ILmwraWUseGU9SC5yZWFkX3NoaWZ0KDIpLEZlPUgucmVhZF9zaGlmdCgyKTtpZihYLnNiY2NoPUZlLDEwMjU9PUZlfHwxNDg0OT09RmUpcmV0dXJuW0ZlLHhlXTtpZihGZTwx''@;'; put 'put ''fHxGZT4yNTUpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIFN1cEJvb2sgdHlwZTogIitGZSk7Zm9yKHZhciBaZT1jdShILEZlKSxqZT1bXTt3ZT5ILmw7KWplLnB1c2goeDQoSCkpO3JldHVybltGZSx4ZSxaZSxqZV19fSw0MzE6e246IlByb3Q0UmV2IixmOnRhfSw0MzI6e246IkNvbmRG''@;'; put 'put ''bXQifSw0MzM6e246IkNGIn0sNDM0OntuOiJEVmFsIn0sNDM3OntuOiJEQ29uQmluIn0sNDM4OntuOiJUeE8iLGY6ZnVuY3Rpb24gWU0oSCxpZSxYKXt2YXIgd2U9SC5sLHhlPSIiLEZlPS0xO3RyeXtILmwrPTQsLTE9PVswLDUsNywxMSwxMiwxNF0uaW5kZXhPZigoWC5sYXN0b2JqfHx7Y21v''@;'; put 'put ''OlswLDBdfSkuY21vWzFdKT9ILmwrPTY6ZnVuY3Rpb24gTDgoSCl7dmFyIGllPUgucmVhZF9zaGlmdCgxKTtILmwrKzt2YXIgWD1ILnJlYWRfc2hpZnQoMik7SC5sKz0yfShIKTt2YXIgWWU9SC5yZWFkX3NoaWZ0KDIpO0gucmVhZF9zaGlmdCgyKSxGZT1ILnJlYWRfc2hpZnQoMik7dmFyIHh0''@;'; put 'put ''PUgucmVhZF9zaGlmdCgyKTtILmwrPXh0O2Zvcih2YXIgUnQ9MTtSdDxILmxlbnMubGVuZ3RoLTE7KytSdCl7aWYoSC5sLXdlIT1ILmxlbnNbUnRdKXRocm93IG5ldyBFcnJvcigiVHhPOiBiYWQgY29udGludWUgcmVjb3JkIik7dmFyIFV0PUhbSC5sXTtpZigoeGUrPWN1KEgsSC5sZW5zW1J0''@;'; put 'put ''KzFdLUgubGVuc1tSdF0tMSkpLmxlbmd0aD49KFV0P1llOjIqWWUpKWJyZWFrfWlmKHhlLmxlbmd0aCE9PVllJiZ4ZS5sZW5ndGghPT0yKlllKXRocm93IG5ldyBFcnJvcigiY2NoVGV4dDogIitZZSsiICE9ICIreGUubGVuZ3RoKTtyZXR1cm4gSC5sPXdlK2llLHt0OnhlLGlmbnQ6RmV9fWNh''@;'; put 'put ''dGNoKENuKXtyZXR1cm4gSC5sPXdlK2llLHt0OnhlLGlmbnQ6RmV9fX19LDQzOTp7bjoiUmVmcmVzaEFsbCIsZjp0YX0sNDQwOntuOiJITGluayIsZjpmdW5jdGlvbiBMNChILGllKXt2YXIgWD1uNihIKTtILmwrPTE2O3ZhciB3ZT1mdW5jdGlvbiBraChILGllKXt2YXIgWD1ILmwraWUsd2U9''@;'; put 'put ''SC5yZWFkX3NoaWZ0KDQpO2lmKDIhPT13ZSl0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBzdHJlYW1WZXJzaW9uOiAiK3dlKTt2YXIgeGU9SC5yZWFkX3NoaWZ0KDIpO0gubCs9Mjt2YXIgRmUsWmUsamUsWWUseHQsUnQsTXQ9IiI7MTYmeGUmJihGZT1xcChIKSksMTI4JnhlJiYoWmU9''@;'; put 'put ''cXAoSCkpLDI1Nz09KDI1NyZ4ZSkmJihqZT1xcChIKSksMT09KDI1NyZ4ZSkmJihZZT1mdW5jdGlvbiBPOChILGllKXt2YXIgWD1ILnJlYWRfc2hpZnQoMTYpO3N3aXRjaChYKXtjYXNlImUwYzllYTc5ZjliYWNlMTE4YzgyMDBhYTAwNGJhOTBiIjpyZXR1cm4gZnVuY3Rpb24gTk0oSCl7dmFy''@;'; put 'put ''IGllPUgucmVhZF9zaGlmdCg0KSxYPUgubCx3ZT0hMTtpZT4yNCYmKEgubCs9aWUtMjQsIjc5NTg4MWY0M2IxZDdmNDhhZjJjODI1ZGM0ODUyNzYzIj09PUgucmVhZF9zaGlmdCgxNikmJih3ZT0hMCksSC5sPVgpO3ZhciB4ZT1ILnJlYWRfc2hpZnQoKHdlP2llLTI0OmllKT4+MSwidXRmMTZs''@;'; put 'put ''ZSIpLnJlcGxhY2UoVCwiIik7cmV0dXJuIHdlJiYoSC5sKz0yNCkseGV9KEgpO2Nhc2UiMDMwMzAwMDAwMDAwMDAwMGMwMDAwMDAwMDAwMDAwNDYiOnJldHVybiBmdW5jdGlvbiAkcChIKXtmb3IodmFyIGllPUgucmVhZF9zaGlmdCgyKSxYPSIiO2llLS0gPjA7KVgrPSIuLi8iO3ZhciB3ZT1I''@;'; put 'put ''LnJlYWRfc2hpZnQoMCwibHBzdHItYW5zaSIpO2lmKEgubCs9Miw1NzAwNSE9SC5yZWFkX3NoaWZ0KDIpKXRocm93IG5ldyBFcnJvcigiQmFkIEZpbGVNb25pa2VyIik7aWYoMD09PUgucmVhZF9zaGlmdCg0KSlyZXR1cm4gWCt3ZS5yZXBsYWNlKC9cXC9nLCIvIik7dmFyIEZlPUgucmVhZF9z''@;'; put 'put ''aGlmdCg0KTtpZigzIT1ILnJlYWRfc2hpZnQoMikpdGhyb3cgbmV3IEVycm9yKCJCYWQgRmlsZU1vbmlrZXIiKTtyZXR1cm4gWCtILnJlYWRfc2hpZnQoRmU+PjEsInV0ZjE2bGUiKS5yZXBsYWNlKFQsIiIpfShIKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgTW9uaWtl''@;'; put 'put ''ciAiK1gpfX0oSCkpLDgmeGUmJihNdD1xcChIKSksMzImeGUmJih4dD1ILnJlYWRfc2hpZnQoMTYpKSw2NCZ4ZSYmKFJ0PVQ4KEgpKSxILmw9WDt2YXIgVXQ9WmV8fGplfHxZZXx8IiI7VXQmJk10JiYoVXQrPSIjIitNdCksVXR8fChVdD0iIyIrTXQpLDImeGUmJiIvIj09VXQuY2hhckF0KDAp''@;'; put 'put ''JiYiLyIhPVV0LmNoYXJBdCgxKSYmKFV0PSJmaWxlOi8vIitVdCk7dmFyIG5uPXtUYXJnZXQ6VXR9O3JldHVybiB4dCYmKG5uLmd1aWQ9eHQpLFJ0JiYobm4udGltZT1SdCksRmUmJihubi5Ub29sdGlwPUZlKSxubn0oSCxpZS0yNCk7cmV0dXJuW1gsd2VdfX0sNDQxOntuOiJMZWwifSw0NDI6''@;'; put 'put ''e246IkNvZGVOYW1lIixmOng0fSw0NDM6e246IlNYRkRCVHlwZSJ9LDQ0NDp7bjoiUHJvdDRSZXZQYXNzIixmOmMxfSw0NDU6e246Ik9iTm9NYWNyb3MifSw0NDY6e246IkR2In0sNDQ4OntuOiJFeGNlbDlGaWxlIixmOkZsfSw0NDk6e246IlJlY2FsY0lkIixmOmZ1bmN0aW9uIEhzKEgpe3Jl''@;'; put 'put ''dHVybiBILnJlYWRfc2hpZnQoMiksSC5yZWFkX3NoaWZ0KDQpfSxyOjJ9LDQ1MDp7bjoiRW50RXhVMiIsZjpGbH0sNTEyOntuOiJEaW1lbnNpb25zIixmOmltfSw1MTM6e246IkJsYW5rIixmOlRSfSw1MTU6e246Ik51bWJlciIsZjpmdW5jdGlvbiBIOChILGllLFgpe1guYmlmZmd1ZXNzJiYy''@;'; put 'put ''PT1YLmJpZmYmJihYLmJpZmY9NSk7dmFyIHdlPUFjKEgpLHhlPUkyKEgpO3JldHVybiB3ZS52YWw9eGUsd2V9fSw1MTY6e246IkxhYmVsIixmOmZ1bmN0aW9uIGw2KEgsaWUsWCl7WC5iaWZmZ3Vlc3MmJjI9PVguYmlmZiYmKFguYmlmZj01KTt2YXIgeGU9QWMoSCk7Mj09WC5iaWZmJiZILmwr''@;'; put 'put ''Kzt2YXIgRmU9eDQoSCwwLFgpO3JldHVybiB4ZS52YWw9RmUseGV9fSw1MTc6e246IkJvb2xFcnIiLGY6YW19LDUxOTp7bjoiU3RyaW5nIixmOno4fSw1MjA6e246IlJvdyIsZjpmdW5jdGlvbiBWdChIKXt2YXIgaWU9e307aWUucj1ILnJlYWRfc2hpZnQoMiksaWUuYz1ILnJlYWRfc2hpZnQo''@;'; put 'put ''MiksaWUuY250PUgucmVhZF9zaGlmdCgyKS1pZS5jO3ZhciBYPUgucmVhZF9zaGlmdCgyKTtILmwrPTQ7dmFyIHdlPUgucmVhZF9zaGlmdCgxKTtILmwrPTE7dmFyIHhlPUgucmVhZF9zaGlmdCgyKTtyZXR1cm4gaWUuaXhmZT00MDk1JnhlLDcmd2UmJihpZS5sZXZlbD03JndlKSwzMiZ3ZSYm''@;'; put 'put ''KGllLmhpZGRlbj0hMCksNjQmd2UmJihpZS5ocHQ9WC8yMCksaWV9fSw1MjM6e246IkluZGV4In0sNTQ1OntuOiJBcnJheSIsZjpnYn0sNTQ5OntuOiJEZWZhdWx0Um93SGVpZ2h0IixmOldjfSw1NjY6e246IlRhYmxlIn0sNTc0OntuOiJXaW5kb3cyIixmOmZ1bmN0aW9uIGdSKEgsaWUsWCl7''@;'; put 'put ''aWYoWCYmWC5iaWZmPj0yJiZYLmJpZmY8NSlyZXR1cm57fTt2YXIgd2U9SC5yZWFkX3NoaWZ0KDIpO3JldHVybntSVEw6NjQmd2UsZ3JpZDohISgyJndlKSxmcm96ZW46ISEoOCZ3ZSl9fX0sNjM4OntuOiJSSyIsZjpmdW5jdGlvbiBBUihIKXt2YXIgaWU9SC5yZWFkX3NoaWZ0KDIpLFg9SC5y''@;'; put 'put ''ZWFkX3NoaWZ0KDIpLHdlPXRtKEgpO3JldHVybntyOmllLGM6WCxpeGZlOndlWzBdLHJrbnVtOndlWzFdfX19LDY1OTp7bjoiU3R5bGUiLGY6ZnVuY3Rpb24gek0oSCxpZSxYKXtyZXR1cm4gSC5sKz1pZSx7fX19LDEwNDg6e246IkJpZ05hbWUifSwxMDU0OntuOiJGb3JtYXQiLGY6ZnVuY3Rp''@;'; put 'put ''b24gdlIoSCxpZSxYKXtyZXR1cm5bSC5yZWFkX3NoaWZ0KDIpLGRmKEgsMCxYKV19fSwxMDg0OntuOiJDb250aW51ZUJpZ05hbWUifSwxMjEyOntuOiJTaHJGbWxhIixmOmZ1bmN0aW9uIENpKEgsaWUsWCl7dmFyIHdlPVQ0KEgpO0gubCsrO3ZhciB4ZT1ILnJlYWRfc2hpZnQoMSk7cmV0dXJu''@;'; put 'put ''W3M1KEgsaWUtPTgsWCkseGUsd2VdfX0sMjA0ODp7bjoiSExpbmtUb29sdGlwIixmOmZ1bmN0aW9uIFFNKEgsaWUpe0gucmVhZF9zaGlmdCgyKTt2YXIgWD1uNihIKSx3ZT1ILnJlYWRfc2hpZnQoKGllLTEwKS8yLCJkYmNzLWNvbnQiKTtyZXR1cm5bWCx3ZT13ZS5yZXBsYWNlKFQsIiIpXX19''@;'; put 'put ''LDIwNDk6e246IldlYlB1YiJ9LDIwNTA6e246IlFzaVNYVGFnIn0sMjA1MTp7bjoiREJRdWVyeUV4dCJ9LDIwNTI6e246IkV4dFN0cmluZyJ9LDIwNTM6e246IlR4dFFyeSJ9LDIwNTQ6e246IlFzaXIifSwyMDU1OntuOiJRc2lmIn0sMjA1Njp7bjoiUlJEVFFTSUYifSwyMDU3OntuOiJCT0Yi''@;'; put 'put ''LGY6RHV9LDIwNTg6e246Ik9sZURiQ29ubiJ9LDIwNTk6e246IldPcHQifSwyMDYwOntuOiJTWFZpZXdFeCJ9LDIwNjE6e246IlNYVEgifSwyMDYyOntuOiJTWFBJRXgifSwyMDYzOntuOiJTWFZEVEV4In0sMjA2NDp7bjoiU1hWaWV3RXg5In0sMjA2Njp7bjoiQ29udGludWVGcnQifSwyMDY3''@;'; put 'put ''OntuOiJSZWFsVGltZURhdGEifSwyMTI4OntuOiJDaGFydEZydEluZm8ifSwyMTI5OntuOiJGcnRXcmFwcGVyIn0sMjEzMDp7bjoiU3RhcnRCbG9jayJ9LDIxMzE6e246IkVuZEJsb2NrIn0sMjEzMjp7bjoiU3RhcnRPYmplY3QifSwyMTMzOntuOiJFbmRPYmplY3QifSwyMTM0OntuOiJDYXRM''@;'; put 'put ''YWIifSwyMTM1OntuOiJZTXVsdCJ9LDIxMzY6e246IlNYVmlld0xpbmsifSwyMTM3OntuOiJQaXZvdENoYXJ0Qml0cyJ9LDIxMzg6e246IkZydEZvbnRMaXN0In0sMjE0Njp7bjoiU2hlZXRFeHQifSwyMTQ3OntuOiJCb29rRXh0IixyOjEyfSwyMTQ4OntuOiJTWEFkZGwifSwyMTQ5OntuOiJD''@;'; put 'put ''ckVyciJ9LDIxNTA6e246IkhGUGljdHVyZSJ9LDIxNTE6e246IkZlYXRIZHIiLGY6Rmx9LDIxNTI6e246IkZlYXQifSwyMTU0OntuOiJEYXRhTGFiRXh0In0sMjE1NTp7bjoiRGF0YUxhYkV4dENvbnRlbnRzIn0sMjE1Njp7bjoiQ2VsbFdhdGNoIn0sMjE2MTp7bjoiRmVhdEhkcjExIn0sMjE2''@;'; put 'put ''Mjp7bjoiRmVhdHVyZTExIn0sMjE2NDp7bjoiRHJvcERvd25PYmpJZHMifSwyMTY1OntuOiJDb250aW51ZUZydDExIn0sMjE2Njp7bjoiRENvbm4ifSwyMTY3OntuOiJMaXN0MTIifSwyMTY4OntuOiJGZWF0dXJlMTIifSwyMTY5OntuOiJDb25kRm10MTIifSwyMTcwOntuOiJDRjEyIn0sMjE3''@;'; put 'put ''MTp7bjoiQ0ZFeCJ9LDIxNzI6e246IlhGQ1JDIixmOmZ1bmN0aW9uIHVtKEgpe0gubCs9Mjt2YXIgaWU9e2N4ZnM6MCxjcmM6MH07cmV0dXJuIGllLmN4ZnM9SC5yZWFkX3NoaWZ0KDIpLGllLmNyYz1ILnJlYWRfc2hpZnQoNCksaWV9LHI6MTJ9LDIxNzM6e246IlhGRXh0IixmOmZ1bmN0aW9u''@;'; put 'put ''IGNCKEgsaWUpe0gubCs9Mjt2YXIgd2U9SC5yZWFkX3NoaWZ0KDIpO0gubCs9Mjtmb3IodmFyIHhlPUgucmVhZF9zaGlmdCgyKSxGZT1bXTt4ZS0tID4wOylGZS5wdXNoKHVCKEgpKTtyZXR1cm57aXhmZTp3ZSxleHQ6RmV9fSxyOjEyfSwyMTc0OntuOiJBdXRvRmlsdGVyMTIifSwyMTc1Ontu''@;'; put 'put ''OiJDb250aW51ZUZydDEyIn0sMjE4MDp7bjoiTURUSW5mbyJ9LDIxODE6e246Ik1EWFN0ciJ9LDIxODI6e246Ik1EWFR1cGxlIn0sMjE4Mzp7bjoiTURYU2V0In0sMjE4NDp7bjoiTURYUHJvcCJ9LDIxODU6e246Ik1EWEtQSSJ9LDIxODY6e246Ik1EQiJ9LDIxODc6e246IlBMViJ9LDIxODg6''@;'; put 'put ''e246IkNvbXBhdDEyIixmOnRhLHI6MTJ9LDIxODk6e246IkRYRiJ9LDIxOTA6e246IlRhYmxlU3R5bGVzIixyOjEyfSwyMTkxOntuOiJUYWJsZVN0eWxlIn0sMjE5Mjp7bjoiVGFibGVTdHlsZUVsZW1lbnQifSwyMTk0OntuOiJTdHlsZUV4dCJ9LDIxOTU6e246Ik5hbWVQdWJsaXNoIn0sMjE5''@;'; put 'put ''Njp7bjoiTmFtZUNtdCIsZjpmdW5jdGlvbiBfUihILGllLFgpe2lmKCEoWC5iaWZmPDgpKXt2YXIgd2U9SC5yZWFkX3NoaWZ0KDIpLHhlPUgucmVhZF9zaGlmdCgyKTtyZXR1cm5bY3UoSCx3ZSxYKSxjdShILHhlLFgpXX1ILmwrPWllfSxyOjEyfSwyMTk3OntuOiJTb3J0RGF0YSJ9LDIxOTg6''@;'; put 'put ''e246IlRoZW1lIixmOmZ1bmN0aW9uIGxCKEgsaWUsWCl7dmFyIHdlPUgubCtpZTtpZigxMjQyMjYhPT1ILnJlYWRfc2hpZnQoNCkpe2lmKCFYLmNlbGxTdHlsZXMpcmV0dXJuIHZvaWQoSC5sPXdlKTt2YXIgWmUsRmU9SC5zbGljZShILmwpO0gubD13ZTt0cnl7WmU9bW4oRmUse3R5cGU6ImFy''@;'; put 'put ''cmF5In0pfWNhdGNoKFllKXtyZXR1cm59dmFyIGplPVVuKFplLCJ0aGVtZS90aGVtZS90aGVtZTEueG1sIiwhMCk7aWYoamUpcmV0dXJuIEg5KGplLFgpfX0scjoxMn0sMjE5OTp7bjoiR1VJRFR5cGVMaWIifSwyMjAwOntuOiJGbkdycDEyIn0sMjIwMTp7bjoiTmFtZUZuR3JwMTIifSwyMjAy''@;'; put 'put ''OntuOiJNVFJTZXR0aW5ncyIsZjpmdW5jdGlvbiBoMihIKXtyZXR1cm5bMCE9PUgucmVhZF9zaGlmdCg0KSwwIT09SC5yZWFkX3NoaWZ0KDQpLEgucmVhZF9zaGlmdCg0KV19LHI6MTJ9LDIyMDM6e246IkNvbXByZXNzUGljdHVyZXMiLGY6Rmx9LDIyMDQ6e246IkhlYWRlckZvb3RlciJ9LDIy''@;'; put 'put ''MDU6e246IkNydExheW91dDEyIn0sMjIwNjp7bjoiQ3J0TWxGcnQifSwyMjA3OntuOiJDcnRNbEZydENvbnRpbnVlIn0sMjIxMTp7bjoiRm9yY2VGdWxsQ2FsY3VsYXRpb24iLGY6ZnVuY3Rpb24gUm4oSCl7dmFyIGllPWZ1bmN0aW9uIHNiKEgpe3ZhciBpZT1ILnJlYWRfc2hpZnQoMiksWD1I''@;'; put 'put ''LnJlYWRfc2hpZnQoMik7cmV0dXJuIEgubCs9OCx7dHlwZTppZSxmbGFnczpYfX0oSCk7aWYoMjIxMSE9aWUudHlwZSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRnV0dXJlIFJlY29yZCAiK2llLnR5cGUpO3JldHVybiAwIT09SC5yZWFkX3NoaWZ0KDQpfX0sMjIxMjp7bjoiU2hhcGVQcm9w''@;'; put 'put ''c1N0cmVhbSJ9LDIyMTM6e246IlRleHRQcm9wc1N0cmVhbSJ9LDIyMTQ6e246IlJpY2hUZXh0U3RyZWFtIn0sMjIxNTp7bjoiQ3J0TGF5b3V0MTJBIn0sNDA5Nzp7bjoiVW5pdHMifSw0MDk4OntuOiJDaGFydCJ9LDQwOTk6e246IlNlcmllcyJ9LDQxMDI6e246IkRhdGFGb3JtYXQifSw0MTAz''@;'; put 'put ''OntuOiJMaW5lRm9ybWF0In0sNDEwNTp7bjoiTWFya2VyRm9ybWF0In0sNDEwNjp7bjoiQXJlYUZvcm1hdCJ9LDQxMDc6e246IlBpZUZvcm1hdCJ9LDQxMDg6e246IkF0dGFjaGVkTGFiZWwifSw0MTA5OntuOiJTZXJpZXNUZXh0In0sNDExNjp7bjoiQ2hhcnRGb3JtYXQifSw0MTE3OntuOiJM''@;'; put 'put ''ZWdlbmQifSw0MTE4OntuOiJTZXJpZXNMaXN0In0sNDExOTp7bjoiQmFyIn0sNDEyMDp7bjoiTGluZSJ9LDQxMjE6e246IlBpZSJ9LDQxMjI6e246IkFyZWEifSw0MTIzOntuOiJTY2F0dGVyIn0sNDEyNDp7bjoiQ3J0TGluZSJ9LDQxMjU6e246IkF4aXMifSw0MTI2OntuOiJUaWNrIn0sNDEy''@;'; put 'put ''Nzp7bjoiVmFsdWVSYW5nZSJ9LDQxMjg6e246IkNhdFNlclJhbmdlIn0sNDEyOTp7bjoiQXhpc0xpbmUifSw0MTMwOntuOiJDcnRMaW5rIn0sNDEzMjp7bjoiRGVmYXVsdFRleHQifSw0MTMzOntuOiJUZXh0In0sNDEzNDp7bjoiRm9udFgiLGY6YzF9LDQxMzU6e246Ik9iamVjdExpbmsifSw0''@;'; put 'put ''MTQ2OntuOiJGcmFtZSJ9LDQxNDc6e246IkJlZ2luIn0sNDE0ODp7bjoiRW5kIn0sNDE0OTp7bjoiUGxvdEFyZWEifSw0MTU0OntuOiJDaGFydDNkIn0sNDE1Njp7bjoiUGljRiJ9LDQxNTc6e246IkRyb3BCYXIifSw0MTU4OntuOiJSYWRhciJ9LDQxNTk6e246IlN1cmYifSw0MTYwOntuOiJS''@;'; put 'put ''YWRhckFyZWEifSw0MTYxOntuOiJBeGlzUGFyZW50In0sNDE2Mzp7bjoiTGVnZW5kRXhjZXB0aW9uIn0sNDE2NDp7bjoiU2h0UHJvcHMiLGY6ZnVuY3Rpb24gVXooSCxpZSxYKXt2YXIgd2U9e2FyZWE6ITF9O2lmKDUhPVguYmlmZilyZXR1cm4gSC5sKz1pZSx3ZTt2YXIgeGU9SC5yZWFkX3No''@;'; put 'put ''aWZ0KDEpO3JldHVybiBILmwrPTMsMTYmeGUmJih3ZS5hcmVhPSEwKSx3ZX19LDQxNjU6e246IlNlclRvQ3J0In0sNDE2Njp7bjoiQXhlc1VzZWQifSw0MTY4OntuOiJTQmFzZVJlZiJ9LDQxNzA6e246IlNlclBhcmVudCJ9LDQxNzE6e246IlNlckF1eFRyZW5kIn0sNDE3NDp7bjoiSUZtdFJl''@;'; put 'put ''Y29yZCJ9LDQxNzU6e246IlBvcyJ9LDQxNzY6e246IkFsUnVucyJ9LDQxNzc6e246IkJSQUkifSw0MTg3OntuOiJTZXJBdXhFcnJCYXIifSw0MTg4OntuOiJDbHJ0Q2xpZW50IixmOmZ1bmN0aW9uIFNSKEgpe2Zvcih2YXIgaWU9SC5yZWFkX3NoaWZ0KDIpLFg9W107aWUtLSA+MDspWC5wdXNo''@;'; put 'put ''KFI4KEgpKTtyZXR1cm4gWH19LDQxODk6e246IlNlckZtdCJ9LDQxOTE6e246IkNoYXJ0M0RCYXJTaGFwZSJ9LDQxOTI6e246IkZiaSJ9LDQxOTM6e246IkJvcFBvcCJ9LDQxOTQ6e246IkF4Y0V4dCJ9LDQxOTU6e246IkRhdCJ9LDQxOTY6e246IlBsb3RHcm93dGgifSw0MTk3OntuOiJTSUlu''@;'; put 'put ''ZGV4In0sNDE5ODp7bjoiR2VsRnJhbWUifSw0MTk5OntuOiJCb3BQb3BDdXN0b20ifSw0MjAwOntuOiJGYmkyIn0sMDp7bjoiRGltZW5zaW9ucyIsZjppbX0sMTp7bjoiQklGRjJCTEFOSyJ9LDI6e246IkJJRkYySU5UIixmOmZ1bmN0aW9uIG1iKEgpe3ZhciBpZT1BYyhIKTsrK0gubDt2YXIg''@;'; put 'put ''WD1ILnJlYWRfc2hpZnQoMik7cmV0dXJuIGllLnQ9Im4iLGllLnZhbD1YLGllfX0sMzp7bjoiQklGRjJOVU0iLGY6ZnVuY3Rpb24gJE0oSCl7dmFyIGllPUFjKEgpOysrSC5sO3ZhciBYPUkyKEgpO3JldHVybiBpZS50PSJuIixpZS52YWw9WCxpZX19LDQ6e246IkJJRkYyU1RSIixmOmZ1bmN0''@;'; put 'put ''aW9uIFF6KEgsaWUsWCl7WC5iaWZmZ3Vlc3MmJjU9PVguYmlmZiYmKFguYmlmZj0yKTt2YXIgd2U9QWMoSCk7KytILmw7dmFyIHhlPWRmKEgsMCxYKTtyZXR1cm4gd2UudD0ic3RyIix3ZS52YWw9eGUsd2V9fSw1OntuOiJCb29sRXJyIixmOmFtfSw3OntuOiJTdHJpbmciLGY6ZnVuY3Rpb24g''@;'; put 'put ''cU0oSCl7dmFyIGllPUgucmVhZF9zaGlmdCgxKTtyZXR1cm4gMD09PWllPyhILmwrKywiIik6SC5yZWFkX3NoaWZ0KGllLCJzYmNzLWNvbnQiKX19LDg6e246IkJJRkYyUk9XIn0sOTp7bjoiQk9GIixmOkR1fSwxMTp7bjoiSW5kZXgifSwyMjp7bjoiRXh0ZXJuQ291bnQiLGY6YzF9LDMwOntu''@;'; put 'put ''OiJCSUZGMkZPUk1BVCIsZjpZY30sMzE6e246IkJJRkYyRk1UQ05UIn0sMzI6e246IkJJRkYyQ09MSU5GTyJ9LDMzOntuOiJBcnJheSIsZjpnYn0sMzY6e246IkNPTFdJRFRIIn0sMzc6e246IkRlZmF1bHRSb3dIZWlnaHQiLGY6V2N9LDUwOntuOiJCSUZGMkZPTlRYVFJBIixmOmZ1bmN0aW9u''@;'; put 'put ''IEc4KEgsaWUpe0gubCs9NixILmwrPTIsSC5sKz0xLEgubCs9MyxILmwrPTEsSC5sKz1pZS0xM319LDYyOntuOiJCSUZGMldJTkRPVzIifSw1Mjp7bjoiRERFT2JqTmFtZSJ9LDY3OntuOiJCSUZGMlhGIn0sNjg6e246IkJJRkYyWEZJTkRFWCIsZjpjMX0sNjk6e246IkJJRkYyRk9OVENMUiJ9''@;'; put 'put ''LDg2OntuOiJCSUZGNEZNVENOVCJ9LDEyNjp7bjoiUksifSwxMjc6e246IkltRGF0YSIsZjpmdW5jdGlvbiBLTShIKXt2YXIgaWU9SC5yZWFkX3NoaWZ0KDIpLFg9SC5yZWFkX3NoaWZ0KDIpLHdlPUgucmVhZF9zaGlmdCg0KSx4ZT17Zm10OmllLGVudjpYLGxlbjp3ZSxkYXRhOkguc2xpY2Uo''@;'; put 'put ''SC5sLEgubCt3ZSl9O3JldHVybiBILmwrPXdlLHhlfX0sMTM1OntuOiJBZGRpbiJ9LDEzNjp7bjoiRWRnIn0sMTM3OntuOiJQdWIifSwxNDU6e246IlN1YiJ9LDE0ODp7bjoiTEhSZWNvcmQifSwxNDk6e246IkxITkdyYXBoIn0sMTUwOntuOiJTb3VuZCJ9LDE2OTp7bjoiQ29vcmRMaXN0In0s''@;'; put 'put ''MTcxOntuOiJHQ1cifSwxODg6e246IlNockZtbGEifSwxOTE6e246IlRvb2xiYXJIZHIifSwxOTI6e246IlRvb2xiYXJFbmQifSwxOTQ6e246IkFkZE1lbnUifSwxOTU6e246IkRlbE1lbnUifSwyMTQ6e246IlJTdHJpbmciLGY6ZnVuY3Rpb24gY20oSCxpZSxYKXt2YXIgd2U9SC5sK2llLHhl''@;'; put 'put ''PUFjKEgpLEZlPUgucmVhZF9zaGlmdCgyKSxaZT1jdShILEZlLFgpO3JldHVybiBILmw9d2UseGUudD0ic3RyIix4ZS52YWw9WmUseGV9fSwyMjM6e246IlVERGVzYyJ9LDIzNDp7bjoiVGFiSWRDb25mIn0sMzU0OntuOiJYTDVNb2RpZnkifSw0MjE6e246IkZpbGVTaGFyaW5nMiJ9LDUxODp7''@;'; put 'put ''bjoiRm9ybXVsYSIsZjp1NX0sNTIxOntuOiJCT0YiLGY6RHV9LDUzNjp7bjoiTGJsIixmOnBifSw1NDc6e246IkV4dGVybk5hbWUiLGY6R019LDU2MTp7bjoiRm9udCJ9LDU3OTp7bjoiQklGRjNYRiJ9LDEwMzA6e246IkZvcm11bGEiLGY6dTV9LDEwMzM6e246IkJPRiIsZjpEdX0sMTA5MTp7''@;'; put 'put ''bjoiQklGRjRYRiJ9LDIxNTc6e246IkZlYXRJbmZvIn0sMjE2Mzp7bjoiRmVhdEluZm8xMSJ9LDIxNzc6e246IlNYQWRkbDEyIn0sMjI0MDp7bjoiQXV0b1dlYlB1YiJ9LDIyNDE6e246Ikxpc3RPYmoifSwyMjQyOntuOiJMaXN0RmllbGQifSwyMjQzOntuOiJMaXN0RFYifSwyMjQ0OntuOiJM''@;'; put 'put ''aXN0Q29uZEZtdCJ9LDIyNDU6e246Ikxpc3RDRiJ9LDIyNDY6e246IkZNUXJ5In0sMjI0Nzp7bjoiRk1TUXJ5In0sMjI0ODp7bjoiUExWIn0sMjI0OTp7bjoiTG5FeHQifSwyMjUwOntuOiJNa3JFeHQifSwyMjUxOntuOiJDcnRDb29wdCJ9LDIyNjI6e246IkZSVEFyY2hJZCQiLHI6MTJ9LDI5''@;'; put 'put ''MjgyOnt9fSxQMz1fdChObCwibiIpO2Z1bmN0aW9uIHMwKEgsaWUsWCx3ZSl7dmFyIHhlPStpZXx8K1AzW2llXTtpZighaXNOYU4oeGUpKXt2YXIgRmU9d2V8fChYfHxbXSkubGVuZ3RofHwwLFplPUgubmV4dCg0KTtaZS53cml0ZV9zaGlmdCgyLHhlKSxaZS53cml0ZV9zaGlmdCgyLEZlKSxG''@;'; put 'put ''ZT4wJiZUMihYKSYmSC5wdXNoKFgpfX1mdW5jdGlvbiBpcyhILGllLFgpe3JldHVybiBIfHwoSD1SaSg3KSksSC53cml0ZV9zaGlmdCgyLGllKSxILndyaXRlX3NoaWZ0KDIsWCksSC53cml0ZV9zaGlmdCgyLDApLEgud3JpdGVfc2hpZnQoMSwwKSxIfWZ1bmN0aW9uIHhBKEgsaWUsWCx3ZSl7''@;'; put 'put ''aWYobnVsbCE9aWUudilzd2l0Y2goaWUudCl7Y2FzZSJkIjpjYXNlIm4iOnZhciB4ZT0iZCI9PWllLnQ/ZnQoZG4oaWUudikpOmllLnY7cmV0dXJuIHZvaWQoeGU9PSgwfHhlKSYmeGU+PTAmJnhlPDY1NTM2P3MwKEgsMixmdW5jdGlvbiBEUihILGllLFgpe3ZhciB3ZT1SaSg5KTtyZXR1cm4g''@;'; put 'put ''aXMod2UsSCxpZSksd2Uud3JpdGVfc2hpZnQoMixYKSx3ZX0oWCx3ZSx4ZSkpOnMwKEgsMyxmdW5jdGlvbiBKeihILGllLFgpe3ZhciB3ZT1SaSgxNSk7cmV0dXJuIGlzKHdlLEgsaWUpLHdlLndyaXRlX3NoaWZ0KDgsWCwiZiIpLHdlfShYLHdlLHhlKSkpO2Nhc2UiYiI6Y2FzZSJlIjpyZXR1''@;'; put 'put ''cm4gdm9pZCBzMChILDUsZnVuY3Rpb24gQ2MoSCxpZSxYLHdlKXt2YXIgeGU9UmkoOSk7cmV0dXJuIGlzKHhlLEgsaWUpLFoxKFgsd2V8fCJiIix4ZSkseGV9KFgsd2UsaWUudixpZS50KSk7Y2FzZSJzIjpjYXNlInN0ciI6cmV0dXJuIHZvaWQgczAoSCw0LGZ1bmN0aW9uIHB1KEgsaWUsWCl7''@;'; put 'put ''dmFyIHdlPVJpKDgrMipYLmxlbmd0aCk7cmV0dXJuIGlzKHdlLEgsaWUpLHdlLndyaXRlX3NoaWZ0KDEsWC5sZW5ndGgpLHdlLndyaXRlX3NoaWZ0KFgubGVuZ3RoLFgsInNiY3MiKSx3ZS5sPHdlLmxlbmd0aD93ZS5zbGljZSgwLHdlLmwpOndlfShYLHdlLChpZS52fHwiIikuc2xpY2UoMCwy''@;'; put 'put ''NTUpKSl9czAoSCwxLGlzKG51bGwsWCx3ZSkpfWZ1bmN0aW9uIGhUKEgsaWUsWCx3ZSx4ZSl7dmFyIEZlPTE2K1kxKHhlLmNlbGxYZnMseGUuY2VsbFN0eWxlWGZzLGllLHhlKTtpZihudWxsIT1pZS52fHxpZS5iZilpZihpZS5iZilzMChILCJGb3JtdWxhIixmdW5jdGlvbiBkRyhILGllLFgs''@;'; put 'put ''d2UseGUpe3ZhciBGZT1HZihpZSxYLHhlKSxaZT1mdW5jdGlvbiBqQihIKXtpZihudWxsPT1IKXt2YXIgaWU9UmkoOCk7cmV0dXJuIGllLndyaXRlX3NoaWZ0KDEsMyksaWUud3JpdGVfc2hpZnQoMSwwKSxpZS53cml0ZV9zaGlmdCgyLDApLGllLndyaXRlX3NoaWZ0KDIsMCksaWUud3JpdGVf''@;'; put 'put ''c2hpZnQoMiw2NTUzNSksaWV9cmV0dXJuIHVmKCJudW1iZXIiPT10eXBlb2YgSD9IOjApfShILnYpLGplPVJpKDYpO2plLndyaXRlX3NoaWZ0KDIsMzMpLGplLndyaXRlX3NoaWZ0KDQsMCk7Zm9yKHZhciBNdD1SaShILmJmLmxlbmd0aCkseHQ9MDt4dDxILmJmLmxlbmd0aDsrK3h0KU10W3h0''@;'; put 'put ''XT1ILmJmW3h0XTtyZXR1cm4gVihbRmUsWmUsamUsTXRdKX0oaWUsWCx3ZSwwLEZlKSk7ZWxzZSBzd2l0Y2goaWUudCl7Y2FzZSJkIjpjYXNlIm4iOnMwKEgsIk51bWJlciIsZnVuY3Rpb24gTjgoSCxpZSxYLHdlKXt2YXIgeGU9UmkoMTQpO3JldHVybiBHZihILGllLHdlLHhlKSx1ZihYLHhl''@;'; put 'put ''KSx4ZX0oWCx3ZSwiZCI9PWllLnQ/ZnQoZG4oaWUudikpOmllLnYsRmUpKTticmVhaztjYXNlImIiOmNhc2UiZSI6czAoSCw1MTcsZnVuY3Rpb24gd1IoSCxpZSxYLHdlLHhlLEZlKXt2YXIgWmU9UmkoOCk7cmV0dXJuIEdmKEgsaWUsd2UsWmUpLFoxKFgsRmUsWmUpLFplfShYLHdlLGllLnYs''@;'; put 'put ''RmUsMCxpZS50KSk7YnJlYWs7Y2FzZSJzIjpjYXNlInN0ciI6aWYoeGUuYm9va1NTVCl7dmFyIGplPUM2KHhlLlN0cmluZ3MsaWUudixpZS5SP2llLnI9dTYoaWUuUik6bnVsbCx4ZS5yZXZTdHJpbmdzKTtpZihpZS5SKWZvcih2YXIgWWU9MDtZZTxpZS5SLmxlbmd0aDsrK1llKWllLlJbWWVd''@;'; put 'put ''LnMmJlkxKHhlLmNlbGxYZnMseGUuY2VsbFN0eWxlWGZzLHt0OiJuIix2OjAsczppZS5SW1llXS5zfSx4ZSk7czAoSCwiTGFiZWxTc3QiLGZ1bmN0aW9uIG1SKEgsaWUsWCx3ZSl7dmFyIHhlPVJpKDEwKTtyZXR1cm4gR2YoSCxpZSx3ZSx4ZSkseGUud3JpdGVfc2hpZnQoNCxYKSx4ZX0oWCx3''@;'; put 'put ''ZSxqZSxGZSkpfWVsc2UgczAoSCwiTGFiZWwiLGZ1bmN0aW9uIFl6KEgsaWUsWCx3ZSx4ZSl7dmFyIEZlPSF4ZXx8OD09eGUuYmlmZixaZT1SaSgrRmUrOCsoMStGZSkqWC5sZW5ndGgpO3JldHVybiBHZihILGllLHdlLFplKSxaZS53cml0ZV9zaGlmdCgyLFgubGVuZ3RoKSxGZSYmWmUud3Jp''@;'; put 'put ''dGVfc2hpZnQoMSwxKSxaZS53cml0ZV9zaGlmdCgoMStGZSkqWC5sZW5ndGgsWCxGZT8idXRmMTZsZSI6InNiY3MiKSxaZX0oWCx3ZSwoaWUudnx8IiIpLnNsaWNlKDAsMjU1KSxGZSx4ZSkpO2JyZWFrO2RlZmF1bHQ6czAoSCwiQmxhbmsiLEdmKFgsd2UsRmUpKX1lbHNlIHMwKEgsIkJsYW5r''@;'; put 'put ''IixHZihYLHdlLEZlKSl9ZnVuY3Rpb24gJHIoSCxpZSxYKXt2YXIgeHQsd2U9SjIoKSx4ZT1YLlNoZWV0TmFtZXNbSF0sRmU9WC5TaGVldHNbeGVdfHx7fSxaZT0oWHx8e30pLldvcmtib29rfHx7fSxqZT0oWmUuU2hlZXRzfHxbXSlbSF18fHt9LFllPUFycmF5LmlzQXJyYXkoRmUpLE10PTg9''@;'; put 'put ''PWllLmJpZmYsUnQ9IiIsVXQ9W10sbm49Rm8oRmVbIiFyZWYiXXx8IkExIiksQ249TXQ/NjU1MzY6MTYzODQ7aWYobm4uZS5jPjI1NXx8bm4uZS5yPj1Dbil7aWYoaWUuV1RGKXRocm93IG5ldyBFcnJvcigiUmFuZ2UgIisoRmVbIiFyZWYiXXx8IkExIikrIiBleGNlZWRzIGZvcm1hdCBsaW1p''@;'; put 'put ''dCBBMTpJVjE2Mzg0Iik7bm4uZS5jPU1hdGgubWluKG5uLmUuYywyNTUpLG5uLmUucj1NYXRoLm1pbihubi5lLmMsQ24tMSl9czAod2UsMjA1NyxnMygwLDE2LGllKSksczAod2UsIkNhbGNNb2RlIixoZigxKSksczAod2UsIkNhbGNDb3VudCIsaGYoMTAwKSksczAod2UsIkNhbGNSZWZNb2Rl''@;'; put 'put ''IixqMSghMCkpLHMwKHdlLCJDYWxjSXRlciIsajEoITEpKSxzMCh3ZSwiQ2FsY0RlbHRhIix1ZiguMDAxKSksczAod2UsIkNhbGNTYXZlUmVjYWxjIixqMSghMCkpLHMwKHdlLCJQcmludFJvd0NvbCIsajEoITEpKSxzMCh3ZSwiUHJpbnRHcmlkIixqMSghMSkpLHMwKHdlLCJHcmlkU2V0Iixo''@;'; put 'put ''ZigxKSksczAod2UsIkd1dHMiLGZ1bmN0aW9uIHc5KEgpe3ZhciBpZT1SaSg4KTtyZXR1cm4gaWUud3JpdGVfc2hpZnQoNCwwKSxpZS53cml0ZV9zaGlmdCgyLEhbMF0/SFswXSsxOjApLGllLndyaXRlX3NoaWZ0KDIsSFsxXT9IWzFdKzE6MCksaWV9KFswLDBdKSksczAod2UsIkhDZW50ZXIi''@;'; put 'put ''LGoxKCExKSksczAod2UsIlZDZW50ZXIiLGoxKCExKSk7dmFyIER0PUZlWyIhcHJpbnQiXSYmRmVbIiFwcmludCJdLm1hcmdpbnN8fEZlWyIhbWFyZ2lucyJdO0R0JiYobnVsbCE9RHQubGVmdCYmczAod2UsIkxlZnRNYXJnaW4iLHVmKER0LmxlZnQpKSxudWxsIT1EdC5yaWdodCYmczAod2Us''@;'; put 'put ''IlJpZ2h0TWFyZ2luIix1ZihEdC5yaWdodCkpLG51bGwhPUR0LnRvcCYmczAod2UsIlRvcE1hcmdpbiIsdWYoRHQudG9wKSksbnVsbCE9RHQuYm90dG9tJiZzMCh3ZSwiQm90dG9tTWFyZ2luIix1ZihEdC5ib3R0b20pKSwobnVsbCE9RHQuaGVhZGVyfHxudWxsIT1EdC5mb290ZXIpJiZzMCh3''@;'; put 'put ''ZSwiU2V0dXAiLGZ1bmN0aW9uIHhSKEgsaWUpe3ZhciBYPVJpKDM0KSx3ZT0hMSx4ZT03MDtyZXR1cm4ibGFuZHNjYXBlIj09KGllLnByb3BzfHx7fSkub3JpZW50YXRpb24mJih3ZT0hMCx4ZSY9LTY3KSx3ZSYmKHhlJj0tNSksWC53cml0ZV9zaGlmdCgyLDEpLFgud3JpdGVfc2hpZnQoMiwx''@;'; put 'put ''MDApLFgud3JpdGVfc2hpZnQoMiwwKSxYLndyaXRlX3NoaWZ0KDIsMCksWC53cml0ZV9zaGlmdCgyLDApLFgud3JpdGVfc2hpZnQoMSx4ZSksWC53cml0ZV9zaGlmdCgxLDApLFgud3JpdGVfc2hpZnQoMiw2MDApLFgud3JpdGVfc2hpZnQoMiw2MDApLHVmKG51bGw9PUguaGVhZGVyPy41Okgu''@;'; put 'put ''aGVhZGVyLFgpLHVmKG51bGw9PUguZm9vdGVyPy41OkguZm9vdGVyLFgpLFgud3JpdGVfc2hpZnQoMiwxKSxYfShEdCxGZVsiIXByaW50Il18fHt9KSkpLE10JiZmdW5jdGlvbiBmVChILGllLFgpe2lmKGllKXt2YXIgd2U9MDtpZS5mb3JFYWNoKGZ1bmN0aW9uKHhlLEZlKXsrK3dlPD0yNTYm''@;'; put 'put ''JnhlJiYoeGUuYXV0byYmUzYoWCx4ZSxGZSksczAoSCwiQ29sSW5mbyIsZnVuY3Rpb24gRVIoSCxpZSl7dmFyIFg9UmkoMTIpO1gud3JpdGVfc2hpZnQoMixpZSksWC53cml0ZV9zaGlmdCgyLGllKSxYLndyaXRlX3NoaWZ0KDIsMjU2Kkgud2lkdGgpLFgud3JpdGVfc2hpZnQoMiwwKTt2YXIg''@;'; put 'put ''d2U9MDtyZXR1cm4gSC5oaWRkZW4mJih3ZXw9MSksWC53cml0ZV9zaGlmdCgxLHdlKSxYLndyaXRlX3NoaWZ0KDEsd2U9SC5sZXZlbHx8MCksWC53cml0ZV9zaGlmdCgyLDApLFh9KGs2KEZlLHhlKSxGZSkpKX0pfX0od2UsRmVbIiFjb2xzIl0sRmUpLHMwKHdlLCJEaW1lbnNpb25zIixmdW5j''@;'; put 'put ''dGlvbiBGOChILGllKXt2YXIgWD04IT1pZS5iaWZmJiZpZS5iaWZmPzI6NCx3ZT1SaSgyKlgrNik7cmV0dXJuIHdlLndyaXRlX3NoaWZ0KFgsSC5zLnIpLHdlLndyaXRlX3NoaWZ0KFgsSC5lLnIrMSksd2Uud3JpdGVfc2hpZnQoMixILnMuYyksd2Uud3JpdGVfc2hpZnQoMixILmUuYysxKSx3''@;'; put 'put ''ZS53cml0ZV9zaGlmdCgyLDApLHdlfShubixpZSkpLE10JiYoRmVbIiFsaW5rcyJdPVtdKSxGZVsiIXJvd3MiXSYmTXQmJkZlWyIhcm93cyJdLmZvckVhY2goZnVuY3Rpb24oWW4sTXIpe2Zvcih2YXIgYWk9WGEoTXIpLHlyPTI1Nixhcj0wLEdyPVluLnM/MTYrWTEoaWUuY2VsbFhmcyxpZS5j''@;'; put 'put ''ZWxsU3R5bGVYZnMse3Q6Im4iLHY6MCxzOlluLnN9LGllKTowLHpyPW5uLnMuYzt6cjw9bm4uZS5jOysrenIpIShZZT8oRmVbTXJdfHxbXSlbenJdOkZlW1V0W3pyXSthaV0pfHwoenI8eXImJih5cj16ciksenI+YXImJihhcj16cikpO2FyPHlyJiYoeXI9YXI9MCksczAod2UsIlJvdyIsZnVu''@;'; put 'put ''Y3Rpb24gaG4oSCxpZSxYKXt2YXIgd2U9UmkoMTYpO3dlLndyaXRlX3NoaWZ0KDIsaWUpLHdlLndyaXRlX3NoaWZ0KDIsWFswXSksd2Uud3JpdGVfc2hpZnQoMixYWzFdKzEpLHdlLndyaXRlX3NoaWZ0KDIsMjAqSC5ocHR8fDIwKlRoKEguaHB4KXx8MzMwKSx3ZS53cml0ZV9zaGlmdCg0LDAp''@;'; put 'put ''O3ZhciB4ZT0wO3JldHVybiB4ZXw9MHxILmxldmVsLEguaGlkZGVuJiYoeGV8PTMyKSx4ZXw9NjQsWFsyXSYmKHhlfD0xMjgpLHdlLndyaXRlX3NoaWZ0KDEseGUpLHdlLndyaXRlX3NoaWZ0KDEsMSksd2Uud3JpdGVfc2hpZnQoMixYWzJdfHwwKSx3ZX0oWW4sTXIsW3lyLGFyLEdyXSkpfSk7''@;'; put 'put ''Zm9yKHZhciB6dD1ubi5zLnI7enQ8PW5uLmUucjsrK3p0KXtSdD1YYSh6dCk7Zm9yKHZhciBQbj1ubi5zLmM7UG48PW5uLmUuYzsrK1BuKXt6dD09PW5uLnMuciYmKFV0W1BuXT1fYShQbikpLHh0PVV0W1BuXStSdDt2YXIgVG49WWU/KEZlW3p0XXx8W10pW1BuXTpGZVt4dF07IVRufHwoaFQo''@;'; put 'put ''d2UsVG4senQsUG4saWUpLE10JiZUbi5sJiZGZVsiIWxpbmtzIl0ucHVzaChbeHQsVG4ubF0pKX19dmFyIE9uPWplLkNvZGVOYW1lfHxqZS5uYW1lfHx4ZTtyZXR1cm4oTXR8fDU9PWllLmJpZmYmJkZlWyIhZnJlZXplIl0pJiZzMCh3ZSwiV2luZG93MiIsZnVuY3Rpb24gZ2YoSCxpZSxYLHdl''@;'; put 'put ''KXt2YXIgeGU9d2UmJndlLmJpZmZ8fDgsRmU9UmkoOD09eGU/MTg6MTApLFplPTE3MTg7cmV0dXJuIFg+MCYmKFplJj0tNTEzKSxucihpZVsiIWdyaWRsaW5lcyJdKSYmKFplJj0tMyksaWVbIiFmcmVlemUiXSYmKFplfD04KSxIJiZILlJUTCYmKFplfD02NCksNT09eGUmJihaZT00NDYpLEZl''@;'; put 'put ''LndyaXRlX3NoaWZ0KDIsWmUpLDg9PXhlPyhGZS53cml0ZV9zaGlmdCg0LDApLEZlLndyaXRlX3NoaWZ0KDQsNjQpLEZlLndyaXRlX3NoaWZ0KDQsMCksRmUud3JpdGVfc2hpZnQoNCwwKSk6KEZlLndyaXRlX3NoaWZ0KDQsMCksRmUud3JpdGVfc2hpZnQoNCwwKSksRmV9KChaZS5WaWV3c3x8''@;'; put 'put ''W10pWzBdLEZlLEgpKSwoTXR8fDU9PWllLmJpZmYpJiZGZVsiIWZyZWV6ZSJdJiZzMCh3ZSwiUGFuZSIsZnVuY3Rpb24gZmIoSCl7InN0cmluZyI9PXR5cGVvZiBIJiYoSD11bChIKSk7dmFyIGllPVJpKDEwKTtyZXR1cm4gaWUud3JpdGVfc2hpZnQoMixILmMpLGllLndyaXRlX3NoaWZ0KDIs''@;'; put 'put ''SC5yKSxpZS53cml0ZV9zaGlmdCgyLEguciksaWUud3JpdGVfc2hpZnQoMixILmMpLGllLndyaXRlX3NoaWZ0KDEsMyksaWUud3JpdGVfc2hpZnQoMSwwKSxpZX0oRmVbIiFmcmVlemUiXSkpLE10JiZGZVsiIXNlbCJdJiZzMCh3ZSwiU2VsZWN0aW9uIixmdW5jdGlvbiBJUihILGllKXt2YXIg''@;'; put 'put ''WD1SaSgxNSksd2U9SC5jZWxsO2lmKCF3ZSl7aWYoIUgucmFuZ2UpdGhyb3cgbmV3IEVycm9yKCJNdXN0IHNwZWNpZnkgYSBzZWxlY3Rpb24gY2VsbCBvciByYW5nZSIpO3dlPVkwKEFzKEgucmFuZ2UucmVwbGFjZSgvXHMuKiQvLCIiKSkucyl9dmFyIHhlPSJzdHJpbmciPT10eXBlb2Ygd2U/''@;'; put 'put ''dWwod2UpOndlO2lmKGllKXt2YXIgRmU9InN0cmluZyI9PXR5cGVvZiBpZT91bChpZSk6aWU7WC53cml0ZV9zaGlmdCgxLHhlLnI+PUZlLnImJnhlLmM+PUZlLmM/MDp4ZS5yPj1GZS5yJiZ4ZS5jPEZlLmM/Mjp4ZS5yPEZlLnImJnhlLmM+PUZlLmM/MTozKX1lbHNlIFgud3JpdGVfc2hpZnQo''@;'; put 'put ''MSwzKTtyZXR1cm4gWC53cml0ZV9zaGlmdCgyLHhlLnIpLFgud3JpdGVfc2hpZnQoMix4ZS5jKSxYLndyaXRlX3NoaWZ0KDIsMCksWC53cml0ZV9zaGlmdCgyLDEpLGZ1bmN0aW9uIHI2KEgsaWUpe2llfHwoaWU9UmkoNikpLGllLndyaXRlX3NoaWZ0KDIsSC5zP0gucy5yOkguciksaWUud3Jp''@;'; put 'put ''dGVfc2hpZnQoMixILmU/SC5lLnI6SC5yKSxpZS53cml0ZV9zaGlmdCgxLEgucz9ILnMuYzpILmMpLGllLndyaXRlX3NoaWZ0KDEsSC5lP0guZS5jOkguYyl9KHtzOnhlLGU6eGV9LFgpLFh9KEZlWyIhc2VsIl0sRmVbIiFmcmVlemUiXSkpLE10JiYoRmVbIiFtZXJnZXMiXXx8W10pLmxlbmd0''@;'; put 'put ''aCYmczAod2UsIk1lcmdlQ2VsbHMiLGZ1bmN0aW9uIGtSKEgpe3ZhciBpZT1SaSgyKzgqSC5sZW5ndGgpO2llLndyaXRlX3NoaWZ0KDIsSC5sZW5ndGgpO2Zvcih2YXIgWD0wO1g8SC5sZW5ndGg7KytYKUp1KEhbWF0saWUpO3JldHVybiBpZX0oRmVbIiFtZXJnZXMiXSkpLE10JiZmdW5jdGlv''@;'; put 'put ''biBjVChILGllKXtmb3IodmFyIFg9MDtYPGllWyIhbGlua3MiXS5sZW5ndGg7KytYKXt2YXIgd2U9aWVbIiFsaW5rcyJdW1hdO3MwKEgsIkhMaW5rIixVTSh3ZSkpLHdlWzFdLlRvb2x0aXAmJnMwKEgsIkhMaW5rVG9vbHRpcCIsc20od2UpKX1kZWxldGUgaWVbIiFsaW5rcyJdfSh3ZSxGZSks''@;'; put 'put ''czAod2UsIkNvZGVOYW1lIixQcihPbikpLE10JiZmdW5jdGlvbiBKbShILGllKXt2YXIgWD1SaSgxOSk7WC53cml0ZV9zaGlmdCg0LDIxNTEpLFgud3JpdGVfc2hpZnQoNCwwKSxYLndyaXRlX3NoaWZ0KDQsMCksWC53cml0ZV9zaGlmdCgyLDMpLFgud3JpdGVfc2hpZnQoMSwxKSxYLndyaXRl''@;'; put 'put ''X3NoaWZ0KDQsMCksczAoSCwiRmVhdEhkciIsWCksKFg9UmkoMzkpKS53cml0ZV9zaGlmdCg0LDIxNTIpLFgud3JpdGVfc2hpZnQoNCwwKSxYLndyaXRlX3NoaWZ0KDQsMCksWC53cml0ZV9zaGlmdCgyLDMpLFgud3JpdGVfc2hpZnQoMSwwKSxYLndyaXRlX3NoaWZ0KDQsMCksWC53cml0ZV9z''@;'; put 'put ''aGlmdCgyLDEpLFgud3JpdGVfc2hpZnQoNCw0KSxYLndyaXRlX3NoaWZ0KDIsMCksSnUoRm8oaWVbIiFyZWYiXXx8IkExIiksWCksWC53cml0ZV9zaGlmdCg0LDQpLHMwKEgsIkZlYXQiLFgpfSh3ZSxGZSksczAod2UsIkVPRiIpLHdlLmVuZCgpfWZ1bmN0aW9uIG5DKEgsaWUsWCl7dmFyIHdl''@;'; put 'put ''PUoyKCkseGU9KEh8fHt9KS5Xb3JrYm9va3x8e30sRmU9eGUuU2hlZXRzfHxbXSxaZT14ZS5XQlByb3BzfHx7fSxqZT04PT1YLmJpZmYsWWU9NT09WC5iaWZmO3MwKHdlLDIwNTcsZzMoMCw1LFgpKSwieGxhIj09WC5ib29rVHlwZSYmczAod2UsIkFkZGluIiksczAod2UsIkludGVyZmFjZUhk''@;'; put 'put ''ciIsamU/aGYoMTIwMCk6bnVsbCksczAod2UsIk1tcyIsZnVuY3Rpb24gRDgoSCxpZSl7aWV8fChpZT1SaShIKSk7Zm9yKHZhciBYPTA7WDxIOysrWClpZS53cml0ZV9zaGlmdCgxLDApO3JldHVybiBpZX0oMikpLFllJiZzMCh3ZSwiVG9vbGJhckhkciIpLFllJiZzMCh3ZSwiVG9vbGJhckVu''@;'; put 'put ''ZCIpLHMwKHdlLCJJbnRlcmZhY2VFbmQiKSxzMCh3ZSwiV3JpdGVBY2Nlc3MiLGZ1bmN0aW9uIGE2KEgsaWUpe3ZhciBYPSFpZXx8OD09aWUuYmlmZix3ZT1SaShYPzExMjo1NCk7Zm9yKHdlLndyaXRlX3NoaWZ0KDg9PWllLmJpZmY/MjoxLDcpLFgmJndlLndyaXRlX3NoaWZ0KDEsMCksd2Uu''@;'; put 'put ''d3JpdGVfc2hpZnQoNCw4NTkwMDcwNTkpLHdlLndyaXRlX3NoaWZ0KDQsNTQ1ODU0OHwoWD8wOjUzNjg3MDkxMikpO3dlLmw8d2UubGVuZ3RoOyl3ZS53cml0ZV9zaGlmdCgxLFg/MDozMik7cmV0dXJuIHdlfSgwLFgpKSxzMCh3ZSwiQ29kZVBhZ2UiLGhmKGplPzEyMDA6MTI1MikpLGplJiZz''@;'; put 'put ''MCh3ZSwiRFNGIixoZigwKSksamUmJnMwKHdlLCJFeGNlbDlGaWxlIiksczAod2UsIlJSVGFiSWQiLGZ1bmN0aW9uIGs5KEgpe2Zvcih2YXIgaWU9UmkoMipIKSxYPTA7WDxIOysrWClpZS53cml0ZV9zaGlmdCgyLFgrMSk7cmV0dXJuIGllfShILlNoZWV0TmFtZXMubGVuZ3RoKSksamUmJkgu''@;'; put 'put ''dmJhcmF3JiZzMCh3ZSwiT2JQcm9qIiksamUmJkgudmJhcmF3JiZzMCh3ZSwiQ29kZU5hbWUiLFByKFplLkNvZGVOYW1lfHwiVGhpc1dvcmtib29rIikpLHMwKHdlLCJCdWlsdEluRm5Hcm91cENvdW50IixoZigxNykpLHMwKHdlLCJXaW5Qcm90ZWN0IixqMSghMSkpLHMwKHdlLCJQcm90ZWN0''@;'; put 'put ''IixqMSghMSkpLHMwKHdlLCJQYXNzd29yZCIsaGYoMCkpLGplJiZzMCh3ZSwiUHJvdDRSZXYiLGoxKCExKSksamUmJnMwKHdlLCJQcm90NFJldlBhc3MiLGhmKDApKSxzMCh3ZSwiV2luZG93MSIsZnVuY3Rpb24gV3ooKXt2YXIgSD1SaSgxOCk7cmV0dXJuIEgud3JpdGVfc2hpZnQoMiwwKSxI''@;'; put 'put ''LndyaXRlX3NoaWZ0KDIsMCksSC53cml0ZV9zaGlmdCgyLDI5MjgwKSxILndyaXRlX3NoaWZ0KDIsMTc2MDApLEgud3JpdGVfc2hpZnQoMiw1NiksSC53cml0ZV9zaGlmdCgyLDApLEgud3JpdGVfc2hpZnQoMiwwKSxILndyaXRlX3NoaWZ0KDIsMSksSC53cml0ZV9zaGlmdCgyLDUwMCksSH0o''@;'; put 'put ''KSksczAod2UsIkJhY2t1cCIsajEoITEpKSxzMCh3ZSwiSGlkZU9iaiIsaGYoMCkpLHMwKHdlLCJEYXRlMTkwNCIsajEoInRydWUiPT1mdW5jdGlvbiBWeChIKXtyZXR1cm4gSC5Xb3JrYm9vayYmSC5Xb3JrYm9vay5XQlByb3BzJiZEaShILldvcmtib29rLldCUHJvcHMuZGF0ZTE5MDQpPyJ0''@;'; put 'put ''cnVlIjoiZmFsc2UifShIKSkpLHMwKHdlLCJDYWxjUHJlY2lzaW9uIixqMSghMCkpLGplJiZzMCh3ZSwiUmVmcmVzaEFsbCIsajEoITEpKSxzMCh3ZSwiQm9va0Jvb2wiLGhmKDApKSx1dT1RdShbMCwxNjc3NzIxNSwxNjcxMTY4MCw2NTI4MCwyNTUsMTY3NzY5NjAsMTY3MTE5MzUsNjU1MzUs''@;'; put 'put ''MCwxNjc3NzIxNSwxNjcxMTY4MCw2NTI4MCwyNTUsMTY3NzY5NjAsMTY3MTE5MzUsNjU1MzVdKSxmdW5jdGlvbiBRbShILGllLFgpeygoKGllfHx7fSkuU3R5bGVzfHx7fSkuRm9udHN8fFt7c3o6MTIsY29sb3I6e3RoZW1lOjF9LG5hbWU6IkFyaWFsIixmYW1pbHk6MixzY2hlbWU6Im1pbm9y''@;'; put 'put ''In1dKS5mb3JFYWNoKGZ1bmN0aW9uKHdlKXtzMChILCJGb250IixmdW5jdGlvbiBtMyhILGllKXt2YXIgWD1ILm5hbWV8fCJBcmlhbCIsd2U9aWUmJjU9PWllLmJpZmYsRmU9Umkod2U/MTUrWC5sZW5ndGg6MTYrMipYLmxlbmd0aCk7RmUud3JpdGVfc2hpZnQoMiwyMCooSC5zenx8MTIpKTt2''@;'; put 'put ''YXIgWmU9MDtyZXR1cm4gSC5ib2xkJiYoWmV8PTEpLEguaXRhbGljJiYoWmV8PTIpLEguc3RyaWtlJiYoWmV8PTgpLEguc2hhZG93JiYoWmV8PTMyKSxGZS53cml0ZV9zaGlmdCgxLFplKSxGZS53cml0ZV9zaGlmdCgxLDApLEZlLndyaXRlX3NoaWZ0KDIsSC5jb2xvcj9SYihILmNvbG9yLDY0''@;'; put 'put ''KTo2NCksRmUud3JpdGVfc2hpZnQoMixILmJvbGQ/NzAwOjQwMCksRmUud3JpdGVfc2hpZnQoMiwic3VwZXIiPT1ILnZhbGlnbj8xOiJzdWIiPT1ILnZhbGlnbj8yOjApLEZlLndyaXRlX3NoaWZ0KDEsSC51bmRlcmxpbmV8fDApLEZlLndyaXRlX3NoaWZ0KDEsRmUuZmFtaWx5fHwwKSxGZS53''@;'; put 'put ''cml0ZV9zaGlmdCgxLEZlLmNoYXJzZXR8fDApLEZlLndyaXRlX3NoaWZ0KDEsMCksRmUud3JpdGVfc2hpZnQoMSxYLmxlbmd0aCksd2V8fEZlLndyaXRlX3NoaWZ0KDEsMSksRmUud3JpdGVfc2hpZnQoKHdlPzE6MikqWC5sZW5ndGgsWCx3ZT8ic2JjcyI6InV0ZjE2bGUiKSxGZX0od2UsWCkp''@;'; put 'put ''fSl9KHdlLEgsWCksZnVuY3Rpb24gSFAoSCxpZSxYKXshaWV8fFtbNSw4XSxbMjMsMjZdLFs0MSw0NF0sWzUwLDM5Ml1dLmZvckVhY2goZnVuY3Rpb24od2Upe2Zvcih2YXIgeGU9d2VbMF07eGU8PXdlWzFdOysreGUpbnVsbCE9aWVbeGVdJiZzMChILCJGb3JtYXQiLGhiKHhlLGllW3hlXSxY''@;'; put 'put ''KSl9KX0od2UsSC5TU0YsWCksZnVuY3Rpb24gTlAoSCxpZSl7Zm9yKHZhciBYPTA7WDwxNjsrK1gpczAoSCwiWEYiLFNoKHtudW1GbXRJZDowLHN0eWxlOiEwfSwwLGllKSk7aWUuY2VsbFhmcy5mb3JFYWNoKGZ1bmN0aW9uKHdlKXtzMChILCJYRiIsU2god2UsMCxpZSkpfSl9KHdlLFgpLHMw''@;'; put 'put ''KHdlLCJQYWxldHRlIixmdW5jdGlvbiBaOChIKXt2YXIgaWU9UmkoMjI2KTtpZS53cml0ZV9zaGlmdCgyLDU2KTtmb3IodmFyIFg9MDtYPDU2OysrWCl7dmFyIHdlPUhbWCs4XXx8S2dbWCs4XTtpZS53cml0ZV9zaGlmdCgxLHdlWzBdKSxpZS53cml0ZV9zaGlmdCgxLHdlWzFdKSxpZS53cml0''@;'; put 'put ''ZV9zaGlmdCgxLHdlWzJdKSxpZS53cml0ZV9zaGlmdCgxLDApfXJldHVybiBpZX0odXUpKSx1dT1sbihLZyksamUmJnMwKHdlLCJVc2VzRUxGcyIsajEoITEpKTt2YXIgeHQ9d2UuZW5kKCksUnQ9SjIoKTtqZSYmczAoUnQsIkNvdW50cnkiLGZ1bmN0aW9uIEpNKEgpe3JldHVybiBIfHwoSD1S''@;'; put 'put ''aSg0KSksSC53cml0ZV9zaGlmdCgyLDEpLEgud3JpdGVfc2hpZnQoMiwxKSxIfSgpKSxqZSYmWC5TdHJpbmdzJiZmdW5jdGlvbiBQUChILGllLFgsd2Upe3ZhciB4ZT13ZXx8KFh8fFtdKS5sZW5ndGh8fDA7aWYoeGU8PTgyMjQpcmV0dXJuIHMwKEgsaWUsWCx4ZSk7dmFyIEZlPStpZXx8K1Az''@;'; put 'put ''W2llXTtpZighaXNOYU4oRmUpKXtmb3IodmFyIFplPVgucGFydHN8fFtdLGplPTAsWWU9MCxNdD0wO010KyhaZVtqZV18fDgyMjQpPD04MjI0OylNdCs9WmVbamVdfHw4MjI0LGplKys7dmFyIHh0PUgubmV4dCg0KTtmb3IoeHQud3JpdGVfc2hpZnQoMixGZSkseHQud3JpdGVfc2hpZnQoMixN''@;'; put 'put ''dCksSC5wdXNoKFguc2xpY2UoWWUsWWUrTXQpKSxZZSs9TXQ7WWU8eGU7KXtmb3IoKHh0PUgubmV4dCg0KSkud3JpdGVfc2hpZnQoMiw2MCksTXQ9MDtNdCsoWmVbamVdfHw4MjI0KTw9ODIyNDspTXQrPVplW2plXXx8ODIyNCxqZSsrO3h0LndyaXRlX3NoaWZ0KDIsTXQpLEgucHVzaChYLnNs''@;'; put 'put ''aWNlKFllLFllK010KSksWWUrPU10fX19KFJ0LCJTU1QiLGZ1bmN0aW9uIGJsKEgsaWUpe3ZhciBYPVJpKDgpO1gud3JpdGVfc2hpZnQoNCxILkNvdW50KSxYLndyaXRlX3NoaWZ0KDQsSC5VbmlxdWUpO2Zvcih2YXIgd2U9W10seGU9MDt4ZTxILmxlbmd0aDsrK3hlKXdlW3hlXT1HYyhIW3hl''@;'; put 'put ''XSxpZSk7dmFyIEZlPVYoW1hdLmNvbmNhdCh3ZSkpO3JldHVybiBGZS5wYXJ0cz1bWC5sZW5ndGhdLmNvbmNhdCh3ZS5tYXAoZnVuY3Rpb24oWmUpe3JldHVybiBaZS5sZW5ndGh9KSksRmV9KFguU3RyaW5ncyxYKSksczAoUnQsIkVPRiIpO3ZhciBVdD1SdC5lbmQoKSxubj1KMigpLENuPTAs''@;'; put 'put ''RHQ9MDtmb3IoRHQ9MDtEdDxILlNoZWV0TmFtZXMubGVuZ3RoOysrRHQpQ24rPShqZT8xMjoxMSkrKGplPzI6MSkqSC5TaGVldE5hbWVzW0R0XS5sZW5ndGg7dmFyIHp0PXh0Lmxlbmd0aCtDbitVdC5sZW5ndGg7Zm9yKER0PTA7RHQ8SC5TaGVldE5hbWVzLmxlbmd0aDsrK0R0KXMwKG5uLCJC''@;'; put 'put ''b3VuZFNoZWV0OCIsV2Yoe3Bvczp6dCxoczooRmVbRHRdfHx7fSkuSGlkZGVufHwwLGR0OjAsbmFtZTpILlNoZWV0TmFtZXNbRHRdfSxYKSksenQrPWllW0R0XS5sZW5ndGg7dmFyIFRuPW5uLmVuZCgpO2lmKENuIT1Ubi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJCUzggIitDbisiICE9ICIr''@;'; put 'put ''VG4ubGVuZ3RoKTt2YXIgT249W107cmV0dXJuIHh0Lmxlbmd0aCYmT24ucHVzaCh4dCksVG4ubGVuZ3RoJiZPbi5wdXNoKFRuKSxVdC5sZW5ndGgmJk9uLnB1c2goVXQpLHZuKFtPbl0pfWZ1bmN0aW9uIFhtKEgsaWUpe3ZhciBYPWllfHx7fTtzd2l0Y2goWC5iaWZmfHwyKXtjYXNlIDg6Y2Fz''@;'; put 'put ''ZSA1OnJldHVybiBmdW5jdGlvbiBWUChILGllKXt2YXIgWD1pZXx8e30sd2U9W107QzMoaWUmJmllLlBQSXx8OTYpLEgmJiFILlNTRiYmKEguU1NGPUYuZ2V0X3RhYmxlKCkpLEgmJkguU1NGJiYoeWUoRiksRi5sb2FkX3RhYmxlKEguU1NGKSxYLnJldnNzZj1ldChILlNTRiksWC5yZXZzc2Zb''@;'; put 'put ''SC5TU0ZbNjU1MzVdXT0wLFguc3NmPUguU1NGKSxILlN0eWxlcz17Rm9udHM6WC5Gb250cz1be3N6OjEyLGNvbG9yOnt0aGVtZToxLHJnYjoiMDAwMDAwIn0sbmFtZToiQ2FsaWJyaSIsZmFtaWx5OjIsc2NoZW1lOiJtaW5vciJ9XSxGaWxsczpYLkZpbGxzPVt7cGF0dGVyblR5cGU6Im5vbmUi''@;'; put 'put ''fSx7cGF0dGVyblR5cGU6ImdyYXkxMjUifV0sQm9yZGVyczpYLkJvcmRlcnM9W3t9XSxEWEY6WC5EWEY9SC5TdHlsZXMmJkguU3R5bGVzLkRYRnx8W119LFMzKFguRm9udHNbMF0pLFguU3RyaW5ncz1bXSxYLlN0cmluZ3MuQ291bnQ9MCxYLlN0cmluZ3MuVW5pcXVlPTAsZjU/WC5yZXZTdHJp''@;'; put 'put ''bmdzPW5ldyBNYXA6KFgucmV2U3RyaW5ncz17fSxYLnJldlN0cmluZ3MuZm9vPVtdLGRlbGV0ZSBYLnJldlN0cmluZ3MuZm9vKSxGMyhYKSxYLmNlbGxYZnM9W10sWC5jZWxsU3R5bGVYZnM9W3tuYW1lOiJOb3JtYWwifV0sWTEoWC5jZWxsWGZzLFguY2VsbFN0eWxlWGZzLHt9LHtyZXZzc2Y6''@;'; put 'put ''e0dlbmVyYWw6MH19KSxILlByb3BzfHwoSC5Qcm9wcz17fSk7Zm9yKHZhciB4ZT0wO3hlPEguU2hlZXROYW1lcy5sZW5ndGg7Kyt4ZSl3ZVt3ZS5sZW5ndGhdPSRyKHhlLFgsSCk7cmV0dXJuIHdlLnVuc2hpZnQobkMoSCx3ZSxYKSksdm4oW3dlXSl9KEgsaWUpO2Nhc2UgNDpjYXNlIDM6Y2Fz''@;'; put 'put ''ZSAyOnJldHVybiBmdW5jdGlvbiBlaChILGllKXtmb3IodmFyIFg9aWV8fHt9LHdlPUoyKCkseGU9MCxGZT0wO0ZlPEguU2hlZXROYW1lcy5sZW5ndGg7KytGZSlILlNoZWV0TmFtZXNbRmVdPT1YLnNoZWV0JiYoeGU9RmUpO2lmKDA9PXhlJiZYLnNoZWV0JiZILlNoZWV0TmFtZXNbMF0hPVgu''@;'; put 'put ''c2hlZXQpdGhyb3cgbmV3IEVycm9yKCJTaGVldCBub3QgZm91bmQ6ICIrWC5zaGVldCk7cmV0dXJuIHMwKHdlLDQ9PVguYmlmZj8xMDMzOjM9PVguYmlmZj81MjE6OSxnMygwLDE2LFgpKSxmdW5jdGlvbiBGUChILGllLFgsd2Upe3ZhciBaZSx4ZT1BcnJheS5pc0FycmF5KGllKSxGZT1Gbyhp''@;'; put 'put ''ZVsiIXJlZiJdfHwiQTEiKSxqZT0iIixZZT1bXTtpZihGZS5lLmM+MjU1fHxGZS5lLnI+MTYzODMpe2lmKHdlLldURil0aHJvdyBuZXcgRXJyb3IoIlJhbmdlICIrKGllWyIhcmVmIl18fCJBMSIpKyIgZXhjZWVkcyBmb3JtYXQgbGltaXQgQTE6SVYxNjM4NCIpO0ZlLmUuYz1NYXRoLm1pbihG''@;'; put 'put ''ZS5lLmMsMjU1KSxGZS5lLnI9TWF0aC5taW4oRmUuZS5jLDE2MzgzKSxaZT1mYShGZSl9Zm9yKHZhciBNdD1GZS5zLnI7TXQ8PUZlLmUucjsrK010KXtqZT1YYShNdCk7Zm9yKHZhciB4dD1GZS5zLmM7eHQ8PUZlLmUuYzsrK3h0KXtNdD09PUZlLnMuciYmKFllW3h0XT1fYSh4dCkpLFplPVll''@;'; put 'put ''W3h0XStqZTt2YXIgUnQ9eGU/KGllW010XXx8W10pW3h0XTppZVtaZV07IVJ0fHx4QShILFJ0LE10LHh0KX19fSh3ZSxILlNoZWV0c1tILlNoZWV0TmFtZXNbeGVdXSwwLFgpLHMwKHdlLDEwKSx3ZS5lbmQoKX0oSCxpZSl9dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHR5cGUgIitYLmJvb2tU''@;'; put 'put ''eXBlKyIgZm9yIEJJRkYiKX12YXIgdXM9ZnVuY3Rpb24oKXt2YXIgSD17Y2VudGVyQ29udGludW91czoiY2VudGVyIixqdXN0aWZ5OiJsZWZ0In07ZnVuY3Rpb24gWChSdCxVdCl7dmFyIG5uPVV0fHx7fSxDbj1ubi5kZW5zZT9bXTp7fSxEdD0oUnQ9UnQucmVwbGFjZSgvPCEtLS4qPy0tPi9n''@;'; put 'put ''LCIiKSkubWF0Y2goLzx0YWJsZS9pKTtpZighRHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIEhUTUw6IGNvdWxkIG5vdCBmaW5kIDx0YWJsZT4iKTt2YXIgenQ9UnQubWF0Y2goLzxcL3RhYmxlL2kpLFBuPUR0LmluZGV4LFRuPXp0JiZ6dC5pbmRleHx8UnQubGVuZ3RoLE9uPWZ1bmN0aW9u''@;'; put 'put ''IHF0KEgsaWUsWCl7aWYoeHJ8fCJzdHJpbmciPT10eXBlb2YgaWUpcmV0dXJuIEguc3BsaXQoaWUpO2Zvcih2YXIgd2U9SC5zcGxpdChpZSkseGU9W3dlWzBdXSxGZT0xO0ZlPHdlLmxlbmd0aDsrK0ZlKXhlLnB1c2goWCkseGUucHVzaCh3ZVtGZV0pO3JldHVybiB4ZX0oUnQuc2xpY2UoUG4s''@;'; put 'put ''VG4pLC8oOj88dHJbXj5dKj4pL2ksIjx0cj4iKSxZbj0tMSxNcj0wLGFpPTAseXI9MCxhcj17czp7cjoxZTcsYzoxZTd9LGU6e3I6MCxjOjB9fSxHcj1bXTtmb3IoUG49MDtQbjxPbi5sZW5ndGg7KytQbil7dmFyIHpyPU9uW1BuXS50cmltKCkscXI9enIuc2xpY2UoMCwzKS50b0xvd2VyQ2Fz''@;'; put 'put ''ZSgpO2lmKCI8dHIiIT1xcil7aWYoIjx0ZCI9PXFyfHwiPHRoIj09cXIpe3ZhciBvaT16ci5zcGxpdCgvPFwvdFtkaF0+L2kpO2ZvcihUbj0wO1RuPG9pLmxlbmd0aDsrK1RuKXt2YXIgY3I9b2lbVG5dLnRyaW0oKTtpZihjci5tYXRjaCgvPHRbZGhdL2kpKXtmb3IodmFyIGRpPWNyLHYwPTA7''@;'; put 'put ''IjwiPT1kaS5jaGFyQXQoMCkmJih2MD1kaS5pbmRleE9mKCI+IikpPi0xOylkaT1kaS5zbGljZSh2MCsxKTtmb3IodmFyIFVpPTA7VWk8R3IubGVuZ3RoOysrVWkpe3ZhciB0bz1HcltVaV07dG8ucy5jPT1NciYmdG8ucy5yPFluJiZZbjw9dG8uZS5yJiYoTXI9dG8uZS5jKzEsVWk9LTEpfXZh''@;'; put 'put ''ciBBMD1lbihjci5zbGljZSgwLGNyLmluZGV4T2YoIj4iKSkpO3lyPUEwLmNvbHNwYW4/K0EwLmNvbHNwYW46MSwoKGFpPStBMC5yb3dzcGFuKT4xfHx5cj4xKSYmR3IucHVzaCh7czp7cjpZbixjOk1yfSxlOntyOlluKyhhaXx8MSktMSxjOk1yK3lyLTF9fSk7dmFyIGJpPUEwLnR8fEEwWyJk''@;'; put 'put ''YXRhLXQiXXx8IiI7aWYoIWRpLmxlbmd0aCl7TXIrPXlyO2NvbnRpbnVlfWlmKGRpPU1hKGRpKSxhci5zLnI+WW4mJihhci5zLnI9WW4pLGFyLmUucjxZbiYmKGFyLmUucj1ZbiksYXIucy5jPk1yJiYoYXIucy5jPU1yKSxhci5lLmM8TXImJihhci5lLmM9TXIpLGRpLmxlbmd0aCl7dmFyIFly''@;'; put 'put ''PXt0OiJzIix2OmRpfTtubi5yYXd8fCFkaS50cmltKCkubGVuZ3RofHwicyI9PWJpfHwoWXI9RnIoZGksbm4pKSxubi5kZW5zZT8oQ25bWW5dfHwoQ25bWW5dPVtdKSxDbltZbl1bTXJdPVlyKTpDbltZMCh7cjpZbixjOk1yfSldPVlyLE1yKz15cn19fX19ZWxzZXtpZigrK1luLG5uLnNoZWV0''@;'; put 'put ''Um93cyYmbm4uc2hlZXRSb3dzPD1Zbil7LS1ZbjticmVha31Ncj0wfX1yZXR1cm4gQ25bIiFyZWYiXT1mYShhciksR3IubGVuZ3RoJiYoQ25bIiFtZXJnZXMiXT1HciksQ259ZnVuY3Rpb24geGUoUnQsVXQsbm4sQ24sRHQsenQpe3ZhciBPbixQbj1SdFsiIW1lcmdlcyJdfHxbXSxUbj1bXSxZ''@;'; put 'put ''bj17c3R5bGU6W119LE1yPSExO2Z1bmN0aW9uIGFpKCQwLFZhLGpvKXt2YXIgd2E9IiIsYW89MDtpZihPblskMF0pc3dpdGNoKE9uWyQwXS5zdHlsZSl7Y2FzZSJ0aGluIjpjYXNlImhhaXIiOndhPSJzb2xpZCIsYW89MTticmVhaztjYXNlIm1lZGl1bSI6d2E9InNvbGlkIixhbz0yO2JyZWFr''@;'; put 'put ''O2Nhc2UidGhpY2siOndhPSJzb2xpZCIsYW89MzticmVhaztjYXNlImRvdWJsZSI6d2E9ImRvdWJsZSIsYW89MzticmVhaztjYXNlImRvdHRlZCI6Y2FzZSJkYXNoRG90RG90Ijp3YT0iZG90dGVkIixhbz0xO2JyZWFrO2Nhc2UibWVkaXVtRGFzaERvdERvdCI6d2E9ImRvdHRlZCIsYW89Mjti''@;'; put 'put ''cmVhaztjYXNlImRhc2hlZCI6Y2FzZSJkYXNoRG90IjpjYXNlInNsYW50RGFzaERvdCI6d2E9ImRhc2hlZCIsYW89MTticmVhaztjYXNlIm1lZGl1bURhc2hlZCI6Y2FzZSJtZWRpdW1EYXNoRG90Ijp3YT0iZGFzaGVkIixhbz0yfWU6aWYoMD09YW8pe3N3aXRjaCgkMCl7Y2FzZSJ0b3AiOi0t''@;'; put 'put ''VmE7YnJlYWs7Y2FzZSJsZWZ0IjotLWpvO2JyZWFrO2Nhc2UiYm90dG9tIjorK1ZhO2JyZWFrO2Nhc2UicmlnaHQiOisram99dmFyIHgwPVZhPj0wJiZqbz49MD9Dbi5kZW5zZT8oUnRbVmFdfHxbXSlbam9dOlJ0W1kwKHtyOlZhLGM6am99KV06bnVsbDtpZih4MCl7aWYoeDAucyYmeDAuc1t7''@;'; put 'put ''dG9wOiJib3R0b20iLGJvdHRvbToidG9wIixsZWZ0OiJyaWdodCIscmlnaHQ6ImxlZnQifVskMF1dKWJyZWFrIGU7eDAucyYmeDAucy5mZ0NvbG9yJiYoYW89MSl9T24uZmdDb2xvciYmKGFvPTEpLCF4MCYmTXImJjA9PWFvJiYoYW89MSl9MCE9YW8mJmFvJiYoWW4uc3R5bGUucHVzaCgiYm9y''@;'; put 'put ''ZGVyLSIrJDArIi1zdHlsZToiKyh3YXx8InRyYW5zcGFyZW50IikpLFluLnN0eWxlLnB1c2goImJvcmRlci0iKyQwKyItd2lkdGg6IithbysicHgiKSwiIj09d2E/WW4uc3R5bGUucHVzaCgiYm9yZGVyLSIrJDArIi1jb2xvcjogdHJhbnNwYXJlbnQiKTpPblskMF0uY29sb3ImJk9uWyQwXS5j''@;'; put 'put ''b2xvci5yZ2ImJlluLnN0eWxlLnB1c2goImJvcmRlci0iKyQwKyItY29sb3I6IyIrTG8oT25bJDBdLmNvbG9yLnJnYikpKX1mb3IodmFyIHlyPVV0LnMuYzt5cjw9VXQuZS5jOysreXIpe2Zvcih2YXIgYXI9MCxHcj0wLHpyPTA7enI8UG4ubGVuZ3RoOysrenIpaWYoIShQblt6cl0ucy5yPm5u''@;'; put 'put ''fHxQblt6cl0ucy5jPnlyfHxQblt6cl0uZS5yPG5ufHxQblt6cl0uZS5jPHlyKSl7aWYoUG5benJdLnMucjxubnx8UG5benJdLnMuYzx5cil7YXI9LTE7YnJlYWt9YXI9UG5benJdLmUuci1Qblt6cl0ucy5yKzEsR3I9UG5benJdLmUuYy1Qblt6cl0ucy5jKzE7YnJlYWt9aWYoIShhcjwwKSl7''@;'; put 'put ''dmFyIHFyPVkwKHtyOm5uLGM6eXJ9KSxvaT1Dbi5kZW5zZT8oUnRbbm5dfHxbXSlbeXJdOlJ0W3FyXTtvaT9Ncj0hMTooTXI9ITAsb2k9e3Q6InoiLHM6e319KTt2YXIgY3I9InoiPT1vaS50PyIiOm9pLmh8fG4wKG9pLnd8fCh5MShvaSksb2kudyl8fCIiKTtpZihZbj17c3R5bGU6W119LE9u''@;'; put 'put ''PW9pLnMpe3ZhciBkaT0xO2lmKCgic3VwZXIiPT1Pbi52YWxpZ258fCJzdWIiPT1Pbi52YWxpZ24pJiYoZGk9LjgzLGNyPV9pKCJzcGFuIixjcix7c3R5bGU6InZlcnRpY2FsLWFsaWduOiAiK09uLnZhbGlnbn0pKSxZbi5zdHlsZS5wdXNoKCJmb250LXdlaWdodDoiKyhPbi5ib2xkPzcwMDo0''@;'; put 'put ''MDApKSxPbi5pdGFsaWMmJlluLnN0eWxlLnB1c2goImZvbnQtc3R5bGU6IGl0YWxpYyIpLChPbi51bmRlcmxpbmV8fE9uLnN0cmlrZSkmJlluLnN0eWxlLnB1c2goInRleHQtZGVjb3JhdGlvbjoiKyhPbi51bmRlcmxpbmU/IiB1bmRlcmxpbmUiOiIiKSsoT24uc3RyaWtlPyIgbGluZS10aHJv''@;'; put 'put ''dWdoIjoiIikpLE9uLmNvbG9yJiZPbi5jb2xvci5yZ2ImJlluLnN0eWxlLnB1c2goImNvbG9yOiAjIitMbyhPbi5jb2xvci5yZ2IpKSxPbi5uYW1lJiZZbi5zdHlsZS5wdXNoKCJmb250LWZhbWlseToiK09uLm5hbWUrIiwgc2Fucy1zZXJpZiIpLE9uLnN6JiZZbi5zdHlsZS5wdXNoKCJmb250''@;'; put 'put ''LXNpemU6IitPbi5zeipkaSsicHQiKSxudWxsIT09T24ucGF0dGVyblR5cGUmJk9uLmZnQ29sb3ImJk9uLmZnQ29sb3IucmdiJiZZbi5zdHlsZS5wdXNoKCJiYWNrZ3JvdW5kLWNvbG9yOiAjIitMbyhPbi5mZ0NvbG9yLnJnYikpLFsidG9wIiwibGVmdCJdLmZvckVhY2goZnVuY3Rpb24oJDAp''@;'; put 'put ''e2FpKCQwLG5uLHlyKX0pLGFyPjF8fEdyPjEpe3ZhciB2MD1ZMCh7cjpubithci0xLGM6eXIrR3ItMX0pLFVpPUNuLmRlbnNlPyhSdFtubithci0xXXx8W10pW3lyK0dyLTFdOlJ0W3YwXSxBMD1PbjtPbj1VaSYmVWkuc3x8T24sWyJib3R0b20iLCJyaWdodCJdLmZvckVhY2goZnVuY3Rpb24o''@;'; put 'put ''JDApe2FpKCQwLG5uLHlyKX0pLE9uPUEwfWVsc2VbImJvdHRvbSIsInJpZ2h0Il0uZm9yRWFjaChmdW5jdGlvbigkMCl7YWkoJDAsbm4seXIpfSk7aWYoT24uYWxpZ25tZW50KXtpZihPbi5hbGlnbm1lbnQuaG9yaXpvbnRhbD9Zbi5zdHlsZS5wdXNoKCJ0ZXh0LWFsaWduOiAiKyhIW09uLmFs''@;'; put 'put ''aWdubWVudC5ob3Jpem9udGFsXXx8T24uYWxpZ25tZW50Lmhvcml6b250YWwpKToibiI9PW9pLnQmJlluLnN0eWxlLnB1c2goInRleHQtYWxpZ246IHJpZ2h0IiksT24uYWxpZ25tZW50LnZlcnRpY2FsKXt2YXIgYmk9T24uYWxpZ25tZW50LnZlcnRpY2FsO1luLnN0eWxlLnB1c2goInZlcnRp''@;'; put 'put ''Y2FsLWFsaWduOiAiKygiY2VudGVyIj09Ymk/Im1pZGRsZSI6YmkpKX1pZihPbi5hbGlnbm1lbnQud3JhcFRleHQpWW4uc3R5bGUucHVzaCgid2hpdGUtc3BhY2U6IHByZS13cmFwIik7ZWxzZXt2YXIgWXI9Q24uZGVuc2U/KFJ0W25uXXx8W10pW3lyKzFdOlJ0W1kwKHtyOm5uLGM6eXIrMX0p''@;'; put 'put ''XTtZciYmInoiIT1Zci50JiZZbi5zdHlsZS5wdXNoKCJ3aGl0ZS1zcGFjZTogcHJlLXdyYXAiKX19ZWxzZSJuIj09b2kudCYmWW4uc3R5bGUucHVzaCgidGV4dC1hbGlnbjogcmlnaHQiKTt2YXIgRWk9KChSdFsiIWNvbHMiXXx8W10pW3lyXXx8e30pLndweDtudWxsPT1FaSYmKEVpPSgoUnRb''@;'; put 'put ''IiFzaGVldEZvcm1hdCJdfHx7fSkuY29sfHx7fSkud3B4KX12YXIgaGk9MDtpZihHcjw9MSYmYXI8PTEmJihoaT0oKFJ0WyIhY29scyJdfHxbXSlbeXJdfHx7fSkud3B4KSYmWW4uc3R5bGUucHVzaCgid2lkdGg6ICIraGkrInB4IiksUnRbIiFjb25kZm10Il0mJkZlKG9pLG5uLHlyLFJ0WyIh''@;'; put 'put ''Y29uZGZtdCJdLFluLnN0eWxlLFJ0KSwwPT1Zbi5zdHlsZS5sZW5ndGg/ZGVsZXRlIFluLnN0eWxlOlluLnN0eWxlPVluLnN0eWxlLmpvaW4oIjsiKSxDbi5jc3Mpe3ZhciBOcj1EdC5pbmRleE9mKFluLnN0eWxlKTstMT09TnImJihEdC5wdXNoKFluLnN0eWxlKSxOcj1EdC5sZW5ndGgtMSks''@;'; put 'put ''ZGVsZXRlIFluLnN0eWxlLFluLmNsYXNzPSJzanMiKyh6dHx8IiIpKyItIitOcn1hcj4xJiYoWW4ucm93c3Bhbj1hciksR3I+MSYmKFluLmNvbHNwYW49R3IpLENuLmVkaXRhYmxlP2NyPSc8c3BhbiBjb250ZW50ZWRpdGFibGU9InRydWUiPicrY3IrIjwvc3Bhbj4iOm9pJiYoWW5bImRhdGEt''@;'; put 'put ''dCJdPW9pJiZvaS50fHwieiIsbnVsbCE9b2kudiYmKFluWyJkYXRhLXYiXT1vaS52KSxudWxsIT1vaS56JiYoWW5bImRhdGEteiJdPW9pLnopKSxZbi5pZD0oQ24uaWR8fCJzanMiKSsiLSIrcXIsVG4ucHVzaChfaSgidGQiLGNyLFluKSl9fXZhciBOMCxraT17c3R5bGU6W119OyhOMD1SdFsi''@;'; put 'put ''IXNoZWV0Rm9ybWF0Il0pJiZOMC5yb3cmJihKOChOMC5yb3cpLE4wLnJvdy5ocHgmJihraS5zdHlsZS5wdXNoKFsiaGVpZ2h0IixOMC5yb3cuaHB4KyJweCJdKSxraS5oZWlnaHQ9TWF0aC5yb3VuZChOMC5yb3cuaHB4KSkpO3ZhciB0MD1SdFsiIXJvd3MiXTtpZih0MCYmdDBbbm5dKXt2YXIg''@;'; put 'put ''aW89dDBbbm5dO2lvLmhweCYmKGtpLnN0eWxlLnB1c2goWyJoZWlnaHQiLCtpby5ocHgrInB4Il0pLGtpLmhlaWdodD1NYXRoLnJvdW5kKGlvLmhweCkpLGlvLmhpZGRlbiYma2kuc3R5bGUucHVzaChbImRpc3BsYXkiLCJub25lIl0pfXZhciBvYT1bXTtyZXR1cm4ga2kuc3R5bGU9a2kuc3R5''@;'; put 'put ''bGUucmV2ZXJzZSgpLmZpbHRlcihmdW5jdGlvbigkMCl7cmV0dXJuIShvYS5pbmRleE9mKCQwWzBdKT4tMXx8KG9hLnB1c2goJDBbMF0pLDApKX0pLm1hcChmdW5jdGlvbigkMCl7cmV0dXJuICQwWzBdKyI6IiskMFsxXX0pLDA9PWtpLnN0eWxlLmxlbmd0aD9kZWxldGUga2kuc3R5bGU6a2ku''@;'; put 'put ''c3R5bGU9a2kuc3R5bGUuam9pbigiOyIpLF9pKCJ0ciIsVG4uam9pbigiIiksa2kpfWZ1bmN0aW9uIEZlKFJ0LFV0LG5uLENuLER0LHp0KXtDbi5mb3JFYWNoKGZ1bmN0aW9uKFBuKXtpZihQbi5fcmVmfHwoUG4uX3JlZj0ic3RyaW5nIj09dHlwZW9mIFBuLnJlZj9BcyhQbi5yZWYpOlBuLnJl''@;'; put 'put ''ZiksIShQbi5fcmVmLnMuYz5ubnx8UG4uX3JlZi5lLmM8bm58fFBuLl9yZWYucy5yPlV0fHxQbi5fcmVmLmUucjxVdHx8InNjYWxlIiE9PVBuLnQpKXtpZigibiIhPVJ0LnQpcmV0dXJuO3ZhciBUbjtpZihudWxsPT1Qbi5fbWluKXtQbi5fdmFsdWVzPVtdO2Zvcih2YXIgT249UG4uX3JlZi5z''@;'; put 'put ''LnI7T248PVBuLl9yZWYuZS5yOysrT24pZm9yKHZhciBZbj1Qbi5fcmVmLnMuYztZbjw9UG4uX3JlZi5lLmM7KytZbil7dmFyIE1yPUFycmF5LmlzQXJyYXkoenQpPyh6dFtPbl18fFtdKVtZbl06enRbWTAoe3I6T24sYzpZbn0pXTtNciYmIm4iPT1Nci50JiZQbi5fdmFsdWVzLnB1c2goTXIu''@;'; put 'put ''dil9aWYoUG4uX3ZhbHVlcy5zb3J0KGZ1bmN0aW9uKGFpLHlyKXtyZXR1cm4gYWkteXJ9KSxQbi5fbWluPVBuLl92YWx1ZXNbMF0sUG4uX21heD1Qbi5fdmFsdWVzLnNsaWNlKC0xKVswXSxQbi5fYmFuZD1Qbi5fbWF4LVBuLl9taW4sUG4uY21pZCl7c3dpdGNoKFBuLmNtaWQudCl7Y2FzZSJu''@;'; put 'put ''dW0iOlBuLl9taWQ9UG4uY21pZC52O2JyZWFrO2Nhc2UicGVyY2VudCI6UG4uX21pZD1Qbi5jbWlkLnYvMTAwKlBuLl9iYW5kK1BuLl9taW47YnJlYWs7Y2FzZSJwZXJjZW50aWxlIjpQbi5fbWlkPWZ1bmN0aW9uIHByKEgsaWUpe2lmKDA9PWllKXJldHVybiBIWzBdO2lmKDEwMD09aWUpcmV0''@;'; put 'put ''dXJuIEhbSC5sZW5ndGgtMV07dmFyIHdlPWllLzEwMCooSC5sZW5ndGgtMSkseGU9d2UtTWF0aC5mbG9vcih3ZSk7cmV0dXJuIHhlKkhbTWF0aC5jZWlsKHdlKV0rKDEteGUpKkhbTWF0aC5mbG9vcih3ZSldfShQbi5fdmFsdWVzLFBuLmNtaWQudil9UG4uX2JhbmRoPVBuLl9tYXgtUG4uX21p''@;'; put 'put ''ZCxQbi5fYmFuZGw9UG4uX21pZC1Qbi5fbWlufX0oVG49UG4uY21pZD9SdC52Pj1Qbi5fbWlkP2g2KFBuLmNtaWQuY29sb3IsUG4uY21heC5jb2xvciwoUnQudi1Qbi5fbWlkKS9Qbi5fYmFuZGgpOmg2KFBuLmNtaW4uY29sb3IsUG4uY21pZC5jb2xvciwoUnQudi1Qbi5fbWluKS9Qbi5fYmFu''@;'; put 'put ''ZGwpOmg2KFBuLmNtaW4uY29sb3IsUG4uY21heC5jb2xvciwoUnQudi1Qbi5fbWluKS9Qbi5fYmFuZCkpJiZEdC5wdXNoKCJiYWNrZ3JvdW5kLWNvbG9yOiAjIitUbil9fSl9ZnVuY3Rpb24gWmUoUnQsVXQpe3ZhciBubj17c3BhbjpVdHx8MSxzdHlsZToiIn0sQ249W107cmV0dXJuIFJ0JiZS''@;'; put 'put ''dC53cHgmJihubi53aWR0aD1NYXRoLnJvdW5kKDQqUnQud3B4LzMpLENuLnB1c2goIndpZHRoOiIrKFJ0LndweHx8MCkrInB4IikpLENuLmxlbmd0aD4wJiYobm4uc3R5bGU9Q24uam9pbigiOyIpKSxfaSgiY29sIixudWxsLG5uKX1mdW5jdGlvbiBqZShSdCxVdCxubil7dmFyIENuPXtib3Jk''@;'; put 'put ''ZXI6MCxjZWxscGFkZGluZzowLGNlbGxzcGFjaW5nOjAsc3R5bGU6WyJib3JkZXItY29sbGFwc2U6Y29sbGFwc2UiLCJ0YWJsZS1sYXlvdXQ6Zml4ZWQiXS5qb2luKCI7Iil9O25uJiZubi5pZCYmKENuLmlkPW5uLmlkKTt2YXIgRHQ9UnRbIiFjb2xzIl0senQ9UnRbIiFzaGVldEZvcm1hdCJd''@;'; put 'put ''O2lmKFJ0JiZEdCl7Zm9yKHZhciBQbj0wLE9uPVV0LnMuYztPbjw9VXQuZS5jOysrT24pe3ZhciBZbj1EdFtPbl07UG4rPVluJiZZbi53cHg/WW4ud3B4Onp0JiZ6dC5jb2wmJnp0LmNvbC53cHg/enQuY29sLndweDo1M31Dbi5zdHlsZSs9Ijt3aWR0aDoiK1BuKyJweCJ9dmFyIGFpLE1yPVsi''@;'; put 'put ''PHRhYmxlIitybChDbikrIj4iXTtpZihNci5wdXNoKCI8c3R5bGU+dGQgeyBwYWRkaW5nLXRvcDogMXB4OyBwYWRkaW5nLXJpZ2h0OjFweDsgcGFkZGluZy1sZWZ0OjFweDsgdGV4dC1hbGlnbjpnZW5lcmFsOyB2ZXJ0aWNhbC1hbGlnbjpib3R0b207IGJvcmRlcjoxcHggc29saWQ7IGJvcmRl''@;'; put 'put ''ci1jb2xvcjoiKyhubiYmbm4uZ3JpZGNvbG9yP25uLmdyaWRjb2xvcjpucihSdFsiIWdyaWRsaW5lcyJdKT8idHJhbnNwYXJlbnQiOiJibGFjayIpKyI7IHdoaXRlLXNwYWNlOm5vd3JhcDsgdGV4dC1vdmVyZmxvdzplbGxpcHNpc308L3N0eWxlPiIpLE1yLnB1c2goJzxjb2xncm91cCBzcGFu''@;'; put 'put ''PSInKyhVdC5lLmMtVXQucy5jKzEpKyciPicpLER0KXtmb3IodmFyIHlyPVV0LnMuYzt5cjxNYXRoLm1pbihEdC5sZW5ndGgsVXQuZS5jKzEpOysreXIpIShhaT1EdFt5cl0pJiZ6dCYmenQuY29sJiYoYWk9enQuY29sKSxhaXx8KGFpPXt3cHg6NTN9KSxNci5wdXNoKFplKGFpLDEpKTtVdC5l''@;'; put 'put ''LmMtVXQucy5jKzE+RHQubGVuZ3RoJiYoYWk9bnVsbCx6dCYmenQuY29sJiYoYWk9enQuY29sKSxhaXx8KGFpPXt3cHg6NTN9KSxNci5wdXNoKFplKGFpLFV0LmUuYy1VdC5zLmMrMS1EdC5sZW5ndGgpKSl9ZWxzZSBhaT1udWxsLHp0JiZ6dC5jb2wmJihhaT16dC5jb2wpLGFpfHwoYWk9e3dw''@;'; put 'put ''eDo1M30pLE1yLnB1c2goWmUoYWksVXQuZS5jLVV0LnMuYysxKSk7cmV0dXJuIE1yLnB1c2goIjwvY29sZ3JvdXA+IiksTXIuam9pbigiIil9dmFyIFllPSc8aHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PSJ1dGYtOCIvPjx0aXRsZT5TaGVldEpTIFRhYmxlIEV4cG9ydDwvdGl0bGU+PC9oZWFk''@;'; put 'put ''Pjxib2R5PicsTXQ9IjwvYm9keT48L2h0bWw+IjtyZXR1cm57dG9fd29ya2Jvb2s6ZnVuY3Rpb24gd2UoUnQsVXQpe3JldHVybiB3MShYKFJ0LFV0KSxVdCl9LHRvX3NoZWV0OlgsX3Jvdzp4ZSxCRUdJTjpZZSxFTkQ6TXQsX3ByZWFtYmxlOmplLGh0bWxfdG9fcnM6ZnVuY3Rpb24gaWUoUnQp''@;'; put 'put ''e3ZhciBVdD1bXSxubj17fSxDbj0wO3JldHVybiBSdC5yZXBsYWNlKC88KFwvPykoW15ccz8+IVwvOl0qOnwpKFteXHM/PjpcL10rKVtePl0qPi9nbSxmdW5jdGlvbihEdCx6dCxQbixUbixPbil7dmFyIE1yPUluKGVuKER0KVswXSkucmVwbGFjZSgvWzxcLz5dL2csIiIpLGFpPVJ0LnNsaWNl''@;'; put 'put ''KENuLE9uKS5yZXBsYWNlKC9ccy9nLCIgIik7c3dpdGNoKGFpLmxlbmd0aD4wJiYoVXQucHVzaCh7dDoicyIsdjphaSxzOm5ufSksbm49bG4obm4pKSxNci50b0xvd2VyQ2FzZSgpKXtjYXNlImIiOiIvIiE9enQ/bm4uYm9sZD0hMDpkZWxldGUgbm4uYm9sZDticmVhaztjYXNlImkiOiIvIiE9''@;'; put 'put ''enQ/bm4uaXRhbGljPSEwOmRlbGV0ZSBubi5pdGFsaWM7YnJlYWs7Y2FzZSJ1IjoiLyIhPXp0P25uLnVuZGVybGluZT0xOmRlbGV0ZSBubi51bmRlcmxpbmU7YnJlYWs7Y2FzZSJzIjoiLyIhPXp0P25uLnN0cmlrZT0hMDpkZWxldGUgbm4uc3RyaWtlfXJldHVybiBDbj1PbitEdC5sZW5ndGgs''@;'; put 'put ''RHR9KSxVdH0sZnJvbV9zaGVldDpmdW5jdGlvbiB4dChSdCxVdCl7dmFyIG5uPVV0fHx7fSxEdD1udWxsIT1ubi5mb290ZXI/bm4uZm9vdGVyOk10LHp0PVtudWxsIT1ubi5oZWFkZXI/bm4uaGVhZGVyOlllLCIiXSxQbj1bXSxUbj0obmV3IERhdGUpLnZhbHVlT2YoKTtSdHx8KFJ0PXt9KSxS''@;'; put 'put ''dFsiIXJlZiJdfHwoUnRbIiFyZWYiXT0iQTE6QTEiKTt2YXIgT249QXMoUnRbIiFyZWYiXSk7aWYobm4uZGVuc2U9QXJyYXkuaXNBcnJheShSdCksbm4uc2tpcGVuZCl7dmFyIFluPU9uLmUucjtlOmZvcig7WW4+PU9uLnMucjstLVluKWZvcih2YXIgTXI9T24uZS5jO01yPj1Pbi5zLmM7LS1N''@;'; put 'put ''cilpZihudWxsIT0oKG5uLmRlbnNlPyhSdFtZbl18fFtdKVtNcl06UnRbWTAoe3I6WW4sYzpNcn0pXSl8fHt9KS52KWJyZWFrIGU7T24uZS5yPVluO3ZhciBhaT1Pbi5lLmM7ZTpmb3IoO2FpPj1Pbi5zLmM7LS1haSlmb3IodmFyIHlyPU9uLmUucjt5cj49T24ucy5yOy0teXIpaWYobnVsbCE9''@;'; put 'put ''KChubi5kZW5zZT8oUnRbeXJdfHxbXSlbYWldOlJ0W1kwKHtyOnlyLGM6YWl9KV0pfHx7fSkudilicmVhayBlO09uLmUuYz1haX16dC5wdXNoKGplKFJ0LE9uLG5uKSk7Zm9yKHZhciBhcj1Pbi5zLnI7YXI8PU9uLmUucjsrK2FyKXp0LnB1c2goeGUoUnQsT24sYXIsbm4sUG4sVG4pKTtyZXR1''@;'; put 'put ''cm4genQucHVzaCgiPC90YWJsZT4iK0R0KSxubi5jc3MmJih6dFsxXT0iPHN0eWxlPlxuIitQbi5tYXAoZnVuY3Rpb24oR3IsenIpe3JldHVybiIuc2pzIitUbisiLSIrenIrIiB7IitHcisifSJ9KS5qb2luKCJcbiIpKyI8L3N0eWxlPiIpLHp0LmpvaW4oIiIpfX19KCk7ZnVuY3Rpb24gUTAo''@;'; put 'put ''SCxpZSxYKXt2YXIgd2U9e307aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBnZXRDb21wdXRlZFN0eWxlKXJldHVybiB3ZTt2YXIgeGU9Z2V0Q29tcHV0ZWRTdHlsZShIKTtpZigoNzAwPT14ZVsiZm9udC13ZWlnaHQiXXx8ImJvbGQiPT14ZVsiZm9udC13ZWlnaHQiXSkmJih3ZS5ib2xkPSEwKSwo''@;'; put 'put ''eGVbImZvbnQtc3R5bGUiXXx8IiIpLm1hdGNoKC9pdGFsaWMvKSYmKHdlLml0YWxpYz0hMCksKHhlWyJ0ZXh0LWRlY29yYXRpb24iXXx8IiIpLm1hdGNoKC91bmRlcmxpbmUvKSYmKHdlLnVuZGVybGluZT0xKSwoeGVbInRleHQtZGVjb3JhdGlvbiJdfHwiIikubWF0Y2goL2xpbmUtdGhyb3Vn''@;'; put 'put ''aC8pJiYod2Uuc3RyaWtlPTEpLHBhcnNlSW50KHhlWyJmb250LXNpemUiXSkmJih3ZS5zej1wYXJzZUZsb2F0KHhlWyJmb250LXNpemUiXSkqKHhlWyJmb250LXNpemUiXS5tYXRjaCgvcHgvKT8zLzQ6MSkpLHhlWyJmb250LWZhbWlseSJdJiYod2UubmFtZT14ZVsiZm9udC1mYW1pbHkiXS5z''@;'; put 'put ''cGxpdCgiLCIpWzBdLnJlcGxhY2UoL1xzKiJccyovZywiIikpLHhlLmNvbG9yKXt2YXIgRmU9WDgoeGUuY29sb3IudG9Mb3dlckNhc2UoKSwhMCk7RmU+PTAmJih3ZS5jb2xvcj17cmdiOkZlfSl9c3dpdGNoKHhlWyJ0ZXh0LXRyYW5zZm9ybSJdJiYod2UudGV4dF90cmFuc2Zvcm09eGVbInRl''@;'; put 'put ''eHQtdHJhbnNmb3JtIl0udG9Mb3dlckNhc2UoKSksIm5vbmUiIT0oeGVbInRleHQtc2hhZG93Il18fCJub25lIikmJih3ZS5zaGFkb3c9ITApLHhlWyJ0ZXh0LWFsaWduIl0pe2Nhc2UiY2VudGVyIjp3ZS5hbGlnbm1lbnQ9e2hvcml6b250YWw6ImNlbnRlciJ9O2JyZWFrO2Nhc2UicmlnaHQi''@;'; put 'put ''OndlLmFsaWdubWVudD17aG9yaXpvbnRhbDoicmlnaHQifTticmVhaztjYXNlImxlZnQiOndlLmFsaWdubWVudD17aG9yaXpvbnRhbDoibGVmdCJ9O2JyZWFrO2Nhc2UianVzdGlmeSI6d2UuYWxpZ25tZW50PXtob3Jpem9udGFsOiJqdXN0aWZ5In19c3dpdGNoKHhlWyJ2ZXJ0aWNhbC1hbGln''@;'; put 'put ''biJdKXtjYXNlInRvcCI6Y2FzZSJtaWRkbGUiOmNhc2UiYm90dG9tIjp3ZS5hbGlnbm1lbnR8fCh3ZS5hbGlnbm1lbnQ9e30pLHdlLmFsaWdubWVudC52ZXJ0aWNhbD14ZVsidmVydGljYWwtYWxpZ24iXSwibWlkZGxlIj09d2UuYWxpZ25tZW50LnZlcnRpY2FsJiYod2UuYWxpZ25tZW50LnZl''@;'; put 'put ''cnRpY2FsPSJjZW50ZXIiKTticmVhaztjYXNlInN1YiI6Y2FzZSJzdXBlciI6d2UudmFsaWduPXhlWyJ2ZXJ0aWNhbC1hbGlnbiJdLHdlLnN6JiYod2Uuc3ovPS44Myl9dmFyIFplPWllJiZnZXRDb21wdXRlZFN0eWxlKGllKTtyZXR1cm4gWmUmJlgmJmllJiZbImxlZnQiLCJyaWdodCIsInRv''@;'; put 'put ''cCIsImJvdHRvbSJdLmZvckVhY2goZnVuY3Rpb24oamUpe3ZhciBZZT1qZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStqZS5zbGljZSgxKSxNdD1aZVsiYm9yZGVyLSIramUrIi1zdHlsZSJdO2lmKCgibm9uZSI9PU10fHwhTXQpJiYoTXQ9WmVbImJvcmRlciIrWWUrIlN0eWxlIl0pLCJub25l''@;'; put 'put ''IiE9TXQmJk10KXt2YXIgeHQ9cGFyc2VJbnQoWmVbImJvcmRlci0iK2plKyItd2lkdGgiXXx8WmVbImJvcmRlciIrWWUrIldpZHRoIl0sMTApLFJ0PSJ0aGluIjtpZih4dD4wKXtzd2l0Y2goTXQpe2Nhc2UiZG91YmxlIjpSdD0iZG91YmxlIjticmVhaztjYXNlImRhc2hlZCI6UnQ9eHQ+PTI/''@;'; put 'put ''Im1lZGl1bURhc2hlZCI6ImRhc2hlZCI7YnJlYWs7Y2FzZSJkb3R0ZWQiOlJ0PXh0Pj0yPyJtZWRpdW1EYXNoRG90RG90IjoiZG90dGVkIjticmVhaztjYXNlInNvbGlkIjpSdD14dD49Mz8idGhpY2siOnh0Pj0yPyJtZWRpdW0iOiJ0aGluIn1pZih3ZVtqZV09e3N0eWxlOlJ0fSxaZVsiYm9y''@;'; put 'put ''ZGVyLSIramUrIi1jb2xvciJdfHxaZVsiYm9yZGVyIitZZSsiQ29sb3IiXSl7dmFyIFV0PVg4KChaZVsiYm9yZGVyLSIramUrIi1jb2xvciJdfHxaZVsiYm9yZGVyIitZZSsiQ29sb3IiXSkudG9Mb3dlckNhc2UoKSwhMCk7VXQ+PTAmJih3ZVtqZV0uY29sb3I9e3JnYjpVdH0pfX19fSksd2V9''@;'; put 'put ''ZnVuY3Rpb24gQzIoSCxpZSxYKXt2YXIgd2U9SC5jaGlsZE5vZGVzO2lmKDE9PUgubm9kZVR5cGUpc3dpdGNoKEgudGFnTmFtZS50b0xvd2VyQ2FzZSgpKXtjYXNlInAiOmllLmxlbmd0aD4wJiZpZS5wdXNoKHt0OiJ0Iix2OiJcbiIsczpYfSk7YnJlYWs7Y2FzZSJzZWxlY3QiOnJldHVybiBm''@;'; put 'put ''dW5jdGlvbiB1byhILGllLFgpe2llLnB1c2goe3Q6InQiLHY6SC5jaGlsZHJlbltILnNlbGVjdGVkSW5kZXhdLmlubmVyVGV4dCxzOlh9KX0oSCxpZSxYKX1pZih3ZS5sZW5ndGg+MCl7dmFyIHhlPVEwKEgsbnVsbCwhMSk7WCYmKFgudW5kZXJsaW5lJiYoeGUudW5kZXJsaW5lPVgudW5kZXJs''@;'; put 'put ''aW5lKSxYLnN0cmlrZSYmKHhlLnN0cmlrZT1YLnN0cmlrZSkpO2Zvcih2YXIgRmU9MDtGZTx3ZS5sZW5ndGg7KytGZSl7dHJ5e2lmKHdlW0ZlXS5nZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIikpY29udGludWV9Y2F0Y2goamUpe31DMih3ZVtGZV0saWUseGUpfWRlbGV0ZSB4ZS50ZXh0X3Ry''@;'; put 'put ''YW5zZm9ybX1lbHNlIGlmKDM9PUgubm9kZVR5cGUpe3ZhciBaZT17dDoidCIsdjpILm5vZGVWYWx1ZS5yZXBsYWNlKC9eW1xuIF0rLywiICIpLnJlcGxhY2UoL1tcbiBdKyQvLCIgIiksczpYfTtzd2l0Y2goWC50ZXh0X3RyYW5zZm9ybSl7Y2FzZSJ1cHBlcmNhc2UiOlplLnY9WmUudi50b1Vw''@;'; put 'put ''cGVyQ2FzZSgpO2JyZWFrO2Nhc2UibG93ZXJjYXNlIjpaZS52PVplLnYudG9Mb3dlckNhc2UoKX0oaWUubGVuZ3RoPjB8fFplLnYmJiIgIiE9WmUudikmJmllLnB1c2goWmUpfWVsc2UgMT09SC5ub2RlVHlwZSYmImJyIj09PUgudGFnTmFtZS50b0xvd2VyQ2FzZSgpJiZpZS5wdXNoKHt0OiJ0''@;'; put 'put ''Iix2OiJcbiIsczpYfSl9ZnVuY3Rpb24gTDYoSCxpZSxYLHdlLHhlKXt2YXIgWmUsRmU9SC5pbm5lckhUTUw7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBnZXRDb21wdXRlZFN0eWxlKXN3aXRjaChaZT1nZXRDb21wdXRlZFN0eWxlKEgpLChaZVsid2hpdGUtc3BhY2UiXXx8IiIpLm1hdGNoKC9w''@;'; put 'put ''cmUvKSYmKEZlPUZlLnJlcGxhY2UoL1xuL2csIjxici8+IikpLChaZVsidGV4dC10cmFuc2Zvcm0iXXx8IiIpLnRvTG93ZXJDYXNlKCkpe2Nhc2UidXBwZXJjYXNlIjpGZT1GZS50b1VwcGVyQ2FzZSgpO2JyZWFrO2Nhc2UibG93ZXJjYXNlIjpGZT1GZS50b0xvd2VyQ2FzZSgpfXZhciBqZT1m''@;'; put 'put ''dW5jdGlvbiBkVChILGllLFgsd2Upe3ZhciB4ZT17dDoicyIsdjppZX0sRmU9IiI7aWYoSCl7WD1ILmdldEF0dHJpYnV0ZSgiZGF0YS10Iil8fEguZ2V0QXR0cmlidXRlKCJ0Iik7dmFyIFplPUguZ2V0QXR0cmlidXRlKCJkYXRhLXYiKXx8SC5nZXRBdHRyaWJ1dGUoInYiKTtpZihudWxsIT0o''@;'; put 'put ''RmU9SC5nZXRBdHRyaWJ1dGUoImRhdGEteiIpfHxILmdldEF0dHJpYnV0ZSgieiIpKSYmKHhlLno9RmUpLG51bGwhPVgmJm51bGwhPVplKXJldHVybiB4ZS50PVgseGUudj1aZSx4ZX1yZXR1cm4gbnVsbCE9aWUmJigwPT1pZS5sZW5ndGg/eGUudD1YfHwieiI6d2UucmF3fHwhaWUudHJpbSgp''@;'; put 'put ''Lmxlbmd0aHx8InMiPT1YfHwoeGU9RnIoaWUsd2UpKSksRmUmJih4ZS56PUZlKSx4ZX0oSCxNYShGZSksWCx4ZSk7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBnZXRDb21wdXRlZFN0eWxlJiYoamUucz1RMChILGllLHhlLmJvcmRlcnMpLGRlbGV0ZSBqZS5zLnRleHRfdHJhbnNmb3JtLEguY2hp''@;'; put 'put ''bGROb2Rlcy5sZW5ndGg+MXx8MT09SC5jaGlsZE5vZGVzLmxlbmd0aCYmMyE9SC5jaGlsZE5vZGVzWzBdLm5vZGVUeXBlKSlzd2l0Y2goQzIoSCxqZS5SPVtdLG51bGwpLGplLlImJmplLlJbamUuUi5sZW5ndGgtMV0mJiJcbiI9PWplLlJbamUuUi5sZW5ndGgtMV0udiYmamUuUi5sZW5ndGgt''@;'; put 'put ''LSwoWmVbInRleHQtdHJhbnNmb3JtIl18fCIiKS50b0xvd2VyQ2FzZSgpKXtjYXNlInVwcGVyY2FzZSI6amUuUi5mb3JFYWNoKGZ1bmN0aW9uKFV0KXtVdC52PVV0LnYudG9VcHBlckNhc2UoKX0pO2JyZWFrO2Nhc2UibG93ZXJjYXNlIjpqZS5SLmZvckVhY2goZnVuY3Rpb24oVXQpe1V0LnY9''@;'; put 'put ''VXQudi50b0xvd2VyQ2FzZSgpfSl9aWYoInMiPT1qZS50KXt2YXIgWWU9amUudi5tYXRjaCgvXG4vKTshWWUmJmplLlImJmplLlIuZm9yRWFjaChmdW5jdGlvbihVdCl7InN0cmluZyI9PXR5cGVvZiBVdC52JiZVdC52Lm1hdGNoKC9cbi8pJiYoWWU9ITApfSksInMiPT1qZS50JiZZZSYmKGpl''@;'; put 'put ''LnN8fChqZS5zPXt9KSxqZS5zLmFsaWdubWVudHx8KGplLnMuYWxpZ25tZW50PXt9KSxqZS5zLmFsaWdubWVudC53cmFwVGV4dD0hMCl9aWYoaWUpe3ZhciBNdD0iIix4dD1pZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiQSIpO2lmKHh0JiZ4dC5sZW5ndGgpZm9yKHZhciBSdD0wO1J0PHh0Lmxl''@;'; put 'put ''bmd0aCYmKCF4dFtSdF0uaGFzQXR0cmlidXRlKCJocmVmIil8fCIjIj09KE10PXh0W1J0XS5nZXRBdHRyaWJ1dGUoImhyZWYiKSkuY2hhckF0KDApKTsrK1J0KTtNdCYmIiMiIT1NdC5jaGFyQXQoMCkmJihqZS5sPXtUYXJnZXQ6TXR9KX1yZXR1cm4gamV9ZnVuY3Rpb24gVmgoSCxpZSxYKXt2''@;'; put 'put ''YXIgeGUsd2U9aWUucm93cztpZighd2Upe2lmKFgmJm51bGwhPVgub3JpZ2luKXRocm93IlVuc3VwcG9ydGVkIG9yaWdpbiB3aGVuICIraWUudGFnTmFtZSsiIGlzIG5vdCBhIFRBQkxFIjtyZXR1cm4gZnVuY3Rpb24galAoSCxpZSxYKXtYPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoWHx8''@;'; put 'put ''e30pKTt2YXIgRmU9e3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fTtIWyIhbWVyZ2VzIl18fChIWyIhbWVyZ2VzIl09W10pO2Zvcih2YXIgamUsWmU9aWUuY2hpbGRyZW4sWWU9MCxNdD0wO010PFplLmxlbmd0aDsrK010KXt2YXIgVXQseHQ9WmVbTXRdLFJ0PSIiO3RyeXsidW5kZWZpbmVkIiE9''@;'; put 'put ''dHlwZW9mIGdldENvbXB1dGVkU3R5bGU/VXQ9Z2V0Q29tcHV0ZWRTdHlsZTp4dC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3JiYiZnVuY3Rpb24iPT10eXBlb2YgeHQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlJiYoVXQ9eHQub3duZXJEb2N1bWVudC5kZWZh''@;'; put 'put ''dWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKX1jYXRjaChubil7fWlmKCFVdHx8Im5vbmUiIT1VdCh4dCkuZGlzcGxheSlzd2l0Y2goeHQudGFnTmFtZS50b1VwcGVyQ2FzZSgpKXtjYXNlIlRBQkxFIjpZZT0tMSxIWyIhcmVmIl0mJihYLm9yaWdpbj0tMSksVmgoSCx4dCxYKTticmVhaztjYXNl''@;'; put 'put ''IkJSIjpjYXNlIkhSIjpZZT0tMSxIWyIhcmVmIl0/KCsrKEZlPUFzKEhbIiFyZWYiXSkpLmUucixIWyIhcmVmIl09ZmEoRmUpKTpIWyIhcmVmIl09IkExOkExIjticmVhaztjYXNlIkRJViI6Y2FzZSJQIjpjYXNlIkgxIjpjYXNlIkgyIjpjYXNlIkgzIjpjYXNlIkg0IjpjYXNlIkg1IjpjYXNl''@;'; put 'put ''Ikg2IjpZZT0tMSxqZT1MNih4dCxudWxsLCIiLDAsWCksSFsiIXJlZiJdPyhYLm9yaWdpbj0tMSxsZihILFtbamVdXSxYKSk6KEhbIiFyZWYiXT0iQTEiLEFycmF5LmlzQXJyYXkoSCk/KEhbMF18fChIWzBdPVtdKSxIWzBdWzBdPWplKTpILkExPWplKSxIWyIhcm93cyJdfHwoSFsiIXJvd3Mi''@;'; put 'put ''XT1bXSksVXQmJihGZT1BcyhIWyIhcmVmIl0pLChSdD1VdCh4dCkuaGVpZ2h0KSYmImF1dG8iIT1SdCYmKEhbIiFyb3dzIl1bRmUuZS5yXT17aHB0OnBhcnNlSW50KFJ0LDEwKX0pKTticmVhaztjYXNlIlNQQU4iOmNhc2UiQSI6Y2FzZSJCIjpjYXNlIkVNIjpjYXNlIkkiOmNhc2UiRk9OVCI6''@;'; put 'put ''Y2FzZSJTIjpjYXNlIlNVQiI6Y2FzZSJTVVAiOmNhc2UiVSI6amU9TDYoeHQsbnVsbCwiIiwwLFgpLEhbIiFyZWYiXXx8KEhbIiFyZWYiXT0iQTE6QTEiKSxsZihILFtbamVdXSx7b3JpZ2luOlkwKHtyOihZZTwwPzE6MCkrKEZlPUFzKEhbIiFyZWYiXSkpLmUucixjOisrWWV9KX0pO2JyZWFr''@;'; put 'put ''O2Nhc2UiREwiOmNhc2UiVUwiOmNhc2UiT0wiOlllPS0xLGNvbnNvbGUuZXJyb3IoIkhUTUwgQ29udmVyc2lvbiBkb2VzIG5vdCBzdXBwb3J0IGxpc3QgZWxlbWVudCAiK3h0LnRhZ05hbWUudG9VcHBlckNhc2UoKSk7YnJlYWs7ZGVmYXVsdDpZZT0tMSxjb25zb2xlLmVycm9yKCJTa2lwcGlu''@;'; put 'put ''ZyAiK3h0LnRhZ05hbWUudG9VcHBlckNhc2UoKSl9fXJldHVybiBIfShILGllLFgpfXRyeXsidW5kZWZpbmVkIiE9dHlwZW9mIGdldENvbXB1dGVkU3R5bGU/eGU9Z2V0Q29tcHV0ZWRTdHlsZTppZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3JiYiZnVuY3Rpb24iPT10eXBlb2YgaWUub3du''@;'; put 'put ''ZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlJiYoeGU9aWUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKX1jYXRjaCgkMCl7fXZhciBGZT1YfHx7fSxaZT0wLGplPTA7aWYobnVsbCE9RmUub3JpZ2luKWlmKCJudW1iZXIiPT10eXBlb2Yg''@;'; put 'put ''RmUub3JpZ2luKVplPUZlLm9yaWdpbjtlbHNle3ZhciBZZT0ic3RyaW5nIj09dHlwZW9mIEZlLm9yaWdpbj91bChGZS5vcmlnaW4pOkZlLm9yaWdpbjtaZT1ZZS5yLGplPVllLmN9dmFyIE10PU1hdGgubWluKEZlLnNoZWV0Um93c3x8MWU3LHdlLmxlbmd0aCkseHQ9e3M6e3I6MCxjOjB9LGU6''@;'; put 'put ''e3I6WmUsYzpqZX19O2lmKEhbIiFyZWYiXSl7dmFyIFJ0PUFzKEhbIiFyZWYiXSk7eHQucy5yPU1hdGgubWluKHh0LnMucixSdC5zLnIpLHh0LnMuYz1NYXRoLm1pbih4dC5zLmMsUnQucy5jKSx4dC5lLnI9TWF0aC5tYXgoeHQuZS5yLFJ0LmUucikseHQuZS5jPU1hdGgubWF4KHh0LmUuYyxS''@;'; put 'put ''dC5lLmMpLC0xPT1aZSYmKHh0LmUucj1aZT1SdC5lLnIrMSl9dmFyIFV0PVtdLG5uPTAsQ249SFsiIXJvd3MiXXx8KEhbIiFyb3dzIl09W10pLER0PTAsenQ9MCxQbj0wLFRuPTAsT249MCxZbj0wO2ZvcihIWyIhY29scyJdfHwoSFsiIWNvbHMiXT1bXSk7RHQ8d2UubGVuZ3RoJiZ6dDxNdDsr''@;'; put 'put ''K0R0KXtmb3IodmFyIE1yPXdlW0R0XSxhaT1Nci5wYXJlbnRFbGVtZW50OyJUQUJMRSIhPWFpLnRhZ05hbWUudG9VcHBlckNhc2UoKTspYWk9YWkucGFyZW50RWxlbWVudDtpZihhaT09aWUpe2U6aWYodm9pZCAwIT09eGUpe3ZhciB5cj14ZShNcik7aWYobnVsbD09eXIpYnJlYWsgZTtpZih5''@;'; put 'put ''ci5zdHlsZXx8KHlyLnN0eWxlPXt9KSxGZS5kaXNwbGF5JiYibm9uZSI9PSh5ci5kaXNwbGF5fHx5ci5zdHlsZS5kaXNwbGF5KSljb250aW51ZTsibm9uZSI9PSh5ci5kaXNwbGF5fHx5ci5zdHlsZS5kaXNwbGF5KSYmKChDblt6dF18fChDblt6dF09e30pKS5oaWRkZW49ITApfXZhciBhcj1N''@;'; put 'put ''ci5jZWxscztmb3IoUG49VG49MDtQbjxhci5sZW5ndGg7KytQbil7dmFyIEdyPWFyW1BuXSx6cj1udWxsO2lmKHZvaWQgMD09PXhlfHwobnVsbD09enImJih6cj14ZShHcikpLHpyLnN0eWxlfHwoenIuc3R5bGU9e30pLCFGZS5kaXNwbGF5fHxudWxsPT16cnx8Im5vbmUiIT0oenIuZGlzcGxh''@;'; put 'put ''eXx8enIuc3R5bGUuZGlzcGxheSkpKXtmb3IoWW49K0dyLmdldEF0dHJpYnV0ZSgiY29sc3BhbiIpfHwxLG5uPTA7bm48VXQubGVuZ3RoOysrbm4pe3ZhciBxcj1VdFtubl07cXIucy5jPT1UbitqZSYmcXIucy5yPHp0K1plJiZ6dCtaZTw9cXIuZS5yJiYoVG49cXIuZS5jKzEtamUsbm49LTEp''@;'; put 'put ''fSgoT249K0dyLmdldEF0dHJpYnV0ZSgicm93c3BhbiIpfHwxKT4xfHxZbj4xKSYmVXQucHVzaCh7czp7cjp6dCtaZSxjOlRuK2plfSxlOntyOnp0K1plKyhPbnx8MSktMSxjOlRuK2plKyhZbnx8MSktMX19KTt2YXIgb2k9R3IuZ2V0QXR0cmlidXRlKCJ0Iil8fCIiLGNyPUdyLmdldEF0dHJp''@;'; put 'put ''YnV0ZSgiYmdjb2xvciIpO2U6aWYodm9pZCAwIT09eGUpe2lmKG51bGw9PXpyJiYoenI9eGUoR3IpKSxudWxsPT16cilicmVhayBlO2lmKHpyLnN0eWxlfHwoenIuc3R5bGU9e30pLDE9PVluJiZ6ci53aWR0aCYmKEhbIiFjb2xzIl1bVG4ramVdPUhbIiFjb2xzIl1bVG4ramVdfHx7fSx6ci53''@;'; put 'put ''aWR0aC5tYXRjaCgvcHgvKT9IWyIhY29scyJdW1RuK2plXS53cHg9TWF0aC5tYXgocGFyc2VJbnQoenIud2lkdGgsMTApKzUsSFsiIWNvbHMiXVtUbitqZV0ud3B4fHwwKTp6ci53aWR0aC5tYXRjaCgvcHQvKSYmKEhbIiFjb2xzIl1bVG4ramVdLndweD1NYXRoLm1heCg0KnBhcnNlSW50KHpy''@;'; put 'put ''LndpZHRoLDEwKS8zKzUsSFsiIWNvbHMiXVtUbitqZV0ud3B4fHwwKSkpLE9uPD0xKXtDblt6dCtaZV18fChDblt6dCtaZV09e30pO3ZhciBkaT16ci5oZWlnaHQ7KGRpPWRpLm1hdGNoKC9wdC8pP0FmKHBhcnNlSW50KGRpLDEwKSk6cGFyc2VJbnQoZGksMTApKT4oQ25benQrWmVdLmhweHx8''@;'; put 'put ''QWYoQ25benQrWmVdLmhwdCl8fDApJiYoZGVsZXRlIENuW3p0K1plXS5ocHQsQ25benQrWmVdLmhweD1kaSl9fXZhciB2MD1HcjtpZihHci5maXJzdEVsZW1lbnRDaGlsZCYmMT09R3IuY2hpbGRyZW4ubGVuZ3RoJiYic3BhbiI9PUdyLmZpcnN0RWxlbWVudENoaWxkLm5vZGVOYW1lLnRvTG93''@;'; put 'put ''ZXJDYXNlKCkpe2Zvcih2YXIgVWk9MCx0bz1Hci5jaGlsZE5vZGVzLEEwPTA7QTA8dG8ubGVuZ3RoOysrQTApMz09dG9bQTBdLm5vZGVUeXBlJiYrK1VpOzA9PVVpJiYoR3I9R3IuZmlyc3RFbGVtZW50Q2hpbGQpfXZhciBiaT1MNihHcix2MCxvaSwwLEZlKTtpZih6cil7dmFyIFlyPXhlKEdy''@;'; put 'put ''KTtpZihZciYmIVlyLnN0eWxlJiYoWXIuc3R5bGU9e30pLChZciYmWXJbImJhY2tncm91bmQtY29sb3IiXXx8enJbImJhY2tncm91bmQtY29sb3IiXSkmJihiaS5zfHwoYmkucz17fSksIWJpLnMuZmdDb2xvcikpdHJ5e3ZhciBFaT1ZciYmWXJbImJhY2tncm91bmQtY29sb3IiXXx8enJbImJh''@;'; put 'put ''Y2tncm91bmQtY29sb3IiXTtFaS5tYXRjaCgvcmdiYVsoXVxzKjAuKlspXS9pKSYmKEVpPXpyWyJiYWNrZ3JvdW5kLWNvbG9yIl0pO3ZhciBoaT1YOChFaS50b0xvd2VyQ2FzZSgpLCEwKTtoaT49MCYmKGJpLnMuZmdDb2xvcj17cmdiOmhpfSl9Y2F0Y2goJDApe31zd2l0Y2goenJbInZlcnRp''@;'; put 'put ''Y2FsLWFsaWduIl0pe2Nhc2UibWlkZGxlIjpjYXNlImJhc2VsaW5lIjpiaS5zfHwoYmkucz17fSksYmkucy5hbGlnbm1lbnR8fChiaS5zLmFsaWdubWVudD17fSksYmkucy5hbGlnbm1lbnQudmVydGljYWw9ImNlbnRlciJ9fWlmKGNyJiYoYmkuc3x8KGJpLnM9e30pLCFiaS5zLmZnQ29sb3Ip''@;'; put 'put ''KXRyeXt2YXIgTnI9WDgoY3IudG9Mb3dlckNhc2UoKSwhMCk7TnI+PTAmJihiaS5zLmZnQ29sb3I9e3JnYjpOcn0pfWNhdGNoKCQwKXt9aWYoRmUuZGVuc2U/KEhbenQrWmVdfHwoSFt6dCtaZV09W10pLEhbenQrWmVdW1RuK2plXT1iaSk6SFtZMCh7YzpUbitqZSxyOnp0K1plfSldPWJpLE9u''@;'; put 'put ''PjF8fFluPjEpZm9yKHZhciBraT16dDtraTx6dCtPbjsrK2tpKWZvcih2YXIgTjA9VG47TjA8VG4rWW47KytOMCl6dD09a2kmJlRuPT1OMHx8KEZlLmRlbnNlPyhIW2tpK1plXXx8KEhba2krWmVdPVtdKSxIW2tpK1plXVtOMCtqZV09e3Q6InoiLHM6bG4oYmkuc3x8e30pfSk6SFtZMCh7YzpO''@;'; put 'put ''MCtqZSxyOmtpK1plfSldPXt0OiJ6IixzOmxuKGJpLnN8fHt9KX0pO3h0LmUuYzxUbitqZSYmKHh0LmUuYz1UbitqZSksVG4rPVlufX0rK3p0fX1pZihVdC5sZW5ndGgmJihIWyIhbWVyZ2VzIl09KEhbIiFtZXJnZXMiXXx8W10pLmNvbmNhdChVdCkpLHh0LmUucj1NYXRoLm1heCh4dC5lLnIs''@;'; put 'put ''enQtMStaZSksSFsiIXJlZiJdPWZhKHh0KSx6dD49TXQmJihIWyIhZnVsbHJlZiJdPWZhKCh4dC5lLnI9d2UubGVuZ3RoLUR0K3p0LTErWmUseHQpKSksRmUuYm9yZGVycylmb3IoenQ9eHQucy5yO3p0PD14dC5lLnI7Kyt6dClmb3IoVG49eHQucy5jO1RuPD14dC5lLmM7KytUbilpZighRmUu''@;'; put 'put ''ZGVuc2Upe3ZhciB0MD1IW1kwKHtyOnp0LGM6VG59KV07aWYoIXQwfHwhdDAucyljb250aW51ZTtpZih6dD4wKXt2YXIgaW89SFtZMCh7cjp6dC0xLGM6VG59KV07aW8mJmlvLnMmJmlvLnMuYm90dG9tJiZkZWxldGUgdDAucy50b3B9aWYoVG4+MCl7dmFyIG9hPUhbWTAoe3I6enQsYzpUbi0x''@;'; put 'put ''fSldO29hJiZvYS5zJiZvYS5zLmJvdHRvbSYmZGVsZXRlIHQwLnMubGVmdH19cmV0dXJuIEh9ZnVuY3Rpb24gckMoSCxpZSl7cmV0dXJuIFZoKChpZXx8e30pLmRlbnNlP1tdOnt9LEgsaWUpfXZhciBpQz1mdW5jdGlvbigpe3ZhciBIPWZ1bmN0aW9uKHdlLHhlLEZlKXt2YXIgWmU9d2UucmVw''@;'; put 'put ''bGFjZSgvW1x0XHJcbl0vZywiICIpLnRyaW0oKS5yZXBsYWNlKC8gKy9nLCIgIikucmVwbGFjZSgvPHRleHQ6c1wvPi9nLCIgIikucmVwbGFjZSgvPHRleHQ6cyB0ZXh0OmM9IihcZCspIlwvPi9nLGZ1bmN0aW9uKHh0LFJ0KXtyZXR1cm4gQXJyYXkocGFyc2VJbnQoUnQsMTApKzEpLmpvaW4o''@;'; put 'put ''IiAiKX0pLnJlcGxhY2UoLzx0ZXh0OnRhYltePl0qXC8+L2csIlx0IikucmVwbGFjZSgvPHRleHQ6bGluZS1icmVha1wvPi9nLCJcbiIpLGplPWdyKFplLnJlcGxhY2UoLzxbXj5dKj4vZywiIikpLFllPVtdLE10PTA7cmV0dXJuIFplLnJlcGxhY2UoLyg8dGV4dDpzcGFuLio/PikoLio/KTxb''@;'; put 'put ''XC9ddGV4dDpzcGFuPi9nLGZ1bmN0aW9uKHh0LFJ0LFV0LG5uKXtubiE9TXQmJlllLnB1c2goe3Q6InMiLHY6Z3IoWmUuc2xpY2UoTXQsbm4pKX0pO3ZhciBDbj17dDoicyIsdjpncihVdCl9LER0PWVuKFJ0KVsic3R5bGUtbmFtZSJdO3JldHVybiBEdCYmRmVbRHRdJiYoQ24ucz1sbihGZVtE''@;'; put 'put ''dF0pKSxZZS5wdXNoKENuKSxNdD1ubit4dC5sZW5ndGgsIiJ9KSxNdDxaZS5sZW5ndGgmJlllLnB1c2goe3Q6InMiLHY6Z3IoWmUuc2xpY2UoTXQpKX0pLFtqZSxZZV19LGllPXtkYXk6WyJkIiwiZGQiXSxtb250aDpbIm0iLCJtbSJdLHllYXI6WyJ5IiwieXkiXSxob3VyczpbImgiLCJoaCJd''@;'; put 'put ''LG1pbnV0ZXM6WyJtIiwibW0iXSxzZWNvbmRzOlsicyIsInNzIl0sImFtLXBtIjpbIkEvUCIsIkFNL1BNIl0sImRheS1vZi13ZWVrIjpbImRkZCIsImRkZGQiXSxlcmE6WyJlIiwiZWUiXSxxdWFydGVyOlsiXFxRbSIsJ21cXCJ0aCBxdWFydGVyIiddfSxYPWZ1bmN0aW9uKHdlLHhlKXt2YXIg''@;'; put 'put ''RmU9ZW4od2Uuc2xpY2UoMCx3ZS5pbmRleE9mKCI+IikpKSxaZT13ZS5zbGljZSh3ZS5pbmRleE9mKCI+IikrMSksamU9e25hbWU6RmUubmFtZSxmYW1pbHk6RmUuZmFtaWx5fTtbWyJwYXJlbnQiLCJwYXJlbnQtc3R5bGUtbmFtZSJdLFsiZGF0YW5hbWUiLCJkYXRhLXN0eWxlLW5hbWUiXSxb''@;'; put 'put ''Im1wbmFtZSIsIm1hc3Rlci1wYWdlLW5hbWUiXV0uZm9yRWFjaChmdW5jdGlvbihNdCl7RmVbTXRbMV1dJiYoamVbTXRbMF1dPUZlW010WzFdXSl9KTt2YXIgWWU9e307WmUucmVwbGFjZShHdCxmdW5jdGlvbihNdCl7dmFyIHh0PWVuKE10KTtpZigiPHN0eWxlOnRleHQtcHJvcGVydGllcyI9''@;'; put 'put ''PT14dFswXSl7aWYoeHRbImZvbnQtd2VpZ2h0Il0mJihZZS5ib2xkPSsoImJvbGQiPT14dFsiZm9udC13ZWlnaHQiXXx8IjcwMCI9PXh0WyJmb250LXdlaWdodCJdKSksKCJpdGFsaWMiPT14dFsiZm9udC1zdHlsZSJdfHwib2JsaXF1ZSI9PXh0WyJmb250LXN0eWxlIl0pJiYoWWUuaXRhbGlj''@;'; put 'put ''PTEpLCJub25lIiE9KHh0WyJ0ZXh0LXVuZGVybGluZS1zdHlsZSJdfHwibm9uZSIpP1llLnVuZGVybGluZT0iZG91YmxlIj09eHRbInRleHQtdW5kZXJsaW5lLXR5cGUiXT8yOjE6KHh0WyJ0ZXh0LXVuZGVybGluZS1zdHlsZSJdfHwibm9uZSI9PXh0WyJ0ZXh0LXVuZGVybGluZS10eXBlIl0p''@;'; put 'put ''JiYoWWUudW5kZXJsaW5lPTApLCh4dFsiZm9udC1zaXplIl18fCIiKS5tYXRjaCgvcHQkLykmJihZZS5zej0reHRbImZvbnQtc2l6ZSJdLnJlcGxhY2UoInB0IiwiIikpLCJub25lIiE9KHh0WyJ0ZXh0LWxpbmUtdGhyb3VnaC1zdHlsZSJdfHwibm9uZSIpJiYoWWUuc3RyaWtlPTEpLHh0WyJm''@;'; put 'put ''b250LW5hbWUiXSYmKFllLm5hbWU9eHRbImZvbnQtbmFtZSJdKSx4dC5jb2xvcil7dmFyIFJ0PVg4KHh0LmNvbG9yLCEwKTtSdD49MCYmKFllLmNvbG9yPVJ0KX1zd2l0Y2goeHRbInRleHQtcG9zaXRpb24iXSl7Y2FzZSJzdXBlciI6WWUudmFsaWduPSJzdXBlciI7YnJlYWs7Y2FzZSJzdWIi''@;'; put 'put ''OlllLnZhbGlnbj0ic3ViIjticmVhaztkZWZhdWx0Oih4dFsidGV4dC1wb3NpdGlvbiJdfHwiIikubWF0Y2goLyUvKSYmKFllLnZhbGlnbj0iLSI9PXh0WyJ0ZXh0LXBvc2l0aW9uIl0uY2hhckF0KDApPyJzdWIiOiJzdXBlciIpfSJub25lIiE9KHh0WyJ0ZXh0LXNoYWRvdyJdfHwibm9uZSIp''@;'; put 'put ''JiYoWWUuc2hhZG93PTEpfXJldHVybiIifSkseGVbRmUubmFtZV09WWV9O3JldHVybiBmdW5jdGlvbih4ZSxGZSl7dmFyIE10LHh0LENuLER0LE9uLFluLFplPUZlfHx7fSxqZT1DNSh4ZSksWWU9W10sUnQ9e25hbWU6IiJ9LFV0PSIiLG5uPTAsenQ9e30sUG49W10sVG49WmUuZGVuc2U/W106''@;'; put 'put ''e30sTXI9e3ZhbHVlOiIifSxhaT0iIix5cj0wLEdyPVtdLHpyPS0xLHFyPS0xLG9pPXtzOntyOjFlNixjOjFlN30sZTp7cjowLGM6MH19LGNyPTAsZGk9e30sdjA9W10sVWk9e30sdG89MCxBMD0wLGJpPVtdLFlyPTEsRWk9MSxoaT1bXSxOcj17TmFtZXM6W119LGtpPXt9LE4wPVsiIiwiIl0s''@;'; put 'put ''dDA9W10saW89e30sb2E9e30sJDA9MCxWYT0iIixqbz0wLHdhPSExLGFvPSExLHgwPTA7Zm9yKE5oLmxhc3RJbmRleD0wLGplPWplLnJlcGxhY2UoLzwhLS0oW1xzXFNdKj8pLS0+L2dtLCIiKS5yZXBsYWNlKC88IURPQ1RZUEVbXlxbXSpcW1teXF1dKlxdPi9nbSwiIik7T249TmguZXhlYyhq''@;'; put 'put ''ZSk7KXN3aXRjaChPblszXT1PblszXS5yZXBsYWNlKC9fLiokLywiIikpe2Nhc2UidGFibGUiOmNhc2UiXHU1ZGU1XHU0ZjVjXHU4ODY4IjoiLyI9PT1PblsxXT8oVG5bIiFyZWYiXT1vaS5lLmM+PW9pLnMuYyYmb2kuZS5yPj1vaS5zLnI/ZmEob2kpOiJBMTpBMSIsWmUuc2hlZXRSb3dzPjAm''@;'; put 'put ''JlplLnNoZWV0Um93czw9b2kuZS5yJiYoVG5bIiFmdWxscmVmIl09VG5bIiFyZWYiXSxvaS5lLnI9WmUuc2hlZXRSb3dzLTEsVG5bIiFyZWYiXT1mYShvaSkpLHYwLmxlbmd0aCYmKFRuWyIhbWVyZ2VzIl09djApLGJpLmxlbmd0aCYmKFRuWyIhcm93cyJdPWJpKSxDbi5uYW1lPUNuLlx1NTQw''@;'; put 'put ''ZFx1NzlmMHx8Q24ubmFtZSwidW5kZWZpbmVkIiE9dHlwZW9mIEpTT04mJkpTT04uc3RyaW5naWZ5KENuKSxQbi5wdXNoKENuLm5hbWUpLHp0W0NuLm5hbWVdPVRuLGFvPSExKToiLyIhPT1PblswXS5jaGFyQXQoT25bMF0ubGVuZ3RoLTIpJiYoQ249ZW4oT25bMF0sITEpLHpyPXFyPS0xLG9p''@;'; put 'put ''LnMucj1vaS5zLmM9MWU3LG9pLmUucj1vaS5lLmM9MCxUbj1aZS5kZW5zZT9bXTp7fSx2MD1bXSxiaT1bXSxhbz0hMCk7YnJlYWs7Y2FzZSJ0YWJsZS1yb3ctZ3JvdXAiOiIvIj09PU9uWzFdPy0tY3I6KytjcjticmVhaztjYXNlInRhYmxlLXJvdyI6Y2FzZSJcdTg4NGMiOmlmKCIvIj09PU9u''@;'; put 'put ''WzFdKXt6cis9WXIsWXI9MTticmVha31pZigoRHQ9ZW4oT25bMF0sITEpKS5cdTg4NGNcdTUzZjc/enI9RHQuXHU4ODRjXHU1M2Y3LTE6LTE9PXpyJiYoenI9MCksKFlyPStEdFsibnVtYmVyLXJvd3MtcmVwZWF0ZWQiXXx8MSk8MTApZm9yKHgwPTA7eDA8WXI7Kyt4MCljcj4wJiYoYmlbenIr''@;'; put 'put ''eDBdPXtsZXZlbDpjcn0pO3FyPS0xO2JyZWFrO2Nhc2UiY292ZXJlZC10YWJsZS1jZWxsIjoiLyIhPT1PblsxXSYmKytxcixaZS5zaGVldFN0dWJzJiYoWmUuZGVuc2U/KFRuW3pyXXx8KFRuW3pyXT1bXSksVG5benJdW3FyXT17dDoieiJ9KTpUbltZMCh7cjp6cixjOnFyfSldPXt0OiJ6In0p''@;'; put 'put ''LGFpPSIiLEdyPVtdO2JyZWFrO2Nhc2UidGFibGUtY2VsbCI6Y2FzZSJcdTY1NzBcdTYzNmUiOmlmKCIvIj09PU9uWzBdLmNoYXJBdChPblswXS5sZW5ndGgtMikpKytxcixNcj1lbihPblswXSwhMSksRWk9cGFyc2VJbnQoTXJbIm51bWJlci1jb2x1bW5zLXJlcGVhdGVkIl18fCIxIiwxMCks''@;'; put 'put ''WW49e3Q6InoiLHY6bnVsbH0sTXIuZm9ybXVsYSYmMCE9WmUuY2VsbEZvcm11bGEmJihZbi5mPUxoKGdyKE1yLmZvcm11bGEpKSksInN0cmluZyI9PShNci5cdTY1NzBcdTYzNmVcdTdjN2JcdTU3OGJ8fE1yWyJ2YWx1ZS10eXBlIl0pJiYoWW4udD0icyIsWW4udj1ncihNclsic3RyaW5nLXZh''@;'; put 'put ''bHVlIl18fCIiKSxaZS5kZW5zZT8oVG5benJdfHwoVG5benJdPVtdKSxUblt6cl1bcXJdPVluKTpUbltZMCh7cjp6cixjOnFyfSldPVluKSxxcis9RWktMTtlbHNlIGlmKCIvIiE9PU9uWzFdKXtFaT0xO3ZhciBoMD1Zcj96citZci0xOnpyO2lmKCsrcXI+b2kuZS5jJiYob2kuZS5jPXFyKSxx''@;'; put 'put ''cjxvaS5zLmMmJihvaS5zLmM9cXIpLHpyPG9pLnMuciYmKG9pLnMucj16ciksaDA+b2kuZS5yJiYob2kuZS5yPWgwKSx0MD1bXSxpbz17fSxZbj17dDooTXI9ZW4oT25bMF0sITEpKS5cdTY1NzBcdTYzNmVcdTdjN2JcdTU3OGJ8fE1yWyJ2YWx1ZS10eXBlIl0sdjpudWxsfSxaZS5jZWxsRm9y''@;'; put 'put ''bXVsYSlpZihNci5mb3JtdWxhJiYoTXIuZm9ybXVsYT1ncihNci5mb3JtdWxhKSksTXJbIm51bWJlci1tYXRyaXgtY29sdW1ucy1zcGFubmVkIl0mJk1yWyJudW1iZXItbWF0cml4LXJvd3Mtc3Bhbm5lZCJdJiYodG89cGFyc2VJbnQoTXJbIm51bWJlci1tYXRyaXgtcm93cy1zcGFubmVkIl0s''@;'; put 'put ''MTApfHwwLEEwPXBhcnNlSW50KE1yWyJudW1iZXItbWF0cml4LWNvbHVtbnMtc3Bhbm5lZCJdLDEwKXx8MCxZbi5GPWZhKFVpPXtzOntyOnpyLGM6cXJ9LGU6e3I6enIrdG8tMSxjOnFyK0EwLTF9fSksaGkucHVzaChbVWksWW4uRl0pKSxNci5mb3JtdWxhKVluLmY9TGgoTXIuZm9ybXVsYSk7''@;'; put 'put ''ZWxzZSBmb3IoeDA9MDt4MDxoaS5sZW5ndGg7Kyt4MCl6cj49aGlbeDBdWzBdLnMuciYmenI8PWhpW3gwXVswXS5lLnImJnFyPj1oaVt4MF1bMF0ucy5jJiZxcjw9aGlbeDBdWzBdLmUuYyYmKFluLkY9aGlbeDBdWzFdKTtzd2l0Y2goKE1yWyJudW1iZXItY29sdW1ucy1zcGFubmVkIl18fE1y''@;'; put 'put ''WyJudW1iZXItcm93cy1zcGFubmVkIl0pJiYodG89cGFyc2VJbnQoTXJbIm51bWJlci1yb3dzLXNwYW5uZWQiXSwxMCl8fDAsQTA9cGFyc2VJbnQoTXJbIm51bWJlci1jb2x1bW5zLXNwYW5uZWQiXSwxMCl8fDAsdjAucHVzaChVaT17czp7cjp6cixjOnFyfSxlOntyOnpyK3RvLTEsYzpxcitB''@;'; put 'put ''MC0xfX0pKSxNclsibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXSYmKEVpPXBhcnNlSW50KE1yWyJudW1iZXItY29sdW1ucy1yZXBlYXRlZCJdLDEwKSksWW4udCl7Y2FzZSJib29sZWFuIjpZbi50PSJiIixZbi52PURpKE1yWyJib29sZWFuLXZhbHVlIl0pO2JyZWFrO2Nhc2UiZmxvYXQiOmNh''@;'; put 'put ''c2UicGVyY2VudGFnZSI6Y2FzZSJjdXJyZW5jeSI6WW4udD0ibiIsWW4udj1wYXJzZUZsb2F0KE1yLnZhbHVlKTticmVhaztjYXNlImRhdGUiOlluLnQ9ImQiLFluLnY9ZG4oTXJbImRhdGUtdmFsdWUiXSksWmUuY2VsbERhdGVzfHwoWW4udD0ibiIsWW4udj1mdChZbi52KSksWW4uej0ibS9k''@;'; put 'put ''L3l5IjticmVhaztjYXNlInRpbWUiOlluLnQ9Im4iLFluLnY9anQoTXJbInRpbWUtdmFsdWUiXSkvODY0MDAsWmUuY2VsbERhdGVzJiYoWW4udD0iZCIsWW4udj1IdChZbi52KSksWW4uej0iSEg6TU06U1MiO2JyZWFrO2Nhc2UibnVtYmVyIjpZbi50PSJuIixZbi52PXBhcnNlRmxvYXQoTXIu''@;'; put 'put ''XHU2NTcwXHU2MzZlXHU2NTcwXHU1MDNjKTticmVhaztkZWZhdWx0OmlmKCJzdHJpbmciIT09WW4udCYmInRleHQiIT09WW4udCYmWW4udCl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHZhbHVlIHR5cGUgIitZbi50KTtZbi50PSJzIixudWxsIT1Nclsic3RyaW5nLXZhbHVlIl0mJihh''@;'; put 'put ''aT1ncihNclsic3RyaW5nLXZhbHVlIl0pLEdyPVtdKX19ZWxzZXtpZih3YT0hMSwicyI9PT1Zbi50JiYoWW4udj1haXx8IiIsR3IubGVuZ3RoJiYoWW4uUj1Hciksd2E9MD09eXIpLGtpLlRhcmdldCYmKFluLmw9a2kpLHQwLmxlbmd0aD4wJiYoWW4uYz10MCx0MD1bXSksYWkmJiExIT09WmUu''@;'; put 'put ''Y2VsbFRleHQmJihZbi53PWFpKSx3YSYmKFluLnQ9InoiLGRlbGV0ZSBZbi52KSxaZS5jZWxsSFRNTCYmKFluLmg9WW4uUj9obShZbi5SKTpuMCgiIitZbi52KSksKCF3YXx8WmUuc2hlZXRTdHVicykmJiEoWmUuc2hlZXRSb3dzJiZaZS5zaGVldFJvd3M8PXpyKSlmb3IodmFyIGpyPTA7anI8''@;'; put 'put ''WXI7Kytqcil7aWYoRWk9cGFyc2VJbnQoTXJbIm51bWJlci1jb2x1bW5zLXJlcGVhdGVkIl18fCIxIiwxMCksWmUuZGVuc2UpZm9yKFRuW3pyK2pyXXx8KFRuW3pyK2pyXT1bXSksVG5benIranJdW3FyXT0wPT1qcj9ZbjpsbihZbik7LS1FaT4wOylUblt6citqcl1bcXIrRWldPWxuKFluKTtl''@;'; put 'put ''bHNlIGZvcihUbltZMCh7cjp6citqcixjOnFyfSldPVluOy0tRWk+MDspVG5bWTAoe3I6enIranIsYzpxcitFaX0pXT1sbihZbik7b2kuZS5jPD1xciYmKG9pLmUuYz1xcil9cXIrPShFaT1wYXJzZUludChNclsibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXXx8IjEiLDEwKSktMSxFaT0wLFlu''@;'; put 'put ''PXt9LGFpPSIiLEdyPVtdfWtpPXt9O2JyZWFrO2Nhc2UiZG9jdW1lbnQiOmNhc2UiZG9jdW1lbnQtY29udGVudCI6Y2FzZSJcdTc1MzVcdTViNTBcdTg4NjhcdTY4M2NcdTY1ODdcdTY4NjMiOmNhc2Uic3ByZWFkc2hlZXQiOmNhc2UiXHU0ZTNiXHU0ZjUzIjpjYXNlInNjcmlwdHMiOmNhc2Ui''@;'; put 'put ''c3R5bGVzIjpjYXNlImZvbnQtZmFjZS1kZWNscyI6Y2FzZSJtYXN0ZXItc3R5bGVzIjppZigiLyI9PT1PblsxXSl7aWYoKE10PVllLnBvcCgpKVswXSE9PU9uWzNdKXRocm93IkJhZCBzdGF0ZTogIitNdH1lbHNlIi8iIT09T25bMF0uY2hhckF0KE9uWzBdLmxlbmd0aC0yKSYmWWUucHVzaChb''@;'; put 'put ''T25bM10sITBdKTticmVhaztjYXNlImFubm90YXRpb24iOmlmKCIvIj09PU9uWzFdKXtpZigoTXQ9WWUucG9wKCkpWzBdIT09T25bM10pdGhyb3ciQmFkIHN0YXRlOiAiK010O2lvLnQ9YWksR3IubGVuZ3RoJiYoaW8uUj1HciksaW8uYT1WYSx0MC5wdXNoKGlvKX1lbHNlIi8iIT09T25bMF0u''@;'; put 'put ''Y2hhckF0KE9uWzBdLmxlbmd0aC0yKSYmWWUucHVzaChbT25bM10sITFdKTtWYT0iIixqbz0wLGFpPSIiLHlyPTAsR3I9W107YnJlYWs7Y2FzZSJjcmVhdG9yIjoiLyI9PT1PblsxXT9WYT1qZS5zbGljZShqbyxPbi5pbmRleCk6am89T24uaW5kZXgrT25bMF0ubGVuZ3RoO2JyZWFrO2Nhc2Ui''@;'; put 'put ''bWV0YSI6Y2FzZSJcdTUxNDNcdTY1NzBcdTYzNmUiOmNhc2Uic2V0dGluZ3MiOmNhc2UiY29uZmlnLWl0ZW0tc2V0IjpjYXNlImNvbmZpZy1pdGVtLW1hcC1pbmRleGVkIjpjYXNlImNvbmZpZy1pdGVtLW1hcC1lbnRyeSI6Y2FzZSJjb25maWctaXRlbS1tYXAtbmFtZWQiOmNhc2Uic2hhcGVz''@;'; put 'put ''IjpjYXNlImZyYW1lIjpjYXNlInRleHQtYm94IjpjYXNlImltYWdlIjpjYXNlImRhdGEtcGlsb3QtdGFibGVzIjpjYXNlImxpc3Qtc3R5bGUiOmNhc2UiZm9ybSI6Y2FzZSJkZGUtbGlua3MiOmNhc2UiZXZlbnQtbGlzdGVuZXJzIjpjYXNlImNoYXJ0IjppZigiLyI9PT1PblsxXSl7aWYoKE10''@;'; put 'put ''PVllLnBvcCgpKVswXSE9PU9uWzNdKXRocm93IkJhZCBzdGF0ZTogIitNdH1lbHNlIi8iIT09T25bMF0uY2hhckF0KE9uWzBdLmxlbmd0aC0yKSYmWWUucHVzaChbT25bM10sITFdKTthaT0iIix5cj0wLEdyPVtdO2JyZWFrO2Nhc2Uic2NpZW50aWZpYy1udW1iZXIiOmNhc2UiY3VycmVuY3kt''@;'; put 'put ''c3ltYm9sIjpjYXNlImN1cnJlbmN5LXN0eWxlIjpjYXNlInNjcmlwdCI6Y2FzZSJsaWJyYXJpZXMiOmNhc2UiYXV0b21hdGljLXN0eWxlcyI6Y2FzZSJkZWZhdWx0LXN0eWxlIjpjYXNlInBhZ2UtbGF5b3V0IjpjYXNlIm1hcCI6Y2FzZSJmb250LWZhY2UiOmNhc2UicGFyYWdyYXBoLXByb3Bl''@;'; put 'put ''cnRpZXMiOmNhc2UidGFibGUtcHJvcGVydGllcyI6Y2FzZSJ0YWJsZS1jb2x1bW4tcHJvcGVydGllcyI6Y2FzZSJ0YWJsZS1yb3ctcHJvcGVydGllcyI6Y2FzZSJ0YWJsZS1jZWxsLXByb3BlcnRpZXMiOmNhc2UiZnJhY3Rpb24iOmNhc2UiYm9vbGVhbi1zdHlsZSI6Y2FzZSJib29sZWFuIjpj''@;'; put 'put ''YXNlInRleHQtc3R5bGUiOmNhc2UidGV4dC1jb250ZW50IjpjYXNlInRleHQtcHJvcGVydGllcyI6Y2FzZSJlbWJlZGRlZC10ZXh0IjpjYXNlImJvZHkiOmNhc2UiXHU3NTM1XHU1YjUwXHU4ODY4XHU2ODNjIjpjYXNlImZvcm1zIjpjYXNlInRhYmxlLWNvbHVtbiI6Y2FzZSJ0YWJsZS1oZWFk''@;'; put 'put ''ZXItcm93cyI6Y2FzZSJ0YWJsZS1yb3dzIjpjYXNlInRhYmxlLWNvbHVtbi1ncm91cCI6Y2FzZSJ0YWJsZS1oZWFkZXItY29sdW1ucyI6Y2FzZSJ0YWJsZS1jb2x1bW5zIjpjYXNlIm51bGwtZGF0ZSI6Y2FzZSJncmFwaGljLXByb3BlcnRpZXMiOmNhc2UiY2FsY3VsYXRpb24tc2V0dGluZ3Mi''@;'; put 'put ''OmNhc2UibmFtZWQtZXhwcmVzc2lvbnMiOmNhc2UibGFiZWwtcmFuZ2UiOmNhc2UibGFiZWwtcmFuZ2VzIjpjYXNlIm5hbWVkLWV4cHJlc3Npb24iOmNhc2Uic29ydCI6Y2FzZSJzb3J0LWJ5IjpjYXNlInNvcnQtZ3JvdXBzIjpjYXNlInRhYiI6Y2FzZSJsaW5lLWJyZWFrIjpjYXNlInNwYW4i''@;'; put 'put ''OmNhc2UicyI6Y2FzZSJkYXRlIjpjYXNlIm9iamVjdCI6Y2FzZSJ0aXRsZSI6Y2FzZSJcdTY4MDdcdTk4OTgiOmNhc2UiZGVzYyI6Y2FzZSJiaW5hcnktZGF0YSI6Y2FzZSJ0YWJsZS1zb3VyY2UiOmNhc2Uic2NlbmFyaW8iOmNhc2UiaXRlcmF0aW9uIjpjYXNlImNvbnRlbnQtdmFsaWRhdGlv''@;'; put 'put ''bnMiOmNhc2UiY29udGVudC12YWxpZGF0aW9uIjpjYXNlImhlbHAtbWVzc2FnZSI6Y2FzZSJlcnJvci1tZXNzYWdlIjpjYXNlImRhdGFiYXNlLXJhbmdlcyI6Y2FzZSJmaWx0ZXIiOmNhc2UiZmlsdGVyLWFuZCI6Y2FzZSJmaWx0ZXItb3IiOmNhc2UiZmlsdGVyLWNvbmRpdGlvbiI6Y2FzZSJs''@;'; put 'put ''aXN0LWxldmVsLXN0eWxlLWJ1bGxldCI6Y2FzZSJsaXN0LWxldmVsLXN0eWxlLW51bWJlciI6Y2FzZSJsaXN0LWxldmVsLXByb3BlcnRpZXMiOmNhc2Uic2VuZGVyLWZpcnN0bmFtZSI6Y2FzZSJzZW5kZXItbGFzdG5hbWUiOmNhc2Uic2VuZGVyLWluaXRpYWxzIjpjYXNlInNlbmRlci10aXRs''@;'; put 'put ''ZSI6Y2FzZSJzZW5kZXItcG9zaXRpb24iOmNhc2Uic2VuZGVyLWVtYWlsIjpjYXNlInNlbmRlci1waG9uZS1wcml2YXRlIjpjYXNlInNlbmRlci1mYXgiOmNhc2Uic2VuZGVyLWNvbXBhbnkiOmNhc2Uic2VuZGVyLXBob25lLXdvcmsiOmNhc2Uic2VuZGVyLXN0cmVldCI6Y2FzZSJzZW5kZXIt''@;'; put 'put ''Y2l0eSI6Y2FzZSJzZW5kZXItcG9zdGFsLWNvZGUiOmNhc2Uic2VuZGVyLWNvdW50cnkiOmNhc2Uic2VuZGVyLXN0YXRlLW9yLXByb3ZpbmNlIjpjYXNlImF1dGhvci1uYW1lIjpjYXNlImF1dGhvci1pbml0aWFscyI6Y2FzZSJjaGFwdGVyIjpjYXNlImZpbGUtbmFtZSI6Y2FzZSJ0ZW1wbGF0''@;'; put 'put ''ZS1uYW1lIjpjYXNlInNoZWV0LW5hbWUiOmNhc2UiZXZlbnQtbGlzdGVuZXIiOmNhc2UiaW5pdGlhbC1jcmVhdG9yIjpjYXNlImNyZWF0aW9uLWRhdGUiOmNhc2UicHJpbnQtZGF0ZSI6Y2FzZSJnZW5lcmF0b3IiOmNhc2UiZG9jdW1lbnQtc3RhdGlzdGljIjpjYXNlInVzZXItZGVmaW5lZCI6''@;'; put 'put ''Y2FzZSJlZGl0aW5nLWR1cmF0aW9uIjpjYXNlImVkaXRpbmctY3ljbGVzIjpjYXNlImNvbmZpZy1pdGVtIjpjYXNlInBhZ2UtbnVtYmVyIjpjYXNlInBhZ2UtY291bnQiOmNhc2UidGltZSI6Y2FzZSJjZWxsLXJhbmdlLXNvdXJjZSI6Y2FzZSJkZXRlY3RpdmUiOmNhc2Uib3BlcmF0aW9uIjpj''@;'; put 'put ''YXNlImhpZ2hsaWdodGVkLXJhbmdlIjpjYXNlImRhdGEtcGlsb3QtdGFibGUiOmNhc2Uic291cmNlLWNlbGwtcmFuZ2UiOmNhc2Uic291cmNlLXNlcnZpY2UiOmNhc2UiZGF0YS1waWxvdC1maWVsZCI6Y2FzZSJkYXRhLXBpbG90LWxldmVsIjpjYXNlImRhdGEtcGlsb3Qtc3VidG90YWxzIjpj''@;'; put 'put ''YXNlImRhdGEtcGlsb3Qtc3VidG90YWwiOmNhc2UiZGF0YS1waWxvdC1tZW1iZXJzIjpjYXNlImRhdGEtcGlsb3QtbWVtYmVyIjpjYXNlImRhdGEtcGlsb3QtZGlzcGxheS1pbmZvIjpjYXNlImRhdGEtcGlsb3Qtc29ydC1pbmZvIjpjYXNlImRhdGEtcGlsb3QtbGF5b3V0LWluZm8iOmNhc2Ui''@;'; put 'put ''ZGF0YS1waWxvdC1maWVsZC1yZWZlcmVuY2UiOmNhc2UiZGF0YS1waWxvdC1ncm91cHMiOmNhc2UiZGF0YS1waWxvdC1ncm91cCI6Y2FzZSJkYXRhLXBpbG90LWdyb3VwLW1lbWJlciI6Y2FzZSJyZWN0IjpjYXNlImRkZS1jb25uZWN0aW9uLWRlY2xzIjpjYXNlImRkZS1jb25uZWN0aW9uLWRl''@;'; put 'put ''Y2wiOmNhc2UiZGRlLWxpbmsiOmNhc2UiZGRlLXNvdXJjZSI6Y2FzZSJwcm9wZXJ0aWVzIjpjYXNlInByb3BlcnR5IjpjYXNlInRhYmxlLXByb3RlY3Rpb24iOmNhc2UiZGF0YS1waWxvdC1ncmFuZC10b3RhbCI6Y2FzZSJvZmZpY2UtZG9jdW1lbnQtY29tbW9uLWF0dHJzIjpicmVhaztjYXNl''@;'; put 'put ''Im51bWJlci1zdHlsZSI6Y2FzZSJwZXJjZW50YWdlLXN0eWxlIjpjYXNlImRhdGUtc3R5bGUiOmNhc2UidGltZS1zdHlsZSI6aWYoIi8iPT09T25bMV0pe2lmKGRpW1J0Lm5hbWVdPVV0LChNdD1ZZS5wb3AoKSlbMF0hPT1PblszXSl0aHJvdyJCYWQgc3RhdGU6ICIrTXR9ZWxzZSIvIiE9PU9u''@;'; put 'put ''WzBdLmNoYXJBdChPblswXS5sZW5ndGgtMikmJihVdD0iIixSdD1lbihPblswXSwhMSksWWUucHVzaChbT25bM10sITBdKSk7YnJlYWs7Y2FzZSJzdHlsZSI6Ii8+Ij09PU9uWzBdLnNsaWNlKC0yKT9YKE9uWzBdLG9hKToiLyI9PU9uWzFdP1goamUuc2xpY2UoJDAsT24uaW5kZXgrT25bMF0u''@;'; put 'put ''bGVuZ3RoKSxvYSk6JDA9T24uaW5kZXg7YnJlYWs7Y2FzZSJudW1iZXIiOmNhc2UiZGF5IjpjYXNlIm1vbnRoIjpjYXNlInllYXIiOmNhc2UiZXJhIjpjYXNlImRheS1vZi13ZWVrIjpjYXNlIndlZWstb2YteWVhciI6Y2FzZSJxdWFydGVyIjpjYXNlImhvdXJzIjpjYXNlIm1pbnV0ZXMiOmNh''@;'; put 'put ''c2Uic2Vjb25kcyI6Y2FzZSJhbS1wbSI6c3dpdGNoKFllW1llLmxlbmd0aC0xXVswXSl7Y2FzZSJ0aW1lLXN0eWxlIjpjYXNlImRhdGUtc3R5bGUiOnh0PWVuKE9uWzBdLCExKSxVdCs9aWVbT25bM11dWyJsb25nIj09PXh0LnN0eWxlPzE6MF19YnJlYWs7Y2FzZSJ0ZXh0IjppZigiLz4iPT09''@;'; put 'put ''T25bMF0uc2xpY2UoLTIpKWJyZWFrO2lmKCIvIj09PU9uWzFdKXN3aXRjaChZZVtZZS5sZW5ndGgtMV1bMF0pe2Nhc2UibnVtYmVyLXN0eWxlIjpjYXNlImRhdGUtc3R5bGUiOmNhc2UidGltZS1zdHlsZSI6VXQrPWplLnNsaWNlKG5uLE9uLmluZGV4KX1lbHNlIG5uPU9uLmluZGV4K09uWzBd''@;'; put 'put ''Lmxlbmd0aDticmVhaztjYXNlIm5hbWVkLXJhbmdlIjpOMD1mXygoeHQ9ZW4oT25bMF0sITEpKVsiY2VsbC1yYW5nZS1hZGRyZXNzIl0pO3ZhciBIaT17TmFtZTp4dC5uYW1lLFJlZjpOMFswXSsiISIrTjBbMV19O2FvJiYoSGkuU2hlZXQ9UG4ubGVuZ3RoKSxOci5OYW1lcy5wdXNoKEhpKTti''@;'; put 'put ''cmVhaztjYXNlInAiOmNhc2UiXHU2NTg3XHU2NzJjXHU0ZTMyIjppZihbIm1hc3Rlci1zdHlsZXMiXS5pbmRleE9mKFllW1llLmxlbmd0aC0xXVswXSk+LTEpYnJlYWs7aWYoIi8iIT09T25bMV18fE1yJiZNclsic3RyaW5nLXZhbHVlIl0pZW4oT25bMF0sITEpLHlyPU9uLmluZGV4K09uWzBd''@;'; put 'put ''Lmxlbmd0aDtlbHNle3ZhciB2bz1IKGplLnNsaWNlKHlyLE9uLmluZGV4KSwwLG9hKTthaT0oYWkubGVuZ3RoPjA/YWkrIlxuIjoiIikrdm9bMF0sR3I9dm9bMV19YnJlYWs7Y2FzZSJkYXRhYmFzZS1yYW5nZSI6aWYoIi8iPT09T25bMV0pYnJlYWs7dHJ5e3p0WyhOMD1mXyhlbihPblswXSlb''@;'; put 'put ''InRhcmdldC1yYW5nZS1hZGRyZXNzIl0pKVswXV1bIiFhdXRvZmlsdGVyIl09e3JlZjpOMFsxXX19Y2F0Y2goJGkpe31icmVhaztjYXNlImEiOmlmKCIvIiE9PU9uWzFdKXtpZighKGtpPWVuKE9uWzBdLCExKSkuaHJlZilicmVhaztraS5UYXJnZXQ9Z3Ioa2kuaHJlZiksZGVsZXRlIGtpLmhy''@;'; put 'put ''ZWYsIiMiPT1raS5UYXJnZXQuY2hhckF0KDApJiZraS5UYXJnZXQuaW5kZXhPZigiLiIpPi0xPyhOMD1mXyhraS5UYXJnZXQuc2xpY2UoMSkpLGtpLlRhcmdldD0iIyIrTjBbMF0rIiEiK04wWzFdKTpraS5UYXJnZXQubWF0Y2goL15cLlwuW1xcXC9dLykmJihraS5UYXJnZXQ9a2kuVGFyZ2V0''@;'; put 'put ''LnNsaWNlKDMpKX1icmVhaztkZWZhdWx0OnN3aXRjaChPblsyXSl7Y2FzZSJkYzoiOmNhc2UiY2FsY2V4dDoiOmNhc2UibG9leHQ6IjpjYXNlIm9vbzoiOmNhc2UiY2hhcnRvb286IjpjYXNlImRyYXc6IjpjYXNlInN0eWxlOiI6Y2FzZSJjaGFydDoiOmNhc2UiZm9ybToiOmNhc2UidW9mOiI6''@;'; put 'put ''Y2FzZSJcdTg4Njg6IjpjYXNlIlx1NWI1NzoiOmJyZWFrO2RlZmF1bHQ6aWYoWmUuV1RGKXRocm93IG5ldyBFcnJvcihPbil9fXZhciB4bz17U2hlZXRzOnp0LFNoZWV0TmFtZXM6UG4sV29ya2Jvb2s6TnJ9O3JldHVybiBaZS5ib29rU2hlZXRzJiZkZWxldGUgeG8uU2hlZXRzLHhvfX0oKTtm''@;'; put 'put ''dW5jdGlvbiBpYyhILGllKXtyZXR1cm4gaUMoSCxpZSl9dmFyIGFDPWZ1bmN0aW9uKCl7dmFyIEg9WyIgIDxvZmZpY2U6bWFzdGVyLXN0eWxlcz4iLCcgICAgPHN0eWxlOm1hc3Rlci1wYWdlIHN0eWxlOm5hbWU9Im1wMSIgc3R5bGU6cGFnZS1sYXlvdXQtbmFtZT0ibXAxIj4nLCIgICAgICA8''@;'; put 'put ''c3R5bGU6aGVhZGVyLz4iLCcgICAgICA8c3R5bGU6aGVhZGVyLWxlZnQgc3R5bGU6ZGlzcGxheT0iZmFsc2UiLz4nLCIgICAgICA8c3R5bGU6Zm9vdGVyLz4iLCcgICAgICA8c3R5bGU6Zm9vdGVyLWxlZnQgc3R5bGU6ZGlzcGxheT0iZmFsc2UiLz4nLCIgICAgPC9zdHlsZTptYXN0ZXItcGFn''@;'; put 'put ''ZT4iLCIgIDwvb2ZmaWNlOm1hc3Rlci1zdHlsZXM+Il0uam9pbigiXG4iKSxpZT0iPG9mZmljZTpkb2N1bWVudC1zdHlsZXMgIitybCh7InhtbG5zOm9mZmljZSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIsInhtbG5zOnRhYmxlIjoidXJuOm9h''@;'; put 'put ''c2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0YWJsZToxLjAiLCJ4bWxuczpzdHlsZSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c3R5bGU6MS4wIiwieG1sbnM6dGV4dCI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGV4dDox''@;'; put 'put ''LjAiLCJ4bWxuczpkcmF3IjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkcmF3aW5nOjEuMCIsInhtbG5zOmZvIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp4c2wtZm8tY29tcGF0aWJsZToxLjAiLCJ4bWxuczp4bGluayI6Imh0dHA6Ly93''@;'; put 'put ''d3cudzMub3JnLzE5OTkveGxpbmsiLCJ4bWxuczpkYyI6Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiwieG1sbnM6bnVtYmVyIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkYXRhc3R5bGU6MS4wIiwieG1sbnM6c3ZnIjoidXJuOm9hc2lzOm5hbWVz''@;'; put 'put ''OnRjOm9wZW5kb2N1bWVudDp4bWxuczpzdmctY29tcGF0aWJsZToxLjAiLCJ4bWxuczpvZiI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2Y6MS4yIiwib2ZmaWNlOnZlcnNpb24iOiIxLjIifSkrIj5cbiIrSCsiXG48L29mZmljZTpkb2N1bWVudC1zdHlsZXM+Ijty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gY24raWV9fSgpLEo0PWZ1bmN0aW9uKCl7dmFyIEg9ZnVuY3Rpb24oamUsWWUpe3JldHVybiBScihqZSkucmVwbGFjZSgvICArL2csZnVuY3Rpb24oTXQpe3JldHVybic8dGV4dDpzIHRleHQ6Yz0iJytNdC5sZW5ndGgrJyIvPid9KS5yZXBsYWNlKC9c''@;'; put 'put ''dC9nLCI8dGV4dDp0YWIvPiIpLnJlcGxhY2UoL1xuL2csWWU/Ijx0ZXh0OmxpbmUtYnJlYWsvPiI6IjwvdGV4dDpwPjx0ZXh0OnA+IikucmVwbGFjZSgvXiAvLCI8dGV4dDpzLz4iKS5yZXBsYWNlKC8gJC8sIjx0ZXh0OnMvPiIpfSxpZT1mdW5jdGlvbihqZSl7cmV0dXJuIGplLm1hcChmdW5j''@;'; put 'put ''dGlvbihZZSl7dmFyIE10PSIiO3JldHVybiBudWxsIT1ZZS5vZHMmJihNdCs9JyB0ZXh0OnN0eWxlLW5hbWU9IlQnK1llLm9kcysnIicpLFllLnY/Ijx0ZXh0OnNwYW4iK010KyI+IitIKFllLnYsITApKyI8L3RleHQ6c3Bhbj4iOiIifSkuam9pbigiIil9LFg9IiAgICAgICAgICA8dGFibGU6''@;'; put 'put ''dGFibGUtY2VsbCAvPlxuIix4ZT1mdW5jdGlvbihqZSxZZSxNdCl7dmFyIHh0PVtdO3h0LnB1c2goJyAgICAgIDx0YWJsZTp0YWJsZSB0YWJsZTpuYW1lPSInK1JyKFllLlNoZWV0TmFtZXNbTXRdKSsnIiB0YWJsZTpzdHlsZS1uYW1lPSJ0YTEiPlxuJyk7dmFyIFJ0PTAsVXQ9MCxubj1Bcyhq''@;'; put 'put ''ZVsiIXJlZiJdfHwiQTEiKSxDbj1qZVsiIW1lcmdlcyJdfHxbXSxEdD0wLHp0PUFycmF5LmlzQXJyYXkoamUpO2lmKGplWyIhY29scyJdKWZvcihVdD0wO1V0PD1ubi5lLmM7KytVdCl4dC5wdXNoKCIgICAgICAgIDx0YWJsZTp0YWJsZS1jb2x1bW4iKyhqZVsiIWNvbHMiXVtVdF0/JyB0YWJs''@;'; put 'put ''ZTpzdHlsZS1uYW1lPSJjbycramVbIiFjb2xzIl1bVXRdLm9kcysnIic6IiIpKyI+PC90YWJsZTp0YWJsZS1jb2x1bW4+XG4iKTt2YXIgVG49amVbIiFyb3dzIl18fFtdO2ZvcihSdD0wO1J0PG5uLnMucjsrK1J0KXh0LnB1c2goIiAgICAgICAgPHRhYmxlOnRhYmxlLXJvdyIrKFRuW1J0XT8n''@;'; put 'put ''IHRhYmxlOnN0eWxlLW5hbWU9InJvJytUbltSdF0ub2RzKyciJzoiIikrIj48L3RhYmxlOnRhYmxlLXJvdz5cbiIpO2Zvcig7UnQ8PW5uLmUucjsrK1J0KXtmb3IoeHQucHVzaCgiICAgICAgICA8dGFibGU6dGFibGUtcm93IisoVG5bUnRdPycgdGFibGU6c3R5bGUtbmFtZT0icm8nK1RuW1J0''@;'; put 'put ''XS5vZHMrJyInOiIiKSsiPlxuIiksVXQ9MDtVdDxubi5zLmM7KytVdCl4dC5wdXNoKFgpO2Zvcig7VXQ8PW5uLmUuYzsrK1V0KXt2YXIgT249ITEsWW49e30sTXI9IiI7Zm9yKER0PTA7RHQhPUNuLmxlbmd0aDsrK0R0KWlmKCEoQ25bRHRdLnMuYz5VdHx8Q25bRHRdLnMucj5SdHx8Q25bRHRd''@;'; put 'put ''LmUuYzxVdHx8Q25bRHRdLmUucjxSdCkpeyhDbltEdF0ucy5jIT1VdHx8Q25bRHRdLnMuciE9UnQpJiYoT249ITApLFluWyJ0YWJsZTpudW1iZXItY29sdW1ucy1zcGFubmVkIl09Q25bRHRdLmUuYy1DbltEdF0ucy5jKzEsWW5bInRhYmxlOm51bWJlci1yb3dzLXNwYW5uZWQiXT1DbltEdF0u''@;'; put 'put ''ZS5yLUNuW0R0XS5zLnIrMTticmVha31pZihPbil4dC5wdXNoKCIgICAgICAgICAgPHRhYmxlOmNvdmVyZWQtdGFibGUtY2VsbC8+XG4iKTtlbHNle3ZhciBhaT1ZMCh7cjpSdCxjOlV0fSkseXI9enQ/KGplW1J0XXx8W10pW1V0XTpqZVthaV07aWYoeXImJnlyLmYmJihZblsidGFibGU6Zm9y''@;'; put 'put ''bXVsYSJdPVJyKGx4KHlyLmYpKSx5ci5GJiZ5ci5GLnNsaWNlKDAsYWkubGVuZ3RoKT09YWkpKXt2YXIgYXI9QXMoeXIuRik7WW5bInRhYmxlOm51bWJlci1tYXRyaXgtY29sdW1ucy1zcGFubmVkIl09YXIuZS5jLWFyLnMuYysxLFluWyJ0YWJsZTpudW1iZXItbWF0cml4LXJvd3Mtc3Bhbm5l''@;'; put 'put ''ZCJdPWFyLmUuci1hci5zLnIrMX1pZih5cil7c3dpdGNoKHlyLnQpe2Nhc2UiYiI6TXI9eXIudj8iVFJVRSI6IkZBTFNFIixZblsib2ZmaWNlOnZhbHVlLXR5cGUiXT0iYm9vbGVhbiIsWW5bIm9mZmljZTpib29sZWFuLXZhbHVlIl09eXIudj8idHJ1ZSI6ImZhbHNlIjticmVhaztjYXNlIm4i''@;'; put 'put ''Ok1yPXlyLnd8fFN0cmluZyh5ci52fHwwKSxZblsib2ZmaWNlOnZhbHVlLXR5cGUiXT0iZmxvYXQiLFluWyJvZmZpY2U6dmFsdWUiXT15ci52fHwwO2JyZWFrO2Nhc2UicyI6Y2FzZSJzdHIiOk1yPXlyLnYsWW5bIm9mZmljZTp2YWx1ZS10eXBlIl09InN0cmluZyI7YnJlYWs7Y2FzZSJkIjpN''@;'; put 'put ''cj15ci53fHxkbih5ci52KS50b0lTT1N0cmluZygpLFluWyJvZmZpY2U6dmFsdWUtdHlwZSJdPSJkYXRlIixZblsib2ZmaWNlOmRhdGUtdmFsdWUiXT1kbih5ci52KS50b0lTT1N0cmluZygpLFluWyJ0YWJsZTpzdHlsZS1uYW1lIl09ImNlMSI7YnJlYWs7ZGVmYXVsdDp4dC5wdXNoKFgpO2Nv''@;'; put 'put ''bnRpbnVlfW51bGwhPXlyLm9kcyYmIVluWyJ0YWJsZTpzdHlsZS1uYW1lIl0mJihZblsidGFibGU6c3R5bGUtbmFtZSJdPSJjZSIreXIub2RzKTt2YXIgR3I9IXlyLlJ8fHlyLmwmJnlyLmwuVGFyZ2V0P0goTXIpOmllKHlyLlIpO2lmKHlyLmwmJnlyLmwuVGFyZ2V0KXt2YXIgenI9eXIubC5U''@;'; put 'put ''YXJnZXQ7IiMiIT0oenI9IiMiPT16ci5jaGFyQXQoMCk/IiMiK2hfKHpyLnNsaWNlKDEpKTp6cikuY2hhckF0KDApJiYhenIubWF0Y2goL15cdys6LykmJih6cj0iLi4vIit6ciksR3I9X2koInRleHQ6YSIsR3IseyJ4bGluazpocmVmIjp6ci5yZXBsYWNlKC8mL2csIiZhbXA7Iil9KX14dC5w''@;'; put 'put ''dXNoKCIgICAgICAgICAgIitfaSgidGFibGU6dGFibGUtY2VsbCIsX2koInRleHQ6cCIsR3Ise30pLFluKSsiXG4iKX1lbHNlIHh0LnB1c2goWCl9fXh0LnB1c2goIiAgICAgICAgPC90YWJsZTp0YWJsZS1yb3c+XG4iKX1yZXR1cm4geHQucHVzaCgiICAgICAgPC90YWJsZTp0YWJsZT5cbiIp''@;'; put 'put ''LHh0LmpvaW4oIiIpfSxGZT17Y2VudGVyOiJjZW50ZXIiLGxlZnQ6InN0YXJ0IixyaWdodDoiZW5kIn07cmV0dXJuIGZ1bmN0aW9uKFllLE10KXt2YXIgeHQ9W2NuXSxSdD1ybCh7InhtbG5zOm9mZmljZSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEu''@;'; put 'put ''MCIsInhtbG5zOnRhYmxlIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0YWJsZToxLjAiLCJ4bWxuczpzdHlsZSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c3R5bGU6MS4wIiwieG1sbnM6dGV4dCI6InVybjpvYXNpczpuYW1lczp0Yzpv''@;'; put 'put ''cGVuZG9jdW1lbnQ6eG1sbnM6dGV4dDoxLjAiLCJ4bWxuczpkcmF3IjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkcmF3aW5nOjEuMCIsInhtbG5zOmZvIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp4c2wtZm8tY29tcGF0aWJsZToxLjAi''@;'; put 'put ''LCJ4bWxuczp4bGluayI6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJ4bWxuczpkYyI6Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiwieG1sbnM6bWV0YSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0YToxLjAiLCJ4bWxuczpudW1i''@;'; put 'put ''ZXIiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRhdGFzdHlsZToxLjAiLCJ4bWxuczpwcmVzZW50YXRpb24iOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnByZXNlbnRhdGlvbjoxLjAiLCJ4bWxuczpzdmciOiJ1cm46b2FzaXM6bmFtZXM6''@;'; put 'put ''dGM6b3BlbmRvY3VtZW50OnhtbG5zOnN2Zy1jb21wYXRpYmxlOjEuMCIsInhtbG5zOmNoYXJ0IjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpjaGFydDoxLjAiLCJ4bWxuczpkcjNkIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkcjNkOjEu''@;'; put 'put ''MCIsInhtbG5zOm1hdGgiOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIiwieG1sbnM6Zm9ybSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6Zm9ybToxLjAiLCJ4bWxuczpzY3JpcHQiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50Onht''@;'; put 'put ''bG5zOnNjcmlwdDoxLjAiLCJ4bWxuczpvb28iOiJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNC9vZmZpY2UiLCJ4bWxuczpvb293IjoiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDQvd3JpdGVyIiwieG1sbnM6b29vYyI6Imh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA0L2NhbGMiLCJ4bWxu''@;'; put 'put ''czpkb20iOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC1ldmVudHMiLCJ4bWxuczp4Zm9ybXMiOiJodHRwOi8vd3d3LnczLm9yZy8yMDAyL3hmb3JtcyIsInhtbG5zOnhzZCI6Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiwieG1sbnM6eHNpIjoiaHR0cDovL3d3dy53My5v''@;'; put 'put ''cmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLCJ4bWxuczpzaGVldCI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6c2gzM3RqczoxLjAiLCJ4bWxuczpycHQiOiJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNS9yZXBvcnQiLCJ4bWxuczpvZiI6InVybjpvYXNpczpuYW1lczp0''@;'; put 'put ''YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2Y6MS4yIiwieG1sbnM6eGh0bWwiOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwieG1sbnM6Z3JkZGwiOiJodHRwOi8vd3d3LnczLm9yZy8yMDAzL2cvZGF0YS12aWV3IyIsInhtbG5zOnRhYmxlb29vIjoiaHR0cDovL29wZW5vZmZpY2Uub3Jn''@;'; put 'put ''LzIwMDkvdGFibGUiLCJ4bWxuczpkcmF3b29vIjoiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMTAvZHJhdyIsInhtbG5zOmNhbGNleHQiOiJ1cm46b3JnOmRvY3VtZW50Zm91bmRhdGlvbjpuYW1lczpleHBlcmltZW50YWw6Y2FsYzp4bWxuczpjYWxjZXh0OjEuMCIsInhtbG5zOmxvZXh0Ijoi''@;'; put 'put ''dXJuOm9yZzpkb2N1bWVudGZvdW5kYXRpb246bmFtZXM6ZXhwZXJpbWVudGFsOm9mZmljZTp4bWxuczpsb2V4dDoxLjAiLCJ4bWxuczpmaWVsZCI6InVybjpvcGVub2ZmaWNlOm5hbWVzOmV4cGVyaW1lbnRhbDpvb28tbXMtaW50ZXJvcDp4bWxuczpmaWVsZDoxLjAiLCJ4bWxuczpmb3JteCI6''@;'; put 'put ''InVybjpvcGVub2ZmaWNlOm5hbWVzOmV4cGVyaW1lbnRhbDpvb3htbC1vZGYtaW50ZXJvcDp4bWxuczpmb3JtOjEuMCIsInhtbG5zOmNzczN0IjoiaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy10ZXh0LyIsIm9mZmljZTp2ZXJzaW9uIjoiMS4yIn0pLFV0PXJsKHsieG1sbnM6Y29uZmlnIjoi''@;'; put 'put ''dXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpjb25maWc6MS4wIiwib2ZmaWNlOm1pbWV0eXBlIjoiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCJ9KTsiZm9kcyI9PU10LmJvb2tUeXBlPyh4dC5wdXNoKCI8b2ZmaWNlOmRvY3VtZW50''@;'; put 'put ''IitSdCtVdCsiPlxuIikseHQucHVzaCgkbygpLnJlcGxhY2UoL29mZmljZTpkb2N1bWVudC1tZXRhL2csIm9mZmljZTptZXRhIikpKTp4dC5wdXNoKCI8b2ZmaWNlOmRvY3VtZW50LWNvbnRlbnQiK1J0KyI+XG4iKSxmdW5jdGlvbihqZSxZZSl7dmFyIE10PVtdLHh0PXt9O010LnB1c2goIiA8''@;'; put 'put ''b2ZmaWNlOmF1dG9tYXRpYy1zdHlsZXM+XG4iKSxNdC5wdXNoKCcgIDxudW1iZXI6ZGF0ZS1zdHlsZSBzdHlsZTpuYW1lPSJOMzciIG51bWJlcjphdXRvbWF0aWMtb3JkZXI9InRydWUiPlxuJyksTXQucHVzaCgnICAgPG51bWJlcjptb250aCBudW1iZXI6c3R5bGU9ImxvbmciLz5cbicpLE10''@;'; put 'put ''LnB1c2goIiAgIDxudW1iZXI6dGV4dD4vPC9udW1iZXI6dGV4dD5cbiIpLE10LnB1c2goJyAgIDxudW1iZXI6ZGF5IG51bWJlcjpzdHlsZT0ibG9uZyIvPlxuJyksTXQucHVzaCgiICAgPG51bWJlcjp0ZXh0Pi88L251bWJlcjp0ZXh0PlxuIiksTXQucHVzaCgiICAgPG51bWJlcjp5ZWFyLz5c''@;'; put 'put ''biIpLE10LnB1c2goIiAgPC9udW1iZXI6ZGF0ZS1zdHlsZT5cbiIpO3ZhciBSdD0wO1llLlNoZWV0TmFtZXMubWFwKGZ1bmN0aW9uKER0KXtyZXR1cm4gWWUuU2hlZXRzW0R0XX0pLmZvckVhY2goZnVuY3Rpb24oRHQpe2lmKER0JiZEdFsiIWNvbHMiXSlmb3IodmFyIHp0PTA7enQ8RHRbIiFj''@;'; put 'put ''b2xzIl0ubGVuZ3RoOysrenQpaWYoRHRbIiFjb2xzIl1benRdKXt2YXIgUG49RHRbIiFjb2xzIl1benRdO2lmKG51bGw9PVBuLndpZHRoJiZudWxsPT1Qbi53cHgmJm51bGw9PVBuLndjaCljb250aW51ZTt5YyhQbiksUG4ub2RzPVJ0O3ZhciBUbj1EdFsiIWNvbHMiXVt6dF0ud3B4KyJweCI7''@;'; put 'put ''TXQucHVzaCgnICA8c3R5bGU6c3R5bGUgc3R5bGU6bmFtZT0iY28nK1J0KyciIHN0eWxlOmZhbWlseT0idGFibGUtY29sdW1uIj5cbicpLE10LnB1c2goJyAgIDxzdHlsZTp0YWJsZS1jb2x1bW4tcHJvcGVydGllcyBmbzpicmVhay1iZWZvcmU9ImF1dG8iIHN0eWxlOmNvbHVtbi13aWR0aD0i''@;'; put 'put ''JytUbisnIi8+XG4nKSxNdC5wdXNoKCIgIDwvc3R5bGU6c3R5bGU+XG4iKSwrK1J0fX0pO3ZhciBVdD0wO1llLlNoZWV0TmFtZXMubWFwKGZ1bmN0aW9uKER0KXtyZXR1cm4gWWUuU2hlZXRzW0R0XX0pLmZvckVhY2goZnVuY3Rpb24oRHQpe2lmKER0JiZEdFsiIXJvd3MiXSlmb3IodmFyIHp0''@;'; put 'put ''PTA7enQ8RHRbIiFyb3dzIl0ubGVuZ3RoOysrenQpaWYoRHRbIiFyb3dzIl1benRdKXtEdFsiIXJvd3MiXVt6dF0ub2RzPVV0O3ZhciBQbj1EdFsiIXJvd3MiXVt6dF0uaHB4KyJweCI7TXQucHVzaCgnICA8c3R5bGU6c3R5bGUgc3R5bGU6bmFtZT0icm8nK1V0KyciIHN0eWxlOmZhbWlseT0i''@;'; put 'put ''dGFibGUtcm93Ij5cbicpLE10LnB1c2goJyAgIDxzdHlsZTp0YWJsZS1yb3ctcHJvcGVydGllcyBmbzpicmVhay1iZWZvcmU9ImF1dG8iIHN0eWxlOnJvdy1oZWlnaHQ9IicrUG4rJyIvPlxuJyksTXQucHVzaCgiICA8L3N0eWxlOnN0eWxlPlxuIiksKytVdH19KSxNdC5wdXNoKCcgIDxzdHls''@;'; put 'put ''ZTpzdHlsZSBzdHlsZTpuYW1lPSJ0YTEiIHN0eWxlOmZhbWlseT0idGFibGUiIHN0eWxlOm1hc3Rlci1wYWdlLW5hbWU9Im1wMSI+XG4nKSxNdC5wdXNoKCcgICA8c3R5bGU6dGFibGUtcHJvcGVydGllcyB0YWJsZTpkaXNwbGF5PSJ0cnVlIiBzdHlsZTp3cml0aW5nLW1vZGU9ImxyLXRiIi8+''@;'; put 'put ''XG4nKSxNdC5wdXNoKCIgIDwvc3R5bGU6c3R5bGU+XG4iKSxNdC5wdXNoKCcgIDxzdHlsZTpzdHlsZSBzdHlsZTpuYW1lPSJjZTEiIHN0eWxlOmZhbWlseT0idGFibGUtY2VsbCIgc3R5bGU6cGFyZW50LXN0eWxlLW5hbWU9IkRlZmF1bHQiIHN0eWxlOmRhdGEtc3R5bGUtbmFtZT0iTjM3Ii8+''@;'; put 'put ''XG4nKTt2YXIgbm49MjtVdD0wLFllLlNoZWV0TmFtZXMubWFwKGZ1bmN0aW9uKER0KXtyZXR1cm4gWWUuU2hlZXRzW0R0XX0pLmZvckVhY2goZnVuY3Rpb24oRHQpe2lmKER0KWZvcih2YXIgenQ9MCxQbj0wLFRuPUFzKER0WyIhcmVmIl0pLE9uPUFycmF5LmlzQXJyYXkoRHQpO3p0PD1Ubi5l''@;'; put 'put ''LnI7Kyt6dClmb3IoUG49MDtQbjw9VG4uZS5jOysrUG4pe3ZhciBZbj1ZMCh7cjp6dCxjOlBufSksTXI9T24/KER0W3p0XXx8W10pW1BuXTpEdFtZbl07aWYoTXImJihNci5zfHxNci5SKSl7dmFyIGFpPVtdO01yLnMmJmFpLnB1c2goW01yLCEwXSksTXIuUiYmTXIuUi5mb3JFYWNoKGZ1bmN0''@;'; put 'put ''aW9uKHlyKXt5ciYmeXIucyYmYWkucHVzaChbeXIsITFdKX0pLGFpLmZvckVhY2goZnVuY3Rpb24oeXIpe3ZhciBhcj15clswXSxHcj1hci5zLHpyPSIiLHFyPXsic3R5bGU6bmFtZSI6KHlyWzFdPyJjZSI6IlQiKStubiwic3R5bGU6ZmFtaWx5Ijp5clsxXT8idGFibGUtY2VsbCI6InRleHQi''@;'; put 'put ''fTt5clsxXSYmKHFyWyJzdHlsZTpwYXJlbnQtc3R5bGUtbmFtZSJdPSJEZWZhdWx0Iixxclsic3R5bGU6ZGF0YS1zdHlsZS1uYW1lIl09Ik4wIik7dmFyIG9pPXt9LGNyPSExLGRpPXt9LHYwPSExLFVpPXt9LHRvPSExO2lmKEdyLmNvbG9yJiYoZGlbImZvOmNvbG9yIl09IiMiK0xvKEdyLmNv''@;'; put 'put ''bG9yLnJnYiksdjA9ITApLEdyLnN6JiYoZGlbImZvOmZvbnQtc2l6ZSJdPUdyLnN6KyJwdCIsdjA9ITApLEdyLmJvbGQmJihkaVsiZm86Zm9udC13ZWlnaHQiXT0iYm9sZCIsdjA9ITApLEdyLml0YWxpYyYmKGRpWyJmbzpmb250LXN0eWxlIl09Iml0YWxpYyIsdjA9ITApLEdyLm5hbWUmJih4''@;'; put 'put ''dFtHci5uYW1lXXx8KHh0W0dyLm5hbWVdPUdyLm5hbWUubWF0Y2goLyAvKT8iJmFwb3M7IitHci5uYW1lKyImYXBvczsiOkdyLm5hbWUpLGRpWyJzdHlsZTpmb250LW5hbWUiXT1Hci5uYW1lLHYwPSEwKSxHci5zdHJpa2UmJihkaVsic3R5bGU6dGV4dC1saW5lLXRocm91Z2gtc3R5bGUiXT0i''@;'; put 'put ''c29saWQiLGRpWyJzdHlsZTp0ZXh0LWxpbmUtdGhyb3VnaC10eXBlIl09InNpbmdsZSIsdjA9ITApLEdyLnVuZGVybGluZSYmKGRpWyJzdHlsZTp0ZXh0LXVuZGVybGluZS1zdHlsZSJdPSJzb2xpZCIsZGlbInN0eWxlOnRleHQtdW5kZXJsaW5lLXdpZHRoIl09ImF1dG8iLGRpWyJzdHlsZTp0''@;'; put 'put ''ZXh0LXVuZGVybGluZS1jb2xvciJdPSJmb250LWNvbG9yIix2MD0hMCkseXJbMV0pe2lmKEdyLmFsaWdubWVudCl7dmFyIEEwPUdyLmFsaWdubWVudDtBMC53cmFwVGV4dCYmKG9pWyJmbzp3cmFwLW9wdGlvbiJdPSJ3cmFwIixjcj0hMCksQTAudmVydGljYWwmJihvaVsic3R5bGU6dmVydGlj''@;'; put 'put ''YWwtYWxpZ24iXT0iY2VudGVyIj09QTAudmVydGljYWw/Im1pZGRsZSI6QTAudmVydGljYWwsY3I9ITApLEZlW0EwLmhvcml6b250YWxdJiYoVWlbImZvOnRleHQtYWxpZ24iXT1GZVtBMC5ob3Jpem9udGFsXSx0bz0hMCl9R3IuZmdDb2xvciYmKG9pWyJmbzpiYWNrZ3JvdW5kLWNvbG9yIl09''@;'; put 'put ''IiMiK0xvKEdyLmZnQ29sb3IucmdiKSxjcj0hMCl9Y3ImJih6cis9X2koInN0eWxlOnRhYmxlLWNlbGwtcHJvcGVydGllcyIsbnVsbCxvaSkpLHYwJiYoenIrPV9pKCJzdHlsZTp0ZXh0LXByb3BlcnRpZXMiLG51bGwsZGkpKSx0byYmKHpyKz1faSgic3R5bGU6cGFyYWdyYXBoLXByb3BlcnRp''@;'; put 'put ''ZXMiLG51bGwsVWkpKSxNdC5wdXNoKCIgICIrX2koInN0eWxlOnN0eWxlIix6cixxcikrIlxuIiksYXIub2RzPW5uLCsrbm59KX19fSksTXQucHVzaCgiIDwvb2ZmaWNlOmF1dG9tYXRpYy1zdHlsZXM+XG4iKTt2YXIgQ249IiA8b2ZmaWNlOmZvbnQtZmFjZS1kZWNscz5cbiIrb24oeHQpLm1h''@;'; put 'put ''cChmdW5jdGlvbihEdCl7cmV0dXJuJyAgPHN0eWxlOmZvbnQtZmFjZSBzdHlsZTpuYW1lPSInK0R0KyciIHN2Zzpmb250LWZhbWlseT0iJyt4dFtEdF0rJyIvPlxuJ30pLmpvaW4oIiIpKyIgPC9vZmZpY2U6Zm9udC1mYWNlLWRlY2xzPlxuIjtqZS5wdXNoKENuKSxqZS5wdXNoKE10LmpvaW4o''@;'; put 'put ''IiIpKX0oeHQsWWUpLHh0LnB1c2goIiAgPG9mZmljZTpib2R5PlxuIikseHQucHVzaCgiICAgIDxvZmZpY2U6c3ByZWFkc2hlZXQ+XG4iKTtmb3IodmFyIG5uPTA7bm4hPVllLlNoZWV0TmFtZXMubGVuZ3RoOysrbm4peHQucHVzaCh4ZShZZS5TaGVldHNbWWUuU2hlZXROYW1lc1tubl1dLFll''@;'; put 'put ''LG5uKSk7cmV0dXJuIHh0LnB1c2goIiAgICA8L29mZmljZTpzcHJlYWRzaGVldD5cbiIpLHh0LnB1c2goIiAgPC9vZmZpY2U6Ym9keT5cbiIpLHh0LnB1c2goImZvZHMiPT1NdC5ib29rVHlwZT8iPC9vZmZpY2U6ZG9jdW1lbnQ+IjoiPC9vZmZpY2U6ZG9jdW1lbnQtY29udGVudD4iKSx4dC5q''@;'; put 'put ''b2luKCIiKX19KCk7ZnVuY3Rpb24gVEEoSCxpZSl7aWYoImZvZHMiPT1pZS5ib29rVHlwZSlyZXR1cm4gSjQoSCxpZSk7dmFyIFg9a3IoKSx3ZT0iIix4ZT1bXSxGZT1bXTtyZXR1cm4gem4oWCx3ZT0ibWltZXR5cGUiLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVh''@;'; put 'put ''ZHNoZWV0Iiksem4oWCx3ZT0iY29udGVudC54bWwiLEo0KEgsaWUpKSx4ZS5wdXNoKFt3ZSwidGV4dC94bWwiXSksRmUucHVzaChbd2UsIkNvbnRlbnRGaWxlIl0pLHpuKFgsd2U9InN0eWxlcy54bWwiLGFDKEgsaWUpKSx4ZS5wdXNoKFt3ZSwidGV4dC94bWwiXSksRmUucHVzaChbd2UsIlN0''@;'; put 'put ''eWxlc0ZpbGUiXSksem4oWCx3ZT0ibWV0YS54bWwiLGNuKyRvKCkpLHhlLnB1c2goW3dlLCJ0ZXh0L3htbCJdKSxGZS5wdXNoKFt3ZSwiTWV0YWRhdGFGaWxlIl0pLHpuKFgsd2U9Im1hbmlmZXN0LnJkZiIsZnVuY3Rpb24gU2koSCl7dmFyIGllPVtjbl07aWUucHVzaCgnPHJkZjpSREYgeG1s''@;'; put 'put ''bnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj5cbicpO2Zvcih2YXIgWD0wO1ghPUgubGVuZ3RoOysrWClpZS5wdXNoKF8oSFtYXVswXSxIW1hdWzFdKSksaWUucHVzaChBbygiIixIW1hdWzBdKSk7cmV0dXJuIGllLnB1c2goXygiIiwiRG9jdW1l''@;'; put 'put ''bnQiLCJwa2ciKSksaWUucHVzaCgiPC9yZGY6UkRGPiIpLGllLmpvaW4oIiIpfShGZSkpLHhlLnB1c2goW3dlLCJhcHBsaWNhdGlvbi9yZGYreG1sIl0pLHpuKFgsd2U9Ik1FVEEtSU5GL21hbmlmZXN0LnhtbCIsZnVuY3Rpb24gam4oSCl7dmFyIGllPVtjbl07aWUucHVzaCgnPG1hbmlmZXN0''@;'; put 'put ''Om1hbmlmZXN0IHhtbG5zOm1hbmlmZXN0PSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm1hbmlmZXN0OjEuMCIgbWFuaWZlc3Q6dmVyc2lvbj0iMS4yIj5cbicpLGllLnB1c2goJyAgPG1hbmlmZXN0OmZpbGUtZW50cnkgbWFuaWZlc3Q6ZnVsbC1wYXRoPSIvIiBtYW5p''@;'; put 'put ''ZmVzdDp2ZXJzaW9uPSIxLjIiIG1hbmlmZXN0Om1lZGlhLXR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXQiLz5cbicpO2Zvcih2YXIgWD0wO1g8SC5sZW5ndGg7KytYKWllLnB1c2goJyAgPG1hbmlmZXN0OmZpbGUtZW50cnkgbWFuaWZlc3Q6ZnVs''@;'; put 'put ''bC1wYXRoPSInK0hbWF1bMF0rJyIgbWFuaWZlc3Q6bWVkaWEtdHlwZT0iJytIW1hdWzFdKyciLz5cbicpO3JldHVybiBpZS5wdXNoKCI8L21hbmlmZXN0Om1hbmlmZXN0PiIpLGllLmpvaW4oIiIpfSh4ZSkpLFh9ZnVuY3Rpb24gamgoSCl7cmV0dXJuIGZ1bmN0aW9uKFgsd2Upe3ZhciB4ZT1m''@;'; put 'put ''dW5jdGlvbiBaUChILGllKXtpZighaWUpcmV0dXJuIDA7dmFyIFg9SC5TaGVldE5hbWVzLmluZGV4T2YoaWUpO2lmKC0xPT1YKXRocm93IG5ldyBFcnJvcigiU2hlZXQgbm90IGZvdW5kOiAiK2llKTtyZXR1cm4gWH0oWCx3ZS5zaGVldCk7cmV0dXJuIEguZnJvbV9zaGVldChYLlNoZWV0c1tY''@;'; put 'put ''LlNoZWV0TmFtZXNbeGVdXSx3ZSxYKX19dmFyIGpkPWpoKHVzKSxJQT1qaCh7ZnJvbV9zaGVldDpMNX0pLGxDPWpoKHZvaWQgMCE9PWZtP2ZtOnt9KSxzQz1qaCh2b2lkIDAhPT12Yj92Yjp7fSksc2k9amgodm9pZCAwIT09QTM/QTM6e30pLHpQPWpoKHZvaWQgMCE9PXg5P3g5Ont9KSxwVD1q''@;'; put 'put ''aCh7ZnJvbV9zaGVldDptQ30pLHVDPWpoKHZvaWQgMCE9PVlmP1lmOnt9KSxWbD1qaCh2b2lkIDAhPT1lRT9lRTp7fSksTnM9TCg0MTM0OCl8fCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuY3J5cHRvQnJvd3NlcmlmeTtpZighTnMpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qg''@;'; put 'put ''ZmluZCBjcnlwdG8gZXh0ZW5zaW9ucyEiKTt2YXIgY0M9e1NIQTUxMjoic2hhNTEyIixTSEEyNTY6InNoYTI1NiIsU0hBMzg0OiJzaGEzODQiLFNIQTE6InNoYTEiLE1ENToibWQ1IixNRDQ6Im1kNCIsTUQyOiJtZDIifTtmdW5jdGlvbiBrMihILGllKXtzd2l0Y2goaWU9KGllfHwiIikucmVw''@;'; put 'put ''bGFjZSgvLS9nLCIiKSl7Y2FzZSJTSEEtNTEyIjpjYXNlIlNIQTUxMiI6cmV0dXJuIG5ldyBOcy5jcmVhdGVIYXNoKCJzaGE1MTIiKS51cGRhdGUoSCkuZGlnZXN0KCk7Y2FzZSJTSEEtMSI6Y2FzZSJTSEExIjpyZXR1cm4gbmV3IE5zLmNyZWF0ZUhhc2goInNoYTEiKS51cGRhdGUoSCkuZGln''@;'; put 'put ''ZXN0KCk7Y2FzZSJNRDIiOnJldHVybiBuZXcgTnMuY3JlYXRlSGFzaCgibWQyIikudXBkYXRlKEgpLmRpZ2VzdCgpO2RlZmF1bHQ6aWYoY0NbaWVdKXJldHVybiBuZXcgTnMuY3JlYXRlSGFzaChjQ1tpZV0pLnVwZGF0ZShIKS5kaWdlc3QoKTt0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVk''@;'; put 'put ''IGhhc2ggYWxnb3JpdGhtICIraWUpfX1mdW5jdGlvbiBPNihILGllLFgpe2lmKCJyYzIiPT1YKXRocm93IlVuc3VwcG9ydGVkIFJDMiI7dmFyIHdlPU5zLmNyZWF0ZURlY2lwaGVyaXYoWHx8ImFlcy0yNTYtY2JjIixILGllKTtyZXR1cm4gd2Uuc2V0QXV0b1BhZGRpbmcoITEpLHdlfWZ1bmN0''@;'; put 'put ''aW9uIGdUKEgsaWUpe3ZhciBYPUJ1ZmZlci5mcm9tKEguc2FsdCwiYmFzZTY0Iiksd2U9SC5hbGdvLHhlPWsyKEJ1ZmZlci5jb25jYXQoW1gsQnVmZmVyLmZyb20oY3B0YWJsZS51dGlscy5lbmNvZGUoMTIwMCxpZSkpXSksd2UpLEZlPUJ1ZmZlci5hbGxvYyg0KTtLbChGZSwwKTtmb3IodmFy''@;'; put 'put ''IFplPTA7WmU8SC5zcGluOysrWmUpRmUubD0wLEZlLndyaXRlX3NoaWZ0KDQsWmUpLHhlPWsyKEJ1ZmZlci5jb25jYXQoW3hlLEZlXSksd2UpO3ZhciBqZT1CdWZmZXIuZnJvbShILmhhc2gsImJhc2U2NCIpO3JldHVybiAwPT14ZS5jb21wYXJlKGplKX1mdW5jdGlvbiBMaShIKXt2YXIgaWU9''@;'; put 'put ''e2FsZ286IlNIQS01MTIiLHNhbHQ6IlUyaGxaWFJLVXk1amIyMHZlR3h6ZUE9PSIsc3BpbjoxZTN9LFg9QnVmZmVyLmZyb20oaWUuc2FsdCwiYmFzZTY0Iiksd2U9aWUuYWxnbyx4ZT1rMihCdWZmZXIuY29uY2F0KFtYLEJ1ZmZlci5mcm9tKGNwdGFibGUudXRpbHMuZW5jb2RlKDEyMDAsSCkp''@;'; put 'put ''XSksd2UpLEZlPUJ1ZmZlci5hbGxvYyg0KTtLbChGZSwwKTtmb3IodmFyIFplPTA7WmU8aWUuc3BpbjsrK1plKUZlLmw9MCxGZS53cml0ZV9zaGlmdCg0LFplKSx4ZT1rMihCdWZmZXIuY29uY2F0KFt4ZSxGZV0pLHdlKTtyZXR1cm4gaWUuaGFzaD14ZS50b1N0cmluZygiYmFzZTY0IiksaWV9''@;'; put 'put ''ZnVuY3Rpb24gSG8oSCxpZSxYLHdlKXt2YXIgeGU9bXQudXRpbHMucHJlcF9ibG9iO2lmKCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA2L2tleUVuY3J5cHRvci9wYXNzd29yZCIhPUgudXJpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgRUNNQS0zNzYgQWdp''@;'; put 'put ''bGUgVVJJICIrSC51cmkpO3ZhciBGZT1ILmVuY3NbMF0sWmU9RmUuaGFzaEFsZ29yaXRobSxqZT0iYWVzLTI1Ni1jYmMiLFllPUJ1ZmZlci5mcm9tKEZlLnNhbHRWYWx1ZSwiYmFzZTY0IiksTXQ9QnVmZmVyLmZyb20oSC5zYWx0VmFsdWUsImJhc2U2NCIpLHh0PStGZS5ibG9ja1NpemUsUnQ9''@;'; put 'put ''K0ZlLmtleUJpdHM+PjMsVXQ9azIoQnVmZmVyLmNvbmNhdChbWWUsQnVmZmVyLmZyb20oY3B0YWJsZS51dGlscy5lbmNvZGUoMTIwMCxYKSldKSxaZSksbm49QnVmZmVyLmFsbG9jKDQpO3hlKG5uLDApO2Zvcih2YXIgQ249MDtDbjxGZS5zcGluQ291bnQ7KytDbilubi5sPTAsbm4ud3JpdGVf''@;'; put 'put ''c2hpZnQoNCxDbiksVXQ9azIoQnVmZmVyLmNvbmNhdChbbm4sVXRdKSxaZSk7dmFyIER0PWZ1bmN0aW9uKG9pLGNyLGRpLHYwKXt2YXIgVWk9azIoQnVmZmVyLmNvbmNhdChbb2ksQnVmZmVyLmZyb20oWzIwLDExMCwxMSwyMzEsMTcxLDE3MiwyMDgsMjE0XSldKSx2MCksdG89VWkubGVuZ3Ro''@;'; put 'put ''Pj1kaT9VaS5zbGljZSgwLGRpKTpCdWZmZXIuYWxsb2MoZGkpO2lmKFVpLmxlbmd0aDxkaSl7Zm9yKHZhciBBMD0wO0EwPFVpLmxlbmd0aDsrK0EwKXRvW0EwXT1VaVtBMF07Zm9yKDtBMDxkaTsrK0EwKXRvW0EwXT01NH1yZXR1cm4gdG99KFV0LDAsUnQsWmUpO3N3aXRjaChGZS5jaXBoZXJB''@;'; put 'put ''bGdvcml0aG0pe2Nhc2UiQUVTIjppZigiQ2hhaW5pbmdNb2RlQ0JDIiE9RmUuY2lwaGVyQ2hhaW5pbmcpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBjaXBoZXIgY2hhaW5pbmcgIitGZS5jaXBoZXJDaGFpbmluZyk7amU9ImFlcy0iK0ZlLmtleUJpdHMrIi1jYmMiO2JyZWFrO2Nhc2Ui''@;'; put 'put ''UkMyIjpqZT0icmMyIjticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgY2lwaGVyIGFsZ28gIitGZS5jaXBoZXJBbGdvcml0aG0pfVllPWZ1bmN0aW9uKHFyKXtmb3IodmFyIG9pPUJ1ZmZlci5hbGxvYyh4dCksY3I9MDtjcjx4dDsrK2NyKW9pW2NyXT1jcjxxci5s''@;'; put 'put ''ZW5ndGg/cXJbY3JdOjU0O3JldHVybiBvaX0oWWUpO3ZhciB6dD1CdWZmZXIuZnJvbShGZS5lbmNyeXB0ZWRLZXlWYWx1ZSwiYmFzZTY0IiksUG49TzYoRHQsWWUsamUpLnVwZGF0ZSh6dCksVG49TzYoazIoQnVmZmVyLmNvbmNhdChbVXQsQnVmZmVyLmZyb20oWzIxNSwxNzAsMTUsMTA5LDQ4''@;'; put 'put ''LDk3LDUyLDc4XSldKSxaZSkuc2xpY2UoMCxSdCksWWUsamUpLnVwZGF0ZShCdWZmZXIuZnJvbShGZS5lbmNyeXB0ZWRWZXJpZmllckhhc2hWYWx1ZSwiYmFzZTY0IikpLE9uPWsyKE82KGsyKEJ1ZmZlci5jb25jYXQoW1V0LEJ1ZmZlci5mcm9tKFsyNTQsMTY3LDIxMCwxMTgsNTksNzUsMTU4''@;'; put 'put ''LDEyMV0pXSksWmUpLnNsaWNlKDAsUnQpLFllLGplKS51cGRhdGUoQnVmZmVyLmZyb20oRmUuZW5jcnlwdGVkVmVyaWZpZXJIYXNoSW5wdXQsImJhc2U2NCIpKSxaZSksWW49K0ZlLmhhc2hTaXplfHxNYXRoLm1pbihUbi5sZW5ndGgsT24ubGVuZ3RoKTtpZigwIT1Ubi5zbGljZSgwLFluKS5j''@;'; put 'put ''b21wYXJlKE9uLnNsaWNlKDAsWW4pKSl0aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCBQYXNzd29yZCIpO3hlKGllLDApO3ZhciBNcj1pZS5yZWFkX3NoaWZ0KDQpO2llLmwrPTQ7dmFyIGFpPVtdLHlyPUJ1ZmZlci5jb25jYXQoW010LEJ1ZmZlci5hbGxvYyg0KV0pO2Zvcih4ZSh5ciksQ249''@;'; put 'put ''MDtpZS5sPGllLmxlbmd0aDspeXIubD1ZZS5sZW5ndGgseXIud3JpdGVfc2hpZnQoNCxDbiksYWkucHVzaChPNihQbixrMihCdWZmZXIuZnJvbSh5ciksWmUpLnNsaWNlKDAsMTYpLGplKS51cGRhdGUoQnVmZmVyLmZyb20oaWUuc2xpY2UoaWUubCxpZS5sKzQwOTYpKSkpLGllLmwrPTQwOTYs''@;'; put 'put ''KytDbjt2YXIgR3I9QnVmZmVyLmNvbmNhdChhaSkuc2xpY2UoMCxNciksenI9bG4od2UpO3JldHVybiB6ci50eXBlPSJidWZmZXIiLHpkKEdyLHpyKX1mdW5jdGlvbiBrYyhILGllLFgsd2Upe3ZhciB4ZT1tdC51dGlscy5wcmVwX2Jsb2I7aWYoIlN0ZCIhPT1ILnQpdGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KCJFQ01BLTM3NiBCYWQgU3RhbmRhcmQgRW5jcnlwdGlvbiIpO3ZhciBGZT1ILnYuU2FsdCxaZT1ILnYuVmVyaWZpZXIsamU9SC52LlZlcmlmaWVySGFzaDtpZigzNiE9SC5oLkZsYWdzKXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgU3RhbmRhcmQgRW5jcnlwdGlvbiBiYWQgRmxhZ3MiKTt2''@;'; put 'put ''YXIgWWU9MCxNdD0iIjtzd2l0Y2goSC5oLkFsZ0lEKXtjYXNlIDI2MTI2OlllPTEyOCxNdD0iYWVzLTEyOC1lY2IiO2JyZWFrO2Nhc2UgMjYxMjc6WWU9MTk2LE10PSJhZXMtMTkyLWVjYiI7YnJlYWs7Y2FzZSAyNjEyODpZZT0yNTYsTXQ9ImFlcy0yNTYtZWNiIjticmVhaztkZWZhdWx0OnRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiRUNNQS0zNzYgQmFkIFN0YW5kYXJkIEVuY3J5cHRpb24iKX1pZigzMjc3MiE9SC5oLkFsZ0lESGFzaCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEJhZCBTdGFuZGFyZCBFbmNyeXB0aW9uIik7aWYoSC5oLktleVNpemUhPVllKXRocm93IG5ldyBFcnJvcigiQWxn''@;'; put 'put ''SUQvS2V5U2l6ZSBtaXNtYXRjaCIpO2lmKDI0IT1ILmguUHJvdmlkZXJUeXBlKXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgdW5zdXBwb3J0ZWQgUHJvdmlkZXJUeXBlICIrSC5oLlByb3ZpZGVyVHlwZSk7dmFyIHh0PSJNaWNyb3NvZnQgRW5oYW5jZWQgUlNBIGFuZCBBRVMgQ3J5cHRvZ3Jh''@;'; put 'put ''cGhpYyBQcm92aWRlciI7aWYoSC5oLkNTUE5hbWUuc2xpY2UoMCx4dC5sZW5ndGgpIT09eHQpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBDcnlwdG8gUHJvdmlkZXIgIitILmguQ1NQTmFtZSk7dmFyIFJ0PSJTSEEtMSIsVXQ9WWU+PjMsbm49azIoQnVmZmVyLmNvbmNhdChbRmUsY3B0''@;'; put 'put ''YWJsZS51dGlscy5lbmNvZGUoMTIwMCxYKV0pLFJ0KSxDbj1CdWZmZXIuYWxsb2MoNCk7eGUoQ24sMCk7Zm9yKHZhciBEdD0wO0R0PDVlNDsrK0R0KUNuLmw9MCxDbi53cml0ZV9zaGlmdCg0LER0KSxubj1rMihCdWZmZXIuY29uY2F0KFtDbixubl0pLFJ0KTtDbi5sPTAsQ24ud3JpdGVfc2hp''@;'; put 'put ''ZnQoNCwwKTt2YXIgYWksYXIsR3IsenIsUG49KEdyPShhcj1mdW5jdGlvbihvaSxjcixkaSl7Zm9yKHZhciB2MD1CdWZmZXIuYWxsb2MoNjQpLFVpPTA7VWk8djAubGVuZ3RoOysrVWkpdjBbVWldPW9pO2ZvcihVaT0wO1VpPGNyLmxlbmd0aDsrK1VpKXYwW1VpXV49Y3JbVWldO3JldHVybiBr''@;'; put 'put ''Mih2MCxkaSl9KSg1NCxhaT1rMihCdWZmZXIuY29uY2F0KFtubixDbl0pLFJ0KSwiU0hBLTEiKSx6cj1hcig5MixhaSwiU0hBLTEiKSxCdWZmZXIuY29uY2F0KFtHcix6cl0pLnNsaWNlKDAsVXQpKTtpZihPNihQbixCdWZmZXIuYWxsb2MoMCksTXQpLnVwZGF0ZShqZSkuc2xpY2UoMCwyMCku''@;'; put 'put ''Y29tcGFyZShrMihPNihQbixCdWZmZXIuYWxsb2MoMCksTXQpLnVwZGF0ZShaZSksUnQpKSl0aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCBQYXNzd29yZCIpO3hlKGllLDApO3ZhciBUbj1pZS5yZWFkX3NoaWZ0KDQpO2llLmwrPTQ7dmFyIE9uPVtdO2ZvcihEdD0wO2llLmw8aWUubGVuZ3Ro''@;'; put 'put ''OylPbi5wdXNoKE82KFBuLEJ1ZmZlci5hbGxvYygwKSxNdCkudXBkYXRlKGllLnNsaWNlKGllLmwsaWUubCs0MDk2KSkpLGllLmwrPTQwOTYsKytEdDtyZXR1cm4gemQoQnVmZmVyLmNvbmNhdChPbikuc2xpY2UoMCxUbiksd2UpfWZ1bmN0aW9uIEk1KEgpe3JldHVyblsoIjAwIisoMjU1Jkgp''@;'; put 'put ''LnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpLCgiMDAiKyhIPj4+OCYyNTUpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpLCgiMDAiKyhIPj4+MTYmMjU1KS50b1N0cmluZygxNikpLnNsaWNlKC0yKSwoIjAwIisoSD4+PjI0JjI1NSkudG9TdHJpbmcoMTYpKS5zbGljZSgtMildLmpvaW4oIiIpfXZh''@;'; put 'put ''ciBSNj1mdW5jdGlvbihILGllLFgpe2Zvcih2YXIgd2U9InN0cmluZyI9PXR5cGVvZiBpZT9CdWZmZXIuZnJvbShpZSwiaGV4Iik6aWUseGU9InN0cmluZyI9PXR5cGVvZiBIP0J1ZmZlci5mcm9tKGNwdGFibGUudXRpbHMuZW5jb2RlKDEyMDAsSCkpOkgsRmU9InN0cmluZyI9PXR5cGVvZiBY''@;'; put 'put ''P0J1ZmZlci5mcm9tKFgsImhleCIpOlgsWmU9azIoeGUsIk1ENSIpLGplPUJ1ZmZlci5jb25jYXQoW1plLnNsaWNlKDAsNSksd2VdKSxZZT0wO1llPDQ7KytZZSlqZT1CdWZmZXIuY29uY2F0KFtqZSxqZV0pO3ZhciBNdD1rMihqZSwiTUQ1Iik7cmV0dXJuKGsyKEJ1ZmZlci5jb25jYXQoW010''@;'; put 'put ''LnNsaWNlKDAsNSksRmVdKSwiTUQ1IikudG9TdHJpbmcoImhleCIpKyIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpLnNsaWNlKDAsMzIpfSxEQT1mdW5jdGlvbihILGllLFgpe3ZhciB3ZT0ic3RyaW5nIj09dHlwZW9mIGllP0J1ZmZlci5mcm9tKGllLCJoZXgiKTppZSx4ZT0i''@;'; put 'put ''c3RyaW5nIj09dHlwZW9mIEg/QnVmZmVyLmZyb20oY3B0YWJsZS51dGlscy5lbmNvZGUoMTIwMCxIKSk6SCxGZT0ic3RyaW5nIj09dHlwZW9mIFg/QnVmZmVyLmZyb20oWCwiaGV4Iik6WCxaZT1rMihCdWZmZXIuY29uY2F0KFt3ZSx4ZV0pLCJTSEExIik7cmV0dXJuIGsyKEJ1ZmZlci5jb25j''@;'; put 'put ''YXQoW1plLEZlXSksIlNIQTEiKX0sU2Y9ZnVuY3Rpb24oKXtmdW5jdGlvbiBpZSgpe31pZS5wcm90b3R5cGUuYnVpbGQ9ZnVuY3Rpb24oRHQpe3RoaXMuX2k9MDt2YXIgenQ9dGhpcy5fYnVpbGQoRHQsIiIpO3JldHVybiIiPT09enQ/IiI6Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9''@;'; put 'put ''IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4nK3p0fSxpZS5wcm90b3R5cGUuX2J1aWxkPWZ1bmN0aW9uKER0LHp0KXtpZih0aGlzLl9pKyslMWU2PT0wJiYodGhpcy5fYz16dFswXSksbnVsbD09RHR8fCJvYmplY3QiIT10eXBlb2YgRHQmJiJmdW5jdGlvbiIhPXR5cGVvZiBEdCludWxsIT1E''@;'; put 'put ''dCYmKHp0Kz1mdW5jdGlvbiBIKER0LHp0KXtyZXR1cm4gbnVsbD09RHR8fChEdD1EdC50b1N0cmluZygpLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKSx6dCYmKER0PUR0LnJlcGxhY2UoLyIvZywiJnF1b3Q7IikpKSxEdH0o''@;'; put 'put ''RHQpKTtlbHNle2lmKCFEdC5uYW1lKXRocm93IG5ldyBFcnJvcigiWE1MIG5vZGUgZG9lcyBub3QgaGF2ZSBuYW1lOiAiK0pTT04uc3RyaW5naWZ5KER0KSk7enQrPSI8IitEdC5uYW1lO3ZhciBQbj10aGlzO3p0Kz1EdC5hdHRyaWJ1dGVzJiZybChEdC5hdHRyaWJ1dGVzKXx8IiIsQXJyYXku''@;'; put 'put ''aXNBcnJheShEdC5jaGlsZHJlbikmJjAhPUR0LmNoaWxkcmVuLmxlbmd0aD8oenQrPSI+IixEdC5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKFRuKXt6dD1Qbi5fYnVpbGQoVG4senQpfSksenQrPSI8LyIrRHQubmFtZSsiPiIpOnp0Kz0iLz4ifXJldHVybiB6dH07dmFyIFg9QnVmZmVyLmZy''@;'; put 'put ''b20oWzQsMCw0LDAsNjQsMCwwLDBdKSxGZT17ZGF0YUludGVncml0eTp7aG1hY0tleTpCdWZmZXIuZnJvbShbOTUsMTc4LDE3MywxLDEyLDE4NSwyMjUsMjQ2XSksaG1hY1ZhbHVlOkJ1ZmZlci5mcm9tKFsxNjAsMTAzLDEyNywyLDE3OCw0NCwxMzIsNTFdKX0sa2V5OkJ1ZmZlci5mcm9tKFsy''@;'; put 'put ''MCwxMTAsMTEsMjMxLDE3MSwxNzIsMjA4LDIxNF0pLHZlcmlmaWVySGFzaDp7aW5wdXQ6QnVmZmVyLmZyb20oWzI1NCwxNjcsMjEwLDExOCw1OSw3NSwxNTgsMTIxXSksdmFsdWU6QnVmZmVyLmZyb20oWzIxNSwxNzAsMTUsMTA5LDQ4LDk3LDUyLDc4XSl9fTtmdW5jdGlvbiBaZShEdCx6dCxQ''@;'; put 'put ''bixUbixPbixZbil7dmFyIE1yPXp0LnRvTG93ZXJDYXNlKCkrIi0iKzgqVG4ubGVuZ3RoO2lmKCJDaGFpbmluZ01vZGVDQkMiIT09UG4pdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGNpcGhlciBjaGFpbmluZzogIitQbik7dmFyIGFpPU5zW0R0PyJjcmVhdGVDaXBoZXJpdiI6ImNyZWF0ZURl''@;'; put 'put ''Y2lwaGVyaXYiXShNcis9Ii1jYmMiLFRuLE9uKTthaS5zZXRBdXRvUGFkZGluZyghMSk7dmFyIHlyPWFpLnVwZGF0ZShZbiksYXI9W3lyXTt0cnl7dmFyIEdyPWFpLmZpbmFsKCk7YXIucHVzaChHcil9Y2F0Y2goenIpe31yZXR1cm4gQnVmZmVyLmNvbmNhdChhcil9ZnVuY3Rpb24gamUoRHQp''@;'; put 'put ''e0R0PUR0LnRvTG93ZXJDYXNlKCk7dmFyIHp0PVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLFBuPU5zLmdldEhhc2hlcygpO2lmKFBuLmluZGV4T2YoRHQpPDApdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBoYXNoIGFsZ29yaXRobSAiK0R0KTt2YXIgVG49TnMuY3JlYXRlSGFzaChE''@;'; put 'put ''dCk7cmV0dXJuIFRuLnVwZGF0ZShCdWZmZXIuY29uY2F0KHp0KSksVG4uZGlnZXN0KCl9ZnVuY3Rpb24gWWUoRHQsenQsUG4sVG4peyJudW1iZXIiPT10eXBlb2YgVG4mJihUbj1NdChUbikpO3ZhciBPbj1qZShEdCx6dCxUbik7aWYoT24ubGVuZ3RoPFBuKXt2YXIgWW49QnVmZmVyLmFsbG9j''@;'; put 'put ''KFBuLDU0KTtPbi5jb3B5KFluKSxPbj1Zbn1lbHNlIE9uLmxlbmd0aD5QbiYmKE9uPU9uLnNsaWNlKDAsUG4pKTtyZXR1cm4gT259ZnVuY3Rpb24gTXQoRHQsenQpe3ZhciBQbj1CdWZmZXIuYWxsb2MoenR8fDQpO3JldHVybiBQbi53cml0ZVVJbnQzMkxFKER0LDApLFBufWZ1bmN0aW9uIHh0''@;'; put 'put ''KER0LHp0LFBuLFRuLE9uLFluKXtmb3IodmFyIGFpPWplKHp0LFBuLEJ1ZmZlci5mcm9tKER0LCJ1dGYxNmxlIikpLHlyPTA7eXI8VG47eXIrKylhaT1qZSh6dCxNdCh5ciksYWkpO3ZhciBHcj1Pbi84O2lmKChhaT1qZSh6dCxhaSxZbikpLmxlbmd0aDxHcil7dmFyIHpyPUJ1ZmZlci5hbGxv''@;'; put 'put ''YyhHciw1NCk7YWkuY29weSh6ciksYWk9enJ9ZWxzZSBhaS5sZW5ndGg+R3ImJihhaT1haS5zbGljZSgwLEdyKSk7cmV0dXJuIGFpfXJldHVybiBOcy5yYW5kb21CeXRlc3x8KE5zLnJhbmRvbUJ5dGVzPWZ1bmN0aW9uKER0KXtmb3IodmFyIHp0PUJ1ZmZlci5hbGxvYyhEdCksUG49MDtQbjxE''@;'; put 'put ''dDsrK1BuKXp0W1BuXT1NYXRoLmZsb29yKDI1NipNYXRoLnJhbmRvbSgpKTtyZXR1cm4genR9KSxmdW5jdGlvbiBDbihEdCx6dCl7aWYoInN0cmluZyI9PXR5cGVvZiBEdClyZXR1cm4gQ24oQnVmZmVyLmZyb20oRHQsImJpbmFyeSIpLHp0KTt2YXIgUG49TnMucmFuZG9tQnl0ZXMoMzIpLFRu''@;'; put 'put ''PXtwYWNrYWdlOntjaXBoZXJBbGdvcml0aG06IkFFUyIsY2lwaGVyQ2hhaW5pbmc6IkNoYWluaW5nTW9kZUNCQyIsc2FsdFZhbHVlOk5zLnJhbmRvbUJ5dGVzKDE2KSxoYXNoQWxnb3JpdGhtOiJTSEE1MTIiLGhhc2hTaXplOjY0LGJsb2NrU2l6ZToxNixrZXlCaXRzOjgqUG4ubGVuZ3RofSxr''@;'; put 'put ''ZXk6e2NpcGhlckFsZ29yaXRobToiQUVTIixjaXBoZXJDaGFpbmluZzoiQ2hhaW5pbmdNb2RlQ0JDIixzYWx0VmFsdWU6TnMucmFuZG9tQnl0ZXMoMTYpLGhhc2hBbGdvcml0aG06IlNIQTUxMiIsaGFzaFNpemU6NjQsYmxvY2tTaXplOjE2LHNwaW5Db3VudDoxLGtleUJpdHM6MjU2fX0sT249''@;'; put 'put ''ZnVuY3Rpb24gUnQoRHQsenQsUG4sVG4sT24sWW4sTXIsYWkpe2Zvcih2YXIgeXI9W10sYXI9RHQ/MDo4LEdyPTAsenI9MCxxcj0wO3FyPGFpLmxlbmd0aDspeyhxcj0oenI9cXIpKzQwOTYpPmFpLmxlbmd0aCYmKHFyPWFpLmxlbmd0aCk7dmFyIG9pPWFpLnNsaWNlKHpyK2FyLHFyK2FyKSxj''@;'; put 'put ''cj1vaS5sZW5ndGglT247Y3ImJihvaT1CdWZmZXIuY29uY2F0KFtvaSxCdWZmZXIuYWxsb2MoT24tY3IpXSkpO3ZhciB2MD1aZShEdCx6dCxQbixNcixZZShUbixZbixPbixHciksb2kpO3lyLnB1c2godjApLEdyKyt9dmFyIFVpPUJ1ZmZlci5jb25jYXQoeXIpO2lmKER0KVVpPUJ1ZmZlci5j''@;'; put 'put ''b25jYXQoW010KGFpLmxlbmd0aCw4KSxVaV0pO2Vsc2V7dmFyIHRvPWFpLnJlYWRVSW50MzJMRSgwKTtVaT1VaS5zbGljZSgwLHRvKX1yZXR1cm4gVWl9KCEwLFRuLnBhY2thZ2UuY2lwaGVyQWxnb3JpdGhtLFRuLnBhY2thZ2UuY2lwaGVyQ2hhaW5pbmcsVG4ucGFja2FnZS5oYXNoQWxnb3Jp''@;'; put 'put ''dGhtLFRuLnBhY2thZ2UuYmxvY2tTaXplLFRuLnBhY2thZ2Uuc2FsdFZhbHVlLFBuLER0KSxZbj1Ocy5yYW5kb21CeXRlcyg2NCksTXI9WWUoVG4ucGFja2FnZS5oYXNoQWxnb3JpdGhtLFRuLnBhY2thZ2Uuc2FsdFZhbHVlLFRuLnBhY2thZ2UuYmxvY2tTaXplLEZlLmRhdGFJbnRlZ3JpdHku''@;'; put 'put ''aG1hY0tleSksYWk9WmUoITAsVG4ucGFja2FnZS5jaXBoZXJBbGdvcml0aG0sVG4ucGFja2FnZS5jaXBoZXJDaGFpbmluZyxQbixNcixZbikseXI9ZnVuY3Rpb24gVXQoRHQsenQpe0R0PUR0LnRvTG93ZXJDYXNlKCk7dmFyIFBuPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpO2lmKE5zLmdl''@;'; put 'put ''dEhhc2hlcygpLmluZGV4T2YoRHQpPDApdGhyb3cgbmV3IEVycm9yKCJITUFDIGFsZ29yaXRobSAnIitEdCsiJyBub3Qgc3VwcG9ydGVkISIpO3ZhciBPbj1Ocy5jcmVhdGVIbWFjKER0LHp0KTtyZXR1cm4gT24udXBkYXRlKEJ1ZmZlci5jb25jYXQoUG4pKSxPbi5kaWdlc3QoKX0oVG4ucGFj''@;'; put 'put ''a2FnZS5oYXNoQWxnb3JpdGhtLFluLE9uKSxhcj1ZZShUbi5wYWNrYWdlLmhhc2hBbGdvcml0aG0sVG4ucGFja2FnZS5zYWx0VmFsdWUsVG4ucGFja2FnZS5ibG9ja1NpemUsRmUuZGF0YUludGVncml0eS5obWFjVmFsdWUpLEdyPVplKCEwLFRuLnBhY2thZ2UuY2lwaGVyQWxnb3JpdGhtLFRu''@;'; put 'put ''LnBhY2thZ2UuY2lwaGVyQ2hhaW5pbmcsUG4sYXIseXIpO1RuLmRhdGFJbnRlZ3JpdHk9e2VuY3J5cHRlZEhtYWNLZXk6YWksZW5jcnlwdGVkSG1hY1ZhbHVlOkdyfTt2YXIgenI9eHQoenQsVG4ua2V5Lmhhc2hBbGdvcml0aG0sVG4ua2V5LnNhbHRWYWx1ZSxUbi5rZXkuc3BpbkNvdW50LFRu''@;'; put 'put ''LmtleS5rZXlCaXRzLEZlLmtleSk7VG4ua2V5LmVuY3J5cHRlZEtleVZhbHVlPVplKCEwLFRuLmtleS5jaXBoZXJBbGdvcml0aG0sVG4ua2V5LmNpcGhlckNoYWluaW5nLHpyLFRuLmtleS5zYWx0VmFsdWUsUG4pO3ZhciBxcj1Ocy5yYW5kb21CeXRlcygxNiksb2k9eHQoenQsVG4ua2V5Lmhh''@;'; put 'put ''c2hBbGdvcml0aG0sVG4ua2V5LnNhbHRWYWx1ZSxUbi5rZXkuc3BpbkNvdW50LFRuLmtleS5rZXlCaXRzLEZlLnZlcmlmaWVySGFzaC5pbnB1dCk7VG4ua2V5LmVuY3J5cHRlZFZlcmlmaWVySGFzaElucHV0PVplKCEwLFRuLmtleS5jaXBoZXJBbGdvcml0aG0sVG4ua2V5LmNpcGhlckNoYWlu''@;'; put 'put ''aW5nLG9pLFRuLmtleS5zYWx0VmFsdWUscXIpO3ZhciBjcj1qZShUbi5rZXkuaGFzaEFsZ29yaXRobSxxciksZGk9eHQoenQsVG4ua2V5Lmhhc2hBbGdvcml0aG0sVG4ua2V5LnNhbHRWYWx1ZSxUbi5rZXkuc3BpbkNvdW50LFRuLmtleS5rZXlCaXRzLEZlLnZlcmlmaWVySGFzaC52YWx1ZSk7''@;'; put 'put ''VG4ua2V5LmVuY3J5cHRlZFZlcmlmaWVySGFzaFZhbHVlPVplKCEwLFRuLmtleS5jaXBoZXJBbGdvcml0aG0sVG4ua2V5LmNpcGhlckNoYWluaW5nLGRpLFRuLmtleS5zYWx0VmFsdWUsY3IpO3ZhciB2MD1mdW5jdGlvbiBubihEdCl7dmFyIHp0PXtuYW1lOiJlbmNyeXB0aW9uIixhdHRyaWJ1''@;'; put 'put ''dGVzOnt4bWxuczoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9lbmNyeXB0aW9uIiwieG1sbnM6cCI6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYva2V5RW5jcnlwdG9yL3Bhc3N3b3JkIiwieG1sbnM6YyI6Imh0dHA6Ly9zY2hlbWFz''@;'; put 'put ''Lm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYva2V5RW5jcnlwdG9yL2NlcnRpZmljYXRlIn0sY2hpbGRyZW46W3tuYW1lOiJrZXlEYXRhIixhdHRyaWJ1dGVzOntzYWx0U2l6ZTpEdC5wYWNrYWdlLnNhbHRWYWx1ZS5sZW5ndGgsYmxvY2tTaXplOkR0LnBhY2thZ2UuYmxvY2tTaXplLGtleUJp''@;'; put 'put ''dHM6RHQucGFja2FnZS5rZXlCaXRzLGhhc2hTaXplOkR0LnBhY2thZ2UuaGFzaFNpemUsY2lwaGVyQWxnb3JpdGhtOkR0LnBhY2thZ2UuY2lwaGVyQWxnb3JpdGhtLGNpcGhlckNoYWluaW5nOkR0LnBhY2thZ2UuY2lwaGVyQ2hhaW5pbmcsaGFzaEFsZ29yaXRobTpEdC5wYWNrYWdlLmhhc2hB''@;'; put 'put ''bGdvcml0aG0sc2FsdFZhbHVlOkR0LnBhY2thZ2Uuc2FsdFZhbHVlLnRvU3RyaW5nKCJiYXNlNjQiKX19LHtuYW1lOiJkYXRhSW50ZWdyaXR5IixhdHRyaWJ1dGVzOntlbmNyeXB0ZWRIbWFjS2V5OkR0LmRhdGFJbnRlZ3JpdHkuZW5jcnlwdGVkSG1hY0tleS50b1N0cmluZygiYmFzZTY0Iiks''@;'; put 'put ''ZW5jcnlwdGVkSG1hY1ZhbHVlOkR0LmRhdGFJbnRlZ3JpdHkuZW5jcnlwdGVkSG1hY1ZhbHVlLnRvU3RyaW5nKCJiYXNlNjQiKX19LHtuYW1lOiJrZXlFbmNyeXB0b3JzIixjaGlsZHJlbjpbe25hbWU6ImtleUVuY3J5cHRvciIsYXR0cmlidXRlczp7dXJpOiJodHRwOi8vc2NoZW1hcy5taWNy''@;'; put 'put ''b3NvZnQuY29tL29mZmljZS8yMDA2L2tleUVuY3J5cHRvci9wYXNzd29yZCJ9LGNoaWxkcmVuOlt7bmFtZToicDplbmNyeXB0ZWRLZXkiLGF0dHJpYnV0ZXM6e3NwaW5Db3VudDpEdC5rZXkuc3BpbkNvdW50LHNhbHRTaXplOkR0LmtleS5zYWx0VmFsdWUubGVuZ3RoLGJsb2NrU2l6ZTpEdC5r''@;'; put 'put ''ZXkuYmxvY2tTaXplLGtleUJpdHM6RHQua2V5LmtleUJpdHMsaGFzaFNpemU6RHQua2V5Lmhhc2hTaXplLGNpcGhlckFsZ29yaXRobTpEdC5rZXkuY2lwaGVyQWxnb3JpdGhtLGNpcGhlckNoYWluaW5nOkR0LmtleS5jaXBoZXJDaGFpbmluZyxoYXNoQWxnb3JpdGhtOkR0LmtleS5oYXNoQWxn''@;'; put 'put ''b3JpdGhtLHNhbHRWYWx1ZTpEdC5rZXkuc2FsdFZhbHVlLnRvU3RyaW5nKCJiYXNlNjQiKSxlbmNyeXB0ZWRWZXJpZmllckhhc2hJbnB1dDpEdC5rZXkuZW5jcnlwdGVkVmVyaWZpZXJIYXNoSW5wdXQudG9TdHJpbmcoImJhc2U2NCIpLGVuY3J5cHRlZFZlcmlmaWVySGFzaFZhbHVlOkR0Lmtl''@;'; put 'put ''eS5lbmNyeXB0ZWRWZXJpZmllckhhc2hWYWx1ZS50b1N0cmluZygiYmFzZTY0IiksZW5jcnlwdGVkS2V5VmFsdWU6RHQua2V5LmVuY3J5cHRlZEtleVZhbHVlLnRvU3RyaW5nKCJiYXNlNjQiKX19XX1dfV19LFRuPShuZXcgaWUpLmJ1aWxkKHp0KTtyZXR1cm4gQnVmZmVyLmNvbmNhdChbWCxC''@;'; put 'put ''dWZmZXIuZnJvbShUbiwidXRmOCIpXSl9KFRuKSxVaT1tdC51dGlscy5jZmJfbmV3KCk7cmV0dXJuIG10LnV0aWxzLmNmYl9hZGQoVWksIkVuY3J5cHRpb25JbmZvIix2MCksbXQudXRpbHMuY2ZiX2FkZChVaSwiRW5jcnlwdGVkUGFja2FnZSIsT24pLFVpfX0oKTtmdW5jdGlvbiBTMChIKXty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24oWCl7Zm9yKHZhciB3ZT0wO3dlIT1ILmxlbmd0aDsrK3dlKXt2YXIgeGU9SFt3ZV07dm9pZCAwPT09WFt4ZVswXV0mJihYW3hlWzBdXT14ZVsxXSksIm4iPT09eGVbMl0mJihYW3hlWzBdXT1OdW1iZXIoWFt4ZVswXV0pKX19fXZhciBNZj1mdW5jdGlvbihIKXtTMChb''@;'; put 'put ''WyJjZWxsTkYiLCExXSxbImNlbGxIVE1MIiwhMF0sWyJjZWxsRm9ybXVsYSIsITBdLFsiY2VsbFN0eWxlcyIsITFdLFsiY2VsbFRleHQiLCEwXSxbImNlbGxEYXRlcyIsITFdLFsic2hlZXRTdHVicyIsITFdLFsic2hlZXRSb3dzIiwwLCJuIl0sWyJib29rRGVwcyIsITFdLFsiYm9va1NoZWV0''@;'; put 'put ''cyIsITFdLFsiYm9va1Byb3BzIiwhMV0sWyJib29rRmlsZXMiLCExXSxbImJvb2tWQkEiLCExXSxbInBhc3N3b3JkIiwiIl0sWyJXVEYiLCExXV0pKEgpLEguYm9va0ltYWdlcyYmKEguY2VsbFN0eWxlcz0hMCl9LEYzPVMwKFtbImNlbGxEYXRlcyIsITFdLFsiYm9va1NTVCIsITFdLFsiYm9v''@;'; put 'put ''a1R5cGUiLCJ4bHN4Il0sWyJjb21wcmVzc2lvbiIsITFdLFsiV1RGIiwhMV1dKTtmdW5jdGlvbiBNcyhIKXtyZXR1cm4gZHQuV1MuaW5kZXhPZihIKT4tMT8ic2hlZXQiOmR0LkNTJiZIPT1kdC5DUz8iY2hhcnQiOmR0LkRTJiZIPT1kdC5EUz8iZGlhbG9nIjpkdC5NUyYmSD09ZHQuTVM/Im1h''@;'; put 'put ''Y3JvIjpIJiZILmxlbmd0aD9IOiJzaGVldCJ9dmFyIEQ1PVtdO2Z1bmN0aW9uIFg0KEgsaWUsWCx3ZSx4ZSxGZSxaZSxqZSxZZSxNdCx4dCxSdCl7dHJ5e0ZlW3dlXT1QdChVbihILFgsITApLGllKTt2YXIgbm4sVXQ9c24oSCxpZSk7c3dpdGNoKGplKXtjYXNlInNoZWV0Ijpubj1mdW5jdGlv''@;'; put 'put ''biBVeChILGllLFgsd2UseGUsRmUsWmUsamUpe3JldHVybiIuYmluIj09PWllLnNsaWNlKC00KT9mdW5jdGlvbiBJNihILGllLFgsd2UseGUsRmUsWmUpe2lmKCFIKXJldHVybiBIO3ZhciBqZT1pZXx8e307d2V8fCh3ZT17IiFpZCI6e319KTt2YXIgTXQsQ24sRHQsenQsUG4sVG4sT24sWW4s''@;'; put 'put ''TXIsYWksWWU9amUuZGVuc2U/W106e30seHQ9e3M6e3I6MmU2LGM6MmU2fSxlOntyOjAsYzowfX0sUnQ9W10sVXQ9ITEsbm49ITEseXI9W107amUuYmlmZj0xMixqZVsiIXJvdyJdPTA7dmFyIGFyPTAsR3I9ITEsenI9W10scXI9e30sb2k9amUuc3VwYm9va3N8fHhlLnN1cGJvb2tzfHxbW11d''@;'; put 'put ''O2lmKG9pLnNoYXJlZGY9cXIsb2kuYXJyYXlmPXpyLG9pLlNoZWV0TmFtZXM9eGUuU2hlZXROYW1lc3x8eGUuU2hlZXRzLm1hcChmdW5jdGlvbihBMCl7cmV0dXJuIEEwLm5hbWV9KSwhamUuc3VwYm9va3MmJihqZS5zdXBib29rcz1vaSx4ZS5OYW1lcykpZm9yKHZhciBjcj0wO2NyPHhlLk5h''@;'; put 'put ''bWVzLmxlbmd0aDsrK2NyKW9pWzBdW2NyKzFdPXhlLk5hbWVzW2NyXTt2YXIgZGk9W10sdjA9W10sVWk9ITE7aWYoeDVbMTZdPXtuOiJCcnRTaG9ydFJlYWwiLGY6VTR9LEgxKEgsZnVuY3Rpb24oYmksWXIsRWkpe2lmKCFubilzd2l0Y2goRWkpe2Nhc2UgMTQ4Ok10PWJpO2JyZWFrO2Nhc2Ug''@;'; put 'put ''MDpDbj1iaSxqZS5zaGVldFJvd3MmJmplLnNoZWV0Um93czw9Q24uciYmKG5uPSEwKSxNcj1YYShQbj1Dbi5yKSxqZVsiIXJvdyJdPUNuLnIsKGJpLmhpZGRlbnx8YmkuaHB0fHxudWxsIT1iaS5sZXZlbCkmJihiaS5ocHQmJihiaS5ocHg9QWYoYmkuaHB0KSksdjBbYmkucl09YmkpO2JyZWFr''@;'; put 'put ''O2Nhc2UgMjpjYXNlIDM6Y2FzZSA0OmNhc2UgNTpjYXNlIDY6Y2FzZSA3OmNhc2UgODpjYXNlIDk6Y2FzZSAxMDpjYXNlIDExOmNhc2UgMTM6Y2FzZSAxNDpjYXNlIDE1OmNhc2UgMTY6Y2FzZSAxNzpjYXNlIDE4OnN3aXRjaChEdD17dDpiaVsyXX0sYmlbMl0pe2Nhc2UibiI6RHQudj1iaVsx''@;'; put 'put ''XTticmVhaztjYXNlInMiOkR0LnY9KFluPU9kW2JpWzFdXSkudCxqZS5jZWxsU3R5bGVzJiYoRHQuUj1mdW5jdGlvbiBYeihILGllKXtpZihILlIpcmV0dXJuIEguUjtpZihpZSYmaWUuRm9udHMmJigxIT1ILnIubGVuZ3RofHwwIT1ILnJbMF0uaWNoKSl7SC5SPVtdO3ZhciBYPTAsd2U9SC5y''@;'; put 'put ''W1hdLHhlPUgucltYKzFdO2Zvcih3ZS5pY2g+MCYmSC5SLnB1c2goe3Q6InMiLHY6SC50LnNsaWNlKDAsd2UuaWNoKX0pO1g8SC5yLmxlbmd0aC0xOysrWClILlIucHVzaCh7dDoicyIsdjpILnQuc2xpY2UoKHdlPUgucltYXSkuaWNoLCh4ZT1ILnJbWCsxXSkuaWNoKSxzOmllLkZvbnRzW3dl''@;'; put 'put ''LmlmbnRdfSk7cmV0dXJuIEguUi5wdXNoKHt0OiJzIix2OkgudC5zbGljZSgoeGV8fHdlKS5pY2gpLHM6aWUuRm9udHNbKHhlfHx3ZSkuaWZudF19KSxILlJ9fShZbixaZSkpO2JyZWFrO2Nhc2UiYiI6RHQudj0hIWJpWzFdO2JyZWFrO2Nhc2UiZSI6RHQudj1iaVsxXSwhMSE9PWplLmNlbGxU''@;'; put 'put ''ZXh0JiYoRHQudz1OMVtEdC52XSk7YnJlYWs7Y2FzZSJzdHIiOkR0LnQ9InMiLER0LnY9YmlbMV19aWYoKHp0PVplLkNlbGxYZltiaVswXS5pU3R5bGVSZWZdKSYmZDUoRHQsenQubnVtRm10SWQsenQuZmlsbElkLHp0LmZvbnRJZCx6dC5ib3JkZXJJZCxqZSwwLFplKSxqZS5jZWxsU3R5bGVz''@;'; put 'put ''JiZEdC5zJiZ6dC5hbGlnbm1lbnQmJihEdC5zLmFsaWdubWVudD1sbih6dC5hbGlnbm1lbnQpKSxUbj0tMT09YmlbMF0uYz9UbisxOmJpWzBdLmMsamUuZGVuc2U/KFllW1BuXXx8KFllW1BuXT1bXSksWWVbUG5dW1RuXT1EdCk6WWVbX2EoVG4pK01yXT1EdCxqZS5jZWxsRm9ybXVsYSl7Zm9y''@;'; put 'put ''KEdyPSExLGFyPTA7YXI8enIubGVuZ3RoOysrYXIpe3ZhciBoaT16clthcl07Q24ucj49aGlbMF0ucy5yJiZDbi5yPD1oaVswXS5lLnImJlRuPj1oaVswXS5zLmMmJlRuPD1oaVswXS5lLmMmJihEdC5GPWZhKGhpWzBdKSxHcj0hMCl9IUdyJiZiaS5sZW5ndGg+MyYmKER0LmY9YmlbM10pfWlm''@;'; put 'put ''KHh0LnMucj5Dbi5yJiYoeHQucy5yPUNuLnIpLHh0LnMuYz5UbiYmKHh0LnMuYz1UbikseHQuZS5yPENuLnImJih4dC5lLnI9Q24ucikseHQuZS5jPFRuJiYoeHQuZS5jPVRuKSxqZS5jZWxsRGF0ZXMmJnp0JiYibiI9PUR0LnQmJkYuaXNfZGF0ZShGLl90YWJsZVt6dC5udW1GbXRJZF0pKXt2''@;'; put 'put ''YXIgTnI9Ri5wYXJzZV9kYXRlX2NvZGUoRHQudik7TnImJihEdC50PSJkIixEdC52PW5ldyBEYXRlKE5yLnksTnIubS0xLE5yLmQsTnIuSCxOci5NLE5yLlMsTnIudSkpfWJyZWFrO2Nhc2UgMTpjYXNlIDEyOmlmKCFqZS5zaGVldFN0dWJzfHxVdClicmVhaztEdD17dDoieiIsdjp2b2lkIDB9''@;'; put 'put ''LFRuPS0xPT1iaVswXS5jP1RuKzE6YmlbMF0uYywoenQ9WmUuQ2VsbFhmW2JpWzBdLmlTdHlsZVJlZl0pJiZkNShEdCx6dC5udW1GbXRJZCx6dC5maWxsSWQsenQuZm9udElkLHp0LmJvcmRlcklkLGplLDAsWmUpLGplLmNlbGxTdHlsZXMmJkR0LnMmJnp0LmFsaWdubWVudCYmKER0LnMuYWxp''@;'; put 'put ''Z25tZW50PWxuKHp0LmFsaWdubWVudCkpLGplLmRlbnNlPyhZZVtQbl18fChZZVtQbl09W10pLFllW1BuXVtUbl09RHQpOlllW19hKFRuKStNcl09RHQseHQucy5yPkNuLnImJih4dC5zLnI9Q24ucikseHQucy5jPlRuJiYoeHQucy5jPVRuKSx4dC5lLnI8Q24uciYmKHh0LmUucj1Dbi5yKSx4''@;'; put 'put ''dC5lLmM8VG4mJih4dC5lLmM9VG4pO2JyZWFrO2Nhc2UgMTc2OnlyLnB1c2goYmkpO2JyZWFrO2Nhc2UgNDk0OnZhciBraT13ZVsiIWlkIl1bYmkucmVsSWRdO2ZvcihraT8oYmkuVGFyZ2V0PWtpLlRhcmdldCxiaS5sb2MmJihiaS5UYXJnZXQrPSIjIitiaS5sb2MpLGJpLlJlbD1raSk6IiI9''@;'; put 'put ''PWJpLnJlbElkJiYoYmkuVGFyZ2V0PSIjIitiaS5sb2MpLFBuPWJpLnJmeC5zLnI7UG48PWJpLnJmeC5lLnI7KytQbilmb3IoVG49YmkucmZ4LnMuYztUbjw9YmkucmZ4LmUuYzsrK1RuKWplLmRlbnNlPyhZZVtQbl18fChZZVtQbl09W10pLFllW1BuXVtUbl18fChZZVtQbl1bVG5dPXt0OiJ6''@;'; put 'put ''Iix2OnZvaWQgMH0pLFllW1BuXVtUbl0ubD1iaSk6KE9uPVkwKHtjOlRuLHI6UG59KSxZZVtPbl18fChZZVtPbl09e3Q6InoiLHY6dm9pZCAwfSksWWVbT25dLmw9YmkpO2JyZWFrO2Nhc2UgNDI2OmlmKCFqZS5jZWxsRm9ybXVsYSlicmVhazt6ci5wdXNoKGJpKSwoYWk9amUuZGVuc2U/WWVb''@;'; put 'put ''UG5dW1RuXTpZZVtfYShUbikrTXJdKS5mPVcxKGJpWzFdLHh0LHtyOkNuLnIsYzpUbn0sb2ksamUpLGFpLkY9ZmEoYmlbMF0pO2JyZWFrO2Nhc2UgNDI3OmlmKCFqZS5jZWxsRm9ybXVsYSlicmVhaztxcltZMChiaVswXS5zKV09YmlbMV0sKGFpPWplLmRlbnNlP1llW1BuXVtUbl06WWVbX2Eo''@;'; put 'put ''VG4pK01yXSkuZj1XMShiaVsxXSx4dCx7cjpDbi5yLGM6VG59LG9pLGplKTticmVhaztjYXNlIDYwOmlmKCFqZS5jZWxsU3R5bGVzKWJyZWFrO2Zvcig7YmkuZT49YmkuczspZGlbYmkuZS0tXT17d2lkdGg6Ymkudy8yNTYsaGlkZGVuOiEhKDEmYmkuZmxhZ3MpLGxldmVsOmJpLmxldmVsfSxV''@;'; put 'put ''aXx8KFVpPSEwKSx5YyhkaVtiaS5lKzFdKTticmVhaztjYXNlIDE2MTpZZVsiIWF1dG9maWx0ZXIiXT17cmVmOmZhKGJpKX07YnJlYWs7Y2FzZSA0NzY6WWVbIiFtYXJnaW5zIl09Ymk7YnJlYWs7Y2FzZSAxNDc6eGUuU2hlZXRzW1hdfHwoeGUuU2hlZXRzW1hdPXt9KSxiaS5uYW1lJiYoeGUu''@;'; put 'put ''U2hlZXRzW1hdLkNvZGVOYW1lPWJpLm5hbWUpLChiaS5hYm92ZXx8YmkubGVmdCkmJihZZVsiIW91dGxpbmUiXT17YWJvdmU6YmkuYWJvdmUsbGVmdDpiaS5sZWZ0fSk7YnJlYWs7Y2FzZSAxMzc6eGUuVmlld3N8fCh4ZS5WaWV3cz1be31dKSx4ZS5WaWV3c1swXXx8KHhlLlZpZXdzWzBdPXt9''@;'; put 'put ''KSxiaS5SVEwmJih4ZS5WaWV3c1swXS5SVEw9ITApLGJpLmdyaWR8fCh4ZS5WaWV3c1swXS5ncmlkPSExLFllWyIhZ3JpZGxpbmVzIl09ITEpO2JyZWFrO2Nhc2UgNDg1OlllWyIhc2hlZXRGb3JtYXQiXT1iaTticmVhaztjYXNlIDY0OmNhc2UgMTA1MzohZnVuY3Rpb24gSzAoSCxpZSxYLHdl''@;'; put 'put ''KXtpZihpZSl7dmFyIHhlPXtyZWY6aWUuc3FyZngsdDppZS50fTtpZS5vcCYmKHhlLm9wPWllLm9wKTt2YXIgRmU9IiIsWmU9IiIsamU9aWUuc3FyZng/InN0cmluZyI9PXR5cGVvZiBpZS5zcXJmeD9GbyhpZS5zcXJmeC5zcGxpdCgiLCIpWzBdKTppZS5zcXJmeDpudWxsO2lmKGllLmYxJiYo''@;'; put 'put ''RmU9VzEoaWUuZjEsamUsbnVsbCxYLHdlLCEwKSksaWUuZjImJihaZT1XMShpZS5mMixqZSxudWxsLFgsd2UsITApKSxpZS5vcCYmWyJJTiIsIk9UIl0uaW5kZXhPZihpZS5vcCk+PS0xKXhlLm1pbj1GZSx4ZS5tYXg9WmU7ZWxzZSBpZihpZS5vcCl4ZS52PUZlO2Vsc2UgdHJ5e3N3aXRjaChp''@;'; put 'put ''ZS50KXtjYXNlIkxpc3QiOmlmKCJQdGdTdHIiPT09aWUuZjFbMF1bMF1bMF0mJjE9PWllLmYxWzBdLmxlbmd0aCl7eGUubD1pZS5mMVswXVswXVsxXS5zcGxpdCgiLCIpO2JyZWFrfWNhc2UiQ3VzdG9tIjp4ZS5mPUZlfX1jYXRjaChZZSl7fUhbIiF2YWxpZGF0aW9ucyJdfHwoSFsiIXZhbGlk''@;'; put 'put ''YXRpb25zIl09W10pLEhbIiF2YWxpZGF0aW9ucyJdLnB1c2goeGUpfX0oWWUsYmksb2ksamUpO2JyZWFrO2Nhc2UgMTUxOlllWyIhZnJlZXplIl09YmlbMF07YnJlYWs7Y2FzZSAxNTI6WWVbIiFzZWwiXT1iaTticmVhaztjYXNlIDE3NTpjYXNlIDY0NDpjYXNlIDYyNTpjYXNlIDU2MjpjYXNl''@;'; put 'put ''IDM5NjpjYXNlIDExMTI6Y2FzZSAxMTQ2OmNhc2UgNDcxOmNhc2UgMTA1MDpjYXNlIDY0OTpjYXNlIDExMDU6Y2FzZSA0OTpjYXNlIDU4OTpjYXNlIDYwNzpjYXNlIDU2NDpjYXNlIDEwNTU6Y2FzZSAxNjg6Y2FzZSAxNzQ6Y2FzZSAxMTgwOmNhc2UgNDk5OmNhc2UgNTA3OmNhc2UgNTUwOmNh''@;'; put 'put ''c2UgMTcxOmNhc2UgMTY3OmNhc2UgMTE3NzpjYXNlIDE2OTpjYXNlIDExODE6Y2FzZSA1NTE6Y2FzZSA1NTI6Y2FzZSA2NjE6Y2FzZSA2Mzk6Y2FzZSA0Nzg6Y2FzZSA1Mzc6Y2FzZSA0Nzc6Y2FzZSA1MzY6Y2FzZSAxMTAzOmNhc2UgNjgwOmNhc2UgMTEwNDpjYXNlIDEwMjQ6Y2FzZSA2NjM6''@;'; put 'put ''Y2FzZSA1MzU6Y2FzZSA2Nzg6Y2FzZSA1MDQ6Y2FzZSAxMDQzOmNhc2UgNDI4OmNhc2UgMTcwOmNhc2UgMzA3MjpjYXNlIDUwOmNhc2UgMjA3MDpjYXNlIDEwNDU6YnJlYWs7Y2FzZSAzNTpVdD0hMDticmVhaztjYXNlIDM2OlV0PSExO2JyZWFrO2Nhc2UgMzc6UnQucHVzaChZciksVXQ9ITA7''@;'; put 'put ''YnJlYWs7Y2FzZSAzODpSdC5wb3AoKSxVdD0hMTticmVhaztkZWZhdWx0OmlmKCEoKFlyfHwiIikuaW5kZXhPZigiQmVnaW4iKT4wKSYmISgoWXJ8fCIiKS5pbmRleE9mKCJFbmQiKT4wKSYmKCFVdHx8amUuV1RGJiYiQnJ0QUNCZWdpbiIhPVJ0W1J0Lmxlbmd0aC0xXSkpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJVbmV4cGVjdGVkIHJlY29yZCAiK0VpKyIgIitZcil9fSxqZSksZGVsZXRlIGplLnN1cGJvb2tzLGRlbGV0ZSBqZVsiIXJvdyJdLCFZZVsiIXJlZiJdJiYoeHQucy5yPDJlNnx8TXQmJihNdC5lLnI+MHx8TXQuZS5jPjB8fE10LnMucj4wfHxNdC5zLmM+MCkpJiYoWWVbIiFyZWYiXT1m''@;'; put 'put ''YShNdHx8eHQpKSxqZS5zaGVldFJvd3MmJlllWyIhcmVmIl0pe3ZhciB0bz1GbyhZZVsiIXJlZiJdKTtqZS5zaGVldFJvd3M8PSt0by5lLnImJih0by5lLnI9amUuc2hlZXRSb3dzLTEsdG8uZS5yPnh0LmUuciYmKHRvLmUucj14dC5lLnIpLHRvLmUucjx0by5zLnImJih0by5zLnI9dG8uZS5y''@;'; put 'put ''KSx0by5lLmM+eHQuZS5jJiYodG8uZS5jPXh0LmUuYyksdG8uZS5jPHRvLnMuYyYmKHRvLnMuYz10by5lLmMpLFllWyIhZnVsbHJlZiJdPVllWyIhcmVmIl0sWWVbIiFyZWYiXT1mYSh0bykpfXJldHVybiB5ci5sZW5ndGg+MCYmKFllWyIhbWVyZ2VzIl09eXIpLGRpLmxlbmd0aD4wJiYoWWVb''@;'; put 'put ''IiFjb2xzIl09ZGkpLHYwLmxlbmd0aD4wJiYoWWVbIiFyb3dzIl09djApLFllfShILHdlLFgseGUsRmUsMCxqZSk6ZnVuY3Rpb24gYjIoSCxpZSxYLHdlLHhlLEZlLFplKXtpZighSClyZXR1cm4gSDt3ZXx8KHdlPXsiIWlkIjp7fX0pO3ZhciBqZT1pZS5kZW5zZT9bXTp7fSxZZT17czp7cjoy''@;'; put 'put ''ZTYsYzoyZTZ9LGU6e3I6MCxjOjB9fSxNdD0iIix4dD0iIixSdD1ILm1hdGNoKGdfKTtSdD8oTXQ9SC5zbGljZSgwLFJ0LmluZGV4KSx4dD1ILnNsaWNlKFJ0LmluZGV4K1J0WzBdLmxlbmd0aCkpOk10PXh0PUg7dmFyIFV0PXh0Lmxhc3RJbmRleE9mKCJleHRMc3QiKSxDbj0oLTE9PVV0fHx4''@;'; put 'put ''dC5zbGljZShVdCksTXQubWF0Y2goQV8pKTtDbj9PbShDblswXSwwLHhlLFgpOihDbj1NdC5tYXRjaChJbSkpJiZmdW5jdGlvbiBPaChILGllLFgsd2UseGUsRmUsWmUpe09tKEguc2xpY2UoMCxILmluZGV4T2YoIj4iKSksMCx3ZSx4ZSk7dmFyIGplPWllLm1hdGNoKGJfKTtpZihqZSl7dmFy''@;'; put 'put ''IE10PUUzKGVuKGplWzBdKSxGZSxaZSk7WFsiIXRhYmNvbG9yIl09TXR9aWYoKGplPWllLm1hdGNoKGN4KSkmJmVuKGplWzBdKS5maXRUb1BhZ2UmJihYWyIhcHJpbnQiXXx8KFhbIiFwcmludCJdPXt9KSxYWyIhcHJpbnQiXS5wcm9wc3x8KFhbIiFwcmludCJdLnByb3BzPXt9KSxYWyIhcHJp''@;'; put 'put ''bnQiXS5wcm9wcy5maXR8fChYWyIhcHJpbnQiXS5wcm9wcy5maXQ9e30pLG51bGw9PVhbIiFwcmludCJdLnByb3BzLmZpdC5oZWlnaHQmJihYWyIhcHJpbnQiXS5wcm9wcy5maXQuaGVpZ2h0PTEpLG51bGw9PVhbIiFwcmludCJdLnByb3BzLmZpdC53aWR0aCYmKFhbIiFwcmludCJdLnByb3Bz''@;'; put 'put ''LmZpdC53aWR0aD0xKSksamU9aWUubWF0Y2goZkEpKXtYWyIhb3V0bGluZSJdPXt9O3ZhciBSdD1lbihqZVswXSk7UnQuc3VtbWFyeUJlbG93JiYoWFsiIW91dGxpbmUiXS5hYm92ZT0hRGkoUnQuc3VtbWFyeUJlbG93KSksUnQuc3VtbWFyeVJpZ2h0JiYoWFsiIW91dGxpbmUiXS5sZWZ0PSFE''@;'; put 'put ''aShSdC5zdW1tYXJ5UmlnaHQpKX19KENuWzBdLENuWzFdfHwiIixqZSx4ZSxYLFplLEZlKTt2YXIgRHQ9KE10Lm1hdGNoKC88KD86XHcqOik/ZGltZW5zaW9uLyl8fHtpbmRleDotMX0pLmluZGV4O2lmKER0PjApe3ZhciB6dD1NdC5zbGljZShEdCxEdCs1MCkubWF0Y2gobV8pO3p0JiYoIWll''@;'; put 'put ''fHwhaWUubm9kaW0pJiZmdW5jdGlvbiBkXyhILGllKXt2YXIgWD1GbyhpZSk7WC5zLnI8PVguZS5yJiZYLnMuYzw9WC5lLmMmJlgucy5yPj0wJiZYLnMuYz49MCYmKEhbIiFyZWYiXT1mYShYKSl9KGplLHp0WzFdKX12YXIgUG49TXQubWF0Y2goV0IpO1BuJiZQblsxXSYmZnVuY3Rpb24gYkco''@;'; put 'put ''SCxpZSxYLHdlKXtYLlZpZXdzfHwoWC5WaWV3cz1be31dKTt2YXIgeGU9MDtILnJlcGxhY2UodngsZnVuY3Rpb24oRmUsWmUpe3ZhciBqZT1lbihGZSk7aWYoWC5WaWV3c1t3ZV18fChYLlZpZXdzW3dlXT17fSksRGkoamUucmlnaHRUb0xlZnQpJiYoWC5WaWV3c1t3ZV0uUlRMPSEwKSxqZS5z''@;'; put 'put ''aG93R3JpZExpbmVzJiYoWC5WaWV3c1t3ZV0uZ3JpZD1EaShqZS5zaG93R3JpZExpbmVzKSxudWxsPT1pZVsiIWdyaWRsaW5lcyJdJiYoaWVbIiFncmlkbGluZXMiXT1EaShqZS5zaG93R3JpZExpbmVzKSkpLCtqZS56b29tU2NhbGUmJihYLlZpZXdzW3dlXS56b29tPStqZS56b29tU2NhbGUp''@;'; put 'put ''LGplLnZpZXcmJihYLlZpZXdzW3dlXS52aWV3PWplLnZpZXcpLDE9PSsreGUmJiIvPiIhPUZlLnNsaWNlKC0yKSl7dmFyIFllPUguc2xpY2UoWmUrRmUubGVuZ3RoKSxNdD1ZZS5tYXRjaCgvPFwvKD86XHc6KT9zaGVldFZpZXcoPzpbXj5hLXpdW14+XSopP1wvPz4vKTtpZighTXQpcmV0dXJu''@;'; put 'put ''IiI7dmFyIHh0PShZZT1ZZS5zbGljZSgwLE10LmluZGV4KSkubWF0Y2goLzwoPzpcdzopP3BhbmUoPzpbXj5hLXpdW14+XSopP1wvPz4vKTtpZih4dCl7dmFyIFJ0PWVuKHh0WzBdKTsiZnJvemVuIj09UnQuc3RhdGU/aWVbIiFmcmVlemUiXT1fYSgrUnQueFNwbGl0fHwwKStYYSgrUnQueVNw''@;'; put 'put ''bGl0fHwwKTpSdC50b3BMZWZ0Q2VsbCYmKGllWyIhZnJlZXplIl09UnQudG9wTGVmdENlbGwpfXZhciBVdD1ZZS5tYXRjaCgvPCg/Olx3Oik/c2VsZWN0aW9uKD86W14+YS16XVtePl0qKT9cLz8+Lyk7aWYoVXQpe3ZhciBubj1lbihVdFswXSk7aWYobm4uYWN0aXZlQ2VsbCYmKGllWyIhc2Vs''@;'; put 'put ''Il09e2NlbGw6bm4uYWN0aXZlQ2VsbH0pLG5uLnNxcmVmKXt2YXIgQ249bm4uc3FyZWYucmVwbGFjZSgvXHMuKiQvLCIiKTtpZVsiIXNlbCJdfHwoaWVbIiFzZWwiXT17Y2VsbDpZMChBcyhDbikucyl9KSxpZVsiIXNlbCJdLnJhbmdlPW5uLnNxcmVmfX19cmV0dXJuIiJ9KX0oUG5bMV0samUs''@;'; put 'put ''eGUsWCk7dmFyIFRuPU10Lm1hdGNoKExtKSxPbj1bXTtpZihpZS5jZWxsU3R5bGVzKXt2YXIgWW49TXQubWF0Y2goR0IpO1luJiZmdW5jdGlvbiBweChILGllLFgpe2Zvcih2YXIgd2U9ITEseGU9MDt4ZSE9aWUubGVuZ3RoOysreGUpe3ZhciBGZT1lbihpZVt4ZV0sITApO0ZlLmhpZGRlbiYm''@;'; put 'put ''KEZlLmhpZGRlbj1EaShGZS5oaWRkZW4pKTt2YXIgWmU9cGFyc2VJbnQoRmUubWluLDEwKS0xLGplPXBhcnNlSW50KEZlLm1heCwxMCktMTtmb3IoRmUub3V0bGluZUxldmVsJiYoRmUubGV2ZWw9K0ZlLm91dGxpbmVMZXZlbHx8MCksZGVsZXRlIEZlLm1pbixkZWxldGUgRmUubWF4LEZlLndp''@;'; put 'put ''ZHRoPStGZS53aWR0aCwhd2UmJkZlLndpZHRoJiYod2U9ITApLHljKEZlKSxGZS5zdHlsZSYmKEZlLnM9RG8oRmUuc3R5bGUsWCkpO1plPD1qZTspSFtaZSsrXT1sbihGZSl9fShPbixZbixaZSl9aWYoUnQmJlJfKFJ0WzFdLFgsamUsaWUsWWUsRmUsWmUpLGllLmNhbGxiYWNrKXJldHVybiBq''@;'; put 'put ''ZTt2YXIgTXI9eHQubWF0Y2gobEEpO01yJiYoamVbIiFwcm90ZWN0Il09ZnVuY3Rpb24gUUIoSCl7dmFyIGllPWVuKEgsITAsITApLFg9e307aWYoRGkoaWUuc2hlZXQpKXJldHVybiBNXy5mb3JFYWNoKGZ1bmN0aW9uKHdlKXtYW3dlXT1udWxsIT1pZVt3ZV0mJkRpKGllW3dlXSl9KSxnQS5m''@;'; put 'put ''b3JFYWNoKGZ1bmN0aW9uKHdlKXtYW3dlXT1udWxsPT1pZVt3ZV18fERpKGllW3dlXSl9KSxpZS5hbGdvcml0aG1OYW1lJiYoWC5lbmNyeXB0aW9uPXthbGdvOmllLmFsZ29yaXRobU5hbWUsaGFzaDppZS5oYXNoVmFsdWUsc2FsdDppZS5zYWx0VmFsdWUsc3BpbjoraWUuc3BpbkNvdW50fHwx''@;'; put 'put ''ZTV9KSxYfShNclswXSkpO3ZhciBhaT14dC5tYXRjaChhQSk7YWkmJihqZVsiIWF1dG9maWx0ZXIiXT1mdW5jdGlvbiBUXyhIKXtyZXR1cm57cmVmOihILm1hdGNoKC9yZWY9IihbXiJdKikiLyl8fFtdKVsxXX19KGFpWzBdKSk7dmFyIHlyPVtdLGFyPXh0Lm1hdGNoKHBfKTtpZihhcilmb3Io''@;'; put 'put ''RHQ9MDtEdCE9YXIubGVuZ3RoOysrRHQpeXJbRHRdPUZvKGFyW0R0XS5zbGljZShhcltEdF0uaW5kZXhPZignIicpKzEpKTt2YXIgR3I9KC0xPT1VdD94dDp4dC5zbGljZSgwLFV0KSkubWF0Y2goRG0pO0dyJiYoamVbIiFjb25kZm10Il09W10uY29uY2F0LmFwcGx5KFtdLEdyLm1hcChmdW5j''@;'; put 'put ''dGlvbihZcil7cmV0dXJuIGd4KFlyLGllLEZlLFplKX0pKSksVXQ+LTEmJihHcj14dC5zbGljZShVdCkubWF0Y2goRG0pKSYmKGplWyIhY29uZGZtdCJdfHwoamVbIiFjb25kZm10Il09W10pLGplWyIhY29uZGZtdCJdPWplWyIhY29uZGZtdCJdLmNvbmNhdC5hcHBseShqZVsiIWNvbmRmbXQi''@;'; put 'put ''XSxHci5tYXAoZnVuY3Rpb24oWXIpe3JldHVybiBneChZcixpZSxGZSxaZSwhMCl9KSkpO3ZhciB6cj0oLTE9PVV0P3h0Onh0LnNsaWNlKDAsVXQpKS5tYXRjaChlYyk7enImJihqZVsiIXZhbGlkYXRpb25zIl09QUEoenJbMF0saWUpKSxVdD4tMSYmKHpyPXh0LnNsaWNlKFV0KS5tYXRjaChl''@;'; put 'put ''YykpJiYoamVbIiF2YWxpZGF0aW9ucyJdfHwoamVbIiF2YWxpZGF0aW9ucyJdPVtdKSxqZVsiIXZhbGlkYXRpb25zIl09amVbIiF2YWxpZGF0aW9ucyJdLmNvbmNhdChBQSh6clswXSxpZSwhMCkpKTt2YXIgcXI9eHQubWF0Y2goc3gpO3FyJiZmdW5jdGlvbiBkeChILGllLFgpe2Zvcih2YXIg''@;'; put 'put ''d2U9QXJyYXkuaXNBcnJheShIKSx4ZT0wO3hlIT1pZS5sZW5ndGg7Kyt4ZSl7dmFyIEZlPWVuKFcwKGllW3hlXSksITApO2lmKCFGZS5yZWYpcmV0dXJuO3ZhciBaZT0oKFh8fHt9KVsiIWlkIl18fFtdKVtGZS5pZF07WmU/KEZlLlRhcmdldD1aZS5UYXJnZXQsRmUubG9jYXRpb24mJihGZS5U''@;'; put 'put ''YXJnZXQrPSIjIitncihGZS5sb2NhdGlvbikpKTooRmUuVGFyZ2V0PSIjIitncihGZS5sb2NhdGlvbiksWmU9e1RhcmdldDpGZS5UYXJnZXQsVGFyZ2V0TW9kZToiSW50ZXJuYWwifSksRmUuUmVsPVplLEZlLnRvb2x0aXAmJihGZS5Ub29sdGlwPUZlLnRvb2x0aXAsZGVsZXRlIEZlLnRvb2x0''@;'; put 'put ''aXApO2Zvcih2YXIgamU9Rm8oRmUucmVmKSxZZT1qZS5zLnI7WWU8PWplLmUucjsrK1llKWZvcih2YXIgTXQ9amUucy5jO010PD1qZS5lLmM7KytNdCl7dmFyIHh0PVkwKHtjOk10LHI6WWV9KTt3ZT8oSFtZZV18fChIW1llXT1bXSksSFtZZV1bTXRdfHwoSFtZZV1bTXRdPXt0OiJ6Iix2OnZv''@;'; put 'put ''aWQgMH0pLEhbWWVdW010XS5sPUZlKTooSFt4dF18fChIW3h0XT17dDoieiIsdjp2b2lkIDB9KSxIW3h0XS5sPUZlKX19fShqZSxxcix3ZSk7dmFyIG9pPXh0Lm1hdGNoKHV4KTtvaSYmZnVuY3Rpb24gaHgoSCxpZSl7dmFyIFg9ZW4oSCwhMSwhMCk7aWVbIiFwcmludCJdfHwoaWVbIiFwcmlu''@;'; put 'put ''dCJdPXt9KSxpZVsiIXByaW50Il0ucHJvcHN8fChpZVsiIXByaW50Il0ucHJvcHM9e30pO3ZhciB3ZT1pZVsiIXByaW50Il0ucHJvcHM7WC5ncmlkTGluZXMmJih3ZS5ncmlkbGluZXM9RGkoWC5ncmlkTGluZXMpKSxudWxsIT1YLmhvcml6b250YWxDZW50ZXJlZCYmKHdlLmNlbnRlclg9RGko''@;'; put 'put ''WC5ob3Jpem9udGFsQ2VudGVyZWQpKSxudWxsIT1YLnZlcnRpY2FsQ2VudGVyZWQmJih3ZS5jZW50ZXJZPURpKFgudmVydGljYWxDZW50ZXJlZCkpfShvaVswXSxqZSk7dmFyIGNyPXh0Lm1hdGNoKHZfKTtjciYmKChqZVsiIXByaW50Il18fChqZVsiIXByaW50Il09e30pKS5tYXJnaW5zPWpl''@;'; put 'put ''WyIhbWFyZ2lucyJdPVBtKGVuKGNyWzBdKSkpO3ZhciBkaT14dC5tYXRjaChZQik7ZGkmJmZ1bmN0aW9uIFVCKEgsaWUpe3ZhciBYPWVuKEgsITEsITApO2RlbGV0ZSBYLmlkLGRlbGV0ZSBYWzBdLGllWyIhcHJpbnQiXXx8KGllWyIhcHJpbnQiXT17fSksaWVbIiFwcmludCJdLnByb3BzfHwo''@;'; put 'put ''aWVbIiFwcmludCJdLnByb3BzPXt9KTt2YXIgd2U9aWVbIiFwcmludCJdLnByb3BzO1gub3JpZW50YXRpb24mJih3ZS5vcmllbnRhdGlvbj1YLm9yaWVudGF0aW9uKSxYLnNjYWxlJiYod2Uuc2NhbGU9K1guc2NhbGUpLCtYLmZpdFRvSGVpZ2h0Pj0wJiYoKHdlLmZpdHx8KHdlLmZpdD17fSkp''@;'; put 'put ''LmhlaWdodD0rWC5maXRUb0hlaWdodCksK1guZml0VG9XaWR0aD49MCYmKCh3ZS5maXR8fCh3ZS5maXQ9e30pKS53aWR0aD0rWC5maXRUb1dpZHRoKSxYLnBhcGVySGVpZ2h0JiZYLnBhcGVyV2lkdGg/d2UucGFwZXI9e3dpZHRoOlgucGFwZXJXaWR0aCxoZWlnaHQ6WC5wYXBlckhlaWdodH06''@;'; put 'put ''WC5wYXBlclNpemUmJih3ZS5wYXBlcj1aOVt3ZS5wYXBlcj0rWC5wYXBlclNpemVdfHx3ZS5wYXBlciksWC5ob3Jpem9udGFsRHBpP3dlLmRwaT0rWC5ob3Jpem9udGFsRHBpOlgudmVydGljYWxEcGkmJih3ZS5kcGk9K1gudmVydGljYWxEcGkpLCJhdXRvbWF0aWMiIT0oWC5maXJzdFBhZ2VO''@;'; put 'put ''dW1iZXJ8fCJhdXRvbWF0aWMiKSYmKHdlLmZpcnN0PStYLmZpcnN0UGFnZU51bWJlciksRGkoWC5ibGFja0FuZFdoaXRlKSYmKHdlLmJ3PSEwKSxEaShYLmRyYWZ0KSYmKHdlLmRyYWZ0PSEwKSwib3ZlclRoZW5Eb3duIj09WC5wYWdlT3JkZXImJih3ZS5vcmRlcj0ib3ZlciIpLENfW1guY2Vs''@;'; put 'put ''bENvbW1lbnRzXSYmKHdlLmNvbW1lbnRzPUNfW1guY2VsbENvbW1lbnRzXSksaEFbWC5lcnJvcnNdJiYod2UuZXJyb3JzPWhBW1guZXJyb3JzXSl9KGRpWzBdLGplKTt2YXIgdjA9eHQubWF0Y2godUEpO3YwJiZmdW5jdGlvbiBtQShILGllKXtpZihpZVsiIXByaW50Il18fChpZVsiIXByaW50''@;'; put 'put ''Il09e30pLEhbMV0pe3ZhciBYPSIiLHdlPTA7SFsxXS5yZXBsYWNlKEd0LGZ1bmN0aW9uKHhlLEZlKXtpZigiLyIhPXhlLmNoYXJBdCgxKSlYPXhlLnNsaWNlKDEsLTEpLHdlPUZlK3hlLmxlbmd0aDtlbHNlIGlmKFgpe3ZhciBaZT1YLm1hdGNoKC9IZWFkZXIvKT8iaGVhZGVyIjoiZm9vdGVy''@;'; put 'put ''IixqZT1YLnJlcGxhY2UoL0hlYWRlcnxGb290ZXIvLCIiKTtYPSIiLGllWyIhcHJpbnQiXVtaZV18fChpZVsiIXByaW50Il1bWmVdPXt9KSxpZVsiIXByaW50Il1bWmVdW2plXT1ncihXMChIWzFdLnNsaWNlKHdlLEZlKSkpfX0pfX0odjAsamUpO3ZhciBVaT14dC5tYXRjaCh5Xyk7VWkmJigo''@;'; put 'put ''amVbIiFwcmludCJdfHwoamVbIiFwcmludCJdPXt9KSkucm93QnJlYWtzPWplWyIhcm93QnJlYWtzIl09ZnVuY3Rpb24gU18oSCl7dmFyIGllPVtdO3JldHVybihILm1hdGNoKGRBKXx8W10pLmZvckVhY2goZnVuY3Rpb24oWCl7dmFyIHdlPWVuKFgpO2llLnB1c2goe1I6K3dlLmlkfSl9KSxp''@;'; put 'put ''ZX0oVWlbMF0pKTt2YXIgdG89eHQubWF0Y2goc0EpO3RvJiYoKGplWyIhcHJpbnQiXXx8KGplWyIhcHJpbnQiXT17fSkpLmNvbEJyZWFrcz1qZVsiIWNvbEJyZWFrcyJdPWZ1bmN0aW9uIHBBKEgpe3ZhciBpZT1bXTtyZXR1cm4oSC5tYXRjaChkQSl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKFgp''@;'; put 'put ''e3ZhciB3ZT1lbihYKTtpZS5wdXNoKHtDOit3ZS5pZH0pfSksaWV9KHRvWzBdKSk7dmFyIEEwPVtdO2lmKChBMD14dC5tYXRjaCgvZHJhd2luZyByOmlkPSIoLio/KSIvKSkmJihqZVsiIXJlbCJdPUEwWzFdKSwoQTA9eHQubWF0Y2goL2xlZ2FjeURyYXdpbmcgcjppZD0iKC4qPykiLykpJiYo''@;'; put 'put ''amVbIiFsZWdyZWwiXT1BMFsxXSksKEEwPXh0Lm1hdGNoKHZHKSkmJihqZVsiIWN0cmxpZCJdPUEwLm1hcChmdW5jdGlvbihZcil7cmV0dXJuIGVuKFlyKX0pKSwoQTA9eHQubWF0Y2goQUcpKSYmZnVuY3Rpb24gY0EoSCxpZSl7SFsiIXRhYmxlcmVmcyJdfHwoSFsiIXRhYmxlcmVmcyJdPVtd''@;'; put 'put ''KSwoaWUubWF0Y2goXzEpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihYKXtIWyIhdGFibGVyZWZzIl0ucHVzaChlbihYKS5pZCl9KX0oamUsQTBbMV0pLGllJiZpZS5ub2RpbSYmKFllLnMuYz1ZZS5zLnI9MCksIWplWyIhcmVmIl0mJlllLmUuYz49WWUucy5jJiZZZS5lLnI+PVllLnMuciYmKGpl''@;'; put 'put ''WyIhcmVmIl09ZmEoWWUpKSxpZS5zaGVldFJvd3M+MCYmamVbIiFyZWYiXSl7dmFyIGJpPUZvKGplWyIhcmVmIl0pO2llLnNoZWV0Um93czw9K2JpLmUuciYmKGJpLmUucj1pZS5zaGVldFJvd3MtMSxiaS5lLnI+WWUuZS5yJiYoYmkuZS5yPVllLmUuciksYmkuZS5yPGJpLnMuciYmKGJpLnMu''@;'; put 'put ''cj1iaS5lLnIpLGJpLmUuYz5ZZS5lLmMmJihiaS5lLmM9WWUuZS5jKSxiaS5lLmM8Ymkucy5jJiYoYmkucy5jPWJpLmUuYyksamVbIiFmdWxscmVmIl09amVbIiFyZWYiXSxqZVsiIXJlZiJdPWZhKGJpKSl9cmV0dXJuIFRuJiYoamVbIiFzaGVldEZvcm1hdCJdPWZ1bmN0aW9uIENmKEgpe3Zh''@;'; put 'put ''ciBpZT17fSxYPXt9LHdlPSExLHhlPXt9LEZlPSExO3JldHVybiBILmRlZmF1bHRSb3dIZWlnaHQmJih3ZT0hMCxYLmhwdD1wYXJzZUZsb2F0KEguZGVmYXVsdFJvd0hlaWdodCkpLEguemVyb0hlaWdodCYmKHdlPSEwLFguaGlkZGVuPURpKEguemVyb0hlaWdodCkpLEguYmFzZUNvbFdpZHRo''@;'; put 'put ''PyhGZT0hMCx4ZS53Y2g9cGFyc2VGbG9hdChILmJhc2VDb2xXaWR0aCkpOkguZGVmYXVsdENvbFdpZHRoJiYoRmU9ITAseGUud2NoPXBhcnNlRmxvYXQoSC5kZWZhdWx0Q29sV2lkdGgpLTUvSzIpLEgub3V0bGluZUxldmVsQ29sJiYoaWUuY29sb3V0bGluZT1wYXJzZUludChILm91dGxpbmVM''@;'; put 'put ''ZXZlbENvbCkpLEgub3V0bGluZUxldmVsUm93JiYoaWUucm93b3V0bGluZT1wYXJzZUludChILm91dGxpbmVMZXZlbFJvdykpLEgudGhpY2tCb3R0b20mJihpZS5ib3R0aGljaz1EaShILnRoaWNrQm90dG9tKSksSC50aGlja1RvcCYmKGllLnRvcHRoaWNrPURpKEgudGhpY2tUb3ApKSxILmR5''@;'; put 'put ''RGVzY2VudCYmKGllLmR5RGVzY2VudD1wYXJzZUZsb2F0KEguZHlEZXNjZW50KSksd2UmJihKOChYKSxpZS5yb3c9WCksRmUmJih5Yyh4ZSksaWUuY29sPXhlKSxpZX0oZW4oVG5bMF0pKSksT24ubGVuZ3RoPjAmJihqZVsiIWNvbHMiXT1PbikseXIubGVuZ3RoPjAmJihqZVsiIW1lcmdlcyJd''@;'; put 'put ''PXlyKSx3ZVsiIWlkIl1bamVbIiFyZWwiXV0mJihqZVsiIWRyYXdlbCJdPXdlWyIhaWQiXVtqZVsiIXJlbCJdXSksd2VbIiFpZCJdW2plWyIhbGVncmVsIl1dJiYoamVbIiFsZWdkcmF3ZWwiXT13ZVsiIWlkIl1bamVbIiFsZWdyZWwiXV0pLChqZVsiIWN0cmxpZCJdfHxbXSkuZm9yRWFjaChm''@;'; put 'put ''dW5jdGlvbihZcil7WXIucmVsPXdlWyIhaWQiXVtZci5pZF19KSxudWxsPT1qZVsiIWdyaWRsaW5lcyJdJiYoamVbIiFncmlkbGluZXMiXT0hMCksamV9KEgsd2UsWCx4ZSxGZSxaZSxqZSl9KFV0LGllLHhlLFllLEZlW3dlXSxNdCx4dCxSdCk7YnJlYWs7Y2FzZSJjaGFydCI6bm49ZnVuY3Rp''@;'; put 'put ''b24gVV8oSCxpZSxYLHdlLHhlLEZlLFplLGplKXtyZXR1cm4iLmJpbiI9PT1pZS5zbGljZSgtNCk/ZnVuY3Rpb24gbVAoSCxpZSxYLHdlLHhlKXtpZighSClyZXR1cm4gSDt3ZXx8KHdlPXsiIWlkIjp7fX0pO3ZhciBGZT17IiF0eXBlIjoiY2hhcnQiLCIhZHJhd2VsIjpudWxsLCIhcmVsIjoi''@;'; put 'put ''In0sWmU9W10samU9ITE7cmV0dXJuIEgxKEgsZnVuY3Rpb24oTXQseHQsUnQpe3N3aXRjaChSdCl7Y2FzZSA1NTA6RmVbIiFyZWwiXT1NdDticmVhaztjYXNlIDY1MTp4ZS5TaGVldHNbWF18fCh4ZS5TaGVldHNbWF09e30pLE10Lm5hbWUmJih4ZS5TaGVldHNbWF0uQ29kZU5hbWU9TXQubmFt''@;'; put 'put ''ZSk7YnJlYWs7Y2FzZSA1NjI6Y2FzZSA2NTI6Y2FzZSA2Njk6Y2FzZSA2Nzk6Y2FzZSA1NTE6Y2FzZSA1NTI6Y2FzZSA0NzY6Y2FzZSAzMDcyOmJyZWFrO2Nhc2UgMzU6amU9ITA7YnJlYWs7Y2FzZSAzNjpqZT0hMTticmVhaztjYXNlIDM3OlplLnB1c2goeHQpO2JyZWFrO2Nhc2UgMzg6WmUu''@;'; put 'put ''cG9wKCk7YnJlYWs7ZGVmYXVsdDppZigoeHR8fCIiKS5pbmRleE9mKCJCZWdpbiIpPjApWmUucHVzaCh4dCk7ZWxzZSBpZigoeHR8fCIiKS5pbmRleE9mKCJFbmQiKT4wKVplLnBvcCgpO2Vsc2UgaWYoIWplfHxpZS5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAiK1J0''@;'; put 'put ''KyIgIit4dCl9fSxpZSksd2VbIiFpZCJdW0ZlWyIhcmVsIl1dJiYoRmVbIiFkcmF3ZWwiXT13ZVsiIWlkIl1bRmVbIiFyZWwiXV0pLEZlfShILHdlLFgseGUsRmUpOmZ1bmN0aW9uIEZ4KEgsaWUsWCx3ZSx4ZSl7aWYoIUgpcmV0dXJuIEg7d2V8fCh3ZT17IiFpZCI6e319KTt2YXIgWmUsRmU9''@;'; put 'put ''eyIhdHlwZSI6ImNoYXJ0IiwiIWRyYXdlbCI6bnVsbCwiIXJlbCI6IiJ9LGplPUgubWF0Y2goQV8pO2plJiZPbShqZVswXSwwLHhlLFgpO3ZhciBZZT1ILm1hdGNoKHZfKTtyZXR1cm4gWWUmJihGZVsiIW1hcmdpbnMiXT1QbShlbihZZVswXSkpKSwoWmU9SC5tYXRjaCgvZHJhd2luZyByOmlk''@;'; put 'put ''PSIoLio/KSIvKSkmJihGZVsiIXJlbCJdPVplWzFdKSx3ZVsiIWlkIl1bRmVbIiFyZWwiXV0mJihGZVsiIWRyYXdlbCJdPXdlWyIhaWQiXVtGZVsiIXJlbCJdXSksRmV9KEgsMCxYLHhlLEZlKX0oVXQsaWUseGUsWWUsRmVbd2VdLE10KTticmVhaztjYXNlIm1hY3JvIjpubj1mdW5jdGlvbiBR''@;'; put 'put ''XyhILGllLFgsd2UseGUsRmUsWmUsamUpe3JldHVybiBpZS5zbGljZSgtNCkseyIhdHlwZSI6Im1hY3JvIn19KDAsaWUpO2JyZWFrO2Nhc2UiZGlhbG9nIjpubj1mdW5jdGlvbiBiUChILGllLFgsd2UseGUsRmUsWmUsamUpe3JldHVybiBpZS5zbGljZSgtNCkseyIhdHlwZSI6ImRpYWxvZyJ9''@;'; put 'put ''fSgwLGllKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHNoZWV0IHR5cGUgIitqZSl9aWYoWWUuY2FsbGJhY2spcmV0dXJuO1plW3dlXT1ubixmdW5jdGlvbiBXUChILGllLFgsd2UseGUsRmUsWmUsamUpe2lmKEgmJkhbIiFkcmF3ZWwiXSl7dmFyIFllPXVu''@;'; put 'put ''KEhbIiFkcmF3ZWwiXS5UYXJnZXQsd2UpLE10PUl0KFllKSx4dD1mdW5jdGlvbiBSRShILGllLFgsd2UseGUpe3ZhciBGZT17Y2hhcnRzOltdLGltYWdlczpbXSxzaGFwZXM6W119O2lmKCFIKXJldHVybiBGZTt2YXIgWmU9eGV8fHt9O3JldHVybihILm1hdGNoKC88W148XSo/KGFic29sdXRl''@;'; put 'put ''QW5jaG9yfG9uZUNlbGxBbmNob3J8dHdvQ2VsbEFuY2hvcikuKj8oYWJzb2x1dGVBbmNob3J8b25lQ2VsbEFuY2hvcnx0d29DZWxsQW5jaG9yKS4qPz4vZyl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGplKXt2YXIgWWU9IiIsTXQ9e3R5cGU6IiJ9LHh0PXt9LFJ0PSEwLFV0PSExLG5uPSExLENu''@;'; put 'put ''PSExLER0PXtzOnt9fSx6dD0tMSxQbj1bXSxUbj1bXSxPbj17czp7YWxpZ25tZW50Ontob3Jpem9udGFsOiJjZW50ZXIiLHZlcnRpY2FsOiJjZW50ZXIifX19LFluPSIiLE1yPS0xLHlyPXt9O2plLnJlcGxhY2UoR3QsZnVuY3Rpb24oYXIsR3Ipe1BuPW51bGw7dmFyIHpyPWVuKGFyKSxxcj1J''@;'; put 'put ''bih6clswXSkucmVwbGFjZSgvW1wvXT8+JC8sIiIpO3N3aXRjaChxcil7Y2FzZSI8Y2xpZW50RGF0YSI6YnJlYWs7Y2FzZSI8YWJzb2x1dGVBbmNob3IiOmNhc2UiPG9uZUNlbGxBbmNob3IiOmNhc2UiPHR3b0NlbGxBbmNob3IiOk10LnR5cGU9SW4oenJbMF0pLnJlcGxhY2UoL1s8Pl0vZywi''@;'; put 'put ''Iik7YnJlYWs7Y2FzZSI8L2Fic29sdXRlQW5jaG9yIjpjYXNlIjwvb25lQ2VsbEFuY2hvciI6Y2FzZSI8L3R3b0NlbGxBbmNob3IiOmJyZWFrO2Nhc2UiPHBvcyI6TXQucG9zPXt4Oit6ci54LHk6K3pyLnl9O2JyZWFrO2Nhc2UiPGV4dCI6UnQmJihNdC5leHQ9e3g6K3pyLmN4LHk6K3pyLmN5''@;'; put 'put ''fSk7YnJlYWs7Y2FzZSI8ZnJvbSI6Y2FzZSI8dG8iOnh0PXt9O2JyZWFrO2Nhc2UiPC9mcm9tIjpSdCYmKE10LmZyb209eHQpO2JyZWFrO2Nhc2UiPC90byI6UnQmJihNdC50bz14dCk7YnJlYWs7Y2FzZSI8Y29sIjpjYXNlIjxjb2xPZmYiOmNhc2UiPHJvdyI6Y2FzZSI8cm93T2ZmIjp6dD1H''@;'; put 'put ''cithci5sZW5ndGg7YnJlYWs7Y2FzZSI8L2NvbCI6eHQuYz0ramUuc2xpY2UoenQsR3IpO2JyZWFrO2Nhc2UiPC9jb2xPZmYiOnh0LmNPZmY9K2plLnNsaWNlKHp0LEdyKTticmVhaztjYXNlIjwvcm93Ijp4dC5yPStqZS5zbGljZSh6dCxHcik7YnJlYWs7Y2FzZSI8L3Jvd09mZiI6eHQuck9m''@;'; put 'put ''Zj0ramUuc2xpY2UoenQsR3IpO2JyZWFrO2Nhc2UiPHNwIjpZZT0ic2hhcGUiLE9uLkFuY2hvcj1NdCxGZS5zaGFwZXMucHVzaChPbiksUnQ9ITE7YnJlYWs7Y2FzZSI8L3NwIjpSdD0hMDticmVhaztjYXNlIjxncmFwaGljRnJhbWUiOlllPSJncmFwaGljIixSdD0hMTticmVhaztjYXNlIjwv''@;'; put 'put ''Z3JhcGhpY0ZyYW1lIjpSdD0hMDticmVhaztjYXNlIjxwaWMiOlllPSJwaWN0dXJlIixSdD0hMTticmVhaztjYXNlIjwvcGljIjpSdD0hMDticmVhaztjYXNlIjxncnBTcCI6WWU9Imdyb3Vwc2hhcGUiLFJ0PSExO2JyZWFrO2Nhc2UiPC9ncnBTcCI6UnQ9ITA7YnJlYWs7Y2FzZSI8Z3JhcGhp''@;'; put 'put ''YyI6Y2FzZSI8L2dyYXBoaWMiOmNhc2UiPHhmcm0iOmNhc2UiPC94ZnJtIjpjYXNlIjxvZmYiOmJyZWFrO2Nhc2UiPGdyYXBoaWNEYXRhIjpVdD0hMDticmVhaztjYXNlIjwvZ3JhcGhpY0RhdGEiOlV0PSExO2JyZWFrO2Nhc2UiPGJsaXBGaWxsIjpVdD0hMDticmVhaztjYXNlIjwvYmxpcEZp''@;'; put 'put ''bGwiOlV0PSExO2JyZWFrO2Nhc2UiPC9ibGlwIjpicmVhaztjYXNlIjxzcmNSZWN0IjpVdD0hMDticmVhaztjYXNlIjwvc3JjUmVjdCI6VXQ9ITE7YnJlYWs7Y2FzZSI8bm9GaWxsIjppZihubilicmVhazsiPHNwUHIiPT1Ubi5zbGljZSgtMSlbMF0mJihPbi5zLmZnQ29sb3I9bnVsbCk7YnJl''@;'; put 'put ''YWs7Y2FzZSI8L3NvbGlkRmlsbCI6aWYobm58fENuKWJyZWFrOyI8c3BQciI9PVRuLnNsaWNlKC0yKVswXT9Pbi5zLmZnQ29sb3I9eXI6IjxyUHIiPT1Ubi5zbGljZSgtMilbMF0mJlRuLmluZGV4T2YoIjx0eEJvZHkiKT4tMSYmKER0LnMuY29sb3I9eXIpLHlyPXt9LENuPSExO2JyZWFrO2Nh''@;'; put 'put ''c2UiPHByc3RHZW9tIjoic2hhcGUiPT1ZZSYmKE9uWyIhc2hhcGUiXT16ci5wcnN0KTticmVhaztjYXNlIjwvcHJzdEdlb20iOmNhc2UiPGF2THN0IjpicmVhaztjYXNlIjx0eEJvZHkiOlV0PSEwLE9uLlI9W107YnJlYWs7Y2FzZSI8L3R4Qm9keSI6VXQ9ITE7YnJlYWs7Y2FzZSI8Ym9keVBy''@;'; put 'put ''IjpPbi5zLmFsaWdubWVudC52ZXJ0aWNhbD1PRVt6ci5hbmNob3J8fCJ0Il18fCJ0b3AiO2JyZWFrO2Nhc2UiPGxzdFN0eWxlIjpicmVhaztjYXNlIjx0IjpNcj1Hcithci5sZW5ndGg7YnJlYWs7Y2FzZSI8YnIiOmNhc2UiPGJyLz4iOlluKz0iXG4iO2JyZWFrO2Nhc2UiPC90IjpZbis9amUu''@;'; put 'put ''c2xpY2UoTXIsR3IpO2JyZWFrO2Nhc2UiPHBQciI6T24ucy5hbGlnbm1lbnQuaG9yaXpvbnRhbHx8KE9uLnMuYWxpZ25tZW50Lmhvcml6b250YWw9SGJbenIuYWxnbnx8ImwiXXx8ImxlZnQiKSxUbi5pbmRleE9mKCI8dHhCb2R5Iik+LTEmJihEdC5zLmFsaWdubWVudC5ob3Jpem9udGFsPUhi''@;'; put 'put ''W3pyLmFsZ258fCJsIl18fCJsZWZ0Iik7YnJlYWs7Y2FzZSI8clByIjp6ci5zeiYmVG4uaW5kZXhPZigiPHR4Qm9keSIpPi0xJiYoT24ucy5zej1EdC5zLnN6PSt6ci5zei8xMDApO2JyZWFrO2Nhc2UiPHAiOlluPSIiLER0PXt0OiJzIix2OiIiLHM6e2FsaWdubWVudDp7fX19O2JyZWFrO2Nh''@;'; put 'put ''c2UiPC9wIjoic2hhcGUiPT1ZZSYmVG4uaW5kZXhPZigiPHR4Qm9keSIpPi0xJiYoT24udj0oT24udnx8IiIpK1luLER0LnY9WW4sT24uUi5wdXNoKER0KSk7YnJlYWs7Y2FzZSI8bGF0aW4iOnpyLnR5cGVmYWNlJiZUbi5pbmRleE9mKCI8dHhCb2R5Iik+LTEmJihEdC5zLm5hbWU9enIudHlw''@;'; put 'put ''ZWZhY2UpO2JyZWFrO2Nhc2UiPHN0eWxlIjpVdD0hMCxubj0hMDticmVhaztjYXNlIjwvc3R5bGUiOlV0PSExLG5uPSExO2JyZWFrO2Nhc2UiPGxuUmVmIjpjYXNlIjxmaWxsUmVmIjpjYXNlIjxlZmZlY3RSZWYiOmNhc2UiPGZvbnRSZWYiOmJyZWFrO2Nhc2UiPC9maWxsUmVmIjohbm4mJiJz''@;'; put 'put ''aGFwZSI9PVllJiYoT24ucy5mZ0NvbG9yPXlyKSx5cj17fTticmVhaztjYXNlIjwvZm9udFJlZiI6IW5uJiYic2hhcGUiPT1ZZSYmKE9uLnMuY29sb3I9eXIpLHlyPXt9O2JyZWFrO2Nhc2UiPHNjaGVtZUNsciI6dmFyIG9pPXtiZzE6Imx0MSIsYmcyOiJsdDIiLHR4MToiZGsxIix0eDI6ImRr''@;'; put 'put ''MiJ9W3pyLnZhbF18fHpyLnZhbCxjcj0oKHdlLnRoZW1lRWxlbWVudHN8fHt9KS5jbHJTY2hlbWV8fFtdKS5maW5kKGZ1bmN0aW9uKHYwKXtyZXR1cm4gdjAubmFtZT09b2l9KTtjcj95ci5yZ2I9Y3IucmdiOkNuPSEwO2JyZWFrO2Nhc2UiPHNjcmdiQ2xyIjpDbj0hMDticmVhaztjYXNlIjxz''@;'; put 'put ''cmdiQ2xyIjp5ci5yZ2I9enIudmFsLnNsaWNlKC02KTticmVhaztjYXNlIjxoc2xDbHIiOmNhc2UiPHN5c0NsciI6Y2FzZSI8cHJzdENsciI6Q249ITA7YnJlYWs7Y2FzZSI8Y2hhcnQiOlBuPUZlLmNoYXJ0czt2YXIgZGk9enIuaWQ7Y2FzZSI8YmxpcCI6UG58fChQbj1GZS5pbWFnZXMsZGk9''@;'; put 'put ''enIuZW1iZWQpLFBuLnB1c2goe0FuY2hvcjpNdCxUYXJnZXQ6KGllWyIhaWQiXVtkaV18fHt9KS5UYXJnZXR9KSx6ci5saW5rJiYoUG5bUG4ubGVuZ3RoLTFdLkxpbms9KGllWyIhaWQiXVt6ci5saW5rXXx8e30pLlRhcmdldCk7YnJlYWs7Y2FzZSI8Z3JwU3BQciI6VXQ9ITA7YnJlYWs7Y2Fz''@;'; put 'put ''ZSI8L2dycFNwUHIiOlV0PSExO2JyZWFrO2Nhc2UiPG52R3JwU3BQciI6VXQ9ITA7YnJlYWs7Y2FzZSI8L252R3JwU3BQciI6VXQ9ITE7YnJlYWs7Y2FzZSI8c3BQciI6VXQ9ITA7YnJlYWs7Y2FzZSI8L3NwUHIiOlV0PSExO2JyZWFrO2Nhc2UiPHN0cmV0Y2giOmNhc2UiPC9zdHJldGNoIjpj''@;'; put 'put ''YXNlIjxmaWxsUmVjdCI6Y2FzZSI8bnZHcmFwaGljRnJhbWVQciI6Y2FzZSI8L252R3JhcGhpY0ZyYW1lUHIiOmNhc2UiPGNOdkdyYXBoaWNGcmFtZVByIjpjYXNlIjwvY052R3JhcGhpY0ZyYW1lUHIiOmNhc2UiPGdyYXBoaWNGcmFtZUxvY2tzIjpjYXNlIjxudlBpY1ByIjpjYXNlIjwvbnZQ''@;'; put 'put ''aWNQciI6Y2FzZSI8Y052UGljUHIiOmNhc2UiPC9jTnZQaWNQciI6Y2FzZSI8cGljTG9ja3MiOmNhc2UiPGNOdkdycFNwUHIiOmNhc2UiPC9jTnZHcnBTcFByIjpjYXNlIjxncnBTcExvY2tzIjpjYXNlIjxudlNwUHIiOmNhc2UiPC9udlNwUHIiOmNhc2UiPGNOdlNwUHIiOmNhc2UiPC9jTnZT''@;'; put 'put ''cFByIjpjYXNlIjxzcExvY2tzIjpicmVhaztjYXNlIjxjTnZQciI6VXQ9ITA7YnJlYWs7Y2FzZSI8L2NOdlByIjpVdD0hMTticmVhaztjYXNlIjxjeG5TcCI6VXQ9ITA7YnJlYWs7Y2FzZSI8L2N4blNwIjpVdD0hMTticmVhaztjYXNlIjxjTnZDeG5TcFByIjpVdD0hMDticmVhaztjYXNlIjwv''@;'; put 'put ''Y052Q3huU3BQciI6VXQ9ITE7YnJlYWs7Y2FzZSI8bnZDeG5TcFByIjpjYXNlIjwvbnZDeG5TcFByIjpicmVhaztjYXNlIjxleHRMc3QiOlV0PSEwLG5uPSEwO2JyZWFrO2Nhc2UiPC9leHRMc3QiOlV0PSExLG5uPSExO2JyZWFrO2Nhc2UiPC9leHQiOmJyZWFrO2RlZmF1bHQ6aWYoWmUmJlpl''@;'; put 'put ''LldURiYmIVV0KXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrenJbMF0rIiBpbiBkcmF3aW5nIil9cmV0dXJuIjwvIj09cXIuc2xpY2UoMCwyKT9Ubi5wb3AoKToiLz4iIT1hci5zbGljZShhci5sZW5ndGgtMikmJlRuLnB1c2gocXIpLCIifSl9KSxGZX0oVW4oWCxZZSwhMCksUHQo''@;'; put 'put ''VW4oWCxNdCwhMCksWWUpLDAsamUseGUpO2lmKHh0KXtpZih4dC5jaGFydHMpZm9yKHZhciBSdD0wO1J0PHh0LmNoYXJ0cy5sZW5ndGg7KytSdCl7dmFyIFV0PXh0LmNoYXJ0c1tSdF0sbm49dW4oVXQuVGFyZ2V0LFllKSxDbj1JdChubiksRHQ9ImNoYXJ0Ij09aWUmJjA9PVJ0LHp0PUJ4KFVu''@;'; put 'put ''KFgsbm4sITApLDAsMCxQdChVbihYLENuLCEwKSxubiksMCxEdD9IOm51bGwsVXQsRHQ/bnVsbDpIKTtEdHx8KEhbIiFjaGFydHMiXXx8KEhbIiFjaGFydHMiXT1bXSksSFsiIWNoYXJ0cyJdLnB1c2goenQpKX1pZih4ZS5ib29rSW1hZ2VzJiZ4dC5pbWFnZXMpZm9yKHZhciBQbj0wO1BuPHh0''@;'; put 'put ''LmltYWdlcy5sZW5ndGg7KytQbil7dmFyIFRuPXh0LmltYWdlc1tQbl0sT249eyIhdHlwZSI6ImltYWdlIiwiIXBvcyI6JDgoVG4uQW5jaG9yKSwiIXBvc1R5cGUiOlRuLkFuY2hvci50eXBlLnJlcGxhY2UoL0FuY2hvci8sIiIpLCIhYWJzcG9zIjp5ZihUbi5BbmNob3IsSCksIiFyZWxwb3Mi''@;'; put 'put ''Ok9iKFRuLkFuY2hvcixIKX07aWYoVG4uVGFyZ2V0JiYoT25bIiFwYXRoIl09dW4oVG4uVGFyZ2V0LFllKSxPblsiIWRhdGEiXT1zbihYLE9uWyIhcGF0aCJdKSxPblsiIWRhdGF0eXBlIl09InN0cmluZyI9PXR5cGVvZiBPblsiIWRhdGEiXT8iYmluYXJ5IjoiYnVmZmVyIiksVG4uTGluayYm''@;'; put 'put ''KE9uWyIhZGF0YXR5cGUiXXx8KE9uWyIhZGF0YXR5cGUiXT0icmVtb3RlIiksT25bIiFsaW5rIl09VG4uTGluayksIU9uWyIhZGF0YXR5cGUiXSl0aHJvdyJJbWFnZSBkYXRhIGNhbm5vdCBiZSBmb3VuZCI7SFsiIWltYWdlcyJdfHwoSFsiIWltYWdlcyJdPVtdKSxIWyIhaW1hZ2VzIl0ucHVz''@;'; put 'put ''aChPbil9dmFyIFluLE1yO2lmKHh0LnNoYXBlcylmb3IodmFyIHlyPTA7eXI8eHQuc2hhcGVzLmxlbmd0aDsrK3lyKU1yPXsiIXR5cGUiOiJzaGFwZSIsIiFwb3MiOnlmKChZbj14dC5zaGFwZXNbeXJdKS5BbmNob3IsSCksIiFwb3NUeXBlIjpZbi5BbmNob3IudHlwZS5yZXBsYWNlKC9BbmNo''@;'; put 'put ''b3IvLCIiKSwiIWFic3BvcyI6eWYoWW4uQW5jaG9yLEgpLCIhcmVscG9zIjpPYihZbi5BbmNob3IsSCl9LFsidiIsIiFzaGFwZSIsInMiLCJSIl0uZm9yRWFjaChhaSksSFsiIXNoYXBlcyJdfHwoSFsiIXNoYXBlcyJdPVtdKSxIWyIhc2hhcGVzIl0ucHVzaChNcil9fWZ1bmN0aW9uIGFpKGFy''@;'; put 'put ''KXtZblthcl0mJihNclthcl09WW5bYXJdKX19KG5uLGplLEgsaWUsWWUsMCwwLHh0KTt2YXIgQ249W107cmV0dXJuIEZlJiZGZVt3ZV0mJm9uKEZlW3dlXSkuZm9yRWFjaChmdW5jdGlvbihEdCl7aWYoRmVbd2VdW0R0XS5UeXBlPT1kdC5DTU5UKXt2YXIgenQ9dW4oRmVbd2VdW0R0XS5UYXJn''@;'; put 'put ''ZXQsaWUpO2lmKCEoQ249ZnVuY3Rpb24ga1AoSCxpZSxYKXtyZXR1cm4iLmJpbiI9PT1pZS5zbGljZSgtNCk/ZnVuY3Rpb24gWWIoSCxpZSl7dmFyIFg9W10sd2U9W10seGU9e30sRmU9ITE7cmV0dXJuIEgxKEgsZnVuY3Rpb24oamUsWWUsTXQpe3N3aXRjaChNdCl7Y2FzZSA2MzI6d2UucHVz''@;'; put 'put ''aChqZSk7YnJlYWs7Y2FzZSA2MzU6eGU9amU7YnJlYWs7Y2FzZSA2Mzc6eGUudD1qZS50LHhlLmg9amUuaCx4ZS5yPWplLnI7YnJlYWs7Y2FzZSA2MzY6aWYoeGUuYXV0aG9yPXdlW3hlLmlhdXRob3JdLGRlbGV0ZSB4ZS5pYXV0aG9yLGllLnNoZWV0Um93cyYmeGUucmZ4JiZpZS5zaGVldFJv''@;'; put 'put ''d3M8PXhlLnJmeC5yKWJyZWFrO3hlLnR8fCh4ZS50PSIiKSxkZWxldGUgeGUucmZ4LFgucHVzaCh4ZSk7YnJlYWs7Y2FzZSAzMDcyOmNhc2UgMzc6Y2FzZSAzODpicmVhaztjYXNlIDM1OkZlPSEwO2JyZWFrO2Nhc2UgMzY6RmU9ITE7YnJlYWs7ZGVmYXVsdDppZighKChZZXx8IiIpLmluZGV4''@;'; put 'put ''T2YoIkJlZ2luIik+MCkmJiEoKFllfHwiIikuaW5kZXhPZigiRW5kIik+MCkmJighRmV8fGllLldURikpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAiK010KyIgIitZZSl9fSksWH0oSCxYKTpmdW5jdGlvbiBQRShILGllKXtpZihILm1hdGNoKC88KD86XHcrOik/Y29tbWVu''@;'; put 'put ''dHMgKlwvPi8pKXJldHVybltdO3ZhciBYPVtdLHdlPVtdLHhlPUgubWF0Y2goLzwoPzpcdys6KT9hdXRob3JzPihbXHNcU10qKTxcLyg/Olx3KzopP2F1dGhvcnM+Lyk7eGUmJnhlWzFdJiZ4ZVsxXS5zcGxpdCgvPFwvXHcqOj9hdXRob3I+LykuZm9yRWFjaChmdW5jdGlvbihaZSl7aWYoIiIh''@;'; put 'put ''PT1aZSYmIiIhPT1aZS50cmltKCkpe3ZhciBqZT1aZS5tYXRjaCgvPCg/Olx3KzopP2F1dGhvcltePl0qPiguKikvKTtqZSYmWC5wdXNoKGplWzFdKX19KTt2YXIgRmU9SC5tYXRjaCgvPCg/Olx3KzopP2NvbW1lbnRMaXN0PihbXHNcU10qKTxcLyg/Olx3KzopP2NvbW1lbnRMaXN0Pi8pO3Jl''@;'; put 'put ''dHVybiBGZSYmRmVbMV0mJkZlWzFdLnNwbGl0KC88XC9cdyo6P2NvbW1lbnQ+LykuZm9yRWFjaChmdW5jdGlvbihaZSl7aWYoIiIhPT1aZSYmIiIhPT1aZS50cmltKCkpe3ZhciBqZT1aZS5tYXRjaCgvPCg/Olx3KzopP2NvbW1lbnRbXj5dKj4vKTtpZihqZSl7dmFyIFllPWVuKGplWzBdKSxN''@;'; put 'put ''dD17YXV0aG9yOlllLmF1dGhvcklkJiZYW1llLmF1dGhvcklkXXx8InNoZWV0anNnaG9zdCIscmVmOlllLnJlZixndWlkOlllLmd1aWR9LHh0PXVsKFllLnJlZik7aWYoIShpZS5zaGVldFJvd3MmJmllLnNoZWV0Um93czw9eHQucikpe3ZhciBSdD1aZS5tYXRjaCgvPCg/Olx3KzopP3RleHQ+''@;'; put 'put ''KFtcc1xTXSopPFwvKD86XHcrOik/dGV4dD4vKSxVdD0hIVJ0JiYhIVJ0WzFdJiYkdShSdFsxXSl8fHtyOiIiLHQ6IiIsaDoiIn07TXQucj1VdC5yLCI8dD48L3Q+Ij09VXQuciYmKFV0LnQ9VXQuaD0iIiksTXQudD0oVXQudHx8IiIpLnJlcGxhY2UoL1xyXG4vZywiXG4iKS5yZXBsYWNlKC9c''@;'; put 'put ''ci9nLCJcbiIpLGllLmNlbGxIVE1MJiYoTXQuaD1VdC5oKSx3ZS5wdXNoKE10KX19fX0pLHdlfShILFgpfShzbihILHp0LCEwKSx6dCxZZSkpfHwhQ24ubGVuZ3RoKXJldHVybjshZnVuY3Rpb24gVzkoSCxpZSl7dmFyIHdlLFg9QXJyYXkuaXNBcnJheShIKTtpZS5mb3JFYWNoKGZ1bmN0aW9u''@;'; put 'put ''KHhlKXt2YXIgRmU9dWwoeGUucmVmKTtpZihYPyhIW0ZlLnJdfHwoSFtGZS5yXT1bXSksd2U9SFtGZS5yXVtGZS5jXSk6d2U9SFt4ZS5yZWZdLCF3ZSl7d2U9e3Q6InoifSxYP0hbRmUucl1bRmUuY109d2U6SFt4ZS5yZWZdPXdlO3ZhciBaZT1GbyhIWyIhcmVmIl18fCJCRFdHTzEwMDAwMDE6''@;'; put 'put ''QTEiKTtaZS5zLnI+RmUuciYmKFplLnMucj1GZS5yKSxaZS5lLnI8RmUuciYmKFplLmUucj1GZS5yKSxaZS5zLmM+RmUuYyYmKFplLnMuYz1GZS5jKSxaZS5lLmM8RmUuYyYmKFplLmUuYz1GZS5jKTt2YXIgamU9ZmEoWmUpO2plIT09SFsiIXJlZiJdJiYoSFsiIXJlZiJdPWplKX13ZS5jfHwo''@;'; put 'put ''d2UuYz1bXSk7dmFyIFllPXthOnhlLmF1dGhvcix0OnhlLnQscjp4ZS5yfTtZZS5yJiYic3RyaW5nIj09dHlwZW9mIFllLnImJihZZS5SPVc4KFllLnIpKSx4ZS5oJiYoWWUuaD14ZS5oKSx3ZS5jLnB1c2goWWUpfSl9KG5uLENuKX19KSxmdW5jdGlvbiBtVChILGllLFgsd2UseGUsRmUsWmUp''@;'; put 'put ''eyFIfHwhSFsiIXRhYmxlcmVmcyJdfHwhWHx8IVhbIiFpZCJdfHwoSFsiIXRhYmxlcyJdPVtdLEhbIiF0YWJsZXJlZnMiXS5mb3JFYWNoKGZ1bmN0aW9uKGplKXt2YXIgWWU9WFsiIWlkIl1bamVdO2lmKFllJiZZZS5UYXJnZXQpe3ZhciBNdD11bihZZS5UYXJnZXQsd2UpO3ZvaWQgMCE9PXo5''@;'; put 'put ''JiZ6OShzbihpZSxNdCwhMCksSCx4ZSwwLFplKX19KSxkZWxldGUgSFsiIXRhYmxlcmVmcyJdKX0obm4sSCxGZVt3ZV0saWUsUnQsMCxZZSksInVuZGVmaW5lZCIhPXR5cGVvZiBwYXJzZV9zaGVldF9waXZvdCYmRDUucHVzaChbbm4sSCxGZVt3ZV0saWUse1NoZWV0czpaZX0sUnQsWWVdKSxm''@;'; put 'put ''dW5jdGlvbiBZUChILGllLFgsd2UseGUsRmUsWmUsamUpe2lmKEgmJkhbIiFsZWdkcmF3ZWwiXSl7dmFyIFllPXVuKEhbIiFsZWdkcmF3ZWwiXS5UYXJnZXQsd2UpLE10PVVuKFgsWWUsITApO010JiZmdW5jdGlvbiBqYihILGllLFgpe3ZhciB3ZT0wOyhILm1hdGNoKHBCKXx8W10pLmZvckVh''@;'; put 'put ''Y2goZnVuY3Rpb24oeGUpe3ZhciBQbixUbixPbixZbixNcixhaSx5cixhcixGZT0iIixaZT0hMCxqZT0iIixZZT0tMSxNdD17fSx4dD17fSxSdD17fSxVdD0tMSxubj0tMSxDbj0iIixEdD0iIix6dD0iIixHcj0hMSx6cj0hMTtzd2l0Y2goeGUucmVwbGFjZShHdCxmdW5jdGlvbihjcixkaSl7''@;'; put 'put ''dmFyIHYwPWVuKGNyKTtzd2l0Y2goSW4odjBbMF0pKXtjYXNlIjxzaGFwZSI6djAuZmlsbGNvbG9yJiYoTXQuY29sb3IxPXYwLmZpbGxjb2xvciksdjAuc3Ryb2tlY29sb3ImJihSdC5jb2xvcj12MC5zdHJva2Vjb2xvcik7YnJlYWs7Y2FzZSI8ZmlsbCI6Y2FzZSI8ZmlsbD4iOiI8djpmaWxs''@;'; put 'put ''Ij09djBbMF0mJih2MC5jb2xvcjImJihNdC5jb2xvcjI9djAuY29sb3IyKSx2MC50eXBlJiYoTXQudHlwZT12MC50eXBlKSk7YnJlYWs7Y2FzZSI8L2ZpbGw+IjpjYXNlIjxsb2NrIjpjYXNlIjxsb2NrLz4iOmJyZWFrO2Nhc2UiPHNoYWRvdyI6djAuY29sb3ImJih4dC5jb2xvcj12MC5jb2xv''@;'; put 'put ''ciksdjAub24mJih4dC5vbj12MC5vbik7YnJlYWs7Y2FzZSI8Q2xpZW50RGF0YSI6djAuT2JqZWN0VHlwZSYmKEZlPXYwLk9iamVjdFR5cGUpO2JyZWFrO2Nhc2UiPFZpc2libGUiOmNhc2UiPFZpc2libGUvPiI6WmU9ITE7YnJlYWs7Y2FzZSI8QW5jaG9yIjpjYXNlIjxBbmNob3I+IjpjYXNl''@;'; put 'put ''IjxSb3ciOmNhc2UiPFJvdz4iOmNhc2UiPENvbHVtbiI6Y2FzZSI8Q29sdW1uPiI6Y2FzZSI8Rm1sYU1hY3JvIjpjYXNlIjxGbWxhTWFjcm8+IjpjYXNlIjxGbWxhTGluayI6Y2FzZSI8Rm1sYUxpbms+IjpjYXNlIjxGbWxhUmFuZ2UiOmNhc2UiPEZtbGFSYW5nZT4iOmNhc2UiPFNlbFR5cGUi''@;'; put 'put ''OmNhc2UiPFNlbFR5cGU+IjpjYXNlIjxWYWwiOmNhc2UiPFZhbD4iOmNhc2UiPE1pbiI6Y2FzZSI8TWluPiI6Y2FzZSI8TWF4IjpjYXNlIjxNYXg+IjpjYXNlIjxJbmMiOmNhc2UiPEluYz4iOmNhc2UiPFBhZ2UiOmNhc2UiPFBhZ2U+IjpjYXNlIjxDaGVja2VkIjpjYXNlIjxDaGVja2VkPiI6''@;'; put 'put ''Y2FzZSI8dGV4dGJveCI6Y2FzZSI8dGV4dGJveD4iOlllPWRpK2NyLmxlbmd0aDticmVhaztjYXNlIjwvQW5jaG9yPiI6amU9eGUuc2xpY2UoWWUsZGkpLnRyaW0oKTticmVhaztjYXNlIjwvUm93PiI6VXQ9K3hlLnNsaWNlKFllLGRpKS50cmltKCk7YnJlYWs7Y2FzZSI8L0NvbHVtbj4iOm5u''@;'; put 'put ''PSt4ZS5zbGljZShZZSxkaSkudHJpbSgpO2JyZWFrO2Nhc2UiPC9GbWxhTWFjcm8+IjpDbj14ZS5zbGljZShZZSxkaSkudHJpbSgpO2JyZWFrO2Nhc2UiPC9GbWxhTGluaz4iOkR0PXhlLnNsaWNlKFllLGRpKS50cmltKCk7YnJlYWs7Y2FzZSI8L0ZtbGFSYW5nZT4iOnlyPXhlLnNsaWNlKFll''@;'; put 'put ''LGRpKS50cmltKCk7YnJlYWs7Y2FzZSI8L1NlbFR5cGU+Ijphcj14ZS5zbGljZShZZSxkaSkudHJpbSgpO2JyZWFrO2Nhc2UiPC9WYWw+IjpQbj0reGUuc2xpY2UoWWUsZGkpLnRyaW0oKTticmVhaztjYXNlIjwvTWluPiI6VG49K3hlLnNsaWNlKFllLGRpKS50cmltKCk7YnJlYWs7Y2FzZSI8''@;'; put 'put ''L01heD4iOk9uPSt4ZS5zbGljZShZZSxkaSkudHJpbSgpO2JyZWFrO2Nhc2UiPC9JbmM+IjpZbj0reGUuc2xpY2UoWWUsZGkpLnRyaW0oKTticmVhaztjYXNlIjwvUGFnZT4iOk1yPSt4ZS5zbGljZShZZSxkaSkudHJpbSgpO2JyZWFrO2Nhc2UiPC9DaGVja2VkPiI6YWk9K3hlLnNsaWNlKFll''@;'; put 'put ''LGRpKS50cmltKCk7YnJlYWs7Y2FzZSI8L3RleHRib3g+Ijp6dD14ZS5zbGljZShZZSxkaSkudHJpbSgpO2JyZWFrO2Nhc2UiPE1vdmVXaXRoQ2VsbHMvPiI6Y2FzZSI8TW92ZVdpdGhDZWxscz4iOkdyPSEwO2JyZWFrO2Nhc2UiPFNpemVXaXRoQ2VsbHMvPiI6Y2FzZSI8U2l6ZVdpdGhDZWxs''@;'; put 'put ''cz4iOnpyPSEwfXJldHVybiIifSksRmUpe2Nhc2UiTm90ZSI6dmFyIHFyPWFjLnNoZWV0X2dldF9jZWxsKGllLFV0Pj0wJiZubj49MD9ZMCh7cjpVdCxjOm5ufSk6WFt3ZV0ucmVmKTtxci5jJiYocXIuYy5oaWRkZW49WmUsamUmJihxci5jLnJhd2FuY2hvcj1qZSxERShqZSxxci5jKSxoQihx''@;'; put 'put ''ci5jWyIhcG9zIl0sMiohIUdyKyEhenIsaWUpKSxNdC5jb2xvcjEmJihxci5jLmZpbGw9TXQpLHh0LmNvbG9yJiYocXIuYy5zaGFkb3c9eHQpLFJ0LmNvbG9yJiYocXIuYy5zdHJva2U9UnQpKSwrK3dlO2JyZWFrO2Nhc2UiQnV0dG9uIjpjYXNlIkdCb3giOmNhc2UiRHJvcCI6Y2FzZSJMYWJl''@;'; put 'put ''bCI6Y2FzZSJDaGVja2JveCI6Y2FzZSJTY3JvbGwiOmNhc2UiTGlzdCI6Y2FzZSJSYWRpbyI6Y2FzZSJTcGluIjpjYXNlIkVkaXQiOmllWyIhY29udHJvbHMiXXx8KGllWyIhY29udHJvbHMiXT1bXSk7dmFyIG9pPXsiIXR5cGUiOkZlfTtqZSYmREUoamUsb2kpLENuJiYob2kubWFjcm89Q24u''@;'; put 'put ''cmVwbGFjZSgiWzBdISIsIiIpKSxEdCYmKG9pLmxpbms9RHQpLCJTY3JvbGwiPT1GZXx8IlNwaW4iPT1GZT8obnVsbD09UG4mJihQbj0wKSxudWxsPT1UbiYmKFRuPTApLG51bGw9PU9uJiYoT249M2U0KSxudWxsPT1ZbiYmKFluPTEpLCJTY3JvbGwiPT1GZSYmbnVsbD09TXImJihNcj0xMCkp''@;'; put 'put ''OiJSYWRpbyI9PUZlfHwiQ2hlY2tib3giPT1GZT8obnVsbD09YWkmJihhaT0wKSxQbj1haSk6KCJMaXN0Ij09RmV8fCJEcm9wIj09RmUpJiYobnVsbCE9eXImJihvaS5yZWY9eXIpLG51bGw9PWFyJiYoYXI9IlNpbmdsZSIpLCJMaXN0Ij09RmUmJihvaS5zZWw9YXIpKSxudWxsIT1QbiYmKG9p''@;'; put 'put ''LnZhbD1QbiksbnVsbCE9VG4mJihvaS5taW49VG4pLG51bGwhPU9uJiYob2kubWF4PU9uKSxudWxsIT1ZbiYmKG9pLnN0ZXA9WW4pLG51bGwhPU1yJiYob2kucGFnZT1NciksenQmJihvaS50PXp0LnJlcGxhY2UoL1xzKjxbXHNcU10qPz5ccyovZywiIikpLGllWyIhY29udHJvbHMiXS5wdXNo''@;'; put 'put ''KG9pKX19KX0oVzAoTXQpLEgsamV8fFtdKSxIWyIhTERQIl09WWUsSFsiIWN0cmxpZCJdJiZIWyIhY3RybGlkIl0uZm9yRWFjaChmdW5jdGlvbih4dCl7aWYoeHQucmVsJiZ4dC5yZWwuVGFyZ2V0KXt2YXIgUnQ9dW4oeHQucmVsLlRhcmdldCx3ZSk7eHQucGF0aD1SdCxkZWxldGUgeHQucmVs''@;'; put 'put ''fX0pfX0obm4sMCxILGllLDAsMCwwLENuKSxubn1jYXRjaChEdCl7aWYoWWUuV1RGKXRocm93IER0fX1mdW5jdGlvbiBoMShIKXtyZXR1cm4iLyI9PUguY2hhckF0KDApP0guc2xpY2UoMSk6SH1mdW5jdGlvbiBLbShILGllKXtpZihENT1bXSxNZihpZT1pZXx8e30pLEtuKEgsIk1FVEEtSU5G''@;'; put 'put ''L21hbmlmZXN0LnhtbCIpfHxLbihILCJvYmplY3RkYXRhLnhtbCIpKXJldHVybiBmdW5jdGlvbiBvQyhILGllKXtpZT1pZXx8e30sS24oSCwiTUVUQS1JTkYvbWFuaWZlc3QueG1sIikmJmZ1bmN0aW9uIFBpKEgsaWUpe2Zvcih2YXIgd2UseGUsWD1DNShIKTt3ZT1OaC5leGVjKFgpOylzd2l0''@;'; put 'put ''Y2god2VbM10pe2Nhc2UibWFuaWZlc3QiOmJyZWFrO2Nhc2UiZmlsZS1lbnRyeSI6aWYoIi8iPT0oeGU9ZW4od2VbMF0sITEpKS5wYXRoJiYiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCIhPT14ZS50eXBlKXRocm93IG5ldyBFcnJvcigiVGhpcyBPcGVu''@;'; put 'put ''RG9jdW1lbnQgaXMgbm90IGEgc3ByZWFkc2hlZXQiKTticmVhaztjYXNlImVuY3J5cHRpb24tZGF0YSI6Y2FzZSJhbGdvcml0aG0iOmNhc2Uic3RhcnQta2V5LWdlbmVyYXRpb24iOmNhc2Uia2V5LWRlcml2YXRpb24iOnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgT0RTIEVuY3J5cHRp''@;'; put 'put ''b24iKTtkZWZhdWx0OmlmKGllJiZpZS5XVEYpdGhyb3cgd2V9fShzbihILCJNRVRBLUlORi9tYW5pZmVzdC54bWwiKSxpZSk7dmFyIFg9VW4oSCwiY29udGVudC54bWwiKTtpZighWCl0aHJvdyBuZXcgRXJyb3IoIk1pc3NpbmcgY29udGVudC54bWwgaW4gT0RTIC8gVU9GIGZpbGUiKTt2YXIg''@;'; put 'put ''d2U9aUMoVzAoWCksaWUpO3JldHVybiBLbihILCJtZXRhLnhtbCIpJiYod2UuUHJvcHM9bHMoc24oSCwibWV0YS54bWwiKSkpLHdlfShILGllKTtpZihLbihILCJJbmRleC9Eb2N1bWVudC5pd2EiKSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIE5VTUJFUlMgZmlsZSIpO3ZhciBGZSxa''@;'; put 'put ''ZSxYPWZ1bmN0aW9uIHRuKEgpe2Zvcih2YXIgaWU9SC5GdWxsUGF0aHN8fG9uKEguZmlsZXMpLFg9W10sd2U9MDt3ZTxpZS5sZW5ndGg7Kyt3ZSkiLyIhPWllW3dlXS5zbGljZSgtMSkmJlgucHVzaChpZVt3ZV0pO3JldHVybiBYLnNvcnQoKX0oSCksd2U9ZnVuY3Rpb24gaWIoSCl7dmFyIGll''@;'; put 'put ''PXt3b3JrYm9va3M6W10sc2hlZXRzOltdLGNoYXJ0czpbXSxkaWFsb2dzOltdLG1hY3JvczpbXSxyZWxzOltdLHN0cnM6W10sY29tbWVudHM6W10sbGlua3M6W10sY29yZXByb3BzOltdLGV4dHByb3BzOltdLGN1c3Rwcm9wczpbXSx0aGVtZXM6W10sc3R5bGVzOltdLGNhbGNjaGFpbnM6W10s''@;'; put 'put ''dmJhOltdLGRyYXdpbmdzOltdLHBpdm90czpbXSxwaXZvdGNhY2hlczpbXSxwaXZvdHJlY29yZHM6W10sZGF0YW1vZGVsczpbXSxjaGFydG9ianM6W10sY2hhcnRzdHlsZXM6W10sY2hhcnRjb2xvcnM6W10sY2hhcnRleHM6W10sdGFibGVzOltdLGNvbm5zOltdLGN0cmxwcm9wczpbXSxjdXN0''@;'; put 'put ''b214bWxwcm9wczpbXSxUT0RPOltdLHhtbG5zOiIifTtpZighSHx8IUgubWF0Y2gpcmV0dXJuIGllO3ZhciBYPXt9O2lmKChILm1hdGNoKEd0KXx8W10pLmZvckVhY2goZnVuY3Rpb24od2Upe3ZhciB4ZT1lbih3ZSk7c3dpdGNoKHhlWzBdLnJlcGxhY2Uoa24sIjwiKSl7Y2FzZSI8P3htbCI6''@;'; put 'put ''YnJlYWs7Y2FzZSI8VHlwZXMiOmllLnhtbG5zPXhlWyJ4bWxucyIrKHhlWzBdLm1hdGNoKC88KFx3Kyk6Lyl8fFsiIiwiIl0pWzFdXTticmVhaztjYXNlIjxEZWZhdWx0IjpYW3hlLkV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpXT14ZS5Db250ZW50VHlwZTticmVhaztjYXNlIjxPdmVycmlkZSI6''@;'; put 'put ''dm9pZCAwIT09aWVbdmRbeGUuQ29udGVudFR5cGVdXSYmaWVbdmRbeGUuQ29udGVudFR5cGVdXS5wdXNoKHhlLlBhcnROYW1lKX19KSxpZS54bWxucyE9PVgwLkNUKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBOYW1lc3BhY2U6ICIraWUueG1sbnMpO3JldHVybiBpZS5jYWxjY2hhaW49aWUu''@;'; put 'put ''Y2FsY2NoYWlucy5sZW5ndGg+MD9pZS5jYWxjY2hhaW5zWzBdOiIiLGllLnNzdD1pZS5zdHJzLmxlbmd0aD4wP2llLnN0cnNbMF06IiIsaWUuc3R5bGU9aWUuc3R5bGVzLmxlbmd0aD4wP2llLnN0eWxlc1swXToiIixpZS5jb25uPWllLmNvbm5zLmxlbmd0aD4wP2llLmNvbm5zWzBdOiIiLGll''@;'; put 'put ''LmRlZmF1bHRzPVgsZGVsZXRlIGllLmNhbGNjaGFpbnMsaWV9KFVuKEgsIltDb250ZW50X1R5cGVzXS54bWwiKSkseGU9ITE7aWYoMD09PXdlLndvcmtib29rcy5sZW5ndGgmJnNuKEgsWmU9InhsL3dvcmtib29rLnhtbCIsITApJiZ3ZS53b3JrYm9va3MucHVzaChaZSksMD09PXdlLndvcmti''@;'; put 'put ''b29rcy5sZW5ndGgpe2lmKCFzbihILFplPSJ4bC93b3JrYm9vay5iaW4iLCEwKSl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIHdvcmtib29rIik7d2Uud29ya2Jvb2tzLnB1c2goWmUpLHhlPSEwfSJiaW4iPT13ZS53b3JrYm9va3NbMF0uc2xpY2UoLTMpJiYoeGU9ITApO3ZhciBq''@;'; put 'put ''ZT17fSxZZT17fTtpZighaWUuYm9va1NoZWV0cyYmIWllLmJvb2tQcm9wcyl7aWYoT2Q9W10sd2Uuc3N0KXRyeXtPZD1mdW5jdGlvbiBDUChILGllLFgpe3JldHVybiIuYmluIj09PWllLnNsaWNlKC00KT9mdW5jdGlvbiB4aChILGllKXt2YXIgWD1bXSx3ZT0hMTtyZXR1cm4gSDEoSCxmdW5j''@;'; put 'put ''dGlvbihGZSxaZSxqZSl7c3dpdGNoKGplKXtjYXNlIDE1OTpYLkNvdW50PUZlWzBdLFguVW5pcXVlPUZlWzFdO2JyZWFrO2Nhc2UgMTk6WC5wdXNoKEZlKTticmVhaztjYXNlIDE2MDpyZXR1cm4hMDtjYXNlIDM1OndlPSEwO2JyZWFrO2Nhc2UgMzY6d2U9ITE7YnJlYWs7ZGVmYXVsdDppZiha''@;'; put 'put ''ZS5pbmRleE9mKCJCZWdpbiIpPjB8fFplLmluZGV4T2YoIkVuZCIpLCF3ZXx8aWUuV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgIitqZSsiICIrWmUpfX0pLFh9KEgsWCk6ZnVuY3Rpb24gV28oSCxpZSl7dmFyIFg9W10sd2U9IiI7aWYoIUgpcmV0dXJuIFg7dmFyIHhl''@;'; put 'put ''PUgubWF0Y2goa2EpO2lmKHhlKXt3ZT14ZVsyXS5yZXBsYWNlKHkzLCIiKS5zcGxpdChRZik7Zm9yKHZhciBGZT0wO0ZlIT13ZS5sZW5ndGg7KytGZSl7dmFyIFplPSR1KHdlW0ZlXS50cmltKCksaWUpO251bGwhPVplJiYoWFtYLmxlbmd0aF09WmUpfXhlPWVuKHhlWzFdKSxYLkNvdW50PXhl''@;'; put 'put ''LmNvdW50LFguVW5pcXVlPXhlLnVuaXF1ZUNvdW50fXJldHVybiBYfShILFgpfShzbihILGgxKHdlLnNzdCkpLHdlLnNzdCxpZSl9Y2F0Y2goaGkpe2lmKGllLldURil0aHJvdyBoaX1pZS5jZWxsU3R5bGVzJiZ3ZS50aGVtZXMubGVuZ3RoJiYoamU9ZnVuY3Rpb24gUXgoSCxpZSxYKXtyZXR1''@;'; put 'put ''cm4gSDkoSCxYKX0oVW4oSCx3ZS50aGVtZXNbMF0ucmVwbGFjZSgvXlwvLywiIiksITApfHwiIiwwLGllKSksd2Uuc3R5bGUmJihZZT1mdW5jdGlvbiBfUChILGllLFgsd2Upe3JldHVybiIuYmluIj09PWllLnNsaWNlKC00KT9mdW5jdGlvbiBDRShILGllLFgpe3ZhciB3ZT17TnVtYmVyRm10''@;'; put 'put ''OltdfTtmb3IodmFyIHhlIGluIEYuX3RhYmxlKXdlLk51bWJlckZtdFt4ZV09Ri5fdGFibGVbeGVdO3dlLkNlbGxYZj1bXSx3ZS5Gb250cz1bXSx3ZS5GaWxscz1bXSx3ZS5Cb3JkZXJzPVtdO3ZhciBGZT1bXSxaZT0hMTtyZXR1cm4gSDEoSCxmdW5jdGlvbihZZSxNdCx4dCl7c3dpdGNoKHh0''@;'; put 'put ''KXtjYXNlIDQ0OndlLk51bWJlckZtdFtZZVswXV09WWVbMV0sRi5sb2FkKFllWzFdLFllWzBdKTticmVhaztjYXNlIDQzOndtKFllLmNvbG9yLGllKSx3ZS5Gb250cy5wdXNoKFllKTticmVhaztjYXNlIDEwMjU6Y2FzZSA0ODpjYXNlIDUwNzpjYXNlIDU3MjpjYXNlIDQ3NTpjYXNlIDExNzE6''@;'; put 'put ''Y2FzZSAyMTAyOmNhc2UgMTEzMDpjYXNlIDUxMjpjYXNlIDIwOTU6Y2FzZSAzMDcyOmJyZWFrO2Nhc2UgNDU6WWUuZmdDb2xvciYmd20oWWUuZmdDb2xvcixpZSksWWUuYmdDb2xvciYmd20oWWUuYmdDb2xvcixpZSksd2UuRmlsbHMucHVzaChZZSk7YnJlYWs7Y2FzZSA0NjpbInRvcCIsImJv''@;'; put 'put ''dHRvbSIsImxlZnQiLCJyaWdodCIsImRpYWciXS5mb3JFYWNoKGZ1bmN0aW9uKFJ0KXtZZVtSdF0mJlllW1J0XS5jb2xvciYmd20oWWVbUnRdLmNvbG9yLGllKX0pLHdlLkJvcmRlcnMucHVzaChZZSk7YnJlYWs7Y2FzZSA0NzoiQnJ0QmVnaW5DZWxsWEZzIj09RmVbRmUubGVuZ3RoLTFdJiZ3''@;'; put 'put ''ZS5DZWxsWGYucHVzaChZZSk7YnJlYWs7Y2FzZSAzNTpaZT0hMDticmVhaztjYXNlIDM2OlplPSExO2JyZWFrO2Nhc2UgMzc6RmUucHVzaChNdCksWmU9ITA7YnJlYWs7Y2FzZSAzODpGZS5wb3AoKSxaZT0hMTticmVhaztkZWZhdWx0OmlmKChNdHx8IiIpLmluZGV4T2YoIkJlZ2luIik+MClG''@;'; put 'put ''ZS5wdXNoKE10KTtlbHNlIGlmKChNdHx8IiIpLmluZGV4T2YoIkVuZCIpPjApRmUucG9wKCk7ZWxzZSBpZighWmV8fFguV1RGJiYiQnJ0QUNCZWdpbiIhPUZlW0ZlLmxlbmd0aC0xXSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3JkICIreHQrIiAiK010KX19KSwod2UuRm9udHN8''@;'; put 'put ''fFtdKVswXSYmUzMod2UuRm9udHNbMF0pLHdlfShILFgsd2UpOkI5KEgsWCx3ZSl9KHNuKEgsaDEod2Uuc3R5bGUpKSx3ZS5zdHlsZSxqZSxpZSkpfXZhciBNdD13ZS5saW5rcy5tYXAoZnVuY3Rpb24oaGkpe3RyeXt2YXIgTnI9UHQoVW4oSCxJdChoMShoaSkpKSxoaSk7cmV0dXJuIGZ1bmN0''@;'; put 'put ''aW9uIEpfKEgsaWUsWCx3ZSl7cmV0dXJuIi5iaW4iPT09WC5zbGljZSgtNCk/ZnVuY3Rpb24gd2YoSCxpZSxYLHdlKXtpZighSClyZXR1cm4gSDt2YXIgeGU9d2V8fHt9LEZlPSExO0gxKEgsZnVuY3Rpb24oWWUsTXQseHQpe3N3aXRjaCh4dCl7Y2FzZSAzNTk6Y2FzZSAzNjM6Y2FzZSAzNjQ6''@;'; put 'put ''Y2FzZSAzNjY6Y2FzZSAzNjc6Y2FzZSAzNjg6Y2FzZSAzNjk6Y2FzZSAzNzA6Y2FzZSAzNzE6Y2FzZSA0NzI6Y2FzZSA1Nzc6Y2FzZSA1Nzg6Y2FzZSA1Nzk6Y2FzZSA1ODA6Y2FzZSA1ODE6Y2FzZSA1ODI6Y2FzZSA1ODM6Y2FzZSA1ODQ6Y2FzZSA1ODU6Y2FzZSA1ODY6Y2FzZSA1ODc6YnJl''@;'; put 'put ''YWs7Y2FzZSAzNTpGZT0hMDticmVhaztjYXNlIDM2OkZlPSExO2JyZWFrO2RlZmF1bHQ6aWYoISgoTXR8fCIiKS5pbmRleE9mKCJCZWdpbiIpPjApJiYhKChNdHx8IiIpLmluZGV4T2YoIkVuZCIpPjApJiYoIUZlfHx4ZS5XVEYpKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQg''@;'; put 'put ''Iit4dC50b1N0cmluZygxNikrIiAiK010KX19LHhlKX0oSCwwLDAsd2UpOmZ1bmN0aW9uIEg0KEgsaWUsWCx3ZSl7dmFyIHhlPXdlfHx7fSxGZT17U2hlZXROYW1lczpbXSxTaGVldHM6e319LGplPSExLFllPXt9LE10PS0xLHh0PS0xLFJ0PXtzOntyOjAsYzowfSxlOntyOi0xLGM6LTF9fSxV''@;'; put 'put ''dD17fSxubj0wO3JldHVybihIfHwiIikucmVwbGFjZShHdCxmdW5jdGlvbihDbixEdCl7dmFyIHp0PWVuKENuKTtzd2l0Y2goSW4oenRbMF0pKXtjYXNlIjw/eG1sIjpjYXNlIjxleHRlcm5hbExpbmsiOmNhc2UiPC9leHRlcm5hbExpbms+IjpjYXNlIjwvZXh0ZXJuYWxCb29rPiI6Y2FzZSI8''@;'; put 'put ''c2hlZXROYW1lcyI6Y2FzZSI8c2hlZXROYW1lcz4iOmNhc2UiPC9zaGVldE5hbWVzPiI6Y2FzZSI8c2hlZXREYXRhU2V0PiI6Y2FzZSI8c2hlZXREYXRhU2V0Lz4iOmNhc2UiPC9zaGVldERhdGFTZXQ+IjpjYXNlIjwvcm93PiI6YnJlYWs7Y2FzZSI8ZXh0ZXJuYWxCb29rIjpjYXNlIjxleHRl''@;'; put 'put ''cm5hbEJvb2s+IjpGZS5UYXJnZXQ9aWVbIiFpZCJdW3p0LmlkXS5UYXJnZXQsRmUuTWlzc2luZz1pZVsiIWlkIl1benQuaWRdLlR5cGU9PWR0LlhNSVNTO2JyZWFrO2Nhc2UiPHNoZWV0TmFtZSI6RmUuU2hlZXROYW1lcy5wdXNoKGdyKFcwKHp0LnZhbCkpKTticmVhaztjYXNlIjxzaGVldERh''@;'; put 'put ''dGEiOlllPXt9LEZlLlNoZWV0c1tGZS5TaGVldE5hbWVzW3p0LnNoZWV0SWRdXT1EaSh6dC5yZWZyZXNoRXJyb3J8fCIwIik/bnVsbDpZZTticmVhaztjYXNlIjwvc2hlZXREYXRhPiI6UnQuZS5jPj0wJiYoWWVbIiFyZWYiXT1mYShSdCkpO2JyZWFrO2Nhc2UiPHJvdyI6Y2FzZSI8cm93PiI6''@;'; put 'put ''enQucj9NdD1wYXJzZUludCh6dC5yLDEwKS0xOk10KysseHQ9LTE7YnJlYWs7Y2FzZSI8Y2VsbCI6Y2FzZSI8Y2VsbD4iOnp0LnI/eHQ9dWwoenQucikuYzorK3h0LFV0LnQ9enQudHx8Im4iLCJzdHIiPT1VdC50JiYoVXQudD0icyIpO2JyZWFrO2Nhc2UiPC9jZWxsPiI6UnQuZS5yPE10JiYo''@;'; put 'put ''UnQuZS5yPU10KSxSdC5lLmM8eHQmJihSdC5lLmM9eHQpLFllW1kwKHtyOk10LGM6eHR9KV09VXQsVXQ9e307YnJlYWs7Y2FzZSI8diI6Y2FzZSI8dj4iOm5uPUNuLmxlbmd0aCtEdDticmVhaztjYXNlIjwvdj4iOnZhciBQbj1ncihILnNsaWNlKG5uLER0KSk7VXQudj0ibiI9PVV0LnQ/cGFy''@;'; put 'put ''c2VGbG9hdChQbik6UG47YnJlYWs7Y2FzZSI8di8+IjpVdC52PSIiO2JyZWFrO2Nhc2UiPGRlZmluZWROYW1lcz4iOmplPSEwO2JyZWFrO2Nhc2UiPC9kZWZpbmVkTmFtZXM+IjpqZT0hMTticmVhaztkZWZhdWx0OmlmKCFqZSYmeGUuV1RGKXRocm93InVucmVjb2duaXplZCAiK3p0WzBdKyIg''@;'; put 'put ''aW4gZXh0ZXJuYWwgbGluayJ9fSksRmV9KEgsaWUsMCx3ZSl9KHNuKEgsaDEoaGkpKSxOcixoaSxpZSl9Y2F0Y2goa2kpe319KSx4dD1mdW5jdGlvbiBZeChILGllLFgpe3JldHVybiIuYmluIj09PWllLnNsaWNlKC00KT9mdW5jdGlvbiBqaShILGllKXt2YXIgWD17QXBwVmVyc2lvbjp7fSxX''@;'; put 'put ''QlByb3BzOnt9LFdCVmlldzpbXSxTaGVldHM6W10sQ2FsY1ByOnt9LHhtbG5zOiIifSx3ZT1bXSx4ZT0hMTtpZXx8KGllPXt9KSxpZS5iaWZmPTEyO3ZhciBGZT1bXSxaZT1bW11dO3JldHVybiBaZS5TaGVldE5hbWVzPVtdLFplLlhUST1bXSx4NVsxNl09e246IkJydEZSVEFyY2hJRCQiLGY6''@;'; put 'put ''R219LEgxKEgsZnVuY3Rpb24oWWUsTXQseHQpe3N3aXRjaCh4dCl7Y2FzZSAxNTY6WmUuU2hlZXROYW1lcy5wdXNoKFllLm5hbWUpLFguU2hlZXRzLnB1c2goWWUpO2JyZWFrO2Nhc2UgMTUzOlguV0JQcm9wcz1ZZTticmVhaztjYXNlIDM5Om51bGwhPVllLlNoZWV0JiYoaWUuU0lEPVllLlNo''@;'; put 'put ''ZWV0KSxZZS5SZWY9VzEoWWUuUHRnLG51bGwsbnVsbCxaZSxpZSksZGVsZXRlIGllLlNJRCxkZWxldGUgWWUuUHRnLEZlLnB1c2goWWUpO2JyZWFrO2Nhc2UgMTAzNjpjYXNlIDM2MTpjYXNlIDIwNzE6Y2FzZSAxNTg6Y2FzZSAxNDM6Y2FzZSA2NjQ6Y2FzZSAzNTM6Y2FzZSAzMDcyOmNhc2Ug''@;'; put 'put ''MzA3MzpjYXNlIDUzNDpjYXNlIDY3NzpjYXNlIDE1NzpjYXNlIDYxMDpjYXNlIDIwNTA6Y2FzZSAxNTU6Y2FzZSA1NDg6Y2FzZSA2NzY6Y2FzZSAxMjg6Y2FzZSA2NjU6Y2FzZSAyMTI4OmNhc2UgMjEyNTpjYXNlIDU0OTpjYXNlIDIwNTM6Y2FzZSA1OTY6Y2FzZSAyMDc2OmNhc2UgMjA3NTpj''@;'; put 'put ''YXNlIDIwODI6Y2FzZSAzOTc6Y2FzZSAxNTQ6Y2FzZSAxMTE3OmNhc2UgNTUzOmNhc2UgMjA5MTpjYXNlIDE2OmJyZWFrO2Nhc2UgMzU3OmNhc2UgMzU4OmNhc2UgMzU1OmNhc2UgNjY3OlplWzBdLmxlbmd0aD9aZS5wdXNoKFt4dCxZZV0pOlplWzBdPVt4dCxZZV0sWmVbWmUubGVuZ3RoLTFd''@;'; put 'put ''LlhUST1bXTticmVhaztjYXNlIDM2MjowPT09WmUubGVuZ3RoJiYoWmVbMF09W10sWmVbMF0uWFRJPVtdKSxaZVtaZS5sZW5ndGgtMV0uWFRJPVplW1plLmxlbmd0aC0xXS5YVEkuY29uY2F0KFllKSxaZS5YVEk9WmUuWFRJLmNvbmNhdChZZSk7YnJlYWs7Y2FzZSAzNTpjYXNlIDM3OndlLnB1''@;'; put 'put ''c2goTXQpLHhlPSEwO2JyZWFrO2Nhc2UgMzY6Y2FzZSAzODp3ZS5wb3AoKSx4ZT0hMTticmVhaztkZWZhdWx0OmlmKCEoKE10fHwiIikuaW5kZXhPZigiQmVnaW4iKT4wKSYmISgoTXR8fCIiKS5pbmRleE9mKCJFbmQiKT4wKSYmKCF4ZXx8aWUuV1RGJiYiQnJ0QUNCZWdpbiIhPXdlW3dlLmxl''@;'; put 'put ''bmd0aC0xXSYmIkJydEZSVEJlZ2luIiE9d2Vbd2UubGVuZ3RoLTFdKSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3JkICIreHQrIiAiK010KX19LGllKSxxZihYKSxYLk5hbWVzPUZlLFguc3VwYm9va3M9WmUsWH0oSCxYKTpmdW5jdGlvbiB6XyhILGllKXtpZighSCl0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIGZpbGUiKTt2YXIgWD17QXBwVmVyc2lvbjp7fSxXQlByb3BzOnt9LFdCVmlldzpbXSxTaGVldHM6W10sQ2FsY1ByOnt9LE5hbWVzOltdLEV4dGVybjpbXSx4bWxuczoiIn0sd2U9ITEseGU9InhtbG5zIixGZT17fSxaZT0wO2lmKEgucmVwbGFjZShH''@;'; put 'put ''dCxmdW5jdGlvbihZZSxNdCl7dmFyIHh0PWVuKFllKTtzd2l0Y2goSW4oeHRbMF0pKXtjYXNlIjw/eG1sIjpjYXNlIjwvd29ya2Jvb2s+IjpjYXNlIjxmaWxlVmVyc2lvbi8+IjpjYXNlIjwvZmlsZVZlcnNpb24+IjpjYXNlIjxmaWxlU2hhcmluZy8+IjpjYXNlIjwvd29ya2Jvb2tQcj4iOmNh''@;'; put 'put ''c2UiPHdvcmtib29rUHJvdGVjdGlvbi8+IjpjYXNlIjxib29rVmlld3MiOmNhc2UiPGJvb2tWaWV3cz4iOmNhc2UiPC9ib29rVmlld3M+IjpjYXNlIjwvd29ya2Jvb2tWaWV3PiI6Y2FzZSI8c2hlZXRzIjpjYXNlIjxzaGVldHM+IjpjYXNlIjwvc2hlZXRzPiI6Y2FzZSI8L3NoZWV0PiI6Y2Fz''@;'; put 'put ''ZSI8ZnVuY3Rpb25Hcm91cHMiOmNhc2UiPGZ1bmN0aW9uR3JvdXBzLz4iOmNhc2UiPGZ1bmN0aW9uR3JvdXAiOmNhc2UiPGV4dGVybmFsUmVmZXJlbmNlcyI6Y2FzZSI8L2V4dGVybmFsUmVmZXJlbmNlcz4iOmNhc2UiPGV4dGVybmFsUmVmZXJlbmNlcz4iOmNhc2UiPGRlZmluZWROYW1lcy8+''@;'; put 'put ''IjpjYXNlIjxkZWZpbmVkTmFtZS8+IjpjYXNlIjwvY2FsY1ByPiI6Y2FzZSI8b2xlU2l6ZSI6Y2FzZSI8Y3VzdG9tV29ya2Jvb2tWaWV3cz4iOmNhc2UiPC9jdXN0b21Xb3JrYm9va1ZpZXdzPiI6Y2FzZSI8Y3VzdG9tV29ya2Jvb2tWaWV3cyI6Y2FzZSI8Y3VzdG9tV29ya2Jvb2tWaWV3Ijpj''@;'; put 'put ''YXNlIjwvY3VzdG9tV29ya2Jvb2tWaWV3PiI6Y2FzZSI8cGl2b3RDYWNoZXM+IjpjYXNlIjwvcGl2b3RDYWNoZXM+IjpjYXNlIjxwaXZvdENhY2hlcyI6Y2FzZSI8cGl2b3RDYWNoZSI6Y2FzZSI8c21hcnRUYWdQciI6Y2FzZSI8c21hcnRUYWdQci8+IjpjYXNlIjxzbWFydFRhZ1R5cGVzIjpj''@;'; put 'put ''YXNlIjxzbWFydFRhZ1R5cGVzPiI6Y2FzZSI8L3NtYXJ0VGFnVHlwZXM+IjpjYXNlIjxzbWFydFRhZ1R5cGUiOmNhc2UiPHdlYlB1Ymxpc2hpbmciOmNhc2UiPHdlYlB1Ymxpc2hpbmcvPiI6Y2FzZSI8ZmlsZVJlY292ZXJ5UHIiOmNhc2UiPGZpbGVSZWNvdmVyeVByLz4iOmNhc2UiPHdlYlB1''@;'; put 'put ''Ymxpc2hPYmplY3RzPiI6Y2FzZSI8d2ViUHVibGlzaE9iamVjdHMiOmNhc2UiPC93ZWJQdWJsaXNoT2JqZWN0cz4iOmNhc2UiPHdlYlB1Ymxpc2hPYmplY3QiOmNhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmNhc2UiPGV4dExzdC8+IjpjYXNlIjxBcmNoSUQi''@;'; put 'put ''OmNhc2UiPHJldmlzaW9uUHRyIjpicmVhaztjYXNlIjx3b3JrYm9vayI6WWUubWF0Y2goengpJiYoeGU9InhtbG5zIitZZS5tYXRjaCgvPChcdyspOi8pWzFdKSxYLnhtbG5zPXh0W3hlXTticmVhaztjYXNlIjxmaWxlVmVyc2lvbiI6ZGVsZXRlIHh0WzBdLFguQXBwVmVyc2lvbj14dDticmVh''@;'; put 'put ''aztjYXNlIjxmaWxlU2hhcmluZyI6WC5Nb2RpZnk9e3VzZXI6eHQudXNlck5hbWUsd2FybjpEaSh4dC5yZWFkT25seVJlY29tbWVuZGVkfHwiZmFsc2UiKX0sKHh0LmFsZ29yaXRobU5hbWV8fHh0Lmhhc2hWYWx1ZXx8eHQuc2FsdFZhbHVlfHx4dC5zcGluQ291bnQpJiYoWC5Nb2RpZnkuZW5j''@;'; put 'put ''cnlwdGlvbj17YWxnbzp4dC5hbGdvcml0aG1OYW1lLGhhc2g6eHQuaGFzaFZhbHVlLHNhbHQ6eHQuc2FsdFZhbHVlLHNwaW46K3h0LnNwaW5Db3VudHx8MWU1fSk7YnJlYWs7Y2FzZSI8d29ya2Jvb2tQciI6Y2FzZSI8d29ya2Jvb2tQci8+IjpGaS5mb3JFYWNoKGZ1bmN0aW9uKFV0KXtpZihu''@;'; put 'put ''dWxsIT14dFtVdFswXV0pc3dpdGNoKFV0WzJdKXtjYXNlImJvb2wiOlguV0JQcm9wc1tVdFswXV09RGkoeHRbVXRbMF1dKTticmVhaztjYXNlImludCI6WC5XQlByb3BzW1V0WzBdXT1wYXJzZUludCh4dFtVdFswXV0sMTApO2JyZWFrO2RlZmF1bHQ6WC5XQlByb3BzW1V0WzBdXT14dFtVdFsw''@;'; put 'put ''XV19fSkseHQuY29kZU5hbWUmJihYLldCUHJvcHMuQ29kZU5hbWU9VzAoeHQuY29kZU5hbWUpKTticmVhaztjYXNlIjx3b3JrYm9va1Byb3RlY3Rpb24iOnZhciBSdD1YLlByb3RlY3Rpb258fHt9O1J0LmxvY2tTdHJ1Y3R1cmU9RGkoeHQubG9ja1N0cnVjdHVyZXx8ImZhbHNlIiksUnQubG9j''@;'; put 'put ''a1dpbmRvd3M9RGkoeHQubG9ja1dpbmRvd3N8fCJmYWxzZSIpLHh0Lndvcmtib29rQWxnb3JpdGhtTmFtZSYmKFJ0LmVuY3J5cHRpb249e2FsZ286eHQud29ya2Jvb2tBbGdvcml0aG1OYW1lLGhhc2g6eHQud29ya2Jvb2tIYXNoVmFsdWUsc2FsdDp4dC53b3JrYm9va1NhbHRWYWx1ZSxzcGlu''@;'; put 'put ''Oit4dC53b3JrYm9va1NwaW5Db3VudHx8MWU1fSksWC5Qcm90ZWN0aW9uPVJ0O2JyZWFrO2Nhc2UiPHdvcmtib29rVmlldyI6Y2FzZSI8d29ya2Jvb2tWaWV3Lz4iOmRlbGV0ZSB4dFswXSxYLldCVmlldy5wdXNoKHh0KTticmVhaztjYXNlIjxzaGVldCI6c3dpdGNoKHh0LnN0YXRlKXtjYXNl''@;'; put 'put ''ImhpZGRlbiI6eHQuSGlkZGVuPTE7YnJlYWs7Y2FzZSJ2ZXJ5SGlkZGVuIjp4dC5IaWRkZW49MjticmVhaztkZWZhdWx0Onh0LkhpZGRlbj0wfWRlbGV0ZSB4dC5zdGF0ZSx4dC5uYW1lPWdyKFcwKHh0Lm5hbWUpKSxkZWxldGUgeHRbMF0sWC5TaGVldHMucHVzaCh4dCk7YnJlYWs7Y2FzZSI8''@;'; put 'put ''ZXh0ZXJuYWxSZWZlcmVuY2UiOlguRXh0ZXJuLnB1c2goeHQuaWQpO2JyZWFrO2Nhc2UiPGRlZmluZWROYW1lcz4iOmNhc2UiPGRlZmluZWROYW1lcyI6Y2FzZSI8ZXh0IjpjYXNlIjxBbHRlcm5hdGVDb250ZW50IjpjYXNlIjxBbHRlcm5hdGVDb250ZW50PiI6d2U9ITA7YnJlYWs7Y2FzZSI8''@;'; put 'put ''L2RlZmluZWROYW1lcz4iOmNhc2UiPC9leHQ+IjpjYXNlIjwvQWx0ZXJuYXRlQ29udGVudD4iOndlPSExO2JyZWFrO2Nhc2UiPGRlZmluZWROYW1lIjooRmU9e30pLk5hbWU9VzAoeHQubmFtZSkseHQuY29tbWVudCYmKEZlLkNvbW1lbnQ9eHQuY29tbWVudCkseHQubG9jYWxTaGVldElkJiYo''@;'; put 'put ''RmUuU2hlZXQ9K3h0LmxvY2FsU2hlZXRJZCksRGkoeHQuaGlkZGVufHwiMCIpJiYoRmUuSGlkZGVuPSEwKSxaZT1NdCtZZS5sZW5ndGg7YnJlYWs7Y2FzZSI8L2RlZmluZWROYW1lPiI6RmUuUmVmPWdyKFcwKEguc2xpY2UoWmUsTXQpKSksWC5OYW1lcy5wdXNoKEZlKTticmVhaztjYXNlIjxj''@;'; put 'put ''YWxjUHIiOmNhc2UiPGNhbGNQci8+IjpkZWxldGUgeHRbMF0sWC5DYWxjUHI9eHQ7YnJlYWs7ZGVmYXVsdDppZighd2UmJmllLldURil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK3h0WzBdKyIgaW4gd29ya2Jvb2siKX1yZXR1cm4gWWV9KSwtMT09PVgwLm1haW4uaW5kZXhPZihY''@;'; put 'put ''LnhtbG5zKSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gTmFtZXNwYWNlOiAiK1gueG1sbnMpO3JldHVybiBxZihYKSxYfShILFgpfShzbihILGgxKHdlLndvcmtib29rc1swXSkpLHdlLndvcmtib29rc1swXSxpZSksUnQ9e30sVXQ9IiI7d2UuY29yZXByb3BzLmxlbmd0aCYmKChVdD1zbihI''@;'; put 'put ''LGgxKHdlLmNvcmVwcm9wc1swXSksITApKSYmKFJ0PWxzKFV0KSksMCE9PXdlLmV4dHByb3BzLmxlbmd0aCYmKFV0PXNuKEgsaDEod2UuZXh0cHJvcHNbMF0pLCEwKSkmJmZ1bmN0aW9uIEJNKEgsaWUsWCl7dmFyIHdlPXt9O2llfHwoaWU9e30pLEg9VzAoSCksbzIuZm9yRWFjaChmdW5jdGlv''@;'; put 'put ''bih4ZSl7dmFyIEZlPShILm1hdGNoKFFpKHhlWzBdKSl8fFtdKVsxXTtzd2l0Y2goeGVbMl0pe2Nhc2Uic3RyaW5nIjpGZSYmKGllW3hlWzFdXT1ncihGZSkpO2JyZWFrO2Nhc2UiYm9vbCI6aWVbeGVbMV1dPSJ0cnVlIj09PUZlO2JyZWFrO2Nhc2UicmF3Ijp2YXIgWmU9SC5tYXRjaChuZXcg''@;'; put 'put ''UmVnRXhwKCI8Iit4ZVswXSsiW14+XSo+KFtcXHNcXFNdKj8pPC8iK3hlWzBdKyI+IikpO1plJiZaZS5sZW5ndGg+MCYmKHdlW3hlWzFdXT1aZVsxXSl9fSksd2UuSGVhZGluZ1BhaXJzJiZ3ZS5UaXRsZXNPZlBhcnRzJiZ5cyh3ZS5IZWFkaW5nUGFpcnMsd2UuVGl0bGVzT2ZQYXJ0cyxpZSxY''@;'; put 'put ''KX0oVXQsUnQsaWUpKTt2YXIgbm49e307KCFpZS5ib29rU2hlZXRzfHxpZS5ib29rUHJvcHMpJiYwIT09d2UuY3VzdHByb3BzLmxlbmd0aCYmKFV0PVVuKEgsaDEod2UuY3VzdHByb3BzWzBdKSwhMCkpJiYobm49ZnVuY3Rpb24gb2IoSCxpZSl7dmFyIFg9e30sd2U9IiIseGU9SC5tYXRjaCht''@;'; put 'put ''OSk7aWYoeGUpZm9yKHZhciBGZT0wO0ZlIT14ZS5sZW5ndGg7KytGZSl7dmFyIFplPXhlW0ZlXSxqZT1lbihaZSk7c3dpdGNoKGplWzBdKXtjYXNlIjw/eG1sIjpjYXNlIjxQcm9wZXJ0aWVzIjpicmVhaztjYXNlIjxwcm9wZXJ0eSI6d2U9Z3IoamUubmFtZSk7YnJlYWs7Y2FzZSI8L3Byb3Bl''@;'; put 'put ''cnR5PiI6d2U9bnVsbDticmVhaztkZWZhdWx0OmlmKDA9PT1aZS5pbmRleE9mKCI8dnQ6Iikpe3ZhciBZZT1aZS5zcGxpdCgiPiIpLE10PVllWzBdLnNsaWNlKDQpLHh0PVllWzFdO3N3aXRjaChNdCl7Y2FzZSJscHN0ciI6Y2FzZSJic3RyIjpjYXNlImxwd3N0ciI6Y2FzZSJjeSI6Y2FzZSJl''@;'; put 'put ''cnJvciI6WFt3ZV09Z3IoeHQpO2JyZWFrO2Nhc2UiYm9vbCI6WFt3ZV09RGkoeHQpO2JyZWFrO2Nhc2UiaTEiOmNhc2UiaTIiOmNhc2UiaTQiOmNhc2UiaTgiOmNhc2UiaW50IjpjYXNlInVpbnQiOlhbd2VdPXBhcnNlSW50KHh0LDEwKTticmVhaztjYXNlInI0IjpjYXNlInI4IjpjYXNlImRl''@;'; put 'put ''Y2ltYWwiOlhbd2VdPXBhcnNlRmxvYXQoeHQpO2JyZWFrO2Nhc2UiZmlsZXRpbWUiOmNhc2UiZGF0ZSI6WFt3ZV09ZG4oeHQpO2JyZWFrO2RlZmF1bHQ6aWYoIi8iPT1NdC5zbGljZSgtMSkpYnJlYWs7aWUuV1RGJiYidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUud2Fybigi''@;'; put 'put ''VW5leHBlY3RlZCIsWmUsTXQsWWUpfX1lbHNlIGlmKCI8LyIhPT1aZS5zbGljZSgwLDIpJiZpZS5XVEYpdGhyb3cgbmV3IEVycm9yKFplKX19cmV0dXJuIFh9KFV0LGllKSk7dmFyIENuPXt9O2lmKChpZS5ib29rU2hlZXRzfHxpZS5ib29rUHJvcHMpJiYoeHQuU2hlZXRzP0ZlPXh0LlNoZWV0''@;'; put 'put ''cy5tYXAoZnVuY3Rpb24oTnIpe3JldHVybiBOci5uYW1lfSk6UnQuV29ya3NoZWV0cyYmUnQuU2hlZXROYW1lcy5sZW5ndGg+MCYmKEZlPVJ0LlNoZWV0TmFtZXMpLGllLmJvb2tQcm9wcyYmKENuLlByb3BzPVJ0LENuLkN1c3Rwcm9wcz1ubiksaWUuYm9va1NoZWV0cyYmdm9pZCAwIT09RmUm''@;'; put 'put ''JihDbi5TaGVldE5hbWVzPUZlKSxpZS5ib29rU2hlZXRzP0NuLlNoZWV0TmFtZXM6aWUuYm9va1Byb3BzKSlyZXR1cm4gQ247RmU9e307dmFyIER0PXt9O2llLmJvb2tEZXBzJiZ3ZS5jYWxjY2hhaW4mJihEdD1mdW5jdGlvbiBKeChILGllLFgpe3JldHVybiIuYmluIj09PWllLnNsaWNlKC00''@;'; put 'put ''KT9mdW5jdGlvbiBGYihILGllLFgpe3ZhciB3ZT1bXTtyZXR1cm4gSDEoSCxmdW5jdGlvbihaZSxqZSxZZSl7aWYoNjM9PT1ZZSl3ZS5wdXNoKFplKTtlbHNlIGlmKCEoKGplfHwiIikuaW5kZXhPZigiQmVnaW4iKT4wfHwoamV8fCIiKS5pbmRleE9mKCJFbmQiKT4wKSl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIlVuZXhwZWN0ZWQgcmVjb3JkICIrWWUrIiAiK2plKX0pLHdlfShIKTpmdW5jdGlvbiBMRShIKXt2YXIgaWU9W107aWYoIUgpcmV0dXJuIGllO3ZhciBYPTE7cmV0dXJuKEgubWF0Y2goR3QpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih3ZSl7dmFyIHhlPWVuKHdlKTtzd2l0Y2goeGVbMF0p''@;'; put 'put ''e2Nhc2UiPD94bWwiOmNhc2UiPGNhbGNDaGFpbiI6Y2FzZSI8Y2FsY0NoYWluPiI6Y2FzZSI8L2NhbGNDaGFpbj4iOmJyZWFrO2Nhc2UiPGMiOmRlbGV0ZSB4ZVswXSx4ZS5pP1g9eGUuaTp4ZS5pPVgsaWUucHVzaCh4ZSl9fSksaWV9KEgpfShzbihILGgxKHdlLmNhbGNjaGFpbikpLHdlLmNh''@;'; put 'put ''bGNjaGFpbikpO3ZhciBUbixPbix6dD0wLFBuPXt9LFluPXh0LlNoZWV0cztSdC5Xb3Jrc2hlZXRzPVluLmxlbmd0aCxSdC5TaGVldE5hbWVzPVtdO2Zvcih2YXIgTXI9MDtNciE9WW4ubGVuZ3RoOysrTXIpUnQuU2hlZXROYW1lc1tNcl09WW5bTXJdLm5hbWU7dmFyIGFpPXhlPyJiaW4iOiJ4''@;'; put 'put ''bWwiLHlyPXdlLndvcmtib29rc1swXS5sYXN0SW5kZXhPZigiLyIpLGFyPSh3ZS53b3JrYm9va3NbMF0uc2xpY2UoMCx5cisxKSsiX3JlbHMvIit3ZS53b3JrYm9va3NbMF0uc2xpY2UoeXIrMSkrIi5yZWxzIikucmVwbGFjZSgvXlwvLywiIik7S24oSCxhcil8fChhcj0ieGwvX3JlbHMvd29y''@;'; put 'put ''a2Jvb2suIithaSsiLnJlbHMiKTt2YXIgR3I9UHQoVW4oSCxhciwhMCksYXIpLHpyPUdyLHFyPVtdO0dyJiYoeHQmJnh0LkV4dGVybiYmeHQuRXh0ZXJuLmxlbmd0aCYmeHQuRXh0ZXJuLmZvckVhY2goZnVuY3Rpb24oaGksTnIpe3ZhciBOMD0oIi94bC8iK0dyWyIhaWQiXVtoaV0uVGFyZ2V0''@;'; put 'put ''KS5yZXBsYWNlKC9bXC9dW1wvXS9nLCIvIiksdDA9d2UubGlua3MuaW5kZXhPZihOMCk7dDA+LTEmJihxcltOcl09TXRbdDBdKX0pLHh0JiZkZWxldGUgeHQuRXh0ZXJuKSxHciYmKEdyPWZ1bmN0aW9uIFZzKEgsaWUpe2lmKCFIKXJldHVybiAwO3RyeXtIPWllLm1hcChmdW5jdGlvbih3ZSl7''@;'; put 'put ''cmV0dXJuIHdlLmlkfHwod2UuaWQ9d2Uuc3RyUmVsSUQpLFt3ZS5uYW1lLEhbIiFpZCJdW3dlLmlkXS5UYXJnZXQsTXMoSFsiIWlkIl1bd2UuaWRdLlR5cGUpXX0pfWNhdGNoKFgpe3JldHVybiBudWxsfXJldHVybiBIJiYwIT09SC5sZW5ndGg/SDpudWxsfShHcix4dC5TaGVldHMpKTt2YXIg''@;'; put 'put ''b2k9S24oSCwieGwvd29ya3NoZWV0cy9zaGVldC54bWwiKT8xOjAsY3I9W10sZGk9W107ZTpmb3IoenQ9MDt6dCE9UnQuV29ya3NoZWV0czsrK3p0KXt2YXIgdjA9InNoZWV0IjtpZihHciYmR3JbenRdPyhUbj0ieGwvIitHclt6dF1bMV0ucmVwbGFjZSgvW1wvXT94bFwvLywiIiksS24oSCxU''@;'; put 'put ''bil8fChUbj1Hclt6dF1bMV0pLEtuKEgsVG4pfHwoVG49YXIucmVwbGFjZSgvX3JlbHNcLy4qJC8sIiIpK0dyW3p0XVsxXSksdjA9R3JbenRdWzJdKTpUbj0oVG49InhsL3dvcmtzaGVldHMvc2hlZXQiKyh6dCsxLW9pKSsiLiIrYWkpLnJlcGxhY2UoL3NoZWV0MFwuLywic2hlZXQuIiksT249''@;'; put 'put ''VG4ucmVwbGFjZSgvXiguKikoXC8pKFteXC9dKikkLywiJDEvX3JlbHMvJDMucmVscyIpLGNyLnB1c2goVG4pLGllJiZudWxsIT1pZS5zaGVldHMpc3dpdGNoKHR5cGVvZiBpZS5zaGVldHMpe2Nhc2UibnVtYmVyIjppZih6dCE9aWUuc2hlZXRzKWNvbnRpbnVlIGU7YnJlYWs7Y2FzZSJzdHJp''@;'; put 'put ''bmciOmlmKFJ0LlNoZWV0TmFtZXNbenRdLnRvTG93ZXJDYXNlKCkhPWllLnNoZWV0cy50b0xvd2VyQ2FzZSgpKWNvbnRpbnVlIGU7YnJlYWs7ZGVmYXVsdDppZihBcnJheS5pc0FycmF5JiZBcnJheS5pc0FycmF5KGllLnNoZWV0cykpe2Zvcih2YXIgVWk9MCx0bz0wO3RvIT1pZS5zaGVldHMu''@;'; put 'put ''bGVuZ3RoOysrdG8pIm51bWJlciI9PXR5cGVvZiBpZS5zaGVldHNbdG9dJiZpZS5zaGVldHNbdG9dPT16dCYmKFVpPTEpLCJzdHJpbmciPT10eXBlb2YgaWUuc2hlZXRzW3RvXSYmaWUuc2hlZXRzW3RvXS50b0xvd2VyQ2FzZSgpPT1SdC5TaGVldE5hbWVzW3p0XS50b0xvd2VyQ2FzZSgpJiYo''@;'; put 'put ''VWk9MSk7aWYoIVVpKWNvbnRpbnVlIGV9fWlmKCFpZS5za2lwUGFyc2Upe3ZhciBBMD1YNChILFRuLE9uLFJ0LlNoZWV0TmFtZXNbenRdLHp0LFBuLEZlLHYwLGllLHh0LGplLFllKTtBMCYmQTBbIiFMRFAiXSYmKGRpW3p0XT1BMFsiIUxEUCJdLGRlbGV0ZSBBMFsiIUxEUCJdKX19aWYoInVu''@;'; put 'put ''ZGVmaW5lZCIhPXR5cGVvZiBwYXJzZV9zaGVldF9waXZvdClmb3IoenQ9MDt6dDxENS5sZW5ndGg7Kyt6dClwYXJzZV9zaGVldF9waXZvdC5hcHBseShudWxsLEQ1W3p0XSk7aWYoQ249e0RpcmVjdG9yeTp3ZSxXb3JrYm9vazp4dCxQcm9wczpSdCxDdXN0cHJvcHM6bm4sRGVwczpEdCxTaGVl''@;'; put 'put ''dHM6RmUsU2hlZXROYW1lczpSdC5TaGVldE5hbWVzLFN0cmluZ3M6T2QsU3R5bGVzOlllLFRoZW1lczpqZSxTU0Y6Ri5nZXRfdGFibGUoKX0sIWllLnNraXBQYXJzZSl7aWYoZnVuY3Rpb24gQmIoSCl7IUh8fCFILldvcmtib29rfHwhSC5Xb3JrYm9vay5OYW1lc3x8SC5Xb3JrYm9vay5OYW1l''@;'; put 'put ''cy5mb3JFYWNoKGZ1bmN0aW9uKGllKXtpZihpZS5OYW1lJiYiX3hsbm0uIj09aWUuTmFtZS5zbGljZSgwLDYpJiYoIl94bG5tLlByaW50X0FyZWEiPT1pZS5OYW1lfHwiX3hsbm0uUHJpbnRfVGl0bGVzIj09aWUuTmFtZSkpe3ZhciBYPUguU2hlZXRzW0guU2hlZXROYW1lc1tpZS5TaGVldF1d''@;'; put 'put ''O2lmKFgpe1hbIiFwcmludCJdfHwoWFsiIXByaW50Il09e30pLFhbIiFwcmludCJdLnByb3BzfHwoWFsiIXByaW50Il0ucHJvcHM9e30pO3ZhciB3ZT1YWyIhcHJpbnQiXSx4ZT1pZS5SZWY7aWYoIl94bG5tLlByaW50X0FyZWEiPT1pZS5OYW1lKXt4ZS5pbmRleE9mKCIhIik+LTEmJih4ZT14''@;'; put 'put ''ZS5zbGljZSh4ZS5pbmRleE9mKCIhIikrMSkpO3ZhciBGZT1Gbyh4ZT14ZS5yZXBsYWNlKC9bJF0vZywiIikpO3dlLmFyZWE9RmV9ZWxzZSJfeGxubS5QcmludF9UaXRsZXMiPT1pZS5OYW1lJiYod2UudGl0bGVzPXtzOntyOi0xLGM6LTF9LGU6e3I6LTEsYzotMX19LHhlLnNwbGl0KCIsIiku''@;'; put 'put ''Zm9yRWFjaChmdW5jdGlvbihaZSl7dmFyIFllPUFzKFplLnNsaWNlKFplLmluZGV4T2YoIiEiKSsxKS5yZXBsYWNlKC9bJF0vZywiIikpO1llLnMuYz4tMSYmKHdlLnRpdGxlcy5zLmM9WWUucy5jKSxZZS5lLmM+LTEmJih3ZS50aXRsZXMuZS5jPVllLmUuYyksWWUucy5yPi0xJiYod2UudGl0''@;'; put 'put ''bGVzLnMucj1ZZS5zLnIpLFllLmUucj4tMSYmKHdlLnRpdGxlcy5lLnI9WWUuZS5yKX0pKX19fSl9KENuKSxpZSYmaWUuYm9va0ZpbGVzJiYoQ24ua2V5cz1YLENuLmZpbGVzPUguZmlsZXMpLGllJiZpZS5ib29rVkJBJiYod2UudmJhLmxlbmd0aD4wP0NuLnZiYXJhdz1zbihILGgxKHdlLnZi''@;'; put 'put ''YVswXSksITApOndlLmRlZmF1bHRzJiYiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS52YmFQcm9qZWN0Ij09PXdlLmRlZmF1bHRzLmJpbiYmKENuLnZiYXJhdz1zbihILCJ4bC92YmFQcm9qZWN0LmJpbiIsITApKSksenImJnpyWyIhaWQiXSl7Zm9yKHZhciBiaT1bXSxZcj0xO1lyPD0xMDI0''@;'; put 'put ''OysrWXIpIXpyWyIhaWQiXVsicklkIitZcl18fCF6clsiIWlkIl1bInJJZCIrWXJdLlR5cGV8fC9jdXN0b21YbWwkLy50ZXN0KHpyWyIhaWQiXVsicklkIitZcl0uVHlwZSkmJmJpLnB1c2godW4oenJbIiFpZCJdWyJySWQiK1lyXS5UYXJnZXQsd2Uud29ya2Jvb2tzWzBdKSk7YmkubGVuZ3Ro''@;'; put 'put ''PjAmJihDbi5DdXN0b21YTUw9W10sYmkuZm9yRWFjaChmdW5jdGlvbihoaSl7dmFyIE5yPXtkYXRhOlVuKEgsaDEoaGkpKX0sa2k9SXQoaGkpO3RyeXt2YXIgTjA9UHQoVW4oSCxoMShraSksITApLGtpKTtpZihOMClmb3IodmFyIHQwPTE7dDA8PTEwMjQ7Kyt0MCkhTjBbIiFpZCJdWyJySWQi''@;'; put 'put ''K3QwXXx8IU4wWyIhaWQiXVsicklkIit0MF0uVHlwZXx8L2N1c3RvbVhtbFByb3BzJC8udGVzdChOMFsiIWlkIl1bInJJZCIrdDBdLlR5cGUpJiYoTnIucHJvcHM9VW4oSCxoMSh1bihOMFsiIWlkIl1bInJJZCIrdDBdLlRhcmdldCxoaSkpKSl9Y2F0Y2goaW8pe31Dbi5DdXN0b21YTUwucHVz''@;'; put 'put ''aChOcil9KSl9dmFyIEVpPXduKEgsInhsL21vZGVsL2l0ZW0uZGF0YSIsITApO0VpJiYoQ24ubW9kZWw9RWkpLHdlLmNvbm4mJihDbi5jb25uPXNuKEgsaDEod2UuY29ubiksITApKSxxci5sZW5ndGgmJihDbi5FeHRlcm5hbFdCPXFyKSx4dCYmKHh0LlBQST1SNCl9cmV0dXJuIGllLnRlbXBs''@;'; put 'put ''YXRlJiYoQ24uX3dzcGF0aHM9Y3IsQ24uX3N0eXBhdGg9aDEod2Uuc3R5bGV8fCIiKSxDbi5fd2JwYXRoPWgxKHdlLndvcmtib29rc1swXXx8InhsL3dvcmtib29rLnhtbCIpLENuLl92bWxwYXRocz1kaSxDbi5fd2JyZWxzcGF0aD1hcixDbi5fY3Q9VW4oSCwiW0NvbnRlbnRfVHlwZXNdLnht''@;'; put 'put ''bCIpLENuLmZpbGVzPUguZmlsZXMpLENufWZ1bmN0aW9uICRtKEgsaWUpe3ZhciBYPWllfHx7fTtYLnBhc3N3b3JkfHwoWC5wYXNzd29yZD0iVmVsdmV0U3dlYXRzaG9wIik7dmFyIHdlPSJXb3JrYm9vayIseGU9bXQuZmluZChILHdlKTt0cnl7aWYoISh4ZT1tdC5maW5kKEgsd2U9Ii8hRGF0''@;'; put 'put ''YVNwYWNlcy9WZXJzaW9uIikpfHwheGUuY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgIit3ZSk7aWYoZnVuY3Rpb24gb0UoSCl7dmFyIGllPXt9O2llLmlkPUgucmVhZF9zaGlmdCgwLCJscHA0IiksaWUuUj12ZihILDQpLGllLlU9dmYo''@;'; put 'put ''SCw0KSxpZS5XPXZmKEgsNCl9KHhlLmNvbnRlbnQpLCEoeGU9bXQuZmluZChILHdlPSIvIURhdGFTcGFjZXMvRGF0YVNwYWNlTWFwIikpfHwheGUuY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgIit3ZSk7dmFyIEZlPWZ1bmN0aW9uIHBt''@;'; put 'put ''KEgpe3ZhciBpZT1bXTtILmwrPTQ7Zm9yKHZhciBYPUgucmVhZF9zaGlmdCg0KTtYLS0gPjA7KWllLnB1c2godzMoSCkpO3JldHVybiBpZX0oeGUuY29udGVudCk7aWYoMSE9PUZlLmxlbmd0aHx8MSE9PUZlWzBdLmNvbXBzLmxlbmd0aHx8MCE9PUZlWzBdLmNvbXBzWzBdLnR8fCJTdHJvbmdF''@;'; put 'put ''bmNyeXB0aW9uRGF0YVNwYWNlIiE9PUZlWzBdLm5hbWV8fCJFbmNyeXB0ZWRQYWNrYWdlIiE9PUZlWzBdLmNvbXBzWzBdLnYpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBiYWQgIit3ZSk7aWYoISh4ZT1tdC5maW5kKEgsd2U9Ii8hRGF0YVNwYWNlcy9EYXRhU3Bh''@;'; put 'put ''Y2VJbmZvL1N0cm9uZ0VuY3J5cHRpb25EYXRhU3BhY2UiKSl8fCF4ZS5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK3dlKTt2YXIgWmU9ZnVuY3Rpb24gYUUoSCl7dmFyIGllPVtdO0gubCs9NDtmb3IodmFyIFg9SC5yZWFkX3NoaWZ0''@;'; put 'put ''KDQpO1gtLSA+MDspaWUucHVzaChILnJlYWRfc2hpZnQoMCwibHBwNCIpKTtyZXR1cm4gaWV9KHhlLmNvbnRlbnQpO2lmKDEhPVplLmxlbmd0aHx8IlN0cm9uZ0VuY3J5cHRpb25UcmFuc2Zvcm0iIT1aZVswXSl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIGJhZCAi''@;'; put 'put ''K3dlKTtpZighKHhlPW10LmZpbmQoSCx3ZT0iLyFEYXRhU3BhY2VzL1RyYW5zZm9ybUluZm8vU3Ryb25nRW5jcnlwdGlvblRyYW5zZm9ybS8hUHJpbWFyeSIpKXx8IXhlLmNvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nICIrd2UpOyFmdW5j''@;'; put 'put ''dGlvbiBzRShIKXt2YXIgaWU9ZnVuY3Rpb24gbEUoSCl7dmFyIGllPXt9O3JldHVybiBILnJlYWRfc2hpZnQoNCksSC5sKz00LGllLmlkPUgucmVhZF9zaGlmdCgwLCJscHA0IiksaWUubmFtZT1ILnJlYWRfc2hpZnQoMCwibHBwNCIpLGllLlI9dmYoSCw0KSxpZS5VPXZmKEgsNCksaWUuVz12''@;'; put 'put ''ZihILDQpLGllfShIKTtpZihpZS5lbmFtZT1ILnJlYWRfc2hpZnQoMCwiOGxwcDQiKSxpZS5ibGtzej1ILnJlYWRfc2hpZnQoNCksaWUuY21vZGU9SC5yZWFkX3NoaWZ0KDQpLDQhPUgucmVhZF9zaGlmdCg0KSl0aHJvdyBuZXcgRXJyb3IoIkJhZCAhUHJpbWFyeSByZWNvcmQiKTtyZXR1cm4g''@;'; put 'put ''aWV9KHhlLmNvbnRlbnQpfWNhdGNoKFllKXt9aWYoISh4ZT1tdC5maW5kKEgsd2U9Ii9FbmNyeXB0aW9uSW5mbyIpKXx8IXhlLmNvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nICIrd2UpO3ZhciBqZT1mdW5jdGlvbiBLeihIKXt2YXIgaWU9''@;'; put 'put ''dmYoSCk7c3dpdGNoKGllLk1pbm9yKXtjYXNlIDI6cmV0dXJuW2llLk1pbm9yLHliKEgpXTtjYXNlIDM6cmV0dXJuW2llLk1pbm9yLHdiKCldO2Nhc2UgNDpyZXR1cm5baWUuTWlub3IsYmIoSCldfXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgdW5yZWNvZ25pemVk''@;'; put 'put ''IFZlcnNpb246ICIraWUuTWlub3IpfSh4ZS5jb250ZW50KTtpZighKHhlPW10LmZpbmQoSCx3ZT0iL0VuY3J5cHRlZFBhY2thZ2UiKSl8fCF4ZS5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK3dlKTtpZig0PT1qZVswXSYmdm9pZCAw''@;'; put 'put ''IT09SG8pcmV0dXJuIEhvKGplWzFdLHhlLmNvbnRlbnQsWC5wYXNzd29yZHx8IiIsWCk7aWYoMj09amVbMF0mJnZvaWQgMCE9PWtjKXJldHVybiBrYyhqZVsxXSx4ZS5jb250ZW50LFgucGFzc3dvcmR8fCIiLFgpO3Rocm93IG5ldyBFcnJvcigiRmlsZSBpcyBwYXNzd29yZC1wcm90ZWN0ZWQi''@;'; put 'put ''KX1mdW5jdGlvbiBaZChILGllKXtpZighaWUudGVtcGxhdGUpe2lmKCJvZHMiPT1pZS5ib29rVHlwZSlyZXR1cm4gVEEoSCxpZSk7QzMoaWUmJmllLlBQSXx8OTYpLEgmJiFILlNTRiYmKEguU1NGPUYuZ2V0X3RhYmxlKCkpLEgmJkguU1NGJiYoeWUoRiksRi5sb2FkX3RhYmxlKEguU1NGKSxp''@;'; put 'put ''ZS5yZXZzc2Y9ZXQoSC5TU0YpLGllLnJldnNzZltILlNTRls2NTUzNV1dPTAsaWUuc3NmPUguU1NGKSxILlN0eWxlcz17Rm9udHM6aWUuRm9udHM9W3tzejoxMixjb2xvcjp7dGhlbWU6MSxyZ2I6IjAwMDAwMCJ9LG5hbWU6IkNhbGlicmkiLGZhbWlseToyLHNjaGVtZToibWlub3IifV0sRmls''@;'; put 'put ''bHM6aWUuRmlsbHM9W3twYXR0ZXJuVHlwZToibm9uZSJ9LHtwYXR0ZXJuVHlwZToiZ3JheTEyNSJ9XSxCb3JkZXJzOmllLkJvcmRlcnM9W3t9XSxEWEY6aWUuRFhGPUguU3R5bGVzJiZILlN0eWxlcy5EWEZ8fFtdLFRhYmxlOmllLlRhYmxlPUguU3R5bGVzJiZILlN0eWxlcy5UYWJsZXx8W119''@;'; put 'put ''LGllLm92ZXJyaWRlTURXP0syPWllLm92ZXJyaWRlTURXOlMzKGllLkZvbnRzWzBdKSxpZS5yZWxzPXt9LGllLndicmVscz17fSxpZS5TdHJpbmdzPVtdLGllLlN0cmluZ3MuQ291bnQ9MCxpZS5TdHJpbmdzLlVuaXF1ZT0wLGY1P2llLnJldlN0cmluZ3M9bmV3IE1hcDooaWUucmV2U3RyaW5n''@;'; put 'put ''cz17fSxpZS5yZXZTdHJpbmdzLmZvbz1bXSxkZWxldGUgaWUucmV2U3RyaW5ncy5mb28pO3ZhciBYPSJ4bHNiIj09aWUuYm9va1R5cGU/ImJpbiI6InhtbCIsd2U9bUIuaW5kZXhPZihpZS5ib29rVHlwZSk+LTEseGU9e3dvcmtib29rczpbXSxzaGVldHM6W10sY2hhcnRzOltdLGRpYWxvZ3M6''@;'; put 'put ''W10sbWFjcm9zOltdLHJlbHM6W10sc3RyczpbXSxjb21tZW50czpbXSxsaW5rczpbXSxjb3JlcHJvcHM6W10sZXh0cHJvcHM6W10sY3VzdHByb3BzOltdLHRoZW1lczpbXSxzdHlsZXM6W10sY2FsY2NoYWluczpbXSx2YmE6W10sZHJhd2luZ3M6W10scGl2b3RzOltdLHBpdm90Y2FjaGVzOltd''@;'; put 'put ''LHBpdm90cmVjb3JkczpbXSxkYXRhbW9kZWxzOltdLGNoYXJ0b2JqczpbXSxjaGFydHN0eWxlczpbXSxjaGFydGNvbG9yczpbXSxjaGFydGV4czpbXSx0YWJsZXM6W10sY29ubnM6W10sY3RybHByb3BzOltdLGN1c3RvbXhtbHByb3BzOltdLFRPRE86W10seG1sbnM6IiJ9O0YzKGllPWllfHx7''@;'; put 'put ''fSk7dmFyIEZlPWtyKCksWmU9IiIsamU9MDtpZihpZS5jZWxsWGZzPVtdLGllLmNlbGxTdHlsZVhmcz1be25hbWU6Ik5vcm1hbCJ9XSxZMShpZS5jZWxsWGZzLGllLmNlbGxTdHlsZVhmcyx7fSx7cmV2c3NmOntHZW5lcmFsOjB9fSksSC5Qcm9wc3x8KEguUHJvcHM9e30pLHpuKEZlLFplPSJk''@;'; put 'put ''b2NQcm9wcy9jb3JlLnhtbCIsZnVuY3Rpb24gaTIoSCxpZSl7dmFyIFg9aWV8fHt9LHdlPVtjbixNbl0seGU9e307aWYoIUgmJiFYLlByb3BzKXJldHVybiB3ZS5qb2luKCIiKTtIJiYobnVsbCE9SC5DcmVhdGVkRGF0ZSYmeG4oImRjdGVybXM6Y3JlYXRlZCIsInN0cmluZyI9PXR5cGVvZiBI''@;'; put 'put ''LkNyZWF0ZWREYXRlP0guQ3JlYXRlZERhdGU6VTAoSC5DcmVhdGVkRGF0ZSxYLldURikseyJ4c2k6dHlwZSI6ImRjdGVybXM6VzNDRFRGIn0sd2UseGUpLG51bGwhPUguTW9kaWZpZWREYXRlJiZ4bigiZGN0ZXJtczptb2RpZmllZCIsInN0cmluZyI9PXR5cGVvZiBILk1vZGlmaWVkRGF0ZT9I''@;'; put 'put ''Lk1vZGlmaWVkRGF0ZTpVMChILk1vZGlmaWVkRGF0ZSxYLldURikseyJ4c2k6dHlwZSI6ImRjdGVybXM6VzNDRFRGIn0sd2UseGUpKTtmb3IodmFyIEZlPTA7RmUhPWxlLmxlbmd0aDsrK0ZlKXt2YXIgWmU9bGVbRmVdLGplPVguUHJvcHMmJm51bGwhPVguUHJvcHNbWmVbMV1dP1guUHJvcHNb''@;'; put 'put ''WmVbMV1dOkg/SFtaZVsxXV06bnVsbDshMD09PWplP2plPSIxIjohMT09PWplP2plPSIwIjoibnVtYmVyIj09dHlwZW9mIGplJiYoamU9U3RyaW5nKGplKSksbnVsbCE9amUmJnhuKFplWzBdLGplLG51bGwsd2UseGUpfXJldHVybiB3ZS5sZW5ndGg+MiYmKHdlW3dlLmxlbmd0aF09IjwvY3A6''@;'; put 'put ''Y29yZVByb3BlcnRpZXM+Iix3ZVsxXT13ZVsxXS5yZXBsYWNlKCIvPiIsIj4iKSksd2Uuam9pbigiIil9KEguUHJvcHMsaWUpKSx4ZS5jb3JlcHJvcHMucHVzaChaZSksWHQoaWUucmVscywyLFplLGR0LkNPUkVfUFJPUFMpLFplPSJkb2NQcm9wcy9hcHAueG1sIiwhSC5Qcm9wc3x8IUguUHJv''@;'; put 'put ''cHMuU2hlZXROYW1lcylpZihILldvcmtib29rJiZILldvcmtib29rLlNoZWV0cyl7Zm9yKHZhciBZZT1bXSxNdD0wO010PEguU2hlZXROYW1lcy5sZW5ndGg7KytNdCkyIT0oSC5Xb3JrYm9vay5TaGVldHNbTXRdfHx7fSkuSGlkZGVuJiZZZS5wdXNoKEguU2hlZXROYW1lc1tNdF0pO0guUHJv''@;'; put 'put ''cHMuU2hlZXROYW1lcz1ZZX1lbHNlIEguUHJvcHMuU2hlZXROYW1lcz1ILlNoZWV0TmFtZXM7SC5Qcm9wcy5Xb3Jrc2hlZXRzPUguUHJvcHMuU2hlZXROYW1lcy5sZW5ndGgsem4oRmUsWmUsZnVuY3Rpb24gZzkoSCl7dmFyIGllPVtdLFg9X2k7cmV0dXJuIEh8fChIPXt9KSxILkFwcGxpY2F0''@;'; put 'put ''aW9uPSJTaGVldEpTIixpZVtpZS5sZW5ndGhdPWNuLGllW2llLmxlbmd0aF09UE0sbzIuZm9yRWFjaChmdW5jdGlvbih3ZSl7aWYodm9pZCAwIT09SFt3ZVsxXV0pe3ZhciB4ZTtzd2l0Y2god2VbMl0pe2Nhc2Uic3RyaW5nIjp4ZT1ScihTdHJpbmcoSFt3ZVsxXV0pKTticmVhaztjYXNlImJv''@;'; put 'put ''b2wiOnhlPUhbd2VbMV1dPyJ0cnVlIjoiZmFsc2UifXZvaWQgMCE9PXhlJiYoaWVbaWUubGVuZ3RoXT1YKHdlWzBdLHhlKSl9fSksaWVbaWUubGVuZ3RoXT1YKCJIZWFkaW5nUGFpcnMiLFgoInZ0OnZlY3RvciIsWCgidnQ6dmFyaWFudCIsIjx2dDpscHN0cj5Xb3Jrc2hlZXRzPC92dDpscHN0''@;'; put 'put ''cj4iKStYKCJ2dDp2YXJpYW50IixYKCJ2dDppNCIsU3RyaW5nKEguV29ya3NoZWV0cykpKSx7c2l6ZToyLGJhc2VUeXBlOiJ2YXJpYW50In0pKSxpZVtpZS5sZW5ndGhdPVgoIlRpdGxlc09mUGFydHMiLFgoInZ0OnZlY3RvciIsSC5TaGVldE5hbWVzLm1hcChmdW5jdGlvbih3ZSl7cmV0dXJu''@;'; put 'put ''Ijx2dDpscHN0cj4iK1JyKHdlKSsiPC92dDpscHN0cj4ifSkuam9pbigiIikse3NpemU6SC5Xb3Jrc2hlZXRzLGJhc2VUeXBlOiJscHN0ciJ9KSksaWUubGVuZ3RoPjImJihpZVtpZS5sZW5ndGhdPSI8L1Byb3BlcnRpZXM+IixpZVsxXT1pZVsxXS5yZXBsYWNlKCIvPiIsIj4iKSksaWUuam9p''@;'; put 'put ''bigiIil9KEguUHJvcHMpKSx4ZS5leHRwcm9wcy5wdXNoKFplKSxYdChpZS5yZWxzLDMsWmUsZHQuRVhUX1BST1BTKSxILkN1c3Rwcm9wcyE9PUguUHJvcHMmJm9uKEguQ3VzdHByb3BzfHx7fSkubGVuZ3RoPjAmJih6bihGZSxaZT0iZG9jUHJvcHMvY3VzdG9tLnhtbCIsZnVuY3Rpb24gY2Yo''@;'; put 'put ''SCl7dmFyIGllPVtjbixEbl07aWYoIUgpcmV0dXJuIGllLmpvaW4oIiIpO3ZhciBYPTE7cmV0dXJuIG9uKEgpLmZvckVhY2goZnVuY3Rpb24oeGUpeysrWCxpZVtpZS5sZW5ndGhdPV9pKCJwcm9wZXJ0eSIsZnVuY3Rpb24gQnMoSCxpZSl7c3dpdGNoKHR5cGVvZiBIKXtjYXNlInN0cmluZyI6''@;'; put 'put ''dmFyIFg9X2koInZ0Omxwd3N0ciIsUnIoSCkpO3JldHVybiBpZSYmKFg9WC5yZXBsYWNlKC8mcXVvdDsvZywiX3gwMDIyXyIpKSxYO2Nhc2UibnVtYmVyIjpyZXR1cm4gX2koKDB8SCk9PUg/InZ0Omk0IjoidnQ6cjgiLFJyKFN0cmluZyhIKSkpO2Nhc2UiYm9vbGVhbiI6cmV0dXJuIF9pKCJ2''@;'; put 'put ''dDpib29sIixIPyJ0cnVlIjoiZmFsc2UiKX1pZihIIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gX2koInZ0OmZpbGV0aW1lIixVMChIKSk7dGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gc2VyaWFsaXplICIrSCl9KEhbeGVdLCEwKSx7Zm10aWQ6IntENUNERDUwNS0yRTlDLTEwMUItOTM5Ny0w''@;'; put 'put ''ODAwMkIyQ0Y5QUV9IixwaWQ6WCxuYW1lOlJyKHhlKX0pfSksaWUubGVuZ3RoPjImJihpZVtpZS5sZW5ndGhdPSI8L1Byb3BlcnRpZXM+IixpZVsxXT1pZVsxXS5yZXBsYWNlKCIvPiIsIj4iKSksaWUuam9pbigiIil9KEguQ3VzdHByb3BzKSkseGUuY3VzdHByb3BzLnB1c2goWmUpLFh0KGll''@;'; put 'put ''LnJlbHMsNCxaZSxkdC5DVVNUX1BST1BTKSk7dmFyIHh0PVtdLFJ0PVtdO2ZvcihqZT0xO2plPD1ILlNoZWV0TmFtZXMubGVuZ3RoOysramUpe3ZhciBDbj17IiFpZCI6e319LER0PUguU2hlZXRzW0guU2hlZXROYW1lc1tqZS0xXV0senQ9KER0fHx7fSlbIiF0eXBlIl18fCJzaGVldCI7c3dp''@;'; put 'put ''dGNoKHp0KXtjYXNlImNoYXJ0IjppZigidW5kZWZpbmVkIiE9dHlwZW9mIHdyaXRlX2RyYXdpbmdfKXt6bihGZSxaZT0ieGwvY2hhcnRzaGVldHMvc2hlZXQiK2plKyIuIitYLE1QKGplLTEsWmUsaWUsSCxDbikpLHhlLmNoYXJ0cy5wdXNoKFplKSxYdChpZS53YnJlbHMsLTEsImNoYXJ0c2hl''@;'; put 'put ''ZXRzL3NoZWV0IitqZSsiLiIrWCxkdC5DUyk7YnJlYWt9ZGVmYXVsdDp6bihGZSxaZT0ieGwvd29ya3NoZWV0cy9zaGVldCIramUrIi4iK1gsWHgoamUtMSxaZSxpZSxILENuKSkseGUuc2hlZXRzLnB1c2goWmUpLFh0KGllLndicmVscywtMSwid29ya3NoZWV0cy9zaGVldCIramUrIi4iK1gs''@;'; put 'put ''ZHQuV1NbMF0pfWlmKER0KXsiY2hhcnQiPT16dCYmIUR0WyIhcG9zIl0mJihEdFsiIXBvcyJdPXt4OjAseTowLHc6OTAwLGg6NjAwfSk7dmFyIFBuPUR0WyIhY29tbWVudHMiXSxUbj0hMTtpZihQbiYmUG4ubGVuZ3RoPjApe3ZhciBPbj0ieGwvY29tbWVudHMiK2plKyIuIitYO3puKEZlLE9u''@;'; put 'put ''LHhQKFBuLE9uLGllKSkseGUuY29tbWVudHMucHVzaChPbiksWHQoQ24sLTEsIi4uL2NvbW1lbnRzIitqZSsiLiIrWCxkdC5DTU5UKSxUbj0hMH0oRHRbIiFjb250cm9scyJdfHxbXSkubGVuZ3RoPjAmJihUbj0hMCksRHRbIiFsZWdhY3kiXSYmVG4mJnpuKEZlLCJ4bC9kcmF3aW5ncy92bWxE''@;'; put 'put ''cmF3aW5nIitqZSsiLnZtbCIsWmIoamUsRHRbIiFjb21tZW50cyJdLER0WyIhY29udHJvbHMiXSxEdCkpLER0WyIhbGVnYWN5SEYiXSYmQ20oRmUsMCxqZSxEdFsiIXByaW50Il0uaW1hZ2VzKTt2YXIgWW49KCJjaGFydCI9PUR0WyIhdHlwZSJdP1tEdF06RHRbIiFjaGFydHMiXXx8W10pLmNv''@;'; put 'put ''bmNhdCgoRHRbIiFpbWFnZXMiXXx8W10pLm1hcChmdW5jdGlvbihNcil7cmV0dXJuIE1yWyIhdHlwZSJdfHwoTXJbIiF0eXBlIl09ImltYWdlIiksTXJ9KSkuY29uY2F0KChEdFsiIXNoYXBlcyJdfHxbXSkubWFwKGZ1bmN0aW9uKE1yKXtyZXR1cm4gTXJbIiF0eXBlIl18fChNclsiIXR5cGUi''@;'; put 'put ''XT0ic2hhcGUiKSxNcn0pKTtZbiYmWW4ubGVuZ3RoJiYoInVuZGVmaW5lZCIhPXR5cGVvZiB3cml0ZV9kcmF3aW5nXz93cml0ZV9kcmF3aW5nXyhGZSx4ZSxqZSxEdCxZbik6KHpuKEZlLCJ4bC9kcmF3aW5ncy9kcmF3aW5nIitqZSsiLnhtbCIsTmIoKSkseGUuZHJhd2luZ3MucHVzaCgieGwv''@;'; put 'put ''ZHJhd2luZ3MvZHJhd2luZyIramUrIi54bWwiKSkpLGRlbGV0ZSBEdFsiIWNvbW1lbnRzIl0sZGVsZXRlIER0WyIhbGVnYWN5Il0sZGVsZXRlIER0WyIhbGVnYWN5SEYiXX1EdCYmRHRbIiFwaXZvdHMiXSYmInhtbCI9PVgmJiJ1bmRlZmluZWQiIT10eXBlb2Ygd3JpdGVfcGl2b3RfeG1sJiZE''@;'; put 'put ''dFsiIXBpdm90cyJdLmZvckVhY2gobm4pLENuWyIhaWQiXS5ySWQxJiZ6bihGZSxJdChaZSksaXQoQ24pKSxEdCYmRHRbIiF0YWJsZXMiXSYmInhtbCI9PVgmJnZvaWQgMCE9PVZiJiZEdFsiIXRhYmxlcyJdLmZvckVhY2goVXQpfXJldHVybiBudWxsIT1pZS5TdHJpbmdzJiZpZS5TdHJpbmdz''@;'; put 'put ''Lmxlbmd0aD4wJiYoem4oRmUsWmU9InhsL3NoYXJlZFN0cmluZ3MuIitYLEVQKGllLlN0cmluZ3MsWmUsaWUpKSx4ZS5zdHJzLnB1c2goWmUpLFh0KGllLndicmVscywtMSwic2hhcmVkU3RyaW5ncy4iK1gsZHQuU1NUKSksInhtbCI9PVgmJiJ1bmRlZmluZWQiIT10eXBlb2Ygd3JpdGVfcGl2''@;'; put 'put ''b3RfeG1sJiZ3cml0ZV9waXZvdF94bWwoeHQsSCxGZSx4ZSxpZSksInhtbCI9PVgmJnZvaWQgMCE9PVZiJiZWYihSdCxILEZlLHhlKSwieG1sIj09WCYmKEguRXh0ZXJuYWxXQnx8W10pLmxlbmd0aCYmZnVuY3Rpb24gdzYoSCxpZSxYKXtYLmxpbmtzfHwoWC5saW5rcz1bXSksSC5FeHRlcm5h''@;'; put 'put ''bFdCJiZILkV4dGVybmFsV0IuZm9yRWFjaChmdW5jdGlvbih3ZSx4ZSl7dmFyIEZlPSIveGwvZXh0ZXJuYWxMaW5rcy9fcmVscy9leHRlcm5hbExpbmsiKyh4ZSsxKSsiLnhtbC5yZWxzIixaZT17fTtYdChaZSwtMSx3ZS5UYXJnZXQsd2UuTWlzc2luZz9kdC5YTUlTUzpkdC5YUEFUSCksem4o''@;'; put 'put ''aWUsaDEoRmUpLGl0KFplKSk7dmFyIGplPSIveGwvZXh0ZXJuYWxMaW5rcy9leHRlcm5hbExpbmsiKyh4ZSsxKSsiLnhtbCI7WC5saW5rcy5wdXNoKGplKSx6bihpZSxoMShqZSksZnVuY3Rpb24gdDUoSCl7dmFyIGllPVtjbix5Nl07cmV0dXJuKEguU2hlZXROYW1lc3x8W10pLmxlbmd0aCYm''@;'; put 'put ''KGllLnB1c2goJzxleHRlcm5hbEJvb2sgeG1sbnM6cj0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcyIgcjppZD0icklkMSI+JyksaWUucHVzaCgiPHNoZWV0TmFtZXM+IiksSC5TaGVldE5hbWVzLmZvckVhY2goZnVu''@;'; put 'put ''Y3Rpb24oWCl7aWUucHVzaCgnPHNoZWV0TmFtZSB2YWw9IicrUnIoWCkrJyIvPicpfSksaWUucHVzaCgiPC9zaGVldE5hbWVzPiIpLGllLnB1c2goIjxzaGVldERhdGFTZXQ+IiksSC5TaGVldE5hbWVzLmZvckVhY2goZnVuY3Rpb24oWCx3ZSl7dmFyIHhlPUguU2hlZXRzW1hdLEZlPXtzaGVl''@;'; put 'put ''dElkOndlfSxaZT1udWxsO2lmKG51bGw9PXhlKUZlLnJlZnJlc2hFcnJvcj0xO2Vsc2UgaWYoeGVbIiFyZWYiXSl7dmFyIGplPUFzKHhlWyIhcmVmIl0pO1plPSIiO2Zvcih2YXIgWWU9amUucy5yO1llPD1qZS5lLnI7KytZZSl7Zm9yKHZhciBNdD0iIix4dD1qZS5zLmM7eHQ8PWplLmUuYzsr''@;'; put 'put ''K3h0KXt2YXIgUnQ9WTAoe3I6WWUsYzp4dH0pOyF4ZVtSdF18fChNdHx8KE10PSc8cm93IHI9IicrKFllKzEpKyciPicpLE10Kz0nPGNlbGwgcj0iJytSdCsnIicrKHhlW1J0XS50PycgdD0iJyt4ZVtSdF0udCsnIic6IiIpKyI+PHY+IitScih4ZVtSdF0udikrIjwvdj48L2NlbGw+Iil9TXQm''@;'; put 'put ''JihaZSs9TXQrIjwvcm93PiIpfX1pZS5wdXNoKF9pKCJzaGVldERhdGEiLFplLEZlKSl9KSxpZS5wdXNoKCI8L3NoZWV0RGF0YVNldD4iKSxpZS5wdXNoKCI8L2V4dGVybmFsQm9vaz4iKSksaWUubGVuZ3RoPjImJihpZVtpZS5sZW5ndGhdPSI8L2V4dGVybmFsTGluaz4iLGllWzFdPWllWzFd''@;'; put 'put ''LnJlcGxhY2UoIi8+IiwiPiIpKSxpZS5qb2luKCIiKX0od2UpKX0pfShILEZlLHhlKSwieG1sIj09WCYmZnVuY3Rpb24gajkoSCl7dmFyIGllLFg7SC5Xb3JrYm9va3x8KEguV29ya2Jvb2s9e05hbWVzOltdfSksSC5Xb3JrYm9vay5OYW1lc3x8KEguV29ya2Jvb2suTmFtZXM9W10pO2Zvcih2''@;'; put 'put ''YXIgd2U9SC5Xb3JrYm9vay5OYW1lcyx4ZT0wO3hlPEguU2hlZXROYW1lcy5sZW5ndGg7Kyt4ZSl7dmFyIEZlPUguU2hlZXROYW1lc1t4ZV0sWmU9SC5TaGVldHNbRmVdO2lmKFplJiZaZVsiIXByaW50Il0pe3ZhciBqZT0iJyIrRmUrIichIixZZT1aZVsiIXByaW50Il07aWYoWWUpe3ZhciBN''@;'; put 'put ''dD0hKGllPVllLmFyZWEpLHh0PSEoWD1ZZS50aXRsZXMpLFJ0PWllPyJzdHJpbmciPT10eXBlb2YgaWU/aWU6ZmEoaWUpOiIiO2lmKGllJiYod2UuZm9yRWFjaChmdW5jdGlvbihubil7bm4uU2hlZXQ9PXhlJiYhTXQmJiJfeGxubS5QcmludF9BcmVhIj09bm4uTmFtZSYmKE10PSEwLG5uLlJl''@;'; put 'put ''Zj1qZStSdCl9KSxNdHx8d2UucHVzaCh7TmFtZToiX3hsbm0uUHJpbnRfQXJlYSIsUmVmOmplK1J0LFNoZWV0OnhlfSkpLFgpe3ZhciBVdD0iIjtYLnMuYz4tMSYmWC5lLmM+LTEmJihVdCs9amUrX2EoWC5zLmMpKyI6IitfYShYLmUuYykrIiwiKSxYLnMucj4tMSYmWC5lLnI+LTEmJihVdCs9''@;'; put 'put ''amUrWGEoWC5zLnIpKyI6IitYYShYLmUucikrIiwiKSxVdD1VdC5zbGljZSgwLC0xKSx3ZS5mb3JFYWNoKGZ1bmN0aW9uKG5uKXtubi5TaGVldD09eGUmJiF4dCYmIl94bG5tLlByaW50X1RpdGxlcyI9PW5uLk5hbWUmJihNdD0hMCxubi5SZWY9VXQpfSkseHR8fHdlLnB1c2goe05hbWU6Il94''@;'; put 'put ''bG5tLlByaW50X1RpdGxlcyIsUmVmOlV0LFNoZWV0OnhlfSl9fX19fShIKSx6bihGZSxaZT0ieGwvd29ya2Jvb2suIitYLGZ1bmN0aW9uIFNQKEgsaWUsWCl7cmV0dXJuKCIuYmluIj09PWllLnNsaWNlKC00KT9ZXzp3UCkoSCxYKX0oSCxaZSxpZSkpLHhlLndvcmtib29rcy5wdXNoKFplKSxY''@;'; put 'put ''dChpZS5yZWxzLDEsWmUsZHQuV0IpLHpuKEZlLFplPSJ4bC90aGVtZS90aGVtZTEueG1sIixOOShILlRoZW1lcyxpZSkpLHhlLnRoZW1lcy5wdXNoKFplKSxYdChpZS53YnJlbHMsLTEsInRoZW1lL3RoZW1lMS54bWwiLGR0LlRIRU1FKSx6bihGZSxaZT0ieGwvc3R5bGVzLiIrWCxmdW5jdGlv''@;'; put 'put ''biBLeChILGllLFgpe3JldHVybigiLmJpbiI9PT1pZS5zbGljZSgtNCk/TUU6UVIpKEgsWCl9KEgsWmUsaWUpKSx4ZS5zdHlsZXMucHVzaChaZSksWHQoaWUud2JyZWxzLC0xLCJzdHlsZXMuIitYLGR0LlNUWSksSC52YmFyYXcmJndlJiYoem4oRmUsWmU9InhsL3ZiYVByb2plY3QuYmluIixI''@;'; put 'put ''LnZiYXJhdykseGUudmJhLnB1c2goWmUpLFh0KGllLndicmVscywtMSwidmJhUHJvamVjdC5iaW4iLGR0LlZCQSkpLEgubW9kZWwmJkgubW9kZWwubGVuZ3RoJiYoem4oRmUsInhsL21vZGVsL2l0ZW0uZGF0YSIsSC5tb2RlbCksWHQoaWUud2JyZWxzLC0xLCJtb2RlbC9pdGVtLmRhdGEiLGR0''@;'; put 'put ''LlBXUlBEKSksSC5jb25uJiYoem4oRmUsInhsL2Nvbm5lY3Rpb25zLnhtbCIsSC5jb25uKSx4ZS5jb25ucy5wdXNoKCIveGwvY29ubmVjdGlvbnMueG1sIiksWHQoaWUud2JyZWxzLC0xLCJjb25uZWN0aW9ucy54bWwiLGR0LkNPTk4pKSxILkN1c3RvbVhNTCYmSC5DdXN0b21YTUwuZm9yRWFj''@;'; put 'put ''aChmdW5jdGlvbihNcixhaSl7aWYoem4oRmUsImN1c3RvbVhtbC9pdGVtIisoYWkrMSkrIi54bWwiLE1yLmRhdGEpLFh0KGllLndicmVscywtMSwiLi4vY3VzdG9tWG1sL2l0ZW0iKyhhaSsxKSsiLnhtbCIsZHQuQ1hNTCksTXIucHJvcHMpe3puKEZlLCJjdXN0b21YbWwvaXRlbVByb3BzIiso''@;'; put 'put ''YWkrMSkrIi54bWwiLE1yLnByb3BzKSx4ZS5jdXN0b214bWxwcm9wcy5wdXNoKCIvY3VzdG9tWG1sL2l0ZW1Qcm9wcyIrKGFpKzEpKyIueG1sIik7dmFyIHlyPXt9O1h0KHlyLC0xLCJpdGVtUHJvcHMiKyhhaSsxKSsiLnhtbCIsZHQuQ1hNTFApLHpuKEZlLCJjdXN0b21YbWwvX3JlbHMvaXRl''@;'; put 'put ''bSIrKGFpKzEpKyIueG1sLnJlbHMiLGl0KHlyKSl9fSksem4oRmUsIltDb250ZW50X1R5cGVzXS54bWwiLGZ1bmN0aW9uIFJNKEgsaWUsWCl7dmFyIHhlLHdlPVtdO1h8fCh3ZVt3ZS5sZW5ndGhdPWNuLHdlW3dlLmxlbmd0aF09ZjIsd2U9d2UuY29uY2F0KHBSKSk7dmFyIEZlPWZ1bmN0aW9u''@;'; put 'put ''KFllKXtIW1llXSYmSFtZZV0ubGVuZ3RoPjAmJih3ZVt3ZS5sZW5ndGhdPV9pKCJPdmVycmlkZSIsbnVsbCx7UGFydE5hbWU6KCIvIj09KHhlPUhbWWVdWzBdKVswXT8iIjoiLyIpK3hlLENvbnRlbnRUeXBlOkNhW1llXVtpZS5ib29rVHlwZXx8Inhsc3giXX0pKX0sWmU9ZnVuY3Rpb24oWWUp''@;'; put 'put ''eyhIW1llXXx8W10pLmZvckVhY2goZnVuY3Rpb24oTXQpe3dlW3dlLmxlbmd0aF09X2koIk92ZXJyaWRlIixudWxsLHtQYXJ0TmFtZTooIi8iPT1NdFswXT8iIjoiLyIpK010LENvbnRlbnRUeXBlOkNhW1llXVtpZS5ib29rVHlwZXx8Inhsc3giXX0pfSl9LGplPWZ1bmN0aW9uKFllKXsoSFtZ''@;'; put 'put ''ZV18fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKE10KXt3ZVt3ZS5sZW5ndGhdPV9pKCJPdmVycmlkZSIsbnVsbCx7UGFydE5hbWU6KCIvIj09TXRbMF0/IiI6Ii8iKStNdCxDb250ZW50VHlwZTokZ1tZZV1bMF19KX0pfTtyZXR1cm4gRmUoIndvcmtib29rcyIpLFplKCJzaGVldHMiKSxaZSgiY2hh''@;'; put 'put ''cnRzIiksamUoInRoZW1lcyIpLFsic3RycyIsInN0eWxlcyIsImNvbm5zIl0uZm9yRWFjaChGZSksWyJjb3JlcHJvcHMiLCJleHRwcm9wcyIsImN1c3Rwcm9wcyJdLmZvckVhY2goamUpLGplKCJ2YmEiKSxqZSgiY29tbWVudHMiKSxqZSgiZHJhd2luZ3MiKSxaZSgidGFibGVzIiksWmUoInBp''@;'; put 'put ''dm90cyIpLFplKCJwaXZvdGNhY2hlcyIpLFplKCJwaXZvdHJlY29yZHMiKSxqZSgiZGF0YW1vZGVscyIpLGplKCJjdHJscHJvcHMiKSxqZSgiY2hhcnRvYmpzIiksamUoImNoYXJ0c3R5bGVzIiksamUoImNoYXJ0Y29sb3JzIiksamUoImNoYXJ0ZXhzIiksWmUoImxpbmtzIiksamUoImN1c3Rv''@;'; put 'put ''bXhtbHByb3BzIiksIVgmJndlLmxlbmd0aD4yJiYod2Vbd2UubGVuZ3RoXT0iPC9UeXBlcz4iLHdlWzFdPXdlWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSx3ZS5qb2luKCIiKX0oeGUsaWUpKSx6bihGZSwiX3JlbHMvLnJlbHMiLGl0KGllLnJlbHMpKSx6bihGZSwieGwvX3JlbHMvd29ya2Jvb2su''@;'; put 'put ''IitYKyIucmVscyIsaXQoaWUud2JyZWxzKSksZGVsZXRlIGllLkZvbnRzLGRlbGV0ZSBpZS5GaWxscyxkZWxldGUgaWUuQm9yZGVycyxkZWxldGUgaWUucmV2c3NmLGRlbGV0ZSBpZS5zc2YsRmV9ZnVuY3Rpb24gVXQoTXIsYWkpe1J0LnB1c2goW2plLTEsYWksTXJdKX1mdW5jdGlvbiBubihN''@;'; put 'put ''cil7eHQucHVzaChbamUtMSxNcl0pLFh0KENuLC0xLCIuLi9waXZvdFRhYmxlcy9waXZvdFRhYmxlIit4dC5sZW5ndGgrIi4iK1gsZHQuUElWT1QpfX1mdW5jdGlvbiBmQyhILGllKXt2YXIgWD0iIjtzd2l0Y2goKGllfHx7fSkudHlwZXx8ImJhc2U2NCIpe2Nhc2UiYnVmZmVyIjpjYXNlImFy''@;'; put 'put ''cmF5IjpyZXR1cm5bSFswXSxIWzFdLEhbMl0sSFszXSxIWzRdLEhbNV0sSFs2XSxIWzddXTtjYXNlImJhc2U2NCI6WD1TZS5kZWNvZGUoSC5zbGljZSgwLDEyKSk7YnJlYWs7Y2FzZSJiaW5hcnkiOlg9SDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUg''@;'; put 'put ''IisoaWUmJmllLnR5cGV8fCJ1bmRlZmluZWQiKSl9cmV0dXJuW1guY2hhckNvZGVBdCgwKSxYLmNoYXJDb2RlQXQoMSksWC5jaGFyQ29kZUF0KDIpLFguY2hhckNvZGVBdCgzKSxYLmNoYXJDb2RlQXQoNCksWC5jaGFyQ29kZUF0KDUpLFguY2hhckNvZGVBdCg2KSxYLmNoYXJDb2RlQXQoNyld''@;'; put 'put ''fWZ1bmN0aW9uIGhvKEgsaWUpe3ZhciBYPTA7ZTpmb3IoO1g8SC5sZW5ndGg7KXN3aXRjaChILmNoYXJDb2RlQXQoWCkpe2Nhc2UgMTA6Y2FzZSAxMzpjYXNlIDMyOisrWDticmVhaztjYXNlIDYwOnJldHVybiBlQyhILnNsaWNlKFgpLGllKTtkZWZhdWx0OmJyZWFrIGV9cmV0dXJuIEEzLnRv''@;'; put 'put ''X3dvcmtib29rKEgsaWUpfWZ1bmN0aW9uIE4zKEgsaWUsWCx3ZSl7cmV0dXJuIHdlPyhYLnR5cGU9InN0cmluZyIsQTMudG9fd29ya2Jvb2soSCxYKSk6QTMudG9fd29ya2Jvb2soaWUsWCl9ZnVuY3Rpb24gemQoSCxpZSl7dmFyIFg9Ri5nZXRsb2NhbGUoKTt5ZShGKSxGLnNldGxvY2FsZShY''@;'; put 'put ''KSxLKCk7dmFyIHdlPWllfHx7fTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZIIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpcmV0dXJuIHpkKG5ldyBVaW50OEFycmF5KEgpLCgod2U9bG4od2UpKS50eXBlPSJhcnJheSIsd2UpKTt2YXIgRmUseGU9SCxaZT0hMTtpZihDMyhS''@;'; put 'put ''ND13ZS5QUEl8fDk2KSx3ZS5jZWxsU3R5bGVzJiYod2UuY2VsbE5GPSEwLHdlLnNoZWV0U3R1YnM9ITApLFVjPXt9LHdlLmRhdGVORiYmKFVjLmRhdGVORj13ZS5kYXRlTkYpLHdlLnR5cGV8fCh3ZS50eXBlPUllJiZCdWZmZXIuaXNCdWZmZXIoSCk/ImJ1ZmZlciI6ImJhc2U2NCIpLCJmaWxl''@;'; put 'put ''Ij09d2UudHlwZSYmKHdlLnR5cGU9SWU/ImJ1ZmZlciI6ImJpbmFyeSIseGU9ZnVuY3Rpb24gQnQoSCl7aWYodm9pZCAwIT09dnQpcmV0dXJuIHZ0LnJlYWRGaWxlU3luYyhIKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mICQmJiJ1bmRlZmluZWQiIT10eXBlb2YgRmlsZSYmInVuZGVmaW5lZCIh''@;'; put 'put ''PXR5cGVvZiBGb2xkZXIpdHJ5e3ZhciBpZT1GaWxlKEgpO2llLm9wZW4oInIiKSxpZS5lbmNvZGluZz0iYmluYXJ5Ijt2YXIgWD1pZS5yZWFkKCk7cmV0dXJuIGllLmNsb3NlKCksWH1jYXRjaCh3ZSl7aWYoIXdlLm1lc3NhZ2V8fCF3ZS5tZXNzYWdlLm1hdGNoKC9vbnN0cnVjdC8pKXRocm93''@;'; put 'put ''IHdlfXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGFjY2VzcyBmaWxlICIrSCl9KEgpKSwic3RyaW5nIj09d2UudHlwZSYmKFplPSEwLHdlLnR5cGU9ImJpbmFyeSIsd2UuY29kZXBhZ2U9NjUwMDEseGU9ZnVuY3Rpb24gR28oSCl7cmV0dXJuIEgubWF0Y2goL1teXHgwMC1ceDdGXS8pP0VvKEgp''@;'; put 'put ''Okh9KEgpKSwiYXJyYXkiPT13ZS50eXBlJiYidW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXkmJkggaW5zdGFuY2VvZiBVaW50OEFycmF5JiYidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyKXt2YXIgamU9bmV3IEFycmF5QnVmZmVyKDMpLFllPW5ldyBVaW50OEFycmF5KGplKTtp''@;'; put 'put ''ZihZZS5mb289ImJhciIsIVllLmZvbylyZXR1cm4od2U9bG4od2UpKS50eXBlPSJhcnJheSIsemQoUCh4ZSksd2UpfXN3aXRjaCgoRmU9ZkMoeGUsd2UpKVswXSl7Y2FzZSAyMDg6aWYoMjA3PT09RmVbMV0mJjE3PT09RmVbMl0mJjIyND09PUZlWzNdJiYxNjE9PT1GZVs0XSYmMTc3PT09RmVb''@;'; put 'put ''NV0mJjI2PT09RmVbNl0mJjIyNT09PUZlWzddKXJldHVybiBmdW5jdGlvbiBvYyhILGllKXtyZXR1cm4gbXQuZmluZChILCJFbmNyeXB0ZWRQYWNrYWdlIik/JG0oSCxpZSk6VW0oSCxpZSl9KG10LnJlYWQoeGUsd2UpLHdlKTticmVhaztjYXNlIDk6aWYoRmVbMV08PTgpcmV0dXJuIFVtKHhl''@;'; put 'put ''LHdlKTticmVhaztjYXNlIDYwOnJldHVybiBlQyh4ZSx3ZSk7Y2FzZSA3MzppZig3Mz09PUZlWzFdJiY0Mj09PUZlWzJdJiYwPT09RmVbM10pdGhyb3cgbmV3IEVycm9yKCJUSUZGIEltYWdlIEZpbGUgaXMgbm90IGEgc3ByZWFkc2hlZXQiKTtpZig2OD09PUZlWzFdKXJldHVybiBmdW5jdGlv''@;'; put 'put ''biBBYihILGllKXt2YXIgWD1pZXx8e30sd2U9ISFYLldURjtYLldURj0hMDt0cnl7dmFyIHhlPWZtLnRvX3dvcmtib29rKEgsWCk7cmV0dXJuIFguV1RGPXdlLHhlfWNhdGNoKEZlKXtpZihYLldURj13ZSwhRmUubWVzc2FnZS5tYXRjaCgvU1lMSyBiYWQgcmVjb3JkIElELykmJndlKXRocm93''@;'; put 'put ''IEZlO3JldHVybiBBMy50b193b3JrYm9vayhILGllKX19KHhlLHdlKTticmVhaztjYXNlIDg0OmlmKDY1PT09RmVbMV0mJjY2PT09RmVbMl0mJjc2PT09RmVbM10pcmV0dXJuIHZiLnRvX3dvcmtib29rKHhlLHdlKTticmVhaztjYXNlIDgwOnJldHVybiA3NT09PUZlWzFdJiZGZVsyXTw5JiZG''@;'; put 'put ''ZVszXTw5P2Z1bmN0aW9uIFVQKEgsaWUpe3ZhciB3ZT1ILHhlPWllfHx7fTtyZXR1cm4geGUudHlwZXx8KHhlLnR5cGU9SWUmJkJ1ZmZlci5pc0J1ZmZlcihIKT8iYnVmZmVyIjoiYmFzZTY0IiksS20obW4od2UseGUpLHhlKX0oeGUsd2UpOk4zKEgseGUsd2UsWmUpO2Nhc2UgMjM5OnJldHVy''@;'; put 'put ''biA2MD09PUZlWzNdP2VDKHhlLHdlKTpOMyhILHhlLHdlLFplKTtjYXNlIDI1NTppZigyNTQ9PT1GZVsxXSlyZXR1cm4gZnVuY3Rpb24gQzEoSCxpZSl7dmFyIFg9SDtyZXR1cm4iYmFzZTY0Ij09aWUudHlwZSYmKFg9U2UuZGVjb2RlKFgpKSxYPWNwdGFibGUudXRpbHMuZGVjb2RlKDEyMDAs''@;'; put 'put ''WC5zbGljZSgyKSwic3RyIiksaWUudHlwZT0iYmluYXJ5IixobyhYLGllKX0oeGUsd2UpO2JyZWFrO2Nhc2UgMDppZigwPT09RmVbMV0mJkZlWzJdPj0yJiYwPT09RmVbM10pcmV0dXJuIEcxLnRvX3dvcmtib29rKHhlLHdlKTticmVhaztjYXNlIDM6Y2FzZSAxMzE6Y2FzZSAxMzk6Y2FzZSAx''@;'; put 'put ''NDA6cmV0dXJuIFlmLnRvX3dvcmtib29rKHhlLHdlKTtjYXNlIDEyMzppZig5Mj09PUZlWzFdJiYxMTQ9PT1GZVsyXSYmMTE2PT09RmVbM10pcmV0dXJuIHg5LnRvX3dvcmtib29rKHhlLHdlKTticmVhaztjYXNlIDEwOmNhc2UgMTM6Y2FzZSAzMjpyZXR1cm4gZnVuY3Rpb24gSDMoSCxpZSl7''@;'; put 'put ''dmFyIFg9IiIsd2U9ZkMoSCxpZSk7c3dpdGNoKGllLnR5cGUpe2Nhc2UiYmFzZTY0IjpYPVNlLmRlY29kZShIKTticmVhaztjYXNlImJpbmFyeSI6WD1IO2JyZWFrO2Nhc2UiYnVmZmVyIjpYPUgudG9TdHJpbmcoImJpbmFyeSIpO2JyZWFrO2Nhc2UiYXJyYXkiOlg9eW4oSCk7YnJlYWs7ZGVm''@;'; put 'put ''YXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIraWUudHlwZSl9cmV0dXJuIDIzOT09d2VbMF0mJjE4Nz09d2VbMV0mJjE5MT09d2VbMl0mJihYPVcwKFgpKSxobyhYLGllKX0oeGUsd2UpfXJldHVybiBZZi52ZXJzaW9ucy5pbmRleE9mKEZlWzBdKT4tMSYmRmVbMl08''@;'; put 'put ''PTEyJiZGZVszXTw9MzE/WWYudG9fd29ya2Jvb2soeGUsd2UpOk4zKEgseGUsd2UsWmUpfWZ1bmN0aW9uIGU3KEgsaWUpe3ZhciBYPWllfHx7fTtyZXR1cm4gWC50eXBlPSJmaWxlIix6ZChILFgpfWZ1bmN0aW9uIFNjKEgsaWUpe3N3aXRjaChpZS50eXBlKXtjYXNlImJhc2U2NCI6Y2FzZSJi''@;'; put 'put ''aW5hcnkiOmJyZWFrO2Nhc2UiYnVmZmVyIjpjYXNlImFycmF5IjppZS50eXBlPSIiO2JyZWFrO2Nhc2UiZmlsZSI6cmV0dXJuIGh0KGllLmZpbGUsbXQud3JpdGUoSCx7dHlwZTpJZT8iYnVmZmVyIjoiIn0pKTtjYXNlInN0cmluZyI6dGhyb3cgbmV3IEVycm9yKCInc3RyaW5nJyBvdXRwdXQg''@;'; put 'put ''dHlwZSBpbnZhbGlkIGZvciAnIitpZS5ib29rVHlwZSsiJyBmaWxlcyIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK2llLnR5cGUpfXJldHVybiBtdC53cml0ZShILGllKX1mdW5jdGlvbiBWMyhILGllLFgpe1h8fChYPSIiKTt2YXIgd2U9WCtIO3N3aXRj''@;'; put 'put ''aChpZS50eXBlKXtjYXNlImJhc2U2NCI6cmV0dXJuIFNlLmVuY29kZShFbyh3ZSkpO2Nhc2UiYmluYXJ5IjpyZXR1cm4gRW8od2UpO2Nhc2Uic3RyaW5nIjpyZXR1cm4gSDtjYXNlImZpbGUiOnJldHVybiBodChpZS5maWxlLHdlLCJ1dGY4Iik7Y2FzZSJidWZmZXIiOnJldHVybiBJZT9UZSh3''@;'; put 'put ''ZSwidXRmOCIpOlYzKHdlLHt0eXBlOiJiaW5hcnkifSkuc3BsaXQoIiIpLm1hcChmdW5jdGlvbih4ZSl7cmV0dXJuIHhlLmNoYXJDb2RlQXQoMCl9KX10aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIraWUudHlwZSl9ZnVuY3Rpb24gZEMoSCxpZSl7c3dpdGNoKGllLnR5cGUp''@;'; put 'put ''e2Nhc2Uic3RyaW5nIjpjYXNlImJhc2U2NCI6Y2FzZSJiaW5hcnkiOmZvcih2YXIgWD0iIix3ZT0wO3dlPEgubGVuZ3RoOysrd2UpWCs9U3RyaW5nLmZyb21DaGFyQ29kZShIW3dlXSk7cmV0dXJuImJhc2U2NCI9PWllLnR5cGU/U2UuZW5jb2RlKFgpOiJzdHJpbmciPT1pZS50eXBlP1cwKFgp''@;'; put 'put ''Olg7Y2FzZSJmaWxlIjpyZXR1cm4gaHQoaWUuZmlsZSxIKTtjYXNlImJ1ZmZlciI6cmV0dXJuIEg7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIraWUudHlwZSl9fWZ1bmN0aW9uIG43KEgsaWUpe0soKSxmdW5jdGlvbiB5UChIKXtpZighSHx8IUguU2hlZXRO''@;'; put 'put ''YW1lc3x8IUguU2hlZXRzKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBXb3JrYm9vayIpO2lmKCFILlNoZWV0TmFtZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiV29ya2Jvb2sgaXMgZW1wdHkiKTshZnVuY3Rpb24gQVAoSCxpZSxYKXtILmZvckVhY2goZnVuY3Rpb24od2UseGUpe1p4KHdl''@;'; put 'put ''KTtmb3IodmFyIEZlPTA7RmU8eGU7KytGZSlpZih3ZT09SFtGZV0pdGhyb3cgbmV3IEVycm9yKCJEdXBsaWNhdGUgU2hlZXQgTmFtZTogIit3ZSk7aWYoWCl7dmFyIFplPWllJiZpZVt4ZV0mJmllW3hlXS5Db2RlTmFtZXx8d2U7aWYoOTU9PVplLmNoYXJDb2RlQXQoMCkmJlplLmxlbmd0aD4y''@;'; put 'put ''Mil0aHJvdyBuZXcgRXJyb3IoIkJhZCBDb2RlIE5hbWU6IFdvcmtzaGVldCIrWmUpfX0pfShILlNoZWV0TmFtZXMsSC5Xb3JrYm9vayYmSC5Xb3JrYm9vay5TaGVldHN8fFtdLCEhSC52YmFyYXcpO2Zvcih2YXIgWD0wO1g8SC5TaGVldE5hbWVzLmxlbmd0aDsrK1gpb0EoSC5TaGVldHNbSC5T''@;'; put 'put ''aGVldE5hbWVzW1hdXSwwLFgpfShIKTt2YXIgWD1pZXx8e307aWYoWC5jZWxsU3R5bGVzJiYoWC5jZWxsTkY9ITAsWC5zaGVldFN0dWJzPSEwKSwiYXJyYXkiPT1YLnR5cGUpe1gudHlwZT0iYmluYXJ5Ijt2YXIgd2U9bjcoSCxYKTtyZXR1cm4gWC50eXBlPSJhcnJheSIsZWUod2UpfXN3aXRj''@;'; put 'put ''aChYLmJvb2tUeXBlfHwieGxzYiIpe2Nhc2UieG1sIjpjYXNlInhsbWwiOnJldHVybiBWMyhNQShILFgpLFgpO2Nhc2Uic2xrIjpjYXNlInN5bGsiOnJldHVybiBWMyhsQyhILFgpLFgpO2Nhc2UiaHRtIjpjYXNlImh0bWwiOnJldHVybiBWMyhqZChILFgpLFgpO2Nhc2UidHh0IjpyZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24gaEMoSCxpZSl7c3dpdGNoKGllLnR5cGUpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gU2UuZW5jb2RlKEgpO2Nhc2UiYmluYXJ5IjpjYXNlInN0cmluZyI6cmV0dXJuIEg7Y2FzZSJmaWxlIjpyZXR1cm4gaHQoaWUuZmlsZSxILCJiaW5hcnkiKTtjYXNlImJ1ZmZlciI6cmV0dXJuIEll''@;'; put 'put ''P1RlKEgsImJpbmFyeSIpOkguc3BsaXQoIiIpLm1hcChmdW5jdGlvbihYKXtyZXR1cm4gWC5jaGFyQ29kZUF0KDApfSl9dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK2llLnR5cGUpfShwVChILFgpLFgpO2Nhc2UiY3N2IjpyZXR1cm4gVjMoSUEoSCxYKSxYLCJcdWZlZmYi''@;'; put 'put ''KTtjYXNlImRpZiI6cmV0dXJuIFYzKHNDKEgsWCksWCk7Y2FzZSJkYmYiOnJldHVybiBkQyh1QyhILFgpLFgpO2Nhc2UicHJuIjpyZXR1cm4gVjMoc2koSCxYKSxYKTtjYXNlInJ0ZiI6cmV0dXJuIFYzKHpQKEgsWCksWCk7Y2FzZSJldGgiOnJldHVybiBWMyhWbChILFgpLFgpO2Nhc2UiZm9k''@;'; put 'put ''cyI6cmV0dXJuIFYzKFRBKEgsWCksWCk7Y2FzZSJiaWZmMiI6WC5iaWZmfHwoWC5iaWZmPTIpO2Nhc2UiYmlmZjMiOlguYmlmZnx8KFguYmlmZj0zKTtjYXNlImJpZmY0IjpyZXR1cm4gWC5iaWZmfHwoWC5iaWZmPTQpLGRDKFhtKEgsWCksWCk7Y2FzZSJiaWZmNSI6WC5iaWZmfHwoWC5iaWZm''@;'; put 'put ''PTUpO2Nhc2UiYmlmZjgiOmNhc2UieGxhIjpjYXNlInhscyI6cmV0dXJuIFguYmlmZnx8KFguYmlmZj04KSxmdW5jdGlvbiBMQShILGllKXt2YXIgWD1pZXx8e307cmV0dXJuIFNjKGZ1bmN0aW9uIEJQKEgsaWUpe3ZhciBYPWllfHx7fSx3ZT1tdC51dGlscy5jZmJfbmV3KHtyb290OiJSIn0p''@;'; put 'put ''LHhlPSIvV29ya2Jvb2siO3N3aXRjaChYLmJvb2tUeXBlfHwieGxzIil7Y2FzZSJ4bHMiOlguYm9va1R5cGU9ImJpZmY4IjtjYXNlInhsYSI6WC5ib29rVHlwZXx8KFguYm9va1R5cGU9InhsYSIpO2Nhc2UiYmlmZjgiOnhlPSIvV29ya2Jvb2siLFguYmlmZj04O2JyZWFrO2Nhc2UiYmlmZjUi''@;'; put 'put ''OnhlPSIvQm9vayIsWC5iaWZmPTU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgdHlwZSAiK1guYm9va1R5cGUrIiBmb3IgWExTIENGQiIpfXJldHVybiBtdC51dGlscy5jZmJfYWRkKHdlLHhlLFhtKEgsWCkpLDg9PVguYmlmZiYmKEguUHJvcHN8fEguQ3VzdHByb3Bz''@;'; put 'put ''KSYmZnVuY3Rpb24gc1QoSCxpZSl7dmFyIFplLFg9W10sd2U9W10seGU9W10sRmU9MDtpZihILlByb3BzKWZvcihaZT1vbihILlByb3BzKSxGZT0wO0ZlPFplLmxlbmd0aDsrK0ZlKShPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmMsWmVbRmVdKT9YOk9iamVjdC5wcm90''@;'; put 'put ''b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwOSxaZVtGZV0pP3dlOnhlKS5wdXNoKFtaZVtGZV0sSC5Qcm9wc1taZVtGZV1dXSk7aWYoSC5DdXN0cHJvcHMpZm9yKFplPW9uKEguQ3VzdHByb3BzKSxGZT0wO0ZlPFplLmxlbmd0aDsrK0ZlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy''@;'; put 'put ''dHkuY2FsbChILlByb3BzfHx7fSxaZVtGZV0pfHwoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZjLFplW0ZlXSk/WDpPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocDksWmVbRmVdKT93ZTp4ZSkucHVzaChbWmVbRmVdLEguQ3VzdHByb3BzW1plW0Zl''@;'; put 'put ''XV1dKTt2YXIgamU9W107Zm9yKEZlPTA7RmU8eGUubGVuZ3RoOysrRmUpSTguaW5kZXhPZih4ZVtGZV1bMF0pPi0xfHxudWxsIT14ZVtGZV1bMV0mJmplLnB1c2goeGVbRmVdKTt3ZS5sZW5ndGgmJm10LnV0aWxzLmNmYl9hZGQoaWUsIi9ceDA1U3VtbWFyeUluZm9ybWF0aW9uIixhMCh3ZSxF''@;'; put 'put ''NV9TSSxwOSxVcCkpLChYLmxlbmd0aHx8amUubGVuZ3RoKSYmbXQudXRpbHMuY2ZiX2FkZChpZSwiL1x4MDVEb2N1bWVudFN1bW1hcnlJbmZvcm1hdGlvbiIsYTAoWCxFNV9EU0ksdmMscmIsamUubGVuZ3RoP2plOm51bGwsIjA1ZDVjZGQ1OWMyZTFiMTA5Mzk3MDgwMDJiMmNmOWFlIikpfShI''@;'; put 'put ''LHdlKSw4PT1YLmJpZmYmJkgudmJhcmF3JiZmdW5jdGlvbiBrbShILGllKXtpZS5GdWxsUGF0aHMuZm9yRWFjaChmdW5jdGlvbihYLHdlKXtpZigwIT13ZSl7dmFyIHhlPVgucmVwbGFjZSgvW15cL10qW1wvXS8sIi9fVkJBX1BST0pFQ1RfQ1VSLyIpOyIvIiE9PXhlLnNsaWNlKC0xKSYmbXQu''@;'; put 'put ''dXRpbHMuY2ZiX2FkZChILHhlLGllLkZpbGVJbmRleFt3ZV0uY29udGVudCl9fSl9KHdlLG10LnJlYWQoSC52YmFyYXcse3R5cGU6InN0cmluZyI9PXR5cGVvZiBILnZiYXJhdz8iYmluYXJ5IjoiYnVmZmVyIn0pKSx3ZX0oSCxYKSxYKX0oSCxYKTtjYXNlInhsc3giOmNhc2UieGxzbSI6Y2Fz''@;'; put 'put ''ZSJ4bGFtIjpjYXNlInhsc2IiOmNhc2Uib2RzIjpyZXR1cm4gZnVuY3Rpb24gdDcoSCxpZSl7dmFyIFg9aWV8fHt9LHdlPVpkKEgsWCkseGU9e307aWYoWC5jb21wcmVzc2lvbiYmKHhlLmNvbXByZXNzaW9uPSJERUZMQVRFIiksWC5wYXNzd29yZCl4ZS50eXBlPUllPyJub2RlYnVmZmVyIjoi''@;'; put 'put ''c3RyaW5nIjtlbHNlIHN3aXRjaChYLnR5cGUpe2Nhc2UiYmFzZTY0Ijp4ZS50eXBlPSJiYXNlNjQiO2JyZWFrO2Nhc2UiYmluYXJ5Ijp4ZS50eXBlPSJzdHJpbmciO2JyZWFrO2Nhc2Uic3RyaW5nIjp0aHJvdyBuZXcgRXJyb3IoIidzdHJpbmcnIG91dHB1dCB0eXBlIGludmFsaWQgZm9yICci''@;'; put 'put ''K1guYm9va1R5cGUrIicgZmlsZXMiKTtjYXNlImJ1ZmZlciI6Y2FzZSJmaWxlIjp4ZS50eXBlPUllPyJub2RlYnVmZmVyIjoic3RyaW5nIjticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIitYLnR5cGUpfXZhciBGZT13ZS5GdWxsUGF0aHM/bXQud3Jp''@;'; put 'put ''dGUod2Use2ZpbGVUeXBlOiJ6aXAiLHR5cGU6e25vZGVidWZmZXI6ImJ1ZmZlciIsc3RyaW5nOiJiaW5hcnkifVt4ZS50eXBlXXx8eGUudHlwZX0pOndlLmdlbmVyYXRlKHhlKTtyZXR1cm4gWC5wYXNzd29yZCYmdm9pZCAwIT09U2Y/U2MoU2YoRmUsWC5wYXNzd29yZCksWCk6ImZpbGUiPT09''@;'; put 'put ''WC50eXBlP2h0KFguZmlsZSxGZSk6InN0cmluZyI9PVgudHlwZT9XMChGZSk6RmV9KEgsWCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBib29rVHlwZSB8IitYLmJvb2tUeXBlKyJ8Iil9fWZ1bmN0aW9uIHBDKEgpe2lmKCFILmJvb2tUeXBlKXt2YXIgWD1ILmZpbGUu''@;'; put 'put ''c2xpY2UoSC5maWxlLmxhc3RJbmRleE9mKCIuIikpLnRvTG93ZXJDYXNlKCk7WC5tYXRjaCgvXlwuW2Etel0rJC8pJiYoSC5ib29rVHlwZT1YLnNsaWNlKDEpKSxILmJvb2tUeXBlPXt4bHM6ImJpZmY4IixodG06Imh0bWwiLHNsazoic3lsayIsc29jaWFsY2FsYzoiZXRoIixTaDMzdEpTOiJX''@;'; put 'put ''VEYifVtILmJvb2tUeXBlXXx8SC5ib29rVHlwZX19ZnVuY3Rpb24gZ0MoSCxpZSxYKXt2YXIgd2U9WHx8e307cmV0dXJuIHdlLnR5cGU9ImZpbGUiLHdlLmZpbGU9aWUscEMod2UpLG43KEgsd2UpfWZ1bmN0aW9uIEs0KEgsaWUsWCx3ZSx4ZSxGZSxaZSxqZSl7dmFyIFllPVhhKFgpLE10PWpl''@;'; put 'put ''LmRlZnZhbCx4dD1qZS5yYXcsUnQ9ITAsVXQ9MT09PXhlP1tdOnt9O2lmKDEhPT14ZSlpZihPYmplY3QuZGVmaW5lUHJvcGVydHkpdHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShVdCwiX19yb3dOdW1fXyIse3ZhbHVlOlgsZW51bWVyYWJsZTohMX0pfWNhdGNoKHp0KXtVdC5fX3Jvd051bV9f''@;'; put 'put ''PVh9ZWxzZSBVdC5fX3Jvd051bV9fPVg7aWYoIVplfHxIW1hdKWZvcih2YXIgbm49aWUucy5jO25uPD1pZS5lLmM7Kytubil7dmFyIENuPVplP0hbWF1bbm5dOkhbd2Vbbm5dK1llXTtpZih2b2lkIDAhPT1DbiYmdm9pZCAwIT09Q24udCl7dmFyIER0PUNuLnY7c3dpdGNoKENuLnQpe2Nhc2Ui''@;'; put 'put ''eiI6aWYobnVsbD09RHQpYnJlYWs7Y29udGludWU7Y2FzZSJlIjpEdD0wPT1EdD9udWxsOnZvaWQgMDticmVhaztjYXNlInMiOmNhc2UiZCI6Y2FzZSJiIjpjYXNlIm4iOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgdHlwZSAiK0NuLnQpfWlmKG51bGwhPUZl''@;'; put 'put ''W25uXSl7aWYobnVsbD09RHQpaWYoImUiPT1Dbi50JiZudWxsPT09RHQpVXRbRmVbbm5dXT1udWxsO2Vsc2UgaWYodm9pZCAwIT09TXQpVXRbRmVbbm5dXT1NdDtlbHNle2lmKCF4dHx8bnVsbCE9PUR0KWNvbnRpbnVlO1V0W0ZlW25uXV09bnVsbH1lbHNlIFV0W0ZlW25uXV09eHQ/RHQ6eTEo''@;'; put 'put ''Q24sRHQsamUpO251bGwhPUR0JiYoUnQ9ITEpfX1lbHNle2lmKHZvaWQgMD09PU10KWNvbnRpbnVlO251bGwhPUZlW25uXSYmKFV0W0ZlW25uXV09TXQpfX1yZXR1cm57cm93OlV0LGlzZW1wdHk6UnR9fWZ1bmN0aW9uIE9BKEgsaWUpe2lmKG51bGw9PUh8fG51bGw9PUhbIiFyZWYiXSlyZXR1''@;'; put 'put ''cm5bXTt2YXIgWD17dDoibiIsdjowfSx3ZT0wLHhlPTEsRmU9W10sWmU9MCxqZT0iIixZZT1KU09OLnBhcnNlKCd7InMiOnsiciI6MCwiYyI6MH0sImUiOnsiciI6MCwiYyI6MH19JyksTXQ9aWV8fHt9LHh0PW51bGwhPU10LnJhbmdlP010LnJhbmdlOkhbIiFyZWYiXTtzd2l0Y2goMT09PU10''@;'; put 'put ''LmhlYWRlcj93ZT0xOiJBIj09PU10LmhlYWRlcj93ZT0yOkFycmF5LmlzQXJyYXkoTXQuaGVhZGVyKT93ZT0zOm51bGw9PU10LmhlYWRlciYmKHdlPTApLHR5cGVvZiB4dCl7Y2FzZSJzdHJpbmciOlllPUZvKHh0KTticmVhaztjYXNlIm51bWJlciI6KFllPUZvKEhbIiFyZWYiXSkpLnMucj14''@;'; put 'put ''dDticmVhaztkZWZhdWx0OlllPXh0fXdlPjAmJih4ZT0wKTt2YXIgUnQ9WGEoWWUucy5yKSxVdD1bXSxubj1bXSxDbj0wLER0PTAsenQ9QXJyYXkuaXNBcnJheShIKSxQbj1ZZS5zLnIsVG49MCxPbj0wO2Zvcih6dCYmIUhbUG5dJiYoSFtQbl09W10pLFRuPVllLnMuYztUbjw9WWUuZS5jOysr''@;'; put 'put ''VG4pc3dpdGNoKFV0W1RuXT1fYShUbiksWD16dD9IW1BuXVtUbl06SFtVdFtUbl0rUnRdLHdlKXtjYXNlIDE6RmVbVG5dPVRuLVllLnMuYzticmVhaztjYXNlIDI6RmVbVG5dPVV0W1RuXTticmVhaztjYXNlIDM6RmVbVG5dPU10LmhlYWRlcltUbi1ZZS5zLmNdO2JyZWFrO2RlZmF1bHQ6Zm9y''@;'; put 'put ''KG51bGw9PVgmJihYPUpTT04ucGFyc2UoJ3sidyI6ICJfX0VNUFRZIiwgInQiOiAicyJ9JykpLGplPVplPXkxKFgsbnVsbCxNdCksRHQ9MCxPbj0wO09uPEZlLmxlbmd0aDsrK09uKUZlW09uXT09amUmJihqZT1aZSsiXyIrICsrRHQpO0ZlW1RuXT1qZX1mb3IoUG49WWUucy5yK3hlO1BuPD1Z''@;'; put 'put ''ZS5lLnI7KytQbil7dmFyIFluPUs0KEgsWWUsUG4sVXQsd2UsRmUsenQsTXQpOyghMT09PVluLmlzZW1wdHl8fCgxPT09d2U/ITEhPT1NdC5ibGFua3Jvd3M6TXQuYmxhbmtyb3dzKSkmJihubltDbisrXT1Zbi5yb3cpfXJldHVybiBubi5sZW5ndGg9Q24sbm59dmFyIEI2PS8iL2c7ZnVuY3Rp''@;'; put 'put ''b24gdGkoSCxpZSxYLHdlLHhlLEZlLFplLGplKXtmb3IodmFyIFllPSEwLE10PVtdLHh0PSIiLFJ0PVhhKFgpLFV0PWllLnMuYztVdDw9aWUuZS5jOysrVXQpaWYod2VbVXRdKXt2YXIgbm49amUuZGVuc2U/KEhbWF18fFtdKVtVdF06SFt3ZVtVdF0rUnRdO2lmKG51bGw9PW5uKXh0PSIiO2Vs''@;'; put 'put ''c2UgaWYobnVsbCE9bm4udil7WWU9ITEseHQ9IiIreTEobm4sbnVsbCxqZSk7Zm9yKHZhciBDbj0wLER0PTA7Q24hPT14dC5sZW5ndGg7KytDbilpZigoRHQ9eHQuY2hhckNvZGVBdChDbikpPT09eGV8fER0PT09RmV8fDM0PT09RHQpe3h0PSciJyt4dC5yZXBsYWNlKEI2LCciIicpKyciJzti''@;'; put 'put ''cmVha30iSUQiPT14dCYmKHh0PSciSUQiJyl9ZWxzZSBudWxsPT1ubi5mfHxubi5GP3h0PSIiOihZZT0hMSwoeHQ9Ij0iK25uLmYpLmluZGV4T2YoIiwiKT49MCYmKHh0PSciJyt4dC5yZXBsYWNlKEI2LCciIicpKyciJykpO010LnB1c2goeHQpfXJldHVybiExPT09amUuYmxhbmtyb3dzJiZZ''@;'; put 'put ''ZT9udWxsOk10LmpvaW4oWmUpfWZ1bmN0aW9uIEw1KEgsaWUpe3ZhciBYPVtdLHdlPW51bGw9PWllP3t9OmllO2lmKG51bGw9PUh8fG51bGw9PUhbIiFyZWYiXSlyZXR1cm4iIjt2YXIgeGU9Rm8oSFsiIXJlZiJdKSxGZT12b2lkIDAhPT13ZS5GUz93ZS5GUzoiLCIsWmU9RmUuY2hhckNvZGVB''@;'; put 'put ''dCgwKSxqZT12b2lkIDAhPT13ZS5SUz93ZS5SUzoiXG4iLFllPWplLmNoYXJDb2RlQXQoMCksTXQ9bmV3IFJlZ0V4cCgoInwiPT1GZT8iXFx8IjpGZSkrIiskIikseHQ9IiIsUnQ9W107d2UuZGVuc2U9QXJyYXkuaXNBcnJheShIKTtmb3IodmFyIFV0PXdlLnNraXBIaWRkZW4mJkhbIiFjb2xz''@;'; put 'put ''Il18fFtdLG5uPXdlLnNraXBIaWRkZW4mJkhbIiFyb3dzIl18fFtdLENuPXhlLnMuYztDbjw9eGUuZS5jOysrQ24pKFV0W0NuXXx8e30pLmhpZGRlbnx8KFJ0W0NuXT1fYShDbikpO2Zvcih2YXIgRHQ9eGUucy5yO0R0PD14ZS5lLnI7KytEdCkobm5bRHRdfHx7fSkuaGlkZGVufHxudWxsIT0o''@;'; put 'put ''eHQ9dGkoSCx4ZSxEdCxSdCxaZSxZZSxGZSx3ZSkpJiYod2Uuc3RyaXAmJih4dD14dC5yZXBsYWNlKE10LCIiKSksWC5wdXNoKHh0K2plKSk7cmV0dXJuIGRlbGV0ZSB3ZS5kZW5zZSxYLmpvaW4oIiIpfWZ1bmN0aW9uIG1DKEgsaWUpe2llfHwoaWU9e30pLGllLkZTPSJcdCIsaWUuUlM9Ilxu''@;'; put 'put ''Ijt2YXIgWD1MNShILGllKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGNwdGFibGV8fCJzdHJpbmciPT1pZS50eXBlKXJldHVybiBYO3ZhciB3ZT1jcHRhYmxlLnV0aWxzLmVuY29kZSgxMjAwLFgsInN0ciIpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSkrU3RyaW5nLmZyb21DaGFy''@;'; put 'put ''Q29kZSgyNTQpK3dlfWZ1bmN0aW9uIHZDKEgpe3ZhciBYLGllPSIiLHdlPSIiO2lmKG51bGw9PUh8fG51bGw9PUhbIiFyZWYiXSlyZXR1cm5bXTt2YXIgamUseGU9Rm8oSFsiIXJlZiJdKSxGZT0iIixaZT1bXSxZZT1bXSxNdD1BcnJheS5pc0FycmF5KEgpO2ZvcihqZT14ZS5zLmM7amU8PXhl''@;'; put 'put ''LmUuYzsrK2plKVplW2plXT1fYShqZSk7Zm9yKHZhciB4dD14ZS5zLnI7eHQ8PXhlLmUucjsrK3h0KWZvcihGZT1YYSh4dCksamU9eGUucy5jO2plPD14ZS5lLmM7KytqZSlpZihpZT1aZVtqZV0rRmUsd2U9IiIsdm9pZCAwIT09KFg9TXQ/KEhbeHRdfHxbXSlbamVdOkhbaWVdKSl7aWYobnVs''@;'; put 'put ''bCE9WC5GKXtpZihpZT1YLkYsIVguZiljb250aW51ZTt3ZT1YLmYsLTE9PWllLmluZGV4T2YoIjoiKSYmKGllPWllKyI6IitpZSl9aWYobnVsbCE9WC5mKXdlPVguZjtlbHNle2lmKCJ6Ij09WC50KWNvbnRpbnVlO2lmKCJuIj09WC50JiZudWxsIT1YLnYpd2U9IiIrWC52O2Vsc2UgaWYoImIi''@;'; put 'put ''PT1YLnQpd2U9WC52PyJUUlVFIjoiRkFMU0UiO2Vsc2UgaWYodm9pZCAwIT09WC53KXdlPSInIitYLnc7ZWxzZXtpZih2b2lkIDA9PT1YLnYpY29udGludWU7d2U9InMiPT1YLnQ/IiciK1gudjoiIitYLnZ9fVllW1llLmxlbmd0aF09aWUrIj0iK3dlfXJldHVybiBZZX1mdW5jdGlvbiB2VChI''@;'; put 'put ''LGllLFgpe3ZhciB3ZT1YfHx7fSx4ZT0rIXdlLnNraXBIZWFkZXIsRmU9SHx8e30sWmU9MCxqZT0wO2lmKEZlJiZudWxsIT13ZS5vcmlnaW4paWYoIm51bWJlciI9PXR5cGVvZiB3ZS5vcmlnaW4pWmU9d2Uub3JpZ2luO2Vsc2V7dmFyIFllPSJzdHJpbmciPT10eXBlb2Ygd2Uub3JpZ2luP3Vs''@;'; put 'put ''KHdlLm9yaWdpbik6d2Uub3JpZ2luO1plPVllLnIsamU9WWUuY312YXIgTXQseHQ9SlNPTi5wYXJzZSgneyJzIjogeyJjIjowLCAiciI6MH0sICJlIjogeyJjIjowLCAiciI6MH19Jyk7aWYoeHQuZS5jPWplLHh0LmUucj1aZStpZS5sZW5ndGgtMSt4ZSxGZVsiIXJlZiJdKXt2YXIgUnQ9Rm8o''@;'; put 'put ''RmVbIiFyZWYiXSk7eHQuZS5jPU1hdGgubWF4KHh0LmUuYyxSdC5lLmMpLHh0LmUucj1NYXRoLm1heCh4dC5lLnIsUnQuZS5yKSwtMT09WmUmJih4dC5lLnI9KFplPVJ0LmUucisxKStpZS5sZW5ndGgtMSt4ZSl9ZWxzZS0xPT1aZSYmKFplPTAseHQuZS5yPWllLmxlbmd0aC0xK3hlKTt2YXIg''@;'; put 'put ''VXQ9d2UuaGVhZGVyfHxbXSxubj0wO2llLmZvckVhY2goZnVuY3Rpb24oRHQsenQpe29uKER0KS5mb3JFYWNoKGZ1bmN0aW9uKFBuKXstMT09KG5uPVV0LmluZGV4T2YoUG4pKSYmKFV0W25uPVV0Lmxlbmd0aF09UG4pO3ZhciBUbj1EdFtQbl0sT249InoiLFluPSIiLE1yPVkwKHtjOmplK25u''@;'; put 'put ''LHI6WmUrenQreGV9KTtpZihNdD1hYy5zaGVldF9nZXRfY2VsbChGZSxNciksIVRufHwib2JqZWN0IiE9dHlwZW9mIFRufHxUbiBpbnN0YW5jZW9mIERhdGUpe2lmKCJudW1iZXIiPT10eXBlb2YgVG4/T249Im4iOiJib29sZWFuIj09dHlwZW9mIFRuP09uPSJiIjoic3RyaW5nIj09dHlwZW9m''@;'; put 'put ''IFRuP09uPSJzIjpUbiBpbnN0YW5jZW9mIERhdGU/KE9uPSJkIix3ZS5jZWxsRGF0ZXN8fChPbj0ibiIsVG49ZnQoVG4pKSxZbj1NdC56JiZGLmlzX2RhdGUoTXQueik/TXQuejp3ZS5kYXRlTkZ8fEYuX3RhYmxlWzE0XSk6bnVsbD09PVRuJiZ3ZS5udWxsRXJyb3ImJihPbj0iZSIsVG49MCks''@;'; put 'put ''TXQ/KE10LnQ9T24sTXQudj1UbixkZWxldGUgTXQudyxkZWxldGUgTXQuUixZbiYmKE10Lno9WW4pKTpGZVtNcl09TXQ9e3Q6T24sdjpUbn0sWW4mJihNdC56PVluKSxNdCYmTXQuaCl0cnl7aWYoTXQuUj11cy5odG1sX3RvX3JzKE10LmgpLCFNdC52KXtNdC52PSIiO2Zvcih2YXIgYWk9MDth''@;'; put 'put ''aTxNdC5SLmxlbmd0aDsrK2FpKU10LnYrPU10LlJbYWldLnZ8fCIifX1jYXRjaCh5cil7fX1lbHNlIEZlW01yXT1Ubn0pfSkseHQuZS5jPU1hdGgubWF4KHh0LmUuYyxqZStVdC5sZW5ndGgtMSk7dmFyIENuPVhhKFplKTtpZih4ZSlmb3Iobm49MDtubjxVdC5sZW5ndGg7KytubilGZVtfYShu''@;'; put 'put ''bitqZSkrQ25dPXt0OiJzIix2OlV0W25uXX07cmV0dXJuIEZlWyIhcmVmIl09ZmEoeHQpLEZlfXZhciBhYz17ZW5jb2RlX2NvbDpfYSxlbmNvZGVfcm93OlhhLGVuY29kZV9jZWxsOlkwLGVuY29kZV9yYW5nZTpmYSxkZWNvZGVfY29sOm1oLGRlY29kZV9yb3c6YXMsc3BsaXRfY2VsbDpmdW5j''@;'; put 'put ''dGlvbiBzbChIKXtyZXR1cm4gSC5yZXBsYWNlKC8oXCQ/W0EtWl0qKShcJD9cZCopLywiJDEsJDIiKS5zcGxpdCgiLCIpfSxkZWNvZGVfY2VsbDp1bCxkZWNvZGVfcmFuZ2U6QXMsZm9ybWF0X2NlbGw6eTEsZ2V0X2Zvcm11bGFlOnZDLG1ha2VfY3N2Okw1LG1ha2VfanNvbjpPQSxtYWtlX2Zv''@;'; put 'put ''cm11bGFlOnZDLGh0bWxfdG9fcnM6dXMuaHRtbF90b19ycyxzaGVldF9hZGRfYW9hOmxmLHNoZWV0X2FkZF9qc29uOnZULHNoZWV0X2FkZF9kb206VmgsYW9hX3RvX3NoZWV0Om1kLGpzb25fdG9fc2hlZXQ6ZnVuY3Rpb24gQ0coSCxpZSl7cmV0dXJuIHZUKG51bGwsSCxpZSl9LHRhYmxlX3Rv''@;'; put 'put ''X3NoZWV0OnJDLHRhYmxlX3RvX2Jvb2s6ZnVuY3Rpb24gVDUoSCxpZSl7cmV0dXJuIHcxKHJDKEgsaWUpLGllKX0sc2hlZXRfdG9fY3N2Okw1LHNoZWV0X3RvX3R4dDptQyxzaGVldF90b19qc29uOk9BLHNoZWV0X3RvX2h0bWw6dXMuZnJvbV9zaGVldCxzaGVldF90b19mb3JtdWxhZTp2Qyxz''@;'; put 'put ''aGVldF90b19yb3dfb2JqZWN0X2FycmF5Ok9BfTtmdW5jdGlvbiBjcyhILGllLFgsd2UseGUpe3ZhciBGZTtpZihILnN0eWxlJiYhKEguX3JhbmdlJiYoRmU9InN0cmluZyI9PXR5cGVvZiBILl9yYW5nZT9VLnV0aWxzLmRlY29kZV9yYW5nZShILl9yYW5nZSk6SC5fcmFuZ2UsWC5jPkZlLmUu''@;'; put 'put ''Y3x8WC5jPEZlLnMuY3x8WC5yPkZlLmUucnx8WC5yPEZlLnMucikpJiZGZSl7dmFyIFplPUguc3R5bGUuc3R5bGU7aWYoWmUpe1plLndob2xlVGFibGUmJmFjLmFwcGx5X3N0eWxlX2RlbHRhKHdlLFplLndob2xlVGFibGUpO2U6aWYoWmUuaGVhZGVyUm93KWlmKHhlKXtpZihYLnIhPUZlLnMu''@;'; put 'put ''cilicmVhayBlO25yKEguc3R5bGUuY29saGVhZCl8fGFjLmFwcGx5X3N0eWxlX2RlbHRhKHdlLFplLmhlYWRlclJvdyl9ZWxzZXtpZihYLnIhPUZlLnMucilicmVhayBlO25yKEguaGVhZGVyKXx8YWMuYXBwbHlfc3R5bGVfZGVsdGEod2UsWmUuaGVhZGVyUm93KX19fX12b2lkIDAhPT1nVCYm''@;'; put 'put ''KGFjLnRlc3RfcGFzc3dvcmQ9Z1QpLHZvaWQgMCE9PUxpJiYoYWMuaGFzaF9wYXNzd29yZD1MaSksYWMuc2hlZXRfc2V0X3JhbmdlX3N0eWxlPWZ1bmN0aW9uKEgsaWUsWCl7aWYoWCl7dmFyIHdlPSJzdHJpbmciPT10eXBlb2YgaWU/Rm8oaWUpOmllO251bGwhPXdlLnImJm51bGwhPXdlLmMm''@;'; put 'put ''Jih3ZT17czp3ZSxlOndlfSk7dmFyIGplLHhlPXdlLnMucixGZT0wLFplPSIiLFllPUFzKEhbIiFyZWYiXXx8IkExIik7WWUucy5yPndlLnMuciYmKFllLnMucj13ZS5zLnIpLFllLnMuYz53ZS5zLmMmJihZZS5zLmM9d2Uucy5jKSxZZS5lLnI8d2UuZS5yJiYoWWUuZS5yPXdlLmUuciksWWUu''@;'; put 'put ''ZS5jPHdlLmUuYyYmKFllLmUuYz13ZS5lLmMpLEhbIiFyZWYiXT1mYShZZSk7Zm9yKHZhciB4dD1BcnJheS5pc0FycmF5KEgpO3hlPD13ZS5lLnI7Kyt4ZSlmb3IoRmU9d2Uucy5jO0ZlPD13ZS5lLmM7KytGZSl4dD8oSFt4ZV18fChIW3hlXT1bXSksSFt4ZV1bRmVdfHwoSFt4ZV1bRmVdPXt0''@;'; put 'put ''OiJ6In0pLGplPUhbeGVdW0ZlXSk6KEhbWmU9WTAoe3I6eGUsYzpGZX0pXXx8KEhbWmVdPXt0OiJ6In0pLGplPUhbWmVdKSxqZS5zfHwoamUucz17fSksT2JqZWN0LmtleXMoWCkuZm9yRWFjaChNdCksamUucy5wYXR0ZXJuVHlwZSYmIWplLnMuZmdDb2xvciYmKGRlbGV0ZSBqZS5zLnBhdHRl''@;'; put 'put ''cm5UeXBlLGRlbGV0ZSBqZS5zLmJnQ29sb3IpLChqZS5zLmZnQ29sb3J8fGplLnMuYmdDb2xvcikmJiJub25lIj09KGplLnMucGF0dGVyblR5cGV8fCJub25lIikmJihqZS5zLnBhdHRlcm5UeXBlPSJzb2xpZCIpO2lmKHhlPXdlLnMucixYLnRvcHx8bnVsbD09PVgudG9wKWZvcihGZT13ZS5z''@;'; put 'put ''LmM7RmU8PXdlLmUuYzsrK0ZlKXtpZih4dCl7aWYoIUhbeGVdKWNvbnRpbnVlO2plPUhbeGVdW0ZlXX1lbHNlIFplPVkwKHtyOnhlLGM6RmV9KSxqZT1IW1plXTshamV8fChudWxsPT09WC50b3A/ZGVsZXRlIGplLnMudG9wOmplLnMudG9wPWxuKFgudG9wKSl9aWYoeGU9d2UuZS5yLFguYm90''@;'; put 'put ''dG9tfHxudWxsPT09WC5ib3R0b20pZm9yKEZlPXdlLnMuYztGZTw9d2UuZS5jOysrRmUpe2lmKHh0KXtpZighSFt4ZV0pY29udGludWU7amU9SFt4ZV1bRmVdfWVsc2UgWmU9WTAoe3I6eGUsYzpGZX0pLGplPUhbWmVdOyFqZXx8KG51bGw9PT1YLmJvdHRvbT9kZWxldGUgamUucy5ib3R0b206''@;'; put 'put ''amUucy5ib3R0b209bG4oWC5ib3R0b20pKX1pZihGZT13ZS5zLmMsWC5sZWZ0fHxudWxsPT09WC5sZWZ0KWZvcih4ZT13ZS5zLnI7eGU8PXdlLmUucjsrK3hlKXtpZih4dCl7aWYoIUhbeGVdKWNvbnRpbnVlO2plPUhbeGVdW0ZlXX1lbHNlIFplPVkwKHtyOnhlLGM6RmV9KSxqZT1IW1plXTsh''@;'; put 'put ''amV8fChudWxsPT09WC5sZWZ0P2RlbGV0ZSBqZS5zLmxlZnQ6amUucy5sZWZ0PWxuKFgubGVmdCkpfWlmKEZlPXdlLmUuYyxYLnJpZ2h0fHxudWxsPT09WC5yaWdodClmb3IoeGU9d2Uucy5yO3hlPD13ZS5lLnI7Kyt4ZSl7aWYoeHQpe2lmKCFIW3hlXSljb250aW51ZTtqZT1IW3hlXVtGZV19''@;'; put 'put ''ZWxzZSBaZT1ZMCh7cjp4ZSxjOkZlfSksamU9SFtaZV07IWplfHwobnVsbD09PVgucmlnaHQ/ZGVsZXRlIGplLnMucmlnaHQ6amUucy5yaWdodD1sbihYLnJpZ2h0KSl9fWZ1bmN0aW9uIE10KFJ0KXtpZigidG9wIiE9UnQmJiJib3R0b20iIT1SdCYmImxlZnQiIT1SdCYmInJpZ2h0IiE9UnQp''@;'; put 'put ''e2lmKCJ6Ij09UnQpcmV0dXJuIHZvaWQoamUuej1YLnopO2lmKCJhbGlnbm1lbnQiPT1SdClyZXR1cm4gdm9pZChqZS5zW1J0XT9PYmplY3Qua2V5cyhYW1J0XSkuZm9yRWFjaChmdW5jdGlvbihVdCl7amUuc1tSdF1bVXRdPVhbUnRdW1V0XX0pOmplLnNbUnRdPWxuKFhbUnRdKSk7aWYoImlu''@;'; put 'put ''Y29sIj09UnQpcmV0dXJuIEZlPndlLnMuYyYmKG51bGw9PT1YLmxlZnQ/ZGVsZXRlIGplLnMubGVmdDpqZS5zLmxlZnQ9Im9iamVjdCI9PXR5cGVvZiBYW1J0XT9sbihYW1J0XSk6WFtSdF0pLHZvaWQoRmU8d2UuZS5jJiYobnVsbD09PVgucmlnaHQ/ZGVsZXRlIGplLnMucmlnaHQ6amUucy5y''@;'; put 'put ''aWdodD0ib2JqZWN0Ij09dHlwZW9mIFhbUnRdP2xuKFhbUnRdKTpYW1J0XSkpO2lmKCJpbnJvdyI9PVJ0KXJldHVybiB4ZT53ZS5zLnImJihudWxsPT09WC50b3A/ZGVsZXRlIGplLnMudG9wOmplLnMudG9wPSJvYmplY3QiPT10eXBlb2YgWFtSdF0/bG4oWFtSdF0pOlhbUnRdKSx2b2lkKHhl''@;'; put 'put ''PHdlLmUuciYmKG51bGw9PT1YLmJvdHRvbT9kZWxldGUgamUucy5ib3R0b206amUucy5ib3R0b209Im9iamVjdCI9PXR5cGVvZiBYW1J0XT9sbihYW1J0XSk6WFtSdF0pKTtudWxsPT09WFtSdF0/ZGVsZXRlIGplLnNbUnRdOmplLnNbUnRdPVhbUnRdJiZBcnJheS5pc0FycmF5KFhbUnRdKT9Y''@;'; put 'put ''W1J0XS5zbGljZSgpLm1hcChmdW5jdGlvbihVdCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBVdD9sbihVdCk6VXR9KToib2JqZWN0Ij09dHlwZW9mIFhbUnRdP2xuKFhbUnRdKTpYW1J0XX19fSxhYy5hcHBseV9zdHlsZV9kZWx0YT1mdW5jdGlvbihILGllKXtbInN6IiwiYm9sZCIsIml0YWxp''@;'; put 'put ''YyIsInVuZGVybGluZSIsInN0cmlrZSIsIm5hbWUiLCJ2YWxpZ24iXS5mb3JFYWNoKGZ1bmN0aW9uKFgpe3ZhciB3ZT1YOyJiZ0NvbG9yIj09WD93ZT0iZmdDb2xvciI6ImZnQ29sb3IiPT1YJiYod2U9ImJnQ29sb3IiKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaWUs''@;'; put 'put ''WCkmJihudWxsPT09aWVbWF0/ZGVsZXRlIEhbd2VdOm51bGwhPWllW1hdJiYoSFt3ZV09aWVbWF0pKX0pLFsibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIiwiYWxpZ25tZW50IiwicHJvdGVjdGlvbiIsImNvbG9yIiwiZmdDb2xvciIsImJnQ29sb3IiXS5mb3JFYWNoKGZ1bmN0aW9uKFgp''@;'; put 'put ''e09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpZSxYKSYmKG51bGw9PT1pZVtYXT9kZWxldGUgSFtYXTpudWxsIT1pZVtYXSYmKEhbWF09bG4oaWVbWF0pKSl9KX0sYWMuZ2V0X2NvbXB1dGVkX3N0eWxlPWZ1bmN0aW9uKEgsaWUpeyJzdHJpbmciPT10eXBlb2YgaWUmJihp''@;'; put 'put ''ZT1VLnV0aWxzLmRlY29kZV9jZWxsKGllKSk7dmFyIFg9QXJyYXkuaXNBcnJheShIKT8oSFtpZS5yXXx8W10pW2llLmNdOkhbVS51dGlscy5lbmNvZGVfY2VsbChpZSldLHdlPWxuKFgmJlguc3x8e30pO3JldHVybiBIWyIhdGFibGVzIl0mJkhbIiF0YWJsZXMiXS5mb3JFYWNoKGZ1bmN0aW9u''@;'; put 'put ''KHhlKXtjcyh4ZSwwLGllLHdlKX0pLEhbIiFwaXZvdHMiXSYmSFsiIXBpdm90cyJdLmZvckVhY2goZnVuY3Rpb24oeGUpe2NzKHhlLDAsaWUsd2UsITApfSksd2V9O3ZhciBqMz17fTthYy5jZWxsX2FycmF5X3RvX2Nzdl9yb3c9ZnVuY3Rpb24oSCxpZSl7dmFyIFg9bnVsbD09aWU/e306aWUs''@;'; put 'put ''d2U9dm9pZCAwIT09WC5GUz9YLkZTOiIsIix4ZT13ZS5jaGFyQ29kZUF0KDApLEZlPXZvaWQgMCE9PVguUlM/WC5SUzoiXG4iLFplPUZlLmNoYXJDb2RlQXQoMCksamU9ajNbd2VdfHwoajNbd2VdPW5ldyBSZWdFeHAoKCJ8Ij09d2U/IlxcfCI6d2UpKyIrJCIpKSxZZT1mdW5jdGlvbiBHZChI''@;'; put 'put ''LGllLFgsd2UseGUpe2Zvcih2YXIgRmU9ITAsWmU9W10samU9IiIsWWU9MDtZZTw9SC5sZW5ndGgtMTsrK1llKXt2YXIgTXQ9SFtZZV07aWYobnVsbD09TXQpamU9IiI7ZWxzZSBpZihudWxsIT1NdC52KXtGZT0hMSxqZT0iIit5MShNdCxudWxsLHhlKTtmb3IodmFyIHh0PTAsUnQ9MDt4dCE9''@;'; put 'put ''PWplLmxlbmd0aDsrK3h0KWlmKChSdD1qZS5jaGFyQ29kZUF0KHh0KSk9PT1pZXx8UnQ9PT1YfHwzND09PVJ0KXtqZT0nIicramUucmVwbGFjZShCNiwnIiInKSsnIic7YnJlYWt9IklEIj09amUmJihqZT0nIklEIicpfWVsc2UgbnVsbD09TXQuZnx8TXQuRj9qZT0iIjooRmU9ITEsKGplPSI9''@;'; put 'put ''IitNdC5mKS5pbmRleE9mKCIsIik+PTAmJihqZT0nIicramUucmVwbGFjZShCNiwnIiInKSsnIicpKTtaZS5wdXNoKGplKX1yZXR1cm4hMT09PXhlLmJsYW5rcm93cyYmRmU/bnVsbDpaZS5qb2luKHdlKX0oSCx4ZSxaZSx3ZSxYKTtyZXR1cm4gWC5zdHJpcCYmKFllPVllLnJlcGxhY2UoamUs''@;'; put 'put ''IiIpKSxZZStGZX0sZnVuY3Rpb24oSCl7ZnVuY3Rpb24gWChGZSxaZSxqZSl7cmV0dXJuIG51bGwhPUZlW1plXT9GZVtaZV06RmVbWmVdPWplfWZ1bmN0aW9uIHdlKEZlLFplLGplKXtpZigic3RyaW5nIj09dHlwZW9mIFplKXtpZihBcnJheS5pc0FycmF5KEZlKSl7dmFyIFllPXVsKFplKTty''@;'; put 'put ''ZXR1cm4gRmVbWWUucl18fChGZVtZZS5yXT1bXSksRmVbWWUucl1bWWUuY118fChGZVtZZS5yXVtZZS5jXT17dDoieiJ9KX1yZXR1cm4gRmVbWmVdfHwoRmVbWmVdPXt0OiJ6In0pfXJldHVybiB3ZShGZSxZMCgibnVtYmVyIiE9dHlwZW9mIFplP1plOntyOlplLGM6amV8fDB9KSl9SC5jb25z''@;'; put 'put ''dHM9SC5jb25zdHN8fHt9LEguc2hlZXRfZ2V0X2NlbGw9d2UsSC5ib29rX25ldz1mdW5jdGlvbigpe3JldHVybntTaGVldE5hbWVzOltdLFNoZWV0czp7fX19LEguYm9va19hcHBlbmRfc2hlZXQ9ZnVuY3Rpb24oRmUsWmUsamUpe2lmKCFqZSlmb3IodmFyIFllPTE7WWU8PTY1NTM1JiYtMSE9''@;'; put 'put ''RmUuU2hlZXROYW1lcy5pbmRleE9mKGplPSJTaGVldCIrWWUpOysrWWUpO2lmKFp4KGplKSxGZS5TaGVldE5hbWVzLmluZGV4T2YoamUpPj0wKXRocm93IG5ldyBFcnJvcigiV29ya3NoZWV0IHdpdGggbmFtZSB8IitqZSsifCBhbHJlYWR5IGV4aXN0cyEiKTtGZS5TaGVldE5hbWVzLnB1c2go''@;'; put 'put ''amUpLEZlLlNoZWV0c1tqZV09WmV9LEguYm9va19zZXRfc2hlZXRfdmlzaWJpbGl0eT1mdW5jdGlvbihGZSxaZSxqZSl7WChGZSwiV29ya2Jvb2siLHt9KSxYKEZlLldvcmtib29rLCJTaGVldHMiLFtdKTt2YXIgWWU9ZnVuY3Rpb24geGUoRmUsWmUpe2lmKCJudW1iZXIiPT10eXBlb2YgWmUp''@;'; put 'put ''e2lmKFplPj0wJiZGZS5TaGVldE5hbWVzLmxlbmd0aD5aZSlyZXR1cm4gWmU7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBzaGVldCAjICIrWmUpfWlmKCJzdHJpbmciPT10eXBlb2YgWmUpe3ZhciBqZT1GZS5TaGVldE5hbWVzLmluZGV4T2YoWmUpO2lmKGplPi0xKXJldHVybiBqZTt0''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNoZWV0IG5hbWUgfCIrWmUrInwiKX10aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNoZWV0IHwiK1plKyJ8Iil9KEZlLFplKTtzd2l0Y2goWChGZS5Xb3JrYm9vay5TaGVldHMsWWUse30pLGplKXtjYXNlIDA6Y2FzZSAxOmNhc2UgMjpi''@;'; put 'put ''cmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiQmFkIHNoZWV0IHZpc2liaWxpdHkgc2V0dGluZyAiK2plKX1GZS5Xb3JrYm9vay5TaGVldHNbWWVdLkhpZGRlbj1qZX0sZnVuY3Rpb24gaWUoRmUpe0ZlLmZvckVhY2goZnVuY3Rpb24oWmUpe0guY29uc3RzW1plWzBdXT1aZVsxXX0pfShb''@;'; put 'put ''WyJTSEVFVF9WSVNJQkxFIiwwXSxbIlNIRUVUX0hJRERFTiIsMV0sWyJTSEVFVF9WRVJZX0hJRERFTiIsMl1dKSxILmNlbGxfc2V0X251bWJlcl9mb3JtYXQ9ZnVuY3Rpb24oRmUsWmUpe3JldHVybiBGZS56PVplLEZlfSxILmNlbGxfc2V0X2h5cGVybGluaz1mdW5jdGlvbihGZSxaZSxqZSl7''@;'; put 'put ''cmV0dXJuIFplPyhGZS5sPXtUYXJnZXQ6WmV9LGplJiYoRmUubC5Ub29sdGlwPWplKSxGZS5zfHwoRmUucz17fSksRmUucy5jb2xvcj17dGhlbWU6MTB9KTooZGVsZXRlIEZlLmwsRmUucyYmRmUucy5jb2xvciYmMTA9PUZlLnMuY29sb3IudGhlbWUmJmRlbGV0ZSBGZS5zLmNvbG9yKSxGZX0s''@;'; put 'put ''SC5jZWxsX3NldF9pbnRlcm5hbF9saW5rPWZ1bmN0aW9uKEZlLFplLGplKXtyZXR1cm4gSC5jZWxsX3NldF9oeXBlcmxpbmsoRmUsIiMiK1plLGplKX0sSC5jZWxsX2FkZF9jb21tZW50PWZ1bmN0aW9uKEZlLFplLGplKXtGZS5jfHwoRmUuYz1bXSksRmUuYy5wdXNoKHt0OlplLGE6amV8fCJT''@;'; put 'put ''aGVldEpTIn0pfSxILnNoZWV0X3NldF9hcnJheV9mb3JtdWxhPWZ1bmN0aW9uKEZlLFplLGplKXtmb3IodmFyIFllPSJzdHJpbmciIT10eXBlb2YgWmU/WmU6Rm8oWmUpLE10PSJzdHJpbmciPT10eXBlb2YgWmU/WmU6ZmEoWmUpLHh0PVllLnMucjt4dDw9WWUuZS5yOysreHQpZm9yKHZhciBS''@;'; put 'put ''dD1ZZS5zLmM7UnQ8PVllLmUuYzsrK1J0KXt2YXIgVXQ9d2UoRmUseHQsUnQpO1V0LnQ9Im4iLFV0LkY9TXQsZGVsZXRlIFV0LnYseHQ9PVllLnMuciYmUnQ9PVllLnMuYyYmKFV0LmY9amUpfXJldHVybiBGZX19KGFjKSxJZSYmZnVuY3Rpb24oKXt2YXIgSD1MKDI5NSkuUmVhZGFibGU7VS5z''@;'; put 'put ''dHJlYW09e3RvX2pzb246ZnVuY3Rpb24oeGUsRmUpe3ZhciBaZT1IKHtvYmplY3RNb2RlOiEwfSk7aWYobnVsbD09eGV8fG51bGw9PXhlWyIhcmVmIl0pcmV0dXJuIFplLnB1c2gobnVsbCksWmU7dmFyIGplPXt0OiJuIix2OjB9LFllPTAsTXQ9MSx4dD1bXSxSdD0wLFV0PSIiLG5uPXtzOnty''@;'; put 'put ''OjAsYzowfSxlOntyOjAsYzowfX0sQ249RmV8fHt9LER0PW51bGwhPUNuLnJhbmdlP0NuLnJhbmdlOnhlWyIhcmVmIl07c3dpdGNoKDE9PT1Dbi5oZWFkZXI/WWU9MToiQSI9PT1Dbi5oZWFkZXI/WWU9MjpBcnJheS5pc0FycmF5KENuLmhlYWRlcikmJihZZT0zKSx0eXBlb2YgRHQpe2Nhc2Ui''@;'; put 'put ''c3RyaW5nIjpubj1GbyhEdCk7YnJlYWs7Y2FzZSJudW1iZXIiOihubj1Gbyh4ZVsiIXJlZiJdKSkucy5yPUR0O2JyZWFrO2RlZmF1bHQ6bm49RHR9WWU+MCYmKE10PTApO3ZhciB6dD1YYShubi5zLnIpLFBuPVtdLFRuPTAsT249QXJyYXkuaXNBcnJheSh4ZSksWW49bm4ucy5yLE1yPTAsYWk9''@;'; put 'put ''MDtmb3IoT24mJiF4ZVtZbl0mJih4ZVtZbl09W10pLE1yPW5uLnMuYztNcjw9bm4uZS5jOysrTXIpc3dpdGNoKFBuW01yXT1fYShNciksamU9T24/eGVbWW5dW01yXTp4ZVtQbltNcl0renRdLFllKXtjYXNlIDE6eHRbTXJdPU1yLW5uLnMuYzticmVhaztjYXNlIDI6eHRbTXJdPVBuW01yXTti''@;'; put 'put ''cmVhaztjYXNlIDM6eHRbTXJdPUNuLmhlYWRlcltNci1ubi5zLmNdO2JyZWFrO2RlZmF1bHQ6Zm9yKG51bGw9PWplJiYoamU9e3c6Il9fRU1QVFkiLHQ6InMifSksVXQ9UnQ9eTEoamUsbnVsbCxDbiksVG49MCxhaT0wO2FpPHh0Lmxlbmd0aDsrK2FpKXh0W2FpXT09VXQmJihVdD1SdCsiXyIr''@;'; put 'put ''ICsrVG4pO3h0W01yXT1VdH1yZXR1cm4gWW49bm4ucy5yK010LFplLl9yZWFkPWZ1bmN0aW9uKCl7aWYoWW4+bm4uZS5yKXJldHVybiBaZS5wdXNoKG51bGwpO2Zvcig7WW48PW5uLmUucjspe3ZhciB5cj1LNCh4ZSxubixZbixQbixZZSx4dCxPbixDbik7aWYoKytZbiwhMT09PXlyLmlzZW1w''@;'; put 'put ''dHl8fCgxPT09WWU/ITEhPT1Dbi5ibGFua3Jvd3M6Q24uYmxhbmtyb3dzKSl7WmUucHVzaCh5ci5yb3cpO2JyZWFrfX19LFplfSx0b19odG1sOmZ1bmN0aW9uKHhlLEZlKXt2YXIgWmU9SCgpLGplPUZlfHx7fSxNdD1udWxsIT1qZS5mb290ZXI/amUuZm9vdGVyOnVzLkVORDtaZS5wdXNoKG51''@;'; put 'put ''bGwhPWplLmhlYWRlcj9qZS5oZWFkZXI6dXMuQkVHSU4pO3ZhciB4dD1Bcyh4ZVsiIXJlZiJdKTtqZS5kZW5zZT1BcnJheS5pc0FycmF5KHhlKSxaZS5wdXNoKHVzLl9wcmVhbWJsZSh4ZSx4dCxqZSkpO3ZhciBSdD14dC5zLnIsVXQ9ITEsbm49W107cmV0dXJuIFplLl9yZWFkPWZ1bmN0aW9u''@;'; put 'put ''KCl7aWYoUnQ+eHQuZS5yKXJldHVybiBVdHx8KFV0PSEwLFplLnB1c2goIjwvdGFibGU+IitNdCkpLFplLnB1c2gobnVsbCk7Zm9yKDtSdDw9eHQuZS5yOyl7WmUucHVzaCh1cy5fcm93KHhlLHh0LFJ0LGplLG5uLCIiKSksKytSdDticmVha319LFplfSx0b19jc3Y6ZnVuY3Rpb24oeGUsRmUp''@;'; put 'put ''e3ZhciBaZT1IKCksamU9bnVsbD09RmU/e306RmU7aWYobnVsbD09eGV8fG51bGw9PXhlWyIhcmVmIl0pcmV0dXJuIFplLnB1c2gobnVsbCksWmU7dmFyIFllPUZvKHhlWyIhcmVmIl0pLE10PXZvaWQgMCE9PWplLkZTP2plLkZTOiIsIix4dD1NdC5jaGFyQ29kZUF0KDApLFJ0PXZvaWQgMCE9''@;'; put 'put ''PWplLlJTP2plLlJTOiJcbiIsVXQ9UnQuY2hhckNvZGVBdCgwKSxubj1uZXcgUmVnRXhwKCgifCI9PU10PyJcXHwiOk10KSsiKyQiKSxDbj0iIixEdD1bXTtqZS5kZW5zZT1BcnJheS5pc0FycmF5KHhlKTtmb3IodmFyIHp0PWplLnNraXBIaWRkZW4mJnhlWyIhY29scyJdfHxbXSxQbj1qZS5z''@;'; put 'put ''a2lwSGlkZGVuJiZ4ZVsiIXJvd3MiXXx8W10sVG49WWUucy5jO1RuPD1ZZS5lLmM7KytUbikoenRbVG5dfHx7fSkuaGlkZGVufHwoRHRbVG5dPV9hKFRuKSk7dmFyIE9uPVllLnMucixZbj0hMTtyZXR1cm4gWmUuX3JlYWQ9ZnVuY3Rpb24oKXtpZighWW4pcmV0dXJuIFluPSEwLFplLnB1c2go''@;'; put 'put ''Ilx1ZmVmZiIpO2Zvcig7T248PVllLmUucjspaWYoKytPbiwhKFBuW09uLTFdfHx7fSkuaGlkZGVuJiZudWxsIT0oQ249dGkoeGUsWWUsT24tMSxEdCx4dCxVdCxNdCxqZSkpKXtqZS5zdHJpcCYmKENuPUNuLnJlcGxhY2Uobm4sIiIpKSxaZS5wdXNoKENuK1J0KTticmVha31yZXR1cm4gT24+''@;'; put 'put ''WWUuZS5yP1plLnB1c2gobnVsbCk6dm9pZCAwfSxaZX19fSgpLHZvaWQgMCE9PVVtJiYoVS5wYXJzZV94bHNjZmI9VW0pLFUucGFyc2VfemlwPUttLFUucmVhZD16ZCxVLnJlYWRGaWxlPWU3LFUucmVhZEZpbGVTeW5jPWU3LFUud3JpdGU9bjcsVS53cml0ZUZpbGU9Z0MsVS53cml0ZUZpbGVT''@;'; put 'put ''eW5jPWdDLFUud3JpdGVGaWxlQXN5bmM9ZnVuY3Rpb24gUVAoSCxpZSxYLHdlKXt2YXIgeGU9WHx8e307eGUudHlwZT0iZmlsZSIseGUuZmlsZT1ILHBDKHhlKSx4ZS50eXBlPSJidWZmZXIiO3ZhciBGZT13ZTtyZXR1cm4gRmUgaW5zdGFuY2VvZiBGdW5jdGlvbnx8KEZlPVgpLHZ0LndyaXRl''@;'; put 'put ''RmlsZShILG43KGllLHhlKSxGZSl9LFUuc2V0X2RhdGVfc3R5bGU9ZnVuY3Rpb24geXQoSCl7c3dpdGNoKEgpe2Nhc2UgMDpHZSgpO2JyZWFrO2Nhc2UgMTohZnVuY3Rpb24gVWUoKXt2YXIgSD1uZXcgRGF0ZTtDdD1MdC5nZXRUaW1lKCkrNmU0KihILmdldFRpbWV6b25lT2Zmc2V0KCktTHQu''@;'; put 'put ''Z2V0VGltZXpvbmVPZmZzZXQoKSk7dmFyIGllPUguZ2V0VGltZXpvbmVPZmZzZXQoKTtmdD1mdW5jdGlvbih3ZSx4ZSl7dmFyIEZlPXdlLmdldFRpbWUoKTtyZXR1cm4geGUmJihGZS09MTI2MzE2OGU1KSwoRmUtKEx0LmdldFRpbWUoKSs2ZTQqKHdlLmdldFRpbWV6b25lT2Zmc2V0KCktTHQu''@;'; put 'put ''Z2V0VGltZXpvbmVPZmZzZXQoKSkpKS84NjRlNX0sSHQ9ZnVuY3Rpb24od2Upe3ZhciB4ZT1uZXcgRGF0ZTtyZXR1cm4geGUuc2V0VGltZSgyNCp3ZSo2MCo2MCoxZTMrQ3QpLHhlLmdldFRpbWV6b25lT2Zmc2V0KCkhPT1pZSYmeGUuc2V0VGltZSh4ZS5nZXRUaW1lKCkrNmU0Kih4ZS5nZXRU''@;'; put 'put ''aW1lem9uZU9mZnNldCgpLWllKSkseGV9fSgpfX0sVS51dGlscz1hYyxVLlNTRj1GLHZvaWQgMCE9PW10JiYoVS5DRkI9bXQpfShKZSl9LDg3OTc3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBtZT1KZTttZS5iaWdudW09TCgxMzg1NCksbWUuZGVmaW5lPUwoMzk1MTYpLmRlZmlu''@;'; put 'put ''ZSxtZS5iYXNlPUwoODc4MTMpLG1lLmNvbnN0YW50cz1MKDU0NTkpLG1lLmRlY29kZXJzPUwoNzAxOTYpLG1lLmVuY29kZXJzPUwoMjExMzEpfSwzOTUxNjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgbWU9TCgyMTEzMSksQj1MKDcwMTk2KSxFPUwoODM4OTQpO2Z1bmN0aW9uIFUo''@;'; put 'put ''USxqKXt0aGlzLm5hbWU9USx0aGlzLmJvZHk9aix0aGlzLmRlY29kZXJzPXt9LHRoaXMuZW5jb2RlcnM9e319SmUuZGVmaW5lPWZ1bmN0aW9uKGoscmUpe3JldHVybiBuZXcgVShqLHJlKX0sVS5wcm90b3R5cGUuX2NyZWF0ZU5hbWVkPWZ1bmN0aW9uKGope2NvbnN0IHJlPXRoaXMubmFtZTtm''@;'; put 'put ''dW5jdGlvbiBhZShZKXt0aGlzLl9pbml0TmFtZWQoWSxyZSl9cmV0dXJuIEUoYWUsaiksYWUucHJvdG90eXBlLl9pbml0TmFtZWQ9ZnVuY3Rpb24oVyxOKXtqLmNhbGwodGhpcyxXLE4pfSxuZXcgYWUodGhpcyl9LFUucHJvdG90eXBlLl9nZXREZWNvZGVyPWZ1bmN0aW9uKGope3JldHVybiB0''@;'; put 'put ''aGlzLmRlY29kZXJzLmhhc093blByb3BlcnR5KGo9anx8ImRlciIpfHwodGhpcy5kZWNvZGVyc1tqXT10aGlzLl9jcmVhdGVOYW1lZChCW2pdKSksdGhpcy5kZWNvZGVyc1tqXX0sVS5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKGoscmUsYWUpe3JldHVybiB0aGlzLl9nZXREZWNvZGVyKHJl''@;'; put 'put ''KS5kZWNvZGUoaixhZSl9LFUucHJvdG90eXBlLl9nZXRFbmNvZGVyPWZ1bmN0aW9uKGope3JldHVybiB0aGlzLmVuY29kZXJzLmhhc093blByb3BlcnR5KGo9anx8ImRlciIpfHwodGhpcy5lbmNvZGVyc1tqXT10aGlzLl9jcmVhdGVOYW1lZChtZVtqXSkpLHRoaXMuZW5jb2RlcnNbal19LFUu''@;'; put 'put ''cHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbihqLHJlLGFlKXtyZXR1cm4gdGhpcy5fZ2V0RW5jb2RlcihyZSkuZW5jb2RlKGosYWUpfX0sMTI3Njk6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0IG1lPUwoODM4OTQpLEI9TCg0OTE5KS5iLEU9TCg2MjAzOCkuQnVmZmVyO2Z1bmN0aW9u''@;'; put 'put ''IEVlKFEsail7Qi5jYWxsKHRoaXMsaiksRS5pc0J1ZmZlcihRKT8odGhpcy5iYXNlPVEsdGhpcy5vZmZzZXQ9MCx0aGlzLmxlbmd0aD1RLmxlbmd0aCk6dGhpcy5lcnJvcigiSW5wdXQgbm90IEJ1ZmZlciIpfWZ1bmN0aW9uIFUoUSxqKXtpZihBcnJheS5pc0FycmF5KFEpKXRoaXMubGVuZ3Ro''@;'; put 'put ''PTAsdGhpcy52YWx1ZT1RLm1hcChmdW5jdGlvbihyZSl7cmV0dXJuIFUuaXNFbmNvZGVyQnVmZmVyKHJlKXx8KHJlPW5ldyBVKHJlLGopKSx0aGlzLmxlbmd0aCs9cmUubGVuZ3RoLHJlfSx0aGlzKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgUSl7aWYoISgwPD1RJiZRPD0yNTUpKXJldHVy''@;'; put 'put ''biBqLmVycm9yKCJub24tYnl0ZSBFbmNvZGVyQnVmZmVyIHZhbHVlIik7dGhpcy52YWx1ZT1RLHRoaXMubGVuZ3RoPTF9ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIFEpdGhpcy52YWx1ZT1RLHRoaXMubGVuZ3RoPUUuYnl0ZUxlbmd0aChRKTtlbHNle2lmKCFFLmlzQnVmZmVyKFEpKXJldHVy''@;'; put 'put ''biBqLmVycm9yKCJVbnN1cHBvcnRlZCB0eXBlOiAiK3R5cGVvZiBRKTt0aGlzLnZhbHVlPVEsdGhpcy5sZW5ndGg9US5sZW5ndGh9fW1lKEVlLEIpLEplLkM9RWUsRWUuaXNEZWNvZGVyQnVmZmVyPWZ1bmN0aW9uKGope3JldHVybiBqIGluc3RhbmNlb2YgRWV8fCJvYmplY3QiPT10eXBlb2Yg''@;'; put 'put ''aiYmRS5pc0J1ZmZlcihqLmJhc2UpJiYiRGVjb2RlckJ1ZmZlciI9PT1qLmNvbnN0cnVjdG9yLm5hbWUmJiJudW1iZXIiPT10eXBlb2Ygai5vZmZzZXQmJiJudW1iZXIiPT10eXBlb2Ygai5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBqLnNhdmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBqLnJl''@;'; put 'put ''c3RvcmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBqLmlzRW1wdHkmJiJmdW5jdGlvbiI9PXR5cGVvZiBqLnJlYWRVSW50OCYmImZ1bmN0aW9uIj09dHlwZW9mIGouc2tpcCYmImZ1bmN0aW9uIj09dHlwZW9mIGoucmF3fSxFZS5wcm90b3R5cGUuc2F2ZT1mdW5jdGlvbigpe3JldHVybntvZmZzZXQ6''@;'; put 'put ''dGhpcy5vZmZzZXQscmVwb3J0ZXI6Qi5wcm90b3R5cGUuc2F2ZS5jYWxsKHRoaXMpfX0sRWUucHJvdG90eXBlLnJlc3RvcmU9ZnVuY3Rpb24oail7Y29uc3QgcmU9bmV3IEVlKHRoaXMuYmFzZSk7cmV0dXJuIHJlLm9mZnNldD1qLm9mZnNldCxyZS5sZW5ndGg9dGhpcy5vZmZzZXQsdGhpcy5v''@;'; put 'put ''ZmZzZXQ9ai5vZmZzZXQsQi5wcm90b3R5cGUucmVzdG9yZS5jYWxsKHRoaXMsai5yZXBvcnRlcikscmV9LEVlLnByb3RvdHlwZS5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2Zmc2V0PT09dGhpcy5sZW5ndGh9LEVlLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24oail7cmV0''@;'; put 'put ''dXJuIHRoaXMub2Zmc2V0KzE8PXRoaXMubGVuZ3RoP3RoaXMuYmFzZS5yZWFkVUludDgodGhpcy5vZmZzZXQrKywhMCk6dGhpcy5lcnJvcihqfHwiRGVjb2RlckJ1ZmZlciBvdmVycnVuIil9LEVlLnByb3RvdHlwZS5za2lwPWZ1bmN0aW9uKGoscmUpe2lmKCEodGhpcy5vZmZzZXQrajw9dGhp''@;'; put 'put ''cy5sZW5ndGgpKXJldHVybiB0aGlzLmVycm9yKHJlfHwiRGVjb2RlckJ1ZmZlciBvdmVycnVuIik7Y29uc3QgYWU9bmV3IEVlKHRoaXMuYmFzZSk7cmV0dXJuIGFlLl9yZXBvcnRlclN0YXRlPXRoaXMuX3JlcG9ydGVyU3RhdGUsYWUub2Zmc2V0PXRoaXMub2Zmc2V0LGFlLmxlbmd0aD10aGlz''@;'; put 'put ''Lm9mZnNldCtqLHRoaXMub2Zmc2V0Kz1qLGFlfSxFZS5wcm90b3R5cGUucmF3PWZ1bmN0aW9uKGope3JldHVybiB0aGlzLmJhc2Uuc2xpY2Uoaj9qLm9mZnNldDp0aGlzLm9mZnNldCx0aGlzLmxlbmd0aCl9LEplLlI9VSxVLmlzRW5jb2RlckJ1ZmZlcj1mdW5jdGlvbihqKXtyZXR1cm4gaiBp''@;'; put 'put ''bnN0YW5jZW9mIFV8fCJvYmplY3QiPT10eXBlb2YgaiYmIkVuY29kZXJCdWZmZXIiPT09ai5jb25zdHJ1Y3Rvci5uYW1lJiYibnVtYmVyIj09dHlwZW9mIGoubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2Ygai5qb2lufSxVLnByb3RvdHlwZS5qb2luPWZ1bmN0aW9uKGoscmUpe3JldHVybiBq''@;'; put 'put ''fHwoaj1FLmFsbG9jKHRoaXMubGVuZ3RoKSkscmV8fChyZT0wKSwwPT09dGhpcy5sZW5ndGh8fChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpP3RoaXMudmFsdWUuZm9yRWFjaChmdW5jdGlvbihhZSl7YWUuam9pbihqLHJlKSxyZSs9YWUubGVuZ3RofSk6KCJudW1iZXIiPT10eXBlb2YgdGhp''@;'; put 'put ''cy52YWx1ZT9qW3JlXT10aGlzLnZhbHVlOiJzdHJpbmciPT10eXBlb2YgdGhpcy52YWx1ZT9qLndyaXRlKHRoaXMudmFsdWUscmUpOkUuaXNCdWZmZXIodGhpcy52YWx1ZSkmJnRoaXMudmFsdWUuY29weShqLHJlKSxyZSs9dGhpcy5sZW5ndGgpKSxqfX0sODc4MTM6KFhlLEplLEwpPT57InVz''@;'; put 'put ''ZSBzdHJpY3QiO2NvbnN0IG1lPUplO21lLlJlcG9ydGVyPUwoNDkxOSkuYixtZS5EZWNvZGVyQnVmZmVyPUwoMTI3NjkpLkMsbWUuRW5jb2RlckJ1ZmZlcj1MKDEyNzY5KS5SLG1lLk5vZGU9TCgzMTQzMCl9LDMxNDMwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBtZT1MKDQ5MTkp''@;'; put 'put ''LmIsQj1MKDEyNzY5KS5SLEU9TCgxMjc2OSkuQyxFZT1MKDMyMzkxKSxVPVsic2VxIiwic2Vxb2YiLCJzZXQiLCJzZXRvZiIsIm9iamlkIiwiYm9vbCIsImdlbnRpbWUiLCJ1dGN0aW1lIiwibnVsbF8iLCJlbnVtIiwiaW50Iiwib2JqRGVzYyIsImJpdHN0ciIsImJtcHN0ciIsImNoYXJzdHIi''@;'; put 'put ''LCJnZW5zdHIiLCJncmFwaHN0ciIsImlhNXN0ciIsImlzbzY0NnN0ciIsIm51bXN0ciIsIm9jdHN0ciIsInByaW50c3RyIiwidDYxc3RyIiwidW5pc3RyIiwidXRmOHN0ciIsInZpZGVvc3RyIl0sUT1bImtleSIsIm9iaiIsInVzZSIsIm9wdGlvbmFsIiwiZXhwbGljaXQiLCJpbXBsaWNpdCIs''@;'; put 'put ''ImRlZiIsImNob2ljZSIsImFueSIsImNvbnRhaW5zIl0uY29uY2F0KFUpO2Z1bmN0aW9uIHJlKFksVyxOKXtjb25zdCB0ZT17fTt0aGlzLl9iYXNlU3RhdGU9dGUsdGUubmFtZT1OLHRlLmVuYz1ZLHRlLnBhcmVudD1XfHxudWxsLHRlLmNoaWxkcmVuPW51bGwsdGUudGFnPW51bGwsdGUuYXJn''@;'; put 'put ''cz1udWxsLHRlLnJldmVyc2VBcmdzPW51bGwsdGUuY2hvaWNlPW51bGwsdGUub3B0aW9uYWw9ITEsdGUuYW55PSExLHRlLm9iaj0hMSx0ZS51c2U9bnVsbCx0ZS51c2VEZWNvZGVyPW51bGwsdGUua2V5PW51bGwsdGUuZGVmYXVsdD1udWxsLHRlLmV4cGxpY2l0PW51bGwsdGUuaW1wbGljaXQ9''@;'; put 'put ''bnVsbCx0ZS5jb250YWlucz1udWxsLHRlLnBhcmVudHx8KHRlLmNoaWxkcmVuPVtdLHRoaXMuX3dyYXAoKSl9WGUuZXhwb3J0cz1yZTtjb25zdCBhZT1bImVuYyIsInBhcmVudCIsImNoaWxkcmVuIiwidGFnIiwiYXJncyIsInJldmVyc2VBcmdzIiwiY2hvaWNlIiwib3B0aW9uYWwiLCJhbnki''@;'; put 'put ''LCJvYmoiLCJ1c2UiLCJhbHRlcmVkVXNlIiwia2V5IiwiZGVmYXVsdCIsImV4cGxpY2l0IiwiaW1wbGljaXQiLCJjb250YWlucyJdO3JlLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe2NvbnN0IFc9dGhpcy5fYmFzZVN0YXRlLE49e307YWUuZm9yRWFjaChmdW5jdGlvbihLKXtOW0tdPVdb''@;'; put 'put ''S119KTtjb25zdCB0ZT1uZXcgdGhpcy5jb25zdHJ1Y3RvcihOLnBhcmVudCk7cmV0dXJuIHRlLl9iYXNlU3RhdGU9Tix0ZX0scmUucHJvdG90eXBlLl93cmFwPWZ1bmN0aW9uKCl7Y29uc3QgVz10aGlzLl9iYXNlU3RhdGU7US5mb3JFYWNoKGZ1bmN0aW9uKE4pe3RoaXNbTl09ZnVuY3Rpb24o''@;'; put 'put ''KXtjb25zdCBLPW5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpO3JldHVybiBXLmNoaWxkcmVuLnB1c2goSyksS1tOXS5hcHBseShLLGFyZ3VtZW50cyl9fSx0aGlzKX0scmUucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKFcpe2NvbnN0IE49dGhpcy5fYmFzZVN0YXRlO0VlKG51bGw9PT1OLnBh''@;'; put 'put ''cmVudCksVy5jYWxsKHRoaXMpLE4uY2hpbGRyZW49Ti5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24odGUpe3JldHVybiB0ZS5fYmFzZVN0YXRlLnBhcmVudD09PXRoaXN9LHRoaXMpLEVlLmVxdWFsKE4uY2hpbGRyZW4ubGVuZ3RoLDEsIlJvb3Qgbm9kZSBjYW4gaGF2ZSBvbmx5IG9uZSBjaGls''@;'; put 'put ''ZCIpfSxyZS5wcm90b3R5cGUuX3VzZUFyZ3M9ZnVuY3Rpb24oVyl7Y29uc3QgTj10aGlzLl9iYXNlU3RhdGUsdGU9Vy5maWx0ZXIoZnVuY3Rpb24oSyl7cmV0dXJuIEsgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yfSx0aGlzKTtXPVcuZmlsdGVyKGZ1bmN0aW9uKEspe3JldHVybiEoSyBp''@;'; put 'put ''bnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3IpfSx0aGlzKSwwIT09dGUubGVuZ3RoJiYoRWUobnVsbD09PU4uY2hpbGRyZW4pLE4uY2hpbGRyZW49dGUsdGUuZm9yRWFjaChmdW5jdGlvbihLKXtLLl9iYXNlU3RhdGUucGFyZW50PXRoaXN9LHRoaXMpKSwwIT09Vy5sZW5ndGgmJihFZShudWxs''@;'; put 'put ''PT09Ti5hcmdzKSxOLmFyZ3M9VyxOLnJldmVyc2VBcmdzPVcubWFwKGZ1bmN0aW9uKEspe2lmKCJvYmplY3QiIT10eXBlb2YgS3x8Sy5jb25zdHJ1Y3RvciE9PU9iamVjdClyZXR1cm4gSztjb25zdCBKPXt9O3JldHVybiBPYmplY3Qua2V5cyhLKS5mb3JFYWNoKGZ1bmN0aW9uKHNlKXtzZT09''@;'; put 'put ''KDB8c2UpJiYoc2V8PTApLEpbS1tzZV1dPXNlfSksSn0pKX0sWyJfcGVla1RhZyIsIl9kZWNvZGVUYWciLCJfdXNlIiwiX2RlY29kZVN0ciIsIl9kZWNvZGVPYmppZCIsIl9kZWNvZGVUaW1lIiwiX2RlY29kZU51bGwiLCJfZGVjb2RlSW50IiwiX2RlY29kZUJvb2wiLCJfZGVjb2RlTGlzdCIs''@;'; put 'put ''Il9lbmNvZGVDb21wb3NpdGUiLCJfZW5jb2RlU3RyIiwiX2VuY29kZU9iamlkIiwiX2VuY29kZVRpbWUiLCJfZW5jb2RlTnVsbCIsIl9lbmNvZGVJbnQiLCJfZW5jb2RlQm9vbCJdLmZvckVhY2goZnVuY3Rpb24oWSl7cmUucHJvdG90eXBlW1ldPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KFkrIiBub3QgaW1wbGVtZW50ZWQgZm9yIGVuY29kaW5nOiAiK3RoaXMuX2Jhc2VTdGF0ZS5lbmMpfX0pLFUuZm9yRWFjaChmdW5jdGlvbihZKXtyZS5wcm90b3R5cGVbWV09ZnVuY3Rpb24oKXtjb25zdCBOPXRoaXMuX2Jhc2VTdGF0ZSx0ZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChh''@;'; put 'put ''cmd1bWVudHMpO3JldHVybiBFZShudWxsPT09Ti50YWcpLE4udGFnPVksdGhpcy5fdXNlQXJncyh0ZSksdGhpc319KSxyZS5wcm90b3R5cGUudXNlPWZ1bmN0aW9uKFcpe0VlKFcpO2NvbnN0IE49dGhpcy5fYmFzZVN0YXRlO3JldHVybiBFZShudWxsPT09Ti51c2UpLE4udXNlPVcsdGhpc30s''@;'; put 'put ''cmUucHJvdG90eXBlLm9wdGlvbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jhc2VTdGF0ZS5vcHRpb25hbD0hMCx0aGlzfSxyZS5wcm90b3R5cGUuZGVmPWZ1bmN0aW9uKFcpe2NvbnN0IE49dGhpcy5fYmFzZVN0YXRlO3JldHVybiBFZShudWxsPT09Ti5kZWZhdWx0KSxOLmRlZmF1bHQ9''@;'; put 'put ''VyxOLm9wdGlvbmFsPSEwLHRoaXN9LHJlLnByb3RvdHlwZS5leHBsaWNpdD1mdW5jdGlvbihXKXtjb25zdCBOPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gRWUobnVsbD09PU4uZXhwbGljaXQmJm51bGw9PT1OLmltcGxpY2l0KSxOLmV4cGxpY2l0PVcsdGhpc30scmUucHJvdG90eXBlLmltcGxp''@;'; put 'put ''Y2l0PWZ1bmN0aW9uKFcpe2NvbnN0IE49dGhpcy5fYmFzZVN0YXRlO3JldHVybiBFZShudWxsPT09Ti5leHBsaWNpdCYmbnVsbD09PU4uaW1wbGljaXQpLE4uaW1wbGljaXQ9Vyx0aGlzfSxyZS5wcm90b3R5cGUub2JqPWZ1bmN0aW9uKCl7Y29uc3QgVz10aGlzLl9iYXNlU3RhdGUsTj1BcnJh''@;'; put 'put ''eS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO3JldHVybiBXLm9iaj0hMCwwIT09Ti5sZW5ndGgmJnRoaXMuX3VzZUFyZ3MoTiksdGhpc30scmUucHJvdG90eXBlLmtleT1mdW5jdGlvbihXKXtjb25zdCBOPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gRWUobnVsbD09PU4ua2V5KSxO''@;'; put 'put ''LmtleT1XLHRoaXN9LHJlLnByb3RvdHlwZS5hbnk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFzZVN0YXRlLmFueT0hMCx0aGlzfSxyZS5wcm90b3R5cGUuY2hvaWNlPWZ1bmN0aW9uKFcpe2NvbnN0IE49dGhpcy5fYmFzZVN0YXRlO3JldHVybiBFZShudWxsPT09Ti5jaG9pY2UpLE4uY2hv''@;'; put 'put ''aWNlPVcsdGhpcy5fdXNlQXJncyhPYmplY3Qua2V5cyhXKS5tYXAoZnVuY3Rpb24odGUpe3JldHVybiBXW3RlXX0pKSx0aGlzfSxyZS5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24oVyl7Y29uc3QgTj10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIEVlKG51bGw9PT1OLnVzZSksTi5jb250YWlu''@;'; put 'put ''cz1XLHRoaXN9LHJlLnByb3RvdHlwZS5fZGVjb2RlPWZ1bmN0aW9uKFcsTil7Y29uc3QgdGU9dGhpcy5fYmFzZVN0YXRlO2lmKG51bGw9PT10ZS5wYXJlbnQpcmV0dXJuIFcud3JhcFJlc3VsdCh0ZS5jaGlsZHJlblswXS5fZGVjb2RlKFcsTikpO2xldCBvZSxLPXRlLmRlZmF1bHQsSj0hMCxz''@;'; put 'put ''ZT1udWxsO2lmKG51bGwhPT10ZS5rZXkmJihzZT1XLmVudGVyS2V5KHRlLmtleSkpLHRlLm9wdGlvbmFsKXtsZXQgY2U9bnVsbDtpZihudWxsIT09dGUuZXhwbGljaXQ/Y2U9dGUuZXhwbGljaXQ6bnVsbCE9PXRlLmltcGxpY2l0P2NlPXRlLmltcGxpY2l0Om51bGwhPT10ZS50YWcmJihjZT10''@;'; put 'put ''ZS50YWcpLG51bGwhPT1jZXx8dGUuYW55KXtpZihKPXRoaXMuX3BlZWtUYWcoVyxjZSx0ZS5hbnkpLFcuaXNFcnJvcihKKSlyZXR1cm4gSn1lbHNle2NvbnN0IGRlPVcuc2F2ZSgpO3RyeXtudWxsPT09dGUuY2hvaWNlP3RoaXMuX2RlY29kZUdlbmVyaWModGUudGFnLFcsTik6dGhpcy5fZGVj''@;'; put 'put ''b2RlQ2hvaWNlKFcsTiksSj0hMH1jYXRjaCh2ZSl7Sj0hMX1XLnJlc3RvcmUoZGUpfX1pZih0ZS5vYmomJkomJihvZT1XLmVudGVyT2JqZWN0KCkpLEope2lmKG51bGwhPT10ZS5leHBsaWNpdCl7Y29uc3QgZGU9dGhpcy5fZGVjb2RlVGFnKFcsdGUuZXhwbGljaXQpO2lmKFcuaXNFcnJvcihk''@;'; put 'put ''ZSkpcmV0dXJuIGRlO1c9ZGV9Y29uc3QgY2U9Vy5vZmZzZXQ7aWYobnVsbD09PXRlLnVzZSYmbnVsbD09PXRlLmNob2ljZSl7bGV0IGRlO3RlLmFueSYmKGRlPVcuc2F2ZSgpKTtjb25zdCB2ZT10aGlzLl9kZWNvZGVUYWcoVyxudWxsIT09dGUuaW1wbGljaXQ/dGUuaW1wbGljaXQ6dGUudGFn''@;'; put 'put ''LHRlLmFueSk7aWYoVy5pc0Vycm9yKHZlKSlyZXR1cm4gdmU7dGUuYW55P0s9Vy5yYXcoZGUpOlc9dmV9aWYoTiYmTi50cmFjayYmbnVsbCE9PXRlLnRhZyYmTi50cmFjayhXLnBhdGgoKSxjZSxXLmxlbmd0aCwidGFnZ2VkIiksTiYmTi50cmFjayYmbnVsbCE9PXRlLnRhZyYmTi50cmFjayhX''@;'; put 'put ''LnBhdGgoKSxXLm9mZnNldCxXLmxlbmd0aCwiY29udGVudCIpLHRlLmFueXx8KEs9bnVsbD09PXRlLmNob2ljZT90aGlzLl9kZWNvZGVHZW5lcmljKHRlLnRhZyxXLE4pOnRoaXMuX2RlY29kZUNob2ljZShXLE4pKSxXLmlzRXJyb3IoSykpcmV0dXJuIEs7aWYoIXRlLmFueSYmbnVsbD09PXRl''@;'; put 'put ''LmNob2ljZSYmbnVsbCE9PXRlLmNoaWxkcmVuJiZ0ZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKHZlKXt2ZS5fZGVjb2RlKFcsTil9KSx0ZS5jb250YWlucyYmKCJvY3RzdHIiPT09dGUudGFnfHwiYml0c3RyIj09PXRlLnRhZykpe2NvbnN0IGRlPW5ldyBFKEspO0s9dGhpcy5fZ2V0VXNl''@;'; put 'put ''KHRlLmNvbnRhaW5zLFcuX3JlcG9ydGVyU3RhdGUub2JqKS5fZGVjb2RlKGRlLE4pfX1yZXR1cm4gdGUub2JqJiZKJiYoSz1XLmxlYXZlT2JqZWN0KG9lKSksbnVsbD09PXRlLmtleXx8bnVsbD09PUsmJiEwIT09Sj9udWxsIT09c2UmJlcuZXhpdEtleShzZSk6Vy5sZWF2ZUtleShzZSx0ZS5r''@;'; put 'put ''ZXksSyksS30scmUucHJvdG90eXBlLl9kZWNvZGVHZW5lcmljPWZ1bmN0aW9uKFcsTix0ZSl7Y29uc3QgSz10aGlzLl9iYXNlU3RhdGU7cmV0dXJuInNlcSI9PT1XfHwic2V0Ij09PVc/bnVsbDoic2Vxb2YiPT09V3x8InNldG9mIj09PVc/dGhpcy5fZGVjb2RlTGlzdChOLFcsSy5hcmdzWzBd''@;'; put 'put ''LHRlKTovc3RyJC8udGVzdChXKT90aGlzLl9kZWNvZGVTdHIoTixXLHRlKToib2JqaWQiPT09VyYmSy5hcmdzP3RoaXMuX2RlY29kZU9iamlkKE4sSy5hcmdzWzBdLEsuYXJnc1sxXSx0ZSk6Im9iamlkIj09PVc/dGhpcy5fZGVjb2RlT2JqaWQoTixudWxsLG51bGwsdGUpOiJnZW50aW1lIj09''@;'; put 'put ''PVd8fCJ1dGN0aW1lIj09PVc/dGhpcy5fZGVjb2RlVGltZShOLFcsdGUpOiJudWxsXyI9PT1XP3RoaXMuX2RlY29kZU51bGwoTix0ZSk6ImJvb2wiPT09Vz90aGlzLl9kZWNvZGVCb29sKE4sdGUpOiJvYmpEZXNjIj09PVc/dGhpcy5fZGVjb2RlU3RyKE4sVyx0ZSk6ImludCI9PT1XfHwiZW51''@;'; put 'put ''bSI9PT1XP3RoaXMuX2RlY29kZUludChOLEsuYXJncyYmSy5hcmdzWzBdLHRlKTpudWxsIT09Sy51c2U/dGhpcy5fZ2V0VXNlKEsudXNlLE4uX3JlcG9ydGVyU3RhdGUub2JqKS5fZGVjb2RlKE4sdGUpOk4uZXJyb3IoInVua25vd24gdGFnOiAiK1cpfSxyZS5wcm90b3R5cGUuX2dldFVzZT1m''@;'; put 'put ''dW5jdGlvbihXLE4pe2NvbnN0IHRlPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gdGUudXNlRGVjb2Rlcj10aGlzLl91c2UoVyxOKSxFZShudWxsPT09dGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLnBhcmVudCksdGUudXNlRGVjb2Rlcj10ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuY2hpbGRyZW5b''@;'; put 'put ''MF0sdGUuaW1wbGljaXQhPT10ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQmJih0ZS51c2VEZWNvZGVyPXRlLnVzZURlY29kZXIuY2xvbmUoKSx0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQ9dGUuaW1wbGljaXQpLHRlLnVzZURlY29kZXJ9LHJlLnByb3RvdHlwZS5f''@;'; put 'put ''ZGVjb2RlQ2hvaWNlPWZ1bmN0aW9uKFcsTil7Y29uc3QgdGU9dGhpcy5fYmFzZVN0YXRlO2xldCBLPW51bGwsSj0hMTtyZXR1cm4gT2JqZWN0LmtleXModGUuY2hvaWNlKS5zb21lKGZ1bmN0aW9uKHNlKXtjb25zdCBvZT1XLnNhdmUoKSxjZT10ZS5jaG9pY2Vbc2VdO3RyeXtjb25zdCBkZT1j''@;'; put 'put ''ZS5fZGVjb2RlKFcsTik7aWYoVy5pc0Vycm9yKGRlKSlyZXR1cm4hMTtLPXt0eXBlOnNlLHZhbHVlOmRlfSxKPSEwfWNhdGNoKGRlKXtyZXR1cm4gVy5yZXN0b3JlKG9lKSwhMX1yZXR1cm4hMH0sdGhpcyksSj9LOlcuZXJyb3IoIkNob2ljZSBub3QgbWF0Y2hlZCIpfSxyZS5wcm90b3R5cGUu''@;'; put 'put ''X2NyZWF0ZUVuY29kZXJCdWZmZXI9ZnVuY3Rpb24oVyl7cmV0dXJuIG5ldyBCKFcsdGhpcy5yZXBvcnRlcil9LHJlLnByb3RvdHlwZS5fZW5jb2RlPWZ1bmN0aW9uKFcsTix0ZSl7Y29uc3QgSz10aGlzLl9iYXNlU3RhdGU7aWYobnVsbCE9PUsuZGVmYXVsdCYmSy5kZWZhdWx0PT09VylyZXR1''@;'; put 'put ''cm47Y29uc3QgSj10aGlzLl9lbmNvZGVWYWx1ZShXLE4sdGUpO3JldHVybiB2b2lkIDA9PT1KfHx0aGlzLl9za2lwRGVmYXVsdChKLE4sdGUpP3ZvaWQgMDpKfSxyZS5wcm90b3R5cGUuX2VuY29kZVZhbHVlPWZ1bmN0aW9uKFcsTix0ZSl7Y29uc3QgSz10aGlzLl9iYXNlU3RhdGU7aWYobnVs''@;'; put 'put ''bD09PUsucGFyZW50KXJldHVybiBLLmNoaWxkcmVuWzBdLl9lbmNvZGUoVyxOfHxuZXcgbWUpO2xldCBKPW51bGw7aWYodGhpcy5yZXBvcnRlcj1OLEsub3B0aW9uYWwmJnZvaWQgMD09PVcpe2lmKG51bGw9PT1LLmRlZmF1bHQpcmV0dXJuO1c9Sy5kZWZhdWx0fWxldCBzZT1udWxsLG9lPSEx''@;'; put 'put ''O2lmKEsuYW55KUo9dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihXKTtlbHNlIGlmKEsuY2hvaWNlKUo9dGhpcy5fZW5jb2RlQ2hvaWNlKFcsTik7ZWxzZSBpZihLLmNvbnRhaW5zKXNlPXRoaXMuX2dldFVzZShLLmNvbnRhaW5zLHRlKS5fZW5jb2RlKFcsTiksb2U9ITA7ZWxzZSBpZihLLmNo''@;'; put 'put ''aWxkcmVuKXNlPUsuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKGNlKXtpZigibnVsbF8iPT09Y2UuX2Jhc2VTdGF0ZS50YWcpcmV0dXJuIGNlLl9lbmNvZGUobnVsbCxOLFcpO2lmKG51bGw9PT1jZS5fYmFzZVN0YXRlLmtleSlyZXR1cm4gTi5lcnJvcigiQ2hpbGQgc2hvdWxkIGhhdmUgYSBrZXki''@;'; put 'put ''KTtjb25zdCBkZT1OLmVudGVyS2V5KGNlLl9iYXNlU3RhdGUua2V5KTtpZigib2JqZWN0IiE9dHlwZW9mIFcpcmV0dXJuIE4uZXJyb3IoIkNoaWxkIGV4cGVjdGVkLCBidXQgaW5wdXQgaXMgbm90IG9iamVjdCIpO2NvbnN0IHZlPWNlLl9lbmNvZGUoV1tjZS5fYmFzZVN0YXRlLmtleV0sTixX''@;'; put 'put ''KTtyZXR1cm4gTi5sZWF2ZUtleShkZSksdmV9LHRoaXMpLmZpbHRlcihmdW5jdGlvbihjZSl7cmV0dXJuIGNlfSksc2U9dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzZSk7ZWxzZSBpZigic2Vxb2YiPT09Sy50YWd8fCJzZXRvZiI9PT1LLnRhZyl7aWYoIUsuYXJnc3x8MSE9PUsuYXJncy5s''@;'; put 'put ''ZW5ndGgpcmV0dXJuIE4uZXJyb3IoIlRvbyBtYW55IGFyZ3MgZm9yIDogIitLLnRhZyk7aWYoIUFycmF5LmlzQXJyYXkoVykpcmV0dXJuIE4uZXJyb3IoInNlcW9mL3NldG9mLCBidXQgZGF0YSBpcyBub3QgQXJyYXkiKTtjb25zdCBjZT10aGlzLmNsb25lKCk7Y2UuX2Jhc2VTdGF0ZS5pbXBs''@;'; put 'put ''aWNpdD1udWxsLHNlPXRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoVy5tYXAoZnVuY3Rpb24oZGUpe3JldHVybiB0aGlzLl9nZXRVc2UodGhpcy5fYmFzZVN0YXRlLmFyZ3NbMF0sVykuX2VuY29kZShkZSxOKX0sY2UpKX1lbHNlIG51bGwhPT1LLnVzZT9KPXRoaXMuX2dldFVzZShLLnVzZSx0''@;'; put 'put ''ZSkuX2VuY29kZShXLE4pOihzZT10aGlzLl9lbmNvZGVQcmltaXRpdmUoSy50YWcsVyksb2U9ITApO2lmKCFLLmFueSYmbnVsbD09PUsuY2hvaWNlKXtjb25zdCBjZT1udWxsIT09Sy5pbXBsaWNpdD9LLmltcGxpY2l0OksudGFnLGRlPW51bGw9PT1LLmltcGxpY2l0PyJ1bml2ZXJzYWwiOiJj''@;'; put 'put ''b250ZXh0IjtudWxsPT09Y2U/bnVsbD09PUsudXNlJiZOLmVycm9yKCJUYWcgY291bGQgYmUgb21pdHRlZCBvbmx5IGZvciAudXNlKCkiKTpudWxsPT09Sy51c2UmJihKPXRoaXMuX2VuY29kZUNvbXBvc2l0ZShjZSxvZSxkZSxzZSkpfXJldHVybiBudWxsIT09Sy5leHBsaWNpdCYmKEo9dGhp''@;'; put 'put ''cy5fZW5jb2RlQ29tcG9zaXRlKEsuZXhwbGljaXQsITEsImNvbnRleHQiLEopKSxKfSxyZS5wcm90b3R5cGUuX2VuY29kZUNob2ljZT1mdW5jdGlvbihXLE4pe2NvbnN0IHRlPXRoaXMuX2Jhc2VTdGF0ZSxLPXRlLmNob2ljZVtXLnR5cGVdO3JldHVybiBLfHxFZSghMSxXLnR5cGUrIiBub3Qg''@;'; put 'put ''Zm91bmQgaW4gIitKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyh0ZS5jaG9pY2UpKSksSy5fZW5jb2RlKFcudmFsdWUsTil9LHJlLnByb3RvdHlwZS5fZW5jb2RlUHJpbWl0aXZlPWZ1bmN0aW9uKFcsTil7Y29uc3QgdGU9dGhpcy5fYmFzZVN0YXRlO2lmKC9zdHIkLy50ZXN0KFcpKXJldHVy''@;'; put 'put ''biB0aGlzLl9lbmNvZGVTdHIoTixXKTtpZigib2JqaWQiPT09VyYmdGUuYXJncylyZXR1cm4gdGhpcy5fZW5jb2RlT2JqaWQoTix0ZS5yZXZlcnNlQXJnc1swXSx0ZS5hcmdzWzFdKTtpZigib2JqaWQiPT09VylyZXR1cm4gdGhpcy5fZW5jb2RlT2JqaWQoTixudWxsLG51bGwpO2lmKCJnZW50''@;'; put 'put ''aW1lIj09PVd8fCJ1dGN0aW1lIj09PVcpcmV0dXJuIHRoaXMuX2VuY29kZVRpbWUoTixXKTtpZigibnVsbF8iPT09VylyZXR1cm4gdGhpcy5fZW5jb2RlTnVsbCgpO2lmKCJpbnQiPT09V3x8ImVudW0iPT09VylyZXR1cm4gdGhpcy5fZW5jb2RlSW50KE4sdGUuYXJncyYmdGUucmV2ZXJzZUFy''@;'; put 'put ''Z3NbMF0pO2lmKCJib29sIj09PVcpcmV0dXJuIHRoaXMuX2VuY29kZUJvb2woTik7aWYoIm9iakRlc2MiPT09VylyZXR1cm4gdGhpcy5fZW5jb2RlU3RyKE4sVyk7dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCB0YWc6ICIrVyl9LHJlLnByb3RvdHlwZS5faXNOdW1zdHI9ZnVuY3Rpb24o''@;'; put 'put ''Vyl7cmV0dXJuL15bMC05IF0qJC8udGVzdChXKX0scmUucHJvdG90eXBlLl9pc1ByaW50c3RyPWZ1bmN0aW9uKFcpe3JldHVybi9eW0EtWmEtejAtOSAnKCkrLC0uLzo9P10qJC8udGVzdChXKX19LDQ5MTk6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0IG1lPUwoODM4OTQpO2Z1bmN0''@;'; put 'put ''aW9uIEIoRWUpe3RoaXMuX3JlcG9ydGVyU3RhdGU9e29iajpudWxsLHBhdGg6W10sb3B0aW9uczpFZXx8e30sZXJyb3JzOltdfX1mdW5jdGlvbiBFKEVlLFUpe3RoaXMucGF0aD1FZSx0aGlzLnJldGhyb3coVSl9SmUuYj1CLEIucHJvdG90eXBlLmlzRXJyb3I9ZnVuY3Rpb24oVSl7cmV0dXJu''@;'; put 'put ''IFUgaW5zdGFuY2VvZiBFfSxCLnByb3RvdHlwZS5zYXZlPWZ1bmN0aW9uKCl7Y29uc3QgVT10aGlzLl9yZXBvcnRlclN0YXRlO3JldHVybntvYmo6VS5vYmoscGF0aExlbjpVLnBhdGgubGVuZ3RofX0sQi5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbihVKXtjb25zdCBRPXRoaXMuX3JlcG9y''@;'; put 'put ''dGVyU3RhdGU7US5vYmo9VS5vYmosUS5wYXRoPVEucGF0aC5zbGljZSgwLFUucGF0aExlbil9LEIucHJvdG90eXBlLmVudGVyS2V5PWZ1bmN0aW9uKFUpe3JldHVybiB0aGlzLl9yZXBvcnRlclN0YXRlLnBhdGgucHVzaChVKX0sQi5wcm90b3R5cGUuZXhpdEtleT1mdW5jdGlvbihVKXtjb25z''@;'; put 'put ''dCBRPXRoaXMuX3JlcG9ydGVyU3RhdGU7US5wYXRoPVEucGF0aC5zbGljZSgwLFUtMSl9LEIucHJvdG90eXBlLmxlYXZlS2V5PWZ1bmN0aW9uKFUsUSxqKXtjb25zdCByZT10aGlzLl9yZXBvcnRlclN0YXRlO3RoaXMuZXhpdEtleShVKSxudWxsIT09cmUub2JqJiYocmUub2JqW1FdPWopfSxC''@;'; put 'put ''LnByb3RvdHlwZS5wYXRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5qb2luKCIvIil9LEIucHJvdG90eXBlLmVudGVyT2JqZWN0PWZ1bmN0aW9uKCl7Y29uc3QgVT10aGlzLl9yZXBvcnRlclN0YXRlLFE9VS5vYmo7cmV0dXJuIFUub2JqPXt9LFF9LEIucHJv''@;'; put 'put ''dG90eXBlLmxlYXZlT2JqZWN0PWZ1bmN0aW9uKFUpe2NvbnN0IFE9dGhpcy5fcmVwb3J0ZXJTdGF0ZSxqPVEub2JqO3JldHVybiBRLm9iaj1VLGp9LEIucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKFUpe2xldCBRO2NvbnN0IGo9dGhpcy5fcmVwb3J0ZXJTdGF0ZSxyZT1VIGluc3RhbmNlb2Yg''@;'; put 'put ''RTtpZihRPXJlP1U6bmV3IEUoai5wYXRoLm1hcChmdW5jdGlvbihhZSl7cmV0dXJuIlsiK0pTT04uc3RyaW5naWZ5KGFlKSsiXSJ9KS5qb2luKCIiKSxVLm1lc3NhZ2V8fFUsVS5zdGFjayksIWoub3B0aW9ucy5wYXJ0aWFsKXRocm93IFE7cmV0dXJuIHJlfHxqLmVycm9ycy5wdXNoKFEpLFF9''@;'; put 'put ''LEIucHJvdG90eXBlLndyYXBSZXN1bHQ9ZnVuY3Rpb24oVSl7Y29uc3QgUT10aGlzLl9yZXBvcnRlclN0YXRlO3JldHVybiBRLm9wdGlvbnMucGFydGlhbD97cmVzdWx0OnRoaXMuaXNFcnJvcihVKT9udWxsOlUsZXJyb3JzOlEuZXJyb3JzfTpVfSxtZShFLEVycm9yKSxFLnByb3RvdHlwZS5y''@;'; put 'put ''ZXRocm93PWZ1bmN0aW9uKFUpe2lmKHRoaXMubWVzc2FnZT1VKyIgYXQ6ICIrKHRoaXMucGF0aHx8IihzaGFsbG93KSIpLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLEUpLCF0aGlzLnN0YWNrKXRyeXt0aHJvdyBuZXcgRXJyb3IodGhpcy5t''@;'; put 'put ''ZXNzYWdlKX1jYXRjaChRKXt0aGlzLnN0YWNrPVEuc3RhY2t9cmV0dXJuIHRoaXN9fSwyNTQ5NjooWGUsSmUpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEwobWUpe2NvbnN0IEI9e307cmV0dXJuIE9iamVjdC5rZXlzKG1lKS5mb3JFYWNoKGZ1bmN0aW9uKEUpeygwfEUpPT1FJiYoRXw9MCks''@;'; put 'put ''QlttZVtFXV09RX0pLEJ9SmUudGFnQ2xhc3M9ezA6InVuaXZlcnNhbCIsMToiYXBwbGljYXRpb24iLDI6ImNvbnRleHQiLDM6InByaXZhdGUifSxKZS50YWdDbGFzc0J5TmFtZT1MKEplLnRhZ0NsYXNzKSxKZS50YWc9ezA6ImVuZCIsMToiYm9vbCIsMjoiaW50IiwzOiJiaXRzdHIiLDQ6Im9j''@;'; put 'put ''dHN0ciIsNToibnVsbF8iLDY6Im9iamlkIiw3OiJvYmpEZXNjIiw4OiJleHRlcm5hbCIsOToicmVhbCIsMTA6ImVudW0iLDExOiJlbWJlZCIsMTI6InV0ZjhzdHIiLDEzOiJyZWxhdGl2ZU9pZCIsMTY6InNlcSIsMTc6InNldCIsMTg6Im51bXN0ciIsMTk6InByaW50c3RyIiwyMDoidDYxc3Ry''@;'; put 'put ''IiwyMToidmlkZW9zdHIiLDIyOiJpYTVzdHIiLDIzOiJ1dGN0aW1lIiwyNDoiZ2VudGltZSIsMjU6ImdyYXBoc3RyIiwyNjoiaXNvNjQ2c3RyIiwyNzoiZ2Vuc3RyIiwyODoidW5pc3RyIiwyOToiY2hhcnN0ciIsMzA6ImJtcHN0ciJ9LEplLnRhZ0J5TmFtZT1MKEplLnRhZyl9LDU0NTk6KFhl''@;'; put 'put ''LEplLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0IG1lPUplO21lLl9yZXZlcnNlPWZ1bmN0aW9uKEUpe2NvbnN0IEVlPXt9O3JldHVybiBPYmplY3Qua2V5cyhFKS5mb3JFYWNoKGZ1bmN0aW9uKFUpeygwfFUpPT1VJiYoVXw9MCksRWVbRVtVXV09VX0pLEVlfSxtZS5kZXI9TCgyNTQ5Nil9LDg3''@;'; put 'put ''MTI3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBtZT1MKDgzODk0KSxCPUwoMTM4NTQpLEU9TCgxMjc2OSkuQyxFZT1MKDMxNDMwKSxVPUwoMjU0OTYpO2Z1bmN0aW9uIFEoWSl7dGhpcy5lbmM9ImRlciIsdGhpcy5uYW1lPVkubmFtZSx0aGlzLmVudGl0eT1ZLHRoaXMudHJlZT1u''@;'; put 'put ''ZXcgaix0aGlzLnRyZWUuX2luaXQoWS5ib2R5KX1mdW5jdGlvbiBqKFkpe0VlLmNhbGwodGhpcywiZGVyIixZKX1mdW5jdGlvbiByZShZLFcpe2xldCBOPVkucmVhZFVJbnQ4KFcpO2lmKFkuaXNFcnJvcihOKSlyZXR1cm4gTjtjb25zdCB0ZT1VLnRhZ0NsYXNzW04+PjZdLEs9MD09KDMyJk4p''@;'; put 'put ''O2lmKDMxPT0oMzEmTikpe2xldCBzZT1OO2ZvcihOPTA7MTI4PT0oMTI4JnNlKTspe2lmKHNlPVkucmVhZFVJbnQ4KFcpLFkuaXNFcnJvcihzZSkpcmV0dXJuIHNlO048PD03LE58PTEyNyZzZX19ZWxzZSBOJj0zMTtyZXR1cm57Y2xzOnRlLHByaW1pdGl2ZTpLLHRhZzpOLHRhZ1N0cjpVLnRh''@;'; put 'put ''Z1tOXX19ZnVuY3Rpb24gYWUoWSxXLE4pe2xldCB0ZT1ZLnJlYWRVSW50OChOKTtpZihZLmlzRXJyb3IodGUpKXJldHVybiB0ZTtpZighVyYmMTI4PT09dGUpcmV0dXJuIG51bGw7aWYoMD09KDEyOCZ0ZSkpcmV0dXJuIHRlO2NvbnN0IEs9MTI3JnRlO2lmKEs+NClyZXR1cm4gWS5lcnJvcigi''@;'; put 'put ''bGVuZ3RoIG9jdGVjdCBpcyB0b28gbG9uZyIpO3RlPTA7Zm9yKGxldCBKPTA7SjxLO0orKyl7dGU8PD04O2NvbnN0IHNlPVkucmVhZFVJbnQ4KE4pO2lmKFkuaXNFcnJvcihzZSkpcmV0dXJuIHNlO3RlfD1zZX1yZXR1cm4gdGV9WGUuZXhwb3J0cz1RLFEucHJvdG90eXBlLmRlY29kZT1mdW5j''@;'; put 'put ''dGlvbihXLE4pe3JldHVybiBFLmlzRGVjb2RlckJ1ZmZlcihXKXx8KFc9bmV3IEUoVyxOKSksdGhpcy50cmVlLl9kZWNvZGUoVyxOKX0sbWUoaixFZSksai5wcm90b3R5cGUuX3BlZWtUYWc9ZnVuY3Rpb24oVyxOLHRlKXtpZihXLmlzRW1wdHkoKSlyZXR1cm4hMTtjb25zdCBLPVcuc2F2ZSgp''@;'; put 'put ''LEo9cmUoVywnRmFpbGVkIHRvIHBlZWsgdGFnOiAiJytOKyciJyk7cmV0dXJuIFcuaXNFcnJvcihKKT9KOihXLnJlc3RvcmUoSyksSi50YWc9PT1OfHxKLnRhZ1N0cj09PU58fEoudGFnU3RyKyJvZiI9PT1OfHx0ZSl9LGoucHJvdG90eXBlLl9kZWNvZGVUYWc9ZnVuY3Rpb24oVyxOLHRlKXtj''@;'; put 'put ''b25zdCBLPXJlKFcsJ0ZhaWxlZCB0byBkZWNvZGUgdGFnIG9mICInK04rJyInKTtpZihXLmlzRXJyb3IoSykpcmV0dXJuIEs7bGV0IEo9YWUoVyxLLnByaW1pdGl2ZSwnRmFpbGVkIHRvIGdldCBsZW5ndGggb2YgIicrTisnIicpO2lmKFcuaXNFcnJvcihKKSlyZXR1cm4gSjtpZighdGUmJksu''@;'; put 'put ''dGFnIT09TiYmSy50YWdTdHIhPT1OJiZLLnRhZ1N0cisib2YiIT09TilyZXR1cm4gVy5lcnJvcignRmFpbGVkIHRvIG1hdGNoIHRhZzogIicrTisnIicpO2lmKEsucHJpbWl0aXZlfHxudWxsIT09SilyZXR1cm4gVy5za2lwKEosJ0ZhaWxlZCB0byBtYXRjaCBib2R5IG9mOiAiJytOKyciJyk7''@;'; put 'put ''Y29uc3Qgc2U9Vy5zYXZlKCksb2U9dGhpcy5fc2tpcFVudGlsRW5kKFcsJ0ZhaWxlZCB0byBza2lwIGluZGVmaW5pdGUgbGVuZ3RoIGJvZHk6ICInK3RoaXMudGFnKyciJyk7cmV0dXJuIFcuaXNFcnJvcihvZSk/b2U6KEo9Vy5vZmZzZXQtc2Uub2Zmc2V0LFcucmVzdG9yZShzZSksVy5za2lw''@;'; put 'put ''KEosJ0ZhaWxlZCB0byBtYXRjaCBib2R5IG9mOiAiJytOKyciJykpfSxqLnByb3RvdHlwZS5fc2tpcFVudGlsRW5kPWZ1bmN0aW9uKFcsTil7Zm9yKDs7KXtjb25zdCB0ZT1yZShXLE4pO2lmKFcuaXNFcnJvcih0ZSkpcmV0dXJuIHRlO2NvbnN0IEs9YWUoVyx0ZS5wcmltaXRpdmUsTik7aWYo''@;'; put 'put ''Vy5pc0Vycm9yKEspKXJldHVybiBLO2xldCBKO2lmKEo9dGUucHJpbWl0aXZlfHxudWxsIT09Sz9XLnNraXAoSyk6dGhpcy5fc2tpcFVudGlsRW5kKFcsTiksVy5pc0Vycm9yKEopKXJldHVybiBKO2lmKCJlbmQiPT09dGUudGFnU3RyKWJyZWFrfX0sai5wcm90b3R5cGUuX2RlY29kZUxpc3Q9''@;'; put 'put ''ZnVuY3Rpb24oVyxOLHRlLEspe2NvbnN0IEo9W107Zm9yKDshVy5pc0VtcHR5KCk7KXtjb25zdCBzZT10aGlzLl9wZWVrVGFnKFcsImVuZCIpO2lmKFcuaXNFcnJvcihzZSkpcmV0dXJuIHNlO2NvbnN0IG9lPXRlLmRlY29kZShXLCJkZXIiLEspO2lmKFcuaXNFcnJvcihvZSkmJnNlKWJyZWFr''@;'; put 'put ''O0oucHVzaChvZSl9cmV0dXJuIEp9LGoucHJvdG90eXBlLl9kZWNvZGVTdHI9ZnVuY3Rpb24oVyxOKXtpZigiYml0c3RyIj09PU4pe2NvbnN0IHRlPVcucmVhZFVJbnQ4KCk7cmV0dXJuIFcuaXNFcnJvcih0ZSk/dGU6e3VudXNlZDp0ZSxkYXRhOlcucmF3KCl9fWlmKCJibXBzdHIiPT09Til7''@;'; put 'put ''Y29uc3QgdGU9Vy5yYXcoKTtpZih0ZS5sZW5ndGglMj09MSlyZXR1cm4gVy5lcnJvcigiRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IGJtcHN0ciBsZW5ndGggbWlzbWF0Y2giKTtsZXQgSz0iIjtmb3IobGV0IEo9MDtKPHRlLmxlbmd0aC8yO0orKylLKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRl''@;'; put 'put ''LnJlYWRVSW50MTZCRSgyKkopKTtyZXR1cm4gS31pZigibnVtc3RyIj09PU4pe2NvbnN0IHRlPVcucmF3KCkudG9TdHJpbmcoImFzY2lpIik7cmV0dXJuIHRoaXMuX2lzTnVtc3RyKHRlKT90ZTpXLmVycm9yKCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogbnVtc3RyIHVuc3VwcG9ydGVkIGNo''@;'; put 'put ''YXJhY3RlcnMiKX1pZigib2N0c3RyIj09PU4pcmV0dXJuIFcucmF3KCk7aWYoIm9iakRlc2MiPT09TilyZXR1cm4gVy5yYXcoKTtpZigicHJpbnRzdHIiPT09Til7Y29uc3QgdGU9Vy5yYXcoKS50b1N0cmluZygiYXNjaWkiKTtyZXR1cm4gdGhpcy5faXNQcmludHN0cih0ZSk/dGU6Vy5lcnJv''@;'; put 'put ''cigiRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IHByaW50c3RyIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMiKX1yZXR1cm4vc3RyJC8udGVzdChOKT9XLnJhdygpLnRvU3RyaW5nKCk6Vy5lcnJvcigiRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICIrTisiIHVuc3VwcG9ydGVkIil9LGoucHJvdG90''@;'; put 'put ''eXBlLl9kZWNvZGVPYmppZD1mdW5jdGlvbihXLE4sdGUpe2xldCBLO2NvbnN0IEo9W107bGV0IHNlPTAsb2U9MDtmb3IoOyFXLmlzRW1wdHkoKTspb2U9Vy5yZWFkVUludDgoKSxzZTw8PTcsc2V8PTEyNyZvZSwwPT0oMTI4Jm9lKSYmKEoucHVzaChzZSksc2U9MCk7aWYoMTI4Jm9lJiZKLnB1''@;'; put 'put ''c2goc2UpLEs9dGU/SjpbSlswXS80MHwwLEpbMF0lNDBdLmNvbmNhdChKLnNsaWNlKDEpKSxOKXtsZXQgdmU9TltLLmpvaW4oIiAiKV07dm9pZCAwPT09dmUmJih2ZT1OW0suam9pbigiLiIpXSksdm9pZCAwIT09dmUmJihLPXZlKX1yZXR1cm4gS30sai5wcm90b3R5cGUuX2RlY29kZVRpbWU9''@;'; put 'put ''ZnVuY3Rpb24oVyxOKXtjb25zdCB0ZT1XLnJhdygpLnRvU3RyaW5nKCk7bGV0IEssSixzZSxvZSxjZSxkZTtpZigiZ2VudGltZSI9PT1OKUs9MHx0ZS5zbGljZSgwLDQpLEo9MHx0ZS5zbGljZSg0LDYpLHNlPTB8dGUuc2xpY2UoNiw4KSxvZT0wfHRlLnNsaWNlKDgsMTApLGNlPTB8dGUuc2xp''@;'; put 'put ''Y2UoMTAsMTIpLGRlPTB8dGUuc2xpY2UoMTIsMTQpO2Vsc2V7aWYoInV0Y3RpbWUiIT09TilyZXR1cm4gVy5lcnJvcigiRGVjb2RpbmcgIitOKyIgdGltZSBpcyBub3Qgc3VwcG9ydGVkIHlldCIpO0s9MHx0ZS5zbGljZSgwLDIpLEo9MHx0ZS5zbGljZSgyLDQpLHNlPTB8dGUuc2xpY2UoNCw2''@;'; put 'put ''KSxvZT0wfHRlLnNsaWNlKDYsOCksY2U9MHx0ZS5zbGljZSg4LDEwKSxkZT0wfHRlLnNsaWNlKDEwLDEyKSxLPUs8NzA/MmUzK0s6MTkwMCtLfXJldHVybiBEYXRlLlVUQyhLLEotMSxzZSxvZSxjZSxkZSwwKX0sai5wcm90b3R5cGUuX2RlY29kZU51bGw9ZnVuY3Rpb24oKXtyZXR1cm4gbnVs''@;'; put 'put ''bH0sai5wcm90b3R5cGUuX2RlY29kZUJvb2w9ZnVuY3Rpb24oVyl7Y29uc3QgTj1XLnJlYWRVSW50OCgpO3JldHVybiBXLmlzRXJyb3IoTik/TjowIT09Tn0sai5wcm90b3R5cGUuX2RlY29kZUludD1mdW5jdGlvbihXLE4pe2NvbnN0IHRlPVcucmF3KCk7bGV0IEs9bmV3IEIodGUpO3JldHVy''@;'; put 'put ''biBOJiYoSz1OW0sudG9TdHJpbmcoMTApXXx8SyksS30sai5wcm90b3R5cGUuX3VzZT1mdW5jdGlvbihXLE4pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBXJiYoVz1XKE4pKSxXLl9nZXREZWNvZGVyKCJkZXIiKS50cmVlfX0sNzAxOTY6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0''@;'; put 'put ''IG1lPUplO21lLmRlcj1MKDg3MTI3KSxtZS5wZW09TCg5OTYxNyl9LDk5NjE3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBtZT1MKDgzODk0KSxCPUwoNjIwMzgpLkJ1ZmZlcixFPUwoODcxMjcpO2Z1bmN0aW9uIEVlKFUpe0UuY2FsbCh0aGlzLFUpLHRoaXMuZW5jPSJwZW0ifW1l''@;'; put 'put ''KEVlLEUpLFhlLmV4cG9ydHM9RWUsRWUucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihRLGope2NvbnN0IHJlPVEudG9TdHJpbmcoKS5zcGxpdCgvW1xyXG5dKy9nKSxhZT1qLmxhYmVsLnRvVXBwZXJDYXNlKCksWT0vXi0tLS0tKEJFR0lOfEVORCkgKFteLV0rKS0tLS0tJC87bGV0IFc9LTEs''@;'; put 'put ''Tj0tMTtmb3IobGV0IEo9MDtKPHJlLmxlbmd0aDtKKyspe2NvbnN0IHNlPXJlW0pdLm1hdGNoKFkpO2lmKG51bGwhPT1zZSYmc2VbMl09PT1hZSl7aWYoLTEhPT1XKXtpZigiRU5EIiE9PXNlWzFdKWJyZWFrO049SjticmVha31pZigiQkVHSU4iIT09c2VbMV0pYnJlYWs7Vz1KfX1pZigtMT09''@;'; put 'put ''PVd8fC0xPT09Til0aHJvdyBuZXcgRXJyb3IoIlBFTSBzZWN0aW9uIG5vdCBmb3VuZCBmb3I6ICIrYWUpO2NvbnN0IHRlPXJlLnNsaWNlKFcrMSxOKS5qb2luKCIiKTt0ZS5yZXBsYWNlKC9bXmEtejAtOSsvPV0rL2dpLCIiKTtjb25zdCBLPUIuZnJvbSh0ZSwiYmFzZTY0Iik7cmV0dXJuIEUu''@;'; put 'put ''cHJvdG90eXBlLmRlY29kZS5jYWxsKHRoaXMsSyxqKX19LDE2Mzc0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBtZT1MKDgzODk0KSxCPUwoNjIwMzgpLkJ1ZmZlcixFPUwoMzE0MzApLEVlPUwoMjU0OTYpO2Z1bmN0aW9uIFUoYWUpe3RoaXMuZW5jPSJkZXIiLHRoaXMubmFtZT1h''@;'; put 'put ''ZS5uYW1lLHRoaXMuZW50aXR5PWFlLHRoaXMudHJlZT1uZXcgUSx0aGlzLnRyZWUuX2luaXQoYWUuYm9keSl9ZnVuY3Rpb24gUShhZSl7RS5jYWxsKHRoaXMsImRlciIsYWUpfWZ1bmN0aW9uIGooYWUpe3JldHVybiBhZTwxMD8iMCIrYWU6YWV9WGUuZXhwb3J0cz1VLFUucHJvdG90eXBlLmVu''@;'; put 'put ''Y29kZT1mdW5jdGlvbihZLFcpe3JldHVybiB0aGlzLnRyZWUuX2VuY29kZShZLFcpLmpvaW4oKX0sbWUoUSxFKSxRLnByb3RvdHlwZS5fZW5jb2RlQ29tcG9zaXRlPWZ1bmN0aW9uKFksVyxOLHRlKXtjb25zdCBLPWZ1bmN0aW9uIHJlKGFlLFksVyxOKXtsZXQgdGU7aWYoInNlcW9mIj09PWFl''@;'; put 'put ''P2FlPSJzZXEiOiJzZXRvZiI9PT1hZSYmKGFlPSJzZXQiKSxFZS50YWdCeU5hbWUuaGFzT3duUHJvcGVydHkoYWUpKXRlPUVlLnRhZ0J5TmFtZVthZV07ZWxzZXtpZigibnVtYmVyIiE9dHlwZW9mIGFlfHwoMHxhZSkhPT1hZSlyZXR1cm4gTi5lcnJvcigiVW5rbm93biB0YWc6ICIrYWUpO3Rl''@;'; put 'put ''PWFlfXJldHVybiB0ZT49MzE/Ti5lcnJvcigiTXVsdGktb2N0ZXQgdGFnIGVuY29kaW5nIHVuc3VwcG9ydGVkIik6KFl8fCh0ZXw9MzIpLHRlfD1FZS50YWdDbGFzc0J5TmFtZVtXfHwidW5pdmVyc2FsIl08PDYsdGUpfShZLFcsTix0aGlzLnJlcG9ydGVyKTtpZih0ZS5sZW5ndGg8MTI4KXtj''@;'; put 'put ''b25zdCBvZT1CLmFsbG9jKDIpO3JldHVybiBvZVswXT1LLG9lWzFdPXRlLmxlbmd0aCx0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFtvZSx0ZV0pfWxldCBKPTE7Zm9yKGxldCBvZT10ZS5sZW5ndGg7b2U+PTI1NjtvZT4+PTgpSisrO2NvbnN0IHNlPUIuYWxsb2MoMitKKTtzZVswXT1LLHNl''@;'; put 'put ''WzFdPTEyOHxKO2ZvcihsZXQgb2U9MStKLGNlPXRlLmxlbmd0aDtjZT4wO29lLS0sY2U+Pj04KXNlW29lXT0yNTUmY2U7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoW3NlLHRlXSl9LFEucHJvdG90eXBlLl9lbmNvZGVTdHI9ZnVuY3Rpb24oWSxXKXtpZigiYml0c3RyIj09PVcp''@;'; put 'put ''cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWzB8WS51bnVzZWQsWS5kYXRhXSk7aWYoImJtcHN0ciI9PT1XKXtjb25zdCBOPUIuYWxsb2MoMipZLmxlbmd0aCk7Zm9yKGxldCB0ZT0wO3RlPFkubGVuZ3RoO3RlKyspTi53cml0ZVVJbnQxNkJFKFkuY2hhckNvZGVBdCh0ZSksMip0''@;'; put 'put ''ZSk7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoTil9cmV0dXJuIm51bXN0ciI9PT1XP3RoaXMuX2lzTnVtc3RyKFkpP3RoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWSk6dGhpcy5yZXBvcnRlci5lcnJvcigiRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IG51bXN0ciBzdXBwb3J0''@;'; put 'put ''cyBvbmx5IGRpZ2l0cyBhbmQgc3BhY2UiKToicHJpbnRzdHIiPT09Vz90aGlzLl9pc1ByaW50c3RyKFkpP3RoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWSk6dGhpcy5yZXBvcnRlci5lcnJvcigiRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IHByaW50c3RyIHN1cHBvcnRzIG9ubHkgbGF0aW4g''@;'; put 'put ''dXBwZXIgYW5kIGxvd2VyIGNhc2UgbGV0dGVycywgZGlnaXRzLCBzcGFjZSwgYXBvc3Ryb3BoZSwgbGVmdCBhbmQgcmlndGggcGFyZW50aGVzaXMsIHBsdXMgc2lnbiwgY29tbWEsIGh5cGhlbiwgZG90LCBzbGFzaCwgY29sb24sIGVxdWFsIHNpZ24sIHF1ZXN0aW9uIG1hcmsiKTovc3RyJC8u''@;'; put 'put ''dGVzdChXKXx8Im9iakRlc2MiPT09Vz90aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFkpOnRoaXMucmVwb3J0ZXIuZXJyb3IoIkVuY29kaW5nIG9mIHN0cmluZyB0eXBlOiAiK1crIiB1bnN1cHBvcnRlZCIpfSxRLnByb3RvdHlwZS5fZW5jb2RlT2JqaWQ9ZnVuY3Rpb24oWSxXLE4pe2lmKCJz''@;'; put 'put ''dHJpbmciPT10eXBlb2YgWSl7aWYoIVcpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoInN0cmluZyBvYmppZCBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXAgZm91bmQiKTtpZighVy5oYXNPd25Qcm9wZXJ0eShZKSlyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigib2JqaWQgbm90IGZvdW5k''@;'; put 'put ''IGluIHZhbHVlcyBtYXAiKTtZPVdbWV0uc3BsaXQoL1tccy5dKy9nKTtmb3IobGV0IHNlPTA7c2U8WS5sZW5ndGg7c2UrKylZW3NlXXw9MH1lbHNlIGlmKEFycmF5LmlzQXJyYXkoWSkpe1k9WS5zbGljZSgpO2ZvcihsZXQgc2U9MDtzZTxZLmxlbmd0aDtzZSsrKVlbc2VdfD0wfWlmKCFBcnJh''@;'; put 'put ''eS5pc0FycmF5KFkpKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCJvYmppZCgpIHNob3VsZCBiZSBlaXRoZXIgYXJyYXkgb3Igc3RyaW5nLCBnb3Q6ICIrSlNPTi5zdHJpbmdpZnkoWSkpO2lmKCFOKXtpZihZWzFdPj00MClyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigiU2Vjb25kIG9i''@;'; put 'put ''amlkIGlkZW50aWZpZXIgT09CIik7WS5zcGxpY2UoMCwyLDQwKllbMF0rWVsxXSl9bGV0IHRlPTA7Zm9yKGxldCBzZT0wO3NlPFkubGVuZ3RoO3NlKyspe2xldCBvZT1ZW3NlXTtmb3IodGUrKztvZT49MTI4O29lPj49Nyl0ZSsrfWNvbnN0IEs9Qi5hbGxvYyh0ZSk7bGV0IEo9Sy5sZW5ndGgt''@;'; put 'put ''MTtmb3IobGV0IHNlPVkubGVuZ3RoLTE7c2U+PTA7c2UtLSl7bGV0IG9lPVlbc2VdO2ZvcihLW0otLV09MTI3Jm9lOyhvZT4+PTcpPjA7KUtbSi0tXT0xMjh8MTI3Jm9lfXJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKEspfSxRLnByb3RvdHlwZS5fZW5jb2RlVGltZT1mdW5jdGlv''@;'; put 'put ''bihZLFcpe2xldCBOO2NvbnN0IHRlPW5ldyBEYXRlKFkpO3JldHVybiJnZW50aW1lIj09PVc/Tj1baih0ZS5nZXRVVENGdWxsWWVhcigpKSxqKHRlLmdldFVUQ01vbnRoKCkrMSksaih0ZS5nZXRVVENEYXRlKCkpLGoodGUuZ2V0VVRDSG91cnMoKSksaih0ZS5nZXRVVENNaW51dGVzKCkpLGoo''@;'; put 'put ''dGUuZ2V0VVRDU2Vjb25kcygpKSwiWiJdLmpvaW4oIiIpOiJ1dGN0aW1lIj09PVc/Tj1baih0ZS5nZXRVVENGdWxsWWVhcigpJTEwMCksaih0ZS5nZXRVVENNb250aCgpKzEpLGoodGUuZ2V0VVRDRGF0ZSgpKSxqKHRlLmdldFVUQ0hvdXJzKCkpLGoodGUuZ2V0VVRDTWludXRlcygpKSxqKHRl''@;'; put 'put ''LmdldFVUQ1NlY29uZHMoKSksIloiXS5qb2luKCIiKTp0aGlzLnJlcG9ydGVyLmVycm9yKCJFbmNvZGluZyAiK1crIiB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0IiksdGhpcy5fZW5jb2RlU3RyKE4sIm9jdHN0ciIpfSxRLnByb3RvdHlwZS5fZW5jb2RlTnVsbD1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKCIiKX0sUS5wcm90b3R5cGUuX2VuY29kZUludD1mdW5jdGlvbihZLFcpe2lmKCJzdHJpbmciPT10eXBlb2YgWSl7aWYoIVcpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoIlN0cmluZyBpbnQgb3IgZW51bSBnaXZlbiwgYnV0IG5vIHZhbHVl''@;'; put 'put ''cyBtYXAiKTtpZighVy5oYXNPd25Qcm9wZXJ0eShZKSlyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigiVmFsdWVzIG1hcCBkb2Vzbid0IGNvbnRhaW46ICIrSlNPTi5zdHJpbmdpZnkoWSkpO1k9V1tZXX1pZigibnVtYmVyIiE9dHlwZW9mIFkmJiFCLmlzQnVmZmVyKFkpKXtjb25zdCBLPVku''@;'; put 'put ''dG9BcnJheSgpOyFZLnNpZ24mJjEyOCZLWzBdJiZLLnVuc2hpZnQoMCksWT1CLmZyb20oSyl9aWYoQi5pc0J1ZmZlcihZKSl7bGV0IEs9WS5sZW5ndGg7MD09PVkubGVuZ3RoJiZLKys7Y29uc3QgSj1CLmFsbG9jKEspO3JldHVybiBZLmNvcHkoSiksMD09PVkubGVuZ3RoJiYoSlswXT0wKSx0''@;'; put 'put ''aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKEopfWlmKFk8MTI4KXJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFkpO2lmKFk8MjU2KXJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFswLFldKTtsZXQgTj0xO2ZvcihsZXQgSz1ZO0s+PTI1NjtLPj49OClOKys7Y29uc3Qg''@;'; put 'put ''dGU9bmV3IEFycmF5KE4pO2ZvcihsZXQgSz10ZS5sZW5ndGgtMTtLPj0wO0stLSl0ZVtLXT0yNTUmWSxZPj49ODtyZXR1cm4gMTI4JnRlWzBdJiZ0ZS51bnNoaWZ0KDApLHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoQi5mcm9tKHRlKSl9LFEucHJvdG90eXBlLl9lbmNvZGVCb29sPWZ1bmN0''@;'; put 'put ''aW9uKFkpe3JldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFk/MjU1OjApfSxRLnByb3RvdHlwZS5fdXNlPWZ1bmN0aW9uKFksVyl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFkmJihZPVkoVykpLFkuX2dldEVuY29kZXIoImRlciIpLnRyZWV9LFEucHJvdG90eXBlLl9za2lwRGVm''@;'; put 'put ''YXVsdD1mdW5jdGlvbihZLFcsTil7Y29uc3QgdGU9dGhpcy5fYmFzZVN0YXRlO2xldCBLO2lmKG51bGw9PT10ZS5kZWZhdWx0KXJldHVybiExO2NvbnN0IEo9WS5qb2luKCk7aWYodm9pZCAwPT09dGUuZGVmYXVsdEJ1ZmZlciYmKHRlLmRlZmF1bHRCdWZmZXI9dGhpcy5fZW5jb2RlVmFsdWUo''@;'; put 'put ''dGUuZGVmYXVsdCxXLE4pLmpvaW4oKSksSi5sZW5ndGghPT10ZS5kZWZhdWx0QnVmZmVyLmxlbmd0aClyZXR1cm4hMTtmb3IoSz0wO0s8Si5sZW5ndGg7SysrKWlmKEpbS10hPT10ZS5kZWZhdWx0QnVmZmVyW0tdKXJldHVybiExO3JldHVybiEwfX0sMjExMzE6KFhlLEplLEwpPT57InVzZSBz''@;'; put 'put ''dHJpY3QiO2NvbnN0IG1lPUplO21lLmRlcj1MKDE2Mzc0KSxtZS5wZW09TCgzNTMwKX0sMzUzMDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgbWU9TCg4Mzg5NCksQj1MKDE2Mzc0KTtmdW5jdGlvbiBFKEVlKXtCLmNhbGwodGhpcyxFZSksdGhpcy5lbmM9InBlbSJ9bWUoRSxCKSxY''@;'; put 'put ''ZS5leHBvcnRzPUUsRS5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKFUsUSl7Y29uc3QgcmU9Qi5wcm90b3R5cGUuZW5jb2RlLmNhbGwodGhpcyxVKS50b1N0cmluZygiYmFzZTY0IiksYWU9WyItLS0tLUJFR0lOICIrUS5sYWJlbCsiLS0tLS0iXTtmb3IobGV0IFk9MDtZPHJlLmxlbmd0aDtZ''@;'; put 'put ''Kz02NClhZS5wdXNoKHJlLnNsaWNlKFksWSs2NCkpO3JldHVybiBhZS5wdXNoKCItLS0tLUVORCAiK1EubGFiZWwrIi0tLS0tIiksYWUuam9pbigiXG4iKX19LDEzODU0OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSxCKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gRShoZSxPKXtpZigh''@;'; put 'put ''aGUpdGhyb3cgbmV3IEVycm9yKE98fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gRWUoaGUsTyl7aGUuc3VwZXJfPU87dmFyIHo9ZnVuY3Rpb24oKXt9O3oucHJvdG90eXBlPU8ucHJvdG90eXBlLGhlLnByb3RvdHlwZT1uZXcgeixoZS5wcm90b3R5cGUuY29uc3RydWN0b3I9aGV9ZnVu''@;'; put 'put ''Y3Rpb24gVShoZSxPLHope2lmKFUuaXNCTihoZSkpcmV0dXJuIGhlO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1oZSYmKCgibGUiPT09T3x8ImJlIj09PU8pJiYoej1PLE89MTApLHRoaXMuX2luaXQoaGV8fDAsT3x8''@;'; put 'put ''MTAsenx8ImJlIikpfXZhciBROyJvYmplY3QiPT10eXBlb2YgbWU/bWUuZXhwb3J0cz1VOkIuQk49VSxVLkJOPVUsVS53b3JkU2l6ZT0yNjt0cnl7UT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LkJ1ZmZlcj93aW5kb3cuQnVmZmVyOkwoODA5NTApLkJ1ZmZl''@;'; put 'put ''cn1jYXRjaChoZSl7fWZ1bmN0aW9uIGooaGUsTyl7dmFyIHo9aGUuY2hhckNvZGVBdChPKTtyZXR1cm4gej49NjUmJno8PTcwP3otNTU6ej49OTcmJno8PTEwMj96LTg3OnotNDgmMTV9ZnVuY3Rpb24gcmUoaGUsTyx6KXt2YXIgZWU9aihoZSx6KTtyZXR1cm4gei0xPj1PJiYoZWV8PWooaGUs''@;'; put 'put ''ei0xKTw8NCksZWV9ZnVuY3Rpb24gYWUoaGUsTyx6LGVlKXtmb3IodmFyIG5lPTAseD1NYXRoLm1pbihoZS5sZW5ndGgseiksUD1PO1A8eDtQKyspe3ZhciBWPWhlLmNoYXJDb2RlQXQoUCktNDg7bmUqPWVlLG5lKz1WPj00OT9WLTQ5KzEwOlY+PTE3P1YtMTcrMTA6Vn1yZXR1cm4gbmV9VS5p''@;'; put 'put ''c0JOPWZ1bmN0aW9uKE8pe3JldHVybiBPIGluc3RhbmNlb2YgVXx8bnVsbCE9PU8mJiJvYmplY3QiPT10eXBlb2YgTyYmTy5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PVUud29yZFNpemUmJkFycmF5LmlzQXJyYXkoTy53b3Jkcyl9LFUubWF4PWZ1bmN0aW9uKE8seil7cmV0dXJuIE8uY21wKHop''@;'; put 'put ''PjA/Tzp6fSxVLm1pbj1mdW5jdGlvbihPLHope3JldHVybiBPLmNtcCh6KTwwP086en0sVS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oTyx6LGVlKXtpZigibnVtYmVyIj09dHlwZW9mIE8pcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoTyx6LGVlKTtpZigib2JqZWN0Ij09dHlwZW9mIE8pcmV0''@;'; put 'put ''dXJuIHRoaXMuX2luaXRBcnJheShPLHosZWUpOyJoZXgiPT09eiYmKHo9MTYpLEUoej09PSgwfHopJiZ6Pj0yJiZ6PD0zNik7dmFyIG5lPTA7Ii0iPT09KE89Ty50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJihuZSsrLHRoaXMubmVnYXRpdmU9MSksbmU8Ty5sZW5ndGgmJigx''@;'; put 'put ''Nj09PXo/dGhpcy5fcGFyc2VIZXgoTyxuZSxlZSk6KHRoaXMuX3BhcnNlQmFzZShPLHosbmUpLCJsZSI9PT1lZSYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHosZWUpKSl9LFUucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKE8seixlZSl7TzwwJiYodGhpcy5uZWdhdGl2''@;'; put 'put ''ZT0xLE89LU8pLE88NjcxMDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJk9dLHRoaXMubGVuZ3RoPTEpOk88NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmTyxPLzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKTooRShPPDkwMDcxOTkyNTQ3NDA5OTIpLHRo''@;'; put 'put ''aXMud29yZHM9WzY3MTA4ODYzJk8sTy82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09ZWUmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSx6LGVlKX0sVS5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbihPLHosZWUpe2lmKEUoIm51bWJlciI9PXR5''@;'; put 'put ''cGVvZiBPLmxlbmd0aCksTy5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoTy5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgbmU9MDtuZTx0aGlzLmxlbmd0aDtu''@;'; put 'put ''ZSsrKXRoaXMud29yZHNbbmVdPTA7dmFyIHgsUCxWPTA7aWYoImJlIj09PWVlKWZvcihuZT1PLmxlbmd0aC0xLHg9MDtuZT49MDtuZS09Myl0aGlzLndvcmRzW3hdfD0oUD1PW25lXXxPW25lLTFdPDw4fE9bbmUtMl08PDE2KTw8ViY2NzEwODg2Myx0aGlzLndvcmRzW3grMV09UD4+PjI2LVYm''@;'; put 'put ''NjcxMDg4NjMsKFYrPTI0KT49MjYmJihWLT0yNix4KyspO2Vsc2UgaWYoImxlIj09PWVlKWZvcihuZT0wLHg9MDtuZTxPLmxlbmd0aDtuZSs9Myl0aGlzLndvcmRzW3hdfD0oUD1PW25lXXxPW25lKzFdPDw4fE9bbmUrMl08PDE2KTw8ViY2NzEwODg2Myx0aGlzLndvcmRzW3grMV09UD4+PjI2''@;'; put 'put ''LVYmNjcxMDg4NjMsKFYrPTI0KT49MjYmJihWLT0yNix4KyspO3JldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihPLHosZWUpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoTy5sZW5ndGgteikvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5n''@;'; put 'put ''dGgpO2Zvcih2YXIgbmU9MDtuZTx0aGlzLmxlbmd0aDtuZSsrKXRoaXMud29yZHNbbmVdPTA7dmFyIFYseD0wLFA9MDtpZigiYmUiPT09ZWUpZm9yKG5lPU8ubGVuZ3RoLTE7bmU+PXo7bmUtPTIpVj1yZShPLHosbmUpPDx4LHRoaXMud29yZHNbUF18PTY3MTA4ODYzJlYseD49MTg/KHgtPTE4''@;'; put 'put ''LHRoaXMud29yZHNbUCs9MV18PVY+Pj4yNik6eCs9ODtlbHNlIGZvcihuZT0oTy5sZW5ndGgteiklMj09MD96KzE6ejtuZTxPLmxlbmd0aDtuZSs9MilWPXJlKE8seixuZSk8PHgsdGhpcy53b3Jkc1tQXXw9NjcxMDg4NjMmVix4Pj0xOD8oeC09MTgsdGhpcy53b3Jkc1tQKz0xXXw9Vj4+PjI2''@;'; put 'put ''KTp4Kz04O3RoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbihPLHosZWUpe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBuZT0wLHg9MTt4PD02NzEwODg2Mzt4Kj16KW5lKys7bmUtLSx4PXgvenwwO2Zvcih2YXIgUD1PLmxlbmd0aC1lZSxW''@;'; put 'put ''PVAlbmUsVD1NYXRoLm1pbihQLFAtVikrZWUsUz0wLEY9ZWU7RjxUO0YrPW5lKVM9YWUoTyxGLEYrbmUseiksdGhpcy5pbXVsbih4KSx0aGlzLndvcmRzWzBdK1M8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Uzp0aGlzLl9pYWRkbihTKTtpZigwIT09Vil7dmFyIHllPTE7Zm9yKFM9YWUoTyxG''@;'; put 'put ''LE8ubGVuZ3RoLHopLEY9MDtGPFY7RisrKXllKj16O3RoaXMuaW11bG4oeWUpLHRoaXMud29yZHNbMF0rUzw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1TOnRoaXMuX2lhZGRuKFMpfXRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuY29weT1mdW5jdGlvbihPKXtPLndvcmRzPW5ldyBBcnJheSh0''@;'; put 'put ''aGlzLmxlbmd0aCk7Zm9yKHZhciB6PTA7ejx0aGlzLmxlbmd0aDt6KyspTy53b3Jkc1t6XT10aGlzLndvcmRzW3pdO08ubGVuZ3RoPXRoaXMubGVuZ3RoLE8ubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSxPLnJlZD10aGlzLnJlZH0sVS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgTz1u''@;'; put 'put ''ZXcgVShudWxsKTtyZXR1cm4gdGhpcy5jb3B5KE8pLE99LFUucHJvdG90eXBlLl9leHBhbmQ9ZnVuY3Rpb24oTyl7Zm9yKDt0aGlzLmxlbmd0aDxPOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9LFUucHJvdG90eXBlLnN0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlz''@;'; put 'put ''Lmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sVS5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5l''@;'; put 'put ''Z2F0aXZlPTApLHRoaXN9LFUucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In07dmFyIFk9WyIiLCIwIiwiMDAiLCIwMDAiLCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwi''@;'; put 'put ''MDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAwIl0sVz1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxOPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcs''@;'; put 'put ''MTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcs''@;'; put 'put ''MTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9uIEsoaGUsTyx6KXt6Lm5lZ2F0aXZlPU8ubmVnYXRpdmVeaGUubmVnYXRpdmU7dmFyIGVlPWhlLmxlbmd0aCtPLmxlbmd0aHwwO3oubGVu''@;'; put 'put ''Z3RoPWVlLGVlPWVlLTF8MDt2YXIgbmU9MHxoZS53b3Jkc1swXSx4PTB8Ty53b3Jkc1swXSxQPW5lKngsVD1QLzY3MTA4ODY0fDA7ei53b3Jkc1swXT02NzEwODg2MyZQO2Zvcih2YXIgUz0xO1M8ZWU7UysrKXtmb3IodmFyIEY9VD4+PjI2LHllPTY3MTA4ODYzJlQsQ2U9TWF0aC5taW4oUyxP''@;'; put 'put ''Lmxlbmd0aC0xKSxEZT1NYXRoLm1heCgwLFMtaGUubGVuZ3RoKzEpO0RlPD1DZTtEZSsrKUYrPShQPShuZT0wfGhlLndvcmRzW1MtRGV8MF0pKih4PTB8Ty53b3Jkc1tEZV0pK3llKS82NzEwODg2NHwwLHllPTY3MTA4ODYzJlA7ei53b3Jkc1tTXT0wfHllLFQ9MHxGfXJldHVybiAwIT09VD96''@;'; put 'put ''LndvcmRzW1NdPTB8VDp6Lmxlbmd0aC0tLHouc3RyaXAoKX1VLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihPLHope3ZhciBlZTtpZih6PTB8enx8MSwxNj09PShPPU98fDEwKXx8ImhleCI9PT1PKXtlZT0iIjtmb3IodmFyIG5lPTAseD0wLFA9MDtQPHRoaXMubGVuZ3RoO1ArKyl7dmFy''@;'; put 'put ''IFY9dGhpcy53b3Jkc1tQXSxUPSgxNjc3NzIxNSYoVjw8bmV8eCkpLnRvU3RyaW5nKDE2KTtlZT0wIT0oeD1WPj4+MjQtbmUmMTY3NzcyMTUpfHxQIT09dGhpcy5sZW5ndGgtMT9ZWzYtVC5sZW5ndGhdK1QrZWU6VCtlZSwobmUrPTIpPj0yNiYmKG5lLT0yNixQLS0pfWZvcigwIT09eCYmKGVl''@;'; put 'put ''PXgudG9TdHJpbmcoMTYpK2VlKTtlZS5sZW5ndGgleiE9MDspZWU9IjAiK2VlO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKGVlPSItIitlZSksZWV9aWYoTz09PSgwfE8pJiZPPj0yJiZPPD0zNil7dmFyIFM9V1tPXSxGPU5bT107ZWU9IiI7dmFyIHllPXRoaXMuY2xvbmUoKTtmb3IoeWUu''@;'; put 'put ''bmVnYXRpdmU9MDsheWUuaXNaZXJvKCk7KXt2YXIgQ2U9eWUubW9kbihGKS50b1N0cmluZyhPKTtlZT0oeWU9eWUuaWRpdm4oRikpLmlzWmVybygpP0NlK2VlOllbUy1DZS5sZW5ndGhdK0NlK2VlfWZvcih0aGlzLmlzWmVybygpJiYoZWU9IjAiK2VlKTtlZS5sZW5ndGgleiE9MDspZWU9IjAi''@;'; put 'put ''K2VlO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKGVlPSItIitlZSksZWV9RSghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxVLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBPPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9PKz02''@;'; put 'put ''NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Tys9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJkUoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIp''@;'; put 'put ''LDAhPT10aGlzLm5lZ2F0aXZlPy1POk99LFUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sVS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gRSh2b2lkIDAhPT1RKSx0aGlzLnRvQXJyYXlMaWtlKFEsTyx6KX0sVS5w''@;'; put 'put ''cm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihPLHope3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LE8seil9LFUucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKE8seixlZSl7dmFyIG5lPXRoaXMuYnl0ZUxlbmd0aCgpLHg9ZWV8fE1hdGgubWF4KDEsbmUpO0UobmU8PXgsImJ5''@;'; put 'put ''dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKSxFKHg+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIiksdGhpcy5zdHJpcCgpO3ZhciBULFMsUD0ibGUiPT09eixWPW5ldyBPKHgpLEY9dGhpcy5jbG9uZSgpO2lmKFApe2ZvcihTPTA7IUYuaXNaZXJvKCk7UysrKVQ9''@;'; put 'put ''Ri5hbmRsbigyNTUpLEYuaXVzaHJuKDgpLFZbU109VDtmb3IoO1M8eDtTKyspVltTXT0wfWVsc2V7Zm9yKFM9MDtTPHgtbmU7UysrKVZbU109MDtmb3IoUz0wOyFGLmlzWmVybygpO1MrKylUPUYuYW5kbG4oMjU1KSxGLml1c2hybig4KSxWW3gtUy0xXT1UfXJldHVybiBWfSxVLnByb3RvdHlw''@;'; put 'put ''ZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oTyl7cmV0dXJuIDMyLU1hdGguY2x6MzIoTyl9OmZ1bmN0aW9uKE8pe3ZhciB6PU8sZWU9MDtyZXR1cm4gej49NDA5NiYmKGVlKz0xMyx6Pj4+PTEzKSx6Pj02NCYmKGVlKz03LHo+Pj49Nyksej49OCYmKGVlKz00LHo+Pj49NCksej49''@;'; put 'put ''MiYmKGVlKz0yLHo+Pj49MiksZWUren0sVS5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKE8pe2lmKDA9PT1PKXJldHVybiAyNjt2YXIgej1PLGVlPTA7cmV0dXJuIDA9PSg4MTkxJnopJiYoZWUrPTEzLHo+Pj49MTMpLDA9PSgxMjcmeikmJihlZSs9Nyx6Pj4+PTcpLDA9PSgxNSZ6KSYm''@;'; put 'put ''KGVlKz00LHo+Pj49NCksMD09KDMmeikmJihlZSs9Mix6Pj4+PTIpLDA9PSgxJnopJiZlZSsrLGVlfSxVLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgej10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0x''@;'; put 'put ''KSt6fSxVLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciBPPTAsej0wO3o8dGhpcy5sZW5ndGg7eisrKXt2YXIgZWU9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1t6XSk7aWYoTys9ZWUsMjYhPT1lZSlicmVha31yZXR1cm4g''@;'; put 'put ''T30sVS5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sVS5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKE8pe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKE8pLmlhZGRuKDEpOnRoaXMu''@;'; put 'put ''Y2xvbmUoKX0sVS5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMudGVzdG4oTy0xKT90aGlzLm5vdG4oTykuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sVS5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LFUu''@;'; put 'put ''cHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxVLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxVLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKE8pe2Zvcig7dGhp''@;'; put 'put ''cy5sZW5ndGg8Ty5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIHo9MDt6PE8ubGVuZ3RoO3orKyl0aGlzLndvcmRzW3pdPXRoaXMud29yZHNbel18Ty53b3Jkc1t6XTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oTyl7cmV0''@;'; put 'put ''dXJuIEUoMD09KHRoaXMubmVnYXRpdmV8Ty5uZWdhdGl2ZSkpLHRoaXMuaXVvcihPKX0sVS5wcm90b3R5cGUub3I9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoTyk6Ty5jbG9uZSgpLmlvcih0aGlzKX0sVS5wcm90b3R5cGUudW9yPWZ1''@;'; put 'put ''bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcihPKTpPLmNsb25lKCkuaXVvcih0aGlzKX0sVS5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oTyl7dmFyIHo7ej10aGlzLmxlbmd0aD5PLmxlbmd0aD9POnRoaXM7Zm9yKHZhciBlZT0wO2VlPHou''@;'; put 'put ''bGVuZ3RoO2VlKyspdGhpcy53b3Jkc1tlZV09dGhpcy53b3Jkc1tlZV0mTy53b3Jkc1tlZV07cmV0dXJuIHRoaXMubGVuZ3RoPXoubGVuZ3RoLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbihPKXtyZXR1cm4gRSgwPT0odGhpcy5uZWdhdGl2ZXxPLm5lZ2F0aXZlKSks''@;'; put 'put ''dGhpcy5pdWFuZChPKX0sVS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZChPKTpPLmNsb25lKCkuaWFuZCh0aGlzKX0sVS5wcm90b3R5cGUudWFuZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5s''@;'; put 'put ''ZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKE8pOk8uY2xvbmUoKS5pdWFuZCh0aGlzKX0sVS5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24oTyl7dmFyIHosZWU7dGhpcy5sZW5ndGg+Ty5sZW5ndGg/KHo9dGhpcyxlZT1PKTooej1PLGVlPXRoaXMpO2Zvcih2YXIgbmU9MDtuZTxlZS5sZW5ndGg7''@;'; put 'put ''bmUrKyl0aGlzLndvcmRzW25lXT16LndvcmRzW25lXV5lZS53b3Jkc1tuZV07aWYodGhpcyE9PXopZm9yKDtuZTx6Lmxlbmd0aDtuZSsrKXRoaXMud29yZHNbbmVdPXoud29yZHNbbmVdO3JldHVybiB0aGlzLmxlbmd0aD16Lmxlbmd0aCx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLml4b3I9''@;'; put 'put ''ZnVuY3Rpb24oTyl7cmV0dXJuIEUoMD09KHRoaXMubmVnYXRpdmV8Ty5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoTyl9LFUucHJvdG90eXBlLnhvcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoTyk6Ty5jbG9uZSgpLml4b3IodGhpcyl9''@;'; put 'put ''LFUucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcihPKTpPLmNsb25lKCkuaXV4b3IodGhpcyl9LFUucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIg''@;'; put 'put ''ej0wfE1hdGguY2VpbChPLzI2KSxlZT1PJTI2O3RoaXMuX2V4cGFuZCh6KSxlZT4wJiZ6LS07Zm9yKHZhciBuZT0wO25lPHo7bmUrKyl0aGlzLndvcmRzW25lXT02NzEwODg2MyZ+dGhpcy53b3Jkc1tuZV07cmV0dXJuIGVlPjAmJih0aGlzLndvcmRzW25lXT1+dGhpcy53b3Jkc1tuZV0mNjcx''@;'; put 'put ''MDg4NjM+PjI2LWVlKSx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bihPKX0sVS5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbihPLHope0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgZWU9Ty8yNnwwLG5lPU8l''@;'; put 'put ''MjY7cmV0dXJuIHRoaXMuX2V4cGFuZChlZSsxKSx0aGlzLndvcmRzW2VlXT16P3RoaXMud29yZHNbZWVdfDE8PG5lOnRoaXMud29yZHNbZWVdJn4oMTw8bmUpLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihPKXt2YXIgeixlZSxuZTtpZigwIT09dGhpcy5uZWdhdGl2''@;'; put 'put ''ZSYmMD09PU8ubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx6PXRoaXMuaXN1YihPKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1PLm5lZ2F0aXZlKXJldHVybiBPLm5lZ2F0aXZlPTAsej10aGlzLmlzdWIoTyksTy5u''@;'; put 'put ''ZWdhdGl2ZT0xLHouX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+Ty5sZW5ndGg/KGVlPXRoaXMsbmU9Tyk6KGVlPU8sbmU9dGhpcyk7Zm9yKHZhciB4PTAsUD0wO1A8bmUubGVuZ3RoO1ArKyl0aGlzLndvcmRzW1BdPTY3MTA4ODYzJih6PSgwfGVlLndvcmRzW1BdKSsoMHxuZS53b3Jkc1tQXSkr''@;'; put 'put ''eCkseD16Pj4+MjY7Zm9yKDswIT09eCYmUDxlZS5sZW5ndGg7UCsrKXRoaXMud29yZHNbUF09NjcxMDg4NjMmKHo9KDB8ZWUud29yZHNbUF0pK3gpLHg9ej4+PjI2O2lmKHRoaXMubGVuZ3RoPWVlLmxlbmd0aCwwIT09eCl0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT14LHRoaXMubGVuZ3RoKys7''@;'; put 'put ''ZWxzZSBpZihlZSE9PXRoaXMpZm9yKDtQPGVlLmxlbmd0aDtQKyspdGhpcy53b3Jkc1tQXT1lZS53b3Jkc1tQXTtyZXR1cm4gdGhpc30sVS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKE8pe3ZhciB6O3JldHVybiAwIT09Ty5uZWdhdGl2ZSYmMD09PXRoaXMubmVnYXRpdmU/KE8ubmVnYXRpdmU9''@;'; put 'put ''MCx6PXRoaXMuc3ViKE8pLE8ubmVnYXRpdmVePTEseik6MD09PU8ubmVnYXRpdmUmJjAhPT10aGlzLm5lZ2F0aXZlPyh0aGlzLm5lZ2F0aXZlPTAsej1PLnN1Yih0aGlzKSx0aGlzLm5lZ2F0aXZlPTEseik6dGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhZGQoTyk6Ty5jbG9u''@;'; put 'put ''ZSgpLmlhZGQodGhpcyl9LFUucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oTyl7aWYoMCE9PU8ubmVnYXRpdmUpe08ubmVnYXRpdmU9MDt2YXIgej10aGlzLmlhZGQoTyk7cmV0dXJuIE8ubmVnYXRpdmU9MSx6Ll9ub3JtU2lnbigpfWlmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5l''@;'; put 'put ''Z2F0aXZlPTAsdGhpcy5pYWRkKE8pLHRoaXMubmVnYXRpdmU9MSx0aGlzLl9ub3JtU2lnbigpO3ZhciBuZSx4LGVlPXRoaXMuY21wKE8pO2lmKDA9PT1lZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3RoPTEsdGhpcy53b3Jkc1swXT0wLHRoaXM7ZWU+MD8obmU9dGhpcyx4PU8p''@;'; put 'put ''OihuZT1PLHg9dGhpcyk7Zm9yKHZhciBQPTAsVj0wO1Y8eC5sZW5ndGg7VisrKVA9KHo9KDB8bmUud29yZHNbVl0pLSgwfHgud29yZHNbVl0pK1ApPj4yNix0aGlzLndvcmRzW1ZdPTY3MTA4ODYzJno7Zm9yKDswIT09UCYmVjxuZS5sZW5ndGg7VisrKVA9KHo9KDB8bmUud29yZHNbVl0pK1Ap''@;'; put 'put ''Pj4yNix0aGlzLndvcmRzW1ZdPTY3MTA4ODYzJno7aWYoMD09PVAmJlY8bmUubGVuZ3RoJiZuZSE9PXRoaXMpZm9yKDtWPG5lLmxlbmd0aDtWKyspdGhpcy53b3Jkc1tWXT1uZS53b3Jkc1tWXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsViksbmUhPT10aGlzJiYo''@;'; put 'put ''dGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoTyl9O3ZhciBKPWZ1bmN0aW9uKE8seixlZSl7dmFyIFQsUyxGLG5lPU8ud29yZHMseD16LndvcmRzLFA9ZWUud29yZHMsVj0wLHllPTB8bmVb''@;'; put 'put ''MF0sQ2U9ODE5MSZ5ZSxEZT15ZT4+PjEzLFBlPTB8bmVbMV0sUWU9ODE5MSZQZSwkZT1QZT4+PjEzLGd0PTB8bmVbMl0sd3Q9ODE5MSZndCxtdD1ndD4+PjEzLHZ0PTB8bmVbM10sQXQ9ODE5MSZ2dCxodD12dD4+PjEzLEJ0PTB8bmVbNF0sb249ODE5MSZCdCxfdD1CdD4+PjEzLHR0PTB8bmVb''@;'; put 'put ''NV0sZXQ9ODE5MSZ0dCxsdD10dD4+PjEzLEx0PTB8bmVbNl0sQ3Q9ODE5MSZMdCxmdD1MdD4+PjEzLEh0PTB8bmVbN10sR2U9ODE5MSZIdCxVZT1IdD4+PjEzLHl0PTB8bmVbOF0sanQ9ODE5MSZ5dCxKdD15dD4+PjEzLGduPTB8bmVbOV0sZG49ODE5MSZnbix5bj1nbj4+PjEzLGxuPTB8eFsw''@;'; put 'put ''XSxObj04MTkxJmxuLGJuPWxuPj4+MTMsZXI9MHx4WzFdLHNyPTgxOTEmZXIsWG49ZXI+Pj4xMyxGcj0wfHhbMl0seHI9ODE5MSZGcixxdD1Gcj4+PjEzLHByPTB8eFszXSxucj04MTkxJnByLEFuPXByPj4+MTMscW49MHx4WzRdLFd0PTgxOTEmcW4scG49cW4+Pj4xMyxLbj0wfHhbNV0sTnQ9''@;'; put 'put ''ODE5MSZLbixzbj1Lbj4+PjEzLFVuPTB8eFs2XSx3bj04MTkxJlVuLHRuPVVuPj4+MTMsem49MHx4WzddLFRyPTgxOTEmem4sQm49em4+Pj4xMyxrcj0wfHhbOF0sbW49ODE5MSZrcix1bj1rcj4+PjEzLGNuPTB8eFs5XSxfbj04MTkxJmNuLEd0PWNuPj4+MTM7ZWUubmVnYXRpdmU9Ty5uZWdh''@;'; put 'put ''dGl2ZV56Lm5lZ2F0aXZlLGVlLmxlbmd0aD0xOTt2YXIga249KFYrKFQ9TWF0aC5pbXVsKENlLE5uKSl8MCkrKCg4MTkxJihTPShTPU1hdGguaW11bChDZSxibikpK01hdGguaW11bChEZSxObil8MCkpPDwxMyl8MDtWPSgoRj1NYXRoLmltdWwoRGUsYm4pKSsoUz4+PjEzKXwwKSsoa24+Pj4y''@;'; put 'put ''Nil8MCxrbiY9NjcxMDg4NjMsVD1NYXRoLmltdWwoUWUsTm4pLFM9KFM9TWF0aC5pbXVsKFFlLGJuKSkrTWF0aC5pbXVsKCRlLE5uKXwwLEY9TWF0aC5pbXVsKCRlLGJuKTt2YXIgVm49KFYrKFQ9VCtNYXRoLmltdWwoQ2Usc3IpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxY''@;'; put 'put ''bil8MCkrTWF0aC5pbXVsKERlLHNyKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLFhuKXwwKSsoUz4+PjEzKXwwKSsoVm4+Pj4yNil8MCxWbiY9NjcxMDg4NjMsVD1NYXRoLmltdWwod3QsTm4pLFM9KFM9TWF0aC5pbXVsKHd0LGJuKSkrTWF0aC5pbXVsKG10LE5uKXwwLEY9TWF0''@;'; put 'put ''aC5pbXVsKG10LGJuKSxUPVQrTWF0aC5pbXVsKFFlLHNyKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsWG4pfDApK01hdGguaW11bCgkZSxzcil8MCxGPUYrTWF0aC5pbXVsKCRlLFhuKXwwO3ZhciBlbj0oVisoVD1UK01hdGguaW11bChDZSx4cil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5p''@;'; put 'put ''bXVsKENlLHF0KXwwKStNYXRoLmltdWwoRGUseHIpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUscXQpfDApKyhTPj4+MTMpfDApKyhlbj4+PjI2KXwwLGVuJj02NzEwODg2MyxUPU1hdGguaW11bChBdCxObiksUz0oUz1NYXRoLmltdWwoQXQsYm4pKStNYXRoLmltdWwoaHQsTm4p''@;'; put 'put ''fDAsRj1NYXRoLmltdWwoaHQsYm4pLFQ9VCtNYXRoLmltdWwod3Qsc3IpfDAsUz0oUz1TK01hdGguaW11bCh3dCxYbil8MCkrTWF0aC5pbXVsKG10LHNyKXwwLEY9RitNYXRoLmltdWwobXQsWG4pfDAsVD1UK01hdGguaW11bChRZSx4cil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLHF0KXwwKStN''@;'; put 'put ''YXRoLmltdWwoJGUseHIpfDAsRj1GK01hdGguaW11bCgkZSxxdCl8MDt2YXIgSW49KFYrKFQ9VCtNYXRoLmltdWwoQ2UsbnIpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxBbil8MCkrTWF0aC5pbXVsKERlLG5yKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLEFu''@;'; put 'put ''KXwwKSsoUz4+PjEzKXwwKSsoSW4+Pj4yNil8MCxJbiY9NjcxMDg4NjMsVD1NYXRoLmltdWwob24sTm4pLFM9KFM9TWF0aC5pbXVsKG9uLGJuKSkrTWF0aC5pbXVsKF90LE5uKXwwLEY9TWF0aC5pbXVsKF90LGJuKSxUPVQrTWF0aC5pbXVsKEF0LHNyKXwwLFM9KFM9UytNYXRoLmltdWwoQXQs''@;'; put 'put ''WG4pfDApK01hdGguaW11bChodCxzcil8MCxGPUYrTWF0aC5pbXVsKGh0LFhuKXwwLFQ9VCtNYXRoLmltdWwod3QseHIpfDAsUz0oUz1TK01hdGguaW11bCh3dCxxdCl8MCkrTWF0aC5pbXVsKG10LHhyKXwwLEY9RitNYXRoLmltdWwobXQscXQpfDAsVD1UK01hdGguaW11bChRZSxucil8MCxT''@;'; put 'put ''PShTPVMrTWF0aC5pbXVsKFFlLEFuKXwwKStNYXRoLmltdWwoJGUsbnIpfDAsRj1GK01hdGguaW11bCgkZSxBbil8MDt2YXIgSm49KFYrKFQ9VCtNYXRoLmltdWwoQ2UsV3QpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxwbil8MCkrTWF0aC5pbXVsKERlLFd0KXwwKSk8PDEz''@;'; put 'put ''KXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLHBuKXwwKSsoUz4+PjEzKXwwKSsoSm4+Pj4yNil8MCxKbiY9NjcxMDg4NjMsVD1NYXRoLmltdWwoZXQsTm4pLFM9KFM9TWF0aC5pbXVsKGV0LGJuKSkrTWF0aC5pbXVsKGx0LE5uKXwwLEY9TWF0aC5pbXVsKGx0LGJuKSxUPVQrTWF0aC5pbXVsKG9u''@;'; put 'put ''LHNyKXwwLFM9KFM9UytNYXRoLmltdWwob24sWG4pfDApK01hdGguaW11bChfdCxzcil8MCxGPUYrTWF0aC5pbXVsKF90LFhuKXwwLFQ9VCtNYXRoLmltdWwoQXQseHIpfDAsUz0oUz1TK01hdGguaW11bChBdCxxdCl8MCkrTWF0aC5pbXVsKGh0LHhyKXwwLEY9RitNYXRoLmltdWwoaHQscXQp''@;'; put 'put ''fDAsVD1UK01hdGguaW11bCh3dCxucil8MCxTPShTPVMrTWF0aC5pbXVsKHd0LEFuKXwwKStNYXRoLmltdWwobXQsbnIpfDAsRj1GK01hdGguaW11bChtdCxBbil8MCxUPVQrTWF0aC5pbXVsKFFlLFd0KXwwLFM9KFM9UytNYXRoLmltdWwoUWUscG4pfDApK01hdGguaW11bCgkZSxXdCl8MCxG''@;'; put 'put ''PUYrTWF0aC5pbXVsKCRlLHBuKXwwO3ZhciBvcj0oVisoVD1UK01hdGguaW11bChDZSxOdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLHNuKXwwKStNYXRoLmltdWwoRGUsTnQpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsc24pfDApKyhTPj4+MTMpfDApKyhv''@;'; put 'put ''cj4+PjI2KXwwLG9yJj02NzEwODg2MyxUPU1hdGguaW11bChDdCxObiksUz0oUz1NYXRoLmltdWwoQ3QsYm4pKStNYXRoLmltdWwoZnQsTm4pfDAsRj1NYXRoLmltdWwoZnQsYm4pLFQ9VCtNYXRoLmltdWwoZXQsc3IpfDAsUz0oUz1TK01hdGguaW11bChldCxYbil8MCkrTWF0aC5pbXVsKGx0''@;'; put 'put ''LHNyKXwwLEY9RitNYXRoLmltdWwobHQsWG4pfDAsVD1UK01hdGguaW11bChvbix4cil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLHF0KXwwKStNYXRoLmltdWwoX3QseHIpfDAsRj1GK01hdGguaW11bChfdCxxdCl8MCxUPVQrTWF0aC5pbXVsKEF0LG5yKXwwLFM9KFM9UytNYXRoLmltdWwoQXQs''@;'; put 'put ''QW4pfDApK01hdGguaW11bChodCxucil8MCxGPUYrTWF0aC5pbXVsKGh0LEFuKXwwLFQ9VCtNYXRoLmltdWwod3QsV3QpfDAsUz0oUz1TK01hdGguaW11bCh3dCxwbil8MCkrTWF0aC5pbXVsKG10LFd0KXwwLEY9RitNYXRoLmltdWwobXQscG4pfDAsVD1UK01hdGguaW11bChRZSxOdCl8MCxT''@;'; put 'put ''PShTPVMrTWF0aC5pbXVsKFFlLHNuKXwwKStNYXRoLmltdWwoJGUsTnQpfDAsRj1GK01hdGguaW11bCgkZSxzbil8MDt2YXIgZ3I9KFYrKFQ9VCtNYXRoLmltdWwoQ2Usd24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSx0bil8MCkrTWF0aC5pbXVsKERlLHduKXwwKSk8PDEz''@;'; put 'put ''KXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLHRuKXwwKSsoUz4+PjEzKXwwKSsoZ3I+Pj4yNil8MCxnciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoR2UsTm4pLFM9KFM9TWF0aC5pbXVsKEdlLGJuKSkrTWF0aC5pbXVsKFVlLE5uKXwwLEY9TWF0aC5pbXVsKFVlLGJuKSxUPVQrTWF0aC5pbXVsKEN0''@;'; put 'put ''LHNyKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsWG4pfDApK01hdGguaW11bChmdCxzcil8MCxGPUYrTWF0aC5pbXVsKGZ0LFhuKXwwLFQ9VCtNYXRoLmltdWwoZXQseHIpfDAsUz0oUz1TK01hdGguaW11bChldCxxdCl8MCkrTWF0aC5pbXVsKGx0LHhyKXwwLEY9RitNYXRoLmltdWwobHQscXQp''@;'; put 'put ''fDAsVD1UK01hdGguaW11bChvbixucil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLEFuKXwwKStNYXRoLmltdWwoX3QsbnIpfDAsRj1GK01hdGguaW11bChfdCxBbil8MCxUPVQrTWF0aC5pbXVsKEF0LFd0KXwwLFM9KFM9UytNYXRoLmltdWwoQXQscG4pfDApK01hdGguaW11bChodCxXdCl8MCxG''@;'; put 'put ''PUYrTWF0aC5pbXVsKGh0LHBuKXwwLFQ9VCtNYXRoLmltdWwod3QsTnQpfDAsUz0oUz1TK01hdGguaW11bCh3dCxzbil8MCkrTWF0aC5pbXVsKG10LE50KXwwLEY9RitNYXRoLmltdWwobXQsc24pfDAsVD1UK01hdGguaW11bChRZSx3bil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLHRuKXwwKStN''@;'; put 'put ''YXRoLmltdWwoJGUsd24pfDAsRj1GK01hdGguaW11bCgkZSx0bil8MDt2YXIgS3I9KFYrKFQ9VCtNYXRoLmltdWwoQ2UsVHIpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxCbil8MCkrTWF0aC5pbXVsKERlLFRyKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLEJu''@;'; put 'put ''KXwwKSsoUz4+PjEzKXwwKSsoS3I+Pj4yNil8MCxLciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoanQsTm4pLFM9KFM9TWF0aC5pbXVsKGp0LGJuKSkrTWF0aC5pbXVsKEp0LE5uKXwwLEY9TWF0aC5pbXVsKEp0LGJuKSxUPVQrTWF0aC5pbXVsKEdlLHNyKXwwLFM9KFM9UytNYXRoLmltdWwoR2Us''@;'; put 'put ''WG4pfDApK01hdGguaW11bChVZSxzcil8MCxGPUYrTWF0aC5pbXVsKFVlLFhuKXwwLFQ9VCtNYXRoLmltdWwoQ3QseHIpfDAsUz0oUz1TK01hdGguaW11bChDdCxxdCl8MCkrTWF0aC5pbXVsKGZ0LHhyKXwwLEY9RitNYXRoLmltdWwoZnQscXQpfDAsVD1UK01hdGguaW11bChldCxucil8MCxT''@;'; put 'put ''PShTPVMrTWF0aC5pbXVsKGV0LEFuKXwwKStNYXRoLmltdWwobHQsbnIpfDAsRj1GK01hdGguaW11bChsdCxBbil8MCxUPVQrTWF0aC5pbXVsKG9uLFd0KXwwLFM9KFM9UytNYXRoLmltdWwob24scG4pfDApK01hdGguaW11bChfdCxXdCl8MCxGPUYrTWF0aC5pbXVsKF90LHBuKXwwLFQ9VCtN''@;'; put 'put ''YXRoLmltdWwoQXQsTnQpfDAsUz0oUz1TK01hdGguaW11bChBdCxzbil8MCkrTWF0aC5pbXVsKGh0LE50KXwwLEY9RitNYXRoLmltdWwoaHQsc24pfDAsVD1UK01hdGguaW11bCh3dCx3bil8MCxTPShTPVMrTWF0aC5pbXVsKHd0LHRuKXwwKStNYXRoLmltdWwobXQsd24pfDAsRj1GK01hdGgu''@;'; put 'put ''aW11bChtdCx0bil8MCxUPVQrTWF0aC5pbXVsKFFlLFRyKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsQm4pfDApK01hdGguaW11bCgkZSxUcil8MCxGPUYrTWF0aC5pbXVsKCRlLEJuKXwwO3ZhciBWcj0oVisoVD1UK01hdGguaW11bChDZSxtbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5p''@;'; put 'put ''bXVsKENlLHVuKXwwKStNYXRoLmltdWwoRGUsbW4pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsdW4pfDApKyhTPj4+MTMpfDApKyhWcj4+PjI2KXwwLFZyJj02NzEwODg2MyxUPU1hdGguaW11bChkbixObiksUz0oUz1NYXRoLmltdWwoZG4sYm4pKStNYXRoLmltdWwoeW4sTm4p''@;'; put 'put ''fDAsRj1NYXRoLmltdWwoeW4sYm4pLFQ9VCtNYXRoLmltdWwoanQsc3IpfDAsUz0oUz1TK01hdGguaW11bChqdCxYbil8MCkrTWF0aC5pbXVsKEp0LHNyKXwwLEY9RitNYXRoLmltdWwoSnQsWG4pfDAsVD1UK01hdGguaW11bChHZSx4cil8MCxTPShTPVMrTWF0aC5pbXVsKEdlLHF0KXwwKStN''@;'; put 'put ''YXRoLmltdWwoVWUseHIpfDAsRj1GK01hdGguaW11bChVZSxxdCl8MCxUPVQrTWF0aC5pbXVsKEN0LG5yKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsQW4pfDApK01hdGguaW11bChmdCxucil8MCxGPUYrTWF0aC5pbXVsKGZ0LEFuKXwwLFQ9VCtNYXRoLmltdWwoZXQsV3QpfDAsUz0oUz1TK01h''@;'; put 'put ''dGguaW11bChldCxwbil8MCkrTWF0aC5pbXVsKGx0LFd0KXwwLEY9RitNYXRoLmltdWwobHQscG4pfDAsVD1UK01hdGguaW11bChvbixOdCl8MCxTPShTPVMrTWF0aC5pbXVsKG9uLHNuKXwwKStNYXRoLmltdWwoX3QsTnQpfDAsRj1GK01hdGguaW11bChfdCxzbil8MCxUPVQrTWF0aC5pbXVs''@;'; put 'put ''KEF0LHduKXwwLFM9KFM9UytNYXRoLmltdWwoQXQsdG4pfDApK01hdGguaW11bChodCx3bil8MCxGPUYrTWF0aC5pbXVsKGh0LHRuKXwwLFQ9VCtNYXRoLmltdWwod3QsVHIpfDAsUz0oUz1TK01hdGguaW11bCh3dCxCbil8MCkrTWF0aC5pbXVsKG10LFRyKXwwLEY9RitNYXRoLmltdWwobXQs''@;'; put 'put ''Qm4pfDAsVD1UK01hdGguaW11bChRZSxtbil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLHVuKXwwKStNYXRoLmltdWwoJGUsbW4pfDAsRj1GK01hdGguaW11bCgkZSx1bil8MDt2YXIgaWk9KFYrKFQ9VCtNYXRoLmltdWwoQ2UsX24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxH''@;'; put 'put ''dCl8MCkrTWF0aC5pbXVsKERlLF9uKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLEd0KXwwKSsoUz4+PjEzKXwwKSsoaWk+Pj4yNil8MCxpaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoZG4sc3IpLFM9KFM9TWF0aC5pbXVsKGRuLFhuKSkrTWF0aC5pbXVsKHluLHNyKXwwLEY9TWF0''@;'; put 'put ''aC5pbXVsKHluLFhuKSxUPVQrTWF0aC5pbXVsKGp0LHhyKXwwLFM9KFM9UytNYXRoLmltdWwoanQscXQpfDApK01hdGguaW11bChKdCx4cil8MCxGPUYrTWF0aC5pbXVsKEp0LHF0KXwwLFQ9VCtNYXRoLmltdWwoR2UsbnIpfDAsUz0oUz1TK01hdGguaW11bChHZSxBbil8MCkrTWF0aC5pbXVs''@;'; put 'put ''KFVlLG5yKXwwLEY9RitNYXRoLmltdWwoVWUsQW4pfDAsVD1UK01hdGguaW11bChDdCxXdCl8MCxTPShTPVMrTWF0aC5pbXVsKEN0LHBuKXwwKStNYXRoLmltdWwoZnQsV3QpfDAsRj1GK01hdGguaW11bChmdCxwbil8MCxUPVQrTWF0aC5pbXVsKGV0LE50KXwwLFM9KFM9UytNYXRoLmltdWwo''@;'; put 'put ''ZXQsc24pfDApK01hdGguaW11bChsdCxOdCl8MCxGPUYrTWF0aC5pbXVsKGx0LHNuKXwwLFQ9VCtNYXRoLmltdWwob24sd24pfDAsUz0oUz1TK01hdGguaW11bChvbix0bil8MCkrTWF0aC5pbXVsKF90LHduKXwwLEY9RitNYXRoLmltdWwoX3QsdG4pfDAsVD1UK01hdGguaW11bChBdCxUcil8''@;'; put 'put ''MCxTPShTPVMrTWF0aC5pbXVsKEF0LEJuKXwwKStNYXRoLmltdWwoaHQsVHIpfDAsRj1GK01hdGguaW11bChodCxCbil8MCxUPVQrTWF0aC5pbXVsKHd0LG1uKXwwLFM9KFM9UytNYXRoLmltdWwod3QsdW4pfDApK01hdGguaW11bChtdCxtbil8MCxGPUYrTWF0aC5pbXVsKG10LHVuKXwwO3Zh''@;'; put 'put ''ciBScj0oVisoVD1UK01hdGguaW11bChRZSxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKFFlLEd0KXwwKStNYXRoLmltdWwoJGUsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoJGUsR3QpfDApKyhTPj4+MTMpfDApKyhScj4+PjI2KXwwLFJyJj02NzEwODg2MyxU''@;'; put 'put ''PU1hdGguaW11bChkbix4ciksUz0oUz1NYXRoLmltdWwoZG4scXQpKStNYXRoLmltdWwoeW4seHIpfDAsRj1NYXRoLmltdWwoeW4scXQpLFQ9VCtNYXRoLmltdWwoanQsbnIpfDAsUz0oUz1TK01hdGguaW11bChqdCxBbil8MCkrTWF0aC5pbXVsKEp0LG5yKXwwLEY9RitNYXRoLmltdWwoSnQs''@;'; put 'put ''QW4pfDAsVD1UK01hdGguaW11bChHZSxXdCl8MCxTPShTPVMrTWF0aC5pbXVsKEdlLHBuKXwwKStNYXRoLmltdWwoVWUsV3QpfDAsRj1GK01hdGguaW11bChVZSxwbil8MCxUPVQrTWF0aC5pbXVsKEN0LE50KXwwLFM9KFM9UytNYXRoLmltdWwoQ3Qsc24pfDApK01hdGguaW11bChmdCxOdCl8''@;'; put 'put ''MCxGPUYrTWF0aC5pbXVsKGZ0LHNuKXwwLFQ9VCtNYXRoLmltdWwoZXQsd24pfDAsUz0oUz1TK01hdGguaW11bChldCx0bil8MCkrTWF0aC5pbXVsKGx0LHduKXwwLEY9RitNYXRoLmltdWwobHQsdG4pfDAsVD1UK01hdGguaW11bChvbixUcil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLEJuKXww''@;'; put 'put ''KStNYXRoLmltdWwoX3QsVHIpfDAsRj1GK01hdGguaW11bChfdCxCbil8MCxUPVQrTWF0aC5pbXVsKEF0LG1uKXwwLFM9KFM9UytNYXRoLmltdWwoQXQsdW4pfDApK01hdGguaW11bChodCxtbil8MCxGPUYrTWF0aC5pbXVsKGh0LHVuKXwwO3ZhciBsaT0oVisoVD1UK01hdGguaW11bCh3dCxf''@;'; put 'put ''bil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKHd0LEd0KXwwKStNYXRoLmltdWwobXQsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwobXQsR3QpfDApKyhTPj4+MTMpfDApKyhsaT4+PjI2KXwwLGxpJj02NzEwODg2MyxUPU1hdGguaW11bChkbixuciksUz0oUz1NYXRo''@;'; put 'put ''LmltdWwoZG4sQW4pKStNYXRoLmltdWwoeW4sbnIpfDAsRj1NYXRoLmltdWwoeW4sQW4pLFQ9VCtNYXRoLmltdWwoanQsV3QpfDAsUz0oUz1TK01hdGguaW11bChqdCxwbil8MCkrTWF0aC5pbXVsKEp0LFd0KXwwLEY9RitNYXRoLmltdWwoSnQscG4pfDAsVD1UK01hdGguaW11bChHZSxOdCl8''@;'; put 'put ''MCxTPShTPVMrTWF0aC5pbXVsKEdlLHNuKXwwKStNYXRoLmltdWwoVWUsTnQpfDAsRj1GK01hdGguaW11bChVZSxzbil8MCxUPVQrTWF0aC5pbXVsKEN0LHduKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsdG4pfDApK01hdGguaW11bChmdCx3bil8MCxGPUYrTWF0aC5pbXVsKGZ0LHRuKXwwLFQ9''@;'; put 'put ''VCtNYXRoLmltdWwoZXQsVHIpfDAsUz0oUz1TK01hdGguaW11bChldCxCbil8MCkrTWF0aC5pbXVsKGx0LFRyKXwwLEY9RitNYXRoLmltdWwobHQsQm4pfDAsVD1UK01hdGguaW11bChvbixtbil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLHVuKXwwKStNYXRoLmltdWwoX3QsbW4pfDAsRj1GK01h''@;'; put 'put ''dGguaW11bChfdCx1bil8MDt2YXIgTWk9KFYrKFQ9VCtNYXRoLmltdWwoQXQsX24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChBdCxHdCl8MCkrTWF0aC5pbXVsKGh0LF9uKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKGh0LEd0KXwwKSsoUz4+PjEzKXwwKSsoTWk+Pj4y''@;'; put 'put ''Nil8MCxNaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoZG4sV3QpLFM9KFM9TWF0aC5pbXVsKGRuLHBuKSkrTWF0aC5pbXVsKHluLFd0KXwwLEY9TWF0aC5pbXVsKHluLHBuKSxUPVQrTWF0aC5pbXVsKGp0LE50KXwwLFM9KFM9UytNYXRoLmltdWwoanQsc24pfDApK01hdGguaW11bChKdCxOdCl8''@;'; put 'put ''MCxGPUYrTWF0aC5pbXVsKEp0LHNuKXwwLFQ9VCtNYXRoLmltdWwoR2Usd24pfDAsUz0oUz1TK01hdGguaW11bChHZSx0bil8MCkrTWF0aC5pbXVsKFVlLHduKXwwLEY9RitNYXRoLmltdWwoVWUsdG4pfDAsVD1UK01hdGguaW11bChDdCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LEJuKXww''@;'; put 'put ''KStNYXRoLmltdWwoZnQsVHIpfDAsRj1GK01hdGguaW11bChmdCxCbil8MCxUPVQrTWF0aC5pbXVsKGV0LG1uKXwwLFM9KFM9UytNYXRoLmltdWwoZXQsdW4pfDApK01hdGguaW11bChsdCxtbil8MCxGPUYrTWF0aC5pbXVsKGx0LHVuKXwwO3ZhciBvMD0oVisoVD1UK01hdGguaW11bChvbixf''@;'; put 'put ''bil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKG9uLEd0KXwwKStNYXRoLmltdWwoX3QsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoX3QsR3QpfDApKyhTPj4+MTMpfDApKyhvMD4+PjI2KXwwLG8wJj02NzEwODg2MyxUPU1hdGguaW11bChkbixOdCksUz0oUz1NYXRo''@;'; put 'put ''LmltdWwoZG4sc24pKStNYXRoLmltdWwoeW4sTnQpfDAsRj1NYXRoLmltdWwoeW4sc24pLFQ9VCtNYXRoLmltdWwoanQsd24pfDAsUz0oUz1TK01hdGguaW11bChqdCx0bil8MCkrTWF0aC5pbXVsKEp0LHduKXwwLEY9RitNYXRoLmltdWwoSnQsdG4pfDAsVD1UK01hdGguaW11bChHZSxUcil8''@;'; put 'put ''MCxTPShTPVMrTWF0aC5pbXVsKEdlLEJuKXwwKStNYXRoLmltdWwoVWUsVHIpfDAsRj1GK01hdGguaW11bChVZSxCbil8MCxUPVQrTWF0aC5pbXVsKEN0LG1uKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsdW4pfDApK01hdGguaW11bChmdCxtbil8MCxGPUYrTWF0aC5pbXVsKGZ0LHVuKXwwO3Zh''@;'; put 'put ''ciBuMD0oVisoVD1UK01hdGguaW11bChldCxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKGV0LEd0KXwwKStNYXRoLmltdWwobHQsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwobHQsR3QpfDApKyhTPj4+MTMpfDApKyhuMD4+PjI2KXwwLG4wJj02NzEwODg2MyxU''@;'; put 'put ''PU1hdGguaW11bChkbix3biksUz0oUz1NYXRoLmltdWwoZG4sdG4pKStNYXRoLmltdWwoeW4sd24pfDAsRj1NYXRoLmltdWwoeW4sdG4pLFQ9VCtNYXRoLmltdWwoanQsVHIpfDAsUz0oUz1TK01hdGguaW11bChqdCxCbil8MCkrTWF0aC5pbXVsKEp0LFRyKXwwLEY9RitNYXRoLmltdWwoSnQs''@;'; put 'put ''Qm4pfDAsVD1UK01hdGguaW11bChHZSxtbil8MCxTPShTPVMrTWF0aC5pbXVsKEdlLHVuKXwwKStNYXRoLmltdWwoVWUsbW4pfDAsRj1GK01hdGguaW11bChVZSx1bil8MDt2YXIgZDA9KFYrKFQ9VCtNYXRoLmltdWwoQ3QsX24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDdCxH''@;'; put 'put ''dCl8MCkrTWF0aC5pbXVsKGZ0LF9uKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKGZ0LEd0KXwwKSsoUz4+PjEzKXwwKSsoZDA+Pj4yNil8MCxkMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoZG4sVHIpLFM9KFM9TWF0aC5pbXVsKGRuLEJuKSkrTWF0aC5pbXVsKHluLFRyKXwwLEY9TWF0''@;'; put 'put ''aC5pbXVsKHluLEJuKSxUPVQrTWF0aC5pbXVsKGp0LG1uKXwwLFM9KFM9UytNYXRoLmltdWwoanQsdW4pfDApK01hdGguaW11bChKdCxtbil8MCxGPUYrTWF0aC5pbXVsKEp0LHVuKXwwO3ZhciBtMD0oVisoVD1UK01hdGguaW11bChHZSxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5p''@;'; put 'put ''bXVsKEdlLEd0KXwwKStNYXRoLmltdWwoVWUsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoVWUsR3QpfDApKyhTPj4+MTMpfDApKyhtMD4+PjI2KXwwLG0wJj02NzEwODg2MyxUPU1hdGguaW11bChkbixtbiksUz0oUz1NYXRoLmltdWwoZG4sdW4pKStNYXRoLmltdWwoeW4sbW4p''@;'; put 'put ''fDAsRj1NYXRoLmltdWwoeW4sdW4pO3ZhciBHMD0oVisoVD1UK01hdGguaW11bChqdCxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKGp0LEd0KXwwKStNYXRoLmltdWwoSnQsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoSnQsR3QpfDApKyhTPj4+MTMpfDApKyhH''@;'; put 'put ''MD4+PjI2KXwwLEcwJj02NzEwODg2Mzt2YXIgRGk9KFYrKFQ9TWF0aC5pbXVsKGRuLF9uKSl8MCkrKCg4MTkxJihTPShTPU1hdGguaW11bChkbixHdCkpK01hdGguaW11bCh5bixfbil8MCkpPDwxMyl8MDtyZXR1cm4gVj0oKEY9TWF0aC5pbXVsKHluLEd0KSkrKFM+Pj4xMyl8MCkrKERpPj4+''@;'; put 'put ''MjYpfDAsRGkmPTY3MTA4ODYzLFBbMF09a24sUFsxXT1WbixQWzJdPWVuLFBbM109SW4sUFs0XT1KbixQWzVdPW9yLFBbNl09Z3IsUFs3XT1LcixQWzhdPVZyLFBbOV09aWksUFsxMF09UnIsUFsxMV09bGksUFsxMl09TWksUFsxM109bzAsUFsxNF09bjAsUFsxNV09ZDAsUFsxNl09bTAsUFsx''@;'; put 'put ''N109RzAsUFsxOF09RGksMCE9PVYmJihQWzE5XT1WLGVlLmxlbmd0aCsrKSxlZX07ZnVuY3Rpb24gb2UoaGUsTyx6KXtyZXR1cm4obmV3IGNlKS5tdWxwKGhlLE8seil9ZnVuY3Rpb24gY2UoaGUsTyl7dGhpcy54PWhlLHRoaXMueT1PfU1hdGguaW11bHx8KEo9SyksVS5wcm90b3R5cGUubXVs''@;'; put 'put ''VG89ZnVuY3Rpb24oTyx6KXt2YXIgZWUsbmU9dGhpcy5sZW5ndGgrTy5sZW5ndGg7cmV0dXJuIGVlPTEwPT09dGhpcy5sZW5ndGgmJjEwPT09Ty5sZW5ndGg/Sih0aGlzLE8seik6bmU8NjM/Syh0aGlzLE8seik6bmU8MTAyND9mdW5jdGlvbiBzZShoZSxPLHope3oubmVnYXRpdmU9Ty5uZWdh''@;'; put 'put ''dGl2ZV5oZS5uZWdhdGl2ZSx6Lmxlbmd0aD1oZS5sZW5ndGgrTy5sZW5ndGg7Zm9yKHZhciBlZT0wLG5lPTAseD0wO3g8ei5sZW5ndGgtMTt4Kyspe3ZhciBQPW5lO25lPTA7Zm9yKHZhciBWPTY3MTA4ODYzJmVlLFQ9TWF0aC5taW4oeCxPLmxlbmd0aC0xKSxTPU1hdGgubWF4KDAseC1oZS5s''@;'; put 'put ''ZW5ndGgrMSk7Uzw9VDtTKyspe3ZhciBEZT0oMHxoZS53b3Jkc1t4LVNdKSooMHxPLndvcmRzW1NdKSxQZT02NzEwODg2MyZEZTtWPTY3MTA4ODYzJihQZT1QZStWfDApLG5lKz0oUD0oUD1QKyhEZS82NzEwODg2NHwwKXwwKSsoUGU+Pj4yNil8MCk+Pj4yNixQJj02NzEwODg2M316LndvcmRz''@;'; put 'put ''W3hdPVYsZWU9UCxQPW5lfXJldHVybiAwIT09ZWU/ei53b3Jkc1t4XT1lZTp6Lmxlbmd0aC0tLHouc3RyaXAoKX0odGhpcyxPLHopOm9lKHRoaXMsTyx6KSxlZX0sY2UucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oTyl7Zm9yKHZhciB6PW5ldyBBcnJheShPKSxlZT1VLnByb3RvdHlwZS5f''@;'; put 'put ''Y291bnRCaXRzKE8pLTEsbmU9MDtuZTxPO25lKyspeltuZV09dGhpcy5yZXZCaW4obmUsZWUsTyk7cmV0dXJuIHp9LGNlLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oTyx6LGVlKXtpZigwPT09T3x8Tz09PWVlLTEpcmV0dXJuIE87Zm9yKHZhciBuZT0wLHg9MDt4PHo7eCsrKW5lfD0oMSZP''@;'; put 'put ''KTw8ei14LTEsTz4+PTE7cmV0dXJuIG5lfSxjZS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihPLHosZWUsbmUseCxQKXtmb3IodmFyIFY9MDtWPFA7VisrKW5lW1ZdPXpbT1tWXV0seFtWXT1lZVtPW1ZdXX0sY2UucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihPLHosZWUsbmUseCxQ''@;'; put 'put ''KXt0aGlzLnBlcm11dGUoUCxPLHosZWUsbmUseCk7Zm9yKHZhciBWPTE7Vjx4O1Y8PD0xKWZvcih2YXIgVD1WPDwxLFM9TWF0aC5jb3MoMipNYXRoLlBJL1QpLEY9TWF0aC5zaW4oMipNYXRoLlBJL1QpLHllPTA7eWU8eDt5ZSs9VClmb3IodmFyIENlPVMsRGU9RixQZT0wO1BlPFY7UGUrKyl7''@;'; put 'put ''dmFyIFFlPWVlW3llK1BlXSwkZT1uZVt5ZStQZV0sZ3Q9ZWVbeWUrUGUrVl0sd3Q9bmVbeWUrUGUrVl0sbXQ9Q2UqZ3QtRGUqd3Q7d3Q9Q2Uqd3QrRGUqZ3QsZWVbeWUrUGVdPVFlKyhndD1tdCksbmVbeWUrUGVdPSRlK3d0LGVlW3llK1BlK1ZdPVFlLWd0LG5lW3llK1BlK1ZdPSRlLXd0LFBl''@;'; put 'put ''IT09VCYmKG10PVMqQ2UtRipEZSxEZT1TKkRlK0YqQ2UsQ2U9bXQpfX0sY2UucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKE8seil7dmFyIGVlPTF8TWF0aC5tYXgoeixPKSxuZT0xJmVlLHg9MDtmb3IoZWU9ZWUvMnwwO2VlO2VlPj4+PTEpeCsrO3JldHVybiAxPDx4KzErbmV9LGNl''@;'; put 'put ''LnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oTyx6LGVlKXtpZighKGVlPD0xKSlmb3IodmFyIG5lPTA7bmU8ZWUvMjtuZSsrKXt2YXIgeD1PW25lXTtPW25lXT1PW2VlLW5lLTFdLE9bZWUtbmUtMV09eCx4PXpbbmVdLHpbbmVdPS16W2VlLW5lLTFdLHpbZWUtbmUtMV09LXh9fSxjZS5w''@;'; put 'put ''cm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKE8seil7Zm9yKHZhciBlZT0wLG5lPTA7bmU8ei8yO25lKyspe3ZhciB4PTgxOTIqTWF0aC5yb3VuZChPWzIqbmUrMV0veikrTWF0aC5yb3VuZChPWzIqbmVdL3opK2VlO09bbmVdPTY3MTA4ODYzJngsZWU9eDw2NzEwODg2ND8wOngvNjcx''@;'; put 'put ''MDg4NjR8MH1yZXR1cm4gT30sY2UucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oTyx6LGVlLG5lKXtmb3IodmFyIHg9MCxQPTA7UDx6O1ArKyllZVsyKlBdPTgxOTEmKHgrPTB8T1tQXSksZWVbMipQKzFdPTgxOTEmKHg+Pj49MTMpLHg+Pj49MTM7Zm9yKFA9Mip6O1A8bmU7KytQKWVl''@;'; put 'put ''W1BdPTA7RSgwPT09eCksRSgwPT0oLTgxOTImeCkpfSxjZS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbihPKXtmb3IodmFyIHo9bmV3IEFycmF5KE8pLGVlPTA7ZWU8TztlZSsrKXpbZWVdPTA7cmV0dXJuIHp9LGNlLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uKE8seixlZSl7dmFyIG5lPTIqdGhp''@;'; put 'put ''cy5ndWVzc0xlbjEzYihPLmxlbmd0aCx6Lmxlbmd0aCkseD10aGlzLm1ha2VSQlQobmUpLFA9dGhpcy5zdHViKG5lKSxWPW5ldyBBcnJheShuZSksVD1uZXcgQXJyYXkobmUpLFM9bmV3IEFycmF5KG5lKSxGPW5ldyBBcnJheShuZSkseWU9bmV3IEFycmF5KG5lKSxDZT1uZXcgQXJyYXkobmUp''@;'; put 'put ''LERlPWVlLndvcmRzO0RlLmxlbmd0aD1uZSx0aGlzLmNvbnZlcnQxM2IoTy53b3JkcyxPLmxlbmd0aCxWLG5lKSx0aGlzLmNvbnZlcnQxM2Ioei53b3Jkcyx6Lmxlbmd0aCxGLG5lKSx0aGlzLnRyYW5zZm9ybShWLFAsVCxTLG5lLHgpLHRoaXMudHJhbnNmb3JtKEYsUCx5ZSxDZSxuZSx4KTtm''@;'; put 'put ''b3IodmFyIFBlPTA7UGU8bmU7UGUrKyl7dmFyIFFlPVRbUGVdKnllW1BlXS1TW1BlXSpDZVtQZV07U1tQZV09VFtQZV0qQ2VbUGVdK1NbUGVdKnllW1BlXSxUW1BlXT1RZX1yZXR1cm4gdGhpcy5jb25qdWdhdGUoVCxTLG5lKSx0aGlzLnRyYW5zZm9ybShULFMsRGUsUCxuZSx4KSx0aGlzLmNv''@;'; put 'put ''bmp1Z2F0ZShEZSxQLG5lKSx0aGlzLm5vcm1hbGl6ZTEzYihEZSxuZSksZWUubmVnYXRpdmU9Ty5uZWdhdGl2ZV56Lm5lZ2F0aXZlLGVlLmxlbmd0aD1PLmxlbmd0aCt6Lmxlbmd0aCxlZS5zdHJpcCgpfSxVLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oTyl7dmFyIHo9bmV3IFUobnVsbCk7cmV0''@;'; put 'put ''dXJuIHoud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK08ubGVuZ3RoKSx0aGlzLm11bFRvKE8seil9LFUucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24oTyl7dmFyIHo9bmV3IFUobnVsbCk7cmV0dXJuIHoud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK08ubGVuZ3RoKSxvZSh0aGlzLE8s''@;'; put 'put ''eil9LFUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhPLHRoaXMpfSxVLnByb3RvdHlwZS5pbXVsbj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyksRShPPDY3MTA4ODY0KTtmb3IodmFyIHo9MCxlZT0wO2VlPHRoaXMubGVuZ3Ro''@;'; put 'put ''O2VlKyspe3ZhciBuZT0oMHx0aGlzLndvcmRzW2VlXSkqTyx4PSg2NzEwODg2MyZuZSkrKDY3MTA4ODYzJnopO3o+Pj0yNix6Kz1uZS82NzEwODg2NHwwLHorPXg+Pj4yNix0aGlzLndvcmRzW2VlXT02NzEwODg2MyZ4fXJldHVybiAwIT09eiYmKHRoaXMud29yZHNbZWVdPXosdGhpcy5sZW5n''@;'; put 'put ''dGgrKyksdGhpc30sVS5wcm90b3R5cGUubXVsbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKE8pfSxVLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LFUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVs''@;'; put 'put ''KHRoaXMuY2xvbmUoKSl9LFUucHJvdG90eXBlLnBvdz1mdW5jdGlvbihPKXt2YXIgej1mdW5jdGlvbiB0ZShoZSl7Zm9yKHZhciBPPW5ldyBBcnJheShoZS5iaXRMZW5ndGgoKSksej0wO3o8Ty5sZW5ndGg7eisrKXt2YXIgbmU9eiUyNjtPW3pdPShoZS53b3Jkc1t6LzI2fDBdJjE8PG5lKT4+''@;'; put 'put ''Pm5lfXJldHVybiBPfShPKTtpZigwPT09ei5sZW5ndGgpcmV0dXJuIG5ldyBVKDEpO2Zvcih2YXIgZWU9dGhpcyxuZT0wO25lPHoubGVuZ3RoJiYwPT09eltuZV07bmUrKyxlZT1lZS5zcXIoKSk7aWYoKytuZTx6Lmxlbmd0aClmb3IodmFyIHg9ZWUuc3FyKCk7bmU8ei5sZW5ndGg7bmUrKyx4''@;'; put 'put ''PXguc3FyKCkpMCE9PXpbbmVdJiYoZWU9ZWUubXVsKHgpKTtyZXR1cm4gZWV9LFUucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCk7dmFyIHgsej1PJTI2LGVlPShPLXopLzI2LG5lPTY3MTA4ODYzPj4+MjYtejw8MjYtejtpZigwIT09eil7''@;'; put 'put ''dmFyIFA9MDtmb3IoeD0wO3g8dGhpcy5sZW5ndGg7eCsrKXt2YXIgVj10aGlzLndvcmRzW3hdJm5lO3RoaXMud29yZHNbeF09KDB8dGhpcy53b3Jkc1t4XSktVjw8enxQLFA9Vj4+PjI2LXp9UCYmKHRoaXMud29yZHNbeF09UCx0aGlzLmxlbmd0aCsrKX1pZigwIT09ZWUpe2Zvcih4PXRoaXMu''@;'; put 'put ''bGVuZ3RoLTE7eD49MDt4LS0pdGhpcy53b3Jkc1t4K2VlXT10aGlzLndvcmRzW3hdO2Zvcih4PTA7eDxlZTt4KyspdGhpcy53b3Jkc1t4XT0wO3RoaXMubGVuZ3RoKz1lZX1yZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbihPKXtyZXR1cm4gRSgwPT09dGhp''@;'; put 'put ''cy5uZWdhdGl2ZSksdGhpcy5pdXNobG4oTyl9LFUucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbihPLHosZWUpe3ZhciBuZTtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCksbmU9ej8oei16JTI2KS8yNjowO3ZhciB4PU8lMjYsUD1NYXRoLm1pbigoTy14KS8yNix0aGlzLmxlbmd0aCksVj02''@;'; put 'put ''NzEwODg2M142NzEwODg2Mz4+Png8PHgsVD1lZTtpZihuZS09UCxuZT1NYXRoLm1heCgwLG5lKSxUKXtmb3IodmFyIFM9MDtTPFA7UysrKVQud29yZHNbU109dGhpcy53b3Jkc1tTXTtULmxlbmd0aD1QfWlmKDAhPT1QKWlmKHRoaXMubGVuZ3RoPlApZm9yKHRoaXMubGVuZ3RoLT1QLFM9MDtT''@;'; put 'put ''PHRoaXMubGVuZ3RoO1MrKyl0aGlzLndvcmRzW1NdPXRoaXMud29yZHNbUytQXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBGPTA7Zm9yKFM9dGhpcy5sZW5ndGgtMTtTPj0wJiYoMCE9PUZ8fFM+PW5lKTtTLS0pe3ZhciB5ZT0wfHRoaXMud29yZHNbU107dGhpcy53''@;'; put 'put ''b3Jkc1tTXT1GPDwyNi14fHllPj4+eCxGPXllJlZ9cmV0dXJuIFQmJjAhPT1GJiYoVC53b3Jkc1tULmxlbmd0aCsrXT1GKSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbihPLHos''@;'; put 'put ''ZWUpe3JldHVybiBFKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihPLHosZWUpfSxVLnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oTyl9LFUucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXVz''@;'; put 'put ''aGxuKE8pfSxVLnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oTyl9LFUucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKE8pfSxVLnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbihPKXtFKCJudW1i''@;'; put 'put ''ZXIiPT10eXBlb2YgTyYmTz49MCk7dmFyIHo9TyUyNixlZT0oTy16KS8yNjtyZXR1cm4hKHRoaXMubGVuZ3RoPD1lZXx8ISh0aGlzLndvcmRzW2VlXSYxPDx6KSl9LFUucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCk7dmFyIHo9TyUyNixl''@;'; put 'put ''ZT0oTy16KS8yNjtyZXR1cm4gRSgwPT09dGhpcy5uZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzIiksdGhpcy5sZW5ndGg8PWVlP3RoaXM6KDAhPT16JiZlZSsrLHRoaXMubGVuZ3RoPU1hdGgubWluKGVlLHRoaXMubGVuZ3RoKSwwIT09eiYmKHRoaXMu''@;'; put 'put ''d29yZHNbdGhpcy5sZW5ndGgtMV0mPTY3MTA4ODYzXjY3MTA4ODYzPj4+ejw8eiksdGhpcy5zdHJpcCgpKX0sVS5wcm90b3R5cGUubWFza249ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oTyl9LFUucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKE8pe3JldHVybiBFKCJu''@;'; put 'put ''dW1iZXIiPT10eXBlb2YgTyksRShPPDY3MTA4ODY0KSxPPDA/dGhpcy5pc3VibigtTyk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTxPPyh0aGlzLndvcmRzWzBdPU8tKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0''@;'; put 'put ''aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3VibihPKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oTyl9LFUucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbihPKXt0aGlzLndvcmRzWzBdKz1PO2Zvcih2YXIgej0wO3o8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbel0+PTY3MTA4ODY0''@;'; put 'put ''O3orKyl0aGlzLndvcmRzW3pdLT02NzEwODg2NCx6PT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW3orMV09MTp0aGlzLndvcmRzW3orMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgseisxKSx0aGlzfSxVLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbihPKXtp''@;'; put 'put ''ZihFKCJudW1iZXIiPT10eXBlb2YgTyksRShPPDY3MTA4ODY0KSxPPDApcmV0dXJuIHRoaXMuaWFkZG4oLU8pO2lmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbihPKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT1PLDE9''@;'; put 'put ''PT10aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vsc2UgZm9yKHZhciB6PTA7ejx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1t6XTwwO3orKyl0aGlzLndvcmRzW3pdKz02NzEwODg2NCx0aGlzLndvcmRzW3or''@;'; put 'put ''MV0tPTE7cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKE8pfSxVLnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4oTyl9LFUucHJvdG90eXBlLmlhYnM9ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXN9LFUucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfSxVLnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24oTyx6LGVlKXt2YXIgeDt0aGlzLl9leHBhbmQoTy5sZW5ndGgrZWUp''@;'; put 'put ''O3ZhciBQLFY9MDtmb3IoeD0wO3g8Ty5sZW5ndGg7eCsrKXtQPSgwfHRoaXMud29yZHNbeCtlZV0pK1Y7dmFyIFQ9KDB8Ty53b3Jkc1t4XSkqejtWPSgoUC09NjcxMDg4NjMmVCk+PjI2KS0oVC82NzEwODg2NHwwKSx0aGlzLndvcmRzW3grZWVdPTY3MTA4ODYzJlB9Zm9yKDt4PHRoaXMubGVu''@;'; put 'put ''Z3RoLWVlO3grKylWPShQPSgwfHRoaXMud29yZHNbeCtlZV0pK1YpPj4yNix0aGlzLndvcmRzW3grZWVdPTY3MTA4ODYzJlA7aWYoMD09PVYpcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IoRSgtMT09PVYpLFY9MCx4PTA7eDx0aGlzLmxlbmd0aDt4KyspVj0oUD0tKDB8dGhpcy53b3Jkc1t4XSkr''@;'; put 'put ''Vik+PjI2LHRoaXMud29yZHNbeF09NjcxMDg4NjMmUDtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oTyx6KXt2YXIgZWUsbmU9dGhpcy5jbG9uZSgpLHg9TyxQPTB8eC53b3Jkc1t4Lmxlbmd0aC0xXTswIT0oZWU9MjYt''@;'; put 'put ''dGhpcy5fY291bnRCaXRzKFApKSYmKHg9eC51c2hsbihlZSksbmUuaXVzaGxuKGVlKSxQPTB8eC53b3Jkc1t4Lmxlbmd0aC0xXSk7dmFyIFMsVD1uZS5sZW5ndGgteC5sZW5ndGg7aWYoIm1vZCIhPT16KXsoUz1uZXcgVShudWxsKSkubGVuZ3RoPVQrMSxTLndvcmRzPW5ldyBBcnJheShTLmxl''@;'; put 'put ''bmd0aCk7Zm9yKHZhciBGPTA7RjxTLmxlbmd0aDtGKyspUy53b3Jkc1tGXT0wfXZhciB5ZT1uZS5jbG9uZSgpLl9pc2hsbnN1Ym11bCh4LDEsVCk7MD09PXllLm5lZ2F0aXZlJiYobmU9eWUsUyYmKFMud29yZHNbVF09MSkpO2Zvcih2YXIgQ2U9VC0xO0NlPj0wO0NlLS0pe3ZhciBEZT02NzEw''@;'; put 'put ''ODg2NCooMHxuZS53b3Jkc1t4Lmxlbmd0aCtDZV0pKygwfG5lLndvcmRzW3gubGVuZ3RoK0NlLTFdKTtmb3IoRGU9TWF0aC5taW4oRGUvUHwwLDY3MTA4ODYzKSxuZS5faXNobG5zdWJtdWwoeCxEZSxDZSk7MCE9PW5lLm5lZ2F0aXZlOylEZS0tLG5lLm5lZ2F0aXZlPTAsbmUuX2lzaGxuc3Vi''@;'; put 'put ''bXVsKHgsMSxDZSksbmUuaXNaZXJvKCl8fChuZS5uZWdhdGl2ZV49MSk7UyYmKFMud29yZHNbQ2VdPURlKX1yZXR1cm4gUyYmUy5zdHJpcCgpLG5lLnN0cmlwKCksImRpdiIhPT16JiYwIT09ZWUmJm5lLml1c2hybihlZSkse2RpdjpTfHxudWxsLG1vZDpuZX19LFUucHJvdG90eXBlLmRpdm1v''@;'; put 'put ''ZD1mdW5jdGlvbihPLHosZWUpe3JldHVybiBFKCFPLmlzWmVybygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IFUoMCksbW9kOm5ldyBVKDApfTowIT09dGhpcy5uZWdhdGl2ZSYmMD09PU8ubmVnYXRpdmU/KFA9dGhpcy5uZWcoKS5kaXZtb2QoTyx6KSwibW9kIiE9PXomJihuZT1QLmRpdi5u''@;'; put 'put ''ZWcoKSksImRpdiIhPT16JiYoeD1QLm1vZC5uZWcoKSxlZSYmMCE9PXgubmVnYXRpdmUmJnguaWFkZChPKSkse2RpdjpuZSxtb2Q6eH0pOjA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Ty5uZWdhdGl2ZT8oUD10aGlzLmRpdm1vZChPLm5lZygpLHopLCJtb2QiIT09eiYmKG5lPVAuZGl2Lm5lZygp''@;'; put 'put ''KSx7ZGl2Om5lLG1vZDpQLm1vZH0pOjAhPSh0aGlzLm5lZ2F0aXZlJk8ubmVnYXRpdmUpPyhQPXRoaXMubmVnKCkuZGl2bW9kKE8ubmVnKCkseiksImRpdiIhPT16JiYoeD1QLm1vZC5uZWcoKSxlZSYmMCE9PXgubmVnYXRpdmUmJnguaXN1YihPKSkse2RpdjpQLmRpdixtb2Q6eH0pOk8ubGVu''@;'; put 'put ''Z3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcChPKTwwP3tkaXY6bmV3IFUoMCksbW9kOnRoaXN9OjE9PT1PLmxlbmd0aD8iZGl2Ij09PXo/e2Rpdjp0aGlzLmRpdm4oTy53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09ej97ZGl2Om51bGwsbW9kOm5ldyBVKHRoaXMubW9kbihPLndvcmRzWzBd''@;'; put 'put ''KSl9OntkaXY6dGhpcy5kaXZuKE8ud29yZHNbMF0pLG1vZDpuZXcgVSh0aGlzLm1vZG4oTy53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KE8seik7dmFyIG5lLHgsUH0sVS5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmRpdm1vZChPLCJkaXYiLCExKS5kaXZ9LFUucHJv''@;'; put 'put ''dG90eXBlLm1vZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5kaXZtb2QoTywibW9kIiwhMSkubW9kfSxVLnByb3RvdHlwZS51bW9kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmRpdm1vZChPLCJtb2QiLCEwKS5tb2R9LFUucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKE8pe3ZhciB6PXRo''@;'; put 'put ''aXMuZGl2bW9kKE8pO2lmKHoubW9kLmlzWmVybygpKXJldHVybiB6LmRpdjt2YXIgZWU9MCE9PXouZGl2Lm5lZ2F0aXZlP3oubW9kLmlzdWIoTyk6ei5tb2QsbmU9Ty51c2hybigxKSx4PU8uYW5kbG4oMSksUD1lZS5jbXAobmUpO3JldHVybiBQPDB8fDE9PT14JiYwPT09UD96LmRpdjowIT09''@;'; put 'put ''ei5kaXYubmVnYXRpdmU/ei5kaXYuaXN1Ym4oMSk6ei5kaXYuaWFkZG4oMSl9LFUucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oTyl7RShPPD02NzEwODg2Myk7Zm9yKHZhciB6PSgxPDwyNiklTyxlZT0wLG5lPXRoaXMubGVuZ3RoLTE7bmU+PTA7bmUtLSllZT0oeiplZSsoMHx0aGlzLndvcmRz''@;'; put 'put ''W25lXSkpJU87cmV0dXJuIGVlfSxVLnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbihPKXtFKE88PTY3MTA4ODYzKTtmb3IodmFyIHo9MCxlZT10aGlzLmxlbmd0aC0xO2VlPj0wO2VlLS0pe3ZhciBuZT0oMHx0aGlzLndvcmRzW2VlXSkrNjcxMDg4NjQqejt0aGlzLndvcmRzW2VlXT1uZS9PfDAs''@;'; put 'put ''ej1uZSVPfXJldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihPKX0sVS5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihPKXtFKDA9PT1PLm5lZ2F0aXZlKSxFKCFPLmlzWmVybygpKTt2YXIgej10aGlzLGVlPU8u''@;'; put 'put ''Y2xvbmUoKTt6PTAhPT16Lm5lZ2F0aXZlP3oudW1vZChPKTp6LmNsb25lKCk7Zm9yKHZhciBuZT1uZXcgVSgxKSx4PW5ldyBVKDApLFA9bmV3IFUoMCksVj1uZXcgVSgxKSxUPTA7ei5pc0V2ZW4oKSYmZWUuaXNFdmVuKCk7KXouaXVzaHJuKDEpLGVlLml1c2hybigxKSwrK1Q7Zm9yKHZhciBT''@;'; put 'put ''PWVlLmNsb25lKCksRj16LmNsb25lKCk7IXouaXNaZXJvKCk7KXtmb3IodmFyIHllPTAsQ2U9MTswPT0oei53b3Jkc1swXSZDZSkmJnllPDI2OysreWUsQ2U8PD0xKTtpZih5ZT4wKWZvcih6Lml1c2hybih5ZSk7eWUtLSA+MDspKG5lLmlzT2RkKCl8fHguaXNPZGQoKSkmJihuZS5pYWRkKFMp''@;'; put 'put ''LHguaXN1YihGKSksbmUuaXVzaHJuKDEpLHguaXVzaHJuKDEpO2Zvcih2YXIgRGU9MCxQZT0xOzA9PShlZS53b3Jkc1swXSZQZSkmJkRlPDI2OysrRGUsUGU8PD0xKTtpZihEZT4wKWZvcihlZS5pdXNocm4oRGUpO0RlLS0gPjA7KShQLmlzT2RkKCl8fFYuaXNPZGQoKSkmJihQLmlhZGQoUyks''@;'; put 'put ''Vi5pc3ViKEYpKSxQLml1c2hybigxKSxWLml1c2hybigxKTt6LmNtcChlZSk+PTA/KHouaXN1YihlZSksbmUuaXN1YihQKSx4LmlzdWIoVikpOihlZS5pc3ViKHopLFAuaXN1YihuZSksVi5pc3ViKHgpKX1yZXR1cm57YTpQLGI6VixnY2Q6ZWUuaXVzaGxuKFQpfX0sVS5wcm90b3R5cGUuX2lu''@;'; put 'put ''dm1wPWZ1bmN0aW9uKE8pe0UoMD09PU8ubmVnYXRpdmUpLEUoIU8uaXNaZXJvKCkpO3ZhciB5ZSx6PXRoaXMsZWU9Ty5jbG9uZSgpO3o9MCE9PXoubmVnYXRpdmU/ei51bW9kKE8pOnouY2xvbmUoKTtmb3IodmFyIG5lPW5ldyBVKDEpLHg9bmV3IFUoMCksUD1lZS5jbG9uZSgpO3ouY21wbigx''@;'; put 'put ''KT4wJiZlZS5jbXBuKDEpPjA7KXtmb3IodmFyIFY9MCxUPTE7MD09KHoud29yZHNbMF0mVCkmJlY8MjY7KytWLFQ8PD0xKTtpZihWPjApZm9yKHouaXVzaHJuKFYpO1YtLSA+MDspbmUuaXNPZGQoKSYmbmUuaWFkZChQKSxuZS5pdXNocm4oMSk7Zm9yKHZhciBTPTAsRj0xOzA9PShlZS53b3Jk''@;'; put 'put ''c1swXSZGKSYmUzwyNjsrK1MsRjw8PTEpO2lmKFM+MClmb3IoZWUuaXVzaHJuKFMpO1MtLSA+MDspeC5pc09kZCgpJiZ4LmlhZGQoUCkseC5pdXNocm4oMSk7ei5jbXAoZWUpPj0wPyh6LmlzdWIoZWUpLG5lLmlzdWIoeCkpOihlZS5pc3ViKHopLHguaXN1YihuZSkpfXJldHVybih5ZT0wPT09''@;'; put 'put ''ei5jbXBuKDEpP25lOngpLmNtcG4oMCk8MCYmeWUuaWFkZChPKSx5ZX0sVS5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKE8pe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIE8uYWJzKCk7aWYoTy5pc1plcm8oKSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgej10aGlzLmNsb25lKCksZWU9Ty5jbG9uZSgp''@;'; put 'put ''O3oubmVnYXRpdmU9MCxlZS5uZWdhdGl2ZT0wO2Zvcih2YXIgbmU9MDt6LmlzRXZlbigpJiZlZS5pc0V2ZW4oKTtuZSsrKXouaXVzaHJuKDEpLGVlLml1c2hybigxKTtmb3IoOzspe2Zvcig7ei5pc0V2ZW4oKTspei5pdXNocm4oMSk7Zm9yKDtlZS5pc0V2ZW4oKTspZWUuaXVzaHJuKDEpO3Zh''@;'; put 'put ''ciB4PXouY21wKGVlKTtpZih4PDApe3ZhciBQPXo7ej1lZSxlZT1QfWVsc2UgaWYoMD09PXh8fDA9PT1lZS5jbXBuKDEpKWJyZWFrO3ouaXN1YihlZSl9cmV0dXJuIGVlLml1c2hsbihuZSl9LFUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZWdjZChPKS5hLnVtb2Qo''@;'; put 'put ''Tyl9LFUucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiAwPT0oMSZ0aGlzLndvcmRzWzBdKX0sVS5wcm90b3R5cGUuaXNPZGQ9ZnVuY3Rpb24oKXtyZXR1cm4gMT09KDEmdGhpcy53b3Jkc1swXSl9LFUucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLndv''@;'; put 'put ''cmRzWzBdJk99LFUucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPKTt2YXIgej1PJTI2LGVlPShPLXopLzI2LG5lPTE8PHo7aWYodGhpcy5sZW5ndGg8PWVlKXJldHVybiB0aGlzLl9leHBhbmQoZWUrMSksdGhpcy53b3Jkc1tlZV18PW5lLHRoaXM7Zm9y''@;'; put 'put ''KHZhciB4PW5lLFA9ZWU7MCE9PXgmJlA8dGhpcy5sZW5ndGg7UCsrKXt2YXIgVj0wfHRoaXMud29yZHNbUF07eD0oVis9eCk+Pj4yNix0aGlzLndvcmRzW1BdPVYmPTY3MTA4ODYzfXJldHVybiAwIT09eCYmKHRoaXMud29yZHNbUF09eCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxVLnByb3RvdHlw''@;'; put 'put ''ZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sVS5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihPKXt2YXIgZWUsej1PPDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiF6KXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZ6KXJl''@;'; put 'put ''dHVybiAxO2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxlbmd0aD4xKWVlPTE7ZWxzZXt6JiYoTz0tTyksRShPPD02NzEwODg2MywiTnVtYmVyIGlzIHRvbyBiaWciKTt2YXIgbmU9MHx0aGlzLndvcmRzWzBdO2VlPW5lPT09Tz8wOm5lPE8/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwt''@;'; put 'put ''ZWU6ZWV9LFUucHJvdG90eXBlLmNtcD1mdW5jdGlvbihPKXtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PU8ubmVnYXRpdmUpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1PLm5lZ2F0aXZlKXJldHVybiAxO3ZhciB6PXRoaXMudWNtcChPKTtyZXR1cm4gMCE9PXRoaXMubmVn''@;'; put 'put ''YXRpdmU/MHwtejp6fSxVLnByb3RvdHlwZS51Y21wPWZ1bmN0aW9uKE8pe2lmKHRoaXMubGVuZ3RoPk8ubGVuZ3RoKXJldHVybiAxO2lmKHRoaXMubGVuZ3RoPE8ubGVuZ3RoKXJldHVybi0xO2Zvcih2YXIgej0wLGVlPXRoaXMubGVuZ3RoLTE7ZWU+PTA7ZWUtLSl7dmFyIG5lPTB8dGhpcy53''@;'; put 'put ''b3Jkc1tlZV0seD0wfE8ud29yZHNbZWVdO2lmKG5lIT09eCl7bmU8eD96PS0xOm5lPngmJih6PTEpO2JyZWFrfX1yZXR1cm4gen0sVS5wcm90b3R5cGUuZ3RuPWZ1bmN0aW9uKE8pe3JldHVybiAxPT09dGhpcy5jbXBuKE8pfSxVLnByb3RvdHlwZS5ndD1mdW5jdGlvbihPKXtyZXR1cm4gMT09''@;'; put 'put ''PXRoaXMuY21wKE8pfSxVLnByb3RvdHlwZS5ndGVuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNtcG4oTyk+PTB9LFUucHJvdG90eXBlLmd0ZT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbXAoTyk+PTB9LFUucHJvdG90eXBlLmx0bj1mdW5jdGlvbihPKXtyZXR1cm4tMT09PXRoaXMuY21w''@;'; put 'put ''bihPKX0sVS5wcm90b3R5cGUubHQ9ZnVuY3Rpb24oTyl7cmV0dXJuLTE9PT10aGlzLmNtcChPKX0sVS5wcm90b3R5cGUubHRlbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbXBuKE8pPD0wfSxVLnByb3RvdHlwZS5sdGU9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY21wKE8pPD0wfSxVLnBy''@;'; put 'put ''b3RvdHlwZS5lcW49ZnVuY3Rpb24oTyl7cmV0dXJuIDA9PT10aGlzLmNtcG4oTyl9LFUucHJvdG90eXBlLmVxPWZ1bmN0aW9uKE8pe3JldHVybiAwPT09dGhpcy5jbXAoTyl9LFUucmVkPWZ1bmN0aW9uKE8pe3JldHVybiBuZXcgVGUoTyl9LFUucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKE8p''@;'; put 'put ''e3JldHVybiBFKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLEUoMD09PXRoaXMubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksTy5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKE8pfSxVLnByb3RvdHlwZS5mcm9tUmVk''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sVS5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLnJlZD1P''@;'; put 'put ''LHRoaXN9LFUucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKE8pe3JldHVybiBFKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKE8pfSxVLnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5y''@;'; put 'put ''ZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRk''@;'; put 'put ''KHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMu''@;'; put 'put ''cmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkU2hsPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hs''@;'; put 'put ''KHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsTyksdGhpcy5yZWQubXVsKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZElNdWw9''@;'; put 'put ''ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLE8pLHRoaXMucmVkLmltdWwodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQs''@;'; put 'put ''InJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LFUucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJl''@;'; put 'put ''cnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxVLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhp''@;'; put 'put ''cy5yZWQuc3FydCh0aGlzKX0sVS5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LFUucHJvdG90eXBlLnJl''@;'; put 'put ''ZE5lZz1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxVLnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQm''@;'; put 'put ''JiFPLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyxPKX07dmFyIGRlPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gdmUoaGUsTyl7dGhpcy5uYW1lPWhlLHRoaXMucD1u''@;'; put 'put ''ZXcgVShPLDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpLHRoaXMuaz1uZXcgVSgxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gQWUoKXt2ZS5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBm''@;'; put 'put ''ZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIGtlKCl7dmUuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBTZSgpe3ZlLmNh''@;'; put 'put ''bGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9ZnVuY3Rpb24gSWUoKXt2ZS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZm''@;'; put 'put ''ZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIFRlKGhlKXtpZigic3RyaW5nIj09dHlwZW9mIGhlKXt2YXIgTz1VLl9wcmltZShoZSk7dGhpcy5tPU8ucCx0aGlzLnByaW1lPU99ZWxzZSBFKGhlLmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPWhlLHRoaXMucHJp''@;'; put 'put ''bWU9bnVsbH1mdW5jdGlvbiBNZShoZSl7VGUuY2FsbCh0aGlzLGhlKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBVKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRo''@;'; put 'put ''aXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlz''@;'; put 'put ''Lm1pbnYpfXZlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIE89bmV3IFUobnVsbCk7cmV0dXJuIE8ud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxPfSx2ZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihPKXt2YXIgZWUsej1PO2Rve3RoaXMuc3BsaXQoeix0''@;'; put 'put ''aGlzLnRtcCksZWU9KHo9KHo9dGhpcy5pbXVsSyh6KSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxlKGVlPnRoaXMubik7dmFyIG5lPWVlPHRoaXMubj8tMTp6LnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PW5lPyh6LndvcmRzWzBdPTAsei5sZW5ndGg9MSk6bmU+MD96LmlzdWIo''@;'; put 'put ''dGhpcy5wKTp2b2lkIDAhPT16LnN0cmlwP3ouc3RyaXAoKTp6Ll9zdHJpcCgpLHp9LHZlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihPLHope08uaXVzaHJuKHRoaXMubiwwLHopfSx2ZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oTyl7cmV0dXJuIE8uaW11bCh0aGlzLmspfSxFZShBZSx2''@;'; put 'put ''ZSksQWUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKE8seil7Zm9yKHZhciBuZT1NYXRoLm1pbihPLmxlbmd0aCw5KSx4PTA7eDxuZTt4Kyspei53b3Jkc1t4XT1PLndvcmRzW3hdO2lmKHoubGVuZ3RoPW5lLE8ubGVuZ3RoPD05KXJldHVybiBPLndvcmRzWzBdPTAsdm9pZChPLmxlbmd0aD0x''@;'; put 'put ''KTt2YXIgUD1PLndvcmRzWzldO2Zvcih6LndvcmRzW3oubGVuZ3RoKytdPTQxOTQzMDMmUCx4PTEwO3g8Ty5sZW5ndGg7eCsrKXt2YXIgVj0wfE8ud29yZHNbeF07Ty53b3Jkc1t4LTEwXT0oNDE5NDMwMyZWKTw8NHxQPj4+MjIsUD1WfU8ud29yZHNbeC0xMF09UD4+Pj0yMixPLmxlbmd0aC09''@;'; put 'put ''MD09PVAmJk8ubGVuZ3RoPjEwPzEwOjl9LEFlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihPKXtPLndvcmRzW08ubGVuZ3RoXT0wLE8ud29yZHNbTy5sZW5ndGgrMV09MCxPLmxlbmd0aCs9Mjtmb3IodmFyIHo9MCxlZT0wO2VlPE8ubGVuZ3RoO2VlKyspe3ZhciBuZT0wfE8ud29yZHNbZWVd''@;'; put 'put ''O08ud29yZHNbZWVdPTY3MTA4ODYzJih6Kz05NzcqbmUpLHo9NjQqbmUrKHovNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1PLndvcmRzW08ubGVuZ3RoLTFdJiYoTy5sZW5ndGgtLSwwPT09Ty53b3Jkc1tPLmxlbmd0aC0xXSYmTy5sZW5ndGgtLSksT30sRWUoa2UsdmUpLEVlKFNlLHZlKSxFZShJ''@;'; put 'put ''ZSx2ZSksSWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKE8pe2Zvcih2YXIgej0wLGVlPTA7ZWU8Ty5sZW5ndGg7ZWUrKyl7dmFyIG5lPTE5KigwfE8ud29yZHNbZWVdKSt6LHg9NjcxMDg4NjMmbmU7bmU+Pj49MjYsTy53b3Jkc1tlZV09eCx6PW5lfXJldHVybiAwIT09eiYmKE8ud29yZHNb''@;'; put 'put ''Ty5sZW5ndGgrK109eiksT30sVS5fcHJpbWU9ZnVuY3Rpb24oTyl7aWYoZGVbT10pcmV0dXJuIGRlW09dO3ZhciB6O2lmKCJrMjU2Ij09PU8pej1uZXcgQWU7ZWxzZSBpZigicDIyNCI9PT1PKXo9bmV3IGtlO2Vsc2UgaWYoInAxOTIiPT09Tyl6PW5ldyBTZTtlbHNle2lmKCJwMjU1MTkiIT09''@;'; put 'put ''Tyl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJpbWUgIitPKTt6PW5ldyBJZX1yZXR1cm4gZGVbT109eix6fSxUZS5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oTyl7RSgwPT09Ty5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxFKE8ucmVkLCJyZWQgd29y''@;'; put 'put ''a3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LFRlLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihPLHope0UoMD09KE8ubmVnYXRpdmV8ei5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksRShPLnJlZCYmTy5yZWQ9PT16LnJlZCwicmVkIHdvcmtzIG9ubHkg''@;'; put 'put ''d2l0aCByZWQgbnVtYmVycyIpfSxUZS5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UoTykuX2ZvcmNlUmVkKHRoaXMpOk8udW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKX0sVGUucHJvdG90eXBlLm5lZz1mdW5jdGlvbihP''@;'; put 'put ''KXtyZXR1cm4gTy5pc1plcm8oKT9PLmNsb25lKCk6dGhpcy5tLnN1YihPKS5fZm9yY2VSZWQodGhpcyl9LFRlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oTyx6KXt0aGlzLl92ZXJpZnkyKE8seik7dmFyIGVlPU8uYWRkKHopO3JldHVybiBlZS5jbXAodGhpcy5tKT49MCYmZWUuaXN1Yih0aGlz''@;'; put 'put ''Lm0pLGVlLl9mb3JjZVJlZCh0aGlzKX0sVGUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oTyx6KXt0aGlzLl92ZXJpZnkyKE8seik7dmFyIGVlPU8uaWFkZCh6KTtyZXR1cm4gZWUuY21wKHRoaXMubSk+PTAmJmVlLmlzdWIodGhpcy5tKSxlZX0sVGUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihP''@;'; put 'put ''LHope3RoaXMuX3ZlcmlmeTIoTyx6KTt2YXIgZWU9Ty5zdWIoeik7cmV0dXJuIGVlLmNtcG4oMCk8MCYmZWUuaWFkZCh0aGlzLm0pLGVlLl9mb3JjZVJlZCh0aGlzKX0sVGUucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oTyx6KXt0aGlzLl92ZXJpZnkyKE8seik7dmFyIGVlPU8uaXN1Yih6KTty''@;'; put 'put ''ZXR1cm4gZWUuY21wbigwKTwwJiZlZS5pYWRkKHRoaXMubSksZWV9LFRlLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShPKSx0aGlzLmltb2QoTy51c2hsbih6KSl9LFRlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKE8seil7cmV0dXJuIHRoaXMuX3Zl''@;'; put 'put ''cmlmeTIoTyx6KSx0aGlzLmltb2QoTy5pbXVsKHopKX0sVGUucHJvdG90eXBlLm11bD1mdW5jdGlvbihPLHope3JldHVybiB0aGlzLl92ZXJpZnkyKE8seiksdGhpcy5pbW9kKE8ubXVsKHopKX0sVGUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuaW11bChPLE8uY2xv''@;'; put 'put ''bmUoKSl9LFRlLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubXVsKE8sTyl9LFRlLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKE8pe2lmKE8uaXNaZXJvKCkpcmV0dXJuIE8uY2xvbmUoKTt2YXIgej10aGlzLm0uYW5kbG4oMyk7aWYoRSh6JTI9PTEpLDM9PT16KXt2YXIg''@;'; put 'put ''ZWU9dGhpcy5tLmFkZChuZXcgVSgxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyhPLGVlKX1mb3IodmFyIG5lPXRoaXMubS5zdWJuKDEpLHg9MDshbmUuaXNaZXJvKCkmJjA9PT1uZS5hbmRsbigxKTspeCsrLG5lLml1c2hybigxKTtFKCFuZS5pc1plcm8oKSk7dmFyIFA9bmV3IFUoMSku''@;'; put 'put ''dG9SZWQodGhpcyksVj1QLnJlZE5lZygpLFQ9dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpLFM9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihTPW5ldyBVKDIqUypTKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3coUyxUKS5jbXAoVik7KVMucmVkSUFkZChWKTtmb3IodmFyIEY9dGhpcy5wb3coUyxu''@;'; put 'put ''ZSkseWU9dGhpcy5wb3coTyxuZS5hZGRuKDEpLml1c2hybigxKSksQ2U9dGhpcy5wb3coTyxuZSksRGU9eDswIT09Q2UuY21wKFApOyl7Zm9yKHZhciBQZT1DZSxRZT0wOzAhPT1QZS5jbXAoUCk7UWUrKylQZT1QZS5yZWRTcXIoKTtFKFFlPERlKTt2YXIgJGU9dGhpcy5wb3coRixuZXcgVSgx''@;'; put 'put ''KS5pdXNobG4oRGUtUWUtMSkpO3llPXllLnJlZE11bCgkZSksRj0kZS5yZWRTcXIoKSxDZT1DZS5yZWRNdWwoRiksRGU9UWV9cmV0dXJuIHllfSxUZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihPKXt2YXIgej1PLl9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09ei5uZWdhdGl2ZT8oei5uZWdh''@;'; put 'put ''dGl2ZT0wLHRoaXMuaW1vZCh6KS5yZWROZWcoKSk6dGhpcy5pbW9kKHopfSxUZS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKE8seil7aWYoei5pc1plcm8oKSlyZXR1cm4gbmV3IFUoMSkudG9SZWQodGhpcyk7aWYoMD09PXouY21wbigxKSlyZXR1cm4gTy5jbG9uZSgpO3ZhciBuZT1uZXcgQXJy''@;'; put 'put ''YXkoMTYpO25lWzBdPW5ldyBVKDEpLnRvUmVkKHRoaXMpLG5lWzFdPU87Zm9yKHZhciB4PTI7eDxuZS5sZW5ndGg7eCsrKW5lW3hdPXRoaXMubXVsKG5lW3gtMV0sTyk7dmFyIFA9bmVbMF0sVj0wLFQ9MCxTPXouYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1TJiYoUz0yNikseD16Lmxlbmd0aC0x''@;'; put 'put ''O3g+PTA7eC0tKXtmb3IodmFyIEY9ei53b3Jkc1t4XSx5ZT1TLTE7eWU+PTA7eWUtLSl7dmFyIENlPUY+PnllJjE7UCE9PW5lWzBdJiYoUD10aGlzLnNxcihQKSksMCE9PUNlfHwwIT09Vj8oVjw8PTEsVnw9Q2UsKDQ9PSsrVHx8MD09PXgmJjA9PT15ZSkmJihQPXRoaXMubXVsKFAsbmVbVl0p''@;'; put 'put ''LFQ9MCxWPTApKTpUPTB9Uz0yNn1yZXR1cm4gUH0sVGUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihPKXt2YXIgej1PLnVtb2QodGhpcy5tKTtyZXR1cm4gej09PU8/ei5jbG9uZSgpOnp9LFRlLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihPKXt2YXIgej1PLmNsb25lKCk7''@;'; put 'put ''cmV0dXJuIHoucmVkPW51bGwsen0sVS5tb250PWZ1bmN0aW9uKE8pe3JldHVybiBuZXcgTWUoTyl9LEVlKE1lLFRlKSxNZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmltb2QoTy51c2hsbih0aGlzLnNoaWZ0KSl9LE1lLnByb3RvdHlwZS5jb252ZXJ0RnJv''@;'; put 'put ''bT1mdW5jdGlvbihPKXt2YXIgej10aGlzLmltb2QoTy5tdWwodGhpcy5yaW52KSk7cmV0dXJuIHoucmVkPW51bGwsen0sTWUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oTyx6KXtpZihPLmlzWmVybygpfHx6LmlzWmVybygpKXJldHVybiBPLndvcmRzWzBdPTAsTy5sZW5ndGg9MSxPO3ZhciBl''@;'; put 'put ''ZT1PLmltdWwoeiksbmU9ZWUubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLHg9ZWUuaXN1YihuZSkuaXVzaHJuKHRoaXMuc2hpZnQpLFA9eDtyZXR1cm4geC5jbXAodGhpcy5tKT49MD9QPXguaXN1Yih0aGlzLm0pOnguY21w''@;'; put 'put ''bigwKTwwJiYoUD14LmlhZGQodGhpcy5tKSksUC5fZm9yY2VSZWQodGhpcyl9LE1lLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oTyx6KXtpZihPLmlzWmVybygpfHx6LmlzWmVybygpKXJldHVybiBuZXcgVSgwKS5fZm9yY2VSZWQodGhpcyk7dmFyIGVlPU8ubXVsKHopLG5lPWVlLm1hc2tuKHRo''@;'; put 'put ''aXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSx4PWVlLmlzdWIobmUpLml1c2hybih0aGlzLnNoaWZ0KSxQPXg7cmV0dXJuIHguY21wKHRoaXMubSk+PTA/UD14LmlzdWIodGhpcy5tKTp4LmNtcG4oMCk8MCYmKFA9eC5pYWRkKHRoaXMubSkp''@;'; put 'put ''LFAuX2ZvcmNlUmVkKHRoaXMpfSxNZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5pbW9kKE8uX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShYZT1MLm5tZChYZSksdGhpcyl9LDQwMzkwOihYZSxKZSk9PnshZnVuY3Rpb24oKXsi''@;'; put 'put ''dXNlIHN0cmljdCI7Zm9yKHZhciBMPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIixtZT1uZXcgVWludDhBcnJheSgyNTYpLEI9MDtCPEwubGVuZ3RoO0IrKyltZVtMLmNoYXJDb2RlQXQoQildPUI7SmUuYz1mdW5jdGlv''@;'; put 'put ''bihFKXt2YXIgVSxFZT1uZXcgVWludDhBcnJheShFKSxRPUVlLmxlbmd0aCxqPSIiO2ZvcihVPTA7VTxRO1UrPTMpais9TFtFZVtVXT4+Ml0sais9TFsoMyZFZVtVXSk8PDR8RWVbVSsxXT4+NF0sais9TFsoMTUmRWVbVSsxXSk8PDJ8RWVbVSsyXT4+Nl0sais9TFs2MyZFZVtVKzJdXTtyZXR1''@;'; put 'put ''cm4gUSUzPT0yP2o9ai5zdWJzdHJpbmcoMCxqLmxlbmd0aC0xKSsiPSI6USUzPT0xJiYoaj1qLnN1YnN0cmluZygwLGoubGVuZ3RoLTIpKyI9PSIpLGp9LEplLko9ZnVuY3Rpb24oRSl7dmFyIFEscmUsYWUsWSxXLEVlPS43NSpFLmxlbmd0aCxVPUUubGVuZ3RoLGo9MDsiPSI9PT1FW0UubGVu''@;'; put 'put ''Z3RoLTFdJiYoRWUtLSwiPSI9PT1FW0UubGVuZ3RoLTJdJiZFZS0tKTt2YXIgTj1uZXcgQXJyYXlCdWZmZXIoRWUpLHRlPW5ldyBVaW50OEFycmF5KE4pO2ZvcihRPTA7UTxVO1ErPTQpcmU9bWVbRS5jaGFyQ29kZUF0KFEpXSxhZT1tZVtFLmNoYXJDb2RlQXQoUSsxKV0sWT1tZVtFLmNoYXJD''@;'; put 'put ''b2RlQXQoUSsyKV0sVz1tZVtFLmNoYXJDb2RlQXQoUSszKV0sdGVbaisrXT1yZTw8MnxhZT4+NCx0ZVtqKytdPSgxNSZhZSk8PDR8WT4+Mix0ZVtqKytdPSgzJlkpPDw2fDYzJlc7cmV0dXJuIE59fSgpfSw1MzQzOihYZSxKZSk9PnsidXNlIHN0cmljdCI7SmUuYnl0ZUxlbmd0aD1mdW5jdGlv''@;'; put 'put ''biBqKHRlKXt2YXIgSz1RKHRlKSxzZT1LWzFdO3JldHVybiAzKihLWzBdK3NlKS80LXNlfSxKZS50b0J5dGVBcnJheT1mdW5jdGlvbiBhZSh0ZSl7dmFyIEssQWUsSj1RKHRlKSxzZT1KWzBdLG9lPUpbMV0sY2U9bmV3IEIoZnVuY3Rpb24gcmUodGUsSyxKKXtyZXR1cm4gMyooSytKKS80LUp9''@;'; put 'put ''KDAsc2Usb2UpKSxkZT0wLHZlPW9lPjA/c2UtNDpzZTtmb3IoQWU9MDtBZTx2ZTtBZSs9NClLPW1lW3RlLmNoYXJDb2RlQXQoQWUpXTw8MTh8bWVbdGUuY2hhckNvZGVBdChBZSsxKV08PDEyfG1lW3RlLmNoYXJDb2RlQXQoQWUrMildPDw2fG1lW3RlLmNoYXJDb2RlQXQoQWUrMyldLGNlW2Rl''@;'; put 'put ''KytdPUs+PjE2JjI1NSxjZVtkZSsrXT1LPj44JjI1NSxjZVtkZSsrXT0yNTUmSztyZXR1cm4gMj09PW9lJiYoSz1tZVt0ZS5jaGFyQ29kZUF0KEFlKV08PDJ8bWVbdGUuY2hhckNvZGVBdChBZSsxKV0+PjQsY2VbZGUrK109MjU1JkspLDE9PT1vZSYmKEs9bWVbdGUuY2hhckNvZGVBdChBZSld''@;'; put 'put ''PDwxMHxtZVt0ZS5jaGFyQ29kZUF0KEFlKzEpXTw8NHxtZVt0ZS5jaGFyQ29kZUF0KEFlKzIpXT4+MixjZVtkZSsrXT1LPj44JjI1NSxjZVtkZSsrXT0yNTUmSyksY2V9LEplLmZyb21CeXRlQXJyYXk9ZnVuY3Rpb24gTih0ZSl7Zm9yKHZhciBLLEo9dGUubGVuZ3RoLHNlPUolMyxvZT1bXSxk''@;'; put 'put ''ZT0wLHZlPUotc2U7ZGU8dmU7ZGUrPTE2MzgzKW9lLnB1c2goVyh0ZSxkZSxkZSsxNjM4Mz52ZT92ZTpkZSsxNjM4MykpO3JldHVybiAxPT09c2U/b2UucHVzaChMWyhLPXRlW0otMV0pPj4yXStMW0s8PDQmNjNdKyI9PSIpOjI9PT1zZSYmb2UucHVzaChMWyhLPSh0ZVtKLTJdPDw4KSt0ZVtK''@;'; put 'put ''LTFdKT4+MTBdK0xbSz4+NCY2M10rTFtLPDwyJjYzXSsiPSIpLG9lLmpvaW4oIiIpfTtmb3IodmFyIEw9W10sbWU9W10sQj0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXk/VWludDhBcnJheTpBcnJheSxFPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3Bx''@;'; put 'put ''cnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIixFZT0wLFU9RS5sZW5ndGg7RWU8VTsrK0VlKUxbRWVdPUVbRWVdLG1lW0UuY2hhckNvZGVBdChFZSldPUVlO2Z1bmN0aW9uIFEodGUpe3ZhciBLPXRlLmxlbmd0aDtpZihLJTQ+MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyaW5nLiBMZW5ndGgg''@;'; put 'put ''bXVzdCBiZSBhIG11bHRpcGxlIG9mIDQiKTt2YXIgSj10ZS5pbmRleE9mKCI9Iik7cmV0dXJuLTE9PT1KJiYoSj1LKSxbSixKPT09Sz8wOjQtSiU0XX1mdW5jdGlvbiBZKHRlKXtyZXR1cm4gTFt0ZT4+MTgmNjNdK0xbdGU+PjEyJjYzXStMW3RlPj42JjYzXStMWzYzJnRlXX1mdW5jdGlvbiBX''@;'; put 'put ''KHRlLEssSil7Zm9yKHZhciBvZT1bXSxjZT1LO2NlPEo7Y2UrPTMpb2UucHVzaChZKCh0ZVtjZV08PDE2JjE2NzExNjgwKSsodGVbY2UrMV08PDgmNjUyODApKygyNTUmdGVbY2UrMl0pKSk7cmV0dXJuIG9lLmpvaW4oIiIpfW1lWyItIi5jaGFyQ29kZUF0KDApXT02MixtZVsiXyIuY2hhckNv''@;'; put 'put ''ZGVBdCgwKV09NjN9LDk4NTM4OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSxCKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gRShlZSxuZSl7aWYoIWVlKXRocm93IG5ldyBFcnJvcihuZXx8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBFZShlZSxuZSl7ZWUuc3VwZXJfPW5lO3Zh''@;'; put 'put ''ciB4PWZ1bmN0aW9uKCl7fTt4LnByb3RvdHlwZT1uZS5wcm90b3R5cGUsZWUucHJvdG90eXBlPW5ldyB4LGVlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lZX1mdW5jdGlvbiBVKGVlLG5lLHgpe2lmKFUuaXNCTihlZSkpcmV0dXJuIGVlO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGws''@;'; put 'put ''dGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1lZSYmKCgibGUiPT09bmV8fCJiZSI9PT1uZSkmJih4PW5lLG5lPTEwKSx0aGlzLl9pbml0KGVlfHwwLG5lfHwxMCx4fHwiYmUiKSl9dmFyIFE7Im9iamVjdCI9PXR5cGVvZiBtZT9tZS5leHBvcnRzPVU6Qi5CTj1VLFUuQk49VSxV''@;'; put 'put ''LndvcmRTaXplPTI2O3RyeXtRPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuQnVmZmVyP3dpbmRvdy5CdWZmZXI6TCg0NjYwMSkuQnVmZmVyfWNhdGNoKGVlKXt9ZnVuY3Rpb24gaihlZSxuZSl7dmFyIHg9ZWUuY2hhckNvZGVBdChuZSk7cmV0dXJuIHg+PTQ4''@;'; put 'put ''JiZ4PD01Nz94LTQ4Ong+PTY1JiZ4PD03MD94LTU1Ong+PTk3JiZ4PD0xMDI/eC04Nzp2b2lkIEUoITEsIkludmFsaWQgY2hhcmFjdGVyIGluICIrZWUpfWZ1bmN0aW9uIHJlKGVlLG5lLHgpe3ZhciBQPWooZWUseCk7cmV0dXJuIHgtMT49bmUmJihQfD1qKGVlLHgtMSk8PDQpLFB9ZnVuY3Rp''@;'; put 'put ''b24gYWUoZWUsbmUseCxQKXtmb3IodmFyIFY9MCxUPTAsUz1NYXRoLm1pbihlZS5sZW5ndGgseCksRj1uZTtGPFM7RisrKXt2YXIgeWU9ZWUuY2hhckNvZGVBdChGKS00ODtWKj1QLFQ9eWU+PTQ5P3llLTQ5KzEwOnllPj0xNz95ZS0xNysxMDp5ZSxFKHllPj0wJiZUPFAsIkludmFsaWQgY2hh''@;'; put 'put ''cmFjdGVyIiksVis9VH1yZXR1cm4gVn1mdW5jdGlvbiBZKGVlLG5lKXtlZS53b3Jkcz1uZS53b3JkcyxlZS5sZW5ndGg9bmUubGVuZ3RoLGVlLm5lZ2F0aXZlPW5lLm5lZ2F0aXZlLGVlLnJlZD1uZS5yZWR9aWYoVS5pc0JOPWZ1bmN0aW9uKG5lKXtyZXR1cm4gbmUgaW5zdGFuY2VvZiBVfHxu''@;'; put 'put ''dWxsIT09bmUmJiJvYmplY3QiPT10eXBlb2YgbmUmJm5lLmNvbnN0cnVjdG9yLndvcmRTaXplPT09VS53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheShuZS53b3Jkcyl9LFUubWF4PWZ1bmN0aW9uKG5lLHgpe3JldHVybiBuZS5jbXAoeCk+MD9uZTp4fSxVLm1pbj1mdW5jdGlvbihuZSx4KXtyZXR1''@;'; put 'put ''cm4gbmUuY21wKHgpPDA/bmU6eH0sVS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24obmUseCxQKXtpZigibnVtYmVyIj09dHlwZW9mIG5lKXJldHVybiB0aGlzLl9pbml0TnVtYmVyKG5lLHgsUCk7aWYoIm9iamVjdCI9PXR5cGVvZiBuZSlyZXR1cm4gdGhpcy5faW5pdEFycmF5KG5lLHgsUCk7''@;'; put 'put ''ImhleCI9PT14JiYoeD0xNiksRSh4PT09KDB8eCkmJng+PTImJng8PTM2KTt2YXIgVj0wOyItIj09PShuZT1uZS50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJihWKyssdGhpcy5uZWdhdGl2ZT0xKSxWPG5lLmxlbmd0aCYmKDE2PT09eD90aGlzLl9wYXJzZUhleChuZSxWLFAp''@;'; put 'put ''Oih0aGlzLl9wYXJzZUJhc2UobmUseCxWKSwibGUiPT09UCYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHgsUCkpKX0sVS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24obmUseCxQKXtuZTwwJiYodGhpcy5uZWdhdGl2ZT0xLG5lPS1uZSksbmU8NjcxMDg4NjQ/KHRoaXMu''@;'; put 'put ''d29yZHM9WzY3MTA4ODYzJm5lXSx0aGlzLmxlbmd0aD0xKTpuZTw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZuZSxuZS82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KEUobmU8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmbmUs''@;'; put 'put ''bmUvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PVAmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSx4LFApfSxVLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKG5lLHgsUCl7aWYoRSgibnVtYmVyIj09dHlwZW9mIG5lLmxlbmd0aCksbmUubGVu''@;'; put 'put ''Z3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKG5lLmxlbmd0aC8zKSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBWPTA7Vjx0aGlzLmxlbmd0aDtWKyspdGhpcy53b3Jkc1tWXT0wO3Zh''@;'; put 'put ''ciBULFMsRj0wO2lmKCJiZSI9PT1QKWZvcihWPW5lLmxlbmd0aC0xLFQ9MDtWPj0wO1YtPTMpdGhpcy53b3Jkc1tUXXw9KFM9bmVbVl18bmVbVi0xXTw8OHxuZVtWLTJdPDwxNik8PEYmNjcxMDg4NjMsdGhpcy53b3Jkc1tUKzFdPVM+Pj4yNi1GJjY3MTA4ODYzLChGKz0yNCk+PTI2JiYoRi09''@;'; put 'put ''MjYsVCsrKTtlbHNlIGlmKCJsZSI9PT1QKWZvcihWPTAsVD0wO1Y8bmUubGVuZ3RoO1YrPTMpdGhpcy53b3Jkc1tUXXw9KFM9bmVbVl18bmVbVisxXTw8OHxuZVtWKzJdPDwxNik8PEYmNjcxMDg4NjMsdGhpcy53b3Jkc1tUKzFdPVM+Pj4yNi1GJjY3MTA4ODYzLChGKz0yNCk+PTI2JiYoRi09''@;'; put 'put ''MjYsVCsrKTtyZXR1cm4gdGhpcy5fc3RyaXAoKX0sVS5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKG5lLHgsUCl7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChuZS5sZW5ndGgteCkvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgVj0wO1Y8dGhpcy5sZW5n''@;'; put 'put ''dGg7VisrKXRoaXMud29yZHNbVl09MDt2YXIgRixUPTAsUz0wO2lmKCJiZSI9PT1QKWZvcihWPW5lLmxlbmd0aC0xO1Y+PXg7Vi09MilGPXJlKG5lLHgsVik8PFQsdGhpcy53b3Jkc1tTXXw9NjcxMDg4NjMmRixUPj0xOD8oVC09MTgsdGhpcy53b3Jkc1tTKz0xXXw9Rj4+PjI2KTpUKz04O2Vs''@;'; put 'put ''c2UgZm9yKFY9KG5lLmxlbmd0aC14KSUyPT0wP3grMTp4O1Y8bmUubGVuZ3RoO1YrPTIpRj1yZShuZSx4LFYpPDxULHRoaXMud29yZHNbU118PTY3MTA4ODYzJkYsVD49MTg/KFQtPTE4LHRoaXMud29yZHNbUys9MV18PUY+Pj4yNik6VCs9ODt0aGlzLl9zdHJpcCgpfSxVLnByb3RvdHlwZS5f''@;'; put 'put ''cGFyc2VCYXNlPWZ1bmN0aW9uKG5lLHgsUCl7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIFY9MCxUPTE7VDw9NjcxMDg4NjM7VCo9eClWKys7Vi0tLFQ9VC94fDA7Zm9yKHZhciBTPW5lLmxlbmd0aC1QLEY9UyVWLHllPU1hdGgubWluKFMsUy1GKStQLENlPTAsRGU9UDtE''@;'; put 'put ''ZTx5ZTtEZSs9VilDZT1hZShuZSxEZSxEZStWLHgpLHRoaXMuaW11bG4oVCksdGhpcy53b3Jkc1swXStDZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1DZTp0aGlzLl9pYWRkbihDZSk7aWYoMCE9PUYpe3ZhciBQZT0xO2ZvcihDZT1hZShuZSxEZSxuZS5sZW5ndGgseCksRGU9MDtEZTxGO0Rl''@;'; put 'put ''KyspUGUqPXg7dGhpcy5pbXVsbihQZSksdGhpcy53b3Jkc1swXStDZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1DZTp0aGlzLl9pYWRkbihDZSl9dGhpcy5fc3RyaXAoKX0sVS5wcm90b3R5cGUuY29weT1mdW5jdGlvbihuZSl7bmUud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3Io''@;'; put 'put ''dmFyIHg9MDt4PHRoaXMubGVuZ3RoO3grKyluZS53b3Jkc1t4XT10aGlzLndvcmRzW3hdO25lLmxlbmd0aD10aGlzLmxlbmd0aCxuZS5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLG5lLnJlZD10aGlzLnJlZH0sVS5wcm90b3R5cGUuX21vdmU9ZnVuY3Rpb24obmUpe1kobmUsdGhpcyl9LFUucHJv''@;'; put 'put ''dG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIG5lPW5ldyBVKG51bGwpO3JldHVybiB0aGlzLmNvcHkobmUpLG5lfSxVLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKG5lKXtmb3IoO3RoaXMubGVuZ3RoPG5lOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9LFUu''@;'; put 'put ''cHJvdG90eXBlLl9zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LFUucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhp''@;'; put 'put ''cy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSwidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbC5mb3IpdHJ5e1UucHJvdG90eXBlW1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9t''@;'; put 'put ''IildPVd9Y2F0Y2goZWUpe1UucHJvdG90eXBlLmluc3BlY3Q9V31lbHNlIFUucHJvdG90eXBlLmluc3BlY3Q9VztmdW5jdGlvbiBXKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9dmFyIE49WyIiLCIwIiwiMDAiLCIwMDAiLCIwMDAw''@;'; put 'put ''IiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwIiwi''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sdGU9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sSz1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3''@;'; put 'put ''MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2''@;'; put 'put ''MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBvZShlZSxuZSx4KXt4Lm5lZ2F0aXZlPW5lLm5lZ2F0aXZlXmVlLm5lZ2F0aXZl''@;'; put 'put ''O3ZhciBQPWVlLmxlbmd0aCtuZS5sZW5ndGh8MDt4Lmxlbmd0aD1QLFA9UC0xfDA7dmFyIFY9MHxlZS53b3Jkc1swXSxUPTB8bmUud29yZHNbMF0sUz1WKlQseWU9Uy82NzEwODg2NHwwO3gud29yZHNbMF09NjcxMDg4NjMmUztmb3IodmFyIENlPTE7Q2U8UDtDZSsrKXtmb3IodmFyIERlPXll''@;'; put 'put ''Pj4+MjYsUGU9NjcxMDg4NjMmeWUsUWU9TWF0aC5taW4oQ2UsbmUubGVuZ3RoLTEpLCRlPU1hdGgubWF4KDAsQ2UtZWUubGVuZ3RoKzEpOyRlPD1RZTskZSsrKURlKz0oUz0oVj0wfGVlLndvcmRzW0NlLSRlfDBdKSooVD0wfG5lLndvcmRzWyRlXSkrUGUpLzY3MTA4ODY0fDAsUGU9NjcxMDg4''@;'; put 'put ''NjMmUzt4LndvcmRzW0NlXT0wfFBlLHllPTB8RGV9cmV0dXJuIDAhPT15ZT94LndvcmRzW0NlXT0wfHllOngubGVuZ3RoLS0seC5fc3RyaXAoKX1VLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihuZSx4KXt2YXIgUDtpZih4PTB8eHx8MSwxNj09PShuZT1uZXx8MTApfHwiaGV4Ij09PW5l''@;'; put 'put ''KXtQPSIiO2Zvcih2YXIgVj0wLFQ9MCxTPTA7Uzx0aGlzLmxlbmd0aDtTKyspe3ZhciBGPXRoaXMud29yZHNbU10seWU9KDE2Nzc3MjE1JihGPDxWfFQpKS50b1N0cmluZygxNik7VD1GPj4+MjQtViYxNjc3NzIxNSwoVis9Mik+PTI2JiYoVi09MjYsUy0tKSxQPTAhPT1UfHxTIT09dGhpcy5s''@;'; put 'put ''ZW5ndGgtMT9OWzYteWUubGVuZ3RoXSt5ZStQOnllK1B9Zm9yKDAhPT1UJiYoUD1ULnRvU3RyaW5nKDE2KStQKTtQLmxlbmd0aCV4IT0wOylQPSIwIitQO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKFA9Ii0iK1ApLFB9aWYobmU9PT0oMHxuZSkmJm5lPj0yJiZuZTw9MzYpe3ZhciBDZT10''@;'; put 'put ''ZVtuZV0sRGU9S1tuZV07UD0iIjt2YXIgUGU9dGhpcy5jbG9uZSgpO2ZvcihQZS5uZWdhdGl2ZT0wOyFQZS5pc1plcm8oKTspe3ZhciBRZT1QZS5tb2RybihEZSkudG9TdHJpbmcobmUpO1A9KFBlPVBlLmlkaXZuKERlKSkuaXNaZXJvKCk/UWUrUDpOW0NlLVFlLmxlbmd0aF0rUWUrUH1mb3Io''@;'; put 'put ''dGhpcy5pc1plcm8oKSYmKFA9IjAiK1ApO1AubGVuZ3RoJXghPTA7KVA9IjAiK1A7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoUD0iLSIrUCksUH1FKCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LFUucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIG5l''@;'; put 'put ''PXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9uZSs9NjcxMDg4NjQqdGhpcy53b3Jkc1sxXTozPT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJdP25lKz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmRSghMSwi''@;'; put 'put ''TnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LW5lOm5lfSxVLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygxNiwyKX0sUSYmKFUucHJvdG90eXBlLnRvQnVmZmVyPWZ1bmN0aW9uKG5l''@;'; put 'put ''LHgpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKFEsbmUseCl9KSxVLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKG5lLHgpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LG5lLHgpfSxVLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbihuZSx4LFApe3RoaXMuX3N0cmlwKCk7''@;'; put 'put ''dmFyIFY9dGhpcy5ieXRlTGVuZ3RoKCksVD1QfHxNYXRoLm1heCgxLFYpO0UoVjw9VCwiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLEUoVD4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKTt2YXIgUz1mdW5jdGlvbihuZSx4KXtyZXR1cm4gbmUuYWxsb2NV''@;'; put 'put ''bnNhZmU/bmUuYWxsb2NVbnNhZmUoeCk6bmV3IG5lKHgpfShuZSxUKTtyZXR1cm4gdGhpc1siX3RvQXJyYXlMaWtlIisoImxlIj09PXg/IkxFIjoiQkUiKV0oUyxWKSxTfSxVLnByb3RvdHlwZS5fdG9BcnJheUxpa2VMRT1mdW5jdGlvbihuZSx4KXtmb3IodmFyIFA9MCxWPTAsVD0wLFM9MDtU''@;'; put 'put ''PHRoaXMubGVuZ3RoO1QrKyl7dmFyIEY9dGhpcy53b3Jkc1tUXTw8U3xWO25lW1ArK109MjU1JkYsUDxuZS5sZW5ndGgmJihuZVtQKytdPUY+PjgmMjU1KSxQPG5lLmxlbmd0aCYmKG5lW1ArK109Rj4+MTYmMjU1KSw2PT09Uz8oUDxuZS5sZW5ndGgmJihuZVtQKytdPUY+PjI0JjI1NSksVj0w''@;'; put 'put ''LFM9MCk6KFY9Rj4+PjI0LFMrPTIpfWlmKFA8bmUubGVuZ3RoKWZvcihuZVtQKytdPVY7UDxuZS5sZW5ndGg7KW5lW1ArK109MH0sVS5wcm90b3R5cGUuX3RvQXJyYXlMaWtlQkU9ZnVuY3Rpb24obmUseCl7Zm9yKHZhciBQPW5lLmxlbmd0aC0xLFY9MCxUPTAsUz0wO1Q8dGhpcy5sZW5ndGg7''@;'; put 'put ''VCsrKXt2YXIgRj10aGlzLndvcmRzW1RdPDxTfFY7bmVbUC0tXT0yNTUmRixQPj0wJiYobmVbUC0tXT1GPj44JjI1NSksUD49MCYmKG5lW1AtLV09Rj4+MTYmMjU1KSw2PT09Uz8oUD49MCYmKG5lW1AtLV09Rj4+MjQmMjU1KSxWPTAsUz0wKTooVj1GPj4+MjQsUys9Mil9aWYoUD49MClmb3Io''@;'; put 'put ''bmVbUC0tXT1WO1A+PTA7KW5lW1AtLV09MH0sVS5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKG5lKXtyZXR1cm4gMzItTWF0aC5jbHozMihuZSl9OmZ1bmN0aW9uKG5lKXt2YXIgeD1uZSxQPTA7cmV0dXJuIHg+PTQwOTYmJihQKz0xMyx4Pj4+PTEzKSx4Pj02NCYm''@;'; put 'put ''KFArPTcseD4+Pj03KSx4Pj04JiYoUCs9NCx4Pj4+PTQpLHg+PTImJihQKz0yLHg+Pj49MiksUCt4fSxVLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24obmUpe2lmKDA9PT1uZSlyZXR1cm4gMjY7dmFyIHg9bmUsUD0wO3JldHVybiAwPT0oODE5MSZ4KSYmKFArPTEzLHg+Pj49MTMpLDA9''@;'; put 'put ''PSgxMjcmeCkmJihQKz03LHg+Pj49NyksMD09KDE1JngpJiYoUCs9NCx4Pj4+PTQpLDA9PSgzJngpJiYoUCs9Mix4Pj4+PTIpLDA9PSgxJngpJiZQKyssUH0sVS5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5fY291bnRCaXRzKHRoaXMud29yZHNbdGhpcy5sZW5n''@;'; put 'put ''dGgtMV0pO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkreH0sVS5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgbmU9MCx4PTA7eDx0aGlzLmxlbmd0aDt4Kyspe3ZhciBQPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbeF0p''@;'; put 'put ''O2lmKG5lKz1QLDI2IT09UClicmVha31yZXR1cm4gbmV9LFUucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LFUucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbihuZSl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3Ro''@;'; put 'put ''aXMuYWJzKCkuaW5vdG4obmUpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sVS5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24obmUpe3JldHVybiB0aGlzLnRlc3RuKG5lLTEpP3RoaXMubm90bihuZSkuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sVS5wcm90b3R5cGUuaXNOZWc9ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LFUucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxVLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxV''@;'; put 'put ''LnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKG5lKXtmb3IoO3RoaXMubGVuZ3RoPG5lLmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgeD0wO3g8bmUubGVuZ3RoO3grKyl0aGlzLndvcmRzW3hdPXRoaXMud29yZHNbeF18bmUud29yZHNbeF07cmV0dXJuIHRoaXMu''@;'; put 'put ''X3N0cmlwKCl9LFUucHJvdG90eXBlLmlvcj1mdW5jdGlvbihuZSl7cmV0dXJuIEUoMD09KHRoaXMubmVnYXRpdmV8bmUubmVnYXRpdmUpKSx0aGlzLml1b3IobmUpfSxVLnByb3RvdHlwZS5vcj1mdW5jdGlvbihuZSl7cmV0dXJuIHRoaXMubGVuZ3RoPm5lLmxlbmd0aD90aGlzLmNsb25lKCku''@;'; put 'put ''aW9yKG5lKTpuZS5jbG9uZSgpLmlvcih0aGlzKX0sVS5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKG5lKXtyZXR1cm4gdGhpcy5sZW5ndGg+bmUubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKG5lKTpuZS5jbG9uZSgpLml1b3IodGhpcyl9LFUucHJvdG90eXBlLml1YW5kPWZ1bmN0aW9uKG5lKXt2''@;'; put 'put ''YXIgeDt4PXRoaXMubGVuZ3RoPm5lLmxlbmd0aD9uZTp0aGlzO2Zvcih2YXIgUD0wO1A8eC5sZW5ndGg7UCsrKXRoaXMud29yZHNbUF09dGhpcy53b3Jkc1tQXSZuZS53b3Jkc1tQXTtyZXR1cm4gdGhpcy5sZW5ndGg9eC5sZW5ndGgsdGhpcy5fc3RyaXAoKX0sVS5wcm90b3R5cGUuaWFuZD1m''@;'; put 'put ''dW5jdGlvbihuZSl7cmV0dXJuIEUoMD09KHRoaXMubmVnYXRpdmV8bmUubmVnYXRpdmUpKSx0aGlzLml1YW5kKG5lKX0sVS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKG5lKXtyZXR1cm4gdGhpcy5sZW5ndGg+bmUubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKG5lKTpuZS5jbG9uZSgpLmlhbmQo''@;'; put 'put ''dGhpcyl9LFUucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24obmUpe3JldHVybiB0aGlzLmxlbmd0aD5uZS5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKG5lKTpuZS5jbG9uZSgpLml1YW5kKHRoaXMpfSxVLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbihuZSl7dmFyIHgsUDt0aGlzLmxlbmd0aD5u''@;'; put 'put ''ZS5sZW5ndGg/KHg9dGhpcyxQPW5lKTooeD1uZSxQPXRoaXMpO2Zvcih2YXIgVj0wO1Y8UC5sZW5ndGg7VisrKXRoaXMud29yZHNbVl09eC53b3Jkc1tWXV5QLndvcmRzW1ZdO2lmKHRoaXMhPT14KWZvcig7Vjx4Lmxlbmd0aDtWKyspdGhpcy53b3Jkc1tWXT14LndvcmRzW1ZdO3JldHVybiB0''@;'; put 'put ''aGlzLmxlbmd0aD14Lmxlbmd0aCx0aGlzLl9zdHJpcCgpfSxVLnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uKG5lKXtyZXR1cm4gRSgwPT0odGhpcy5uZWdhdGl2ZXxuZS5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IobmUpfSxVLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24obmUpe3JldHVybiB0aGlzLmxl''@;'; put 'put ''bmd0aD5uZS5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IobmUpOm5lLmNsb25lKCkuaXhvcih0aGlzKX0sVS5wcm90b3R5cGUudXhvcj1mdW5jdGlvbihuZSl7cmV0dXJuIHRoaXMubGVuZ3RoPm5lLmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IobmUpOm5lLmNsb25lKCkuaXV4b3IodGhpcyl9''@;'; put 'put ''LFUucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKG5lKXtFKCJudW1iZXIiPT10eXBlb2YgbmUmJm5lPj0wKTt2YXIgeD0wfE1hdGguY2VpbChuZS8yNiksUD1uZSUyNjt0aGlzLl9leHBhbmQoeCksUD4wJiZ4LS07Zm9yKHZhciBWPTA7Vjx4O1YrKyl0aGlzLndvcmRzW1ZdPTY3MTA4ODYzJn50''@;'; put 'put ''aGlzLndvcmRzW1ZdO3JldHVybiBQPjAmJih0aGlzLndvcmRzW1ZdPX50aGlzLndvcmRzW1ZdJjY3MTA4ODYzPj4yNi1QKSx0aGlzLl9zdHJpcCgpfSxVLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKG5lKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKG5lKX0sVS5wcm90b3R5cGUuc2V0bj1m''@;'; put 'put ''dW5jdGlvbihuZSx4KXtFKCJudW1iZXIiPT10eXBlb2YgbmUmJm5lPj0wKTt2YXIgUD1uZS8yNnwwLFY9bmUlMjY7cmV0dXJuIHRoaXMuX2V4cGFuZChQKzEpLHRoaXMud29yZHNbUF09eD90aGlzLndvcmRzW1BdfDE8PFY6dGhpcy53b3Jkc1tQXSZ+KDE8PFYpLHRoaXMuX3N0cmlwKCl9LFUu''@;'; put 'put ''cHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24obmUpe3ZhciB4LFAsVjtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PW5lLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAseD10aGlzLmlzdWIobmUpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdh''@;'; put 'put ''dGl2ZSYmMCE9PW5lLm5lZ2F0aXZlKXJldHVybiBuZS5uZWdhdGl2ZT0wLHg9dGhpcy5pc3ViKG5lKSxuZS5uZWdhdGl2ZT0xLHguX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+bmUubGVuZ3RoPyhQPXRoaXMsVj1uZSk6KFA9bmUsVj10aGlzKTtmb3IodmFyIFQ9MCxTPTA7UzxWLmxlbmd0aDtT''@;'; put 'put ''KyspdGhpcy53b3Jkc1tTXT02NzEwODg2MyYoeD0oMHxQLndvcmRzW1NdKSsoMHxWLndvcmRzW1NdKStUKSxUPXg+Pj4yNjtmb3IoOzAhPT1UJiZTPFAubGVuZ3RoO1MrKyl0aGlzLndvcmRzW1NdPTY3MTA4ODYzJih4PSgwfFAud29yZHNbU10pK1QpLFQ9eD4+PjI2O2lmKHRoaXMubGVuZ3Ro''@;'; put 'put ''PVAubGVuZ3RoLDAhPT1UKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPVQsdGhpcy5sZW5ndGgrKztlbHNlIGlmKFAhPT10aGlzKWZvcig7UzxQLmxlbmd0aDtTKyspdGhpcy53b3Jkc1tTXT1QLndvcmRzW1NdO3JldHVybiB0aGlzfSxVLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24obmUpe3ZhciB4''@;'; put 'put ''O3JldHVybiAwIT09bmUubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyhuZS5uZWdhdGl2ZT0wLHg9dGhpcy5zdWIobmUpLG5lLm5lZ2F0aXZlXj0xLHgpOjA9PT1uZS5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCx4PW5lLnN1Yih0aGlzKSx0aGlzLm5l''@;'; put 'put ''Z2F0aXZlPTEseCk6dGhpcy5sZW5ndGg+bmUubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKG5lKTpuZS5jbG9uZSgpLmlhZGQodGhpcyl9LFUucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24obmUpe2lmKDAhPT1uZS5uZWdhdGl2ZSl7bmUubmVnYXRpdmU9MDt2YXIgeD10aGlzLmlhZGQobmUpO3Jl''@;'; put 'put ''dHVybiBuZS5uZWdhdGl2ZT0xLHguX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQobmUpLHRoaXMubmVnYXRpdmU9MSx0aGlzLl9ub3JtU2lnbigpO3ZhciBWLFQsUD10aGlzLmNtcChuZSk7aWYoMD09PVApcmV0dXJuIHRo''@;'; put 'put ''aXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO1A+MD8oVj10aGlzLFQ9bmUpOihWPW5lLFQ9dGhpcyk7Zm9yKHZhciBTPTAsRj0wO0Y8VC5sZW5ndGg7RisrKVM9KHg9KDB8Vi53b3Jkc1tGXSktKDB8VC53b3Jkc1tGXSkrUyk+PjI2LHRoaXMud29yZHNb''@;'; put 'put ''Rl09NjcxMDg4NjMmeDtmb3IoOzAhPT1TJiZGPFYubGVuZ3RoO0YrKylTPSh4PSgwfFYud29yZHNbRl0pK1MpPj4yNix0aGlzLndvcmRzW0ZdPTY3MTA4ODYzJng7aWYoMD09PVMmJkY8Vi5sZW5ndGgmJlYhPT10aGlzKWZvcig7RjxWLmxlbmd0aDtGKyspdGhpcy53b3Jkc1tGXT1WLndvcmRz''@;'; put 'put ''W0ZdO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxGKSxWIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5fc3RyaXAoKX0sVS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKG5lKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIobmUpfTt2YXIgY2U9ZnVuY3Rpb24o''@;'; put 'put ''bmUseCxQKXt2YXIgeWUsQ2UsRGUsVj1uZS53b3JkcyxUPXgud29yZHMsUz1QLndvcmRzLEY9MCxQZT0wfFZbMF0sUWU9ODE5MSZQZSwkZT1QZT4+PjEzLGd0PTB8VlsxXSx3dD04MTkxJmd0LG10PWd0Pj4+MTMsdnQ9MHxWWzJdLEF0PTgxOTEmdnQsaHQ9dnQ+Pj4xMyxCdD0wfFZbM10sb249''@;'; put 'put ''ODE5MSZCdCxfdD1CdD4+PjEzLHR0PTB8Vls0XSxldD04MTkxJnR0LGx0PXR0Pj4+MTMsTHQ9MHxWWzVdLEN0PTgxOTEmTHQsZnQ9THQ+Pj4xMyxIdD0wfFZbNl0sR2U9ODE5MSZIdCxVZT1IdD4+PjEzLHl0PTB8Vls3XSxqdD04MTkxJnl0LEp0PXl0Pj4+MTMsZ249MHxWWzhdLGRuPTgxOTEm''@;'; put 'put ''Z24seW49Z24+Pj4xMyxsbj0wfFZbOV0sTm49ODE5MSZsbixibj1sbj4+PjEzLGVyPTB8VFswXSxzcj04MTkxJmVyLFhuPWVyPj4+MTMsRnI9MHxUWzFdLHhyPTgxOTEmRnIscXQ9RnI+Pj4xMyxwcj0wfFRbMl0sbnI9ODE5MSZwcixBbj1wcj4+PjEzLHFuPTB8VFszXSxXdD04MTkxJnFuLHBu''@;'; put 'put ''PXFuPj4+MTMsS249MHxUWzRdLE50PTgxOTEmS24sc249S24+Pj4xMyxVbj0wfFRbNV0sd249ODE5MSZVbix0bj1Vbj4+PjEzLHpuPTB8VFs2XSxUcj04MTkxJnpuLEJuPXpuPj4+MTMsa3I9MHxUWzddLG1uPTgxOTEma3IsdW49a3I+Pj4xMyxjbj0wfFRbOF0sX249ODE5MSZjbixHdD1jbj4+''@;'; put 'put ''PjEzLGtuPTB8VFs5XSxWbj04MTkxJmtuLGVuPWtuPj4+MTM7UC5uZWdhdGl2ZT1uZS5uZWdhdGl2ZV54Lm5lZ2F0aXZlLFAubGVuZ3RoPTE5O3ZhciBJbj0oRisoeWU9TWF0aC5pbXVsKFFlLHNyKSl8MCkrKCg4MTkxJihDZT0oQ2U9TWF0aC5pbXVsKFFlLFhuKSkrTWF0aC5pbXVsKCRlLHNy''@;'; put 'put ''KXwwKSk8PDEzKXwwO0Y9KChEZT1NYXRoLmltdWwoJGUsWG4pKSsoQ2U+Pj4xMyl8MCkrKEluPj4+MjYpfDAsSW4mPTY3MTA4ODYzLHllPU1hdGguaW11bCh3dCxzciksQ2U9KENlPU1hdGguaW11bCh3dCxYbikpK01hdGguaW11bChtdCxzcil8MCxEZT1NYXRoLmltdWwobXQsWG4pO3ZhciBK''@;'; put 'put ''bj0oRisoeWU9eWUrTWF0aC5pbXVsKFFlLHhyKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwoUWUscXQpfDApK01hdGguaW11bCgkZSx4cil8MCkpPDwxMyl8MDtGPSgoRGU9RGUrTWF0aC5pbXVsKCRlLHF0KXwwKSsoQ2U+Pj4xMyl8MCkrKEpuPj4+MjYpfDAsSm4mPTY3MTA4''@;'; put 'put ''ODYzLHllPU1hdGguaW11bChBdCxzciksQ2U9KENlPU1hdGguaW11bChBdCxYbikpK01hdGguaW11bChodCxzcil8MCxEZT1NYXRoLmltdWwoaHQsWG4pLHllPXllK01hdGguaW11bCh3dCx4cil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKHd0LHF0KXwwKStNYXRoLmltdWwobXQseHIpfDAsRGU9''@;'; put 'put ''RGUrTWF0aC5pbXVsKG10LHF0KXwwO3ZhciBvcj0oRisoeWU9eWUrTWF0aC5pbXVsKFFlLG5yKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwoUWUsQW4pfDApK01hdGguaW11bCgkZSxucil8MCkpPDwxMyl8MDtGPSgoRGU9RGUrTWF0aC5pbXVsKCRlLEFuKXwwKSsoQ2U+Pj4x''@;'; put 'put ''Myl8MCkrKG9yPj4+MjYpfDAsb3ImPTY3MTA4ODYzLHllPU1hdGguaW11bChvbixzciksQ2U9KENlPU1hdGguaW11bChvbixYbikpK01hdGguaW11bChfdCxzcil8MCxEZT1NYXRoLmltdWwoX3QsWG4pLHllPXllK01hdGguaW11bChBdCx4cil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEF0LHF0''@;'; put 'put ''KXwwKStNYXRoLmltdWwoaHQseHIpfDAsRGU9RGUrTWF0aC5pbXVsKGh0LHF0KXwwLHllPXllK01hdGguaW11bCh3dCxucil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKHd0LEFuKXwwKStNYXRoLmltdWwobXQsbnIpfDAsRGU9RGUrTWF0aC5pbXVsKG10LEFuKXwwO3ZhciBncj0oRisoeWU9eWUr''@;'; put 'put ''TWF0aC5pbXVsKFFlLFd0KXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwoUWUscG4pfDApK01hdGguaW11bCgkZSxXdCl8MCkpPDwxMyl8MDtGPSgoRGU9RGUrTWF0aC5pbXVsKCRlLHBuKXwwKSsoQ2U+Pj4xMyl8MCkrKGdyPj4+MjYpfDAsZ3ImPTY3MTA4ODYzLHllPU1hdGgu''@;'; put 'put ''aW11bChldCxzciksQ2U9KENlPU1hdGguaW11bChldCxYbikpK01hdGguaW11bChsdCxzcil8MCxEZT1NYXRoLmltdWwobHQsWG4pLHllPXllK01hdGguaW11bChvbix4cil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKG9uLHF0KXwwKStNYXRoLmltdWwoX3QseHIpfDAsRGU9RGUrTWF0aC5pbXVs''@;'; put 'put ''KF90LHF0KXwwLHllPXllK01hdGguaW11bChBdCxucil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEF0LEFuKXwwKStNYXRoLmltdWwoaHQsbnIpfDAsRGU9RGUrTWF0aC5pbXVsKGh0LEFuKXwwLHllPXllK01hdGguaW11bCh3dCxXdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKHd0LHBuKXwwKStN''@;'; put 'put ''YXRoLmltdWwobXQsV3QpfDAsRGU9RGUrTWF0aC5pbXVsKG10LHBuKXwwO3ZhciBLcj0oRisoeWU9eWUrTWF0aC5pbXVsKFFlLE50KXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwoUWUsc24pfDApK01hdGguaW11bCgkZSxOdCl8MCkpPDwxMyl8MDtGPSgoRGU9RGUrTWF0aC5p''@;'; put 'put ''bXVsKCRlLHNuKXwwKSsoQ2U+Pj4xMyl8MCkrKEtyPj4+MjYpfDAsS3ImPTY3MTA4ODYzLHllPU1hdGguaW11bChDdCxzciksQ2U9KENlPU1hdGguaW11bChDdCxYbikpK01hdGguaW11bChmdCxzcil8MCxEZT1NYXRoLmltdWwoZnQsWG4pLHllPXllK01hdGguaW11bChldCx4cil8MCxDZT0o''@;'; put 'put ''Q2U9Q2UrTWF0aC5pbXVsKGV0LHF0KXwwKStNYXRoLmltdWwobHQseHIpfDAsRGU9RGUrTWF0aC5pbXVsKGx0LHF0KXwwLHllPXllK01hdGguaW11bChvbixucil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKG9uLEFuKXwwKStNYXRoLmltdWwoX3QsbnIpfDAsRGU9RGUrTWF0aC5pbXVsKF90LEFu''@;'; put 'put ''KXwwLHllPXllK01hdGguaW11bChBdCxXdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEF0LHBuKXwwKStNYXRoLmltdWwoaHQsV3QpfDAsRGU9RGUrTWF0aC5pbXVsKGh0LHBuKXwwLHllPXllK01hdGguaW11bCh3dCxOdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKHd0LHNuKXwwKStNYXRoLmlt''@;'; put 'put ''dWwobXQsTnQpfDAsRGU9RGUrTWF0aC5pbXVsKG10LHNuKXwwO3ZhciBWcj0oRisoeWU9eWUrTWF0aC5pbXVsKFFlLHduKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwoUWUsdG4pfDApK01hdGguaW11bCgkZSx3bil8MCkpPDwxMyl8MDtGPSgoRGU9RGUrTWF0aC5pbXVsKCRl''@;'; put 'put ''LHRuKXwwKSsoQ2U+Pj4xMyl8MCkrKFZyPj4+MjYpfDAsVnImPTY3MTA4ODYzLHllPU1hdGguaW11bChHZSxzciksQ2U9KENlPU1hdGguaW11bChHZSxYbikpK01hdGguaW11bChVZSxzcil8MCxEZT1NYXRoLmltdWwoVWUsWG4pLHllPXllK01hdGguaW11bChDdCx4cil8MCxDZT0oQ2U9Q2Ur''@;'; put 'put ''TWF0aC5pbXVsKEN0LHF0KXwwKStNYXRoLmltdWwoZnQseHIpfDAsRGU9RGUrTWF0aC5pbXVsKGZ0LHF0KXwwLHllPXllK01hdGguaW11bChldCxucil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGV0LEFuKXwwKStNYXRoLmltdWwobHQsbnIpfDAsRGU9RGUrTWF0aC5pbXVsKGx0LEFuKXwwLHll''@;'; put 'put ''PXllK01hdGguaW11bChvbixXdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKG9uLHBuKXwwKStNYXRoLmltdWwoX3QsV3QpfDAsRGU9RGUrTWF0aC5pbXVsKF90LHBuKXwwLHllPXllK01hdGguaW11bChBdCxOdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEF0LHNuKXwwKStNYXRoLmltdWwoaHQs''@;'; put 'put ''TnQpfDAsRGU9RGUrTWF0aC5pbXVsKGh0LHNuKXwwLHllPXllK01hdGguaW11bCh3dCx3bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKHd0LHRuKXwwKStNYXRoLmltdWwobXQsd24pfDAsRGU9RGUrTWF0aC5pbXVsKG10LHRuKXwwO3ZhciBpaT0oRisoeWU9eWUrTWF0aC5pbXVsKFFlLFRyKXww''@;'; put 'put ''KXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwoUWUsQm4pfDApK01hdGguaW11bCgkZSxUcil8MCkpPDwxMyl8MDtGPSgoRGU9RGUrTWF0aC5pbXVsKCRlLEJuKXwwKSsoQ2U+Pj4xMyl8MCkrKGlpPj4+MjYpfDAsaWkmPTY3MTA4ODYzLHllPU1hdGguaW11bChqdCxzciksQ2U9KENl''@;'; put 'put ''PU1hdGguaW11bChqdCxYbikpK01hdGguaW11bChKdCxzcil8MCxEZT1NYXRoLmltdWwoSnQsWG4pLHllPXllK01hdGguaW11bChHZSx4cil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEdlLHF0KXwwKStNYXRoLmltdWwoVWUseHIpfDAsRGU9RGUrTWF0aC5pbXVsKFVlLHF0KXwwLHllPXllK01h''@;'; put 'put ''dGguaW11bChDdCxucil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEN0LEFuKXwwKStNYXRoLmltdWwoZnQsbnIpfDAsRGU9RGUrTWF0aC5pbXVsKGZ0LEFuKXwwLHllPXllK01hdGguaW11bChldCxXdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGV0LHBuKXwwKStNYXRoLmltdWwobHQsV3QpfDAs''@;'; put 'put ''RGU9RGUrTWF0aC5pbXVsKGx0LHBuKXwwLHllPXllK01hdGguaW11bChvbixOdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKG9uLHNuKXwwKStNYXRoLmltdWwoX3QsTnQpfDAsRGU9RGUrTWF0aC5pbXVsKF90LHNuKXwwLHllPXllK01hdGguaW11bChBdCx3bil8MCxDZT0oQ2U9Q2UrTWF0aC5p''@;'; put 'put ''bXVsKEF0LHRuKXwwKStNYXRoLmltdWwoaHQsd24pfDAsRGU9RGUrTWF0aC5pbXVsKGh0LHRuKXwwLHllPXllK01hdGguaW11bCh3dCxUcil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKHd0LEJuKXwwKStNYXRoLmltdWwobXQsVHIpfDAsRGU9RGUrTWF0aC5pbXVsKG10LEJuKXwwO3ZhciBScj0o''@;'; put 'put ''RisoeWU9eWUrTWF0aC5pbXVsKFFlLG1uKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwoUWUsdW4pfDApK01hdGguaW11bCgkZSxtbil8MCkpPDwxMyl8MDtGPSgoRGU9RGUrTWF0aC5pbXVsKCRlLHVuKXwwKSsoQ2U+Pj4xMyl8MCkrKFJyPj4+MjYpfDAsUnImPTY3MTA4ODYz''@;'; put 'put ''LHllPU1hdGguaW11bChkbixzciksQ2U9KENlPU1hdGguaW11bChkbixYbikpK01hdGguaW11bCh5bixzcil8MCxEZT1NYXRoLmltdWwoeW4sWG4pLHllPXllK01hdGguaW11bChqdCx4cil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGp0LHF0KXwwKStNYXRoLmltdWwoSnQseHIpfDAsRGU9RGUr''@;'; put 'put ''TWF0aC5pbXVsKEp0LHF0KXwwLHllPXllK01hdGguaW11bChHZSxucil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEdlLEFuKXwwKStNYXRoLmltdWwoVWUsbnIpfDAsRGU9RGUrTWF0aC5pbXVsKFVlLEFuKXwwLHllPXllK01hdGguaW11bChDdCxXdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEN0''@;'; put 'put ''LHBuKXwwKStNYXRoLmltdWwoZnQsV3QpfDAsRGU9RGUrTWF0aC5pbXVsKGZ0LHBuKXwwLHllPXllK01hdGguaW11bChldCxOdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGV0LHNuKXwwKStNYXRoLmltdWwobHQsTnQpfDAsRGU9RGUrTWF0aC5pbXVsKGx0LHNuKXwwLHllPXllK01hdGguaW11''@;'; put 'put ''bChvbix3bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKG9uLHRuKXwwKStNYXRoLmltdWwoX3Qsd24pfDAsRGU9RGUrTWF0aC5pbXVsKF90LHRuKXwwLHllPXllK01hdGguaW11bChBdCxUcil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEF0LEJuKXwwKStNYXRoLmltdWwoaHQsVHIpfDAsRGU9RGUr''@;'; put 'put ''TWF0aC5pbXVsKGh0LEJuKXwwLHllPXllK01hdGguaW11bCh3dCxtbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKHd0LHVuKXwwKStNYXRoLmltdWwobXQsbW4pfDAsRGU9RGUrTWF0aC5pbXVsKG10LHVuKXwwO3ZhciBsaT0oRisoeWU9eWUrTWF0aC5pbXVsKFFlLF9uKXwwKXwwKSsoKDgxOTEm''@;'; put 'put ''KENlPShDZT1DZStNYXRoLmltdWwoUWUsR3QpfDApK01hdGguaW11bCgkZSxfbil8MCkpPDwxMyl8MDtGPSgoRGU9RGUrTWF0aC5pbXVsKCRlLEd0KXwwKSsoQ2U+Pj4xMyl8MCkrKGxpPj4+MjYpfDAsbGkmPTY3MTA4ODYzLHllPU1hdGguaW11bChObixzciksQ2U9KENlPU1hdGguaW11bChO''@;'; put 'put ''bixYbikpK01hdGguaW11bChibixzcil8MCxEZT1NYXRoLmltdWwoYm4sWG4pLHllPXllK01hdGguaW11bChkbix4cil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGRuLHF0KXwwKStNYXRoLmltdWwoeW4seHIpfDAsRGU9RGUrTWF0aC5pbXVsKHluLHF0KXwwLHllPXllK01hdGguaW11bChqdCxu''@;'; put 'put ''cil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGp0LEFuKXwwKStNYXRoLmltdWwoSnQsbnIpfDAsRGU9RGUrTWF0aC5pbXVsKEp0LEFuKXwwLHllPXllK01hdGguaW11bChHZSxXdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEdlLHBuKXwwKStNYXRoLmltdWwoVWUsV3QpfDAsRGU9RGUrTWF0aC5p''@;'; put 'put ''bXVsKFVlLHBuKXwwLHllPXllK01hdGguaW11bChDdCxOdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEN0LHNuKXwwKStNYXRoLmltdWwoZnQsTnQpfDAsRGU9RGUrTWF0aC5pbXVsKGZ0LHNuKXwwLHllPXllK01hdGguaW11bChldCx3bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGV0LHRuKXww''@;'; put 'put ''KStNYXRoLmltdWwobHQsd24pfDAsRGU9RGUrTWF0aC5pbXVsKGx0LHRuKXwwLHllPXllK01hdGguaW11bChvbixUcil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKG9uLEJuKXwwKStNYXRoLmltdWwoX3QsVHIpfDAsRGU9RGUrTWF0aC5pbXVsKF90LEJuKXwwLHllPXllK01hdGguaW11bChBdCxt''@;'; put 'put ''bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEF0LHVuKXwwKStNYXRoLmltdWwoaHQsbW4pfDAsRGU9RGUrTWF0aC5pbXVsKGh0LHVuKXwwLHllPXllK01hdGguaW11bCh3dCxfbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKHd0LEd0KXwwKStNYXRoLmltdWwobXQsX24pfDAsRGU9RGUrTWF0aC5p''@;'; put 'put ''bXVsKG10LEd0KXwwO3ZhciBNaT0oRisoeWU9eWUrTWF0aC5pbXVsKFFlLFZuKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwoUWUsZW4pfDApK01hdGguaW11bCgkZSxWbil8MCkpPDwxMyl8MDtGPSgoRGU9RGUrTWF0aC5pbXVsKCRlLGVuKXwwKSsoQ2U+Pj4xMyl8MCkrKE1p''@;'; put 'put ''Pj4+MjYpfDAsTWkmPTY3MTA4ODYzLHllPU1hdGguaW11bChObix4ciksQ2U9KENlPU1hdGguaW11bChObixxdCkpK01hdGguaW11bChibix4cil8MCxEZT1NYXRoLmltdWwoYm4scXQpLHllPXllK01hdGguaW11bChkbixucil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGRuLEFuKXwwKStNYXRo''@;'; put 'put ''LmltdWwoeW4sbnIpfDAsRGU9RGUrTWF0aC5pbXVsKHluLEFuKXwwLHllPXllK01hdGguaW11bChqdCxXdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGp0LHBuKXwwKStNYXRoLmltdWwoSnQsV3QpfDAsRGU9RGUrTWF0aC5pbXVsKEp0LHBuKXwwLHllPXllK01hdGguaW11bChHZSxOdCl8MCxD''@;'; put 'put ''ZT0oQ2U9Q2UrTWF0aC5pbXVsKEdlLHNuKXwwKStNYXRoLmltdWwoVWUsTnQpfDAsRGU9RGUrTWF0aC5pbXVsKFVlLHNuKXwwLHllPXllK01hdGguaW11bChDdCx3bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEN0LHRuKXwwKStNYXRoLmltdWwoZnQsd24pfDAsRGU9RGUrTWF0aC5pbXVsKGZ0''@;'; put 'put ''LHRuKXwwLHllPXllK01hdGguaW11bChldCxUcil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGV0LEJuKXwwKStNYXRoLmltdWwobHQsVHIpfDAsRGU9RGUrTWF0aC5pbXVsKGx0LEJuKXwwLHllPXllK01hdGguaW11bChvbixtbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKG9uLHVuKXwwKStNYXRo''@;'; put 'put ''LmltdWwoX3QsbW4pfDAsRGU9RGUrTWF0aC5pbXVsKF90LHVuKXwwLHllPXllK01hdGguaW11bChBdCxfbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEF0LEd0KXwwKStNYXRoLmltdWwoaHQsX24pfDAsRGU9RGUrTWF0aC5pbXVsKGh0LEd0KXwwO3ZhciBvMD0oRisoeWU9eWUrTWF0aC5pbXVs''@;'; put 'put ''KHd0LFZuKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwod3QsZW4pfDApK01hdGguaW11bChtdCxWbil8MCkpPDwxMyl8MDtGPSgoRGU9RGUrTWF0aC5pbXVsKG10LGVuKXwwKSsoQ2U+Pj4xMyl8MCkrKG8wPj4+MjYpfDAsbzAmPTY3MTA4ODYzLHllPU1hdGguaW11bChObixu''@;'; put 'put ''ciksQ2U9KENlPU1hdGguaW11bChObixBbikpK01hdGguaW11bChibixucil8MCxEZT1NYXRoLmltdWwoYm4sQW4pLHllPXllK01hdGguaW11bChkbixXdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGRuLHBuKXwwKStNYXRoLmltdWwoeW4sV3QpfDAsRGU9RGUrTWF0aC5pbXVsKHluLHBuKXww''@;'; put 'put ''LHllPXllK01hdGguaW11bChqdCxOdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGp0LHNuKXwwKStNYXRoLmltdWwoSnQsTnQpfDAsRGU9RGUrTWF0aC5pbXVsKEp0LHNuKXwwLHllPXllK01hdGguaW11bChHZSx3bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEdlLHRuKXwwKStNYXRoLmltdWwo''@;'; put 'put ''VWUsd24pfDAsRGU9RGUrTWF0aC5pbXVsKFVlLHRuKXwwLHllPXllK01hdGguaW11bChDdCxUcil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEN0LEJuKXwwKStNYXRoLmltdWwoZnQsVHIpfDAsRGU9RGUrTWF0aC5pbXVsKGZ0LEJuKXwwLHllPXllK01hdGguaW11bChldCxtbil8MCxDZT0oQ2U9''@;'; put 'put ''Q2UrTWF0aC5pbXVsKGV0LHVuKXwwKStNYXRoLmltdWwobHQsbW4pfDAsRGU9RGUrTWF0aC5pbXVsKGx0LHVuKXwwLHllPXllK01hdGguaW11bChvbixfbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKG9uLEd0KXwwKStNYXRoLmltdWwoX3QsX24pfDAsRGU9RGUrTWF0aC5pbXVsKF90LEd0KXww''@;'; put 'put ''O3ZhciBuMD0oRisoeWU9eWUrTWF0aC5pbXVsKEF0LFZuKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwoQXQsZW4pfDApK01hdGguaW11bChodCxWbil8MCkpPDwxMyl8MDtGPSgoRGU9RGUrTWF0aC5pbXVsKGh0LGVuKXwwKSsoQ2U+Pj4xMyl8MCkrKG4wPj4+MjYpfDAsbjAm''@;'; put 'put ''PTY3MTA4ODYzLHllPU1hdGguaW11bChObixXdCksQ2U9KENlPU1hdGguaW11bChObixwbikpK01hdGguaW11bChibixXdCl8MCxEZT1NYXRoLmltdWwoYm4scG4pLHllPXllK01hdGguaW11bChkbixOdCl8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGRuLHNuKXwwKStNYXRoLmltdWwoeW4sTnQp''@;'; put 'put ''fDAsRGU9RGUrTWF0aC5pbXVsKHluLHNuKXwwLHllPXllK01hdGguaW11bChqdCx3bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGp0LHRuKXwwKStNYXRoLmltdWwoSnQsd24pfDAsRGU9RGUrTWF0aC5pbXVsKEp0LHRuKXwwLHllPXllK01hdGguaW11bChHZSxUcil8MCxDZT0oQ2U9Q2UrTWF0''@;'; put 'put ''aC5pbXVsKEdlLEJuKXwwKStNYXRoLmltdWwoVWUsVHIpfDAsRGU9RGUrTWF0aC5pbXVsKFVlLEJuKXwwLHllPXllK01hdGguaW11bChDdCxtbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEN0LHVuKXwwKStNYXRoLmltdWwoZnQsbW4pfDAsRGU9RGUrTWF0aC5pbXVsKGZ0LHVuKXwwLHllPXll''@;'; put 'put ''K01hdGguaW11bChldCxfbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGV0LEd0KXwwKStNYXRoLmltdWwobHQsX24pfDAsRGU9RGUrTWF0aC5pbXVsKGx0LEd0KXwwO3ZhciBkMD0oRisoeWU9eWUrTWF0aC5pbXVsKG9uLFZuKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwob24s''@;'; put 'put ''ZW4pfDApK01hdGguaW11bChfdCxWbil8MCkpPDwxMyl8MDtGPSgoRGU9RGUrTWF0aC5pbXVsKF90LGVuKXwwKSsoQ2U+Pj4xMyl8MCkrKGQwPj4+MjYpfDAsZDAmPTY3MTA4ODYzLHllPU1hdGguaW11bChObixOdCksQ2U9KENlPU1hdGguaW11bChObixzbikpK01hdGguaW11bChibixOdCl8''@;'; put 'put ''MCxEZT1NYXRoLmltdWwoYm4sc24pLHllPXllK01hdGguaW11bChkbix3bil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGRuLHRuKXwwKStNYXRoLmltdWwoeW4sd24pfDAsRGU9RGUrTWF0aC5pbXVsKHluLHRuKXwwLHllPXllK01hdGguaW11bChqdCxUcil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVs''@;'; put 'put ''KGp0LEJuKXwwKStNYXRoLmltdWwoSnQsVHIpfDAsRGU9RGUrTWF0aC5pbXVsKEp0LEJuKXwwLHllPXllK01hdGguaW11bChHZSxtbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEdlLHVuKXwwKStNYXRoLmltdWwoVWUsbW4pfDAsRGU9RGUrTWF0aC5pbXVsKFVlLHVuKXwwLHllPXllK01hdGgu''@;'; put 'put ''aW11bChDdCxfbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEN0LEd0KXwwKStNYXRoLmltdWwoZnQsX24pfDAsRGU9RGUrTWF0aC5pbXVsKGZ0LEd0KXwwO3ZhciBtMD0oRisoeWU9eWUrTWF0aC5pbXVsKGV0LFZuKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwoZXQsZW4pfDAp''@;'; put 'put ''K01hdGguaW11bChsdCxWbil8MCkpPDwxMyl8MDtGPSgoRGU9RGUrTWF0aC5pbXVsKGx0LGVuKXwwKSsoQ2U+Pj4xMyl8MCkrKG0wPj4+MjYpfDAsbTAmPTY3MTA4ODYzLHllPU1hdGguaW11bChObix3biksQ2U9KENlPU1hdGguaW11bChObix0bikpK01hdGguaW11bChibix3bil8MCxEZT1N''@;'; put 'put ''YXRoLmltdWwoYm4sdG4pLHllPXllK01hdGguaW11bChkbixUcil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGRuLEJuKXwwKStNYXRoLmltdWwoeW4sVHIpfDAsRGU9RGUrTWF0aC5pbXVsKHluLEJuKXwwLHllPXllK01hdGguaW11bChqdCxtbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGp0LHVu''@;'; put 'put ''KXwwKStNYXRoLmltdWwoSnQsbW4pfDAsRGU9RGUrTWF0aC5pbXVsKEp0LHVuKXwwLHllPXllK01hdGguaW11bChHZSxfbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKEdlLEd0KXwwKStNYXRoLmltdWwoVWUsX24pfDAsRGU9RGUrTWF0aC5pbXVsKFVlLEd0KXwwO3ZhciBHMD0oRisoeWU9eWUr''@;'; put 'put ''TWF0aC5pbXVsKEN0LFZuKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwoQ3QsZW4pfDApK01hdGguaW11bChmdCxWbil8MCkpPDwxMyl8MDtGPSgoRGU9RGUrTWF0aC5pbXVsKGZ0LGVuKXwwKSsoQ2U+Pj4xMyl8MCkrKEcwPj4+MjYpfDAsRzAmPTY3MTA4ODYzLHllPU1hdGgu''@;'; put 'put ''aW11bChObixUciksQ2U9KENlPU1hdGguaW11bChObixCbikpK01hdGguaW11bChibixUcil8MCxEZT1NYXRoLmltdWwoYm4sQm4pLHllPXllK01hdGguaW11bChkbixtbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGRuLHVuKXwwKStNYXRoLmltdWwoeW4sbW4pfDAsRGU9RGUrTWF0aC5pbXVs''@;'; put 'put ''KHluLHVuKXwwLHllPXllK01hdGguaW11bChqdCxfbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGp0LEd0KXwwKStNYXRoLmltdWwoSnQsX24pfDAsRGU9RGUrTWF0aC5pbXVsKEp0LEd0KXwwO3ZhciBEaT0oRisoeWU9eWUrTWF0aC5pbXVsKEdlLFZuKXwwKXwwKSsoKDgxOTEmKENlPShDZT1D''@;'; put 'put ''ZStNYXRoLmltdWwoR2UsZW4pfDApK01hdGguaW11bChVZSxWbil8MCkpPDwxMyl8MDtGPSgoRGU9RGUrTWF0aC5pbXVsKFVlLGVuKXwwKSsoQ2U+Pj4xMyl8MCkrKERpPj4+MjYpfDAsRGkmPTY3MTA4ODYzLHllPU1hdGguaW11bChObixtbiksQ2U9KENlPU1hdGguaW11bChObix1bikpK01h''@;'; put 'put ''dGguaW11bChibixtbil8MCxEZT1NYXRoLmltdWwoYm4sdW4pLHllPXllK01hdGguaW11bChkbixfbil8MCxDZT0oQ2U9Q2UrTWF0aC5pbXVsKGRuLEd0KXwwKStNYXRoLmltdWwoeW4sX24pfDAsRGU9RGUrTWF0aC5pbXVsKHluLEd0KXwwO3ZhciBXMD0oRisoeWU9eWUrTWF0aC5pbXVsKGp0''@;'; put 'put ''LFZuKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwoanQsZW4pfDApK01hdGguaW11bChKdCxWbil8MCkpPDwxMyl8MDtGPSgoRGU9RGUrTWF0aC5pbXVsKEp0LGVuKXwwKSsoQ2U+Pj4xMyl8MCkrKFcwPj4+MjYpfDAsVzAmPTY3MTA4ODYzLHllPU1hdGguaW11bChObixfbiks''@;'; put 'put ''Q2U9KENlPU1hdGguaW11bChObixHdCkpK01hdGguaW11bChibixfbil8MCxEZT1NYXRoLmltdWwoYm4sR3QpO3ZhciBFbz0oRisoeWU9eWUrTWF0aC5pbXVsKGRuLFZuKXwwKXwwKSsoKDgxOTEmKENlPShDZT1DZStNYXRoLmltdWwoZG4sZW4pfDApK01hdGguaW11bCh5bixWbil8MCkpPDwx''@;'; put 'put ''Myl8MDtGPSgoRGU9RGUrTWF0aC5pbXVsKHluLGVuKXwwKSsoQ2U+Pj4xMyl8MCkrKEVvPj4+MjYpfDAsRW8mPTY3MTA4ODYzO3ZhciBxbz0oRisoeWU9TWF0aC5pbXVsKE5uLFZuKSl8MCkrKCg4MTkxJihDZT0oQ2U9TWF0aC5pbXVsKE5uLGVuKSkrTWF0aC5pbXVsKGJuLFZuKXwwKSk8PDEz''@;'; put 'put ''KXwwO3JldHVybiBGPSgoRGU9TWF0aC5pbXVsKGJuLGVuKSkrKENlPj4+MTMpfDApKyhxbz4+PjI2KXwwLHFvJj02NzEwODg2MyxTWzBdPUluLFNbMV09Sm4sU1syXT1vcixTWzNdPWdyLFNbNF09S3IsU1s1XT1WcixTWzZdPWlpLFNbN109UnIsU1s4XT1saSxTWzldPU1pLFNbMTBdPW8wLFNb''@;'; put 'put ''MTFdPW4wLFNbMTJdPWQwLFNbMTNdPW0wLFNbMTRdPUcwLFNbMTVdPURpLFNbMTZdPVcwLFNbMTddPUVvLFNbMThdPXFvLDAhPT1GJiYoU1sxOV09RixQLmxlbmd0aCsrKSxQfTtmdW5jdGlvbiBkZShlZSxuZSx4KXt4Lm5lZ2F0aXZlPW5lLm5lZ2F0aXZlXmVlLm5lZ2F0aXZlLHgubGVuZ3Ro''@;'; put 'put ''PWVlLmxlbmd0aCtuZS5sZW5ndGg7Zm9yKHZhciBQPTAsVj0wLFQ9MDtUPHgubGVuZ3RoLTE7VCsrKXt2YXIgUz1WO1Y9MDtmb3IodmFyIEY9NjcxMDg4NjMmUCx5ZT1NYXRoLm1pbihULG5lLmxlbmd0aC0xKSxDZT1NYXRoLm1heCgwLFQtZWUubGVuZ3RoKzEpO0NlPD15ZTtDZSsrKXt2YXIg''@;'; put 'put ''JGU9KDB8ZWUud29yZHNbVC1DZV0pKigwfG5lLndvcmRzW0NlXSksZ3Q9NjcxMDg4NjMmJGU7Rj02NzEwODg2MyYoZ3Q9Z3QrRnwwKSxWKz0oUz0oUz1TKygkZS82NzEwODg2NHwwKXwwKSsoZ3Q+Pj4yNil8MCk+Pj4yNixTJj02NzEwODg2M314LndvcmRzW1RdPUYsUD1TLFM9Vn1yZXR1cm4g''@;'; put 'put ''MCE9PVA/eC53b3Jkc1tUXT1QOngubGVuZ3RoLS0seC5fc3RyaXAoKX1mdW5jdGlvbiB2ZShlZSxuZSx4KXtyZXR1cm4gZGUoZWUsbmUseCl9ZnVuY3Rpb24gQWUoZWUsbmUpe3RoaXMueD1lZSx0aGlzLnk9bmV9TWF0aC5pbXVsfHwoY2U9b2UpLFUucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9u''@;'; put 'put ''KG5lLHgpe3ZhciBWPXRoaXMubGVuZ3RoK25lLmxlbmd0aDtyZXR1cm4gMTA9PT10aGlzLmxlbmd0aCYmMTA9PT1uZS5sZW5ndGg/Y2UodGhpcyxuZSx4KTpWPDYzP29lKHRoaXMsbmUseCk6VjwxMDI0P2RlKHRoaXMsbmUseCk6dmUodGhpcyxuZSx4KX0sQWUucHJvdG90eXBlLm1ha2VSQlQ9''@;'; put 'put ''ZnVuY3Rpb24obmUpe2Zvcih2YXIgeD1uZXcgQXJyYXkobmUpLFA9VS5wcm90b3R5cGUuX2NvdW50Qml0cyhuZSktMSxWPTA7VjxuZTtWKyspeFtWXT10aGlzLnJldkJpbihWLFAsbmUpO3JldHVybiB4fSxBZS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKG5lLHgsUCl7aWYoMD09PW5lfHxu''@;'; put 'put ''ZT09PVAtMSlyZXR1cm4gbmU7Zm9yKHZhciBWPTAsVD0wO1Q8eDtUKyspVnw9KDEmbmUpPDx4LVQtMSxuZT4+PTE7cmV0dXJuIFZ9LEFlLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKG5lLHgsUCxWLFQsUyl7Zm9yKHZhciBGPTA7RjxTO0YrKylWW0ZdPXhbbmVbRl1dLFRbRl09UFtuZVtG''@;'; put 'put ''XV19LEFlLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24obmUseCxQLFYsVCxTKXt0aGlzLnBlcm11dGUoUyxuZSx4LFAsVixUKTtmb3IodmFyIEY9MTtGPFQ7Rjw8PTEpZm9yKHZhciB5ZT1GPDwxLENlPU1hdGguY29zKDIqTWF0aC5QSS95ZSksRGU9TWF0aC5zaW4oMipNYXRoLlBJL3ll''@;'; put 'put ''KSxQZT0wO1BlPFQ7UGUrPXllKWZvcih2YXIgUWU9Q2UsJGU9RGUsZ3Q9MDtndDxGO2d0Kyspe3ZhciB3dD1QW1BlK2d0XSxtdD1WW1BlK2d0XSx2dD1QW1BlK2d0K0ZdLEF0PVZbUGUrZ3QrRl0saHQ9UWUqdnQtJGUqQXQ7QXQ9UWUqQXQrJGUqdnQsUFtQZStndF09d3QrKHZ0PWh0KSxWW1Bl''@;'; put 'put ''K2d0XT1tdCtBdCxQW1BlK2d0K0ZdPXd0LXZ0LFZbUGUrZ3QrRl09bXQtQXQsZ3QhPT15ZSYmKGh0PUNlKlFlLURlKiRlLCRlPUNlKiRlK0RlKlFlLFFlPWh0KX19LEFlLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbihuZSx4KXt2YXIgUD0xfE1hdGgubWF4KHgsbmUpLFY9MSZQLFQ9''@;'; put 'put ''MDtmb3IoUD1QLzJ8MDtQO1A+Pj49MSlUKys7cmV0dXJuIDE8PFQrMStWfSxBZS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKG5lLHgsUCl7aWYoIShQPD0xKSlmb3IodmFyIFY9MDtWPFAvMjtWKyspe3ZhciBUPW5lW1ZdO25lW1ZdPW5lW1AtVi0xXSxuZVtQLVYtMV09VCxUPXhbVl0s''@;'; put 'put ''eFtWXT0teFtQLVYtMV0seFtQLVYtMV09LVR9fSxBZS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKG5lLHgpe2Zvcih2YXIgUD0wLFY9MDtWPHgvMjtWKyspe3ZhciBUPTgxOTIqTWF0aC5yb3VuZChuZVsyKlYrMV0veCkrTWF0aC5yb3VuZChuZVsyKlZdL3gpK1A7bmVbVl09Njcx''@;'; put 'put ''MDg4NjMmVCxQPVQ8NjcxMDg4NjQ/MDpULzY3MTA4ODY0fDB9cmV0dXJuIG5lfSxBZS5wcm90b3R5cGUuY29udmVydDEzYj1mdW5jdGlvbihuZSx4LFAsVil7Zm9yKHZhciBUPTAsUz0wO1M8eDtTKyspUFsyKlNdPTgxOTEmKFQrPTB8bmVbU10pLFBbMipTKzFdPTgxOTEmKFQ+Pj49MTMpLFQ+''@;'; put 'put ''Pj49MTM7Zm9yKFM9Mip4O1M8VjsrK1MpUFtTXT0wO0UoMD09PVQpLEUoMD09KC04MTkyJlQpKX0sQWUucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24obmUpe2Zvcih2YXIgeD1uZXcgQXJyYXkobmUpLFA9MDtQPG5lO1ArKyl4W1BdPTA7cmV0dXJuIHh9LEFlLnByb3RvdHlwZS5tdWxwPWZ1bmN0''@;'; put 'put ''aW9uKG5lLHgsUCl7dmFyIFY9Mip0aGlzLmd1ZXNzTGVuMTNiKG5lLmxlbmd0aCx4Lmxlbmd0aCksVD10aGlzLm1ha2VSQlQoViksUz10aGlzLnN0dWIoViksRj1uZXcgQXJyYXkoVikseWU9bmV3IEFycmF5KFYpLENlPW5ldyBBcnJheShWKSxEZT1uZXcgQXJyYXkoViksUGU9bmV3IEFycmF5''@;'; put 'put ''KFYpLFFlPW5ldyBBcnJheShWKSwkZT1QLndvcmRzOyRlLmxlbmd0aD1WLHRoaXMuY29udmVydDEzYihuZS53b3JkcyxuZS5sZW5ndGgsRixWKSx0aGlzLmNvbnZlcnQxM2IoeC53b3Jkcyx4Lmxlbmd0aCxEZSxWKSx0aGlzLnRyYW5zZm9ybShGLFMseWUsQ2UsVixUKSx0aGlzLnRyYW5zZm9y''@;'; put 'put ''bShEZSxTLFBlLFFlLFYsVCk7Zm9yKHZhciBndD0wO2d0PFY7Z3QrKyl7dmFyIHd0PXllW2d0XSpQZVtndF0tQ2VbZ3RdKlFlW2d0XTtDZVtndF09eWVbZ3RdKlFlW2d0XStDZVtndF0qUGVbZ3RdLHllW2d0XT13dH1yZXR1cm4gdGhpcy5jb25qdWdhdGUoeWUsQ2UsViksdGhpcy50cmFuc2Zv''@;'; put 'put ''cm0oeWUsQ2UsJGUsUyxWLFQpLHRoaXMuY29uanVnYXRlKCRlLFMsViksdGhpcy5ub3JtYWxpemUxM2IoJGUsViksUC5uZWdhdGl2ZT1uZS5uZWdhdGl2ZV54Lm5lZ2F0aXZlLFAubGVuZ3RoPW5lLmxlbmd0aCt4Lmxlbmd0aCxQLl9zdHJpcCgpfSxVLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24o''@;'; put 'put ''bmUpe3ZhciB4PW5ldyBVKG51bGwpO3JldHVybiB4LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtuZS5sZW5ndGgpLHRoaXMubXVsVG8obmUseCl9LFUucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24obmUpe3ZhciB4PW5ldyBVKG51bGwpO3JldHVybiB4LndvcmRzPW5ldyBBcnJheSh0aGlz''@;'; put 'put ''Lmxlbmd0aCtuZS5sZW5ndGgpLHZlKHRoaXMsbmUseCl9LFUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24obmUpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8obmUsdGhpcyl9LFUucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKG5lKXt2YXIgeD1uZTwwO3gmJihuZT0tbmUpLEUoIm51bWJlciI9''@;'; put 'put ''PXR5cGVvZiBuZSksRShuZTw2NzEwODg2NCk7Zm9yKHZhciBQPTAsVj0wO1Y8dGhpcy5sZW5ndGg7VisrKXt2YXIgVD0oMHx0aGlzLndvcmRzW1ZdKSpuZSxTPSg2NzEwODg2MyZUKSsoNjcxMDg4NjMmUCk7UD4+PTI2LFArPVQvNjcxMDg4NjR8MCxQKz1TPj4+MjYsdGhpcy53b3Jkc1tWXT02''@;'; put 'put ''NzEwODg2MyZTfXJldHVybiAwIT09UCYmKHRoaXMud29yZHNbVl09UCx0aGlzLmxlbmd0aCsrKSx4P3RoaXMuaW5lZygpOnRoaXN9LFUucHJvdG90eXBlLm11bG49ZnVuY3Rpb24obmUpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4obmUpfSxVLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5tdWwodGhpcyl9LFUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9LFUucHJvdG90eXBlLnBvdz1mdW5jdGlvbihuZSl7dmFyIHg9ZnVuY3Rpb24gc2UoZWUpe2Zvcih2YXIgbmU9bmV3IEFycmF5KGVlLmJpdExlbmd0''@;'; put 'put ''aCgpKSx4PTA7eDxuZS5sZW5ndGg7eCsrKW5lW3hdPWVlLndvcmRzW3gvMjZ8MF0+Pj54JTI2JjE7cmV0dXJuIG5lfShuZSk7aWYoMD09PXgubGVuZ3RoKXJldHVybiBuZXcgVSgxKTtmb3IodmFyIFA9dGhpcyxWPTA7Vjx4Lmxlbmd0aCYmMD09PXhbVl07VisrLFA9UC5zcXIoKSk7aWYoKytW''@;'; put 'put ''PHgubGVuZ3RoKWZvcih2YXIgVD1QLnNxcigpO1Y8eC5sZW5ndGg7VisrLFQ9VC5zcXIoKSkwIT09eFtWXSYmKFA9UC5tdWwoVCkpO3JldHVybiBQfSxVLnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24obmUpe0UoIm51bWJlciI9PXR5cGVvZiBuZSYmbmU+PTApO3ZhciBULHg9bmUlMjYsUD0o''@;'; put 'put ''bmUteCkvMjYsVj02NzEwODg2Mz4+PjI2LXg8PDI2LXg7aWYoMCE9PXgpe3ZhciBTPTA7Zm9yKFQ9MDtUPHRoaXMubGVuZ3RoO1QrKyl7dmFyIEY9dGhpcy53b3Jkc1tUXSZWO3RoaXMud29yZHNbVF09KDB8dGhpcy53b3Jkc1tUXSktRjw8eHxTLFM9Rj4+PjI2LXh9UyYmKHRoaXMud29yZHNb''@;'; put 'put ''VF09Uyx0aGlzLmxlbmd0aCsrKX1pZigwIT09UCl7Zm9yKFQ9dGhpcy5sZW5ndGgtMTtUPj0wO1QtLSl0aGlzLndvcmRzW1QrUF09dGhpcy53b3Jkc1tUXTtmb3IoVD0wO1Q8UDtUKyspdGhpcy53b3Jkc1tUXT0wO3RoaXMubGVuZ3RoKz1QfXJldHVybiB0aGlzLl9zdHJpcCgpfSxVLnByb3Rv''@;'; put 'put ''dHlwZS5pc2hsbj1mdW5jdGlvbihuZSl7cmV0dXJuIEUoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKG5lKX0sVS5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKG5lLHgsUCl7dmFyIFY7RSgibnVtYmVyIj09dHlwZW9mIG5lJiZuZT49MCksVj14Pyh4LXglMjYpLzI2OjA7dmFyIFQ9''@;'; put 'put ''bmUlMjYsUz1NYXRoLm1pbigobmUtVCkvMjYsdGhpcy5sZW5ndGgpLEY9NjcxMDg4NjNeNjcxMDg4NjM+Pj5UPDxULHllPVA7aWYoVi09UyxWPU1hdGgubWF4KDAsVikseWUpe2Zvcih2YXIgQ2U9MDtDZTxTO0NlKyspeWUud29yZHNbQ2VdPXRoaXMud29yZHNbQ2VdO3llLmxlbmd0aD1TfWlm''@;'; put 'put ''KDAhPT1TKWlmKHRoaXMubGVuZ3RoPlMpZm9yKHRoaXMubGVuZ3RoLT1TLENlPTA7Q2U8dGhpcy5sZW5ndGg7Q2UrKyl0aGlzLndvcmRzW0NlXT10aGlzLndvcmRzW0NlK1NdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIERlPTA7Zm9yKENlPXRoaXMubGVuZ3RoLTE7''@;'; put 'put ''Q2U+PTAmJigwIT09RGV8fENlPj1WKTtDZS0tKXt2YXIgUGU9MHx0aGlzLndvcmRzW0NlXTt0aGlzLndvcmRzW0NlXT1EZTw8MjYtVHxQZT4+PlQsRGU9UGUmRn1yZXR1cm4geWUmJjAhPT1EZSYmKHllLndvcmRzW3llLmxlbmd0aCsrXT1EZSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jk''@;'; put 'put ''c1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuX3N0cmlwKCl9LFUucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKG5lLHgsUCl7cmV0dXJuIEUoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKG5lLHgsUCl9LFUucHJvdG90eXBlLnNobG49ZnVuY3Rpb24obmUpe3JldHVybiB0aGlzLmNs''@;'; put 'put ''b25lKCkuaXNobG4obmUpfSxVLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbihuZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4obmUpfSxVLnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKG5lKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKG5lKX0sVS5wcm90b3R5cGUudXNocm49ZnVuY3Rp''@;'; put 'put ''b24obmUpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKG5lKX0sVS5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24obmUpe0UoIm51bWJlciI9PXR5cGVvZiBuZSYmbmU+PTApO3ZhciB4PW5lJTI2LFA9KG5lLXgpLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PVB8fCEodGhpcy53b3Jkc1tQXSYx''@;'; put 'put ''PDx4KSl9LFUucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbihuZSl7RSgibnVtYmVyIj09dHlwZW9mIG5lJiZuZT49MCk7dmFyIHg9bmUlMjYsUD0obmUteCkvMjY7cmV0dXJuIEUoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRo''@;'; put 'put ''aXMubGVuZ3RoPD1QP3RoaXM6KDAhPT14JiZQKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oUCx0aGlzLmxlbmd0aCksMCE9PXgmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+Png8PHgpLHRoaXMuX3N0cmlwKCkpfSxVLnByb3RvdHlwZS5tYXNrbj1mdW5j''@;'; put 'put ''dGlvbihuZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24obmUpfSxVLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbihuZSl7cmV0dXJuIEUoIm51bWJlciI9PXR5cGVvZiBuZSksRShuZTw2NzEwODg2NCksbmU8MD90aGlzLmlzdWJuKC1uZSk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMu''@;'; put 'put ''bGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTw9bmU/KHRoaXMud29yZHNbMF09bmUtKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3VibihuZSksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKG5lKX0sVS5wcm90''@;'; put 'put ''b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKG5lKXt0aGlzLndvcmRzWzBdKz1uZTtmb3IodmFyIHg9MDt4PHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW3hdPj02NzEwODg2NDt4KyspdGhpcy53b3Jkc1t4XS09NjcxMDg4NjQseD09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1t4KzFdPTE6dGhpcy53''@;'; put 'put ''b3Jkc1t4KzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLHgrMSksdGhpc30sVS5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24obmUpe2lmKEUoIm51bWJlciI9PXR5cGVvZiBuZSksRShuZTw2NzEwODg2NCksbmU8MClyZXR1cm4gdGhpcy5pYWRkbigtbmUpO2lm''@;'; put 'put ''KDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbihuZSksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09bmUsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlz''@;'; put 'put ''Lm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIHg9MDt4PHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW3hdPDA7eCsrKXRoaXMud29yZHNbeF0rPTY3MTA4ODY0LHRoaXMud29yZHNbeCsxXS09MTtyZXR1cm4gdGhpcy5fc3RyaXAoKX0sVS5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbihuZSl7cmV0dXJu''@;'; put 'put ''IHRoaXMuY2xvbmUoKS5pYWRkbihuZSl9LFUucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24obmUpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4obmUpfSxVLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxVLnByb3RvdHlwZS5hYnM9ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sVS5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKG5lLHgsUCl7dmFyIFQ7dGhpcy5fZXhwYW5kKG5lLmxlbmd0aCtQKTt2YXIgUyxGPTA7Zm9yKFQ9MDtUPG5lLmxlbmd0aDtUKyspe1M9KDB8dGhpcy53b3Jkc1tUK1BdKStG''@;'; put 'put ''O3ZhciB5ZT0oMHxuZS53b3Jkc1tUXSkqeDtGPSgoUy09NjcxMDg4NjMmeWUpPj4yNiktKHllLzY3MTA4ODY0fDApLHRoaXMud29yZHNbVCtQXT02NzEwODg2MyZTfWZvcig7VDx0aGlzLmxlbmd0aC1QO1QrKylGPShTPSgwfHRoaXMud29yZHNbVCtQXSkrRik+PjI2LHRoaXMud29yZHNbVCtQ''@;'; put 'put ''XT02NzEwODg2MyZTO2lmKDA9PT1GKXJldHVybiB0aGlzLl9zdHJpcCgpO2ZvcihFKC0xPT09RiksRj0wLFQ9MDtUPHRoaXMubGVuZ3RoO1QrKylGPShTPS0oMHx0aGlzLndvcmRzW1RdKStGKT4+MjYsdGhpcy53b3Jkc1tUXT02NzEwODg2MyZTO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhp''@;'; put 'put ''cy5fc3RyaXAoKX0sVS5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24obmUseCl7dmFyIFAsVj10aGlzLmNsb25lKCksVD1uZSxTPTB8VC53b3Jkc1tULmxlbmd0aC0xXTswIT0oUD0yNi10aGlzLl9jb3VudEJpdHMoUykpJiYoVD1ULnVzaGxuKFApLFYuaXVzaGxuKFApLFM9MHxULndvcmRz''@;'; put 'put ''W1QubGVuZ3RoLTFdKTt2YXIgQ2UseWU9Vi5sZW5ndGgtVC5sZW5ndGg7aWYoIm1vZCIhPT14KXsoQ2U9bmV3IFUobnVsbCkpLmxlbmd0aD15ZSsxLENlLndvcmRzPW5ldyBBcnJheShDZS5sZW5ndGgpO2Zvcih2YXIgRGU9MDtEZTxDZS5sZW5ndGg7RGUrKylDZS53b3Jkc1tEZV09MH12YXIg''@;'; put 'put ''UGU9Vi5jbG9uZSgpLl9pc2hsbnN1Ym11bChULDEseWUpOzA9PT1QZS5uZWdhdGl2ZSYmKFY9UGUsQ2UmJihDZS53b3Jkc1t5ZV09MSkpO2Zvcih2YXIgUWU9eWUtMTtRZT49MDtRZS0tKXt2YXIgJGU9NjcxMDg4NjQqKDB8Vi53b3Jkc1tULmxlbmd0aCtRZV0pKygwfFYud29yZHNbVC5sZW5n''@;'; put 'put ''dGgrUWUtMV0pO2ZvcigkZT1NYXRoLm1pbigkZS9TfDAsNjcxMDg4NjMpLFYuX2lzaGxuc3VibXVsKFQsJGUsUWUpOzAhPT1WLm5lZ2F0aXZlOykkZS0tLFYubmVnYXRpdmU9MCxWLl9pc2hsbnN1Ym11bChULDEsUWUpLFYuaXNaZXJvKCl8fChWLm5lZ2F0aXZlXj0xKTtDZSYmKENlLndvcmRz''@;'; put 'put ''W1FlXT0kZSl9cmV0dXJuIENlJiZDZS5fc3RyaXAoKSxWLl9zdHJpcCgpLCJkaXYiIT09eCYmMCE9PVAmJlYuaXVzaHJuKFApLHtkaXY6Q2V8fG51bGwsbW9kOlZ9fSxVLnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24obmUseCxQKXtyZXR1cm4gRSghbmUuaXNaZXJvKCkpLHRoaXMuaXNaZXJv''@;'; put 'put ''KCk/e2RpdjpuZXcgVSgwKSxtb2Q6bmV3IFUoMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09bmUubmVnYXRpdmU/KFM9dGhpcy5uZWcoKS5kaXZtb2QobmUseCksIm1vZCIhPT14JiYoVj1TLmRpdi5uZWcoKSksImRpdiIhPT14JiYoVD1TLm1vZC5uZWcoKSxQJiYwIT09VC5uZWdhdGl2ZSYm''@;'; put 'put ''VC5pYWRkKG5lKSkse2RpdjpWLG1vZDpUfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1uZS5uZWdhdGl2ZT8oUz10aGlzLmRpdm1vZChuZS5uZWcoKSx4KSwibW9kIiE9PXgmJihWPVMuZGl2Lm5lZygpKSx7ZGl2OlYsbW9kOlMubW9kfSk6MCE9KHRoaXMubmVnYXRpdmUmbmUubmVnYXRpdmUp''@;'; put 'put ''PyhTPXRoaXMubmVnKCkuZGl2bW9kKG5lLm5lZygpLHgpLCJkaXYiIT09eCYmKFQ9Uy5tb2QubmVnKCksUCYmMCE9PVQubmVnYXRpdmUmJlQuaXN1YihuZSkpLHtkaXY6Uy5kaXYsbW9kOlR9KTpuZS5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKG5lKTwwP3tkaXY6bmV3IFUoMCksbW9k''@;'; put 'put ''OnRoaXN9OjE9PT1uZS5sZW5ndGg/ImRpdiI9PT14P3tkaXY6dGhpcy5kaXZuKG5lLndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT14P3tkaXY6bnVsbCxtb2Q6bmV3IFUodGhpcy5tb2RybihuZS53b3Jkc1swXSkpfTp7ZGl2OnRoaXMuZGl2bihuZS53b3Jkc1swXSksbW9kOm5ldyBVKHRo''@;'; put 'put ''aXMubW9kcm4obmUud29yZHNbMF0pKX06dGhpcy5fd29yZERpdihuZSx4KTt2YXIgVixULFN9LFUucHJvdG90eXBlLmRpdj1mdW5jdGlvbihuZSl7cmV0dXJuIHRoaXMuZGl2bW9kKG5lLCJkaXYiLCExKS5kaXZ9LFUucHJvdG90eXBlLm1vZD1mdW5jdGlvbihuZSl7cmV0dXJuIHRoaXMuZGl2''@;'; put 'put ''bW9kKG5lLCJtb2QiLCExKS5tb2R9LFUucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24obmUpe3JldHVybiB0aGlzLmRpdm1vZChuZSwibW9kIiwhMCkubW9kfSxVLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbihuZSl7dmFyIHg9dGhpcy5kaXZtb2QobmUpO2lmKHgubW9kLmlzWmVybygpKXJl''@;'; put 'put ''dHVybiB4LmRpdjt2YXIgUD0wIT09eC5kaXYubmVnYXRpdmU/eC5tb2QuaXN1YihuZSk6eC5tb2QsVj1uZS51c2hybigxKSxUPW5lLmFuZGxuKDEpLFM9UC5jbXAoVik7cmV0dXJuIFM8MHx8MT09PVQmJjA9PT1TP3guZGl2OjAhPT14LmRpdi5uZWdhdGl2ZT94LmRpdi5pc3VibigxKTp4LmRp''@;'; put 'put ''di5pYWRkbigxKX0sVS5wcm90b3R5cGUubW9kcm49ZnVuY3Rpb24obmUpe3ZhciB4PW5lPDA7eCYmKG5lPS1uZSksRShuZTw9NjcxMDg4NjMpO2Zvcih2YXIgUD0oMTw8MjYpJW5lLFY9MCxUPXRoaXMubGVuZ3RoLTE7VD49MDtULS0pVj0oUCpWKygwfHRoaXMud29yZHNbVF0pKSVuZTtyZXR1''@;'; put 'put ''cm4geD8tVjpWfSxVLnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKG5lKXtyZXR1cm4gdGhpcy5tb2RybihuZSl9LFUucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKG5lKXt2YXIgeD1uZTwwO3gmJihuZT0tbmUpLEUobmU8PTY3MTA4ODYzKTtmb3IodmFyIFA9MCxWPXRoaXMubGVuZ3RoLTE7Vj49''@;'; put 'put ''MDtWLS0pe3ZhciBUPSgwfHRoaXMud29yZHNbVl0pKzY3MTA4ODY0KlA7dGhpcy53b3Jkc1tWXT1UL25lfDAsUD1UJW5lfXJldHVybiB0aGlzLl9zdHJpcCgpLHg/dGhpcy5pbmVnKCk6dGhpc30sVS5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbihuZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2''@;'; put 'put ''bihuZSl9LFUucHJvdG90eXBlLmVnY2Q9ZnVuY3Rpb24obmUpe0UoMD09PW5lLm5lZ2F0aXZlKSxFKCFuZS5pc1plcm8oKSk7dmFyIHg9dGhpcyxQPW5lLmNsb25lKCk7eD0wIT09eC5uZWdhdGl2ZT94LnVtb2QobmUpOnguY2xvbmUoKTtmb3IodmFyIFY9bmV3IFUoMSksVD1uZXcgVSgwKSxT''@;'; put 'put ''PW5ldyBVKDApLEY9bmV3IFUoMSkseWU9MDt4LmlzRXZlbigpJiZQLmlzRXZlbigpOyl4Lml1c2hybigxKSxQLml1c2hybigxKSwrK3llO2Zvcih2YXIgQ2U9UC5jbG9uZSgpLERlPXguY2xvbmUoKTsheC5pc1plcm8oKTspe2Zvcih2YXIgUGU9MCxRZT0xOzA9PSh4LndvcmRzWzBdJlFlKSYm''@;'; put 'put ''UGU8MjY7KytQZSxRZTw8PTEpO2lmKFBlPjApZm9yKHguaXVzaHJuKFBlKTtQZS0tID4wOykoVi5pc09kZCgpfHxULmlzT2RkKCkpJiYoVi5pYWRkKENlKSxULmlzdWIoRGUpKSxWLml1c2hybigxKSxULml1c2hybigxKTtmb3IodmFyICRlPTAsZ3Q9MTswPT0oUC53b3Jkc1swXSZndCkmJiRl''@;'; put 'put ''PDI2OysrJGUsZ3Q8PD0xKTtpZigkZT4wKWZvcihQLml1c2hybigkZSk7JGUtLSA+MDspKFMuaXNPZGQoKXx8Ri5pc09kZCgpKSYmKFMuaWFkZChDZSksRi5pc3ViKERlKSksUy5pdXNocm4oMSksRi5pdXNocm4oMSk7eC5jbXAoUCk+PTA/KHguaXN1YihQKSxWLmlzdWIoUyksVC5pc3ViKEYp''@;'; put 'put ''KTooUC5pc3ViKHgpLFMuaXN1YihWKSxGLmlzdWIoVCkpfXJldHVybnthOlMsYjpGLGdjZDpQLml1c2hsbih5ZSl9fSxVLnByb3RvdHlwZS5faW52bXA9ZnVuY3Rpb24obmUpe0UoMD09PW5lLm5lZ2F0aXZlKSxFKCFuZS5pc1plcm8oKSk7dmFyIFBlLHg9dGhpcyxQPW5lLmNsb25lKCk7eD0w''@;'; put 'put ''IT09eC5uZWdhdGl2ZT94LnVtb2QobmUpOnguY2xvbmUoKTtmb3IodmFyIFY9bmV3IFUoMSksVD1uZXcgVSgwKSxTPVAuY2xvbmUoKTt4LmNtcG4oMSk+MCYmUC5jbXBuKDEpPjA7KXtmb3IodmFyIEY9MCx5ZT0xOzA9PSh4LndvcmRzWzBdJnllKSYmRjwyNjsrK0YseWU8PD0xKTtpZihGPjAp''@;'; put 'put ''Zm9yKHguaXVzaHJuKEYpO0YtLSA+MDspVi5pc09kZCgpJiZWLmlhZGQoUyksVi5pdXNocm4oMSk7Zm9yKHZhciBDZT0wLERlPTE7MD09KFAud29yZHNbMF0mRGUpJiZDZTwyNjsrK0NlLERlPDw9MSk7aWYoQ2U+MClmb3IoUC5pdXNocm4oQ2UpO0NlLS0gPjA7KVQuaXNPZGQoKSYmVC5pYWRk''@;'; put 'put ''KFMpLFQuaXVzaHJuKDEpO3guY21wKFApPj0wPyh4LmlzdWIoUCksVi5pc3ViKFQpKTooUC5pc3ViKHgpLFQuaXN1YihWKSl9cmV0dXJuKFBlPTA9PT14LmNtcG4oMSk/VjpUKS5jbXBuKDApPDAmJlBlLmlhZGQobmUpLFBlfSxVLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24obmUpe2lmKHRoaXMu''@;'; put 'put ''aXNaZXJvKCkpcmV0dXJuIG5lLmFicygpO2lmKG5lLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciB4PXRoaXMuY2xvbmUoKSxQPW5lLmNsb25lKCk7eC5uZWdhdGl2ZT0wLFAubmVnYXRpdmU9MDtmb3IodmFyIFY9MDt4LmlzRXZlbigpJiZQLmlzRXZlbigpO1YrKyl4Lml1c2hybigx''@;'; put 'put ''KSxQLml1c2hybigxKTtmb3IoOzspe2Zvcig7eC5pc0V2ZW4oKTspeC5pdXNocm4oMSk7Zm9yKDtQLmlzRXZlbigpOylQLml1c2hybigxKTt2YXIgVD14LmNtcChQKTtpZihUPDApe3ZhciBTPXg7eD1QLFA9U31lbHNlIGlmKDA9PT1UfHwwPT09UC5jbXBuKDEpKWJyZWFrO3guaXN1YihQKX1y''@;'; put 'put ''ZXR1cm4gUC5pdXNobG4oVil9LFUucHJvdG90eXBlLmludm09ZnVuY3Rpb24obmUpe3JldHVybiB0aGlzLmVnY2QobmUpLmEudW1vZChuZSl9LFUucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiAwPT0oMSZ0aGlzLndvcmRzWzBdKX0sVS5wcm90b3R5cGUuaXNPZGQ9ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gMT09KDEmdGhpcy53b3Jkc1swXSl9LFUucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKG5lKXtyZXR1cm4gdGhpcy53b3Jkc1swXSZuZX0sVS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24obmUpe0UoIm51bWJlciI9PXR5cGVvZiBuZSk7dmFyIHg9bmUlMjYsUD0obmUteCkv''@;'; put 'put ''MjYsVj0xPDx4O2lmKHRoaXMubGVuZ3RoPD1QKXJldHVybiB0aGlzLl9leHBhbmQoUCsxKSx0aGlzLndvcmRzW1BdfD1WLHRoaXM7Zm9yKHZhciBUPVYsUz1QOzAhPT1UJiZTPHRoaXMubGVuZ3RoO1MrKyl7dmFyIEY9MHx0aGlzLndvcmRzW1NdO1Q9KEYrPVQpPj4+MjYsdGhpcy53b3Jkc1tT''@;'; put 'put ''XT1GJj02NzEwODg2M31yZXR1cm4gMCE9PVQmJih0aGlzLndvcmRzW1NdPVQsdGhpcy5sZW5ndGgrKyksdGhpc30sVS5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LFUucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24o''@;'; put 'put ''bmUpe3ZhciBQLHg9bmU8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIXgpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJngpcmV0dXJuIDE7aWYodGhpcy5fc3RyaXAoKSx0aGlzLmxlbmd0aD4xKVA9MTtlbHNle3gmJihuZT0tbmUpLEUobmU8PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9v''@;'; put 'put ''IGJpZyIpO3ZhciBWPTB8dGhpcy53b3Jkc1swXTtQPVY9PT1uZT8wOlY8bmU/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtUDpQfSxVLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24obmUpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09bmUubmVnYXRpdmUpcmV0dXJuLTE7aWYoMD09''@;'; put 'put ''PXRoaXMubmVnYXRpdmUmJjAhPT1uZS5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgeD10aGlzLnVjbXAobmUpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC14Onh9LFUucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24obmUpe2lmKHRoaXMubGVuZ3RoPm5lLmxlbmd0aClyZXR1cm4gMTtpZih0aGlz''@;'; put 'put ''Lmxlbmd0aDxuZS5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciB4PTAsUD10aGlzLmxlbmd0aC0xO1A+PTA7UC0tKXt2YXIgVj0wfHRoaXMud29yZHNbUF0sVD0wfG5lLndvcmRzW1BdO2lmKFYhPT1UKXtWPFQ/eD0tMTpWPlQmJih4PTEpO2JyZWFrfX1yZXR1cm4geH0sVS5wcm90b3R5cGUuZ3Ru''@;'; put 'put ''PWZ1bmN0aW9uKG5lKXtyZXR1cm4gMT09PXRoaXMuY21wbihuZSl9LFUucHJvdG90eXBlLmd0PWZ1bmN0aW9uKG5lKXtyZXR1cm4gMT09PXRoaXMuY21wKG5lKX0sVS5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihuZSl7cmV0dXJuIHRoaXMuY21wbihuZSk+PTB9LFUucHJvdG90eXBlLmd0ZT1m''@;'; put 'put ''dW5jdGlvbihuZSl7cmV0dXJuIHRoaXMuY21wKG5lKT49MH0sVS5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKG5lKXtyZXR1cm4tMT09PXRoaXMuY21wbihuZSl9LFUucHJvdG90eXBlLmx0PWZ1bmN0aW9uKG5lKXtyZXR1cm4tMT09PXRoaXMuY21wKG5lKX0sVS5wcm90b3R5cGUubHRlbj1mdW5j''@;'; put 'put ''dGlvbihuZSl7cmV0dXJuIHRoaXMuY21wbihuZSk8PTB9LFUucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihuZSl7cmV0dXJuIHRoaXMuY21wKG5lKTw9MH0sVS5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKG5lKXtyZXR1cm4gMD09PXRoaXMuY21wbihuZSl9LFUucHJvdG90eXBlLmVxPWZ1bmN0aW9u''@;'; put 'put ''KG5lKXtyZXR1cm4gMD09PXRoaXMuY21wKG5lKX0sVS5yZWQ9ZnVuY3Rpb24obmUpe3JldHVybiBuZXcgTyhuZSl9LFUucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKG5lKXtyZXR1cm4gRSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSxFKDA9PT10''@;'; put 'put ''aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLG5lLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQobmUpfSxVLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4g''@;'; put 'put ''cmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sVS5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKG5lKXtyZXR1cm4gdGhpcy5yZWQ9bmUsdGhpc30sVS5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24obmUpe3JldHVybiBFKCF0aGlzLnJlZCwiQWxy''@;'; put 'put ''ZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKG5lKX0sVS5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKG5lKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLG5l''@;'; put 'put ''KX0sVS5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbihuZSl7cmV0dXJuIEUodGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLG5lKX0sVS5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKG5lKXtyZXR1cm4gRSh0aGlzLnJl''@;'; put 'put ''ZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlzLG5lKX0sVS5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihuZSl7cmV0dXJuIEUodGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1''@;'; put 'put ''Yih0aGlzLG5lKX0sVS5wcm90b3R5cGUucmVkU2hsPWZ1bmN0aW9uKG5lKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLG5lKX0sVS5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKG5lKXtyZXR1cm4gRSh0''@;'; put 'put ''aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsbmUpLHRoaXMucmVkLm11bCh0aGlzLG5lKX0sVS5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbihuZSl7cmV0dXJuIEUodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5''@;'; put 'put ''IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLG5lKSx0aGlzLnJlZC5pbXVsKHRoaXMsbmUpfSxVLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVk''@;'; put 'put ''Ll92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sVS5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhp''@;'; put 'put ''cyl9LFUucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxVLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sVS5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZE5lZyB3b3Jr''@;'; put 'put ''cyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LFUucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbihuZSl7cmV0dXJuIEUodGhpcy5yZWQmJiFuZS5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3Zlcmlm''@;'; put 'put ''eTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsbmUpfTt2YXIga2U9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiBTZShlZSxuZSl7dGhpcy5uYW1lPWVlLHRoaXMucD1uZXcgVShuZSwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlz''@;'; put 'put ''Lms9bmV3IFUoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIEllKCl7U2UuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZj''@;'; put 'put ''MmYiKX1mdW5jdGlvbiBUZSgpe1NlLmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gTWUoKXtTZS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZm''@;'; put 'put ''ZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIGhlKCl7U2UuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBPKGVlKXtpZigic3RyaW5nIj09''@;'; put 'put ''dHlwZW9mIGVlKXt2YXIgbmU9VS5fcHJpbWUoZWUpO3RoaXMubT1uZS5wLHRoaXMucHJpbWU9bmV9ZWxzZSBFKGVlLmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPWVlLHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiB6KGVlKXtPLmNhbGwodGhpcyxlZSks''@;'; put 'put ''dGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9MCYmKHRoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjYpLHRoaXMucj1uZXcgVSgxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9dGhpcy5yLl9p''@;'; put 'put ''bnZtcCh0aGlzLm0pLHRoaXMubWludj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSksdGhpcy5taW52PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX1TZS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciBu''@;'; put 'put ''ZT1uZXcgVShudWxsKTtyZXR1cm4gbmUud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxuZX0sU2UucHJvdG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24obmUpe3ZhciBQLHg9bmU7ZG97dGhpcy5zcGxpdCh4LHRoaXMudG1wKSxQPSh4PSh4PXRoaXMuaW11bEsoeCkpLmlhZGQo''@;'; put 'put ''dGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShQPnRoaXMubik7dmFyIFY9UDx0aGlzLm4/LTE6eC51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1WPyh4LndvcmRzWzBdPTAseC5sZW5ndGg9MSk6Vj4wP3guaXN1Yih0aGlzLnApOnZvaWQgMCE9PXguc3RyaXA/eC5zdHJpcCgpOnguX3N0cmlw''@;'; put 'put ''KCkseH0sU2UucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKG5lLHgpe25lLml1c2hybih0aGlzLm4sMCx4KX0sU2UucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKG5lKXtyZXR1cm4gbmUuaW11bCh0aGlzLmspfSxFZShJZSxTZSksSWUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKG5lLHgpe2Zv''@;'; put 'put ''cih2YXIgUD00MTk0MzAzLFY9TWF0aC5taW4obmUubGVuZ3RoLDkpLFQ9MDtUPFY7VCsrKXgud29yZHNbVF09bmUud29yZHNbVF07aWYoeC5sZW5ndGg9VixuZS5sZW5ndGg8PTkpcmV0dXJuIG5lLndvcmRzWzBdPTAsdm9pZChuZS5sZW5ndGg9MSk7dmFyIFM9bmUud29yZHNbOV07Zm9yKHgu''@;'; put 'put ''d29yZHNbeC5sZW5ndGgrK109UyZQLFQ9MTA7VDxuZS5sZW5ndGg7VCsrKXt2YXIgRj0wfG5lLndvcmRzW1RdO25lLndvcmRzW1QtMTBdPShGJlApPDw0fFM+Pj4yMixTPUZ9bmUud29yZHNbVC0xMF09Uz4+Pj0yMixuZS5sZW5ndGgtPTA9PT1TJiZuZS5sZW5ndGg+MTA/MTA6OX0sSWUucHJv''@;'; put 'put ''dG90eXBlLmltdWxLPWZ1bmN0aW9uKG5lKXtuZS53b3Jkc1tuZS5sZW5ndGhdPTAsbmUud29yZHNbbmUubGVuZ3RoKzFdPTAsbmUubGVuZ3RoKz0yO2Zvcih2YXIgeD0wLFA9MDtQPG5lLmxlbmd0aDtQKyspe3ZhciBWPTB8bmUud29yZHNbUF07bmUud29yZHNbUF09NjcxMDg4NjMmKHgrPTk3''@;'; put 'put ''NypWKSx4PTY0KlYrKHgvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1uZS53b3Jkc1tuZS5sZW5ndGgtMV0mJihuZS5sZW5ndGgtLSwwPT09bmUud29yZHNbbmUubGVuZ3RoLTFdJiZuZS5sZW5ndGgtLSksbmV9LEVlKFRlLFNlKSxFZShNZSxTZSksRWUoaGUsU2UpLGhlLnByb3RvdHlwZS5pbXVs''@;'; put 'put ''Sz1mdW5jdGlvbihuZSl7Zm9yKHZhciB4PTAsUD0wO1A8bmUubGVuZ3RoO1ArKyl7dmFyIFY9MTkqKDB8bmUud29yZHNbUF0pK3gsVD02NzEwODg2MyZWO1Y+Pj49MjYsbmUud29yZHNbUF09VCx4PVZ9cmV0dXJuIDAhPT14JiYobmUud29yZHNbbmUubGVuZ3RoKytdPXgpLG5lfSxVLl9wcmlt''@;'; put 'put ''ZT1mdW5jdGlvbihuZSl7aWYoa2VbbmVdKXJldHVybiBrZVtuZV07dmFyIHg7aWYoImsyNTYiPT09bmUpeD1uZXcgSWU7ZWxzZSBpZigicDIyNCI9PT1uZSl4PW5ldyBUZTtlbHNlIGlmKCJwMTkyIj09PW5lKXg9bmV3IE1lO2Vsc2V7aWYoInAyNTUxOSIhPT1uZSl0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''IlVua25vd24gcHJpbWUgIituZSk7eD1uZXcgaGV9cmV0dXJuIGtlW25lXT14LHh9LE8ucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKG5lKXtFKDA9PT1uZS5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxFKG5lLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCBy''@;'; put 'put ''ZWQgbnVtYmVycyIpfSxPLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihuZSx4KXtFKDA9PShuZS5uZWdhdGl2ZXx4Lm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxFKG5lLnJlZCYmbmUucmVkPT09eC5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51''@;'; put 'put ''bWJlcnMiKX0sTy5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbihuZSl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKG5lKS5fZm9yY2VSZWQodGhpcyk6KFkobmUsbmUudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKSksbmUpfSxPLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24o''@;'; put 'put ''bmUpe3JldHVybiBuZS5pc1plcm8oKT9uZS5jbG9uZSgpOnRoaXMubS5zdWIobmUpLl9mb3JjZVJlZCh0aGlzKX0sTy5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKG5lLHgpe3RoaXMuX3ZlcmlmeTIobmUseCk7dmFyIFA9bmUuYWRkKHgpO3JldHVybiBQLmNtcCh0aGlzLm0pPj0wJiZQLmlzdWIo''@;'; put 'put ''dGhpcy5tKSxQLl9mb3JjZVJlZCh0aGlzKX0sTy5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihuZSx4KXt0aGlzLl92ZXJpZnkyKG5lLHgpO3ZhciBQPW5lLmlhZGQoeCk7cmV0dXJuIFAuY21wKHRoaXMubSk+PTAmJlAuaXN1Yih0aGlzLm0pLFB9LE8ucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihu''@;'; put 'put ''ZSx4KXt0aGlzLl92ZXJpZnkyKG5lLHgpO3ZhciBQPW5lLnN1Yih4KTtyZXR1cm4gUC5jbXBuKDApPDAmJlAuaWFkZCh0aGlzLm0pLFAuX2ZvcmNlUmVkKHRoaXMpfSxPLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKG5lLHgpe3RoaXMuX3ZlcmlmeTIobmUseCk7dmFyIFA9bmUuaXN1Yih4KTty''@;'; put 'put ''ZXR1cm4gUC5jbXBuKDApPDAmJlAuaWFkZCh0aGlzLm0pLFB9LE8ucHJvdG90eXBlLnNobD1mdW5jdGlvbihuZSx4KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShuZSksdGhpcy5pbW9kKG5lLnVzaGxuKHgpKX0sTy5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihuZSx4KXtyZXR1cm4gdGhpcy5fdmVy''@;'; put 'put ''aWZ5MihuZSx4KSx0aGlzLmltb2QobmUuaW11bCh4KSl9LE8ucHJvdG90eXBlLm11bD1mdW5jdGlvbihuZSx4KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihuZSx4KSx0aGlzLmltb2QobmUubXVsKHgpKX0sTy5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbihuZSl7cmV0dXJuIHRoaXMuaW11bChuZSxu''@;'; put 'put ''ZS5jbG9uZSgpKX0sTy5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKG5lKXtyZXR1cm4gdGhpcy5tdWwobmUsbmUpfSxPLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKG5lKXtpZihuZS5pc1plcm8oKSlyZXR1cm4gbmUuY2xvbmUoKTt2YXIgeD10aGlzLm0uYW5kbG4oMyk7aWYoRSh4JTI9PTEpLDM9''@;'; put 'put ''PT14KXt2YXIgUD10aGlzLm0uYWRkKG5ldyBVKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KG5lLFApfWZvcih2YXIgVj10aGlzLm0uc3VibigxKSxUPTA7IVYuaXNaZXJvKCkmJjA9PT1WLmFuZGxuKDEpOylUKyssVi5pdXNocm4oMSk7RSghVi5pc1plcm8oKSk7dmFyIFM9bmV3IFUo''@;'; put 'put ''MSkudG9SZWQodGhpcyksRj1TLnJlZE5lZygpLHllPXRoaXMubS5zdWJuKDEpLml1c2hybigxKSxDZT10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKENlPW5ldyBVKDIqQ2UqQ2UpLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhDZSx5ZSkuY21wKEYpOylDZS5yZWRJQWRkKEYpO2Zvcih2YXIgRGU9''@;'; put 'put ''dGhpcy5wb3coQ2UsViksUGU9dGhpcy5wb3cobmUsVi5hZGRuKDEpLml1c2hybigxKSksUWU9dGhpcy5wb3cobmUsViksJGU9VDswIT09UWUuY21wKFMpOyl7Zm9yKHZhciBndD1RZSx3dD0wOzAhPT1ndC5jbXAoUyk7d3QrKylndD1ndC5yZWRTcXIoKTtFKHd0PCRlKTt2YXIgbXQ9dGhpcy5w''@;'; put 'put ''b3coRGUsbmV3IFUoMSkuaXVzaGxuKCRlLXd0LTEpKTtQZT1QZS5yZWRNdWwobXQpLERlPW10LnJlZFNxcigpLFFlPVFlLnJlZE11bChEZSksJGU9d3R9cmV0dXJuIFBlfSxPLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKG5lKXt2YXIgeD1uZS5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PXgu''@;'; put 'put ''bmVnYXRpdmU/KHgubmVnYXRpdmU9MCx0aGlzLmltb2QoeCkucmVkTmVnKCkpOnRoaXMuaW1vZCh4KX0sTy5wcm90b3R5cGUucG93PWZ1bmN0aW9uKG5lLHgpe2lmKHguaXNaZXJvKCkpcmV0dXJuIG5ldyBVKDEpLnRvUmVkKHRoaXMpO2lmKDA9PT14LmNtcG4oMSkpcmV0dXJuIG5lLmNsb25l''@;'; put 'put ''KCk7dmFyIFY9bmV3IEFycmF5KDE2KTtWWzBdPW5ldyBVKDEpLnRvUmVkKHRoaXMpLFZbMV09bmU7Zm9yKHZhciBUPTI7VDxWLmxlbmd0aDtUKyspVltUXT10aGlzLm11bChWW1QtMV0sbmUpO3ZhciBTPVZbMF0sRj0wLHllPTAsQ2U9eC5iaXRMZW5ndGgoKSUyNjtmb3IoMD09PUNlJiYoQ2U9''@;'; put 'put ''MjYpLFQ9eC5sZW5ndGgtMTtUPj0wO1QtLSl7Zm9yKHZhciBEZT14LndvcmRzW1RdLFBlPUNlLTE7UGU+PTA7UGUtLSl7dmFyIFFlPURlPj5QZSYxO1MhPT1WWzBdJiYoUz10aGlzLnNxcihTKSksMCE9PVFlfHwwIT09Rj8oRjw8PTEsRnw9UWUsKDQ9PSsreWV8fDA9PT1UJiYwPT09UGUpJiYo''@;'; put 'put ''Uz10aGlzLm11bChTLFZbRl0pLHllPTAsRj0wKSk6eWU9MH1DZT0yNn1yZXR1cm4gU30sTy5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKG5lKXt2YXIgeD1uZS51bW9kKHRoaXMubSk7cmV0dXJuIHg9PT1uZT94LmNsb25lKCk6eH0sTy5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rp''@;'; put 'put ''b24obmUpe3ZhciB4PW5lLmNsb25lKCk7cmV0dXJuIHgucmVkPW51bGwseH0sVS5tb250PWZ1bmN0aW9uKG5lKXtyZXR1cm4gbmV3IHoobmUpfSxFZSh6LE8pLHoucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihuZSl7cmV0dXJuIHRoaXMuaW1vZChuZS51c2hsbih0aGlzLnNoaWZ0KSl9''@;'; put 'put ''LHoucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKG5lKXt2YXIgeD10aGlzLmltb2QobmUubXVsKHRoaXMucmludikpO3JldHVybiB4LnJlZD1udWxsLHh9LHoucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24obmUseCl7aWYobmUuaXNaZXJvKCl8fHguaXNaZXJvKCkpcmV0dXJuIG5lLndv''@;'; put 'put ''cmRzWzBdPTAsbmUubGVuZ3RoPTEsbmU7dmFyIFA9bmUuaW11bCh4KSxWPVAubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLFQ9UC5pc3ViKFYpLml1c2hybih0aGlzLnNoaWZ0KSxTPVQ7cmV0dXJuIFQuY21wKHRoaXMubSk+''@;'; put 'put ''PTA/Uz1ULmlzdWIodGhpcy5tKTpULmNtcG4oMCk8MCYmKFM9VC5pYWRkKHRoaXMubSkpLFMuX2ZvcmNlUmVkKHRoaXMpfSx6LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24obmUseCl7aWYobmUuaXNaZXJvKCl8fHguaXNaZXJvKCkpcmV0dXJuIG5ldyBVKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIg''@;'; put 'put ''UD1uZS5tdWwoeCksVj1QLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxUPVAuaXN1YihWKS5pdXNocm4odGhpcy5zaGlmdCksUz1UO3JldHVybiBULmNtcCh0aGlzLm0pPj0wP1M9VC5pc3ViKHRoaXMubSk6VC5jbXBuKDAp''@;'; put 'put ''PDAmJihTPVQuaWFkZCh0aGlzLm0pKSxTLl9mb3JjZVJlZCh0aGlzKX0sei5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihuZSl7cmV0dXJuIHRoaXMuaW1vZChuZS5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KFhlPUwubm1kKFhlKSx0aGlzKX0sMzc5NTA6''@;'; put 'put ''KFhlLEplLEwpPT57dmFyIG1lO2Z1bmN0aW9uIEIoRWUpe3RoaXMucmFuZD1FZX1pZihYZS5leHBvcnRzPWZ1bmN0aW9uKFUpe3JldHVybiBtZXx8KG1lPW5ldyBCKG51bGwpKSxtZS5nZW5lcmF0ZShVKX0sWGUuZXhwb3J0cy5SYW5kPUIsQi5wcm90b3R5cGUuZ2VuZXJhdGU9ZnVuY3Rpb24o''@;'; put 'put ''VSl7cmV0dXJuIHRoaXMuX3JhbmQoVSl9LEIucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKFUpe2lmKHRoaXMucmFuZC5nZXRCeXRlcylyZXR1cm4gdGhpcy5yYW5kLmdldEJ5dGVzKFUpO2Zvcih2YXIgUT1uZXcgVWludDhBcnJheShVKSxqPTA7ajxRLmxlbmd0aDtqKyspUVtqXT10aGlzLnJh''@;'; put 'put ''bmQuZ2V0Qnl0ZSgpO3JldHVybiBRfSwib2JqZWN0Ij09dHlwZW9mIHNlbGYpc2VsZi5jcnlwdG8mJnNlbGYuY3J5cHRvLmdldFJhbmRvbVZhbHVlcz9CLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbihVKXt2YXIgUT1uZXcgVWludDhBcnJheShVKTtyZXR1cm4gc2VsZi5jcnlwdG8uZ2V0UmFu''@;'; put 'put ''ZG9tVmFsdWVzKFEpLFF9OnNlbGYubXNDcnlwdG8mJnNlbGYubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzP0IucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKFUpe3ZhciBRPW5ldyBVaW50OEFycmF5KFUpO3JldHVybiBzZWxmLm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcyhRKSxRfToib2JqZWN0''@;'; put 'put ''Ij09dHlwZW9mIHdpbmRvdyYmKEIucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQgeWV0Iil9KTtlbHNlIHRyeXt2YXIgRT1MKDQxMzQ4KTtpZigiZnVuY3Rpb24iIT10eXBlb2YgRS5yYW5kb21CeXRlcyl0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''Ik5vdCBzdXBwb3J0ZWQiKTtCLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbihVKXtyZXR1cm4gRS5yYW5kb21CeXRlcyhVKX19Y2F0Y2goRWUpe319LDQxODk5OihYZSxKZSxMKT0+e3ZhciBtZT1MKDczNTAyKS5CdWZmZXI7ZnVuY3Rpb24gQihyZSl7bWUuaXNCdWZmZXIocmUpfHwocmU9bWUu''@;'; put 'put ''ZnJvbShyZSkpO2Zvcih2YXIgYWU9cmUubGVuZ3RoLzR8MCxZPW5ldyBBcnJheShhZSksVz0wO1c8YWU7VysrKVlbV109cmUucmVhZFVJbnQzMkJFKDQqVyk7cmV0dXJuIFl9ZnVuY3Rpb24gRShyZSl7Zm9yKDswPHJlLmxlbmd0aDtyZSsrKXJlWzBdPTB9ZnVuY3Rpb24gRWUocmUsYWUsWSxX''@;'; put 'put ''LE4pe2Zvcih2YXIgQWUsa2UsU2UsSWUsdGU9WVswXSxLPVlbMV0sSj1ZWzJdLHNlPVlbM10sb2U9cmVbMF1eYWVbMF0sY2U9cmVbMV1eYWVbMV0sZGU9cmVbMl1eYWVbMl0sdmU9cmVbM11eYWVbM10sVGU9NCxNZT0xO01lPE47TWUrKylBZT10ZVtvZT4+PjI0XV5LW2NlPj4+MTYmMjU1XV5K''@;'; put 'put ''W2RlPj4+OCYyNTVdXnNlWzI1NSZ2ZV1eYWVbVGUrK10sa2U9dGVbY2U+Pj4yNF1eS1tkZT4+PjE2JjI1NV1eSlt2ZT4+PjgmMjU1XV5zZVsyNTUmb2VdXmFlW1RlKytdLFNlPXRlW2RlPj4+MjRdXktbdmU+Pj4xNiYyNTVdXkpbb2U+Pj44JjI1NV1ec2VbMjU1JmNlXV5hZVtUZSsrXSxJZT10''@;'; put 'put ''ZVt2ZT4+PjI0XV5LW29lPj4+MTYmMjU1XV5KW2NlPj4+OCYyNTVdXnNlWzI1NSZkZV1eYWVbVGUrK10sb2U9QWUsY2U9a2UsZGU9U2UsdmU9SWU7cmV0dXJuIEFlPShXW29lPj4+MjRdPDwyNHxXW2NlPj4+MTYmMjU1XTw8MTZ8V1tkZT4+PjgmMjU1XTw8OHxXWzI1NSZ2ZV0pXmFlW1RlKytd''@;'; put 'put ''LGtlPShXW2NlPj4+MjRdPDwyNHxXW2RlPj4+MTYmMjU1XTw8MTZ8V1t2ZT4+PjgmMjU1XTw8OHxXWzI1NSZvZV0pXmFlW1RlKytdLFNlPShXW2RlPj4+MjRdPDwyNHxXW3ZlPj4+MTYmMjU1XTw8MTZ8V1tvZT4+PjgmMjU1XTw8OHxXWzI1NSZjZV0pXmFlW1RlKytdLEllPShXW3ZlPj4+MjRd''@;'; put 'put ''PDwyNHxXW29lPj4+MTYmMjU1XTw8MTZ8V1tjZT4+PjgmMjU1XTw8OHxXWzI1NSZkZV0pXmFlW1RlKytdLFtBZT4+Pj0wLGtlPj4+PTAsU2U+Pj49MCxJZT4+Pj0wXX12YXIgVT1bMCwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NF0sUT1mdW5jdGlvbigpe2Zvcih2YXIgcmU9bmV3IEFycmF5''@;'; put 'put ''KDI1NiksYWU9MDthZTwyNTY7YWUrKylyZVthZV09YWU8MTI4P2FlPDwxOmFlPDwxXjI4Mztmb3IodmFyIFk9W10sVz1bXSxOPVtbXSxbXSxbXSxbXV0sdGU9W1tdLFtdLFtdLFtdXSxLPTAsSj0wLHNlPTA7c2U8MjU2Oysrc2Upe3ZhciBvZT1KXko8PDFeSjw8Ml5KPDwzXko8PDQ7WVtLXT1v''@;'; put 'put ''ZT1vZT4+PjheMjU1Jm9lXjk5LFdbb2VdPUs7dmFyIGNlPXJlW0tdLGRlPXJlW2NlXSx2ZT1yZVtkZV0sQWU9MjU3KnJlW29lXV4xNjg0MzAwOCpvZTtOWzBdW0tdPUFlPDwyNHxBZT4+PjgsTlsxXVtLXT1BZTw8MTZ8QWU+Pj4xNixOWzJdW0tdPUFlPDw4fEFlPj4+MjQsTlszXVtLXT1BZSx0''@;'; put 'put ''ZVswXVtvZV09KEFlPTE2ODQzMDA5KnZlXjY1NTM3KmRlXjI1NypjZV4xNjg0MzAwOCpLKTw8MjR8QWU+Pj44LHRlWzFdW29lXT1BZTw8MTZ8QWU+Pj4xNix0ZVsyXVtvZV09QWU8PDh8QWU+Pj4yNCx0ZVszXVtvZV09QWUsMD09PUs/Sz1KPTE6KEs9Y2VecmVbcmVbcmVbdmVeY2VdXV0sSl49''@;'; put 'put ''cmVbcmVbSl1dKX1yZXR1cm57U0JPWDpZLElOVl9TQk9YOlcsU1VCX01JWDpOLElOVl9TVUJfTUlYOnRlfX0oKTtmdW5jdGlvbiBqKHJlKXt0aGlzLl9rZXk9QihyZSksdGhpcy5fcmVzZXQoKX1qLmJsb2NrU2l6ZT0xNixqLmtleVNpemU9MzIsai5wcm90b3R5cGUuYmxvY2tTaXplPWouYmxv''@;'; put 'put ''Y2tTaXplLGoucHJvdG90eXBlLmtleVNpemU9ai5rZXlTaXplLGoucHJvdG90eXBlLl9yZXNldD1mdW5jdGlvbigpe2Zvcih2YXIgcmU9dGhpcy5fa2V5LGFlPXJlLmxlbmd0aCxZPWFlKzYsVz00KihZKzEpLE49W10sdGU9MDt0ZTxhZTt0ZSsrKU5bdGVdPXJlW3RlXTtmb3IodGU9YWU7dGU8''@;'; put 'put ''Vzt0ZSsrKXt2YXIgSz1OW3RlLTFdO3RlJWFlPT0wPyhLPVEuU0JPWFsoSz1LPDw4fEs+Pj4yNCk+Pj4yNF08PDI0fFEuU0JPWFtLPj4+MTYmMjU1XTw8MTZ8US5TQk9YW0s+Pj44JjI1NV08PDh8US5TQk9YWzI1NSZLXSxLXj1VW3RlL2FlfDBdPDwyNCk6YWU+NiYmdGUlYWU9PTQmJihLPVEu''@;'; put 'put ''U0JPWFtLPj4+MjRdPDwyNHxRLlNCT1hbSz4+PjE2JjI1NV08PDE2fFEuU0JPWFtLPj4+OCYyNTVdPDw4fFEuU0JPWFsyNTUmS10pLE5bdGVdPU5bdGUtYWVdXkt9Zm9yKHZhciBKPVtdLHNlPTA7c2U8VztzZSsrKXt2YXIgb2U9Vy1zZSxjZT1OW29lLShzZSU0PzA6NCldO0pbc2VdPXNlPDR8''@;'; put 'put ''fG9lPD00P2NlOlEuSU5WX1NVQl9NSVhbMF1bUS5TQk9YW2NlPj4+MjRdXV5RLklOVl9TVUJfTUlYWzFdW1EuU0JPWFtjZT4+PjE2JjI1NV1dXlEuSU5WX1NVQl9NSVhbMl1bUS5TQk9YW2NlPj4+OCYyNTVdXV5RLklOVl9TVUJfTUlYWzNdW1EuU0JPWFsyNTUmY2VdXX10aGlzLl9uUm91bmRz''@;'; put 'put ''PVksdGhpcy5fa2V5U2NoZWR1bGU9Tix0aGlzLl9pbnZLZXlTY2hlZHVsZT1KfSxqLnByb3RvdHlwZS5lbmNyeXB0QmxvY2tSYXc9ZnVuY3Rpb24ocmUpe3JldHVybiBFZShyZT1CKHJlKSx0aGlzLl9rZXlTY2hlZHVsZSxRLlNVQl9NSVgsUS5TQk9YLHRoaXMuX25Sb3VuZHMpfSxqLnByb3Rv''@;'; put 'put ''dHlwZS5lbmNyeXB0QmxvY2s9ZnVuY3Rpb24ocmUpe3ZhciBhZT10aGlzLmVuY3J5cHRCbG9ja1JhdyhyZSksWT1tZS5hbGxvY1Vuc2FmZSgxNik7cmV0dXJuIFkud3JpdGVVSW50MzJCRShhZVswXSwwKSxZLndyaXRlVUludDMyQkUoYWVbMV0sNCksWS53cml0ZVVJbnQzMkJFKGFlWzJdLDgp''@;'; put 'put ''LFkud3JpdGVVSW50MzJCRShhZVszXSwxMiksWX0sai5wcm90b3R5cGUuZGVjcnlwdEJsb2NrPWZ1bmN0aW9uKHJlKXt2YXIgYWU9KHJlPUIocmUpKVsxXTtyZVsxXT1yZVszXSxyZVszXT1hZTt2YXIgWT1FZShyZSx0aGlzLl9pbnZLZXlTY2hlZHVsZSxRLklOVl9TVUJfTUlYLFEuSU5WX1NC''@;'; put 'put ''T1gsdGhpcy5fblJvdW5kcyksVz1tZS5hbGxvY1Vuc2FmZSgxNik7cmV0dXJuIFcud3JpdGVVSW50MzJCRShZWzBdLDApLFcud3JpdGVVSW50MzJCRShZWzNdLDQpLFcud3JpdGVVSW50MzJCRShZWzJdLDgpLFcud3JpdGVVSW50MzJCRShZWzFdLDEyKSxXfSxqLnByb3RvdHlwZS5zY3J1Yj1m''@;'; put 'put ''dW5jdGlvbigpe0UodGhpcy5fa2V5U2NoZWR1bGUpLEUodGhpcy5faW52S2V5U2NoZWR1bGUpLEUodGhpcy5fa2V5KX0sWGUuZXhwb3J0cy5BRVM9an0sNjkzODI6KFhlLEplLEwpPT57dmFyIG1lPUwoNDE4OTkpLEI9TCg3MzUwMikuQnVmZmVyLEU9TCg2MTA1MiksRWU9TCg4Mzg5NCksVT1M''@;'; put 'put ''KDY4ODU3KSxRPUwoNTg3ODkpLGo9TCg3OTY4KTtmdW5jdGlvbiBZKFcsTix0ZSxLKXtFLmNhbGwodGhpcyk7dmFyIEo9Qi5hbGxvYyg0LDApO3RoaXMuX2NpcGhlcj1uZXcgbWUuQUVTKE4pO3ZhciBzZT10aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKEopO3RoaXMuX2doYXNoPW5ldyBVKHNl''@;'; put 'put ''KSx0ZT1mdW5jdGlvbiBhZShXLE4sdGUpe2lmKDEyPT09Ti5sZW5ndGgpcmV0dXJuIFcuX2ZpbklEPUIuY29uY2F0KFtOLEIuZnJvbShbMCwwLDAsMV0pXSksQi5jb25jYXQoW04sQi5mcm9tKFswLDAsMCwyXSldKTt2YXIgSz1uZXcgVSh0ZSksSj1OLmxlbmd0aCxzZT1KJTE2O0sudXBkYXRl''@;'; put 'put ''KE4pLHNlJiZLLnVwZGF0ZShCLmFsbG9jKHNlPTE2LXNlLDApKSxLLnVwZGF0ZShCLmFsbG9jKDgsMCkpO3ZhciBvZT04KkosY2U9Qi5hbGxvYyg4KTtjZS53cml0ZVVJbnRCRShvZSwwLDgpLEsudXBkYXRlKGNlKSxXLl9maW5JRD1LLnN0YXRlO3ZhciBkZT1CLmZyb20oVy5fZmluSUQpO3Jl''@;'; put 'put ''dHVybiBqKGRlKSxkZX0odGhpcyx0ZSxzZSksdGhpcy5fcHJldj1CLmZyb20odGUpLHRoaXMuX2NhY2hlPUIuYWxsb2NVbnNhZmUoMCksdGhpcy5fc2VjQ2FjaGU9Qi5hbGxvY1Vuc2FmZSgwKSx0aGlzLl9kZWNyeXB0PUssdGhpcy5fYWxlbj0wLHRoaXMuX2xlbj0wLHRoaXMuX21vZGU9Vyx0''@;'; put 'put ''aGlzLl9hdXRoVGFnPW51bGwsdGhpcy5fY2FsbGVkPSExfUVlKFksRSksWS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihXKXtpZighdGhpcy5fY2FsbGVkJiZ0aGlzLl9hbGVuKXt2YXIgTj0xNi10aGlzLl9hbGVuJTE2O048MTYmJihOPUIuYWxsb2MoTiwwKSx0aGlzLl9naGFzaC51cGRh''@;'; put 'put ''dGUoTikpfXRoaXMuX2NhbGxlZD0hMDt2YXIgdGU9dGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsVyk7cmV0dXJuIHRoaXMuX2doYXNoLnVwZGF0ZSh0aGlzLl9kZWNyeXB0P1c6dGUpLHRoaXMuX2xlbis9Vy5sZW5ndGgsdGV9LFkucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe2lmKHRoaXMu''@;'; put 'put ''X2RlY3J5cHQmJiF0aGlzLl9hdXRoVGFnKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgc3RhdGUgb3IgdW5hYmxlIHRvIGF1dGhlbnRpY2F0ZSBkYXRhIik7dmFyIFc9USh0aGlzLl9naGFzaC5maW5hbCg4KnRoaXMuX2FsZW4sOCp0aGlzLl9sZW4pLHRoaXMuX2NpcGhlci5lbmNyeXB0''@;'; put 'put ''QmxvY2sodGhpcy5fZmluSUQpKTtpZih0aGlzLl9kZWNyeXB0JiZmdW5jdGlvbiByZShXLE4pe3ZhciB0ZT0wO1cubGVuZ3RoIT09Ti5sZW5ndGgmJnRlKys7Zm9yKHZhciBLPU1hdGgubWluKFcubGVuZ3RoLE4ubGVuZ3RoKSxKPTA7SjxLOysrSil0ZSs9V1tKXV5OW0pdO3JldHVybiB0ZX0o''@;'; put 'put ''Vyx0aGlzLl9hdXRoVGFnKSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YSIpO3RoaXMuX2F1dGhUYWc9Vyx0aGlzLl9jaXBoZXIuc2NydWIoKX0sWS5wcm90b3R5cGUuZ2V0QXV0aFRhZz1mdW5jdGlvbigpe2lmKHRoaXMu''@;'; put 'put ''X2RlY3J5cHR8fCFCLmlzQnVmZmVyKHRoaXMuX2F1dGhUYWcpKXRocm93IG5ldyBFcnJvcigiQXR0ZW1wdGluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKTtyZXR1cm4gdGhpcy5fYXV0aFRhZ30sWS5wcm90b3R5cGUuc2V0QXV0aFRhZz1mdW5jdGlvbihOKXtpZigh''@;'; put 'put ''dGhpcy5fZGVjcnlwdCl0aHJvdyBuZXcgRXJyb3IoIkF0dGVtcHRpbmcgdG8gc2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlIik7dGhpcy5fYXV0aFRhZz1OfSxZLnByb3RvdHlwZS5zZXRBQUQ9ZnVuY3Rpb24oTil7aWYodGhpcy5fY2FsbGVkKXRocm93IG5ldyBFcnJvcigiQXR0''@;'; put 'put ''ZW1wdGluZyB0byBzZXQgQUFEIGluIHVuc3VwcG9ydGVkIHN0YXRlIik7dGhpcy5fZ2hhc2gudXBkYXRlKE4pLHRoaXMuX2FsZW4rPU4ubGVuZ3RofSxYZS5leHBvcnRzPVl9LDg0MzMwOihYZSxKZSxMKT0+e3ZhciBtZT1MKDk2OTAwKSxCPUwoMzQ0NDIpLEU9TCg0NDk0Nik7SmUuY3JlYXRl''@;'; put 'put ''Q2lwaGVyPUplLkNpcGhlcj1tZS5jcmVhdGVDaXBoZXIsSmUuY3JlYXRlQ2lwaGVyaXY9SmUuQ2lwaGVyaXY9bWUuY3JlYXRlQ2lwaGVyaXYsSmUuY3JlYXRlRGVjaXBoZXI9SmUuRGVjaXBoZXI9Qi5jcmVhdGVEZWNpcGhlcixKZS5jcmVhdGVEZWNpcGhlcml2PUplLkRlY2lwaGVyaXY9Qi5j''@;'; put 'put ''cmVhdGVEZWNpcGhlcml2LEplLmxpc3RDaXBoZXJzPUplLmdldENpcGhlcnM9ZnVuY3Rpb24gRWUoKXtyZXR1cm4gT2JqZWN0LmtleXMoRSl9fSwzNDQ0MjooWGUsSmUsTCk9Pnt2YXIgbWU9TCg2OTM4MiksQj1MKDczNTAyKS5CdWZmZXIsRT1MKDI5MTcxKSxFZT1MKDM4NDQxKSxVPUwoNjEw''@;'; put 'put ''NTIpLFE9TCg0MTg5OSksaj1MKDQwMzQ3KTtmdW5jdGlvbiBhZShLLEosc2Upe1UuY2FsbCh0aGlzKSx0aGlzLl9jYWNoZT1uZXcgWSx0aGlzLl9sYXN0PXZvaWQgMCx0aGlzLl9jaXBoZXI9bmV3IFEuQUVTKEopLHRoaXMuX3ByZXY9Qi5mcm9tKHNlKSx0aGlzLl9tb2RlPUssdGhpcy5fYXV0''@;'; put 'put ''b3BhZGRpbmc9ITB9ZnVuY3Rpb24gWSgpe3RoaXMuY2FjaGU9Qi5hbGxvY1Vuc2FmZSgwKX1mdW5jdGlvbiBOKEssSixzZSl7dmFyIG9lPUVbSy50b0xvd2VyQ2FzZSgpXTtpZighb2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7aWYoInN0cmluZyI9PXR5cGVv''@;'; put 'put ''ZiBzZSYmKHNlPUIuZnJvbShzZSkpLCJHQ00iIT09b2UubW9kZSYmc2UubGVuZ3RoIT09b2UuaXYpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBpdiBsZW5ndGggIitzZS5sZW5ndGgpO2lmKCJzdHJpbmciPT10eXBlb2YgSiYmKEo9Qi5mcm9tKEopKSxKLmxlbmd0aCE9PW9lLmtleS84''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQga2V5IGxlbmd0aCAiK0oubGVuZ3RoKTtyZXR1cm4ic3RyZWFtIj09PW9lLnR5cGU/bmV3IEVlKG9lLm1vZHVsZSxKLHNlLCEwKToiYXV0aCI9PT1vZS50eXBlP25ldyBtZShvZS5tb2R1bGUsSixzZSwhMCk6bmV3IGFlKG9lLm1vZHVsZSxK''@;'; put 'put ''LHNlKX1MKDgzODk0KShhZSxVKSxhZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihLKXt0aGlzLl9jYWNoZS5hZGQoSyk7Zm9yKHZhciBKLHNlLG9lPVtdO0o9dGhpcy5fY2FjaGUuZ2V0KHRoaXMuX2F1dG9wYWRkaW5nKTspc2U9dGhpcy5fbW9kZS5kZWNyeXB0KHRoaXMsSiksb2UucHVz''@;'; put 'put ''aChzZSk7cmV0dXJuIEIuY29uY2F0KG9lKX0sYWUucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3ZhciBLPXRoaXMuX2NhY2hlLmZsdXNoKCk7aWYodGhpcy5fYXV0b3BhZGRpbmcpcmV0dXJuIGZ1bmN0aW9uIFcoSyl7dmFyIEo9S1sxNV07aWYoSjwxfHxKPjE2KXRocm93IG5ldyBFcnJv''@;'; put 'put ''cigidW5hYmxlIHRvIGRlY3J5cHQgZGF0YSIpO2Zvcih2YXIgc2U9LTE7KytzZTxKOylpZihLW3NlKygxNi1KKV0hPT1KKXRocm93IG5ldyBFcnJvcigidW5hYmxlIHRvIGRlY3J5cHQgZGF0YSIpO2lmKDE2IT09SilyZXR1cm4gSy5zbGljZSgwLDE2LUopfSh0aGlzLl9tb2RlLmRlY3J5cHQo''@;'; put 'put ''dGhpcyxLKSk7aWYoSyl0aHJvdyBuZXcgRXJyb3IoImRhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCIpfSxhZS5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmc9ZnVuY3Rpb24oSyl7cmV0dXJuIHRoaXMuX2F1dG9wYWRkaW5nPSEhSyx0aGlzfSxZLnByb3RvdHlwZS5hZGQ9ZnVuY3Rp''@;'; put 'put ''b24oSyl7dGhpcy5jYWNoZT1CLmNvbmNhdChbdGhpcy5jYWNoZSxLXSl9LFkucHJvdG90eXBlLmdldD1mdW5jdGlvbihLKXt2YXIgSjtpZihLKXtpZih0aGlzLmNhY2hlLmxlbmd0aD4xNilyZXR1cm4gSj10aGlzLmNhY2hlLnNsaWNlKDAsMTYpLHRoaXMuY2FjaGU9dGhpcy5jYWNoZS5zbGlj''@;'; put 'put ''ZSgxNiksSn1lbHNlIGlmKHRoaXMuY2FjaGUubGVuZ3RoPj0xNilyZXR1cm4gSj10aGlzLmNhY2hlLnNsaWNlKDAsMTYpLHRoaXMuY2FjaGU9dGhpcy5jYWNoZS5zbGljZSgxNiksSjtyZXR1cm4gbnVsbH0sWS5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXtpZih0aGlzLmNhY2hlLmxlbmd0''@;'; put 'put ''aClyZXR1cm4gdGhpcy5jYWNoZX0sSmUuY3JlYXRlRGVjaXBoZXI9ZnVuY3Rpb24gdGUoSyxKKXt2YXIgc2U9RVtLLnRvTG93ZXJDYXNlKCldO2lmKCFzZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTt2YXIgb2U9aihKLCExLHNlLmtleSxzZS5pdik7cmV0dXJu''@;'; put 'put ''IE4oSyxvZS5rZXksb2UuaXYpfSxKZS5jcmVhdGVEZWNpcGhlcml2PU59LDk2OTAwOihYZSxKZSxMKT0+e3ZhciBtZT1MKDI5MTcxKSxCPUwoNjkzODIpLEU9TCg3MzUwMikuQnVmZmVyLEVlPUwoMzg0NDEpLFU9TCg2MTA1MiksUT1MKDQxODk5KSxqPUwoNDAzNDcpO2Z1bmN0aW9uIGFlKEss''@;'; put 'put ''SixzZSl7VS5jYWxsKHRoaXMpLHRoaXMuX2NhY2hlPW5ldyBXLHRoaXMuX2NpcGhlcj1uZXcgUS5BRVMoSiksdGhpcy5fcHJldj1FLmZyb20oc2UpLHRoaXMuX21vZGU9Syx0aGlzLl9hdXRvcGFkZGluZz0hMH1MKDgzODk0KShhZSxVKSxhZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihL''@;'; put 'put ''KXt0aGlzLl9jYWNoZS5hZGQoSyk7Zm9yKHZhciBKLHNlLG9lPVtdO0o9dGhpcy5fY2FjaGUuZ2V0KCk7KXNlPXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLEopLG9lLnB1c2goc2UpO3JldHVybiBFLmNvbmNhdChvZSl9O3ZhciBZPUUuYWxsb2MoMTYsMTYpO2Z1bmN0aW9uIFcoKXt0aGlzLmNh''@;'; put 'put ''Y2hlPUUuYWxsb2NVbnNhZmUoMCl9ZnVuY3Rpb24gTihLLEosc2Upe3ZhciBvZT1tZVtLLnRvTG93ZXJDYXNlKCldO2lmKCFvZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTtpZigic3RyaW5nIj09dHlwZW9mIEomJihKPUUuZnJvbShKKSksSi5sZW5ndGghPT1v''@;'; put 'put ''ZS5rZXkvOCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIGtleSBsZW5ndGggIitKLmxlbmd0aCk7aWYoInN0cmluZyI9PXR5cGVvZiBzZSYmKHNlPUUuZnJvbShzZSkpLCJHQ00iIT09b2UubW9kZSYmc2UubGVuZ3RoIT09b2UuaXYpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBp''@;'; put 'put ''diBsZW5ndGggIitzZS5sZW5ndGgpO3JldHVybiJzdHJlYW0iPT09b2UudHlwZT9uZXcgRWUob2UubW9kdWxlLEosc2UpOiJhdXRoIj09PW9lLnR5cGU/bmV3IEIob2UubW9kdWxlLEosc2UpOm5ldyBhZShvZS5tb2R1bGUsSixzZSl9YWUucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3Zh''@;'; put 'put ''ciBLPXRoaXMuX2NhY2hlLmZsdXNoKCk7aWYodGhpcy5fYXV0b3BhZGRpbmcpcmV0dXJuIEs9dGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsSyksdGhpcy5fY2lwaGVyLnNjcnViKCksSztpZighSy5lcXVhbHMoWSkpdGhyb3cgdGhpcy5fY2lwaGVyLnNjcnViKCksbmV3IEVycm9yKCJkYXRhIG5v''@;'; put 'put ''dCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGgiKX0sYWUucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nPWZ1bmN0aW9uKEspe3JldHVybiB0aGlzLl9hdXRvcGFkZGluZz0hIUssdGhpc30sVy5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKEspe3RoaXMuY2FjaGU9RS5jb25jYXQoW3RoaXMuY2FjaGUs''@;'; put 'put ''S10pfSxXLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLmNhY2hlLmxlbmd0aD4xNSl7dmFyIEs9dGhpcy5jYWNoZS5zbGljZSgwLDE2KTtyZXR1cm4gdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSxLfXJldHVybiBudWxsfSxXLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlv''@;'; put 'put ''bigpe2Zvcih2YXIgSz0xNi10aGlzLmNhY2hlLmxlbmd0aCxKPUUuYWxsb2NVbnNhZmUoSyksc2U9LTE7KytzZTxLOylKLndyaXRlVUludDgoSyxzZSk7cmV0dXJuIEUuY29uY2F0KFt0aGlzLmNhY2hlLEpdKX0sSmUuY3JlYXRlQ2lwaGVyaXY9TixKZS5jcmVhdGVDaXBoZXI9ZnVuY3Rpb24g''@;'; put 'put ''dGUoSyxKKXt2YXIgc2U9bWVbSy50b0xvd2VyQ2FzZSgpXTtpZighc2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7dmFyIG9lPWooSiwhMSxzZS5rZXksc2UuaXYpO3JldHVybiBOKEssb2Uua2V5LG9lLml2KX19LDY4ODU3OihYZSxKZSxMKT0+e3ZhciBtZT1M''@;'; put 'put ''KDczNTAyKS5CdWZmZXIsQj1tZS5hbGxvYygxNiwwKTtmdW5jdGlvbiBFZShRKXt2YXIgaj1tZS5hbGxvY1Vuc2FmZSgxNik7cmV0dXJuIGoud3JpdGVVSW50MzJCRShRWzBdPj4+MCwwKSxqLndyaXRlVUludDMyQkUoUVsxXT4+PjAsNCksai53cml0ZVVJbnQzMkJFKFFbMl0+Pj4wLDgpLGou''@;'; put 'put ''d3JpdGVVSW50MzJCRShRWzNdPj4+MCwxMiksan1mdW5jdGlvbiBVKFEpe3RoaXMuaD1RLHRoaXMuc3RhdGU9bWUuYWxsb2MoMTYsMCksdGhpcy5jYWNoZT1tZS5hbGxvY1Vuc2FmZSgwKX1VLnByb3RvdHlwZS5naGFzaD1mdW5jdGlvbihRKXtmb3IodmFyIGo9LTE7KytqPFEubGVuZ3RoOyl0''@;'; put 'put ''aGlzLnN0YXRlW2pdXj1RW2pdO3RoaXMuX211bHRpcGx5KCl9LFUucHJvdG90eXBlLl9tdWx0aXBseT1mdW5jdGlvbigpe2Zvcih2YXIgcmUsWSxRPWZ1bmN0aW9uIEUoUSl7cmV0dXJuW1EucmVhZFVJbnQzMkJFKDApLFEucmVhZFVJbnQzMkJFKDQpLFEucmVhZFVJbnQzMkJFKDgpLFEucmVh''@;'; put 'put ''ZFVJbnQzMkJFKDEyKV19KHRoaXMuaCksaj1bMCwwLDAsMF0sVz0tMTsrK1c8MTI4Oyl7Zm9yKDAhPSh0aGlzLnN0YXRlW35+KFcvOCldJjE8PDctVyU4KSYmKGpbMF1ePVFbMF0salsxXV49UVsxXSxqWzJdXj1RWzJdLGpbM11ePVFbM10pLFk9MCE9KDEmUVszXSkscmU9MztyZT4wO3JlLS0p''@;'; put 'put ''UVtyZV09UVtyZV0+Pj4xfCgxJlFbcmUtMV0pPDwzMTtRWzBdPVFbMF0+Pj4xLFkmJihRWzBdPVFbMF1eMjI1PDwyNCl9dGhpcy5zdGF0ZT1FZShqKX0sVS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKFEpe3RoaXMuY2FjaGU9bWUuY29uY2F0KFt0aGlzLmNhY2hlLFFdKTtmb3IodmFyIGo7''@;'; put 'put ''dGhpcy5jYWNoZS5sZW5ndGg+PTE2OylqPXRoaXMuY2FjaGUuc2xpY2UoMCwxNiksdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSx0aGlzLmdoYXNoKGopfSxVLnByb3RvdHlwZS5maW5hbD1mdW5jdGlvbihRLGope3JldHVybiB0aGlzLmNhY2hlLmxlbmd0aCYmdGhpcy5naGFzaCht''@;'; put 'put ''ZS5jb25jYXQoW3RoaXMuY2FjaGUsQl0sMTYpKSx0aGlzLmdoYXNoKEVlKFswLFEsMCxqXSkpLHRoaXMuc3RhdGV9LFhlLmV4cG9ydHM9VX0sNzk2ODpYZT0+e1hlLmV4cG9ydHM9ZnVuY3Rpb24gSmUoTCl7Zm9yKHZhciBCLG1lPUwubGVuZ3RoO21lLS07KXtpZigyNTUhPT0oQj1MLnJlYWRV''@;'; put 'put ''SW50OChtZSkpKXtCKyssTC53cml0ZVVJbnQ4KEIsbWUpO2JyZWFrfUwud3JpdGVVSW50OCgwLG1lKX19fSw2NDkwMzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg1ODc4OSk7SmUuZW5jcnlwdD1mdW5jdGlvbihCLEUpe3ZhciBFZT1tZShFLEIuX3ByZXYpO3JldHVybiBCLl9wcmV2PUIuX2NpcGhl''@;'; put 'put ''ci5lbmNyeXB0QmxvY2soRWUpLEIuX3ByZXZ9LEplLmRlY3J5cHQ9ZnVuY3Rpb24oQixFKXt2YXIgRWU9Qi5fcHJldjtCLl9wcmV2PUU7dmFyIFU9Qi5fY2lwaGVyLmRlY3J5cHRCbG9jayhFKTtyZXR1cm4gbWUoVSxFZSl9fSw1OTg4NTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg3MzUwMikuQnVm''@;'; put 'put ''ZmVyLEI9TCg1ODc4OSk7ZnVuY3Rpb24gRShFZSxVLFEpe3ZhciBqPVUubGVuZ3RoLHJlPUIoVSxFZS5fY2FjaGUpO3JldHVybiBFZS5fY2FjaGU9RWUuX2NhY2hlLnNsaWNlKGopLEVlLl9wcmV2PW1lLmNvbmNhdChbRWUuX3ByZXYsUT9VOnJlXSkscmV9SmUuZW5jcnlwdD1mdW5jdGlvbihF''@;'; put 'put ''ZSxVLFEpe2Zvcih2YXIgcmUsaj1tZS5hbGxvY1Vuc2FmZSgwKTtVLmxlbmd0aDspe2lmKDA9PT1FZS5fY2FjaGUubGVuZ3RoJiYoRWUuX2NhY2hlPUVlLl9jaXBoZXIuZW5jcnlwdEJsb2NrKEVlLl9wcmV2KSxFZS5fcHJldj1tZS5hbGxvY1Vuc2FmZSgwKSksIShFZS5fY2FjaGUubGVuZ3Ro''@;'; put 'put ''PD1VLmxlbmd0aCkpe2o9bWUuY29uY2F0KFtqLEUoRWUsVSxRKV0pO2JyZWFrfWo9bWUuY29uY2F0KFtqLEUoRWUsVS5zbGljZSgwLHJlPUVlLl9jYWNoZS5sZW5ndGgpLFEpXSksVT1VLnNsaWNlKHJlKX1yZXR1cm4gan19LDg2NTMxOihYZSxKZSxMKT0+e3ZhciBtZT1MKDczNTAyKS5CdWZm''@;'; put 'put ''ZXI7ZnVuY3Rpb24gQihFZSxVLFEpe2Zvcih2YXIgVyxOLHJlPS0xLFk9MDsrK3JlPDg7KVkrPSgxMjgmKE49RWUuX2NpcGhlci5lbmNyeXB0QmxvY2soRWUuX3ByZXYpWzBdXihXPVUmMTw8Ny1yZT8xMjg6MCkpKT4+cmUlOCxFZS5fcHJldj1FKEVlLl9wcmV2LFE/VzpOKTtyZXR1cm4gWX1m''@;'; put 'put ''dW5jdGlvbiBFKEVlLFUpe3ZhciBRPUVlLmxlbmd0aCxqPS0xLHJlPW1lLmFsbG9jVW5zYWZlKEVlLmxlbmd0aCk7Zm9yKEVlPW1lLmNvbmNhdChbRWUsbWUuZnJvbShbVV0pXSk7KytqPFE7KXJlW2pdPUVlW2pdPDwxfEVlW2orMV0+Pjc7cmV0dXJuIHJlfUplLmVuY3J5cHQ9ZnVuY3Rpb24o''@;'; put 'put ''RWUsVSxRKXtmb3IodmFyIGo9VS5sZW5ndGgscmU9bWUuYWxsb2NVbnNhZmUoaiksYWU9LTE7KythZTxqOylyZVthZV09QihFZSxVW2FlXSxRKTtyZXR1cm4gcmV9fSwyMTY0MTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg3MzUwMikuQnVmZmVyO2Z1bmN0aW9uIEIoRSxFZSxVKXt2YXIgaj1FLl9j''@;'; put 'put ''aXBoZXIuZW5jcnlwdEJsb2NrKEUuX3ByZXYpWzBdXkVlO3JldHVybiBFLl9wcmV2PW1lLmNvbmNhdChbRS5fcHJldi5zbGljZSgxKSxtZS5mcm9tKFtVP0VlOmpdKV0pLGp9SmUuZW5jcnlwdD1mdW5jdGlvbihFLEVlLFUpe2Zvcih2YXIgUT1FZS5sZW5ndGgsaj1tZS5hbGxvY1Vuc2FmZShR''@;'; put 'put ''KSxyZT0tMTsrK3JlPFE7KWpbcmVdPUIoRSxFZVtyZV0sVSk7cmV0dXJuIGp9fSwxMTE1MDooWGUsSmUsTCk9Pnt2YXIgbWU9TCg1ODc4OSksQj1MKDczNTAyKS5CdWZmZXIsRT1MKDc5NjgpO2Z1bmN0aW9uIEVlKFEpe3ZhciBqPVEuX2NpcGhlci5lbmNyeXB0QmxvY2tSYXcoUS5fcHJldik7''@;'; put 'put ''cmV0dXJuIEUoUS5fcHJldiksan1KZS5lbmNyeXB0PWZ1bmN0aW9uKFEsail7dmFyIHJlPU1hdGguY2VpbChqLmxlbmd0aC8xNiksYWU9US5fY2FjaGUubGVuZ3RoO1EuX2NhY2hlPUIuY29uY2F0KFtRLl9jYWNoZSxCLmFsbG9jVW5zYWZlKDE2KnJlKV0pO2Zvcih2YXIgWT0wO1k8cmU7WSsr''@;'; put 'put ''KXt2YXIgVz1FZShRKSxOPWFlKzE2Klk7US5fY2FjaGUud3JpdGVVSW50MzJCRShXWzBdLE4rMCksUS5fY2FjaGUud3JpdGVVSW50MzJCRShXWzFdLE4rNCksUS5fY2FjaGUud3JpdGVVSW50MzJCRShXWzJdLE4rOCksUS5fY2FjaGUud3JpdGVVSW50MzJCRShXWzNdLE4rMTIpfXZhciB0ZT1R''@;'; put 'put ''Ll9jYWNoZS5zbGljZSgwLGoubGVuZ3RoKTtyZXR1cm4gUS5fY2FjaGU9US5fY2FjaGUuc2xpY2Uoai5sZW5ndGgpLG1lKGosdGUpfX0sMjE3MDQ6KFhlLEplKT0+e0plLmVuY3J5cHQ9ZnVuY3Rpb24oTCxtZSl7cmV0dXJuIEwuX2NpcGhlci5lbmNyeXB0QmxvY2sobWUpfSxKZS5kZWNyeXB0''@;'; put 'put ''PWZ1bmN0aW9uKEwsbWUpe3JldHVybiBMLl9jaXBoZXIuZGVjcnlwdEJsb2NrKG1lKX19LDI5MTcxOihYZSxKZSxMKT0+e3ZhciBtZT17RUNCOkwoMjE3MDQpLENCQzpMKDY0OTAzKSxDRkI6TCg1OTg4NSksQ0ZCODpMKDIxNjQxKSxDRkIxOkwoODY1MzEpLE9GQjpMKDg2ODE2KSxDVFI6TCgx''@;'; put 'put ''MTE1MCksR0NNOkwoMTExNTApfSxCPUwoNDQ5NDYpO2Zvcih2YXIgRSBpbiBCKUJbRV0ubW9kdWxlPW1lW0JbRV0ubW9kZV07WGUuZXhwb3J0cz1CfSw4NjgxNjooWGUsSmUsTCk9Pnt2YXIgbWU9TCg1ODc4OSk7ZnVuY3Rpb24gQihFKXtyZXR1cm4gRS5fcHJldj1FLl9jaXBoZXIuZW5jcnlw''@;'; put 'put ''dEJsb2NrKEUuX3ByZXYpLEUuX3ByZXZ9SmUuZW5jcnlwdD1mdW5jdGlvbihFLEVlKXtmb3IoO0UuX2NhY2hlLmxlbmd0aDxFZS5sZW5ndGg7KUUuX2NhY2hlPUJ1ZmZlci5jb25jYXQoW0UuX2NhY2hlLEIoRSldKTt2YXIgVT1FLl9jYWNoZS5zbGljZSgwLEVlLmxlbmd0aCk7cmV0dXJuIEUu''@;'; put 'put ''X2NhY2hlPUUuX2NhY2hlLnNsaWNlKEVlLmxlbmd0aCksbWUoRWUsVSl9fSwzODQ0MTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0MTg5OSksQj1MKDczNTAyKS5CdWZmZXIsRT1MKDYxMDUyKTtmdW5jdGlvbiBVKFEsaixyZSxhZSl7RS5jYWxsKHRoaXMpLHRoaXMuX2NpcGhlcj1uZXcgbWUuQUVT''@;'; put 'put ''KGopLHRoaXMuX3ByZXY9Qi5mcm9tKHJlKSx0aGlzLl9jYWNoZT1CLmFsbG9jVW5zYWZlKDApLHRoaXMuX3NlY0NhY2hlPUIuYWxsb2NVbnNhZmUoMCksdGhpcy5fZGVjcnlwdD1hZSx0aGlzLl9tb2RlPVF9TCg4Mzg5NCkoVSxFKSxVLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKFEpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcyxRLHRoaXMuX2RlY3J5cHQpfSxVLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt0aGlzLl9jaXBoZXIuc2NydWIoKX0sWGUuZXhwb3J0cz1VfSw1NTI1NTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg5MDA0KSxCPUwoODQzMzApLEU9TCgyOTE3''@;'; put 'put ''MSksRWU9TCg1MTExNSksVT1MKDQwMzQ3KTtmdW5jdGlvbiByZShXLE4sdGUpe2lmKFc9Vy50b0xvd2VyQ2FzZSgpLEVbV10pcmV0dXJuIEIuY3JlYXRlQ2lwaGVyaXYoVyxOLHRlKTtpZihFZVtXXSlyZXR1cm4gbmV3IG1lKHtrZXk6Tixpdjp0ZSxtb2RlOld9KTt0aHJvdyBuZXcgVHlwZUVy''@;'; put 'put ''cm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKX1mdW5jdGlvbiBhZShXLE4sdGUpe2lmKFc9Vy50b0xvd2VyQ2FzZSgpLEVbV10pcmV0dXJuIEIuY3JlYXRlRGVjaXBoZXJpdihXLE4sdGUpO2lmKEVlW1ddKXJldHVybiBuZXcgbWUoe2tleTpOLGl2OnRlLG1vZGU6VyxkZWNyeXB0OiEwfSk7dGhy''@;'; put 'put ''b3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIil9SmUuY3JlYXRlQ2lwaGVyPUplLkNpcGhlcj1mdW5jdGlvbiBRKFcsTil7dmFyIHRlLEs7aWYoVz1XLnRvTG93ZXJDYXNlKCksRVtXXSl0ZT1FW1ddLmtleSxLPUVbV10uaXY7ZWxzZXtpZighRWVbV10pdGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7dGU9OCpFZVtXXS5rZXksSz1FZVtXXS5pdn12YXIgSj1VKE4sITEsdGUsSyk7cmV0dXJuIHJlKFcsSi5rZXksSi5pdil9LEplLmNyZWF0ZUNpcGhlcml2PUplLkNpcGhlcml2PXJlLEplLmNyZWF0ZURlY2lwaGVyPUplLkRlY2lwaGVyPWZ1''@;'; put 'put ''bmN0aW9uIGooVyxOKXt2YXIgdGUsSztpZihXPVcudG9Mb3dlckNhc2UoKSxFW1ddKXRlPUVbV10ua2V5LEs9RVtXXS5pdjtlbHNle2lmKCFFZVtXXSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTt0ZT04KkVlW1ddLmtleSxLPUVlW1ddLml2fXZhciBKPVUoTiwh''@;'; put 'put ''MSx0ZSxLKTtyZXR1cm4gYWUoVyxKLmtleSxKLml2KX0sSmUuY3JlYXRlRGVjaXBoZXJpdj1KZS5EZWNpcGhlcml2PWFlLEplLmxpc3RDaXBoZXJzPUplLmdldENpcGhlcnM9ZnVuY3Rpb24gWSgpe3JldHVybiBPYmplY3Qua2V5cyhFZSkuY29uY2F0KEIuZ2V0Q2lwaGVycygpKX19LDkwMDQ6''@;'; put 'put ''KFhlLEplLEwpPT57dmFyIG1lPUwoNjEwNTIpLEI9TCg3MzY4NCksRT1MKDgzODk0KSxFZT1MKDczNTAyKS5CdWZmZXIsVT17ImRlcy1lZGUzLWNiYyI6Qi5DQkMuaW5zdGFudGlhdGUoQi5FREUpLCJkZXMtZWRlMyI6Qi5FREUsImRlcy1lZGUtY2JjIjpCLkNCQy5pbnN0YW50aWF0ZShCLkVE''@;'; put 'put ''RSksImRlcy1lZGUiOkIuRURFLCJkZXMtY2JjIjpCLkNCQy5pbnN0YW50aWF0ZShCLkRFUyksImRlcy1lY2IiOkIuREVTfTtmdW5jdGlvbiBRKGope21lLmNhbGwodGhpcyk7dmFyIFkscmU9ai5tb2RlLnRvTG93ZXJDYXNlKCksYWU9VVtyZV07WT1qLmRlY3J5cHQ/ImRlY3J5cHQiOiJlbmNy''@;'; put 'put ''eXB0Ijt2YXIgVz1qLmtleTtFZS5pc0J1ZmZlcihXKXx8KFc9RWUuZnJvbShXKSksKCJkZXMtZWRlIj09PXJlfHwiZGVzLWVkZS1jYmMiPT09cmUpJiYoVz1FZS5jb25jYXQoW1csVy5zbGljZSgwLDgpXSkpO3ZhciBOPWouaXY7RWUuaXNCdWZmZXIoTil8fChOPUVlLmZyb20oTikpLHRoaXMu''@;'; put 'put ''X2Rlcz1hZS5jcmVhdGUoe2tleTpXLGl2Ok4sdHlwZTpZfSl9VS5kZXM9VVsiZGVzLWNiYyJdLFUuZGVzMz1VWyJkZXMtZWRlMy1jYmMiXSxYZS5leHBvcnRzPVEsRShRLG1lKSxRLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGope3JldHVybiBFZS5mcm9tKHRoaXMuX2Rlcy51cGRhdGUo''@;'; put 'put ''aikpfSxRLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXtyZXR1cm4gRWUuZnJvbSh0aGlzLl9kZXMuZmluYWwoKSl9fSw1MTExNTooWGUsSmUpPT57SmVbImRlcy1lY2IiXT17a2V5OjgsaXY6MH0sSmVbImRlcy1jYmMiXT1KZS5kZXM9e2tleTo4LGl2Ojh9LEplWyJkZXMtZWRlMy1jYmMi''@;'; put 'put ''XT1KZS5kZXMzPXtrZXk6MjQsaXY6OH0sSmVbImRlcy1lZGUzIl09e2tleToyNCxpdjowfSxKZVsiZGVzLWVkZS1jYmMiXT17a2V5OjE2LGl2Ojh9LEplWyJkZXMtZWRlIl09e2tleToxNixpdjowfX0sODQ2NjooWGUsSmUsTCk9Pnt2YXIgbWU9TCg5ODUzOCksQj1MKDUzNzUzKTtmdW5jdGlv''@;'; put 'put ''biBFZShRKXt2YXIgcmUsaj1RLm1vZHVsdXMuYnl0ZUxlbmd0aCgpO2Rve3JlPW5ldyBtZShCKGopKX13aGlsZShyZS5jbXAoUS5tb2R1bHVzKT49MHx8IXJlLnVtb2QoUS5wcmltZTEpfHwhcmUudW1vZChRLnByaW1lMikpO3JldHVybiByZX1mdW5jdGlvbiBVKFEsail7dmFyIHJlPWZ1bmN0''@;'; put 'put ''aW9uIEUoUSl7dmFyIGo9RWUoUSk7cmV0dXJue2JsaW5kZXI6ai50b1JlZChtZS5tb250KFEubW9kdWx1cykpLnJlZFBvdyhuZXcgbWUoUS5wdWJsaWNFeHBvbmVudCkpLmZyb21SZWQoKSx1bmJsaW5kZXI6ai5pbnZtKFEubW9kdWx1cyl9fShqKSxhZT1qLm1vZHVsdXMuYnl0ZUxlbmd0aCgp''@;'; put 'put ''LFk9bmV3IG1lKFEpLm11bChyZS5ibGluZGVyKS51bW9kKGoubW9kdWx1cyksVz1ZLnRvUmVkKG1lLm1vbnQoai5wcmltZTEpKSxOPVkudG9SZWQobWUubW9udChqLnByaW1lMikpLHRlPWouY29lZmZpY2llbnQsSz1qLnByaW1lMSxKPWoucHJpbWUyLHNlPVcucmVkUG93KGouZXhwb25lbnQx''@;'; put 'put ''KS5mcm9tUmVkKCksb2U9Ti5yZWRQb3coai5leHBvbmVudDIpLmZyb21SZWQoKSxjZT1zZS5pc3ViKG9lKS5pbXVsKHRlKS51bW9kKEspLmltdWwoSik7cmV0dXJuIG9lLmlhZGQoY2UpLmltdWwocmUudW5ibGluZGVyKS51bW9kKGoubW9kdWx1cykudG9BcnJheUxpa2UoQnVmZmVyLCJiZSIs''@;'; put 'put ''YWUpfVUuZ2V0cj1FZSxYZS5leHBvcnRzPVV9LDg3NzkzOihYZSxKZSxMKT0+e1hlLmV4cG9ydHM9TCg3NTIwNyl9LDM5MjM6KFhlLEplLEwpPT57dmFyIG1lPUwoODQ0NikuQnVmZmVyLEI9TCg5NjM4NiksRT1MKDY1Njg1KSxFZT1MKDgzODk0KSxVPUwoNzk5NDcpLFE9TCgzOTQ2KSxqPUwo''@;'; put 'put ''NzUyMDcpO2Z1bmN0aW9uIHJlKE4pe0UuV3JpdGFibGUuY2FsbCh0aGlzKTt2YXIgdGU9altOXTtpZighdGUpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIG1lc3NhZ2UgZGlnZXN0Iik7dGhpcy5faGFzaFR5cGU9dGUuaGFzaCx0aGlzLl9oYXNoPUIodGUuaGFzaCksdGhpcy5fdGFnPXRlLmlk''@;'; put 'put ''LHRoaXMuX3NpZ25UeXBlPXRlLnNpZ259ZnVuY3Rpb24gYWUoTil7RS5Xcml0YWJsZS5jYWxsKHRoaXMpO3ZhciB0ZT1qW05dO2lmKCF0ZSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gbWVzc2FnZSBkaWdlc3QiKTt0aGlzLl9oYXNoPUIodGUuaGFzaCksdGhpcy5fdGFnPXRlLmlkLHRoaXMu''@;'; put 'put ''X3NpZ25UeXBlPXRlLnNpZ259ZnVuY3Rpb24gWShOKXtyZXR1cm4gbmV3IHJlKE4pfWZ1bmN0aW9uIFcoTil7cmV0dXJuIG5ldyBhZShOKX1PYmplY3Qua2V5cyhqKS5mb3JFYWNoKGZ1bmN0aW9uKE4pe2pbTl0uaWQ9bWUuZnJvbShqW05dLmlkLCJoZXgiKSxqW04udG9Mb3dlckNhc2UoKV09''@;'; put 'put ''altOXX0pLEVlKHJlLEUuV3JpdGFibGUpLHJlLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24odGUsSyxKKXt0aGlzLl9oYXNoLnVwZGF0ZSh0ZSksSigpfSxyZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHRlLEspe3JldHVybiJzdHJpbmciPT10eXBlb2YgdGUmJih0ZT1tZS5mcm9tKHRl''@;'; put 'put ''LEspKSx0aGlzLl9oYXNoLnVwZGF0ZSh0ZSksdGhpc30scmUucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24odGUsSyl7dGhpcy5lbmQoKTt2YXIgSj10aGlzLl9oYXNoLmRpZ2VzdCgpLHNlPVUoSix0ZSx0aGlzLl9oYXNoVHlwZSx0aGlzLl9zaWduVHlwZSx0aGlzLl90YWcpO3JldHVybiBLP3Nl''@;'; put 'put ''LnRvU3RyaW5nKEspOnNlfSxFZShhZSxFLldyaXRhYmxlKSxhZS5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKHRlLEssSil7dGhpcy5faGFzaC51cGRhdGUodGUpLEooKX0sYWUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0ZSxLKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHRlJiYodGU9''@;'; put 'put ''bWUuZnJvbSh0ZSxLKSksdGhpcy5faGFzaC51cGRhdGUodGUpLHRoaXN9LGFlLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24odGUsSyxKKXsic3RyaW5nIj09dHlwZW9mIEsmJihLPW1lLmZyb20oSyxKKSksdGhpcy5lbmQoKTt2YXIgc2U9dGhpcy5faGFzaC5kaWdlc3QoKTtyZXR1cm4gUShL''@;'; put 'put ''LHNlLHRlLHRoaXMuX3NpZ25UeXBlLHRoaXMuX3RhZyl9LFhlLmV4cG9ydHM9e1NpZ246WSxWZXJpZnk6VyxjcmVhdGVTaWduOlksY3JlYXRlVmVyaWZ5Old9fSw3OTk0NzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg4NDQ2KS5CdWZmZXIsQj1MKDc0NTI5KSxFPUwoODQ2NiksRWU9TCg1NzcxNSku''@;'; put 'put ''ZWMsVT1MKDk4NTM4KSxRPUwoMjI3NzIpLGo9TCgxMzA4KTtmdW5jdGlvbiBOKG9lLGNlLGRlLHZlKXtpZigob2U9bWUuZnJvbShvZS50b0FycmF5KCkpKS5sZW5ndGg8Y2UuYnl0ZUxlbmd0aCgpKXt2YXIgQWU9bWUuYWxsb2MoY2UuYnl0ZUxlbmd0aCgpLW9lLmxlbmd0aCk7b2U9bWUuY29u''@;'; put 'put ''Y2F0KFtBZSxvZV0pfXZhciBrZT1kZS5sZW5ndGgsU2U9ZnVuY3Rpb24gSyhvZSxjZSl7b2U9KG9lPXRlKG9lLGNlKSkubW9kKGNlKTt2YXIgZGU9bWUuZnJvbShvZS50b0FycmF5KCkpO2lmKGRlLmxlbmd0aDxjZS5ieXRlTGVuZ3RoKCkpe3ZhciB2ZT1tZS5hbGxvYyhjZS5ieXRlTGVuZ3Ro''@;'; put 'put ''KCktZGUubGVuZ3RoKTtkZT1tZS5jb25jYXQoW3ZlLGRlXSl9cmV0dXJuIGRlfShkZSxjZSksSWU9bWUuYWxsb2Moa2UpO0llLmZpbGwoMSk7dmFyIFRlPW1lLmFsbG9jKGtlKTtyZXR1cm4gVGU9Qih2ZSxUZSkudXBkYXRlKEllKS51cGRhdGUobWUuZnJvbShbMF0pKS51cGRhdGUob2UpLnVw''@;'; put 'put ''ZGF0ZShTZSkuZGlnZXN0KCksSWU9Qih2ZSxUZSkudXBkYXRlKEllKS5kaWdlc3QoKSx7azpUZT1CKHZlLFRlKS51cGRhdGUoSWUpLnVwZGF0ZShtZS5mcm9tKFsxXSkpLnVwZGF0ZShvZSkudXBkYXRlKFNlKS5kaWdlc3QoKSx2OkllPUIodmUsVGUpLnVwZGF0ZShJZSkuZGlnZXN0KCl9fWZ1''@;'; put 'put ''bmN0aW9uIHRlKG9lLGNlKXt2YXIgZGU9bmV3IFUob2UpLHZlPShvZS5sZW5ndGg8PDMpLWNlLmJpdExlbmd0aCgpO3JldHVybiB2ZT4wJiZkZS5pc2hybih2ZSksZGV9ZnVuY3Rpb24gSihvZSxjZSxkZSl7dmFyIHZlLEFlO2Rve2Zvcih2ZT1tZS5hbGxvYygwKTs4KnZlLmxlbmd0aDxvZS5i''@;'; put 'put ''aXRMZW5ndGgoKTspY2Uudj1CKGRlLGNlLmspLnVwZGF0ZShjZS52KS5kaWdlc3QoKSx2ZT1tZS5jb25jYXQoW3ZlLGNlLnZdKTtBZT10ZSh2ZSxvZSksY2Uuaz1CKGRlLGNlLmspLnVwZGF0ZShjZS52KS51cGRhdGUobWUuZnJvbShbMF0pKS5kaWdlc3QoKSxjZS52PUIoZGUsY2UuaykudXBk''@;'; put 'put ''YXRlKGNlLnYpLmRpZ2VzdCgpfXdoaWxlKC0xIT09QWUuY21wKG9lKSk7cmV0dXJuIEFlfWZ1bmN0aW9uIHNlKG9lLGNlLGRlLHZlKXtyZXR1cm4gb2UudG9SZWQoVS5tb250KGRlKSkucmVkUG93KGNlKS5mcm9tUmVkKCkubW9kKHZlKX1YZS5leHBvcnRzPWZ1bmN0aW9uIHJlKG9lLGNlLGRl''@;'; put 'put ''LHZlLEFlKXt2YXIga2U9UShjZSk7aWYoa2UuY3VydmUpe2lmKCJlY2RzYSIhPT12ZSYmImVjZHNhL3JzYSIhPT12ZSl0aHJvdyBuZXcgRXJyb3IoIndyb25nIHByaXZhdGUga2V5IHR5cGUiKTtyZXR1cm4gZnVuY3Rpb24gYWUob2UsY2Upe3ZhciBkZT1qW2NlLmN1cnZlLmpvaW4oIi4iKV07''@;'; put 'put ''aWYoIWRlKXRocm93IG5ldyBFcnJvcigidW5rbm93biBjdXJ2ZSAiK2NlLmN1cnZlLmpvaW4oIi4iKSk7dmFyIGtlPW5ldyBFZShkZSkua2V5RnJvbVByaXZhdGUoY2UucHJpdmF0ZUtleSkuc2lnbihvZSk7cmV0dXJuIG1lLmZyb20oa2UudG9ERVIoKSl9KG9lLGtlKX1pZigiZHNhIj09PWtl''@;'; put 'put ''LnR5cGUpe2lmKCJkc2EiIT09dmUpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwcml2YXRlIGtleSB0eXBlIik7cmV0dXJuIGZ1bmN0aW9uIFkob2UsY2UsZGUpe2Zvcih2YXIgVGUsdmU9Y2UucGFyYW1zLnByaXZfa2V5LEFlPWNlLnBhcmFtcy5wLGtlPWNlLnBhcmFtcy5xLFNlPWNlLnBhcmFt''@;'; put 'put ''cy5nLEllPW5ldyBVKDApLE1lPXRlKG9lLGtlKS5tb2Qoa2UpLGhlPSExLE89Tih2ZSxrZSxvZSxkZSk7ITE9PT1oZTspSWU9c2UoU2UsVGU9SihrZSxPLGRlKSxBZSxrZSksMD09PShoZT1UZS5pbnZtKGtlKS5pbXVsKE1lLmFkZCh2ZS5tdWwoSWUpKSkubW9kKGtlKSkuY21wbigwKSYmKGhl''@;'; put 'put ''PSExLEllPW5ldyBVKDApKTtyZXR1cm4gZnVuY3Rpb24gVyhvZSxjZSl7b2U9b2UudG9BcnJheSgpLGNlPWNlLnRvQXJyYXkoKSwxMjgmb2VbMF0mJihvZT1bMF0uY29uY2F0KG9lKSksMTI4JmNlWzBdJiYoY2U9WzBdLmNvbmNhdChjZSkpO3ZhciB2ZT1bNDgsb2UubGVuZ3RoK2NlLmxlbmd0''@;'; put 'put ''aCs0LDIsb2UubGVuZ3RoXTtyZXR1cm4gdmU9dmUuY29uY2F0KG9lLFsyLGNlLmxlbmd0aF0sY2UpLG1lLmZyb20odmUpfShJZSxoZSl9KG9lLGtlLGRlKX1pZigicnNhIiE9PXZlJiYiZWNkc2EvcnNhIiE9PXZlKXRocm93IG5ldyBFcnJvcigid3JvbmcgcHJpdmF0ZSBrZXkgdHlwZSIpO29l''@;'; put 'put ''PW1lLmNvbmNhdChbQWUsb2VdKTtmb3IodmFyIFNlPWtlLm1vZHVsdXMuYnl0ZUxlbmd0aCgpLEllPVswLDFdO29lLmxlbmd0aCtJZS5sZW5ndGgrMTxTZTspSWUucHVzaCgyNTUpO0llLnB1c2goMCk7Zm9yKHZhciBUZT0tMTsrK1RlPG9lLmxlbmd0aDspSWUucHVzaChvZVtUZV0pO3JldHVy''@;'; put 'put ''biBFKEllLGtlKX0sWGUuZXhwb3J0cy5nZXRLZXk9TixYZS5leHBvcnRzLm1ha2VLZXk9Sn0sMzk0NjooWGUsSmUsTCk9Pnt2YXIgbWU9TCg4NDQ2KS5CdWZmZXIsQj1MKDk4NTM4KSxFPUwoNTc3MTUpLmVjLEVlPUwoMjI3NzIpLFU9TCgxMzA4KTtmdW5jdGlvbiBhZShZLFcpe2lmKFkuY21w''@;'; put 'put ''bigwKTw9MCl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgc2lnIik7aWYoWS5jbXAoVyk+PVcpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHNpZyIpfVhlLmV4cG9ydHM9ZnVuY3Rpb24gUShZLFcsTix0ZSxLKXt2YXIgSj1FZShOKTtpZigiZWMiPT09Si50eXBlKXtpZigiZWNkc2EiIT09dGUm''@;'; put 'put ''JiJlY2RzYS9yc2EiIT09dGUpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwdWJsaWMga2V5IHR5cGUiKTtyZXR1cm4gZnVuY3Rpb24gaihZLFcsTil7dmFyIHRlPVVbTi5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCIuIildO2lmKCF0ZSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gY3VydmUg''@;'; put 'put ''IitOLmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oIi4iKSk7cmV0dXJuIG5ldyBFKHRlKS52ZXJpZnkoVyxZLE4uZGF0YS5zdWJqZWN0UHJpdmF0ZUtleS5kYXRhKX0oWSxXLEopfWlmKCJkc2EiPT09Si50eXBlKXtpZigiZHNhIiE9PXRlKXRocm93IG5ldyBFcnJvcigid3JvbmcgcHVibGlj''@;'; put 'put ''IGtleSB0eXBlIik7cmV0dXJuIGZ1bmN0aW9uIHJlKFksVyxOKXt2YXIgdGU9Ti5kYXRhLnAsSz1OLmRhdGEucSxKPU4uZGF0YS5nLHNlPU4uZGF0YS5wdWJfa2V5LG9lPUVlLnNpZ25hdHVyZS5kZWNvZGUoWSwiZGVyIiksY2U9b2UucyxkZT1vZS5yO2FlKGNlLEspLGFlKGRlLEspO3ZhciB2''@;'; put 'put ''ZT1CLm1vbnQodGUpLEFlPWNlLmludm0oSyk7cmV0dXJuIDA9PT1KLnRvUmVkKHZlKS5yZWRQb3cobmV3IEIoVykubXVsKEFlKS5tb2QoSykpLmZyb21SZWQoKS5tdWwoc2UudG9SZWQodmUpLnJlZFBvdyhkZS5tdWwoQWUpLm1vZChLKSkuZnJvbVJlZCgpKS5tb2QodGUpLm1vZChLKS5jbXAo''@;'; put 'put ''ZGUpfShZLFcsSil9aWYoInJzYSIhPT10ZSYmImVjZHNhL3JzYSIhPT10ZSl0aHJvdyBuZXcgRXJyb3IoIndyb25nIHB1YmxpYyBrZXkgdHlwZSIpO1c9bWUuY29uY2F0KFtLLFddKTtmb3IodmFyIHNlPUoubW9kdWx1cy5ieXRlTGVuZ3RoKCksb2U9WzFdLGNlPTA7Vy5sZW5ndGgrb2UubGVu''@;'; put 'put ''Z3RoKzI8c2U7KW9lLnB1c2goMjU1KSxjZSsrO29lLnB1c2goMCk7Zm9yKHZhciBkZT0tMTsrK2RlPFcubGVuZ3RoOylvZS5wdXNoKFdbZGVdKTtvZT1tZS5mcm9tKG9lKTt2YXIgdmU9Qi5tb250KEoubW9kdWx1cyk7WT0oWT1uZXcgQihZKS50b1JlZCh2ZSkpLnJlZFBvdyhuZXcgQihKLnB1''@;'; put 'put ''YmxpY0V4cG9uZW50KSksWT1tZS5mcm9tKFkuZnJvbVJlZCgpLnRvQXJyYXkoKSk7dmFyIEFlPWNlPDg/MTowO2ZvcihzZT1NYXRoLm1pbihZLmxlbmd0aCxvZS5sZW5ndGgpLFkubGVuZ3RoIT09b2UubGVuZ3RoJiYoQWU9MSksZGU9LTE7KytkZTxzZTspQWV8PVlbZGVdXm9lW2RlXTtyZXR1''@;'; put 'put ''cm4gMD09PUFlfX0sODQ0NjooWGUsSmUsTCk9Pnt2YXIgbWU9TCg5MzE3MiksQj1tZS5CdWZmZXI7ZnVuY3Rpb24gRShVLFEpe2Zvcih2YXIgaiBpbiBVKVFbal09VVtqXX1mdW5jdGlvbiBFZShVLFEsail7cmV0dXJuIEIoVSxRLGopfUIuZnJvbSYmQi5hbGxvYyYmQi5hbGxvY1Vuc2FmZSYm''@;'; put 'put ''Qi5hbGxvY1Vuc2FmZVNsb3c/WGUuZXhwb3J0cz1tZTooRShtZSxKZSksSmUuQnVmZmVyPUVlKSxFZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShCLnByb3RvdHlwZSksRShCLEVlKSxFZS5mcm9tPWZ1bmN0aW9uKFUsUSxqKXtpZigibnVtYmVyIj09dHlwZW9mIFUpdGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gQihVLFEsail9LEVlLmFsbG9jPWZ1bmN0aW9uKFUsUSxqKXtpZigibnVtYmVyIiE9dHlwZW9mIFUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciByZT1CKFUpO3Jl''@;'; put 'put ''dHVybiB2b2lkIDAhPT1RPyJzdHJpbmciPT10eXBlb2Ygaj9yZS5maWxsKFEsaik6cmUuZmlsbChRKTpyZS5maWxsKDApLHJlfSxFZS5hbGxvY1Vuc2FmZT1mdW5jdGlvbihVKXtpZigibnVtYmVyIiE9dHlwZW9mIFUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51''@;'; put 'put ''bWJlciIpO3JldHVybiBCKFUpfSxFZS5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oVSl7aWYoIm51bWJlciIhPXR5cGVvZiBVKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gbWUuU2xvd0J1ZmZlcihVKX19LDU4Nzg5OlhlPT57WGUuZXhw''@;'; put 'put ''b3J0cz1mdW5jdGlvbihMLG1lKXtmb3IodmFyIEI9TWF0aC5taW4oTC5sZW5ndGgsbWUubGVuZ3RoKSxFPW5ldyBCdWZmZXIoQiksRWU9MDtFZTxCOysrRWUpRVtFZV09TFtFZV1ebWVbRWVdO3JldHVybiBFfX0sOTMxNzI6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDUzNDMp''@;'; put 'put ''LEI9TCg0ODQ2MSksRT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sLmZvcj9TeW1ib2wuZm9yKCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbSIpOm51bGw7SmUuQnVmZmVyPWosSmUuU2xvd0J1ZmZlcj1mdW5jdGlvbiBjZShfdCl7cmV0dXJu''@;'; put 'put ''K190IT1fdCYmKF90PTApLGouYWxsb2MoK190KX0sSmUuSU5TUEVDVF9NQVhfQllURVM9NTA7dmFyIEVlPTIxNDc0ODM2NDc7ZnVuY3Rpb24gUShfdCl7aWYoX3Q+RWUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJytfdCsnIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gInNpemUi''@;'; put 'put ''Jyk7dmFyIHR0PW5ldyBVaW50OEFycmF5KF90KTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHR0LGoucHJvdG90eXBlKSx0dH1mdW5jdGlvbiBqKF90LHR0LGV0KXtpZigibnVtYmVyIj09dHlwZW9mIF90KXtpZigic3RyaW5nIj09dHlwZW9mIHR0KXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''J1RoZSAic3RyaW5nIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLiBSZWNlaXZlZCB0eXBlIG51bWJlcicpO3JldHVybiBXKF90KX1yZXR1cm4gcmUoX3QsdHQsZXQpfWZ1bmN0aW9uIHJlKF90LHR0LGV0KXtpZigic3RyaW5nIj09dHlwZW9mIF90KXJldHVybiBmdW5jdGlvbiBO''@;'; put 'put ''KF90LHR0KXtpZigoInN0cmluZyIhPXR5cGVvZiB0dHx8IiI9PT10dCkmJih0dD0idXRmOCIpLCFqLmlzRW5jb2RpbmcodHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrdHQpO3ZhciBldD0wfGRlKF90LHR0KSxsdD1RKGV0KSxMdD1sdC53cml0ZShfdCx0dCk7''@;'; put 'put ''cmV0dXJuIEx0IT09ZXQmJihsdD1sdC5zbGljZSgwLEx0KSksbHR9KF90LHR0KTtpZihBcnJheUJ1ZmZlci5pc1ZpZXcoX3QpKXJldHVybiBmdW5jdGlvbiBLKF90KXtpZihodChfdCxVaW50OEFycmF5KSl7dmFyIHR0PW5ldyBVaW50OEFycmF5KF90KTtyZXR1cm4gSih0dC5idWZmZXIsdHQu''@;'; put 'put ''Ynl0ZU9mZnNldCx0dC5ieXRlTGVuZ3RoKX1yZXR1cm4gdGUoX3QpfShfdCk7aWYobnVsbD09X3QpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlr''@;'; put 'put ''ZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgX3QpO2lmKGh0KF90LEFycmF5QnVmZmVyKXx8X3QmJmh0KF90LmJ1ZmZlcixBcnJheUJ1ZmZlcil8fCJ1bmRlZmluZWQiIT10eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXImJihodChfdCxTaGFyZWRBcnJheUJ1ZmZlcil8fF90JiZodChf''@;'; put 'put ''dC5idWZmZXIsU2hhcmVkQXJyYXlCdWZmZXIpKSlyZXR1cm4gSihfdCx0dCxldCk7aWYoIm51bWJlciI9PXR5cGVvZiBfdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTt2''@;'; put 'put ''YXIgbHQ9X3QudmFsdWVPZiYmX3QudmFsdWVPZigpO2lmKG51bGwhPWx0JiZsdCE9PV90KXJldHVybiBqLmZyb20obHQsdHQsZXQpO3ZhciBMdD1mdW5jdGlvbiBzZShfdCl7aWYoai5pc0J1ZmZlcihfdCkpe3ZhciB0dD0wfG9lKF90Lmxlbmd0aCksZXQ9USh0dCk7cmV0dXJuIDA9PT1ldC5s''@;'; put 'put ''ZW5ndGh8fF90LmNvcHkoZXQsMCwwLHR0KSxldH1yZXR1cm4gdm9pZCAwIT09X3QubGVuZ3RoPyJudW1iZXIiIT10eXBlb2YgX3QubGVuZ3RofHxCdChfdC5sZW5ndGgpP1EoMCk6dGUoX3QpOiJCdWZmZXIiPT09X3QudHlwZSYmQXJyYXkuaXNBcnJheShfdC5kYXRhKT90ZShfdC5kYXRhKTp2''@;'; put 'put ''b2lkIDB9KF90KTtpZihMdClyZXR1cm4gTHQ7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPVN5bWJvbC50b1ByaW1pdGl2ZSYmImZ1bmN0aW9uIj09dHlwZW9mIF90W1N5bWJvbC50b1ByaW1pdGl2ZV0pcmV0dXJuIGouZnJvbShfdFtTeW1ib2wudG9QcmltaXRpdmVdKCJz''@;'; put 'put ''dHJpbmciKSx0dCxldCk7dGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgX3QpfWZ1bmN0''@;'; put 'put ''aW9uIGFlKF90KXtpZigibnVtYmVyIiE9dHlwZW9mIF90KXRocm93IG5ldyBUeXBlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyJyk7aWYoX3Q8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK190KyciIGlzIGludmFsaWQgZm9yIG9wdGlv''@;'; put 'put ''biAic2l6ZSInKX1mdW5jdGlvbiBXKF90KXtyZXR1cm4gYWUoX3QpLFEoX3Q8MD8wOjB8b2UoX3QpKX1mdW5jdGlvbiB0ZShfdCl7Zm9yKHZhciB0dD1fdC5sZW5ndGg8MD8wOjB8b2UoX3QubGVuZ3RoKSxldD1RKHR0KSxsdD0wO2x0PHR0O2x0Kz0xKWV0W2x0XT0yNTUmX3RbbHRdO3JldHVy''@;'; put 'put ''biBldH1mdW5jdGlvbiBKKF90LHR0LGV0KXtpZih0dDwwfHxfdC5ieXRlTGVuZ3RoPHR0KXRocm93IG5ldyBSYW5nZUVycm9yKCcib2Zmc2V0IiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKTtpZihfdC5ieXRlTGVuZ3RoPHR0KyhldHx8MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJs''@;'; put 'put ''ZW5ndGgiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpO3ZhciBsdDtyZXR1cm4gbHQ9dm9pZCAwPT09dHQmJnZvaWQgMD09PWV0P25ldyBVaW50OEFycmF5KF90KTp2b2lkIDA9PT1ldD9uZXcgVWludDhBcnJheShfdCx0dCk6bmV3IFVpbnQ4QXJyYXkoX3QsdHQsZXQpLE9iamVjdC5z''@;'; put 'put ''ZXRQcm90b3R5cGVPZihsdCxqLnByb3RvdHlwZSksbHR9ZnVuY3Rpb24gb2UoX3Qpe2lmKF90Pj1FZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSBzaXplOiAweCIrRWUudG9TdHJpbmcoMTYpKyIgYnl0ZXMiKTty''@;'; put 'put ''ZXR1cm4gMHxfdH1mdW5jdGlvbiBkZShfdCx0dCl7aWYoai5pc0J1ZmZlcihfdCkpcmV0dXJuIF90Lmxlbmd0aDtpZihBcnJheUJ1ZmZlci5pc1ZpZXcoX3QpfHxodChfdCxBcnJheUJ1ZmZlcikpcmV0dXJuIF90LmJ5dGVMZW5ndGg7aWYoInN0cmluZyIhPXR5cGVvZiBfdCl0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCdUaGUgInN0cmluZyIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgb3IgQXJyYXlCdWZmZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgX3QpO3ZhciBldD1fdC5sZW5ndGgsbHQ9YXJndW1lbnRzLmxlbmd0aD4yJiYhMD09PWFyZ3VtZW50''@;'; put 'put ''c1syXTtpZighbHQmJjA9PT1ldClyZXR1cm4gMDtmb3IodmFyIEx0PSExOzspc3dpdGNoKHR0KXtjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBldDtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBndChfdCkubGVuZ3RoO2Nhc2UidWNzMiI6Y2FzZSJ1''@;'; put 'put ''Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gMipldDtjYXNlImhleCI6cmV0dXJuIGV0Pj4+MTtjYXNlImJhc2U2NCI6cmV0dXJuIHZ0KF90KS5sZW5ndGg7ZGVmYXVsdDppZihMdClyZXR1cm4gbHQ/LTE6Z3QoX3QpLmxlbmd0aDt0dD0oIiIrdHQpLnRvTG93ZXJD''@;'; put 'put ''YXNlKCksTHQ9ITB9fWZ1bmN0aW9uIHZlKF90LHR0LGV0KXt2YXIgbHQ9ITE7aWYoKHZvaWQgMD09PXR0fHx0dDwwKSYmKHR0PTApLHR0PnRoaXMubGVuZ3RofHwoKHZvaWQgMD09PWV0fHxldD50aGlzLmxlbmd0aCkmJihldD10aGlzLmxlbmd0aCksZXQ8PTApfHwoZXQ+Pj49MCk8PSh0dD4+''@;'; put 'put ''Pj0wKSlyZXR1cm4iIjtmb3IoX3R8fChfdD0idXRmOCIpOzspc3dpdGNoKF90KXtjYXNlImhleCI6cmV0dXJuIFQodGhpcyx0dCxldCk7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gZWUodGhpcyx0dCxldCk7Y2FzZSJhc2NpaSI6cmV0dXJuIFAodGhpcyx0dCxldCk7Y2FzZSJsYXRp''@;'; put 'put ''bjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gVih0aGlzLHR0LGV0KTtjYXNlImJhc2U2NCI6cmV0dXJuIHoodGhpcyx0dCxldCk7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBTKHRoaXMsdHQsZXQpO2RlZmF1bHQ6aWYobHQpdGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitfdCk7X3Q9KF90KyIiKS50b0xvd2VyQ2FzZSgpLGx0PSEwfX1mdW5jdGlvbiBBZShfdCx0dCxldCl7dmFyIGx0PV90W3R0XTtfdFt0dF09X3RbZXRdLF90W2V0XT1sdH1mdW5jdGlvbiBrZShfdCx0dCxldCxsdCxMdCl7aWYoMD09''@;'; put 'put ''PV90Lmxlbmd0aClyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIGV0PyhsdD1ldCxldD0wKTpldD4yMTQ3NDgzNjQ3P2V0PTIxNDc0ODM2NDc6ZXQ8LTIxNDc0ODM2NDgmJihldD0tMjE0NzQ4MzY0OCksQnQoZXQ9K2V0KSYmKGV0PUx0PzA6X3QubGVuZ3RoLTEpLGV0PDAmJihldD1fdC5s''@;'; put 'put ''ZW5ndGgrZXQpLGV0Pj1fdC5sZW5ndGgpe2lmKEx0KXJldHVybi0xO2V0PV90Lmxlbmd0aC0xfWVsc2UgaWYoZXQ8MCl7aWYoIUx0KXJldHVybi0xO2V0PTB9aWYoInN0cmluZyI9PXR5cGVvZiB0dCYmKHR0PWouZnJvbSh0dCxsdCkpLGouaXNCdWZmZXIodHQpKXJldHVybiAwPT09dHQubGVu''@;'; put 'put ''Z3RoPy0xOlNlKF90LHR0LGV0LGx0LEx0KTtpZigibnVtYmVyIj09dHlwZW9mIHR0KXJldHVybiB0dCY9MjU1LCJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mP0x0P1VpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChfdCx0dCxldCk6VWludDhB''@;'; put 'put ''cnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChfdCx0dCxldCk6U2UoX3QsW3R0XSxldCxsdCxMdCk7dGhyb3cgbmV3IFR5cGVFcnJvcigidmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyIil9ZnVuY3Rpb24gU2UoX3QsdHQsZXQsbHQsTHQpe3ZhciBVZSxDdD0xLGZ0''@;'; put 'put ''PV90Lmxlbmd0aCxIdD10dC5sZW5ndGg7aWYodm9pZCAwIT09bHQmJigidWNzMiI9PT0obHQ9U3RyaW5nKGx0KS50b0xvd2VyQ2FzZSgpKXx8InVjcy0yIj09PWx0fHwidXRmMTZsZSI9PT1sdHx8InV0Zi0xNmxlIj09PWx0KSl7aWYoX3QubGVuZ3RoPDJ8fHR0Lmxlbmd0aDwyKXJldHVybi0x''@;'; put 'put ''O0N0PTIsZnQvPTIsSHQvPTIsZXQvPTJ9ZnVuY3Rpb24gR2UoZ24sZG4pe3JldHVybiAxPT09Q3Q/Z25bZG5dOmduLnJlYWRVSW50MTZCRShkbipDdCl9aWYoTHQpe3ZhciB5dD0tMTtmb3IoVWU9ZXQ7VWU8ZnQ7VWUrKylpZihHZShfdCxVZSk9PT1HZSh0dCwtMT09PXl0PzA6VWUteXQpKXtp''@;'; put 'put ''ZigtMT09PXl0JiYoeXQ9VWUpLFVlLXl0KzE9PT1IdClyZXR1cm4geXQqQ3R9ZWxzZS0xIT09eXQmJihVZS09VWUteXQpLHl0PS0xfWVsc2UgZm9yKGV0K0h0PmZ0JiYoZXQ9ZnQtSHQpLFVlPWV0O1VlPj0wO1VlLS0pe2Zvcih2YXIganQ9ITAsSnQ9MDtKdDxIdDtKdCsrKWlmKEdlKF90LFVl''@;'; put 'put ''K0p0KSE9PUdlKHR0LEp0KSl7anQ9ITE7YnJlYWt9aWYoanQpcmV0dXJuIFVlfXJldHVybi0xfWZ1bmN0aW9uIEllKF90LHR0LGV0LGx0KXtldD1OdW1iZXIoZXQpfHwwO3ZhciBMdD1fdC5sZW5ndGgtZXQ7bHQ/KGx0PU51bWJlcihsdCkpPkx0JiYobHQ9THQpOmx0PUx0O3ZhciBDdD10dC5s''@;'; put 'put ''ZW5ndGg7bHQ+Q3QvMiYmKGx0PUN0LzIpO2Zvcih2YXIgZnQ9MDtmdDxsdDsrK2Z0KXt2YXIgSHQ9cGFyc2VJbnQodHQuc3Vic3RyKDIqZnQsMiksMTYpO2lmKEJ0KEh0KSlyZXR1cm4gZnQ7X3RbZXQrZnRdPUh0fXJldHVybiBmdH1mdW5jdGlvbiBUZShfdCx0dCxldCxsdCl7cmV0dXJuIEF0''@;'; put 'put ''KGd0KHR0LF90Lmxlbmd0aC1ldCksX3QsZXQsbHQpfWZ1bmN0aW9uIE1lKF90LHR0LGV0LGx0KXtyZXR1cm4gQXQoZnVuY3Rpb24gd3QoX3Qpe2Zvcih2YXIgdHQ9W10sZXQ9MDtldDxfdC5sZW5ndGg7KytldCl0dC5wdXNoKDI1NSZfdC5jaGFyQ29kZUF0KGV0KSk7cmV0dXJuIHR0fSh0dCks''@;'; put 'put ''X3QsZXQsbHQpfWZ1bmN0aW9uIGhlKF90LHR0LGV0LGx0KXtyZXR1cm4gQXQodnQodHQpLF90LGV0LGx0KX1mdW5jdGlvbiBPKF90LHR0LGV0LGx0KXtyZXR1cm4gQXQoZnVuY3Rpb24gbXQoX3QsdHQpe2Zvcih2YXIgZXQsbHQsQ3Q9W10sZnQ9MDtmdDxfdC5sZW5ndGgmJiEoKHR0LT0yKTww''@;'; put 'put ''KTsrK2Z0KWx0PShldD1fdC5jaGFyQ29kZUF0KGZ0KSk+PjgsQ3QucHVzaChldCUyNTYpLEN0LnB1c2gobHQpO3JldHVybiBDdH0odHQsX3QubGVuZ3RoLWV0KSxfdCxldCxsdCl9ZnVuY3Rpb24geihfdCx0dCxldCl7cmV0dXJuIG1lLmZyb21CeXRlQXJyYXkoMD09PXR0JiZldD09PV90Lmxl''@;'; put 'put ''bmd0aD9fdDpfdC5zbGljZSh0dCxldCkpfWZ1bmN0aW9uIGVlKF90LHR0LGV0KXtldD1NYXRoLm1pbihfdC5sZW5ndGgsZXQpO2Zvcih2YXIgbHQ9W10sTHQ9dHQ7THQ8ZXQ7KXt2YXIgR2UsVWUseXQsanQsQ3Q9X3RbTHRdLGZ0PW51bGwsSHQ9Q3Q+MjM5PzQ6Q3Q+MjIzPzM6Q3Q+MTkxPzI6''@;'; put 'put ''MTtpZihMdCtIdDw9ZXQpc3dpdGNoKEh0KXtjYXNlIDE6Q3Q8MTI4JiYoZnQ9Q3QpO2JyZWFrO2Nhc2UgMjoxMjg9PSgxOTImKEdlPV90W0x0KzFdKSkmJihqdD0oMzEmQ3QpPDw2fDYzJkdlKT4xMjcmJihmdD1qdCk7YnJlYWs7Y2FzZSAzOlVlPV90W0x0KzJdLDEyOD09KDE5MiYoR2U9X3Rb''@;'; put 'put ''THQrMV0pKSYmMTI4PT0oMTkyJlVlKSYmKGp0PSgxNSZDdCk8PDEyfCg2MyZHZSk8PDZ8NjMmVWUpPjIwNDcmJihqdDw1NTI5Nnx8anQ+NTczNDMpJiYoZnQ9anQpO2JyZWFrO2Nhc2UgNDpVZT1fdFtMdCsyXSx5dD1fdFtMdCszXSwxMjg9PSgxOTImKEdlPV90W0x0KzFdKSkmJjEyOD09KDE5''@;'; put 'put ''MiZVZSkmJjEyOD09KDE5MiZ5dCkmJihqdD0oMTUmQ3QpPDwxOHwoNjMmR2UpPDwxMnwoNjMmVWUpPDw2fDYzJnl0KT42NTUzNSYmanQ8MTExNDExMiYmKGZ0PWp0KX1udWxsPT09ZnQ/KGZ0PTY1NTMzLEh0PTEpOmZ0PjY1NTM1JiYobHQucHVzaCgoZnQtPTY1NTM2KT4+PjEwJjEwMjN8NTUy''@;'; put 'put ''OTYpLGZ0PTU2MzIwfDEwMjMmZnQpLGx0LnB1c2goZnQpLEx0Kz1IdH1yZXR1cm4gZnVuY3Rpb24geChfdCl7dmFyIHR0PV90Lmxlbmd0aDtpZih0dDw9NDA5NilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsX3QpO2Zvcih2YXIgZXQ9IiIsbHQ9MDtsdDx0dDspZXQr''@;'; put 'put ''PVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLF90LnNsaWNlKGx0LGx0Kz00MDk2KSk7cmV0dXJuIGV0fShsdCl9ZnVuY3Rpb24gUChfdCx0dCxldCl7dmFyIGx0PSIiO2V0PU1hdGgubWluKF90Lmxlbmd0aCxldCk7Zm9yKHZhciBMdD10dDtMdDxldDsrK0x0KWx0Kz1TdHJpbmcu''@;'; put 'put ''ZnJvbUNoYXJDb2RlKDEyNyZfdFtMdF0pO3JldHVybiBsdH1mdW5jdGlvbiBWKF90LHR0LGV0KXt2YXIgbHQ9IiI7ZXQ9TWF0aC5taW4oX3QubGVuZ3RoLGV0KTtmb3IodmFyIEx0PXR0O0x0PGV0OysrTHQpbHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoX3RbTHRdKTtyZXR1cm4gbHR9ZnVuY3Rp''@;'; put 'put ''b24gVChfdCx0dCxldCl7dmFyIGx0PV90Lmxlbmd0aDsoIXR0fHx0dDwwKSYmKHR0PTApLCghZXR8fGV0PDB8fGV0Pmx0KSYmKGV0PWx0KTtmb3IodmFyIEx0PSIiLEN0PXR0O0N0PGV0OysrQ3QpTHQrPW9uW190W0N0XV07cmV0dXJuIEx0fWZ1bmN0aW9uIFMoX3QsdHQsZXQpe2Zvcih2YXIg''@;'; put 'put ''bHQ9X3Quc2xpY2UodHQsZXQpLEx0PSIiLEN0PTA7Q3Q8bHQubGVuZ3RoLTE7Q3QrPTIpTHQrPVN0cmluZy5mcm9tQ2hhckNvZGUobHRbQ3RdKzI1NipsdFtDdCsxXSk7cmV0dXJuIEx0fWZ1bmN0aW9uIEYoX3QsdHQsZXQpe2lmKF90JTEhPTB8fF90PDApdGhyb3cgbmV3IFJhbmdlRXJyb3Io''@;'; put 'put ''Im9mZnNldCBpcyBub3QgdWludCIpO2lmKF90K3R0PmV0KXRocm93IG5ldyBSYW5nZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoIil9ZnVuY3Rpb24geWUoX3QsdHQsZXQsbHQsTHQsQ3Qpe2lmKCFqLmlzQnVmZmVyKF90KSl0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYodHQ+THR8fHR0PEN0KXRocm93IG5ldyBSYW5nZUVycm9yKCcidmFsdWUiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKTtpZihldCtsdD5fdC5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIklu''@;'; put 'put ''ZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIENlKF90LHR0LGV0LGx0LEx0LEN0KXtpZihldCtsdD5fdC5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKGV0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpfWZ1''@;'; put 'put ''bmN0aW9uIERlKF90LHR0LGV0LGx0LEx0KXtyZXR1cm4gdHQ9K3R0LGV0Pj4+PTAsTHR8fENlKF90LDAsZXQsNCksQi53cml0ZShfdCx0dCxldCxsdCwyMyw0KSxldCs0fWZ1bmN0aW9uIFBlKF90LHR0LGV0LGx0LEx0KXtyZXR1cm4gdHQ9K3R0LGV0Pj4+PTAsTHR8fENlKF90LDAsZXQsOCks''@;'; put 'put ''Qi53cml0ZShfdCx0dCxldCxsdCw1Miw4KSxldCs4fUplLmtNYXhMZW5ndGg9RWUsIShqLlRZUEVEX0FSUkFZX1NVUFBPUlQ9ZnVuY3Rpb24gVSgpe3RyeXt2YXIgX3Q9bmV3IFVpbnQ4QXJyYXkoMSksdHQ9e2ZvbzpmdW5jdGlvbigpe3JldHVybiA0Mn19O3JldHVybiBPYmplY3Quc2V0UHJv''@;'; put 'put ''dG90eXBlT2YodHQsVWludDhBcnJheS5wcm90b3R5cGUpLE9iamVjdC5zZXRQcm90b3R5cGVPZihfdCx0dCksNDI9PT1fdC5mb28oKX1jYXRjaChldCl7cmV0dXJuITF9fSgpKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiYiZnVuY3Rpb24iPT10eXBlb2YgY29uc29sZS5lcnJvciYm''@;'; put 'put ''Y29uc29sZS5lcnJvcigiVGhpcyBicm93c2VyIGxhY2tzIHR5cGVkIGFycmF5IChVaW50OEFycmF5KSBzdXBwb3J0IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IGBidWZmZXJgIHY1LnguIFVzZSBgYnVmZmVyYCB2NC54IGlmIHlvdSByZXF1aXJlIG9sZCBicm93c2VyIHN1cHBvcnQuIiksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KGoucHJvdG90eXBlLCJwYXJlbnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKGouaXNCdWZmZXIodGhpcykpcmV0dXJuIHRoaXMuYnVmZmVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShqLnByb3RvdHlwZSwib2Zmc2V0Iix7ZW51bWVyYWJsZToh''@;'; put 'put ''MCxnZXQ6ZnVuY3Rpb24oKXtpZihqLmlzQnVmZmVyKHRoaXMpKXJldHVybiB0aGlzLmJ5dGVPZmZzZXR9fSksai5wb29sU2l6ZT04MTkyLGouZnJvbT1mdW5jdGlvbihfdCx0dCxldCl7cmV0dXJuIHJlKF90LHR0LGV0KX0sT2JqZWN0LnNldFByb3RvdHlwZU9mKGoucHJvdG90eXBlLFVpbnQ4''@;'; put 'put ''QXJyYXkucHJvdG90eXBlKSxPYmplY3Quc2V0UHJvdG90eXBlT2YoaixVaW50OEFycmF5KSxqLmFsbG9jPWZ1bmN0aW9uKF90LHR0LGV0KXtyZXR1cm4gZnVuY3Rpb24gWShfdCx0dCxldCl7cmV0dXJuIGFlKF90KSxfdDw9MD9RKF90KTp2b2lkIDAhPT10dD8ic3RyaW5nIj09dHlwZW9mIGV0''@;'; put 'put ''P1EoX3QpLmZpbGwodHQsZXQpOlEoX3QpLmZpbGwodHQpOlEoX3QpfShfdCx0dCxldCl9LGouYWxsb2NVbnNhZmU9ZnVuY3Rpb24oX3Qpe3JldHVybiBXKF90KX0sai5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oX3Qpe3JldHVybiBXKF90KX0sai5pc0J1ZmZlcj1mdW5jdGlvbih0dCl7cmV0''@;'; put 'put ''dXJuIG51bGwhPXR0JiYhMD09PXR0Ll9pc0J1ZmZlciYmdHQhPT1qLnByb3RvdHlwZX0sai5jb21wYXJlPWZ1bmN0aW9uKHR0LGV0KXtpZihodCh0dCxVaW50OEFycmF5KSYmKHR0PWouZnJvbSh0dCx0dC5vZmZzZXQsdHQuYnl0ZUxlbmd0aCkpLGh0KGV0LFVpbnQ4QXJyYXkpJiYoZXQ9ai5m''@;'; put 'put ''cm9tKGV0LGV0Lm9mZnNldCxldC5ieXRlTGVuZ3RoKSksIWouaXNCdWZmZXIodHQpfHwhai5pc0J1ZmZlcihldCkpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJidWYxIiwgImJ1ZjIiIGFyZ3VtZW50cyBtdXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5Jyk7aWYodHQ9''@;'; put 'put ''PT1ldClyZXR1cm4gMDtmb3IodmFyIGx0PXR0Lmxlbmd0aCxMdD1ldC5sZW5ndGgsQ3Q9MCxmdD1NYXRoLm1pbihsdCxMdCk7Q3Q8ZnQ7KytDdClpZih0dFtDdF0hPT1ldFtDdF0pe2x0PXR0W0N0XSxMdD1ldFtDdF07YnJlYWt9cmV0dXJuIGx0PEx0Py0xOkx0PGx0PzE6MH0sai5pc0VuY29k''@;'; put 'put ''aW5nPWZ1bmN0aW9uKHR0KXtzd2l0Y2goU3RyaW5nKHR0KS50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRm''@;'; put 'put ''MTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19LGouY29uY2F0PWZ1bmN0aW9uKHR0LGV0KXtpZighQXJyYXkuaXNBcnJheSh0dCkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2lm''@;'; put 'put ''KDA9PT10dC5sZW5ndGgpcmV0dXJuIGouYWxsb2MoMCk7dmFyIGx0O2lmKHZvaWQgMD09PWV0KWZvcihldD0wLGx0PTA7bHQ8dHQubGVuZ3RoOysrbHQpZXQrPXR0W2x0XS5sZW5ndGg7dmFyIEx0PWouYWxsb2NVbnNhZmUoZXQpLEN0PTA7Zm9yKGx0PTA7bHQ8dHQubGVuZ3RoOysrbHQpe3Zh''@;'; put 'put ''ciBmdD10dFtsdF07aWYoaHQoZnQsVWludDhBcnJheSkpQ3QrZnQubGVuZ3RoPkx0Lmxlbmd0aD9qLmZyb20oZnQpLmNvcHkoTHQsQ3QpOlVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKEx0LGZ0LEN0KTtlbHNle2lmKCFqLmlzQnVmZmVyKGZ0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCci''@;'; put 'put ''bGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7ZnQuY29weShMdCxDdCl9Q3QrPWZ0Lmxlbmd0aH1yZXR1cm4gTHR9LGouYnl0ZUxlbmd0aD1kZSxqLnByb3RvdHlwZS5faXNCdWZmZXI9ITAsai5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uKCl7dmFyIHR0PXRo''@;'; put 'put ''aXMubGVuZ3RoO2lmKHR0JTIhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzIik7Zm9yKHZhciBldD0wO2V0PHR0O2V0Kz0yKUFlKHRoaXMsZXQsZXQrMSk7cmV0dXJuIHRoaXN9LGoucHJvdG90eXBlLnN3YXAzMj1mdW5j''@;'; put 'put ''dGlvbigpe3ZhciB0dD10aGlzLmxlbmd0aDtpZih0dCU0IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpO2Zvcih2YXIgZXQ9MDtldDx0dDtldCs9NClBZSh0aGlzLGV0LGV0KzMpLEFlKHRoaXMsZXQrMSxldCsyKTty''@;'; put 'put ''ZXR1cm4gdGhpc30sai5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7dmFyIHR0PXRoaXMubGVuZ3RoO2lmKHR0JTghPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzIik7Zm9yKHZhciBldD0wO2V0PHR0O2V0Kz04KUFl''@;'; put 'put ''KHRoaXMsZXQsZXQrNyksQWUodGhpcyxldCsxLGV0KzYpLEFlKHRoaXMsZXQrMixldCs1KSxBZSh0aGlzLGV0KzMsZXQrNCk7cmV0dXJuIHRoaXN9LGoucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nPWoucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIHR0PXRoaXMubGVuZ3RoO3Jl''@;'; put 'put ''dHVybiAwPT09dHQ/IiI6MD09PWFyZ3VtZW50cy5sZW5ndGg/ZWUodGhpcywwLHR0KTp2ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGoucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0dCl7aWYoIWouaXNCdWZmZXIodHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUg''@;'; put 'put ''YSBCdWZmZXIiKTtyZXR1cm4gdGhpcz09PXR0fHwwPT09ai5jb21wYXJlKHRoaXMsdHQpfSxqLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7dmFyIHR0PSIiLGV0PUplLklOU1BFQ1RfTUFYX0JZVEVTO3JldHVybiB0dD10aGlzLnRvU3RyaW5nKCJoZXgiLDAsZXQpLnJlcGxhY2UoLygu''@;'; put 'put ''ezJ9KS9nLCIkMSAiKS50cmltKCksdGhpcy5sZW5ndGg+ZXQmJih0dCs9IiAuLi4gIiksIjxCdWZmZXIgIit0dCsiPiJ9LEUmJihqLnByb3RvdHlwZVtFXT1qLnByb3RvdHlwZS5pbnNwZWN0KSxqLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKHR0LGV0LGx0LEx0LEN0KXtpZihodCh0dCxV''@;'; put 'put ''aW50OEFycmF5KSYmKHR0PWouZnJvbSh0dCx0dC5vZmZzZXQsdHQuYnl0ZUxlbmd0aCkpLCFqLmlzQnVmZmVyKHR0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInRhcmdldCIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheS4gUmVjZWl2ZWQgdHlw''@;'; put 'put ''ZSAnK3R5cGVvZiB0dCk7aWYodm9pZCAwPT09ZXQmJihldD0wKSx2b2lkIDA9PT1sdCYmKGx0PXR0P3R0Lmxlbmd0aDowKSx2b2lkIDA9PT1MdCYmKEx0PTApLHZvaWQgMD09PUN0JiYoQ3Q9dGhpcy5sZW5ndGgpLGV0PDB8fGx0PnR0Lmxlbmd0aHx8THQ8MHx8Q3Q+dGhpcy5sZW5ndGgpdGhy''@;'; put 'put ''b3cgbmV3IFJhbmdlRXJyb3IoIm91dCBvZiByYW5nZSBpbmRleCIpO2lmKEx0Pj1DdCYmZXQ+PWx0KXJldHVybiAwO2lmKEx0Pj1DdClyZXR1cm4tMTtpZihldD49bHQpcmV0dXJuIDE7aWYodGhpcz09PXR0KXJldHVybiAwO2Zvcih2YXIgZnQ9KEN0Pj4+PTApLShMdD4+Pj0wKSxIdD0obHQ+''@;'; put 'put ''Pj49MCktKGV0Pj4+PTApLEdlPU1hdGgubWluKGZ0LEh0KSxVZT10aGlzLnNsaWNlKEx0LEN0KSx5dD10dC5zbGljZShldCxsdCksanQ9MDtqdDxHZTsrK2p0KWlmKFVlW2p0XSE9PXl0W2p0XSl7ZnQ9VWVbanRdLEh0PXl0W2p0XTticmVha31yZXR1cm4gZnQ8SHQ/LTE6SHQ8ZnQ/MTowfSxq''@;'; put 'put ''LnByb3RvdHlwZS5pbmNsdWRlcz1mdW5jdGlvbih0dCxldCxsdCl7cmV0dXJuLTEhPT10aGlzLmluZGV4T2YodHQsZXQsbHQpfSxqLnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKHR0LGV0LGx0KXtyZXR1cm4ga2UodGhpcyx0dCxldCxsdCwhMCl9LGoucHJvdG90eXBlLmxhc3RJbmRleE9m''@;'; put 'put ''PWZ1bmN0aW9uKHR0LGV0LGx0KXtyZXR1cm4ga2UodGhpcyx0dCxldCxsdCwhMSl9LGoucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHR0LGV0LGx0LEx0KXtpZih2b2lkIDA9PT1ldClMdD0idXRmOCIsbHQ9dGhpcy5sZW5ndGgsZXQ9MDtlbHNlIGlmKHZvaWQgMD09PWx0JiYic3RyaW5nIj09''@;'; put 'put ''dHlwZW9mIGV0KUx0PWV0LGx0PXRoaXMubGVuZ3RoLGV0PTA7ZWxzZXtpZighaXNGaW5pdGUoZXQpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTtldD4+Pj0wLGlzRmluaXRl''@;'; put 'put ''KGx0KT8obHQ+Pj49MCx2b2lkIDA9PT1MdCYmKEx0PSJ1dGY4IikpOihMdD1sdCxsdD12b2lkIDApfXZhciBDdD10aGlzLmxlbmd0aC1ldDtpZigodm9pZCAwPT09bHR8fGx0PkN0KSYmKGx0PUN0KSx0dC5sZW5ndGg+MCYmKGx0PDB8fGV0PDApfHxldD50aGlzLmxlbmd0aCl0aHJvdyBuZXcg''@;'; put 'put ''UmFuZ2VFcnJvcigiQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMiKTtMdHx8KEx0PSJ1dGY4Iik7Zm9yKHZhciBmdD0hMTs7KXN3aXRjaChMdCl7Y2FzZSJoZXgiOnJldHVybiBJZSh0aGlzLHR0LGV0LGx0KTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBUZSh0''@;'; put 'put ''aGlzLHR0LGV0LGx0KTtjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBNZSh0aGlzLHR0LGV0LGx0KTtjYXNlImJhc2U2NCI6cmV0dXJuIGhlKHRoaXMsdHQsZXQsbHQpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxl''@;'; put 'put ''IjpyZXR1cm4gTyh0aGlzLHR0LGV0LGx0KTtkZWZhdWx0OmlmKGZ0KXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrTHQpO0x0PSgiIitMdCkudG9Mb3dlckNhc2UoKSxmdD0hMH19LGoucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZm''@;'; put 'put ''ZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX0sai5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24odHQsZXQpe3ZhciBsdD10aGlzLmxlbmd0aDsodHQ9fn50dCk8MD8odHQrPWx0KTwwJiYodHQ9MCk6dHQ+bHQmJih0dD1sdCksKGV0PXZvaWQg''@;'; put 'put ''MD09PWV0P2x0On5+ZXQpPDA/KGV0Kz1sdCk8MCYmKGV0PTApOmV0Pmx0JiYoZXQ9bHQpLGV0PHR0JiYoZXQ9dHQpO3ZhciBMdD10aGlzLnN1YmFycmF5KHR0LGV0KTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKEx0LGoucHJvdG90eXBlKSxMdH0sai5wcm90b3R5cGUucmVhZFVpbnRM''@;'; put 'put ''RT1qLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKHR0LGV0LGx0KXt0dD4+Pj0wLGV0Pj4+PTAsbHR8fEYodHQsZXQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgTHQ9dGhpc1t0dF0sQ3Q9MSxmdD0wOysrZnQ8ZXQmJihDdCo9MjU2KTspTHQrPXRoaXNbdHQrZnRdKkN0O3JldHVybiBMdH0s''@;'; put 'put ''ai5wcm90b3R5cGUucmVhZFVpbnRCRT1qLnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKHR0LGV0LGx0KXt0dD4+Pj0wLGV0Pj4+PTAsbHR8fEYodHQsZXQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgTHQ9dGhpc1t0dCstLWV0XSxDdD0xO2V0PjAmJihDdCo9MjU2KTspTHQrPXRoaXNbdHQr''@;'; put 'put ''LS1ldF0qQ3Q7cmV0dXJuIEx0fSxqLnByb3RvdHlwZS5yZWFkVWludDg9ai5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKHR0LGV0KXtyZXR1cm4gdHQ+Pj49MCxldHx8Rih0dCwxLHRoaXMubGVuZ3RoKSx0aGlzW3R0XX0sai5wcm90b3R5cGUucmVhZFVpbnQxNkxFPWoucHJvdG90eXBl''@;'; put 'put ''LnJlYWRVSW50MTZMRT1mdW5jdGlvbih0dCxldCl7cmV0dXJuIHR0Pj4+PTAsZXR8fEYodHQsMix0aGlzLmxlbmd0aCksdGhpc1t0dF18dGhpc1t0dCsxXTw8OH0sai5wcm90b3R5cGUucmVhZFVpbnQxNkJFPWoucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbih0dCxldCl7cmV0dXJu''@;'; put 'put ''IHR0Pj4+PTAsZXR8fEYodHQsMix0aGlzLmxlbmd0aCksdGhpc1t0dF08PDh8dGhpc1t0dCsxXX0sai5wcm90b3R5cGUucmVhZFVpbnQzMkxFPWoucHJvdG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbih0dCxldCl7cmV0dXJuIHR0Pj4+PTAsZXR8fEYodHQsNCx0aGlzLmxlbmd0aCksKHRo''@;'; put 'put ''aXNbdHRdfHRoaXNbdHQrMV08PDh8dGhpc1t0dCsyXTw8MTYpKzE2Nzc3MjE2KnRoaXNbdHQrM119LGoucHJvdG90eXBlLnJlYWRVaW50MzJCRT1qLnByb3RvdHlwZS5yZWFkVUludDMyQkU9ZnVuY3Rpb24odHQsZXQpe3JldHVybiB0dD4+Pj0wLGV0fHxGKHR0LDQsdGhpcy5sZW5ndGgpLDE2''@;'; put 'put ''Nzc3MjE2KnRoaXNbdHRdKyh0aGlzW3R0KzFdPDwxNnx0aGlzW3R0KzJdPDw4fHRoaXNbdHQrM10pfSxqLnByb3RvdHlwZS5yZWFkSW50TEU9ZnVuY3Rpb24odHQsZXQsbHQpe3R0Pj4+PTAsZXQ+Pj49MCxsdHx8Rih0dCxldCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBMdD10aGlzW3R0XSxDdD0x''@;'; put 'put ''LGZ0PTA7KytmdDxldCYmKEN0Kj0yNTYpOylMdCs9dGhpc1t0dCtmdF0qQ3Q7cmV0dXJuIEx0Pj0oQ3QqPTEyOCkmJihMdC09TWF0aC5wb3coMiw4KmV0KSksTHR9LGoucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbih0dCxldCxsdCl7dHQ+Pj49MCxldD4+Pj0wLGx0fHxGKHR0LGV0LHRo''@;'; put 'put ''aXMubGVuZ3RoKTtmb3IodmFyIEx0PWV0LEN0PTEsZnQ9dGhpc1t0dCstLUx0XTtMdD4wJiYoQ3QqPTI1Nik7KWZ0Kz10aGlzW3R0Ky0tTHRdKkN0O3JldHVybiBmdD49KEN0Kj0xMjgpJiYoZnQtPU1hdGgucG93KDIsOCpldCkpLGZ0fSxqLnByb3RvdHlwZS5yZWFkSW50OD1mdW5jdGlvbih0''@;'; put 'put ''dCxldCl7cmV0dXJuIHR0Pj4+PTAsZXR8fEYodHQsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbdHRdPy0xKigyNTUtdGhpc1t0dF0rMSk6dGhpc1t0dF19LGoucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKHR0LGV0KXt0dD4+Pj0wLGV0fHxGKHR0LDIsdGhpcy5sZW5ndGgpO3ZhciBs''@;'; put 'put ''dD10aGlzW3R0XXx0aGlzW3R0KzFdPDw4O3JldHVybiAzMjc2OCZsdD80Mjk0OTAxNzYwfGx0Omx0fSxqLnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbih0dCxldCl7dHQ+Pj49MCxldHx8Rih0dCwyLHRoaXMubGVuZ3RoKTt2YXIgbHQ9dGhpc1t0dCsxXXx0aGlzW3R0XTw8ODtyZXR1''@;'; put 'put ''cm4gMzI3NjgmbHQ/NDI5NDkwMTc2MHxsdDpsdH0sai5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24odHQsZXQpe3JldHVybiB0dD4+Pj0wLGV0fHxGKHR0LDQsdGhpcy5sZW5ndGgpLHRoaXNbdHRdfHRoaXNbdHQrMV08PDh8dGhpc1t0dCsyXTw8MTZ8dGhpc1t0dCszXTw8MjR9LGou''@;'; put 'put ''cHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKHR0LGV0KXtyZXR1cm4gdHQ+Pj49MCxldHx8Rih0dCw0LHRoaXMubGVuZ3RoKSx0aGlzW3R0XTw8MjR8dGhpc1t0dCsxXTw8MTZ8dGhpc1t0dCsyXTw8OHx0aGlzW3R0KzNdfSxqLnByb3RvdHlwZS5yZWFkRmxvYXRMRT1mdW5jdGlvbih0''@;'; put 'put ''dCxldCl7cmV0dXJuIHR0Pj4+PTAsZXR8fEYodHQsNCx0aGlzLmxlbmd0aCksQi5yZWFkKHRoaXMsdHQsITAsMjMsNCl9LGoucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKHR0LGV0KXtyZXR1cm4gdHQ+Pj49MCxldHx8Rih0dCw0LHRoaXMubGVuZ3RoKSxCLnJlYWQodGhpcyx0dCwh''@;'; put 'put ''MSwyMyw0KX0sai5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKHR0LGV0KXtyZXR1cm4gdHQ+Pj49MCxldHx8Rih0dCw4LHRoaXMubGVuZ3RoKSxCLnJlYWQodGhpcyx0dCwhMCw1Miw4KX0sai5wcm90b3R5cGUucmVhZERvdWJsZUJFPWZ1bmN0aW9uKHR0LGV0KXtyZXR1cm4gdHQ+''@;'; put 'put ''Pj49MCxldHx8Rih0dCw4LHRoaXMubGVuZ3RoKSxCLnJlYWQodGhpcyx0dCwhMSw1Miw4KX0sai5wcm90b3R5cGUud3JpdGVVaW50TEU9ai5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24odHQsZXQsbHQsTHQpe3R0PSt0dCxldD4+Pj0wLGx0Pj4+PTAsTHR8fHllKHRoaXMsdHQsZXQs''@;'; put 'put ''bHQsTWF0aC5wb3coMiw4Kmx0KS0xLDApO3ZhciBmdD0xLEh0PTA7Zm9yKHRoaXNbZXRdPTI1NSZ0dDsrK0h0PGx0JiYoZnQqPTI1Nik7KXRoaXNbZXQrSHRdPXR0L2Z0JjI1NTtyZXR1cm4gZXQrbHR9LGoucHJvdG90eXBlLndyaXRlVWludEJFPWoucHJvdG90eXBlLndyaXRlVUludEJFPWZ1''@;'; put 'put ''bmN0aW9uKHR0LGV0LGx0LEx0KXt0dD0rdHQsZXQ+Pj49MCxsdD4+Pj0wLEx0fHx5ZSh0aGlzLHR0LGV0LGx0LE1hdGgucG93KDIsOCpsdCktMSwwKTt2YXIgZnQ9bHQtMSxIdD0xO2Zvcih0aGlzW2V0K2Z0XT0yNTUmdHQ7LS1mdD49MCYmKEh0Kj0yNTYpOyl0aGlzW2V0K2Z0XT10dC9IdCYy''@;'; put 'put ''NTU7cmV0dXJuIGV0K2x0fSxqLnByb3RvdHlwZS53cml0ZVVpbnQ4PWoucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24odHQsZXQsbHQpe3JldHVybiB0dD0rdHQsZXQ+Pj49MCxsdHx8eWUodGhpcyx0dCxldCwxLDI1NSwwKSx0aGlzW2V0XT0yNTUmdHQsZXQrMX0sai5wcm90b3R5cGUu''@;'; put 'put ''d3JpdGVVaW50MTZMRT1qLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKHR0LGV0LGx0KXtyZXR1cm4gdHQ9K3R0LGV0Pj4+PTAsbHR8fHllKHRoaXMsdHQsZXQsMiw2NTUzNSwwKSx0aGlzW2V0XT0yNTUmdHQsdGhpc1tldCsxXT10dD4+PjgsZXQrMn0sai5wcm90b3R5cGUud3Jp''@;'; put 'put ''dGVVaW50MTZCRT1qLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKHR0LGV0LGx0KXtyZXR1cm4gdHQ9K3R0LGV0Pj4+PTAsbHR8fHllKHRoaXMsdHQsZXQsMiw2NTUzNSwwKSx0aGlzW2V0XT10dD4+PjgsdGhpc1tldCsxXT0yNTUmdHQsZXQrMn0sai5wcm90b3R5cGUud3JpdGVV''@;'; put 'put ''aW50MzJMRT1qLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKHR0LGV0LGx0KXtyZXR1cm4gdHQ9K3R0LGV0Pj4+PTAsbHR8fHllKHRoaXMsdHQsZXQsNCw0Mjk0OTY3Mjk1LDApLHRoaXNbZXQrM109dHQ+Pj4yNCx0aGlzW2V0KzJdPXR0Pj4+MTYsdGhpc1tldCsxXT10dD4+Pjgs''@;'; put 'put ''dGhpc1tldF09MjU1JnR0LGV0KzR9LGoucHJvdG90eXBlLndyaXRlVWludDMyQkU9ai5wcm90b3R5cGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbih0dCxldCxsdCl7cmV0dXJuIHR0PSt0dCxldD4+Pj0wLGx0fHx5ZSh0aGlzLHR0LGV0LDQsNDI5NDk2NzI5NSwwKSx0aGlzW2V0XT10dD4+PjI0''@;'; put 'put ''LHRoaXNbZXQrMV09dHQ+Pj4xNix0aGlzW2V0KzJdPXR0Pj4+OCx0aGlzW2V0KzNdPTI1NSZ0dCxldCs0fSxqLnByb3RvdHlwZS53cml0ZUludExFPWZ1bmN0aW9uKHR0LGV0LGx0LEx0KXtpZih0dD0rdHQsZXQ+Pj49MCwhTHQpe3ZhciBDdD1NYXRoLnBvdygyLDgqbHQtMSk7eWUodGhpcyx0''@;'; put 'put ''dCxldCxsdCxDdC0xLC1DdCl9dmFyIGZ0PTAsSHQ9MSxHZT0wO2Zvcih0aGlzW2V0XT0yNTUmdHQ7KytmdDxsdCYmKEh0Kj0yNTYpOyl0dDwwJiYwPT09R2UmJjAhPT10aGlzW2V0K2Z0LTFdJiYoR2U9MSksdGhpc1tldCtmdF09KHR0L0h0Pj4wKS1HZSYyNTU7cmV0dXJuIGV0K2x0fSxqLnBy''@;'; put 'put ''b3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKHR0LGV0LGx0LEx0KXtpZih0dD0rdHQsZXQ+Pj49MCwhTHQpe3ZhciBDdD1NYXRoLnBvdygyLDgqbHQtMSk7eWUodGhpcyx0dCxldCxsdCxDdC0xLC1DdCl9dmFyIGZ0PWx0LTEsSHQ9MSxHZT0wO2Zvcih0aGlzW2V0K2Z0XT0yNTUmdHQ7LS1m''@;'; put 'put ''dD49MCYmKEh0Kj0yNTYpOyl0dDwwJiYwPT09R2UmJjAhPT10aGlzW2V0K2Z0KzFdJiYoR2U9MSksdGhpc1tldCtmdF09KHR0L0h0Pj4wKS1HZSYyNTU7cmV0dXJuIGV0K2x0fSxqLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24odHQsZXQsbHQpe3JldHVybiB0dD0rdHQsZXQ+Pj49MCxs''@;'; put 'put ''dHx8eWUodGhpcyx0dCxldCwxLDEyNywtMTI4KSx0dDwwJiYodHQ9MjU1K3R0KzEpLHRoaXNbZXRdPTI1NSZ0dCxldCsxfSxqLnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24odHQsZXQsbHQpe3JldHVybiB0dD0rdHQsZXQ+Pj49MCxsdHx8eWUodGhpcyx0dCxldCwyLDMyNzY3LC0z''@;'; put 'put ''Mjc2OCksdGhpc1tldF09MjU1JnR0LHRoaXNbZXQrMV09dHQ+Pj44LGV0KzJ9LGoucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbih0dCxldCxsdCl7cmV0dXJuIHR0PSt0dCxldD4+Pj0wLGx0fHx5ZSh0aGlzLHR0LGV0LDIsMzI3NjcsLTMyNzY4KSx0aGlzW2V0XT10dD4+PjgsdGhp''@;'; put 'put ''c1tldCsxXT0yNTUmdHQsZXQrMn0sai5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKHR0LGV0LGx0KXtyZXR1cm4gdHQ9K3R0LGV0Pj4+PTAsbHR8fHllKHRoaXMsdHQsZXQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0aGlzW2V0XT0yNTUmdHQsdGhpc1tldCsxXT10dD4+Pjgs''@;'; put 'put ''dGhpc1tldCsyXT10dD4+PjE2LHRoaXNbZXQrM109dHQ+Pj4yNCxldCs0fSxqLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24odHQsZXQsbHQpe3JldHVybiB0dD0rdHQsZXQ+Pj49MCxsdHx8eWUodGhpcyx0dCxldCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLHR0PDAmJih0dD00''@;'; put 'put ''Mjk0OTY3Mjk1K3R0KzEpLHRoaXNbZXRdPXR0Pj4+MjQsdGhpc1tldCsxXT10dD4+PjE2LHRoaXNbZXQrMl09dHQ+Pj44LHRoaXNbZXQrM109MjU1JnR0LGV0KzR9LGoucHJvdG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbih0dCxldCxsdCl7cmV0dXJuIERlKHRoaXMsdHQsZXQsITAsbHQp''@;'; put 'put ''fSxqLnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24odHQsZXQsbHQpe3JldHVybiBEZSh0aGlzLHR0LGV0LCExLGx0KX0sai5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbih0dCxldCxsdCl7cmV0dXJuIFBlKHRoaXMsdHQsZXQsITAsbHQpfSxqLnByb3RvdHlwZS53cml0''@;'; put 'put ''ZURvdWJsZUJFPWZ1bmN0aW9uKHR0LGV0LGx0KXtyZXR1cm4gUGUodGhpcyx0dCxldCwhMSxsdCl9LGoucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odHQsZXQsbHQsTHQpe2lmKCFqLmlzQnVmZmVyKHR0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBzaG91bGQgYmUgYSBCdWZmZXIi''@;'; put 'put ''KTtpZihsdHx8KGx0PTApLCFMdCYmMCE9PUx0JiYoTHQ9dGhpcy5sZW5ndGgpLGV0Pj10dC5sZW5ndGgmJihldD10dC5sZW5ndGgpLGV0fHwoZXQ9MCksTHQ+MCYmTHQ8bHQmJihMdD1sdCksTHQ9PT1sdHx8MD09PXR0Lmxlbmd0aHx8MD09PXRoaXMubGVuZ3RoKXJldHVybiAwO2lmKGV0PDAp''@;'; put 'put ''dGhyb3cgbmV3IFJhbmdlRXJyb3IoInRhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihsdDwwfHxsdD49dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKEx0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZUVuZCBvdXQgb2Yg''@;'; put 'put ''Ym91bmRzIik7THQ+dGhpcy5sZW5ndGgmJihMdD10aGlzLmxlbmd0aCksdHQubGVuZ3RoLWV0PEx0LWx0JiYoTHQ9dHQubGVuZ3RoLWV0K2x0KTt2YXIgQ3Q9THQtbHQ7cmV0dXJuIHRoaXM9PT10dCYmImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4/''@;'; put 'put ''dGhpcy5jb3B5V2l0aGluKGV0LGx0LEx0KTpVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbCh0dCx0aGlzLnN1YmFycmF5KGx0LEx0KSxldCksQ3R9LGoucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24odHQsZXQsbHQsTHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdHQpe2lmKCJzdHJpbmciPT10''@;'; put 'put ''eXBlb2YgZXQ/KEx0PWV0LGV0PTAsbHQ9dGhpcy5sZW5ndGgpOiJzdHJpbmciPT10eXBlb2YgbHQmJihMdD1sdCxsdD10aGlzLmxlbmd0aCksdm9pZCAwIT09THQmJiJzdHJpbmciIT10eXBlb2YgTHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZyIpO2lm''@;'; put 'put ''KCJzdHJpbmciPT10eXBlb2YgTHQmJiFqLmlzRW5jb2RpbmcoTHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrTHQpO2lmKDE9PT10dC5sZW5ndGgpe3ZhciBDdD10dC5jaGFyQ29kZUF0KDApOygidXRmOCI9PT1MdCYmQ3Q8MTI4fHwibGF0aW4xIj09PUx0KSYm''@;'; put 'put ''KHR0PUN0KX19ZWxzZSJudW1iZXIiPT10eXBlb2YgdHQ/dHQmPTI1NToiYm9vbGVhbiI9PXR5cGVvZiB0dCYmKHR0PU51bWJlcih0dCkpO2lmKGV0PDB8fHRoaXMubGVuZ3RoPGV0fHx0aGlzLmxlbmd0aDxsdCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiT3V0IG9mIHJhbmdlIGluZGV4Iik7aWYo''@;'; put 'put ''bHQ8PWV0KXJldHVybiB0aGlzO3ZhciBmdDtpZihldD4+Pj0wLGx0PXZvaWQgMD09PWx0P3RoaXMubGVuZ3RoOmx0Pj4+MCx0dHx8KHR0PTApLCJudW1iZXIiPT10eXBlb2YgdHQpZm9yKGZ0PWV0O2Z0PGx0OysrZnQpdGhpc1tmdF09dHQ7ZWxzZXt2YXIgSHQ9ai5pc0J1ZmZlcih0dCk/dHQ6''@;'; put 'put ''ai5mcm9tKHR0LEx0KSxHZT1IdC5sZW5ndGg7aWYoMD09PUdlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSB2YWx1ZSAiJyt0dCsnIiBpcyBpbnZhbGlkIGZvciBhcmd1bWVudCAidmFsdWUiJyk7Zm9yKGZ0PTA7ZnQ8bHQtZXQ7KytmdCl0aGlzW2Z0K2V0XT1IdFtmdCVHZV19cmV0dXJuIHRo''@;'; put 'put ''aXN9O3ZhciBRZT0vW14rLzAtOUEtWmEtei1fXS9nO2Z1bmN0aW9uIGd0KF90LHR0KXt0dD10dHx8MS8wO2Zvcih2YXIgZXQsbHQ9X3QubGVuZ3RoLEx0PW51bGwsQ3Q9W10sZnQ9MDtmdDxsdDsrK2Z0KXtpZigoZXQ9X3QuY2hhckNvZGVBdChmdCkpPjU1Mjk1JiZldDw1NzM0NCl7aWYoIUx0''@;'; put 'put ''KXtpZihldD41NjMxOSl7KHR0LT0zKT4tMSYmQ3QucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYoZnQrMT09PWx0KXsodHQtPTMpPi0xJiZDdC5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1MdD1ldDtjb250aW51ZX1pZihldDw1NjMyMCl7KHR0LT0zKT4tMSYmQ3QucHVzaCgyMzks''@;'; put 'put ''MTkxLDE4OSksTHQ9ZXQ7Y29udGludWV9ZXQ9NjU1MzYrKEx0LTU1Mjk2PDwxMHxldC01NjMyMCl9ZWxzZSBMdCYmKHR0LT0zKT4tMSYmQ3QucHVzaCgyMzksMTkxLDE4OSk7aWYoTHQ9bnVsbCxldDwxMjgpe2lmKCh0dC09MSk8MClicmVhaztDdC5wdXNoKGV0KX1lbHNlIGlmKGV0PDIwNDgp''@;'; put 'put ''e2lmKCh0dC09Mik8MClicmVhaztDdC5wdXNoKGV0Pj42fDE5Miw2MyZldHwxMjgpfWVsc2UgaWYoZXQ8NjU1MzYpe2lmKCh0dC09Myk8MClicmVhaztDdC5wdXNoKGV0Pj4xMnwyMjQsZXQ+PjYmNjN8MTI4LDYzJmV0fDEyOCl9ZWxzZXtpZighKGV0PDExMTQxMTIpKXRocm93IG5ldyBFcnJv''@;'; put 'put ''cigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYoKHR0LT00KTwwKWJyZWFrO0N0LnB1c2goZXQ+PjE4fDI0MCxldD4+MTImNjN8MTI4LGV0Pj42JjYzfDEyOCw2MyZldHwxMjgpfX1yZXR1cm4gQ3R9ZnVuY3Rpb24gdnQoX3Qpe3JldHVybiBtZS50b0J5dGVBcnJheShmdW5jdGlvbiAkZShfdCl7''@;'; put 'put ''aWYoKF90PShfdD1fdC5zcGxpdCgiPSIpWzBdKS50cmltKCkucmVwbGFjZShRZSwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7X3QubGVuZ3RoJTQhPTA7KV90Kz0iPSI7cmV0dXJuIF90fShfdCkpfWZ1bmN0aW9uIEF0KF90LHR0LGV0LGx0KXtmb3IodmFyIEx0PTA7THQ8bHQmJiEoTHQr''@;'; put 'put ''ZXQ+PXR0Lmxlbmd0aHx8THQ+PV90Lmxlbmd0aCk7KytMdCl0dFtMdCtldF09X3RbTHRdO3JldHVybiBMdH1mdW5jdGlvbiBodChfdCx0dCl7cmV0dXJuIF90IGluc3RhbmNlb2YgdHR8fG51bGwhPV90JiZudWxsIT1fdC5jb25zdHJ1Y3RvciYmbnVsbCE9X3QuY29uc3RydWN0b3IubmFtZSYm''@;'; put 'put ''X3QuY29uc3RydWN0b3IubmFtZT09PXR0Lm5hbWV9ZnVuY3Rpb24gQnQoX3Qpe3JldHVybiBfdCE9X3R9dmFyIG9uPWZ1bmN0aW9uKCl7Zm9yKHZhciBfdD0iMDEyMzQ1Njc4OWFiY2RlZiIsdHQ9bmV3IEFycmF5KDI1NiksZXQ9MDtldDwxNjsrK2V0KWZvcih2YXIgbHQ9MTYqZXQsTHQ9MDtM''@;'; put 'put ''dDwxNjsrK0x0KXR0W2x0K0x0XT1fdFtldF0rX3RbTHRdO3JldHVybiB0dH0oKX0sNjEwNTI6KFhlLEplLEwpPT57dmFyIG1lPUwoNzM1MDIpLkJ1ZmZlcixCPUwoMjk1KS5UcmFuc2Zvcm0sRT1MKDczMDU0KS5zO2Z1bmN0aW9uIFUoUSl7Qi5jYWxsKHRoaXMpLHRoaXMuaGFzaE1vZGU9InN0''@;'; put 'put ''cmluZyI9PXR5cGVvZiBRLHRoaXMuaGFzaE1vZGU/dGhpc1tRXT10aGlzLl9maW5hbE9yRGlnZXN0OnRoaXMuZmluYWw9dGhpcy5fZmluYWxPckRpZ2VzdCx0aGlzLl9maW5hbCYmKHRoaXMuX19maW5hbD10aGlzLl9maW5hbCx0aGlzLl9maW5hbD1udWxsKSx0aGlzLl9kZWNvZGVyPW51bGws''@;'; put 'put ''dGhpcy5fZW5jb2Rpbmc9bnVsbH1MKDgzODk0KShVLEIpLFUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihRLGoscmUpeyJzdHJpbmciPT10eXBlb2YgUSYmKFE9bWUuZnJvbShRLGopKTt2YXIgYWU9dGhpcy5fdXBkYXRlKFEpO3JldHVybiB0aGlzLmhhc2hNb2RlP3RoaXM6KHJlJiYoYWU9''@;'; put 'put ''dGhpcy5fdG9TdHJpbmcoYWUscmUpKSxhZSl9LFUucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nPWZ1bmN0aW9uKCl7fSxVLnByb3RvdHlwZS5nZXRBdXRoVGFnPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJ0cnlpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlIil9''@;'; put 'put ''LFUucHJvdG90eXBlLnNldEF1dGhUYWc9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoInRyeWluZyB0byBzZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKX0sVS5wcm90b3R5cGUuc2V0QUFEPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJ0cnlpbmcgdG8gc2V0IGFhZCBp''@;'; put 'put ''biB1bnN1cHBvcnRlZCBzdGF0ZSIpfSxVLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKFEsaixyZSl7dmFyIGFlO3RyeXt0aGlzLmhhc2hNb2RlP3RoaXMuX3VwZGF0ZShRKTp0aGlzLnB1c2godGhpcy5fdXBkYXRlKFEpKX1jYXRjaChZKXthZT1ZfWZpbmFsbHl7cmUoYWUpfX0sVS5w''@;'; put 'put ''cm90b3R5cGUuX2ZsdXNoPWZ1bmN0aW9uKFEpe3ZhciBqO3RyeXt0aGlzLnB1c2godGhpcy5fX2ZpbmFsKCkpfWNhdGNoKHJlKXtqPXJlfVEoail9LFUucHJvdG90eXBlLl9maW5hbE9yRGlnZXN0PWZ1bmN0aW9uKFEpe3ZhciBqPXRoaXMuX19maW5hbCgpfHxtZS5hbGxvYygwKTtyZXR1cm4g''@;'; put 'put ''USYmKGo9dGhpcy5fdG9TdHJpbmcoaixRLCEwKSksan0sVS5wcm90b3R5cGUuX3RvU3RyaW5nPWZ1bmN0aW9uKFEsaixyZSl7aWYodGhpcy5fZGVjb2Rlcnx8KHRoaXMuX2RlY29kZXI9bmV3IEUoaiksdGhpcy5fZW5jb2Rpbmc9aiksdGhpcy5fZW5jb2RpbmchPT1qKXRocm93IG5ldyBFcnJv''@;'; put 'put ''cigiY2FuJ3Qgc3dpdGNoIGVuY29kaW5ncyIpO3ZhciBhZT10aGlzLl9kZWNvZGVyLndyaXRlKFEpO3JldHVybiByZSYmKGFlKz10aGlzLl9kZWNvZGVyLmVuZCgpKSxhZX0sWGUuZXhwb3J0cz1VfSw3NDc0NjooWGUsSmUsTCk9Pnt2YXIgbWU9TCg1NzcxNSksQj1MKDQ2NDIyKTtYZS5leHBv''@;'; put 'put ''cnRzPWZ1bmN0aW9uKGope3JldHVybiBuZXcgRWUoail9O3ZhciBFPXtzZWNwMjU2azE6e25hbWU6InNlY3AyNTZrMSIsYnl0ZUxlbmd0aDozMn0sc2VjcDIyNHIxOntuYW1lOiJwMjI0IixieXRlTGVuZ3RoOjI4fSxwcmltZTI1NnYxOntuYW1lOiJwMjU2IixieXRlTGVuZ3RoOjMyfSxwcmlt''@;'; put 'put ''ZTE5MnYxOntuYW1lOiJwMTkyIixieXRlTGVuZ3RoOjI0fSxlZDI1NTE5OntuYW1lOiJlZDI1NTE5IixieXRlTGVuZ3RoOjMyfSxzZWNwMzg0cjE6e25hbWU6InAzODQiLGJ5dGVMZW5ndGg6NDh9LHNlY3A1MjFyMTp7bmFtZToicDUyMSIsYnl0ZUxlbmd0aDo2Nn19O2Z1bmN0aW9uIEVlKFEp''@;'; put 'put ''e3RoaXMuY3VydmVUeXBlPUVbUV0sdGhpcy5jdXJ2ZVR5cGV8fCh0aGlzLmN1cnZlVHlwZT17bmFtZTpRfSksdGhpcy5jdXJ2ZT1uZXcgbWUuZWModGhpcy5jdXJ2ZVR5cGUubmFtZSksdGhpcy5rZXlzPXZvaWQgMH1mdW5jdGlvbiBVKFEsaixyZSl7QXJyYXkuaXNBcnJheShRKXx8KFE9US50''@;'; put 'put ''b0FycmF5KCkpO3ZhciBhZT1uZXcgQnVmZmVyKFEpO2lmKHJlJiZhZS5sZW5ndGg8cmUpe3ZhciBZPW5ldyBCdWZmZXIocmUtYWUubGVuZ3RoKTtZLmZpbGwoMCksYWU9QnVmZmVyLmNvbmNhdChbWSxhZV0pfXJldHVybiBqP2FlLnRvU3RyaW5nKGopOmFlfUUucDIyND1FLnNlY3AyMjRyMSxF''@;'; put 'put ''LnAyNTY9RS5zZWNwMjU2cjE9RS5wcmltZTI1NnYxLEUucDE5Mj1FLnNlY3AxOTJyMT1FLnByaW1lMTkydjEsRS5wMzg0PUUuc2VjcDM4NHIxLEUucDUyMT1FLnNlY3A1MjFyMSxFZS5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzPWZ1bmN0aW9uKFEsail7cmV0dXJuIHRoaXMua2V5cz10aGlzLmN1''@;'; put 'put ''cnZlLmdlbktleVBhaXIoKSx0aGlzLmdldFB1YmxpY0tleShRLGopfSxFZS5wcm90b3R5cGUuY29tcHV0ZVNlY3JldD1mdW5jdGlvbihRLGoscmUpe3JldHVybiBqPWp8fCJ1dGY4IixCdWZmZXIuaXNCdWZmZXIoUSl8fChRPW5ldyBCdWZmZXIoUSxqKSksVSh0aGlzLmN1cnZlLmtleUZyb21Q''@;'; put 'put ''dWJsaWMoUSkuZ2V0UHVibGljKCkubXVsKHRoaXMua2V5cy5nZXRQcml2YXRlKCkpLmdldFgoKSxyZSx0aGlzLmN1cnZlVHlwZS5ieXRlTGVuZ3RoKX0sRWUucHJvdG90eXBlLmdldFB1YmxpY0tleT1mdW5jdGlvbihRLGope3ZhciByZT10aGlzLmtleXMuZ2V0UHVibGljKCJjb21wcmVzc2Vk''@;'; put 'put ''Ij09PWosITApO3JldHVybiJoeWJyaWQiPT09aiYmKHJlWzBdPXJlW3JlLmxlbmd0aC0xXSUyPzc6NiksVShyZSxRKX0sRWUucHJvdG90eXBlLmdldFByaXZhdGVLZXk9ZnVuY3Rpb24oUSl7cmV0dXJuIFUodGhpcy5rZXlzLmdldFByaXZhdGUoKSxRKX0sRWUucHJvdG90eXBlLnNldFB1Ymxp''@;'; put 'put ''Y0tleT1mdW5jdGlvbihRLGope3JldHVybiBqPWp8fCJ1dGY4IixCdWZmZXIuaXNCdWZmZXIoUSl8fChRPW5ldyBCdWZmZXIoUSxqKSksdGhpcy5rZXlzLl9pbXBvcnRQdWJsaWMoUSksdGhpc30sRWUucHJvdG90eXBlLnNldFByaXZhdGVLZXk9ZnVuY3Rpb24oUSxqKXtqPWp8fCJ1dGY4IixC''@;'; put 'put ''dWZmZXIuaXNCdWZmZXIoUSl8fChRPW5ldyBCdWZmZXIoUSxqKSk7dmFyIHJlPW5ldyBCKFEpO3JldHVybiByZT1yZS50b1N0cmluZygxNiksdGhpcy5rZXlzPXRoaXMuY3VydmUuZ2VuS2V5UGFpcigpLHRoaXMua2V5cy5faW1wb3J0UHJpdmF0ZShyZSksdGhpc319LDQ2NDIyOmZ1bmN0aW9u''@;'; put 'put ''KFhlLEplLEwpeyFmdW5jdGlvbihtZSxCKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gRShoZSxPKXtpZighaGUpdGhyb3cgbmV3IEVycm9yKE98fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gRWUoaGUsTyl7aGUuc3VwZXJfPU87dmFyIHo9ZnVuY3Rpb24oKXt9O3oucHJvdG90eXBlPU8u''@;'; put 'put ''cHJvdG90eXBlLGhlLnByb3RvdHlwZT1uZXcgeixoZS5wcm90b3R5cGUuY29uc3RydWN0b3I9aGV9ZnVuY3Rpb24gVShoZSxPLHope2lmKFUuaXNCTihoZSkpcmV0dXJuIGhlO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwh''@;'; put 'put ''PT1oZSYmKCgibGUiPT09T3x8ImJlIj09PU8pJiYoej1PLE89MTApLHRoaXMuX2luaXQoaGV8fDAsT3x8MTAsenx8ImJlIikpfXZhciBROyJvYmplY3QiPT10eXBlb2YgbWU/bWUuZXhwb3J0cz1VOkIuQk49VSxVLkJOPVUsVS53b3JkU2l6ZT0yNjt0cnl7UT0idW5kZWZpbmVkIiE9dHlwZW9m''@;'; put 'put ''IHdpbmRvdyYmdm9pZCAwIT09d2luZG93LkJ1ZmZlcj93aW5kb3cuQnVmZmVyOkwoODYyMykuQnVmZmVyfWNhdGNoKGhlKXt9ZnVuY3Rpb24gaihoZSxPKXt2YXIgej1oZS5jaGFyQ29kZUF0KE8pO3JldHVybiB6Pj02NSYmejw9NzA/ei01NTp6Pj05NyYmejw9MTAyP3otODc6ei00OCYxNX1m''@;'; put 'put ''dW5jdGlvbiByZShoZSxPLHope3ZhciBlZT1qKGhlLHopO3JldHVybiB6LTE+PU8mJihlZXw9aihoZSx6LTEpPDw0KSxlZX1mdW5jdGlvbiBhZShoZSxPLHosZWUpe2Zvcih2YXIgbmU9MCx4PU1hdGgubWluKGhlLmxlbmd0aCx6KSxQPU87UDx4O1ArKyl7dmFyIFY9aGUuY2hhckNvZGVBdChQ''@;'; put 'put ''KS00ODtuZSo9ZWUsbmUrPVY+PTQ5P1YtNDkrMTA6Vj49MTc/Vi0xNysxMDpWfXJldHVybiBuZX1VLmlzQk49ZnVuY3Rpb24oTyl7cmV0dXJuIE8gaW5zdGFuY2VvZiBVfHxudWxsIT09TyYmIm9iamVjdCI9PXR5cGVvZiBPJiZPLmNvbnN0cnVjdG9yLndvcmRTaXplPT09VS53b3JkU2l6ZSYm''@;'; put 'put ''QXJyYXkuaXNBcnJheShPLndvcmRzKX0sVS5tYXg9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gTy5jbXAoeik+MD9POnp9LFUubWluPWZ1bmN0aW9uKE8seil7cmV0dXJuIE8uY21wKHopPDA/Tzp6fSxVLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihPLHosZWUpe2lmKCJudW1iZXIiPT10eXBlb2Yg''@;'; put 'put ''TylyZXR1cm4gdGhpcy5faW5pdE51bWJlcihPLHosZWUpO2lmKCJvYmplY3QiPT10eXBlb2YgTylyZXR1cm4gdGhpcy5faW5pdEFycmF5KE8seixlZSk7ImhleCI9PT16JiYoej0xNiksRSh6PT09KDB8eikmJno+PTImJno8PTM2KTt2YXIgbmU9MDsiLSI9PT0oTz1PLnRvU3RyaW5nKCkucmVw''@;'; put 'put ''bGFjZSgvXHMrL2csIiIpKVswXSYmKG5lKyssdGhpcy5uZWdhdGl2ZT0xKSxuZTxPLmxlbmd0aCYmKDE2PT09ej90aGlzLl9wYXJzZUhleChPLG5lLGVlKToodGhpcy5fcGFyc2VCYXNlKE8seixuZSksImxlIj09PWVlJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCkseixlZSkpKX0s''@;'; put 'put ''VS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oTyx6LGVlKXtPPDAmJih0aGlzLm5lZ2F0aXZlPTEsTz0tTyksTzw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmT10sdGhpcy5sZW5ndGg9MSk6Tzw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZPLE8v''@;'; put 'put ''NjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihFKE88OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmTyxPLzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1lZSYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHosZWUp''@;'; put 'put ''fSxVLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKE8seixlZSl7aWYoRSgibnVtYmVyIj09dHlwZW9mIE8ubGVuZ3RoKSxPLmxlbmd0aDw9MClyZXR1cm4gdGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MSx0aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbChPLmxlbmd0aC8zKSx0aGlz''@;'; put 'put ''LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBuZT0wO25lPHRoaXMubGVuZ3RoO25lKyspdGhpcy53b3Jkc1tuZV09MDt2YXIgeCxQLFY9MDtpZigiYmUiPT09ZWUpZm9yKG5lPU8ubGVuZ3RoLTEseD0wO25lPj0wO25lLT0zKXRoaXMud29yZHNbeF18PShQPU9bbmVdfE9b''@;'; put 'put ''bmUtMV08PDh8T1tuZS0yXTw8MTYpPDxWJjY3MTA4ODYzLHRoaXMud29yZHNbeCsxXT1QPj4+MjYtViY2NzEwODg2MywoVis9MjQpPj0yNiYmKFYtPTI2LHgrKyk7ZWxzZSBpZigibGUiPT09ZWUpZm9yKG5lPTAseD0wO25lPE8ubGVuZ3RoO25lKz0zKXRoaXMud29yZHNbeF18PShQPU9bbmVd''@;'; put 'put ''fE9bbmUrMV08PDh8T1tuZSsyXTw8MTYpPDxWJjY3MTA4ODYzLHRoaXMud29yZHNbeCsxXT1QPj4+MjYtViY2NzEwODg2MywoVis9MjQpPj0yNiYmKFYtPTI2LHgrKyk7cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKE8seixlZSl7dGhpcy5sZW5n''@;'; put 'put ''dGg9TWF0aC5jZWlsKChPLmxlbmd0aC16KS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBuZT0wO25lPHRoaXMubGVuZ3RoO25lKyspdGhpcy53b3Jkc1tuZV09MDt2YXIgVix4PTAsUD0wO2lmKCJiZSI9PT1lZSlmb3IobmU9Ty5sZW5ndGgtMTtuZT49ejtu''@;'; put 'put ''ZS09MilWPXJlKE8seixuZSk8PHgsdGhpcy53b3Jkc1tQXXw9NjcxMDg4NjMmVix4Pj0xOD8oeC09MTgsdGhpcy53b3Jkc1tQKz0xXXw9Vj4+PjI2KTp4Kz04O2Vsc2UgZm9yKG5lPShPLmxlbmd0aC16KSUyPT0wP3orMTp6O25lPE8ubGVuZ3RoO25lKz0yKVY9cmUoTyx6LG5lKTw8eCx0aGlz''@;'; put 'put ''LndvcmRzW1BdfD02NzEwODg2MyZWLHg+PTE4Pyh4LT0xOCx0aGlzLndvcmRzW1ArPTFdfD1WPj4+MjYpOngrPTg7dGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKE8seixlZSl7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIG5lPTAseD0x''@;'; put 'put ''O3g8PTY3MTA4ODYzO3gqPXopbmUrKztuZS0tLHg9eC96fDA7Zm9yKHZhciBQPU8ubGVuZ3RoLWVlLFY9UCVuZSxUPU1hdGgubWluKFAsUC1WKStlZSxTPTAsRj1lZTtGPFQ7Ris9bmUpUz1hZShPLEYsRituZSx6KSx0aGlzLmltdWxuKHgpLHRoaXMud29yZHNbMF0rUzw2NzEwODg2ND90aGlz''@;'; put 'put ''LndvcmRzWzBdKz1TOnRoaXMuX2lhZGRuKFMpO2lmKDAhPT1WKXt2YXIgeWU9MTtmb3IoUz1hZShPLEYsTy5sZW5ndGgseiksRj0wO0Y8VjtGKyspeWUqPXo7dGhpcy5pbXVsbih5ZSksdGhpcy53b3Jkc1swXStTPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPVM6dGhpcy5faWFkZG4oUyl9dGhp''@;'; put 'put ''cy5zdHJpcCgpfSxVLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKE8pe08ud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHo9MDt6PHRoaXMubGVuZ3RoO3orKylPLndvcmRzW3pdPXRoaXMud29yZHNbel07Ty5sZW5ndGg9dGhpcy5sZW5ndGgsTy5uZWdhdGl2ZT10aGlzLm5l''@;'; put 'put ''Z2F0aXZlLE8ucmVkPXRoaXMucmVkfSxVLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBPPW5ldyBVKG51bGwpO3JldHVybiB0aGlzLmNvcHkoTyksT30sVS5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihPKXtmb3IoO3RoaXMubGVuZ3RoPE87KXRoaXMud29yZHNbdGhpcy5sZW5n''@;'; put 'put ''dGgrK109MDtyZXR1cm4gdGhpc30sVS5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxVLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sVS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2''@;'; put 'put ''YXIgWT1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxXPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLE49''@;'; put 'put ''WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2''@;'; put 'put ''LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gSyhoZSxPLHope3oubmVnYXRp''@;'; put 'put ''dmU9Ty5uZWdhdGl2ZV5oZS5uZWdhdGl2ZTt2YXIgZWU9aGUubGVuZ3RoK08ubGVuZ3RofDA7ei5sZW5ndGg9ZWUsZWU9ZWUtMXwwO3ZhciBuZT0wfGhlLndvcmRzWzBdLHg9MHxPLndvcmRzWzBdLFA9bmUqeCxUPVAvNjcxMDg4NjR8MDt6LndvcmRzWzBdPTY3MTA4ODYzJlA7Zm9yKHZhciBT''@;'; put 'put ''PTE7UzxlZTtTKyspe2Zvcih2YXIgRj1UPj4+MjYseWU9NjcxMDg4NjMmVCxDZT1NYXRoLm1pbihTLE8ubGVuZ3RoLTEpLERlPU1hdGgubWF4KDAsUy1oZS5sZW5ndGgrMSk7RGU8PUNlO0RlKyspRis9KFA9KG5lPTB8aGUud29yZHNbUy1EZXwwXSkqKHg9MHxPLndvcmRzW0RlXSkreWUpLzY3''@;'; put 'put ''MTA4ODY0fDAseWU9NjcxMDg4NjMmUDt6LndvcmRzW1NdPTB8eWUsVD0wfEZ9cmV0dXJuIDAhPT1UP3oud29yZHNbU109MHxUOnoubGVuZ3RoLS0sei5zdHJpcCgpfVUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKE8seil7dmFyIGVlO2lmKHo9MHx6fHwxLDE2PT09KE89T3x8MTApfHwi''@;'; put 'put ''aGV4Ij09PU8pe2VlPSIiO2Zvcih2YXIgbmU9MCx4PTAsUD0wO1A8dGhpcy5sZW5ndGg7UCsrKXt2YXIgVj10aGlzLndvcmRzW1BdLFQ9KDE2Nzc3MjE1JihWPDxuZXx4KSkudG9TdHJpbmcoMTYpO2VlPTAhPSh4PVY+Pj4yNC1uZSYxNjc3NzIxNSl8fFAhPT10aGlzLmxlbmd0aC0xP1lbNi1U''@;'; put 'put ''Lmxlbmd0aF0rVCtlZTpUK2VlLChuZSs9Mik+PTI2JiYobmUtPTI2LFAtLSl9Zm9yKDAhPT14JiYoZWU9eC50b1N0cmluZygxNikrZWUpO2VlLmxlbmd0aCV6IT0wOyllZT0iMCIrZWU7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoZWU9Ii0iK2VlKSxlZX1pZihPPT09KDB8TykmJk8+PTIm''@;'; put 'put ''Jk88PTM2KXt2YXIgUz1XW09dLEY9TltPXTtlZT0iIjt2YXIgeWU9dGhpcy5jbG9uZSgpO2Zvcih5ZS5uZWdhdGl2ZT0wOyF5ZS5pc1plcm8oKTspe3ZhciBDZT15ZS5tb2RuKEYpLnRvU3RyaW5nKE8pO2VlPSh5ZT15ZS5pZGl2bihGKSkuaXNaZXJvKCk/Q2UrZWU6WVtTLUNlLmxlbmd0aF0r''@;'; put 'put ''Q2UrZWV9Zm9yKHRoaXMuaXNaZXJvKCkmJihlZT0iMCIrZWUpO2VlLmxlbmd0aCV6IT0wOyllZT0iMCIrZWU7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoZWU9Ii0iK2VlKSxlZX1FKCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LFUucHJvdG90eXBlLnRvTnVtYmVy''@;'; put 'put ''PWZ1bmN0aW9uKCl7dmFyIE89dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP08rPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT9PKz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5s''@;'; put 'put ''ZW5ndGg+MiYmRSghMSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LU86T30sVS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpfSxVLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5j''@;'; put 'put ''dGlvbihPLHope3JldHVybiBFKHZvaWQgMCE9PVEpLHRoaXMudG9BcnJheUxpa2UoUSxPLHopfSxVLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKE8seil7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksTyx6KX0sVS5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oTyx6LGVl''@;'; put 'put ''KXt2YXIgbmU9dGhpcy5ieXRlTGVuZ3RoKCkseD1lZXx8TWF0aC5tYXgoMSxuZSk7RShuZTw9eCwiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLEUoeD4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIFQsUyxQPSJsZSI9PT16''@;'; put 'put ''LFY9bmV3IE8oeCksRj10aGlzLmNsb25lKCk7aWYoUCl7Zm9yKFM9MDshRi5pc1plcm8oKTtTKyspVD1GLmFuZGxuKDI1NSksRi5pdXNocm4oOCksVltTXT1UO2Zvcig7Uzx4O1MrKylWW1NdPTB9ZWxzZXtmb3IoUz0wO1M8eC1uZTtTKyspVltTXT0wO2ZvcihTPTA7IUYuaXNaZXJvKCk7Uysr''@;'; put 'put ''KVQ9Ri5hbmRsbigyNTUpLEYuaXVzaHJuKDgpLFZbeC1TLTFdPVR9cmV0dXJuIFZ9LFUucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbihPKXtyZXR1cm4gMzItTWF0aC5jbHozMihPKX06ZnVuY3Rpb24oTyl7dmFyIHo9TyxlZT0wO3JldHVybiB6Pj00MDk2JiYoZWUr''@;'; put 'put ''PTEzLHo+Pj49MTMpLHo+PTY0JiYoZWUrPTcsej4+Pj03KSx6Pj04JiYoZWUrPTQsej4+Pj00KSx6Pj0yJiYoZWUrPTIsej4+Pj0yKSxlZSt6fSxVLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oTyl7aWYoMD09PU8pcmV0dXJuIDI2O3ZhciB6PU8sZWU9MDtyZXR1cm4gMD09KDgxOTEm''@;'; put 'put ''eikmJihlZSs9MTMsej4+Pj0xMyksMD09KDEyNyZ6KSYmKGVlKz03LHo+Pj49NyksMD09KDE1JnopJiYoZWUrPTQsej4+Pj00KSwwPT0oMyZ6KSYmKGVlKz0yLHo+Pj49MiksMD09KDEmeikmJmVlKyssZWV9LFUucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciB6PXRoaXMuX2Nv''@;'; put 'put ''dW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK3p9LFUucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIE89MCx6PTA7ejx0aGlzLmxlbmd0aDt6Kyspe3ZhciBlZT10''@;'; put 'put ''aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW3pdKTtpZihPKz1lZSwyNiE9PWVlKWJyZWFrfXJldHVybiBPfSxVLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxVLnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oTyl7''@;'; put 'put ''cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oTykuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxVLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy50ZXN0bihPLTEpP3RoaXMubm90bihPKS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgp''@;'; put 'put ''fSxVLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sVS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LFUucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRo''@;'; put 'put ''aXMubmVnYXRpdmVePTEpLHRoaXN9LFUucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24oTyl7Zm9yKDt0aGlzLmxlbmd0aDxPLmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgej0wO3o8Ty5sZW5ndGg7eisrKXRoaXMud29yZHNbel09dGhpcy53b3Jkc1t6XXxPLndv''@;'; put 'put ''cmRzW3pdO3JldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlvcj1mdW5jdGlvbihPKXtyZXR1cm4gRSgwPT0odGhpcy5uZWdhdGl2ZXxPLm5lZ2F0aXZlKSksdGhpcy5pdW9yKE8pfSxVLnByb3RvdHlwZS5vcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/''@;'; put 'put ''dGhpcy5jbG9uZSgpLmlvcihPKTpPLmNsb25lKCkuaW9yKHRoaXMpfSxVLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKE8pOk8uY2xvbmUoKS5pdW9yKHRoaXMpfSxVLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlv''@;'; put 'put ''bihPKXt2YXIgejt6PXRoaXMubGVuZ3RoPk8ubGVuZ3RoP086dGhpcztmb3IodmFyIGVlPTA7ZWU8ei5sZW5ndGg7ZWUrKyl0aGlzLndvcmRzW2VlXT10aGlzLndvcmRzW2VlXSZPLndvcmRzW2VlXTtyZXR1cm4gdGhpcy5sZW5ndGg9ei5sZW5ndGgsdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlw''@;'; put 'put ''ZS5pYW5kPWZ1bmN0aW9uKE8pe3JldHVybiBFKDA9PSh0aGlzLm5lZ2F0aXZlfE8ubmVnYXRpdmUpKSx0aGlzLml1YW5kKE8pfSxVLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKE8pOk8uY2xvbmUoKS5pYW5k''@;'; put 'put ''KHRoaXMpfSxVLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoTyk6Ty5jbG9uZSgpLml1YW5kKHRoaXMpfSxVLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbihPKXt2YXIgeixlZTt0aGlzLmxlbmd0aD5PLmxl''@;'; put 'put ''bmd0aD8oej10aGlzLGVlPU8pOih6PU8sZWU9dGhpcyk7Zm9yKHZhciBuZT0wO25lPGVlLmxlbmd0aDtuZSsrKXRoaXMud29yZHNbbmVdPXoud29yZHNbbmVdXmVlLndvcmRzW25lXTtpZih0aGlzIT09eilmb3IoO25lPHoubGVuZ3RoO25lKyspdGhpcy53b3Jkc1tuZV09ei53b3Jkc1tuZV07''@;'; put 'put ''cmV0dXJuIHRoaXMubGVuZ3RoPXoubGVuZ3RoLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbihPKXtyZXR1cm4gRSgwPT0odGhpcy5uZWdhdGl2ZXxPLm5lZ2F0aXZlKSksdGhpcy5pdXhvcihPKX0sVS5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlz''@;'; put 'put ''Lmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcihPKTpPLmNsb25lKCkuaXhvcih0aGlzKX0sVS5wcm90b3R5cGUudXhvcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKE8pOk8uY2xvbmUoKS5pdXhvcih0aGlzKX0sVS5w''@;'; put 'put ''cm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApO3ZhciB6PTB8TWF0aC5jZWlsKE8vMjYpLGVlPU8lMjY7dGhpcy5fZXhwYW5kKHopLGVlPjAmJnotLTtmb3IodmFyIG5lPTA7bmU8ejtuZSsrKXRoaXMud29yZHNbbmVdPTY3MTA4ODYzJn50aGlz''@;'; put 'put ''LndvcmRzW25lXTtyZXR1cm4gZWU+MCYmKHRoaXMud29yZHNbbmVdPX50aGlzLndvcmRzW25lXSY2NzEwODg2Mz4+MjYtZWUpLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUubm90bj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKE8pfSxVLnByb3RvdHlwZS5zZXRuPWZ1''@;'; put 'put ''bmN0aW9uKE8seil7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApO3ZhciBlZT1PLzI2fDAsbmU9TyUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKGVlKzEpLHRoaXMud29yZHNbZWVdPXo/dGhpcy53b3Jkc1tlZV18MTw8bmU6dGhpcy53b3Jkc1tlZV0mfigxPDxuZSksdGhpcy5zdHJpcCgpfSxV''@;'; put 'put ''LnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKE8pe3ZhciB6LGVlLG5lO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Ty5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHo9dGhpcy5pc3ViKE8pLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdh''@;'; put 'put ''dGl2ZSYmMCE9PU8ubmVnYXRpdmUpcmV0dXJuIE8ubmVnYXRpdmU9MCx6PXRoaXMuaXN1YihPKSxPLm5lZ2F0aXZlPTEsei5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD5PLmxlbmd0aD8oZWU9dGhpcyxuZT1PKTooZWU9TyxuZT10aGlzKTtmb3IodmFyIHg9MCxQPTA7UDxuZS5sZW5ndGg7UCsr''@;'; put 'put ''KXRoaXMud29yZHNbUF09NjcxMDg4NjMmKHo9KDB8ZWUud29yZHNbUF0pKygwfG5lLndvcmRzW1BdKSt4KSx4PXo+Pj4yNjtmb3IoOzAhPT14JiZQPGVlLmxlbmd0aDtQKyspdGhpcy53b3Jkc1tQXT02NzEwODg2MyYoej0oMHxlZS53b3Jkc1tQXSkreCkseD16Pj4+MjY7aWYodGhpcy5sZW5n''@;'; put 'put ''dGg9ZWUubGVuZ3RoLDAhPT14KXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPXgsdGhpcy5sZW5ndGgrKztlbHNlIGlmKGVlIT09dGhpcylmb3IoO1A8ZWUubGVuZ3RoO1ArKyl0aGlzLndvcmRzW1BdPWVlLndvcmRzW1BdO3JldHVybiB0aGlzfSxVLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oTyl7''@;'; put 'put ''dmFyIHo7cmV0dXJuIDAhPT1PLm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oTy5uZWdhdGl2ZT0wLHo9dGhpcy5zdWIoTyksTy5uZWdhdGl2ZV49MSx6KTowPT09Ty5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCx6PU8uc3ViKHRoaXMpLHRoaXMubmVn''@;'; put 'put ''YXRpdmU9MSx6KTp0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZChPKTpPLmNsb25lKCkuaWFkZCh0aGlzKX0sVS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihPKXtpZigwIT09Ty5uZWdhdGl2ZSl7Ty5uZWdhdGl2ZT0wO3ZhciB6PXRoaXMuaWFkZChPKTtyZXR1cm4gTy5u''@;'; put 'put ''ZWdhdGl2ZT0xLHouX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoTyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIG5lLHgsZWU9dGhpcy5jbXAoTyk7aWYoMD09PWVlKXJldHVybiB0aGlzLm5lZ2F0''@;'; put 'put ''aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztlZT4wPyhuZT10aGlzLHg9Tyk6KG5lPU8seD10aGlzKTtmb3IodmFyIFA9MCxWPTA7Vjx4Lmxlbmd0aDtWKyspUD0oej0oMHxuZS53b3Jkc1tWXSktKDB8eC53b3Jkc1tWXSkrUCk+PjI2LHRoaXMud29yZHNbVl09Njcx''@;'; put 'put ''MDg4NjMmejtmb3IoOzAhPT1QJiZWPG5lLmxlbmd0aDtWKyspUD0oej0oMHxuZS53b3Jkc1tWXSkrUCk+PjI2LHRoaXMud29yZHNbVl09NjcxMDg4NjMmejtpZigwPT09UCYmVjxuZS5sZW5ndGgmJm5lIT09dGhpcylmb3IoO1Y8bmUubGVuZ3RoO1YrKyl0aGlzLndvcmRzW1ZdPW5lLndvcmRz''@;'; put 'put ''W1ZdO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxWKSxuZSE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihPKX07dmFyIEo9ZnVuY3Rpb24oTyx6''@;'; put 'put ''LGVlKXt2YXIgVCxTLEYsbmU9Ty53b3Jkcyx4PXoud29yZHMsUD1lZS53b3JkcyxWPTAseWU9MHxuZVswXSxDZT04MTkxJnllLERlPXllPj4+MTMsUGU9MHxuZVsxXSxRZT04MTkxJlBlLCRlPVBlPj4+MTMsZ3Q9MHxuZVsyXSx3dD04MTkxJmd0LG10PWd0Pj4+MTMsdnQ9MHxuZVszXSxBdD04''@;'; put 'put ''MTkxJnZ0LGh0PXZ0Pj4+MTMsQnQ9MHxuZVs0XSxvbj04MTkxJkJ0LF90PUJ0Pj4+MTMsdHQ9MHxuZVs1XSxldD04MTkxJnR0LGx0PXR0Pj4+MTMsTHQ9MHxuZVs2XSxDdD04MTkxJkx0LGZ0PUx0Pj4+MTMsSHQ9MHxuZVs3XSxHZT04MTkxJkh0LFVlPUh0Pj4+MTMseXQ9MHxuZVs4XSxqdD04''@;'; put 'put ''MTkxJnl0LEp0PXl0Pj4+MTMsZ249MHxuZVs5XSxkbj04MTkxJmduLHluPWduPj4+MTMsbG49MHx4WzBdLE5uPTgxOTEmbG4sYm49bG4+Pj4xMyxlcj0wfHhbMV0sc3I9ODE5MSZlcixYbj1lcj4+PjEzLEZyPTB8eFsyXSx4cj04MTkxJkZyLHF0PUZyPj4+MTMscHI9MHx4WzNdLG5yPTgxOTEm''@;'; put 'put ''cHIsQW49cHI+Pj4xMyxxbj0wfHhbNF0sV3Q9ODE5MSZxbixwbj1xbj4+PjEzLEtuPTB8eFs1XSxOdD04MTkxJktuLHNuPUtuPj4+MTMsVW49MHx4WzZdLHduPTgxOTEmVW4sdG49VW4+Pj4xMyx6bj0wfHhbN10sVHI9ODE5MSZ6bixCbj16bj4+PjEzLGtyPTB8eFs4XSxtbj04MTkxJmtyLHVu''@;'; put 'put ''PWtyPj4+MTMsY249MHx4WzldLF9uPTgxOTEmY24sR3Q9Y24+Pj4xMztlZS5uZWdhdGl2ZT1PLm5lZ2F0aXZlXnoubmVnYXRpdmUsZWUubGVuZ3RoPTE5O3ZhciBrbj0oVisoVD1NYXRoLmltdWwoQ2UsTm4pKXwwKSsoKDgxOTEmKFM9KFM9TWF0aC5pbXVsKENlLGJuKSkrTWF0aC5pbXVsKERl''@;'; put 'put ''LE5uKXwwKSk8PDEzKXwwO1Y9KChGPU1hdGguaW11bChEZSxibikpKyhTPj4+MTMpfDApKyhrbj4+PjI2KXwwLGtuJj02NzEwODg2MyxUPU1hdGguaW11bChRZSxObiksUz0oUz1NYXRoLmltdWwoUWUsYm4pKStNYXRoLmltdWwoJGUsTm4pfDAsRj1NYXRoLmltdWwoJGUsYm4pO3ZhciBWbj0o''@;'; put 'put ''VisoVD1UK01hdGguaW11bChDZSxzcil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLFhuKXwwKStNYXRoLmltdWwoRGUsc3IpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsWG4pfDApKyhTPj4+MTMpfDApKyhWbj4+PjI2KXwwLFZuJj02NzEwODg2MyxUPU1hdGgu''@;'; put 'put ''aW11bCh3dCxObiksUz0oUz1NYXRoLmltdWwod3QsYm4pKStNYXRoLmltdWwobXQsTm4pfDAsRj1NYXRoLmltdWwobXQsYm4pLFQ9VCtNYXRoLmltdWwoUWUsc3IpfDAsUz0oUz1TK01hdGguaW11bChRZSxYbil8MCkrTWF0aC5pbXVsKCRlLHNyKXwwLEY9RitNYXRoLmltdWwoJGUsWG4pfDA7''@;'; put 'put ''dmFyIGVuPShWKyhUPVQrTWF0aC5pbXVsKENlLHhyKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UscXQpfDApK01hdGguaW11bChEZSx4cil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxxdCl8MCkrKFM+Pj4xMyl8MCkrKGVuPj4+MjYpfDAsZW4mPTY3MTA4ODYz''@;'; put 'put ''LFQ9TWF0aC5pbXVsKEF0LE5uKSxTPShTPU1hdGguaW11bChBdCxibikpK01hdGguaW11bChodCxObil8MCxGPU1hdGguaW11bChodCxibiksVD1UK01hdGguaW11bCh3dCxzcil8MCxTPShTPVMrTWF0aC5pbXVsKHd0LFhuKXwwKStNYXRoLmltdWwobXQsc3IpfDAsRj1GK01hdGguaW11bCht''@;'; put 'put ''dCxYbil8MCxUPVQrTWF0aC5pbXVsKFFlLHhyKXwwLFM9KFM9UytNYXRoLmltdWwoUWUscXQpfDApK01hdGguaW11bCgkZSx4cil8MCxGPUYrTWF0aC5pbXVsKCRlLHF0KXwwO3ZhciBJbj0oVisoVD1UK01hdGguaW11bChDZSxucil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENl''@;'; put 'put ''LEFuKXwwKStNYXRoLmltdWwoRGUsbnIpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsQW4pfDApKyhTPj4+MTMpfDApKyhJbj4+PjI2KXwwLEluJj02NzEwODg2MyxUPU1hdGguaW11bChvbixObiksUz0oUz1NYXRoLmltdWwob24sYm4pKStNYXRoLmltdWwoX3QsTm4pfDAsRj1N''@;'; put 'put ''YXRoLmltdWwoX3QsYm4pLFQ9VCtNYXRoLmltdWwoQXQsc3IpfDAsUz0oUz1TK01hdGguaW11bChBdCxYbil8MCkrTWF0aC5pbXVsKGh0LHNyKXwwLEY9RitNYXRoLmltdWwoaHQsWG4pfDAsVD1UK01hdGguaW11bCh3dCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKHd0LHF0KXwwKStNYXRoLmlt''@;'; put 'put ''dWwobXQseHIpfDAsRj1GK01hdGguaW11bChtdCxxdCl8MCxUPVQrTWF0aC5pbXVsKFFlLG5yKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsQW4pfDApK01hdGguaW11bCgkZSxucil8MCxGPUYrTWF0aC5pbXVsKCRlLEFuKXwwO3ZhciBKbj0oVisoVD1UK01hdGguaW11bChDZSxXdCl8MCl8MCkr''@;'; put 'put ''KCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLHBuKXwwKStNYXRoLmltdWwoRGUsV3QpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUscG4pfDApKyhTPj4+MTMpfDApKyhKbj4+PjI2KXwwLEpuJj02NzEwODg2MyxUPU1hdGguaW11bChldCxObiksUz0oUz1NYXRoLmltdWwoZXQs''@;'; put 'put ''Ym4pKStNYXRoLmltdWwobHQsTm4pfDAsRj1NYXRoLmltdWwobHQsYm4pLFQ9VCtNYXRoLmltdWwob24sc3IpfDAsUz0oUz1TK01hdGguaW11bChvbixYbil8MCkrTWF0aC5pbXVsKF90LHNyKXwwLEY9RitNYXRoLmltdWwoX3QsWG4pfDAsVD1UK01hdGguaW11bChBdCx4cil8MCxTPShTPVMr''@;'; put 'put ''TWF0aC5pbXVsKEF0LHF0KXwwKStNYXRoLmltdWwoaHQseHIpfDAsRj1GK01hdGguaW11bChodCxxdCl8MCxUPVQrTWF0aC5pbXVsKHd0LG5yKXwwLFM9KFM9UytNYXRoLmltdWwod3QsQW4pfDApK01hdGguaW11bChtdCxucil8MCxGPUYrTWF0aC5pbXVsKG10LEFuKXwwLFQ9VCtNYXRoLmlt''@;'; put 'put ''dWwoUWUsV3QpfDAsUz0oUz1TK01hdGguaW11bChRZSxwbil8MCkrTWF0aC5pbXVsKCRlLFd0KXwwLEY9RitNYXRoLmltdWwoJGUscG4pfDA7dmFyIG9yPShWKyhUPVQrTWF0aC5pbXVsKENlLE50KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2Usc24pfDApK01hdGguaW11bChE''@;'; put 'put ''ZSxOdCl8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxzbil8MCkrKFM+Pj4xMyl8MCkrKG9yPj4+MjYpfDAsb3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKEN0LE5uKSxTPShTPU1hdGguaW11bChDdCxibikpK01hdGguaW11bChmdCxObil8MCxGPU1hdGguaW11bChmdCxibiksVD1U''@;'; put 'put ''K01hdGguaW11bChldCxzcil8MCxTPShTPVMrTWF0aC5pbXVsKGV0LFhuKXwwKStNYXRoLmltdWwobHQsc3IpfDAsRj1GK01hdGguaW11bChsdCxYbil8MCxUPVQrTWF0aC5pbXVsKG9uLHhyKXwwLFM9KFM9UytNYXRoLmltdWwob24scXQpfDApK01hdGguaW11bChfdCx4cil8MCxGPUYrTWF0''@;'; put 'put ''aC5pbXVsKF90LHF0KXwwLFQ9VCtNYXRoLmltdWwoQXQsbnIpfDAsUz0oUz1TK01hdGguaW11bChBdCxBbil8MCkrTWF0aC5pbXVsKGh0LG5yKXwwLEY9RitNYXRoLmltdWwoaHQsQW4pfDAsVD1UK01hdGguaW11bCh3dCxXdCl8MCxTPShTPVMrTWF0aC5pbXVsKHd0LHBuKXwwKStNYXRoLmlt''@;'; put 'put ''dWwobXQsV3QpfDAsRj1GK01hdGguaW11bChtdCxwbil8MCxUPVQrTWF0aC5pbXVsKFFlLE50KXwwLFM9KFM9UytNYXRoLmltdWwoUWUsc24pfDApK01hdGguaW11bCgkZSxOdCl8MCxGPUYrTWF0aC5pbXVsKCRlLHNuKXwwO3ZhciBncj0oVisoVD1UK01hdGguaW11bChDZSx3bil8MCl8MCkr''@;'; put 'put ''KCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLHRuKXwwKStNYXRoLmltdWwoRGUsd24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsdG4pfDApKyhTPj4+MTMpfDApKyhncj4+PjI2KXwwLGdyJj02NzEwODg2MyxUPU1hdGguaW11bChHZSxObiksUz0oUz1NYXRoLmltdWwoR2Us''@;'; put 'put ''Ym4pKStNYXRoLmltdWwoVWUsTm4pfDAsRj1NYXRoLmltdWwoVWUsYm4pLFQ9VCtNYXRoLmltdWwoQ3Qsc3IpfDAsUz0oUz1TK01hdGguaW11bChDdCxYbil8MCkrTWF0aC5pbXVsKGZ0LHNyKXwwLEY9RitNYXRoLmltdWwoZnQsWG4pfDAsVD1UK01hdGguaW11bChldCx4cil8MCxTPShTPVMr''@;'; put 'put ''TWF0aC5pbXVsKGV0LHF0KXwwKStNYXRoLmltdWwobHQseHIpfDAsRj1GK01hdGguaW11bChsdCxxdCl8MCxUPVQrTWF0aC5pbXVsKG9uLG5yKXwwLFM9KFM9UytNYXRoLmltdWwob24sQW4pfDApK01hdGguaW11bChfdCxucil8MCxGPUYrTWF0aC5pbXVsKF90LEFuKXwwLFQ9VCtNYXRoLmlt''@;'; put 'put ''dWwoQXQsV3QpfDAsUz0oUz1TK01hdGguaW11bChBdCxwbil8MCkrTWF0aC5pbXVsKGh0LFd0KXwwLEY9RitNYXRoLmltdWwoaHQscG4pfDAsVD1UK01hdGguaW11bCh3dCxOdCl8MCxTPShTPVMrTWF0aC5pbXVsKHd0LHNuKXwwKStNYXRoLmltdWwobXQsTnQpfDAsRj1GK01hdGguaW11bCht''@;'; put 'put ''dCxzbil8MCxUPVQrTWF0aC5pbXVsKFFlLHduKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsdG4pfDApK01hdGguaW11bCgkZSx3bil8MCxGPUYrTWF0aC5pbXVsKCRlLHRuKXwwO3ZhciBLcj0oVisoVD1UK01hdGguaW11bChDZSxUcil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENl''@;'; put 'put ''LEJuKXwwKStNYXRoLmltdWwoRGUsVHIpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsQm4pfDApKyhTPj4+MTMpfDApKyhLcj4+PjI2KXwwLEtyJj02NzEwODg2MyxUPU1hdGguaW11bChqdCxObiksUz0oUz1NYXRoLmltdWwoanQsYm4pKStNYXRoLmltdWwoSnQsTm4pfDAsRj1N''@;'; put 'put ''YXRoLmltdWwoSnQsYm4pLFQ9VCtNYXRoLmltdWwoR2Usc3IpfDAsUz0oUz1TK01hdGguaW11bChHZSxYbil8MCkrTWF0aC5pbXVsKFVlLHNyKXwwLEY9RitNYXRoLmltdWwoVWUsWG4pfDAsVD1UK01hdGguaW11bChDdCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LHF0KXwwKStNYXRoLmlt''@;'; put 'put ''dWwoZnQseHIpfDAsRj1GK01hdGguaW11bChmdCxxdCl8MCxUPVQrTWF0aC5pbXVsKGV0LG5yKXwwLFM9KFM9UytNYXRoLmltdWwoZXQsQW4pfDApK01hdGguaW11bChsdCxucil8MCxGPUYrTWF0aC5pbXVsKGx0LEFuKXwwLFQ9VCtNYXRoLmltdWwob24sV3QpfDAsUz0oUz1TK01hdGguaW11''@;'; put 'put ''bChvbixwbil8MCkrTWF0aC5pbXVsKF90LFd0KXwwLEY9RitNYXRoLmltdWwoX3QscG4pfDAsVD1UK01hdGguaW11bChBdCxOdCl8MCxTPShTPVMrTWF0aC5pbXVsKEF0LHNuKXwwKStNYXRoLmltdWwoaHQsTnQpfDAsRj1GK01hdGguaW11bChodCxzbil8MCxUPVQrTWF0aC5pbXVsKHd0LHdu''@;'; put 'put ''KXwwLFM9KFM9UytNYXRoLmltdWwod3QsdG4pfDApK01hdGguaW11bChtdCx3bil8MCxGPUYrTWF0aC5pbXVsKG10LHRuKXwwLFQ9VCtNYXRoLmltdWwoUWUsVHIpfDAsUz0oUz1TK01hdGguaW11bChRZSxCbil8MCkrTWF0aC5pbXVsKCRlLFRyKXwwLEY9RitNYXRoLmltdWwoJGUsQm4pfDA7''@;'; put 'put ''dmFyIFZyPShWKyhUPVQrTWF0aC5pbXVsKENlLG1uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsdW4pfDApK01hdGguaW11bChEZSxtbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSx1bil8MCkrKFM+Pj4xMyl8MCkrKFZyPj4+MjYpfDAsVnImPTY3MTA4ODYz''@;'; put 'put ''LFQ9TWF0aC5pbXVsKGRuLE5uKSxTPShTPU1hdGguaW11bChkbixibikpK01hdGguaW11bCh5bixObil8MCxGPU1hdGguaW11bCh5bixibiksVD1UK01hdGguaW11bChqdCxzcil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LFhuKXwwKStNYXRoLmltdWwoSnQsc3IpfDAsRj1GK01hdGguaW11bChK''@;'; put 'put ''dCxYbil8MCxUPVQrTWF0aC5pbXVsKEdlLHhyKXwwLFM9KFM9UytNYXRoLmltdWwoR2UscXQpfDApK01hdGguaW11bChVZSx4cil8MCxGPUYrTWF0aC5pbXVsKFVlLHF0KXwwLFQ9VCtNYXRoLmltdWwoQ3QsbnIpfDAsUz0oUz1TK01hdGguaW11bChDdCxBbil8MCkrTWF0aC5pbXVsKGZ0LG5y''@;'; put 'put ''KXwwLEY9RitNYXRoLmltdWwoZnQsQW4pfDAsVD1UK01hdGguaW11bChldCxXdCl8MCxTPShTPVMrTWF0aC5pbXVsKGV0LHBuKXwwKStNYXRoLmltdWwobHQsV3QpfDAsRj1GK01hdGguaW11bChsdCxwbil8MCxUPVQrTWF0aC5pbXVsKG9uLE50KXwwLFM9KFM9UytNYXRoLmltdWwob24sc24p''@;'; put 'put ''fDApK01hdGguaW11bChfdCxOdCl8MCxGPUYrTWF0aC5pbXVsKF90LHNuKXwwLFQ9VCtNYXRoLmltdWwoQXQsd24pfDAsUz0oUz1TK01hdGguaW11bChBdCx0bil8MCkrTWF0aC5pbXVsKGh0LHduKXwwLEY9RitNYXRoLmltdWwoaHQsdG4pfDAsVD1UK01hdGguaW11bCh3dCxUcil8MCxTPShT''@;'; put 'put ''PVMrTWF0aC5pbXVsKHd0LEJuKXwwKStNYXRoLmltdWwobXQsVHIpfDAsRj1GK01hdGguaW11bChtdCxCbil8MCxUPVQrTWF0aC5pbXVsKFFlLG1uKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsdW4pfDApK01hdGguaW11bCgkZSxtbil8MCxGPUYrTWF0aC5pbXVsKCRlLHVuKXwwO3ZhciBpaT0o''@;'; put 'put ''VisoVD1UK01hdGguaW11bChDZSxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLEd0KXwwKStNYXRoLmltdWwoRGUsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsR3QpfDApKyhTPj4+MTMpfDApKyhpaT4+PjI2KXwwLGlpJj02NzEwODg2MyxUPU1hdGgu''@;'; put 'put ''aW11bChkbixzciksUz0oUz1NYXRoLmltdWwoZG4sWG4pKStNYXRoLmltdWwoeW4sc3IpfDAsRj1NYXRoLmltdWwoeW4sWG4pLFQ9VCtNYXRoLmltdWwoanQseHIpfDAsUz0oUz1TK01hdGguaW11bChqdCxxdCl8MCkrTWF0aC5pbXVsKEp0LHhyKXwwLEY9RitNYXRoLmltdWwoSnQscXQpfDAs''@;'; put 'put ''VD1UK01hdGguaW11bChHZSxucil8MCxTPShTPVMrTWF0aC5pbXVsKEdlLEFuKXwwKStNYXRoLmltdWwoVWUsbnIpfDAsRj1GK01hdGguaW11bChVZSxBbil8MCxUPVQrTWF0aC5pbXVsKEN0LFd0KXwwLFM9KFM9UytNYXRoLmltdWwoQ3QscG4pfDApK01hdGguaW11bChmdCxXdCl8MCxGPUYr''@;'; put 'put ''TWF0aC5pbXVsKGZ0LHBuKXwwLFQ9VCtNYXRoLmltdWwoZXQsTnQpfDAsUz0oUz1TK01hdGguaW11bChldCxzbil8MCkrTWF0aC5pbXVsKGx0LE50KXwwLEY9RitNYXRoLmltdWwobHQsc24pfDAsVD1UK01hdGguaW11bChvbix3bil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLHRuKXwwKStNYXRo''@;'; put 'put ''LmltdWwoX3Qsd24pfDAsRj1GK01hdGguaW11bChfdCx0bil8MCxUPVQrTWF0aC5pbXVsKEF0LFRyKXwwLFM9KFM9UytNYXRoLmltdWwoQXQsQm4pfDApK01hdGguaW11bChodCxUcil8MCxGPUYrTWF0aC5pbXVsKGh0LEJuKXwwLFQ9VCtNYXRoLmltdWwod3QsbW4pfDAsUz0oUz1TK01hdGgu''@;'; put 'put ''aW11bCh3dCx1bil8MCkrTWF0aC5pbXVsKG10LG1uKXwwLEY9RitNYXRoLmltdWwobXQsdW4pfDA7dmFyIFJyPShWKyhUPVQrTWF0aC5pbXVsKFFlLF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoUWUsR3QpfDApK01hdGguaW11bCgkZSxfbil8MCkpPDwxMyl8MDtWPSgoRj1G''@;'; put 'put ''K01hdGguaW11bCgkZSxHdCl8MCkrKFM+Pj4xMyl8MCkrKFJyPj4+MjYpfDAsUnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLHhyKSxTPShTPU1hdGguaW11bChkbixxdCkpK01hdGguaW11bCh5bix4cil8MCxGPU1hdGguaW11bCh5bixxdCksVD1UK01hdGguaW11bChqdCxucil8MCxTPShT''@;'; put 'put ''PVMrTWF0aC5pbXVsKGp0LEFuKXwwKStNYXRoLmltdWwoSnQsbnIpfDAsRj1GK01hdGguaW11bChKdCxBbil8MCxUPVQrTWF0aC5pbXVsKEdlLFd0KXwwLFM9KFM9UytNYXRoLmltdWwoR2UscG4pfDApK01hdGguaW11bChVZSxXdCl8MCxGPUYrTWF0aC5pbXVsKFVlLHBuKXwwLFQ9VCtNYXRo''@;'; put 'put ''LmltdWwoQ3QsTnQpfDAsUz0oUz1TK01hdGguaW11bChDdCxzbil8MCkrTWF0aC5pbXVsKGZ0LE50KXwwLEY9RitNYXRoLmltdWwoZnQsc24pfDAsVD1UK01hdGguaW11bChldCx3bil8MCxTPShTPVMrTWF0aC5pbXVsKGV0LHRuKXwwKStNYXRoLmltdWwobHQsd24pfDAsRj1GK01hdGguaW11''@;'; put 'put ''bChsdCx0bil8MCxUPVQrTWF0aC5pbXVsKG9uLFRyKXwwLFM9KFM9UytNYXRoLmltdWwob24sQm4pfDApK01hdGguaW11bChfdCxUcil8MCxGPUYrTWF0aC5pbXVsKF90LEJuKXwwLFQ9VCtNYXRoLmltdWwoQXQsbW4pfDAsUz0oUz1TK01hdGguaW11bChBdCx1bil8MCkrTWF0aC5pbXVsKGh0''@;'; put 'put ''LG1uKXwwLEY9RitNYXRoLmltdWwoaHQsdW4pfDA7dmFyIGxpPShWKyhUPVQrTWF0aC5pbXVsKHd0LF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwod3QsR3QpfDApK01hdGguaW11bChtdCxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChtdCxHdCl8MCkrKFM+Pj4x''@;'; put 'put ''Myl8MCkrKGxpPj4+MjYpfDAsbGkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLG5yKSxTPShTPU1hdGguaW11bChkbixBbikpK01hdGguaW11bCh5bixucil8MCxGPU1hdGguaW11bCh5bixBbiksVD1UK01hdGguaW11bChqdCxXdCl8MCxTPShTPVMrTWF0aC5pbXVsKGp0LHBuKXwwKStNYXRo''@;'; put 'put ''LmltdWwoSnQsV3QpfDAsRj1GK01hdGguaW11bChKdCxwbil8MCxUPVQrTWF0aC5pbXVsKEdlLE50KXwwLFM9KFM9UytNYXRoLmltdWwoR2Usc24pfDApK01hdGguaW11bChVZSxOdCl8MCxGPUYrTWF0aC5pbXVsKFVlLHNuKXwwLFQ9VCtNYXRoLmltdWwoQ3Qsd24pfDAsUz0oUz1TK01hdGgu''@;'; put 'put ''aW11bChDdCx0bil8MCkrTWF0aC5pbXVsKGZ0LHduKXwwLEY9RitNYXRoLmltdWwoZnQsdG4pfDAsVD1UK01hdGguaW11bChldCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKGV0LEJuKXwwKStNYXRoLmltdWwobHQsVHIpfDAsRj1GK01hdGguaW11bChsdCxCbil8MCxUPVQrTWF0aC5pbXVsKG9u''@;'; put 'put ''LG1uKXwwLFM9KFM9UytNYXRoLmltdWwob24sdW4pfDApK01hdGguaW11bChfdCxtbil8MCxGPUYrTWF0aC5pbXVsKF90LHVuKXwwO3ZhciBNaT0oVisoVD1UK01hdGguaW11bChBdCxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKEF0LEd0KXwwKStNYXRoLmltdWwoaHQsX24p''@;'; put 'put ''fDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoaHQsR3QpfDApKyhTPj4+MTMpfDApKyhNaT4+PjI2KXwwLE1pJj02NzEwODg2MyxUPU1hdGguaW11bChkbixXdCksUz0oUz1NYXRoLmltdWwoZG4scG4pKStNYXRoLmltdWwoeW4sV3QpfDAsRj1NYXRoLmltdWwoeW4scG4pLFQ9VCtNYXRo''@;'; put 'put ''LmltdWwoanQsTnQpfDAsUz0oUz1TK01hdGguaW11bChqdCxzbil8MCkrTWF0aC5pbXVsKEp0LE50KXwwLEY9RitNYXRoLmltdWwoSnQsc24pfDAsVD1UK01hdGguaW11bChHZSx3bil8MCxTPShTPVMrTWF0aC5pbXVsKEdlLHRuKXwwKStNYXRoLmltdWwoVWUsd24pfDAsRj1GK01hdGguaW11''@;'; put 'put ''bChVZSx0bil8MCxUPVQrTWF0aC5pbXVsKEN0LFRyKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsQm4pfDApK01hdGguaW11bChmdCxUcil8MCxGPUYrTWF0aC5pbXVsKGZ0LEJuKXwwLFQ9VCtNYXRoLmltdWwoZXQsbW4pfDAsUz0oUz1TK01hdGguaW11bChldCx1bil8MCkrTWF0aC5pbXVsKGx0''@;'; put 'put ''LG1uKXwwLEY9RitNYXRoLmltdWwobHQsdW4pfDA7dmFyIG8wPShWKyhUPVQrTWF0aC5pbXVsKG9uLF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwob24sR3QpfDApK01hdGguaW11bChfdCxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChfdCxHdCl8MCkrKFM+Pj4x''@;'; put 'put ''Myl8MCkrKG8wPj4+MjYpfDAsbzAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLE50KSxTPShTPU1hdGguaW11bChkbixzbikpK01hdGguaW11bCh5bixOdCl8MCxGPU1hdGguaW11bCh5bixzbiksVD1UK01hdGguaW11bChqdCx3bil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LHRuKXwwKStNYXRo''@;'; put 'put ''LmltdWwoSnQsd24pfDAsRj1GK01hdGguaW11bChKdCx0bil8MCxUPVQrTWF0aC5pbXVsKEdlLFRyKXwwLFM9KFM9UytNYXRoLmltdWwoR2UsQm4pfDApK01hdGguaW11bChVZSxUcil8MCxGPUYrTWF0aC5pbXVsKFVlLEJuKXwwLFQ9VCtNYXRoLmltdWwoQ3QsbW4pfDAsUz0oUz1TK01hdGgu''@;'; put 'put ''aW11bChDdCx1bil8MCkrTWF0aC5pbXVsKGZ0LG1uKXwwLEY9RitNYXRoLmltdWwoZnQsdW4pfDA7dmFyIG4wPShWKyhUPVQrTWF0aC5pbXVsKGV0LF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoZXQsR3QpfDApK01hdGguaW11bChsdCxfbil8MCkpPDwxMyl8MDtWPSgoRj1G''@;'; put 'put ''K01hdGguaW11bChsdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKG4wPj4+MjYpfDAsbjAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLHduKSxTPShTPU1hdGguaW11bChkbix0bikpK01hdGguaW11bCh5bix3bil8MCxGPU1hdGguaW11bCh5bix0biksVD1UK01hdGguaW11bChqdCxUcil8MCxTPShT''@;'; put 'put ''PVMrTWF0aC5pbXVsKGp0LEJuKXwwKStNYXRoLmltdWwoSnQsVHIpfDAsRj1GK01hdGguaW11bChKdCxCbil8MCxUPVQrTWF0aC5pbXVsKEdlLG1uKXwwLFM9KFM9UytNYXRoLmltdWwoR2UsdW4pfDApK01hdGguaW11bChVZSxtbil8MCxGPUYrTWF0aC5pbXVsKFVlLHVuKXwwO3ZhciBkMD0o''@;'; put 'put ''VisoVD1UK01hdGguaW11bChDdCxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKEN0LEd0KXwwKStNYXRoLmltdWwoZnQsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoZnQsR3QpfDApKyhTPj4+MTMpfDApKyhkMD4+PjI2KXwwLGQwJj02NzEwODg2MyxUPU1hdGgu''@;'; put 'put ''aW11bChkbixUciksUz0oUz1NYXRoLmltdWwoZG4sQm4pKStNYXRoLmltdWwoeW4sVHIpfDAsRj1NYXRoLmltdWwoeW4sQm4pLFQ9VCtNYXRoLmltdWwoanQsbW4pfDAsUz0oUz1TK01hdGguaW11bChqdCx1bil8MCkrTWF0aC5pbXVsKEp0LG1uKXwwLEY9RitNYXRoLmltdWwoSnQsdW4pfDA7''@;'; put 'put ''dmFyIG0wPShWKyhUPVQrTWF0aC5pbXVsKEdlLF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoR2UsR3QpfDApK01hdGguaW11bChVZSxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChVZSxHdCl8MCkrKFM+Pj4xMyl8MCkrKG0wPj4+MjYpfDAsbTAmPTY3MTA4ODYz''@;'; put 'put ''LFQ9TWF0aC5pbXVsKGRuLG1uKSxTPShTPU1hdGguaW11bChkbix1bikpK01hdGguaW11bCh5bixtbil8MCxGPU1hdGguaW11bCh5bix1bik7dmFyIEcwPShWKyhUPVQrTWF0aC5pbXVsKGp0LF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoanQsR3QpfDApK01hdGguaW11bChK''@;'; put 'put ''dCxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChKdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKEcwPj4+MjYpfDAsRzAmPTY3MTA4ODYzO3ZhciBEaT0oVisoVD1NYXRoLmltdWwoZG4sX24pKXwwKSsoKDgxOTEmKFM9KFM9TWF0aC5pbXVsKGRuLEd0KSkrTWF0aC5pbXVsKHluLF9uKXww''@;'; put 'put ''KSk8PDEzKXwwO3JldHVybiBWPSgoRj1NYXRoLmltdWwoeW4sR3QpKSsoUz4+PjEzKXwwKSsoRGk+Pj4yNil8MCxEaSY9NjcxMDg4NjMsUFswXT1rbixQWzFdPVZuLFBbMl09ZW4sUFszXT1JbixQWzRdPUpuLFBbNV09b3IsUFs2XT1ncixQWzddPUtyLFBbOF09VnIsUFs5XT1paSxQWzEwXT1S''@;'; put 'put ''cixQWzExXT1saSxQWzEyXT1NaSxQWzEzXT1vMCxQWzE0XT1uMCxQWzE1XT1kMCxQWzE2XT1tMCxQWzE3XT1HMCxQWzE4XT1EaSwwIT09ViYmKFBbMTldPVYsZWUubGVuZ3RoKyspLGVlfTtmdW5jdGlvbiBvZShoZSxPLHope3JldHVybihuZXcgY2UpLm11bHAoaGUsTyx6KX1mdW5jdGlvbiBj''@;'; put 'put ''ZShoZSxPKXt0aGlzLng9aGUsdGhpcy55PU99TWF0aC5pbXVsfHwoSj1LKSxVLnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihPLHope3ZhciBlZSxuZT10aGlzLmxlbmd0aCtPLmxlbmd0aDtyZXR1cm4gZWU9MTA9PT10aGlzLmxlbmd0aCYmMTA9PT1PLmxlbmd0aD9KKHRoaXMsTyx6KTpuZTw2''@;'; put 'put ''Mz9LKHRoaXMsTyx6KTpuZTwxMDI0P2Z1bmN0aW9uIHNlKGhlLE8seil7ei5uZWdhdGl2ZT1PLm5lZ2F0aXZlXmhlLm5lZ2F0aXZlLHoubGVuZ3RoPWhlLmxlbmd0aCtPLmxlbmd0aDtmb3IodmFyIGVlPTAsbmU9MCx4PTA7eDx6Lmxlbmd0aC0xO3grKyl7dmFyIFA9bmU7bmU9MDtmb3IodmFy''@;'; put 'put ''IFY9NjcxMDg4NjMmZWUsVD1NYXRoLm1pbih4LE8ubGVuZ3RoLTEpLFM9TWF0aC5tYXgoMCx4LWhlLmxlbmd0aCsxKTtTPD1UO1MrKyl7dmFyIERlPSgwfGhlLndvcmRzW3gtU10pKigwfE8ud29yZHNbU10pLFBlPTY3MTA4ODYzJkRlO1Y9NjcxMDg4NjMmKFBlPVBlK1Z8MCksbmUrPShQPShQ''@;'; put 'put ''PVArKERlLzY3MTA4ODY0fDApfDApKyhQZT4+PjI2KXwwKT4+PjI2LFAmPTY3MTA4ODYzfXoud29yZHNbeF09VixlZT1QLFA9bmV9cmV0dXJuIDAhPT1lZT96LndvcmRzW3hdPWVlOnoubGVuZ3RoLS0sei5zdHJpcCgpfSh0aGlzLE8seik6b2UodGhpcyxPLHopLGVlfSxjZS5wcm90b3R5cGUu''@;'; put 'put ''bWFrZVJCVD1mdW5jdGlvbihPKXtmb3IodmFyIHo9bmV3IEFycmF5KE8pLGVlPVUucHJvdG90eXBlLl9jb3VudEJpdHMoTyktMSxuZT0wO25lPE87bmUrKyl6W25lXT10aGlzLnJldkJpbihuZSxlZSxPKTtyZXR1cm4gen0sY2UucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbihPLHosZWUpe2lm''@;'; put 'put ''KDA9PT1PfHxPPT09ZWUtMSlyZXR1cm4gTztmb3IodmFyIG5lPTAseD0wO3g8ejt4KyspbmV8PSgxJk8pPDx6LXgtMSxPPj49MTtyZXR1cm4gbmV9LGNlLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKE8seixlZSxuZSx4LFApe2Zvcih2YXIgVj0wO1Y8UDtWKyspbmVbVl09eltPW1ZdXSx4''@;'; put 'put ''W1ZdPWVlW09bVl1dfSxjZS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKE8seixlZSxuZSx4LFApe3RoaXMucGVybXV0ZShQLE8seixlZSxuZSx4KTtmb3IodmFyIFY9MTtWPHg7Vjw8PTEpZm9yKHZhciBUPVY8PDEsUz1NYXRoLmNvcygyKk1hdGguUEkvVCksRj1NYXRoLnNpbigyKk1h''@;'; put 'put ''dGguUEkvVCkseWU9MDt5ZTx4O3llKz1UKWZvcih2YXIgQ2U9UyxEZT1GLFBlPTA7UGU8VjtQZSsrKXt2YXIgUWU9ZWVbeWUrUGVdLCRlPW5lW3llK1BlXSxndD1lZVt5ZStQZStWXSx3dD1uZVt5ZStQZStWXSxtdD1DZSpndC1EZSp3dDt3dD1DZSp3dCtEZSpndCxlZVt5ZStQZV09UWUrKGd0''@;'; put 'put ''PW10KSxuZVt5ZStQZV09JGUrd3QsZWVbeWUrUGUrVl09UWUtZ3QsbmVbeWUrUGUrVl09JGUtd3QsUGUhPT1UJiYobXQ9UypDZS1GKkRlLERlPVMqRGUrRipDZSxDZT1tdCl9fSxjZS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oTyx6KXt2YXIgZWU9MXxNYXRoLm1heCh6LE8pLG5l''@;'; put 'put ''PTEmZWUseD0wO2ZvcihlZT1lZS8yfDA7ZWU7ZWU+Pj49MSl4Kys7cmV0dXJuIDE8PHgrMStuZX0sY2UucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbihPLHosZWUpe2lmKCEoZWU8PTEpKWZvcih2YXIgbmU9MDtuZTxlZS8yO25lKyspe3ZhciB4PU9bbmVdO09bbmVdPU9bZWUtbmUtMV0s''@;'; put 'put ''T1tlZS1uZS0xXT14LHg9eltuZV0seltuZV09LXpbZWUtbmUtMV0seltlZS1uZS0xXT0teH19LGNlLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oTyx6KXtmb3IodmFyIGVlPTAsbmU9MDtuZTx6LzI7bmUrKyl7dmFyIHg9ODE5MipNYXRoLnJvdW5kKE9bMipuZSsxXS96KStNYXRo''@;'; put 'put ''LnJvdW5kKE9bMipuZV0veikrZWU7T1tuZV09NjcxMDg4NjMmeCxlZT14PDY3MTA4ODY0PzA6eC82NzEwODg2NHwwfXJldHVybiBPfSxjZS5wcm90b3R5cGUuY29udmVydDEzYj1mdW5jdGlvbihPLHosZWUsbmUpe2Zvcih2YXIgeD0wLFA9MDtQPHo7UCsrKWVlWzIqUF09ODE5MSYoeCs9MHxP''@;'; put 'put ''W1BdKSxlZVsyKlArMV09ODE5MSYoeD4+Pj0xMykseD4+Pj0xMztmb3IoUD0yKno7UDxuZTsrK1ApZWVbUF09MDtFKDA9PT14KSxFKDA9PSgtODE5MiZ4KSl9LGNlLnByb3RvdHlwZS5zdHViPWZ1bmN0aW9uKE8pe2Zvcih2YXIgej1uZXcgQXJyYXkoTyksZWU9MDtlZTxPO2VlKyspeltlZV09''@;'; put 'put ''MDtyZXR1cm4gen0sY2UucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oTyx6LGVlKXt2YXIgbmU9Mip0aGlzLmd1ZXNzTGVuMTNiKE8ubGVuZ3RoLHoubGVuZ3RoKSx4PXRoaXMubWFrZVJCVChuZSksUD10aGlzLnN0dWIobmUpLFY9bmV3IEFycmF5KG5lKSxUPW5ldyBBcnJheShuZSksUz1uZXcg''@;'; put 'put ''QXJyYXkobmUpLEY9bmV3IEFycmF5KG5lKSx5ZT1uZXcgQXJyYXkobmUpLENlPW5ldyBBcnJheShuZSksRGU9ZWUud29yZHM7RGUubGVuZ3RoPW5lLHRoaXMuY29udmVydDEzYihPLndvcmRzLE8ubGVuZ3RoLFYsbmUpLHRoaXMuY29udmVydDEzYih6LndvcmRzLHoubGVuZ3RoLEYsbmUpLHRo''@;'; put 'put ''aXMudHJhbnNmb3JtKFYsUCxULFMsbmUseCksdGhpcy50cmFuc2Zvcm0oRixQLHllLENlLG5lLHgpO2Zvcih2YXIgUGU9MDtQZTxuZTtQZSsrKXt2YXIgUWU9VFtQZV0qeWVbUGVdLVNbUGVdKkNlW1BlXTtTW1BlXT1UW1BlXSpDZVtQZV0rU1tQZV0qeWVbUGVdLFRbUGVdPVFlfXJldHVybiB0''@;'; put 'put ''aGlzLmNvbmp1Z2F0ZShULFMsbmUpLHRoaXMudHJhbnNmb3JtKFQsUyxEZSxQLG5lLHgpLHRoaXMuY29uanVnYXRlKERlLFAsbmUpLHRoaXMubm9ybWFsaXplMTNiKERlLG5lKSxlZS5uZWdhdGl2ZT1PLm5lZ2F0aXZlXnoubmVnYXRpdmUsZWUubGVuZ3RoPU8ubGVuZ3RoK3oubGVuZ3RoLGVl''@;'; put 'put ''LnN0cmlwKCl9LFUucHJvdG90eXBlLm11bD1mdW5jdGlvbihPKXt2YXIgej1uZXcgVShudWxsKTtyZXR1cm4gei53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrTy5sZW5ndGgpLHRoaXMubXVsVG8oTyx6KX0sVS5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihPKXt2YXIgej1uZXcgVShudWxs''@;'; put 'put ''KTtyZXR1cm4gei53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrTy5sZW5ndGgpLG9lKHRoaXMsTyx6KX0sVS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKE8sdGhpcyl9LFUucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKE8pe0UoIm51bWJl''@;'; put 'put ''ciI9PXR5cGVvZiBPKSxFKE88NjcxMDg4NjQpO2Zvcih2YXIgej0wLGVlPTA7ZWU8dGhpcy5sZW5ndGg7ZWUrKyl7dmFyIG5lPSgwfHRoaXMud29yZHNbZWVdKSpPLHg9KDY3MTA4ODYzJm5lKSsoNjcxMDg4NjMmeik7ej4+PTI2LHorPW5lLzY3MTA4ODY0fDAseis9eD4+PjI2LHRoaXMud29y''@;'; put 'put ''ZHNbZWVdPTY3MTA4ODYzJnh9cmV0dXJuIDAhPT16JiYodGhpcy53b3Jkc1tlZV09eix0aGlzLmxlbmd0aCsrKSx0aGlzfSxVLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oTyl9LFUucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0''@;'; put 'put ''aGlzLm11bCh0aGlzKX0sVS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sVS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKE8pe3ZhciB6PWZ1bmN0aW9uIHRlKGhlKXtmb3IodmFyIE89bmV3IEFycmF5KGhlLmJpdExlbmd0aCgpKSx6PTA7''@;'; put 'put ''ejxPLmxlbmd0aDt6Kyspe3ZhciBuZT16JTI2O09bel09KGhlLndvcmRzW3ovMjZ8MF0mMTw8bmUpPj4+bmV9cmV0dXJuIE99KE8pO2lmKDA9PT16Lmxlbmd0aClyZXR1cm4gbmV3IFUoMSk7Zm9yKHZhciBlZT10aGlzLG5lPTA7bmU8ei5sZW5ndGgmJjA9PT16W25lXTtuZSsrLGVlPWVlLnNx''@;'; put 'put ''cigpKTtpZigrK25lPHoubGVuZ3RoKWZvcih2YXIgeD1lZS5zcXIoKTtuZTx6Lmxlbmd0aDtuZSsrLHg9eC5zcXIoKSkwIT09eltuZV0mJihlZT1lZS5tdWwoeCkpO3JldHVybiBlZX0sVS5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2''@;'; put 'put ''YXIgeCx6PU8lMjYsZWU9KE8teikvMjYsbmU9NjcxMDg4NjM+Pj4yNi16PDwyNi16O2lmKDAhPT16KXt2YXIgUD0wO2Zvcih4PTA7eDx0aGlzLmxlbmd0aDt4Kyspe3ZhciBWPXRoaXMud29yZHNbeF0mbmU7dGhpcy53b3Jkc1t4XT0oMHx0aGlzLndvcmRzW3hdKS1WPDx6fFAsUD1WPj4+MjYt''@;'; put 'put ''en1QJiYodGhpcy53b3Jkc1t4XT1QLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1lZSl7Zm9yKHg9dGhpcy5sZW5ndGgtMTt4Pj0wO3gtLSl0aGlzLndvcmRzW3grZWVdPXRoaXMud29yZHNbeF07Zm9yKHg9MDt4PGVlO3grKyl0aGlzLndvcmRzW3hdPTA7dGhpcy5sZW5ndGgrPWVlfXJldHVybiB0''@;'; put 'put ''aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKE8pe3JldHVybiBFKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbihPKX0sVS5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKE8seixlZSl7dmFyIG5lO0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKSxuZT16Pyh6''@;'; put 'put ''LXolMjYpLzI2OjA7dmFyIHg9TyUyNixQPU1hdGgubWluKChPLXgpLzI2LHRoaXMubGVuZ3RoKSxWPTY3MTA4ODYzXjY3MTA4ODYzPj4+eDw8eCxUPWVlO2lmKG5lLT1QLG5lPU1hdGgubWF4KDAsbmUpLFQpe2Zvcih2YXIgUz0wO1M8UDtTKyspVC53b3Jkc1tTXT10aGlzLndvcmRzW1NdO1Qu''@;'; put 'put ''bGVuZ3RoPVB9aWYoMCE9PVApaWYodGhpcy5sZW5ndGg+UClmb3IodGhpcy5sZW5ndGgtPVAsUz0wO1M8dGhpcy5sZW5ndGg7UysrKXRoaXMud29yZHNbU109dGhpcy53b3Jkc1tTK1BdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIEY9MDtmb3IoUz10aGlzLmxlbmd0''@;'; put 'put ''aC0xO1M+PTAmJigwIT09Rnx8Uz49bmUpO1MtLSl7dmFyIHllPTB8dGhpcy53b3Jkc1tTXTt0aGlzLndvcmRzW1NdPUY8PDI2LXh8eWU+Pj54LEY9eWUmVn1yZXR1cm4gVCYmMCE9PUYmJihULndvcmRzW1QubGVuZ3RoKytdPUYpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0''@;'; put 'put ''aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKE8seixlZSl7cmV0dXJuIEUoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKE8seixlZSl9LFUucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hs''@;'; put 'put ''bihPKX0sVS5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oTyl9LFUucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihPKX0sVS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oTyl7cmV0dXJuIHRo''@;'; put 'put ''aXMuY2xvbmUoKS5pdXNocm4oTyl9LFUucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgej1PJTI2LGVlPShPLXopLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PWVlfHwhKHRoaXMud29yZHNbZWVdJjE8PHopKX0sVS5wcm90b3R5cGUu''@;'; put 'put ''aW1hc2tuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgej1PJTI2LGVlPShPLXopLzI2O3JldHVybiBFKDA9PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9ZWU/dGhpczooMCE9''@;'; put 'put ''PXomJmVlKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oZWUsdGhpcy5sZW5ndGgpLDAhPT16JiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9NjcxMDg4NjNeNjcxMDg4NjM+Pj56PDx6KSx0aGlzLnN0cmlwKCkpfSxVLnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5j''@;'; put 'put ''bG9uZSgpLmltYXNrbihPKX0sVS5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24oTyl7cmV0dXJuIEUoIm51bWJlciI9PXR5cGVvZiBPKSxFKE88NjcxMDg4NjQpLE88MD90aGlzLmlzdWJuKC1PKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPE8/''@;'; put 'put ''KHRoaXMud29yZHNbMF09Ty0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKE8pLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbihPKX0sVS5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKE8pe3RoaXMud29y''@;'; put 'put ''ZHNbMF0rPU87Zm9yKHZhciB6PTA7ejx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1t6XT49NjcxMDg4NjQ7eisrKXRoaXMud29yZHNbel0tPTY3MTA4ODY0LHo9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbeisxXT0xOnRoaXMud29yZHNbeisxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRo''@;'; put 'put ''Lm1heCh0aGlzLmxlbmd0aCx6KzEpLHRoaXN9LFUucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKE8pe2lmKEUoIm51bWJlciI9PXR5cGVvZiBPKSxFKE88NjcxMDg4NjQpLE88MClyZXR1cm4gdGhpcy5pYWRkbigtTyk7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9''@;'; put 'put ''MCx0aGlzLmlhZGRuKE8pLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPU8sMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIHo9MDt6PHRoaXMubGVuZ3Ro''@;'; put 'put ''JiZ0aGlzLndvcmRzW3pdPDA7eisrKXRoaXMud29yZHNbel0rPTY3MTA4ODY0LHRoaXMud29yZHNbeisxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oTyl9LFUucHJvdG90eXBlLnN1Ym49ZnVu''@;'; put 'put ''Y3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihPKX0sVS5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sVS5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LFUucHJvdG90eXBlLl9p''@;'; put 'put ''c2hsbnN1Ym11bD1mdW5jdGlvbihPLHosZWUpe3ZhciB4O3RoaXMuX2V4cGFuZChPLmxlbmd0aCtlZSk7dmFyIFAsVj0wO2Zvcih4PTA7eDxPLmxlbmd0aDt4Kyspe1A9KDB8dGhpcy53b3Jkc1t4K2VlXSkrVjt2YXIgVD0oMHxPLndvcmRzW3hdKSp6O1Y9KChQLT02NzEwODg2MyZUKT4+MjYp''@;'; put 'put ''LShULzY3MTA4ODY0fDApLHRoaXMud29yZHNbeCtlZV09NjcxMDg4NjMmUH1mb3IoO3g8dGhpcy5sZW5ndGgtZWU7eCsrKVY9KFA9KDB8dGhpcy53b3Jkc1t4K2VlXSkrVik+PjI2LHRoaXMud29yZHNbeCtlZV09NjcxMDg4NjMmUDtpZigwPT09VilyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihF''@;'; put 'put ''KC0xPT09ViksVj0wLHg9MDt4PHRoaXMubGVuZ3RoO3grKylWPShQPS0oMHx0aGlzLndvcmRzW3hdKStWKT4+MjYsdGhpcy53b3Jkc1t4XT02NzEwODg2MyZQO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbihPLHope3Zh''@;'; put 'put ''ciBlZSxuZT10aGlzLmNsb25lKCkseD1PLFA9MHx4LndvcmRzW3gubGVuZ3RoLTFdOzAhPShlZT0yNi10aGlzLl9jb3VudEJpdHMoUCkpJiYoeD14LnVzaGxuKGVlKSxuZS5pdXNobG4oZWUpLFA9MHx4LndvcmRzW3gubGVuZ3RoLTFdKTt2YXIgUyxUPW5lLmxlbmd0aC14Lmxlbmd0aDtpZigi''@;'; put 'put ''bW9kIiE9PXopeyhTPW5ldyBVKG51bGwpKS5sZW5ndGg9VCsxLFMud29yZHM9bmV3IEFycmF5KFMubGVuZ3RoKTtmb3IodmFyIEY9MDtGPFMubGVuZ3RoO0YrKylTLndvcmRzW0ZdPTB9dmFyIHllPW5lLmNsb25lKCkuX2lzaGxuc3VibXVsKHgsMSxUKTswPT09eWUubmVnYXRpdmUmJihuZT15''@;'; put 'put ''ZSxTJiYoUy53b3Jkc1tUXT0xKSk7Zm9yKHZhciBDZT1ULTE7Q2U+PTA7Q2UtLSl7dmFyIERlPTY3MTA4ODY0KigwfG5lLndvcmRzW3gubGVuZ3RoK0NlXSkrKDB8bmUud29yZHNbeC5sZW5ndGgrQ2UtMV0pO2ZvcihEZT1NYXRoLm1pbihEZS9QfDAsNjcxMDg4NjMpLG5lLl9pc2hsbnN1Ym11''@;'; put 'put ''bCh4LERlLENlKTswIT09bmUubmVnYXRpdmU7KURlLS0sbmUubmVnYXRpdmU9MCxuZS5faXNobG5zdWJtdWwoeCwxLENlKSxuZS5pc1plcm8oKXx8KG5lLm5lZ2F0aXZlXj0xKTtTJiYoUy53b3Jkc1tDZV09RGUpfXJldHVybiBTJiZTLnN0cmlwKCksbmUuc3RyaXAoKSwiZGl2IiE9PXomJjAh''@;'; put 'put ''PT1lZSYmbmUuaXVzaHJuKGVlKSx7ZGl2OlN8fG51bGwsbW9kOm5lfX0sVS5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKE8seixlZSl7cmV0dXJuIEUoIU8uaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgVSgwKSxtb2Q6bmV3IFUoMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09''@;'; put 'put ''Ty5uZWdhdGl2ZT8oUD10aGlzLm5lZygpLmRpdm1vZChPLHopLCJtb2QiIT09eiYmKG5lPVAuZGl2Lm5lZygpKSwiZGl2IiE9PXomJih4PVAubW9kLm5lZygpLGVlJiYwIT09eC5uZWdhdGl2ZSYmeC5pYWRkKE8pKSx7ZGl2Om5lLG1vZDp4fSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1PLm5l''@;'; put 'put ''Z2F0aXZlPyhQPXRoaXMuZGl2bW9kKE8ubmVnKCkseiksIm1vZCIhPT16JiYobmU9UC5kaXYubmVnKCkpLHtkaXY6bmUsbW9kOlAubW9kfSk6MCE9KHRoaXMubmVnYXRpdmUmTy5uZWdhdGl2ZSk/KFA9dGhpcy5uZWcoKS5kaXZtb2QoTy5uZWcoKSx6KSwiZGl2IiE9PXomJih4PVAubW9kLm5l''@;'; put 'put ''ZygpLGVlJiYwIT09eC5uZWdhdGl2ZSYmeC5pc3ViKE8pKSx7ZGl2OlAuZGl2LG1vZDp4fSk6Ty5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKE8pPDA/e2RpdjpuZXcgVSgwKSxtb2Q6dGhpc306MT09PU8ubGVuZ3RoPyJkaXYiPT09ej97ZGl2OnRoaXMuZGl2bihPLndvcmRzWzBdKSxt''@;'; put 'put ''b2Q6bnVsbH06Im1vZCI9PT16P3tkaXY6bnVsbCxtb2Q6bmV3IFUodGhpcy5tb2RuKE8ud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oTy53b3Jkc1swXSksbW9kOm5ldyBVKHRoaXMubW9kbihPLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoTyx6KTt2YXIgbmUseCxQfSxVLnByb3RvdHlw''@;'; put 'put ''ZS5kaXY9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZGl2bW9kKE8sImRpdiIsITEpLmRpdn0sVS5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmRpdm1vZChPLCJtb2QiLCExKS5tb2R9LFUucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZGl2bW9k''@;'; put 'put ''KE8sIm1vZCIsITApLm1vZH0sVS5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oTyl7dmFyIHo9dGhpcy5kaXZtb2QoTyk7aWYoei5tb2QuaXNaZXJvKCkpcmV0dXJuIHouZGl2O3ZhciBlZT0wIT09ei5kaXYubmVnYXRpdmU/ei5tb2QuaXN1YihPKTp6Lm1vZCxuZT1PLnVzaHJuKDEpLHg9''@;'; put 'put ''Ty5hbmRsbigxKSxQPWVlLmNtcChuZSk7cmV0dXJuIFA8MHx8MT09PXgmJjA9PT1QP3ouZGl2OjAhPT16LmRpdi5uZWdhdGl2ZT96LmRpdi5pc3VibigxKTp6LmRpdi5pYWRkbigxKX0sVS5wcm90b3R5cGUubW9kbj1mdW5jdGlvbihPKXtFKE88PTY3MTA4ODYzKTtmb3IodmFyIHo9KDE8PDI2''@;'; put 'put ''KSVPLGVlPTAsbmU9dGhpcy5sZW5ndGgtMTtuZT49MDtuZS0tKWVlPSh6KmVlKygwfHRoaXMud29yZHNbbmVdKSklTztyZXR1cm4gZWV9LFUucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKE8pe0UoTzw9NjcxMDg4NjMpO2Zvcih2YXIgej0wLGVlPXRoaXMubGVuZ3RoLTE7ZWU+PTA7ZWUtLSl7''@;'; put 'put ''dmFyIG5lPSgwfHRoaXMud29yZHNbZWVdKSs2NzEwODg2NCp6O3RoaXMud29yZHNbZWVdPW5lL098MCx6PW5lJU99cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKE8pfSxVLnByb3RvdHlwZS5lZ2NkPWZ1''@;'; put 'put ''bmN0aW9uKE8pe0UoMD09PU8ubmVnYXRpdmUpLEUoIU8uaXNaZXJvKCkpO3ZhciB6PXRoaXMsZWU9Ty5jbG9uZSgpO3o9MCE9PXoubmVnYXRpdmU/ei51bW9kKE8pOnouY2xvbmUoKTtmb3IodmFyIG5lPW5ldyBVKDEpLHg9bmV3IFUoMCksUD1uZXcgVSgwKSxWPW5ldyBVKDEpLFQ9MDt6Lmlz''@;'; put 'put ''RXZlbigpJiZlZS5pc0V2ZW4oKTspei5pdXNocm4oMSksZWUuaXVzaHJuKDEpLCsrVDtmb3IodmFyIFM9ZWUuY2xvbmUoKSxGPXouY2xvbmUoKTshei5pc1plcm8oKTspe2Zvcih2YXIgeWU9MCxDZT0xOzA9PSh6LndvcmRzWzBdJkNlKSYmeWU8MjY7Kyt5ZSxDZTw8PTEpO2lmKHllPjApZm9y''@;'; put 'put ''KHouaXVzaHJuKHllKTt5ZS0tID4wOykobmUuaXNPZGQoKXx8eC5pc09kZCgpKSYmKG5lLmlhZGQoUykseC5pc3ViKEYpKSxuZS5pdXNocm4oMSkseC5pdXNocm4oMSk7Zm9yKHZhciBEZT0wLFBlPTE7MD09KGVlLndvcmRzWzBdJlBlKSYmRGU8MjY7KytEZSxQZTw8PTEpO2lmKERlPjApZm9y''@;'; put 'put ''KGVlLml1c2hybihEZSk7RGUtLSA+MDspKFAuaXNPZGQoKXx8Vi5pc09kZCgpKSYmKFAuaWFkZChTKSxWLmlzdWIoRikpLFAuaXVzaHJuKDEpLFYuaXVzaHJuKDEpO3ouY21wKGVlKT49MD8oei5pc3ViKGVlKSxuZS5pc3ViKFApLHguaXN1YihWKSk6KGVlLmlzdWIoeiksUC5pc3ViKG5lKSxW''@;'; put 'put ''LmlzdWIoeCkpfXJldHVybnthOlAsYjpWLGdjZDplZS5pdXNobG4oVCl9fSxVLnByb3RvdHlwZS5faW52bXA9ZnVuY3Rpb24oTyl7RSgwPT09Ty5uZWdhdGl2ZSksRSghTy5pc1plcm8oKSk7dmFyIHllLHo9dGhpcyxlZT1PLmNsb25lKCk7ej0wIT09ei5uZWdhdGl2ZT96LnVtb2QoTyk6ei5j''@;'; put 'put ''bG9uZSgpO2Zvcih2YXIgbmU9bmV3IFUoMSkseD1uZXcgVSgwKSxQPWVlLmNsb25lKCk7ei5jbXBuKDEpPjAmJmVlLmNtcG4oMSk+MDspe2Zvcih2YXIgVj0wLFQ9MTswPT0oei53b3Jkc1swXSZUKSYmVjwyNjsrK1YsVDw8PTEpO2lmKFY+MClmb3Ioei5pdXNocm4oVik7Vi0tID4wOyluZS5p''@;'; put 'put ''c09kZCgpJiZuZS5pYWRkKFApLG5lLml1c2hybigxKTtmb3IodmFyIFM9MCxGPTE7MD09KGVlLndvcmRzWzBdJkYpJiZTPDI2OysrUyxGPDw9MSk7aWYoUz4wKWZvcihlZS5pdXNocm4oUyk7Uy0tID4wOyl4LmlzT2RkKCkmJnguaWFkZChQKSx4Lml1c2hybigxKTt6LmNtcChlZSk+PTA/KHou''@;'; put 'put ''aXN1YihlZSksbmUuaXN1Yih4KSk6KGVlLmlzdWIoeikseC5pc3ViKG5lKSl9cmV0dXJuKHllPTA9PT16LmNtcG4oMSk/bmU6eCkuY21wbigwKTwwJiZ5ZS5pYWRkKE8pLHllfSxVLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oTyl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gTy5hYnMoKTtpZihP''@;'; put 'put ''LmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciB6PXRoaXMuY2xvbmUoKSxlZT1PLmNsb25lKCk7ei5uZWdhdGl2ZT0wLGVlLm5lZ2F0aXZlPTA7Zm9yKHZhciBuZT0wO3ouaXNFdmVuKCkmJmVlLmlzRXZlbigpO25lKyspei5pdXNocm4oMSksZWUuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9y''@;'; put 'put ''KDt6LmlzRXZlbigpOyl6Lml1c2hybigxKTtmb3IoO2VlLmlzRXZlbigpOyllZS5pdXNocm4oMSk7dmFyIHg9ei5jbXAoZWUpO2lmKHg8MCl7dmFyIFA9ejt6PWVlLGVlPVB9ZWxzZSBpZigwPT09eHx8MD09PWVlLmNtcG4oMSkpYnJlYWs7ei5pc3ViKGVlKX1yZXR1cm4gZWUuaXVzaGxuKG5l''@;'; put 'put ''KX0sVS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5lZ2NkKE8pLmEudW1vZChPKX0sVS5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMud29yZHNbMF0pfSxVLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0''@;'; put 'put ''aGlzLndvcmRzWzBdKX0sVS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMud29yZHNbMF0mT30sVS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8pO3ZhciB6PU8lMjYsZWU9KE8teikvMjYsbmU9MTw8ejtpZih0aGlzLmxlbmd0''@;'; put 'put ''aDw9ZWUpcmV0dXJuIHRoaXMuX2V4cGFuZChlZSsxKSx0aGlzLndvcmRzW2VlXXw9bmUsdGhpcztmb3IodmFyIHg9bmUsUD1lZTswIT09eCYmUDx0aGlzLmxlbmd0aDtQKyspe3ZhciBWPTB8dGhpcy53b3Jkc1tQXTt4PShWKz14KT4+PjI2LHRoaXMud29yZHNbUF09ViY9NjcxMDg4NjN9cmV0''@;'; put 'put ''dXJuIDAhPT14JiYodGhpcy53b3Jkc1tQXT14LHRoaXMubGVuZ3RoKyspLHRoaXN9LFUucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdfSxVLnByb3RvdHlwZS5jbXBuPWZ1bmN0aW9uKE8pe3ZhciBlZSx6PU88MDtp''@;'; put 'put ''ZigwIT09dGhpcy5uZWdhdGl2ZSYmIXopcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJnopcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpZWU9MTtlbHNle3omJihPPS1PKSxFKE88PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBuZT0wfHRoaXMu''@;'; put 'put ''d29yZHNbMF07ZWU9bmU9PT1PPzA6bmU8Tz8tMToxfXJldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1lZTplZX0sVS5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKE8pe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Ty5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9''@;'; put 'put ''PU8ubmVnYXRpdmUpcmV0dXJuIDE7dmFyIHo9dGhpcy51Y21wKE8pO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC16Onp9LFUucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oTyl7aWYodGhpcy5sZW5ndGg+Ty5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8Ty5sZW5ndGgpcmV0dXJu''@;'; put 'put ''LTE7Zm9yKHZhciB6PTAsZWU9dGhpcy5sZW5ndGgtMTtlZT49MDtlZS0tKXt2YXIgbmU9MHx0aGlzLndvcmRzW2VlXSx4PTB8Ty53b3Jkc1tlZV07aWYobmUhPT14KXtuZTx4P3o9LTE6bmU+eCYmKHo9MSk7YnJlYWt9fXJldHVybiB6fSxVLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oTyl7cmV0''@;'; put 'put ''dXJuIDE9PT10aGlzLmNtcG4oTyl9LFUucHJvdG90eXBlLmd0PWZ1bmN0aW9uKE8pe3JldHVybiAxPT09dGhpcy5jbXAoTyl9LFUucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY21wbihPKT49MH0sVS5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlz''@;'; put 'put ''LmNtcChPKT49MH0sVS5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKE8pe3JldHVybi0xPT09dGhpcy5jbXBuKE8pfSxVLnByb3RvdHlwZS5sdD1mdW5jdGlvbihPKXtyZXR1cm4tMT09PXRoaXMuY21wKE8pfSxVLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNtcG4oTyk8''@;'; put 'put ''PTB9LFUucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbXAoTyk8PTB9LFUucHJvdG90eXBlLmVxbj1mdW5jdGlvbihPKXtyZXR1cm4gMD09PXRoaXMuY21wbihPKX0sVS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oTyl7cmV0dXJuIDA9PT10aGlzLmNtcChPKX0sVS5yZWQ9''@;'; put 'put ''ZnVuY3Rpb24oTyl7cmV0dXJuIG5ldyBUZShPKX0sVS5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksRSgwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3Np''@;'; put 'put ''dGl2ZXMiKSxPLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoTyl9LFUucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9t''@;'; put 'put ''KHRoaXMpfSxVLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMucmVkPU8sdGhpc30sVS5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5f''@;'; put 'put ''Zm9yY2VSZWQoTyl9LFUucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRo''@;'; put 'put ''aXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQu''@;'; put 'put ''c3ViKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24oTyl7cmV0dXJuIEUo''@;'; put 'put ''dGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQu''@;'; put 'put ''X3ZlcmlmeTIodGhpcyxPKSx0aGlzLnJlZC5tdWwodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsTyksdGhpcy5yZWQuaW11''@;'; put 'put ''bCh0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sVS5wcm90b3R5cGUucmVkSVNxcj1mdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LFUucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU3Fy''@;'; put 'put ''dCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxVLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiks''@;'; put 'put ''dGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sVS5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5u''@;'; put 'put ''ZWcodGhpcyl9LFUucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCYmIU8ucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLE8pfTt2YXIgZGU9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5''@;'; put 'put ''MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiB2ZShoZSxPKXt0aGlzLm5hbWU9aGUsdGhpcy5wPW5ldyBVKE8sMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBVKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5j''@;'; put 'put ''dGlvbiBBZSgpe3ZlLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24ga2UoKXt2ZS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZm''@;'; put 'put ''ZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIFNlKCl7dmUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiBJZSgpe3ZlLmNhbGwodGhpcywiMjU1MTki''@;'; put 'put ''LCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gVGUoaGUpe2lmKCJzdHJpbmciPT10eXBlb2YgaGUpe3ZhciBPPVUuX3ByaW1lKGhlKTt0aGlzLm09Ty5wLHRoaXMucHJpbWU9T31lbHNlIEUoaGUu''@;'; put 'put ''Z3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09aGUsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIE1lKGhlKXtUZS5jYWxsKHRoaXMsaGUpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10''@;'; put 'put ''aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IFUoMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0p''@;'; put 'put ''LHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9dmUucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgTz1uZXcgVShudWxsKTtyZXR1cm4gTy53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLE99LHZl''@;'; put 'put ''LnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKE8pe3ZhciBlZSx6PU87ZG97dGhpcy5zcGxpdCh6LHRoaXMudG1wKSxlZT0oej0oej10aGlzLmltdWxLKHopKS5pYWRkKHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUoZWU+dGhpcy5uKTt2YXIgbmU9ZWU8dGhpcy5uPy0xOnoudWNtcCh0''@;'; put 'put ''aGlzLnApO3JldHVybiAwPT09bmU/KHoud29yZHNbMF09MCx6Lmxlbmd0aD0xKTpuZT4wP3ouaXN1Yih0aGlzLnApOnZvaWQgMCE9PXouc3RyaXA/ei5zdHJpcCgpOnouX3N0cmlwKCksen0sdmUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKE8seil7Ty5pdXNocm4odGhpcy5uLDAseil9LHZl''@;'; put 'put ''LnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihPKXtyZXR1cm4gTy5pbXVsKHRoaXMuayl9LEVlKEFlLHZlKSxBZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oTyx6KXtmb3IodmFyIG5lPU1hdGgubWluKE8ubGVuZ3RoLDkpLHg9MDt4PG5lO3grKyl6LndvcmRzW3hdPU8ud29yZHNbeF07aWYo''@;'; put 'put ''ei5sZW5ndGg9bmUsTy5sZW5ndGg8PTkpcmV0dXJuIE8ud29yZHNbMF09MCx2b2lkKE8ubGVuZ3RoPTEpO3ZhciBQPU8ud29yZHNbOV07Zm9yKHoud29yZHNbei5sZW5ndGgrK109NDE5NDMwMyZQLHg9MTA7eDxPLmxlbmd0aDt4Kyspe3ZhciBWPTB8Ty53b3Jkc1t4XTtPLndvcmRzW3gtMTBd''@;'; put 'put ''PSg0MTk0MzAzJlYpPDw0fFA+Pj4yMixQPVZ9Ty53b3Jkc1t4LTEwXT1QPj4+PTIyLE8ubGVuZ3RoLT0wPT09UCYmTy5sZW5ndGg+MTA/MTA6OX0sQWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKE8pe08ud29yZHNbTy5sZW5ndGhdPTAsTy53b3Jkc1tPLmxlbmd0aCsxXT0wLE8ubGVuZ3Ro''@;'; put 'put ''Kz0yO2Zvcih2YXIgej0wLGVlPTA7ZWU8Ty5sZW5ndGg7ZWUrKyl7dmFyIG5lPTB8Ty53b3Jkc1tlZV07Ty53b3Jkc1tlZV09NjcxMDg4NjMmKHorPTk3NypuZSksej02NCpuZSsoei82NzEwODg2NHwwKX1yZXR1cm4gMD09PU8ud29yZHNbTy5sZW5ndGgtMV0mJihPLmxlbmd0aC0tLDA9PT1P''@;'; put 'put ''LndvcmRzW08ubGVuZ3RoLTFdJiZPLmxlbmd0aC0tKSxPfSxFZShrZSx2ZSksRWUoU2UsdmUpLEVlKEllLHZlKSxJZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oTyl7Zm9yKHZhciB6PTAsZWU9MDtlZTxPLmxlbmd0aDtlZSsrKXt2YXIgbmU9MTkqKDB8Ty53b3Jkc1tlZV0pK3oseD02NzEw''@;'; put 'put ''ODg2MyZuZTtuZT4+Pj0yNixPLndvcmRzW2VlXT14LHo9bmV9cmV0dXJuIDAhPT16JiYoTy53b3Jkc1tPLmxlbmd0aCsrXT16KSxPfSxVLl9wcmltZT1mdW5jdGlvbihPKXtpZihkZVtPXSlyZXR1cm4gZGVbT107dmFyIHo7aWYoImsyNTYiPT09Tyl6PW5ldyBBZTtlbHNlIGlmKCJwMjI0Ij09''@;'; put 'put ''PU8pej1uZXcga2U7ZWxzZSBpZigicDE5MiI9PT1PKXo9bmV3IFNlO2Vsc2V7aWYoInAyNTUxOSIhPT1PKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK08pO3o9bmV3IEllfXJldHVybiBkZVtPXT16LHp9LFRlLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbihPKXtFKDA9PT1P''@;'; put 'put ''Lm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEUoTy5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sVGUucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKE8seil7RSgwPT0oTy5uZWdhdGl2ZXx6Lm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9u''@;'; put 'put ''bHkgd2l0aCBwb3NpdGl2ZXMiKSxFKE8ucmVkJiZPLnJlZD09PXoucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LFRlLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZShPKS5fZm9yY2VSZWQodGhpcyk6''@;'; put 'put ''Ty51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKE8pe3JldHVybiBPLmlzWmVybygpP08uY2xvbmUoKTp0aGlzLm0uc3ViKE8pLl9mb3JjZVJlZCh0aGlzKX0sVGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihPLHope3RoaXMuX3ZlcmlmeTIo''@;'; put 'put ''Tyx6KTt2YXIgZWU9Ty5hZGQoeik7cmV0dXJuIGVlLmNtcCh0aGlzLm0pPj0wJiZlZS5pc3ViKHRoaXMubSksZWUuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihPLHope3RoaXMuX3ZlcmlmeTIoTyx6KTt2YXIgZWU9Ty5pYWRkKHopO3JldHVybiBlZS5jbXAo''@;'; put 'put ''dGhpcy5tKT49MCYmZWUuaXN1Yih0aGlzLm0pLGVlfSxUZS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKE8seil7dGhpcy5fdmVyaWZ5MihPLHopO3ZhciBlZT1PLnN1Yih6KTtyZXR1cm4gZWUuY21wbigwKTwwJiZlZS5pYWRkKHRoaXMubSksZWUuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5''@;'; put 'put ''cGUuaXN1Yj1mdW5jdGlvbihPLHope3RoaXMuX3ZlcmlmeTIoTyx6KTt2YXIgZWU9Ty5pc3ViKHopO3JldHVybiBlZS5jbXBuKDApPDAmJmVlLmlhZGQodGhpcy5tKSxlZX0sVGUucHJvdG90eXBlLnNobD1mdW5jdGlvbihPLHope3JldHVybiB0aGlzLl92ZXJpZnkxKE8pLHRoaXMuaW1vZChP''@;'; put 'put ''LnVzaGxuKHopKX0sVGUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihPLHopLHRoaXMuaW1vZChPLmltdWwoeikpfSxUZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKE8seil7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoTyx6KSx0aGlzLmltb2QoTy5tdWwo''@;'; put 'put ''eikpfSxUZS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5pbXVsKE8sTy5jbG9uZSgpKX0sVGUucHJvdG90eXBlLnNxcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5tdWwoTyxPKX0sVGUucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oTyl7aWYoTy5pc1plcm8oKSlyZXR1''@;'; put 'put ''cm4gTy5jbG9uZSgpO3ZhciB6PXRoaXMubS5hbmRsbigzKTtpZihFKHolMj09MSksMz09PXope3ZhciBlZT10aGlzLm0uYWRkKG5ldyBVKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KE8sZWUpfWZvcih2YXIgbmU9dGhpcy5tLnN1Ym4oMSkseD0wOyFuZS5pc1plcm8oKSYmMD09PW5l''@;'; put 'put ''LmFuZGxuKDEpOyl4KyssbmUuaXVzaHJuKDEpO0UoIW5lLmlzWmVybygpKTt2YXIgUD1uZXcgVSgxKS50b1JlZCh0aGlzKSxWPVAucmVkTmVnKCksVD10aGlzLm0uc3VibigxKS5pdXNocm4oMSksUz10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKFM9bmV3IFUoMipTKlMpLnRvUmVkKHRoaXMpOzAh''@;'; put 'put ''PT10aGlzLnBvdyhTLFQpLmNtcChWKTspUy5yZWRJQWRkKFYpO2Zvcih2YXIgRj10aGlzLnBvdyhTLG5lKSx5ZT10aGlzLnBvdyhPLG5lLmFkZG4oMSkuaXVzaHJuKDEpKSxDZT10aGlzLnBvdyhPLG5lKSxEZT14OzAhPT1DZS5jbXAoUCk7KXtmb3IodmFyIFBlPUNlLFFlPTA7MCE9PVBlLmNt''@;'; put 'put ''cChQKTtRZSsrKVBlPVBlLnJlZFNxcigpO0UoUWU8RGUpO3ZhciAkZT10aGlzLnBvdyhGLG5ldyBVKDEpLml1c2hsbihEZS1RZS0xKSk7eWU9eWUucmVkTXVsKCRlKSxGPSRlLnJlZFNxcigpLENlPUNlLnJlZE11bChGKSxEZT1RZX1yZXR1cm4geWV9LFRlLnByb3RvdHlwZS5pbnZtPWZ1bmN0''@;'; put 'put ''aW9uKE8pe3ZhciB6PU8uX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT16Lm5lZ2F0aXZlPyh6Lm5lZ2F0aXZlPTAsdGhpcy5pbW9kKHopLnJlZE5lZygpKTp0aGlzLmltb2Qoeil9LFRlLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oTyx6KXtpZih6LmlzWmVybygpKXJldHVybiBuZXcgVSgxKS50''@;'; put 'put ''b1JlZCh0aGlzKTtpZigwPT09ei5jbXBuKDEpKXJldHVybiBPLmNsb25lKCk7dmFyIG5lPW5ldyBBcnJheSgxNik7bmVbMF09bmV3IFUoMSkudG9SZWQodGhpcyksbmVbMV09Tztmb3IodmFyIHg9Mjt4PG5lLmxlbmd0aDt4KyspbmVbeF09dGhpcy5tdWwobmVbeC0xXSxPKTt2YXIgUD1uZVsw''@;'; put 'put ''XSxWPTAsVD0wLFM9ei5iaXRMZW5ndGgoKSUyNjtmb3IoMD09PVMmJihTPTI2KSx4PXoubGVuZ3RoLTE7eD49MDt4LS0pe2Zvcih2YXIgRj16LndvcmRzW3hdLHllPVMtMTt5ZT49MDt5ZS0tKXt2YXIgQ2U9Rj4+eWUmMTtQIT09bmVbMF0mJihQPXRoaXMuc3FyKFApKSwwIT09Q2V8fDAhPT1W''@;'; put 'put ''PyhWPDw9MSxWfD1DZSwoND09KytUfHwwPT09eCYmMD09PXllKSYmKFA9dGhpcy5tdWwoUCxuZVtWXSksVD0wLFY9MCkpOlQ9MH1TPTI2fXJldHVybiBQfSxUZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKE8pe3ZhciB6PU8udW1vZCh0aGlzLm0pO3JldHVybiB6PT09Tz96LmNsb25l''@;'; put 'put ''KCk6en0sVGUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKE8pe3ZhciB6PU8uY2xvbmUoKTtyZXR1cm4gei5yZWQ9bnVsbCx6fSxVLm1vbnQ9ZnVuY3Rpb24oTyl7cmV0dXJuIG5ldyBNZShPKX0sRWUoTWUsVGUpLE1lLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oTyl7cmV0''@;'; put 'put ''dXJuIHRoaXMuaW1vZChPLnVzaGxuKHRoaXMuc2hpZnQpKX0sTWUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKE8pe3ZhciB6PXRoaXMuaW1vZChPLm11bCh0aGlzLnJpbnYpKTtyZXR1cm4gei5yZWQ9bnVsbCx6fSxNZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihPLHope2lmKE8u''@;'; put 'put ''aXNaZXJvKCl8fHouaXNaZXJvKCkpcmV0dXJuIE8ud29yZHNbMF09MCxPLmxlbmd0aD0xLE87dmFyIGVlPU8uaW11bCh6KSxuZT1lZS5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSkseD1lZS5pc3ViKG5lKS5pdXNocm4odGhp''@;'; put 'put ''cy5zaGlmdCksUD14O3JldHVybiB4LmNtcCh0aGlzLm0pPj0wP1A9eC5pc3ViKHRoaXMubSk6eC5jbXBuKDApPDAmJihQPXguaWFkZCh0aGlzLm0pKSxQLl9mb3JjZVJlZCh0aGlzKX0sTWUucHJvdG90eXBlLm11bD1mdW5jdGlvbihPLHope2lmKE8uaXNaZXJvKCl8fHouaXNaZXJvKCkpcmV0''@;'; put 'put ''dXJuIG5ldyBVKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgZWU9Ty5tdWwoeiksbmU9ZWUubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLHg9ZWUuaXN1YihuZSkuaXVzaHJuKHRoaXMuc2hpZnQpLFA9eDtyZXR1cm4geC5jbXAo''@;'; put 'put ''dGhpcy5tKT49MD9QPXguaXN1Yih0aGlzLm0pOnguY21wbigwKTwwJiYoUD14LmlhZGQodGhpcy5tKSksUC5fZm9yY2VSZWQodGhpcyl9LE1lLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmltb2QoTy5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJl''@;'; put 'put ''ZCh0aGlzKX19KFhlPUwubm1kKFhlKSx0aGlzKX0sOTYzODY6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDgzODk0KSxCPUwoODA5NSksRT1MKDc1NjM0KSxFZT1MKDk1MjQ0KSxVPUwoNjEwNTIpO2Z1bmN0aW9uIFEoail7VS5jYWxsKHRoaXMsImRpZ2VzdCIpLHRoaXMuX2hh''@;'; put 'put ''c2g9an1tZShRLFUpLFEucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oail7dGhpcy5faGFzaC51cGRhdGUoail9LFEucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9oYXNoLmRpZ2VzdCgpfSxYZS5leHBvcnRzPWZ1bmN0aW9uKHJlKXtyZXR1cm4ibWQ1Ij09PShy''@;'; put 'put ''ZT1yZS50b0xvd2VyQ2FzZSgpKT9uZXcgQjoicm1kMTYwIj09PXJlfHwicmlwZW1kMTYwIj09PXJlP25ldyBFOm5ldyBRKEVlKHJlKSl9fSw1NTY0MDooWGUsSmUsTCk9Pnt2YXIgbWU9TCg4MDk1KTtYZS5leHBvcnRzPWZ1bmN0aW9uKEIpe3JldHVybihuZXcgbWUpLnVwZGF0ZShCKS5kaWdl''@;'; put 'put ''c3QoKX19LDc0NTI5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg4Mzg5NCksQj1MKDczMDkpLEU9TCg2MTA1MiksRWU9TCg3MzUwMikuQnVmZmVyLFU9TCg1NTY0MCksUT1MKDc1NjM0KSxqPUwoOTUyNDQpLHJlPUVlLmFsbG9jKDEyOCk7ZnVuY3Rpb24gYWUoWSxXKXtFLmNh''@;'; put 'put ''bGwodGhpcywiZGlnZXN0IiksInN0cmluZyI9PXR5cGVvZiBXJiYoVz1FZS5mcm9tKFcpKTt2YXIgTj0ic2hhNTEyIj09PVl8fCJzaGEzODQiPT09WT8xMjg6NjQ7dGhpcy5fYWxnPVksdGhpcy5fa2V5PVcsVy5sZW5ndGg+Tj9XPSgicm1kMTYwIj09PVk/bmV3IFE6aihZKSkudXBkYXRlKFcp''@;'; put 'put ''LmRpZ2VzdCgpOlcubGVuZ3RoPE4mJihXPUVlLmNvbmNhdChbVyxyZV0sTikpO2Zvcih2YXIgSz10aGlzLl9pcGFkPUVlLmFsbG9jVW5zYWZlKE4pLEo9dGhpcy5fb3BhZD1FZS5hbGxvY1Vuc2FmZShOKSxzZT0wO3NlPE47c2UrKylLW3NlXT01NF5XW3NlXSxKW3NlXT05Ml5XW3NlXTt0aGlz''@;'; put 'put ''Ll9oYXNoPSJybWQxNjAiPT09WT9uZXcgUTpqKFkpLHRoaXMuX2hhc2gudXBkYXRlKEspfW1lKGFlLEUpLGFlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKFkpe3RoaXMuX2hhc2gudXBkYXRlKFkpfSxhZS5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFyIFk9dGhpcy5faGFzaC5k''@;'; put 'put ''aWdlc3QoKTtyZXR1cm4oInJtZDE2MCI9PT10aGlzLl9hbGc/bmV3IFE6aih0aGlzLl9hbGcpKS51cGRhdGUodGhpcy5fb3BhZCkudXBkYXRlKFkpLmRpZ2VzdCgpfSxYZS5leHBvcnRzPWZ1bmN0aW9uKFcsTil7cmV0dXJuInJtZDE2MCI9PT0oVz1XLnRvTG93ZXJDYXNlKCkpfHwicmlwZW1k''@;'; put 'put ''MTYwIj09PVc/bmV3IGFlKCJybWQxNjAiLE4pOiJtZDUiPT09Vz9uZXcgQihVLE4pOm5ldyBhZShXLE4pfX0sNzMwOTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoODM4OTQpLEI9TCg3MzUwMikuQnVmZmVyLEU9TCg2MTA1MiksRWU9Qi5hbGxvYygxMjgpLFU9NjQ7ZnVuY3Rp''@;'; put 'put ''b24gUShqLHJlKXtFLmNhbGwodGhpcywiZGlnZXN0IiksInN0cmluZyI9PXR5cGVvZiByZSYmKHJlPUIuZnJvbShyZSkpLHRoaXMuX2FsZz1qLHRoaXMuX2tleT1yZSxyZS5sZW5ndGg+VT9yZT1qKHJlKTpyZS5sZW5ndGg8VSYmKHJlPUIuY29uY2F0KFtyZSxFZV0sVSkpO2Zvcih2YXIgYWU9''@;'; put 'put ''dGhpcy5faXBhZD1CLmFsbG9jVW5zYWZlKFUpLFk9dGhpcy5fb3BhZD1CLmFsbG9jVW5zYWZlKFUpLFc9MDtXPFU7VysrKWFlW1ddPTU0XnJlW1ddLFlbV109OTJecmVbV107dGhpcy5faGFzaD1bYWVdfW1lKFEsRSksUS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihqKXt0aGlzLl9oYXNo''@;'; put 'put ''LnB1c2goail9LFEucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3ZhciBqPXRoaXMuX2FsZyhCLmNvbmNhdCh0aGlzLl9oYXNoKSk7cmV0dXJuIHRoaXMuX2FsZyhCLmNvbmNhdChbdGhpcy5fb3BhZCxqXSkpfSxYZS5leHBvcnRzPVF9LDQxMzQ4OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0''@;'; put 'put ''IjtKZS5yYW5kb21CeXRlcz1KZS5ybmc9SmUucHNldWRvUmFuZG9tQnl0ZXM9SmUucHJuZz1MKDUzNzUzKSxKZS5jcmVhdGVIYXNoPUplLkhhc2g9TCg5NjM4NiksSmUuY3JlYXRlSG1hYz1KZS5IbWFjPUwoNzQ1MjkpO3ZhciBtZT1MKDg3NzkzKSxCPU9iamVjdC5rZXlzKG1lKSxFPVsic2hh''@;'; put 'put ''MSIsInNoYTIyNCIsInNoYTI1NiIsInNoYTM4NCIsInNoYTUxMiIsIm1kNSIsInJtZDE2MCJdLmNvbmNhdChCKTtKZS5nZXRIYXNoZXM9ZnVuY3Rpb24oKXtyZXR1cm4gRX07dmFyIEVlPUwoOTkzNTcpO0plLnBia2RmMj1FZS5wYmtkZjIsSmUucGJrZGYyU3luYz1FZS5wYmtkZjJTeW5jO3Zh''@;'; put 'put ''ciBVPUwoNTUyNTUpO0plLkNpcGhlcj1VLkNpcGhlcixKZS5jcmVhdGVDaXBoZXI9VS5jcmVhdGVDaXBoZXIsSmUuQ2lwaGVyaXY9VS5DaXBoZXJpdixKZS5jcmVhdGVDaXBoZXJpdj1VLmNyZWF0ZUNpcGhlcml2LEplLkRlY2lwaGVyPVUuRGVjaXBoZXIsSmUuY3JlYXRlRGVjaXBoZXI9VS5j''@;'; put 'put ''cmVhdGVEZWNpcGhlcixKZS5EZWNpcGhlcml2PVUuRGVjaXBoZXJpdixKZS5jcmVhdGVEZWNpcGhlcml2PVUuY3JlYXRlRGVjaXBoZXJpdixKZS5nZXRDaXBoZXJzPVUuZ2V0Q2lwaGVycyxKZS5saXN0Q2lwaGVycz1VLmxpc3RDaXBoZXJzO3ZhciBRPUwoOTg4MjkpO0plLkRpZmZpZUhlbGxt''@;'; put 'put ''YW5Hcm91cD1RLkRpZmZpZUhlbGxtYW5Hcm91cCxKZS5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXA9US5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXAsSmUuZ2V0RGlmZmllSGVsbG1hbj1RLmdldERpZmZpZUhlbGxtYW4sSmUuY3JlYXRlRGlmZmllSGVsbG1hbj1RLmNyZWF0ZURpZmZpZUhlbGxt''@;'; put 'put ''YW4sSmUuRGlmZmllSGVsbG1hbj1RLkRpZmZpZUhlbGxtYW47dmFyIGo9TCgzOTIzKTtKZS5jcmVhdGVTaWduPWouY3JlYXRlU2lnbixKZS5TaWduPWouU2lnbixKZS5jcmVhdGVWZXJpZnk9ai5jcmVhdGVWZXJpZnksSmUuVmVyaWZ5PWouVmVyaWZ5LEplLmNyZWF0ZUVDREg9TCg3NDc0Nik7''@;'; put 'put ''dmFyIHJlPUwoNjM3MDEpO0plLnB1YmxpY0VuY3J5cHQ9cmUucHVibGljRW5jcnlwdCxKZS5wcml2YXRlRW5jcnlwdD1yZS5wcml2YXRlRW5jcnlwdCxKZS5wdWJsaWNEZWNyeXB0PXJlLnB1YmxpY0RlY3J5cHQsSmUucHJpdmF0ZURlY3J5cHQ9cmUucHJpdmF0ZURlY3J5cHQ7dmFyIGFlPUwo''@;'; put 'put ''MTQyNzUpO0plLnJhbmRvbUZpbGw9YWUucmFuZG9tRmlsbCxKZS5yYW5kb21GaWxsU3luYz1hZS5yYW5kb21GaWxsU3luYyxKZS5jcmVhdGVDcmVkZW50aWFscz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihbInNvcnJ5LCBjcmVhdGVDcmVkZW50aWFscyBpcyBub3QgaW1wbGVtZW50ZWQg''@;'; put 'put ''eWV0Iiwid2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMiLCJodHRwczovL2dpdGh1Yi5jb20vY3J5cHRvLWJyb3dzZXJpZnkvY3J5cHRvLWJyb3dzZXJpZnkiXS5qb2luKCJcbiIpKX0sSmUuY29uc3RhbnRzPXtESF9DSEVDS19QX05PVF9TQUZFX1BSSU1FOjIsREhfQ0hFQ0tfUF9OT1RfUFJJTUU6''@;'; put 'put ''MSxESF9VTkFCTEVfVE9fQ0hFQ0tfR0VORVJBVE9SOjQsREhfTk9UX1NVSVRBQkxFX0dFTkVSQVRPUjo4LE5QTl9FTkFCTEVEOjEsQUxQTl9FTkFCTEVEOjEsUlNBX1BLQ1MxX1BBRERJTkc6MSxSU0FfU1NMVjIzX1BBRERJTkc6MixSU0FfTk9fUEFERElORzozLFJTQV9QS0NTMV9PQUVQX1BB''@;'; put 'put ''RERJTkc6NCxSU0FfWDkzMV9QQURESU5HOjUsUlNBX1BLQ1MxX1BTU19QQURESU5HOjYsUE9JTlRfQ09OVkVSU0lPTl9DT01QUkVTU0VEOjIsUE9JTlRfQ09OVkVSU0lPTl9VTkNPTVBSRVNTRUQ6NCxQT0lOVF9DT05WRVJTSU9OX0hZQlJJRDo2fX0sNjc1ODU6ZnVuY3Rpb24oWGUsSmUpe3Zh''@;'; put 'put ''ciBtZSxFLEVlLFUsUSxqLHJlLGFlLFksVyxOLEssTDtYZS5leHBvcnRzPShMPUx8fChtZT1NYXRoLEU9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oKXtmdW5jdGlvbiBKKCl7fXJldHVybiBmdW5jdGlvbihzZSl7dmFyIG9lO3JldHVybiBKLnByb3RvdHlwZT1zZSxvZT1uZXcgSixKLnByb3Rv''@;'; put 'put ''dHlwZT1udWxsLG9lfX0oKSxVPShFZT17fSkubGliPXt9LFE9VS5CYXNlPXtleHRlbmQ6ZnVuY3Rpb24oSil7dmFyIHNlPUUodGhpcyk7cmV0dXJuIEomJnNlLm1peEluKEopLCghc2UuaGFzT3duUHJvcGVydHkoImluaXQiKXx8dGhpcy5pbml0PT09c2UuaW5pdCkmJihzZS5pbml0PWZ1bmN0''@;'; put 'put ''aW9uKCl7c2UuJHN1cGVyLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksc2UuaW5pdC5wcm90b3R5cGU9c2Usc2UuJHN1cGVyPXRoaXMsc2V9LGNyZWF0ZTpmdW5jdGlvbigpe3ZhciBKPXRoaXMuZXh0ZW5kKCk7cmV0dXJuIEouaW5pdC5hcHBseShKLGFyZ3VtZW50cyksSn0saW5pdDpm''@;'; put 'put ''dW5jdGlvbigpe30sbWl4SW46ZnVuY3Rpb24oSil7Zm9yKHZhciBzZSBpbiBKKUouaGFzT3duUHJvcGVydHkoc2UpJiYodGhpc1tzZV09SltzZV0pO0ouaGFzT3duUHJvcGVydHkoInRvU3RyaW5nIikmJih0aGlzLnRvU3RyaW5nPUoudG9TdHJpbmcpfSxjbG9uZTpmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLmluaXQucHJvdG90eXBlLmV4dGVuZCh0aGlzKX19LGo9VS5Xb3JkQXJyYXk9US5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oSixzZSl7Sj10aGlzLndvcmRzPUp8fFtdLHRoaXMuc2lnQnl0ZXM9bnVsbCE9c2U/c2U6NCpKLmxlbmd0aH0sdG9TdHJpbmc6ZnVuY3Rpb24oSil7cmV0dXJu''@;'; put 'put ''KEp8fGFlKS5zdHJpbmdpZnkodGhpcyl9LGNvbmNhdDpmdW5jdGlvbihKKXt2YXIgc2U9dGhpcy53b3JkcyxvZT1KLndvcmRzLGNlPXRoaXMuc2lnQnl0ZXMsZGU9Si5zaWdCeXRlcztpZih0aGlzLmNsYW1wKCksY2UlNClmb3IodmFyIHZlPTA7dmU8ZGU7dmUrKylzZVtjZSt2ZT4+PjJdfD0o''@;'; put 'put ''b2VbdmU+Pj4yXT4+PjI0LXZlJTQqOCYyNTUpPDwyNC0oY2UrdmUpJTQqODtlbHNlIGZvcih2ZT0wO3ZlPGRlO3ZlKz00KXNlW2NlK3ZlPj4+Ml09b2VbdmU+Pj4yXTtyZXR1cm4gdGhpcy5zaWdCeXRlcys9ZGUsdGhpc30sY2xhbXA6ZnVuY3Rpb24oKXt2YXIgSj10aGlzLndvcmRzLHNlPXRo''@;'; put 'put ''aXMuc2lnQnl0ZXM7SltzZT4+PjJdJj00Mjk0OTY3Mjk1PDwzMi1zZSU0KjgsSi5sZW5ndGg9bWUuY2VpbChzZS80KX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgSj1RLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIEoud29yZHM9dGhpcy53b3Jkcy5zbGljZSgwKSxKfSxyYW5kb206ZnVuY3Rpb24o''@;'; put 'put ''Sil7Zm9yKHZhciBkZSxzZT1bXSxvZT1mdW5jdGlvbihrZSl7dmFyIFNlPTk4NzY1NDMyMSxJZT00Mjk0OTY3Mjk1O3JldHVybiBmdW5jdGlvbigpe3ZhciBUZT0oKFNlPTM2OTY5Kig2NTUzNSZTZSkrKFNlPj4xNikmSWUpPDwxNikrKGtlPTE4ZTMqKDY1NTM1JmtlKSsoa2U+PjE2KSZJZSkm''@;'; put 'put ''SWU7cmV0dXJuIFRlLz00Mjk0OTY3Mjk2LChUZSs9LjUpKihtZS5yYW5kb20oKT4uNT8xOi0xKX19LGNlPTA7Y2U8SjtjZSs9NCl7dmFyIHZlPW9lKDQyOTQ5NjcyOTYqKGRlfHxtZS5yYW5kb20oKSkpO2RlPTk4NzY1NDA3MSp2ZSgpLHNlLnB1c2goNDI5NDk2NzI5Nip2ZSgpfDApfXJldHVy''@;'; put 'put ''biBuZXcgai5pbml0KHNlLEopfX0pLHJlPUVlLmVuYz17fSxhZT1yZS5IZXg9e3N0cmluZ2lmeTpmdW5jdGlvbihKKXtmb3IodmFyIHNlPUoud29yZHMsb2U9Si5zaWdCeXRlcyxjZT1bXSxkZT0wO2RlPG9lO2RlKyspe3ZhciB2ZT1zZVtkZT4+PjJdPj4+MjQtZGUlNCo4JjI1NTtjZS5wdXNo''@;'; put 'put ''KCh2ZT4+PjQpLnRvU3RyaW5nKDE2KSksY2UucHVzaCgoMTUmdmUpLnRvU3RyaW5nKDE2KSl9cmV0dXJuIGNlLmpvaW4oIiIpfSxwYXJzZTpmdW5jdGlvbihKKXtmb3IodmFyIHNlPUoubGVuZ3RoLG9lPVtdLGNlPTA7Y2U8c2U7Y2UrPTIpb2VbY2U+Pj4zXXw9cGFyc2VJbnQoSi5zdWJzdHIo''@;'; put 'put ''Y2UsMiksMTYpPDwyNC1jZSU4KjQ7cmV0dXJuIG5ldyBqLmluaXQob2Usc2UvMil9fSxZPXJlLkxhdGluMT17c3RyaW5naWZ5OmZ1bmN0aW9uKEope2Zvcih2YXIgc2U9Si53b3JkcyxvZT1KLnNpZ0J5dGVzLGNlPVtdLGRlPTA7ZGU8b2U7ZGUrKyljZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNv''@;'; put 'put ''ZGUoc2VbZGU+Pj4yXT4+PjI0LWRlJTQqOCYyNTUpKTtyZXR1cm4gY2Uuam9pbigiIil9LHBhcnNlOmZ1bmN0aW9uKEope2Zvcih2YXIgc2U9Si5sZW5ndGgsb2U9W10sY2U9MDtjZTxzZTtjZSsrKW9lW2NlPj4+Ml18PSgyNTUmSi5jaGFyQ29kZUF0KGNlKSk8PDI0LWNlJTQqODtyZXR1cm4g''@;'; put 'put ''bmV3IGouaW5pdChvZSxzZSl9fSxXPXJlLlV0Zjg9e3N0cmluZ2lmeTpmdW5jdGlvbihKKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoWS5zdHJpbmdpZnkoSikpKX1jYXRjaChzZSl7dGhyb3cgbmV3IEVycm9yKCJNYWxmb3JtZWQgVVRGLTggZGF0YSIpfX0scGFyc2U6''@;'; put 'put ''ZnVuY3Rpb24oSil7cmV0dXJuIFkucGFyc2UodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEopKSl9fSxOPVUuQnVmZmVyZWRCbG9ja0FsZ29yaXRobT1RLmV4dGVuZCh7cmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9kYXRhPW5ldyBqLmluaXQsdGhpcy5fbkRhdGFCeXRlcz0wfSxfYXBwZW5k''@;'; put 'put ''OmZ1bmN0aW9uKEopeyJzdHJpbmciPT10eXBlb2YgSiYmKEo9Vy5wYXJzZShKKSksdGhpcy5fZGF0YS5jb25jYXQoSiksdGhpcy5fbkRhdGFCeXRlcys9Si5zaWdCeXRlc30sX3Byb2Nlc3M6ZnVuY3Rpb24oSil7dmFyIHNlPXRoaXMuX2RhdGEsb2U9c2Uud29yZHMsY2U9c2Uuc2lnQnl0ZXMs''@;'; put 'put ''ZGU9dGhpcy5ibG9ja1NpemUsQWU9Y2UvKDQqZGUpLGtlPShBZT1KP21lLmNlaWwoQWUpOm1lLm1heCgoMHxBZSktdGhpcy5fbWluQnVmZmVyU2l6ZSwwKSkqZGUsU2U9bWUubWluKDQqa2UsY2UpO2lmKGtlKXtmb3IodmFyIEllPTA7SWU8a2U7SWUrPWRlKXRoaXMuX2RvUHJvY2Vzc0Jsb2Nr''@;'; put 'put ''KG9lLEllKTt2YXIgVGU9b2Uuc3BsaWNlKDAsa2UpO3NlLnNpZ0J5dGVzLT1TZX1yZXR1cm4gbmV3IGouaW5pdChUZSxTZSl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIEo9US5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiBKLl9kYXRhPXRoaXMuX2RhdGEuY2xvbmUoKSxKfSxfbWluQnVmZmVyU2l6''@;'; put 'put ''ZTowfSksVS5IYXNoZXI9Ti5leHRlbmQoe2NmZzpRLmV4dGVuZCgpLGluaXQ6ZnVuY3Rpb24oSil7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKEopLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXtOLnJlc2V0LmNhbGwodGhpcyksdGhpcy5fZG9SZXNldCgpfSx1cGRhdGU6ZnVuY3Rp''@;'; put 'put ''b24oSil7cmV0dXJuIHRoaXMuX2FwcGVuZChKKSx0aGlzLl9wcm9jZXNzKCksdGhpc30sZmluYWxpemU6ZnVuY3Rpb24oSil7cmV0dXJuIEomJnRoaXMuX2FwcGVuZChKKSx0aGlzLl9kb0ZpbmFsaXplKCl9LGJsb2NrU2l6ZToxNixfY3JlYXRlSGVscGVyOmZ1bmN0aW9uKEope3JldHVybiBm''@;'; put 'put ''dW5jdGlvbihzZSxvZSl7cmV0dXJuIG5ldyBKLmluaXQob2UpLmZpbmFsaXplKHNlKX19LF9jcmVhdGVIbWFjSGVscGVyOmZ1bmN0aW9uKEope3JldHVybiBmdW5jdGlvbihzZSxvZSl7cmV0dXJuIG5ldyBLLkhNQUMuaW5pdChKLG9lKS5maW5hbGl6ZShzZSl9fX0pLEs9RWUuYWxnbz17fSxF''@;'; put 'put ''ZSksTCl9LDk0OTM6ZnVuY3Rpb24oWGUsSmUsTCl7dmFyIG1lO1hlLmV4cG9ydHM9KG1lPUwoNjc1ODUpLGZ1bmN0aW9uKEIpe3ZhciBFPW1lLEVlPUUubGliLFU9RWUuV29yZEFycmF5LFE9RWUuSGFzaGVyLGo9RS5hbGdvLHJlPVtdOyFmdW5jdGlvbigpe2Zvcih2YXIgSz0wO0s8NjQ7Sysr''@;'; put 'put ''KXJlW0tdPTQyOTQ5NjcyOTYqQi5hYnMoQi5zaW4oSysxKSl8MH0oKTt2YXIgYWU9ai5NRDU9US5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgVS5pbml0KFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzhdKX0sX2RvUHJvY2Vzc0Js''@;'; put 'put ''b2NrOmZ1bmN0aW9uKEssSil7Zm9yKHZhciBzZT0wO3NlPDE2O3NlKyspe3ZhciBvZT1KK3NlLGNlPUtbb2VdO0tbb2VdPTE2NzExOTM1JihjZTw8OHxjZT4+PjI0KXw0Mjc4MjU1MzYwJihjZTw8MjR8Y2U+Pj44KX12YXIgZGU9dGhpcy5faGFzaC53b3Jkcyx2ZT1LW0orMF0sQWU9S1tKKzFd''@;'; put 'put ''LGtlPUtbSisyXSxTZT1LW0orM10sSWU9S1tKKzRdLFRlPUtbSis1XSxNZT1LW0orNl0saGU9S1tKKzddLE89S1tKKzhdLHo9S1tKKzldLGVlPUtbSisxMF0sbmU9S1tKKzExXSx4PUtbSisxMl0sUD1LW0orMTNdLFY9S1tKKzE0XSxUPUtbSisxNV0sUz1kZVswXSxGPWRlWzFdLHllPWRlWzJd''@;'; put 'put ''LENlPWRlWzNdO1M9WShTLEYseWUsQ2UsdmUsNyxyZVswXSksQ2U9WShDZSxTLEYseWUsQWUsMTIscmVbMV0pLHllPVkoeWUsQ2UsUyxGLGtlLDE3LHJlWzJdKSxGPVkoRix5ZSxDZSxTLFNlLDIyLHJlWzNdKSxTPVkoUyxGLHllLENlLEllLDcscmVbNF0pLENlPVkoQ2UsUyxGLHllLFRlLDEy''@;'; put 'put ''LHJlWzVdKSx5ZT1ZKHllLENlLFMsRixNZSwxNyxyZVs2XSksRj1ZKEYseWUsQ2UsUyxoZSwyMixyZVs3XSksUz1ZKFMsRix5ZSxDZSxPLDcscmVbOF0pLENlPVkoQ2UsUyxGLHllLHosMTIscmVbOV0pLHllPVkoeWUsQ2UsUyxGLGVlLDE3LHJlWzEwXSksRj1ZKEYseWUsQ2UsUyxuZSwyMixy''@;'; put 'put ''ZVsxMV0pLFM9WShTLEYseWUsQ2UseCw3LHJlWzEyXSksQ2U9WShDZSxTLEYseWUsUCwxMixyZVsxM10pLHllPVkoeWUsQ2UsUyxGLFYsMTcscmVbMTRdKSxTPVcoUyxGPVkoRix5ZSxDZSxTLFQsMjIscmVbMTVdKSx5ZSxDZSxBZSw1LHJlWzE2XSksQ2U9VyhDZSxTLEYseWUsTWUsOSxyZVsx''@;'; put 'put ''N10pLHllPVcoeWUsQ2UsUyxGLG5lLDE0LHJlWzE4XSksRj1XKEYseWUsQ2UsUyx2ZSwyMCxyZVsxOV0pLFM9VyhTLEYseWUsQ2UsVGUsNSxyZVsyMF0pLENlPVcoQ2UsUyxGLHllLGVlLDkscmVbMjFdKSx5ZT1XKHllLENlLFMsRixULDE0LHJlWzIyXSksRj1XKEYseWUsQ2UsUyxJZSwyMCxy''@;'; put 'put ''ZVsyM10pLFM9VyhTLEYseWUsQ2Useiw1LHJlWzI0XSksQ2U9VyhDZSxTLEYseWUsViw5LHJlWzI1XSkseWU9Vyh5ZSxDZSxTLEYsU2UsMTQscmVbMjZdKSxGPVcoRix5ZSxDZSxTLE8sMjAscmVbMjddKSxTPVcoUyxGLHllLENlLFAsNSxyZVsyOF0pLENlPVcoQ2UsUyxGLHllLGtlLDkscmVb''@;'; put 'put ''MjldKSx5ZT1XKHllLENlLFMsRixoZSwxNCxyZVszMF0pLFM9TihTLEY9VyhGLHllLENlLFMseCwyMCxyZVszMV0pLHllLENlLFRlLDQscmVbMzJdKSxDZT1OKENlLFMsRix5ZSxPLDExLHJlWzMzXSkseWU9Tih5ZSxDZSxTLEYsbmUsMTYscmVbMzRdKSxGPU4oRix5ZSxDZSxTLFYsMjMscmVb''@;'; put 'put ''MzVdKSxTPU4oUyxGLHllLENlLEFlLDQscmVbMzZdKSxDZT1OKENlLFMsRix5ZSxJZSwxMSxyZVszN10pLHllPU4oeWUsQ2UsUyxGLGhlLDE2LHJlWzM4XSksRj1OKEYseWUsQ2UsUyxlZSwyMyxyZVszOV0pLFM9TihTLEYseWUsQ2UsUCw0LHJlWzQwXSksQ2U9TihDZSxTLEYseWUsdmUsMTEs''@;'; put 'put ''cmVbNDFdKSx5ZT1OKHllLENlLFMsRixTZSwxNixyZVs0Ml0pLEY9TihGLHllLENlLFMsTWUsMjMscmVbNDNdKSxTPU4oUyxGLHllLENlLHosNCxyZVs0NF0pLENlPU4oQ2UsUyxGLHllLHgsMTEscmVbNDVdKSx5ZT1OKHllLENlLFMsRixULDE2LHJlWzQ2XSksUz10ZShTLEY9TihGLHllLENl''@;'; put 'put ''LFMsa2UsMjMscmVbNDddKSx5ZSxDZSx2ZSw2LHJlWzQ4XSksQ2U9dGUoQ2UsUyxGLHllLGhlLDEwLHJlWzQ5XSkseWU9dGUoeWUsQ2UsUyxGLFYsMTUscmVbNTBdKSxGPXRlKEYseWUsQ2UsUyxUZSwyMSxyZVs1MV0pLFM9dGUoUyxGLHllLENlLHgsNixyZVs1Ml0pLENlPXRlKENlLFMsRix5''@;'; put 'put ''ZSxTZSwxMCxyZVs1M10pLHllPXRlKHllLENlLFMsRixlZSwxNSxyZVs1NF0pLEY9dGUoRix5ZSxDZSxTLEFlLDIxLHJlWzU1XSksUz10ZShTLEYseWUsQ2UsTyw2LHJlWzU2XSksQ2U9dGUoQ2UsUyxGLHllLFQsMTAscmVbNTddKSx5ZT10ZSh5ZSxDZSxTLEYsTWUsMTUscmVbNThdKSxGPXRl''@;'; put 'put ''KEYseWUsQ2UsUyxQLDIxLHJlWzU5XSksUz10ZShTLEYseWUsQ2UsSWUsNixyZVs2MF0pLENlPXRlKENlLFMsRix5ZSxuZSwxMCxyZVs2MV0pLHllPXRlKHllLENlLFMsRixrZSwxNSxyZVs2Ml0pLEY9dGUoRix5ZSxDZSxTLHosMjEscmVbNjNdKSxkZVswXT1kZVswXStTfDAsZGVbMV09ZGVb''@;'; put 'put ''MV0rRnwwLGRlWzJdPWRlWzJdK3llfDAsZGVbM109ZGVbM10rQ2V8MH0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgSz10aGlzLl9kYXRhLEo9Sy53b3JkcyxzZT04KnRoaXMuX25EYXRhQnl0ZXMsb2U9OCpLLnNpZ0J5dGVzO0pbb2U+Pj41XXw9MTI4PDwyNC1vZSUzMjt2YXIgY2U9Qi5m''@;'; put 'put ''bG9vcihzZS80Mjk0OTY3Mjk2KSxkZT1zZTtKWzE1KyhvZSs2ND4+Pjk8PDQpXT0xNjcxMTkzNSYoY2U8PDh8Y2U+Pj4yNCl8NDI3ODI1NTM2MCYoY2U8PDI0fGNlPj4+OCksSlsxNCsob2UrNjQ+Pj45PDw0KV09MTY3MTE5MzUmKGRlPDw4fGRlPj4+MjQpfDQyNzgyNTUzNjAmKGRlPDwyNHxk''@;'; put 'put ''ZT4+PjgpLEsuc2lnQnl0ZXM9NCooSi5sZW5ndGgrMSksdGhpcy5fcHJvY2VzcygpO2Zvcih2YXIgdmU9dGhpcy5faGFzaCxBZT12ZS53b3JkcyxrZT0wO2tlPDQ7a2UrKyl7dmFyIFNlPUFlW2tlXTtBZVtrZV09MTY3MTE5MzUmKFNlPDw4fFNlPj4+MjQpfDQyNzgyNTUzNjAmKFNlPDwyNHxT''@;'; put 'put ''ZT4+PjgpfXJldHVybiB2ZX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgSz1RLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIEsuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLEt9fSk7ZnVuY3Rpb24gWShLLEosc2Usb2UsY2UsZGUsdmUpe3ZhciBBZT1LKyhKJnNlfH5KJm9lKStjZSt2ZTtyZXR1cm4o''@;'; put 'put ''QWU8PGRlfEFlPj4+MzItZGUpK0p9ZnVuY3Rpb24gVyhLLEosc2Usb2UsY2UsZGUsdmUpe3ZhciBBZT1LKyhKJm9lfHNlJn5vZSkrY2UrdmU7cmV0dXJuKEFlPDxkZXxBZT4+PjMyLWRlKStKfWZ1bmN0aW9uIE4oSyxKLHNlLG9lLGNlLGRlLHZlKXt2YXIgQWU9SysoSl5zZV5vZSkrY2UrdmU7''@;'; put 'put ''cmV0dXJuKEFlPDxkZXxBZT4+PjMyLWRlKStKfWZ1bmN0aW9uIHRlKEssSixzZSxvZSxjZSxkZSx2ZSl7dmFyIEFlPUsrKHNlXihKfH5vZSkpK2NlK3ZlO3JldHVybihBZTw8ZGV8QWU+Pj4zMi1kZSkrSn1FLk1ENT1RLl9jcmVhdGVIZWxwZXIoYWUpLEUuSG1hY01ENT1RLl9jcmVhdGVIbWFj''@;'; put 'put ''SGVscGVyKGFlKX0oTWF0aCksbWUuTUQ1KX0sNTI3ODY6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0wuZChKZSx7Qjg6KCk9PlNlLElsOigpPT5CLEo1OigpPT5FZSxTVTooKT0+a2UsU3M6KCk9PkllLFltOigpPT5lZSxaUDooKT0+ZGUseFY6KCk9PkV9KTt2YXIgbWU9TCg2ODg4NCk7ZnVu''@;'; put 'put ''Y3Rpb24gQigpe312YXIgRT0uNyxFZT0xL0UsVT0iXFxzKihbKy1dP1xcZCspXFxzKiIsUT0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixqPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixyZT0vXiMoWzAtOWEt''@;'; put 'put ''Zl17Myw4fSkkLyxhZT1uZXcgUmVnRXhwKCJecmdiXFwoIitbVSxVLFVdKyJcXCkkIiksWT1uZXcgUmVnRXhwKCJecmdiXFwoIitbaixqLGpdKyJcXCkkIiksVz1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW1UsVSxVLFFdKyJcXCkkIiksTj1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW2osaixqLFFd''@;'; put 'put ''KyJcXCkkIiksdGU9bmV3IFJlZ0V4cCgiXmhzbFxcKCIrW1EsaixqXSsiXFwpJCIpLEs9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tRLGosaixRXSsiXFwpJCIpLEo9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQs''@;'; put 'put ''YXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJl''@;'; put 'put ''dXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5''@;'; put 'put ''LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkx''@;'; put 'put ''MDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcx''@;'; put 'put ''Njk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3''@;'; put 'put ''NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0''@;'; put 'put ''NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3''@;'; put 'put ''NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVu''@;'; put 'put ''OjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAs''@;'; put 'put ''bWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVk''@;'; put 'put ''aXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2''@;'; put 'put ''ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9p''@;'; put 'put ''c2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6''@;'; put 'put ''NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcs''@;'; put 'put ''c2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0''@;'; put 'put ''bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07ZnVuY3Rpb24gc2UoKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiBjZSgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIGRlKFApe3ZhciBWLFQ7cmV0dXJuIFA9KFArIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLChWPXJlLmV4ZWMoUCkpPyhUPVZbMV0ubGVuZ3RoLFY9''@;'; put 'put ''cGFyc2VJbnQoVlsxXSwxNiksNj09PVQ/dmUoVik6Mz09PVQ/bmV3IEllKFY+PjgmMTV8Vj4+NCYyNDAsVj4+NCYxNXwyNDAmViwoMTUmVik8PDR8MTUmViwxKTo4PT09VD9BZShWPj4yNCYyNTUsVj4+MTYmMjU1LFY+PjgmMjU1LCgyNTUmVikvMjU1KTo0PT09VD9BZShWPj4xMiYxNXxWPj44''@;'; put 'put ''JjI0MCxWPj44JjE1fFY+PjQmMjQwLFY+PjQmMTV8MjQwJlYsKCgxNSZWKTw8NHwxNSZWKS8yNTUpOm51bGwpOihWPWFlLmV4ZWMoUCkpP25ldyBJZShWWzFdLFZbMl0sVlszXSwxKTooVj1ZLmV4ZWMoUCkpP25ldyBJZSgyNTUqVlsxXS8xMDAsMjU1KlZbMl0vMTAwLDI1NSpWWzNdLzEwMCwx''@;'; put 'put ''KTooVj1XLmV4ZWMoUCkpP0FlKFZbMV0sVlsyXSxWWzNdLFZbNF0pOihWPU4uZXhlYyhQKSk/QWUoMjU1KlZbMV0vMTAwLDI1NSpWWzJdLzEwMCwyNTUqVlszXS8xMDAsVls0XSk6KFY9dGUuZXhlYyhQKSk/TyhWWzFdLFZbMl0vMTAwLFZbM10vMTAwLDEpOihWPUsuZXhlYyhQKSk/TyhWWzFd''@;'; put 'put ''LFZbMl0vMTAwLFZbM10vMTAwLFZbNF0pOkouaGFzT3duUHJvcGVydHkoUCk/dmUoSltQXSk6InRyYW5zcGFyZW50Ij09PVA/bmV3IEllKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gdmUoUCl7cmV0dXJuIG5ldyBJZShQPj4xNiYyNTUsUD4+OCYyNTUsMjU1JlAsMSl9ZnVuY3Rpb24g''@;'; put 'put ''QWUoUCxWLFQsUyl7cmV0dXJuIFM8PTAmJihQPVY9VD1OYU4pLG5ldyBJZShQLFYsVCxTKX1mdW5jdGlvbiBrZShQKXtyZXR1cm4gUCBpbnN0YW5jZW9mIEJ8fChQPWRlKFApKSxQP25ldyBJZSgoUD1QLnJnYigpKS5yLFAuZyxQLmIsUC5vcGFjaXR5KTpuZXcgSWV9ZnVuY3Rpb24gU2UoUCxW''@;'; put 'put ''LFQsUyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2tlKFApOm5ldyBJZShQLFYsVCxudWxsPT1TPzE6Uyl9ZnVuY3Rpb24gSWUoUCxWLFQsUyl7dGhpcy5yPStQLHRoaXMuZz0rVix0aGlzLmI9K1QsdGhpcy5vcGFjaXR5PStTfWZ1bmN0aW9uIFRlKCl7cmV0dXJuIiMiK2hlKHRoaXMu''@;'; put 'put ''cikraGUodGhpcy5nKStoZSh0aGlzLmIpfWZ1bmN0aW9uIE1lKCl7dmFyIFA9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KFA9aXNOYU4oUCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsUCkpKT8icmdiKCI6InJnYmEoIikrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlz''@;'; put 'put ''LnIpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuZyl8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5iKXx8MCkpKygxPT09UD8iKSI6IiwgIitQKyIpIil9ZnVuY3Rpb24gaGUoUCl7cmV0dXJuKChQPU1h''@;'; put 'put ''dGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoUCl8fDApKSk8MTY/IjAiOiIiKStQLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBPKFAsVixULFMpe3JldHVybiBTPD0wP1A9Vj1UPU5hTjpUPD0wfHxUPj0xP1A9Vj1OYU46Vjw9MCYmKFA9TmFOKSxuZXcgbmUoUCxWLFQsUyl9ZnVuY3Rp''@;'; put 'put ''b24geihQKXtpZihQIGluc3RhbmNlb2YgbmUpcmV0dXJuIG5ldyBuZShQLmgsUC5zLFAubCxQLm9wYWNpdHkpO2lmKFAgaW5zdGFuY2VvZiBCfHwoUD1kZShQKSksIVApcmV0dXJuIG5ldyBuZTtpZihQIGluc3RhbmNlb2YgbmUpcmV0dXJuIFA7dmFyIFY9KFA9UC5yZ2IoKSkuci8yNTUsVD1Q''@;'; put 'put ''LmcvMjU1LFM9UC5iLzI1NSxGPU1hdGgubWluKFYsVCxTKSx5ZT1NYXRoLm1heChWLFQsUyksQ2U9TmFOLERlPXllLUYsUGU9KHllK0YpLzI7cmV0dXJuIERlPyhDZT1WPT09eWU/KFQtUykvRGUrNiooVDxTKTpUPT09eWU/KFMtVikvRGUrMjooVi1UKS9EZSs0LERlLz1QZTwuNT95ZStGOjIt''@;'; put 'put ''eWUtRixDZSo9NjApOkRlPVBlPjAmJlBlPDE/MDpDZSxuZXcgbmUoQ2UsRGUsUGUsUC5vcGFjaXR5KX1mdW5jdGlvbiBlZShQLFYsVCxTKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/eihQKTpuZXcgbmUoUCxWLFQsbnVsbD09Uz8xOlMpfWZ1bmN0aW9uIG5lKFAsVixULFMpe3RoaXMu''@;'; put 'put ''aD0rUCx0aGlzLnM9K1YsdGhpcy5sPStULHRoaXMub3BhY2l0eT0rU31mdW5jdGlvbiB4KFAsVixUKXtyZXR1cm4gMjU1KihQPDYwP1YrKFQtVikqUC82MDpQPDE4MD9UOlA8MjQwP1YrKFQtVikqKDI0MC1QKS82MDpWKX0oMCxtZS5aKShCLGRlLHtjb3B5OmZ1bmN0aW9uKFApe3JldHVybiBP''@;'; put 'put ''YmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsUCl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OnNlLGZvcm1hdEhleDpzZSxmb3JtYXRIc2w6ZnVuY3Rpb24gb2UoKXtyZXR1cm4geih0aGlzKS5mb3JtYXRI''@;'; put 'put ''c2woKX0sZm9ybWF0UmdiOmNlLHRvU3RyaW5nOmNlfSksKDAsbWUuWikoSWUsU2UsKDAsbWUubCkoQix7YnJpZ2h0ZXI6ZnVuY3Rpb24oUCl7cmV0dXJuIFA9bnVsbD09UD9FZTpNYXRoLnBvdyhFZSxQKSxuZXcgSWUodGhpcy5yKlAsdGhpcy5nKlAsdGhpcy5iKlAsdGhpcy5vcGFjaXR5KX0s''@;'; put 'put ''ZGFya2VyOmZ1bmN0aW9uKFApe3JldHVybiBQPW51bGw9PVA/RTpNYXRoLnBvdyhFLFApLG5ldyBJZSh0aGlzLnIqUCx0aGlzLmcqUCx0aGlzLmIqUCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4tLjU8PXRo''@;'; put 'put ''aXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4OlRlLGZvcm1hdEhleDpUZSxmb3JtYXRSZ2I6TWUsdG9TdHJpbmc6TWV9KSksKDAsbWUuWiko''@;'; put 'put ''bmUsZWUsKDAsbWUubCkoQix7YnJpZ2h0ZXI6ZnVuY3Rpb24oUCl7cmV0dXJuIFA9bnVsbD09UD9FZTpNYXRoLnBvdyhFZSxQKSxuZXcgbmUodGhpcy5oLHRoaXMucyx0aGlzLmwqUCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24oUCl7cmV0dXJuIFA9bnVsbD09UD9FOk1hdGgucG93''@;'; put 'put ''KEUsUCksbmV3IG5lKHRoaXMuaCx0aGlzLnMsdGhpcy5sKlAsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIFA9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxWPWlzTmFOKFApfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLFQ9dGhpcy5sLFM9VCsoVDwuNT9UOjEtVCkqVixGPTIq''@;'; put 'put ''VC1TO3JldHVybiBuZXcgSWUoeChQPj0yNDA/UC0yNDA6UCsxMjAsRixTKSx4KFAsRixTKSx4KFA8MTIwP1ArMjQwOlAtMTIwLEYsUyksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10''@;'; put 'put ''aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhzbDpmdW5jdGlvbigpe3ZhciBQPXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PShQPWlzTmFOKFApPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLFApKSk/ImhzbCgiOiJoc2xhKCIpKyh0aGlz''@;'; put 'put ''Lmh8fDApKyIsICIrMTAwKih0aGlzLnN8fDApKyIlLCAiKzEwMCoodGhpcy5sfHwwKSsiJSIrKDE9PT1QPyIpIjoiLCAiK1ArIikiKX19KSl9LDY4ODg0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtZShFLEVlLFUpe0UucHJvdG90eXBlPUVlLnByb3RvdHlwZT1VLFUuY29u''@;'; put 'put ''c3RydWN0b3I9RX1mdW5jdGlvbiBCKEUsRWUpe3ZhciBVPU9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpO2Zvcih2YXIgUSBpbiBFZSlVW1FdPUVlW1FdO3JldHVybiBVfUwuZChKZSx7WjooKT0+bWUsbDooKT0+Qn0pfSwyNTkyMjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TC5kKEplLHta''@;'; put 'put ''OigpPT5qfSk7dmFyIG1lPXt2YWx1ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIEIoKXtmb3IodmFyIFcscmU9MCxhZT1hcmd1bWVudHMubGVuZ3RoLFk9e307cmU8YWU7KytyZSl7aWYoIShXPWFyZ3VtZW50c1tyZV0rIiIpfHxXIGluIFl8fC9bXHMuXS8udGVzdChXKSl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoImlsbGVnYWwgdHlwZTogIitXKTtZW1ddPVtdfXJldHVybiBuZXcgRShZKX1mdW5jdGlvbiBFKHJlKXt0aGlzLl89cmV9ZnVuY3Rpb24gRWUocmUsYWUpe3JldHVybiByZS50cmltKCkuc3BsaXQoL158XHMrLykubWFwKGZ1bmN0aW9uKFkpe3ZhciBXPSIiLE49WS5pbmRleE9mKCIuIik7''@;'; put 'put ''aWYoTj49MCYmKFc9WS5zbGljZShOKzEpLFk9WS5zbGljZSgwLE4pKSxZJiYhYWUuaGFzT3duUHJvcGVydHkoWSkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrWSk7cmV0dXJue3R5cGU6WSxuYW1lOld9fSl9ZnVuY3Rpb24gVShyZSxhZSl7Zm9yKHZhciBOLFk9MCxXPXJlLmxl''@;'; put 'put ''bmd0aDtZPFc7KytZKWlmKChOPXJlW1ldKS5uYW1lPT09YWUpcmV0dXJuIE4udmFsdWV9ZnVuY3Rpb24gUShyZSxhZSxZKXtmb3IodmFyIFc9MCxOPXJlLmxlbmd0aDtXPE47KytXKWlmKHJlW1ddLm5hbWU9PT1hZSl7cmVbV109bWUscmU9cmUuc2xpY2UoMCxXKS5jb25jYXQocmUuc2xpY2Uo''@;'; put 'put ''VysxKSk7YnJlYWt9cmV0dXJuIG51bGwhPVkmJnJlLnB1c2goe25hbWU6YWUsdmFsdWU6WX0pLHJlfUUucHJvdG90eXBlPUIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpFLG9uOmZ1bmN0aW9uKHJlLGFlKXt2YXIgTixZPXRoaXMuXyxXPUVlKHJlKyIiLFkpLHRlPS0xLEs9Vy5sZW5ndGg7aWYo''@;'; put 'put ''IShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1hZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGFlKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIithZSk7Zm9yKDsrK3RlPEs7KWlmKE49KHJlPVdbdGVdKS50eXBlKVlbTl09UShZW05dLHJlLm5hbWUsYWUpO2Vsc2UgaWYo''@;'; put 'put ''bnVsbD09YWUpZm9yKE4gaW4gWSlZW05dPVEoWVtOXSxyZS5uYW1lLG51bGwpO3JldHVybiB0aGlzfWZvcig7Kyt0ZTxLOylpZigoTj0ocmU9V1t0ZV0pLnR5cGUpJiYoTj1VKFlbTl0scmUubmFtZSkpKXJldHVybiBOfSxjb3B5OmZ1bmN0aW9uKCl7dmFyIHJlPXt9LGFlPXRoaXMuXztmb3Io''@;'; put 'put ''dmFyIFkgaW4gYWUpcmVbWV09YWVbWV0uc2xpY2UoKTtyZXR1cm4gbmV3IEUocmUpfSxjYWxsOmZ1bmN0aW9uKHJlLGFlKXtpZigoTj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBOLHRlLFk9bmV3IEFycmF5KE4pLFc9MDtXPE47KytXKVlbV109YXJndW1lbnRzW1crMl07aWYoIXRo''@;'; put 'put ''aXMuXy5oYXNPd25Qcm9wZXJ0eShyZSkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrcmUpO2ZvcihXPTAsTj0odGU9dGhpcy5fW3JlXSkubGVuZ3RoO1c8TjsrK1cpdGVbV10udmFsdWUuYXBwbHkoYWUsWSl9LGFwcGx5OmZ1bmN0aW9uKHJlLGFlLFkpe2lmKCF0aGlzLl8uaGFz''@;'; put 'put ''T3duUHJvcGVydHkocmUpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3JlKTtmb3IodmFyIFc9dGhpcy5fW3JlXSxOPTAsdGU9Vy5sZW5ndGg7Tjx0ZTsrK04pV1tOXS52YWx1ZS5hcHBseShhZSxZKX19O2NvbnN0IGo9Qn0sODUxMDY6KFhlLEplLEwpPT57InVzZSBzdHJpY3Qi''@;'; put 'put ''O0wucihKZSksTC5kKEplLHtkaXNwYXRjaDooKT0+bWUuWn0pO3ZhciBtZT1MKDI1OTIyKX0sNjU5OTA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEIoVGUsTWUpe2lmKChoZT0oVGU9TWU/VGUudG9FeHBvbmVudGlhbChNZS0xKTpUZS50b0V4cG9uZW50aWFsKCkpLmluZGV4''@;'; put 'put ''T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgaGUsTz1UZS5zbGljZSgwLGhlKTtyZXR1cm5bTy5sZW5ndGg+MT9PWzBdK08uc2xpY2UoMik6TywrVGUuc2xpY2UoaGUrMSldfWZ1bmN0aW9uIEUoVGUpe3JldHVybihUZT1CKE1hdGguYWJzKFRlKSkpP1RlWzFdOk5hTn1MLnIoSmUpLEwuZChK''@;'; put 'put ''ZSx7Rm9ybWF0U3BlY2lmaWVyOigpPT5yZSxmb3JtYXQ6KCk9PmRlLGZvcm1hdERlZmF1bHRMb2NhbGU6KCk9PkFlLGZvcm1hdExvY2FsZTooKT0+b2UsZm9ybWF0UHJlZml4OigpPT52ZSxmb3JtYXRTcGVjaWZpZXI6KCk9PmoscHJlY2lzaW9uRml4ZWQ6KCk9PmtlLHByZWNpc2lvblByZWZp''@;'; put 'put ''eDooKT0+U2UscHJlY2lzaW9uUm91bmQ6KCk9PkllfSk7dmFyIFksUT0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBqKFRlKXtpZighKE1lPVEuZXhlYyhUZSkpKXRocm93IG5ldyBFcnJv''@;'; put 'put ''cigiaW52YWxpZCBmb3JtYXQ6ICIrVGUpO3ZhciBNZTtyZXR1cm4gbmV3IHJlKHtmaWxsOk1lWzFdLGFsaWduOk1lWzJdLHNpZ246TWVbM10sc3ltYm9sOk1lWzRdLHplcm86TWVbNV0sd2lkdGg6TWVbNl0sY29tbWE6TWVbN10scHJlY2lzaW9uOk1lWzhdJiZNZVs4XS5zbGljZSgxKSx0cmlt''@;'; put 'put ''Ok1lWzldLHR5cGU6TWVbMTBdfSl9ZnVuY3Rpb24gcmUoVGUpe3RoaXMuZmlsbD12b2lkIDA9PT1UZS5maWxsPyIgIjpUZS5maWxsKyIiLHRoaXMuYWxpZ249dm9pZCAwPT09VGUuYWxpZ24/Ij4iOlRlLmFsaWduKyIiLHRoaXMuc2lnbj12b2lkIDA9PT1UZS5zaWduPyItIjpUZS5zaWduKyIi''@;'; put 'put ''LHRoaXMuc3ltYm9sPXZvaWQgMD09PVRlLnN5bWJvbD8iIjpUZS5zeW1ib2wrIiIsdGhpcy56ZXJvPSEhVGUuemVybyx0aGlzLndpZHRoPXZvaWQgMD09PVRlLndpZHRoP3ZvaWQgMDorVGUud2lkdGgsdGhpcy5jb21tYT0hIVRlLmNvbW1hLHRoaXMucHJlY2lzaW9uPXZvaWQgMD09PVRlLnBy''@;'; put 'put ''ZWNpc2lvbj92b2lkIDA6K1RlLnByZWNpc2lvbix0aGlzLnRyaW09ISFUZS50cmltLHRoaXMudHlwZT12b2lkIDA9PT1UZS50eXBlPyIiOlRlLnR5cGUrIiJ9ZnVuY3Rpb24gTihUZSxNZSl7dmFyIGhlPUIoVGUsTWUpO2lmKCFoZSlyZXR1cm4gVGUrIiI7dmFyIE89aGVbMF0sej1oZVsxXTty''@;'; put 'put ''ZXR1cm4gejwwPyIwLiIrbmV3IEFycmF5KC16KS5qb2luKCIwIikrTzpPLmxlbmd0aD56KzE/Ty5zbGljZSgwLHorMSkrIi4iK08uc2xpY2UoeisxKTpPK25ldyBBcnJheSh6LU8ubGVuZ3RoKzIpLmpvaW4oIjAiKX1qLnByb3RvdHlwZT1yZS5wcm90b3R5cGUscmUucHJvdG90eXBlLnRvU3Ry''@;'; put 'put ''aW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCt0aGlzLmFsaWduK3RoaXMuc2lnbit0aGlzLnN5bWJvbCsodGhpcy56ZXJvPyIwIjoiIikrKHZvaWQgMD09PXRoaXMud2lkdGg/IiI6TWF0aC5tYXgoMSwwfHRoaXMud2lkdGgpKSsodGhpcy5jb21tYT8iLCI6IiIpKyh2b2lkIDA9PT10''@;'; put 'put ''aGlzLnByZWNpc2lvbj8iIjoiLiIrTWF0aC5tYXgoMCwwfHRoaXMucHJlY2lzaW9uKSkrKHRoaXMudHJpbT8ifiI6IiIpK3RoaXMudHlwZX07Y29uc3QgdGU9eyIlIjpmdW5jdGlvbihUZSxNZSl7cmV0dXJuKDEwMCpUZSkudG9GaXhlZChNZSl9LGI6ZnVuY3Rpb24oVGUpe3JldHVybiBNYXRo''@;'; put 'put ''LnJvdW5kKFRlKS50b1N0cmluZygyKX0sYzpmdW5jdGlvbihUZSl7cmV0dXJuIFRlKyIifSxkOmZ1bmN0aW9uIG1lKFRlKXtyZXR1cm4gTWF0aC5hYnMoVGU9TWF0aC5yb3VuZChUZSkpPj0xZTIxP1RlLnRvTG9jYWxlU3RyaW5nKCJlbiIpLnJlcGxhY2UoLywvZywiIik6VGUudG9TdHJpbmco''@;'; put 'put ''MTApfSxlOmZ1bmN0aW9uKFRlLE1lKXtyZXR1cm4gVGUudG9FeHBvbmVudGlhbChNZSl9LGY6ZnVuY3Rpb24oVGUsTWUpe3JldHVybiBUZS50b0ZpeGVkKE1lKX0sZzpmdW5jdGlvbihUZSxNZSl7cmV0dXJuIFRlLnRvUHJlY2lzaW9uKE1lKX0sbzpmdW5jdGlvbihUZSl7cmV0dXJuIE1hdGgu''@;'; put 'put ''cm91bmQoVGUpLnRvU3RyaW5nKDgpfSxwOmZ1bmN0aW9uKFRlLE1lKXtyZXR1cm4gTigxMDAqVGUsTWUpfSxyOk4sczpmdW5jdGlvbiBXKFRlLE1lKXt2YXIgaGU9QihUZSxNZSk7aWYoIWhlKXJldHVybiBUZSsiIjt2YXIgTz1oZVswXSx6PWhlWzFdLGVlPXotKFk9MypNYXRoLm1heCgtOCxN''@;'; put 'put ''YXRoLm1pbig4LE1hdGguZmxvb3Ioei8zKSkpKSsxLG5lPU8ubGVuZ3RoO3JldHVybiBlZT09PW5lP086ZWU+bmU/TytuZXcgQXJyYXkoZWUtbmUrMSkuam9pbigiMCIpOmVlPjA/Ty5zbGljZSgwLGVlKSsiLiIrTy5zbGljZShlZSk6IjAuIituZXcgQXJyYXkoMS1lZSkuam9pbigiMCIpK0Io''@;'; put 'put ''VGUsTWF0aC5tYXgoMCxNZStlZS0xKSlbMF19LFg6ZnVuY3Rpb24oVGUpe3JldHVybiBNYXRoLnJvdW5kKFRlKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX0seDpmdW5jdGlvbihUZSl7cmV0dXJuIE1hdGgucm91bmQoVGUpLnRvU3RyaW5nKDE2KX19O2Z1bmN0aW9uIEsoVGUpe3JldHVy''@;'; put 'put ''biBUZX12YXIgY2UsZGUsdmUsSj1BcnJheS5wcm90b3R5cGUubWFwLHNlPVsieSIsInoiLCJhIiwiZiIsInAiLCJuIiwiXHhiNSIsIm0iLCIiLCJrIiwiTSIsIkciLCJUIiwiUCIsIkUiLCJaIiwiWSJdO2Z1bmN0aW9uIG9lKFRlKXt2YXIgTWU9dm9pZCAwPT09VGUuZ3JvdXBpbmd8fHZvaWQg''@;'; put 'put ''MD09PVRlLnRob3VzYW5kcz9LOmZ1bmN0aW9uIEVlKFRlLE1lKXtyZXR1cm4gZnVuY3Rpb24oaGUsTyl7Zm9yKHZhciB6PWhlLmxlbmd0aCxlZT1bXSxuZT0wLHg9VGVbMF0sUD0wO3o+MCYmeD4wJiYoUCt4KzE+TyYmKHg9TWF0aC5tYXgoMSxPLVApKSxlZS5wdXNoKGhlLnN1YnN0cmluZyh6''@;'; put 'put ''LT14LHoreCkpLCEoKFArPXgrMSk+TykpOyl4PVRlW25lPShuZSsxKSVUZS5sZW5ndGhdO3JldHVybiBlZS5yZXZlcnNlKCkuam9pbihNZSl9fShKLmNhbGwoVGUuZ3JvdXBpbmcsTnVtYmVyKSxUZS50aG91c2FuZHMrIiIpLGhlPXZvaWQgMD09PVRlLmN1cnJlbmN5PyIiOlRlLmN1cnJlbmN5''@;'; put 'put ''WzBdKyIiLE89dm9pZCAwPT09VGUuY3VycmVuY3k/IiI6VGUuY3VycmVuY3lbMV0rIiIsej12b2lkIDA9PT1UZS5kZWNpbWFsPyIuIjpUZS5kZWNpbWFsKyIiLGVlPXZvaWQgMD09PVRlLm51bWVyYWxzP0s6ZnVuY3Rpb24gVShUZSl7cmV0dXJuIGZ1bmN0aW9uKE1lKXtyZXR1cm4gTWUucmVw''@;'; put 'put ''bGFjZSgvWzAtOV0vZyxmdW5jdGlvbihoZSl7cmV0dXJuIFRlWytoZV19KX19KEouY2FsbChUZS5udW1lcmFscyxTdHJpbmcpKSxuZT12b2lkIDA9PT1UZS5wZXJjZW50PyIlIjpUZS5wZXJjZW50KyIiLHg9dm9pZCAwPT09VGUubWludXM/Ii0iOlRlLm1pbnVzKyIiLFA9dm9pZCAwPT09VGUu''@;'; put 'put ''bmFuPyJOYU4iOlRlLm5hbisiIjtmdW5jdGlvbiBWKFMpe3ZhciBGPShTPWooUykpLmZpbGwseWU9Uy5hbGlnbixDZT1TLnNpZ24sRGU9Uy5zeW1ib2wsUGU9Uy56ZXJvLFFlPVMud2lkdGgsJGU9Uy5jb21tYSxndD1TLnByZWNpc2lvbix3dD1TLnRyaW0sbXQ9Uy50eXBlOyJuIj09PW10Pygk''@;'; put 'put ''ZT0hMCxtdD0iZyIpOnRlW210XXx8KHZvaWQgMD09PWd0JiYoZ3Q9MTIpLHd0PSEwLG10PSJnIiksKFBlfHwiMCI9PT1GJiYiPSI9PT15ZSkmJihQZT0hMCxGPSIwIix5ZT0iPSIpO3ZhciB2dD0iJCI9PT1EZT9oZToiIyI9PT1EZSYmL1tib3hYXS8udGVzdChtdCk/IjAiK210LnRvTG93ZXJD''@;'; put 'put ''YXNlKCk6IiIsQXQ9IiQiPT09RGU/TzovWyVwXS8udGVzdChtdCk/bmU6IiIsaHQ9dGVbbXRdLEJ0PS9bZGVmZ3BycyVdLy50ZXN0KG10KTtmdW5jdGlvbiBvbihfdCl7dmFyIGx0LEx0LEN0LHR0PXZ0LGV0PUF0O2lmKCJjIj09PW10KWV0PWh0KF90KStldCxfdD0iIjtlbHNle3ZhciBmdD0o''@;'; put 'put ''X3Q9K190KTwwfHwxL190PDA7aWYoX3Q9aXNOYU4oX3QpP1A6aHQoTWF0aC5hYnMoX3QpLGd0KSx3dCYmKF90PWZ1bmN0aW9uIGFlKFRlKXtlOmZvcih2YXIgeixNZT1UZS5sZW5ndGgsaGU9MSxPPS0xO2hlPE1lOysraGUpc3dpdGNoKFRlW2hlXSl7Y2FzZSIuIjpPPXo9aGU7YnJlYWs7Y2Fz''@;'; put 'put ''ZSIwIjowPT09TyYmKE89aGUpLHo9aGU7YnJlYWs7ZGVmYXVsdDppZighK1RlW2hlXSlicmVhayBlO08+MCYmKE89MCl9cmV0dXJuIE8+MD9UZS5zbGljZSgwLE8pK1RlLnNsaWNlKHorMSk6VGV9KF90KSksZnQmJjA9PStfdCYmIisiIT09Q2UmJihmdD0hMSksdHQ9KGZ0PyIoIj09PUNlP0Nl''@;'; put 'put ''Ong6Ii0iPT09Q2V8fCIoIj09PUNlPyIiOkNlKSt0dCxldD0oInMiPT09bXQ/c2VbOCtZLzNdOiIiKStldCsoZnQmJiIoIj09PUNlPyIpIjoiIiksQnQpZm9yKGx0PS0xLEx0PV90Lmxlbmd0aDsrK2x0PEx0OylpZig0OD4oQ3Q9X3QuY2hhckNvZGVBdChsdCkpfHxDdD41Nyl7ZXQ9KDQ2PT09''@;'; put 'put ''Q3Q/eitfdC5zbGljZShsdCsxKTpfdC5zbGljZShsdCkpK2V0LF90PV90LnNsaWNlKDAsbHQpO2JyZWFrfX0kZSYmIVBlJiYoX3Q9TWUoX3QsMS8wKSk7dmFyIEh0PXR0Lmxlbmd0aCtfdC5sZW5ndGgrZXQubGVuZ3RoLEdlPUh0PFFlP25ldyBBcnJheShRZS1IdCsxKS5qb2luKEYpOiIiO3N3''@;'; put 'put ''aXRjaCgkZSYmUGUmJihfdD1NZShHZStfdCxHZS5sZW5ndGg/UWUtZXQubGVuZ3RoOjEvMCksR2U9IiIpLHllKXtjYXNlIjwiOl90PXR0K190K2V0K0dlO2JyZWFrO2Nhc2UiPSI6X3Q9dHQrR2UrX3QrZXQ7YnJlYWs7Y2FzZSJeIjpfdD1HZS5zbGljZSgwLEh0PUdlLmxlbmd0aD4+MSkrdHQr''@;'; put 'put ''X3QrZXQrR2Uuc2xpY2UoSHQpO2JyZWFrO2RlZmF1bHQ6X3Q9R2UrdHQrX3QrZXR9cmV0dXJuIGVlKF90KX1yZXR1cm4gZ3Q9dm9pZCAwPT09Z3Q/NjovW2dwcnNdLy50ZXN0KG10KT9NYXRoLm1heCgxLE1hdGgubWluKDIxLGd0KSk6TWF0aC5tYXgoMCxNYXRoLm1pbigyMCxndCkpLG9uLnRv''@;'; put 'put ''U3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIFMrIiJ9LG9ufXJldHVybntmb3JtYXQ6Vixmb3JtYXRQcmVmaXg6ZnVuY3Rpb24gVChTLEYpe3ZhciB5ZT1WKCgoUz1qKFMpKS50eXBlPSJmIixTKSksQ2U9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoRShGKS8zKSkpLERlPU1h''@;'; put 'put ''dGgucG93KDEwLC1DZSksUGU9c2VbOCtDZS8zXTtyZXR1cm4gZnVuY3Rpb24oUWUpe3JldHVybiB5ZShEZSpRZSkrUGV9fX19ZnVuY3Rpb24gQWUoVGUpe3JldHVybiBjZT1vZShUZSksZGU9Y2UuZm9ybWF0LHZlPWNlLmZvcm1hdFByZWZpeCxjZX1mdW5jdGlvbiBrZShUZSl7cmV0dXJuIE1h''@;'; put 'put ''dGgubWF4KDAsLUUoTWF0aC5hYnMoVGUpKSl9ZnVuY3Rpb24gU2UoVGUsTWUpe3JldHVybiBNYXRoLm1heCgwLDMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKEUoTWUpLzMpKSktRShNYXRoLmFicyhUZSkpKX1mdW5jdGlvbiBJZShUZSxNZSl7cmV0dXJuIFRlPU1hdGguYWJz''@;'; put 'put ''KFRlKSxNZT1NYXRoLmFicyhNZSktVGUsTWF0aC5tYXgoMCxFKE1lKS1FKFRlKSkrMX1BZSh7ZGVjaW1hbDoiLiIsdGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl0sbWludXM6Ii0ifSl9LDk5MjE6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lLEIsRSxF''@;'; put 'put ''ZSxVLFEsaixyZSxhZSxZKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gVyhtbil7dmFyIHVuPXt9LGNuPW1uLm5vZGUoKS5ub2RlTmFtZTt1bi50YWc9Y24sIiN0ZXh0Ij09Y24/dW4udGV4dD1tbi50ZXh0KCk6IiNjb21tZW50Ij09Y24mJih1bi5jb21tZW50PW1uLnRleHQoKSksdW4uYXR0cmli''@;'; put 'put ''dXRlcz17fTt2YXIgX249bW4ubm9kZSgpLmF0dHJpYnV0ZXM7aWYoX24pZm9yKHZhciBHdD0wO0d0PF9uLmxlbmd0aDtHdCsrKXt2YXIga249X25bR3RdO3VuLmF0dHJpYnV0ZXNba24ubmFtZV09a24udmFsdWV9dmFyIG9yLEluPW1uLm5vZGUoKS50cmFuc2Zvcm07aWYoSW4mJjAhPUluLmJh''@;'; put 'put ''c2VWYWwubnVtYmVyT2ZJdGVtcyl7dmFyIEpuPUluLmJhc2VWYWwuY29uc29saWRhdGUoKS5tYXRyaXg7dW4udHJhbnNsYXRpb249e3g6Sm4uZSx5OkpuLmZ9LHVuLnNjYWxlPUpuLmF9aWYoImVsbGlwc2UiPT1jbiYmKHVuLmNlbnRlcj17eDp1bi5hdHRyaWJ1dGVzLmN4LHk6dW4uYXR0cmli''@;'; put 'put ''dXRlcy5jeX0pLCJwb2x5Z29uIj09Y24pe3ZhciBncj0ob3I9bW4uYXR0cigicG9pbnRzIikuc3BsaXQoIiAiKSkubWFwKGZ1bmN0aW9uKG4wKXtyZXR1cm4gbjAuc3BsaXQoIiwiKVswXX0pLEtyPW9yLm1hcChmdW5jdGlvbihuMCl7cmV0dXJuIG4wLnNwbGl0KCIsIilbMV19KSxWcj1NYXRo''@;'; put 'put ''Lm1pbi5hcHBseShudWxsLGdyKSxpaT1NYXRoLm1heC5hcHBseShudWxsLGdyKSxScj1NYXRoLm1pbi5hcHBseShudWxsLEtyKSxsaT1NYXRoLm1heC5hcHBseShudWxsLEtyKTt1bi5iYm94PXt4OlZyLHk6UnIsd2lkdGg6aWktVnIsaGVpZ2h0OmxpLVJyfSx1bi5jZW50ZXI9e3g6KFZyK2lp''@;'; put 'put ''KS8yLHk6KFJyK2xpKS8yfX1yZXR1cm4icGF0aCI9PWNuJiYoKG9yPW1uLmF0dHIoImQiKS5zcGxpdCgvW0EtWiBdLykpLnNoaWZ0KCksZ3I9b3IubWFwKGZ1bmN0aW9uKGNhKXtyZXR1cm4rY2Euc3BsaXQoIiwiKVswXX0pLEtyPW9yLm1hcChmdW5jdGlvbihjYSl7cmV0dXJuK2NhLnNwbGl0''@;'; put 'put ''KCIsIilbMV19KSxWcj1NYXRoLm1pbi5hcHBseShudWxsLGdyKSxpaT1NYXRoLm1heC5hcHBseShudWxsLGdyKSxScj1NYXRoLm1pbi5hcHBseShudWxsLEtyKSxsaT1NYXRoLm1heC5hcHBseShudWxsLEtyKSx1bi5iYm94PXt4OlZyLHk6UnIsd2lkdGg6aWktVnIsaGVpZ2h0OmxpLVJyfSx1''@;'; put 'put ''bi5jZW50ZXI9e3g6KFZyK2lpKS8yLHk6KFJyK2xpKS8yfSx1bi50b3RhbExlbmd0aD1tbi5ub2RlKCkuZ2V0VG90YWxMZW5ndGgoKSksInRleHQiPT1jbiYmKHVuLmNlbnRlcj17eDptbi5hdHRyKCJ4IikseTptbi5hdHRyKCJ5Iil9KSwiI3RleHQiPT1jbj91bi50ZXh0PW1uLnRleHQoKToi''@;'; put 'put ''I2NvbW1lbnQiPT1jbiYmKHVuLmNvbW1lbnQ9bW4udGV4dCgpKSx1bn1mdW5jdGlvbiBOKG1uKXt2YXIgdW49Vyhtbik7cmV0dXJuIHVuLmNoaWxkcmVuPVtdLEIuc2VsZWN0QWxsKG1uLm5vZGUoKS5jaGlsZE5vZGVzKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIF9uPU4oQi5zZWxlY3QodGhpcykp''@;'; put 'put ''O19uLnBhcmVudD11bix1bi5jaGlsZHJlbi5wdXNoKF9uKX0pLHVufWZ1bmN0aW9uIHRlKG1uKXtyZXR1cm4iI3RleHQiPT1tbi50YWc/ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpOiIjY29tbWVudCI9PW1uLnRhZz9kb2N1bWVudC5jcmVhdGVDb21tZW50KG1uLmNvbW1lbnQpOmRvY3Vt''@;'; put 'put ''ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLG1uLnRhZyl9ZnVuY3Rpb24gSyhtbil7dmFyIHVuPXRlKG1uKSxjbj1CLnNlbGVjdCh1biksX249bW4uYXR0cmlidXRlcyxHdD0hMCxrbj0hMSxWbj12b2lkIDA7dHJ5e2Zvcih2YXIgSW4sZW49T2JqZWN0''@;'; put 'put ''LmtleXMoX24pW1N5bWJvbC5pdGVyYXRvcl0oKTshKEd0PShJbj1lbi5uZXh0KCkpLmRvbmUpO0d0PSEwKXt2YXIgSm49SW4udmFsdWU7Y24uYXR0cihKbixfbltKbl0pfX1jYXRjaChncil7a249ITAsVm49Z3J9ZmluYWxseXt0cnl7IUd0JiZlbi5yZXR1cm4mJmVuLnJldHVybigpfWZpbmFs''@;'; put 'put ''bHl7aWYoa24pdGhyb3cgVm59fXJldHVybiB1bn1mdW5jdGlvbiBKKG1uLHVuKXt2YXIgY249Qi5zZWxlY3QobW4ubm9kZSgpLnBhcmVudE5vZGUpLF9uPUsodW4pLEd0PWNuLmluc2VydChmdW5jdGlvbigpe3JldHVybiBfbn0sZnVuY3Rpb24oKXtyZXR1cm4gbW4ubm9kZSgpfSk7cmV0dXJu''@;'; put 'put ''IG1uLnJlbW92ZSgpLEd0fWZ1bmN0aW9uIG9lKG1uLHVuKXsoZnVuY3Rpb24gc2UobW4sdW4pe21uLmRhdHVtKHVuKSxtbi5kYXRhKFt1bl0sZnVuY3Rpb24oY24pe3JldHVybiBjbi5rZXl9KX0pKG1uLHVuKSxCLnNlbGVjdEFsbChtbi5ub2RlKCkuY2hpbGROb2RlcykuZWFjaChmdW5jdGlv''@;'; put 'put ''bihfbixHdCl7b2UoQi5zZWxlY3QodGhpcyksdW4uY2hpbGRyZW5bR3RdKX0pfWZ1bmN0aW9uIGNlKG1uLHVuKXt2YXIgY249bW4uc2VsZWN0QWxsKGZ1bmN0aW9uKCl7cmV0dXJuIG1uLm5vZGUoKS5jaGlsZE5vZGVzfSksX249KGNuPWNuLmRhdGEoZnVuY3Rpb24oVm4pe3JldHVybiBWbi5j''@;'; put 'put ''aGlsZHJlbn0sZnVuY3Rpb24oVm4pe3JldHVybiBWbi50YWcrIi0iK3VufSkpLmVudGVyKCkuYXBwZW5kKGZ1bmN0aW9uKFZuKXtyZXR1cm4gdGUoVm4pfSksR3Q9Y24uZXhpdCgpO0d0PUd0LnJlbW92ZSgpLGNuPV9uLm1lcmdlKGNuKTt2YXIga249e307Y24uZWFjaChmdW5jdGlvbihWbil7''@;'; put 'put ''dmFyIGVuPVZuLnRhZztudWxsPT1rbltlbl0mJihrbltlbl09MCk7dmFyIEluPWtuW2VuXSsrO2RlLmNhbGwodGhpcyxWbixJbil9KX1mdW5jdGlvbiBkZShtbil7dmFyIHVuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowLGNuPUIuc2Vs''@;'; put 'put ''ZWN0KHRoaXMpLEd0PW1uLmF0dHJpYnV0ZXMsa249Y24ubm9kZSgpLmF0dHJpYnV0ZXM7aWYoa24pZm9yKHZhciBWbj0wO1ZuPGtuLmxlbmd0aDtWbisrKXt2YXIgZW49a25bVm5dLEluPWVuLm5hbWU7aWYoInhtbG5zIiE9SW4uc3BsaXQoIjoiKVswXSYmZW4ubmFtZXNwYWNlVVJJKXt2YXIg''@;'; put 'put ''Sm49ZW4ubmFtZXNwYWNlVVJJLnNwbGl0KCIvIik7SW49Sm5bSm4ubGVuZ3RoLTFdKyI6IitJbn1JbiBpbiBHdHx8KEd0W0luXT1udWxsKX12YXIgZ3I9ITAsS3I9ITEsVnI9dm9pZCAwO3RyeXtmb3IodmFyIFJyLGlpPU9iamVjdC5rZXlzKEd0KVtTeW1ib2wuaXRlcmF0b3JdKCk7IShncj0o''@;'; put 'put ''UnI9aWkubmV4dCgpKS5kb25lKTtncj0hMCl7dmFyIGxpPVJyLnZhbHVlO2NuLmF0dHIobGksR3RbbGldKX19Y2F0Y2goTWkpe0tyPSEwLFZyPU1pfWZpbmFsbHl7dHJ5eyFnciYmaWkucmV0dXJuJiZpaS5yZXR1cm4oKX1maW5hbGx5e2lmKEtyKXRocm93IFZyfX1tbi50ZXh0JiZjbi50ZXh0''@;'; put 'put ''KG1uLnRleHQpLGNlKGNuLHVuKX1mdW5jdGlvbiB2ZShtbil7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sbW4pfWZ1bmN0aW9uIEFlKG1uKXtyZXR1cm4gTWF0aC5yb3VuZCgxZTQqbW4pLzFlNH1mdW5jdGlvbiBTZSgpe3ZhciBjbj1CLnNlbGVjdCh0aGlzLl9zZWxlY3Rpb24ubm9kZSgpLnF1''@;'; put 'put ''ZXJ5U2VsZWN0b3IoInN2ZyIpKTtpZigwPT1jbi5zaXplKCkpcmV0dXJuIHRoaXM7dGhpcy5fem9vbVNlbGVjdGlvbj1jbjt2YXIgX249ai56b29tKCkuc2NhbGVFeHRlbnQodGhpcy5fb3B0aW9ucy56b29tU2NhbGVFeHRlbnQpLnRyYW5zbGF0ZUV4dGVudCh0aGlzLl9vcHRpb25zLnpvb21U''@;'; put 'put ''cmFuc2xhdGVFeHRlbnQpLmludGVycG9sYXRlKFEuaW50ZXJwb2xhdGUpLm9uKCJ6b29tIixmdW5jdGlvbiBtbigpe0Iuc2VsZWN0KGNuLm5vZGUoKS5xdWVyeVNlbGVjdG9yKCJnIikpLmF0dHIoInRyYW5zZm9ybSIsQi5ldmVudC50cmFuc2Zvcm0pfSk7dGhpcy5fem9vbUJlaGF2aW9yPV9u''@;'; put 'put ''O3ZhciBHdD1CLnNlbGVjdChjbi5ub2RlKCkucXVlcnlTZWxlY3RvcigiZyIpKTtyZXR1cm4gY24uY2FsbChfbiksdGhpcy5fYWN0aXZlfHxUZS5jYWxsKHRoaXMsR3QpLHRoaXMuX29yaWdpbmFsVHJhbnNmb3JtPWouem9vbVRyYW5zZm9ybShjbi5ub2RlKCkpLHRoaXN9ZnVuY3Rpb24gSWUo''@;'; put 'put ''bW4pe3ZhciB1bj10aGlzLl90cmFuc2xhdGlvbixjbj10aGlzLl9zY2FsZSxfbj1tbi5kYXR1bSgpLnRyYW5zbGF0aW9uLEd0PW1uLmRhdHVtKCkuc2NhbGUsa249ai56b29tVHJhbnNmb3JtKHRoaXMuX3pvb21TZWxlY3Rpb24ubm9kZSgpKTtyZXR1cm4gdW4mJihrbj0oa249a24uc2NhbGUo''@;'; put 'put ''MS9jbikpLnRyYW5zbGF0ZSgtdW4ueCwtdW4ueSkpLChrbj1rbi50cmFuc2xhdGUoX24ueCxfbi55KSkuc2NhbGUoR3QpfWZ1bmN0aW9uIFRlKG1uKXt0aGlzLl96b29tQmVoYXZpb3IudHJhbnNmb3JtKHRoaXMuX3pvb21TZWxlY3Rpb24sSWUuY2FsbCh0aGlzLG1uKSksdGhpcy5fdHJhbnNs''@;'; put 'put ''YXRpb249bW4uZGF0dW0oKS50cmFuc2xhdGlvbix0aGlzLl9zY2FsZT1tbi5kYXR1bSgpLnNjYWxlLHRoaXMuX29yaWdpbmFsVHJhbnNmb3JtPWouem9vbUlkZW50aXR5LnRyYW5zbGF0ZShtbi5kYXR1bSgpLnRyYW5zbGF0aW9uLngsbW4uZGF0dW0oKS50cmFuc2xhdGlvbi55KS5zY2FsZSht''@;'; put 'put ''bi5kYXR1bSgpLnNjYWxlKX1mdW5jdGlvbiBuZShtbix1bil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGNuPW1uLm1hcChmdW5jdGlvbihfbil7cmV0dXJuIFEuaW50ZXJwb2xhdGUoW19uWzBdWzBdLF9uWzBdWzFdXSxbX25bMV1bMF0sX25bMV1bMV1dKX0pO3JldHVybiBmdW5jdGlvbihfbil7''@;'; put 'put ''cmV0dXJuIF9uPDE/Ik0iK2NuLm1hcChmdW5jdGlvbihHdCl7cmV0dXJuIEd0KF9uKX0pLmpvaW4oIkwiKTp1bn19fWZ1bmN0aW9uIFYobW4pe3JldHVybiJlZGdlIj09bW4uYXR0cmlidXRlcy5jbGFzc3x8ImEiPT1tbi50YWcmJiJnIj09bW4ucGFyZW50LnRhZyYmImVkZ2UiPT1tbi5wYXJl''@;'; put 'put ''bnQucGFyZW50LmF0dHJpYnV0ZXMuY2xhc3N9ZnVuY3Rpb24gVChtbil7cmV0dXJuIG1uLnBhcmVudCYmVihtbi5wYXJlbnQpfWZ1bmN0aW9uIENlKG1uKXt2YXIgdW49dGhpcy5fdHJhbnNpdGlvbixjbj10aGlzLl9vcHRpb25zLmZhZGUmJm51bGwhPXVuLF9uPXRoaXMuX29wdGlvbnMudHdl''@;'; put 'put ''ZW5QYXRocyxHdD10aGlzLl9vcHRpb25zLnR3ZWVuU2hhcGVzLGtuPXRoaXMuX29wdGlvbnMuY29udmVydEVxdWFsU2lkZWRQb2x5Z29ucyxWbj10aGlzLl9vcHRpb25zLmdyb3dFbnRlcmluZ0VkZ2VzJiZudWxsIT11bixlbj10aGlzLl9hdHRyaWJ1dGVyLEluPXRoaXM7ZnVuY3Rpb24gb3Io''@;'; put 'put ''UnIpe3ZhciBsaT1CLnNlbGVjdCh0aGlzKTtpZigic3ZnIj09UnIudGFnKXt2YXIgTWk9SW4uX29wdGlvbnM7aWYobnVsbCE9TWkud2lkdGh8fG51bGwhPU1pLmhlaWdodCl7dmFyIG8wPU1pLndpZHRoLG4wPU1pLmhlaWdodDtudWxsPT1vMD9vMD00KlJyLmF0dHJpYnV0ZXMud2lkdGgucmVw''@;'; put 'put ''bGFjZSgicHQiLCIiKS8zOihsaS5hdHRyKCJ3aWR0aCIsbzApLFJyLmF0dHJpYnV0ZXMud2lkdGg9bzApLG51bGw9PW4wP24wPTQqUnIuYXR0cmlidXRlcy5oZWlnaHQucmVwbGFjZSgicHQiLCIiKS8zOihsaS5hdHRyKCJoZWlnaHQiLG4wKSxSci5hdHRyaWJ1dGVzLmhlaWdodD1uMCksTWku''@;'; put 'put ''Zml0fHwobGkuYXR0cigidmlld0JveCIsIjAgMCAiKzMqbzAvNC9NaS5zY2FsZSsiICIrMypuMC80L01pLnNjYWxlKSxSci5hdHRyaWJ1dGVzLnZpZXdCb3g9IjAgMCAiKzMqbzAvNC9NaS5zY2FsZSsiICIrMypuMC80L01pLnNjYWxlKX0xIT1NaS5zY2FsZSYmKE1pLmZpdHx8bnVsbD09TWku''@;'; put 'put ''d2lkdGgmJm51bGw9PU1pLmhlaWdodCkmJihvMD1Sci5hdHRyaWJ1dGVzLnZpZXdCb3guc3BsaXQoIiAiKVsyXSxuMD1Sci5hdHRyaWJ1dGVzLnZpZXdCb3guc3BsaXQoIiAiKVszXSxsaS5hdHRyKCJ2aWV3Qm94IiwiMCAwICIrbzAvTWkuc2NhbGUrIiAiK24wL01pLnNjYWxlKSxSci5hdHRy''@;'; put 'put ''aWJ1dGVzLnZpZXdCb3g9IjAgMCAiK28wL01pLnNjYWxlKyIgIituMC9NaS5zY2FsZSl9ZW4mJmxpLmVhY2goZW4pO3ZhciBkMD1Sci50YWcsbTA9UnIuYXR0cmlidXRlcyxHMD1saS5ub2RlKCkuYXR0cmlidXRlcztpZihHMClmb3IodmFyIERpPTA7RGk8RzAubGVuZ3RoO0RpKyspe3ZhciBX''@;'; put 'put ''MD1HMFtEaV0sRW89VzAubmFtZTtpZigieG1sbnMiIT1Fby5zcGxpdCgiOiIpWzBdJiZXMC5uYW1lc3BhY2VVUkkpe3ZhciBxbz1XMC5uYW1lc3BhY2VVUkkuc3BsaXQoIi8iKTtFbz1xb1txby5sZW5ndGgtMV0rIjoiK0VvfUVvIGluIG0wfHwobTBbRW9dPW51bGwpfXZhciBsbD0hMSxRaT0h''@;'; put 'put ''MTtpZihHdCYmdW4pe2lmKCgicG9seWdvbiI9PXRoaXMubm9kZU5hbWV8fCJlbGxpcHNlIj09dGhpcy5ub2RlTmFtZSkmJlJyLmFsdGVybmF0aXZlT2xkJiYoUWk9ITApLCgicG9seWdvbiI9PWQwfHwiZWxsaXBzZSI9PWQwKSYmUnIuYWx0ZXJuYXRpdmVOZXcmJihsbD0hMCksInBvbHlnb24i''@;'; put 'put ''PT10aGlzLm5vZGVOYW1lJiYicG9seWdvbiI9PWQwKXt2YXIgTWE9VyhsaSk7aWYoIWtuKXt2YXIgZ2w9TWEuYXR0cmlidXRlcy5wb2ludHMuc3BsaXQoIiAiKS5sZW5ndGg7KEFpPVJyLmF0dHJpYnV0ZXMucG9pbnRzKS5zcGxpdCgiICIpLmxlbmd0aD09Z2wmJihsbD0hMSxRaT0hMSl9fWlm''@;'; put 'put ''KFFpKXt2YXIgc2E9SihsaSxSci5hbHRlcm5hdGl2ZU9sZCk7c2EuZGF0YShbUnJdLGZ1bmN0aW9uKCl7cmV0dXJuIFJyLmtleX0pLGxpPXNhfWxsJiYoZDA9InBhdGgiLG0wPVJyLmFsdGVybmF0aXZlTmV3LmF0dHJpYnV0ZXMpfXZhciBfaT1saTtpZih1biYmKF9pPV9pLnRyYW5zaXRpb24o''@;'; put 'put ''dW4pLGNuJiZfaS5maWx0ZXIoZnVuY3Rpb24oUTIpe3JldHVybiIjIj09UTIudGFnWzBdP251bGw6dGhpc30pLnN0eWxlKCJvcGFjaXR5IiwxKSxfaS5maWx0ZXIoZnVuY3Rpb24oUTIpe3JldHVybiIjIj09UTIudGFnWzBdP251bGw6dGhpc30pLm9uKCJlbmQiLGZ1bmN0aW9uKCl7Qi5zZWxl''@;'; put 'put ''Y3QodGhpcykuYXR0cigic3R5bGUiLG51bGwpfSkpLFZuJiYicGF0aCI9PWQwJiZSci5vZmZzZXQpe3ZhciBIYz1Sci50b3RhbExlbmd0aDtsaS5hdHRyKCJzdHJva2UtZGFzaGFycmF5IixIYysiICIrSGMpLmF0dHIoInN0cm9rZS1kYXNob2Zmc2V0IixIYykuYXR0cigidHJhbnNmb3JtIiwi''@;'; put 'put ''dHJhbnNsYXRlKCIrUnIub2Zmc2V0LngrIiwiK1JyLm9mZnNldC55KyIpIiksbTBbInN0cm9rZS1kYXNob2Zmc2V0Il09MCxtMC50cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDApIixfaS5hdHRyKCJzdHJva2UtZGFzaG9mZnNldCIsbTBbInN0cm9rZS1kYXNob2Zmc2V0Il0pLmF0dHIoInRyYW5z''@;'; put 'put ''Zm9ybSIsbTAudHJhbnNmb3JtKS5vbigic3RhcnQiLGZ1bmN0aW9uKCl7Qi5zZWxlY3QodGhpcykuc3R5bGUoIm9wYWNpdHkiLG51bGwpfSkub24oImVuZCIsZnVuY3Rpb24oKXtCLnNlbGVjdCh0aGlzKS5hdHRyKCJzdHJva2UtZGFzaG9mZnNldCIsbnVsbCkuYXR0cigic3Ryb2tlLWRhc2hh''@;'; put 'put ''cnJheSIsbnVsbCkuYXR0cigidHJhbnNmb3JtIixudWxsKX0pfWlmKFZuJiYicG9seWdvbiI9PWQwJiZUKFJyKSYmUnIub2Zmc2V0KXt2YXIgQnM9Qi5zZWxlY3QobGkubm9kZSgpLnBhcmVudE5vZGUucXVlcnlTZWxlY3RvcigicGF0aCIpKSxYMD1Ccy5ub2RlKCkuZ2V0UG9pbnRBdExlbmd0''@;'; put 'put ''aCgwKSx1YT1Ccy5ub2RlKCkuZ2V0UG9pbnRBdExlbmd0aChSci50b3RhbExlbmd0aCksajA9QnMubm9kZSgpLmdldFBvaW50QXRMZW5ndGgoUnIudG90YWxMZW5ndGgtMSksQmw9MTgwKk1hdGguYXRhbjIodWEueS1qMC55LHVhLngtajAueCkvTWF0aC5QSSx2bj1YMC54LXVhLngrUnIub2Zm''@;'; put 'put ''c2V0LngsXzA9WDAueS11YS55K1JyLm9mZnNldC55O2xpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3ZuKyIsIitfMCsiKSIpLF9pLmF0dHJUd2VlbigidHJhbnNmb3JtIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihRMil7dmFyIHMxPUJzLm5vZGUoKS5nZXRQb2ludEF0TGVu''@;'; put 'put ''Z3RoKFJyLnRvdGFsTGVuZ3RoKlEyKSxaMD1Ccy5ub2RlKCkuZ2V0UG9pbnRBdExlbmd0aChSci50b3RhbExlbmd0aCpRMisxKSxmaT0xODAqTWF0aC5hdGFuMihaMC55LXMxLnksWjAueC1zMS54KS9NYXRoLlBJLUJsO3JldHVybiJ0cmFuc2xhdGUoIisodm49czEueC11YS54K1JyLm9mZnNl''@;'; put 'put ''dC54KigxLVEyKSkrIiwiKyhfMD1zMS55LXVhLnkrUnIub2Zmc2V0LnkqKDEtUTIpKSsiKSByb3RhdGUoIitmaSsiICIrdWEueCsiICIrdWEueSsiKSJ9fSkub24oInN0YXJ0IixmdW5jdGlvbigpe0Iuc2VsZWN0KHRoaXMpLnN0eWxlKCJvcGFjaXR5IixudWxsKX0pLm9uKCJlbmQiLGZ1bmN0''@;'; put 'put ''aW9uKCl7Qi5zZWxlY3QodGhpcykuYXR0cigidHJhbnNmb3JtIixudWxsKX0pfXZhciBnYz1fbiYmdW4mJiJwYXRoIj09ZDAmJm51bGwhPWxpLmF0dHIoImQiKSxwZD0hMCxCMT0hMSxhdT12b2lkIDA7dHJ5e2Zvcih2YXIgbWMsUDE9T2JqZWN0LmtleXMobTApW1N5bWJvbC5pdGVyYXRvcl0o''@;'; put 'put ''KTshKHBkPShtYz1QMS5uZXh0KCkpLmRvbmUpO3BkPSEwKXt2YXIgeDI9bWMudmFsdWUsUGw9bTBbeDJdO2lmKGdjJiYiZCI9PXgyKXt2YXIgQWk7KEFpPShSci5hbHRlcm5hdGl2ZU9sZHx8UnIpLnBvaW50cykmJl9pLmF0dHJUd2VlbigiZCIsbmUoQWksUGwpKX1lbHNle2lmKCJ0cmFuc2Zv''@;'; put 'put ''cm0iPT14MiYmUnIudHJhbnNsYXRpb24paWYodW4pe3ZhciBkMz1faS5vbigiZW5kIik7X2kub24oInN0YXJ0IixmdW5jdGlvbigpe0luLl96b29tQmVoYXZpb3ImJl9pLnR3ZWVuKCJhdHRyLnRyYW5zZm9ybSIsZnVuY3Rpb24oKXt2YXIgUTI9dGhpcztyZXR1cm4gZnVuY3Rpb24oczEpe1Ey''@;'; put 'put ''LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIixRLmludGVycG9sYXRlVHJhbnNmb3JtU3ZnKGouem9vbVRyYW5zZm9ybShJbi5fem9vbVNlbGVjdGlvbi5ub2RlKCkpLnRvU3RyaW5nKCksSWUuY2FsbChJbixsaSkudG9TdHJpbmcoKSkoczEpKX19KX0pLm9uKCJlbmQiLGZ1bmN0aW9uKCl7ZDMu''@;'; put 'put ''Y2FsbCh0aGlzKSxJbi5fem9vbUJlaGF2aW9yJiZUZS5jYWxsKEluLGxpKX0pfWVsc2UgSW4uX3pvb21CZWhhdmlvciYmKFBsPUllLmNhbGwoSW4sbGkpLnRvU3RyaW5nKCkpO19pLmF0dHIoeDIsUGwpfX19Y2F0Y2goUTIpe0IxPSEwLGF1PVEyfWZpbmFsbHl7dHJ5eyFwZCYmUDEucmV0dXJu''@;'; put 'put ''JiZQMS5yZXR1cm4oKX1maW5hbGx5e2lmKEIxKXRocm93IGF1fX1sbCYmX2kub24oImVuZCIsZnVuY3Rpb24oUTIsczEsWjApe0ooc2E9Qi5zZWxlY3QodGhpcyksUTIpLmRhdGEoW1EyXSxmdW5jdGlvbigpe3JldHVybiBRMi5rZXl9KX0pLFJyLnRleHQmJl9pLnRleHQoUnIudGV4dCksZnVu''@;'; put 'put ''Y3Rpb24gSm4oUnIpe3ZhciBsaT1Sci5zZWxlY3RBbGwoZnVuY3Rpb24oKXtyZXR1cm4gUnIubm9kZSgpLmNoaWxkTm9kZXN9KSxNaT0obGk9bGkuZGF0YShmdW5jdGlvbihkMCl7cmV0dXJuIGQwLmNoaWxkcmVufSxmdW5jdGlvbihkMCl7cmV0dXJuIGQwLmtleX0pKS5lbnRlcigpLmFwcGVu''@;'; put 'put ''ZChmdW5jdGlvbihkMCl7dmFyIG0wPXRlKGQwKTtyZXR1cm4iI3RleHQiPT1kMC50YWcmJmNuJiYobTAubm9kZVZhbHVlPWQwLnRleHQpLG0wfSk7KGNufHxWbiYmVihSci5kYXR1bSgpKSkmJk1pLmZpbHRlcihmdW5jdGlvbihkMCl7cmV0dXJuIiMiPT1kMC50YWdbMF0/bnVsbDp0aGlzfSku''@;'; put 'put ''ZWFjaChmdW5jdGlvbihkMCl7dmFyIG0wPUIuc2VsZWN0KHRoaXMpLEcwPSEwLERpPSExLFcwPXZvaWQgMDt0cnl7Zm9yKHZhciBxbyxFbz1PYmplY3Qua2V5cyhkMC5hdHRyaWJ1dGVzKVtTeW1ib2wuaXRlcmF0b3JdKCk7IShHMD0ocW89RW8ubmV4dCgpKS5kb25lKTtHMD0hMCl7dmFyIGNh''@;'; put 'put ''PXFvLnZhbHVlO20wLmF0dHIoY2EsZDAuYXR0cmlidXRlc1tjYV0pfX1jYXRjaChRaSl7RGk9ITAsVzA9UWl9ZmluYWxseXt0cnl7IUcwJiZFby5yZXR1cm4mJkVvLnJldHVybigpfWZpbmFsbHl7aWYoRGkpdGhyb3cgVzB9fX0pLmZpbHRlcihmdW5jdGlvbihkMCl7cmV0dXJuInN2ZyI9PWQw''@;'; put 'put ''LnRhZ3x8ImciPT1kMC50YWc/bnVsbDp0aGlzfSkuc3R5bGUoIm9wYWNpdHkiLDApO3ZhciBuMD1saS5leGl0KCk7ZW4mJm4wLmVhY2goZW4pLHVuJiYobjA9bjAudHJhbnNpdGlvbih1biksY24mJm4wLmZpbHRlcihmdW5jdGlvbihkMCl7cmV0dXJuIiMiPT1kMC50YWdbMF0/bnVsbDp0aGlz''@;'; put 'put ''fSkuc3R5bGUoIm9wYWNpdHkiLDApKSxuMD1uMC5yZW1vdmUoKSwobGk9TWkubWVyZ2UobGkpKS5lYWNoKG9yKX0obGkpfXZhciBncj10aGlzLl9zZWxlY3Rpb247aWYobnVsbCE9dW4pe3ZhciBLcj10aGlzLl9qb2JzO2lmKEluLl9hY3RpdmUpcmV0dXJuIEtyLnB1c2gobnVsbCksdGhpcztn''@;'; put 'put ''ci50cmFuc2l0aW9uKHVuKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oMCkub24oImVuZCIsZnVuY3Rpb24oKXtJbi5fYWN0aXZlPSExLDAhPUtyLmxlbmd0aCYmKEtyLnNoaWZ0KCksSW4ucmVuZGVyKCkpfSksdGhpcy5fYWN0aXZlPSEwfW51bGwhPXVuJiZnci50cmFuc2l0aW9uKHVuKS5vbigi''@;'; put 'put ''c3RhcnQiLGZ1bmN0aW9uKCl7SW4uX2Rpc3BhdGNoLmNhbGwoInRyYW5zaXRpb25TdGFydCIsSW4pfSkub24oImVuZCIsZnVuY3Rpb24oKXtJbi5fZGlzcGF0Y2guY2FsbCgidHJhbnNpdGlvbkVuZCIsSW4pfSkudHJhbnNpdGlvbigpLmR1cmF0aW9uKDApLm9uKCJzdGFydCIsZnVuY3Rpb24o''@;'; put 'put ''KXtJbi5fZGlzcGF0Y2guY2FsbCgicmVzdG9yZUVuZCIsSW4pLEluLl9kaXNwYXRjaC5jYWxsKCJlbmQiLEluKSxtbiYmbW4uY2FsbChJbil9KTt2YXIgVnI9dGhpcy5fZGF0YSxpaT1nci5zZWxlY3RBbGwoInN2ZyIpLmRhdGEoW1ZyXSxmdW5jdGlvbihScil7cmV0dXJuIFJyLmtleX0pO3Jl''@;'; put 'put ''dHVybiBpaT1paS5lbnRlcigpLmFwcGVuZCgic3ZnIikubWVyZ2UoaWkpLG9yLmNhbGwoaWkubm9kZSgpLFZyKSx0aGlzLl9vcHRpb25zLnpvb20mJiF0aGlzLl96b29tQmVoYXZpb3ImJlNlLmNhbGwodGhpcyksSW4uX2Rpc3BhdGNoLmNhbGwoInJlbmRlckVuZCIsSW4pLG51bGw9PXVuJiYo''@;'; put 'put ''dGhpcy5fZGlzcGF0Y2guY2FsbCgiZW5kIix0aGlzKSxtbiYmbW4uY2FsbCh0aGlzKSksdGhpc31mdW5jdGlvbiBEZShtbix1bil7aWYoInBvbHlnb24iPT1tbi50YWcpeyhjbj12ZShtbikpLnRhZz0icGF0aCI7dmFyIEd0PXZlKF9uPW1uLmF0dHJpYnV0ZXMpLGtuPV9uLnBvaW50cztpZigi''@;'; put 'put ''cG9seWdvbiI9PXVuLnRhZyl7KFZuPW1uLmJib3gpLmN4PVZuLngrVm4ud2lkdGgvMixWbi5jeT1Wbi55K1ZuLmhlaWdodC8yO2Zvcih2YXIgSW49X24ucG9pbnRzLnNwbGl0KCIgIiksSm49SW4ubWFwKGZ1bmN0aW9uKE1hKXt2YXIgbmw9TWEuc3BsaXQoIiwiKTtyZXR1cm5bbmxbMF0tVm4u''@;'; put 'put ''Y3gsbmxbMV0tVm4uY3ldfSksb3I9Sm5bSm4ubGVuZ3RoLTFdWzBdLGdyPUpuW0puLmxlbmd0aC0xXVsxXSxLcj0wO0tyPEpuLmxlbmd0aDtLcisrLG9yPVZyLGdyPWlpKXt2YXIgUnI9KFZyPUpuW0tyXVswXSktb3I7aWYoMCE9KGxpPShpaT1KbltLcl1bMV0pLWdyKSYmMDw9KE1pPW9yLWdy''@;'; put 'put ''KlJyL2xpKSYmTWk8MS8wJiYob3I8PU1pJiZNaTw9VnJ8fFZyPD1NaSYmTWk8PW9yKSlicmVha312YXIgbzA9W1tWbi5jeCtNaSxWbi5jeSswXS5qb2luKCIsIildO2tuPShvMD0obzA9bzAuY29uY2F0KEluLnNsaWNlKEtyKSkpLmNvbmNhdChJbi5zbGljZSgwLEtyKSkpLmpvaW4oIiAiKX1H''@;'; put 'put ''dC5kPSJNIitrbisieiIsZGVsZXRlIEd0LnBvaW50cyxjbi5hdHRyaWJ1dGVzPUd0fWVsc2V7dmFyIGNuOyhjbj12ZShtbikpLnRhZz0icGF0aCIsR3Q9dmUoX249bW4uYXR0cmlidXRlcyk7dmFyIF9uLFZyLGlpLE1pLG4wPV9uLmN4LGQwPV9uLmN5LG0wPV9uLnJ4LEcwPV9uLnJ5O2lmKCJw''@;'; put 'put ''b2x5Z29uIj09dW4udGFnKXt2YXIgVm47KFZuPXVuLmJib3gpLmN4PVZuLngrVm4ud2lkdGgvMixWbi5jeT1Wbi55K1ZuLmhlaWdodC8yO3ZhciBEaT11bi5hdHRyaWJ1dGVzLnBvaW50cy5zcGxpdCgiICIpWzBdLnNwbGl0KCIsIiksbGk9KFJyPURpWzBdLVZuLmN4LERpWzFdLVZuLmN5KSxx''@;'; put 'put ''bz1NYXRoLnNxcnQoTWF0aC5wb3coUnIsMikrTWF0aC5wb3cobGksMikpLGNhPVJyL3FvLGxsPS1saS9xb31lbHNlIGNhPTEsbGw9MDtHdC5kPSJNICIrbjArIiAiK2QwKyIgbSAiKyhWcj1tMCpjYSkrIiwiKyhpaT0tRzAqbGwpKyIgYSAiK20wKyIsIitHMCsiIDAgMSwwICIrKFJyPShNaT1t''@;'; put 'put ''MCotY2EpLVZyKSsiLCIrKGxpPS1HMCotbGwtaWkpKyIgYSAiK20wKyIsIitHMCsiIDAgMSwwICIrLVJyKyIsIistbGkrInoiLGRlbGV0ZSBHdC5jeCxkZWxldGUgR3QuY3ksZGVsZXRlIEd0LnJ4LGRlbGV0ZSBHdC5yeSxjbi5hdHRyaWJ1dGVzPUd0fXJldHVybiBjbn1mdW5jdGlvbiAkZSgp''@;'; put 'put ''e2lmKG51bGw9PXRoaXMuX3dvcmtlcilyZSgiIiksdGhpcy5fZGlzcGF0Y2guY2FsbCgiaW5pdEVuZCIsdGhpcyk7ZWxzZXt2YXIgbW49dGhpcy5fdml6VVJMLHVuPXRoaXM7dGhpcy5fd29ya2VyLm9ubWVzc2FnZT1mdW5jdGlvbihjbil7dW4uX2Rpc3BhdGNoLmNhbGwoImluaXRFbmQiLHRo''@;'; put 'put ''aXMpfSxtbi5tYXRjaCgvXmh0dHBzPzpcL1wvfF5cL1wvL2kpfHwobW49bmV3IHdpbmRvdy5VUkwobW4sZG9jdW1lbnQubG9jYXRpb24uaHJlZikuaHJlZiksdGhpcy5fd29ya2VyLnBvc3RNZXNzYWdlKHtkb3Q6IiIsdml6VVJMOm1ufSl9fXJlPXJlJiZyZS5oYXNPd25Qcm9wZXJ0eSgiZGVm''@;'; put 'put ''YXVsdCIpP3JlLmRlZmF1bHQ6cmU7dmFyIHRuLGRuPWZ1bmN0aW9uKG1uLHVuLGNuKXtyZXR1cm4gdW4gaW4gbW4/T2JqZWN0LmRlZmluZVByb3BlcnR5KG1uLHVuLHt2YWx1ZTpjbixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOm1uW3VuXT1jbixtbn0seW49''@;'; put 'put ''ZnVuY3Rpb24obW4pe2lmKEFycmF5LmlzQXJyYXkobW4pKXtmb3IodmFyIHVuPTAsY249QXJyYXkobW4ubGVuZ3RoKTt1bjxtbi5sZW5ndGg7dW4rKyljblt1bl09bW5bdW5dO3JldHVybiBjbn1yZXR1cm4gQXJyYXkuZnJvbShtbil9O2Z1bmN0aW9uIE5uKG1uLHVuLGNuLF9uKXt2YXIgR3Q9''@;'; put 'put ''W21uKmNuLSh1bj0tdW4pKihfbj0tX24pLG1uKl9uK3VuKmNuXTtyZXR1cm5bbW49R3RbMF0sdW49LSh1bj1HdFsxXSldfWZ1bmN0aW9uIHNyKG1uLHVuLGNuLF9uLEd0LGtuLFZuKXt2YXIgSW49TihucihrbikpO21uLmRhdGEoW0luXSksZGUuY2FsbChtbi5ub2RlKCksSW4pLFhuKG1uLHVu''@;'; put 'put ''LGNuLF9uLEd0LGtuLFZuKX1mdW5jdGlvbiBYbihtbix1bixjbixfbixHdCxrbixWbil7dmFyIGVuPVZuLnNob3J0ZW5pbmd8fDAsZ3I9W1swLC0zLjVdLFsxMCwwXSxbMCwzLjVdLFswLC0zLjVdXSxLcj1fbi11bixWcj1HdC1jbixpaT1NYXRoLnNxcnQoS3IqS3IrVnIqVnIpO2lmKDA9PWlp''@;'; put 'put ''KXZhciBScj0xLGxpPTA7ZWxzZSBScj1Lci9paSxsaT1Wci9paTtpZihfbj11bisoaWktZW4tMTAtLjE3NCkqUnIsR3Q9Y24rKGlpLWVuLTEwLS4xNzQpKmxpLGtuLlVSTHx8a24udG9vbHRpcCl2YXIgTWk9bW4uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiZyIpLnNlbGVjdFdpdGhv''@;'; put 'put ''dXREYXRhUHJvcGFnYXRpb24oImEiKSxvMD1NaS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJwYXRoIiksbjA9TWkuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigicG9seWdvbiIpO2Vsc2UgbzA9bW4uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigicGF0aCIpLG4wPW1u''@;'; put 'put ''LnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInBvbHlnb24iKTt2YXIgZDA9WS5wYXRoKCk7ZDAubW92ZVRvKHVuLGNuKSxkMC5saW5lVG8oX24sR3QpLG8wLmF0dHIoImQiLGQwKSxfbj11bisoaWktZW4tMTApKlJyLEd0PWNuKyhpaS1lbi0xMCkqbGk7Zm9yKHZhciBtMD0wO20wPGdy''@;'; put 'put ''Lmxlbmd0aDttMCsrKWdyW20wXT1ObigoRzA9Z3JbbTBdKVswXSxHMFsxXSxScixsaSk7Zm9yKG0wPTA7bTA8Z3IubGVuZ3RoO20wKyspZ3JbbTBdPVtfbisoRzA9Z3JbbTBdKVswXSxHdCtHMFsxXV07dmFyIERpPVtdO2ZvcihtMD0wO20wPGdyLmxlbmd0aDttMCsrKXt2YXIgRzA7RGkucHVz''@;'; put 'put ''aCgoRzA9Z3JbbTBdKS5qb2luKCIsIikpfXZhciBXMD1EaS5qb2luKCIgIik7cmV0dXJuIG4wLmF0dHIoInBvaW50cyIsVzApLHRoaXN9ZnVuY3Rpb24geHIoKXtyZXR1cm4gdGhpcy5fZHJhd25FZGdlPyh0aGlzLl9kcmF3bkVkZ2UuZy5yZW1vdmUoKSx0aGlzLl9kcmF3bkVkZ2U9bnVsbCx0''@;'; put 'put ''aGlzKTp0aGlzfWZ1bmN0aW9uIHByKCl7cmV0dXJuIHRoaXMuX2RyYXduRWRnZT90aGlzLl9kcmF3bkVkZ2UuZzpCLnNlbGVjdChudWxsKX1mdW5jdGlvbiBucihtbil7dmFyIHVuPSIiLGNuPSEwLF9uPSExLEd0PXZvaWQgMDt0cnl7Zm9yKHZhciBWbixrbj1PYmplY3Qua2V5cyhtbilbU3lt''@;'; put 'put ''Ym9sLml0ZXJhdG9yXSgpOyEoY249KFZuPWtuLm5leHQoKSkuZG9uZSk7Y249ITApe3ZhciBlbj1Wbi52YWx1ZTtudWxsIT1tbltlbl0mJih1bis9JyAiJytlbisnIj0iJyttbltlbl0rJyInKX19Y2F0Y2goaWkpe19uPSEwLEd0PWlpfWZpbmFsbHl7dHJ5eyFjbiYma24ucmV0dXJuJiZrbi5y''@;'; put 'put ''ZXR1cm4oKX1maW5hbGx5e2lmKF9uKXRocm93IEd0fX12YXIgSm49cmUoImRpZ3JhcGgge2EgLT4gYiBbIit1bisiXX0iLHtmb3JtYXQ6InN2ZyJ9KSxncj0obmV3IHdpbmRvdy5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhKbiwiaW1hZ2Uvc3ZnK3htbCIpO3JldHVybiBCLnNlbGVjdChk''@;'; put 'put ''b2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpLmFwcGVuZChmdW5jdGlvbigpe3JldHVybiBnci5kb2N1bWVudEVsZW1lbnR9KS5zZWxlY3QoIi5lZGdlIil9ZnVuY3Rpb24gV3QobW4sdW4sY24sX24sR3Qsa24pe3ZhciBlbj1OKHduKF9uLEd0KSk7cmV0dXJuIG1uLmRhdGEoW2Vu''@;'; put 'put ''XSksZGUuY2FsbChtbi5ub2RlKCksZW4pLHBuKG1uLHVuLGNuLEd0KSx0aGlzfWZ1bmN0aW9uIHBuKG1uLHVuLGNuLF9uLEd0KXtpZihfbi5VUkx8fF9uLnRvb2x0aXApdmFyIGtuPW1uLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImciKS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0''@;'; put 'put ''aW9uKCJhIik7ZWxzZSBrbj1tbjt2YXIgVm49a24uc2VsZWN0QWxsKCJlbGxpcHNlLHBvbHlnb24scGF0aCxwb2x5bGluZSIpLGVuPW1uLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInRleHQiKTtpZigwIT1Wbi5zaXplKCkpe3ZhciBJbj1Wbi5ub2RlKCkuZ2V0QkJveCgpO0luLmN4''@;'; put 'put ''PUluLngrSW4ud2lkdGgvMixJbi5jeT1Jbi55K0luLmhlaWdodC8yfWVsc2UgMCE9ZW4uc2l6ZSgpJiYoSW49e3g6K2VuLmF0dHIoIngiKSx5Oitlbi5hdHRyKCJ5Iiksd2lkdGg6MCxoZWlnaHQ6MCxjeDorZW4uYXR0cigieCIpLGN5Oitlbi5hdHRyKCJ5Iil9KTtyZXR1cm4gVm4uZWFjaChm''@;'; put 'put ''dW5jdGlvbihKbixvcil7dmFyIGdyPUIuc2VsZWN0KHRoaXMpO2lmKGdyLmF0dHIoImN4IikpZ3IuYXR0cigiY3giLEFlKHVuKSkuYXR0cigiY3kiLEFlKGNuKSk7ZWxzZSBpZihnci5hdHRyKCJwb2ludHMiKSl7dmFyIEtyPWdyLmF0dHIoInBvaW50cyIpLnRyaW0oKTtnci5hdHRyKCJwb2lu''@;'; put 'put ''dHMiLGZ1bmN0aW9uIFBlKGtuLHVuLGNuKXt2YXIgR3QsX249KEd0PWtuLnNwbGl0KCIgIikpLm1hcChmdW5jdGlvbihWbil7cmV0dXJuIFZuLnNwbGl0KCIsIil9KTtyZXR1cm4gX249R3QubWFwKGZ1bmN0aW9uKFZuKXtyZXR1cm5bQWUoK3VuKyArVm4uc3BsaXQoIiwiKVswXSksQWUoK2Nu''@;'; put 'put ''KyArVm4uc3BsaXQoIiwiKVsxXSldfSksKGtuPShHdD1fbi5tYXAoZnVuY3Rpb24oVm4pe3JldHVybiBWbi5qb2luKCIsIil9KSkuam9pbigiICIpKS5yZXBsYWNlKC8tMFwuL2csIi0uIikucmVwbGFjZSgvIDBcLi9nLCIgLiIpfShLcix1bi1Jbi5jeCxjbi1Jbi5jeSkpfWVsc2V7dmFyIFZy''@;'; put 'put ''PWdyLmF0dHIoImQiKTtnci5hdHRyKCJkIixmdW5jdGlvbiBRZShtbix1bixjbil7KGtuPW1uLnNwbGl0KC9bQS1aIF0vKSkuc2hpZnQoKTt2YXIgX249bW4uc3BsaXQoL1teW0EtWiBdKy8pLGtuPShrbi5tYXAoZnVuY3Rpb24oVm4pe3JldHVybiBWbi5zcGxpdCgiLCIpfSksa24ubWFwKGZ1''@;'; put 'put ''bmN0aW9uKFZuKXtyZXR1cm5bQWUoK3VuKyArVm4uc3BsaXQoIiwiKVswXSksQWUoK2NuKyArVm4uc3BsaXQoIiwiKVsxXSldfSkubWFwKGZ1bmN0aW9uKFZuKXtyZXR1cm4gVm4uam9pbigiLCIpfSkpO3JldHVybihtbj1fbi5yZWR1Y2UoZnVuY3Rpb24oVm4sZW4sSW4pe3JldHVybiBWbi5j''@;'; put 'put ''b25jYXQoZW4sa25bSW5dKX0sW10pLmpvaW4oIiIpKS5yZXBsYWNlKC8tMFwuL2csIi0uIikucmVwbGFjZSgvIDBcLi9nLCIgLiIpfShWcix1bi1Jbi5jeCxjbi1Jbi5jeSkpfX0pLDAhPWVuLnNpemUoKSYmZW4uYXR0cigieCIsQWUoK2VuLmF0dHIoIngiKSt1bi1Jbi5jeCkpLmF0dHIoInki''@;'; put 'put ''LEFlKCtlbi5hdHRyKCJ5IikrY24tSW4uY3kpKSx0aGlzfWZ1bmN0aW9uIE50KCl7aWYoIXRoaXMuX2RyYXduTm9kZSlyZXR1cm4gdGhpczt2YXIgbW49dGhpcy5fZHJhd25Ob2RlLmc7cmV0dXJuIG1uLmVtcHR5KCl8fG1uLnJlbW92ZSgpLHRoaXMuX2RyYXduTm9kZT1udWxsLHRoaXN9ZnVu''@;'; put 'put ''Y3Rpb24gVW4oKXtyZXR1cm4gdGhpcy5fZHJhd25Ob2RlP3RoaXMuX2RyYXduTm9kZS5nOkIuc2VsZWN0KG51bGwpfWZ1bmN0aW9uIHduKG1uLHVuKXt2YXIgY249IiIsX249ITAsR3Q9ITEsa249dm9pZCAwO3RyeXtmb3IodmFyIGVuLFZuPU9iamVjdC5rZXlzKHVuKVtTeW1ib2wuaXRlcmF0''@;'; put 'put ''b3JdKCk7IShfbj0oZW49Vm4ubmV4dCgpKS5kb25lKTtfbj0hMCl7dmFyIEluPWVuLnZhbHVlO251bGwhPXVuW0luXSYmKGNuKz0nICInK0luKyciPSInK3VuW0luXSsnIicpfX1jYXRjaChScil7R3Q9ITAsa249UnJ9ZmluYWxseXt0cnl7IV9uJiZWbi5yZXR1cm4mJlZuLnJldHVybigpfWZp''@;'; put 'put ''bmFsbHl7aWYoR3QpdGhyb3cga259fXZhciBvcj1yZSgnZ3JhcGggeyInK21uKyciIFsnK2NuKyJdfSIse2Zvcm1hdDoic3ZnIn0pLEtyPShuZXcgd2luZG93LkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKG9yLCJpbWFnZS9zdmcreG1sIik7cmV0dXJuIEIuc2VsZWN0KGRvY3VtZW50LmNy''@;'; put 'put ''ZWF0ZURvY3VtZW50RnJhZ21lbnQoKSkuYXBwZW5kKGZ1bmN0aW9uKCl7cmV0dXJuIEtyLmRvY3VtZW50RWxlbWVudH0pLnNlbGVjdCgiLm5vZGUiKX1mdW5jdGlvbiB6bihtbix1bil7aWYodGhpcy5fb3B0aW9ucz17dXNlV29ya2VyOiEwLGVuZ2luZToiZG90Iix0b3RhbE1lbW9yeTp2b2lk''@;'; put 'put ''IDAsa2V5TW9kZToidGl0bGUiLGZhZGU6ITAsdHdlZW5QYXRoczohMCx0d2VlblNoYXBlczohMCxjb252ZXJ0RXF1YWxTaWRlZFBvbHlnb25zOiEwLHR3ZWVuUHJlY2lzaW9uOjEsZ3Jvd0VudGVyaW5nRWRnZXM6ITAsem9vbTohMCx6b29tU2NhbGVFeHRlbnQ6Wy4xLDEwXSx6b29tVHJhbnNs''@;'; put 'put ''YXRlRXh0ZW50OltbLTEvMCwtMS8wXSxbMS8wLDEvMF1dLHdpZHRoOm51bGwsaGVpZ2h0Om51bGwsc2NhbGU6MSxmaXQ6ITF9LHVuIGluc3RhbmNlb2YgT2JqZWN0KXt2YXIgY249ITAsX249ITEsR3Q9dm9pZCAwO3RyeXtmb3IodmFyIFZuLGtuPU9iamVjdC5rZXlzKHVuKVtTeW1ib2wuaXRl''@;'; put 'put ''cmF0b3JdKCk7IShjbj0oVm49a24ubmV4dCgpKS5kb25lKTtjbj0hMCl7dmFyIGVuPVZuLnZhbHVlO3RoaXMuX29wdGlvbnNbZW5dPXVuW2VuXX19Y2F0Y2goaWkpe19uPSEwLEd0PWlpfWZpbmFsbHl7dHJ5eyFjbiYma24ucmV0dXJuJiZrbi5yZXR1cm4oKX1maW5hbGx5e2lmKF9uKXRocm93''@;'; put 'put ''IEd0fX19ZWxzZSJib29sZWFuIj09dHlwZW9mIHVuJiYodGhpcy5fb3B0aW9ucy51c2VXb3JrZXI9dW4pO3ZhciBJbj10aGlzLl9vcHRpb25zLnVzZVdvcmtlcjtpZigidW5kZWZpbmVkIj09dHlwZW9mIFdvcmtlciYmKEluPSExKSxJbil7dmFyIG9yPUIuc2VsZWN0QWxsKCJzY3JpcHQiKS5m''@;'; put 'put ''aWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4iamF2YXNjcmlwdC93b3JrZXIiPT1CLnNlbGVjdCh0aGlzKS5hdHRyKCJ0eXBlIil8fEIuc2VsZWN0KHRoaXMpLmF0dHIoInNyYyIpJiZCLnNlbGVjdCh0aGlzKS5hdHRyKCJzcmMiKS5tYXRjaCgvLipcL3Zpei5qcyQvKX0pOzA9PW9yLnNpemUoKT8o''@;'; put 'put ''Y29uc29sZS53YXJuKCdObyBzY3JpcHQgdGFnIG9mIHR5cGUgImphdmFzY3JpcHQvd29ya2VyIiB3YXMgZm91bmQgYW5kICJ1c2VXb3JrZXIiIGlzIHRydWUuIE5vdCB1c2luZyB3ZWIgd29ya2VyLicpLEluPSExKToodGhpcy5fdml6VVJMPW9yLmF0dHIoInNyYyIpLHRoaXMuX3ZpelVSTHx8''@;'; put 'put ''KGNvbnNvbGUud2FybignTm8gInNyYyIgYXR0cmlidXRlIG9mIHdhcyBmb3VuZCBvbiB0aGUgImphdmFzY3JpcHQvd29ya2VyIiBzY3JpcHQgdGFnIGFuZCAidXNlV29ya2VyIiBpcyB0cnVlLiBOb3QgdXNpbmcgd2ViIHdvcmtlci4nKSxJbj0hMSkpfWlmKEluKXt2YXIgS3I9bmV3IEJsb2Io''@;'; put 'put ''WydcbiAgICAgICAgICAgIG9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEudml6VVJMKSB7XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydFNjcmlwdHMoZXZlbnQuZGF0YS52aXpVUkwpO1xuICAgICAgICAgICAgICAgIH1cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3ZnID0gVml6KGV2ZW50LmRhdGEuZG90LCBldmVudC5kYXRhLm9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBw''@;'; put 'put ''b3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiZXJyb3IiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzdmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogImRvbmUiLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3ZnOiBzdmcsXG4gICAgICAgICAgICAgICAgICAg''@;'; put 'put ''IH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJza2lwIixcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxu''@;'; put 'put ''ICAgICAgICAnXSksVnI9d2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoS3IpO3RoaXMuX3dvcmtlcj1uZXcgV29ya2VyKFZyKX10aGlzLl9zZWxlY3Rpb249bW4sdGhpcy5fYWN0aXZlPSExLHRoaXMuX2J1c3k9ITEsdGhpcy5fam9icz1bXSx0aGlzLl9xdWV1ZT1bXSx0aGlzLl9rZXlNb2Rl''@;'; put 'put ''cz1uZXcgU2V0KFsidGl0bGUiLCJpZCIsInRhZy1pbmRleCIsImluZGV4Il0pLHRoaXMuX2ltYWdlcz1bXSx0aGlzLl90cmFuc2xhdGlvbj12b2lkIDAsdGhpcy5fc2NhbGU9dm9pZCAwLHRoaXMuX2V2ZW50VHlwZXM9WyJpbml0RW5kIiwic3RhcnQiLCJsYXlvdXRTdGFydCIsImxheW91dEVu''@;'; put 'put ''ZCIsImRhdGFFeHRyYWN0RW5kIiwiZGF0YVByb2Nlc3NQYXNzMUVuZCIsImRhdGFQcm9jZXNzUGFzczJFbmQiLCJkYXRhUHJvY2Vzc0VuZCIsInJlbmRlclN0YXJ0IiwicmVuZGVyRW5kIiwidHJhbnNpdGlvblN0YXJ0IiwidHJhbnNpdGlvbkVuZCIsInJlc3RvcmVFbmQiLCJlbmQiXSx0aGlz''@;'; put 'put ''Ll9kaXNwYXRjaD1FLmRpc3BhdGNoLmFwcGx5KHZvaWQgMCx5bih0aGlzLl9ldmVudFR5cGVzKSksJGUuY2FsbCh0aGlzKSxtbi5ub2RlKCkuX19ncmFwaHZpel9fPXRoaXN9ZnVuY3Rpb24gVHIobW4sdW4pe3JldHVybiBCLnNlbGVjdChtbikuZ3JhcGh2aXoodW4pfXpuLnByb3RvdHlwZT1U''@;'; put 'put ''ci5wcm90b3R5cGU9KGRuKHRuPXtjb25zdHJ1Y3Rvcjp6bixlbmdpbmU6ZnVuY3Rpb24obW4pe3JldHVybiB0aGlzLl9vcHRpb25zLmVuZ2luZT1tbix0aGlzfSxhZGRJbWFnZTpmdW5jdGlvbihtbix1bixjbil7cmV0dXJuIHRoaXMuX2ltYWdlcy5wdXNoKHtwYXRoOm1uLHdpZHRoOnVuLGhl''@;'; put 'put ''aWdodDpjbn0pLHRoaXN9LHRvdGFsTWVtb3J5OmZ1bmN0aW9uKG1uKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy50b3RhbE1lbW9yeT1tbix0aGlzfSxrZXlNb2RlOmZ1bmN0aW9uKG1uKXtpZighdGhpcy5fa2V5TW9kZXMuaGFzKG1uKSl0aHJvdyBFcnJvcigiSWxsZWdhbCBrZXlNb2RlOiAiK21u''@;'; put 'put ''KTtpZihtbiE9dGhpcy5fb3B0aW9ucy5rZXlNb2RlJiZudWxsIT10aGlzLl9kYXRhKXRocm93IEVycm9yKCJUb28gbGF0ZSB0byBjaGFuZ2Uga2V5TW9kZSIpO3JldHVybiB0aGlzLl9vcHRpb25zLmtleU1vZGU9bW4sdGhpc30sZmFkZTpmdW5jdGlvbihtbil7cmV0dXJuIHRoaXMuX29wdGlv''@;'; put 'put ''bnMuZmFkZT1tbix0aGlzfSx0d2VlblBhdGhzOmZ1bmN0aW9uKG1uKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy50d2VlblBhdGhzPW1uLHRoaXN9LHR3ZWVuU2hhcGVzOmZ1bmN0aW9uKG1uKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy50d2VlblNoYXBlcz1tbixtbiYmKHRoaXMuX29wdGlvbnMudHdl''@;'; put 'put ''ZW5QYXRocz0hMCksdGhpc30sY29udmVydEVxdWFsU2lkZWRQb2x5Z29uczpmdW5jdGlvbihtbil7cmV0dXJuIHRoaXMuX29wdGlvbnMuY29udmVydEVxdWFsU2lkZWRQb2x5Z29ucz1tbix0aGlzfSx0d2VlblByZWNpc2lvbjpmdW5jdGlvbihtbil7cmV0dXJuIHRoaXMuX29wdGlvbnMudHdl''@;'; put 'put ''ZW5QcmVjaXNpb249bW4sdGhpc30sZ3Jvd0VudGVyaW5nRWRnZXM6ZnVuY3Rpb24obW4pe3JldHVybiB0aGlzLl9vcHRpb25zLmdyb3dFbnRlcmluZ0VkZ2VzPW1uLHRoaXN9LHpvb206ZnVuY3Rpb24obW4pe3JldHVybiB0aGlzLl9vcHRpb25zLnpvb209bW4sdGhpcy5fb3B0aW9ucy56b29t''@;'; put 'put ''JiYhdGhpcy5fem9vbUJlaGF2aW9yJiZTZS5jYWxsKHRoaXMpLHRoaXN9LHJlc2V0Wm9vbTpmdW5jdGlvbiBNZShtbil7dmFyIHVuPXRoaXMuX3pvb21TZWxlY3Rpb247cmV0dXJuIG1uJiYodW49dW4udHJhbnNpdGlvbihtbikpLHVuLmNhbGwodGhpcy5fem9vbUJlaGF2aW9yLnRyYW5zZm9y''@;'; put 'put ''bSx0aGlzLl9vcmlnaW5hbFRyYW5zZm9ybSksdGhpc30sem9vbUJlaGF2aW9yOmZ1bmN0aW9uIHooKXtyZXR1cm4gdGhpcy5fem9vbUJlaGF2aW9yfHxudWxsfSx6b29tU2VsZWN0aW9uOmZ1bmN0aW9uIGVlKCl7cmV0dXJuIHRoaXMuX3pvb21TZWxlY3Rpb258fG51bGx9LHpvb21TY2FsZUV4''@;'; put 'put ''dGVudDpmdW5jdGlvbiBoZShtbil7cmV0dXJuIHRoaXMuX29wdGlvbnMuem9vbVNjYWxlRXh0ZW50PW1uLHRoaXN9LHpvb21UcmFuc2xhdGVFeHRlbnQ6ZnVuY3Rpb24gTyhtbil7cmV0dXJuIHRoaXMuX29wdGlvbnMuem9vbVRyYW5zbGF0ZUV4dGVudD1tbix0aGlzfSxyZW5kZXI6ZnVuY3Rp''@;'; put 'put ''b24obW4pe3JldHVybiB0aGlzLl9idXN5Pyh0aGlzLl9xdWV1ZS5wdXNoKHRoaXMucmVuZGVyLmJpbmQodGhpcyxtbikpLHRoaXMpOih0aGlzLl9kaXNwYXRjaC5jYWxsKCJyZW5kZXJTdGFydCIsdGhpcyksdGhpcy5fdHJhbnNpdGlvbkZhY3Rvcnk/VS50aW1lb3V0KGZ1bmN0aW9uKCl7dGhp''@;'; put 'put ''cy5fdHJhbnNpdGlvbj1FZS50cmFuc2l0aW9uKHRoaXMuX3RyYW5zaXRpb25GYWN0b3J5KCkpLENlLmNhbGwodGhpcyxtbil9LmJpbmQodGhpcyksMCk6Q2UuY2FsbCh0aGlzLG1uKSx0aGlzKX0sZG90OmZ1bmN0aW9uKG1uLHVuKXt2YXIgY249dGhpcyxfbj10aGlzLl93b3JrZXIsR3Q9dGhp''@;'; put 'put ''cy5fb3B0aW9ucy5lbmdpbmUsa249dGhpcy5faW1hZ2VzLFZuPXRoaXMuX29wdGlvbnMudG90YWxNZW1vcnksZW49dGhpcy5fb3B0aW9ucy5rZXlNb2RlLEluPXRoaXMuX29wdGlvbnMudHdlZW5QYXRocyxKbj10aGlzLl9vcHRpb25zLnR3ZWVuU2hhcGVzO2lmKCJzdHJpbmciPT10eXBlb2Yg''@;'; put 'put ''dGhpcy5fb3B0aW9ucy50d2VlblByZWNpc2lvbiYmdGhpcy5fb3B0aW9ucy50d2VlblByZWNpc2lvbi5pbmNsdWRlcygiJSIpKXZhciBvcj0rdGhpcy5fb3B0aW9ucy50d2VlblByZWNpc2lvbi5zcGxpdCgiJSIpWzBdLzEwMCxncj10aGlzLl9vcHRpb25zLnR3ZWVuUHJlY2lzaW9uLmluY2x1''@;'; put 'put ''ZGVzKCIlIik7ZWxzZSBvcj10aGlzLl9vcHRpb25zLnR3ZWVuUHJlY2lzaW9uLGdyPSExO3ZhciBLcj10aGlzLl9vcHRpb25zLmdyb3dFbnRlcmluZ0VkZ2VzLFZyPXt9LGlpPXRoaXMuX2RpY3Rpb25hcnl8fHt9LFJyPXt9LGxpPXRoaXMuX25vZGVEaWN0aW9uYXJ5fHx7fTtmdW5jdGlvbiBN''@;'; put 'put ''aShRaSxNYSl7dmFyIG5sPVFpLnRhZztpZigiaW5kZXgiPT1lbilRaS5rZXk9TWE7ZWxzZSBpZigiIyIhPW5sWzBdKWlmKCJpZCI9PWVuKVFpLmtleT1RaS5hdHRyaWJ1dGVzLmlkO2Vsc2UgaWYoInRpdGxlIj09ZW4pe3ZhciBnbD1RaS5jaGlsZHJlbi5maW5kKGZ1bmN0aW9uKEFpKXtyZXR1''@;'; put 'put ''cm4idGl0bGUiPT1BaS50YWd9KTtnbCYmKFFpLmtleT1nbC5jaGlsZHJlbi5sZW5ndGg+MD9nbC5jaGlsZHJlblswXS50ZXh0OiIiKX1udWxsPT1RaS5rZXkmJihKbiYmKCJlbGxpcHNlIj09bmx8fCJwb2x5Z29uIj09bmwpJiYobmw9InBhdGgiKSxRaS5rZXk9bmwrIi0iK01hKX1mdW5jdGlv''@;'; put 'put ''biBvMChRaSxNYSl7UWkuaWQ9KE1hP01hLmlkKyIuIjoiIikrUWkua2V5fWZ1bmN0aW9uIG4wKFFpKXtWcltRaS5pZF09UWl9ZnVuY3Rpb24gZDAoUWksTWEpe0puJiZRaS5pZCBpbiBpaSYmKCJwb2x5Z29uIj09TWEudGFnfHwiZWxsaXBzZSI9PU1hLnRhZ3x8InBhdGgiPT1NYS50YWcpJiYo''@;'; put 'put ''TWEudGFnIT1RaS50YWd8fCJwb2x5Z29uIj09UWkudGFnKSYmKCJwYXRoIiE9TWEudGFnJiYoUWkuYWx0ZXJuYXRpdmVPbGQ9RGUoTWEsUWkpKSwicGF0aCIhPVFpLnRhZyYmKFFpLmFsdGVybmF0aXZlTmV3PURlKFFpLE1hKSkpfWZ1bmN0aW9uIG0wKFFpLE1hKXtpZihJbiYmTWEmJigicGF0''@;'; put 'put ''aCI9PU1hLnRhZ3x8UWkuYWx0ZXJuYXRpdmVPbGQmJiJwYXRoIj09UWkuYWx0ZXJuYXRpdmVPbGQudGFnKSl7dmFyIG5sPShRaS5hbHRlcm5hdGl2ZU5ld3x8UWkpLmF0dHJpYnV0ZXMuZDtpZihRaS5hbHRlcm5hdGl2ZU9sZCl2YXIgZ2w9SyhRaS5hbHRlcm5hdGl2ZU9sZCk7ZWxzZSBnbD1L''@;'; put 'put ''KE1hKTsoUWkuYWx0ZXJuYXRpdmVPbGR8fChRaS5hbHRlcm5hdGl2ZU9sZD17fSkpLnBvaW50cz1mdW5jdGlvbiB4KG1uLHVuLGNuLF9uKXtmb3IodmFyIEd0PW1uLGtuPUd0LmNsb25lTm9kZSgpLFZuPUd0LmdldFRvdGFsTGVuZ3RoKCksZW49KGtuLnNldEF0dHJpYnV0ZSgiZCIsdW4pLGtu''@;'; put 'put ''KS5nZXRUb3RhbExlbmd0aCgpLEluPVswXSxKbj0wLG9yPV9uP2NuOmNuL01hdGgubWF4KFZuLGVuKTsoSm4rPW9yKTwxOylJbi5wdXNoKEpuKTtyZXR1cm4gSW4ucHVzaCgxKSxJbi5tYXAoZnVuY3Rpb24oS3Ipe3ZhciBWcj1HdC5nZXRQb2ludEF0TGVuZ3RoKEtyKlZuKSxpaT1rbi5nZXRQ''@;'; put 'put ''b2ludEF0TGVuZ3RoKEtyKmVuKTtyZXR1cm5bW1ZyLngsVnIueV0sW2lpLngsaWkueV1dfSl9KGdsLG5sLG9yLGdyKX19ZnVuY3Rpb24gRzAoUWkpe3ZhciBubD1hcmd1bWVudHNbMl07TWkoUWksYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFd''@;'; put 'put ''OjApLG8wKFFpLG5sKTt2YXIgQWk9aWlbUWkuaWRdO24wKFFpKSxkMChRaSxBaSksbTAoUWksQWkpO3ZhciB2aT17fTtRaS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGIwKXt2YXIgc2E9YjAudGFnOygiZWxsaXBzZSI9PXNhfHwicG9seWdvbiI9PXNhKSYmKHNhPSJwYXRoIiksbnVsbD09''@;'; put 'put ''dmlbc2FdJiYodmlbc2FdPTApLEcwKGIwLHZpW3NhXSsrLFFpKX0pfWZ1bmN0aW9uIEVvKFFpKXsoZnVuY3Rpb24gRGkoUWkpe2lmKEtyJiZRaS5wYXJlbnQmJiJub2RlIj09UWkucGFyZW50LmF0dHJpYnV0ZXMuY2xhc3MmJiJ0aXRsZSI9PVFpLnRhZyl7aWYoUWkuY2hpbGRyZW4ubGVuZ3Ro''@;'; put 'put ''PjApdmFyIGdsPVFpLmNoaWxkcmVuWzBdLnRleHQ7ZWxzZSBnbD0iIjtScltnbF09UWkucGFyZW50fX0pKFFpKSxmdW5jdGlvbiBXMChRaSl7dmFyIG5sPVFpLnRhZztpZihLciYmIWlpW1FpLmlkXSYmUWkucGFyZW50JiZUKFFpKSYmKCJwYXRoIj09bmx8fCJwb2x5Z29uIj09bmwpKXtpZigi''@;'; put 'put ''cG9seWdvbiI9PW5sKXt2YXIgQWk9UWkucGFyZW50LmNoaWxkcmVuLmZpbmQoZnVuY3Rpb24oQmwpe3JldHVybiJwYXRoIj09QmwudGFnfSk7UWkudG90YWxMZW5ndGg9QWkudG90YWxMZW5ndGh9dmFyIGIwPWZ1bmN0aW9uIEYobW4pe3JldHVybiBmdW5jdGlvbiBTKG1uKXtyZXR1cm4iZWRn''@;'; put 'put ''ZSI9PW1uLnBhcmVudC5hdHRyaWJ1dGVzLmNsYXNzP21uLnBhcmVudDptbi5wYXJlbnQucGFyZW50LnBhcmVudH0obW4pLmNoaWxkcmVuLmZpbmQoZnVuY3Rpb24odW4pe3JldHVybiJ0aXRsZSI9PXVuLnRhZ30pfShRaSkuY2hpbGRyZW5bMF0sc2E9YjAudGV4dC5zcGxpdCgiLT4iKTsyIT1z''@;'; put 'put ''YS5sZW5ndGgmJihzYT1iMC50ZXh0LnNwbGl0KCItLSIpKTt2YXIgcmw9c2FbMF0sX2k9UnJbcmxdLG91PWxpW3JsXTtpZihvdSl7aWYoKFUwPV9pLmNoaWxkcmVuLmZpbmRJbmRleChmdW5jdGlvbihCbCx2bil7cmV0dXJuImciPT1CbC50YWd9KSk+PTApe3ZhciBIYz1faS5jaGlsZHJlbltV''@;'; put 'put ''MF0uY2hpbGRyZW4uZmluZEluZGV4KGZ1bmN0aW9uKEJsLHZuKXtyZXR1cm4iYSI9PUJsLnRhZ30pO19pPV9pLmNoaWxkcmVuW1UwXS5jaGlsZHJlbltIY119KFUwPW91LmNoaWxkcmVuLmZpbmRJbmRleChmdW5jdGlvbihCbCx2bil7cmV0dXJuImciPT1CbC50YWd9KSk+PTAmJihIYz1vdS5j''@;'; put 'put ''aGlsZHJlbltVMF0uY2hpbGRyZW4uZmluZEluZGV4KGZ1bmN0aW9uKHZuLF8wKXtyZXR1cm4iYSI9PXZuLnRhZ30pLG91PW91LmNoaWxkcmVuW1UwXS5jaGlsZHJlbltIY10pO2Zvcih2YXIgQnM9X2kuY2hpbGRyZW4sVTA9MDtVMDxCcy5sZW5ndGg7VTArKylpZigicG9seWdvbiI9PUJzW1Uw''@;'; put 'put ''XS50YWd8fCJlbGxpcHNlIj09QnNbVTBdLnRhZ3x8InBhdGgiPT1Cc1tVMF0udGFnfHwidGV4dCI9PUJzW1UwXS50YWcpe3ZhciBYMD1Cc1tVMF07YnJlYWt9dmFyIHVhPW91LmNoaWxkcmVuO2ZvcihVMD0wO1UwPHVhLmxlbmd0aDtVMCsrKWlmKCJwb2x5Z29uIj09dWFbVTBdLnRhZ3x8ImVs''@;'; put 'put ''bGlwc2UiPT11YVtVMF0udGFnfHwicGF0aCI9PXVhW1UwXS50YWd8fCJ0ZXh0Ij09dWFbVTBdLnRhZyl7dmFyIGowPXVhW1UwXTticmVha31RaS5vZmZzZXQ9ajAmJlgwP3t4OmowLmNlbnRlci54LVgwLmNlbnRlci54LHk6ajAuY2VudGVyLnktWDAuY2VudGVyLnl9Ont4OjAseTowfX19fShR''@;'; put 'put ''aSksUWkuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihNYSl7RW8oTWEpfSl9dGhpcy5fZGlzcGF0Y2guY2FsbCgic3RhcnQiLHRoaXMpLHRoaXMuX2J1c3k9ITAsdGhpcy5fZGlzcGF0Y2guY2FsbCgibGF5b3V0U3RhcnQiLHRoaXMpO3ZhciBxbz17Zm9ybWF0OiJzdmciLGVuZ2luZTpHdCxp''@;'; put 'put ''bWFnZXM6a24sdG90YWxNZW1vcnk6Vm59O2lmKHRoaXMuX3dvcmtlcilfbi5wb3N0TWVzc2FnZSh7ZG90Om1uLG9wdGlvbnM6cW99KSxfbi5vbm1lc3NhZ2U9ZnVuY3Rpb24oUWkpe3N3aXRjaChRaS5kYXRhLnR5cGUpe2Nhc2UiZG9uZSI6cmV0dXJuIGxsLmNhbGwoY24sUWkuZGF0YS5zdmcp''@;'; put 'put ''O2Nhc2UiZXJyb3IiOmlmKCFjbi5fb25lcnJvcil0aHJvdyBRaS5kYXRhLmVycm9yO2NuLl9vbmVycm9yKFFpLmRhdGEuZXJyb3IpfX07ZWxzZXt0cnl7dmFyIGNhPXJlKG1uLHFvKX1jYXRjaChRaSl7aWYoY24uX29uZXJyb3IpcmV0dXJuIGNuLl9vbmVycm9yKFFpLm1lc3NhZ2UpLHRoaXM7''@;'; put 'put ''dGhyb3cgUWkubWVzc2FnZX1sbC5jYWxsKHRoaXMsY2EpfWZ1bmN0aW9uIGxsKFFpKXt0aGlzLl9kaXNwYXRjaC5jYWxsKCJsYXlvdXRFbmQiLHRoaXMpO3ZhciBNYT1CLnNlbGVjdChkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpLmFwcGVuZCgiZGl2IiksZ2w9KG5ldyB3aW5k''@;'; put 'put ''b3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoUWksImltYWdlL3N2Zyt4bWwiKTtNYS5hcHBlbmQoZnVuY3Rpb24oKXtyZXR1cm4gZ2wuZG9jdW1lbnRFbGVtZW50fSk7dmFyIHZpPU4oTWEuc2VsZWN0KCJzdmciKSk7dGhpcy5fZGlzcGF0Y2guY2FsbCgiZGF0YUV4dHJhY3RFbmQiLHRo''@;'; put 'put ''aXMpLEcwKHZpKSx0aGlzLl9kaXNwYXRjaC5jYWxsKCJkYXRhUHJvY2Vzc1Bhc3MxRW5kIix0aGlzKSxFbyh2aSksdGhpcy5fZGlzcGF0Y2guY2FsbCgiZGF0YVByb2Nlc3NQYXNzMkVuZCIsdGhpcyksdGhpcy5fZGF0YT12aSx0aGlzLl9kaWN0aW9uYXJ5PVZyLHRoaXMuX25vZGVEaWN0aW9u''@;'; put 'put ''YXJ5PVJyLHRoaXMuX2V4dHJhY3REYXRhPWZ1bmN0aW9uKHNhLHJsLF9pKXt2YXIgb3U9TihzYSk7cmV0dXJuIEcwKG91LHJsLF9pKSxFbyhvdSksb3V9LHRoaXMuX2J1c3k9ITEsdGhpcy5fZGlzcGF0Y2guY2FsbCgiZGF0YVByb2Nlc3NFbmQiLHRoaXMpLHVuJiZ1bi5jYWxsKHRoaXMpLHRo''@;'; put 'put ''aXMuX3F1ZXVlLmxlbmd0aD4wJiZ0aGlzLl9xdWV1ZS5zaGlmdCgpLmNhbGwodGhpcyl9cmV0dXJuIHRoaXN9LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YXx8bnVsbH0scmVuZGVyRG90OmZ1bmN0aW9uKG1uLHVuKXt2YXIgY249dGhpcztyZXR1cm4gdGhpcy5kb3QobW4sZnVu''@;'; put 'put ''Y3Rpb24gX24oKXtjbi5yZW5kZXIodW4pfSksdGhpc30sdHJhbnNpdGlvbjpmdW5jdGlvbihtbil7cmV0dXJuIG1uIGluc3RhbmNlb2YgRnVuY3Rpb24/dGhpcy5fdHJhbnNpdGlvbkZhY3Rvcnk9bW46dGhpcy5fdHJhbnNpdGlvbj1FZS50cmFuc2l0aW9uKG1uKSx0aGlzfSxhY3RpdmU6ZnVu''@;'; put 'put ''Y3Rpb24gdnQobW4pe3ZhciBjbj10aGlzLl9zZWxlY3Rpb24uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigic3ZnIik7cmV0dXJuIDAhPWNuLnNpemUoKT9FZS5hY3RpdmUoY24ubm9kZSgpLG1uKTpudWxsfSxvcHRpb25zOmZ1bmN0aW9uKG1uKXtpZih2b2lkIDA9PT1tbilyZXR1cm4g''@;'; put 'put ''T2JqZWN0LmFzc2lnbih7fSx0aGlzLl9vcHRpb25zKTt2YXIgdW49ITAsY249ITEsX249dm9pZCAwO3RyeXtmb3IodmFyIGtuLEd0PU9iamVjdC5rZXlzKG1uKVtTeW1ib2wuaXRlcmF0b3JdKCk7ISh1bj0oa249R3QubmV4dCgpKS5kb25lKTt1bj0hMCl7dmFyIFZuPWtuLnZhbHVlO3RoaXMu''@;'; put 'put ''X29wdGlvbnNbVm5dPW1uW1ZuXX19Y2F0Y2goZW4pe2NuPSEwLF9uPWVufWZpbmFsbHl7dHJ5eyF1biYmR3QucmV0dXJuJiZHdC5yZXR1cm4oKX1maW5hbGx5e2lmKGNuKXRocm93IF9ufX1yZXR1cm4gdGhpc30sd2lkdGg6ZnVuY3Rpb24obW4pe3JldHVybiB0aGlzLl9vcHRpb25zLndpZHRo''@;'; put 'put ''PW1uLHRoaXN9LGhlaWdodDpmdW5jdGlvbihtbil7cmV0dXJuIHRoaXMuX29wdGlvbnMuaGVpZ2h0PW1uLHRoaXN9LHNjYWxlOmZ1bmN0aW9uKG1uKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy5zY2FsZT1tbix0aGlzfSxmaXQ6ZnVuY3Rpb24obW4pe3JldHVybiB0aGlzLl9vcHRpb25zLmZpdD1t''@;'; put 'put ''bix0aGlzfSxhdHRyaWJ1dGVyOmZ1bmN0aW9uKG1uKXtyZXR1cm4gdGhpcy5fYXR0cmlidXRlcj1tbix0aGlzfSxvbjpmdW5jdGlvbihtbix1bil7cmV0dXJuIHRoaXMuX2Rpc3BhdGNoLm9uKG1uLHVuKSx0aGlzfSxvbmVycm9yOmZ1bmN0aW9uKG1uKXtyZXR1cm4gdGhpcy5fb25lcnJvcj1t''@;'; put 'put ''bix0aGlzfSxsb2dFdmVudHM6ZnVuY3Rpb24obW4pe3ZhciB1bj10aGlzLGNuPURhdGUubm93KCksX249e30sR3Q9dGhpcy5fZXZlbnRUeXBlcyxrbj1NYXRoLm1heC5hcHBseShNYXRoLHluKEd0Lm1hcChmdW5jdGlvbihncil7cmV0dXJuIGdyLmxlbmd0aH0pKSksVm49ZnVuY3Rpb24oS3Ip''@;'; put 'put ''e3ZhciBWcj1HdFtLcl07X25bVnJdPVtdLEluPXVuLHVuLm9uKFZyKyIubG9nIixtbj9mdW5jdGlvbigpe3ZhciBpaT1EYXRlLm5vdygpLFJyPV9uW1ZyXS5sZW5ndGg7X25bVnJdLnB1c2goaWkpO3ZhciBsaT0iIjtpZihsaSs9IkV2ZW50ICIsbGkrPWFlLmZvcm1hdCgiID4yIikoS3IpKyIg''@;'; put 'put ''IixsaSs9VnIrIiAiLnJlcGVhdChrbi1Wci5sZW5ndGgpLGxpKz1hZS5mb3JtYXQoIiA+NSIpKGlpLWNuKSsiICIsImluaXRFbmQiIT1WciYmKGxpKz1hZS5mb3JtYXQoIiA+NSIpKGlpLV9uLnN0YXJ0W1JyXSkpLCJkYXRhUHJvY2Vzc0VuZCI9PVZyJiYobGkrPSIgcHJlcGFyZSAgICAgICAg''@;'; put 'put ''ICAgICAgICAgIithZS5mb3JtYXQoIiA+NSIpKGlpLV9uLmxheW91dEVuZFtScl0pKSwicmVuZGVyRW5kIj09VnImJkluLl90cmFuc2l0aW9uJiYobGkrPSIgdHJhbnNpdGlvbiBzdGFydCBtYXJnaW4gIithZS5mb3JtYXQoIiA+NSIpKEluLl90cmFuc2l0aW9uLmRlbGF5KCktKGlpLV9uLnJl''@;'; put 'put ''bmRlclN0YXJ0W1JyXSkpLEpuPUluLl90cmFuc2l0aW9uLmRlbGF5KCksb3I9SW4uX3RyYW5zaXRpb24uZHVyYXRpb24oKSksInRyYW5zaXRpb25TdGFydCI9PVZyKXt2YXIgTWk9aWktX24ucmVuZGVyU3RhcnRbUnJdO2xpKz0iIHRyYW5zaXRpb24gZGVsYXkgICAgICAgICIrYWUuZm9ybWF0''@;'; put 'put ''KCIgPjUiKShpaS1fbi5yZW5kZXJTdGFydFtScl0pLGxpKz0iIGV4cGVjdGVkICIrYWUuZm9ybWF0KCIgPjUiKShKbiksbGkrPSIgZGlmZiAiK2FlLmZvcm1hdCgiID41IikoTWktSm4pfWlmKCJ0cmFuc2l0aW9uRW5kIj09VnIpe3ZhciBvMD1paS1fbi50cmFuc2l0aW9uU3RhcnRbUnJdO2xp''@;'; put 'put ''Kz0iIHRyYW5zaXRpb24gZHVyYXRpb24gICAgICIrYWUuZm9ybWF0KCIgPjUiKShvMCksbGkrPSIgZXhwZWN0ZWQgIithZS5mb3JtYXQoIiA+NSIpKG9yKSxsaSs9IiBkaWZmICIrYWUuZm9ybWF0KCIgPjUiKShvMC1vcil9Y29uc29sZS5sb2cobGkpLGNuPWlpfTpudWxsKX07Zm9yKHZhciBl''@;'; put 'put ''biBpbiBHdCl7dmFyIEluLEpuLG9yO1ZuKGVuKX1yZXR1cm4gdGhpc30sZHJhd0VkZ2U6ZnVuY3Rpb24gYm4obW4sdW4sY24sX24sR3Qpe3ZhciBrbj1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06e307aWYoKEd0PU9iamVjdC5hc3NpZ24o''@;'; put 'put ''e30sR3QpKS5zdHlsZSYmR3Quc3R5bGUuaW5jbHVkZXMoImludmlzIikpdmFyIFZuPUIuc2VsZWN0KG51bGwpO2Vsc2V7dmFyIEpuPXRoaXMuX3NlbGVjdGlvbi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJzdmciKS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJnIiksZ3I9''@;'; put 'put ''TihucihHdCkpO1ZuPUpuLmFwcGVuZCgiZyIpLmRhdGEoW2dyXSksZGUuY2FsbChWbi5ub2RlKCksZ3IpLHNyKFZuLG1uLHVuLGNuLF9uLEd0LGtuKX1yZXR1cm4gdGhpcy5fZHJhd25FZGdlPXtnOlZuLHgxOm1uLHkxOnVuLHgyOmNuLHkyOl9uLGF0dHJpYnV0ZXM6R3R9LHRoaXN9LHVwZGF0''@;'; put 'put ''ZURyYXduRWRnZTpmdW5jdGlvbiBlcihtbix1bixjbixfbil7dmFyIEd0PWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTp7fSxrbj1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06e307aWYo''@;'; put 'put ''IXRoaXMuX2RyYXduRWRnZSl0aHJvdyBFcnJvcigiTm8gZWRnZSBoYXMgYmVlbiBkcmF3biIpO3ZhciBWbj10aGlzLl9kcmF3bkVkZ2UuZztyZXR1cm4gR3Q9T2JqZWN0LmFzc2lnbih0aGlzLl9kcmF3bkVkZ2UuYXR0cmlidXRlcyxHdCksdGhpcy5fZHJhd25FZGdlLngxPW1uLHRoaXMuX2Ry''@;'; put 'put ''YXduRWRnZS55MT11bix0aGlzLl9kcmF3bkVkZ2UueDI9Y24sdGhpcy5fZHJhd25FZGdlLnkyPV9uLCFWbi5lbXB0eSgpfHxHdC5zdHlsZSYmR3Quc3R5bGUuaW5jbHVkZXMoImludmlzIil8fChWbj10aGlzLl9zZWxlY3Rpb24uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigic3ZnIiku''@;'; put 'put ''c2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiZyIpLmFwcGVuZCgiZyIpLHRoaXMuX2RyYXduRWRnZS5nPVZuKSxWbi5lbXB0eSgpfHxzcihWbixtbix1bixjbixfbixHdCxrbiksdGhpc30sbW92ZURyYXduRWRnZUVuZFBvaW50OmZ1bmN0aW9uIEZyKG1uLHVuKXt2YXIgY249YXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnt9O2lmKCF0aGlzLl9kcmF3bkVkZ2UpdGhyb3cgRXJyb3IoIk5vIGVkZ2UgaGFzIGJlZW4gZHJhd24iKTt2YXIgX249dGhpcy5fZHJhd25FZGdlLmcsR3Q9dGhpcy5fZHJhd25FZGdlLngxLGtuPXRoaXMu''@;'; put 'put ''X2RyYXduRWRnZS55MSxWbj10aGlzLl9kcmF3bkVkZ2UuYXR0cmlidXRlcztyZXR1cm4gdGhpcy5fZHJhd25FZGdlLngyPW1uLHRoaXMuX2RyYXduRWRnZS55Mj11bixYbihfbixHdCxrbixtbix1bixWbixjbiksdGhpc30saW5zZXJ0RHJhd25FZGdlOmZ1bmN0aW9uIHF0KG1uKXtpZighdGhp''@;'; put 'put ''cy5fZHJhd25FZGdlKXRocm93IEVycm9yKCJObyBlZGdlIGhhcyBiZWVuIGRyYXduIik7dmFyIHVuPXRoaXMuX2RyYXduRWRnZS5nO2lmKHVuLmVtcHR5KCkpcmV0dXJuIHRoaXM7dW4uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigidGl0bGUiKS50ZXh0KG1uKTt2YXIgVm49dGhpcy5f''@;'; put 'put ''c2VsZWN0aW9uLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInN2ZyIpLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImciKSxlbj1Wbi5kYXR1bSgpLEluPXRoaXMuX2V4dHJhY3REYXRhKHVuLGVuLmNoaWxkcmVuLmxlbmd0aCxWbi5kYXR1bSgpKTtyZXR1cm4gZW4uY2hpbGRy''@;'; put 'put ''ZW4ucHVzaChJbiksb2UodW4sSW4pLHRoaXMuX2RyYXduRWRnZT1udWxsLHRoaXN9LHJlbW92ZURyYXduRWRnZTp4cn0sInJlbW92ZURyYXduRWRnZSIseHIpLGRuKHRuLCJkcmF3bkVkZ2VTZWxlY3Rpb24iLHByKSxkbih0biwiZHJhd25FZGdlU2VsZWN0aW9uIixwciksZG4odG4sImRyYXdO''@;'; put 'put ''b2RlIixmdW5jdGlvbiBBbihtbix1bixjbil7dmFyIF9uPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTp7fSxHdD1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06e307aWYoKF9uPU9iamVj''@;'; put 'put ''dC5hc3NpZ24oe30sX24pKS5zdHlsZSYmX24uc3R5bGUuaW5jbHVkZXMoImludmlzIikpdmFyIGtuPUIuc2VsZWN0KG51bGwpO2Vsc2V7dmFyIEluPXRoaXMuX3NlbGVjdGlvbi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJzdmciKS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9u''@;'; put 'put ''KCJnIiksb3I9Tih3bihjbixfbikpO2tuPUluLmFwcGVuZCgiZyIpLmRhdGEoW29yXSksZGUuY2FsbChrbi5ub2RlKCksb3IpLFd0KGtuLG1uLHVuLGNuLF9uLEd0KX1yZXR1cm4gdGhpcy5fZHJhd25Ob2RlPXtnOmtuLG5vZGVJZDpjbix4Om1uLHk6dW4sYXR0cmlidXRlczpfbn0sdGhpc30p''@;'; put 'put ''LGRuKHRuLCJ1cGRhdGVEcmF3bk5vZGUiLGZ1bmN0aW9uIHFuKG1uLHVuLGNuKXt2YXIgX249YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOnt9LEd0PWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50''@;'; put 'put ''c1s0XTp7fTtpZighdGhpcy5fZHJhd25Ob2RlKXRocm93IEVycm9yKCJObyBub2RlIGhhcyBiZWVuIGRyYXduIik7dmFyIGtuPXRoaXMuX2RyYXduTm9kZS5nO3JldHVybiBudWxsPT1jbiYmKGNuPXRoaXMuX2RyYXduTm9kZS5ub2RlSWQpLF9uPU9iamVjdC5hc3NpZ24odGhpcy5fZHJhd25O''@;'; put 'put ''b2RlLmF0dHJpYnV0ZXMsX24pLHRoaXMuX2RyYXduTm9kZS5ub2RlSWQ9Y24sdGhpcy5fZHJhd25Ob2RlLng9bW4sdGhpcy5fZHJhd25Ob2RlLnk9dW4sIWtuLmVtcHR5KCl8fF9uLnN0eWxlJiZfbi5zdHlsZS5pbmNsdWRlcygiaW52aXMiKXx8KGtuPXRoaXMuX3NlbGVjdGlvbi5zZWxlY3RX''@;'; put 'put ''aXRob3V0RGF0YVByb3BhZ2F0aW9uKCJzdmciKS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJnIikuYXBwZW5kKCJnIiksdGhpcy5fZHJhd25Ob2RlLmc9a24pLGtuLmVtcHR5KCl8fFd0KGtuLG1uLHVuLGNuLF9uLEd0KSx0aGlzfSksZG4odG4sIm1vdmVEcmF3bk5vZGUiLGZ1bmN0''@;'; put 'put ''aW9uIEtuKG1uLHVuKXtpZighdGhpcy5fZHJhd25Ob2RlKXRocm93IEVycm9yKCJObyBub2RlIGhhcyBiZWVuIGRyYXduIik7dmFyIF9uPXRoaXMuX2RyYXduTm9kZS5nLEd0PXRoaXMuX2RyYXduTm9kZS5hdHRyaWJ1dGVzO3JldHVybiB0aGlzLl9kcmF3bk5vZGUueD1tbix0aGlzLl9kcmF3''@;'; put 'put ''bk5vZGUueT11bixfbi5lbXB0eSgpfHxwbihfbixtbix1bixHdCksdGhpc30pLGRuKHRuLCJpbnNlcnREcmF3bk5vZGUiLGZ1bmN0aW9uIHNuKG1uKXtpZighdGhpcy5fZHJhd25Ob2RlKXRocm93IEVycm9yKCJObyBub2RlIGhhcyBiZWVuIGRyYXduIik7bnVsbD09bW4mJihtbj10aGlzLl9k''@;'; put 'put ''cmF3bk5vZGUubm9kZUlkKTt2YXIgdW49dGhpcy5fZHJhd25Ob2RlLmc7aWYodW4uZW1wdHkoKSlyZXR1cm4gdGhpczt2YXIgY249dGhpcy5fZHJhd25Ob2RlLmF0dHJpYnV0ZXM7aWYodW4uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigidGl0bGUiKS50ZXh0KG1uKSxjbi5VUkx8fGNu''@;'; put 'put ''LnRvb2x0aXApdmFyIGtuPXVuLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImciKS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJhIiksZW49KGtuLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImVsbGlwc2UscG9seWdvbixwYXRoLHBvbHlsaW5lIiksa24uc2VsZWN0''@;'; put 'put ''V2l0aG91dERhdGFQcm9wYWdhdGlvbigidGV4dCIpKTtlbHNlIHVuLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImVsbGlwc2UscG9seWdvbixwYXRoLHBvbHlsaW5lIiksZW49dW4uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigidGV4dCIpO2VuLnRleHQoY24ubGFiZWx8fG1u''@;'; put 'put ''KTt2YXIgb3I9dGhpcy5fc2VsZWN0aW9uLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInN2ZyIpLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImciKSxncj1vci5kYXR1bSgpLEtyPXRoaXMuX2V4dHJhY3REYXRhKHVuLGdyLmNoaWxkcmVuLmxlbmd0aCxvci5kYXR1bSgpKTty''@;'; put 'put ''ZXR1cm4gZ3IuY2hpbGRyZW4ucHVzaChLciksb2UodW4sS3IpLHRoaXMuX2RyYXduTm9kZT1udWxsLHRoaXN9KSxkbih0biwicmVtb3ZlRHJhd25Ob2RlIixOdCksZG4odG4sInJlbW92ZURyYXduTm9kZSIsTnQpLGRuKHRuLCJkcmF3bk5vZGVTZWxlY3Rpb24iLFVuKSxkbih0biwiZHJhd25O''@;'; put 'put ''b2RlU2VsZWN0aW9uIixVbiksdG4pO0Iuc2VsZWN0aW9uLnByb3RvdHlwZS5ncmFwaHZpej1mdW5jdGlvbihtbil7dmFyIHVuPXRoaXMubm9kZSgpLl9fZ3JhcGh2aXpfXztyZXR1cm4gdW4/KHVuLm9wdGlvbnMobW4pLHVuLl9kaXNwYXRjaC5jYWxsKCJpbml0RW5kIix0aGlzKSk6dW49bmV3''@;'; put 'put ''IHpuKHRoaXMsbW4pLHVufSxCLnNlbGVjdGlvbi5wcm90b3R5cGUuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbj1mdW5jdGlvbihtbil7cmV0dXJuIEIuc2VsZWN0KHRoaXMuc2l6ZSgpPjA/dGhpcy5ub2RlKCkucXVlcnlTZWxlY3Rvcihtbik6bnVsbCl9LG1lLmdyYXBodml6PVRyLE9i''@;'; put 'put ''amVjdC5kZWZpbmVQcm9wZXJ0eShtZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KEplLEwoNjk0MTUpLEwoODUxMDYpLEwoNDA4MjIpLEwoNTY4NDIpLEwoMjE3NTkpLEwoNzU4MjcpLEwoMjkwMzUpLEwoNjU5OTApLEwoMzgxODQpKX0sMTY3MTI6KFhlLEplLEwpPT57InVzZSBzdHJpY3Qi''@;'; put 'put ''O2Z1bmN0aW9uIG1lKEUsRWUsVSxRLGope3ZhciByZT1FKkUsYWU9cmUqRTtyZXR1cm4oKDEtMypFKzMqcmUtYWUpKkVlKyg0LTYqcmUrMyphZSkqVSsoMSszKkUrMypyZS0zKmFlKSpRK2FlKmopLzZ9ZnVuY3Rpb24gQihFKXt2YXIgRWU9RS5sZW5ndGgtMTtyZXR1cm4gZnVuY3Rpb24oVSl7''@;'; put 'put ''dmFyIFE9VTw9MD9VPTA6VT49MT8oVT0xLEVlLTEpOk1hdGguZmxvb3IoVSpFZSksaj1FW1FdLHJlPUVbUSsxXTtyZXR1cm4gbWUoKFUtUS9FZSkqRWUsUT4wP0VbUS0xXToyKmotcmUsaixyZSxRPEVlLTE/RVtRKzJdOjIqcmUtail9fUwuZChKZSx7WjooKT0+Qix0OigpPT5tZX0pfSw2ODUy''@;'; put 'put ''MzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TC5kKEplLHtaOigpPT5CfSk7dmFyIG1lPUwoMTY3MTIpO2Z1bmN0aW9uIEIoRSl7dmFyIEVlPUUubGVuZ3RoO3JldHVybiBmdW5jdGlvbihVKXt2YXIgUT1NYXRoLmZsb29yKCgoVSU9MSk8MD8rK1U6VSkqRWUpO3JldHVybigwLG1lLnQpKChV''@;'; put 'put ''LVEvRWUpKkVlLEVbKFErRWUtMSklRWVdLEVbUSVFZV0sRVsoUSsxKSVFZV0sRVsoUSsyKSVFZV0pfX19LDM1MTQ3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMLmQoSmUse1pQOigpPT5RLHd4OigpPT5FZSx5aTooKT0+VX0pO3ZhciBtZT1MKDQ3OTI3KTtmdW5jdGlvbiBCKGoscmUpe3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbihhZSl7cmV0dXJuIGorYWUqcmV9fWZ1bmN0aW9uIEVlKGoscmUpe3ZhciBhZT1yZS1qO3JldHVybiBhZT9CKGosYWU+MTgwfHxhZTwtMTgwP2FlLTM2MCpNYXRoLnJvdW5kKGFlLzM2MCk6YWUpOigwLG1lLlopKGlzTmFOKGopP3JlOmopfWZ1bmN0aW9uIFUoail7cmV0''@;'; put 'put ''dXJuIDE9PShqPStqKT9ROmZ1bmN0aW9uKHJlLGFlKXtyZXR1cm4gYWUtcmU/ZnVuY3Rpb24gRShqLHJlLGFlKXtyZXR1cm4gaj1NYXRoLnBvdyhqLGFlKSxyZT1NYXRoLnBvdyhyZSxhZSktaixhZT0xL2FlLGZ1bmN0aW9uKFkpe3JldHVybiBNYXRoLnBvdyhqK1kqcmUsYWUpfX0ocmUsYWUs''@;'; put 'put ''aik6KDAsbWUuWikoaXNOYU4ocmUpP2FlOnJlKX19ZnVuY3Rpb24gUShqLHJlKXt2YXIgYWU9cmUtajtyZXR1cm4gYWU/QihqLGFlKTooMCxtZS5aKShpc05hTihqKT9yZTpqKX19LDQ3OTI3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtZShCKXtyZXR1cm4gZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gQn19TC5kKEplLHtaOigpPT5tZX0pfSwyMTc1OTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TC5yKEplKSxMLmQoSmUse2ludGVycG9sYXRlOigpPT5OLGludGVycG9sYXRlQXJyYXk6KCk9PlUsaW50ZXJwb2xhdGVCYXNpczooKT0+dGUuWixpbnRlcnBvbGF0ZUJhc2lzQ2xv''@;'; put 'put ''c2VkOigpPT5LLlosaW50ZXJwb2xhdGVDdWJlaGVsaXg6KCk9Pkp0LGludGVycG9sYXRlQ3ViZWhlbGl4TG9uZzooKT0+Z24saW50ZXJwb2xhdGVEYXRlOigpPT5qLGludGVycG9sYXRlRGlzY3JldGU6KCk9PkosaW50ZXJwb2xhdGVIY2w6KCk9PkJ0LGludGVycG9sYXRlSGNsTG9uZzooKT0+''@;'; put 'put ''b24saW50ZXJwb2xhdGVIc2w6KCk9PmtlLGludGVycG9sYXRlSHNsTG9uZzooKT0+U2UsaW50ZXJwb2xhdGVIdWU6KCk9Pm9lLGludGVycG9sYXRlTGFiOigpPT5BdCxpbnRlcnBvbGF0ZU51bWJlcjooKT0+cmUuWixpbnRlcnBvbGF0ZU51bWJlckFycmF5OigpPT5FLGludGVycG9sYXRlT2Jq''@;'; put 'put ''ZWN0OigpPT5hZSxpbnRlcnBvbGF0ZVJnYjooKT0+Qi5aUCxpbnRlcnBvbGF0ZVJnYkJhc2lzOigpPT5CLmhELGludGVycG9sYXRlUmdiQmFzaXNDbG9zZWQ6KCk9PkIuWUQsaW50ZXJwb2xhdGVSb3VuZDooKT0+Y2UsaW50ZXJwb2xhdGVTdHJpbmc6KCk9PlkuWixpbnRlcnBvbGF0ZVRyYW5z''@;'; put 'put ''Zm9ybUNzczooKT0+ZGUuWSxpbnRlcnBvbGF0ZVRyYW5zZm9ybVN2ZzooKT0+ZGUudyxpbnRlcnBvbGF0ZVpvb206KCk9PnZlLloscGllY2V3aXNlOigpPT5kbixxdWFudGl6ZTooKT0+eW59KTt2YXIgbWU9TCg1Mjc4NiksQj1MKDg2ODExKTtmdW5jdGlvbiBFKGxuLE5uKXtObnx8KE5uPVtd''@;'; put 'put ''KTt2YXIgc3IsYm49bG4/TWF0aC5taW4oTm4ubGVuZ3RoLGxuLmxlbmd0aCk6MCxlcj1Obi5zbGljZSgpO3JldHVybiBmdW5jdGlvbihYbil7Zm9yKHNyPTA7c3I8Ym47Kytzcillcltzcl09bG5bc3JdKigxLVhuKStObltzcl0qWG47cmV0dXJuIGVyfX1mdW5jdGlvbiBFZShsbil7cmV0dXJu''@;'; put 'put ''IEFycmF5QnVmZmVyLmlzVmlldyhsbikmJiEobG4gaW5zdGFuY2VvZiBEYXRhVmlldyl9ZnVuY3Rpb24gVShsbixObil7cmV0dXJuKEVlKE5uKT9FOlEpKGxuLE5uKX1mdW5jdGlvbiBRKGxuLE5uKXt2YXIgRnIsYm49Tm4/Tm4ubGVuZ3RoOjAsZXI9bG4/TWF0aC5taW4oYm4sbG4ubGVuZ3Ro''@;'; put 'put ''KTowLHNyPW5ldyBBcnJheShlciksWG49bmV3IEFycmF5KGJuKTtmb3IoRnI9MDtGcjxlcjsrK0ZyKXNyW0ZyXT1OKGxuW0ZyXSxObltGcl0pO2Zvcig7RnI8Ym47KytGcilYbltGcl09Tm5bRnJdO3JldHVybiBmdW5jdGlvbih4cil7Zm9yKEZyPTA7RnI8ZXI7KytGcilYbltGcl09c3JbRnJd''@;'; put 'put ''KHhyKTtyZXR1cm4gWG59fWZ1bmN0aW9uIGoobG4sTm4pe3ZhciBibj1uZXcgRGF0ZTtyZXR1cm4gbG49K2xuLE5uPStObixmdW5jdGlvbihlcil7cmV0dXJuIGJuLnNldFRpbWUobG4qKDEtZXIpK05uKmVyKSxibn19dmFyIHJlPUwoNjczOCk7ZnVuY3Rpb24gYWUobG4sTm4pe3ZhciBzcixi''@;'; put 'put ''bj17fSxlcj17fTtmb3Ioc3IgaW4obnVsbD09PWxufHwib2JqZWN0IiE9dHlwZW9mIGxuKSYmKGxuPXt9KSwobnVsbD09PU5ufHwib2JqZWN0IiE9dHlwZW9mIE5uKSYmKE5uPXt9KSxObilzciBpbiBsbj9ibltzcl09Tihsbltzcl0sTm5bc3JdKTplcltzcl09Tm5bc3JdO3JldHVybiBmdW5j''@;'; put 'put ''dGlvbihYbil7Zm9yKHNyIGluIGJuKWVyW3NyXT1ibltzcl0oWG4pO3JldHVybiBlcn19dmFyIFk9TCgyMzA5NiksVz1MKDQ3OTI3KTtmdW5jdGlvbiBOKGxuLE5uKXt2YXIgZXIsYm49dHlwZW9mIE5uO3JldHVybiBudWxsPT1Obnx8ImJvb2xlYW4iPT09Ym4/KDAsVy5aKShObik6KCJudW1i''@;'; put 'put ''ZXIiPT09Ym4/cmUuWjoic3RyaW5nIj09PWJuPyhlcj0oMCxtZS5aUCkoTm4pKT8oTm49ZXIsQi5aUCk6WS5aOk5uIGluc3RhbmNlb2YgbWUuWlA/Qi5aUDpObiBpbnN0YW5jZW9mIERhdGU/ajpFZShObik/RTpBcnJheS5pc0FycmF5KE5uKT9ROiJmdW5jdGlvbiIhPXR5cGVvZiBObi52YWx1''@;'; put 'put ''ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgTm4udG9TdHJpbmd8fGlzTmFOKE5uKT9hZTpyZS5aKShsbixObil9dmFyIHRlPUwoMTY3MTIpLEs9TCg2ODUyMyk7ZnVuY3Rpb24gSihsbil7dmFyIE5uPWxuLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oYm4pe3JldHVybiBsbltNYXRoLm1heCgwLE1h''@;'; put 'put ''dGgubWluKE5uLTEsTWF0aC5mbG9vcihibipObikpKV19fXZhciBzZT1MKDM1MTQ3KTtmdW5jdGlvbiBvZShsbixObil7dmFyIGJuPSgwLHNlLnd4KSgrbG4sK05uKTtyZXR1cm4gZnVuY3Rpb24oZXIpe3ZhciBzcj1ibihlcik7cmV0dXJuIHNyLTM2MCpNYXRoLmZsb29yKHNyLzM2MCl9fWZ1''@;'; put 'put ''bmN0aW9uIGNlKGxuLE5uKXtyZXR1cm4gbG49K2xuLE5uPStObixmdW5jdGlvbihibil7cmV0dXJuIE1hdGgucm91bmQobG4qKDEtYm4pK05uKmJuKX19dmFyIGRlPUwoNzUzNDkpLHZlPUwoNzYyNTcpO2Z1bmN0aW9uIEFlKGxuKXtyZXR1cm4gZnVuY3Rpb24oTm4sYm4pe3ZhciBlcj1sbigo''@;'; put 'put ''Tm49KDAsbWUuWW0pKE5uKSkuaCwoYm49KDAsbWUuWW0pKGJuKSkuaCksc3I9KDAsc2UuWlApKE5uLnMsYm4ucyksWG49KDAsc2UuWlApKE5uLmwsYm4ubCksRnI9KDAsc2UuWlApKE5uLm9wYWNpdHksYm4ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHhyKXtyZXR1cm4gTm4uaD1lcih4ciks''@;'; put 'put ''Tm4ucz1zcih4ciksTm4ubD1Ybih4ciksTm4ub3BhY2l0eT1Gcih4ciksTm4rIiJ9fX1jb25zdCBrZT1BZShzZS53eCk7dmFyIFNlPUFlKHNlLlpQKSxJZT1MKDY4ODg0KSxUZT1NYXRoLlBJLzE4MCxNZT0xODAvTWF0aC5QSSxPPS45NjQyMixuZT00LzI5LHg9Ni8yOSxQPTMqeCp4O2Z1bmN0''@;'; put 'put ''aW9uIFQobG4pe2lmKGxuIGluc3RhbmNlb2YgeWUpcmV0dXJuIG5ldyB5ZShsbi5sLGxuLmEsbG4uYixsbi5vcGFjaXR5KTtpZihsbiBpbnN0YW5jZW9mIG10KXJldHVybiB2dChsbik7bG4gaW5zdGFuY2VvZiBtZS5Tc3x8KGxuPSgwLG1lLlNVKShsbikpO3ZhciBYbixGcixObj1RZShsbi5y''@;'; put 'put ''KSxibj1RZShsbi5nKSxlcj1RZShsbi5iKSxzcj1DZSgoLjIyMjUwNDUqTm4rLjcxNjg3ODYqYm4rLjA2MDYxNjkqZXIpLzEpO3JldHVybiBObj09PWJuJiZibj09PWVyP1huPUZyPXNyOihYbj1DZSgoLjQzNjA3NDcqTm4rLjM4NTA2NDkqYm4rLjE0MzA4MDQqZXIpL08pLEZyPUNlKCguMDEz''@;'; put 'put ''OTMyMipObisuMDk3MTA0NSpibisuNzE0MTczMyplcikvLjgyNTIxKSksbmV3IHllKDExNipzci0xNiw1MDAqKFhuLXNyKSwyMDAqKHNyLUZyKSxsbi5vcGFjaXR5KX1mdW5jdGlvbiBGKGxuLE5uLGJuLGVyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/VChsbik6bmV3IHllKGxuLE5u''@;'; put 'put ''LGJuLG51bGw9PWVyPzE6ZXIpfWZ1bmN0aW9uIHllKGxuLE5uLGJuLGVyKXt0aGlzLmw9K2xuLHRoaXMuYT0rTm4sdGhpcy5iPStibix0aGlzLm9wYWNpdHk9K2VyfWZ1bmN0aW9uIENlKGxuKXtyZXR1cm4gbG4+LjAwODg1NjQ1MTY3OTAzNTYzMT9NYXRoLnBvdyhsbiwxLzMpOmxuL1ArbmV9''@;'; put 'put ''ZnVuY3Rpb24gRGUobG4pe3JldHVybiBsbj54P2xuKmxuKmxuOlAqKGxuLW5lKX1mdW5jdGlvbiBQZShsbil7cmV0dXJuIDI1NSoobG48PS4wMDMxMzA4PzEyLjkyKmxuOjEuMDU1Kk1hdGgucG93KGxuLDEvMi40KS0uMDU1KX1mdW5jdGlvbiBRZShsbil7cmV0dXJuKGxuLz0yNTUpPD0uMDQw''@;'; put 'put ''NDU/bG4vMTIuOTI6TWF0aC5wb3coKGxuKy4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gJGUobG4pe2lmKGxuIGluc3RhbmNlb2YgbXQpcmV0dXJuIG5ldyBtdChsbi5oLGxuLmMsbG4ubCxsbi5vcGFjaXR5KTtpZihsbiBpbnN0YW5jZW9mIHllfHwobG49VChsbikpLDA9PT1sbi5hJiYwPT09''@;'; put 'put ''bG4uYilyZXR1cm4gbmV3IG10KE5hTiwwPGxuLmwmJmxuLmw8MTAwPzA6TmFOLGxuLmwsbG4ub3BhY2l0eSk7dmFyIE5uPU1hdGguYXRhbjIobG4uYixsbi5hKSpNZTtyZXR1cm4gbmV3IG10KE5uPDA/Tm4rMzYwOk5uLE1hdGguc3FydChsbi5hKmxuLmErbG4uYipsbi5iKSxsbi5sLGxuLm9w''@;'; put 'put ''YWNpdHkpfWZ1bmN0aW9uIHd0KGxuLE5uLGJuLGVyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/JGUobG4pOm5ldyBtdChsbixObixibixudWxsPT1lcj8xOmVyKX1mdW5jdGlvbiBtdChsbixObixibixlcil7dGhpcy5oPStsbix0aGlzLmM9K05uLHRoaXMubD0rYm4sdGhpcy5vcGFj''@;'; put 'put ''aXR5PStlcn1mdW5jdGlvbiB2dChsbil7aWYoaXNOYU4obG4uaCkpcmV0dXJuIG5ldyB5ZShsbi5sLDAsMCxsbi5vcGFjaXR5KTt2YXIgTm49bG4uaCpUZTtyZXR1cm4gbmV3IHllKGxuLmwsTWF0aC5jb3MoTm4pKmxuLmMsTWF0aC5zaW4oTm4pKmxuLmMsbG4ub3BhY2l0eSl9ZnVuY3Rpb24g''@;'; put 'put ''QXQobG4sTm4pe3ZhciBibj0oMCxzZS5aUCkoKGxuPUYobG4pKS5sLChObj1GKE5uKSkubCksZXI9KDAsc2UuWlApKGxuLmEsTm4uYSksc3I9KDAsc2UuWlApKGxuLmIsTm4uYiksWG49KDAsc2UuWlApKGxuLm9wYWNpdHksTm4ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKEZyKXtyZXR1cm4g''@;'; put 'put ''bG4ubD1ibihGciksbG4uYT1lcihGciksbG4uYj1zcihGciksbG4ub3BhY2l0eT1YbihGciksbG4rIiJ9fWZ1bmN0aW9uIGh0KGxuKXtyZXR1cm4gZnVuY3Rpb24oTm4sYm4pe3ZhciBlcj1sbigoTm49d3QoTm4pKS5oLChibj13dChibikpLmgpLHNyPSgwLHNlLlpQKShObi5jLGJuLmMpLFhu''@;'; put 'put ''PSgwLHNlLlpQKShObi5sLGJuLmwpLEZyPSgwLHNlLlpQKShObi5vcGFjaXR5LGJuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih4cil7cmV0dXJuIE5uLmg9ZXIoeHIpLE5uLmM9c3IoeHIpLE5uLmw9WG4oeHIpLE5uLm9wYWNpdHk9RnIoeHIpLE5uKyIifX19KDAsSWUuWikoeWUsRiwoMCxJ''@;'; put 'put ''ZS5sKShtZS5JbCx7YnJpZ2h0ZXI6ZnVuY3Rpb24obG4pe3JldHVybiBuZXcgeWUodGhpcy5sKzE4KihudWxsPT1sbj8xOmxuKSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihsbil7cmV0dXJuIG5ldyB5ZSh0aGlzLmwtMTgqKG51bGw9PWxuPzE6bG4pLHRo''@;'; put 'put ''aXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIGxuPSh0aGlzLmwrMTYpLzExNixObj1pc05hTih0aGlzLmEpP2xuOmxuK3RoaXMuYS81MDAsYm49aXNOYU4odGhpcy5iKT9sbjpsbi10aGlzLmIvMjAwO3JldHVybiBObj1PKkRlKE5uKSxsbj0xKkRlKGxuKSxi''@;'; put 'put ''bj0uODI1MjEqRGUoYm4pLG5ldyBtZS5TcyhQZSgzLjEzMzg1NjEqTm4tMS42MTY4NjY3KmxuLS40OTA2MTQ2KmJuKSxQZSgtLjk3ODc2ODQqTm4rMS45MTYxNDE1KmxuKy4wMzM0NTQqYm4pLFBlKC4wNzE5NDUzKk5uLS4yMjg5OTE0KmxuKzEuNDA1MjQyNypibiksdGhpcy5vcGFjaXR5KX19''@;'; put 'put ''KSksKDAsSWUuWikobXQsd3QsKDAsSWUubCkobWUuSWwse2JyaWdodGVyOmZ1bmN0aW9uKGxuKXtyZXR1cm4gbmV3IG10KHRoaXMuaCx0aGlzLmMsdGhpcy5sKzE4KihudWxsPT1sbj8xOmxuKSx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24obG4pe3JldHVybiBuZXcgbXQodGhpcy5o''@;'; put 'put ''LHRoaXMuYyx0aGlzLmwtMTgqKG51bGw9PWxuPzE6bG4pLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB2dCh0aGlzKS5yZ2IoKX19KSk7Y29uc3QgQnQ9aHQoc2Uud3gpO3ZhciBvbj1odChzZS5aUCksdHQ9MS43ODI3NyxldD0tLjI5MjI3LGx0PS0uOTA2NDksTHQ9MS45''@;'; put 'put ''NzI5NCxDdD1MdCpsdCxmdD1MdCp0dCxIdD10dCpldC0gLS4xNDg2MSpsdDtmdW5jdGlvbiBHZShsbil7aWYobG4gaW5zdGFuY2VvZiB5dClyZXR1cm4gbmV3IHl0KGxuLmgsbG4ucyxsbi5sLGxuLm9wYWNpdHkpO2xuIGluc3RhbmNlb2YgbWUuU3N8fChsbj0oMCxtZS5TVSkobG4pKTt2YXIg''@;'; put 'put ''Ym49bG4uZy8yNTUsZXI9bG4uYi8yNTUsc3I9KEh0KmVyK0N0Kihsbi5yLzI1NSktZnQqYm4pLyhIdCtDdC1mdCksWG49ZXItc3IsRnI9KEx0Kihibi1zciktZXQqWG4pL2x0LHhyPU1hdGguc3FydChGcipGcitYbipYbikvKEx0KnNyKigxLXNyKSkscXQ9eHI/TWF0aC5hdGFuMihGcixYbikq''@;'; put 'put ''TWUtMTIwOk5hTjtyZXR1cm4gbmV3IHl0KHF0PDA/cXQrMzYwOnF0LHhyLHNyLGxuLm9wYWNpdHkpfWZ1bmN0aW9uIFVlKGxuLE5uLGJuLGVyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/R2UobG4pOm5ldyB5dChsbixObixibixudWxsPT1lcj8xOmVyKX1mdW5jdGlvbiB5dChsbixO''@;'; put 'put ''bixibixlcil7dGhpcy5oPStsbix0aGlzLnM9K05uLHRoaXMubD0rYm4sdGhpcy5vcGFjaXR5PStlcn1mdW5jdGlvbiBqdChsbil7cmV0dXJuIGZ1bmN0aW9uIE5uKGJuKXtmdW5jdGlvbiBlcihzcixYbil7dmFyIEZyPWxuKChzcj1VZShzcikpLmgsKFhuPVVlKFhuKSkuaCkseHI9KDAsc2Uu''@;'; put 'put ''WlApKHNyLnMsWG4ucykscXQ9KDAsc2UuWlApKHNyLmwsWG4ubCkscHI9KDAsc2UuWlApKHNyLm9wYWNpdHksWG4ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKG5yKXtyZXR1cm4gc3IuaD1Gcihuciksc3Iucz14cihuciksc3IubD1xdChNYXRoLnBvdyhucixibikpLHNyLm9wYWNpdHk9cHIo''@;'; put 'put ''bnIpLHNyKyIifX1yZXR1cm4gYm49K2JuLGVyLmdhbW1hPU5uLGVyfSgxKX0oMCxJZS5aKSh5dCxVZSwoMCxJZS5sKShtZS5JbCx7YnJpZ2h0ZXI6ZnVuY3Rpb24obG4pe3JldHVybiBsbj1udWxsPT1sbj9tZS5KNTpNYXRoLnBvdyhtZS5KNSxsbiksbmV3IHl0KHRoaXMuaCx0aGlzLnMsdGhp''@;'; put 'put ''cy5sKmxuLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihsbil7cmV0dXJuIGxuPW51bGw9PWxuP21lLnhWOk1hdGgucG93KG1lLnhWLGxuKSxuZXcgeXQodGhpcy5oLHRoaXMucyx0aGlzLmwqbG4sdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIGxuPWlzTmFOKHRoaXMu''@;'; put 'put ''aCk/MDoodGhpcy5oKzEyMCkqVGUsTm49K3RoaXMubCxibj1pc05hTih0aGlzLnMpPzA6dGhpcy5zKk5uKigxLU5uKSxlcj1NYXRoLmNvcyhsbiksc3I9TWF0aC5zaW4obG4pO3JldHVybiBuZXcgbWUuU3MoMjU1KihObitibiooLS4xNDg2MSplcit0dCpzcikpLDI1NSooTm4rYm4qKGV0KmVy''@;'; put 'put ''K2x0KnNyKSksMjU1KihObitibiooTHQqZXIpKSx0aGlzLm9wYWNpdHkpfX0pKTtjb25zdCBKdD1qdChzZS53eCk7dmFyIGduPWp0KHNlLlpQKTtmdW5jdGlvbiBkbihsbixObil7Zm9yKHZhciBibj0wLGVyPU5uLmxlbmd0aC0xLHNyPU5uWzBdLFhuPW5ldyBBcnJheShlcjwwPzA6ZXIpO2Ju''@;'; put 'put ''PGVyOylYbltibl09bG4oc3Isc3I9Tm5bKytibl0pO3JldHVybiBmdW5jdGlvbihGcil7dmFyIHhyPU1hdGgubWF4KDAsTWF0aC5taW4oZXItMSxNYXRoLmZsb29yKEZyKj1lcikpKTtyZXR1cm4gWG5beHJdKEZyLXhyKX19ZnVuY3Rpb24geW4obG4sTm4pe2Zvcih2YXIgYm49bmV3IEFycmF5''@;'; put 'put ''KE5uKSxlcj0wO2VyPE5uOysrZXIpYm5bZXJdPWxuKGVyLyhObi0xKSk7cmV0dXJuIGJufX0sNjczODooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbWUoQixFKXtyZXR1cm4gQj0rQixFPStFLGZ1bmN0aW9uKEVlKXtyZXR1cm4gQiooMS1FZSkrRSpFZX19TC5kKEplLHtaOigp''@;'; put 'put ''PT5tZX0pfSw4NjgxMTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TC5kKEplLHtZRDooKT0+cmUsWlA6KCk9PlUsaEQ6KCk9Pmp9KTt2YXIgbWU9TCg1Mjc4NiksQj1MKDE2NzEyKSxFPUwoNjg1MjMpLEVlPUwoMzUxNDcpO2NvbnN0IFU9ZnVuY3Rpb24gYWUoWSl7dmFyIFc9KDAsRWUueWkp''@;'; put 'put ''KFkpO2Z1bmN0aW9uIE4odGUsSyl7dmFyIEo9VygodGU9KDAsbWUuQjgpKHRlKSkuciwoSz0oMCxtZS5COCkoSykpLnIpLHNlPVcodGUuZyxLLmcpLG9lPVcodGUuYixLLmIpLGNlPSgwLEVlLlpQKSh0ZS5vcGFjaXR5LEsub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGRlKXtyZXR1cm4gdGUu''@;'; put 'put ''cj1KKGRlKSx0ZS5nPXNlKGRlKSx0ZS5iPW9lKGRlKSx0ZS5vcGFjaXR5PWNlKGRlKSx0ZSsiIn19cmV0dXJuIE4uZ2FtbWE9YWUsTn0oMSk7ZnVuY3Rpb24gUShhZSl7cmV0dXJuIGZ1bmN0aW9uKFkpe3ZhciBKLHNlLFc9WS5sZW5ndGgsTj1uZXcgQXJyYXkoVyksdGU9bmV3IEFycmF5KFcp''@;'; put 'put ''LEs9bmV3IEFycmF5KFcpO2ZvcihKPTA7SjxXOysrSilzZT0oMCxtZS5COCkoWVtKXSksTltKXT1zZS5yfHwwLHRlW0pdPXNlLmd8fDAsS1tKXT1zZS5ifHwwO3JldHVybiBOPWFlKE4pLHRlPWFlKHRlKSxLPWFlKEspLHNlLm9wYWNpdHk9MSxmdW5jdGlvbihvZSl7cmV0dXJuIHNlLnI9Tihv''@;'; put 'put ''ZSksc2UuZz10ZShvZSksc2UuYj1LKG9lKSxzZSsiIn19fXZhciBqPVEoQi5aKSxyZT1RKEUuWil9LDIzMDk2OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMLmQoSmUse1o6KCk9PlF9KTt2YXIgbWU9TCg2NzM4KSxCPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQr''@;'; put 'put ''KT8vZyxFPW5ldyBSZWdFeHAoQi5zb3VyY2UsImciKTtmdW5jdGlvbiBRKGoscmUpe3ZhciBZLFcsTixhZT1CLmxhc3RJbmRleD1FLmxhc3RJbmRleD0wLHRlPS0xLEs9W10sSj1bXTtmb3Ioais9IiIscmUrPSIiOyhZPUIuZXhlYyhqKSkmJihXPUUuZXhlYyhyZSkpOykoTj1XLmluZGV4KT5h''@;'; put 'put ''ZSYmKE49cmUuc2xpY2UoYWUsTiksS1t0ZV0/S1t0ZV0rPU46S1srK3RlXT1OKSwoWT1ZWzBdKT09PShXPVdbMF0pP0tbdGVdP0tbdGVdKz1XOktbKyt0ZV09VzooS1srK3RlXT1udWxsLEoucHVzaCh7aTp0ZSx4OigwLG1lLlopKFksVyl9KSksYWU9RS5sYXN0SW5kZXg7cmV0dXJuIGFlPHJl''@;'; put 'put ''Lmxlbmd0aCYmKE49cmUuc2xpY2UoYWUpLEtbdGVdP0tbdGVdKz1OOktbKyt0ZV09TiksSy5sZW5ndGg8Mj9KWzBdP2Z1bmN0aW9uIFUoail7cmV0dXJuIGZ1bmN0aW9uKHJlKXtyZXR1cm4gaihyZSkrIiJ9fShKWzBdLngpOmZ1bmN0aW9uIEVlKGope3JldHVybiBmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBqfX0ocmUpOihyZT1KLmxlbmd0aCxmdW5jdGlvbihzZSl7Zm9yKHZhciBjZSxvZT0wO29lPHJlOysrb2UpS1soY2U9SltvZV0pLmldPWNlLngoc2UpO3JldHVybiBLLmpvaW4oIiIpfSl9fSw3NTM0OTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TC5kKEplLHtZOigpPT5OLHc6KCk9PnRl''@;'; put 'put ''fSk7dmFyIFUsUSxqLHJlLG1lPUwoNjczOCksQj0xODAvTWF0aC5QSSxFPXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIEVlKEssSixzZSxvZSxjZSxkZSl7dmFyIHZlLEFlLGtlO3JldHVybih2ZT1NYXRoLnNx''@;'; put 'put ''cnQoSypLK0oqSikpJiYoSy89dmUsSi89dmUpLChrZT1LKnNlK0oqb2UpJiYoc2UtPUsqa2Usb2UtPUoqa2UpLChBZT1NYXRoLnNxcnQoc2Uqc2Urb2Uqb2UpKSYmKHNlLz1BZSxvZS89QWUsa2UvPUFlKSxLKm9lPEoqc2UmJihLPS1LLEo9LUosa2U9LWtlLHZlPS12ZSkse3RyYW5zbGF0ZVg6''@;'; put 'put ''Y2UsdHJhbnNsYXRlWTpkZSxyb3RhdGU6TWF0aC5hdGFuMihKLEspKkIsc2tld1g6TWF0aC5hdGFuKGtlKSpCLHNjYWxlWDp2ZSxzY2FsZVk6QWV9fWZ1bmN0aW9uIFcoSyxKLHNlLG9lKXtmdW5jdGlvbiBjZShTZSl7cmV0dXJuIFNlLmxlbmd0aD9TZS5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uKFNlLEllKXt2YXIgVGU9W10sTWU9W107cmV0dXJuIFNlPUsoU2UpLEllPUsoSWUpLGZ1bmN0aW9uIGRlKFNlLEllLFRlLE1lLGhlLE8pe2lmKFNlIT09VGV8fEllIT09TWUpe3ZhciB6PWhlLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsSixudWxsLHNlKTtPLnB1c2goe2k6ei00LHg6''@;'; put 'put ''KDAsbWUuWikoU2UsVGUpfSx7aTp6LTIseDooMCxtZS5aKShJZSxNZSl9KX1lbHNlKFRlfHxNZSkmJmhlLnB1c2goInRyYW5zbGF0ZSgiK1RlK0orTWUrc2UpfShTZS50cmFuc2xhdGVYLFNlLnRyYW5zbGF0ZVksSWUudHJhbnNsYXRlWCxJZS50cmFuc2xhdGVZLFRlLE1lKSxmdW5jdGlvbiB2''@;'; put 'put ''ZShTZSxJZSxUZSxNZSl7U2UhPT1JZT8oU2UtSWU+MTgwP0llKz0zNjA6SWUtU2U+MTgwJiYoU2UrPTM2MCksTWUucHVzaCh7aTpUZS5wdXNoKGNlKFRlKSsicm90YXRlKCIsbnVsbCxvZSktMix4OigwLG1lLlopKFNlLEllKX0pKTpJZSYmVGUucHVzaChjZShUZSkrInJvdGF0ZSgiK0llK29l''@;'; put 'put ''KX0oU2Uucm90YXRlLEllLnJvdGF0ZSxUZSxNZSksZnVuY3Rpb24gQWUoU2UsSWUsVGUsTWUpe1NlIT09SWU/TWUucHVzaCh7aTpUZS5wdXNoKGNlKFRlKSsic2tld1goIixudWxsLG9lKS0yLHg6KDAsbWUuWikoU2UsSWUpfSk6SWUmJlRlLnB1c2goY2UoVGUpKyJza2V3WCgiK0llK29lKX0o''@;'; put 'put ''U2Uuc2tld1gsSWUuc2tld1gsVGUsTWUpLGZ1bmN0aW9uIGtlKFNlLEllLFRlLE1lLGhlLE8pe2lmKFNlIT09VGV8fEllIT09TWUpe3ZhciB6PWhlLnB1c2goY2UoaGUpKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTtPLnB1c2goe2k6ei00LHg6KDAsbWUuWikoU2UsVGUpfSx7aTp6LTIs''@;'; put 'put ''eDooMCxtZS5aKShJZSxNZSl9KX1lbHNlKDEhPT1UZXx8MSE9PU1lKSYmaGUucHVzaChjZShoZSkrInNjYWxlKCIrVGUrIiwiK01lKyIpIil9KFNlLnNjYWxlWCxTZS5zY2FsZVksSWUuc2NhbGVYLEllLnNjYWxlWSxUZSxNZSksU2U9SWU9bnVsbCxmdW5jdGlvbihoZSl7Zm9yKHZhciBlZSxP''@;'; put 'put ''PS0xLHo9TWUubGVuZ3RoOysrTzx6OylUZVsoZWU9TWVbT10pLmldPWVlLngoaGUpO3JldHVybiBUZS5qb2luKCIiKX19fXZhciBOPVcoZnVuY3Rpb24gYWUoSyl7cmV0dXJuIm5vbmUiPT09Sz9FOihVfHwoVT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSxRPWRvY3VtZW50LmRvY3Vt''@;'; put 'put ''ZW50RWxlbWVudCxqPWRvY3VtZW50LmRlZmF1bHRWaWV3KSxVLnN0eWxlLnRyYW5zZm9ybT1LLEs9ai5nZXRDb21wdXRlZFN0eWxlKFEuYXBwZW5kQ2hpbGQoVSksbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIiksUS5yZW1vdmVDaGlsZChVKSxFZSgrKEs9Sy5zbGljZSg3LC0x''@;'; put 'put ''KS5zcGxpdCgiLCIpKVswXSwrS1sxXSwrS1syXSwrS1szXSwrS1s0XSwrS1s1XSkpfSwicHgsICIsInB4KSIsImRlZykiKSx0ZT1XKGZ1bmN0aW9uIFkoSyl7cmV0dXJuIG51bGwhPUsmJihyZXx8KHJlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z''@;'; put 'put ''dmciLCJnIikpLHJlLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIixLKSxLPXJlLnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpP0VlKChLPUsubWF0cml4KS5hLEsuYixLLmMsSy5kLEsuZSxLLmYpOkV9LCIsICIsIikiLCIpIil9LDc2MjU3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0''@;'; put 'put ''IjtMLmQoSmUse1o6KCk9PnJlfSk7dmFyIG1lPU1hdGguU1FSVDI7ZnVuY3Rpb24gVShhZSl7cmV0dXJuKChhZT1NYXRoLmV4cChhZSkpKzEvYWUpLzJ9ZnVuY3Rpb24gcmUoYWUsWSl7dmFyIHZlLEFlLFc9YWVbMF0sTj1hZVsxXSx0ZT1hZVsyXSxzZT1ZWzJdLG9lPVlbMF0tVyxjZT1ZWzFd''@;'; put 'put ''LU4sZGU9b2Uqb2UrY2UqY2U7aWYoZGU8MWUtMTIpQWU9TWF0aC5sb2coc2UvdGUpL21lLHZlPWZ1bmN0aW9uKGhlKXtyZXR1cm5bVytoZSpvZSxOK2hlKmNlLHRlKk1hdGguZXhwKG1lKmhlKkFlKV19O2Vsc2V7dmFyIGtlPU1hdGguc3FydChkZSksU2U9KHNlKnNlLXRlKnRlKzQqZGUpLygy''@;'; put 'put ''KnRlKjIqa2UpLEllPShzZSpzZS10ZSp0ZS00KmRlKS8oMipzZSoyKmtlKSxUZT1NYXRoLmxvZyhNYXRoLnNxcnQoU2UqU2UrMSktU2UpLE1lPU1hdGgubG9nKE1hdGguc3FydChJZSpJZSsxKS1JZSk7QWU9KE1lLVRlKS9tZSx2ZT1mdW5jdGlvbihoZSl7dmFyIE89aGUqQWUsej1VKFRlKSxl''@;'; put 'put ''ZT10ZS8oMiprZSkqKHoqZnVuY3Rpb24gaihhZSl7cmV0dXJuKChhZT1NYXRoLmV4cCgyKmFlKSktMSkvKGFlKzEpfShtZSpPK1RlKS1mdW5jdGlvbiBRKGFlKXtyZXR1cm4oKGFlPU1hdGguZXhwKGFlKSktMS9hZSkvMn0oVGUpKTtyZXR1cm5bVytlZSpvZSxOK2VlKmNlLHRlKnovVShtZSpP''@;'; put 'put ''K1RlKV19fXJldHVybiB2ZS5kdXJhdGlvbj0xZTMqQWUsdmV9fSwzODE4NDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TC5yKEplKSxMLmQoSmUse3BhdGg6KCk9Pmp9KTt2YXIgbWU9TWF0aC5QSSxCPTIqbWUsRT0xZS02LEVlPUItRTtmdW5jdGlvbiBVKCl7dGhpcy5feDA9dGhpcy5feTA9''@;'; put 'put ''dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24gUSgpe3JldHVybiBuZXcgVX1VLnByb3RvdHlwZT1RLnByb3RvdHlwZT17Y29uc3RydWN0b3I6VSxtb3ZlVG86ZnVuY3Rpb24ocmUsYWUpe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rcmUpKyIsIisodGhp''@;'; put 'put ''cy5feTA9dGhpcy5feTE9K2FlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24ocmUsYWUpe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rcmUpKyIsIiso''@;'; put 'put ''dGhpcy5feTE9K2FlKX0scXVhZHJhdGljQ3VydmVUbzpmdW5jdGlvbihyZSxhZSxZLFcpe3RoaXMuXys9IlEiKyArcmUrIiwiKyArYWUrIiwiKyh0aGlzLl94MT0rWSkrIiwiKyh0aGlzLl95MT0rVyl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24ocmUsYWUsWSxXLE4sdGUpe3RoaXMuXys9IkMi''@;'; put 'put ''KyArcmUrIiwiKyArYWUrIiwiKyArWSsiLCIrICtXKyIsIisodGhpcy5feDE9K04pKyIsIisodGhpcy5feTE9K3RlKX0sYXJjVG86ZnVuY3Rpb24ocmUsYWUsWSxXLE4pe3ZhciB0ZT10aGlzLl94MSxLPXRoaXMuX3kxLEo9KFk9K1kpLShyZT0rcmUpLHNlPShXPStXKS0oYWU9K2FlKSxvZT10''@;'; put 'put ''ZS1yZSxjZT1LLWFlLGRlPW9lKm9lK2NlKmNlO2lmKChOPStOKTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK04pO2lmKG51bGw9PT10aGlzLl94MSl0aGlzLl8rPSJNIisodGhpcy5feDE9cmUpKyIsIisodGhpcy5feTE9YWUpO2Vsc2UgaWYoZGU+RSlpZihNYXRoLmFi''@;'; put 'put ''cyhjZSpKLXNlKm9lKT5FJiZOKXt2YXIgdmU9WS10ZSxBZT1XLUssa2U9SipKK3NlKnNlLFNlPXZlKnZlK0FlKkFlLEllPU1hdGguc3FydChrZSksVGU9TWF0aC5zcXJ0KGRlKSxNZT1OKk1hdGgudGFuKChtZS1NYXRoLmFjb3MoKGtlK2RlLVNlKS8oMipJZSpUZSkpKS8yKSxoZT1NZS9UZSxP''@;'; put 'put ''PU1lL0llO01hdGguYWJzKGhlLTEpPkUmJih0aGlzLl8rPSJMIisocmUraGUqb2UpKyIsIisoYWUraGUqY2UpKSx0aGlzLl8rPSJBIitOKyIsIitOKyIsMCwwLCIrICsoY2UqdmU+b2UqQWUpKyIsIisodGhpcy5feDE9cmUrTypKKSsiLCIrKHRoaXMuX3kxPWFlK08qc2UpfWVsc2UgdGhpcy5f''@;'; put 'put ''Kz0iTCIrKHRoaXMuX3gxPXJlKSsiLCIrKHRoaXMuX3kxPWFlKX0sYXJjOmZ1bmN0aW9uKHJlLGFlLFksVyxOLHRlKXtyZT0rcmUsYWU9K2FlLHRlPSEhdGU7dmFyIEs9KFk9K1kpKk1hdGguY29zKFcpLEo9WSpNYXRoLnNpbihXKSxzZT1yZStLLG9lPWFlK0osY2U9MV50ZSxkZT10ZT9XLU46''@;'; put 'put ''Ti1XO2lmKFk8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIitZKTtudWxsPT09dGhpcy5feDE/dGhpcy5fKz0iTSIrc2UrIiwiK29lOihNYXRoLmFicyh0aGlzLl94MS1zZSk+RXx8TWF0aC5hYnModGhpcy5feTEtb2UpPkUpJiYodGhpcy5fKz0iTCIrc2UrIiwiK29lKSxZ''@;'; put 'put ''JiYoZGU8MCYmKGRlPWRlJUIrQiksZGU+RWU/dGhpcy5fKz0iQSIrWSsiLCIrWSsiLDAsMSwiK2NlKyIsIisocmUtSykrIiwiKyhhZS1KKSsiQSIrWSsiLCIrWSsiLDAsMSwiK2NlKyIsIisodGhpcy5feDE9c2UpKyIsIisodGhpcy5feTE9b2UpOmRlPkUmJih0aGlzLl8rPSJBIitZKyIsIitZ''@;'; put 'put ''KyIsMCwiKyArKGRlPj1tZSkrIiwiK2NlKyIsIisodGhpcy5feDE9cmUrWSpNYXRoLmNvcyhOKSkrIiwiKyh0aGlzLl95MT1hZStZKk1hdGguc2luKE4pKSkpfSxyZWN0OmZ1bmN0aW9uKHJlLGFlLFksVyl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPStyZSkrIiwiKyh0aGlzLl95''@;'; put 'put ''MD10aGlzLl95MT0rYWUpKyJoIisgK1krInYiKyArVysiaCIrLVkrIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTtjb25zdCBqPVF9LDc1MDA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0wuZChKZSx7WjooKT0+VX0pO3ZhciBtZT1MKDM2MTc1KSxCPUwoNTM1MTcp''@;'; put 'put ''O2Z1bmN0aW9uIEUoUSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGo9dGhpcy5vd25lckRvY3VtZW50LHJlPXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiByZT09PUIuUCYmai5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09Qi5QP2ouY3JlYXRlRWxlbWVudChRKTpqLmNyZWF0ZUVsZW1l''@;'; put 'put ''bnROUyhyZSxRKX19ZnVuY3Rpb24gRWUoUSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoUS5zcGFjZSxRLmxvY2FsKX19ZnVuY3Rpb24gVShRKXt2YXIgaj0oMCxtZS5aKShRKTtyZXR1cm4oai5sb2NhbD9FZTpFKShqKX19LDY5''@;'; put 'put ''NDE1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMLnIoSmUpLEwuZChKZSx7Y2xpZW50UG9pbnQ6KCk9PlcuWixjcmVhdGU6KCk9PkUsY3JlYXRvcjooKT0+bWUuWixjdXN0b21FdmVudDooKT0+QWUuX0gsZXZlbnQ6KCk9PkFlLkIsbG9jYWw6KCk9PlUsbWF0Y2hlcjooKT0+ai5aLG1vdXNl''@;'; put 'put ''OigpPT5yZS5aLG5hbWVzcGFjZTooKT0+YWUuWixuYW1lc3BhY2VzOigpPT5ZLlosc2VsZWN0OigpPT5CLlosc2VsZWN0QWxsOigpPT50ZSxzZWxlY3Rpb246KCk9Pk4uWlAsc2VsZWN0b3I6KCk9PksuWixzZWxlY3RvckFsbDooKT0+Si5aLHN0eWxlOigpPT5zZS5TLHRvdWNoOigpPT5vZS5a''@;'; put 'put ''LHRvdWNoZXM6KCk9PmRlLHdpbmRvdzooKT0+dmUuWn0pO3ZhciBtZT1MKDc1MDApLEI9TCg1MjAxNik7ZnVuY3Rpb24gRShrZSl7cmV0dXJuKDAsQi5aKSgoMCxtZS5aKShrZSkuY2FsbChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpKX12YXIgRWU9MDtmdW5jdGlvbiBVKCl7cmV0dXJuIG5l''@;'; put 'put ''dyBRfWZ1bmN0aW9uIFEoKXt0aGlzLl89IkAiKygrK0VlKS50b1N0cmluZygzNil9US5wcm90b3R5cGU9VS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlEsZ2V0OmZ1bmN0aW9uKGtlKXtmb3IodmFyIFNlPXRoaXMuXzshKFNlIGluIGtlKTspaWYoIShrZT1rZS5wYXJlbnROb2RlKSlyZXR1cm47''@;'; put 'put ''cmV0dXJuIGtlW1NlXX0sc2V0OmZ1bmN0aW9uKGtlLFNlKXtyZXR1cm4ga2VbdGhpcy5fXT1TZX0scmVtb3ZlOmZ1bmN0aW9uKGtlKXtyZXR1cm4gdGhpcy5fIGluIGtlJiZkZWxldGUga2VbdGhpcy5fXX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX07dmFyIGo9TCg5Nzkw''@;'; put 'put ''NSkscmU9TCg2NjA3MyksYWU9TCgzNjE3NSksWT1MKDUzNTE3KSxXPUwoMjU5NDEpLE49TCg4MjcwMCk7ZnVuY3Rpb24gdGUoa2Upe3JldHVybiJzdHJpbmciPT10eXBlb2Yga2U/bmV3IE4uWTEoW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoa2UpXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVt''@;'; put 'put ''ZW50XSk6bmV3IE4uWTEoW251bGw9PWtlP1tdOmtlXSxOLkp6KX12YXIgSz1MKDI5NzQyKSxKPUwoMzIwMzcpLHNlPUwoMjQ0NzYpLG9lPUwoMzAyNTYpLGNlPUwoNzU4MTkpO2Z1bmN0aW9uIGRlKGtlLFNlKXtudWxsPT1TZSYmKFNlPSgwLGNlLlopKCkudG91Y2hlcyk7Zm9yKHZhciBJZT0w''@;'; put 'put ''LFRlPVNlP1NlLmxlbmd0aDowLE1lPW5ldyBBcnJheShUZSk7SWU8VGU7KytJZSlNZVtJZV09KDAsVy5aKShrZSxTZVtJZV0pO3JldHVybiBNZX12YXIgdmU9TCgyNDQyKSxBZT1MKDYxNzQ2KX0sOTc5MDU6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG1lKEIpe3JldHVybiBm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXMoQil9fUwuZChKZSx7WjooKT0+bWV9KX0sNjYwNzM6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0wuZChKZSx7WjooKT0+RX0pO3ZhciBtZT1MKDc1ODE5KSxCPUwoMjU5NDEpO2Z1bmN0aW9uIEUoRWUpe3ZhciBVPSgwLG1lLlopKCk7cmV0''@;'; put 'put ''dXJuIFUuY2hhbmdlZFRvdWNoZXMmJihVPVUuY2hhbmdlZFRvdWNoZXNbMF0pLCgwLEIuWikoRWUsVSl9fSwzNjE3NTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TC5kKEplLHtaOigpPT5CfSk7dmFyIG1lPUwoNTM1MTcpO2Z1bmN0aW9uIEIoRSl7dmFyIEVlPUUrPSIiLFU9RWUuaW5kZXhP''@;'; put 'put ''ZigiOiIpO3JldHVybiBVPj0wJiYieG1sbnMiIT09KEVlPUUuc2xpY2UoMCxVKSkmJihFPUUuc2xpY2UoVSsxKSksbWUuWi5oYXNPd25Qcm9wZXJ0eShFZSk/e3NwYWNlOm1lLlpbRWVdLGxvY2FsOkV9OkV9fSw1MzUxNzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TC5kKEplLHtQOigpPT5t''@;'; put 'put ''ZSxaOigpPT5CfSk7dmFyIG1lPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjtjb25zdCBCPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDptZSx4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwv''@;'; put 'put ''MTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9fSwyNTk0MTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbWUoQixFKXt2YXIgRWU9Qi5vd25lclNWR0VsZW1lbnR8fEI7aWYoRWUuY3JlYXRlU1ZHUG9pbnQpe3ZhciBVPUVlLmNy''@;'; put 'put ''ZWF0ZVNWR1BvaW50KCk7cmV0dXJuIFUueD1FLmNsaWVudFgsVS55PUUuY2xpZW50WSxbKFU9VS5tYXRyaXhUcmFuc2Zvcm0oQi5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpKS54LFUueV19dmFyIFE9Qi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bRS5jbGllbnRYLVEubGVmdC1C''@;'; put 'put ''LmNsaWVudExlZnQsRS5jbGllbnRZLVEudG9wLUIuY2xpZW50VG9wXX1MLmQoSmUse1o6KCk9Pm1lfSl9LDUyMDE2OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMLmQoSmUse1o6KCk9PkJ9KTt2YXIgbWU9TCg4MjcwMCk7ZnVuY3Rpb24gQihFKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIEU/''@;'; put 'put ''bmV3IG1lLlkxKFtbZG9jdW1lbnQucXVlcnlTZWxlY3RvcihFKV1dLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgbWUuWTEoW1tFXV0sbWUuSnopfX0sODI3MDA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0wuZChKZSx7WTE6KCk9Pm5yLFpQOigpPT5xbixKejooKT0+cHJ9KTt2''@;'; put 'put ''YXIgbWU9TCgyOTc0MiksRT1MKDMyMDM3KSxVPUwoOTc5MDUpO2Z1bmN0aW9uIGooV3Qpe3JldHVybiBuZXcgQXJyYXkoV3QubGVuZ3RoKX1mdW5jdGlvbiBhZShXdCxwbil7dGhpcy5vd25lckRvY3VtZW50PVd0Lm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9V3QubmFtZXNwYWNl''@;'; put 'put ''VVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9V3QsdGhpcy5fX2RhdGFfXz1wbn1mdW5jdGlvbiBOKFd0LHBuLEtuLE50LHNuLFVuKXtmb3IodmFyIHRuLHduPTAsem49cG4ubGVuZ3RoLFRyPVVuLmxlbmd0aDt3bjxUcjsrK3duKSh0bj1wblt3bl0pPyh0bi5fX2RhdGFfXz1Vblt3''@;'; put 'put ''bl0sTnRbd25dPXRuKTpLblt3bl09bmV3IGFlKFd0LFVuW3duXSk7Zm9yKDt3bjx6bjsrK3duKSh0bj1wblt3bl0pJiYoc25bd25dPXRuKX1mdW5jdGlvbiB0ZShXdCxwbixLbixOdCxzbixVbix3bil7dmFyIHRuLHpuLHVuLFRyPXt9LEJuPXBuLmxlbmd0aCxrcj1Vbi5sZW5ndGgsbW49bmV3''@;'; put 'put ''IEFycmF5KEJuKTtmb3IodG49MDt0bjxCbjsrK3RuKSh6bj1wblt0bl0pJiYobW5bdG5dPXVuPSIkIit3bi5jYWxsKHpuLHpuLl9fZGF0YV9fLHRuLHBuKSx1biBpbiBUcj9zblt0bl09em46VHJbdW5dPXpuKTtmb3IodG49MDt0bjxrcjsrK3RuKSh6bj1Uclt1bj0iJCIrd24uY2FsbChXdCxV''@;'; put 'put ''blt0bl0sdG4sVW4pXSk/KE50W3RuXT16bix6bi5fX2RhdGFfXz1Vblt0bl0sVHJbdW5dPW51bGwpOktuW3RuXT1uZXcgYWUoV3QsVW5bdG5dKTtmb3IodG49MDt0bjxCbjsrK3RuKSh6bj1wblt0bl0pJiZUclttblt0bl1dPT09em4mJihzblt0bl09em4pfWZ1bmN0aW9uIHZlKFd0LHBuKXty''@;'; put 'put ''ZXR1cm4gV3Q8cG4/LTE6V3Q+cG4/MTpXdD49cG4/MDpOYU59YWUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjphZSxhcHBlbmRDaGlsZDpmdW5jdGlvbihXdCl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUoV3QsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbihXdCxw''@;'; put 'put ''bil7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUoV3QscG4pfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKFd0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3IoV3QpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKFd0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5''@;'; put 'put ''U2VsZWN0b3JBbGwoV3QpfX07dmFyIGhlPUwoMzYxNzUpO2Z1bmN0aW9uIE8oV3Qpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKFd0KX19ZnVuY3Rpb24geihXdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhXdC5zcGFjZSxXdC5sb2Nh''@;'; put 'put ''bCl9fWZ1bmN0aW9uIGVlKFd0LHBuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZShXdCxwbil9fWZ1bmN0aW9uIG5lKFd0LHBuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKFd0LnNwYWNlLFd0LmxvY2FsLHBuKX19ZnVuY3Rpb24geChXdCxwbil7''@;'; put 'put ''cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIEtuPXBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1Lbj90aGlzLnJlbW92ZUF0dHJpYnV0ZShXdCk6dGhpcy5zZXRBdHRyaWJ1dGUoV3QsS24pfX1mdW5jdGlvbiBQKFd0LHBuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgS249cG4uYXBwbHkodGhp''@;'; put 'put ''cyxhcmd1bWVudHMpO251bGw9PUtuP3RoaXMucmVtb3ZlQXR0cmlidXRlTlMoV3Quc3BhY2UsV3QubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlMoV3Quc3BhY2UsV3QubG9jYWwsS24pfX12YXIgVD1MKDI0NDc2KTtmdW5jdGlvbiBTKFd0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhp''@;'; put 'put ''c1tXdF19fWZ1bmN0aW9uIEYoV3QscG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXNbV3RdPXBufX1mdW5jdGlvbiB5ZShXdCxwbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIEtuPXBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1Lbj9kZWxldGUgdGhpc1tXdF06dGhpc1tXdF09S259fWZ1''@;'; put 'put ''bmN0aW9uIERlKFd0KXtyZXR1cm4gV3QudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIFBlKFd0KXtyZXR1cm4gV3QuY2xhc3NMaXN0fHxuZXcgUWUoV3QpfWZ1bmN0aW9uIFFlKFd0KXt0aGlzLl9ub2RlPVd0LHRoaXMuX25hbWVzPURlKFd0LmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8''@;'; put 'put ''IiIpfWZ1bmN0aW9uICRlKFd0LHBuKXtmb3IodmFyIEtuPVBlKFd0KSxOdD0tMSxzbj1wbi5sZW5ndGg7KytOdDxzbjspS24uYWRkKHBuW050XSl9ZnVuY3Rpb24gZ3QoV3QscG4pe2Zvcih2YXIgS249UGUoV3QpLE50PS0xLHNuPXBuLmxlbmd0aDsrK050PHNuOylLbi5yZW1vdmUocG5bTnRd''@;'; put 'put ''KX1mdW5jdGlvbiB3dChXdCl7cmV0dXJuIGZ1bmN0aW9uKCl7JGUodGhpcyxXdCl9fWZ1bmN0aW9uIG10KFd0KXtyZXR1cm4gZnVuY3Rpb24oKXtndCh0aGlzLFd0KX19ZnVuY3Rpb24gdnQoV3QscG4pe3JldHVybiBmdW5jdGlvbigpeyhwbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk/JGU6Z3Qp''@;'; put 'put ''KHRoaXMsV3QpfX1mdW5jdGlvbiBodCgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gQnQoV3Qpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9V3R9fWZ1bmN0aW9uIG9uKFd0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcG49V3QuYXBwbHkodGhpcyxhcmd1bWVudHMp''@;'; put 'put ''O3RoaXMudGV4dENvbnRlbnQ9bnVsbD09cG4/IiI6cG59fWZ1bmN0aW9uIHR0KCl7dGhpcy5pbm5lckhUTUw9IiJ9ZnVuY3Rpb24gZXQoV3Qpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPVd0fX1mdW5jdGlvbiBsdChXdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHBuPVd0LmFw''@;'; put 'put ''cGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1wbj8iIjpwbn19ZnVuY3Rpb24gQ3QoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gSHQoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnRO''@;'; put 'put ''b2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1RZS5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbihXdCl7dGhpcy5fbmFtZXMuaW5kZXhPZihXdCk8MCYmKHRoaXMuX25hbWVzLnB1c2goV3QpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhp''@;'; put 'put ''cy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbihXdCl7dmFyIHBuPXRoaXMuX25hbWVzLmluZGV4T2YoV3QpO3BuPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKHBuLDEpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LGNv''@;'; put 'put ''bnRhaW5zOmZ1bmN0aW9uKFd0KXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZihXdCk+PTB9fTt2YXIgVWU9TCg3NTAwKTtmdW5jdGlvbiBqdCgpe3JldHVybiBudWxsfWZ1bmN0aW9uIGduKCl7dmFyIFd0PXRoaXMucGFyZW50Tm9kZTtXdCYmV3QucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rp''@;'; put 'put ''b24geW4oKXt2YXIgV3Q9dGhpcy5jbG9uZU5vZGUoITEpLHBuPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gcG4/cG4uaW5zZXJ0QmVmb3JlKFd0LHRoaXMubmV4dFNpYmxpbmcpOld0fWZ1bmN0aW9uIGxuKCl7dmFyIFd0PXRoaXMuY2xvbmVOb2RlKCEwKSxwbj10aGlzLnBhcmVudE5vZGU7cmV0''@;'; put 'put ''dXJuIHBuP3BuLmluc2VydEJlZm9yZShXdCx0aGlzLm5leHRTaWJsaW5nKTpXdH12YXIgZXI9TCg2MTc0Niksc3I9TCgyNDQyKTtmdW5jdGlvbiBYbihXdCxwbixLbil7dmFyIE50PSgwLHNyLlopKFd0KSxzbj1OdC5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2Ygc24/c249bmV3IHNu''@;'; put 'put ''KHBuLEtuKTooc249TnQuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50IiksS24/KHNuLmluaXRFdmVudChwbixLbi5idWJibGVzLEtuLmNhbmNlbGFibGUpLHNuLmRldGFpbD1Lbi5kZXRhaWwpOnNuLmluaXRFdmVudChwbiwhMSwhMSkpLFd0LmRpc3BhdGNoRXZlbnQoc24pfWZ1bmN0aW9u''@;'; put 'put ''IEZyKFd0LHBuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gWG4odGhpcyxXdCxwbil9fWZ1bmN0aW9uIHhyKFd0LHBuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gWG4odGhpcyxXdCxwbi5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX12YXIgcHI9W251bGxdO2Z1bmN0aW9uIG5yKFd0LHBu''@;'; put 'put ''KXt0aGlzLl9ncm91cHM9V3QsdGhpcy5fcGFyZW50cz1wbn1mdW5jdGlvbiBBbigpe3JldHVybiBuZXcgbnIoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxwcil9bnIucHJvdG90eXBlPUFuLnByb3RvdHlwZT17Y29uc3RydWN0b3I6bnIsc2VsZWN0OmZ1bmN0aW9uIEIoV3QpeyJmdW5j''@;'; put 'put ''dGlvbiIhPXR5cGVvZiBXdCYmKFd0PSgwLG1lLlopKFd0KSk7Zm9yKHZhciBwbj10aGlzLl9ncm91cHMsS249cG4ubGVuZ3RoLE50PW5ldyBBcnJheShLbiksc249MDtzbjxLbjsrK3NuKWZvcih2YXIgem4sVHIsVW49cG5bc25dLHduPVVuLmxlbmd0aCx0bj1OdFtzbl09bmV3IEFycmF5KHdu''@;'; put 'put ''KSxCbj0wO0JuPHduOysrQm4pKHpuPVVuW0JuXSkmJihUcj1XdC5jYWxsKHpuLHpuLl9fZGF0YV9fLEJuLFVuKSkmJigiX19kYXRhX18iaW4gem4mJihUci5fX2RhdGFfXz16bi5fX2RhdGFfXyksdG5bQm5dPVRyKTtyZXR1cm4gbmV3IG5yKE50LHRoaXMuX3BhcmVudHMpfSxzZWxlY3RBbGw6''@;'; put 'put ''ZnVuY3Rpb24gRWUoV3QpeyJmdW5jdGlvbiIhPXR5cGVvZiBXdCYmKFd0PSgwLEUuWikoV3QpKTtmb3IodmFyIHBuPXRoaXMuX2dyb3VwcyxLbj1wbi5sZW5ndGgsTnQ9W10sc249W10sVW49MDtVbjxLbjsrK1VuKWZvcih2YXIgem4sd249cG5bVW5dLHRuPXduLmxlbmd0aCxUcj0wO1RyPHRu''@;'; put 'put ''OysrVHIpKHpuPXduW1RyXSkmJihOdC5wdXNoKFd0LmNhbGwoem4sem4uX19kYXRhX18sVHIsd24pKSxzbi5wdXNoKHpuKSk7cmV0dXJuIG5ldyBucihOdCxzbil9LGZpbHRlcjpmdW5jdGlvbiBRKFd0KXsiZnVuY3Rpb24iIT10eXBlb2YgV3QmJihXdD0oMCxVLlopKFd0KSk7Zm9yKHZhciBw''@;'; put 'put ''bj10aGlzLl9ncm91cHMsS249cG4ubGVuZ3RoLE50PW5ldyBBcnJheShLbiksc249MDtzbjxLbjsrK3NuKWZvcih2YXIgem4sVW49cG5bc25dLHduPVVuLmxlbmd0aCx0bj1OdFtzbl09W10sVHI9MDtUcjx3bjsrK1RyKSh6bj1VbltUcl0pJiZXdC5jYWxsKHpuLHpuLl9fZGF0YV9fLFRyLFVu''@;'; put 'put ''KSYmdG4ucHVzaCh6bik7cmV0dXJuIG5ldyBucihOdCx0aGlzLl9wYXJlbnRzKX0sZGF0YTpmdW5jdGlvbiBLKFd0LHBuKXtpZighV3QpcmV0dXJuIHVuPW5ldyBBcnJheSh0aGlzLnNpemUoKSksVHI9LTEsdGhpcy5lYWNoKGZ1bmN0aW9uKG9yKXt1blsrK1RyXT1vcn0pLHVuO3ZhciBLbj1w''@;'; put 'put ''bj90ZTpOLE50PXRoaXMuX3BhcmVudHMsc249dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiBXdCYmKFd0PWZ1bmN0aW9uIFkoV3Qpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBXdH19KFd0KSk7Zm9yKHZhciBVbj1zbi5sZW5ndGgsd249bmV3IEFycmF5KFVuKSx0bj1uZXcgQXJy''@;'; put 'put ''YXkoVW4pLHpuPW5ldyBBcnJheShVbiksVHI9MDtUcjxVbjsrK1RyKXt2YXIgQm49TnRbVHJdLGtyPXNuW1RyXSxtbj1rci5sZW5ndGgsdW49V3QuY2FsbChCbixCbiYmQm4uX19kYXRhX18sVHIsTnQpLGNuPXVuLmxlbmd0aCxfbj10bltUcl09bmV3IEFycmF5KGNuKSxHdD13bltUcl09bmV3''@;'; put 'put ''IEFycmF5KGNuKTtLbihCbixrcixfbixHdCx6bltUcl09bmV3IEFycmF5KG1uKSx1bixwbik7Zm9yKHZhciBJbixKbixWbj0wLGVuPTA7Vm48Y247KytWbilpZihJbj1fbltWbl0pe2ZvcihWbj49ZW4mJihlbj1WbisxKTshKEpuPUd0W2VuXSkmJisrZW48Y247KTtJbi5fbmV4dD1Kbnx8bnVs''@;'; put 'put ''bH19cmV0dXJuKHduPW5ldyBucih3bixOdCkpLl9lbnRlcj10bix3bi5fZXhpdD16bix3bn0sZW50ZXI6ZnVuY3Rpb24gcmUoKXtyZXR1cm4gbmV3IG5yKHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKGopLHRoaXMuX3BhcmVudHMpfSxleGl0OmZ1bmN0aW9uIEooKXtyZXR1cm4gbmV3''@;'; put 'put ''IG5yKHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAoaiksdGhpcy5fcGFyZW50cyl9LGpvaW46ZnVuY3Rpb24gc2UoV3QscG4sS24pe3ZhciBOdD10aGlzLmVudGVyKCksc249dGhpcyxVbj10aGlzLmV4aXQoKTtyZXR1cm4gTnQ9ImZ1bmN0aW9uIj09dHlwZW9mIFd0P1d0KE50KTpOdC5h''@;'; put 'put ''cHBlbmQoV3QrIiIpLG51bGwhPXBuJiYoc249cG4oc24pKSxudWxsPT1Lbj9Vbi5yZW1vdmUoKTpLbihVbiksTnQmJnNuP050Lm1lcmdlKHNuKS5vcmRlcigpOnNufSxtZXJnZTpmdW5jdGlvbiBvZShXdCl7Zm9yKHZhciBwbj10aGlzLl9ncm91cHMsS249V3QuX2dyb3VwcyxOdD1wbi5sZW5n''@;'; put 'put ''dGgsVW49TWF0aC5taW4oTnQsS24ubGVuZ3RoKSx3bj1uZXcgQXJyYXkoTnQpLHRuPTA7dG48VW47Kyt0bilmb3IodmFyIG1uLHpuPXBuW3RuXSxUcj1Lblt0bl0sQm49em4ubGVuZ3RoLGtyPXduW3RuXT1uZXcgQXJyYXkoQm4pLHVuPTA7dW48Qm47Kyt1bikobW49em5bdW5dfHxUclt1bl0p''@;'; put 'put ''JiYoa3JbdW5dPW1uKTtmb3IoO3RuPE50OysrdG4pd25bdG5dPXBuW3RuXTtyZXR1cm4gbmV3IG5yKHduLHRoaXMuX3BhcmVudHMpfSxvcmRlcjpmdW5jdGlvbiBjZSgpe2Zvcih2YXIgV3Q9dGhpcy5fZ3JvdXBzLHBuPS0xLEtuPVd0Lmxlbmd0aDsrK3BuPEtuOylmb3IodmFyIHduLE50PVd0''@;'; put 'put ''W3BuXSxzbj1OdC5sZW5ndGgtMSxVbj1OdFtzbl07LS1zbj49MDspKHduPU50W3NuXSkmJihVbiYmNF53bi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihVbikmJlVuLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHduLFVuKSxVbj13bik7cmV0dXJuIHRoaXN9LHNvcnQ6ZnVuY3Rpb24gZGUoV3Qp''@;'; put 'put ''e2Z1bmN0aW9uIHBuKGtyLG1uKXtyZXR1cm4ga3ImJm1uP1d0KGtyLl9fZGF0YV9fLG1uLl9fZGF0YV9fKToha3ItIW1ufVd0fHwoV3Q9dmUpO2Zvcih2YXIgS249dGhpcy5fZ3JvdXBzLE50PUtuLmxlbmd0aCxzbj1uZXcgQXJyYXkoTnQpLFVuPTA7VW48TnQ7KytVbil7Zm9yKHZhciBUcix3''@;'; put 'put ''bj1LbltVbl0sdG49d24ubGVuZ3RoLHpuPXNuW1VuXT1uZXcgQXJyYXkodG4pLEJuPTA7Qm48dG47KytCbikoVHI9d25bQm5dKSYmKHpuW0JuXT1Ucik7em4uc29ydChwbil9cmV0dXJuIG5ldyBucihzbix0aGlzLl9wYXJlbnRzKS5vcmRlcigpfSxjYWxsOmZ1bmN0aW9uIEFlKCl7dmFyIFd0''@;'; put 'put ''PWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsV3QuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uIGtlKCl7dmFyIFd0PW5ldyBBcnJheSh0aGlzLnNpemUoKSkscG49LTE7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1d0WysrcG5dPXRo''@;'; put 'put ''aXN9KSxXdH0sbm9kZTpmdW5jdGlvbiBTZSgpe2Zvcih2YXIgV3Q9dGhpcy5fZ3JvdXBzLHBuPTAsS249V3QubGVuZ3RoO3BuPEtuOysrcG4pZm9yKHZhciBOdD1XdFtwbl0sc249MCxVbj1OdC5sZW5ndGg7c248VW47Kytzbil7dmFyIHduPU50W3NuXTtpZih3bilyZXR1cm4gd259cmV0dXJu''@;'; put 'put ''IG51bGx9LHNpemU6ZnVuY3Rpb24gSWUoKXt2YXIgV3Q9MDtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7KytXdH0pLFd0fSxlbXB0eTpmdW5jdGlvbiBUZSgpe3JldHVybiF0aGlzLm5vZGUoKX0sZWFjaDpmdW5jdGlvbiBNZShXdCl7Zm9yKHZhciBwbj10aGlzLl9ncm91cHMsS249MCxO''@;'; put 'put ''dD1wbi5sZW5ndGg7S248TnQ7KytLbilmb3IodmFyIHRuLHNuPXBuW0tuXSxVbj0wLHduPXNuLmxlbmd0aDtVbjx3bjsrK1VuKSh0bj1zbltVbl0pJiZXdC5jYWxsKHRuLHRuLl9fZGF0YV9fLFVuLHNuKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbiBWKFd0LHBuKXt2YXIgS249KDAsaGUu''@;'; put 'put ''WikoV3QpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIE50PXRoaXMubm9kZSgpO3JldHVybiBLbi5sb2NhbD9OdC5nZXRBdHRyaWJ1dGVOUyhLbi5zcGFjZSxLbi5sb2NhbCk6TnQuZ2V0QXR0cmlidXRlKEtuKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1wbj9Lbi5sb2NhbD96Ok86ImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIHBuP0tuLmxvY2FsP1A6eDpLbi5sb2NhbD9uZTplZSkoS24scG4pKX0sc3R5bGU6VC5aLHByb3BlcnR5OmZ1bmN0aW9uIENlKFd0LHBuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09cG4/UzoiZnVuY3Rpb24iPT10eXBlb2YgcG4/''@;'; put 'put ''eWU6RikoV3QscG4pKTp0aGlzLm5vZGUoKVtXdF19LGNsYXNzZWQ6ZnVuY3Rpb24gQXQoV3QscG4pe3ZhciBLbj1EZShXdCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIE50PVBlKHRoaXMubm9kZSgpKSxzbj0tMSxVbj1Lbi5sZW5ndGg7KytzbjxVbjspaWYoIU50LmNvbnRh''@;'; put 'put ''aW5zKEtuW3NuXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHBuP3Z0OnBuP3d0Om10KShLbixwbikpfSx0ZXh0OmZ1bmN0aW9uIF90KFd0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09V3Q/aHQ6KCJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBXdD9vbjpCdCkoV3QpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0saHRtbDpmdW5jdGlvbiBMdChXdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PVd0P3R0OigiZnVuY3Rpb24iPT10eXBlb2YgV3Q/bHQ6ZXQpKFd0KSk6dGhpcy5ub2Rl''@;'; put 'put ''KCkuaW5uZXJIVE1MfSxyYWlzZTpmdW5jdGlvbiBmdCgpe3JldHVybiB0aGlzLmVhY2goQ3QpfSxsb3dlcjpmdW5jdGlvbiBHZSgpe3JldHVybiB0aGlzLmVhY2goSHQpfSxhcHBlbmQ6ZnVuY3Rpb24geXQoV3Qpe3ZhciBwbj0iZnVuY3Rpb24iPT10eXBlb2YgV3Q/V3Q6KDAsVWUuWikoV3Qp''@;'; put 'put ''O3JldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKHBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KX0saW5zZXJ0OmZ1bmN0aW9uIEp0KFd0LHBuKXt2YXIgS249ImZ1bmN0aW9uIj09dHlwZW9mIFd0P1d0OigwLFVlLlopKFd0KSxOdD1udWxsPT1w''@;'; put 'put ''bj9qdDoiZnVuY3Rpb24iPT10eXBlb2YgcG4/cG46KDAsbWUuWikocG4pO3JldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShLbi5hcHBseSh0aGlzLGFyZ3VtZW50cyksTnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pfSxyZW1vdmU6''@;'; put 'put ''ZnVuY3Rpb24gZG4oKXtyZXR1cm4gdGhpcy5lYWNoKGduKX0sY2xvbmU6ZnVuY3Rpb24gTm4oV3Qpe3JldHVybiB0aGlzLnNlbGVjdChXdD9sbjp5bil9LGRhdHVtOmZ1bmN0aW9uIGJuKFd0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsV3QpOnRo''@;'; put 'put ''aXMubm9kZSgpLl9fZGF0YV9ffSxvbjplci5aUCxkaXNwYXRjaDpmdW5jdGlvbiBxdChXdCxwbil7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHBuP3hyOkZyKShXdCxwbikpfX07Y29uc3QgcW49QW59LDYxNzQ2OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMLmQoSmUs''@;'; put 'put ''e0I6KCk9PkIsWlA6KCk9PmFlLF9IOigpPT5ZfSk7dmFyIG1lPXt9LEI9bnVsbDtmdW5jdGlvbiBFZShXLE4sdGUpe3JldHVybiBXPVUoVyxOLHRlKSxmdW5jdGlvbihLKXt2YXIgSj1LLnJlbGF0ZWRUYXJnZXQ7KCFKfHxKIT09dGhpcyYmISg4JkouY29tcGFyZURvY3VtZW50UG9zaXRpb24o''@;'; put 'put ''dGhpcykpKSYmVy5jYWxsKHRoaXMsSyl9fWZ1bmN0aW9uIFUoVyxOLHRlKXtyZXR1cm4gZnVuY3Rpb24oSyl7dmFyIEo9QjtCPUs7dHJ5e1cuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sTix0ZSl9ZmluYWxseXtCPUp9fX1mdW5jdGlvbiBRKFcpe3JldHVybiBXLnRyaW0oKS5zcGxpdCgvXnxc''@;'; put 'put ''cysvKS5tYXAoZnVuY3Rpb24oTil7dmFyIHRlPSIiLEs9Ti5pbmRleE9mKCIuIik7cmV0dXJuIEs+PTAmJih0ZT1OLnNsaWNlKEsrMSksTj1OLnNsaWNlKDAsSykpLHt0eXBlOk4sbmFtZTp0ZX19KX1mdW5jdGlvbiBqKFcpe3JldHVybiBmdW5jdGlvbigpe3ZhciBOPXRoaXMuX19vbjtpZihO''@;'; put 'put ''KXtmb3IodmFyIHNlLHRlPTAsSz0tMSxKPU4ubGVuZ3RoO3RlPEo7Kyt0ZSlzZT1OW3RlXSxXLnR5cGUmJnNlLnR5cGUhPT1XLnR5cGV8fHNlLm5hbWUhPT1XLm5hbWU/TlsrK0tdPXNlOnRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzZS50eXBlLHNlLmxpc3RlbmVyLHNlLmNhcHR1cmUpOysr''@;'; put 'put ''Sz9OLmxlbmd0aD1LOmRlbGV0ZSB0aGlzLl9fb259fX1mdW5jdGlvbiByZShXLE4sdGUpe3ZhciBLPW1lLmhhc093blByb3BlcnR5KFcudHlwZSk/RWU6VTtyZXR1cm4gZnVuY3Rpb24oSixzZSxvZSl7dmFyIGRlLGNlPXRoaXMuX19vbix2ZT1LKE4sc2Usb2UpO2lmKGNlKWZvcih2YXIgQWU9''@;'; put 'put ''MCxrZT1jZS5sZW5ndGg7QWU8a2U7KytBZSlpZigoZGU9Y2VbQWVdKS50eXBlPT09Vy50eXBlJiZkZS5uYW1lPT09Vy5uYW1lKXJldHVybiB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZGUudHlwZSxkZS5saXN0ZW5lcixkZS5jYXB0dXJlKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZGUudHlw''@;'; put 'put ''ZSxkZS5saXN0ZW5lcj12ZSxkZS5jYXB0dXJlPXRlKSx2b2lkKGRlLnZhbHVlPU4pO3RoaXMuYWRkRXZlbnRMaXN0ZW5lcihXLnR5cGUsdmUsdGUpLGRlPXt0eXBlOlcudHlwZSxuYW1lOlcubmFtZSx2YWx1ZTpOLGxpc3RlbmVyOnZlLGNhcHR1cmU6dGV9LGNlP2NlLnB1c2goZGUpOnRoaXMu''@;'; put 'put ''X19vbj1bZGVdfX1mdW5jdGlvbiBhZShXLE4sdGUpe3ZhciBKLG9lLEs9UShXKyIiKSxzZT1LLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2ZvcihjZT1OP3JlOmosbnVsbD09dGUmJih0ZT0hMSksSj0wO0o8c2U7KytKKXRoaXMuZWFjaChjZShLW0pdLE4sdGUpKTtyZXR1cm4g''@;'; put 'put ''dGhpc312YXIgY2U9dGhpcy5ub2RlKCkuX19vbjtpZihjZSlmb3IodmFyIEFlLGRlPTAsdmU9Y2UubGVuZ3RoO2RlPHZlOysrZGUpZm9yKEo9MCxBZT1jZVtkZV07SjxzZTsrK0opaWYoKG9lPUtbSl0pLnR5cGU9PT1BZS50eXBlJiZvZS5uYW1lPT09QWUubmFtZSlyZXR1cm4gQWUudmFsdWV9''@;'; put 'put ''ZnVuY3Rpb24gWShXLE4sdGUsSyl7dmFyIEo9QjtXLnNvdXJjZUV2ZW50PUIsQj1XO3RyeXtyZXR1cm4gTi5hcHBseSh0ZSxLKX1maW5hbGx5e0I9Sn19InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmKCJvbm1vdXNlZW50ZXIiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHwobWU9''@;'; put 'put ''e21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSkpfSwyNDQ3NjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TC5kKEplLHtTOigpPT5RLFo6KCk9PlV9KTt2YXIgbWU9TCgyNDQyKTtmdW5jdGlvbiBCKGope3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUu''@;'; put 'put ''cmVtb3ZlUHJvcGVydHkoail9fWZ1bmN0aW9uIEUoaixyZSxhZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShqLHJlLGFlKX19ZnVuY3Rpb24gRWUoaixyZSxhZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIFk9cmUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9''@;'; put 'put ''PVk/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShqKTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KGosWSxhZSl9fWZ1bmN0aW9uIFUoaixyZSxhZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PXJlP0I6ImZ1bmN0aW9uIj09dHlwZW9mIHJlP0VlOkUpKGoscmUs''@;'; put 'put ''bnVsbD09YWU/IiI6YWUpKTpRKHRoaXMubm9kZSgpLGopfWZ1bmN0aW9uIFEoaixyZSl7cmV0dXJuIGouc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShyZSl8fCgwLG1lLlopKGopLmdldENvbXB1dGVkU3R5bGUoaixudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHJlKX19LDI5NzQyOihYZSxKZSxMKT0+''@;'; put 'put ''eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtZSgpe31mdW5jdGlvbiBCKEUpe3JldHVybiBudWxsPT1FP21lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvcihFKX19TC5kKEplLHtaOigpPT5CfSl9LDMyMDM3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtZSgp''@;'; put 'put ''e3JldHVybltdfWZ1bmN0aW9uIEIoRSl7cmV0dXJuIG51bGw9PUU/bWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKEUpfX1MLmQoSmUse1o6KCk9PkJ9KX0sNzU4MTk6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0wuZChKZSx7WjooKT0+Qn0pO3ZhciBtZT1MKDYx''@;'; put 'put ''NzQ2KTtmdW5jdGlvbiBCKCl7Zm9yKHZhciBFZSxFPW1lLkI7RWU9RS5zb3VyY2VFdmVudDspRT1FZTtyZXR1cm4gRX19LDMwMjU2OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMLmQoSmUse1o6KCk9PkV9KTt2YXIgbWU9TCg3NTgxOSksQj1MKDI1OTQxKTtmdW5jdGlvbiBFKEVlLFUsUSl7''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aDwzJiYoUT1VLFU9KDAsbWUuWikoKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciBhZSxqPTAscmU9VT9VLmxlbmd0aDowO2o8cmU7KytqKWlmKChhZT1VW2pdKS5pZGVudGlmaWVyPT09USlyZXR1cm4oMCxCLlopKEVlLGFlKTtyZXR1cm4gbnVsbH19LDI0NDI6KFhl''@;'; put 'put ''LEplLEwpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG1lKEIpe3JldHVybiBCLm93bmVyRG9jdW1lbnQmJkIub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8Qi5kb2N1bWVudCYmQnx8Qi5kZWZhdWx0Vmlld31MLmQoSmUse1o6KCk9Pm1lfSl9LDU2ODQyOihYZSxKZSxMKT0+eyJ1c2Ugc3Ry''@;'; put 'put ''aWN0IjtMLnIoSmUpLEwuZChKZSx7aW50ZXJ2YWw6KCk9PkUsbm93OigpPT5tZS56Tyx0aW1lb3V0OigpPT5CLlosdGltZXI6KCk9Pm1lLkhULHRpbWVyRmx1c2g6KCk9Pm1lLlI4fSk7dmFyIG1lPUwoNDkxOTQpLEI9TCg3MzMzOSk7ZnVuY3Rpb24gRShFZSxVLFEpe3ZhciBqPW5ldyBtZS5C''@;'; put 'put ''NyxyZT1VO3JldHVybiBudWxsPT1VPyhqLnJlc3RhcnQoRWUsVSxRKSxqKTooVT0rVSxRPW51bGw9PVE/KDAsbWUuek8pKCk6K1Esai5yZXN0YXJ0KGZ1bmN0aW9uIGFlKFkpe1krPXJlLGoucmVzdGFydChhZSxyZSs9VSxRKSxFZShZKX0sVSxRKSxqKX19LDczMzM5OihYZSxKZSxMKT0+eyJ1''@;'; put 'put ''c2Ugc3RyaWN0IjtMLmQoSmUse1o6KCk9PkJ9KTt2YXIgbWU9TCg0OTE5NCk7ZnVuY3Rpb24gQihFLEVlLFUpe3ZhciBRPW5ldyBtZS5CNztyZXR1cm4gUS5yZXN0YXJ0KGZ1bmN0aW9uKGope1Euc3RvcCgpLEUoaitFZSl9LEVlPW51bGw9PUVlPzA6K0VlLFUpLFF9fSw0OTE5NDooWGUsSmUs''@;'; put 'put ''TCk9PnsidXNlIHN0cmljdCI7TC5kKEplLHtCNzooKT0+SyxIVDooKT0+SixSODooKT0+c2Usek86KCk9Pk59KTt2YXIgVSxRLG1lPTAsQj0wLEU9MCxqPTAscmU9MCxhZT0wLFk9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUs''@;'; put 'put ''Vz0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KTpmdW5jdGlvbihBZSl7c2V0VGltZW91dChBZSwxNyl9O2Z1bmN0aW9uIE4oKXtyZXR1cm4gcmV8fChXKHRlKSxyZT1Z''@;'; put 'put ''Lm5vdygpK2FlKX1mdW5jdGlvbiB0ZSgpe3JlPTB9ZnVuY3Rpb24gSygpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gSihBZSxrZSxTZSl7dmFyIEllPW5ldyBLO3JldHVybiBJZS5yZXN0YXJ0KEFlLGtlLFNlKSxJZX1mdW5jdGlvbiBzZSgpe04oKSwr''@;'; put 'put ''K21lO2Zvcih2YXIga2UsQWU9VTtBZTspKGtlPXJlLUFlLl90aW1lKT49MCYmQWUuX2NhbGwuY2FsbChudWxsLGtlKSxBZT1BZS5fbmV4dDstLW1lfWZ1bmN0aW9uIG9lKCl7cmU9KGo9WS5ub3coKSkrYWUsbWU9Qj0wO3RyeXtzZSgpfWZpbmFsbHl7bWU9MCxmdW5jdGlvbiBkZSgpe2Zvcih2''@;'; put 'put ''YXIgQWUsU2Usa2U9VSxJZT0xLzA7a2U7KWtlLl9jYWxsPyhJZT5rZS5fdGltZSYmKEllPWtlLl90aW1lKSxBZT1rZSxrZT1rZS5fbmV4dCk6KFNlPWtlLl9uZXh0LGtlLl9uZXh0PW51bGwsa2U9QWU/QWUuX25leHQ9U2U6VT1TZSk7UT1BZSx2ZShJZSl9KCkscmU9MH19ZnVuY3Rpb24gY2Uo''@;'; put 'put ''KXt2YXIgQWU9WS5ub3coKSxrZT1BZS1qO2tlPjFlMyYmKGFlLT1rZSxqPUFlKX1mdW5jdGlvbiB2ZShBZSl7bWV8fChCJiYoQj1jbGVhclRpbWVvdXQoQikpLEFlLXJlPjI0PyhBZTwxLzAmJihCPXNldFRpbWVvdXQob2UsQWUtWS5ub3coKS1hZSkpLEUmJihFPWNsZWFySW50ZXJ2YWwoRSkp''@;'; put 'put ''KTooRXx8KGo9WS5ub3coKSxFPXNldEludGVydmFsKGNlLDFlMykpLG1lPTEsVyhvZSkpKX1LLnByb3RvdHlwZT1KLnByb3RvdHlwZT17Y29uc3RydWN0b3I6SyxyZXN0YXJ0OmZ1bmN0aW9uKEFlLGtlLFNlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgQWUpdGhyb3cgbmV3IFR5cGVFcnJvcigi''@;'; put 'put ''Y2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtTZT0obnVsbD09U2U/TigpOitTZSkrKG51bGw9PWtlPzA6K2tlKSwhdGhpcy5fbmV4dCYmUSE9PXRoaXMmJihRP1EuX25leHQ9dGhpczpVPXRoaXMsUT10aGlzKSx0aGlzLl9jYWxsPUFlLHRoaXMuX3RpbWU9U2UsdmUoKX0sc3RvcDpmdW5j''@;'; put 'put ''dGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsdmUoKSl9fX0sNDA4MjI6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0wucihKZSksTC5kKEplLHthY3RpdmU6KCk9Pl9uLGludGVycnVwdDooKT0+ZGUsdHJhbnNpdGlvbjooKT0+VW59KTt2YXIgbWU9''@;'; put 'put ''TCg4MjcwMCksQj1MKDI1OTIyKSxFPUwoNDkxOTQpLEVlPUwoNzMzMzkpLFU9KDAsQi5aKSgic3RhcnQiLCJlbmQiLCJjYW5jZWwiLCJpbnRlcnJ1cHQiKSxRPVtdO2Z1bmN0aW9uIEsoR3Qsa24sVm4sZW4sSW4sSm4pe3ZhciBvcj1HdC5fX3RyYW5zaXRpb247aWYob3Ipe2lmKFZuIGluIG9y''@;'; put 'put ''KXJldHVybn1lbHNlIEd0Ll9fdHJhbnNpdGlvbj17fTshZnVuY3Rpb24gY2UoR3Qsa24sVm4pe3ZhciBJbixlbj1HdC5fX3RyYW5zaXRpb247ZnVuY3Rpb24gb3IoVnIpe3ZhciBpaSxScixsaSxNaTtpZigxIT09Vm4uc3RhdGUpcmV0dXJuIEtyKCk7Zm9yKGlpIGluIGVuKWlmKChNaT1lbltp''@;'; put 'put ''aV0pLm5hbWU9PT1Wbi5uYW1lKXtpZigzPT09TWkuc3RhdGUpcmV0dXJuKDAsRWUuWikob3IpOzQ9PT1NaS5zdGF0ZT8oTWkuc3RhdGU9NixNaS50aW1lci5zdG9wKCksTWkub24uY2FsbCgiaW50ZXJydXB0IixHdCxHdC5fX2RhdGFfXyxNaS5pbmRleCxNaS5ncm91cCksZGVsZXRlIGVuW2lp''@;'; put 'put ''XSk6K2lpPGtuJiYoTWkuc3RhdGU9NixNaS50aW1lci5zdG9wKCksTWkub24uY2FsbCgiY2FuY2VsIixHdCxHdC5fX2RhdGFfXyxNaS5pbmRleCxNaS5ncm91cCksZGVsZXRlIGVuW2lpXSl9aWYoKDAsRWUuWikoZnVuY3Rpb24oKXszPT09Vm4uc3RhdGUmJihWbi5zdGF0ZT00LFZuLnRpbWVy''@;'; put 'put ''LnJlc3RhcnQoZ3IsVm4uZGVsYXksVm4udGltZSksZ3IoVnIpKX0pLFZuLnN0YXRlPTIsVm4ub24uY2FsbCgic3RhcnQiLEd0LEd0Ll9fZGF0YV9fLFZuLmluZGV4LFZuLmdyb3VwKSwyPT09Vm4uc3RhdGUpe2ZvcihWbi5zdGF0ZT0zLEluPW5ldyBBcnJheShsaT1Wbi50d2Vlbi5sZW5ndGgp''@;'; put 'put ''LGlpPTAsUnI9LTE7aWk8bGk7KytpaSkoTWk9Vm4udHdlZW5baWldLnZhbHVlLmNhbGwoR3QsR3QuX19kYXRhX18sVm4uaW5kZXgsVm4uZ3JvdXApKSYmKEluWysrUnJdPU1pKTtJbi5sZW5ndGg9UnIrMX19ZnVuY3Rpb24gZ3IoVnIpe2Zvcih2YXIgaWk9VnI8Vm4uZHVyYXRpb24/Vm4uZWFz''@;'; put 'put ''ZS5jYWxsKG51bGwsVnIvVm4uZHVyYXRpb24pOihWbi50aW1lci5yZXN0YXJ0KEtyKSxWbi5zdGF0ZT01LDEpLFJyPS0xLGxpPUluLmxlbmd0aDsrK1JyPGxpOylJbltScl0uY2FsbChHdCxpaSk7NT09PVZuLnN0YXRlJiYoVm4ub24uY2FsbCgiZW5kIixHdCxHdC5fX2RhdGFfXyxWbi5pbmRl''@;'; put 'put ''eCxWbi5ncm91cCksS3IoKSl9ZnVuY3Rpb24gS3IoKXtmb3IodmFyIFZyIGluIFZuLnN0YXRlPTYsVm4udGltZXIuc3RvcCgpLGRlbGV0ZSBlbltrbl0sZW4pcmV0dXJuO2RlbGV0ZSBHdC5fX3RyYW5zaXRpb259ZW5ba25dPVZuLFZuLnRpbWVyPSgwLEUuSFQpKGZ1bmN0aW9uIEpuKFZyKXtW''@;'; put 'put ''bi5zdGF0ZT0xLFZuLnRpbWVyLnJlc3RhcnQob3IsVm4uZGVsYXksVm4udGltZSksVm4uZGVsYXk8PVZyJiZvcihWci1Wbi5kZWxheSl9LDAsVm4udGltZSl9KEd0LFZuLHtuYW1lOmtuLGluZGV4OmVuLGdyb3VwOkluLG9uOlUsdHdlZW46USx0aW1lOkpuLnRpbWUsZGVsYXk6Sm4uZGVsYXks''@;'; put 'put ''ZHVyYXRpb246Sm4uZHVyYXRpb24sZWFzZTpKbi5lYXNlLHRpbWVyOm51bGwsc3RhdGU6MH0pfWZ1bmN0aW9uIEooR3Qsa24pe3ZhciBWbj1vZShHdCxrbik7aWYoVm4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBWbn1mdW5j''@;'; put 'put ''dGlvbiBzZShHdCxrbil7dmFyIFZuPW9lKEd0LGtuKTtpZihWbi5zdGF0ZT4zKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgcnVubmluZyIpO3JldHVybiBWbn1mdW5jdGlvbiBvZShHdCxrbil7dmFyIFZuPUd0Ll9fdHJhbnNpdGlvbjtpZighVm58fCEoVm49Vm5ba25dKSl0''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoInRyYW5zaXRpb24gbm90IGZvdW5kIik7cmV0dXJuIFZufWZ1bmN0aW9uIGRlKEd0LGtuKXt2YXIgZW4sSW4sb3IsVm49R3QuX190cmFuc2l0aW9uLEpuPSEwO2lmKFZuKXtmb3Iob3IgaW4ga249bnVsbD09a24/bnVsbDprbisiIixWbikoZW49Vm5bb3JdKS5uYW1l''@;'; put 'put ''PT09a24/KEluPWVuLnN0YXRlPjImJmVuLnN0YXRlPDUsZW4uc3RhdGU9Nixlbi50aW1lci5zdG9wKCksZW4ub24uY2FsbChJbj8iaW50ZXJydXB0IjoiY2FuY2VsIixHdCxHdC5fX2RhdGFfXyxlbi5pbmRleCxlbi5ncm91cCksZGVsZXRlIFZuW29yXSk6Sm49ITE7Sm4mJmRlbGV0ZSBHdC5f''@;'; put 'put ''X3RyYW5zaXRpb259fXZhciBBZT1MKDc1MzQ5KSxrZT1MKDM2MTc1KTtmdW5jdGlvbiBTZShHdCxrbil7dmFyIFZuLGVuO3JldHVybiBmdW5jdGlvbigpe3ZhciBJbj1zZSh0aGlzLEd0KSxKbj1Jbi50d2VlbjtpZihKbiE9PVZuKWZvcih2YXIgb3I9MCxncj0oZW49Vm49Sm4pLmxlbmd0aDtv''@;'; put 'put ''cjxncjsrK29yKWlmKGVuW29yXS5uYW1lPT09a24peyhlbj1lbi5zbGljZSgpKS5zcGxpY2Uob3IsMSk7YnJlYWt9SW4udHdlZW49ZW59fWZ1bmN0aW9uIEllKEd0LGtuLFZuKXt2YXIgZW4sSW47aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFZuKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgSm49c2UodGhpcyxHdCksb3I9Sm4udHdlZW47aWYob3IhPT1lbil7SW49KGVuPW9yKS5zbGljZSgpO2Zvcih2YXIgZ3I9e25hbWU6a24sdmFsdWU6Vm59LEtyPTAsVnI9SW4ubGVuZ3RoO0tyPFZyOysrS3IpaWYoSW5bS3JdLm5hbWU9PT1rbil7SW5bS3JdPWdyO2JyZWFrfUty''@;'; put 'put ''PT09VnImJkluLnB1c2goZ3IpfUpuLnR3ZWVuPUlufX1mdW5jdGlvbiBNZShHdCxrbixWbil7dmFyIGVuPUd0Ll9pZDtyZXR1cm4gR3QuZWFjaChmdW5jdGlvbigpe3ZhciBJbj1zZSh0aGlzLGVuKTsoSW4udmFsdWV8fChJbi52YWx1ZT17fSkpW2tuXT1Wbi5hcHBseSh0aGlzLGFyZ3VtZW50''@;'; put 'put ''cyl9KSxmdW5jdGlvbihJbil7cmV0dXJuIG9lKEluLGVuKS52YWx1ZVtrbl19fXZhciBoZT1MKDUyNzg2KSxPPUwoNjczOCksej1MKDg2ODExKSxlZT1MKDIzMDk2KTtmdW5jdGlvbiBuZShHdCxrbil7dmFyIFZuO3JldHVybigibnVtYmVyIj09dHlwZW9mIGtuP08uWjprbiBpbnN0YW5jZW9m''@;'; put 'put ''IGhlLlpQP3ouWlA6KFZuPSgwLGhlLlpQKShrbikpPyhrbj1Wbix6LlpQKTplZS5aKShHdCxrbil9ZnVuY3Rpb24geChHdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUoR3QpfX1mdW5jdGlvbiBQKEd0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJp''@;'; put 'put ''YnV0ZU5TKEd0LnNwYWNlLEd0LmxvY2FsKX19ZnVuY3Rpb24gVihHdCxrbixWbil7dmFyIGVuLEpuLEluPVZuKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBvcj10aGlzLmdldEF0dHJpYnV0ZShHdCk7cmV0dXJuIG9yPT09SW4/bnVsbDpvcj09PWVuP0puOkpuPWtuKGVuPW9yLFZuKX19ZnVu''@;'; put 'put ''Y3Rpb24gVChHdCxrbixWbil7dmFyIGVuLEpuLEluPVZuKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBvcj10aGlzLmdldEF0dHJpYnV0ZU5TKEd0LnNwYWNlLEd0LmxvY2FsKTtyZXR1cm4gb3I9PT1Jbj9udWxsOm9yPT09ZW4/Sm46Sm49a24oZW49b3IsVm4pfX1mdW5jdGlvbiBTKEd0LGtu''@;'; put 'put ''LFZuKXt2YXIgZW4sSW4sSm47cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG9yLEtyLGdyPVZuKHRoaXMpO3JldHVybiBudWxsPT1ncj92b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlKEd0KToob3I9dGhpcy5nZXRBdHRyaWJ1dGUoR3QpKT09PShLcj1ncisiIik/bnVsbDpvcj09PWVuJiZLcj09PUlu''@;'; put 'put ''P0puOihJbj1LcixKbj1rbihlbj1vcixncikpfX1mdW5jdGlvbiBGKEd0LGtuLFZuKXt2YXIgZW4sSW4sSm47cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG9yLEtyLGdyPVZuKHRoaXMpO3JldHVybiBudWxsPT1ncj92b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlTlMoR3Quc3BhY2UsR3QubG9jYWwp''@;'; put 'put ''Oihvcj10aGlzLmdldEF0dHJpYnV0ZU5TKEd0LnNwYWNlLEd0LmxvY2FsKSk9PT0oS3I9Z3IrIiIpP251bGw6b3I9PT1lbiYmS3I9PT1Jbj9KbjooSW49S3IsSm49a24oZW49b3IsZ3IpKX19ZnVuY3Rpb24gQ2UoR3Qsa24pe3JldHVybiBmdW5jdGlvbihWbil7dGhpcy5zZXRBdHRyaWJ1dGUo''@;'; put 'put ''R3Qsa24uY2FsbCh0aGlzLFZuKSl9fWZ1bmN0aW9uIERlKEd0LGtuKXtyZXR1cm4gZnVuY3Rpb24oVm4pe3RoaXMuc2V0QXR0cmlidXRlTlMoR3Quc3BhY2UsR3QubG9jYWwsa24uY2FsbCh0aGlzLFZuKSl9fWZ1bmN0aW9uIFBlKEd0LGtuKXt2YXIgVm4sZW47ZnVuY3Rpb24gSW4oKXt2YXIg''@;'; put 'put ''Sm49a24uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBKbiE9PWVuJiYoVm49KGVuPUpuKSYmRGUoR3QsSm4pKSxWbn1yZXR1cm4gSW4uX3ZhbHVlPWtuLElufWZ1bmN0aW9uIFFlKEd0LGtuKXt2YXIgVm4sZW47ZnVuY3Rpb24gSW4oKXt2YXIgSm49a24uYXBwbHkodGhpcyxhcmd1bWVu''@;'; put 'put ''dHMpO3JldHVybiBKbiE9PWVuJiYoVm49KGVuPUpuKSYmQ2UoR3QsSm4pKSxWbn1yZXR1cm4gSW4uX3ZhbHVlPWtuLElufWZ1bmN0aW9uIGd0KEd0LGtuKXtyZXR1cm4gZnVuY3Rpb24oKXtKKHRoaXMsR3QpLmRlbGF5PStrbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIHd0KEd0''@;'; put 'put ''LGtuKXtyZXR1cm4ga249K2tuLGZ1bmN0aW9uKCl7Sih0aGlzLEd0KS5kZWxheT1rbn19ZnVuY3Rpb24gdnQoR3Qsa24pe3JldHVybiBmdW5jdGlvbigpe3NlKHRoaXMsR3QpLmR1cmF0aW9uPStrbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIEF0KEd0LGtuKXtyZXR1cm4ga249''@;'; put 'put ''K2tuLGZ1bmN0aW9uKCl7c2UodGhpcyxHdCkuZHVyYXRpb249a259fWZ1bmN0aW9uIEJ0KEd0LGtuKXtpZigiZnVuY3Rpb24iIT10eXBlb2Yga24pdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3NlKHRoaXMsR3QpLmVhc2U9a259fXZhciBfdD1MKDk3OTA1KTtmdW5jdGlvbiBM''@;'; put 'put ''dChHdCxrbixWbil7dmFyIGVuLEluLEpuPWZ1bmN0aW9uIGx0KEd0KXtyZXR1cm4oR3QrIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKS5ldmVyeShmdW5jdGlvbihrbil7dmFyIFZuPWtuLmluZGV4T2YoIi4iKTtyZXR1cm4gVm4+PTAmJihrbj1rbi5zbGljZSgwLFZuKSksIWtufHwic3RhcnQi''@;'; put 'put ''PT09a259KX0oa24pP0o6c2U7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG9yPUpuKHRoaXMsR3QpLGdyPW9yLm9uO2dyIT09ZW4mJihJbj0oZW49Z3IpLmNvcHkoKSkub24oa24sVm4pLG9yLm9uPUlufX12YXIgR2U9TCgyOTc0MikseXQ9TCgzMjAzNyksSnQ9bWUuWlAucHJvdG90eXBlLmNvbnN0''@;'; put 'put ''cnVjdG9yLGRuPUwoMjQ0NzYpO2Z1bmN0aW9uIGxuKEd0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KEd0KX19ZnVuY3Rpb24gWG4oR3Qsa24sVm4pe3JldHVybiBmdW5jdGlvbihlbil7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShHdCxrbi5jYWxsKHRoaXMs''@;'; put 'put ''ZW4pLFZuKX19ZnVuY3Rpb24gRnIoR3Qsa24sVm4pe3ZhciBlbixJbjtmdW5jdGlvbiBKbigpe3ZhciBvcj1rbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG9yIT09SW4mJihlbj0oSW49b3IpJiZYbihHdCxvcixWbikpLGVufXJldHVybiBKbi5fdmFsdWU9a24sSm59ZnVuY3Rpb24g''@;'; put 'put ''QW4oR3Qpe3JldHVybiBmdW5jdGlvbihrbil7dGhpcy50ZXh0Q29udGVudD1HdC5jYWxsKHRoaXMsa24pfX1mdW5jdGlvbiBxbihHdCl7dmFyIGtuLFZuO2Z1bmN0aW9uIGVuKCl7dmFyIEluPUd0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gSW4hPT1WbiYmKGtuPShWbj1JbikmJkFu''@;'; put 'put ''KEluKSksa259cmV0dXJuIGVuLl92YWx1ZT1HdCxlbn12YXIgTnQ9MDtmdW5jdGlvbiBzbihHdCxrbixWbixlbil7dGhpcy5fZ3JvdXBzPUd0LHRoaXMuX3BhcmVudHM9a24sdGhpcy5fbmFtZT1Wbix0aGlzLl9pZD1lbn1mdW5jdGlvbiBVbihHdCl7cmV0dXJuKDAsbWUuWlApKCkudHJhbnNp''@;'; put 'put ''dGlvbihHdCl9ZnVuY3Rpb24gd24oKXtyZXR1cm4rK050fXZhciB0bj1tZS5aUC5wcm90b3R5cGU7c24ucHJvdG90eXBlPVVuLnByb3RvdHlwZT17Y29uc3RydWN0b3I6c24sc2VsZWN0OmZ1bmN0aW9uIFVlKEd0KXt2YXIga249dGhpcy5fbmFtZSxWbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10''@;'; put 'put ''eXBlb2YgR3QmJihHdD0oMCxHZS5aKShHdCkpO2Zvcih2YXIgZW49dGhpcy5fZ3JvdXBzLEluPWVuLmxlbmd0aCxKbj1uZXcgQXJyYXkoSW4pLG9yPTA7b3I8SW47Kytvcilmb3IodmFyIGlpLFJyLGdyPWVuW29yXSxLcj1nci5sZW5ndGgsVnI9Sm5bb3JdPW5ldyBBcnJheShLciksbGk9MDts''@;'; put 'put ''aTxLcjsrK2xpKShpaT1ncltsaV0pJiYoUnI9R3QuY2FsbChpaSxpaS5fX2RhdGFfXyxsaSxncikpJiYoIl9fZGF0YV9fImluIGlpJiYoUnIuX19kYXRhX189aWkuX19kYXRhX18pLFZyW2xpXT1ScixLKFZyW2xpXSxrbixWbixsaSxWcixvZShpaSxWbikpKTtyZXR1cm4gbmV3IHNuKEpuLHRo''@;'; put 'put ''aXMuX3BhcmVudHMsa24sVm4pfSxzZWxlY3RBbGw6ZnVuY3Rpb24ganQoR3Qpe3ZhciBrbj10aGlzLl9uYW1lLFZuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiBHdCYmKEd0PSgwLHl0LlopKEd0KSk7Zm9yKHZhciBlbj10aGlzLl9ncm91cHMsSW49ZW4ubGVuZ3RoLEpuPVtdLG9yPVtd''@;'; put 'put ''LGdyPTA7Z3I8SW47Kytncilmb3IodmFyIGlpLEtyPWVuW2dyXSxWcj1Lci5sZW5ndGgsUnI9MDtScjxWcjsrK1JyKWlmKGlpPUtyW1JyXSl7Zm9yKHZhciBNaSxsaT1HdC5jYWxsKGlpLGlpLl9fZGF0YV9fLFJyLEtyKSxvMD1vZShpaSxWbiksbjA9MCxkMD1saS5sZW5ndGg7bjA8ZDA7Kytu''@;'; put 'put ''MCkoTWk9bGlbbjBdKSYmSyhNaSxrbixWbixuMCxsaSxvMCk7Sm4ucHVzaChsaSksb3IucHVzaChpaSl9cmV0dXJuIG5ldyBzbihKbixvcixrbixWbil9LGZpbHRlcjpmdW5jdGlvbiB0dChHdCl7ImZ1bmN0aW9uIiE9dHlwZW9mIEd0JiYoR3Q9KDAsX3QuWikoR3QpKTtmb3IodmFyIGtuPXRo''@;'; put 'put ''aXMuX2dyb3VwcyxWbj1rbi5sZW5ndGgsZW49bmV3IEFycmF5KFZuKSxJbj0wO0luPFZuOysrSW4pZm9yKHZhciBLcixKbj1rbltJbl0sb3I9Sm4ubGVuZ3RoLGdyPWVuW0luXT1bXSxWcj0wO1ZyPG9yOysrVnIpKEtyPUpuW1ZyXSkmJkd0LmNhbGwoS3IsS3IuX19kYXRhX18sVnIsSm4pJiZn''@;'; put 'put ''ci5wdXNoKEtyKTtyZXR1cm4gbmV3IHNuKGVuLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LG1lcmdlOmZ1bmN0aW9uIGV0KEd0KXtpZihHdC5faWQhPT10aGlzLl9pZCl0aHJvdyBuZXcgRXJyb3I7Zm9yKHZhciBrbj10aGlzLl9ncm91cHMsVm49R3QuX2dyb3Vwcyxlbj1r''@;'; put 'put ''bi5sZW5ndGgsSm49TWF0aC5taW4oZW4sVm4ubGVuZ3RoKSxvcj1uZXcgQXJyYXkoZW4pLGdyPTA7Z3I8Sm47Kytncilmb3IodmFyIGxpLEtyPWtuW2dyXSxWcj1Wbltncl0saWk9S3IubGVuZ3RoLFJyPW9yW2dyXT1uZXcgQXJyYXkoaWkpLE1pPTA7TWk8aWk7KytNaSkobGk9S3JbTWldfHxW''@;'; put 'put ''cltNaV0pJiYoUnJbTWldPWxpKTtmb3IoO2dyPGVuOysrZ3Ipb3JbZ3JdPWtuW2dyXTtyZXR1cm4gbmV3IHNuKG9yLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbiBnbigpe3JldHVybiBuZXcgSnQodGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVu''@;'; put 'put ''dHMpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uIHBuKCl7Zm9yKHZhciBHdD10aGlzLl9uYW1lLGtuPXRoaXMuX2lkLFZuPXduKCksZW49dGhpcy5fZ3JvdXBzLEluPWVuLmxlbmd0aCxKbj0wO0puPEluOysrSm4pZm9yKHZhciBLcixvcj1lbltKbl0sZ3I9b3IubGVuZ3RoLFZyPTA7VnI8Z3I7KytW''@;'; put 'put ''cilpZihLcj1vcltWcl0pe3ZhciBpaT1vZShLcixrbik7SyhLcixHdCxWbixWcixvcix7dGltZTppaS50aW1lK2lpLmRlbGF5K2lpLmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246aWkuZHVyYXRpb24sZWFzZTppaS5lYXNlfSl9cmV0dXJuIG5ldyBzbihlbix0aGlzLl9wYXJlbnRzLEd0LFZu''@;'; put 'put ''KX0sY2FsbDp0bi5jYWxsLG5vZGVzOnRuLm5vZGVzLG5vZGU6dG4ubm9kZSxzaXplOnRuLnNpemUsZW1wdHk6dG4uZW1wdHksZWFjaDp0bi5lYWNoLG9uOmZ1bmN0aW9uIEN0KEd0LGtuKXt2YXIgVm49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9vZSh0aGlzLm5vZGUoKSxW''@;'; put 'put ''bikub24ub24oR3QpOnRoaXMuZWFjaChMdChWbixHdCxrbikpfSxhdHRyOmZ1bmN0aW9uIHllKEd0LGtuKXt2YXIgVm49KDAsa2UuWikoR3QpLGVuPSJ0cmFuc2Zvcm0iPT09Vm4/QWUudzpuZTtyZXR1cm4gdGhpcy5hdHRyVHdlZW4oR3QsImZ1bmN0aW9uIj09dHlwZW9mIGtuPyhWbi5sb2Nh''@;'; put 'put ''bD9GOlMpKFZuLGVuLE1lKHRoaXMsImF0dHIuIitHdCxrbikpOm51bGw9PWtuPyhWbi5sb2NhbD9QOngpKFZuKTooVm4ubG9jYWw/VDpWKShWbixlbixrbikpfSxhdHRyVHdlZW46ZnVuY3Rpb24gJGUoR3Qsa24pe3ZhciBWbj0iYXR0ci4iK0d0O2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1''@;'; put 'put ''cm4oVm49dGhpcy50d2VlbihWbikpJiZWbi5fdmFsdWU7aWYobnVsbD09a24pcmV0dXJuIHRoaXMudHdlZW4oVm4sbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGtuKXRocm93IG5ldyBFcnJvcjt2YXIgZW49KDAsa2UuWikoR3QpO3JldHVybiB0aGlzLnR3ZWVuKFZuLChlbi5sb2NhbD9Q''@;'; put 'put ''ZTpRZSkoZW4sa24pKX0sc3R5bGU6ZnVuY3Rpb24gc3IoR3Qsa24sVm4pe3ZhciBlbj0idHJhbnNmb3JtIj09KEd0Kz0iIik/QWUuWTpuZTtyZXR1cm4gbnVsbD09a24/dGhpcy5zdHlsZVR3ZWVuKEd0LGZ1bmN0aW9uIHluKEd0LGtuKXt2YXIgVm4sZW4sSW47cmV0dXJuIGZ1bmN0aW9uKCl7''@;'; put 'put ''dmFyIEpuPSgwLGRuLlMpKHRoaXMsR3QpLG9yPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KEd0KSwoMCxkbi5TKSh0aGlzLEd0KSk7cmV0dXJuIEpuPT09b3I/bnVsbDpKbj09PVZuJiZvcj09PWVuP0luOkluPWtuKFZuPUpuLGVuPW9yKX19KEd0LGVuKSkub24oImVuZC5zdHlsZS4iK0d0''@;'; put 'put ''LGxuKEd0KSk6ImZ1bmN0aW9uIj09dHlwZW9mIGtuP3RoaXMuc3R5bGVUd2VlbihHdCxmdW5jdGlvbiBibihHdCxrbixWbil7dmFyIGVuLEluLEpuO3JldHVybiBmdW5jdGlvbigpe3ZhciBvcj0oMCxkbi5TKSh0aGlzLEd0KSxncj1Wbih0aGlzKSxLcj1ncisiIjtyZXR1cm4gbnVsbD09Z3Im''@;'; put 'put ''Jih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KEd0KSxLcj1ncj0oMCxkbi5TKSh0aGlzLEd0KSksb3I9PT1Lcj9udWxsOm9yPT09ZW4mJktyPT09SW4/Sm46KEluPUtyLEpuPWtuKGVuPW9yLGdyKSl9fShHdCxlbixNZSh0aGlzLCJzdHlsZS4iK0d0LGtuKSkpLmVhY2goZnVuY3Rpb24gZXIo''@;'; put 'put ''R3Qsa24pe3ZhciBWbixlbixJbixncixKbj0ic3R5bGUuIitrbixvcj0iZW5kLiIrSm47cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIEtyPXNlKHRoaXMsR3QpLFZyPUtyLm9uLGlpPW51bGw9PUtyLnZhbHVlW0puXT9ncnx8KGdyPWxuKGtuKSk6dm9pZCAwOyhWciE9PVZufHxJbiE9PWlpKSYmKGVu''@;'; put 'put ''PShWbj1WcikuY29weSgpKS5vbihvcixJbj1paSksS3Iub249ZW59fSh0aGlzLl9pZCxHdCkpOnRoaXMuc3R5bGVUd2VlbihHdCxmdW5jdGlvbiBObihHdCxrbixWbil7dmFyIGVuLEpuLEluPVZuKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBvcj0oMCxkbi5TKSh0aGlzLEd0KTtyZXR1cm4g''@;'; put 'put ''b3I9PT1Jbj9udWxsOm9yPT09ZW4/Sm46Sm49a24oZW49b3IsVm4pfX0oR3QsZW4sa24pLFZuKS5vbigiZW5kLnN0eWxlLiIrR3QsbnVsbCl9LHN0eWxlVHdlZW46ZnVuY3Rpb24geHIoR3Qsa24sVm4pe3ZhciBlbj0ic3R5bGUuIisoR3QrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0''@;'; put 'put ''dXJuKGVuPXRoaXMudHdlZW4oZW4pKSYmZW4uX3ZhbHVlO2lmKG51bGw9PWtuKXJldHVybiB0aGlzLnR3ZWVuKGVuLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBrbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oZW4sRnIoR3Qsa24sbnVsbD09Vm4/IiI6Vm4pKX0sdGV4''@;'; put 'put ''dDpmdW5jdGlvbiBucihHdCl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLCJmdW5jdGlvbiI9PXR5cGVvZiBHdD9mdW5jdGlvbiBwcihHdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGtuPUd0KHRoaXMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09a24/IiI6a259fShNZSh0aGlzLCJ0ZXh0IixH''@;'; put 'put ''dCkpOmZ1bmN0aW9uIHF0KEd0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PUd0fX0obnVsbD09R3Q/IiI6R3QrIiIpKX0sdGV4dFR3ZWVuOmZ1bmN0aW9uIFd0KEd0KXt2YXIga249InRleHQiO2lmKGFyZ3VtZW50cy5sZW5ndGg8MSlyZXR1cm4oa249dGhpcy50d2Vlbihr''@;'; put 'put ''bikpJiZrbi5fdmFsdWU7aWYobnVsbD09R3QpcmV0dXJuIHRoaXMudHdlZW4oa24sbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEd0KXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2VlbihrbixxbihHdCkpfSxyZW1vdmU6ZnVuY3Rpb24gSHQoKXtyZXR1cm4gdGhpcy5vbigiZW5k''@;'; put 'put ''LnJlbW92ZSIsZnVuY3Rpb24gZnQoR3Qpe3JldHVybiBmdW5jdGlvbigpe3ZhciBrbj10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBWbiBpbiB0aGlzLl9fdHJhbnNpdGlvbilpZigrVm4hPT1HdClyZXR1cm47a24mJmtuLnJlbW92ZUNoaWxkKHRoaXMpfX0odGhpcy5faWQpKX0sdHdlZW46ZnVu''@;'; put 'put ''Y3Rpb24gVGUoR3Qsa24pe3ZhciBWbj10aGlzLl9pZDtpZihHdCs9IiIsYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIG9yLGVuPW9lKHRoaXMubm9kZSgpLFZuKS50d2VlbixJbj0wLEpuPWVuLmxlbmd0aDtJbjxKbjsrK0luKWlmKChvcj1lbltJbl0pLm5hbWU9PT1HdClyZXR1cm4gb3Iu''@;'; put 'put ''dmFsdWU7cmV0dXJuIG51bGx9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09a24/U2U6SWUpKFZuLEd0LGtuKSl9LGRlbGF5OmZ1bmN0aW9uIG10KEd0KXt2YXIga249dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgR3Q/Z3Q6d3Qp''@;'; put 'put ''KGtuLEd0KSk6b2UodGhpcy5ub2RlKCksa24pLmRlbGF5fSxkdXJhdGlvbjpmdW5jdGlvbiBodChHdCl7dmFyIGtuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIEd0P3Z0OkF0KShrbixHdCkpOm9lKHRoaXMubm9kZSgpLGtu''@;'; put 'put ''KS5kdXJhdGlvbn0sZWFzZTpmdW5jdGlvbiBvbihHdCl7dmFyIGtuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChCdChrbixHdCkpOm9lKHRoaXMubm9kZSgpLGtuKS5lYXNlfSxlbmQ6ZnVuY3Rpb24gS24oKXt2YXIgR3Qsa24sVm49dGhpcyxlbj1Wbi5faWQs''@;'; put 'put ''SW49Vm4uc2l6ZSgpO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihKbixvcil7dmFyIGdyPXt2YWx1ZTpvcn0sS3I9e3ZhbHVlOmZ1bmN0aW9uKCl7MD09LS1JbiYmSm4oKX19O1ZuLmVhY2goZnVuY3Rpb24oKXt2YXIgVnI9c2UodGhpcyxlbiksaWk9VnIub247aWkhPT1HdCYmKChrbj0o''@;'; put 'put ''R3Q9aWkpLmNvcHkoKSkuXy5jYW5jZWwucHVzaChnciksa24uXy5pbnRlcnJ1cHQucHVzaChnciksa24uXy5lbmQucHVzaChLcikpLFZyLm9uPWtufSl9KX19O3ZhciBrcj17dGltZTpudWxsLGRlbGF5OjAsZHVyYXRpb246MjUwLGVhc2U6ZnVuY3Rpb24gQm4oR3Qpe3JldHVybigoR3QqPTIp''@;'; put 'put ''PD0xP0d0Kkd0Kkd0OihHdC09MikqR3QqR3QrMikvMn19O2Z1bmN0aW9uIG1uKEd0LGtuKXtmb3IodmFyIFZuOyEoVm49R3QuX190cmFuc2l0aW9uKXx8IShWbj1Wbltrbl0pOylpZighKEd0PUd0LnBhcmVudE5vZGUpKXJldHVybiBrci50aW1lPSgwLEUuek8pKCksa3I7cmV0dXJuIFZufW1l''@;'; put 'put ''LlpQLnByb3RvdHlwZS5pbnRlcnJ1cHQ9ZnVuY3Rpb24gdmUoR3Qpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkZSh0aGlzLEd0KX0pfSxtZS5aUC5wcm90b3R5cGUudHJhbnNpdGlvbj1mdW5jdGlvbiB1bihHdCl7dmFyIGtuLFZuO0d0IGluc3RhbmNlb2Ygc24/KGtuPUd0Ll9pZCxH''@;'; put 'put ''dD1HdC5fbmFtZSk6KGtuPXduKCksKFZuPWtyKS50aW1lPSgwLEUuek8pKCksR3Q9bnVsbD09R3Q/bnVsbDpHdCsiIik7Zm9yKHZhciBlbj10aGlzLl9ncm91cHMsSW49ZW4ubGVuZ3RoLEpuPTA7Sm48SW47KytKbilmb3IodmFyIEtyLG9yPWVuW0puXSxncj1vci5sZW5ndGgsVnI9MDtWcjxn''@;'; put 'put ''cjsrK1ZyKShLcj1vcltWcl0pJiZLKEtyLEd0LGtuLFZyLG9yLFZufHxtbihLcixrbikpO3JldHVybiBuZXcgc24oZW4sdGhpcy5fcGFyZW50cyxHdCxrbil9O3ZhciBjbj1bbnVsbF07ZnVuY3Rpb24gX24oR3Qsa24pe3ZhciBlbixJbixWbj1HdC5fX3RyYW5zaXRpb247aWYoVm4pZm9yKElu''@;'; put 'put ''IGluIGtuPW51bGw9PWtuP251bGw6a24rIiIsVm4paWYoKGVuPVZuW0luXSkuc3RhdGU+MSYmZW4ubmFtZT09PWtuKXJldHVybiBuZXcgc24oW1tHdF1dLGNuLGtuLCtJbik7cmV0dXJuIG51bGx9fSw3NTgyNzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TC5yKEplKSxMLmQoSmUse3pvb206''@;'; put 'put ''KCk9PlRlLHpvb21JZGVudGl0eTooKT0+Six6b29tVHJhbnNmb3JtOigpPT5zZX0pO3ZhciBtZT1MKDI1OTIyKSxCPUwoNTIwMTYpLEU9TCg2MTc0Nik7ZnVuY3Rpb24gVSgpe0UuQi5wcmV2ZW50RGVmYXVsdCgpLEUuQi5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBRKE1l''@;'; put 'put ''KXt2YXIgaGU9TWUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LE89KDAsQi5aKShNZSkub24oImRyYWdzdGFydC5kcmFnIixVLCEwKTsib25zZWxlY3RzdGFydCJpbiBoZT9PLm9uKCJzZWxlY3RzdGFydC5kcmFnIixVLCEwKTooaGUuX19ub3NlbGVjdD1oZS5zdHlsZS5Nb3pVc2VyU2VsZWN0''@;'; put 'put ''LGhlLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiBqKE1lLGhlKXt2YXIgTz1NZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsej0oMCxCLlopKE1lKS5vbigiZHJhZ3N0YXJ0LmRyYWciLG51bGwpO2hlJiYoei5vbigiY2xpY2suZHJhZyIsVSwhMCksc2V0VGltZW91dChm''@;'; put 'put ''dW5jdGlvbigpe3oub24oImNsaWNrLmRyYWciLG51bGwpfSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gTz96Lm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKTooTy5zdHlsZS5Nb3pVc2VyU2VsZWN0PU8uX19ub3NlbGVjdCxkZWxldGUgTy5fX25vc2VsZWN0KX12YXIgcmU9TCg3NjI1NyksYWU9''@;'; put 'put ''TCg2NjA3MyksWT1MKDMwMjU2KSxXPUwoNDA4MjIpO2Z1bmN0aW9uIE4oTWUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBNZX19ZnVuY3Rpb24gdGUoTWUsaGUsTyl7dGhpcy50YXJnZXQ9TWUsdGhpcy50eXBlPWhlLHRoaXMudHJhbnNmb3JtPU99ZnVuY3Rpb24gSyhNZSxoZSxPKXt0aGlz''@;'; put 'put ''Lms9TWUsdGhpcy54PWhlLHRoaXMueT1PfUsucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpLLHNjYWxlOmZ1bmN0aW9uKE1lKXtyZXR1cm4gMT09PU1lP3RoaXM6bmV3IEsodGhpcy5rKk1lLHRoaXMueCx0aGlzLnkpfSx0cmFuc2xhdGU6ZnVuY3Rpb24oTWUsaGUpe3JldHVybiAwPT09TWUmMD09''@;'; put 'put ''PWhlP3RoaXM6bmV3IEsodGhpcy5rLHRoaXMueCt0aGlzLmsqTWUsdGhpcy55K3RoaXMuaypoZSl9LGFwcGx5OmZ1bmN0aW9uKE1lKXtyZXR1cm5bTWVbMF0qdGhpcy5rK3RoaXMueCxNZVsxXSp0aGlzLmsrdGhpcy55XX0sYXBwbHlYOmZ1bmN0aW9uKE1lKXtyZXR1cm4gTWUqdGhpcy5rK3Ro''@;'; put 'put ''aXMueH0sYXBwbHlZOmZ1bmN0aW9uKE1lKXtyZXR1cm4gTWUqdGhpcy5rK3RoaXMueX0saW52ZXJ0OmZ1bmN0aW9uKE1lKXtyZXR1cm5bKE1lWzBdLXRoaXMueCkvdGhpcy5rLChNZVsxXS10aGlzLnkpL3RoaXMua119LGludmVydFg6ZnVuY3Rpb24oTWUpe3JldHVybihNZS10aGlzLngpL3Ro''@;'; put 'put ''aXMua30saW52ZXJ0WTpmdW5jdGlvbihNZSl7cmV0dXJuKE1lLXRoaXMueSkvdGhpcy5rfSxyZXNjYWxlWDpmdW5jdGlvbihNZSl7cmV0dXJuIE1lLmNvcHkoKS5kb21haW4oTWUucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRYLHRoaXMpLm1hcChNZS5pbnZlcnQsTWUpKX0scmVzY2FsZVk6ZnVu''@;'; put 'put ''Y3Rpb24oTWUpe3JldHVybiBNZS5jb3B5KCkuZG9tYWluKE1lLnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WSx0aGlzKS5tYXAoTWUuaW52ZXJ0LE1lKSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInRyYW5zbGF0ZSgiK3RoaXMueCsiLCIrdGhpcy55KyIpIHNjYWxlKCIrdGhpcy5rKyIp''@;'; put 'put ''In19O3ZhciBKPW5ldyBLKDEsMCwwKTtmdW5jdGlvbiBzZShNZSl7Zm9yKDshTWUuX196b29tOylpZighKE1lPU1lLnBhcmVudE5vZGUpKXJldHVybiBKO3JldHVybiBNZS5fX3pvb219ZnVuY3Rpb24gb2UoKXtFLkIuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gY2UoKXtF''@;'; put 'put ''LkIucHJldmVudERlZmF1bHQoKSxFLkIuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gZGUoKXtyZXR1cm4hRS5CLmN0cmxLZXkmJiFFLkIuYnV0dG9ufWZ1bmN0aW9uIHZlKCl7dmFyIE1lPXRoaXM7cmV0dXJuIE1lIGluc3RhbmNlb2YgU1ZHRWxlbWVudD8oTWU9TWUub3du''@;'; put 'put ''ZXJTVkdFbGVtZW50fHxNZSkuaGFzQXR0cmlidXRlKCJ2aWV3Qm94Iik/W1soTWU9TWUudmlld0JveC5iYXNlVmFsKS54LE1lLnldLFtNZS54K01lLndpZHRoLE1lLnkrTWUuaGVpZ2h0XV06W1swLDBdLFtNZS53aWR0aC5iYXNlVmFsLnZhbHVlLE1lLmhlaWdodC5iYXNlVmFsLnZhbHVlXV06''@;'; put 'put ''W1swLDBdLFtNZS5jbGllbnRXaWR0aCxNZS5jbGllbnRIZWlnaHRdXX1mdW5jdGlvbiBBZSgpe3JldHVybiB0aGlzLl9fem9vbXx8Sn1mdW5jdGlvbiBrZSgpe3JldHVybi1FLkIuZGVsdGFZKigxPT09RS5CLmRlbHRhTW9kZT8uMDU6RS5CLmRlbHRhTW9kZT8xOi4wMDIpfWZ1bmN0aW9uIFNl''@;'; put 'put ''KCl7cmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8Im9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIEllKE1lLGhlLE8pe3ZhciB6PU1lLmludmVydFgoaGVbMF1bMF0pLU9bMF1bMF0sZWU9TWUuaW52ZXJ0WChoZVsxXVswXSktT1sxXVswXSxuZT1NZS5pbnZlcnRZKGhlWzBd''@;'; put 'put ''WzFdKS1PWzBdWzFdLHg9TWUuaW52ZXJ0WShoZVsxXVsxXSktT1sxXVsxXTtyZXR1cm4gTWUudHJhbnNsYXRlKGVlPno/KHorZWUpLzI6TWF0aC5taW4oMCx6KXx8TWF0aC5tYXgoMCxlZSkseD5uZT8obmUreCkvMjpNYXRoLm1pbigwLG5lKXx8TWF0aC5tYXgoMCx4KSl9ZnVuY3Rpb24gVGUo''@;'; put 'put ''KXt2YXIgUyxGLE1lPWRlLGhlPXZlLE89SWUsej1rZSxlZT1TZSxuZT1bMCwxLzBdLHg9W1stMS8wLC0xLzBdLFsxLzAsMS8wXV0sUD0yNTAsVj1yZS5aLFQ9KDAsbWUuWikoInN0YXJ0Iiwiem9vbSIsImVuZCIpLERlPTA7ZnVuY3Rpb24gUGUoZXQpe2V0LnByb3BlcnR5KCJfX3pvb20iLEFl''@;'; put 'put ''KS5vbigid2hlZWwuem9vbSIsQXQpLm9uKCJtb3VzZWRvd24uem9vbSIsaHQpLm9uKCJkYmxjbGljay56b29tIixCdCkuZmlsdGVyKGVlKS5vbigidG91Y2hzdGFydC56b29tIixvbikub24oInRvdWNobW92ZS56b29tIixfdCkub24oInRvdWNoZW5kLnpvb20gdG91Y2hjYW5jZWwuem9vbSIs''@;'; put 'put ''dHQpLnN0eWxlKCJ0b3VjaC1hY3Rpb24iLCJub25lIikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKX1mdW5jdGlvbiBRZShldCxsdCl7cmV0dXJuKGx0PU1hdGgubWF4KG5lWzBdLE1hdGgubWluKG5lWzFdLGx0KSkpPT09ZXQuaz9ldDpuZXcg''@;'; put 'put ''SyhsdCxldC54LGV0LnkpfWZ1bmN0aW9uICRlKGV0LGx0LEx0KXt2YXIgQ3Q9bHRbMF0tTHRbMF0qZXQuayxmdD1sdFsxXS1MdFsxXSpldC5rO3JldHVybiBDdD09PWV0LngmJmZ0PT09ZXQueT9ldDpuZXcgSyhldC5rLEN0LGZ0KX1mdW5jdGlvbiBndChldCl7cmV0dXJuWygrZXRbMF1bMF0r''@;'; put 'put ''ICtldFsxXVswXSkvMiwoK2V0WzBdWzFdKyArZXRbMV1bMV0pLzJdfWZ1bmN0aW9uIHd0KGV0LGx0LEx0KXtldC5vbigic3RhcnQuem9vbSIsZnVuY3Rpb24oKXttdCh0aGlzLGFyZ3VtZW50cykuc3RhcnQoKX0pLm9uKCJpbnRlcnJ1cHQuem9vbSBlbmQuem9vbSIsZnVuY3Rpb24oKXttdCh0''@;'; put 'put ''aGlzLGFyZ3VtZW50cykuZW5kKCl9KS50d2Vlbigiem9vbSIsZnVuY3Rpb24oKXt2YXIgQ3Q9dGhpcyxmdD1hcmd1bWVudHMsSHQ9bXQoQ3QsZnQpLEdlPWhlLmFwcGx5KEN0LGZ0KSxVZT1udWxsPT1MdD9ndChHZSk6ImZ1bmN0aW9uIj09dHlwZW9mIEx0P0x0LmFwcGx5KEN0LGZ0KTpMdCx5''@;'; put 'put ''dD1NYXRoLm1heChHZVsxXVswXS1HZVswXVswXSxHZVsxXVsxXS1HZVswXVsxXSksanQ9Q3QuX196b29tLEp0PSJmdW5jdGlvbiI9PXR5cGVvZiBsdD9sdC5hcHBseShDdCxmdCk6bHQsZ249VihqdC5pbnZlcnQoVWUpLmNvbmNhdCh5dC9qdC5rKSxKdC5pbnZlcnQoVWUpLmNvbmNhdCh5dC9K''@;'; put 'put ''dC5rKSk7cmV0dXJuIGZ1bmN0aW9uKGRuKXtpZigxPT09ZG4pZG49SnQ7ZWxzZXt2YXIgeW49Z24oZG4pLGxuPXl0L3luWzJdO2RuPW5ldyBLKGxuLFVlWzBdLXluWzBdKmxuLFVlWzFdLXluWzFdKmxuKX1IdC56b29tKG51bGwsZG4pfX0pfWZ1bmN0aW9uIG10KGV0LGx0LEx0KXtyZXR1cm4h''@;'; put 'put ''THQmJmV0Ll9fem9vbWluZ3x8bmV3IHZ0KGV0LGx0KX1mdW5jdGlvbiB2dChldCxsdCl7dGhpcy50aGF0PWV0LHRoaXMuYXJncz1sdCx0aGlzLmFjdGl2ZT0wLHRoaXMuZXh0ZW50PWhlLmFwcGx5KGV0LGx0KSx0aGlzLnRhcHM9MH1mdW5jdGlvbiBBdCgpe2lmKE1lLmFwcGx5KHRoaXMsYXJn''@;'; put 'put ''dW1lbnRzKSl7dmFyIGV0PW10KHRoaXMsYXJndW1lbnRzKSxsdD10aGlzLl9fem9vbSxMdD1NYXRoLm1heChuZVswXSxNYXRoLm1pbihuZVsxXSxsdC5rKk1hdGgucG93KDIsei5hcHBseSh0aGlzLGFyZ3VtZW50cykpKSksQ3Q9KDAsYWUuWikodGhpcyk7aWYoZXQud2hlZWwpKGV0Lm1vdXNl''@;'; put 'put ''WzBdWzBdIT09Q3RbMF18fGV0Lm1vdXNlWzBdWzFdIT09Q3RbMV0pJiYoZXQubW91c2VbMV09bHQuaW52ZXJ0KGV0Lm1vdXNlWzBdPUN0KSksY2xlYXJUaW1lb3V0KGV0LndoZWVsKTtlbHNle2lmKGx0Lms9PT1MdClyZXR1cm47ZXQubW91c2U9W0N0LGx0LmludmVydChDdCldLCgwLFcuaW50''@;'; put 'put ''ZXJydXB0KSh0aGlzKSxldC5zdGFydCgpfWNlKCksZXQud2hlZWw9c2V0VGltZW91dChmdCwxNTApLGV0Lnpvb20oIm1vdXNlIixPKCRlKFFlKGx0LEx0KSxldC5tb3VzZVswXSxldC5tb3VzZVsxXSksZXQuZXh0ZW50LHgpKX1mdW5jdGlvbiBmdCgpe2V0LndoZWVsPW51bGwsZXQuZW5kKCl9''@;'; put 'put ''fWZ1bmN0aW9uIGh0KCl7aWYoIUYmJk1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIGV0PW10KHRoaXMsYXJndW1lbnRzLCEwKSxsdD0oMCxCLlopKEUuQi52aWV3KS5vbigibW91c2Vtb3ZlLnpvb20iLEh0LCEwKS5vbigibW91c2V1cC56b29tIixHZSwhMCksTHQ9KDAsYWUuWikodGhp''@;'; put 'put ''cyksQ3Q9RS5CLmNsaWVudFgsZnQ9RS5CLmNsaWVudFk7UShFLkIudmlldyksb2UoKSxldC5tb3VzZT1bTHQsdGhpcy5fX3pvb20uaW52ZXJ0KEx0KV0sKDAsVy5pbnRlcnJ1cHQpKHRoaXMpLGV0LnN0YXJ0KCl9ZnVuY3Rpb24gSHQoKXtpZihjZSgpLCFldC5tb3ZlZCl7dmFyIFVlPUUuQi5j''@;'; put 'put ''bGllbnRYLUN0LHl0PUUuQi5jbGllbnRZLWZ0O2V0Lm1vdmVkPVVlKlVlK3l0Knl0PkRlfWV0Lnpvb20oIm1vdXNlIixPKCRlKGV0LnRoYXQuX196b29tLGV0Lm1vdXNlWzBdPSgwLGFlLlopKGV0LnRoYXQpLGV0Lm1vdXNlWzFdKSxldC5leHRlbnQseCkpfWZ1bmN0aW9uIEdlKCl7bHQub24o''@;'; put 'put ''Im1vdXNlbW92ZS56b29tIG1vdXNldXAuem9vbSIsbnVsbCksaihFLkIudmlldyxldC5tb3ZlZCksY2UoKSxldC5lbmQoKX19ZnVuY3Rpb24gQnQoKXtpZihNZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBldD10aGlzLl9fem9vbSxsdD0oMCxhZS5aKSh0aGlzKSxMdD1ldC5pbnZlcnQo''@;'; put 'put ''bHQpLEN0PWV0LmsqKEUuQi5zaGlmdEtleT8uNToyKSxmdD1PKCRlKFFlKGV0LEN0KSxsdCxMdCksaGUuYXBwbHkodGhpcyxhcmd1bWVudHMpLHgpO2NlKCksUD4wPygwLEIuWikodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKFApLmNhbGwod3QsZnQsbHQpOigwLEIuWikodGhpcykuY2Fs''@;'; put 'put ''bChQZS50cmFuc2Zvcm0sZnQpfX1mdW5jdGlvbiBvbigpe2lmKE1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIEN0LGZ0LEh0LEdlLGV0PUUuQi50b3VjaGVzLGx0PWV0Lmxlbmd0aCxMdD1tdCh0aGlzLGFyZ3VtZW50cyxFLkIuY2hhbmdlZFRvdWNoZXMubGVuZ3RoPT09bHQpO2Zvcihv''@;'; put 'put ''ZSgpLGZ0PTA7ZnQ8bHQ7KytmdClHZT1bR2U9KDAsWS5aKSh0aGlzLGV0LChIdD1ldFtmdF0pLmlkZW50aWZpZXIpLHRoaXMuX196b29tLmludmVydChHZSksSHQuaWRlbnRpZmllcl0sTHQudG91Y2gwPyFMdC50b3VjaDEmJkx0LnRvdWNoMFsyXSE9PUdlWzJdJiYoTHQudG91Y2gxPUdlLEx0''@;'; put 'put ''LnRhcHM9MCk6KEx0LnRvdWNoMD1HZSxDdD0hMCxMdC50YXBzPTErISFTKTtTJiYoUz1jbGVhclRpbWVvdXQoUykpLEN0JiYoTHQudGFwczwyJiYoUz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Uz1udWxsfSw1MDApKSwoMCxXLmludGVycnVwdCkodGhpcyksTHQuc3RhcnQoKSl9fWZ1bmN0aW9u''@;'; put 'put ''IF90KCl7aWYodGhpcy5fX3pvb21pbmcpe3ZhciBDdCxmdCxIdCxHZSxldD1tdCh0aGlzLGFyZ3VtZW50cyksbHQ9RS5CLmNoYW5nZWRUb3VjaGVzLEx0PWx0Lmxlbmd0aDtmb3IoY2UoKSxTJiYoUz1jbGVhclRpbWVvdXQoUykpLGV0LnRhcHM9MCxDdD0wO0N0PEx0OysrQ3QpSHQ9KDAsWS5a''@;'; put 'put ''KSh0aGlzLGx0LChmdD1sdFtDdF0pLmlkZW50aWZpZXIpLGV0LnRvdWNoMCYmZXQudG91Y2gwWzJdPT09ZnQuaWRlbnRpZmllcj9ldC50b3VjaDBbMF09SHQ6ZXQudG91Y2gxJiZldC50b3VjaDFbMl09PT1mdC5pZGVudGlmaWVyJiYoZXQudG91Y2gxWzBdPUh0KTtpZihmdD1ldC50aGF0Ll9f''@;'; put 'put ''em9vbSxldC50b3VjaDEpe3ZhciBVZT1ldC50b3VjaDBbMF0seXQ9ZXQudG91Y2gwWzFdLGp0PWV0LnRvdWNoMVswXSxKdD1ldC50b3VjaDFbMV0sZ249KGduPWp0WzBdLVVlWzBdKSpnbisoZ249anRbMV0tVWVbMV0pKmduLGRuPShkbj1KdFswXS15dFswXSkqZG4rKGRuPUp0WzFdLXl0WzFd''@;'; put 'put ''KSpkbjtmdD1RZShmdCxNYXRoLnNxcnQoZ24vZG4pKSxIdD1bKFVlWzBdK2p0WzBdKS8yLChVZVsxXStqdFsxXSkvMl0sR2U9Wyh5dFswXStKdFswXSkvMiwoeXRbMV0rSnRbMV0pLzJdfWVsc2V7aWYoIWV0LnRvdWNoMClyZXR1cm47SHQ9ZXQudG91Y2gwWzBdLEdlPWV0LnRvdWNoMFsxXX1l''@;'; put 'put ''dC56b29tKCJ0b3VjaCIsTygkZShmdCxIdCxHZSksZXQuZXh0ZW50LHgpKX19ZnVuY3Rpb24gdHQoKXtpZih0aGlzLl9fem9vbWluZyl7dmFyIEN0LGZ0LGV0PW10KHRoaXMsYXJndW1lbnRzKSxsdD1FLkIuY2hhbmdlZFRvdWNoZXMsTHQ9bHQubGVuZ3RoO2ZvcihvZSgpLEYmJmNsZWFyVGlt''@;'; put 'put ''ZW91dChGKSxGPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtGPW51bGx9LDUwMCksQ3Q9MDtDdDxMdDsrK0N0KWZ0PWx0W0N0XSxldC50b3VjaDAmJmV0LnRvdWNoMFsyXT09PWZ0LmlkZW50aWZpZXI/ZGVsZXRlIGV0LnRvdWNoMDpldC50b3VjaDEmJmV0LnRvdWNoMVsyXT09PWZ0LmlkZW50aWZp''@;'; put 'put ''ZXImJmRlbGV0ZSBldC50b3VjaDE7aWYoZXQudG91Y2gxJiYhZXQudG91Y2gwJiYoZXQudG91Y2gwPWV0LnRvdWNoMSxkZWxldGUgZXQudG91Y2gxKSxldC50b3VjaDApZXQudG91Y2gwWzFdPXRoaXMuX196b29tLmludmVydChldC50b3VjaDBbMF0pO2Vsc2UgaWYoZXQuZW5kKCksMj09PWV0''@;'; put 'put ''LnRhcHMpe3ZhciBIdD0oMCxCLlopKHRoaXMpLm9uKCJkYmxjbGljay56b29tIik7SHQmJkh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fXJldHVybiBQZS50cmFuc2Zvcm09ZnVuY3Rpb24oZXQsbHQsTHQpe3ZhciBDdD1ldC5zZWxlY3Rpb24/ZXQuc2VsZWN0aW9uKCk6ZXQ7Q3QucHJvcGVy''@;'; put 'put ''dHkoIl9fem9vbSIsQWUpLGV0IT09Q3Q/d3QoZXQsbHQsTHQpOkN0LmludGVycnVwdCgpLmVhY2goZnVuY3Rpb24oKXttdCh0aGlzLGFyZ3VtZW50cykuc3RhcnQoKS56b29tKG51bGwsImZ1bmN0aW9uIj09dHlwZW9mIGx0P2x0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTpsdCkuZW5kKCl9KX0s''@;'; put 'put ''UGUuc2NhbGVCeT1mdW5jdGlvbihldCxsdCxMdCl7UGUuc2NhbGVUbyhldCxmdW5jdGlvbigpe3ZhciBDdD10aGlzLl9fem9vbS5rLGZ0PSJmdW5jdGlvbiI9PXR5cGVvZiBsdD9sdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6bHQ7cmV0dXJuIEN0KmZ0fSxMdCl9LFBlLnNjYWxlVG89ZnVuY3Rp''@;'; put 'put ''b24oZXQsbHQsTHQpe1BlLnRyYW5zZm9ybShldCxmdW5jdGlvbigpe3ZhciBDdD1oZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksZnQ9dGhpcy5fX3pvb20sSHQ9bnVsbD09THQ/Z3QoQ3QpOiJmdW5jdGlvbiI9PXR5cGVvZiBMdD9MdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6THQsR2U9ZnQuaW52''@;'; put 'put ''ZXJ0KEh0KSxVZT0iZnVuY3Rpb24iPT10eXBlb2YgbHQ/bHQuYXBwbHkodGhpcyxhcmd1bWVudHMpOmx0O3JldHVybiBPKCRlKFFlKGZ0LFVlKSxIdCxHZSksQ3QseCl9LEx0KX0sUGUudHJhbnNsYXRlQnk9ZnVuY3Rpb24oZXQsbHQsTHQpe1BlLnRyYW5zZm9ybShldCxmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBPKHRoaXMuX196b29tLnRyYW5zbGF0ZSgiZnVuY3Rpb24iPT10eXBlb2YgbHQ/bHQuYXBwbHkodGhpcyxhcmd1bWVudHMpOmx0LCJmdW5jdGlvbiI9PXR5cGVvZiBMdD9MdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6THQpLGhlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx4KX0pfSxQZS50''@;'; put 'put ''cmFuc2xhdGVUbz1mdW5jdGlvbihldCxsdCxMdCxDdCl7UGUudHJhbnNmb3JtKGV0LGZ1bmN0aW9uKCl7dmFyIGZ0PWhlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxIdD10aGlzLl9fem9vbSxHZT1udWxsPT1DdD9ndChmdCk6ImZ1bmN0aW9uIj09dHlwZW9mIEN0P0N0LmFwcGx5KHRoaXMsYXJn''@;'; put 'put ''dW1lbnRzKTpDdDtyZXR1cm4gTyhKLnRyYW5zbGF0ZShHZVswXSxHZVsxXSkuc2NhbGUoSHQuaykudHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiBsdD8tbHQuYXBwbHkodGhpcyxhcmd1bWVudHMpOi1sdCwiZnVuY3Rpb24iPT10eXBlb2YgTHQ/LUx0LmFwcGx5KHRoaXMsYXJndW1lbnRz''@;'; put 'put ''KTotTHQpLGZ0LHgpfSxDdCl9LHZ0LnByb3RvdHlwZT17c3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09Kyt0aGlzLmFjdGl2ZSYmKHRoaXMudGhhdC5fX3pvb21pbmc9dGhpcyx0aGlzLmVtaXQoInN0YXJ0IikpLHRoaXN9LHpvb206ZnVuY3Rpb24oZXQsbHQpe3JldHVybiB0aGlzLm1vdXNl''@;'; put 'put ''JiYibW91c2UiIT09ZXQmJih0aGlzLm1vdXNlWzFdPWx0LmludmVydCh0aGlzLm1vdXNlWzBdKSksdGhpcy50b3VjaDAmJiJ0b3VjaCIhPT1ldCYmKHRoaXMudG91Y2gwWzFdPWx0LmludmVydCh0aGlzLnRvdWNoMFswXSkpLHRoaXMudG91Y2gxJiYidG91Y2giIT09ZXQmJih0aGlzLnRvdWNo''@;'; put 'put ''MVsxXT1sdC5pbnZlcnQodGhpcy50b3VjaDFbMF0pKSx0aGlzLnRoYXQuX196b29tPWx0LHRoaXMuZW1pdCgiem9vbSIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybiAwPT0tLXRoaXMuYWN0aXZlJiYoZGVsZXRlIHRoaXMudGhhdC5fX3pvb21pbmcsdGhpcy5lbWl0KCJlbmQiKSksdGhp''@;'; put 'put ''c30sZW1pdDpmdW5jdGlvbihldCl7KDAsRS5fSCkobmV3IHRlKFBlLGV0LHRoaXMudGhhdC5fX3pvb20pLFQuYXBwbHksVCxbZXQsdGhpcy50aGF0LHRoaXMuYXJnc10pfX0sUGUud2hlZWxEZWx0YT1mdW5jdGlvbihldCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHo9ImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIGV0P2V0Ok4oK2V0KSxQZSk6en0sUGUuZmlsdGVyPWZ1bmN0aW9uKGV0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTWU9ImZ1bmN0aW9uIj09dHlwZW9mIGV0P2V0Ok4oISFldCksUGUpOk1lfSxQZS50b3VjaGFibGU9ZnVuY3Rpb24oZXQpe3JldHVybiBhcmd1bWVudHMubGVu''@;'; put 'put ''Z3RoPyhlZT0iZnVuY3Rpb24iPT10eXBlb2YgZXQ/ZXQ6TighIWV0KSxQZSk6ZWV9LFBlLmV4dGVudD1mdW5jdGlvbihldCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGhlPSJmdW5jdGlvbiI9PXR5cGVvZiBldD9ldDpOKFtbK2V0WzBdWzBdLCtldFswXVsxXV0sWytldFsxXVswXSwrZXRb''@;'; put 'put ''MV1bMV1dXSksUGUpOmhlfSxQZS5zY2FsZUV4dGVudD1mdW5jdGlvbihldCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG5lWzBdPStldFswXSxuZVsxXT0rZXRbMV0sUGUpOltuZVswXSxuZVsxXV19LFBlLnRyYW5zbGF0ZUV4dGVudD1mdW5jdGlvbihldCl7cmV0dXJuIGFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg/KHhbMF1bMF09K2V0WzBdWzBdLHhbMV1bMF09K2V0WzFdWzBdLHhbMF1bMV09K2V0WzBdWzFdLHhbMV1bMV09K2V0WzFdWzFdLFBlKTpbW3hbMF1bMF0seFswXVsxXV0sW3hbMV1bMF0seFsxXVsxXV1dfSxQZS5jb25zdHJhaW49ZnVuY3Rpb24oZXQpe3JldHVybiBhcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoPyhPPWV0LFBlKTpPfSxQZS5kdXJhdGlvbj1mdW5jdGlvbihldCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFA9K2V0LFBlKTpQfSxQZS5pbnRlcnBvbGF0ZT1mdW5jdGlvbihldCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFY9ZXQsUGUpOlZ9LFBlLm9uPWZ1bmN0aW9uKCl7''@;'; put 'put ''dmFyIGV0PVQub24uYXBwbHkoVCxhcmd1bWVudHMpO3JldHVybiBldD09PVQ/UGU6ZXR9LFBlLmNsaWNrRGlzdGFuY2U9ZnVuY3Rpb24oZXQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhEZT0oZXQ9K2V0KSpldCxQZSk6TWF0aC5zcXJ0KERlKX0sUGV9c2UucHJvdG90eXBlPUsucHJvdG90''@;'; put 'put ''eXBlfSw3MzY4NDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7SmUudXRpbHM9TCg3NzQ1MSksSmUuQ2lwaGVyPUwoMzgxNzApLEplLkRFUz1MKDQ2MzEpLEplLkNCQz1MKDc5NDU0KSxKZS5FREU9TCgyMTg2Mil9LDc5NDU0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgzMjM5''@;'; put 'put ''MSksQj1MKDgzODk0KSxFPXt9O2Z1bmN0aW9uIEVlKFEpe21lLmVxdWFsKFEubGVuZ3RoLDgsIkludmFsaWQgSVYgbGVuZ3RoIiksdGhpcy5pdj1uZXcgQXJyYXkoOCk7Zm9yKHZhciBqPTA7ajx0aGlzLml2Lmxlbmd0aDtqKyspdGhpcy5pdltqXT1RW2pdfUplLmluc3RhbnRpYXRlPWZ1bmN0''@;'; put 'put ''aW9uIFUoUSl7ZnVuY3Rpb24gaihXKXtRLmNhbGwodGhpcyxXKSx0aGlzLl9jYmNJbml0KCl9QihqLFEpO2Zvcih2YXIgcmU9T2JqZWN0LmtleXMoRSksYWU9MDthZTxyZS5sZW5ndGg7YWUrKyl7dmFyIFk9cmVbYWVdO2oucHJvdG90eXBlW1ldPUVbWV19cmV0dXJuIGouY3JlYXRlPWZ1bmN0''@;'; put 'put ''aW9uKE4pe3JldHVybiBuZXcgaihOKX0san0sRS5fY2JjSW5pdD1mdW5jdGlvbigpe3ZhciBqPW5ldyBFZSh0aGlzLm9wdGlvbnMuaXYpO3RoaXMuX2NiY1N0YXRlPWp9LEUuX3VwZGF0ZT1mdW5jdGlvbihqLHJlLGFlLFkpe3ZhciBOPXRoaXMuY29uc3RydWN0b3Iuc3VwZXJfLnByb3RvdHlw''@;'; put 'put ''ZSx0ZT10aGlzLl9jYmNTdGF0ZS5pdjtpZigiZW5jcnlwdCI9PT10aGlzLnR5cGUpe2Zvcih2YXIgSz0wO0s8dGhpcy5ibG9ja1NpemU7SysrKXRlW0tdXj1qW3JlK0tdO2ZvcihOLl91cGRhdGUuY2FsbCh0aGlzLHRlLDAsYWUsWSksSz0wO0s8dGhpcy5ibG9ja1NpemU7SysrKXRlW0tdPWFl''@;'; put 'put ''W1krS119ZWxzZXtmb3IoTi5fdXBkYXRlLmNhbGwodGhpcyxqLHJlLGFlLFkpLEs9MDtLPHRoaXMuYmxvY2tTaXplO0srKylhZVtZK0tdXj10ZVtLXTtmb3IoSz0wO0s8dGhpcy5ibG9ja1NpemU7SysrKXRlW0tdPWpbcmUrS119fX0sMzgxNzA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3Zh''@;'; put 'put ''ciBtZT1MKDMyMzkxKTtmdW5jdGlvbiBCKEUpe3RoaXMub3B0aW9ucz1FLHRoaXMudHlwZT10aGlzLm9wdGlvbnMudHlwZSx0aGlzLmJsb2NrU2l6ZT04LHRoaXMuX2luaXQoKSx0aGlzLmJ1ZmZlcj1uZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpLHRoaXMuYnVmZmVyT2ZmPTB9WGUuZXhwb3J0''@;'; put 'put ''cz1CLEIucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKCl7fSxCLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oRWUpe3JldHVybiAwPT09RWUubGVuZ3RoP1tdOiJkZWNyeXB0Ij09PXRoaXMudHlwZT90aGlzLl91cGRhdGVEZWNyeXB0KEVlKTp0aGlzLl91cGRhdGVFbmNyeXB0KEVlKX0sQi5w''@;'; put 'put ''cm90b3R5cGUuX2J1ZmZlcj1mdW5jdGlvbihFZSxVKXtmb3IodmFyIFE9TWF0aC5taW4odGhpcy5idWZmZXIubGVuZ3RoLXRoaXMuYnVmZmVyT2ZmLEVlLmxlbmd0aC1VKSxqPTA7ajxRO2orKyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZitqXT1FZVtVK2pdO3JldHVybiB0aGlzLmJ1ZmZl''@;'; put 'put ''ck9mZis9USxRfSxCLnByb3RvdHlwZS5fZmx1c2hCdWZmZXI9ZnVuY3Rpb24oRWUsVSl7cmV0dXJuIHRoaXMuX3VwZGF0ZSh0aGlzLmJ1ZmZlciwwLEVlLFUpLHRoaXMuYnVmZmVyT2ZmPTAsdGhpcy5ibG9ja1NpemV9LEIucHJvdG90eXBlLl91cGRhdGVFbmNyeXB0PWZ1bmN0aW9uKEVlKXt2''@;'; put 'put ''YXIgVT0wLFE9MCxyZT1uZXcgQXJyYXkoKCh0aGlzLmJ1ZmZlck9mZitFZS5sZW5ndGgpL3RoaXMuYmxvY2tTaXplfDApKnRoaXMuYmxvY2tTaXplKTswIT09dGhpcy5idWZmZXJPZmYmJihVKz10aGlzLl9idWZmZXIoRWUsVSksdGhpcy5idWZmZXJPZmY9PT10aGlzLmJ1ZmZlci5sZW5ndGgm''@;'; put 'put ''JihRKz10aGlzLl9mbHVzaEJ1ZmZlcihyZSxRKSkpO2Zvcih2YXIgYWU9RWUubGVuZ3RoLShFZS5sZW5ndGgtVSkldGhpcy5ibG9ja1NpemU7VTxhZTtVKz10aGlzLmJsb2NrU2l6ZSl0aGlzLl91cGRhdGUoRWUsVSxyZSxRKSxRKz10aGlzLmJsb2NrU2l6ZTtmb3IoO1U8RWUubGVuZ3RoO1Ur''@;'; put 'put ''Kyx0aGlzLmJ1ZmZlck9mZisrKXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmXT1FZVtVXTtyZXR1cm4gcmV9LEIucHJvdG90eXBlLl91cGRhdGVEZWNyeXB0PWZ1bmN0aW9uKEVlKXtmb3IodmFyIFU9MCxRPTAsaj1NYXRoLmNlaWwoKHRoaXMuYnVmZmVyT2ZmK0VlLmxlbmd0aCkvdGhpcy5i''@;'; put 'put ''bG9ja1NpemUpLTEscmU9bmV3IEFycmF5KGoqdGhpcy5ibG9ja1NpemUpO2o+MDtqLS0pVSs9dGhpcy5fYnVmZmVyKEVlLFUpLFErPXRoaXMuX2ZsdXNoQnVmZmVyKHJlLFEpO3JldHVybiBVKz10aGlzLl9idWZmZXIoRWUsVSkscmV9LEIucHJvdG90eXBlLmZpbmFsPWZ1bmN0aW9uKEVlKXt2''@;'; put 'put ''YXIgVSxRO3JldHVybiBFZSYmKFU9dGhpcy51cGRhdGUoRWUpKSxRPSJlbmNyeXB0Ij09PXRoaXMudHlwZT90aGlzLl9maW5hbEVuY3J5cHQoKTp0aGlzLl9maW5hbERlY3J5cHQoKSxVP1UuY29uY2F0KFEpOlF9LEIucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24oRWUsVSl7aWYoMD09PVUpcmV0''@;'; put 'put ''dXJuITE7Zm9yKDtVPEVlLmxlbmd0aDspRWVbVSsrXT0wO3JldHVybiEwfSxCLnByb3RvdHlwZS5fZmluYWxFbmNyeXB0PWZ1bmN0aW9uKCl7aWYoIXRoaXMuX3BhZCh0aGlzLmJ1ZmZlcix0aGlzLmJ1ZmZlck9mZikpcmV0dXJuW107dmFyIEVlPW5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7''@;'; put 'put ''cmV0dXJuIHRoaXMuX3VwZGF0ZSh0aGlzLmJ1ZmZlciwwLEVlLDApLEVlfSxCLnByb3RvdHlwZS5fdW5wYWQ9ZnVuY3Rpb24oRWUpe3JldHVybiBFZX0sQi5wcm90b3R5cGUuX2ZpbmFsRGVjcnlwdD1mdW5jdGlvbigpe21lLmVxdWFsKHRoaXMuYnVmZmVyT2ZmLHRoaXMuYmxvY2tTaXplLCJO''@;'; put 'put ''b3QgZW5vdWdoIGRhdGEgdG8gZGVjcnlwdCIpO3ZhciBFZT1uZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpO3JldHVybiB0aGlzLl9mbHVzaEJ1ZmZlcihFZSwwKSx0aGlzLl91bnBhZChFZSl9fSw0NjMxOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgzMjM5MSksQj1MKDgzODk0''@;'; put 'put ''KSxFPUwoNzc0NTEpLEVlPUwoMzgxNzApO2Z1bmN0aW9uIFUoKXt0aGlzLnRtcD1uZXcgQXJyYXkoMiksdGhpcy5rZXlzPW51bGx9ZnVuY3Rpb24gUShyZSl7RWUuY2FsbCh0aGlzLHJlKTt2YXIgYWU9bmV3IFU7dGhpcy5fZGVzU3RhdGU9YWUsdGhpcy5kZXJpdmVLZXlzKGFlLHJlLmtleSl9''@;'; put 'put ''QihRLEVlKSxYZS5leHBvcnRzPVEsUS5jcmVhdGU9ZnVuY3Rpb24oYWUpe3JldHVybiBuZXcgUShhZSl9O3ZhciBqPVsxLDEsMiwyLDIsMiwyLDIsMSwyLDIsMiwyLDIsMiwxXTtRLnByb3RvdHlwZS5kZXJpdmVLZXlzPWZ1bmN0aW9uKGFlLFkpe2FlLmtleXM9bmV3IEFycmF5KDMyKSxtZS5l''@;'; put 'put ''cXVhbChZLmxlbmd0aCx0aGlzLmJsb2NrU2l6ZSwiSW52YWxpZCBrZXkgbGVuZ3RoIik7dmFyIFc9RS5yZWFkVUludDMyQkUoWSwwKSxOPUUucmVhZFVJbnQzMkJFKFksNCk7RS5wYzEoVyxOLGFlLnRtcCwwKSxXPWFlLnRtcFswXSxOPWFlLnRtcFsxXTtmb3IodmFyIHRlPTA7dGU8YWUua2V5''@;'; put 'put ''cy5sZW5ndGg7dGUrPTIpe3ZhciBLPWpbdGU+Pj4xXTtXPUUucjI4c2hsKFcsSyksTj1FLnIyOHNobChOLEspLEUucGMyKFcsTixhZS5rZXlzLHRlKX19LFEucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oYWUsWSxXLE4pe3ZhciB0ZT10aGlzLl9kZXNTdGF0ZSxLPUUucmVhZFVJbnQzMkJF''@;'; put 'put ''KGFlLFkpLEo9RS5yZWFkVUludDMyQkUoYWUsWSs0KTtFLmlwKEssSix0ZS50bXAsMCksSz10ZS50bXBbMF0sSj10ZS50bXBbMV0sImVuY3J5cHQiPT09dGhpcy50eXBlP3RoaXMuX2VuY3J5cHQodGUsSyxKLHRlLnRtcCwwKTp0aGlzLl9kZWNyeXB0KHRlLEssSix0ZS50bXAsMCksSj10ZS50''@;'; put 'put ''bXBbMV0sRS53cml0ZVVJbnQzMkJFKFcsSz10ZS50bXBbMF0sTiksRS53cml0ZVVJbnQzMkJFKFcsSixOKzQpfSxRLnByb3RvdHlwZS5fcGFkPWZ1bmN0aW9uKGFlLFkpe2Zvcih2YXIgVz1hZS5sZW5ndGgtWSxOPVk7TjxhZS5sZW5ndGg7TisrKWFlW05dPVc7cmV0dXJuITB9LFEucHJvdG90''@;'; put 'put ''eXBlLl91bnBhZD1mdW5jdGlvbihhZSl7Zm9yKHZhciBZPWFlW2FlLmxlbmd0aC0xXSxXPWFlLmxlbmd0aC1ZO1c8YWUubGVuZ3RoO1crKyltZS5lcXVhbChhZVtXXSxZKTtyZXR1cm4gYWUuc2xpY2UoMCxhZS5sZW5ndGgtWSl9LFEucHJvdG90eXBlLl9lbmNyeXB0PWZ1bmN0aW9uKGFlLFks''@;'; put 'put ''VyxOLHRlKXtmb3IodmFyIEs9WSxKPVcsc2U9MDtzZTxhZS5rZXlzLmxlbmd0aDtzZSs9Mil7dmFyIG9lPWFlLmtleXNbc2VdLGNlPWFlLmtleXNbc2UrMV07RS5leHBhbmQoSixhZS50bXAsMCk7dmFyIGRlPUUuc3Vic3RpdHV0ZShvZV49YWUudG1wWzBdLGNlXj1hZS50bXBbMV0pLEFlPUo7''@;'; put 'put ''Sj0oS15FLnBlcm11dGUoZGUpKT4+PjAsSz1BZX1FLnJpcChKLEssTix0ZSl9LFEucHJvdG90eXBlLl9kZWNyeXB0PWZ1bmN0aW9uKGFlLFksVyxOLHRlKXtmb3IodmFyIEs9VyxKPVksc2U9YWUua2V5cy5sZW5ndGgtMjtzZT49MDtzZS09Mil7dmFyIG9lPWFlLmtleXNbc2VdLGNlPWFlLmtl''@;'; put 'put ''eXNbc2UrMV07RS5leHBhbmQoSyxhZS50bXAsMCk7dmFyIGRlPUUuc3Vic3RpdHV0ZShvZV49YWUudG1wWzBdLGNlXj1hZS50bXBbMV0pLEFlPUs7Sz0oSl5FLnBlcm11dGUoZGUpKT4+PjAsSj1BZX1FLnJpcChLLEosTix0ZSl9fSwyMTg2MjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFy''@;'; put 'put ''IG1lPUwoMzIzOTEpLEI9TCg4Mzg5NCksRT1MKDM4MTcwKSxFZT1MKDQ2MzEpO2Z1bmN0aW9uIFUoaixyZSl7bWUuZXF1YWwocmUubGVuZ3RoLDI0LCJJbnZhbGlkIGtleSBsZW5ndGgiKTt2YXIgYWU9cmUuc2xpY2UoMCw4KSxZPXJlLnNsaWNlKDgsMTYpLFc9cmUuc2xpY2UoMTYsMjQpO3Ro''@;'; put 'put ''aXMuY2lwaGVycz0iZW5jcnlwdCI9PT1qP1tFZS5jcmVhdGUoe3R5cGU6ImVuY3J5cHQiLGtleTphZX0pLEVlLmNyZWF0ZSh7dHlwZToiZGVjcnlwdCIsa2V5Oll9KSxFZS5jcmVhdGUoe3R5cGU6ImVuY3J5cHQiLGtleTpXfSldOltFZS5jcmVhdGUoe3R5cGU6ImRlY3J5cHQiLGtleTpXfSks''@;'; put 'put ''RWUuY3JlYXRlKHt0eXBlOiJlbmNyeXB0IixrZXk6WX0pLEVlLmNyZWF0ZSh7dHlwZToiZGVjcnlwdCIsa2V5OmFlfSldfWZ1bmN0aW9uIFEoail7RS5jYWxsKHRoaXMsaik7dmFyIHJlPW5ldyBVKHRoaXMudHlwZSx0aGlzLm9wdGlvbnMua2V5KTt0aGlzLl9lZGVTdGF0ZT1yZX1CKFEsRSks''@;'; put 'put ''WGUuZXhwb3J0cz1RLFEuY3JlYXRlPWZ1bmN0aW9uKHJlKXtyZXR1cm4gbmV3IFEocmUpfSxRLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHJlLGFlLFksVyl7dmFyIE49dGhpcy5fZWRlU3RhdGU7Ti5jaXBoZXJzWzBdLl91cGRhdGUocmUsYWUsWSxXKSxOLmNpcGhlcnNbMV0uX3VwZGF0''@;'; put 'put ''ZShZLFcsWSxXKSxOLmNpcGhlcnNbMl0uX3VwZGF0ZShZLFcsWSxXKX0sUS5wcm90b3R5cGUuX3BhZD1FZS5wcm90b3R5cGUuX3BhZCxRLnByb3RvdHlwZS5fdW5wYWQ9RWUucHJvdG90eXBlLl91bnBhZH0sNzc0NTE6KFhlLEplKT0+eyJ1c2Ugc3RyaWN0IjtKZS5yZWFkVUludDMyQkU9ZnVu''@;'; put 'put ''Y3Rpb24oRWUsVSl7cmV0dXJuKEVlWzArVV08PDI0fEVlWzErVV08PDE2fEVlWzIrVV08PDh8RWVbMytVXSk+Pj4wfSxKZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKEVlLFUsUSl7RWVbMCtRXT1VPj4+MjQsRWVbMStRXT1VPj4+MTYmMjU1LEVlWzIrUV09VT4+PjgmMjU1LEVlWzMrUV09MjU1''@;'; put 'put ''JlV9LEplLmlwPWZ1bmN0aW9uKEVlLFUsUSxqKXtmb3IodmFyIHJlPTAsYWU9MCxZPTY7WT49MDtZLT0yKXtmb3IodmFyIFc9MDtXPD0yNDtXKz04KXJlPDw9MSxyZXw9VT4+PlcrWSYxO2ZvcihXPTA7Vzw9MjQ7Vys9OClyZTw8PTEscmV8PUVlPj4+VytZJjF9Zm9yKFk9NjtZPj0wO1ktPTIp''@;'; put 'put ''e2ZvcihXPTE7Vzw9MjU7Vys9OClhZTw8PTEsYWV8PVU+Pj5XK1kmMTtmb3IoVz0xO1c8PTI1O1crPTgpYWU8PD0xLGFlfD1FZT4+PlcrWSYxfVFbaiswXT1yZT4+PjAsUVtqKzFdPWFlPj4+MH0sSmUucmlwPWZ1bmN0aW9uKEVlLFUsUSxqKXtmb3IodmFyIHJlPTAsYWU9MCxZPTA7WTw0O1kr''@;'; put 'put ''Kylmb3IodmFyIFc9MjQ7Vz49MDtXLT04KXJlPDw9MSxyZXw9VT4+PlcrWSYxLHJlPDw9MSxyZXw9RWU+Pj5XK1kmMTtmb3IoWT00O1k8ODtZKyspZm9yKFc9MjQ7Vz49MDtXLT04KWFlPDw9MSxhZXw9VT4+PlcrWSYxLGFlPDw9MSxhZXw9RWU+Pj5XK1kmMTtRW2orMF09cmU+Pj4wLFFbaisx''@;'; put 'put ''XT1hZT4+PjB9LEplLnBjMT1mdW5jdGlvbihFZSxVLFEsail7Zm9yKHZhciByZT0wLGFlPTAsWT03O1k+PTU7WS0tKXtmb3IodmFyIFc9MDtXPD0yNDtXKz04KXJlPDw9MSxyZXw9VT4+VytZJjE7Zm9yKFc9MDtXPD0yNDtXKz04KXJlPDw9MSxyZXw9RWU+PlcrWSYxfWZvcihXPTA7Vzw9MjQ7''@;'; put 'put ''Vys9OClyZTw8PTEscmV8PVU+PlcrWSYxO2ZvcihZPTE7WTw9MztZKyspe2ZvcihXPTA7Vzw9MjQ7Vys9OClhZTw8PTEsYWV8PVU+PlcrWSYxO2ZvcihXPTA7Vzw9MjQ7Vys9OClhZTw8PTEsYWV8PUVlPj5XK1kmMX1mb3IoVz0wO1c8PTI0O1crPTgpYWU8PD0xLGFlfD1FZT4+VytZJjE7UVtq''@;'; put 'put ''KzBdPXJlPj4+MCxRW2orMV09YWU+Pj4wfSxKZS5yMjhzaGw9ZnVuY3Rpb24oRWUsVSl7cmV0dXJuIEVlPDxVJjI2ODQzNTQ1NXxFZT4+PjI4LVV9O3ZhciBMPVsxNCwxMSwxNyw0LDI3LDIzLDI1LDAsMTMsMjIsNywxOCw1LDksMTYsMjQsMiwyMCwxMiwyMSwxLDgsMTUsMjYsMTUsNCwyNSwx''@;'; put 'put ''OSw5LDEsMjYsMTYsNSwxMSwyMyw4LDEyLDcsMTcsMCwyMiwzLDEwLDE0LDYsMjAsMjcsMjRdO0plLnBjMj1mdW5jdGlvbihFZSxVLFEsail7Zm9yKHZhciByZT0wLGFlPTAsWT1MLmxlbmd0aD4+PjEsVz0wO1c8WTtXKyspcmU8PD0xLHJlfD1FZT4+PkxbV10mMTtmb3IoVz1ZO1c8TC5sZW5n''@;'; put 'put ''dGg7VysrKWFlPDw9MSxhZXw9VT4+PkxbV10mMTtRW2orMF09cmU+Pj4wLFFbaisxXT1hZT4+PjB9LEplLmV4cGFuZD1mdW5jdGlvbihFZSxVLFEpe3ZhciBqPTAscmU9MDtqPSgxJkVlKTw8NXxFZT4+PjI3O2Zvcih2YXIgYWU9MjM7YWU+PTE1O2FlLT00KWo8PD02LGp8PUVlPj4+YWUmNjM7''@;'; put 'put ''Zm9yKGFlPTExO2FlPj0zO2FlLT00KXJlfD1FZT4+PmFlJjYzLHJlPDw9NjtyZXw9KDMxJkVlKTw8MXxFZT4+PjMxLFVbUSswXT1qPj4+MCxVW1ErMV09cmU+Pj4wfTt2YXIgbWU9WzE0LDAsNCwxNSwxMyw3LDEsNCwyLDE0LDE1LDIsMTEsMTMsOCwxLDMsMTAsMTAsNiw2LDEyLDEyLDExLDUs''@;'; put 'put ''OSw5LDUsMCwzLDcsOCw0LDE1LDEsMTIsMTQsOCw4LDIsMTMsNCw2LDksMiwxLDExLDcsMTUsNSwxMiwxMSw5LDMsNywxNCwzLDEwLDEwLDAsNSw2LDAsMTMsMTUsMywxLDEzLDgsNCwxNCw3LDYsMTUsMTEsMiwzLDgsNCwxNCw5LDEyLDcsMCwyLDEsMTMsMTAsMTIsNiwwLDksNSwxMSwxMCw1''@;'; put 'put ''LDAsMTMsMTQsOCw3LDEwLDExLDEsMTAsMyw0LDE1LDEzLDQsMSwyLDUsMTEsOCw2LDEyLDcsNiwxMiw5LDAsMyw1LDIsMTQsMTUsOSwxMCwxMywwLDcsOSwwLDE0LDksNiwzLDMsNCwxNSw2LDUsMTAsMSwyLDEzLDgsMTIsNSw3LDE0LDExLDEyLDQsMTEsMiwxNSw4LDEsMTMsMSw2LDEwLDQs''@;'; put 'put ''MTMsOSwwLDgsNiwxNSw5LDMsOCwwLDcsMTEsNCwxLDE1LDIsMTQsMTIsMyw1LDExLDEwLDUsMTQsMiw3LDEyLDcsMTMsMTMsOCwxNCwxMSwzLDUsMCw2LDYsMTUsOSwwLDEwLDMsMSw0LDIsNyw4LDIsNSwxMiwxMSwxLDEyLDEwLDQsMTQsMTUsOSwxMCwzLDYsMTUsOSwwLDAsNiwxMiwxMCwx''@;'; put 'put ''MSwxLDcsMTMsMTMsOCwxNSw5LDEsNCwzLDUsMTQsMTEsNSwxMiwyLDcsOCwyLDQsMTQsMiwxNCwxMiwxMSw0LDIsMSwxMiw3LDQsMTAsNywxMSwxMyw2LDEsOCw1LDUsMCwzLDE1LDE1LDEwLDEzLDMsMCw5LDE0LDgsOSw2LDQsMTEsMiw4LDEsMTIsMTEsNywxMCwxLDEzLDE0LDcsMiw4LDEz''@;'; put 'put ''LDE1LDYsOSwxNSwxMiwwLDUsOSw2LDEwLDMsNCwwLDUsMTQsMywxMiwxMCwxLDE1LDEwLDQsMTUsMiw5LDcsMiwxMiw2LDksOCw1LDAsNiwxMywxLDMsMTMsNCwxNCwxNCwwLDcsMTEsNSwzLDExLDgsOSw0LDE0LDMsMTUsMiw1LDEyLDIsOSw4LDUsMTIsMTUsMywxMCw3LDExLDAsMTQsNCwx''@;'; put 'put ''LDEwLDcsMSw2LDEzLDAsMTEsOCw2LDEzLDQsMTMsMTEsMCwyLDExLDE0LDcsMTUsNCwwLDksOCwxLDEzLDEwLDMsMTQsMTIsMyw5LDUsNywxMiw1LDIsMTAsMTUsNiw4LDEsNiwxLDYsNCwxMSwxMSwxMywxMyw4LDEyLDEsMyw0LDcsMTAsMTQsNywxMCw5LDE1LDUsNiwwLDgsMTUsMCwxNCw1''@;'; put 'put ''LDIsOSwzLDIsMTIsMTMsMSwyLDE1LDgsMTMsNCw4LDYsMTAsMTUsMywxMSw3LDEsNCwxMCwxMiw5LDUsMyw2LDE0LDExLDUsMCwwLDE0LDEyLDksNywyLDcsMiwxMSwxLDQsMTQsMSw3LDksNCwxMiwxMCwxNCw4LDIsMTMsMCwxNSw2LDEyLDEwLDksMTMsMCwxNSwzLDMsNSw1LDYsOCwxMV07''@;'; put 'put ''SmUuc3Vic3RpdHV0ZT1mdW5jdGlvbihFZSxVKXtmb3IodmFyIFE9MCxqPTA7ajw0O2orKylRPDw9NCxRfD1tZVs2NCpqKyhFZT4+PjE4LTYqaiY2MyldO2ZvcihqPTA7ajw0O2orKylRPDw9NCxRfD1tZVsyNTYrNjQqaisoVT4+PjE4LTYqaiY2MyldO3JldHVybiBRPj4+MH07dmFyIEI9WzE2''@;'; put 'put ''LDI1LDEyLDExLDMsMjAsNCwxNSwzMSwxNyw5LDYsMjcsMTQsMSwyMiwzMCwyNCw4LDE4LDAsNSwyOSwyMywxMywxOSwyLDI2LDEwLDIxLDI4LDddO0plLnBlcm11dGU9ZnVuY3Rpb24oRWUpe2Zvcih2YXIgVT0wLFE9MDtRPEIubGVuZ3RoO1ErKylVPDw9MSxVfD1FZT4+PkJbUV0mMTtyZXR1''@;'; put 'put ''cm4gVT4+PjB9LEplLnBhZFNwbGl0PWZ1bmN0aW9uKEVlLFUsUSl7Zm9yKHZhciBqPUVlLnRvU3RyaW5nKDIpO2oubGVuZ3RoPFU7KWo9IjAiK2o7Zm9yKHZhciByZT1bXSxhZT0wO2FlPFU7YWUrPVEpcmUucHVzaChqLnNsaWNlKGFlLGFlK1EpKTtyZXR1cm4gcmUuam9pbigiICIpfX0sOTg4''@;'; put 'put ''Mjk6KFhlLEplLEwpPT57dmFyIG1lPUwoODU1NjMpLEI9TCgyOTc5OSksRT1MKDIxNDE5KSxVPXtiaW5hcnk6ITAsaGV4OiEwLGJhc2U2NDohMH07SmUuRGlmZmllSGVsbG1hbkdyb3VwPUplLmNyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cD1KZS5nZXREaWZmaWVIZWxsbWFuPWZ1bmN0aW9uIEVl''@;'; put 'put ''KGope3ZhciByZT1uZXcgQnVmZmVyKEJbal0ucHJpbWUsImhleCIpLGFlPW5ldyBCdWZmZXIoQltqXS5nZW4sImhleCIpO3JldHVybiBuZXcgRShyZSxhZSl9LEplLmNyZWF0ZURpZmZpZUhlbGxtYW49SmUuRGlmZmllSGVsbG1hbj1mdW5jdGlvbiBRKGoscmUsYWUsWSl7cmV0dXJuIEJ1ZmZl''@;'; put 'put ''ci5pc0J1ZmZlcihyZSl8fHZvaWQgMD09PVVbcmVdP1EoaiwiYmluYXJ5IixyZSxhZSk6KHJlPXJlfHwiYmluYXJ5IixZPVl8fCJiaW5hcnkiLGFlPWFlfHxuZXcgQnVmZmVyKFsyXSksQnVmZmVyLmlzQnVmZmVyKGFlKXx8KGFlPW5ldyBCdWZmZXIoYWUsWSkpLCJudW1iZXIiPT10eXBlb2Yg''@;'; put 'put ''aj9uZXcgRShtZShqLGFlKSxhZSwhMCk6KEJ1ZmZlci5pc0J1ZmZlcihqKXx8KGo9bmV3IEJ1ZmZlcihqLHJlKSksbmV3IEUoaixhZSwhMCkpKX19LDIxNDE5OihYZSxKZSxMKT0+e3ZhciBtZT1MKDg4MzEzKSxFPW5ldyhMKDE3MDc5KSksRWU9bmV3IG1lKDI0KSxVPW5ldyBtZSgxMSksUT1u''@;'; put 'put ''ZXcgbWUoMTApLGo9bmV3IG1lKDMpLHJlPW5ldyBtZSg3KSxhZT1MKDg1NTYzKSxZPUwoNTM3NTMpO2Z1bmN0aW9uIFcob2UsY2Upe3JldHVybiBjZT1jZXx8InV0ZjgiLEJ1ZmZlci5pc0J1ZmZlcihvZSl8fChvZT1uZXcgQnVmZmVyKG9lLGNlKSksdGhpcy5fcHViPW5ldyBtZShvZSksdGhp''@;'; put 'put ''c31mdW5jdGlvbiBOKG9lLGNlKXtyZXR1cm4gY2U9Y2V8fCJ1dGY4IixCdWZmZXIuaXNCdWZmZXIob2UpfHwob2U9bmV3IEJ1ZmZlcihvZSxjZSkpLHRoaXMuX3ByaXY9bmV3IG1lKG9lKSx0aGlzfVhlLmV4cG9ydHM9Sjt2YXIgdGU9e307ZnVuY3Rpb24gSihvZSxjZSxkZSl7dGhpcy5zZXRH''@;'; put 'put ''ZW5lcmF0b3IoY2UpLHRoaXMuX19wcmltZT1uZXcgbWUob2UpLHRoaXMuX3ByaW1lPW1lLm1vbnQodGhpcy5fX3ByaW1lKSx0aGlzLl9wcmltZUxlbj1vZS5sZW5ndGgsdGhpcy5fcHViPXZvaWQgMCx0aGlzLl9wcml2PXZvaWQgMCx0aGlzLl9wcmltZUNvZGU9dm9pZCAwLGRlPyh0aGlzLnNl''@;'; put 'put ''dFB1YmxpY0tleT1XLHRoaXMuc2V0UHJpdmF0ZUtleT1OKTp0aGlzLl9wcmltZUNvZGU9OH1mdW5jdGlvbiBzZShvZSxjZSl7dmFyIGRlPW5ldyBCdWZmZXIob2UudG9BcnJheSgpKTtyZXR1cm4gY2U/ZGUudG9TdHJpbmcoY2UpOmRlfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlw''@;'; put 'put ''ZSwidmVyaWZ5RXJyb3IiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiJudW1iZXIiIT10eXBlb2YgdGhpcy5fcHJpbWVDb2RlJiYodGhpcy5fcHJpbWVDb2RlPWZ1bmN0aW9uIEsob2UsY2Upe3ZhciBkZT1jZS50b1N0cmluZygiaGV4IiksdmU9W2RlLG9lLnRvU3RyaW5n''@;'; put 'put ''KDE2KV0uam9pbigiXyIpO2lmKHZlIGluIHRlKXJldHVybiB0ZVt2ZV07dmFyIGtlLEFlPTA7aWYob2UuaXNFdmVuKCl8fCFhZS5zaW1wbGVTaWV2ZXx8IWFlLmZlcm1hdFRlc3Qob2UpfHwhRS50ZXN0KG9lKSlyZXR1cm4gQWUrPTEsdGVbdmVdPUFlKz0iMDIiPT09ZGV8fCIwNSI9PT1kZT84''@;'; put 'put ''OjQsQWU7c3dpdGNoKEUudGVzdChvZS5zaHJuKDEpKXx8KEFlKz0yKSxkZSl7Y2FzZSIwMiI6b2UubW9kKEVlKS5jbXAoVSkmJihBZSs9OCk7YnJlYWs7Y2FzZSIwNSI6KGtlPW9lLm1vZChRKSkuY21wKGopJiZrZS5jbXAocmUpJiYoQWUrPTgpO2JyZWFrO2RlZmF1bHQ6QWUrPTR9cmV0dXJu''@;'; put 'put ''IHRlW3ZlXT1BZSxBZX0odGhpcy5fX3ByaW1lLHRoaXMuX19nZW4pKSx0aGlzLl9wcmltZUNvZGV9fSksSi5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByaXZ8fCh0aGlzLl9wcml2PW5ldyBtZShZKHRoaXMuX3ByaW1lTGVuKSkpLHRoaXMuX3B1Yj10''@;'; put 'put ''aGlzLl9nZW4udG9SZWQodGhpcy5fcHJpbWUpLnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCksdGhpcy5nZXRQdWJsaWNLZXkoKX0sSi5wcm90b3R5cGUuY29tcHV0ZVNlY3JldD1mdW5jdGlvbihvZSl7dmFyIGNlPShvZT0ob2U9bmV3IG1lKG9lKSkudG9SZWQodGhpcy5fcHJpbWUpKS5y''@;'; put 'put ''ZWRQb3codGhpcy5fcHJpdikuZnJvbVJlZCgpLGRlPW5ldyBCdWZmZXIoY2UudG9BcnJheSgpKSx2ZT10aGlzLmdldFByaW1lKCk7aWYoZGUubGVuZ3RoPHZlLmxlbmd0aCl7dmFyIEFlPW5ldyBCdWZmZXIodmUubGVuZ3RoLWRlLmxlbmd0aCk7QWUuZmlsbCgwKSxkZT1CdWZmZXIuY29uY2F0''@;'; put 'put ''KFtBZSxkZV0pfXJldHVybiBkZX0sSi5wcm90b3R5cGUuZ2V0UHVibGljS2V5PWZ1bmN0aW9uKGNlKXtyZXR1cm4gc2UodGhpcy5fcHViLGNlKX0sSi5wcm90b3R5cGUuZ2V0UHJpdmF0ZUtleT1mdW5jdGlvbihjZSl7cmV0dXJuIHNlKHRoaXMuX3ByaXYsY2UpfSxKLnByb3RvdHlwZS5nZXRQ''@;'; put 'put ''cmltZT1mdW5jdGlvbihvZSl7cmV0dXJuIHNlKHRoaXMuX19wcmltZSxvZSl9LEoucHJvdG90eXBlLmdldEdlbmVyYXRvcj1mdW5jdGlvbihvZSl7cmV0dXJuIHNlKHRoaXMuX2dlbixvZSl9LEoucHJvdG90eXBlLnNldEdlbmVyYXRvcj1mdW5jdGlvbihvZSxjZSl7cmV0dXJuIGNlPWNlfHwi''@;'; put 'put ''dXRmOCIsQnVmZmVyLmlzQnVmZmVyKG9lKXx8KG9lPW5ldyBCdWZmZXIob2UsY2UpKSx0aGlzLl9fZ2VuPW9lLHRoaXMuX2dlbj1uZXcgbWUob2UpLHRoaXN9fSw4NTU2MzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg1Mzc1Myk7WGUuZXhwb3J0cz1BZSxBZS5zaW1wbGVTaWV2ZT1kZSxBZS5mZXJt''@;'; put 'put ''YXRUZXN0PXZlO3ZhciBCPUwoODgzMTMpLEU9bmV3IEIoMjQpLFU9bmV3KEwoMTcwNzkpKSxRPW5ldyBCKDEpLGo9bmV3IEIoMikscmU9bmV3IEIoNSksVz0obmV3IEIoMTYpLG5ldyBCKDgpLG5ldyBCKDEwKSksTj1uZXcgQigzKSxLPShuZXcgQig3KSxuZXcgQigxMSkpLEo9bmV3IEIoNCks''@;'; put 'put ''b2U9KG5ldyBCKDEyKSxudWxsKTtmdW5jdGlvbiBkZShrZSl7Zm9yKHZhciBTZT1mdW5jdGlvbiBjZSgpe2lmKG51bGwhPT1vZSlyZXR1cm4gb2U7dmFyIFNlPVtdO1NlWzBdPTI7Zm9yKHZhciBJZT0xLFRlPTM7VGU8MTA0ODU3NjtUZSs9Mil7Zm9yKHZhciBNZT1NYXRoLmNlaWwoTWF0aC5z''@;'; put 'put ''cXJ0KFRlKSksaGU9MDtoZTxJZSYmU2VbaGVdPD1NZSYmVGUlU2VbaGVdIT0wO2hlKyspO0llIT09aGUmJlNlW2hlXTw9TWV8fChTZVtJZSsrXT1UZSl9cmV0dXJuIG9lPVNlLFNlfSgpLEllPTA7SWU8U2UubGVuZ3RoO0llKyspaWYoMD09PWtlLm1vZG4oU2VbSWVdKSlyZXR1cm4gMD09PWtl''@;'; put 'put ''LmNtcG4oU2VbSWVdKTtyZXR1cm4hMH1mdW5jdGlvbiB2ZShrZSl7dmFyIFNlPUIubW9udChrZSk7cmV0dXJuIDA9PT1qLnRvUmVkKFNlKS5yZWRQb3coa2Uuc3VibigxKSkuZnJvbVJlZCgpLmNtcG4oMSl9ZnVuY3Rpb24gQWUoa2UsU2Upe2lmKGtlPDE2KXJldHVybiBuZXcgQigyPT09U2V8''@;'; put 'put ''fDU9PT1TZT9bMTQwLDEyM106WzE0MCwzOV0pO1NlPW5ldyBCKFNlKTtmb3IodmFyIEllLFRlOzspe2ZvcihJZT1uZXcgQihtZShNYXRoLmNlaWwoa2UvOCkpKTtJZS5iaXRMZW5ndGgoKT5rZTspSWUuaXNocm4oMSk7aWYoSWUuaXNFdmVuKCkmJkllLmlhZGQoUSksSWUudGVzdG4oMSl8fEll''@;'; put 'put ''LmlhZGQoaiksU2UuY21wKGopKXtpZighU2UuY21wKHJlKSlmb3IoO0llLm1vZChXKS5jbXAoTik7KUllLmlhZGQoSil9ZWxzZSBmb3IoO0llLm1vZChFKS5jbXAoSyk7KUllLmlhZGQoSik7aWYoZGUoVGU9SWUuc2hybigxKSkmJmRlKEllKSYmdmUoVGUpJiZ2ZShJZSkmJlUudGVzdChUZSkm''@;'; put 'put ''JlUudGVzdChJZSkpcmV0dXJuIEllfX19LDg4MzEzOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSxCKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gRShoZSxPKXtpZighaGUpdGhyb3cgbmV3IEVycm9yKE98fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gRWUoaGUsTyl7aGUuc3Vw''@;'; put 'put ''ZXJfPU87dmFyIHo9ZnVuY3Rpb24oKXt9O3oucHJvdG90eXBlPU8ucHJvdG90eXBlLGhlLnByb3RvdHlwZT1uZXcgeixoZS5wcm90b3R5cGUuY29uc3RydWN0b3I9aGV9ZnVuY3Rpb24gVShoZSxPLHope2lmKFUuaXNCTihoZSkpcmV0dXJuIGhlO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRz''@;'; put 'put ''PW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1oZSYmKCgibGUiPT09T3x8ImJlIj09PU8pJiYoej1PLE89MTApLHRoaXMuX2luaXQoaGV8fDAsT3x8MTAsenx8ImJlIikpfXZhciBROyJvYmplY3QiPT10eXBlb2YgbWU/bWUuZXhwb3J0cz1VOkIuQk49VSxVLkJOPVUs''@;'; put 'put ''VS53b3JkU2l6ZT0yNjt0cnl7UT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LkJ1ZmZlcj93aW5kb3cuQnVmZmVyOkwoNzc0OCkuQnVmZmVyfWNhdGNoKGhlKXt9ZnVuY3Rpb24gaihoZSxPKXt2YXIgej1oZS5jaGFyQ29kZUF0KE8pO3JldHVybiB6Pj02NSYm''@;'; put 'put ''ejw9NzA/ei01NTp6Pj05NyYmejw9MTAyP3otODc6ei00OCYxNX1mdW5jdGlvbiByZShoZSxPLHope3ZhciBlZT1qKGhlLHopO3JldHVybiB6LTE+PU8mJihlZXw9aihoZSx6LTEpPDw0KSxlZX1mdW5jdGlvbiBhZShoZSxPLHosZWUpe2Zvcih2YXIgbmU9MCx4PU1hdGgubWluKGhlLmxlbmd0''@;'; put 'put ''aCx6KSxQPU87UDx4O1ArKyl7dmFyIFY9aGUuY2hhckNvZGVBdChQKS00ODtuZSo9ZWUsbmUrPVY+PTQ5P1YtNDkrMTA6Vj49MTc/Vi0xNysxMDpWfXJldHVybiBuZX1VLmlzQk49ZnVuY3Rpb24oTyl7cmV0dXJuIE8gaW5zdGFuY2VvZiBVfHxudWxsIT09TyYmIm9iamVjdCI9PXR5cGVvZiBP''@;'; put 'put ''JiZPLmNvbnN0cnVjdG9yLndvcmRTaXplPT09VS53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheShPLndvcmRzKX0sVS5tYXg9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gTy5jbXAoeik+MD9POnp9LFUubWluPWZ1bmN0aW9uKE8seil7cmV0dXJuIE8uY21wKHopPDA/Tzp6fSxVLnByb3RvdHlwZS5faW5p''@;'; put 'put ''dD1mdW5jdGlvbihPLHosZWUpe2lmKCJudW1iZXIiPT10eXBlb2YgTylyZXR1cm4gdGhpcy5faW5pdE51bWJlcihPLHosZWUpO2lmKCJvYmplY3QiPT10eXBlb2YgTylyZXR1cm4gdGhpcy5faW5pdEFycmF5KE8seixlZSk7ImhleCI9PT16JiYoej0xNiksRSh6PT09KDB8eikmJno+PTImJno8''@;'; put 'put ''PTM2KTt2YXIgbmU9MDsiLSI9PT0oTz1PLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKG5lKyssdGhpcy5uZWdhdGl2ZT0xKSxuZTxPLmxlbmd0aCYmKDE2PT09ej90aGlzLl9wYXJzZUhleChPLG5lLGVlKToodGhpcy5fcGFyc2VCYXNlKE8seixuZSksImxlIj09PWVlJiZ0''@;'; put 'put ''aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCkseixlZSkpKX0sVS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oTyx6LGVlKXtPPDAmJih0aGlzLm5lZ2F0aXZlPTEsTz0tTyksTzw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmT10sdGhpcy5sZW5ndGg9MSk6Tzw0NTAz''@;'; put 'put ''NTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZPLE8vNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihFKE88OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmTyxPLzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1l''@;'; put 'put ''ZSYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHosZWUpfSxVLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKE8seixlZSl7aWYoRSgibnVtYmVyIj09dHlwZW9mIE8ubGVuZ3RoKSxPLmxlbmd0aDw9MClyZXR1cm4gdGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MSx0aGlz''@;'; put 'put ''O3RoaXMubGVuZ3RoPU1hdGguY2VpbChPLmxlbmd0aC8zKSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBuZT0wO25lPHRoaXMubGVuZ3RoO25lKyspdGhpcy53b3Jkc1tuZV09MDt2YXIgeCxQLFY9MDtpZigiYmUiPT09ZWUpZm9yKG5lPU8ubGVuZ3RoLTEseD0w''@;'; put 'put ''O25lPj0wO25lLT0zKXRoaXMud29yZHNbeF18PShQPU9bbmVdfE9bbmUtMV08PDh8T1tuZS0yXTw8MTYpPDxWJjY3MTA4ODYzLHRoaXMud29yZHNbeCsxXT1QPj4+MjYtViY2NzEwODg2MywoVis9MjQpPj0yNiYmKFYtPTI2LHgrKyk7ZWxzZSBpZigibGUiPT09ZWUpZm9yKG5lPTAseD0wO25l''@;'; put 'put ''PE8ubGVuZ3RoO25lKz0zKXRoaXMud29yZHNbeF18PShQPU9bbmVdfE9bbmUrMV08PDh8T1tuZSsyXTw8MTYpPDxWJjY3MTA4ODYzLHRoaXMud29yZHNbeCsxXT1QPj4+MjYtViY2NzEwODg2MywoVis9MjQpPj0yNiYmKFYtPTI2LHgrKyk7cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5''@;'; put 'put ''cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKE8seixlZSl7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChPLmxlbmd0aC16KS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBuZT0wO25lPHRoaXMubGVuZ3RoO25lKyspdGhpcy53b3Jkc1tuZV09MDt2YXIgVix4PTAsUD0w''@;'; put 'put ''O2lmKCJiZSI9PT1lZSlmb3IobmU9Ty5sZW5ndGgtMTtuZT49ejtuZS09MilWPXJlKE8seixuZSk8PHgsdGhpcy53b3Jkc1tQXXw9NjcxMDg4NjMmVix4Pj0xOD8oeC09MTgsdGhpcy53b3Jkc1tQKz0xXXw9Vj4+PjI2KTp4Kz04O2Vsc2UgZm9yKG5lPShPLmxlbmd0aC16KSUyPT0wP3orMTp6''@;'; put 'put ''O25lPE8ubGVuZ3RoO25lKz0yKVY9cmUoTyx6LG5lKTw8eCx0aGlzLndvcmRzW1BdfD02NzEwODg2MyZWLHg+PTE4Pyh4LT0xOCx0aGlzLndvcmRzW1ArPTFdfD1WPj4+MjYpOngrPTg7dGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKE8seixlZSl7dGhpcy53''@;'; put 'put ''b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIG5lPTAseD0xO3g8PTY3MTA4ODYzO3gqPXopbmUrKztuZS0tLHg9eC96fDA7Zm9yKHZhciBQPU8ubGVuZ3RoLWVlLFY9UCVuZSxUPU1hdGgubWluKFAsUC1WKStlZSxTPTAsRj1lZTtGPFQ7Ris9bmUpUz1hZShPLEYsRituZSx6KSx0aGlz''@;'; put 'put ''LmltdWxuKHgpLHRoaXMud29yZHNbMF0rUzw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1TOnRoaXMuX2lhZGRuKFMpO2lmKDAhPT1WKXt2YXIgeWU9MTtmb3IoUz1hZShPLEYsTy5sZW5ndGgseiksRj0wO0Y8VjtGKyspeWUqPXo7dGhpcy5pbXVsbih5ZSksdGhpcy53b3Jkc1swXStTPDY3MTA4''@;'; put 'put ''ODY0P3RoaXMud29yZHNbMF0rPVM6dGhpcy5faWFkZG4oUyl9dGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKE8pe08ud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHo9MDt6PHRoaXMubGVuZ3RoO3orKylPLndvcmRzW3pdPXRoaXMud29yZHNbel07''@;'; put 'put ''Ty5sZW5ndGg9dGhpcy5sZW5ndGgsTy5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLE8ucmVkPXRoaXMucmVkfSxVLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBPPW5ldyBVKG51bGwpO3JldHVybiB0aGlzLmNvcHkoTyksT30sVS5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihPKXtm''@;'; put 'put ''b3IoO3RoaXMubGVuZ3RoPE87KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sVS5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlz''@;'; put 'put ''Ll9ub3JtU2lnbigpfSxVLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sVS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJO''@;'; put 'put ''LVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgWT1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAw''@;'; put 'put ''MDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxXPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYs''@;'; put 'put ''Niw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLE49WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwx''@;'; put 'put ''Njc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3''@;'; put 'put ''NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gSyhoZSxPLHope3oubmVnYXRpdmU9Ty5uZWdhdGl2ZV5oZS5uZWdhdGl2ZTt2YXIgZWU9aGUubGVuZ3RoK08ubGVuZ3RofDA7ei5sZW5ndGg9ZWUsZWU9ZWUtMXwwO3ZhciBuZT0wfGhlLndvcmRzWzBdLHg9MHxPLndvcmRzWzBdLFA9bmUqeCxUPVAvNjcx''@;'; put 'put ''MDg4NjR8MDt6LndvcmRzWzBdPTY3MTA4ODYzJlA7Zm9yKHZhciBTPTE7UzxlZTtTKyspe2Zvcih2YXIgRj1UPj4+MjYseWU9NjcxMDg4NjMmVCxDZT1NYXRoLm1pbihTLE8ubGVuZ3RoLTEpLERlPU1hdGgubWF4KDAsUy1oZS5sZW5ndGgrMSk7RGU8PUNlO0RlKyspRis9KFA9KG5lPTB8aGUu''@;'; put 'put ''d29yZHNbUy1EZXwwXSkqKHg9MHxPLndvcmRzW0RlXSkreWUpLzY3MTA4ODY0fDAseWU9NjcxMDg4NjMmUDt6LndvcmRzW1NdPTB8eWUsVD0wfEZ9cmV0dXJuIDAhPT1UP3oud29yZHNbU109MHxUOnoubGVuZ3RoLS0sei5zdHJpcCgpfVUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKE8s''@;'; put 'put ''eil7dmFyIGVlO2lmKHo9MHx6fHwxLDE2PT09KE89T3x8MTApfHwiaGV4Ij09PU8pe2VlPSIiO2Zvcih2YXIgbmU9MCx4PTAsUD0wO1A8dGhpcy5sZW5ndGg7UCsrKXt2YXIgVj10aGlzLndvcmRzW1BdLFQ9KDE2Nzc3MjE1JihWPDxuZXx4KSkudG9TdHJpbmcoMTYpO2VlPTAhPSh4PVY+Pj4y''@;'; put 'put ''NC1uZSYxNjc3NzIxNSl8fFAhPT10aGlzLmxlbmd0aC0xP1lbNi1ULmxlbmd0aF0rVCtlZTpUK2VlLChuZSs9Mik+PTI2JiYobmUtPTI2LFAtLSl9Zm9yKDAhPT14JiYoZWU9eC50b1N0cmluZygxNikrZWUpO2VlLmxlbmd0aCV6IT0wOyllZT0iMCIrZWU7cmV0dXJuIDAhPT10aGlzLm5lZ2F0''@;'; put 'put ''aXZlJiYoZWU9Ii0iK2VlKSxlZX1pZihPPT09KDB8TykmJk8+PTImJk88PTM2KXt2YXIgUz1XW09dLEY9TltPXTtlZT0iIjt2YXIgeWU9dGhpcy5jbG9uZSgpO2Zvcih5ZS5uZWdhdGl2ZT0wOyF5ZS5pc1plcm8oKTspe3ZhciBDZT15ZS5tb2RuKEYpLnRvU3RyaW5nKE8pO2VlPSh5ZT15ZS5p''@;'; put 'put ''ZGl2bihGKSkuaXNaZXJvKCk/Q2UrZWU6WVtTLUNlLmxlbmd0aF0rQ2UrZWV9Zm9yKHRoaXMuaXNaZXJvKCkmJihlZT0iMCIrZWUpO2VlLmxlbmd0aCV6IT0wOyllZT0iMCIrZWU7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoZWU9Ii0iK2VlKSxlZX1FKCExLCJCYXNlIHNob3VsZCBiZSBi''@;'; put 'put ''ZXR3ZWVuIDIgYW5kIDM2Iil9LFUucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIE89dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP08rPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT9PKz00NTAzNTk5''@;'; put 'put ''NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmRSghMSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LU86T30sVS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''dG9TdHJpbmcoMTYpfSxVLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbihPLHope3JldHVybiBFKHZvaWQgMCE9PVEpLHRoaXMudG9BcnJheUxpa2UoUSxPLHopfSxVLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKE8seil7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksTyx6KX0s''@;'; put 'put ''VS5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oTyx6LGVlKXt2YXIgbmU9dGhpcy5ieXRlTGVuZ3RoKCkseD1lZXx8TWF0aC5tYXgoMSxuZSk7RShuZTw9eCwiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLEUoeD4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3Ro''@;'; put 'put ''IDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIFQsUyxQPSJsZSI9PT16LFY9bmV3IE8oeCksRj10aGlzLmNsb25lKCk7aWYoUCl7Zm9yKFM9MDshRi5pc1plcm8oKTtTKyspVD1GLmFuZGxuKDI1NSksRi5pdXNocm4oOCksVltTXT1UO2Zvcig7Uzx4O1MrKylWW1NdPTB9ZWxzZXtmb3IoUz0wO1M8''@;'; put 'put ''eC1uZTtTKyspVltTXT0wO2ZvcihTPTA7IUYuaXNaZXJvKCk7UysrKVQ9Ri5hbmRsbigyNTUpLEYuaXVzaHJuKDgpLFZbeC1TLTFdPVR9cmV0dXJuIFZ9LFUucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbihPKXtyZXR1cm4gMzItTWF0aC5jbHozMihPKX06ZnVuY3Rp''@;'; put 'put ''b24oTyl7dmFyIHo9TyxlZT0wO3JldHVybiB6Pj00MDk2JiYoZWUrPTEzLHo+Pj49MTMpLHo+PTY0JiYoZWUrPTcsej4+Pj03KSx6Pj04JiYoZWUrPTQsej4+Pj00KSx6Pj0yJiYoZWUrPTIsej4+Pj0yKSxlZSt6fSxVLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oTyl7aWYoMD09PU8p''@;'; put 'put ''cmV0dXJuIDI2O3ZhciB6PU8sZWU9MDtyZXR1cm4gMD09KDgxOTEmeikmJihlZSs9MTMsej4+Pj0xMyksMD09KDEyNyZ6KSYmKGVlKz03LHo+Pj49NyksMD09KDE1JnopJiYoZWUrPTQsej4+Pj00KSwwPT0oMyZ6KSYmKGVlKz0yLHo+Pj49MiksMD09KDEmeikmJmVlKyssZWV9LFUucHJvdG90''@;'; put 'put ''eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciB6PXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK3p9LFUucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3Io''@;'; put 'put ''dmFyIE89MCx6PTA7ejx0aGlzLmxlbmd0aDt6Kyspe3ZhciBlZT10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW3pdKTtpZihPKz1lZSwyNiE9PWVlKWJyZWFrfXJldHVybiBPfSxVLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0''@;'; put 'put ''aCgpLzgpfSxVLnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oTyl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oTykuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxVLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy50ZXN0bihPLTEpP3Ro''@;'; put 'put ''aXMubm90bihPKS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxVLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sVS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LFUucHJvdG90eXBlLmlu''@;'; put 'put ''ZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LFUucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24oTyl7Zm9yKDt0aGlzLmxlbmd0aDxPLmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgej0wO3o8Ty5sZW5n''@;'; put 'put ''dGg7eisrKXRoaXMud29yZHNbel09dGhpcy53b3Jkc1t6XXxPLndvcmRzW3pdO3JldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlvcj1mdW5jdGlvbihPKXtyZXR1cm4gRSgwPT0odGhpcy5uZWdhdGl2ZXxPLm5lZ2F0aXZlKSksdGhpcy5pdW9yKE8pfSxVLnByb3RvdHlwZS5vcj1m''@;'; put 'put ''dW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcihPKTpPLmNsb25lKCkuaW9yKHRoaXMpfSxVLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKE8pOk8uY2xvbmUo''@;'; put 'put ''KS5pdW9yKHRoaXMpfSxVLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbihPKXt2YXIgejt6PXRoaXMubGVuZ3RoPk8ubGVuZ3RoP086dGhpcztmb3IodmFyIGVlPTA7ZWU8ei5sZW5ndGg7ZWUrKyl0aGlzLndvcmRzW2VlXT10aGlzLndvcmRzW2VlXSZPLndvcmRzW2VlXTtyZXR1cm4gdGhpcy5s''@;'; put 'put ''ZW5ndGg9ei5sZW5ndGgsdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKE8pe3JldHVybiBFKDA9PSh0aGlzLm5lZ2F0aXZlfE8ubmVnYXRpdmUpKSx0aGlzLml1YW5kKE8pfSxVLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVu''@;'; put 'put ''Z3RoP3RoaXMuY2xvbmUoKS5pYW5kKE8pOk8uY2xvbmUoKS5pYW5kKHRoaXMpfSxVLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoTyk6Ty5jbG9uZSgpLml1YW5kKHRoaXMpfSxVLnByb3RvdHlwZS5pdXhv''@;'; put 'put ''cj1mdW5jdGlvbihPKXt2YXIgeixlZTt0aGlzLmxlbmd0aD5PLmxlbmd0aD8oej10aGlzLGVlPU8pOih6PU8sZWU9dGhpcyk7Zm9yKHZhciBuZT0wO25lPGVlLmxlbmd0aDtuZSsrKXRoaXMud29yZHNbbmVdPXoud29yZHNbbmVdXmVlLndvcmRzW25lXTtpZih0aGlzIT09eilmb3IoO25lPHou''@;'; put 'put ''bGVuZ3RoO25lKyspdGhpcy53b3Jkc1tuZV09ei53b3Jkc1tuZV07cmV0dXJuIHRoaXMubGVuZ3RoPXoubGVuZ3RoLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbihPKXtyZXR1cm4gRSgwPT0odGhpcy5uZWdhdGl2ZXxPLm5lZ2F0aXZlKSksdGhpcy5pdXhvcihPKX0s''@;'; put 'put ''VS5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcihPKTpPLmNsb25lKCkuaXhvcih0aGlzKX0sVS5wcm90b3R5cGUudXhvcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9u''@;'; put 'put ''ZSgpLml1eG9yKE8pOk8uY2xvbmUoKS5pdXhvcih0aGlzKX0sVS5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApO3ZhciB6PTB8TWF0aC5jZWlsKE8vMjYpLGVlPU8lMjY7dGhpcy5fZXhwYW5kKHopLGVlPjAmJnotLTtmb3IodmFyIG5lPTA7''@;'; put 'put ''bmU8ejtuZSsrKXRoaXMud29yZHNbbmVdPTY3MTA4ODYzJn50aGlzLndvcmRzW25lXTtyZXR1cm4gZWU+MCYmKHRoaXMud29yZHNbbmVdPX50aGlzLndvcmRzW25lXSY2NzEwODg2Mz4+MjYtZWUpLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUubm90bj1mdW5jdGlvbihPKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5jbG9uZSgpLmlub3RuKE8pfSxVLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKE8seil7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApO3ZhciBlZT1PLzI2fDAsbmU9TyUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKGVlKzEpLHRoaXMud29yZHNbZWVdPXo/dGhpcy53b3Jkc1tlZV18MTw8bmU6''@;'; put 'put ''dGhpcy53b3Jkc1tlZV0mfigxPDxuZSksdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKE8pe3ZhciB6LGVlLG5lO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Ty5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHo9dGhpcy5pc3ViKE8pLHRoaXMubmVnYXRp''@;'; put 'put ''dmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PU8ubmVnYXRpdmUpcmV0dXJuIE8ubmVnYXRpdmU9MCx6PXRoaXMuaXN1YihPKSxPLm5lZ2F0aXZlPTEsei5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD5PLmxlbmd0aD8oZWU9dGhpcyxuZT1PKTooZWU9Tyxu''@;'; put 'put ''ZT10aGlzKTtmb3IodmFyIHg9MCxQPTA7UDxuZS5sZW5ndGg7UCsrKXRoaXMud29yZHNbUF09NjcxMDg4NjMmKHo9KDB8ZWUud29yZHNbUF0pKygwfG5lLndvcmRzW1BdKSt4KSx4PXo+Pj4yNjtmb3IoOzAhPT14JiZQPGVlLmxlbmd0aDtQKyspdGhpcy53b3Jkc1tQXT02NzEwODg2MyYoej0o''@;'; put 'put ''MHxlZS53b3Jkc1tQXSkreCkseD16Pj4+MjY7aWYodGhpcy5sZW5ndGg9ZWUubGVuZ3RoLDAhPT14KXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPXgsdGhpcy5sZW5ndGgrKztlbHNlIGlmKGVlIT09dGhpcylmb3IoO1A8ZWUubGVuZ3RoO1ArKyl0aGlzLndvcmRzW1BdPWVlLndvcmRzW1BdO3Jl''@;'; put 'put ''dHVybiB0aGlzfSxVLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oTyl7dmFyIHo7cmV0dXJuIDAhPT1PLm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oTy5uZWdhdGl2ZT0wLHo9dGhpcy5zdWIoTyksTy5uZWdhdGl2ZV49MSx6KTowPT09Ty5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/''@;'; put 'put ''KHRoaXMubmVnYXRpdmU9MCx6PU8uc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSx6KTp0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZChPKTpPLmNsb25lKCkuaWFkZCh0aGlzKX0sVS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihPKXtpZigwIT09Ty5uZWdhdGl2ZSl7Ty5u''@;'; put 'put ''ZWdhdGl2ZT0wO3ZhciB6PXRoaXMuaWFkZChPKTtyZXR1cm4gTy5uZWdhdGl2ZT0xLHouX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoTyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIG5lLHgsZWU9''@;'; put 'put ''dGhpcy5jbXAoTyk7aWYoMD09PWVlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztlZT4wPyhuZT10aGlzLHg9Tyk6KG5lPU8seD10aGlzKTtmb3IodmFyIFA9MCxWPTA7Vjx4Lmxlbmd0aDtWKyspUD0oej0oMHxuZS53b3Jkc1tWXSkt''@;'; put 'put ''KDB8eC53b3Jkc1tWXSkrUCk+PjI2LHRoaXMud29yZHNbVl09NjcxMDg4NjMmejtmb3IoOzAhPT1QJiZWPG5lLmxlbmd0aDtWKyspUD0oej0oMHxuZS53b3Jkc1tWXSkrUCk+PjI2LHRoaXMud29yZHNbVl09NjcxMDg4NjMmejtpZigwPT09UCYmVjxuZS5sZW5ndGgmJm5lIT09dGhpcylmb3Io''@;'; put 'put ''O1Y8bmUubGVuZ3RoO1YrKyl0aGlzLndvcmRzW1ZdPW5lLndvcmRzW1ZdO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxWKSxuZSE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKE8pe3JldHVybiB0''@;'; put 'put ''aGlzLmNsb25lKCkuaXN1YihPKX07dmFyIEo9ZnVuY3Rpb24oTyx6LGVlKXt2YXIgVCxTLEYsbmU9Ty53b3Jkcyx4PXoud29yZHMsUD1lZS53b3JkcyxWPTAseWU9MHxuZVswXSxDZT04MTkxJnllLERlPXllPj4+MTMsUGU9MHxuZVsxXSxRZT04MTkxJlBlLCRlPVBlPj4+MTMsZ3Q9MHxuZVsy''@;'; put 'put ''XSx3dD04MTkxJmd0LG10PWd0Pj4+MTMsdnQ9MHxuZVszXSxBdD04MTkxJnZ0LGh0PXZ0Pj4+MTMsQnQ9MHxuZVs0XSxvbj04MTkxJkJ0LF90PUJ0Pj4+MTMsdHQ9MHxuZVs1XSxldD04MTkxJnR0LGx0PXR0Pj4+MTMsTHQ9MHxuZVs2XSxDdD04MTkxJkx0LGZ0PUx0Pj4+MTMsSHQ9MHxuZVs3''@;'; put 'put ''XSxHZT04MTkxJkh0LFVlPUh0Pj4+MTMseXQ9MHxuZVs4XSxqdD04MTkxJnl0LEp0PXl0Pj4+MTMsZ249MHxuZVs5XSxkbj04MTkxJmduLHluPWduPj4+MTMsbG49MHx4WzBdLE5uPTgxOTEmbG4sYm49bG4+Pj4xMyxlcj0wfHhbMV0sc3I9ODE5MSZlcixYbj1lcj4+PjEzLEZyPTB8eFsyXSx4''@;'; put 'put ''cj04MTkxJkZyLHF0PUZyPj4+MTMscHI9MHx4WzNdLG5yPTgxOTEmcHIsQW49cHI+Pj4xMyxxbj0wfHhbNF0sV3Q9ODE5MSZxbixwbj1xbj4+PjEzLEtuPTB8eFs1XSxOdD04MTkxJktuLHNuPUtuPj4+MTMsVW49MHx4WzZdLHduPTgxOTEmVW4sdG49VW4+Pj4xMyx6bj0wfHhbN10sVHI9ODE5''@;'; put 'put ''MSZ6bixCbj16bj4+PjEzLGtyPTB8eFs4XSxtbj04MTkxJmtyLHVuPWtyPj4+MTMsY249MHx4WzldLF9uPTgxOTEmY24sR3Q9Y24+Pj4xMztlZS5uZWdhdGl2ZT1PLm5lZ2F0aXZlXnoubmVnYXRpdmUsZWUubGVuZ3RoPTE5O3ZhciBrbj0oVisoVD1NYXRoLmltdWwoQ2UsTm4pKXwwKSsoKDgx''@;'; put 'put ''OTEmKFM9KFM9TWF0aC5pbXVsKENlLGJuKSkrTWF0aC5pbXVsKERlLE5uKXwwKSk8PDEzKXwwO1Y9KChGPU1hdGguaW11bChEZSxibikpKyhTPj4+MTMpfDApKyhrbj4+PjI2KXwwLGtuJj02NzEwODg2MyxUPU1hdGguaW11bChRZSxObiksUz0oUz1NYXRoLmltdWwoUWUsYm4pKStNYXRoLmlt''@;'; put 'put ''dWwoJGUsTm4pfDAsRj1NYXRoLmltdWwoJGUsYm4pO3ZhciBWbj0oVisoVD1UK01hdGguaW11bChDZSxzcil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLFhuKXwwKStNYXRoLmltdWwoRGUsc3IpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsWG4pfDApKyhTPj4+''@;'; put 'put ''MTMpfDApKyhWbj4+PjI2KXwwLFZuJj02NzEwODg2MyxUPU1hdGguaW11bCh3dCxObiksUz0oUz1NYXRoLmltdWwod3QsYm4pKStNYXRoLmltdWwobXQsTm4pfDAsRj1NYXRoLmltdWwobXQsYm4pLFQ9VCtNYXRoLmltdWwoUWUsc3IpfDAsUz0oUz1TK01hdGguaW11bChRZSxYbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKCRlLHNyKXwwLEY9RitNYXRoLmltdWwoJGUsWG4pfDA7dmFyIGVuPShWKyhUPVQrTWF0aC5pbXVsKENlLHhyKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UscXQpfDApK01hdGguaW11bChEZSx4cil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxxdCl8''@;'; put 'put ''MCkrKFM+Pj4xMyl8MCkrKGVuPj4+MjYpfDAsZW4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKEF0LE5uKSxTPShTPU1hdGguaW11bChBdCxibikpK01hdGguaW11bChodCxObil8MCxGPU1hdGguaW11bChodCxibiksVD1UK01hdGguaW11bCh3dCxzcil8MCxTPShTPVMrTWF0aC5pbXVsKHd0LFhu''@;'; put 'put ''KXwwKStNYXRoLmltdWwobXQsc3IpfDAsRj1GK01hdGguaW11bChtdCxYbil8MCxUPVQrTWF0aC5pbXVsKFFlLHhyKXwwLFM9KFM9UytNYXRoLmltdWwoUWUscXQpfDApK01hdGguaW11bCgkZSx4cil8MCxGPUYrTWF0aC5pbXVsKCRlLHF0KXwwO3ZhciBJbj0oVisoVD1UK01hdGguaW11bChD''@;'; put 'put ''ZSxucil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLEFuKXwwKStNYXRoLmltdWwoRGUsbnIpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsQW4pfDApKyhTPj4+MTMpfDApKyhJbj4+PjI2KXwwLEluJj02NzEwODg2MyxUPU1hdGguaW11bChvbixObiksUz0oUz1N''@;'; put 'put ''YXRoLmltdWwob24sYm4pKStNYXRoLmltdWwoX3QsTm4pfDAsRj1NYXRoLmltdWwoX3QsYm4pLFQ9VCtNYXRoLmltdWwoQXQsc3IpfDAsUz0oUz1TK01hdGguaW11bChBdCxYbil8MCkrTWF0aC5pbXVsKGh0LHNyKXwwLEY9RitNYXRoLmltdWwoaHQsWG4pfDAsVD1UK01hdGguaW11bCh3dCx4''@;'; put 'put ''cil8MCxTPShTPVMrTWF0aC5pbXVsKHd0LHF0KXwwKStNYXRoLmltdWwobXQseHIpfDAsRj1GK01hdGguaW11bChtdCxxdCl8MCxUPVQrTWF0aC5pbXVsKFFlLG5yKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsQW4pfDApK01hdGguaW11bCgkZSxucil8MCxGPUYrTWF0aC5pbXVsKCRlLEFuKXww''@;'; put 'put ''O3ZhciBKbj0oVisoVD1UK01hdGguaW11bChDZSxXdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLHBuKXwwKStNYXRoLmltdWwoRGUsV3QpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUscG4pfDApKyhTPj4+MTMpfDApKyhKbj4+PjI2KXwwLEpuJj02NzEwODg2''@;'; put 'put ''MyxUPU1hdGguaW11bChldCxObiksUz0oUz1NYXRoLmltdWwoZXQsYm4pKStNYXRoLmltdWwobHQsTm4pfDAsRj1NYXRoLmltdWwobHQsYm4pLFQ9VCtNYXRoLmltdWwob24sc3IpfDAsUz0oUz1TK01hdGguaW11bChvbixYbil8MCkrTWF0aC5pbXVsKF90LHNyKXwwLEY9RitNYXRoLmltdWwo''@;'; put 'put ''X3QsWG4pfDAsVD1UK01hdGguaW11bChBdCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKEF0LHF0KXwwKStNYXRoLmltdWwoaHQseHIpfDAsRj1GK01hdGguaW11bChodCxxdCl8MCxUPVQrTWF0aC5pbXVsKHd0LG5yKXwwLFM9KFM9UytNYXRoLmltdWwod3QsQW4pfDApK01hdGguaW11bChtdCxu''@;'; put 'put ''cil8MCxGPUYrTWF0aC5pbXVsKG10LEFuKXwwLFQ9VCtNYXRoLmltdWwoUWUsV3QpfDAsUz0oUz1TK01hdGguaW11bChRZSxwbil8MCkrTWF0aC5pbXVsKCRlLFd0KXwwLEY9RitNYXRoLmltdWwoJGUscG4pfDA7dmFyIG9yPShWKyhUPVQrTWF0aC5pbXVsKENlLE50KXwwKXwwKSsoKDgxOTEm''@;'; put 'put ''KFM9KFM9UytNYXRoLmltdWwoQ2Usc24pfDApK01hdGguaW11bChEZSxOdCl8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxzbil8MCkrKFM+Pj4xMyl8MCkrKG9yPj4+MjYpfDAsb3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKEN0LE5uKSxTPShTPU1hdGguaW11bChDdCxibikpK01h''@;'; put 'put ''dGguaW11bChmdCxObil8MCxGPU1hdGguaW11bChmdCxibiksVD1UK01hdGguaW11bChldCxzcil8MCxTPShTPVMrTWF0aC5pbXVsKGV0LFhuKXwwKStNYXRoLmltdWwobHQsc3IpfDAsRj1GK01hdGguaW11bChsdCxYbil8MCxUPVQrTWF0aC5pbXVsKG9uLHhyKXwwLFM9KFM9UytNYXRoLmlt''@;'; put 'put ''dWwob24scXQpfDApK01hdGguaW11bChfdCx4cil8MCxGPUYrTWF0aC5pbXVsKF90LHF0KXwwLFQ9VCtNYXRoLmltdWwoQXQsbnIpfDAsUz0oUz1TK01hdGguaW11bChBdCxBbil8MCkrTWF0aC5pbXVsKGh0LG5yKXwwLEY9RitNYXRoLmltdWwoaHQsQW4pfDAsVD1UK01hdGguaW11bCh3dCxX''@;'; put 'put ''dCl8MCxTPShTPVMrTWF0aC5pbXVsKHd0LHBuKXwwKStNYXRoLmltdWwobXQsV3QpfDAsRj1GK01hdGguaW11bChtdCxwbil8MCxUPVQrTWF0aC5pbXVsKFFlLE50KXwwLFM9KFM9UytNYXRoLmltdWwoUWUsc24pfDApK01hdGguaW11bCgkZSxOdCl8MCxGPUYrTWF0aC5pbXVsKCRlLHNuKXww''@;'; put 'put ''O3ZhciBncj0oVisoVD1UK01hdGguaW11bChDZSx3bil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLHRuKXwwKStNYXRoLmltdWwoRGUsd24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsdG4pfDApKyhTPj4+MTMpfDApKyhncj4+PjI2KXwwLGdyJj02NzEwODg2''@;'; put 'put ''MyxUPU1hdGguaW11bChHZSxObiksUz0oUz1NYXRoLmltdWwoR2UsYm4pKStNYXRoLmltdWwoVWUsTm4pfDAsRj1NYXRoLmltdWwoVWUsYm4pLFQ9VCtNYXRoLmltdWwoQ3Qsc3IpfDAsUz0oUz1TK01hdGguaW11bChDdCxYbil8MCkrTWF0aC5pbXVsKGZ0LHNyKXwwLEY9RitNYXRoLmltdWwo''@;'; put 'put ''ZnQsWG4pfDAsVD1UK01hdGguaW11bChldCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKGV0LHF0KXwwKStNYXRoLmltdWwobHQseHIpfDAsRj1GK01hdGguaW11bChsdCxxdCl8MCxUPVQrTWF0aC5pbXVsKG9uLG5yKXwwLFM9KFM9UytNYXRoLmltdWwob24sQW4pfDApK01hdGguaW11bChfdCxu''@;'; put 'put ''cil8MCxGPUYrTWF0aC5pbXVsKF90LEFuKXwwLFQ9VCtNYXRoLmltdWwoQXQsV3QpfDAsUz0oUz1TK01hdGguaW11bChBdCxwbil8MCkrTWF0aC5pbXVsKGh0LFd0KXwwLEY9RitNYXRoLmltdWwoaHQscG4pfDAsVD1UK01hdGguaW11bCh3dCxOdCl8MCxTPShTPVMrTWF0aC5pbXVsKHd0LHNu''@;'; put 'put ''KXwwKStNYXRoLmltdWwobXQsTnQpfDAsRj1GK01hdGguaW11bChtdCxzbil8MCxUPVQrTWF0aC5pbXVsKFFlLHduKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsdG4pfDApK01hdGguaW11bCgkZSx3bil8MCxGPUYrTWF0aC5pbXVsKCRlLHRuKXwwO3ZhciBLcj0oVisoVD1UK01hdGguaW11bChD''@;'; put 'put ''ZSxUcil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLEJuKXwwKStNYXRoLmltdWwoRGUsVHIpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsQm4pfDApKyhTPj4+MTMpfDApKyhLcj4+PjI2KXwwLEtyJj02NzEwODg2MyxUPU1hdGguaW11bChqdCxObiksUz0oUz1N''@;'; put 'put ''YXRoLmltdWwoanQsYm4pKStNYXRoLmltdWwoSnQsTm4pfDAsRj1NYXRoLmltdWwoSnQsYm4pLFQ9VCtNYXRoLmltdWwoR2Usc3IpfDAsUz0oUz1TK01hdGguaW11bChHZSxYbil8MCkrTWF0aC5pbXVsKFVlLHNyKXwwLEY9RitNYXRoLmltdWwoVWUsWG4pfDAsVD1UK01hdGguaW11bChDdCx4''@;'; put 'put ''cil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LHF0KXwwKStNYXRoLmltdWwoZnQseHIpfDAsRj1GK01hdGguaW11bChmdCxxdCl8MCxUPVQrTWF0aC5pbXVsKGV0LG5yKXwwLFM9KFM9UytNYXRoLmltdWwoZXQsQW4pfDApK01hdGguaW11bChsdCxucil8MCxGPUYrTWF0aC5pbXVsKGx0LEFuKXww''@;'; put 'put ''LFQ9VCtNYXRoLmltdWwob24sV3QpfDAsUz0oUz1TK01hdGguaW11bChvbixwbil8MCkrTWF0aC5pbXVsKF90LFd0KXwwLEY9RitNYXRoLmltdWwoX3QscG4pfDAsVD1UK01hdGguaW11bChBdCxOdCl8MCxTPShTPVMrTWF0aC5pbXVsKEF0LHNuKXwwKStNYXRoLmltdWwoaHQsTnQpfDAsRj1G''@;'; put 'put ''K01hdGguaW11bChodCxzbil8MCxUPVQrTWF0aC5pbXVsKHd0LHduKXwwLFM9KFM9UytNYXRoLmltdWwod3QsdG4pfDApK01hdGguaW11bChtdCx3bil8MCxGPUYrTWF0aC5pbXVsKG10LHRuKXwwLFQ9VCtNYXRoLmltdWwoUWUsVHIpfDAsUz0oUz1TK01hdGguaW11bChRZSxCbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKCRlLFRyKXwwLEY9RitNYXRoLmltdWwoJGUsQm4pfDA7dmFyIFZyPShWKyhUPVQrTWF0aC5pbXVsKENlLG1uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsdW4pfDApK01hdGguaW11bChEZSxtbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSx1bil8''@;'; put 'put ''MCkrKFM+Pj4xMyl8MCkrKFZyPj4+MjYpfDAsVnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLE5uKSxTPShTPU1hdGguaW11bChkbixibikpK01hdGguaW11bCh5bixObil8MCxGPU1hdGguaW11bCh5bixibiksVD1UK01hdGguaW11bChqdCxzcil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LFhu''@;'; put 'put ''KXwwKStNYXRoLmltdWwoSnQsc3IpfDAsRj1GK01hdGguaW11bChKdCxYbil8MCxUPVQrTWF0aC5pbXVsKEdlLHhyKXwwLFM9KFM9UytNYXRoLmltdWwoR2UscXQpfDApK01hdGguaW11bChVZSx4cil8MCxGPUYrTWF0aC5pbXVsKFVlLHF0KXwwLFQ9VCtNYXRoLmltdWwoQ3QsbnIpfDAsUz0o''@;'; put 'put ''Uz1TK01hdGguaW11bChDdCxBbil8MCkrTWF0aC5pbXVsKGZ0LG5yKXwwLEY9RitNYXRoLmltdWwoZnQsQW4pfDAsVD1UK01hdGguaW11bChldCxXdCl8MCxTPShTPVMrTWF0aC5pbXVsKGV0LHBuKXwwKStNYXRoLmltdWwobHQsV3QpfDAsRj1GK01hdGguaW11bChsdCxwbil8MCxUPVQrTWF0''@;'; put 'put ''aC5pbXVsKG9uLE50KXwwLFM9KFM9UytNYXRoLmltdWwob24sc24pfDApK01hdGguaW11bChfdCxOdCl8MCxGPUYrTWF0aC5pbXVsKF90LHNuKXwwLFQ9VCtNYXRoLmltdWwoQXQsd24pfDAsUz0oUz1TK01hdGguaW11bChBdCx0bil8MCkrTWF0aC5pbXVsKGh0LHduKXwwLEY9RitNYXRoLmlt''@;'; put 'put ''dWwoaHQsdG4pfDAsVD1UK01hdGguaW11bCh3dCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKHd0LEJuKXwwKStNYXRoLmltdWwobXQsVHIpfDAsRj1GK01hdGguaW11bChtdCxCbil8MCxUPVQrTWF0aC5pbXVsKFFlLG1uKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsdW4pfDApK01hdGguaW11bCgk''@;'; put 'put ''ZSxtbil8MCxGPUYrTWF0aC5pbXVsKCRlLHVuKXwwO3ZhciBpaT0oVisoVD1UK01hdGguaW11bChDZSxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLEd0KXwwKStNYXRoLmltdWwoRGUsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsR3QpfDApKyhTPj4+''@;'; put 'put ''MTMpfDApKyhpaT4+PjI2KXwwLGlpJj02NzEwODg2MyxUPU1hdGguaW11bChkbixzciksUz0oUz1NYXRoLmltdWwoZG4sWG4pKStNYXRoLmltdWwoeW4sc3IpfDAsRj1NYXRoLmltdWwoeW4sWG4pLFQ9VCtNYXRoLmltdWwoanQseHIpfDAsUz0oUz1TK01hdGguaW11bChqdCxxdCl8MCkrTWF0''@;'; put 'put ''aC5pbXVsKEp0LHhyKXwwLEY9RitNYXRoLmltdWwoSnQscXQpfDAsVD1UK01hdGguaW11bChHZSxucil8MCxTPShTPVMrTWF0aC5pbXVsKEdlLEFuKXwwKStNYXRoLmltdWwoVWUsbnIpfDAsRj1GK01hdGguaW11bChVZSxBbil8MCxUPVQrTWF0aC5pbXVsKEN0LFd0KXwwLFM9KFM9UytNYXRo''@;'; put 'put ''LmltdWwoQ3QscG4pfDApK01hdGguaW11bChmdCxXdCl8MCxGPUYrTWF0aC5pbXVsKGZ0LHBuKXwwLFQ9VCtNYXRoLmltdWwoZXQsTnQpfDAsUz0oUz1TK01hdGguaW11bChldCxzbil8MCkrTWF0aC5pbXVsKGx0LE50KXwwLEY9RitNYXRoLmltdWwobHQsc24pfDAsVD1UK01hdGguaW11bChv''@;'; put 'put ''bix3bil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLHRuKXwwKStNYXRoLmltdWwoX3Qsd24pfDAsRj1GK01hdGguaW11bChfdCx0bil8MCxUPVQrTWF0aC5pbXVsKEF0LFRyKXwwLFM9KFM9UytNYXRoLmltdWwoQXQsQm4pfDApK01hdGguaW11bChodCxUcil8MCxGPUYrTWF0aC5pbXVsKGh0LEJu''@;'; put 'put ''KXwwLFQ9VCtNYXRoLmltdWwod3QsbW4pfDAsUz0oUz1TK01hdGguaW11bCh3dCx1bil8MCkrTWF0aC5pbXVsKG10LG1uKXwwLEY9RitNYXRoLmltdWwobXQsdW4pfDA7dmFyIFJyPShWKyhUPVQrTWF0aC5pbXVsKFFlLF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoUWUsR3Qp''@;'; put 'put ''fDApK01hdGguaW11bCgkZSxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bCgkZSxHdCl8MCkrKFM+Pj4xMyl8MCkrKFJyPj4+MjYpfDAsUnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLHhyKSxTPShTPU1hdGguaW11bChkbixxdCkpK01hdGguaW11bCh5bix4cil8MCxGPU1hdGgu''@;'; put 'put ''aW11bCh5bixxdCksVD1UK01hdGguaW11bChqdCxucil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LEFuKXwwKStNYXRoLmltdWwoSnQsbnIpfDAsRj1GK01hdGguaW11bChKdCxBbil8MCxUPVQrTWF0aC5pbXVsKEdlLFd0KXwwLFM9KFM9UytNYXRoLmltdWwoR2UscG4pfDApK01hdGguaW11bChV''@;'; put 'put ''ZSxXdCl8MCxGPUYrTWF0aC5pbXVsKFVlLHBuKXwwLFQ9VCtNYXRoLmltdWwoQ3QsTnQpfDAsUz0oUz1TK01hdGguaW11bChDdCxzbil8MCkrTWF0aC5pbXVsKGZ0LE50KXwwLEY9RitNYXRoLmltdWwoZnQsc24pfDAsVD1UK01hdGguaW11bChldCx3bil8MCxTPShTPVMrTWF0aC5pbXVsKGV0''@;'; put 'put ''LHRuKXwwKStNYXRoLmltdWwobHQsd24pfDAsRj1GK01hdGguaW11bChsdCx0bil8MCxUPVQrTWF0aC5pbXVsKG9uLFRyKXwwLFM9KFM9UytNYXRoLmltdWwob24sQm4pfDApK01hdGguaW11bChfdCxUcil8MCxGPUYrTWF0aC5pbXVsKF90LEJuKXwwLFQ9VCtNYXRoLmltdWwoQXQsbW4pfDAs''@;'; put 'put ''Uz0oUz1TK01hdGguaW11bChBdCx1bil8MCkrTWF0aC5pbXVsKGh0LG1uKXwwLEY9RitNYXRoLmltdWwoaHQsdW4pfDA7dmFyIGxpPShWKyhUPVQrTWF0aC5pbXVsKHd0LF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwod3QsR3QpfDApK01hdGguaW11bChtdCxfbil8MCkpPDwx''@;'; put 'put ''Myl8MDtWPSgoRj1GK01hdGguaW11bChtdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKGxpPj4+MjYpfDAsbGkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLG5yKSxTPShTPU1hdGguaW11bChkbixBbikpK01hdGguaW11bCh5bixucil8MCxGPU1hdGguaW11bCh5bixBbiksVD1UK01hdGguaW11bChq''@;'; put 'put ''dCxXdCl8MCxTPShTPVMrTWF0aC5pbXVsKGp0LHBuKXwwKStNYXRoLmltdWwoSnQsV3QpfDAsRj1GK01hdGguaW11bChKdCxwbil8MCxUPVQrTWF0aC5pbXVsKEdlLE50KXwwLFM9KFM9UytNYXRoLmltdWwoR2Usc24pfDApK01hdGguaW11bChVZSxOdCl8MCxGPUYrTWF0aC5pbXVsKFVlLHNu''@;'; put 'put ''KXwwLFQ9VCtNYXRoLmltdWwoQ3Qsd24pfDAsUz0oUz1TK01hdGguaW11bChDdCx0bil8MCkrTWF0aC5pbXVsKGZ0LHduKXwwLEY9RitNYXRoLmltdWwoZnQsdG4pfDAsVD1UK01hdGguaW11bChldCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKGV0LEJuKXwwKStNYXRoLmltdWwobHQsVHIpfDAs''@;'; put 'put ''Rj1GK01hdGguaW11bChsdCxCbil8MCxUPVQrTWF0aC5pbXVsKG9uLG1uKXwwLFM9KFM9UytNYXRoLmltdWwob24sdW4pfDApK01hdGguaW11bChfdCxtbil8MCxGPUYrTWF0aC5pbXVsKF90LHVuKXwwO3ZhciBNaT0oVisoVD1UK01hdGguaW11bChBdCxfbil8MCl8MCkrKCg4MTkxJihTPShT''@;'; put 'put ''PVMrTWF0aC5pbXVsKEF0LEd0KXwwKStNYXRoLmltdWwoaHQsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoaHQsR3QpfDApKyhTPj4+MTMpfDApKyhNaT4+PjI2KXwwLE1pJj02NzEwODg2MyxUPU1hdGguaW11bChkbixXdCksUz0oUz1NYXRoLmltdWwoZG4scG4pKStNYXRoLmlt''@;'; put 'put ''dWwoeW4sV3QpfDAsRj1NYXRoLmltdWwoeW4scG4pLFQ9VCtNYXRoLmltdWwoanQsTnQpfDAsUz0oUz1TK01hdGguaW11bChqdCxzbil8MCkrTWF0aC5pbXVsKEp0LE50KXwwLEY9RitNYXRoLmltdWwoSnQsc24pfDAsVD1UK01hdGguaW11bChHZSx3bil8MCxTPShTPVMrTWF0aC5pbXVsKEdl''@;'; put 'put ''LHRuKXwwKStNYXRoLmltdWwoVWUsd24pfDAsRj1GK01hdGguaW11bChVZSx0bil8MCxUPVQrTWF0aC5pbXVsKEN0LFRyKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsQm4pfDApK01hdGguaW11bChmdCxUcil8MCxGPUYrTWF0aC5pbXVsKGZ0LEJuKXwwLFQ9VCtNYXRoLmltdWwoZXQsbW4pfDAs''@;'; put 'put ''Uz0oUz1TK01hdGguaW11bChldCx1bil8MCkrTWF0aC5pbXVsKGx0LG1uKXwwLEY9RitNYXRoLmltdWwobHQsdW4pfDA7dmFyIG8wPShWKyhUPVQrTWF0aC5pbXVsKG9uLF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwob24sR3QpfDApK01hdGguaW11bChfdCxfbil8MCkpPDwx''@;'; put 'put ''Myl8MDtWPSgoRj1GK01hdGguaW11bChfdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKG8wPj4+MjYpfDAsbzAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLE50KSxTPShTPU1hdGguaW11bChkbixzbikpK01hdGguaW11bCh5bixOdCl8MCxGPU1hdGguaW11bCh5bixzbiksVD1UK01hdGguaW11bChq''@;'; put 'put ''dCx3bil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LHRuKXwwKStNYXRoLmltdWwoSnQsd24pfDAsRj1GK01hdGguaW11bChKdCx0bil8MCxUPVQrTWF0aC5pbXVsKEdlLFRyKXwwLFM9KFM9UytNYXRoLmltdWwoR2UsQm4pfDApK01hdGguaW11bChVZSxUcil8MCxGPUYrTWF0aC5pbXVsKFVlLEJu''@;'; put 'put ''KXwwLFQ9VCtNYXRoLmltdWwoQ3QsbW4pfDAsUz0oUz1TK01hdGguaW11bChDdCx1bil8MCkrTWF0aC5pbXVsKGZ0LG1uKXwwLEY9RitNYXRoLmltdWwoZnQsdW4pfDA7dmFyIG4wPShWKyhUPVQrTWF0aC5pbXVsKGV0LF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoZXQsR3Qp''@;'; put 'put ''fDApK01hdGguaW11bChsdCxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChsdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKG4wPj4+MjYpfDAsbjAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLHduKSxTPShTPU1hdGguaW11bChkbix0bikpK01hdGguaW11bCh5bix3bil8MCxGPU1hdGgu''@;'; put 'put ''aW11bCh5bix0biksVD1UK01hdGguaW11bChqdCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LEJuKXwwKStNYXRoLmltdWwoSnQsVHIpfDAsRj1GK01hdGguaW11bChKdCxCbil8MCxUPVQrTWF0aC5pbXVsKEdlLG1uKXwwLFM9KFM9UytNYXRoLmltdWwoR2UsdW4pfDApK01hdGguaW11bChV''@;'; put 'put ''ZSxtbil8MCxGPUYrTWF0aC5pbXVsKFVlLHVuKXwwO3ZhciBkMD0oVisoVD1UK01hdGguaW11bChDdCxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKEN0LEd0KXwwKStNYXRoLmltdWwoZnQsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoZnQsR3QpfDApKyhTPj4+''@;'; put 'put ''MTMpfDApKyhkMD4+PjI2KXwwLGQwJj02NzEwODg2MyxUPU1hdGguaW11bChkbixUciksUz0oUz1NYXRoLmltdWwoZG4sQm4pKStNYXRoLmltdWwoeW4sVHIpfDAsRj1NYXRoLmltdWwoeW4sQm4pLFQ9VCtNYXRoLmltdWwoanQsbW4pfDAsUz0oUz1TK01hdGguaW11bChqdCx1bil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKEp0LG1uKXwwLEY9RitNYXRoLmltdWwoSnQsdW4pfDA7dmFyIG0wPShWKyhUPVQrTWF0aC5pbXVsKEdlLF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoR2UsR3QpfDApK01hdGguaW11bChVZSxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChVZSxHdCl8''@;'; put 'put ''MCkrKFM+Pj4xMyl8MCkrKG0wPj4+MjYpfDAsbTAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLG1uKSxTPShTPU1hdGguaW11bChkbix1bikpK01hdGguaW11bCh5bixtbil8MCxGPU1hdGguaW11bCh5bix1bik7dmFyIEcwPShWKyhUPVQrTWF0aC5pbXVsKGp0LF9uKXwwKXwwKSsoKDgxOTEm''@;'; put 'put ''KFM9KFM9UytNYXRoLmltdWwoanQsR3QpfDApK01hdGguaW11bChKdCxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChKdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKEcwPj4+MjYpfDAsRzAmPTY3MTA4ODYzO3ZhciBEaT0oVisoVD1NYXRoLmltdWwoZG4sX24pKXwwKSsoKDgxOTEmKFM9''@;'; put 'put ''KFM9TWF0aC5pbXVsKGRuLEd0KSkrTWF0aC5pbXVsKHluLF9uKXwwKSk8PDEzKXwwO3JldHVybiBWPSgoRj1NYXRoLmltdWwoeW4sR3QpKSsoUz4+PjEzKXwwKSsoRGk+Pj4yNil8MCxEaSY9NjcxMDg4NjMsUFswXT1rbixQWzFdPVZuLFBbMl09ZW4sUFszXT1JbixQWzRdPUpuLFBbNV09b3Is''@;'; put 'put ''UFs2XT1ncixQWzddPUtyLFBbOF09VnIsUFs5XT1paSxQWzEwXT1ScixQWzExXT1saSxQWzEyXT1NaSxQWzEzXT1vMCxQWzE0XT1uMCxQWzE1XT1kMCxQWzE2XT1tMCxQWzE3XT1HMCxQWzE4XT1EaSwwIT09ViYmKFBbMTldPVYsZWUubGVuZ3RoKyspLGVlfTtmdW5jdGlvbiBvZShoZSxPLHop''@;'; put 'put ''e3JldHVybihuZXcgY2UpLm11bHAoaGUsTyx6KX1mdW5jdGlvbiBjZShoZSxPKXt0aGlzLng9aGUsdGhpcy55PU99TWF0aC5pbXVsfHwoSj1LKSxVLnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihPLHope3ZhciBlZSxuZT10aGlzLmxlbmd0aCtPLmxlbmd0aDtyZXR1cm4gZWU9MTA9PT10aGlz''@;'; put 'put ''Lmxlbmd0aCYmMTA9PT1PLmxlbmd0aD9KKHRoaXMsTyx6KTpuZTw2Mz9LKHRoaXMsTyx6KTpuZTwxMDI0P2Z1bmN0aW9uIHNlKGhlLE8seil7ei5uZWdhdGl2ZT1PLm5lZ2F0aXZlXmhlLm5lZ2F0aXZlLHoubGVuZ3RoPWhlLmxlbmd0aCtPLmxlbmd0aDtmb3IodmFyIGVlPTAsbmU9MCx4PTA7''@;'; put 'put ''eDx6Lmxlbmd0aC0xO3grKyl7dmFyIFA9bmU7bmU9MDtmb3IodmFyIFY9NjcxMDg4NjMmZWUsVD1NYXRoLm1pbih4LE8ubGVuZ3RoLTEpLFM9TWF0aC5tYXgoMCx4LWhlLmxlbmd0aCsxKTtTPD1UO1MrKyl7dmFyIERlPSgwfGhlLndvcmRzW3gtU10pKigwfE8ud29yZHNbU10pLFBlPTY3MTA4''@;'; put 'put ''ODYzJkRlO1Y9NjcxMDg4NjMmKFBlPVBlK1Z8MCksbmUrPShQPShQPVArKERlLzY3MTA4ODY0fDApfDApKyhQZT4+PjI2KXwwKT4+PjI2LFAmPTY3MTA4ODYzfXoud29yZHNbeF09VixlZT1QLFA9bmV9cmV0dXJuIDAhPT1lZT96LndvcmRzW3hdPWVlOnoubGVuZ3RoLS0sei5zdHJpcCgpfSh0''@;'; put 'put ''aGlzLE8seik6b2UodGhpcyxPLHopLGVlfSxjZS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbihPKXtmb3IodmFyIHo9bmV3IEFycmF5KE8pLGVlPVUucHJvdG90eXBlLl9jb3VudEJpdHMoTyktMSxuZT0wO25lPE87bmUrKyl6W25lXT10aGlzLnJldkJpbihuZSxlZSxPKTtyZXR1cm4gen0s''@;'; put 'put ''Y2UucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbihPLHosZWUpe2lmKDA9PT1PfHxPPT09ZWUtMSlyZXR1cm4gTztmb3IodmFyIG5lPTAseD0wO3g8ejt4KyspbmV8PSgxJk8pPDx6LXgtMSxPPj49MTtyZXR1cm4gbmV9LGNlLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKE8seixlZSxuZSx4''@;'; put 'put ''LFApe2Zvcih2YXIgVj0wO1Y8UDtWKyspbmVbVl09eltPW1ZdXSx4W1ZdPWVlW09bVl1dfSxjZS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKE8seixlZSxuZSx4LFApe3RoaXMucGVybXV0ZShQLE8seixlZSxuZSx4KTtmb3IodmFyIFY9MTtWPHg7Vjw8PTEpZm9yKHZhciBUPVY8PDEs''@;'; put 'put ''Uz1NYXRoLmNvcygyKk1hdGguUEkvVCksRj1NYXRoLnNpbigyKk1hdGguUEkvVCkseWU9MDt5ZTx4O3llKz1UKWZvcih2YXIgQ2U9UyxEZT1GLFBlPTA7UGU8VjtQZSsrKXt2YXIgUWU9ZWVbeWUrUGVdLCRlPW5lW3llK1BlXSxndD1lZVt5ZStQZStWXSx3dD1uZVt5ZStQZStWXSxtdD1DZSpn''@;'; put 'put ''dC1EZSp3dDt3dD1DZSp3dCtEZSpndCxlZVt5ZStQZV09UWUrKGd0PW10KSxuZVt5ZStQZV09JGUrd3QsZWVbeWUrUGUrVl09UWUtZ3QsbmVbeWUrUGUrVl09JGUtd3QsUGUhPT1UJiYobXQ9UypDZS1GKkRlLERlPVMqRGUrRipDZSxDZT1tdCl9fSxjZS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9''@;'; put 'put ''ZnVuY3Rpb24oTyx6KXt2YXIgZWU9MXxNYXRoLm1heCh6LE8pLG5lPTEmZWUseD0wO2ZvcihlZT1lZS8yfDA7ZWU7ZWU+Pj49MSl4Kys7cmV0dXJuIDE8PHgrMStuZX0sY2UucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbihPLHosZWUpe2lmKCEoZWU8PTEpKWZvcih2YXIgbmU9MDtuZTxl''@;'; put 'put ''ZS8yO25lKyspe3ZhciB4PU9bbmVdO09bbmVdPU9bZWUtbmUtMV0sT1tlZS1uZS0xXT14LHg9eltuZV0seltuZV09LXpbZWUtbmUtMV0seltlZS1uZS0xXT0teH19LGNlLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oTyx6KXtmb3IodmFyIGVlPTAsbmU9MDtuZTx6LzI7bmUrKyl7''@;'; put 'put ''dmFyIHg9ODE5MipNYXRoLnJvdW5kKE9bMipuZSsxXS96KStNYXRoLnJvdW5kKE9bMipuZV0veikrZWU7T1tuZV09NjcxMDg4NjMmeCxlZT14PDY3MTA4ODY0PzA6eC82NzEwODg2NHwwfXJldHVybiBPfSxjZS5wcm90b3R5cGUuY29udmVydDEzYj1mdW5jdGlvbihPLHosZWUsbmUpe2Zvcih2''@;'; put 'put ''YXIgeD0wLFA9MDtQPHo7UCsrKWVlWzIqUF09ODE5MSYoeCs9MHxPW1BdKSxlZVsyKlArMV09ODE5MSYoeD4+Pj0xMykseD4+Pj0xMztmb3IoUD0yKno7UDxuZTsrK1ApZWVbUF09MDtFKDA9PT14KSxFKDA9PSgtODE5MiZ4KSl9LGNlLnByb3RvdHlwZS5zdHViPWZ1bmN0aW9uKE8pe2Zvcih2''@;'; put 'put ''YXIgej1uZXcgQXJyYXkoTyksZWU9MDtlZTxPO2VlKyspeltlZV09MDtyZXR1cm4gen0sY2UucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oTyx6LGVlKXt2YXIgbmU9Mip0aGlzLmd1ZXNzTGVuMTNiKE8ubGVuZ3RoLHoubGVuZ3RoKSx4PXRoaXMubWFrZVJCVChuZSksUD10aGlzLnN0dWIobmUp''@;'; put 'put ''LFY9bmV3IEFycmF5KG5lKSxUPW5ldyBBcnJheShuZSksUz1uZXcgQXJyYXkobmUpLEY9bmV3IEFycmF5KG5lKSx5ZT1uZXcgQXJyYXkobmUpLENlPW5ldyBBcnJheShuZSksRGU9ZWUud29yZHM7RGUubGVuZ3RoPW5lLHRoaXMuY29udmVydDEzYihPLndvcmRzLE8ubGVuZ3RoLFYsbmUpLHRo''@;'; put 'put ''aXMuY29udmVydDEzYih6LndvcmRzLHoubGVuZ3RoLEYsbmUpLHRoaXMudHJhbnNmb3JtKFYsUCxULFMsbmUseCksdGhpcy50cmFuc2Zvcm0oRixQLHllLENlLG5lLHgpO2Zvcih2YXIgUGU9MDtQZTxuZTtQZSsrKXt2YXIgUWU9VFtQZV0qeWVbUGVdLVNbUGVdKkNlW1BlXTtTW1BlXT1UW1Bl''@;'; put 'put ''XSpDZVtQZV0rU1tQZV0qeWVbUGVdLFRbUGVdPVFlfXJldHVybiB0aGlzLmNvbmp1Z2F0ZShULFMsbmUpLHRoaXMudHJhbnNmb3JtKFQsUyxEZSxQLG5lLHgpLHRoaXMuY29uanVnYXRlKERlLFAsbmUpLHRoaXMubm9ybWFsaXplMTNiKERlLG5lKSxlZS5uZWdhdGl2ZT1PLm5lZ2F0aXZlXnou''@;'; put 'put ''bmVnYXRpdmUsZWUubGVuZ3RoPU8ubGVuZ3RoK3oubGVuZ3RoLGVlLnN0cmlwKCl9LFUucHJvdG90eXBlLm11bD1mdW5jdGlvbihPKXt2YXIgej1uZXcgVShudWxsKTtyZXR1cm4gei53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrTy5sZW5ndGgpLHRoaXMubXVsVG8oTyx6KX0sVS5wcm90''@;'; put 'put ''b3R5cGUubXVsZj1mdW5jdGlvbihPKXt2YXIgej1uZXcgVShudWxsKTtyZXR1cm4gei53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrTy5sZW5ndGgpLG9lKHRoaXMsTyx6KX0sVS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKE8sdGhpcyl9''@;'; put 'put ''LFUucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPKSxFKE88NjcxMDg4NjQpO2Zvcih2YXIgej0wLGVlPTA7ZWU8dGhpcy5sZW5ndGg7ZWUrKyl7dmFyIG5lPSgwfHRoaXMud29yZHNbZWVdKSpPLHg9KDY3MTA4ODYzJm5lKSsoNjcxMDg4NjMmeik7ej4+''@;'; put 'put ''PTI2LHorPW5lLzY3MTA4ODY0fDAseis9eD4+PjI2LHRoaXMud29yZHNbZWVdPTY3MTA4ODYzJnh9cmV0dXJuIDAhPT16JiYodGhpcy53b3Jkc1tlZV09eix0aGlzLmxlbmd0aCsrKSx0aGlzfSxVLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4o''@;'; put 'put ''Tyl9LFUucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sVS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sVS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKE8pe3ZhciB6PWZ1bmN0aW9uIHRlKGhlKXtm''@;'; put 'put ''b3IodmFyIE89bmV3IEFycmF5KGhlLmJpdExlbmd0aCgpKSx6PTA7ejxPLmxlbmd0aDt6Kyspe3ZhciBuZT16JTI2O09bel09KGhlLndvcmRzW3ovMjZ8MF0mMTw8bmUpPj4+bmV9cmV0dXJuIE99KE8pO2lmKDA9PT16Lmxlbmd0aClyZXR1cm4gbmV3IFUoMSk7Zm9yKHZhciBlZT10aGlzLG5l''@;'; put 'put ''PTA7bmU8ei5sZW5ndGgmJjA9PT16W25lXTtuZSsrLGVlPWVlLnNxcigpKTtpZigrK25lPHoubGVuZ3RoKWZvcih2YXIgeD1lZS5zcXIoKTtuZTx6Lmxlbmd0aDtuZSsrLHg9eC5zcXIoKSkwIT09eltuZV0mJihlZT1lZS5tdWwoeCkpO3JldHVybiBlZX0sVS5wcm90b3R5cGUuaXVzaGxuPWZ1''@;'; put 'put ''bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgeCx6PU8lMjYsZWU9KE8teikvMjYsbmU9NjcxMDg4NjM+Pj4yNi16PDwyNi16O2lmKDAhPT16KXt2YXIgUD0wO2Zvcih4PTA7eDx0aGlzLmxlbmd0aDt4Kyspe3ZhciBWPXRoaXMud29yZHNbeF0mbmU7dGhpcy53b3Jk''@;'; put 'put ''c1t4XT0oMHx0aGlzLndvcmRzW3hdKS1WPDx6fFAsUD1WPj4+MjYten1QJiYodGhpcy53b3Jkc1t4XT1QLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1lZSl7Zm9yKHg9dGhpcy5sZW5ndGgtMTt4Pj0wO3gtLSl0aGlzLndvcmRzW3grZWVdPXRoaXMud29yZHNbeF07Zm9yKHg9MDt4PGVlO3grKyl0''@;'; put 'put ''aGlzLndvcmRzW3hdPTA7dGhpcy5sZW5ndGgrPWVlfXJldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKE8pe3JldHVybiBFKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbihPKX0sVS5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKE8seixlZSl7dmFy''@;'; put 'put ''IG5lO0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKSxuZT16Pyh6LXolMjYpLzI2OjA7dmFyIHg9TyUyNixQPU1hdGgubWluKChPLXgpLzI2LHRoaXMubGVuZ3RoKSxWPTY3MTA4ODYzXjY3MTA4ODYzPj4+eDw8eCxUPWVlO2lmKG5lLT1QLG5lPU1hdGgubWF4KDAsbmUpLFQpe2Zvcih2YXIg''@;'; put 'put ''Uz0wO1M8UDtTKyspVC53b3Jkc1tTXT10aGlzLndvcmRzW1NdO1QubGVuZ3RoPVB9aWYoMCE9PVApaWYodGhpcy5sZW5ndGg+UClmb3IodGhpcy5sZW5ndGgtPVAsUz0wO1M8dGhpcy5sZW5ndGg7UysrKXRoaXMud29yZHNbU109dGhpcy53b3Jkc1tTK1BdO2Vsc2UgdGhpcy53b3Jkc1swXT0w''@;'; put 'put ''LHRoaXMubGVuZ3RoPTE7dmFyIEY9MDtmb3IoUz10aGlzLmxlbmd0aC0xO1M+PTAmJigwIT09Rnx8Uz49bmUpO1MtLSl7dmFyIHllPTB8dGhpcy53b3Jkc1tTXTt0aGlzLndvcmRzW1NdPUY8PDI2LXh8eWU+Pj54LEY9eWUmVn1yZXR1cm4gVCYmMCE9PUYmJihULndvcmRzW1QubGVuZ3RoKytd''@;'; put 'put ''PUYpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKE8seixlZSl7cmV0dXJuIEUoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKE8seixlZSl9LFUucHJvdG90eXBlLnNo''@;'; put 'put ''bG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihPKX0sVS5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oTyl9LFUucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihPKX0s''@;'; put 'put ''VS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oTyl9LFUucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgej1PJTI2LGVlPShPLXopLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PWVl''@;'; put 'put ''fHwhKHRoaXMud29yZHNbZWVdJjE8PHopKX0sVS5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgej1PJTI2LGVlPShPLXopLzI2O3JldHVybiBFKDA9PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0''@;'; put 'put ''aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9ZWU/dGhpczooMCE9PXomJmVlKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oZWUsdGhpcy5sZW5ndGgpLDAhPT16JiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9NjcxMDg4NjNeNjcxMDg4NjM+Pj56PDx6KSx0aGlzLnN0cmlwKCkpfSxVLnBy''@;'; put 'put ''b3RvdHlwZS5tYXNrbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihPKX0sVS5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24oTyl7cmV0dXJuIEUoIm51bWJlciI9PXR5cGVvZiBPKSxFKE88NjcxMDg4NjQpLE88MD90aGlzLmlzdWJuKC1PKTowIT09dGhpcy5uZWdhdGl2''@;'; put 'put ''ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPE8/KHRoaXMud29yZHNbMF09Ty0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKE8pLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbihPKX0s''@;'; put 'put ''VS5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKE8pe3RoaXMud29yZHNbMF0rPU87Zm9yKHZhciB6PTA7ejx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1t6XT49NjcxMDg4NjQ7eisrKXRoaXMud29yZHNbel0tPTY3MTA4ODY0LHo9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbeisxXT0xOnRo''@;'; put 'put ''aXMud29yZHNbeisxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCx6KzEpLHRoaXN9LFUucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKE8pe2lmKEUoIm51bWJlciI9PXR5cGVvZiBPKSxFKE88NjcxMDg4NjQpLE88MClyZXR1cm4gdGhpcy5pYWRkbigtTyk7aWYo''@;'; put 'put ''MCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKE8pLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPU8sMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5l''@;'; put 'put ''Z2F0aXZlPTE7ZWxzZSBmb3IodmFyIHo9MDt6PHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW3pdPDA7eisrKXRoaXMud29yZHNbel0rPTY3MTA4ODY0LHRoaXMud29yZHNbeisxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlz''@;'; put 'put ''LmNsb25lKCkuaWFkZG4oTyl9LFUucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihPKX0sVS5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sVS5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LFUucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbihPLHosZWUpe3ZhciB4O3RoaXMuX2V4cGFuZChPLmxlbmd0aCtlZSk7dmFyIFAsVj0wO2Zvcih4PTA7eDxPLmxlbmd0aDt4Kyspe1A9KDB8dGhpcy53b3Jkc1t4K2VlXSkrVjt2YXIgVD0o''@;'; put 'put ''MHxPLndvcmRzW3hdKSp6O1Y9KChQLT02NzEwODg2MyZUKT4+MjYpLShULzY3MTA4ODY0fDApLHRoaXMud29yZHNbeCtlZV09NjcxMDg4NjMmUH1mb3IoO3g8dGhpcy5sZW5ndGgtZWU7eCsrKVY9KFA9KDB8dGhpcy53b3Jkc1t4K2VlXSkrVik+PjI2LHRoaXMud29yZHNbeCtlZV09NjcxMDg4''@;'; put 'put ''NjMmUDtpZigwPT09VilyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihFKC0xPT09ViksVj0wLHg9MDt4PHRoaXMubGVuZ3RoO3grKylWPShQPS0oMHx0aGlzLndvcmRzW3hdKStWKT4+MjYsdGhpcy53b3Jkc1t4XT02NzEwODg2MyZQO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgp''@;'; put 'put ''fSxVLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbihPLHope3ZhciBlZSxuZT10aGlzLmNsb25lKCkseD1PLFA9MHx4LndvcmRzW3gubGVuZ3RoLTFdOzAhPShlZT0yNi10aGlzLl9jb3VudEJpdHMoUCkpJiYoeD14LnVzaGxuKGVlKSxuZS5pdXNobG4oZWUpLFA9MHx4LndvcmRzW3gubGVu''@;'; put 'put ''Z3RoLTFdKTt2YXIgUyxUPW5lLmxlbmd0aC14Lmxlbmd0aDtpZigibW9kIiE9PXopeyhTPW5ldyBVKG51bGwpKS5sZW5ndGg9VCsxLFMud29yZHM9bmV3IEFycmF5KFMubGVuZ3RoKTtmb3IodmFyIEY9MDtGPFMubGVuZ3RoO0YrKylTLndvcmRzW0ZdPTB9dmFyIHllPW5lLmNsb25lKCkuX2lz''@;'; put 'put ''aGxuc3VibXVsKHgsMSxUKTswPT09eWUubmVnYXRpdmUmJihuZT15ZSxTJiYoUy53b3Jkc1tUXT0xKSk7Zm9yKHZhciBDZT1ULTE7Q2U+PTA7Q2UtLSl7dmFyIERlPTY3MTA4ODY0KigwfG5lLndvcmRzW3gubGVuZ3RoK0NlXSkrKDB8bmUud29yZHNbeC5sZW5ndGgrQ2UtMV0pO2ZvcihEZT1N''@;'; put 'put ''YXRoLm1pbihEZS9QfDAsNjcxMDg4NjMpLG5lLl9pc2hsbnN1Ym11bCh4LERlLENlKTswIT09bmUubmVnYXRpdmU7KURlLS0sbmUubmVnYXRpdmU9MCxuZS5faXNobG5zdWJtdWwoeCwxLENlKSxuZS5pc1plcm8oKXx8KG5lLm5lZ2F0aXZlXj0xKTtTJiYoUy53b3Jkc1tDZV09RGUpfXJldHVy''@;'; put 'put ''biBTJiZTLnN0cmlwKCksbmUuc3RyaXAoKSwiZGl2IiE9PXomJjAhPT1lZSYmbmUuaXVzaHJuKGVlKSx7ZGl2OlN8fG51bGwsbW9kOm5lfX0sVS5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKE8seixlZSl7cmV0dXJuIEUoIU8uaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgVSgw''@;'; put 'put ''KSxtb2Q6bmV3IFUoMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Ty5uZWdhdGl2ZT8oUD10aGlzLm5lZygpLmRpdm1vZChPLHopLCJtb2QiIT09eiYmKG5lPVAuZGl2Lm5lZygpKSwiZGl2IiE9PXomJih4PVAubW9kLm5lZygpLGVlJiYwIT09eC5uZWdhdGl2ZSYmeC5pYWRkKE8pKSx7ZGl2''@;'; put 'put ''Om5lLG1vZDp4fSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1PLm5lZ2F0aXZlPyhQPXRoaXMuZGl2bW9kKE8ubmVnKCkseiksIm1vZCIhPT16JiYobmU9UC5kaXYubmVnKCkpLHtkaXY6bmUsbW9kOlAubW9kfSk6MCE9KHRoaXMubmVnYXRpdmUmTy5uZWdhdGl2ZSk/KFA9dGhpcy5uZWcoKS5k''@;'; put 'put ''aXZtb2QoTy5uZWcoKSx6KSwiZGl2IiE9PXomJih4PVAubW9kLm5lZygpLGVlJiYwIT09eC5uZWdhdGl2ZSYmeC5pc3ViKE8pKSx7ZGl2OlAuZGl2LG1vZDp4fSk6Ty5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKE8pPDA/e2RpdjpuZXcgVSgwKSxtb2Q6dGhpc306MT09PU8ubGVuZ3Ro''@;'; put 'put ''PyJkaXYiPT09ej97ZGl2OnRoaXMuZGl2bihPLndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT16P3tkaXY6bnVsbCxtb2Q6bmV3IFUodGhpcy5tb2RuKE8ud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oTy53b3Jkc1swXSksbW9kOm5ldyBVKHRoaXMubW9kbihPLndvcmRzWzBdKSl9OnRo''@;'; put 'put ''aXMuX3dvcmREaXYoTyx6KTt2YXIgbmUseCxQfSxVLnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZGl2bW9kKE8sImRpdiIsITEpLmRpdn0sVS5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmRpdm1vZChPLCJtb2QiLCExKS5tb2R9LFUucHJvdG90''@;'; put 'put ''eXBlLnVtb2Q9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZGl2bW9kKE8sIm1vZCIsITApLm1vZH0sVS5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oTyl7dmFyIHo9dGhpcy5kaXZtb2QoTyk7aWYoei5tb2QuaXNaZXJvKCkpcmV0dXJuIHouZGl2O3ZhciBlZT0wIT09ei5kaXYubmVnYXRp''@;'; put 'put ''dmU/ei5tb2QuaXN1YihPKTp6Lm1vZCxuZT1PLnVzaHJuKDEpLHg9Ty5hbmRsbigxKSxQPWVlLmNtcChuZSk7cmV0dXJuIFA8MHx8MT09PXgmJjA9PT1QP3ouZGl2OjAhPT16LmRpdi5uZWdhdGl2ZT96LmRpdi5pc3VibigxKTp6LmRpdi5pYWRkbigxKX0sVS5wcm90b3R5cGUubW9kbj1mdW5j''@;'; put 'put ''dGlvbihPKXtFKE88PTY3MTA4ODYzKTtmb3IodmFyIHo9KDE8PDI2KSVPLGVlPTAsbmU9dGhpcy5sZW5ndGgtMTtuZT49MDtuZS0tKWVlPSh6KmVlKygwfHRoaXMud29yZHNbbmVdKSklTztyZXR1cm4gZWV9LFUucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKE8pe0UoTzw9NjcxMDg4NjMpO2Zv''@;'; put 'put ''cih2YXIgej0wLGVlPXRoaXMubGVuZ3RoLTE7ZWU+PTA7ZWUtLSl7dmFyIG5lPSgwfHRoaXMud29yZHNbZWVdKSs2NzEwODg2NCp6O3RoaXMud29yZHNbZWVdPW5lL098MCx6PW5lJU99cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbihPKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5jbG9uZSgpLmlkaXZuKE8pfSxVLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKE8pe0UoMD09PU8ubmVnYXRpdmUpLEUoIU8uaXNaZXJvKCkpO3ZhciB6PXRoaXMsZWU9Ty5jbG9uZSgpO3o9MCE9PXoubmVnYXRpdmU/ei51bW9kKE8pOnouY2xvbmUoKTtmb3IodmFyIG5lPW5ldyBVKDEpLHg9''@;'; put 'put ''bmV3IFUoMCksUD1uZXcgVSgwKSxWPW5ldyBVKDEpLFQ9MDt6LmlzRXZlbigpJiZlZS5pc0V2ZW4oKTspei5pdXNocm4oMSksZWUuaXVzaHJuKDEpLCsrVDtmb3IodmFyIFM9ZWUuY2xvbmUoKSxGPXouY2xvbmUoKTshei5pc1plcm8oKTspe2Zvcih2YXIgeWU9MCxDZT0xOzA9PSh6LndvcmRz''@;'; put 'put ''WzBdJkNlKSYmeWU8MjY7Kyt5ZSxDZTw8PTEpO2lmKHllPjApZm9yKHouaXVzaHJuKHllKTt5ZS0tID4wOykobmUuaXNPZGQoKXx8eC5pc09kZCgpKSYmKG5lLmlhZGQoUykseC5pc3ViKEYpKSxuZS5pdXNocm4oMSkseC5pdXNocm4oMSk7Zm9yKHZhciBEZT0wLFBlPTE7MD09KGVlLndvcmRz''@;'; put 'put ''WzBdJlBlKSYmRGU8MjY7KytEZSxQZTw8PTEpO2lmKERlPjApZm9yKGVlLml1c2hybihEZSk7RGUtLSA+MDspKFAuaXNPZGQoKXx8Vi5pc09kZCgpKSYmKFAuaWFkZChTKSxWLmlzdWIoRikpLFAuaXVzaHJuKDEpLFYuaXVzaHJuKDEpO3ouY21wKGVlKT49MD8oei5pc3ViKGVlKSxuZS5pc3Vi''@;'; put 'put ''KFApLHguaXN1YihWKSk6KGVlLmlzdWIoeiksUC5pc3ViKG5lKSxWLmlzdWIoeCkpfXJldHVybnthOlAsYjpWLGdjZDplZS5pdXNobG4oVCl9fSxVLnByb3RvdHlwZS5faW52bXA9ZnVuY3Rpb24oTyl7RSgwPT09Ty5uZWdhdGl2ZSksRSghTy5pc1plcm8oKSk7dmFyIHllLHo9dGhpcyxlZT1P''@;'; put 'put ''LmNsb25lKCk7ej0wIT09ei5uZWdhdGl2ZT96LnVtb2QoTyk6ei5jbG9uZSgpO2Zvcih2YXIgbmU9bmV3IFUoMSkseD1uZXcgVSgwKSxQPWVlLmNsb25lKCk7ei5jbXBuKDEpPjAmJmVlLmNtcG4oMSk+MDspe2Zvcih2YXIgVj0wLFQ9MTswPT0oei53b3Jkc1swXSZUKSYmVjwyNjsrK1YsVDw8''@;'; put 'put ''PTEpO2lmKFY+MClmb3Ioei5pdXNocm4oVik7Vi0tID4wOyluZS5pc09kZCgpJiZuZS5pYWRkKFApLG5lLml1c2hybigxKTtmb3IodmFyIFM9MCxGPTE7MD09KGVlLndvcmRzWzBdJkYpJiZTPDI2OysrUyxGPDw9MSk7aWYoUz4wKWZvcihlZS5pdXNocm4oUyk7Uy0tID4wOyl4LmlzT2RkKCkm''@;'; put 'put ''JnguaWFkZChQKSx4Lml1c2hybigxKTt6LmNtcChlZSk+PTA/KHouaXN1YihlZSksbmUuaXN1Yih4KSk6KGVlLmlzdWIoeikseC5pc3ViKG5lKSl9cmV0dXJuKHllPTA9PT16LmNtcG4oMSk/bmU6eCkuY21wbigwKTwwJiZ5ZS5pYWRkKE8pLHllfSxVLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24o''@;'; put 'put ''Tyl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gTy5hYnMoKTtpZihPLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciB6PXRoaXMuY2xvbmUoKSxlZT1PLmNsb25lKCk7ei5uZWdhdGl2ZT0wLGVlLm5lZ2F0aXZlPTA7Zm9yKHZhciBuZT0wO3ouaXNFdmVuKCkmJmVlLmlzRXZlbigpO25l''@;'; put 'put ''Kyspei5pdXNocm4oMSksZWUuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDt6LmlzRXZlbigpOyl6Lml1c2hybigxKTtmb3IoO2VlLmlzRXZlbigpOyllZS5pdXNocm4oMSk7dmFyIHg9ei5jbXAoZWUpO2lmKHg8MCl7dmFyIFA9ejt6PWVlLGVlPVB9ZWxzZSBpZigwPT09eHx8MD09PWVlLmNtcG4o''@;'; put 'put ''MSkpYnJlYWs7ei5pc3ViKGVlKX1yZXR1cm4gZWUuaXVzaGxuKG5lKX0sVS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5lZ2NkKE8pLmEudW1vZChPKX0sVS5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMud29yZHNbMF0pfSxVLnBy''@;'; put 'put ''b3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLndvcmRzWzBdKX0sVS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMud29yZHNbMF0mT30sVS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8pO3ZhciB6''@;'; put 'put ''PU8lMjYsZWU9KE8teikvMjYsbmU9MTw8ejtpZih0aGlzLmxlbmd0aDw9ZWUpcmV0dXJuIHRoaXMuX2V4cGFuZChlZSsxKSx0aGlzLndvcmRzW2VlXXw9bmUsdGhpcztmb3IodmFyIHg9bmUsUD1lZTswIT09eCYmUDx0aGlzLmxlbmd0aDtQKyspe3ZhciBWPTB8dGhpcy53b3Jkc1tQXTt4PShW''@;'; put 'put ''Kz14KT4+PjI2LHRoaXMud29yZHNbUF09ViY9NjcxMDg4NjN9cmV0dXJuIDAhPT14JiYodGhpcy53b3Jkc1tQXT14LHRoaXMubGVuZ3RoKyspLHRoaXN9LFUucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdfSxVLnBy''@;'; put 'put ''b3RvdHlwZS5jbXBuPWZ1bmN0aW9uKE8pe3ZhciBlZSx6PU88MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIXopcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJnopcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpZWU9MTtlbHNle3omJihPPS1PKSxFKE88PTY3MTA4''@;'; put 'put ''ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBuZT0wfHRoaXMud29yZHNbMF07ZWU9bmU9PT1PPzA6bmU8Tz8tMToxfXJldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1lZTplZX0sVS5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKE8pe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Ty5uZWdh''@;'; put 'put ''dGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PU8ubmVnYXRpdmUpcmV0dXJuIDE7dmFyIHo9dGhpcy51Y21wKE8pO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC16Onp9LFUucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oTyl7aWYodGhpcy5sZW5ndGg+Ty5sZW5ndGgp''@;'; put 'put ''cmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8Ty5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciB6PTAsZWU9dGhpcy5sZW5ndGgtMTtlZT49MDtlZS0tKXt2YXIgbmU9MHx0aGlzLndvcmRzW2VlXSx4PTB8Ty53b3Jkc1tlZV07aWYobmUhPT14KXtuZTx4P3o9LTE6bmU+eCYmKHo9MSk7YnJlYWt9fXJl''@;'; put 'put ''dHVybiB6fSxVLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oTyl7cmV0dXJuIDE9PT10aGlzLmNtcG4oTyl9LFUucHJvdG90eXBlLmd0PWZ1bmN0aW9uKE8pe3JldHVybiAxPT09dGhpcy5jbXAoTyl9LFUucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY21wbihPKT49MH0s''@;'; put 'put ''VS5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNtcChPKT49MH0sVS5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKE8pe3JldHVybi0xPT09dGhpcy5jbXBuKE8pfSxVLnByb3RvdHlwZS5sdD1mdW5jdGlvbihPKXtyZXR1cm4tMT09PXRoaXMuY21wKE8pfSxVLnByb3RvdHlw''@;'; put 'put ''ZS5sdGVuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNtcG4oTyk8PTB9LFUucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbXAoTyk8PTB9LFUucHJvdG90eXBlLmVxbj1mdW5jdGlvbihPKXtyZXR1cm4gMD09PXRoaXMuY21wbihPKX0sVS5wcm90b3R5cGUuZXE9ZnVu''@;'; put 'put ''Y3Rpb24oTyl7cmV0dXJuIDA9PT10aGlzLmNtcChPKX0sVS5yZWQ9ZnVuY3Rpb24oTyl7cmV0dXJuIG5ldyBUZShPKX0sVS5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksRSgwPT09''@;'; put 'put ''dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxPLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoTyl9LFUucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiBy''@;'; put 'put ''ZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSxVLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMucmVkPU8sdGhpc30sVS5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUoIXRoaXMucmVkLCJBbHJlYWR5''@;'; put 'put ''IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoTyl9LFUucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLE8pfSxVLnBy''@;'; put 'put ''b3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRTdWIg''@;'; put 'put ''d29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLE8pfSxV''@;'; put 'put ''LnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRNdWwg''@;'; put 'put ''d29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxPKSx0aGlzLnJlZC5tdWwodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIp''@;'; put 'put ''LHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsTyksdGhpcy5yZWQuaW11bCh0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMu''@;'; put 'put ''cmVkLnNxcih0aGlzKX0sVS5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LFUucHJvdG90eXBlLnJlZFNx''@;'; put 'put ''cnQ9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxVLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQs''@;'; put 'put ''InJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sVS5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJl''@;'; put 'put ''cnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LFUucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCYmIU8ucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0''@;'; put 'put ''aGlzLE8pfTt2YXIgZGU9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiB2ZShoZSxPKXt0aGlzLm5hbWU9aGUsdGhpcy5wPW5ldyBVKE8sMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBVKDEpLml1c2hsbih0aGlzLm4p''@;'; put 'put ''LmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBBZSgpe3ZlLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24ga2UoKXt2ZS5jYWxs''@;'; put 'put ''KHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIFNlKCl7dmUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZm''@;'; put 'put ''ZmYiKX1mdW5jdGlvbiBJZSgpe3ZlLmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gVGUoaGUpe2lmKCJzdHJpbmciPT10eXBlb2YgaGUpe3ZhciBPPVUuX3ByaW1l''@;'; put 'put ''KGhlKTt0aGlzLm09Ty5wLHRoaXMucHJpbWU9T31lbHNlIEUoaGUuZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09aGUsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIE1lKGhlKXtUZS5jYWxsKHRoaXMsaGUpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0''@;'; put 'put ''aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IFUoMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhp''@;'; put 'put ''cy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9dmUucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgTz1uZXcgVShudWxsKTtyZXR1cm4gTy53b3Jk''@;'; put 'put ''cz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLE99LHZlLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKE8pe3ZhciBlZSx6PU87ZG97dGhpcy5zcGxpdCh6LHRoaXMudG1wKSxlZT0oej0oej10aGlzLmltdWxLKHopKS5pYWRkKHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUo''@;'; put 'put ''ZWU+dGhpcy5uKTt2YXIgbmU9ZWU8dGhpcy5uPy0xOnoudWNtcCh0aGlzLnApO3JldHVybiAwPT09bmU/KHoud29yZHNbMF09MCx6Lmxlbmd0aD0xKTpuZT4wP3ouaXN1Yih0aGlzLnApOnZvaWQgMCE9PXouc3RyaXA/ei5zdHJpcCgpOnouX3N0cmlwKCksen0sdmUucHJvdG90eXBlLnNwbGl0''@;'; put 'put ''PWZ1bmN0aW9uKE8seil7Ty5pdXNocm4odGhpcy5uLDAseil9LHZlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihPKXtyZXR1cm4gTy5pbXVsKHRoaXMuayl9LEVlKEFlLHZlKSxBZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oTyx6KXtmb3IodmFyIG5lPU1hdGgubWluKE8ubGVuZ3RoLDkp''@;'; put 'put ''LHg9MDt4PG5lO3grKyl6LndvcmRzW3hdPU8ud29yZHNbeF07aWYoei5sZW5ndGg9bmUsTy5sZW5ndGg8PTkpcmV0dXJuIE8ud29yZHNbMF09MCx2b2lkKE8ubGVuZ3RoPTEpO3ZhciBQPU8ud29yZHNbOV07Zm9yKHoud29yZHNbei5sZW5ndGgrK109NDE5NDMwMyZQLHg9MTA7eDxPLmxlbmd0''@;'; put 'put ''aDt4Kyspe3ZhciBWPTB8Ty53b3Jkc1t4XTtPLndvcmRzW3gtMTBdPSg0MTk0MzAzJlYpPDw0fFA+Pj4yMixQPVZ9Ty53b3Jkc1t4LTEwXT1QPj4+PTIyLE8ubGVuZ3RoLT0wPT09UCYmTy5sZW5ndGg+MTA/MTA6OX0sQWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKE8pe08ud29yZHNbTy5s''@;'; put 'put ''ZW5ndGhdPTAsTy53b3Jkc1tPLmxlbmd0aCsxXT0wLE8ubGVuZ3RoKz0yO2Zvcih2YXIgej0wLGVlPTA7ZWU8Ty5sZW5ndGg7ZWUrKyl7dmFyIG5lPTB8Ty53b3Jkc1tlZV07Ty53b3Jkc1tlZV09NjcxMDg4NjMmKHorPTk3NypuZSksej02NCpuZSsoei82NzEwODg2NHwwKX1yZXR1cm4gMD09''@;'; put 'put ''PU8ud29yZHNbTy5sZW5ndGgtMV0mJihPLmxlbmd0aC0tLDA9PT1PLndvcmRzW08ubGVuZ3RoLTFdJiZPLmxlbmd0aC0tKSxPfSxFZShrZSx2ZSksRWUoU2UsdmUpLEVlKEllLHZlKSxJZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oTyl7Zm9yKHZhciB6PTAsZWU9MDtlZTxPLmxlbmd0aDtl''@;'; put 'put ''ZSsrKXt2YXIgbmU9MTkqKDB8Ty53b3Jkc1tlZV0pK3oseD02NzEwODg2MyZuZTtuZT4+Pj0yNixPLndvcmRzW2VlXT14LHo9bmV9cmV0dXJuIDAhPT16JiYoTy53b3Jkc1tPLmxlbmd0aCsrXT16KSxPfSxVLl9wcmltZT1mdW5jdGlvbihPKXtpZihkZVtPXSlyZXR1cm4gZGVbT107dmFyIHo7''@;'; put 'put ''aWYoImsyNTYiPT09Tyl6PW5ldyBBZTtlbHNlIGlmKCJwMjI0Ij09PU8pej1uZXcga2U7ZWxzZSBpZigicDE5MiI9PT1PKXo9bmV3IFNlO2Vsc2V7aWYoInAyNTUxOSIhPT1PKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK08pO3o9bmV3IEllfXJldHVybiBkZVtPXT16LHp9LFRl''@;'; put 'put ''LnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbihPKXtFKDA9PT1PLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEUoTy5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sVGUucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKE8seil7RSgw''@;'; put 'put ''PT0oTy5uZWdhdGl2ZXx6Lm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxFKE8ucmVkJiZPLnJlZD09PXoucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LFRlLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLnByaW1l''@;'; put 'put ''P3RoaXMucHJpbWUuaXJlZHVjZShPKS5fZm9yY2VSZWQodGhpcyk6Ty51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKE8pe3JldHVybiBPLmlzWmVybygpP08uY2xvbmUoKTp0aGlzLm0uc3ViKE8pLl9mb3JjZVJlZCh0aGlzKX0sVGUucHJv''@;'; put 'put ''dG90eXBlLmFkZD1mdW5jdGlvbihPLHope3RoaXMuX3ZlcmlmeTIoTyx6KTt2YXIgZWU9Ty5hZGQoeik7cmV0dXJuIGVlLmNtcCh0aGlzLm0pPj0wJiZlZS5pc3ViKHRoaXMubSksZWUuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihPLHope3RoaXMuX3Zlcmlm''@;'; put 'put ''eTIoTyx6KTt2YXIgZWU9Ty5pYWRkKHopO3JldHVybiBlZS5jbXAodGhpcy5tKT49MCYmZWUuaXN1Yih0aGlzLm0pLGVlfSxUZS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKE8seil7dGhpcy5fdmVyaWZ5MihPLHopO3ZhciBlZT1PLnN1Yih6KTtyZXR1cm4gZWUuY21wbigwKTwwJiZlZS5pYWRk''@;'; put 'put ''KHRoaXMubSksZWUuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihPLHope3RoaXMuX3ZlcmlmeTIoTyx6KTt2YXIgZWU9Ty5pc3ViKHopO3JldHVybiBlZS5jbXBuKDApPDAmJmVlLmlhZGQodGhpcy5tKSxlZX0sVGUucHJvdG90eXBlLnNobD1mdW5jdGlvbihP''@;'; put 'put ''LHope3JldHVybiB0aGlzLl92ZXJpZnkxKE8pLHRoaXMuaW1vZChPLnVzaGxuKHopKX0sVGUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihPLHopLHRoaXMuaW1vZChPLmltdWwoeikpfSxUZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKE8seil7cmV0''@;'; put 'put ''dXJuIHRoaXMuX3ZlcmlmeTIoTyx6KSx0aGlzLmltb2QoTy5tdWwoeikpfSxUZS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5pbXVsKE8sTy5jbG9uZSgpKX0sVGUucHJvdG90eXBlLnNxcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5tdWwoTyxPKX0sVGUucHJvdG90''@;'; put 'put ''eXBlLnNxcnQ9ZnVuY3Rpb24oTyl7aWYoTy5pc1plcm8oKSlyZXR1cm4gTy5jbG9uZSgpO3ZhciB6PXRoaXMubS5hbmRsbigzKTtpZihFKHolMj09MSksMz09PXope3ZhciBlZT10aGlzLm0uYWRkKG5ldyBVKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KE8sZWUpfWZvcih2YXIgbmU9''@;'; put 'put ''dGhpcy5tLnN1Ym4oMSkseD0wOyFuZS5pc1plcm8oKSYmMD09PW5lLmFuZGxuKDEpOyl4KyssbmUuaXVzaHJuKDEpO0UoIW5lLmlzWmVybygpKTt2YXIgUD1uZXcgVSgxKS50b1JlZCh0aGlzKSxWPVAucmVkTmVnKCksVD10aGlzLm0uc3VibigxKS5pdXNocm4oMSksUz10aGlzLm0uYml0TGVu''@;'; put 'put ''Z3RoKCk7Zm9yKFM9bmV3IFUoMipTKlMpLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhTLFQpLmNtcChWKTspUy5yZWRJQWRkKFYpO2Zvcih2YXIgRj10aGlzLnBvdyhTLG5lKSx5ZT10aGlzLnBvdyhPLG5lLmFkZG4oMSkuaXVzaHJuKDEpKSxDZT10aGlzLnBvdyhPLG5lKSxEZT14OzAhPT1D''@;'; put 'put ''ZS5jbXAoUCk7KXtmb3IodmFyIFBlPUNlLFFlPTA7MCE9PVBlLmNtcChQKTtRZSsrKVBlPVBlLnJlZFNxcigpO0UoUWU8RGUpO3ZhciAkZT10aGlzLnBvdyhGLG5ldyBVKDEpLml1c2hsbihEZS1RZS0xKSk7eWU9eWUucmVkTXVsKCRlKSxGPSRlLnJlZFNxcigpLENlPUNlLnJlZE11bChGKSxE''@;'; put 'put ''ZT1RZX1yZXR1cm4geWV9LFRlLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKE8pe3ZhciB6PU8uX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT16Lm5lZ2F0aXZlPyh6Lm5lZ2F0aXZlPTAsdGhpcy5pbW9kKHopLnJlZE5lZygpKTp0aGlzLmltb2Qoeil9LFRlLnByb3RvdHlwZS5wb3c9ZnVuY3Rp''@;'; put 'put ''b24oTyx6KXtpZih6LmlzWmVybygpKXJldHVybiBuZXcgVSgxKS50b1JlZCh0aGlzKTtpZigwPT09ei5jbXBuKDEpKXJldHVybiBPLmNsb25lKCk7dmFyIG5lPW5ldyBBcnJheSgxNik7bmVbMF09bmV3IFUoMSkudG9SZWQodGhpcyksbmVbMV09Tztmb3IodmFyIHg9Mjt4PG5lLmxlbmd0aDt4''@;'; put 'put ''KyspbmVbeF09dGhpcy5tdWwobmVbeC0xXSxPKTt2YXIgUD1uZVswXSxWPTAsVD0wLFM9ei5iaXRMZW5ndGgoKSUyNjtmb3IoMD09PVMmJihTPTI2KSx4PXoubGVuZ3RoLTE7eD49MDt4LS0pe2Zvcih2YXIgRj16LndvcmRzW3hdLHllPVMtMTt5ZT49MDt5ZS0tKXt2YXIgQ2U9Rj4+eWUmMTtQ''@;'; put 'put ''IT09bmVbMF0mJihQPXRoaXMuc3FyKFApKSwwIT09Q2V8fDAhPT1WPyhWPDw9MSxWfD1DZSwoND09KytUfHwwPT09eCYmMD09PXllKSYmKFA9dGhpcy5tdWwoUCxuZVtWXSksVD0wLFY9MCkpOlQ9MH1TPTI2fXJldHVybiBQfSxUZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKE8pe3Zh''@;'; put 'put ''ciB6PU8udW1vZCh0aGlzLm0pO3JldHVybiB6PT09Tz96LmNsb25lKCk6en0sVGUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKE8pe3ZhciB6PU8uY2xvbmUoKTtyZXR1cm4gei5yZWQ9bnVsbCx6fSxVLm1vbnQ9ZnVuY3Rpb24oTyl7cmV0dXJuIG5ldyBNZShPKX0sRWUoTWUsVGUp''@;'; put 'put ''LE1lLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuaW1vZChPLnVzaGxuKHRoaXMuc2hpZnQpKX0sTWUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKE8pe3ZhciB6PXRoaXMuaW1vZChPLm11bCh0aGlzLnJpbnYpKTtyZXR1cm4gei5yZWQ9bnVsbCx6''@;'; put 'put ''fSxNZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihPLHope2lmKE8uaXNaZXJvKCl8fHouaXNaZXJvKCkpcmV0dXJuIE8ud29yZHNbMF09MCxPLmxlbmd0aD0xLE87dmFyIGVlPU8uaW11bCh6KSxuZT1lZS5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlm''@;'; put 'put ''dCkubXVsKHRoaXMubSkseD1lZS5pc3ViKG5lKS5pdXNocm4odGhpcy5zaGlmdCksUD14O3JldHVybiB4LmNtcCh0aGlzLm0pPj0wP1A9eC5pc3ViKHRoaXMubSk6eC5jbXBuKDApPDAmJihQPXguaWFkZCh0aGlzLm0pKSxQLl9mb3JjZVJlZCh0aGlzKX0sTWUucHJvdG90eXBlLm11bD1mdW5j''@;'; put 'put ''dGlvbihPLHope2lmKE8uaXNaZXJvKCl8fHouaXNaZXJvKCkpcmV0dXJuIG5ldyBVKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgZWU9Ty5tdWwoeiksbmU9ZWUubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLHg9ZWUuaXN1Yihu''@;'; put 'put ''ZSkuaXVzaHJuKHRoaXMuc2hpZnQpLFA9eDtyZXR1cm4geC5jbXAodGhpcy5tKT49MD9QPXguaXN1Yih0aGlzLm0pOnguY21wbigwKTwwJiYoUD14LmlhZGQodGhpcy5tKSksUC5fZm9yY2VSZWQodGhpcyl9LE1lLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmltb2Qo''@;'; put 'put ''Ty5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KFhlPUwubm1kKFhlKSx0aGlzKX0sOTI3MzU6ZnVuY3Rpb24oWGUpe1hlLmV4cG9ydHM9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gSmUoZnQpe3JldHVybihKZT0iZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihIdCl7cmV0dXJuIHR5cGVvZiBIdH06ZnVuY3Rpb24oSHQpe3JldHVybiBIdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmSHQuY29uc3RydWN0b3I9PT1TeW1ib2wmJkh0IT09U3ltYm9sLnBy''@;'; put 'put ''b3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgSHR9KShmdCl9ZnVuY3Rpb24gTChmdCxIdCl7cmV0dXJuKEw9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihVZSx5dCl7cmV0dXJuIFVlLl9fcHJvdG9fXz15dCxVZX0pKGZ0LEh0KX1mdW5jdGlvbiBtZSgpe2lmKCJ1bmRlZmluZWQiPT10''@;'; put 'put ''eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChC''@;'; put 'put ''b29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoKGZ0KXtyZXR1cm4hMX19ZnVuY3Rpb24gQihmdCxIdCxHZSl7cmV0dXJuKEI9bWUoKT9SZWZsZWN0LmNvbnN0cnVjdDpmdW5jdGlvbih5dCxqdCxKdCl7dmFyIGduPVtudWxsXTtnbi5wdXNoLmFwcGx5KGduLGp0KTt2YXIgeW49bmV3''@;'; put 'put ''KEZ1bmN0aW9uLmJpbmQuYXBwbHkoeXQsZ24pKTtyZXR1cm4gSnQmJkwoeW4sSnQucHJvdG90eXBlKSx5bn0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBFKGZ0KXtyZXR1cm4gZnVuY3Rpb24gRWUoZnQpe2lmKEFycmF5LmlzQXJyYXkoZnQpKXJldHVybiBqKGZ0KX0oZnQpfHxm''@;'; put 'put ''dW5jdGlvbiBVKGZ0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZnRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZnRbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShmdCl9KGZ0KXx8ZnVuY3Rpb24gUShmdCxIdCl7aWYoZnQpe2lmKCJzdHJpbmciPT10eXBl''@;'; put 'put ''b2YgZnQpcmV0dXJuIGooZnQsSHQpO3ZhciBHZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZnQpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09R2UmJmZ0LmNvbnN0cnVjdG9yJiYoR2U9ZnQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1HZXx8IlNldCI9PT1HZSlyZXR1cm4g''@;'; put 'put ''QXJyYXkuZnJvbShmdCk7aWYoIkFyZ3VtZW50cyI9PT1HZXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoR2UpKXJldHVybiBqKGZ0LEh0KX19KGZ0KXx8ZnVuY3Rpb24gcmUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8g''@;'; put 'put ''c3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBqKGZ0LEh0KXsobnVsbD09SHR8fEh0PmZ0Lmxlbmd0aCkmJihI''@;'; put 'put ''dD1mdC5sZW5ndGgpO2Zvcih2YXIgR2U9MCxVZT1uZXcgQXJyYXkoSHQpO0dlPEh0O0dlKyspVWVbR2VdPWZ0W0dlXTtyZXR1cm4gVWV9dmFyIGFlPU9iamVjdC5oYXNPd25Qcm9wZXJ0eSxZPU9iamVjdC5zZXRQcm90b3R5cGVPZixXPU9iamVjdC5pc0Zyb3plbixOPU9iamVjdC5nZXRQcm90''@;'; put 'put ''b3R5cGVPZix0ZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLEs9T2JqZWN0LmZyZWV6ZSxKPU9iamVjdC5zZWFsLHNlPU9iamVjdC5jcmVhdGUsb2U9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LGNlPW9lLmFwcGx5LGRlPW9lLmNvbnN0cnVjdDtjZXx8KGNl''@;'; put 'put ''PWZ1bmN0aW9uKEh0LEdlLFVlKXtyZXR1cm4gSHQuYXBwbHkoR2UsVWUpfSksS3x8KEs9ZnVuY3Rpb24oSHQpe3JldHVybiBIdH0pLEp8fChKPWZ1bmN0aW9uKEh0KXtyZXR1cm4gSHR9KSxkZXx8KGRlPWZ1bmN0aW9uKEh0LEdlKXtyZXR1cm4gQihIdCxFKEdlKSl9KTt2YXIgdmU9ZWUoQXJy''@;'; put 'put ''YXkucHJvdG90eXBlLmZvckVhY2gpLEFlPWVlKEFycmF5LnByb3RvdHlwZS5wb3ApLGtlPWVlKEFycmF5LnByb3RvdHlwZS5wdXNoKSxTZT1lZShTdHJpbmcucHJvdG90eXBlLnRvTG93ZXJDYXNlKSxJZT1lZShTdHJpbmcucHJvdG90eXBlLm1hdGNoKSxUZT1lZShTdHJpbmcucHJvdG90eXBl''@;'; put 'put ''LnJlcGxhY2UpLE1lPWVlKFN0cmluZy5wcm90b3R5cGUuaW5kZXhPZiksaGU9ZWUoU3RyaW5nLnByb3RvdHlwZS50cmltKSxPPWVlKFJlZ0V4cC5wcm90b3R5cGUudGVzdCksej1mdW5jdGlvbiBuZShmdCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBIdD1hcmd1bWVudHMubGVuZ3RoLEdl''@;'; put 'put ''PW5ldyBBcnJheShIdCksVWU9MDtVZTxIdDtVZSsrKUdlW1VlXT1hcmd1bWVudHNbVWVdO3JldHVybiBkZShmdCxHZSl9fShUeXBlRXJyb3IpO2Z1bmN0aW9uIGVlKGZ0KXtyZXR1cm4gZnVuY3Rpb24oSHQpe2Zvcih2YXIgR2U9YXJndW1lbnRzLmxlbmd0aCxVZT1uZXcgQXJyYXkoR2U+MT9H''@;'; put 'put ''ZS0xOjApLHl0PTE7eXQ8R2U7eXQrKylVZVt5dC0xXT1hcmd1bWVudHNbeXRdO3JldHVybiBjZShmdCxIdCxVZSl9fWZ1bmN0aW9uIHgoZnQsSHQsR2Upe0dlPUdlfHxTZSxZJiZZKGZ0LG51bGwpO2Zvcih2YXIgVWU9SHQubGVuZ3RoO1VlLS07KXt2YXIgeXQ9SHRbVWVdO2lmKCJzdHJpbmci''@;'; put 'put ''PT10eXBlb2YgeXQpe3ZhciBqdD1HZSh5dCk7anQhPT15dCYmKFcoSHQpfHwoSHRbVWVdPWp0KSx5dD1qdCl9ZnRbeXRdPSEwfXJldHVybiBmdH1mdW5jdGlvbiBQKGZ0KXt2YXIgR2UsSHQ9c2UobnVsbCk7Zm9yKEdlIGluIGZ0KWNlKGFlLGZ0LFtHZV0pJiYoSHRbR2VdPWZ0W0dlXSk7cmV0''@;'; put 'put ''dXJuIEh0fWZ1bmN0aW9uIFYoZnQsSHQpe2Zvcig7bnVsbCE9PWZ0Oyl7dmFyIEdlPXRlKGZ0LEh0KTtpZihHZSl7aWYoR2UuZ2V0KXJldHVybiBlZShHZS5nZXQpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBHZS52YWx1ZSlyZXR1cm4gZWUoR2UudmFsdWUpfWZ0PU4oZnQpfXJldHVybiBmdW5j''@;'; put 'put ''dGlvbiBVZSh5dCl7cmV0dXJuIGNvbnNvbGUud2FybigiZmFsbGJhY2sgdmFsdWUgZm9yIix5dCksbnVsbH19dmFyIFQ9SyhbImEiLCJhYmJyIiwiYWNyb255bSIsImFkZHJlc3MiLCJhcmVhIiwiYXJ0aWNsZSIsImFzaWRlIiwiYXVkaW8iLCJiIiwiYmRpIiwiYmRvIiwiYmlnIiwiYmxpbmsi''@;'; put 'put ''LCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNlbnRlciIsImNpdGUiLCJjb2RlIiwiY29sIiwiY29sZ3JvdXAiLCJjb250ZW50IiwiZGF0YSIsImRhdGFsaXN0IiwiZGQiLCJkZWNvcmF0b3IiLCJkZWwiLCJkZXRhaWxzIiwiZGZuIiwiZGlh''@;'; put 'put ''bG9nIiwiZGlyIiwiZGl2IiwiZGwiLCJkdCIsImVsZW1lbnQiLCJlbSIsImZpZWxkc2V0IiwiZmlnY2FwdGlvbiIsImZpZ3VyZSIsImZvbnQiLCJmb290ZXIiLCJmb3JtIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZCIsImhlYWRlciIsImhncm91cCIsImhyIiwiaHRtbCIs''@;'; put 'put ''ImkiLCJpbWciLCJpbnB1dCIsImlucyIsImtiZCIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJtYWluIiwibWFwIiwibWFyayIsIm1hcnF1ZWUiLCJtZW51IiwibWVudWl0ZW0iLCJtZXRlciIsIm5hdiIsIm5vYnIiLCJvbCIsIm9wdGdyb3VwIiwib3B0aW9uIiwib3V0cHV0IiwicCIsInBpY3R1''@;'; put 'put ''cmUiLCJwcmUiLCJwcm9ncmVzcyIsInEiLCJycCIsInJ0IiwicnVieSIsInMiLCJzYW1wIiwic2VjdGlvbiIsInNlbGVjdCIsInNoYWRvdyIsInNtYWxsIiwic291cmNlIiwic3BhY2VyIiwic3BhbiIsInN0cmlrZSIsInN0cm9uZyIsInN0eWxlIiwic3ViIiwic3VtbWFyeSIsInN1cCIsInRh''@;'; put 'put ''YmxlIiwidGJvZHkiLCJ0ZCIsInRlbXBsYXRlIiwidGV4dGFyZWEiLCJ0Zm9vdCIsInRoIiwidGhlYWQiLCJ0aW1lIiwidHIiLCJ0cmFjayIsInR0IiwidSIsInVsIiwidmFyIiwidmlkZW8iLCJ3YnIiXSksUz1LKFsic3ZnIiwiYSIsImFsdGdseXBoIiwiYWx0Z2x5cGhkZWYiLCJhbHRnbHlw''@;'; put 'put ''aGl0ZW0iLCJhbmltYXRlY29sb3IiLCJhbmltYXRlbW90aW9uIiwiYW5pbWF0ZXRyYW5zZm9ybSIsImNpcmNsZSIsImNsaXBwYXRoIiwiZGVmcyIsImRlc2MiLCJlbGxpcHNlIiwiZmlsdGVyIiwiZm9udCIsImciLCJnbHlwaCIsImdseXBocmVmIiwiaGtlcm4iLCJpbWFnZSIsImxpbmUiLCJs''@;'; put 'put ''aW5lYXJncmFkaWVudCIsIm1hcmtlciIsIm1hc2siLCJtZXRhZGF0YSIsIm1wYXRoIiwicGF0aCIsInBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyYWRpYWxncmFkaWVudCIsInJlY3QiLCJzdG9wIiwic3R5bGUiLCJzd2l0Y2giLCJzeW1ib2wiLCJ0ZXh0IiwidGV4dHBhdGgiLCJ0''@;'; put 'put ''aXRsZSIsInRyZWYiLCJ0c3BhbiIsInZpZXciLCJ2a2VybiJdKSxGPUsoWyJmZUJsZW5kIiwiZmVDb2xvck1hdHJpeCIsImZlQ29tcG9uZW50VHJhbnNmZXIiLCJmZUNvbXBvc2l0ZSIsImZlQ29udm9sdmVNYXRyaXgiLCJmZURpZmZ1c2VMaWdodGluZyIsImZlRGlzcGxhY2VtZW50TWFwIiwi''@;'; put 'put ''ZmVEaXN0YW50TGlnaHQiLCJmZUZsb29kIiwiZmVGdW5jQSIsImZlRnVuY0IiLCJmZUZ1bmNHIiwiZmVGdW5jUiIsImZlR2F1c3NpYW5CbHVyIiwiZmVJbWFnZSIsImZlTWVyZ2UiLCJmZU1lcmdlTm9kZSIsImZlTW9ycGhvbG9neSIsImZlT2Zmc2V0IiwiZmVQb2ludExpZ2h0IiwiZmVTcGVj''@;'; put 'put ''dWxhckxpZ2h0aW5nIiwiZmVTcG90TGlnaHQiLCJmZVRpbGUiLCJmZVR1cmJ1bGVuY2UiXSkseWU9SyhbImFuaW1hdGUiLCJjb2xvci1wcm9maWxlIiwiY3Vyc29yIiwiZGlzY2FyZCIsImZlZHJvcHNoYWRvdyIsImZvbnQtZmFjZSIsImZvbnQtZmFjZS1mb3JtYXQiLCJmb250LWZhY2UtbmFt''@;'; put 'put ''ZSIsImZvbnQtZmFjZS1zcmMiLCJmb250LWZhY2UtdXJpIiwiZm9yZWlnbm9iamVjdCIsImhhdGNoIiwiaGF0Y2hwYXRoIiwibWVzaCIsIm1lc2hncmFkaWVudCIsIm1lc2hwYXRjaCIsIm1lc2hyb3ciLCJtaXNzaW5nLWdseXBoIiwic2NyaXB0Iiwic2V0Iiwic29saWRjb2xvciIsInVua25v''@;'; put 'put ''d24iLCJ1c2UiXSksQ2U9SyhbIm1hdGgiLCJtZW5jbG9zZSIsIm1lcnJvciIsIm1mZW5jZWQiLCJtZnJhYyIsIm1nbHlwaCIsIm1pIiwibWxhYmVsZWR0ciIsIm1tdWx0aXNjcmlwdHMiLCJtbiIsIm1vIiwibW92ZXIiLCJtcGFkZGVkIiwibXBoYW50b20iLCJtcm9vdCIsIm1yb3ciLCJtcyIs''@;'; put 'put ''Im1zcGFjZSIsIm1zcXJ0IiwibXN0eWxlIiwibXN1YiIsIm1zdXAiLCJtc3Vic3VwIiwibXRhYmxlIiwibXRkIiwibXRleHQiLCJtdHIiLCJtdW5kZXIiLCJtdW5kZXJvdmVyIl0pLERlPUsoWyJtYWN0aW9uIiwibWFsaWduZ3JvdXAiLCJtYWxpZ25tYXJrIiwibWxvbmdkaXYiLCJtc2NhcnJp''@;'; put 'put ''ZXMiLCJtc2NhcnJ5IiwibXNncm91cCIsIm1zdGFjayIsIm1zbGluZSIsIm1zcm93Iiwic2VtYW50aWNzIiwiYW5ub3RhdGlvbiIsImFubm90YXRpb24teG1sIiwibXByZXNjcmlwdHMiLCJub25lIl0pLFBlPUsoWyIjdGV4dCJdKSxRZT1LKFsiYWNjZXB0IiwiYWN0aW9uIiwiYWxpZ24iLCJh''@;'; put 'put ''bHQiLCJhdXRvY2FwaXRhbGl6ZSIsImF1dG9jb21wbGV0ZSIsImF1dG9waWN0dXJlaW5waWN0dXJlIiwiYXV0b3BsYXkiLCJiYWNrZ3JvdW5kIiwiYmdjb2xvciIsImJvcmRlciIsImNhcHR1cmUiLCJjZWxscGFkZGluZyIsImNlbGxzcGFjaW5nIiwiY2hlY2tlZCIsImNpdGUiLCJjbGFzcyIs''@;'; put 'put ''ImNsZWFyIiwiY29sb3IiLCJjb2xzIiwiY29sc3BhbiIsImNvbnRyb2xzIiwiY29udHJvbHNsaXN0IiwiY29vcmRzIiwiY3Jvc3NvcmlnaW4iLCJkYXRldGltZSIsImRlY29kaW5nIiwiZGVmYXVsdCIsImRpciIsImRpc2FibGVkIiwiZGlzYWJsZXBpY3R1cmVpbnBpY3R1cmUiLCJkaXNhYmxl''@;'; put 'put ''cmVtb3RlcGxheWJhY2siLCJkb3dubG9hZCIsImRyYWdnYWJsZSIsImVuY3R5cGUiLCJlbnRlcmtleWhpbnQiLCJmYWNlIiwiZm9yIiwiaGVhZGVycyIsImhlaWdodCIsImhpZGRlbiIsImhpZ2giLCJocmVmIiwiaHJlZmxhbmciLCJpZCIsImlucHV0bW9kZSIsImludGVncml0eSIsImlzbWFw''@;'; put 'put ''Iiwia2luZCIsImxhYmVsIiwibGFuZyIsImxpc3QiLCJsb2FkaW5nIiwibG9vcCIsImxvdyIsIm1heCIsIm1heGxlbmd0aCIsIm1lZGlhIiwibWV0aG9kIiwibWluIiwibWlubGVuZ3RoIiwibXVsdGlwbGUiLCJtdXRlZCIsIm5hbWUiLCJub25jZSIsIm5vc2hhZGUiLCJub3ZhbGlkYXRlIiwi''@;'; put 'put ''bm93cmFwIiwib3BlbiIsIm9wdGltdW0iLCJwYXR0ZXJuIiwicGxhY2Vob2xkZXIiLCJwbGF5c2lubGluZSIsInBvc3RlciIsInByZWxvYWQiLCJwdWJkYXRlIiwicmFkaW9ncm91cCIsInJlYWRvbmx5IiwicmVsIiwicmVxdWlyZWQiLCJyZXYiLCJyZXZlcnNlZCIsInJvbGUiLCJyb3dzIiwi''@;'; put 'put ''cm93c3BhbiIsInNwZWxsY2hlY2siLCJzY29wZSIsInNlbGVjdGVkIiwic2hhcGUiLCJzaXplIiwic2l6ZXMiLCJzcGFuIiwic3JjbGFuZyIsInN0YXJ0Iiwic3JjIiwic3Jjc2V0Iiwic3RlcCIsInN0eWxlIiwic3VtbWFyeSIsInRhYmluZGV4IiwidGl0bGUiLCJ0cmFuc2xhdGUiLCJ0eXBl''@;'; put 'put ''IiwidXNlbWFwIiwidmFsaWduIiwidmFsdWUiLCJ3aWR0aCIsInhtbG5zIiwic2xvdCJdKSwkZT1LKFsiYWNjZW50LWhlaWdodCIsImFjY3VtdWxhdGUiLCJhZGRpdGl2ZSIsImFsaWdubWVudC1iYXNlbGluZSIsImFzY2VudCIsImF0dHJpYnV0ZW5hbWUiLCJhdHRyaWJ1dGV0eXBlIiwiYXpp''@;'; put 'put ''bXV0aCIsImJhc2VmcmVxdWVuY3kiLCJiYXNlbGluZS1zaGlmdCIsImJlZ2luIiwiYmlhcyIsImJ5IiwiY2xhc3MiLCJjbGlwIiwiY2xpcHBhdGh1bml0cyIsImNsaXAtcGF0aCIsImNsaXAtcnVsZSIsImNvbG9yIiwiY29sb3ItaW50ZXJwb2xhdGlvbiIsImNvbG9yLWludGVycG9sYXRpb24t''@;'; put 'put ''ZmlsdGVycyIsImNvbG9yLXByb2ZpbGUiLCJjb2xvci1yZW5kZXJpbmciLCJjeCIsImN5IiwiZCIsImR4IiwiZHkiLCJkaWZmdXNlY29uc3RhbnQiLCJkaXJlY3Rpb24iLCJkaXNwbGF5IiwiZGl2aXNvciIsImR1ciIsImVkZ2Vtb2RlIiwiZWxldmF0aW9uIiwiZW5kIiwiZmlsbCIsImZpbGwt''@;'; put 'put ''b3BhY2l0eSIsImZpbGwtcnVsZSIsImZpbHRlciIsImZpbHRlcnVuaXRzIiwiZmxvb2QtY29sb3IiLCJmbG9vZC1vcGFjaXR5IiwiZm9udC1mYW1pbHkiLCJmb250LXNpemUiLCJmb250LXNpemUtYWRqdXN0IiwiZm9udC1zdHJldGNoIiwiZm9udC1zdHlsZSIsImZvbnQtdmFyaWFudCIsImZv''@;'; put 'put ''bnQtd2VpZ2h0IiwiZngiLCJmeSIsImcxIiwiZzIiLCJnbHlwaC1uYW1lIiwiZ2x5cGhyZWYiLCJncmFkaWVudHVuaXRzIiwiZ3JhZGllbnR0cmFuc2Zvcm0iLCJoZWlnaHQiLCJocmVmIiwiaWQiLCJpbWFnZS1yZW5kZXJpbmciLCJpbiIsImluMiIsImsiLCJrMSIsImsyIiwiazMiLCJrNCIs''@;'; put 'put ''Imtlcm5pbmciLCJrZXlwb2ludHMiLCJrZXlzcGxpbmVzIiwia2V5dGltZXMiLCJsYW5nIiwibGVuZ3RoYWRqdXN0IiwibGV0dGVyLXNwYWNpbmciLCJrZXJuZWxtYXRyaXgiLCJrZXJuZWx1bml0bGVuZ3RoIiwibGlnaHRpbmctY29sb3IiLCJsb2NhbCIsIm1hcmtlci1lbmQiLCJtYXJrZXIt''@;'; put 'put ''bWlkIiwibWFya2VyLXN0YXJ0IiwibWFya2VyaGVpZ2h0IiwibWFya2VydW5pdHMiLCJtYXJrZXJ3aWR0aCIsIm1hc2tjb250ZW50dW5pdHMiLCJtYXNrdW5pdHMiLCJtYXgiLCJtYXNrIiwibWVkaWEiLCJtZXRob2QiLCJtb2RlIiwibWluIiwibmFtZSIsIm51bW9jdGF2ZXMiLCJvZmZzZXQi''@;'; put 'put ''LCJvcGVyYXRvciIsIm9wYWNpdHkiLCJvcmRlciIsIm9yaWVudCIsIm9yaWVudGF0aW9uIiwib3JpZ2luIiwib3ZlcmZsb3ciLCJwYWludC1vcmRlciIsInBhdGgiLCJwYXRobGVuZ3RoIiwicGF0dGVybmNvbnRlbnR1bml0cyIsInBhdHRlcm50cmFuc2Zvcm0iLCJwYXR0ZXJudW5pdHMiLCJw''@;'; put 'put ''b2ludHMiLCJwcmVzZXJ2ZWFscGhhIiwicHJlc2VydmVhc3BlY3RyYXRpbyIsInByaW1pdGl2ZXVuaXRzIiwiciIsInJ4IiwicnkiLCJyYWRpdXMiLCJyZWZ4IiwicmVmeSIsInJlcGVhdGNvdW50IiwicmVwZWF0ZHVyIiwicmVzdGFydCIsInJlc3VsdCIsInJvdGF0ZSIsInNjYWxlIiwic2Vl''@;'; put 'put ''ZCIsInNoYXBlLXJlbmRlcmluZyIsInNwZWN1bGFyY29uc3RhbnQiLCJzcGVjdWxhcmV4cG9uZW50Iiwic3ByZWFkbWV0aG9kIiwic3RhcnRvZmZzZXQiLCJzdGRkZXZpYXRpb24iLCJzdGl0Y2h0aWxlcyIsInN0b3AtY29sb3IiLCJzdG9wLW9wYWNpdHkiLCJzdHJva2UtZGFzaGFycmF5Iiwi''@;'; put 'put ''c3Ryb2tlLWRhc2hvZmZzZXQiLCJzdHJva2UtbGluZWNhcCIsInN0cm9rZS1saW5lam9pbiIsInN0cm9rZS1taXRlcmxpbWl0Iiwic3Ryb2tlLW9wYWNpdHkiLCJzdHJva2UiLCJzdHJva2Utd2lkdGgiLCJzdHlsZSIsInN1cmZhY2VzY2FsZSIsInN5c3RlbWxhbmd1YWdlIiwidGFiaW5kZXgi''@;'; put 'put ''LCJ0YXJnZXR4IiwidGFyZ2V0eSIsInRyYW5zZm9ybSIsInRyYW5zZm9ybS1vcmlnaW4iLCJ0ZXh0LWFuY2hvciIsInRleHQtZGVjb3JhdGlvbiIsInRleHQtcmVuZGVyaW5nIiwidGV4dGxlbmd0aCIsInR5cGUiLCJ1MSIsInUyIiwidW5pY29kZSIsInZhbHVlcyIsInZpZXdib3giLCJ2aXNp''@;'; put 'put ''YmlsaXR5IiwidmVyc2lvbiIsInZlcnQtYWR2LXkiLCJ2ZXJ0LW9yaWdpbi14IiwidmVydC1vcmlnaW4teSIsIndpZHRoIiwid29yZC1zcGFjaW5nIiwid3JhcCIsIndyaXRpbmctbW9kZSIsInhjaGFubmVsc2VsZWN0b3IiLCJ5Y2hhbm5lbHNlbGVjdG9yIiwieCIsIngxIiwieDIiLCJ4bWxu''@;'; put 'put ''cyIsInkiLCJ5MSIsInkyIiwieiIsInpvb21hbmRwYW4iXSksZ3Q9SyhbImFjY2VudCIsImFjY2VudHVuZGVyIiwiYWxpZ24iLCJiZXZlbGxlZCIsImNsb3NlIiwiY29sdW1uc2FsaWduIiwiY29sdW1ubGluZXMiLCJjb2x1bW5zcGFuIiwiZGVub21hbGlnbiIsImRlcHRoIiwiZGlyIiwiZGlz''@;'; put 'put ''cGxheSIsImRpc3BsYXlzdHlsZSIsImVuY29kaW5nIiwiZmVuY2UiLCJmcmFtZSIsImhlaWdodCIsImhyZWYiLCJpZCIsImxhcmdlb3AiLCJsZW5ndGgiLCJsaW5ldGhpY2tuZXNzIiwibHNwYWNlIiwibHF1b3RlIiwibWF0aGJhY2tncm91bmQiLCJtYXRoY29sb3IiLCJtYXRoc2l6ZSIsIm1h''@;'; put 'put ''dGh2YXJpYW50IiwibWF4c2l6ZSIsIm1pbnNpemUiLCJtb3ZhYmxlbGltaXRzIiwibm90YXRpb24iLCJudW1hbGlnbiIsIm9wZW4iLCJyb3dhbGlnbiIsInJvd2xpbmVzIiwicm93c3BhY2luZyIsInJvd3NwYW4iLCJyc3BhY2UiLCJycXVvdGUiLCJzY3JpcHRsZXZlbCIsInNjcmlwdG1pbnNp''@;'; put 'put ''emUiLCJzY3JpcHRzaXplbXVsdGlwbGllciIsInNlbGVjdGlvbiIsInNlcGFyYXRvciIsInNlcGFyYXRvcnMiLCJzdHJldGNoeSIsInN1YnNjcmlwdHNoaWZ0Iiwic3Vwc2NyaXB0c2hpZnQiLCJzeW1tZXRyaWMiLCJ2b2Zmc2V0Iiwid2lkdGgiLCJ4bWxucyJdKSx3dD1LKFsieGxpbms6aHJl''@;'; put 'put ''ZiIsInhtbDppZCIsInhsaW5rOnRpdGxlIiwieG1sOnNwYWNlIiwieG1sbnM6eGxpbmsiXSksbXQ9SigvXHtce1tcd1xXXSp8W1x3XFddKlx9XH0vZ20pLHZ0PUooLzwlW1x3XFddKnxbXHdcV10qJT4vZ20pLEF0PUooL15kYXRhLVtcLVx3Llx1MDBCNy1cdUZGRkZdLyksaHQ9SigvXmFyaWEt''@;'; put 'put ''W1wtXHddKyQvKSxCdD1KKC9eKD86KD86KD86ZnxodCl0cHM/fG1haWx0b3x0ZWx8Y2FsbHRvfGNpZHx4bXBwKTp8W15hLXpdfFthLXorLlwtXSsoPzpbXmEteisuXC06XXwkKSkvaSksb249SigvXig/Olx3K3NjcmlwdHxkYXRhKTovaSksX3Q9SigvW1x1MDAwMC1cdTAwMjBcdTAwQTBcdTE2''@;'; put 'put ''ODBcdTE4MEVcdTIwMDAtXHUyMDI5XHUyMDVGXHUzMDAwXS9nKSx0dD1KKC9eaHRtbCQvaSksZXQ9ZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdz9udWxsOndpbmRvd30sbHQ9ZnVuY3Rpb24oSHQsR2Upe2lmKCJvYmplY3QiIT09SmUoSHQpfHwiZnVuY3Rpb24i''@;'; put 'put ''IT10eXBlb2YgSHQuY3JlYXRlUG9saWN5KXJldHVybiBudWxsO3ZhciBVZT1udWxsLHl0PSJkYXRhLXR0LXBvbGljeS1zdWZmaXgiO0dlLmN1cnJlbnRTY3JpcHQmJkdlLmN1cnJlbnRTY3JpcHQuaGFzQXR0cmlidXRlKHl0KSYmKFVlPUdlLmN1cnJlbnRTY3JpcHQuZ2V0QXR0cmlidXRlKHl0''@;'; put 'put ''KSk7dmFyIGp0PSJkb21wdXJpZnkiKyhVZT8iIyIrVWU6IiIpO3RyeXtyZXR1cm4gSHQuY3JlYXRlUG9saWN5KGp0LHtjcmVhdGVIVE1MOmZ1bmN0aW9uKGduKXtyZXR1cm4gZ259LGNyZWF0ZVNjcmlwdFVSTDpmdW5jdGlvbihnbil7cmV0dXJuIGdufX0pfWNhdGNoKEp0KXtyZXR1cm4gY29u''@;'; put 'put ''c29sZS53YXJuKCJUcnVzdGVkVHlwZXMgcG9saWN5ICIranQrIiBjb3VsZCBub3QgYmUgY3JlYXRlZC4iKSxudWxsfX07cmV0dXJuIGZ1bmN0aW9uIEx0KCl7dmFyIGZ0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpldCgpLEh0PWZ1bmN0''@;'; put 'put ''aW9uKGZpKXtyZXR1cm4gTHQoZmkpfTtpZihIdC52ZXJzaW9uPSIyLjMuMTAiLEh0LnJlbW92ZWQ9W10sIWZ0fHwhZnQuZG9jdW1lbnR8fDkhPT1mdC5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gSHQuaXNTdXBwb3J0ZWQ9ITEsSHQ7dmFyIEdlPWZ0LmRvY3VtZW50LFVlPWZ0LmRvY3VtZW50''@;'; put 'put ''LHl0PWZ0LkRvY3VtZW50RnJhZ21lbnQsanQ9ZnQuSFRNTFRlbXBsYXRlRWxlbWVudCxKdD1mdC5Ob2RlLGduPWZ0LkVsZW1lbnQsZG49ZnQuTm9kZUZpbHRlcix5bj1mdC5OYW1lZE5vZGVNYXAsbG49dm9pZCAwPT09eW4/ZnQuTmFtZWROb2RlTWFwfHxmdC5Nb3pOYW1lZEF0dHJNYXA6eW4s''@;'; put 'put ''Tm49ZnQuSFRNTEZvcm1FbGVtZW50LGJuPWZ0LkRPTVBhcnNlcixlcj1mdC50cnVzdGVkVHlwZXMsc3I9Z24ucHJvdG90eXBlLFhuPVYoc3IsImNsb25lTm9kZSIpLEZyPVYoc3IsIm5leHRTaWJsaW5nIikseHI9VihzciwiY2hpbGROb2RlcyIpLHF0PVYoc3IsInBhcmVudE5vZGUiKTtpZigi''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2YganQpe3ZhciBwcj1VZS5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO3ByLmNvbnRlbnQmJnByLmNvbnRlbnQub3duZXJEb2N1bWVudCYmKFVlPXByLmNvbnRlbnQub3duZXJEb2N1bWVudCl9dmFyIG5yPWx0KGVyLEdlKSxBbj1ucj9uci5jcmVhdGVIVE1MKCIi''@;'; put 'put ''KToiIixXdD1VZS5pbXBsZW1lbnRhdGlvbixwbj1VZS5jcmVhdGVOb2RlSXRlcmF0b3IsS249VWUuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxOdD1VZS5nZXRFbGVtZW50c0J5VGFnTmFtZSxzbj1HZS5pbXBvcnROb2RlLFVuPXt9O3RyeXtVbj1QKFVlKS5kb2N1bWVudE1vZGU/VWUuZG9jdW1l''@;'; put 'put ''bnRNb2RlOnt9fWNhdGNoKFowKXt9dmFyIHduPXt9O0h0LmlzU3VwcG9ydGVkPSJmdW5jdGlvbiI9PXR5cGVvZiBxdCYmV3QmJnZvaWQgMCE9PVd0LmNyZWF0ZUhUTUxEb2N1bWVudCYmOSE9PVVuO3ZhciB2aSxybCx0bj1tdCx6bj12dCxUcj1BdCxCbj1odCxrcj1vbixtbj1fdCx1bj1CdCxj''@;'; put 'put ''bj1udWxsLF9uPXgoe30sW10uY29uY2F0KEUoVCksRShTKSxFKEYpLEUoQ2UpLEUoUGUpKSksR3Q9bnVsbCxrbj14KHt9LFtdLmNvbmNhdChFKFFlKSxFKCRlKSxFKGd0KSxFKHd0KSkpLFZuPU9iamVjdC5zZWFsKE9iamVjdC5jcmVhdGUobnVsbCx7dGFnTmFtZUNoZWNrOnt3cml0YWJsZToh''@;'; put 'put ''MCxjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCx2YWx1ZTpudWxsfSxhdHRyaWJ1dGVOYW1lQ2hlY2s6e3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOm51bGx9LGFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50czp7d3JpdGFibGU6ITAsY29u''@;'; put 'put ''ZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsdmFsdWU6ITF9fSkpLGVuPW51bGwsSW49bnVsbCxKbj0hMCxvcj0hMCxncj0hMSxLcj0hMSxWcj0hMSxpaT0hMSxScj0hMSxsaT0hMSxNaT0hMSxvMD0hMSxuMD0hMCxkMD0hMCxtMD0hMSxHMD17fSxEaT1udWxsLFcwPXgoe30sWyJhbm5vdGF0''@;'; put 'put ''aW9uLXhtbCIsImF1ZGlvIiwiY29sZ3JvdXAiLCJkZXNjIiwiZm9yZWlnbm9iamVjdCIsImhlYWQiLCJpZnJhbWUiLCJtYXRoIiwibWkiLCJtbiIsIm1vIiwibXMiLCJtdGV4dCIsIm5vZW1iZWQiLCJub2ZyYW1lcyIsIm5vc2NyaXB0IiwicGxhaW50ZXh0Iiwic2NyaXB0Iiwic3R5bGUiLCJz''@;'; put 'put ''dmciLCJ0ZW1wbGF0ZSIsInRoZWFkIiwidGl0bGUiLCJ2aWRlbyIsInhtcCJdKSxFbz1udWxsLHFvPXgoe30sWyJhdWRpbyIsInZpZGVvIiwiaW1nIiwic291cmNlIiwiaW1hZ2UiLCJ0cmFjayJdKSxjYT1udWxsLGxsPXgoe30sWyJhbHQiLCJjbGFzcyIsImZvciIsImlkIiwibGFiZWwiLCJu''@;'; put 'put ''YW1lIiwicGF0dGVybiIsInBsYWNlaG9sZGVyIiwicm9sZSIsInN1bW1hcnkiLCJ0aXRsZSIsInZhbHVlIiwic3R5bGUiLCJ4bWxucyJdKSxRaT0iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCIsTWE9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixubD0iaHR0cDovL3d3''@;'; put 'put ''dy53My5vcmcvMTk5OS94aHRtbCIsZ2w9bmwsQWk9ITEsYjA9WyJhcHBsaWNhdGlvbi94aHRtbCt4bWwiLCJ0ZXh0L2h0bWwiXSxzYT0idGV4dC9odG1sIixfaT1udWxsLG91PVVlLmNyZWF0ZUVsZW1lbnQoImZvcm0iKSxIYz1mdW5jdGlvbihmaSl7cmV0dXJuIGZpIGluc3RhbmNlb2YgUmVn''@;'; put 'put ''RXhwfHxmaSBpbnN0YW5jZW9mIEZ1bmN0aW9ufSxVMD1mdW5jdGlvbihmaSl7X2kmJl9pPT09Zml8fCgoIWZpfHwib2JqZWN0IiE9PUplKGZpKSkmJihmaT17fSksZmk9UChmaSksdmk9dmk9LTE9PT1iMC5pbmRleE9mKGZpLlBBUlNFUl9NRURJQV9UWVBFKT9zYTpmaS5QQVJTRVJfTUVESUFf''@;'; put 'put ''VFlQRSxybD0iYXBwbGljYXRpb24veGh0bWwreG1sIj09PXZpP2Z1bmN0aW9uKFIwKXtyZXR1cm4gUjB9OlNlLGNuPSJBTExPV0VEX1RBR1MiaW4gZmk/eCh7fSxmaS5BTExPV0VEX1RBR1MscmwpOl9uLEd0PSJBTExPV0VEX0FUVFIiaW4gZmk/eCh7fSxmaS5BTExPV0VEX0FUVFIscmwpOmtu''@;'; put 'put ''LGNhPSJBRERfVVJJX1NBRkVfQVRUUiJpbiBmaT94KFAobGwpLGZpLkFERF9VUklfU0FGRV9BVFRSLHJsKTpsbCxFbz0iQUREX0RBVEFfVVJJX1RBR1MiaW4gZmk/eChQKHFvKSxmaS5BRERfREFUQV9VUklfVEFHUyxybCk6cW8sRGk9IkZPUkJJRF9DT05URU5UUyJpbiBmaT94KHt9LGZpLkZP''@;'; put 'put ''UkJJRF9DT05URU5UUyxybCk6VzAsZW49IkZPUkJJRF9UQUdTImluIGZpP3goe30sZmkuRk9SQklEX1RBR1MscmwpOnt9LEluPSJGT1JCSURfQVRUUiJpbiBmaT94KHt9LGZpLkZPUkJJRF9BVFRSLHJsKTp7fSxHMD0iVVNFX1BST0ZJTEVTImluIGZpJiZmaS5VU0VfUFJPRklMRVMsSm49ITEh''@;'; put 'put ''PT1maS5BTExPV19BUklBX0FUVFIsb3I9ITEhPT1maS5BTExPV19EQVRBX0FUVFIsZ3I9ZmkuQUxMT1dfVU5LTk9XTl9QUk9UT0NPTFN8fCExLEtyPWZpLlNBRkVfRk9SX1RFTVBMQVRFU3x8ITEsVnI9ZmkuV0hPTEVfRE9DVU1FTlR8fCExLGxpPWZpLlJFVFVSTl9ET018fCExLE1pPWZpLlJF''@;'; put 'put ''VFVSTl9ET01fRlJBR01FTlR8fCExLG8wPWZpLlJFVFVSTl9UUlVTVEVEX1RZUEV8fCExLFJyPWZpLkZPUkNFX0JPRFl8fCExLG4wPSExIT09ZmkuU0FOSVRJWkVfRE9NLGQwPSExIT09ZmkuS0VFUF9DT05URU5ULG0wPWZpLklOX1BMQUNFfHwhMSx1bj1maS5BTExPV0VEX1VSSV9SRUdFWFB8''@;'; put 'put ''fHVuLGdsPWZpLk5BTUVTUEFDRXx8bmwsZmkuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcmJkhjKGZpLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLnRhZ05hbWVDaGVjaykmJihWbi50YWdOYW1lQ2hlY2s9ZmkuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNrKSxmaS5DVVNUT01f''@;'; put 'put ''RUxFTUVOVF9IQU5ETElORyYmSGMoZmkuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcuYXR0cmlidXRlTmFtZUNoZWNrKSYmKFZuLmF0dHJpYnV0ZU5hbWVDaGVjaz1maS5DVVNUT01fRUxFTUVOVF9IQU5ETElORy5hdHRyaWJ1dGVOYW1lQ2hlY2spLGZpLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5H''@;'; put 'put ''JiYiYm9vbGVhbiI9PXR5cGVvZiBmaS5DVVNUT01fRUxFTUVOVF9IQU5ETElORy5hbGxvd0N1c3RvbWl6ZWRCdWlsdEluRWxlbWVudHMmJihWbi5hbGxvd0N1c3RvbWl6ZWRCdWlsdEluRWxlbWVudHM9ZmkuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcuYWxsb3dDdXN0b21pemVkQnVpbHRJbkVs''@;'; put 'put ''ZW1lbnRzKSxLciYmKG9yPSExKSxNaSYmKGxpPSEwKSxHMCYmKGNuPXgoe30sRShQZSkpLEd0PVtdLCEwPT09RzAuaHRtbCYmKHgoY24sVCkseChHdCxRZSkpLCEwPT09RzAuc3ZnJiYoeChjbixTKSx4KEd0LCRlKSx4KEd0LHd0KSksITA9PT1HMC5zdmdGaWx0ZXJzJiYoeChjbixGKSx4KEd0''@;'; put 'put ''LCRlKSx4KEd0LHd0KSksITA9PT1HMC5tYXRoTWwmJih4KGNuLENlKSx4KEd0LGd0KSx4KEd0LHd0KSkpLGZpLkFERF9UQUdTJiYoY249PT1fbiYmKGNuPVAoY24pKSx4KGNuLGZpLkFERF9UQUdTLHJsKSksZmkuQUREX0FUVFImJihHdD09PWtuJiYoR3Q9UChHdCkpLHgoR3QsZmkuQUREX0FU''@;'; put 'put ''VFIscmwpKSxmaS5BRERfVVJJX1NBRkVfQVRUUiYmeChjYSxmaS5BRERfVVJJX1NBRkVfQVRUUixybCksZmkuRk9SQklEX0NPTlRFTlRTJiYoRGk9PT1XMCYmKERpPVAoRGkpKSx4KERpLGZpLkZPUkJJRF9DT05URU5UUyxybCkpLGQwJiYoY25bIiN0ZXh0Il09ITApLFZyJiZ4KGNuLFsiaHRt''@;'; put 'put ''bCIsImhlYWQiLCJib2R5Il0pLGNuLnRhYmxlJiYoeChjbixbInRib2R5Il0pLGRlbGV0ZSBlbi50Ym9keSksSyYmSyhmaSksX2k9ZmkpfSxCcz14KHt9LFsibWkiLCJtbyIsIm1uIiwibXMiLCJtdGV4dCJdKSxYMD14KHt9LFsiZm9yZWlnbm9iamVjdCIsImRlc2MiLCJ0aXRsZSIsImFubm90''@;'; put 'put ''YXRpb24teG1sIl0pLHVhPXgoe30sWyJ0aXRsZSIsInN0eWxlIiwiZm9udCIsImEiLCJzY3JpcHQiXSksajA9eCh7fSxTKTt4KGowLEYpLHgoajAseWUpO3ZhciBCbD14KHt9LENlKTt4KEJsLERlKTt2YXIgdm49ZnVuY3Rpb24oZmkpe3ZhciBSMD1xdChmaSk7KCFSMHx8IVIwLnRhZ05hbWUp''@;'; put 'put ''JiYoUjA9e25hbWVzcGFjZVVSSTpubCx0YWdOYW1lOiJ0ZW1wbGF0ZSJ9KTt2YXIgbW89U2UoZmkudGFnTmFtZSkscnM9U2UoUjAudGFnTmFtZSk7cmV0dXJuIGZpLm5hbWVzcGFjZVVSST09PU1hP1IwLm5hbWVzcGFjZVVSST09PW5sPyJzdmciPT09bW86UjAubmFtZXNwYWNlVVJJPT09UWk/''@;'; put 'put ''InN2ZyI9PT1tbyYmKCJhbm5vdGF0aW9uLXhtbCI9PT1yc3x8QnNbcnNdKTpCb29sZWFuKGowW21vXSk6ZmkubmFtZXNwYWNlVVJJPT09UWk/UjAubmFtZXNwYWNlVVJJPT09bmw/Im1hdGgiPT09bW86UjAubmFtZXNwYWNlVVJJPT09TWE/Im1hdGgiPT09bW8mJlgwW3JzXTpCb29sZWFuKEJs''@;'; put 'put ''W21vXSk6ZmkubmFtZXNwYWNlVVJJPT09bmwmJiEoUjAubmFtZXNwYWNlVVJJPT09TWEmJiFYMFtyc118fFIwLm5hbWVzcGFjZVVSST09PVFpJiYhQnNbcnNdKSYmIUJsW21vXSYmKHVhW21vXXx8IWowW21vXSl9LF8wPWZ1bmN0aW9uKGZpKXtrZShIdC5yZW1vdmVkLHtlbGVtZW50OmZpfSk7''@;'; put 'put ''dHJ5e2ZpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZmkpfWNhdGNoKFIwKXt0cnl7Zmkub3V0ZXJIVE1MPUFufWNhdGNoKG1vKXtmaS5yZW1vdmUoKX19fSxnYz1mdW5jdGlvbihmaSxSMCl7dHJ5e2tlKEh0LnJlbW92ZWQse2F0dHJpYnV0ZTpSMC5nZXRBdHRyaWJ1dGVOb2RlKGZpKSxmcm9t''@;'; put 'put ''OlIwfSl9Y2F0Y2gobW8pe2tlKEh0LnJlbW92ZWQse2F0dHJpYnV0ZTpudWxsLGZyb206UjB9KX1pZihSMC5yZW1vdmVBdHRyaWJ1dGUoZmkpLCJpcyI9PT1maSYmIUd0W2ZpXSlpZihsaXx8TWkpdHJ5e18wKFIwKX1jYXRjaChtbyl7fWVsc2UgdHJ5e1IwLnNldEF0dHJpYnV0ZShmaSwiIil9''@;'; put 'put ''Y2F0Y2gobW8pe319LHBkPWZ1bmN0aW9uKGZpKXt2YXIgUjAsbW87aWYoUnIpZmk9IjxyZW1vdmU+PC9yZW1vdmU+IitmaTtlbHNle3ZhciBycz1JZShmaSwvXltcclxuXHQgXSsvKTttbz1ycyYmcnNbMF19ImFwcGxpY2F0aW9uL3hodG1sK3htbCI9PT12aSYmKGZpPSc8aHRtbCB4bWxucz0i''@;'; put 'put ''aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PGhlYWQ+PC9oZWFkPjxib2R5PicrZmkrIjwvYm9keT48L2h0bWw+Iik7dmFyIGRzPW5yP25yLmNyZWF0ZUhUTUwoZmkpOmZpO2lmKGdsPT09bmwpdHJ5e1IwPShuZXcgYm4pLnBhcnNlRnJvbVN0cmluZyhkcyx2aSl9Y2F0Y2goVDIpe31p''@;'; put 'put ''ZighUjB8fCFSMC5kb2N1bWVudEVsZW1lbnQpe1IwPVd0LmNyZWF0ZURvY3VtZW50KGdsLCJ0ZW1wbGF0ZSIsbnVsbCk7dHJ5e1IwLmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUw9QWk/IiI6ZHN9Y2F0Y2goVDIpe319dmFyIG4yPVIwLmJvZHl8fFIwLmRvY3VtZW50RWxlbWVudDtyZXR1cm4g''@;'; put 'put ''ZmkmJm1vJiZuMi5pbnNlcnRCZWZvcmUoVWUuY3JlYXRlVGV4dE5vZGUobW8pLG4yLmNoaWxkTm9kZXNbMF18fG51bGwpLGdsPT09bmw/TnQuY2FsbChSMCxWcj8iaHRtbCI6ImJvZHkiKVswXTpWcj9SMC5kb2N1bWVudEVsZW1lbnQ6bjJ9LEIxPWZ1bmN0aW9uKGZpKXtyZXR1cm4gcG4uY2Fs''@;'; put 'put ''bChmaS5vd25lckRvY3VtZW50fHxmaSxmaSxkbi5TSE9XX0VMRU1FTlR8ZG4uU0hPV19DT01NRU5UfGRuLlNIT1dfVEVYVCxudWxsLCExKX0sYXU9ZnVuY3Rpb24oZmkpe3JldHVybiBmaSBpbnN0YW5jZW9mIE5uJiYoInN0cmluZyIhPXR5cGVvZiBmaS5ub2RlTmFtZXx8InN0cmluZyIhPXR5''@;'; put 'put ''cGVvZiBmaS50ZXh0Q29udGVudHx8ImZ1bmN0aW9uIiE9dHlwZW9mIGZpLnJlbW92ZUNoaWxkfHwhKGZpLmF0dHJpYnV0ZXMgaW5zdGFuY2VvZiBsbil8fCJmdW5jdGlvbiIhPXR5cGVvZiBmaS5yZW1vdmVBdHRyaWJ1dGV8fCJmdW5jdGlvbiIhPXR5cGVvZiBmaS5zZXRBdHRyaWJ1dGV8fCJz''@;'; put 'put ''dHJpbmciIT10eXBlb2YgZmkubmFtZXNwYWNlVVJJfHwiZnVuY3Rpb24iIT10eXBlb2YgZmkuaW5zZXJ0QmVmb3JlKX0sUDE9ZnVuY3Rpb24oZmkpe3JldHVybiJvYmplY3QiPT09SmUoSnQpP2ZpIGluc3RhbmNlb2YgSnQ6ZmkmJiJvYmplY3QiPT09SmUoZmkpJiYibnVtYmVyIj09dHlwZW9m''@;'; put 'put ''IGZpLm5vZGVUeXBlJiYic3RyaW5nIj09dHlwZW9mIGZpLm5vZGVOYW1lfSxtYz1mdW5jdGlvbihmaSxSMCxtbyl7IXduW2ZpXXx8dmUod25bZmldLGZ1bmN0aW9uKHJzKXtycy5jYWxsKEh0LFIwLG1vLF9pKX0pfSx4Mj1mdW5jdGlvbihmaSl7dmFyIFIwO2lmKG1jKCJiZWZvcmVTYW5pdGl6''@;'; put 'put ''ZUVsZW1lbnRzIixmaSxudWxsKSxhdShmaSl8fE8oL1tcdTAwODAtXHVGRkZGXS8sZmkubm9kZU5hbWUpKXJldHVybiBfMChmaSksITA7dmFyIG1vPXJsKGZpLm5vZGVOYW1lKTtpZihtYygidXBvblNhbml0aXplRWxlbWVudCIsZmkse3RhZ05hbWU6bW8sYWxsb3dlZFRhZ3M6Y259KSxmaS5o''@;'; put 'put ''YXNDaGlsZE5vZGVzKCkmJiFQMShmaS5maXJzdEVsZW1lbnRDaGlsZCkmJighUDEoZmkuY29udGVudCl8fCFQMShmaS5jb250ZW50LmZpcnN0RWxlbWVudENoaWxkKSkmJk8oLzxbL1x3XS9nLGZpLmlubmVySFRNTCkmJk8oLzxbL1x3XS9nLGZpLnRleHRDb250ZW50KXx8InNlbGVjdCI9PT1t''@;'; put 'put ''byYmTygvPHRlbXBsYXRlL2ksZmkuaW5uZXJIVE1MKSlyZXR1cm4gXzAoZmkpLCEwO2lmKCFjblttb118fGVuW21vXSl7aWYoIWVuW21vXSYmZDMobW8pJiYoVm4udGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZPKFZuLnRhZ05hbWVDaGVjayxtbyl8fFZuLnRhZ05hbWVDaGVjayBp''@;'; put 'put ''bnN0YW5jZW9mIEZ1bmN0aW9uJiZWbi50YWdOYW1lQ2hlY2sobW8pKSlyZXR1cm4hMTtpZihkMCYmIURpW21vXSl7dmFyIHJzPXF0KGZpKXx8ZmkucGFyZW50Tm9kZSxkcz14cihmaSl8fGZpLmNoaWxkTm9kZXM7aWYoZHMmJnJzKWZvcih2YXIgVDI9ZHMubGVuZ3RoLTE7VDI+PTA7LS1UMily''@;'; put 'put ''cy5pbnNlcnRCZWZvcmUoWG4oZHNbVDJdLCEwKSxGcihmaSkpfXJldHVybiBfMChmaSksITB9cmV0dXJuIGZpIGluc3RhbmNlb2YgZ24mJiF2bihmaSl8fCgibm9zY3JpcHQiPT09bW98fCJub2VtYmVkIj09PW1vKSYmTygvPFwvbm8oc2NyaXB0fGVtYmVkKS9pLGZpLmlubmVySFRNTCk/KF8w''@;'; put 'put ''KGZpKSwhMCk6KEtyJiYzPT09Zmkubm9kZVR5cGUmJihSMD1UZShSMD1maS50ZXh0Q29udGVudCx0biwiICIpLFIwPVRlKFIwLHpuLCIgIiksZmkudGV4dENvbnRlbnQhPT1SMCYmKGtlKEh0LnJlbW92ZWQse2VsZW1lbnQ6ZmkuY2xvbmVOb2RlKCl9KSxmaS50ZXh0Q29udGVudD1SMCkpLG1j''@;'; put 'put ''KCJhZnRlclNhbml0aXplRWxlbWVudHMiLGZpLG51bGwpLCExKX0sUGw9ZnVuY3Rpb24oZmksUjAsbW8pe2lmKG4wJiYoImlkIj09PVIwfHwibmFtZSI9PT1SMCkmJihtbyBpbiBVZXx8bW8gaW4gb3UpKXJldHVybiExO2lmKCghb3J8fEluW1IwXXx8IU8oVHIsUjApKSYmKCFKbnx8IU8oQm4s''@;'; put 'put ''UjApKSlpZighR3RbUjBdfHxJbltSMF0pe2lmKCEoZDMoZmkpJiYoVm4udGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZPKFZuLnRhZ05hbWVDaGVjayxmaSl8fFZuLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZWbi50YWdOYW1lQ2hlY2soZmkpKSYmKFZuLmF0dHJp''@;'; put 'put ''YnV0ZU5hbWVDaGVjayBpbnN0YW5jZW9mIFJlZ0V4cCYmTyhWbi5hdHRyaWJ1dGVOYW1lQ2hlY2ssUjApfHxWbi5hdHRyaWJ1dGVOYW1lQ2hlY2sgaW5zdGFuY2VvZiBGdW5jdGlvbiYmVm4uYXR0cmlidXRlTmFtZUNoZWNrKFIwKSl8fCJpcyI9PT1SMCYmVm4uYWxsb3dDdXN0b21pemVkQnVp''@;'; put 'put ''bHRJbkVsZW1lbnRzJiYoVm4udGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZPKFZuLnRhZ05hbWVDaGVjayxtbyl8fFZuLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZWbi50YWdOYW1lQ2hlY2sobW8pKSkpcmV0dXJuITF9ZWxzZSBpZighY2FbUjBdJiYhTyh1bixU''@;'; put 'put ''ZShtbyxtbiwiIikpJiYoInNyYyIhPT1SMCYmInhsaW5rOmhyZWYiIT09UjAmJiJocmVmIiE9PVIwfHwic2NyaXB0Ij09PWZpfHwwIT09TWUobW8sImRhdGE6Iil8fCFFb1tmaV0pJiYoIWdyfHxPKGtyLFRlKG1vLG1uLCIiKSkpJiZtbylyZXR1cm4hMTtyZXR1cm4hMH0sZDM9ZnVuY3Rpb24o''@;'; put 'put ''Zmkpe3JldHVybiBmaS5pbmRleE9mKCItIik+MH0sUTI9ZnVuY3Rpb24oZmkpe3ZhciBSMCxtbyxycyxkczttYygiYmVmb3JlU2FuaXRpemVBdHRyaWJ1dGVzIixmaSxudWxsKTt2YXIgbjI9ZmkuYXR0cmlidXRlcztpZihuMil7dmFyIFQyPXthdHRyTmFtZToiIixhdHRyVmFsdWU6IiIsa2Vl''@;'; put 'put ''cEF0dHI6ITAsYWxsb3dlZEF0dHJpYnV0ZXM6R3R9O2Zvcihkcz1uMi5sZW5ndGg7ZHMtLTspe3ZhciBQcz0oUjA9bjJbZHNdKS5uYW1lLE5mPVIwLm5hbWVzcGFjZVVSSTtpZihtbz0idmFsdWUiPT09UHM/UjAudmFsdWU6aGUoUjAudmFsdWUpLHJzPXJsKFBzKSxUMi5hdHRyTmFtZT1ycyxU''@;'; put 'put ''Mi5hdHRyVmFsdWU9bW8sVDIua2VlcEF0dHI9ITAsVDIuZm9yY2VLZWVwQXR0cj12b2lkIDAsbWMoInVwb25TYW5pdGl6ZUF0dHJpYnV0ZSIsZmksVDIpLG1vPVQyLmF0dHJWYWx1ZSwhVDIuZm9yY2VLZWVwQXR0ciYmKGdjKFBzLGZpKSxUMi5rZWVwQXR0cikpe2lmKE8oL1wvPi9pLG1vKSl7''@;'; put 'put ''Z2MoUHMsZmkpO2NvbnRpbnVlfUtyJiYobW89VGUobW8sdG4sIiAiKSxtbz1UZShtbyx6biwiICIpKTt2YXIgWWw9cmwoZmkubm9kZU5hbWUpO2lmKFBsKFlsLHJzLG1vKSl7aWYobnImJiJvYmplY3QiPT09SmUoZXIpJiYiZnVuY3Rpb24iPT10eXBlb2YgZXIuZ2V0QXR0cmlidXRlVHlwZSYm''@;'; put 'put ''IU5mKXN3aXRjaChlci5nZXRBdHRyaWJ1dGVUeXBlKFlsLHJzKSl7Y2FzZSJUcnVzdGVkSFRNTCI6bW89bnIuY3JlYXRlSFRNTChtbyk7YnJlYWs7Y2FzZSJUcnVzdGVkU2NyaXB0VVJMIjptbz1uci5jcmVhdGVTY3JpcHRVUkwobW8pfXRyeXtOZj9maS5zZXRBdHRyaWJ1dGVOUyhOZixQcyxt''@;'; put 'put ''byk6Zmkuc2V0QXR0cmlidXRlKFBzLG1vKSxBZShIdC5yZW1vdmVkKX1jYXRjaChOYyl7fX19fW1jKCJhZnRlclNhbml0aXplQXR0cmlidXRlcyIsZmksbnVsbCl9fSxzMT1mdW5jdGlvbiBaMChmaSl7dmFyIFIwLG1vPUIxKGZpKTtmb3IobWMoImJlZm9yZVNhbml0aXplU2hhZG93RE9NIixm''@;'; put 'put ''aSxudWxsKTtSMD1tby5uZXh0Tm9kZSgpOyltYygidXBvblNhbml0aXplU2hhZG93Tm9kZSIsUjAsbnVsbCksIXgyKFIwKSYmKFIwLmNvbnRlbnQgaW5zdGFuY2VvZiB5dCYmWjAoUjAuY29udGVudCksUTIoUjApKTttYygiYWZ0ZXJTYW5pdGl6ZVNoYWRvd0RPTSIsZmksbnVsbCl9O3JldHVy''@;'; put 'put ''biBIdC5zYW5pdGl6ZT1mdW5jdGlvbihaMCxmaSl7dmFyIFIwLG1vLHJzLGRzLG4yO2lmKChBaT0hWjApJiYoWjA9Ilx4M2MhLS1ceDNlIiksInN0cmluZyIhPXR5cGVvZiBaMCYmIVAxKFowKSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFowLnRvU3RyaW5nKXRocm93IHooInRvU3RyaW5nIGlz''@;'; put 'put ''IG5vdCBhIGZ1bmN0aW9uIik7aWYoInN0cmluZyIhPXR5cGVvZihaMD1aMC50b1N0cmluZygpKSl0aHJvdyB6KCJkaXJ0eSBpcyBub3QgYSBzdHJpbmcsIGFib3J0aW5nIil9aWYoIUh0LmlzU3VwcG9ydGVkKXtpZigib2JqZWN0Ij09PUplKGZ0LnRvU3RhdGljSFRNTCl8fCJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBmdC50b1N0YXRpY0hUTUwpe2lmKCJzdHJpbmciPT10eXBlb2YgWjApcmV0dXJuIGZ0LnRvU3RhdGljSFRNTChaMCk7aWYoUDEoWjApKXJldHVybiBmdC50b1N0YXRpY0hUTUwoWjAub3V0ZXJIVE1MKX1yZXR1cm4gWjB9aWYoaWl8fFUwKGZpKSxIdC5yZW1vdmVkPVtdLCJzdHJp''@;'; put 'put ''bmciPT10eXBlb2YgWjAmJihtMD0hMSksbTApe2lmKFowLm5vZGVOYW1lKXt2YXIgVDI9cmwoWjAubm9kZU5hbWUpO2lmKCFjbltUMl18fGVuW1QyXSl0aHJvdyB6KCJyb290IG5vZGUgaXMgZm9yYmlkZGVuIGFuZCBjYW5ub3QgYmUgc2FuaXRpemVkIGluLXBsYWNlIil9fWVsc2UgaWYoWjAg''@;'; put 'put ''aW5zdGFuY2VvZiBKdCkxPT09KG1vPShSMD1wZCgiXHgzYyEtLS0tXHgzZSIpKS5vd25lckRvY3VtZW50LmltcG9ydE5vZGUoWjAsITApKS5ub2RlVHlwZSYmIkJPRFkiPT09bW8ubm9kZU5hbWV8fCJIVE1MIj09PW1vLm5vZGVOYW1lP1IwPW1vOlIwLmFwcGVuZENoaWxkKG1vKTtlbHNle2lm''@;'; put 'put ''KCFsaSYmIUtyJiYhVnImJi0xPT09WjAuaW5kZXhPZigiPCIpKXJldHVybiBuciYmbzA/bnIuY3JlYXRlSFRNTChaMCk6WjA7aWYoIShSMD1wZChaMCkpKXJldHVybiBsaT9udWxsOm8wP0FuOiIifVIwJiZSciYmXzAoUjAuZmlyc3RDaGlsZCk7Zm9yKHZhciBUaT1CMShtMD9aMDpSMCk7cnM9''@;'; put 'put ''VGkubmV4dE5vZGUoKTspMz09PXJzLm5vZGVUeXBlJiZycz09PWRzfHx4Mihycyl8fChycy5jb250ZW50IGluc3RhbmNlb2YgeXQmJnMxKHJzLmNvbnRlbnQpLFEyKHJzKSxkcz1ycyk7aWYoZHM9bnVsbCxtMClyZXR1cm4gWjA7aWYobGkpe2lmKE1pKWZvcihuMj1Lbi5jYWxsKFIwLm93bmVy''@;'; put 'put ''RG9jdW1lbnQpO1IwLmZpcnN0Q2hpbGQ7KW4yLmFwcGVuZENoaWxkKFIwLmZpcnN0Q2hpbGQpO2Vsc2UgbjI9UjA7cmV0dXJuIEd0LnNoYWRvd3Jvb3QmJihuMj1zbi5jYWxsKEdlLG4yLCEwKSksbjJ9dmFyIFBzPVZyP1IwLm91dGVySFRNTDpSMC5pbm5lckhUTUw7cmV0dXJuIFZyJiZjblsi''@;'; put 'put ''IWRvY3R5cGUiXSYmUjAub3duZXJEb2N1bWVudCYmUjAub3duZXJEb2N1bWVudC5kb2N0eXBlJiZSMC5vd25lckRvY3VtZW50LmRvY3R5cGUubmFtZSYmTyh0dCxSMC5vd25lckRvY3VtZW50LmRvY3R5cGUubmFtZSkmJihQcz0iPCFET0NUWVBFICIrUjAub3duZXJEb2N1bWVudC5kb2N0eXBl''@;'; put 'put ''Lm5hbWUrIj5cbiIrUHMpLEtyJiYoUHM9VGUoUHMsdG4sIiAiKSxQcz1UZShQcyx6biwiICIpKSxuciYmbzA/bnIuY3JlYXRlSFRNTChQcyk6UHN9LEh0LnNldENvbmZpZz1mdW5jdGlvbihaMCl7VTAoWjApLGlpPSEwfSxIdC5jbGVhckNvbmZpZz1mdW5jdGlvbigpe19pPW51bGwsaWk9ITF9''@;'; put 'put ''LEh0LmlzVmFsaWRBdHRyaWJ1dGU9ZnVuY3Rpb24oWjAsZmksUjApe19pfHxVMCh7fSk7dmFyIG1vPXJsKFowKSxycz1ybChmaSk7cmV0dXJuIFBsKG1vLHJzLFIwKX0sSHQuYWRkSG9vaz1mdW5jdGlvbihaMCxmaSl7ImZ1bmN0aW9uIj09dHlwZW9mIGZpJiYod25bWjBdPXduW1owXXx8W10s''@;'; put 'put ''a2Uod25bWjBdLGZpKSl9LEh0LnJlbW92ZUhvb2s9ZnVuY3Rpb24oWjApe2lmKHduW1owXSlyZXR1cm4gQWUod25bWjBdKX0sSHQucmVtb3ZlSG9va3M9ZnVuY3Rpb24oWjApe3duW1owXSYmKHduW1owXT1bXSl9LEh0LnJlbW92ZUFsbEhvb2tzPWZ1bmN0aW9uKCl7d249e319LEh0fSgpfSgp''@;'; put 'put ''fSw1NzcxNTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUplO21lLnZlcnNpb249TCgxODU5NykuaTgsbWUudXRpbHM9TCg2MTk3MCksbWUucmFuZD1MKDM3OTUwKSxtZS5jdXJ2ZT1MKDQ2MjcwKSxtZS5jdXJ2ZXM9TCg1MjkxNiksbWUuZWM9TCg2NzYyNiksbWUuZWRkc2E9TCg4''@;'; put 'put ''MTg4NSl9LDk3OTAyOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgxNzQzMyksQj1MKDYxOTcwKSxFPUIuZ2V0TkFGLEVlPUIuZ2V0SlNGLFU9Qi5hc3NlcnQ7ZnVuY3Rpb24gUShyZSxhZSl7dGhpcy50eXBlPXJlLHRoaXMucD1uZXcgbWUoYWUucCwxNiksdGhpcy5yZWQ9YWUu''@;'; put 'put ''cHJpbWU/bWUucmVkKGFlLnByaW1lKTptZS5tb250KHRoaXMucCksdGhpcy56ZXJvPW5ldyBtZSgwKS50b1JlZCh0aGlzLnJlZCksdGhpcy5vbmU9bmV3IG1lKDEpLnRvUmVkKHRoaXMucmVkKSx0aGlzLnR3bz1uZXcgbWUoMikudG9SZWQodGhpcy5yZWQpLHRoaXMubj1hZS5uJiZuZXcgbWUo''@;'; put 'put ''YWUubiwxNiksdGhpcy5nPWFlLmcmJnRoaXMucG9pbnRGcm9tSlNPTihhZS5nLGFlLmdSZWQpLHRoaXMuX3duYWZUMT1uZXcgQXJyYXkoNCksdGhpcy5fd25hZlQyPW5ldyBBcnJheSg0KSx0aGlzLl93bmFmVDM9bmV3IEFycmF5KDQpLHRoaXMuX3duYWZUND1uZXcgQXJyYXkoNCksdGhpcy5f''@;'; put 'put ''Yml0TGVuZ3RoPXRoaXMubj90aGlzLm4uYml0TGVuZ3RoKCk6MDt2YXIgWT10aGlzLm4mJnRoaXMucC5kaXYodGhpcy5uKTshWXx8WS5jbXBuKDEwMCk+MD90aGlzLnJlZE49bnVsbDoodGhpcy5fbWF4d2VsbFRyaWNrPSEwLHRoaXMucmVkTj10aGlzLm4udG9SZWQodGhpcy5yZWQpKX1mdW5j''@;'; put 'put ''dGlvbiBqKHJlLGFlKXt0aGlzLmN1cnZlPXJlLHRoaXMudHlwZT1hZSx0aGlzLnByZWNvbXB1dGVkPW51bGx9WGUuZXhwb3J0cz1RLFEucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX0sUS5wcm90b3R5cGUudmFsaWRhdGU9ZnVu''@;'; put 'put ''Y3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfSxRLnByb3RvdHlwZS5fZml4ZWROYWZNdWw9ZnVuY3Rpb24oYWUsWSl7VShhZS5wcmVjb21wdXRlZCk7dmFyIFc9YWUuX2dldERvdWJsZXMoKSxOPUUoWSwxLHRoaXMuX2JpdExlbmd0aCksdGU9KDE8PFcuc3RlcCsx''@;'; put 'put ''KS0oVy5zdGVwJTI9PTA/MjoxKTt0ZS89Mzt2YXIgSixzZSxLPVtdO2ZvcihKPTA7SjxOLmxlbmd0aDtKKz1XLnN0ZXApe3NlPTA7Zm9yKHZhciBvZT1KK1cuc3RlcC0xO29lPj1KO29lLS0pc2U9KHNlPDwxKStOW29lXTtLLnB1c2goc2UpfWZvcih2YXIgY2U9dGhpcy5qcG9pbnQobnVsbCxu''@;'; put 'put ''dWxsLG51bGwpLGRlPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKSx2ZT10ZTt2ZT4wO3ZlLS0pe2ZvcihKPTA7SjxLLmxlbmd0aDtKKyspKHNlPUtbSl0pPT09dmU/ZGU9ZGUubWl4ZWRBZGQoVy5wb2ludHNbSl0pOnNlPT09LXZlJiYoZGU9ZGUubWl4ZWRBZGQoVy5wb2ludHNbSl0ubmVn''@;'; put 'put ''KCkpKTtjZT1jZS5hZGQoZGUpfXJldHVybiBjZS50b1AoKX0sUS5wcm90b3R5cGUuX3duYWZNdWw9ZnVuY3Rpb24oYWUsWSl7Zm9yKHZhciBXPTQsTj1hZS5fZ2V0TkFGUG9pbnRzKFcpLHRlPU4ucG9pbnRzLEs9RShZLFc9Ti53bmQsdGhpcy5fYml0TGVuZ3RoKSxKPXRoaXMuanBvaW50KG51''@;'; put 'put ''bGwsbnVsbCxudWxsKSxzZT1LLmxlbmd0aC0xO3NlPj0wO3NlLS0pe2Zvcih2YXIgb2U9MDtzZT49MCYmMD09PUtbc2VdO3NlLS0pb2UrKztpZihzZT49MCYmb2UrKyxKPUouZGJscChvZSksc2U8MClicmVhazt2YXIgY2U9S1tzZV07VSgwIT09Y2UpLEo9ImFmZmluZSI9PT1hZS50eXBlP0ou''@;'; put 'put ''bWl4ZWRBZGQoY2U+MD90ZVtjZS0xPj4xXTp0ZVstY2UtMT4+MV0ubmVnKCkpOkouYWRkKGNlPjA/dGVbY2UtMT4+MV06dGVbLWNlLTE+PjFdLm5lZygpKX1yZXR1cm4iYWZmaW5lIj09PWFlLnR5cGU/Si50b1AoKTpKfSxRLnByb3RvdHlwZS5fd25hZk11bEFkZD1mdW5jdGlvbihhZSxZLFcs''@;'; put 'put ''Tix0ZSl7dmFyIGNlLGRlLHZlLEs9dGhpcy5fd25hZlQxLEo9dGhpcy5fd25hZlQyLHNlPXRoaXMuX3duYWZUMyxvZT0wO2ZvcihjZT0wO2NlPE47Y2UrKyl7dmFyIEFlPSh2ZT1ZW2NlXSkuX2dldE5BRlBvaW50cyhhZSk7S1tjZV09QWUud25kLEpbY2VdPUFlLnBvaW50c31mb3IoY2U9Ti0x''@;'; put 'put ''O2NlPj0xO2NlLT0yKXt2YXIga2U9Y2UtMSxTZT1jZTtpZigxPT09S1trZV0mJjE9PT1LW1NlXSl7dmFyIEllPVtZW2tlXSxudWxsLG51bGwsWVtTZV1dOzA9PT1ZW2tlXS55LmNtcChZW1NlXS55KT8oSWVbMV09WVtrZV0uYWRkKFlbU2VdKSxJZVsyXT1ZW2tlXS50b0ooKS5taXhlZEFkZChZ''@;'; put 'put ''W1NlXS5uZWcoKSkpOjA9PT1ZW2tlXS55LmNtcChZW1NlXS55LnJlZE5lZygpKT8oSWVbMV09WVtrZV0udG9KKCkubWl4ZWRBZGQoWVtTZV0pLEllWzJdPVlba2VdLmFkZChZW1NlXS5uZWcoKSkpOihJZVsxXT1ZW2tlXS50b0ooKS5taXhlZEFkZChZW1NlXSksSWVbMl09WVtrZV0udG9KKCku''@;'; put 'put ''bWl4ZWRBZGQoWVtTZV0ubmVnKCkpKTt2YXIgVGU9Wy0zLC0xLC01LC03LDAsNyw1LDEsM10sTWU9RWUoV1trZV0sV1tTZV0pO2ZvcihvZT1NYXRoLm1heChNZVswXS5sZW5ndGgsb2UpLHNlW2tlXT1uZXcgQXJyYXkob2UpLHNlW1NlXT1uZXcgQXJyYXkob2UpLGRlPTA7ZGU8b2U7ZGUrKylz''@;'; put 'put ''ZVtrZV1bZGVdPVRlWzMqKDErKDB8TWVbMF1bZGVdKSkrKDErKDB8TWVbMV1bZGVdKSldLHNlW1NlXVtkZV09MCxKW2tlXT1JZX1lbHNlIHNlW2tlXT1FKFdba2VdLEtba2VdLHRoaXMuX2JpdExlbmd0aCksc2VbU2VdPUUoV1tTZV0sS1tTZV0sdGhpcy5fYml0TGVuZ3RoKSxvZT1NYXRoLm1h''@;'; put 'put ''eChzZVtrZV0ubGVuZ3RoLG9lKSxvZT1NYXRoLm1heChzZVtTZV0ubGVuZ3RoLG9lKX12YXIgej10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCksZWU9dGhpcy5fd25hZlQ0O2ZvcihjZT1vZTtjZT49MDtjZS0tKXtmb3IodmFyIG5lPTA7Y2U+PTA7KXt2YXIgeD0hMDtmb3IoZGU9MDtkZTxO''@;'; put 'put ''O2RlKyspZWVbZGVdPTB8c2VbZGVdW2NlXSwwIT09ZWVbZGVdJiYoeD0hMSk7aWYoIXgpYnJlYWs7bmUrKyxjZS0tfWlmKGNlPj0wJiZuZSsrLHo9ei5kYmxwKG5lKSxjZTwwKWJyZWFrO2ZvcihkZT0wO2RlPE47ZGUrKyl7dmFyIFA9ZWVbZGVdOzAhPT1QJiYoUD4wP3ZlPUpbZGVdW1AtMT4+''@;'; put 'put ''MV06UDwwJiYodmU9SltkZV1bLVAtMT4+MV0ubmVnKCkpLHo9ImFmZmluZSI9PT12ZS50eXBlP3oubWl4ZWRBZGQodmUpOnouYWRkKHZlKSl9fWZvcihjZT0wO2NlPE47Y2UrKylKW2NlXT1udWxsO3JldHVybiB0ZT96OnoudG9QKCl9LFEuQmFzZVBvaW50PWosai5wcm90b3R5cGUuZXE9ZnVu''@;'; put 'put ''Y3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfSxqLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnZlLnZhbGlkYXRlKHRoaXMpfSxRLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbihhZSxZKXthZT1CLnRvQXJyYXkoYWUs''@;'; put 'put ''WSk7dmFyIFc9dGhpcy5wLmJ5dGVMZW5ndGgoKTtpZigoND09PWFlWzBdfHw2PT09YWVbMF18fDc9PT1hZVswXSkmJmFlLmxlbmd0aC0xPT0yKlcpcmV0dXJuIDY9PT1hZVswXT9VKGFlW2FlLmxlbmd0aC0xXSUyPT0wKTo3PT09YWVbMF0mJlUoYWVbYWUubGVuZ3RoLTFdJTI9PTEpLHRoaXMu''@;'; put 'put ''cG9pbnQoYWUuc2xpY2UoMSwxK1cpLGFlLnNsaWNlKDErVywxKzIqVykpO2lmKCgyPT09YWVbMF18fDM9PT1hZVswXSkmJmFlLmxlbmd0aC0xPT09VylyZXR1cm4gdGhpcy5wb2ludEZyb21YKGFlLnNsaWNlKDEsMStXKSwzPT09YWVbMF0pO3Rocm93IG5ldyBFcnJvcigiVW5rbm93biBwb2lu''@;'; put 'put ''dCBmb3JtYXQiKX0sai5wcm90b3R5cGUuZW5jb2RlQ29tcHJlc3NlZD1mdW5jdGlvbihhZSl7cmV0dXJuIHRoaXMuZW5jb2RlKGFlLCEwKX0sai5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbihhZSl7dmFyIFk9dGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKSxXPXRoaXMuZ2V0WCgpLnRvQXJy''@;'; put 'put ''YXkoImJlIixZKTtyZXR1cm4gYWU/W3RoaXMuZ2V0WSgpLmlzRXZlbigpPzI6M10uY29uY2F0KFcpOls0XS5jb25jYXQoVyx0aGlzLmdldFkoKS50b0FycmF5KCJiZSIsWSkpfSxqLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24oYWUsWSl7cmV0dXJuIEIuZW5jb2RlKHRoaXMuX2VuY29kZShZ''@;'; put 'put ''KSxhZSl9LGoucHJvdG90eXBlLnByZWNvbXB1dGU9ZnVuY3Rpb24oYWUpe2lmKHRoaXMucHJlY29tcHV0ZWQpcmV0dXJuIHRoaXM7dmFyIFk9e2RvdWJsZXM6bnVsbCxuYWY6bnVsbCxiZXRhOm51bGx9O3JldHVybiBZLm5hZj10aGlzLl9nZXROQUZQb2ludHMoOCksWS5kb3VibGVzPXRoaXMu''@;'; put 'put ''X2dldERvdWJsZXMoNCxhZSksWS5iZXRhPXRoaXMuX2dldEJldGEoKSx0aGlzLnByZWNvbXB1dGVkPVksdGhpc30sai5wcm90b3R5cGUuX2hhc0RvdWJsZXM9ZnVuY3Rpb24oYWUpe2lmKCF0aGlzLnByZWNvbXB1dGVkKXJldHVybiExO3ZhciBZPXRoaXMucHJlY29tcHV0ZWQuZG91Ymxlczty''@;'; put 'put ''ZXR1cm4hIVkmJlkucG9pbnRzLmxlbmd0aD49TWF0aC5jZWlsKChhZS5iaXRMZW5ndGgoKSsxKS9ZLnN0ZXApfSxqLnByb3RvdHlwZS5fZ2V0RG91Ymxlcz1mdW5jdGlvbihhZSxZKXtpZih0aGlzLnByZWNvbXB1dGVkJiZ0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMpcmV0dXJuIHRoaXMucHJl''@;'; put 'put ''Y29tcHV0ZWQuZG91Ymxlcztmb3IodmFyIFc9W3RoaXNdLE49dGhpcyx0ZT0wO3RlPFk7dGUrPWFlKXtmb3IodmFyIEs9MDtLPGFlO0srKylOPU4uZGJsKCk7Vy5wdXNoKE4pfXJldHVybntzdGVwOmFlLHBvaW50czpXfX0sai5wcm90b3R5cGUuX2dldE5BRlBvaW50cz1mdW5jdGlvbihhZSl7''@;'; put 'put ''aWYodGhpcy5wcmVjb21wdXRlZCYmdGhpcy5wcmVjb21wdXRlZC5uYWYpcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQubmFmO2Zvcih2YXIgWT1bdGhpc10sVz0oMTw8YWUpLTEsTj0xPT09Vz9udWxsOnRoaXMuZGJsKCksdGU9MTt0ZTxXO3RlKyspWVt0ZV09WVt0ZS0xXS5hZGQoTik7cmV0dXJu''@;'; put 'put ''e3duZDphZSxwb2ludHM6WX19LGoucHJvdG90eXBlLl9nZXRCZXRhPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGoucHJvdG90eXBlLmRibHA9ZnVuY3Rpb24oYWUpe2Zvcih2YXIgWT10aGlzLFc9MDtXPGFlO1crKylZPVkuZGJsKCk7cmV0dXJuIFl9fSwxMzgzNTooWGUsSmUsTCk9PnsidXNl''@;'; put 'put ''IHN0cmljdCI7dmFyIG1lPUwoNjE5NzApLEI9TCgxNzQzMyksRT1MKDgzODk0KSxFZT1MKDk3OTAyKSxVPW1lLmFzc2VydDtmdW5jdGlvbiBRKHJlKXt0aGlzLnR3aXN0ZWQ9MSE9KDB8cmUuYSksdGhpcy5tT25lQT10aGlzLnR3aXN0ZWQmJi0xPT0oMHxyZS5hKSx0aGlzLmV4dGVuZGVkPXRo''@;'; put 'put ''aXMubU9uZUEsRWUuY2FsbCh0aGlzLCJlZHdhcmRzIixyZSksdGhpcy5hPW5ldyBCKHJlLmEsMTYpLnVtb2QodGhpcy5yZWQubSksdGhpcy5hPXRoaXMuYS50b1JlZCh0aGlzLnJlZCksdGhpcy5jPW5ldyBCKHJlLmMsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmMyPXRoaXMuYy5yZWRTcXIo''@;'; put 'put ''KSx0aGlzLmQ9bmV3IEIocmUuZCwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuZGQ9dGhpcy5kLnJlZEFkZCh0aGlzLmQpLFUoIXRoaXMudHdpc3RlZHx8MD09PXRoaXMuYy5mcm9tUmVkKCkuY21wbigxKSksdGhpcy5vbmVDPTE9PSgwfHJlLmMpfWZ1bmN0aW9uIGoocmUsYWUsWSxXLE4pe0Vl''@;'; put 'put ''LkJhc2VQb2ludC5jYWxsKHRoaXMscmUsInByb2plY3RpdmUiKSxudWxsPT09YWUmJm51bGw9PT1ZJiZudWxsPT09Vz8odGhpcy54PXRoaXMuY3VydmUuemVybyx0aGlzLnk9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56PXRoaXMuY3VydmUub25lLHRoaXMudD10aGlzLmN1cnZlLnplcm8sdGhpcy56''@;'; put 'put ''T25lPSEwKToodGhpcy54PW5ldyBCKGFlLDE2KSx0aGlzLnk9bmV3IEIoWSwxNiksdGhpcy56PVc/bmV3IEIoVywxNik6dGhpcy5jdXJ2ZS5vbmUsdGhpcy50PU4mJm5ldyBCKE4sMTYpLHRoaXMueC5yZWR8fCh0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy55LnJl''@;'; put 'put ''ZHx8KHRoaXMueT10aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnoucmVkfHwodGhpcy56PXRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMudCYmIXRoaXMudC5yZWQmJih0aGlzLnQ9dGhpcy50LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56T25lPXRoaXMu''@;'; put 'put ''ej09PXRoaXMuY3VydmUub25lLHRoaXMuY3VydmUuZXh0ZW5kZWQmJiF0aGlzLnQmJih0aGlzLnQ9dGhpcy54LnJlZE11bCh0aGlzLnkpLHRoaXMuek9uZXx8KHRoaXMudD10aGlzLnQucmVkTXVsKHRoaXMuei5yZWRJbnZtKCkpKSkpfUUoUSxFZSksWGUuZXhwb3J0cz1RLFEucHJvdG90eXBl''@;'; put 'put ''Ll9tdWxBPWZ1bmN0aW9uKGFlKXtyZXR1cm4gdGhpcy5tT25lQT9hZS5yZWROZWcoKTp0aGlzLmEucmVkTXVsKGFlKX0sUS5wcm90b3R5cGUuX211bEM9ZnVuY3Rpb24oYWUpe3JldHVybiB0aGlzLm9uZUM/YWU6dGhpcy5jLnJlZE11bChhZSl9LFEucHJvdG90eXBlLmpwb2ludD1mdW5jdGlv''@;'; put 'put ''bihhZSxZLFcsTil7cmV0dXJuIHRoaXMucG9pbnQoYWUsWSxXLE4pfSxRLnByb3RvdHlwZS5wb2ludEZyb21YPWZ1bmN0aW9uKGFlLFkpeyhhZT1uZXcgQihhZSwxNikpLnJlZHx8KGFlPWFlLnRvUmVkKHRoaXMucmVkKSk7dmFyIFc9YWUucmVkU3FyKCksTj10aGlzLmMyLnJlZFN1Yih0aGlz''@;'; put 'put ''LmEucmVkTXVsKFcpKSx0ZT10aGlzLm9uZS5yZWRTdWIodGhpcy5jMi5yZWRNdWwodGhpcy5kKS5yZWRNdWwoVykpLEs9Ti5yZWRNdWwodGUucmVkSW52bSgpKSxKPUsucmVkU3FydCgpO2lmKDAhPT1KLnJlZFNxcigpLnJlZFN1YihLKS5jbXAodGhpcy56ZXJvKSl0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''ImludmFsaWQgcG9pbnQiKTt2YXIgc2U9Si5mcm9tUmVkKCkuaXNPZGQoKTtyZXR1cm4oWSYmIXNlfHwhWSYmc2UpJiYoSj1KLnJlZE5lZygpKSx0aGlzLnBvaW50KGFlLEopfSxRLnByb3RvdHlwZS5wb2ludEZyb21ZPWZ1bmN0aW9uKGFlLFkpeyhhZT1uZXcgQihhZSwxNikpLnJlZHx8KGFl''@;'; put 'put ''PWFlLnRvUmVkKHRoaXMucmVkKSk7dmFyIFc9YWUucmVkU3FyKCksTj1XLnJlZFN1Yih0aGlzLmMyKSx0ZT1XLnJlZE11bCh0aGlzLmQpLnJlZE11bCh0aGlzLmMyKS5yZWRTdWIodGhpcy5hKSxLPU4ucmVkTXVsKHRlLnJlZEludm0oKSk7aWYoMD09PUsuY21wKHRoaXMuemVybykpe2lmKFkp''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50Iik7cmV0dXJuIHRoaXMucG9pbnQodGhpcy56ZXJvLGFlKX12YXIgSj1LLnJlZFNxcnQoKTtpZigwIT09Si5yZWRTcXIoKS5yZWRTdWIoSykuY21wKHRoaXMuemVybykpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50Iik7cmV0dXJu''@;'; put 'put ''IEouZnJvbVJlZCgpLmlzT2RkKCkhPT1ZJiYoSj1KLnJlZE5lZygpKSx0aGlzLnBvaW50KEosYWUpfSxRLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbihhZSl7aWYoYWUuaXNJbmZpbml0eSgpKXJldHVybiEwO2FlLm5vcm1hbGl6ZSgpO3ZhciBZPWFlLngucmVkU3FyKCksVz1hZS55LnJl''@;'; put 'put ''ZFNxcigpLE49WS5yZWRNdWwodGhpcy5hKS5yZWRBZGQoVyksdGU9dGhpcy5jMi5yZWRNdWwodGhpcy5vbmUucmVkQWRkKHRoaXMuZC5yZWRNdWwoWSkucmVkTXVsKFcpKSk7cmV0dXJuIDA9PT1OLmNtcCh0ZSl9LEUoaixFZS5CYXNlUG9pbnQpLFEucHJvdG90eXBlLnBvaW50RnJvbUpTT049''@;'; put 'put ''ZnVuY3Rpb24oYWUpe3JldHVybiBqLmZyb21KU09OKHRoaXMsYWUpfSxRLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbihhZSxZLFcsTil7cmV0dXJuIG5ldyBqKHRoaXMsYWUsWSxXLE4pfSxqLmZyb21KU09OPWZ1bmN0aW9uKGFlLFkpe3JldHVybiBuZXcgaihhZSxZWzBdLFlbMV0sWVsyXSl9''@;'; put 'put ''LGoucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/IjxFQyBQb2ludCBJbmZpbml0eT4iOiI8RUMgUG9pbnQgeDogIit0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyIgeTogIit0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIp''@;'; put 'put ''KyIgejogIit0aGlzLnouZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyI+In0sai5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy54LmNtcG4oMCkmJigwPT09dGhpcy55LmNtcCh0aGlzLnopfHx0aGlzLnpPbmUmJjA9PT10aGlzLnkuY21wKHRoaXMuY3Vy''@;'; put 'put ''dmUuYykpfSxqLnByb3RvdHlwZS5fZXh0RGJsPWZ1bmN0aW9uKCl7dmFyIGFlPXRoaXMueC5yZWRTcXIoKSxZPXRoaXMueS5yZWRTcXIoKSxXPXRoaXMuei5yZWRTcXIoKTtXPVcucmVkSUFkZChXKTt2YXIgTj10aGlzLmN1cnZlLl9tdWxBKGFlKSx0ZT10aGlzLngucmVkQWRkKHRoaXMueSku''@;'; put 'put ''cmVkU3FyKCkucmVkSVN1YihhZSkucmVkSVN1YihZKSxLPU4ucmVkQWRkKFkpLEo9Sy5yZWRTdWIoVyksc2U9Ti5yZWRTdWIoWSksb2U9dGUucmVkTXVsKEopLGNlPUsucmVkTXVsKHNlKSxkZT10ZS5yZWRNdWwoc2UpLHZlPUoucmVkTXVsKEspO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KG9l''@;'; put 'put ''LGNlLHZlLGRlKX0sai5wcm90b3R5cGUuX3Byb2pEYmw9ZnVuY3Rpb24oKXt2YXIgTix0ZSxLLEosc2Usb2UsYWU9dGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZFNxcigpLFk9dGhpcy54LnJlZFNxcigpLFc9dGhpcy55LnJlZFNxcigpO2lmKHRoaXMuY3VydmUudHdpc3RlZCl7dmFyIGNlPShK''@;'; put 'put ''PXRoaXMuY3VydmUuX211bEEoWSkpLnJlZEFkZChXKTt0aGlzLnpPbmU/KE49YWUucmVkU3ViKFkpLnJlZFN1YihXKS5yZWRNdWwoY2UucmVkU3ViKHRoaXMuY3VydmUudHdvKSksdGU9Y2UucmVkTXVsKEoucmVkU3ViKFcpKSxLPWNlLnJlZFNxcigpLnJlZFN1YihjZSkucmVkU3ViKGNlKSk6''@;'; put 'put ''KHNlPXRoaXMuei5yZWRTcXIoKSxvZT1jZS5yZWRTdWIoc2UpLnJlZElTdWIoc2UpLE49YWUucmVkU3ViKFkpLnJlZElTdWIoVykucmVkTXVsKG9lKSx0ZT1jZS5yZWRNdWwoSi5yZWRTdWIoVykpLEs9Y2UucmVkTXVsKG9lKSl9ZWxzZSBKPVkucmVkQWRkKFcpLHNlPXRoaXMuY3VydmUuX211''@;'; put 'put ''bEModGhpcy56KS5yZWRTcXIoKSxvZT1KLnJlZFN1YihzZSkucmVkU3ViKHNlKSxOPXRoaXMuY3VydmUuX211bEMoYWUucmVkSVN1YihKKSkucmVkTXVsKG9lKSx0ZT10aGlzLmN1cnZlLl9tdWxDKEopLnJlZE11bChZLnJlZElTdWIoVykpLEs9Si5yZWRNdWwob2UpO3JldHVybiB0aGlzLmN1''@;'; put 'put ''cnZlLnBvaW50KE4sdGUsSyl9LGoucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT90aGlzOnRoaXMuY3VydmUuZXh0ZW5kZWQ/dGhpcy5fZXh0RGJsKCk6dGhpcy5fcHJvakRibCgpfSxqLnByb3RvdHlwZS5fZXh0QWRkPWZ1bmN0aW9uKGFlKXt2YXIg''@;'; put 'put ''WT10aGlzLnkucmVkU3ViKHRoaXMueCkucmVkTXVsKGFlLnkucmVkU3ViKGFlLngpKSxXPXRoaXMueS5yZWRBZGQodGhpcy54KS5yZWRNdWwoYWUueS5yZWRBZGQoYWUueCkpLE49dGhpcy50LnJlZE11bCh0aGlzLmN1cnZlLmRkKS5yZWRNdWwoYWUudCksdGU9dGhpcy56LnJlZE11bChhZS56''@;'; put 'put ''LnJlZEFkZChhZS56KSksSz1XLnJlZFN1YihZKSxKPXRlLnJlZFN1YihOKSxzZT10ZS5yZWRBZGQoTiksb2U9Vy5yZWRBZGQoWSksY2U9Sy5yZWRNdWwoSiksZGU9c2UucmVkTXVsKG9lKSx2ZT1LLnJlZE11bChvZSksQWU9Si5yZWRNdWwoc2UpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KGNl''@;'; put 'put ''LGRlLEFlLHZlKX0sai5wcm90b3R5cGUuX3Byb2pBZGQ9ZnVuY3Rpb24oYWUpe3ZhciBkZSx2ZSxZPXRoaXMuei5yZWRNdWwoYWUueiksVz1ZLnJlZFNxcigpLE49dGhpcy54LnJlZE11bChhZS54KSx0ZT10aGlzLnkucmVkTXVsKGFlLnkpLEs9dGhpcy5jdXJ2ZS5kLnJlZE11bChOKS5yZWRN''@;'; put 'put ''dWwodGUpLEo9Vy5yZWRTdWIoSyksc2U9Vy5yZWRBZGQoSyksb2U9dGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZE11bChhZS54LnJlZEFkZChhZS55KSkucmVkSVN1YihOKS5yZWRJU3ViKHRlKSxjZT1ZLnJlZE11bChKKS5yZWRNdWwob2UpO3JldHVybiB0aGlzLmN1cnZlLnR3aXN0ZWQ/KGRl''@;'; put 'put ''PVkucmVkTXVsKHNlKS5yZWRNdWwodGUucmVkU3ViKHRoaXMuY3VydmUuX211bEEoTikpKSx2ZT1KLnJlZE11bChzZSkpOihkZT1ZLnJlZE11bChzZSkucmVkTXVsKHRlLnJlZFN1YihOKSksdmU9dGhpcy5jdXJ2ZS5fbXVsQyhKKS5yZWRNdWwoc2UpKSx0aGlzLmN1cnZlLnBvaW50KGNlLGRl''@;'; put 'put ''LHZlKX0sai5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGFlKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/YWU6YWUuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5jdXJ2ZS5leHRlbmRlZD90aGlzLl9leHRBZGQoYWUpOnRoaXMuX3Byb2pBZGQoYWUpfSxqLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24o''@;'; put 'put ''YWUpe3JldHVybiB0aGlzLl9oYXNEb3VibGVzKGFlKT90aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLGFlKTp0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsYWUpfSxqLnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24oYWUsWSxXKXtyZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLFt0''@;'; put 'put ''aGlzLFldLFthZSxXXSwyLCExKX0sai5wcm90b3R5cGUuam11bEFkZD1mdW5jdGlvbihhZSxZLFcpe3JldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsW3RoaXMsWV0sW2FlLFddLDIsITApfSxqLnByb3RvdHlwZS5ub3JtYWxpemU9ZnVuY3Rpb24oKXtpZih0aGlzLnpPbmUpcmV0dXJu''@;'; put 'put ''IHRoaXM7dmFyIGFlPXRoaXMuei5yZWRJbnZtKCk7cmV0dXJuIHRoaXMueD10aGlzLngucmVkTXVsKGFlKSx0aGlzLnk9dGhpcy55LnJlZE11bChhZSksdGhpcy50JiYodGhpcy50PXRoaXMudC5yZWRNdWwoYWUpKSx0aGlzLno9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56T25lPSEwLHRoaXN9LGou''@;'; put 'put ''cHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWROZWcoKSx0aGlzLnksdGhpcy56LHRoaXMudCYmdGhpcy50LnJlZE5lZygpKX0sai5wcm90b3R5cGUuZ2V0WD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLHRoaXMueC5m''@;'; put 'put ''cm9tUmVkKCl9LGoucHJvdG90eXBlLmdldFk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKSx0aGlzLnkuZnJvbVJlZCgpfSxqLnByb3RvdHlwZS5lcT1mdW5jdGlvbihhZSl7cmV0dXJuIHRoaXM9PT1hZXx8MD09PXRoaXMuZ2V0WCgpLmNtcChhZS5nZXRYKCkpJiYwPT09dGhp''@;'; put 'put ''cy5nZXRZKCkuY21wKGFlLmdldFkoKSl9LGoucHJvdG90eXBlLmVxWFRvUD1mdW5jdGlvbihhZSl7dmFyIFk9YWUudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh0aGlzLnopO2lmKDA9PT10aGlzLnguY21wKFkpKXJldHVybiEwO2Zvcih2YXIgVz1hZS5jbG9uZSgpLE49dGhpcy5jdXJ2''@;'; put 'put ''ZS5yZWROLnJlZE11bCh0aGlzLnopOzspe2lmKFcuaWFkZCh0aGlzLmN1cnZlLm4pLFcuY21wKHRoaXMuY3VydmUucCk+PTApcmV0dXJuITE7aWYoWS5yZWRJQWRkKE4pLDA9PT10aGlzLnguY21wKFkpKXJldHVybiEwfX0sai5wcm90b3R5cGUudG9QPWoucHJvdG90eXBlLm5vcm1hbGl6ZSxq''@;'; put 'put ''LnByb3RvdHlwZS5taXhlZEFkZD1qLnByb3RvdHlwZS5hZGR9LDQ2MjcwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9SmU7bWUuYmFzZT1MKDk3OTAyKSxtZS5zaG9ydD1MKDQxNzgxKSxtZS5tb250PUwoOTcwNjQpLG1lLmVkd2FyZHM9TCgxMzgzNSl9LDk3MDY0OihYZSxKZSxM''@;'; put 'put ''KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgxNzQzMyksQj1MKDgzODk0KSxFPUwoOTc5MDIpLEVlPUwoNjE5NzApO2Z1bmN0aW9uIFUoail7RS5jYWxsKHRoaXMsIm1vbnQiLGopLHRoaXMuYT1uZXcgbWUoai5hLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5iPW5ldyBtZShqLmIsMTYpLnRv''@;'; put 'put ''UmVkKHRoaXMucmVkKSx0aGlzLmk0PW5ldyBtZSg0KS50b1JlZCh0aGlzLnJlZCkucmVkSW52bSgpLHRoaXMudHdvPW5ldyBtZSgyKS50b1JlZCh0aGlzLnJlZCksdGhpcy5hMjQ9dGhpcy5pNC5yZWRNdWwodGhpcy5hLnJlZEFkZCh0aGlzLnR3bykpfWZ1bmN0aW9uIFEoaixyZSxhZSl7RS5C''@;'; put 'put ''YXNlUG9pbnQuY2FsbCh0aGlzLGosInByb2plY3RpdmUiKSxudWxsPT09cmUmJm51bGw9PT1hZT8odGhpcy54PXRoaXMuY3VydmUub25lLHRoaXMuej10aGlzLmN1cnZlLnplcm8pOih0aGlzLng9bmV3IG1lKHJlLDE2KSx0aGlzLno9bmV3IG1lKGFlLDE2KSx0aGlzLngucmVkfHwodGhpcy54''@;'; put 'put ''PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuei5yZWR8fCh0aGlzLno9dGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKSkpfUIoVSxFKSxYZS5leHBvcnRzPVUsVS5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24ocmUpe3ZhciBhZT1yZS5ub3JtYWxpemUoKS54LFk9YWUu''@;'; put 'put ''cmVkU3FyKCksVz1ZLnJlZE11bChhZSkucmVkQWRkKFkucmVkTXVsKHRoaXMuYSkpLnJlZEFkZChhZSk7cmV0dXJuIDA9PT1XLnJlZFNxcnQoKS5yZWRTcXIoKS5jbXAoVyl9LEIoUSxFLkJhc2VQb2ludCksVS5wcm90b3R5cGUuZGVjb2RlUG9pbnQ9ZnVuY3Rpb24ocmUsYWUpe3JldHVybiB0''@;'; put 'put ''aGlzLnBvaW50KEVlLnRvQXJyYXkocmUsYWUpLDEpfSxVLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbihyZSxhZSl7cmV0dXJuIG5ldyBRKHRoaXMscmUsYWUpfSxVLnByb3RvdHlwZS5wb2ludEZyb21KU09OPWZ1bmN0aW9uKHJlKXtyZXR1cm4gUS5mcm9tSlNPTih0aGlzLHJlKX0sUS5wcm90''@;'; put 'put ''b3R5cGUucHJlY29tcHV0ZT1mdW5jdGlvbigpe30sUS5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFgoKS50b0FycmF5KCJiZSIsdGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKSl9LFEuZnJvbUpTT049ZnVuY3Rpb24ocmUsYWUpe3JldHVybiBuZXcgUShyZSxh''@;'; put 'put ''ZVswXSxhZVsxXXx8cmUub25lKX0sUS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT8iPEVDIFBvaW50IEluZmluaXR5PiI6IjxFQyBQb2ludCB4OiAiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIiB6OiAiK3RoaXMuei5mcm9t''@;'; put 'put ''UmVkKCkudG9TdHJpbmcoMTYsMikrIj4ifSxRLnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnouY21wbigwKX0sUS5wcm90b3R5cGUuZGJsPWZ1bmN0aW9uKCl7dmFyIGFlPXRoaXMueC5yZWRBZGQodGhpcy56KS5yZWRTcXIoKSxXPXRoaXMueC5yZWRT''@;'; put 'put ''dWIodGhpcy56KS5yZWRTcXIoKSxOPWFlLnJlZFN1YihXKSx0ZT1hZS5yZWRNdWwoVyksSz1OLnJlZE11bChXLnJlZEFkZCh0aGlzLmN1cnZlLmEyNC5yZWRNdWwoTikpKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludCh0ZSxLKX0sUS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKCl7dGhyb3cgbmV3''@;'; put 'put ''IEVycm9yKCJOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUiKX0sUS5wcm90b3R5cGUuZGlmZkFkZD1mdW5jdGlvbihyZSxhZSl7dmFyIFk9dGhpcy54LnJlZEFkZCh0aGlzLnopLFc9dGhpcy54LnJlZFN1Yih0aGlzLnopLE49cmUueC5yZWRBZGQocmUueiksSz1yZS54LnJlZFN1''@;'; put 'put ''YihyZS56KS5yZWRNdWwoWSksSj1OLnJlZE11bChXKSxzZT1hZS56LnJlZE11bChLLnJlZEFkZChKKS5yZWRTcXIoKSksb2U9YWUueC5yZWRNdWwoSy5yZWRJU3ViKEopLnJlZFNxcigpKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChzZSxvZSl9LFEucHJvdG90eXBlLm11bD1mdW5jdGlvbihy''@;'; put 'put ''ZSl7Zm9yKHZhciBhZT1yZS5jbG9uZSgpLFk9dGhpcyxXPXRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKSx0ZT1bXTswIT09YWUuY21wbigwKTthZS5pdXNocm4oMSkpdGUucHVzaChhZS5hbmRsbigxKSk7Zm9yKHZhciBLPXRlLmxlbmd0aC0xO0s+PTA7Sy0tKTA9PT10ZVtLXT8oWT1ZLmRp''@;'; put 'put ''ZmZBZGQoVyx0aGlzKSxXPVcuZGJsKCkpOihXPVkuZGlmZkFkZChXLHRoaXMpLFk9WS5kYmwoKSk7cmV0dXJuIFd9LFEucHJvdG90eXBlLm11bEFkZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm90IHN1cHBvcnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlIil9LFEucHJvdG90eXBlLmp1''@;'; put 'put ''bWxBZGQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZSIpfSxRLnByb3RvdHlwZS5lcT1mdW5jdGlvbihyZSl7cmV0dXJuIDA9PT10aGlzLmdldFgoKS5jbXAocmUuZ2V0WCgpKX0sUS5wcm90b3R5cGUubm9ybWFsaXplPWZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIHRoaXMueD10aGlzLngucmVkTXVsKHRoaXMuei5yZWRJbnZtKCkpLHRoaXMuej10aGlzLmN1cnZlLm9uZSx0aGlzfSxRLnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCksdGhpcy54LmZyb21SZWQoKX19LDQxNzgxOihYZSxKZSxM''@;'; put 'put ''KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg2MTk3MCksQj1MKDE3NDMzKSxFPUwoODM4OTQpLEVlPUwoOTc5MDIpLFU9bWUuYXNzZXJ0O2Z1bmN0aW9uIFEoYWUpe0VlLmNhbGwodGhpcywic2hvcnQiLGFlKSx0aGlzLmE9bmV3IEIoYWUuYSwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuYj1u''@;'; put 'put ''ZXcgQihhZS5iLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy50aW52PXRoaXMudHdvLnJlZEludm0oKSx0aGlzLnplcm9BPTA9PT10aGlzLmEuZnJvbVJlZCgpLmNtcG4oMCksdGhpcy50aHJlZUE9MD09PXRoaXMuYS5mcm9tUmVkKCkuc3ViKHRoaXMucCkuY21wbigtMyksdGhpcy5lbmRvPXRo''@;'; put 'put ''aXMuX2dldEVuZG9tb3JwaGlzbShhZSksdGhpcy5fZW5kb1duYWZUMT1uZXcgQXJyYXkoNCksdGhpcy5fZW5kb1duYWZUMj1uZXcgQXJyYXkoNCl9ZnVuY3Rpb24gaihhZSxZLFcsTil7RWUuQmFzZVBvaW50LmNhbGwodGhpcyxhZSwiYWZmaW5lIiksbnVsbD09PVkmJm51bGw9PT1XPyh0aGlz''@;'; put 'put ''Lng9bnVsbCx0aGlzLnk9bnVsbCx0aGlzLmluZj0hMCk6KHRoaXMueD1uZXcgQihZLDE2KSx0aGlzLnk9bmV3IEIoVywxNiksTiYmKHRoaXMueC5mb3JjZVJlZCh0aGlzLmN1cnZlLnJlZCksdGhpcy55LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy54LnJlZHx8KHRoaXMueD10aGlz''@;'; put 'put ''LngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnkucmVkfHwodGhpcy55PXRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuaW5mPSExKX1mdW5jdGlvbiByZShhZSxZLFcsTil7RWUuQmFzZVBvaW50LmNhbGwodGhpcyxhZSwiamFjb2JpYW4iKSxudWxsPT09WSYmbnVsbD09''@;'; put 'put ''PVcmJm51bGw9PT1OPyh0aGlzLng9dGhpcy5jdXJ2ZS5vbmUsdGhpcy55PXRoaXMuY3VydmUub25lLHRoaXMuej1uZXcgQigwKSk6KHRoaXMueD1uZXcgQihZLDE2KSx0aGlzLnk9bmV3IEIoVywxNiksdGhpcy56PW5ldyBCKE4sMTYpKSx0aGlzLngucmVkfHwodGhpcy54PXRoaXMueC50b1Jl''@;'; put 'put ''ZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMueS5yZWR8fCh0aGlzLnk9dGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56LnJlZHx8KHRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnpPbmU9dGhpcy56PT09dGhpcy5jdXJ2ZS5vbmV9RShRLEVlKSxYZS5l''@;'; put 'put ''eHBvcnRzPVEsUS5wcm90b3R5cGUuX2dldEVuZG9tb3JwaGlzbT1mdW5jdGlvbihZKXtpZih0aGlzLnplcm9BJiZ0aGlzLmcmJnRoaXMubiYmMT09PXRoaXMucC5tb2RuKDMpKXt2YXIgVyxOO2lmKFkuYmV0YSlXPW5ldyBCKFkuYmV0YSwxNikudG9SZWQodGhpcy5yZWQpO2Vsc2V7dmFyIHRl''@;'; put 'put ''PXRoaXMuX2dldEVuZG9Sb290cyh0aGlzLnApO1c9KFc9dGVbMF0uY21wKHRlWzFdKTwwP3RlWzBdOnRlWzFdKS50b1JlZCh0aGlzLnJlZCl9aWYoWS5sYW1iZGEpTj1uZXcgQihZLmxhbWJkYSwxNik7ZWxzZXt2YXIgSz10aGlzLl9nZXRFbmRvUm9vdHModGhpcy5uKTswPT09dGhpcy5nLm11''@;'; put 'put ''bChLWzBdKS54LmNtcCh0aGlzLmcueC5yZWRNdWwoVykpP049S1swXTpVKDA9PT10aGlzLmcubXVsKE49S1sxXSkueC5jbXAodGhpcy5nLngucmVkTXVsKFcpKSl9cmV0dXJue2JldGE6VyxsYW1iZGE6TixiYXNpczpZLmJhc2lzP1kuYmFzaXMubWFwKGZ1bmN0aW9uKHNlKXtyZXR1cm57YTpu''@;'; put 'put ''ZXcgQihzZS5hLDE2KSxiOm5ldyBCKHNlLmIsMTYpfX0pOnRoaXMuX2dldEVuZG9CYXNpcyhOKX19fSxRLnByb3RvdHlwZS5fZ2V0RW5kb1Jvb3RzPWZ1bmN0aW9uKFkpe3ZhciBXPVk9PT10aGlzLnA/dGhpcy5yZWQ6Qi5tb250KFkpLE49bmV3IEIoMikudG9SZWQoVykucmVkSW52bSgpLHRl''@;'; put 'put ''PU4ucmVkTmVnKCksSz1uZXcgQigzKS50b1JlZChXKS5yZWROZWcoKS5yZWRTcXJ0KCkucmVkTXVsKE4pO3JldHVyblt0ZS5yZWRBZGQoSykuZnJvbVJlZCgpLHRlLnJlZFN1YihLKS5mcm9tUmVkKCldfSxRLnByb3RvdHlwZS5fZ2V0RW5kb0Jhc2lzPWZ1bmN0aW9uKFkpe2Zvcih2YXIgY2Us''@;'; put 'put ''ZGUsdmUsQWUsa2UsU2UsSWUsTWUsaGUsVz10aGlzLm4udXNocm4oTWF0aC5mbG9vcih0aGlzLm4uYml0TGVuZ3RoKCkvMikpLE49WSx0ZT10aGlzLm4uY2xvbmUoKSxLPW5ldyBCKDEpLEo9bmV3IEIoMCksc2U9bmV3IEIoMCksb2U9bmV3IEIoMSksVGU9MDswIT09Ti5jbXBuKDApOyl7dmFy''@;'; put 'put ''IE89dGUuZGl2KE4pO01lPXRlLnN1YihPLm11bChOKSksaGU9c2Uuc3ViKE8ubXVsKEspKTt2YXIgej1vZS5zdWIoTy5tdWwoSikpO2lmKCF2ZSYmTWUuY21wKFcpPDApY2U9SWUubmVnKCksZGU9Syx2ZT1NZS5uZWcoKSxBZT1oZTtlbHNlIGlmKHZlJiYyPT0rK1RlKWJyZWFrO0llPU1lLHRl''@;'; put 'put ''PU4sTj1NZSxzZT1LLEs9aGUsb2U9SixKPXp9a2U9TWUubmVnKCksU2U9aGU7dmFyIGVlPXZlLnNxcigpLmFkZChBZS5zcXIoKSk7cmV0dXJuIGtlLnNxcigpLmFkZChTZS5zcXIoKSkuY21wKGVlKT49MCYmKGtlPWNlLFNlPWRlKSx2ZS5uZWdhdGl2ZSYmKHZlPXZlLm5lZygpLEFlPUFlLm5l''@;'; put 'put ''ZygpKSxrZS5uZWdhdGl2ZSYmKGtlPWtlLm5lZygpLFNlPVNlLm5lZygpKSxbe2E6dmUsYjpBZX0se2E6a2UsYjpTZX1dfSxRLnByb3RvdHlwZS5fZW5kb1NwbGl0PWZ1bmN0aW9uKFkpe3ZhciBXPXRoaXMuZW5kby5iYXNpcyxOPVdbMF0sdGU9V1sxXSxLPXRlLmIubXVsKFkpLmRpdlJvdW5k''@;'; put 'put ''KHRoaXMubiksSj1OLmIubmVnKCkubXVsKFkpLmRpdlJvdW5kKHRoaXMubiksc2U9Sy5tdWwoTi5hKSxvZT1KLm11bCh0ZS5hKSxjZT1LLm11bChOLmIpLGRlPUoubXVsKHRlLmIpO3JldHVybntrMTpZLnN1YihzZSkuc3ViKG9lKSxrMjpjZS5hZGQoZGUpLm5lZygpfX0sUS5wcm90b3R5cGUu''@;'; put 'put ''cG9pbnRGcm9tWD1mdW5jdGlvbihZLFcpeyhZPW5ldyBCKFksMTYpKS5yZWR8fChZPVkudG9SZWQodGhpcy5yZWQpKTt2YXIgTj1ZLnJlZFNxcigpLnJlZE11bChZKS5yZWRJQWRkKFkucmVkTXVsKHRoaXMuYSkpLnJlZElBZGQodGhpcy5iKSx0ZT1OLnJlZFNxcnQoKTtpZigwIT09dGUucmVk''@;'; put 'put ''U3FyKCkucmVkU3ViKE4pLmNtcCh0aGlzLnplcm8pKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2ludCIpO3ZhciBLPXRlLmZyb21SZWQoKS5pc09kZCgpO3JldHVybihXJiYhS3x8IVcmJkspJiYodGU9dGUucmVkTmVnKCkpLHRoaXMucG9pbnQoWSx0ZSl9LFEucHJvdG90eXBlLnZhbGlk''@;'; put 'put ''YXRlPWZ1bmN0aW9uKFkpe2lmKFkuaW5mKXJldHVybiEwO3ZhciBXPVkueCxOPVkueSx0ZT10aGlzLmEucmVkTXVsKFcpLEs9Vy5yZWRTcXIoKS5yZWRNdWwoVykucmVkSUFkZCh0ZSkucmVkSUFkZCh0aGlzLmIpO3JldHVybiAwPT09Ti5yZWRTcXIoKS5yZWRJU3ViKEspLmNtcG4oMCl9LFEu''@;'; put 'put ''cHJvdG90eXBlLl9lbmRvV25hZk11bEFkZD1mdW5jdGlvbihZLFcsTil7Zm9yKHZhciB0ZT10aGlzLl9lbmRvV25hZlQxLEs9dGhpcy5fZW5kb1duYWZUMixKPTA7SjxZLmxlbmd0aDtKKyspe3ZhciBzZT10aGlzLl9lbmRvU3BsaXQoV1tKXSksb2U9WVtKXSxjZT1vZS5fZ2V0QmV0YSgpO3Nl''@;'; put 'put ''LmsxLm5lZ2F0aXZlJiYoc2UuazEuaW5lZygpLG9lPW9lLm5lZyghMCkpLHNlLmsyLm5lZ2F0aXZlJiYoc2UuazIuaW5lZygpLGNlPWNlLm5lZyghMCkpLHRlWzIqSl09b2UsdGVbMipKKzFdPWNlLEtbMipKXT1zZS5rMSxLWzIqSisxXT1zZS5rMn1mb3IodmFyIGRlPXRoaXMuX3duYWZNdWxB''@;'; put 'put ''ZGQoMSx0ZSxLLDIqSixOKSx2ZT0wO3ZlPDIqSjt2ZSsrKXRlW3ZlXT1udWxsLEtbdmVdPW51bGw7cmV0dXJuIGRlfSxFKGosRWUuQmFzZVBvaW50KSxRLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbihZLFcsTil7cmV0dXJuIG5ldyBqKHRoaXMsWSxXLE4pfSxRLnByb3RvdHlwZS5wb2ludEZy''@;'; put 'put ''b21KU09OPWZ1bmN0aW9uKFksVyl7cmV0dXJuIGouZnJvbUpTT04odGhpcyxZLFcpfSxqLnByb3RvdHlwZS5fZ2V0QmV0YT1mdW5jdGlvbigpe2lmKHRoaXMuY3VydmUuZW5kbyl7dmFyIFk9dGhpcy5wcmVjb21wdXRlZDtpZihZJiZZLmJldGEpcmV0dXJuIFkuYmV0YTt2YXIgVz10aGlzLmN1''@;'; put 'put ''cnZlLnBvaW50KHRoaXMueC5yZWRNdWwodGhpcy5jdXJ2ZS5lbmRvLmJldGEpLHRoaXMueSk7aWYoWSl7dmFyIE49dGhpcy5jdXJ2ZSx0ZT1mdW5jdGlvbihLKXtyZXR1cm4gTi5wb2ludChLLngucmVkTXVsKE4uZW5kby5iZXRhKSxLLnkpfTtZLmJldGE9VyxXLnByZWNvbXB1dGVkPXtiZXRh''@;'; put 'put ''Om51bGwsbmFmOlkubmFmJiZ7d25kOlkubmFmLnduZCxwb2ludHM6WS5uYWYucG9pbnRzLm1hcCh0ZSl9LGRvdWJsZXM6WS5kb3VibGVzJiZ7c3RlcDpZLmRvdWJsZXMuc3RlcCxwb2ludHM6WS5kb3VibGVzLnBvaW50cy5tYXAodGUpfX19cmV0dXJuIFd9fSxqLnByb3RvdHlwZS50b0pTT049''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmVjb21wdXRlZD9bdGhpcy54LHRoaXMueSx0aGlzLnByZWNvbXB1dGVkJiZ7ZG91Ymxlczp0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMmJntzdGVwOnRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5zdGVwLHBvaW50czp0aGlzLnByZWNvbXB1dGVkLmRv''@;'; put 'put ''dWJsZXMucG9pbnRzLnNsaWNlKDEpfSxuYWY6dGhpcy5wcmVjb21wdXRlZC5uYWYmJnt3bmQ6dGhpcy5wcmVjb21wdXRlZC5uYWYud25kLHBvaW50czp0aGlzLnByZWNvbXB1dGVkLm5hZi5wb2ludHMuc2xpY2UoMSl9fV06W3RoaXMueCx0aGlzLnldfSxqLmZyb21KU09OPWZ1bmN0aW9uKFks''@;'; put 'put ''VyxOKXsic3RyaW5nIj09dHlwZW9mIFcmJihXPUpTT04ucGFyc2UoVykpO3ZhciB0ZT1ZLnBvaW50KFdbMF0sV1sxXSxOKTtpZighV1syXSlyZXR1cm4gdGU7ZnVuY3Rpb24gSyhzZSl7cmV0dXJuIFkucG9pbnQoc2VbMF0sc2VbMV0sTil9dmFyIEo9V1syXTtyZXR1cm4gdGUucHJlY29tcHV0''@;'; put 'put ''ZWQ9e2JldGE6bnVsbCxkb3VibGVzOkouZG91YmxlcyYme3N0ZXA6Si5kb3VibGVzLnN0ZXAscG9pbnRzOlt0ZV0uY29uY2F0KEouZG91Ymxlcy5wb2ludHMubWFwKEspKX0sbmFmOkoubmFmJiZ7d25kOkoubmFmLnduZCxwb2ludHM6W3RlXS5jb25jYXQoSi5uYWYucG9pbnRzLm1hcChLKSl9''@;'; put 'put ''fSx0ZX0sai5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT8iPEVDIFBvaW50IEluZmluaXR5PiI6IjxFQyBQb2ludCB4OiAiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIiB5OiAiK3RoaXMueS5mcm9tUmVkKCkudG9TdHJpbmco''@;'; put 'put ''MTYsMikrIj4ifSxqLnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5mfSxqLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oWSl7aWYodGhpcy5pbmYpcmV0dXJuIFk7aWYoWS5pbmYpcmV0dXJuIHRoaXM7aWYodGhpcy5lcShZKSlyZXR1cm4gdGhpcy5kYmwoKTtp''@;'; put 'put ''Zih0aGlzLm5lZygpLmVxKFkpKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7aWYoMD09PXRoaXMueC5jbXAoWS54KSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO3ZhciBXPXRoaXMueS5yZWRTdWIoWS55KTswIT09Vy5jbXBuKDApJiYoVz1XLnJlZE11bCh0''@;'; put 'put ''aGlzLngucmVkU3ViKFkueCkucmVkSW52bSgpKSk7dmFyIE49Vy5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueCkucmVkSVN1YihZLngpLHRlPVcucmVkTXVsKHRoaXMueC5yZWRTdWIoTikpLnJlZElTdWIodGhpcy55KTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChOLHRlKX0sai5wcm90b3R5cGUu''@;'; put 'put ''ZGJsPWZ1bmN0aW9uKCl7aWYodGhpcy5pbmYpcmV0dXJuIHRoaXM7dmFyIFk9dGhpcy55LnJlZEFkZCh0aGlzLnkpO2lmKDA9PT1ZLmNtcG4oMCkpcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTt2YXIgVz10aGlzLmN1cnZlLmEsTj10aGlzLngucmVkU3FyKCksdGU9WS5yZWRJ''@;'; put 'put ''bnZtKCksSz1OLnJlZEFkZChOKS5yZWRJQWRkKE4pLnJlZElBZGQoVykucmVkTXVsKHRlKSxKPUsucmVkU3FyKCkucmVkSVN1Yih0aGlzLngucmVkQWRkKHRoaXMueCkpLHNlPUsucmVkTXVsKHRoaXMueC5yZWRTdWIoSikpLnJlZElTdWIodGhpcy55KTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2lu''@;'; put 'put ''dChKLHNlKX0sai5wcm90b3R5cGUuZ2V0WD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnguZnJvbVJlZCgpfSxqLnByb3RvdHlwZS5nZXRZPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueS5mcm9tUmVkKCl9LGoucHJvdG90eXBlLm11bD1mdW5jdGlvbihZKXtyZXR1cm4gWT1uZXcgQihZLDE2KSx0''@;'; put 'put ''aGlzLmlzSW5maW5pdHkoKT90aGlzOnRoaXMuX2hhc0RvdWJsZXMoWSk/dGhpcy5jdXJ2ZS5fZml4ZWROYWZNdWwodGhpcyxZKTp0aGlzLmN1cnZlLmVuZG8/dGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQoW3RoaXNdLFtZXSk6dGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLFkpfSxqLnByb3Rv''@;'; put 'put ''dHlwZS5tdWxBZGQ9ZnVuY3Rpb24oWSxXLE4pe3ZhciB0ZT1bdGhpcyxXXSxLPVtZLE5dO3JldHVybiB0aGlzLmN1cnZlLmVuZG8/dGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQodGUsSyk6dGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLHRlLEssMil9LGoucHJvdG90eXBlLmptdWxBZGQ9ZnVu''@;'; put 'put ''Y3Rpb24oWSxXLE4pe3ZhciB0ZT1bdGhpcyxXXSxLPVtZLE5dO3JldHVybiB0aGlzLmN1cnZlLmVuZG8/dGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQodGUsSywhMCk6dGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLHRlLEssMiwhMCl9LGoucHJvdG90eXBlLmVxPWZ1bmN0aW9uKFkpe3JldHVy''@;'; put 'put ''biB0aGlzPT09WXx8dGhpcy5pbmY9PT1ZLmluZiYmKHRoaXMuaW5mfHwwPT09dGhpcy54LmNtcChZLngpJiYwPT09dGhpcy55LmNtcChZLnkpKX0sai5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKFkpe2lmKHRoaXMuaW5mKXJldHVybiB0aGlzO3ZhciBXPXRoaXMuY3VydmUucG9pbnQodGhpcy54''@;'; put 'put ''LHRoaXMueS5yZWROZWcoKSk7aWYoWSYmdGhpcy5wcmVjb21wdXRlZCl7dmFyIE49dGhpcy5wcmVjb21wdXRlZCx0ZT1mdW5jdGlvbihLKXtyZXR1cm4gSy5uZWcoKX07Vy5wcmVjb21wdXRlZD17bmFmOk4ubmFmJiZ7d25kOk4ubmFmLnduZCxwb2ludHM6Ti5uYWYucG9pbnRzLm1hcCh0ZSl9''@;'; put 'put ''LGRvdWJsZXM6Ti5kb3VibGVzJiZ7c3RlcDpOLmRvdWJsZXMuc3RlcCxwb2ludHM6Ti5kb3VibGVzLnBvaW50cy5tYXAodGUpfX19cmV0dXJuIFd9LGoucHJvdG90eXBlLnRvSj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmluZj90aGlzLmN1cnZlLmpwb2ludChudWxsLG51bGwsbnVsbCk6dGhp''@;'; put 'put ''cy5jdXJ2ZS5qcG9pbnQodGhpcy54LHRoaXMueSx0aGlzLmN1cnZlLm9uZSl9LEUocmUsRWUuQmFzZVBvaW50KSxRLnByb3RvdHlwZS5qcG9pbnQ9ZnVuY3Rpb24oWSxXLE4pe3JldHVybiBuZXcgcmUodGhpcyxZLFcsTil9LHJlLnByb3RvdHlwZS50b1A9ZnVuY3Rpb24oKXtpZih0aGlzLmlz''@;'; put 'put ''SW5maW5pdHkoKSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO3ZhciBZPXRoaXMuei5yZWRJbnZtKCksVz1ZLnJlZFNxcigpLE49dGhpcy54LnJlZE11bChXKSx0ZT10aGlzLnkucmVkTXVsKFcpLnJlZE11bChZKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChOLHRlKX0scmUu''@;'; put 'put ''cHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsdGhpcy55LnJlZE5lZygpLHRoaXMueil9LHJlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oWSl7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIFk7aWYoWS5pc0luZmluaXR5KCkpcmV0dXJu''@;'; put 'put ''IHRoaXM7dmFyIFc9WS56LnJlZFNxcigpLE49dGhpcy56LnJlZFNxcigpLHRlPXRoaXMueC5yZWRNdWwoVyksSz1ZLngucmVkTXVsKE4pLEo9dGhpcy55LnJlZE11bChXLnJlZE11bChZLnopKSxzZT1ZLnkucmVkTXVsKE4ucmVkTXVsKHRoaXMueikpLG9lPXRlLnJlZFN1YihLKSxjZT1KLnJl''@;'; put 'put ''ZFN1YihzZSk7aWYoMD09PW9lLmNtcG4oMCkpcmV0dXJuIDAhPT1jZS5jbXBuKDApP3RoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmRibCgpO3ZhciBkZT1vZS5yZWRTcXIoKSx2ZT1kZS5yZWRNdWwob2UpLEFlPXRlLnJlZE11bChkZSksa2U9Y2UucmVkU3FyKCkucmVk''@;'; put 'put ''SUFkZCh2ZSkucmVkSVN1YihBZSkucmVkSVN1YihBZSksU2U9Y2UucmVkTXVsKEFlLnJlZElTdWIoa2UpKS5yZWRJU3ViKEoucmVkTXVsKHZlKSksSWU9dGhpcy56LnJlZE11bChZLnopLnJlZE11bChvZSk7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KGtlLFNlLEllKX0scmUucHJvdG90eXBl''@;'; put 'put ''Lm1peGVkQWRkPWZ1bmN0aW9uKFkpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiBZLnRvSigpO2lmKFkuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzO3ZhciBXPXRoaXMuei5yZWRTcXIoKSxOPXRoaXMueCx0ZT1ZLngucmVkTXVsKFcpLEs9dGhpcy55LEo9WS55LnJlZE11bChXKS5yZWRN''@;'; put 'put ''dWwodGhpcy56KSxzZT1OLnJlZFN1Yih0ZSksb2U9Sy5yZWRTdWIoSik7aWYoMD09PXNlLmNtcG4oMCkpcmV0dXJuIDAhPT1vZS5jbXBuKDApP3RoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmRibCgpO3ZhciBjZT1zZS5yZWRTcXIoKSxkZT1jZS5yZWRNdWwoc2UpLHZl''@;'; put 'put ''PU4ucmVkTXVsKGNlKSxBZT1vZS5yZWRTcXIoKS5yZWRJQWRkKGRlKS5yZWRJU3ViKHZlKS5yZWRJU3ViKHZlKSxrZT1vZS5yZWRNdWwodmUucmVkSVN1YihBZSkpLnJlZElTdWIoSy5yZWRNdWwoZGUpKSxTZT10aGlzLnoucmVkTXVsKHNlKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoQWUs''@;'; put 'put ''a2UsU2UpfSxyZS5wcm90b3R5cGUuZGJscD1mdW5jdGlvbihZKXtpZigwPT09WSlyZXR1cm4gdGhpcztpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpcztpZighWSlyZXR1cm4gdGhpcy5kYmwoKTt2YXIgVztpZih0aGlzLmN1cnZlLnplcm9BfHx0aGlzLmN1cnZlLnRocmVlQSl7dmFy''@;'; put 'put ''IE49dGhpcztmb3IoVz0wO1c8WTtXKyspTj1OLmRibCgpO3JldHVybiBOfXZhciB0ZT10aGlzLmN1cnZlLmEsSz10aGlzLmN1cnZlLnRpbnYsSj10aGlzLngsc2U9dGhpcy55LG9lPXRoaXMueixjZT1vZS5yZWRTcXIoKS5yZWRTcXIoKSxkZT1zZS5yZWRBZGQoc2UpO2ZvcihXPTA7VzxZO1cr''@;'; put 'put ''Kyl7dmFyIHZlPUoucmVkU3FyKCksQWU9ZGUucmVkU3FyKCksa2U9QWUucmVkU3FyKCksU2U9dmUucmVkQWRkKHZlKS5yZWRJQWRkKHZlKS5yZWRJQWRkKHRlLnJlZE11bChjZSkpLEllPUoucmVkTXVsKEFlKSxUZT1TZS5yZWRTcXIoKS5yZWRJU3ViKEllLnJlZEFkZChJZSkpLE1lPUllLnJl''@;'; put 'put ''ZElTdWIoVGUpLGhlPVNlLnJlZE11bChNZSk7aGU9aGUucmVkSUFkZChoZSkucmVkSVN1YihrZSk7dmFyIE89ZGUucmVkTXVsKG9lKTtXKzE8WSYmKGNlPWNlLnJlZE11bChrZSkpLEo9VGUsb2U9TyxkZT1oZX1yZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoSixkZS5yZWRNdWwoSyksb2UpfSxy''@;'; put 'put ''ZS5wcm90b3R5cGUuZGJsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5jdXJ2ZS56ZXJvQT90aGlzLl96ZXJvRGJsKCk6dGhpcy5jdXJ2ZS50aHJlZUE/dGhpcy5fdGhyZWVEYmwoKTp0aGlzLl9kYmwoKX0scmUucHJvdG90eXBlLl96ZXJvRGJsPWZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIFksVyxOO2lmKHRoaXMuek9uZSl7dmFyIHRlPXRoaXMueC5yZWRTcXIoKSxLPXRoaXMueS5yZWRTcXIoKSxKPUsucmVkU3FyKCksc2U9dGhpcy54LnJlZEFkZChLKS5yZWRTcXIoKS5yZWRJU3ViKHRlKS5yZWRJU3ViKEopO3NlPXNlLnJlZElBZGQoc2UpO3ZhciBvZT10ZS5y''@;'; put 'put ''ZWRBZGQodGUpLnJlZElBZGQodGUpLGNlPW9lLnJlZFNxcigpLnJlZElTdWIoc2UpLnJlZElTdWIoc2UpLGRlPUoucmVkSUFkZChKKTtkZT0oZGU9ZGUucmVkSUFkZChkZSkpLnJlZElBZGQoZGUpLFk9Y2UsVz1vZS5yZWRNdWwoc2UucmVkSVN1YihjZSkpLnJlZElTdWIoZGUpLE49dGhpcy55''@;'; put 'put ''LnJlZEFkZCh0aGlzLnkpfWVsc2V7dmFyIHZlPXRoaXMueC5yZWRTcXIoKSxBZT10aGlzLnkucmVkU3FyKCksa2U9QWUucmVkU3FyKCksU2U9dGhpcy54LnJlZEFkZChBZSkucmVkU3FyKCkucmVkSVN1Yih2ZSkucmVkSVN1YihrZSk7U2U9U2UucmVkSUFkZChTZSk7dmFyIEllPXZlLnJlZEFk''@;'; put 'put ''ZCh2ZSkucmVkSUFkZCh2ZSksVGU9SWUucmVkU3FyKCksTWU9a2UucmVkSUFkZChrZSk7TWU9KE1lPU1lLnJlZElBZGQoTWUpKS5yZWRJQWRkKE1lKSxZPVRlLnJlZElTdWIoU2UpLnJlZElTdWIoU2UpLFc9SWUucmVkTXVsKFNlLnJlZElTdWIoWSkpLnJlZElTdWIoTWUpLE49KE49dGhpcy55''@;'; put 'put ''LnJlZE11bCh0aGlzLnopKS5yZWRJQWRkKE4pfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChZLFcsTil9LHJlLnByb3RvdHlwZS5fdGhyZWVEYmw9ZnVuY3Rpb24oKXt2YXIgWSxXLE47aWYodGhpcy56T25lKXt2YXIgdGU9dGhpcy54LnJlZFNxcigpLEs9dGhpcy55LnJlZFNxcigpLEo9Sy5y''@;'; put 'put ''ZWRTcXIoKSxzZT10aGlzLngucmVkQWRkKEspLnJlZFNxcigpLnJlZElTdWIodGUpLnJlZElTdWIoSik7c2U9c2UucmVkSUFkZChzZSk7dmFyIG9lPXRlLnJlZEFkZCh0ZSkucmVkSUFkZCh0ZSkucmVkSUFkZCh0aGlzLmN1cnZlLmEpLGNlPW9lLnJlZFNxcigpLnJlZElTdWIoc2UpLnJlZElT''@;'; put 'put ''dWIoc2UpO1k9Y2U7dmFyIGRlPUoucmVkSUFkZChKKTtkZT0oZGU9ZGUucmVkSUFkZChkZSkpLnJlZElBZGQoZGUpLFc9b2UucmVkTXVsKHNlLnJlZElTdWIoY2UpKS5yZWRJU3ViKGRlKSxOPXRoaXMueS5yZWRBZGQodGhpcy55KX1lbHNle3ZhciB2ZT10aGlzLnoucmVkU3FyKCksQWU9dGhp''@;'; put 'put ''cy55LnJlZFNxcigpLGtlPXRoaXMueC5yZWRNdWwoQWUpLFNlPXRoaXMueC5yZWRTdWIodmUpLnJlZE11bCh0aGlzLngucmVkQWRkKHZlKSk7U2U9U2UucmVkQWRkKFNlKS5yZWRJQWRkKFNlKTt2YXIgSWU9a2UucmVkSUFkZChrZSksVGU9KEllPUllLnJlZElBZGQoSWUpKS5yZWRBZGQoSWUp''@;'; put 'put ''O1k9U2UucmVkU3FyKCkucmVkSVN1YihUZSksTj10aGlzLnkucmVkQWRkKHRoaXMueikucmVkU3FyKCkucmVkSVN1YihBZSkucmVkSVN1Yih2ZSk7dmFyIE1lPUFlLnJlZFNxcigpO01lPShNZT0oTWU9TWUucmVkSUFkZChNZSkpLnJlZElBZGQoTWUpKS5yZWRJQWRkKE1lKSxXPVNlLnJlZE11''@;'; put 'put ''bChJZS5yZWRJU3ViKFkpKS5yZWRJU3ViKE1lKX1yZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoWSxXLE4pfSxyZS5wcm90b3R5cGUuX2RibD1mdW5jdGlvbigpe3ZhciBZPXRoaXMuY3VydmUuYSxXPXRoaXMueCxOPXRoaXMueSx0ZT10aGlzLnosSz10ZS5yZWRTcXIoKS5yZWRTcXIoKSxKPVcu''@;'; put 'put ''cmVkU3FyKCksc2U9Ti5yZWRTcXIoKSxvZT1KLnJlZEFkZChKKS5yZWRJQWRkKEopLnJlZElBZGQoWS5yZWRNdWwoSykpLGNlPVcucmVkQWRkKFcpLGRlPShjZT1jZS5yZWRJQWRkKGNlKSkucmVkTXVsKHNlKSx2ZT1vZS5yZWRTcXIoKS5yZWRJU3ViKGRlLnJlZEFkZChkZSkpLEFlPWRlLnJl''@;'; put 'put ''ZElTdWIodmUpLGtlPXNlLnJlZFNxcigpO2tlPShrZT0oa2U9a2UucmVkSUFkZChrZSkpLnJlZElBZGQoa2UpKS5yZWRJQWRkKGtlKTt2YXIgU2U9b2UucmVkTXVsKEFlKS5yZWRJU3ViKGtlKSxJZT1OLnJlZEFkZChOKS5yZWRNdWwodGUpO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludCh2ZSxT''@;'; put 'put ''ZSxJZSl9LHJlLnByb3RvdHlwZS50cnBsPWZ1bmN0aW9uKCl7aWYoIXRoaXMuY3VydmUuemVyb0EpcmV0dXJuIHRoaXMuZGJsKCkuYWRkKHRoaXMpO3ZhciBZPXRoaXMueC5yZWRTcXIoKSxXPXRoaXMueS5yZWRTcXIoKSxOPXRoaXMuei5yZWRTcXIoKSx0ZT1XLnJlZFNxcigpLEs9WS5yZWRB''@;'; put 'put ''ZGQoWSkucmVkSUFkZChZKSxKPUsucmVkU3FyKCksc2U9dGhpcy54LnJlZEFkZChXKS5yZWRTcXIoKS5yZWRJU3ViKFkpLnJlZElTdWIodGUpLG9lPShzZT0oc2U9KHNlPXNlLnJlZElBZGQoc2UpKS5yZWRBZGQoc2UpLnJlZElBZGQoc2UpKS5yZWRJU3ViKEopKS5yZWRTcXIoKSxjZT10ZS5y''@;'; put 'put ''ZWRJQWRkKHRlKTtjZT0oY2U9KGNlPWNlLnJlZElBZGQoY2UpKS5yZWRJQWRkKGNlKSkucmVkSUFkZChjZSk7dmFyIGRlPUsucmVkSUFkZChzZSkucmVkU3FyKCkucmVkSVN1YihKKS5yZWRJU3ViKG9lKS5yZWRJU3ViKGNlKSx2ZT1XLnJlZE11bChkZSk7dmU9KHZlPXZlLnJlZElBZGQodmUp''@;'; put 'put ''KS5yZWRJQWRkKHZlKTt2YXIgQWU9dGhpcy54LnJlZE11bChvZSkucmVkSVN1Yih2ZSk7QWU9KEFlPUFlLnJlZElBZGQoQWUpKS5yZWRJQWRkKEFlKTt2YXIga2U9dGhpcy55LnJlZE11bChkZS5yZWRNdWwoY2UucmVkSVN1YihkZSkpLnJlZElTdWIoc2UucmVkTXVsKG9lKSkpO2tlPShrZT0o''@;'; put 'put ''a2U9a2UucmVkSUFkZChrZSkpLnJlZElBZGQoa2UpKS5yZWRJQWRkKGtlKTt2YXIgU2U9dGhpcy56LnJlZEFkZChzZSkucmVkU3FyKCkucmVkSVN1YihOKS5yZWRJU3ViKG9lKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoQWUsa2UsU2UpfSxyZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKFks''@;'; put 'put ''Vyl7cmV0dXJuIFk9bmV3IEIoWSxXKSx0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsWSl9LHJlLnByb3RvdHlwZS5lcT1mdW5jdGlvbihZKXtpZigiYWZmaW5lIj09PVkudHlwZSlyZXR1cm4gdGhpcy5lcShZLnRvSigpKTtpZih0aGlzPT09WSlyZXR1cm4hMDt2YXIgVz10aGlzLnoucmVkU3Fy''@;'; put 'put ''KCksTj1ZLnoucmVkU3FyKCk7aWYoMCE9PXRoaXMueC5yZWRNdWwoTikucmVkSVN1YihZLngucmVkTXVsKFcpKS5jbXBuKDApKXJldHVybiExO3ZhciB0ZT1XLnJlZE11bCh0aGlzLnopLEs9Ti5yZWRNdWwoWS56KTtyZXR1cm4gMD09PXRoaXMueS5yZWRNdWwoSykucmVkSVN1YihZLnkucmVk''@;'; put 'put ''TXVsKHRlKSkuY21wbigwKX0scmUucHJvdG90eXBlLmVxWFRvUD1mdW5jdGlvbihZKXt2YXIgVz10aGlzLnoucmVkU3FyKCksTj1ZLnRvUmVkKHRoaXMuY3VydmUucmVkKS5yZWRNdWwoVyk7aWYoMD09PXRoaXMueC5jbXAoTikpcmV0dXJuITA7Zm9yKHZhciB0ZT1ZLmNsb25lKCksSz10aGlz''@;'; put 'put ''LmN1cnZlLnJlZE4ucmVkTXVsKFcpOzspe2lmKHRlLmlhZGQodGhpcy5jdXJ2ZS5uKSx0ZS5jbXAodGhpcy5jdXJ2ZS5wKT49MClyZXR1cm4hMTtpZihOLnJlZElBZGQoSyksMD09PXRoaXMueC5jbXAoTikpcmV0dXJuITB9fSxyZS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLmlzSW5maW5pdHkoKT8iPEVDIEpQb2ludCBJbmZpbml0eT4iOiI8RUMgSlBvaW50IHg6ICIrdGhpcy54LnRvU3RyaW5nKDE2LDIpKyIgeTogIit0aGlzLnkudG9TdHJpbmcoMTYsMikrIiB6OiAiK3RoaXMuei50b1N0cmluZygxNiwyKSsiPiJ9LHJlLnByb3RvdHlwZS5pc0luZmlu''@;'; put 'put ''aXR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnouY21wbigwKX19LDUyOTE2OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcmUsbWU9SmUsQj1MKDM3MDg0KSxFPUwoNDYyNzApLFU9TCg2MTk3MCkuYXNzZXJ0O2Z1bmN0aW9uIFEoYWUpe3RoaXMuY3VydmU9InNob3J0Ij09PWFl''@;'; put 'put ''LnR5cGU/bmV3IEUuc2hvcnQoYWUpOiJlZHdhcmRzIj09PWFlLnR5cGU/bmV3IEUuZWR3YXJkcyhhZSk6bmV3IEUubW9udChhZSksdGhpcy5nPXRoaXMuY3VydmUuZyx0aGlzLm49dGhpcy5jdXJ2ZS5uLHRoaXMuaGFzaD1hZS5oYXNoLFUodGhpcy5nLnZhbGlkYXRlKCksIkludmFsaWQgY3Vy''@;'; put 'put ''dmUiKSxVKHRoaXMuZy5tdWwodGhpcy5uKS5pc0luZmluaXR5KCksIkludmFsaWQgY3VydmUsIEcqTiAhPSBPIil9ZnVuY3Rpb24gaihhZSxZKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobWUsYWUse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3ZhciBXPW5l''@;'; put 'put ''dyBRKFkpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobWUsYWUse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOld9KSxXfX0pfW1lLlByZXNldEN1cnZlPVEsaigicDE5MiIse3R5cGU6InNob3J0IixwcmltZToicDE5MiIscDoiZmZmZmZmZmYgZmZmZmZmZmYgZmZm''@;'; put 'put ''ZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiLGE6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZjIixiOiI2NDIxMDUxOSBlNTljODBlNyAwZmE3ZTlhYiA3MjI0MzA0OSBmZWI4ZGVlYyBjMTQ2YjliMSIsbjoiZmZmZmZmZmYgZmZm''@;'; put 'put ''ZmZmZmYgZmZmZmZmZmYgOTlkZWY4MzYgMTQ2YmM5YjEgYjRkMjI4MzEiLGhhc2g6Qi5zaGEyNTYsZ1JlZDohMSxnOlsiMTg4ZGE4MGUgYjAzMDkwZjYgN2NiZjIwZWIgNDNhMTg4MDAgZjRmZjBhZmQgODJmZjEwMTIiLCIwNzE5MmI5NSBmZmM4ZGE3OCA2MzEwMTFlZCA2YjI0Y2RkNSA3M2Y5''@;'; put 'put ''NzdhMSAxZTc5NDgxMSJdfSksaigicDIyNCIse3R5cGU6InNob3J0IixwcmltZToicDIyNCIscDoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiLGE6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZm''@;'; put 'put ''ZmZmIGZmZmZmZmZmIGZmZmZmZmZlIixiOiJiNDA1MGE4NSAwYzA0YjNhYiBmNTQxMzI1NiA1MDQ0YjBiNyBkN2JmZDhiYSAyNzBiMzk0MyAyMzU1ZmZiNCIsbjoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZjE2YTIgZTBiOGYwM2UgMTNkZDI5NDUgNWM1YzJhM2QiLGhhc2g6Qi5z''@;'; put 'put ''aGEyNTYsZ1JlZDohMSxnOlsiYjcwZTBjYmQgNmJiNGJmN2YgMzIxMzkwYjkgNGEwM2MxZDMgNTZjMjExMjIgMzQzMjgwZDYgMTE1YzFkMjEiLCJiZDM3NjM4OCBiNWY3MjNmYiA0YzIyZGZlNiBjZDQzNzVhMCA1YTA3NDc2NCA0NGQ1ODE5OSA4NTAwN2UzNCJdfSksaigicDI1NiIse3R5cGU6''@;'; put 'put ''InNob3J0IixwcmltZTpudWxsLHA6ImZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIixhOiJmZmZmZmZmZiAwMDAwMDAwMSAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBmZmZm''@;'; put 'put ''ZmZmYyIsYjoiNWFjNjM1ZDggYWEzYTkzZTcgYjNlYmJkNTUgNzY5ODg2YmMgNjUxZDA2YjAgY2M1M2IwZjYgM2JjZTNjM2UgMjdkMjYwNGIiLG46ImZmZmZmZmZmIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGJjZTZmYWFkIGE3MTc5ZTg0IGYzYjljYWMyIGZjNjMyNTUxIixoYXNoOkIu''@;'; put 'put ''c2hhMjU2LGdSZWQ6ITEsZzpbIjZiMTdkMWYyIGUxMmM0MjQ3IGY4YmNlNmU1IDYzYTQ0MGYyIDc3MDM3ZDgxIDJkZWIzM2EwIGY0YTEzOTQ1IGQ4OThjMjk2IiwiNGZlMzQyZTIgZmUxYTdmOWIgOGVlN2ViNGEgN2MwZjllMTYgMmJjZTMzNTcgNmIzMTVlY2UgY2JiNjQwNjggMzdiZjUxZjUi''@;'; put 'put ''XX0pLGooInAzODQiLHt0eXBlOiJzaG9ydCIscHJpbWU6bnVsbCxwOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZiIsYToiZmZmZmZmZmYgZmZm''@;'; put 'put ''ZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmMiLGI6ImIzMzEyZmE3IGUyM2VlN2U0IDk4OGUwNTZiIGUzZjgyZDE5IDE4MWQ5YzZlIGZlODE0MTEyIDAzMTQwODhmIDUw''@;'; put 'put ''MTM4NzVhIGM2NTYzOThkIDhhMmVkMTlkIDJhODVjOGVkIGQzZWMyYWVmIixuOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBjNzYzNGQ4MSBmNDM3MmRkZiA1ODFhMGRiMiA0OGIwYTc3YSBlY2VjMTk2YSBjY2M1Mjk3MyIsaGFzaDpCLnNo''@;'; put 'put ''YTM4NCxnUmVkOiExLGc6WyJhYTg3Y2EyMiBiZThiMDUzNyA4ZWIxYzcxZSBmMzIwYWQ3NCA2ZTFkM2I2MiA4YmE3OWI5OCA1OWY3NDFlMCA4MjU0MmEzOCA1NTAyZjI1ZCBiZjU1Mjk2YyAzYTU0NWUzOCA3Mjc2MGFiNyIsIjM2MTdkZTRhIDk2MjYyYzZmIDVkOWU5OGJmIDkyOTJkYzI5IGY4''@;'; put 'put ''ZjQxZGJkIDI4OWExNDdjIGU5ZGEzMTEzIGI1ZjBiOGMwIDBhNjBiMWNlIDFkN2U4MTlkIDdhNDMxZDdjIDkwZWEwZTVmIl19KSxqKCJwNTIxIix7dHlwZToic2hvcnQiLHByaW1lOm51bGwscDoiMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYg''@;'; put 'put ''ZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYiLGE6IjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZm''@;'; put 'put ''IGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjIixiOiIwMDAwMDA1MSA5NTNlYjk2MSA4ZTFjOWExZiA5MjlhMjFhMCBiNjg1NDBlZSBhMmRhNzI1YiA5OWIzMTVmMyBiOGI0ODk5''@;'; put 'put ''MSA4ZWYxMDllMSA1NjE5Mzk1MSBlYzdlOTM3YiAxNjUyYzBiZCAzYmIxYmYwNyAzNTczZGY4OCAzZDJjMzRmMSBlZjQ1MWZkNCA2YjUwM2YwMCIsbjoiMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZm''@;'; put 'put ''ZmEgNTE4Njg3ODMgYmYyZjk2NmIgN2ZjYzAxNDggZjcwOWE1ZDAgM2JiNWM5YjggODk5YzQ3YWUgYmI2ZmI3MWUgOTEzODY0MDkiLGhhc2g6Qi5zaGE1MTIsZ1JlZDohMSxnOlsiMDAwMDAwYzYgODU4ZTA2YjcgMDQwNGU5Y2QgOWUzZWNiNjYgMjM5NWI0NDIgOWM2NDgxMzkgMDUzZmI1MjEg''@;'; put 'put ''ZjgyOGFmNjAgNmI0ZDNkYmEgYTE0YjVlNzcgZWZlNzU5MjggZmUxZGMxMjcgYTJmZmE4ZGUgMzM0OGIzYzEgODU2YTQyOWIgZjk3ZTdlMzEgYzJlNWJkNjYiLCIwMDAwMDExOCAzOTI5NmE3OCA5YTNiYzAwNCA1YzhhNWZiNCAyYzdkMWJkOSA5OGY1NDQ0OSA1NzliNDQ2OCAxN2FmYmQxNyAy''@;'; put 'put ''NzNlNjYyYyA5N2VlNzI5OSA1ZWY0MjY0MCBjNTUwYjkwMSAzZmFkMDc2MSAzNTNjNzA4NiBhMjcyYzI0MCA4OGJlOTQ3NiA5ZmQxNjY1MCJdfSksaigiY3VydmUyNTUxOSIse3R5cGU6Im1vbnQiLHByaW1lOiJwMjU1MTkiLHA6IjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBm''@;'; put 'put ''ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiLGE6Ijc2ZDA2IixiOiIxIixuOiIxMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgMTRkZWY5ZGVhMmY3OWNkNiA1ODEyNjMxYTVjZjVkM2VkIixoYXNoOkIuc2hhMjU2LGdSZWQ6ITEsZzpbIjkiXX0pLGooImVkMjU1MTki''@;'; put 'put ''LHt0eXBlOiJlZHdhcmRzIixwcmltZToicDI1NTE5IixwOiI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIixhOiItMSIsYzoiMSIsZDoiNTIwMzZjZWUyYjZmZmU3MyA4Y2M3NDA3OTc3NzllODk4IDAwNzAwYTRkNDE0''@;'; put 'put ''MWQ4YWIgNzVlYjRkY2ExMzU5NzhhMyIsbjoiMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCIsaGFzaDpCLnNoYTI1NixnUmVkOiExLGc6WyIyMTY5MzZkM2NkNmU1M2ZlYzBhNGUyMzFmZGQ2ZGM1YzY5MmNjNzYwOTUy''@;'; put 'put ''NWE3YjJjOTU2MmQ2MDhmMjVkNTFhIiwiNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY1OCJdfSk7dHJ5e3JlPUwoMjUxNTApfWNhdGNoKGFlKXtyZT12b2lkIDB9aigic2VjcDI1NmsxIix7dHlwZToic2hvcnQiLHByaW1lOiJr''@;'; put 'put ''MjU2IixwOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIsYToiMCIsYjoiNyIsbjoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgYmFhZWRjZTYgYWY0OGEwM2IgYmZkMjVlOGMgZDAzNjQx''@;'; put 'put ''NDEiLGg6IjEiLGhhc2g6Qi5zaGEyNTYsYmV0YToiN2FlOTZhMmI2NTdjMDcxMDZlNjQ0NzllYWMzNDM0ZTk5Y2YwNDk3NTEyZjU4OTk1YzEzOTZjMjg3MTk1MDFlZSIsbGFtYmRhOiI1MzYzYWQ0Y2MwNWMzMGUwYTUyNjFjMDI4ODEyNjQ1YTEyMmUyMmVhMjA4MTY2NzhkZjAyOTY3YzFiMjNi''@;'; put 'put ''ZDcyIixiYXNpczpbe2E6IjMwODZkMjIxYTdkNDZiY2RlODZjOTBlNDkyODRlYjE1IixiOiItZTQ0MzdlZDYwMTBlODgyODZmNTQ3ZmE5MGFiZmU0YzMifSx7YToiMTE0Y2E1MGY3YThlMmYzZjY1N2MxMTA4ZDlkNDRjZmQ4IixiOiIzMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNSJ9''@;'; put 'put ''XSxnUmVkOiExLGc6WyI3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAyOWJmY2RiMmRjZTI4ZDk1OWYyODE1YjE2ZjgxNzk4IiwiNDgzYWRhNzcyNmEzYzQ2NTVkYTRmYmZjMGUxMTA4YThmZDE3YjQ0OGE2ODU1NDE5OWM0N2QwOGZmYjEwZDRiOCIscmVdfSl9LDY3NjI2OihYZSxK''@;'; put 'put ''ZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgxNzQzMyksQj1MKDUyNDM4KSxFPUwoNjE5NzApLEVlPUwoNTI5MTYpLFU9TCgzNzk1MCksUT1FLmFzc2VydCxqPUwoOTEyNTkpLHJlPUwoNjU5NTcpO2Z1bmN0aW9uIGFlKFkpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGFlKSlyZXR1cm4gbmV3''@;'; put 'put ''IGFlKFkpOyJzdHJpbmciPT10eXBlb2YgWSYmKFEoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEVlLFkpLCJVbmtub3duIGN1cnZlICIrWSksWT1FZVtZXSksWSBpbnN0YW5jZW9mIEVlLlByZXNldEN1cnZlJiYoWT17Y3VydmU6WX0pLHRoaXMuY3VydmU9WS5jdXJ2ZS5j''@;'; put 'put ''dXJ2ZSx0aGlzLm49dGhpcy5jdXJ2ZS5uLHRoaXMubmg9dGhpcy5uLnVzaHJuKDEpLHRoaXMuZz10aGlzLmN1cnZlLmcsdGhpcy5nPVkuY3VydmUuZyx0aGlzLmcucHJlY29tcHV0ZShZLmN1cnZlLm4uYml0TGVuZ3RoKCkrMSksdGhpcy5oYXNoPVkuaGFzaHx8WS5jdXJ2ZS5oYXNofVhlLmV4''@;'; put 'put ''cG9ydHM9YWUsYWUucHJvdG90eXBlLmtleVBhaXI9ZnVuY3Rpb24oVyl7cmV0dXJuIG5ldyBqKHRoaXMsVyl9LGFlLnByb3RvdHlwZS5rZXlGcm9tUHJpdmF0ZT1mdW5jdGlvbihXLE4pe3JldHVybiBqLmZyb21Qcml2YXRlKHRoaXMsVyxOKX0sYWUucHJvdG90eXBlLmtleUZyb21QdWJsaWM9''@;'; put 'put ''ZnVuY3Rpb24oVyxOKXtyZXR1cm4gai5mcm9tUHVibGljKHRoaXMsVyxOKX0sYWUucHJvdG90eXBlLmdlbktleVBhaXI9ZnVuY3Rpb24oVyl7V3x8KFc9e30pO2Zvcih2YXIgTj1uZXcgQih7aGFzaDp0aGlzLmhhc2gscGVyczpXLnBlcnMscGVyc0VuYzpXLnBlcnNFbmN8fCJ1dGY4IixlbnRy''@;'; put 'put ''b3B5OlcuZW50cm9weXx8VSh0aGlzLmhhc2guaG1hY1N0cmVuZ3RoKSxlbnRyb3B5RW5jOlcuZW50cm9weSYmVy5lbnRyb3B5RW5jfHwidXRmOCIsbm9uY2U6dGhpcy5uLnRvQXJyYXkoKX0pLHRlPXRoaXMubi5ieXRlTGVuZ3RoKCksSz10aGlzLm4uc3ViKG5ldyBtZSgyKSk7Oyl7dmFyIEo9''@;'; put 'put ''bmV3IG1lKE4uZ2VuZXJhdGUodGUpKTtpZighKEouY21wKEspPjApKXJldHVybiBKLmlhZGRuKDEpLHRoaXMua2V5RnJvbVByaXZhdGUoSil9fSxhZS5wcm90b3R5cGUuX3RydW5jYXRlVG9OPWZ1bmN0aW9uKFcsTil7dmFyIHRlPTgqVy5ieXRlTGVuZ3RoKCktdGhpcy5uLmJpdExlbmd0aCgp''@;'; put 'put ''O3JldHVybiB0ZT4wJiYoVz1XLnVzaHJuKHRlKSksIU4mJlcuY21wKHRoaXMubik+PTA/Vy5zdWIodGhpcy5uKTpXfSxhZS5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbihXLE4sdGUsSyl7Im9iamVjdCI9PXR5cGVvZiB0ZSYmKEs9dGUsdGU9bnVsbCksS3x8KEs9e30pLE49dGhpcy5rZXlGcm9t''@;'; put 'put ''UHJpdmF0ZShOLHRlKSxXPXRoaXMuX3RydW5jYXRlVG9OKG5ldyBtZShXLDE2KSk7Zm9yKHZhciBKPXRoaXMubi5ieXRlTGVuZ3RoKCksc2U9Ti5nZXRQcml2YXRlKCkudG9BcnJheSgiYmUiLEopLG9lPVcudG9BcnJheSgiYmUiLEopLGNlPW5ldyBCKHtoYXNoOnRoaXMuaGFzaCxlbnRyb3B5''@;'; put 'put ''OnNlLG5vbmNlOm9lLHBlcnM6Sy5wZXJzLHBlcnNFbmM6Sy5wZXJzRW5jfHwidXRmOCJ9KSxkZT10aGlzLm4uc3ViKG5ldyBtZSgxKSksdmU9MDs7dmUrKyl7dmFyIEFlPUsuaz9LLmsodmUpOm5ldyBtZShjZS5nZW5lcmF0ZSh0aGlzLm4uYnl0ZUxlbmd0aCgpKSk7aWYoISgoQWU9dGhpcy5f''@;'; put 'put ''dHJ1bmNhdGVUb04oQWUsITApKS5jbXBuKDEpPD0wfHxBZS5jbXAoZGUpPj0wKSl7dmFyIGtlPXRoaXMuZy5tdWwoQWUpO2lmKCFrZS5pc0luZmluaXR5KCkpe3ZhciBTZT1rZS5nZXRYKCksSWU9U2UudW1vZCh0aGlzLm4pO2lmKDAhPT1JZS5jbXBuKDApKXt2YXIgVGU9QWUuaW52bSh0aGlz''@;'; put 'put ''Lm4pLm11bChJZS5tdWwoTi5nZXRQcml2YXRlKCkpLmlhZGQoVykpO2lmKDAhPT0oVGU9VGUudW1vZCh0aGlzLm4pKS5jbXBuKDApKXt2YXIgTWU9KGtlLmdldFkoKS5pc09kZCgpPzE6MCl8KDAhPT1TZS5jbXAoSWUpPzI6MCk7cmV0dXJuIEsuY2Fub25pY2FsJiZUZS5jbXAodGhpcy5uaCk+''@;'; put 'put ''MCYmKFRlPXRoaXMubi5zdWIoVGUpLE1lXj0xKSxuZXcgcmUoe3I6SWUsczpUZSxyZWNvdmVyeVBhcmFtOk1lfSl9fX19fX0sYWUucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbihXLE4sdGUsSyl7Vz10aGlzLl90cnVuY2F0ZVRvTihuZXcgbWUoVywxNikpLHRlPXRoaXMua2V5RnJvbVB1Ymxp''@;'; put 'put ''Yyh0ZSxLKTt2YXIgSj0oTj1uZXcgcmUoTiwiaGV4IikpLnIsc2U9Ti5zO2lmKEouY21wbigxKTwwfHxKLmNtcCh0aGlzLm4pPj0wfHxzZS5jbXBuKDEpPDB8fHNlLmNtcCh0aGlzLm4pPj0wKXJldHVybiExO3ZhciB2ZSxvZT1zZS5pbnZtKHRoaXMubiksY2U9b2UubXVsKFcpLnVtb2QodGhp''@;'; put 'put ''cy5uKSxkZT1vZS5tdWwoSikudW1vZCh0aGlzLm4pO3JldHVybiB0aGlzLmN1cnZlLl9tYXh3ZWxsVHJpY2s/ISh2ZT10aGlzLmcuam11bEFkZChjZSx0ZS5nZXRQdWJsaWMoKSxkZSkpLmlzSW5maW5pdHkoKSYmdmUuZXFYVG9QKEopOiEodmU9dGhpcy5nLm11bEFkZChjZSx0ZS5nZXRQdWJs''@;'; put 'put ''aWMoKSxkZSkpLmlzSW5maW5pdHkoKSYmMD09PXZlLmdldFgoKS51bW9kKHRoaXMubikuY21wKEopfSxhZS5wcm90b3R5cGUucmVjb3ZlclB1YktleT1mdW5jdGlvbihZLFcsTix0ZSl7USgoMyZOKT09PU4sIlRoZSByZWNvdmVyeSBwYXJhbSBpcyBtb3JlIHRoYW4gdHdvIGJpdHMiKSxXPW5l''@;'; put 'put ''dyByZShXLHRlKTt2YXIgSz10aGlzLm4sSj1uZXcgbWUoWSksc2U9Vy5yLG9lPVcucyxjZT0xJk4sZGU9Tj4+MTtpZihzZS5jbXAodGhpcy5jdXJ2ZS5wLnVtb2QodGhpcy5jdXJ2ZS5uKSk+PTAmJmRlKXRocm93IG5ldyBFcnJvcigiVW5hYmxlIHRvIGZpbmQgc2VuY29uZCBrZXkgY2FuZGlu''@;'; put 'put ''YXRlIik7c2U9dGhpcy5jdXJ2ZS5wb2ludEZyb21YKGRlP3NlLmFkZCh0aGlzLmN1cnZlLm4pOnNlLGNlKTt2YXIgdmU9Vy5yLmludm0oSyksQWU9Sy5zdWIoSikubXVsKHZlKS51bW9kKEspLGtlPW9lLm11bCh2ZSkudW1vZChLKTtyZXR1cm4gdGhpcy5nLm11bEFkZChBZSxzZSxrZSl9LGFl''@;'; put 'put ''LnByb3RvdHlwZS5nZXRLZXlSZWNvdmVyeVBhcmFtPWZ1bmN0aW9uKFksVyxOLHRlKXtpZihudWxsIT09KFc9bmV3IHJlKFcsdGUpKS5yZWNvdmVyeVBhcmFtKXJldHVybiBXLnJlY292ZXJ5UGFyYW07Zm9yKHZhciBLPTA7Szw0O0srKyl7dmFyIEo7dHJ5e0o9dGhpcy5yZWNvdmVyUHViS2V5''@;'; put 'put ''KFksVyxLKX1jYXRjaChzZSl7Y29udGludWV9aWYoSi5lcShOKSlyZXR1cm4gS310aHJvdyBuZXcgRXJyb3IoIlVuYWJsZSB0byBmaW5kIHZhbGlkIHJlY292ZXJ5IGZhY3RvciIpfX0sOTEyNTk6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDE3NDMzKSxFPUwoNjE5NzApLmFz''@;'; put 'put ''c2VydDtmdW5jdGlvbiBFZShVLFEpe3RoaXMuZWM9VSx0aGlzLnByaXY9bnVsbCx0aGlzLnB1Yj1udWxsLFEucHJpdiYmdGhpcy5faW1wb3J0UHJpdmF0ZShRLnByaXYsUS5wcml2RW5jKSxRLnB1YiYmdGhpcy5faW1wb3J0UHVibGljKFEucHViLFEucHViRW5jKX1YZS5leHBvcnRzPUVlLEVl''@;'; put 'put ''LmZyb21QdWJsaWM9ZnVuY3Rpb24oUSxqLHJlKXtyZXR1cm4gaiBpbnN0YW5jZW9mIEVlP2o6bmV3IEVlKFEse3B1YjpqLHB1YkVuYzpyZX0pfSxFZS5mcm9tUHJpdmF0ZT1mdW5jdGlvbihRLGoscmUpe3JldHVybiBqIGluc3RhbmNlb2YgRWU/ajpuZXcgRWUoUSx7cHJpdjpqLHByaXZFbmM6''@;'; put 'put ''cmV9KX0sRWUucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKCl7dmFyIFE9dGhpcy5nZXRQdWJsaWMoKTtyZXR1cm4gUS5pc0luZmluaXR5KCk/e3Jlc3VsdDohMSxyZWFzb246IkludmFsaWQgcHVibGljIGtleSJ9OlEudmFsaWRhdGUoKT9RLm11bCh0aGlzLmVjLmN1cnZlLm4pLmlzSW5m''@;'; put 'put ''aW5pdHkoKT97cmVzdWx0OiEwLHJlYXNvbjpudWxsfTp7cmVzdWx0OiExLHJlYXNvbjoiUHVibGljIGtleSAqIE4gIT0gTyJ9OntyZXN1bHQ6ITEscmVhc29uOiJQdWJsaWMga2V5IGlzIG5vdCBhIHBvaW50In19LEVlLnByb3RvdHlwZS5nZXRQdWJsaWM9ZnVuY3Rpb24oUSxqKXtyZXR1cm4i''@;'; put 'put ''c3RyaW5nIj09dHlwZW9mIFEmJihqPVEsUT1udWxsKSx0aGlzLnB1Ynx8KHRoaXMucHViPXRoaXMuZWMuZy5tdWwodGhpcy5wcml2KSksaj90aGlzLnB1Yi5lbmNvZGUoaixRKTp0aGlzLnB1Yn0sRWUucHJvdG90eXBlLmdldFByaXZhdGU9ZnVuY3Rpb24oUSl7cmV0dXJuImhleCI9PT1RP3Ro''@;'; put 'put ''aXMucHJpdi50b1N0cmluZygxNiwyKTp0aGlzLnByaXZ9LEVlLnByb3RvdHlwZS5faW1wb3J0UHJpdmF0ZT1mdW5jdGlvbihRLGope3RoaXMucHJpdj1uZXcgbWUoUSxqfHwxNiksdGhpcy5wcml2PXRoaXMucHJpdi51bW9kKHRoaXMuZWMuY3VydmUubil9LEVlLnByb3RvdHlwZS5faW1wb3J0''@;'; put 'put ''UHVibGljPWZ1bmN0aW9uKFEsail7aWYoUS54fHxRLnkpcmV0dXJuIm1vbnQiPT09dGhpcy5lYy5jdXJ2ZS50eXBlP0UoUS54LCJOZWVkIHggY29vcmRpbmF0ZSIpOigic2hvcnQiPT09dGhpcy5lYy5jdXJ2ZS50eXBlfHwiZWR3YXJkcyI9PT10aGlzLmVjLmN1cnZlLnR5cGUpJiZFKFEueCYm''@;'; put 'put ''US55LCJOZWVkIGJvdGggeCBhbmQgeSBjb29yZGluYXRlIiksdm9pZCh0aGlzLnB1Yj10aGlzLmVjLmN1cnZlLnBvaW50KFEueCxRLnkpKTt0aGlzLnB1Yj10aGlzLmVjLmN1cnZlLmRlY29kZVBvaW50KFEsail9LEVlLnByb3RvdHlwZS5kZXJpdmU9ZnVuY3Rpb24oUSl7cmV0dXJuIFEudmFs''@;'; put 'put ''aWRhdGUoKXx8RShRLnZhbGlkYXRlKCksInB1YmxpYyBwb2ludCBub3QgdmFsaWRhdGVkIiksUS5tdWwodGhpcy5wcml2KS5nZXRYKCl9LEVlLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKFEsaixyZSl7cmV0dXJuIHRoaXMuZWMuc2lnbihRLHRoaXMsaixyZSl9LEVlLnByb3RvdHlwZS52ZXJp''@;'; put 'put ''Znk9ZnVuY3Rpb24oUSxqKXtyZXR1cm4gdGhpcy5lYy52ZXJpZnkoUSxqLHRoaXMpfSxFZS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiI8S2V5IHByaXY6ICIrKHRoaXMucHJpdiYmdGhpcy5wcml2LnRvU3RyaW5nKDE2LDIpKSsiIHB1YjogIisodGhpcy5wdWImJnRoaXMu''@;'; put 'put ''cHViLmluc3BlY3QoKSkrIiA+In19LDY1OTU3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgxNzQzMyksQj1MKDYxOTcwKSxFPUIuYXNzZXJ0O2Z1bmN0aW9uIEVlKGFlLFkpe2lmKGFlIGluc3RhbmNlb2YgRWUpcmV0dXJuIGFlO3RoaXMuX2ltcG9ydERFUihhZSxZKXx8KEUo''@;'; put 'put ''YWUuciYmYWUucywiU2lnbmF0dXJlIHdpdGhvdXQgciBvciBzIiksdGhpcy5yPW5ldyBtZShhZS5yLDE2KSx0aGlzLnM9bmV3IG1lKGFlLnMsMTYpLHRoaXMucmVjb3ZlcnlQYXJhbT12b2lkIDA9PT1hZS5yZWNvdmVyeVBhcmFtP251bGw6YWUucmVjb3ZlcnlQYXJhbSl9ZnVuY3Rpb24gVSgp''@;'; put 'put ''e3RoaXMucGxhY2U9MH1mdW5jdGlvbiBRKGFlLFkpe3ZhciBXPWFlW1kucGxhY2UrK107aWYoISgxMjgmVykpcmV0dXJuIFc7dmFyIE49MTUmVztpZigwPT09Tnx8Tj40KXJldHVybiExO2Zvcih2YXIgdGU9MCxLPTAsSj1ZLnBsYWNlO0s8TjtLKyssSisrKXRlPDw9OCx0ZXw9YWVbSl0sdGU+''@;'; put 'put ''Pj49MDtyZXR1cm4hKHRlPD0xMjcpJiYoWS5wbGFjZT1KLHRlKX1mdW5jdGlvbiBqKGFlKXtmb3IodmFyIFk9MCxXPWFlLmxlbmd0aC0xOyFhZVtZXSYmISgxMjgmYWVbWSsxXSkmJlk8VzspWSsrO3JldHVybiAwPT09WT9hZTphZS5zbGljZShZKX1mdW5jdGlvbiByZShhZSxZKXtpZihZPDEy''@;'; put 'put ''OClhZS5wdXNoKFkpO2Vsc2V7dmFyIFc9MSsoTWF0aC5sb2coWSkvTWF0aC5MTjI+Pj4zKTtmb3IoYWUucHVzaCgxMjh8Vyk7LS1XOylhZS5wdXNoKFk+Pj4oVzw8MykmMjU1KTthZS5wdXNoKFkpfX1YZS5leHBvcnRzPUVlLEVlLnByb3RvdHlwZS5faW1wb3J0REVSPWZ1bmN0aW9uKFksVyl7''@;'; put 'put ''WT1CLnRvQXJyYXkoWSxXKTt2YXIgTj1uZXcgVTtpZig0OCE9PVlbTi5wbGFjZSsrXSlyZXR1cm4hMTt2YXIgdGU9UShZLE4pO2lmKCExPT09dGV8fHRlK04ucGxhY2UhPT1ZLmxlbmd0aHx8MiE9PVlbTi5wbGFjZSsrXSlyZXR1cm4hMTt2YXIgSz1RKFksTik7aWYoITE9PT1LKXJldHVybiEx''@;'; put 'put ''O3ZhciBKPVkuc2xpY2UoTi5wbGFjZSxLK04ucGxhY2UpO2lmKE4ucGxhY2UrPUssMiE9PVlbTi5wbGFjZSsrXSlyZXR1cm4hMTt2YXIgc2U9UShZLE4pO2lmKCExPT09c2V8fFkubGVuZ3RoIT09c2UrTi5wbGFjZSlyZXR1cm4hMTt2YXIgb2U9WS5zbGljZShOLnBsYWNlLHNlK04ucGxhY2Up''@;'; put 'put ''O2lmKDA9PT1KWzBdKXtpZighKDEyOCZKWzFdKSlyZXR1cm4hMTtKPUouc2xpY2UoMSl9aWYoMD09PW9lWzBdKXtpZighKDEyOCZvZVsxXSkpcmV0dXJuITE7b2U9b2Uuc2xpY2UoMSl9cmV0dXJuIHRoaXMucj1uZXcgbWUoSiksdGhpcy5zPW5ldyBtZShvZSksdGhpcy5yZWNvdmVyeVBhcmFt''@;'; put 'put ''PW51bGwsITB9LEVlLnByb3RvdHlwZS50b0RFUj1mdW5jdGlvbihZKXt2YXIgVz10aGlzLnIudG9BcnJheSgpLE49dGhpcy5zLnRvQXJyYXkoKTtmb3IoMTI4JldbMF0mJihXPVswXS5jb25jYXQoVykpLDEyOCZOWzBdJiYoTj1bMF0uY29uY2F0KE4pKSxXPWooVyksTj1qKE4pOyEoTlswXXx8''@;'; put 'put ''MTI4Jk5bMV0pOylOPU4uc2xpY2UoMSk7dmFyIHRlPVsyXTtyZSh0ZSxXLmxlbmd0aCksKHRlPXRlLmNvbmNhdChXKSkucHVzaCgyKSxyZSh0ZSxOLmxlbmd0aCk7dmFyIEs9dGUuY29uY2F0KE4pLEo9WzQ4XTtyZXR1cm4gcmUoSixLLmxlbmd0aCksSj1KLmNvbmNhdChLKSxCLmVuY29kZShK''@;'; put 'put ''LFkpfX0sODE4ODU6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDM3MDg0KSxCPUwoNTI5MTYpLEU9TCg2MTk3MCksRWU9RS5hc3NlcnQsVT1FLnBhcnNlQnl0ZXMsUT1MKDk3NTM1KSxqPUwoODgyNDEpO2Z1bmN0aW9uIHJlKGFlKXtpZihFZSgiZWQyNTUxOSI9PT1hZSwib25s''@;'; put 'put ''eSB0ZXN0ZWQgd2l0aCBlZDI1NTE5IHNvIGZhciIpLCEodGhpcyBpbnN0YW5jZW9mIHJlKSlyZXR1cm4gbmV3IHJlKGFlKTt0aGlzLmN1cnZlPWFlPUJbYWVdLmN1cnZlLHRoaXMuZz1hZS5nLHRoaXMuZy5wcmVjb21wdXRlKGFlLm4uYml0TGVuZ3RoKCkrMSksdGhpcy5wb2ludENsYXNzPWFl''@;'; put 'put ''LnBvaW50KCkuY29uc3RydWN0b3IsdGhpcy5lbmNvZGluZ0xlbmd0aD1NYXRoLmNlaWwoYWUubi5iaXRMZW5ndGgoKS84KSx0aGlzLmhhc2g9bWUuc2hhNTEyfVhlLmV4cG9ydHM9cmUscmUucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24oWSxXKXtZPVUoWSk7dmFyIE49dGhpcy5rZXlGcm9tU2Vj''@;'; put 'put ''cmV0KFcpLHRlPXRoaXMuaGFzaEludChOLm1lc3NhZ2VQcmVmaXgoKSxZKSxLPXRoaXMuZy5tdWwodGUpLEo9dGhpcy5lbmNvZGVQb2ludChLKSxzZT10aGlzLmhhc2hJbnQoSixOLnB1YkJ5dGVzKCksWSkubXVsKE4ucHJpdigpKSxvZT10ZS5hZGQoc2UpLnVtb2QodGhpcy5jdXJ2ZS5uKTty''@;'; put 'put ''ZXR1cm4gdGhpcy5tYWtlU2lnbmF0dXJlKHtSOkssUzpvZSxSZW5jb2RlZDpKfSl9LHJlLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24oWSxXLE4pe1k9VShZKSxXPXRoaXMubWFrZVNpZ25hdHVyZShXKTt2YXIgdGU9dGhpcy5rZXlGcm9tUHVibGljKE4pLEs9dGhpcy5oYXNoSW50KFcuUmVu''@;'; put 'put ''Y29kZWQoKSx0ZS5wdWJCeXRlcygpLFkpLEo9dGhpcy5nLm11bChXLlMoKSk7cmV0dXJuIFcuUigpLmFkZCh0ZS5wdWIoKS5tdWwoSykpLmVxKEopfSxyZS5wcm90b3R5cGUuaGFzaEludD1mdW5jdGlvbigpe2Zvcih2YXIgWT10aGlzLmhhc2goKSxXPTA7Vzxhcmd1bWVudHMubGVuZ3RoO1cr''@;'; put 'put ''KylZLnVwZGF0ZShhcmd1bWVudHNbV10pO3JldHVybiBFLmludEZyb21MRShZLmRpZ2VzdCgpKS51bW9kKHRoaXMuY3VydmUubil9LHJlLnByb3RvdHlwZS5rZXlGcm9tUHVibGljPWZ1bmN0aW9uKFkpe3JldHVybiBRLmZyb21QdWJsaWModGhpcyxZKX0scmUucHJvdG90eXBlLmtleUZyb21T''@;'; put 'put ''ZWNyZXQ9ZnVuY3Rpb24oWSl7cmV0dXJuIFEuZnJvbVNlY3JldCh0aGlzLFkpfSxyZS5wcm90b3R5cGUubWFrZVNpZ25hdHVyZT1mdW5jdGlvbihZKXtyZXR1cm4gWSBpbnN0YW5jZW9mIGo/WTpuZXcgaih0aGlzLFkpfSxyZS5wcm90b3R5cGUuZW5jb2RlUG9pbnQ9ZnVuY3Rpb24oWSl7dmFy''@;'; put 'put ''IFc9WS5nZXRZKCkudG9BcnJheSgibGUiLHRoaXMuZW5jb2RpbmdMZW5ndGgpO3JldHVybiBXW3RoaXMuZW5jb2RpbmdMZW5ndGgtMV18PVkuZ2V0WCgpLmlzT2RkKCk/MTI4OjAsV30scmUucHJvdG90eXBlLmRlY29kZVBvaW50PWZ1bmN0aW9uKFkpe3ZhciBXPShZPUUucGFyc2VCeXRlcyhZ''@;'; put 'put ''KSkubGVuZ3RoLTEsTj1ZLnNsaWNlKDAsVykuY29uY2F0KC0xMjkmWVtXXSksdGU9MCE9KDEyOCZZW1ddKSxLPUUuaW50RnJvbUxFKE4pO3JldHVybiB0aGlzLmN1cnZlLnBvaW50RnJvbVkoSyx0ZSl9LHJlLnByb3RvdHlwZS5lbmNvZGVJbnQ9ZnVuY3Rpb24oWSl7cmV0dXJuIFkudG9BcnJh''@;'; put 'put ''eSgibGUiLHRoaXMuZW5jb2RpbmdMZW5ndGgpfSxyZS5wcm90b3R5cGUuZGVjb2RlSW50PWZ1bmN0aW9uKFkpe3JldHVybiBFLmludEZyb21MRShZKX0scmUucHJvdG90eXBlLmlzUG9pbnQ9ZnVuY3Rpb24oWSl7cmV0dXJuIFkgaW5zdGFuY2VvZiB0aGlzLnBvaW50Q2xhc3N9fSw5NzUzNToo''@;'; put 'put ''WGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoNjE5NzApLEI9bWUuYXNzZXJ0LEU9bWUucGFyc2VCeXRlcyxFZT1tZS5jYWNoZWRQcm9wZXJ0eTtmdW5jdGlvbiBVKFEsail7dGhpcy5lZGRzYT1RLHRoaXMuX3NlY3JldD1FKGouc2VjcmV0KSxRLmlzUG9pbnQoai5wdWIpP3RoaXMu''@;'; put 'put ''X3B1Yj1qLnB1Yjp0aGlzLl9wdWJCeXRlcz1FKGoucHViKX1VLmZyb21QdWJsaWM9ZnVuY3Rpb24oaixyZSl7cmV0dXJuIHJlIGluc3RhbmNlb2YgVT9yZTpuZXcgVShqLHtwdWI6cmV9KX0sVS5mcm9tU2VjcmV0PWZ1bmN0aW9uKGoscmUpe3JldHVybiByZSBpbnN0YW5jZW9mIFU/cmU6bmV3''@;'; put 'put ''IFUoaix7c2VjcmV0OnJlfSl9LFUucHJvdG90eXBlLnNlY3JldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zZWNyZXR9LEVlKFUsInB1YkJ5dGVzIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMucHViKCkpfSksRWUoVSwicHViIixmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl9wdWJCeXRlcz90aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuX3B1YkJ5dGVzKTp0aGlzLmVkZHNhLmcubXVsKHRoaXMucHJpdigpKX0pLEVlKFUsInByaXZCeXRlcyIsZnVuY3Rpb24oKXt2YXIgaj10aGlzLmVkZHNhLHJlPXRoaXMuaGFzaCgpLGFlPWouZW5jb2RpbmdM''@;'; put 'put ''ZW5ndGgtMSxZPXJlLnNsaWNlKDAsai5lbmNvZGluZ0xlbmd0aCk7cmV0dXJuIFlbMF0mPTI0OCxZW2FlXSY9MTI3LFlbYWVdfD02NCxZfSksRWUoVSwicHJpdiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5wcml2Qnl0ZXMoKSl9KSxFZShVLCJoYXNoIixm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmhhc2goKS51cGRhdGUodGhpcy5zZWNyZXQoKSkuZGlnZXN0KCl9KSxFZShVLCJtZXNzYWdlUHJlZml4IixmdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc2goKS5zbGljZSh0aGlzLmVkZHNhLmVuY29kaW5nTGVuZ3RoKX0pLFUucHJvdG90eXBl''@;'; put 'put ''LnNpZ249ZnVuY3Rpb24oail7cmV0dXJuIEIodGhpcy5fc2VjcmV0LCJLZXlQYWlyIGNhbiBvbmx5IHZlcmlmeSIpLHRoaXMuZWRkc2Euc2lnbihqLHRoaXMpfSxVLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24oaixyZSl7cmV0dXJuIHRoaXMuZWRkc2EudmVyaWZ5KGoscmUsdGhpcyl9LFUu''@;'; put 'put ''cHJvdG90eXBlLmdldFNlY3JldD1mdW5jdGlvbihqKXtyZXR1cm4gQih0aGlzLl9zZWNyZXQsIktleVBhaXIgaXMgcHVibGljIG9ubHkiKSxtZS5lbmNvZGUodGhpcy5zZWNyZXQoKSxqKX0sVS5wcm90b3R5cGUuZ2V0UHVibGljPWZ1bmN0aW9uKGope3JldHVybiBtZS5lbmNvZGUodGhpcy5w''@;'; put 'put ''dWJCeXRlcygpLGopfSxYZS5leHBvcnRzPVV9LDg4MjQxOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgxNzQzMyksQj1MKDYxOTcwKSxFPUIuYXNzZXJ0LEVlPUIuY2FjaGVkUHJvcGVydHksVT1CLnBhcnNlQnl0ZXM7ZnVuY3Rpb24gUShqLHJlKXt0aGlzLmVkZHNhPWosIm9i''@;'; put 'put ''amVjdCIhPXR5cGVvZiByZSYmKHJlPVUocmUpKSxBcnJheS5pc0FycmF5KHJlKSYmKHJlPXtSOnJlLnNsaWNlKDAsai5lbmNvZGluZ0xlbmd0aCksUzpyZS5zbGljZShqLmVuY29kaW5nTGVuZ3RoKX0pLEUocmUuUiYmcmUuUywiU2lnbmF0dXJlIHdpdGhvdXQgUiBvciBTIiksai5pc1BvaW50''@;'; put 'put ''KHJlLlIpJiYodGhpcy5fUj1yZS5SKSxyZS5TIGluc3RhbmNlb2YgbWUmJih0aGlzLl9TPXJlLlMpLHRoaXMuX1JlbmNvZGVkPUFycmF5LmlzQXJyYXkocmUuUik/cmUuUjpyZS5SZW5jb2RlZCx0aGlzLl9TZW5jb2RlZD1BcnJheS5pc0FycmF5KHJlLlMpP3JlLlM6cmUuU2VuY29kZWR9RWUo''@;'; put 'put ''USwiUyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5TZW5jb2RlZCgpKX0pLEVlKFEsIlIiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlUG9pbnQodGhpcy5SZW5jb2RlZCgpKX0pLEVlKFEsIlJlbmNvZGVkIixmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMuUigpKX0pLEVlKFEsIlNlbmNvZGVkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmVuY29kZUludCh0aGlzLlMoKSl9KSxRLnByb3RvdHlwZS50b0J5dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUmVuY29kZWQoKS5jb25jYXQo''@;'; put 'put ''dGhpcy5TZW5jb2RlZCgpKX0sUS5wcm90b3R5cGUudG9IZXg9ZnVuY3Rpb24oKXtyZXR1cm4gQi5lbmNvZGUodGhpcy50b0J5dGVzKCksImhleCIpLnRvVXBwZXJDYXNlKCl9LFhlLmV4cG9ydHM9UX0sMjUxNTA6WGU9PntYZS5leHBvcnRzPXtkb3VibGVzOntzdGVwOjQscG9pbnRzOltbImU2''@;'; put 'put ''MGZjZTkzYjU5ZTllYzUzMDExYWFiYzIxYzIzZTk3YjJhMzEzNjliODdhNWFlOWM0NGVlODllMmE2ZGVjMGEiLCJmN2UzNTA3Mzk5ZTU5NTkyOWRiOTlmMzRmNTc5MzcxMDEyOTY4OTFlNDRkMjNmMGJlMWYzMmNjZTY5NjE2ODIxIl0sWyI4MjgyMjYzMjEyYzYwOWQ5ZWEyYTZlM2UxNzJkZTIz''@;'; put 'put ''OGQ4YzM5Y2FiZDVhYzFjYTEwNjQ2ZTIzZmQ1ZjUxNTA4IiwiMTFmOGE4MDk4NTU3ZGZlNDVlODI1NmU4MzBiNjBhY2U2MmQ2MTNhYzJmN2IxN2JlZDMxYjZlYWZmNmUyNmNhZiJdLFsiMTc1ZTE1OWY3MjhiODY1YTcyZjk5Y2M2YzZmYzg0NmRlMGI5MzgzM2ZkMjIyMmVkNzNmY2U1YjU1MWU1''@;'; put 'put ''YjczOSIsImQzNTA2ZTBkOWUzYzc5ZWJhNGVmOTdhNTFmZjcxZjVlYWNiNTk1NWFkZDI0MzQ1YzZlZmE2ZmZlZTlmZWQ2OTUiXSxbIjM2M2Q5MGQ0NDdiMDBjOWM5OWNlYWMwNWI2MjYyZWUwNTM0NDFjN2U1NTU1MmZmZTUyNmJhZDhmODNmZjQ2NDAiLCI0ZTI3M2FkZmM3MzIyMjE5NTNiNDQ1''@;'; put 'put ''Mzk3ZjMzNjMxNDViOWE4OTAwODE5OWVjYjYyMDAzYzdmM2JlZTlkZTkiXSxbIjhiNGI1ZjE2NWRmM2MyYmU4YzYyNDRiNWI3NDU2Mzg4NDNlNGE3ODFhMTViY2QxYjY5Zjc5YTU1ZGZmZGY4MGMiLCI0YWFkMGE2ZjY4ZDMwOGI0YjNmYmQ3ODEzYWIwZGEwNGY5ZTMzNjU0NjE2MmVlNTZiM2Vm''@;'; put 'put ''ZjBjNjVmZDRmZDM2Il0sWyI3MjNjYmFhNmU1ZGI5OTZkNmJmNzcxYzAwYmQ1NDhjN2I3MDBkYmZmYTZjMGU3N2JjYjYxMTU5MjUyMzJmY2RhIiwiOTZlODY3YjU1OTVjYzQ5OGE5MjExMzc0ODg4MjRkNmUyNjYwYTA2NTM3Nzk0OTQ4MDFkYzA2OWQ5ZWIzOWY1ZiJdLFsiZWViZmE0ZDQ5M2Jl''@;'; put 'put ''YmY5OGJhNWZlZWM4MTJjMmQzYjUwOTQ3OTYxMjM3YTkxOTgzOWE1MzNlY2EwZTdkZDdmYSIsIjVkOWE4Y2EzOTcwZWYwZjI2OWVlN2VkYWYxNzgwODlkOWFlNGNkYzNhNzExZjcxMmRkZmQ0ZmRhZTFkZTg5OTkiXSxbIjEwMGY0NGRhNjk2ZTcxNjcyNzkxZDBhMDliN2JkZTQ1OWYxMjE1YTI5''@;'; put 'put ''YjNjMDNiZmVmZDc4MzViMzlhNDhkYjAiLCJjZGQ5ZTEzMTkyYTAwYjc3MmVjOGYzMzAwYzA5MDY2NmI3ZmY0YTE4ZmY1MTk1YWMwZmJkNWNkNjJiYzY1YTA5Il0sWyJlMTAzMWJlMjYyYzdlZDFiMWRjOTIyN2E0YTA0YzAxN2E3N2Y4ZDQ0NjRmM2IzODUyYzhhY2RlNmU1MzRmZDJkIiwiOWQ3''@;'; put 'put ''MDYxOTI4OTQwNDA1ZTZiYjZhNDE3NjU5NzUzNWFmMjkyZGQ0MTllMWNlZDc5YTQ0ZjE4ZjI5NDU2YTAwZCJdLFsiZmVlYTZjYWU0NmQ1NWI1MzBhYzI4MzlmMTQzYmQ3ZWM1Y2Y4YjI2NmE0MWQ2YWY1MmQ1ZTY4OGQ5MDk0Njk2ZCIsImU1N2M2YjZjOTdkY2UxYmFiMDZlNGUxMmJmM2VjZDVj''@;'; put 'put ''OTgxYzg5NTdjYzQxNDQyZDMxNTVkZWJmMTgwOTAwODgiXSxbImRhNjdhOTFkOTEwNDljZGNiMzY3YmU0YmU2ZmZjYTNjZmVlZDY1N2Q4MDg1ODNkZTMzZmE5NzhiYzFlYzZjYjEiLCI5YmFjYWEzNTQ4MTY0MmJjNDFmNDYzZjdlYzk3ODBlNWRlYzdhZGM1MDhmNzQwYTE3ZTllYThlMjdhNjhi''@;'; put 'put ''ZTFkIl0sWyI1MzkwNGZhYTBiMzM0Y2RkYTZlMDAwOTM1ZWYyMjE1MWVjMDhkMGY3YmIxMTA2OWY1NzU0NWNjYzFhMzdiN2MwIiwiNWJjMDg3ZDBiYzgwMTA2ZDg4YzllY2NhYzIwZDNjMWMxMzk5OTk4MWUxNDQzNDY5OWRjYjA5NmIwMjI3NzFjOCJdLFsiOGU3YmNkMGJkMzU5ODNhNzcxOWNj''@;'; put 'put ''YTc3NjRjYTkwNjc3OWI1M2EwNDNhOWI4YmNhZWZmOTU5ZjQzYWQ4NjA0NyIsIjEwYjc3NzBiMmEzZGE0YjM5NDAzMTA0MjBjYTk1MTQ1NzllODhlMmU0N2ZkNjhiM2VhMTAwNDdlODQ2MDM3MmEiXSxbIjM4NWVlZDM0YzFjZGZmMjFlNmQwODE4Njg5YjgxYmRlNzFhN2Y0ZjE4Mzk3ZTY2OTBh''@;'; put 'put ''ODQxZTE1OTljNDM4NjIiLCIyODNiZWJjM2U4ZWEyM2Y1NjcwMWRlMTllOWViZjQ1NzZiMzA0ZWVjMjA4NmRjOGNjMDQ1OGZlNTU0MmU1NDUzIl0sWyI2ZjlkOWI4MDNlY2YxOTE2MzdjNzNhNDQxM2RmYTE4MGZkZGY4NGE1OTQ3ZmJjOWM2MDZlZDg2YzNmYWMzYTciLCI3YzgwYzY4ZTYwMzA1''@;'; put 'put ''OWJhNjliOGUyYTMwZTQ1YzRkNDdlYTRkZDJmNWMyODEwMDJkODY4OTA2MDNhODQyMTYwIl0sWyIzMzIyZDQwMTI0M2M0ZTI1ODJhMjE0N2MxMDRkNmVjYmY3NzRkMTYzZGIwZjVlNTMxM2I3ZTBlNzQyZDBlNmJkIiwiNTZlNzA3OTdlOTY2NGVmNWJmYjAxOWJjNGRkYWY5YjcyODA1ZjYzZWEy''@;'; put 'put ''ODczYWY2MjRmM2EyZTk2YzI4YjJhMCJdLFsiODU2NzJjN2QyZGUwYjdkYTJiZDE3NzBkODk2NjU4Njg3NDFiM2Y5YWY3NjQzMzk3NzIxZDc0ZDI4MTM0YWI4MyIsIjdjNDgxYjliNWI0M2IyZWI2Mzc0MDQ5YmZhNjJjMmU1ZTc3ZjE3ZmNjNTI5OGY0NGM4ZTMwOTRmNzkwMzEzYTYiXSxbIjk0''@;'; put 'put ''OGJmODA5YjE5ODhhNDZiMDZjOWYxOTE5NDEzYjEwZjkyMjZjNjBmNjY4ODMyZmZkOTU5YWY2MGM4MmEwYSIsIjUzYTU2Mjg1NmRjYjY2NDZkYzZiNzRjNWQxYzM0MThjNmQ0ZGZmMDhjOTdjZDJiZWQ0Y2I3Zjg4ZDhjOGU1ODkiXSxbIjYyNjBjZTdmNDYxODAxYzM0ZjA2N2NlMGYwMjg3M2E4''@;'; put 'put ''ZjFiMGU0NGRmYzY5NzUyYWNjZWNkODE5ZjM4ZmQ4ZTgiLCJiYzJkYTgyYjZmYTViNTcxYTdmMDkwNDk3NzZhMWVmN2VjZDI5MjIzODA1MWMxOThjMWE4NGU5NWIyYjRhZTE3Il0sWyJlNTAzN2RlMGFmYzFkOGQ0M2Q4MzQ4NDE0YmJmNDEwMzA0M2VjOGY1NzViZmRjNDMyOTUzY2M4ZDIwMzdm''@;'; put 'put ''YTJkIiwiNDU3MTUzNGJhYTk0ZDNiNWY5Zjk4ZDA5ZmI5OTBiZGRiZDVmNWIwM2VjNDgxZjEwZTBlNWRjODQxZDc1NWJkYSJdLFsiZTA2MzcyYjBmNGEyMDdhZGY1ZWE5MDVlOGYxNzcxYjRlN2U4ZGJkMWM2YTZjNWI3MjU4NjZhMGFlNGZjZTcyNSIsIjdhOTA4OTc0YmNlMThjZmUxMmEyN2Ji''@;'; put 'put ''MmFkNWE0ODhjZDc0ODRhNzc4NzEwNDg3MGIyNzAzNGY5NGVlZTMxZGQiXSxbIjIxM2M3YTcxNWNkNWQ0NTM1OGQwYmJmOWRjMGNlMDIyMDRiMTBiZGRlMmEzZjU4NTQwYWQ2OTA4ZDA1NTk3NTQiLCI0YjZkYWQwYjVhZTQ2MjUwNzAxM2FkMDYyNDViYTE5MGJiNDg1MGY1ZjM2YTdlZWRkZmYy''@;'; put 'put ''YzI3NTM0YjQ1OGYyIl0sWyI0ZTdjMjcyYTdhZjRiMzRlOGRiYjkzNTJhNTQxOWE4N2UyODM4YzcwYWRjNjJjZGRmMGNjM2EzYjA4ZmJkNTNjIiwiMTc3NDljNzY2YzlkMGIxOGUxNmZkMDlmNmRlZjY4MWI1MzBiOTYxNGJmZjdkZDMzZTBiMzk0MTgxN2RjYWFlNiJdLFsiZmVhNzRlM2RiZTc3''@;'; put 'put ''OGIxYjEwZjIzOGFkNjE2ODZhYTVjNzZlM2RiMmJlNDMwNTc2MzI0MjdlMjg0MGZiMjdiNiIsIjZlMDU2OGRiOWIwYjEzMjk3Y2Y2NzRkZWNjYjZhZjkzMTI2YjU5NmI5NzNmN2I3NzcwMWQzZGI3ZjIzY2I5NmYiXSxbIjc2ZTY0MTEzZjY3N2NmMGUxMGEyNTcwZDU5OTk2OGQzMTU0NGUxNzli''@;'; put 'put ''NzYwNDMyOTUyYzAyYTQ0MTdiZGRlMzkiLCJjOTBkZGY4ZGVlNGU5NWNmNTc3MDY2ZDcwNjgxZjBkMzVlMmEzM2QyYjU2ZDIwMzJiNGIxNzUyZDE5MDFhYzAxIl0sWyJjNzM4YzU2YjAzYjJhYmUxZTgyODFiYWE3NDNmOGY5YThmN2NjNjQzZGYyNmNiZWUzYWIxNTAyNDJiY2JiODkxIiwiODkz''@;'; put 'put ''ZmI1Nzg5NTFhZDI1MzdmNzE4ZjJlYWNiZmJiYmI4MjMxNGVlZjc4ODBjZmU5MTdlNzM1ZDk2OTlhODRjMyJdLFsiZDg5NTYyNjU0OGI2NWI4MWUyNjRjNzYzN2M5NzI4NzdkMWQ3MmU1ZjNhOTI1MDE0MzcyZTlmNjU4OGY2YzE0YiIsImZlYmZhYTM4ZjJiYzdlYWU3MjhlYzYwODE4YzM0MGVi''@;'; put 'put ''MDM0MjhkNjMyYmIwNjdlMTc5MzYzZWQ3NWQ3ZDk5MWYiXSxbImI4ZGE5NDAzMmE5NTc1MThlYjBmNjQzMzU3MWU4NzYxY2VmZmM3MzY5M2U4NGVkZDQ5MTUwYTU2NGY2NzZlMDMiLCIyODA0ZGZhNDQ4MDVhMWU0ZDdjOTljYzk3NjI4MDhiMDkyY2M1ODRkOTVmZjNiNTExNDg4ZTRlNzRlZmRm''@;'; put 'put ''NmU3Il0sWyJlODBmZWExNDQ0MWZiMzNhN2Q4YWRhYjk0NzVkN2ZhYjIwMTllZmZiNTE1NmE3OTJmMWExMTc3OGUzYzBkZjVkIiwiZWVkMWRlN2Y2MzhlMDA3NzFlODk3NjhjYTNjYTk0NDcyZDE1NWU4MGFmMzIyZWE5ZmNiNDI5MWI2YWM5ZWM3OCJdLFsiYTMwMTY5N2JkZmNkNzA0MzEzYmE0''@;'; put 'put ''OGU1MWQ1Njc1NDNmMmExODIwMzFlZmQ2OTE1ZGRjMDdiYmNjNGUxNjA3MCIsIjczNzBmOTFjZmI2N2U0ZjUwODE4MDlmYTI1ZDQwZjliMTczNWRiZjdjMGExMWExMzBjMGQxYTA0MWUxNzdlYTEiXSxbIjkwYWQ4NWIzODlkNmI5MzY0NjNmOWQwNTEyNjc4ZGUyMDhjYzMzMGIxMTMwN2ZmZmFi''@;'; put 'put ''N2FjNjNlM2ZiMDRlZDQiLCJlNTA3YTM2MjBhMzgyNjFhZmZkY2JkOTQyNzIyMmI4MzlhZWZhYmUxNTgyODk0ZDk5MWQ0ZDQ4Y2I2ZWYxNTAiXSxbIjhmNjhiOWQyZjYzYjVmMzM5MjM5YzFhZDk4MWYxNjJlZTg4YzU2Nzg3MjNlYTMzNTFiN2I0NDRjOWVjNGMwZGEiLCI2NjJhOWYyZGJhMDYz''@;'; put 'put ''OTg2ZGUxZDkwYzJiNmJlMjE1ZGJiZWEyY2ZlOTU1MTBiZmRmMjNjYmY3OTUwMWZmZjgyIl0sWyJlNGYzZmIwMTc2YWY4NWQ2NWZmOTlmZjkxOThjMzYwOTFmNDhlODY1MDM2ODFlM2U2Njg2ZmQ1MDUzMjMxZTExIiwiMWU2MzYzM2FkMGVmNGYxYzE2NjFhNmQwZWEwMmI3Mjg2Y2M3ZTc0ZWM5''@;'; put 'put ''NTFkMWM5ODIyYzM4NTc2ZmViNzNiYyJdLFsiOGMwMGZhOWIxOGViZjMzMWViOTYxNTM3YTQ1YTQyNjZjNzAzNGYyZjBkNGUxZDA3MTZmYjZlYWUyMGVhZTI5ZSIsImVmYTQ3MjY3ZmVhNTIxYTFhOWRjMzQzYTM3MzZjOTc0YzJmYWRhZmE4MWUzNmM1NGU3ZDJhNGM2NjcwMjQxNGIiXSxbImU3''@;'; put 'put ''YTI2Y2U2OWRkNDgyOWYzZTEwY2VjMGE5ZTk4ZWQzMTQzZDA4NGYzMDhiOTJjMDk5N2ZkZGZjNjBjYjNlNDEiLCIyYTc1OGUzMDBmYTc5ODRiNDcxYjAwNmExYWFmYmIxOGQwYTZiMmMwNDIwZTgzZTIwZThhOTQyMWNmMmNmZDUxIl0sWyJiNjQ1OWUwZWUzNjYyZWM4ZDIzNTQwYzIyM2JjYmRj''@;'; put 'put ''NTcxY2JjYjk2N2Q3OTQyNGYzY2YyOWViM2RlNmI4MGVmIiwiNjdjODc2ZDA2ZjNlMDZkZTFkYWRmMTZlNTY2MWRiM2M0YjNhZTZkNDhlMzViMmZmMzBiZjBiNjFhNzFiYTQ1Il0sWyJkNjhhODBjODI4MGJiODQwNzkzMjM0YWExMThmMDYyMzFkNmYxZmM2N2U3M2M1YTVkZWRhMGY1YjQ5Njk0''@;'; put 'put ''M2U4IiwiZGI4YmE5ZmZmNGI1ODZkMDBjNGIxZjkxNzdiMGUyOGI1YjBlN2I4Zjc4NDUyOTVhMjk0Yzg0MjY2YjEzMzEyMCJdLFsiMzI0YWVkN2RmNjVjODA0MjUyZGMwMjcwOTA3YTMwYjA5NjEyYWViOTczNDQ5Y2VhNDA5NTk4MGZjMjhkM2Q1ZCIsIjY0OGEzNjU3NzRiNjFmMmZmMTMwYzBj''@;'; put 'put ''MzVhZWMxZjRmMTkyMTNiMGM3ZTMzMjg0Mzk2NzIyNGFmOTZhYjdjODQiXSxbIjRkZjljMTQ5MTljZGU2MWY2ZDUxZGZkYmU1ZmVlNWRjZWVjNDE0M2JhOGQxY2E4ODhlOGJkMzczZmQwNTRjOTYiLCIzNWVjNTEwOTJkODcyODA1MDk3NGMyM2ExZDg1ZDRiNWQ1MDZjZGMyODg0OTAxOTJlYmFj''@;'; put 'put ''MDZjYWQxMGQ1ZCJdLFsiOWMzOTE5YTg0YTQ3NDg3MGZhZWQ4YTljMWNjNjYwMjE1MjM0ODkwNTRkN2YwMzA4Y2JmYzk5YzhhYzFmOThjZCIsImRkYjg0ZjBmNGE0ZGRkNTc1ODRmMDQ0YmYyNjBlNjQxOTA1MzI2Zjc2YzY0YzhlNmJlN2U1ZTAzZDRmYzU5OWQiXSxbIjYwNTcxNzBiMWRkMTJm''@;'; put 'put ''ZGY4ZGUwNWYyODFkOGUwNmJiOTFlMTQ5M2E4YjkxZDRjYzVhMjEzODIxMjBhOTU5ZTUiLCI5YTFhZjBiMjZhNmE0ODA3YWRkOWEyZGFmNzFkZjI2MjQ2NTE1MmJjM2VlMjRjNjVlODk5YmU5MzIzODVhMmE4Il0sWyJhNTc2ZGY4ZTIzYTA4NDExNDIxNDM5YTQ1MThkYTMxODgwY2VmMGZiYTdk''@;'; put 'put ''NGRmMTJiMWE2OTczZWVjYjk0MjY2IiwiNDBhNmJmMjBlNzY2NDBiMmM5MmI5N2FmZTU4Y2Q4MmM0MzJlMTBhN2Y1MTRkOWYzZWU4YmUxMWFlMWIyOGVjOCJdLFsiNzc3OGE3OGMyOGRlYzNlMzBhMDVmZTk2MjlkZThjMzhiYjMwZDFmNWNmOWEzYTIwOGY3NjM4ODliZTU4YWQ3MSIsIjM0NjI2''@;'; put 'put ''ZDlhYjVhNWIyMmZmNzA5OGUxMmYyZmY1ODAwODdiMzg0MTFmZjI0YWM1NjNiNTEzZmMxZmQ5ZjQzYWMiXSxbIjkyODk1NWVlNjM3YTg0NDYzNzI5ZmQzMGU3YWZkMmVkNWY5NjI3NGU1YWQ3ZTVjYjA5ZWRhOWMwNmQ5MDNhYyIsImMyNTYyMTAwM2QzZjQyYTgyN2I3OGExMzA5M2E5NWVlYWMz''@;'; put 'put ''ZDI2ZWZhOGE4ZDgzZmM1MTgwZTkzNWJjZDA5MWYiXSxbIjg1ZDBmZWYzZWM2ZGIxMDkzOTkwNjRmM2EwZTNiMjg1NTY0NWI0YTkwN2FkMzU0NTI3YWFlNzUxNjNkODI3NTEiLCIxZjAzNjQ4NDEzYTM4YzBiZTI5ZDQ5NmU1ODJjZjU2NjNlODc1MWU5Njg3NzMzMTU4MmMyMzdhMjRlYjFmOTYy''@;'; put 'put ''Il0sWyJmZjJiMGRjZTk3ZWVjZTk3YzFjOWI2MDQxNzk4Yjg1ZGZkZmI2ZDg4ODJkYTIwMzA4ZjU0MDQ4MjQ1MjYwODdlIiwiNDkzZDEzZmVmNTI0YmExODhhZjRjNGRjNTRkMDc5MzZjN2I3ZWQ2ZmI5MGUyY2ViMmM5NTFlMDFmMGMyOTkwNyJdLFsiODI3ZmJiZTRiMWU4ODBlYTllZDJiMmU2''@;'; put 'put ''MzAxYjIxMmI1N2YxZWUxNDhjZDZkZDI4NzgwZTVlMmNmODU2ZTI0MSIsImM2MGY5YzkyM2M3MjdiMGI3MWJlZjJjNjdkMWQxMjY4N2ZmN2E2MzE4NjkwMzE2NmQ2MDViNjhiYWVjMjkzZWMiXSxbImVhYTY0OWYyMWY1MWJkYmFlN2JlNGFlMzRjZTZlNTIxN2E1OGZkY2U3ZjQ3ZjlhYTdmM2I1''@;'; put 'put ''OGZhMjEyMGUyYjMiLCJiZTMyNzllZDViYmJiMDNhYzY5YTgwZjg5ODc5YWE1YTAxYTZiOTY1ZjEzZjdlNTlkNDdhNTMwNWJhNWFkOTNkIl0sWyJlNGE0MmQ0M2M1Y2YxNjlkOTM5MWRmNmRlY2Y0MmVlNTQxYjZkOGYwYzlhMTM3NDAxZTIzNjMyZGRhMzRkMjRmIiwiNGQ5ZjkyZTcxNmQxYzcz''@;'; put 'put ''NTI2ZmM5OWNjZmI4YWQzNGNlODg2ZWVkZmE4ZDhlNGYxM2E3ZjcxMzFkZWJhOTQxNCJdLFsiMWVjODBmZWYzNjBjYmRkOTU0MTYwZmFkYWIzNTJiNmI5MmI1MzU3NmE4OGZlYTQ5NDcxNzNiOWQ0MzAwYmYxOSIsImFlZWZlOTM3NTZiNTM0MGQyZjNhNDk1OGE3YWJiZjVlMDE0NmU3N2Y2Mjk1''@;'; put 'put ''YTA3YjY3MWNkYzFjYzEwN2NlZmQiXSxbIjE0NmE3NzhjMDQ2NzBjMmY5MWIwMGFmNDY4MGRmYThiY2UzNDkwNzE3ZDU4YmE4ODlkZGI1OTI4MzY2NjQyYmUiLCJiMzE4ZTBlYzMzNTQwMjhhZGQ2Njk4MjdmOWQ0YjI4NzBhYWE5NzFkMmY3ZTVlZDFkMGIyOTc0ODNkODNlZmQwIl0sWyJmYTUw''@;'; put 'put ''YzBmNjFkMjJlNWYwN2UzYWNlYmIxYWEwN2IxMjhkMDAxMjIwOWEyOGI5Nzc2ZDc2YTg3OTMxODBlZWY5IiwiNmI4NGM2OTIyMzk3ZWJhOWI3MmNkMjg3MjI4MWE2OGE1ZTY4MzI5M2E1N2EyMTNiMzhjZDhkN2QzZjRmMjgxMSJdLFsiZGExZDYxZDBjYTcyMWExMWIxYTViZjZiN2Q4OGU4NDIx''@;'; put 'put ''YTI4OGFiNWQ1YmJhNTIyMGU1M2QzMmI1ZjA2N2VjMiIsIjgxNTdmNTVhN2M5OTMwNmM3OWMwNzY2MTYxYzkxZTI5NjZhNzM4OTlkMjc5YjQ4YTY1NWZiYTBmMWFkODM2ZjEiXSxbImE4ZTI4MmZmMGM5NzA2OTA3MjE1ZmY5OGU4ZmQ0MTY2MTUzMTFkZTA0NDZmMWUwNjJhNzNiMDYxMGQwNjRl''@;'; put 'put ''MTMiLCI3Zjk3MzU1YjhkYjgxYzA5YWJmYjdmM2M1YjI1MTU4ODhiNjc5YTNlNTBkZDZiZDZjZWY3YzczMTExZjRjYzBjIl0sWyIxNzRhNTNiOWM5YTI4NTg3MmQzOWU1NmU2OTEzY2FiMTVkNTliMWZhNTEyNTA4YzAyMmYzODJkZTgzMTk0OTdjIiwiY2NjOWRjMzdhYmZjOWMxNjU3YjQxNTVm''@;'; put 'put ''MmM0N2Y5ZTY2NDZiM2ExZDhjYjk4NTQzODNkYTEzYWMwNzlhZmE3MyJdLFsiOTU5Mzk2OTgxOTQzNzg1YzNkM2U1N2VkZjUwMThjZGJlMDM5ZTczMGU0OTE4YjNkODg0ZmRmZjA5NDc1YjdiYSIsIjJlN2U1NTI4ODhjMzMxZGQ4YmEwMzg2YTRiOWNkNjg0OWM2NTNmNjRjODcwOTM4NWU5Yjhh''@;'; put 'put ''YmY4NzUyNGYyZmQiXSxbImQyYTYzYTUwYWU0MDFlNTZkNjQ1YTExNTNiMTA5YThmY2NhMGE0M2Q1NjFmYmEyZGJiNTEzNDBjOWQ4MmIxNTEiLCJlODJkODZmYjY0NDNmY2I3NTY1YWVlNThiMjk0ODIyMGE3MGY3NTBhZjQ4NGNhNTJkNDE0MjE3NGRjZjg5NDA1Il0sWyI2NDU4N2UyMzM1NDcx''@;'; put 'put ''ZWI4OTBlZTc4OTZkN2NmZGM4NjZiYWNiZGJkMzgzOTMxN2IzNDM2ZjliNDU2MTdlMDczIiwiZDk5ZmNkZDViZjY5MDJlMmFlOTZkZDY0NDdjMjk5YTE4NWI5MGEzOTEzM2FlYWIzNTgyOTllNWU5ZmFmNjU4OSJdLFsiODQ4MWJkZTBlNGU0ZDg4NWIzYTU0NmQzZTU0OWRlMDQyZjBhYTZjZWEy''@;'; put 'put ''NTBlN2ZkMzU4ZDZjODZkZDQ1ZTQ1OCIsIjM4ZWU3YjhjYmE1NDA0ZGQ4NGEyNWJmMzljZWNiMmNhOTAwYTc5YzQyYjI2MmU1NTZkNjRiMWI1OTc3OTA1N2UiXSxbIjEzNDY0YTU3YTc4MTAyYWE2MmI2OTc5YWU4MTdmNDYzN2ZmY2ZlZDNjNGIxY2UzMGJjZDYzMDNmNmNhZjY2NmIiLCI2OWJl''@;'; put 'put ''MTU5MDA0NjE0NTgwZWY3ZTQzMzQ1M2NjYjBjYTQ4ZjMwMGE4MWQwOTQyZTEzZjQ5NWE5MDdmNmVjYzI3Il0sWyJiYzRhOWRmNWI3MTNmZTJlOWFlZjQzMGJjYzFkYzk3YTBjZDljY2VkZTJmMjg1ODhjYWRhM2EwZDJkODNmMzY2IiwiZDNhODFjYTZlNzg1YzA2MzgzOTM3YWRmNGI3OThjYWE2''@;'; put 'put ''ZThhOWZiZmE1NDdiMTZkNzU4ZDY2NjU4MWYzM2MxIl0sWyI4YzI4YTk3YmY4Mjk4YmMwZDIzZDhjNzQ5NDUyYTMyZTY5NGI2NWUzMGE5NDcyYTM5NTRhYjMwZmU1MzI0Y2FhIiwiNDBhMzA0NjNhMzMwNTE5MzM3OGZlZGYzMWY3Y2MwZWI3YWU3ODRmMDQ1MWNiOTQ1OWU3MWRjNzNjYmVmOTQ4''@;'; put 'put ''MiJdLFsiOGVhOTY2NjEzOTUyN2E4YzFkZDk0Y2U0ZjA3MWZkMjNjOGIzNTBjNWE0YmIzMzc0OGM0YmExMTFmYWNjYWUwIiwiNjIwZWZhYmJjOGVlMjc4MmUyNGU3YzBjZmI5NWM1ZDczNWI3ODNiZTljZjBmOGU5NTVhZjM0YTMwZTYyYjk0NSJdLFsiZGQzNjI1ZmFlZjViYTA2MDc0NjY5NzE2''@;'; put 'put ''YmJkMzc4OGQ4OWJkZGU4MTU5NTk5NjgwOTJmNzZjYzRlYjlhOTc4NyIsIjdhMTg4ZmEzNTIwZTMwZDQ2MWRhMjUwMTA0NTczMWNhOTQxNDYxOTgyODgzMzk1OTM3ZjY4ZDAwYzY0NGE1NzMiXSxbImY3MTBkNzlkOWViOTYyMjk3ZTRmNjIzMmI0MGU4ZjdmZWIyYmM2MzgxNDYxNGQ2OTJjMTJk''@;'; put 'put ''ZTc1MjQwODIyMWUiLCJlYTk4ZTY3MjMyZDNiMzI5NWQzYjUzNTUzMjExNWNjYWM4NjEyYzcyMTg1MTYxNzUyNmFlNDdhOWM3N2JmYzgyIl1dfSxuYWY6e3duZDo3LHBvaW50czpbWyJmOTMwOGEwMTkyNThjMzEwNDkzNDRmODVmODlkNTIyOWI1MzFjODQ1ODM2Zjk5YjA4NjAxZjExM2JjZTAz''@;'; put 'put ''NmY5IiwiMzg4ZjdiMGY2MzJkZTgxNDBmZTMzN2U2MmEzN2YzNTY2NTAwYTk5OTM0YzIyMzFiNmNiOWZkNzU4NGI4ZTY3MiJdLFsiMmY4YmRlNGQxYTA3MjA5MzU1YjRhNzI1MGE1YzUxMjhlODhiODRiZGRjNjE5YWI3Y2JhOGQ1NjliMjQwZWZlNCIsImQ4YWMyMjI2MzZlNWUzZDZkNGRiYTlk''@;'; put 'put ''ZGE2YzljNDI2Zjc4ODI3MWJhYjBkNjg0MGRjYTg3ZDNhYTZhYzYyZDYiXSxbIjVjYmRmMDY0NmU1ZGI0ZWFhMzk4ZjM2NWYyZWE3YTBlM2Q0MTliN2UwMzMwZTM5Y2U5MmJkZGVkY2FjNGY5YmMiLCI2YWViY2E0MGJhMjU1OTYwYTMxNzhkNmQ4NjFhNTRkYmE4MTNkMGI4MTNmZGU3YjVhNTA4''@;'; put 'put ''MjYyODA4NzI2NGRhIl0sWyJhY2Q0ODRlMmYwYzdmNjUzMDlhZDE3OGE5ZjU1OWFiZGUwOTc5Njk3NGM1N2U3MTRjMzVmMTEwZGZjMjdjY2JlIiwiY2MzMzg5MjFiMGE3ZDlmZDY0MzgwOTcxNzYzYjYxZTlhZGQ4ODhhNDM3NWY4ZTBmMDVjYzI2MmFjNjRmOWMzNyJdLFsiNzc0YWU3Zjg1OGE5''@;'; put 'put ''NDExZTVlZjQyNDZiNzBjNjVhYWM1NjQ5OTgwYmU1YzE3ODkxYmJlYzE3ODk1ZGEwMDhjYiIsImQ5ODRhMDMyZWI2YjVlMTkwMjQzZGQ1NmQ3YjdiMzY1MzcyZGIxZTJkZmY5ZDZhODMwMWQ3NGM5Yzk1M2M2MWIiXSxbImYyODc3M2MyZDk3NTI4OGJjN2QxZDIwNWMzNzQ4NjUxYjA3NWZiYzY2''@;'; put 'put ''MTBlNThjZGRlZWRkZjhmMTk0MDVhYTgiLCJhYjA5MDJlOGQ4ODBhODk3NTgyMTJlYjY1Y2RhZjQ3M2ExYTA2ZGE1MjFmYTkxZjI5YjVjYjUyZGIwM2VkODEiXSxbImQ3OTI0ZDRmN2Q0M2VhOTY1YTQ2NWFlMzA5NWZmNDExMzFlNTk0NmYzYzg1Zjc5ZTQ0YWRiY2Y4ZTI3ZTA4MGUiLCI1ODFl''@;'; put 'put ''Mjg3MmE4NmM3MmE2ODM4NDJlYzIyOGNjNmRlZmVhNDBhZjJiZDg5NmQzYTVjNTA0ZGM5ZmY2YTI2YjU4Il0sWyJkZWZkZWE0Y2RiNjc3NzUwYTQyMGZlZTgwN2VhY2YyMWViOTg5OGFlNzliOTc2ODc2NmU0ZmFhMDRhMmQ0YTM0IiwiNDIxMWFiMDY5NDYzNTE2OGU5OTdiMGVhZDJhOTNkYWVj''@;'; put 'put ''ZWQxZjRhMDRhOTVjMGY2Y2ZiMTk5ZjY5ZTU2ZWI3NyJdLFsiMmI0ZWEwYTc5N2E0NDNkMjkzZWY1Y2ZmNDQ0ZjQ5NzlmMDZhY2ZlYmQ3ZTg2ZDI3NzQ3NTY1NjEzODM4NWI2YyIsIjg1ZTg5YmMwMzc5NDVkOTNiMzQzMDgzYjVhMWM4NjEzMWEwMWY2MGM1MDI2OTc2M2I1NzBjODU0ZTVjMDli''@;'; put 'put ''N2EiXSxbIjM1MmJiZjRhNGNkZDEyNTY0ZjkzZmEzMzJjZTMzMzMwMWQ5YWQ0MDI3MWY4MTA3MTgxMzQwYWVmMjViZTU5ZDUiLCIzMjFlYjQwNzUzNDhmNTM0ZDU5YzE4MjU5ZGRhM2UxZjRhMWIzYjJlNzFiMTAzOWM2N2JkM2Q4YmNmODE5OThjIl0sWyIyZmEyMTA0ZDZiMzhkMTFiMDIzMDAx''@;'; put 'put ''MDU1OTg3OTEyNGU0MmFiOGRmZWZmNWZmMjlkYzljZGFkZDRlY2FjYzNmIiwiMmRlMTA2ODI5NWRkODY1YjY0NTY5MzM1YmQ1ZGQ4MDE4MWQ3MGVjZmM4ODI2NDg0MjNiYTc2YjUzMmI3ZDY3Il0sWyI5MjQ4Mjc5YjA5YjRkNjhkYWIyMWE5YjA2NmVkZGE4MzI2M2MzZDg0ZTA5NTcyZTI2OWNh''@;'; put 'put ''MGNkN2Y1NDUzNzE0IiwiNzMwMTZmN2JmMjM0YWFkZTVkMWFhNzFiZGVhMmIxZmYzZmMwZGUyYTg4NzkxMmZmZTU0YTMyY2U5N2NiMzQwMiJdLFsiZGFlZDRmMmJlM2E4YmYyNzhlNzAxMzJmYjBiZWI3NTIyZjU3MGUxNDRiZjYxNWMwN2U5OTZkNDQzZGVlODcyOSIsImE2OWRjZTRhN2Q2Yzk4''@;'; put 'put ''ZThkNGExYWNhODdlZjhkNzAwM2Y4M2MyMzBmM2FmYTcyNmFiNDBlNTIyOTBiZTFjNTUiXSxbImM0NGQxMmM3MDY1ZDgxMmU4YWNmMjhkN2NiYjE5ZjkwMTFlY2Q5ZTlmZGYyODFiMGU2YTNiNWU4N2QyMmU3ZGIiLCIyMTE5YTQ2MGNlMzI2Y2RjNzZjNDU5MjZjOTgyZmRhYzBlMTA2ZTg2MWVk''@;'; put 'put ''ZjYxYzVhMDM5MDYzZjBlMGU2NDgyIl0sWyI2YTI0NWJmNmRjNjk4NTA0Yzg5YTIwY2ZkZWQ2MDg1MzE1MmI2OTUzMzZjMjgwNjNiNjFjNjVjYmQyNjllNmI0IiwiZTAyMmNmNDJjMmJkNGE3MDhiM2Y1MTI2ZjE2YTI0YWQ4YjMzYmE0OGQwNDIzYjZlZmQ1ZTYzNDgxMDBkOGE4MiJdLFsiMTY5''@;'; put 'put ''N2ZmYTZmZDlkZTYyN2MwNzdlM2QyZmU1NDEwODRjZTEzMzAwYjBiZWMxMTQ2Zjk1YWU1N2YwZDBiZDZhNSIsImI5YzM5OGYxODY4MDZmNWQyNzU2MTUwNmU0NTU3NDMzYTJjZjE1MDA5ZTQ5OGFlN2FkZWU5ZDYzZDAxYjIzOTYiXSxbIjYwNWJkYjAxOTk4MTcxOGI5ODZkMGYwN2U4MzRjYjBk''@;'; put 'put ''OWRlYjgzNjBmZmI3ZjYxZGY5ODIzNDVlZjI3YTc0NzkiLCIyOTcyZDJkZTRmOGQyMDY4MWE3OGQ5M2VjOTZmZTIzYzI2YmZhZTg0ZmIxNGRiNDNiMDFlMWU5MDU2YjhjNDkiXSxbIjYyZDE0ZGFiNDE1MGJmNDk3NDAyZmRjNDVhMjE1ZTEwZGNiMDFjMzU0OTU5YjEwY2ZlMzFjN2U5ZDg3ZmYz''@;'; put 'put ''M2QiLCI4MGZjMDZiZDhjYzViMDEwOTgwODhhMTk1MGVlZDBkYjAxYWExMzI5NjdhYjQ3MjIzNWY1NjQyNDgzYjI1ZWFmIl0sWyI4MGM2MGFkMDA0MGYyN2RhZGU1YjRiMDZjNDA4ZTU2YjJjNTBlOWY1NmI5YjhiNDI1ZTU1NWMyZjg2MzA4YjZmIiwiMWMzODMwM2YxY2M1YzMwZjI2ZTY2YmFk''@;'; put 'put ''N2ZlNzJmNzBhNjVlZWQ0Y2JlNzAyNGViMWFhMDFmNTY0MzBiZDU3YSJdLFsiN2E5Mzc1YWQ2MTY3YWQ1NGFhNzRjNjM0OGNjNTRkMzQ0Y2M1ZGM5NDg3ZDg0NzA0OWQ1ZWFiYjBmYTAzYzhmYiIsImQwZTNmYTllY2E4NzI2OTA5NTU5ZTBkNzkyNjkwNDZiZGM1OWVhMTBjNzBjZTJiMDJkNDk5''@;'; put 'put ''ZWMyMjRkYzdmNyJdLFsiZDUyOGVjZDliNjk2YjU0YzkwN2E5ZWQwNDU0NDdhNzliYjQwOGVjMzliNjhkZjUwNGJiNTFmNDU5YmMzZmZjOSIsImVlY2Y0MTI1MzEzNmU1Zjk5OTY2ZjIxODgxZmQ2NTZlYmM0MzQ1NDA1YzUyMGRiYzA2MzQ2NWI1MjE0MDk5MzMiXSxbIjQ5MzcwYTRiNWY0MzQx''@;'; put 'put ''MmVhMjVmNTE0ZThlY2RhZDA1MjY2MTE1ZTRhN2VjYjEzODcyMzE4MDhmOGI0NTk2MyIsIjc1OGYzZjQxYWZkNmVkNDI4YjMwODFiMDUxMmZkNjJhNTRjM2YzYWZiYjViNjc2NGI2NTMwNTJhMTI5NDljOWEiXSxbIjc3ZjIzMDkzNmVlODhjYmJkNzNkZjkzMGQ2NDcwMmVmODgxZDgxMWUwZTE0''@;'; put 'put ''OThlMmYxYzEzZWIxZmMzNDVkNzQiLCI5NThlZjQyYTc4ODZiNjQwMGEwODI2NmU5YmExYjM3ODk2Yzk1MzMwZDk3MDc3Y2JiZThlYjNjNzY3MWM2MGQ2Il0sWyJmMmRhYzk5MWNjNGNlNGI5ZWE0NDg4N2U1YzdjMGJjZTU4YzgwMDc0YWI5ZDRkYmFlYjI4NTMxYjc3MzlmNTMwIiwiZTBkZWRj''@;'; put 'put ''OWIzYjJmOGRhZDRkYTFmMzJkZWMyNTMxZGY5ZWI1ZmJlYjA1OThlNGZkMWExMTdkYmE3MDNhM2MzNyJdLFsiNDYzYjNkOWY2NjI2MjFmYjFiNGJlOGZiYmUyNTIwMTI1YTIxNmNkZmM5ZGFlM2RlYmNiYTQ4NTBjNjkwZDQ1YiIsIjVlZDQzMGQ3OGMyOTZjMzU0MzExNDMwNmRkODYyMmQ3YzYy''@;'; put 'put ''MmUyN2M5NzBhMWRlMzFjYjM3N2IwMWFmNzMwN2UiXSxbImYxNmY4MDQyNDRlNDZlMmEwOTIzMmQ0YWZmM2I1OTk3NmI5OGZhYzE0MzI4YTJkMWEzMjQ5NmI0OTk5OGYyNDciLCJjZWRhYmQ5YjgyMjAzZjdlMTNkMjA2ZmNkZjRlMzNkOTJhNmM1M2MyNmU1Y2NlMjZkNjU3OTk2MmM0ZTMxZGY2''@;'; put 'put ''Il0sWyJjYWY3NTQyNzJkYzg0NTYzYjAzNTJiN2ExNDMxMWFmNTVkMjQ1MzE1YWNlMjdjNjUzNjllMTVmNzE1MWQ0MWQxIiwiY2I0NzQ2NjBlZjM1ZjVmMmE0MWI2NDNmYTVlNDYwNTc1ZjRmYTliNzk2MjIzMmE1YzMyZjkwODMxOGEwNDQ3NiJdLFsiMjYwMGNhNGIyODJjYjk4NmY4NWQwZjE3''@;'; put 'put ''MDk5NzlkOGI0NGEwOWMwN2NiODZkN2MxMjQ0OTdiYzg2ZjA4MjEyMCIsIjQxMTliODg3NTNjMTViZDZhNjkzYjAzZmNkZGJiNDVkNWFjNmJlNzRhYjVmMGVmNDRiMGJlOTQ3NWE3ZTRiNDAiXSxbIjc2MzVjYTcyZDdlODQzMmMzMzhlYzUzY2QxMjIyMGJjMDFjNDg2ODVlMjRmN2RjOGM2MDJh''@;'; put 'put ''Nzc0Njk5OGU0MzUiLCI5MWI2NDk2MDk0ODlkNjEzZDFkNWU1OTBmNzhlNmQ3NGVjZmMwNjFkNTcwNDhiYWQ5ZTc2ZjMwMmM1YjljNjEiXSxbIjc1NGUzMjM5ZjMyNTU3MGNkYmJmNGE4N2RlZWU4YTY2YjdmMmIzMzQ3OWQ0NjhmYmMxYTUwNzQzYmY1NmNjMTgiLCI2NzNmYjg2ZTViZGEzMGZi''@;'; put 'put ''M2NkMGVkMzA0ZWE0OWEwMjNlZTMzZDAxOTdhNjk1ZDBjNWQ5ODA5M2M1MzY2ODMiXSxbImUzZTZiZDEwNzFhMWU5NmFmZjU3ODU5YzgyZDU3MGYwMzMwODAwNjYxZDFjOTUyZjlmZTI2OTQ2OTFkOWI5ZTgiLCI1OWM5ZTBiYmEzOTRlNzZmNDBjMGFhNTgzNzlhM2NiNmE1YTIyODM5OTNlOTBj''@;'; put 'put ''NDE2NzAwMmFmNDkyMGUzN2Y1Il0sWyIxODZiNDgzZDA1NmEwMzM4MjZhZTczZDg4ZjczMjk4NWM0Y2NiMWYzMmJhMzVmNGI0Y2M0N2ZkY2YwNGFhNmViIiwiM2I5NTJkMzJjNjdjZjc3ZTJlMTc0NDZlMjA0MTgwYWIyMWZiODA5MDg5NTEzOGI0YTRhNzk3Zjg2ZTgwODg4YiJdLFsiZGY5ZDcw''@;'; put 'put ''YTZiOTg3NmNlNTQ0Yzk4NTYxZjRiZTRmNzI1NDQyZTZkMmI3MzdkOWM5MWE4MzIxNzI0Y2UwOTYzZiIsIjU1ZWIyZGFmZDg0ZDZjY2Q1Zjg2MmI3ODVkYzM5ZDRhYjE1NzIyMjcyMGVmOWRhMjE3YjhjNDVjZjJiYTI0MTciXSxbIjVlZGQ1Y2MyM2M1MWU4N2E0OTdjYTgxNWQ1ZGNlMGY4YWI1''@;'; put 'put ''MjU1NGY4NDllZDg5OTVkZTY0YzVmMzRjZTcxNDMiLCJlZmFlOWM4ZGJjMTQxMzA2NjFlOGNlYzAzMGM4OWFkMGMxM2M2NmMwZDE3YTI5MDVjZGM3MDZhYjczOTlhODY4Il0sWyIyOTA3OThjMmI2NDc2ODMwZGExMmZlMDIyODdlOWU3NzdhYTNmYmExYzM1NWIxN2E3MjJkMzYyZjg0NjE0ZmJh''@;'; put 'put ''IiwiZTM4ZGE3NmRjZDQ0MDYyMTk4OGQwMGJjZjc5YWYyNWQ1YjI5YzA5NGRiMmEyMzE0NmQwMDNhZmQ0MTk0M2U3YSJdLFsiYWYzYzQyM2E5NWQ5ZjViMzA1NDc1NGVmYTE1MGFjMzljZDI5NTUyZmUzNjAyNTczNjJkZmRlY2VmNDA1M2I0NSIsImY5OGEzZmQ4MzFlYjJiNzQ5YTkzYjBlNmYz''@;'; put 'put ''NWNmYjQwYzhjZDVhYTY2N2ExNTU4MWJjMmZlZGVkNDk4ZmQ5YzYiXSxbIjc2NmRiYjI0ZDEzNGU3NDVjY2NhYTI4Yzk5YmYyNzQ5MDZiYjY2YjI2ZGNmOThkZjhkMmZlZDUwZDg4NDI0OWEiLCI3NDRiMTE1MmVhY2JlNWUzOGRjYzg4Nzk4MGRhMzhiODk3NTg0YTY1ZmEwNmNlZGQyYzkyNGY5''@;'; put 'put ''N2NiYWM1OTk2Il0sWyI1OWRiZjQ2ZjhjOTQ3NTliYTIxMjc3YzMzNzg0ZjQxNjQ1ZjdiNDRmNmM1OTZhNThjZTkyZTY2NjE5MWFiZTNlIiwiYzUzNGFkNDQxNzVmYmMzMDBmNGVhNmNlNjQ4MzA5YTA0MmNlNzM5YTc5MTk3OThjZDg1ZTIxNmM0YTMwN2Y2ZSJdLFsiZjEzYWRhOTUxMDNjNDUz''@;'; put 'put ''NzMwNWU2OTFlNzRlOWE0YThkZDY0N2U3MTFhOTVlNzNjYjYyZGM2MDE4Y2ZkODdiOCIsImUxMzgxN2I0NGVlMTRkZTY2M2JmNGJjODA4MzQxZjMyNjk0OWUyMWE2YTc1YzI1NzA3Nzg0MTliZGFmNTczM2QiXSxbIjc3NTRiNGZhMGU4YWNlZDA2ZDQxNjdhMmM1OWNjYTRjZGExODY5YzA2ZWJh''@;'; put 'put ''ZGZiNjQ4ODU1MDAxNWE4ODUyMmMiLCIzMGU5M2U4NjRlNjY5ZDgyMjI0Yjk2N2MzMDIwYjhmYThkMWU0ZTM1MGI2Y2JjYzUzN2E0OGI1Nzg0MTE2M2EyIl0sWyI5NDhkY2FkZjU5OTBlMDQ4YWEzODc0ZDQ2YWJlZjlkNzAxODU4Zjk1ZGU4MDQxZDJhNjgyOGM5OWUyMjYyNTE5IiwiZTQ5MWE0''@;'; put 'put ''MjUzN2Y2ZTU5N2Q1ZDI4YTMyMjRiMWJjMjVkZjkxNTRlZmJkMmVmMWQyY2JiYTJjYWU1MzQ3ZDU3ZSJdLFsiNzk2MjQxNDQ1MGM3NmMxNjg5YzdiNDhmODIwMmVjMzdmYjIyNGNmNWFjMGJmYTE1NzAzMjhhOGEzZDdjNzdhYiIsIjEwMGI2MTBlYzRmZmI0NzYwZDVjMWZjMTMzZWY2ZjZiMTI1''@;'; put 'put ''MDdhMDUxZjA0YWM1NzYwYWZhNWIyOWRiODM0MzciXSxbIjM1MTQwODc4MzQ5NjRiNTRiMTViMTYwNjQ0ZDkxNTQ4NWExNjk3NzIyNWI4ODQ3YmIwZGQwODUxMzdlYzQ3Y2EiLCJlZjBhZmJiMjA1NjIwNTQ0OGUxNjUyYzQ4ZTgxMjdmYzYwMzllNzdjMTVjMjM3OGI3ZTdkMTVhMGRlMjkzMzEx''@;'; put 'put ''Il0sWyJkM2NjMzBhZDZiNDgzZTRiYzc5Y2UyYzlkZDhiYzU0OTkzZTk0N2ViOGRmNzg3YjQ0Mjk0M2QzZjdiNTI3ZWFmIiwiOGIzNzhhMjJkODI3Mjc4ZDg5YzVlOWJlOGY5NTA4YWUzYzJhZDQ2MjkwMzU4NjMwYWZiMzRkYjA0ZWVkZTBhNCJdLFsiMTYyNGQ4NDc4MDczMjg2MGNlMWM3OGZj''@;'; put 'put ''YmZlZmUwOGIyYjI5ODIzZGI5MTNmNjQ5Mzk3NWJhMGZmNDg0NzYxMCIsIjY4NjUxY2Y5YjZkYTkwM2UwOTE0NDQ4YzZjZDlkNGNhODk2ODc4ZjUyODJiZTRjOGNjMDZlMmE0MDQwNzg1NzUiXSxbIjczM2NlODBkYTk1NWE4YTI2OTAyYzk1NjMzZTYyYTk4NTE5MjQ3NGI1YWYyMDdkYTZkZjdi''@;'; put 'put ''NGZkNWZjNjFjZDQiLCJmNTQzNWEyYmQyYmFkZjdkNDg1YTRkOGI4ZGI5ZmNjZTNlMWVmOGUwMjAxZTQ1NzhjNTQ2NzNiYzFkYzVlYTFkIl0sWyIxNWQ5NDQxMjU0OTQ1MDY0Y2YxYTFjMzNiYmQzYjQ5Zjg5NjZjNTA5MjE3MWU2OTllZjI1OGRmYWI4MWMwNDVjIiwiZDU2ZWIzMGI2OTQ2M2U3''@;'; put 'put ''MjM0ZjUxMzdiNzNiODQxNzc0MzQ4MDBiYWNlYmZjNjg1ZmMzN2JiZTllZmU0MDcwZCJdLFsiYTFkMGZjZjJlYzlkZTY3NWI2MTIxMzZlNWNlNzBkMjcxYzIxNDE3YzlkMmI4YWFhYWMxMzg1OTlkMDcxNzk0MCIsImVkZDc3ZjUwYmNiNWEzY2FiMmU5MDczNzMwOTY2N2YyNjQxNDYyYTU0MDcw''@;'; put 'put ''ZjNkNTE5MjEyZDM5YzE5N2E2MjkiXSxbImUyMmZiZTE1YzBhZjhjY2M1NzgwYzA3MzVmODRkYmU5YTc5MGJhZGVlODI0NWMwNmM3Y2EzNzMzMWNiMzY5ODAiLCJhODU1YmFiYWQ1Y2Q2MGM4OGI0MzBhNjlmNTNhMWE3YTM4Mjg5MTU0OTY0Nzk5YmU0M2QwNmQ3N2QzMWRhMDYiXSxbIjMxMTA5''@;'; put 'put ''MWRkOTg2MGU4ZTIwZWUxMzQ3M2MxMTU1ZjVmNjk2MzVlMzk0NzA0ZWFhNzQwMDk0NTIyNDZjZmE5YjMiLCI2NmRiNjU2Zjg3ZDFmMDRmZmZkMWYwNDc4OGMwNjgzMDg3MWVjNWE2NGZlZWU2ODViZDgwZjBiMTI4NmQ4Mzc0Il0sWyIzNGMxZmQwNGQzMDFiZTg5YjMxYzA0NDJkM2U2YWMyNDg4''@;'; put 'put ''MzkyOGI0NWE5MzQwNzgxODY3ZDQyMzJlYzJkYmRmIiwiOTQxNDY4NWU5N2IxYjU5NTRiZDQ2ZjczMDE3NDEzNmQ1N2YxY2VlYjQ4NzQ0M2RjNTMyMTg1N2JhNzNhYmVlIl0sWyJmMjE5ZWE1ZDZiNTQ3MDFjMWMxNGRlNWI1NTdlYjQyYThkMTNmM2FiYmNkMDhhZmZjYzJhNWU2YjA0OWI4ZDYz''@;'; put 'put ''IiwiNGNiOTU5NTdlODNkNDBiMGY3M2FmNDU0NGNjY2Y2YjFmNGIwOGQzYzA3YjI3ZmI4ZDhjMjk2MmE0MDA3NjZkMSJdLFsiZDdiODc0MGY3NGE4ZmJhYWIxZjY4M2RiOGY0NWRlMjY1NDNhNTQ5MGJjYTYyNzA4NzIzNjkxMjQ2OWEwYjQ0OCIsImZhNzc5NjgxMjhkOWM5MmVlMTAxMGYzMzdh''@;'; put 'put ''ZDQ3MTdlZmYxNWRiNWVkM2MwNDliMzQxMWUwMzE1ZWFhNDU5M2IiXSxbIjMyZDMxYzIyMmY4ZjZmMGVmODZmN2M5OGQzYTMzMzVlYWQ1YmNkMzJhYmRkOTQyODlmZTRkMzA5MWFhODI0YmYiLCI1ZjMwMzJmNTg5MjE1NmUzOWNjZDNkNzkxNWI5ZTFkYTJlNmRhYzllNmYyNmU5NjExMThkMTRi''@;'; put 'put ''ODQ2MmUxNjYxIl0sWyI3NDYxZjM3MTkxNGFiMzI2NzEwNDVhMTU1ZDk4MzFlYTg3OTNkNzdjZDU5NTkyYzQzNDBmODZjYmMxODM0N2I1IiwiOGVjMGJhMjM4Yjk2YmVjMGNiZGRkY2FlMGFhNDQyNTQyZWVlMWZmNTBjOTg2ZWE2YjM5ODQ3YjNjYzA5MmZmNiJdLFsiZWUwNzlhZGIxZGYxODYw''@;'; put 'put ''MDc0MzU2YTI1YWEzODIwNmE2ZDcxNmIyYzNlNjc0NTNkMjg3Njk4YmFkN2IyYjJkNiIsIjhkYzI0MTJhYWZlM2JlNWM0YzVmMzdlMGVjYzVmOWY2YTQ0Njk4OWFmMDRjNGUyNWViYWFjNDc5ZWMxYzhjMWUiXSxbIjE2ZWM5M2U0NDdlYzgzZjA0NjdiMTgzMDJlZTYyMGY3ZTY1ZGUzMzE4NzRj''@;'; put 'put ''OWRjNzJiZmQ4NjE2YmE5ZGE2YjUiLCI1ZTQ2MzExNTBlNjJmYjQwZDBlOGMyYTdjYTU4MDRhMzlkNTgxODZhNTBlNDk3MTM5NjI2Nzc4ZTI1YjA2NzRkIl0sWyJlYWE1Zjk4MGMyNDVmNmYwMzg5NzgyOTBhZmE3MGI2YmQ4ODU1ODk3Zjk4YjZhYTQ4NWI5NjA2NWQ1MzdiZDk5IiwiZjY1ZjVk''@;'; put 'put ''M2UyOTJjMmUwODE5YTUyODM5MWM5OTQ2MjRkNzg0ODY5ZDdlNmVhNjdmYjE4MDQxMDI0ZWRjMDdkYyJdLFsiNzhjOTQwNzU0NGFjMTMyNjkyZWUxOTEwYTAyNDM5OTU4YWUwNDg3NzE1MTM0MmVhOTZjNGI2YjM1YTQ5ZjUxIiwiZjNlMDMxOTE2OWViOWI4NWQ1NDA0Nzk1NTM5YTVlNjhmYTFm''@;'; put 'put ''YmQ1ODNjMDY0ZDI0NjJiNjc1ZjE5NGEzZGRiNCJdLFsiNDk0ZjRiZTIxOWExYTc3MDE2ZGNkODM4NDMxYWVhMDAwMWNkYzhhZTdhNmZjNjg4NzI2NTc4ZDk3MDI4NTdhNSIsIjQyMjQyYTk2OTI4M2E1ZjMzOWJhN2YwNzVlMzZiYTJhZjkyNWNlMzBkNzY3ZWQ2ZTU1ZjRiMDMxODgwZDU2MmMi''@;'; put 'put ''XSxbImE1OThhODAzMGRhNmQ4NmM2YmM3ZjJmNTE0NGVhNTQ5ZDI4MjExZWE1OGZhYTcwZWJmNGMxZTY2NWMxZmU5YjUiLCIyMDRiNWQ2Zjg0ODIyYzMwN2U0YjRhNzE0MDczN2FlYzIzZmM2M2I2NWIzNWY4NmExMDAyNmRiZDJkODY0ZTZiIl0sWyJjNDE5MTYzNjVhYmIyYjVkMDkxOTJmNWYy''@;'; put 'put ''ZGJlYWZlYzIwOGYwMjBmMTI1NzBhMTg0ZGJhZGMzZTU4NTk1OTk3IiwiNGYxNDM1MWQwMDg3ZWZhNDlkMjQ1YjMyODk4NDk4OWQ1Y2FmOTQ1MGYzNGJmYzBlZDE2ZTk2YjU4ZmE5OTEzIl0sWyI4NDFkNjA2M2E1ODZmYTQ3NWE3MjQ2MDRkYTAzYmM1YjkyYTJlMGQyZTBhMzZhY2ZlNGM3M2E1''@;'; put 'put ''NTE0NzQyODgxIiwiNzM4NjdmNTljMDY1OWU4MTkwNGY5YTFjNzU0MzY5OGU2MjU2MmQ2NzQ0YzE2OWNlN2EzNmRlMDFhOGQ2MTU0Il0sWyI1ZTk1YmIzOTlhNjk3MWQzNzYwMjY5NDdmODliZGUyZjI4MmIzMzgxMDkyOGJlNGRlZDExMmFjNGQ3MGUyMGQ1IiwiMzlmMjNmMzY2ODA5MDg1YmVl''@;'; put 'put ''YmZjNzExODEzMTM3NzVhOTljOWFlZDdkOGJhMzhiMTYxMzg0Yzc0NjAxMjg2NSJdLFsiMzZlNDY0MWE1Mzk0OGZkNDc2YzM5ZjhhOTlmZDk3NGU1ZWMwNzU2NGI1MzE1ZDhiZjk5NDcxYmNhMGVmMmY2NiIsImQyNDI0YjFiMWFiZTRlYjgxNjQyMjdiMDg1YzlhYTk0NTZlYTEzNDkzZmQ1NjNl''@;'; put 'put ''MDZmZDUxY2Y1Njk0Yzc4ZmMiXSxbIjMzNjU4MWVhN2JmYmJiMjkwYzE5MWEyZjUwN2E0MWNmNTY0Mzg0MjE3MGU5MTRmYWVhYjI3YzJjNTc5ZjcyNiIsImVhZDEyMTY4NTk1ZmUxYmU5OTI1MjEyOWI2ZTU2YjMzOTFmN2FiMTQxMGNkMWUwZWYzZGNkY2FiZDJmZGEyMjQiXSxbIjhhYjg5ODE2''@;'; put 'put ''ZGFkZmQ2YjZhMWYyNjM0ZmNmMDBlYzg0MDM3ODEwMjVlZDY4OTBjNDg0OTc0MjcwNmJkNDNlZGUiLCI2ZmRjZWYwOWYyZjZkMGEwNDRlNjU0YWVmNjI0MTM2ZjUwM2Q0NTljM2U4OTg0NTg1OGE0N2E5MTI5Y2RkMjRlIl0sWyIxZTMzZjFhNzQ2YzljNTc3ODEzMzM0NGQ5Mjk5ZmNhYTIwYjA5''@;'; put 'put ''MzhlOGFjZmYyNTQ0YmI0MDI4NGI4YzVmYjk0IiwiNjA2NjAyNTdkZDExYjNhYTljOGVkNjE4ZDI0ZWRmZjIzMDZkMzIwZjFkMDMwMTBlMzNhN2QyMDU3ZjNiM2I2Il0sWyI4NWI3YzFkY2IzY2VjMWI3ZWU3ZjMwZGVkNzlkZDIwYTBlZDFmNGNjMThjYmNmY2ZhNDEwMzYxZmQ4ZjA4ZjMxIiwi''@;'; put 'put ''M2Q5OGE5Y2RkMDI2ZGQ0M2YzOTA0OGYyNWE4ODQ3ZjRmY2FmYWQxODk1ZDdhNjMzYzZmZWQzYzM1ZTk5OTUxMSJdLFsiMjlkZjlmYmQ4ZDllNDY1MDkyNzVmNGIxMjVkNmQ0NWQ3ZmJlOWEzYjg3OGE3YWY4NzJhMjgwMDY2MWFjNWY1MSIsImI0YzRmZTk5Yzc3NWE2MDZlMmQ4ODYyMTc5MTM5''@;'; put 'put ''ZmZkYTYxZGM4NjFjMDE5ZTU1Y2QyODc2ZWIyYTI3ZDg0YiJdLFsiYTBiMWNhZTA2YjBhODQ3YTNmZWE2ZTY3MWFhZjhhZGZkZmU1OGNhMmY3NjgxMDVjODA4MmIyZTQ0OWZjZTI1MiIsImFlNDM0MTAyZWRkZTA5NThlYzRiMTlkOTE3YTZhMjhlNmI3MmRhMTgzNGFmZjBlNjUwZjA0OTUwM2Ey''@;'; put 'put ''OTZjZjIiXSxbIjRlOGNlYWZiOWIzZTlhMTM2ZGM3ZmY2N2U4NDAyOTViNDk5ZGZiM2IyMTMzZTRiYTExM2YyZTRjMGUxMjFlNSIsImNmMjE3NDExOGM4YjZkN2E0YjQ4ZjZkNTM0Y2U1Yzc5NDIyYzA4NmE2MzQ2MDUwMmI4MjdjZTYyYTMyNjY4M2MiXSxbImQyNGE0NGUwNDdlMTliNmY1YWZi''@;'; put 'put ''ODFjN2NhMmY2OTA4MGE1MDc2Njg5YTAxMDkxOWY0MjcyNWMyYjc4OWEzM2IiLCI2ZmI4ZDU1OTFiNDY2ZjhmYzYzZGI1MGYxYzBmMWM2OTAxM2Y5OTY4ODdiODI0NGQyY2RlYzQxN2FmZWE4ZmEzIl0sWyJlYTAxNjA2YTdhNmM5Y2RkMjQ5ZmRmY2ZhY2I5OTU4NDAwMWVkZDI4YWJiYWI3N2I1''@;'; put 'put ''MTA0ZTk4ZThlM2IzNWQ0IiwiMzIyYWY0OTA4YzczMTJiMGNmYmZlMzY5ZjdhN2IzY2RiN2Q0NDk0YmMyODIzNzAwY2ZkNjUyMTg4YTNlYTk4ZCJdLFsiYWY4YWRkYmYyYjY2MWM4YTZjNjMyODY1NWViOTY2NTEyNTIwMDdkOGM1ZWEzMWJlNGFkMTk2ZGU4Y2UyMTMxZiIsIjY3NDllNjdjMDI5''@;'; put 'put ''Yjg1ZjUyYTAzNGVhZmQwOTY4MzZiMjUyMDgxODY4MGUyNmFjOGYzZGZiY2RiNzE3NDk3MDAiXSxbImUzYWUxOTc0NTY2Y2EwNmNjNTE2ZDQ3ZTBmYjE2NWE2NzRhM2RhYmNmY2ExNWU3MjJmMGUzNDUwZjQ1ODg5IiwiMmFlYWJlN2U0NTMxNTEwMTE2MjE3ZjA3YmY0ZDA3MzAwZGU5N2U0ODc0''@;'; put 'put ''ZjgxZjUzMzQyMGE3MmVlYjBiZDZhNCJdLFsiNTkxZWUzNTUzMTNkOTk3MjFjZjY5OTNmZmVkMWUzZTMwMTk5M2ZmM2VkMjU4ODAyMDc1ZWE4Y2VkMzk3ZTI0NiIsImIwZWE1NThhMTEzYzMwYmVhNjBmYzQ3NzU0NjBjNzkwMWZmMGIwNTNkMjVjYTJiZGVlZTk4ZjFhNGJlNWQxOTYiXSxbIjEx''@;'; put 'put ''Mzk2ZDU1ZmRhNTRjNDlmMTlhYTk3MzE4ZDhkYTYxZmE4NTg0ZTQ3YjA4NDk0NTA3N2NmMDMyNTViNTI5ODQiLCI5OThjNzRhOGNkNDVhYzAxMjg5ZDU4MzNhN2JlYjQ3NDRmZjUzNmIwMWIyNTdiZTRjNTc2N2JlYTkzZWE1N2E0Il0sWyIzYzVkMmExYmEzOWM1YTE3OTAwMDA3MzhjOWUwYzQw''@;'; put 'put ''YjhkY2RmZDU0Njg3NTRiNjQwNTU0MDE1N2UwMTdhYTdhIiwiYjIyODQyNzk5OTVhMzRlMmY5ZDRkZTczOTZmYzE4YjgwZjliOGI5ZmRkMjcwZjY2NjFmNzljYTRjODFiZDI1NyJdLFsiY2M4NzA0YjhhNjBhMGRlZmEzYTk5YTcyOTlmMmU5YzNmYmMzOTVhZmIwNGFjMDc4NDI1ZWY4YTE3OTNj''@;'; put 'put ''YzAzMCIsImJkZDQ2MDM5ZmVlZDE3ODgxZDFlMDg2MmRiMzQ3ZjhjZjM5NWI3NGZjNGJjZGM0ZTk0MGI3NGUzYWMxZjFiMTMiXSxbImM1MzNlNGY3ZWE4NTU1YWFjZDk3NzdhYzVjYWQyOWI5N2RkNGRlZmNjYzUzZWU3ZWEyMDQxMTliMjg4OWIxOTciLCI2ZjBhMjU2YmM1ZWZkZjQyOWEyZmI2''@;'; put 'put ''MjQyZjFhNDNhMmQ5YjkyNWJiNGE0YjNhMjZiYjhlMGY0NWViNTk2MDk2Il0sWyJjMTRmOGYyY2NiMjdkNmYxMDlmNmQwOGQwM2NjOTZhNjliYThjMzRlZWMwN2JiY2Y1NjZkNDhlMzNkYTY1OTMiLCJjMzU5ZDY5MjNiYjM5OGY3ZmQ0NDczZTE2ZmUxYzI4NDc1Yjc0MGRkMDk4MDc1ZTZjMGU4''@;'; put 'put ''NjQ5MTEzZGMzYTM4Il0sWyJhNmNiYzMwNDZiYzZhNDUwYmFjMjQ3ODlmYTE3MTE1YTRjOTczOWVkNzVmOGYyMWNlNDQxZjcyZTBiOTBlNmVmIiwiMjFhZTdmNDY4MGU4ODliYjEzMDYxOWUyYzBmOTVhMzYwY2ViNTczYzcwNjAzMTM5ODYyYWZkNjE3ZmE5YjlmIl0sWyIzNDdkNmQ5YTAyYzQ4''@;'; put 'put ''OTI3ZWJmYjg2YzEzNTliMWNhZjEzMGEzYzAyNjdkMTFjZTYzNDRiMzlmOTlkNDNjYzM4IiwiNjBlYTdmNjFhMzUzNTI0ZDFjOTg3ZjZlY2VjOTJmMDg2ZDU2NWFiNjg3ODcwY2IxMjY4OWZmMWUzMWM3NDQ0OCJdLFsiZGE2NTQ1ZDIxODFkYjhkOTgzZjdkY2IzNzVlZjU4NjZkNDdjNjdiMWJm''@;'; put 'put ''MzFjOGNmODU1ZWY3NDM3YjcyNjU2YSIsIjQ5Yjk2NzE1YWI2ODc4YTc5ZTc4ZjA3Y2U1NjgwYzVkNjY3MzA1MWI0OTM1YmQ4OTdmZWE4MjRiNzdkYzIwOGEiXSxbImM0MDc0N2NjOWQwMTJjYjFhMTNiODE0ODMwOWM2ZGU3ZWMyNWQ2OTQ1ZDY1NzE0NmI5ZDU5OTRiOGZlYjExMTEiLCI1Y2E1''@;'; put 'put ''NjA3NTNiZTJhMTJmYzZkZTZjYWYyY2I0ODk1NjVkYjkzNjE1NmI5NTE0ZTFiYjVlODMwMzdlMGZhMmQ0Il0sWyI0ZTQyYzhlYzgyYzk5Nzk4Y2NmM2E2MTBiZTg3MGU3ODMzOGM3ZjcxMzM0OGJkMzRjODIwM2VmNDAzN2YzNTAyIiwiNzU3MWQ3NGVlNWUwZmI5MmE3YThiMzNhMDc3ODMzNDFh''@;'; put 'put ''NTQ5MjE0NGNjNTRiY2M0MGE5NDQ3MzY5MzYwNjQzNyJdLFsiMzc3NWFiNzA4OWJjNmFmODIzYWJhMmUxYWY3MGIyMzZkMjUxY2FkYjBjODY3NDMyODc1MjJhMWIzYjBkZWRlYSIsImJlNTJkMTA3YmNmYTA5ZDhiY2I5NzM2YTgyOGNmYTdmYWM4ZGIxN2JmN2E3NmEyYzQyYWQ5NjE0MDkwMThj''@;'; put 'put ''ZjciXSxbImNlZTMxY2JmN2UzNGVjMzc5ZDk0ZmI4MTRkM2Q3NzVhZDk1NDU5NWQxMzE0YmE4ODQ2OTU5ZTNlODJmNzRlMjYiLCI4ZmQ2NGExNGMwNmI1ODljMjZiOTQ3YWUyYmNmNmJmYTAxNDllZjBiZTE0ZWQ0ZDgwZjQ0OGEwMWM0M2IxYzZkIl0sWyJiNGY5ZWFlYTA5YjY5MTc2MTlmNmVh''@;'; put 'put ''NmE0ZWI1NDY0ZWZkZGI1OGZkNDViMWViZWZjZGMxYTAxZDA4YjQ3OTg2IiwiMzllNWM5OTI1YjVhNTRiMDc0MzNhNGYxOGM2MTcyNmY4YmIxMzFjMDEyY2E1NDJlYjI0YThhYzA3MjAwNjgyYSJdLFsiZDQyNjNkZmMzZDJkZjkyM2EwMTc5YTQ4OTY2ZDMwY2U4NGUyNTE1YWZjM2RjY2MxYjc3''@;'; put 'put ''OTA3NzkyZWJjYzYwZSIsIjYyZGZhZjA3YTBmNzhmZWIzMGUzMGQ2Mjk1ODUzY2UxODllMTI3NzYwYWQ2Y2Y3ZmFlMTY0ZTEyMmEyMDhkNTQiXSxbIjQ4NDU3NTI0ODIwZmE2NWE0ZjhkMzVlYjY5MzA4NTdjMDAzMmFjYzBhNGEyZGU0MjIyMzNlZWRhODk3NjEyYzQiLCIyNWE3NDhhYjM2Nzk3''@;'; put 'put ''OWQ5ODczM2MzOGExZmExYzJlN2RjNmNjMDdkYjJkNjBhOWFlN2E3NmFhYTQ5YmQwZjc3Il0sWyJkZmVlZWYxODgxMTAxZjJjYjExNjQ0ZjNhMmFmZGZjMjA0NWUxOTkxOTE1MjkyM2YzNjdhMTc2N2MxMWNjZWRhIiwiZWNmYjcwNTZjZjFkZTA0MmY5NDIwYmFiMzk2NzkzYzBjMzkwYmRlNzRi''@;'; put 'put ''NGJiZGZmMTZhODNhZTA5YTlhNzUxNyJdLFsiNmQ3ZWY2YjE3NTQzZjgzNzNjNTczZjQ0ZTFmMzg5ODM1ZDg5YmNiYzYwNjJjZWQzNmM4MmRmODNiOGZhZTg1OSIsImNkNDUwZWMzMzU0Mzg5ODZkZmVmYTEwYzU3ZmVhOWJjYzUyMWEwOTU5YjJkODBiYmY3NGIxOTBkY2E3MTJkMTAiXSxbImU3''@;'; put 'put ''NTYwNWQ1OTEwMmE1YTI2ODQ1MDBkM2I5OTFmMmUzZjNjODhiOTMyMjU1NDcwMzVhZjI1YWY2NmUwNDU0MWYiLCJmNWM1NDc1NGE4ZjcxZWU1NDBiOWI0ODcyODQ3M2UzMTRmNzI5YWM1MzA4YjA2OTM4MzYwOTkwZTJiZmFkMTI1Il0sWyJlYjk4NjYwZjRjNGRmYWEwNmEyYmU0NTNkNTAyMGJj''@;'; put 'put ''OTlhMGMyZTYwYWJlMzg4NDU3ZGQ0M2ZlZmIxZWQ2MjBjIiwiNmNiOWE4ODc2ZDljYjg1MjA2MDlhZjNhZGQyNmNkMjBhMGE3Y2Q4YTk0MTExMzFjZTg1ZjQ0MTAwMDk5MjIzZSJdLFsiMTNlODdiMDI3ZDg1MTRkMzU5MzlmMmU2ODkyYjE5OTIyMTU0NTk2OTQxODg4MzM2ZGMzNTYzZTNiOGRi''@;'; put 'put ''YTk0MiIsImZlZjVhM2M2ODA1OWE2ZGVjNWQ2MjQxMTRiZjFlOTFhYWMyYjlkYTU2OGQ2YWJlYjI1NzBkNTU2NDZiOGFkZjEiXSxbImVlMTYzMDI2ZTlmZDZmZTAxN2MzOGYwNmE1YmU2ZmMxMjU0MjRiMzcxY2UyNzA4ZTdiZjQ0OTE2OTFlNTc2NGEiLCIxYWNiMjUwZjI1NWRkNjFjNDNkOTRj''@;'; put 'put ''Y2M2NzBkMGY1OGY0OWFlM2ZhMTViOTY2MjNlNTQzMGRhMGFkNmM2MmIyIl0sWyJiMjY4ZjVlZjlhZDUxZTRkNzhkZTNhNzUwYzJkYzg5YjFlNjI2ZDQzNTA1ODY3OTk5OTMyZTVkYjMzYWYzZDgwIiwiNWYzMTBkNGIzYzk5YjllYmIxOWY3N2Q0MWMxZGVlMDE4Y2YwZDM0ZmQ0MTkxNjE0MDAz''@;'; put 'put ''ZTk0NWExMjE2ZTQyMyJdLFsiZmYwN2YzMTE4YTlkZjAzNWU5ZmFkODVlYjZjN2JmZTQyYjAyZjAxY2E5OWNlZWEzYmY3ZmZkYmE5M2M0NzUwZCIsIjQzODEzNmQ2MDNlODU4YTNhNWM0NDBjMzhlY2NiYWRkYzFkMjk0MjExNGUyZWRkZDQ3NDBkMDk4Y2VkMWYwZDgiXSxbIjhkOGI5ODU1Yzdj''@;'; put 'put ''MDUyYTM0MTQ2ZmQyMGZmYjY1OGJlYTRiOWY2OWUwZDgyNWViZWMxNmU4YzNjZTJiNTI2YTEiLCJjZGI1NTllZWRjMmQ3OWY5MjZiYWY0NGZiODRlYTRkNDRiY2Y1MGZlZTUxZDdjZWIzMGUyZTdmNDYzMDM2NzU4Il0sWyI1MmRiMGI1Mzg0ZGZiZjA1YmZhOWQ0NzJkN2FlMjZkZmU0Yjg1MWNl''@;'; put 'put ''Y2E5MWIxZWJhNTQyNjMxODBkYTMyYjYzIiwiYzNiOTk3ZDA1MGVlNWQ0MjNlYmFmNjZhNmRiOWY1N2IzMTgwYzkwMjg3NTY3OWRlOTI0YjY5ZDg0YTdiMzc1Il0sWyJlNjJmOTQ5MGQzZDUxZGE2Mzk1ZWZkMjRlODA5MTljYzdkMGYyOWMzZjNmYTQ4YzZmZmY1NDNiZWNiZDQzMzUyIiwiNmQ4''@;'; put 'put ''OWFkN2JhNDg3NmIwYjIyYzJjYTI4MGM2ODI4NjJmMzQyYzg1OTFmMWRhZjUxNzBlMDdiZmQ5Y2NhZmE3ZCJdLFsiN2YzMGVhMjQ3NmIzOTliNDk1NzUwOWM4OGY3N2QwMTkxYWZhMmZmNWNiN2IxNGZkNmQ4ZTdkNjVhYWFiMTE5MyIsImNhNWVmN2Q0YjIzMWM5NGMzYjE1Mzg5YTVmNjMxMWU5''@;'; put 'put ''ZGFmZjdiYjY3YjEwM2U5ODgwZWY0YmZmNjM3YWNhZWMiXSxbIjUwOThmZjFlMWQ5ZjE0ZmI0NmEyMTBmYWRhNmM5MDNmZWYwZmI3YjRhMWRkMWQ5YWM2MGEwMzYxODAwYjdhMDAiLCI5NzMxMTQxZDgxZmM4ZjgwODRkMzdjNmU3NTQyMDA2YjNlZTFiNDBkNjBkZmU1MzYyYTViMTMyZmQxN2Rk''@;'; put 'put ''YzAiXSxbIjMyYjc4YzdkZTllZTUxMmE3Mjg5NWJlNmI5Y2JlZmE2ZTJmM2M0Y2NjZTQ0NWM5NmI5ZjJjODFlMjc3OGFkNTgiLCJlZTE4NDlmNTEzZGY3MWUzMmVmYzM4OTZlZTI4MjYwYzczYmI4MDU0N2FlMjI3NWJhNDk3MjM3Nzk0Yzg3NTNjIl0sWyJlMmNiNzRmZGRjOGU5ZmJjZDA3NmVl''@;'; put 'put ''ZjJhN2M3MmIwY2UzN2Q1MGYwODI2OWRmYzA3NGI1ODE1NTA1NDdhNGY3IiwiZDNhYTJlZDcxYzlkZDIyNDdhNjJkZjA2MjczNmViMGJhZGRlYTllMzYxMjJkMmJlODY0MWFiY2IwMDVjYzRhNCJdLFsiODQzODQ0NzU2NmQ0ZDdiZWRhZGMyOTk0OTZhYjM1NzQyNjAwOWEzNWYyMzVjYjE0MWJl''@;'; put 'put ''MGQ5OWNkMTBhZTNhOCIsImM0ZTEwMjA5MTY5ODBhNGRhNWQwMWFjNWU2YWQzMzA3MzRlZjBkNzkwNjYzMWM0ZjIzOTA0MjZiMmVkZDc5MWYiXSxbIjQxNjJkNDg4Yjg5NDAyMDM5YjU4NGM2ZmM2YzMwODg3MDU4N2Q5YzQ2ZjY2MGI4NzhhYjY1YzgyYzcxMWQ2N2UiLCI2NzE2M2U5MDMyMzYy''@;'; put 'put ''ODlmNzc2ZjIyYzI1ZmI4YTNhZmMxNzMyZjJiODRiNGU5NWRiZGE0N2FlNWEwODUyNjQ5Il0sWyIzZmFkM2ZhODRjYWYwZjM0ZjBmODliZmQyZGNmNTRmYzE3NWQ3NjdhZWMzZTUwNjg0ZjNiYTRhNGJmNWY2ODNkIiwiY2QxYmM3Y2I2Y2M0MDdiYjJmMGNhNjQ3YzcxOGE3MzBjZjcxODcyZTdk''@;'; put 'put ''MGQyYTUzZmEyMGVmY2RmZTYxODI2Il0sWyI2NzRmMjYwMGEzMDA3YTAwNTY4YzFhN2NlMDVkMDgxNmMxZmI4NGJmMTM3MDc5OGYxYzY5NTMyZmFlYjFhODZiIiwiMjk5ZDIxZjk0MTNmMzNiM2VkZjQzYjI1NzAwNDU4MGI3MGRiNTdkYTBiMTgyMjU5ZTA5ZWVjYzY5ZTBkMzhhNSJdLFsiZDMy''@;'; put 'put ''ZjRkYTU0YWRlNzRhYmI4MWI4MTVhZDFmYjNiMjYzZDgyZDZjNjkyNzE0YmNmZjg3ZDI5YmQ1ZWU5ZjA4ZiIsImY5NDI5ZTczOGI4ZTUzYjk2OGU5OTAxNmMwNTk3MDc3ODJlMTRmNDUzNTM1OWQ1ODJmYzQxNjkxMGIzZWVhODciXSxbIjMwZTRlNjcwNDM1Mzg1NTU2ZTU5MzY1NzEzNTg0NWQz''@;'; put 'put ''NmZiYjY5MzFmNzJiMDhjYjFlZDk1NGYxZTNjZTNmZjYiLCI0NjJmOWJjZTYxOTg5ODYzODQ5OTM1MDExM2JiYzliMTBhODc4ZDM1ZGE3MDc0MGRjNjk1YTU1OWViODhkYjdiIl0sWyJiZTIwNjIwMDNjNTFjYzMwMDQ2ODI5MDQzMzBlNGRlZTdmM2RjZDEwYjAxZTU4MGJmMTk3MWIwNGQ0Y2Fk''@;'; put 'put ''Mjk3IiwiNjIxODhiYzQ5ZDYxZTU0Mjg1NzNkNDhhNzRlMWM2NTViMWM2MTA5MDkwNTY4MmEwZDU1NThlZDcyZGNjYjliYyJdLFsiOTMxNDQ0MjNhY2UzNDUxZWQyOWUwZmI5YWMyYWYyMTFjYjZlODRhNjAxZGY1OTkzYzQxOTg1OWZmZjVkZjA0YSIsIjdjMTBkZmIxNjRjMzQyNWY1YzcxYTNm''@;'; put 'put ''OWQ3OTkyMDM4ZjEwNjUyMjRmNzJiYjlkMWQ5MDJhNmQxMzAzN2I0N2MiXSxbImIwMTVmODA0NGY1ZmNiZGNmMjFjYTI2ZDZjMzRmYjgxOTc4MjkyMDVjN2I3ZDJhN2NiNjY0MThjMTU3YjExMmMiLCJhYjhjMWUwODZkMDRlODEzNzQ0YTY1NWIyZGY4ZDVmODNiM2NkYzZmYWEzMDg4YzFkM2Fl''@;'; put 'put ''YTE0NTRlM2ExZDVmIl0sWyJkNWU5ZTFkYTY0OWQ5N2Q4OWU0ODY4MTE3YTQ2NWEzYTRmOGExOGRlNTdhMTQwZDM2YjNmMmFmMzQxYTIxYjUyIiwiNGNiMDQ0MzdmMzkxZWQ3MzExMWExM2NjMWQ0ZGQwZGIxNjkzNDY1YzIyNDA0ODBkODk1NWU4NTkyZjI3NDQ3YSJdLFsiZDNhZTQxMDQ3ZGQ3''@;'; put 'put ''Y2EwNjVkYmY4ZWQ3N2I5OTI0Mzk5ODMwMDVjZDcyZTE2ZDZmOTk2YTUzMTZkMzY5NjZiYiIsImJkMWFlYjIxYWQyMmViYjIyYTEwZjAzMDM0MTdjNmQ5NjRmOGNkZDdkZjBhY2E2MTRiMTBkYzE0ZDEyNWFjNDYiXSxbIjQ2M2UyNzYzZDg4NWY5NThmYzY2Y2RkMjI4MDBmMGE0ODcxOTdkMGE4''@;'; put 'put ''MmUzNzdiNDlmODBhZjg3Yzg5N2IwNjUiLCJiZmVmYWNkYjBlNWQwZmQ3ZGYzYTMxMWE5NGRlMDYyYjI2YjgwYzYxZmJjOTc1MDhiNzk5OTI2NzFlZjdjYTdmIl0sWyI3OTg1ZmRmZDEyN2MwNTY3YzZmNTNlYzFiYjYzZWMzMTU4ZTU5N2M0MGJmZTc0N2M4M2NkZGZjOTEwNjQxOTE3IiwiNjAz''@;'; put 'put ''YzEyZGFmM2Q5ODYyZWYyYjI1ZmUxZGUyODlhZWQyNGVkMjkxZTBlYzY3MDg3MDNhNWJkNTY3ZjMyZWQwMyJdLFsiNzRhMWFkNmI1Zjc2ZTM5ZGIyZGQyNDk0MTBlYWM3Zjk5ZTc0YzU5Y2I4M2QyZDBlZDVmZjE1NDNkYTc3MDNlOSIsImNjNjE1N2VmMThjOWM2M2NkNjE5M2Q4MzYzMWJiZWEw''@;'; put 'put ''MDkzZTA5Njg5NDJlOGMzM2Q1NzM3ZmQ3OTBlMGRiMDgiXSxbIjMwNjgyYTUwNzAzMzc1ZjYwMmQ0MTY2NjRiYTE5YjdmYzliYWI0MmM3Mjc0NzQ2M2E3MWQwODk2YjIyZjZkYTMiLCI1NTNlMDRmNmIwMThiNGZhNmM4ZjM5ZTdmMzExZDMxNzYyOTBkMGUwZjE5Y2E3M2YxNzcxNGQ5OTc3YTIy''@;'; put 'put ''ZmY4Il0sWyI5ZTIxNThmMGQ3YzBkNWYyNmMzNzkxZWZlZmE3OTU5NzY1NGU3YTJiMjQ2NGY1MmIxZWU2YzEzNDc3NjllZjU3IiwiNzEyZmNkZDFiOTA1M2YwOTAwM2EzNDgxZmE3NzYyZTlmZmQ3YzhlZjM1YTM4NTA5ZTJmYmYyNjI5MDA4MzczIl0sWyIxNzZlMjY5ODlhNDNjOWNmZWJhNDAy''@;'; put 'put ''OWMyMDI1MzhjMjgxNzJlNTY2ZTNjNGZjZTczMjI4NTdmM2JlMzI3ZDY2IiwiZWQ4Y2M5ZDA0YjI5ZWI4NzdkMjcwYjQ4NzhkYzQzYzE5YWVmZDMxZjRlZWUwOWVlN2I0NzgzNGMxZmE0YjFjMyJdLFsiNzVkNDZlZmVhMzc3MWU2ZTY4YWJiODlhMTNhZDc0N2VjZjE4OTIzOTNkZmM0ZjFiNzAw''@;'; put 'put ''NDc4OGM1MDM3NGRhOCIsIjk4NTIzOTBhOTk1MDc2NzlmZDBiODZmZDJiMzlhODY4ZDdlZmMyMjE1MTM0NmUxYTNjYTQ3MjY1ODZhNmJlZDgiXSxbIjgwOWEyMGM2N2Q2NDkwMGZmYjY5OGM0YzgyNWY2ZDVmMjMxMGZiMDQ1MWM4NjkzNDViNzMxOWY2NDU2MDU3MjEiLCI5ZTk5NDk4MGQ5OTE3''@;'; put 'put ''ZTIyYjc2YjA2MTkyN2ZhMDQxNDNkMDk2Y2NjNTQ5NjNlNmE1ZWJmYTVmM2Y4ZTI4NmMxIl0sWyIxYjM4OTAzYTQzZjdmMTE0ZWQ0NTAwYjRlYWM3MDgzZmRlZmVjZTFjZjI5YzYzNTI4ZDU2MzQ0NmY5NzJjMTgwIiwiNDAzNmVkYzkzMWE2MGFlODg5MzUzZjc3ZmQ1M2RlNGEyNzA4YjI2YjZm''@;'; put 'put ''NWRhNzJhZDMzOTQxMTlkYWY0MDhmOSJdXX19fSw2MTk3MDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUplLEI9TCgxNzQzMyksRT1MKDMyMzkxKSxFZT1MKDU4MTk1KTttZS5hc3NlcnQ9RSxtZS50b0FycmF5PUVlLnRvQXJyYXksbWUuemVybzI9RWUuemVybzIsbWUudG9IZXg9''@;'; put 'put ''RWUudG9IZXgsbWUuZW5jb2RlPUVlLmVuY29kZSxtZS5nZXROQUY9ZnVuY3Rpb24gVShZLFcsTil7dmFyIHRlPW5ldyBBcnJheShNYXRoLm1heChZLmJpdExlbmd0aCgpLE4pKzEpO3RlLmZpbGwoMCk7Zm9yKHZhciBLPTE8PFcrMSxKPVkuY2xvbmUoKSxzZT0wO3NlPHRlLmxlbmd0aDtzZSsr''@;'; put 'put ''KXt2YXIgb2UsY2U9Si5hbmRsbihLLTEpO0ouaXNPZGQoKT9KLmlzdWJuKG9lPWNlPihLPj4xKS0xPyhLPj4xKS1jZTpjZSk6b2U9MCx0ZVtzZV09b2UsSi5pdXNocm4oMSl9cmV0dXJuIHRlfSxtZS5nZXRKU0Y9ZnVuY3Rpb24gUShZLFcpe3ZhciBOPVtbXSxbXV07WT1ZLmNsb25lKCksVz1X''@;'; put 'put ''LmNsb25lKCk7Zm9yKHZhciBKLHRlPTAsSz0wO1kuY21wbigtdGUpPjB8fFcuY21wbigtSyk+MDspe3ZhciBjZSxkZSxzZT1ZLmFuZGxuKDMpK3RlJjMsb2U9Vy5hbmRsbigzKStLJjM7Mz09PXNlJiYoc2U9LTEpLDM9PT1vZSYmKG9lPS0xKSxjZT0wPT0oMSZzZSk/MDozIT0oSj1ZLmFuZGxu''@;'; put 'put ''KDcpK3RlJjcpJiY1IT09Snx8MiE9PW9lP3NlOi1zZSxOWzBdLnB1c2goY2UpLGRlPTA9PSgxJm9lKT8wOjMhPShKPVcuYW5kbG4oNykrSyY3KSYmNSE9PUp8fDIhPT1zZT9vZTotb2UsTlsxXS5wdXNoKGRlKSwyKnRlPT09Y2UrMSYmKHRlPTEtdGUpLDIqSz09PWRlKzEmJihLPTEtSyksWS5p''@;'; put 'put ''dXNocm4oMSksVy5pdXNocm4oMSl9cmV0dXJuIE59LG1lLmNhY2hlZFByb3BlcnR5PWZ1bmN0aW9uIGooWSxXLE4pe3ZhciB0ZT0iXyIrVztZLnByb3RvdHlwZVtXXT1mdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzW3RlXT90aGlzW3RlXTp0aGlzW3RlXT1OLmNhbGwodGhpcyl9fSxt''@;'; put 'put ''ZS5wYXJzZUJ5dGVzPWZ1bmN0aW9uIHJlKFkpe3JldHVybiJzdHJpbmciPT10eXBlb2YgWT9tZS50b0FycmF5KFksImhleCIpOll9LG1lLmludEZyb21MRT1mdW5jdGlvbiBhZShZKXtyZXR1cm4gbmV3IEIoWSwiaGV4IiwibGUiKX19LDE3NDMzOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlv''@;'; put 'put ''bihtZSxCKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gRShoZSxPKXtpZighaGUpdGhyb3cgbmV3IEVycm9yKE98fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gRWUoaGUsTyl7aGUuc3VwZXJfPU87dmFyIHo9ZnVuY3Rpb24oKXt9O3oucHJvdG90eXBlPU8ucHJvdG90eXBlLGhlLnByb3Rv''@;'; put 'put ''dHlwZT1uZXcgeixoZS5wcm90b3R5cGUuY29uc3RydWN0b3I9aGV9ZnVuY3Rpb24gVShoZSxPLHope2lmKFUuaXNCTihoZSkpcmV0dXJuIGhlO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1oZSYmKCgibGUiPT09T3x8''@;'; put 'put ''ImJlIj09PU8pJiYoej1PLE89MTApLHRoaXMuX2luaXQoaGV8fDAsT3x8MTAsenx8ImJlIikpfXZhciBROyJvYmplY3QiPT10eXBlb2YgbWU/bWUuZXhwb3J0cz1VOkIuQk49VSxVLkJOPVUsVS53b3JkU2l6ZT0yNjt0cnl7UT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09''@;'; put 'put ''d2luZG93LkJ1ZmZlcj93aW5kb3cuQnVmZmVyOkwoODU1NjgpLkJ1ZmZlcn1jYXRjaChoZSl7fWZ1bmN0aW9uIGooaGUsTyl7dmFyIHo9aGUuY2hhckNvZGVBdChPKTtyZXR1cm4gej49NjUmJno8PTcwP3otNTU6ej49OTcmJno8PTEwMj96LTg3OnotNDgmMTV9ZnVuY3Rpb24gcmUoaGUsTyx6''@;'; put 'put ''KXt2YXIgZWU9aihoZSx6KTtyZXR1cm4gei0xPj1PJiYoZWV8PWooaGUsei0xKTw8NCksZWV9ZnVuY3Rpb24gYWUoaGUsTyx6LGVlKXtmb3IodmFyIG5lPTAseD1NYXRoLm1pbihoZS5sZW5ndGgseiksUD1PO1A8eDtQKyspe3ZhciBWPWhlLmNoYXJDb2RlQXQoUCktNDg7bmUqPWVlLG5lKz1W''@;'; put 'put ''Pj00OT9WLTQ5KzEwOlY+PTE3P1YtMTcrMTA6Vn1yZXR1cm4gbmV9VS5pc0JOPWZ1bmN0aW9uKE8pe3JldHVybiBPIGluc3RhbmNlb2YgVXx8bnVsbCE9PU8mJiJvYmplY3QiPT10eXBlb2YgTyYmTy5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PVUud29yZFNpemUmJkFycmF5LmlzQXJyYXkoTy53''@;'; put 'put ''b3Jkcyl9LFUubWF4PWZ1bmN0aW9uKE8seil7cmV0dXJuIE8uY21wKHopPjA/Tzp6fSxVLm1pbj1mdW5jdGlvbihPLHope3JldHVybiBPLmNtcCh6KTwwP086en0sVS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oTyx6LGVlKXtpZigibnVtYmVyIj09dHlwZW9mIE8pcmV0dXJuIHRoaXMuX2lu''@;'; put 'put ''aXROdW1iZXIoTyx6LGVlKTtpZigib2JqZWN0Ij09dHlwZW9mIE8pcmV0dXJuIHRoaXMuX2luaXRBcnJheShPLHosZWUpOyJoZXgiPT09eiYmKHo9MTYpLEUoej09PSgwfHopJiZ6Pj0yJiZ6PD0zNik7dmFyIG5lPTA7Ii0iPT09KE89Ty50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlb''@;'; put 'put ''MF0mJihuZSsrLHRoaXMubmVnYXRpdmU9MSksbmU8Ty5sZW5ndGgmJigxNj09PXo/dGhpcy5fcGFyc2VIZXgoTyxuZSxlZSk6KHRoaXMuX3BhcnNlQmFzZShPLHosbmUpLCJsZSI9PT1lZSYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHosZWUpKSl9LFUucHJvdG90eXBlLl9pbml0''@;'; put 'put ''TnVtYmVyPWZ1bmN0aW9uKE8seixlZSl7TzwwJiYodGhpcy5uZWdhdGl2ZT0xLE89LU8pLE88NjcxMDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJk9dLHRoaXMubGVuZ3RoPTEpOk88NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmTyxPLzY3MTA4ODY0JjY3MTA4ODYz''@;'; put 'put ''XSx0aGlzLmxlbmd0aD0yKTooRShPPDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJk8sTy82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09ZWUmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSx6LGVlKX0sVS5wcm90b3R5cGUuX2lu''@;'; put 'put ''aXRBcnJheT1mdW5jdGlvbihPLHosZWUpe2lmKEUoIm51bWJlciI9PXR5cGVvZiBPLmxlbmd0aCksTy5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoTy5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXko''@;'; put 'put ''dGhpcy5sZW5ndGgpO2Zvcih2YXIgbmU9MDtuZTx0aGlzLmxlbmd0aDtuZSsrKXRoaXMud29yZHNbbmVdPTA7dmFyIHgsUCxWPTA7aWYoImJlIj09PWVlKWZvcihuZT1PLmxlbmd0aC0xLHg9MDtuZT49MDtuZS09Myl0aGlzLndvcmRzW3hdfD0oUD1PW25lXXxPW25lLTFdPDw4fE9bbmUtMl08''@;'; put 'put ''PDE2KTw8ViY2NzEwODg2Myx0aGlzLndvcmRzW3grMV09UD4+PjI2LVYmNjcxMDg4NjMsKFYrPTI0KT49MjYmJihWLT0yNix4KyspO2Vsc2UgaWYoImxlIj09PWVlKWZvcihuZT0wLHg9MDtuZTxPLmxlbmd0aDtuZSs9Myl0aGlzLndvcmRzW3hdfD0oUD1PW25lXXxPW25lKzFdPDw4fE9bbmUr''@;'; put 'put ''Ml08PDE2KTw8ViY2NzEwODg2Myx0aGlzLndvcmRzW3grMV09UD4+PjI2LVYmNjcxMDg4NjMsKFYrPTI0KT49MjYmJihWLT0yNix4KyspO3JldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihPLHosZWUpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoTy5s''@;'; put 'put ''ZW5ndGgteikvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgbmU9MDtuZTx0aGlzLmxlbmd0aDtuZSsrKXRoaXMud29yZHNbbmVdPTA7dmFyIFYseD0wLFA9MDtpZigiYmUiPT09ZWUpZm9yKG5lPU8ubGVuZ3RoLTE7bmU+PXo7bmUtPTIpVj1yZShPLHosbmUp''@;'; put 'put ''PDx4LHRoaXMud29yZHNbUF18PTY3MTA4ODYzJlYseD49MTg/KHgtPTE4LHRoaXMud29yZHNbUCs9MV18PVY+Pj4yNik6eCs9ODtlbHNlIGZvcihuZT0oTy5sZW5ndGgteiklMj09MD96KzE6ejtuZTxPLmxlbmd0aDtuZSs9MilWPXJlKE8seixuZSk8PHgsdGhpcy53b3Jkc1tQXXw9NjcxMDg4''@;'; put 'put ''NjMmVix4Pj0xOD8oeC09MTgsdGhpcy53b3Jkc1tQKz0xXXw9Vj4+PjI2KTp4Kz04O3RoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbihPLHosZWUpe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBuZT0wLHg9MTt4PD02NzEwODg2Mzt4Kj16''@;'; put 'put ''KW5lKys7bmUtLSx4PXgvenwwO2Zvcih2YXIgUD1PLmxlbmd0aC1lZSxWPVAlbmUsVD1NYXRoLm1pbihQLFAtVikrZWUsUz0wLEY9ZWU7RjxUO0YrPW5lKVM9YWUoTyxGLEYrbmUseiksdGhpcy5pbXVsbih4KSx0aGlzLndvcmRzWzBdK1M8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Uzp0aGlz''@;'; put 'put ''Ll9pYWRkbihTKTtpZigwIT09Vil7dmFyIHllPTE7Zm9yKFM9YWUoTyxGLE8ubGVuZ3RoLHopLEY9MDtGPFY7RisrKXllKj16O3RoaXMuaW11bG4oeWUpLHRoaXMud29yZHNbMF0rUzw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1TOnRoaXMuX2lhZGRuKFMpfXRoaXMuc3RyaXAoKX0sVS5wcm90''@;'; put 'put ''b3R5cGUuY29weT1mdW5jdGlvbihPKXtPLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciB6PTA7ejx0aGlzLmxlbmd0aDt6KyspTy53b3Jkc1t6XT10aGlzLndvcmRzW3pdO08ubGVuZ3RoPXRoaXMubGVuZ3RoLE8ubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSxPLnJlZD10aGlz''@;'; put 'put ''LnJlZH0sVS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgTz1uZXcgVShudWxsKTtyZXR1cm4gdGhpcy5jb3B5KE8pLE99LFUucHJvdG90eXBlLl9leHBhbmQ9ZnVuY3Rpb24oTyl7Zm9yKDt0aGlzLmxlbmd0aDxPOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRo''@;'; put 'put ''aXN9LFUucHJvdG90eXBlLnN0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sVS5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9''@;'; put 'put ''PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5lZ2F0aXZlPTApLHRoaXN9LFUucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In07dmFyIFk9WyIiLCIwIiwiMDAi''@;'; put 'put ''LCIwMDAiLCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sVz1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxOPVswLDAsMzM1NTQ0MzIsNDMw''@;'; put 'put ''NDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIs''@;'; put 'put ''NjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9uIEsoaGUsTyx6KXt6Lm5lZ2F0aXZlPU8ubmVnYXRpdmVeaGUu''@;'; put 'put ''bmVnYXRpdmU7dmFyIGVlPWhlLmxlbmd0aCtPLmxlbmd0aHwwO3oubGVuZ3RoPWVlLGVlPWVlLTF8MDt2YXIgbmU9MHxoZS53b3Jkc1swXSx4PTB8Ty53b3Jkc1swXSxQPW5lKngsVD1QLzY3MTA4ODY0fDA7ei53b3Jkc1swXT02NzEwODg2MyZQO2Zvcih2YXIgUz0xO1M8ZWU7UysrKXtmb3Io''@;'; put 'put ''dmFyIEY9VD4+PjI2LHllPTY3MTA4ODYzJlQsQ2U9TWF0aC5taW4oUyxPLmxlbmd0aC0xKSxEZT1NYXRoLm1heCgwLFMtaGUubGVuZ3RoKzEpO0RlPD1DZTtEZSsrKUYrPShQPShuZT0wfGhlLndvcmRzW1MtRGV8MF0pKih4PTB8Ty53b3Jkc1tEZV0pK3llKS82NzEwODg2NHwwLHllPTY3MTA4''@;'; put 'put ''ODYzJlA7ei53b3Jkc1tTXT0wfHllLFQ9MHxGfXJldHVybiAwIT09VD96LndvcmRzW1NdPTB8VDp6Lmxlbmd0aC0tLHouc3RyaXAoKX1VLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihPLHope3ZhciBlZTtpZih6PTB8enx8MSwxNj09PShPPU98fDEwKXx8ImhleCI9PT1PKXtlZT0iIjtm''@;'; put 'put ''b3IodmFyIG5lPTAseD0wLFA9MDtQPHRoaXMubGVuZ3RoO1ArKyl7dmFyIFY9dGhpcy53b3Jkc1tQXSxUPSgxNjc3NzIxNSYoVjw8bmV8eCkpLnRvU3RyaW5nKDE2KTtlZT0wIT0oeD1WPj4+MjQtbmUmMTY3NzcyMTUpfHxQIT09dGhpcy5sZW5ndGgtMT9ZWzYtVC5sZW5ndGhdK1QrZWU6VCtl''@;'; put 'put ''ZSwobmUrPTIpPj0yNiYmKG5lLT0yNixQLS0pfWZvcigwIT09eCYmKGVlPXgudG9TdHJpbmcoMTYpK2VlKTtlZS5sZW5ndGgleiE9MDspZWU9IjAiK2VlO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKGVlPSItIitlZSksZWV9aWYoTz09PSgwfE8pJiZPPj0yJiZPPD0zNil7dmFyIFM9V1tP''@;'; put 'put ''XSxGPU5bT107ZWU9IiI7dmFyIHllPXRoaXMuY2xvbmUoKTtmb3IoeWUubmVnYXRpdmU9MDsheWUuaXNaZXJvKCk7KXt2YXIgQ2U9eWUubW9kbihGKS50b1N0cmluZyhPKTtlZT0oeWU9eWUuaWRpdm4oRikpLmlzWmVybygpP0NlK2VlOllbUy1DZS5sZW5ndGhdK0NlK2VlfWZvcih0aGlzLmlz''@;'; put 'put ''WmVybygpJiYoZWU9IjAiK2VlKTtlZS5sZW5ndGgleiE9MDspZWU9IjAiK2VlO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKGVlPSItIitlZSksZWV9RSghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxVLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBP''@;'; put 'put ''PXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9PKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Tys9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJkUoITEsIk51''@;'; put 'put ''bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1POk99LFUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sVS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oTyx6KXtyZXR1cm4g''@;'; put 'put ''RSh2b2lkIDAhPT1RKSx0aGlzLnRvQXJyYXlMaWtlKFEsTyx6KX0sVS5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihPLHope3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LE8seil9LFUucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKE8seixlZSl7dmFyIG5lPXRoaXMuYnl0''@;'; put 'put ''ZUxlbmd0aCgpLHg9ZWV8fE1hdGgubWF4KDEsbmUpO0UobmU8PXgsImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKSxFKHg+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIiksdGhpcy5zdHJpcCgpO3ZhciBULFMsUD0ibGUiPT09eixWPW5ldyBPKHgpLEY9dGhp''@;'; put 'put ''cy5jbG9uZSgpO2lmKFApe2ZvcihTPTA7IUYuaXNaZXJvKCk7UysrKVQ9Ri5hbmRsbigyNTUpLEYuaXVzaHJuKDgpLFZbU109VDtmb3IoO1M8eDtTKyspVltTXT0wfWVsc2V7Zm9yKFM9MDtTPHgtbmU7UysrKVZbU109MDtmb3IoUz0wOyFGLmlzWmVybygpO1MrKylUPUYuYW5kbG4oMjU1KSxG''@;'; put 'put ''Lml1c2hybig4KSxWW3gtUy0xXT1UfXJldHVybiBWfSxVLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oTyl7cmV0dXJuIDMyLU1hdGguY2x6MzIoTyl9OmZ1bmN0aW9uKE8pe3ZhciB6PU8sZWU9MDtyZXR1cm4gej49NDA5NiYmKGVlKz0xMyx6Pj4+PTEzKSx6Pj02''@;'; put 'put ''NCYmKGVlKz03LHo+Pj49Nyksej49OCYmKGVlKz00LHo+Pj49NCksej49MiYmKGVlKz0yLHo+Pj49MiksZWUren0sVS5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKE8pe2lmKDA9PT1PKXJldHVybiAyNjt2YXIgej1PLGVlPTA7cmV0dXJuIDA9PSg4MTkxJnopJiYoZWUrPTEzLHo+Pj49''@;'; put 'put ''MTMpLDA9PSgxMjcmeikmJihlZSs9Nyx6Pj4+PTcpLDA9PSgxNSZ6KSYmKGVlKz00LHo+Pj49NCksMD09KDMmeikmJihlZSs9Mix6Pj4+PTIpLDA9PSgxJnopJiZlZSsrLGVlfSxVLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgej10aGlzLl9jb3VudEJpdHModGhpcy53b3Jk''@;'; put 'put ''c1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKSt6fSxVLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciBPPTAsej0wO3o8dGhpcy5sZW5ndGg7eisrKXt2YXIgZWU9dGhpcy5femVyb0JpdHModGhp''@;'; put 'put ''cy53b3Jkc1t6XSk7aWYoTys9ZWUsMjYhPT1lZSlicmVha31yZXR1cm4gT30sVS5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sVS5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKE8pe3JldHVybiAwIT09dGhpcy5u''@;'; put 'put ''ZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKE8pLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sVS5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMudGVzdG4oTy0xKT90aGlzLm5vdG4oTykuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sVS5wcm90b3R5cGUuaXNO''@;'; put 'put ''ZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LFUucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxVLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0''@;'; put 'put ''aGlzfSxVLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKE8pe2Zvcig7dGhpcy5sZW5ndGg8Ty5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIHo9MDt6PE8ubGVuZ3RoO3orKyl0aGlzLndvcmRzW3pdPXRoaXMud29yZHNbel18Ty53b3Jkc1t6XTtyZXR1cm4gdGhp''@;'; put 'put ''cy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oTyl7cmV0dXJuIEUoMD09KHRoaXMubmVnYXRpdmV8Ty5uZWdhdGl2ZSkpLHRoaXMuaXVvcihPKX0sVS5wcm90b3R5cGUub3I9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3Io''@;'; put 'put ''Tyk6Ty5jbG9uZSgpLmlvcih0aGlzKX0sVS5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcihPKTpPLmNsb25lKCkuaXVvcih0aGlzKX0sVS5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oTyl7dmFyIHo7ej10aGlz''@;'; put 'put ''Lmxlbmd0aD5PLmxlbmd0aD9POnRoaXM7Zm9yKHZhciBlZT0wO2VlPHoubGVuZ3RoO2VlKyspdGhpcy53b3Jkc1tlZV09dGhpcy53b3Jkc1tlZV0mTy53b3Jkc1tlZV07cmV0dXJuIHRoaXMubGVuZ3RoPXoubGVuZ3RoLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbihP''@;'; put 'put ''KXtyZXR1cm4gRSgwPT0odGhpcy5uZWdhdGl2ZXxPLm5lZ2F0aXZlKSksdGhpcy5pdWFuZChPKX0sVS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZChPKTpPLmNsb25lKCkuaWFuZCh0aGlzKX0sVS5wcm90b3R5''@;'; put 'put ''cGUudWFuZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKE8pOk8uY2xvbmUoKS5pdWFuZCh0aGlzKX0sVS5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24oTyl7dmFyIHosZWU7dGhpcy5sZW5ndGg+Ty5sZW5ndGg/KHo9dGhpcyxlZT1P''@;'; put 'put ''KTooej1PLGVlPXRoaXMpO2Zvcih2YXIgbmU9MDtuZTxlZS5sZW5ndGg7bmUrKyl0aGlzLndvcmRzW25lXT16LndvcmRzW25lXV5lZS53b3Jkc1tuZV07aWYodGhpcyE9PXopZm9yKDtuZTx6Lmxlbmd0aDtuZSsrKXRoaXMud29yZHNbbmVdPXoud29yZHNbbmVdO3JldHVybiB0aGlzLmxlbmd0''@;'; put 'put ''aD16Lmxlbmd0aCx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oTyl7cmV0dXJuIEUoMD09KHRoaXMubmVnYXRpdmV8Ty5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoTyl9LFUucHJvdG90eXBlLnhvcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/''@;'; put 'put ''dGhpcy5jbG9uZSgpLml4b3IoTyk6Ty5jbG9uZSgpLml4b3IodGhpcyl9LFUucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcihPKTpPLmNsb25lKCkuaXV4b3IodGhpcyl9LFUucHJvdG90eXBlLmlub3RuPWZ1''@;'; put 'put ''bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgej0wfE1hdGguY2VpbChPLzI2KSxlZT1PJTI2O3RoaXMuX2V4cGFuZCh6KSxlZT4wJiZ6LS07Zm9yKHZhciBuZT0wO25lPHo7bmUrKyl0aGlzLndvcmRzW25lXT02NzEwODg2MyZ+dGhpcy53b3Jkc1tuZV07cmV0dXJu''@;'; put 'put ''IGVlPjAmJih0aGlzLndvcmRzW25lXT1+dGhpcy53b3Jkc1tuZV0mNjcxMDg4NjM+PjI2LWVlKSx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bihPKX0sVS5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbihPLHope0UoIm51''@;'; put 'put ''bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgZWU9Ty8yNnwwLG5lPU8lMjY7cmV0dXJuIHRoaXMuX2V4cGFuZChlZSsxKSx0aGlzLndvcmRzW2VlXT16P3RoaXMud29yZHNbZWVdfDE8PG5lOnRoaXMud29yZHNbZWVdJn4oMTw8bmUpLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaWFkZD1m''@;'; put 'put ''dW5jdGlvbihPKXt2YXIgeixlZSxuZTtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PU8ubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx6PXRoaXMuaXN1YihPKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1PLm5lZ2F0''@;'; put 'put ''aXZlKXJldHVybiBPLm5lZ2F0aXZlPTAsej10aGlzLmlzdWIoTyksTy5uZWdhdGl2ZT0xLHouX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+Ty5sZW5ndGg/KGVlPXRoaXMsbmU9Tyk6KGVlPU8sbmU9dGhpcyk7Zm9yKHZhciB4PTAsUD0wO1A8bmUubGVuZ3RoO1ArKyl0aGlzLndvcmRzW1BdPTY3''@;'; put 'put ''MTA4ODYzJih6PSgwfGVlLndvcmRzW1BdKSsoMHxuZS53b3Jkc1tQXSkreCkseD16Pj4+MjY7Zm9yKDswIT09eCYmUDxlZS5sZW5ndGg7UCsrKXRoaXMud29yZHNbUF09NjcxMDg4NjMmKHo9KDB8ZWUud29yZHNbUF0pK3gpLHg9ej4+PjI2O2lmKHRoaXMubGVuZ3RoPWVlLmxlbmd0aCwwIT09''@;'; put 'put ''eCl0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT14LHRoaXMubGVuZ3RoKys7ZWxzZSBpZihlZSE9PXRoaXMpZm9yKDtQPGVlLmxlbmd0aDtQKyspdGhpcy53b3Jkc1tQXT1lZS53b3Jkc1tQXTtyZXR1cm4gdGhpc30sVS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKE8pe3ZhciB6O3JldHVybiAwIT09''@;'; put 'put ''Ty5uZWdhdGl2ZSYmMD09PXRoaXMubmVnYXRpdmU/KE8ubmVnYXRpdmU9MCx6PXRoaXMuc3ViKE8pLE8ubmVnYXRpdmVePTEseik6MD09PU8ubmVnYXRpdmUmJjAhPT10aGlzLm5lZ2F0aXZlPyh0aGlzLm5lZ2F0aXZlPTAsej1PLnN1Yih0aGlzKSx0aGlzLm5lZ2F0aXZlPTEseik6dGhpcy5s''@;'; put 'put ''ZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhZGQoTyk6Ty5jbG9uZSgpLmlhZGQodGhpcyl9LFUucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oTyl7aWYoMCE9PU8ubmVnYXRpdmUpe08ubmVnYXRpdmU9MDt2YXIgej10aGlzLmlhZGQoTyk7cmV0dXJuIE8ubmVnYXRpdmU9MSx6Ll9ub3Jt''@;'; put 'put ''U2lnbigpfWlmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkKE8pLHRoaXMubmVnYXRpdmU9MSx0aGlzLl9ub3JtU2lnbigpO3ZhciBuZSx4LGVlPXRoaXMuY21wKE8pO2lmKDA9PT1lZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3Ro''@;'; put 'put ''PTEsdGhpcy53b3Jkc1swXT0wLHRoaXM7ZWU+MD8obmU9dGhpcyx4PU8pOihuZT1PLHg9dGhpcyk7Zm9yKHZhciBQPTAsVj0wO1Y8eC5sZW5ndGg7VisrKVA9KHo9KDB8bmUud29yZHNbVl0pLSgwfHgud29yZHNbVl0pK1ApPj4yNix0aGlzLndvcmRzW1ZdPTY3MTA4ODYzJno7Zm9yKDswIT09''@;'; put 'put ''UCYmVjxuZS5sZW5ndGg7VisrKVA9KHo9KDB8bmUud29yZHNbVl0pK1ApPj4yNix0aGlzLndvcmRzW1ZdPTY3MTA4ODYzJno7aWYoMD09PVAmJlY8bmUubGVuZ3RoJiZuZSE9PXRoaXMpZm9yKDtWPG5lLmxlbmd0aDtWKyspdGhpcy53b3Jkc1tWXT1uZS53b3Jkc1tWXTtyZXR1cm4gdGhpcy5s''@;'; put 'put ''ZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsViksbmUhPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoTyl9O3ZhciBKPWZ1bmN0aW9uKE8seixlZSl7dmFyIFQsUyxGLG5l''@;'; put 'put ''PU8ud29yZHMseD16LndvcmRzLFA9ZWUud29yZHMsVj0wLHllPTB8bmVbMF0sQ2U9ODE5MSZ5ZSxEZT15ZT4+PjEzLFBlPTB8bmVbMV0sUWU9ODE5MSZQZSwkZT1QZT4+PjEzLGd0PTB8bmVbMl0sd3Q9ODE5MSZndCxtdD1ndD4+PjEzLHZ0PTB8bmVbM10sQXQ9ODE5MSZ2dCxodD12dD4+PjEz''@;'; put 'put ''LEJ0PTB8bmVbNF0sb249ODE5MSZCdCxfdD1CdD4+PjEzLHR0PTB8bmVbNV0sZXQ9ODE5MSZ0dCxsdD10dD4+PjEzLEx0PTB8bmVbNl0sQ3Q9ODE5MSZMdCxmdD1MdD4+PjEzLEh0PTB8bmVbN10sR2U9ODE5MSZIdCxVZT1IdD4+PjEzLHl0PTB8bmVbOF0sanQ9ODE5MSZ5dCxKdD15dD4+PjEz''@;'; put 'put ''LGduPTB8bmVbOV0sZG49ODE5MSZnbix5bj1nbj4+PjEzLGxuPTB8eFswXSxObj04MTkxJmxuLGJuPWxuPj4+MTMsZXI9MHx4WzFdLHNyPTgxOTEmZXIsWG49ZXI+Pj4xMyxGcj0wfHhbMl0seHI9ODE5MSZGcixxdD1Gcj4+PjEzLHByPTB8eFszXSxucj04MTkxJnByLEFuPXByPj4+MTMscW49''@;'; put 'put ''MHx4WzRdLFd0PTgxOTEmcW4scG49cW4+Pj4xMyxLbj0wfHhbNV0sTnQ9ODE5MSZLbixzbj1Lbj4+PjEzLFVuPTB8eFs2XSx3bj04MTkxJlVuLHRuPVVuPj4+MTMsem49MHx4WzddLFRyPTgxOTEmem4sQm49em4+Pj4xMyxrcj0wfHhbOF0sbW49ODE5MSZrcix1bj1rcj4+PjEzLGNuPTB8eFs5''@;'; put 'put ''XSxfbj04MTkxJmNuLEd0PWNuPj4+MTM7ZWUubmVnYXRpdmU9Ty5uZWdhdGl2ZV56Lm5lZ2F0aXZlLGVlLmxlbmd0aD0xOTt2YXIga249KFYrKFQ9TWF0aC5pbXVsKENlLE5uKSl8MCkrKCg4MTkxJihTPShTPU1hdGguaW11bChDZSxibikpK01hdGguaW11bChEZSxObil8MCkpPDwxMyl8MDtW''@;'; put 'put ''PSgoRj1NYXRoLmltdWwoRGUsYm4pKSsoUz4+PjEzKXwwKSsoa24+Pj4yNil8MCxrbiY9NjcxMDg4NjMsVD1NYXRoLmltdWwoUWUsTm4pLFM9KFM9TWF0aC5pbXVsKFFlLGJuKSkrTWF0aC5pbXVsKCRlLE5uKXwwLEY9TWF0aC5pbXVsKCRlLGJuKTt2YXIgVm49KFYrKFQ9VCtNYXRoLmltdWwo''@;'; put 'put ''Q2Usc3IpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxYbil8MCkrTWF0aC5pbXVsKERlLHNyKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLFhuKXwwKSsoUz4+PjEzKXwwKSsoVm4+Pj4yNil8MCxWbiY9NjcxMDg4NjMsVD1NYXRoLmltdWwod3QsTm4pLFM9KFM9''@;'; put 'put ''TWF0aC5pbXVsKHd0LGJuKSkrTWF0aC5pbXVsKG10LE5uKXwwLEY9TWF0aC5pbXVsKG10LGJuKSxUPVQrTWF0aC5pbXVsKFFlLHNyKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsWG4pfDApK01hdGguaW11bCgkZSxzcil8MCxGPUYrTWF0aC5pbXVsKCRlLFhuKXwwO3ZhciBlbj0oVisoVD1UK01h''@;'; put 'put ''dGguaW11bChDZSx4cil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLHF0KXwwKStNYXRoLmltdWwoRGUseHIpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUscXQpfDApKyhTPj4+MTMpfDApKyhlbj4+PjI2KXwwLGVuJj02NzEwODg2MyxUPU1hdGguaW11bChBdCxO''@;'; put 'put ''biksUz0oUz1NYXRoLmltdWwoQXQsYm4pKStNYXRoLmltdWwoaHQsTm4pfDAsRj1NYXRoLmltdWwoaHQsYm4pLFQ9VCtNYXRoLmltdWwod3Qsc3IpfDAsUz0oUz1TK01hdGguaW11bCh3dCxYbil8MCkrTWF0aC5pbXVsKG10LHNyKXwwLEY9RitNYXRoLmltdWwobXQsWG4pfDAsVD1UK01hdGgu''@;'; put 'put ''aW11bChRZSx4cil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLHF0KXwwKStNYXRoLmltdWwoJGUseHIpfDAsRj1GK01hdGguaW11bCgkZSxxdCl8MDt2YXIgSW49KFYrKFQ9VCtNYXRoLmltdWwoQ2UsbnIpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxBbil8MCkrTWF0aC5pbXVs''@;'; put 'put ''KERlLG5yKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLEFuKXwwKSsoUz4+PjEzKXwwKSsoSW4+Pj4yNil8MCxJbiY9NjcxMDg4NjMsVD1NYXRoLmltdWwob24sTm4pLFM9KFM9TWF0aC5pbXVsKG9uLGJuKSkrTWF0aC5pbXVsKF90LE5uKXwwLEY9TWF0aC5pbXVsKF90LGJuKSxU''@;'; put 'put ''PVQrTWF0aC5pbXVsKEF0LHNyKXwwLFM9KFM9UytNYXRoLmltdWwoQXQsWG4pfDApK01hdGguaW11bChodCxzcil8MCxGPUYrTWF0aC5pbXVsKGh0LFhuKXwwLFQ9VCtNYXRoLmltdWwod3QseHIpfDAsUz0oUz1TK01hdGguaW11bCh3dCxxdCl8MCkrTWF0aC5pbXVsKG10LHhyKXwwLEY9RitN''@;'; put 'put ''YXRoLmltdWwobXQscXQpfDAsVD1UK01hdGguaW11bChRZSxucil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLEFuKXwwKStNYXRoLmltdWwoJGUsbnIpfDAsRj1GK01hdGguaW11bCgkZSxBbil8MDt2YXIgSm49KFYrKFQ9VCtNYXRoLmltdWwoQ2UsV3QpfDApfDApKygoODE5MSYoUz0oUz1TK01h''@;'; put 'put ''dGguaW11bChDZSxwbil8MCkrTWF0aC5pbXVsKERlLFd0KXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLHBuKXwwKSsoUz4+PjEzKXwwKSsoSm4+Pj4yNil8MCxKbiY9NjcxMDg4NjMsVD1NYXRoLmltdWwoZXQsTm4pLFM9KFM9TWF0aC5pbXVsKGV0LGJuKSkrTWF0aC5pbXVsKGx0''@;'; put 'put ''LE5uKXwwLEY9TWF0aC5pbXVsKGx0LGJuKSxUPVQrTWF0aC5pbXVsKG9uLHNyKXwwLFM9KFM9UytNYXRoLmltdWwob24sWG4pfDApK01hdGguaW11bChfdCxzcil8MCxGPUYrTWF0aC5pbXVsKF90LFhuKXwwLFQ9VCtNYXRoLmltdWwoQXQseHIpfDAsUz0oUz1TK01hdGguaW11bChBdCxxdCl8''@;'; put 'put ''MCkrTWF0aC5pbXVsKGh0LHhyKXwwLEY9RitNYXRoLmltdWwoaHQscXQpfDAsVD1UK01hdGguaW11bCh3dCxucil8MCxTPShTPVMrTWF0aC5pbXVsKHd0LEFuKXwwKStNYXRoLmltdWwobXQsbnIpfDAsRj1GK01hdGguaW11bChtdCxBbil8MCxUPVQrTWF0aC5pbXVsKFFlLFd0KXwwLFM9KFM9''@;'; put 'put ''UytNYXRoLmltdWwoUWUscG4pfDApK01hdGguaW11bCgkZSxXdCl8MCxGPUYrTWF0aC5pbXVsKCRlLHBuKXwwO3ZhciBvcj0oVisoVD1UK01hdGguaW11bChDZSxOdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLHNuKXwwKStNYXRoLmltdWwoRGUsTnQpfDApKTw8MTMpfDA7''@;'; put 'put ''Vj0oKEY9RitNYXRoLmltdWwoRGUsc24pfDApKyhTPj4+MTMpfDApKyhvcj4+PjI2KXwwLG9yJj02NzEwODg2MyxUPU1hdGguaW11bChDdCxObiksUz0oUz1NYXRoLmltdWwoQ3QsYm4pKStNYXRoLmltdWwoZnQsTm4pfDAsRj1NYXRoLmltdWwoZnQsYm4pLFQ9VCtNYXRoLmltdWwoZXQsc3Ip''@;'; put 'put ''fDAsUz0oUz1TK01hdGguaW11bChldCxYbil8MCkrTWF0aC5pbXVsKGx0LHNyKXwwLEY9RitNYXRoLmltdWwobHQsWG4pfDAsVD1UK01hdGguaW11bChvbix4cil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLHF0KXwwKStNYXRoLmltdWwoX3QseHIpfDAsRj1GK01hdGguaW11bChfdCxxdCl8MCxU''@;'; put 'put ''PVQrTWF0aC5pbXVsKEF0LG5yKXwwLFM9KFM9UytNYXRoLmltdWwoQXQsQW4pfDApK01hdGguaW11bChodCxucil8MCxGPUYrTWF0aC5pbXVsKGh0LEFuKXwwLFQ9VCtNYXRoLmltdWwod3QsV3QpfDAsUz0oUz1TK01hdGguaW11bCh3dCxwbil8MCkrTWF0aC5pbXVsKG10LFd0KXwwLEY9RitN''@;'; put 'put ''YXRoLmltdWwobXQscG4pfDAsVD1UK01hdGguaW11bChRZSxOdCl8MCxTPShTPVMrTWF0aC5pbXVsKFFlLHNuKXwwKStNYXRoLmltdWwoJGUsTnQpfDAsRj1GK01hdGguaW11bCgkZSxzbil8MDt2YXIgZ3I9KFYrKFQ9VCtNYXRoLmltdWwoQ2Usd24pfDApfDApKygoODE5MSYoUz0oUz1TK01h''@;'; put 'put ''dGguaW11bChDZSx0bil8MCkrTWF0aC5pbXVsKERlLHduKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLHRuKXwwKSsoUz4+PjEzKXwwKSsoZ3I+Pj4yNil8MCxnciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoR2UsTm4pLFM9KFM9TWF0aC5pbXVsKEdlLGJuKSkrTWF0aC5pbXVsKFVl''@;'; put 'put ''LE5uKXwwLEY9TWF0aC5pbXVsKFVlLGJuKSxUPVQrTWF0aC5pbXVsKEN0LHNyKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsWG4pfDApK01hdGguaW11bChmdCxzcil8MCxGPUYrTWF0aC5pbXVsKGZ0LFhuKXwwLFQ9VCtNYXRoLmltdWwoZXQseHIpfDAsUz0oUz1TK01hdGguaW11bChldCxxdCl8''@;'; put 'put ''MCkrTWF0aC5pbXVsKGx0LHhyKXwwLEY9RitNYXRoLmltdWwobHQscXQpfDAsVD1UK01hdGguaW11bChvbixucil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLEFuKXwwKStNYXRoLmltdWwoX3QsbnIpfDAsRj1GK01hdGguaW11bChfdCxBbil8MCxUPVQrTWF0aC5pbXVsKEF0LFd0KXwwLFM9KFM9''@;'; put 'put ''UytNYXRoLmltdWwoQXQscG4pfDApK01hdGguaW11bChodCxXdCl8MCxGPUYrTWF0aC5pbXVsKGh0LHBuKXwwLFQ9VCtNYXRoLmltdWwod3QsTnQpfDAsUz0oUz1TK01hdGguaW11bCh3dCxzbil8MCkrTWF0aC5pbXVsKG10LE50KXwwLEY9RitNYXRoLmltdWwobXQsc24pfDAsVD1UK01hdGgu''@;'; put 'put ''aW11bChRZSx3bil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLHRuKXwwKStNYXRoLmltdWwoJGUsd24pfDAsRj1GK01hdGguaW11bCgkZSx0bil8MDt2YXIgS3I9KFYrKFQ9VCtNYXRoLmltdWwoQ2UsVHIpfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxCbil8MCkrTWF0aC5pbXVs''@;'; put 'put ''KERlLFRyKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLEJuKXwwKSsoUz4+PjEzKXwwKSsoS3I+Pj4yNil8MCxLciY9NjcxMDg4NjMsVD1NYXRoLmltdWwoanQsTm4pLFM9KFM9TWF0aC5pbXVsKGp0LGJuKSkrTWF0aC5pbXVsKEp0LE5uKXwwLEY9TWF0aC5pbXVsKEp0LGJuKSxU''@;'; put 'put ''PVQrTWF0aC5pbXVsKEdlLHNyKXwwLFM9KFM9UytNYXRoLmltdWwoR2UsWG4pfDApK01hdGguaW11bChVZSxzcil8MCxGPUYrTWF0aC5pbXVsKFVlLFhuKXwwLFQ9VCtNYXRoLmltdWwoQ3QseHIpfDAsUz0oUz1TK01hdGguaW11bChDdCxxdCl8MCkrTWF0aC5pbXVsKGZ0LHhyKXwwLEY9RitN''@;'; put 'put ''YXRoLmltdWwoZnQscXQpfDAsVD1UK01hdGguaW11bChldCxucil8MCxTPShTPVMrTWF0aC5pbXVsKGV0LEFuKXwwKStNYXRoLmltdWwobHQsbnIpfDAsRj1GK01hdGguaW11bChsdCxBbil8MCxUPVQrTWF0aC5pbXVsKG9uLFd0KXwwLFM9KFM9UytNYXRoLmltdWwob24scG4pfDApK01hdGgu''@;'; put 'put ''aW11bChfdCxXdCl8MCxGPUYrTWF0aC5pbXVsKF90LHBuKXwwLFQ9VCtNYXRoLmltdWwoQXQsTnQpfDAsUz0oUz1TK01hdGguaW11bChBdCxzbil8MCkrTWF0aC5pbXVsKGh0LE50KXwwLEY9RitNYXRoLmltdWwoaHQsc24pfDAsVD1UK01hdGguaW11bCh3dCx3bil8MCxTPShTPVMrTWF0aC5p''@;'; put 'put ''bXVsKHd0LHRuKXwwKStNYXRoLmltdWwobXQsd24pfDAsRj1GK01hdGguaW11bChtdCx0bil8MCxUPVQrTWF0aC5pbXVsKFFlLFRyKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsQm4pfDApK01hdGguaW11bCgkZSxUcil8MCxGPUYrTWF0aC5pbXVsKCRlLEJuKXwwO3ZhciBWcj0oVisoVD1UK01h''@;'; put 'put ''dGguaW11bChDZSxtbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLHVuKXwwKStNYXRoLmltdWwoRGUsbW4pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsdW4pfDApKyhTPj4+MTMpfDApKyhWcj4+PjI2KXwwLFZyJj02NzEwODg2MyxUPU1hdGguaW11bChkbixO''@;'; put 'put ''biksUz0oUz1NYXRoLmltdWwoZG4sYm4pKStNYXRoLmltdWwoeW4sTm4pfDAsRj1NYXRoLmltdWwoeW4sYm4pLFQ9VCtNYXRoLmltdWwoanQsc3IpfDAsUz0oUz1TK01hdGguaW11bChqdCxYbil8MCkrTWF0aC5pbXVsKEp0LHNyKXwwLEY9RitNYXRoLmltdWwoSnQsWG4pfDAsVD1UK01hdGgu''@;'; put 'put ''aW11bChHZSx4cil8MCxTPShTPVMrTWF0aC5pbXVsKEdlLHF0KXwwKStNYXRoLmltdWwoVWUseHIpfDAsRj1GK01hdGguaW11bChVZSxxdCl8MCxUPVQrTWF0aC5pbXVsKEN0LG5yKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsQW4pfDApK01hdGguaW11bChmdCxucil8MCxGPUYrTWF0aC5pbXVs''@;'; put 'put ''KGZ0LEFuKXwwLFQ9VCtNYXRoLmltdWwoZXQsV3QpfDAsUz0oUz1TK01hdGguaW11bChldCxwbil8MCkrTWF0aC5pbXVsKGx0LFd0KXwwLEY9RitNYXRoLmltdWwobHQscG4pfDAsVD1UK01hdGguaW11bChvbixOdCl8MCxTPShTPVMrTWF0aC5pbXVsKG9uLHNuKXwwKStNYXRoLmltdWwoX3Qs''@;'; put 'put ''TnQpfDAsRj1GK01hdGguaW11bChfdCxzbil8MCxUPVQrTWF0aC5pbXVsKEF0LHduKXwwLFM9KFM9UytNYXRoLmltdWwoQXQsdG4pfDApK01hdGguaW11bChodCx3bil8MCxGPUYrTWF0aC5pbXVsKGh0LHRuKXwwLFQ9VCtNYXRoLmltdWwod3QsVHIpfDAsUz0oUz1TK01hdGguaW11bCh3dCxC''@;'; put 'put ''bil8MCkrTWF0aC5pbXVsKG10LFRyKXwwLEY9RitNYXRoLmltdWwobXQsQm4pfDAsVD1UK01hdGguaW11bChRZSxtbil8MCxTPShTPVMrTWF0aC5pbXVsKFFlLHVuKXwwKStNYXRoLmltdWwoJGUsbW4pfDAsRj1GK01hdGguaW11bCgkZSx1bil8MDt2YXIgaWk9KFYrKFQ9VCtNYXRoLmltdWwo''@;'; put 'put ''Q2UsX24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDZSxHdCl8MCkrTWF0aC5pbXVsKERlLF9uKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKERlLEd0KXwwKSsoUz4+PjEzKXwwKSsoaWk+Pj4yNil8MCxpaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoZG4sc3IpLFM9KFM9''@;'; put 'put ''TWF0aC5pbXVsKGRuLFhuKSkrTWF0aC5pbXVsKHluLHNyKXwwLEY9TWF0aC5pbXVsKHluLFhuKSxUPVQrTWF0aC5pbXVsKGp0LHhyKXwwLFM9KFM9UytNYXRoLmltdWwoanQscXQpfDApK01hdGguaW11bChKdCx4cil8MCxGPUYrTWF0aC5pbXVsKEp0LHF0KXwwLFQ9VCtNYXRoLmltdWwoR2Us''@;'; put 'put ''bnIpfDAsUz0oUz1TK01hdGguaW11bChHZSxBbil8MCkrTWF0aC5pbXVsKFVlLG5yKXwwLEY9RitNYXRoLmltdWwoVWUsQW4pfDAsVD1UK01hdGguaW11bChDdCxXdCl8MCxTPShTPVMrTWF0aC5pbXVsKEN0LHBuKXwwKStNYXRoLmltdWwoZnQsV3QpfDAsRj1GK01hdGguaW11bChmdCxwbil8''@;'; put 'put ''MCxUPVQrTWF0aC5pbXVsKGV0LE50KXwwLFM9KFM9UytNYXRoLmltdWwoZXQsc24pfDApK01hdGguaW11bChsdCxOdCl8MCxGPUYrTWF0aC5pbXVsKGx0LHNuKXwwLFQ9VCtNYXRoLmltdWwob24sd24pfDAsUz0oUz1TK01hdGguaW11bChvbix0bil8MCkrTWF0aC5pbXVsKF90LHduKXwwLEY9''@;'; put 'put ''RitNYXRoLmltdWwoX3QsdG4pfDAsVD1UK01hdGguaW11bChBdCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKEF0LEJuKXwwKStNYXRoLmltdWwoaHQsVHIpfDAsRj1GK01hdGguaW11bChodCxCbil8MCxUPVQrTWF0aC5pbXVsKHd0LG1uKXwwLFM9KFM9UytNYXRoLmltdWwod3QsdW4pfDApK01h''@;'; put 'put ''dGguaW11bChtdCxtbil8MCxGPUYrTWF0aC5pbXVsKG10LHVuKXwwO3ZhciBScj0oVisoVD1UK01hdGguaW11bChRZSxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKFFlLEd0KXwwKStNYXRoLmltdWwoJGUsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoJGUsR3Qp''@;'; put 'put ''fDApKyhTPj4+MTMpfDApKyhScj4+PjI2KXwwLFJyJj02NzEwODg2MyxUPU1hdGguaW11bChkbix4ciksUz0oUz1NYXRoLmltdWwoZG4scXQpKStNYXRoLmltdWwoeW4seHIpfDAsRj1NYXRoLmltdWwoeW4scXQpLFQ9VCtNYXRoLmltdWwoanQsbnIpfDAsUz0oUz1TK01hdGguaW11bChqdCxB''@;'; put 'put ''bil8MCkrTWF0aC5pbXVsKEp0LG5yKXwwLEY9RitNYXRoLmltdWwoSnQsQW4pfDAsVD1UK01hdGguaW11bChHZSxXdCl8MCxTPShTPVMrTWF0aC5pbXVsKEdlLHBuKXwwKStNYXRoLmltdWwoVWUsV3QpfDAsRj1GK01hdGguaW11bChVZSxwbil8MCxUPVQrTWF0aC5pbXVsKEN0LE50KXwwLFM9''@;'; put 'put ''KFM9UytNYXRoLmltdWwoQ3Qsc24pfDApK01hdGguaW11bChmdCxOdCl8MCxGPUYrTWF0aC5pbXVsKGZ0LHNuKXwwLFQ9VCtNYXRoLmltdWwoZXQsd24pfDAsUz0oUz1TK01hdGguaW11bChldCx0bil8MCkrTWF0aC5pbXVsKGx0LHduKXwwLEY9RitNYXRoLmltdWwobHQsdG4pfDAsVD1UK01h''@;'; put 'put ''dGguaW11bChvbixUcil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLEJuKXwwKStNYXRoLmltdWwoX3QsVHIpfDAsRj1GK01hdGguaW11bChfdCxCbil8MCxUPVQrTWF0aC5pbXVsKEF0LG1uKXwwLFM9KFM9UytNYXRoLmltdWwoQXQsdW4pfDApK01hdGguaW11bChodCxtbil8MCxGPUYrTWF0aC5p''@;'; put 'put ''bXVsKGh0LHVuKXwwO3ZhciBsaT0oVisoVD1UK01hdGguaW11bCh3dCxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKHd0LEd0KXwwKStNYXRoLmltdWwobXQsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwobXQsR3QpfDApKyhTPj4+MTMpfDApKyhsaT4+PjI2KXww''@;'; put 'put ''LGxpJj02NzEwODg2MyxUPU1hdGguaW11bChkbixuciksUz0oUz1NYXRoLmltdWwoZG4sQW4pKStNYXRoLmltdWwoeW4sbnIpfDAsRj1NYXRoLmltdWwoeW4sQW4pLFQ9VCtNYXRoLmltdWwoanQsV3QpfDAsUz0oUz1TK01hdGguaW11bChqdCxwbil8MCkrTWF0aC5pbXVsKEp0LFd0KXwwLEY9''@;'; put 'put ''RitNYXRoLmltdWwoSnQscG4pfDAsVD1UK01hdGguaW11bChHZSxOdCl8MCxTPShTPVMrTWF0aC5pbXVsKEdlLHNuKXwwKStNYXRoLmltdWwoVWUsTnQpfDAsRj1GK01hdGguaW11bChVZSxzbil8MCxUPVQrTWF0aC5pbXVsKEN0LHduKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsdG4pfDApK01h''@;'; put 'put ''dGguaW11bChmdCx3bil8MCxGPUYrTWF0aC5pbXVsKGZ0LHRuKXwwLFQ9VCtNYXRoLmltdWwoZXQsVHIpfDAsUz0oUz1TK01hdGguaW11bChldCxCbil8MCkrTWF0aC5pbXVsKGx0LFRyKXwwLEY9RitNYXRoLmltdWwobHQsQm4pfDAsVD1UK01hdGguaW11bChvbixtbil8MCxTPShTPVMrTWF0''@;'; put 'put ''aC5pbXVsKG9uLHVuKXwwKStNYXRoLmltdWwoX3QsbW4pfDAsRj1GK01hdGguaW11bChfdCx1bil8MDt2YXIgTWk9KFYrKFQ9VCtNYXRoLmltdWwoQXQsX24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChBdCxHdCl8MCkrTWF0aC5pbXVsKGh0LF9uKXwwKSk8PDEzKXwwO1Y9KChG''@;'; put 'put ''PUYrTWF0aC5pbXVsKGh0LEd0KXwwKSsoUz4+PjEzKXwwKSsoTWk+Pj4yNil8MCxNaSY9NjcxMDg4NjMsVD1NYXRoLmltdWwoZG4sV3QpLFM9KFM9TWF0aC5pbXVsKGRuLHBuKSkrTWF0aC5pbXVsKHluLFd0KXwwLEY9TWF0aC5pbXVsKHluLHBuKSxUPVQrTWF0aC5pbXVsKGp0LE50KXwwLFM9''@;'; put 'put ''KFM9UytNYXRoLmltdWwoanQsc24pfDApK01hdGguaW11bChKdCxOdCl8MCxGPUYrTWF0aC5pbXVsKEp0LHNuKXwwLFQ9VCtNYXRoLmltdWwoR2Usd24pfDAsUz0oUz1TK01hdGguaW11bChHZSx0bil8MCkrTWF0aC5pbXVsKFVlLHduKXwwLEY9RitNYXRoLmltdWwoVWUsdG4pfDAsVD1UK01h''@;'; put 'put ''dGguaW11bChDdCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LEJuKXwwKStNYXRoLmltdWwoZnQsVHIpfDAsRj1GK01hdGguaW11bChmdCxCbil8MCxUPVQrTWF0aC5pbXVsKGV0LG1uKXwwLFM9KFM9UytNYXRoLmltdWwoZXQsdW4pfDApK01hdGguaW11bChsdCxtbil8MCxGPUYrTWF0aC5p''@;'; put 'put ''bXVsKGx0LHVuKXwwO3ZhciBvMD0oVisoVD1UK01hdGguaW11bChvbixfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKG9uLEd0KXwwKStNYXRoLmltdWwoX3QsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoX3QsR3QpfDApKyhTPj4+MTMpfDApKyhvMD4+PjI2KXww''@;'; put 'put ''LG8wJj02NzEwODg2MyxUPU1hdGguaW11bChkbixOdCksUz0oUz1NYXRoLmltdWwoZG4sc24pKStNYXRoLmltdWwoeW4sTnQpfDAsRj1NYXRoLmltdWwoeW4sc24pLFQ9VCtNYXRoLmltdWwoanQsd24pfDAsUz0oUz1TK01hdGguaW11bChqdCx0bil8MCkrTWF0aC5pbXVsKEp0LHduKXwwLEY9''@;'; put 'put ''RitNYXRoLmltdWwoSnQsdG4pfDAsVD1UK01hdGguaW11bChHZSxUcil8MCxTPShTPVMrTWF0aC5pbXVsKEdlLEJuKXwwKStNYXRoLmltdWwoVWUsVHIpfDAsRj1GK01hdGguaW11bChVZSxCbil8MCxUPVQrTWF0aC5pbXVsKEN0LG1uKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsdW4pfDApK01h''@;'; put 'put ''dGguaW11bChmdCxtbil8MCxGPUYrTWF0aC5pbXVsKGZ0LHVuKXwwO3ZhciBuMD0oVisoVD1UK01hdGguaW11bChldCxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKGV0LEd0KXwwKStNYXRoLmltdWwobHQsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwobHQsR3Qp''@;'; put 'put ''fDApKyhTPj4+MTMpfDApKyhuMD4+PjI2KXwwLG4wJj02NzEwODg2MyxUPU1hdGguaW11bChkbix3biksUz0oUz1NYXRoLmltdWwoZG4sdG4pKStNYXRoLmltdWwoeW4sd24pfDAsRj1NYXRoLmltdWwoeW4sdG4pLFQ9VCtNYXRoLmltdWwoanQsVHIpfDAsUz0oUz1TK01hdGguaW11bChqdCxC''@;'; put 'put ''bil8MCkrTWF0aC5pbXVsKEp0LFRyKXwwLEY9RitNYXRoLmltdWwoSnQsQm4pfDAsVD1UK01hdGguaW11bChHZSxtbil8MCxTPShTPVMrTWF0aC5pbXVsKEdlLHVuKXwwKStNYXRoLmltdWwoVWUsbW4pfDAsRj1GK01hdGguaW11bChVZSx1bil8MDt2YXIgZDA9KFYrKFQ9VCtNYXRoLmltdWwo''@;'; put 'put ''Q3QsX24pfDApfDApKygoODE5MSYoUz0oUz1TK01hdGguaW11bChDdCxHdCl8MCkrTWF0aC5pbXVsKGZ0LF9uKXwwKSk8PDEzKXwwO1Y9KChGPUYrTWF0aC5pbXVsKGZ0LEd0KXwwKSsoUz4+PjEzKXwwKSsoZDA+Pj4yNil8MCxkMCY9NjcxMDg4NjMsVD1NYXRoLmltdWwoZG4sVHIpLFM9KFM9''@;'; put 'put ''TWF0aC5pbXVsKGRuLEJuKSkrTWF0aC5pbXVsKHluLFRyKXwwLEY9TWF0aC5pbXVsKHluLEJuKSxUPVQrTWF0aC5pbXVsKGp0LG1uKXwwLFM9KFM9UytNYXRoLmltdWwoanQsdW4pfDApK01hdGguaW11bChKdCxtbil8MCxGPUYrTWF0aC5pbXVsKEp0LHVuKXwwO3ZhciBtMD0oVisoVD1UK01h''@;'; put 'put ''dGguaW11bChHZSxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKEdlLEd0KXwwKStNYXRoLmltdWwoVWUsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoVWUsR3QpfDApKyhTPj4+MTMpfDApKyhtMD4+PjI2KXwwLG0wJj02NzEwODg2MyxUPU1hdGguaW11bChkbixt''@;'; put 'put ''biksUz0oUz1NYXRoLmltdWwoZG4sdW4pKStNYXRoLmltdWwoeW4sbW4pfDAsRj1NYXRoLmltdWwoeW4sdW4pO3ZhciBHMD0oVisoVD1UK01hdGguaW11bChqdCxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKGp0LEd0KXwwKStNYXRoLmltdWwoSnQsX24pfDApKTw8MTMpfDA7''@;'; put 'put ''Vj0oKEY9RitNYXRoLmltdWwoSnQsR3QpfDApKyhTPj4+MTMpfDApKyhHMD4+PjI2KXwwLEcwJj02NzEwODg2Mzt2YXIgRGk9KFYrKFQ9TWF0aC5pbXVsKGRuLF9uKSl8MCkrKCg4MTkxJihTPShTPU1hdGguaW11bChkbixHdCkpK01hdGguaW11bCh5bixfbil8MCkpPDwxMyl8MDtyZXR1cm4g''@;'; put 'put ''Vj0oKEY9TWF0aC5pbXVsKHluLEd0KSkrKFM+Pj4xMyl8MCkrKERpPj4+MjYpfDAsRGkmPTY3MTA4ODYzLFBbMF09a24sUFsxXT1WbixQWzJdPWVuLFBbM109SW4sUFs0XT1KbixQWzVdPW9yLFBbNl09Z3IsUFs3XT1LcixQWzhdPVZyLFBbOV09aWksUFsxMF09UnIsUFsxMV09bGksUFsxMl09''@;'; put 'put ''TWksUFsxM109bzAsUFsxNF09bjAsUFsxNV09ZDAsUFsxNl09bTAsUFsxN109RzAsUFsxOF09RGksMCE9PVYmJihQWzE5XT1WLGVlLmxlbmd0aCsrKSxlZX07ZnVuY3Rpb24gb2UoaGUsTyx6KXtyZXR1cm4obmV3IGNlKS5tdWxwKGhlLE8seil9ZnVuY3Rpb24gY2UoaGUsTyl7dGhpcy54PWhl''@;'; put 'put ''LHRoaXMueT1PfU1hdGguaW11bHx8KEo9SyksVS5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oTyx6KXt2YXIgZWUsbmU9dGhpcy5sZW5ndGgrTy5sZW5ndGg7cmV0dXJuIGVlPTEwPT09dGhpcy5sZW5ndGgmJjEwPT09Ty5sZW5ndGg/Sih0aGlzLE8seik6bmU8NjM/Syh0aGlzLE8seik6bmU8''@;'; put 'put ''MTAyND9mdW5jdGlvbiBzZShoZSxPLHope3oubmVnYXRpdmU9Ty5uZWdhdGl2ZV5oZS5uZWdhdGl2ZSx6Lmxlbmd0aD1oZS5sZW5ndGgrTy5sZW5ndGg7Zm9yKHZhciBlZT0wLG5lPTAseD0wO3g8ei5sZW5ndGgtMTt4Kyspe3ZhciBQPW5lO25lPTA7Zm9yKHZhciBWPTY3MTA4ODYzJmVlLFQ9''@;'; put 'put ''TWF0aC5taW4oeCxPLmxlbmd0aC0xKSxTPU1hdGgubWF4KDAseC1oZS5sZW5ndGgrMSk7Uzw9VDtTKyspe3ZhciBEZT0oMHxoZS53b3Jkc1t4LVNdKSooMHxPLndvcmRzW1NdKSxQZT02NzEwODg2MyZEZTtWPTY3MTA4ODYzJihQZT1QZStWfDApLG5lKz0oUD0oUD1QKyhEZS82NzEwODg2NHww''@;'; put 'put ''KXwwKSsoUGU+Pj4yNil8MCk+Pj4yNixQJj02NzEwODg2M316LndvcmRzW3hdPVYsZWU9UCxQPW5lfXJldHVybiAwIT09ZWU/ei53b3Jkc1t4XT1lZTp6Lmxlbmd0aC0tLHouc3RyaXAoKX0odGhpcyxPLHopOm9lKHRoaXMsTyx6KSxlZX0sY2UucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24o''@;'; put 'put ''Tyl7Zm9yKHZhciB6PW5ldyBBcnJheShPKSxlZT1VLnByb3RvdHlwZS5fY291bnRCaXRzKE8pLTEsbmU9MDtuZTxPO25lKyspeltuZV09dGhpcy5yZXZCaW4obmUsZWUsTyk7cmV0dXJuIHp9LGNlLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oTyx6LGVlKXtpZigwPT09T3x8Tz09PWVlLTEp''@;'; put 'put ''cmV0dXJuIE87Zm9yKHZhciBuZT0wLHg9MDt4PHo7eCsrKW5lfD0oMSZPKTw8ei14LTEsTz4+PTE7cmV0dXJuIG5lfSxjZS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihPLHosZWUsbmUseCxQKXtmb3IodmFyIFY9MDtWPFA7VisrKW5lW1ZdPXpbT1tWXV0seFtWXT1lZVtPW1ZdXX0sY2Uu''@;'; put 'put ''cHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihPLHosZWUsbmUseCxQKXt0aGlzLnBlcm11dGUoUCxPLHosZWUsbmUseCk7Zm9yKHZhciBWPTE7Vjx4O1Y8PD0xKWZvcih2YXIgVD1WPDwxLFM9TWF0aC5jb3MoMipNYXRoLlBJL1QpLEY9TWF0aC5zaW4oMipNYXRoLlBJL1QpLHllPTA7eWU8''@;'; put 'put ''eDt5ZSs9VClmb3IodmFyIENlPVMsRGU9RixQZT0wO1BlPFY7UGUrKyl7dmFyIFFlPWVlW3llK1BlXSwkZT1uZVt5ZStQZV0sZ3Q9ZWVbeWUrUGUrVl0sd3Q9bmVbeWUrUGUrVl0sbXQ9Q2UqZ3QtRGUqd3Q7d3Q9Q2Uqd3QrRGUqZ3QsZWVbeWUrUGVdPVFlKyhndD1tdCksbmVbeWUrUGVdPSRl''@;'; put 'put ''K3d0LGVlW3llK1BlK1ZdPVFlLWd0LG5lW3llK1BlK1ZdPSRlLXd0LFBlIT09VCYmKG10PVMqQ2UtRipEZSxEZT1TKkRlK0YqQ2UsQ2U9bXQpfX0sY2UucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKE8seil7dmFyIGVlPTF8TWF0aC5tYXgoeixPKSxuZT0xJmVlLHg9MDtmb3IoZWU9''@;'; put 'put ''ZWUvMnwwO2VlO2VlPj4+PTEpeCsrO3JldHVybiAxPDx4KzErbmV9LGNlLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oTyx6LGVlKXtpZighKGVlPD0xKSlmb3IodmFyIG5lPTA7bmU8ZWUvMjtuZSsrKXt2YXIgeD1PW25lXTtPW25lXT1PW2VlLW5lLTFdLE9bZWUtbmUtMV09eCx4PXpb''@;'; put 'put ''bmVdLHpbbmVdPS16W2VlLW5lLTFdLHpbZWUtbmUtMV09LXh9fSxjZS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKE8seil7Zm9yKHZhciBlZT0wLG5lPTA7bmU8ei8yO25lKyspe3ZhciB4PTgxOTIqTWF0aC5yb3VuZChPWzIqbmUrMV0veikrTWF0aC5yb3VuZChPWzIqbmVdL3op''@;'; put 'put ''K2VlO09bbmVdPTY3MTA4ODYzJngsZWU9eDw2NzEwODg2ND8wOngvNjcxMDg4NjR8MH1yZXR1cm4gT30sY2UucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oTyx6LGVlLG5lKXtmb3IodmFyIHg9MCxQPTA7UDx6O1ArKyllZVsyKlBdPTgxOTEmKHgrPTB8T1tQXSksZWVbMipQKzFdPTgx''@;'; put 'put ''OTEmKHg+Pj49MTMpLHg+Pj49MTM7Zm9yKFA9Mip6O1A8bmU7KytQKWVlW1BdPTA7RSgwPT09eCksRSgwPT0oLTgxOTImeCkpfSxjZS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbihPKXtmb3IodmFyIHo9bmV3IEFycmF5KE8pLGVlPTA7ZWU8TztlZSsrKXpbZWVdPTA7cmV0dXJuIHp9LGNlLnBy''@;'; put 'put ''b3RvdHlwZS5tdWxwPWZ1bmN0aW9uKE8seixlZSl7dmFyIG5lPTIqdGhpcy5ndWVzc0xlbjEzYihPLmxlbmd0aCx6Lmxlbmd0aCkseD10aGlzLm1ha2VSQlQobmUpLFA9dGhpcy5zdHViKG5lKSxWPW5ldyBBcnJheShuZSksVD1uZXcgQXJyYXkobmUpLFM9bmV3IEFycmF5KG5lKSxGPW5ldyBB''@;'; put 'put ''cnJheShuZSkseWU9bmV3IEFycmF5KG5lKSxDZT1uZXcgQXJyYXkobmUpLERlPWVlLndvcmRzO0RlLmxlbmd0aD1uZSx0aGlzLmNvbnZlcnQxM2IoTy53b3JkcyxPLmxlbmd0aCxWLG5lKSx0aGlzLmNvbnZlcnQxM2Ioei53b3Jkcyx6Lmxlbmd0aCxGLG5lKSx0aGlzLnRyYW5zZm9ybShWLFAs''@;'; put 'put ''VCxTLG5lLHgpLHRoaXMudHJhbnNmb3JtKEYsUCx5ZSxDZSxuZSx4KTtmb3IodmFyIFBlPTA7UGU8bmU7UGUrKyl7dmFyIFFlPVRbUGVdKnllW1BlXS1TW1BlXSpDZVtQZV07U1tQZV09VFtQZV0qQ2VbUGVdK1NbUGVdKnllW1BlXSxUW1BlXT1RZX1yZXR1cm4gdGhpcy5jb25qdWdhdGUoVCxT''@;'; put 'put ''LG5lKSx0aGlzLnRyYW5zZm9ybShULFMsRGUsUCxuZSx4KSx0aGlzLmNvbmp1Z2F0ZShEZSxQLG5lKSx0aGlzLm5vcm1hbGl6ZTEzYihEZSxuZSksZWUubmVnYXRpdmU9Ty5uZWdhdGl2ZV56Lm5lZ2F0aXZlLGVlLmxlbmd0aD1PLmxlbmd0aCt6Lmxlbmd0aCxlZS5zdHJpcCgpfSxVLnByb3Rv''@;'; put 'put ''dHlwZS5tdWw9ZnVuY3Rpb24oTyl7dmFyIHo9bmV3IFUobnVsbCk7cmV0dXJuIHoud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK08ubGVuZ3RoKSx0aGlzLm11bFRvKE8seil9LFUucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24oTyl7dmFyIHo9bmV3IFUobnVsbCk7cmV0dXJuIHoud29yZHM9''@;'; put 'put ''bmV3IEFycmF5KHRoaXMubGVuZ3RoK08ubGVuZ3RoKSxvZSh0aGlzLE8seil9LFUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhPLHRoaXMpfSxVLnByb3RvdHlwZS5pbXVsbj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyksRShP''@;'; put 'put ''PDY3MTA4ODY0KTtmb3IodmFyIHo9MCxlZT0wO2VlPHRoaXMubGVuZ3RoO2VlKyspe3ZhciBuZT0oMHx0aGlzLndvcmRzW2VlXSkqTyx4PSg2NzEwODg2MyZuZSkrKDY3MTA4ODYzJnopO3o+Pj0yNix6Kz1uZS82NzEwODg2NHwwLHorPXg+Pj4yNix0aGlzLndvcmRzW2VlXT02NzEwODg2MyZ4''@;'; put 'put ''fXJldHVybiAwIT09eiYmKHRoaXMud29yZHNbZWVdPXosdGhpcy5sZW5ndGgrKyksdGhpc30sVS5wcm90b3R5cGUubXVsbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKE8pfSxVLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LFUu''@;'; put 'put ''cHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9LFUucHJvdG90eXBlLnBvdz1mdW5jdGlvbihPKXt2YXIgej1mdW5jdGlvbiB0ZShoZSl7Zm9yKHZhciBPPW5ldyBBcnJheShoZS5iaXRMZW5ndGgoKSksej0wO3o8Ty5sZW5ndGg7eisrKXt2''@;'; put 'put ''YXIgbmU9eiUyNjtPW3pdPShoZS53b3Jkc1t6LzI2fDBdJjE8PG5lKT4+Pm5lfXJldHVybiBPfShPKTtpZigwPT09ei5sZW5ndGgpcmV0dXJuIG5ldyBVKDEpO2Zvcih2YXIgZWU9dGhpcyxuZT0wO25lPHoubGVuZ3RoJiYwPT09eltuZV07bmUrKyxlZT1lZS5zcXIoKSk7aWYoKytuZTx6Lmxl''@;'; put 'put ''bmd0aClmb3IodmFyIHg9ZWUuc3FyKCk7bmU8ei5sZW5ndGg7bmUrKyx4PXguc3FyKCkpMCE9PXpbbmVdJiYoZWU9ZWUubXVsKHgpKTtyZXR1cm4gZWV9LFUucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCk7dmFyIHgsej1PJTI2LGVlPShP''@;'; put 'put ''LXopLzI2LG5lPTY3MTA4ODYzPj4+MjYtejw8MjYtejtpZigwIT09eil7dmFyIFA9MDtmb3IoeD0wO3g8dGhpcy5sZW5ndGg7eCsrKXt2YXIgVj10aGlzLndvcmRzW3hdJm5lO3RoaXMud29yZHNbeF09KDB8dGhpcy53b3Jkc1t4XSktVjw8enxQLFA9Vj4+PjI2LXp9UCYmKHRoaXMud29yZHNb''@;'; put 'put ''eF09UCx0aGlzLmxlbmd0aCsrKX1pZigwIT09ZWUpe2Zvcih4PXRoaXMubGVuZ3RoLTE7eD49MDt4LS0pdGhpcy53b3Jkc1t4K2VlXT10aGlzLndvcmRzW3hdO2Zvcih4PTA7eDxlZTt4KyspdGhpcy53b3Jkc1t4XT0wO3RoaXMubGVuZ3RoKz1lZX1yZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnBy''@;'; put 'put ''b3RvdHlwZS5pc2hsbj1mdW5jdGlvbihPKXtyZXR1cm4gRSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNobG4oTyl9LFUucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbihPLHosZWUpe3ZhciBuZTtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCksbmU9ej8oei16JTI2KS8yNjowO3ZhciB4''@;'; put 'put ''PU8lMjYsUD1NYXRoLm1pbigoTy14KS8yNix0aGlzLmxlbmd0aCksVj02NzEwODg2M142NzEwODg2Mz4+Png8PHgsVD1lZTtpZihuZS09UCxuZT1NYXRoLm1heCgwLG5lKSxUKXtmb3IodmFyIFM9MDtTPFA7UysrKVQud29yZHNbU109dGhpcy53b3Jkc1tTXTtULmxlbmd0aD1QfWlmKDAhPT1Q''@;'; put 'put ''KWlmKHRoaXMubGVuZ3RoPlApZm9yKHRoaXMubGVuZ3RoLT1QLFM9MDtTPHRoaXMubGVuZ3RoO1MrKyl0aGlzLndvcmRzW1NdPXRoaXMud29yZHNbUytQXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBGPTA7Zm9yKFM9dGhpcy5sZW5ndGgtMTtTPj0wJiYoMCE9PUZ8''@;'; put 'put ''fFM+PW5lKTtTLS0pe3ZhciB5ZT0wfHRoaXMud29yZHNbU107dGhpcy53b3Jkc1tTXT1GPDwyNi14fHllPj4+eCxGPXllJlZ9cmV0dXJuIFQmJjAhPT1GJiYoVC53b3Jkc1tULmxlbmd0aCsrXT1GKSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhp''@;'; put 'put ''cy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbihPLHosZWUpe3JldHVybiBFKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihPLHosZWUpfSxVLnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oTyl9LFUucHJvdG90eXBl''@;'; put 'put ''LnVzaGxuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKE8pfSxVLnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oTyl9LFUucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJu''@;'; put 'put ''KE8pfSxVLnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbihPKXtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCk7dmFyIHo9TyUyNixlZT0oTy16KS8yNjtyZXR1cm4hKHRoaXMubGVuZ3RoPD1lZXx8ISh0aGlzLndvcmRzW2VlXSYxPDx6KSl9LFUucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbihP''@;'; put 'put ''KXtFKCJudW1iZXIiPT10eXBlb2YgTyYmTz49MCk7dmFyIHo9TyUyNixlZT0oTy16KS8yNjtyZXR1cm4gRSgwPT09dGhpcy5uZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzIiksdGhpcy5sZW5ndGg8PWVlP3RoaXM6KDAhPT16JiZlZSsrLHRoaXMubGVu''@;'; put 'put ''Z3RoPU1hdGgubWluKGVlLHRoaXMubGVuZ3RoKSwwIT09eiYmKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0mPTY3MTA4ODYzXjY3MTA4ODYzPj4+ejw8eiksdGhpcy5zdHJpcCgpKX0sVS5wcm90b3R5cGUubWFza249ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oTyl9''@;'; put 'put ''LFUucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKE8pe3JldHVybiBFKCJudW1iZXIiPT10eXBlb2YgTyksRShPPDY3MTA4ODY0KSxPPDA/dGhpcy5pc3VibigtTyk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTxPPyh0aGlzLndvcmRzWzBdPU8t''@;'; put 'put ''KDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3VibihPKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oTyl9LFUucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbihPKXt0aGlzLndvcmRzWzBdKz1PO2Zvcih2YXIg''@;'; put 'put ''ej0wO3o8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbel0+PTY3MTA4ODY0O3orKyl0aGlzLndvcmRzW3pdLT02NzEwODg2NCx6PT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW3orMV09MTp0aGlzLndvcmRzW3orMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgs''@;'; put 'put ''eisxKSx0aGlzfSxVLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbihPKXtpZihFKCJudW1iZXIiPT10eXBlb2YgTyksRShPPDY3MTA4ODY0KSxPPDApcmV0dXJuIHRoaXMuaWFkZG4oLU8pO2lmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbihPKSx0''@;'; put 'put ''aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT1PLDE9PT10aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vsc2UgZm9yKHZhciB6PTA7ejx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1t6XTww''@;'; put 'put ''O3orKyl0aGlzLndvcmRzW3pdKz02NzEwODg2NCx0aGlzLndvcmRzW3orMV0tPTE7cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKE8pfSxVLnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uKE8pe3JldHVybiB0''@;'; put 'put ''aGlzLmNsb25lKCkuaXN1Ym4oTyl9LFUucHJvdG90eXBlLmlhYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXN9LFUucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfSxVLnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rp''@;'; put 'put ''b24oTyx6LGVlKXt2YXIgeDt0aGlzLl9leHBhbmQoTy5sZW5ndGgrZWUpO3ZhciBQLFY9MDtmb3IoeD0wO3g8Ty5sZW5ndGg7eCsrKXtQPSgwfHRoaXMud29yZHNbeCtlZV0pK1Y7dmFyIFQ9KDB8Ty53b3Jkc1t4XSkqejtWPSgoUC09NjcxMDg4NjMmVCk+PjI2KS0oVC82NzEwODg2NHwwKSx0''@;'; put 'put ''aGlzLndvcmRzW3grZWVdPTY3MTA4ODYzJlB9Zm9yKDt4PHRoaXMubGVuZ3RoLWVlO3grKylWPShQPSgwfHRoaXMud29yZHNbeCtlZV0pK1YpPj4yNix0aGlzLndvcmRzW3grZWVdPTY3MTA4ODYzJlA7aWYoMD09PVYpcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IoRSgtMT09PVYpLFY9MCx4PTA7''@;'; put 'put ''eDx0aGlzLmxlbmd0aDt4KyspVj0oUD0tKDB8dGhpcy53b3Jkc1t4XSkrVik+PjI2LHRoaXMud29yZHNbeF09NjcxMDg4NjMmUDtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oTyx6KXt2YXIgZWUsbmU9dGhpcy5jbG9u''@;'; put 'put ''ZSgpLHg9TyxQPTB8eC53b3Jkc1t4Lmxlbmd0aC0xXTswIT0oZWU9MjYtdGhpcy5fY291bnRCaXRzKFApKSYmKHg9eC51c2hsbihlZSksbmUuaXVzaGxuKGVlKSxQPTB8eC53b3Jkc1t4Lmxlbmd0aC0xXSk7dmFyIFMsVD1uZS5sZW5ndGgteC5sZW5ndGg7aWYoIm1vZCIhPT16KXsoUz1uZXcg''@;'; put 'put ''VShudWxsKSkubGVuZ3RoPVQrMSxTLndvcmRzPW5ldyBBcnJheShTLmxlbmd0aCk7Zm9yKHZhciBGPTA7RjxTLmxlbmd0aDtGKyspUy53b3Jkc1tGXT0wfXZhciB5ZT1uZS5jbG9uZSgpLl9pc2hsbnN1Ym11bCh4LDEsVCk7MD09PXllLm5lZ2F0aXZlJiYobmU9eWUsUyYmKFMud29yZHNbVF09''@;'; put 'put ''MSkpO2Zvcih2YXIgQ2U9VC0xO0NlPj0wO0NlLS0pe3ZhciBEZT02NzEwODg2NCooMHxuZS53b3Jkc1t4Lmxlbmd0aCtDZV0pKygwfG5lLndvcmRzW3gubGVuZ3RoK0NlLTFdKTtmb3IoRGU9TWF0aC5taW4oRGUvUHwwLDY3MTA4ODYzKSxuZS5faXNobG5zdWJtdWwoeCxEZSxDZSk7MCE9PW5l''@;'; put 'put ''Lm5lZ2F0aXZlOylEZS0tLG5lLm5lZ2F0aXZlPTAsbmUuX2lzaGxuc3VibXVsKHgsMSxDZSksbmUuaXNaZXJvKCl8fChuZS5uZWdhdGl2ZV49MSk7UyYmKFMud29yZHNbQ2VdPURlKX1yZXR1cm4gUyYmUy5zdHJpcCgpLG5lLnN0cmlwKCksImRpdiIhPT16JiYwIT09ZWUmJm5lLml1c2hybihl''@;'; put 'put ''ZSkse2RpdjpTfHxudWxsLG1vZDpuZX19LFUucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbihPLHosZWUpe3JldHVybiBFKCFPLmlzWmVybygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IFUoMCksbW9kOm5ldyBVKDApfTowIT09dGhpcy5uZWdhdGl2ZSYmMD09PU8ubmVnYXRpdmU/KFA9dGhp''@;'; put 'put ''cy5uZWcoKS5kaXZtb2QoTyx6KSwibW9kIiE9PXomJihuZT1QLmRpdi5uZWcoKSksImRpdiIhPT16JiYoeD1QLm1vZC5uZWcoKSxlZSYmMCE9PXgubmVnYXRpdmUmJnguaWFkZChPKSkse2RpdjpuZSxtb2Q6eH0pOjA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Ty5uZWdhdGl2ZT8oUD10aGlzLmRp''@;'; put 'put ''dm1vZChPLm5lZygpLHopLCJtb2QiIT09eiYmKG5lPVAuZGl2Lm5lZygpKSx7ZGl2Om5lLG1vZDpQLm1vZH0pOjAhPSh0aGlzLm5lZ2F0aXZlJk8ubmVnYXRpdmUpPyhQPXRoaXMubmVnKCkuZGl2bW9kKE8ubmVnKCkseiksImRpdiIhPT16JiYoeD1QLm1vZC5uZWcoKSxlZSYmMCE9PXgubmVn''@;'; put 'put ''YXRpdmUmJnguaXN1YihPKSkse2RpdjpQLmRpdixtb2Q6eH0pOk8ubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcChPKTwwP3tkaXY6bmV3IFUoMCksbW9kOnRoaXN9OjE9PT1PLmxlbmd0aD8iZGl2Ij09PXo/e2Rpdjp0aGlzLmRpdm4oTy53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09''@;'; put 'put ''ej97ZGl2Om51bGwsbW9kOm5ldyBVKHRoaXMubW9kbihPLndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKE8ud29yZHNbMF0pLG1vZDpuZXcgVSh0aGlzLm1vZG4oTy53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KE8seik7dmFyIG5lLHgsUH0sVS5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uKE8p''@;'; put 'put ''e3JldHVybiB0aGlzLmRpdm1vZChPLCJkaXYiLCExKS5kaXZ9LFUucHJvdG90eXBlLm1vZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5kaXZtb2QoTywibW9kIiwhMSkubW9kfSxVLnByb3RvdHlwZS51bW9kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmRpdm1vZChPLCJtb2QiLCEwKS5tb2R9''@;'; put 'put ''LFUucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKE8pe3ZhciB6PXRoaXMuZGl2bW9kKE8pO2lmKHoubW9kLmlzWmVybygpKXJldHVybiB6LmRpdjt2YXIgZWU9MCE9PXouZGl2Lm5lZ2F0aXZlP3oubW9kLmlzdWIoTyk6ei5tb2QsbmU9Ty51c2hybigxKSx4PU8uYW5kbG4oMSksUD1lZS5j''@;'; put 'put ''bXAobmUpO3JldHVybiBQPDB8fDE9PT14JiYwPT09UD96LmRpdjowIT09ei5kaXYubmVnYXRpdmU/ei5kaXYuaXN1Ym4oMSk6ei5kaXYuaWFkZG4oMSl9LFUucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oTyl7RShPPD02NzEwODg2Myk7Zm9yKHZhciB6PSgxPDwyNiklTyxlZT0wLG5lPXRoaXMu''@;'; put 'put ''bGVuZ3RoLTE7bmU+PTA7bmUtLSllZT0oeiplZSsoMHx0aGlzLndvcmRzW25lXSkpJU87cmV0dXJuIGVlfSxVLnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbihPKXtFKE88PTY3MTA4ODYzKTtmb3IodmFyIHo9MCxlZT10aGlzLmxlbmd0aC0xO2VlPj0wO2VlLS0pe3ZhciBuZT0oMHx0aGlzLndv''@;'; put 'put ''cmRzW2VlXSkrNjcxMDg4NjQqejt0aGlzLndvcmRzW2VlXT1uZS9PfDAsej1uZSVPfXJldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihPKX0sVS5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihPKXtFKDA9PT1P''@;'; put 'put ''Lm5lZ2F0aXZlKSxFKCFPLmlzWmVybygpKTt2YXIgej10aGlzLGVlPU8uY2xvbmUoKTt6PTAhPT16Lm5lZ2F0aXZlP3oudW1vZChPKTp6LmNsb25lKCk7Zm9yKHZhciBuZT1uZXcgVSgxKSx4PW5ldyBVKDApLFA9bmV3IFUoMCksVj1uZXcgVSgxKSxUPTA7ei5pc0V2ZW4oKSYmZWUuaXNFdmVu''@;'; put 'put ''KCk7KXouaXVzaHJuKDEpLGVlLml1c2hybigxKSwrK1Q7Zm9yKHZhciBTPWVlLmNsb25lKCksRj16LmNsb25lKCk7IXouaXNaZXJvKCk7KXtmb3IodmFyIHllPTAsQ2U9MTswPT0oei53b3Jkc1swXSZDZSkmJnllPDI2OysreWUsQ2U8PD0xKTtpZih5ZT4wKWZvcih6Lml1c2hybih5ZSk7eWUt''@;'; put 'put ''LSA+MDspKG5lLmlzT2RkKCl8fHguaXNPZGQoKSkmJihuZS5pYWRkKFMpLHguaXN1YihGKSksbmUuaXVzaHJuKDEpLHguaXVzaHJuKDEpO2Zvcih2YXIgRGU9MCxQZT0xOzA9PShlZS53b3Jkc1swXSZQZSkmJkRlPDI2OysrRGUsUGU8PD0xKTtpZihEZT4wKWZvcihlZS5pdXNocm4oRGUpO0Rl''@;'; put 'put ''LS0gPjA7KShQLmlzT2RkKCl8fFYuaXNPZGQoKSkmJihQLmlhZGQoUyksVi5pc3ViKEYpKSxQLml1c2hybigxKSxWLml1c2hybigxKTt6LmNtcChlZSk+PTA/KHouaXN1YihlZSksbmUuaXN1YihQKSx4LmlzdWIoVikpOihlZS5pc3ViKHopLFAuaXN1YihuZSksVi5pc3ViKHgpKX1yZXR1cm57''@;'; put 'put ''YTpQLGI6VixnY2Q6ZWUuaXVzaGxuKFQpfX0sVS5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKE8pe0UoMD09PU8ubmVnYXRpdmUpLEUoIU8uaXNaZXJvKCkpO3ZhciB5ZSx6PXRoaXMsZWU9Ty5jbG9uZSgpO3o9MCE9PXoubmVnYXRpdmU/ei51bW9kKE8pOnouY2xvbmUoKTtmb3IodmFyIG5l''@;'; put 'put ''PW5ldyBVKDEpLHg9bmV3IFUoMCksUD1lZS5jbG9uZSgpO3ouY21wbigxKT4wJiZlZS5jbXBuKDEpPjA7KXtmb3IodmFyIFY9MCxUPTE7MD09KHoud29yZHNbMF0mVCkmJlY8MjY7KytWLFQ8PD0xKTtpZihWPjApZm9yKHouaXVzaHJuKFYpO1YtLSA+MDspbmUuaXNPZGQoKSYmbmUuaWFkZChQ''@;'; put 'put ''KSxuZS5pdXNocm4oMSk7Zm9yKHZhciBTPTAsRj0xOzA9PShlZS53b3Jkc1swXSZGKSYmUzwyNjsrK1MsRjw8PTEpO2lmKFM+MClmb3IoZWUuaXVzaHJuKFMpO1MtLSA+MDspeC5pc09kZCgpJiZ4LmlhZGQoUCkseC5pdXNocm4oMSk7ei5jbXAoZWUpPj0wPyh6LmlzdWIoZWUpLG5lLmlzdWIo''@;'; put 'put ''eCkpOihlZS5pc3ViKHopLHguaXN1YihuZSkpfXJldHVybih5ZT0wPT09ei5jbXBuKDEpP25lOngpLmNtcG4oMCk8MCYmeWUuaWFkZChPKSx5ZX0sVS5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKE8pe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIE8uYWJzKCk7aWYoTy5pc1plcm8oKSlyZXR1cm4g''@;'; put 'put ''dGhpcy5hYnMoKTt2YXIgej10aGlzLmNsb25lKCksZWU9Ty5jbG9uZSgpO3oubmVnYXRpdmU9MCxlZS5uZWdhdGl2ZT0wO2Zvcih2YXIgbmU9MDt6LmlzRXZlbigpJiZlZS5pc0V2ZW4oKTtuZSsrKXouaXVzaHJuKDEpLGVlLml1c2hybigxKTtmb3IoOzspe2Zvcig7ei5pc0V2ZW4oKTspei5p''@;'; put 'put ''dXNocm4oMSk7Zm9yKDtlZS5pc0V2ZW4oKTspZWUuaXVzaHJuKDEpO3ZhciB4PXouY21wKGVlKTtpZih4PDApe3ZhciBQPXo7ej1lZSxlZT1QfWVsc2UgaWYoMD09PXh8fDA9PT1lZS5jbXBuKDEpKWJyZWFrO3ouaXN1YihlZSl9cmV0dXJuIGVlLml1c2hsbihuZSl9LFUucHJvdG90eXBlLmlu''@;'; put 'put ''dm09ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZWdjZChPKS5hLnVtb2QoTyl9LFUucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiAwPT0oMSZ0aGlzLndvcmRzWzBdKX0sVS5wcm90b3R5cGUuaXNPZGQ9ZnVuY3Rpb24oKXtyZXR1cm4gMT09KDEmdGhpcy53b3Jkc1swXSl9LFUu''@;'; put 'put ''cHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLndvcmRzWzBdJk99LFUucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPKTt2YXIgej1PJTI2LGVlPShPLXopLzI2LG5lPTE8PHo7aWYodGhpcy5sZW5ndGg8PWVlKXJldHVybiB0aGlz''@;'; put 'put ''Ll9leHBhbmQoZWUrMSksdGhpcy53b3Jkc1tlZV18PW5lLHRoaXM7Zm9yKHZhciB4PW5lLFA9ZWU7MCE9PXgmJlA8dGhpcy5sZW5ndGg7UCsrKXt2YXIgVj0wfHRoaXMud29yZHNbUF07eD0oVis9eCk+Pj4yNix0aGlzLndvcmRzW1BdPVYmPTY3MTA4ODYzfXJldHVybiAwIT09eCYmKHRoaXMu''@;'; put 'put ''d29yZHNbUF09eCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxVLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sVS5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihPKXt2YXIgZWUsej1PPDA7aWYoMCE9PXRoaXMubmVnYXRp''@;'; put 'put ''dmUmJiF6KXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZ6KXJldHVybiAxO2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxlbmd0aD4xKWVlPTE7ZWxzZXt6JiYoTz0tTyksRShPPD02NzEwODg2MywiTnVtYmVyIGlzIHRvbyBiaWciKTt2YXIgbmU9MHx0aGlzLndvcmRzWzBdO2VlPW5lPT09''@;'; put 'put ''Tz8wOm5lPE8/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtZWU6ZWV9LFUucHJvdG90eXBlLmNtcD1mdW5jdGlvbihPKXtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PU8ubmVnYXRpdmUpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1PLm5lZ2F0aXZlKXJldHVy''@;'; put 'put ''biAxO3ZhciB6PXRoaXMudWNtcChPKTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtejp6fSxVLnByb3RvdHlwZS51Y21wPWZ1bmN0aW9uKE8pe2lmKHRoaXMubGVuZ3RoPk8ubGVuZ3RoKXJldHVybiAxO2lmKHRoaXMubGVuZ3RoPE8ubGVuZ3RoKXJldHVybi0xO2Zvcih2YXIgej0wLGVl''@;'; put 'put ''PXRoaXMubGVuZ3RoLTE7ZWU+PTA7ZWUtLSl7dmFyIG5lPTB8dGhpcy53b3Jkc1tlZV0seD0wfE8ud29yZHNbZWVdO2lmKG5lIT09eCl7bmU8eD96PS0xOm5lPngmJih6PTEpO2JyZWFrfX1yZXR1cm4gen0sVS5wcm90b3R5cGUuZ3RuPWZ1bmN0aW9uKE8pe3JldHVybiAxPT09dGhpcy5jbXBu''@;'; put 'put ''KE8pfSxVLnByb3RvdHlwZS5ndD1mdW5jdGlvbihPKXtyZXR1cm4gMT09PXRoaXMuY21wKE8pfSxVLnByb3RvdHlwZS5ndGVuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNtcG4oTyk+PTB9LFUucHJvdG90eXBlLmd0ZT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbXAoTyk+PTB9LFUucHJv''@;'; put 'put ''dG90eXBlLmx0bj1mdW5jdGlvbihPKXtyZXR1cm4tMT09PXRoaXMuY21wbihPKX0sVS5wcm90b3R5cGUubHQ9ZnVuY3Rpb24oTyl7cmV0dXJuLTE9PT10aGlzLmNtcChPKX0sVS5wcm90b3R5cGUubHRlbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbXBuKE8pPD0wfSxVLnByb3RvdHlwZS5s''@;'; put 'put ''dGU9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY21wKE8pPD0wfSxVLnByb3RvdHlwZS5lcW49ZnVuY3Rpb24oTyl7cmV0dXJuIDA9PT10aGlzLmNtcG4oTyl9LFUucHJvdG90eXBlLmVxPWZ1bmN0aW9uKE8pe3JldHVybiAwPT09dGhpcy5jbXAoTyl9LFUucmVkPWZ1bmN0aW9uKE8pe3JldHVy''@;'; put 'put ''biBuZXcgVGUoTyl9LFUucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKE8pe3JldHVybiBFKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLEUoMD09PXRoaXMubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksTy5jb252ZXJ0''@;'; put 'put ''VG8odGhpcykuX2ZvcmNlUmVkKE8pfSxVLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sVS5wcm90b3R5''@;'; put 'put ''cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLnJlZD1PLHRoaXN9LFUucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKE8pe3JldHVybiBFKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKE8pfSxVLnBy''@;'; put 'put ''b3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkSUFkZCB3''@;'; put 'put ''b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlzLE8pfSxVLnBy''@;'; put 'put ''b3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkU2hsPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRTaGwg''@;'; put 'put ''d29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsTyks''@;'; put 'put ''dGhpcy5yZWQubXVsKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLE8pLHRoaXMucmVkLmltdWwodGhpcyxPKX0sVS5wcm90''@;'; put 'put ''b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LFUucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0''@;'; put 'put ''aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxVLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRo''@;'; put 'put ''IHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sVS5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkx''@;'; put 'put ''KHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LFUucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxVLnByb3Rv''@;'; put 'put ''dHlwZS5yZWRQb3c9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQmJiFPLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyxPKX07dmFyIGRlPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVs''@;'; put 'put ''bH07ZnVuY3Rpb24gdmUoaGUsTyl7dGhpcy5uYW1lPWhlLHRoaXMucD1uZXcgVShPLDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpLHRoaXMuaz1uZXcgVSgxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gQWUoKXt2ZS5jYWxs''@;'; put 'put ''KHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIGtlKCl7dmUuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAw''@;'; put 'put ''MDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBTZSgpe3ZlLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9ZnVuY3Rpb24gSWUoKXt2ZS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZm''@;'; put 'put ''ZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIFRlKGhlKXtpZigic3RyaW5nIj09dHlwZW9mIGhlKXt2YXIgTz1VLl9wcmltZShoZSk7dGhpcy5tPU8ucCx0aGlzLnByaW1lPU99ZWxzZSBFKGhlLmd0bigxKSwibW9kdWx1cyBt''@;'; put 'put ''dXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPWhlLHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiBNZShoZSl7VGUuY2FsbCh0aGlzLGhlKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhp''@;'; put 'put ''cy5yPW5ldyBVKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5t''@;'; put 'put ''aW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfXZlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIE89bmV3IFUobnVsbCk7cmV0dXJuIE8ud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxPfSx2ZS5wcm90b3R5cGUuaXJlZHVj''@;'; put 'put ''ZT1mdW5jdGlvbihPKXt2YXIgZWUsej1PO2Rve3RoaXMuc3BsaXQoeix0aGlzLnRtcCksZWU9KHo9KHo9dGhpcy5pbXVsSyh6KSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxlKGVlPnRoaXMubik7dmFyIG5lPWVlPHRoaXMubj8tMTp6LnVjbXAodGhpcy5wKTtyZXR1cm4gMD09''@;'; put 'put ''PW5lPyh6LndvcmRzWzBdPTAsei5sZW5ndGg9MSk6bmU+MD96LmlzdWIodGhpcy5wKTp2b2lkIDAhPT16LnN0cmlwP3ouc3RyaXAoKTp6Ll9zdHJpcCgpLHp9LHZlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihPLHope08uaXVzaHJuKHRoaXMubiwwLHopfSx2ZS5wcm90b3R5cGUuaW11bEs9''@;'; put 'put ''ZnVuY3Rpb24oTyl7cmV0dXJuIE8uaW11bCh0aGlzLmspfSxFZShBZSx2ZSksQWUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKE8seil7Zm9yKHZhciBuZT1NYXRoLm1pbihPLmxlbmd0aCw5KSx4PTA7eDxuZTt4Kyspei53b3Jkc1t4XT1PLndvcmRzW3hdO2lmKHoubGVuZ3RoPW5lLE8ubGVu''@;'; put 'put ''Z3RoPD05KXJldHVybiBPLndvcmRzWzBdPTAsdm9pZChPLmxlbmd0aD0xKTt2YXIgUD1PLndvcmRzWzldO2Zvcih6LndvcmRzW3oubGVuZ3RoKytdPTQxOTQzMDMmUCx4PTEwO3g8Ty5sZW5ndGg7eCsrKXt2YXIgVj0wfE8ud29yZHNbeF07Ty53b3Jkc1t4LTEwXT0oNDE5NDMwMyZWKTw8NHxQ''@;'; put 'put ''Pj4+MjIsUD1WfU8ud29yZHNbeC0xMF09UD4+Pj0yMixPLmxlbmd0aC09MD09PVAmJk8ubGVuZ3RoPjEwPzEwOjl9LEFlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihPKXtPLndvcmRzW08ubGVuZ3RoXT0wLE8ud29yZHNbTy5sZW5ndGgrMV09MCxPLmxlbmd0aCs9Mjtmb3IodmFyIHo9MCxl''@;'; put 'put ''ZT0wO2VlPE8ubGVuZ3RoO2VlKyspe3ZhciBuZT0wfE8ud29yZHNbZWVdO08ud29yZHNbZWVdPTY3MTA4ODYzJih6Kz05NzcqbmUpLHo9NjQqbmUrKHovNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1PLndvcmRzW08ubGVuZ3RoLTFdJiYoTy5sZW5ndGgtLSwwPT09Ty53b3Jkc1tPLmxlbmd0aC0x''@;'; put 'put ''XSYmTy5sZW5ndGgtLSksT30sRWUoa2UsdmUpLEVlKFNlLHZlKSxFZShJZSx2ZSksSWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKE8pe2Zvcih2YXIgej0wLGVlPTA7ZWU8Ty5sZW5ndGg7ZWUrKyl7dmFyIG5lPTE5KigwfE8ud29yZHNbZWVdKSt6LHg9NjcxMDg4NjMmbmU7bmU+Pj49MjYs''@;'; put 'put ''Ty53b3Jkc1tlZV09eCx6PW5lfXJldHVybiAwIT09eiYmKE8ud29yZHNbTy5sZW5ndGgrK109eiksT30sVS5fcHJpbWU9ZnVuY3Rpb24oTyl7aWYoZGVbT10pcmV0dXJuIGRlW09dO3ZhciB6O2lmKCJrMjU2Ij09PU8pej1uZXcgQWU7ZWxzZSBpZigicDIyNCI9PT1PKXo9bmV3IGtlO2Vsc2Ug''@;'; put 'put ''aWYoInAxOTIiPT09Tyl6PW5ldyBTZTtlbHNle2lmKCJwMjU1MTkiIT09Tyl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJpbWUgIitPKTt6PW5ldyBJZX1yZXR1cm4gZGVbT109eix6fSxUZS5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oTyl7RSgwPT09Ty5uZWdhdGl2ZSwicmVkIHdv''@;'; put 'put ''cmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxFKE8ucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LFRlLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihPLHope0UoMD09KE8ubmVnYXRpdmV8ei5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVz''@;'; put 'put ''IiksRShPLnJlZCYmTy5yZWQ9PT16LnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxUZS5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UoTykuX2ZvcmNlUmVkKHRoaXMpOk8udW1vZCh0aGlzLm0pLl9m''@;'; put 'put ''b3JjZVJlZCh0aGlzKX0sVGUucHJvdG90eXBlLm5lZz1mdW5jdGlvbihPKXtyZXR1cm4gTy5pc1plcm8oKT9PLmNsb25lKCk6dGhpcy5tLnN1YihPKS5fZm9yY2VSZWQodGhpcyl9LFRlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oTyx6KXt0aGlzLl92ZXJpZnkyKE8seik7dmFyIGVlPU8uYWRk''@;'; put 'put ''KHopO3JldHVybiBlZS5jbXAodGhpcy5tKT49MCYmZWUuaXN1Yih0aGlzLm0pLGVlLl9mb3JjZVJlZCh0aGlzKX0sVGUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oTyx6KXt0aGlzLl92ZXJpZnkyKE8seik7dmFyIGVlPU8uaWFkZCh6KTtyZXR1cm4gZWUuY21wKHRoaXMubSk+PTAmJmVlLmlz''@;'; put 'put ''dWIodGhpcy5tKSxlZX0sVGUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihPLHope3RoaXMuX3ZlcmlmeTIoTyx6KTt2YXIgZWU9Ty5zdWIoeik7cmV0dXJuIGVlLmNtcG4oMCk8MCYmZWUuaWFkZCh0aGlzLm0pLGVlLl9mb3JjZVJlZCh0aGlzKX0sVGUucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24o''@;'; put 'put ''Tyx6KXt0aGlzLl92ZXJpZnkyKE8seik7dmFyIGVlPU8uaXN1Yih6KTtyZXR1cm4gZWUuY21wbigwKTwwJiZlZS5pYWRkKHRoaXMubSksZWV9LFRlLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShPKSx0aGlzLmltb2QoTy51c2hsbih6KSl9LFRlLnBy''@;'; put 'put ''b3RvdHlwZS5pbXVsPWZ1bmN0aW9uKE8seil7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoTyx6KSx0aGlzLmltb2QoTy5pbXVsKHopKX0sVGUucHJvdG90eXBlLm11bD1mdW5jdGlvbihPLHope3JldHVybiB0aGlzLl92ZXJpZnkyKE8seiksdGhpcy5pbW9kKE8ubXVsKHopKX0sVGUucHJvdG90eXBl''@;'; put 'put ''LmlzcXI9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuaW11bChPLE8uY2xvbmUoKSl9LFRlLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubXVsKE8sTyl9LFRlLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKE8pe2lmKE8uaXNaZXJvKCkpcmV0dXJuIE8uY2xvbmUoKTt2YXIg''@;'; put 'put ''ej10aGlzLm0uYW5kbG4oMyk7aWYoRSh6JTI9PTEpLDM9PT16KXt2YXIgZWU9dGhpcy5tLmFkZChuZXcgVSgxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyhPLGVlKX1mb3IodmFyIG5lPXRoaXMubS5zdWJuKDEpLHg9MDshbmUuaXNaZXJvKCkmJjA9PT1uZS5hbmRsbigxKTspeCsrLG5l''@;'; put 'put ''Lml1c2hybigxKTtFKCFuZS5pc1plcm8oKSk7dmFyIFA9bmV3IFUoMSkudG9SZWQodGhpcyksVj1QLnJlZE5lZygpLFQ9dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpLFM9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihTPW5ldyBVKDIqUypTKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3coUyxUKS5j''@;'; put 'put ''bXAoVik7KVMucmVkSUFkZChWKTtmb3IodmFyIEY9dGhpcy5wb3coUyxuZSkseWU9dGhpcy5wb3coTyxuZS5hZGRuKDEpLml1c2hybigxKSksQ2U9dGhpcy5wb3coTyxuZSksRGU9eDswIT09Q2UuY21wKFApOyl7Zm9yKHZhciBQZT1DZSxRZT0wOzAhPT1QZS5jbXAoUCk7UWUrKylQZT1QZS5y''@;'; put 'put ''ZWRTcXIoKTtFKFFlPERlKTt2YXIgJGU9dGhpcy5wb3coRixuZXcgVSgxKS5pdXNobG4oRGUtUWUtMSkpO3llPXllLnJlZE11bCgkZSksRj0kZS5yZWRTcXIoKSxDZT1DZS5yZWRNdWwoRiksRGU9UWV9cmV0dXJuIHllfSxUZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihPKXt2YXIgej1PLl9p''@;'; put 'put ''bnZtcCh0aGlzLm0pO3JldHVybiAwIT09ei5uZWdhdGl2ZT8oei5uZWdhdGl2ZT0wLHRoaXMuaW1vZCh6KS5yZWROZWcoKSk6dGhpcy5pbW9kKHopfSxUZS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKE8seil7aWYoei5pc1plcm8oKSlyZXR1cm4gbmV3IFUoMSkudG9SZWQodGhpcyk7aWYoMD09''@;'; put 'put ''PXouY21wbigxKSlyZXR1cm4gTy5jbG9uZSgpO3ZhciBuZT1uZXcgQXJyYXkoMTYpO25lWzBdPW5ldyBVKDEpLnRvUmVkKHRoaXMpLG5lWzFdPU87Zm9yKHZhciB4PTI7eDxuZS5sZW5ndGg7eCsrKW5lW3hdPXRoaXMubXVsKG5lW3gtMV0sTyk7dmFyIFA9bmVbMF0sVj0wLFQ9MCxTPXouYml0''@;'; put 'put ''TGVuZ3RoKCklMjY7Zm9yKDA9PT1TJiYoUz0yNikseD16Lmxlbmd0aC0xO3g+PTA7eC0tKXtmb3IodmFyIEY9ei53b3Jkc1t4XSx5ZT1TLTE7eWU+PTA7eWUtLSl7dmFyIENlPUY+PnllJjE7UCE9PW5lWzBdJiYoUD10aGlzLnNxcihQKSksMCE9PUNlfHwwIT09Vj8oVjw8PTEsVnw9Q2UsKDQ9''@;'; put 'put ''PSsrVHx8MD09PXgmJjA9PT15ZSkmJihQPXRoaXMubXVsKFAsbmVbVl0pLFQ9MCxWPTApKTpUPTB9Uz0yNn1yZXR1cm4gUH0sVGUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihPKXt2YXIgej1PLnVtb2QodGhpcy5tKTtyZXR1cm4gej09PU8/ei5jbG9uZSgpOnp9LFRlLnByb3RvdHlw''@;'; put 'put ''ZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihPKXt2YXIgej1PLmNsb25lKCk7cmV0dXJuIHoucmVkPW51bGwsen0sVS5tb250PWZ1bmN0aW9uKE8pe3JldHVybiBuZXcgTWUoTyl9LEVlKE1lLFRlKSxNZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmltb2QoTy51''@;'; put 'put ''c2hsbih0aGlzLnNoaWZ0KSl9LE1lLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihPKXt2YXIgej10aGlzLmltb2QoTy5tdWwodGhpcy5yaW52KSk7cmV0dXJuIHoucmVkPW51bGwsen0sTWUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oTyx6KXtpZihPLmlzWmVybygpfHx6LmlzWmVy''@;'; put 'put ''bygpKXJldHVybiBPLndvcmRzWzBdPTAsTy5sZW5ndGg9MSxPO3ZhciBlZT1PLmltdWwoeiksbmU9ZWUubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLHg9ZWUuaXN1YihuZSkuaXVzaHJuKHRoaXMuc2hpZnQpLFA9eDtyZXR1''@;'; put 'put ''cm4geC5jbXAodGhpcy5tKT49MD9QPXguaXN1Yih0aGlzLm0pOnguY21wbigwKTwwJiYoUD14LmlhZGQodGhpcy5tKSksUC5fZm9yY2VSZWQodGhpcyl9LE1lLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oTyx6KXtpZihPLmlzWmVybygpfHx6LmlzWmVybygpKXJldHVybiBuZXcgVSgwKS5fZm9y''@;'; put 'put ''Y2VSZWQodGhpcyk7dmFyIGVlPU8ubXVsKHopLG5lPWVlLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSx4PWVlLmlzdWIobmUpLml1c2hybih0aGlzLnNoaWZ0KSxQPXg7cmV0dXJuIHguY21wKHRoaXMubSk+PTA/UD14Lmlz''@;'; put 'put ''dWIodGhpcy5tKTp4LmNtcG4oMCk8MCYmKFA9eC5pYWRkKHRoaXMubSkpLFAuX2ZvcmNlUmVkKHRoaXMpfSxNZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5pbW9kKE8uX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShYZT1MLm5t''@;'; put 'put ''ZChYZSksdGhpcyl9LDU5MDY5OlhlPT57InVzZSBzdHJpY3QiO3ZhciBtZSxKZT0ib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3Q/UmVmbGVjdDpudWxsLEw9SmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBKZS5hcHBseT9KZS5hcHBseTpmdW5jdGlvbih2ZSxBZSxrZSl7cmV0dXJuIEZ1bmN0aW9uLnBy''@;'; put 'put ''b3RvdHlwZS5hcHBseS5jYWxsKHZlLEFlLGtlKX07bWU9SmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBKZS5vd25LZXlzP0plLm93bktleXM6T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz9mdW5jdGlvbih2ZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHZlKS5jb25jYXQo''@;'; put 'put ''T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh2ZSkpfTpmdW5jdGlvbih2ZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHZlKX07dmFyIEU9TnVtYmVyLmlzTmFOfHxmdW5jdGlvbih2ZSl7cmV0dXJuIHZlIT12ZX07ZnVuY3Rpb24gRWUoKXtFZS5pbml0LmNhbGwodGhp''@;'; put 'put ''cyl9WGUuZXhwb3J0cz1FZSxYZS5leHBvcnRzLm9uY2U9ZnVuY3Rpb24gc2UoZGUsdmUpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihBZSxrZSl7ZnVuY3Rpb24gU2UoVGUpe2RlLnJlbW92ZUxpc3RlbmVyKHZlLEllKSxrZShUZSl9ZnVuY3Rpb24gSWUoKXsiZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YgZGUucmVtb3ZlTGlzdGVuZXImJmRlLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsU2UpLEFlKFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSl9Y2UoZGUsdmUsSWUse29uY2U6ITB9KSwiZXJyb3IiIT09dmUmJmZ1bmN0aW9uIG9lKGRlLHZlLEFlKXsiZnVuY3Rpb24iPT10eXBlb2YgZGUub24m''@;'; put 'put ''JmNlKGRlLCJlcnJvciIsdmUsQWUpfShkZSxTZSx7b25jZTohMH0pfSl9LEVlLkV2ZW50RW1pdHRlcj1FZSxFZS5wcm90b3R5cGUuX2V2ZW50cz12b2lkIDAsRWUucHJvdG90eXBlLl9ldmVudHNDb3VudD0wLEVlLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzPXZvaWQgMDt2YXIgVT0xMDtmdW5j''@;'; put 'put ''dGlvbiBRKGRlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZGUpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJsaXN0ZW5lciIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIGRlKX1mdW5jdGlvbiBqKGRlKXtyZXR1cm4gdm9pZCAwPT09''@;'; put 'put ''ZGUuX21heExpc3RlbmVycz9FZS5kZWZhdWx0TWF4TGlzdGVuZXJzOmRlLl9tYXhMaXN0ZW5lcnN9ZnVuY3Rpb24gcmUoZGUsdmUsQWUsa2Upe3ZhciBTZSxJZSxUZTtpZihRKEFlKSx2b2lkIDA9PT0oSWU9ZGUuX2V2ZW50cyk/KEllPWRlLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxk''@;'; put 'put ''ZS5fZXZlbnRzQ291bnQ9MCk6KHZvaWQgMCE9PUllLm5ld0xpc3RlbmVyJiYoZGUuZW1pdCgibmV3TGlzdGVuZXIiLHZlLEFlLmxpc3RlbmVyP0FlLmxpc3RlbmVyOkFlKSxJZT1kZS5fZXZlbnRzKSxUZT1JZVt2ZV0pLHZvaWQgMD09PVRlKVRlPUllW3ZlXT1BZSwrK2RlLl9ldmVudHNDb3Vu''@;'; put 'put ''dDtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBUZT9UZT1JZVt2ZV09a2U/W0FlLFRlXTpbVGUsQWVdOmtlP1RlLnVuc2hpZnQoQWUpOlRlLnB1c2goQWUpLChTZT1qKGRlKSk+MCYmVGUubGVuZ3RoPlNlJiYhVGUud2FybmVkKXtUZS53YXJuZWQ9ITA7dmFyIE1lPW5ldyBFcnJvcigiUG9z''@;'; put 'put ''c2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAiK1RlLmxlbmd0aCsiICIrU3RyaW5nKHZlKSsiIGxpc3RlbmVycyBhZGRlZC4gVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gaW5jcmVhc2UgbGltaXQiKTtNZS5uYW1lPSJNYXhMaXN0ZW5lcnNFeGNlZWRl''@;'; put 'put ''ZFdhcm5pbmciLE1lLmVtaXR0ZXI9ZGUsTWUudHlwZT12ZSxNZS5jb3VudD1UZS5sZW5ndGgsZnVuY3Rpb24gQihkZSl7Y29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oZGUpfShNZSl9cmV0dXJuIGRlfWZ1bmN0aW9uIGFlKCl7aWYoIXRoaXMuZmlyZWQpcmV0dXJuIHRoaXMu''@;'; put 'put ''dGFyZ2V0LnJlbW92ZUxpc3RlbmVyKHRoaXMudHlwZSx0aGlzLndyYXBGbiksdGhpcy5maXJlZD0hMCwwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQpOnRoaXMubGlzdGVuZXIuYXBwbHkodGhpcy50YXJnZXQsYXJndW1lbnRzKX1mdW5jdGlvbiBZ''@;'; put 'put ''KGRlLHZlLEFlKXt2YXIga2U9e2ZpcmVkOiExLHdyYXBGbjp2b2lkIDAsdGFyZ2V0OmRlLHR5cGU6dmUsbGlzdGVuZXI6QWV9LFNlPWFlLmJpbmQoa2UpO3JldHVybiBTZS5saXN0ZW5lcj1BZSxrZS53cmFwRm49U2UsU2V9ZnVuY3Rpb24gVyhkZSx2ZSxBZSl7dmFyIGtlPWRlLl9ldmVudHM7''@;'; put 'put ''aWYodm9pZCAwPT09a2UpcmV0dXJuW107dmFyIFNlPWtlW3ZlXTtyZXR1cm4gdm9pZCAwPT09U2U/W106ImZ1bmN0aW9uIj09dHlwZW9mIFNlP0FlP1tTZS5saXN0ZW5lcnx8U2VdOltTZV06QWU/ZnVuY3Rpb24gSihkZSl7Zm9yKHZhciB2ZT1uZXcgQXJyYXkoZGUubGVuZ3RoKSxBZT0wO0Fl''@;'; put 'put ''PHZlLmxlbmd0aDsrK0FlKXZlW0FlXT1kZVtBZV0ubGlzdGVuZXJ8fGRlW0FlXTtyZXR1cm4gdmV9KFNlKTp0ZShTZSxTZS5sZW5ndGgpfWZ1bmN0aW9uIE4oZGUpe3ZhciB2ZT10aGlzLl9ldmVudHM7aWYodm9pZCAwIT09dmUpe3ZhciBBZT12ZVtkZV07aWYoImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IEFlKXJldHVybiAxO2lmKHZvaWQgMCE9PUFlKXJldHVybiBBZS5sZW5ndGh9cmV0dXJuIDB9ZnVuY3Rpb24gdGUoZGUsdmUpe2Zvcih2YXIgQWU9bmV3IEFycmF5KHZlKSxrZT0wO2tlPHZlOysra2UpQWVba2VdPWRlW2tlXTtyZXR1cm4gQWV9ZnVuY3Rpb24gY2UoZGUsdmUsQWUsa2Upe2lm''@;'; put 'put ''KCJmdW5jdGlvbiI9PXR5cGVvZiBkZS5vbilrZS5vbmNlP2RlLm9uY2UodmUsQWUpOmRlLm9uKHZlLEFlKTtlbHNle2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBkZS5hZGRFdmVudExpc3RlbmVyKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAiZW1pdHRlciIgYXJndW1lbnQgbXVzdCBiZSBvZiB0''@;'; put 'put ''eXBlIEV2ZW50RW1pdHRlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBkZSk7ZGUuYWRkRXZlbnRMaXN0ZW5lcih2ZSxmdW5jdGlvbiBTZShJZSl7a2Uub25jZSYmZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih2ZSxTZSksQWUoSWUpfSl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShFZSwiZGVmYXVs''@;'; put 'put ''dE1heExpc3RlbmVycyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFV9LHNldDpmdW5jdGlvbihkZSl7aWYoIm51bWJlciIhPXR5cGVvZiBkZXx8ZGU8MHx8RShkZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiAiZGVmYXVsdE1heExpc3RlbmVycyIg''@;'; put 'put ''aXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJytkZSsiLiIpO1U9ZGV9fSksRWUuaW5pdD1mdW5jdGlvbigpeyh2b2lkIDA9PT10aGlzLl9ldmVudHN8fHRoaXMuX2V2ZW50cz09PU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5f''@;'; put 'put ''ZXZlbnRzKSYmKHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTApLHRoaXMuX21heExpc3RlbmVycz10aGlzLl9tYXhMaXN0ZW5lcnN8fHZvaWQgMH0sRWUucHJvdG90eXBlLnNldE1heExpc3RlbmVycz1mdW5jdGlvbih2ZSl7aWYoIm51bWJlciIh''@;'; put 'put ''PXR5cGVvZiB2ZXx8dmU8MHx8RSh2ZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiAibiIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJyt2ZSsiLiIpO3JldHVybiB0aGlzLl9tYXhMaXN0ZW5lcnM9dmUsdGhp''@;'; put 'put ''c30sRWUucHJvdG90eXBlLmdldE1heExpc3RlbmVycz1mdW5jdGlvbigpe3JldHVybiBqKHRoaXMpfSxFZS5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbih2ZSl7Zm9yKHZhciBBZT1bXSxrZT0xO2tlPGFyZ3VtZW50cy5sZW5ndGg7a2UrKylBZS5wdXNoKGFyZ3VtZW50c1trZV0pO3ZhciBTZT0i''@;'; put 'put ''ZXJyb3IiPT09dmUsSWU9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PUllKVNlPVNlJiZ2b2lkIDA9PT1JZS5lcnJvcjtlbHNlIGlmKCFTZSlyZXR1cm4hMTtpZihTZSl7dmFyIFRlO2lmKEFlLmxlbmd0aD4wJiYoVGU9QWVbMF0pLFRlIGluc3RhbmNlb2YgRXJyb3IpdGhyb3cgVGU7dmFyIE1l''@;'; put 'put ''PW5ldyBFcnJvcigiVW5oYW5kbGVkIGVycm9yLiIrKFRlPyIgKCIrVGUubWVzc2FnZSsiKSI6IiIpKTt0aHJvdyBNZS5jb250ZXh0PVRlLE1lfXZhciBoZT1JZVt2ZV07aWYodm9pZCAwPT09aGUpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGhlKUwoaGUsdGhpcyxBZSk7ZWxzZXt2''@;'; put 'put ''YXIgTz1oZS5sZW5ndGgsej10ZShoZSxPKTtmb3Ioa2U9MDtrZTxPOysra2UpTCh6W2tlXSx0aGlzLEFlKX1yZXR1cm4hMH0sRWUucHJvdG90eXBlLm9uPUVlLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbih2ZSxBZSl7cmV0dXJuIHJlKHRoaXMsdmUsQWUsITEpfSxFZS5wcm90b3R5''@;'; put 'put ''cGUucHJlcGVuZExpc3RlbmVyPWZ1bmN0aW9uKHZlLEFlKXtyZXR1cm4gcmUodGhpcyx2ZSxBZSwhMCl9LEVlLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKHZlLEFlKXtyZXR1cm4gUShBZSksdGhpcy5vbih2ZSxZKHRoaXMsdmUsQWUpKSx0aGlzfSxFZS5wcm90b3R5cGUucHJlcGVuZE9uY2VM''@;'; put 'put ''aXN0ZW5lcj1mdW5jdGlvbih2ZSxBZSl7cmV0dXJuIFEoQWUpLHRoaXMucHJlcGVuZExpc3RlbmVyKHZlLFkodGhpcyx2ZSxBZSkpLHRoaXN9LEVlLnByb3RvdHlwZS5vZmY9RWUucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKHZlLEFlKXt2YXIga2UsU2UsSWUsVGUsTWU7aWYo''@;'; put 'put ''UShBZSksdm9pZCAwPT09KFNlPXRoaXMuX2V2ZW50cykpcmV0dXJuIHRoaXM7aWYodm9pZCAwPT09KGtlPVNlW3ZlXSkpcmV0dXJuIHRoaXM7aWYoa2U9PT1BZXx8a2UubGlzdGVuZXI9PT1BZSkwPT0tLXRoaXMuX2V2ZW50c0NvdW50P3RoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwp''@;'; put 'put ''OihkZWxldGUgU2VbdmVdLFNlLnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoInJlbW92ZUxpc3RlbmVyIix2ZSxrZS5saXN0ZW5lcnx8QWUpKTtlbHNlIGlmKCJmdW5jdGlvbiIhPXR5cGVvZiBrZSl7Zm9yKEllPS0xLFRlPWtlLmxlbmd0aC0xO1RlPj0wO1RlLS0paWYoa2VbVGVdPT09QWV8''@;'; put 'put ''fGtlW1RlXS5saXN0ZW5lcj09PUFlKXtNZT1rZVtUZV0ubGlzdGVuZXIsSWU9VGU7YnJlYWt9aWYoSWU8MClyZXR1cm4gdGhpczswPT09SWU/a2Uuc2hpZnQoKTpmdW5jdGlvbiBLKGRlLHZlKXtmb3IoO3ZlKzE8ZGUubGVuZ3RoO3ZlKyspZGVbdmVdPWRlW3ZlKzFdO2RlLnBvcCgpfShrZSxJ''@;'; put 'put ''ZSksMT09PWtlLmxlbmd0aCYmKFNlW3ZlXT1rZVswXSksdm9pZCAwIT09U2UucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdCgicmVtb3ZlTGlzdGVuZXIiLHZlLE1lfHxBZSl9cmV0dXJuIHRoaXN9LEVlLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24odmUpe3ZhciBBZSxr''@;'; put 'put ''ZSxTZTtpZih2b2lkIDA9PT0oa2U9dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT1rZS5yZW1vdmVMaXN0ZW5lcilyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTApOnZvaWQg''@;'; put 'put ''MCE9PWtlW3ZlXSYmKDA9PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6ZGVsZXRlIGtlW3ZlXSksdGhpcztpZigwPT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIFRlLEllPU9iamVjdC5rZXlzKGtlKTtmb3IoU2U9MDtTZTxJZS5sZW5ndGg7KytT''@;'; put 'put ''ZSkicmVtb3ZlTGlzdGVuZXIiIT09KFRlPUllW1NlXSkmJnRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKFRlKTtyZXR1cm4gdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoInJlbW92ZUxpc3RlbmVyIiksdGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCx0''@;'; put 'put ''aGlzfWlmKCJmdW5jdGlvbiI9PXR5cGVvZihBZT1rZVt2ZV0pKXRoaXMucmVtb3ZlTGlzdGVuZXIodmUsQWUpO2Vsc2UgaWYodm9pZCAwIT09QWUpZm9yKFNlPUFlLmxlbmd0aC0xO1NlPj0wO1NlLS0pdGhpcy5yZW1vdmVMaXN0ZW5lcih2ZSxBZVtTZV0pO3JldHVybiB0aGlzfSxFZS5wcm90''@;'; put 'put ''b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKHZlKXtyZXR1cm4gVyh0aGlzLHZlLCEwKX0sRWUucHJvdG90eXBlLnJhd0xpc3RlbmVycz1mdW5jdGlvbih2ZSl7cmV0dXJuIFcodGhpcyx2ZSwhMSl9LEVlLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24oZGUsdmUpe3JldHVybiJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBkZS5saXN0ZW5lckNvdW50P2RlLmxpc3RlbmVyQ291bnQodmUpOk4uY2FsbChkZSx2ZSl9LEVlLnByb3RvdHlwZS5saXN0ZW5lckNvdW50PU4sRWUucHJvdG90eXBlLmV2ZW50TmFtZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXZlbnRzQ291bnQ+MD9tZSh0aGlzLl9ldmVudHMp''@;'; put 'put ''OltdfX0sNDAzNDc6KFhlLEplLEwpPT57dmFyIG1lPUwoNzM1MDIpLkJ1ZmZlcixCPUwoODA5NSk7WGUuZXhwb3J0cz1mdW5jdGlvbiBFKEVlLFUsUSxqKXtpZihtZS5pc0J1ZmZlcihFZSl8fChFZT1tZS5mcm9tKEVlLCJiaW5hcnkiKSksVSYmKG1lLmlzQnVmZmVyKFUpfHwoVT1tZS5mcm9t''@;'; put 'put ''KFUsImJpbmFyeSIpKSw4IT09VS5sZW5ndGgpKXRocm93IG5ldyBSYW5nZUVycm9yKCJzYWx0IHNob3VsZCBiZSBCdWZmZXIgd2l0aCA4IGJ5dGUgbGVuZ3RoIik7Zm9yKHZhciByZT1RLzgsYWU9bWUuYWxsb2MocmUpLFk9bWUuYWxsb2Moanx8MCksVz1tZS5hbGxvYygwKTtyZT4wfHxqPjA7''@;'; put 'put ''KXt2YXIgTj1uZXcgQjtOLnVwZGF0ZShXKSxOLnVwZGF0ZShFZSksVSYmTi51cGRhdGUoVSksVz1OLmRpZ2VzdCgpO3ZhciB0ZT0wO2lmKHJlPjApe3ZhciBLPWFlLmxlbmd0aC1yZTt0ZT1NYXRoLm1pbihyZSxXLmxlbmd0aCksVy5jb3B5KGFlLEssMCx0ZSkscmUtPXRlfWlmKHRlPFcubGVu''@;'; put 'put ''Z3RoJiZqPjApe3ZhciBKPVkubGVuZ3RoLWosc2U9TWF0aC5taW4oaixXLmxlbmd0aC10ZSk7Vy5jb3B5KFksSix0ZSx0ZStzZSksai09c2V9fXJldHVybiBXLmZpbGwoMCkse2tleTphZSxpdjpZfX19LDI0NzE1OlhlPT57WGUuZXhwb3J0cz1mdW5jdGlvbiBKZShMLG1lLEIpe2Z1bmN0aW9u''@;'; put 'put ''IEUoUSxqKXtpZighbWVbUV0pe2lmKCFMW1FdKXtpZihFZSlyZXR1cm4gRWUoUSwhMCk7dmFyIGFlPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK1ErIiciKTt0aHJvdyBhZS5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixhZX12YXIgWT1tZVtRXT17ZXhwb3J0czp7fX07TFtRXVsw''@;'; put 'put ''XS5jYWxsKFkuZXhwb3J0cyxmdW5jdGlvbihXKXtyZXR1cm4gRShMW1FdWzFdW1ddfHxXKX0sWSxZLmV4cG9ydHMsSmUsTCxtZSxCKX1yZXR1cm4gbWVbUV0uZXhwb3J0c31mb3IodmFyIEVlPXZvaWQgMCxVPTA7VTxCLmxlbmd0aDtVKyspRShCW1VdKTtyZXR1cm4gRX0oezE6W2Z1bmN0aW9u''@;'; put 'put ''KEplLEwsbWUpeyFmdW5jdGlvbihCKXsidXNlIHN0cmljdCI7dmFyIEUsRWU9L14tPyg/OlxkKyg/OlwuXGQqKT98XC5cZCspKD86ZVsrLV0/XGQrKT8kL2ksVT1NYXRoLmNlaWwsUT1NYXRoLmZsb29yLGo9IltCaWdOdW1iZXIgRXJyb3JdICIscmU9aisiTnVtYmVyIHByaW1pdGl2ZSBoYXMg''@;'; put 'put ''bW9yZSB0aGFuIDE1IHNpZ25pZmljYW50IGRpZ2l0czogIixhZT0xZTE0LFk9MTQsVz05MDA3MTk5MjU0NzQwOTkxLE49WzEsMTAsMTAwLDFlMywxZTQsMWU1LDFlNiwxZTcsMWU4LDFlOSwxZTEwLDFlMTEsMWUxMiwxZTEzXSx0ZT0xZTcsSz0xZTk7ZnVuY3Rpb24gSihrZSl7dmFyIFNlPTB8''@;'; put 'put ''a2U7cmV0dXJuIDA8a2V8fGtlPT09U2U/U2U6U2UtMX1mdW5jdGlvbiBzZShrZSl7Zm9yKHZhciBTZSxJZSxUZT0xLE1lPWtlLmxlbmd0aCxoZT1rZVswXSsiIjtUZTxNZTspe2ZvcihTZT1rZVtUZSsrXSsiIixJZT1ZLVNlLmxlbmd0aDtJZS0tO1NlPSIwIitTZSk7aGUrPVNlfWZvcihNZT1o''@;'; put 'put ''ZS5sZW5ndGg7NDg9PT1oZS5jaGFyQ29kZUF0KC0tTWUpOyk7cmV0dXJuIGhlLnNsaWNlKDAsTWUrMXx8MSl9ZnVuY3Rpb24gb2Uoa2UsU2Upe3ZhciBJZSxUZSxNZT1rZS5jLGhlPVNlLmMsTz1rZS5zLHo9U2UucyxlZT1rZS5lLG5lPVNlLmU7aWYoIU98fCF6KXJldHVybiBudWxsO2lmKFRl''@;'; put 'put ''PWhlJiYhaGVbMF0sKEllPU1lJiYhTWVbMF0pfHxUZSlyZXR1cm4gSWU/VGU/MDotejpPO2lmKE8hPXopcmV0dXJuIE87aWYoSWU9TzwwLFRlPWVlPT1uZSwhTWV8fCFoZSlyZXR1cm4gVGU/MDohTWVeSWU/MTotMTtpZighVGUpcmV0dXJuIG5lPGVlXkllPzE6LTE7Zm9yKHo9KGVlPU1lLmxl''@;'; put 'put ''bmd0aCk8KG5lPWhlLmxlbmd0aCk/ZWU6bmUsTz0wO088ejtPKyspaWYoTWVbT10hPWhlW09dKXJldHVybiBNZVtPXT5oZVtPXV5JZT8xOi0xO3JldHVybiBlZT09bmU/MDpuZTxlZV5JZT8xOi0xfWZ1bmN0aW9uIGNlKGtlLFNlLEllLFRlKXtpZihrZTxTZXx8SWU8a2V8fGtlIT09KGtlPDA/''@;'; put 'put ''VShrZSk6UShrZSkpKXRocm93IEVycm9yKGorKFRlfHwiQXJndW1lbnQiKSsoIm51bWJlciI9PXR5cGVvZiBrZT9rZTxTZXx8SWU8a2U/IiBvdXQgb2YgcmFuZ2U6ICI6IiBub3QgYW4gaW50ZWdlcjogIjoiIG5vdCBhIHByaW1pdGl2ZSBudW1iZXI6ICIpK1N0cmluZyhrZSkpfWZ1bmN0aW9u''@;'; put 'put ''IGRlKGtlKXt2YXIgU2U9a2UuYy5sZW5ndGgtMTtyZXR1cm4gSihrZS5lL1kpPT1TZSYma2UuY1tTZV0lMiE9MH1mdW5jdGlvbiB2ZShrZSxTZSl7cmV0dXJuKDE8a2UubGVuZ3RoP2tlLmNoYXJBdCgwKSsiLiIra2Uuc2xpY2UoMSk6a2UpKyhTZTwwPyJlIjoiZSsiKStTZX1mdW5jdGlvbiBB''@;'; put 'put ''ZShrZSxTZSxJZSl7dmFyIFRlLE1lO2lmKFNlPDApe2ZvcihNZT1JZSsiLiI7KytTZTtNZSs9SWUpO2tlPU1lK2tlfWVsc2UgaWYoKytTZT4oVGU9a2UubGVuZ3RoKSl7Zm9yKE1lPUllLFNlLT1UZTstLVNlO01lKz1JZSk7a2UrPU1lfWVsc2UgU2U8VGUmJihrZT1rZS5zbGljZSgwLFNlKSsi''@;'; put 'put ''LiIra2Uuc2xpY2UoU2UpKTtyZXR1cm4ga2V9KEU9ZnVuY3Rpb24ga2UoU2Upe3ZhciBJZSxUZSxNZSxoZSxPLHosZWUsbmUseCxQLFY9dnQucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp2dCx0b1N0cmluZzpudWxsLHZhbHVlT2Y6bnVsbH0sVD1uZXcgdnQoMSksUz0yMCxGPTQseWU9LTcsQ2U9''@;'; put 'put ''MjEsRGU9LTFlNyxQZT0xZTcsUWU9ITEsJGU9MSxndD0wLHd0PXtwcmVmaXg6IiIsZ3JvdXBTaXplOjMsc2Vjb25kYXJ5R3JvdXBTaXplOjAsZ3JvdXBTZXBhcmF0b3I6IiwiLGRlY2ltYWxTZXBhcmF0b3I6Ii4iLGZyYWN0aW9uR3JvdXBTaXplOjAsZnJhY3Rpb25Hcm91cFNlcGFyYXRvcjoi''@;'; put 'put ''XHhhMCIsc3VmZml4OiIifSxtdD0iMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjtmdW5jdGlvbiB2dCh0dCxldCl7dmFyIGx0LEx0LEN0LGZ0LEh0LEdlLFVlLHl0LGp0PXRoaXM7aWYoIShqdCBpbnN0YW5jZW9mIHZ0KSlyZXR1cm4gbmV3IHZ0KHR0LGV0KTtpZihudWxs''@;'; put 'put ''PT1ldCl7aWYodHQgaW5zdGFuY2VvZiB2dClyZXR1cm4ganQucz10dC5zLGp0LmU9dHQuZSx2b2lkKGp0LmM9KHR0PXR0LmMpP3R0LnNsaWNlKCk6dHQpO2lmKChHZT0ibnVtYmVyIj09dHlwZW9mIHR0KSYmMCp0dD09MCl7aWYoanQucz0xL3R0PDA/KHR0PS10dCwtMSk6MSx0dD09PX5+dHQp''@;'; put 'put ''e2ZvcihmdD0wLEh0PXR0OzEwPD1IdDtIdC89MTAsZnQrKyk7cmV0dXJuIGp0LmU9ZnQsdm9pZChqdC5jPVt0dF0pfXl0PVN0cmluZyh0dCl9ZWxzZXtpZih5dD1TdHJpbmcodHQpLCFFZS50ZXN0KHl0KSlyZXR1cm4gTWUoanQseXQsR2UpO2p0LnM9NDU9PXl0LmNoYXJDb2RlQXQoMCk/KHl0''@;'; put 'put ''PXl0LnNsaWNlKDEpLC0xKToxfS0xPChmdD15dC5pbmRleE9mKCIuIikpJiYoeXQ9eXQucmVwbGFjZSgiLiIsIiIpKSwwPChIdD15dC5zZWFyY2goL2UvaSkpPyhmdDwwJiYoZnQ9SHQpLGZ0Kz0reXQuc2xpY2UoSHQrMSkseXQ9eXQuc3Vic3RyaW5nKDAsSHQpKTpmdDwwJiYoZnQ9eXQubGVu''@;'; put 'put ''Z3RoKX1lbHNle2lmKGNlKGV0LDIsbXQubGVuZ3RoLCJCYXNlIikseXQ9U3RyaW5nKHR0KSwxMD09ZXQpcmV0dXJuIG9uKGp0PW5ldyB2dCh0dCBpbnN0YW5jZW9mIHZ0P3R0Onl0KSxTK2p0LmUrMSxGKTtpZihHZT0ibnVtYmVyIj09dHlwZW9mIHR0KXtpZigwKnR0IT0wKXJldHVybiBNZShq''@;'; put 'put ''dCx5dCxHZSxldCk7aWYoanQucz0xL3R0PDA/KHl0PXl0LnNsaWNlKDEpLC0xKToxLHZ0LkRFQlVHJiYxNTx5dC5yZXBsYWNlKC9eMFwuMCp8XC4vLCIiKS5sZW5ndGgpdGhyb3cgRXJyb3IocmUrdHQpO0dlPSExfWVsc2UganQucz00NT09PXl0LmNoYXJDb2RlQXQoMCk/KHl0PXl0LnNsaWNl''@;'; put 'put ''KDEpLC0xKToxO2ZvcihsdD1tdC5zbGljZSgwLGV0KSxmdD1IdD0wLFVlPXl0Lmxlbmd0aDtIdDxVZTtIdCsrKWlmKGx0LmluZGV4T2YoTHQ9eXQuY2hhckF0KEh0KSk8MCl7aWYoIi4iPT1MdCl7aWYoZnQ8SHQpe2Z0PVVlO2NvbnRpbnVlfX1lbHNlIGlmKCFDdCYmKHl0PT15dC50b1VwcGVy''@;'; put 'put ''Q2FzZSgpJiYoeXQ9eXQudG9Mb3dlckNhc2UoKSl8fHl0PT15dC50b0xvd2VyQ2FzZSgpJiYoeXQ9eXQudG9VcHBlckNhc2UoKSkpKXtDdD0hMCxIdD0tMSxmdD0wO2NvbnRpbnVlfXJldHVybiBNZShqdCxTdHJpbmcodHQpLEdlLGV0KX0tMTwoZnQ9KHl0PVRlKHl0LGV0LDEwLGp0LnMpKS5p''@;'; put 'put ''bmRleE9mKCIuIikpP3l0PXl0LnJlcGxhY2UoIi4iLCIiKTpmdD15dC5sZW5ndGh9Zm9yKEh0PTA7NDg9PT15dC5jaGFyQ29kZUF0KEh0KTtIdCsrKTtmb3IoVWU9eXQubGVuZ3RoOzQ4PT09eXQuY2hhckNvZGVBdCgtLVVlKTspO2lmKHl0PXl0LnNsaWNlKEh0LCsrVWUpKXtpZihVZS09SHQs''@;'; put 'put ''R2UmJnZ0LkRFQlVHJiYxNTxVZSYmKFc8dHR8fHR0IT09USh0dCkpKXRocm93IEVycm9yKHJlK2p0LnMqdHQpO2lmKFBlPChmdD1mdC1IdC0xKSlqdC5jPWp0LmU9bnVsbDtlbHNlIGlmKGZ0PERlKWp0LmM9W2p0LmU9MF07ZWxzZXtpZihqdC5lPWZ0LGp0LmM9W10sSHQ9KGZ0KzEpJVksZnQ8''@;'; put 'put ''MCYmKEh0Kz1ZKSxIdDxVZSl7Zm9yKEh0JiZqdC5jLnB1c2goK3l0LnNsaWNlKDAsSHQpKSxVZS09WTtIdDxVZTspanQuYy5wdXNoKCt5dC5zbGljZShIdCxIdCs9WSkpO3l0PXl0LnNsaWNlKEh0KSxIdD1ZLXl0Lmxlbmd0aH1lbHNlIEh0LT1VZTtmb3IoO0h0LS07eXQrPSIwIik7anQuYy5w''@;'; put 'put ''dXNoKCt5dCl9fWVsc2UganQuYz1banQuZT0wXX1mdW5jdGlvbiBBdCh0dCxldCxsdCxMdCl7dmFyIEN0LGZ0LEh0LEdlLFVlO2lmKG51bGw9PWx0P2x0PUY6Y2UobHQsMCw4KSwhdHQuYylyZXR1cm4gdHQudG9TdHJpbmcoKTtpZihDdD10dC5jWzBdLEh0PXR0LmUsbnVsbD09ZXQpVWU9c2Uo''@;'; put 'put ''dHQuYyksVWU9MT09THR8fDI9PUx0JiYoSHQ8PXllfHxDZTw9SHQpP3ZlKFVlLEh0KTpBZShVZSxIdCwiMCIpO2Vsc2UgaWYoZnQ9KHR0PW9uKG5ldyB2dCh0dCksZXQsbHQpKS5lLEdlPShVZT1zZSh0dC5jKSkubGVuZ3RoLDE9PUx0fHwyPT1MdCYmKGV0PD1mdHx8ZnQ8PXllKSl7Zm9yKDtH''@;'; put 'put ''ZTxldDtVZSs9IjAiLEdlKyspO1VlPXZlKFVlLGZ0KX1lbHNlIGlmKGV0LT1IdCxVZT1BZShVZSxmdCwiMCIpLEdlPGZ0KzEpe2lmKDA8LS1ldClmb3IoVWUrPSIuIjtldC0tO1VlKz0iMCIpO31lbHNlIGlmKDA8KGV0Kz1mdC1HZSkpZm9yKGZ0KzE9PUdlJiYoVWUrPSIuIik7ZXQtLTtVZSs9''@;'; put 'put ''IjAiKTtyZXR1cm4gdHQuczwwJiZDdD8iLSIrVWU6VWV9ZnVuY3Rpb24gaHQodHQsZXQpe2Zvcih2YXIgbHQsTHQ9MSxDdD1uZXcgdnQodHRbMF0pO0x0PHR0Lmxlbmd0aDtMdCsrKXtpZighKGx0PW5ldyB2dCh0dFtMdF0pKS5zKXtDdD1sdDticmVha31ldC5jYWxsKEN0LGx0KSYmKEN0PWx0''@;'; put 'put ''KX1yZXR1cm4gQ3R9ZnVuY3Rpb24gQnQodHQsZXQsbHQpe2Zvcih2YXIgTHQ9MSxDdD1ldC5sZW5ndGg7IWV0Wy0tQ3RdO2V0LnBvcCgpKTtmb3IoQ3Q9ZXRbMF07MTA8PUN0O0N0Lz0xMCxMdCsrKTtyZXR1cm4gdHQuYz0obHQ9THQrbHQqWS0xKT5QZT90dC5lPW51bGw6bHQ8RGU/W3R0LmU9''@;'; put 'put ''MF06KHR0LmU9bHQsZXQpLHR0fWZ1bmN0aW9uIG9uKHR0LGV0LGx0LEx0KXt2YXIgQ3QsZnQsSHQsR2UsVWUseXQsanQsSnQ9dHQuYyxnbj1OO2lmKEp0KXtlOntmb3IoQ3Q9MSxHZT1KdFswXTsxMDw9R2U7R2UvPTEwLEN0KyspO2lmKChmdD1ldC1DdCk8MClmdCs9WSxqdD0oVWU9SnRbeXQ9''@;'; put 'put ''MF0pL2duW0N0LShIdD1ldCktMV0lMTB8MDtlbHNlIGlmKCh5dD1VKChmdCsxKS9ZKSk+PUp0Lmxlbmd0aCl7aWYoIUx0KWJyZWFrIGU7Zm9yKDtKdC5sZW5ndGg8PXl0O0p0LnB1c2goMCkpO1VlPWp0PTAsSHQ9KGZ0JT1ZKS1ZKyhDdD0xKX1lbHNle2ZvcihVZT1HZT1KdFt5dF0sQ3Q9MTsx''@;'; put 'put ''MDw9R2U7R2UvPTEwLEN0KyspO2p0PShIdD0oZnQlPVkpLVkrQ3QpPDA/MDpVZS9nbltDdC1IdC0xXSUxMHwwfWlmKEx0PUx0fHxldDwwfHxudWxsIT1KdFt5dCsxXXx8KEh0PDA/VWU6VWUlZ25bQ3QtSHQtMV0pLEx0PWx0PDQ/KGp0fHxMdCkmJigwPT1sdHx8bHQ9PSh0dC5zPDA/MzoyKSk6''@;'; put 'put ''NTxqdHx8NT09anQmJig0PT1sdHx8THR8fDY9PWx0JiYoMDxmdD8wPEh0P1VlL2duW0N0LUh0XTowOkp0W3l0LTFdKSUxMCYxfHxsdD09KHR0LnM8MD84OjcpKSxldDwxfHwhSnRbMF0pcmV0dXJuIEp0Lmxlbmd0aD0wLEx0PyhKdFswXT1nblsoWS0oZXQtPXR0LmUrMSklWSklWV0sdHQuZT0t''@;'; put 'put ''ZXR8fDApOkp0WzBdPXR0LmU9MCx0dDtpZigwPT1mdD8oSnQubGVuZ3RoPXl0LEdlPTEseXQtLSk6KEp0Lmxlbmd0aD15dCsxLEdlPWduW1ktZnRdLEp0W3l0XT0wPEh0P1EoVWUvZ25bQ3QtSHRdJWduW0h0XSkqR2U6MCksTHQpZm9yKDs7KXtpZigwPT15dCl7Zm9yKGZ0PTEsSHQ9SnRbMF07''@;'; put 'put ''MTA8PUh0O0h0Lz0xMCxmdCsrKTtmb3IoSHQ9SnRbMF0rPUdlLEdlPTE7MTA8PUh0O0h0Lz0xMCxHZSsrKTtmdCE9R2UmJih0dC5lKyssSnRbMF09PWFlJiYoSnRbMF09MSkpO2JyZWFrfWlmKEp0W3l0XSs9R2UsSnRbeXRdIT1hZSlicmVhaztKdFt5dC0tXT0wLEdlPTF9Zm9yKGZ0PUp0Lmxl''@;'; put 'put ''bmd0aDswPT09SnRbLS1mdF07SnQucG9wKCkpO310dC5lPlBlP3R0LmM9dHQuZT1udWxsOnR0LmU8RGUmJih0dC5jPVt0dC5lPTBdKX1yZXR1cm4gdHR9ZnVuY3Rpb24gX3QodHQpe3ZhciBldCxsdD10dC5lO3JldHVybiBudWxsPT09bHQ/dHQudG9TdHJpbmcoKTooZXQ9c2UodHQuYyksZXQ9''@;'; put 'put ''bHQ8PXllfHxDZTw9bHQ/dmUoZXQsbHQpOkFlKGV0LGx0LCIwIiksdHQuczwwPyItIitldDpldCl9cmV0dXJuIHZ0LmNsb25lPWtlLHZ0LlJPVU5EX1VQPTAsdnQuUk9VTkRfRE9XTj0xLHZ0LlJPVU5EX0NFSUw9Mix2dC5ST1VORF9GTE9PUj0zLHZ0LlJPVU5EX0hBTEZfVVA9NCx2dC5ST1VO''@;'; put 'put ''RF9IQUxGX0RPV049NSx2dC5ST1VORF9IQUxGX0VWRU49Nix2dC5ST1VORF9IQUxGX0NFSUw9Nyx2dC5ST1VORF9IQUxGX0ZMT09SPTgsdnQuRVVDTElEPTksdnQuY29uZmlnPXZ0LnNldD1mdW5jdGlvbih0dCl7dmFyIGV0LGx0O2lmKG51bGwhPXR0KXtpZigib2JqZWN0IiE9dHlwZW9mIHR0''@;'; put 'put ''KXRocm93IEVycm9yKGorIk9iamVjdCBleHBlY3RlZDogIit0dCk7aWYodHQuaGFzT3duUHJvcGVydHkoZXQ9IkRFQ0lNQUxfUExBQ0VTIikmJihjZShsdD10dFtldF0sMCxLLGV0KSxTPWx0KSx0dC5oYXNPd25Qcm9wZXJ0eShldD0iUk9VTkRJTkdfTU9ERSIpJiYoY2UobHQ9dHRbZXRdLDAs''@;'; put 'put ''OCxldCksRj1sdCksdHQuaGFzT3duUHJvcGVydHkoZXQ9IkVYUE9ORU5USUFMX0FUIikmJigobHQ9dHRbZXRdKSYmbHQucG9wPyhjZShsdFswXSwtSywwLGV0KSxjZShsdFsxXSwwLEssZXQpLHllPWx0WzBdLENlPWx0WzFdKTooY2UobHQsLUssSyxldCkseWU9LShDZT1sdDwwPy1sdDpsdCkp''@;'; put 'put ''KSx0dC5oYXNPd25Qcm9wZXJ0eShldD0iUkFOR0UiKSlpZigobHQ9dHRbZXRdKSYmbHQucG9wKWNlKGx0WzBdLC1LLC0xLGV0KSxjZShsdFsxXSwxLEssZXQpLERlPWx0WzBdLFBlPWx0WzFdO2Vsc2V7aWYoY2UobHQsLUssSyxldCksIWx0KXRocm93IEVycm9yKGorZXQrIiBjYW5ub3QgYmUg''@;'; put 'put ''emVybzogIitsdCk7RGU9LShQZT1sdDwwPy1sdDpsdCl9aWYodHQuaGFzT3duUHJvcGVydHkoZXQ9IkNSWVBUTyIpKXtpZigobHQ9dHRbZXRdKSE9PSEhbHQpdGhyb3cgRXJyb3IoaitldCsiIG5vdCB0cnVlIG9yIGZhbHNlOiAiK2x0KTtpZihsdCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBj''@;'; put 'put ''cnlwdG98fCFjcnlwdG98fCFjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzJiYhY3J5cHRvLnJhbmRvbUJ5dGVzKXRocm93IFFlPSFsdCxFcnJvcihqKyJjcnlwdG8gdW5hdmFpbGFibGUiKTtRZT1sdH1lbHNlIFFlPWx0fWlmKHR0Lmhhc093blByb3BlcnR5KGV0PSJNT0RVTE9fTU9ERSIpJiYoY2Uo''@;'; put 'put ''bHQ9dHRbZXRdLDAsOSxldCksJGU9bHQpLHR0Lmhhc093blByb3BlcnR5KGV0PSJQT1dfUFJFQ0lTSU9OIikmJihjZShsdD10dFtldF0sMCxLLGV0KSxndD1sdCksdHQuaGFzT3duUHJvcGVydHkoZXQ9IkZPUk1BVCIpKXtpZigib2JqZWN0IiE9dHlwZW9mKGx0PXR0W2V0XSkpdGhyb3cgRXJy''@;'; put 'put ''b3IoaitldCsiIG5vdCBhbiBvYmplY3Q6ICIrbHQpO3d0PWx0fWlmKHR0Lmhhc093blByb3BlcnR5KGV0PSJBTFBIQUJFVCIpKXtpZigic3RyaW5nIiE9dHlwZW9mKGx0PXR0W2V0XSl8fC9eLiR8WystLlxzXXwoLikuKlwxLy50ZXN0KGx0KSl0aHJvdyBFcnJvcihqK2V0KyIgaW52YWxpZDog''@;'; put 'put ''IitsdCk7bXQ9bHR9fXJldHVybntERUNJTUFMX1BMQUNFUzpTLFJPVU5ESU5HX01PREU6RixFWFBPTkVOVElBTF9BVDpbeWUsQ2VdLFJBTkdFOltEZSxQZV0sQ1JZUFRPOlFlLE1PRFVMT19NT0RFOiRlLFBPV19QUkVDSVNJT046Z3QsRk9STUFUOnd0LEFMUEhBQkVUOm10fX0sdnQuaXNCaWdO''@;'; put 'put ''dW1iZXI9ZnVuY3Rpb24odHQpe3JldHVybiB0dCBpbnN0YW5jZW9mIHZ0fHx0dCYmITA9PT10dC5faXNCaWdOdW1iZXJ8fCExfSx2dC5tYXhpbXVtPXZ0Lm1heD1mdW5jdGlvbigpe3JldHVybiBodChhcmd1bWVudHMsVi5sdCl9LHZ0Lm1pbmltdW09dnQubWluPWZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IGh0KGFyZ3VtZW50cyxWLmd0KX0sdnQucmFuZG9tPShoZT05MDA3MTk5MjU0NzQwOTkyLE89TWF0aC5yYW5kb20oKSpoZSYyMDk3MTUxP2Z1bmN0aW9uKCl7cmV0dXJuIFEoTWF0aC5yYW5kb20oKSpoZSl9OmZ1bmN0aW9uKCl7cmV0dXJuIDgzODg2MDgqKDEwNzM3NDE4MjQqTWF0aC5yYW5k''@;'; put 'put ''b20oKXwwKSsoODM4ODYwOCpNYXRoLnJhbmRvbSgpfDApfSxmdW5jdGlvbih0dCl7dmFyIGV0LGx0LEx0LEN0LGZ0LEh0PTAsR2U9W10sVWU9bmV3IHZ0KFQpO2lmKG51bGw9PXR0P3R0PVM6Y2UodHQsMCxLKSxDdD1VKHR0L1kpLFFlKWlmKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpe2Zvcihl''@;'; put 'put ''dD1jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheShDdCo9MikpO0h0PEN0Oyk5ZTE1PD0oZnQ9MTMxMDcyKmV0W0h0XSsoZXRbSHQrMV0+Pj4xMSkpPyhsdD1jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgyKSksZXRbSHRdPWx0WzBdLGV0W0h0KzFd''@;'; put 'put ''PWx0WzFdKTooR2UucHVzaChmdCUxZTE0KSxIdCs9Mik7SHQ9Q3QvMn1lbHNle2lmKCFjcnlwdG8ucmFuZG9tQnl0ZXMpdGhyb3cgUWU9ITEsRXJyb3IoaisiY3J5cHRvIHVuYXZhaWxhYmxlIik7Zm9yKGV0PWNyeXB0by5yYW5kb21CeXRlcyhDdCo9Nyk7SHQ8Q3Q7KTllMTU8PShmdD0yODE0''@;'; put 'put ''NzQ5NzY3MTA2NTYqKDMxJmV0W0h0XSkrMTA5OTUxMTYyNzc3NipldFtIdCsxXSs0Mjk0OTY3Mjk2KmV0W0h0KzJdKzE2Nzc3MjE2KmV0W0h0KzNdKyhldFtIdCs0XTw8MTYpKyhldFtIdCs1XTw8OCkrZXRbSHQrNl0pP2NyeXB0by5yYW5kb21CeXRlcyg3KS5jb3B5KGV0LEh0KTooR2UucHVz''@;'; put 'put ''aChmdCUxZTE0KSxIdCs9Nyk7SHQ9Q3QvN31pZighUWUpZm9yKDtIdDxDdDspKGZ0PU8oKSk8OWUxNSYmKEdlW0h0KytdPWZ0JTFlMTQpO2ZvcihDdD1HZVstLUh0XSx0dCU9WSxDdCYmdHQmJihHZVtIdF09UShDdC8oZnQ9TltZLXR0XSkpKmZ0KTswPT09R2VbSHRdO0dlLnBvcCgpLEh0LS0p''@;'; put 'put ''O2lmKEh0PDApR2U9W0x0PTBdO2Vsc2V7Zm9yKEx0PS0xOzA9PT1HZVswXTtHZS5zcGxpY2UoMCwxKSxMdC09WSk7Zm9yKEh0PTEsZnQ9R2VbMF07MTA8PWZ0O2Z0Lz0xMCxIdCsrKTtIdDxZJiYoTHQtPVktSHQpfXJldHVybiBVZS5lPUx0LFVlLmM9R2UsVWV9KSx2dC5zdW09ZnVuY3Rpb24o''@;'; put 'put ''KXtmb3IodmFyIHR0PTEsZXQ9YXJndW1lbnRzLGx0PW5ldyB2dChldFswXSk7dHQ8ZXQubGVuZ3RoOylsdD1sdC5wbHVzKGV0W3R0KytdKTtyZXR1cm4gbHR9LFRlPWZ1bmN0aW9uKCl7dmFyIHR0PSIwMTIzNDU2Nzg5IjtmdW5jdGlvbiBldChsdCxMdCxDdCxmdCl7Zm9yKHZhciBIdCxHZSxV''@;'; put 'put ''ZT1bMF0seXQ9MCxqdD1sdC5sZW5ndGg7eXQ8anQ7KXtmb3IoR2U9VWUubGVuZ3RoO0dlLS07VWVbR2VdKj1MdCk7Zm9yKFVlWzBdKz1mdC5pbmRleE9mKGx0LmNoYXJBdCh5dCsrKSksSHQ9MDtIdDxVZS5sZW5ndGg7SHQrKylVZVtIdF0+Q3QtMSYmKG51bGw9PVVlW0h0KzFdJiYoVWVbSHQr''@;'; put 'put ''MV09MCksVWVbSHQrMV0rPVVlW0h0XS9DdHwwLFVlW0h0XSU9Q3QpfXJldHVybiBVZS5yZXZlcnNlKCl9cmV0dXJuIGZ1bmN0aW9uKGx0LEx0LEN0LGZ0LEh0KXt2YXIgR2UsVWUseXQsanQsSnQsZ24sZG4seW4sbG49bHQuaW5kZXhPZigiLiIpLE5uPVMsYm49Rjtmb3IoMDw9bG4mJihqdD1n''@;'; put 'put ''dCxndD0wLGx0PWx0LnJlcGxhY2UoIi4iLCIiKSxnbj0oeW49bmV3IHZ0KEx0KSkucG93KGx0Lmxlbmd0aC1sbiksZ3Q9anQseW4uYz1ldChBZShzZShnbi5jKSxnbi5lLCIwIiksMTAsQ3QsdHQpLHluLmU9eW4uYy5sZW5ndGgpLHl0PWp0PShkbj1ldChsdCxMdCxDdCxIdD8oR2U9bXQsdHQp''@;'; put 'put ''OihHZT10dCxtdCkpKS5sZW5ndGg7MD09ZG5bLS1qdF07ZG4ucG9wKCkpO2lmKCFkblswXSlyZXR1cm4gR2UuY2hhckF0KDApO2lmKGxuPDA/LS15dDooZ24uYz1kbixnbi5lPXl0LGduLnM9ZnQsZG49KGduPUllKGduLHluLE5uLGJuLEN0KSkuYyxKdD1nbi5yLHl0PWduLmUpLGxuPWRuW1Vl''@;'; put 'put ''PXl0K05uKzFdLGp0PUN0LzIsSnQ9SnR8fFVlPDB8fG51bGwhPWRuW1VlKzFdLEp0PWJuPDQ/KG51bGwhPWxufHxKdCkmJigwPT1ibnx8Ym49PShnbi5zPDA/MzoyKSk6anQ8bG58fGxuPT1qdCYmKDQ9PWJufHxKdHx8Nj09Ym4mJjEmZG5bVWUtMV18fGJuPT0oZ24uczwwPzg6NykpLFVlPDF8''@;'; put 'put ''fCFkblswXSlsdD1KdD9BZShHZS5jaGFyQXQoMSksLU5uLEdlLmNoYXJBdCgwKSk6R2UuY2hhckF0KDApO2Vsc2V7aWYoZG4ubGVuZ3RoPVVlLEp0KWZvcigtLUN0OysrZG5bLS1VZV0+Q3Q7KWRuW1VlXT0wLFVlfHwoKyt5dCxkbj1bMV0uY29uY2F0KGRuKSk7Zm9yKGp0PWRuLmxlbmd0aDsh''@;'; put 'put ''ZG5bLS1qdF07KTtmb3IobG49MCxsdD0iIjtsbjw9anQ7bHQrPUdlLmNoYXJBdChkbltsbisrXSkpO2x0PUFlKGx0LHl0LEdlLmNoYXJBdCgwKSl9cmV0dXJuIGx0fX0oKSxJZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHR0KEx0LEN0LGZ0KXt2YXIgSHQsR2UsVWUseXQsanQ9MCxKdD1MdC5sZW5n''@;'; put 'put ''dGgsZ249Q3QldGUsZG49Q3QvdGV8MDtmb3IoTHQ9THQuc2xpY2UoKTtKdC0tOylqdD0oKEdlPWduKihVZT1MdFtKdF0ldGUpKyhIdD1kbipVZSsoeXQ9THRbSnRdL3RlfDApKmduKSV0ZSp0ZStqdCkvZnR8MCkrKEh0L3RlfDApK2RuKnl0LEx0W0p0XT1HZSVmdDtyZXR1cm4ganQmJihMdD1b''@;'; put 'put ''anRdLmNvbmNhdChMdCkpLEx0fWZ1bmN0aW9uIGV0KEx0LEN0LGZ0LEh0KXt2YXIgR2UsVWU7aWYoZnQhPUh0KVVlPUh0PGZ0PzE6LTE7ZWxzZSBmb3IoR2U9VWU9MDtHZTxmdDtHZSsrKWlmKEx0W0dlXSE9Q3RbR2VdKXtVZT1MdFtHZV0+Q3RbR2VdPzE6LTE7YnJlYWt9cmV0dXJuIFVlfWZ1''@;'; put 'put ''bmN0aW9uIGx0KEx0LEN0LGZ0LEh0KXtmb3IodmFyIEdlPTA7ZnQtLTspTHRbZnRdLT1HZSxMdFtmdF09KEdlPUx0W2Z0XTxDdFtmdF0/MTowKSpIdCtMdFtmdF0tQ3RbZnRdO2Zvcig7IUx0WzBdJiYxPEx0Lmxlbmd0aDtMdC5zcGxpY2UoMCwxKSk7fXJldHVybiBmdW5jdGlvbihMdCxDdCxm''@;'; put 'put ''dCxIdCxHZSl7dmFyIFVlLHl0LGp0LEp0LGduLGRuLHluLGxuLE5uLGJuLGVyLHNyLFhuLEZyLHhyLHF0LHByLG5yPUx0LnM9PUN0LnM/MTotMSxBbj1MdC5jLHFuPUN0LmM7aWYoIShBbiYmQW5bMF0mJnFuJiZxblswXSkpcmV0dXJuIG5ldyB2dChMdC5zJiZDdC5zJiYoQW4/IXFufHxBblsw''@;'; put 'put ''XSE9cW5bMF06cW4pP0FuJiYwPT1BblswXXx8IXFuPzAqbnI6bnIvMDpOYU4pO2ZvcihObj0obG49bmV3IHZ0KG5yKSkuYz1bXSxucj1mdCsoeXQ9THQuZS1DdC5lKSsxLEdlfHwoR2U9YWUseXQ9SihMdC5lL1kpLUooQ3QuZS9ZKSxucj1uci9ZfDApLGp0PTA7cW5banRdPT0oQW5banRdfHww''@;'; put 'put ''KTtqdCsrKTtpZihxbltqdF0+KEFuW2p0XXx8MCkmJnl0LS0sbnI8MClObi5wdXNoKDEpLEp0PSEwO2Vsc2V7Zm9yKEZyPUFuLmxlbmd0aCxxdD1xbi5sZW5ndGgsbnIrPTIsMTwoZ249UShHZS8ocW5banQ9MF0rMSkpKSYmKHFuPXR0KHFuLGduLEdlKSxBbj10dChBbixnbixHZSkscXQ9cW4u''@;'; put 'put ''bGVuZ3RoLEZyPUFuLmxlbmd0aCksWG49cXQsZXI9KGJuPUFuLnNsaWNlKDAscXQpKS5sZW5ndGg7ZXI8cXQ7Ym5bZXIrK109MCk7cHI9cW4uc2xpY2UoKSxwcj1bMF0uY29uY2F0KHByKSx4cj1xblswXSxxblsxXT49R2UvMiYmeHIrKztkb3tpZihnbj0wLChVZT1ldChxbixibixxdCxlcikp''@;'; put 'put ''PDApe2lmKHNyPWJuWzBdLHF0IT1lciYmKHNyPXNyKkdlKyhiblsxXXx8MCkpLDE8KGduPVEoc3IveHIpKSlmb3IoR2U8PWduJiYoZ249R2UtMSkseW49KGRuPXR0KHFuLGduLEdlKSkubGVuZ3RoLGVyPWJuLmxlbmd0aDsxPT1ldChkbixibix5bixlcik7KWduLS0sbHQoZG4scXQ8eW4/cHI6''@;'; put 'put ''cW4seW4sR2UpLHluPWRuLmxlbmd0aCxVZT0xO2Vsc2UgMD09Z24mJihVZT1nbj0xKSx5bj0oZG49cW4uc2xpY2UoKSkubGVuZ3RoO2lmKHluPGVyJiYoZG49WzBdLmNvbmNhdChkbikpLGx0KGJuLGRuLGVyLEdlKSxlcj1ibi5sZW5ndGgsLTE9PVVlKWZvcig7ZXQocW4sYm4scXQsZXIpPDE7''@;'; put 'put ''KWduKyssbHQoYm4scXQ8ZXI/cHI6cW4sZXIsR2UpLGVyPWJuLmxlbmd0aH1lbHNlIDA9PT1VZSYmKGduKyssYm49WzBdKTtObltqdCsrXT1nbixiblswXT9ibltlcisrXT1BbltYbl18fDA6KGJuPVtBbltYbl1dLGVyPTEpfXdoaWxlKChYbisrPEZyfHxudWxsIT1iblswXSkmJm5yLS0pO0p0''@;'; put 'put ''PW51bGwhPWJuWzBdLE5uWzBdfHxObi5zcGxpY2UoMCwxKX1pZihHZT09YWUpe2ZvcihqdD0xLG5yPU5uWzBdOzEwPD1ucjtuci89MTAsanQrKyk7b24obG4sZnQrKGxuLmU9anQreXQqWS0xKSsxLEh0LEp0KX1lbHNlIGxuLmU9eXQsbG4ucj0rSnQ7cmV0dXJuIGxufX0oKSx6PS9eKC0/KTAo''@;'; put 'put ''W3hib10pKD89XHdbXHcuXSokKS9pLGVlPS9eKFteLl0rKVwuJC8sbmU9L15cLihbXi5dKykkLyx4PS9eLT8oSW5maW5pdHl8TmFOKSQvLFA9L15ccypcKyg/PVtcdy5dKXxeXHMrfFxzKyQvZyxNZT1mdW5jdGlvbih0dCxldCxsdCxMdCl7dmFyIEN0LGZ0PWx0P2V0OmV0LnJlcGxhY2UoUCwi''@;'; put 'put ''Iik7aWYoeC50ZXN0KGZ0KSl0dC5zPWlzTmFOKGZ0KT9udWxsOmZ0PDA/LTE6MSx0dC5jPXR0LmU9bnVsbDtlbHNle2lmKCFsdCYmKGZ0PWZ0LnJlcGxhY2UoeixmdW5jdGlvbihIdCxHZSxVZSl7cmV0dXJuIEN0PSJ4Ij09KFVlPVVlLnRvTG93ZXJDYXNlKCkpPzE2OiJiIj09VWU/Mjo4LEx0''@;'; put 'put ''JiZMdCE9Q3Q/SHQ6R2V9KSxMdCYmKEN0PUx0LGZ0PWZ0LnJlcGxhY2UoZWUsIiQxIikucmVwbGFjZShuZSwiMC4kMSIpKSxldCE9ZnQpKXJldHVybiBuZXcgdnQoZnQsQ3QpO2lmKHZ0LkRFQlVHKXRocm93IEVycm9yKGorIk5vdCBhIisoTHQ/IiBiYXNlICIrTHQ6IiIpKyIgbnVtYmVyOiAi''@;'; put 'put ''K2V0KTt0dC5jPXR0LmU9dHQucz1udWxsfX0sVi5hYnNvbHV0ZVZhbHVlPVYuYWJzPWZ1bmN0aW9uKCl7dmFyIHR0PW5ldyB2dCh0aGlzKTtyZXR1cm4gdHQuczwwJiYodHQucz0xKSx0dH0sVi5jb21wYXJlZFRvPWZ1bmN0aW9uKHR0LGV0KXtyZXR1cm4gb2UodGhpcyxuZXcgdnQodHQsZXQp''@;'; put 'put ''KX0sVi5kZWNpbWFsUGxhY2VzPVYuZHA9ZnVuY3Rpb24odHQsZXQpe3ZhciBsdCxMdCxDdDtpZihudWxsIT10dClyZXR1cm4gY2UodHQsMCxLKSxudWxsPT1ldD9ldD1GOmNlKGV0LDAsOCksb24obmV3IHZ0KHRoaXMpLHR0K3RoaXMuZSsxLGV0KTtpZighKGx0PXRoaXMuYykpcmV0dXJuIG51''@;'; put 'put ''bGw7aWYoTHQ9KChDdD1sdC5sZW5ndGgtMSktSih0aGlzLmUvWSkpKlksQ3Q9bHRbQ3RdKWZvcig7Q3QlMTA9PTA7Q3QvPTEwLEx0LS0pO3JldHVybiBMdDwwJiYoTHQ9MCksTHR9LFYuZGl2aWRlZEJ5PVYuZGl2PWZ1bmN0aW9uKHR0LGV0KXtyZXR1cm4gSWUodGhpcyxuZXcgdnQodHQsZXQp''@;'; put 'put ''LFMsRil9LFYuZGl2aWRlZFRvSW50ZWdlckJ5PVYuaWRpdj1mdW5jdGlvbih0dCxldCl7cmV0dXJuIEllKHRoaXMsbmV3IHZ0KHR0LGV0KSwwLDEpfSxWLmV4cG9uZW50aWF0ZWRCeT1WLnBvdz1mdW5jdGlvbih0dCxldCl7dmFyIGx0LEx0LEN0LGZ0LEh0LEdlLFVlLHl0LGp0PXRoaXM7aWYo''@;'; put 'put ''KHR0PW5ldyB2dCh0dCkpLmMmJiF0dC5pc0ludGVnZXIoKSl0aHJvdyBFcnJvcihqKyJFeHBvbmVudCBub3QgYW4gaW50ZWdlcjogIitfdCh0dCkpO2lmKG51bGwhPWV0JiYoZXQ9bmV3IHZ0KGV0KSksSHQ9MTQ8dHQuZSwhanQuY3x8IWp0LmNbMF18fDE9PWp0LmNbMF0mJiFqdC5lJiYxPT1q''@;'; put 'put ''dC5jLmxlbmd0aHx8IXR0LmN8fCF0dC5jWzBdKXJldHVybiB5dD1uZXcgdnQoTWF0aC5wb3coK190KGp0KSxIdD8yLWRlKHR0KTorX3QodHQpKSksZXQ/eXQubW9kKGV0KTp5dDtpZihHZT10dC5zPDAsZXQpe2lmKGV0LmM/IWV0LmNbMF06IWV0LnMpcmV0dXJuIG5ldyB2dChOYU4pOyhMdD0h''@;'; put 'put ''R2UmJmp0LmlzSW50ZWdlcigpJiZldC5pc0ludGVnZXIoKSkmJihqdD1qdC5tb2QoZXQpKX1lbHNle2lmKDk8dHQuZSYmKDA8anQuZXx8anQuZTwtMXx8KDA9PWp0LmU/MTxqdC5jWzBdfHxIdCYmMjRlNzw9anQuY1sxXTpqdC5jWzBdPDhlMTN8fEh0JiZqdC5jWzBdPD05OTk5OTc1ZTcpKSly''@;'; put 'put ''ZXR1cm4gZnQ9anQuczwwJiZkZSh0dCk/LTA6MCwtMTxqdC5lJiYoZnQ9MS9mdCksbmV3IHZ0KEdlPzEvZnQ6ZnQpO2d0JiYoZnQ9VShndC9ZKzIpKX1mb3IoVWU9SHQ/KGx0PW5ldyB2dCguNSksR2UmJih0dC5zPTEpLGRlKHR0KSk6KEN0PU1hdGguYWJzKCtfdCh0dCkpKSUyLHl0PW5ldyB2''@;'; put 'put ''dChUKTs7KXtpZihVZSl7aWYoISh5dD15dC50aW1lcyhqdCkpLmMpYnJlYWs7ZnQ/eXQuYy5sZW5ndGg+ZnQmJih5dC5jLmxlbmd0aD1mdCk6THQmJih5dD15dC5tb2QoZXQpKX1pZihDdCl7aWYoMD09PShDdD1RKEN0LzIpKSlicmVhaztVZT1DdCUyfWVsc2UgaWYob24odHQ9dHQudGltZXMo''@;'; put 'put ''bHQpLHR0LmUrMSwxKSwxNDx0dC5lKVVlPWRlKHR0KTtlbHNle2lmKDA9PShDdD0rX3QodHQpKSlicmVhaztVZT1DdCUyfWp0PWp0LnRpbWVzKGp0KSxmdD9qdC5jJiZqdC5jLmxlbmd0aD5mdCYmKGp0LmMubGVuZ3RoPWZ0KTpMdCYmKGp0PWp0Lm1vZChldCkpfXJldHVybiBMdD95dDooR2Um''@;'; put 'put ''Jih5dD1ULmRpdih5dCkpLGV0P3l0Lm1vZChldCk6ZnQ/b24oeXQsZ3QsRix2b2lkIDApOnl0KX0sVi5pbnRlZ2VyVmFsdWU9ZnVuY3Rpb24odHQpe3ZhciBldD1uZXcgdnQodGhpcyk7cmV0dXJuIG51bGw9PXR0P3R0PUY6Y2UodHQsMCw4KSxvbihldCxldC5lKzEsdHQpfSxWLmlzRXF1YWxU''@;'; put 'put ''bz1WLmVxPWZ1bmN0aW9uKHR0LGV0KXtyZXR1cm4gMD09PW9lKHRoaXMsbmV3IHZ0KHR0LGV0KSl9LFYuaXNGaW5pdGU9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuY30sVi5pc0dyZWF0ZXJUaGFuPVYuZ3Q9ZnVuY3Rpb24odHQsZXQpe3JldHVybiAwPG9lKHRoaXMsbmV3IHZ0KHR0LGV0KSl9''@;'; put 'put ''LFYuaXNHcmVhdGVyVGhhbk9yRXF1YWxUbz1WLmd0ZT1mdW5jdGlvbih0dCxldCl7cmV0dXJuIDE9PT0oZXQ9b2UodGhpcyxuZXcgdnQodHQsZXQpKSl8fDA9PT1ldH0sVi5pc0ludGVnZXI9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuYyYmSih0aGlzLmUvWSk+dGhpcy5jLmxlbmd0aC0yfSxW''@;'; put 'put ''LmlzTGVzc1RoYW49Vi5sdD1mdW5jdGlvbih0dCxldCl7cmV0dXJuIG9lKHRoaXMsbmV3IHZ0KHR0LGV0KSk8MH0sVi5pc0xlc3NUaGFuT3JFcXVhbFRvPVYubHRlPWZ1bmN0aW9uKHR0LGV0KXtyZXR1cm4tMT09PShldD1vZSh0aGlzLG5ldyB2dCh0dCxldCkpKXx8MD09PWV0fSxWLmlzTmFO''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuc30sVi5pc05lZ2F0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuczwwfSxWLmlzUG9zaXRpdmU9ZnVuY3Rpb24oKXtyZXR1cm4gMDx0aGlzLnN9LFYuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmMmJjA9PXRoaXMuY1swXX0sVi5taW51''@;'; put 'put ''cz1mdW5jdGlvbih0dCxldCl7dmFyIGx0LEx0LEN0LGZ0LEh0PXRoaXMsR2U9SHQucztpZihldD0odHQ9bmV3IHZ0KHR0LGV0KSkucywhR2V8fCFldClyZXR1cm4gbmV3IHZ0KE5hTik7aWYoR2UhPWV0KXJldHVybiB0dC5zPS1ldCxIdC5wbHVzKHR0KTt2YXIgVWU9SHQuZS9ZLHl0PXR0LmUv''@;'; put 'put ''WSxqdD1IdC5jLEp0PXR0LmM7aWYoIVVlfHwheXQpe2lmKCFqdHx8IUp0KXJldHVybiBqdD8odHQucz0tZXQsdHQpOm5ldyB2dChKdD9IdDpOYU4pO2lmKCFqdFswXXx8IUp0WzBdKXJldHVybiBKdFswXT8odHQucz0tZXQsdHQpOm5ldyB2dChqdFswXT9IdDozPT1GPy0wOjApfWlmKFVlPUoo''@;'; put 'put ''VWUpLHl0PUooeXQpLGp0PWp0LnNsaWNlKCksR2U9VWUteXQpe2ZvcigoQ3Q9KGZ0PUdlPDApPyhHZT0tR2UsanQpOih5dD1VZSxKdCkpLnJldmVyc2UoKSxldD1HZTtldC0tO0N0LnB1c2goMCkpO0N0LnJldmVyc2UoKX1lbHNlIGZvcihMdD0oZnQ9KEdlPWp0Lmxlbmd0aCk8KGV0PUp0Lmxl''@;'; put 'put ''bmd0aCkpP0dlOmV0LEdlPWV0PTA7ZXQ8THQ7ZXQrKylpZihqdFtldF0hPUp0W2V0XSl7ZnQ9anRbZXRdPEp0W2V0XTticmVha31pZihmdCYmKEN0PWp0LGp0PUp0LEp0PUN0LHR0LnM9LXR0LnMpLDA8KGV0PShMdD1KdC5sZW5ndGgpLShsdD1qdC5sZW5ndGgpKSlmb3IoO2V0LS07anRbbHQr''@;'; put 'put ''K109MCk7Zm9yKGV0PWFlLTE7R2U8THQ7KXtpZihqdFstLUx0XTxKdFtMdF0pe2ZvcihsdD1MdDtsdCYmIWp0Wy0tbHRdO2p0W2x0XT1ldCk7LS1qdFtsdF0sanRbTHRdKz1hZX1qdFtMdF0tPUp0W0x0XX1mb3IoOzA9PWp0WzBdO2p0LnNwbGljZSgwLDEpLC0teXQpO3JldHVybiBqdFswXT9C''@;'; put 'put ''dCh0dCxqdCx5dCk6KHR0LnM9Mz09Rj8tMToxLHR0LmM9W3R0LmU9MF0sdHQpfSxWLm1vZHVsbz1WLm1vZD1mdW5jdGlvbih0dCxldCl7dmFyIGx0LEx0LEN0PXRoaXM7cmV0dXJuIHR0PW5ldyB2dCh0dCxldCksIUN0LmN8fCF0dC5zfHx0dC5jJiYhdHQuY1swXT9uZXcgdnQoTmFOKTohdHQu''@;'; put 'put ''Y3x8Q3QuYyYmIUN0LmNbMF0/bmV3IHZ0KEN0KTooOT09JGU/KEx0PXR0LnMsdHQucz0xLGx0PUllKEN0LHR0LDAsMyksdHQucz1MdCxsdC5zKj1MdCk6bHQ9SWUoQ3QsdHQsMCwkZSksKHR0PUN0Lm1pbnVzKGx0LnRpbWVzKHR0KSkpLmNbMF18fDEhPSRlfHwodHQucz1DdC5zKSx0dCl9LFYu''@;'; put 'put ''bXVsdGlwbGllZEJ5PVYudGltZXM9ZnVuY3Rpb24odHQsZXQpe3ZhciBsdCxMdCxDdCxmdCxIdCxHZSxVZSx5dCxqdCxKdCxnbixkbix5bixsbixObixibj10aGlzLGVyPWJuLmMsc3I9KHR0PW5ldyB2dCh0dCxldCkpLmM7aWYoIShlciYmc3ImJmVyWzBdJiZzclswXSkpcmV0dXJuIWJuLnN8''@;'; put 'put ''fCF0dC5zfHxlciYmIWVyWzBdJiYhc3J8fHNyJiYhc3JbMF0mJiFlcj90dC5jPXR0LmU9dHQucz1udWxsOih0dC5zKj1ibi5zLGVyJiZzcj8odHQuYz1bMF0sdHQuZT0wKTp0dC5jPXR0LmU9bnVsbCksdHQ7Zm9yKEx0PUooYm4uZS9ZKStKKHR0LmUvWSksdHQucyo9Ym4ucywoVWU9ZXIubGVu''@;'; put 'put ''Z3RoKTwoSnQ9c3IubGVuZ3RoKSYmKHluPWVyLGVyPXNyLHNyPXluLEN0PVVlLFVlPUp0LEp0PUN0KSxDdD1VZStKdCx5bj1bXTtDdC0tO3luLnB1c2goMCkpO2Zvcihsbj1hZSxObj10ZSxDdD1KdDswPD0tLUN0Oyl7Zm9yKGx0PTAsZ249c3JbQ3RdJU5uLGRuPXNyW0N0XS9ObnwwLGZ0PUN0''@;'; put 'put ''KyhIdD1VZSk7Q3Q8ZnQ7KWx0PSgoeXQ9Z24qKHl0PWVyWy0tSHRdJU5uKSsoR2U9ZG4qeXQrKGp0PWVyW0h0XS9ObnwwKSpnbiklTm4qTm4reW5bZnRdK2x0KS9sbnwwKSsoR2UvTm58MCkrZG4qanQseW5bZnQtLV09eXQlbG47eW5bZnRdPWx0fXJldHVybiBsdD8rK0x0OnluLnNwbGljZSgw''@;'; put 'put ''LDEpLEJ0KHR0LHluLEx0KX0sVi5uZWdhdGVkPWZ1bmN0aW9uKCl7dmFyIHR0PW5ldyB2dCh0aGlzKTtyZXR1cm4gdHQucz0tdHQuc3x8bnVsbCx0dH0sVi5wbHVzPWZ1bmN0aW9uKHR0LGV0KXt2YXIgbHQsTHQ9dGhpcyxDdD1MdC5zO2lmKGV0PSh0dD1uZXcgdnQodHQsZXQpKS5zLCFDdHx8''@;'; put 'put ''IWV0KXJldHVybiBuZXcgdnQoTmFOKTtpZihDdCE9ZXQpcmV0dXJuIHR0LnM9LWV0LEx0Lm1pbnVzKHR0KTt2YXIgZnQ9THQuZS9ZLEh0PXR0LmUvWSxHZT1MdC5jLFVlPXR0LmM7aWYoIWZ0fHwhSHQpe2lmKCFHZXx8IVVlKXJldHVybiBuZXcgdnQoQ3QvMCk7aWYoIUdlWzBdfHwhVWVbMF0p''@;'; put 'put ''cmV0dXJuIFVlWzBdP3R0Om5ldyB2dChHZVswXT9MdDowKkN0KX1pZihmdD1KKGZ0KSxIdD1KKEh0KSxHZT1HZS5zbGljZSgpLEN0PWZ0LUh0KXtmb3IoKGx0PTA8Q3Q/KEh0PWZ0LFVlKTooQ3Q9LUN0LEdlKSkucmV2ZXJzZSgpO0N0LS07bHQucHVzaCgwKSk7bHQucmV2ZXJzZSgpfWZvcigo''@;'; put 'put ''Q3Q9R2UubGVuZ3RoKS0oZXQ9VWUubGVuZ3RoKTwwJiYobHQ9VWUsVWU9R2UsR2U9bHQsZXQ9Q3QpLEN0PTA7ZXQ7KUN0PShHZVstLWV0XT1HZVtldF0rVWVbZXRdK0N0KS9hZXwwLEdlW2V0XT1hZT09PUdlW2V0XT8wOkdlW2V0XSVhZTtyZXR1cm4gQ3QmJihHZT1bQ3RdLmNvbmNhdChHZSks''@;'; put 'put ''KytIdCksQnQodHQsR2UsSHQpfSxWLnByZWNpc2lvbj1WLnNkPWZ1bmN0aW9uKHR0LGV0KXt2YXIgbHQsTHQsQ3Q7aWYobnVsbCE9dHQmJnR0IT09ISF0dClyZXR1cm4gY2UodHQsMSxLKSxudWxsPT1ldD9ldD1GOmNlKGV0LDAsOCksb24obmV3IHZ0KHRoaXMpLHR0LGV0KTtpZighKGx0PXRo''@;'; put 'put ''aXMuYykpcmV0dXJuIG51bGw7aWYoTHQ9KEN0PWx0Lmxlbmd0aC0xKSpZKzEsQ3Q9bHRbQ3RdKXtmb3IoO0N0JTEwPT0wO0N0Lz0xMCxMdC0tKTtmb3IoQ3Q9bHRbMF07MTA8PUN0O0N0Lz0xMCxMdCsrKTt9cmV0dXJuIHR0JiZ0aGlzLmUrMT5MdCYmKEx0PXRoaXMuZSsxKSxMdH0sVi5zaGlm''@;'; put 'put ''dGVkQnk9ZnVuY3Rpb24odHQpe3JldHVybiBjZSh0dCwtVyxXKSx0aGlzLnRpbWVzKCIxZSIrdHQpfSxWLnNxdWFyZVJvb3Q9Vi5zcXJ0PWZ1bmN0aW9uKCl7dmFyIHR0LGV0LGx0LEx0LEN0LGZ0PXRoaXMsSHQ9ZnQuYyxHZT1mdC5zLFVlPWZ0LmUseXQ9Uys0LGp0PW5ldyB2dCgiMC41Iik7''@;'; put 'put ''aWYoMSE9PUdlfHwhSHR8fCFIdFswXSlyZXR1cm4gbmV3IHZ0KCFHZXx8R2U8MCYmKCFIdHx8SHRbMF0pP05hTjpIdD9mdDoxLzApO2lmKChsdD0wPT0oR2U9TWF0aC5zcXJ0KCtfdChmdCkpKXx8R2U9PTEvMD8oKChldD1zZShIdCkpLmxlbmd0aCtVZSklMj09MCYmKGV0Kz0iMCIpLEdlPU1h''@;'; put 'put ''dGguc3FydCgrZXQpLFVlPUooKFVlKzEpLzIpLShVZTwwfHxVZSUyKSxuZXcgdnQoZXQ9R2U9PTEvMD8iMWUiK1VlOihldD1HZS50b0V4cG9uZW50aWFsKCkpLnNsaWNlKDAsZXQuaW5kZXhPZigiZSIpKzEpK1VlKSk6bmV3IHZ0KEdlKyIiKSkuY1swXSlmb3IoKEdlPShVZT1sdC5lKSt5dCk8''@;'; put 'put ''MyYmKEdlPTApOzspaWYobHQ9anQudGltZXMoKEN0PWx0KS5wbHVzKEllKGZ0LEN0LHl0LDEpKSksc2UoQ3QuYykuc2xpY2UoMCxHZSk9PT0oZXQ9c2UobHQuYykpLnNsaWNlKDAsR2UpKXtpZihsdC5lPFVlJiYtLUdlLCI5OTk5IiE9KGV0PWV0LnNsaWNlKEdlLTMsR2UrMSkpJiYoTHR8fCI0''@;'; put 'put ''OTk5IiE9ZXQpKXsrZXQmJigrZXQuc2xpY2UoMSl8fCI1IiE9ZXQuY2hhckF0KDApKXx8KG9uKGx0LGx0LmUrUysyLDEpLHR0PSFsdC50aW1lcyhsdCkuZXEoZnQpKTticmVha31pZighTHQmJihvbihDdCxDdC5lK1MrMiwwKSxDdC50aW1lcyhDdCkuZXEoZnQpKSl7bHQ9Q3Q7YnJlYWt9eXQr''@;'; put 'put ''PTQsR2UrPTQsTHQ9MX1yZXR1cm4gb24obHQsbHQuZStTKzEsRix0dCl9LFYudG9FeHBvbmVudGlhbD1mdW5jdGlvbih0dCxldCl7cmV0dXJuIG51bGwhPXR0JiYoY2UodHQsMCxLKSx0dCsrKSxBdCh0aGlzLHR0LGV0LDEpfSxWLnRvRml4ZWQ9ZnVuY3Rpb24odHQsZXQpe3JldHVybiBudWxs''@;'; put 'put ''IT10dCYmKGNlKHR0LDAsSyksdHQ9dHQrdGhpcy5lKzEpLEF0KHRoaXMsdHQsZXQpfSxWLnRvRm9ybWF0PWZ1bmN0aW9uKHR0LGV0LGx0KXt2YXIgTHQ7aWYobnVsbD09bHQpbnVsbCE9dHQmJmV0JiYib2JqZWN0Ij09dHlwZW9mIGV0PyhsdD1ldCxldD1udWxsKTp0dCYmIm9iamVjdCI9PXR5''@;'; put 'put ''cGVvZiB0dD8obHQ9dHQsdHQ9ZXQ9bnVsbCk6bHQ9d3Q7ZWxzZSBpZigib2JqZWN0IiE9dHlwZW9mIGx0KXRocm93IEVycm9yKGorIkFyZ3VtZW50IG5vdCBhbiBvYmplY3Q6ICIrbHQpO2lmKEx0PXRoaXMudG9GaXhlZCh0dCxldCksdGhpcy5jKXt2YXIgQ3QsZnQ9THQuc3BsaXQoIi4iKSxI''@;'; put 'put ''dD0rbHQuZ3JvdXBTaXplLEdlPStsdC5zZWNvbmRhcnlHcm91cFNpemUsVWU9bHQuZ3JvdXBTZXBhcmF0b3J8fCIiLHl0PWZ0WzBdLGp0PWZ0WzFdLEp0PXRoaXMuczwwLGduPUp0P3l0LnNsaWNlKDEpOnl0LGRuPWduLmxlbmd0aDtpZihHZSYmKEN0PUh0LEh0PUdlLGRuLT1HZT1DdCksMDxI''@;'; put 'put ''dCYmMDxkbil7Zm9yKHl0PWduLnN1YnN0cigwLEN0PWRuJUh0fHxIdCk7Q3Q8ZG47Q3QrPUh0KXl0Kz1VZStnbi5zdWJzdHIoQ3QsSHQpOzA8R2UmJih5dCs9VWUrZ24uc2xpY2UoQ3QpKSxKdCYmKHl0PSItIit5dCl9THQ9anQ/eXQrKGx0LmRlY2ltYWxTZXBhcmF0b3J8fCIiKSsoKEdlPSts''@;'; put 'put ''dC5mcmFjdGlvbkdyb3VwU2l6ZSk/anQucmVwbGFjZShuZXcgUmVnRXhwKCJcXGR7IitHZSsifVxcQiIsImciKSwiJCYiKyhsdC5mcmFjdGlvbkdyb3VwU2VwYXJhdG9yfHwiIikpOmp0KTp5dH1yZXR1cm4obHQucHJlZml4fHwiIikrTHQrKGx0LnN1ZmZpeHx8IiIpfSxWLnRvRnJhY3Rpb249''@;'; put 'put ''ZnVuY3Rpb24odHQpe3ZhciBldCxsdCxMdCxDdCxmdCxIdCxHZSxVZSx5dCxqdCxKdCxnbixkbj10aGlzLHluPWRuLmM7aWYobnVsbCE9dHQmJighKEdlPW5ldyB2dCh0dCkpLmlzSW50ZWdlcigpJiYoR2UuY3x8MSE9PUdlLnMpfHxHZS5sdChUKSkpdGhyb3cgRXJyb3IoaisiQXJndW1lbnQg''@;'; put 'put ''IisoR2UuaXNJbnRlZ2VyKCk/Im91dCBvZiByYW5nZTogIjoibm90IGFuIGludGVnZXI6ICIpK190KEdlKSk7aWYoIXluKXJldHVybiBuZXcgdnQoZG4pO2ZvcihldD1uZXcgdnQoVCkseXQ9bHQ9bmV3IHZ0KFQpLEx0PVVlPW5ldyB2dChUKSxnbj1zZSh5biksZnQ9ZXQuZT1nbi5sZW5ndGgt''@;'; put 'put ''ZG4uZS0xLGV0LmNbMF09TlsoSHQ9ZnQlWSk8MD9ZK0h0Okh0XSx0dD0hdHR8fDA8R2UuY29tcGFyZWRUbyhldCk/MDxmdD9ldDp5dDpHZSxIdD1QZSxQZT0xLzAsR2U9bmV3IHZ0KGduKSxVZS5jWzBdPTA7anQ9SWUoR2UsZXQsMCwxKSwxIT0oQ3Q9bHQucGx1cyhqdC50aW1lcyhMdCkpKS5j''@;'; put 'put ''b21wYXJlZFRvKHR0KTspbHQ9THQsTHQ9Q3QseXQ9VWUucGx1cyhqdC50aW1lcyhDdD15dCkpLFVlPUN0LGV0PUdlLm1pbnVzKGp0LnRpbWVzKEN0PWV0KSksR2U9Q3Q7cmV0dXJuIEN0PUllKHR0Lm1pbnVzKGx0KSxMdCwwLDEpLFVlPVVlLnBsdXMoQ3QudGltZXMoeXQpKSxsdD1sdC5wbHVz''@;'; put 'put ''KEN0LnRpbWVzKEx0KSksVWUucz15dC5zPWRuLnMsSnQ9SWUoeXQsTHQsZnQqPTIsRikubWludXMoZG4pLmFicygpLmNvbXBhcmVkVG8oSWUoVWUsbHQsZnQsRikubWludXMoZG4pLmFicygpKTwxP1t5dCxMdF06W1VlLGx0XSxQZT1IdCxKdH0sVi50b051bWJlcj1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''bitfdCh0aGlzKX0sVi50b1ByZWNpc2lvbj1mdW5jdGlvbih0dCxldCl7cmV0dXJuIG51bGwhPXR0JiZjZSh0dCwxLEspLEF0KHRoaXMsdHQsZXQsMil9LFYudG9TdHJpbmc9ZnVuY3Rpb24odHQpe3ZhciBldCxsdD10aGlzLEx0PWx0LnMsQ3Q9bHQuZTtyZXR1cm4gbnVsbD09PUN0P0x0Pyhl''@;'; put 'put ''dD0iSW5maW5pdHkiLEx0PDAmJihldD0iLSIrZXQpKTpldD0iTmFOIjooZXQ9bnVsbD09dHQ/Q3Q8PXllfHxDZTw9Q3Q/dmUoc2UobHQuYyksQ3QpOkFlKHNlKGx0LmMpLEN0LCIwIik6MTA9PT10dD9BZShzZSgobHQ9b24obmV3IHZ0KGx0KSxTK0N0KzEsRikpLmMpLGx0LmUsIjAiKTooY2Uo''@;'; put 'put ''dHQsMixtdC5sZW5ndGgsIkJhc2UiKSxUZShBZShzZShsdC5jKSxDdCwiMCIpLDEwLHR0LEx0LCEwKSksTHQ8MCYmbHQuY1swXSYmKGV0PSItIitldCkpLGV0fSxWLnZhbHVlT2Y9Vi50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gX3QodGhpcyl9LFYuX2lzQmlnTnVtYmVyPSEwLCJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yJiYoVltTeW1ib2wudG9TdHJpbmdUYWddPSJCaWdOdW1iZXIiLFZbU3ltYm9sLmZvcigibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20iKV09Vi52YWx1ZU9mKSxudWxsIT1TZSYmdnQuc2V0KFNlKSx2''@;'; put 'put ''dH0oKSkuZGVmYXVsdD1FLkJpZ051bWJlcj1FLHZvaWQgMCE9PUwmJkwuZXhwb3J0cz9MLmV4cG9ydHM9RTooQnx8KEI9InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiZzZWxmP3NlbGY6d2luZG93KSxCLkJpZ051bWJlcj1FKX0odGhpcyl9LHt9XSwyOltmdW5jdGlvbihKZSxMLG1lKXsidXNl''@;'; put 'put ''IHN0cmljdCI7TC5leHBvcnRzPXtsYW5ndWFnZVRhZzoiZW4tVVMiLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiLCIsZGVjaW1hbDoiLiJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJrIixtaWxsaW9uOiJtIixiaWxsaW9uOiJiIix0cmlsbGlvbjoidCJ9LHNwYWNlU2VwYXJhdGVkOiExLG9y''@;'; put 'put ''ZGluYWw6ZnVuY3Rpb24oQil7dmFyIEU9QiUxMDtyZXR1cm4gMT09fn4oQiUxMDAvMTApPyJ0aCI6MT09PUU/InN0IjoyPT09RT8ibmQiOjM9PT1FPyJyZCI6InRoIn0sY3VycmVuY3k6e3N5bWJvbDoiJCIscG9zaXRpb246InByZWZpeCIsY29kZToiVVNEIn0sY3VycmVuY3lGb3JtYXQ6e3Ro''@;'; put 'put ''b3VzYW5kU2VwYXJhdGVkOiEwLHRvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITB9LGZvcm1hdHM6e2ZvdXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLHRob3VzYW5kU2VwYXJhdGVkOiEw''@;'; put 'put ''LG1hbnRpc3NhOjJ9LGZ1bGxXaXRoVHdvRGVjaW1hbHNOb0N1cnJlbmN5Ont0aG91c2FuZFNlcGFyYXRlZDohMCxtYW50aXNzYToyfSxmdWxsV2l0aE5vRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLHRob3VzYW5kU2VwYXJhdGVkOiEwLG1hbnRpc3NhOjB9fX19LHt9XSwzOltmdW5jdGlv''@;'; put 'put ''bihKZSxMLG1lKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gQihKLHNlKXtyZXR1cm4gZnVuY3Rpb24ob2Upe2lmKEFycmF5LmlzQXJyYXkob2UpKXJldHVybiBvZX0oSil8fGZ1bmN0aW9uKG9lLGNlKXt2YXIgZGU9W10sdmU9ITAsQWU9ITEsa2U9dm9pZCAwO3RyeXtmb3IodmFyIFNlLEllPW9l''@;'; put 'put ''W1N5bWJvbC5pdGVyYXRvcl0oKTshKHZlPShTZT1JZS5uZXh0KCkpLmRvbmUpJiYoZGUucHVzaChTZS52YWx1ZSksIWNlfHxkZS5sZW5ndGghPT1jZSk7dmU9ITApO31jYXRjaChUZSl7QWU9ITAsa2U9VGV9ZmluYWxseXt0cnl7dmV8fG51bGw9PUllLnJldHVybnx8SWUucmV0dXJuKCl9Zmlu''@;'; put 'put ''YWxseXtpZihBZSl0aHJvdyBrZX19cmV0dXJuIGRlfShKLHNlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9dmFyIEU9SmUoIi4vZ2xvYmFsU3RhdGUiKSxFZT1KZSgiLi92''@;'; put 'put ''YWxpZGF0aW5nIiksVT1KZSgiLi9wYXJzaW5nIiksUT1bIkIiLCJLQiIsIk1CIiwiR0IiLCJUQiIsIlBCIiwiRUIiLCJaQiIsIllCIl0saj17Z2VuZXJhbDp7c2NhbGU6MTAyNCxzdWZmaXhlczpRLG1hcmtlcjoiYmQifSxiaW5hcnk6e3NjYWxlOjEwMjQsc3VmZml4ZXM6WyJCIiwiS2lCIiwi''@;'; put 'put ''TWlCIiwiR2lCIiwiVGlCIiwiUGlCIiwiRWlCIiwiWmlCIiwiWWlCIl0sbWFya2VyOiJiIn0sZGVjaW1hbDp7c2NhbGU6MWUzLHN1ZmZpeGVzOlEsbWFya2VyOiJkIn19LHJlPXt0b3RhbExlbmd0aDowLGNoYXJhY3RlcmlzdGljOjAsZm9yY2VBdmVyYWdlOiExLGF2ZXJhZ2U6ITEsbWFudGlz''@;'; put 'put ''c2E6LTEsb3B0aW9uYWxNYW50aXNzYTohMCx0aG91c2FuZFNlcGFyYXRlZDohMSxzcGFjZVNlcGFyYXRlZDohMSxuZWdhdGl2ZToic2lnbiIsZm9yY2VTaWduOiExfTtmdW5jdGlvbiBhZShKKXt2YXIgc2U9MTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1l''@;'; put 'put ''bnRzWzFdOnt9LG9lPTI8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMl06dm9pZCAwO2lmKCJzdHJpbmciPT10eXBlb2Ygc2UmJihzZT1VLnBhcnNlRm9ybWF0KHNlKSksIUVlLnZhbGlkYXRlRm9ybWF0KHNlKSlyZXR1cm4iRVJST1I6IGludmFsaWQgZm9ybWF0Ijt2YXIgY2U9c2UucHJl''@;'; put 'put ''Zml4fHwiIixkZT1zZS5wb3N0Zml4fHwiIix2ZT1mdW5jdGlvbihBZSxrZSxTZSl7c3dpdGNoKGtlLm91dHB1dCl7Y2FzZSJjdXJyZW5jeSI6cmV0dXJuIGZ1bmN0aW9uKG10LHZ0LEF0KXt2YXIgaHQ9QXQuY3VycmVudEN1cnJlbmN5KCksQnQ9T2JqZWN0LmFzc2lnbih7fSxyZSx2dCksb249''@;'; put 'put ''dm9pZCAwLF90PSIiLHR0PSEhQnQudG90YWxMZW5ndGh8fCEhQnQuZm9yY2VBdmVyYWdlfHxCdC5hdmVyYWdlLGV0PXZ0LmN1cnJlbmN5UG9zaXRpb258fGh0LnBvc2l0aW9uLGx0PXZ0LmN1cnJlbmN5U3ltYm9sfHxodC5zeW1ib2w7QnQuc3BhY2VTZXBhcmF0ZWQmJihfdD0iICIpLCJpbmZp''@;'; put 'put ''eCI9PT1ldCYmKG9uPV90K2x0K190KTt2YXIgTHQ9dGUoe2luc3RhbmNlOm10LHByb3ZpZGVkRm9ybWF0OnZ0LHN0YXRlOkF0LGRlY2ltYWxTZXBhcmF0b3I6b259KTtyZXR1cm4icHJlZml4Ij09PWV0JiYoTHQ9bXQuX3ZhbHVlPDAmJiJzaWduIj09PUJ0Lm5lZ2F0aXZlPyItIi5jb25jYXQo''@;'; put 'put ''X3QpLmNvbmNhdChsdCkuY29uY2F0KEx0LnNsaWNlKDEpKTpsdCtfdCtMdCksZXQmJiJwb3N0Zml4IiE9PWV0fHwoTHQ9THQrKF90PXR0PyIiOl90KStsdCksTHR9KEFlLGtlPUsoa2UsRS5jdXJyZW50Q3VycmVuY3lEZWZhdWx0Rm9ybWF0KCkpLEUpO2Nhc2UicGVyY2VudCI6cmV0dXJuIGtl''@;'; put 'put ''PUsoa2UsRS5jdXJyZW50UGVyY2VudGFnZURlZmF1bHRGb3JtYXQoKSksQXQ9RSxCdD0odnQ9a2UpLnByZWZpeFN5bWJvbCxvbj10ZSh7aW5zdGFuY2U6U2UoMTAwKkFlLl92YWx1ZSkscHJvdmlkZWRGb3JtYXQ6dnQsc3RhdGU6QXR9KSxfdD1PYmplY3QuYXNzaWduKHt9LHJlLHZ0KSxCdD8i''@;'; put 'put ''JSIuY29uY2F0KF90LnNwYWNlU2VwYXJhdGVkPyIgIjoiIikuY29uY2F0KG9uKToiIi5jb25jYXQob24pLmNvbmNhdChfdC5zcGFjZVNlcGFyYXRlZD8iICI6IiIsIiUiKTtjYXNlImJ5dGUiOnJldHVybiBrZT1LKGtlLEUuY3VycmVudEJ5dGVEZWZhdWx0Rm9ybWF0KCkpLEY9RSx5ZT1TZSxD''@;'; put 'put ''ZT0oUz1rZSkuYmFzZXx8ImJpbmFyeSIsJGU9KFBlPVkoQWUuX3ZhbHVlLChEZT1qW0NlXSkuc3VmZml4ZXMsRGUuc2NhbGUpKS5zdWZmaXgsZ3Q9dGUoe2luc3RhbmNlOnllKFBlLnZhbHVlKSxwcm92aWRlZEZvcm1hdDpTLHN0YXRlOkYsZGVmYXVsdHM6Ri5jdXJyZW50Qnl0ZURlZmF1bHRG''@;'; put 'put ''b3JtYXQoKX0pLHd0PUYuY3VycmVudEFiYnJldmlhdGlvbnMoKSwiIi5jb25jYXQoZ3QpLmNvbmNhdCh3dC5zcGFjZWQ/IiAiOiIiKS5jb25jYXQoJGUpO2Nhc2UidGltZSI6cmV0dXJuIGtlPUsoa2UsRS5jdXJyZW50VGltZURlZmF1bHRGb3JtYXQoKSksbmU9QWUseD1NYXRoLmZsb29yKG5l''@;'; put 'put ''Ll92YWx1ZS82MC82MCksUD1NYXRoLmZsb29yKChuZS5fdmFsdWUtNjAqeCo2MCkvNjApLFY9TWF0aC5yb3VuZChuZS5fdmFsdWUtNjAqeCo2MC02MCpQKSwiIi5jb25jYXQoeCwiOiIpLmNvbmNhdChQPDEwPyIwIjoiIikuY29uY2F0KFAsIjoiKS5jb25jYXQoVjwxMD8iMCI6IiIpLmNvbmNh''@;'; put 'put ''dChWKTtjYXNlIm9yZGluYWwiOnJldHVybiBJZT1BZSxUZT1rZT1LKGtlLEUuY3VycmVudE9yZGluYWxEZWZhdWx0Rm9ybWF0KCkpLGhlPShNZT1FKS5jdXJyZW50T3JkaW5hbCgpLE89T2JqZWN0LmFzc2lnbih7fSxyZSxUZSksej10ZSh7aW5zdGFuY2U6SWUscHJvdmlkZWRGb3JtYXQ6VGUs''@;'; put 'put ''c3RhdGU6TWV9KSxlZT1oZShJZS5fdmFsdWUpLCIiLmNvbmNhdCh6KS5jb25jYXQoTy5zcGFjZVNlcGFyYXRlZD8iICI6IiIpLmNvbmNhdChlZSk7ZGVmYXVsdDpyZXR1cm4gdGUoe2luc3RhbmNlOkFlLHByb3ZpZGVkRm9ybWF0OmtlLG51bWJybzpTZX0pfXZhciB2dCxBdCxCdCxvbixfdCxJ''@;'; put 'put ''ZSxUZSxNZSxoZSxPLHosZWUsbmUseCxQLFYsUyxGLHllLENlLERlLFBlLCRlLGd0LHd0fShKLHNlLG9lKTtyZXR1cm4odmU9Y2UrdmUpK2RlfWZ1bmN0aW9uIFkoSixzZSxvZSl7dmFyIGNlPXNlWzBdLGRlPU1hdGguYWJzKEopO2lmKG9lPD1kZSl7Zm9yKHZhciB2ZT0xO3ZlPHNlLmxlbmd0''@;'; put 'put ''aDsrK3ZlKXt2YXIgQWU9TWF0aC5wb3cob2UsdmUpLGtlPU1hdGgucG93KG9lLHZlKzEpO2lmKEFlPD1kZSYmZGU8a2Upe2NlPXNlW3ZlXSxKLz1BZTticmVha319Y2U9PT1zZVswXSYmKEovPU1hdGgucG93KG9lLHNlLmxlbmd0aC0xKSxjZT1zZVtzZS5sZW5ndGgtMV0pfXJldHVybnt2YWx1''@;'; put 'put ''ZTpKLHN1ZmZpeDpjZX19ZnVuY3Rpb24gVyhKKXtmb3IodmFyIHNlPSIiLG9lPTA7b2U8SjtvZSsrKXNlKz0iMCI7cmV0dXJuIHNlfWZ1bmN0aW9uIHRlKEope3ZhciBzZT1KLmluc3RhbmNlLG9lPUoucHJvdmlkZWRGb3JtYXQsY2U9Si5zdGF0ZSxkZT12b2lkIDA9PT1jZT9FOmNlLHZlPUou''@;'; put 'put ''ZGVjaW1hbFNlcGFyYXRvcixBZT1KLmRlZmF1bHRzLGtlPXZvaWQgMD09PUFlP2RlLmN1cnJlbnREZWZhdWx0cygpOkFlLFNlPXNlLl92YWx1ZTtpZigwPT09U2UmJmRlLmhhc1plcm9Gb3JtYXQoKSlyZXR1cm4gZGUuZ2V0WmVyb0Zvcm1hdCgpO2lmKCFpc0Zpbml0ZShTZSkpcmV0dXJuIFNl''@;'; put 'put ''LnRvU3RyaW5nKCk7dmFyIEllLFRlLE1lLGhlLE8sZWUsbmUseD1PYmplY3QuYXNzaWduKHt9LHJlLGtlLG9lKSxQPXgudG90YWxMZW5ndGgsVj1QPzA6eC5jaGFyYWN0ZXJpc3RpYyxUPXgub3B0aW9uYWxDaGFyYWN0ZXJpc3RpYyxTPXguZm9yY2VBdmVyYWdlLEY9ISFQfHwhIVN8fHguYXZl''@;'; put 'put ''cmFnZSx5ZT1QPy0xOkYmJnZvaWQgMD09PW9lLm1hbnRpc3NhPzA6eC5tYW50aXNzYSxDZT0hUCYmKHZvaWQgMD09PW9lLm9wdGlvbmFsTWFudGlzc2E/LTE9PT15ZTp4Lm9wdGlvbmFsTWFudGlzc2EpLERlPXgudHJpbU1hbnRpc3NhLFBlPXgudGhvdXNhbmRTZXBhcmF0ZWQsUWU9eC5zcGFj''@;'; put 'put ''ZVNlcGFyYXRlZCwkZT14Lm5lZ2F0aXZlLGd0PXguZm9yY2VTaWduLHd0PXguZXhwb25lbnRpYWwsbXQ9IiI7aWYoRil7dmFyIHZ0PWZ1bmN0aW9uKHR0KXt2YXIgZXQ9dHQudmFsdWUsbHQ9dHQuZm9yY2VBdmVyYWdlLEx0PXR0LmFiYnJldmlhdGlvbnMsQ3Q9dHQuc3BhY2VTZXBhcmF0ZWQs''@;'; put 'put ''ZnQ9dm9pZCAwIT09Q3QmJkN0LEh0PXR0LnRvdGFsTGVuZ3RoLEdlPXZvaWQgMD09PUh0PzA6SHQsVWU9IiIseXQ9TWF0aC5hYnMoZXQpLGp0PS0xO2lmKHl0Pj1NYXRoLnBvdygxMCwxMikmJiFsdHx8InRyaWxsaW9uIj09PWx0PyhVZT1MdC50cmlsbGlvbixldC89TWF0aC5wb3coMTAsMTIp''@;'; put 'put ''KTp5dDxNYXRoLnBvdygxMCwxMikmJnl0Pj1NYXRoLnBvdygxMCw5KSYmIWx0fHwiYmlsbGlvbiI9PT1sdD8oVWU9THQuYmlsbGlvbixldC89TWF0aC5wb3coMTAsOSkpOnl0PE1hdGgucG93KDEwLDkpJiZ5dD49TWF0aC5wb3coMTAsNikmJiFsdHx8Im1pbGxpb24iPT09bHQ/KFVlPUx0Lm1p''@;'; put 'put ''bGxpb24sZXQvPU1hdGgucG93KDEwLDYpKTooeXQ8TWF0aC5wb3coMTAsNikmJnl0Pj1NYXRoLnBvdygxMCwzKSYmIWx0fHwidGhvdXNhbmQiPT09bHQpJiYoVWU9THQudGhvdXNhbmQsZXQvPU1hdGgucG93KDEwLDMpKSxVZSYmKFVlPShmdD8iICI6IiIpK1VlKSxHZSl7dmFyIEp0PWV0LnRv''@;'; put 'put ''U3RyaW5nKCkuc3BsaXQoIi4iKVswXTtqdD1NYXRoLm1heChHZS1KdC5sZW5ndGgsMCl9cmV0dXJue3ZhbHVlOmV0LGFiYnJldmlhdGlvbjpVZSxtYW50aXNzYVByZWNpc2lvbjpqdH19KHt2YWx1ZTpTZSxmb3JjZUF2ZXJhZ2U6UyxhYmJyZXZpYXRpb25zOmRlLmN1cnJlbnRBYmJyZXZpYXRp''@;'; put 'put ''b25zKCksc3BhY2VTZXBhcmF0ZWQ6UWUsdG90YWxMZW5ndGg6UH0pO1NlPXZ0LnZhbHVlLG10Kz12dC5hYmJyZXZpYXRpb24sUCYmKHllPXZ0Lm1hbnRpc3NhUHJlY2lzaW9uKX1pZih3dCl7dmFyIEF0PShUZT0oSWU9e3ZhbHVlOlNlLGNoYXJhY3RlcmlzdGljUHJlY2lzaW9uOlZ9KS52YWx1''@;'; put 'put ''ZSxoZT12b2lkIDA9PT0oTWU9SWUuY2hhcmFjdGVyaXN0aWNQcmVjaXNpb24pPzA6TWUsZWU9KE89QihUZS50b0V4cG9uZW50aWFsKCkuc3BsaXQoImUiKSwyKSlbMV0sbmU9K09bMF0saGUmJjE8aGUmJihuZSo9TWF0aC5wb3coMTAsaGUtMSksZWU9MDw9KGVlPStlZS0oaGUtMSkpPyIrIi5j''@;'; put 'put ''b25jYXQoZWUpOmVlKSx7dmFsdWU6bmUsYWJicmV2aWF0aW9uOiJlIi5jb25jYXQoZWUpfSk7U2U9QXQudmFsdWUsbXQ9QXQuYWJicmV2aWF0aW9uK210fXZhciBodCxCdCxvbixfdD1mdW5jdGlvbih0dCxldCxsdCxMdCxDdCl7aWYoLTE9PT1MdClyZXR1cm4gdHQ7dmFyIGZ0PWZ1bmN0aW9u''@;'; put 'put ''IE4oSixzZSl7cmV0dXJuLTEhPT1KLnRvU3RyaW5nKCkuaW5kZXhPZigiZSIpP2Z1bmN0aW9uKG9lLGNlKXt2YXIgZGU9b2UudG9TdHJpbmcoKSx2ZT1CKGRlLnNwbGl0KCJlIiksMiksa2U9dmVbMV0sU2U9Qih2ZVswXS5zcGxpdCgiLiIpLDIpLEllPVNlWzBdLFRlPVNlWzFdLE1lPXZvaWQg''@;'; put 'put ''MD09PVRlPyIiOlRlO2lmKDA8K2tlKWRlPUllK01lK1coa2UtTWUubGVuZ3RoKTtlbHNle3ZhciBoZT0iLiI7aGU9K0llPDA/Ii0wIi5jb25jYXQoaGUpOiIwIi5jb25jYXQoaGUpO3ZhciBPPShXKC1rZS0xKStNYXRoLmFicyhJZSkrTWUpLnN1YnN0cigwLGNlKTtPLmxlbmd0aDxjZSYmKE8r''@;'; put 'put ''PVcoY2UtTy5sZW5ndGgpKSxkZT1oZStPfXJldHVybiAwPCtrZSYmMDxjZSYmKGRlKz0iLiIuY29uY2F0KFcoY2UpKSksZGV9KEosc2UpOihNYXRoLnJvdW5kKCsiIi5jb25jYXQoSiwiZSsiKS5jb25jYXQoc2UpKS9NYXRoLnBvdygxMCxzZSkpLnRvRml4ZWQoc2UpfShldCxMdCksSHQ9Qihm''@;'; put 'put ''dC50b1N0cmluZygpLnNwbGl0KCIuIiksMiksR2U9SHRbMF0sVWU9SHRbMV0seXQ9dm9pZCAwPT09VWU/IiI6VWU7aWYoeXQubWF0Y2goL14wKyQvKSYmKGx0fHxDdCkpcmV0dXJuIEdlO3ZhciBqdD15dC5tYXRjaCgvMCskLyk7cmV0dXJuIEN0JiZqdD8iIi5jb25jYXQoR2UsIi4iKS5jb25j''@;'; put 'put ''YXQoeXQudG9TdHJpbmcoKS5zbGljZSgwLGp0LmluZGV4KSk6ZnQudG9TdHJpbmcoKX0oU2UudG9TdHJpbmcoKSxTZSxDZSx5ZSxEZSk7cmV0dXJuIF90PWZ1bmN0aW9uKHR0LGV0LGx0LEx0LEN0KXt2YXIgZnQ9THQuY3VycmVudERlbGltaXRlcnMoKSxIdD1mdC50aG91c2FuZHM7Q3Q9Q3R8''@;'; put 'put ''fGZ0LmRlY2ltYWw7dmFyIEdlPWZ0LnRob3VzYW5kc1NpemV8fDMsVWU9dHQudG9TdHJpbmcoKSx5dD1VZS5zcGxpdCgiLiIpWzBdLGp0PVVlLnNwbGl0KCIuIilbMV07cmV0dXJuIGx0JiYoZXQ8MCYmKHl0PXl0LnNsaWNlKDEpKSxmdW5jdGlvbihKdCxnbil7Zm9yKHZhciBkbj1bXSx5bj0w''@;'; put 'put ''LGxuPUp0OzA8bG47bG4tLSl5bj09PWduJiYoZG4udW5zaGlmdChsbikseW49MCkseW4rKztyZXR1cm4gZG59KHl0Lmxlbmd0aCxHZSkuZm9yRWFjaChmdW5jdGlvbihKdCxnbil7eXQ9eXQuc2xpY2UoMCxKdCtnbikrSHQreXQuc2xpY2UoSnQrZ24pfSksZXQ8MCYmKHl0PSItIi5jb25jYXQo''@;'; put 'put ''eXQpKSksanQ/eXQrQ3QranQ6eXR9KF90PWZ1bmN0aW9uKHR0LGV0LGx0LEx0KXt2YXIgQ3Q9dHQsZnQ9QihDdC50b1N0cmluZygpLnNwbGl0KCIuIiksMiksSHQ9ZnRbMF0sR2U9ZnRbMV07aWYoSHQubWF0Y2goL14tPzAkLykmJmx0KXJldHVybiBHZT8iIi5jb25jYXQoSHQucmVwbGFjZSgi''@;'; put 'put ''MCIsIiIpLCIuIikuY29uY2F0KEdlKTpIdC5yZXBsYWNlKCIwIiwiIik7aWYoSHQubGVuZ3RoPEx0KWZvcih2YXIgVWU9THQtSHQubGVuZ3RoLHl0PTA7eXQ8VWU7eXQrKylDdD0iMCIuY29uY2F0KEN0KTtyZXR1cm4gQ3QudG9TdHJpbmcoKX0oX3QsMCxULFYpLFNlLFBlLGRlLHZlKSwoRnx8''@;'; put 'put ''d3QpJiYoX3QrPW10KSwoZ3R8fFNlPDApJiYoaHQ9X3Qsb249JGUsX3Q9MD09PShCdD1TZSk/aHQ6MD09K2h0P2h0LnJlcGxhY2UoIi0iLCIiKTowPEJ0PyIrIi5jb25jYXQoaHQpOiJzaWduIj09PW9uP2h0OiIoIi5jb25jYXQoaHQucmVwbGFjZSgiLSIsIiIpLCIpIikpLF90fWZ1bmN0aW9u''@;'; put 'put ''IEsoSixzZSl7aWYoIUopcmV0dXJuIHNlO3ZhciBvZT1PYmplY3Qua2V5cyhKKTtyZXR1cm4gMT09PW9lLmxlbmd0aCYmIm91dHB1dCI9PT1vZVswXT9zZTpKfUwuZXhwb3J0cz1mdW5jdGlvbihKKXtyZXR1cm57Zm9ybWF0OmZ1bmN0aW9uKCl7Zm9yKHZhciBzZT1hcmd1bWVudHMubGVuZ3Ro''@;'; put 'put ''LG9lPW5ldyBBcnJheShzZSksY2U9MDtjZTxzZTtjZSsrKW9lW2NlXT1hcmd1bWVudHNbY2VdO3JldHVybiBhZS5hcHBseSh2b2lkIDAsb2UuY29uY2F0KFtKXSkpfSxnZXRCeXRlVW5pdDpmdW5jdGlvbigpe2Zvcih2YXIgc2U9YXJndW1lbnRzLmxlbmd0aCxvZT1uZXcgQXJyYXkoc2UpLGNl''@;'; put 'put ''PTA7Y2U8c2U7Y2UrKylvZVtjZV09YXJndW1lbnRzW2NlXTtyZXR1cm4gZnVuY3Rpb24oZGUpe3ZhciB2ZT1qLmdlbmVyYWw7cmV0dXJuIFkoZGUuX3ZhbHVlLHZlLnN1ZmZpeGVzLHZlLnNjYWxlKS5zdWZmaXh9LmFwcGx5KHZvaWQgMCxvZS5jb25jYXQoW0pdKSl9LGdldEJpbmFyeUJ5dGVV''@;'; put 'put ''bml0OmZ1bmN0aW9uKCl7Zm9yKHZhciBzZT1hcmd1bWVudHMubGVuZ3RoLG9lPW5ldyBBcnJheShzZSksY2U9MDtjZTxzZTtjZSsrKW9lW2NlXT1hcmd1bWVudHNbY2VdO3JldHVybiBmdW5jdGlvbihkZSl7dmFyIHZlPWouYmluYXJ5O3JldHVybiBZKGRlLl92YWx1ZSx2ZS5zdWZmaXhlcyx2''@;'; put 'put ''ZS5zY2FsZSkuc3VmZml4fS5hcHBseSh2b2lkIDAsb2UuY29uY2F0KFtKXSkpfSxnZXREZWNpbWFsQnl0ZVVuaXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHNlPWFyZ3VtZW50cy5sZW5ndGgsb2U9bmV3IEFycmF5KHNlKSxjZT0wO2NlPHNlO2NlKyspb2VbY2VdPWFyZ3VtZW50c1tjZV07cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uKGRlKXt2YXIgdmU9ai5kZWNpbWFsO3JldHVybiBZKGRlLl92YWx1ZSx2ZS5zdWZmaXhlcyx2ZS5zY2FsZSkuc3VmZml4fS5hcHBseSh2b2lkIDAsb2UuY29uY2F0KFtKXSkpfSxmb3JtYXRPckRlZmF1bHQ6S319fSx7Ii4vZ2xvYmFsU3RhdGUiOjQsIi4vcGFyc2luZyI6OCwi''@;'; put 'put ''Li92YWxpZGF0aW5nIjoxMH1dLDQ6W2Z1bmN0aW9uKEplLEwsbWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj1KZSgiLi9lbi1VUyIpLEU9SmUoIi4vdmFsaWRhdGluZyIpLEVlPUplKCIuL3BhcnNpbmciKSxVPXt9LFE9dm9pZCAwLGo9e30scmU9bnVsbCxhZT17fTtmdW5jdGlvbiBZKE4pe1E9Tn1m''@;'; put 'put ''dW5jdGlvbiBXKCl7cmV0dXJuIGpbUV19VS5sYW5ndWFnZXM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxqKX0sVS5jdXJyZW50TGFuZ3VhZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gUX0sVS5jdXJyZW50Q3VycmVuY3k9ZnVuY3Rpb24oKXtyZXR1cm4gVygpLmN1cnJlbmN5fSxV''@;'; put 'put ''LmN1cnJlbnRBYmJyZXZpYXRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIFcoKS5hYmJyZXZpYXRpb25zfSxVLmN1cnJlbnREZWxpbWl0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIFcoKS5kZWxpbWl0ZXJzfSxVLmN1cnJlbnRPcmRpbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIFcoKS5vcmRpbmFsfSxVLmN1''@;'; put 'put ''cnJlbnREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LFcoKS5kZWZhdWx0cyxhZSl9LFUuY3VycmVudE9yZGluYWxEZWZhdWx0Rm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sVS5jdXJyZW50RGVmYXVsdHMoKSxXKCkub3JkaW5hbEZv''@;'; put 'put ''cm1hdCl9LFUuY3VycmVudEJ5dGVEZWZhdWx0Rm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sVS5jdXJyZW50RGVmYXVsdHMoKSxXKCkuYnl0ZUZvcm1hdCl9LFUuY3VycmVudFBlcmNlbnRhZ2VEZWZhdWx0Rm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5h''@;'; put 'put ''c3NpZ24oe30sVS5jdXJyZW50RGVmYXVsdHMoKSxXKCkucGVyY2VudGFnZUZvcm1hdCl9LFUuY3VycmVudEN1cnJlbmN5RGVmYXVsdEZvcm1hdD1mdW5jdGlvbigpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LFUuY3VycmVudERlZmF1bHRzKCksVygpLmN1cnJlbmN5Rm9ybWF0KX0sVS5jdXJy''@;'; put 'put ''ZW50VGltZURlZmF1bHRGb3JtYXQ9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxVLmN1cnJlbnREZWZhdWx0cygpLFcoKS50aW1lRm9ybWF0KX0sVS5zZXREZWZhdWx0cz1mdW5jdGlvbihOKXtOPUVlLnBhcnNlRm9ybWF0KE4pLEUudmFsaWRhdGVGb3JtYXQoTikmJihhZT1O''@;'; put 'put ''KX0sVS5nZXRaZXJvRm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIHJlfSxVLnNldFplcm9Gb3JtYXQ9ZnVuY3Rpb24oTil7cmV0dXJuIHJlPSJzdHJpbmciPT10eXBlb2YgTj9OOm51bGx9LFUuaGFzWmVyb0Zvcm1hdD1mdW5jdGlvbigpe3JldHVybiBudWxsIT09cmV9LFUubGFuZ3VhZ2VEYXRh''@;'; put 'put ''PWZ1bmN0aW9uKE4pe2lmKE4pe2lmKGpbTl0pcmV0dXJuIGpbTl07dGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHRhZyAiJy5jb25jYXQoTiwnIicpKX1yZXR1cm4gVygpfSxVLnJlZ2lzdGVyTGFuZ3VhZ2U9ZnVuY3Rpb24oTil7dmFyIHRlPTE8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09''@;'; put 'put ''YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07aWYoIUUudmFsaWRhdGVMYW5ndWFnZShOKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGFuZ3VhZ2UgZGF0YSIpO2pbTi5sYW5ndWFnZVRhZ109Tix0ZSYmWShOLmxhbmd1YWdlVGFnKX0sVS5zZXRMYW5ndWFnZT1mdW5jdGlvbihOKXt2YXIg''@;'; put 'put ''dGU9MTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOkIubGFuZ3VhZ2VUYWc7aWYoIWpbTl0pe3ZhciBLPU4uc3BsaXQoIi0iKVswXSxKPU9iamVjdC5rZXlzKGopLmZpbmQoZnVuY3Rpb24oc2Upe3JldHVybiBzZS5zcGxpdCgiLSIpWzBdPT09''@;'; put 'put ''S30pO3JldHVybiBqW0pdP3ZvaWQgWShKKTp2b2lkIFkodGUpfVkoTil9LFUucmVnaXN0ZXJMYW5ndWFnZShCKSxRPUIubGFuZ3VhZ2VUYWcsTC5leHBvcnRzPVV9LHsiLi9lbi1VUyI6MiwiLi9wYXJzaW5nIjo4LCIuL3ZhbGlkYXRpbmciOjEwfV0sNTpbZnVuY3Rpb24oSmUsTCxtZSl7InVz''@;'; put 'put ''ZSBzdHJpY3QiO0wuZXhwb3J0cz1mdW5jdGlvbihCKXtyZXR1cm57bG9hZExhbmd1YWdlc0luTm9kZTpmdW5jdGlvbihFKXtyZXR1cm4gRWU9Qix2b2lkIEUuZm9yRWFjaChmdW5jdGlvbihVKXt2YXIgUT12b2lkIDA7dHJ5e1E9SmUoIi4uL2xhbmd1YWdlcy8iLmNvbmNhdChVKSl9Y2F0Y2go''@;'; put 'put ''ail7Y29uc29sZS5lcnJvcignVW5hYmxlIHRvIGxvYWQgIicuY29uY2F0KFUsJyIuIE5vIG1hdGNoaW5nIGxhbmd1YWdlIGZpbGUgZm91bmQuJykpfVEmJkVlLnJlZ2lzdGVyTGFuZ3VhZ2UoUSl9KTt2YXIgRWV9fX19LHt9XSw2OltmdW5jdGlvbihKZSxMLG1lKXsidXNlIHN0cmljdCI7dmFy''@;'; put 'put ''IEI9SmUoImJpZ251bWJlci5qcyIpO2Z1bmN0aW9uIEUoRWUsVSxRKXt2YXIgaj1uZXcgQihFZS5fdmFsdWUpLHJlPVU7cmV0dXJuIFEuaXNOdW1icm8oVSkmJihyZT1VLl92YWx1ZSkscmU9bmV3IEIocmUpLEVlLl92YWx1ZT1qLm1pbnVzKHJlKS50b051bWJlcigpLEVlfUwuZXhwb3J0cz1m''@;'; put 'put ''dW5jdGlvbihFZSl7cmV0dXJue2FkZDpmdW5jdGlvbihVLFEpe3JldHVybiByZT1RLGFlPUVlLFk9bmV3IEIoKGo9VSkuX3ZhbHVlKSxXPXJlLGFlLmlzTnVtYnJvKHJlKSYmKFc9cmUuX3ZhbHVlKSxXPW5ldyBCKFcpLGouX3ZhbHVlPVkucGx1cyhXKS50b051bWJlcigpLGo7dmFyIGoscmUs''@;'; put 'put ''YWUsWSxXfSxzdWJ0cmFjdDpmdW5jdGlvbihVLFEpe3JldHVybiBFKFUsUSxFZSl9LG11bHRpcGx5OmZ1bmN0aW9uKFUsUSl7cmV0dXJuIHJlPVEsYWU9RWUsWT1uZXcgQigoaj1VKS5fdmFsdWUpLFc9cmUsYWUuaXNOdW1icm8ocmUpJiYoVz1yZS5fdmFsdWUpLFc9bmV3IEIoVyksai5fdmFs''@;'; put 'put ''dWU9WS50aW1lcyhXKS50b051bWJlcigpLGo7dmFyIGoscmUsYWUsWSxXfSxkaXZpZGU6ZnVuY3Rpb24oVSxRKXtyZXR1cm4gcmU9USxhZT1FZSxZPW5ldyBCKChqPVUpLl92YWx1ZSksVz1yZSxhZS5pc051bWJybyhyZSkmJihXPXJlLl92YWx1ZSksVz1uZXcgQihXKSxqLl92YWx1ZT1ZLmRp''@;'; put 'put ''dmlkZWRCeShXKS50b051bWJlcigpLGo7dmFyIGoscmUsYWUsWSxXfSxzZXQ6ZnVuY3Rpb24oVSxRKXtyZXR1cm4gaj1VLGFlPXJlPVEsRWUuaXNOdW1icm8ocmUpJiYoYWU9cmUuX3ZhbHVlKSxqLl92YWx1ZT1hZSxqO3ZhciBqLHJlLGFlfSxkaWZmZXJlbmNlOmZ1bmN0aW9uKFUsUSl7cmV0''@;'; put 'put ''dXJuIGo9USxFKGFlPShyZT1FZSkoVS5fdmFsdWUpLGoscmUpLE1hdGguYWJzKGFlLl92YWx1ZSk7dmFyIGoscmUsYWV9fX19LHsiYmlnbnVtYmVyLmpzIjoxfV0sNzpbZnVuY3Rpb24oSmUsTCxtZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEIodGUsSyl7Zm9yKHZhciBKPTA7SjxLLmxlbmd0''@;'; put 'put ''aDtKKyspe3ZhciBzZT1LW0pdO3NlLmVudW1lcmFibGU9c2UuZW51bWVyYWJsZXx8ITEsc2UuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBzZSYmKHNlLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGUsc2Uua2V5LHNlKX19dmFyIEU9SmUoIi4vZ2xvYmFsU3RhdGUiKSxF''@;'; put 'put ''ZT1KZSgiLi92YWxpZGF0aW5nIiksVT1KZSgiLi9sb2FkaW5nIikoTiksUT1KZSgiLi91bmZvcm1hdHRpbmciKSxqPUplKCIuL2Zvcm1hdHRpbmciKShOKSxyZT1KZSgiLi9tYW5pcHVsYXRpbmciKShOKSxhZT1KZSgiLi9wYXJzaW5nIiksWT1mdW5jdGlvbigpe2Z1bmN0aW9uIHRlKG9lKXso''@;'; put 'put ''ZnVuY3Rpb24oY2UsZGUpe2lmKCEoY2UgaW5zdGFuY2VvZiBkZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLHRlKSx0aGlzLl92YWx1ZT1vZX12YXIgSyxKO3JldHVybiBLPXRlLChKPVt7a2V5OiJjbG9uZSIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gTih0aGlzLl92YWx1ZSl9fSx7a2V5OiJmb3JtYXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGouZm9ybWF0KHRoaXMsMDxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9KX19LHtrZXk6ImZvcm1hdEN1cnJl''@;'; put 'put ''bmN5Iix2YWx1ZTpmdW5jdGlvbihvZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBvZSYmKG9lPWFlLnBhcnNlRm9ybWF0KG9lKSksKG9lPWouZm9ybWF0T3JEZWZhdWx0KG9lLEUuY3VycmVudEN1cnJlbmN5RGVmYXVsdEZvcm1hdCgpKSkub3V0cHV0PSJjdXJyZW5jeSIsai5mb3JtYXQodGhp''@;'; put 'put ''cyxvZSl9fSx7a2V5OiJmb3JtYXRUaW1lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBvZT0wPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307cmV0dXJuIG9lLm91dHB1dD0idGltZSIsai5mb3JtYXQodGhpcyxvZSl9fSx7a2V5OiJiaW5hcnlC''@;'; put 'put ''eXRlVW5pdHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGouZ2V0QmluYXJ5Qnl0ZVVuaXQodGhpcyl9fSx7a2V5OiJkZWNpbWFsQnl0ZVVuaXRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBqLmdldERlY2ltYWxCeXRlVW5pdCh0aGlzKX19LHtrZXk6ImJ5dGVVbml0cyIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gai5nZXRCeXRlVW5pdCh0aGlzKX19LHtrZXk6ImRpZmZlcmVuY2UiLHZhbHVlOmZ1bmN0aW9uKG9lKXtyZXR1cm4gcmUuZGlmZmVyZW5jZSh0aGlzLG9lKX19LHtrZXk6ImFkZCIsdmFsdWU6ZnVuY3Rpb24ob2Upe3JldHVybiByZS5hZGQodGhpcyxvZSl9fSx7a2V5''@;'; put 'put ''OiJzdWJ0cmFjdCIsdmFsdWU6ZnVuY3Rpb24ob2Upe3JldHVybiByZS5zdWJ0cmFjdCh0aGlzLG9lKX19LHtrZXk6Im11bHRpcGx5Iix2YWx1ZTpmdW5jdGlvbihvZSl7cmV0dXJuIHJlLm11bHRpcGx5KHRoaXMsb2UpfX0se2tleToiZGl2aWRlIix2YWx1ZTpmdW5jdGlvbihvZSl7cmV0dXJu''@;'; put 'put ''IHJlLmRpdmlkZSh0aGlzLG9lKX19LHtrZXk6InNldCIsdmFsdWU6ZnVuY3Rpb24ob2Upe3JldHVybiByZS5zZXQodGhpcyxXKG9lKSl9fSx7a2V5OiJ2YWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFsdWV9fSx7a2V5OiJ2YWx1ZU9mIix2YWx1ZTpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl92YWx1ZX19XSkmJkIoSy5wcm90b3R5cGUsSiksdGV9KCk7ZnVuY3Rpb24gVyh0ZSl7dmFyIEs9dGU7cmV0dXJuIE4uaXNOdW1icm8odGUpP0s9dGUuX3ZhbHVlOiJzdHJpbmciPT10eXBlb2YgdGU/Sz1OLnVuZm9ybWF0KHRlKTppc05hTih0ZSkmJihLPU5hTiksS31mdW5j''@;'; put 'put ''dGlvbiBOKHRlKXtyZXR1cm4gbmV3IFkoVyh0ZSkpfU4udmVyc2lvbj0iMi4xLjIiLE4uaXNOdW1icm89ZnVuY3Rpb24odGUpe3JldHVybiB0ZSBpbnN0YW5jZW9mIFl9LE4ubGFuZ3VhZ2U9RS5jdXJyZW50TGFuZ3VhZ2UsTi5yZWdpc3Rlckxhbmd1YWdlPUUucmVnaXN0ZXJMYW5ndWFnZSxO''@;'; put 'put ''LnNldExhbmd1YWdlPUUuc2V0TGFuZ3VhZ2UsTi5sYW5ndWFnZXM9RS5sYW5ndWFnZXMsTi5sYW5ndWFnZURhdGE9RS5sYW5ndWFnZURhdGEsTi56ZXJvRm9ybWF0PUUuc2V0WmVyb0Zvcm1hdCxOLmRlZmF1bHRGb3JtYXQ9RS5jdXJyZW50RGVmYXVsdHMsTi5zZXREZWZhdWx0cz1FLnNldERl''@;'; put 'put ''ZmF1bHRzLE4uZGVmYXVsdEN1cnJlbmN5Rm9ybWF0PUUuY3VycmVudEN1cnJlbmN5RGVmYXVsdEZvcm1hdCxOLnZhbGlkYXRlPUVlLnZhbGlkYXRlLE4ubG9hZExhbmd1YWdlc0luTm9kZT1VLmxvYWRMYW5ndWFnZXNJbk5vZGUsTi51bmZvcm1hdD1RLnVuZm9ybWF0LEwuZXhwb3J0cz1OfSx7''@;'; put 'put ''Ii4vZm9ybWF0dGluZyI6MywiLi9nbG9iYWxTdGF0ZSI6NCwiLi9sb2FkaW5nIjo1LCIuL21hbmlwdWxhdGluZyI6NiwiLi9wYXJzaW5nIjo4LCIuL3VuZm9ybWF0dGluZyI6OSwiLi92YWxpZGF0aW5nIjoxMH1dLDg6W2Z1bmN0aW9uKEplLEwsbWUpeyJ1c2Ugc3RyaWN0IjtMLmV4cG9ydHM9''@;'; put 'put ''e3BhcnNlRm9ybWF0OmZ1bmN0aW9uKEIpe3ZhciBFLEVlLFUsUSxqLHJlLGFlLFksVyxOLHRlLEssSixzZSxvZSxjZSxkZSx2ZSxBZSxrZSxTZT0xPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuInN0cmluZyIhPXR5cGVvZiBC''@;'; put 'put ''P0I6KEVlPVNlLGo9U2UsZnVuY3Rpb24oSWUsVGUpe2lmKC0xPT09SWUuaW5kZXhPZigiJCIpKXtpZigtMT09PUllLmluZGV4T2YoIiUiKSlyZXR1cm4tMSE9PUllLmluZGV4T2YoImJkIik/KFRlLm91dHB1dD0iYnl0ZSIsVGUuYmFzZT0iZ2VuZXJhbCIpOi0xIT09SWUuaW5kZXhPZigiYiIp''@;'; put 'put ''PyhUZS5vdXRwdXQ9ImJ5dGUiLFRlLmJhc2U9ImJpbmFyeSIpOi0xIT09SWUuaW5kZXhPZigiZCIpPyhUZS5vdXRwdXQ9ImJ5dGUiLFRlLmJhc2U9ImRlY2ltYWwiKTotMT09PUllLmluZGV4T2YoIjoiKT8tMSE9PUllLmluZGV4T2YoIm8iKSYmKFRlLm91dHB1dD0ib3JkaW5hbCIpOlRlLm91''@;'; put 'put ''dHB1dD0idGltZSI7VGUub3V0cHV0PSJwZXJjZW50In1lbHNlIFRlLm91dHB1dD0iY3VycmVuY3kifShCPShyZT0oUT1CPShVPShFPUIpLm1hdGNoKC9eeyhbXn1dKil9LykpPyhFZS5wcmVmaXg9VVsxXSxFLnNsaWNlKFVbMF0ubGVuZ3RoKSk6RSkubWF0Y2goL3soW159XSopfSQvKSk/KGou''@;'; put 'put ''cG9zdGZpeD1yZVsxXSxRLnNsaWNlKDAsLXJlWzBdLmxlbmd0aCkpOlEsU2UpLGFlPVNlLChZPUIubWF0Y2goL1sxLTldK1swLTldKi8pKSYmKGFlLnRvdGFsTGVuZ3RoPStZWzBdKSxXPVNlLChOPUIuc3BsaXQoIi4iKVswXS5tYXRjaCgvMCsvKSkmJihXLmNoYXJhY3RlcmlzdGljPU5bMF0u''@;'; put 'put ''bGVuZ3RoKSxmdW5jdGlvbihJZSxUZSl7aWYoLTEhPT1JZS5pbmRleE9mKCIuIikpe3ZhciBNZT1JZS5zcGxpdCgiLiIpWzBdO1RlLm9wdGlvbmFsQ2hhcmFjdGVyaXN0aWM9LTE9PT1NZS5pbmRleE9mKCIwIil9fShCLFNlKSx0ZT1TZSwtMSE9PUIuaW5kZXhPZigiYSIpJiYodGUuYXZlcmFn''@;'; put 'put ''ZT0hMCksSj1TZSwtMSE9PShLPUIpLmluZGV4T2YoIksiKT9KLmZvcmNlQXZlcmFnZT0idGhvdXNhbmQiOi0xIT09Sy5pbmRleE9mKCJNIik/Si5mb3JjZUF2ZXJhZ2U9Im1pbGxpb24iOi0xIT09Sy5pbmRleE9mKCJCIik/Si5mb3JjZUF2ZXJhZ2U9ImJpbGxpb24iOi0xIT09Sy5pbmRleE9m''@;'; put 'put ''KCJUIikmJihKLmZvcmNlQXZlcmFnZT0idHJpbGxpb24iKSxmdW5jdGlvbihJZSxUZSl7dmFyIE1lPUllLnNwbGl0KCIuIilbMV07aWYoTWUpe3ZhciBoZT1NZS5tYXRjaCgvMCsvKTtoZSYmKFRlLm1hbnRpc3NhPWhlWzBdLmxlbmd0aCl9fShCLFNlKSxvZT1TZSwoc2U9QikubWF0Y2goL1xb''@;'; put 'put ''XC5dLyk/b2Uub3B0aW9uYWxNYW50aXNzYT0hMDpzZS5tYXRjaCgvXC4vKSYmKG9lLm9wdGlvbmFsTWFudGlzc2E9ITEpLGNlPVNlLC0xIT09Qi5pbmRleE9mKCIsIikmJihjZS50aG91c2FuZFNlcGFyYXRlZD0hMCksZGU9U2UsLTEhPT1CLmluZGV4T2YoIiAiKSYmKGRlLnNwYWNlU2VwYXJh''@;'; put 'put ''dGVkPSEwKSxBZT1TZSwodmU9QikubWF0Y2goL15cKz9cKFteKV0qXCkkLykmJihBZS5uZWdhdGl2ZT0icGFyZW50aGVzaXMiKSx2ZS5tYXRjaCgvXlwrPy0vKSYmKEFlLm5lZ2F0aXZlPSJzaWduIiksa2U9U2UsQi5tYXRjaCgvXlwrLykmJihrZS5mb3JjZVNpZ249ITApLFNlKX19fSx7fV0s''@;'; put 'put ''OTpbZnVuY3Rpb24oSmUsTCxtZSl7InVzZSBzdHJpY3QiO3ZhciBCPVt7a2V5OiJaaUIiLGZhY3RvcjpNYXRoLnBvdygxMDI0LDcpfSx7a2V5OiJaQiIsZmFjdG9yOk1hdGgucG93KDFlMyw3KX0se2tleToiWWlCIixmYWN0b3I6TWF0aC5wb3coMTAyNCw4KX0se2tleToiWUIiLGZhY3RvcjpN''@;'; put 'put ''YXRoLnBvdygxZTMsOCl9LHtrZXk6IlRpQiIsZmFjdG9yOk1hdGgucG93KDEwMjQsNCl9LHtrZXk6IlRCIixmYWN0b3I6TWF0aC5wb3coMWUzLDQpfSx7a2V5OiJQaUIiLGZhY3RvcjpNYXRoLnBvdygxMDI0LDUpfSx7a2V5OiJQQiIsZmFjdG9yOk1hdGgucG93KDFlMyw1KX0se2tleToiTWlC''@;'; put 'put ''IixmYWN0b3I6TWF0aC5wb3coMTAyNCwyKX0se2tleToiTUIiLGZhY3RvcjpNYXRoLnBvdygxZTMsMil9LHtrZXk6IktpQiIsZmFjdG9yOk1hdGgucG93KDEwMjQsMSl9LHtrZXk6IktCIixmYWN0b3I6TWF0aC5wb3coMWUzLDEpfSx7a2V5OiJHaUIiLGZhY3RvcjpNYXRoLnBvdygxMDI0LDMp''@;'; put 'put ''fSx7a2V5OiJHQiIsZmFjdG9yOk1hdGgucG93KDFlMywzKX0se2tleToiRWlCIixmYWN0b3I6TWF0aC5wb3coMTAyNCw2KX0se2tleToiRUIiLGZhY3RvcjpNYXRoLnBvdygxZTMsNil9LHtrZXk6IkIiLGZhY3RvcjoxfV07ZnVuY3Rpb24gRShVKXtyZXR1cm4gVS5yZXBsYWNlKC9bLS9cXF4k''@;'; put 'put ''Kis/LigpfFtcXXt9XS9nLCJcXCQmIil9TC5leHBvcnRzPXt1bmZvcm1hdDpmdW5jdGlvbihVLFEpe3ZhciBqLFk9SmUoIi4vZ2xvYmFsU3RhdGUiKSxXPVkuY3VycmVudERlbGltaXRlcnMoKSxOPVkuY3VycmVudEN1cnJlbmN5KCkuc3ltYm9sLHRlPVkuY3VycmVudE9yZGluYWwoKSxLPVku''@;'; put 'put ''Z2V0WmVyb0Zvcm1hdCgpLEo9WS5jdXJyZW50QWJicmV2aWF0aW9ucygpLHNlPXZvaWQgMDtpZigic3RyaW5nIj09dHlwZW9mIFUpc2U9ZnVuY3Rpb24ob2UsY2Upe2lmKCFvZS5pbmRleE9mKCI6Iil8fCI6Ij09PWNlLnRob3VzYW5kcylyZXR1cm4hMTt2YXIgZGU9b2Uuc3BsaXQoIjoiKTtp''@;'; put 'put ''ZigzIT09ZGUubGVuZ3RoKXJldHVybiExO3ZhciBBZT0rZGVbMV0sa2U9K2RlWzJdO3JldHVybiFpc05hTigrZGVbMF0pJiYhaXNOYU4oQWUpJiYhaXNOYU4oa2UpfShVLFcpPysoaj1VLnNwbGl0KCI6IikpWzJdKzYwKitqWzFdKzM2MDAqK2pbMF06ZnVuY3Rpb24gRWUoVSxRKXt2YXIgaj0y''@;'; put 'put ''PGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06IiIscmU9Mzxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1szXTp2b2lkIDAsYWU9NDxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1s0XTp2b2lkIDAsWT01PGFyZ3VtZW50cy5sZW5ndGg/YXJn''@;'; put 'put ''dW1lbnRzWzVdOnZvaWQgMCxXPTY8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbNl06dm9pZCAwO2lmKCIiIT09VSlyZXR1cm4gVT09PWFlPzA6ZnVuY3Rpb24gTih0ZSxLKXt2YXIgSj0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06IiIs''@;'; put 'put ''c2U9Mzxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1szXTp2b2lkIDAsb2U9NDxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1s0XTp2b2lkIDAsY2U9NTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1s1XTp2b2lkIDAsZGU9Njxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1s2XTp2b2lk''@;'; put 'put ''IDA7aWYoIWlzTmFOKCt0ZSkpcmV0dXJuK3RlO3ZhciB2ZT0iIixBZT10ZS5yZXBsYWNlKC8oXlteKF0qKVwoKC4qKVwpKFteKV0qJCkvLCIkMSQyJDMiKTtpZihBZSE9PXRlKXJldHVybi0xKk4oQWUsSyxKLHNlLG9lLGNlLGRlKTtmb3IodmFyIGtlPTA7a2U8Qi5sZW5ndGg7a2UrKyl7dmFy''@;'; put 'put ''IFNlPUJba2VdO2lmKCh2ZT10ZS5yZXBsYWNlKFNlLmtleSwiIikpIT09dGUpcmV0dXJuIE4odmUsSyxKLHNlLG9lLGNlLGRlKSpTZS5mYWN0b3J9aWYoKHZlPXRlLnJlcGxhY2UoIiUiLCIiKSkhPT10ZSlyZXR1cm4gTih2ZSxLLEosc2Usb2UsY2UsZGUpLzEwMDt2YXIgSWU9cGFyc2VGbG9h''@;'; put 'put ''dCh0ZSk7aWYoIWlzTmFOKEllKSl7dmFyIFRlPXNlKEllKTtpZihUZSYmIi4iIT09VGUmJih2ZT10ZS5yZXBsYWNlKG5ldyBSZWdFeHAoIiIuY29uY2F0KEUoVGUpLCIkIikpLCIiKSkhPT10ZSlyZXR1cm4gTih2ZSxLLEosc2Usb2UsY2UsZGUpO3ZhciBNZT17fTtPYmplY3Qua2V5cyhjZSku''@;'; put 'put ''Zm9yRWFjaChmdW5jdGlvbihQKXtNZVtjZVtQXV09UH0pO2Zvcih2YXIgaGU9T2JqZWN0LmtleXMoTWUpLnNvcnQoKS5yZXZlcnNlKCksTz1oZS5sZW5ndGgsej0wO3o8Tzt6Kyspe3ZhciBlZT1oZVt6XSxuZT1NZVtlZV07aWYoKHZlPXRlLnJlcGxhY2UoZWUsIiIpKSE9PXRlKXt2YXIgeD12''@;'; put 'put ''b2lkIDA7c3dpdGNoKG5lKXtjYXNlInRob3VzYW5kIjp4PU1hdGgucG93KDEwLDMpO2JyZWFrO2Nhc2UibWlsbGlvbiI6eD1NYXRoLnBvdygxMCw2KTticmVhaztjYXNlImJpbGxpb24iOng9TWF0aC5wb3coMTAsOSk7YnJlYWs7Y2FzZSJ0cmlsbGlvbiI6eD1NYXRoLnBvdygxMCwxMil9cmV0''@;'; put 'put ''dXJuIE4odmUsSyxKLHNlLG9lLGNlLGRlKSp4fX19fShmdW5jdGlvbihOLHRlKXt2YXIgSj1OLnJlcGxhY2UoMjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiIiLCIiKTtyZXR1cm4oSj1KLnJlcGxhY2UobmV3IFJlZ0V4cCgiKFswLTldKSIu''@;'; put 'put ''Y29uY2F0KEUodGUudGhvdXNhbmRzKSwiKFswLTldKSIpLCJnIiksIiQxJDIiKSkucmVwbGFjZSh0ZS5kZWNpbWFsLCIuIil9KFUsUSxqKSxRLGoscmUsYWUsWSxXKX0oVSxXLE4sdGUsSyxKLFEpO2Vsc2V7aWYoIm51bWJlciIhPXR5cGVvZiBVKXJldHVybjtzZT1VfWlmKHZvaWQgMCE9PXNl''@;'; put 'put ''KXJldHVybiBzZX19fSx7Ii4vZ2xvYmFsU3RhdGUiOjR9XSwxMDpbZnVuY3Rpb24oSmUsTCxtZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEIoVyl7cmV0dXJuIGZ1bmN0aW9uKE4pe2lmKEFycmF5LmlzQXJyYXkoTikpe2Zvcih2YXIgdGU9MCxLPW5ldyBBcnJheShOLmxlbmd0aCk7dGU8Ti5s''@;'; put 'put ''ZW5ndGg7dGUrKylLW3RlXT1OW3RlXTtyZXR1cm4gS319KFcpfHxmdW5jdGlvbihOKXtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KE4pfHwiW29iamVjdCBBcmd1bWVudHNdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChOKSlyZXR1cm4gQXJyYXkuZnJvbShOKX0oVyl8''@;'; put 'put ''fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX1mdW5jdGlvbiBFKFcpe3JldHVybihFPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJh''@;'; put 'put ''dG9yP2Z1bmN0aW9uKE4pe3JldHVybiB0eXBlb2YgTn06ZnVuY3Rpb24oTil7cmV0dXJuIE4mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk4uY29uc3RydWN0b3I9PT1TeW1ib2wmJk4hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBOfSkoVyl9dmFyIEVlPUplKCIuL3Vu''@;'; put 'put ''Zm9ybWF0dGluZyIpLFU9L15bYS16XXsyLDN9KC1bYS16QS1aXXs0fSk/KC0oW0EtWl17Mn18WzAtOV17M30pKT8kLyxRPXtvdXRwdXQ6e3R5cGU6InN0cmluZyIsdmFsaWRWYWx1ZXM6WyJjdXJyZW5jeSIsInBlcmNlbnQiLCJieXRlIiwidGltZSIsIm9yZGluYWwiLCJudW1iZXIiXX0sYmFz''@;'; put 'put ''ZTp7dHlwZToic3RyaW5nIix2YWxpZFZhbHVlczpbImRlY2ltYWwiLCJiaW5hcnkiLCJnZW5lcmFsIl0scmVzdHJpY3Rpb246ZnVuY3Rpb24oVyxOKXtyZXR1cm4iYnl0ZSI9PT1OLm91dHB1dH0sbWVzc2FnZToiYGJhc2VgIG11c3QgYmUgcHJvdmlkZWQgb25seSB3aGVuIHRoZSBvdXRwdXQg''@;'; put 'put ''aXMgYGJ5dGVgIixtYW5kYXRvcnk6ZnVuY3Rpb24oVyl7cmV0dXJuImJ5dGUiPT09Vy5vdXRwdXR9fSxjaGFyYWN0ZXJpc3RpYzp7dHlwZToibnVtYmVyIixyZXN0cmljdGlvbjpmdW5jdGlvbihXKXtyZXR1cm4gMDw9V30sbWVzc2FnZToidmFsdWUgbXVzdCBiZSBwb3NpdGl2ZSJ9LHByZWZp''@;'; put 'put ''eDoic3RyaW5nIixwb3N0Zml4OiJzdHJpbmciLGZvcmNlQXZlcmFnZTp7dHlwZToic3RyaW5nIix2YWxpZFZhbHVlczpbInRyaWxsaW9uIiwiYmlsbGlvbiIsIm1pbGxpb24iLCJ0aG91c2FuZCJdfSxhdmVyYWdlOiJib29sZWFuIixjdXJyZW5jeVBvc2l0aW9uOnt0eXBlOiJzdHJpbmciLHZh''@;'; put 'put ''bGlkVmFsdWVzOlsicHJlZml4IiwiaW5maXgiLCJwb3N0Zml4Il19LGN1cnJlbmN5U3ltYm9sOiJzdHJpbmciLHRvdGFsTGVuZ3RoOnt0eXBlOiJudW1iZXIiLHJlc3RyaWN0aW9uczpbe3Jlc3RyaWN0aW9uOmZ1bmN0aW9uKFcpe3JldHVybiAwPD1XfSxtZXNzYWdlOiJ2YWx1ZSBtdXN0IGJl''@;'; put 'put ''IHBvc2l0aXZlIn0se3Jlc3RyaWN0aW9uOmZ1bmN0aW9uKFcsTil7cmV0dXJuIU4uZXhwb25lbnRpYWx9LG1lc3NhZ2U6ImB0b3RhbExlbmd0aGAgaXMgaW5jb21wYXRpYmxlIHdpdGggYGV4cG9uZW50aWFsYCJ9XX0sbWFudGlzc2E6e3R5cGU6Im51bWJlciIscmVzdHJpY3Rpb246ZnVuY3Rp''@;'; put 'put ''b24oVyl7cmV0dXJuIDA8PVd9LG1lc3NhZ2U6InZhbHVlIG11c3QgYmUgcG9zaXRpdmUifSxvcHRpb25hbE1hbnRpc3NhOiJib29sZWFuIix0cmltTWFudGlzc2E6ImJvb2xlYW4iLG9wdGlvbmFsQ2hhcmFjdGVyaXN0aWM6ImJvb2xlYW4iLHRob3VzYW5kU2VwYXJhdGVkOiJib29sZWFuIixz''@;'; put 'put ''cGFjZVNlcGFyYXRlZDoiYm9vbGVhbiIsYWJicmV2aWF0aW9uczp7dHlwZToib2JqZWN0IixjaGlsZHJlbjp7dGhvdXNhbmQ6InN0cmluZyIsbWlsbGlvbjoic3RyaW5nIixiaWxsaW9uOiJzdHJpbmciLHRyaWxsaW9uOiJzdHJpbmcifX0sbmVnYXRpdmU6e3R5cGU6InN0cmluZyIsdmFsaWRW''@;'; put 'put ''YWx1ZXM6WyJzaWduIiwicGFyZW50aGVzaXMiXX0sZm9yY2VTaWduOiJib29sZWFuIixleHBvbmVudGlhbDp7dHlwZToiYm9vbGVhbiJ9LHByZWZpeFN5bWJvbDp7dHlwZToiYm9vbGVhbiIscmVzdHJpY3Rpb246ZnVuY3Rpb24oVyxOKXtyZXR1cm4icGVyY2VudCI9PT1OLm91dHB1dH0sbWVz''@;'; put 'put ''c2FnZToiYHByZWZpeFN5bWJvbGAgY2FuIGJlIHByb3ZpZGVkIG9ubHkgd2hlbiB0aGUgb3V0cHV0IGlzIGBwZXJjZW50YCJ9fSxqPXtsYW5ndWFnZVRhZzp7dHlwZToic3RyaW5nIixtYW5kYXRvcnk6ITAscmVzdHJpY3Rpb246ZnVuY3Rpb24oVyl7cmV0dXJuIFcubWF0Y2goVSl9LG1lc3Nh''@;'; put 'put ''Z2U6InRoZSBsYW5ndWFnZSB0YWcgbXVzdCBmb2xsb3cgdGhlIEJDUCA0NyBzcGVjaWZpY2F0aW9uIChzZWUgaHR0cHM6Ly90b29scy5pZWZ0Lm9yZy9odG1sL2JjcDQ3KSJ9LGRlbGltaXRlcnM6e3R5cGU6Im9iamVjdCIsY2hpbGRyZW46e3Rob3VzYW5kczoic3RyaW5nIixkZWNpbWFsOiJz''@;'; put 'put ''dHJpbmciLHRob3VzYW5kc1NpemU6Im51bWJlciJ9LG1hbmRhdG9yeTohMH0sYWJicmV2aWF0aW9uczp7dHlwZToib2JqZWN0IixjaGlsZHJlbjp7dGhvdXNhbmQ6e3R5cGU6InN0cmluZyIsbWFuZGF0b3J5OiEwfSxtaWxsaW9uOnt0eXBlOiJzdHJpbmciLG1hbmRhdG9yeTohMH0sYmlsbGlv''@;'; put 'put ''bjp7dHlwZToic3RyaW5nIixtYW5kYXRvcnk6ITB9LHRyaWxsaW9uOnt0eXBlOiJzdHJpbmciLG1hbmRhdG9yeTohMH19LG1hbmRhdG9yeTohMH0sc3BhY2VTZXBhcmF0ZWQ6ImJvb2xlYW4iLG9yZGluYWw6e3R5cGU6ImZ1bmN0aW9uIixtYW5kYXRvcnk6ITB9LGN1cnJlbmN5Ont0eXBlOiJv''@;'; put 'put ''YmplY3QiLGNoaWxkcmVuOntzeW1ib2w6InN0cmluZyIscG9zaXRpb246InN0cmluZyIsY29kZToic3RyaW5nIn0sbWFuZGF0b3J5OiEwfSxkZWZhdWx0czoiZm9ybWF0IixvcmRpbmFsRm9ybWF0OiJmb3JtYXQiLGJ5dGVGb3JtYXQ6ImZvcm1hdCIscGVyY2VudGFnZUZvcm1hdDoiZm9ybWF0''@;'; put 'put ''IixjdXJyZW5jeUZvcm1hdDoiZm9ybWF0Iix0aW1lRGVmYXVsdHM6ImZvcm1hdCIsZm9ybWF0czp7dHlwZToib2JqZWN0IixjaGlsZHJlbjp7Zm91ckRpZ2l0czp7dHlwZToiZm9ybWF0IixtYW5kYXRvcnk6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHM6e3R5cGU6ImZvcm1hdCIsbWFuZGF0b3J5''@;'; put 'put ''OiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7dHlwZToiZm9ybWF0IixtYW5kYXRvcnk6ITB9LGZ1bGxXaXRoTm9EZWNpbWFsczp7dHlwZToiZm9ybWF0IixtYW5kYXRvcnk6ITB9fX19O2Z1bmN0aW9uIHJlKFcpe3JldHVybiEhRWUudW5mb3JtYXQoVyl9ZnVuY3Rpb24gYWUo''@;'; put 'put ''VyxOLHRlKXt2YXIgSz0zPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdLEo9T2JqZWN0LmtleXMoVykubWFwKGZ1bmN0aW9uKHNlKXtpZighTltzZV0pcmV0dXJuIGNvbnNvbGUuZXJyb3IoIiIuY29uY2F0KHRlLCIgSW52YWxpZCBrZXk6ICIp''@;'; put 'put ''LmNvbmNhdChzZSkpLCExO3ZhciBvZT1XW3NlXSxjZT1OW3NlXTtpZigic3RyaW5nIj09dHlwZW9mIGNlJiYoY2U9e3R5cGU6Y2V9KSwiZm9ybWF0Ij09PWNlLnR5cGUpe2lmKCFhZShvZSxRLCJbVmFsaWRhdGUgIi5jb25jYXQoc2UsIl0iKSwhMCkpcmV0dXJuITF9ZWxzZSBpZihFKG9lKSE9''@;'; put 'put ''PWNlLnR5cGUpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIiIuY29uY2F0KHRlLCIgIikuY29uY2F0KHNlLCcgdHlwZSBtaXNtYXRjaGVkOiAiJykuY29uY2F0KGNlLnR5cGUsJyIgZXhwZWN0ZWQsICInKS5jb25jYXQoRShvZSksJyIgcHJvdmlkZWQnKSksITE7aWYoY2UucmVzdHJpY3Rpb25zJiZj''@;'; put 'put ''ZS5yZXN0cmljdGlvbnMubGVuZ3RoKWZvcih2YXIgZGU9Y2UucmVzdHJpY3Rpb25zLmxlbmd0aCx2ZT0wO3ZlPGRlO3ZlKyspe3ZhciBBZT1jZS5yZXN0cmljdGlvbnNbdmVdLFNlPUFlLm1lc3NhZ2U7aWYoISgwLEFlLnJlc3RyaWN0aW9uKShvZSxXKSlyZXR1cm4gY29uc29sZS5lcnJvcigi''@;'; put 'put ''Ii5jb25jYXQodGUsIiAiKS5jb25jYXQoc2UsIiBpbnZhbGlkIHZhbHVlOiAiKS5jb25jYXQoU2UpKSwhMX1yZXR1cm4gY2UucmVzdHJpY3Rpb24mJiFjZS5yZXN0cmljdGlvbihvZSxXKT8oY29uc29sZS5lcnJvcigiIi5jb25jYXQodGUsIiAiKS5jb25jYXQoc2UsIiBpbnZhbGlkIHZhbHVl''@;'; put 'put ''OiAiKS5jb25jYXQoY2UubWVzc2FnZSkpLCExKTpjZS52YWxpZFZhbHVlcyYmLTE9PT1jZS52YWxpZFZhbHVlcy5pbmRleE9mKG9lKT8oY29uc29sZS5lcnJvcigiIi5jb25jYXQodGUsIiAiKS5jb25jYXQoc2UsIiBpbnZhbGlkIHZhbHVlOiBtdXN0IGJlIGFtb25nICIpLmNvbmNhdChKU09O''@;'; put 'put ''LnN0cmluZ2lmeShjZS52YWxpZFZhbHVlcyksJywgIicpLmNvbmNhdChvZSwnIiBwcm92aWRlZCcpKSwhMSk6IShjZS5jaGlsZHJlbiYmIWFlKG9lLGNlLmNoaWxkcmVuLCJbVmFsaWRhdGUgIi5jb25jYXQoc2UsIl0iKSkpfSk7cmV0dXJuIEt8fEoucHVzaC5hcHBseShKLEIoT2JqZWN0Lmtl''@;'; put 'put ''eXMoTikubWFwKGZ1bmN0aW9uKHNlKXt2YXIgb2U9TltzZV07aWYoInN0cmluZyI9PXR5cGVvZiBvZSYmKG9lPXt0eXBlOm9lfSksb2UubWFuZGF0b3J5KXt2YXIgY2U9b2UubWFuZGF0b3J5O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBjZSYmKGNlPWNlKFcpKSxjZSYmdm9pZCAwPT09V1tzZV0p''@;'; put 'put ''cmV0dXJuIGNvbnNvbGUuZXJyb3IoIiIuY29uY2F0KHRlLCcgTWlzc2luZyBtYW5kYXRvcnkga2V5ICInKS5jb25jYXQoc2UsJyInKSksITF9cmV0dXJuITB9KSkpLEoucmVkdWNlKGZ1bmN0aW9uKHNlLG9lKXtyZXR1cm4gc2UmJm9lfSwhMCl9ZnVuY3Rpb24gWShXKXtyZXR1cm4gYWUoVyxR''@;'; put 'put ''LCJbVmFsaWRhdGUgZm9ybWF0XSIpfUwuZXhwb3J0cz17dmFsaWRhdGU6ZnVuY3Rpb24oVyxOKXt2YXIgdGU9cmUoVyksSz1ZKE4pO3JldHVybiB0ZSYmS30sdmFsaWRhdGVGb3JtYXQ6WSx2YWxpZGF0ZUlucHV0OnJlLHZhbGlkYXRlTGFuZ3VhZ2U6ZnVuY3Rpb24oVyl7cmV0dXJuIGFlKFcs''@;'; put 'put ''aiwiW1ZhbGlkYXRlIGxhbmd1YWdlXSIpfX19LHsiLi91bmZvcm1hdHRpbmciOjl9XX0se30sWzddKSg3KX0sMzk2NTA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDE4NDQ0KS5CdWZmZXIsQj1MKDY1Njg1KS5UcmFuc2Zvcm07ZnVuY3Rpb24gVShRKXtCLmNhbGwodGhpcyks''@;'; put 'put ''dGhpcy5fYmxvY2s9bWUuYWxsb2NVbnNhZmUoUSksdGhpcy5fYmxvY2tTaXplPVEsdGhpcy5fYmxvY2tPZmZzZXQ9MCx0aGlzLl9sZW5ndGg9WzAsMCwwLDBdLHRoaXMuX2ZpbmFsaXplZD0hMX1MKDgzODk0KShVLEIpLFUucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oUSxqLHJlKXt2''@;'; put 'put ''YXIgYWU9bnVsbDt0cnl7dGhpcy51cGRhdGUoUSxqKX1jYXRjaChZKXthZT1ZfXJlKGFlKX0sVS5wcm90b3R5cGUuX2ZsdXNoPWZ1bmN0aW9uKFEpe3ZhciBqPW51bGw7dHJ5e3RoaXMucHVzaCh0aGlzLmRpZ2VzdCgpKX1jYXRjaChyZSl7aj1yZX1RKGopfSxVLnByb3RvdHlwZS51cGRhdGU9''@;'; put 'put ''ZnVuY3Rpb24oUSxqKXtpZihmdW5jdGlvbiBFZShRLGope2lmKCFtZS5pc0J1ZmZlcihRKSYmInN0cmluZyIhPXR5cGVvZiBRKXRocm93IG5ldyBUeXBlRXJyb3IoaisiIG11c3QgYmUgYSBzdHJpbmcgb3IgYSBidWZmZXIiKX0oUSwiRGF0YSIpLHRoaXMuX2ZpbmFsaXplZCl0aHJvdyBuZXcg''@;'; put 'put ''RXJyb3IoIkRpZ2VzdCBhbHJlYWR5IGNhbGxlZCIpO21lLmlzQnVmZmVyKFEpfHwoUT1tZS5mcm9tKFEsaikpO2Zvcih2YXIgcmU9dGhpcy5fYmxvY2ssYWU9MDt0aGlzLl9ibG9ja09mZnNldCtRLmxlbmd0aC1hZT49dGhpcy5fYmxvY2tTaXplOyl7Zm9yKHZhciBZPXRoaXMuX2Jsb2NrT2Zm''@;'; put 'put ''c2V0O1k8dGhpcy5fYmxvY2tTaXplOylyZVtZKytdPVFbYWUrK107dGhpcy5fdXBkYXRlKCksdGhpcy5fYmxvY2tPZmZzZXQ9MH1mb3IoO2FlPFEubGVuZ3RoOylyZVt0aGlzLl9ibG9ja09mZnNldCsrXT1RW2FlKytdO2Zvcih2YXIgVz0wLE49OCpRLmxlbmd0aDtOPjA7KytXKXRoaXMuX2xl''@;'; put 'put ''bmd0aFtXXSs9TiwoTj10aGlzLl9sZW5ndGhbV10vNDI5NDk2NzI5NnwwKT4wJiYodGhpcy5fbGVuZ3RoW1ddLT00Mjk0OTY3Mjk2Kk4pO3JldHVybiB0aGlzfSxVLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJfdXBkYXRlIGlzIG5vdCBpbXBsZW1lbnRl''@;'; put 'put ''ZCIpfSxVLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oUSl7aWYodGhpcy5fZmluYWxpemVkKXRocm93IG5ldyBFcnJvcigiRGlnZXN0IGFscmVhZHkgY2FsbGVkIik7dGhpcy5fZmluYWxpemVkPSEwO3ZhciBqPXRoaXMuX2RpZ2VzdCgpO3ZvaWQgMCE9PVEmJihqPWoudG9TdHJpbmcoUSkp''@;'; put 'put ''LHRoaXMuX2Jsb2NrLmZpbGwoMCksdGhpcy5fYmxvY2tPZmZzZXQ9MDtmb3IodmFyIHJlPTA7cmU8NDsrK3JlKXRoaXMuX2xlbmd0aFtyZV09MDtyZXR1cm4gan0sVS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiX2RpZ2VzdCBpcyBub3QgaW1wbGVtZW50''@;'; put 'put ''ZWQiKX0sWGUuZXhwb3J0cz1VfSwxODQ0NDooWGUsSmUsTCk9Pnt2YXIgbWU9TCg5MzE3MiksQj1tZS5CdWZmZXI7ZnVuY3Rpb24gRShVLFEpe2Zvcih2YXIgaiBpbiBVKVFbal09VVtqXX1mdW5jdGlvbiBFZShVLFEsail7cmV0dXJuIEIoVSxRLGopfUIuZnJvbSYmQi5hbGxvYyYmQi5hbGxv''@;'; put 'put ''Y1Vuc2FmZSYmQi5hbGxvY1Vuc2FmZVNsb3c/WGUuZXhwb3J0cz1tZTooRShtZSxKZSksSmUuQnVmZmVyPUVlKSxFZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShCLnByb3RvdHlwZSksRShCLEVlKSxFZS5mcm9tPWZ1bmN0aW9uKFUsUSxqKXtpZigibnVtYmVyIj09dHlwZW9mIFUpdGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gQihVLFEsail9LEVlLmFsbG9jPWZ1bmN0aW9uKFUsUSxqKXtpZigibnVtYmVyIiE9dHlwZW9mIFUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciBy''@;'; put 'put ''ZT1CKFUpO3JldHVybiB2b2lkIDAhPT1RPyJzdHJpbmciPT10eXBlb2Ygaj9yZS5maWxsKFEsaik6cmUuZmlsbChRKTpyZS5maWxsKDApLHJlfSxFZS5hbGxvY1Vuc2FmZT1mdW5jdGlvbihVKXtpZigibnVtYmVyIiE9dHlwZW9mIFUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVz''@;'; put 'put ''dCBiZSBhIG51bWJlciIpO3JldHVybiBCKFUpfSxFZS5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oVSl7aWYoIm51bWJlciIhPXR5cGVvZiBVKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gbWUuU2xvd0J1ZmZlcihVKX19LDM3MDg0OihY''@;'; put 'put ''ZSxKZSxMKT0+e3ZhciBtZT1KZTttZS51dGlscz1MKDI5Mjk5KSxtZS5jb21tb249TCgzMzgwMCksbWUuc2hhPUwoNTQ5NjIpLG1lLnJpcGVtZD1MKDk5NDU4KSxtZS5obWFjPUwoMTIxOTQpLG1lLnNoYTE9bWUuc2hhLnNoYTEsbWUuc2hhMjU2PW1lLnNoYS5zaGEyNTYsbWUuc2hhMjI0PW1l''@;'; put 'put ''LnNoYS5zaGEyMjQsbWUuc2hhMzg0PW1lLnNoYS5zaGEzODQsbWUuc2hhNTEyPW1lLnNoYS5zaGE1MTIsbWUucmlwZW1kMTYwPW1lLnJpcGVtZC5yaXBlbWQxNjB9LDMzODAwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgyOTI5OSksQj1MKDMyMzkxKTtmdW5jdGlvbiBFKCl7''@;'; put 'put ''dGhpcy5wZW5kaW5nPW51bGwsdGhpcy5wZW5kaW5nVG90YWw9MCx0aGlzLmJsb2NrU2l6ZT10aGlzLmNvbnN0cnVjdG9yLmJsb2NrU2l6ZSx0aGlzLm91dFNpemU9dGhpcy5jb25zdHJ1Y3Rvci5vdXRTaXplLHRoaXMuaG1hY1N0cmVuZ3RoPXRoaXMuY29uc3RydWN0b3IuaG1hY1N0cmVuZ3Ro''@;'; put 'put ''LHRoaXMucGFkTGVuZ3RoPXRoaXMuY29uc3RydWN0b3IucGFkTGVuZ3RoLzgsdGhpcy5lbmRpYW49ImJpZyIsdGhpcy5fZGVsdGE4PXRoaXMuYmxvY2tTaXplLzgsdGhpcy5fZGVsdGEzMj10aGlzLmJsb2NrU2l6ZS8zMn1KZS5CbG9ja0hhc2g9RSxFLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rp''@;'; put 'put ''b24oVSxRKXtpZihVPW1lLnRvQXJyYXkoVSxRKSx0aGlzLnBlbmRpbmc9dGhpcy5wZW5kaW5nP3RoaXMucGVuZGluZy5jb25jYXQoVSk6VSx0aGlzLnBlbmRpbmdUb3RhbCs9VS5sZW5ndGgsdGhpcy5wZW5kaW5nLmxlbmd0aD49dGhpcy5fZGVsdGE4KXt2YXIgaj0oVT10aGlzLnBlbmRpbmcp''@;'; put 'put ''Lmxlbmd0aCV0aGlzLl9kZWx0YTg7dGhpcy5wZW5kaW5nPVUuc2xpY2UoVS5sZW5ndGgtaixVLmxlbmd0aCksMD09PXRoaXMucGVuZGluZy5sZW5ndGgmJih0aGlzLnBlbmRpbmc9bnVsbCksVT1tZS5qb2luMzIoVSwwLFUubGVuZ3RoLWosdGhpcy5lbmRpYW4pO2Zvcih2YXIgcmU9MDtyZTxV''@;'; put 'put ''Lmxlbmd0aDtyZSs9dGhpcy5fZGVsdGEzMil0aGlzLl91cGRhdGUoVSxyZSxyZSt0aGlzLl9kZWx0YTMyKX1yZXR1cm4gdGhpc30sRS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKFUpe3JldHVybiB0aGlzLnVwZGF0ZSh0aGlzLl9wYWQoKSksQihudWxsPT09dGhpcy5wZW5kaW5nKSx0aGlz''@;'; put 'put ''Ll9kaWdlc3QoVSl9LEUucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24oKXt2YXIgVT10aGlzLnBlbmRpbmdUb3RhbCxRPXRoaXMuX2RlbHRhOCxqPVEtKFUrdGhpcy5wYWRMZW5ndGgpJVEscmU9bmV3IEFycmF5KGordGhpcy5wYWRMZW5ndGgpO3JlWzBdPTEyODtmb3IodmFyIGFlPTE7YWU8ajth''@;'; put 'put ''ZSsrKXJlW2FlXT0wO2lmKFU8PD0zLCJiaWciPT09dGhpcy5lbmRpYW4pe2Zvcih2YXIgWT04O1k8dGhpcy5wYWRMZW5ndGg7WSsrKXJlW2FlKytdPTA7cmVbYWUrK109MCxyZVthZSsrXT0wLHJlW2FlKytdPTAscmVbYWUrK109MCxyZVthZSsrXT1VPj4+MjQmMjU1LHJlW2FlKytdPVU+Pj4x''@;'; put 'put ''NiYyNTUscmVbYWUrK109VT4+PjgmMjU1LHJlW2FlKytdPTI1NSZVfWVsc2UgZm9yKHJlW2FlKytdPTI1NSZVLHJlW2FlKytdPVU+Pj44JjI1NSxyZVthZSsrXT1VPj4+MTYmMjU1LHJlW2FlKytdPVU+Pj4yNCYyNTUscmVbYWUrK109MCxyZVthZSsrXT0wLHJlW2FlKytdPTAscmVbYWUrK109''@;'; put 'put ''MCxZPTg7WTx0aGlzLnBhZExlbmd0aDtZKyspcmVbYWUrK109MDtyZXR1cm4gcmV9fSwxMjE5NDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoMjkyOTkpLEI9TCgzMjM5MSk7ZnVuY3Rpb24gRShFZSxVLFEpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEUpKXJldHVybiBuZXcgRShF''@;'; put 'put ''ZSxVLFEpO3RoaXMuSGFzaD1FZSx0aGlzLmJsb2NrU2l6ZT1FZS5ibG9ja1NpemUvOCx0aGlzLm91dFNpemU9RWUub3V0U2l6ZS84LHRoaXMuaW5uZXI9bnVsbCx0aGlzLm91dGVyPW51bGwsdGhpcy5faW5pdChtZS50b0FycmF5KFUsUSkpfVhlLmV4cG9ydHM9RSxFLnByb3RvdHlwZS5faW5p''@;'; put 'put ''dD1mdW5jdGlvbihVKXtVLmxlbmd0aD50aGlzLmJsb2NrU2l6ZSYmKFU9KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZShVKS5kaWdlc3QoKSksQihVLmxlbmd0aDw9dGhpcy5ibG9ja1NpemUpO2Zvcih2YXIgUT1VLmxlbmd0aDtRPHRoaXMuYmxvY2tTaXplO1ErKylVLnB1c2goMCk7Zm9yKFE9MDtR''@;'; put 'put ''PFUubGVuZ3RoO1ErKylVW1FdXj01NDtmb3IodGhpcy5pbm5lcj0obmV3IHRoaXMuSGFzaCkudXBkYXRlKFUpLFE9MDtRPFUubGVuZ3RoO1ErKylVW1FdXj0xMDY7dGhpcy5vdXRlcj0obmV3IHRoaXMuSGFzaCkudXBkYXRlKFUpfSxFLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oVSxRKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5pbm5lci51cGRhdGUoVSxRKSx0aGlzfSxFLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oVSl7cmV0dXJuIHRoaXMub3V0ZXIudXBkYXRlKHRoaXMuaW5uZXIuZGlnZXN0KCkpLHRoaXMub3V0ZXIuZGlnZXN0KFUpfX0sOTk0NTg6KFhlLEplLEwpPT57InVzZSBzdHJpY3Qi''@;'; put 'put ''O3ZhciBtZT1MKDI5Mjk5KSxCPUwoMzM4MDApLEU9bWUucm90bDMyLEVlPW1lLnN1bTMyLFU9bWUuc3VtMzJfMyxRPW1lLnN1bTMyXzQsaj1CLkJsb2NrSGFzaDtmdW5jdGlvbiByZSgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHJlKSlyZXR1cm4gbmV3IHJlO2ouY2FsbCh0aGlzKSx0aGlzLmg9''@;'; put 'put ''WzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OCwzMjg1Mzc3NTIwXSx0aGlzLmVuZGlhbj0ibGl0dGxlIn1mdW5jdGlvbiBhZShzZSxvZSxjZSxkZSl7cmV0dXJuIHNlPD0xNT9vZV5jZV5kZTpzZTw9MzE/b2UmY2V8fm9lJmRlOnNlPD00Nz8ob2V8fmNlKV5kZTpz''@;'; put 'put ''ZTw9NjM/b2UmZGV8Y2UmfmRlOm9lXihjZXx+ZGUpfWZ1bmN0aW9uIFcoc2Upe3JldHVybiBzZTw9MTU/MTM1MjgyOTkyNjpzZTw9MzE/MTU0ODYwMzY4NDpzZTw9NDc/MTgzNjA3MjY5MTpzZTw9NjM/MjA1Mzk5NDIxNzowfW1lLmluaGVyaXRzKHJlLGopLEplLnJpcGVtZDE2MD1yZSxyZS5i''@;'; put 'put ''bG9ja1NpemU9NTEyLHJlLm91dFNpemU9MTYwLHJlLmhtYWNTdHJlbmd0aD0xOTIscmUucGFkTGVuZ3RoPTY0LHJlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKG9lLGNlKXtmb3IodmFyIGRlPXRoaXMuaFswXSx2ZT10aGlzLmhbMV0sQWU9dGhpcy5oWzJdLGtlPXRoaXMuaFszXSxTZT10''@;'; put 'put ''aGlzLmhbNF0sSWU9ZGUsVGU9dmUsTWU9QWUsaGU9a2UsTz1TZSx6PTA7ejw4MDt6Kyspe3ZhciBlZT1FZShFKFEoZGUsYWUoeix2ZSxBZSxrZSksb2VbTlt6XStjZV0sKHNlPXopPD0xNT8wOnNlPD0zMT8xNTE4NTAwMjQ5OnNlPD00Nz8xODU5Nzc1MzkzOnNlPD02Mz8yNDAwOTU5NzA4OjI4''@;'; put 'put ''NDA4NTM4MzgpLEtbel0pLFNlKTtkZT1TZSxTZT1rZSxrZT1FKEFlLDEwKSxBZT12ZSx2ZT1lZSxlZT1FZShFKFEoSWUsYWUoNzkteixUZSxNZSxoZSksb2VbdGVbel0rY2VdLFcoeikpLEpbel0pLE8pLEllPU8sTz1oZSxoZT1FKE1lLDEwKSxNZT1UZSxUZT1lZX12YXIgc2U7ZWU9VSh0aGlz''@;'; put 'put ''LmhbMV0sQWUsaGUpLHRoaXMuaFsxXT1VKHRoaXMuaFsyXSxrZSxPKSx0aGlzLmhbMl09VSh0aGlzLmhbM10sU2UsSWUpLHRoaXMuaFszXT1VKHRoaXMuaFs0XSxkZSxUZSksdGhpcy5oWzRdPVUodGhpcy5oWzBdLHZlLE1lKSx0aGlzLmhbMF09ZWV9LHJlLnByb3RvdHlwZS5fZGlnZXN0PWZ1''@;'; put 'put ''bmN0aW9uKG9lKXtyZXR1cm4iaGV4Ij09PW9lP21lLnRvSGV4MzIodGhpcy5oLCJsaXR0bGUiKTptZS5zcGxpdDMyKHRoaXMuaCwibGl0dGxlIil9O3ZhciBOPVswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDcsNCwxMywxLDEwLDYsMTUsMywxMiwwLDksNSwyLDE0LDEx''@;'; put 'put ''LDgsMywxMCwxNCw0LDksMTUsOCwxLDIsNywwLDYsMTMsMTEsNSwxMiwxLDksMTEsMTAsMCw4LDEyLDQsMTMsMyw3LDE1LDE0LDUsNiwyLDQsMCw1LDksNywxMiwyLDEwLDE0LDEsMyw4LDExLDYsMTUsMTNdLHRlPVs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwxMCwzLDEyLDYsMTEs''@;'; put 'put ''Myw3LDAsMTMsNSwxMCwxNCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEyLDE1LDEwLDQsMSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdLEs9WzExLDE0LDE1LDEyLDUs''@;'; put 'put ''OCw3LDksMTEsMTMsMTQsMTUsNiw3LDksOCw3LDYsOCwxMywxMSw5LDcsMTUsNywxMiwxNSw5LDExLDcsMTMsMTIsMTEsMTMsNiw3LDE0LDksMTMsMTUsMTQsOCwxMyw2LDUsMTIsNyw1LDExLDEyLDE0LDE1LDE0LDE1LDksOCw5LDE0LDUsNiw4LDYsNSwxMiw5LDE1LDUsMTEsNiw4LDEzLDEy''@;'; put 'put ''LDUsMTIsMTMsMTQsMTEsOCw1LDZdLEo9WzgsOSw5LDExLDEzLDE1LDE1LDUsNyw3LDgsMTEsMTQsMTQsMTIsNiw5LDEzLDE1LDcsMTIsOCw5LDExLDcsNywxMiw3LDYsMTUsMTMsMTEsOSw3LDE1LDExLDgsNiw2LDE0LDEyLDEzLDUsMTQsMTMsMTMsNyw1LDE1LDUsOCwxMSwxNCwxNCw2LDE0''@;'; put 'put ''LDYsOSwxMiw5LDEyLDUsMTUsOCw4LDUsMTIsOSwxMiw1LDE0LDYsOCwxMyw2LDUsMTUsMTMsMTEsMTFdfSw1NDk2MjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7SmUuc2hhMT1MKDU5MDA3KSxKZS5zaGEyMjQ9TCgxMDA1NSksSmUuc2hhMjU2PUwoMTkzNDIpLEplLnNoYTM4ND1MKDg4NjM0''@;'; put 'put ''KSxKZS5zaGE1MTI9TCg3MDAzOSl9LDU5MDA3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgyOTI5OSksQj1MKDMzODAwKSxFPUwoMzMxMTMpLEVlPW1lLnJvdGwzMixVPW1lLnN1bTMyLFE9bWUuc3VtMzJfNSxqPUUuZnRfMSxyZT1CLkJsb2NrSGFzaCxhZT1bMTUxODUwMDI0''@;'; put 'put ''OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMzM5NTQ2OTc4Ml07ZnVuY3Rpb24gWSgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFkpKXJldHVybiBuZXcgWTtyZS5jYWxsKHRoaXMpLHRoaXMuaD1bMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdLHRo''@;'; put 'put ''aXMuVz1uZXcgQXJyYXkoODApfW1lLmluaGVyaXRzKFkscmUpLFhlLmV4cG9ydHM9WSxZLmJsb2NrU2l6ZT01MTIsWS5vdXRTaXplPTE2MCxZLmhtYWNTdHJlbmd0aD04MCxZLnBhZExlbmd0aD02NCxZLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKE4sdGUpe2Zvcih2YXIgSz10aGlzLlcs''@;'; put 'put ''Sj0wO0o8MTY7SisrKUtbSl09Tlt0ZStKXTtmb3IoO0o8Sy5sZW5ndGg7SisrKUtbSl09RWUoS1tKLTNdXktbSi04XV5LW0otMTRdXktbSi0xNl0sMSk7dmFyIHNlPXRoaXMuaFswXSxvZT10aGlzLmhbMV0sY2U9dGhpcy5oWzJdLGRlPXRoaXMuaFszXSx2ZT10aGlzLmhbNF07Zm9yKEo9MDtK''@;'; put 'put ''PEsubGVuZ3RoO0orKyl7dmFyIEFlPX5+KEovMjApLGtlPVEoRWUoc2UsNSksaihBZSxvZSxjZSxkZSksdmUsS1tKXSxhZVtBZV0pO3ZlPWRlLGRlPWNlLGNlPUVlKG9lLDMwKSxvZT1zZSxzZT1rZX10aGlzLmhbMF09VSh0aGlzLmhbMF0sc2UpLHRoaXMuaFsxXT1VKHRoaXMuaFsxXSxvZSks''@;'; put 'put ''dGhpcy5oWzJdPVUodGhpcy5oWzJdLGNlKSx0aGlzLmhbM109VSh0aGlzLmhbM10sZGUpLHRoaXMuaFs0XT1VKHRoaXMuaFs0XSx2ZSl9LFkucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oTil7cmV0dXJuImhleCI9PT1OP21lLnRvSGV4MzIodGhpcy5oLCJiaWciKTptZS5zcGxpdDMyKHRo''@;'; put 'put ''aXMuaCwiYmlnIil9fSwxMDA1NTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoMjkyOTkpLEI9TCgxOTM0Mik7ZnVuY3Rpb24gRSgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEUpKXJldHVybiBuZXcgRTtCLmNhbGwodGhpcyksdGhpcy5oPVszMjM4MzcxMDMyLDkxNDE1MDY2Myw4''@;'; put 'put ''MTI3MDI5OTksNDE0NDkxMjY5Nyw0MjkwNzc1ODU3LDE3NTA2MDMwMjUsMTY5NDA3NjgzOSwzMjA0MDc1NDI4XX1tZS5pbmhlcml0cyhFLEIpLFhlLmV4cG9ydHM9RSxFLmJsb2NrU2l6ZT01MTIsRS5vdXRTaXplPTIyNCxFLmhtYWNTdHJlbmd0aD0xOTIsRS5wYWRMZW5ndGg9NjQsRS5wcm90''@;'; put 'put ''b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihVKXtyZXR1cm4iaGV4Ij09PVU/bWUudG9IZXgzMih0aGlzLmguc2xpY2UoMCw3KSwiYmlnIik6bWUuc3BsaXQzMih0aGlzLmguc2xpY2UoMCw3KSwiYmlnIil9fSwxOTM0MjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoMjkyOTkpLEI9''@;'; put 'put ''TCgzMzgwMCksRT1MKDMzMTEzKSxFZT1MKDMyMzkxKSxVPW1lLnN1bTMyLFE9bWUuc3VtMzJfNCxqPW1lLnN1bTMyXzUscmU9RS5jaDMyLGFlPUUubWFqMzIsWT1FLnMwXzI1NixXPUUuczFfMjU2LE49RS5nMF8yNTYsdGU9RS5nMV8yNTYsSz1CLkJsb2NrSGFzaCxKPVsxMTE2MzUyNDA4LDE4''@;'; put 'put ''OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUz''@;'; put 'put ''OTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1''@;'; put 'put ''LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwy''@;'; put 'put ''NzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMx''@;'; put 'put ''NDc5LDMzMjkzMjUyOThdO2Z1bmN0aW9uIHNlKCl7aWYoISh0aGlzIGluc3RhbmNlb2Ygc2UpKXJldHVybiBuZXcgc2U7Sy5jYWxsKHRoaXMpLHRoaXMuaD1bMTc3OTAzMzcwMywzMTQ0MTM0Mjc3LDEwMTM5MDQyNDIsMjc3MzQ4MDc2MiwxMzU5ODkzMTE5LDI2MDA4MjI5MjQsNTI4NzM0NjM1''@;'; put 'put ''LDE1NDE0NTkyMjVdLHRoaXMuaz1KLHRoaXMuVz1uZXcgQXJyYXkoNjQpfW1lLmluaGVyaXRzKHNlLEspLFhlLmV4cG9ydHM9c2Usc2UuYmxvY2tTaXplPTUxMixzZS5vdXRTaXplPTI1NixzZS5obWFjU3RyZW5ndGg9MTkyLHNlLnBhZExlbmd0aD02NCxzZS5wcm90b3R5cGUuX3VwZGF0ZT1m''@;'; put 'put ''dW5jdGlvbihjZSxkZSl7Zm9yKHZhciB2ZT10aGlzLlcsQWU9MDtBZTwxNjtBZSsrKXZlW0FlXT1jZVtkZStBZV07Zm9yKDtBZTx2ZS5sZW5ndGg7QWUrKyl2ZVtBZV09USh0ZSh2ZVtBZS0yXSksdmVbQWUtN10sTih2ZVtBZS0xNV0pLHZlW0FlLTE2XSk7dmFyIGtlPXRoaXMuaFswXSxTZT10''@;'; put 'put ''aGlzLmhbMV0sSWU9dGhpcy5oWzJdLFRlPXRoaXMuaFszXSxNZT10aGlzLmhbNF0saGU9dGhpcy5oWzVdLE89dGhpcy5oWzZdLHo9dGhpcy5oWzddO2ZvcihFZSh0aGlzLmsubGVuZ3RoPT09dmUubGVuZ3RoKSxBZT0wO0FlPHZlLmxlbmd0aDtBZSsrKXt2YXIgZWU9aih6LFcoTWUpLHJlKE1l''@;'; put 'put ''LGhlLE8pLHRoaXMua1tBZV0sdmVbQWVdKSxuZT1VKFkoa2UpLGFlKGtlLFNlLEllKSk7ej1PLE89aGUsaGU9TWUsTWU9VShUZSxlZSksVGU9SWUsSWU9U2UsU2U9a2Usa2U9VShlZSxuZSl9dGhpcy5oWzBdPVUodGhpcy5oWzBdLGtlKSx0aGlzLmhbMV09VSh0aGlzLmhbMV0sU2UpLHRoaXMu''@;'; put 'put ''aFsyXT1VKHRoaXMuaFsyXSxJZSksdGhpcy5oWzNdPVUodGhpcy5oWzNdLFRlKSx0aGlzLmhbNF09VSh0aGlzLmhbNF0sTWUpLHRoaXMuaFs1XT1VKHRoaXMuaFs1XSxoZSksdGhpcy5oWzZdPVUodGhpcy5oWzZdLE8pLHRoaXMuaFs3XT1VKHRoaXMuaFs3XSx6KX0sc2UucHJvdG90eXBlLl9k''@;'; put 'put ''aWdlc3Q9ZnVuY3Rpb24oY2Upe3JldHVybiJoZXgiPT09Y2U/bWUudG9IZXgzMih0aGlzLmgsImJpZyIpOm1lLnNwbGl0MzIodGhpcy5oLCJiaWciKX19LDg4NjM0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgyOTI5OSksQj1MKDcwMDM5KTtmdW5jdGlvbiBFKCl7aWYoISh0''@;'; put 'put ''aGlzIGluc3RhbmNlb2YgRSkpcmV0dXJuIG5ldyBFO0IuY2FsbCh0aGlzKSx0aGlzLmg9WzM0MTgwNzAzNjUsMzIzODM3MTAzMiwxNjU0MjcwMjUwLDkxNDE1MDY2MywyNDM4NTI5MzcwLDgxMjcwMjk5OSwzNTU0NjIzNjAsNDE0NDkxMjY5NywxNzMxNDA1NDE1LDQyOTA3NzU4NTcsMjM5NDE4''@;'; put 'put ''MDIzMSwxNzUwNjAzMDI1LDM2NzUwMDg1MjUsMTY5NDA3NjgzOSwxMjAzMDYyODEzLDMyMDQwNzU0MjhdfW1lLmluaGVyaXRzKEUsQiksWGUuZXhwb3J0cz1FLEUuYmxvY2tTaXplPTEwMjQsRS5vdXRTaXplPTM4NCxFLmhtYWNTdHJlbmd0aD0xOTIsRS5wYWRMZW5ndGg9MTI4LEUucHJvdG90''@;'; put 'put ''eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oVSl7cmV0dXJuImhleCI9PT1VP21lLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsMTIpLCJiaWciKTptZS5zcGxpdDMyKHRoaXMuaC5zbGljZSgwLDEyKSwiYmlnIil9fSw3MDAzOTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoMjkyOTkpLEI9''@;'; put 'put ''TCgzMzgwMCksRT1MKDMyMzkxKSxFZT1tZS5yb3RyNjRfaGksVT1tZS5yb3RyNjRfbG8sUT1tZS5zaHI2NF9oaSxqPW1lLnNocjY0X2xvLHJlPW1lLnN1bTY0LGFlPW1lLnN1bTY0X2hpLFk9bWUuc3VtNjRfbG8sVz1tZS5zdW02NF80X2hpLE49bWUuc3VtNjRfNF9sbyx0ZT1tZS5zdW02NF81''@;'; put 'put ''X2hpLEs9bWUuc3VtNjRfNV9sbyxKPUIuQmxvY2tIYXNoLHNlPVsxMTE2MzUyNDA4LDM2MDk3Njc0NTgsMTg5OTQ0NzQ0MSw2MDI4OTE3MjUsMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5LDM5MjEwMDk1NzMsMjE3MzI5NTU0OCw5NjE5ODcxNjMsNDA4MTYyODQ3MiwxNTA4OTcwOTkzLDMwNTM4MzQy''@;'; put 'put ''NjUsMjQ1MzYzNTc0OCwyOTM3NjcxNTc5LDI4NzA3NjMyMjEsMzY2NDYwOTU2MCwzNjI0MzgxMDgwLDI3MzQ4ODMzOTQsMzEwNTk4NDAxLDExNjQ5OTY1NDIsNjA3MjI1Mjc4LDEzMjM2MTA3NjQsMTQyNjg4MTk4NywzNTkwMzA0OTk0LDE5MjUwNzgzODgsNDA2ODE4MjM4MywyMTYyMDc4MjA2''@;'; put 'put ''LDk5MTMzNjExMywyNjE0ODg4MTAzLDYzMzgwMzMxNywzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgsMzgzNTM5MDQwMSwyNjY2NjEzNDU4LDQwMjIyMjQ3NzQsOTQ0NzExMTM5LDI2NDM0NzA3OCwyMzQxMjYyNzczLDYwNDgwNzYyOCwyMDA3ODAwOTMzLDc3MDI1NTk4MywxNDk1OTkwOTAxLDEyNDkx''@;'; put 'put ''NTAxMjIsMTg1NjQzMTIzNSwxNTU1MDgxNjkyLDMxNzUyMTgxMzIsMTk5NjA2NDk4NiwyMTk4OTUwODM3LDI1NTQyMjA4ODIsMzk5OTcxOTMzOSwyODIxODM0MzQ5LDc2Njc4NDAxNiwyOTUyOTk2ODA4LDI1NjY1OTQ4NzksMzIxMDMxMzY3MSwzMjAzMzM3OTU2LDMzMzY1NzE4OTEsMTAzNDQ1''@;'; put 'put ''NzAyNiwzNTg0NTI4NzExLDI0NjY5NDg5MDEsMTEzOTI2OTkzLDM3NTgzMjYzODMsMzM4MjQxODk1LDE2ODcxNzkzNiw2NjYzMDcyMDUsMTE4ODE3OTk2NCw3NzM1Mjk5MTIsMTU0NjA0NTczNCwxMjk0NzU3MzcyLDE1MjI4MDU0ODUsMTM5NjE4MjI5MSwyNjQzODMzODIzLDE2OTUxODM3MDAs''@;'; put 'put ''MjM0MzUyNzM5MCwxOTg2NjYxMDUxLDEwMTQ0Nzc0ODAsMjE3NzAyNjM1MCwxMjA2NzU5MTQyLDI0NTY5NTYwMzcsMzQ0MDc3NjI3LDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCwyODIwMzAyNDExLDMxNTg0NTQyNzMsMzI1OTczMDgwMCwzNTA1OTUyNjU3LDMzNDU3NjQ3NzEsMTA2MjE3MDA4LDM1''@;'; put 'put ''MTYwNjU4MTcsMzYwNjAwODM0NCwzNjAwMzUyODA0LDE0MzI3MjU3NzYsNDA5NDU3MTkwOSwxNDY3MDMxNTk0LDI3NTQyMzM0NCw4NTExNjk3MjAsNDMwMjI3NzM0LDMxMDA4MjM3NTIsNTA2OTQ4NjE2LDEzNjMyNTgxOTUsNjU5MDYwNTU2LDM3NTA2ODU1OTMsODgzOTk3ODc3LDM3ODUwNTAy''@;'; put 'put ''ODAsOTU4MTM5NTcxLDMzMTgzMDc0MjcsMTMyMjgyMjIxOCwzODEyNzIzNDAzLDE1MzcwMDIwNjMsMjAwMzAzNDk5NSwxNzQ3ODczNzc5LDM2MDIwMzY4OTksMTk1NTU2MjIyMiwxNTc1OTkwMDEyLDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCwyMjI3NzMwNDUyLDI3MTY5MDQzMDYsMjM2MTg1MjQy''@;'; put 'put ''NCw0NDI3NzYwNDQsMjQyODQzNjQ3NCw1OTM2OTgzNDQsMjc1NjczNDE4NywzNzMzMTEwMjQ5LDMyMDQwMzE0NzksMjk5OTM1MTU3MywzMzI5MzI1Mjk4LDM4MTU5MjA0MjcsMzM5MTU2OTYxNCwzOTI4MzgzOTAwLDM1MTUyNjcyNzEsNTY2MjgwNzExLDM5NDAxODc2MDYsMzQ1NDA2OTUzNCw0''@;'; put 'put ''MTE4NjMwMjcxLDQwMDAyMzk5OTIsMTE2NDE4NDc0LDE5MTQxMzg1NTQsMTc0MjkyNDIxLDI3MzEwNTUyNzAsMjg5MzgwMzU2LDMyMDM5OTMwMDYsNDYwMzkzMjY5LDMyMDYyMDMxNSw2ODU0NzE3MzMsNTg3NDk2ODM2LDg1MjE0Mjk3MSwxMDg2NzkyODUxLDEwMTcwMzYyOTgsMzY1NTQzMTAw''@;'; put 'put ''LDExMjYwMDA1ODAsMjYxODI5NzY3NiwxMjg4MDMzNDcwLDM0MDk4NTUxNTgsMTUwMTUwNTk0OCw0MjM0NTA5ODY2LDE2MDcxNjc5MTUsOTg3MTY3NDY4LDE4MTY0MDIzMTYsMTI0NjE4OTU5MV07ZnVuY3Rpb24gb2UoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBvZSkpcmV0dXJuIG5ldyBvZTtK''@;'; put 'put ''LmNhbGwodGhpcyksdGhpcy5oPVsxNzc5MDMzNzAzLDQwODkyMzU3MjAsMzE0NDEzNDI3NywyMjI3ODczNTk1LDEwMTM5MDQyNDIsNDI3MTE3NTcyMywyNzczNDgwNzYyLDE1OTU3NTAxMjksMTM1OTg5MzExOSwyOTE3NTY1MTM3LDI2MDA4MjI5MjQsNzI1NTExMTk5LDUyODczNDYzNSw0MjE1''@;'; put 'put ''Mzg5NTQ3LDE1NDE0NTkyMjUsMzI3MDMzMjA5XSx0aGlzLms9c2UsdGhpcy5XPW5ldyBBcnJheSgxNjApfWZ1bmN0aW9uIGNlKGVlLG5lLHgsUCxWKXt2YXIgVD1lZSZ4Xn5lZSZWO3JldHVybiBUPDAmJihUKz00Mjk0OTY3Mjk2KSxUfWZ1bmN0aW9uIGRlKGVlLG5lLHgsUCxWLFQpe3ZhciBT''@;'; put 'put ''PW5lJlBefm5lJlQ7cmV0dXJuIFM8MCYmKFMrPTQyOTQ5NjcyOTYpLFN9ZnVuY3Rpb24gdmUoZWUsbmUseCxQLFYpe3ZhciBUPWVlJnheZWUmVl54JlY7cmV0dXJuIFQ8MCYmKFQrPTQyOTQ5NjcyOTYpLFR9ZnVuY3Rpb24gQWUoZWUsbmUseCxQLFYsVCl7dmFyIFM9bmUmUF5uZSZUXlAmVDty''@;'; put 'put ''ZXR1cm4gUzwwJiYoUys9NDI5NDk2NzI5NiksU31mdW5jdGlvbiBrZShlZSxuZSl7dmFyIFQ9RWUoZWUsbmUsMjgpXkVlKG5lLGVlLDIpXkVlKG5lLGVlLDcpO3JldHVybiBUPDAmJihUKz00Mjk0OTY3Mjk2KSxUfWZ1bmN0aW9uIFNlKGVlLG5lKXt2YXIgVD1VKGVlLG5lLDI4KV5VKG5lLGVl''@;'; put 'put ''LDIpXlUobmUsZWUsNyk7cmV0dXJuIFQ8MCYmKFQrPTQyOTQ5NjcyOTYpLFR9ZnVuY3Rpb24gSWUoZWUsbmUpe3ZhciBUPUVlKGVlLG5lLDE0KV5FZShlZSxuZSwxOCleRWUobmUsZWUsOSk7cmV0dXJuIFQ8MCYmKFQrPTQyOTQ5NjcyOTYpLFR9ZnVuY3Rpb24gVGUoZWUsbmUpe3ZhciBUPVUo''@;'; put 'put ''ZWUsbmUsMTQpXlUoZWUsbmUsMTgpXlUobmUsZWUsOSk7cmV0dXJuIFQ8MCYmKFQrPTQyOTQ5NjcyOTYpLFR9ZnVuY3Rpb24gTWUoZWUsbmUpe3ZhciBUPUVlKGVlLG5lLDEpXkVlKGVlLG5lLDgpXlEoZWUsbmUsNyk7cmV0dXJuIFQ8MCYmKFQrPTQyOTQ5NjcyOTYpLFR9ZnVuY3Rpb24gaGUo''@;'; put 'put ''ZWUsbmUpe3ZhciBUPVUoZWUsbmUsMSleVShlZSxuZSw4KV5qKGVlLG5lLDcpO3JldHVybiBUPDAmJihUKz00Mjk0OTY3Mjk2KSxUfWZ1bmN0aW9uIE8oZWUsbmUpe3ZhciBUPUVlKGVlLG5lLDE5KV5FZShuZSxlZSwyOSleUShlZSxuZSw2KTtyZXR1cm4gVDwwJiYoVCs9NDI5NDk2NzI5Niks''@;'; put 'put ''VH1mdW5jdGlvbiB6KGVlLG5lKXt2YXIgVD1VKGVlLG5lLDE5KV5VKG5lLGVlLDI5KV5qKGVlLG5lLDYpO3JldHVybiBUPDAmJihUKz00Mjk0OTY3Mjk2KSxUfW1lLmluaGVyaXRzKG9lLEopLFhlLmV4cG9ydHM9b2Usb2UuYmxvY2tTaXplPTEwMjQsb2Uub3V0U2l6ZT01MTIsb2UuaG1hY1N0''@;'; put 'put ''cmVuZ3RoPTE5MixvZS5wYWRMZW5ndGg9MTI4LG9lLnByb3RvdHlwZS5fcHJlcGFyZUJsb2NrPWZ1bmN0aW9uKG5lLHgpe2Zvcih2YXIgUD10aGlzLlcsVj0wO1Y8MzI7VisrKVBbVl09bmVbeCtWXTtmb3IoO1Y8UC5sZW5ndGg7Vis9Mil7dmFyIFQ9TyhQW1YtNF0sUFtWLTNdKSxTPXooUFtW''@;'; put 'put ''LTRdLFBbVi0zXSksRj1QW1YtMTRdLHllPVBbVi0xM10sQ2U9TWUoUFtWLTMwXSxQW1YtMjldKSxEZT1oZShQW1YtMzBdLFBbVi0yOV0pLFBlPVBbVi0zMl0sUWU9UFtWLTMxXTtQW1ZdPVcoVCxTLEYseWUsQ2UsRGUsUGUsUWUpLFBbVisxXT1OKFQsUyxGLHllLENlLERlLFBlLFFlKX19LG9l''@;'; put 'put ''LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKG5lLHgpe3RoaXMuX3ByZXBhcmVCbG9jayhuZSx4KTt2YXIgUD10aGlzLlcsVj10aGlzLmhbMF0sVD10aGlzLmhbMV0sUz10aGlzLmhbMl0sRj10aGlzLmhbM10seWU9dGhpcy5oWzRdLENlPXRoaXMuaFs1XSxEZT10aGlzLmhbNl0sUGU9dGhp''@;'; put 'put ''cy5oWzddLFFlPXRoaXMuaFs4XSwkZT10aGlzLmhbOV0sZ3Q9dGhpcy5oWzEwXSx3dD10aGlzLmhbMTFdLG10PXRoaXMuaFsxMl0sdnQ9dGhpcy5oWzEzXSxBdD10aGlzLmhbMTRdLGh0PXRoaXMuaFsxNV07RSh0aGlzLmsubGVuZ3RoPT09UC5sZW5ndGgpO2Zvcih2YXIgQnQ9MDtCdDxQLmxl''@;'; put 'put ''bmd0aDtCdCs9Mil7dmFyIG9uPUF0LF90PWh0LHR0PUllKFFlLCRlKSxldD1UZShRZSwkZSksbHQ9Y2UoUWUsMCxndCwwLG10KSxMdD1kZSgwLCRlLDAsd3QsMCx2dCksQ3Q9dGhpcy5rW0J0XSxmdD10aGlzLmtbQnQrMV0sSHQ9UFtCdF0sR2U9UFtCdCsxXSxVZT10ZShvbixfdCx0dCxldCxs''@;'; put 'put ''dCxMdCxDdCxmdCxIdCxHZSkseXQ9SyhvbixfdCx0dCxldCxsdCxMdCxDdCxmdCxIdCxHZSk7b249a2UoVixUKSxfdD1TZShWLFQpLHR0PXZlKFYsMCxTLDAseWUpLGV0PUFlKDAsVCwwLEYsMCxDZSk7dmFyIGp0PWFlKG9uLF90LHR0LGV0KSxKdD1ZKG9uLF90LHR0LGV0KTtBdD1tdCxodD12''@;'; put 'put ''dCxtdD1ndCx2dD13dCxndD1RZSx3dD0kZSxRZT1hZShEZSxQZSxVZSx5dCksJGU9WShQZSxQZSxVZSx5dCksRGU9eWUsUGU9Q2UseWU9UyxDZT1GLFM9VixGPVQsVj1hZShVZSx5dCxqdCxKdCksVD1ZKFVlLHl0LGp0LEp0KX1yZSh0aGlzLmgsMCxWLFQpLHJlKHRoaXMuaCwyLFMsRikscmUo''@;'; put 'put ''dGhpcy5oLDQseWUsQ2UpLHJlKHRoaXMuaCw2LERlLFBlKSxyZSh0aGlzLmgsOCxRZSwkZSkscmUodGhpcy5oLDEwLGd0LHd0KSxyZSh0aGlzLmgsMTIsbXQsdnQpLHJlKHRoaXMuaCwxNCxBdCxodCl9LG9lLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKG5lKXtyZXR1cm4iaGV4Ij09PW5l''@;'; put 'put ''P21lLnRvSGV4MzIodGhpcy5oLCJiaWciKTptZS5zcGxpdDMyKHRoaXMuaCwiYmlnIil9fSwzMzExMzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIEI9TCgyOTI5OSkucm90cjMyO2Z1bmN0aW9uIEVlKFcsTix0ZSl7cmV0dXJuIFcmTl5+VyZ0ZX1mdW5jdGlvbiBVKFcsTix0ZSl7cmV0''@;'; put 'put ''dXJuIFcmTl5XJnRlXk4mdGV9ZnVuY3Rpb24gUShXLE4sdGUpe3JldHVybiBXXk5edGV9SmUuZnRfMT1mdW5jdGlvbiBFKFcsTix0ZSxLKXtyZXR1cm4gMD09PVc/RWUoTix0ZSxLKToxPT09V3x8Mz09PVc/UShOLHRlLEspOjI9PT1XP1UoTix0ZSxLKTp2b2lkIDB9LEplLmNoMzI9RWUsSmUu''@;'; put 'put ''bWFqMzI9VSxKZS5wMzI9USxKZS5zMF8yNTY9ZnVuY3Rpb24gaihXKXtyZXR1cm4gQihXLDIpXkIoVywxMyleQihXLDIyKX0sSmUuczFfMjU2PWZ1bmN0aW9uIHJlKFcpe3JldHVybiBCKFcsNileQihXLDExKV5CKFcsMjUpfSxKZS5nMF8yNTY9ZnVuY3Rpb24gYWUoVyl7cmV0dXJuIEIoVyw3''@;'; put 'put ''KV5CKFcsMTgpXlc+Pj4zfSxKZS5nMV8yNTY9ZnVuY3Rpb24gWShXKXtyZXR1cm4gQihXLDE3KV5CKFcsMTkpXlc+Pj4xMH19LDI5Mjk5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgzMjM5MSksQj1MKDgzODk0KTtmdW5jdGlvbiBFKHosZWUpe3JldHVybiEoNTUyOTYhPSg2''@;'; put 'put ''NDUxMiZ6LmNoYXJDb2RlQXQoZWUpKXx8ZWU8MHx8ZWUrMT49ei5sZW5ndGgpJiY1NjMyMD09KDY0NTEyJnouY2hhckNvZGVBdChlZSsxKSl9ZnVuY3Rpb24gUSh6KXtyZXR1cm4oej4+PjI0fHo+Pj44JjY1MjgwfHo8PDgmMTY3MTE2ODB8KDI1NSZ6KTw8MjQpPj4+MH1mdW5jdGlvbiByZSh6''@;'; put 'put ''KXtyZXR1cm4gMT09PXoubGVuZ3RoPyIwIit6Onp9ZnVuY3Rpb24gYWUoeil7cmV0dXJuIDc9PT16Lmxlbmd0aD8iMCIrejo2PT09ei5sZW5ndGg/IjAwIit6OjU9PT16Lmxlbmd0aD8iMDAwIit6OjQ9PT16Lmxlbmd0aD8iMDAwMCIrejozPT09ei5sZW5ndGg/IjAwMDAwIit6OjI9PT16Lmxl''@;'; put 'put ''bmd0aD8iMDAwMDAwIit6OjE9PT16Lmxlbmd0aD8iMDAwMDAwMCIrejp6fUplLmluaGVyaXRzPUIsSmUudG9BcnJheT1mdW5jdGlvbiBFZSh6LGVlKXtpZihBcnJheS5pc0FycmF5KHopKXJldHVybiB6LnNsaWNlKCk7aWYoIXopcmV0dXJuW107dmFyIG5lPVtdO2lmKCJzdHJpbmciPT10eXBl''@;'; put 'put ''b2YgeilpZihlZSl7aWYoImhleCI9PT1lZSlmb3IoKHo9ei5yZXBsYWNlKC9bXmEtejAtOV0rL2dpLCIiKSkubGVuZ3RoJTIhPTAmJih6PSIwIit6KSxQPTA7UDx6Lmxlbmd0aDtQKz0yKW5lLnB1c2gocGFyc2VJbnQoeltQXSt6W1ArMV0sMTYpKX1lbHNlIGZvcih2YXIgeD0wLFA9MDtQPHou''@;'; put 'put ''bGVuZ3RoO1ArKyl7dmFyIFY9ei5jaGFyQ29kZUF0KFApO1Y8MTI4P25lW3grK109VjpWPDIwNDg/KG5lW3grK109Vj4+NnwxOTIsbmVbeCsrXT02MyZWfDEyOCk6RSh6LFApPyhWPTY1NTM2KygoMTAyMyZWKTw8MTApKygxMDIzJnouY2hhckNvZGVBdCgrK1ApKSxuZVt4KytdPVY+PjE4fDI0''@;'; put 'put ''MCxuZVt4KytdPVY+PjEyJjYzfDEyOCxuZVt4KytdPVY+PjYmNjN8MTI4LG5lW3grK109NjMmVnwxMjgpOihuZVt4KytdPVY+PjEyfDIyNCxuZVt4KytdPVY+PjYmNjN8MTI4LG5lW3grK109NjMmVnwxMjgpfWVsc2UgZm9yKFA9MDtQPHoubGVuZ3RoO1ArKyluZVtQXT0wfHpbUF07cmV0dXJu''@;'; put 'put ''IG5lfSxKZS50b0hleD1mdW5jdGlvbiBVKHope2Zvcih2YXIgZWU9IiIsbmU9MDtuZTx6Lmxlbmd0aDtuZSsrKWVlKz1yZSh6W25lXS50b1N0cmluZygxNikpO3JldHVybiBlZX0sSmUuaHRvbmw9USxKZS50b0hleDMyPWZ1bmN0aW9uIGooeixlZSl7Zm9yKHZhciBuZT0iIix4PTA7eDx6Lmxl''@;'; put 'put ''bmd0aDt4Kyspe3ZhciBQPXpbeF07ImxpdHRsZSI9PT1lZSYmKFA9UShQKSksbmUrPWFlKFAudG9TdHJpbmcoMTYpKX1yZXR1cm4gbmV9LEplLnplcm8yPXJlLEplLnplcm84PWFlLEplLmpvaW4zMj1mdW5jdGlvbiBZKHosZWUsbmUseCl7dmFyIFA9bmUtZWU7bWUoUCU0PT0wKTtmb3IodmFy''@;'; put 'put ''IFY9bmV3IEFycmF5KFAvNCksVD0wLFM9ZWU7VDxWLmxlbmd0aDtUKyssUys9NClWW1RdPSgiYmlnIj09PXg/eltTXTw8MjR8eltTKzFdPDwxNnx6W1MrMl08PDh8eltTKzNdOnpbUyszXTw8MjR8eltTKzJdPDwxNnx6W1MrMV08PDh8eltTXSk+Pj4wO3JldHVybiBWfSxKZS5zcGxpdDMyPWZ1''@;'; put 'put ''bmN0aW9uIFcoeixlZSl7Zm9yKHZhciBuZT1uZXcgQXJyYXkoNCp6Lmxlbmd0aCkseD0wLFA9MDt4PHoubGVuZ3RoO3grKyxQKz00KXt2YXIgVj16W3hdOyJiaWciPT09ZWU/KG5lW1BdPVY+Pj4yNCxuZVtQKzFdPVY+Pj4xNiYyNTUsbmVbUCsyXT1WPj4+OCYyNTUsbmVbUCszXT0yNTUmVik6''@;'; put 'put ''KG5lW1ArM109Vj4+PjI0LG5lW1ArMl09Vj4+PjE2JjI1NSxuZVtQKzFdPVY+Pj44JjI1NSxuZVtQXT0yNTUmVil9cmV0dXJuIG5lfSxKZS5yb3RyMzI9ZnVuY3Rpb24gTih6LGVlKXtyZXR1cm4gej4+PmVlfHo8PDMyLWVlfSxKZS5yb3RsMzI9ZnVuY3Rpb24gdGUoeixlZSl7cmV0dXJuIHo8''@;'; put 'put ''PGVlfHo+Pj4zMi1lZX0sSmUuc3VtMzI9ZnVuY3Rpb24gSyh6LGVlKXtyZXR1cm4geitlZT4+PjB9LEplLnN1bTMyXzM9ZnVuY3Rpb24gSih6LGVlLG5lKXtyZXR1cm4geitlZStuZT4+PjB9LEplLnN1bTMyXzQ9ZnVuY3Rpb24gc2UoeixlZSxuZSx4KXtyZXR1cm4geitlZStuZSt4Pj4+MH0s''@;'; put 'put ''SmUuc3VtMzJfNT1mdW5jdGlvbiBvZSh6LGVlLG5lLHgsUCl7cmV0dXJuIHorZWUrbmUreCtQPj4+MH0sSmUuc3VtNjQ9ZnVuY3Rpb24gY2UoeixlZSxuZSx4KXt2YXIgVD14K3pbZWUrMV0+Pj4wO3pbZWVdPShUPHg/MTowKStuZSt6W2VlXT4+PjAseltlZSsxXT1UfSxKZS5zdW02NF9oaT1m''@;'; put 'put ''dW5jdGlvbiBkZSh6LGVlLG5lLHgpe3JldHVybihlZSt4Pj4+MDxlZT8xOjApK3orbmU+Pj4wfSxKZS5zdW02NF9sbz1mdW5jdGlvbiB2ZSh6LGVlLG5lLHgpe3JldHVybiBlZSt4Pj4+MH0sSmUuc3VtNjRfNF9oaT1mdW5jdGlvbiBBZSh6LGVlLG5lLHgsUCxWLFQsUyl7dmFyIEY9MCx5ZT1l''@;'; put 'put ''ZTtyZXR1cm4gRis9KHllPXllK3g+Pj4wKTxlZT8xOjAsRis9KHllPXllK1Y+Pj4wKTxWPzE6MCx6K25lK1ArVCsoRis9KHllPXllK1M+Pj4wKTxTPzE6MCk+Pj4wfSxKZS5zdW02NF80X2xvPWZ1bmN0aW9uIGtlKHosZWUsbmUseCxQLFYsVCxTKXtyZXR1cm4gZWUreCtWK1M+Pj4wfSxKZS5z''@;'; put 'put ''dW02NF81X2hpPWZ1bmN0aW9uIFNlKHosZWUsbmUseCxQLFYsVCxTLEYseWUpe3ZhciBDZT0wLERlPWVlO3JldHVybiBDZSs9KERlPURlK3g+Pj4wKTxlZT8xOjAsQ2UrPShEZT1EZStWPj4+MCk8Vj8xOjAsQ2UrPShEZT1EZStTPj4+MCk8Uz8xOjAseituZStQK1QrRisoQ2UrPShEZT1EZSt5''@;'; put 'put ''ZT4+PjApPHllPzE6MCk+Pj4wfSxKZS5zdW02NF81X2xvPWZ1bmN0aW9uIEllKHosZWUsbmUseCxQLFYsVCxTLEYseWUpe3JldHVybiBlZSt4K1YrUyt5ZT4+PjB9LEplLnJvdHI2NF9oaT1mdW5jdGlvbiBUZSh6LGVlLG5lKXtyZXR1cm4oZWU8PDMyLW5lfHo+Pj5uZSk+Pj4wfSxKZS5yb3Ry''@;'; put 'put ''NjRfbG89ZnVuY3Rpb24gTWUoeixlZSxuZSl7cmV0dXJuKHo8PDMyLW5lfGVlPj4+bmUpPj4+MH0sSmUuc2hyNjRfaGk9ZnVuY3Rpb24gaGUoeixlZSxuZSl7cmV0dXJuIHo+Pj5uZX0sSmUuc2hyNjRfbG89ZnVuY3Rpb24gTyh6LGVlLG5lKXtyZXR1cm4oejw8MzItbmV8ZWU+Pj5uZSk+Pj4w''@;'; put 'put ''fX0sNTI0Mzg6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDM3MDg0KSxCPUwoNTgxOTUpLEU9TCgzMjM5MSk7ZnVuY3Rpb24gRWUoVSl7aWYoISh0aGlzIGluc3RhbmNlb2YgRWUpKXJldHVybiBuZXcgRWUoVSk7dGhpcy5oYXNoPVUuaGFzaCx0aGlzLnByZWRSZXNpc3Q9ISFV''@;'; put 'put ''LnByZWRSZXNpc3QsdGhpcy5vdXRMZW49dGhpcy5oYXNoLm91dFNpemUsdGhpcy5taW5FbnRyb3B5PVUubWluRW50cm9weXx8dGhpcy5oYXNoLmhtYWNTdHJlbmd0aCx0aGlzLl9yZXNlZWQ9bnVsbCx0aGlzLnJlc2VlZEludGVydmFsPW51bGwsdGhpcy5LPW51bGwsdGhpcy5WPW51bGw7dmFy''@;'; put 'put ''IFE9Qi50b0FycmF5KFUuZW50cm9weSxVLmVudHJvcHlFbmN8fCJoZXgiKSxqPUIudG9BcnJheShVLm5vbmNlLFUubm9uY2VFbmN8fCJoZXgiKSxyZT1CLnRvQXJyYXkoVS5wZXJzLFUucGVyc0VuY3x8ImhleCIpO0UoUS5sZW5ndGg+PXRoaXMubWluRW50cm9weS84LCJOb3QgZW5vdWdoIGVu''@;'; put 'put ''dHJvcHkuIE1pbmltdW0gaXM6ICIrdGhpcy5taW5FbnRyb3B5KyIgYml0cyIpLHRoaXMuX2luaXQoUSxqLHJlKX1YZS5leHBvcnRzPUVlLEVlLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihRLGoscmUpe3ZhciBhZT1RLmNvbmNhdChqKS5jb25jYXQocmUpO3RoaXMuSz1uZXcgQXJyYXkodGhp''@;'; put 'put ''cy5vdXRMZW4vOCksdGhpcy5WPW5ldyBBcnJheSh0aGlzLm91dExlbi84KTtmb3IodmFyIFk9MDtZPHRoaXMuVi5sZW5ndGg7WSsrKXRoaXMuS1tZXT0wLHRoaXMuVltZXT0xO3RoaXMuX3VwZGF0ZShhZSksdGhpcy5fcmVzZWVkPTEsdGhpcy5yZXNlZWRJbnRlcnZhbD0yODE0NzQ5NzY3MTA2''@;'; put 'put ''NTZ9LEVlLnByb3RvdHlwZS5faG1hYz1mdW5jdGlvbigpe3JldHVybiBuZXcgbWUuaG1hYyh0aGlzLmhhc2gsdGhpcy5LKX0sRWUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oUSl7dmFyIGo9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLnVwZGF0ZShbMF0pO1EmJihqPWoudXBkYXRl''@;'; put 'put ''KFEpKSx0aGlzLks9ai5kaWdlc3QoKSx0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpLFEmJih0aGlzLks9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLnVwZGF0ZShbMV0pLnVwZGF0ZShRKS5kaWdlc3QoKSx0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0''@;'; put 'put ''aGlzLlYpLmRpZ2VzdCgpKX0sRWUucHJvdG90eXBlLnJlc2VlZD1mdW5jdGlvbihRLGoscmUsYWUpeyJzdHJpbmciIT10eXBlb2YgaiYmKGFlPXJlLHJlPWosaj1udWxsKSxRPUIudG9BcnJheShRLGopLHJlPUIudG9BcnJheShyZSxhZSksRShRLmxlbmd0aD49dGhpcy5taW5FbnRyb3B5Lzgs''@;'; put 'put ''Ik5vdCBlbm91Z2ggZW50cm9weS4gTWluaW11bSBpczogIit0aGlzLm1pbkVudHJvcHkrIiBiaXRzIiksdGhpcy5fdXBkYXRlKFEuY29uY2F0KHJlfHxbXSkpLHRoaXMuX3Jlc2VlZD0xfSxFZS5wcm90b3R5cGUuZ2VuZXJhdGU9ZnVuY3Rpb24oUSxqLHJlLGFlKXtpZih0aGlzLl9yZXNlZWQ+''@;'; put 'put ''dGhpcy5yZXNlZWRJbnRlcnZhbCl0aHJvdyBuZXcgRXJyb3IoIlJlc2VlZCBpcyByZXF1aXJlZCIpOyJzdHJpbmciIT10eXBlb2YgaiYmKGFlPXJlLHJlPWosaj1udWxsKSxyZSYmKHJlPUIudG9BcnJheShyZSxhZXx8ImhleCIpLHRoaXMuX3VwZGF0ZShyZSkpO2Zvcih2YXIgWT1bXTtZLmxl''@;'; put 'put ''bmd0aDxROyl0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpLFk9WS5jb25jYXQodGhpcy5WKTt2YXIgVz1ZLnNsaWNlKDAsUSk7cmV0dXJuIHRoaXMuX3VwZGF0ZShyZSksdGhpcy5fcmVzZWVkKyssQi5lbmNvZGUoVyxqKX19LDQ2OTc4OihYZSxKZSxMKT0+eyJ1''@;'; put 'put ''c2Ugc3RyaWN0Ijt2YXIgbWU9TCg2MjAzOCkuQnVmZmVyO0plLl9kYmNzPWFlO2Zvcih2YXIgQj0tMSxFZT0tMTAsVT0tMWUzLFE9bmV3IEFycmF5KDI1NikscmU9MDtyZTwyNTY7cmUrKylRW3JlXT1CO2Z1bmN0aW9uIGFlKHRlLEspe2lmKHRoaXMuZW5jb2RpbmdOYW1lPXRlLmVuY29kaW5n''@;'; put 'put ''TmFtZSwhdGUpdGhyb3cgbmV3IEVycm9yKCJEQkNTIGNvZGVjIGlzIGNhbGxlZCB3aXRob3V0IHRoZSBkYXRhLiIpO2lmKCF0ZS50YWJsZSl0aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nICciK3RoaXMuZW5jb2RpbmdOYW1lKyInIGhhcyBubyBkYXRhLiIpO3ZhciBKPXRlLnRhYmxlKCk7dGhp''@;'; put 'put ''cy5kZWNvZGVUYWJsZXM9W10sdGhpcy5kZWNvZGVUYWJsZXNbMF09US5zbGljZSgwKSx0aGlzLmRlY29kZVRhYmxlU2VxPVtdO2Zvcih2YXIgc2U9MDtzZTxKLmxlbmd0aDtzZSsrKXRoaXMuX2FkZERlY29kZUNodW5rKEpbc2VdKTt0aGlzLmRlZmF1bHRDaGFyVW5pY29kZT1LLmRlZmF1bHRD''@;'; put 'put ''aGFyVW5pY29kZSx0aGlzLmVuY29kZVRhYmxlPVtdLHRoaXMuZW5jb2RlVGFibGVTZXE9W107dmFyIG9lPXt9O2lmKHRlLmVuY29kZVNraXBWYWxzKWZvcihzZT0wO3NlPHRlLmVuY29kZVNraXBWYWxzLmxlbmd0aDtzZSsrKXt2YXIgY2U9dGUuZW5jb2RlU2tpcFZhbHNbc2VdO2lmKCJudW1i''@;'; put 'put ''ZXIiPT10eXBlb2YgY2Upb2VbY2VdPSEwO2Vsc2UgZm9yKHZhciBkZT1jZS5mcm9tO2RlPD1jZS50bztkZSsrKW9lW2RlXT0hMH1pZih0aGlzLl9maWxsRW5jb2RlVGFibGUoMCwwLG9lKSx0ZS5lbmNvZGVBZGQpZm9yKHZhciB2ZSBpbiB0ZS5lbmNvZGVBZGQpT2JqZWN0LnByb3RvdHlwZS5o''@;'; put 'put ''YXNPd25Qcm9wZXJ0eS5jYWxsKHRlLmVuY29kZUFkZCx2ZSkmJnRoaXMuX3NldEVuY29kZUNoYXIodmUuY2hhckNvZGVBdCgwKSx0ZS5lbmNvZGVBZGRbdmVdKTtpZih0aGlzLmRlZkNoYXJTQj10aGlzLmVuY29kZVRhYmxlWzBdW0suZGVmYXVsdENoYXJTaW5nbGVCeXRlLmNoYXJDb2RlQXQo''@;'; put 'put ''MCldLHRoaXMuZGVmQ2hhclNCPT09QiYmKHRoaXMuZGVmQ2hhclNCPXRoaXMuZW5jb2RlVGFibGVbMF1bIj8iXSksdGhpcy5kZWZDaGFyU0I9PT1CJiYodGhpcy5kZWZDaGFyU0I9Ij8iLmNoYXJDb2RlQXQoMCkpLCJmdW5jdGlvbiI9PXR5cGVvZiB0ZS5nYjE4MDMwKXt0aGlzLmdiMTgwMzA9''@;'; put 'put ''dGUuZ2IxODAzMCgpO3ZhciBBZT10aGlzLmRlY29kZVRhYmxlcy5sZW5ndGgsa2U9dGhpcy5kZWNvZGVUYWJsZXNbQWVdPVEuc2xpY2UoMCksU2U9dGhpcy5kZWNvZGVUYWJsZXMubGVuZ3RoLEllPXRoaXMuZGVjb2RlVGFibGVzW1NlXT1RLnNsaWNlKDApO2ZvcihzZT0xMjk7c2U8PTI1NDtz''@;'; put 'put ''ZSsrKXt2YXIgTWU9dGhpcy5kZWNvZGVUYWJsZXNbVS10aGlzLmRlY29kZVRhYmxlc1swXVtzZV1dO2ZvcihkZT00ODtkZTw9NTc7ZGUrKylNZVtkZV09VS1BZX1mb3Ioc2U9MTI5O3NlPD0yNTQ7c2UrKylrZVtzZV09VS1TZTtmb3Ioc2U9NDg7c2U8PTU3O3NlKyspSWVbc2VdPS0yfX1mdW5j''@;'; put 'put ''dGlvbiBZKHRlLEspe3RoaXMubGVhZFN1cnJvZ2F0ZT0tMSx0aGlzLnNlcU9iaj12b2lkIDAsdGhpcy5lbmNvZGVUYWJsZT1LLmVuY29kZVRhYmxlLHRoaXMuZW5jb2RlVGFibGVTZXE9Sy5lbmNvZGVUYWJsZVNlcSx0aGlzLmRlZmF1bHRDaGFyU2luZ2xlQnl0ZT1LLmRlZkNoYXJTQix0aGlz''@;'; put 'put ''LmdiMTgwMzA9Sy5nYjE4MDMwfWZ1bmN0aW9uIFcodGUsSyl7dGhpcy5ub2RlSWR4PTAsdGhpcy5wcmV2QnVmPW1lLmFsbG9jKDApLHRoaXMuZGVjb2RlVGFibGVzPUsuZGVjb2RlVGFibGVzLHRoaXMuZGVjb2RlVGFibGVTZXE9Sy5kZWNvZGVUYWJsZVNlcSx0aGlzLmRlZmF1bHRDaGFyVW5p''@;'; put 'put ''Y29kZT1LLmRlZmF1bHRDaGFyVW5pY29kZSx0aGlzLmdiMTgwMzA9Sy5nYjE4MDMwfWZ1bmN0aW9uIE4odGUsSyl7aWYodGVbMF0+SylyZXR1cm4tMTtmb3IodmFyIEo9MCxzZT10ZS5sZW5ndGg7SjxzZS0xOyl7dmFyIG9lPUorTWF0aC5mbG9vcigoc2UtSisxKS8yKTt0ZVtvZV08PUs/Sj1v''@;'; put 'put ''ZTpzZT1vZX1yZXR1cm4gSn1hZS5wcm90b3R5cGUuZW5jb2Rlcj1ZLGFlLnByb3RvdHlwZS5kZWNvZGVyPVcsYWUucHJvdG90eXBlLl9nZXREZWNvZGVUcmllTm9kZT1mdW5jdGlvbih0ZSl7Zm9yKHZhciBLPVtdO3RlPjA7dGU+Pj04KUsucHVzaCgyNTUmdGUpOzA9PUsubGVuZ3RoJiZLLnB1''@;'; put 'put ''c2goMCk7Zm9yKHZhciBKPXRoaXMuZGVjb2RlVGFibGVzWzBdLHNlPUsubGVuZ3RoLTE7c2U+MDtzZS0tKXt2YXIgb2U9SltLW3NlXV07aWYob2U9PUIpSltLW3NlXV09VS10aGlzLmRlY29kZVRhYmxlcy5sZW5ndGgsdGhpcy5kZWNvZGVUYWJsZXMucHVzaChKPVEuc2xpY2UoMCkpO2Vsc2V7''@;'; put 'put ''aWYoIShvZTw9VSkpdGhyb3cgbmV3IEVycm9yKCJPdmVyd3JpdGUgYnl0ZSBpbiAiK3RoaXMuZW5jb2RpbmdOYW1lKyIsIGFkZHI6ICIrdGUudG9TdHJpbmcoMTYpKTtKPXRoaXMuZGVjb2RlVGFibGVzW1Utb2VdfX1yZXR1cm4gSn0sYWUucHJvdG90eXBlLl9hZGREZWNvZGVDaHVuaz1mdW5j''@;'; put 'put ''dGlvbih0ZSl7dmFyIEs9cGFyc2VJbnQodGVbMF0sMTYpLEo9dGhpcy5fZ2V0RGVjb2RlVHJpZU5vZGUoSyk7SyY9MjU1O2Zvcih2YXIgc2U9MTtzZTx0ZS5sZW5ndGg7c2UrKyl7dmFyIG9lPXRlW3NlXTtpZigic3RyaW5nIj09dHlwZW9mIG9lKWZvcih2YXIgY2U9MDtjZTxvZS5sZW5ndGg7''@;'; put 'put ''KXt2YXIgZGU9b2UuY2hhckNvZGVBdChjZSsrKTtpZig1NTI5Njw9ZGUmJmRlPDU2MzIwKXt2YXIgdmU9b2UuY2hhckNvZGVBdChjZSsrKTtpZighKDU2MzIwPD12ZSYmdmU8NTczNDQpKXRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IHN1cnJvZ2F0ZSBwYWlyIGluICIrdGhpcy5lbmNvZGlu''@;'; put 'put ''Z05hbWUrIiBhdCBjaHVuayAiK3RlWzBdKTtKW0srK109NjU1MzYrMTAyNCooZGUtNTUyOTYpKyh2ZS01NjMyMCl9ZWxzZSBpZig0MDgwPGRlJiZkZTw9NDA5NSl7Zm9yKHZhciBBZT00MDk1LWRlKzIsa2U9W10sU2U9MDtTZTxBZTtTZSsrKWtlLnB1c2gob2UuY2hhckNvZGVBdChjZSsrKSk7''@;'; put 'put ''SltLKytdPUVlLXRoaXMuZGVjb2RlVGFibGVTZXEubGVuZ3RoLHRoaXMuZGVjb2RlVGFibGVTZXEucHVzaChrZSl9ZWxzZSBKW0srK109ZGV9ZWxzZXtpZigibnVtYmVyIiE9dHlwZW9mIG9lKXRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IHR5cGUgJyIrdHlwZW9mIG9lKyInIGdpdmVuIGlu''@;'; put 'put ''ICIrdGhpcy5lbmNvZGluZ05hbWUrIiBhdCBjaHVuayAiK3RlWzBdKTt2YXIgSWU9SltLLTFdKzE7Zm9yKGNlPTA7Y2U8b2U7Y2UrKylKW0srK109SWUrK319aWYoSz4yNTUpdGhyb3cgbmV3IEVycm9yKCJJbmNvcnJlY3QgY2h1bmsgaW4gIit0aGlzLmVuY29kaW5nTmFtZSsiIGF0IGFkZHIg''@;'; put 'put ''Iit0ZVswXSsiOiB0b28gbG9uZyIrSyl9LGFlLnByb3RvdHlwZS5fZ2V0RW5jb2RlQnVja2V0PWZ1bmN0aW9uKHRlKXt2YXIgSz10ZT4+ODtyZXR1cm4gdm9pZCAwPT09dGhpcy5lbmNvZGVUYWJsZVtLXSYmKHRoaXMuZW5jb2RlVGFibGVbS109US5zbGljZSgwKSksdGhpcy5lbmNvZGVUYWJs''@;'; put 'put ''ZVtLXX0sYWUucHJvdG90eXBlLl9zZXRFbmNvZGVDaGFyPWZ1bmN0aW9uKHRlLEspe3ZhciBKPXRoaXMuX2dldEVuY29kZUJ1Y2tldCh0ZSksc2U9MjU1JnRlO0pbc2VdPD1FZT90aGlzLmVuY29kZVRhYmxlU2VxW0VlLUpbc2VdXVstMV09SzpKW3NlXT09QiYmKEpbc2VdPUspfSxhZS5wcm90''@;'; put 'put ''b3R5cGUuX3NldEVuY29kZVNlcXVlbmNlPWZ1bmN0aW9uKHRlLEspe3ZhciBjZSxKPXRlWzBdLHNlPXRoaXMuX2dldEVuY29kZUJ1Y2tldChKKSxvZT0yNTUmSjtzZVtvZV08PUVlP2NlPXRoaXMuZW5jb2RlVGFibGVTZXFbRWUtc2Vbb2VdXTooY2U9e30sc2Vbb2VdIT09QiYmKGNlWy0xXT1z''@;'; put 'put ''ZVtvZV0pLHNlW29lXT1FZS10aGlzLmVuY29kZVRhYmxlU2VxLmxlbmd0aCx0aGlzLmVuY29kZVRhYmxlU2VxLnB1c2goY2UpKTtmb3IodmFyIGRlPTE7ZGU8dGUubGVuZ3RoLTE7ZGUrKyl7dmFyIHZlPWNlW0pdOyJvYmplY3QiPT10eXBlb2YgdmU/Y2U9dmU6KGNlPWNlW0pdPXt9LHZvaWQg''@;'; put 'put ''MCE9PXZlJiYoY2VbLTFdPXZlKSl9Y2VbSj10ZVt0ZS5sZW5ndGgtMV1dPUt9LGFlLnByb3RvdHlwZS5fZmlsbEVuY29kZVRhYmxlPWZ1bmN0aW9uKHRlLEssSil7Zm9yKHZhciBzZT10aGlzLmRlY29kZVRhYmxlc1t0ZV0sb2U9MDtvZTwyNTY7b2UrKyl7dmFyIGNlPXNlW29lXSxkZT1LK29l''@;'; put 'put ''O0pbZGVdfHwoY2U+PTA/dGhpcy5fc2V0RW5jb2RlQ2hhcihjZSxkZSk6Y2U8PVU/dGhpcy5fZmlsbEVuY29kZVRhYmxlKFUtY2UsZGU8PDgsSik6Y2U8PUVlJiZ0aGlzLl9zZXRFbmNvZGVTZXF1ZW5jZSh0aGlzLmRlY29kZVRhYmxlU2VxW0VlLWNlXSxkZSkpfX0sWS5wcm90b3R5cGUud3Jp''@;'; put 'put ''dGU9ZnVuY3Rpb24odGUpe2Zvcih2YXIgSz1tZS5hbGxvYyh0ZS5sZW5ndGgqKHRoaXMuZ2IxODAzMD80OjMpKSxKPXRoaXMubGVhZFN1cnJvZ2F0ZSxzZT10aGlzLnNlcU9iaixvZT0tMSxjZT0wLGRlPTA7Oyl7aWYoLTE9PT1vZSl7aWYoY2U9PXRlLmxlbmd0aClicmVhazt2YXIgdmU9dGUu''@;'; put 'put ''Y2hhckNvZGVBdChjZSsrKX1lbHNlIHZlPW9lLG9lPS0xO2lmKDU1Mjk2PD12ZSYmdmU8NTczNDQpaWYodmU8NTYzMjApe2lmKC0xPT09Sil7Sj12ZTtjb250aW51ZX1KPXZlLHZlPUJ9ZWxzZS0xIT09Sj8odmU9NjU1MzYrMTAyNCooSi01NTI5NikrKHZlLTU2MzIwKSxKPS0xKTp2ZT1CO2Vs''@;'; put 'put ''c2UtMSE9PUomJihvZT12ZSx2ZT1CLEo9LTEpO3ZhciBBZT1CO2lmKHZvaWQgMCE9PXNlJiZ2ZSE9Qil7dmFyIGtlPXNlW3ZlXTtpZigib2JqZWN0Ij09dHlwZW9mIGtlKXtzZT1rZTtjb250aW51ZX0ibnVtYmVyIj09dHlwZW9mIGtlP0FlPWtlOm51bGw9PWtlJiZ2b2lkIDAhPT0oa2U9c2Vb''@;'; put 'put ''LTFdKSYmKEFlPWtlLG9lPXZlKSxzZT12b2lkIDB9ZWxzZSBpZih2ZT49MCl7dmFyIFNlPXRoaXMuZW5jb2RlVGFibGVbdmU+PjhdO2lmKHZvaWQgMCE9PVNlJiYoQWU9U2VbMjU1JnZlXSksQWU8PUVlKXtzZT10aGlzLmVuY29kZVRhYmxlU2VxW0VlLUFlXTtjb250aW51ZX1pZihBZT09QiYm''@;'; put 'put ''dGhpcy5nYjE4MDMwKXt2YXIgSWU9Tih0aGlzLmdiMTgwMzAudUNoYXJzLHZlKTtpZigtMSE9SWUpe0FlPXRoaXMuZ2IxODAzMC5nYkNoYXJzW0llXSsodmUtdGhpcy5nYjE4MDMwLnVDaGFyc1tJZV0pLEtbZGUrK109MTI5K01hdGguZmxvb3IoQWUvMTI2MDApLEFlJT0xMjYwMCxLW2RlKytd''@;'; put 'put ''PTQ4K01hdGguZmxvb3IoQWUvMTI2MCksQWUlPTEyNjAsS1tkZSsrXT0xMjkrTWF0aC5mbG9vcihBZS8xMCksS1tkZSsrXT00OCsoQWUlPTEwKTtjb250aW51ZX19fUFlPT09QiYmKEFlPXRoaXMuZGVmYXVsdENoYXJTaW5nbGVCeXRlKSxBZTwyNTY/S1tkZSsrXT1BZTpBZTw2NTUzNj8oS1tk''@;'; put 'put ''ZSsrXT1BZT4+OCxLW2RlKytdPTI1NSZBZSk6KEtbZGUrK109QWU+PjE2LEtbZGUrK109QWU+PjgmMjU1LEtbZGUrK109MjU1JkFlKX1yZXR1cm4gdGhpcy5zZXFPYmo9c2UsdGhpcy5sZWFkU3Vycm9nYXRlPUosSy5zbGljZSgwLGRlKX0sWS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7aWYo''@;'; put 'put ''LTEhPT10aGlzLmxlYWRTdXJyb2dhdGV8fHZvaWQgMCE9PXRoaXMuc2VxT2JqKXt2YXIgdGU9bWUuYWxsb2MoMTApLEs9MDtpZih0aGlzLnNlcU9iail7dmFyIEo9dGhpcy5zZXFPYmpbLTFdO3ZvaWQgMCE9PUomJihKPDI1Nj90ZVtLKytdPUo6KHRlW0srK109Sj4+OCx0ZVtLKytdPTI1NSZK''@;'; put 'put ''KSksdGhpcy5zZXFPYmo9dm9pZCAwfXJldHVybi0xIT09dGhpcy5sZWFkU3Vycm9nYXRlJiYodGVbSysrXT10aGlzLmRlZmF1bHRDaGFyU2luZ2xlQnl0ZSx0aGlzLmxlYWRTdXJyb2dhdGU9LTEpLHRlLnNsaWNlKDAsSyl9fSxZLnByb3RvdHlwZS5maW5kSWR4PU4sVy5wcm90b3R5cGUud3Jp''@;'; put 'put ''dGU9ZnVuY3Rpb24odGUpe3ZhciBLPW1lLmFsbG9jKDIqdGUubGVuZ3RoKSxKPXRoaXMubm9kZUlkeCxzZT10aGlzLnByZXZCdWYsb2U9dGhpcy5wcmV2QnVmLmxlbmd0aCxjZT0tdGhpcy5wcmV2QnVmLmxlbmd0aDtvZT4wJiYoc2U9bWUuY29uY2F0KFtzZSx0ZS5zbGljZSgwLDEwKV0pKTtm''@;'; put 'put ''b3IodmFyIHZlPTAsQWU9MDt2ZTx0ZS5sZW5ndGg7dmUrKyl7dmFyIGRlLGtlPXZlPj0wP3RlW3ZlXTpzZVt2ZStvZV07aWYoISgoZGU9dGhpcy5kZWNvZGVUYWJsZXNbSl1ba2VdKT49MCkpaWYoZGU9PT1CKXZlPWNlLGRlPXRoaXMuZGVmYXVsdENoYXJVbmljb2RlLmNoYXJDb2RlQXQoMCk7''@;'; put 'put ''ZWxzZSBpZigtMj09PWRlKXt2YXIgU2U9Y2U+PTA/dGUuc2xpY2UoY2UsdmUrMSk6c2Uuc2xpY2UoY2Urb2UsdmUrMStvZSksSWU9MTI2MDAqKFNlWzBdLTEyOSkrMTI2MCooU2VbMV0tNDgpKzEwKihTZVsyXS0xMjkpKyhTZVszXS00OCksVGU9Tih0aGlzLmdiMTgwMzAuZ2JDaGFycyxJZSk7''@;'; put 'put ''ZGU9dGhpcy5nYjE4MDMwLnVDaGFyc1tUZV0rSWUtdGhpcy5nYjE4MDMwLmdiQ2hhcnNbVGVdfWVsc2V7aWYoZGU8PVUpe0o9VS1kZTtjb250aW51ZX1pZighKGRlPD1FZSkpdGhyb3cgbmV3IEVycm9yKCJpY29udi1saXRlIGludGVybmFsIGVycm9yOiBpbnZhbGlkIGRlY29kaW5nIHRhYmxl''@;'; put 'put ''IHZhbHVlICIrZGUrIiBhdCAiK0orIi8iK2tlKTtmb3IodmFyIE1lPXRoaXMuZGVjb2RlVGFibGVTZXFbRWUtZGVdLGhlPTA7aGU8TWUubGVuZ3RoLTE7aGUrKylLW0FlKytdPTI1NSYoZGU9TWVbaGVdKSxLW0FlKytdPWRlPj44O2RlPU1lW01lLmxlbmd0aC0xXX1pZihkZT42NTUzNSl7ZGUt''@;'; put 'put ''PTY1NTM2O3ZhciBPPTU1Mjk2K01hdGguZmxvb3IoZGUvMTAyNCk7S1tBZSsrXT0yNTUmTyxLW0FlKytdPU8+PjgsZGU9NTYzMjArZGUlMTAyNH1LW0FlKytdPTI1NSZkZSxLW0FlKytdPWRlPj44LEo9MCxjZT12ZSsxfXJldHVybiB0aGlzLm5vZGVJZHg9Six0aGlzLnByZXZCdWY9Y2U+PTA/''@;'; put 'put ''dGUuc2xpY2UoY2UpOnNlLnNsaWNlKGNlK29lKSxLLnNsaWNlKDAsQWUpLnRvU3RyaW5nKCJ1Y3MyIil9LFcucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe2Zvcih2YXIgdGU9IiI7dGhpcy5wcmV2QnVmLmxlbmd0aD4wOyl7dGUrPXRoaXMuZGVmYXVsdENoYXJVbmljb2RlO3ZhciBLPXRoaXMu''@;'; put 'put ''cHJldkJ1Zi5zbGljZSgxKTt0aGlzLnByZXZCdWY9bWUuYWxsb2MoMCksdGhpcy5ub2RlSWR4PTAsSy5sZW5ndGg+MCYmKHRlKz10aGlzLndyaXRlKEspKX1yZXR1cm4gdGhpcy5ub2RlSWR4PTAsdGV9fSw0OTUwNDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7WGUuZXhwb3J0cz17c2hpZnRq''@;'; put 'put ''aXM6e3R5cGU6Il9kYmNzIix0YWJsZTpmdW5jdGlvbigpe3JldHVybiBMKDI3MDE0KX0sZW5jb2RlQWRkOnsiXHhhNSI6OTIsIlx1MjAzZSI6MTI2fSxlbmNvZGVTa2lwVmFsczpbe2Zyb206NjA3MzYsdG86NjM4MDh9XX0sY3NzaGlmdGppczoic2hpZnRqaXMiLG1za2Fuamk6InNoaWZ0amlz''@;'; put 'put ''IixzamlzOiJzaGlmdGppcyIsd2luZG93czMxajoic2hpZnRqaXMiLG1zMzFqOiJzaGlmdGppcyIseHNqaXM6InNoaWZ0amlzIix3aW5kb3dzOTMyOiJzaGlmdGppcyIsbXM5MzI6InNoaWZ0amlzIiw5MzI6InNoaWZ0amlzIixjcDkzMjoic2hpZnRqaXMiLGV1Y2pwOnt0eXBlOiJfZGJjcyIs''@;'; put 'put ''dGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gTCgzMTUzMil9LGVuY29kZUFkZDp7Ilx4YTUiOjkyLCJcdTIwM2UiOjEyNn19LGdiMjMxMjoiY3A5MzYiLGdiMjMxMjgwOiJjcDkzNiIsZ2IyMzEyMTk4MDoiY3A5MzYiLGNzZ2IyMzEyOiJjcDkzNiIsY3Npc281OGdiMjMxMjgwOiJjcDkzNiIsZXVj''@;'; put 'put ''Y246ImNwOTM2Iix3aW5kb3dzOTM2OiJjcDkzNiIsbXM5MzY6ImNwOTM2Iiw5MzY6ImNwOTM2IixjcDkzNjp7dHlwZToiX2RiY3MiLHRhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIEwoMTMzMzYpfX0sZ2JrOnt0eXBlOiJfZGJjcyIsdGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gTCgxMzMzNikuY29u''@;'; put 'put ''Y2F0KEwoNDQzNDYpKX19LHhnYms6ImdiayIsaXNvaXI1ODoiZ2JrIixnYjE4MDMwOnt0eXBlOiJfZGJjcyIsdGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gTCgxMzMzNikuY29uY2F0KEwoNDQzNDYpKX0sZ2IxODAzMDpmdW5jdGlvbigpe3JldHVybiBMKDM2MjU4KX0sZW5jb2RlU2tpcFZhbHM6''@;'; put 'put ''WzEyOF0sZW5jb2RlQWRkOnsiXHUyMGFjIjo0MTY5OX19LGNoaW5lc2U6ImdiMTgwMzAiLHdpbmRvd3M5NDk6ImNwOTQ5Iixtczk0OToiY3A5NDkiLDk0OToiY3A5NDkiLGNwOTQ5Ont0eXBlOiJfZGJjcyIsdGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gTCg3NzM0OCl9fSxjc2V1Y2tyOiJjcDk0''@;'; put 'put ''OSIsY3Nrc2M1NjAxMTk4NzoiY3A5NDkiLGV1Y2tyOiJjcDk0OSIsaXNvaXIxNDk6ImNwOTQ5Iixrb3JlYW46ImNwOTQ5Iixrc2M1NjAxMTk4NzoiY3A5NDkiLGtzYzU2MDExOTg5OiJjcDk0OSIsa3NjNTYwMToiY3A5NDkiLHdpbmRvd3M5NTA6ImNwOTUwIixtczk1MDoiY3A5NTAiLDk1MDoi''@;'; put 'put ''Y3A5NTAiLGNwOTUwOnt0eXBlOiJfZGJjcyIsdGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gTCg3NDI4NCl9fSxiaWc1OiJiaWc1aGtzY3MiLGJpZzVoa3Njczp7dHlwZToiX2RiY3MiLHRhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIEwoNzQyODQpLmNvbmNhdChMKDYzNDgwKSl9LGVuY29kZVNraXBW''@;'; put 'put ''YWxzOls0MTY3Nl19LGNuYmlnNToiYmlnNWhrc2NzIixjc2JpZzU6ImJpZzVoa3NjcyIseHhiaWc1OiJiaWc1aGtzY3MifX0sNzk3MTQ6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO2Zvcih2YXIgbWU9W0woNTY5MTcpLEwoODI2MDYpLEwoOTM3NjApLEwoMjg3NzgpLEwoNDEzMTMpLEwoNjg2''@;'; put 'put ''MTkpLEwoNzQxMTQpLEwoNDY5NzgpLEwoNDk1MDQpXSxCPTA7QjxtZS5sZW5ndGg7QisrKXt2YXIgRT1tZVtCXTtmb3IodmFyIEVlIGluIEUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEUsRWUpJiYoSmVbRWVdPUVbRWVdKX19LDU2OTE3OihYZSxKZSxMKT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgbWU9TCg2MjAzOCkuQnVmZmVyO2Z1bmN0aW9uIEIoYWUsWSl7dGhpcy5lbmM9YWUuZW5jb2RpbmdOYW1lLHRoaXMuYm9tQXdhcmU9YWUuYm9tQXdhcmUsImJhc2U2NCI9PT10aGlzLmVuYz90aGlzLmVuY29kZXI9UToiY2VzdTgiPT09dGhpcy5lbmMmJih0aGlzLmVuYz0i''@;'; put 'put ''dXRmOCIsdGhpcy5lbmNvZGVyPWosIlx1ezFmNGE5fSIhPT1tZS5mcm9tKCJlZGEwYmRlZGIyYTkiLCJoZXgiKS50b1N0cmluZygpJiYodGhpcy5kZWNvZGVyPXJlLHRoaXMuZGVmYXVsdENoYXJVbmljb2RlPVkuZGVmYXVsdENoYXJVbmljb2RlKSl9WGUuZXhwb3J0cz17dXRmODp7dHlwZToi''@;'; put 'put ''X2ludGVybmFsIixib21Bd2FyZTohMH0sY2VzdTg6e3R5cGU6Il9pbnRlcm5hbCIsYm9tQXdhcmU6ITB9LHVuaWNvZGUxMXV0Zjg6InV0ZjgiLHVjczI6e3R5cGU6Il9pbnRlcm5hbCIsYm9tQXdhcmU6ITB9LHV0ZjE2bGU6InVjczIiLGJpbmFyeTp7dHlwZToiX2ludGVybmFsIn0sYmFzZTY0''@;'; put 'put ''Ont0eXBlOiJfaW50ZXJuYWwifSxoZXg6e3R5cGU6Il9pbnRlcm5hbCJ9LF9pbnRlcm5hbDpCfSxCLnByb3RvdHlwZS5lbmNvZGVyPVUsQi5wcm90b3R5cGUuZGVjb2Rlcj1FZTt2YXIgRT1MKDczMDU0KS5zO2Z1bmN0aW9uIEVlKGFlLFkpe0UuY2FsbCh0aGlzLFkuZW5jKX1mdW5jdGlvbiBV''@;'; put 'put ''KGFlLFkpe3RoaXMuZW5jPVkuZW5jfWZ1bmN0aW9uIFEoYWUsWSl7dGhpcy5wcmV2U3RyPSIifWZ1bmN0aW9uIGooYWUsWSl7fWZ1bmN0aW9uIHJlKGFlLFkpe3RoaXMuYWNjPTAsdGhpcy5jb250Qnl0ZXM9MCx0aGlzLmFjY0J5dGVzPTAsdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGU9WS5kZWZh''@;'; put 'put ''dWx0Q2hhclVuaWNvZGV9RS5wcm90b3R5cGUuZW5kfHwoRS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7fSksRWUucHJvdG90eXBlPUUucHJvdG90eXBlLFUucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGFlKXtyZXR1cm4gbWUuZnJvbShhZSx0aGlzLmVuYyl9LFUucHJvdG90eXBlLmVuZD1m''@;'; put 'put ''dW5jdGlvbigpe30sUS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oYWUpe3ZhciBZPShhZT10aGlzLnByZXZTdHIrYWUpLmxlbmd0aC1hZS5sZW5ndGglNDtyZXR1cm4gdGhpcy5wcmV2U3RyPWFlLnNsaWNlKFkpLGFlPWFlLnNsaWNlKDAsWSksbWUuZnJvbShhZSwiYmFzZTY0Iil9LFEucHJv''@;'; put 'put ''dG90eXBlLmVuZD1mdW5jdGlvbigpe3JldHVybiBtZS5mcm9tKHRoaXMucHJldlN0ciwiYmFzZTY0Iil9LGoucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGFlKXtmb3IodmFyIFk9bWUuYWxsb2MoMyphZS5sZW5ndGgpLFc9MCxOPTA7TjxhZS5sZW5ndGg7TisrKXt2YXIgdGU9YWUuY2hhckNv''@;'; put 'put ''ZGVBdChOKTt0ZTwxMjg/WVtXKytdPXRlOnRlPDIwNDg/KFlbVysrXT0xOTIrKHRlPj4+NiksWVtXKytdPTEyOCsoNjMmdGUpKTooWVtXKytdPTIyNCsodGU+Pj4xMiksWVtXKytdPTEyOCsodGU+Pj42JjYzKSxZW1crK109MTI4Kyg2MyZ0ZSkpfXJldHVybiBZLnNsaWNlKDAsVyl9LGoucHJv''@;'; put 'put ''dG90eXBlLmVuZD1mdW5jdGlvbigpe30scmUucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGFlKXtmb3IodmFyIFk9dGhpcy5hY2MsVz10aGlzLmNvbnRCeXRlcyxOPXRoaXMuYWNjQnl0ZXMsdGU9IiIsSz0wO0s8YWUubGVuZ3RoO0srKyl7dmFyIEo9YWVbS107MTI4IT0oMTkyJkopPyhXPjAm''@;'; put 'put ''Jih0ZSs9dGhpcy5kZWZhdWx0Q2hhclVuaWNvZGUsVz0wKSxKPDEyOD90ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShKKTpKPDIyND8oWT0zMSZKLFc9MSxOPTEpOko8MjQwPyhZPTE1JkosVz0yLE49MSk6dGUrPXRoaXMuZGVmYXVsdENoYXJVbmljb2RlKTpXPjA/KFk9WTw8Nnw2MyZKLE4rKyww''@;'; put 'put ''PT0tLVcmJih0ZSs9Mj09PU4mJlk8MTI4JiZZPjB8fDM9PT1OJiZZPDIwNDg/dGhpcy5kZWZhdWx0Q2hhclVuaWNvZGU6U3RyaW5nLmZyb21DaGFyQ29kZShZKSkpOnRlKz10aGlzLmRlZmF1bHRDaGFyVW5pY29kZX1yZXR1cm4gdGhpcy5hY2M9WSx0aGlzLmNvbnRCeXRlcz1XLHRoaXMuYWNj''@;'; put 'put ''Qnl0ZXM9Tix0ZX0scmUucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3ZhciBhZT0wO3JldHVybiB0aGlzLmNvbnRCeXRlcz4wJiYoYWUrPXRoaXMuZGVmYXVsdENoYXJVbmljb2RlKSxhZX19LDQxMzEzOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg2MjAzOCkuQnVmZmVyO2Z1''@;'; put 'put ''bmN0aW9uIEIoVSxRKXtpZighVSl0aHJvdyBuZXcgRXJyb3IoIlNCQ1MgY29kZWMgaXMgY2FsbGVkIHdpdGhvdXQgdGhlIGRhdGEuIik7aWYoIVUuY2hhcnN8fDEyOCE9PVUuY2hhcnMubGVuZ3RoJiYyNTYhPT1VLmNoYXJzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nICciK1Uu''@;'; put 'put ''dHlwZSsiJyBoYXMgaW5jb3JyZWN0ICdjaGFycycgKG11c3QgYmUgb2YgbGVuIDEyOCBvciAyNTYpIik7aWYoMTI4PT09VS5jaGFycy5sZW5ndGgpe2Zvcih2YXIgaj0iIixyZT0wO3JlPDEyODtyZSsrKWorPVN0cmluZy5mcm9tQ2hhckNvZGUocmUpO1UuY2hhcnM9aitVLmNoYXJzfXRoaXMu''@;'; put 'put ''ZGVjb2RlQnVmPW1lLmZyb20oVS5jaGFycywidWNzMiIpO3ZhciBhZT1tZS5hbGxvYyg2NTUzNixRLmRlZmF1bHRDaGFyU2luZ2xlQnl0ZS5jaGFyQ29kZUF0KDApKTtmb3IocmU9MDtyZTxVLmNoYXJzLmxlbmd0aDtyZSsrKWFlW1UuY2hhcnMuY2hhckNvZGVBdChyZSldPXJlO3RoaXMuZW5j''@;'; put 'put ''b2RlQnVmPWFlfWZ1bmN0aW9uIEUoVSxRKXt0aGlzLmVuY29kZUJ1Zj1RLmVuY29kZUJ1Zn1mdW5jdGlvbiBFZShVLFEpe3RoaXMuZGVjb2RlQnVmPVEuZGVjb2RlQnVmfUplLl9zYmNzPUIsQi5wcm90b3R5cGUuZW5jb2Rlcj1FLEIucHJvdG90eXBlLmRlY29kZXI9RWUsRS5wcm90b3R5cGUu''@;'; put 'put ''d3JpdGU9ZnVuY3Rpb24oVSl7Zm9yKHZhciBRPW1lLmFsbG9jKFUubGVuZ3RoKSxqPTA7ajxVLmxlbmd0aDtqKyspUVtqXT10aGlzLmVuY29kZUJ1ZltVLmNoYXJDb2RlQXQoaildO3JldHVybiBRfSxFLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt9LEVlLnByb3RvdHlwZS53cml0ZT1mdW5j''@;'; put 'put ''dGlvbihVKXtmb3IodmFyIFE9dGhpcy5kZWNvZGVCdWYsaj1tZS5hbGxvYygyKlUubGVuZ3RoKSxyZT0wLGFlPTAsWT0wO1k8VS5sZW5ndGg7WSsrKWpbYWU9MipZXT1RW3JlPTIqVVtZXV0salthZSsxXT1RW3JlKzFdO3JldHVybiBqLnRvU3RyaW5nKCJ1Y3MyIil9LEVlLnByb3RvdHlwZS5l''@;'; put 'put ''bmQ9ZnVuY3Rpb24oKXt9fSw3NDExNDpYZT0+eyJ1c2Ugc3RyaWN0IjtYZS5leHBvcnRzPXs0Mzc6ImNwNDM3Iiw3Mzc6ImNwNzM3Iiw3NzU6ImNwNzc1Iiw4NTA6ImNwODUwIiw4NTI6ImNwODUyIiw4NTU6ImNwODU1Iiw4NTY6ImNwODU2Iiw4NTc6ImNwODU3Iiw4NTg6ImNwODU4Iiw4NjA6''@;'; put 'put ''ImNwODYwIiw4NjE6ImNwODYxIiw4NjI6ImNwODYyIiw4NjM6ImNwODYzIiw4NjQ6ImNwODY0Iiw4NjU6ImNwODY1Iiw4NjY6ImNwODY2Iiw4Njk6ImNwODY5Iiw4NzQ6IndpbmRvd3M4NzQiLDkyMjoiY3A5MjIiLDEwNDY6ImNwMTA0NiIsMTEyNDoiY3AxMTI0IiwxMTI1OiJjcDExMjUiLDEx''@;'; put 'put ''Mjk6ImNwMTEyOSIsMTEzMzoiY3AxMTMzIiwxMTYxOiJjcDExNjEiLDExNjI6ImNwMTE2MiIsMTE2MzoiY3AxMTYzIiwxMjUwOiJ3aW5kb3dzMTI1MCIsMTI1MToid2luZG93czEyNTEiLDEyNTI6IndpbmRvd3MxMjUyIiwxMjUzOiJ3aW5kb3dzMTI1MyIsMTI1NDoid2luZG93czEyNTQiLDEy''@;'; put 'put ''NTU6IndpbmRvd3MxMjU1IiwxMjU2OiJ3aW5kb3dzMTI1NiIsMTI1Nzoid2luZG93czEyNTciLDEyNTg6IndpbmRvd3MxMjU4IiwyODU5MToiaXNvODg1OTEiLDI4NTkyOiJpc284ODU5MiIsMjg1OTM6Imlzbzg4NTkzIiwyODU5NDoiaXNvODg1OTQiLDI4NTk1OiJpc284ODU5NSIsMjg1OTY6''@;'; put 'put ''Imlzbzg4NTk2IiwyODU5NzoiaXNvODg1OTciLDI4NTk4OiJpc284ODU5OCIsMjg1OTk6Imlzbzg4NTk5IiwyODYwMDoiaXNvODg1OTEwIiwyODYwMToiaXNvODg1OTExIiwyODYwMzoiaXNvODg1OTEzIiwyODYwNDoiaXNvODg1OTE0IiwyODYwNToiaXNvODg1OTE1IiwyODYwNjoiaXNvODg1''@;'; put 'put ''OTE2Iix3aW5kb3dzODc0Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjBhY1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjAyNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1''@;'; put 'put ''MjAyMlx1MjAxM1x1MjAxNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx4YTBcdTBlMDFcdTBlMDJcdTBlMDNcdTBlMDRcdTBlMDVcdTBlMDZcdTBlMDdcdTBlMDhcdTBlMDlcdTBlMGFcdTBlMGJcdTBlMGNcdTBlMGRcdTBlMGVcdTBlMGZcdTBlMTBc''@;'; put 'put ''dTBlMTFcdTBlMTJcdTBlMTNcdTBlMTRcdTBlMTVcdTBlMTZcdTBlMTdcdTBlMThcdTBlMTlcdTBlMWFcdTBlMWJcdTBlMWNcdTBlMWRcdTBlMWVcdTBlMWZcdTBlMjBcdTBlMjFcdTBlMjJcdTBlMjNcdTBlMjRcdTBlMjVcdTBlMjZcdTBlMjdcdTBlMjhcdTBlMjlcdTBlMmFcdTBlMmJcdTBl''@;'; put 'put ''MmNcdTBlMmRcdTBlMmVcdTBlMmZcdTBlMzBcdTBlMzFcdTBlMzJcdTBlMzNcdTBlMzRcdTBlMzVcdTBlMzZcdTBlMzdcdTBlMzhcdTBlMzlcdTBlM2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTBlM2ZcdTBlNDBcdTBlNDFcdTBlNDJcdTBlNDNcdTBlNDRcdTBlNDVcdTBlNDZcdTBlNDdc''@;'; put 'put ''dTBlNDhcdTBlNDlcdTBlNGFcdTBlNGJcdTBlNGNcdTBlNGRcdTBlNGVcdTBlNGZcdTBlNTBcdTBlNTFcdTBlNTJcdTBlNTNcdTBlNTRcdTBlNTVcdTBlNTZcdTBlNTdcdTBlNThcdTBlNTlcdTBlNWFcdTBlNWJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQifSx3aW44NzQ6IndpbmRvd3M4NzQi''@;'; put 'put ''LGNwODc0OiJ3aW5kb3dzODc0Iix3aW5kb3dzMTI1MDp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTIwYWNcdWZmZmRcdTIwMWFcdWZmZmRcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdWZmZmRcdTIwMzBcdTAxNjBcdTIwMzlcdTAxNWFcdTAxNjRcdTAxN2RcdTAxNzlcdWZmZmRcdTIwMThcdTIw''@;'; put 'put ''MTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdTIxMjJcdTAxNjFcdTIwM2FcdTAxNWJcdTAxNjVcdTAxN2VcdTAxN2FceGEwXHUwMmM3XHUwMmQ4XHUwMTQxXHhhNFx1MDEwNFx4YTZceGE3XHhhOFx4YTlcdTAxNWVceGFiXHhhY1x4YWRceGFlXHUwMTdiXHhiMFx4YjFc''@;'; put 'put ''dTAyZGJcdTAxNDJceGI0XHhiNVx4YjZceGI3XHhiOFx1MDEwNVx1MDE1Zlx4YmJcdTAxM2RcdTAyZGRcdTAxM2VcdTAxN2NcdTAxNTRceGMxXHhjMlx1MDEwMlx4YzRcdTAxMzlcdTAxMDZceGM3XHUwMTBjXHhjOVx1MDExOFx4Y2JcdTAxMWFceGNkXHhjZVx1MDEwZVx1MDExMFx1MDE0M1x1''@;'; put 'put ''MDE0N1x4ZDNceGQ0XHUwMTUwXHhkNlx4ZDdcdTAxNThcdTAxNmVceGRhXHUwMTcwXHhkY1x4ZGRcdTAxNjJceGRmXHUwMTU1XHhlMVx4ZTJcdTAxMDNceGU0XHUwMTNhXHUwMTA3XHhlN1x1MDEwZFx4ZTlcdTAxMTlceGViXHUwMTFiXHhlZFx4ZWVcdTAxMGZcdTAxMTFcdTAxNDRcdTAxNDhc''@;'; put 'put ''eGYzXHhmNFx1MDE1MVx4ZjZceGY3XHUwMTU5XHUwMTZmXHhmYVx1MDE3MVx4ZmNceGZkXHUwMTYzXHUwMmQ5In0sd2luMTI1MDoid2luZG93czEyNTAiLGNwMTI1MDoid2luZG93czEyNTAiLHdpbmRvd3MxMjUxOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQwMlx1MDQwM1x1MjAxYVx1MDQ1''@;'; put 'put ''M1x1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MjBhY1x1MjAzMFx1MDQwOVx1MjAzOVx1MDQwYVx1MDQwY1x1MDQwYlx1MDQwZlx1MDQ1Mlx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1ZmZmZFx1MjEyMlx1MDQ1OVx1MjAzYVx1MDQ1YVx1MDQ1Y1x1MDQ1Ylx1''@;'; put 'put ''MDQ1Zlx4YTBcdTA0MGVcdTA0NWVcdTA0MDhceGE0XHUwNDkwXHhhNlx4YTdcdTA0MDFceGE5XHUwNDA0XHhhYlx4YWNceGFkXHhhZVx1MDQwN1x4YjBceGIxXHUwNDA2XHUwNDU2XHUwNDkxXHhiNVx4YjZceGI3XHUwNDUxXHUyMTE2XHUwNDU0XHhiYlx1MDQ1OFx1MDQwNVx1MDQ1NVx1MDQ1''@;'; put 'put ''N1x1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1''@;'; put 'put ''MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0''@;'; put 'put ''Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0ZiJ9LHdpbjEyNTE6IndpbmRvd3MxMjUxIixjcDEyNTE6IndpbmRvd3MxMjUxIix3aW5kb3dzMTI1Mjp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTIwYWNcdWZmZmRcdTIwMWFcdTAxOTJcdTIwMWVc''@;'; put 'put ''dTIwMjZcdTIwMjBcdTIwMjFcdTAyYzZcdTIwMzBcdTAxNjBcdTIwMzlcdTAxNTJcdWZmZmRcdTAxN2RcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTAyZGNcdTIxMjJcdTAxNjFcdTIwM2FcdTAxNTNcdWZmZmRcdTAxN2VcdTAxNzhceGEw''@;'; put 'put ''XHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZceGM3XHhjOFx4Yzlc''@;'; put 'put ''eGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZceGQwXHhkMVx4ZDJceGQzXHhkNFx4ZDVceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHhkZFx4ZGVceGRmXHhlMFx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx4ZjBceGYxXHhmMlx4''@;'; put 'put ''ZjNceGY0XHhmNVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNceGZkXHhmZVx4ZmYifSx3aW4xMjUyOiJ3aW5kb3dzMTI1MiIsY3AxMjUyOiJ3aW5kb3dzMTI1MiIsd2luZG93czEyNTM6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2''@;'; put 'put ''XHUyMDIwXHUyMDIxXHVmZmZkXHUyMDMwXHVmZmZkXHUyMDM5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHUyMTIyXHVmZmZkXHUyMDNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHhhMFx1MDM4''@;'; put 'put ''NVx1MDM4Nlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlcdWZmZmRceGFiXHhhY1x4YWRceGFlXHUyMDE1XHhiMFx4YjFceGIyXHhiM1x1MDM4NFx4YjVceGI2XHhiN1x1MDM4OFx1MDM4OVx1MDM4YVx4YmJcdTAzOGNceGJkXHUwMzhlXHUwMzhmXHUwMzkwXHUwMzkxXHUwMzkyXHUwMzkz''@;'; put 'put ''XHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk4XHUwMzk5XHUwMzlhXHUwMzliXHUwMzljXHUwMzlkXHUwMzllXHUwMzlmXHUwM2EwXHUwM2ExXHVmZmZkXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHUwM2FhXHUwM2FiXHUwM2FjXHUwM2FkXHUwM2FlXHUw''@;'; put 'put ''M2FmXHUwM2IwXHUwM2IxXHUwM2IyXHUwM2IzXHUwM2I0XHUwM2I1XHUwM2I2XHUwM2I3XHUwM2I4XHUwM2I5XHUwM2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MyXHUwM2MzXHUwM2M0XHUwM2M1XHUwM2M2XHUwM2M3XHUwM2M4XHUwM2M5XHUwM2Nh''@;'; put 'put ''XHUwM2NiXHUwM2NjXHUwM2NkXHUwM2NlXHVmZmZkIn0sd2luMTI1Mzoid2luZG93czEyNTMiLGNwMTI1Mzoid2luZG93czEyNTMiLHdpbmRvd3MxMjU0Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjBhY1x1ZmZmZFx1MjAxYVx1MDE5Mlx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MDJjNlx1''@;'; put 'put ''MjAzMFx1MDE2MFx1MjAzOVx1MDE1Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDJkY1x1MjEyMlx1MDE2MVx1MjAzYVx1MDE1M1x1ZmZmZFx1ZmZmZFx1MDE3OFx4YTBceGExXHhhMlx4YTNceGE0XHhhNVx4YTZc''@;'; put 'put ''eGE3XHhhOFx4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHhiYVx4YmJceGJjXHhiZFx4YmVceGJmXHhjMFx4YzFceGMyXHhjM1x4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHhjY1x4Y2RceGNlXHhjZlx1''@;'; put 'put ''MDExZVx4ZDFceGQyXHhkM1x4ZDRceGQ1XHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x1MDEzMFx1MDE1ZVx4ZGZceGUwXHhlMVx4ZTJceGUzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHUwMTFmXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhm''@;'; put 'put ''N1x4ZjhceGY5XHhmYVx4ZmJceGZjXHUwMTMxXHUwMTVmXHhmZiJ9LHdpbjEyNTQ6IndpbmRvd3MxMjU0IixjcDEyNTQ6IndpbmRvd3MxMjU0Iix3aW5kb3dzMTI1NTp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTIwYWNcdWZmZmRcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFc''@;'; put 'put ''dTAyYzZcdTIwMzBcdWZmZmRcdTIwMzlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTAyZGNcdTIxMjJcdWZmZmRcdTIwM2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRceGEwXHhhMVx4YTJceGEzXHUyMGFh''@;'; put 'put ''XHhhNVx4YTZceGE3XHhhOFx4YTlceGQ3XHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHhmN1x4YmJceGJjXHhiZFx4YmVceGJmXHUwNWIwXHUwNWIxXHUwNWIyXHUwNWIzXHUwNWI0XHUwNWI1XHUwNWI2XHUwNWI3XHUwNWI4XHUw''@;'; put 'put ''NWI5XHUwNWJhXHUwNWJiXHUwNWJjXHUwNWJkXHUwNWJlXHUwNWJmXHUwNWMwXHUwNWMxXHUwNWMyXHUwNWMzXHUwNWYwXHUwNWYxXHUwNWYyXHUwNWYzXHUwNWY0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwNWQwXHUwNWQxXHUwNWQyXHUwNWQzXHUwNWQ0''@;'; put 'put ''XHUwNWQ1XHUwNWQ2XHUwNWQ3XHUwNWQ4XHUwNWQ5XHUwNWRhXHUwNWRiXHUwNWRjXHUwNWRkXHUwNWRlXHUwNWRmXHUwNWUwXHUwNWUxXHUwNWUyXHUwNWUzXHUwNWU0XHUwNWU1XHUwNWU2XHUwNWU3XHUwNWU4XHUwNWU5XHUwNWVhXHVmZmZkXHVmZmZkXHUyMDBlXHUyMDBmXHVmZmZkIn0s''@;'; put 'put ''d2luMTI1NToid2luZG93czEyNTUiLGNwMTI1NToid2luZG93czEyNTUiLHdpbmRvd3MxMjU2Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjBhY1x1MDY3ZVx1MjAxYVx1MDE5Mlx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MDJjNlx1MjAzMFx1MDY3OVx1MjAzOVx1MDE1Mlx1MDY4Nlx1MDY5''@;'; put 'put ''OFx1MDY4OFx1MDZhZlx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDZhOVx1MjEyMlx1MDY5MVx1MjAzYVx1MDE1M1x1MjAwY1x1MjAwZFx1MDZiYVx4YTBcdTA2MGNceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx1MDZiZVx4YWJceGFjXHhhZFx4''@;'; put 'put ''YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx1MDYxYlx4YmJceGJjXHhiZFx4YmVcdTA2MWZcdTA2YzFcdTA2MjFcdTA2MjJcdTA2MjNcdTA2MjRcdTA2MjVcdTA2MjZcdTA2MjdcdTA2MjhcdTA2MjlcdTA2MmFcdTA2MmJcdTA2MmNcdTA2MmRcdTA2MmVc''@;'; put 'put ''dTA2MmZcdTA2MzBcdTA2MzFcdTA2MzJcdTA2MzNcdTA2MzRcdTA2MzVcdTA2MzZceGQ3XHUwNjM3XHUwNjM4XHUwNjM5XHUwNjNhXHUwNjQwXHUwNjQxXHUwNjQyXHUwNjQzXHhlMFx1MDY0NFx4ZTJcdTA2NDVcdTA2NDZcdTA2NDdcdTA2NDhceGU3XHhlOFx4ZTlceGVhXHhlYlx1MDY0OVx1''@;'; put 'put ''MDY0YVx4ZWVceGVmXHUwNjRiXHUwNjRjXHUwNjRkXHUwNjRlXHhmNFx1MDY0Zlx1MDY1MFx4ZjdcdTA2NTFceGY5XHUwNjUyXHhmYlx4ZmNcdTIwMGVcdTIwMGZcdTA2ZDIifSx3aW4xMjU2OiJ3aW5kb3dzMTI1NiIsY3AxMjU2OiJ3aW5kb3dzMTI1NiIsd2luZG93czEyNTc6e3R5cGU6Il9z''@;'; put 'put ''YmNzIixjaGFyczoiXHUyMGFjXHVmZmZkXHUyMDFhXHVmZmZkXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHVmZmZkXHUyMDMwXHVmZmZkXHUyMDM5XHVmZmZkXHhhOFx1MDJjN1x4YjhcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdTIxMjJc''@;'; put 'put ''dWZmZmRcdTIwM2FcdWZmZmRceGFmXHUwMmRiXHVmZmZkXHhhMFx1ZmZmZFx4YTJceGEzXHhhNFx1ZmZmZFx4YTZceGE3XHhkOFx4YTlcdTAxNTZceGFiXHhhY1x4YWRceGFlXHhjNlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhmOFx4YjlcdTAxNTdceGJiXHhiY1x4YmRceGJl''@;'; put 'put ''XHhlNlx1MDEwNFx1MDEyZVx1MDEwMFx1MDEwNlx4YzRceGM1XHUwMTE4XHUwMTEyXHUwMTBjXHhjOVx1MDE3OVx1MDExNlx1MDEyMlx1MDEzNlx1MDEyYVx1MDEzYlx1MDE2MFx1MDE0M1x1MDE0NVx4ZDNcdTAxNGNceGQ1XHhkNlx4ZDdcdTAxNzJcdTAxNDFcdTAxNWFcdTAxNmFceGRjXHUw''@;'; put 'put ''MTdiXHUwMTdkXHhkZlx1MDEwNVx1MDEyZlx1MDEwMVx1MDEwN1x4ZTRceGU1XHUwMTE5XHUwMTEzXHUwMTBkXHhlOVx1MDE3YVx1MDExN1x1MDEyM1x1MDEzN1x1MDEyYlx1MDEzY1x1MDE2MVx1MDE0NFx1MDE0Nlx4ZjNcdTAxNGRceGY1XHhmNlx4ZjdcdTAxNzNcdTAxNDJcdTAxNWJcdTAx''@;'; put 'put ''NmJceGZjXHUwMTdjXHUwMTdlXHUwMmQ5In0sd2luMTI1Nzoid2luZG93czEyNTciLGNwMTI1Nzoid2luZG93czEyNTciLHdpbmRvd3MxMjU4Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjBhY1x1ZmZmZFx1MjAxYVx1MDE5Mlx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MDJjNlx1MjAzMFx1''@;'; put 'put ''ZmZmZFx1MjAzOVx1MDE1Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDJkY1x1MjEyMlx1ZmZmZFx1MjAzYVx1MDE1M1x1ZmZmZFx1ZmZmZFx1MDE3OFx4YTBceGExXHhhMlx4YTNceGE0XHhhNVx4YTZceGE3XHhh''@;'; put 'put ''OFx4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHhiYVx4YmJceGJjXHhiZFx4YmVceGJmXHhjMFx4YzFceGMyXHUwMTAyXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JcdTAzMDBceGNkXHhjZVx4Y2ZcdTAx''@;'; put 'put ''MTBceGQxXHUwMzA5XHhkM1x4ZDRcdTAxYTBceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHUwMWFmXHUwMzAzXHhkZlx4ZTBceGUxXHhlMlx1MDEwM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHUwMzAxXHhlZFx4ZWVceGVmXHUwMTExXHhmMVx1MDMyM1x4ZjNceGY0XHUw''@;'; put 'put ''MWExXHhmNlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhmY1x1MDFiMFx1MjBhYlx4ZmYifSx3aW4xMjU4OiJ3aW5kb3dzMTI1OCIsY3AxMjU4OiJ3aW5kb3dzMTI1OCIsaXNvODg1OTE6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4''@;'; put 'put ''OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhi''@;'; put 'put ''M1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZceGQwXHhkMVx4ZDJceGQzXHhkNFx4ZDVceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRj''@;'; put 'put ''XHhkZFx4ZGVceGRmXHhlMFx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx4ZjBceGYxXHhmMlx4ZjNceGY0XHhmNVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNceGZkXHhmZVx4ZmYifSxjcDI4NTkxOiJpc284ODU5MSIsaXNv''@;'; put 'put ''ODg1OTI6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUwMTA0''@;'; put 'put ''XHUwMmQ4XHUwMTQxXHhhNFx1MDEzZFx1MDE1YVx4YTdceGE4XHUwMTYwXHUwMTVlXHUwMTY0XHUwMTc5XHhhZFx1MDE3ZFx1MDE3Ylx4YjBcdTAxMDVcdTAyZGJcdTAxNDJceGI0XHUwMTNlXHUwMTViXHUwMmM3XHhiOFx1MDE2MVx1MDE1Zlx1MDE2NVx1MDE3YVx1MDJkZFx1MDE3ZVx1MDE3''@;'; put 'put ''Y1x1MDE1NFx4YzFceGMyXHUwMTAyXHhjNFx1MDEzOVx1MDEwNlx4YzdcdTAxMGNceGM5XHUwMTE4XHhjYlx1MDExYVx4Y2RceGNlXHUwMTBlXHUwMTEwXHUwMTQzXHUwMTQ3XHhkM1x4ZDRcdTAxNTBceGQ2XHhkN1x1MDE1OFx1MDE2ZVx4ZGFcdTAxNzBceGRjXHhkZFx1MDE2Mlx4ZGZcdTAx''@;'; put 'put ''NTVceGUxXHhlMlx1MDEwM1x4ZTRcdTAxM2FcdTAxMDdceGU3XHUwMTBkXHhlOVx1MDExOVx4ZWJcdTAxMWJceGVkXHhlZVx1MDEwZlx1MDExMVx1MDE0NFx1MDE0OFx4ZjNceGY0XHUwMTUxXHhmNlx4ZjdcdTAxNTlcdTAxNmZceGZhXHUwMTcxXHhmY1x4ZmRcdTAxNjNcdTAyZDkifSxjcDI4''@;'; put 'put ''NTkyOiJpc284ODU5MiIsaXNvODg1OTM6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlk''@;'; put 'put ''XHg5ZVx4OWZceGEwXHUwMTI2XHUwMmQ4XHhhM1x4YTRcdWZmZmRcdTAxMjRceGE3XHhhOFx1MDEzMFx1MDE1ZVx1MDExZVx1MDEzNFx4YWRcdWZmZmRcdTAxN2JceGIwXHUwMTI3XHhiMlx4YjNceGI0XHhiNVx1MDEyNVx4YjdceGI4XHUwMTMxXHUwMTVmXHUwMTFmXHUwMTM1XHhiZFx1ZmZm''@;'; put 'put ''ZFx1MDE3Y1x4YzBceGMxXHhjMlx1ZmZmZFx4YzRcdTAxMGFcdTAxMDhceGM3XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZcdWZmZmRceGQxXHhkMlx4ZDNceGQ0XHUwMTIwXHhkNlx4ZDdcdTAxMWNceGQ5XHhkYVx4ZGJceGRjXHUwMTZjXHUwMTVjXHhkZlx4ZTBceGUxXHhlMlx1''@;'; put 'put ''ZmZmZFx4ZTRcdTAxMGJcdTAxMDlceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZcdWZmZmRceGYxXHhmMlx4ZjNceGY0XHUwMTIxXHhmNlx4ZjdcdTAxMWRceGY5XHhmYVx4ZmJceGZjXHUwMTZkXHUwMTVkXHUwMmQ5In0sY3AyODU5MzoiaXNvODg1OTMiLGlzbzg4NTk0Ont0''@;'; put 'put ''eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MDEwNFx1MDEzOFx1''@;'; put 'put ''MDE1Nlx4YTRcdTAxMjhcdTAxM2JceGE3XHhhOFx1MDE2MFx1MDExMlx1MDEyMlx1MDE2Nlx4YWRcdTAxN2RceGFmXHhiMFx1MDEwNVx1MDJkYlx1MDE1N1x4YjRcdTAxMjlcdTAxM2NcdTAyYzdceGI4XHUwMTYxXHUwMTEzXHUwMTIzXHUwMTY3XHUwMTRhXHUwMTdlXHUwMTRiXHUwMTAwXHhj''@;'; put 'put ''MVx4YzJceGMzXHhjNFx4YzVceGM2XHUwMTJlXHUwMTBjXHhjOVx1MDExOFx4Y2JcdTAxMTZceGNkXHhjZVx1MDEyYVx1MDExMFx1MDE0NVx1MDE0Y1x1MDEzNlx4ZDRceGQ1XHhkNlx4ZDdceGQ4XHUwMTcyXHhkYVx4ZGJceGRjXHUwMTY4XHUwMTZhXHhkZlx1MDEwMVx4ZTFceGUyXHhlM1x4''@;'; put 'put ''ZTRceGU1XHhlNlx1MDEyZlx1MDEwZFx4ZTlcdTAxMTlceGViXHUwMTE3XHhlZFx4ZWVcdTAxMmJcdTAxMTFcdTAxNDZcdTAxNGRcdTAxMzdceGY0XHhmNVx4ZjZceGY3XHhmOFx1MDE3M1x4ZmFceGZiXHhmY1x1MDE2OVx1MDE2Ylx1MDJkOSJ9LGNwMjg1OTQ6Imlzbzg4NTk0Iixpc284ODU5''@;'; put 'put ''NTp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTA0MDFcdTA0''@;'; put 'put ''MDJcdTA0MDNcdTA0MDRcdTA0MDVcdTA0MDZcdTA0MDdcdTA0MDhcdTA0MDlcdTA0MGFcdTA0MGJcdTA0MGNceGFkXHUwNDBlXHUwNDBmXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUw''@;'; put 'put ''NDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5''@;'; put 'put ''XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmXHUyMTE2XHUwNDUxXHUwNDUyXHUwNDUzXHUwNDU0XHUw''@;'; put 'put ''NDU1XHUwNDU2XHUwNDU3XHUwNDU4XHUwNDU5XHUwNDVhXHUwNDViXHUwNDVjXHhhN1x1MDQ1ZVx1MDQ1ZiJ9LGNwMjg1OTU6Imlzbzg4NTk1Iixpc284ODU5Njp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhj''@;'; put 'put ''XHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdWZmZmRcdWZmZmRcdWZmZmRceGE0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwNjBjXHhhZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDYxYlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDYxZlx1ZmZmZFx1MDYyMVx1MDYyMlx1MDYyM1x1MDYyNFx1MDYyNVx1MDYyNlx1MDYyN1x1MDYyOFx1MDYyOVx1MDYyYVx1''@;'; put 'put ''MDYyYlx1MDYyY1x1MDYyZFx1MDYyZVx1MDYyZlx1MDYzMFx1MDYzMVx1MDYzMlx1MDYzM1x1MDYzNFx1MDYzNVx1MDYzNlx1MDYzN1x1MDYzOFx1MDYzOVx1MDYzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDY0MFx1MDY0MVx1MDY0Mlx1MDY0M1x1MDY0NFx1MDY0NVx1MDY0''@;'; put 'put ''Nlx1MDY0N1x1MDY0OFx1MDY0OVx1MDY0YVx1MDY0Ylx1MDY0Y1x1MDY0ZFx1MDY0ZVx1MDY0Zlx1MDY1MFx1MDY1MVx1MDY1Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCJ9LGNwMjg1OTY6Imlz''@;'; put 'put ''bzg4NTk2Iixpc284ODU5Nzp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5''@;'; put 'put ''Zlx4YTBcdTIwMThcdTIwMTlceGEzXHUyMGFjXHUyMGFmXHhhNlx4YTdceGE4XHhhOVx1MDM3YVx4YWJceGFjXHhhZFx1ZmZmZFx1MjAxNVx4YjBceGIxXHhiMlx4YjNcdTAzODRcdTAzODVcdTAzODZceGI3XHUwMzg4XHUwMzg5XHUwMzhhXHhiYlx1MDM4Y1x4YmRcdTAzOGVcdTAzOGZcdTAz''@;'; put 'put ''OTBcdTAzOTFcdTAzOTJcdTAzOTNcdTAzOTRcdTAzOTVcdTAzOTZcdTAzOTdcdTAzOThcdTAzOTlcdTAzOWFcdTAzOWJcdTAzOWNcdTAzOWRcdTAzOWVcdTAzOWZcdTAzYTBcdTAzYTFcdWZmZmRcdTAzYTNcdTAzYTRcdTAzYTVcdTAzYTZcdTAzYTdcdTAzYThcdTAzYTlcdTAzYWFcdTAzYWJc''@;'; put 'put ''dTAzYWNcdTAzYWRcdTAzYWVcdTAzYWZcdTAzYjBcdTAzYjFcdTAzYjJcdTAzYjNcdTAzYjRcdTAzYjVcdTAzYjZcdTAzYjdcdTAzYjhcdTAzYjlcdTAzYmFcdTAzYmJcdTAzYmNcdTAzYmRcdTAzYmVcdTAzYmZcdTAzYzBcdTAzYzFcdTAzYzJcdTAzYzNcdTAzYzRcdTAzYzVcdTAzYzZcdTAz''@;'; put 'put ''YzdcdTAzYzhcdTAzYzlcdTAzY2FcdTAzY2JcdTAzY2NcdTAzY2RcdTAzY2VcdWZmZmQifSxjcDI4NTk3OiJpc284ODU5NyIsaXNvODg1OTg6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4''@;'; put 'put ''Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHVmZmZkXHhhMlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlceGQ3XHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4''@;'; put 'put ''YjhceGI5XHhmN1x4YmJceGJjXHhiZFx4YmVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMTdcdTA1ZDBcdTA1ZDFcdTA1ZDJcdTA1ZDNcdTA1ZDRcdTA1ZDVcdTA1ZDZcdTA1ZDdcdTA1ZDhcdTA1ZDlcdTA1ZGFcdTA1ZGJcdTA1ZGNcdTA1ZGRcdTA1ZGVcdTA1ZGZcdTA1ZTBcdTA1''@;'; put 'put ''ZTFcdTA1ZTJcdTA1ZTNcdTA1ZTRcdTA1ZTVcdTA1ZTZcdTA1ZTdcdTA1ZThcdTA1ZTlcdTA1ZWFcdWZmZmRcdWZmZmRcdTIwMGVcdTIwMGZcdWZmZmQifSxjcDI4NTk4OiJpc284ODU5OCIsaXNvODg1OTk6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4''@;'; put 'put ''Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFm''@;'; put 'put ''XHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZcdTAxMWVceGQxXHhkMlx4ZDNceGQ0XHhkNVx4ZDZceGQ3XHhk''@;'; put 'put ''OFx4ZDlceGRhXHhkYlx4ZGNcdTAxMzBcdTAxNWVceGRmXHhlMFx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx1MDExZlx4ZjFceGYyXHhmM1x4ZjRceGY1XHhmNlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhmY1x1MDEzMVx1MDE1Zlx4''@;'; put 'put ''ZmYifSxjcDI4NTk5OiJpc284ODU5OSIsaXNvODg1OTEwOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4''@;'; put 'put ''OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MDEwNFx1MDExMlx1MDEyMlx1MDEyYVx1MDEyOFx1MDEzNlx4YTdcdTAxM2JcdTAxMTBcdTAxNjBcdTAxNjZcdTAxN2RceGFkXHUwMTZhXHUwMTRhXHhiMFx1MDEwNVx1MDExM1x1MDEyM1x1MDEyYlx1MDEyOVx1MDEzN1x4YjdcdTAxM2NcdTAxMTFc''@;'; put 'put ''dTAxNjFcdTAxNjdcdTAxN2VcdTIwMTVcdTAxNmJcdTAxNGJcdTAxMDBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZcdTAxMmVcdTAxMGNceGM5XHUwMTE4XHhjYlx1MDExNlx4Y2RceGNlXHhjZlx4ZDBcdTAxNDVcdTAxNGNceGQzXHhkNFx4ZDVceGQ2XHUwMTY4XHhkOFx1MDE3Mlx4ZGFceGRi''@;'; put 'put ''XHhkY1x4ZGRceGRlXHhkZlx1MDEwMVx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx1MDEyZlx1MDEwZFx4ZTlcdTAxMTlceGViXHUwMTE3XHhlZFx4ZWVceGVmXHhmMFx1MDE0Nlx1MDE0ZFx4ZjNceGY0XHhmNVx4ZjZcdTAxNjlceGY4XHUwMTczXHhmYVx4ZmJceGZjXHhmZFx4ZmVcdTAxMzgi''@;'; put 'put ''fSxjcDI4NjAwOiJpc284ODU5MTAiLGlzbzg4NTkxMTp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDli''@;'; put 'put ''XHg5Y1x4OWRceDllXHg5Zlx4YTBcdTBlMDFcdTBlMDJcdTBlMDNcdTBlMDRcdTBlMDVcdTBlMDZcdTBlMDdcdTBlMDhcdTBlMDlcdTBlMGFcdTBlMGJcdTBlMGNcdTBlMGRcdTBlMGVcdTBlMGZcdTBlMTBcdTBlMTFcdTBlMTJcdTBlMTNcdTBlMTRcdTBlMTVcdTBlMTZcdTBlMTdcdTBlMThc''@;'; put 'put ''dTBlMTlcdTBlMWFcdTBlMWJcdTBlMWNcdTBlMWRcdTBlMWVcdTBlMWZcdTBlMjBcdTBlMjFcdTBlMjJcdTBlMjNcdTBlMjRcdTBlMjVcdTBlMjZcdTBlMjdcdTBlMjhcdTBlMjlcdTBlMmFcdTBlMmJcdTBlMmNcdTBlMmRcdTBlMmVcdTBlMmZcdTBlMzBcdTBlMzFcdTBlMzJcdTBlMzNcdTBl''@;'; put 'put ''MzRcdTBlMzVcdTBlMzZcdTBlMzdcdTBlMzhcdTBlMzlcdTBlM2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTBlM2ZcdTBlNDBcdTBlNDFcdTBlNDJcdTBlNDNcdTBlNDRcdTBlNDVcdTBlNDZcdTBlNDdcdTBlNDhcdTBlNDlcdTBlNGFcdTBlNGJcdTBlNGNcdTBlNGRcdTBlNGVcdTBlNGZc''@;'; put 'put ''dTBlNTBcdTBlNTFcdTBlNTJcdTBlNTNcdTBlNTRcdTBlNTVcdTBlNTZcdTBlNTdcdTBlNThcdTBlNTlcdTBlNWFcdTBlNWJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQifSxjcDI4NjAxOiJpc284ODU5MTEiLGlzbzg4NTkxMzp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgz''@;'; put 'put ''XHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTIwMWRceGEyXHhhM1x4YTRcdTIwMWVceGE2XHhhN1x4ZDhceGE5XHUwMTU2XHhh''@;'; put 'put ''Ylx4YWNceGFkXHhhZVx4YzZceGIwXHhiMVx4YjJceGIzXHUyMDFjXHhiNVx4YjZceGI3XHhmOFx4YjlcdTAxNTdceGJiXHhiY1x4YmRceGJlXHhlNlx1MDEwNFx1MDEyZVx1MDEwMFx1MDEwNlx4YzRceGM1XHUwMTE4XHUwMTEyXHUwMTBjXHhjOVx1MDE3OVx1MDExNlx1MDEyMlx1MDEzNlx1''@;'; put 'put ''MDEyYVx1MDEzYlx1MDE2MFx1MDE0M1x1MDE0NVx4ZDNcdTAxNGNceGQ1XHhkNlx4ZDdcdTAxNzJcdTAxNDFcdTAxNWFcdTAxNmFceGRjXHUwMTdiXHUwMTdkXHhkZlx1MDEwNVx1MDEyZlx1MDEwMVx1MDEwN1x4ZTRceGU1XHUwMTE5XHUwMTEzXHUwMTBkXHhlOVx1MDE3YVx1MDExN1x1MDEy''@;'; put 'put ''M1x1MDEzN1x1MDEyYlx1MDEzY1x1MDE2MVx1MDE0NFx1MDE0Nlx4ZjNcdTAxNGRceGY1XHhmNlx4ZjdcdTAxNzNcdTAxNDJcdTAxNWJcdTAxNmJceGZjXHUwMTdjXHUwMTdlXHUyMDE5In0sY3AyODYwMzoiaXNvODg1OTEzIixpc284ODU5MTQ6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4''@;'; put 'put ''ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUxZTAyXHUxZTAzXHhhM1x1MDEwYVx1MDEwYlx1MWUwYVx4YTdc''@;'; put 'put ''dTFlODBceGE5XHUxZTgyXHUxZTBiXHUxZWYyXHhhZFx4YWVcdTAxNzhcdTFlMWVcdTFlMWZcdTAxMjBcdTAxMjFcdTFlNDBcdTFlNDFceGI2XHUxZTU2XHUxZTgxXHUxZTU3XHUxZTgzXHUxZTYwXHUxZWYzXHUxZTg0XHUxZTg1XHUxZTYxXHhjMFx4YzFceGMyXHhjM1x4YzRceGM1XHhjNlx4''@;'; put 'put ''YzdceGM4XHhjOVx4Y2FceGNiXHhjY1x4Y2RceGNlXHhjZlx1MDE3NFx4ZDFceGQyXHhkM1x4ZDRceGQ1XHhkNlx1MWU2YVx4ZDhceGQ5XHhkYVx4ZGJceGRjXHhkZFx1MDE3Nlx4ZGZceGUwXHhlMVx4ZTJceGUzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVc''@;'; put 'put ''eGVmXHUwMTc1XHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHUxZTZiXHhmOFx4ZjlceGZhXHhmYlx4ZmNceGZkXHUwMTc3XHhmZiJ9LGNwMjg2MDQ6Imlzbzg4NTkxNCIsaXNvODg1OTE1Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4''@;'; put 'put ''ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx4YTFceGEyXHhhM1x1MjBhY1x4YTVcdTAxNjBceGE3XHUwMTYxXHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBc''@;'; put 'put ''eGIxXHhiMlx4YjNcdTAxN2RceGI1XHhiNlx4YjdcdTAxN2VceGI5XHhiYVx4YmJcdTAxNTJcdTAxNTNcdTAxNzhceGJmXHhjMFx4YzFceGMyXHhjM1x4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHhjY1x4Y2RceGNlXHhjZlx4ZDBceGQxXHhkMlx4ZDNceGQ0XHhkNVx4ZDZceGQ3''@;'; put 'put ''XHhkOFx4ZDlceGRhXHhkYlx4ZGNceGRkXHhkZVx4ZGZceGUwXHhlMVx4ZTJceGUzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHhmMFx4ZjFceGYyXHhmM1x4ZjRceGY1XHhmNlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhmY1x4ZmRceGZlXHhmZiJ9LGNw''@;'; put 'put ''Mjg2MDU6Imlzbzg4NTkxNSIsaXNvODg1OTE2Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDlj''@;'; put 'put ''XHg5ZFx4OWVceDlmXHhhMFx1MDEwNFx1MDEwNVx1MDE0MVx1MjBhY1x1MjAxZVx1MDE2MFx4YTdcdTAxNjFceGE5XHUwMjE4XHhhYlx1MDE3OVx4YWRcdTAxN2FcdTAxN2JceGIwXHhiMVx1MDEwY1x1MDE0Mlx1MDE3ZFx1MjAxZFx4YjZceGI3XHUwMTdlXHUwMTBkXHUwMjE5XHhiYlx1MDE1''@;'; put 'put ''Mlx1MDE1M1x1MDE3OFx1MDE3Y1x4YzBceGMxXHhjMlx1MDEwMlx4YzRcdTAxMDZceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHUwMTEwXHUwMTQzXHhkMlx4ZDNceGQ0XHUwMTUwXHhkNlx1MDE1YVx1MDE3MFx4ZDlceGRhXHhkYlx4ZGNcdTAxMThcdTAyMWFceGRm''@;'; put 'put ''XHhlMFx4ZTFceGUyXHUwMTAzXHhlNFx1MDEwN1x4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZcdTAxMTFcdTAxNDRceGYyXHhmM1x4ZjRcdTAxNTFceGY2XHUwMTViXHUwMTcxXHhmOVx4ZmFceGZiXHhmY1x1MDExOVx1MDIxYlx4ZmYifSxjcDI4NjA2OiJpc284ODU5''@;'; put 'put ''MTYiLGNwNDM3Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzdceGZjXHhlOVx4ZTJceGU0XHhlMFx4ZTVceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVceGVjXHhjNFx4YzVceGM5XHhlNlx4YzZceGY0XHhmNlx4ZjJceGZiXHhmOVx4ZmZceGQ2XHhkY1x4YTJceGEzXHhhNVx1MjBhN1x1MDE5Mlx4''@;'; put 'put ''ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx1MjMxMFx4YWNceGJkXHhiY1x4YTFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUx''@;'; put 'put ''NFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1''@;'; put 'put ''MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNiMVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1XHUwM2M0XHUwM2E2XHUwMzk4XHUwM2E5XHUwM2I0XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1MjMyMVx4ZjdcdTIyNDhceGIwXHUy''@;'; put 'put ''MjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIn0saWJtNDM3OiJjcDQzNyIsY3NpYm00Mzc6ImNwNDM3IixjcDczNzp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTAzOTFcdTAzOTJcdTAzOTNcdTAzOTRcdTAzOTVcdTAzOTZcdTAzOTdcdTAzOThcdTAzOTlcdTAzOWFcdTAzOWJcdTAz''@;'; put 'put ''OWNcdTAzOWRcdTAzOWVcdTAzOWZcdTAzYTBcdTAzYTFcdTAzYTNcdTAzYTRcdTAzYTVcdTAzYTZcdTAzYTdcdTAzYThcdTAzYTlcdTAzYjFcdTAzYjJcdTAzYjNcdTAzYjRcdTAzYjVcdTAzYjZcdTAzYjdcdTAzYjhcdTAzYjlcdTAzYmFcdTAzYmJcdTAzYmNcdTAzYmRcdTAzYmVcdTAzYmZc''@;'; put 'put ''dTAzYzBcdTAzYzFcdTAzYzNcdTAzYzJcdTAzYzRcdTAzYzVcdTAzYzZcdTAzYzdcdTAzYzhcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1''@;'; put 'put ''MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNc''@;'; put 'put ''dTI1OTBcdTI1ODBcdTAzYzlcdTAzYWNcdTAzYWRcdTAzYWVcdTAzY2FcdTAzYWZcdTAzY2NcdTAzY2RcdTAzY2JcdTAzY2VcdTAzODZcdTAzODhcdTAzODlcdTAzOGFcdTAzOGNcdTAzOGVcdTAzOGZceGIxXHUyMjY1XHUyMjY0XHUwM2FhXHUwM2FiXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3''@;'; put 'put ''XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAifSxpYm03Mzc6ImNwNzM3Iixjc2libTczNzoiY3A3MzciLGNwNzc1Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDEwNlx4ZmNceGU5XHUwMTAxXHhlNFx1MDEyM1x4ZTVcdTAxMDdcdTAxNDJcdTAxMTNcdTAxNTZcdTAxNTdcdTAxMmJcdTAxNzlc''@;'; put 'put ''eGM0XHhjNVx4YzlceGU2XHhjNlx1MDE0ZFx4ZjZcdTAxMjJceGEyXHUwMTVhXHUwMTViXHhkNlx4ZGNceGY4XHhhM1x4ZDhceGQ3XHhhNFx1MDEwMFx1MDEyYVx4ZjNcdTAxN2JcdTAxN2NcdTAxN2FcdTIwMWRceGE2XHhhOVx4YWVceGFjXHhiZFx4YmNcdTAxNDFceGFiXHhiYlx1MjU5MVx1''@;'; put 'put ''MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MDEwNFx1MDEwY1x1MDExOFx1MDExNlx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MDEyZVx1MDE2MFx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MDE3Mlx1MDE2YVx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2''@;'; put 'put ''MFx1MjU1MFx1MjU2Y1x1MDE3ZFx1MDEwNVx1MDEwZFx1MDExOVx1MDExN1x1MDEyZlx1MDE2MVx1MDE3M1x1MDE2Ylx1MDE3ZVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx4ZDNceGRmXHUwMTRjXHUwMTQzXHhmNVx4ZDVceGI1XHUwMTQ0XHUwMTM2XHUwMTM3''@;'; put 'put ''XHUwMTNiXHUwMTNjXHUwMTQ2XHUwMTEyXHUwMTQ1XHUyMDE5XHhhZFx4YjFcdTIwMWNceGJlXHhiNlx4YTdceGY3XHUyMDFlXHhiMFx1MjIxOVx4YjdceGI5XHhiM1x4YjJcdTI1YTBceGEwIn0saWJtNzc1OiJjcDc3NSIsY3NpYm03NzU6ImNwNzc1IixjcDg1MDp7dHlwZToiX3NiY3MiLGNo''@;'; put 'put ''YXJzOiJceGM3XHhmY1x4ZTlceGUyXHhlNFx4ZTBceGU1XHhlN1x4ZWFceGViXHhlOFx4ZWZceGVlXHhlY1x4YzRceGM1XHhjOVx4ZTZceGM2XHhmNFx4ZjZceGYyXHhmYlx4ZjlceGZmXHhkNlx4ZGNceGY4XHhhM1x4ZDhceGQ3XHUwMTkyXHhlMVx4ZWRceGYzXHhmYVx4ZjFceGQxXHhhYVx4''@;'; put 'put ''YmFceGJmXHhhZVx4YWNceGJkXHhiY1x4YTFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx4YzFceGMyXHhjMFx4YTlcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRceGEyXHhhNVx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x4ZTNceGMzXHUy''@;'; put 'put ''NTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHhhNFx4ZjBceGQwXHhjYVx4Y2JceGM4XHUwMTMxXHhjZFx4Y2VceGNmXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHhhNlx4Y2NcdTI1ODBceGQzXHhkZlx4ZDRceGQyXHhmNVx4ZDVceGI1XHhmZVx4ZGVceGRhXHhkYlx4''@;'; put 'put ''ZDlceGZkXHhkZFx4YWZceGI0XHhhZFx4YjFcdTIwMTdceGJlXHhiNlx4YTdceGY3XHhiOFx4YjBceGE4XHhiN1x4YjlceGIzXHhiMlx1MjVhMFx4YTAifSxpYm04NTA6ImNwODUwIixjc2libTg1MDoiY3A4NTAiLGNwODUyOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzdceGZjXHhlOVx4ZTJc''@;'; put 'put ''eGU0XHUwMTZmXHUwMTA3XHhlN1x1MDE0Mlx4ZWJcdTAxNTBcdTAxNTFceGVlXHUwMTc5XHhjNFx1MDEwNlx4YzlcdTAxMzlcdTAxM2FceGY0XHhmNlx1MDEzZFx1MDEzZVx1MDE1YVx1MDE1Ylx4ZDZceGRjXHUwMTY0XHUwMTY1XHUwMTQxXHhkN1x1MDEwZFx4ZTFceGVkXHhmM1x4ZmFcdTAx''@;'; put 'put ''MDRcdTAxMDVcdTAxN2RcdTAxN2VcdTAxMThcdTAxMTlceGFjXHUwMTdhXHUwMTBjXHUwMTVmXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRceGMxXHhjMlx1MDExYVx1MDE1ZVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MDE3Ylx1MDE3Y1x1MjUxMFx1MjUxNFx1MjUz''@;'; put 'put ''NFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MDEwMlx1MDEwM1x1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x4YTRcdTAxMTFcdTAxMTBcdTAxMGVceGNiXHUwMTBmXHUwMTQ3XHhjZFx4Y2VcdTAxMWJcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTAxNjJcdTAx''@;'; put 'put ''NmVcdTI1ODBceGQzXHhkZlx4ZDRcdTAxNDNcdTAxNDRcdTAxNDhcdTAxNjBcdTAxNjFcdTAxNTRceGRhXHUwMTU1XHUwMTcwXHhmZFx4ZGRcdTAxNjNceGI0XHhhZFx1MDJkZFx1MDJkYlx1MDJjN1x1MDJkOFx4YTdceGY3XHhiOFx4YjBceGE4XHUwMmQ5XHUwMTcxXHUwMTU4XHUwMTU5XHUy''@;'; put 'put ''NWEwXHhhMCJ9LGlibTg1MjoiY3A4NTIiLGNzaWJtODUyOiJjcDg1MiIsY3A4NTU6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNDUyXHUwNDAyXHUwNDUzXHUwNDAzXHUwNDUxXHUwNDAxXHUwNDU0XHUwNDA0XHUwNDU1XHUwNDA1XHUwNDU2XHUwNDA2XHUwNDU3XHUwNDA3XHUwNDU4XHUwNDA4''@;'; put 'put ''XHUwNDU5XHUwNDA5XHUwNDVhXHUwNDBhXHUwNDViXHUwNDBiXHUwNDVjXHUwNDBjXHUwNDVlXHUwNDBlXHUwNDVmXHUwNDBmXHUwNDRlXHUwNDJlXHUwNDRhXHUwNDJhXHUwNDMwXHUwNDEwXHUwNDMxXHUwNDExXHUwNDQ2XHUwNDI2XHUwNDM0XHUwNDE0XHUwNDM1XHUwNDE1XHUwNDQ0XHUw''@;'; put 'put ''NDI0XHUwNDMzXHUwNDEzXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTA0NDVcdTA0MjVcdTA0MzhcdTA0MThcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTA0MzlcdTA0MTlcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTA0M2FcdTA0''@;'; put 'put ''MWFcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNceGE0XHUwNDNiXHUwNDFiXHUwNDNjXHUwNDFjXHUwNDNkXHUwNDFkXHUwNDNlXHUwNDFlXHUwNDNmXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUwNDFmXHUwNDRmXHUyNTgwXHUwNDJmXHUwNDQwXHUwNDIwXHUw''@;'; put 'put ''NDQxXHUwNDIxXHUwNDQyXHUwNDIyXHUwNDQzXHUwNDIzXHUwNDM2XHUwNDE2XHUwNDMyXHUwNDEyXHUwNDRjXHUwNDJjXHUyMTE2XHhhZFx1MDQ0Ylx1MDQyYlx1MDQzN1x1MDQxN1x1MDQ0OFx1MDQyOFx1MDQ0ZFx1MDQyZFx1MDQ0OVx1MDQyOVx1MDQ0N1x1MDQyN1x4YTdcdTI1YTBceGEw''@;'; put 'put ''In0saWJtODU1OiJjcDg1NSIsY3NpYm04NTU6ImNwODU1IixjcDg1Njp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTA1ZDBcdTA1ZDFcdTA1ZDJcdTA1ZDNcdTA1ZDRcdTA1ZDVcdTA1ZDZcdTA1ZDdcdTA1ZDhcdTA1ZDlcdTA1ZGFcdTA1ZGJcdTA1ZGNcdTA1ZGRcdTA1ZGVcdTA1ZGZcdTA1ZTBc''@;'; put 'put ''dTA1ZTFcdTA1ZTJcdTA1ZTNcdTA1ZTRcdTA1ZTVcdTA1ZTZcdTA1ZTdcdTA1ZThcdTA1ZTlcdTA1ZWFcdWZmZmRceGEzXHVmZmZkXHhkN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx4YWVceGFjXHhiZFx4YmNcdWZmZmRceGFi''@;'; put 'put ''XHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx4YTlcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRceGEyXHhhNVx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1ZmZmZFx1ZmZmZFx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2''@;'; put 'put ''Nlx1MjU2MFx1MjU1MFx1MjU2Y1x4YTRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRceGE2XHVmZmZkXHUyNTgwXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHhiNVx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx4YWZceGI0XHhhZFx4YjFcdTIwMTdceGJlXHhiNlx4YTdceGY3XHhiOFx4YjBceGE4XHhiN1x4YjlceGIzXHhiMlx1MjVhMFx4YTAifSxpYm04NTY6ImNwODU2Iixjc2libTg1NjoiY3A4NTYiLGNwODU3Ont0eXBlOiJfc2JjcyIs''@;'; put 'put ''Y2hhcnM6Ilx4YzdceGZjXHhlOVx4ZTJceGU0XHhlMFx4ZTVceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVcdTAxMzFceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmMlx4ZmJceGY5XHUwMTMwXHhkNlx4ZGNceGY4XHhhM1x4ZDhcdTAxNWVcdTAxNWZceGUxXHhlZFx4ZjNceGZhXHhmMVx4''@;'; put 'put ''ZDFcdTAxMWVcdTAxMWZceGJmXHhhZVx4YWNceGJkXHhiY1x4YTFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx4YzFceGMyXHhjMFx4YTlcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRceGEyXHhhNVx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUz''@;'; put 'put ''Y1x4ZTNceGMzXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHhhNFx4YmFceGFhXHhjYVx4Y2JceGM4XHVmZmZkXHhjZFx4Y2VceGNmXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHhhNlx4Y2NcdTI1ODBceGQzXHhkZlx4ZDRceGQyXHhmNVx4ZDVceGI1XHVmZmZk''@;'; put 'put ''XHhkN1x4ZGFceGRiXHhkOVx4ZWNceGZmXHhhZlx4YjRceGFkXHhiMVx1ZmZmZFx4YmVceGI2XHhhN1x4ZjdceGI4XHhiMFx4YThceGI3XHhiOVx4YjNceGIyXHUyNWEwXHhhMCJ9LGlibTg1NzoiY3A4NTciLGNzaWJtODU3OiJjcDg1NyIsY3A4NTg6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhj''@;'; put 'put ''N1x4ZmNceGU5XHhlMlx4ZTRceGUwXHhlNVx4ZTdceGVhXHhlYlx4ZThceGVmXHhlZVx4ZWNceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmMlx4ZmJceGY5XHhmZlx4ZDZceGRjXHhmOFx4YTNceGQ4XHhkN1x1MDE5Mlx4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx4''@;'; put 'put ''YWVceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRceGMxXHhjMlx4YzBceGE5XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHhhMlx4YTVcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NceGUzXHhjM1x1MjU1YVx1MjU1''@;'; put 'put ''NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x4YTRceGYwXHhkMFx4Y2FceGNiXHhjOFx1MjBhY1x4Y2RceGNlXHhjZlx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx4YTZceGNjXHUyNTgwXHhkM1x4ZGZceGQ0XHhkMlx4ZjVceGQ1XHhiNVx4ZmVceGRlXHhkYVx4ZGJceGQ5XHhmZFx4''@;'; put 'put ''ZGRceGFmXHhiNFx4YWRceGIxXHUyMDE3XHhiZVx4YjZceGE3XHhmN1x4YjhceGIwXHhhOFx4YjdceGI5XHhiM1x4YjJcdTI1YTBceGEwIn0saWJtODU4OiJjcDg1OCIsY3NpYm04NTg6ImNwODU4IixjcDg2MDp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM3XHhmY1x4ZTlceGUyXHhlM1x4ZTBc''@;'; put 'put ''eGMxXHhlN1x4ZWFceGNhXHhlOFx4Y2RceGQ0XHhlY1x4YzNceGMyXHhjOVx4YzBceGM4XHhmNFx4ZjVceGYyXHhkYVx4ZjlceGNjXHhkNVx4ZGNceGEyXHhhM1x4ZDlcdTIwYTdceGQzXHhlMVx4ZWRceGYzXHhmYVx4ZjFceGQxXHhhYVx4YmFceGJmXHhkMlx4YWNceGJkXHhiY1x4YTFceGFi''@;'; put 'put ''XHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2''@;'; put 'put ''OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNiMVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1''@;'; put 'put ''XHUwM2M0XHUwM2E2XHUwMzk4XHUwM2E5XHUwM2I0XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1MjMyMVx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIn0saWJtODYwOiJjcDg2MCIsY3NpYm04NjA6''@;'; put 'put ''ImNwODYwIixjcDg2MTp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM3XHhmY1x4ZTlceGUyXHhlNFx4ZTBceGU1XHhlN1x4ZWFceGViXHhlOFx4ZDBceGYwXHhkZVx4YzRceGM1XHhjOVx4ZTZceGM2XHhmNFx4ZjZceGZlXHhmYlx4ZGRceGZkXHhkNlx4ZGNceGY4XHhhM1x4ZDhcdTIwYTdcdTAx''@;'; put 'put ''OTJceGUxXHhlZFx4ZjNceGZhXHhjMVx4Y2RceGQzXHhkYVx4YmZcdTIzMTBceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBc''@;'; put 'put ''dTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1''@;'; put 'put ''ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhi''@;'; put 'put ''MFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCJ9LGlibTg2MToiY3A4NjEiLGNzaWJtODYxOiJjcDg2MSIsY3A4NjI6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNWQwXHUwNWQxXHUwNWQyXHUwNWQzXHUwNWQ0XHUwNWQ1XHUwNWQ2XHUwNWQ3XHUwNWQ4XHUwNWQ5XHUwNWRh''@;'; put 'put ''XHUwNWRiXHUwNWRjXHUwNWRkXHUwNWRlXHUwNWRmXHUwNWUwXHUwNWUxXHUwNWUyXHUwNWUzXHUwNWU0XHUwNWU1XHUwNWU2XHUwNWU3XHUwNWU4XHUwNWU5XHUwNWVhXHhhMlx4YTNceGE1XHUyMGE3XHUwMTkyXHhlMVx4ZWRceGYzXHhmYVx4ZjFceGQxXHhhYVx4YmFceGJmXHUyMzEwXHhh''@;'; put 'put ''Y1x4YmRceGJjXHhhMVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVm''@;'; put 'put ''XHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1MDNj''@;'; put 'put ''MFx1MDNhM1x1MDNjM1x4YjVcdTAzYzRcdTAzYTZcdTAzOThcdTAzYTlcdTAzYjRcdTIyMWVcdTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAifSxpYm04NjI6''@;'; put 'put ''ImNwODYyIixjc2libTg2MjoiY3A4NjIiLGNwODYzOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzdceGZjXHhlOVx4ZTJceGMyXHhlMFx4YjZceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVcdTIwMTdceGMwXHhhN1x4YzlceGM4XHhjYVx4ZjRceGNiXHhjZlx4ZmJceGY5XHhhNFx4ZDRceGRjXHhh''@;'; put 'put ''Mlx4YTNceGQ5XHhkYlx1MDE5Mlx4YTZceGI0XHhmM1x4ZmFceGE4XHhiOFx4YjNceGFmXHhjZVx1MjMxMFx4YWNceGJkXHhiY1x4YmVceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1''@;'; put 'put ''MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2''@;'; put 'put ''YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNiMVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1XHUwM2M0XHUwM2E2XHUwMzk4XHUwM2E5XHUwM2I0XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1''@;'; put 'put ''MjMyMVx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIn0saWJtODYzOiJjcDg2MyIsY3NpYm04NjM6ImNwODYzIixjcDg2NDp7dHlwZToiX3NiY3MiLGNoYXJzOiJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgw''@;'; put 'put ''Zlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyRcdTA2NmEmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8''@;'; put 'put ''fX5ceDdmXHhiMFx4YjdcdTIyMTlcdTIyMWFcdTI1OTJcdTI1MDBcdTI1MDJcdTI1M2NcdTI1MjRcdTI1MmNcdTI1MWNcdTI1MzRcdTI1MTBcdTI1MGNcdTI1MTRcdTI1MThcdTAzYjJcdTIyMWVcdTAzYzZceGIxXHhiZFx4YmNcdTIyNDhceGFiXHhiYlx1ZmVmN1x1ZmVmOFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmVmYlx1ZmVmY1x1ZmZmZFx4YTBceGFkXHVmZTgyXHhhM1x4YTRcdWZlODRcdWZmZmRcdWZmZmRcdWZlOGVcdWZlOGZcdWZlOTVcdWZlOTlcdTA2MGNcdWZlOWRcdWZlYTFcdWZlYTVcdTA2NjBcdTA2NjFcdTA2NjJcdTA2NjNcdTA2NjRcdTA2NjVcdTA2NjZcdTA2NjdcdTA2NjhcdTA2''@;'; put 'put ''NjlcdWZlZDFcdTA2MWJcdWZlYjFcdWZlYjVcdWZlYjlcdTA2MWZceGEyXHVmZTgwXHVmZTgxXHVmZTgzXHVmZTg1XHVmZWNhXHVmZThiXHVmZThkXHVmZTkxXHVmZTkzXHVmZTk3XHVmZTliXHVmZTlmXHVmZWEzXHVmZWE3XHVmZWE5XHVmZWFiXHVmZWFkXHVmZWFmXHVmZWIzXHVmZWI3XHVm''@;'; put 'put ''ZWJiXHVmZWJmXHVmZWMxXHVmZWM1XHVmZWNiXHVmZWNmXHhhNlx4YWNceGY3XHhkN1x1ZmVjOVx1MDY0MFx1ZmVkM1x1ZmVkN1x1ZmVkYlx1ZmVkZlx1ZmVlM1x1ZmVlN1x1ZmVlYlx1ZmVlZFx1ZmVlZlx1ZmVmM1x1ZmViZFx1ZmVjY1x1ZmVjZVx1ZmVjZFx1ZmVlMVx1ZmU3ZFx1MDY1MVx1''@;'; put 'put ''ZmVlNVx1ZmVlOVx1ZmVlY1x1ZmVmMFx1ZmVmMlx1ZmVkMFx1ZmVkNVx1ZmVmNVx1ZmVmNlx1ZmVkZFx1ZmVkOVx1ZmVmMVx1MjVhMFx1ZmZmZCJ9LGlibTg2NDoiY3A4NjQiLGNzaWJtODY0OiJjcDg2NCIsY3A4NjU6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjN1x4ZmNceGU5XHhlMlx4ZTRc''@;'; put 'put ''eGUwXHhlNVx4ZTdceGVhXHhlYlx4ZThceGVmXHhlZVx4ZWNceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmMlx4ZmJceGY5XHhmZlx4ZDZceGRjXHhmOFx4YTNceGQ4XHUyMGE3XHUwMTkyXHhlMVx4ZWRceGYzXHhmYVx4ZjFceGQxXHhhYVx4YmFceGJmXHUyMzEwXHhhY1x4YmRceGJj''@;'; put 'put ''XHhhMVx4YWJceGE0XHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUy''@;'; put 'put ''NTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1MDNjMFx1MDNhM1x1''@;'; put 'put ''MDNjM1x4YjVcdTAzYzRcdTAzYTZcdTAzOThcdTAzYTlcdTAzYjRcdTIyMWVcdTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAifSxpYm04NjU6ImNwODY1Iixj''@;'; put 'put ''c2libTg2NToiY3A4NjUiLGNwODY2Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1''@;'; put 'put ''MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQz''@;'; put 'put ''Zlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1''@;'; put 'put ''MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0''@;'; put 'put ''Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1MDQwMVx1MDQ1MVx1MDQwNFx1MDQ1NFx1MDQwN1x1MDQ1N1x1MDQwZVx1MDQ1ZVx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMTE2XHhhNFx1MjVhMFx4YTAifSxpYm04NjY6ImNwODY2Iixjc2li''@;'; put 'put ''bTg2NjoiY3A4NjYiLGNwODY5Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDM4Nlx1ZmZmZFx4YjdceGFjXHhhNlx1MjAxOFx1MjAxOVx1MDM4OFx1MjAxNVx1MDM4OVx1MDM4YVx1MDNhYVx1MDM4Y1x1ZmZmZFx1ZmZmZFx1MDM4''@;'; put 'put ''ZVx1MDNhYlx4YTlcdTAzOGZceGIyXHhiM1x1MDNhY1x4YTNcdTAzYWRcdTAzYWVcdTAzYWZcdTAzY2FcdTAzOTBcdTAzY2NcdTAzY2RcdTAzOTFcdTAzOTJcdTAzOTNcdTAzOTRcdTAzOTVcdTAzOTZcdTAzOTdceGJkXHUwMzk4XHUwMzk5XHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1''@;'; put 'put ''MDJcdTI1MjRcdTAzOWFcdTAzOWJcdTAzOWNcdTAzOWRcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTAzOWVcdTAzOWZcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTAzYTBcdTAzYTFcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNc''@;'; put 'put ''dTAzYTNcdTAzYTRcdTAzYTVcdTAzYTZcdTAzYTdcdTAzYThcdTAzYTlcdTAzYjFcdTAzYjJcdTAzYjNcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTAzYjRcdTAzYjVcdTI1ODBcdTAzYjZcdTAzYjdcdTAzYjhcdTAzYjlcdTAzYmFcdTAzYmJcdTAzYmNcdTAzYmRcdTAzYmVcdTAzYmZcdTAz''@;'; put 'put ''YzBcdTAzYzFcdTAzYzNcdTAzYzJcdTAzYzRcdTAzODRceGFkXHhiMVx1MDNjNVx1MDNjNlx1MDNjN1x4YTdcdTAzYzhcdTAzODVceGIwXHhhOFx1MDNjOVx1MDNjYlx1MDNiMFx1MDNjZVx1MjVhMFx4YTAifSxpYm04Njk6ImNwODY5Iixjc2libTg2OToiY3A4NjkiLGNwOTIyOnt0eXBlOiJf''@;'; put 'put ''c2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx4YTFceGEyXHhhM1x4YTRceGE1''@;'; put 'put ''XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHUyMDNlXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhj''@;'; put 'put ''ZVx4Y2ZcdTAxNjBceGQxXHhkMlx4ZDNceGQ0XHhkNVx4ZDZceGQ3XHhkOFx4ZDlceGRhXHhkYlx4ZGNceGRkXHUwMTdkXHhkZlx4ZTBceGUxXHhlMlx4ZTNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZcdTAxNjFceGYxXHhmMlx4ZjNceGY0XHhmNVx4''@;'; put 'put ''ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNceGZkXHUwMTdlXHhmZiJ9LGlibTkyMjoiY3A5MjIiLGNzaWJtOTIyOiJjcDkyMiIsY3AxMDQ2Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1ZmU4OFx4ZDdceGY3XHVmOGY2XHVmOGY1XHVmOGY0XHVmOGY3XHVmZTcxXHg4OFx1MjVhMFx1MjUwMlx1''@;'; put 'put ''MjUwMFx1MjUxMFx1MjUwY1x1MjUxNFx1MjUxOFx1ZmU3OVx1ZmU3Ylx1ZmU3ZFx1ZmU3Zlx1ZmU3N1x1ZmU4YVx1ZmVmMFx1ZmVmM1x1ZmVmMlx1ZmVjZVx1ZmVjZlx1ZmVkMFx1ZmVmNlx1ZmVmOFx1ZmVmYVx1ZmVmY1x4YTBcdWY4ZmFcdWY4ZjlcdWY4ZjhceGE0XHVmOGZiXHVmZThiXHVm''@;'; put 'put ''ZTkxXHVmZTk3XHVmZTliXHVmZTlmXHVmZWEzXHUwNjBjXHhhZFx1ZmVhN1x1ZmViM1x1MDY2MFx1MDY2MVx1MDY2Mlx1MDY2M1x1MDY2NFx1MDY2NVx1MDY2Nlx1MDY2N1x1MDY2OFx1MDY2OVx1ZmViN1x1MDYxYlx1ZmViYlx1ZmViZlx1ZmVjYVx1MDYxZlx1ZmVjYlx1MDYyMVx1MDYyMlx1''@;'; put 'put ''MDYyM1x1MDYyNFx1MDYyNVx1MDYyNlx1MDYyN1x1MDYyOFx1MDYyOVx1MDYyYVx1MDYyYlx1MDYyY1x1MDYyZFx1MDYyZVx1MDYyZlx1MDYzMFx1MDYzMVx1MDYzMlx1MDYzM1x1MDYzNFx1MDYzNVx1MDYzNlx1MDYzN1x1ZmVjN1x1MDYzOVx1MDYzYVx1ZmVjY1x1ZmU4Mlx1ZmU4NFx1ZmU4''@;'; put 'put ''ZVx1ZmVkM1x1MDY0MFx1MDY0MVx1MDY0Mlx1MDY0M1x1MDY0NFx1MDY0NVx1MDY0Nlx1MDY0N1x1MDY0OFx1MDY0OVx1MDY0YVx1MDY0Ylx1MDY0Y1x1MDY0ZFx1MDY0ZVx1MDY0Zlx1MDY1MFx1MDY1MVx1MDY1Mlx1ZmVkN1x1ZmVkYlx1ZmVkZlx1ZjhmY1x1ZmVmNVx1ZmVmN1x1ZmVmOVx1''@;'; put 'put ''ZmVmYlx1ZmVlM1x1ZmVlN1x1ZmVlY1x1ZmVlOVx1ZmZmZCJ9LGlibTEwNDY6ImNwMTA0NiIsY3NpYm0xMDQ2OiJjcDEwNDYiLGNwMTEyNDp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhm''@;'; put 'put ''XHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTA0MDFcdTA0MDJcdTA0OTBcdTA0MDRcdTA0MDVcdTA0MDZcdTA0MDdcdTA0MDhcdTA0MDlcdTA0MGFcdTA0MGJcdTA0MGNceGFkXHUwNDBlXHUwNDBmXHUwNDEwXHUw''@;'; put 'put ''NDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJj''@;'; put 'put ''XHUwNDJkXHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUw''@;'; put 'put ''NDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmXHUyMTE2XHUwNDUxXHUwNDUyXHUwNDkxXHUwNDU0XHUwNDU1XHUwNDU2XHUwNDU3XHUwNDU4XHUwNDU5XHUwNDVhXHUwNDViXHUwNDVjXHhhN1x1MDQ1ZVx1MDQ1ZiJ9LGlibTExMjQ6ImNwMTEyNCIsY3NpYm0x''@;'; put 'put ''MTI0OiJjcDExMjQiLGNwMTEyNTp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0''@;'; put 'put ''MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2Zc''@;'; put 'put ''dTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1''@;'; put 'put ''NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZc''@;'; put 'put ''dTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGZcdTA0MDFcdTA0NTFcdTA0OTBcdTA0OTFcdTA0MDRcdTA0NTRcdTA0MDZcdTA0NTZcdTA0MDdcdTA0NTdceGI3XHUyMjFhXHUyMTE2XHhhNFx1MjVhMFx4YTAifSxpYm0xMTI1OiJjcDExMjUiLGNz''@;'; put 'put ''aWJtMTEyNToiY3AxMTI1IixjcDExMjk6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlk''@;'; put 'put ''XHg5ZVx4OWZceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x1MDE1M1x4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHUwMTc4XHhiNVx4YjZceGI3XHUwMTUyXHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx1MDEwMlx4YzRc''@;'; put 'put ''eGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHUwMzAwXHhjZFx4Y2VceGNmXHUwMTEwXHhkMVx1MDMwOVx4ZDNceGQ0XHUwMWEwXHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x1MDFhZlx1MDMwM1x4ZGZceGUwXHhlMVx4ZTJcdTAxMDNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVh''@;'; put 'put ''XHhlYlx1MDMwMVx4ZWRceGVlXHhlZlx1MDExMVx4ZjFcdTAzMjNceGYzXHhmNFx1MDFhMVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNcdTAxYjBcdTIwYWJceGZmIn0saWJtMTEyOToiY3AxMTI5Iixjc2libTExMjk6ImNwMTEyOSIsY3AxMTMzOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4''@;'; put 'put ''ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MGU4MVx1MGU4Mlx1MGU4NFx1MGU4N1x1MGU4OFx1MGVh''@;'; put 'put ''YVx1MGU4YVx1MGU4ZFx1MGU5NFx1MGU5NVx1MGU5Nlx1MGU5N1x1MGU5OVx1MGU5YVx1MGU5Ylx1MGU5Y1x1MGU5ZFx1MGU5ZVx1MGU5Zlx1MGVhMVx1MGVhMlx1MGVhM1x1MGVhNVx1MGVhN1x1MGVhYlx1MGVhZFx1MGVhZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MGVhZlx1MGViMFx1MGViMlx1''@;'; put 'put ''MGViM1x1MGViNFx1MGViNVx1MGViNlx1MGViN1x1MGViOFx1MGViOVx1MGViY1x1MGViMVx1MGViYlx1MGViZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MGVjMFx1MGVjMVx1MGVjMlx1MGVjM1x1MGVjNFx1MGVjOFx1MGVjOVx1MGVjYVx1MGVjYlx1MGVjY1x1MGVjZFx1MGVjNlx1ZmZmZFx1MGVk''@;'; put 'put ''Y1x1MGVkZFx1MjBhZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MGVkMFx1MGVkMVx1MGVkMlx1MGVkM1x1MGVkNFx1MGVkNVx1MGVkNlx1MGVkN1x1MGVkOFx1''@;'; put 'put ''MGVkOVx1ZmZmZFx1ZmZmZFx4YTJceGFjXHhhNlx1ZmZmZCJ9LGlibTExMzM6ImNwMTEzMyIsY3NpYm0xMTMzOiJjcDExMzMiLGNwMTE2MTp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTBlNDhcdTBlMDFcdTBlMDJcdTBlMDNcdTBlMDRcdTBlMDVc''@;'; put 'put ''dTBlMDZcdTBlMDdcdTBlMDhcdTBlMDlcdTBlMGFcdTBlMGJcdTBlMGNcdTBlMGRcdTBlMGVcdTBlMGZcdTBlMTBcdTBlMTFcdTBlMTJcdTBlMTNcdTBlMTRcdTBlMTVcdTBlMTZcdTBlMTdcdTBlMThcdTBlMTlcdTBlMWFcdTBlMWJcdTBlMWNcdTBlMWRcdTBlMWVcdTBlMWZcdTBlMjBcdTBl''@;'; put 'put ''MjFcdTBlMjJcdTBlMjNcdTBlMjRcdTBlMjVcdTBlMjZcdTBlMjdcdTBlMjhcdTBlMjlcdTBlMmFcdTBlMmJcdTBlMmNcdTBlMmRcdTBlMmVcdTBlMmZcdTBlMzBcdTBlMzFcdTBlMzJcdTBlMzNcdTBlMzRcdTBlMzVcdTBlMzZcdTBlMzdcdTBlMzhcdTBlMzlcdTBlM2FcdTBlNDlcdTBlNGFc''@;'; put 'put ''dTBlNGJcdTIwYWNcdTBlM2ZcdTBlNDBcdTBlNDFcdTBlNDJcdTBlNDNcdTBlNDRcdTBlNDVcdTBlNDZcdTBlNDdcdTBlNDhcdTBlNDlcdTBlNGFcdTBlNGJcdTBlNGNcdTBlNGRcdTBlNGVcdTBlNGZcdTBlNTBcdTBlNTFcdTBlNTJcdTBlNTNcdTBlNTRcdTBlNTVcdTBlNTZcdTBlNTdcdTBl''@;'; put 'put ''NThcdTBlNTlcdTBlNWFcdTBlNWJceGEyXHhhY1x4YTZceGEwIn0saWJtMTE2MToiY3AxMTYxIixjc2libTExNjE6ImNwMTE2MSIsY3AxMTYyOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjBhY1x4ODFceDgyXHg4M1x4ODRcdTIwMjZceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4''@;'; put 'put ''OGVceDhmXHg5MFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MGUwMVx1MGUwMlx1MGUwM1x1MGUwNFx1MGUwNVx1MGUwNlx1MGUwN1x1MGUwOFx1MGUwOVx1MGUwYVx1MGUwYlx1MGUwY1x1MGUw''@;'; put 'put ''ZFx1MGUwZVx1MGUwZlx1MGUxMFx1MGUxMVx1MGUxMlx1MGUxM1x1MGUxNFx1MGUxNVx1MGUxNlx1MGUxN1x1MGUxOFx1MGUxOVx1MGUxYVx1MGUxYlx1MGUxY1x1MGUxZFx1MGUxZVx1MGUxZlx1MGUyMFx1MGUyMVx1MGUyMlx1MGUyM1x1MGUyNFx1MGUyNVx1MGUyNlx1MGUyN1x1MGUyOFx1''@;'; put 'put ''MGUyOVx1MGUyYVx1MGUyYlx1MGUyY1x1MGUyZFx1MGUyZVx1MGUyZlx1MGUzMFx1MGUzMVx1MGUzMlx1MGUzM1x1MGUzNFx1MGUzNVx1MGUzNlx1MGUzN1x1MGUzOFx1MGUzOVx1MGUzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MGUzZlx1MGU0MFx1MGU0MVx1MGU0Mlx1MGU0M1x1MGU0''@;'; put 'put ''NFx1MGU0NVx1MGU0Nlx1MGU0N1x1MGU0OFx1MGU0OVx1MGU0YVx1MGU0Ylx1MGU0Y1x1MGU0ZFx1MGU0ZVx1MGU0Zlx1MGU1MFx1MGU1MVx1MGU1Mlx1MGU1M1x1MGU1NFx1MGU1NVx1MGU1Nlx1MGU1N1x1MGU1OFx1MGU1OVx1MGU1YVx1MGU1Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCJ9''@;'; put 'put ''LGlibTExNjI6ImNwMTE2MiIsY3NpYm0xMTYyOiJjcDExNjIiLGNwMTE2Mzp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4''@;'; put 'put ''XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBceGExXHhhMlx4YTNcdTIwYWNceGE1XHhhNlx4YTdcdTAxNTNceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x1MDE3OFx4YjVceGI2XHhiN1x1MDE1Mlx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZc''@;'; put 'put ''eGMwXHhjMVx4YzJcdTAxMDJceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx1MDMwMFx4Y2RceGNlXHhjZlx1MDExMFx4ZDFcdTAzMDlceGQzXHhkNFx1MDFhMFx4ZDZceGQ3XHhkOFx4ZDlceGRhXHhkYlx4ZGNcdTAxYWZcdTAzMDNceGRmXHhlMFx4ZTFceGUyXHUwMTAzXHhlNFx4''@;'; put 'put ''ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJcdTAzMDFceGVkXHhlZVx4ZWZcdTAxMTFceGYxXHUwMzIzXHhmM1x4ZjRcdTAxYTFceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHUwMWIwXHUyMGFiXHhmZiJ9LGlibTExNjM6ImNwMTE2MyIsY3NpYm0xMTYzOiJjcDExNjMiLG1hY2Nyb2F0''@;'; put 'put ''aWFuOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzRceGM1XHhjN1x4YzlceGQxXHhkNlx4ZGNceGUxXHhlMFx4ZTJceGU0XHhlM1x4ZTVceGU3XHhlOVx4ZThceGVhXHhlYlx4ZWRceGVjXHhlZVx4ZWZceGYxXHhmM1x4ZjJceGY0XHhmNlx4ZjVceGZhXHhmOVx4ZmJceGZjXHUyMDIwXHhiMFx4''@;'; put 'put ''YTJceGEzXHhhN1x1MjAyMlx4YjZceGRmXHhhZVx1MDE2MFx1MjEyMlx4YjRceGE4XHUyMjYwXHUwMTdkXHhkOFx1MjIxZVx4YjFcdTIyNjRcdTIyNjVcdTIyMDZceGI1XHUyMjAyXHUyMjExXHUyMjBmXHUwMTYxXHUyMjJiXHhhYVx4YmFcdTIxMjZcdTAxN2VceGY4XHhiZlx4YTFceGFjXHUy''@;'; put 'put ''MjFhXHUwMTkyXHUyMjQ4XHUwMTA2XHhhYlx1MDEwY1x1MjAyNlx4YTBceGMwXHhjM1x4ZDVcdTAxNTJcdTAxNTNcdTAxMTBcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNhXHVmZmZkXHhhOVx1MjA0NFx4YTRcdTIwMzlcdTIwM2FceGM2XHhiYlx1MjAxM1x4YjdcdTIw''@;'; put 'put ''MWFcdTIwMWVcdTIwMzBceGMyXHUwMTA3XHhjMVx1MDEwZFx4YzhceGNkXHhjZVx4Y2ZceGNjXHhkM1x4ZDRcdTAxMTFceGQyXHhkYVx4ZGJceGQ5XHUwMTMxXHUwMmM2XHUwMmRjXHhhZlx1MDNjMFx4Y2JcdTAyZGFceGI4XHhjYVx4ZTZcdTAyYzcifSxtYWNjeXJpbGxpYzp7dHlwZToiX3Ni''@;'; put 'put ''Y3MiLGNoYXJzOiJcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0''@;'; put 'put ''MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTIwMjBceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx1MDQwNlx4YWVceGE5XHUyMTIyXHUwNDAyXHUwNDUyXHUyMjYwXHUwNDAzXHUwNDUzXHUyMjFlXHhiMVx1MjI2NFx1MjI2NVx1MDQ1Nlx4YjVcdTIyMDJcdTA0MDhc''@;'; put 'put ''dTA0MDRcdTA0NTRcdTA0MDdcdTA0NTdcdTA0MDlcdTA0NTlcdTA0MGFcdTA0NWFcdTA0NThcdTA0MDVceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHUwNDBiXHUwNDViXHUwNDBjXHUwNDVjXHUwNDU1XHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4''@;'; put 'put ''XHUyMDE5XHhmN1x1MjAxZVx1MDQwZVx1MDQ1ZVx1MDQwZlx1MDQ1Zlx1MjExNlx1MDQwMVx1MDQ1MVx1MDQ0Zlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0''@;'; put 'put ''MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx4YTQifSxtYWNncmVlazp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM0XHhiOVx4YjJceGM5XHhiM1x4ZDZceGRjXHUwMzg1XHhlMFx4ZTJc''@;'; put 'put ''eGU0XHUwMzg0XHhhOFx4ZTdceGU5XHhlOFx4ZWFceGViXHhhM1x1MjEyMlx4ZWVceGVmXHUyMDIyXHhiZFx1MjAzMFx4ZjRceGY2XHhhNlx4YWRceGY5XHhmYlx4ZmNcdTIwMjBcdTAzOTNcdTAzOTRcdTAzOThcdTAzOWJcdTAzOWVcdTAzYTBceGRmXHhhZVx4YTlcdTAzYTNcdTAzYWFceGE3''@;'; put 'put ''XHUyMjYwXHhiMFx1MDM4N1x1MDM5MVx4YjFcdTIyNjRcdTIyNjVceGE1XHUwMzkyXHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk5XHUwMzlhXHUwMzljXHUwM2E2XHUwM2FiXHUwM2E4XHUwM2E5XHUwM2FjXHUwMzlkXHhhY1x1MDM5Zlx1MDNhMVx1MjI0OFx1MDNhNFx4YWJceGJiXHUyMDI2XHhh''@;'; put 'put ''MFx1MDNhNVx1MDNhN1x1MDM4Nlx1MDM4OFx1MDE1M1x1MjAxM1x1MjAxNVx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTAzODlcdTAzOGFcdTAzOGNcdTAzOGVcdTAzYWRcdTAzYWVcdTAzYWZcdTAzY2NcdTAzOGZcdTAzY2RcdTAzYjFcdTAzYjJcdTAzYzhcdTAzYjRcdTAzYjVcdTAz''@;'; put 'put ''YzZcdTAzYjNcdTAzYjdcdTAzYjlcdTAzYmVcdTAzYmFcdTAzYmJcdTAzYmNcdTAzYmRcdTAzYmZcdTAzYzBcdTAzY2VcdTAzYzFcdTAzYzNcdTAzYzRcdTAzYjhcdTAzYzlcdTAzYzJcdTAzYzdcdTAzYzVcdTAzYjZcdTAzY2FcdTAzY2JcdTAzOTBcdTAzYjBcdWZmZmQifSxtYWNpY2VsYW5k''@;'; put 'put ''Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzRceGM1XHhjN1x4YzlceGQxXHhkNlx4ZGNceGUxXHhlMFx4ZTJceGU0XHhlM1x4ZTVceGU3XHhlOVx4ZThceGVhXHhlYlx4ZWRceGVjXHhlZVx4ZWZceGYxXHhmM1x4ZjJceGY0XHhmNlx4ZjVceGZhXHhmOVx4ZmJceGZjXHhkZFx4YjBceGEyXHhh''@;'; put 'put ''M1x4YTdcdTIwMjJceGI2XHhkZlx4YWVceGE5XHUyMTIyXHhiNFx4YThcdTIyNjBceGM2XHhkOFx1MjIxZVx4YjFcdTIyNjRcdTIyNjVceGE1XHhiNVx1MjIwMlx1MjIxMVx1MjIwZlx1MDNjMFx1MjIyYlx4YWFceGJhXHUyMTI2XHhlNlx4ZjhceGJmXHhhMVx4YWNcdTIyMWFcdTAxOTJcdTIy''@;'; put 'put ''NDhcdTIyMDZceGFiXHhiYlx1MjAyNlx4YTBceGMwXHhjM1x4ZDVcdTAxNTJcdTAxNTNcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNhXHhmZlx1MDE3OFx1MjA0NFx4YTRceGQwXHhmMFx4ZGVceGZlXHhmZFx4YjdcdTIwMWFcdTIwMWVcdTIwMzBceGMyXHhj''@;'; put 'put ''YVx4YzFceGNiXHhjOFx4Y2RceGNlXHhjZlx4Y2NceGQzXHhkNFx1ZmZmZFx4ZDJceGRhXHhkYlx4ZDlcdTAxMzFcdTAyYzZcdTAyZGNceGFmXHUwMmQ4XHUwMmQ5XHUwMmRhXHhiOFx1MDJkZFx1MDJkYlx1MDJjNyJ9LG1hY3JvbWFuOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzRceGM1XHhj''@;'; put 'put ''N1x4YzlceGQxXHhkNlx4ZGNceGUxXHhlMFx4ZTJceGU0XHhlM1x4ZTVceGU3XHhlOVx4ZThceGVhXHhlYlx4ZWRceGVjXHhlZVx4ZWZceGYxXHhmM1x4ZjJceGY0XHhmNlx4ZjVceGZhXHhmOVx4ZmJceGZjXHUyMDIwXHhiMFx4YTJceGEzXHhhN1x1MjAyMlx4YjZceGRmXHhhZVx4YTlcdTIx''@;'; put 'put ''MjJceGI0XHhhOFx1MjI2MFx4YzZceGQ4XHUyMjFlXHhiMVx1MjI2NFx1MjI2NVx4YTVceGI1XHUyMjAyXHUyMjExXHUyMjBmXHUwM2MwXHUyMjJiXHhhYVx4YmFcdTIxMjZceGU2XHhmOFx4YmZceGExXHhhY1x1MjIxYVx1MDE5Mlx1MjI0OFx1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx4YzBc''@;'; put 'put ''eGMzXHhkNVx1MDE1Mlx1MDE1M1x1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTI1Y2FceGZmXHUwMTc4XHUyMDQ0XHhhNFx1MjAzOVx1MjAzYVx1ZmIwMVx1ZmIwMlx1MjAyMVx4YjdcdTIwMWFcdTIwMWVcdTIwMzBceGMyXHhjYVx4YzFceGNiXHhjOFx4Y2RceGNl''@;'; put 'put ''XHhjZlx4Y2NceGQzXHhkNFx1ZmZmZFx4ZDJceGRhXHhkYlx4ZDlcdTAxMzFcdTAyYzZcdTAyZGNceGFmXHUwMmQ4XHUwMmQ5XHUwMmRhXHhiOFx1MDJkZFx1MDJkYlx1MDJjNyJ9LG1hY3JvbWFuaWE6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjNFx4YzVceGM3XHhjOVx4ZDFceGQ2XHhkY1x4''@;'; put 'put ''ZTFceGUwXHhlMlx4ZTRceGUzXHhlNVx4ZTdceGU5XHhlOFx4ZWFceGViXHhlZFx4ZWNceGVlXHhlZlx4ZjFceGYzXHhmMlx4ZjRceGY2XHhmNVx4ZmFceGY5XHhmYlx4ZmNcdTIwMjBceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx4ZGZceGFlXHhhOVx1MjEyMlx4YjRceGE4XHUyMjYwXHUw''@;'; put 'put ''MTAyXHUwMTVlXHUyMjFlXHhiMVx1MjI2NFx1MjI2NVx4YTVceGI1XHUyMjAyXHUyMjExXHUyMjBmXHUwM2MwXHUyMjJiXHhhYVx4YmFcdTIxMjZcdTAxMDNcdTAxNWZceGJmXHhhMVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIyMDZceGFiXHhiYlx1MjAyNlx4YTBceGMwXHhjM1x4ZDVcdTAx''@;'; put 'put ''NTJcdTAxNTNcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNhXHhmZlx1MDE3OFx1MjA0NFx4YTRcdTIwMzlcdTIwM2FcdTAxNjJcdTAxNjNcdTIwMjFceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx4Y2FceGMxXHhjYlx4YzhceGNkXHhjZVx4Y2ZceGNjXHhk''@;'; put 'put ''M1x4ZDRcdWZmZmRceGQyXHhkYVx4ZGJceGQ5XHUwMTMxXHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1MDJkYVx4YjhcdTAyZGRcdTAyZGJcdTAyYzcifSxtYWN0aGFpOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YWJceGJiXHUyMDI2XHVmODhjXHVmODhmXHVmODkyXHVmODk1XHVmODk4''@;'; put 'put ''XHVmODhiXHVmODhlXHVmODkxXHVmODk0XHVmODk3XHUyMDFjXHUyMDFkXHVmODk5XHVmZmZkXHUyMDIyXHVmODg0XHVmODg5XHVmODg1XHVmODg2XHVmODg3XHVmODg4XHVmODhhXHVmODhkXHVmODkwXHVmODkzXHVmODk2XHUyMDE4XHUyMDE5XHVmZmZkXHhhMFx1MGUwMVx1MGUwMlx1MGUw''@;'; put 'put ''M1x1MGUwNFx1MGUwNVx1MGUwNlx1MGUwN1x1MGUwOFx1MGUwOVx1MGUwYVx1MGUwYlx1MGUwY1x1MGUwZFx1MGUwZVx1MGUwZlx1MGUxMFx1MGUxMVx1MGUxMlx1MGUxM1x1MGUxNFx1MGUxNVx1MGUxNlx1MGUxN1x1MGUxOFx1MGUxOVx1MGUxYVx1MGUxYlx1MGUxY1x1MGUxZFx1MGUxZVx1''@;'; put 'put ''MGUxZlx1MGUyMFx1MGUyMVx1MGUyMlx1MGUyM1x1MGUyNFx1MGUyNVx1MGUyNlx1MGUyN1x1MGUyOFx1MGUyOVx1MGUyYVx1MGUyYlx1MGUyY1x1MGUyZFx1MGUyZVx1MGUyZlx1MGUzMFx1MGUzMVx1MGUzMlx1MGUzM1x1MGUzNFx1MGUzNVx1MGUzNlx1MGUzN1x1MGUzOFx1MGUzOVx1MGUz''@;'; put 'put ''YVx1ZmVmZlx1MjAwYlx1MjAxM1x1MjAxNFx1MGUzZlx1MGU0MFx1MGU0MVx1MGU0Mlx1MGU0M1x1MGU0NFx1MGU0NVx1MGU0Nlx1MGU0N1x1MGU0OFx1MGU0OVx1MGU0YVx1MGU0Ylx1MGU0Y1x1MGU0ZFx1MjEyMlx1MGU0Zlx1MGU1MFx1MGU1MVx1MGU1Mlx1MGU1M1x1MGU1NFx1MGU1NVx1''@;'; put 'put ''MGU1Nlx1MGU1N1x1MGU1OFx1MGU1OVx4YWVceGE5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIn0sbWFjdHVya2lzaDp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM0XHhjNVx4YzdceGM5XHhkMVx4ZDZceGRjXHhlMVx4ZTBceGUyXHhlNFx4ZTNceGU1XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGVk''@;'; put 'put ''XHhlY1x4ZWVceGVmXHhmMVx4ZjNceGYyXHhmNFx4ZjZceGY1XHhmYVx4ZjlceGZiXHhmY1x1MjAyMFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2XHhkZlx4YWVceGE5XHUyMTIyXHhiNFx4YThcdTIyNjBceGM2XHhkOFx1MjIxZVx4YjFcdTIyNjRcdTIyNjVceGE1XHhiNVx1MjIwMlx1MjIx''@;'; put 'put ''MVx1MjIwZlx1MDNjMFx1MjIyYlx4YWFceGJhXHUyMTI2XHhlNlx4ZjhceGJmXHhhMVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIyMDZceGFiXHhiYlx1MjAyNlx4YTBceGMwXHhjM1x4ZDVcdTAxNTJcdTAxNTNcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNh''@;'; put 'put ''XHhmZlx1MDE3OFx1MDExZVx1MDExZlx1MDEzMFx1MDEzMVx1MDE1ZVx1MDE1Zlx1MjAyMVx4YjdcdTIwMWFcdTIwMWVcdTIwMzBceGMyXHhjYVx4YzFceGNiXHhjOFx4Y2RceGNlXHhjZlx4Y2NceGQzXHhkNFx1ZmZmZFx4ZDJceGRhXHhkYlx4ZDlcdWZmZmRcdTAyYzZcdTAyZGNceGFmXHUw''@;'; put 'put ''MmQ4XHUwMmQ5XHUwMmRhXHhiOFx1MDJkZFx1MDJkYlx1MDJjNyJ9LG1hY3VrcmFpbmU6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUw''@;'; put 'put ''NDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUyMDIwXHhiMFx1MDQ5MFx4YTNceGE3XHUyMDIyXHhiNlx1MDQwNlx4YWVceGE5XHUyMTIyXHUwNDAyXHUwNDUy''@;'; put 'put ''XHUyMjYwXHUwNDAzXHUwNDUzXHUyMjFlXHhiMVx1MjI2NFx1MjI2NVx1MDQ1Nlx4YjVcdTA0OTFcdTA0MDhcdTA0MDRcdTA0NTRcdTA0MDdcdTA0NTdcdTA0MDlcdTA0NTlcdTA0MGFcdTA0NWFcdTA0NThcdTA0MDVceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZc''@;'; put 'put ''eGEwXHUwNDBiXHUwNDViXHUwNDBjXHUwNDVjXHUwNDU1XHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjAxZVx1MDQwZVx1MDQ1ZVx1MDQwZlx1MDQ1Zlx1MjExNlx1MDQwMVx1MDQ1MVx1MDQ0Zlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1''@;'; put 'put ''MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx4YTQifSxrb2k4cjp7dHlw''@;'; put 'put ''ZToiX3NiY3MiLGNoYXJzOiJcdTI1MDBcdTI1MDJcdTI1MGNcdTI1MTBcdTI1MTRcdTI1MThcdTI1MWNcdTI1MjRcdTI1MmNcdTI1MzRcdTI1M2NcdTI1ODBcdTI1ODRcdTI1ODhcdTI1OGNcdTI1OTBcdTI1OTFcdTI1OTJcdTI1OTNcdTIzMjBcdTI1YTBcdTIyMTlcdTIyMWFcdTIyNDhcdTIy''@;'; put 'put ''NjRcdTIyNjVceGEwXHUyMzIxXHhiMFx4YjJceGI3XHhmN1x1MjU1MFx1MjU1MVx1MjU1Mlx1MDQ1MVx1MjU1M1x1MjU1NFx1MjU1NVx1MjU1Nlx1MjU1N1x1MjU1OFx1MjU1OVx1MjU1YVx1MjU1Ylx1MjU1Y1x1MjU1ZFx1MjU1ZVx1MjU1Zlx1MjU2MFx1MjU2MVx1MDQwMVx1MjU2Mlx1MjU2''@;'; put 'put ''M1x1MjU2NFx1MjU2NVx1MjU2Nlx1MjU2N1x1MjU2OFx1MjU2OVx1MjU2YVx1MjU2Ylx1MjU2Y1x4YTlcdTA0NGVcdTA0MzBcdTA0MzFcdTA0NDZcdTA0MzRcdTA0MzVcdTA0NDRcdTA0MzNcdTA0NDVcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0''@;'; put 'put ''NGZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0MzZcdTA0MzJcdTA0NGNcdTA0NGJcdTA0MzdcdTA0NDhcdTA0NGRcdTA0NDlcdTA0NDdcdTA0NGFcdTA0MmVcdTA0MTBcdTA0MTFcdTA0MjZcdTA0MTRcdTA0MTVcdTA0MjRcdTA0MTNcdTA0MjVcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJc''@;'; put 'put ''dTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MmZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MTZcdTA0MTJcdTA0MmNcdTA0MmJcdTA0MTdcdTA0MjhcdTA0MmRcdTA0MjlcdTA0MjdcdTA0MmEifSxrb2k4dTp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTI1MDBcdTI1MDJcdTI1MGNcdTI1''@;'; put 'put ''MTBcdTI1MTRcdTI1MThcdTI1MWNcdTI1MjRcdTI1MmNcdTI1MzRcdTI1M2NcdTI1ODBcdTI1ODRcdTI1ODhcdTI1OGNcdTI1OTBcdTI1OTFcdTI1OTJcdTI1OTNcdTIzMjBcdTI1YTBcdTIyMTlcdTIyMWFcdTIyNDhcdTIyNjRcdTIyNjVceGEwXHUyMzIxXHhiMFx4YjJceGI3XHhmN1x1MjU1''@;'; put 'put ''MFx1MjU1MVx1MjU1Mlx1MDQ1MVx1MDQ1NFx1MjU1NFx1MDQ1Nlx1MDQ1N1x1MjU1N1x1MjU1OFx1MjU1OVx1MjU1YVx1MjU1Ylx1MDQ5MVx1MjU1ZFx1MjU1ZVx1MjU1Zlx1MjU2MFx1MjU2MVx1MDQwMVx1MDQwNFx1MjU2M1x1MDQwNlx1MDQwN1x1MjU2Nlx1MjU2N1x1MjU2OFx1MjU2OVx1''@;'; put 'put ''MjU2YVx1MDQ5MFx1MjU2Y1x4YTlcdTA0NGVcdTA0MzBcdTA0MzFcdTA0NDZcdTA0MzRcdTA0MzVcdTA0NDRcdTA0MzNcdTA0NDVcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NGZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0MzZcdTA0MzJc''@;'; put 'put ''dTA0NGNcdTA0NGJcdTA0MzdcdTA0NDhcdTA0NGRcdTA0NDlcdTA0NDdcdTA0NGFcdTA0MmVcdTA0MTBcdTA0MTFcdTA0MjZcdTA0MTRcdTA0MTVcdTA0MjRcdTA0MTNcdTA0MjVcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MmZcdTA0MjBcdTA0''@;'; put 'put ''MjFcdTA0MjJcdTA0MjNcdTA0MTZcdTA0MTJcdTA0MmNcdTA0MmJcdTA0MTdcdTA0MjhcdTA0MmRcdTA0MjlcdTA0MjdcdTA0MmEifSxrb2k4cnU6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUyNTAwXHUyNTAyXHUyNTBjXHUyNTEwXHUyNTE0XHUyNTE4XHUyNTFjXHUyNTI0XHUyNTJjXHUyNTM0''@;'; put 'put ''XHUyNTNjXHUyNTgwXHUyNTg0XHUyNTg4XHUyNThjXHUyNTkwXHUyNTkxXHUyNTkyXHUyNTkzXHUyMzIwXHUyNWEwXHUyMjE5XHUyMjFhXHUyMjQ4XHUyMjY0XHUyMjY1XHhhMFx1MjMyMVx4YjBceGIyXHhiN1x4ZjdcdTI1NTBcdTI1NTFcdTI1NTJcdTA0NTFcdTA0NTRcdTI1NTRcdTA0NTZc''@;'; put 'put ''dTA0NTdcdTI1NTdcdTI1NThcdTI1NTlcdTI1NWFcdTI1NWJcdTA0OTFcdTA0NWVcdTI1NWVcdTI1NWZcdTI1NjBcdTI1NjFcdTA0MDFcdTA0MDRcdTI1NjNcdTA0MDZcdTA0MDdcdTI1NjZcdTI1NjdcdTI1NjhcdTI1NjlcdTI1NmFcdTA0OTBcdTA0MGVceGE5XHUwNDRlXHUwNDMwXHUwNDMx''@;'; put 'put ''XHUwNDQ2XHUwNDM0XHUwNDM1XHUwNDQ0XHUwNDMzXHUwNDQ1XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDRmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDM2XHUwNDMyXHUwNDRjXHUwNDRiXHUwNDM3XHUwNDQ4XHUwNDRkXHUwNDQ5XHUw''@;'; put 'put ''NDQ3XHUwNDRhXHUwNDJlXHUwNDEwXHUwNDExXHUwNDI2XHUwNDE0XHUwNDE1XHUwNDI0XHUwNDEzXHUwNDI1XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDJmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDE2XHUwNDEyXHUwNDJjXHUwNDJi''@;'; put 'put ''XHUwNDE3XHUwNDI4XHUwNDJkXHUwNDI5XHUwNDI3XHUwNDJhIn0sa29pOHQ6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNDliXHUwNDkzXHUyMDFhXHUwNDkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHVmZmZkXHUyMDMwXHUwNGIzXHUyMDM5XHUwNGIyXHUwNGI3XHUwNGI2XHVmZmZkXHUw''@;'; put 'put ''NDlhXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHUyMTIyXHVmZmZkXHUyMDNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwNGVmXHUwNGVlXHUwNDUxXHhhNFx1MDRlM1x4YTZceGE3XHVmZmZkXHVmZmZkXHVmZmZkXHhhYlx4YWNceGFk''@;'; put 'put ''XHhhZVx1ZmZmZFx4YjBceGIxXHhiMlx1MDQwMVx1ZmZmZFx1MDRlMlx4YjZceGI3XHVmZmZkXHUyMTE2XHVmZmZkXHhiYlx1ZmZmZFx1ZmZmZFx1ZmZmZFx4YTlcdTA0NGVcdTA0MzBcdTA0MzFcdTA0NDZcdTA0MzRcdTA0MzVcdTA0NDRcdTA0MzNcdTA0NDVcdTA0MzhcdTA0MzlcdTA0M2Fc''@;'; put 'put ''dTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NGZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0MzZcdTA0MzJcdTA0NGNcdTA0NGJcdTA0MzdcdTA0NDhcdTA0NGRcdTA0NDlcdTA0NDdcdTA0NGFcdTA0MmVcdTA0MTBcdTA0MTFcdTA0MjZcdTA0MTRcdTA0MTVcdTA0MjRcdTA0''@;'; put 'put ''MTNcdTA0MjVcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MmZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MTZcdTA0MTJcdTA0MmNcdTA0MmJcdTA0MTdcdTA0MjhcdTA0MmRcdTA0MjlcdTA0MjdcdTA0MmEifSxhcm1zY2lpODp7dHlwZToi''@;'; put 'put ''X3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdWZmZmRcdTA1ODdcdTA1ODkp''@;'; put 'put ''KFx4YmJceGFiXHUyMDE0Llx1MDU1ZCwtXHUwNThhXHUyMDI2XHUwNTVjXHUwNTViXHUwNTVlXHUwNTMxXHUwNTYxXHUwNTMyXHUwNTYyXHUwNTMzXHUwNTYzXHUwNTM0XHUwNTY0XHUwNTM1XHUwNTY1XHUwNTM2XHUwNTY2XHUwNTM3XHUwNTY3XHUwNTM4XHUwNTY4XHUwNTM5XHUwNTY5XHUw''@;'; put 'put ''NTNhXHUwNTZhXHUwNTNiXHUwNTZiXHUwNTNjXHUwNTZjXHUwNTNkXHUwNTZkXHUwNTNlXHUwNTZlXHUwNTNmXHUwNTZmXHUwNTQwXHUwNTcwXHUwNTQxXHUwNTcxXHUwNTQyXHUwNTcyXHUwNTQzXHUwNTczXHUwNTQ0XHUwNTc0XHUwNTQ1XHUwNTc1XHUwNTQ2XHUwNTc2XHUwNTQ3XHUwNTc3''@;'; put 'put ''XHUwNTQ4XHUwNTc4XHUwNTQ5XHUwNTc5XHUwNTRhXHUwNTdhXHUwNTRiXHUwNTdiXHUwNTRjXHUwNTdjXHUwNTRkXHUwNTdkXHUwNTRlXHUwNTdlXHUwNTRmXHUwNTdmXHUwNTUwXHUwNTgwXHUwNTUxXHUwNTgxXHUwNTUyXHUwNTgyXHUwNTUzXHUwNTgzXHUwNTU0XHUwNTg0XHUwNTU1XHUw''@;'; put 'put ''NTg1XHUwNTU2XHUwNTg2XHUwNTVhXHVmZmZkIn0scmsxMDQ4Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQwMlx1MDQwM1x1MjAxYVx1MDQ1M1x1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MjBhY1x1MjAzMFx1MDQwOVx1MjAzOVx1MDQwYVx1MDQ5YVx1MDRiYVx1MDQwZlx1MDQ1Mlx1MjAx''@;'; put 'put ''OFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1ZmZmZFx1MjEyMlx1MDQ1OVx1MjAzYVx1MDQ1YVx1MDQ5Ylx1MDRiYlx1MDQ1Zlx4YTBcdTA0YjBcdTA0YjFcdTA0ZDhceGE0XHUwNGU4XHhhNlx4YTdcdTA0MDFceGE5XHUwNDkyXHhhYlx4YWNceGFkXHhhZVx1MDRhZVx4''@;'; put 'put ''YjBceGIxXHUwNDA2XHUwNDU2XHUwNGU5XHhiNVx4YjZceGI3XHUwNDUxXHUyMTE2XHUwNDkzXHhiYlx1MDRkOVx1MDRhMlx1MDRhM1x1MDRhZlx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQx''@;'; put 'put ''ZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1''@;'; put 'put ''MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0ZiJ9LHRjdm46e3R5cGU6Il9zYmNzIixjaGFyczoi''@;'; put 'put ''XDBceGRhXHUxZWU0XHgwM1x1MWVlYVx1MWVlY1x1MWVlZVx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBcdTFlZThcdTFlZjBcdTFlZjJcdTFlZjZcdTFlZjhceGRkXHUxZWY0XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9''@;'; put 'put ''Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzBcdTFlYTJceGMzXHhjMVx1MWVhMFx1MWViNlx1MWVhY1x4YzhcdTFlYmFcdTFlYmNceGM5XHUxZWI4XHUxZWM2XHhjY1x1MWVjOFx1MDEyOFx4Y2RcdTFlY2Fc''@;'; put 'put ''eGQyXHUxZWNlXHhkNVx4ZDNcdTFlY2NcdTFlZDhcdTFlZGNcdTFlZGVcdTFlZTBcdTFlZGFcdTFlZTJceGQ5XHUxZWU2XHUwMTY4XHhhMFx1MDEwMlx4YzJceGNhXHhkNFx1MDFhMFx1MDFhZlx1MDExMFx1MDEwM1x4ZTJceGVhXHhmNFx1MDFhMVx1MDFiMFx1MDExMVx1MWViMFx1MDMwMFx1''@;'; put 'put ''MDMwOVx1MDMwM1x1MDMwMVx1MDMyM1x4ZTBcdTFlYTNceGUzXHhlMVx1MWVhMVx1MWViMlx1MWViMVx1MWViM1x1MWViNVx1MWVhZlx1MWViNFx1MWVhZVx1MWVhNlx1MWVhOFx1MWVhYVx1MWVhNFx1MWVjMFx1MWViN1x1MWVhN1x1MWVhOVx1MWVhYlx1MWVhNVx1MWVhZFx4ZThcdTFlYzJc''@;'; put 'put ''dTFlYmJcdTFlYmRceGU5XHUxZWI5XHUxZWMxXHUxZWMzXHUxZWM1XHUxZWJmXHUxZWM3XHhlY1x1MWVjOVx1MWVjNFx1MWViZVx1MWVkMlx1MDEyOVx4ZWRcdTFlY2JceGYyXHUxZWQ0XHUxZWNmXHhmNVx4ZjNcdTFlY2RcdTFlZDNcdTFlZDVcdTFlZDdcdTFlZDFcdTFlZDlcdTFlZGRcdTFl''@;'; put 'put ''ZGZcdTFlZTFcdTFlZGJcdTFlZTNceGY5XHUxZWQ2XHUxZWU3XHUwMTY5XHhmYVx1MWVlNVx1MWVlYlx1MWVlZFx1MWVlZlx1MWVlOVx1MWVmMVx1MWVmM1x1MWVmN1x1MWVmOVx4ZmRcdTFlZjVcdTFlZDAifSxnZW9yZ2lhbmFjYWRlbXk6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFc''@;'; put 'put ''dTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTAyYzZcdTIwMzBcdTAxNjBcdTIwMzlcdTAxNTJceDhkXHg4ZVx4OGZceDkwXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwMmRjXHUyMTIyXHUwMTYxXHUyMDNhXHUwMTUzXHg5ZFx4OWVcdTAx''@;'; put 'put ''NzhceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx1MTBkMFx1MTBkMVx1MTBkMlx1MTBkM1x1MTBkNFx1MTBk''@;'; put 'put ''NVx1MTBkNlx1MTBkN1x1MTBkOFx1MTBkOVx1MTBkYVx1MTBkYlx1MTBkY1x1MTBkZFx1MTBkZVx1MTBkZlx1MTBlMFx1MTBlMVx1MTBlMlx1MTBlM1x1MTBlNFx1MTBlNVx1MTBlNlx1MTBlN1x1MTBlOFx1MTBlOVx1MTBlYVx1MTBlYlx1MTBlY1x1MTBlZFx1MTBlZVx1MTBlZlx1MTBmMFx1''@;'; put 'put ''MTBmMVx1MTBmMlx1MTBmM1x1MTBmNFx1MTBmNVx1MTBmNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx4ZjBceGYxXHhmMlx4ZjNceGY0XHhmNVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNceGZkXHhmZVx4ZmYifSxnZW9yZ2lhbnBzOnt0eXBlOiJfc2JjcyIsY2hh''@;'; put 'put ''cnM6Ilx4ODBceDgxXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHUwMTYwXHUyMDM5XHUwMTUyXHg4ZFx4OGVceDhmXHg5MFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDJkY1x1MjEyMlx1MDE2MVx1MjAzYVx1MDE1''@;'; put 'put ''M1x4OWRceDllXHUwMTc4XHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZcdTEwZDBcdTEwZDFcdTEwZDJcdTEw''@;'; put 'put ''ZDNcdTEwZDRcdTEwZDVcdTEwZDZcdTEwZjFcdTEwZDdcdTEwZDhcdTEwZDlcdTEwZGFcdTEwZGJcdTEwZGNcdTEwZjJcdTEwZGRcdTEwZGVcdTEwZGZcdTEwZTBcdTEwZTFcdTEwZTJcdTEwZjNcdTEwZTNcdTEwZTRcdTEwZTVcdTEwZTZcdTEwZTdcdTEwZThcdTEwZTlcdTEwZWFcdTEwZWJc''@;'; put 'put ''dTEwZWNcdTEwZWRcdTEwZWVcdTEwZjRcdTEwZWZcdTEwZjBcdTEwZjVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHhmMFx4ZjFceGYyXHhmM1x4ZjRceGY1XHhmNlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhmY1x4ZmRceGZlXHhmZiJ9LHB0MTU0Ont0eXBlOiJfc2Jj''@;'; put 'put ''cyIsY2hhcnM6Ilx1MDQ5Nlx1MDQ5Mlx1MDRlZVx1MDQ5M1x1MjAxZVx1MjAyNlx1MDRiNlx1MDRhZVx1MDRiMlx1MDRhZlx1MDRhMFx1MDRlMlx1MDRhMlx1MDQ5YVx1MDRiYVx1MDRiOFx1MDQ5N1x1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDRiM1x1MDRi''@;'; put 'put ''N1x1MDRhMVx1MDRlM1x1MDRhM1x1MDQ5Ylx1MDRiYlx1MDRiOVx4YTBcdTA0MGVcdTA0NWVcdTA0MDhcdTA0ZThcdTA0OThcdTA0YjBceGE3XHUwNDAxXHhhOVx1MDRkOFx4YWJceGFjXHUwNGVmXHhhZVx1MDQ5Y1x4YjBcdTA0YjFcdTA0MDZcdTA0NTZcdTA0OTlcdTA0ZTlceGI2XHhiN1x1''@;'; put 'put ''MDQ1MVx1MjExNlx1MDRkOVx4YmJcdTA0NThcdTA0YWFcdTA0YWJcdTA0OWRcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNc''@;'; put 'put ''dTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0''@;'; put 'put ''M2ZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGYifSx2aXNjaWk6e3R5cGU6Il9zYmNzIixjaGFyczoiXDBceDAxXHUxZWIyXHgwM1x4MDRcdTFlYjRcdTFlYWFceDA3''@;'; put 'put ''XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHUxZWY2XHgxNVx4MTZceDE3XHgxOFx1MWVmOFx4MWFceDFiXHgxY1x4MWRcdTFlZjRceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdo''@;'; put 'put ''aWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTFlYTBcdTFlYWVcdTFlYjBcdTFlYjZcdTFlYTRcdTFlYTZcdTFlYThcdTFlYWNcdTFlYmNcdTFlYjhcdTFlYmVcdTFlYzBcdTFlYzJcdTFlYzRcdTFlYzZcdTFlZDBcdTFlZDJcdTFlZDRcdTFlZDZcdTFlZDhcdTFlZTJcdTFlZGFcdTFlZGNc''@;'; put 'put ''dTFlZGVcdTFlY2FcdTFlY2VcdTFlY2NcdTFlYzhcdTFlZTZcdTAxNjhcdTFlZTRcdTFlZjJceGQ1XHUxZWFmXHUxZWIxXHUxZWI3XHUxZWE1XHUxZWE3XHUxZWE5XHUxZWFkXHUxZWJkXHUxZWI5XHUxZWJmXHUxZWMxXHUxZWMzXHUxZWM1XHUxZWM3XHUxZWQxXHUxZWQzXHUxZWQ1XHUxZWQ3''@;'; put 'put ''XHUxZWUwXHUwMWEwXHUxZWQ5XHUxZWRkXHUxZWRmXHUxZWNiXHUxZWYwXHUxZWU4XHUxZWVhXHUxZWVjXHUwMWExXHUxZWRiXHUwMWFmXHhjMFx4YzFceGMyXHhjM1x1MWVhMlx1MDEwMlx1MWViM1x1MWViNVx4YzhceGM5XHhjYVx1MWViYVx4Y2NceGNkXHUwMTI4XHUxZWYzXHUwMTEwXHUx''@;'; put 'put ''ZWU5XHhkMlx4ZDNceGQ0XHUxZWExXHUxZWY3XHUxZWViXHUxZWVkXHhkOVx4ZGFcdTFlZjlcdTFlZjVceGRkXHUxZWUxXHUwMWIwXHhlMFx4ZTFceGUyXHhlM1x1MWVhM1x1MDEwM1x1MWVlZlx1MWVhYlx4ZThceGU5XHhlYVx1MWViYlx4ZWNceGVkXHUwMTI5XHUxZWM5XHUwMTExXHUxZWYx''@;'; put 'put ''XHhmMlx4ZjNceGY0XHhmNVx1MWVjZlx1MWVjZFx1MWVlNVx4ZjlceGZhXHUwMTY5XHUxZWU3XHhmZFx1MWVlM1x1MWVlZSJ9LGlzbzY0NmNuOnt0eXBlOiJfc2JjcyIsY2hhcnM6IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEy''@;'; put 'put ''XHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjXHhhNSUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fVx1MjAzZVx4N2ZcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQifSxpc282NDZqcDp7dHlwZToiX3NiY3MiLGNoYXJzOiJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4''@;'; put 'put ''MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXHhhNV1eX2BhYmNkZWZnaGlq''@;'; put 'put ''a2xtbm9wcXJzdHV2d3h5ent8fVx1MjAzZVx4N2ZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQifSxocHJvbWFuODp7dHlwZToiX3NiY3MiLGNo''@;'; put 'put ''YXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBceGMwXHhjMlx4YzhceGNhXHhjYlx4Y2VceGNm''@;'; put 'put ''XHhiNFx1MDJjYlx1MDJjNlx4YThcdTAyZGNceGQ5XHhkYlx1MjBhNFx4YWZceGRkXHhmZFx4YjBceGM3XHhlN1x4ZDFceGYxXHhhMVx4YmZceGE0XHhhM1x4YTVceGE3XHUwMTkyXHhhMlx4ZTJceGVhXHhmNFx4ZmJceGUxXHhlOVx4ZjNceGZhXHhlMFx4ZThceGYyXHhmOVx4ZTRceGViXHhm''@;'; put 'put ''Nlx4ZmNceGM1XHhlZVx4ZDhceGM2XHhlNVx4ZWRceGY4XHhlNlx4YzRceGVjXHhkNlx4ZGNceGM5XHhlZlx4ZGZceGQ0XHhjMVx4YzNceGUzXHhkMFx4ZjBceGNkXHhjY1x4ZDNceGQyXHhkNVx4ZjVcdTAxNjBcdTAxNjFceGRhXHUwMTc4XHhmZlx4ZGVceGZlXHhiN1x4YjVceGI2XHhiZVx1''@;'; put 'put ''MjAxNFx4YmNceGJkXHhhYVx4YmFceGFiXHUyNWEwXHhiYlx4YjFcdWZmZmQifSxtYWNpbnRvc2g6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjNFx4YzVceGM3XHhjOVx4ZDFceGQ2XHhkY1x4ZTFceGUwXHhlMlx4ZTRceGUzXHhlNVx4ZTdceGU5XHhlOFx4ZWFceGViXHhlZFx4ZWNceGVlXHhl''@;'; put 'put ''Zlx4ZjFceGYzXHhmMlx4ZjRceGY2XHhmNVx4ZmFceGY5XHhmYlx4ZmNcdTIwMjBceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx4ZGZceGFlXHhhOVx1MjEyMlx4YjRceGE4XHUyMjYwXHhjNlx4ZDhcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHhhNVx4YjVcdTIyMDJcdTIyMTFcdTIyMGZcdTAz''@;'; put 'put ''YzBcdTIyMmJceGFhXHhiYVx1MjEyNlx4ZTZceGY4XHhiZlx4YTFceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHhjMFx4YzNceGQ1XHUwMTUyXHUwMTUzXHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjVjYVx4ZmZcdTAxNzhc''@;'; put 'put ''dTIwNDRceGE0XHUyMDM5XHUyMDNhXHVmYjAxXHVmYjAyXHUyMDIxXHhiN1x1MjAxYVx1MjAxZVx1MjAzMFx4YzJceGNhXHhjMVx4Y2JceGM4XHhjZFx4Y2VceGNmXHhjY1x4ZDNceGQ0XHVmZmZkXHhkMlx4ZGFceGRiXHhkOVx1MDEzMVx1MDJjNlx1MDJkY1x4YWZcdTAyZDhcdTAyZDlcdTAy''@;'; put 'put ''ZGFceGI4XHUwMmRkXHUwMmRiXHUwMmM3In0sYXNjaWk6e3R5cGU6Il9zYmNzIixjaGFyczoiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIn0s''@;'; put 'put ''dGlzNjIwOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MGUwMVx1MGUwMlx1MGUwM1x1MGUwNFx1MGUwNVx1MGUwNlx1MGUwN1x1MGUwOFx1MGUwOVx1MGUwYVx1MGUwYlx1MGUwY1x1MGUwZFx1MGUwZVx1MGUwZlx1MGUxMFx1MGUxMVx1''@;'; put 'put ''MGUxMlx1MGUxM1x1MGUxNFx1MGUxNVx1MGUxNlx1MGUxN1x1MGUxOFx1MGUxOVx1MGUxYVx1MGUxYlx1MGUxY1x1MGUxZFx1MGUxZVx1MGUxZlx1MGUyMFx1MGUyMVx1MGUyMlx1MGUyM1x1MGUyNFx1MGUyNVx1MGUyNlx1MGUyN1x1MGUyOFx1MGUyOVx1MGUyYVx1MGUyYlx1MGUyY1x1MGUy''@;'; put 'put ''ZFx1MGUyZVx1MGUyZlx1MGUzMFx1MGUzMVx1MGUzMlx1MGUzM1x1MGUzNFx1MGUzNVx1MGUzNlx1MGUzN1x1MGUzOFx1MGUzOVx1MGUzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MGUzZlx1MGU0MFx1MGU0MVx1MGU0Mlx1MGU0M1x1MGU0NFx1MGU0NVx1MGU0Nlx1MGU0N1x1MGU0OFx1''@;'; put 'put ''MGU0OVx1MGU0YVx1MGU0Ylx1MGU0Y1x1MGU0ZFx1MGU0ZVx1MGU0Zlx1MGU1MFx1MGU1MVx1MGU1Mlx1MGU1M1x1MGU1NFx1MGU1NVx1MGU1Nlx1MGU1N1x1MGU1OFx1MGU1OVx1MGU1YVx1MGU1Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCJ9fX0sNjg2MTk6WGU9PnsidXNlIHN0cmljdCI7''@;'; put 'put ''WGUuZXhwb3J0cz17MTAwMjk6Im1hY2NlbnRldXJvIixtYWNjZW50ZXVybzp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM0XHUwMTAwXHUwMTAxXHhjOVx1MDEwNFx4ZDZceGRjXHhlMVx1MDEwNVx1MDEwY1x4ZTRcdTAxMGRcdTAxMDZcdTAxMDdceGU5XHUwMTc5XHUwMTdhXHUwMTBlXHhlZFx1''@;'; put 'put ''MDEwZlx1MDExMlx1MDExM1x1MDExNlx4ZjNcdTAxMTdceGY0XHhmNlx4ZjVceGZhXHUwMTFhXHUwMTFiXHhmY1x1MjAyMFx4YjBcdTAxMThceGEzXHhhN1x1MjAyMlx4YjZceGRmXHhhZVx4YTlcdTIxMjJcdTAxMTlceGE4XHUyMjYwXHUwMTIzXHUwMTJlXHUwMTJmXHUwMTJhXHUyMjY0XHUy''@;'; put 'put ''MjY1XHUwMTJiXHUwMTM2XHUyMjAyXHUyMjExXHUwMTQyXHUwMTNiXHUwMTNjXHUwMTNkXHUwMTNlXHUwMTM5XHUwMTNhXHUwMTQ1XHUwMTQ2XHUwMTQzXHhhY1x1MjIxYVx1MDE0NFx1MDE0N1x1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx1MDE0OFx1MDE1MFx4ZDVcdTAxNTFcdTAxNGNcdTIw''@;'; put 'put ''MTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNhXHUwMTRkXHUwMTU0XHUwMTU1XHUwMTU4XHUyMDM5XHUyMDNhXHUwMTU5XHUwMTU2XHUwMTU3XHUwMTYwXHUyMDFhXHUyMDFlXHUwMTYxXHUwMTVhXHUwMTViXHhjMVx1MDE2NFx1MDE2NVx4Y2RcdTAxN2RcdTAxN2Vc''@;'; put 'put ''dTAxNmFceGQzXHhkNFx1MDE2Ylx1MDE2ZVx4ZGFcdTAxNmZcdTAxNzBcdTAxNzFcdTAxNzJcdTAxNzNceGRkXHhmZFx1MDEzN1x1MDE3Ylx1MDE0MVx1MDE3Y1x1MDEyMlx1MDJjNyJ9LDgwODoiY3A4MDgiLGlibTgwODoiY3A4MDgiLGNwODA4Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQx''@;'; put 'put ''MFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1''@;'; put 'put ''MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1''@;'; put 'put ''Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1''@;'; put 'put ''MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0''@;'; put 'put ''ZVx1MDQ0Zlx1MDQwMVx1MDQ1MVx1MDQwNFx1MDQ1NFx1MDQwN1x1MDQ1N1x1MDQwZVx1MDQ1ZVx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMTE2XHUyMGFjXHUyNWEwXHhhMCJ9LG1pazp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0''@;'; put 'put ''MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTA0MzBcdTA0MzFc''@;'; put 'put ''dTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0''@;'; put 'put ''NGRcdTA0NGVcdTA0NGZcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NjNcdTI1NTFcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1MTBcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTIxMTZceGE3XHUyNTU3XHUyNTVkXHUy''@;'; put 'put ''NTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1MDNjMFx1MDNhM1x1MDNjM1x4YjVcdTAzYzRcdTAzYTZcdTAzOThcdTAzYTlcdTAzYjRcdTIyMWVcdTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIx''@;'; put 'put ''XHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAifSxjcDcyMDp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ZTlceGUyXHg4NFx4ZTBceDg2XHhlN1x4ZWFceGViXHhlOFx4ZWZceGVlXHg4ZFx4OGVceDhmXHg5MFx1MDY1MVx1MDY1Mlx4ZjRc''@;'; put 'put ''eGE0XHUwNjQwXHhmYlx4ZjlcdTA2MjFcdTA2MjJcdTA2MjNcdTA2MjRceGEzXHUwNjI1XHUwNjI2XHUwNjI3XHUwNjI4XHUwNjI5XHUwNjJhXHUwNjJiXHUwNjJjXHUwNjJkXHUwNjJlXHUwNjJmXHUwNjMwXHUwNjMxXHUwNjMyXHUwNjMzXHUwNjM0XHUwNjM1XHhhYlx4YmJcdTI1OTFcdTI1''@;'; put 'put ''OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBc''@;'; put 'put ''dTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTA2MzZcdTA2MzdcdTA2MzhcdTA2MzlcdTA2M2FcdTA2NDFceGI1XHUwNjQyXHUwNjQz''@;'; put 'put ''XHUwNjQ0XHUwNjQ1XHUwNjQ2XHUwNjQ3XHUwNjQ4XHUwNjQ5XHUwNjRhXHUyMjYxXHUwNjRiXHUwNjRjXHUwNjRkXHUwNjRlXHUwNjRmXHUwNjUwXHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCJ9LGFzY2lpOGJpdDoiYXNjaWkiLHVzYXNjaWk6ImFzY2lp''@;'; put 'put ''IixhbnNpeDM0OiJhc2NpaSIsYW5zaXgzNDE5Njg6ImFzY2lpIixhbnNpeDM0MTk4NjoiYXNjaWkiLGNzYXNjaWk6ImFzY2lpIixjcDM2NzoiYXNjaWkiLGlibTM2NzoiYXNjaWkiLGlzb2lyNjoiYXNjaWkiLGlzbzY0NnVzOiJhc2NpaSIsaXNvNjQ2aXJ2OiJhc2NpaSIsdXM6ImFzY2lpIixs''@;'; put 'put ''YXRpbjE6Imlzbzg4NTkxIixsYXRpbjI6Imlzbzg4NTkyIixsYXRpbjM6Imlzbzg4NTkzIixsYXRpbjQ6Imlzbzg4NTk0IixsYXRpbjU6Imlzbzg4NTk5IixsYXRpbjY6Imlzbzg4NTkxMCIsbGF0aW43OiJpc284ODU5MTMiLGxhdGluODoiaXNvODg1OTE0IixsYXRpbjk6Imlzbzg4NTkxNSIs''@;'; put 'put ''bGF0aW4xMDoiaXNvODg1OTE2Iixjc2lzb2xhdGluMToiaXNvODg1OTEiLGNzaXNvbGF0aW4yOiJpc284ODU5MiIsY3Npc29sYXRpbjM6Imlzbzg4NTkzIixjc2lzb2xhdGluNDoiaXNvODg1OTQiLGNzaXNvbGF0aW5jeXJpbGxpYzoiaXNvODg1OTUiLGNzaXNvbGF0aW5hcmFiaWM6Imlzbzg4''@;'; put 'put ''NTk2Iixjc2lzb2xhdGluZ3JlZWs6Imlzbzg4NTk3Iixjc2lzb2xhdGluaGVicmV3OiJpc284ODU5OCIsY3Npc29sYXRpbjU6Imlzbzg4NTk5Iixjc2lzb2xhdGluNjoiaXNvODg1OTEwIixsMToiaXNvODg1OTEiLGwyOiJpc284ODU5MiIsbDM6Imlzbzg4NTkzIixsNDoiaXNvODg1OTQiLGw1''@;'; put 'put ''OiJpc284ODU5OSIsbDY6Imlzbzg4NTkxMCIsbDc6Imlzbzg4NTkxMyIsbDg6Imlzbzg4NTkxNCIsbDk6Imlzbzg4NTkxNSIsbDEwOiJpc284ODU5MTYiLGlzb2lyMTQ6ImlzbzY0NmpwIixpc29pcjU3OiJpc282NDZjbiIsaXNvaXIxMDA6Imlzbzg4NTkxIixpc29pcjEwMToiaXNvODg1OTIi''@;'; put 'put ''LGlzb2lyMTA5OiJpc284ODU5MyIsaXNvaXIxMTA6Imlzbzg4NTk0Iixpc29pcjE0NDoiaXNvODg1OTUiLGlzb2lyMTI3OiJpc284ODU5NiIsaXNvaXIxMjY6Imlzbzg4NTk3Iixpc29pcjEzODoiaXNvODg1OTgiLGlzb2lyMTQ4OiJpc284ODU5OSIsaXNvaXIxNTc6Imlzbzg4NTkxMCIsaXNv''@;'; put 'put ''aXIxNjY6InRpczYyMCIsaXNvaXIxNzk6Imlzbzg4NTkxMyIsaXNvaXIxOTk6Imlzbzg4NTkxNCIsaXNvaXIyMDM6Imlzbzg4NTkxNSIsaXNvaXIyMjY6Imlzbzg4NTkxNiIsY3A4MTk6Imlzbzg4NTkxIixpYm04MTk6Imlzbzg4NTkxIixjeXJpbGxpYzoiaXNvODg1OTUiLGFyYWJpYzoiaXNv''@;'; put 'put ''ODg1OTYiLGFyYWJpYzg6Imlzbzg4NTk2IixlY21hMTE0OiJpc284ODU5NiIsYXNtbzcwODoiaXNvODg1OTYiLGdyZWVrOiJpc284ODU5NyIsZ3JlZWs4OiJpc284ODU5NyIsZWNtYTExODoiaXNvODg1OTciLGVsb3Q5Mjg6Imlzbzg4NTk3IixoZWJyZXc6Imlzbzg4NTk4IixoZWJyZXc4OiJp''@;'; put 'put ''c284ODU5OCIsdHVya2lzaDoiaXNvODg1OTkiLHR1cmtpc2g4OiJpc284ODU5OSIsdGhhaToiaXNvODg1OTExIix0aGFpODoiaXNvODg1OTExIixjZWx0aWM6Imlzbzg4NTkxNCIsY2VsdGljODoiaXNvODg1OTE0Iixpc29jZWx0aWM6Imlzbzg4NTkxNCIsdGlzNjIwMDoidGlzNjIwIix0aXM2''@;'; put 'put ''MjAyNTI5MToidGlzNjIwIix0aXM2MjAyNTMzMDoidGlzNjIwIiwxZTQ6Im1hY3JvbWFuIiwxMDAwNjoibWFjZ3JlZWsiLDEwMDA3OiJtYWNjeXJpbGxpYyIsMTAwNzk6Im1hY2ljZWxhbmQiLDEwMDgxOiJtYWN0dXJraXNoIixjc3BjOGNvZGVwYWdlNDM3OiJjcDQzNyIsY3NwYzc3NWJhbHRp''@;'; put 'put ''YzoiY3A3NzUiLGNzcGM4NTBtdWx0aWxpbmd1YWw6ImNwODUwIixjc3BjcDg1MjoiY3A4NTIiLGNzcGM4NjJsYXRpbmhlYnJldzoiY3A4NjIiLGNwZ3I6ImNwODY5Iixtc2VlOiJjcDEyNTAiLG1zY3lybDoiY3AxMjUxIixtc2Fuc2k6ImNwMTI1MiIsbXNncmVlazoiY3AxMjUzIixtc3R1cms6''@;'; put 'put ''ImNwMTI1NCIsbXNoZWJyOiJjcDEyNTUiLG1zYXJhYjoiY3AxMjU2Iix3aW5iYWx0cmltOiJjcDEyNTciLGNwMjA4NjY6ImtvaThyIiwyMDg2Njoia29pOHIiLGlibTg3ODoia29pOHIiLGNza29pOHI6ImtvaThyIixjcDIxODY2OiJrb2k4dSIsMjE4NjY6ImtvaTh1IixpYm0xMTY4OiJrb2k4''@;'; put 'put ''dSIsc3RyazEwNDgyMDAyOiJyazEwNDgiLHRjdm41NzEyOiJ0Y3ZuIix0Y3ZuNTcxMjE6InRjdm4iLGdiMTk4ODgwOiJpc282NDZjbiIsY246ImlzbzY0NmNuIixjc2lzbzE0amlzYzYyMjBybzoiaXNvNjQ2anAiLGppc2M2MjIwMTk2OXJvOiJpc282NDZqcCIsanA6ImlzbzY0NmpwIixjc2hw''@;'; put 'put ''cm9tYW44OiJocHJvbWFuOCIscjg6Imhwcm9tYW44Iixyb21hbjg6Imhwcm9tYW44Iix4cm9tYW44OiJocHJvbWFuOCIsaWJtMTA1MToiaHByb21hbjgiLG1hYzoibWFjaW50b3NoIixjc21hY2ludG9zaDoibWFjaW50b3NoIn19LDkzNzYwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''bWU9TCg2MjAzOCkuQnVmZmVyO2Z1bmN0aW9uIEIoKXt9ZnVuY3Rpb24gRSgpe31mdW5jdGlvbiBFZSgpe3RoaXMub3ZlcmZsb3dCeXRlPS0xfWZ1bmN0aW9uIFUoYWUsWSl7dGhpcy5pY29udj1ZfWZ1bmN0aW9uIFEoYWUsWSl7dm9pZCAwPT09KGFlPWFlfHx7fSkuYWRkQk9NJiYoYWUuYWRk''@;'; put 'put ''Qk9NPSEwKSx0aGlzLmVuY29kZXI9WS5pY29udi5nZXRFbmNvZGVyKCJ1dGYtMTZsZSIsYWUpfWZ1bmN0aW9uIGooYWUsWSl7dGhpcy5kZWNvZGVyPW51bGwsdGhpcy5pbml0aWFsQnl0ZXM9W10sdGhpcy5pbml0aWFsQnl0ZXNMZW49MCx0aGlzLm9wdGlvbnM9YWV8fHt9LHRoaXMuaWNvbnY9''@;'; put 'put ''WS5pY29udn1mdW5jdGlvbiByZShhZSxZKXt2YXIgVz1ZfHwidXRmLTE2bGUiO2lmKGFlLmxlbmd0aD49MilpZigyNTQ9PWFlWzBdJiYyNTU9PWFlWzFdKVc9InV0Zi0xNmJlIjtlbHNlIGlmKDI1NT09YWVbMF0mJjI1ND09YWVbMV0pVz0idXRmLTE2bGUiO2Vsc2V7Zm9yKHZhciBOPTAsdGU9''@;'; put 'put ''MCxLPU1hdGgubWluKGFlLmxlbmd0aC1hZS5sZW5ndGglMiw2NCksSj0wO0o8SztKKz0yKTA9PT1hZVtKXSYmMCE9PWFlW0orMV0mJnRlKyssMCE9PWFlW0pdJiYwPT09YWVbSisxXSYmTisrO3RlPk4/Vz0idXRmLTE2YmUiOnRlPE4mJihXPSJ1dGYtMTZsZSIpfXJldHVybiBXfUplLnV0ZjE2''@;'; put 'put ''YmU9QixCLnByb3RvdHlwZS5lbmNvZGVyPUUsQi5wcm90b3R5cGUuZGVjb2Rlcj1FZSxCLnByb3RvdHlwZS5ib21Bd2FyZT0hMCxFLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihhZSl7Zm9yKHZhciBZPW1lLmZyb20oYWUsInVjczIiKSxXPTA7VzxZLmxlbmd0aDtXKz0yKXt2YXIgTj1ZW1dd''@;'; put 'put ''O1lbV109WVtXKzFdLFlbVysxXT1OfXJldHVybiBZfSxFLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt9LEVlLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihhZSl7aWYoMD09YWUubGVuZ3RoKXJldHVybiIiO3ZhciBZPW1lLmFsbG9jKGFlLmxlbmd0aCsxKSxXPTAsTj0wO2ZvcigtMSE9PXRo''@;'; put 'put ''aXMub3ZlcmZsb3dCeXRlJiYoWVswXT1hZVswXSxZWzFdPXRoaXMub3ZlcmZsb3dCeXRlLFc9MSxOPTIpO1c8YWUubGVuZ3RoLTE7Vys9MixOKz0yKVlbTl09YWVbVysxXSxZW04rMV09YWVbV107cmV0dXJuIHRoaXMub3ZlcmZsb3dCeXRlPVc9PWFlLmxlbmd0aC0xP2FlW2FlLmxlbmd0aC0x''@;'; put 'put ''XTotMSxZLnNsaWNlKDAsTikudG9TdHJpbmcoInVjczIiKX0sRWUucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe30sSmUudXRmMTY9VSxVLnByb3RvdHlwZS5lbmNvZGVyPVEsVS5wcm90b3R5cGUuZGVjb2Rlcj1qLFEucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGFlKXtyZXR1cm4gdGhpcy5l''@;'; put 'put ''bmNvZGVyLndyaXRlKGFlKX0sUS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5jb2Rlci5lbmQoKX0sai5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oYWUpe2lmKCF0aGlzLmRlY29kZXIpe2lmKHRoaXMuaW5pdGlhbEJ5dGVzLnB1c2goYWUpLHRoaXMuaW5pdGlhbEJ5''@;'; put 'put ''dGVzTGVuKz1hZS5sZW5ndGgsdGhpcy5pbml0aWFsQnl0ZXNMZW48MTYpcmV0dXJuIiI7dmFyIFk9cmUoYWU9bWUuY29uY2F0KHRoaXMuaW5pdGlhbEJ5dGVzKSx0aGlzLm9wdGlvbnMuZGVmYXVsdEVuY29kaW5nKTt0aGlzLmRlY29kZXI9dGhpcy5pY29udi5nZXREZWNvZGVyKFksdGhpcy5v''@;'; put 'put ''cHRpb25zKSx0aGlzLmluaXRpYWxCeXRlcy5sZW5ndGg9dGhpcy5pbml0aWFsQnl0ZXNMZW49MH1yZXR1cm4gdGhpcy5kZWNvZGVyLndyaXRlKGFlKX0sai5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7aWYoIXRoaXMuZGVjb2Rlcil7dmFyIGFlPW1lLmNvbmNhdCh0aGlzLmluaXRpYWxCeXRl''@;'; put 'put ''cyksWT1yZShhZSx0aGlzLm9wdGlvbnMuZGVmYXVsdEVuY29kaW5nKTt0aGlzLmRlY29kZXI9dGhpcy5pY29udi5nZXREZWNvZGVyKFksdGhpcy5vcHRpb25zKTt2YXIgVz10aGlzLmRlY29kZXIud3JpdGUoYWUpLE49dGhpcy5kZWNvZGVyLmVuZCgpO3JldHVybiBOP1crTjpXfXJldHVybiB0''@;'; put 'put ''aGlzLmRlY29kZXIuZW5kKCl9fSw4MjYwNjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoNjIwMzgpLkJ1ZmZlcjtmdW5jdGlvbiBCKGFlLFkpe3RoaXMuaWNvbnY9WSx0aGlzLmJvbUF3YXJlPSEwLHRoaXMuaXNMRT1hZS5pc0xFfWZ1bmN0aW9uIEUoYWUsWSl7dGhpcy5pc0xF''@;'; put 'put ''PVkuaXNMRSx0aGlzLmhpZ2hTdXJyb2dhdGU9MH1mdW5jdGlvbiBFZShhZSxZKXt0aGlzLmlzTEU9WS5pc0xFLHRoaXMuYmFkQ2hhcj1ZLmljb252LmRlZmF1bHRDaGFyVW5pY29kZS5jaGFyQ29kZUF0KDApLHRoaXMub3ZlcmZsb3c9bnVsbH1mdW5jdGlvbiBVKGFlLFkpe3RoaXMuaWNvbnY9''@;'; put 'put ''WX1mdW5jdGlvbiBRKGFlLFkpe3ZvaWQgMD09PShhZT1hZXx8e30pLmFkZEJPTSYmKGFlLmFkZEJPTT0hMCksdGhpcy5lbmNvZGVyPVkuaWNvbnYuZ2V0RW5jb2RlcihhZS5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGYtMzJsZSIsYWUpfWZ1bmN0aW9uIGooYWUsWSl7dGhpcy5kZWNvZGVyPW51bGws''@;'; put 'put ''dGhpcy5pbml0aWFsQnl0ZXM9W10sdGhpcy5pbml0aWFsQnl0ZXNMZW49MCx0aGlzLm9wdGlvbnM9YWV8fHt9LHRoaXMuaWNvbnY9WS5pY29udn1mdW5jdGlvbiByZShhZSxZKXt2YXIgVz1ZfHwidXRmLTMybGUiO2lmKGFlLmxlbmd0aD49NClpZig2NTI3OT09PWFlLnJlYWRVSW50MzJCRSgw''@;'; put 'put ''KSlXPSJ1dGYtMzJiZSI7ZWxzZSBpZig2NTI3OT09PWFlLnJlYWRVSW50MzJMRSgwKSlXPSJ1dGYtMzJsZSI7ZWxzZXtmb3IodmFyIE49MCx0ZT0wLEs9MCxKPTAsc2U9TWF0aC5taW4oYWUubGVuZ3RoLWFlLmxlbmd0aCU0LDEyOCksb2U9MDtvZTxzZTtvZSs9NCl7dmFyIGNlPWFlW29lXSxk''@;'; put 'put ''ZT1hZVtvZSsxXSx2ZT1hZVtvZSsyXSxBZT1hZVtvZSszXTsoMCE9PWNlfHxkZT4xNikmJisrdGUsKDAhPT1BZXx8dmU+MTYpJiYrK04sMD09PWNlJiYwPT09ZGUmJjA9PT12ZSYmMCE9PUFlJiZKKyssMCE9PWNlJiYwPT09ZGUmJjA9PT12ZSYmMD09PUFlJiZLKyt9dGU8Tj9XPSJ1dGYtMzJi''@;'; put 'put ''ZSI6Tjx0ZSYmKFc9InV0Zi0zMmxlIiksSj5LP1c9InV0Zi0zMmJlIjpKPEsmJihXPSJ1dGYtMzJsZSIpfXJldHVybiBXfUplLl91dGYzMj1CLEplLnV0ZjMybGU9e3R5cGU6Il91dGYzMiIsaXNMRTohMH0sSmUudXRmMzJiZT17dHlwZToiX3V0ZjMyIixpc0xFOiExfSxKZS51Y3M0bGU9InV0''@;'; put 'put ''ZjMybGUiLEplLnVjczRiZT0idXRmMzJiZSIsQi5wcm90b3R5cGUuZW5jb2Rlcj1FLEIucHJvdG90eXBlLmRlY29kZXI9RWUsRS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oYWUpe2Zvcih2YXIgWT1tZS5mcm9tKGFlLCJ1Y3MyIiksVz1tZS5hbGxvYygyKlkubGVuZ3RoKSxOPXRoaXMuaXNM''@;'; put 'put ''RT9XLndyaXRlVUludDMyTEU6Vy53cml0ZVVJbnQzMkJFLHRlPTAsSz0wO0s8WS5sZW5ndGg7Sys9Mil7dmFyIEo9WS5yZWFkVUludDE2TEUoSyksc2U9NTUyOTY8PUomJko8NTYzMjA7aWYodGhpcy5oaWdoU3Vycm9nYXRlKXtpZighc2UmJjU2MzIwPD1KJiZKPDU3MzQ0KXtOLmNhbGwoVyw2''@;'; put 'put ''NTUzNisodGhpcy5oaWdoU3Vycm9nYXRlLTU1Mjk2PDwxMHxKLTU2MzIwKSx0ZSksdGUrPTQsdGhpcy5oaWdoU3Vycm9nYXRlPTA7Y29udGludWV9Ti5jYWxsKFcsdGhpcy5oaWdoU3Vycm9nYXRlLHRlKSx0ZSs9NH1zZT90aGlzLmhpZ2hTdXJyb2dhdGU9SjooTi5jYWxsKFcsSix0ZSksdGUr''@;'; put 'put ''PTQsdGhpcy5oaWdoU3Vycm9nYXRlPTApfXJldHVybiB0ZTxXLmxlbmd0aCYmKFc9Vy5zbGljZSgwLHRlKSksV30sRS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7aWYodGhpcy5oaWdoU3Vycm9nYXRlKXt2YXIgYWU9bWUuYWxsb2MoNCk7cmV0dXJuIHRoaXMuaXNMRT9hZS53cml0ZVVJbnQz''@;'; put 'put ''MkxFKHRoaXMuaGlnaFN1cnJvZ2F0ZSwwKTphZS53cml0ZVVJbnQzMkJFKHRoaXMuaGlnaFN1cnJvZ2F0ZSwwKSx0aGlzLmhpZ2hTdXJyb2dhdGU9MCxhZX19LEVlLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihhZSl7aWYoMD09PWFlLmxlbmd0aClyZXR1cm4iIjt0aGlzLm92ZXJmbG93JiYo''@;'; put 'put ''YWU9bWUuY29uY2F0KFt0aGlzLm92ZXJmbG93LGFlXSkpO3ZhciBZPWFlLmxlbmd0aC1hZS5sZW5ndGglNDthZS5sZW5ndGghPT1ZPyh0aGlzLm92ZXJmbG93PWFlLnNsaWNlKFkpLGFlPWFlLnNsaWNlKDAsWSkpOnRoaXMub3ZlcmZsb3c9bnVsbDtmb3IodmFyIFc9bWUuYWxsb2MoWSksTj0w''@;'; put 'put ''LHRlPTA7dGU8WTt0ZSs9NCl7dmFyIEs9dGhpcy5pc0xFP2FlLnJlYWRVSW50MzJMRSh0ZSk6YWUucmVhZFVJbnQzMkJFKHRlKTtpZihLPDY1NTM2KVcud3JpdGVVSW50MTZMRShLLE4pLE4rPTI7ZWxzZSBpZihLPjExMTQxMTEpVy53cml0ZVVJbnQxNkxFKHRoaXMuYmFkQ2hhcixOKSxOKz0y''@;'; put 'put ''O2Vsc2V7dmFyIHNlPTU2MzIwKygxMDIzJihLLT02NTUzNikpO1cud3JpdGVVSW50MTZMRSg1NTI5NnxLPj4xMCxOKSxXLndyaXRlVUludDE2TEUoc2UsTis9MiksTis9Mn19cmV0dXJuIFcuc2xpY2UoMCxOKS50b1N0cmluZygidWNzMiIpfSxFZS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7''@;'; put 'put ''dGhpcy5vdmVyZmxvdz1udWxsfSxKZS51dGYzMj1VLEplLnVjczQ9VSxVLnByb3RvdHlwZS5lbmNvZGVyPVEsVS5wcm90b3R5cGUuZGVjb2Rlcj1qLFEucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGFlKXtyZXR1cm4gdGhpcy5lbmNvZGVyLndyaXRlKGFlKX0sUS5wcm90b3R5cGUuZW5kPWZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5jb2Rlci5lbmQoKX0sai5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oYWUpe2lmKCF0aGlzLmRlY29kZXIpe2lmKHRoaXMuaW5pdGlhbEJ5dGVzLnB1c2goYWUpLHRoaXMuaW5pdGlhbEJ5dGVzTGVuKz1hZS5sZW5ndGgsdGhpcy5pbml0aWFsQnl0ZXNM''@;'; put 'put ''ZW48MzIpcmV0dXJuIiI7dmFyIFc9cmUobWUuY29uY2F0KHRoaXMuaW5pdGlhbEJ5dGVzKSx0aGlzLm9wdGlvbnMuZGVmYXVsdEVuY29kaW5nKTt0aGlzLmRlY29kZXI9dGhpcy5pY29udi5nZXREZWNvZGVyKFcsdGhpcy5vcHRpb25zKSx0aGlzLmluaXRpYWxCeXRlcy5sZW5ndGg9dGhpcy5p''@;'; put 'put ''bml0aWFsQnl0ZXNMZW49MH1yZXR1cm4gdGhpcy5kZWNvZGVyLndyaXRlKGFlKX0sai5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7aWYoIXRoaXMuZGVjb2Rlcil7dmFyIGFlPW1lLmNvbmNhdCh0aGlzLmluaXRpYWxCeXRlcyksWT1yZShhZSx0aGlzLm9wdGlvbnMuZGVmYXVsdEVuY29kaW5n''@;'; put 'put ''KTt0aGlzLmRlY29kZXI9dGhpcy5pY29udi5nZXREZWNvZGVyKFksdGhpcy5vcHRpb25zKTt2YXIgVz10aGlzLmRlY29kZXIud3JpdGUoYWUpLE49dGhpcy5kZWNvZGVyLmVuZCgpO3JldHVybiBOP1crTjpXfXJldHVybiB0aGlzLmRlY29kZXIuZW5kKCl9fSwyODc3ODooWGUsSmUsTCk9Pnsi''@;'; put 'put ''dXNlIHN0cmljdCI7dmFyIG1lPUwoNjIwMzgpLkJ1ZmZlcjtmdW5jdGlvbiBCKHNlLG9lKXt0aGlzLmljb252PW9lfUplLnV0Zjc9QixKZS51bmljb2RlMTF1dGY3PSJ1dGY3IixCLnByb3RvdHlwZS5lbmNvZGVyPUVlLEIucHJvdG90eXBlLmRlY29kZXI9VSxCLnByb3RvdHlwZS5ib21Bd2Fy''@;'; put 'put ''ZT0hMDt2YXIgRT0vW15BLVphLXowLTknXChcKSwtXC5cLzpcPyBcblxyXHRdKy9nO2Z1bmN0aW9uIEVlKHNlLG9lKXt0aGlzLmljb252PW9lLmljb252fWZ1bmN0aW9uIFUoc2Usb2Upe3RoaXMuaWNvbnY9b2UuaWNvbnYsdGhpcy5pbkJhc2U2ND0hMSx0aGlzLmJhc2U2NEFjY3VtPSIifUVl''@;'; put 'put ''LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihzZSl7cmV0dXJuIG1lLmZyb20oc2UucmVwbGFjZShFLGZ1bmN0aW9uKG9lKXtyZXR1cm4iKyIrKCIrIj09PW9lPyIiOnRoaXMuaWNvbnYuZW5jb2RlKG9lLCJ1dGYxNi1iZSIpLnRvU3RyaW5nKCJiYXNlNjQiKS5yZXBsYWNlKC89KyQvLCIiKSkr''@;'; put 'put ''Ii0ifS5iaW5kKHRoaXMpKSl9LEVlLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt9O2Zvcih2YXIgUT0vW0EtWmEtejAtOVwvK10vLGo9W10scmU9MDtyZTwyNTY7cmUrKylqW3JlXT1RLnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShyZSkpO3ZhciBhZT0iKyIuY2hhckNvZGVBdCgwKSxZPSIt''@;'; put 'put ''Ii5jaGFyQ29kZUF0KDApLFc9IiYiLmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gTihzZSxvZSl7dGhpcy5pY29udj1vZX1mdW5jdGlvbiB0ZShzZSxvZSl7dGhpcy5pY29udj1vZS5pY29udix0aGlzLmluQmFzZTY0PSExLHRoaXMuYmFzZTY0QWNjdW09bWUuYWxsb2MoNiksdGhpcy5iYXNlNjRB''@;'; put 'put ''Y2N1bUlkeD0wfWZ1bmN0aW9uIEsoc2Usb2Upe3RoaXMuaWNvbnY9b2UuaWNvbnYsdGhpcy5pbkJhc2U2ND0hMSx0aGlzLmJhc2U2NEFjY3VtPSIifVUucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHNlKXtmb3IodmFyIG9lPSIiLGNlPTAsZGU9dGhpcy5pbkJhc2U2NCx2ZT10aGlzLmJhc2U2''@;'; put 'put ''NEFjY3VtLEFlPTA7QWU8c2UubGVuZ3RoO0FlKyspaWYoZGUpe2lmKCFqW3NlW0FlXV0pe2lmKEFlPT1jZSYmc2VbQWVdPT1ZKW9lKz0iKyI7ZWxzZXt2YXIga2U9dmUrc2Uuc2xpY2UoY2UsQWUpLnRvU3RyaW5nKCk7b2UrPXRoaXMuaWNvbnYuZGVjb2RlKG1lLmZyb20oa2UsImJhc2U2NCIp''@;'; put 'put ''LCJ1dGYxNi1iZSIpfXNlW0FlXSE9WSYmQWUtLSxjZT1BZSsxLGRlPSExLHZlPSIifX1lbHNlIHNlW0FlXT09YWUmJihvZSs9dGhpcy5pY29udi5kZWNvZGUoc2Uuc2xpY2UoY2UsQWUpLCJhc2NpaSIpLGNlPUFlKzEsZGU9ITApO2lmKGRlKXt2YXIgU2U9KGtlPXZlK3NlLnNsaWNlKGNlKS50''@;'; put 'put ''b1N0cmluZygpKS5sZW5ndGgta2UubGVuZ3RoJTg7dmU9a2Uuc2xpY2UoU2UpLGtlPWtlLnNsaWNlKDAsU2UpLG9lKz10aGlzLmljb252LmRlY29kZShtZS5mcm9tKGtlLCJiYXNlNjQiKSwidXRmMTYtYmUiKX1lbHNlIG9lKz10aGlzLmljb252LmRlY29kZShzZS5zbGljZShjZSksImFzY2lp''@;'; put 'put ''Iik7cmV0dXJuIHRoaXMuaW5CYXNlNjQ9ZGUsdGhpcy5iYXNlNjRBY2N1bT12ZSxvZX0sVS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dmFyIHNlPSIiO3JldHVybiB0aGlzLmluQmFzZTY0JiZ0aGlzLmJhc2U2NEFjY3VtLmxlbmd0aD4wJiYoc2U9dGhpcy5pY29udi5kZWNvZGUobWUuZnJv''@;'; put 'put ''bSh0aGlzLmJhc2U2NEFjY3VtLCJiYXNlNjQiKSwidXRmMTYtYmUiKSksdGhpcy5pbkJhc2U2ND0hMSx0aGlzLmJhc2U2NEFjY3VtPSIiLHNlfSxKZS51dGY3aW1hcD1OLE4ucHJvdG90eXBlLmVuY29kZXI9dGUsTi5wcm90b3R5cGUuZGVjb2Rlcj1LLE4ucHJvdG90eXBlLmJvbUF3YXJlPSEw''@;'; put 'put ''LHRlLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihzZSl7Zm9yKHZhciBvZT10aGlzLmluQmFzZTY0LGNlPXRoaXMuYmFzZTY0QWNjdW0sZGU9dGhpcy5iYXNlNjRBY2N1bUlkeCx2ZT1tZS5hbGxvYyg1KnNlLmxlbmd0aCsxMCksQWU9MCxrZT0wO2tlPHNlLmxlbmd0aDtrZSsrKXt2YXIgU2U9''@;'; put 'put ''c2UuY2hhckNvZGVBdChrZSk7MzI8PVNlJiZTZTw9MTI2PyhvZSYmKGRlPjAmJihBZSs9dmUud3JpdGUoY2Uuc2xpY2UoMCxkZSkudG9TdHJpbmcoImJhc2U2NCIpLnJlcGxhY2UoL1wvL2csIiwiKS5yZXBsYWNlKC89KyQvLCIiKSxBZSksZGU9MCksdmVbQWUrK109WSxvZT0hMSksb2V8fCh2''@;'; put 'put ''ZVtBZSsrXT1TZSxTZT09PVcmJih2ZVtBZSsrXT1ZKSkpOihvZXx8KHZlW0FlKytdPVcsb2U9ITApLG9lJiYoY2VbZGUrK109U2U+PjgsY2VbZGUrK109MjU1JlNlLGRlPT1jZS5sZW5ndGgmJihBZSs9dmUud3JpdGUoY2UudG9TdHJpbmcoImJhc2U2NCIpLnJlcGxhY2UoL1wvL2csIiwiKSxB''@;'; put 'put ''ZSksZGU9MCkpKX1yZXR1cm4gdGhpcy5pbkJhc2U2ND1vZSx0aGlzLmJhc2U2NEFjY3VtSWR4PWRlLHZlLnNsaWNlKDAsQWUpfSx0ZS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dmFyIHNlPW1lLmFsbG9jKDEwKSxvZT0wO3JldHVybiB0aGlzLmluQmFzZTY0JiYodGhpcy5iYXNlNjRBY2N1''@;'; put 'put ''bUlkeD4wJiYob2UrPXNlLndyaXRlKHRoaXMuYmFzZTY0QWNjdW0uc2xpY2UoMCx0aGlzLmJhc2U2NEFjY3VtSWR4KS50b1N0cmluZygiYmFzZTY0IikucmVwbGFjZSgvXC8vZywiLCIpLnJlcGxhY2UoLz0rJC8sIiIpLG9lKSx0aGlzLmJhc2U2NEFjY3VtSWR4PTApLHNlW29lKytdPVksdGhp''@;'; put 'put ''cy5pbkJhc2U2ND0hMSksc2Uuc2xpY2UoMCxvZSl9O3ZhciBKPWouc2xpY2UoKTtKWyIsIi5jaGFyQ29kZUF0KDApXT0hMCxLLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihzZSl7Zm9yKHZhciBvZT0iIixjZT0wLGRlPXRoaXMuaW5CYXNlNjQsdmU9dGhpcy5iYXNlNjRBY2N1bSxBZT0wO0Fl''@;'; put 'put ''PHNlLmxlbmd0aDtBZSsrKWlmKGRlKXtpZighSltzZVtBZV1dKXtpZihBZT09Y2UmJnNlW0FlXT09WSlvZSs9IiYiO2Vsc2V7dmFyIGtlPXZlK3NlLnNsaWNlKGNlLEFlKS50b1N0cmluZygpLnJlcGxhY2UoLywvZywiLyIpO29lKz10aGlzLmljb252LmRlY29kZShtZS5mcm9tKGtlLCJiYXNl''@;'; put 'put ''NjQiKSwidXRmMTYtYmUiKX1zZVtBZV0hPVkmJkFlLS0sY2U9QWUrMSxkZT0hMSx2ZT0iIn19ZWxzZSBzZVtBZV09PVcmJihvZSs9dGhpcy5pY29udi5kZWNvZGUoc2Uuc2xpY2UoY2UsQWUpLCJhc2NpaSIpLGNlPUFlKzEsZGU9ITApO2lmKGRlKXt2YXIgU2U9KGtlPXZlK3NlLnNsaWNlKGNl''@;'; put 'put ''KS50b1N0cmluZygpLnJlcGxhY2UoLywvZywiLyIpKS5sZW5ndGgta2UubGVuZ3RoJTg7dmU9a2Uuc2xpY2UoU2UpLGtlPWtlLnNsaWNlKDAsU2UpLG9lKz10aGlzLmljb252LmRlY29kZShtZS5mcm9tKGtlLCJiYXNlNjQiKSwidXRmMTYtYmUiKX1lbHNlIG9lKz10aGlzLmljb252LmRlY29k''@;'; put 'put ''ZShzZS5zbGljZShjZSksImFzY2lpIik7cmV0dXJuIHRoaXMuaW5CYXNlNjQ9ZGUsdGhpcy5iYXNlNjRBY2N1bT12ZSxvZX0sSy5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dmFyIHNlPSIiO3JldHVybiB0aGlzLmluQmFzZTY0JiZ0aGlzLmJhc2U2NEFjY3VtLmxlbmd0aD4wJiYoc2U9dGhp''@;'; put 'put ''cy5pY29udi5kZWNvZGUobWUuZnJvbSh0aGlzLmJhc2U2NEFjY3VtLCJiYXNlNjQiKSwidXRmMTYtYmUiKSksdGhpcy5pbkJhc2U2ND0hMSx0aGlzLmJhc2U2NEFjY3VtPSIiLHNlfX0sNDYwOTk6KFhlLEplKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtZShFLEVlKXt0aGlzLmVuY29kZXI9''@;'; put 'put ''RSx0aGlzLmFkZEJPTT0hMH1mdW5jdGlvbiBCKEUsRWUpe3RoaXMuZGVjb2Rlcj1FLHRoaXMucGFzcz0hMSx0aGlzLm9wdGlvbnM9RWV8fHt9fUplLlByZXBlbmRCT009bWUsbWUucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmFkZEJPTSYmKEU9Ilx1ZmVmZiIrRSx0''@;'; put 'put ''aGlzLmFkZEJPTT0hMSksdGhpcy5lbmNvZGVyLndyaXRlKEUpfSxtZS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5jb2Rlci5lbmQoKX0sSmUuU3RyaXBCT009QixCLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihFKXt2YXIgRWU9dGhpcy5kZWNvZGVyLndyaXRlKEUp''@;'; put 'put ''O3JldHVybiB0aGlzLnBhc3N8fCFFZXx8KCJcdWZlZmYiPT09RWVbMF0mJihFZT1FZS5zbGljZSgxKSwiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vcHRpb25zLnN0cmlwQk9NJiZ0aGlzLm9wdGlvbnMuc3RyaXBCT00oKSksdGhpcy5wYXNzPSEwKSxFZX0sQi5wcm90b3R5cGUuZW5kPWZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIHRoaXMuZGVjb2Rlci5lbmQoKX19LDQxOTI1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg2MjAzOCkuQnVmZmVyLEI9TCg0NjA5OSksRT1YZS5leHBvcnRzO0UuZW5jb2RpbmdzPW51bGwsRS5kZWZhdWx0Q2hhclVuaWNvZGU9Ilx1ZmZmZCIsRS5kZWZh''@;'; put 'put ''dWx0Q2hhclNpbmdsZUJ5dGU9Ij8iLEUuZW5jb2RlPWZ1bmN0aW9uKGoscmUsYWUpe2o9IiIrKGp8fCIiKTt2YXIgWT1FLmdldEVuY29kZXIocmUsYWUpLFc9WS53cml0ZShqKSxOPVkuZW5kKCk7cmV0dXJuIE4mJk4ubGVuZ3RoPjA/bWUuY29uY2F0KFtXLE5dKTpXfSxFLmRlY29kZT1mdW5j''@;'; put 'put ''dGlvbihqLHJlLGFlKXsic3RyaW5nIj09dHlwZW9mIGomJihFLnNraXBEZWNvZGVXYXJuaW5nfHwoY29uc29sZS5lcnJvcigiSWNvbnYtbGl0ZSB3YXJuaW5nOiBkZWNvZGUoKS1pbmcgc3RyaW5ncyBpcyBkZXByZWNhdGVkLiBSZWZlciB0byBodHRwczovL2dpdGh1Yi5jb20vYXNodHVjaGtp''@;'; put 'put ''bi9pY29udi1saXRlL3dpa2kvVXNlLUJ1ZmZlcnMtd2hlbi1kZWNvZGluZyIpLEUuc2tpcERlY29kZVdhcm5pbmc9ITApLGo9bWUuZnJvbSgiIisoanx8IiIpLCJiaW5hcnkiKSk7dmFyIFk9RS5nZXREZWNvZGVyKHJlLGFlKSxXPVkud3JpdGUoaiksTj1ZLmVuZCgpO3JldHVybiBOP1crTjpX''@;'; put 'put ''fSxFLmVuY29kaW5nRXhpc3RzPWZ1bmN0aW9uKGope3RyeXtyZXR1cm4gRS5nZXRDb2RlYyhqKSwhMH1jYXRjaChyZSl7cmV0dXJuITF9fSxFLnRvRW5jb2Rpbmc9RS5lbmNvZGUsRS5mcm9tRW5jb2Rpbmc9RS5kZWNvZGUsRS5fY29kZWNEYXRhQ2FjaGU9e30sRS5nZXRDb2RlYz1mdW5jdGlv''@;'; put 'put ''bihqKXtFLmVuY29kaW5nc3x8KEUuZW5jb2RpbmdzPUwoNzk3MTQpKTtmb3IodmFyIHJlPUUuX2Nhbm9uaWNhbGl6ZUVuY29kaW5nKGopLGFlPXt9Ozspe3ZhciBZPUUuX2NvZGVjRGF0YUNhY2hlW3JlXTtpZihZKXJldHVybiBZO3ZhciBXPUUuZW5jb2RpbmdzW3JlXTtzd2l0Y2godHlwZW9m''@;'; put 'put ''IFcpe2Nhc2Uic3RyaW5nIjpyZT1XO2JyZWFrO2Nhc2Uib2JqZWN0Ijpmb3IodmFyIE4gaW4gVylhZVtOXT1XW05dO2FlLmVuY29kaW5nTmFtZXx8KGFlLmVuY29kaW5nTmFtZT1yZSkscmU9Vy50eXBlO2JyZWFrO2Nhc2UiZnVuY3Rpb24iOnJldHVybiBhZS5lbmNvZGluZ05hbWV8fChhZS5l''@;'; put 'put ''bmNvZGluZ05hbWU9cmUpLFk9bmV3IFcoYWUsRSksRS5fY29kZWNEYXRhQ2FjaGVbYWUuZW5jb2RpbmdOYW1lXT1ZLFk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nIG5vdCByZWNvZ25pemVkOiAnIitqKyInIChzZWFyY2hlZCBhczogJyIrcmUrIicpIil9fX0sRS5fY2Fub25p''@;'; put 'put ''Y2FsaXplRW5jb2Rpbmc9ZnVuY3Rpb24oUSl7cmV0dXJuKCIiK1EpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvOlxkezR9JHxbXjAtOWEtel0vZywiIil9LEUuZ2V0RW5jb2Rlcj1mdW5jdGlvbihqLHJlKXt2YXIgYWU9RS5nZXRDb2RlYyhqKSxZPW5ldyBhZS5lbmNvZGVyKHJlLGFlKTtyZXR1''@;'; put 'put ''cm4gYWUuYm9tQXdhcmUmJnJlJiZyZS5hZGRCT00mJihZPW5ldyBCLlByZXBlbmRCT00oWSxyZSkpLFl9LEUuZ2V0RGVjb2Rlcj1mdW5jdGlvbihqLHJlKXt2YXIgYWU9RS5nZXRDb2RlYyhqKSxZPW5ldyBhZS5kZWNvZGVyKHJlLGFlKTtyZXR1cm4gYWUuYm9tQXdhcmUmJiEocmUmJiExPT09''@;'; put 'put ''cmUuc3RyaXBCT00pJiYoWT1uZXcgQi5TdHJpcEJPTShZLHJlKSksWX07dmFyIEVlPSJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2VzcyYmcHJvY2Vzcy52ZXJzaW9ucyYmcHJvY2Vzcy52ZXJzaW9ucy5ub2RlO2lmKEVlKXt2YXIgVT1FZS5zcGxpdCgiLiIpLm1hcChOdW1iZXIpOyhVWzBdPjB8''@;'; put 'put ''fFVbMV0+PTEwKSYmTCg2OTMzMSkoRSksTCgxOTUyNykoRSl9fSw0ODQ2MTooWGUsSmUpPT57SmUucmVhZD1mdW5jdGlvbihMLG1lLEIsRSxFZSl7dmFyIFUsUSxqPTgqRWUtRS0xLHJlPSgxPDxqKS0xLGFlPXJlPj4xLFk9LTcsVz1CP0VlLTE6MCxOPUI/LTE6MSx0ZT1MW21lK1ddO2ZvcihX''@;'; put 'put ''Kz1OLFU9dGUmKDE8PC1ZKS0xLHRlPj49LVksWSs9ajtZPjA7VT0yNTYqVStMW21lK1ddLFcrPU4sWS09OCk7Zm9yKFE9VSYoMTw8LVkpLTEsVT4+PS1ZLFkrPUU7WT4wO1E9MjU2KlErTFttZStXXSxXKz1OLFktPTgpO2lmKDA9PT1VKVU9MS1hZTtlbHNle2lmKFU9PT1yZSlyZXR1cm4gUT9O''@;'; put 'put ''YU46MS8wKih0ZT8tMToxKTtRKz1NYXRoLnBvdygyLEUpLFUtPWFlfXJldHVybih0ZT8tMToxKSpRKk1hdGgucG93KDIsVS1FKX0sSmUud3JpdGU9ZnVuY3Rpb24oTCxtZSxCLEUsRWUsVSl7dmFyIFEsaixyZSxhZT04KlUtRWUtMSxZPSgxPDxhZSktMSxXPVk+PjEsTj0yMz09PUVlP01hdGgu''@;'; put 'put ''cG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCx0ZT1FPzA6VS0xLEs9RT8xOi0xLEo9bWU8MHx8MD09PW1lJiYxL21lPDA/MTowO2ZvcihtZT1NYXRoLmFicyhtZSksaXNOYU4obWUpfHxtZT09PTEvMD8oaj1pc05hTihtZSk/MTowLFE9WSk6KFE9TWF0aC5mbG9vcihNYXRoLmxvZyhtZSkv''@;'; put 'put ''TWF0aC5MTjIpLG1lKihyZT1NYXRoLnBvdygyLC1RKSk8MSYmKFEtLSxyZSo9MiksKG1lKz1RK1c+PTE/Ti9yZTpOKk1hdGgucG93KDIsMS1XKSkqcmU+PTImJihRKysscmUvPTIpLFErVz49WT8oaj0wLFE9WSk6UStXPj0xPyhqPShtZSpyZS0xKSpNYXRoLnBvdygyLEVlKSxRKz1XKTooaj1t''@;'; put 'put ''ZSpNYXRoLnBvdygyLFctMSkqTWF0aC5wb3coMixFZSksUT0wKSk7RWU+PTg7TFtCK3RlXT0yNTUmaix0ZSs9SyxqLz0yNTYsRWUtPTgpO2ZvcihRPVE8PEVlfGosYWUrPUVlO2FlPjA7TFtCK3RlXT0yNTUmUSx0ZSs9SyxRLz0yNTYsYWUtPTgpO0xbQit0ZS1LXXw9MTI4Kkp9fSw4Mzg5NDpY''@;'; put 'put ''ZT0+e1hlLmV4cG9ydHM9ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oTCxtZSl7bWUmJihMLnN1cGVyXz1tZSxMLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG1lLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOkwsZW51bWVyYWJsZTohMSx3cml0YWJsZToh''@;'; put 'put ''MCxjb25maWd1cmFibGU6ITB9fSkpfTpmdW5jdGlvbihMLG1lKXtpZihtZSl7TC5zdXBlcl89bWU7dmFyIEI9ZnVuY3Rpb24oKXt9O0IucHJvdG90eXBlPW1lLnByb3RvdHlwZSxMLnByb3RvdHlwZT1uZXcgQixMLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1MfX19LDgwOTU6KFhlLEplLEwpPT57''@;'; put 'put ''InVzZSBzdHJpY3QiO3ZhciBtZT1MKDgzODk0KSxCPUwoMzk2NTApLEU9TCg3MzUwMikuQnVmZmVyLEVlPW5ldyBBcnJheSgxNik7ZnVuY3Rpb24gVSgpe0IuY2FsbCh0aGlzLDY0KSx0aGlzLl9hPTE3MzI1ODQxOTMsdGhpcy5fYj00MDIzMjMzNDE3LHRoaXMuX2M9MjU2MjM4MzEwMix0aGlz''@;'; put 'put ''Ll9kPTI3MTczMzg3OH1mdW5jdGlvbiBRKFcsTil7cmV0dXJuIFc8PE58Vz4+PjMyLU59ZnVuY3Rpb24gaihXLE4sdGUsSyxKLHNlLG9lKXtyZXR1cm4gUShXKyhOJnRlfH5OJkspK0orc2V8MCxvZSkrTnwwfWZ1bmN0aW9uIHJlKFcsTix0ZSxLLEosc2Usb2Upe3JldHVybiBRKFcrKE4mS3x0''@;'; put 'put ''ZSZ+SykrSitzZXwwLG9lKStOfDB9ZnVuY3Rpb24gYWUoVyxOLHRlLEssSixzZSxvZSl7cmV0dXJuIFEoVysoTl50ZV5LKStKK3NlfDAsb2UpK058MH1mdW5jdGlvbiBZKFcsTix0ZSxLLEosc2Usb2Upe3JldHVybiBRKFcrKHRlXihOfH5LKSkrSitzZXwwLG9lKStOfDB9bWUoVSxCKSxVLnBy''@;'; put 'put ''b3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciBXPUVlLE49MDtOPDE2OysrTilXW05dPXRoaXMuX2Jsb2NrLnJlYWRJbnQzMkxFKDQqTik7dmFyIHRlPXRoaXMuX2EsSz10aGlzLl9iLEo9dGhpcy5fYyxzZT10aGlzLl9kO3RlPWoodGUsSyxKLHNlLFdbMF0sMzYxNDA5MDM2MCw3''@;'; put 'put ''KSxzZT1qKHNlLHRlLEssSixXWzFdLDM5MDU0MDI3MTAsMTIpLEo9aihKLHNlLHRlLEssV1syXSw2MDYxMDU4MTksMTcpLEs9aihLLEosc2UsdGUsV1szXSwzMjUwNDQxOTY2LDIyKSx0ZT1qKHRlLEssSixzZSxXWzRdLDQxMTg1NDgzOTksNyksc2U9aihzZSx0ZSxLLEosV1s1XSwxMjAwMDgw''@;'; put 'put ''NDI2LDEyKSxKPWooSixzZSx0ZSxLLFdbNl0sMjgyMTczNTk1NSwxNyksSz1qKEssSixzZSx0ZSxXWzddLDQyNDkyNjEzMTMsMjIpLHRlPWoodGUsSyxKLHNlLFdbOF0sMTc3MDAzNTQxNiw3KSxzZT1qKHNlLHRlLEssSixXWzldLDIzMzY1NTI4NzksMTIpLEo9aihKLHNlLHRlLEssV1sxMF0s''@;'; put 'put ''NDI5NDkyNTIzMywxNyksSz1qKEssSixzZSx0ZSxXWzExXSwyMzA0NTYzMTM0LDIyKSx0ZT1qKHRlLEssSixzZSxXWzEyXSwxODA0NjAzNjgyLDcpLHNlPWooc2UsdGUsSyxKLFdbMTNdLDQyNTQ2MjYxOTUsMTIpLEo9aihKLHNlLHRlLEssV1sxNF0sMjc5Mjk2NTAwNiwxNyksdGU9cmUodGUs''@;'; put 'put ''Sz1qKEssSixzZSx0ZSxXWzE1XSwxMjM2NTM1MzI5LDIyKSxKLHNlLFdbMV0sNDEyOTE3MDc4Niw1KSxzZT1yZShzZSx0ZSxLLEosV1s2XSwzMjI1NDY1NjY0LDkpLEo9cmUoSixzZSx0ZSxLLFdbMTFdLDY0MzcxNzcxMywxNCksSz1yZShLLEosc2UsdGUsV1swXSwzOTIxMDY5OTk0LDIwKSx0''@;'; put 'put ''ZT1yZSh0ZSxLLEosc2UsV1s1XSwzNTkzNDA4NjA1LDUpLHNlPXJlKHNlLHRlLEssSixXWzEwXSwzODAxNjA4Myw5KSxKPXJlKEosc2UsdGUsSyxXWzE1XSwzNjM0NDg4OTYxLDE0KSxLPXJlKEssSixzZSx0ZSxXWzRdLDM4ODk0Mjk0NDgsMjApLHRlPXJlKHRlLEssSixzZSxXWzldLDU2ODQ0''@;'; put 'put ''NjQzOCw1KSxzZT1yZShzZSx0ZSxLLEosV1sxNF0sMzI3NTE2MzYwNiw5KSxKPXJlKEosc2UsdGUsSyxXWzNdLDQxMDc2MDMzMzUsMTQpLEs9cmUoSyxKLHNlLHRlLFdbOF0sMTE2MzUzMTUwMSwyMCksdGU9cmUodGUsSyxKLHNlLFdbMTNdLDI4NTAyODU4MjksNSksc2U9cmUoc2UsdGUsSyxK''@;'; put 'put ''LFdbMl0sNDI0MzU2MzUxMiw5KSxKPXJlKEosc2UsdGUsSyxXWzddLDE3MzUzMjg0NzMsMTQpLHRlPWFlKHRlLEs9cmUoSyxKLHNlLHRlLFdbMTJdLDIzNjgzNTk1NjIsMjApLEosc2UsV1s1XSw0Mjk0NTg4NzM4LDQpLHNlPWFlKHNlLHRlLEssSixXWzhdLDIyNzIzOTI4MzMsMTEpLEo9YWUo''@;'; put 'put ''SixzZSx0ZSxLLFdbMTFdLDE4MzkwMzA1NjIsMTYpLEs9YWUoSyxKLHNlLHRlLFdbMTRdLDQyNTk2NTc3NDAsMjMpLHRlPWFlKHRlLEssSixzZSxXWzFdLDI3NjM5NzUyMzYsNCksc2U9YWUoc2UsdGUsSyxKLFdbNF0sMTI3Mjg5MzM1MywxMSksSj1hZShKLHNlLHRlLEssV1s3XSw0MTM5NDY5''@;'; put 'put ''NjY0LDE2KSxLPWFlKEssSixzZSx0ZSxXWzEwXSwzMjAwMjM2NjU2LDIzKSx0ZT1hZSh0ZSxLLEosc2UsV1sxM10sNjgxMjc5MTc0LDQpLHNlPWFlKHNlLHRlLEssSixXWzBdLDM5MzY0MzAwNzQsMTEpLEo9YWUoSixzZSx0ZSxLLFdbM10sMzU3MjQ0NTMxNywxNiksSz1hZShLLEosc2UsdGUs''@;'; put 'put ''V1s2XSw3NjAyOTE4OSwyMyksdGU9YWUodGUsSyxKLHNlLFdbOV0sMzY1NDYwMjgwOSw0KSxzZT1hZShzZSx0ZSxLLEosV1sxMl0sMzg3MzE1MTQ2MSwxMSksSj1hZShKLHNlLHRlLEssV1sxNV0sNTMwNzQyNTIwLDE2KSx0ZT1ZKHRlLEs9YWUoSyxKLHNlLHRlLFdbMl0sMzI5OTYyODY0NSwy''@;'; put 'put ''MyksSixzZSxXWzBdLDQwOTYzMzY0NTIsNiksc2U9WShzZSx0ZSxLLEosV1s3XSwxMTI2ODkxNDE1LDEwKSxKPVkoSixzZSx0ZSxLLFdbMTRdLDI4Nzg2MTIzOTEsMTUpLEs9WShLLEosc2UsdGUsV1s1XSw0MjM3NTMzMjQxLDIxKSx0ZT1ZKHRlLEssSixzZSxXWzEyXSwxNzAwNDg1NTcxLDYp''@;'; put 'put ''LHNlPVkoc2UsdGUsSyxKLFdbM10sMjM5OTk4MDY5MCwxMCksSj1ZKEosc2UsdGUsSyxXWzEwXSw0MjkzOTE1NzczLDE1KSxLPVkoSyxKLHNlLHRlLFdbMV0sMjI0MDA0NDQ5NywyMSksdGU9WSh0ZSxLLEosc2UsV1s4XSwxODczMzEzMzU5LDYpLHNlPVkoc2UsdGUsSyxKLFdbMTVdLDQyNjQz''@;'; put 'put ''NTU1NTIsMTApLEo9WShKLHNlLHRlLEssV1s2XSwyNzM0NzY4OTE2LDE1KSxLPVkoSyxKLHNlLHRlLFdbMTNdLDEzMDkxNTE2NDksMjEpLHRlPVkodGUsSyxKLHNlLFdbNF0sNDE0OTQ0NDIyNiw2KSxzZT1ZKHNlLHRlLEssSixXWzExXSwzMTc0NzU2OTE3LDEwKSxKPVkoSixzZSx0ZSxLLFdb''@;'; put 'put ''Ml0sNzE4Nzg3MjU5LDE1KSxLPVkoSyxKLHNlLHRlLFdbOV0sMzk1MTQ4MTc0NSwyMSksdGhpcy5fYT10aGlzLl9hK3RlfDAsdGhpcy5fYj10aGlzLl9iK0t8MCx0aGlzLl9jPXRoaXMuX2MrSnwwLHRoaXMuX2Q9dGhpcy5fZCtzZXwwfSxVLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKCl7''@;'; put 'put ''dGhpcy5fYmxvY2tbdGhpcy5fYmxvY2tPZmZzZXQrK109MTI4LHRoaXMuX2Jsb2NrT2Zmc2V0PjU2JiYodGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDY0KSx0aGlzLl91cGRhdGUoKSx0aGlzLl9ibG9ja09mZnNldD0wKSx0aGlzLl9ibG9jay5maWxsKDAsdGhpcy5fYmxv''@;'; put 'put ''Y2tPZmZzZXQsNTYpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5fbGVuZ3RoWzBdLDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFsxXSw2MCksdGhpcy5fdXBkYXRlKCk7dmFyIFc9RS5hbGxvY1Vuc2FmZSgxNik7cmV0dXJuIFcud3JpdGVJbnQzMkxF''@;'; put 'put ''KHRoaXMuX2EsMCksVy53cml0ZUludDMyTEUodGhpcy5fYiw0KSxXLndyaXRlSW50MzJMRSh0aGlzLl9jLDgpLFcud3JpdGVJbnQzMkxFKHRoaXMuX2QsMTIpLFd9LFhlLmV4cG9ydHM9VX0sMTcwNzk6KFhlLEplLEwpPT57dmFyIG1lPUwoMTM3OCksQj1MKDM3OTUwKTtmdW5jdGlvbiBFKEVl''@;'; put 'put ''KXt0aGlzLnJhbmQ9RWV8fG5ldyBCLlJhbmR9WGUuZXhwb3J0cz1FLEUuY3JlYXRlPWZ1bmN0aW9uKFUpe3JldHVybiBuZXcgRShVKX0sRS5wcm90b3R5cGUuX3JhbmRiZWxvdz1mdW5jdGlvbihVKXt2YXIgUT1VLmJpdExlbmd0aCgpLGo9TWF0aC5jZWlsKFEvOCk7ZG97dmFyIHJlPW5ldyBt''@;'; put 'put ''ZSh0aGlzLnJhbmQuZ2VuZXJhdGUoaikpfXdoaWxlKHJlLmNtcChVKT49MCk7cmV0dXJuIHJlfSxFLnByb3RvdHlwZS5fcmFuZHJhbmdlPWZ1bmN0aW9uKFUsUSl7dmFyIGo9US5zdWIoVSk7cmV0dXJuIFUuYWRkKHRoaXMuX3JhbmRiZWxvdyhqKSl9LEUucHJvdG90eXBlLnRlc3Q9ZnVuY3Rp''@;'; put 'put ''b24oVSxRLGope3ZhciByZT1VLmJpdExlbmd0aCgpLGFlPW1lLm1vbnQoVSksWT1uZXcgbWUoMSkudG9SZWQoYWUpO1F8fChRPU1hdGgubWF4KDEscmUvNDh8MCkpO2Zvcih2YXIgVz1VLnN1Ym4oMSksTj0wOyFXLnRlc3RuKE4pO04rKyk7Zm9yKHZhciB0ZT1VLnNocm4oTiksSz1XLnRvUmVk''@;'; put 'put ''KGFlKTtRPjA7US0tKXt2YXIgc2U9dGhpcy5fcmFuZHJhbmdlKG5ldyBtZSgyKSxXKTtqJiZqKHNlKTt2YXIgb2U9c2UudG9SZWQoYWUpLnJlZFBvdyh0ZSk7aWYoMCE9PW9lLmNtcChZKSYmMCE9PW9lLmNtcChLKSl7Zm9yKHZhciBjZT0xO2NlPE47Y2UrKyl7aWYoMD09PShvZT1vZS5yZWRT''@;'; put 'put ''cXIoKSkuY21wKFkpKXJldHVybiExO2lmKDA9PT1vZS5jbXAoSykpYnJlYWt9aWYoY2U9PT1OKXJldHVybiExfX1yZXR1cm4hMH0sRS5wcm90b3R5cGUuZ2V0RGl2aXNvcj1mdW5jdGlvbihVLFEpe3ZhciBqPVUuYml0TGVuZ3RoKCkscmU9bWUubW9udChVKSxhZT1uZXcgbWUoMSkudG9SZWQo''@;'; put 'put ''cmUpO1F8fChRPU1hdGgubWF4KDEsai80OHwwKSk7Zm9yKHZhciBZPVUuc3VibigxKSxXPTA7IVkudGVzdG4oVyk7VysrKTtmb3IodmFyIE49VS5zaHJuKFcpLHRlPVkudG9SZWQocmUpO1E+MDtRLS0pe3ZhciBLPXRoaXMuX3JhbmRyYW5nZShuZXcgbWUoMiksWSksSj1VLmdjZChLKTtpZigw''@;'; put 'put ''IT09Si5jbXBuKDEpKXJldHVybiBKO3ZhciBzZT1LLnRvUmVkKHJlKS5yZWRQb3coTik7aWYoMCE9PXNlLmNtcChhZSkmJjAhPT1zZS5jbXAodGUpKXtmb3IodmFyIG9lPTE7b2U8VztvZSsrKXtpZigwPT09KHNlPXNlLnJlZFNxcigpKS5jbXAoYWUpKXJldHVybiBzZS5mcm9tUmVkKCkuc3Vi''@;'; put 'put ''bigxKS5nY2QoVSk7aWYoMD09PXNlLmNtcCh0ZSkpYnJlYWt9aWYob2U9PT1XKXJldHVybihzZT1zZS5yZWRTcXIoKSkuZnJvbVJlZCgpLnN1Ym4oMSkuZ2NkKFUpfX1yZXR1cm4hMX19LDEzNzg6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lLEIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlv''@;'; put 'put ''biBFKGhlLE8pe2lmKCFoZSl0aHJvdyBuZXcgRXJyb3IoT3x8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBFZShoZSxPKXtoZS5zdXBlcl89Tzt2YXIgej1mdW5jdGlvbigpe307ei5wcm90b3R5cGU9Ty5wcm90b3R5cGUsaGUucHJvdG90eXBlPW5ldyB6LGhlLnByb3RvdHlwZS5jb25z''@;'; put 'put ''dHJ1Y3Rvcj1oZX1mdW5jdGlvbiBVKGhlLE8seil7aWYoVS5pc0JOKGhlKSlyZXR1cm4gaGU7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PWhlJiYoKCJsZSI9PT1PfHwiYmUiPT09TykmJih6PU8sTz0xMCksdGhpcy5f''@;'; put 'put ''aW5pdChoZXx8MCxPfHwxMCx6fHwiYmUiKSl9dmFyIFE7Im9iamVjdCI9PXR5cGVvZiBtZT9tZS5leHBvcnRzPVU6Qi5CTj1VLFUuQk49VSxVLndvcmRTaXplPTI2O3RyeXtRPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuQnVmZmVyP3dpbmRvdy5CdWZmZXI6''@;'; put 'put ''TCg1NjYxOSkuQnVmZmVyfWNhdGNoKGhlKXt9ZnVuY3Rpb24gaihoZSxPKXt2YXIgej1oZS5jaGFyQ29kZUF0KE8pO3JldHVybiB6Pj02NSYmejw9NzA/ei01NTp6Pj05NyYmejw9MTAyP3otODc6ei00OCYxNX1mdW5jdGlvbiByZShoZSxPLHope3ZhciBlZT1qKGhlLHopO3JldHVybiB6LTE+''@;'; put 'put ''PU8mJihlZXw9aihoZSx6LTEpPDw0KSxlZX1mdW5jdGlvbiBhZShoZSxPLHosZWUpe2Zvcih2YXIgbmU9MCx4PU1hdGgubWluKGhlLmxlbmd0aCx6KSxQPU87UDx4O1ArKyl7dmFyIFY9aGUuY2hhckNvZGVBdChQKS00ODtuZSo9ZWUsbmUrPVY+PTQ5P1YtNDkrMTA6Vj49MTc/Vi0xNysxMDpW''@;'; put 'put ''fXJldHVybiBuZX1VLmlzQk49ZnVuY3Rpb24oTyl7cmV0dXJuIE8gaW5zdGFuY2VvZiBVfHxudWxsIT09TyYmIm9iamVjdCI9PXR5cGVvZiBPJiZPLmNvbnN0cnVjdG9yLndvcmRTaXplPT09VS53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheShPLndvcmRzKX0sVS5tYXg9ZnVuY3Rpb24oTyx6KXty''@;'; put 'put ''ZXR1cm4gTy5jbXAoeik+MD9POnp9LFUubWluPWZ1bmN0aW9uKE8seil7cmV0dXJuIE8uY21wKHopPDA/Tzp6fSxVLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihPLHosZWUpe2lmKCJudW1iZXIiPT10eXBlb2YgTylyZXR1cm4gdGhpcy5faW5pdE51bWJlcihPLHosZWUpO2lmKCJvYmplY3Qi''@;'; put 'put ''PT10eXBlb2YgTylyZXR1cm4gdGhpcy5faW5pdEFycmF5KE8seixlZSk7ImhleCI9PT16JiYoej0xNiksRSh6PT09KDB8eikmJno+PTImJno8PTM2KTt2YXIgbmU9MDsiLSI9PT0oTz1PLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKG5lKyssdGhpcy5uZWdhdGl2ZT0xKSxu''@;'; put 'put ''ZTxPLmxlbmd0aCYmKDE2PT09ej90aGlzLl9wYXJzZUhleChPLG5lLGVlKToodGhpcy5fcGFyc2VCYXNlKE8seixuZSksImxlIj09PWVlJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCkseixlZSkpKX0sVS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oTyx6LGVlKXtPPDAm''@;'; put 'put ''Jih0aGlzLm5lZ2F0aXZlPTEsTz0tTyksTzw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmT10sdGhpcy5sZW5ndGg9MSk6Tzw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZPLE8vNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihFKE88OTAwNzE5''@;'; put 'put ''OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmTyxPLzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1lZSYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHosZWUpfSxVLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKE8seixlZSl7aWYo''@;'; put 'put ''RSgibnVtYmVyIj09dHlwZW9mIE8ubGVuZ3RoKSxPLmxlbmd0aDw9MClyZXR1cm4gdGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MSx0aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbChPLmxlbmd0aC8zKSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBuZT0wO25l''@;'; put 'put ''PHRoaXMubGVuZ3RoO25lKyspdGhpcy53b3Jkc1tuZV09MDt2YXIgeCxQLFY9MDtpZigiYmUiPT09ZWUpZm9yKG5lPU8ubGVuZ3RoLTEseD0wO25lPj0wO25lLT0zKXRoaXMud29yZHNbeF18PShQPU9bbmVdfE9bbmUtMV08PDh8T1tuZS0yXTw8MTYpPDxWJjY3MTA4ODYzLHRoaXMud29yZHNb''@;'; put 'put ''eCsxXT1QPj4+MjYtViY2NzEwODg2MywoVis9MjQpPj0yNiYmKFYtPTI2LHgrKyk7ZWxzZSBpZigibGUiPT09ZWUpZm9yKG5lPTAseD0wO25lPE8ubGVuZ3RoO25lKz0zKXRoaXMud29yZHNbeF18PShQPU9bbmVdfE9bbmUrMV08PDh8T1tuZSsyXTw8MTYpPDxWJjY3MTA4ODYzLHRoaXMud29y''@;'; put 'put ''ZHNbeCsxXT1QPj4+MjYtViY2NzEwODg2MywoVis9MjQpPj0yNiYmKFYtPTI2LHgrKyk7cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKE8seixlZSl7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChPLmxlbmd0aC16KS82KSx0aGlzLndvcmRzPW5ldyBB''@;'; put 'put ''cnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBuZT0wO25lPHRoaXMubGVuZ3RoO25lKyspdGhpcy53b3Jkc1tuZV09MDt2YXIgVix4PTAsUD0wO2lmKCJiZSI9PT1lZSlmb3IobmU9Ty5sZW5ndGgtMTtuZT49ejtuZS09MilWPXJlKE8seixuZSk8PHgsdGhpcy53b3Jkc1tQXXw9NjcxMDg4NjMm''@;'; put 'put ''Vix4Pj0xOD8oeC09MTgsdGhpcy53b3Jkc1tQKz0xXXw9Vj4+PjI2KTp4Kz04O2Vsc2UgZm9yKG5lPShPLmxlbmd0aC16KSUyPT0wP3orMTp6O25lPE8ubGVuZ3RoO25lKz0yKVY9cmUoTyx6LG5lKTw8eCx0aGlzLndvcmRzW1BdfD02NzEwODg2MyZWLHg+PTE4Pyh4LT0xOCx0aGlzLndvcmRz''@;'; put 'put ''W1ArPTFdfD1WPj4+MjYpOngrPTg7dGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKE8seixlZSl7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIG5lPTAseD0xO3g8PTY3MTA4ODYzO3gqPXopbmUrKztuZS0tLHg9eC96fDA7Zm9yKHZhciBQ''@;'; put 'put ''PU8ubGVuZ3RoLWVlLFY9UCVuZSxUPU1hdGgubWluKFAsUC1WKStlZSxTPTAsRj1lZTtGPFQ7Ris9bmUpUz1hZShPLEYsRituZSx6KSx0aGlzLmltdWxuKHgpLHRoaXMud29yZHNbMF0rUzw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1TOnRoaXMuX2lhZGRuKFMpO2lmKDAhPT1WKXt2YXIgeWU9''@;'; put 'put ''MTtmb3IoUz1hZShPLEYsTy5sZW5ndGgseiksRj0wO0Y8VjtGKyspeWUqPXo7dGhpcy5pbXVsbih5ZSksdGhpcy53b3Jkc1swXStTPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPVM6dGhpcy5faWFkZG4oUyl9dGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKE8pe08ud29y''@;'; put 'put ''ZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHo9MDt6PHRoaXMubGVuZ3RoO3orKylPLndvcmRzW3pdPXRoaXMud29yZHNbel07Ty5sZW5ndGg9dGhpcy5sZW5ndGgsTy5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLE8ucmVkPXRoaXMucmVkfSxVLnByb3RvdHlwZS5jbG9uZT1mdW5j''@;'; put 'put ''dGlvbigpe3ZhciBPPW5ldyBVKG51bGwpO3JldHVybiB0aGlzLmNvcHkoTyksT30sVS5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihPKXtmb3IoO3RoaXMubGVuZ3RoPE87KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sVS5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rp''@;'; put 'put ''b24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxVLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jk''@;'; put 'put ''c1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sVS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgWT1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAw''@;'; put 'put ''MCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxXPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLE49WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2''@;'; put 'put ''NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4''@;'; put 'put ''MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gSyhoZSxPLHope3oubmVnYXRpdmU9Ty5uZWdhdGl2ZV5oZS5uZWdhdGl2ZTt2YXIgZWU9aGUubGVuZ3RoK08u''@;'; put 'put ''bGVuZ3RofDA7ei5sZW5ndGg9ZWUsZWU9ZWUtMXwwO3ZhciBuZT0wfGhlLndvcmRzWzBdLHg9MHxPLndvcmRzWzBdLFA9bmUqeCxUPVAvNjcxMDg4NjR8MDt6LndvcmRzWzBdPTY3MTA4ODYzJlA7Zm9yKHZhciBTPTE7UzxlZTtTKyspe2Zvcih2YXIgRj1UPj4+MjYseWU9NjcxMDg4NjMmVCxD''@;'; put 'put ''ZT1NYXRoLm1pbihTLE8ubGVuZ3RoLTEpLERlPU1hdGgubWF4KDAsUy1oZS5sZW5ndGgrMSk7RGU8PUNlO0RlKyspRis9KFA9KG5lPTB8aGUud29yZHNbUy1EZXwwXSkqKHg9MHxPLndvcmRzW0RlXSkreWUpLzY3MTA4ODY0fDAseWU9NjcxMDg4NjMmUDt6LndvcmRzW1NdPTB8eWUsVD0wfEZ9''@;'; put 'put ''cmV0dXJuIDAhPT1UP3oud29yZHNbU109MHxUOnoubGVuZ3RoLS0sei5zdHJpcCgpfVUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKE8seil7dmFyIGVlO2lmKHo9MHx6fHwxLDE2PT09KE89T3x8MTApfHwiaGV4Ij09PU8pe2VlPSIiO2Zvcih2YXIgbmU9MCx4PTAsUD0wO1A8dGhpcy5s''@;'; put 'put ''ZW5ndGg7UCsrKXt2YXIgVj10aGlzLndvcmRzW1BdLFQ9KDE2Nzc3MjE1JihWPDxuZXx4KSkudG9TdHJpbmcoMTYpO2VlPTAhPSh4PVY+Pj4yNC1uZSYxNjc3NzIxNSl8fFAhPT10aGlzLmxlbmd0aC0xP1lbNi1ULmxlbmd0aF0rVCtlZTpUK2VlLChuZSs9Mik+PTI2JiYobmUtPTI2LFAtLSl9''@;'; put 'put ''Zm9yKDAhPT14JiYoZWU9eC50b1N0cmluZygxNikrZWUpO2VlLmxlbmd0aCV6IT0wOyllZT0iMCIrZWU7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoZWU9Ii0iK2VlKSxlZX1pZihPPT09KDB8TykmJk8+PTImJk88PTM2KXt2YXIgUz1XW09dLEY9TltPXTtlZT0iIjt2YXIgeWU9dGhpcy5j''@;'; put 'put ''bG9uZSgpO2Zvcih5ZS5uZWdhdGl2ZT0wOyF5ZS5pc1plcm8oKTspe3ZhciBDZT15ZS5tb2RuKEYpLnRvU3RyaW5nKE8pO2VlPSh5ZT15ZS5pZGl2bihGKSkuaXNaZXJvKCk/Q2UrZWU6WVtTLUNlLmxlbmd0aF0rQ2UrZWV9Zm9yKHRoaXMuaXNaZXJvKCkmJihlZT0iMCIrZWUpO2VlLmxlbmd0''@;'; put 'put ''aCV6IT0wOyllZT0iMCIrZWU7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoZWU9Ii0iK2VlKSxlZX1FKCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LFUucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIE89dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRo''@;'; put 'put ''aXMubGVuZ3RoP08rPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT9PKz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmRSghMSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1''@;'; put 'put ''cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LU86T30sVS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpfSxVLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbihPLHope3JldHVybiBFKHZvaWQgMCE9PVEpLHRoaXMudG9BcnJheUxp''@;'; put 'put ''a2UoUSxPLHopfSxVLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKE8seil7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksTyx6KX0sVS5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oTyx6LGVlKXt2YXIgbmU9dGhpcy5ieXRlTGVuZ3RoKCkseD1lZXx8TWF0aC5tYXgoMSxu''@;'; put 'put ''ZSk7RShuZTw9eCwiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLEUoeD4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIFQsUyxQPSJsZSI9PT16LFY9bmV3IE8oeCksRj10aGlzLmNsb25lKCk7aWYoUCl7Zm9yKFM9MDshRi5p''@;'; put 'put ''c1plcm8oKTtTKyspVD1GLmFuZGxuKDI1NSksRi5pdXNocm4oOCksVltTXT1UO2Zvcig7Uzx4O1MrKylWW1NdPTB9ZWxzZXtmb3IoUz0wO1M8eC1uZTtTKyspVltTXT0wO2ZvcihTPTA7IUYuaXNaZXJvKCk7UysrKVQ9Ri5hbmRsbigyNTUpLEYuaXVzaHJuKDgpLFZbeC1TLTFdPVR9cmV0dXJu''@;'; put 'put ''IFZ9LFUucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbihPKXtyZXR1cm4gMzItTWF0aC5jbHozMihPKX06ZnVuY3Rpb24oTyl7dmFyIHo9TyxlZT0wO3JldHVybiB6Pj00MDk2JiYoZWUrPTEzLHo+Pj49MTMpLHo+PTY0JiYoZWUrPTcsej4+Pj03KSx6Pj04JiYoZWUr''@;'; put 'put ''PTQsej4+Pj00KSx6Pj0yJiYoZWUrPTIsej4+Pj0yKSxlZSt6fSxVLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oTyl7aWYoMD09PU8pcmV0dXJuIDI2O3ZhciB6PU8sZWU9MDtyZXR1cm4gMD09KDgxOTEmeikmJihlZSs9MTMsej4+Pj0xMyksMD09KDEyNyZ6KSYmKGVlKz03LHo+Pj49''@;'; put 'put ''NyksMD09KDE1JnopJiYoZWUrPTQsej4+Pj00KSwwPT0oMyZ6KSYmKGVlKz0yLHo+Pj49MiksMD09KDEmeikmJmVlKyssZWV9LFUucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciB6PXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYq''@;'; put 'put ''KHRoaXMubGVuZ3RoLTEpK3p9LFUucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIE89MCx6PTA7ejx0aGlzLmxlbmd0aDt6Kyspe3ZhciBlZT10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW3pdKTtpZihPKz1lZSwyNiE9PWVl''@;'; put 'put ''KWJyZWFrfXJldHVybiBPfSxVLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxVLnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oTyl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oTyku''@;'; put 'put ''aWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxVLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy50ZXN0bihPLTEpP3RoaXMubm90bihPKS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxVLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhp''@;'; put 'put ''cy5uZWdhdGl2ZX0sVS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LFUucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LFUucHJvdG90eXBlLml1b3I9ZnVuY3Rp''@;'; put 'put ''b24oTyl7Zm9yKDt0aGlzLmxlbmd0aDxPLmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgej0wO3o8Ty5sZW5ndGg7eisrKXRoaXMud29yZHNbel09dGhpcy53b3Jkc1t6XXxPLndvcmRzW3pdO3JldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlvcj1m''@;'; put 'put ''dW5jdGlvbihPKXtyZXR1cm4gRSgwPT0odGhpcy5uZWdhdGl2ZXxPLm5lZ2F0aXZlKSksdGhpcy5pdW9yKE8pfSxVLnByb3RvdHlwZS5vcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcihPKTpPLmNsb25lKCkuaW9yKHRoaXMpfSxVLnBy''@;'; put 'put ''b3RvdHlwZS51b3I9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKE8pOk8uY2xvbmUoKS5pdW9yKHRoaXMpfSxVLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbihPKXt2YXIgejt6PXRoaXMubGVuZ3RoPk8ubGVuZ3RoP086dGhpcztmb3Io''@;'; put 'put ''dmFyIGVlPTA7ZWU8ei5sZW5ndGg7ZWUrKyl0aGlzLndvcmRzW2VlXT10aGlzLndvcmRzW2VlXSZPLndvcmRzW2VlXTtyZXR1cm4gdGhpcy5sZW5ndGg9ei5sZW5ndGgsdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKE8pe3JldHVybiBFKDA9PSh0aGlzLm5lZ2F0aXZl''@;'; put 'put ''fE8ubmVnYXRpdmUpKSx0aGlzLml1YW5kKE8pfSxVLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKE8pOk8uY2xvbmUoKS5pYW5kKHRoaXMpfSxVLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKE8pe3JldHVybiB0''@;'; put 'put ''aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoTyk6Ty5jbG9uZSgpLml1YW5kKHRoaXMpfSxVLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbihPKXt2YXIgeixlZTt0aGlzLmxlbmd0aD5PLmxlbmd0aD8oej10aGlzLGVlPU8pOih6PU8sZWU9dGhpcyk7Zm9yKHZhciBuZT0w''@;'; put 'put ''O25lPGVlLmxlbmd0aDtuZSsrKXRoaXMud29yZHNbbmVdPXoud29yZHNbbmVdXmVlLndvcmRzW25lXTtpZih0aGlzIT09eilmb3IoO25lPHoubGVuZ3RoO25lKyspdGhpcy53b3Jkc1tuZV09ei53b3Jkc1tuZV07cmV0dXJuIHRoaXMubGVuZ3RoPXoubGVuZ3RoLHRoaXMuc3RyaXAoKX0sVS5w''@;'; put 'put ''cm90b3R5cGUuaXhvcj1mdW5jdGlvbihPKXtyZXR1cm4gRSgwPT0odGhpcy5uZWdhdGl2ZXxPLm5lZ2F0aXZlKSksdGhpcy5pdXhvcihPKX0sVS5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcihPKTpPLmNsb25l''@;'; put 'put ''KCkuaXhvcih0aGlzKX0sVS5wcm90b3R5cGUudXhvcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKE8pOk8uY2xvbmUoKS5pdXhvcih0aGlzKX0sVS5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9m''@;'; put 'put ''IE8mJk8+PTApO3ZhciB6PTB8TWF0aC5jZWlsKE8vMjYpLGVlPU8lMjY7dGhpcy5fZXhwYW5kKHopLGVlPjAmJnotLTtmb3IodmFyIG5lPTA7bmU8ejtuZSsrKXRoaXMud29yZHNbbmVdPTY3MTA4ODYzJn50aGlzLndvcmRzW25lXTtyZXR1cm4gZWU+MCYmKHRoaXMud29yZHNbbmVdPX50aGlz''@;'; put 'put ''LndvcmRzW25lXSY2NzEwODg2Mz4+MjYtZWUpLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUubm90bj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKE8pfSxVLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKE8seil7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApO3ZhciBl''@;'; put 'put ''ZT1PLzI2fDAsbmU9TyUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKGVlKzEpLHRoaXMud29yZHNbZWVdPXo/dGhpcy53b3Jkc1tlZV18MTw8bmU6dGhpcy53b3Jkc1tlZV0mfigxPDxuZSksdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKE8pe3ZhciB6LGVlLG5lO2lmKDAh''@;'; put 'put ''PT10aGlzLm5lZ2F0aXZlJiYwPT09Ty5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHo9dGhpcy5pc3ViKE8pLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PU8ubmVnYXRpdmUpcmV0dXJuIE8ubmVnYXRpdmU9MCx6PXRo''@;'; put 'put ''aXMuaXN1YihPKSxPLm5lZ2F0aXZlPTEsei5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD5PLmxlbmd0aD8oZWU9dGhpcyxuZT1PKTooZWU9TyxuZT10aGlzKTtmb3IodmFyIHg9MCxQPTA7UDxuZS5sZW5ndGg7UCsrKXRoaXMud29yZHNbUF09NjcxMDg4NjMmKHo9KDB8ZWUud29yZHNbUF0pKygw''@;'; put 'put ''fG5lLndvcmRzW1BdKSt4KSx4PXo+Pj4yNjtmb3IoOzAhPT14JiZQPGVlLmxlbmd0aDtQKyspdGhpcy53b3Jkc1tQXT02NzEwODg2MyYoej0oMHxlZS53b3Jkc1tQXSkreCkseD16Pj4+MjY7aWYodGhpcy5sZW5ndGg9ZWUubGVuZ3RoLDAhPT14KXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPXgs''@;'; put 'put ''dGhpcy5sZW5ndGgrKztlbHNlIGlmKGVlIT09dGhpcylmb3IoO1A8ZWUubGVuZ3RoO1ArKyl0aGlzLndvcmRzW1BdPWVlLndvcmRzW1BdO3JldHVybiB0aGlzfSxVLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oTyl7dmFyIHo7cmV0dXJuIDAhPT1PLm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2''@;'; put 'put ''ZT8oTy5uZWdhdGl2ZT0wLHo9dGhpcy5zdWIoTyksTy5uZWdhdGl2ZV49MSx6KTowPT09Ty5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCx6PU8uc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSx6KTp0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCku''@;'; put 'put ''aWFkZChPKTpPLmNsb25lKCkuaWFkZCh0aGlzKX0sVS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihPKXtpZigwIT09Ty5uZWdhdGl2ZSl7Ty5uZWdhdGl2ZT0wO3ZhciB6PXRoaXMuaWFkZChPKTtyZXR1cm4gTy5uZWdhdGl2ZT0xLHouX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUp''@;'; put 'put ''cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoTyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIG5lLHgsZWU9dGhpcy5jbXAoTyk7aWYoMD09PWVlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztlZT4w''@;'; put 'put ''PyhuZT10aGlzLHg9Tyk6KG5lPU8seD10aGlzKTtmb3IodmFyIFA9MCxWPTA7Vjx4Lmxlbmd0aDtWKyspUD0oej0oMHxuZS53b3Jkc1tWXSktKDB8eC53b3Jkc1tWXSkrUCk+PjI2LHRoaXMud29yZHNbVl09NjcxMDg4NjMmejtmb3IoOzAhPT1QJiZWPG5lLmxlbmd0aDtWKyspUD0oej0oMHxu''@;'; put 'put ''ZS53b3Jkc1tWXSkrUCk+PjI2LHRoaXMud29yZHNbVl09NjcxMDg4NjMmejtpZigwPT09UCYmVjxuZS5sZW5ndGgmJm5lIT09dGhpcylmb3IoO1Y8bmUubGVuZ3RoO1YrKyl0aGlzLndvcmRzW1ZdPW5lLndvcmRzW1ZdO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxW''@;'; put 'put ''KSxuZSE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihPKX07dmFyIEo9ZnVuY3Rpb24oTyx6LGVlKXt2YXIgVCxTLEYsbmU9Ty53b3Jkcyx4PXoud29yZHMsUD1lZS53b3Jk''@;'; put 'put ''cyxWPTAseWU9MHxuZVswXSxDZT04MTkxJnllLERlPXllPj4+MTMsUGU9MHxuZVsxXSxRZT04MTkxJlBlLCRlPVBlPj4+MTMsZ3Q9MHxuZVsyXSx3dD04MTkxJmd0LG10PWd0Pj4+MTMsdnQ9MHxuZVszXSxBdD04MTkxJnZ0LGh0PXZ0Pj4+MTMsQnQ9MHxuZVs0XSxvbj04MTkxJkJ0LF90PUJ0''@;'; put 'put ''Pj4+MTMsdHQ9MHxuZVs1XSxldD04MTkxJnR0LGx0PXR0Pj4+MTMsTHQ9MHxuZVs2XSxDdD04MTkxJkx0LGZ0PUx0Pj4+MTMsSHQ9MHxuZVs3XSxHZT04MTkxJkh0LFVlPUh0Pj4+MTMseXQ9MHxuZVs4XSxqdD04MTkxJnl0LEp0PXl0Pj4+MTMsZ249MHxuZVs5XSxkbj04MTkxJmduLHluPWdu''@;'; put 'put ''Pj4+MTMsbG49MHx4WzBdLE5uPTgxOTEmbG4sYm49bG4+Pj4xMyxlcj0wfHhbMV0sc3I9ODE5MSZlcixYbj1lcj4+PjEzLEZyPTB8eFsyXSx4cj04MTkxJkZyLHF0PUZyPj4+MTMscHI9MHx4WzNdLG5yPTgxOTEmcHIsQW49cHI+Pj4xMyxxbj0wfHhbNF0sV3Q9ODE5MSZxbixwbj1xbj4+PjEz''@;'; put 'put ''LEtuPTB8eFs1XSxOdD04MTkxJktuLHNuPUtuPj4+MTMsVW49MHx4WzZdLHduPTgxOTEmVW4sdG49VW4+Pj4xMyx6bj0wfHhbN10sVHI9ODE5MSZ6bixCbj16bj4+PjEzLGtyPTB8eFs4XSxtbj04MTkxJmtyLHVuPWtyPj4+MTMsY249MHx4WzldLF9uPTgxOTEmY24sR3Q9Y24+Pj4xMztlZS5u''@;'; put 'put ''ZWdhdGl2ZT1PLm5lZ2F0aXZlXnoubmVnYXRpdmUsZWUubGVuZ3RoPTE5O3ZhciBrbj0oVisoVD1NYXRoLmltdWwoQ2UsTm4pKXwwKSsoKDgxOTEmKFM9KFM9TWF0aC5pbXVsKENlLGJuKSkrTWF0aC5pbXVsKERlLE5uKXwwKSk8PDEzKXwwO1Y9KChGPU1hdGguaW11bChEZSxibikpKyhTPj4+''@;'; put 'put ''MTMpfDApKyhrbj4+PjI2KXwwLGtuJj02NzEwODg2MyxUPU1hdGguaW11bChRZSxObiksUz0oUz1NYXRoLmltdWwoUWUsYm4pKStNYXRoLmltdWwoJGUsTm4pfDAsRj1NYXRoLmltdWwoJGUsYm4pO3ZhciBWbj0oVisoVD1UK01hdGguaW11bChDZSxzcil8MCl8MCkrKCg4MTkxJihTPShTPVMr''@;'; put 'put ''TWF0aC5pbXVsKENlLFhuKXwwKStNYXRoLmltdWwoRGUsc3IpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsWG4pfDApKyhTPj4+MTMpfDApKyhWbj4+PjI2KXwwLFZuJj02NzEwODg2MyxUPU1hdGguaW11bCh3dCxObiksUz0oUz1NYXRoLmltdWwod3QsYm4pKStNYXRoLmltdWwo''@;'; put 'put ''bXQsTm4pfDAsRj1NYXRoLmltdWwobXQsYm4pLFQ9VCtNYXRoLmltdWwoUWUsc3IpfDAsUz0oUz1TK01hdGguaW11bChRZSxYbil8MCkrTWF0aC5pbXVsKCRlLHNyKXwwLEY9RitNYXRoLmltdWwoJGUsWG4pfDA7dmFyIGVuPShWKyhUPVQrTWF0aC5pbXVsKENlLHhyKXwwKXwwKSsoKDgxOTEm''@;'; put 'put ''KFM9KFM9UytNYXRoLmltdWwoQ2UscXQpfDApK01hdGguaW11bChEZSx4cil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxxdCl8MCkrKFM+Pj4xMyl8MCkrKGVuPj4+MjYpfDAsZW4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKEF0LE5uKSxTPShTPU1hdGguaW11bChBdCxibikpK01h''@;'; put 'put ''dGguaW11bChodCxObil8MCxGPU1hdGguaW11bChodCxibiksVD1UK01hdGguaW11bCh3dCxzcil8MCxTPShTPVMrTWF0aC5pbXVsKHd0LFhuKXwwKStNYXRoLmltdWwobXQsc3IpfDAsRj1GK01hdGguaW11bChtdCxYbil8MCxUPVQrTWF0aC5pbXVsKFFlLHhyKXwwLFM9KFM9UytNYXRoLmlt''@;'; put 'put ''dWwoUWUscXQpfDApK01hdGguaW11bCgkZSx4cil8MCxGPUYrTWF0aC5pbXVsKCRlLHF0KXwwO3ZhciBJbj0oVisoVD1UK01hdGguaW11bChDZSxucil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLEFuKXwwKStNYXRoLmltdWwoRGUsbnIpfDApKTw8MTMpfDA7Vj0oKEY9RitN''@;'; put 'put ''YXRoLmltdWwoRGUsQW4pfDApKyhTPj4+MTMpfDApKyhJbj4+PjI2KXwwLEluJj02NzEwODg2MyxUPU1hdGguaW11bChvbixObiksUz0oUz1NYXRoLmltdWwob24sYm4pKStNYXRoLmltdWwoX3QsTm4pfDAsRj1NYXRoLmltdWwoX3QsYm4pLFQ9VCtNYXRoLmltdWwoQXQsc3IpfDAsUz0oUz1T''@;'; put 'put ''K01hdGguaW11bChBdCxYbil8MCkrTWF0aC5pbXVsKGh0LHNyKXwwLEY9RitNYXRoLmltdWwoaHQsWG4pfDAsVD1UK01hdGguaW11bCh3dCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKHd0LHF0KXwwKStNYXRoLmltdWwobXQseHIpfDAsRj1GK01hdGguaW11bChtdCxxdCl8MCxUPVQrTWF0aC5p''@;'; put 'put ''bXVsKFFlLG5yKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsQW4pfDApK01hdGguaW11bCgkZSxucil8MCxGPUYrTWF0aC5pbXVsKCRlLEFuKXwwO3ZhciBKbj0oVisoVD1UK01hdGguaW11bChDZSxXdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLHBuKXwwKStNYXRoLmltdWwo''@;'; put 'put ''RGUsV3QpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUscG4pfDApKyhTPj4+MTMpfDApKyhKbj4+PjI2KXwwLEpuJj02NzEwODg2MyxUPU1hdGguaW11bChldCxObiksUz0oUz1NYXRoLmltdWwoZXQsYm4pKStNYXRoLmltdWwobHQsTm4pfDAsRj1NYXRoLmltdWwobHQsYm4pLFQ9''@;'; put 'put ''VCtNYXRoLmltdWwob24sc3IpfDAsUz0oUz1TK01hdGguaW11bChvbixYbil8MCkrTWF0aC5pbXVsKF90LHNyKXwwLEY9RitNYXRoLmltdWwoX3QsWG4pfDAsVD1UK01hdGguaW11bChBdCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKEF0LHF0KXwwKStNYXRoLmltdWwoaHQseHIpfDAsRj1GK01h''@;'; put 'put ''dGguaW11bChodCxxdCl8MCxUPVQrTWF0aC5pbXVsKHd0LG5yKXwwLFM9KFM9UytNYXRoLmltdWwod3QsQW4pfDApK01hdGguaW11bChtdCxucil8MCxGPUYrTWF0aC5pbXVsKG10LEFuKXwwLFQ9VCtNYXRoLmltdWwoUWUsV3QpfDAsUz0oUz1TK01hdGguaW11bChRZSxwbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKCRlLFd0KXwwLEY9RitNYXRoLmltdWwoJGUscG4pfDA7dmFyIG9yPShWKyhUPVQrTWF0aC5pbXVsKENlLE50KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2Usc24pfDApK01hdGguaW11bChEZSxOdCl8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxzbil8MCkr''@;'; put 'put ''KFM+Pj4xMyl8MCkrKG9yPj4+MjYpfDAsb3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKEN0LE5uKSxTPShTPU1hdGguaW11bChDdCxibikpK01hdGguaW11bChmdCxObil8MCxGPU1hdGguaW11bChmdCxibiksVD1UK01hdGguaW11bChldCxzcil8MCxTPShTPVMrTWF0aC5pbXVsKGV0LFhuKXww''@;'; put 'put ''KStNYXRoLmltdWwobHQsc3IpfDAsRj1GK01hdGguaW11bChsdCxYbil8MCxUPVQrTWF0aC5pbXVsKG9uLHhyKXwwLFM9KFM9UytNYXRoLmltdWwob24scXQpfDApK01hdGguaW11bChfdCx4cil8MCxGPUYrTWF0aC5pbXVsKF90LHF0KXwwLFQ9VCtNYXRoLmltdWwoQXQsbnIpfDAsUz0oUz1T''@;'; put 'put ''K01hdGguaW11bChBdCxBbil8MCkrTWF0aC5pbXVsKGh0LG5yKXwwLEY9RitNYXRoLmltdWwoaHQsQW4pfDAsVD1UK01hdGguaW11bCh3dCxXdCl8MCxTPShTPVMrTWF0aC5pbXVsKHd0LHBuKXwwKStNYXRoLmltdWwobXQsV3QpfDAsRj1GK01hdGguaW11bChtdCxwbil8MCxUPVQrTWF0aC5p''@;'; put 'put ''bXVsKFFlLE50KXwwLFM9KFM9UytNYXRoLmltdWwoUWUsc24pfDApK01hdGguaW11bCgkZSxOdCl8MCxGPUYrTWF0aC5pbXVsKCRlLHNuKXwwO3ZhciBncj0oVisoVD1UK01hdGguaW11bChDZSx3bil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLHRuKXwwKStNYXRoLmltdWwo''@;'; put 'put ''RGUsd24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsdG4pfDApKyhTPj4+MTMpfDApKyhncj4+PjI2KXwwLGdyJj02NzEwODg2MyxUPU1hdGguaW11bChHZSxObiksUz0oUz1NYXRoLmltdWwoR2UsYm4pKStNYXRoLmltdWwoVWUsTm4pfDAsRj1NYXRoLmltdWwoVWUsYm4pLFQ9''@;'; put 'put ''VCtNYXRoLmltdWwoQ3Qsc3IpfDAsUz0oUz1TK01hdGguaW11bChDdCxYbil8MCkrTWF0aC5pbXVsKGZ0LHNyKXwwLEY9RitNYXRoLmltdWwoZnQsWG4pfDAsVD1UK01hdGguaW11bChldCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKGV0LHF0KXwwKStNYXRoLmltdWwobHQseHIpfDAsRj1GK01h''@;'; put 'put ''dGguaW11bChsdCxxdCl8MCxUPVQrTWF0aC5pbXVsKG9uLG5yKXwwLFM9KFM9UytNYXRoLmltdWwob24sQW4pfDApK01hdGguaW11bChfdCxucil8MCxGPUYrTWF0aC5pbXVsKF90LEFuKXwwLFQ9VCtNYXRoLmltdWwoQXQsV3QpfDAsUz0oUz1TK01hdGguaW11bChBdCxwbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKGh0LFd0KXwwLEY9RitNYXRoLmltdWwoaHQscG4pfDAsVD1UK01hdGguaW11bCh3dCxOdCl8MCxTPShTPVMrTWF0aC5pbXVsKHd0LHNuKXwwKStNYXRoLmltdWwobXQsTnQpfDAsRj1GK01hdGguaW11bChtdCxzbil8MCxUPVQrTWF0aC5pbXVsKFFlLHduKXwwLFM9KFM9UytNYXRoLmlt''@;'; put 'put ''dWwoUWUsdG4pfDApK01hdGguaW11bCgkZSx3bil8MCxGPUYrTWF0aC5pbXVsKCRlLHRuKXwwO3ZhciBLcj0oVisoVD1UK01hdGguaW11bChDZSxUcil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLEJuKXwwKStNYXRoLmltdWwoRGUsVHIpfDApKTw8MTMpfDA7Vj0oKEY9RitN''@;'; put 'put ''YXRoLmltdWwoRGUsQm4pfDApKyhTPj4+MTMpfDApKyhLcj4+PjI2KXwwLEtyJj02NzEwODg2MyxUPU1hdGguaW11bChqdCxObiksUz0oUz1NYXRoLmltdWwoanQsYm4pKStNYXRoLmltdWwoSnQsTm4pfDAsRj1NYXRoLmltdWwoSnQsYm4pLFQ9VCtNYXRoLmltdWwoR2Usc3IpfDAsUz0oUz1T''@;'; put 'put ''K01hdGguaW11bChHZSxYbil8MCkrTWF0aC5pbXVsKFVlLHNyKXwwLEY9RitNYXRoLmltdWwoVWUsWG4pfDAsVD1UK01hdGguaW11bChDdCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LHF0KXwwKStNYXRoLmltdWwoZnQseHIpfDAsRj1GK01hdGguaW11bChmdCxxdCl8MCxUPVQrTWF0aC5p''@;'; put 'put ''bXVsKGV0LG5yKXwwLFM9KFM9UytNYXRoLmltdWwoZXQsQW4pfDApK01hdGguaW11bChsdCxucil8MCxGPUYrTWF0aC5pbXVsKGx0LEFuKXwwLFQ9VCtNYXRoLmltdWwob24sV3QpfDAsUz0oUz1TK01hdGguaW11bChvbixwbil8MCkrTWF0aC5pbXVsKF90LFd0KXwwLEY9RitNYXRoLmltdWwo''@;'; put 'put ''X3QscG4pfDAsVD1UK01hdGguaW11bChBdCxOdCl8MCxTPShTPVMrTWF0aC5pbXVsKEF0LHNuKXwwKStNYXRoLmltdWwoaHQsTnQpfDAsRj1GK01hdGguaW11bChodCxzbil8MCxUPVQrTWF0aC5pbXVsKHd0LHduKXwwLFM9KFM9UytNYXRoLmltdWwod3QsdG4pfDApK01hdGguaW11bChtdCx3''@;'; put 'put ''bil8MCxGPUYrTWF0aC5pbXVsKG10LHRuKXwwLFQ9VCtNYXRoLmltdWwoUWUsVHIpfDAsUz0oUz1TK01hdGguaW11bChRZSxCbil8MCkrTWF0aC5pbXVsKCRlLFRyKXwwLEY9RitNYXRoLmltdWwoJGUsQm4pfDA7dmFyIFZyPShWKyhUPVQrTWF0aC5pbXVsKENlLG1uKXwwKXwwKSsoKDgxOTEm''@;'; put 'put ''KFM9KFM9UytNYXRoLmltdWwoQ2UsdW4pfDApK01hdGguaW11bChEZSxtbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSx1bil8MCkrKFM+Pj4xMyl8MCkrKFZyPj4+MjYpfDAsVnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLE5uKSxTPShTPU1hdGguaW11bChkbixibikpK01h''@;'; put 'put ''dGguaW11bCh5bixObil8MCxGPU1hdGguaW11bCh5bixibiksVD1UK01hdGguaW11bChqdCxzcil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LFhuKXwwKStNYXRoLmltdWwoSnQsc3IpfDAsRj1GK01hdGguaW11bChKdCxYbil8MCxUPVQrTWF0aC5pbXVsKEdlLHhyKXwwLFM9KFM9UytNYXRoLmlt''@;'; put 'put ''dWwoR2UscXQpfDApK01hdGguaW11bChVZSx4cil8MCxGPUYrTWF0aC5pbXVsKFVlLHF0KXwwLFQ9VCtNYXRoLmltdWwoQ3QsbnIpfDAsUz0oUz1TK01hdGguaW11bChDdCxBbil8MCkrTWF0aC5pbXVsKGZ0LG5yKXwwLEY9RitNYXRoLmltdWwoZnQsQW4pfDAsVD1UK01hdGguaW11bChldCxX''@;'; put 'put ''dCl8MCxTPShTPVMrTWF0aC5pbXVsKGV0LHBuKXwwKStNYXRoLmltdWwobHQsV3QpfDAsRj1GK01hdGguaW11bChsdCxwbil8MCxUPVQrTWF0aC5pbXVsKG9uLE50KXwwLFM9KFM9UytNYXRoLmltdWwob24sc24pfDApK01hdGguaW11bChfdCxOdCl8MCxGPUYrTWF0aC5pbXVsKF90LHNuKXww''@;'; put 'put ''LFQ9VCtNYXRoLmltdWwoQXQsd24pfDAsUz0oUz1TK01hdGguaW11bChBdCx0bil8MCkrTWF0aC5pbXVsKGh0LHduKXwwLEY9RitNYXRoLmltdWwoaHQsdG4pfDAsVD1UK01hdGguaW11bCh3dCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKHd0LEJuKXwwKStNYXRoLmltdWwobXQsVHIpfDAsRj1G''@;'; put 'put ''K01hdGguaW11bChtdCxCbil8MCxUPVQrTWF0aC5pbXVsKFFlLG1uKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsdW4pfDApK01hdGguaW11bCgkZSxtbil8MCxGPUYrTWF0aC5pbXVsKCRlLHVuKXwwO3ZhciBpaT0oVisoVD1UK01hdGguaW11bChDZSxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMr''@;'; put 'put ''TWF0aC5pbXVsKENlLEd0KXwwKStNYXRoLmltdWwoRGUsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsR3QpfDApKyhTPj4+MTMpfDApKyhpaT4+PjI2KXwwLGlpJj02NzEwODg2MyxUPU1hdGguaW11bChkbixzciksUz0oUz1NYXRoLmltdWwoZG4sWG4pKStNYXRoLmltdWwo''@;'; put 'put ''eW4sc3IpfDAsRj1NYXRoLmltdWwoeW4sWG4pLFQ9VCtNYXRoLmltdWwoanQseHIpfDAsUz0oUz1TK01hdGguaW11bChqdCxxdCl8MCkrTWF0aC5pbXVsKEp0LHhyKXwwLEY9RitNYXRoLmltdWwoSnQscXQpfDAsVD1UK01hdGguaW11bChHZSxucil8MCxTPShTPVMrTWF0aC5pbXVsKEdlLEFu''@;'; put 'put ''KXwwKStNYXRoLmltdWwoVWUsbnIpfDAsRj1GK01hdGguaW11bChVZSxBbil8MCxUPVQrTWF0aC5pbXVsKEN0LFd0KXwwLFM9KFM9UytNYXRoLmltdWwoQ3QscG4pfDApK01hdGguaW11bChmdCxXdCl8MCxGPUYrTWF0aC5pbXVsKGZ0LHBuKXwwLFQ9VCtNYXRoLmltdWwoZXQsTnQpfDAsUz0o''@;'; put 'put ''Uz1TK01hdGguaW11bChldCxzbil8MCkrTWF0aC5pbXVsKGx0LE50KXwwLEY9RitNYXRoLmltdWwobHQsc24pfDAsVD1UK01hdGguaW11bChvbix3bil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLHRuKXwwKStNYXRoLmltdWwoX3Qsd24pfDAsRj1GK01hdGguaW11bChfdCx0bil8MCxUPVQrTWF0''@;'; put 'put ''aC5pbXVsKEF0LFRyKXwwLFM9KFM9UytNYXRoLmltdWwoQXQsQm4pfDApK01hdGguaW11bChodCxUcil8MCxGPUYrTWF0aC5pbXVsKGh0LEJuKXwwLFQ9VCtNYXRoLmltdWwod3QsbW4pfDAsUz0oUz1TK01hdGguaW11bCh3dCx1bil8MCkrTWF0aC5pbXVsKG10LG1uKXwwLEY9RitNYXRoLmlt''@;'; put 'put ''dWwobXQsdW4pfDA7dmFyIFJyPShWKyhUPVQrTWF0aC5pbXVsKFFlLF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoUWUsR3QpfDApK01hdGguaW11bCgkZSxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bCgkZSxHdCl8MCkrKFM+Pj4xMyl8MCkrKFJyPj4+MjYpfDAs''@;'; put 'put ''UnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLHhyKSxTPShTPU1hdGguaW11bChkbixxdCkpK01hdGguaW11bCh5bix4cil8MCxGPU1hdGguaW11bCh5bixxdCksVD1UK01hdGguaW11bChqdCxucil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LEFuKXwwKStNYXRoLmltdWwoSnQsbnIpfDAsRj1G''@;'; put 'put ''K01hdGguaW11bChKdCxBbil8MCxUPVQrTWF0aC5pbXVsKEdlLFd0KXwwLFM9KFM9UytNYXRoLmltdWwoR2UscG4pfDApK01hdGguaW11bChVZSxXdCl8MCxGPUYrTWF0aC5pbXVsKFVlLHBuKXwwLFQ9VCtNYXRoLmltdWwoQ3QsTnQpfDAsUz0oUz1TK01hdGguaW11bChDdCxzbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKGZ0LE50KXwwLEY9RitNYXRoLmltdWwoZnQsc24pfDAsVD1UK01hdGguaW11bChldCx3bil8MCxTPShTPVMrTWF0aC5pbXVsKGV0LHRuKXwwKStNYXRoLmltdWwobHQsd24pfDAsRj1GK01hdGguaW11bChsdCx0bil8MCxUPVQrTWF0aC5pbXVsKG9uLFRyKXwwLFM9KFM9UytNYXRo''@;'; put 'put ''LmltdWwob24sQm4pfDApK01hdGguaW11bChfdCxUcil8MCxGPUYrTWF0aC5pbXVsKF90LEJuKXwwLFQ9VCtNYXRoLmltdWwoQXQsbW4pfDAsUz0oUz1TK01hdGguaW11bChBdCx1bil8MCkrTWF0aC5pbXVsKGh0LG1uKXwwLEY9RitNYXRoLmltdWwoaHQsdW4pfDA7dmFyIGxpPShWKyhUPVQr''@;'; put 'put ''TWF0aC5pbXVsKHd0LF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwod3QsR3QpfDApK01hdGguaW11bChtdCxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChtdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKGxpPj4+MjYpfDAsbGkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRu''@;'; put 'put ''LG5yKSxTPShTPU1hdGguaW11bChkbixBbikpK01hdGguaW11bCh5bixucil8MCxGPU1hdGguaW11bCh5bixBbiksVD1UK01hdGguaW11bChqdCxXdCl8MCxTPShTPVMrTWF0aC5pbXVsKGp0LHBuKXwwKStNYXRoLmltdWwoSnQsV3QpfDAsRj1GK01hdGguaW11bChKdCxwbil8MCxUPVQrTWF0''@;'; put 'put ''aC5pbXVsKEdlLE50KXwwLFM9KFM9UytNYXRoLmltdWwoR2Usc24pfDApK01hdGguaW11bChVZSxOdCl8MCxGPUYrTWF0aC5pbXVsKFVlLHNuKXwwLFQ9VCtNYXRoLmltdWwoQ3Qsd24pfDAsUz0oUz1TK01hdGguaW11bChDdCx0bil8MCkrTWF0aC5pbXVsKGZ0LHduKXwwLEY9RitNYXRoLmlt''@;'; put 'put ''dWwoZnQsdG4pfDAsVD1UK01hdGguaW11bChldCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKGV0LEJuKXwwKStNYXRoLmltdWwobHQsVHIpfDAsRj1GK01hdGguaW11bChsdCxCbil8MCxUPVQrTWF0aC5pbXVsKG9uLG1uKXwwLFM9KFM9UytNYXRoLmltdWwob24sdW4pfDApK01hdGguaW11bChf''@;'; put 'put ''dCxtbil8MCxGPUYrTWF0aC5pbXVsKF90LHVuKXwwO3ZhciBNaT0oVisoVD1UK01hdGguaW11bChBdCxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKEF0LEd0KXwwKStNYXRoLmltdWwoaHQsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoaHQsR3QpfDApKyhTPj4+''@;'; put 'put ''MTMpfDApKyhNaT4+PjI2KXwwLE1pJj02NzEwODg2MyxUPU1hdGguaW11bChkbixXdCksUz0oUz1NYXRoLmltdWwoZG4scG4pKStNYXRoLmltdWwoeW4sV3QpfDAsRj1NYXRoLmltdWwoeW4scG4pLFQ9VCtNYXRoLmltdWwoanQsTnQpfDAsUz0oUz1TK01hdGguaW11bChqdCxzbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKEp0LE50KXwwLEY9RitNYXRoLmltdWwoSnQsc24pfDAsVD1UK01hdGguaW11bChHZSx3bil8MCxTPShTPVMrTWF0aC5pbXVsKEdlLHRuKXwwKStNYXRoLmltdWwoVWUsd24pfDAsRj1GK01hdGguaW11bChVZSx0bil8MCxUPVQrTWF0aC5pbXVsKEN0LFRyKXwwLFM9KFM9UytNYXRo''@;'; put 'put ''LmltdWwoQ3QsQm4pfDApK01hdGguaW11bChmdCxUcil8MCxGPUYrTWF0aC5pbXVsKGZ0LEJuKXwwLFQ9VCtNYXRoLmltdWwoZXQsbW4pfDAsUz0oUz1TK01hdGguaW11bChldCx1bil8MCkrTWF0aC5pbXVsKGx0LG1uKXwwLEY9RitNYXRoLmltdWwobHQsdW4pfDA7dmFyIG8wPShWKyhUPVQr''@;'; put 'put ''TWF0aC5pbXVsKG9uLF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwob24sR3QpfDApK01hdGguaW11bChfdCxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChfdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKG8wPj4+MjYpfDAsbzAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRu''@;'; put 'put ''LE50KSxTPShTPU1hdGguaW11bChkbixzbikpK01hdGguaW11bCh5bixOdCl8MCxGPU1hdGguaW11bCh5bixzbiksVD1UK01hdGguaW11bChqdCx3bil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LHRuKXwwKStNYXRoLmltdWwoSnQsd24pfDAsRj1GK01hdGguaW11bChKdCx0bil8MCxUPVQrTWF0''@;'; put 'put ''aC5pbXVsKEdlLFRyKXwwLFM9KFM9UytNYXRoLmltdWwoR2UsQm4pfDApK01hdGguaW11bChVZSxUcil8MCxGPUYrTWF0aC5pbXVsKFVlLEJuKXwwLFQ9VCtNYXRoLmltdWwoQ3QsbW4pfDAsUz0oUz1TK01hdGguaW11bChDdCx1bil8MCkrTWF0aC5pbXVsKGZ0LG1uKXwwLEY9RitNYXRoLmlt''@;'; put 'put ''dWwoZnQsdW4pfDA7dmFyIG4wPShWKyhUPVQrTWF0aC5pbXVsKGV0LF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoZXQsR3QpfDApK01hdGguaW11bChsdCxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChsdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKG4wPj4+MjYpfDAs''@;'; put 'put ''bjAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLHduKSxTPShTPU1hdGguaW11bChkbix0bikpK01hdGguaW11bCh5bix3bil8MCxGPU1hdGguaW11bCh5bix0biksVD1UK01hdGguaW11bChqdCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LEJuKXwwKStNYXRoLmltdWwoSnQsVHIpfDAsRj1G''@;'; put 'put ''K01hdGguaW11bChKdCxCbil8MCxUPVQrTWF0aC5pbXVsKEdlLG1uKXwwLFM9KFM9UytNYXRoLmltdWwoR2UsdW4pfDApK01hdGguaW11bChVZSxtbil8MCxGPUYrTWF0aC5pbXVsKFVlLHVuKXwwO3ZhciBkMD0oVisoVD1UK01hdGguaW11bChDdCxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMr''@;'; put 'put ''TWF0aC5pbXVsKEN0LEd0KXwwKStNYXRoLmltdWwoZnQsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoZnQsR3QpfDApKyhTPj4+MTMpfDApKyhkMD4+PjI2KXwwLGQwJj02NzEwODg2MyxUPU1hdGguaW11bChkbixUciksUz0oUz1NYXRoLmltdWwoZG4sQm4pKStNYXRoLmltdWwo''@;'; put 'put ''eW4sVHIpfDAsRj1NYXRoLmltdWwoeW4sQm4pLFQ9VCtNYXRoLmltdWwoanQsbW4pfDAsUz0oUz1TK01hdGguaW11bChqdCx1bil8MCkrTWF0aC5pbXVsKEp0LG1uKXwwLEY9RitNYXRoLmltdWwoSnQsdW4pfDA7dmFyIG0wPShWKyhUPVQrTWF0aC5pbXVsKEdlLF9uKXwwKXwwKSsoKDgxOTEm''@;'; put 'put ''KFM9KFM9UytNYXRoLmltdWwoR2UsR3QpfDApK01hdGguaW11bChVZSxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChVZSxHdCl8MCkrKFM+Pj4xMyl8MCkrKG0wPj4+MjYpfDAsbTAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLG1uKSxTPShTPU1hdGguaW11bChkbix1bikpK01h''@;'; put 'put ''dGguaW11bCh5bixtbil8MCxGPU1hdGguaW11bCh5bix1bik7dmFyIEcwPShWKyhUPVQrTWF0aC5pbXVsKGp0LF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoanQsR3QpfDApK01hdGguaW11bChKdCxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChKdCxHdCl8MCkr''@;'; put 'put ''KFM+Pj4xMyl8MCkrKEcwPj4+MjYpfDAsRzAmPTY3MTA4ODYzO3ZhciBEaT0oVisoVD1NYXRoLmltdWwoZG4sX24pKXwwKSsoKDgxOTEmKFM9KFM9TWF0aC5pbXVsKGRuLEd0KSkrTWF0aC5pbXVsKHluLF9uKXwwKSk8PDEzKXwwO3JldHVybiBWPSgoRj1NYXRoLmltdWwoeW4sR3QpKSsoUz4+''@;'; put 'put ''PjEzKXwwKSsoRGk+Pj4yNil8MCxEaSY9NjcxMDg4NjMsUFswXT1rbixQWzFdPVZuLFBbMl09ZW4sUFszXT1JbixQWzRdPUpuLFBbNV09b3IsUFs2XT1ncixQWzddPUtyLFBbOF09VnIsUFs5XT1paSxQWzEwXT1ScixQWzExXT1saSxQWzEyXT1NaSxQWzEzXT1vMCxQWzE0XT1uMCxQWzE1XT1k''@;'; put 'put ''MCxQWzE2XT1tMCxQWzE3XT1HMCxQWzE4XT1EaSwwIT09ViYmKFBbMTldPVYsZWUubGVuZ3RoKyspLGVlfTtmdW5jdGlvbiBvZShoZSxPLHope3JldHVybihuZXcgY2UpLm11bHAoaGUsTyx6KX1mdW5jdGlvbiBjZShoZSxPKXt0aGlzLng9aGUsdGhpcy55PU99TWF0aC5pbXVsfHwoSj1LKSxV''@;'; put 'put ''LnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihPLHope3ZhciBlZSxuZT10aGlzLmxlbmd0aCtPLmxlbmd0aDtyZXR1cm4gZWU9MTA9PT10aGlzLmxlbmd0aCYmMTA9PT1PLmxlbmd0aD9KKHRoaXMsTyx6KTpuZTw2Mz9LKHRoaXMsTyx6KTpuZTwxMDI0P2Z1bmN0aW9uIHNlKGhlLE8seil7ei5u''@;'; put 'put ''ZWdhdGl2ZT1PLm5lZ2F0aXZlXmhlLm5lZ2F0aXZlLHoubGVuZ3RoPWhlLmxlbmd0aCtPLmxlbmd0aDtmb3IodmFyIGVlPTAsbmU9MCx4PTA7eDx6Lmxlbmd0aC0xO3grKyl7dmFyIFA9bmU7bmU9MDtmb3IodmFyIFY9NjcxMDg4NjMmZWUsVD1NYXRoLm1pbih4LE8ubGVuZ3RoLTEpLFM9TWF0''@;'; put 'put ''aC5tYXgoMCx4LWhlLmxlbmd0aCsxKTtTPD1UO1MrKyl7dmFyIERlPSgwfGhlLndvcmRzW3gtU10pKigwfE8ud29yZHNbU10pLFBlPTY3MTA4ODYzJkRlO1Y9NjcxMDg4NjMmKFBlPVBlK1Z8MCksbmUrPShQPShQPVArKERlLzY3MTA4ODY0fDApfDApKyhQZT4+PjI2KXwwKT4+PjI2LFAmPTY3''@;'; put 'put ''MTA4ODYzfXoud29yZHNbeF09VixlZT1QLFA9bmV9cmV0dXJuIDAhPT1lZT96LndvcmRzW3hdPWVlOnoubGVuZ3RoLS0sei5zdHJpcCgpfSh0aGlzLE8seik6b2UodGhpcyxPLHopLGVlfSxjZS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbihPKXtmb3IodmFyIHo9bmV3IEFycmF5KE8pLGVl''@;'; put 'put ''PVUucHJvdG90eXBlLl9jb3VudEJpdHMoTyktMSxuZT0wO25lPE87bmUrKyl6W25lXT10aGlzLnJldkJpbihuZSxlZSxPKTtyZXR1cm4gen0sY2UucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbihPLHosZWUpe2lmKDA9PT1PfHxPPT09ZWUtMSlyZXR1cm4gTztmb3IodmFyIG5lPTAseD0wO3g8''@;'; put 'put ''ejt4KyspbmV8PSgxJk8pPDx6LXgtMSxPPj49MTtyZXR1cm4gbmV9LGNlLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKE8seixlZSxuZSx4LFApe2Zvcih2YXIgVj0wO1Y8UDtWKyspbmVbVl09eltPW1ZdXSx4W1ZdPWVlW09bVl1dfSxjZS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9u''@;'; put 'put ''KE8seixlZSxuZSx4LFApe3RoaXMucGVybXV0ZShQLE8seixlZSxuZSx4KTtmb3IodmFyIFY9MTtWPHg7Vjw8PTEpZm9yKHZhciBUPVY8PDEsUz1NYXRoLmNvcygyKk1hdGguUEkvVCksRj1NYXRoLnNpbigyKk1hdGguUEkvVCkseWU9MDt5ZTx4O3llKz1UKWZvcih2YXIgQ2U9UyxEZT1GLFBl''@;'; put 'put ''PTA7UGU8VjtQZSsrKXt2YXIgUWU9ZWVbeWUrUGVdLCRlPW5lW3llK1BlXSxndD1lZVt5ZStQZStWXSx3dD1uZVt5ZStQZStWXSxtdD1DZSpndC1EZSp3dDt3dD1DZSp3dCtEZSpndCxlZVt5ZStQZV09UWUrKGd0PW10KSxuZVt5ZStQZV09JGUrd3QsZWVbeWUrUGUrVl09UWUtZ3QsbmVbeWUr''@;'; put 'put ''UGUrVl09JGUtd3QsUGUhPT1UJiYobXQ9UypDZS1GKkRlLERlPVMqRGUrRipDZSxDZT1tdCl9fSxjZS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oTyx6KXt2YXIgZWU9MXxNYXRoLm1heCh6LE8pLG5lPTEmZWUseD0wO2ZvcihlZT1lZS8yfDA7ZWU7ZWU+Pj49MSl4Kys7cmV0dXJu''@;'; put 'put ''IDE8PHgrMStuZX0sY2UucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbihPLHosZWUpe2lmKCEoZWU8PTEpKWZvcih2YXIgbmU9MDtuZTxlZS8yO25lKyspe3ZhciB4PU9bbmVdO09bbmVdPU9bZWUtbmUtMV0sT1tlZS1uZS0xXT14LHg9eltuZV0seltuZV09LXpbZWUtbmUtMV0seltlZS1u''@;'; put 'put ''ZS0xXT0teH19LGNlLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oTyx6KXtmb3IodmFyIGVlPTAsbmU9MDtuZTx6LzI7bmUrKyl7dmFyIHg9ODE5MipNYXRoLnJvdW5kKE9bMipuZSsxXS96KStNYXRoLnJvdW5kKE9bMipuZV0veikrZWU7T1tuZV09NjcxMDg4NjMmeCxlZT14PDY3''@;'; put 'put ''MTA4ODY0PzA6eC82NzEwODg2NHwwfXJldHVybiBPfSxjZS5wcm90b3R5cGUuY29udmVydDEzYj1mdW5jdGlvbihPLHosZWUsbmUpe2Zvcih2YXIgeD0wLFA9MDtQPHo7UCsrKWVlWzIqUF09ODE5MSYoeCs9MHxPW1BdKSxlZVsyKlArMV09ODE5MSYoeD4+Pj0xMykseD4+Pj0xMztmb3IoUD0y''@;'; put 'put ''Kno7UDxuZTsrK1ApZWVbUF09MDtFKDA9PT14KSxFKDA9PSgtODE5MiZ4KSl9LGNlLnByb3RvdHlwZS5zdHViPWZ1bmN0aW9uKE8pe2Zvcih2YXIgej1uZXcgQXJyYXkoTyksZWU9MDtlZTxPO2VlKyspeltlZV09MDtyZXR1cm4gen0sY2UucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oTyx6LGVl''@;'; put 'put ''KXt2YXIgbmU9Mip0aGlzLmd1ZXNzTGVuMTNiKE8ubGVuZ3RoLHoubGVuZ3RoKSx4PXRoaXMubWFrZVJCVChuZSksUD10aGlzLnN0dWIobmUpLFY9bmV3IEFycmF5KG5lKSxUPW5ldyBBcnJheShuZSksUz1uZXcgQXJyYXkobmUpLEY9bmV3IEFycmF5KG5lKSx5ZT1uZXcgQXJyYXkobmUpLENl''@;'; put 'put ''PW5ldyBBcnJheShuZSksRGU9ZWUud29yZHM7RGUubGVuZ3RoPW5lLHRoaXMuY29udmVydDEzYihPLndvcmRzLE8ubGVuZ3RoLFYsbmUpLHRoaXMuY29udmVydDEzYih6LndvcmRzLHoubGVuZ3RoLEYsbmUpLHRoaXMudHJhbnNmb3JtKFYsUCxULFMsbmUseCksdGhpcy50cmFuc2Zvcm0oRixQ''@;'; put 'put ''LHllLENlLG5lLHgpO2Zvcih2YXIgUGU9MDtQZTxuZTtQZSsrKXt2YXIgUWU9VFtQZV0qeWVbUGVdLVNbUGVdKkNlW1BlXTtTW1BlXT1UW1BlXSpDZVtQZV0rU1tQZV0qeWVbUGVdLFRbUGVdPVFlfXJldHVybiB0aGlzLmNvbmp1Z2F0ZShULFMsbmUpLHRoaXMudHJhbnNmb3JtKFQsUyxEZSxQ''@;'; put 'put ''LG5lLHgpLHRoaXMuY29uanVnYXRlKERlLFAsbmUpLHRoaXMubm9ybWFsaXplMTNiKERlLG5lKSxlZS5uZWdhdGl2ZT1PLm5lZ2F0aXZlXnoubmVnYXRpdmUsZWUubGVuZ3RoPU8ubGVuZ3RoK3oubGVuZ3RoLGVlLnN0cmlwKCl9LFUucHJvdG90eXBlLm11bD1mdW5jdGlvbihPKXt2YXIgej1u''@;'; put 'put ''ZXcgVShudWxsKTtyZXR1cm4gei53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrTy5sZW5ndGgpLHRoaXMubXVsVG8oTyx6KX0sVS5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihPKXt2YXIgej1uZXcgVShudWxsKTtyZXR1cm4gei53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrTy5sZW5n''@;'; put 'put ''dGgpLG9lKHRoaXMsTyx6KX0sVS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKE8sdGhpcyl9LFUucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPKSxFKE88NjcxMDg4NjQpO2Zvcih2YXIgej0wLGVlPTA7''@;'; put 'put ''ZWU8dGhpcy5sZW5ndGg7ZWUrKyl7dmFyIG5lPSgwfHRoaXMud29yZHNbZWVdKSpPLHg9KDY3MTA4ODYzJm5lKSsoNjcxMDg4NjMmeik7ej4+PTI2LHorPW5lLzY3MTA4ODY0fDAseis9eD4+PjI2LHRoaXMud29yZHNbZWVdPTY3MTA4ODYzJnh9cmV0dXJuIDAhPT16JiYodGhpcy53b3Jkc1tl''@;'; put 'put ''ZV09eix0aGlzLmxlbmd0aCsrKSx0aGlzfSxVLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oTyl9LFUucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sVS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sVS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKE8pe3ZhciB6PWZ1bmN0aW9uIHRlKGhlKXtmb3IodmFyIE89bmV3IEFycmF5KGhlLmJpdExlbmd0aCgpKSx6PTA7ejxPLmxlbmd0aDt6Kyspe3ZhciBuZT16JTI2O09bel09KGhlLndvcmRzW3ov''@;'; put 'put ''MjZ8MF0mMTw8bmUpPj4+bmV9cmV0dXJuIE99KE8pO2lmKDA9PT16Lmxlbmd0aClyZXR1cm4gbmV3IFUoMSk7Zm9yKHZhciBlZT10aGlzLG5lPTA7bmU8ei5sZW5ndGgmJjA9PT16W25lXTtuZSsrLGVlPWVlLnNxcigpKTtpZigrK25lPHoubGVuZ3RoKWZvcih2YXIgeD1lZS5zcXIoKTtuZTx6''@;'; put 'put ''Lmxlbmd0aDtuZSsrLHg9eC5zcXIoKSkwIT09eltuZV0mJihlZT1lZS5tdWwoeCkpO3JldHVybiBlZX0sVS5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgeCx6PU8lMjYsZWU9KE8teikvMjYsbmU9NjcxMDg4NjM+Pj4yNi16PDwy''@;'; put 'put ''Ni16O2lmKDAhPT16KXt2YXIgUD0wO2Zvcih4PTA7eDx0aGlzLmxlbmd0aDt4Kyspe3ZhciBWPXRoaXMud29yZHNbeF0mbmU7dGhpcy53b3Jkc1t4XT0oMHx0aGlzLndvcmRzW3hdKS1WPDx6fFAsUD1WPj4+MjYten1QJiYodGhpcy53b3Jkc1t4XT1QLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1l''@;'; put 'put ''ZSl7Zm9yKHg9dGhpcy5sZW5ndGgtMTt4Pj0wO3gtLSl0aGlzLndvcmRzW3grZWVdPXRoaXMud29yZHNbeF07Zm9yKHg9MDt4PGVlO3grKyl0aGlzLndvcmRzW3hdPTA7dGhpcy5sZW5ndGgrPWVlfXJldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKE8pe3Jl''@;'; put 'put ''dHVybiBFKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbihPKX0sVS5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKE8seixlZSl7dmFyIG5lO0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKSxuZT16Pyh6LXolMjYpLzI2OjA7dmFyIHg9TyUyNixQPU1hdGgubWluKChPLXgpLzI2LHRo''@;'; put 'put ''aXMubGVuZ3RoKSxWPTY3MTA4ODYzXjY3MTA4ODYzPj4+eDw8eCxUPWVlO2lmKG5lLT1QLG5lPU1hdGgubWF4KDAsbmUpLFQpe2Zvcih2YXIgUz0wO1M8UDtTKyspVC53b3Jkc1tTXT10aGlzLndvcmRzW1NdO1QubGVuZ3RoPVB9aWYoMCE9PVApaWYodGhpcy5sZW5ndGg+UClmb3IodGhpcy5s''@;'; put 'put ''ZW5ndGgtPVAsUz0wO1M8dGhpcy5sZW5ndGg7UysrKXRoaXMud29yZHNbU109dGhpcy53b3Jkc1tTK1BdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIEY9MDtmb3IoUz10aGlzLmxlbmd0aC0xO1M+PTAmJigwIT09Rnx8Uz49bmUpO1MtLSl7dmFyIHllPTB8dGhpcy53''@;'; put 'put ''b3Jkc1tTXTt0aGlzLndvcmRzW1NdPUY8PDI2LXh8eWU+Pj54LEY9eWUmVn1yZXR1cm4gVCYmMCE9PUYmJihULndvcmRzW1QubGVuZ3RoKytdPUYpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlzaHJu''@;'; put 'put ''PWZ1bmN0aW9uKE8seixlZSl7cmV0dXJuIEUoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKE8seixlZSl9LFUucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihPKX0sVS5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRo''@;'; put 'put ''aXMuY2xvbmUoKS5pdXNobG4oTyl9LFUucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihPKX0sVS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oTyl9LFUucHJvdG90eXBlLnRlc3RuPWZ1bmN0''@;'; put 'put ''aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgej1PJTI2LGVlPShPLXopLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PWVlfHwhKHRoaXMud29yZHNbZWVdJjE8PHopKX0sVS5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0w''@;'; put 'put ''KTt2YXIgej1PJTI2LGVlPShPLXopLzI2O3JldHVybiBFKDA9PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9ZWU/dGhpczooMCE9PXomJmVlKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oZWUsdGhpcy5sZW5ndGgp''@;'; put 'put ''LDAhPT16JiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9NjcxMDg4NjNeNjcxMDg4NjM+Pj56PDx6KSx0aGlzLnN0cmlwKCkpfSxVLnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihPKX0sVS5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24o''@;'; put 'put ''Tyl7cmV0dXJuIEUoIm51bWJlciI9PXR5cGVvZiBPKSxFKE88NjcxMDg4NjQpLE88MD90aGlzLmlzdWJuKC1PKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPE8/KHRoaXMud29yZHNbMF09Ty0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0''@;'; put 'put ''aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKE8pLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbihPKX0sVS5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKE8pe3RoaXMud29yZHNbMF0rPU87Zm9yKHZhciB6PTA7ejx0aGlzLmxlbmd0aCYmdGhpcy53b3Jk''@;'; put 'put ''c1t6XT49NjcxMDg4NjQ7eisrKXRoaXMud29yZHNbel0tPTY3MTA4ODY0LHo9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbeisxXT0xOnRoaXMud29yZHNbeisxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCx6KzEpLHRoaXN9LFUucHJvdG90eXBlLmlzdWJu''@;'; put 'put ''PWZ1bmN0aW9uKE8pe2lmKEUoIm51bWJlciI9PXR5cGVvZiBPKSxFKE88NjcxMDg4NjQpLE88MClyZXR1cm4gdGhpcy5pYWRkbigtTyk7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKE8pLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMu''@;'; put 'put ''d29yZHNbMF0tPU8sMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIHo9MDt6PHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW3pdPDA7eisrKXRoaXMud29yZHNbel0rPTY3MTA4ODY0''@;'; put 'put ''LHRoaXMud29yZHNbeisxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oTyl9LFUucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihPKX0sVS5wcm90''@;'; put 'put ''b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sVS5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LFUucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbihPLHosZWUpe3ZhciB4O3RoaXMuX2V4cGFu''@;'; put 'put ''ZChPLmxlbmd0aCtlZSk7dmFyIFAsVj0wO2Zvcih4PTA7eDxPLmxlbmd0aDt4Kyspe1A9KDB8dGhpcy53b3Jkc1t4K2VlXSkrVjt2YXIgVD0oMHxPLndvcmRzW3hdKSp6O1Y9KChQLT02NzEwODg2MyZUKT4+MjYpLShULzY3MTA4ODY0fDApLHRoaXMud29yZHNbeCtlZV09NjcxMDg4NjMmUH1m''@;'; put 'put ''b3IoO3g8dGhpcy5sZW5ndGgtZWU7eCsrKVY9KFA9KDB8dGhpcy53b3Jkc1t4K2VlXSkrVik+PjI2LHRoaXMud29yZHNbeCtlZV09NjcxMDg4NjMmUDtpZigwPT09VilyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihFKC0xPT09ViksVj0wLHg9MDt4PHRoaXMubGVuZ3RoO3grKylWPShQPS0oMHx0''@;'; put 'put ''aGlzLndvcmRzW3hdKStWKT4+MjYsdGhpcy53b3Jkc1t4XT02NzEwODg2MyZQO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbihPLHope3ZhciBlZSxuZT10aGlzLmNsb25lKCkseD1PLFA9MHx4LndvcmRzW3gubGVuZ3Ro''@;'; put 'put ''LTFdOzAhPShlZT0yNi10aGlzLl9jb3VudEJpdHMoUCkpJiYoeD14LnVzaGxuKGVlKSxuZS5pdXNobG4oZWUpLFA9MHx4LndvcmRzW3gubGVuZ3RoLTFdKTt2YXIgUyxUPW5lLmxlbmd0aC14Lmxlbmd0aDtpZigibW9kIiE9PXopeyhTPW5ldyBVKG51bGwpKS5sZW5ndGg9VCsxLFMud29yZHM9''@;'; put 'put ''bmV3IEFycmF5KFMubGVuZ3RoKTtmb3IodmFyIEY9MDtGPFMubGVuZ3RoO0YrKylTLndvcmRzW0ZdPTB9dmFyIHllPW5lLmNsb25lKCkuX2lzaGxuc3VibXVsKHgsMSxUKTswPT09eWUubmVnYXRpdmUmJihuZT15ZSxTJiYoUy53b3Jkc1tUXT0xKSk7Zm9yKHZhciBDZT1ULTE7Q2U+PTA7Q2Ut''@;'; put 'put ''LSl7dmFyIERlPTY3MTA4ODY0KigwfG5lLndvcmRzW3gubGVuZ3RoK0NlXSkrKDB8bmUud29yZHNbeC5sZW5ndGgrQ2UtMV0pO2ZvcihEZT1NYXRoLm1pbihEZS9QfDAsNjcxMDg4NjMpLG5lLl9pc2hsbnN1Ym11bCh4LERlLENlKTswIT09bmUubmVnYXRpdmU7KURlLS0sbmUubmVnYXRpdmU9''@;'; put 'put ''MCxuZS5faXNobG5zdWJtdWwoeCwxLENlKSxuZS5pc1plcm8oKXx8KG5lLm5lZ2F0aXZlXj0xKTtTJiYoUy53b3Jkc1tDZV09RGUpfXJldHVybiBTJiZTLnN0cmlwKCksbmUuc3RyaXAoKSwiZGl2IiE9PXomJjAhPT1lZSYmbmUuaXVzaHJuKGVlKSx7ZGl2OlN8fG51bGwsbW9kOm5lfX0sVS5w''@;'; put 'put ''cm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKE8seixlZSl7cmV0dXJuIEUoIU8uaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgVSgwKSxtb2Q6bmV3IFUoMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Ty5uZWdhdGl2ZT8oUD10aGlzLm5lZygpLmRpdm1vZChPLHopLCJtb2QiIT09''@;'; put 'put ''eiYmKG5lPVAuZGl2Lm5lZygpKSwiZGl2IiE9PXomJih4PVAubW9kLm5lZygpLGVlJiYwIT09eC5uZWdhdGl2ZSYmeC5pYWRkKE8pKSx7ZGl2Om5lLG1vZDp4fSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1PLm5lZ2F0aXZlPyhQPXRoaXMuZGl2bW9kKE8ubmVnKCkseiksIm1vZCIhPT16JiYo''@;'; put 'put ''bmU9UC5kaXYubmVnKCkpLHtkaXY6bmUsbW9kOlAubW9kfSk6MCE9KHRoaXMubmVnYXRpdmUmTy5uZWdhdGl2ZSk/KFA9dGhpcy5uZWcoKS5kaXZtb2QoTy5uZWcoKSx6KSwiZGl2IiE9PXomJih4PVAubW9kLm5lZygpLGVlJiYwIT09eC5uZWdhdGl2ZSYmeC5pc3ViKE8pKSx7ZGl2OlAuZGl2''@;'; put 'put ''LG1vZDp4fSk6Ty5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKE8pPDA/e2RpdjpuZXcgVSgwKSxtb2Q6dGhpc306MT09PU8ubGVuZ3RoPyJkaXYiPT09ej97ZGl2OnRoaXMuZGl2bihPLndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT16P3tkaXY6bnVsbCxtb2Q6bmV3IFUodGhpcy5t''@;'; put 'put ''b2RuKE8ud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oTy53b3Jkc1swXSksbW9kOm5ldyBVKHRoaXMubW9kbihPLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoTyx6KTt2YXIgbmUseCxQfSxVLnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZGl2bW9kKE8sImRpdiIs''@;'; put 'put ''ITEpLmRpdn0sVS5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmRpdm1vZChPLCJtb2QiLCExKS5tb2R9LFUucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZGl2bW9kKE8sIm1vZCIsITApLm1vZH0sVS5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rp''@;'; put 'put ''b24oTyl7dmFyIHo9dGhpcy5kaXZtb2QoTyk7aWYoei5tb2QuaXNaZXJvKCkpcmV0dXJuIHouZGl2O3ZhciBlZT0wIT09ei5kaXYubmVnYXRpdmU/ei5tb2QuaXN1YihPKTp6Lm1vZCxuZT1PLnVzaHJuKDEpLHg9Ty5hbmRsbigxKSxQPWVlLmNtcChuZSk7cmV0dXJuIFA8MHx8MT09PXgmJjA9''@;'; put 'put ''PT1QP3ouZGl2OjAhPT16LmRpdi5uZWdhdGl2ZT96LmRpdi5pc3VibigxKTp6LmRpdi5pYWRkbigxKX0sVS5wcm90b3R5cGUubW9kbj1mdW5jdGlvbihPKXtFKE88PTY3MTA4ODYzKTtmb3IodmFyIHo9KDE8PDI2KSVPLGVlPTAsbmU9dGhpcy5sZW5ndGgtMTtuZT49MDtuZS0tKWVlPSh6KmVl''@;'; put 'put ''KygwfHRoaXMud29yZHNbbmVdKSklTztyZXR1cm4gZWV9LFUucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKE8pe0UoTzw9NjcxMDg4NjMpO2Zvcih2YXIgej0wLGVlPXRoaXMubGVuZ3RoLTE7ZWU+PTA7ZWUtLSl7dmFyIG5lPSgwfHRoaXMud29yZHNbZWVdKSs2NzEwODg2NCp6O3RoaXMud29y''@;'; put 'put ''ZHNbZWVdPW5lL098MCx6PW5lJU99cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKE8pfSxVLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKE8pe0UoMD09PU8ubmVnYXRpdmUpLEUoIU8uaXNaZXJvKCkpO3Zh''@;'; put 'put ''ciB6PXRoaXMsZWU9Ty5jbG9uZSgpO3o9MCE9PXoubmVnYXRpdmU/ei51bW9kKE8pOnouY2xvbmUoKTtmb3IodmFyIG5lPW5ldyBVKDEpLHg9bmV3IFUoMCksUD1uZXcgVSgwKSxWPW5ldyBVKDEpLFQ9MDt6LmlzRXZlbigpJiZlZS5pc0V2ZW4oKTspei5pdXNocm4oMSksZWUuaXVzaHJuKDEp''@;'; put 'put ''LCsrVDtmb3IodmFyIFM9ZWUuY2xvbmUoKSxGPXouY2xvbmUoKTshei5pc1plcm8oKTspe2Zvcih2YXIgeWU9MCxDZT0xOzA9PSh6LndvcmRzWzBdJkNlKSYmeWU8MjY7Kyt5ZSxDZTw8PTEpO2lmKHllPjApZm9yKHouaXVzaHJuKHllKTt5ZS0tID4wOykobmUuaXNPZGQoKXx8eC5pc09kZCgp''@;'; put 'put ''KSYmKG5lLmlhZGQoUykseC5pc3ViKEYpKSxuZS5pdXNocm4oMSkseC5pdXNocm4oMSk7Zm9yKHZhciBEZT0wLFBlPTE7MD09KGVlLndvcmRzWzBdJlBlKSYmRGU8MjY7KytEZSxQZTw8PTEpO2lmKERlPjApZm9yKGVlLml1c2hybihEZSk7RGUtLSA+MDspKFAuaXNPZGQoKXx8Vi5pc09kZCgp''@;'; put 'put ''KSYmKFAuaWFkZChTKSxWLmlzdWIoRikpLFAuaXVzaHJuKDEpLFYuaXVzaHJuKDEpO3ouY21wKGVlKT49MD8oei5pc3ViKGVlKSxuZS5pc3ViKFApLHguaXN1YihWKSk6KGVlLmlzdWIoeiksUC5pc3ViKG5lKSxWLmlzdWIoeCkpfXJldHVybnthOlAsYjpWLGdjZDplZS5pdXNobG4oVCl9fSxV''@;'; put 'put ''LnByb3RvdHlwZS5faW52bXA9ZnVuY3Rpb24oTyl7RSgwPT09Ty5uZWdhdGl2ZSksRSghTy5pc1plcm8oKSk7dmFyIHllLHo9dGhpcyxlZT1PLmNsb25lKCk7ej0wIT09ei5uZWdhdGl2ZT96LnVtb2QoTyk6ei5jbG9uZSgpO2Zvcih2YXIgbmU9bmV3IFUoMSkseD1uZXcgVSgwKSxQPWVlLmNs''@;'; put 'put ''b25lKCk7ei5jbXBuKDEpPjAmJmVlLmNtcG4oMSk+MDspe2Zvcih2YXIgVj0wLFQ9MTswPT0oei53b3Jkc1swXSZUKSYmVjwyNjsrK1YsVDw8PTEpO2lmKFY+MClmb3Ioei5pdXNocm4oVik7Vi0tID4wOyluZS5pc09kZCgpJiZuZS5pYWRkKFApLG5lLml1c2hybigxKTtmb3IodmFyIFM9MCxG''@;'; put 'put ''PTE7MD09KGVlLndvcmRzWzBdJkYpJiZTPDI2OysrUyxGPDw9MSk7aWYoUz4wKWZvcihlZS5pdXNocm4oUyk7Uy0tID4wOyl4LmlzT2RkKCkmJnguaWFkZChQKSx4Lml1c2hybigxKTt6LmNtcChlZSk+PTA/KHouaXN1YihlZSksbmUuaXN1Yih4KSk6KGVlLmlzdWIoeikseC5pc3ViKG5lKSl9''@;'; put 'put ''cmV0dXJuKHllPTA9PT16LmNtcG4oMSk/bmU6eCkuY21wbigwKTwwJiZ5ZS5pYWRkKE8pLHllfSxVLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oTyl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gTy5hYnMoKTtpZihPLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciB6PXRoaXMuY2xvbmUo''@;'; put 'put ''KSxlZT1PLmNsb25lKCk7ei5uZWdhdGl2ZT0wLGVlLm5lZ2F0aXZlPTA7Zm9yKHZhciBuZT0wO3ouaXNFdmVuKCkmJmVlLmlzRXZlbigpO25lKyspei5pdXNocm4oMSksZWUuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDt6LmlzRXZlbigpOyl6Lml1c2hybigxKTtmb3IoO2VlLmlzRXZlbigpOyll''@;'; put 'put ''ZS5pdXNocm4oMSk7dmFyIHg9ei5jbXAoZWUpO2lmKHg8MCl7dmFyIFA9ejt6PWVlLGVlPVB9ZWxzZSBpZigwPT09eHx8MD09PWVlLmNtcG4oMSkpYnJlYWs7ei5pc3ViKGVlKX1yZXR1cm4gZWUuaXVzaGxuKG5lKX0sVS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5l''@;'; put 'put ''Z2NkKE8pLmEudW1vZChPKX0sVS5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMud29yZHNbMF0pfSxVLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLndvcmRzWzBdKX0sVS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oTyl7''@;'; put 'put ''cmV0dXJuIHRoaXMud29yZHNbMF0mT30sVS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8pO3ZhciB6PU8lMjYsZWU9KE8teikvMjYsbmU9MTw8ejtpZih0aGlzLmxlbmd0aDw9ZWUpcmV0dXJuIHRoaXMuX2V4cGFuZChlZSsxKSx0aGlzLndvcmRzW2Vl''@;'; put 'put ''XXw9bmUsdGhpcztmb3IodmFyIHg9bmUsUD1lZTswIT09eCYmUDx0aGlzLmxlbmd0aDtQKyspe3ZhciBWPTB8dGhpcy53b3Jkc1tQXTt4PShWKz14KT4+PjI2LHRoaXMud29yZHNbUF09ViY9NjcxMDg4NjN9cmV0dXJuIDAhPT14JiYodGhpcy53b3Jkc1tQXT14LHRoaXMubGVuZ3RoKyspLHRo''@;'; put 'put ''aXN9LFUucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdfSxVLnByb3RvdHlwZS5jbXBuPWZ1bmN0aW9uKE8pe3ZhciBlZSx6PU88MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIXopcmV0dXJuLTE7aWYoMD09PXRoaXMu''@;'; put 'put ''bmVnYXRpdmUmJnopcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpZWU9MTtlbHNle3omJihPPS1PKSxFKE88PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBuZT0wfHRoaXMud29yZHNbMF07ZWU9bmU9PT1PPzA6bmU8Tz8tMToxfXJldHVybiAwIT09dGhp''@;'; put 'put ''cy5uZWdhdGl2ZT8wfC1lZTplZX0sVS5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKE8pe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Ty5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PU8ubmVnYXRpdmUpcmV0dXJuIDE7dmFyIHo9dGhpcy51Y21wKE8pO3JldHVy''@;'; put 'put ''biAwIT09dGhpcy5uZWdhdGl2ZT8wfC16Onp9LFUucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oTyl7aWYodGhpcy5sZW5ndGg+Ty5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8Ty5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciB6PTAsZWU9dGhpcy5sZW5ndGgtMTtlZT49MDtlZS0tKXt2''@;'; put 'put ''YXIgbmU9MHx0aGlzLndvcmRzW2VlXSx4PTB8Ty53b3Jkc1tlZV07aWYobmUhPT14KXtuZTx4P3o9LTE6bmU+eCYmKHo9MSk7YnJlYWt9fXJldHVybiB6fSxVLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oTyl7cmV0dXJuIDE9PT10aGlzLmNtcG4oTyl9LFUucHJvdG90eXBlLmd0PWZ1bmN0aW9u''@;'; put 'put ''KE8pe3JldHVybiAxPT09dGhpcy5jbXAoTyl9LFUucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY21wbihPKT49MH0sVS5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNtcChPKT49MH0sVS5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKE8pe3JldHVy''@;'; put 'put ''bi0xPT09dGhpcy5jbXBuKE8pfSxVLnByb3RvdHlwZS5sdD1mdW5jdGlvbihPKXtyZXR1cm4tMT09PXRoaXMuY21wKE8pfSxVLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNtcG4oTyk8PTB9LFUucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5j''@;'; put 'put ''bXAoTyk8PTB9LFUucHJvdG90eXBlLmVxbj1mdW5jdGlvbihPKXtyZXR1cm4gMD09PXRoaXMuY21wbihPKX0sVS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oTyl7cmV0dXJuIDA9PT10aGlzLmNtcChPKX0sVS5yZWQ9ZnVuY3Rpb24oTyl7cmV0dXJuIG5ldyBUZShPKX0sVS5wcm90b3R5cGUudG9S''@;'; put 'put ''ZWQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksRSgwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxPLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoTyl9LFUucHJv''@;'; put 'put ''dG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSxVLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oTyl7cmV0''@;'; put 'put ''dXJuIHRoaXMucmVkPU8sdGhpc30sVS5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoTyl9LFUucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbihPKXty''@;'; put 'put ''ZXR1cm4gRSh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIp''@;'; put 'put ''LHRoaXMucmVkLmlhZGQodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oTyl7''@;'; put 'put ''cmV0dXJuIEUodGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMi''@;'; put 'put ''KSx0aGlzLnJlZC5zaGwodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxPKSx0aGlzLnJlZC5tdWwodGhpcyxPKX0sVS5wcm90''@;'; put 'put ''b3R5cGUucmVkSU11bD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsTyksdGhpcy5yZWQuaW11bCh0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gRSh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sVS5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkg''@;'; put 'put ''d2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LFUucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVy''@;'; put 'put ''aWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxVLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0s''@;'; put 'put ''VS5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LFUucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbihPKXtyZXR1''@;'; put 'put ''cm4gRSh0aGlzLnJlZCYmIU8ucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLE8pfTt2YXIgZGU9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiB2ZShoZSxPKXt0aGlzLm5h''@;'; put 'put ''bWU9aGUsdGhpcy5wPW5ldyBVKE8sMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBVKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBBZSgpe3ZlLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZm''@;'; put 'put ''ZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24ga2UoKXt2ZS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0''@;'; put 'put ''aW9uIFNlKCl7dmUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiBJZSgpe3ZlLmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZm''@;'; put 'put ''ZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gVGUoaGUpe2lmKCJzdHJpbmciPT10eXBlb2YgaGUpe3ZhciBPPVUuX3ByaW1lKGhlKTt0aGlzLm09Ty5wLHRoaXMucHJpbWU9T31lbHNlIEUoaGUuZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlz''@;'; put 'put ''Lm09aGUsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIE1lKGhlKXtUZS5jYWxsKHRoaXMsaGUpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IFUoMSkuaXVzaGxuKHRoaXMuc2hp''@;'; put 'put ''ZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10''@;'; put 'put ''aGlzLnIuc3ViKHRoaXMubWludil9dmUucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgTz1uZXcgVShudWxsKTtyZXR1cm4gTy53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLE99LHZlLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKE8pe3ZhciBlZSx6PU87ZG97''@;'; put 'put ''dGhpcy5zcGxpdCh6LHRoaXMudG1wKSxlZT0oej0oej10aGlzLmltdWxLKHopKS5pYWRkKHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUoZWU+dGhpcy5uKTt2YXIgbmU9ZWU8dGhpcy5uPy0xOnoudWNtcCh0aGlzLnApO3JldHVybiAwPT09bmU/KHoud29yZHNbMF09MCx6Lmxlbmd0aD0x''@;'; put 'put ''KTpuZT4wP3ouaXN1Yih0aGlzLnApOnZvaWQgMCE9PXouc3RyaXA/ei5zdHJpcCgpOnouX3N0cmlwKCksen0sdmUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKE8seil7Ty5pdXNocm4odGhpcy5uLDAseil9LHZlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihPKXtyZXR1cm4gTy5pbXVsKHRo''@;'; put 'put ''aXMuayl9LEVlKEFlLHZlKSxBZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oTyx6KXtmb3IodmFyIG5lPU1hdGgubWluKE8ubGVuZ3RoLDkpLHg9MDt4PG5lO3grKyl6LndvcmRzW3hdPU8ud29yZHNbeF07aWYoei5sZW5ndGg9bmUsTy5sZW5ndGg8PTkpcmV0dXJuIE8ud29yZHNbMF09MCx2''@;'; put 'put ''b2lkKE8ubGVuZ3RoPTEpO3ZhciBQPU8ud29yZHNbOV07Zm9yKHoud29yZHNbei5sZW5ndGgrK109NDE5NDMwMyZQLHg9MTA7eDxPLmxlbmd0aDt4Kyspe3ZhciBWPTB8Ty53b3Jkc1t4XTtPLndvcmRzW3gtMTBdPSg0MTk0MzAzJlYpPDw0fFA+Pj4yMixQPVZ9Ty53b3Jkc1t4LTEwXT1QPj4+''@;'; put 'put ''PTIyLE8ubGVuZ3RoLT0wPT09UCYmTy5sZW5ndGg+MTA/MTA6OX0sQWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKE8pe08ud29yZHNbTy5sZW5ndGhdPTAsTy53b3Jkc1tPLmxlbmd0aCsxXT0wLE8ubGVuZ3RoKz0yO2Zvcih2YXIgej0wLGVlPTA7ZWU8Ty5sZW5ndGg7ZWUrKyl7dmFyIG5l''@;'; put 'put ''PTB8Ty53b3Jkc1tlZV07Ty53b3Jkc1tlZV09NjcxMDg4NjMmKHorPTk3NypuZSksej02NCpuZSsoei82NzEwODg2NHwwKX1yZXR1cm4gMD09PU8ud29yZHNbTy5sZW5ndGgtMV0mJihPLmxlbmd0aC0tLDA9PT1PLndvcmRzW08ubGVuZ3RoLTFdJiZPLmxlbmd0aC0tKSxPfSxFZShrZSx2ZSks''@;'; put 'put ''RWUoU2UsdmUpLEVlKEllLHZlKSxJZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oTyl7Zm9yKHZhciB6PTAsZWU9MDtlZTxPLmxlbmd0aDtlZSsrKXt2YXIgbmU9MTkqKDB8Ty53b3Jkc1tlZV0pK3oseD02NzEwODg2MyZuZTtuZT4+Pj0yNixPLndvcmRzW2VlXT14LHo9bmV9cmV0dXJuIDAh''@;'; put 'put ''PT16JiYoTy53b3Jkc1tPLmxlbmd0aCsrXT16KSxPfSxVLl9wcmltZT1mdW5jdGlvbihPKXtpZihkZVtPXSlyZXR1cm4gZGVbT107dmFyIHo7aWYoImsyNTYiPT09Tyl6PW5ldyBBZTtlbHNlIGlmKCJwMjI0Ij09PU8pej1uZXcga2U7ZWxzZSBpZigicDE5MiI9PT1PKXo9bmV3IFNlO2Vsc2V7''@;'; put 'put ''aWYoInAyNTUxOSIhPT1PKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK08pO3o9bmV3IEllfXJldHVybiBkZVtPXT16LHp9LFRlLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbihPKXtFKDA9PT1PLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEUo''@;'; put 'put ''Ty5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sVGUucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKE8seil7RSgwPT0oTy5uZWdhdGl2ZXx6Lm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxFKE8ucmVkJiZPLnJlZD09PXoucmVkLCJy''@;'; put 'put ''ZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LFRlLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZShPKS5fZm9yY2VSZWQodGhpcyk6Ty51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5cGUu''@;'; put 'put ''bmVnPWZ1bmN0aW9uKE8pe3JldHVybiBPLmlzWmVybygpP08uY2xvbmUoKTp0aGlzLm0uc3ViKE8pLl9mb3JjZVJlZCh0aGlzKX0sVGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihPLHope3RoaXMuX3ZlcmlmeTIoTyx6KTt2YXIgZWU9Ty5hZGQoeik7cmV0dXJuIGVlLmNtcCh0aGlzLm0pPj0w''@;'; put 'put ''JiZlZS5pc3ViKHRoaXMubSksZWUuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihPLHope3RoaXMuX3ZlcmlmeTIoTyx6KTt2YXIgZWU9Ty5pYWRkKHopO3JldHVybiBlZS5jbXAodGhpcy5tKT49MCYmZWUuaXN1Yih0aGlzLm0pLGVlfSxUZS5wcm90b3R5cGUu''@;'; put 'put ''c3ViPWZ1bmN0aW9uKE8seil7dGhpcy5fdmVyaWZ5MihPLHopO3ZhciBlZT1PLnN1Yih6KTtyZXR1cm4gZWUuY21wbigwKTwwJiZlZS5pYWRkKHRoaXMubSksZWUuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihPLHope3RoaXMuX3ZlcmlmeTIoTyx6KTt2YXIg''@;'; put 'put ''ZWU9Ty5pc3ViKHopO3JldHVybiBlZS5jbXBuKDApPDAmJmVlLmlhZGQodGhpcy5tKSxlZX0sVGUucHJvdG90eXBlLnNobD1mdW5jdGlvbihPLHope3JldHVybiB0aGlzLl92ZXJpZnkxKE8pLHRoaXMuaW1vZChPLnVzaGxuKHopKX0sVGUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oTyx6KXty''@;'; put 'put ''ZXR1cm4gdGhpcy5fdmVyaWZ5MihPLHopLHRoaXMuaW1vZChPLmltdWwoeikpfSxUZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKE8seil7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoTyx6KSx0aGlzLmltb2QoTy5tdWwoeikpfSxUZS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5pbXVsKE8sTy5jbG9uZSgpKX0sVGUucHJvdG90eXBlLnNxcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5tdWwoTyxPKX0sVGUucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oTyl7aWYoTy5pc1plcm8oKSlyZXR1cm4gTy5jbG9uZSgpO3ZhciB6PXRoaXMubS5hbmRsbigzKTtpZihFKHolMj09''@;'; put 'put ''MSksMz09PXope3ZhciBlZT10aGlzLm0uYWRkKG5ldyBVKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KE8sZWUpfWZvcih2YXIgbmU9dGhpcy5tLnN1Ym4oMSkseD0wOyFuZS5pc1plcm8oKSYmMD09PW5lLmFuZGxuKDEpOyl4KyssbmUuaXVzaHJuKDEpO0UoIW5lLmlzWmVybygpKTt2''@;'; put 'put ''YXIgUD1uZXcgVSgxKS50b1JlZCh0aGlzKSxWPVAucmVkTmVnKCksVD10aGlzLm0uc3VibigxKS5pdXNocm4oMSksUz10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKFM9bmV3IFUoMipTKlMpLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhTLFQpLmNtcChWKTspUy5yZWRJQWRkKFYpO2Zvcih2YXIg''@;'; put 'put ''Rj10aGlzLnBvdyhTLG5lKSx5ZT10aGlzLnBvdyhPLG5lLmFkZG4oMSkuaXVzaHJuKDEpKSxDZT10aGlzLnBvdyhPLG5lKSxEZT14OzAhPT1DZS5jbXAoUCk7KXtmb3IodmFyIFBlPUNlLFFlPTA7MCE9PVBlLmNtcChQKTtRZSsrKVBlPVBlLnJlZFNxcigpO0UoUWU8RGUpO3ZhciAkZT10aGlz''@;'; put 'put ''LnBvdyhGLG5ldyBVKDEpLml1c2hsbihEZS1RZS0xKSk7eWU9eWUucmVkTXVsKCRlKSxGPSRlLnJlZFNxcigpLENlPUNlLnJlZE11bChGKSxEZT1RZX1yZXR1cm4geWV9LFRlLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKE8pe3ZhciB6PU8uX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT16Lm5l''@;'; put 'put ''Z2F0aXZlPyh6Lm5lZ2F0aXZlPTAsdGhpcy5pbW9kKHopLnJlZE5lZygpKTp0aGlzLmltb2Qoeil9LFRlLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oTyx6KXtpZih6LmlzWmVybygpKXJldHVybiBuZXcgVSgxKS50b1JlZCh0aGlzKTtpZigwPT09ei5jbXBuKDEpKXJldHVybiBPLmNsb25lKCk7''@;'; put 'put ''dmFyIG5lPW5ldyBBcnJheSgxNik7bmVbMF09bmV3IFUoMSkudG9SZWQodGhpcyksbmVbMV09Tztmb3IodmFyIHg9Mjt4PG5lLmxlbmd0aDt4KyspbmVbeF09dGhpcy5tdWwobmVbeC0xXSxPKTt2YXIgUD1uZVswXSxWPTAsVD0wLFM9ei5iaXRMZW5ndGgoKSUyNjtmb3IoMD09PVMmJihTPTI2''@;'; put 'put ''KSx4PXoubGVuZ3RoLTE7eD49MDt4LS0pe2Zvcih2YXIgRj16LndvcmRzW3hdLHllPVMtMTt5ZT49MDt5ZS0tKXt2YXIgQ2U9Rj4+eWUmMTtQIT09bmVbMF0mJihQPXRoaXMuc3FyKFApKSwwIT09Q2V8fDAhPT1WPyhWPDw9MSxWfD1DZSwoND09KytUfHwwPT09eCYmMD09PXllKSYmKFA9dGhp''@;'; put 'put ''cy5tdWwoUCxuZVtWXSksVD0wLFY9MCkpOlQ9MH1TPTI2fXJldHVybiBQfSxUZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKE8pe3ZhciB6PU8udW1vZCh0aGlzLm0pO3JldHVybiB6PT09Tz96LmNsb25lKCk6en0sVGUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKE8pe3Zh''@;'; put 'put ''ciB6PU8uY2xvbmUoKTtyZXR1cm4gei5yZWQ9bnVsbCx6fSxVLm1vbnQ9ZnVuY3Rpb24oTyl7cmV0dXJuIG5ldyBNZShPKX0sRWUoTWUsVGUpLE1lLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuaW1vZChPLnVzaGxuKHRoaXMuc2hpZnQpKX0sTWUucHJvdG90''@;'; put 'put ''eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKE8pe3ZhciB6PXRoaXMuaW1vZChPLm11bCh0aGlzLnJpbnYpKTtyZXR1cm4gei5yZWQ9bnVsbCx6fSxNZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihPLHope2lmKE8uaXNaZXJvKCl8fHouaXNaZXJvKCkpcmV0dXJuIE8ud29yZHNbMF09MCxPLmxl''@;'; put 'put ''bmd0aD0xLE87dmFyIGVlPU8uaW11bCh6KSxuZT1lZS5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSkseD1lZS5pc3ViKG5lKS5pdXNocm4odGhpcy5zaGlmdCksUD14O3JldHVybiB4LmNtcCh0aGlzLm0pPj0wP1A9eC5pc3Vi''@;'; put 'put ''KHRoaXMubSk6eC5jbXBuKDApPDAmJihQPXguaWFkZCh0aGlzLm0pKSxQLl9mb3JjZVJlZCh0aGlzKX0sTWUucHJvdG90eXBlLm11bD1mdW5jdGlvbihPLHope2lmKE8uaXNaZXJvKCl8fHouaXNaZXJvKCkpcmV0dXJuIG5ldyBVKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgZWU9Ty5tdWwoeiks''@;'; put 'put ''bmU9ZWUubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLHg9ZWUuaXN1YihuZSkuaXVzaHJuKHRoaXMuc2hpZnQpLFA9eDtyZXR1cm4geC5jbXAodGhpcy5tKT49MD9QPXguaXN1Yih0aGlzLm0pOnguY21wbigwKTwwJiYoUD14''@;'; put 'put ''LmlhZGQodGhpcy5tKSksUC5fZm9yY2VSZWQodGhpcyl9LE1lLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmltb2QoTy5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KFhlPUwubm1kKFhlKSx0aGlzKX0sMzIzOTE6WGU9PntmdW5j''@;'; put 'put ''dGlvbiBKZShMLG1lKXtpZighTCl0aHJvdyBuZXcgRXJyb3IobWV8fCJBc3NlcnRpb24gZmFpbGVkIil9WGUuZXhwb3J0cz1KZSxKZS5lcXVhbD1mdW5jdGlvbihtZSxCLEUpe2lmKG1lIT1CKXRocm93IG5ldyBFcnJvcihFfHwiQXNzZXJ0aW9uIGZhaWxlZDogIittZSsiICE9ICIrQil9fSw1''@;'; put 'put ''ODE5NTooWGUsSmUpPT57InVzZSBzdHJpY3QiO3ZhciBMPUplO2Z1bmN0aW9uIEIoRWUpe3JldHVybiAxPT09RWUubGVuZ3RoPyIwIitFZTpFZX1mdW5jdGlvbiBFKEVlKXtmb3IodmFyIFU9IiIsUT0wO1E8RWUubGVuZ3RoO1ErKylVKz1CKEVlW1FdLnRvU3RyaW5nKDE2KSk7cmV0dXJuIFV9''@;'; put 'put ''TC50b0FycmF5PWZ1bmN0aW9uIG1lKEVlLFUpe2lmKEFycmF5LmlzQXJyYXkoRWUpKXJldHVybiBFZS5zbGljZSgpO2lmKCFFZSlyZXR1cm5bXTt2YXIgUT1bXTtpZigic3RyaW5nIiE9dHlwZW9mIEVlKXtmb3IodmFyIGo9MDtqPEVlLmxlbmd0aDtqKyspUVtqXT0wfEVlW2pdO3JldHVybiBR''@;'; put 'put ''fWlmKCJoZXgiPT09VSlmb3IoKEVlPUVlLnJlcGxhY2UoL1teYS16MC05XSsvZ2ksIiIpKS5sZW5ndGglMiE9MCYmKEVlPSIwIitFZSksaj0wO2o8RWUubGVuZ3RoO2orPTIpUS5wdXNoKHBhcnNlSW50KEVlW2pdK0VlW2orMV0sMTYpKTtlbHNlIGZvcihqPTA7ajxFZS5sZW5ndGg7aisrKXt2''@;'; put 'put ''YXIgcmU9RWUuY2hhckNvZGVBdChqKSxhZT1yZT4+OCxZPTI1NSZyZTthZT9RLnB1c2goYWUsWSk6US5wdXNoKFkpfXJldHVybiBRfSxMLnplcm8yPUIsTC50b0hleD1FLEwuZW5jb2RlPWZ1bmN0aW9uKFUsUSl7cmV0dXJuImhleCI9PT1RP0UoVSk6VX19LDI3MDg4OmZ1bmN0aW9uKFhlLEpl''@;'; put 'put ''LEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgiYWYiLHttb250aHM6IkphbnVhcmllX0ZlYnJ1YXJpZV9NYWFydF9BcHJpbF9NZWlfSnVuaWVfSnVsaWVfQXVndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGVzZW1iZXIiLnNwbGl0KCJfIiks''@;'; put 'put ''bW9udGhzU2hvcnQ6Ikphbl9GZWJfTXJ0X0Fwcl9NZWlfSnVuX0p1bF9BdWdfU2VwX09rdF9Ob3ZfRGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTb25kYWdfTWFhbmRhZ19EaW5zZGFnX1dvZW5zZGFnX0RvbmRlcmRhZ19WcnlkYWdfU2F0ZXJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9y''@;'; put 'put ''dDoiU29uX01hYV9EaW5fV29lX0Rvbl9WcnlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTb19NYV9EaV9Xb19Eb19Wcl9TYSIuc3BsaXQoIl8iKSxtZXJpZGllbVBhcnNlOi92bXxubS9pLGlzUE06ZnVuY3Rpb24oRSl7cmV0dXJuL15ubSQvaS50ZXN0KEUpfSxtZXJpZGllbTpmdW5j''@;'; put 'put ''dGlvbihFLEVlLFUpe3JldHVybiBFPDEyP1U/InZtIjoiVk0iOlU/Im5tIjoiTk0ifSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1N''@;'; put 'put ''TSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltWYW5kYWcgb21dIExUIixuZXh0RGF5OiJbTVx4ZjRyZSBvbV0gTFQiLG5leHRXZWVrOiJkZGRkIFtvbV0gTFQiLGxhc3REYXk6IltHaXN0ZXIgb21dIExUIixsYXN0V2VlazoiW0xhYXNdIGRkZGQgW29tXSBMVCIsc2FtZUVsc2U6''@;'; put 'put ''IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib29yICVzIixwYXN0OiIlcyBnZWxlZGUiLHM6IiduIHBhYXIgc2Vrb25kZXMiLHNzOiIlZCBzZWtvbmRlcyIsbToiJ24gbWludXV0IixtbToiJWQgbWludXRlIixoOiInbiB1dXIiLGhoOiIlZCB1cmUiLGQ6IiduIGRhZyIsZGQ6IiVkIGRhZSIs''@;'; put 'put ''TToiJ24gbWFhbmQiLE1NOiIlZCBtYWFuZGUiLHk6IiduIGphYXIiLHl5OiIlZCBqYWFyIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdGV8ZGUpLyxvcmRpbmFsOmZ1bmN0aW9uKEUpe3JldHVybiBFKygxPT09RXx8OD09PUV8fEU+PTIwPyJzdGUiOiJkZSIpfSx3ZWVrOntk''@;'; put 'put ''b3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw1MjUwMjpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj1mdW5jdGlvbihqKXtyZXR1cm4gMD09PWo/MDoxPT09aj8xOjI9PT1qPzI6aiUxMDA+PTMmJmolMTAwPD0xMD8zOmolMTAwPj0xMT80OjV9LEU9''@;'; put 'put ''e3M6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSIsIlx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmZcdTA2MjkiLFsiXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjJh''@;'; put 'put ''XHUwNjI3XHUwNjQ2IiwiXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjJhXHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyYlx1MDY0OFx1MDYyN1x1MDY0NiIsIiVkIFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSIsIiVkIFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSJdLG06''@;'; put 'put ''WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSIsIlx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmZcdTA2MjkiLFsiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjJhXHUw''@;'; put 'put ''NjI3XHUwNjQ2IiwiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjJhXHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyZlx1MDY0Mlx1MDYyN1x1MDYyNlx1MDY0MiIsIiVkIFx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSIsIiVkIFx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSJd''@;'; put 'put ''LGg6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSIsIlx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmZcdTA2MjkiLFsiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhXHUwNjI3XHUwNjQ2IiwiXHUw''@;'; put 'put ''NjMzXHUwNjI3XHUwNjM5XHUwNjJhXHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyN1x1MDYyYSIsIiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSIsIiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSJdLGQ6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUw''@;'; put 'put ''NjQ2IFx1MDY0YVx1MDY0OFx1MDY0NSIsIlx1MDY0YVx1MDY0OFx1MDY0NSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmYiLFsiXHUwNjRhXHUwNjQ4XHUwNjQ1XHUwNjI3XHUwNjQ2IiwiXHUwNjRhXHUwNjQ4XHUwNjQ1XHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyM1x1MDY0YVx1MDYyN1x1MDY0''@;'; put 'put ''NSIsIiVkIFx1MDY0YVx1MDY0OFx1MDY0NVx1MDY0Ylx1MDYyNyIsIiVkIFx1MDY0YVx1MDY0OFx1MDY0NSJdLE06WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYzNFx1MDY0N1x1MDYzMSIsIlx1MDYzNFx1MDY0N1x1MDYzMSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmYi''@;'; put 'put ''LFsiXHUwNjM0XHUwNjQ3XHUwNjMxXHUwNjI3XHUwNjQ2IiwiXHUwNjM0XHUwNjQ3XHUwNjMxXHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyM1x1MDYzNFx1MDY0N1x1MDYzMSIsIiVkIFx1MDYzNFx1MDY0N1x1MDYzMVx1MDYyNyIsIiVkIFx1MDYzNFx1MDY0N1x1MDYzMSJdLHk6WyJcdTA2MjNc''@;'; put 'put ''dTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYzOVx1MDYyN1x1MDY0NSIsIlx1MDYzOVx1MDYyN1x1MDY0NSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmYiLFsiXHUwNjM5XHUwNjI3XHUwNjQ1XHUwNjI3XHUwNjQ2IiwiXHUwNjM5XHUwNjI3XHUwNjQ1XHUwNjRhXHUwNjQ2Il0sIiVkIFx1''@;'; put 'put ''MDYyM1x1MDYzOVx1MDY0OFx1MDYyN1x1MDY0NSIsIiVkIFx1MDYzOVx1MDYyN1x1MDY0NVx1MDY0Ylx1MDYyNyIsIiVkIFx1MDYzOVx1MDYyN1x1MDY0NSJdfSxFZT1mdW5jdGlvbihqKXtyZXR1cm4gZnVuY3Rpb24ocmUsYWUsWSxXKXt2YXIgTj1CKHJlKSx0ZT1FW2pdW0IocmUpXTtyZXR1''@;'; put 'put ''cm4gMj09PU4mJih0ZT10ZVthZT8wOjFdKSx0ZS5yZXBsYWNlKC8lZC9pLHJlKX19LFU9WyJcdTA2MmNcdTA2MjdcdTA2NDZcdTA2NDFcdTA2NGEiLCJcdTA2NDFcdTA2NGFcdTA2NDFcdTA2MzFcdTA2NGEiLCJcdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzMiLCJcdTA2MjNcdTA2NDFcdTA2MzFc''@;'; put 'put ''dTA2NGFcdTA2NDQiLCJcdTA2NDVcdTA2MjdcdTA2NGEiLCJcdTA2MmNcdTA2NDhcdTA2MjdcdTA2NDYiLCJcdTA2MmNcdTA2NDhcdTA2NGFcdTA2NDRcdTA2NGFcdTA2MjkiLCJcdTA2MjNcdTA2NDhcdTA2MmEiLCJcdTA2MzNcdTA2MjhcdTA2MmFcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2''@;'; put 'put ''MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzEiLCJcdTA2NDZcdTA2NDhcdTA2NDFcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2MmZcdTA2NGFcdTA2MzNcdTA2NDVcdTA2MjhcdTA2MzEiXTttZS5kZWZpbmVMb2NhbGUoImFyLWR6Iix7bW9udGhzOlUsbW9udGhzU2hvcnQ6VSx3ZWVr''@;'; put 'put ''ZGF5czoiXHUwNjI3XHUwNjQ0XHUwNjIzXHUwNjJkXHUwNjJmX1x1MDYyN1x1MDY0NFx1MDYyNVx1MDYyYlx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2MjdcdTA2NDRcdTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjIzXHUwNjMxXHUwNjI4XHUwNjM5''@;'; put 'put ''XHUwNjI3XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MjdcdTA2NDRcdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDYyM1x1MDYyZFx1MDYyZl9c''@;'; put 'put ''dTA2MjVcdTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYzM1x1MDYy''@;'; put 'put ''OFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNjJkX1x1MDY0Nl9cdTA2MmJfXHUwNjMxX1x1MDYyZV9cdTA2MmNfXHUwNjMzIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJEL1x1''@;'; put 'put ''MjAwZk0vXHUyMDBmWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwNjM1fFx1MDY0NS8saXNQTTpmdW5jdGlvbihqKXtyZXR1cm4iXHUwNjQ1Ij09PWp9LG1lcmlkaWVt''@;'; put 'put ''OmZ1bmN0aW9uKGoscmUsYWUpe3JldHVybiBqPDEyPyJcdTA2MzUiOiJcdTA2NDUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyN1x1MDY0NFx1MDY0YVx1MDY0OFx1MDY0NSBcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4''@;'; put 'put ''dERheToiW1x1MDYzYVx1MDYyZlx1MDY0Ylx1MDYyNyBcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2Mjld''@;'; put 'put ''IExUIixsYXN0RGF5OiJbXHUwNjIzXHUwNjQ1XHUwNjMzIFx1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYy''@;'; put 'put ''OV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDYyOFx1MDYzOVx1MDYyZiAlcyIscGFzdDoiXHUwNjQ1XHUwNjQ2XHUwNjMwICVzIixzOkVlKCJzIiksc3M6RWUoInMiKSxtOkVlKCJtIiksbW06RWUoIm0iKSxoOkVlKCJoIiksaGg6RWUoImgiKSxkOkVlKCJk''@;'; put 'put ''IiksZGQ6RWUoImQiKSxNOkVlKCJNIiksTU06RWUoIk0iKSx5OkVlKCJ5IikseXk6RWUoInkiKX0scG9zdGZvcm1hdDpmdW5jdGlvbihqKXtyZXR1cm4gai5yZXBsYWNlKC8sL2csIlx1MDYwYyIpfSx3ZWVrOntkb3c6MCxkb3k6NH19KX0oTCgxNTQzOSkpfSwzMDEyODpmdW5jdGlvbihYZSxK''@;'; put 'put ''ZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoImFyLWt3Iix7bW9udGhzOiJcdTA2NGFcdTA2NDZcdTA2MjdcdTA2NGFcdTA2MzFfXHUwNjQxXHUwNjI4XHUwNjMxXHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYzM19cdTA2MjNc''@;'; put 'put ''dTA2MjhcdTA2MzFcdTA2NGFcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjRhX1x1MDY0YVx1MDY0OFx1MDY0Nlx1MDY0YVx1MDY0OF9cdTA2NGFcdTA2NDhcdTA2NDRcdTA2NGFcdTA2NDhcdTA2MzJfXHUwNjNhXHUwNjM0XHUwNjJhX1x1MDYzNFx1MDYyYVx1MDY0Nlx1MDYyOFx1MDYzMV9cdTA2''@;'; put 'put ''MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjQ2XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDYyY1x1MDY0Nlx1MDYyOFx1MDYzMSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNjRhXHUwNjQ2XHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0MVx1MDYyOFx1''@;'; put 'put ''MDYzMVx1MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzNfXHUwNjIzXHUwNjI4XHUwNjMxXHUwNjRhXHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDY0YV9cdTA2NGFcdTA2NDhcdTA2NDZcdTA2NGFcdTA2NDhfXHUwNjRhXHUwNjQ4XHUwNjQ0XHUwNjRhXHUwNjQ4XHUwNjMy''@;'; put 'put ''X1x1MDYzYVx1MDYzNFx1MDYyYV9cdTA2MzRcdTA2MmFcdTA2NDZcdTA2MjhcdTA2MzFfXHUwNjIzXHUwNjQzXHUwNjJhXHUwNjQ4XHUwNjI4XHUwNjMxX1x1MDY0Nlx1MDY0OFx1MDY0Nlx1MDYyOFx1MDYzMV9cdTA2MmZcdTA2MmNcdTA2NDZcdTA2MjhcdTA2MzEiLnNwbGl0KCJfIiksd2Vl''@;'; put 'put ''a2RheXM6Ilx1MDYyN1x1MDY0NFx1MDYyM1x1MDYyZFx1MDYyZl9cdTA2MjdcdTA2NDRcdTA2MjVcdTA2MmFcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjI3XHUwNjQ0XHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyM1x1MDYzMVx1MDYyOFx1MDYz''@;'; put 'put ''OVx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjI3XHUwNjQ0XHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYyN1x1MDY0NFx1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA2MjdcdTA2MmRcdTA2MmZf''@;'; put 'put ''XHUwNjI3XHUwNjJhXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MzNcdTA2''@;'; put 'put ''MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDYyZF9cdTA2NDZfXHUwNjJiX1x1MDYzMV9cdTA2MmVfXHUwNjJjX1x1MDYzMyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQv''@;'; put 'put ''TU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjdcdTA2NDRcdTA2NGFcdTA2NDhcdTA2NDUgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1''@;'; put 'put ''MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHREYXk6IltcdTA2M2FcdTA2MmZcdTA2MjcgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0''@;'; put 'put ''XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdERheToiW1x1MDYyM1x1MDY0NVx1MDYzMyBcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2''@;'; put 'put ''NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA2NDFcdTA2NGEgJXMiLHBhc3Q6Ilx1MDY0NVx1MDY0Nlx1MDYzMCAlcyIsczoiXHUwNjJiXHUwNjQ4XHUwNjI3XHUwNjQ2IixzczoiJWQgXHUwNjJiXHUwNjI3XHUw''@;'; put 'put ''NjQ2XHUwNjRhXHUwNjI5IixtOiJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiLG1tOiIlZCBcdTA2MmZcdTA2NDJcdTA2MjdcdTA2MjZcdTA2NDIiLGg6Ilx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSIsaGg6IiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyN1x1MDYyYSIsZDoiXHUw''@;'; put 'put ''NjRhXHUwNjQ4XHUwNjQ1IixkZDoiJWQgXHUwNjIzXHUwNjRhXHUwNjI3XHUwNjQ1IixNOiJcdTA2MzRcdTA2NDdcdTA2MzEiLE1NOiIlZCBcdTA2MjNcdTA2MzRcdTA2NDdcdTA2MzEiLHk6Ilx1MDYzM1x1MDY0Nlx1MDYyOSIseXk6IiVkIFx1MDYzM1x1MDY0Nlx1MDY0OFx1MDYyN1x1MDYy''@;'; put 'put ''YSJ9LHdlZWs6e2RvdzowLGRveToxMn19KX0oTCgxNTQzOSkpfSw4NDUxOTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj17MToiMSIsMjoiMiIsMzoiMyIsNDoiNCIsNToiNSIsNjoiNiIsNzoiNyIsODoiOCIsOToiOSIsMDoiMCJ9LEU9ZnVuY3Rp''@;'; put 'put ''b24ocmUpe3JldHVybiAwPT09cmU/MDoxPT09cmU/MToyPT09cmU/MjpyZSUxMDA+PTMmJnJlJTEwMDw9MTA/MzpyZSUxMDA+PTExPzQ6NX0sRWU9e3M6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSIsIlx1MDYyYlx1MDYy''@;'; put 'put ''N1x1MDY0Nlx1MDY0YVx1MDYyOSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmZcdTA2MjkiLFsiXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjJhXHUwNjI3XHUwNjQ2IiwiXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjJhXHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyYlx1MDY0OFx1MDYy''@;'; put 'put ''N1x1MDY0NiIsIiVkIFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSIsIiVkIFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSJdLG06WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSIsIlx1MDYyZlx1MDY0Mlx1''@;'; put 'put ''MDY0YVx1MDY0Mlx1MDYyOSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmZcdTA2MjkiLFsiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjJhXHUwNjI3XHUwNjQ2IiwiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjJhXHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyZlx1MDY0Mlx1MDYyN1x1''@;'; put 'put ''MDYyNlx1MDY0MiIsIiVkIFx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSIsIiVkIFx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSJdLGg6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSIsIlx1MDYzM1x1MDYyN1x1MDYz''@;'; put 'put ''OVx1MDYyOSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmZcdTA2MjkiLFsiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhXHUwNjI3XHUwNjQ2IiwiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhXHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyN1x1MDYyYSIsIiVkIFx1MDYz''@;'; put 'put ''M1x1MDYyN1x1MDYzOVx1MDYyOSIsIiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSJdLGQ6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDY0YVx1MDY0OFx1MDY0NSIsIlx1MDY0YVx1MDY0OFx1MDY0NSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmYiLFsiXHUwNjRhXHUw''@;'; put 'put ''NjQ4XHUwNjQ1XHUwNjI3XHUwNjQ2IiwiXHUwNjRhXHUwNjQ4XHUwNjQ1XHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyM1x1MDY0YVx1MDYyN1x1MDY0NSIsIiVkIFx1MDY0YVx1MDY0OFx1MDY0NVx1MDY0Ylx1MDYyNyIsIiVkIFx1MDY0YVx1MDY0OFx1MDY0NSJdLE06WyJcdTA2MjNcdTA2NDJc''@;'; put 'put ''dTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYzNFx1MDY0N1x1MDYzMSIsIlx1MDYzNFx1MDY0N1x1MDYzMSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmYiLFsiXHUwNjM0XHUwNjQ3XHUwNjMxXHUwNjI3XHUwNjQ2IiwiXHUwNjM0XHUwNjQ3XHUwNjMxXHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyM1x1''@;'; put 'put ''MDYzNFx1MDY0N1x1MDYzMSIsIiVkIFx1MDYzNFx1MDY0N1x1MDYzMVx1MDYyNyIsIiVkIFx1MDYzNFx1MDY0N1x1MDYzMSJdLHk6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYzOVx1MDYyN1x1MDY0NSIsIlx1MDYzOVx1MDYyN1x1MDY0NSBcdTA2NDhcdTA2MjdcdTA2''@;'; put 'put ''MmRcdTA2MmYiLFsiXHUwNjM5XHUwNjI3XHUwNjQ1XHUwNjI3XHUwNjQ2IiwiXHUwNjM5XHUwNjI3XHUwNjQ1XHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyM1x1MDYzOVx1MDY0OFx1MDYyN1x1MDY0NSIsIiVkIFx1MDYzOVx1MDYyN1x1MDY0NVx1MDY0Ylx1MDYyNyIsIiVkIFx1MDYzOVx1MDYy''@;'; put 'put ''N1x1MDY0NSJdfSxVPWZ1bmN0aW9uKHJlKXtyZXR1cm4gZnVuY3Rpb24oYWUsWSxXLE4pe3ZhciB0ZT1FKGFlKSxLPUVlW3JlXVtFKGFlKV07cmV0dXJuIDI9PT10ZSYmKEs9S1tZPzA6MV0pLEsucmVwbGFjZSgvJWQvaSxhZSl9fSxRPVsiXHUwNjRhXHUwNjQ2XHUwNjI3XHUwNjRhXHUwNjMx''@;'; put 'put ''IiwiXHUwNjQxXHUwNjI4XHUwNjMxXHUwNjI3XHUwNjRhXHUwNjMxIiwiXHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjMzIiwiXHUwNjIzXHUwNjI4XHUwNjMxXHUwNjRhXHUwNjQ0IiwiXHUwNjQ1XHUwNjI3XHUwNjRhXHUwNjQ4IiwiXHUwNjRhXHUwNjQ4XHUwNjQ2XHUwNjRhXHUwNjQ4IiwiXHUw''@;'; put 'put ''NjRhXHUwNjQ4XHUwNjQ0XHUwNjRhXHUwNjQ4IiwiXHUwNjIzXHUwNjNhXHUwNjMzXHUwNjM3XHUwNjMzIiwiXHUwNjMzXHUwNjI4XHUwNjJhXHUwNjQ1XHUwNjI4XHUwNjMxIiwiXHUwNjIzXHUwNjQzXHUwNjJhXHUwNjQ4XHUwNjI4XHUwNjMxIiwiXHUwNjQ2XHUwNjQ4XHUwNjQxXHUwNjQ1''@;'; put 'put ''XHUwNjI4XHUwNjMxIiwiXHUwNjJmXHUwNjRhXHUwNjMzXHUwNjQ1XHUwNjI4XHUwNjMxIl07bWUuZGVmaW5lTG9jYWxlKCJhci1seSIse21vbnRoczpRLG1vbnRoc1Nob3J0OlEsd2Vla2RheXM6Ilx1MDYyN1x1MDY0NFx1MDYyM1x1MDYyZFx1MDYyZl9cdTA2MjdcdTA2NDRcdTA2MjVcdTA2''@;'; put 'put ''MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjI3XHUwNjQ0XHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjI3XHUw''@;'; put 'put ''NjQ0XHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYyN1x1MDY0NFx1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYy''@;'; put 'put ''N1x1MDYyMV9cdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDYyZF9cdTA2NDZfXHUwNjJiX1x1MDYz''@;'; put 'put ''MV9cdTA2MmVfXHUwNjJjX1x1MDYzMyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiRC9cdTIwMGZNL1x1MjAwZllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIs''@;'; put 'put ''TExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1MDYzNXxcdTA2NDUvLGlzUE06ZnVuY3Rpb24ocmUpe3JldHVybiJcdTA2NDUiPT09cmV9LG1lcmlkaWVtOmZ1bmN0aW9uKHJlLGFlLFkpe3JldHVybiByZTwxMj8iXHUwNjM1IjoiXHUwNjQ1In0sY2FsZW5k''@;'; put 'put ''YXI6e3NhbWVEYXk6IltcdTA2MjdcdTA2NDRcdTA2NGFcdTA2NDhcdTA2NDUgXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHREYXk6IltcdTA2M2FcdTA2MmZcdTA2NGJcdTA2MjcgXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYy''@;'; put 'put ''N1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdERheToiW1x1MDYyM1x1MDY0NVx1MDYzMyBcdTA2MzlcdTA2NDZcdTA2MmYgXHUw''@;'; put 'put ''NjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA2MjhcdTA2Mzlc''@;'; put 'put ''dTA2MmYgJXMiLHBhc3Q6Ilx1MDY0NVx1MDY0Nlx1MDYzMCAlcyIsczpVKCJzIiksc3M6VSgicyIpLG06VSgibSIpLG1tOlUoIm0iKSxoOlUoImgiKSxoaDpVKCJoIiksZDpVKCJkIiksZGQ6VSgiZCIpLE06VSgiTSIpLE1NOlUoIk0iKSx5OlUoInkiKSx5eTpVKCJ5Iil9LHByZXBhcnNlOmZ1''@;'; put 'put ''bmN0aW9uKHJlKXtyZXR1cm4gcmUucmVwbGFjZSgvXHUwNjBjL2csIiwiKX0scG9zdGZvcm1hdDpmdW5jdGlvbihyZSl7cmV0dXJuIHJlLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oYWUpe3JldHVybiBCW2FlXX0pLnJlcGxhY2UoLywvZywiXHUwNjBjIil9LHdlZWs6e2Rvdzo2LGRveToxMn19''@;'; put 'put ''KX0oTCgxNTQzOSkpfSw2NTQ0MzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoImFyLW1hIix7bW9udGhzOiJcdTA2NGFcdTA2NDZcdTA2MjdcdTA2NGFcdTA2MzFfXHUwNjQxXHUwNjI4XHUwNjMxXHUwNjI3XHUwNjRhXHUwNjMx''@;'; put 'put ''X1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYzM19cdTA2MjNcdTA2MjhcdTA2MzFcdTA2NGFcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjRhX1x1MDY0YVx1MDY0OFx1MDY0Nlx1MDY0YVx1MDY0OF9cdTA2NGFcdTA2NDhcdTA2NDRcdTA2NGFcdTA2NDhcdTA2MzJfXHUwNjNhXHUwNjM0XHUwNjJhX1x1''@;'; put 'put ''MDYzNFx1MDYyYVx1MDY0Nlx1MDYyOFx1MDYzMV9cdTA2MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjQ2XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDYyY1x1MDY0Nlx1MDYyOFx1MDYzMSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNjRhXHUwNjQ2''@;'; put 'put ''XHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0MVx1MDYyOFx1MDYzMVx1MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzNfXHUwNjIzXHUwNjI4XHUwNjMxXHUwNjRhXHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDY0YV9cdTA2NGFcdTA2NDhcdTA2NDZcdTA2NGFcdTA2NDhfXHUw''@;'; put 'put ''NjRhXHUwNjQ4XHUwNjQ0XHUwNjRhXHUwNjQ4XHUwNjMyX1x1MDYzYVx1MDYzNFx1MDYyYV9cdTA2MzRcdTA2MmFcdTA2NDZcdTA2MjhcdTA2MzFfXHUwNjIzXHUwNjQzXHUwNjJhXHUwNjQ4XHUwNjI4XHUwNjMxX1x1MDY0Nlx1MDY0OFx1MDY0Nlx1MDYyOFx1MDYzMV9cdTA2MmZcdTA2MmNc''@;'; put 'put ''dTA2NDZcdTA2MjhcdTA2MzEiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDYyN1x1MDY0NFx1MDYyM1x1MDYyZFx1MDYyZl9cdTA2MjdcdTA2NDRcdTA2MjVcdTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjI3XHUwNjQ0XHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1''@;'; put 'put ''MDYyN1x1MDY0NFx1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjI3XHUwNjQ0XHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYyN1x1MDY0NFx1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3''@;'; put 'put ''ZWVrZGF5c1Nob3J0OiJcdTA2MjdcdTA2MmRcdTA2MmZfXHUwNjI3XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1''@;'; put 'put ''MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDYyZF9cdTA2NDZfXHUwNjJiX1x1MDYzMV9cdTA2MmVfXHUwNjJjX1x1MDYzMyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6''@;'; put 'put ''e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjdcdTA2NDRcdTA2NGFcdTA2NDhcdTA2NDUg''@;'; put 'put ''XHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHREYXk6IltcdTA2M2FcdTA2MmZcdTA2MjcgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHRXZWVrOiJkZGRk''@;'; put 'put ''IFtcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdERheToiW1x1MDYyM1x1MDY0NVx1MDYzMyBcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdFdlZWs6ImRk''@;'; put 'put ''ZGQgW1x1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA2NDFcdTA2NGEgJXMiLHBhc3Q6Ilx1MDY0NVx1MDY0Nlx1MDYzMCAlcyIsczoiXHUwNjJiXHUwNjQ4XHUw''@;'; put 'put ''NjI3XHUwNjQ2IixzczoiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IixtOiJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiLG1tOiIlZCBcdTA2MmZcdTA2NDJcdTA2MjdcdTA2MjZcdTA2NDIiLGg6Ilx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSIsaGg6IiVkIFx1MDYz''@;'; put 'put ''M1x1MDYyN1x1MDYzOVx1MDYyN1x1MDYyYSIsZDoiXHUwNjRhXHUwNjQ4XHUwNjQ1IixkZDoiJWQgXHUwNjIzXHUwNjRhXHUwNjI3XHUwNjQ1IixNOiJcdTA2MzRcdTA2NDdcdTA2MzEiLE1NOiIlZCBcdTA2MjNcdTA2MzRcdTA2NDdcdTA2MzEiLHk6Ilx1MDYzM1x1MDY0Nlx1MDYyOSIseXk6''@;'; put 'put ''IiVkIFx1MDYzM1x1MDY0Nlx1MDY0OFx1MDYyN1x1MDYyYSJ9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDE3NjQyOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO3ZhciBCPXsxOiJcdTA2NjEiLDI6Ilx1MDY2MiIsMzoiXHUwNjYzIiw0OiJc''@;'; put 'put ''dTA2NjQiLDU6Ilx1MDY2NSIsNjoiXHUwNjY2Iiw3OiJcdTA2NjciLDg6Ilx1MDY2OCIsOToiXHUwNjY5IiwwOiJcdTA2NjAifSxFPXsiXHUwNjYxIjoiMSIsIlx1MDY2MiI6IjIiLCJcdTA2NjMiOiIzIiwiXHUwNjY0IjoiNCIsIlx1MDY2NSI6IjUiLCJcdTA2NjYiOiI2IiwiXHUwNjY3Ijoi''@;'; put 'put ''NyIsIlx1MDY2OCI6IjgiLCJcdTA2NjkiOiI5IiwiXHUwNjYwIjoiMCJ9O21lLmRlZmluZUxvY2FsZSgiYXItc2EiLHttb250aHM6Ilx1MDY0YVx1MDY0Nlx1MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDFcdTA2MjhcdTA2MzFcdTA2MjdcdTA2NGFcdTA2MzFfXHUwNjQ1XHUwNjI3XHUwNjMxXHUw''@;'; put 'put ''NjMzX1x1MDYyM1x1MDYyOFx1MDYzMVx1MDY0YVx1MDY0NF9cdTA2NDVcdTA2MjdcdTA2NGFcdTA2NDhfXHUwNjRhXHUwNjQ4XHUwNjQ2XHUwNjRhXHUwNjQ4X1x1MDY0YVx1MDY0OFx1MDY0NFx1MDY0YVx1MDY0OF9cdTA2MjNcdTA2M2FcdTA2MzNcdTA2MzdcdTA2MzNfXHUwNjMzXHUwNjI4''@;'; put 'put ''XHUwNjJhXHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyM1x1MDY0M1x1MDYyYVx1MDY0OFx1MDYyOFx1MDYzMV9cdTA2NDZcdTA2NDhcdTA2NDFcdTA2NDVcdTA2MjhcdTA2MzFfXHUwNjJmXHUwNjRhXHUwNjMzXHUwNjQ1XHUwNjI4XHUwNjMxIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA2''@;'; put 'put ''NGFcdTA2NDZcdTA2MjdcdTA2NGFcdTA2MzFfXHUwNjQxXHUwNjI4XHUwNjMxXHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYzM19cdTA2MjNcdTA2MjhcdTA2MzFcdTA2NGFcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjRhXHUwNjQ4X1x1MDY0YVx1MDY0OFx1MDY0Nlx1''@;'; put 'put ''MDY0YVx1MDY0OF9cdTA2NGFcdTA2NDhcdTA2NDRcdTA2NGFcdTA2NDhfXHUwNjIzXHUwNjNhXHUwNjMzXHUwNjM3XHUwNjMzX1x1MDYzM1x1MDYyOFx1MDYyYVx1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjQx''@;'; put 'put ''XHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDY0YVx1MDYzM1x1MDY0NVx1MDYyOFx1MDYzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNjI3XHUwNjQ0XHUwNjIzXHUwNjJkXHUwNjJmX1x1MDYyN1x1MDY0NFx1MDYyNVx1MDYyYlx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2MjdcdTA2NDRc''@;'; put 'put ''dTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjIzXHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MjdcdTA2NDRcdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjI3''@;'; put 'put ''XHUwNjQ0XHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDYyM1x1MDYyZFx1MDYyZl9cdTA2MjVcdTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1''@;'; put 'put ''MDYyN1x1MDYyMV9cdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNjJkX1x1MDY0Nl9cdTA2MmJfXHUwNjMxX1x1MDYyZV9cdTA2MmNfXHUwNjMzIi5zcGxpdCgiXyIp''@;'; put 'put ''LHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNl''@;'; put 'put ''Oi9cdTA2MzV8XHUwNjQ1Lyxpc1BNOmZ1bmN0aW9uKFUpe3JldHVybiJcdTA2NDUiPT09VX0sbWVyaWRpZW06ZnVuY3Rpb24oVSxRLGope3JldHVybiBVPDEyPyJcdTA2MzUiOiJcdTA2NDUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyN1x1MDY0NFx1MDY0YVx1MDY0OFx1MDY0NSBcdTA2''@;'; put 'put ''MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dERheToiW1x1MDYzYVx1MDYyZlx1MDYyNyBcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1''@;'; put 'put ''MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0RGF5OiJbXHUwNjIzXHUwNjQ1XHUwNjMzIFx1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0V2VlazoiZGRkZCBb''@;'; put 'put ''XHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDY0MVx1MDY0YSAlcyIscGFzdDoiXHUwNjQ1XHUwNjQ2XHUwNjMwICVzIixzOiJcdTA2MmJcdTA2NDhcdTA2Mjdc''@;'; put 'put ''dTA2NDYiLHNzOiIlZCBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkiLG06Ilx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSIsbW06IiVkIFx1MDYyZlx1MDY0Mlx1MDYyN1x1MDYyNlx1MDY0MiIsaDoiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IixoaDoiJWQgXHUwNjMzXHUw''@;'; put 'put ''NjI3XHUwNjM5XHUwNjI3XHUwNjJhIixkOiJcdTA2NGFcdTA2NDhcdTA2NDUiLGRkOiIlZCBcdTA2MjNcdTA2NGFcdTA2MjdcdTA2NDUiLE06Ilx1MDYzNFx1MDY0N1x1MDYzMSIsTU06IiVkIFx1MDYyM1x1MDYzNFx1MDY0N1x1MDYzMSIseToiXHUwNjMzXHUwNjQ2XHUwNjI5Iix5eToiJWQg''@;'; put 'put ''XHUwNjMzXHUwNjQ2XHUwNjQ4XHUwNjI3XHUwNjJhIn0scHJlcGFyc2U6ZnVuY3Rpb24oVSl7cmV0dXJuIFUucmVwbGFjZSgvW1x1MDY2MVx1MDY2Mlx1MDY2M1x1MDY2NFx1MDY2NVx1MDY2Nlx1MDY2N1x1MDY2OFx1MDY2OVx1MDY2MF0vZyxmdW5jdGlvbihRKXtyZXR1cm4gRVtRXX0pLnJl''@;'; put 'put ''cGxhY2UoL1x1MDYwYy9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oVSl7cmV0dXJuIFUucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihRKXtyZXR1cm4gQltRXX0pLnJlcGxhY2UoLywvZywiXHUwNjBjIil9LHdlZWs6e2RvdzowLGRveTo2fX0pfShMKDE1NDM5KSl9LDY4NTkyOmZ1bmN0aW9u''@;'; put 'put ''KFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgiYXItdG4iLHttb250aHM6Ilx1MDYyY1x1MDYyN1x1MDY0Nlx1MDY0MVx1MDY0YV9cdTA2NDFcdTA2NGFcdTA2NDFcdTA2MzFcdTA2NGFfXHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjMzX1x1MDYyM1x1''@;'; put 'put ''MDY0MVx1MDYzMVx1MDY0YVx1MDY0NF9cdTA2NDVcdTA2MjdcdTA2NGFfXHUwNjJjXHUwNjQ4XHUwNjI3XHUwNjQ2X1x1MDYyY1x1MDY0OFx1MDY0YVx1MDY0NFx1MDY0YVx1MDYyOV9cdTA2MjNcdTA2NDhcdTA2MmFfXHUwNjMzXHUwNjI4XHUwNjJhXHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYy''@;'; put 'put ''M1x1MDY0M1x1MDYyYVx1MDY0OFx1MDYyOFx1MDYzMV9cdTA2NDZcdTA2NDhcdTA2NDFcdTA2NDVcdTA2MjhcdTA2MzFfXHUwNjJmXHUwNjRhXHUwNjMzXHUwNjQ1XHUwNjI4XHUwNjMxIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA2MmNcdTA2MjdcdTA2NDZcdTA2NDFcdTA2NGFfXHUw''@;'; put 'put ''NjQxXHUwNjRhXHUwNjQxXHUwNjMxXHUwNjRhX1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYzM19cdTA2MjNcdTA2NDFcdTA2MzFcdTA2NGFcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjRhX1x1MDYyY1x1MDY0OFx1MDYyN1x1MDY0Nl9cdTA2MmNcdTA2NDhcdTA2NGFcdTA2NDRcdTA2NGFcdTA2Mjlf''@;'; put 'put ''XHUwNjIzXHUwNjQ4XHUwNjJhX1x1MDYzM1x1MDYyOFx1MDYyYVx1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjQxXHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDY0YVx1MDYzM1x1MDY0NVx1MDYyOFx1MDYz''@;'; put 'put ''MSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNjI3XHUwNjQ0XHUwNjIzXHUwNjJkXHUwNjJmX1x1MDYyN1x1MDY0NFx1MDYyNVx1MDYyYlx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2MjdcdTA2NDRcdTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjIz''@;'; put 'put ''XHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MjdcdTA2NDRcdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1''@;'; put 'put ''MDYyM1x1MDYyZFx1MDYyZl9cdTA2MjVcdTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjJjXHUwNjQ1XHUwNjM5''@;'; put 'put ''XHUwNjI5X1x1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNjJkX1x1MDY0Nl9cdTA2MmJfXHUwNjMxX1x1MDYyZV9cdTA2MmNfXHUwNjMzIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6''@;'; put 'put ''IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyN1x1MDY0NFx1MDY0YVx1MDY0OFx1MDY0NSBcdTA2MzlcdTA2NDRcdTA2''@;'; put 'put ''NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dERheToiW1x1MDYzYVx1MDYyZlx1MDYyNyBcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0NFx1''@;'; put 'put ''MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0RGF5OiJbXHUwNjIzXHUwNjQ1XHUwNjMzIFx1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ0''@;'; put 'put ''XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDY0MVx1MDY0YSAlcyIscGFzdDoiXHUwNjQ1XHUwNjQ2XHUwNjMwICVzIixzOiJcdTA2MmJcdTA2NDhcdTA2MjdcdTA2NDYiLHNzOiIl''@;'; put 'put ''ZCBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkiLG06Ilx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSIsbW06IiVkIFx1MDYyZlx1MDY0Mlx1MDYyN1x1MDYyNlx1MDY0MiIsaDoiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IixoaDoiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUw''@;'; put 'put ''NjI3XHUwNjJhIixkOiJcdTA2NGFcdTA2NDhcdTA2NDUiLGRkOiIlZCBcdTA2MjNcdTA2NGFcdTA2MjdcdTA2NDUiLE06Ilx1MDYzNFx1MDY0N1x1MDYzMSIsTU06IiVkIFx1MDYyM1x1MDYzNFx1MDY0N1x1MDYzMSIseToiXHUwNjMzXHUwNjQ2XHUwNjI5Iix5eToiJWQgXHUwNjMzXHUwNjQ2''@;'; put 'put ''XHUwNjQ4XHUwNjI3XHUwNjJhIn0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sMTcwMzg6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9ezE6Ilx1MDY2MSIsMjoiXHUwNjYyIiwzOiJcdTA2NjMiLDQ6Ilx1MDY2NCIsNToiXHUwNjY1''@;'; put 'put ''Iiw2OiJcdTA2NjYiLDc6Ilx1MDY2NyIsODoiXHUwNjY4Iiw5OiJcdTA2NjkiLDA6Ilx1MDY2MCJ9LEU9eyJcdTA2NjEiOiIxIiwiXHUwNjYyIjoiMiIsIlx1MDY2MyI6IjMiLCJcdTA2NjQiOiI0IiwiXHUwNjY1IjoiNSIsIlx1MDY2NiI6IjYiLCJcdTA2NjciOiI3IiwiXHUwNjY4IjoiOCIs''@;'; put 'put ''Ilx1MDY2OSI6IjkiLCJcdTA2NjAiOiIwIn0sRWU9ZnVuY3Rpb24oYWUpe3JldHVybiAwPT09YWU/MDoxPT09YWU/MToyPT09YWU/MjphZSUxMDA+PTMmJmFlJTEwMDw9MTA/MzphZSUxMDA+PTExPzQ6NX0sVT17czpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjJiXHUw''@;'; put 'put ''NjI3XHUwNjQ2XHUwNjRhXHUwNjI5IiwiXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MmFc''@;'; put 'put ''dTA2NGFcdTA2NDYiXSwiJWQgXHUwNjJiXHUwNjQ4XHUwNjI3XHUwNjQ2IiwiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IiwiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5Il0sbTpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjJmXHUwNjQy''@;'; put 'put ''XHUwNjRhXHUwNjQyXHUwNjI5IiwiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MmFcdTA2''@;'; put 'put ''NGFcdTA2NDYiXSwiJWQgXHUwNjJmXHUwNjQyXHUwNjI3XHUwNjI2XHUwNjQyIiwiJWQgXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IiwiJWQgXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5Il0saDpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjMzXHUw''@;'; put 'put ''NjI3XHUwNjM5XHUwNjI5IiwiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjMz''@;'; put 'put ''XHUwNjI3XHUwNjM5XHUwNjI3XHUwNjJhIiwiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IiwiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5Il0sZDpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjRhXHUwNjQ4XHUwNjQ1IiwiXHUwNjRhXHUwNjQ4XHUwNjQ1IFx1''@;'; put 'put ''MDY0OFx1MDYyN1x1MDYyZFx1MDYyZiIsWyJcdTA2NGFcdTA2NDhcdTA2NDVcdTA2MjdcdTA2NDYiLCJcdTA2NGFcdTA2NDhcdTA2NDVcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjIzXHUwNjRhXHUwNjI3XHUwNjQ1IiwiJWQgXHUwNjRhXHUwNjQ4XHUwNjQ1XHUwNjRiXHUwNjI3IiwiJWQgXHUw''@;'; put 'put ''NjRhXHUwNjQ4XHUwNjQ1Il0sTTpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjM0XHUwNjQ3XHUwNjMxIiwiXHUwNjM0XHUwNjQ3XHUwNjMxIFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZiIsWyJcdTA2MzRcdTA2NDdcdTA2MzFcdTA2MjdcdTA2NDYiLCJcdTA2MzRcdTA2''@;'; put 'put ''NDdcdTA2MzFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjIzXHUwNjM0XHUwNjQ3XHUwNjMxIiwiJWQgXHUwNjM0XHUwNjQ3XHUwNjMxXHUwNjI3IiwiJWQgXHUwNjM0XHUwNjQ3XHUwNjMxIl0seTpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjM5XHUwNjI3XHUwNjQ1Iiwi''@;'; put 'put ''XHUwNjM5XHUwNjI3XHUwNjQ1IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZiIsWyJcdTA2MzlcdTA2MjdcdTA2NDVcdTA2MjdcdTA2NDYiLCJcdTA2MzlcdTA2MjdcdTA2NDVcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjIzXHUwNjM5XHUwNjQ4XHUwNjI3XHUwNjQ1IiwiJWQgXHUwNjM5XHUwNjI3''@;'; put 'put ''XHUwNjQ1XHUwNjRiXHUwNjI3IiwiJWQgXHUwNjM5XHUwNjI3XHUwNjQ1Il19LFE9ZnVuY3Rpb24oYWUpe3JldHVybiBmdW5jdGlvbihZLFcsTix0ZSl7dmFyIEs9RWUoWSksSj1VW2FlXVtFZShZKV07cmV0dXJuIDI9PT1LJiYoSj1KW1c/MDoxXSksSi5yZXBsYWNlKC8lZC9pLFkpfX0saj1b''@;'; put 'put ''Ilx1MDY0YVx1MDY0Nlx1MDYyN1x1MDY0YVx1MDYzMSIsIlx1MDY0MVx1MDYyOFx1MDYzMVx1MDYyN1x1MDY0YVx1MDYzMSIsIlx1MDY0NVx1MDYyN1x1MDYzMVx1MDYzMyIsIlx1MDYyM1x1MDYyOFx1MDYzMVx1MDY0YVx1MDY0NCIsIlx1MDY0NVx1MDYyN1x1MDY0YVx1MDY0OCIsIlx1MDY0''@;'; put 'put ''YVx1MDY0OFx1MDY0Nlx1MDY0YVx1MDY0OCIsIlx1MDY0YVx1MDY0OFx1MDY0NFx1MDY0YVx1MDY0OCIsIlx1MDYyM1x1MDYzYVx1MDYzM1x1MDYzN1x1MDYzMyIsIlx1MDYzM1x1MDYyOFx1MDYyYVx1MDY0NVx1MDYyOFx1MDYzMSIsIlx1MDYyM1x1MDY0M1x1MDYyYVx1MDY0OFx1MDYyOFx1''@;'; put 'put ''MDYzMSIsIlx1MDY0Nlx1MDY0OFx1MDY0MVx1MDY0NVx1MDYyOFx1MDYzMSIsIlx1MDYyZlx1MDY0YVx1MDYzM1x1MDY0NVx1MDYyOFx1MDYzMSJdO21lLmRlZmluZUxvY2FsZSgiYXIiLHttb250aHM6aixtb250aHNTaG9ydDpqLHdlZWtkYXlzOiJcdTA2MjdcdTA2NDRcdTA2MjNcdTA2MmRc''@;'; put 'put ''dTA2MmZfXHUwNjI3XHUwNjQ0XHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyN1x1MDY0NFx1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjJl''@;'; put 'put ''XHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyN1x1MDY0NFx1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNjIzXHUwNjJkXHUwNjJmX1x1MDYyNVx1MDYyYlx1MDY0Nlx1MDY0YVx1MDY0Nl9c''@;'; put 'put ''dTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjIzXHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIxX1x1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWlu''@;'; put 'put ''OiJcdTA2MmRfXHUwNjQ2X1x1MDYyYl9cdTA2MzFfXHUwNjJlX1x1MDYyY19cdTA2MzMiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkQvXHUyMDBmTS9cdTIwMGZZWVlZIixMTDoiRCBNTU1NIFlZ''@;'; put 'put ''WVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA2MzV8XHUwNjQ1Lyxpc1BNOmZ1bmN0aW9uKGFlKXtyZXR1cm4iXHUwNjQ1Ij09PWFlfSxtZXJpZGllbTpmdW5jdGlvbihhZSxZLFcpe3JldHVybiBhZTwx''@;'; put 'put ''Mj8iXHUwNjM1IjoiXHUwNjQ1In0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjdcdTA2NDRcdTA2NGFcdTA2NDhcdTA2NDUgXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHREYXk6IltcdTA2M2FcdTA2MmZcdTA2NGJcdTA2''@;'; put 'put ''MjcgXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdERheToiW1x1MDYyM1x1MDY0NVx1''@;'; put 'put ''MDYzMyBcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZl''@;'; put 'put ''VGltZTp7ZnV0dXJlOiJcdTA2MjhcdTA2MzlcdTA2MmYgJXMiLHBhc3Q6Ilx1MDY0NVx1MDY0Nlx1MDYzMCAlcyIsczpRKCJzIiksc3M6USgicyIpLG06USgibSIpLG1tOlEoIm0iKSxoOlEoImgiKSxoaDpRKCJoIiksZDpRKCJkIiksZGQ6USgiZCIpLE06USgiTSIpLE1NOlEoIk0iKSx5OlEo''@;'; put 'put ''InkiKSx5eTpRKCJ5Iil9LHByZXBhcnNlOmZ1bmN0aW9uKGFlKXtyZXR1cm4gYWUucmVwbGFjZSgvW1x1MDY2MVx1MDY2Mlx1MDY2M1x1MDY2NFx1MDY2NVx1MDY2Nlx1MDY2N1x1MDY2OFx1MDY2OVx1MDY2MF0vZyxmdW5jdGlvbihZKXtyZXR1cm4gRVtZXX0pLnJlcGxhY2UoL1x1MDYwYy9n''@;'; put 'put ''LCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oYWUpe3JldHVybiBhZS5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKFkpe3JldHVybiBCW1ldfSkucmVwbGFjZSgvLC9nLCJcdTA2MGMiKX0sd2Vlazp7ZG93OjYsZG95OjEyfX0pfShMKDE1NDM5KSl9LDUxMjEzOmZ1bmN0aW9uKFhlLEplLEwpeyFm''@;'; put 'put ''dW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO3ZhciBCPXsxOiItaW5jaSIsNToiLWluY2kiLDg6Ii1pbmNpIiw3MDoiLWluY2kiLDgwOiItaW5jaSIsMjoiLW5jaSIsNzoiLW5jaSIsMjA6Ii1uY2kiLDUwOiItbmNpIiwzOiItXHhmY25jXHhmYyIsNDoiLVx4ZmNuY1x4ZmMiLDEwMDoiLVx4ZmNu''@;'; put 'put ''Y1x4ZmMiLDY6Ii1uY1x1MDEzMSIsOToiLXVuY3UiLDEwOiItdW5jdSIsMzA6Ii11bmN1Iiw2MDoiLVx1MDEzMW5jXHUwMTMxIiw5MDoiLVx1MDEzMW5jXHUwMTMxIn07bWUuZGVmaW5lTG9jYWxlKCJheiIse21vbnRoczoieWFudmFyX2ZldnJhbF9tYXJ0X2FwcmVsX21heV9peXVuX2l5dWxf''@;'; put 'put ''YXZxdXN0X3NlbnR5YWJyX29rdHlhYnJfbm95YWJyX2Rla2FiciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoieWFuX2Zldl9tYXJfYXByX21heV9peW5faXlsX2F2cV9zZW5fb2t0X25veV9kZWsiLnNwbGl0KCJfIiksd2Vla2RheXM6IkJhemFyX0JhemFyIGVydFx1MDI1OXNpX1x4YzdcdTAy''@;'; put 'put ''NTlyXHUwMTVmXHUwMjU5bmJcdTAyNTkgYXhcdTAxNWZhbVx1MDEzMV9ceGM3XHUwMjU5clx1MDE1Zlx1MDI1OW5iXHUwMjU5X0NceGZjbVx1MDI1OSBheFx1MDE1ZmFtXHUwMTMxX0NceGZjbVx1MDI1OV9cdTAxNWVcdTAyNTluYlx1MDI1OSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJC''@;'; put 'put ''YXpfQnpFX1x4YzdBeF9ceGM3XHUwMjU5cl9DQXhfQ1x4ZmNtX1x1MDE1ZVx1MDI1OW4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkJ6X0JFX1x4YzdBX1x4YzdcdTAyNTlfQ0FfQ1x4ZmNfXHUwMTVlXHUwMjU5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZv''@;'; put 'put ''cm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltidWdceGZjbiBzYWF0XSBMVCIsbmV4dERh''@;'; put 'put ''eToiW3NhYmFoIHNhYXRdIExUIixuZXh0V2VlazoiW2dcdTAyNTlsXHUwMjU5biBoXHUwMjU5ZnRcdTAyNTldIGRkZGQgW3NhYXRdIExUIixsYXN0RGF5OiJbZFx4ZmNuXHUwMjU5bl0gTFQiLGxhc3RXZWVrOiJba2VceGU3XHUwMjU5biBoXHUwMjU5ZnRcdTAyNTldIGRkZGQgW3NhYXRdIExU''@;'; put 'put ''IixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBzb25yYSIscGFzdDoiJXMgXHUwMjU5dnZcdTAyNTlsIixzOiJiaXIgbmVceGU3XHUwMjU5IHNhbml5XHUwMjU5IixzczoiJWQgc2FuaXlcdTAyNTkiLG06ImJpciBkXHUwMjU5cWlxXHUwMjU5IixtbToiJWQgZFx1MDI1''@;'; put 'put ''OXFpcVx1MDI1OSIsaDoiYmlyIHNhYXQiLGhoOiIlZCBzYWF0IixkOiJiaXIgZ1x4ZmNuIixkZDoiJWQgZ1x4ZmNuIixNOiJiaXIgYXkiLE1NOiIlZCBheSIseToiYmlyIGlsIix5eToiJWQgaWwifSxtZXJpZGllbVBhcnNlOi9nZWNcdTAyNTl8c1x1MDI1OWhcdTAyNTlyfGdceGZjbmRceGZj''@;'; put 'put ''enxheFx1MDE1ZmFtLyxpc1BNOmZ1bmN0aW9uKEVlKXtyZXR1cm4vXihnXHhmY25kXHhmY3p8YXhcdTAxNWZhbSkkLy50ZXN0KEVlKX0sbWVyaWRpZW06ZnVuY3Rpb24oRWUsVSxRKXtyZXR1cm4gRWU8ND8iZ2VjXHUwMjU5IjpFZTwxMj8ic1x1MDI1OWhcdTAyNTlyIjpFZTwxNz8iZ1x4ZmNu''@;'; put 'put ''ZFx4ZmN6IjoiYXhcdTAxNWZhbSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0tKFx1MDEzMW5jXHUwMTMxfGluY2l8bmNpfFx4ZmNuY1x4ZmN8bmNcdTAxMzF8dW5jdSkvLG9yZGluYWw6ZnVuY3Rpb24oRWUpe2lmKDA9PT1FZSlyZXR1cm4gRWUrIi1cdTAxMzFuY1x1MDEzMSI7''@;'; put 'put ''dmFyIFU9RWUlMTA7cmV0dXJuIEVlKyhCW1VdfHxCW0VlJTEwMC1VXXx8QltFZT49MTAwPzEwMDpudWxsXSl9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDY5MTkxOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEUoVSxRLGop''@;'; put 'put ''e3JldHVybiJtIj09PWo/UT8iXHUwNDQ1XHUwNDMyXHUwNDU2XHUwNDNiXHUwNDU2XHUwNDNkXHUwNDMwIjoiXHUwNDQ1XHUwNDMyXHUwNDU2XHUwNDNiXHUwNDU2XHUwNDNkXHUwNDQzIjoiaCI9PT1qP1E/Ilx1MDQzM1x1MDQzMFx1MDQzNFx1MDQzN1x1MDQ1Nlx1MDQzZFx1MDQzMCI6Ilx1''@;'; put 'put ''MDQzM1x1MDQzMFx1MDQzNFx1MDQzN1x1MDQ1Nlx1MDQzZFx1MDQ0MyI6VSsiICIrZnVuY3Rpb24gQihVLFEpe3ZhciBqPVUuc3BsaXQoIl8iKTtyZXR1cm4gUSUxMD09MSYmUSUxMDAhPTExP2pbMF06USUxMD49MiYmUSUxMDw9NCYmKFElMTAwPDEwfHxRJTEwMD49MjApP2pbMV06alsyXX0o''@;'; put 'put ''e3NzOlE/Ilx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQzMF9cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0NGJfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IjoiXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUw''@;'; put 'put ''NDM0XHUwNDQzX1x1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQ0Yl9cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiLG1tOlE/Ilx1MDQ0NVx1MDQzMlx1MDQ1Nlx1MDQzYlx1MDQ1Nlx1MDQzZFx1MDQzMF9cdTA0NDVcdTA0MzJcdTA0NTZcdTA0M2Jc''@;'; put 'put ''dTA0NTZcdTA0M2RcdTA0NGJfXHUwNDQ1XHUwNDMyXHUwNDU2XHUwNDNiXHUwNDU2XHUwNDNkIjoiXHUwNDQ1XHUwNDMyXHUwNDU2XHUwNDNiXHUwNDU2XHUwNDNkXHUwNDQzX1x1MDQ0NVx1MDQzMlx1MDQ1Nlx1MDQzYlx1MDQ1Nlx1MDQzZFx1MDQ0Yl9cdTA0NDVcdTA0MzJcdTA0NTZcdTA0''@;'; put 'put ''M2JcdTA0NTZcdTA0M2QiLGhoOlE/Ilx1MDQzM1x1MDQzMFx1MDQzNFx1MDQzN1x1MDQ1Nlx1MDQzZFx1MDQzMF9cdTA0MzNcdTA0MzBcdTA0MzRcdTA0MzdcdTA0NTZcdTA0M2RcdTA0NGJfXHUwNDMzXHUwNDMwXHUwNDM0XHUwNDM3XHUwNDU2XHUwNDNkIjoiXHUwNDMzXHUwNDMwXHUwNDM0''@;'; put 'put ''XHUwNDM3XHUwNDU2XHUwNDNkXHUwNDQzX1x1MDQzM1x1MDQzMFx1MDQzNFx1MDQzN1x1MDQ1Nlx1MDQzZFx1MDQ0Yl9cdTA0MzNcdTA0MzBcdTA0MzRcdTA0MzdcdTA0NTZcdTA0M2QiLGRkOiJcdTA0MzRcdTA0MzdcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDM0XHUwNDNkXHUwNDU2X1x1MDQz''@;'; put 'put ''NFx1MDQzN1x1MDQ1MVx1MDQzZCIsTU06Ilx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0Nl9cdTA0M2NcdTA0MzVcdTA0NDFcdTA0NGZcdTA0NDZcdTA0NGJfXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDRmXHUwNDQ2XHUwNDMwXHUwNDVlIix5eToiXHUwNDMzXHUwNDNlXHUwNDM0X1x1MDQz''@;'; put 'put ''M1x1MDQzMFx1MDQzNFx1MDQ0Yl9cdTA0MzNcdTA0MzBcdTA0MzRcdTA0M2VcdTA0NWUifVtqXSwrVSl9bWUuZGVmaW5lTG9jYWxlKCJiZSIse21vbnRoczp7Zm9ybWF0OiJcdTA0NDFcdTA0NDJcdTA0NDNcdTA0MzRcdTA0MzdcdTA0MzVcdTA0M2RcdTA0NGZfXHUwNDNiXHUwNDRlXHUwNDQy''@;'; put 'put ''XHUwNDMwXHUwNDMzXHUwNDMwX1x1MDQ0MVx1MDQzMFx1MDQzYVx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzYVx1MDQzMF9cdTA0M2FcdTA0NDBcdTA0MzBcdTA0NDFcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M2FcdTA0MzBfXHUwNDQyXHUwNDQwXHUwNDMwXHUwNDVlXHUwNDNkXHUwNDRmX1x1MDQ0''@;'; put 'put ''N1x1MDQ0ZFx1MDQ0MFx1MDQzMlx1MDQzNVx1MDQzZFx1MDQ0Zl9cdTA0M2JcdTA0NTZcdTA0M2ZcdTA0MzVcdTA0M2RcdTA0NGZfXHUwNDM2XHUwNDNkXHUwNDU2XHUwNDVlXHUwNDNkXHUwNDRmX1x1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzMFx1MDQ0MVx1MDQzZFx1MDQ0Zl9cdTA0M2FcdTA0''@;'; put 'put ''MzBcdTA0NDFcdTA0NDJcdTA0NDBcdTA0NGJcdTA0NDdcdTA0M2RcdTA0NTZcdTA0M2FcdTA0MzBfXHUwNDNiXHUwNDU2XHUwNDQxXHUwNDQyXHUwNDMwXHUwNDNmXHUwNDMwXHUwNDM0XHUwNDMwX1x1MDQ0MVx1MDQzZFx1MDQzNVx1MDQzNlx1MDQzZFx1MDQ0ZiIuc3BsaXQoIl8iKSxzdGFu''@;'; put 'put ''ZGFsb25lOiJcdTA0NDFcdTA0NDJcdTA0NDNcdTA0MzRcdTA0MzdcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDNiXHUwNDRlXHUwNDQyXHUwNDRiX1x1MDQ0MVx1MDQzMFx1MDQzYVx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzYV9cdTA0M2FcdTA0NDBcdTA0MzBcdTA0NDFcdTA0MzBcdTA0MzJcdTA0''@;'; put 'put ''NTZcdTA0M2FfXHUwNDQyXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQ0N1x1MDQ0ZFx1MDQ0MFx1MDQzMlx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0M2JcdTA0NTZcdTA0M2ZcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDM2XHUwNDNkXHUwNDU2XHUwNDMyXHUwNDM1XHUw''@;'; put 'put ''NDNkXHUwNDRjX1x1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzMFx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0M2FcdTA0MzBcdTA0NDFcdTA0NDJcdTA0NDBcdTA0NGJcdTA0NDdcdTA0M2RcdTA0NTZcdTA0M2FfXHUwNDNiXHUwNDU2XHUwNDQxXHUwNDQyXHUwNDMwXHUwNDNmXHUwNDMwXHUw''@;'; put 'put ''NDM0X1x1MDQ0MVx1MDQzZFx1MDQzNVx1MDQzNlx1MDQzMFx1MDQzZFx1MDQ0YyIuc3BsaXQoIl8iKX0sbW9udGhzU2hvcnQ6Ilx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQzNF9cdTA0M2JcdTA0NGVcdTA0NDJfXHUwNDQxXHUwNDMwXHUwNDNhX1x1MDQzYVx1MDQ0MFx1MDQzMFx1MDQ0MV9cdTA0''@;'; put 'put ''NDJcdTA0NDBcdTA0MzBcdTA0MzJfXHUwNDQ3XHUwNDRkXHUwNDQwXHUwNDMyX1x1MDQzYlx1MDQ1Nlx1MDQzZl9cdTA0MzZcdTA0M2RcdTA0NTZcdTA0MzJfXHUwNDMyXHUwNDM1XHUwNDQwX1x1MDQzYVx1MDQzMFx1MDQ0MVx1MDQ0Ml9cdTA0M2JcdTA0NTZcdTA0NDFcdTA0NDJfXHUwNDQx''@;'; put 'put ''XHUwNDNkXHUwNDM1XHUwNDM2Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOntmb3JtYXQ6Ilx1MDQzZFx1MDQ0Zlx1MDQzNFx1MDQzN1x1MDQzNVx1MDQzYlx1MDQ0ZV9cdTA0M2ZcdTA0MzBcdTA0M2RcdTA0NGZcdTA0MzRcdTA0MzdcdTA0MzVcdTA0M2JcdTA0MzBcdTA0M2FfXHUwNDMwXHUwNDVl''@;'; put 'put ''XHUwNDQyXHUwNDNlXHUwNDQwXHUwNDMwXHUwNDNhX1x1MDQ0MVx1MDQzNVx1MDQ0MFx1MDQzMFx1MDQzNFx1MDQ0M19cdTA0NDdcdTA0MzBcdTA0NDZcdTA0MzJcdTA0MzVcdTA0NDBfXHUwNDNmXHUwNDRmXHUwNDQyXHUwNDNkXHUwNDU2XHUwNDQ2XHUwNDQzX1x1MDQ0MVx1MDQ0M1x1MDQz''@;'; put 'put ''MVx1MDQzZVx1MDQ0Mlx1MDQ0MyIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJcdTA0M2RcdTA0NGZcdTA0MzRcdTA0MzdcdTA0MzVcdTA0M2JcdTA0NGZfXHUwNDNmXHUwNDMwXHUwNDNkXHUwNDRmXHUwNDM0XHUwNDM3XHUwNDM1XHUwNDNiXHUwNDMwXHUwNDNhX1x1MDQzMFx1MDQ1ZVx1MDQ0''@;'; put 'put ''Mlx1MDQzZVx1MDQ0MFx1MDQzMFx1MDQzYV9cdTA0NDFcdTA0MzVcdTA0NDBcdTA0MzBcdTA0MzRcdTA0MzBfXHUwNDQ3XHUwNDMwXHUwNDQ2XHUwNDMyXHUwNDM1XHUwNDQwX1x1MDQzZlx1MDQ0Zlx1MDQ0Mlx1MDQzZFx1MDQ1Nlx1MDQ0Nlx1MDQzMF9cdTA0NDFcdTA0NDNcdTA0MzFcdTA0''@;'; put 'put ''M2VcdTA0NDJcdTA0MzAiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L1xbID9bXHUwNDIzXHUwNDQzXHUwNDVlXSA/KD86XHUwNDNjXHUwNDU2XHUwNDNkXHUwNDQzXHUwNDNiXHUwNDQzXHUwNDRlfFx1MDQzZFx1MDQzMFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQzZlx1MDQzZFx1MDQ0M1x1MDQ0ZSk/''@;'; put 'put ''ID9cXSA/ZGRkZC99LHdlZWtkYXlzU2hvcnQ6Ilx1MDQzZFx1MDQzNF9cdTA0M2ZcdTA0M2RfXHUwNDMwXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0NDZfXHUwNDNmXHUwNDQyX1x1MDQ0MVx1MDQzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDNkXHUwNDM0X1x1MDQzZlx1''@;'; put 'put ''MDQzZF9cdTA0MzBcdTA0NDJfXHUwNDQxXHUwNDQwX1x1MDQ0N1x1MDQ0Nl9cdTA0M2ZcdTA0NDJfXHUwNDQxXHUwNDMxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSBcdTA0MzMuIixM''@;'; put 'put ''TEw6IkQgTU1NTSBZWVlZIFx1MDQzMy4sIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBcdTA0MzMuLCBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDIxXHUwNDUxXHUwNDNkXHUwNDNkXHUwNDRmIFx1MDQ1ZV0gTFQiLG5leHREYXk6IltcdTA0MTdcdTA0MzBcdTA0NWVc''@;'; put 'put ''dTA0NDJcdTA0NDBcdTA0MzAgXHUwNDVlXSBMVCIsbGFzdERheToiW1x1MDQyM1x1MDQ0N1x1MDQzZVx1MDQ0MFx1MDQzMCBcdTA0NWVdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJbXHUwNDIzXSBkZGRkIFtcdTA0NWVdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2go''@;'; put 'put ''dGhpcy5kYXkoKSl7Y2FzZSAwOmNhc2UgMzpjYXNlIDU6Y2FzZSA2OnJldHVybiJbXHUwNDIzIFx1MDQzY1x1MDQ1Nlx1MDQzZFx1MDQ0M1x1MDQzYlx1MDQ0M1x1MDQ0ZV0gZGRkZCBbXHUwNDVlXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIltcdTA0MjMgXHUwNDNjXHUwNDU2''@;'; put 'put ''XHUwNDNkXHUwNDQzXHUwNDNiXHUwNDRiXSBkZGRkIFtcdTA0NWVdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDQzZlx1MDQ0MFx1MDQzMFx1MDQzNyAlcyIscGFzdDoiJXMgXHUwNDQyXHUwNDMwXHUwNDNjXHUwNDQzIixzOiJcdTA0M2RcdTA0MzVcdTA0''@;'; put 'put ''M2FcdTA0MzBcdTA0M2JcdTA0NGNcdTA0M2FcdTA0NTYgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IixtOkUsbW06RSxoOkUsaGg6RSxkOiJcdTA0MzRcdTA0MzdcdTA0MzVcdTA0M2RcdTA0NGMiLGRkOkUsTToiXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDRmXHUwNDQ2IixN''@;'; put 'put ''TTpFLHk6Ilx1MDQzM1x1MDQzZVx1MDQzNCIseXk6RX0sbWVyaWRpZW1QYXJzZTovXHUwNDNkXHUwNDNlXHUwNDQ3XHUwNDRifFx1MDQ0MFx1MDQzMFx1MDQzZFx1MDQ1Nlx1MDQ0Nlx1MDQ0YnxcdTA0MzRcdTA0M2RcdTA0NGZ8XHUwNDMyXHUwNDM1XHUwNDQ3XHUwNDMwXHUwNDQwXHUwNDMw''@;'; put 'put ''Lyxpc1BNOmZ1bmN0aW9uKFUpe3JldHVybi9eKFx1MDQzNFx1MDQzZFx1MDQ0ZnxcdTA0MzJcdTA0MzVcdTA0NDdcdTA0MzBcdTA0NDBcdTA0MzApJC8udGVzdChVKX0sbWVyaWRpZW06ZnVuY3Rpb24oVSxRLGope3JldHVybiBVPDQ/Ilx1MDQzZFx1MDQzZVx1MDQ0N1x1MDQ0YiI6VTwxMj8i''@;'; put 'put ''XHUwNDQwXHUwNDMwXHUwNDNkXHUwNDU2XHUwNDQ2XHUwNDRiIjpVPDE3PyJcdTA0MzRcdTA0M2RcdTA0NGYiOiJcdTA0MzJcdTA0MzVcdTA0NDdcdTA0MzBcdTA0NDBcdTA0MzAifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LShcdTA0NTZ8XHUwNDRifFx1MDQzM1x1MDQzMCkv''@;'; put 'put ''LG9yZGluYWw6ZnVuY3Rpb24oVSxRKXtzd2l0Y2goUSl7Y2FzZSJNIjpjYXNlImQiOmNhc2UiREREIjpjYXNlInciOmNhc2UiVyI6cmV0dXJuIFUlMTAhPTImJlUlMTAhPTN8fFUlMTAwPT0xMnx8VSUxMDA9PTEzP1UrIi1cdTA0NGIiOlUrIi1cdTA0NTYiO2Nhc2UiRCI6cmV0dXJuIFUrIi1c''@;'; put 'put ''dTA0MzNcdTA0MzAiO2RlZmF1bHQ6cmV0dXJuIFV9fSx3ZWVrOntkb3c6MSxkb3k6N319KX0oTCgxNTQzOSkpfSw5MDMyMjpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoImJnIix7bW9udGhzOiJcdTA0NGZcdTA0M2RcdTA0NDNc''@;'; put 'put ''dTA0MzBcdTA0NDBcdTA0MzhfXHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwXHUwNDQzXHUwNDMwXHUwNDQwXHUwNDM4X1x1MDQzY1x1MDQzMFx1MDQ0MFx1MDQ0Ml9cdTA0MzBcdTA0M2ZcdTA0NDBcdTA0MzhcdTA0M2JfXHUwNDNjXHUwNDMwXHUwNDM5X1x1MDQ0ZVx1MDQzZFx1MDQzOF9cdTA0''@;'; put 'put ''NGVcdTA0M2JcdTA0MzhfXHUwNDMwXHUwNDMyXHUwNDMzXHUwNDQzXHUwNDQxXHUwNDQyX1x1MDQ0MVx1MDQzNVx1MDQzZlx1MDQ0Mlx1MDQzNVx1MDQzY1x1MDQzMlx1MDQ0MFx1MDQzOF9cdTA0M2VcdTA0M2FcdTA0NDJcdTA0M2VcdTA0M2NcdTA0MzJcdTA0NDBcdTA0MzhfXHUwNDNkXHUw''@;'; put 'put ''NDNlXHUwNDM1XHUwNDNjXHUwNDMyXHUwNDQwXHUwNDM4X1x1MDQzNFx1MDQzNVx1MDQzYVx1MDQzNVx1MDQzY1x1MDQzMlx1MDQ0MFx1MDQzOCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNDRmXHUwNDNkXHUwNDQzX1x1MDQ0NFx1MDQzNVx1MDQzMl9cdTA0M2NcdTA0MzBcdTA0NDBf''@;'; put 'put ''XHUwNDMwXHUwNDNmXHUwNDQwX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0NGVcdTA0M2RcdTA0MzhfXHUwNDRlXHUwNDNiXHUwNDM4X1x1MDQzMFx1MDQzMlx1MDQzM19cdTA0NDFcdTA0MzVcdTA0M2ZfXHUwNDNlXHUwNDNhXHUwNDQyX1x1MDQzZFx1MDQzZVx1MDQzNV9cdTA0MzRcdTA0MzVc''@;'; put 'put ''dTA0M2EiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQzYlx1MDQ0Zl9cdTA0M2ZcdTA0M2VcdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2JcdTA0M2RcdTA0MzhcdTA0M2FfXHUwNDMyXHUwNDQyXHUwNDNlXHUwNDQwXHUwNDNkXHUwNDM4XHUw''@;'; put 'put ''NDNhX1x1MDQ0MVx1MDQ0MFx1MDQ0Zlx1MDQzNFx1MDQzMF9cdTA0NDdcdTA0MzVcdTA0NDJcdTA0MzJcdTA0NGFcdTA0NDBcdTA0NDJcdTA0NGFcdTA0M2FfXHUwNDNmXHUwNDM1XHUwNDQyXHUwNDRhXHUwNDNhX1x1MDQ0MVx1MDQ0YVx1MDQzMVx1MDQzZVx1MDQ0Mlx1MDQzMCIuc3BsaXQo''@;'; put 'put ''Il8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA0M2RcdTA0MzVcdTA0MzRfXHUwNDNmXHUwNDNlXHUwNDNkX1x1MDQzMlx1MDQ0Mlx1MDQzZV9cdTA0NDFcdTA0NDBcdTA0NGZfXHUwNDQ3XHUwNDM1XHUwNDQyX1x1MDQzZlx1MDQzNVx1MDQ0Ml9cdTA0NDFcdTA0NGFcdTA0MzEiLnNwbGl0KCJfIiks''@;'; put 'put ''d2Vla2RheXNNaW46Ilx1MDQzZFx1MDQzNF9cdTA0M2ZcdTA0M2RfXHUwNDMyXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0NDJfXHUwNDNmXHUwNDQyX1x1MDQ0MVx1MDQzMSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiRC5NTS5Z''@;'; put 'put ''WVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDE0XHUwNDNkXHUwNDM1XHUwNDQxIFx1MDQzMl0gTFQiLG5leHREYXk6IltcdTA0MjNcdTA0NDJcdTA0NDBcdTA0''@;'; put 'put ''MzUgXHUwNDMyXSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDQzMl0gTFQiLGxhc3REYXk6IltcdTA0MTJcdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzAgXHUwNDMyXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOmNhc2UgMzpjYXNlIDY6cmV0dXJuIltc''@;'; put 'put ''dTA0MWNcdTA0MzhcdTA0M2RcdTA0MzBcdTA0M2JcdTA0MzBcdTA0NDJcdTA0MzBdIGRkZGQgW1x1MDQzMl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW1x1MDQxY1x1MDQzOFx1MDQzZFx1MDQzMFx1MDQzYlx1MDQzOFx1MDQ0Zl0gZGRkZCBbXHUwNDMyXSBMVCJ9''@;'; put 'put ''fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA0NDFcdTA0M2JcdTA0MzVcdTA0MzQgJXMiLHBhc3Q6Ilx1MDQzZlx1MDQ0MFx1MDQzNVx1MDQzNFx1MDQzOCAlcyIsczoiXHUwNDNkXHUwNDRmXHUwNDNhXHUwNDNlXHUwNDNiXHUwNDNhXHUwNDNlIFx1MDQ0MVx1MDQz''@;'; put 'put ''NVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQzOCIsc3M6IiVkIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQzOCIsbToiXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDMwIixtbToiJWQgXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUw''@;'; put 'put ''NDM4IixoOiJcdTA0NDdcdTA0MzBcdTA0NDEiLGhoOiIlZCBcdTA0NDdcdTA0MzBcdTA0NDFcdTA0MzAiLGQ6Ilx1MDQzNFx1MDQzNVx1MDQzZCIsZGQ6IiVkIFx1MDQzNFx1MDQzNVx1MDQzZFx1MDQzMCIsdzoiXHUwNDQxXHUwNDM1XHUwNDM0XHUwNDNjXHUwNDM4XHUwNDQ2XHUwNDMwIix3''@;'; put 'put ''dzoiJWQgXHUwNDQxXHUwNDM1XHUwNDM0XHUwNDNjXHUwNDM4XHUwNDQ2XHUwNDM4IixNOiJcdTA0M2NcdTA0MzVcdTA0NDFcdTA0MzVcdTA0NDYiLE1NOiIlZCBcdTA0M2NcdTA0MzVcdTA0NDFcdTA0MzVcdTA0NDZcdTA0MzAiLHk6Ilx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1''@;'; put 'put ''MDQzMCIseXk6IiVkIFx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQzOCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0tKFx1MDQzNVx1MDQzMnxcdTA0MzVcdTA0M2R8XHUwNDQyXHUwNDM4fFx1MDQzMlx1MDQzOHxcdTA0NDBcdTA0Mzh8XHUwNDNjXHUwNDM4KS8s''@;'; put 'put ''b3JkaW5hbDpmdW5jdGlvbihFKXt2YXIgRWU9RSUxMCxVPUUlMTAwO3JldHVybiAwPT09RT9FKyItXHUwNDM1XHUwNDMyIjowPT09VT9FKyItXHUwNDM1XHUwNDNkIjpVPjEwJiZVPDIwP0UrIi1cdTA0NDJcdTA0MzgiOjE9PT1FZT9FKyItXHUwNDMyXHUwNDM4IjoyPT09RWU/RSsiLVx1MDQ0''@;'; put 'put ''MFx1MDQzOCI6Nz09PUVlfHw4PT09RWU/RSsiLVx1MDQzY1x1MDQzOCI6RSsiLVx1MDQ0Mlx1MDQzOCJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDI4MDQyOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgiYm0i''@;'; put 'put ''LHttb250aHM6Ilphbnd1eWVrYWxvX0Zld3VydXlla2Fsb19NYXJpc2lrYWxvX0F3aXJpbGlrYWxvX01cdTAyNWJrYWxvX1p1d1x1MDI1Ym5rYWxvX1p1bHV5ZWthbG9fVXRpa2Fsb19TXHUwMjVidGFuYnVydWthbG9fXHUwMjU0a3V0XHUwMjU0YnVydWthbG9fTm93YW5idXJ1a2Fsb19EZXNh''@;'; put 'put ''bmJ1cnVrYWxvIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJaYW5fRmV3X01hcl9Bd2lfTVx1MDI1Yl9adXdfWnVsX1V0aV9TXHUwMjVidF9cdTAyNTRrdV9Ob3dfRGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJLYXJpX050XHUwMjViblx1MDI1Ym5fVGFyYXRhX0FyYWJhX0FsYW1pc2FfSnVt''@;'; put 'put ''YV9TaWJpcmkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiS2FyX050XHUwMjViX1Rhcl9BcmFfQWxhX0p1bV9TaWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkthX050X1RhX0FyX0FsX0p1X1NpIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06''@;'; put 'put ''c3MiLEw6IkREL01NL1lZWVkiLExMOiJNTU1NIFt0aWxlXSBEIFtzYW5dIFlZWVkiLExMTDoiTU1NTSBbdGlsZV0gRCBbc2FuXSBZWVlZIFtsXHUwMjViclx1MDI1Yl0gSEg6bW0iLExMTEw6ImRkZGQgTU1NTSBbdGlsZV0gRCBbc2FuXSBZWVlZIFtsXHUwMjViclx1MDI1Yl0gSEg6bW0ifSxj''@;'; put 'put ''YWxlbmRhcjp7c2FtZURheToiW0JpIGxcdTAyNWJyXHUwMjViXSBMVCIsbmV4dERheToiW1NpbmkgbFx1MDI1YnJcdTAyNWJdIExUIixuZXh0V2VlazoiZGRkZCBbZG9uIGxcdTAyNWJyXHUwMjViXSBMVCIsbGFzdERheToiW0t1bnUgbFx1MDI1YnJcdTAyNWJdIExUIixsYXN0V2VlazoiZGRk''@;'; put 'put ''ZCBbdFx1MDI1Ym1cdTAyNWJuZW4gbFx1MDI1YnJcdTAyNWJdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBrXHUwMjU0blx1MDI1NCIscGFzdDoiYSBiXHUwMjViICVzIGJcdTAyNTQiLHM6InNhbmdhIGRhbWEgZGFtYSIsc3M6InNla29uZGkgJWQiLG06Im1p''@;'; put 'put ''bml0aSBrZWxlbiIsbW06Im1pbml0aSAlZCIsaDoibFx1MDI1YnJcdTAyNWIga2VsZW4iLGhoOiJsXHUwMjViclx1MDI1YiAlZCIsZDoidGlsZSBrZWxlbiIsZGQ6InRpbGUgJWQiLE06ImthbG8ga2VsZW4iLE1NOiJrYWxvICVkIix5OiJzYW4ga2VsZW4iLHl5OiJzYW4gJWQifSx3ZWVrOntk''@;'; put 'put ''b3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw2NTkwMzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj17MToiXHUwOWU3IiwyOiJcdTA5ZTgiLDM6Ilx1MDllOSIsNDoiXHUwOWVhIiw1OiJcdTA5ZWIiLDY6Ilx1MDllYyIsNzoiXHUwOWVkIiw4OiJc''@;'; put 'put ''dTA5ZWUiLDk6Ilx1MDllZiIsMDoiXHUwOWU2In0sRT17Ilx1MDllNyI6IjEiLCJcdTA5ZTgiOiIyIiwiXHUwOWU5IjoiMyIsIlx1MDllYSI6IjQiLCJcdTA5ZWIiOiI1IiwiXHUwOWVjIjoiNiIsIlx1MDllZCI6IjciLCJcdTA5ZWUiOiI4IiwiXHUwOWVmIjoiOSIsIlx1MDllNiI6IjAifTtt''@;'; put 'put ''ZS5kZWZpbmVMb2NhbGUoImJuLWJkIix7bW9udGhzOiJcdTA5OWNcdTA5YmVcdTA5YThcdTA5YzFcdTA5ZGZcdTA5YmVcdTA5YjBcdTA5YmZfXHUwOWFiXHUwOWM3XHUwOWFjXHUwOWNkXHUwOWIwXHUwOWMxXHUwOWRmXHUwOWJlXHUwOWIwXHUwOWJmX1x1MDlhZVx1MDliZVx1MDliMFx1MDlj''@;'; put 'put ''ZFx1MDk5YV9cdTA5OGZcdTA5YWFcdTA5Y2RcdTA5YjBcdTA5YmZcdTA5YjJfXHUwOWFlXHUwOWM3X1x1MDk5Y1x1MDljMVx1MDlhOF9cdTA5OWNcdTA5YzFcdTA5YjJcdTA5YmVcdTA5ODdfXHUwOTg2XHUwOTk3XHUwOWI4XHUwOWNkXHUwOTlmX1x1MDliOFx1MDljN1x1MDlhYVx1MDljZFx1''@;'; put 'put ''MDk5Zlx1MDljN1x1MDlhZVx1MDljZFx1MDlhY1x1MDliMF9cdTA5ODVcdTA5OTVcdTA5Y2RcdTA5OWZcdTA5Y2JcdTA5YWNcdTA5YjBfXHUwOWE4XHUwOWFkXHUwOWM3XHUwOWFlXHUwOWNkXHUwOWFjXHUwOWIwX1x1MDlhMVx1MDliZlx1MDliOFx1MDljN1x1MDlhZVx1MDljZFx1MDlhY1x1''@;'; put 'put ''MDliMCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwOTljXHUwOWJlXHUwOWE4XHUwOWMxX1x1MDlhYlx1MDljN1x1MDlhY1x1MDljZFx1MDliMFx1MDljMV9cdTA5YWVcdTA5YmVcdTA5YjBcdTA5Y2RcdTA5OWFfXHUwOThmXHUwOWFhXHUwOWNkXHUwOWIwXHUwOWJmXHUwOWIyX1x1MDlh''@;'; put 'put ''ZVx1MDljN19cdTA5OWNcdTA5YzFcdTA5YThfXHUwOTljXHUwOWMxXHUwOWIyXHUwOWJlXHUwOTg3X1x1MDk4Nlx1MDk5N1x1MDliOFx1MDljZFx1MDk5Zl9cdTA5YjhcdTA5YzdcdTA5YWFcdTA5Y2RcdTA5OWZfXHUwOTg1XHUwOTk1XHUwOWNkXHUwOTlmXHUwOWNiX1x1MDlhOFx1MDlhZFx1''@;'; put 'put ''MDljN19cdTA5YTFcdTA5YmZcdTA5YjhcdTA5YzciLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDliMFx1MDlhY1x1MDliZlx1MDlhY1x1MDliZVx1MDliMF9cdTA5YjhcdTA5Y2JcdTA5YWVcdTA5YWNcdTA5YmVcdTA5YjBfXHUwOWFlXHUwOTk5XHUwOWNkXHUwOTk3XHUwOWIyXHUwOWFjXHUw''@;'; put 'put ''OWJlXHUwOWIwX1x1MDlhY1x1MDljMVx1MDlhN1x1MDlhY1x1MDliZVx1MDliMF9cdTA5YWNcdTA5YzNcdTA5YjlcdTA5YjhcdTA5Y2RcdTA5YWFcdTA5YTRcdTA5YmZcdTA5YWNcdTA5YmVcdTA5YjBfXHUwOWI2XHUwOWMxXHUwOTk1XHUwOWNkXHUwOWIwXHUwOWFjXHUwOWJlXHUwOWIwX1x1''@;'; put 'put ''MDliNlx1MDlhOFx1MDliZlx1MDlhY1x1MDliZVx1MDliMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA5YjBcdTA5YWNcdTA5YmZfXHUwOWI4XHUwOWNiXHUwOWFlX1x1MDlhZVx1MDk5OVx1MDljZFx1MDk5N1x1MDliMl9cdTA5YWNcdTA5YzFcdTA5YTdfXHUwOWFjXHUwOWMzXHUw''@;'; put 'put ''OWI5XHUwOWI4XHUwOWNkXHUwOWFhXHUwOWE0XHUwOWJmX1x1MDliNlx1MDljMVx1MDk5NVx1MDljZFx1MDliMF9cdTA5YjZcdTA5YThcdTA5YmYiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDliMFx1MDlhY1x1MDliZl9cdTA5YjhcdTA5Y2JcdTA5YWVfXHUwOWFlXHUwOTk5XHUwOWNk''@;'; put 'put ''XHUwOTk3XHUwOWIyX1x1MDlhY1x1MDljMVx1MDlhN19cdTA5YWNcdTA5YzNcdTA5YjlfXHUwOWI2XHUwOWMxXHUwOTk1XHUwOWNkXHUwOWIwX1x1MDliNlx1MDlhOFx1MDliZiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSBcdTA5YjhcdTA5YWVcdTA5ZGYiLExUUzoi''@;'; put 'put ''QSBoOm1tOnNzIFx1MDliOFx1MDlhZVx1MDlkZiIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBIGg6bW0gXHUwOWI4XHUwOWFlXHUwOWRmIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MDliOFx1MDlhZVx1MDlkZiJ9LGNhbGVu''@;'; put 'put ''ZGFyOntzYW1lRGF5OiJbXHUwOTg2XHUwOTljXSBMVCIsbmV4dERheToiW1x1MDk4Nlx1MDk5N1x1MDliZVx1MDlhZVx1MDljMFx1MDk5NVx1MDliZVx1MDliMl0gTFQiLG5leHRXZWVrOiJkZGRkLCBMVCIsbGFzdERheToiW1x1MDk5N1x1MDlhNFx1MDk5NVx1MDliZVx1MDliMl0gTFQiLGxh''@;'; put 'put ''c3RXZWVrOiJbXHUwOTk3XHUwOWE0XSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwOWFhXHUwOWIwXHUwOWM3IixwYXN0OiIlcyBcdTA5ODZcdTA5OTdcdTA5YzciLHM6Ilx1MDk5NVx1MDlkZlx1MDljN1x1MDk5NSBcdTA5YjhcdTA5YzdcdTA5''@;'; put 'put ''OTVcdTA5YzdcdTA5YThcdTA5Y2RcdTA5YTEiLHNzOiIlZCBcdTA5YjhcdTA5YzdcdTA5OTVcdTA5YzdcdTA5YThcdTA5Y2RcdTA5YTEiLG06Ilx1MDk4Zlx1MDk5NSBcdTA5YWVcdTA5YmZcdTA5YThcdTA5YmZcdTA5OWYiLG1tOiIlZCBcdTA5YWVcdTA5YmZcdTA5YThcdTA5YmZcdTA5OWYi''@;'; put 'put ''LGg6Ilx1MDk4Zlx1MDk5NSBcdTA5OThcdTA5YThcdTA5Y2RcdTA5OWZcdTA5YmUiLGhoOiIlZCBcdTA5OThcdTA5YThcdTA5Y2RcdTA5OWZcdTA5YmUiLGQ6Ilx1MDk4Zlx1MDk5NSBcdTA5YTZcdTA5YmZcdTA5YTgiLGRkOiIlZCBcdTA5YTZcdTA5YmZcdTA5YTgiLE06Ilx1MDk4Zlx1MDk5''@;'; put 'put ''NSBcdTA5YWVcdTA5YmVcdTA5YjgiLE1NOiIlZCBcdTA5YWVcdTA5YmVcdTA5YjgiLHk6Ilx1MDk4Zlx1MDk5NSBcdTA5YWNcdTA5OWJcdTA5YjAiLHl5OiIlZCBcdTA5YWNcdTA5OWJcdTA5YjAifSxwcmVwYXJzZTpmdW5jdGlvbihVKXtyZXR1cm4gVS5yZXBsYWNlKC9bXHUwOWU3XHUwOWU4''@;'; put 'put ''XHUwOWU5XHUwOWVhXHUwOWViXHUwOWVjXHUwOWVkXHUwOWVlXHUwOWVmXHUwOWU2XS9nLGZ1bmN0aW9uKFEpe3JldHVybiBFW1FdfSl9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oVSl7cmV0dXJuIFUucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihRKXtyZXR1cm4gQltRXX0pfSxtZXJpZGllbVBhcnNl''@;'; put 'put ''Oi9cdTA5YjBcdTA5YmVcdTA5YTR8XHUwOWFkXHUwOWNiXHUwOWIwfFx1MDliOFx1MDk5NVx1MDliZVx1MDliMnxcdTA5YTZcdTA5YzFcdTA5YWFcdTA5YzFcdTA5YjB8XHUwOWFjXHUwOWJmXHUwOTk1XHUwOWJlXHUwOWIyfFx1MDliOFx1MDlhOFx1MDljZFx1MDlhN1x1MDljZFx1MDlhZlx1''@;'; put 'put ''MDliZXxcdTA5YjBcdTA5YmVcdTA5YTQvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihVLFEpe3JldHVybiAxMj09PVUmJihVPTApLCJcdTA5YjBcdTA5YmVcdTA5YTQiPT09UT9VPDQ/VTpVKzEyOiJcdTA5YWRcdTA5Y2JcdTA5YjAiPT09UXx8Ilx1MDliOFx1MDk5NVx1MDliZVx1MDliMiI9PT1R''@;'; put 'put ''P1U6Ilx1MDlhNlx1MDljMVx1MDlhYVx1MDljMVx1MDliMCI9PT1RP1U+PTM/VTpVKzEyOiJcdTA5YWNcdTA5YmZcdTA5OTVcdTA5YmVcdTA5YjIiPT09UXx8Ilx1MDliOFx1MDlhOFx1MDljZFx1MDlhN1x1MDljZFx1MDlhZlx1MDliZSI9PT1RP1UrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5j''@;'; put 'put ''dGlvbihVLFEsail7cmV0dXJuIFU8ND8iXHUwOWIwXHUwOWJlXHUwOWE0IjpVPDY/Ilx1MDlhZFx1MDljYlx1MDliMCI6VTwxMj8iXHUwOWI4XHUwOTk1XHUwOWJlXHUwOWIyIjpVPDE1PyJcdTA5YTZcdTA5YzFcdTA5YWFcdTA5YzFcdTA5YjAiOlU8MTg/Ilx1MDlhY1x1MDliZlx1MDk5NVx1''@;'; put 'put ''MDliZVx1MDliMiI6VTwyMD8iXHUwOWI4XHUwOWE4XHUwOWNkXHUwOWE3XHUwOWNkXHUwOWFmXHUwOWJlIjoiXHUwOWIwXHUwOWJlXHUwOWE0In0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KEwoMTU0MzkpKX0sNTk2MjA6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmlj''@;'; put 'put ''dCI7dmFyIEI9ezE6Ilx1MDllNyIsMjoiXHUwOWU4IiwzOiJcdTA5ZTkiLDQ6Ilx1MDllYSIsNToiXHUwOWViIiw2OiJcdTA5ZWMiLDc6Ilx1MDllZCIsODoiXHUwOWVlIiw5OiJcdTA5ZWYiLDA6Ilx1MDllNiJ9LEU9eyJcdTA5ZTciOiIxIiwiXHUwOWU4IjoiMiIsIlx1MDllOSI6IjMiLCJc''@;'; put 'put ''dTA5ZWEiOiI0IiwiXHUwOWViIjoiNSIsIlx1MDllYyI6IjYiLCJcdTA5ZWQiOiI3IiwiXHUwOWVlIjoiOCIsIlx1MDllZiI6IjkiLCJcdTA5ZTYiOiIwIn07bWUuZGVmaW5lTG9jYWxlKCJibiIse21vbnRoczoiXHUwOTljXHUwOWJlXHUwOWE4XHUwOWMxXHUwOWRmXHUwOWJlXHUwOWIwXHUw''@;'; put 'put ''OWJmX1x1MDlhYlx1MDljN1x1MDlhY1x1MDljZFx1MDliMFx1MDljMVx1MDlkZlx1MDliZVx1MDliMFx1MDliZl9cdTA5YWVcdTA5YmVcdTA5YjBcdTA5Y2RcdTA5OWFfXHUwOThmXHUwOWFhXHUwOWNkXHUwOWIwXHUwOWJmXHUwOWIyX1x1MDlhZVx1MDljN19cdTA5OWNcdTA5YzFcdTA5YThf''@;'; put 'put ''XHUwOTljXHUwOWMxXHUwOWIyXHUwOWJlXHUwOTg3X1x1MDk4Nlx1MDk5N1x1MDliOFx1MDljZFx1MDk5Zl9cdTA5YjhcdTA5YzdcdTA5YWFcdTA5Y2RcdTA5OWZcdTA5YzdcdTA5YWVcdTA5Y2RcdTA5YWNcdTA5YjBfXHUwOTg1XHUwOTk1XHUwOWNkXHUwOTlmXHUwOWNiXHUwOWFjXHUwOWIw''@;'; put 'put ''X1x1MDlhOFx1MDlhZFx1MDljN1x1MDlhZVx1MDljZFx1MDlhY1x1MDliMF9cdTA5YTFcdTA5YmZcdTA5YjhcdTA5YzdcdTA5YWVcdTA5Y2RcdTA5YWNcdTA5YjAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDk5Y1x1MDliZVx1MDlhOFx1MDljMV9cdTA5YWJcdTA5YzdcdTA5YWNcdTA5''@;'; put 'put ''Y2RcdTA5YjBcdTA5YzFfXHUwOWFlXHUwOWJlXHUwOWIwXHUwOWNkXHUwOTlhX1x1MDk4Zlx1MDlhYVx1MDljZFx1MDliMFx1MDliZlx1MDliMl9cdTA5YWVcdTA5YzdfXHUwOTljXHUwOWMxXHUwOWE4X1x1MDk5Y1x1MDljMVx1MDliMlx1MDliZVx1MDk4N19cdTA5ODZcdTA5OTdcdTA5Yjhc''@;'; put 'put ''dTA5Y2RcdTA5OWZfXHUwOWI4XHUwOWM3XHUwOWFhXHUwOWNkXHUwOTlmX1x1MDk4NVx1MDk5NVx1MDljZFx1MDk5Zlx1MDljYl9cdTA5YThcdTA5YWRcdTA5YzdfXHUwOWExXHUwOWJmXHUwOWI4XHUwOWM3Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA5YjBcdTA5YWNcdTA5YmZcdTA5YWNc''@;'; put 'put ''dTA5YmVcdTA5YjBfXHUwOWI4XHUwOWNiXHUwOWFlXHUwOWFjXHUwOWJlXHUwOWIwX1x1MDlhZVx1MDk5OVx1MDljZFx1MDk5N1x1MDliMlx1MDlhY1x1MDliZVx1MDliMF9cdTA5YWNcdTA5YzFcdTA5YTdcdTA5YWNcdTA5YmVcdTA5YjBfXHUwOWFjXHUwOWMzXHUwOWI5XHUwOWI4XHUwOWNk''@;'; put 'put ''XHUwOWFhXHUwOWE0XHUwOWJmXHUwOWFjXHUwOWJlXHUwOWIwX1x1MDliNlx1MDljMVx1MDk5NVx1MDljZFx1MDliMFx1MDlhY1x1MDliZVx1MDliMF9cdTA5YjZcdTA5YThcdTA5YmZcdTA5YWNcdTA5YmVcdTA5YjAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwOWIwXHUwOWFjXHUw''@;'; put 'put ''OWJmX1x1MDliOFx1MDljYlx1MDlhZV9cdTA5YWVcdTA5OTlcdTA5Y2RcdTA5OTdcdTA5YjJfXHUwOWFjXHUwOWMxXHUwOWE3X1x1MDlhY1x1MDljM1x1MDliOVx1MDliOFx1MDljZFx1MDlhYVx1MDlhNFx1MDliZl9cdTA5YjZcdTA5YzFcdTA5OTVcdTA5Y2RcdTA5YjBfXHUwOWI2XHUwOWE4''@;'; put 'put ''XHUwOWJmIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA5YjBcdTA5YWNcdTA5YmZfXHUwOWI4XHUwOWNiXHUwOWFlX1x1MDlhZVx1MDk5OVx1MDljZFx1MDk5N1x1MDliMl9cdTA5YWNcdTA5YzFcdTA5YTdfXHUwOWFjXHUwOWMzXHUwOWI5X1x1MDliNlx1MDljMVx1MDk5NVx1MDljZFx1''@;'; put 'put ''MDliMF9cdTA5YjZcdTA5YThcdTA5YmYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gXHUwOWI4XHUwOWFlXHUwOWRmIixMVFM6IkEgaDptbTpzcyBcdTA5YjhcdTA5YWVcdTA5ZGYiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZ''@;'; put 'put ''WSwgQSBoOm1tIFx1MDliOFx1MDlhZVx1MDlkZiIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSBcdTA5YjhcdTA5YWVcdTA5ZGYifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDk4Nlx1MDk5Y10gTFQiLG5leHREYXk6IltcdTA5ODZcdTA5OTdcdTA5YmVcdTA5YWVcdTA5YzBcdTA5''@;'; put 'put ''OTVcdTA5YmVcdTA5YjJdIExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IltcdTA5OTdcdTA5YTRcdTA5OTVcdTA5YmVcdTA5YjJdIExUIixsYXN0V2VlazoiW1x1MDk5N1x1MDlhNF0gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MDlh''@;'; put 'put ''YVx1MDliMFx1MDljNyIscGFzdDoiJXMgXHUwOTg2XHUwOTk3XHUwOWM3IixzOiJcdTA5OTVcdTA5ZGZcdTA5YzdcdTA5OTUgXHUwOWI4XHUwOWM3XHUwOTk1XHUwOWM3XHUwOWE4XHUwOWNkXHUwOWExIixzczoiJWQgXHUwOWI4XHUwOWM3XHUwOTk1XHUwOWM3XHUwOWE4XHUwOWNkXHUwOWEx''@;'; put 'put ''IixtOiJcdTA5OGZcdTA5OTUgXHUwOWFlXHUwOWJmXHUwOWE4XHUwOWJmXHUwOTlmIixtbToiJWQgXHUwOWFlXHUwOWJmXHUwOWE4XHUwOWJmXHUwOTlmIixoOiJcdTA5OGZcdTA5OTUgXHUwOTk4XHUwOWE4XHUwOWNkXHUwOTlmXHUwOWJlIixoaDoiJWQgXHUwOTk4XHUwOWE4XHUwOWNkXHUw''@;'; put 'put ''OTlmXHUwOWJlIixkOiJcdTA5OGZcdTA5OTUgXHUwOWE2XHUwOWJmXHUwOWE4IixkZDoiJWQgXHUwOWE2XHUwOWJmXHUwOWE4IixNOiJcdTA5OGZcdTA5OTUgXHUwOWFlXHUwOWJlXHUwOWI4IixNTToiJWQgXHUwOWFlXHUwOWJlXHUwOWI4Iix5OiJcdTA5OGZcdTA5OTUgXHUwOWFjXHUwOTli''@;'; put 'put ''XHUwOWIwIix5eToiJWQgXHUwOWFjXHUwOTliXHUwOWIwIn0scHJlcGFyc2U6ZnVuY3Rpb24oVSl7cmV0dXJuIFUucmVwbGFjZSgvW1x1MDllN1x1MDllOFx1MDllOVx1MDllYVx1MDllYlx1MDllY1x1MDllZFx1MDllZVx1MDllZlx1MDllNl0vZyxmdW5jdGlvbihRKXtyZXR1cm4gRVtRXX0p''@;'; put 'put ''fSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKFUpe3JldHVybiBVLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oUSl7cmV0dXJuIEJbUV19KX0sbWVyaWRpZW1QYXJzZTovXHUwOWIwXHUwOWJlXHUwOWE0fFx1MDliOFx1MDk5NVx1MDliZVx1MDliMnxcdTA5YTZcdTA5YzFcdTA5YWFcdTA5YzFcdTA5YjB8''@;'; put 'put ''XHUwOWFjXHUwOWJmXHUwOTk1XHUwOWJlXHUwOWIyfFx1MDliMFx1MDliZVx1MDlhNC8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKFUsUSl7cmV0dXJuIDEyPT09VSYmKFU9MCksIlx1MDliMFx1MDliZVx1MDlhNCI9PT1RJiZVPj00fHwiXHUwOWE2XHUwOWMxXHUwOWFhXHUwOWMxXHUwOWIwIj09''@;'; put 'put ''PVEmJlU8NXx8Ilx1MDlhY1x1MDliZlx1MDk5NVx1MDliZVx1MDliMiI9PT1RP1UrMTI6VX0sbWVyaWRpZW06ZnVuY3Rpb24oVSxRLGope3JldHVybiBVPDQ/Ilx1MDliMFx1MDliZVx1MDlhNCI6VTwxMD8iXHUwOWI4XHUwOTk1XHUwOWJlXHUwOWIyIjpVPDE3PyJcdTA5YTZcdTA5YzFcdTA5''@;'; put 'put ''YWFcdTA5YzFcdTA5YjAiOlU8MjA/Ilx1MDlhY1x1MDliZlx1MDk5NVx1MDliZVx1MDliMiI6Ilx1MDliMFx1MDliZVx1MDlhNCJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShMKDE1NDM5KSl9LDY5NjQ1OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO3ZhciBC''@;'; put 'put ''PXsxOiJcdTBmMjEiLDI6Ilx1MGYyMiIsMzoiXHUwZjIzIiw0OiJcdTBmMjQiLDU6Ilx1MGYyNSIsNjoiXHUwZjI2Iiw3OiJcdTBmMjciLDg6Ilx1MGYyOCIsOToiXHUwZjI5IiwwOiJcdTBmMjAifSxFPXsiXHUwZjIxIjoiMSIsIlx1MGYyMiI6IjIiLCJcdTBmMjMiOiIzIiwiXHUwZjI0Ijoi''@;'; put 'put ''NCIsIlx1MGYyNSI6IjUiLCJcdTBmMjYiOiI2IiwiXHUwZjI3IjoiNyIsIlx1MGYyOCI6IjgiLCJcdTBmMjkiOiI5IiwiXHUwZjIwIjoiMCJ9O21lLmRlZmluZUxvY2FsZSgiYm8iLHttb250aHM6Ilx1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY1MVx1MGY0NFx1MGYwYlx1MGY1''@;'; put 'put ''NFx1MGY3Y19cdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNDJcdTBmNDlcdTBmNzJcdTBmNjZcdTBmMGJcdTBmNTRfXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiXHUwZjQyXHUwZjY2XHUwZjc0XHUwZjU4XHUwZjBiXHUwZjU0X1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1''@;'; put 'put ''Nlx1MGYwYlx1MGY1Nlx1MGY1ZVx1MGY3Mlx1MGYwYlx1MGY1NF9cdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNjNcdTBmOTRcdTBmMGJcdTBmNTRfXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiXHUwZjUxXHUwZmIyXHUwZjc0XHUwZjQyXHUwZjBiXHUwZjU0X1x1MGY1''@;'; put 'put ''Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY1Nlx1MGY1MVx1MGY3NFx1MGY1M1x1MGYwYlx1MGY1NF9cdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNTZcdTBmNjJcdTBmOTJcdTBmYjFcdTBmNTFcdTBmMGJcdTBmNTRfXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBi''@;'; put 'put ''XHUwZjUxXHUwZjQyXHUwZjc0XHUwZjBiXHUwZjU0X1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY1Nlx1MGY0NVx1MGY3NFx1MGYwYlx1MGY1NF9cdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNTZcdTBmNDVcdTBmNzRcdTBmMGJcdTBmNDJcdTBmNDVcdTBmNzJc''@;'; put 'put ''dTBmNDJcdTBmMGJcdTBmNTRfXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiXHUwZjU2XHUwZjQ1XHUwZjc0XHUwZjBiXHUwZjQyXHUwZjQ5XHUwZjcyXHUwZjY2XHUwZjBiXHUwZjU0Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTBmNWZcdTBmYjNcdTBmMGIxX1x1MGY1Zlx1MGZi''@;'; put 'put ''M1x1MGYwYjJfXHUwZjVmXHUwZmIzXHUwZjBiM19cdTBmNWZcdTBmYjNcdTBmMGI0X1x1MGY1Zlx1MGZiM1x1MGYwYjVfXHUwZjVmXHUwZmIzXHUwZjBiNl9cdTBmNWZcdTBmYjNcdTBmMGI3X1x1MGY1Zlx1MGZiM1x1MGYwYjhfXHUwZjVmXHUwZmIzXHUwZjBiOV9cdTBmNWZcdTBmYjNcdTBm''@;'; put 'put ''MGIxMF9cdTBmNWZcdTBmYjNcdTBmMGIxMV9cdTBmNWZcdTBmYjNcdTBmMGIxMiIuc3BsaXQoIl8iKSxtb250aHNTaG9ydFJlZ2V4Oi9eKFx1MGY1Zlx1MGZiM1x1MGYwYlxkezEsMn0pLyxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJcdTBmNDJcdTBmNWZcdTBmNjBcdTBmMGJcdTBm''@;'; put 'put ''NDlcdTBmNzJcdTBmMGJcdTBmNThcdTBmMGJfXHUwZjQyXHUwZjVmXHUwZjYwXHUwZjBiXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiX1x1MGY0Mlx1MGY1Zlx1MGY2MFx1MGYwYlx1MGY1OFx1MGY3Mlx1MGY0Mlx1MGYwYlx1MGY1MVx1MGY1OFx1MGY2Mlx1MGYwYl9cdTBmNDJcdTBm''@;'; put 'put ''NWZcdTBmNjBcdTBmMGJcdTBmNjNcdTBmYjdcdTBmNDJcdTBmMGJcdTBmNTRcdTBmMGJfXHUwZjQyXHUwZjVmXHUwZjYwXHUwZjBiXHUwZjU1XHUwZjc0XHUwZjYyXHUwZjBiXHUwZjU2XHUwZjc0X1x1MGY0Mlx1MGY1Zlx1MGY2MFx1MGYwYlx1MGY1NFx1MGYwYlx1MGY2Nlx1MGY0NFx1MGY2''@;'; put 'put ''Nlx1MGYwYl9cdTBmNDJcdTBmNWZcdTBmNjBcdTBmMGJcdTBmNjZcdTBmYTRcdTBmN2FcdTBmNTNcdTBmMGJcdTBmNTRcdTBmMGIiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwZjQ5XHUwZjcyXHUwZjBiXHUwZjU4XHUwZjBiX1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYl9c''@;'; put 'put ''dTBmNThcdTBmNzJcdTBmNDJcdTBmMGJcdTBmNTFcdTBmNThcdTBmNjJcdTBmMGJfXHUwZjYzXHUwZmI3XHUwZjQyXHUwZjBiXHUwZjU0XHUwZjBiX1x1MGY1NVx1MGY3NFx1MGY2Mlx1MGYwYlx1MGY1Nlx1MGY3NF9cdTBmNTRcdTBmMGJcdTBmNjZcdTBmNDRcdTBmNjZcdTBmMGJfXHUwZjY2''@;'; put 'put ''XHUwZmE0XHUwZjdhXHUwZjUzXHUwZjBiXHUwZjU0XHUwZjBiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBmNDlcdTBmNzJfXHUwZjVmXHUwZmIzX1x1MGY1OFx1MGY3Mlx1MGY0Ml9cdTBmNjNcdTBmYjdcdTBmNDJfXHUwZjU1XHUwZjc0XHUwZjYyX1x1MGY2Nlx1MGY0NFx1MGY2Nl9c''@;'; put 'put ''dTBmNjZcdTBmYTRcdTBmN2FcdTBmNTMiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0iLExUUzoiQSBoOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVksIEEgaDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEg''@;'; put 'put ''aDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwZjUxXHUwZjcyXHUwZjBiXHUwZjYyXHUwZjcyXHUwZjQ0XSBMVCIsbmV4dERheToiW1x1MGY2Nlx1MGY0NFx1MGYwYlx1MGY0OVx1MGY3Mlx1MGY1M10gTFQiLG5leHRXZWVrOiJbXHUwZjU2XHUwZjUxXHUwZjc0XHUwZjUzXHUwZjBiXHUw''@;'; put 'put ''ZjU1XHUwZmIyXHUwZjQyXHUwZjBiXHUwZjYyXHUwZjk3XHUwZjdhXHUwZjY2XHUwZjBiXHUwZjU4XSwgTFQiLGxhc3REYXk6IltcdTBmNDFcdTBmMGJcdTBmNjZcdTBmNDRdIExUIixsYXN0V2VlazoiW1x1MGY1Nlx1MGY1MVx1MGY3NFx1MGY1M1x1MGYwYlx1MGY1NVx1MGZiMlx1MGY0Mlx1''@;'; put 'put ''MGYwYlx1MGY1OFx1MGY1MFx1MGY2MFx1MGYwYlx1MGY1OF0gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MGY2M1x1MGYwYiIscGFzdDoiJXMgXHUwZjY2XHUwZjk0XHUwZjUzXHUwZjBiXHUwZjYzIixzOiJcdTBmNjNcdTBmNThcdTBmMGJcdTBm''@;'; put 'put ''NjZcdTBmNDQiLHNzOiIlZCBcdTBmNjZcdTBmOTBcdTBmNjJcdTBmMGJcdTBmNDZcdTBmMGQiLG06Ilx1MGY2Nlx1MGY5MFx1MGY2Mlx1MGYwYlx1MGY1OFx1MGYwYlx1MGY0Mlx1MGY0NVx1MGY3Mlx1MGY0MiIsbW06IiVkIFx1MGY2Nlx1MGY5MFx1MGY2Mlx1MGYwYlx1MGY1OCIsaDoiXHUw''@;'; put 'put ''ZjQ2XHUwZjc0XHUwZjBiXHUwZjVhXHUwZjdjXHUwZjUxXHUwZjBiXHUwZjQyXHUwZjQ1XHUwZjcyXHUwZjQyIixoaDoiJWQgXHUwZjQ2XHUwZjc0XHUwZjBiXHUwZjVhXHUwZjdjXHUwZjUxIixkOiJcdTBmNDlcdTBmNzJcdTBmNTNcdTBmMGJcdTBmNDJcdTBmNDVcdTBmNzJcdTBmNDIiLGRk''@;'; put 'put ''OiIlZCBcdTBmNDlcdTBmNzJcdTBmNTNcdTBmMGIiLE06Ilx1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY0Mlx1MGY0NVx1MGY3Mlx1MGY0MiIsTU06IiVkIFx1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1NiIseToiXHUwZjYzXHUwZjdjXHUwZjBiXHUwZjQyXHUwZjQ1XHUwZjcyXHUw''@;'; put 'put ''ZjQyIix5eToiJWQgXHUwZjYzXHUwZjdjIn0scHJlcGFyc2U6ZnVuY3Rpb24oVSl7cmV0dXJuIFUucmVwbGFjZSgvW1x1MGYyMVx1MGYyMlx1MGYyM1x1MGYyNFx1MGYyNVx1MGYyNlx1MGYyN1x1MGYyOFx1MGYyOVx1MGYyMF0vZyxmdW5jdGlvbihRKXtyZXR1cm4gRVtRXX0pfSxwb3N0Zm9y''@;'; put 'put ''bWF0OmZ1bmN0aW9uKFUpe3JldHVybiBVLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oUSl7cmV0dXJuIEJbUV19KX0sbWVyaWRpZW1QYXJzZTovXHUwZjU4XHUwZjVhXHUwZjUzXHUwZjBiXHUwZjU4XHUwZjdjfFx1MGY1ZVx1MGY3Y1x1MGY0Mlx1MGY2Nlx1MGYwYlx1MGY0MFx1MGY2NnxcdTBm''@;'; put 'put ''NDlcdTBmNzJcdTBmNTNcdTBmMGJcdTBmNDJcdTBmNzRcdTBmNDR8XHUwZjUxXHUwZjQyXHUwZjdjXHUwZjQ0XHUwZjBiXHUwZjUxXHUwZjQyfFx1MGY1OFx1MGY1YVx1MGY1M1x1MGYwYlx1MGY1OFx1MGY3Yy8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKFUsUSl7cmV0dXJuIDEyPT09VSYmKFU9''@;'; put 'put ''MCksIlx1MGY1OFx1MGY1YVx1MGY1M1x1MGYwYlx1MGY1OFx1MGY3YyI9PT1RJiZVPj00fHwiXHUwZjQ5XHUwZjcyXHUwZjUzXHUwZjBiXHUwZjQyXHUwZjc0XHUwZjQ0Ij09PVEmJlU8NXx8Ilx1MGY1MVx1MGY0Mlx1MGY3Y1x1MGY0NFx1MGYwYlx1MGY1MVx1MGY0MiI9PT1RP1UrMTI6VX0s''@;'; put 'put ''bWVyaWRpZW06ZnVuY3Rpb24oVSxRLGope3JldHVybiBVPDQ/Ilx1MGY1OFx1MGY1YVx1MGY1M1x1MGYwYlx1MGY1OFx1MGY3YyI6VTwxMD8iXHUwZjVlXHUwZjdjXHUwZjQyXHUwZjY2XHUwZjBiXHUwZjQwXHUwZjY2IjpVPDE3PyJcdTBmNDlcdTBmNzJcdTBmNTNcdTBmMGJcdTBmNDJcdTBm''@;'; put 'put ''NzRcdTBmNDQiOlU8MjA/Ilx1MGY1MVx1MGY0Mlx1MGY3Y1x1MGY0NFx1MGYwYlx1MGY1MVx1MGY0MiI6Ilx1MGY1OFx1MGY1YVx1MGY1M1x1MGYwYlx1MGY1OFx1MGY3YyJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShMKDE1NDM5KSl9LDQ1MDIwOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlv''@;'; put 'put ''bihtZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEIoSixzZSxvZSl7cmV0dXJuIEorIiAiK2Z1bmN0aW9uIFUoSixzZSl7cmV0dXJuIDI9PT1zZT9mdW5jdGlvbiBRKEope3ZhciBzZT17bToidiIsYjoidiIsZDoieiJ9O3JldHVybiB2b2lkIDA9PT1zZVtKLmNoYXJBdCgwKV0/SjpzZVtKLmNo''@;'; put 'put ''YXJBdCgwKV0rSi5zdWJzdHJpbmcoMSl9KEopOkp9KHttbToibXVudXRlbm4iLE1NOiJtaXoiLGRkOiJkZXZlemgifVtvZV0sSil9ZnVuY3Rpb24gRWUoSil7cmV0dXJuIEo+OT9FZShKJTEwKTpKfXZhciBqPVsvXmdlbi9pLC9eY1tcdTAyYmNcJ11od2UvaSwvXm1ldS9pLC9eZWJyL2ksL15t''@;'; put 'put ''YWUvaSwvXihtZXp8ZXZlKS9pLC9eZ291L2ksL15lb3MvaSwvXmd3ZS9pLC9eaGVyL2ksL15kdS9pLC9ea2VyL2ldLHJlPS9eKGdlbnZlcnxjW1x1MDJiY1wnXWh3ZXZyZXJ8bWV1cnpofGVicmVsfG1hZXxtZXpoZXZlbnxnb3VlcmV8ZW9zdHxnd2VuZ29sb3xoZXJlfGR1fGtlcnp1fGdlbnxj''@;'; put 'put ''W1x1MDJiY1wnXWh3ZXxtZXV8ZWJyfG1hZXxldmV8Z291fGVvc3xnd2V8aGVyfGR1fGtlcikvaSx0ZT1bL15TdS9pLC9eTHUvaSwvXk1lKFtecl18JCkvaSwvXk1lci9pLC9eWWEvaSwvXkd3L2ksL15TYS9pXTttZS5kZWZpbmVMb2NhbGUoImJyIix7bW9udGhzOiJHZW52ZXJfQ1x1MDJiY2h3''@;'; put 'put ''ZXZyZXJfTWV1cnpoX0VicmVsX01hZV9NZXpoZXZlbl9Hb3VlcmVfRW9zdF9Hd2VuZ29sb19IZXJlX0R1X0tlcnp1Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJHZW5fQ1x1MDJiY2h3ZV9NZXVfRWJyX01hZV9FdmVfR291X0Vvc19Hd2VfSGVyX0R1X0tlciIuc3BsaXQoIl8iKSx3ZWVrZGF5''@;'; put 'put ''czoiU3VsX0x1bl9NZXVyemhfTWVyY1x1MDJiY2hlcl9ZYW91X0d3ZW5lcl9TYWRvcm4iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VsX0x1bl9NZXVfTWVyX1lhb19Hd2VfU2FkIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9MdV9NZV9NZXJfWWFfR3dfU2EiLnNwbGl0KCJfIiks''@;'; put 'put ''d2Vla2RheXNQYXJzZTp0ZSxmdWxsV2Vla2RheXNQYXJzZTpbL15zdWwvaSwvXmx1bi9pLC9ebWV1cnpoL2ksL15tZXJjW1x1MDJiY1wnXWhlci9pLC9eeWFvdS9pLC9eZ3dlbmVyL2ksL15zYWRvcm4vaV0sc2hvcnRXZWVrZGF5c1BhcnNlOlsvXlN1bC9pLC9eTHVuL2ksL15NZXUvaSwvXk1l''@;'; put 'put ''ci9pLC9eWWFvL2ksL15Hd2UvaSwvXlNhZC9pXSxtaW5XZWVrZGF5c1BhcnNlOnRlLG1vbnRoc1JlZ2V4OnJlLG1vbnRoc1Nob3J0UmVnZXg6cmUsbW9udGhzU3RyaWN0UmVnZXg6L14oZ2VudmVyfGNbXHUwMmJjXCddaHdldnJlcnxtZXVyemh8ZWJyZWx8bWFlfG1lemhldmVufGdvdWVyZXxl''@;'; put 'put ''b3N0fGd3ZW5nb2xvfGhlcmV8ZHV8a2VyenUpL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXihnZW58Y1tcdTAyYmNcJ11od2V8bWV1fGVicnxtYWV8ZXZlfGdvdXxlb3N8Z3dlfGhlcnxkdXxrZXIpL2ksbW9udGhzUGFyc2U6aixsb25nTW9udGhzUGFyc2U6aixzaG9ydE1vbnRoc1BhcnNl''@;'; put 'put ''OmosbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgW2Egdml6XSBNTU1NIFlZWVkiLExMTDoiRCBbYSB2aXpdIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBbYSB2aXpdIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFy''@;'; put 'put ''OntzYW1lRGF5OiJbSGl6aXYgZGFdIExUIixuZXh0RGF5OiJbV2FyY1x1MDJiY2hvYXpoIGRhXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2RhXSBMVCIsbGFzdERheToiW0RlY1x1MDJiY2ggZGFdIExUIixsYXN0V2VlazoiZGRkZCBbcGFzZXQgZGFdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZl''@;'; put 'put ''VGltZTp7ZnV0dXJlOiJhLWJlbm4gJXMiLHBhc3Q6IiVzIFx1MDJiY3pvIixzOiJ1biBuZWJldWQgc2Vnb25kZW5ub1x4ZjkiLHNzOiIlZCBlaWxlbm4iLG06InVyIHZ1bnV0ZW5uIixtbTpCLGg6InVuIGV1ciIsaGg6IiVkIGV1ciIsZDoidW4gZGV2ZXpoIixkZDpCLE06InVyIG1peiIsTU06''@;'; put 'put ''Qix5OiJ1ciBibG9heiIseXk6ZnVuY3Rpb24gRShKKXtzd2l0Y2goRWUoSikpe2Nhc2UgMTpjYXNlIDM6Y2FzZSA0OmNhc2UgNTpjYXNlIDk6cmV0dXJuIEorIiBibG9heiI7ZGVmYXVsdDpyZXR1cm4gSisiIHZsb2F6In19fSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGFceGYx''@;'; put 'put ''fHZldCkvLG9yZGluYWw6ZnVuY3Rpb24oSil7cmV0dXJuIEorKDE9PT1KPyJhXHhmMSI6InZldCIpfSx3ZWVrOntkb3c6MSxkb3k6NH0sbWVyaWRpZW1QYXJzZTovYS5tLnxnLm0uLyxpc1BNOmZ1bmN0aW9uKEope3JldHVybiJnLm0uIj09PUp9LG1lcmlkaWVtOmZ1bmN0aW9uKEosc2Usb2Up''@;'; put 'put ''e3JldHVybiBKPDEyPyJhLm0uIjoiZy5tLiJ9fSl9KEwoMTU0MzkpKX0sNjQ3OTI6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gQihFZSxVLFEpe3ZhciBqPUVlKyIgIjtzd2l0Y2goUSl7Y2FzZSJzcyI6cmV0dXJuIGorKDE9PT1FZT8ic2Vr''@;'; put 'put ''dW5kYSI6Mj09PUVlfHwzPT09RWV8fDQ9PT1FZT8ic2VrdW5kZSI6InNla3VuZGkiKTtjYXNlIm0iOnJldHVybiBVPyJqZWRuYSBtaW51dGEiOiJqZWRuZSBtaW51dGUiO2Nhc2UibW0iOnJldHVybiBqKygxPT09RWU/Im1pbnV0YSI6Mj09PUVlfHwzPT09RWV8fDQ9PT1FZT8ibWludXRlIjoi''@;'; put 'put ''bWludXRhIik7Y2FzZSJoIjpyZXR1cm4gVT8iamVkYW4gc2F0IjoiamVkbm9nIHNhdGEiO2Nhc2UiaGgiOnJldHVybiBqKygxPT09RWU/InNhdCI6Mj09PUVlfHwzPT09RWV8fDQ9PT1FZT8ic2F0YSI6InNhdGkiKTtjYXNlImRkIjpyZXR1cm4gaisoMT09PUVlPyJkYW4iOiJkYW5hIik7Y2Fz''@;'; put 'put ''ZSJNTSI6cmV0dXJuIGorKDE9PT1FZT8ibWplc2VjIjoyPT09RWV8fDM9PT1FZXx8ND09PUVlPyJtamVzZWNhIjoibWplc2VjaSIpO2Nhc2UieXkiOnJldHVybiBqKygxPT09RWU/ImdvZGluYSI6Mj09PUVlfHwzPT09RWV8fDQ9PT1FZT8iZ29kaW5lIjoiZ29kaW5hIil9fW1lLmRlZmluZUxv''@;'; put 'put ''Y2FsZSgiYnMiLHttb250aHM6ImphbnVhcl9mZWJydWFyX21hcnRfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmFyX29rdG9iYXJfbm92ZW1iYXJfZGVjZW1iYXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbi5fZmViLl9tYXIuX2Fwci5fbWFqLl9qdW4uX2p1bC5fYXVn''@;'; put 'put ''Ll9zZXAuX29rdC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Im5lZGplbGphX3BvbmVkamVsamFrX3V0b3Jha19zcmlqZWRhX1x1MDEwZGV0dnJ0YWtfcGV0YWtfc3Vib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lZC5fcG9uLl91''@;'; put 'put ''dG8uX3NyaS5fXHUwMTBkZXQuX3BldC5fc3ViLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdXRfc3JfXHUwMTBkZV9wZV9zdSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZ''@;'; put 'put ''WVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltkYW5hcyB1XSBMVCIsbmV4dERheToiW3N1dHJhIHVdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlz''@;'; put 'put ''LmRheSgpKXtjYXNlIDA6cmV0dXJuIlt1XSBbbmVkamVsanVdIFt1XSBMVCI7Y2FzZSAzOnJldHVybiJbdV0gW3NyaWplZHVdIFt1XSBMVCI7Y2FzZSA2OnJldHVybiJbdV0gW3N1Ym90dV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlt1XSBkZGRkIFt1XSBM''@;'; put 'put ''VCJ9fSxsYXN0RGF5OiJbanVcdTAxMGRlciB1XSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOmNhc2UgMzpyZXR1cm4iW3Byb1x1MDE2MWx1XSBkZGRkIFt1XSBMVCI7Y2FzZSA2OnJldHVybiJbcHJvXHUwMTYxbGVdIFtzdWJvdGVdIFt1XSBMVCI7''@;'; put 'put ''Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbcHJvXHUwMTYxbGldIGRkZGQgW3VdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiJwcmlqZSAlcyIsczoicGFyIHNla3VuZGkiLHNzOkIsbTpCLG1tOkIsaDpCLGhoOkIsZDoi''@;'; put 'put ''ZGFuIixkZDpCLE06Im1qZXNlYyIsTU06Qix5OiJnb2RpbnUiLHl5OkJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KX0oTCgxNTQzOSkpfSw0Nzk4MDpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1''@;'; put 'put ''c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoImNhIix7bW9udGhzOntzdGFuZGFsb25lOiJnZW5lcl9mZWJyZXJfbWFyXHhlN19hYnJpbF9tYWlnX2p1bnlfanVsaW9sX2Fnb3N0X3NldGVtYnJlX29jdHVicmVfbm92ZW1icmVfZGVzZW1icmUiLnNwbGl0KCJfIiksZm9ybWF0OiJkZSBnZW5l''@;'; put 'put ''cl9kZSBmZWJyZXJfZGUgbWFyXHhlN19kJ2FicmlsX2RlIG1haWdfZGUganVueV9kZSBqdWxpb2xfZCdhZ29zdF9kZSBzZXRlbWJyZV9kJ29jdHVicmVfZGUgbm92ZW1icmVfZGUgZGVzZW1icmUiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L0Rbb0RdPyhccykrTU1NTS99LG1vbnRoc1Nob3J0OiJn''@;'; put 'put ''ZW4uX2ZlYnIuX21hclx4ZTdfYWJyLl9tYWlnX2p1bnlfanVsLl9hZy5fc2V0Ll9vY3QuX25vdi5fZGVzLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkaXVtZW5nZV9kaWxsdW5zX2RpbWFydHNfZGltZWNyZXNfZGlqb3VzX2RpdmVuZHJlc19kaXNzYWJ0ZSIu''@;'; put 'put ''c3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkZy5fZGwuX2R0Ll9kYy5fZGouX2R2Ll9kcy4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRnX2RsX2R0X2RjX2RqX2R2X2RzIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoi''@;'; put 'put ''SDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBbZGVdIFlZWVkiLGxsOiJEIE1NTSBZWVlZIixMTEw6IkQgTU1NTSBbZGVdIFlZWVkgW2EgbGVzXSBIOm1tIixsbGw6IkQgTU1NIFlZWVksIEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFtkZV0gWVlZWSBbYSBsZXNdIEg6bW0iLGxs''@;'; put 'put ''bGw6ImRkZCBEIE1NTSBZWVlZLCBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2F2dWkgYSAiKygxIT09dGhpcy5ob3VycygpPyJsZXMiOiJsYSIpKyJdIExUIn0sbmV4dERheTpmdW5jdGlvbigpe3JldHVybiJbZGVtXHhlMCBhICIrKDEhPT10aGlzLmhvdXJz''@;'; put 'put ''KCk/ImxlcyI6ImxhIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlthaGlyIGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsi''@;'; put 'put ''XSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltlbF0gZGRkZCBbcGFzc2F0IGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImQnYXF1XHhlZCAlcyIscGFzdDoiZmEgJXMiLHM6InVucyBz''@;'; put 'put ''ZWdvbnMiLHNzOiIlZCBzZWdvbnMiLG06InVuIG1pbnV0IixtbToiJWQgbWludXRzIixoOiJ1bmEgaG9yYSIsaGg6IiVkIGhvcmVzIixkOiJ1biBkaWEiLGRkOiIlZCBkaWVzIixNOiJ1biBtZXMiLE1NOiIlZCBtZXNvcyIseToidW4gYW55Iix5eToiJWQgYW55cyJ9LGRheU9mTW9udGhPcmRp''@;'; put 'put ''bmFsUGFyc2U6L1xkezEsMn0ocnxufHR8XHhlOHxhKS8sb3JkaW5hbDpmdW5jdGlvbihFLEVlKXt2YXIgVT0xPT09RT8iciI6Mj09PUU/Im4iOjM9PT1FPyJyIjo0PT09RT8idCI6Ilx4ZTgiO3JldHVybigidyI9PT1FZXx8IlciPT09RWUpJiYoVT0iYSIpLEUrVX0sd2Vlazp7ZG93OjEsZG95''@;'; put 'put ''OjR9fSl9KEwoMTU0MzkpKX0sNDczMjI6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9e2Zvcm1hdDoibGVkZW5fXHhmYW5vcl9iXHUwMTU5ZXplbl9kdWJlbl9rdlx1MDExYnRlbl9cdTAxMGRlcnZlbl9cdTAxMGRlcnZlbmVjX3NycGVuX3pceGUx''@;'; put 'put ''XHUwMTU5XHhlZF9cdTAxNTlceGVkamVuX2xpc3RvcGFkX3Byb3NpbmVjIi5zcGxpdCgiXyIpLHN0YW5kYWxvbmU6ImxlZG5hX1x4ZmFub3JhX2JcdTAxNTllem5hX2R1Ym5hX2t2XHUwMTFidG5hX1x1MDEwZGVydm5hX1x1MDEwZGVydmVuY2Vfc3JwbmFfelx4ZTFcdTAxNTlceGVkX1x1MDE1''@;'; put 'put ''OVx4ZWRqbmFfbGlzdG9wYWR1X3Byb3NpbmNlIi5zcGxpdCgiXyIpfSxFPSJsZWRfXHhmYW5vX2JcdTAxNTllX2R1Yl9rdlx1MDExYl9cdTAxMGR2bl9cdTAxMGR2Y19zcnBfelx4ZTFcdTAxNTlfXHUwMTU5XHhlZGpfbGlzX3BybyIuc3BsaXQoIl8iKSxFZT1bL15sZWQvaSwvXlx4ZmFuby9p''@;'; put 'put ''LC9eYlx1MDE1OWUvaSwvXmR1Yi9pLC9ea3ZcdTAxMWIvaSwvXihcdTAxMGR2bnxcdTAxMGRlcnZlbiR8XHUwMTBkZXJ2bmEpL2ksL14oXHUwMTBkdmN8XHUwMTBkZXJ2ZW5lY3xcdTAxMGRlcnZlbmNlKS9pLC9ec3JwL2ksL156XHhlMVx1MDE1OS9pLC9eXHUwMTU5XHhlZGovaSwvXmxpcy9p''@;'; put 'put ''LC9ecHJvL2ldLFU9L14obGVkZW58XHhmYW5vcnxiXHUwMTU5ZXplbnxkdWJlbnxrdlx1MDExYnRlbnxcdTAxMGRlcnZlbmVjfFx1MDEwZGVydmVuY2V8XHUwMTBkZXJ2ZW58XHUwMTBkZXJ2bmF8c3JwZW58elx4ZTFcdTAxNTlceGVkfFx1MDE1OVx4ZWRqZW58bGlzdG9wYWR8cHJvc2luZWN8''@;'; put 'put ''bGVkfFx4ZmFub3xiXHUwMTU5ZXxkdWJ8a3ZcdTAxMWJ8XHUwMTBkdm58XHUwMTBkdmN8c3JwfHpceGUxXHUwMTU5fFx1MDE1OVx4ZWRqfGxpc3xwcm8pL2k7ZnVuY3Rpb24gUShhZSl7cmV0dXJuIGFlPjEmJmFlPDUmJjEhPX5+KGFlLzEwKX1mdW5jdGlvbiBqKGFlLFksVyxOKXt2YXIgdGU9''@;'; put 'put ''YWUrIiAiO3N3aXRjaChXKXtjYXNlInMiOnJldHVybiBZfHxOPyJwXHhlMXIgc2VrdW5kIjoicFx4ZTFyIHNla3VuZGFtaSI7Y2FzZSJzcyI6cmV0dXJuIFl8fE4/dGUrKFEoYWUpPyJzZWt1bmR5Ijoic2VrdW5kIik6dGUrInNla3VuZGFtaSI7Y2FzZSJtIjpyZXR1cm4gWT8ibWludXRhIjpO''@;'; put 'put ''PyJtaW51dHUiOiJtaW51dG91IjtjYXNlIm1tIjpyZXR1cm4gWXx8Tj90ZSsoUShhZSk/Im1pbnV0eSI6Im1pbnV0Iik6dGUrIm1pbnV0YW1pIjtjYXNlImgiOnJldHVybiBZPyJob2RpbmEiOk4/ImhvZGludSI6ImhvZGlub3UiO2Nhc2UiaGgiOnJldHVybiBZfHxOP3RlKyhRKGFlKT8iaG9k''@;'; put 'put ''aW55IjoiaG9kaW4iKTp0ZSsiaG9kaW5hbWkiO2Nhc2UiZCI6cmV0dXJuIFl8fE4/ImRlbiI6ImRuZW0iO2Nhc2UiZGQiOnJldHVybiBZfHxOP3RlKyhRKGFlKT8iZG55IjoiZG5ceGVkIik6dGUrImRueSI7Y2FzZSJNIjpyZXR1cm4gWXx8Tj8ibVx1MDExYnNceGVkYyI6Im1cdTAxMWJzXHhl''@;'; put 'put ''ZGNlbSI7Y2FzZSJNTSI6cmV0dXJuIFl8fE4/dGUrKFEoYWUpPyJtXHUwMTFic1x4ZWRjZSI6Im1cdTAxMWJzXHhlZGNcdTAxNmYiKTp0ZSsibVx1MDExYnNceGVkY2kiO2Nhc2UieSI6cmV0dXJuIFl8fE4/InJvayI6InJva2VtIjtjYXNlInl5IjpyZXR1cm4gWXx8Tj90ZSsoUShhZSk/InJv''@;'; put 'put ''a3kiOiJsZXQiKTp0ZSsibGV0eSJ9fW1lLmRlZmluZUxvY2FsZSgiY3MiLHttb250aHM6Qixtb250aHNTaG9ydDpFLG1vbnRoc1JlZ2V4OlUsbW9udGhzU2hvcnRSZWdleDpVLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGxlZGVufGxlZG5hfFx4ZmFub3JhfFx4ZmFub3J8Ylx1MDE1OWV6ZW58Ylx1''@;'; put 'put ''MDE1OWV6bmF8ZHViZW58ZHVibmF8a3ZcdTAxMWJ0ZW58a3ZcdTAxMWJ0bmF8XHUwMTBkZXJ2ZW5lY3xcdTAxMGRlcnZlbmNlfFx1MDEwZGVydmVufFx1MDEwZGVydm5hfHNycGVufHNycG5hfHpceGUxXHUwMTU5XHhlZHxcdTAxNTlceGVkamVufFx1MDE1OVx4ZWRqbmF8bGlzdG9wYWR1fGxp''@;'; put 'put ''c3RvcGFkfHByb3NpbmVjfHByb3NpbmNlKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14obGVkfFx4ZmFub3xiXHUwMTU5ZXxkdWJ8a3ZcdTAxMWJ8XHUwMTBkdm58XHUwMTBkdmN8c3JwfHpceGUxXHUwMTU5fFx1MDE1OVx4ZWRqfGxpc3xwcm8pL2ksbW9udGhzUGFyc2U6RWUsbG9uZ01v''@;'; put 'put ''bnRoc1BhcnNlOkVlLHNob3J0TW9udGhzUGFyc2U6RWUsd2Vla2RheXM6Im5lZFx1MDExYmxlX3BvbmRcdTAxMWJsXHhlZF9ceGZhdGVyXHhmZF9zdFx1MDE1OWVkYV9cdTAxMGR0dnJ0ZWtfcFx4ZTF0ZWtfc29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lX3BvX1x4ZmF0X3N0''@;'; put 'put ''X1x1MDEwZHRfcFx4ZTFfc28iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Im5lX3BvX1x4ZmF0X3N0X1x1MDEwZHRfcFx4ZTFfc28iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoi''@;'; put 'put ''RC4gTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQgRC4gTU1NTSBZWVlZIEg6bW0iLGw6IkQuIE0uIFlZWVkifSxjYWxlbmRhcjp7c2FtZURheToiW2RuZXMgdl0gTFQiLG5leHREYXk6Ilt6XHhlZHRyYSB2XSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2Fz''@;'; put 'put ''ZSAwOnJldHVybiJbdiBuZWRcdTAxMWJsaSB2XSBMVCI7Y2FzZSAxOmNhc2UgMjpyZXR1cm4iW3ZdIGRkZGQgW3ZdIExUIjtjYXNlIDM6cmV0dXJuIlt2ZSBzdFx1MDE1OWVkdSB2XSBMVCI7Y2FzZSA0OnJldHVybiJbdmUgXHUwMTBkdHZydGVrIHZdIExUIjtjYXNlIDU6cmV0dXJuIlt2IHBc''@;'; put 'put ''eGUxdGVrIHZdIExUIjtjYXNlIDY6cmV0dXJuIlt2IHNvYm90dSB2XSBMVCJ9fSxsYXN0RGF5OiJbdlx1MDEwZGVyYSB2XSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbbWludWxvdSBuZWRcdTAxMWJsaSB2XSBMVCI7Y2FzZSAxOmNh''@;'; put 'put ''c2UgMjpyZXR1cm4iW21pbnVsXHhlOV0gZGRkZCBbdl0gTFQiO2Nhc2UgMzpyZXR1cm4iW21pbnVsb3Ugc3RcdTAxNTllZHUgdl0gTFQiO2Nhc2UgNDpjYXNlIDU6cmV0dXJuIlttaW51bFx4ZmRdIGRkZGQgW3ZdIExUIjtjYXNlIDY6cmV0dXJuIlttaW51bG91IHNvYm90dSB2XSBMVCJ9fSxz''@;'; put 'put ''YW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicFx1MDE1OWVkICVzIixzOmosc3M6aixtOmosbW06aixoOmosaGg6aixkOmosZGQ6aixNOmosTU06aix5OmoseXk6an0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4i''@;'; put 'put ''LHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDkwMzY1OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgiY3YiLHttb250aHM6Ilx1MDQzYVx1MDRkMVx1MDQ0MFx1MDQzYlx1MDQzMFx1MDQ0N19cdTA0M2RcdTA0MzBc''@;'; put 'put ''dTA0NDBcdTA0ZDFcdTA0NDFfXHUwNDNmXHUwNDQzXHUwNDQ4X1x1MDQzMFx1MDQzYVx1MDQzMF9cdTA0M2NcdTA0MzBcdTA0MzlfXHUwNGFiXHUwNGQ3XHUwNDQwXHUwNDQyXHUwNDNjXHUwNDM1X1x1MDQ0M1x1MDQ0Mlx1MDRkMV9cdTA0YWJcdTA0NDNcdTA0NDBcdTA0M2JcdTA0MzBfXHUw''@;'; put 'put ''NDMwXHUwNDMyXHUwNGQxXHUwNDNkX1x1MDQ0ZVx1MDQzZlx1MDQzMF9cdTA0NDdcdTA0ZjNcdTA0M2FfXHUwNDQwXHUwNDMwXHUwNDQ4XHUwNDQyXHUwNDMwXHUwNDMyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA0M2FcdTA0ZDFcdTA0NDBfXHUwNDNkXHUwNDMwXHUwNDQwX1x1MDQz''@;'; put 'put ''Zlx1MDQ0M1x1MDQ0OF9cdTA0MzBcdTA0M2FcdTA0MzBfXHUwNDNjXHUwNDMwXHUwNDM5X1x1MDRhYlx1MDRkN1x1MDQ0MF9cdTA0NDNcdTA0NDJcdTA0ZDFfXHUwNGFiXHUwNDQzXHUwNDQwX1x1MDQzMFx1MDQzMlx1MDQzZF9cdTA0NGVcdTA0M2ZcdTA0MzBfXHUwNDQ3XHUwNGYzXHUwNDNh''@;'; put 'put ''X1x1MDQ0MFx1MDQzMFx1MDQ0OCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNDMyXHUwNDRiXHUwNDQwXHUwNDQxXHUwNDMwXHUwNDQwXHUwNDNkXHUwNDM4XHUwNDNhXHUwNDQzXHUwNDNkX1x1MDQ0Mlx1MDQ0M1x1MDQzZFx1MDQ0Mlx1MDQzOFx1MDQzYVx1MDQ0M1x1MDQzZF9cdTA0NGJc''@;'; put 'put ''dTA0NDJcdTA0M2JcdTA0MzBcdTA0NDBcdTA0MzhcdTA0M2FcdTA0NDNcdTA0M2RfXHUwNDRlXHUwNDNkXHUwNDNhXHUwNDQzXHUwNDNkX1x1MDQzYVx1MDRkN1x1MDRhYlx1MDQzZFx1MDQzNVx1MDQ0MFx1MDQzZFx1MDQzOFx1MDQzYVx1MDQ0M1x1MDQzZF9cdTA0NGRcdTA0NDBcdTA0M2Rc''@;'; put 'put ''dTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RfXHUwNDQ4XHUwNGQxXHUwNDNjXHUwNDMwXHUwNDQyXHUwNDNhXHUwNDQzXHUwNDNkIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDQzMlx1MDQ0Ylx1MDQ0MF9cdTA0NDJcdTA0NDNcdTA0M2RfXHUwNDRiXHUwNDQyXHUwNDNiX1x1MDQ0ZVx1''@;'; put 'put ''MDQzZF9cdTA0M2FcdTA0ZDdcdTA0YWJfXHUwNDRkXHUwNDQwXHUwNDNkX1x1MDQ0OFx1MDRkMVx1MDQzYyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDMyXHUwNDQwX1x1MDQ0Mlx1MDQzZF9cdTA0NGJcdTA0NDJfXHUwNDRlXHUwNDNkX1x1MDQzYVx1MDRhYl9cdTA0NGRcdTA0NDBf''@;'; put 'put ''XHUwNDQ4XHUwNDNjIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELU1NLVlZWVkiLExMOiJZWVlZIFtcdTA0YWJcdTA0NDNcdTA0M2JcdTA0NDVcdTA0MzhdIE1NTU0gW1x1MDQ0M1x1MDQzOVx1MDRkMVx1MDQ0NVx1MDRkN1x1MDQz''@;'; put 'put ''ZF0gRFstXHUwNDNjXHUwNGQ3XHUwNDQ4XHUwNGQ3XSIsTExMOiJZWVlZIFtcdTA0YWJcdTA0NDNcdTA0M2JcdTA0NDVcdTA0MzhdIE1NTU0gW1x1MDQ0M1x1MDQzOVx1MDRkMVx1MDQ0NVx1MDRkN1x1MDQzZF0gRFstXHUwNDNjXHUwNGQ3XHUwNDQ4XHUwNGQ3XSwgSEg6bW0iLExMTEw6ImRk''@;'; put 'put ''ZGQsIFlZWVkgW1x1MDRhYlx1MDQ0M1x1MDQzYlx1MDQ0NVx1MDQzOF0gTU1NTSBbXHUwNDQzXHUwNDM5XHUwNGQxXHUwNDQ1XHUwNGQ3XHUwNDNkXSBEWy1cdTA0M2NcdTA0ZDdcdTA0NDhcdTA0ZDddLCBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDFmXHUwNDMwXHUwNDRmXHUw''@;'; put 'put ''NDNkXSBMVCBbXHUwNDQxXHUwNDM1XHUwNDQ1XHUwNDM1XHUwNDQyXHUwNDQwXHUwNDM1XSIsbmV4dERheToiW1x1MDQyYlx1MDQ0MFx1MDQzMFx1MDQzZF0gTFQgW1x1MDQ0MVx1MDQzNVx1MDQ0NVx1MDQzNVx1MDQ0Mlx1MDQ0MFx1MDQzNV0iLGxhc3REYXk6IltcdTA0ZDZcdTA0M2RcdTA0''@;'; put 'put ''MzVcdTA0NDBdIExUIFtcdTA0NDFcdTA0MzVcdTA0NDVcdTA0MzVcdTA0NDJcdTA0NDBcdTA0MzVdIixuZXh0V2VlazoiW1x1MDRhYVx1MDQzOFx1MDQ0Mlx1MDQzNVx1MDQ0MV0gZGRkZCBMVCBbXHUwNDQxXHUwNDM1XHUwNDQ1XHUwNDM1XHUwNDQyXHUwNDQwXHUwNDM1XSIsbGFzdFdlZWs6''@;'; put 'put ''IltcdTA0MThcdTA0NDBcdTA0NDJcdTA0M2RcdTA0ZDddIGRkZGQgTFQgW1x1MDQ0MVx1MDQzNVx1MDQ0NVx1MDQzNVx1MDQ0Mlx1MDQ0MFx1MDQzNV0iLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ZnVuY3Rpb24oRSl7cmV0dXJuIEUrKC9cdTA0NDFcdTA0MzVcdTA0NDVc''@;'; put 'put ''dTA0MzVcdTA0NDIkL2kuZXhlYyhFKT8iXHUwNDQwXHUwNDM1XHUwNDNkIjovXHUwNGFiXHUwNDQzXHUwNDNiJC9pLmV4ZWMoRSk/Ilx1MDQ0Mlx1MDQzMFx1MDQzZCI6Ilx1MDQ0MFx1MDQzMFx1MDQzZCIpfSxwYXN0OiIlcyBcdTA0M2FcdTA0MzBcdTA0NGZcdTA0M2JcdTA0M2JcdTA0MzAi''@;'; put 'put ''LHM6Ilx1MDQzZlx1MDRkN1x1MDQ0MC1cdTA0MzhcdTA0M2EgXHUwNGFiXHUwNDM1XHUwNDNhXHUwNDNhXHUwNDQzXHUwNDNkXHUwNDQyIixzczoiJWQgXHUwNGFiXHUwNDM1XHUwNDNhXHUwNDNhXHUwNDQzXHUwNDNkXHUwNDQyIixtOiJcdTA0M2ZcdTA0ZDdcdTA0NDAgXHUwNDNjXHUwNDM4''@;'; put 'put ''XHUwNDNkXHUwNDQzXHUwNDQyIixtbToiJWQgXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyIixoOiJcdTA0M2ZcdTA0ZDdcdTA0NDAgXHUwNDQxXHUwNDM1XHUwNDQ1XHUwNDM1XHUwNDQyIixoaDoiJWQgXHUwNDQxXHUwNDM1XHUwNDQ1XHUwNDM1XHUwNDQyIixkOiJcdTA0M2ZcdTA0''@;'; put 'put ''ZDdcdTA0NDAgXHUwNDNhXHUwNDQzXHUwNDNkIixkZDoiJWQgXHUwNDNhXHUwNDQzXHUwNDNkIixNOiJcdTA0M2ZcdTA0ZDdcdTA0NDAgXHUwNDQzXHUwNDM5XHUwNGQxXHUwNDQ1IixNTToiJWQgXHUwNDQzXHUwNDM5XHUwNGQxXHUwNDQ1Iix5OiJcdTA0M2ZcdTA0ZDdcdTA0NDAgXHUwNGFi''@;'; put 'put ''XHUwNDQzXHUwNDNiIix5eToiJWQgXHUwNGFiXHUwNDQzXHUwNDNiIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS1cdTA0M2NcdTA0ZDdcdTA0NDgvLG9yZGluYWw6IiVkLVx1MDQzY1x1MDRkN1x1MDQ0OCIsd2Vlazp7ZG93OjEsZG95Ojd9fSl9KEwoMTU0MzkpKX0sMzIwOTI6''@;'; put 'put ''ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJjeSIse21vbnRoczoiSW9uYXdyX0Nod2Vmcm9yX01hd3J0aF9FYnJpbGxfTWFpX01laGVmaW5fR29yZmZlbm5hZl9Bd3N0X01lZGlfSHlkcmVmX1RhY2h3ZWRkX1JoYWdmeXIiLnNw''@;'; put 'put ''bGl0KCJfIiksbW9udGhzU2hvcnQ6Iklvbl9DaHdlX01hd19FYnJfTWFpX01laF9Hb3JfQXdzX01lZF9IeWRfVGFjaF9SaGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJEeWRkIFN1bF9EeWRkIExsdW5fRHlkZCBNYXdydGhfRHlkZCBNZXJjaGVyX0R5ZGQgSWF1X0R5ZGQgR3dlbmVyX0R5ZGQg''@;'; put 'put ''U2Fkd3JuIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bF9MbHVuX01hd19NZXJfSWF1X0d3ZV9TYWQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X0xsX01hX01lX0lhX0d3X1NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhI''@;'; put 'put ''Om1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIZWRkaXcgYW1dIExUIixuZXh0RGF5OiJbWWZvcnkgYW1dIExU''@;'; put 'put ''IixuZXh0V2VlazoiZGRkZCBbYW1dIExUIixsYXN0RGF5OiJbRGRvZSBhbV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtkaXdldGhhZiBhbV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im1ld24gJXMiLHBhc3Q6IiVzIHluIFx4ZjRsIixzOiJ5Y2h5ZGlnIGVpbGlhZGF1''@;'; put 'put ''IixzczoiJWQgZWlsaWFkIixtOiJtdW51ZCIsbW06IiVkIG11bnVkIixoOiJhd3IiLGhoOiIlZCBhd3IiLGQ6ImRpd3Jub2QiLGRkOiIlZCBkaXdybm9kIixNOiJtaXMiLE1NOiIlZCBtaXMiLHk6ImJsd3lkZHluIix5eToiJWQgZmx5bmVkZCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xk''@;'; put 'put ''ezEsMn0oZmVkfGFpbnxhZnxpbHx5ZGR8ZWR8ZWcpLyxvcmRpbmFsOmZ1bmN0aW9uKEUpe3ZhciBVPSIiO3JldHVybiBFPjIwP1U9NDA9PT1FfHw1MD09PUV8fDYwPT09RXx8ODA9PT1FfHwxMDA9PT1FPyJmZWQiOiJhaW4iOkU+MCYmKFU9WyIiLCJhZiIsImlsIiwieWRkIiwieWRkIiwiZWQi''@;'; put 'put ''LCJlZCIsImVkIiwiZmVkIiwiZmVkIiwiZmVkIiwiZWciLCJmZWQiLCJlZyIsImVnIiwiZmVkIiwiZWciLCJlZyIsImZlZCIsImVnIiwiZmVkIl1bRV0pLEUrVX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sNzczODc6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsi''@;'; put 'put ''dXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJkYSIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFydHNfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJfbWFyX2Fw''@;'; put 'put ''cl9tYWpfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJzXHhmOG5kYWdfbWFuZGFnX3RpcnNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2xceGY4cmRhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzXHhmOG5fbWFuX3Rpcl9vbnNfdG9yX2Zy''@;'; put 'put ''ZV9sXHhmOHIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InNceGY4X21hX3RpX29uX3RvX2ZyX2xceGY4Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZ''@;'; put 'put ''IEhIOm1tIixMTExMOiJkZGRkIFtkLl0gRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltpIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbaSBtb3JnZW4ga2wuXSBMVCIsbmV4dFdlZWs6InBceGU1IGRkZGQgW2tsLl0gTFQiLGxhc3REYXk6IltpIGdceGU1ciBr''@;'; put 'put ''bC5dIExUIixsYXN0V2VlazoiW2ldIGRkZGRbcyBrbC5dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvbSAlcyIscGFzdDoiJXMgc2lkZW4iLHM6ImZceGU1IHNla3VuZGVyIixzczoiJWQgc2VrdW5kZXIiLG06ImV0IG1pbnV0IixtbToiJWQgbWludXR0ZXIiLGg6''@;'; put 'put ''ImVuIHRpbWUiLGhoOiIlZCB0aW1lciIsZDoiZW4gZGFnIixkZDoiJWQgZGFnZSIsTToiZW4gbVx4ZTVuZWQiLE1NOiIlZCBtXHhlNW5lZGVyIix5OiJldCBceGU1ciIseXk6IiVkIFx4ZTVyIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6''@;'; put 'put ''e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDI5NDU5OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEIoRWUsVSxRLGope3ZhciByZT17bTpbImVpbmUgTWludXRlIiwiZWluZXIgTWludXRlIl0saDpbImVpbmUgU3R1bmRlIiwiZWluZXIg''@;'; put 'put ''U3R1bmRlIl0sZDpbImVpbiBUYWciLCJlaW5lbSBUYWciXSxkZDpbRWUrIiBUYWdlIixFZSsiIFRhZ2VuIl0sdzpbImVpbmUgV29jaGUiLCJlaW5lciBXb2NoZSJdLE06WyJlaW4gTW9uYXQiLCJlaW5lbSBNb25hdCJdLE1NOltFZSsiIE1vbmF0ZSIsRWUrIiBNb25hdGVuIl0seTpbImVpbiBK''@;'; put 'put ''YWhyIiwiZWluZW0gSmFociJdLHl5OltFZSsiIEphaHJlIixFZSsiIEphaHJlbiJdfTtyZXR1cm4gVT9yZVtRXVswXTpyZVtRXVsxXX1tZS5kZWZpbmVMb2NhbGUoImRlLWF0Iix7bW9udGhzOiJKXHhlNG5uZXJfRmVicnVhcl9NXHhlNHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1Nl''@;'; put 'put ''cHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKXHhlNG4uX0ZlYi5fTVx4ZTRyel9BcHIuX01haV9KdW5pX0p1bGlfQXVnLl9TZXAuX09rdC5fTm92Ll9EZXouIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6''@;'; put 'put ''IlNvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5lcnN0YWdfRnJlaXRhZ19TYW1zdGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlNvLl9Nby5fRGkuX01pLl9Eby5fRnIuX1NhLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU29fTW9fRGlfTWlfRG9fRnJfU2EiLnNw''@;'; put 'put ''bGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0ifSxj''@;'; put 'put ''YWxlbmRhcjp7c2FtZURheToiW2hldXRlIHVtXSBMVCBbVWhyXSIsc2FtZUVsc2U6IkwiLG5leHREYXk6Ilttb3JnZW4gdW1dIExUIFtVaHJdIixuZXh0V2VlazoiZGRkZCBbdW1dIExUIFtVaHJdIixsYXN0RGF5OiJbZ2VzdGVybiB1bV0gTFQgW1Vocl0iLGxhc3RXZWVrOiJbbGV0enRlbl0g''@;'; put 'put ''ZGRkZCBbdW1dIExUIFtVaHJdIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiJ2b3IgJXMiLHM6ImVpbiBwYWFyIFNla3VuZGVuIixzczoiJWQgU2VrdW5kZW4iLG06QixtbToiJWQgTWludXRlbiIsaDpCLGhoOiIlZCBTdHVuZGVuIixkOkIsZGQ6Qix3OkIsd3c6IiVkIFdv''@;'; put 'put ''Y2hlbiIsTTpCLE1NOkIseTpCLHl5OkJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw2NzI0MzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlv''@;'; put 'put ''biBCKEVlLFUsUSxqKXt2YXIgcmU9e206WyJlaW5lIE1pbnV0ZSIsImVpbmVyIE1pbnV0ZSJdLGg6WyJlaW5lIFN0dW5kZSIsImVpbmVyIFN0dW5kZSJdLGQ6WyJlaW4gVGFnIiwiZWluZW0gVGFnIl0sZGQ6W0VlKyIgVGFnZSIsRWUrIiBUYWdlbiJdLHc6WyJlaW5lIFdvY2hlIiwiZWluZXIg''@;'; put 'put ''V29jaGUiXSxNOlsiZWluIE1vbmF0IiwiZWluZW0gTW9uYXQiXSxNTTpbRWUrIiBNb25hdGUiLEVlKyIgTW9uYXRlbiJdLHk6WyJlaW4gSmFociIsImVpbmVtIEphaHIiXSx5eTpbRWUrIiBKYWhyZSIsRWUrIiBKYWhyZW4iXX07cmV0dXJuIFU/cmVbUV1bMF06cmVbUV1bMV19bWUuZGVmaW5l''@;'; put 'put ''TG9jYWxlKCJkZS1jaCIse21vbnRoczoiSmFudWFyX0ZlYnJ1YXJfTVx4ZTRyel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuLl9GZWIuX01ceGU0cnpfQXByLl9NYWlfSnVu''@;'; put 'put ''aV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTb19N''@;'; put 'put ''b19EaV9NaV9Eb19Gcl9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU29fTW9fRGlfTWlfRG9fRnJfU2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1N''@;'; put 'put ''IFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2hldXRlIHVtXSBMVCBbVWhyXSIsc2FtZUVsc2U6IkwiLG5leHREYXk6Ilttb3JnZW4gdW1dIExUIFtVaHJdIixuZXh0V2VlazoiZGRkZCBb''@;'; put 'put ''dW1dIExUIFtVaHJdIixsYXN0RGF5OiJbZ2VzdGVybiB1bV0gTFQgW1Vocl0iLGxhc3RXZWVrOiJbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJdIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiJ2b3IgJXMiLHM6ImVpbiBwYWFyIFNla3VuZGVuIixzczoiJWQgU2VrdW5k''@;'; put 'put ''ZW4iLG06QixtbToiJWQgTWludXRlbiIsaDpCLGhoOiIlZCBTdHVuZGVuIixkOkIsZGQ6Qix3OkIsd3c6IiVkIFdvY2hlbiIsTTpCLE1NOkIseTpCLHl5OkJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgx''@;'; put 'put ''NTQzOSkpfSw1NDMwNzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBCKEVlLFUsUSxqKXt2YXIgcmU9e206WyJlaW5lIE1pbnV0ZSIsImVpbmVyIE1pbnV0ZSJdLGg6WyJlaW5lIFN0dW5kZSIsImVpbmVyIFN0dW5kZSJdLGQ6WyJlaW4gVGFn''@;'; put 'put ''IiwiZWluZW0gVGFnIl0sZGQ6W0VlKyIgVGFnZSIsRWUrIiBUYWdlbiJdLHc6WyJlaW5lIFdvY2hlIiwiZWluZXIgV29jaGUiXSxNOlsiZWluIE1vbmF0IiwiZWluZW0gTW9uYXQiXSxNTTpbRWUrIiBNb25hdGUiLEVlKyIgTW9uYXRlbiJdLHk6WyJlaW4gSmFociIsImVpbmVtIEphaHIiXSx5''@;'; put 'put ''eTpbRWUrIiBKYWhyZSIsRWUrIiBKYWhyZW4iXX07cmV0dXJuIFU/cmVbUV1bMF06cmVbUV1bMV19bWUuZGVmaW5lTG9jYWxlKCJkZSIse21vbnRoczoiSmFudWFyX0ZlYnJ1YXJfTVx4ZTRyel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9E''@;'; put 'put ''ZXplbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuLl9GZWIuX01ceGU0cnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0''@;'; put 'put ''d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTby5fTW8uX0RpLl9NaS5fRG8uX0ZyLl9TYS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlNvX01vX0RpX01pX0RvX0ZyX1NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDoh''@;'; put 'put ''MCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltoZXV0ZSB1bV0g''@;'; put 'put ''TFQgW1Vocl0iLHNhbWVFbHNlOiJMIixuZXh0RGF5OiJbbW9yZ2VuIHVtXSBMVCBbVWhyXSIsbmV4dFdlZWs6ImRkZGQgW3VtXSBMVCBbVWhyXSIsbGFzdERheToiW2dlc3Rlcm4gdW1dIExUIFtVaHJdIixsYXN0V2VlazoiW2xldHp0ZW5dIGRkZGQgW3VtXSBMVCBbVWhyXSJ9LHJlbGF0aXZl''@;'; put 'put ''VGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoidm9yICVzIixzOiJlaW4gcGFhciBTZWt1bmRlbiIsc3M6IiVkIFNla3VuZGVuIixtOkIsbW06IiVkIE1pbnV0ZW4iLGg6QixoaDoiJWQgU3R1bmRlbiIsZDpCLGRkOkIsdzpCLHd3OiIlZCBXb2NoZW4iLE06QixNTTpCLHk6Qix5eTpCfSxkYXlP''@;'; put 'put ''Zk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sMzk2NTk6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9WyJcdTA3OTZcdTA3YWNcdTA3ODJcdTA3YWFcdTA3''@;'; put 'put ''ODdcdTA3YTZcdTA3ODNcdTA3YTkiLCJcdTA3OGFcdTA3YWNcdTA3ODRcdTA3YjBcdTA3ODNcdTA3YWFcdTA3ODdcdTA3YTZcdTA3ODNcdTA3YTkiLCJcdTA3ODlcdTA3YTdcdTA3ODNcdTA3YThcdTA3OTdcdTA3YWEiLCJcdTA3ODdcdTA3YWRcdTA3OTVcdTA3YjBcdTA3ODNcdTA3YTlcdTA3''@;'; put 'put ''OGRcdTA3YWEiLCJcdTA3ODlcdTA3YWQiLCJcdTA3OTZcdTA3YWJcdTA3ODJcdTA3YjAiLCJcdTA3OTZcdTA3YWFcdTA3OGRcdTA3YTZcdTA3ODdcdTA3YTgiLCJcdTA3ODdcdTA3YWZcdTA3OGVcdTA3YTZcdTA3OTBcdTA3YjBcdTA3OTNcdTA3YWEiLCJcdTA3OTBcdTA3YWNcdTA3OTVcdTA3''@;'; put 'put ''YjBcdTA3OTNcdTA3YWNcdTA3ODlcdTA3YjBcdTA3ODRcdTA3YTZcdTA3ODNcdTA3YWEiLCJcdTA3ODdcdTA3YWVcdTA3ODZcdTA3YjBcdTA3OTNcdTA3YWZcdTA3ODRcdTA3YTZcdTA3ODNcdTA3YWEiLCJcdTA3ODJcdTA3YWVcdTA3ODhcdTA3YWNcdTA3ODlcdTA3YjBcdTA3ODRcdTA3YTZc''@;'; put 'put ''dTA3ODNcdTA3YWEiLCJcdTA3OTFcdTA3YThcdTA3OTBcdTA3YWNcdTA3ODlcdTA3YjBcdTA3ODRcdTA3YTZcdTA3ODNcdTA3YWEiXSxFPVsiXHUwNzg3XHUwN2E3XHUwNzhiXHUwN2E4XHUwNzg3XHUwN2IwXHUwNzhjXHUwN2E2IiwiXHUwNzgwXHUwN2FmXHUwNzg5XHUwN2E2IiwiXHUwNzg3''@;'; put 'put ''XHUwN2E2XHUwNzgyXHUwN2IwXHUwNzhlXHUwN2E3XHUwNzgzXHUwN2E2IiwiXHUwNzg0XHUwN2FhXHUwNzhiXHUwN2E2IiwiXHUwNzg0XHUwN2FhXHUwNzgzXHUwN2E3XHUwNzkwXHUwN2IwXHUwNzhhXHUwN2E2XHUwNzhjXHUwN2E4IiwiXHUwNzgwXHUwN2FhXHUwNzg2XHUwN2FhXHUwNzgz''@;'; put 'put ''XHUwN2FhIiwiXHUwNzgwXHUwN2FlXHUwNzgyXHUwN2E4XHUwNzgwXHUwN2E4XHUwNzgzXHUwN2FhIl07bWUuZGVmaW5lTG9jYWxlKCJkdiIse21vbnRoczpCLG1vbnRoc1Nob3J0OkIsd2Vla2RheXM6RSx3ZWVrZGF5c1Nob3J0OkUsd2Vla2RheXNNaW46Ilx1MDc4N1x1MDdhN1x1MDc4Ylx1''@;'; put 'put ''MDdhOF9cdTA3ODBcdTA3YWZcdTA3ODlcdTA3YTZfXHUwNzg3XHUwN2E2XHUwNzgyXHUwN2IwX1x1MDc4NFx1MDdhYVx1MDc4Ylx1MDdhNl9cdTA3ODRcdTA3YWFcdTA3ODNcdTA3YTdfXHUwNzgwXHUwN2FhXHUwNzg2XHUwN2FhX1x1MDc4MFx1MDdhZVx1MDc4Mlx1MDdhOCIuc3BsaXQoIl8i''@;'; put 'put ''KSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJEL00vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwNzg5XHUwNzg2fFx1MDc4OVx1''@;'; put 'put ''MDc4YS8saXNQTTpmdW5jdGlvbihVKXtyZXR1cm4iXHUwNzg5XHUwNzhhIj09PVV9LG1lcmlkaWVtOmZ1bmN0aW9uKFUsUSxqKXtyZXR1cm4gVTwxMj8iXHUwNzg5XHUwNzg2IjoiXHUwNzg5XHUwNzhhIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA3ODlcdTA3YThcdTA3ODdcdTA3YTZcdTA3''@;'; put 'put ''OGJcdTA3YWFdIExUIixuZXh0RGF5OiJbXHUwNzg5XHUwN2E3XHUwNzhiXHUwN2E2XHUwNzg5XHUwN2E3XSBMVCIsbmV4dFdlZWs6ImRkZGQgTFQiLGxhc3REYXk6IltcdTA3ODdcdTA3YThcdTA3ODdcdTA3YjBcdTA3OTRcdTA3YWNdIExUIixsYXN0V2VlazoiW1x1MDc4YVx1MDdhN1x1MDc4''@;'; put 'put ''N1x1MDdhOFx1MDc4Y1x1MDdhYVx1MDc4OFx1MDdhOF0gZGRkZCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNzhjXHUwN2FjXHUwNzgzXHUwN2FkXHUwNzhlXHUwN2E2XHUwNzg3XHUwN2E4ICVzIixwYXN0OiJcdTA3ODZcdTA3YWFcdTA3ODNcdTA3YThcdTA3''@;'; put 'put ''ODJcdTA3YjAgJXMiLHM6Ilx1MDc5MFx1MDdhOFx1MDc4Nlx1MDdhYVx1MDc4Mlx1MDdiMFx1MDc4Y1x1MDdhYVx1MDc4Nlx1MDdhZVx1MDc4NVx1MDdhY1x1MDc4N1x1MDdiMCIsc3M6ImQlIFx1MDc5MFx1MDdhOFx1MDc4Nlx1MDdhYVx1MDc4Mlx1MDdiMFx1MDc4Y1x1MDdhYSIsbToiXHUw''@;'; put 'put ''Nzg5XHUwN2E4XHUwNzgyXHUwN2E4XHUwNzkzXHUwN2FjXHUwNzg3XHUwN2IwIixtbToiXHUwNzg5XHUwN2E4XHUwNzgyXHUwN2E4XHUwNzkzXHUwN2FhICVkIixoOiJcdTA3OGVcdTA3YTZcdTA3OTFcdTA3YThcdTA3ODdcdTA3YThcdTA3ODNcdTA3YWNcdTA3ODdcdTA3YjAiLGhoOiJcdTA3''@;'; put 'put ''OGVcdTA3YTZcdTA3OTFcdTA3YThcdTA3ODdcdTA3YThcdTA3ODNcdTA3YWEgJWQiLGQ6Ilx1MDc4Ylx1MDdhYVx1MDc4OFx1MDdhNlx1MDc4MFx1MDdhY1x1MDc4N1x1MDdiMCIsZGQ6Ilx1MDc4Ylx1MDdhYVx1MDc4OFx1MDdhNlx1MDc5MFx1MDdiMCAlZCIsTToiXHUwNzg5XHUwN2E2XHUw''@;'; put 'put ''NzgwXHUwN2FjXHUwNzg3XHUwN2IwIixNTToiXHUwNzg5XHUwN2E2XHUwNzkwXHUwN2IwICVkIix5OiJcdTA3ODdcdTA3YTZcdTA3ODBcdTA3YTZcdTA3ODNcdTA3YWNcdTA3ODdcdTA3YjAiLHl5OiJcdTA3ODdcdTA3YTZcdTA3ODBcdTA3YTZcdTA3ODNcdTA3YWEgJWQifSxwcmVwYXJzZTpm''@;'; put 'put ''dW5jdGlvbihVKXtyZXR1cm4gVS5yZXBsYWNlKC9cdTA2MGMvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKFUpe3JldHVybiBVLnJlcGxhY2UoLywvZywiXHUwNjBjIil9LHdlZWs6e2Rvdzo3LGRveToxMn19KX0oTCgxNTQzOSkpfSwzNDYwOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlv''@;'; put 'put ''bihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgiZWwiLHttb250aHNOb21pbmF0aXZlRWw6Ilx1MDM5OVx1MDNiMVx1MDNiZFx1MDNiZlx1MDNjNVx1MDNhY1x1MDNjMVx1MDNiOVx1MDNiZlx1MDNjMl9cdTAzYTZcdTAzYjVcdTAzYjJcdTAzYzFcdTAzYmZcdTAzYzVcdTAzYWNc''@;'; put 'put ''dTAzYzFcdTAzYjlcdTAzYmZcdTAzYzJfXHUwMzljXHUwM2FjXHUwM2MxXHUwM2M0XHUwM2I5XHUwM2JmXHUwM2MyX1x1MDM5MVx1MDNjMFx1MDNjMVx1MDNhZlx1MDNiYlx1MDNiOVx1MDNiZlx1MDNjMl9cdTAzOWNcdTAzYWNcdTAzYjlcdTAzYmZcdTAzYzJfXHUwMzk5XHUwM2JmXHUwM2Nk''@;'; put 'put ''XHUwM2JkXHUwM2I5XHUwM2JmXHUwM2MyX1x1MDM5OVx1MDNiZlx1MDNjZFx1MDNiYlx1MDNiOVx1MDNiZlx1MDNjMl9cdTAzOTFcdTAzY2RcdTAzYjNcdTAzYmZcdTAzYzVcdTAzYzNcdTAzYzRcdTAzYmZcdTAzYzJfXHUwM2EzXHUwM2I1XHUwM2MwXHUwM2M0XHUwM2FkXHUwM2JjXHUwM2Iy''@;'; put 'put ''XHUwM2MxXHUwM2I5XHUwM2JmXHUwM2MyX1x1MDM5Zlx1MDNiYVx1MDNjNFx1MDNjZVx1MDNiMlx1MDNjMVx1MDNiOVx1MDNiZlx1MDNjMl9cdTAzOWRcdTAzYmZcdTAzYWRcdTAzYmNcdTAzYjJcdTAzYzFcdTAzYjlcdTAzYmZcdTAzYzJfXHUwMzk0XHUwM2I1XHUwM2JhXHUwM2FkXHUwM2Jj''@;'; put 'put ''XHUwM2IyXHUwM2MxXHUwM2I5XHUwM2JmXHUwM2MyIi5zcGxpdCgiXyIpLG1vbnRoc0dlbml0aXZlRWw6Ilx1MDM5OVx1MDNiMVx1MDNiZFx1MDNiZlx1MDNjNVx1MDNiMVx1MDNjMVx1MDNhZlx1MDNiZlx1MDNjNV9cdTAzYTZcdTAzYjVcdTAzYjJcdTAzYzFcdTAzYmZcdTAzYzVcdTAzYjFc''@;'; put 'put ''dTAzYzFcdTAzYWZcdTAzYmZcdTAzYzVfXHUwMzljXHUwM2IxXHUwM2MxXHUwM2M0XHUwM2FmXHUwM2JmXHUwM2M1X1x1MDM5MVx1MDNjMFx1MDNjMVx1MDNiOVx1MDNiYlx1MDNhZlx1MDNiZlx1MDNjNV9cdTAzOWNcdTAzYjFcdTAzOTBcdTAzYmZcdTAzYzVfXHUwMzk5XHUwM2JmXHUwM2M1''@;'; put 'put ''XHUwM2JkXHUwM2FmXHUwM2JmXHUwM2M1X1x1MDM5OVx1MDNiZlx1MDNjNVx1MDNiYlx1MDNhZlx1MDNiZlx1MDNjNV9cdTAzOTFcdTAzYzVcdTAzYjNcdTAzYmZcdTAzY2RcdTAzYzNcdTAzYzRcdTAzYmZcdTAzYzVfXHUwM2EzXHUwM2I1XHUwM2MwXHUwM2M0XHUwM2I1XHUwM2JjXHUwM2Iy''@;'; put 'put ''XHUwM2MxXHUwM2FmXHUwM2JmXHUwM2M1X1x1MDM5Zlx1MDNiYVx1MDNjNFx1MDNjOVx1MDNiMlx1MDNjMVx1MDNhZlx1MDNiZlx1MDNjNV9cdTAzOWRcdTAzYmZcdTAzYjVcdTAzYmNcdTAzYjJcdTAzYzFcdTAzYWZcdTAzYmZcdTAzYzVfXHUwMzk0XHUwM2I1XHUwM2JhXHUwM2I1XHUwM2Jj''@;'; put 'put ''XHUwM2IyXHUwM2MxXHUwM2FmXHUwM2JmXHUwM2M1Ii5zcGxpdCgiXyIpLG1vbnRoczpmdW5jdGlvbihFZSxVKXtyZXR1cm4gRWU/InN0cmluZyI9PXR5cGVvZiBVJiYvRC8udGVzdChVLnN1YnN0cmluZygwLFUuaW5kZXhPZigiTU1NTSIpKSk/dGhpcy5fbW9udGhzR2VuaXRpdmVFbFtFZS5t''@;'; put 'put ''b250aCgpXTp0aGlzLl9tb250aHNOb21pbmF0aXZlRWxbRWUubW9udGgoKV06dGhpcy5fbW9udGhzTm9taW5hdGl2ZUVsfSxtb250aHNTaG9ydDoiXHUwMzk5XHUwM2IxXHUwM2JkX1x1MDNhNlx1MDNiNVx1MDNiMl9cdTAzOWNcdTAzYjFcdTAzYzFfXHUwMzkxXHUwM2MwXHUwM2MxX1x1MDM5''@;'; put 'put ''Y1x1MDNiMVx1MDNjYV9cdTAzOTlcdTAzYmZcdTAzYzVcdTAzYmRfXHUwMzk5XHUwM2JmXHUwM2M1XHUwM2JiX1x1MDM5MVx1MDNjNVx1MDNiM19cdTAzYTNcdTAzYjVcdTAzYzBfXHUwMzlmXHUwM2JhXHUwM2M0X1x1MDM5ZFx1MDNiZlx1MDNiNV9cdTAzOTRcdTAzYjVcdTAzYmEiLnNwbGl0''@;'; put 'put ''KCJfIiksd2Vla2RheXM6Ilx1MDM5YVx1MDNjNVx1MDNjMVx1MDNiOVx1MDNiMVx1MDNiYVx1MDNhZV9cdTAzOTRcdTAzYjVcdTAzYzVcdTAzYzRcdTAzYWRcdTAzYzFcdTAzYjFfXHUwM2E0XHUwM2MxXHUwM2FmXHUwM2M0XHUwM2I3X1x1MDNhNFx1MDNiNVx1MDNjNFx1MDNhY1x1MDNjMVx1''@;'; put 'put ''MDNjNFx1MDNiN19cdTAzYTBcdTAzYWRcdTAzYmNcdTAzYzBcdTAzYzRcdTAzYjdfXHUwM2EwXHUwM2IxXHUwM2MxXHUwM2IxXHUwM2MzXHUwM2JhXHUwM2I1XHUwM2M1XHUwM2FlX1x1MDNhM1x1MDNhY1x1MDNiMlx1MDNiMlx1MDNiMVx1MDNjNFx1MDNiZiIuc3BsaXQoIl8iKSx3ZWVrZGF5''@;'; put 'put ''c1Nob3J0OiJcdTAzOWFcdTAzYzVcdTAzYzFfXHUwMzk0XHUwM2I1XHUwM2M1X1x1MDNhNFx1MDNjMVx1MDNiOV9cdTAzYTRcdTAzYjVcdTAzYzRfXHUwM2EwXHUwM2I1XHUwM2JjX1x1MDNhMFx1MDNiMVx1MDNjMV9cdTAzYTNcdTAzYjFcdTAzYjIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46''@;'; put 'put ''Ilx1MDM5YVx1MDNjNV9cdTAzOTRcdTAzYjVfXHUwM2E0XHUwM2MxX1x1MDNhNFx1MDNiNV9cdTAzYTBcdTAzYjVfXHUwM2EwXHUwM2IxX1x1MDNhM1x1MDNiMSIuc3BsaXQoIl8iKSxtZXJpZGllbTpmdW5jdGlvbihFZSxVLFEpe3JldHVybiBFZT4xMT9RPyJcdTAzYmNcdTAzYmMiOiJcdTAz''@;'; put 'put ''OWNcdTAzOWMiOlE/Ilx1MDNjMFx1MDNiYyI6Ilx1MDNhMFx1MDM5YyJ9LGlzUE06ZnVuY3Rpb24oRWUpe3JldHVybiJcdTAzYmMiPT09KEVlKyIiKS50b0xvd2VyQ2FzZSgpWzBdfSxtZXJpZGllbVBhcnNlOi9bXHUwM2EwXHUwMzljXVwuP1x1MDM5Yz9cLj8vaSxsb25nRGF0ZUZvcm1hdDp7''@;'; put 'put ''TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyRWw6e3NhbWVEYXk6IltcdTAzYTNcdTAzYWVcdTAzYmNcdTAzYjVc''@;'; put 'put ''dTAzYzFcdTAzYjEge31dIExUIixuZXh0RGF5OiJbXHUwMzkxXHUwM2NkXHUwM2MxXHUwM2I5XHUwM2JmIHt9XSBMVCIsbmV4dFdlZWs6ImRkZGQgW3t9XSBMVCIsbGFzdERheToiW1x1MDNhN1x1MDNiOFx1MDNiNVx1MDNjMiB7fV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDY9''@;'; put 'put ''PT10aGlzLmRheSgpPyJbXHUwM2M0XHUwM2JmIFx1MDNjMFx1MDNjMVx1MDNiZlx1MDNiN1x1MDNiM1x1MDNiZlx1MDNjZFx1MDNiY1x1MDNiNVx1MDNiZFx1MDNiZl0gZGRkZCBbe31dIExUIjoiW1x1MDNjNFx1MDNiN1x1MDNiZCBcdTAzYzBcdTAzYzFcdTAzYmZcdTAzYjdcdTAzYjNcdTAz''@;'; put 'put ''YmZcdTAzY2RcdTAzYmNcdTAzYjVcdTAzYmRcdTAzYjddIGRkZGQgW3t9XSBMVCJ9LHNhbWVFbHNlOiJMIn0sY2FsZW5kYXI6ZnVuY3Rpb24oRWUsVSl7dmFyIFE9dGhpcy5fY2FsZW5kYXJFbFtFZV0saj1VJiZVLmhvdXJzKCk7cmV0dXJuIGZ1bmN0aW9uIEIoRWUpe3JldHVybiJ1bmRlZmlu''@;'; put 'put ''ZWQiIT10eXBlb2YgRnVuY3Rpb24mJkVlIGluc3RhbmNlb2YgRnVuY3Rpb258fCJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoRWUpfShRKSYmKFE9US5hcHBseShVKSksUS5yZXBsYWNlKCJ7fSIsaiUxMj09MT8iXHUwM2MzXHUwM2M0XHUwM2I3''@;'; put 'put ''IjoiXHUwM2MzXHUwM2M0XHUwM2I5XHUwM2MyIil9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTAzYzNcdTAzYjUgJXMiLHBhc3Q6IiVzIFx1MDNjMFx1MDNjMVx1MDNiOVx1MDNiZCIsczoiXHUwM2JiXHUwM2FmXHUwM2IzXHUwM2IxIFx1MDNiNFx1MDNiNVx1MDNjNVx1MDNjNFx1MDNiNVx1''@;'; put 'put ''MDNjMVx1MDNjY1x1MDNiYlx1MDNiNVx1MDNjMFx1MDNjNFx1MDNiMSIsc3M6IiVkIFx1MDNiNFx1MDNiNVx1MDNjNVx1MDNjNFx1MDNiNVx1MDNjMVx1MDNjY1x1MDNiYlx1MDNiNVx1MDNjMFx1MDNjNFx1MDNiMSIsbToiXHUwM2FkXHUwM2JkXHUwM2IxIFx1MDNiYlx1MDNiNVx1MDNjMFx1''@;'; put 'put ''MDNjNFx1MDNjYyIsbW06IiVkIFx1MDNiYlx1MDNiNVx1MDNjMFx1MDNjNFx1MDNhYyIsaDoiXHUwM2JjXHUwM2FmXHUwM2IxIFx1MDNjZVx1MDNjMVx1MDNiMSIsaGg6IiVkIFx1MDNjZVx1MDNjMVx1MDNiNVx1MDNjMiIsZDoiXHUwM2JjXHUwM2FmXHUwM2IxIFx1MDNiY1x1MDNhZFx1MDNj''@;'; put 'put ''MVx1MDNiMSIsZGQ6IiVkIFx1MDNiY1x1MDNhZFx1MDNjMVx1MDNiNVx1MDNjMiIsTToiXHUwM2FkXHUwM2JkXHUwM2IxXHUwM2MyIFx1MDNiY1x1MDNhZVx1MDNiZFx1MDNiMVx1MDNjMiIsTU06IiVkIFx1MDNiY1x1MDNhZVx1MDNiZFx1MDNiNVx1MDNjMiIseToiXHUwM2FkXHUwM2JkXHUw''@;'; put 'put ''M2IxXHUwM2MyIFx1MDNjN1x1MDNjMVx1MDNjY1x1MDNiZFx1MDNiZlx1MDNjMiIseXk6IiVkIFx1MDNjN1x1MDNjMVx1MDNjY1x1MDNiZFx1MDNiOVx1MDNiMSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cdTAzYjcvLG9yZGluYWw6IiVkXHUwM2I3Iix3ZWVrOntkb3c6MSxk''@;'; put 'put ''b3k6NH19KX0oTCgxNTQzOSkpfSw5NDM2OTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoImVuLWF1Iix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9P''@;'; put 'put ''Y3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9Gcmlk''@;'; put 'put ''YXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNz''@;'; put 'put ''IEEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2Vlazoi''@;'; put 'put ''ZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLHNzOiIlZCBzZWNvbmRzIixt''@;'; put 'put ''OiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8''@;'; put 'put ''bmR8cmR8dGgpLyxvcmRpbmFsOmZ1bmN0aW9uKEUpe3ZhciBFZT1FJTEwO3JldHVybiBFKygxPT1+fihFJTEwMC8xMCk/InRoIjoxPT09RWU/InN0IjoyPT09RWU/Im5kIjozPT09RWU/InJkIjoidGgiKX0sd2Vlazp7ZG93OjAsZG95OjR9fSl9KEwoMTU0MzkpKX0sNjA1MzA6ZnVuY3Rpb24o''@;'; put 'put ''WGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJlbi1jYSIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8i''@;'; put 'put ''KSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hv''@;'; put 'put ''cnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJZWVlZLU1NLUREIixMTDoiTU1NTSBELCBZWVlZ''@;'; put 'put ''IixMTEw6Ik1NTU0gRCwgWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIE1NTU0gRCwgWVlZWSBoOm1tIEEifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRh''@;'; put 'put ''eSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixzczoiJWQgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJh''@;'; put 'put ''biBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihFKXt2''@;'; put 'put ''YXIgRWU9RSUxMDtyZXR1cm4gRSsoMT09fn4oRSUxMDAvMTApPyJ0aCI6MT09PUVlPyJzdCI6Mj09PUVlPyJuZCI6Mz09PUVlPyJyZCI6InRoIil9fSl9KEwoMTU0MzkpKX0sOTk5ODpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUo''@;'; put 'put ''ImVuLWdiIix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9P''@;'; put 'put ''Y3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlz''@;'; put 'put ''TWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1t''@;'; put 'put ''In0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxh''@;'; put 'put ''dGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1N''@;'; put 'put ''OiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oRSl7dmFyIEVlPUUlMTA7cmV0dXJuIEUrKDE9PX5+KEUlMTAwLzEwKT8idGgiOjE9PT1FZT8ic3QiOjI9PT1F''@;'; put 'put ''ZT8ibmQiOjM9PT1FZT8icmQiOiJ0aCIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSwxMzM5MTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoImVuLWllIix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNo''@;'; put 'put ''X0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5''@;'; put 'put ''X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxs''@;'; put 'put ''b25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4''@;'; put 'put ''dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixz''@;'; put 'put ''OiJhIGZldyBzZWNvbmRzIixzczoiJWQgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxk''@;'; put 'put ''YXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihFKXt2YXIgRWU9RSUxMDtyZXR1cm4gRSsoMT09fn4oRSUxMDAvMTApPyJ0aCI6MT09PUVlPyJzdCI6Mj09PUVlPyJuZCI6Mz09PUVlPyJyZCI6InRoIil9LHdlZWs6e2RvdzoxLGRv''@;'; put 'put ''eTo0fX0pfShMKDE1NDM5KSl9LDc1NDE0OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgiZW4taWwiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09j''@;'; put 'put ''dG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRh''@;'; put 'put ''eV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3Mi''@;'; put 'put ''LEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQg''@;'; put 'put ''W2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixzczoiJWQgc2Vjb25kcyIsbToiYSBt''@;'; put 'put ''aW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJk''@;'; put 'put ''fHRoKS8sb3JkaW5hbDpmdW5jdGlvbihFKXt2YXIgRWU9RSUxMDtyZXR1cm4gRSsoMT09fn4oRSUxMDAvMTApPyJ0aCI6MT09PUVlPyJzdCI6Mj09PUVlPyJuZCI6Mz09PUVlPyJyZCI6InRoIil9fSl9KEwoMTU0MzkpKX0sMTk2MTU6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsi''@;'; put 'put ''dXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJlbi1pbiIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9N''@;'; put 'put ''YXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVf''@;'; put 'put ''RnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgaDptbSBB''@;'; put 'put ''IixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0g''@;'; put 'put ''ZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixzczoiJWQgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEg''@;'; put 'put ''ZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihFKXt2YXIgRWU9RSUxMDtyZXR1cm4gRSsoMT09fn4o''@;'; put 'put ''RSUxMDAvMTApPyJ0aCI6MT09PUVlPyJzdCI6Mj09PUVlPyJuZCI6Mz09PUVlPyJyZCI6InRoIil9LHdlZWs6e2RvdzowLGRveTo2fX0pfShMKDE1NDM5KSl9LDIxMjQ4OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgiZW4tbnoi''@;'; put 'put ''LHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3Zf''@;'; put 'put ''RGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1''@;'; put 'put ''X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBIn0s''@;'; put 'put ''Y2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2''@;'; put 'put ''ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIl''@;'; put 'put ''ZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oRSl7dmFyIEVlPUUlMTA7cmV0dXJuIEUrKDE9PX5+KEUlMTAwLzEwKT8idGgiOjE9PT1FZT8ic3QiOjI9PT1FZT8i''@;'; put 'put ''bmQiOjM9PT1FZT8icmQiOiJ0aCIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSwxMzc2NzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoImVuLXNnIix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0Fw''@;'; put 'put ''cmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01v''@;'; put 'put ''bmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25n''@;'; put 'put ''RGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHRE''@;'; put 'put ''YXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoi''@;'; put 'put ''YSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5''@;'; put 'put ''T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oRSl7dmFyIEVlPUUlMTA7cmV0dXJuIEUrKDE9PX5+KEUlMTAwLzEwKT8idGgiOjE9PT1FZT8ic3QiOjI9PT1FZT8ibmQiOjM9PT1FZT8icmQiOiJ0aCIpfSx3ZWVrOntkb3c6MSxkb3k6''@;'; put 'put ''NH19KX0oTCgxNTQzOSkpfSw4NDUzMDpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoImVvIix7bW9udGhzOiJqYW51YXJvX2ZlYnJ1YXJvX21hcnRvX2Fwcmlsb19tYWpvX2p1bmlvX2p1bGlvX2FcdTAxNmRndXN0b19zZXB0ZW1i''@;'; put 'put ''cm9fb2t0b2Jyb19ub3ZlbWJyb19kZWNlbWJybyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJ0X2Fwcl9tYWpfanVuX2p1bF9hXHUwMTZkZ19zZXB0X29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJkaW1hblx1MDEwOW9fbHVuZG9fbWFyZG9fbWVya3JlZG9f''@;'; put 'put ''XHUwMTM1YVx1MDE2ZGRvX3ZlbmRyZWRvX3NhYmF0byIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkaW1fbHVuX21hcmRfbWVya19cdTAxMzVhXHUwMTZkX3Zlbl9zYWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRpX2x1X21hX21lX1x1MDEzNWFfdmVfc2EiLnNwbGl0KCJfIiksbG9u''@;'; put 'put ''Z0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS1NTS1ERCIsTEw6IltsYV0gRFstYW4gZGVdIE1NTU0sIFlZWVkiLExMTDoiW2xhXSBEWy1hbiBkZV0gTU1NTSwgWVlZWSBISDptbSIsTExMTDoiZGRkZFtuXSwgW2xhXSBEWy1hbiBkZV0gTU1NTSwgWVlZWSBI''@;'; put 'put ''SDptbSIsbGxsbDoiZGRkLCBbbGFdIERbLWFuIGRlXSBNTU0sIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9bYXBdXC50XC5tL2ksaXNQTTpmdW5jdGlvbihFKXtyZXR1cm4icCI9PT1FLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpfSxtZXJpZGllbTpmdW5jdGlvbihFLEVlLFUpe3JldHVy''@;'; put 'put ''biBFPjExP1U/InAudC5tLiI6IlAuVC5NLiI6VT8iYS50Lm0uIjoiQS5ULk0uIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIb2RpYVx1MDE2ZCBqZV0gTFQiLG5leHREYXk6IltNb3JnYVx1MDE2ZCBqZV0gTFQiLG5leHRXZWVrOiJkZGRkW24gamVdIExUIixsYXN0RGF5OiJbSGllcmFcdTAxNmQg''@;'; put 'put ''amVdIExUIixsYXN0V2VlazoiW3Bhc2ludGFuXSBkZGRkW24gamVdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJwb3N0ICVzIixwYXN0OiJhbnRhXHUwMTZkICVzIixzOiJrZWxrYWogc2VrdW5kb2oiLHNzOiIlZCBzZWt1bmRvaiIsbToidW51IG1pbnV0byIsbW06''@;'; put 'put ''IiVkIG1pbnV0b2oiLGg6InVudSBob3JvIixoaDoiJWQgaG9yb2oiLGQ6InVudSB0YWdvIixkZDoiJWQgdGFnb2oiLE06InVudSBtb25hdG8iLE1NOiIlZCBtb25hdG9qIix5OiJ1bnUgamFybyIseXk6IiVkIGphcm9qIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfWEvLG9yZGlu''@;'; put 'put ''YWw6IiVkYSIsd2Vlazp7ZG93OjEsZG95Ojd9fSl9KEwoMTU0MzkpKX0sMTg5NDQ6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9ImVuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuIi5zcGxp''@;'; put 'put ''dCgiXyIpLEU9ImVuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljIi5zcGxpdCgiXyIpLEVlPVsvXmVuZS9pLC9eZmViL2ksL15tYXIvaSwvXmFici9pLC9ebWF5L2ksL15qdW4vaSwvXmp1bC9pLC9eYWdvL2ksL15zZXAvaSwvXm9jdC9pLC9ebm92L2ksL15k''@;'; put 'put ''aWMvaV0sVT0vXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlfGVuZVwuP3xmZWJcLj98bWFyXC4/fGFiclwuP3xtYXlcLj98anVuXC4/fGp1bFwuP3xhZ29cLj98c2VwXC4/fG9j''@;'; put 'put ''dFwuP3xub3ZcLj98ZGljXC4/KS9pO21lLmRlZmluZUxvY2FsZSgiZXMtZG8iLHttb250aHM6ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hv''@;'; put 'put ''cnQ6ZnVuY3Rpb24oaixyZSl7cmV0dXJuIGo/Ly1NTU0tLy50ZXN0KHJlKT9FW2oubW9udGgoKV06QltqLm1vbnRoKCldOkJ9LG1vbnRoc1JlZ2V4OlUsbW9udGhzU2hvcnRSZWdleDpVLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xq''@;'; put 'put ''dWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmUpL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXihlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wuPykv''@;'; put 'put ''aSxtb250aHNQYXJzZTpFZSxsb25nTW9udGhzUGFyc2U6RWUsc2hvcnRNb250aHNQYXJzZTpFZSx3ZWVrZGF5czoiZG9taW5nb19sdW5lc19tYXJ0ZXNfbWlceGU5cmNvbGVzX2p1ZXZlc192aWVybmVzX3NceGUxYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb20uX2x1bi5fbWFy''@;'; put 'put ''Ll9taVx4ZTkuX2p1ZS5fdmllLl9zXHhlMWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb19sdV9tYV9taV9qdV92aV9zXHhlMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJERC9NTS9Z''@;'; put 'put ''WVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVybiJbaG95IGEgbGEiKygxIT09dGhp''@;'; put 'put ''cy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlttYVx4ZjFhbmEgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgW2EgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoi''@;'; put 'put ''IikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltheWVyIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExU''@;'; put 'put ''In0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZW4gJXMiLHBhc3Q6ImhhY2UgJXMiLHM6InVub3Mgc2VndW5kb3MiLHNzOiIlZCBzZWd1bmRvcyIsbToidW4gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW5hIGhvcmEiLGhoOiIlZCBob3JhcyIsZDoidW4gZFx4ZWRh''@;'; put 'put ''IixkZDoiJWQgZFx4ZWRhcyIsdzoidW5hIHNlbWFuYSIsd3c6IiVkIHNlbWFuYXMiLE06InVuIG1lcyIsTU06IiVkIG1lc2VzIix5OiJ1biBhXHhmMW8iLHl5OiIlZCBhXHhmMW9zIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx4YmEvLG9yZGluYWw6IiVkXHhiYSIsd2Vlazp7''@;'; put 'put ''ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sMjkxMTY6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9ImVuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuIi5zcGxpdCgiXyIpLEU9ImVuZV9m''@;'; put 'put ''ZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljIi5zcGxpdCgiXyIpLEVlPVsvXmVuZS9pLC9eZmViL2ksL15tYXIvaSwvXmFici9pLC9ebWF5L2ksL15qdW4vaSwvXmp1bC9pLC9eYWdvL2ksL15zZXAvaSwvXm9jdC9pLC9ebm92L2ksL15kaWMvaV0sVT0vXihlbmVy''@;'; put 'put ''b3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlfGVuZVwuP3xmZWJcLj98bWFyXC4/fGFiclwuP3xtYXlcLj98anVuXC4/fGp1bFwuP3xhZ29cLj98c2VwXC4/fG9jdFwuP3xub3ZcLj98ZGlj''@;'; put 'put ''XC4/KS9pO21lLmRlZmluZUxvY2FsZSgiZXMtbXgiLHttb250aHM6ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oaixy''@;'; put 'put ''ZSl7cmV0dXJuIGo/Ly1NTU0tLy50ZXN0KHJlKT9FW2oubW9udGgoKV06QltqLm1vbnRoKCldOkJ9LG1vbnRoc1JlZ2V4OlUsbW9udGhzU2hvcnRSZWdleDpVLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2Vw''@;'; put 'put ''dGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmUpL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXihlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wuPykvaSxtb250aHNQYXJzZTpF''@;'; put 'put ''ZSxsb25nTW9udGhzUGFyc2U6RWUsc2hvcnRNb250aHNQYXJzZTpFZSx3ZWVrZGF5czoiZG9taW5nb19sdW5lc19tYXJ0ZXNfbWlceGU5cmNvbGVzX2p1ZXZlc192aWVybmVzX3NceGUxYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb20uX2x1bi5fbWFyLl9taVx4ZTkuX2p1ZS5f''@;'; put 'put ''dmllLl9zXHhlMWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb19sdV9tYV9taV9qdV92aV9zXHhlMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1N''@;'; put 'put ''TSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2hveSBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExU''@;'; put 'put ''In0sbmV4dERheTpmdW5jdGlvbigpe3JldHVybiJbbWFceGYxYW5hIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdERheTpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiJbYXllciBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW2VsXSBkZGRkIFtwYXNhZG8gYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRp''@;'; put 'put ''dmVUaW1lOntmdXR1cmU6ImVuICVzIixwYXN0OiJoYWNlICVzIixzOiJ1bm9zIHNlZ3VuZG9zIixzczoiJWQgc2VndW5kb3MiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVuYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVuIGRceGVkYSIsZGQ6IiVkIGRceGVkYXMiLHc6InVu''@;'; put 'put ''YSBzZW1hbmEiLHd3OiIlZCBzZW1hbmFzIixNOiJ1biBtZXMiLE1NOiIlZCBtZXNlcyIseToidW4gYVx4ZjFvIix5eToiJWQgYVx4ZjFvcyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1ceGJhLyxvcmRpbmFsOiIlZFx4YmEiLHdlZWs6e2RvdzowLGRveTo0fSxpbnZhbGlkRGF0''@;'; put 'put ''ZToiRmVjaGEgaW52XHhlMWxpZGEifSl9KEwoMTU0MzkpKX0sODM2MDk6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9ImVuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuIi5zcGxpdCgiXyIp''@;'; put 'put ''LEU9ImVuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljIi5zcGxpdCgiXyIpLEVlPVsvXmVuZS9pLC9eZmViL2ksL15tYXIvaSwvXmFici9pLC9ebWF5L2ksL15qdW4vaSwvXmp1bC9pLC9eYWdvL2ksL15zZXAvaSwvXm9jdC9pLC9ebm92L2ksL15kaWMvaV0s''@;'; put 'put ''VT0vXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlfGVuZVwuP3xmZWJcLj98bWFyXC4/fGFiclwuP3xtYXlcLj98anVuXC4/fGp1bFwuP3xhZ29cLj98c2VwXC4/fG9jdFwuP3xu''@;'; put 'put ''b3ZcLj98ZGljXC4/KS9pO21lLmRlZmluZUxvY2FsZSgiZXMtdXMiLHttb250aHM6ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVu''@;'; put 'put ''Y3Rpb24oaixyZSl7cmV0dXJuIGo/Ly1NTU0tLy50ZXN0KHJlKT9FW2oubW9udGgoKV06QltqLm1vbnRoKCldOkJ9LG1vbnRoc1JlZ2V4OlUsbW9udGhzU2hvcnRSZWdleDpVLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xh''@;'; put 'put ''Z29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmUpL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXihlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wuPykvaSxtb250''@;'; put 'put ''aHNQYXJzZTpFZSxsb25nTW9udGhzUGFyc2U6RWUsc2hvcnRNb250aHNQYXJzZTpFZSx3ZWVrZGF5czoiZG9taW5nb19sdW5lc19tYXJ0ZXNfbWlceGU5cmNvbGVzX2p1ZXZlc192aWVybmVzX3NceGUxYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb20uX2x1bi5fbWFyLl9taVx4''@;'; put 'put ''ZTkuX2p1ZS5fdmllLl9zXHhlMWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb19sdV9tYV9taV9qdV92aV9zXHhlMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJNTS9ERC9ZWVlZIixM''@;'; put 'put ''TDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVybiJbaG95IGEgbGEiKygxIT09dGhpcy5ob3Vy''@;'; put 'put ''cygpPyJzIjoiIikrIl0gTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlttYVx4ZjFhbmEgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgW2EgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0g''@;'; put 'put ''TFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltheWVyIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sc2Ft''@;'; put 'put ''ZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZW4gJXMiLHBhc3Q6ImhhY2UgJXMiLHM6InVub3Mgc2VndW5kb3MiLHNzOiIlZCBzZWd1bmRvcyIsbToidW4gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW5hIGhvcmEiLGhoOiIlZCBob3JhcyIsZDoidW4gZFx4ZWRhIixkZDoi''@;'; put 'put ''JWQgZFx4ZWRhcyIsdzoidW5hIHNlbWFuYSIsd3c6IiVkIHNlbWFuYXMiLE06InVuIG1lcyIsTU06IiVkIG1lc2VzIix5OiJ1biBhXHhmMW8iLHl5OiIlZCBhXHhmMW9zIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx4YmEvLG9yZGluYWw6IiVkXHhiYSIsd2Vlazp7ZG93OjAs''@;'; put 'put ''ZG95OjZ9fSl9KEwoMTU0MzkpKX0sODY4NjY6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9ImVuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuIi5zcGxpdCgiXyIpLEU9ImVuZV9mZWJfbWFy''@;'; put 'put ''X2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljIi5zcGxpdCgiXyIpLEVlPVsvXmVuZS9pLC9eZmViL2ksL15tYXIvaSwvXmFici9pLC9ebWF5L2ksL15qdW4vaSwvXmp1bC9pLC9eYWdvL2ksL15zZXAvaSwvXm9jdC9pLC9ebm92L2ksL15kaWMvaV0sVT0vXihlbmVyb3xmZWJy''@;'; put 'put ''ZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlfGVuZVwuP3xmZWJcLj98bWFyXC4/fGFiclwuP3xtYXlcLj98anVuXC4/fGp1bFwuP3xhZ29cLj98c2VwXC4/fG9jdFwuP3xub3ZcLj98ZGljXC4/KS9p''@;'; put 'put ''O21lLmRlZmluZUxvY2FsZSgiZXMiLHttb250aHM6ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oaixyZSl7cmV0dXJu''@;'; put 'put ''IGo/Ly1NTU0tLy50ZXN0KHJlKT9FW2oubW9udGgoKV06QltqLm1vbnRoKCldOkJ9LG1vbnRoc1JlZ2V4OlUsbW9udGhzU2hvcnRSZWdleDpVLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxv''@;'; put 'put ''Y3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmUpL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXihlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wuPykvaSxtb250aHNQYXJzZTpFZSxsb25nTW9u''@;'; put 'put ''dGhzUGFyc2U6RWUsc2hvcnRNb250aHNQYXJzZTpFZSx3ZWVrZGF5czoiZG9taW5nb19sdW5lc19tYXJ0ZXNfbWlceGU5cmNvbGVzX2p1ZXZlc192aWVybmVzX3NceGUxYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb20uX2x1bi5fbWFyLl9taVx4ZTkuX2p1ZS5fdmllLl9zXHhl''@;'; put 'put ''MWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb19sdV9tYV9taV9qdV92aV9zXHhlMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZ''@;'; put 'put ''WVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2hveSBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dERh''@;'; put 'put ''eTpmdW5jdGlvbigpe3JldHVybiJbbWFceGYxYW5hIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiJbYXllciBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW2VsXSBkZGRkIFtwYXNhZG8gYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntm''@;'; put 'put ''dXR1cmU6ImVuICVzIixwYXN0OiJoYWNlICVzIixzOiJ1bm9zIHNlZ3VuZG9zIixzczoiJWQgc2VndW5kb3MiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVuYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVuIGRceGVkYSIsZGQ6IiVkIGRceGVkYXMiLHc6InVuYSBzZW1hbmEi''@;'; put 'put ''LHd3OiIlZCBzZW1hbmFzIixNOiJ1biBtZXMiLE1NOiIlZCBtZXNlcyIseToidW4gYVx4ZjFvIix5eToiJWQgYVx4ZjFvcyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1ceGJhLyxvcmRpbmFsOiIlZFx4YmEiLHdlZWs6e2RvdzoxLGRveTo0fSxpbnZhbGlkRGF0ZToiRmVjaGEg''@;'; put 'put ''aW52XHhlMWxpZGEifSl9KEwoMTU0MzkpKX0sOTY3MjU6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gQihFZSxVLFEsail7dmFyIHJlPXtzOlsibVx4ZjVuZSBzZWt1bmRpIiwibVx4ZjVuaSBzZWt1bmQiLCJwYWFyIHNla3VuZGl0Il0sc3M6''@;'; put 'put ''W0VlKyJzZWt1bmRpIixFZSsic2VrdW5kaXQiXSxtOlsiXHhmY2hlIG1pbnV0aSIsIlx4ZmNrcyBtaW51dCJdLG1tOltFZSsiIG1pbnV0aSIsRWUrIiBtaW51dGl0Il0saDpbIlx4ZmNoZSB0dW5uaSIsInR1bmQgYWVnYSIsIlx4ZmNrcyB0dW5kIl0saGg6W0VlKyIgdHVubmkiLEVlKyIgdHVu''@;'; put 'put ''ZGkiXSxkOlsiXHhmY2hlIHBceGU0ZXZhIiwiXHhmY2tzIHBceGU0ZXYiXSxNOlsia3V1IGFqYSIsImt1dSBhZWdhIiwiXHhmY2tzIGt1dSJdLE1NOltFZSsiIGt1dSIsRWUrIiBrdXVkIl0seTpbIlx4ZmNoZSBhYXN0YSIsImFhc3RhIiwiXHhmY2tzIGFhc3RhIl0seXk6W0VlKyIgYWFzdGEi''@;'; put 'put ''LEVlKyIgYWFzdGF0Il19O3JldHVybiBVP3JlW1FdWzJdP3JlW1FdWzJdOnJlW1FdWzFdOmo/cmVbUV1bMF06cmVbUV1bMV19bWUuZGVmaW5lTG9jYWxlKCJldCIse21vbnRoczoiamFhbnVhcl92ZWVicnVhcl9tXHhlNHJ0c19hcHJpbGxfbWFpX2p1dW5pX2p1dWxpX2F1Z3VzdF9zZXB0ZW1i''@;'; put 'put ''ZXJfb2t0b29iZXJfbm92ZW1iZXJfZGV0c2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYWFuX3ZlZWJyX21ceGU0cnRzX2Fwcl9tYWlfanV1bmlfanV1bGlfYXVnX3NlcHRfb2t0X25vdl9kZXRzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJwXHhmY2hhcFx4ZTRldl9lc21hc3BceGU0''@;'; put 'put ''ZXZfdGVpc2lwXHhlNGV2X2tvbG1hcFx4ZTRldl9uZWxqYXBceGU0ZXZfcmVlZGVfbGF1cFx4ZTRldiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJQX0VfVF9LX05fUl9MIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJQX0VfVF9LX05fUl9MIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0''@;'; put 'put ''OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVFx4ZTRuYSxdIExUIixuZXh0RGF5OiJbSG9tbWUs''@;'; put 'put ''XSBMVCIsbmV4dFdlZWs6IltKXHhlNHJnbWluZV0gZGRkZCBMVCIsbGFzdERheToiW0VpbGUsXSBMVCIsbGFzdFdlZWs6IltFZWxtaW5lXSBkZGRkIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBwXHhlNHJhc3QiLHBhc3Q6IiVzIHRhZ2FzaSIsczpCLHNzOkIs''@;'; put 'put ''bTpCLG1tOkIsaDpCLGhoOkIsZDpCLGRkOiIlZCBwXHhlNGV2YSIsTTpCLE1NOkIseTpCLHl5OkJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw2NzkzMTpmdW5jdGlvbihYZSxKZSxMKXsh''@;'; put 'put ''ZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoImV1Iix7bW9udGhzOiJ1cnRhcnJpbGFfb3RzYWlsYV9tYXJ0eG9hX2FwaXJpbGFfbWFpYXR6YV9la2FpbmFfdXp0YWlsYV9hYnV6dHVhX2lyYWlsYV91cnJpYV9hemFyb2FfYWJlbmR1YSIuc3BsaXQoIl8iKSxtb250''@;'; put 'put ''aHNTaG9ydDoidXJ0Ll9vdHMuX21hci5fYXBpLl9tYWkuX2VrYS5fdXp0Ll9hYnUuX2lyYS5fdXJyLl9hemEuX2FiZS4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiaWdhbmRlYV9hc3RlbGVoZW5hX2FzdGVhcnRlYV9hc3RlYXprZW5hX29zdGVndW5hX29zdGly''@;'; put 'put ''YWxhX2xhcnVuYmF0YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJpZy5fYWwuX2FyLl9hei5fb2cuX29sLl9sci4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImlnX2FsX2FyX2F6X29nX29sX2xyIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7''@;'; put 'put ''TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZLU1NLUREIixMTDoiWVlZWVtrb10gTU1NTVtyZW5dIERbYV0iLExMTDoiWVlZWVtrb10gTU1NTVtyZW5dIERbYV0gSEg6bW0iLExMTEw6ImRkZGQsIFlZWVlba29dIE1NTU1bcmVuXSBEW2FdIEhIOm1tIixsOiJZWVlZLU0tRCIsbGw6''@;'; put 'put ''IllZWVlba29dIE1NTSBEW2FdIixsbGw6IllZWVlba29dIE1NTSBEW2FdIEhIOm1tIixsbGxsOiJkZGQsIFlZWVlba29dIE1NTSBEW2FdIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltnYXVyXSBMVFtldGFuXSIsbmV4dERheToiW2JpaGFyXSBMVFtldGFuXSIsbmV4dFdlZWs6ImRkZGQg''@;'; put 'put ''TFRbZXRhbl0iLGxhc3REYXk6IlthdHpvXSBMVFtldGFuXSIsbGFzdFdlZWs6IlthdXJyZWtvXSBkZGRkIExUW2V0YW5dIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBiYXJydSIscGFzdDoiZHVlbGEgJXMiLHM6InNlZ3VuZG8gYmF0enVrIixzczoiJWQgc2VndW5k''@;'; put 'put ''byIsbToibWludXR1IGJhdCIsbW06IiVkIG1pbnV0dSIsaDoib3JkdSBiYXQiLGhoOiIlZCBvcmR1IixkOiJlZ3VuIGJhdCIsZGQ6IiVkIGVndW4iLE06ImhpbGFiZXRlIGJhdCIsTU06IiVkIGhpbGFiZXRlIix5OiJ1cnRlIGJhdCIseXk6IiVkIHVydGUifSxkYXlPZk1vbnRoT3JkaW5hbFBh''@;'; put 'put ''cnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSl9KEwoMTU0MzkpKX0sNTY0MTc6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9ezE6Ilx1MDZmMSIsMjoiXHUwNmYyIiwzOiJcdTA2ZjMiLDQ6Ilx1MDZmNCIs''@;'; put 'put ''NToiXHUwNmY1Iiw2OiJcdTA2ZjYiLDc6Ilx1MDZmNyIsODoiXHUwNmY4Iiw5OiJcdTA2ZjkiLDA6Ilx1MDZmMCJ9LEU9eyJcdTA2ZjEiOiIxIiwiXHUwNmYyIjoiMiIsIlx1MDZmMyI6IjMiLCJcdTA2ZjQiOiI0IiwiXHUwNmY1IjoiNSIsIlx1MDZmNiI6IjYiLCJcdTA2ZjciOiI3IiwiXHUw''@;'; put 'put ''NmY4IjoiOCIsIlx1MDZmOSI6IjkiLCJcdTA2ZjAiOiIwIn07bWUuZGVmaW5lTG9jYWxlKCJmYSIse21vbnRoczoiXHUwNjk4XHUwNjI3XHUwNjQ2XHUwNjQ4XHUwNmNjXHUwNjQ3X1x1MDY0MVx1MDY0OFx1MDYzMVx1MDZjY1x1MDY0N19cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzNfXHUwNjIy''@;'; put 'put ''XHUwNjQ4XHUwNjMxXHUwNmNjXHUwNjQ0X1x1MDY0NVx1MDY0N19cdTA2OThcdTA2NDhcdTA2MjZcdTA2NDZfXHUwNjk4XHUwNjQ4XHUwNjI2XHUwNmNjXHUwNjQ3X1x1MDYyN1x1MDY0OFx1MDYyYV9cdTA2MzNcdTA2N2VcdTA2MmFcdTA2MjdcdTA2NDVcdTA2MjhcdTA2MzFfXHUwNjI3XHUw''@;'; put 'put ''NmE5XHUwNjJhXHUwNjI4XHUwNjMxX1x1MDY0Nlx1MDY0OFx1MDYyN1x1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MmZcdTA2MzNcdTA2MjdcdTA2NDVcdTA2MjhcdTA2MzEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDY5OFx1MDYyN1x1MDY0Nlx1MDY0OFx1MDZjY1x1MDY0N19cdTA2NDFc''@;'; put 'put ''dTA2NDhcdTA2MzFcdTA2Y2NcdTA2NDdfXHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjMzX1x1MDYyMlx1MDY0OFx1MDYzMVx1MDZjY1x1MDY0NF9cdTA2NDVcdTA2NDdfXHUwNjk4XHUwNjQ4XHUwNjI2XHUwNjQ2X1x1MDY5OFx1MDY0OFx1MDYyNlx1MDZjY1x1MDY0N19cdTA2MjdcdTA2NDhcdTA2''@;'; put 'put ''MmFfXHUwNjMzXHUwNjdlXHUwNjJhXHUwNjI3XHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyN1x1MDZhOVx1MDYyYVx1MDYyOFx1MDYzMV9cdTA2NDZcdTA2NDhcdTA2MjdcdTA2NDVcdTA2MjhcdTA2MzFfXHUwNjJmXHUwNjMzXHUwNjI3XHUwNjQ1XHUwNjI4XHUwNjMxIi5zcGxpdCgiXyIpLHdl''@;'; put 'put ''ZWtkYXlzOiJcdTA2Y2NcdTA2YTlcdTIwMGNcdTA2MzRcdTA2NDZcdTA2MjhcdTA2NDdfXHUwNjJmXHUwNjQ4XHUwNjM0XHUwNjQ2XHUwNjI4XHUwNjQ3X1x1MDYzM1x1MDY0N1x1MjAwY1x1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0N19cdTA2ODZcdTA2NDdcdTA2MjdcdTA2MzFcdTA2MzRcdTA2''@;'; put 'put ''NDZcdTA2MjhcdTA2NDdfXHUwNjdlXHUwNjQ2XHUwNjJjXHUyMDBjXHUwNjM0XHUwNjQ2XHUwNjI4XHUwNjQ3X1x1MDYyY1x1MDY0NVx1MDYzOVx1MDY0N19cdTA2MzRcdTA2NDZcdTA2MjhcdTA2NDciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNmNjXHUwNmE5XHUyMDBjXHUwNjM0''@;'; put 'put ''XHUwNjQ2XHUwNjI4XHUwNjQ3X1x1MDYyZlx1MDY0OFx1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0N19cdTA2MzNcdTA2NDdcdTIwMGNcdTA2MzRcdTA2NDZcdTA2MjhcdTA2NDdfXHUwNjg2XHUwNjQ3XHUwNjI3XHUwNjMxXHUwNjM0XHUwNjQ2XHUwNjI4XHUwNjQ3X1x1MDY3ZVx1MDY0Nlx1MDYy''@;'; put 'put ''Y1x1MjAwY1x1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0N19cdTA2MmNcdTA2NDVcdTA2MzlcdTA2NDdfXHUwNjM0XHUwNjQ2XHUwNjI4XHUwNjQ3Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA2Y2NfXHUwNjJmX1x1MDYzM19cdTA2ODZfXHUwNjdlX1x1MDYyY19cdTA2MzQiLnNwbGl0KCJf''@;'; put 'put ''Iiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBh''@;'; put 'put ''cnNlOi9cdTA2NDJcdTA2MjhcdTA2NDQgXHUwNjI3XHUwNjMyIFx1MDYzOFx1MDY0N1x1MDYzMXxcdTA2MjhcdTA2MzlcdTA2MmYgXHUwNjI3XHUwNjMyIFx1MDYzOFx1MDY0N1x1MDYzMS8saXNQTTpmdW5jdGlvbihVKXtyZXR1cm4vXHUwNjI4XHUwNjM5XHUwNjJmIFx1MDYyN1x1MDYzMiBc''@;'; put 'put ''dTA2MzhcdTA2NDdcdTA2MzEvLnRlc3QoVSl9LG1lcmlkaWVtOmZ1bmN0aW9uKFUsUSxqKXtyZXR1cm4gVTwxMj8iXHUwNjQyXHUwNjI4XHUwNjQ0IFx1MDYyN1x1MDYzMiBcdTA2MzhcdTA2NDdcdTA2MzEiOiJcdTA2MjhcdTA2MzlcdTA2MmYgXHUwNjI3XHUwNjMyIFx1MDYzOFx1MDY0N1x1''@;'; put 'put ''MDYzMSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNjI3XHUwNjQ1XHUwNjMxXHUwNjQ4XHUwNjMyIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyYV0gTFQiLG5leHREYXk6IltcdTA2NDFcdTA2MzFcdTA2MmZcdTA2MjcgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhXSBMVCIsbmV4dFdlZWs6ImRk''@;'; put 'put ''ZGQgW1x1MDYzM1x1MDYyN1x1MDYzOVx1MDYyYV0gTFQiLGxhc3REYXk6IltcdTA2MmZcdTA2Y2NcdTA2MzFcdTA2NDhcdTA2MzIgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhXSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MDY3ZVx1MDZjY1x1MDYzNF0gW1x1MDYzM1x1MDYyN1x1MDYzOVx1MDYy''@;'; put 'put ''YV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDYyZlx1MDYzMSAlcyIscGFzdDoiJXMgXHUwNjdlXHUwNmNjXHUwNjM0IixzOiJcdTA2ODZcdTA2NDZcdTA2MmYgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNmNjXHUwNjQ3IixzczoiJWQgXHUwNjJiXHUwNjI3XHUw''@;'; put 'put ''NjQ2XHUwNmNjXHUwNjQ3IixtOiJcdTA2Y2NcdTA2YTkgXHUwNjJmXHUwNjQyXHUwNmNjXHUwNjQyXHUwNjQ3IixtbToiJWQgXHUwNjJmXHUwNjQyXHUwNmNjXHUwNjQyXHUwNjQ3IixoOiJcdTA2Y2NcdTA2YTkgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhIixoaDoiJWQgXHUwNjMzXHUwNjI3''@;'; put 'put ''XHUwNjM5XHUwNjJhIixkOiJcdTA2Y2NcdTA2YTkgXHUwNjMxXHUwNjQ4XHUwNjMyIixkZDoiJWQgXHUwNjMxXHUwNjQ4XHUwNjMyIixNOiJcdTA2Y2NcdTA2YTkgXHUwNjQ1XHUwNjI3XHUwNjQ3IixNTToiJWQgXHUwNjQ1XHUwNjI3XHUwNjQ3Iix5OiJcdTA2Y2NcdTA2YTkgXHUwNjMzXHUw''@;'; put 'put ''NjI3XHUwNjQ0Iix5eToiJWQgXHUwNjMzXHUwNjI3XHUwNjQ0In0scHJlcGFyc2U6ZnVuY3Rpb24oVSl7cmV0dXJuIFUucmVwbGFjZSgvW1x1MDZmMC1cdTA2ZjldL2csZnVuY3Rpb24oUSl7cmV0dXJuIEVbUV19KS5yZXBsYWNlKC9cdTA2MGMvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9u''@;'; put 'put ''KFUpe3JldHVybiBVLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oUSl7cmV0dXJuIEJbUV19KS5yZXBsYWNlKC8sL2csIlx1MDYwYyIpfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHUwNjQ1LyxvcmRpbmFsOiIlZFx1MDY0NSIsd2Vlazp7ZG93OjYsZG95OjEyfX0pfShMKDE1NDM5''@;'; put 'put ''KSl9LDIwOTQ0OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO3ZhciBCPSJub2xsYSB5a3NpIGtha3NpIGtvbG1lIG5lbGpceGU0IHZpaXNpIGt1dXNpIHNlaXRzZW1ceGU0biBrYWhkZWtzYW4geWhkZWtzXHhlNG4iLnNwbGl0KCIgIiksRT1bIm5vbGxhIiwi''@;'; put 'put ''eWhkZW4iLCJrYWhkZW4iLCJrb2xtZW4iLCJuZWxqXHhlNG4iLCJ2aWlkZW4iLCJrdXVkZW4iLEJbN10sQls4XSxCWzldXTtmdW5jdGlvbiBFZShqLHJlLGFlLFkpe3ZhciBXPSIiO3N3aXRjaChhZSl7Y2FzZSJzIjpyZXR1cm4gWT8ibXV1dGFtYW4gc2VrdW5uaW4iOiJtdXV0YW1hIHNla3Vu''@;'; put 'put ''dGkiO2Nhc2Uic3MiOlc9WT8ic2VrdW5uaW4iOiJzZWt1bnRpYSI7YnJlYWs7Y2FzZSJtIjpyZXR1cm4gWT8ibWludXV0aW4iOiJtaW51dXR0aSI7Y2FzZSJtbSI6Vz1ZPyJtaW51dXRpbiI6Im1pbnV1dHRpYSI7YnJlYWs7Y2FzZSJoIjpyZXR1cm4gWT8idHVubmluIjoidHVudGkiO2Nhc2Ui''@;'; put 'put ''aGgiOlc9WT8idHVubmluIjoidHVudGlhIjticmVhaztjYXNlImQiOnJldHVybiBZPyJwXHhlNGl2XHhlNG4iOiJwXHhlNGl2XHhlNCI7Y2FzZSJkZCI6Vz1ZPyJwXHhlNGl2XHhlNG4iOiJwXHhlNGl2XHhlNFx4ZTQiO2JyZWFrO2Nhc2UiTSI6cmV0dXJuIFk/Imt1dWthdWRlbiI6Imt1dWth''@;'; put 'put ''dXNpIjtjYXNlIk1NIjpXPVk/Imt1dWthdWRlbiI6Imt1dWthdXR0YSI7YnJlYWs7Y2FzZSJ5IjpyZXR1cm4gWT8idnVvZGVuIjoidnVvc2kiO2Nhc2UieXkiOlc9WT8idnVvZGVuIjoidnVvdHRhIn1yZXR1cm4gZnVuY3Rpb24gVShqLHJlKXtyZXR1cm4gajwxMD9yZT9FW2pdOkJbal06an0o''@;'; put 'put ''aixZKSsiICIrV31tZS5kZWZpbmVMb2NhbGUoImZpIix7bW9udGhzOiJ0YW1taWt1dV9oZWxtaWt1dV9tYWFsaXNrdXVfaHVodGlrdXVfdG91a29rdXVfa2VzXHhlNGt1dV9oZWluXHhlNGt1dV9lbG9rdXVfc3l5c2t1dV9sb2tha3V1X21hcnJhc2t1dV9qb3VsdWt1dSIuc3BsaXQoIl8iKSxt''@;'; put 'put ''b250aHNTaG9ydDoidGFtbWlfaGVsbWlfbWFhbGlzX2h1aHRpX3RvdWtvX2tlc1x4ZTRfaGVpblx4ZTRfZWxvX3N5eXNfbG9rYV9tYXJyYXNfam91bHUiLnNwbGl0KCJfIiksd2Vla2RheXM6InN1bm51bnRhaV9tYWFuYW50YWlfdGlpc3RhaV9rZXNraXZpaWtrb190b3JzdGFpX3BlcmphbnRh''@;'; put 'put ''aV9sYXVhbnRhaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzdV9tYV90aV9rZV90b19wZV9sYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic3VfbWFfdGlfa2VfdG9fcGVfbGEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISC5tbSIsTFRTOiJISC5tbS5zcyIsTDoiREQu''@;'; put 'put ''TU0uWVlZWSIsTEw6IkRvIE1NTU1bdGFdIFlZWVkiLExMTDoiRG8gTU1NTVt0YV0gWVlZWSwgW2tsb10gSEgubW0iLExMTEw6ImRkZGQsIERvIE1NTU1bdGFdIFlZWVksIFtrbG9dIEhILm1tIixsOiJELk0uWVlZWSIsbGw6IkRvIE1NTSBZWVlZIixsbGw6IkRvIE1NTSBZWVlZLCBba2xvXSBI''@;'; put 'put ''SC5tbSIsbGxsbDoiZGRkLCBEbyBNTU0gWVlZWSwgW2tsb10gSEgubW0ifSxjYWxlbmRhcjp7c2FtZURheToiW3RceGU0blx4ZTRceGU0bl0gW2tsb10gTFQiLG5leHREYXk6IltodW9tZW5uYV0gW2tsb10gTFQiLG5leHRXZWVrOiJkZGRkIFtrbG9dIExUIixsYXN0RGF5OiJbZWlsZW5dIFtr''@;'; put 'put ''bG9dIExUIixsYXN0V2VlazoiW3ZpaW1lXSBkZGRkW25hXSBba2xvXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgcFx4ZTRceGU0c3RceGU0IixwYXN0OiIlcyBzaXR0ZW4iLHM6RWUsc3M6RWUsbTpFZSxtbTpFZSxoOkVlLGhoOkVlLGQ6RWUsZGQ6RWUsTTpF''@;'; put 'put ''ZSxNTTpFZSx5OkVlLHl5OkVlfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sNjE3NjY6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9j''@;'; put 'put ''YWxlKCJmaWwiLHttb250aHM6IkVuZXJvX1BlYnJlcm9fTWFyc29fQWJyaWxfTWF5b19IdW55b19IdWx5b19BZ29zdG9fU2V0eWVtYnJlX09rdHVicmVfTm9ieWVtYnJlX0Rpc3llbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiRW5lX1BlYl9NYXJfQWJyX01heV9IdW5fSHVsX0Fnb19T''@;'; put 'put ''ZXRfT2t0X05vYl9EaXMiLnNwbGl0KCJfIiksd2Vla2RheXM6Ikxpbmdnb19MdW5lc19NYXJ0ZXNfTWl5ZXJrdWxlc19IdXdlYmVzX0JpeWVybmVzX1NhYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJMaW5fTHVuX01hcl9NaXlfSHV3X0JpeV9TYWIiLnNwbGl0KCJfIiksd2Vla2Rh''@;'; put 'put ''eXNNaW46IkxpX0x1X01hX01pX0h1X0JpX1NhYiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJNTS9EL1lZWVkiLExMOiJNTU1NIEQsIFlZWVkiLExMTDoiTU1NTSBELCBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBNTU1NIERELCBZWVlZ''@;'; put 'put ''IEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IkxUIFtuZ2F5b25nIGFyYXddIixuZXh0RGF5OiJbQnVrYXMgbmddIExUIixuZXh0V2VlazoiTFQgW3NhIHN1c3Vub2QgbmFdIGRkZGQiLGxhc3REYXk6IkxUIFtrYWhhcG9uXSIsbGFzdFdlZWs6IkxUIFtub29uZyBuYWthcmFhbmddIGRkZGQi''@;'; put 'put ''LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InNhIGxvb2IgbmcgJXMiLHBhc3Q6IiVzIGFuZyBuYWthbGlwYXMiLHM6ImlsYW5nIHNlZ3VuZG8iLHNzOiIlZCBzZWd1bmRvIixtOiJpc2FuZyBtaW51dG8iLG1tOiIlZCBtaW51dG8iLGg6ImlzYW5nIG9yYXMiLGhoOiIlZCBv''@;'; put 'put ''cmFzIixkOiJpc2FuZyBhcmF3IixkZDoiJWQgYXJhdyIsTToiaXNhbmcgYnV3YW4iLE1NOiIlZCBidXdhbiIseToiaXNhbmcgdGFvbiIseXk6IiVkIHRhb24ifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxvcmRpbmFsOmZ1bmN0aW9uKEUpe3JldHVybiBFfSx3ZWVrOntkb3c6''@;'; put 'put ''MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw5NTg2NzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoImZvIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJzX2Fwclx4ZWRsX21haV9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9v''@;'; put 'put ''a3RvYmVyX25vdmVtYmVyX2Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic3VubnVkYWd1cl9tXHhlMW5hZGFndXJfdFx4ZmRzZGFndXJfbWlrdWRhZ3Vy''@;'; put 'put ''X2hceGYzc2RhZ3VyX2ZyXHhlZGdnamFkYWd1cl9sZXlnYXJkYWd1ciIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzdW5fbVx4ZTFuX3RceGZkc19taWtfaFx4ZjNzX2ZyXHhlZF9sZXkiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InN1X21ceGUxX3RceGZkX21pX2hceGYzX2ZyX2xlIi5z''@;'; put 'put ''cGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBELiBNTU1NLCBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltceGNk''@;'; put 'put ''IGRhZyBrbC5dIExUIixuZXh0RGF5OiJbXHhjZCBtb3JnaW4ga2wuXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2tsLl0gTFQiLGxhc3REYXk6IltceGNkIGdqXHhlMXIga2wuXSBMVCIsbGFzdFdlZWs6IltzXHhlZFx4ZjBzdHVdIGRkZGQgW2tsXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRp''@;'; put 'put ''bWU6e2Z1dHVyZToidW0gJXMiLHBhc3Q6IiVzIHNceGVkXHhmMGFuaSIsczoiZlx4ZTEgc2VrdW5kIixzczoiJWQgc2VrdW5kaXIiLG06ImVpbiBtaW51dHR1ciIsbW06IiVkIG1pbnV0dGlyIixoOiJlaW4gdFx4ZWRtaSIsaGg6IiVkIHRceGVkbWFyIixkOiJlaW4gZGFndXIiLGRkOiIlZCBk''@;'; put 'put ''YWdhciIsTToiZWluIG1ceGUxbmFceGYwdXIiLE1NOiIlZCBtXHhlMW5hXHhmMGlyIix5OiJlaXR0IFx4ZTFyIix5eToiJWQgXHhlMXIifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sMTY4''@;'; put 'put ''NDg6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJmci1jYSIse21vbnRoczoiamFudmllcl9mXHhlOXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb1x4ZmJ0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2Rc''@;'; put 'put ''eGU5Y2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW52Ll9mXHhlOXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW9ceGZidF9zZXB0Ll9vY3QuX25vdi5fZFx4ZTljLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkaW1hbmNoZV9sdW5kaV9t''@;'; put 'put ''YXJkaV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZGltLl9sdW4uX21hci5fbWVyLl9qZXUuX3Zlbi5fc2FtLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZGlfbHVfbWFfbWVfamVfdmVfc2EiLnNwbGl0KCJfIiksd2Vla2RheXNQ''@;'; put 'put ''YXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVktTU0tREQiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQXVq''@;'; put 'put ''b3VyZFx1MjAxOWh1aSBceGUwXSBMVCIsbmV4dERheToiW0RlbWFpbiBceGUwXSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x4ZTBdIExUIixsYXN0RGF5OiJbSGllciBceGUwXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2Rlcm5pZXIgXHhlMF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntm''@;'; put 'put ''dXR1cmU6ImRhbnMgJXMiLHBhc3Q6ImlsIHkgYSAlcyIsczoicXVlbHF1ZXMgc2Vjb25kZXMiLHNzOiIlZCBzZWNvbmRlcyIsbToidW5lIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6InVuZSBoZXVyZSIsaGg6IiVkIGhldXJlcyIsZDoidW4gam91ciIsZGQ6IiVkIGpvdXJzIixNOiJ1biBt''@;'; put 'put ''b2lzIixNTToiJWQgbW9pcyIseToidW4gYW4iLHl5OiIlZCBhbnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGVyfGUpLyxvcmRpbmFsOmZ1bmN0aW9uKEUsRWUpe3N3aXRjaChFZSl7ZGVmYXVsdDpjYXNlIk0iOmNhc2UiUSI6Y2FzZSJEIjpjYXNlIkRERCI6Y2FzZSJkIjpy''@;'; put 'put ''ZXR1cm4gRSsoMT09PUU/ImVyIjoiZSIpO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gRSsoMT09PUU/InJlIjoiZSIpfX19KX0oTCgxNTQzOSkpfSw3Nzc3MzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoImZyLWNoIix7bW9udGhz''@;'; put 'put ''OiJqYW52aWVyX2ZceGU5dnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2FvXHhmYnRfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZFx4ZTljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ImphbnYuX2ZceGU5dnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb1x4''@;'; put 'put ''ZmJ0X3NlcHQuX29jdC5fbm92Ll9kXHhlOWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImRpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkaW0uX2x1bi5fbWFyLl9t''@;'; put 'put ''ZXIuX2pldS5fdmVuLl9zYW0uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkaV9sdV9tYV9tZV9qZV92ZV9zYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1N''@;'; put 'put ''TSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltBdWpvdXJkXHUyMDE5aHVpIFx4ZTBdIExUIixuZXh0RGF5OiJbRGVtYWluIFx4ZTBdIExUIixuZXh0V2VlazoiZGRkZCBbXHhlMF0gTFQiLGxh''@;'; put 'put ''c3REYXk6IltIaWVyIFx4ZTBdIExUIixsYXN0V2VlazoiZGRkZCBbZGVybmllciBceGUwXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFucyAlcyIscGFzdDoiaWwgeSBhICVzIixzOiJxdWVscXVlcyBzZWNvbmRlcyIsc3M6IiVkIHNlY29uZGVzIixtOiJ1bmUg''@;'; put 'put ''bWludXRlIixtbToiJWQgbWludXRlcyIsaDoidW5lIGhldXJlIixoaDoiJWQgaGV1cmVzIixkOiJ1biBqb3VyIixkZDoiJWQgam91cnMiLE06InVuIG1vaXMiLE1NOiIlZCBtb2lzIix5OiJ1biBhbiIseXk6IiVkIGFucyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oZXJ8ZSkv''@;'; put 'put ''LG9yZGluYWw6ZnVuY3Rpb24oRSxFZSl7c3dpdGNoKEVlKXtkZWZhdWx0OmNhc2UiTSI6Y2FzZSJRIjpjYXNlIkQiOmNhc2UiREREIjpjYXNlImQiOnJldHVybiBFKygxPT09RT8iZXIiOiJlIik7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBFKygxPT09RT8icmUiOiJlIil9fSx3ZWVrOntkb3c6''@;'; put 'put ''MSxkb3k6NH19KX0oTCgxNTQzOSkpfSwxNjM2OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO3ZhciBFZT0vKGphbnZcLj98Zlx4ZTl2clwuP3xtYXJzfGF2clwuP3xtYWl8anVpbnxqdWlsXC4/fGFvXHhmYnR8c2VwdFwuP3xvY3RcLj98bm92XC4/fGRceGU5''@;'; put 'put ''Y1wuP3xqYW52aWVyfGZceGU5dnJpZXJ8bWFyc3xhdnJpbHxtYWl8anVpbnxqdWlsbGV0fGFvXHhmYnR8c2VwdGVtYnJlfG9jdG9icmV8bm92ZW1icmV8ZFx4ZTljZW1icmUpL2ksVT1bL15qYW52L2ksL15mXHhlOXZyL2ksL15tYXJzL2ksL15hdnIvaSwvXm1haS9pLC9eanVpbi9pLC9eanVp''@;'; put 'put ''bC9pLC9eYW9ceGZidC9pLC9ec2VwdC9pLC9eb2N0L2ksL15ub3YvaSwvXmRceGU5Yy9pXTttZS5kZWZpbmVMb2NhbGUoImZyIix7bW9udGhzOiJqYW52aWVyX2ZceGU5dnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2FvXHhmYnRfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVf''@;'; put 'put ''ZFx4ZTljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ImphbnYuX2ZceGU5dnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb1x4ZmJ0X3NlcHQuX29jdC5fbm92Ll9kXHhlOWMuIi5zcGxpdCgiXyIpLG1vbnRoc1JlZ2V4OkVlLG1vbnRoc1Nob3J0UmVnZXg6RWUsbW9udGhzU3Ry''@;'; put 'put ''aWN0UmVnZXg6L14oamFudmllcnxmXHhlOXZyaWVyfG1hcnN8YXZyaWx8bWFpfGp1aW58anVpbGxldHxhb1x4ZmJ0fHNlcHRlbWJyZXxvY3RvYnJlfG5vdmVtYnJlfGRceGU5Y2VtYnJlKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6LyhqYW52XC4/fGZceGU5dnJcLj98bWFyc3xhdnJcLj98''@;'; put 'put ''bWFpfGp1aW58anVpbFwuP3xhb1x4ZmJ0fHNlcHRcLj98b2N0XC4/fG5vdlwuP3xkXHhlOWNcLj8pL2ksbW9udGhzUGFyc2U6VSxsb25nTW9udGhzUGFyc2U6VSxzaG9ydE1vbnRoc1BhcnNlOlUsd2Vla2RheXM6ImRpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRp''@;'; put 'put ''X3NhbWVkaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkaV9sdV9tYV9tZV9qZV92ZV9zYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6''@;'; put 'put ''e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltBdWpvdXJkXHUyMDE5aHVpIFx4ZTBdIExUIixuZXh0''@;'; put 'put ''RGF5OiJbRGVtYWluIFx4ZTBdIExUIixuZXh0V2VlazoiZGRkZCBbXHhlMF0gTFQiLGxhc3REYXk6IltIaWVyIFx4ZTBdIExUIixsYXN0V2VlazoiZGRkZCBbZGVybmllciBceGUwXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFucyAlcyIscGFzdDoiaWwgeSBh''@;'; put 'put ''ICVzIixzOiJxdWVscXVlcyBzZWNvbmRlcyIsc3M6IiVkIHNlY29uZGVzIixtOiJ1bmUgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoidW5lIGhldXJlIixoaDoiJWQgaGV1cmVzIixkOiJ1biBqb3VyIixkZDoiJWQgam91cnMiLHc6InVuZSBzZW1haW5lIix3dzoiJWQgc2VtYWluZXMiLE06''@;'; put 'put ''InVuIG1vaXMiLE1NOiIlZCBtb2lzIix5OiJ1biBhbiIseXk6IiVkIGFucyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oZXJ8KS8sb3JkaW5hbDpmdW5jdGlvbihqLHJlKXtzd2l0Y2gocmUpe2Nhc2UiRCI6cmV0dXJuIGorKDE9PT1qPyJlciI6IiIpO2RlZmF1bHQ6Y2FzZSJN''@;'; put 'put ''IjpjYXNlIlEiOmNhc2UiREREIjpjYXNlImQiOnJldHVybiBqKygxPT09aj8iZXIiOiJlIik7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBqKygxPT09aj8icmUiOiJlIil9fSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSwxNDk0MDpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24o''@;'; put 'put ''bWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj0iamFuLl9mZWIuX21ydC5fYXByLl9tYWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVzLiIuc3BsaXQoIl8iKSxFPSJqYW5fZmViX21ydF9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlcyIuc3BsaXQoIl8iKTttZS5kZWZp''@;'; put 'put ''bmVMb2NhbGUoImZ5Iix7bW9udGhzOiJqYW5uZXdhcmlzX2ZlYnJld2FyaXNfbWFhcnRfYXByaWxfbWFhaWVfanVueV9qdWx5X2F1Z3VzdHVzX3NlcHRpbWJlcl9va3RvYmVyX25vdmltYmVyX2Rlc2ltYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OmZ1bmN0aW9uKFUsUSl7cmV0dXJuIFU/''@;'; put 'put ''Ly1NTU0tLy50ZXN0KFEpP0VbVS5tb250aCgpXTpCW1UubW9udGgoKV06Qn0sbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoic25laW5fbW9hbmRlaV90aWlzZGVpX3dvYW5zZGVpX3RvbmdlcnNkZWlfZnJlZWRfc25lb24iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic2kuX21vLl90''@;'; put 'put ''aS5fd28uX3RvLl9mci5fc28uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTaV9Nb19UaV9Xb19Ub19Gcl9TbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQtTU0tWVlZWSIsTEw6IkQgTU1N''@;'; put 'put ''TSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6Iltoam9lZCBvbV0gTFQiLG5leHREYXk6Ilttb2FybiBvbV0gTFQiLG5leHRXZWVrOiJkZGRkIFtvbV0gTFQiLGxhc3REYXk6IltqdXN0ZXIgb21d''@;'; put 'put ''IExUIixsYXN0V2VlazoiW1x4ZjRmclx4ZmJuZV0gZGRkZCBbb21dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvZXIgJXMiLHBhc3Q6IiVzIGx5biIsczoiaW4gcGVhciBzZWtvbmRlbiIsc3M6IiVkIHNla29uZGVuIixtOiJpZW4gbWluXHhmYXQiLG1tOiIlZCBt''@;'; put 'put ''aW51dGVuIixoOiJpZW4gb2VyZSIsaGg6IiVkIG9lcmVuIixkOiJpZW4gZGVpIixkZDoiJWQgZGFnZW4iLE06ImllbiBtb2FubmUiLE1NOiIlZCBtb2FubmVuIix5OiJpZW4gamllciIseXk6IiVkIGppZXJyZW4ifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0ZXxkZSkvLG9y''@;'; put 'put ''ZGluYWw6ZnVuY3Rpb24oVSl7cmV0dXJuIFUrKDE9PT1VfHw4PT09VXx8VT49MjA/InN0ZSI6ImRlIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDkxNDAyOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgiZ2Ei''@;'; put 'put ''LHttb250aHM6WyJFYW5ceGUxaXIiLCJGZWFiaHJhIiwiTVx4ZTFydGEiLCJBaWJyZVx4ZTFuIiwiQmVhbHRhaW5lIiwiTWVpdGhlYW1oIiwiSVx4ZmFpbCIsIkxceGZhbmFzYSIsIk1lXHhlMW4gRlx4ZjNtaGFpciIsIkRlaXJlYWRoIEZceGYzbWhhaXIiLCJTYW1oYWluIiwiTm9sbGFpZyJd''@;'; put 'put ''LG1vbnRoc1Nob3J0OlsiRWFuIiwiRmVhYmgiLCJNXHhlMXJ0IiwiQWliIiwiQmVhbCIsIk1laXRoIiwiSVx4ZmFpbCIsIkxceGZhbiIsIk0uRi4iLCJELkYuIiwiU2FtaCIsIk5vbGwiXSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOlsiRFx4ZTkgRG9taG5haWdoIiwiRFx4ZTkgTHVh''@;'; put 'put ''aW4iLCJEXHhlOSBNXHhlMWlydCIsIkRceGU5IENceGU5YWRhb2luIiwiRFx4ZTlhcmRhb2luIiwiRFx4ZTkgaEFvaW5lIiwiRFx4ZTkgU2F0aGFpcm4iXSx3ZWVrZGF5c1Nob3J0OlsiRG9taCIsIkx1YW4iLCJNXHhlMWlydCIsIkNceGU5YWQiLCJEXHhlOWFyIiwiQW9pbmUiLCJTYXRoIl0s''@;'; put 'put ''d2Vla2RheXNNaW46WyJEbyIsIkx1IiwiTVx4ZTEiLCJDXHhlOSIsIkRceGU5IiwiQSIsIlNhIl0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRk''@;'; put 'put ''LCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSW5uaXUgYWddIExUIixuZXh0RGF5OiJbQW1ceGUxcmFjaCBhZ10gTFQiLG5leHRXZWVrOiJkZGRkIFthZ10gTFQiLGxhc3REYXk6IltJbm5ceGU5IGFnXSBMVCIsbGFzdFdlZWs6ImRkZGQgW3NlbyBjYWl0ZV0gW2Fn''@;'; put 'put ''XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaSAlcyIscGFzdDoiJXMgXHhmMyBzaGluIixzOiJjXHhmYXBsYSBzb2ljaW5kIixzczoiJWQgc29pY2luZCIsbToiblx4ZjNpbVx4ZTlhZCIsbW06IiVkIG5ceGYzaW1ceGU5YWQiLGg6InVhaXIgYW4gY2hsb2lnIixo''@;'; put 'put ''aDoiJWQgdWFpciBhbiBjaGxvaWciLGQ6ImxceGUxIixkZDoiJWQgbFx4ZTEiLE06Im1ceGVkIixNTToiJWQgbVx4ZWRvbm5hIix5OiJibGlhaW4iLHl5OiIlZCBibGlhaW4ifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGR8bmF8bWgpLyxvcmRpbmFsOmZ1bmN0aW9uKHJlKXty''@;'; put 'put ''ZXR1cm4gcmUrKDE9PT1yZT8iZCI6cmUlMTA9PTI/Im5hIjoibWgiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sNDY5MjQ6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJnZCIse21vbnRoczpbIkFtIEZhb2ls''@;'; put 'put ''bGVhY2giLCJBbiBHZWFycmFuIiwiQW0gTVx4ZTBydCIsIkFuIEdpYmxlYW4iLCJBbiBDXHhlOGl0ZWFuIiwiQW4gdC1ceGQyZ21oaW9zIiwiQW4gdC1JdWNoYXIiLCJBbiBMXHhmOW5hc3RhbCIsIkFuIHQtU3VsdGFpbiIsIkFuIERceGUwbWhhaXIiLCJBbiB0LVNhbWhhaW4iLCJBbiBEXHhm''@;'; put 'put ''OWJobGFjaGQiXSxtb250aHNTaG9ydDpbIkZhb2kiLCJHZWFyIiwiTVx4ZTBydCIsIkdpYmwiLCJDXHhlOGl0IiwiXHhkMmdtaCIsIkl1Y2giLCJMXHhmOW4iLCJTdWx0IiwiRFx4ZTBtaCIsIlNhbWgiLCJEXHhmOWJoIl0sbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czpbIkRpZFx4ZjJt''@;'; put 'put ''aG5haWNoIiwiRGlsdWFpbiIsIkRpbVx4ZTBpcnQiLCJEaWNpYWRhaW4iLCJEaWFyZGFvaW4iLCJEaWhhb2luZSIsIkRpc2F0aGFpcm5lIl0sd2Vla2RheXNTaG9ydDpbIkRpZCIsIkRpbCIsIkRpbSIsIkRpYyIsIkRpYSIsIkRpaCIsIkRpcyJdLHdlZWtkYXlzTWluOlsiRFx4ZjIiLCJMdSIs''@;'; put 'put ''Ik1ceGUwIiwiQ2kiLCJBciIsIkhhIiwiU2EiXSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5k''@;'; put 'put ''YXI6e3NhbWVEYXk6IltBbi1kaXVnaCBhaWddIExUIixuZXh0RGF5OiJbQS1tXHhlMGlyZWFjaCBhaWddIExUIixuZXh0V2VlazoiZGRkZCBbYWlnXSBMVCIsbGFzdERheToiW0FuLWRceGU4IGFpZ10gTFQiLGxhc3RXZWVrOiJkZGRkIFtzZW8gY2hhaWRoXSBbYWlnXSBMVCIsc2FtZUVsc2U6''@;'; put 'put ''IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiYW5uIGFuICVzIixwYXN0OiJiaG8gY2hpb25uICVzIixzOiJiZWFnYW4gZGlvZ2FuIixzczoiJWQgZGlvZ2FuIixtOiJtaW9uYWlkIixtbToiJWQgbWlvbmFpZGVhbiIsaDoidWFpciIsaGg6IiVkIHVhaXJlYW4iLGQ6ImxhdGhhIixkZDoiJWQg''@;'; put 'put ''bGF0aGEiLE06Im1ceGVjb3MiLE1NOiIlZCBtXHhlY29zYW4iLHk6ImJsaWFkaG5hIix5eToiJWQgYmxpYWRobmEifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGR8bmF8bWgpLyxvcmRpbmFsOmZ1bmN0aW9uKHJlKXtyZXR1cm4gcmUrKDE9PT1yZT8iZCI6cmUlMTA9PTI/Im5h''@;'; put 'put ''IjoibWgiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sMTYzOTg6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJnbCIse21vbnRoczoieGFuZWlyb19mZWJyZWlyb19tYXJ6b19hYnJpbF9tYWlvX3h1XHhmMW9f''@;'; put 'put ''eHVsbG9fYWdvc3RvX3NldGVtYnJvX291dHVicm9fbm92ZW1icm9fZGVjZW1icm8iLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Inhhbi5fZmViLl9tYXIuX2Fici5fbWFpLl94dVx4ZjEuX3h1bC5fYWdvLl9zZXQuX291dC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6''@;'; put 'put ''ITAsd2Vla2RheXM6ImRvbWluZ29fbHVuc19tYXJ0ZXNfbVx4ZTlyY29yZXNfeG92ZXNfdmVucmVzX3NceGUxYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb20uX2x1bi5fbWFyLl9tXHhlOXIuX3hvdi5fdmVuLl9zXHhlMWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb19s''@;'; put 'put ''dV9tYV9tXHhlOV94b192ZV9zXHhlMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZ''@;'; put 'put ''IEg6bW0iLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2hveGUgIisoMSE9PXRoaXMuaG91cnMoKT8iXHhlMXMiOiJceGUxIikrIl0gTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlttYVx4''@;'; put 'put ''ZjFceGUxICIrKDEhPT10aGlzLmhvdXJzKCk/Ilx4ZTFzIjoiXHhlMSIpKyJdIExUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iZGRkZCBbIisoMSE9PXRoaXMuaG91cnMoKT8iXHhlMXMiOiJhIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltvbnRlICIrKDEhPT10''@;'; put 'put ''aGlzLmhvdXJzKCk/Ilx4ZTEiOiJhIikrIl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbb10gZGRkZCBbcGFzYWRvICIrKDEhPT10aGlzLmhvdXJzKCk/Ilx4ZTFzIjoiYSIpKyJdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTpmdW5jdGlvbihFKXty''@;'; put 'put ''ZXR1cm4gMD09PUUuaW5kZXhPZigidW4iKT8ibiIrRToiZW4gIitFfSxwYXN0OiJoYWkgJXMiLHM6InVucyBzZWd1bmRvcyIsc3M6IiVkIHNlZ3VuZG9zIixtOiJ1biBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bmhhIGhvcmEiLGhoOiIlZCBob3JhcyIsZDoidW4gZFx4ZWRhIixkZDoi''@;'; put 'put ''JWQgZFx4ZWRhcyIsTToidW4gbWVzIixNTToiJWQgbWVzZXMiLHk6InVuIGFubyIseXk6IiVkIGFub3MifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHhiYS8sb3JkaW5hbDoiJWRceGJhIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw3MjQ1NzpmdW5jdGlvbihY''@;'; put 'put ''ZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBCKEVlLFUsUSxqKXt2YXIgcmU9e3M6WyJcdTA5MjVcdTA5NGJcdTA5MjFcdTA5MmZcdTA5M2UgXHUwOTM4XHUwOTQ1XHUwOTE1XHUwOTAyXHUwOTIxXHUwOTNlXHUwOTAyXHUwOTI4XHUwOTQwIiwiXHUwOTI1XHUw''@;'; put 'put ''OTRiXHUwOTIxXHUwOTQ3IFx1MDkzOFx1MDk0NVx1MDkxNVx1MDkwMlx1MDkyMSJdLHNzOltFZSsiIFx1MDkzOFx1MDk0NVx1MDkxNVx1MDkwMlx1MDkyMVx1MDkzZVx1MDkwMlx1MDkyOFx1MDk0MCIsRWUrIiBcdTA5MzhcdTA5NDVcdTA5MTVcdTA5MDJcdTA5MjEiXSxtOlsiXHUwOTBmXHUw''@;'; put 'put ''OTE1XHUwOTNlIFx1MDkyZVx1MDkzZlx1MDkyM1x1MDkxZlx1MDkzZVx1MDkyOCIsIlx1MDkwZlx1MDkxNSBcdTA5MmVcdTA5M2ZcdTA5MjhcdTA5NDJcdTA5MWYiXSxtbTpbRWUrIiBcdTA5MmVcdTA5M2ZcdTA5MjNcdTA5MWZcdTA5M2VcdTA5MDJcdTA5MjhcdTA5NDAiLEVlKyIgXHUwOTJl''@;'; put 'put ''XHUwOTNmXHUwOTIzXHUwOTFmXHUwOTNlXHUwOTAyIl0saDpbIlx1MDkwZlx1MDkxNVx1MDkzZSBcdTA5MzVcdTA5MzBcdTA5M2VcdTA5MjgiLCJcdTA5MGZcdTA5MTUgXHUwOTM1XHUwOTMwIl0saGg6W0VlKyIgXHUwOTM1XHUwOTMwXHUwOTNlXHUwOTAyXHUwOTI4XHUwOTQwIixFZSsiIFx1''@;'; put 'put ''MDkzNVx1MDkzMFx1MDkzZVx1MDkwMiJdLGQ6WyJcdTA5MGZcdTA5MTVcdTA5M2UgXHUwOTI2XHUwOTNmXHUwOTM4XHUwOTNlXHUwOTI4IiwiXHUwOTBmXHUwOTE1IFx1MDkyNlx1MDk0MFx1MDkzOCJdLGRkOltFZSsiIFx1MDkyNlx1MDkzZlx1MDkzOFx1MDkzZVx1MDkwMlx1MDkyOFx1MDk0''@;'; put 'put ''MCIsRWUrIiBcdTA5MjZcdTA5NDBcdTA5MzgiXSxNOlsiXHUwOTBmXHUwOTE1XHUwOTNlIFx1MDkyZVx1MDk0ZFx1MDkzOVx1MDkyZlx1MDkyOFx1MDk0ZFx1MDkyZlx1MDkzZVx1MDkyOCIsIlx1MDkwZlx1MDkxNSBcdTA5MmVcdTA5NGRcdTA5MzlcdTA5MmZcdTA5MjhcdTA5NGIiXSxNTTpb''@;'; put 'put ''RWUrIiBcdTA5MmVcdTA5NGRcdTA5MzlcdTA5MmZcdTA5MjhcdTA5NGRcdTA5MmZcdTA5M2VcdTA5MjhcdTA5NDAiLEVlKyIgXHUwOTJlXHUwOTRkXHUwOTM5XHUwOTJmXHUwOTI4XHUwOTQ3Il0seTpbIlx1MDkwZlx1MDkxNVx1MDkzZSBcdTA5MzVcdTA5MzBcdTA5NGRcdTA5MzhcdTA5M2Vc''@;'; put 'put ''dTA5MjgiLCJcdTA5MGZcdTA5MTUgXHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM4Il0seXk6W0VlKyIgXHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM4XHUwOTNlXHUwOTAyXHUwOTI4XHUwOTQwIixFZSsiIFx1MDkzNVx1MDkzMFx1MDk0ZFx1MDkzOFx1MDkzZVx1MDkwMiJdfTtyZXR1cm4gaj9yZVtR''@;'; put 'put ''XVswXTpyZVtRXVsxXX1tZS5kZWZpbmVMb2NhbGUoImdvbS1kZXZhIix7bW9udGhzOntzdGFuZGFsb25lOiJcdTA5MWNcdTA5M2VcdTA5MjhcdTA5NDdcdTA5MzVcdTA5M2VcdTA5MzBcdTA5NDBfXHUwOTJiXHUwOTQ3XHUwOTJjXHUwOTRkXHUwOTMwXHUwOTQxXHUwOTM1XHUwOTNlXHUwOTMw''@;'; put 'put ''XHUwOTQwX1x1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYV9cdTA5MGZcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDBcdTA5MzJfXHUwOTJlXHUwOTQ3X1x1MDkxY1x1MDk0Mlx1MDkyOF9cdTA5MWNcdTA5NDFcdTA5MzJcdTA5MmZfXHUwOTExXHUwOTE3XHUwOTM4XHUwOTRkXHUwOTFmX1x1''@;'; put 'put ''MDkzOFx1MDkyYVx1MDk0ZFx1MDkxZlx1MDk0N1x1MDkwMlx1MDkyY1x1MDkzMF9cdTA5MTFcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NGJcdTA5MmNcdTA5MzBfXHUwOTI4XHUwOTRiXHUwOTM1XHUwOTRkXHUwOTM5XHUwOTQ3XHUwOTAyXHUwOTJjXHUwOTMwX1x1MDkyMVx1MDkzZlx1MDkzOFx1''@;'; put 'put ''MDk0N1x1MDkwMlx1MDkyY1x1MDkzMCIuc3BsaXQoIl8iKSxmb3JtYXQ6Ilx1MDkxY1x1MDkzZVx1MDkyOFx1MDk0N1x1MDkzNVx1MDkzZVx1MDkzMFx1MDk0MFx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZV9cdTA5MmJcdTA5NDdcdTA5MmNcdTA5NGRcdTA5MzBcdTA5NDFcdTA5MzVcdTA5M2Vc''@;'; put 'put ''dTA5MzBcdTA5NDBcdTA5MWFcdTA5NGRcdTA5MmZcdTA5M2VfXHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhXHUwOTNlXHUwOTFhXHUwOTRkXHUwOTJmXHUwOTNlX1x1MDkwZlx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0MFx1MDkzMlx1MDkzZVx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZV9c''@;'; put 'put ''dTA5MmVcdTA5NDdcdTA5MmZcdTA5M2VcdTA5MWFcdTA5NGRcdTA5MmZcdTA5M2VfXHUwOTFjXHUwOTQyXHUwOTI4XHUwOTNlXHUwOTFhXHUwOTRkXHUwOTJmXHUwOTNlX1x1MDkxY1x1MDk0MVx1MDkzMlx1MDkyZlx1MDkzZVx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZV9cdTA5MTFcdTA5MTdc''@;'; put 'put ''dTA5MzhcdTA5NGRcdTA5MWZcdTA5M2VcdTA5MWFcdTA5NGRcdTA5MmZcdTA5M2VfXHUwOTM4XHUwOTJhXHUwOTRkXHUwOTFmXHUwOTQ3XHUwOTAyXHUwOTJjXHUwOTMwXHUwOTNlXHUwOTFhXHUwOTRkXHUwOTJmXHUwOTNlX1x1MDkxMVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Ylx1MDkyY1x1''@;'; put 'put ''MDkzMFx1MDkzZVx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZV9cdTA5MjhcdTA5NGJcdTA5MzVcdTA5NGRcdTA5MzlcdTA5NDdcdTA5MDJcdTA5MmNcdTA5MzBcdTA5M2VcdTA5MWFcdTA5NGRcdTA5MmZcdTA5M2VfXHUwOTIxXHUwOTNmXHUwOTM4XHUwOTQ3XHUwOTAyXHUwOTJjXHUwOTMwXHUw''@;'; put 'put ''OTNlXHUwOTFhXHUwOTRkXHUwOTJmXHUwOTNlIi5zcGxpdCgiXyIpLGlzRm9ybWF0Oi9NTU1NKFxzKStEW29EXT8vfSxtb250aHNTaG9ydDoiXHUwOTFjXHUwOTNlXHUwOTI4XHUwOTQ3Ll9cdTA5MmJcdTA5NDdcdTA5MmNcdTA5NGRcdTA5MzBcdTA5NDEuX1x1MDkyZVx1MDkzZVx1MDkzMFx1''@;'; put 'put ''MDk0ZFx1MDkxYV9cdTA5MGZcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDAuX1x1MDkyZVx1MDk0N19cdTA5MWNcdTA5NDJcdTA5MjhfXHUwOTFjXHUwOTQxXHUwOTMyLl9cdTA5MTFcdTA5MTcuX1x1MDkzOFx1MDkyYVx1MDk0ZFx1MDkxZlx1MDk0N1x1MDkwMi5fXHUwOTExXHUwOTE1XHUwOTRk''@;'; put 'put ''XHUwOTFmXHUwOTRiLl9cdTA5MjhcdTA5NGJcdTA5MzVcdTA5NGRcdTA5MzlcdTA5NDdcdTA5MDIuX1x1MDkyMVx1MDkzZlx1MDkzOFx1MDk0N1x1MDkwMi4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUwOTA2XHUwOTJmXHUwOTI0XHUwOTNlXHUwOTMwX1x1''@;'; put 'put ''MDkzOFx1MDk0Ylx1MDkyZVx1MDkzZVx1MDkzMF9cdTA5MmVcdTA5MDJcdTA5MTdcdTA5MzNcdTA5M2VcdTA5MzBfXHUwOTJjXHUwOTQxXHUwOTI3XHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkyY1x1MDkzZlx1MDkzMFx1MDk0N1x1MDkzOFx1MDk0ZFx1MDkyNFx1MDkzZVx1MDkzMF9cdTA5Mzhc''@;'; put 'put ''dTA5NDFcdTA5MTVcdTA5NGRcdTA5MzBcdTA5M2VcdTA5MzBfXHUwOTM2XHUwOTQ3XHUwOTI4XHUwOTM1XHUwOTNlXHUwOTMwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDkwNlx1MDkyZlx1MDkyNC5fXHUwOTM4XHUwOTRiXHUwOTJlLl9cdTA5MmVcdTA5MDJcdTA5MTdcdTA5MzMu''@;'; put 'put ''X1x1MDkyY1x1MDk0MVx1MDkyNy5fXHUwOTJjXHUwOTRkXHUwOTMwXHUwOTQ3XHUwOTM4XHUwOTRkXHUwOTI0Ll9cdTA5MzhcdTA5NDFcdTA5MTVcdTA5NGRcdTA5MzAuX1x1MDkzNlx1MDk0N1x1MDkyOC4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDkwNl9cdTA5MzhcdTA5NGJfXHUw''@;'; put 'put ''OTJlXHUwOTAyX1x1MDkyY1x1MDk0MV9cdTA5MmNcdTA5NGRcdTA5MzBcdTA5NDdfXHUwOTM4XHUwOTQxX1x1MDkzNlx1MDk0NyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gW1x1MDkzNVx1MDkzZVx1MDkxY1x1MDkyNFx1MDkz''@;'; put 'put ''ZVx1MDkwMl0iLExUUzoiQSBoOm1tOnNzIFtcdTA5MzVcdTA5M2VcdTA5MWNcdTA5MjRcdTA5M2VcdTA5MDJdIixMOiJERC1NTS1ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgQSBoOm1tIFtcdTA5MzVcdTA5M2VcdTA5MWNcdTA5MjRcdTA5M2VcdTA5MDJdIixMTExM''@;'; put 'put ''OiJkZGRkLCBNTU1NIERvLCBZWVlZLCBBIGg6bW0gW1x1MDkzNVx1MDkzZVx1MDkxY1x1MDkyNFx1MDkzZVx1MDkwMl0iLGxsbGw6ImRkZCwgRCBNTU0gWVlZWSwgQSBoOm1tIFtcdTA5MzVcdTA5M2VcdTA5MWNcdTA5MjRcdTA5M2VcdTA5MDJdIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA5''@;'; put 'put ''MDZcdTA5MmZcdTA5MWNdIExUIixuZXh0RGF5OiJbXHUwOTJiXHUwOTNlXHUwOTMyXHUwOTRkXHUwOTJmXHUwOTNlXHUwOTAyXSBMVCIsbmV4dFdlZWs6IltcdTA5MmJcdTA5NDFcdTA5MjFcdTA5MzJcdTA5NGJdIGRkZGRbLF0gTFQiLGxhc3REYXk6IltcdTA5MTVcdTA5M2VcdTA5MzJdIExU''@;'; put 'put ''IixsYXN0V2VlazoiW1x1MDkyYlx1MDkzZVx1MDkxZlx1MDkzMlx1MDk0Yl0gZGRkZFssXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMiLHBhc3Q6IiVzIFx1MDkwNlx1MDkyNlx1MDk0MFx1MDkwMiIsczpCLHNzOkIsbTpCLG1tOkIsaDpCLGhoOkIsZDpCLGRk''@;'; put 'put ''OkIsTTpCLE1NOkIseTpCLHl5OkJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oXHUwOTM1XHUwOTQ3XHUwOTMwKS8sb3JkaW5hbDpmdW5jdGlvbihFZSxVKXtyZXR1cm4iRCI9PT1VP0VlKyJcdTA5MzVcdTA5NDdcdTA5MzAiOkVlfSx3ZWVrOntkb3c6MCxkb3k6M30sbWVyaWRp''@;'; put 'put ''ZW1QYXJzZTovXHUwOTMwXHUwOTNlXHUwOTI0XHUwOTQwfFx1MDkzOFx1MDkxNVx1MDkzZVx1MDkzM1x1MDk0MFx1MDkwMnxcdTA5MjZcdTA5MjhcdTA5MmFcdTA5M2VcdTA5MzBcdTA5M2VcdTA5MDJ8XHUwOTM4XHUwOTNlXHUwOTAyXHUwOTFjXHUwOTQ3LyxtZXJpZGllbUhvdXI6ZnVuY3Rp''@;'; put 'put ''b24oRWUsVSl7cmV0dXJuIDEyPT09RWUmJihFZT0wKSwiXHUwOTMwXHUwOTNlXHUwOTI0XHUwOTQwIj09PVU/RWU8ND9FZTpFZSsxMjoiXHUwOTM4XHUwOTE1XHUwOTNlXHUwOTMzXHUwOTQwXHUwOTAyIj09PVU/RWU6Ilx1MDkyNlx1MDkyOFx1MDkyYVx1MDkzZVx1MDkzMFx1MDkzZVx1MDkw''@;'; put 'put ''MiI9PT1VP0VlPjEyP0VlOkVlKzEyOiJcdTA5MzhcdTA5M2VcdTA5MDJcdTA5MWNcdTA5NDciPT09VT9FZSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKEVlLFUsUSl7cmV0dXJuIEVlPDQ/Ilx1MDkzMFx1MDkzZVx1MDkyNFx1MDk0MCI6RWU8MTI/Ilx1MDkzOFx1MDkxNVx1MDkzZVx1''@;'; put 'put ''MDkzM1x1MDk0MFx1MDkwMiI6RWU8MTY/Ilx1MDkyNlx1MDkyOFx1MDkyYVx1MDkzZVx1MDkzMFx1MDkzZVx1MDkwMiI6RWU8MjA/Ilx1MDkzOFx1MDkzZVx1MDkwMlx1MDkxY1x1MDk0NyI6Ilx1MDkzMFx1MDkzZVx1MDkyNFx1MDk0MCJ9fSl9KEwoMTU0MzkpKX0sNTI1NDU6ZnVuY3Rpb24o''@;'; put 'put ''WGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gQihFZSxVLFEsail7dmFyIHJlPXtzOlsidGhvZGRlYSBzZWtvbmRhbW5pIiwidGhvZGRlIHNla29uZCJdLHNzOltFZSsiIHNla29uZGFtbmkiLEVlKyIgc2Vrb25kIl0sbTpbImVrYSBtaW50YW4iLCJlayBtaW51''@;'; put 'put ''dCJdLG1tOltFZSsiIG1pbnRhbW5pIixFZSsiIG1pbnRhbSJdLGg6WyJla2Egdm9yYW4iLCJlayB2b3IiXSxoaDpbRWUrIiB2b3JhbW5pIixFZSsiIHZvcmFtIl0sZDpbImVrYSBkaXNhbiIsImVrIGRpcyJdLGRkOltFZSsiIGRpc2FtbmkiLEVlKyIgZGlzIl0sTTpbImVrYSBtaG9pbmVhbiIs''@;'; put 'put ''ImVrIG1ob2lubyJdLE1NOltFZSsiIG1ob2luZWFtbmkiLEVlKyIgbWhvaW5lIl0seTpbImVrYSB2b3JzYW4iLCJlayB2b3JvcyJdLHl5OltFZSsiIHZvcnNhbW5pIixFZSsiIHZvcnNhbSJdfTtyZXR1cm4gaj9yZVtRXVswXTpyZVtRXVsxXX1tZS5kZWZpbmVMb2NhbGUoImdvbS1sYXRuIix7''@;'; put 'put ''bW9udGhzOntzdGFuZGFsb25lOiJKYW5lcl9GZWJyZXJfTWFyc19BYnJpbF9NYWlfSnVuX0p1bGFpX0Fnb3N0X1NldGVtYnJfT3R1YnJfTm92ZW1icl9EZXplbWJyIi5zcGxpdCgiXyIpLGZvcm1hdDoiSmFuZXJhY2hlYV9GZWJyZXJhY2hlYV9NYXJzYWNoZWFfQWJyaWxhY2hlYV9NYWlhY2hl''@;'; put 'put ''YV9KdW5hY2hlYV9KdWxhaWFjaGVhX0Fnb3N0YWNoZWFfU2V0ZW1icmFjaGVhX090dWJyYWNoZWFfTm92ZW1icmFjaGVhX0RlemVtYnJhY2hlYSIuc3BsaXQoIl8iKSxpc0Zvcm1hdDovTU1NTShccykrRFtvRF0/L30sbW9udGhzU2hvcnQ6Ikphbi5fRmViLl9NYXJzX0Fici5fTWFpX0p1bl9K''@;'; put 'put ''dWwuX0Fnby5fU2V0Ll9PdHUuX05vdi5fRGV6LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJBaXRhcl9Tb21hcl9Nb25nbGxhcl9CdWRodmFyX0JpcmVzdGFyX1N1a3Jhcl9Tb24ndmFyIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkFpdC5fU29tLl9Nb24u''@;'; put 'put ''X0J1ZC5fQnJlLl9TdWsuX1Nvbi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkFpX1NtX01vX0J1X0JyX1N1X1NuIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSBbdmF6dGFdIixMVFM6IkEgaDptbTpzcyBbdmF6dGFdIixMOiJE''@;'; put 'put ''RC1NTS1ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgQSBoOm1tIFt2YXp0YV0iLExMTEw6ImRkZGQsIE1NTU0gRG8sIFlZWVksIEEgaDptbSBbdmF6dGFdIixsbGxsOiJkZGQsIEQgTU1NIFlZWVksIEEgaDptbSBbdmF6dGFdIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltB''@;'; put 'put ''aXpdIExUIixuZXh0RGF5OiJbRmFsZWFtXSBMVCIsbmV4dFdlZWs6IltGdWRkbG9dIGRkZGRbLF0gTFQiLGxhc3REYXk6IltLYWxdIExUIixsYXN0V2VlazoiW0ZhdHRsb10gZGRkZFssXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMiLHBhc3Q6IiVzIGFkaW0i''@;'; put 'put ''LHM6QixzczpCLG06QixtbTpCLGg6QixoaDpCLGQ6QixkZDpCLE06QixNTTpCLHk6Qix5eTpCfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGVyKS8sb3JkaW5hbDpmdW5jdGlvbihFZSxVKXtyZXR1cm4iRCI9PT1VP0VlKyJlciI6RWV9LHdlZWs6e2RvdzowLGRveTozfSxtZXJp''@;'; put 'put ''ZGllbVBhcnNlOi9yYXRpfHNva2FsbGltfGRvbnBhcmFtfHNhbmplLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oRWUsVSl7cmV0dXJuIDEyPT09RWUmJihFZT0wKSwicmF0aSI9PT1VP0VlPDQ/RWU6RWUrMTI6InNva2FsbGltIj09PVU/RWU6ImRvbnBhcmFtIj09PVU/RWU+MTI/RWU6RWUrMTI6''@;'; put 'put ''InNhbmplIj09PVU/RWUrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihFZSxVLFEpe3JldHVybiBFZTw0PyJyYXRpIjpFZTwxMj8ic29rYWxsaW0iOkVlPDE2PyJkb25wYXJhbSI6RWU8MjA/InNhbmplIjoicmF0aSJ9fSl9KEwoMTU0MzkpKX0sNDI2NDE6ZnVuY3Rpb24oWGUsSmUsTCl7''@;'; put 'put ''IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9ezE6Ilx1MGFlNyIsMjoiXHUwYWU4IiwzOiJcdTBhZTkiLDQ6Ilx1MGFlYSIsNToiXHUwYWViIiw2OiJcdTBhZWMiLDc6Ilx1MGFlZCIsODoiXHUwYWVlIiw5OiJcdTBhZWYiLDA6Ilx1MGFlNiJ9LEU9eyJcdTBhZTciOiIxIiwiXHUw''@;'; put 'put ''YWU4IjoiMiIsIlx1MGFlOSI6IjMiLCJcdTBhZWEiOiI0IiwiXHUwYWViIjoiNSIsIlx1MGFlYyI6IjYiLCJcdTBhZWQiOiI3IiwiXHUwYWVlIjoiOCIsIlx1MGFlZiI6IjkiLCJcdTBhZTYiOiIwIn07bWUuZGVmaW5lTG9jYWxlKCJndSIse21vbnRoczoiXHUwYTljXHUwYWJlXHUwYWE4XHUw''@;'; put 'put ''YWNkXHUwYWFmXHUwYWMxXHUwYTg2XHUwYWIwXHUwYWMwX1x1MGFhYlx1MGFjN1x1MGFhY1x1MGFjZFx1MGFiMFx1MGFjMVx1MGE4Nlx1MGFiMFx1MGFjMF9cdTBhYWVcdTBhYmVcdTBhYjBcdTBhY2RcdTBhOWFfXHUwYThmXHUwYWFhXHUwYWNkXHUwYWIwXHUwYWJmXHUwYWIyX1x1MGFhZVx1''@;'; put 'put ''MGFjN19cdTBhOWNcdTBhYzJcdTBhYThfXHUwYTljXHUwYWMxXHUwYWIyXHUwYWJlXHUwYTg4X1x1MGE5MVx1MGE5N1x1MGFiOFx1MGFjZFx1MGE5Zl9cdTBhYjhcdTBhYWFcdTBhY2RcdTBhOWZcdTBhYzdcdTBhYWVcdTBhY2RcdTBhYWNcdTBhYjBfXHUwYTkxXHUwYTk1XHUwYWNkXHUwYTlm''@;'; put 'put ''XHUwYWNkXHUwYWFjXHUwYWIwX1x1MGFhOFx1MGFiNVx1MGFjN1x1MGFhZVx1MGFjZFx1MGFhY1x1MGFiMF9cdTBhYTFcdTBhYmZcdTBhYjhcdTBhYzdcdTBhYWVcdTBhY2RcdTBhYWNcdTBhYjAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MGE5Y1x1MGFiZVx1MGFhOFx1MGFjZFx1MGFh''@;'; put 'put ''Zlx1MGFjMS5fXHUwYWFiXHUwYWM3XHUwYWFjXHUwYWNkXHUwYWIwXHUwYWMxLl9cdTBhYWVcdTBhYmVcdTBhYjBcdTBhY2RcdTBhOWFfXHUwYThmXHUwYWFhXHUwYWNkXHUwYWIwXHUwYWJmLl9cdTBhYWVcdTBhYzdfXHUwYTljXHUwYWMyXHUwYWE4X1x1MGE5Y1x1MGFjMVx1MGFiMlx1MGFi''@;'; put 'put ''ZS5fXHUwYTkxXHUwYTk3Ll9cdTBhYjhcdTBhYWFcdTBhY2RcdTBhOWZcdTBhYzcuX1x1MGE5MVx1MGE5NVx1MGFjZFx1MGE5Zlx1MGFjZC5fXHUwYWE4XHUwYWI1XHUwYWM3Ll9cdTBhYTFcdTBhYmZcdTBhYjhcdTBhYzcuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2Rh''@;'; put 'put ''eXM6Ilx1MGFiMFx1MGFiNVx1MGFiZlx1MGFiNVx1MGFiZVx1MGFiMF9cdTBhYjhcdTBhY2JcdTBhYWVcdTBhYjVcdTBhYmVcdTBhYjBfXHUwYWFlXHUwYTgyXHUwYTk3XHUwYWIzXHUwYWI1XHUwYWJlXHUwYWIwX1x1MGFhY1x1MGFjMVx1MGFhN1x1MGFjZFx1MGFiNVx1MGFiZVx1MGFiMF9c''@;'; put 'put ''dTBhOTdcdTBhYzFcdTBhYjBcdTBhYzFcdTBhYjVcdTBhYmVcdTBhYjBfXHUwYWI2XHUwYWMxXHUwYTk1XHUwYWNkXHUwYWIwXHUwYWI1XHUwYWJlXHUwYWIwX1x1MGFiNlx1MGFhOFx1MGFiZlx1MGFiNVx1MGFiZVx1MGFiMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTBhYjBcdTBh''@;'; put 'put ''YjVcdTBhYmZfXHUwYWI4XHUwYWNiXHUwYWFlX1x1MGFhZVx1MGE4Mlx1MGE5N1x1MGFiM19cdTBhYWNcdTBhYzFcdTBhYTdcdTBhY2RfXHUwYTk3XHUwYWMxXHUwYWIwXHUwYWMxX1x1MGFiNlx1MGFjMVx1MGE5NVx1MGFjZFx1MGFiMF9cdTBhYjZcdTBhYThcdTBhYmYiLnNwbGl0KCJfIiks''@;'; put 'put ''d2Vla2RheXNNaW46Ilx1MGFiMF9cdTBhYjhcdTBhY2JfXHUwYWFlXHUwYTgyX1x1MGFhY1x1MGFjMV9cdTBhOTdcdTBhYzFfXHUwYWI2XHUwYWMxX1x1MGFiNiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSBcdTBhYjVcdTBhYmVcdTBhOTdcdTBhY2RcdTBhYWZcdTBh''@;'; put 'put ''YzciLExUUzoiQSBoOm1tOnNzIFx1MGFiNVx1MGFiZVx1MGE5N1x1MGFjZFx1MGFhZlx1MGFjNyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBIGg6bW0gXHUwYWI1XHUwYWJlXHUwYTk3XHUwYWNkXHUwYWFmXHUwYWM3IixMTExMOiJkZGRkLCBE''@;'; put 'put ''IE1NTU0gWVlZWSwgQSBoOm1tIFx1MGFiNVx1MGFiZVx1MGE5N1x1MGFjZFx1MGFhZlx1MGFjNyJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwYTg2XHUwYTljXSBMVCIsbmV4dERheToiW1x1MGE5NVx1MGFiZVx1MGFiMlx1MGFjN10gTFQiLG5leHRXZWVrOiJkZGRkLCBMVCIsbGFzdERheToi''@;'; put 'put ''W1x1MGE5N1x1MGE4N1x1MGE5NVx1MGFiZVx1MGFiMlx1MGFjN10gTFQiLGxhc3RXZWVrOiJbXHUwYWFhXHUwYWJlXHUwYTliXHUwYWIyXHUwYWJlXSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwYWFlXHUwYWJlIixwYXN0OiIlcyBcdTBhYWFc''@;'; put 'put ''dTBhYjlcdTBhYzdcdTBhYjJcdTBhYmUiLHM6Ilx1MGE4NVx1MGFhZVx1MGFjMVx1MGE5NSBcdTBhYWFcdTBhYjNcdTBhY2IiLHNzOiIlZCBcdTBhYjhcdTBhYzdcdTBhOTVcdTBhODJcdTBhYTEiLG06Ilx1MGE4Zlx1MGE5NSBcdTBhYWVcdTBhYmZcdTBhYThcdTBhYmZcdTBhOWYiLG1tOiIl''@;'; put 'put ''ZCBcdTBhYWVcdTBhYmZcdTBhYThcdTBhYmZcdTBhOWYiLGg6Ilx1MGE4Zlx1MGE5NSBcdTBhOTVcdTBhYjJcdTBhYmVcdTBhOTUiLGhoOiIlZCBcdTBhOTVcdTBhYjJcdTBhYmVcdTBhOTUiLGQ6Ilx1MGE4Zlx1MGE5NSBcdTBhYTZcdTBhYmZcdTBhYjVcdTBhYjgiLGRkOiIlZCBcdTBhYTZc''@;'; put 'put ''dTBhYmZcdTBhYjVcdTBhYjgiLE06Ilx1MGE4Zlx1MGE5NSBcdTBhYWVcdTBhYjlcdTBhYmZcdTBhYThcdTBhY2IiLE1NOiIlZCBcdTBhYWVcdTBhYjlcdTBhYmZcdTBhYThcdTBhY2IiLHk6Ilx1MGE4Zlx1MGE5NSBcdTBhYjVcdTBhYjBcdTBhY2RcdTBhYjciLHl5OiIlZCBcdTBhYjVcdTBh''@;'; put 'put ''YjBcdTBhY2RcdTBhYjcifSxwcmVwYXJzZTpmdW5jdGlvbihVKXtyZXR1cm4gVS5yZXBsYWNlKC9bXHUwYWU3XHUwYWU4XHUwYWU5XHUwYWVhXHUwYWViXHUwYWVjXHUwYWVkXHUwYWVlXHUwYWVmXHUwYWU2XS9nLGZ1bmN0aW9uKFEpe3JldHVybiBFW1FdfSl9LHBvc3Rmb3JtYXQ6ZnVuY3Rp''@;'; put 'put ''b24oVSl7cmV0dXJuIFUucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihRKXtyZXR1cm4gQltRXX0pfSxtZXJpZGllbVBhcnNlOi9cdTBhYjBcdTBhYmVcdTBhYTR8XHUwYWFjXHUwYWFhXHUwYWNiXHUwYWIwfFx1MGFiOFx1MGFiNVx1MGFiZVx1MGFiMHxcdTBhYjhcdTBhYmVcdTBhODJcdTBhOWMv''@;'; put 'put ''LG1lcmlkaWVtSG91cjpmdW5jdGlvbihVLFEpe3JldHVybiAxMj09PVUmJihVPTApLCJcdTBhYjBcdTBhYmVcdTBhYTQiPT09UT9VPDQ/VTpVKzEyOiJcdTBhYjhcdTBhYjVcdTBhYmVcdTBhYjAiPT09UT9VOiJcdTBhYWNcdTBhYWFcdTBhY2JcdTBhYjAiPT09UT9VPj0xMD9VOlUrMTI6Ilx1''@;'; put 'put ''MGFiOFx1MGFiZVx1MGE4Mlx1MGE5YyI9PT1RP1UrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihVLFEsail7cmV0dXJuIFU8ND8iXHUwYWIwXHUwYWJlXHUwYWE0IjpVPDEwPyJcdTBhYjhcdTBhYjVcdTBhYmVcdTBhYjAiOlU8MTc/Ilx1MGFhY1x1MGFhYVx1MGFjYlx1MGFiMCI6VTwy''@;'; put 'put ''MD8iXHUwYWI4XHUwYWJlXHUwYTgyXHUwYTljIjoiXHUwYWIwXHUwYWJlXHUwYWE0In0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KEwoMTU0MzkpKX0sNzUzNjpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoImhlIix7bW9udGhzOiJc''@;'; put 'put ''dTA1ZDlcdTA1ZTBcdTA1ZDVcdTA1ZDBcdTA1ZThfXHUwNWU0XHUwNWQxXHUwNWU4XHUwNWQ1XHUwNWQwXHUwNWU4X1x1MDVkZVx1MDVlOFx1MDVlNV9cdTA1ZDBcdTA1ZTRcdTA1ZThcdTA1ZDlcdTA1ZGNfXHUwNWRlXHUwNWQwXHUwNWQ5X1x1MDVkOVx1MDVkNVx1MDVlMFx1MDVkOV9cdTA1''@;'; put 'put ''ZDlcdTA1ZDVcdTA1ZGNcdTA1ZDlfXHUwNWQwXHUwNWQ1XHUwNWQyXHUwNWQ1XHUwNWUxXHUwNWQ4X1x1MDVlMVx1MDVlNFx1MDVkOFx1MDVkZVx1MDVkMVx1MDVlOF9cdTA1ZDBcdTA1ZDVcdTA1ZTdcdTA1ZDhcdTA1ZDVcdTA1ZDFcdTA1ZThfXHUwNWUwXHUwNWQ1XHUwNWQxXHUwNWRlXHUw''@;'; put 'put ''NWQxXHUwNWU4X1x1MDVkM1x1MDVlNlx1MDVkZVx1MDVkMVx1MDVlOCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNWQ5XHUwNWUwXHUwNWQ1XHUwNWYzX1x1MDVlNFx1MDVkMVx1MDVlOFx1MDVmM19cdTA1ZGVcdTA1ZThcdTA1ZTVfXHUwNWQwXHUwNWU0XHUwNWU4XHUwNWYzX1x1MDVk''@;'; put 'put ''ZVx1MDVkMFx1MDVkOV9cdTA1ZDlcdTA1ZDVcdTA1ZTBcdTA1ZDlfXHUwNWQ5XHUwNWQ1XHUwNWRjXHUwNWQ5X1x1MDVkMFx1MDVkNVx1MDVkMlx1MDVmM19cdTA1ZTFcdTA1ZTRcdTA1ZDhcdTA1ZjNfXHUwNWQwXHUwNWQ1XHUwNWU3XHUwNWYzX1x1MDVlMFx1MDVkNVx1MDVkMVx1MDVmM19c''@;'; put 'put ''dTA1ZDNcdTA1ZTZcdTA1ZGVcdTA1ZjMiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDVlOFx1MDVkMFx1MDVlOVx1MDVkNVx1MDVkZl9cdTA1ZTlcdTA1ZTBcdTA1ZDlfXHUwNWU5XHUwNWRjXHUwNWQ5XHUwNWU5XHUwNWQ5X1x1MDVlOFx1MDVkMVx1MDVkOVx1MDVlMlx1MDVkOV9cdTA1ZDdc''@;'; put 'put ''dTA1ZGVcdTA1ZDlcdTA1ZTlcdTA1ZDlfXHUwNWU5XHUwNWQ5XHUwNWU5XHUwNWQ5X1x1MDVlOVx1MDVkMVx1MDVlYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA1ZDBcdTA1ZjNfXHUwNWQxXHUwNWYzX1x1MDVkMlx1MDVmM19cdTA1ZDNcdTA1ZjNfXHUwNWQ0XHUwNWYzX1x1MDVk''@;'; put 'put ''NVx1MDVmM19cdTA1ZTlcdTA1ZjMiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDVkMF9cdTA1ZDFfXHUwNWQyX1x1MDVkM19cdTA1ZDRfXHUwNWQ1X1x1MDVlOSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixM''@;'; put 'put ''TDoiRCBbXHUwNWQxXU1NTU0gWVlZWSIsTExMOiJEIFtcdTA1ZDFdTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIFtcdTA1ZDFdTU1NTSBZWVlZIEhIOm1tIixsOiJEL00vWVlZWSIsbGw6IkQgTU1NIFlZWVkiLGxsbDoiRCBNTU0gWVlZWSBISDptbSIsbGxsbDoiZGRkLCBEIE1NTSBZ''@;'; put 'put ''WVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA1ZDRcdTA1ZDlcdTA1ZDVcdTA1ZGQgXHUwNWQxXHUwNWJlXUxUIixuZXh0RGF5OiJbXHUwNWRlXHUwNWQ3XHUwNWU4IFx1MDVkMVx1MDViZV1MVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDVkMVx1MDVlOVx1MDVlMlx1MDVkNF0gTFQi''@;'; put 'put ''LGxhc3REYXk6IltcdTA1ZDBcdTA1ZWFcdTA1ZGVcdTA1ZDVcdTA1ZGMgXHUwNWQxXHUwNWJlXUxUIixsYXN0V2VlazoiW1x1MDVkMVx1MDVkOVx1MDVkNVx1MDVkZF0gZGRkZCBbXHUwNWQ0XHUwNWQwXHUwNWQ3XHUwNWU4XHUwNWQ1XHUwNWRmIFx1MDVkMVx1MDVlOVx1MDVlMlx1MDVkNF0g''@;'; put 'put ''TFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDVkMVx1MDVlMlx1MDVkNVx1MDVkMyAlcyIscGFzdDoiXHUwNWRjXHUwNWU0XHUwNWUwXHUwNWQ5ICVzIixzOiJcdTA1ZGVcdTA1ZTFcdTA1ZTRcdTA1ZTggXHUwNWU5XHUwNWUwXHUwNWQ5XHUwNWQ1XHUwNWVhIixz''@;'; put 'put ''czoiJWQgXHUwNWU5XHUwNWUwXHUwNWQ5XHUwNWQ1XHUwNWVhIixtOiJcdTA1ZDNcdTA1ZTdcdTA1ZDQiLG1tOiIlZCBcdTA1ZDNcdTA1ZTdcdTA1ZDVcdTA1ZWEiLGg6Ilx1MDVlOVx1MDVlMlx1MDVkNCIsaGg6ZnVuY3Rpb24oRSl7cmV0dXJuIDI9PT1FPyJcdTA1ZTlcdTA1ZTJcdTA1ZWFc''@;'; put 'put ''dTA1ZDlcdTA1ZDlcdTA1ZGQiOkUrIiBcdTA1ZTlcdTA1ZTJcdTA1ZDVcdTA1ZWEifSxkOiJcdTA1ZDlcdTA1ZDVcdTA1ZGQiLGRkOmZ1bmN0aW9uKEUpe3JldHVybiAyPT09RT8iXHUwNWQ5XHUwNWQ1XHUwNWRlXHUwNWQ5XHUwNWQ5XHUwNWRkIjpFKyIgXHUwNWQ5XHUwNWRlXHUwNWQ5XHUw''@;'; put 'put ''NWRkIn0sTToiXHUwNWQ3XHUwNWQ1XHUwNWQzXHUwNWU5IixNTTpmdW5jdGlvbihFKXtyZXR1cm4gMj09PUU/Ilx1MDVkN1x1MDVkNVx1MDVkM1x1MDVlOVx1MDVkOVx1MDVkOVx1MDVkZCI6RSsiIFx1MDVkN1x1MDVkNVx1MDVkM1x1MDVlOVx1MDVkOVx1MDVkZCJ9LHk6Ilx1MDVlOVx1MDVl''@;'; put 'put ''MFx1MDVkNCIseXk6ZnVuY3Rpb24oRSl7cmV0dXJuIDI9PT1FPyJcdTA1ZTlcdTA1ZTBcdTA1ZWFcdTA1ZDlcdTA1ZDlcdTA1ZGQiOkUlMTA9PTAmJjEwIT09RT9FKyIgXHUwNWU5XHUwNWUwXHUwNWQ0IjpFKyIgXHUwNWU5XHUwNWUwXHUwNWQ5XHUwNWRkIn19LG1lcmlkaWVtUGFyc2U6L1x1''@;'; put 'put ''MDVkMFx1MDVkN1x1MDVkNCJcdTA1ZTZ8XHUwNWRjXHUwNWU0XHUwNWUwXHUwNWQ0Ilx1MDVlNnxcdTA1ZDBcdTA1ZDdcdTA1ZThcdTA1ZDkgXHUwNWQ0XHUwNWU2XHUwNWQ0XHUwNWU4XHUwNWQ5XHUwNWQ5XHUwNWRkfFx1MDVkY1x1MDVlNFx1MDVlMFx1MDVkOSBcdTA1ZDRcdTA1ZTZcdTA1''@;'; put 'put ''ZDRcdTA1ZThcdTA1ZDlcdTA1ZDlcdTA1ZGR8XHUwNWRjXHUwNWU0XHUwNWUwXHUwNWQ1XHUwNWVhIFx1MDVkMVx1MDVkNVx1MDVlN1x1MDVlOHxcdTA1ZDFcdTA1ZDFcdTA1ZDVcdTA1ZTdcdTA1ZTh8XHUwNWQxXHUwNWUyXHUwNWU4XHUwNWQxL2ksaXNQTTpmdW5jdGlvbihFKXtyZXR1cm4v''@;'; put 'put ''XihcdTA1ZDBcdTA1ZDdcdTA1ZDQiXHUwNWU2fFx1MDVkMFx1MDVkN1x1MDVlOFx1MDVkOSBcdTA1ZDRcdTA1ZTZcdTA1ZDRcdTA1ZThcdTA1ZDlcdTA1ZDlcdTA1ZGR8XHUwNWQxXHUwNWUyXHUwNWU4XHUwNWQxKSQvLnRlc3QoRSl9LG1lcmlkaWVtOmZ1bmN0aW9uKEUsRWUsVSl7cmV0dXJu''@;'; put 'put ''IEU8NT8iXHUwNWRjXHUwNWU0XHUwNWUwXHUwNWQ1XHUwNWVhIFx1MDVkMVx1MDVkNVx1MDVlN1x1MDVlOCI6RTwxMD8iXHUwNWQxXHUwNWQxXHUwNWQ1XHUwNWU3XHUwNWU4IjpFPDEyP1U/J1x1MDVkY1x1MDVlNFx1MDVlMFx1MDVkNCJcdTA1ZTYnOiJcdTA1ZGNcdTA1ZTRcdTA1ZTBcdTA1''@;'; put 'put ''ZDkgXHUwNWQ0XHUwNWU2XHUwNWQ0XHUwNWU4XHUwNWQ5XHUwNWQ5XHUwNWRkIjpFPDE4P1U/J1x1MDVkMFx1MDVkN1x1MDVkNCJcdTA1ZTYnOiJcdTA1ZDBcdTA1ZDdcdTA1ZThcdTA1ZDkgXHUwNWQ0XHUwNWU2XHUwNWQ0XHUwNWU4XHUwNWQ5XHUwNWQ5XHUwNWRkIjoiXHUwNWQxXHUwNWUy''@;'; put 'put ''XHUwNWU4XHUwNWQxIn19KX0oTCgxNTQzOSkpfSw5NjMzNTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj17MToiXHUwOTY3IiwyOiJcdTA5NjgiLDM6Ilx1MDk2OSIsNDoiXHUwOTZhIiw1OiJcdTA5NmIiLDY6Ilx1MDk2YyIsNzoiXHUwOTZkIiw4''@;'; put 'put ''OiJcdTA5NmUiLDk6Ilx1MDk2ZiIsMDoiXHUwOTY2In0sRT17Ilx1MDk2NyI6IjEiLCJcdTA5NjgiOiIyIiwiXHUwOTY5IjoiMyIsIlx1MDk2YSI6IjQiLCJcdTA5NmIiOiI1IiwiXHUwOTZjIjoiNiIsIlx1MDk2ZCI6IjciLCJcdTA5NmUiOiI4IiwiXHUwOTZmIjoiOSIsIlx1MDk2NiI6IjAi''@;'; put 'put ''fSxFZT1bL15cdTA5MWNcdTA5MjgvaSwvXlx1MDkyYlx1MDkzY1x1MDkzMHxcdTA5MmJcdTA5MzAvaSwvXlx1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYS9pLC9eXHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQ4L2ksL15cdTA5MmVcdTA5MDgvaSwvXlx1MDkxY1x1MDk0Mlx1MDky''@;'; put 'put ''OC9pLC9eXHUwOTFjXHUwOTQxXHUwOTMyL2ksL15cdTA5MDVcdTA5MTcvaSwvXlx1MDkzOFx1MDkzZlx1MDkyNFx1MDkwMnxcdTA5MzhcdTA5M2ZcdTA5MjQvaSwvXlx1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Mi9pLC9eXHUwOTI4XHUwOTM1fFx1MDkyOFx1MDkzNVx1MDkwMi9pLC9e''@;'; put 'put ''XHUwOTI2XHUwOTNmXHUwOTM4XHUwOTAyfFx1MDkyNlx1MDkzZlx1MDkzOC9pXTttZS5kZWZpbmVMb2NhbGUoImhpIix7bW9udGhzOntmb3JtYXQ6Ilx1MDkxY1x1MDkyOFx1MDkzNVx1MDkzMFx1MDk0MF9cdTA5MmJcdTA5M2NcdTA5MzBcdTA5MzVcdTA5MzBcdTA5NDBfXHUwOTJlXHUwOTNl''@;'; put 'put ''XHUwOTMwXHUwOTRkXHUwOTFhX1x1MDkwNVx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0OFx1MDkzMl9cdTA5MmVcdTA5MDhfXHUwOTFjXHUwOTQyXHUwOTI4X1x1MDkxY1x1MDk0MVx1MDkzMlx1MDkzZVx1MDkwOF9cdTA5MDVcdTA5MTdcdTA5MzhcdTA5NGRcdTA5MjRfXHUwOTM4XHUwOTNmXHUw''@;'; put 'put ''OTI0XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwX1x1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Mlx1MDkyY1x1MDkzMF9cdTA5MjhcdTA5MzVcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzBfXHUwOTI2XHUwOTNmXHUwOTM4XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwIi5zcGxpdCgiXyIpLHN0''@;'; put 'put ''YW5kYWxvbmU6Ilx1MDkxY1x1MDkyOFx1MDkzNVx1MDkzMFx1MDk0MF9cdTA5MmJcdTA5MzBcdTA5MzVcdTA5MzBcdTA5NDBfXHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhX1x1MDkwNVx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0OFx1MDkzMl9cdTA5MmVcdTA5MDhfXHUwOTFjXHUwOTQy''@;'; put 'put ''XHUwOTI4X1x1MDkxY1x1MDk0MVx1MDkzMlx1MDkzZVx1MDkwOF9cdTA5MDVcdTA5MTdcdTA5MzhcdTA5NGRcdTA5MjRfXHUwOTM4XHUwOTNmXHUwOTI0XHUwOTAyXHUwOTJjXHUwOTMwX1x1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Mlx1MDkyY1x1MDkzMF9cdTA5MjhcdTA5MzVcdTA5''@;'; put 'put ''MDJcdTA5MmNcdTA5MzBfXHUwOTI2XHUwOTNmXHUwOTM4XHUwOTAyXHUwOTJjXHUwOTMwIi5zcGxpdCgiXyIpfSxtb250aHNTaG9ydDoiXHUwOTFjXHUwOTI4Ll9cdTA5MmJcdTA5M2NcdTA5MzAuX1x1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYV9cdTA5MDVcdTA5MmFcdTA5NGRcdTA5''@;'; put 'put ''MzBcdTA5NDguX1x1MDkyZVx1MDkwOF9cdTA5MWNcdTA5NDJcdTA5MjhfXHUwOTFjXHUwOTQxXHUwOTMyLl9cdTA5MDVcdTA5MTcuX1x1MDkzOFx1MDkzZlx1MDkyNC5fXHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTQyLl9cdTA5MjhcdTA5MzUuX1x1MDkyNlx1MDkzZlx1MDkzOC4iLnNw''@;'; put 'put ''bGl0KCJfIiksd2Vla2RheXM6Ilx1MDkzMFx1MDkzNVx1MDkzZlx1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MzhcdTA5NGJcdTA5MmVcdTA5MzVcdTA5M2VcdTA5MzBfXHUwOTJlXHUwOTAyXHUwOTE3XHUwOTMyXHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkyY1x1MDk0MVx1MDkyN1x1MDkzNVx1MDkz''@;'; put 'put ''ZVx1MDkzMF9cdTA5MTdcdTA5NDFcdTA5MzBcdTA5NDJcdTA5MzVcdTA5M2VcdTA5MzBfXHUwOTM2XHUwOTQxXHUwOTE1XHUwOTRkXHUwOTMwXHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkzNlx1MDkyOFx1MDkzZlx1MDkzNVx1MDkzZVx1MDkzMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJc''@;'; put 'put ''dTA5MzBcdTA5MzVcdTA5M2ZfXHUwOTM4XHUwOTRiXHUwOTJlX1x1MDkyZVx1MDkwMlx1MDkxN1x1MDkzMl9cdTA5MmNcdTA5NDFcdTA5MjdfXHUwOTE3XHUwOTQxXHUwOTMwXHUwOTQyX1x1MDkzNlx1MDk0MVx1MDkxNVx1MDk0ZFx1MDkzMF9cdTA5MzZcdTA5MjhcdTA5M2YiLnNwbGl0KCJf''@;'; put 'put ''Iiksd2Vla2RheXNNaW46Ilx1MDkzMF9cdTA5MzhcdTA5NGJfXHUwOTJlXHUwOTAyX1x1MDkyY1x1MDk0MV9cdTA5MTdcdTA5NDFfXHUwOTM2XHUwOTQxX1x1MDkzNiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSBcdTA5MmNcdTA5MWNcdTA5NDciLExUUzoiQSBoOm1t''@;'; put 'put ''OnNzIFx1MDkyY1x1MDkxY1x1MDk0NyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBIGg6bW0gXHUwOTJjXHUwOTFjXHUwOTQ3IixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MDkyY1x1MDkxY1x1MDk0NyJ9LG1vbnRoc1BhcnNl''@;'; put 'put ''OkVlLGxvbmdNb250aHNQYXJzZTpFZSxzaG9ydE1vbnRoc1BhcnNlOlsvXlx1MDkxY1x1MDkyOC9pLC9eXHUwOTJiXHUwOTNjXHUwOTMwL2ksL15cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWEvaSwvXlx1MDkwNVx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0OC9pLC9eXHUwOTJlXHUwOTA4''@;'; put 'put ''L2ksL15cdTA5MWNcdTA5NDJcdTA5MjgvaSwvXlx1MDkxY1x1MDk0MVx1MDkzMi9pLC9eXHUwOTA1XHUwOTE3L2ksL15cdTA5MzhcdTA5M2ZcdTA5MjQvaSwvXlx1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Mi9pLC9eXHUwOTI4XHUwOTM1L2ksL15cdTA5MjZcdTA5M2ZcdTA5MzgvaV0s''@;'; put 'put ''bW9udGhzUmVnZXg6L14oXHUwOTFjXHUwOTI4XHUwOTM1XHUwOTMwXHUwOTQwfFx1MDkxY1x1MDkyOFwuP3xcdTA5MmJcdTA5M2NcdTA5MzBcdTA5MzVcdTA5MzBcdTA5NDB8XHUwOTJiXHUwOTMwXHUwOTM1XHUwOTMwXHUwOTQwfFx1MDkyYlx1MDkzY1x1MDkzMFwuP3xcdTA5MmVcdTA5M2Vc''@;'; put 'put ''dTA5MzBcdTA5NGRcdTA5MWE/fFx1MDkwNVx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0OFx1MDkzMnxcdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDhcLj98XHUwOTJlXHUwOTA4P3xcdTA5MWNcdTA5NDJcdTA5Mjg/fFx1MDkxY1x1MDk0MVx1MDkzMlx1MDkzZVx1MDkwOHxcdTA5MWNcdTA5''@;'; put 'put ''NDFcdTA5MzJcLj98XHUwOTA1XHUwOTE3XHUwOTM4XHUwOTRkXHUwOTI0fFx1MDkwNVx1MDkxN1wuP3xcdTA5MzhcdTA5M2ZcdTA5MjRcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzB8XHUwOTM4XHUwOTNmXHUwOTI0XHUwOTAyXHUwOTJjXHUwOTMwfFx1MDkzOFx1MDkzZlx1MDkyNFwuP3xcdTA5''@;'; put 'put ''MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NDJcdTA5MmNcdTA5MzB8XHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTQyXC4/fFx1MDkyOFx1MDkzNVx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMHxcdTA5MjhcdTA5MzVcdTA5MDJcdTA5MmNcdTA5MzB8XHUwOTI4XHUwOTM1XC4/fFx1MDkyNlx1''@;'; put 'put ''MDkzZlx1MDkzOFx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMHxcdTA5MjZcdTA5M2ZcdTA5MzhcdTA5MDJcdTA5MmNcdTA5MzB8XHUwOTI2XHUwOTNmXHUwOTM4XC4/KS9pLG1vbnRoc1Nob3J0UmVnZXg6L14oXHUwOTFjXHUwOTI4XHUwOTM1XHUwOTMwXHUwOTQwfFx1MDkxY1x1MDkyOFwuP3xc''@;'; put 'put ''dTA5MmJcdTA5M2NcdTA5MzBcdTA5MzVcdTA5MzBcdTA5NDB8XHUwOTJiXHUwOTMwXHUwOTM1XHUwOTMwXHUwOTQwfFx1MDkyYlx1MDkzY1x1MDkzMFwuP3xcdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWE/fFx1MDkwNVx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0OFx1MDkzMnxcdTA5MDVc''@;'; put 'put ''dTA5MmFcdTA5NGRcdTA5MzBcdTA5NDhcLj98XHUwOTJlXHUwOTA4P3xcdTA5MWNcdTA5NDJcdTA5Mjg/fFx1MDkxY1x1MDk0MVx1MDkzMlx1MDkzZVx1MDkwOHxcdTA5MWNcdTA5NDFcdTA5MzJcLj98XHUwOTA1XHUwOTE3XHUwOTM4XHUwOTRkXHUwOTI0fFx1MDkwNVx1MDkxN1wuP3xcdTA5''@;'; put 'put ''MzhcdTA5M2ZcdTA5MjRcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzB8XHUwOTM4XHUwOTNmXHUwOTI0XHUwOTAyXHUwOTJjXHUwOTMwfFx1MDkzOFx1MDkzZlx1MDkyNFwuP3xcdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NDJcdTA5MmNcdTA5MzB8XHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFm''@;'; put 'put ''XHUwOTQyXC4/fFx1MDkyOFx1MDkzNVx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMHxcdTA5MjhcdTA5MzVcdTA5MDJcdTA5MmNcdTA5MzB8XHUwOTI4XHUwOTM1XC4/fFx1MDkyNlx1MDkzZlx1MDkzOFx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMHxcdTA5MjZcdTA5M2ZcdTA5MzhcdTA5MDJcdTA5''@;'; put 'put ''MmNcdTA5MzB8XHUwOTI2XHUwOTNmXHUwOTM4XC4/KS9pLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKFx1MDkxY1x1MDkyOFx1MDkzNVx1MDkzMFx1MDk0MD98XHUwOTJiXHUwOTNjXHUwOTMwXHUwOTM1XHUwOTMwXHUwOTQwfFx1MDkyYlx1MDkzMFx1MDkzNVx1MDkzMFx1MDk0MD98XHUwOTJlXHUw''@;'; put 'put ''OTNlXHUwOTMwXHUwOTRkXHUwOTFhP3xcdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDhcdTA5MzI/fFx1MDkyZVx1MDkwOD98XHUwOTFjXHUwOTQyXHUwOTI4P3xcdTA5MWNcdTA5NDFcdTA5MzJcdTA5M2VcdTA5MDg/fFx1MDkwNVx1MDkxN1x1MDkzOFx1MDk0ZFx1MDkyND98XHUwOTM4''@;'; put 'put ''XHUwOTNmXHUwOTI0XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwfFx1MDkzOFx1MDkzZlx1MDkyNFx1MDkwMlx1MDkyY1x1MDkzMHxcdTA5MzhcdTA5M2ZcdTA5MjQ/XC4/fFx1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Mlx1MDkyY1x1MDkzMHxcdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZc''@;'; put 'put ''dTA5NDJcLj98XHUwOTI4XHUwOTM1XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwfFx1MDkyOFx1MDkzNVx1MDkwMlx1MDkyY1x1MDkzMD98XHUwOTI2XHUwOTNmXHUwOTM4XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwfFx1MDkyNlx1MDkzZlx1MDkzOFx1MDkwMlx1MDkyY1x1MDkzMD8pL2ksbW9u''@;'; put 'put ''dGhzU2hvcnRTdHJpY3RSZWdleDovXihcdTA5MWNcdTA5MjhcLj98XHUwOTJiXHUwOTNjXHUwOTMwXC4/fFx1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYT98XHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQ4XC4/fFx1MDkyZVx1MDkwOD98XHUwOTFjXHUwOTQyXHUwOTI4P3xcdTA5''@;'; put 'put ''MWNcdTA5NDFcdTA5MzJcLj98XHUwOTA1XHUwOTE3XC4/fFx1MDkzOFx1MDkzZlx1MDkyNFwuP3xcdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NDJcLj98XHUwOTI4XHUwOTM1XC4/fFx1MDkyNlx1MDkzZlx1MDkzOFwuPykvaSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDkwNlx1MDkxY10g''@;'; put 'put ''TFQiLG5leHREYXk6IltcdTA5MTVcdTA5MzJdIExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IltcdTA5MTVcdTA5MzJdIExUIixsYXN0V2VlazoiW1x1MDkyYVx1MDkzZlx1MDkxYlx1MDkzMlx1MDk0N10gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1''@;'; put 'put ''cmU6IiVzIFx1MDkyZVx1MDk0N1x1MDkwMiIscGFzdDoiJXMgXHUwOTJhXHUwOTM5XHUwOTMyXHUwOTQ3IixzOiJcdTA5MTVcdTA5NDFcdTA5MWIgXHUwOTM5XHUwOTQwIFx1MDkxNVx1MDk0ZFx1MDkzN1x1MDkyMyIsc3M6IiVkIFx1MDkzOFx1MDk0N1x1MDkxNVx1MDkwMlx1MDkyMSIsbToi''@;'; put 'put ''XHUwOTBmXHUwOTE1IFx1MDkyZVx1MDkzZlx1MDkyOFx1MDkxZiIsbW06IiVkIFx1MDkyZVx1MDkzZlx1MDkyOFx1MDkxZiIsaDoiXHUwOTBmXHUwOTE1IFx1MDkxOFx1MDkwMlx1MDkxZlx1MDkzZSIsaGg6IiVkIFx1MDkxOFx1MDkwMlx1MDkxZlx1MDk0NyIsZDoiXHUwOTBmXHUwOTE1IFx1''@;'; put 'put ''MDkyNlx1MDkzZlx1MDkyOCIsZGQ6IiVkIFx1MDkyNlx1MDkzZlx1MDkyOCIsTToiXHUwOTBmXHUwOTE1IFx1MDkyZVx1MDkzOVx1MDk0MFx1MDkyOFx1MDk0NyIsTU06IiVkIFx1MDkyZVx1MDkzOVx1MDk0MFx1MDkyOFx1MDk0NyIseToiXHUwOTBmXHUwOTE1IFx1MDkzNVx1MDkzMFx1MDk0''@;'; put 'put ''ZFx1MDkzNyIseXk6IiVkIFx1MDkzNVx1MDkzMFx1MDk0ZFx1MDkzNyJ9LHByZXBhcnNlOmZ1bmN0aW9uKGope3JldHVybiBqLnJlcGxhY2UoL1tcdTA5NjdcdTA5NjhcdTA5NjlcdTA5NmFcdTA5NmJcdTA5NmNcdTA5NmRcdTA5NmVcdTA5NmZcdTA5NjZdL2csZnVuY3Rpb24ocmUpe3JldHVy''@;'; put 'put ''biBFW3JlXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGope3JldHVybiBqLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24ocmUpe3JldHVybiBCW3JlXX0pfSxtZXJpZGllbVBhcnNlOi9cdTA5MzBcdTA5M2VcdTA5MjR8XHUwOTM4XHUwOTQxXHUwOTJjXHUwOTM5fFx1MDkyNlx1MDk0Ylx1MDkyYVx1''@;'; put 'put ''MDkzOVx1MDkzMHxcdTA5MzZcdTA5M2VcdTA5MmUvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihqLHJlKXtyZXR1cm4gMTI9PT1qJiYoaj0wKSwiXHUwOTMwXHUwOTNlXHUwOTI0Ij09PXJlP2o8ND9qOmorMTI6Ilx1MDkzOFx1MDk0MVx1MDkyY1x1MDkzOSI9PT1yZT9qOiJcdTA5MjZcdTA5NGJc''@;'; put 'put ''dTA5MmFcdTA5MzlcdTA5MzAiPT09cmU/aj49MTA/ajpqKzEyOiJcdTA5MzZcdTA5M2VcdTA5MmUiPT09cmU/aisxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKGoscmUsYWUpe3JldHVybiBqPDQ/Ilx1MDkzMFx1MDkzZVx1MDkyNCI6ajwxMD8iXHUwOTM4XHUwOTQxXHUwOTJjXHUwOTM5''@;'; put 'put ''IjpqPDE3PyJcdTA5MjZcdTA5NGJcdTA5MmFcdTA5MzlcdTA5MzAiOmo8MjA/Ilx1MDkzNlx1MDkzZVx1MDkyZSI6Ilx1MDkzMFx1MDkzZVx1MDkyNCJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShMKDE1NDM5KSl9LDc0NTg6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0''@;'; put 'put ''cmljdCI7ZnVuY3Rpb24gQihFZSxVLFEpe3ZhciBqPUVlKyIgIjtzd2l0Y2goUSl7Y2FzZSJzcyI6cmV0dXJuIGorKDE9PT1FZT8ic2VrdW5kYSI6Mj09PUVlfHwzPT09RWV8fDQ9PT1FZT8ic2VrdW5kZSI6InNla3VuZGkiKTtjYXNlIm0iOnJldHVybiBVPyJqZWRuYSBtaW51dGEiOiJqZWRu''@;'; put 'put ''ZSBtaW51dGUiO2Nhc2UibW0iOnJldHVybiBqKygxPT09RWU/Im1pbnV0YSI6Mj09PUVlfHwzPT09RWV8fDQ9PT1FZT8ibWludXRlIjoibWludXRhIik7Y2FzZSJoIjpyZXR1cm4gVT8iamVkYW4gc2F0IjoiamVkbm9nIHNhdGEiO2Nhc2UiaGgiOnJldHVybiBqKygxPT09RWU/InNhdCI6Mj09''@;'; put 'put ''PUVlfHwzPT09RWV8fDQ9PT1FZT8ic2F0YSI6InNhdGkiKTtjYXNlImRkIjpyZXR1cm4gaisoMT09PUVlPyJkYW4iOiJkYW5hIik7Y2FzZSJNTSI6cmV0dXJuIGorKDE9PT1FZT8ibWplc2VjIjoyPT09RWV8fDM9PT1FZXx8ND09PUVlPyJtamVzZWNhIjoibWplc2VjaSIpO2Nhc2UieXkiOnJl''@;'; put 'put ''dHVybiBqKygxPT09RWU/ImdvZGluYSI6Mj09PUVlfHwzPT09RWV8fDQ9PT1FZT8iZ29kaW5lIjoiZ29kaW5hIil9fW1lLmRlZmluZUxvY2FsZSgiaHIiLHttb250aHM6e2Zvcm1hdDoic2lqZVx1MDEwZG5qYV92ZWxqYVx1MDEwZGVfb1x1MDE3ZXVqa2FfdHJhdm5qYV9zdmlibmphX2xpcG5q''@;'; put 'put ''YV9zcnBuamFfa29sb3ZvemFfcnVqbmFfbGlzdG9wYWRhX3N0dWRlbm9nYV9wcm9zaW5jYSIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJzaWplXHUwMTBkYW5qX3ZlbGphXHUwMTBkYV9vXHUwMTdldWpha190cmF2YW5qX3N2aWJhbmpfbGlwYW5qX3NycGFual9rb2xvdm96X3J1amFuX2xpc3Rv''@;'; put 'put ''cGFkX3N0dWRlbmlfcHJvc2luYWMiLnNwbGl0KCJfIil9LG1vbnRoc1Nob3J0OiJzaWouX3ZlbGouX29cdTAxN2V1Ll90cmEuX3N2aS5fbGlwLl9zcnAuX2tvbC5fcnVqLl9saXMuX3N0dS5fcHJvLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJuZWRqZWxqYV9w''@;'; put 'put ''b25lZGplbGpha191dG9yYWtfc3JpamVkYV9cdTAxMGRldHZydGFrX3BldGFrX3N1Ym90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZWQuX3Bvbi5fdXRvLl9zcmkuX1x1MDEwZGV0Ll9wZXQuX3N1Yi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Im5lX3BvX3V0X3NyX1x1MDEwZGVf''@;'; put 'put ''cGVfc3UiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRG8gTU1NTSBZWVlZIixMTEw6IkRvIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBEbyBNTU1NIFlZWVkgSDpt''@;'; put 'put ''bSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZGFuYXMgdV0gTFQiLG5leHREYXk6IltzdXRyYSB1XSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdV0gW25lZGplbGp1XSBbdV0gTFQiO2Nhc2UgMzpyZXR1cm4iW3VdIFtzcmlqZWR1XSBb''@;'; put 'put ''dV0gTFQiO2Nhc2UgNjpyZXR1cm4iW3VdIFtzdWJvdHVdIFt1XSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbdV0gZGRkZCBbdV0gTFQifX0sbGFzdERheToiW2p1XHUwMTBkZXIgdV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nh''@;'; put 'put ''c2UgMDpyZXR1cm4iW3Byb1x1MDE2MWx1XSBbbmVkamVsanVdIFt1XSBMVCI7Y2FzZSAzOnJldHVybiJbcHJvXHUwMTYxbHVdIFtzcmlqZWR1XSBbdV0gTFQiO2Nhc2UgNjpyZXR1cm4iW3Byb1x1MDE2MWxlXSBbc3Vib3RlXSBbdV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpy''@;'; put 'put ''ZXR1cm4iW3Byb1x1MDE2MWxpXSBkZGRkIFt1XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicHJpamUgJXMiLHM6InBhciBzZWt1bmRpIixzczpCLG06QixtbTpCLGg6QixoaDpCLGQ6ImRhbiIsZGQ6QixNOiJtamVzZWMiLE1NOkIseToi''@;'; put 'put ''Z29kaW51Iix5eTpCfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSl9KEwoMTU0MzkpKX0sNTY1NDA6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9InZhc1x4ZTFybmFw''@;'; put 'put ''IGhceGU5dGZcdTAxNTFuIGtlZGRlbiBzemVyZFx4ZTFuIGNzXHhmY3RceGY2cnRceGY2a1x4ZjZuIHBceGU5bnRla2VuIHN6b21iYXRvbiIuc3BsaXQoIiAiKTtmdW5jdGlvbiBFKFEsaixyZSxhZSl7dmFyIFk9UTtzd2l0Y2gocmUpe2Nhc2UicyI6cmV0dXJuIGFlfHxqPyJuXHhlOWhceGUx''@;'; put 'put ''bnkgbVx4ZTFzb2RwZXJjIjoiblx4ZTloXHhlMW55IG1ceGUxc29kcGVyY2UiO2Nhc2Uic3MiOnJldHVybiBZKyhhZXx8aik/IiBtXHhlMXNvZHBlcmMiOiIgbVx4ZTFzb2RwZXJjZSI7Y2FzZSJtIjpyZXR1cm4iZWd5IisoYWV8fGo/IiBwZXJjIjoiIHBlcmNlIik7Y2FzZSJtbSI6cmV0dXJu''@;'; put 'put ''IFkrKGFlfHxqPyIgcGVyYyI6IiBwZXJjZSIpO2Nhc2UiaCI6cmV0dXJuImVneSIrKGFlfHxqPyIgXHhmM3JhIjoiIFx4ZjNyXHhlMWphIik7Y2FzZSJoaCI6cmV0dXJuIFkrKGFlfHxqPyIgXHhmM3JhIjoiIFx4ZjNyXHhlMWphIik7Y2FzZSJkIjpyZXR1cm4iZWd5IisoYWV8fGo/IiBuYXAi''@;'; put 'put ''OiIgbmFwamEiKTtjYXNlImRkIjpyZXR1cm4gWSsoYWV8fGo/IiBuYXAiOiIgbmFwamEiKTtjYXNlIk0iOnJldHVybiJlZ3kiKyhhZXx8aj8iIGhceGYzbmFwIjoiIGhceGYzbmFwamEiKTtjYXNlIk1NIjpyZXR1cm4gWSsoYWV8fGo/IiBoXHhmM25hcCI6IiBoXHhmM25hcGphIik7Y2FzZSJ5''@;'; put 'put ''IjpyZXR1cm4iZWd5IisoYWV8fGo/IiBceGU5diI6IiBceGU5dmUiKTtjYXNlInl5IjpyZXR1cm4gWSsoYWV8fGo/IiBceGU5diI6IiBceGU5dmUiKX1yZXR1cm4iIn1mdW5jdGlvbiBFZShRKXtyZXR1cm4oUT8iIjoiW21ceGZhbHRdICIpKyJbIitCW3RoaXMuZGF5KCldKyJdIExUWy1rb3Jd''@;'; put 'put ''In1tZS5kZWZpbmVMb2NhbGUoImh1Iix7bW9udGhzOiJqYW51XHhlMXJfZmVicnVceGUxcl9tXHhlMXJjaXVzX1x4ZTFwcmlsaXNfbVx4ZTFqdXNfalx4ZmFuaXVzX2pceGZhbGl1c19hdWd1c3p0dXNfc3plcHRlbWJlcl9va3RceGYzYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIp''@;'; put 'put ''LG1vbnRoc1Nob3J0OiJqYW4uX2ZlYi5fbVx4ZTFyYy5fXHhlMXByLl9tXHhlMWouX2pceGZhbi5falx4ZmFsLl9hdWcuX3N6ZXB0Ll9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJ2YXNceGUxcm5hcF9oXHhlOXRmXHUwMTUxX2tlZGRf''@;'; put 'put ''c3plcmRhX2NzXHhmY3RceGY2cnRceGY2a19wXHhlOW50ZWtfc3pvbWJhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJ2YXNfaFx4ZTl0X2tlZGRfc3plX2NzXHhmY3RfcFx4ZTluX3N6byIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoidl9oX2tfc3plX2NzX3Bfc3pvIi5zcGxpdCgiXyIp''@;'; put 'put ''LGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJZWVlZLk1NLkRELiIsTEw6IllZWVkuIE1NTU0gRC4iLExMTDoiWVlZWS4gTU1NTSBELiBIOm1tIixMTExMOiJZWVlZLiBNTU1NIEQuLCBkZGRkIEg6bW0ifSxtZXJpZGllbVBhcnNlOi9kZXxkdS9pLGlzUE06ZnVu''@;'; put 'put ''Y3Rpb24oUSl7cmV0dXJuInUiPT09US5jaGFyQXQoMSkudG9Mb3dlckNhc2UoKX0sbWVyaWRpZW06ZnVuY3Rpb24oUSxqLHJlKXtyZXR1cm4gUTwxMj8hMD09PXJlPyJkZSI6IkRFIjohMD09PXJlPyJkdSI6IkRVIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlttYV0gTFRbLWtvcl0iLG5leHREYXk6''@;'; put 'put ''Iltob2xuYXBdIExUWy1rb3JdIixuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiBFZS5jYWxsKHRoaXMsITApfSxsYXN0RGF5OiJbdGVnbmFwXSBMVFsta29yXSIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gRWUuY2FsbCh0aGlzLCExKX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6''@;'; put 'put ''e2Z1dHVyZToiJXMgbVx4ZmFsdmEiLHBhc3Q6IiVzIixzOkUsc3M6RSxtOkUsbW06RSxoOkUsaGg6RSxkOkUsZGQ6RSxNOkUsTU06RSx5OkUseXk6RX0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5''@;'; put 'put ''KSl9LDY1MjgzOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgiaHktYW0iLHttb250aHM6e2Zvcm1hdDoiXHUwNTcwXHUwNTc4XHUwNTgyXHUwNTc2XHUwNTdlXHUwNTYxXHUwNTgwXHUwNTZiX1x1MDU4M1x1MDU2NVx1MDU3Zlx1''@;'; put 'put ''MDU4MFx1MDU3ZVx1MDU2MVx1MDU4MFx1MDU2Yl9cdTA1NzRcdTA1NjFcdTA1ODBcdTA1N2ZcdTA1NmJfXHUwNTYxXHUwNTdhXHUwNTgwXHUwNTZiXHUwNTZjXHUwNTZiX1x1MDU3NFx1MDU2MVx1MDU3NVx1MDU2Ylx1MDU3ZFx1MDU2Yl9cdTA1NzBcdTA1NzhcdTA1ODJcdTA1NzZcdTA1NmJc''@;'; put 'put ''dTA1N2RcdTA1NmJfXHUwNTcwXHUwNTc4XHUwNTgyXHUwNTZjXHUwNTZiXHUwNTdkXHUwNTZiX1x1MDU4NVx1MDU2M1x1MDU3OFx1MDU3ZFx1MDU3Zlx1MDU3OFx1MDU3ZFx1MDU2Yl9cdTA1N2RcdTA1NjVcdTA1N2FcdTA1N2ZcdTA1NjVcdTA1NzRcdTA1NjJcdTA1NjVcdTA1ODBcdTA1NmJf''@;'; put 'put ''XHUwNTcwXHUwNTc4XHUwNTZmXHUwNTdmXHUwNTY1XHUwNTc0XHUwNTYyXHUwNTY1XHUwNTgwXHUwNTZiX1x1MDU3Nlx1MDU3OFx1MDU3NVx1MDU2NVx1MDU3NFx1MDU2Mlx1MDU2NVx1MDU4MFx1MDU2Yl9cdTA1NjRcdTA1NjVcdTA1NmZcdTA1N2ZcdTA1NjVcdTA1NzRcdTA1NjJcdTA1NjVc''@;'; put 'put ''dTA1ODBcdTA1NmIiLnNwbGl0KCJfIiksc3RhbmRhbG9uZToiXHUwNTcwXHUwNTc4XHUwNTgyXHUwNTc2XHUwNTdlXHUwNTYxXHUwNTgwX1x1MDU4M1x1MDU2NVx1MDU3Zlx1MDU4MFx1MDU3ZVx1MDU2MVx1MDU4MF9cdTA1NzRcdTA1NjFcdTA1ODBcdTA1N2ZfXHUwNTYxXHUwNTdhXHUwNTgw''@;'; put 'put ''XHUwNTZiXHUwNTZjX1x1MDU3NFx1MDU2MVx1MDU3NVx1MDU2Ylx1MDU3ZF9cdTA1NzBcdTA1NzhcdTA1ODJcdTA1NzZcdTA1NmJcdTA1N2RfXHUwNTcwXHUwNTc4XHUwNTgyXHUwNTZjXHUwNTZiXHUwNTdkX1x1MDU4NVx1MDU2M1x1MDU3OFx1MDU3ZFx1MDU3Zlx1MDU3OFx1MDU3ZF9cdTA1''@;'; put 'put ''N2RcdTA1NjVcdTA1N2FcdTA1N2ZcdTA1NjVcdTA1NzRcdTA1NjJcdTA1NjVcdTA1ODBfXHUwNTcwXHUwNTc4XHUwNTZmXHUwNTdmXHUwNTY1XHUwNTc0XHUwNTYyXHUwNTY1XHUwNTgwX1x1MDU3Nlx1MDU3OFx1MDU3NVx1MDU2NVx1MDU3NFx1MDU2Mlx1MDU2NVx1MDU4MF9cdTA1NjRcdTA1''@;'; put 'put ''NjVcdTA1NmZcdTA1N2ZcdTA1NjVcdTA1NzRcdTA1NjJcdTA1NjVcdTA1ODAiLnNwbGl0KCJfIil9LG1vbnRoc1Nob3J0OiJcdTA1NzBcdTA1NzZcdTA1N2VfXHUwNTgzXHUwNTdmXHUwNTgwX1x1MDU3NFx1MDU4MFx1MDU3Zl9cdTA1NjFcdTA1N2FcdTA1ODBfXHUwNTc0XHUwNTc1XHUwNTdk''@;'; put 'put ''X1x1MDU3MFx1MDU3Nlx1MDU3ZF9cdTA1NzBcdTA1NmNcdTA1N2RfXHUwNTg1XHUwNTYzXHUwNTdkX1x1MDU3ZFx1MDU3YVx1MDU3Zl9cdTA1NzBcdTA1NmZcdTA1N2ZfXHUwNTc2XHUwNTc0XHUwNTYyX1x1MDU2NFx1MDU2Zlx1MDU3ZiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNTZmXHUw''@;'; put 'put ''NTZiXHUwNTgwXHUwNTYxXHUwNTZmXHUwNTZiX1x1MDU2NVx1MDU4MFx1MDU2Zlx1MDU3OFx1MDU4Mlx1MDU3N1x1MDU2MVx1MDU2Mlx1MDU2OVx1MDU2Yl9cdTA1NjVcdTA1ODBcdTA1NjVcdTA1ODRcdTA1NzdcdTA1NjFcdTA1NjJcdTA1NjlcdTA1NmJfXHUwNTc5XHUwNTc4XHUwNTgwXHUw''@;'; put 'put ''NTY1XHUwNTg0XHUwNTc3XHUwNTYxXHUwNTYyXHUwNTY5XHUwNTZiX1x1MDU3MFx1MDU2Ylx1MDU3Nlx1MDU2M1x1MDU3N1x1MDU2MVx1MDU2Mlx1MDU2OVx1MDU2Yl9cdTA1NzhcdTA1ODJcdTA1ODBcdTA1NjJcdTA1NjFcdTA1NjlfXHUwNTc3XHUwNTYxXHUwNTYyXHUwNTYxXHUwNTY5Ii5z''@;'; put 'put ''cGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDU2Zlx1MDU4MFx1MDU2Zl9cdTA1NjVcdTA1ODBcdTA1NmZfXHUwNTY1XHUwNTgwXHUwNTg0X1x1MDU3OVx1MDU4MFx1MDU4NF9cdTA1NzBcdTA1NzZcdTA1NjNfXHUwNTc4XHUwNTgyXHUwNTgwXHUwNTYyX1x1MDU3N1x1MDU2Mlx1MDU2OSIu''@;'; put 'put ''c3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNTZmXHUwNTgwXHUwNTZmX1x1MDU2NVx1MDU4MFx1MDU2Zl9cdTA1NjVcdTA1ODBcdTA1ODRfXHUwNTc5XHUwNTgwXHUwNTg0X1x1MDU3MFx1MDU3Nlx1MDU2M19cdTA1NzhcdTA1ODJcdTA1ODBcdTA1NjJfXHUwNTc3XHUwNTYyXHUwNTY5Ii5z''@;'; put 'put ''cGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSBcdTA1NjkuIixMTEw6IkQgTU1NTSBZWVlZIFx1MDU2OS4sIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBcdTA1NjkuLCBISDptbSJ9''@;'; put 'put ''LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNTYxXHUwNTc1XHUwNTdkXHUwNTg1XHUwNTgwXSBMVCIsbmV4dERheToiW1x1MDU3ZVx1MDU2MVx1MDU3Mlx1MDU2OF0gTFQiLGxhc3REYXk6IltcdTA1NjVcdTA1ODBcdTA1NjVcdTA1NmZdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJk''@;'; put 'put ''ZGRkIFtcdTA1ODVcdTA1ODBcdTA1NjggXHUwNTZhXHUwNTYxXHUwNTc0XHUwNTY4XSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltcdTA1NjFcdTA1NzZcdTA1ODFcdTA1NjFcdTA1NmVdIGRkZGQgW1x1MDU4NVx1MDU4MFx1MDU2OCBcdTA1NmFcdTA1NjFcdTA1NzRcdTA1Njhd''@;'; put 'put ''IExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwNTcwXHUwNTY1XHUwNTdmXHUwNTc4IixwYXN0OiIlcyBcdTA1NjFcdTA1N2NcdTA1NjFcdTA1N2IiLHM6Ilx1MDU3NFx1MDU2YiBcdTA1ODRcdTA1NjFcdTA1NzZcdTA1NmIgXHUwNTdlXHUwNTYxXHUwNTc1''@;'; put 'put ''XHUwNTgwXHUwNTZmXHUwNTc1XHUwNTYxXHUwNTc2IixzczoiJWQgXHUwNTdlXHUwNTYxXHUwNTc1XHUwNTgwXHUwNTZmXHUwNTc1XHUwNTYxXHUwNTc2IixtOiJcdTA1ODBcdTA1NzhcdTA1N2FcdTA1NjUiLG1tOiIlZCBcdTA1ODBcdTA1NzhcdTA1N2FcdTA1NjUiLGg6Ilx1MDU2YVx1MDU2''@;'; put 'put ''MVx1MDU3NCIsaGg6IiVkIFx1MDU2YVx1MDU2MVx1MDU3NCIsZDoiXHUwNTg1XHUwNTgwIixkZDoiJWQgXHUwNTg1XHUwNTgwIixNOiJcdTA1NjFcdTA1NzRcdTA1NmJcdTA1N2QiLE1NOiIlZCBcdTA1NjFcdTA1NzRcdTA1NmJcdTA1N2QiLHk6Ilx1MDU3Zlx1MDU2MVx1MDU4MFx1MDU2YiIs''@;'; put 'put ''eXk6IiVkIFx1MDU3Zlx1MDU2MVx1MDU4MFx1MDU2YiJ9LG1lcmlkaWVtUGFyc2U6L1x1MDU2M1x1MDU2Ylx1MDU3N1x1MDU2NVx1MDU4MFx1MDU3ZVx1MDU2MXxcdTA1NjFcdTA1N2NcdTA1NjFcdTA1N2VcdTA1NzhcdTA1N2ZcdTA1N2VcdTA1NjF8XHUwNTgxXHUwNTY1XHUwNTgwXHUwNTY1''@;'; put 'put ''XHUwNTZmXHUwNTdlXHUwNTYxfFx1MDU2NVx1MDU4MFx1MDU2NVx1MDU2Zlx1MDU3OFx1MDU3NVx1MDU2MVx1MDU3Ni8saXNQTTpmdW5jdGlvbihFKXtyZXR1cm4vXihcdTA1ODFcdTA1NjVcdTA1ODBcdTA1NjVcdTA1NmZcdTA1N2VcdTA1NjF8XHUwNTY1XHUwNTgwXHUwNTY1XHUwNTZmXHUw''@;'; put 'put ''NTc4XHUwNTc1XHUwNTYxXHUwNTc2KSQvLnRlc3QoRSl9LG1lcmlkaWVtOmZ1bmN0aW9uKEUpe3JldHVybiBFPDQ/Ilx1MDU2M1x1MDU2Ylx1MDU3N1x1MDU2NVx1MDU4MFx1MDU3ZVx1MDU2MSI6RTwxMj8iXHUwNTYxXHUwNTdjXHUwNTYxXHUwNTdlXHUwNTc4XHUwNTdmXHUwNTdlXHUwNTYx''@;'; put 'put ''IjpFPDE3PyJcdTA1ODFcdTA1NjVcdTA1ODBcdTA1NjVcdTA1NmZcdTA1N2VcdTA1NjEiOiJcdTA1NjVcdTA1ODBcdTA1NjVcdTA1NmZcdTA1NzhcdTA1NzVcdTA1NjFcdTA1NzYifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9fFxkezEsMn0tKFx1MDU2Ylx1MDU3NnxcdTA1ODBc''@;'; put 'put ''dTA1NjQpLyxvcmRpbmFsOmZ1bmN0aW9uKEUsRWUpe3N3aXRjaChFZSl7Y2FzZSJEREQiOmNhc2UidyI6Y2FzZSJXIjpjYXNlIkRERG8iOnJldHVybiAxPT09RT9FKyItXHUwNTZiXHUwNTc2IjpFKyItXHUwNTgwXHUwNTY0IjtkZWZhdWx0OnJldHVybiBFfX0sd2Vlazp7ZG93OjEsZG95Ojd9''@;'; put 'put ''fSl9KEwoMTU0MzkpKX0sOTg3ODA6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJpZCIse21vbnRoczoiSmFudWFyaV9GZWJydWFyaV9NYXJldF9BcHJpbF9NZWlfSnVuaV9KdWxpX0FndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJf''@;'; put 'put ''Tm92ZW1iZXJfRGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NZWlfSnVuX0p1bF9BZ3RfU2VwX09rdF9Ob3ZfRGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJNaW5nZ3VfU2VuaW5fU2VsYXNhX1JhYnVfS2FtaXNfSnVtYXRfU2FidHUiLnNwbGl0KCJf''@;'; put 'put ''Iiksd2Vla2RheXNTaG9ydDoiTWluX1Nlbl9TZWxfUmFiX0thbV9KdW1fU2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJNZ19Tbl9TbF9SYl9LbV9KbV9TYiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJERC9NTS9ZWVlZIixMTDoi''@;'; put 'put ''RCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSJ9LG1lcmlkaWVtUGFyc2U6L3BhZ2l8c2lhbmd8c29yZXxtYWxhbS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKEUsRWUpe3JldHVybiAxMj09PUUm''@;'; put 'put ''JihFPTApLCJwYWdpIj09PUVlP0U6InNpYW5nIj09PUVlP0U+PTExP0U6RSsxMjoic29yZSI9PT1FZXx8Im1hbGFtIj09PUVlP0UrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihFLEVlLFUpe3JldHVybiBFPDExPyJwYWdpIjpFPDE1PyJzaWFuZyI6RTwxOT8ic29yZSI6Im1hbGFtIn0s''@;'; put 'put ''Y2FsZW5kYXI6e3NhbWVEYXk6IltIYXJpIGluaSBwdWt1bF0gTFQiLG5leHREYXk6IltCZXNvayBwdWt1bF0gTFQiLG5leHRXZWVrOiJkZGRkIFtwdWt1bF0gTFQiLGxhc3REYXk6IltLZW1hcmluIHB1a3VsXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2xhbHUgcHVrdWxdIExUIixzYW1lRWxzZToi''@;'; put 'put ''TCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYWxhbSAlcyIscGFzdDoiJXMgeWFuZyBsYWx1IixzOiJiZWJlcmFwYSBkZXRpayIsc3M6IiVkIGRldGlrIixtOiJzZW1lbml0IixtbToiJWQgbWVuaXQiLGg6InNlamFtIixoaDoiJWQgamFtIixkOiJzZWhhcmkiLGRkOiIlZCBoYXJpIixNOiJz''@;'; put 'put ''ZWJ1bGFuIixNTToiJWQgYnVsYW4iLHk6InNldGFodW4iLHl5OiIlZCB0YWh1biJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShMKDE1NDM5KSl9LDE0MjA1OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEIoVSl7cmV0dXJuIFUlMTAwPT0xMXx8''@;'; put 'put ''VSUxMCE9MX1mdW5jdGlvbiBFKFUsUSxqLHJlKXt2YXIgYWU9VSsiICI7c3dpdGNoKGope2Nhc2UicyI6cmV0dXJuIFF8fHJlPyJub2trcmFyIHNla1x4ZmFuZHVyIjoibm9ra3J1bSBzZWtceGZhbmR1bSI7Y2FzZSJzcyI6cmV0dXJuIEIoVSk/YWUrKFF8fHJlPyJzZWtceGZhbmR1ciI6InNl''@;'; put 'put ''a1x4ZmFuZHVtIik6YWUrInNla1x4ZmFuZGEiO2Nhc2UibSI6cmV0dXJuIFE/Im1ceGVkblx4ZmF0YSI6Im1ceGVkblx4ZmF0dSI7Y2FzZSJtbSI6cmV0dXJuIEIoVSk/YWUrKFF8fHJlPyJtXHhlZG5ceGZhdHVyIjoibVx4ZWRuXHhmYXR1bSIpOlE/YWUrIm1ceGVkblx4ZmF0YSI6YWUrIm1c''@;'; put 'put ''eGVkblx4ZmF0dSI7Y2FzZSJoaCI6cmV0dXJuIEIoVSk/YWUrKFF8fHJlPyJrbHVra3VzdHVuZGlyIjoia2x1a2t1c3R1bmR1bSIpOmFlKyJrbHVra3VzdHVuZCI7Y2FzZSJkIjpyZXR1cm4gUT8iZGFndXIiOnJlPyJkYWciOiJkZWdpIjtjYXNlImRkIjpyZXR1cm4gQihVKT9RP2FlKyJkYWdh''@;'; put 'put ''ciI6YWUrKHJlPyJkYWdhIjoiZFx4ZjZndW0iKTpRP2FlKyJkYWd1ciI6YWUrKHJlPyJkYWciOiJkZWdpIik7Y2FzZSJNIjpyZXR1cm4gUT8ibVx4ZTFudVx4ZjB1ciI6cmU/Im1ceGUxbnVceGYwIjoibVx4ZTFudVx4ZjBpIjtjYXNlIk1NIjpyZXR1cm4gQihVKT9RP2FlKyJtXHhlMW51XHhm''@;'; put 'put ''MGlyIjphZSsocmU/Im1ceGUxbnVceGYwaSI6Im1ceGUxbnVceGYwdW0iKTpRP2FlKyJtXHhlMW51XHhmMHVyIjphZSsocmU/Im1ceGUxbnVceGYwIjoibVx4ZTFudVx4ZjBpIik7Y2FzZSJ5IjpyZXR1cm4gUXx8cmU/Ilx4ZTFyIjoiXHhlMXJpIjtjYXNlInl5IjpyZXR1cm4gQihVKT9hZSso''@;'; put 'put ''UXx8cmU/Ilx4ZTFyIjoiXHhlMXJ1bSIpOmFlKyhRfHxyZT8iXHhlMXIiOiJceGUxcmkiKX19bWUuZGVmaW5lTG9jYWxlKCJpcyIse21vbnRoczoiamFuXHhmYWFyX2ZlYnJceGZhYXJfbWFyc19hcHJceGVkbF9tYVx4ZWRfalx4ZmFuXHhlZF9qXHhmYWxceGVkX1x4ZTFnXHhmYXN0X3NlcHRl''@;'; put 'put ''bWJlcl9va3RceGYzYmVyX25ceGYzdmVtYmVyX2Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWFceGVkX2pceGZhbl9qXHhmYWxfXHhlMWdceGZhX3NlcF9va3Rfblx4ZjN2X2RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic3VubnVkYWd1cl9tXHhl''@;'; put 'put ''MW51ZGFndXJfXHhmZXJpXHhmMGp1ZGFndXJfbWlceGYwdmlrdWRhZ3VyX2ZpbW10dWRhZ3VyX2ZceGY2c3R1ZGFndXJfbGF1Z2FyZGFndXIiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic3VuX21ceGUxbl9ceGZlcmlfbWlceGYwX2ZpbV9mXHhmNnNfbGF1Ii5zcGxpdCgiXyIpLHdlZWtk''@;'; put 'put ''YXlzTWluOiJTdV9NXHhlMV9ceGRlcl9NaV9GaV9GXHhmNl9MYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgW2tsLl0gSDptbSIsTExMTDoiZGRkZCwg''@;'; put 'put ''RC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x4ZWQgZGFnIGtsLl0gTFQiLG5leHREYXk6IltceGUxIG1vcmd1biBrbC5dIExUIixuZXh0V2VlazoiZGRkZCBba2wuXSBMVCIsbGFzdERheToiW1x4ZWQgZ1x4ZTZyIGtsLl0gTFQiLGxhc3RXZWVrOiJbc1x4''@;'; put 'put ''ZWRceGYwYXN0YV0gZGRkZCBba2wuXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZWZ0aXIgJXMiLHBhc3Q6ImZ5cmlyICVzIHNceGVkXHhmMGFuIixzOkUsc3M6RSxtOkUsbW06RSxoOiJrbHVra3VzdHVuZCIsaGg6RSxkOkUsZGQ6RSxNOkUsTU06RSx5OkUseXk6''@;'; put 'put ''RX0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDI5OTg1OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgiaXQtY2giLHttb250''@;'; put 'put ''aHM6Imdlbm5haW9fZmViYnJhaW9fbWFyem9fYXByaWxlX21hZ2dpb19naXVnbm9fbHVnbGlvX2Fnb3N0b19zZXR0ZW1icmVfb3R0b2JyZV9ub3ZlbWJyZV9kaWNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiZ2VuX2ZlYl9tYXJfYXByX21hZ19naXVfbHVnX2Fnb19zZXRfb3R0X25v''@;'; put 'put ''dl9kaWMiLnNwbGl0KCJfIiksd2Vla2RheXM6ImRvbWVuaWNhX2x1bmVkXHhlY19tYXJ0ZWRceGVjX21lcmNvbGVkXHhlY19naW92ZWRceGVjX3ZlbmVyZFx4ZWNfc2FiYXRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRvbV9sdW5fbWFyX21lcl9naW9fdmVuX3NhYiIuc3BsaXQoIl8i''@;'; put 'put ''KSx3ZWVrZGF5c01pbjoiZG9fbHVfbWFfbWVfZ2lfdmVfc2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZ''@;'; put 'put ''WVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltPZ2dpIGFsbGVdIExUIixuZXh0RGF5OiJbRG9tYW5pIGFsbGVdIExUIixuZXh0V2VlazoiZGRkZCBbYWxsZV0gTFQiLGxhc3REYXk6IltJZXJpIGFsbGVdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5kYXko''@;'; put 'put ''KT8iW2xhIHNjb3JzYV0gZGRkZCBbYWxsZV0gTFQiOiJbbG8gc2NvcnNvXSBkZGRkIFthbGxlXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ZnVuY3Rpb24oRSl7cmV0dXJuKC9eWzAtOV0uKyQvLnRlc3QoRSk/InRyYSI6ImluIikrIiAiK0V9LHBhc3Q6IiVzIGZh''@;'; put 'put ''IixzOiJhbGN1bmkgc2Vjb25kaSIsc3M6IiVkIHNlY29uZGkiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0aSIsaDoidW4nb3JhIixoaDoiJWQgb3JlIixkOiJ1biBnaW9ybm8iLGRkOiIlZCBnaW9ybmkiLE06InVuIG1lc2UiLE1NOiIlZCBtZXNpIix5OiJ1biBhbm5vIix5eToiJWQgYW5u''@;'; put 'put ''aSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1ceGJhLyxvcmRpbmFsOiIlZFx4YmEiLHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDM0MjExOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgiaXQiLHtt''@;'; put 'put ''b250aHM6Imdlbm5haW9fZmViYnJhaW9fbWFyem9fYXByaWxlX21hZ2dpb19naXVnbm9fbHVnbGlvX2Fnb3N0b19zZXR0ZW1icmVfb3R0b2JyZV9ub3ZlbWJyZV9kaWNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiZ2VuX2ZlYl9tYXJfYXByX21hZ19naXVfbHVnX2Fnb19zZXRfb3R0''@;'; put 'put ''X25vdl9kaWMiLnNwbGl0KCJfIiksd2Vla2RheXM6ImRvbWVuaWNhX2x1bmVkXHhlY19tYXJ0ZWRceGVjX21lcmNvbGVkXHhlY19naW92ZWRceGVjX3ZlbmVyZFx4ZWNfc2FiYXRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRvbV9sdW5fbWFyX21lcl9naW9fdmVuX3NhYiIuc3BsaXQo''@;'; put 'put ''Il8iKSx3ZWVrZGF5c01pbjoiZG9fbHVfbWFfbWVfZ2lfdmVfc2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1N''@;'; put 'put ''TSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW09nZ2kgYSIrKHRoaXMuaG91cnMoKT4xPyJsbGUgIjowPT09dGhpcy5ob3VycygpPyIgIjoibGwnIikrIl1MVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW0RvbWFuaSBhIisodGhpcy5ob3Vy''@;'; put 'put ''cygpPjE/ImxsZSAiOjA9PT10aGlzLmhvdXJzKCk/IiAiOiJsbCciKSsiXUxUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iZGRkZCBbYSIrKHRoaXMuaG91cnMoKT4xPyJsbGUgIjowPT09dGhpcy5ob3VycygpPyIgIjoibGwnIikrIl1MVCJ9LGxhc3REYXk6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4iW0llcmkgYSIrKHRoaXMuaG91cnMoKT4xPyJsbGUgIjowPT09dGhpcy5ob3VycygpPyIgIjoibGwnIikrIl1MVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmRheSgpPyJbTGEgc2NvcnNhXSBkZGRkIFthIisodGhpcy5ob3VycygpPjE/ImxsZSAiOjA9PT10aGlz''@;'; put 'put ''LmhvdXJzKCk/IiAiOiJsbCciKSsiXUxUIjoiW0xvIHNjb3Jzb10gZGRkZCBbYSIrKHRoaXMuaG91cnMoKT4xPyJsbGUgIjowPT09dGhpcy5ob3VycygpPyIgIjoibGwnIikrIl1MVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InRyYSAlcyIscGFzdDoiJXMgZmEiLHM6''@;'; put 'put ''ImFsY3VuaSBzZWNvbmRpIixzczoiJWQgc2Vjb25kaSIsbToidW4gbWludXRvIixtbToiJWQgbWludXRpIixoOiJ1bidvcmEiLGhoOiIlZCBvcmUiLGQ6InVuIGdpb3JubyIsZGQ6IiVkIGdpb3JuaSIsdzoidW5hIHNldHRpbWFuYSIsd3c6IiVkIHNldHRpbWFuZSIsTToidW4gbWVzZSIsTU06''@;'; put 'put ''IiVkIG1lc2kiLHk6InVuIGFubm8iLHl5OiIlZCBhbm5pIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx4YmEvLG9yZGluYWw6IiVkXHhiYSIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sMzEwMDM6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNl''@;'; put 'put ''IHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJqYSIse2VyYXM6W3tzaW5jZToiMjAxOS0wNS0wMSIsb2Zmc2V0OjEsbmFtZToiXHU0ZWU0XHU1NDhjIixuYXJyb3c6Ilx1MzJmZiIsYWJicjoiUiJ9LHtzaW5jZToiMTk4OS0wMS0wOCIsdW50aWw6IjIwMTktMDQtMzAiLG9mZnNldDoxLG5hbWU6''@;'; put 'put ''Ilx1NWU3M1x1NjIxMCIsbmFycm93OiJcdTMzN2IiLGFiYnI6IkgifSx7c2luY2U6IjE5MjYtMTItMjUiLHVudGlsOiIxOTg5LTAxLTA3IixvZmZzZXQ6MSxuYW1lOiJcdTY2MmRcdTU0OGMiLG5hcnJvdzoiXHUzMzdjIixhYmJyOiJTIn0se3NpbmNlOiIxOTEyLTA3LTMwIix1bnRpbDoiMTky''@;'; put 'put ''Ni0xMi0yNCIsb2Zmc2V0OjEsbmFtZToiXHU1OTI3XHU2YjYzIixuYXJyb3c6Ilx1MzM3ZCIsYWJicjoiVCJ9LHtzaW5jZToiMTg3My0wMS0wMSIsdW50aWw6IjE5MTItMDctMjkiLG9mZnNldDo2LG5hbWU6Ilx1NjYwZVx1NmNiYiIsbmFycm93OiJcdTMzN2UiLGFiYnI6Ik0ifSx7c2luY2U6''@;'; put 'put ''IjAwMDEtMDEtMDEiLHVudGlsOiIxODczLTEyLTMxIixvZmZzZXQ6MSxuYW1lOiJcdTg5N2ZcdTY2YTYiLG5hcnJvdzoiQUQiLGFiYnI6IkFEIn0se3NpbmNlOiIwMDAwLTEyLTMxIix1bnRpbDotMS8wLG9mZnNldDoxLG5hbWU6Ilx1N2QwMFx1NTE0M1x1NTI0ZCIsbmFycm93OiJCQyIsYWJi''@;'; put 'put ''cjoiQkMifV0sZXJhWWVhck9yZGluYWxSZWdleDovKFx1NTE0M3xcZCspXHU1ZTc0LyxlcmFZZWFyT3JkaW5hbFBhcnNlOmZ1bmN0aW9uKEUsRWUpe3JldHVybiJcdTUxNDMiPT09RWVbMV0/MTpwYXJzZUludChFZVsxXXx8RSwxMCl9LG1vbnRoczoiMVx1NjcwOF8yXHU2NzA4XzNcdTY3MDhf''@;'; put 'put ''NFx1NjcwOF81XHU2NzA4XzZcdTY3MDhfN1x1NjcwOF84XHU2NzA4XzlcdTY3MDhfMTBcdTY3MDhfMTFcdTY3MDhfMTJcdTY3MDgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjFcdTY3MDhfMlx1NjcwOF8zXHU2NzA4XzRcdTY3MDhfNVx1NjcwOF82XHU2NzA4XzdcdTY3MDhfOFx1NjcwOF85''@;'; put 'put ''XHU2NzA4XzEwXHU2NzA4XzExXHU2NzA4XzEyXHU2NzA4Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTY1ZTVcdTY2ZGNcdTY1ZTVfXHU2NzA4XHU2NmRjXHU2NWU1X1x1NzA2Ylx1NjZkY1x1NjVlNV9cdTZjMzRcdTY2ZGNcdTY1ZTVfXHU2NzI4XHU2NmRjXHU2NWU1X1x1OTFkMVx1NjZkY1x1''@;'; put 'put ''NjVlNV9cdTU3MWZcdTY2ZGNcdTY1ZTUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHU2NWU1X1x1NjcwOF9cdTcwNmJfXHU2YzM0X1x1NjcyOF9cdTkxZDFfXHU1NzFmIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTY1ZTVfXHU2NzA4X1x1NzA2Yl9cdTZjMzRfXHU2NzI4X1x1OTFk''@;'; put 'put ''MV9cdTU3MWYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS9NTS9ERCIsTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSIsTExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUgSEg6bW0iLExMTEw6IllZWVlcdTVlNzRNXHU2''@;'; put 'put ''NzA4RFx1NjVlNSBkZGRkIEhIOm1tIixsOiJZWVlZL01NL0REIixsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IixsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSBISDptbSIsbGxsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1KGRkZCkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9c''@;'; put 'put ''dTUzNDhcdTUyNGR8XHU1MzQ4XHU1ZjhjL2ksaXNQTTpmdW5jdGlvbihFKXtyZXR1cm4iXHU1MzQ4XHU1ZjhjIj09PUV9LG1lcmlkaWVtOmZ1bmN0aW9uKEUsRWUsVSl7cmV0dXJuIEU8MTI/Ilx1NTM0OFx1NTI0ZCI6Ilx1NTM0OFx1NWY4YyJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHU0ZWNh''@;'; put 'put ''XHU2NWU1XSBMVCIsbmV4dERheToiW1x1NjYwZVx1NjVlNV0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKEUpe3JldHVybiBFLndlZWsoKSE9PXRoaXMud2VlaygpPyJbXHU2NzY1XHU5MDMxXWRkZGQgTFQiOiJkZGRkIExUIn0sbGFzdERheToiW1x1NjYyOFx1NjVlNV0gTFQiLGxhc3RXZWVrOmZ1''@;'; put 'put ''bmN0aW9uKEUpe3JldHVybiB0aGlzLndlZWsoKSE9PUUud2VlaygpPyJbXHU1MTQ4XHU5MDMxXWRkZGQgTFQiOiJkZGRkIExUIn0sc2FtZUVsc2U6IkwifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHU2NWU1LyxvcmRpbmFsOmZ1bmN0aW9uKEUsRWUpe3N3aXRjaChFZSl7Y2Fz''@;'; put 'put ''ZSJ5IjpyZXR1cm4gMT09PUU/Ilx1NTE0M1x1NWU3NCI6RSsiXHU1ZTc0IjtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiBFKyJcdTY1ZTUiO2RlZmF1bHQ6cmV0dXJuIEV9fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXNcdTVmOGMiLHBhc3Q6IiVzXHU1MjRkIixzOiJcdTY1NzBc''@;'; put 'put ''dTc5ZDIiLHNzOiIlZFx1NzlkMiIsbToiMVx1NTIwNiIsbW06IiVkXHU1MjA2IixoOiIxXHU2NjQyXHU5NTkzIixoaDoiJWRcdTY2NDJcdTk1OTMiLGQ6IjFcdTY1ZTUiLGRkOiIlZFx1NjVlNSIsTToiMVx1MzBmNlx1NjcwOCIsTU06IiVkXHUzMGY2XHU2NzA4Iix5OiIxXHU1ZTc0Iix5eToi''@;'; put 'put ''JWRcdTVlNzQifX0pfShMKDE1NDM5KSl9LDYwNDIwOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgianYiLHttb250aHM6IkphbnVhcmlfRmVicnVhcmlfTWFyZXRfQXByaWxfTWVpX0p1bmlfSnVsaV9BZ3VzdHVzX1NlcHRlbWJl''@;'; put 'put ''cl9Pa3RvYmVyX05vcGVtYmVyX0Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWVpX0p1bl9KdWxfQWdzX1NlcF9Pa3RfTm9wX0RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiTWluZ2d1X1NlbmVuX1NlbG9zb19SZWJ1X0tlbWlzX0plbXV3YWhfU2Vw''@;'; put 'put ''dHUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiTWluX1Nlbl9TZWxfUmViX0tlbV9KZW1fU2VwIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJNZ19Tbl9TbF9SYl9LbV9KbV9TcCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJERC9N''@;'; put 'put ''TS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSJ9LG1lcmlkaWVtUGFyc2U6L2VuamluZ3xzaXlhbmd8c29udGVufG5kYWx1LyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oRSxF''@;'; put 'put ''ZSl7cmV0dXJuIDEyPT09RSYmKEU9MCksImVuamluZyI9PT1FZT9FOiJzaXlhbmciPT09RWU/RT49MTE/RTpFKzEyOiJzb250ZW4iPT09RWV8fCJuZGFsdSI9PT1FZT9FKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oRSxFZSxVKXtyZXR1cm4gRTwxMT8iZW5qaW5nIjpFPDE1PyJzaXlh''@;'; put 'put ''bmciOkU8MTk/InNvbnRlbiI6Im5kYWx1In0sY2FsZW5kYXI6e3NhbWVEYXk6IltEaW50ZW4gcHVuaWtvIHB1a3VsXSBMVCIsbmV4dERheToiW01iZW5qYW5nIHB1a3VsXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3B1a3VsXSBMVCIsbGFzdERheToiW0thbGEgd2luZ2kgcHVrdWxdIExUIixsYXN0''@;'; put 'put ''V2VlazoiZGRkZCBba2VwZW5na2VyIHB1a3VsXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToid29udGVuIGluZyAlcyIscGFzdDoiJXMgaW5na2FuZyBrZXBlbmdrZXIiLHM6InNhd2V0YXdpcyBkZXRpayIsc3M6IiVkIGRldGlrIixtOiJzZXR1bmdnYWwgbWVuaXQi''@;'; put 'put ''LG1tOiIlZCBtZW5pdCIsaDoic2V0dW5nZ2FsIGphbSIsaGg6IiVkIGphbSIsZDoic2VkaW50ZW4iLGRkOiIlZCBkaW50ZW4iLE06InNld3VsYW4iLE1NOiIlZCB3dWxhbiIseToic2V0YXVuIix5eToiJWQgdGF1biJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDQwODUxOmZ1''@;'; put 'put ''bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgia2EiLHttb250aHM6Ilx1MTBkOFx1MTBkMFx1MTBkY1x1MTBkNVx1MTBkMFx1MTBlMFx1MTBkOF9cdTEwZDdcdTEwZDRcdTEwZDFcdTEwZDRcdTEwZTBcdTEwZDVcdTEwZDBcdTEwZGFc''@;'; put 'put ''dTEwZDhfXHUxMGRiXHUxMGQwXHUxMGUwXHUxMGUyXHUxMGQ4X1x1MTBkMFx1MTBkZVx1MTBlMFx1MTBkOFx1MTBkYVx1MTBkOF9cdTEwZGJcdTEwZDBcdTEwZDhcdTEwZTFcdTEwZDhfXHUxMGQ4XHUxMGQ1XHUxMGRjXHUxMGQ4XHUxMGUxXHUxMGQ4X1x1MTBkOFx1MTBkNVx1MTBkYVx1MTBk''@;'; put 'put ''OFx1MTBlMVx1MTBkOF9cdTEwZDBcdTEwZDJcdTEwZDVcdTEwZDhcdTEwZTFcdTEwZTJcdTEwZGRfXHUxMGUxXHUxMGQ0XHUxMGU1XHUxMGUyXHUxMGQ0XHUxMGRiXHUxMGQxXHUxMGQ0XHUxMGUwXHUxMGQ4X1x1MTBkZFx1MTBlNVx1MTBlMlx1MTBkZFx1MTBkYlx1MTBkMVx1MTBkNFx1MTBl''@;'; put 'put ''MFx1MTBkOF9cdTEwZGNcdTEwZGRcdTEwZDRcdTEwZGJcdTEwZDFcdTEwZDRcdTEwZTBcdTEwZDhfXHUxMGQzXHUxMGQ0XHUxMGQ5XHUxMGQ0XHUxMGRiXHUxMGQxXHUxMGQ0XHUxMGUwXHUxMGQ4Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTEwZDhcdTEwZDBcdTEwZGNfXHUxMGQ3XHUx''@;'; put 'put ''MGQ0XHUxMGQxX1x1MTBkYlx1MTBkMFx1MTBlMF9cdTEwZDBcdTEwZGVcdTEwZTBfXHUxMGRiXHUxMGQwXHUxMGQ4X1x1MTBkOFx1MTBkNVx1MTBkY19cdTEwZDhcdTEwZDVcdTEwZGFfXHUxMGQwXHUxMGQyXHUxMGQ1X1x1MTBlMVx1MTBkNFx1MTBlNV9cdTEwZGRcdTEwZTVcdTEwZTJfXHUx''@;'; put 'put ''MGRjXHUxMGRkXHUxMGQ0X1x1MTBkM1x1MTBkNFx1MTBkOSIuc3BsaXQoIl8iKSx3ZWVrZGF5czp7c3RhbmRhbG9uZToiXHUxMGQ5XHUxMGQ1XHUxMGQ4XHUxMGUwXHUxMGQwX1x1MTBkZFx1MTBlMFx1MTBlOFx1MTBkMFx1MTBkMVx1MTBkMFx1MTBkN1x1MTBkOF9cdTEwZTFcdTEwZDBcdTEw''@;'; put 'put ''ZGJcdTEwZThcdTEwZDBcdTEwZDFcdTEwZDBcdTEwZDdcdTEwZDhfXHUxMGRkXHUxMGQ3XHUxMGVlXHUxMGU4XHUxMGQwXHUxMGQxXHUxMGQwXHUxMGQ3XHUxMGQ4X1x1MTBlZVx1MTBlM1x1MTBkN1x1MTBlOFx1MTBkMFx1MTBkMVx1MTBkMFx1MTBkN1x1MTBkOF9cdTEwZGVcdTEwZDBcdTEw''@;'; put 'put ''ZTBcdTEwZDBcdTEwZTFcdTEwZDlcdTEwZDRcdTEwZDVcdTEwZDhfXHUxMGU4XHUxMGQwXHUxMGQxXHUxMGQwXHUxMGQ3XHUxMGQ4Ii5zcGxpdCgiXyIpLGZvcm1hdDoiXHUxMGQ5XHUxMGQ1XHUxMGQ4XHUxMGUwXHUxMGQwXHUxMGUxX1x1MTBkZFx1MTBlMFx1MTBlOFx1MTBkMFx1MTBkMVx1''@;'; put 'put ''MTBkMFx1MTBkN1x1MTBlMV9cdTEwZTFcdTEwZDBcdTEwZGJcdTEwZThcdTEwZDBcdTEwZDFcdTEwZDBcdTEwZDdcdTEwZTFfXHUxMGRkXHUxMGQ3XHUxMGVlXHUxMGU4XHUxMGQwXHUxMGQxXHUxMGQwXHUxMGQ3XHUxMGUxX1x1MTBlZVx1MTBlM1x1MTBkN1x1MTBlOFx1MTBkMFx1MTBkMVx1''@;'; put 'put ''MTBkMFx1MTBkN1x1MTBlMV9cdTEwZGVcdTEwZDBcdTEwZTBcdTEwZDBcdTEwZTFcdTEwZDlcdTEwZDRcdTEwZDVcdTEwZTFfXHUxMGU4XHUxMGQwXHUxMGQxXHUxMGQwXHUxMGQ3XHUxMGUxIi5zcGxpdCgiXyIpLGlzRm9ybWF0Oi8oXHUxMGVjXHUxMGQ4XHUxMGRjXHUxMGQwfFx1MTBlOFx1''@;'; put 'put ''MTBkNFx1MTBkYlx1MTBkM1x1MTBkNFx1MTBkMikvfSx3ZWVrZGF5c1Nob3J0OiJcdTEwZDlcdTEwZDVcdTEwZDhfXHUxMGRkXHUxMGUwXHUxMGU4X1x1MTBlMVx1MTBkMFx1MTBkYl9cdTEwZGRcdTEwZDdcdTEwZWVfXHUxMGVlXHUxMGUzXHUxMGQ3X1x1MTBkZVx1MTBkMFx1MTBlMF9cdTEw''@;'; put 'put ''ZThcdTEwZDBcdTEwZDEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MTBkOVx1MTBkNV9cdTEwZGRcdTEwZTBfXHUxMGUxXHUxMGQwX1x1MTBkZFx1MTBkN19cdTEwZWVcdTEwZTNfXHUxMGRlXHUxMGQwX1x1MTBlOFx1MTBkMCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhI''@;'; put 'put ''Om1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTEwZDNcdTEwZTZcdTEwZDRcdTEwZTFdIExUWy1cdTEwZDZc''@;'; put 'put ''dTEwZDRdIixuZXh0RGF5OiJbXHUxMGVlXHUxMGQ1XHUxMGQwXHUxMGRhXSBMVFstXHUxMGQ2XHUxMGQ0XSIsbGFzdERheToiW1x1MTBkMlx1MTBlM1x1MTBlOFx1MTBkOFx1MTBkY10gTFRbLVx1MTBkNlx1MTBkNF0iLG5leHRXZWVrOiJbXHUxMGU4XHUxMGQ0XHUxMGRiXHUxMGQzXHUxMGQ0''@;'; put 'put ''XHUxMGQyXSBkZGRkIExUWy1cdTEwZDZcdTEwZDRdIixsYXN0V2VlazoiW1x1MTBlY1x1MTBkOFx1MTBkY1x1MTBkMF0gZGRkZCBMVC1cdTEwZDZcdTEwZDQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ZnVuY3Rpb24oRSl7cmV0dXJuIEUucmVwbGFjZSgvKFx1MTBlY1x1''@;'; put 'put ''MTBkMFx1MTBkYnxcdTEwZWNcdTEwZTNcdTEwZDd8XHUxMGUxXHUxMGQwXHUxMGQwXHUxMGQ3fFx1MTBlY1x1MTBkNFx1MTBkYXxcdTEwZDNcdTEwZTZ8XHUxMGQ3XHUxMGQ1KShcdTEwZDh8XHUxMGQ0KS8sZnVuY3Rpb24oRWUsVSxRKXtyZXR1cm4iXHUxMGQ4Ij09PVE/VSsiXHUxMGU4XHUx''@;'; put 'put ''MGQ4IjpVK1ErIlx1MTBlOFx1MTBkOCJ9KX0scGFzdDpmdW5jdGlvbihFKXtyZXR1cm4vKFx1MTBlY1x1MTBkMFx1MTBkYlx1MTBkOHxcdTEwZWNcdTEwZTNcdTEwZDdcdTEwZDh8XHUxMGUxXHUxMGQwXHUxMGQwXHUxMGQ3XHUxMGQ4fFx1MTBkM1x1MTBlNlx1MTBkNHxcdTEwZDdcdTEwZDVc''@;'; put 'put ''dTEwZDQpLy50ZXN0KEUpP0UucmVwbGFjZSgvKFx1MTBkOHxcdTEwZDQpJC8sIlx1MTBkOFx1MTBlMSBcdTEwZWNcdTEwZDhcdTEwZGMiKTovXHUxMGVjXHUxMGQ0XHUxMGRhXHUxMGQ4Ly50ZXN0KEUpP0UucmVwbGFjZSgvXHUxMGVjXHUxMGQ0XHUxMGRhXHUxMGQ4JC8sIlx1MTBlY1x1MTBk''@;'; put 'put ''YVx1MTBkOFx1MTBlMSBcdTEwZWNcdTEwZDhcdTEwZGMiKTpFfSxzOiJcdTEwZTBcdTEwZDBcdTEwZGJcdTEwZDNcdTEwZDRcdTEwZGNcdTEwZDhcdTEwZGJcdTEwZDQgXHUxMGVjXHUxMGQwXHUxMGRiXHUxMGQ4IixzczoiJWQgXHUxMGVjXHUxMGQwXHUxMGRiXHUxMGQ4IixtOiJcdTEwZWNc''@;'; put 'put ''dTEwZTNcdTEwZDdcdTEwZDgiLG1tOiIlZCBcdTEwZWNcdTEwZTNcdTEwZDdcdTEwZDgiLGg6Ilx1MTBlMVx1MTBkMFx1MTBkMFx1MTBkN1x1MTBkOCIsaGg6IiVkIFx1MTBlMVx1MTBkMFx1MTBkMFx1MTBkN1x1MTBkOCIsZDoiXHUxMGQzXHUxMGU2XHUxMGQ0IixkZDoiJWQgXHUxMGQzXHUx''@;'; put 'put ''MGU2XHUxMGQ0IixNOiJcdTEwZDdcdTEwZDVcdTEwZDQiLE1NOiIlZCBcdTEwZDdcdTEwZDVcdTEwZDQiLHk6Ilx1MTBlY1x1MTBkNFx1MTBkYVx1MTBkOCIseXk6IiVkIFx1MTBlY1x1MTBkNFx1MTBkYVx1MTBkOCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6LzB8MS1cdTEwZGFcdTEwZDh8''@;'; put 'put ''XHUxMGRiXHUxMGQ0LVxkezEsMn18XGR7MSwyfS1cdTEwZDQvLG9yZGluYWw6ZnVuY3Rpb24oRSl7cmV0dXJuIDA9PT1FP0U6MT09PUU/RSsiLVx1MTBkYVx1MTBkOCI6RTwyMHx8RTw9MTAwJiZFJTIwPT0wfHxFJTEwMD09MD8iXHUxMGRiXHUxMGQ0LSIrRTpFKyItXHUxMGQ0In0sd2Vlazp7''@;'; put 'put ''ZG93OjEsZG95Ojd9fSl9KEwoMTU0MzkpKX0sMTYwNzQ6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9ezA6Ii1cdTA0NDhcdTA0NTYiLDE6Ii1cdTA0NDhcdTA0NTYiLDI6Ii1cdTA0NDhcdTA0NTYiLDM6Ii1cdTA0NDhcdTA0NTYiLDQ6Ii1cdTA0''@;'; put 'put ''NDhcdTA0NTYiLDU6Ii1cdTA0NDhcdTA0NTYiLDY6Ii1cdTA0NDhcdTA0NGIiLDc6Ii1cdTA0NDhcdTA0NTYiLDg6Ii1cdTA0NDhcdTA0NTYiLDk6Ii1cdTA0NDhcdTA0NGIiLDEwOiItXHUwNDQ4XHUwNDRiIiwyMDoiLVx1MDQ0OFx1MDQ0YiIsMzA6Ii1cdTA0NDhcdTA0NGIiLDQwOiItXHUw''@;'; put 'put ''NDQ4XHUwNDRiIiw1MDoiLVx1MDQ0OFx1MDQ1NiIsNjA6Ii1cdTA0NDhcdTA0NGIiLDcwOiItXHUwNDQ4XHUwNDU2Iiw4MDoiLVx1MDQ0OFx1MDQ1NiIsOTA6Ii1cdTA0NDhcdTA0NGIiLDEwMDoiLVx1MDQ0OFx1MDQ1NiJ9O21lLmRlZmluZUxvY2FsZSgia2siLHttb250aHM6Ilx1MDQ5Ylx1''@;'; put 'put ''MDQzMFx1MDRhM1x1MDQ0Mlx1MDQzMFx1MDQ0MF9cdTA0MzBcdTA0OWJcdTA0M2ZcdTA0MzBcdTA0M2RfXHUwNDNkXHUwNDMwXHUwNDQzXHUwNDQwXHUwNDRiXHUwNDM3X1x1MDQ0MVx1MDRkOVx1MDQ0M1x1MDQ1Nlx1MDQ0MF9cdTA0M2NcdTA0MzBcdTA0M2NcdTA0NGJcdTA0NDBfXHUwNDNj''@;'; put 'put ''XHUwNDMwXHUwNDQzXHUwNDQxXHUwNDRiXHUwNDNjX1x1MDQ0OFx1MDQ1Nlx1MDQzYlx1MDQzNFx1MDQzNV9cdTA0NDJcdTA0MzBcdTA0M2NcdTA0NGJcdTA0MzdfXHUwNDliXHUwNDRiXHUwNDQwXHUwNDNhXHUwNGFmXHUwNDM5XHUwNDM1XHUwNDNhX1x1MDQ5Ylx1MDQzMFx1MDQzN1x1MDQz''@;'; put 'put ''MFx1MDQzZF9cdTA0OWJcdTA0MzBcdTA0NDBcdTA0MzBcdTA0NDhcdTA0MzBfXHUwNDM2XHUwNDM1XHUwNDNiXHUwNDQyXHUwNDNlXHUwNDliXHUwNDQxXHUwNDMwXHUwNDNkIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA0OWJcdTA0MzBcdTA0YTNfXHUwNDMwXHUwNDliXHUwNDNmX1x1''@;'; put 'put ''MDQzZFx1MDQzMFx1MDQ0M19cdTA0NDFcdTA0ZDlcdTA0NDNfXHUwNDNjXHUwNDMwXHUwNDNjX1x1MDQzY1x1MDQzMFx1MDQ0M19cdTA0NDhcdTA0NTZcdTA0M2JfXHUwNDQyXHUwNDMwXHUwNDNjX1x1MDQ5Ylx1MDQ0Ylx1MDQ0MF9cdTA0OWJcdTA0MzBcdTA0MzdfXHUwNDliXHUwNDMwXHUw''@;'; put 'put ''NDQwX1x1MDQzNlx1MDQzNVx1MDQzYiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNDM2XHUwNDM1XHUwNDNhXHUwNDQxXHUwNDM1XHUwNDNkXHUwNDMxXHUwNDU2X1x1MDQzNFx1MDRhZlx1MDQzOVx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQzMVx1MDQ1Nl9cdTA0NDFcdTA0MzVcdTA0MzlcdTA0''@;'; put 'put ''NDFcdTA0MzVcdTA0M2RcdTA0MzFcdTA0NTZfXHUwNDQxXHUwNGQ5XHUwNDQwXHUwNDQxXHUwNDM1XHUwNDNkXHUwNDMxXHUwNDU2X1x1MDQzMVx1MDQzNVx1MDQzOVx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQzMVx1MDQ1Nl9cdTA0MzZcdTA0YjFcdTA0M2NcdTA0MzBfXHUwNDQxXHUwNDM1XHUw''@;'; put 'put ''NDNkXHUwNDMxXHUwNDU2Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDQzNlx1MDQzNVx1MDQzYV9cdTA0MzRcdTA0YWZcdTA0MzlfXHUwNDQxXHUwNDM1XHUwNDM5X1x1MDQ0MVx1MDRkOVx1MDQ0MF9cdTA0MzFcdTA0MzVcdTA0MzlfXHUwNDM2XHUwNGIxXHUwNDNjX1x1MDQ0MVx1''@;'; put 'put ''MDQzNVx1MDQzZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDM2XHUwNDNhX1x1MDQzNFx1MDQzOV9cdTA0NDFcdTA0MzlfXHUwNDQxXHUwNDQwX1x1MDQzMVx1MDQzOV9cdTA0MzZcdTA0M2NfXHUwNDQxXHUwNDNkIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0i''@;'; put 'put ''LExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDQxMVx1MDRhZlx1MDQzM1x1MDQ1Nlx1MDQzZCBcdTA0NDFcdTA0''@;'; put 'put ''MzBcdTA0OTNcdTA0MzBcdTA0NDJdIExUIixuZXh0RGF5OiJbXHUwNDE1XHUwNDQwXHUwNDQyXHUwNDM1XHUwNGEzIFx1MDQ0MVx1MDQzMFx1MDQ5M1x1MDQzMFx1MDQ0Ml0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA0NDFcdTA0MzBcdTA0OTNcdTA0MzBcdTA0NDJdIExUIixsYXN0RGF5OiJb''@;'; put 'put ''XHUwNDFhXHUwNDM1XHUwNDQ4XHUwNDM1IFx1MDQ0MVx1MDQzMFx1MDQ5M1x1MDQzMFx1MDQ0Ml0gTFQiLGxhc3RXZWVrOiJbXHUwNGU4XHUwNDQyXHUwNDNhXHUwNDM1XHUwNDNkIFx1MDQzMFx1MDQzZlx1MDQ0Mlx1MDQzMFx1MDQzZFx1MDQ0Ylx1MDRhM10gZGRkZCBbXHUwNDQxXHUwNDMw''@;'; put 'put ''XHUwNDkzXHUwNDMwXHUwNDQyXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwNDU2XHUwNDQ4XHUwNDU2XHUwNDNkXHUwNDM0XHUwNDM1IixwYXN0OiIlcyBcdTA0MzFcdTA0YjFcdTA0NDBcdTA0NGJcdTA0M2QiLHM6Ilx1MDQzMVx1MDQ1Nlx1MDQ0MFx1''@;'; put 'put ''MDQzZFx1MDQzNVx1MDQ0OFx1MDQzNSBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiLHNzOiIlZCBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiLG06Ilx1MDQzMVx1MDQ1Nlx1MDQ0MCBcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDIiLG1tOiIl''@;'; put 'put ''ZCBcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDIiLGg6Ilx1MDQzMVx1MDQ1Nlx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0OTNcdTA0MzBcdTA0NDIiLGhoOiIlZCBcdTA0NDFcdTA0MzBcdTA0OTNcdTA0MzBcdTA0NDIiLGQ6Ilx1MDQzMVx1MDQ1Nlx1MDQ0MCBcdTA0M2FcdTA0YWZcdTA0''@;'; put 'put ''M2QiLGRkOiIlZCBcdTA0M2FcdTA0YWZcdTA0M2QiLE06Ilx1MDQzMVx1MDQ1Nlx1MDQ0MCBcdTA0MzBcdTA0MzkiLE1NOiIlZCBcdTA0MzBcdTA0MzkiLHk6Ilx1MDQzMVx1MDQ1Nlx1MDQ0MCBcdTA0MzZcdTA0NGJcdTA0M2IiLHl5OiIlZCBcdTA0MzZcdTA0NGJcdTA0M2IifSxkYXlPZk1v''@;'; put 'put ''bnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LShcdTA0NDhcdTA0NTZ8XHUwNDQ4XHUwNDRiKS8sb3JkaW5hbDpmdW5jdGlvbihFZSl7cmV0dXJuIEVlKyhCW0VlXXx8QltFZSUxMF18fEJbRWU+PTEwMD8xMDA6bnVsbF0pfSx3ZWVrOntkb3c6MSxkb3k6N319KX0oTCgxNTQzOSkpfSw1MzM0Mzpm''@;'; put 'put ''dW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj17MToiXHUxN2UxIiwyOiJcdTE3ZTIiLDM6Ilx1MTdlMyIsNDoiXHUxN2U0Iiw1OiJcdTE3ZTUiLDY6Ilx1MTdlNiIsNzoiXHUxN2U3Iiw4OiJcdTE3ZTgiLDk6Ilx1MTdlOSIsMDoiXHUxN2UwIn0sRT17''@;'; put 'put ''Ilx1MTdlMSI6IjEiLCJcdTE3ZTIiOiIyIiwiXHUxN2UzIjoiMyIsIlx1MTdlNCI6IjQiLCJcdTE3ZTUiOiI1IiwiXHUxN2U2IjoiNiIsIlx1MTdlNyI6IjciLCJcdTE3ZTgiOiI4IiwiXHUxN2U5IjoiOSIsIlx1MTdlMCI6IjAifTttZS5kZWZpbmVMb2NhbGUoImttIix7bW9udGhzOiJcdTE3''@;'; put 'put ''OThcdTE3ODBcdTE3OWFcdTE3YjZfXHUxNzgwXHUxN2JiXHUxNzk4XHUxN2QyXHUxNzk3XHUxN2M4X1x1MTc5OFx1MTdiOFx1MTc5M1x1MTdiNl9cdTE3OThcdTE3YzFcdTE3OWZcdTE3YjZfXHUxN2E3XHUxNzlmXHUxNzk3XHUxN2I2X1x1MTc5OFx1MTdiN1x1MTc5MFx1MTdiYlx1MTc5M1x1''@;'; put 'put ''MTdiNl9cdTE3ODBcdTE3ODBcdTE3ZDJcdTE3ODBcdTE3OGFcdTE3YjZfXHUxNzlmXHUxN2I4XHUxN2EwXHUxN2I2X1x1MTc4MFx1MTc4OVx1MTdkMlx1MTc4OVx1MTdiNl9cdTE3OGZcdTE3YmJcdTE3OWJcdTE3YjZfXHUxNzljXHUxN2I3XHUxNzg1XHUxN2QyXHUxNzg2XHUxN2I3XHUxNzgw''@;'; put 'put ''XHUxN2I2X1x1MTc5Mlx1MTdkMlx1MTc5M1x1MTdiYyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUxNzk4XHUxNzgwXHUxNzlhXHUxN2I2X1x1MTc4MFx1MTdiYlx1MTc5OFx1MTdkMlx1MTc5N1x1MTdjOF9cdTE3OThcdTE3YjhcdTE3OTNcdTE3YjZfXHUxNzk4XHUxN2MxXHUxNzlmXHUx''@;'; put 'put ''N2I2X1x1MTdhN1x1MTc5Zlx1MTc5N1x1MTdiNl9cdTE3OThcdTE3YjdcdTE3OTBcdTE3YmJcdTE3OTNcdTE3YjZfXHUxNzgwXHUxNzgwXHUxN2QyXHUxNzgwXHUxNzhhXHUxN2I2X1x1MTc5Zlx1MTdiOFx1MTdhMFx1MTdiNl9cdTE3ODBcdTE3ODlcdTE3ZDJcdTE3ODlcdTE3YjZfXHUxNzhm''@;'; put 'put ''XHUxN2JiXHUxNzliXHUxN2I2X1x1MTc5Y1x1MTdiN1x1MTc4NVx1MTdkMlx1MTc4Nlx1MTdiN1x1MTc4MFx1MTdiNl9cdTE3OTJcdTE3ZDJcdTE3OTNcdTE3YmMiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MTdhMlx1MTdiNlx1MTc5MVx1MTdiN1x1MTc4Zlx1MTdkMlx1MTc5OV9cdTE3ODVc''@;'; put 'put ''dTE3ZDBcdTE3OTNcdTE3ZDJcdTE3OTFfXHUxN2EyXHUxNzg0XHUxN2QyXHUxNzgyXHUxN2I2XHUxNzlhX1x1MTc5Nlx1MTdiYlx1MTc5Ml9cdTE3OTZcdTE3ZDJcdTE3OWFcdTE3YTBcdTE3OWZcdTE3ZDJcdTE3OTRcdTE3OGZcdTE3YjdcdTE3Y2RfXHUxNzlmXHUxN2JiXHUxNzgwXHUxN2Qy''@;'; put 'put ''XHUxNzlhX1x1MTc5Zlx1MTdjNVx1MTc5YVx1MTdjZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTE3YTJcdTE3YjZfXHUxNzg1X1x1MTdhMl9cdTE3OTZfXHUxNzk2XHUxN2QyXHUxNzlhX1x1MTc5Zlx1MTdiYl9cdTE3OWYiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MTdhMlx1''@;'; put 'put ''MTdiNl9cdTE3ODVfXHUxN2EyX1x1MTc5Nl9cdTE3OTZcdTE3ZDJcdTE3OWFfXHUxNzlmXHUxN2JiX1x1MTc5ZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1N''@;'; put 'put ''TSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1MTc5Nlx1MTdkMlx1MTc5YVx1MTdiOVx1MTc4MHxcdTE3OWJcdTE3ZDJcdTE3ODRcdTE3YjZcdTE3ODUvLGlzUE06ZnVuY3Rpb24oVSl7cmV0dXJu''@;'; put 'put ''Ilx1MTc5Ylx1MTdkMlx1MTc4NFx1MTdiNlx1MTc4NSI9PT1VfSxtZXJpZGllbTpmdW5jdGlvbihVLFEsail7cmV0dXJuIFU8MTI/Ilx1MTc5Nlx1MTdkMlx1MTc5YVx1MTdiOVx1MTc4MCI6Ilx1MTc5Ylx1MTdkMlx1MTc4NFx1MTdiNlx1MTc4NSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUx''@;'; put 'put ''NzkwXHUxN2QyXHUxNzg0XHUxN2MzXHUxNzkzXHUxN2MxXHUxN2M3IFx1MTc5OFx1MTdjOVx1MTdjNFx1MTc4NF0gTFQiLG5leHREYXk6IltcdTE3OWZcdTE3ZDJcdTE3YTJcdTE3YzJcdTE3ODAgXHUxNzk4XHUxN2M5XHUxN2M0XHUxNzg0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MTc5OFx1''@;'; put 'put ''MTdjOVx1MTdjNFx1MTc4NF0gTFQiLGxhc3REYXk6IltcdTE3OThcdTE3ZDJcdTE3OWZcdTE3YjdcdTE3OWJcdTE3OThcdTE3YjdcdTE3ODkgXHUxNzk4XHUxN2M5XHUxN2M0XHUxNzg0XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MTc5Zlx1MTc5NFx1MTdkMlx1MTc4Zlx1MTdiNlx1MTdhMFx1''@;'; put 'put ''MTdjZFx1MTc5OFx1MTdiYlx1MTc5M10gW1x1MTc5OFx1MTdjOVx1MTdjNFx1MTc4NF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzXHUxNzkxXHUxN2MwXHUxNzhmIixwYXN0OiIlc1x1MTc5OFx1MTdiYlx1MTc5MyIsczoiXHUxNzk0XHUxN2M5XHUxN2JiXHUx''@;'; put 'put ''NzkzXHUxN2QyXHUxNzk4XHUxN2I2XHUxNzkzXHUxNzljXHUxN2I3XHUxNzkzXHUxN2I2XHUxNzkxXHUxN2I4IixzczoiJWQgXHUxNzljXHUxN2I3XHUxNzkzXHUxN2I2XHUxNzkxXHUxN2I4IixtOiJcdTE3OThcdTE3YmRcdTE3OTlcdTE3OTNcdTE3YjZcdTE3OTFcdTE3YjgiLG1tOiIlZCBc''@;'; put 'put ''dTE3OTNcdTE3YjZcdTE3OTFcdTE3YjgiLGg6Ilx1MTc5OFx1MTdiZFx1MTc5OVx1MTc5OFx1MTdjOVx1MTdjNFx1MTc4NCIsaGg6IiVkIFx1MTc5OFx1MTdjOVx1MTdjNFx1MTc4NCIsZDoiXHUxNzk4XHUxN2JkXHUxNzk5XHUxNzkwXHUxN2QyXHUxNzg0XHUxN2MzIixkZDoiJWQgXHUxNzkw''@;'; put 'put ''XHUxN2QyXHUxNzg0XHUxN2MzIixNOiJcdTE3OThcdTE3YmRcdTE3OTlcdTE3ODFcdTE3YzIiLE1NOiIlZCBcdTE3ODFcdTE3YzIiLHk6Ilx1MTc5OFx1MTdiZFx1MTc5OVx1MTc4Nlx1MTdkMlx1MTc5M1x1MTdiNlx1MTdjNiIseXk6IiVkIFx1MTc4Nlx1MTdkMlx1MTc5M1x1MTdiNlx1MTdj''@;'; put 'put ''NiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1x1MTc5MVx1MTdiOFxkezEsMn0vLG9yZGluYWw6Ilx1MTc5MVx1MTdiOCVkIixwcmVwYXJzZTpmdW5jdGlvbihVKXtyZXR1cm4gVS5yZXBsYWNlKC9bXHUxN2UxXHUxN2UyXHUxN2UzXHUxN2U0XHUxN2U1XHUxN2U2XHUxN2U3XHUxN2U4XHUx''@;'; put 'put ''N2U5XHUxN2UwXS9nLGZ1bmN0aW9uKFEpe3JldHVybiBFW1FdfSl9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oVSl7cmV0dXJuIFUucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihRKXtyZXR1cm4gQltRXX0pfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw0NDc5OTpmdW5jdGlvbihYZSxK''@;'; put 'put ''ZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj17MToiXHUwY2U3IiwyOiJcdTBjZTgiLDM6Ilx1MGNlOSIsNDoiXHUwY2VhIiw1OiJcdTBjZWIiLDY6Ilx1MGNlYyIsNzoiXHUwY2VkIiw4OiJcdTBjZWUiLDk6Ilx1MGNlZiIsMDoiXHUwY2U2In0sRT17Ilx1MGNlNyI6IjEi''@;'; put 'put ''LCJcdTBjZTgiOiIyIiwiXHUwY2U5IjoiMyIsIlx1MGNlYSI6IjQiLCJcdTBjZWIiOiI1IiwiXHUwY2VjIjoiNiIsIlx1MGNlZCI6IjciLCJcdTBjZWUiOiI4IiwiXHUwY2VmIjoiOSIsIlx1MGNlNiI6IjAifTttZS5kZWZpbmVMb2NhbGUoImtuIix7bW9udGhzOiJcdTBjOWNcdTBjYThcdTBj''@;'; put 'put ''YjVcdTBjYjBcdTBjYmZfXHUwY2FiXHUwY2M2XHUwY2FjXHUwY2NkXHUwY2IwXHUwY2I1XHUwY2IwXHUwY2JmX1x1MGNhZVx1MGNiZVx1MGNiMFx1MGNjZFx1MGM5YVx1MGNjZF9cdTBjOGZcdTBjYWFcdTBjY2RcdTBjYjBcdTBjYmZcdTBjYjJcdTBjY2RfXHUwY2FlXHUwY2M2XHUwY2Q1X1x1''@;'; put 'put ''MGM5Y1x1MGNjMlx1MGNhOFx1MGNjZF9cdTBjOWNcdTBjYzFcdTBjYjJcdTBjYzZcdTBjZDZfXHUwYzg2XHUwYzk3XHUwY2I4XHUwY2NkXHUwYzlmXHUwY2NkX1x1MGNiOFx1MGNjNlx1MGNhYVx1MGNjZFx1MGM5Zlx1MGNjNlx1MGM4Mlx1MGNhY1x1MGNiMFx1MGNjZF9cdTBjODVcdTBjOTVc''@;'; put 'put ''dTBjY2RcdTBjOWZcdTBjYzZcdTBjYzJcdTBjZDVcdTBjYWNcdTBjYjBcdTBjY2RfXHUwY2E4XHUwY2I1XHUwY2M2XHUwYzgyXHUwY2FjXHUwY2IwXHUwY2NkX1x1MGNhMVx1MGNiZlx1MGNiOFx1MGNjNlx1MGM4Mlx1MGNhY1x1MGNiMFx1MGNjZCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi''@;'; put 'put ''XHUwYzljXHUwY2E4X1x1MGNhYlx1MGNjNlx1MGNhY1x1MGNjZFx1MGNiMF9cdTBjYWVcdTBjYmVcdTBjYjBcdTBjY2RcdTBjOWFcdTBjY2RfXHUwYzhmXHUwY2FhXHUwY2NkXHUwY2IwXHUwY2JmXHUwY2IyXHUwY2NkX1x1MGNhZVx1MGNjNlx1MGNkNV9cdTBjOWNcdTBjYzJcdTBjYThcdTBj''@;'; put 'put ''Y2RfXHUwYzljXHUwY2MxXHUwY2IyXHUwY2M2XHUwY2Q2X1x1MGM4Nlx1MGM5N1x1MGNiOFx1MGNjZFx1MGM5Zlx1MGNjZF9cdTBjYjhcdTBjYzZcdTBjYWFcdTBjY2RcdTBjOWZcdTBjYzZcdTBjODJfXHUwYzg1XHUwYzk1XHUwY2NkXHUwYzlmXHUwY2M2XHUwY2MyXHUwY2Q1X1x1MGNhOFx1''@;'; put 'put ''MGNiNVx1MGNjNlx1MGM4Ml9cdTBjYTFcdTBjYmZcdTBjYjhcdTBjYzZcdTBjODIiLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUwY2FkXHUwY2JlXHUwY2E4XHUwY2MxXHUwY2I1XHUwY2JlXHUwY2IwX1x1MGNiOFx1MGNjNlx1MGNjMlx1MGNkNVx1MGNhZVx1''@;'; put 'put ''MGNiNVx1MGNiZVx1MGNiMF9cdTBjYWVcdTBjODJcdTBjOTdcdTBjYjNcdTBjYjVcdTBjYmVcdTBjYjBfXHUwY2FjXHUwY2MxXHUwY2E3XHUwY2I1XHUwY2JlXHUwY2IwX1x1MGM5N1x1MGNjMVx1MGNiMFx1MGNjMVx1MGNiNVx1MGNiZVx1MGNiMF9cdTBjYjZcdTBjYzFcdTBjOTVcdTBjY2Rc''@;'; put 'put ''dTBjYjBcdTBjYjVcdTBjYmVcdTBjYjBfXHUwY2I2XHUwY2E4XHUwY2JmXHUwY2I1XHUwY2JlXHUwY2IwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MGNhZFx1MGNiZVx1MGNhOFx1MGNjMV9cdTBjYjhcdTBjYzZcdTBjYzJcdTBjZDVcdTBjYWVfXHUwY2FlXHUwYzgyXHUwYzk3XHUw''@;'; put 'put ''Y2IzX1x1MGNhY1x1MGNjMVx1MGNhN19cdTBjOTdcdTBjYzFcdTBjYjBcdTBjYzFfXHUwY2I2XHUwY2MxXHUwYzk1XHUwY2NkXHUwY2IwX1x1MGNiNlx1MGNhOFx1MGNiZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwY2FkXHUwY2JlX1x1MGNiOFx1MGNjNlx1MGNjMlx1MGNkNV9cdTBj''@;'; put 'put ''YWVcdTBjODJfXHUwY2FjXHUwY2MxX1x1MGM5N1x1MGNjMV9cdTBjYjZcdTBjYzFfXHUwY2I2Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiQSBoOm1tIixMVFM6IkEgaDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBIGg6''@;'; put 'put ''bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MGM4N1x1MGM4Mlx1MGNhNlx1MGNjMV0gTFQiLG5leHREYXk6IltcdTBjYThcdTBjYmVcdTBjYjNcdTBjYzZdIExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IltcdTBjYThc''@;'; put 'put ''dTBjYmZcdTBjYThcdTBjY2RcdTBjYThcdTBjYzZdIExUIixsYXN0V2VlazoiW1x1MGM5NVx1MGNjNlx1MGNjMlx1MGNhOFx1MGNjNlx1MGNhZl0gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MGNhOFx1MGM4Mlx1MGNhNFx1MGNiMCIscGFzdDoi''@;'; put 'put ''JXMgXHUwY2I5XHUwY2JmXHUwYzgyXHUwY2E2XHUwY2M2IixzOiJcdTBjOTVcdTBjYzZcdTBjYjJcdTBjYjVcdTBjYzEgXHUwYzk1XHUwY2NkXHUwY2I3XHUwY2EzXHUwYzk3XHUwY2IzXHUwY2MxIixzczoiJWQgXHUwY2I4XHUwY2M2XHUwYzk1XHUwY2M2XHUwYzgyXHUwY2ExXHUwY2MxXHUw''@;'; put 'put ''Yzk3XHUwY2IzXHUwY2MxIixtOiJcdTBjOTJcdTBjODJcdTBjYTZcdTBjYzEgXHUwY2E4XHUwY2JmXHUwY2FlXHUwY2JmXHUwY2I3IixtbToiJWQgXHUwY2E4XHUwY2JmXHUwY2FlXHUwY2JmXHUwY2I3IixoOiJcdTBjOTJcdTBjODJcdTBjYTZcdTBjYzEgXHUwYzk3XHUwYzgyXHUwYzlmXHUw''@;'; put 'put ''Y2M2IixoaDoiJWQgXHUwYzk3XHUwYzgyXHUwYzlmXHUwY2M2IixkOiJcdTBjOTJcdTBjODJcdTBjYTZcdTBjYzEgXHUwY2E2XHUwY2JmXHUwY2E4IixkZDoiJWQgXHUwY2E2XHUwY2JmXHUwY2E4IixNOiJcdTBjOTJcdTBjODJcdTBjYTZcdTBjYzEgXHUwY2E0XHUwY2JmXHUwYzgyXHUwYzk3''@;'; put 'put ''XHUwY2IzXHUwY2MxIixNTToiJWQgXHUwY2E0XHUwY2JmXHUwYzgyXHUwYzk3XHUwY2IzXHUwY2MxIix5OiJcdTBjOTJcdTBjODJcdTBjYTZcdTBjYzEgXHUwY2I1XHUwY2IwXHUwY2NkXHUwY2I3Iix5eToiJWQgXHUwY2I1XHUwY2IwXHUwY2NkXHUwY2I3In0scHJlcGFyc2U6ZnVuY3Rpb24o''@;'; put 'put ''VSl7cmV0dXJuIFUucmVwbGFjZSgvW1x1MGNlN1x1MGNlOFx1MGNlOVx1MGNlYVx1MGNlYlx1MGNlY1x1MGNlZFx1MGNlZVx1MGNlZlx1MGNlNl0vZyxmdW5jdGlvbihRKXtyZXR1cm4gRVtRXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKFUpe3JldHVybiBVLnJlcGxhY2UoL1xkL2csZnVuY3Rp''@;'; put 'put ''b24oUSl7cmV0dXJuIEJbUV19KX0sbWVyaWRpZW1QYXJzZTovXHUwY2IwXHUwY2JlXHUwY2E0XHUwY2NkXHUwY2IwXHUwY2JmfFx1MGNhY1x1MGNjNlx1MGNiM1x1MGNiZlx1MGM5N1x1MGNjZFx1MGM5N1x1MGNjNnxcdTBjYWVcdTBjYTdcdTBjY2RcdTBjYWZcdTBjYmVcdTBjYjlcdTBjY2Rc''@;'; put 'put ''dTBjYTh8XHUwY2I4XHUwYzgyXHUwYzljXHUwY2M2LyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oVSxRKXtyZXR1cm4gMTI9PT1VJiYoVT0wKSwiXHUwY2IwXHUwY2JlXHUwY2E0XHUwY2NkXHUwY2IwXHUwY2JmIj09PVE/VTw0P1U6VSsxMjoiXHUwY2FjXHUwY2M2XHUwY2IzXHUwY2JmXHUwYzk3''@;'; put 'put ''XHUwY2NkXHUwYzk3XHUwY2M2Ij09PVE/VToiXHUwY2FlXHUwY2E3XHUwY2NkXHUwY2FmXHUwY2JlXHUwY2I5XHUwY2NkXHUwY2E4Ij09PVE/VT49MTA/VTpVKzEyOiJcdTBjYjhcdTBjODJcdTBjOWNcdTBjYzYiPT09UT9VKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oVSxRLGope3Jl''@;'; put 'put ''dHVybiBVPDQ/Ilx1MGNiMFx1MGNiZVx1MGNhNFx1MGNjZFx1MGNiMFx1MGNiZiI6VTwxMD8iXHUwY2FjXHUwY2M2XHUwY2IzXHUwY2JmXHUwYzk3XHUwY2NkXHUwYzk3XHUwY2M2IjpVPDE3PyJcdTBjYWVcdTBjYTdcdTBjY2RcdTBjYWZcdTBjYmVcdTBjYjlcdTBjY2RcdTBjYTgiOlU8MjA/''@;'; put 'put ''Ilx1MGNiOFx1MGM4Mlx1MGM5Y1x1MGNjNiI6Ilx1MGNiMFx1MGNiZVx1MGNhNFx1MGNjZFx1MGNiMFx1MGNiZiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oXHUwY2E4XHUwY2M2XHUwY2Q1KS8sb3JkaW5hbDpmdW5jdGlvbihVKXtyZXR1cm4gVSsiXHUwY2E4XHUwY2M2XHUw''@;'; put 'put ''Y2Q1In0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KEwoMTU0MzkpKX0sMTM1NDk6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJrbyIse21vbnRoczoiMVx1YzZkNF8yXHVjNmQ0XzNcdWM2ZDRfNFx1YzZkNF81XHVjNmQ0XzZcdWM2''@;'; put 'put ''ZDRfN1x1YzZkNF84XHVjNmQ0XzlcdWM2ZDRfMTBcdWM2ZDRfMTFcdWM2ZDRfMTJcdWM2ZDQiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjFcdWM2ZDRfMlx1YzZkNF8zXHVjNmQ0XzRcdWM2ZDRfNVx1YzZkNF82XHVjNmQ0XzdcdWM2ZDRfOFx1YzZkNF85XHVjNmQ0XzEwXHVjNmQ0XzExXHVj''@;'; put 'put ''NmQ0XzEyXHVjNmQ0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdWM3N2NcdWM2OTRcdWM3N2NfXHVjNmQ0XHVjNjk0XHVjNzdjX1x1ZDY1NFx1YzY5NFx1Yzc3Y19cdWMyMThcdWM2OTRcdWM3N2NfXHViYWE5XHVjNjk0XHVjNzdjX1x1YWUwOFx1YzY5NFx1Yzc3Y19cdWQxYTBcdWM2OTRcdWM3''@;'; put 'put ''N2MiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHVjNzdjX1x1YzZkNF9cdWQ2NTRfXHVjMjE4X1x1YmFhOV9cdWFlMDhfXHVkMWEwIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdWM3N2NfXHVjNmQ0X1x1ZDY1NF9cdWMyMThfXHViYWE5X1x1YWUwOF9cdWQxYTAiLnNwbGl0KCJfIiks''@;'; put 'put ''bG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0iLExUUzoiQSBoOm1tOnNzIixMOiJZWVlZLk1NLkRELiIsTEw6IllZWVlcdWIxNDQgTU1NTSBEXHVjNzdjIixMTEw6IllZWVlcdWIxNDQgTU1NTSBEXHVjNzdjIEEgaDptbSIsTExMTDoiWVlZWVx1YjE0NCBNTU1NIERcdWM3N2MgZGRkZCBBIGg6''@;'; put 'put ''bW0iLGw6IllZWVkuTU0uREQuIixsbDoiWVlZWVx1YjE0NCBNTU1NIERcdWM3N2MiLGxsbDoiWVlZWVx1YjE0NCBNTU1NIERcdWM3N2MgQSBoOm1tIixsbGxsOiJZWVlZXHViMTQ0IE1NTU0gRFx1Yzc3YyBkZGRkIEEgaDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJcdWM2MjRcdWIyOTggTFQi''@;'; put 'put ''LG5leHREYXk6Ilx1YjBiNFx1Yzc3YyBMVCIsbmV4dFdlZWs6ImRkZGQgTFQiLGxhc3REYXk6Ilx1YzViNFx1YzgxYyBMVCIsbGFzdFdlZWs6Ilx1YzljMFx1YjA5Y1x1YzhmYyBkZGRkIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdWQ2YzQiLHBhc3Q6IiVz''@;'; put 'put ''IFx1YzgwNCIsczoiXHViYTg3IFx1Y2QwOCIsc3M6IiVkXHVjZDA4IixtOiIxXHViZDg0IixtbToiJWRcdWJkODQiLGg6Ilx1ZDU1YyBcdWMyZGNcdWFjMDQiLGhoOiIlZFx1YzJkY1x1YWMwNCIsZDoiXHVkNTU4XHViOGU4IixkZDoiJWRcdWM3N2MiLE06Ilx1ZDU1YyBcdWIyZWMiLE1NOiIl''@;'; put 'put ''ZFx1YjJlYyIseToiXHVjNzdjIFx1YjE0NCIseXk6IiVkXHViMTQ0In0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShcdWM3N2N8XHVjNmQ0fFx1YzhmYykvLG9yZGluYWw6ZnVuY3Rpb24oRSxFZSl7c3dpdGNoKEVlKXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiBF''@;'; put 'put ''KyJcdWM3N2MiO2Nhc2UiTSI6cmV0dXJuIEUrIlx1YzZkNCI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBFKyJcdWM4ZmMiO2RlZmF1bHQ6cmV0dXJuIEV9fSxtZXJpZGllbVBhcnNlOi9cdWM2MjRcdWM4MDR8XHVjNjI0XHVkNmM0Lyxpc1BNOmZ1bmN0aW9uKEUpe3JldHVybiJcdWM2MjRcdWQ2''@;'; put 'put ''YzQiPT09RX0sbWVyaWRpZW06ZnVuY3Rpb24oRSxFZSxVKXtyZXR1cm4gRTwxMj8iXHVjNjI0XHVjODA0IjoiXHVjNjI0XHVkNmM0In19KX0oTCgxNTQzOSkpfSw5MTAzNzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj17MToiXHUwNjYxIiwyOiJc''@;'; put 'put ''dTA2NjIiLDM6Ilx1MDY2MyIsNDoiXHUwNjY0Iiw1OiJcdTA2NjUiLDY6Ilx1MDY2NiIsNzoiXHUwNjY3Iiw4OiJcdTA2NjgiLDk6Ilx1MDY2OSIsMDoiXHUwNjYwIn0sRT17Ilx1MDY2MSI6IjEiLCJcdTA2NjIiOiIyIiwiXHUwNjYzIjoiMyIsIlx1MDY2NCI6IjQiLCJcdTA2NjUiOiI1Iiwi''@;'; put 'put ''XHUwNjY2IjoiNiIsIlx1MDY2NyI6IjciLCJcdTA2NjgiOiI4IiwiXHUwNjY5IjoiOSIsIlx1MDY2MCI6IjAifSxFZT1bIlx1MDZhOVx1MDYyN1x1MDY0Nlx1MDY0OFx1MDY0Nlx1MDZjYyBcdTA2MmZcdTA2NDhcdTA2NDhcdTA2ZDVcdTA2NDUiLCJcdTA2MzRcdTA2NDhcdTA2MjhcdTA2Mjdc''@;'; put 'put ''dTA2MmEiLCJcdTA2MjZcdTA2MjdcdTA2MzJcdTA2MjdcdTA2MzEiLCJcdTA2NDZcdTA2Y2NcdTA2MzNcdTA2MjdcdTA2NDYiLCJcdTA2MjZcdTA2MjdcdTA2Y2NcdTA2MjdcdTA2MzEiLCJcdTA2MmRcdTA2NDhcdTA2MzJcdTA2ZDVcdTA2Y2NcdTA2MzFcdTA2MjdcdTA2NDYiLCJcdTA2MmFc''@;'; put 'put ''dTA2ZDVcdTA2NDVcdTA2NDVcdTA2NDhcdTA2MzIiLCJcdTA2MjZcdTA2MjdcdTA2MjgiLCJcdTA2MjZcdTA2ZDVcdTA2Y2NcdTA2NDRcdTA2NDhcdTA2NDhcdTA2NDQiLCJcdTA2MmFcdTA2MzRcdTA2MzFcdTA2Y2NcdTA2NDZcdTA2Y2MgXHUwNmNjXHUwNmQ1XHUwNjQzXHUwNmQ1XHUwNjQ1''@;'; put 'put ''IiwiXHUwNjJhXHUwNjM0XHUwNjMxXHUwNmNjXHUwNjQ2XHUwNmNjIFx1MDYyZlx1MDY0OFx1MDY0OFx1MDZkNVx1MDY0NSIsIlx1MDY0M1x1MDYyN1x1MDY0Nlx1MDY0OFx1MDY0Nlx1MDZjYyBcdTA2Y2NcdTA2ZDVcdTA2YTlcdTA2ZDVcdTA2NDUiXTttZS5kZWZpbmVMb2NhbGUoImt1Iix7''@;'; put 'put ''bW9udGhzOkVlLG1vbnRoc1Nob3J0OkVlLHdlZWtkYXlzOiJcdTA2Y2NcdTA2NDdcdTIwMGNcdTA2NDNcdTA2MzRcdTA2NDdcdTIwMGNcdTA2NDVcdTA2NDVcdTA2NDdcdTIwMGNfXHUwNjJmXHUwNjQ4XHUwNjQ4XHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1XHUwNjQ1XHUwNjQ3XHUyMDBjX1x1''@;'; put 'put ''MDYzM1x1MDZjZVx1MDYzNFx1MDY0N1x1MjAwY1x1MDY0NVx1MDY0NVx1MDY0N1x1MjAwY19cdTA2ODZcdTA2NDhcdTA2MjdcdTA2MzFcdTA2MzRcdTA2NDdcdTIwMGNcdTA2NDVcdTA2NDVcdTA2NDdcdTIwMGNfXHUwNjdlXHUwNmNlXHUwNjQ2XHUwNjJjXHUwNjM0XHUwNjQ3XHUyMDBjXHUw''@;'; put 'put ''NjQ1XHUwNjQ1XHUwNjQ3XHUyMDBjX1x1MDY0N1x1MDY0N1x1MjAwY1x1MDZjY1x1MDY0Nlx1MDZjY19cdTA2MzRcdTA2NDdcdTIwMGNcdTA2NDVcdTA2NDVcdTA2NDdcdTIwMGMiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNmNjXHUwNjQ3XHUyMDBjXHUwNjQzXHUwNjM0XHUwNjQ3''@;'; put 'put ''XHUyMDBjXHUwNjQ1X1x1MDYyZlx1MDY0OFx1MDY0OFx1MDYzNFx1MDY0N1x1MjAwY1x1MDY0NV9cdTA2MzNcdTA2Y2VcdTA2MzRcdTA2NDdcdTIwMGNcdTA2NDVfXHUwNjg2XHUwNjQ4XHUwNjI3XHUwNjMxXHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1X1x1MDY3ZVx1MDZjZVx1MDY0Nlx1MDYy''@;'; put 'put ''Y1x1MDYzNFx1MDY0N1x1MjAwY1x1MDY0NV9cdTA2NDdcdTA2NDdcdTIwMGNcdTA2Y2NcdTA2NDZcdTA2Y2NfXHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1XHUwNjQ1XHUwNjQ3XHUyMDBjIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA2Y2NfXHUwNjJmX1x1MDYzM19cdTA2ODZfXHUwNjdl''@;'; put 'put ''X1x1MDY0N19cdTA2MzQiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1N''@;'; put 'put ''IFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA2MjZcdTA2Y2VcdTA2NDhcdTA2MjdcdTA2MzFcdTA2NDdcdTIwMGN8XHUwNjI4XHUwNjQ3XHUyMDBjXHUwNmNjXHUwNjI3XHUwNjQ2XHUwNmNjLyxpc1BNOmZ1bmN0aW9uKFEpe3JldHVybi9cdTA2MjZcdTA2Y2VcdTA2NDhcdTA2Mjdc''@;'; put 'put ''dTA2MzFcdTA2NDdcdTIwMGMvLnRlc3QoUSl9LG1lcmlkaWVtOmZ1bmN0aW9uKFEsaixyZSl7cmV0dXJuIFE8MTI/Ilx1MDYyOFx1MDY0N1x1MjAwY1x1MDZjY1x1MDYyN1x1MDY0Nlx1MDZjYyI6Ilx1MDYyNlx1MDZjZVx1MDY0OFx1MDYyN1x1MDYzMVx1MDY0N1x1MjAwYyJ9LGNhbGVuZGFy''@;'; put 'put ''OntzYW1lRGF5OiJbXHUwNjI2XHUwNjQ3XHUyMDBjXHUwNjQ1XHUwNjMxXHUwNmM2IFx1MDY0M1x1MDYyN1x1MDYyYVx1MDY5OFx1MDY0NVx1MDZjZVx1MDYzMV0gTFQiLG5leHREYXk6IltcdTA2MjhcdTA2NDdcdTIwMGNcdTA2Y2NcdTA2MjdcdTA2NDZcdTA2Y2MgXHUwNjQzXHUwNjI3XHUw''@;'; put 'put ''NjJhXHUwNjk4XHUwNjQ1XHUwNmNlXHUwNjMxXSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDY0M1x1MDYyN1x1MDYyYVx1MDY5OFx1MDY0NVx1MDZjZVx1MDYzMV0gTFQiLGxhc3REYXk6IltcdTA2MmZcdTA2NDhcdTA2Y2VcdTA2NDZcdTA2Y2UgXHUwNjQzXHUwNjI3XHUwNjJhXHUwNjk4XHUw''@;'; put 'put ''NjQ1XHUwNmNlXHUwNjMxXSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MDY0M1x1MDYyN1x1MDYyYVx1MDY5OFx1MDY0NVx1MDZjZVx1MDYzMV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDY0NFx1MDY0N1x1MjAwYyAlcyIscGFzdDoiJXMiLHM6Ilx1MDY4Nlx1''@;'; put 'put ''MDY0N1x1MjAwY1x1MDY0Nlx1MDYyZiBcdTA2ODZcdTA2MzFcdTA2NDNcdTA2NDdcdTIwMGNcdTA2Y2NcdTA2NDdcdTIwMGNcdTA2NDMiLHNzOiJcdTA2ODZcdTA2MzFcdTA2NDNcdTA2NDdcdTIwMGMgJWQiLG06Ilx1MDZjY1x1MDY0N1x1MjAwY1x1MDY0MyBcdTA2MmVcdTA2NDhcdTA2NDRc''@;'; put 'put ''dTA2NDdcdTIwMGNcdTA2NDMiLG1tOiIlZCBcdTA2MmVcdTA2NDhcdTA2NDRcdTA2NDdcdTIwMGNcdTA2NDMiLGg6Ilx1MDZjY1x1MDY0N1x1MjAwY1x1MDY0MyBcdTA2NDNcdTA2MjdcdTA2MmFcdTA2OThcdTA2NDVcdTA2Y2VcdTA2MzEiLGhoOiIlZCBcdTA2NDNcdTA2MjdcdTA2MmFcdTA2''@;'; put 'put ''OThcdTA2NDVcdTA2Y2VcdTA2MzEiLGQ6Ilx1MDZjY1x1MDY0N1x1MjAwY1x1MDY0MyBcdTA2OTVcdTA2YzZcdTA2OTgiLGRkOiIlZCBcdTA2OTVcdTA2YzZcdTA2OTgiLE06Ilx1MDZjY1x1MDY0N1x1MjAwY1x1MDY0MyBcdTA2NDVcdTA2MjdcdTA2NDZcdTA2YWYiLE1NOiIlZCBcdTA2NDVc''@;'; put 'put ''dTA2MjdcdTA2NDZcdTA2YWYiLHk6Ilx1MDZjY1x1MDY0N1x1MjAwY1x1MDY0MyBcdTA2MzNcdTA2MjdcdTA2YjUiLHl5OiIlZCBcdTA2MzNcdTA2MjdcdTA2YjUifSxwcmVwYXJzZTpmdW5jdGlvbihRKXtyZXR1cm4gUS5yZXBsYWNlKC9bXHUwNjYxXHUwNjYyXHUwNjYzXHUwNjY0XHUwNjY1''@;'; put 'put ''XHUwNjY2XHUwNjY3XHUwNjY4XHUwNjY5XHUwNjYwXS9nLGZ1bmN0aW9uKGope3JldHVybiBFW2pdfSkucmVwbGFjZSgvXHUwNjBjL2csIiwiKX0scG9zdGZvcm1hdDpmdW5jdGlvbihRKXtyZXR1cm4gUS5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKGope3JldHVybiBCW2pdfSkucmVwbGFjZSgv''@;'; put 'put ''LC9nLCJcdTA2MGMiKX0sd2Vlazp7ZG93OjYsZG95OjEyfX0pfShMKDE1NDM5KSl9LDkzMTI1OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO3ZhciBCPXswOiItXHUwNDQ3XHUwNGFmIiwxOiItXHUwNDQ3XHUwNDM4IiwyOiItXHUwNDQ3XHUwNDM4IiwzOiIt''@;'; put 'put ''XHUwNDQ3XHUwNGFmIiw0OiItXHUwNDQ3XHUwNGFmIiw1OiItXHUwNDQ3XHUwNDM4Iiw2OiItXHUwNDQ3XHUwNDRiIiw3OiItXHUwNDQ3XHUwNDM4Iiw4OiItXHUwNDQ3XHUwNDM4Iiw5OiItXHUwNDQ3XHUwNDQzIiwxMDoiLVx1MDQ0N1x1MDQ0MyIsMjA6Ii1cdTA0NDdcdTA0NGIiLDMwOiIt''@;'; put 'put ''XHUwNDQ3XHUwNDQzIiw0MDoiLVx1MDQ0N1x1MDQ0YiIsNTA6Ii1cdTA0NDdcdTA0YWYiLDYwOiItXHUwNDQ3XHUwNDRiIiw3MDoiLVx1MDQ0N1x1MDQzOCIsODA6Ii1cdTA0NDdcdTA0MzgiLDkwOiItXHUwNDQ3XHUwNDQzIiwxMDA6Ii1cdTA0NDdcdTA0YWYifTttZS5kZWZpbmVMb2NhbGUo''@;'; put 'put ''Imt5Iix7bW9udGhzOiJcdTA0NGZcdTA0M2RcdTA0MzJcdTA0MzBcdTA0NDBcdTA0NGNfXHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwXHUwNDMwXHUwNDNiXHUwNDRjX1x1MDQzY1x1MDQzMFx1MDQ0MFx1MDQ0Ml9cdTA0MzBcdTA0M2ZcdTA0NDBcdTA0MzVcdTA0M2JcdTA0NGNfXHUwNDNjXHUw''@;'; put 'put ''NDMwXHUwNDM5X1x1MDQzOFx1MDQ0ZVx1MDQzZFx1MDQ0Y19cdTA0MzhcdTA0NGVcdTA0M2JcdTA0NGNfXHUwNDMwXHUwNDMyXHUwNDMzXHUwNDQzXHUwNDQxXHUwNDQyX1x1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mlx1MDQ0Zlx1MDQzMVx1MDQ0MFx1MDQ0Y19cdTA0M2VcdTA0M2FcdTA0NDJc''@;'; put 'put ''dTA0NGZcdTA0MzFcdTA0NDBcdTA0NGNfXHUwNDNkXHUwNDNlXHUwNDRmXHUwNDMxXHUwNDQwXHUwNDRjX1x1MDQzNFx1MDQzNVx1MDQzYVx1MDQzMFx1MDQzMVx1MDQ0MFx1MDQ0YyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNDRmXHUwNDNkXHUwNDMyX1x1MDQ0NFx1MDQzNVx1MDQz''@;'; put 'put ''Ml9cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUwNDQwX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0MzhcdTA0NGVcdTA0M2RcdTA0NGNfXHUwNDM4XHUwNDRlXHUwNDNiXHUwNDRjX1x1MDQzMFx1MDQzMlx1MDQzM19cdTA0NDFcdTA0MzVcdTA0M2RfXHUwNDNlXHUwNDNh''@;'; put 'put ''XHUwNDQyX1x1MDQzZFx1MDQzZVx1MDQ0Zl9cdTA0MzRcdTA0MzVcdTA0M2EiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDQxNlx1MDQzNVx1MDQzYVx1MDQ0OFx1MDQzNVx1MDQzY1x1MDQzMVx1MDQzOF9cdTA0MTRcdTA0YWZcdTA0MzlcdTA0NDhcdTA0ZTlcdTA0M2NcdTA0MzFcdTA0YWZf''@;'; put 'put ''XHUwNDI4XHUwNDM1XHUwNDM5XHUwNDQ4XHUwNDM1XHUwNDNjXHUwNDMxXHUwNDM4X1x1MDQyOFx1MDQzMFx1MDQ0MFx1MDQ0OFx1MDQzNVx1MDQzY1x1MDQzMVx1MDQzOF9cdTA0MTFcdTA0MzVcdTA0MzlcdTA0NDhcdTA0MzVcdTA0M2NcdTA0MzFcdTA0MzhfXHUwNDE2XHUwNDQzXHUwNDNj''@;'; put 'put ''XHUwNDMwX1x1MDQxOFx1MDQ0OFx1MDQzNVx1MDQzY1x1MDQzMVx1MDQzOCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA0MTZcdTA0MzVcdTA0M2FfXHUwNDE0XHUwNGFmXHUwNDM5X1x1MDQyOFx1MDQzNVx1MDQzOV9cdTA0MjhcdTA0MzBcdTA0NDBfXHUwNDExXHUwNDM1XHUwNDM5''@;'; put 'put ''X1x1MDQxNlx1MDQ0M1x1MDQzY19cdTA0MThcdTA0NDhcdTA0MzUiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDQxNlx1MDQzYV9cdTA0MTRcdTA0MzlfXHUwNDI4XHUwNDM5X1x1MDQyOFx1MDQ0MF9cdTA0MTFcdTA0MzlfXHUwNDE2XHUwNDNjX1x1MDQxOFx1MDQ0OCIuc3BsaXQoIl8i''@;'; put 'put ''KSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA0MTFcdTA0YWZc''@;'; put 'put ''dTA0MzNcdTA0YWZcdTA0M2QgXHUwNDQxXHUwNDMwXHUwNDMwXHUwNDQyXSBMVCIsbmV4dERheToiW1x1MDQyZFx1MDQ0MFx1MDQ0Mlx1MDQzNVx1MDRhMyBcdTA0NDFcdTA0MzBcdTA0MzBcdTA0NDJdIExUIixuZXh0V2VlazoiZGRkZCBbXHUwNDQxXHUwNDMwXHUwNDMwXHUwNDQyXSBMVCIs''@;'; put 'put ''bGFzdERheToiW1x1MDQxYVx1MDQzNVx1MDQ0N1x1MDQ0ZFx1MDQ0ZCBcdTA0NDFcdTA0MzBcdTA0MzBcdTA0NDJdIExUIixsYXN0V2VlazoiW1x1MDRlOFx1MDQ0Mlx1MDQzYVx1MDRlOVx1MDQzZCBcdTA0MzBcdTA0M2ZcdTA0NDJcdTA0MzBcdTA0M2RcdTA0NGJcdTA0M2RdIGRkZGQgW1x1''@;'; put 'put ''MDQzYVx1MDRhZlx1MDQzZFx1MDRhZl0gW1x1MDQ0MVx1MDQzMFx1MDQzMFx1MDQ0Ml0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MDQzOFx1MDQ0N1x1MDQzOFx1MDQzZFx1MDQzNFx1MDQzNSIscGFzdDoiJXMgXHUwNDNjXHUwNDQzXHUwNDQwXHUwNDQz''@;'; put 'put ''XHUwNDNkIixzOiJcdTA0MzFcdTA0MzhcdTA0NDBcdTA0M2RcdTA0MzVcdTA0NDdcdTA0MzUgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IixzczoiJWQgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IixtOiJcdTA0MzFcdTA0MzhcdTA0NDAgXHUwNDNj''@;'; put 'put ''XHUwNGFmXHUwNDNkXHUwNGU5XHUwNDQyIixtbToiJWQgXHUwNDNjXHUwNGFmXHUwNDNkXHUwNGU5XHUwNDQyIixoOiJcdTA0MzFcdTA0MzhcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDMwXHUwNDQyIixoaDoiJWQgXHUwNDQxXHUwNDMwXHUwNDMwXHUwNDQyIixkOiJcdTA0MzFcdTA0MzhcdTA0''@;'; put 'put ''NDAgXHUwNDNhXHUwNGFmXHUwNDNkIixkZDoiJWQgXHUwNDNhXHUwNGFmXHUwNDNkIixNOiJcdTA0MzFcdTA0MzhcdTA0NDAgXHUwNDMwXHUwNDM5IixNTToiJWQgXHUwNDMwXHUwNDM5Iix5OiJcdTA0MzFcdTA0MzhcdTA0NDAgXHUwNDM2XHUwNDRiXHUwNDNiIix5eToiJWQgXHUwNDM2XHUw''@;'; put 'put ''NDRiXHUwNDNiIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS0oXHUwNDQ3XHUwNDM4fFx1MDQ0N1x1MDQ0YnxcdTA0NDdcdTA0YWZ8XHUwNDQ3XHUwNDQzKS8sb3JkaW5hbDpmdW5jdGlvbihFZSl7cmV0dXJuIEVlKyhCW0VlXXx8QltFZSUxMF18fEJbRWU+PTEwMD8xMDA6bnVs''@;'; put 'put ''bF0pfSx3ZWVrOntkb3c6MSxkb3k6N319KX0oTCgxNTQzOSkpfSw2OTU4NjpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBCKGoscmUsYWUsWSl7dmFyIFc9e206WyJlbmcgTWludXR0IiwiZW5nZXIgTWludXR0Il0saDpbImVuZyBTdG9ubiIs''@;'; put 'put ''ImVuZ2VyIFN0b25uIl0sZDpbImVlbiBEYWciLCJlbmdlbSBEYWciXSxNOlsiZWUgTW91bnQiLCJlbmdlbSBNb3VudCJdLHk6WyJlZSBKb2VyIiwiZW5nZW0gSm9lciJdfTtyZXR1cm4gcmU/V1thZV1bMF06V1thZV1bMV19ZnVuY3Rpb24gVShqKXtpZihqPXBhcnNlSW50KGosMTApLGlzTmFO''@;'; put 'put ''KGopKXJldHVybiExO2lmKGo8MClyZXR1cm4hMDtpZihqPDEwKXJldHVybiA0PD1qJiZqPD03O2lmKGo8MTAwKXt2YXIgcmU9aiUxMDtyZXR1cm4gVSgwPT09cmU/ai8xMDpyZSl9aWYoajwxZTQpe2Zvcig7aj49MTA7KWovPTEwO3JldHVybiBVKGopfXJldHVybiBVKGovPTFlMyl9bWUuZGVm''@;'; put 'put ''aW5lTG9jYWxlKCJsYiIse21vbnRoczoiSmFudWFyX0ZlYnJ1YXJfTVx4ZTRlcnpfQWJyXHhlYmxsX01lZV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW4uX0ZlYnIuX01yei5fQWJyLl9NZWVf''@;'; put 'put ''SnVuLl9KdWwuX0F1Zy5fU2VwdC5fT2t0Ll9Ob3YuX0Rlei4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiU29ubmRlZ19NXHhlOWluZGVnX0RceGVibnNjaGRlZ19NXHhlYnR0d29jaF9Eb25uZXNjaGRlZ19GcmVpZGVnX1NhbXNjaGRlZyIuc3BsaXQoIl8iKSx3''@;'; put 'put ''ZWVrZGF5c1Nob3J0OiJTby5fTVx4ZTkuX0RceGViLl9NXHhlYi5fRG8uX0ZyLl9TYS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlNvX01ceGU5X0RceGViX01ceGViX0RvX0ZyX1NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0g''@;'; put 'put ''W0F1ZXJdIixMVFM6Ikg6bW06c3MgW0F1ZXJdIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBIOm1tIFtBdWVyXSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0gW0F1ZXJdIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIYXV0IHVtXSBMVCIs''@;'; put 'put ''c2FtZUVsc2U6IkwiLG5leHREYXk6IltNdWVyIHVtXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3VtXSBMVCIsbGFzdERheToiW0dceGVic2NodGVyIHVtXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAyOmNhc2UgNDpyZXR1cm4iW0xlc2NodGVuXSBkZGRk''@;'; put 'put ''IFt1bV0gTFQiO2RlZmF1bHQ6cmV0dXJuIltMZXNjaHRlXSBkZGRkIFt1bV0gTFQifX19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOmZ1bmN0aW9uIEUoail7cmV0dXJuIFUoai5zdWJzdHIoMCxqLmluZGV4T2YoIiAiKSkpPyJhICIrajoiYW4gIitqfSxwYXN0OmZ1bmN0aW9uIEVlKGope3JldHVy''@;'; put 'put ''biBVKGouc3Vic3RyKDAsai5pbmRleE9mKCIgIikpKT8idmlydSAiK2o6InZpcnVuICIran0sczoiZSBwdWVyIFNla29ubmVuIixzczoiJWQgU2Vrb25uZW4iLG06QixtbToiJWQgTWludXR0ZW4iLGg6QixoaDoiJWQgU3Rvbm5lbiIsZDpCLGRkOiIlZCBEZWVnIixNOkIsTU06IiVkIE1ceGU5''@;'; put 'put ''aW50Iix5OkIseXk6IiVkIEpvZXIifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sMzIzNDk6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5l''@;'; put 'put ''TG9jYWxlKCJsbyIse21vbnRoczoiXHUwZWExXHUwZWIxXHUwZTg3XHUwZTgxXHUwZWFkXHUwZTk5X1x1MGU4MVx1MGViOFx1MGVhMVx1MGU5ZVx1MGViMl9cdTBlYTFcdTBlYjVcdTBlOTlcdTBlYjJfXHUwZWMwXHUwZWExXHUwZWFhXHUwZWIyX1x1MGU5ZVx1MGViNlx1MGU5NFx1MGVhYVx1''@;'; put 'put ''MGViMFx1MGU5ZVx1MGViMl9cdTBlYTFcdTBlYjRcdTBlOTZcdTBlYjhcdTBlOTlcdTBlYjJfXHUwZTgxXHUwZWNkXHUwZWE1XHUwZWIwXHUwZTgxXHUwZWJiXHUwZTk0X1x1MGVhYVx1MGViNFx1MGU4N1x1MGVhYlx1MGViMl9cdTBlODFcdTBlYjFcdTBlOTlcdTBlOGRcdTBlYjJfXHUwZTk1''@;'; put 'put ''XHUwZWI4XHUwZWE1XHUwZWIyX1x1MGU5ZVx1MGViMFx1MGU4OFx1MGViNFx1MGU4MV9cdTBlOTdcdTBlYjFcdTBlOTlcdTBlYTdcdTBlYjIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MGVhMVx1MGViMVx1MGU4N1x1MGU4MVx1MGVhZFx1MGU5OV9cdTBlODFcdTBlYjhcdTBlYTFcdTBl''@;'; put 'put ''OWVcdTBlYjJfXHUwZWExXHUwZWI1XHUwZTk5XHUwZWIyX1x1MGVjMFx1MGVhMVx1MGVhYVx1MGViMl9cdTBlOWVcdTBlYjZcdTBlOTRcdTBlYWFcdTBlYjBcdTBlOWVcdTBlYjJfXHUwZWExXHUwZWI0XHUwZTk2XHUwZWI4XHUwZTk5XHUwZWIyX1x1MGU4MVx1MGVjZFx1MGVhNVx1MGViMFx1''@;'; put 'put ''MGU4MVx1MGViYlx1MGU5NF9cdTBlYWFcdTBlYjRcdTBlODdcdTBlYWJcdTBlYjJfXHUwZTgxXHUwZWIxXHUwZTk5XHUwZThkXHUwZWIyX1x1MGU5NVx1MGViOFx1MGVhNVx1MGViMl9cdTBlOWVcdTBlYjBcdTBlODhcdTBlYjRcdTBlODFfXHUwZTk3XHUwZWIxXHUwZTk5XHUwZWE3XHUwZWIy''@;'; put 'put ''Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTBlYWRcdTBlYjJcdTBlOTdcdTBlYjRcdTBlOTRfXHUwZTg4XHUwZWIxXHUwZTk5X1x1MGVhZFx1MGViMVx1MGU4N1x1MGU4NFx1MGViMlx1MGU5OV9cdTBlOWVcdTBlYjhcdTBlOTRfXHUwZTllXHUwZWIwXHUwZWFiXHUwZWIxXHUwZTk0X1x1MGVh''@;'; put 'put ''YVx1MGViOFx1MGU4MV9cdTBlYzBcdTBlYWFcdTBlYmJcdTBlYjIiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwZTk3XHUwZWI0XHUwZTk0X1x1MGU4OFx1MGViMVx1MGU5OV9cdTBlYWRcdTBlYjFcdTBlODdcdTBlODRcdTBlYjJcdTBlOTlfXHUwZTllXHUwZWI4XHUwZTk0X1x1MGU5''@;'; put 'put ''ZVx1MGViMFx1MGVhYlx1MGViMVx1MGU5NF9cdTBlYWFcdTBlYjhcdTBlODFfXHUwZWMwXHUwZWFhXHUwZWJiXHUwZWIyIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBlOTdfXHUwZTg4X1x1MGVhZFx1MGU4NF9cdTBlOWVfXHUwZTllXHUwZWFiX1x1MGVhYVx1MGU4MV9cdTBlYWEiLnNw''@;'; put 'put ''bGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiXHUwZWE3XHUwZWIxXHUwZTk5ZGRkZCBEIE1NTU0g''@;'; put 'put ''WVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1MGU5NVx1MGVhZFx1MGU5OVx1MGVjMFx1MGU4YVx1MGViYlx1MGVjOVx1MGViMnxcdTBlOTVcdTBlYWRcdTBlOTlcdTBlYzFcdTBlYTVcdTBlODcvLGlzUE06ZnVuY3Rpb24oRSl7cmV0dXJuIlx1MGU5NVx1MGVhZFx1MGU5OVx1MGVjMVx1''@;'; put 'put ''MGVhNVx1MGU4NyI9PT1FfSxtZXJpZGllbTpmdW5jdGlvbihFLEVlLFUpe3JldHVybiBFPDEyPyJcdTBlOTVcdTBlYWRcdTBlOTlcdTBlYzBcdTBlOGFcdTBlYmJcdTBlYzlcdTBlYjIiOiJcdTBlOTVcdTBlYWRcdTBlOTlcdTBlYzFcdTBlYTVcdTBlODcifSxjYWxlbmRhcjp7c2FtZURheToi''@;'; put 'put ''W1x1MGVhMVx1MGViN1x1MGVjOVx1MGU5OVx1MGViNVx1MGVjOVx1MGVjMFx1MGVhN1x1MGVhNVx1MGViMl0gTFQiLG5leHREYXk6IltcdTBlYTFcdTBlYjdcdTBlYzlcdTBlYWRcdTBlYjdcdTBlYzhcdTBlOTlcdTBlYzBcdTBlYTdcdTBlYTVcdTBlYjJdIExUIixuZXh0V2VlazoiW1x1MGVh''@;'; put 'put ''N1x1MGViMVx1MGU5OV1kZGRkW1x1MGVkY1x1MGVjOVx1MGViMlx1MGVjMFx1MGVhN1x1MGVhNVx1MGViMl0gTFQiLGxhc3REYXk6IltcdTBlYTFcdTBlYjdcdTBlYzlcdTBlYTdcdTBlYjJcdTBlOTlcdTBlOTlcdTBlYjVcdTBlYzlcdTBlYzBcdTBlYTdcdTBlYTVcdTBlYjJdIExUIixsYXN0''@;'; put 'put ''V2VlazoiW1x1MGVhN1x1MGViMVx1MGU5OV1kZGRkW1x1MGVjMVx1MGVhNVx1MGVjOVx1MGVhN1x1MGU5OVx1MGViNVx1MGVjOVx1MGVjMFx1MGVhN1x1MGVhNVx1MGViMl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MGVhZFx1MGViNVx1MGU4MSAlcyIscGFz''@;'; put 'put ''dDoiJXNcdTBlOWNcdTBlYzhcdTBlYjJcdTBlOTlcdTBlYTFcdTBlYjIiLHM6Ilx1MGU5YVx1MGVjZFx1MGVjOFx1MGVjMFx1MGU5N1x1MGViYlx1MGVjOFx1MGViMlx1MGVjM1x1MGU5NFx1MGVhN1x1MGViNFx1MGU5OVx1MGViMlx1MGU5N1x1MGViNSIsc3M6IiVkIFx1MGVhN1x1MGViNFx1''@;'; put 'put ''MGU5OVx1MGViMlx1MGU5N1x1MGViNSIsbToiMSBcdTBlOTlcdTBlYjJcdTBlOTdcdTBlYjUiLG1tOiIlZCBcdTBlOTlcdTBlYjJcdTBlOTdcdTBlYjUiLGg6IjEgXHUwZThhXHUwZWJiXHUwZWM4XHUwZWE3XHUwZWMyXHUwZWExXHUwZTg3IixoaDoiJWQgXHUwZThhXHUwZWJiXHUwZWM4XHUw''@;'; put 'put ''ZWE3XHUwZWMyXHUwZWExXHUwZTg3IixkOiIxIFx1MGVhMVx1MGViN1x1MGVjOSIsZGQ6IiVkIFx1MGVhMVx1MGViN1x1MGVjOSIsTToiMSBcdTBlYzBcdTBlOTRcdTBlYjdcdTBlYWRcdTBlOTkiLE1NOiIlZCBcdTBlYzBcdTBlOTRcdTBlYjdcdTBlYWRcdTBlOTkiLHk6IjEgXHUwZTliXHUw''@;'; put 'put ''ZWI1Iix5eToiJWQgXHUwZTliXHUwZWI1In0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovKFx1MGU5N1x1MGViNVx1MGVjOClcZHsxLDJ9LyxvcmRpbmFsOmZ1bmN0aW9uKEUpe3JldHVybiJcdTBlOTdcdTBlYjVcdTBlYzgiK0V9fSl9KEwoMTU0MzkpKX0sOTI0MDA6ZnVuY3Rpb24oWGUsSmUs''@;'; put 'put ''TCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9e3NzOiJzZWt1bmRcdTAxMTdfc2VrdW5kXHUwMTdlaVx1MDE3M19zZWt1bmRlcyIsbToibWludXRcdTAxMTdfbWludXRcdTAxMTdzX21pbnV0XHUwMTE5IixtbToibWludXRcdTAxMTdzX21pbnVcdTAxMGRpXHUwMTczX21pbnV0''@;'; put 'put ''ZXMiLGg6InZhbGFuZGFfdmFsYW5kb3NfdmFsYW5kXHUwMTA1IixoaDoidmFsYW5kb3NfdmFsYW5kXHUwMTczX3ZhbGFuZGFzIixkOiJkaWVuYV9kaWVub3NfZGllblx1MDEwNSIsZGQ6ImRpZW5vc19kaWVuXHUwMTczX2RpZW5hcyIsTToibVx1MDExN251b19tXHUwMTE3bmVzaW9fbVx1MDEx''@;'; put 'put ''N25lc1x1MDEyZiIsTU06Im1cdTAxMTduZXNpYWlfbVx1MDExN25lc2lcdTAxNzNfbVx1MDExN25lc2l1cyIseToibWV0YWlfbWV0XHUwMTczX21ldHVzIix5eToibWV0YWlfbWV0XHUwMTczX21ldHVzIn07ZnVuY3Rpb24gRWUoYWUsWSxXLE4pe3JldHVybiBZP1EoVylbMF06Tj9RKFcpWzFd''@;'; put 'put ''OlEoVylbMl19ZnVuY3Rpb24gVShhZSl7cmV0dXJuIGFlJTEwPT0wfHxhZT4xMCYmYWU8MjB9ZnVuY3Rpb24gUShhZSl7cmV0dXJuIEJbYWVdLnNwbGl0KCJfIil9ZnVuY3Rpb24gaihhZSxZLFcsTil7dmFyIHRlPWFlKyIgIjtyZXR1cm4gMT09PWFlP3RlK0VlKDAsWSxXWzBdLE4pOlk/dGUr''@;'; put 'put ''KFUoYWUpP1EoVylbMV06UShXKVswXSk6Tj90ZStRKFcpWzFdOnRlKyhVKGFlKT9RKFcpWzFdOlEoVylbMl0pfW1lLmRlZmluZUxvY2FsZSgibHQiLHttb250aHM6e2Zvcm1hdDoic2F1c2lvX3Zhc2FyaW9fa292b19iYWxhbmRcdTAxN2Vpb19nZWd1XHUwMTdlXHUwMTE3c19iaXJcdTAxN2Vl''@;'; put 'put ''bGlvX2xpZXBvc19ydWdwalx1MDE2Ylx1MDEwZGlvX3J1Z3NcdTAxMTdqb19zcGFsaW9fbGFwa3JpXHUwMTBkaW9fZ3J1b2RcdTAxN2VpbyIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJzYXVzaXNfdmFzYXJpc19rb3Zhc19iYWxhbmRpc19nZWd1XHUwMTdlXHUwMTE3X2Jpclx1MDE3ZWVsaXNf''@;'; put 'put ''bGllcGFfcnVncGpcdTAxNmJ0aXNfcnVnc1x1MDExN2ppc19zcGFsaXNfbGFwa3JpdGlzX2dydW9kaXMiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L0Rbb0RdPyhcW1teXFtcXV0qXF18XHMpK01NTU0/fE1NTU0/KFxbW15cW1xdXSpcXXxccykrRFtvRF0/L30sbW9udGhzU2hvcnQ6InNhdV92YXNf''@;'; put 'put ''a292X2JhbF9nZWdfYmlyX2xpZV9yZ3BfcmdzX3NwYV9sYXBfZ3JkIi5zcGxpdCgiXyIpLHdlZWtkYXlzOntmb3JtYXQ6InNla21hZGllblx1MDEyZl9waXJtYWRpZW5cdTAxMmZfYW50cmFkaWVuXHUwMTJmX3RyZVx1MDEwZGlhZGllblx1MDEyZl9rZXR2aXJ0YWRpZW5cdTAxMmZfcGVua3Rh''@;'; put 'put ''ZGllblx1MDEyZl9cdTAxNjFlXHUwMTYxdGFkaWVuXHUwMTJmIi5zcGxpdCgiXyIpLHN0YW5kYWxvbmU6InNla21hZGllbmlzX3Bpcm1hZGllbmlzX2FudHJhZGllbmlzX3RyZVx1MDEwZGlhZGllbmlzX2tldHZpcnRhZGllbmlzX3Blbmt0YWRpZW5pc19cdTAxNjFlXHUwMTYxdGFkaWVuaXMi''@;'; put 'put ''LnNwbGl0KCJfIiksaXNGb3JtYXQ6L2RkZGQgSEg6bW0vfSx3ZWVrZGF5c1Nob3J0OiJTZWtfUGlyX0FudF9UcmVfS2V0X1Blbl9cdTAxNjBlXHUwMTYxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTX1BfQV9UX0tfUG5fXHUwMTYwIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDoh''@;'; put 'put ''MCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZLU1NLUREIixMTDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dIixMTEw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSwgSEg6bW0gW3ZhbC5dIixMTExMOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0sIGRkZGQsIEhI''@;'; put 'put ''Om1tIFt2YWwuXSIsbDoiWVlZWS1NTS1ERCIsbGw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSIsbGxsOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0sIEhIOm1tIFt2YWwuXSIsbGxsbDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBkZGQsIEhIOm1tIFt2YWwuXSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb''@;'; put 'put ''XHUwMTYwaWFuZGllbl0gTFQiLG5leHREYXk6IltSeXRval0gTFQiLG5leHRXZWVrOiJkZGRkIExUIixsYXN0RGF5OiJbVmFrYXJdIExUIixsYXN0V2VlazoiW1ByYVx1MDExN2p1c1x1MDEyZl0gZGRkZCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToicG8gJXMiLHBh''@;'; put 'put ''c3Q6InByaWVcdTAxNjEgJXMiLHM6ZnVuY3Rpb24gRShhZSxZLFcsTil7cmV0dXJuIFk/ImtlbGlvcyBzZWt1bmRcdTAxMTdzIjpOPyJrZWxpXHUwMTczIHNla3VuZFx1MDE3ZWlcdTAxNzMiOiJrZWxpYXMgc2VrdW5kZXMifSxzczpqLG06RWUsbW06aixoOkVlLGhoOmosZDpFZSxkZDpqLE06''@;'; put 'put ''RWUsTU06aix5OkVlLHl5Omp9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0tb2ppLyxvcmRpbmFsOmZ1bmN0aW9uKGFlKXtyZXR1cm4gYWUrIi1vamkifSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSwzOTk5MTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUp''@;'; put 'put ''eyJ1c2Ugc3RyaWN0Ijt2YXIgQj17c3M6InNla3VuZGVzX3Nla3VuZFx1MDExM21fc2VrdW5kZV9zZWt1bmRlcyIuc3BsaXQoIl8iKSxtOiJtaW5cdTAxNmJ0ZXNfbWluXHUwMTZidFx1MDExM21fbWluXHUwMTZidGVfbWluXHUwMTZidGVzIi5zcGxpdCgiXyIpLG1tOiJtaW5cdTAxNmJ0ZXNf''@;'; put 'put ''bWluXHUwMTZidFx1MDExM21fbWluXHUwMTZidGVfbWluXHUwMTZidGVzIi5zcGxpdCgiXyIpLGg6InN0dW5kYXNfc3R1bmRcdTAxMDFtX3N0dW5kYV9zdHVuZGFzIi5zcGxpdCgiXyIpLGhoOiJzdHVuZGFzX3N0dW5kXHUwMTAxbV9zdHVuZGFfc3R1bmRhcyIuc3BsaXQoIl8iKSxkOiJkaWVu''@;'; put 'put ''YXNfZGllblx1MDEwMW1fZGllbmFfZGllbmFzIi5zcGxpdCgiXyIpLGRkOiJkaWVuYXNfZGllblx1MDEwMW1fZGllbmFfZGllbmFzIi5zcGxpdCgiXyIpLE06Im1cdTAxMTNuZVx1MDE2MWFfbVx1MDExM25lXHUwMTYxaWVtX21cdTAxMTNuZXNpc19tXHUwMTEzbmVcdTAxNjFpIi5zcGxpdCgi''@;'; put 'put ''XyIpLE1NOiJtXHUwMTEzbmVcdTAxNjFhX21cdTAxMTNuZVx1MDE2MWllbV9tXHUwMTEzbmVzaXNfbVx1MDExM25lXHUwMTYxaSIuc3BsaXQoIl8iKSx5OiJnYWRhX2dhZGllbV9nYWRzX2dhZGkiLnNwbGl0KCJfIikseXk6ImdhZGFfZ2FkaWVtX2dhZHNfZ2FkaSIuc3BsaXQoIl8iKX07ZnVu''@;'; put 'put ''Y3Rpb24gRShyZSxhZSxZKXtyZXR1cm4gWT9hZSUxMD09MSYmYWUlMTAwIT0xMT9yZVsyXTpyZVszXTphZSUxMD09MSYmYWUlMTAwIT0xMT9yZVswXTpyZVsxXX1mdW5jdGlvbiBFZShyZSxhZSxZKXtyZXR1cm4gcmUrIiAiK0UoQltZXSxyZSxhZSl9ZnVuY3Rpb24gVShyZSxhZSxZKXtyZXR1''@;'; put 'put ''cm4gRShCW1ldLHJlLGFlKX1tZS5kZWZpbmVMb2NhbGUoImx2Iix7bW9udGhzOiJqYW52XHUwMTAxcmlzX2ZlYnJ1XHUwMTAxcmlzX21hcnRzX2Fwclx1MDEyYmxpc19tYWlqc19qXHUwMTZibmlqc19qXHUwMTZibGlqc19hdWd1c3RzX3NlcHRlbWJyaXNfb2t0b2JyaXNfbm92ZW1icmlzX2Rl''@;'; put 'put ''Y2VtYnJpcyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21haV9qXHUwMTZibl9qXHUwMTZibF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJzdlx1MDExM3RkaWVuYV9waXJtZGllbmFfb3RyZGllbmFfdHJlXHUwMTYxZGllbmFfY2V0''@;'; put 'put ''dXJ0ZGllbmFfcGlla3RkaWVuYV9zZXN0ZGllbmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3ZfUF9PX1RfQ19Qa19TIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdl9QX09fVF9DX1BrX1MiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntM''@;'; put 'put ''VDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkuIixMTDoiWVlZWS4gW2dhZGFdIEQuIE1NTU0iLExMTDoiWVlZWS4gW2dhZGFdIEQuIE1NTU0sIEhIOm1tIixMTExMOiJZWVlZLiBbZ2FkYV0gRC4gTU1NTSwgZGRkZCwgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1''@;'; put 'put ''MDE2MG9kaWVuIHB1bGtzdGVuXSBMVCIsbmV4dERheToiW1JcdTAxMmJ0IHB1bGtzdGVuXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3B1bGtzdGVuXSBMVCIsbGFzdERheToiW1Zha2FyIHB1bGtzdGVuXSBMVCIsbGFzdFdlZWs6IltQYWdcdTAxMDFqdVx1MDE2MVx1MDEwMV0gZGRkZCBbcHVsa3N0''@;'; put 'put ''ZW5dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJwXHUwMTEzYyAlcyIscGFzdDoicGlybXMgJXMiLHM6ZnVuY3Rpb24gUShyZSxhZSl7cmV0dXJuIGFlPyJkYVx1MDE3ZWFzIHNla3VuZGVzIjoiZGFcdTAxN2VcdTAxMDFtIHNla3VuZFx1MDExM20ifSxzczpFZSxt''@;'; put 'put ''OlUsbW06RWUsaDpVLGhoOkVlLGQ6VSxkZDpFZSxNOlUsTU06RWUseTpVLHl5OkVlfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sMjg0Nzc6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9u''@;'; put 'put ''KG1lKXsidXNlIHN0cmljdCI7dmFyIEI9e3dvcmRzOntzczpbInNla3VuZCIsInNla3VuZGEiLCJzZWt1bmRpIl0sbTpbImplZGFuIG1pbnV0IiwiamVkbm9nIG1pbnV0YSJdLG1tOlsibWludXQiLCJtaW51dGEiLCJtaW51dGEiXSxoOlsiamVkYW4gc2F0IiwiamVkbm9nIHNhdGEiXSxoaDpb''@;'; put 'put ''InNhdCIsInNhdGEiLCJzYXRpIl0sZGQ6WyJkYW4iLCJkYW5hIiwiZGFuYSJdLE1NOlsibWplc2VjIiwibWplc2VjYSIsIm1qZXNlY2kiXSx5eTpbImdvZGluYSIsImdvZGluZSIsImdvZGluYSJdfSxjb3JyZWN0R3JhbW1hdGljYWxDYXNlOmZ1bmN0aW9uKEVlLFUpe3JldHVybiAxPT09RWU/''@;'; put 'put ''VVswXTpFZT49MiYmRWU8PTQ/VVsxXTpVWzJdfSx0cmFuc2xhdGU6ZnVuY3Rpb24oRWUsVSxRKXt2YXIgaj1CLndvcmRzW1FdO3JldHVybiAxPT09US5sZW5ndGg/VT9qWzBdOmpbMV06RWUrIiAiK0IuY29ycmVjdEdyYW1tYXRpY2FsQ2FzZShFZSxqKX19O21lLmRlZmluZUxvY2FsZSgibWUi''@;'; put 'put ''LHttb250aHM6ImphbnVhcl9mZWJydWFyX21hcnRfYXByaWxfbWFqX2p1bl9qdWxfYXZndXN0X3NlcHRlbWJhcl9va3RvYmFyX25vdmVtYmFyX2RlY2VtYmFyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW4uX2ZlYi5fbWFyLl9hcHIuX21hal9qdW5fanVsX2F2Zy5fc2VwLl9va3QuX25v''@;'; put 'put ''di5fZGVjLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJuZWRqZWxqYV9wb25lZGplbGpha191dG9yYWtfc3JpamVkYV9cdTAxMGRldHZydGFrX3BldGFrX3N1Ym90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZWQuX3Bvbi5fdXRvLl9zcmkuX1x1MDEw''@;'; put 'put ''ZGV0Ll9wZXQuX3N1Yi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Im5lX3BvX3V0X3NyX1x1MDEwZGVfcGVfc3UiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1N''@;'; put 'put ''TSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZGFuYXMgdV0gTFQiLG5leHREYXk6IltzanV0cmEgdV0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2Ug''@;'; put 'put ''MDpyZXR1cm4iW3VdIFtuZWRqZWxqdV0gW3VdIExUIjtjYXNlIDM6cmV0dXJuIlt1XSBbc3JpamVkdV0gW3VdIExUIjtjYXNlIDY6cmV0dXJuIlt1XSBbc3Vib3R1XSBbdV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3VdIGRkZGQgW3VdIExUIn19LGxhc3REYXk6''@;'; put 'put ''IltqdVx1MDEwZGUgdV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuWyJbcHJvXHUwMTYxbGVdIFtuZWRqZWxqZV0gW3VdIExUIiwiW3Byb1x1MDE2MWxvZ10gW3BvbmVkamVsamthXSBbdV0gTFQiLCJbcHJvXHUwMTYxbG9nXSBbdXRvcmthXSBbdV0gTFQiLCJbcHJvXHUwMTYxbGVd''@;'; put 'put ''IFtzcmlqZWRlXSBbdV0gTFQiLCJbcHJvXHUwMTYxbG9nXSBbXHUwMTBkZXR2cnRrYV0gW3VdIExUIiwiW3Byb1x1MDE2MWxvZ10gW3BldGthXSBbdV0gTFQiLCJbcHJvXHUwMTYxbGVdIFtzdWJvdGVdIFt1XSBMVCJdW3RoaXMuZGF5KCldfSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7''@;'; put 'put ''ZnV0dXJlOiJ6YSAlcyIscGFzdDoicHJpamUgJXMiLHM6Im5la29saWtvIHNla3VuZGkiLHNzOkIudHJhbnNsYXRlLG06Qi50cmFuc2xhdGUsbW06Qi50cmFuc2xhdGUsaDpCLnRyYW5zbGF0ZSxoaDpCLnRyYW5zbGF0ZSxkOiJkYW4iLGRkOkIudHJhbnNsYXRlLE06Im1qZXNlYyIsTU06Qi50''@;'; put 'put ''cmFuc2xhdGUseToiZ29kaW51Iix5eTpCLnRyYW5zbGF0ZX0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDU1MTE4OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJp''@;'; put 'put ''Y3QiO21lLmRlZmluZUxvY2FsZSgibWkiLHttb250aHM6IktvaGktdFx1MDEwMXRlX0h1aS10YW5ndXJ1X1BvdXRcdTAxNmItdGUtcmFuZ2lfUGFlbmdhLXdoXHUwMTAxd2hcdTAxMDFfSGFyYXR1YV9QaXBpcmlfSFx1MDE0ZG5nb2luZ29pX0hlcmUtdHVyaS1rXHUwMTRka1x1MDEwMV9NYWh1''@;'; put 'put ''cnVfV2hpcmluZ2EtXHUwMTAxLW51a3VfV2hpcmluZ2EtXHUwMTAxLXJhbmdpX0hha2loZWEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IktvaGlfSHVpX1BvdV9QYWVfSGFyYV9QaXBpX0hcdTAxNGRuZ29pX0hlcmVfTWFodV9XaGktbnVfV2hpLXJhX0hha2kiLnNwbGl0KCJfIiksbW9udGhz''@;'; put 'put ''UmVnZXg6Lyg/OlsnYS16XHUwMTAxXHUwMTREXHUwMTZCXStcLT8pezEsM30vaSxtb250aHNTdHJpY3RSZWdleDovKD86WydhLXpcdTAxMDFcdTAxNERcdTAxNkJdK1wtPyl7MSwzfS9pLG1vbnRoc1Nob3J0UmVnZXg6Lyg/OlsnYS16XHUwMTAxXHUwMTREXHUwMTZCXStcLT8pezEsM30vaSxt''@;'; put 'put ''b250aHNTaG9ydFN0cmljdFJlZ2V4Oi8oPzpbJ2Etelx1MDEwMVx1MDE0RFx1MDE2Ql0rXC0/KXsxLDJ9L2ksd2Vla2RheXM6IlJcdTAxMDF0YXB1X01hbmVfVFx1MDE2YnJlaV9XZW5lcmVpX1RcdTAxMDFpdGVfUGFyYWlyZV9IXHUwMTAxdGFyZWkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9y''@;'; put 'put ''dDoiVGFfTWFfVFx1MDE2Yl9XZV9UXHUwMTAxaV9QYV9IXHUwMTAxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJUYV9NYV9UXHUwMTZiX1dlX1RcdTAxMDFpX1BhX0hcdTAxMDEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0v''@;'; put 'put ''WVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIFtpXSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgW2ldIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltpIHRlaWUgbWFoYW5hLCBpXSBMVCIsbmV4dERheToiW2Fwb3BvIGldIExUIixuZXh0V2VlazoiZGRk''@;'; put 'put ''ZCBbaV0gTFQiLGxhc3REYXk6IltpbmFuYWhpIGldIExUIixsYXN0V2VlazoiZGRkZCBbd2hha2FtdXR1bmdhIGldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpIHJvdG8gaSAlcyIscGFzdDoiJXMgaSBtdWEiLHM6InRlIGhcdTAxMTNrb25hIHJ1YXJ1YSIsc3M6''@;'; put 'put ''IiVkIGhcdTAxMTNrb25hIixtOiJoZSBtZW5ldGkiLG1tOiIlZCBtZW5ldGkiLGg6InRlIGhhb3JhIixoaDoiJWQgaGFvcmEiLGQ6ImhlIHJhIixkZDoiJWQgcmEiLE06ImhlIG1hcmFtYSIsTU06IiVkIG1hcmFtYSIseToiaGUgdGF1Iix5eToiJWQgdGF1In0sZGF5T2ZNb250aE9yZGluYWxQ''@;'; put 'put ''YXJzZTovXGR7MSwyfVx4YmEvLG9yZGluYWw6IiVkXHhiYSIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sMTU5NDM6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJtayIse21vbnRoczoiXHUwNDU4XHUwNDMwXHUw''@;'; put 'put ''NDNkXHUwNDQzXHUwNDMwXHUwNDQwXHUwNDM4X1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQ0M1x1MDQzMFx1MDQ0MFx1MDQzOF9cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM4XHUwNDNiX1x1MDQzY1x1MDQzMFx1MDQ1OF9cdTA0NThcdTA0NDNc''@;'; put 'put ''dTA0M2RcdTA0MzhfXHUwNDU4XHUwNDQzXHUwNDNiXHUwNDM4X1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Ml9cdTA0NDFcdTA0MzVcdTA0M2ZcdTA0NDJcdTA0MzVcdTA0M2NcdTA0MzJcdTA0NDBcdTA0MzhfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDNlXHUwNDNjXHUwNDMy''@;'; put 'put ''XHUwNDQwXHUwNDM4X1x1MDQzZFx1MDQzZVx1MDQzNVx1MDQzY1x1MDQzMlx1MDQ0MFx1MDQzOF9cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzVcdTA0M2NcdTA0MzJcdTA0NDBcdTA0MzgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDQ1OFx1MDQzMFx1MDQzZF9cdTA0NDRcdTA0MzVcdTA0''@;'; put 'put ''MzJfXHUwNDNjXHUwNDMwXHUwNDQwX1x1MDQzMFx1MDQzZlx1MDQ0MF9cdTA0M2NcdTA0MzBcdTA0NThfXHUwNDU4XHUwNDQzXHUwNDNkX1x1MDQ1OFx1MDQ0M1x1MDQzYl9cdTA0MzBcdTA0MzJcdTA0MzNfXHUwNDQxXHUwNDM1XHUwNDNmX1x1MDQzZVx1MDQzYVx1MDQ0Ml9cdTA0M2RcdTA0''@;'; put 'put ''M2VcdTA0MzVfXHUwNDM0XHUwNDM1XHUwNDNhIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2JcdTA0MzBfXHUwNDNmXHUwNDNlXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDNiXHUwNDNkXHUwNDM4XHUwNDNhX1x1MDQzMlx1MDQ0Mlx1MDQz''@;'; put 'put ''ZVx1MDQ0MFx1MDQzZFx1MDQzOFx1MDQzYV9cdTA0NDFcdTA0NDBcdTA0MzVcdTA0MzRcdTA0MzBfXHUwNDQ3XHUwNDM1XHUwNDQyXHUwNDMyXHUwNDQwXHUwNDQyXHUwNDNlXHUwNDNhX1x1MDQzZlx1MDQzNVx1MDQ0Mlx1MDQzZVx1MDQzYV9cdTA0NDFcdTA0MzBcdTA0MzFcdTA0M2VcdTA0''@;'; put 'put ''NDJcdTA0MzAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNDNkXHUwNDM1XHUwNDM0X1x1MDQzZlx1MDQzZVx1MDQzZF9cdTA0MzJcdTA0NDJcdTA0M2VfXHUwNDQxXHUwNDQwXHUwNDM1X1x1MDQ0N1x1MDQzNVx1MDQ0Ml9cdTA0M2ZcdTA0MzVcdTA0NDJfXHUwNDQxXHUwNDMwXHUw''@;'; put 'put ''NDMxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA0M2RlX1x1MDQzZm9fXHUwNDMyXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0MzVfXHUwNDNmXHUwNDM1X1x1MDQ0MWEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkQuTU0u''@;'; put 'put ''WVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDQxNFx1MDQzNVx1MDQzZFx1MDQzNVx1MDQ0MSBcdTA0MzJcdTA0M2VdIExUIixuZXh0RGF5OiJbXHUwNDIzXHUw''@;'; put 'put ''NDQyXHUwNDQwXHUwNDM1IFx1MDQzMlx1MDQzZV0gTFQiLG5leHRXZWVrOiJbXHUwNDEyXHUwNDNlXSBkZGRkIFtcdTA0MzJcdTA0M2VdIExUIixsYXN0RGF5OiJbXHUwNDEyXHUwNDQ3XHUwNDM1XHUwNDQwXHUwNDMwIFx1MDQzMlx1MDQzZV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dp''@;'; put 'put ''dGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6Y2FzZSA2OnJldHVybiJbXHUwNDE4XHUwNDM3XHUwNDNjXHUwNDM4XHUwNDNkXHUwNDMwXHUwNDQyXHUwNDMwXHUwNDQyXHUwNDMwXSBkZGRkIFtcdTA0MzJcdTA0M2VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJu''@;'; put 'put ''IltcdTA0MThcdTA0MzdcdTA0M2NcdTA0MzhcdTA0M2RcdTA0MzBcdTA0NDJcdTA0MzhcdTA0M2VcdTA0NDJdIGRkZGQgW1x1MDQzMlx1MDQzZV0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNDM3XHUwNDMwICVzIixwYXN0OiJcdTA0M2ZcdTA0NDBcdTA0''@;'; put 'put ''MzVcdTA0MzQgJXMiLHM6Ilx1MDQzZFx1MDQzNVx1MDQzYVx1MDQzZVx1MDQzYlx1MDQzYVx1MDQ0MyBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzgiLHNzOiIlZCBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzgiLG06Ilx1MDQzNVx1''@;'; put 'put ''MDQzNFx1MDQzZFx1MDQzMCBcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0MzAiLG1tOiIlZCBcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0MzgiLGg6Ilx1MDQzNVx1MDQzNFx1MDQzNVx1MDQzZCBcdTA0NDdcdTA0MzBcdTA0NDEiLGhoOiIlZCBcdTA0NDdcdTA0''@;'; put 'put ''MzBcdTA0NDFcdTA0MzAiLGQ6Ilx1MDQzNVx1MDQzNFx1MDQzNVx1MDQzZCBcdTA0MzRcdTA0MzVcdTA0M2QiLGRkOiIlZCBcdTA0MzRcdTA0MzVcdTA0M2RcdTA0MzAiLE06Ilx1MDQzNVx1MDQzNFx1MDQzNVx1MDQzZCBcdTA0M2NcdTA0MzVcdTA0NDFcdTA0MzVcdTA0NDYiLE1NOiIlZCBc''@;'; put 'put ''dTA0M2NcdTA0MzVcdTA0NDFcdTA0MzVcdTA0NDZcdTA0MzgiLHk6Ilx1MDQzNVx1MDQzNFx1MDQzZFx1MDQzMCBcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzAiLHl5OiIlZCBcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzgifSxkYXlPZk1vbnRoT3JkaW5h''@;'; put 'put ''bFBhcnNlOi9cZHsxLDJ9LShcdTA0MzVcdTA0MzJ8XHUwNDM1XHUwNDNkfFx1MDQ0Mlx1MDQzOHxcdTA0MzJcdTA0Mzh8XHUwNDQwXHUwNDM4fFx1MDQzY1x1MDQzOCkvLG9yZGluYWw6ZnVuY3Rpb24oRSl7dmFyIEVlPUUlMTAsVT1FJTEwMDtyZXR1cm4gMD09PUU/RSsiLVx1MDQzNVx1MDQz''@;'; put 'put ''MiI6MD09PVU/RSsiLVx1MDQzNVx1MDQzZCI6VT4xMCYmVTwyMD9FKyItXHUwNDQyXHUwNDM4IjoxPT09RWU/RSsiLVx1MDQzMlx1MDQzOCI6Mj09PUVlP0UrIi1cdTA0NDBcdTA0MzgiOjc9PT1FZXx8OD09PUVlP0UrIi1cdTA0M2NcdTA0MzgiOkUrIi1cdTA0NDJcdTA0MzgifSx3ZWVrOntk''@;'; put 'put ''b3c6MSxkb3k6N319KX0oTCgxNTQzOSkpfSwxMzg0OTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoIm1sIix7bW9udGhzOiJcdTBkMWNcdTBkMjhcdTBkNDFcdTBkMzVcdTBkMzBcdTBkM2ZfXHUwZDJiXHUwZDQ2XHUwZDJjXHUw''@;'; put 'put ''ZDRkXHUwZDMwXHUwZDQxXHUwZDM1XHUwZDMwXHUwZDNmX1x1MGQyZVx1MGQzZVx1MGQ3Y1x1MGQxYVx1MGQ0ZFx1MGQxYVx1MGQ0ZF9cdTBkMGZcdTBkMmFcdTBkNGRcdTBkMzBcdTBkM2ZcdTBkN2RfXHUwZDJlXHUwZDQ3XHUwZDJmXHUwZDRkX1x1MGQxY1x1MGQ0Mlx1MGQ3YV9cdTBkMWNc''@;'; put 'put ''dTBkNDJcdTBkMzJcdTBkNDhfXHUwZDEzXHUwZDE3XHUwZDM4XHUwZDRkXHUwZDMxXHUwZDRkXHUwZDMxXHUwZDRkX1x1MGQzOFx1MGQ0Nlx1MGQyYVx1MGQ0ZFx1MGQzMVx1MGQ0ZFx1MGQzMVx1MGQwMlx1MGQyY1x1MGQ3Y19cdTBkMTJcdTBkMTVcdTBkNGRcdTBkMWZcdTBkNGJcdTBkMmNc''@;'; put 'put ''dTBkN2NfXHUwZDI4XHUwZDM1XHUwZDAyXHUwZDJjXHUwZDdjX1x1MGQyMVx1MGQzZlx1MGQzOFx1MGQwMlx1MGQyY1x1MGQ3YyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwZDFjXHUwZDI4XHUwZDQxLl9cdTBkMmJcdTBkNDZcdTBkMmNcdTBkNGRcdTBkMzBcdTBkNDEuX1x1MGQyZVx1''@;'; put 'put ''MGQzZVx1MGQ3Yy5fXHUwZDBmXHUwZDJhXHUwZDRkXHUwZDMwXHUwZDNmLl9cdTBkMmVcdTBkNDdcdTBkMmZcdTBkNGRfXHUwZDFjXHUwZDQyXHUwZDdhX1x1MGQxY1x1MGQ0Mlx1MGQzMlx1MGQ0OC5fXHUwZDEzXHUwZDE3Ll9cdTBkMzhcdTBkNDZcdTBkMmFcdTBkNGRcdTBkMzFcdTBkNGRc''@;'; put 'put ''dTBkMzEuX1x1MGQxMlx1MGQxNVx1MGQ0ZFx1MGQxZlx1MGQ0Yi5fXHUwZDI4XHUwZDM1XHUwZDAyLl9cdTBkMjFcdTBkM2ZcdTBkMzhcdTBkMDIuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Ilx1MGQxZVx1MGQzZVx1MGQyZlx1MGQzMVx1MGQzZVx1MGQzNFx1''@;'; put 'put ''MGQ0ZFx1MGQxYV9cdTBkMjRcdTBkM2ZcdTBkMTlcdTBkNGRcdTBkMTVcdTBkMzNcdTBkM2VcdTBkMzRcdTBkNGRcdTBkMWFfXHUwZDFhXHUwZDRhXHUwZDM1XHUwZDRkXHUwZDM1XHUwZDNlXHUwZDM0XHUwZDRkXHUwZDFhX1x1MGQyY1x1MGQ0MVx1MGQyN1x1MGQyOFx1MGQzZVx1MGQzNFx1''@;'; put 'put ''MGQ0ZFx1MGQxYV9cdTBkMzVcdTBkNGRcdTBkMmZcdTBkM2VcdTBkMzRcdTBkM2VcdTBkMzRcdTBkNGRcdTBkMWFfXHUwZDM1XHUwZDQ2XHUwZDMzXHUwZDRkXHUwZDMzXHUwZDNmXHUwZDJmXHUwZDNlXHUwZDM0XHUwZDRkXHUwZDFhX1x1MGQzNlx1MGQyOFx1MGQzZlx1MGQyZlx1MGQzZVx1''@;'; put 'put ''MGQzNFx1MGQ0ZFx1MGQxYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTBkMWVcdTBkM2VcdTBkMmZcdTBkN2NfXHUwZDI0XHUwZDNmXHUwZDE5XHUwZDRkXHUwZDE1XHUwZDdlX1x1MGQxYVx1MGQ0YVx1MGQzNVx1MGQ0ZFx1MGQzNV9cdTBkMmNcdTBkNDFcdTBkMjdcdTBkN2JfXHUw''@;'; put 'put ''ZDM1XHUwZDRkXHUwZDJmXHUwZDNlXHUwZDM0XHUwZDAyX1x1MGQzNVx1MGQ0Nlx1MGQzM1x1MGQ0ZFx1MGQzM1x1MGQzZl9cdTBkMzZcdTBkMjhcdTBkM2YiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MGQxZVx1MGQzZV9cdTBkMjRcdTBkM2ZfXHUwZDFhXHUwZDRhX1x1MGQyY1x1MGQ0''@;'; put 'put ''MV9cdTBkMzVcdTBkNGRcdTBkMmZcdTBkM2VfXHUwZDM1XHUwZDQ2X1x1MGQzNiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSAtXHUwZDI4XHUwZDQxIixMVFM6IkEgaDptbTpzcyAtXHUwZDI4XHUwZDQxIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExM''@;'; put 'put ''TDoiRCBNTU1NIFlZWVksIEEgaDptbSAtXHUwZDI4XHUwZDQxIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIC1cdTBkMjhcdTBkNDEifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MGQwN1x1MGQyOFx1MGQ0ZFx1MGQyOFx1MGQ0ZF0gTFQiLG5leHREYXk6IltcdTBkMjhcdTBkM2Vc''@;'; put 'put ''dTBkMzNcdTBkNDZdIExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IltcdTBkMDdcdTBkMjhcdTBkNGRcdTBkMjhcdTBkMzJcdTBkNDZdIExUIixsYXN0V2VlazoiW1x1MGQxNVx1MGQzNFx1MGQzZlx1MGQxZVx1MGQ0ZFx1MGQxZV0gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVs''@;'; put 'put ''YXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MGQxNVx1MGQzNFx1MGQzZlx1MGQxZVx1MGQ0ZFx1MGQxZVx1MGQ0ZCIscGFzdDoiJXMgXHUwZDJlXHUwZDQxXHUwZDdiXHUwZDJhXHUwZDRkIixzOiJcdTBkMDVcdTBkN2RcdTBkMmEgXHUwZDI4XHUwZDNmXHUwZDJlXHUwZDNmXHUwZDM3XHUwZDE5''@;'; put 'put ''XHUwZDRkXHUwZDE5XHUwZDdlIixzczoiJWQgXHUwZDM4XHUwZDQ2XHUwZDE1XHUwZDRkXHUwZDE1XHUwZDdiXHUwZDIxXHUwZDRkIixtOiJcdTBkMTJcdTBkMzBcdTBkNDEgXHUwZDJlXHUwZDNmXHUwZDI4XHUwZDNmXHUwZDMxXHUwZDRkXHUwZDMxXHUwZDRkIixtbToiJWQgXHUwZDJlXHUw''@;'; put 'put ''ZDNmXHUwZDI4XHUwZDNmXHUwZDMxXHUwZDRkXHUwZDMxXHUwZDRkIixoOiJcdTBkMTJcdTBkMzBcdTBkNDEgXHUwZDJlXHUwZDIzXHUwZDNmXHUwZDE1XHUwZDRkXHUwZDE1XHUwZDQyXHUwZDdjIixoaDoiJWQgXHUwZDJlXHUwZDIzXHUwZDNmXHUwZDE1XHUwZDRkXHUwZDE1XHUwZDQyXHUw''@;'; put 'put ''ZDdjIixkOiJcdTBkMTJcdTBkMzBcdTBkNDEgXHUwZDI2XHUwZDNmXHUwZDM1XHUwZDM4XHUwZDAyIixkZDoiJWQgXHUwZDI2XHUwZDNmXHUwZDM1XHUwZDM4XHUwZDAyIixNOiJcdTBkMTJcdTBkMzBcdTBkNDEgXHUwZDJlXHUwZDNlXHUwZDM4XHUwZDAyIixNTToiJWQgXHUwZDJlXHUwZDNl''@;'; put 'put ''XHUwZDM4XHUwZDAyIix5OiJcdTBkMTJcdTBkMzBcdTBkNDEgXHUwZDM1XHUwZDdjXHUwZDM3XHUwZDAyIix5eToiJWQgXHUwZDM1XHUwZDdjXHUwZDM3XHUwZDAyIn0sbWVyaWRpZW1QYXJzZTovXHUwZDMwXHUwZDNlXHUwZDI0XHUwZDRkXHUwZDMwXHUwZDNmfFx1MGQzMFx1MGQzZVx1MGQz''@;'; put 'put ''NVx1MGQzZlx1MGQzMlx1MGQ0NnxcdTBkMDlcdTBkMWFcdTBkNGRcdTBkMWEgXHUwZDE1XHUwZDM0XHUwZDNmXHUwZDFlXHUwZDRkXHUwZDFlXHUwZDRkfFx1MGQzNVx1MGQ0OFx1MGQxNVx1MGQ0MVx1MGQyOFx1MGQ0ZFx1MGQyOFx1MGQ0N1x1MGQzMFx1MGQwMnxcdTBkMzBcdTBkM2VcdTBk''@;'; put 'put ''MjRcdTBkNGRcdTBkMzBcdTBkM2YvaSxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oRSxFZSl7cmV0dXJuIDEyPT09RSYmKEU9MCksIlx1MGQzMFx1MGQzZVx1MGQyNFx1MGQ0ZFx1MGQzMFx1MGQzZiI9PT1FZSYmRT49NHx8Ilx1MGQwOVx1MGQxYVx1MGQ0ZFx1MGQxYSBcdTBkMTVcdTBkMzRcdTBk''@;'; put 'put ''M2ZcdTBkMWVcdTBkNGRcdTBkMWVcdTBkNGQiPT09RWV8fCJcdTBkMzVcdTBkNDhcdTBkMTVcdTBkNDFcdTBkMjhcdTBkNGRcdTBkMjhcdTBkNDdcdTBkMzBcdTBkMDIiPT09RWU/RSsxMjpFfSxtZXJpZGllbTpmdW5jdGlvbihFLEVlLFUpe3JldHVybiBFPDQ/Ilx1MGQzMFx1MGQzZVx1MGQy''@;'; put 'put ''NFx1MGQ0ZFx1MGQzMFx1MGQzZiI6RTwxMj8iXHUwZDMwXHUwZDNlXHUwZDM1XHUwZDNmXHUwZDMyXHUwZDQ2IjpFPDE3PyJcdTBkMDlcdTBkMWFcdTBkNGRcdTBkMWEgXHUwZDE1XHUwZDM0XHUwZDNmXHUwZDFlXHUwZDRkXHUwZDFlXHUwZDRkIjpFPDIwPyJcdTBkMzVcdTBkNDhcdTBkMTVc''@;'; put 'put ''dTBkNDFcdTBkMjhcdTBkNGRcdTBkMjhcdTBkNDdcdTBkMzBcdTBkMDIiOiJcdTBkMzBcdTBkM2VcdTBkMjRcdTBkNGRcdTBkMzBcdTBkM2YifX0pfShMKDE1NDM5KSl9LDMxOTc3OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEIoRWUsVSxR''@;'; put 'put ''LGope3N3aXRjaChRKXtjYXNlInMiOnJldHVybiBVPyJcdTA0NDVcdTA0NGRcdTA0MzRcdTA0NDVcdTA0NGRcdTA0M2QgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IjoiXHUwNDQ1XHUwNDRkXHUwNDM0XHUwNDQ1XHUwNDRkXHUwNDNkIFx1MDQ0MVx1MDQzNVx1MDQzYVx1''@;'; put 'put ''MDQ0M1x1MDQzZFx1MDQzNFx1MDQ0Ylx1MDQzZCI7Y2FzZSJzcyI6cmV0dXJuIEVlKyhVPyIgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IjoiIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQ0Ylx1MDQzZCIpO2Nhc2UibSI6Y2FzZSJtbSI6cmV0''@;'; put 'put ''dXJuIEVlKyhVPyIgXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyIjoiIFx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQ0Ylx1MDQzZCIpO2Nhc2UiaCI6Y2FzZSJoaCI6cmV0dXJuIEVlKyhVPyIgXHUwNDQ2XHUwNDMwXHUwNDMzIjoiIFx1MDQ0Nlx1MDQzMFx1MDQzM1x1''@;'; put 'put ''MDQzOFx1MDQzOVx1MDQzZCIpO2Nhc2UiZCI6Y2FzZSJkZCI6cmV0dXJuIEVlKyhVPyIgXHUwNGU5XHUwNDM0XHUwNGU5XHUwNDQwIjoiIFx1MDRlOVx1MDQzNFx1MDQ0MFx1MDQzOFx1MDQzOVx1MDQzZCIpO2Nhc2UiTSI6Y2FzZSJNTSI6cmV0dXJuIEVlKyhVPyIgXHUwNDQxXHUwNDMwXHUw''@;'; put 'put ''NDQwIjoiIFx1MDQ0MVx1MDQzMFx1MDQ0MFx1MDQ0Ylx1MDQzZCIpO2Nhc2UieSI6Y2FzZSJ5eSI6cmV0dXJuIEVlKyhVPyIgXHUwNDM2XHUwNDM4XHUwNDNiIjoiIFx1MDQzNlx1MDQzOFx1MDQzYlx1MDQzOFx1MDQzOVx1MDQzZCIpO2RlZmF1bHQ6cmV0dXJuIEVlfX1tZS5kZWZpbmVMb2Nh''@;'; put 'put ''bGUoIm1uIix7bW9udGhzOiJcdTA0MWRcdTA0NGRcdTA0MzNcdTA0MzRcdTA0YWZcdTA0MzNcdTA0NGRcdTA0NGRcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDQwX1x1MDQyNVx1MDQzZVx1MDQ1MVx1MDQ0MFx1MDQzNFx1MDQ0M1x1MDQzM1x1MDQzMFx1MDQzMFx1MDQ0MCBcdTA0NDFcdTA0MzBc''@;'; put 'put ''dTA0NDBfXHUwNDEzXHUwNDQzXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDM0XHUwNDQzXHUwNDMzXHUwNDMwXHUwNDMwXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MTRcdTA0ZTlcdTA0NDBcdTA0ZTlcdTA0MzJcdTA0MzRcdTA0YWZcdTA0MzNcdTA0NGRcdTA0NGRcdTA0NDAgXHUwNDQx''@;'; put 'put ''XHUwNDMwXHUwNDQwX1x1MDQyMlx1MDQzMFx1MDQzMlx1MDQzNFx1MDQ0M1x1MDQzM1x1MDQzMFx1MDQzMFx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0NDBfXHUwNDE3XHUwNDQzXHUwNDQwXHUwNDMzXHUwNDMwXHUwNDM0XHUwNDQzXHUwNDMzXHUwNDMwXHUwNDMwXHUwNDQwIFx1MDQ0MVx1MDQz''@;'; put 'put ''MFx1MDQ0MF9cdTA0MTRcdTA0M2VcdTA0M2JcdTA0MzRcdTA0NDNcdTA0MzNcdTA0MzBcdTA0MzBcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDQwX1x1MDQxZFx1MDQzMFx1MDQzOVx1MDQzY1x1MDQzNFx1MDQ0M1x1MDQzM1x1MDQzMFx1MDQzMFx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0NDBfXHUw''@;'; put 'put ''NDE1XHUwNDQxXHUwNDM0XHUwNGFmXHUwNDMzXHUwNDRkXHUwNDRkXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MTBcdTA0NDBcdTA0MzBcdTA0MzJcdTA0MzRcdTA0NDNcdTA0MzNcdTA0MzBcdTA0MzBcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDQwX1x1MDQxMFx1MDQ0MFx1MDQzMlx1''@;'; put 'put ''MDQzMFx1MDQzZCBcdTA0M2RcdTA0NGRcdTA0MzNcdTA0MzRcdTA0YWZcdTA0MzNcdTA0NGRcdTA0NGRcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDQwX1x1MDQxMFx1MDQ0MFx1MDQzMlx1MDQzMFx1MDQzZCBcdTA0NDVcdTA0M2VcdTA0NTFcdTA0NDBcdTA0MzRcdTA0NDNcdTA0MzNcdTA0MzBc''@;'; put 'put ''dTA0MzBcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDQwIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiIxIFx1MDQ0MVx1MDQzMFx1MDQ0MF8yIFx1MDQ0MVx1MDQzMFx1MDQ0MF8zIFx1MDQ0MVx1MDQzMFx1MDQ0MF80IFx1MDQ0MVx1MDQzMFx1MDQ0MF81IFx1MDQ0MVx1MDQzMFx1MDQ0MF82IFx1''@;'; put 'put ''MDQ0MVx1MDQzMFx1MDQ0MF83IFx1MDQ0MVx1MDQzMFx1MDQ0MF84IFx1MDQ0MVx1MDQzMFx1MDQ0MF85IFx1MDQ0MVx1MDQzMFx1MDQ0MF8xMCBcdTA0NDFcdTA0MzBcdTA0NDBfMTEgXHUwNDQxXHUwNDMwXHUwNDQwXzEyIFx1MDQ0MVx1MDQzMFx1MDQ0MCIuc3BsaXQoIl8iKSxtb250aHNQ''@;'; put 'put ''YXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJcdTA0MWRcdTA0NGZcdTA0M2NfXHUwNDE0XHUwNDMwXHUwNDMyXHUwNDMwXHUwNDMwX1x1MDQxY1x1MDQ0Zlx1MDQzM1x1MDQzY1x1MDQzMFx1MDQ0MF9cdTA0MWJcdTA0NDVcdTA0MzBcdTA0MzNcdTA0MzJcdTA0MzBfXHUwNDFmXHUwNGFmXHUwNDQw''@;'; put 'put ''XHUwNDRkXHUwNDMyX1x1MDQxMVx1MDQzMFx1MDQzMFx1MDQ0MVx1MDQzMFx1MDQzZF9cdTA0MTFcdTA0NGZcdTA0M2NcdTA0MzFcdTA0MzAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNDFkXHUwNDRmXHUwNDNjX1x1MDQxNFx1MDQzMFx1MDQzMl9cdTA0MWNcdTA0NGZcdTA0MzNf''@;'; put 'put ''XHUwNDFiXHUwNDQ1XHUwNDMwX1x1MDQxZlx1MDRhZlx1MDQ0MF9cdTA0MTFcdTA0MzBcdTA0MzBfXHUwNDExXHUwNDRmXHUwNDNjIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA0MWRcdTA0NGZfXHUwNDE0XHUwNDMwX1x1MDQxY1x1MDQ0Zl9cdTA0MWJcdTA0NDVfXHUwNDFmXHUwNGFm''@;'; put 'put ''X1x1MDQxMVx1MDQzMF9cdTA0MTFcdTA0NGYiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVktTU0tREQiLExMOiJZWVlZIFx1MDQzZVx1MDQzZFx1MDQ0YiBNTU1NXHUwNDRiXHUwNDNkIEQi''@;'; put 'put ''LExMTDoiWVlZWSBcdTA0M2VcdTA0M2RcdTA0NGIgTU1NTVx1MDQ0Ylx1MDQzZCBEIEhIOm1tIixMTExMOiJkZGRkLCBZWVlZIFx1MDQzZVx1MDQzZFx1MDQ0YiBNTU1NXHUwNDRiXHUwNDNkIEQgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA0YWVcdTA0ZTh8XHUwNGFlXHUwNDI1L2ksaXNQ''@;'; put 'put ''TTpmdW5jdGlvbihFZSl7cmV0dXJuIlx1MDRhZVx1MDQyNSI9PT1FZX0sbWVyaWRpZW06ZnVuY3Rpb24oRWUsVSxRKXtyZXR1cm4gRWU8MTI/Ilx1MDRhZVx1MDRlOCI6Ilx1MDRhZVx1MDQyNSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNGU4XHUwNDNkXHUwNGU5XHUwNGU5XHUwNDM0XHUw''@;'; put 'put ''NGU5XHUwNDQwXSBMVCIsbmV4dERheToiW1x1MDQxY1x1MDQzMFx1MDQ0MFx1MDQzM1x1MDQzMFx1MDQzMFx1MDQ0OF0gTFQiLG5leHRXZWVrOiJbXHUwNDE4XHUwNDQwXHUwNDRkXHUwNDQ1XSBkZGRkIExUIixsYXN0RGF5OiJbXHUwNGU4XHUwNDQ3XHUwNDM4XHUwNDMzXHUwNDM0XHUwNGU5''@;'; put 'put ''XHUwNDQwXSBMVCIsbGFzdFdlZWs6IltcdTA0ZThcdTA0M2RcdTA0MzNcdTA0ZTlcdTA0NDBcdTA0NDFcdTA0ZTlcdTA0M2RdIGRkZGQgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MDQzNFx1MDQzMFx1MDQ0MFx1MDQzMFx1MDQzMCIscGFzdDoiJXMgXHUw''@;'; put 'put ''NGU5XHUwNDNjXHUwNDNkXHUwNGU5IixzOkIsc3M6QixtOkIsbW06QixoOkIsaGg6QixkOkIsZGQ6QixNOkIsTU06Qix5OkIseXk6Qn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfSBcdTA0ZTlcdTA0MzRcdTA0ZTlcdTA0NDAvLG9yZGluYWw6ZnVuY3Rpb24oRWUsVSl7c3dpdGNo''@;'; put 'put ''KFUpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIEVlKyIgXHUwNGU5XHUwNDM0XHUwNGU5XHUwNDQwIjtkZWZhdWx0OnJldHVybiBFZX19fSl9KEwoMTU0MzkpKX0sNjYxODQ6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9ezE6Ilx1''@;'; put 'put ''MDk2NyIsMjoiXHUwOTY4IiwzOiJcdTA5NjkiLDQ6Ilx1MDk2YSIsNToiXHUwOTZiIiw2OiJcdTA5NmMiLDc6Ilx1MDk2ZCIsODoiXHUwOTZlIiw5OiJcdTA5NmYiLDA6Ilx1MDk2NiJ9LEU9eyJcdTA5NjciOiIxIiwiXHUwOTY4IjoiMiIsIlx1MDk2OSI6IjMiLCJcdTA5NmEiOiI0IiwiXHUw''@;'; put 'put ''OTZiIjoiNSIsIlx1MDk2YyI6IjYiLCJcdTA5NmQiOiI3IiwiXHUwOTZlIjoiOCIsIlx1MDk2ZiI6IjkiLCJcdTA5NjYiOiIwIn07ZnVuY3Rpb24gRWUoUSxqLHJlLGFlKXt2YXIgWT0iIjtpZihqKXN3aXRjaChyZSl7Y2FzZSJzIjpZPSJcdTA5MTVcdTA5M2VcdTA5MzlcdTA5NDAgXHUwOTM4''@;'; put 'put ''XHUwOTQ3XHUwOTE1XHUwOTAyXHUwOTI2IjticmVhaztjYXNlInNzIjpZPSIlZCBcdTA5MzhcdTA5NDdcdTA5MTVcdTA5MDJcdTA5MjYiO2JyZWFrO2Nhc2UibSI6WT0iXHUwOTBmXHUwOTE1IFx1MDkyZVx1MDkzZlx1MDkyOFx1MDkzZlx1MDkxZiI7YnJlYWs7Y2FzZSJtbSI6WT0iJWQgXHUw''@;'; put 'put ''OTJlXHUwOTNmXHUwOTI4XHUwOTNmXHUwOTFmXHUwOTQ3IjticmVhaztjYXNlImgiOlk9Ilx1MDkwZlx1MDkxNSBcdTA5MjRcdTA5M2VcdTA5MzgiO2JyZWFrO2Nhc2UiaGgiOlk9IiVkIFx1MDkyNFx1MDkzZVx1MDkzOCI7YnJlYWs7Y2FzZSJkIjpZPSJcdTA5MGZcdTA5MTUgXHUwOTI2XHUw''@;'; put 'put ''OTNmXHUwOTM1XHUwOTM4IjticmVhaztjYXNlImRkIjpZPSIlZCBcdTA5MjZcdTA5M2ZcdTA5MzVcdTA5MzgiO2JyZWFrO2Nhc2UiTSI6WT0iXHUwOTBmXHUwOTE1IFx1MDkyZVx1MDkzOVx1MDkzZlx1MDkyOFx1MDkzZSI7YnJlYWs7Y2FzZSJNTSI6WT0iJWQgXHUwOTJlXHUwOTM5XHUwOTNm''@;'; put 'put ''XHUwOTI4XHUwOTQ3IjticmVhaztjYXNlInkiOlk9Ilx1MDkwZlx1MDkxNSBcdTA5MzVcdTA5MzBcdTA5NGRcdTA5MzciO2JyZWFrO2Nhc2UieXkiOlk9IiVkIFx1MDkzNVx1MDkzMFx1MDk0ZFx1MDkzN1x1MDk0NyJ9ZWxzZSBzd2l0Y2gocmUpe2Nhc2UicyI6WT0iXHUwOTE1XHUwOTNlXHUw''@;'; put 'put ''OTM5XHUwOTQwIFx1MDkzOFx1MDk0N1x1MDkxNVx1MDkwMlx1MDkyNlx1MDkzZVx1MDkwMiI7YnJlYWs7Y2FzZSJzcyI6WT0iJWQgXHUwOTM4XHUwOTQ3XHUwOTE1XHUwOTAyXHUwOTI2XHUwOTNlXHUwOTAyIjticmVhaztjYXNlIm0iOlk9Ilx1MDkwZlx1MDkxNVx1MDkzZSBcdTA5MmVcdTA5''@;'; put 'put ''M2ZcdTA5MjhcdTA5M2ZcdTA5MWZcdTA5M2UiO2JyZWFrO2Nhc2UibW0iOlk9IiVkIFx1MDkyZVx1MDkzZlx1MDkyOFx1MDkzZlx1MDkxZlx1MDkzZVx1MDkwMiI7YnJlYWs7Y2FzZSJoIjpZPSJcdTA5MGZcdTA5MTVcdTA5M2UgXHUwOTI0XHUwOTNlXHUwOTM4XHUwOTNlIjticmVhaztjYXNl''@;'; put 'put ''ImhoIjpZPSIlZCBcdTA5MjRcdTA5M2VcdTA5MzhcdTA5M2VcdTA5MDIiO2JyZWFrO2Nhc2UiZCI6WT0iXHUwOTBmXHUwOTE1XHUwOTNlIFx1MDkyNlx1MDkzZlx1MDkzNVx1MDkzOFx1MDkzZSI7YnJlYWs7Y2FzZSJkZCI6WT0iJWQgXHUwOTI2XHUwOTNmXHUwOTM1XHUwOTM4XHUwOTNlXHUw''@;'; put 'put ''OTAyIjticmVhaztjYXNlIk0iOlk9Ilx1MDkwZlx1MDkxNVx1MDkzZSBcdTA5MmVcdTA5MzlcdTA5M2ZcdTA5MjhcdTA5NGRcdTA5MmZcdTA5M2UiO2JyZWFrO2Nhc2UiTU0iOlk9IiVkIFx1MDkyZVx1MDkzOVx1MDkzZlx1MDkyOFx1MDk0ZFx1MDkyZlx1MDkzZVx1MDkwMiI7YnJlYWs7Y2Fz''@;'; put 'put ''ZSJ5IjpZPSJcdTA5MGZcdTA5MTVcdTA5M2UgXHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM3XHUwOTNlIjticmVhaztjYXNlInl5IjpZPSIlZCBcdTA5MzVcdTA5MzBcdTA5NGRcdTA5MzdcdTA5M2VcdTA5MDIifXJldHVybiBZLnJlcGxhY2UoLyVkL2ksUSl9bWUuZGVmaW5lTG9jYWxlKCJtciIs''@;'; put 'put ''e21vbnRoczoiXHUwOTFjXHUwOTNlXHUwOTI4XHUwOTQ3XHUwOTM1XHUwOTNlXHUwOTMwXHUwOTQwX1x1MDkyYlx1MDk0N1x1MDkyY1x1MDk0ZFx1MDkzMFx1MDk0MVx1MDkzNVx1MDkzZVx1MDkzMFx1MDk0MF9cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWFfXHUwOTBmXHUwOTJhXHUw''@;'; put 'put ''OTRkXHUwOTMwXHUwOTNmXHUwOTMyX1x1MDkyZVx1MDk0N19cdTA5MWNcdTA5NDJcdTA5MjhfXHUwOTFjXHUwOTQxXHUwOTMyXHUwOTQ4X1x1MDkxMVx1MDkxN1x1MDkzOFx1MDk0ZFx1MDkxZl9cdTA5MzhcdTA5MmFcdTA5NGRcdTA5MWZcdTA5NDdcdTA5MDJcdTA5MmNcdTA5MzBfXHUwOTEx''@;'; put 'put ''XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTRiXHUwOTJjXHUwOTMwX1x1MDkyOFx1MDk0Ylx1MDkzNVx1MDk0ZFx1MDkzOVx1MDk0N1x1MDkwMlx1MDkyY1x1MDkzMF9cdTA5MjFcdTA5M2ZcdTA5MzhcdTA5NDdcdTA5MDJcdTA5MmNcdTA5MzAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDkx''@;'; put 'put ''Y1x1MDkzZVx1MDkyOFx1MDk0Ny5fXHUwOTJiXHUwOTQ3XHUwOTJjXHUwOTRkXHUwOTMwXHUwOTQxLl9cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWEuX1x1MDkwZlx1MDkyYVx1MDk0ZFx1MDkzMFx1MDkzZi5fXHUwOTJlXHUwOTQ3Ll9cdTA5MWNcdTA5NDJcdTA5MjguX1x1MDkxY1x1''@;'; put 'put ''MDk0MVx1MDkzMlx1MDk0OC5fXHUwOTExXHUwOTE3Ll9cdTA5MzhcdTA5MmFcdTA5NGRcdTA5MWZcdTA5NDdcdTA5MDIuX1x1MDkxMVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Yi5fXHUwOTI4XHUwOTRiXHUwOTM1XHUwOTRkXHUwOTM5XHUwOTQ3XHUwOTAyLl9cdTA5MjFcdTA5M2ZcdTA5Mzhc''@;'; put 'put ''dTA5NDdcdTA5MDIuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Ilx1MDkzMFx1MDkzNVx1MDkzZlx1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MzhcdTA5NGJcdTA5MmVcdTA5MzVcdTA5M2VcdTA5MzBfXHUwOTJlXHUwOTAyXHUwOTE3XHUwOTMzXHUwOTM1XHUwOTNl''@;'; put 'put ''XHUwOTMwX1x1MDkyY1x1MDk0MVx1MDkyN1x1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MTdcdTA5NDFcdTA5MzBcdTA5NDJcdTA5MzVcdTA5M2VcdTA5MzBfXHUwOTM2XHUwOTQxXHUwOTE1XHUwOTRkXHUwOTMwXHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkzNlx1MDkyOFx1MDkzZlx1MDkzNVx1MDkz''@;'; put 'put ''ZVx1MDkzMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA5MzBcdTA5MzVcdTA5M2ZfXHUwOTM4XHUwOTRiXHUwOTJlX1x1MDkyZVx1MDkwMlx1MDkxN1x1MDkzM19cdTA5MmNcdTA5NDFcdTA5MjdfXHUwOTE3XHUwOTQxXHUwOTMwXHUwOTQyX1x1MDkzNlx1MDk0MVx1MDkxNVx1MDk0''@;'; put 'put ''ZFx1MDkzMF9cdTA5MzZcdTA5MjhcdTA5M2YiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDkzMF9cdTA5MzhcdTA5NGJfXHUwOTJlXHUwOTAyX1x1MDkyY1x1MDk0MV9cdTA5MTdcdTA5NDFfXHUwOTM2XHUwOTQxX1x1MDkzNiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEg''@;'; put 'put ''aDptbSBcdTA5MzVcdTA5M2VcdTA5MWNcdTA5MjRcdTA5M2UiLExUUzoiQSBoOm1tOnNzIFx1MDkzNVx1MDkzZVx1MDkxY1x1MDkyNFx1MDkzZSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBIGg6bW0gXHUwOTM1XHUwOTNlXHUwOTFjXHUwOTI0''@;'; put 'put ''XHUwOTNlIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MDkzNVx1MDkzZVx1MDkxY1x1MDkyNFx1MDkzZSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwOTA2XHUwOTFjXSBMVCIsbmV4dERheToiW1x1MDkwOVx1MDkyNlx1MDk0ZFx1MDkyZlx1MDkzZV0gTFQiLG5leHRXZWVr''@;'; put 'put ''OiJkZGRkLCBMVCIsbGFzdERheToiW1x1MDkxNVx1MDkzZVx1MDkzMl0gTFQiLGxhc3RXZWVrOiJbXHUwOTJlXHUwOTNlXHUwOTE3XHUwOTQwXHUwOTMyXSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXNcdTA5MmVcdTA5MjdcdTA5NGRcdTA5MmZcdTA5''@;'; put 'put ''NDciLHBhc3Q6IiVzXHUwOTJhXHUwOTQyXHUwOTMwXHUwOTRkXHUwOTM1XHUwOTQwIixzOkVlLHNzOkVlLG06RWUsbW06RWUsaDpFZSxoaDpFZSxkOkVlLGRkOkVlLE06RWUsTU06RWUseTpFZSx5eTpFZX0scHJlcGFyc2U6ZnVuY3Rpb24oUSl7cmV0dXJuIFEucmVwbGFjZSgvW1x1MDk2N1x1''@;'; put 'put ''MDk2OFx1MDk2OVx1MDk2YVx1MDk2Ylx1MDk2Y1x1MDk2ZFx1MDk2ZVx1MDk2Zlx1MDk2Nl0vZyxmdW5jdGlvbihqKXtyZXR1cm4gRVtqXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKFEpe3JldHVybiBRLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oail7cmV0dXJuIEJbal19KX0sbWVyaWRpZW1Q''@;'; put 'put ''YXJzZTovXHUwOTJhXHUwOTM5XHUwOTNlXHUwOTFmXHUwOTQ3fFx1MDkzOFx1MDkxNVx1MDkzZVx1MDkzM1x1MDk0MHxcdTA5MjZcdTA5NDFcdTA5MmFcdTA5M2VcdTA5MzBcdTA5NDB8XHUwOTM4XHUwOTNlXHUwOTJmXHUwOTAyXHUwOTE1XHUwOTNlXHUwOTMzXHUwOTQwfFx1MDkzMFx1MDkz''@;'; put 'put ''ZVx1MDkyNFx1MDk0ZFx1MDkzMFx1MDk0MC8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKFEsail7cmV0dXJuIDEyPT09USYmKFE9MCksIlx1MDkyYVx1MDkzOVx1MDkzZVx1MDkxZlx1MDk0NyI9PT1qfHwiXHUwOTM4XHUwOTE1XHUwOTNlXHUwOTMzXHUwOTQwIj09PWo/UToiXHUwOTI2XHUwOTQx''@;'; put 'put ''XHUwOTJhXHUwOTNlXHUwOTMwXHUwOTQwIj09PWp8fCJcdTA5MzhcdTA5M2VcdTA5MmZcdTA5MDJcdTA5MTVcdTA5M2VcdTA5MzNcdTA5NDAiPT09anx8Ilx1MDkzMFx1MDkzZVx1MDkyNFx1MDk0ZFx1MDkzMFx1MDk0MCI9PT1qP1E+PTEyP1E6USsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0''@;'; put 'put ''aW9uKFEsaixyZSl7cmV0dXJuIFE+PTAmJlE8Nj8iXHUwOTJhXHUwOTM5XHUwOTNlXHUwOTFmXHUwOTQ3IjpRPDEyPyJcdTA5MzhcdTA5MTVcdTA5M2VcdTA5MzNcdTA5NDAiOlE8MTc/Ilx1MDkyNlx1MDk0MVx1MDkyYVx1MDkzZVx1MDkzMFx1MDk0MCI6UTwyMD8iXHUwOTM4XHUwOTNlXHUw''@;'; put 'put ''OTJmXHUwOTAyXHUwOTE1XHUwOTNlXHUwOTMzXHUwOTQwIjoiXHUwOTMwXHUwOTNlXHUwOTI0XHUwOTRkXHUwOTMwXHUwOTQwIn0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KEwoMTU0MzkpKX0sNjQ1MjQ6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVm''@;'; put 'put ''aW5lTG9jYWxlKCJtcy1teSIse21vbnRoczoiSmFudWFyaV9GZWJydWFyaV9NYWNfQXByaWxfTWVpX0p1bl9KdWxhaV9PZ29zX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rpc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfT2dz''@;'; put 'put ''X1NlcF9Pa3RfTm92X0RpcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiQWhhZF9Jc25pbl9TZWxhc2FfUmFidV9LaGFtaXNfSnVtYWF0X1NhYnR1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkFoZF9Jc25fU2VsX1JhYl9LaGFfSnVtX1NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiQWhf''@;'; put 'put ''SXNfU2xfUmJfS21fSm1fU2IiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISC5tbSIsTFRTOiJISC5tbS5zcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIFtwdWt1''@;'; put 'put ''bF0gSEgubW0ifSxtZXJpZGllbVBhcnNlOi9wYWdpfHRlbmdhaGFyaXxwZXRhbmd8bWFsYW0vLG1lcmlkaWVtSG91cjpmdW5jdGlvbihFLEVlKXtyZXR1cm4gMTI9PT1FJiYoRT0wKSwicGFnaSI9PT1FZT9FOiJ0ZW5nYWhhcmkiPT09RWU/RT49MTE/RTpFKzEyOiJwZXRhbmciPT09RWV8fCJt''@;'; put 'put ''YWxhbSI9PT1FZT9FKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oRSxFZSxVKXtyZXR1cm4gRTwxMT8icGFnaSI6RTwxNT8idGVuZ2FoYXJpIjpFPDE5PyJwZXRhbmciOiJtYWxhbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSGFyaSBpbmkgcHVrdWxdIExUIixuZXh0RGF5OiJbRXNvayBw''@;'; put 'put ''dWt1bF0gTFQiLG5leHRXZWVrOiJkZGRkIFtwdWt1bF0gTFQiLGxhc3REYXk6IltLZWxtYXJpbiBwdWt1bF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtsZXBhcyBwdWt1bF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbGFtICVzIixwYXN0OiIlcyB5YW5nIGxlcGFz''@;'; put 'put ''IixzOiJiZWJlcmFwYSBzYWF0IixzczoiJWQgc2FhdCIsbToic2VtaW5pdCIsbW06IiVkIG1pbml0IixoOiJzZWphbSIsaGg6IiVkIGphbSIsZDoic2VoYXJpIixkZDoiJWQgaGFyaSIsTToic2VidWxhbiIsTU06IiVkIGJ1bGFuIix5OiJzZXRhaHVuIix5eToiJWQgdGFodW4ifSx3ZWVrOntk''@;'; put 'put ''b3c6MSxkb3k6N319KX0oTCgxNTQzOSkpfSw3MDQ4NTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoIm1zIix7bW9udGhzOiJKYW51YXJpX0ZlYnJ1YXJpX01hY19BcHJpbF9NZWlfSnVuX0p1bGFpX09nb3NfU2VwdGVtYmVyX09r''@;'; put 'put ''dG9iZXJfTm92ZW1iZXJfRGlzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFjX0Fwcl9NZWlfSnVuX0p1bF9PZ3NfU2VwX09rdF9Ob3ZfRGlzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJBaGFkX0lzbmluX1NlbGFzYV9SYWJ1X0toYW1pc19KdW1hYXRfU2FidHUiLnNw''@;'; put 'put ''bGl0KCJfIiksd2Vla2RheXNTaG9ydDoiQWhkX0lzbl9TZWxfUmFiX0toYV9KdW1fU2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJBaF9Jc19TbF9SYl9LbV9KbV9TYiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJERC9NTS9ZWVlZ''@;'; put 'put ''IixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSJ9LG1lcmlkaWVtUGFyc2U6L3BhZ2l8dGVuZ2FoYXJpfHBldGFuZ3xtYWxhbS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKEUsRWUpe3Jl''@;'; put 'put ''dHVybiAxMj09PUUmJihFPTApLCJwYWdpIj09PUVlP0U6InRlbmdhaGFyaSI9PT1FZT9FPj0xMT9FOkUrMTI6InBldGFuZyI9PT1FZXx8Im1hbGFtIj09PUVlP0UrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihFLEVlLFUpe3JldHVybiBFPDExPyJwYWdpIjpFPDE1PyJ0ZW5nYWhhcmki''@;'; put 'put ''OkU8MTk/InBldGFuZyI6Im1hbGFtIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIYXJpIGluaSBwdWt1bF0gTFQiLG5leHREYXk6IltFc29rIHB1a3VsXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3B1a3VsXSBMVCIsbGFzdERheToiW0tlbG1hcmluIHB1a3VsXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2xl''@;'; put 'put ''cGFzIHB1a3VsXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFsYW0gJXMiLHBhc3Q6IiVzIHlhbmcgbGVwYXMiLHM6ImJlYmVyYXBhIHNhYXQiLHNzOiIlZCBzYWF0IixtOiJzZW1pbml0IixtbToiJWQgbWluaXQiLGg6InNlamFtIixoaDoiJWQgamFtIixkOiJz''@;'; put 'put ''ZWhhcmkiLGRkOiIlZCBoYXJpIixNOiJzZWJ1bGFuIixNTToiJWQgYnVsYW4iLHk6InNldGFodW4iLHl5OiIlZCB0YWh1biJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDM2NjgxOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmlu''@;'; put 'put ''ZUxvY2FsZSgibXQiLHttb250aHM6Ikphbm5hcl9GcmFyX01hcnp1X0FwcmlsX01lamp1X1x1MDEyMHVuanVfTHVsanVfQXd3aXNzdV9TZXR0ZW1icnVfT3R0dWJydV9Ob3ZlbWJydV9EaVx1MDEwYmVtYnJ1Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRnJhX01hcl9BcHJfTWVqX1x1''@;'; put 'put ''MDEyMHVuX0x1bF9Bd3dfU2V0X090dF9Ob3ZfRGlcdTAxMGIiLnNwbGl0KCJfIiksd2Vla2RheXM6IklsLVx1MDEyNmFkZF9JdC1UbmVqbl9JdC1UbGlldGFfTC1FcmJnXHUwMTI3YV9JbC1cdTAxMjZhbWlzX0lsLVx1MDEyMGltZ1x1MDEyN2FfSXMtU2lidCIuc3BsaXQoIl8iKSx3ZWVrZGF5''@;'; put 'put ''c1Nob3J0OiJcdTAxMjZhZF9UbmVfVGxpX0VyYl9cdTAxMjZhbV9cdTAxMjBpbV9TaWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDEyNmFfVG5fVGxfRXJfXHUwMTI2YV9cdTAxMjBpX1NpIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3Mi''@;'; put 'put ''LEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0lsbHVtIGZpbC1dTFQiLG5leHREYXk6IltHXHUwMTI3YWRhIGZpbC1dTFQiLG5leHRXZWVrOiJk''@;'; put 'put ''ZGRkIFtmaWwtXUxUIixsYXN0RGF5OiJbSWwtYmllcmFcdTAxMjcgZmlsLV1MVCIsbGFzdFdlZWs6ImRkZGQgW2xpIGdcdTAxMjdhZGRhXSBbZmlsLV1MVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZlx1MjAxOSAlcyIscGFzdDoiJXMgaWx1IixzOiJmdGl0IHNla29u''@;'; put 'put ''ZGkiLHNzOiIlZCBzZWtvbmRpIixtOiJtaW51dGEiLG1tOiIlZCBtaW51dGkiLGg6InNpZWdcdTAxMjdhIixoaDoiJWQgc2llZ1x1MDEyN2F0IixkOiJcdTAxMjF1cm5hdGEiLGRkOiIlZCBcdTAxMjFyYW5ldCIsTToieGFoYXIiLE1NOiIlZCB4aHVyIix5OiJzZW5hIix5eToiJWQgc25pIn0s''@;'; put 'put ''ZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx4YmEvLG9yZGluYWw6IiVkXHhiYSIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sNTIwMjQ6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9ezE6Ilx1MTA0MSIsMjoiXHUxMDQy''@;'; put 'put ''IiwzOiJcdTEwNDMiLDQ6Ilx1MTA0NCIsNToiXHUxMDQ1Iiw2OiJcdTEwNDYiLDc6Ilx1MTA0NyIsODoiXHUxMDQ4Iiw5OiJcdTEwNDkiLDA6Ilx1MTA0MCJ9LEU9eyJcdTEwNDEiOiIxIiwiXHUxMDQyIjoiMiIsIlx1MTA0MyI6IjMiLCJcdTEwNDQiOiI0IiwiXHUxMDQ1IjoiNSIsIlx1MTA0''@;'; put 'put ''NiI6IjYiLCJcdTEwNDciOiI3IiwiXHUxMDQ4IjoiOCIsIlx1MTA0OSI6IjkiLCJcdTEwNDAiOiIwIn07bWUuZGVmaW5lTG9jYWxlKCJteSIse21vbnRoczoiXHUxMDA3XHUxMDE0XHUxMDNhXHUxMDE0XHUxMDFkXHUxMDJiXHUxMDFiXHUxMDJlX1x1MTAxNlx1MTAzMVx1MTAxNlx1MTAzMVx1''@;'; put 'put ''MTAyY1x1MTAzYVx1MTAxZFx1MTAyYlx1MTAxYlx1MTAyZV9cdTEwMTlcdTEwMTBcdTEwM2FfXHUxMDI3XHUxMDE1XHUxMDNjXHUxMDJlX1x1MTAxOVx1MTAzMV9cdTEwMDdcdTEwM2RcdTEwMTRcdTEwM2FfXHUxMDA3XHUxMDMwXHUxMDFjXHUxMDJkXHUxMDJmXHUxMDA0XHUxMDNhX1x1MTAx''@;'; put 'put ''ZVx1MTAzY1x1MTAwMlx1MTAyZlx1MTAxMFx1MTAzYV9cdTEwMDVcdTEwMDBcdTEwM2FcdTEwMTBcdTEwMDRcdTEwM2FcdTEwMThcdTEwMmNfXHUxMDIxXHUxMDMxXHUxMDJjXHUxMDAwXHUxMDNhXHUxMDEwXHUxMDJkXHUxMDJmXHUxMDE4XHUxMDJjX1x1MTAxNFx1MTAyZFx1MTAyZlx1MTAx''@;'; put 'put ''ZFx1MTAwNFx1MTAzYVx1MTAxOFx1MTAyY19cdTEwMTJcdTEwMmVcdTEwMDdcdTEwMDRcdTEwM2FcdTEwMThcdTEwMmMiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MTAwN1x1MTAxNFx1MTAzYV9cdTEwMTZcdTEwMzFfXHUxMDE5XHUxMDEwXHUxMDNhX1x1MTAxNVx1MTAzY1x1MTAyZV9c''@;'; put 'put ''dTEwMTlcdTEwMzFfXHUxMDA3XHUxMDNkXHUxMDE0XHUxMDNhX1x1MTAxY1x1MTAyZFx1MTAyZlx1MTAwNFx1MTAzYV9cdTEwMWVcdTEwM2NfXHUxMDA1XHUxMDAwXHUxMDNhX1x1MTAyMVx1MTAzMVx1MTAyY1x1MTAwMFx1MTAzYV9cdTEwMTRcdTEwMmRcdTEwMmZfXHUxMDEyXHUxMDJlIi5z''@;'; put 'put ''cGxpdCgiXyIpLHdlZWtkYXlzOiJcdTEwMTBcdTEwMTRcdTEwMDRcdTEwM2FcdTEwMzlcdTEwMDJcdTEwMTRcdTEwM2RcdTEwMzFfXHUxMDEwXHUxMDE0XHUxMDA0XHUxMDNhXHUxMDM5XHUxMDFjXHUxMDJjX1x1MTAyMVx1MTAwNFx1MTAzYVx1MTAzOVx1MTAwMlx1MTAyYl9cdTEwMTdcdTEw''@;'; put 'put ''MmZcdTEwMTJcdTEwMzlcdTEwMTNcdTEwMWZcdTEwMzBcdTEwMzhfXHUxMDAwXHUxMDNjXHUxMDJjXHUxMDFlXHUxMDE1XHUxMDEwXHUxMDMxXHUxMDM4X1x1MTAxZVx1MTAzMVx1MTAyY1x1MTAwMFx1MTAzY1x1MTAyY19cdTEwMDVcdTEwMTRcdTEwMzEiLnNwbGl0KCJfIiksd2Vla2RheXNT''@;'; put 'put ''aG9ydDoiXHUxMDE0XHUxMDNkXHUxMDMxX1x1MTAxY1x1MTAyY19cdTEwMDJcdTEwMmJfXHUxMDFmXHUxMDMwXHUxMDM4X1x1MTAwMFx1MTAzY1x1MTAyY19cdTEwMWVcdTEwMzFcdTEwMmNfXHUxMDE0XHUxMDMxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTEwMTRcdTEwM2RcdTEwMzFf''@;'; put 'put ''XHUxMDFjXHUxMDJjX1x1MTAwMlx1MTAyYl9cdTEwMWZcdTEwMzBcdTEwMzhfXHUxMDAwXHUxMDNjXHUxMDJjX1x1MTAxZVx1MTAzMVx1MTAyY19cdTEwMTRcdTEwMzEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIs''@;'; put 'put ''TEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTEwMWFcdTEwMTRcdTEwMzEuXSBMVCBbXHUxMDE5XHUxMDNlXHUxMDJjXSIsbmV4dERheToiW1x1MTAxOVx1MTAxNFx1MTAw''@;'; put 'put ''MFx1MTAzYVx1MTAxNlx1MTAzY1x1MTAxNFx1MTAzYV0gTFQgW1x1MTAxOVx1MTAzZVx1MTAyY10iLG5leHRXZWVrOiJkZGRkIExUIFtcdTEwMTlcdTEwM2VcdTEwMmNdIixsYXN0RGF5OiJbXHUxMDE5XHUxMDE0XHUxMDMxLlx1MTAwMF0gTFQgW1x1MTAxOVx1MTAzZVx1MTAyY10iLGxhc3RX''@;'; put 'put ''ZWVrOiJbXHUxMDE1XHUxMDNjXHUxMDJlXHUxMDM4XHUxMDAxXHUxMDMyXHUxMDM3XHUxMDFlXHUxMDMxXHUxMDJjXSBkZGRkIExUIFtcdTEwMTlcdTEwM2VcdTEwMmNdIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTEwMWNcdTEwMmNcdTEwMTlcdTEwMGFcdTEwM2Fc''@;'; put 'put ''dTEwMzcgJXMgXHUxMDE5XHUxMDNlXHUxMDJjIixwYXN0OiJcdTEwMWNcdTEwM2RcdTEwMTRcdTEwM2FcdTEwMDFcdTEwMzJcdTEwMzdcdTEwMWVcdTEwMzFcdTEwMmMgJXMgXHUxMDAwIixzOiJcdTEwMDVcdTEwMDBcdTEwMzlcdTEwMDBcdTEwMTRcdTEwM2EuXHUxMDIxXHUxMDE0XHUxMDBh''@;'; put 'put ''XHUxMDNhXHUxMDM4XHUxMDA0XHUxMDFhXHUxMDNhIixzczoiJWQgXHUxMDA1XHUxMDAwXHUxMDM5XHUxMDAwXHUxMDE0XHUxMDM3XHUxMDNhIixtOiJcdTEwMTBcdTEwMDVcdTEwM2FcdTEwMTlcdTEwMmRcdTEwMTRcdTEwMDVcdTEwM2EiLG1tOiIlZCBcdTEwMTlcdTEwMmRcdTEwMTRcdTEw''@;'; put 'put ''MDVcdTEwM2EiLGg6Ilx1MTAxMFx1MTAwNVx1MTAzYVx1MTAxNFx1MTAyY1x1MTAxYlx1MTAyZSIsaGg6IiVkIFx1MTAxNFx1MTAyY1x1MTAxYlx1MTAyZSIsZDoiXHUxMDEwXHUxMDA1XHUxMDNhXHUxMDFiXHUxMDAwXHUxMDNhIixkZDoiJWQgXHUxMDFiXHUxMDAwXHUxMDNhIixNOiJcdTEw''@;'; put 'put ''MTBcdTEwMDVcdTEwM2FcdTEwMWMiLE1NOiIlZCBcdTEwMWMiLHk6Ilx1MTAxMFx1MTAwNVx1MTAzYVx1MTAxNFx1MTAzZVx1MTAwNVx1MTAzYSIseXk6IiVkIFx1MTAxNFx1MTAzZVx1MTAwNVx1MTAzYSJ9LHByZXBhcnNlOmZ1bmN0aW9uKFUpe3JldHVybiBVLnJlcGxhY2UoL1tcdTEwNDFc''@;'; put 'put ''dTEwNDJcdTEwNDNcdTEwNDRcdTEwNDVcdTEwNDZcdTEwNDdcdTEwNDhcdTEwNDlcdTEwNDBdL2csZnVuY3Rpb24oUSl7cmV0dXJuIEVbUV19KX0scG9zdGZvcm1hdDpmdW5jdGlvbihVKXtyZXR1cm4gVS5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKFEpe3JldHVybiBCW1FdfSl9LHdlZWs6e2Rv''@;'; put 'put ''dzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDQyNjg4OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgibmIiLHttb250aHM6ImphbnVhcl9mZWJydWFyX21hcnNfYXByaWxfbWFpX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29r''@;'; put 'put ''dG9iZXJfbm92ZW1iZXJfZGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbi5fZmViLl9tYXJzX2Fwci5fbWFpX2p1bmlfanVsaV9hdWcuX3NlcC5fb2t0Ll9ub3YuX2Rlcy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoic1x4ZjhuZGFnX21hbmRh''@;'; put 'put ''Z190aXJzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sXHhmOHJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic1x4ZjguX21hLl90aS5fb24uX3RvLl9mci5fbFx4ZjguIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzXHhmOF9tYV90aV9vbl90b19mcl9sXHhmOCIuc3BsaXQoIl8i''@;'; put 'put ''KSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0iLExMTEw6ImRkZGQgRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1t''@;'; put 'put ''In0sY2FsZW5kYXI6e3NhbWVEYXk6IltpIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbaSBtb3JnZW4ga2wuXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2tsLl0gTFQiLGxhc3REYXk6IltpIGdceGU1ciBrbC5dIExUIixsYXN0V2VlazoiW2ZvcnJpZ2VdIGRkZGQgW2tsLl0gTFQiLHNhbWVFbHNlOiJM''@;'; put 'put ''In0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9tICVzIixwYXN0OiIlcyBzaWRlbiIsczoibm9lbiBzZWt1bmRlciIsc3M6IiVkIHNla3VuZGVyIixtOiJldHQgbWludXR0IixtbToiJWQgbWludXR0ZXIiLGg6ImVuIHRpbWUiLGhoOiIlZCB0aW1lciIsZDoiZW4gZGFnIixkZDoiJWQgZGFnZXIi''@;'; put 'put ''LHc6ImVuIHVrZSIsd3c6IiVkIHVrZXIiLE06ImVuIG1ceGU1bmVkIixNTToiJWQgbVx4ZTVuZWRlciIseToiZXR0IFx4ZTVyIix5eToiJWQgXHhlNXIifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0''@;'; put 'put ''MzkpKX0sNjg5MTQ6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9ezE6Ilx1MDk2NyIsMjoiXHUwOTY4IiwzOiJcdTA5NjkiLDQ6Ilx1MDk2YSIsNToiXHUwOTZiIiw2OiJcdTA5NmMiLDc6Ilx1MDk2ZCIsODoiXHUwOTZlIiw5OiJcdTA5NmYiLDA6''@;'; put 'put ''Ilx1MDk2NiJ9LEU9eyJcdTA5NjciOiIxIiwiXHUwOTY4IjoiMiIsIlx1MDk2OSI6IjMiLCJcdTA5NmEiOiI0IiwiXHUwOTZiIjoiNSIsIlx1MDk2YyI6IjYiLCJcdTA5NmQiOiI3IiwiXHUwOTZlIjoiOCIsIlx1MDk2ZiI6IjkiLCJcdTA5NjYiOiIwIn07bWUuZGVmaW5lTG9jYWxlKCJuZSIs''@;'; put 'put ''e21vbnRoczoiXHUwOTFjXHUwOTI4XHUwOTM1XHUwOTMwXHUwOTQwX1x1MDkyYlx1MDk0N1x1MDkyY1x1MDk0ZFx1MDkzMFx1MDk0MVx1MDkzNVx1MDkzMFx1MDk0MF9cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWFfXHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTNmXHUwOTMyX1x1''@;'; put 'put ''MDkyZVx1MDkwOF9cdTA5MWNcdTA5NDFcdTA5MjhfXHUwOTFjXHUwOTQxXHUwOTMyXHUwOTNlXHUwOTA4X1x1MDkwNVx1MDkxN1x1MDkzN1x1MDk0ZFx1MDkxZl9cdTA5MzhcdTA5NDdcdTA5MmFcdTA5NGRcdTA5MWZcdTA5NDdcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzBfXHUwOTA1XHUwOTE1''@;'; put 'put ''XHUwOTRkXHUwOTFmXHUwOTRiXHUwOTJjXHUwOTMwX1x1MDkyOFx1MDk0Ylx1MDkyZFx1MDk0N1x1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMF9cdTA5MjFcdTA5M2ZcdTA5MzhcdTA5NDdcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDkxY1x1MDky''@;'; put 'put ''OC5fXHUwOTJiXHUwOTQ3XHUwOTJjXHUwOTRkXHUwOTMwXHUwOTQxLl9cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWFfXHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTNmLl9cdTA5MmVcdTA5MDhfXHUwOTFjXHUwOTQxXHUwOTI4X1x1MDkxY1x1MDk0MVx1MDkzMlx1MDkzZVx1MDkw''@;'; put 'put ''OC5fXHUwOTA1XHUwOTE3Ll9cdTA5MzhcdTA5NDdcdTA5MmFcdTA5NGRcdTA5MWYuX1x1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Yi5fXHUwOTI4XHUwOTRiXHUwOTJkXHUwOTQ3Ll9cdTA5MjFcdTA5M2ZcdTA5MzhcdTA5NDcuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAs''@;'; put 'put ''d2Vla2RheXM6Ilx1MDkwNlx1MDkwN1x1MDkyNFx1MDkyY1x1MDkzZVx1MDkzMF9cdTA5MzhcdTA5NGJcdTA5MmVcdTA5MmNcdTA5M2VcdTA5MzBfXHUwOTJlXHUwOTE5XHUwOTRkXHUwOTE3XHUwOTMyXHUwOTJjXHUwOTNlXHUwOTMwX1x1MDkyY1x1MDk0MVx1MDkyN1x1MDkyY1x1MDkzZVx1''@;'; put 'put ''MDkzMF9cdTA5MmNcdTA5M2ZcdTA5MzlcdTA5M2ZcdTA5MmNcdTA5M2VcdTA5MzBfXHUwOTM2XHUwOTQxXHUwOTE1XHUwOTRkXHUwOTMwXHUwOTJjXHUwOTNlXHUwOTMwX1x1MDkzNlx1MDkyOFx1MDkzZlx1MDkyY1x1MDkzZVx1MDkzMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA5''@;'; put 'put ''MDZcdTA5MDdcdTA5MjQuX1x1MDkzOFx1MDk0Ylx1MDkyZS5fXHUwOTJlXHUwOTE5XHUwOTRkXHUwOTE3XHUwOTMyLl9cdTA5MmNcdTA5NDFcdTA5MjcuX1x1MDkyY1x1MDkzZlx1MDkzOVx1MDkzZi5fXHUwOTM2XHUwOTQxXHUwOTE1XHUwOTRkXHUwOTMwLl9cdTA5MzZcdTA5MjhcdTA5M2Yu''@;'; put 'put ''Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA5MDYuX1x1MDkzOFx1MDk0Yi5fXHUwOTJlXHUwOTAyLl9cdTA5MmNcdTA5NDEuX1x1MDkyY1x1MDkzZi5fXHUwOTM2XHUwOTQxLl9cdTA5MzYuIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6''@;'; put 'put ''IkFcdTA5MTVcdTA5NGIgaDptbSBcdTA5MmNcdTA5MWNcdTA5NDciLExUUzoiQVx1MDkxNVx1MDk0YiBoOm1tOnNzIFx1MDkyY1x1MDkxY1x1MDk0NyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBXHUwOTE1XHUwOTRiIGg6bW0gXHUwOTJjXHUw''@;'; put 'put ''OTFjXHUwOTQ3IixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSwgQVx1MDkxNVx1MDk0YiBoOm1tIFx1MDkyY1x1MDkxY1x1MDk0NyJ9LHByZXBhcnNlOmZ1bmN0aW9uKFUpe3JldHVybiBVLnJlcGxhY2UoL1tcdTA5NjdcdTA5NjhcdTA5NjlcdTA5NmFcdTA5NmJcdTA5NmNcdTA5NmRcdTA5NmVc''@;'; put 'put ''dTA5NmZcdTA5NjZdL2csZnVuY3Rpb24oUSl7cmV0dXJuIEVbUV19KX0scG9zdGZvcm1hdDpmdW5jdGlvbihVKXtyZXR1cm4gVS5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKFEpe3JldHVybiBCW1FdfSl9LG1lcmlkaWVtUGFyc2U6L1x1MDkzMFx1MDkzZVx1MDkyNFx1MDkzZnxcdTA5MmNcdTA5''@;'; put 'put ''M2ZcdTA5MzlcdTA5M2VcdTA5Mjh8XHUwOTI2XHUwOTNmXHUwOTA5XHUwOTAxXHUwOTM4XHUwOTRifFx1MDkzOFx1MDkzZVx1MDkwMVx1MDkxZC8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKFUsUSl7cmV0dXJuIDEyPT09VSYmKFU9MCksIlx1MDkzMFx1MDkzZVx1MDkyNFx1MDkzZiI9PT1RP1U8''@;'; put 'put ''ND9VOlUrMTI6Ilx1MDkyY1x1MDkzZlx1MDkzOVx1MDkzZVx1MDkyOCI9PT1RP1U6Ilx1MDkyNlx1MDkzZlx1MDkwOVx1MDkwMVx1MDkzOFx1MDk0YiI9PT1RP1U+PTEwP1U6VSsxMjoiXHUwOTM4XHUwOTNlXHUwOTAxXHUwOTFkIj09PVE/VSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9u''@;'; put 'put ''KFUsUSxqKXtyZXR1cm4gVTwzPyJcdTA5MzBcdTA5M2VcdTA5MjRcdTA5M2YiOlU8MTI/Ilx1MDkyY1x1MDkzZlx1MDkzOVx1MDkzZVx1MDkyOCI6VTwxNj8iXHUwOTI2XHUwOTNmXHUwOTA5XHUwOTAxXHUwOTM4XHUwOTRiIjpVPDIwPyJcdTA5MzhcdTA5M2VcdTA5MDFcdTA5MWQiOiJcdTA5''@;'; put 'put ''MzBcdTA5M2VcdTA5MjRcdTA5M2YifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDkwNlx1MDkxY10gTFQiLG5leHREYXk6IltcdTA5MmRcdTA5NGJcdTA5MzJcdTA5M2ZdIExUIixuZXh0V2VlazoiW1x1MDkwNlx1MDkwOVx1MDkwMVx1MDkyNlx1MDk0Yl0gZGRkZFssXSBMVCIsbGFzdERheToi''@;'; put 'put ''W1x1MDkzOVx1MDkzZlx1MDkxY1x1MDk0Yl0gTFQiLGxhc3RXZWVrOiJbXHUwOTE3XHUwOTBmXHUwOTE1XHUwOTRiXSBkZGRkWyxdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc1x1MDkyZVx1MDkzZSIscGFzdDoiJXMgXHUwOTA1XHUwOTE3XHUwOTNlXHUwOTIx''@;'; put 'put ''XHUwOTNmIixzOiJcdTA5MTVcdTA5NDdcdTA5MzlcdTA5NDAgXHUwOTE1XHUwOTRkXHUwOTM3XHUwOTIzIixzczoiJWQgXHUwOTM4XHUwOTQ3XHUwOTE1XHUwOTQ3XHUwOTIzXHUwOTRkXHUwOTIxIixtOiJcdTA5MGZcdTA5MTUgXHUwOTJlXHUwOTNmXHUwOTI4XHUwOTQ3XHUwOTFmIixtbToi''@;'; put 'put ''JWQgXHUwOTJlXHUwOTNmXHUwOTI4XHUwOTQ3XHUwOTFmIixoOiJcdTA5MGZcdTA5MTUgXHUwOTE4XHUwOTIzXHUwOTRkXHUwOTFmXHUwOTNlIixoaDoiJWQgXHUwOTE4XHUwOTIzXHUwOTRkXHUwOTFmXHUwOTNlIixkOiJcdTA5MGZcdTA5MTUgXHUwOTI2XHUwOTNmXHUwOTI4IixkZDoiJWQg''@;'; put 'put ''XHUwOTI2XHUwOTNmXHUwOTI4IixNOiJcdTA5MGZcdTA5MTUgXHUwOTJlXHUwOTM5XHUwOTNmXHUwOTI4XHUwOTNlIixNTToiJWQgXHUwOTJlXHUwOTM5XHUwOTNmXHUwOTI4XHUwOTNlIix5OiJcdTA5MGZcdTA5MTUgXHUwOTJjXHUwOTMwXHUwOTRkXHUwOTM3Iix5eToiJWQgXHUwOTJjXHUw''@;'; put 'put ''OTMwXHUwOTRkXHUwOTM3In0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KEwoMTU0MzkpKX0sNTIyNzI6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9Imphbi5fZmViLl9tcnQuX2Fwci5fbWVpX2p1bi5fanVsLl9hdWcuX3NlcC5fb2t0Ll9ub3YuX2Rl''@;'; put 'put ''Yy4iLnNwbGl0KCJfIiksRT0iamFuX2ZlYl9tcnRfYXByX21laV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksRWU9Wy9eamFuL2ksL15mZWIvaSwvXm1hYXJ0fG1ydC4/JC9pLC9eYXByL2ksL15tZWkkL2ksL15qdW5baS5dPyQvaSwvXmp1bFtpLl0/JC9pLC9eYXVn''@;'; put 'put ''L2ksL15zZXAvaSwvXm9rdC9pLC9ebm92L2ksL15kZWMvaV0sVT0vXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyfGphblwuP3xmZWJcLj98bXJ0XC4/fGFwclwuP3xqdVtubF1cLj98''@;'; put 'put ''YXVnXC4/fHNlcFwuP3xva3RcLj98bm92XC4/fGRlY1wuPykvaTttZS5kZWZpbmVMb2NhbGUoIm5sLWJlIix7bW9udGhzOiJqYW51YXJpX2ZlYnJ1YXJpX21hYXJ0X2FwcmlsX21laV9qdW5pX2p1bGlfYXVndXN0dXNfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0''@;'; put 'put ''KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oaixyZSl7cmV0dXJuIGo/Ly1NTU0tLy50ZXN0KHJlKT9FW2oubW9udGgoKV06QltqLm1vbnRoKCldOkJ9LG1vbnRoc1JlZ2V4OlUsbW9udGhzU2hvcnRSZWdleDpVLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8''@;'; put 'put ''YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXIpL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXihqYW5cLj98ZmViXC4/fG1ydFwuP3xhcHJcLj98bWVpfGp1W25sXVwuP3xhdWdcLj98c2VwXC4/fG9rdFwuP3xub3ZcLj98ZGVj''@;'; put 'put ''XC4/KS9pLG1vbnRoc1BhcnNlOkVlLGxvbmdNb250aHNQYXJzZTpFZSxzaG9ydE1vbnRoc1BhcnNlOkVlLHdlZWtkYXlzOiJ6b25kYWdfbWFhbmRhZ19kaW5zZGFnX3dvZW5zZGFnX2RvbmRlcmRhZ192cmlqZGFnX3phdGVyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InpvLl9tYS5f''@;'; put 'put ''ZGkuX3dvLl9kby5fdnIuX3phLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiem9fbWFfZGlfd29fZG9fdnJfemEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1N''@;'; put 'put ''TU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbdmFuZGFhZyBvbV0gTFQiLG5leHREYXk6Ilttb3JnZW4gb21dIExUIixuZXh0V2VlazoiZGRkZCBbb21dIExUIixsYXN0RGF5OiJbZ2lzdGVy''@;'; put 'put ''ZW4gb21dIExUIixsYXN0V2VlazoiW2FmZ2Vsb3Blbl0gZGRkZCBbb21dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvdmVyICVzIixwYXN0OiIlcyBnZWxlZGVuIixzOiJlZW4gcGFhciBzZWNvbmRlbiIsc3M6IiVkIHNlY29uZGVuIixtOiJceGU5XHhlOW4gbWlu''@;'; put 'put ''dXV0IixtbToiJWQgbWludXRlbiIsaDoiXHhlOVx4ZTluIHV1ciIsaGg6IiVkIHV1ciIsZDoiXHhlOVx4ZTluIGRhZyIsZGQ6IiVkIGRhZ2VuIixNOiJceGU5XHhlOW4gbWFhbmQiLE1NOiIlZCBtYWFuZGVuIix5OiJceGU5XHhlOW4gamFhciIseXk6IiVkIGphYXIifSxkYXlPZk1vbnRoT3Jk''@;'; put 'put ''aW5hbFBhcnNlOi9cZHsxLDJ9KHN0ZXxkZSkvLG9yZGluYWw6ZnVuY3Rpb24oail7cmV0dXJuIGorKDE9PT1qfHw4PT09anx8aj49MjA/InN0ZSI6ImRlIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDExNzU4OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVz''@;'; put 'put ''ZSBzdHJpY3QiO3ZhciBCPSJqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21laV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLEU9Imphbl9mZWJfbXJ0X2Fwcl9tZWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLEVlPVsvXmphbi9pLC9e''@;'; put 'put ''ZmViL2ksL15tYWFydHxtcnQuPyQvaSwvXmFwci9pLC9ebWVpJC9pLC9eanVuW2kuXT8kL2ksL15qdWxbaS5dPyQvaSwvXmF1Zy9pLC9ec2VwL2ksL15va3QvaSwvXm5vdi9pLC9eZGVjL2ldLFU9L14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xz''@;'; put 'put ''ZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcnxqYW5cLj98ZmViXC4/fG1ydFwuP3xhcHJcLj98anVbbmxdXC4/fGF1Z1wuP3xzZXBcLj98b2t0XC4/fG5vdlwuP3xkZWNcLj8pL2k7bWUuZGVmaW5lTG9jYWxlKCJubCIse21vbnRoczoiamFudWFyaV9mZWJydWFyaV9tYWFydF9h''@;'; put 'put ''cHJpbF9tZWlfanVuaV9qdWxpX2F1Z3VzdHVzX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OmZ1bmN0aW9uKGoscmUpe3JldHVybiBqPy8tTU1NLS8udGVzdChyZSk/RVtqLm1vbnRoKCldOkJbai5tb250aCgpXTpCfSxtb250aHNS''@;'; put 'put ''ZWdleDpVLG1vbnRoc1Nob3J0UmVnZXg6VSxtb250aHNTdHJpY3RSZWdleDovXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oamFu''@;'; put 'put ''XC4/fGZlYlwuP3xtcnRcLj98YXByXC4/fG1laXxqdVtubF1cLj98YXVnXC4/fHNlcFwuP3xva3RcLj98bm92XC4/fGRlY1wuPykvaSxtb250aHNQYXJzZTpFZSxsb25nTW9udGhzUGFyc2U6RWUsc2hvcnRNb250aHNQYXJzZTpFZSx3ZWVrZGF5czoiem9uZGFnX21hYW5kYWdfZGluc2RhZ193''@;'; put 'put ''b2Vuc2RhZ19kb25kZXJkYWdfdnJpamRhZ196YXRlcmRhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJ6by5fbWEuX2RpLl93by5fZG8uX3ZyLl96YS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InpvX21hX2RpX3dvX2RvX3ZyX3phIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFj''@;'; put 'put ''dDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC1NTS1ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW3ZhbmRhYWcgb21d''@;'; put 'put ''IExUIixuZXh0RGF5OiJbbW9yZ2VuIG9tXSBMVCIsbmV4dFdlZWs6ImRkZGQgW29tXSBMVCIsbGFzdERheToiW2dpc3RlcmVuIG9tXSBMVCIsbGFzdFdlZWs6IlthZmdlbG9wZW5dIGRkZGQgW29tXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib3ZlciAlcyIscGFz''@;'; put 'put ''dDoiJXMgZ2VsZWRlbiIsczoiZWVuIHBhYXIgc2Vjb25kZW4iLHNzOiIlZCBzZWNvbmRlbiIsbToiXHhlOVx4ZTluIG1pbnV1dCIsbW06IiVkIG1pbnV0ZW4iLGg6Ilx4ZTlceGU5biB1dXIiLGhoOiIlZCB1dXIiLGQ6Ilx4ZTlceGU5biBkYWciLGRkOiIlZCBkYWdlbiIsdzoiXHhlOVx4ZTlu''@;'; put 'put ''IHdlZWsiLHd3OiIlZCB3ZWtlbiIsTToiXHhlOVx4ZTluIG1hYW5kIixNTToiJWQgbWFhbmRlbiIseToiXHhlOVx4ZTluIGphYXIiLHl5OiIlZCBqYWFyIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdGV8ZGUpLyxvcmRpbmFsOmZ1bmN0aW9uKGope3JldHVybiBqKygxPT09''@;'; put 'put ''anx8OD09PWp8fGo+PTIwPyJzdGUiOiJkZSIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw0MTUxMDpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoIm5uIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJzX2Fw''@;'; put 'put ''cmlsX21haV9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW4uX2ZlYi5fbWFyc19hcHIuX21haV9qdW5pX2p1bGlfYXVnLl9zZXAuX29rdC5fbm92Ll9kZXMuIi5zcGxpdCgiXyIpLG1vbnRoc1Bh''@;'; put 'put ''cnNlRXhhY3Q6ITAsd2Vla2RheXM6InN1bmRhZ19tXHhlNW5kYWdfdHlzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sYXVyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InN1Ll9tXHhlNS5fdHkuX29uLl90by5fZnIuX2xhdS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InN1X21c''@;'; put 'put ''eGU1X3R5X29uX3RvX2ZyX2xhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBba2wuXSBIOm1tIixMTExMOiJk''@;'; put 'put ''ZGRkIEQuIE1NTU0gWVlZWSBba2wuXSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSSBkYWcga2xva2thXSBMVCIsbmV4dERheToiW0kgbW9yZ29uIGtsb2trYV0gTFQiLG5leHRXZWVrOiJkZGRkIFtrbG9ra2FdIExUIixsYXN0RGF5OiJbSSBnXHhlNXIga2xva2thXSBMVCIsbGFzdFdl''@;'; put 'put ''ZWs6IltGXHhmOHJlZ1x4ZTVhbmRlXSBkZGRkIFtrbG9ra2FdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvbSAlcyIscGFzdDoiJXMgc2lkYW4iLHM6Im5va3JlIHNla3VuZCIsc3M6IiVkIHNla3VuZCIsbToiZWl0IG1pbnV0dCIsbW06IiVkIG1pbnV0dCIsaDoi''@;'; put 'put ''ZWluIHRpbWUiLGhoOiIlZCB0aW1hciIsZDoiZWluIGRhZyIsZGQ6IiVkIGRhZ2FyIix3OiJlaSB2ZWtlIix3dzoiJWQgdmVrZXIiLE06ImVpbiBtXHhlNW5hZCIsTU06IiVkIG1ceGU1bmFkZXIiLHk6ImVpdCBceGU1ciIseXk6IiVkIFx4ZTVyIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTov''@;'; put 'put ''XGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDUyNzk3OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgib2MtbG5jIix7bW9udGhzOntzdGFuZGFsb25lOiJnZW5pXHhlOHJf''@;'; put 'put ''ZmVicmlceGU4cl9tYXJceGU3X2FicmlsX21haV9qdW5oX2p1bGhldF9hZ29zdF9zZXRlbWJyZV9vY3RceGYyYnJlX25vdmVtYnJlX2RlY2VtYnJlIi5zcGxpdCgiXyIpLGZvcm1hdDoiZGUgZ2VuaVx4ZThyX2RlIGZlYnJpXHhlOHJfZGUgbWFyXHhlN19kJ2FicmlsX2RlIG1haV9kZSBqdW5o''@;'; put 'put ''X2RlIGp1bGhldF9kJ2Fnb3N0X2RlIHNldGVtYnJlX2Qnb2N0XHhmMmJyZV9kZSBub3ZlbWJyZV9kZSBkZWNlbWJyZSIuc3BsaXQoIl8iKSxpc0Zvcm1hdDovRFtvRF0/KFxzKStNTU1NL30sbW9udGhzU2hvcnQ6Imdlbi5fZmVici5fbWFyXHhlN19hYnIuX21haV9qdW5oX2p1bGguX2Fnby5f''@;'; put 'put ''c2V0Ll9vY3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkaW1lbmdlX2RpbHVuc19kaW1hcnNfZGltXHhlOGNyZXNfZGlqXHhmMnVzX2RpdmVuZHJlc19kaXNzYWJ0ZSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkZy5fZGwuX2RtLl9k''@;'; put 'put ''Yy5fZGouX2R2Ll9kcy4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRnX2RsX2RtX2RjX2RqX2R2X2RzIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBbZGVd''@;'; put 'put ''IFlZWVkiLGxsOiJEIE1NTSBZWVlZIixMTEw6IkQgTU1NTSBbZGVdIFlZWVkgW2FdIEg6bW0iLGxsbDoiRCBNTU0gWVlZWSwgSDptbSIsTExMTDoiZGRkZCBEIE1NTU0gW2RlXSBZWVlZIFthXSBIOm1tIixsbGxsOiJkZGQgRCBNTU0gWVlZWSwgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb''@;'; put 'put ''dVx4ZThpIGFdIExUIixuZXh0RGF5OiJbZGVtYW4gYV0gTFQiLG5leHRXZWVrOiJkZGRkIFthXSBMVCIsbGFzdERheToiW2lceGU4ciBhXSBMVCIsbGFzdFdlZWs6ImRkZGQgW3Bhc3NhdCBhXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZCdhcXVceGVkICVzIixw''@;'; put 'put ''YXN0OiJmYSAlcyIsczoidW5hcyBzZWdvbmRhcyIsc3M6IiVkIHNlZ29uZGFzIixtOiJ1bmEgbWludXRhIixtbToiJWQgbWludXRhcyIsaDoidW5hIG9yYSIsaGg6IiVkIG9yYXMiLGQ6InVuIGpvcm4iLGRkOiIlZCBqb3JucyIsTToidW4gbWVzIixNTToiJWQgbWVzZXMiLHk6InVuIGFuIix5''@;'; put 'put ''eToiJWQgYW5zIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShyfG58dHxceGU4fGEpLyxvcmRpbmFsOmZ1bmN0aW9uKEUsRWUpe3ZhciBVPTE9PT1FPyJyIjoyPT09RT8ibiI6Mz09PUU/InIiOjQ9PT1FPyJ0IjoiXHhlOCI7cmV0dXJuKCJ3Ij09PUVlfHwiVyI9PT1FZSkmJihV''@;'; put 'put ''PSJhIiksRStVfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSwzNzk0NDpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj17MToiXHUwYTY3IiwyOiJcdTBhNjgiLDM6Ilx1MGE2OSIsNDoiXHUwYTZhIiw1OiJcdTBhNmIiLDY6Ilx1MGE2''@;'; put 'put ''YyIsNzoiXHUwYTZkIiw4OiJcdTBhNmUiLDk6Ilx1MGE2ZiIsMDoiXHUwYTY2In0sRT17Ilx1MGE2NyI6IjEiLCJcdTBhNjgiOiIyIiwiXHUwYTY5IjoiMyIsIlx1MGE2YSI6IjQiLCJcdTBhNmIiOiI1IiwiXHUwYTZjIjoiNiIsIlx1MGE2ZCI6IjciLCJcdTBhNmUiOiI4IiwiXHUwYTZmIjoi''@;'; put 'put ''OSIsIlx1MGE2NiI6IjAifTttZS5kZWZpbmVMb2NhbGUoInBhLWluIix7bW9udGhzOiJcdTBhMWNcdTBhMjhcdTBhMzVcdTBhMzBcdTBhNDBfXHUwYTJiXHUwYTNjXHUwYTMwXHUwYTM1XHUwYTMwXHUwYTQwX1x1MGEyZVx1MGEzZVx1MGEzMFx1MGExYV9cdTBhMDVcdTBhMmFcdTBhNGRcdTBh''@;'; put 'put ''MzBcdTBhNDhcdTBhMzJfXHUwYTJlXHUwYTA4X1x1MGExY1x1MGE0Mlx1MGEyOF9cdTBhMWNcdTBhNDFcdTBhMzJcdTBhM2VcdTBhMDhfXHUwYTA1XHUwYTE3XHUwYTM4XHUwYTI0X1x1MGEzOFx1MGEyNFx1MGE3MFx1MGEyY1x1MGEzMF9cdTBhMDVcdTBhMTVcdTBhMjRcdTBhNDJcdTBhMmNc''@;'; put 'put ''dTBhMzBfXHUwYTI4XHUwYTM1XHUwYTcwXHUwYTJjXHUwYTMwX1x1MGEyNlx1MGEzOFx1MGE3MFx1MGEyY1x1MGEzMCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwYTFjXHUwYTI4XHUwYTM1XHUwYTMwXHUwYTQwX1x1MGEyYlx1MGEzY1x1MGEzMFx1MGEzNVx1MGEzMFx1MGE0MF9cdTBh''@;'; put 'put ''MmVcdTBhM2VcdTBhMzBcdTBhMWFfXHUwYTA1XHUwYTJhXHUwYTRkXHUwYTMwXHUwYTQ4XHUwYTMyX1x1MGEyZVx1MGEwOF9cdTBhMWNcdTBhNDJcdTBhMjhfXHUwYTFjXHUwYTQxXHUwYTMyXHUwYTNlXHUwYTA4X1x1MGEwNVx1MGExN1x1MGEzOFx1MGEyNF9cdTBhMzhcdTBhMjRcdTBhNzBc''@;'; put 'put ''dTBhMmNcdTBhMzBfXHUwYTA1XHUwYTE1XHUwYTI0XHUwYTQyXHUwYTJjXHUwYTMwX1x1MGEyOFx1MGEzNVx1MGE3MFx1MGEyY1x1MGEzMF9cdTBhMjZcdTBhMzhcdTBhNzBcdTBhMmNcdTBhMzAiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MGExMFx1MGEyNFx1MGEzNVx1MGEzZVx1MGEzMF9c''@;'; put 'put ''dTBhMzhcdTBhNGJcdTBhMmVcdTBhMzVcdTBhM2VcdTBhMzBfXHUwYTJlXHUwYTcwXHUwYTE3XHUwYTMyXHUwYTM1XHUwYTNlXHUwYTMwX1x1MGEyY1x1MGE0MVx1MGEyN1x1MGEzNVx1MGEzZVx1MGEzMF9cdTBhMzVcdTBhNDBcdTBhMzBcdTBhMzVcdTBhM2VcdTBhMzBfXHUwYTM4XHUwYTNj''@;'; put 'put ''XHUwYTQxXHUwYTcxXHUwYTE1XHUwYTMwXHUwYTM1XHUwYTNlXHUwYTMwX1x1MGEzOFx1MGEzY1x1MGEyOFx1MGE0MFx1MGExYVx1MGEzMFx1MGEzNVx1MGEzZVx1MGEzMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTBhMTBcdTBhMjRfXHUwYTM4XHUwYTRiXHUwYTJlX1x1MGEyZVx1''@;'; put 'put ''MGE3MFx1MGExN1x1MGEzMl9cdTBhMmNcdTBhNDFcdTBhMjdfXHUwYTM1XHUwYTQwXHUwYTMwX1x1MGEzOFx1MGEzY1x1MGE0MVx1MGExNVx1MGEzMF9cdTBhMzhcdTBhM2NcdTBhMjhcdTBhNDAiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MGExMFx1MGEyNF9cdTBhMzhcdTBhNGJcdTBh''@;'; put 'put ''MmVfXHUwYTJlXHUwYTcwXHUwYTE3XHUwYTMyX1x1MGEyY1x1MGE0MVx1MGEyN19cdTBhMzVcdTBhNDBcdTBhMzBfXHUwYTM4XHUwYTNjXHUwYTQxXHUwYTE1XHUwYTMwX1x1MGEzOFx1MGEzY1x1MGEyOFx1MGE0MCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSBcdTBh''@;'; put 'put ''MzVcdTBhMWNcdTBhNDciLExUUzoiQSBoOm1tOnNzIFx1MGEzNVx1MGExY1x1MGE0NyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBIGg6bW0gXHUwYTM1XHUwYTFjXHUwYTQ3IixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MGEz''@;'; put 'put ''NVx1MGExY1x1MGE0NyJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwYTA1XHUwYTFjXSBMVCIsbmV4dERheToiW1x1MGExNVx1MGEzMl0gTFQiLG5leHRXZWVrOiJbXHUwYTA1XHUwYTE3XHUwYTMyXHUwYTNlXSBkZGRkLCBMVCIsbGFzdERheToiW1x1MGExNVx1MGEzMl0gTFQiLGxhc3RXZWVr''@;'; put 'put ''OiJbXHUwYTJhXHUwYTNmXHUwYTFiXHUwYTMyXHUwYTQ3XSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwYTM1XHUwYTNmXHUwYTcxXHUwYTFhIixwYXN0OiIlcyBcdTBhMmFcdTBhM2ZcdTBhMWJcdTBhMzJcdTBhNDciLHM6Ilx1MGExNVx1MGE0''@;'; put 'put ''MVx1MGExZCBcdTBhMzhcdTBhMTVcdTBhM2ZcdTBhNzBcdTBhMWYiLHNzOiIlZCBcdTBhMzhcdTBhMTVcdTBhM2ZcdTBhNzBcdTBhMWYiLG06Ilx1MGEwN1x1MGExNSBcdTBhMmVcdTBhM2ZcdTBhNzBcdTBhMWYiLG1tOiIlZCBcdTBhMmVcdTBhM2ZcdTBhNzBcdTBhMWYiLGg6Ilx1MGEwN1x1''@;'; put 'put ''MGE3MVx1MGExNSBcdTBhMThcdTBhNzBcdTBhMWZcdTBhM2UiLGhoOiIlZCBcdTBhMThcdTBhNzBcdTBhMWZcdTBhNDciLGQ6Ilx1MGEwN1x1MGE3MVx1MGExNSBcdTBhMjZcdTBhM2ZcdTBhMjgiLGRkOiIlZCBcdTBhMjZcdTBhM2ZcdTBhMjgiLE06Ilx1MGEwN1x1MGE3MVx1MGExNSBcdTBh''@;'; put 'put ''MmVcdTBhMzlcdTBhNDBcdTBhMjhcdTBhM2UiLE1NOiIlZCBcdTBhMmVcdTBhMzlcdTBhNDBcdTBhMjhcdTBhNDciLHk6Ilx1MGEwN1x1MGE3MVx1MGExNSBcdTBhMzhcdTBhM2VcdTBhMzIiLHl5OiIlZCBcdTBhMzhcdTBhM2VcdTBhMzIifSxwcmVwYXJzZTpmdW5jdGlvbihVKXtyZXR1cm4g''@;'; put 'put ''VS5yZXBsYWNlKC9bXHUwYTY3XHUwYTY4XHUwYTY5XHUwYTZhXHUwYTZiXHUwYTZjXHUwYTZkXHUwYTZlXHUwYTZmXHUwYTY2XS9nLGZ1bmN0aW9uKFEpe3JldHVybiBFW1FdfSl9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oVSl7cmV0dXJuIFUucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihRKXtyZXR1''@;'; put 'put ''cm4gQltRXX0pfSxtZXJpZGllbVBhcnNlOi9cdTBhMzBcdTBhM2VcdTBhMjR8XHUwYTM4XHUwYTM1XHUwYTQ3XHUwYTMwfFx1MGEyNlx1MGE0MVx1MGEyYVx1MGEzOVx1MGEzZlx1MGEzMHxcdTBhMzhcdTBhM2NcdTBhM2VcdTBhMmUvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihVLFEpe3JldHVy''@;'; put 'put ''biAxMj09PVUmJihVPTApLCJcdTBhMzBcdTBhM2VcdTBhMjQiPT09UT9VPDQ/VTpVKzEyOiJcdTBhMzhcdTBhMzVcdTBhNDdcdTBhMzAiPT09UT9VOiJcdTBhMjZcdTBhNDFcdTBhMmFcdTBhMzlcdTBhM2ZcdTBhMzAiPT09UT9VPj0xMD9VOlUrMTI6Ilx1MGEzOFx1MGEzY1x1MGEzZVx1MGEy''@;'; put 'put ''ZSI9PT1RP1UrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihVLFEsail7cmV0dXJuIFU8ND8iXHUwYTMwXHUwYTNlXHUwYTI0IjpVPDEwPyJcdTBhMzhcdTBhMzVcdTBhNDdcdTBhMzAiOlU8MTc/Ilx1MGEyNlx1MGE0MVx1MGEyYVx1MGEzOVx1MGEzZlx1MGEzMCI6VTwyMD8iXHUwYTM4''@;'; put 'put ''XHUwYTNjXHUwYTNlXHUwYTJlIjoiXHUwYTMwXHUwYTNlXHUwYTI0In0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KEwoMTU0MzkpKX0sMTYwNTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj0ic3R5Y3plXHUwMTQ0X2x1dHlfbWFyemVjX2t3aWVjaWVc''@;'; put 'put ''dTAxNDRfbWFqX2N6ZXJ3aWVjX2xpcGllY19zaWVycGllXHUwMTQ0X3dyemVzaWVcdTAxNDRfcGFcdTAxN2Fkemllcm5pa19saXN0b3BhZF9ncnVkemllXHUwMTQ0Ii5zcGxpdCgiXyIpLEU9InN0eWN6bmlhX2x1dGVnb19tYXJjYV9rd2lldG5pYV9tYWphX2N6ZXJ3Y2FfbGlwY2Ffc2llcnBu''@;'; put 'put ''aWFfd3J6ZVx1MDE1Ym5pYV9wYVx1MDE3YWR6aWVybmlrYV9saXN0b3BhZGFfZ3J1ZG5pYSIuc3BsaXQoIl8iKSxFZT1bL15zdHkvaSwvXmx1dC9pLC9ebWFyL2ksL15rd2kvaSwvXm1hai9pLC9eY3plL2ksL15saXAvaSwvXnNpZS9pLC9ed3J6L2ksL15wYVx1MDE3YS9pLC9ebGlzL2ksL15n''@;'; put 'put ''cnUvaV07ZnVuY3Rpb24gVShyZSl7cmV0dXJuIHJlJTEwPDUmJnJlJTEwPjEmJn5+KHJlLzEwKSUxMCE9MX1mdW5jdGlvbiBRKHJlLGFlLFkpe3ZhciBXPXJlKyIgIjtzd2l0Y2goWSl7Y2FzZSJzcyI6cmV0dXJuIFcrKFUocmUpPyJzZWt1bmR5Ijoic2VrdW5kIik7Y2FzZSJtIjpyZXR1cm4g''@;'; put 'put ''YWU/Im1pbnV0YSI6Im1pbnV0XHUwMTE5IjtjYXNlIm1tIjpyZXR1cm4gVysoVShyZSk/Im1pbnV0eSI6Im1pbnV0Iik7Y2FzZSJoIjpyZXR1cm4gYWU/ImdvZHppbmEiOiJnb2R6aW5cdTAxMTkiO2Nhc2UiaGgiOnJldHVybiBXKyhVKHJlKT8iZ29kemlueSI6ImdvZHppbiIpO2Nhc2Uid3ci''@;'; put 'put ''OnJldHVybiBXKyhVKHJlKT8idHlnb2RuaWUiOiJ0eWdvZG5pIik7Y2FzZSJNTSI6cmV0dXJuIFcrKFUocmUpPyJtaWVzaVx1MDEwNWNlIjoibWllc2lcdTAxMTljeSIpO2Nhc2UieXkiOnJldHVybiBXKyhVKHJlKT8ibGF0YSI6ImxhdCIpfX1tZS5kZWZpbmVMb2NhbGUoInBsIix7bW9udGhz''@;'; put 'put ''OmZ1bmN0aW9uKHJlLGFlKXtyZXR1cm4gcmU/L0QgTU1NTS8udGVzdChhZSk/RVtyZS5tb250aCgpXTpCW3JlLm1vbnRoKCldOkJ9LG1vbnRoc1Nob3J0OiJzdHlfbHV0X21hcl9rd2lfbWFqX2N6ZV9saXBfc2llX3dyel9wYVx1MDE3YV9saXNfZ3J1Ii5zcGxpdCgiXyIpLG1vbnRoc1BhcnNl''@;'; put 'put ''OkVlLGxvbmdNb250aHNQYXJzZTpFZSxzaG9ydE1vbnRoc1BhcnNlOkVlLHdlZWtkYXlzOiJuaWVkemllbGFfcG9uaWVkemlhXHUwMTQyZWtfd3RvcmVrX1x1MDE1YnJvZGFfY3p3YXJ0ZWtfcGlcdTAxMDV0ZWtfc29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5kel9wb25fd3Rf''@;'; put 'put ''XHUwMTVicl9jendfcHRfc29iIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJOZF9Qbl9XdF9cdTAxNWFyX0N6X1B0X1NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1N''@;'; put 'put ''TU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0R6aVx1MDE1YiBvXSBMVCIsbmV4dERheToiW0p1dHJvIG9dIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltXIG5p''@;'; put 'put ''ZWR6aWVsXHUwMTE5IG9dIExUIjtjYXNlIDI6cmV0dXJuIltXZSB3dG9yZWsgb10gTFQiO2Nhc2UgMzpyZXR1cm4iW1cgXHUwMTVicm9kXHUwMTE5IG9dIExUIjtjYXNlIDY6cmV0dXJuIltXIHNvYm90XHUwMTE5IG9dIExUIjtkZWZhdWx0OnJldHVybiJbV10gZGRkZCBbb10gTFQifX0sbGFz''@;'; put 'put ''dERheToiW1djem9yYWogb10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW1cgemVzelx1MDE0Mlx1MDEwNSBuaWVkemllbFx1MDExOSBvXSBMVCI7Y2FzZSAzOnJldHVybiJbVyB6ZXN6XHUwMTQyXHUwMTA1IFx1MDE1YnJvZFx1MDEx''@;'; put 'put ''OSBvXSBMVCI7Y2FzZSA2OnJldHVybiJbVyB6ZXN6XHUwMTQyXHUwMTA1IHNvYm90XHUwMTE5IG9dIExUIjtkZWZhdWx0OnJldHVybiJbVyB6ZXN6XHUwMTQyeV0gZGRkZCBbb10gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6IiVzIHRlbXUi''@;'; put 'put ''LHM6ImtpbGthIHNla3VuZCIsc3M6USxtOlEsbW06USxoOlEsaGg6USxkOiIxIGR6aWVcdTAxNDQiLGRkOiIlZCBkbmkiLHc6InR5ZHppZVx1MDE0NCIsd3c6USxNOiJtaWVzaVx1MDEwNWMiLE1NOlEseToicm9rIix5eTpRfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9y''@;'; put 'put ''ZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sNzM4NDA6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJwdC1iciIse21vbnRoczoiamFuZWlyb19mZXZlcmVpcm9fbWFyXHhlN29fYWJyaWxfbWFp''@;'; put 'put ''b19qdW5ob19qdWxob19hZ29zdG9fc2V0ZW1icm9fb3V0dWJyb19ub3ZlbWJyb19kZXplbWJybyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2Zldl9tYXJfYWJyX21haV9qdW5fanVsX2Fnb19zZXRfb3V0X25vdl9kZXoiLnNwbGl0KCJfIiksd2Vla2RheXM6ImRvbWluZ29fc2VndW5k''@;'; put 'put ''YS1mZWlyYV90ZXJceGU3YS1mZWlyYV9xdWFydGEtZmVpcmFfcXVpbnRhLWZlaXJhX3NleHRhLWZlaXJhX3NceGUxYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb21fc2VnX3Rlcl9xdWFfcXVpX3NleF9zXHhlMWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvXzJceGFhXzNc''@;'; put 'put ''eGFhXzRceGFhXzVceGFhXzZceGFhX3NceGUxIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtk''@;'; put 'put ''ZV0gWVlZWSBbXHhlMHNdIEhIOm1tIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgW1x4ZTBzXSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSG9qZSBceGUwc10gTFQiLG5leHREYXk6IltBbWFuaFx4ZTMgXHhlMHNdIExUIixuZXh0V2VlazoiZGRkZCBbXHhlMHNdIExU''@;'; put 'put ''IixsYXN0RGF5OiJbT250ZW0gXHhlMHNdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5kYXkoKXx8Nj09PXRoaXMuZGF5KCk/IltceGRhbHRpbW9dIGRkZGQgW1x4ZTBzXSBMVCI6IltceGRhbHRpbWFdIGRkZGQgW1x4ZTBzXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVs''@;'; put 'put ''YXRpdmVUaW1lOntmdXR1cmU6ImVtICVzIixwYXN0OiJoXHhlMSAlcyIsczoicG91Y29zIHNlZ3VuZG9zIixzczoiJWQgc2VndW5kb3MiLG06InVtIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVtYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVtIGRpYSIsZGQ6IiVkIGRpYXMiLE06InVt''@;'; put 'put ''IG1ceGVhcyIsTU06IiVkIG1lc2VzIix5OiJ1bSBhbm8iLHl5OiIlZCBhbm9zIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx4YmEvLG9yZGluYWw6IiVkXHhiYSIsaW52YWxpZERhdGU6IkRhdGEgaW52XHhlMWxpZGEifSl9KEwoMTU0MzkpKX0sNTQyMjU6ZnVuY3Rpb24oWGUs''@;'; put 'put ''SmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJwdCIse21vbnRoczoiamFuZWlyb19mZXZlcmVpcm9fbWFyXHhlN29fYWJyaWxfbWFpb19qdW5ob19qdWxob19hZ29zdG9fc2V0ZW1icm9fb3V0dWJyb19ub3ZlbWJyb19kZXplbWJybyIuc3BsaXQoIl8i''@;'; put 'put ''KSxtb250aHNTaG9ydDoiamFuX2Zldl9tYXJfYWJyX21haV9qdW5fanVsX2Fnb19zZXRfb3V0X25vdl9kZXoiLnNwbGl0KCJfIiksd2Vla2RheXM6IkRvbWluZ29fU2VndW5kYS1mZWlyYV9UZXJceGU3YS1mZWlyYV9RdWFydGEtZmVpcmFfUXVpbnRhLWZlaXJhX1NleHRhLWZlaXJhX1NceGUx''@;'; put 'put ''YmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJEb21fU2VnX1Rlcl9RdWFfUXVpX1NleF9TXHhlMWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRvXzJceGFhXzNceGFhXzRceGFhXzVceGFhXzZceGFhX1NceGUxIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25n''@;'; put 'put ''RGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6''@;'; put 'put ''e3NhbWVEYXk6IltIb2plIFx4ZTBzXSBMVCIsbmV4dERheToiW0FtYW5oXHhlMyBceGUwc10gTFQiLG5leHRXZWVrOiJkZGRkIFtceGUwc10gTFQiLGxhc3REYXk6IltPbnRlbSBceGUwc10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmRheSgpfHw2PT09dGhpcy5k''@;'; put 'put ''YXkoKT8iW1x4ZGFsdGltb10gZGRkZCBbXHhlMHNdIExUIjoiW1x4ZGFsdGltYV0gZGRkZCBbXHhlMHNdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZW0gJXMiLHBhc3Q6ImhceGUxICVzIixzOiJzZWd1bmRvcyIsc3M6IiVkIHNlZ3VuZG9zIixtOiJ1bSBtaW51''@;'; put 'put ''dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bWEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1bSBkaWEiLGRkOiIlZCBkaWFzIix3OiJ1bWEgc2VtYW5hIix3dzoiJWQgc2VtYW5hcyIsTToidW0gbVx4ZWFzIixNTToiJWQgbWVzZXMiLHk6InVtIGFubyIseXk6IiVkIGFub3MifSxkYXlPZk1vbnRo''@;'; put 'put ''T3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHhiYS8sb3JkaW5hbDoiJWRceGJhIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw0NTEyODpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBCKEVlLFUsUSl7dmFyIHJlPSIgIjtyZXR1cm4o''@;'; put 'put ''RWUlMTAwPj0yMHx8RWU+PTEwMCYmRWUlMTAwPT0wKSYmKHJlPSIgZGUgIiksRWUrcmUre3NzOiJzZWN1bmRlIixtbToibWludXRlIixoaDoib3JlIixkZDoiemlsZSIsd3c6InNcdTAxMDNwdFx1MDEwM21ceGUybmkiLE1NOiJsdW5pIix5eToiYW5pIn1bUV19bWUuZGVmaW5lTG9jYWxlKCJy''@;'; put 'put ''byIse21vbnRoczoiaWFudWFyaWVfZmVicnVhcmllX21hcnRpZV9hcHJpbGllX21haV9pdW5pZV9pdWxpZV9hdWd1c3Rfc2VwdGVtYnJpZV9vY3RvbWJyaWVfbm9pZW1icmllX2RlY2VtYnJpZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiaWFuLl9mZWIuX21hcnQuX2Fwci5fbWFpX2l1bi5f''@;'; put 'put ''aXVsLl9hdWcuX3NlcHQuX29jdC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImR1bWluaWNcdTAxMDNfbHVuaV9tYXJcdTAyMWJpX21pZXJjdXJpX2pvaV92aW5lcmlfc1x4ZTJtYlx1MDEwM3RcdTAxMDMiLnNwbGl0KCJfIiksd2Vla2RheXNT''@;'; put 'put ''aG9ydDoiRHVtX0x1bl9NYXJfTWllX0pvaV9WaW5fU1x4ZTJtIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEdV9MdV9NYV9NaV9Kb19WaV9TXHhlMiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZ''@;'; put 'put ''WVlZIixMTEw6IkQgTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2F6aSBsYV0gTFQiLG5leHREYXk6IlttXHhlMmluZSBsYV0gTFQiLG5leHRXZWVrOiJkZGRkIFtsYV0gTFQiLGxhc3REYXk6IltpZXJpIGxhXSBMVCIs''@;'; put 'put ''bGFzdFdlZWs6Iltmb3N0YV0gZGRkZCBbbGFdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJwZXN0ZSAlcyIscGFzdDoiJXMgXHhlZW4gdXJtXHUwMTAzIixzOiJjXHhlMnRldmEgc2VjdW5kZSIsc3M6QixtOiJ1biBtaW51dCIsbW06QixoOiJvIG9yXHUwMTAzIixo''@;'; put 'put ''aDpCLGQ6Im8gemkiLGRkOkIsdzoibyBzXHUwMTAzcHRcdTAxMDNtXHhlMm5cdTAxMDMiLHd3OkIsTToibyBsdW5cdTAxMDMiLE1NOkIseToidW4gYW4iLHl5OkJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDM1MTI3OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7''@;'; put 'put ''InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEUoUSxqLHJlKXtyZXR1cm4ibSI9PT1yZT9qPyJcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0MzAiOiJcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0NDMiOlErIiAiK2Z1bmN0aW9uIEIoUSxqKXt2YXIgcmU9US5zcGxpdCgi''@;'; put 'put ''XyIpO3JldHVybiBqJTEwPT0xJiZqJTEwMCE9MTE/cmVbMF06aiUxMD49MiYmaiUxMDw9NCYmKGolMTAwPDEwfHxqJTEwMD49MjApP3JlWzFdOnJlWzJdfSh7c3M6aj8iXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDMwX1x1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1''@;'; put 'put ''MDQzZFx1MDQzNFx1MDQ0Yl9cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiOiJcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0NDNfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDRiX1x1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0''@;'; put 'put ''M1x1MDQzZFx1MDQzNCIsbW06aj8iXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDMwX1x1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQ0Yl9cdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDIiOiJcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0NDNf''@;'; put 'put ''XHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDRiX1x1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0MiIsaGg6Ilx1MDQ0N1x1MDQzMFx1MDQ0MV9cdTA0NDdcdTA0MzBcdTA0NDFcdTA0MzBfXHUwNDQ3XHUwNDMwXHUwNDQxXHUwNDNlXHUwNDMyIixkZDoiXHUwNDM0XHUwNDM1''@;'; put 'put ''XHUwNDNkXHUwNDRjX1x1MDQzNFx1MDQzZFx1MDQ0Zl9cdTA0MzRcdTA0M2RcdTA0MzVcdTA0MzkiLHd3OiJcdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2JcdTA0NGZfXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDNiXHUwNDM4X1x1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQz''@;'; put 'put ''Ylx1MDQ0YyIsTU06Ilx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0Nl9cdTA0M2NcdTA0MzVcdTA0NDFcdTA0NGZcdTA0NDZcdTA0MzBfXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDRmXHUwNDQ2XHUwNDM1XHUwNDMyIix5eToiXHUwNDMzXHUwNDNlXHUwNDM0X1x1MDQzM1x1MDQzZVx1MDQz''@;'; put 'put ''NFx1MDQzMF9cdTA0M2JcdTA0MzVcdTA0NDIifVtyZV0sK1EpfXZhciBFZT1bL15cdTA0NGZcdTA0M2RcdTA0MzIvaSwvXlx1MDQ0NFx1MDQzNVx1MDQzMi9pLC9eXHUwNDNjXHUwNDMwXHUwNDQwL2ksL15cdTA0MzBcdTA0M2ZcdTA0NDAvaSwvXlx1MDQzY1x1MDQzMFtcdTA0MzlcdTA0NGZd''@;'; put 'put ''L2ksL15cdTA0MzhcdTA0NGVcdTA0M2QvaSwvXlx1MDQzOFx1MDQ0ZVx1MDQzYi9pLC9eXHUwNDMwXHUwNDMyXHUwNDMzL2ksL15cdTA0NDFcdTA0MzVcdTA0M2QvaSwvXlx1MDQzZVx1MDQzYVx1MDQ0Mi9pLC9eXHUwNDNkXHUwNDNlXHUwNDRmL2ksL15cdTA0MzRcdTA0MzVcdTA0M2EvaV07''@;'; put 'put ''bWUuZGVmaW5lTG9jYWxlKCJydSIse21vbnRoczp7Zm9ybWF0OiJcdTA0NGZcdTA0M2RcdTA0MzJcdTA0MzBcdTA0NDBcdTA0NGZfXHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwXHUwNDMwXHUwNDNiXHUwNDRmX1x1MDQzY1x1MDQzMFx1MDQ0MFx1MDQ0Mlx1MDQzMF9cdTA0MzBcdTA0M2ZcdTA0''@;'; put 'put ''NDBcdTA0MzVcdTA0M2JcdTA0NGZfXHUwNDNjXHUwNDMwXHUwNDRmX1x1MDQzOFx1MDQ0ZVx1MDQzZFx1MDQ0Zl9cdTA0MzhcdTA0NGVcdTA0M2JcdTA0NGZfXHUwNDMwXHUwNDMyXHUwNDMzXHUwNDQzXHUwNDQxXHUwNDQyXHUwNDMwX1x1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mlx1MDQ0Zlx1''@;'; put 'put ''MDQzMVx1MDQ0MFx1MDQ0Zl9cdTA0M2VcdTA0M2FcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBcdTA0NGZfXHUwNDNkXHUwNDNlXHUwNDRmXHUwNDMxXHUwNDQwXHUwNDRmX1x1MDQzNFx1MDQzNVx1MDQzYVx1MDQzMFx1MDQzMVx1MDQ0MFx1MDQ0ZiIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJc''@;'; put 'put ''dTA0NGZcdTA0M2RcdTA0MzJcdTA0MzBcdTA0NDBcdTA0NGNfXHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwXHUwNDMwXHUwNDNiXHUwNDRjX1x1MDQzY1x1MDQzMFx1MDQ0MFx1MDQ0Ml9cdTA0MzBcdTA0M2ZcdTA0NDBcdTA0MzVcdTA0M2JcdTA0NGNfXHUwNDNjXHUwNDMwXHUwNDM5X1x1MDQz''@;'; put 'put ''OFx1MDQ0ZVx1MDQzZFx1MDQ0Y19cdTA0MzhcdTA0NGVcdTA0M2JcdTA0NGNfXHUwNDMwXHUwNDMyXHUwNDMzXHUwNDQzXHUwNDQxXHUwNDQyX1x1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mlx1MDQ0Zlx1MDQzMVx1MDQ0MFx1MDQ0Y19cdTA0M2VcdTA0M2FcdTA0NDJcdTA0NGZcdTA0MzFcdTA0''@;'; put 'put ''NDBcdTA0NGNfXHUwNDNkXHUwNDNlXHUwNDRmXHUwNDMxXHUwNDQwXHUwNDRjX1x1MDQzNFx1MDQzNVx1MDQzYVx1MDQzMFx1MDQzMVx1MDQ0MFx1MDQ0YyIuc3BsaXQoIl8iKX0sbW9udGhzU2hvcnQ6e2Zvcm1hdDoiXHUwNDRmXHUwNDNkXHUwNDMyLl9cdTA0NDRcdTA0MzVcdTA0MzJcdTA0''@;'; put 'put ''NDAuX1x1MDQzY1x1MDQzMFx1MDQ0MC5fXHUwNDMwXHUwNDNmXHUwNDQwLl9cdTA0M2NcdTA0MzBcdTA0NGZfXHUwNDM4XHUwNDRlXHUwNDNkXHUwNDRmX1x1MDQzOFx1MDQ0ZVx1MDQzYlx1MDQ0Zl9cdTA0MzBcdTA0MzJcdTA0MzMuX1x1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mi5fXHUwNDNl''@;'; put 'put ''XHUwNDNhXHUwNDQyLl9cdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzEuX1x1MDQzNFx1MDQzNVx1MDQzYS4iLnNwbGl0KCJfIiksc3RhbmRhbG9uZToiXHUwNDRmXHUwNDNkXHUwNDMyLl9cdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDAuX1x1MDQzY1x1MDQzMFx1MDQ0MFx1MDQ0Ml9cdTA0MzBcdTA0''@;'; put 'put ''M2ZcdTA0NDAuX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0MzhcdTA0NGVcdTA0M2RcdTA0NGNfXHUwNDM4XHUwNDRlXHUwNDNiXHUwNDRjX1x1MDQzMFx1MDQzMlx1MDQzMy5fXHUwNDQxXHUwNDM1XHUwNDNkXHUwNDQyLl9cdTA0M2VcdTA0M2FcdTA0NDIuX1x1MDQzZFx1MDQzZVx1MDQ0Zlx1''@;'; put 'put ''MDQzMS5fXHUwNDM0XHUwNDM1XHUwNDNhLiIuc3BsaXQoIl8iKX0sd2Vla2RheXM6e3N0YW5kYWxvbmU6Ilx1MDQzMlx1MDQzZVx1MDQ0MVx1MDQzYVx1MDQ0MFx1MDQzNVx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Y1x1MDQzNV9cdTA0M2ZcdTA0M2VcdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVc''@;'; put 'put ''dTA0M2JcdTA0NGNcdTA0M2RcdTA0MzhcdTA0M2FfXHUwNDMyXHUwNDQyXHUwNDNlXHUwNDQwXHUwNDNkXHUwNDM4XHUwNDNhX1x1MDQ0MVx1MDQ0MFx1MDQzNVx1MDQzNFx1MDQzMF9cdTA0NDdcdTA0MzVcdTA0NDJcdTA0MzJcdTA0MzVcdTA0NDBcdTA0MzNfXHUwNDNmXHUwNDRmXHUwNDQy''@;'; put 'put ''XHUwNDNkXHUwNDM4XHUwNDQ2XHUwNDMwX1x1MDQ0MVx1MDQ0M1x1MDQzMVx1MDQzMVx1MDQzZVx1MDQ0Mlx1MDQzMCIuc3BsaXQoIl8iKSxmb3JtYXQ6Ilx1MDQzMlx1MDQzZVx1MDQ0MVx1MDQzYVx1MDQ0MFx1MDQzNVx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Y1x1MDQzNV9cdTA0M2ZcdTA0''@;'; put 'put ''M2VcdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2JcdTA0NGNcdTA0M2RcdTA0MzhcdTA0M2FfXHUwNDMyXHUwNDQyXHUwNDNlXHUwNDQwXHUwNDNkXHUwNDM4XHUwNDNhX1x1MDQ0MVx1MDQ0MFx1MDQzNVx1MDQzNFx1MDQ0M19cdTA0NDdcdTA0MzVcdTA0NDJcdTA0MzJcdTA0MzVcdTA0''@;'; put 'put ''NDBcdTA0MzNfXHUwNDNmXHUwNDRmXHUwNDQyXHUwNDNkXHUwNDM4XHUwNDQ2XHUwNDQzX1x1MDQ0MVx1MDQ0M1x1MDQzMVx1MDQzMVx1MDQzZVx1MDQ0Mlx1MDQ0MyIuc3BsaXQoIl8iKSxpc0Zvcm1hdDovXFsgP1tcdTA0MTJcdTA0MzJdID8oPzpcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhc''@;'; put 'put ''dTA0M2JcdTA0NDNcdTA0NGV8XHUwNDQxXHUwNDNiXHUwNDM1XHUwNDM0XHUwNDQzXHUwNDRlXHUwNDQ5XHUwNDQzXHUwNDRlfFx1MDQ0ZFx1MDQ0Mlx1MDQ0Myk/ID9dID9kZGRkL30sd2Vla2RheXNTaG9ydDoiXHUwNDMyXHUwNDQxX1x1MDQzZlx1MDQzZF9cdTA0MzJcdTA0NDJfXHUwNDQx''@;'; put 'put ''XHUwNDQwX1x1MDQ0N1x1MDQ0Ml9cdTA0M2ZcdTA0NDJfXHUwNDQxXHUwNDMxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA0MzJcdTA0NDFfXHUwNDNmXHUwNDNkX1x1MDQzMlx1MDQ0Ml9cdTA0NDFcdTA0NDBfXHUwNDQ3XHUwNDQyX1x1MDQzZlx1MDQ0Ml9cdTA0NDFcdTA0MzEiLnNw''@;'; put 'put ''bGl0KCJfIiksbW9udGhzUGFyc2U6RWUsbG9uZ01vbnRoc1BhcnNlOkVlLHNob3J0TW9udGhzUGFyc2U6RWUsbW9udGhzUmVnZXg6L14oXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwW1x1MDQ0Y1x1MDQ0Zl18XHUwNDRmXHUwNDNkXHUwNDMyXC4/fFx1MDQ0NFx1MDQzNVx1MDQzMlx1''@;'; put 'put ''MDQ0MFx1MDQzMFx1MDQzYltcdTA0NGNcdTA0NGZdfFx1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MD9cLj98XHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyXHUwNDMwP3xcdTA0M2NcdTA0MzBcdTA0NDBcLj98XHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiW1x1MDQ0Y1x1MDQ0Zl18XHUwNDMw''@;'; put 'put ''XHUwNDNmXHUwNDQwXC4/fFx1MDQzY1x1MDQzMFtcdTA0MzlcdTA0NGZdfFx1MDQzOFx1MDQ0ZVx1MDQzZFtcdTA0NGNcdTA0NGZdfFx1MDQzOFx1MDQ0ZVx1MDQzZFwuP3xcdTA0MzhcdTA0NGVcdTA0M2JbXHUwNDRjXHUwNDRmXXxcdTA0MzhcdTA0NGVcdTA0M2JcLj98XHUwNDMwXHUwNDMy''@;'; put 'put ''XHUwNDMzXHUwNDQzXHUwNDQxXHUwNDQyXHUwNDMwP3xcdTA0MzBcdTA0MzJcdTA0MzNcLj98XHUwNDQxXHUwNDM1XHUwNDNkXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwW1x1MDQ0Y1x1MDQ0Zl18XHUwNDQxXHUwNDM1XHUwNDNkXHUwNDQyP1wuP3xcdTA0M2VcdTA0M2FcdTA0NDJcdTA0NGZc''@;'; put 'put ''dTA0MzFcdTA0NDBbXHUwNDRjXHUwNDRmXXxcdTA0M2VcdTA0M2FcdTA0NDJcLj98XHUwNDNkXHUwNDNlXHUwNDRmXHUwNDMxXHUwNDQwW1x1MDQ0Y1x1MDQ0Zl18XHUwNDNkXHUwNDNlXHUwNDRmXHUwNDMxP1wuP3xcdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDBbXHUwNDRj''@;'; put 'put ''XHUwNDRmXXxcdTA0MzRcdTA0MzVcdTA0M2FcLj8pL2ksbW9udGhzU2hvcnRSZWdleDovXihcdTA0NGZcdTA0M2RcdTA0MzJcdTA0MzBcdTA0NDBbXHUwNDRjXHUwNDRmXXxcdTA0NGZcdTA0M2RcdTA0MzJcLj98XHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwXHUwNDMwXHUwNDNiW1x1MDQ0Y1x1''@;'; put 'put ''MDQ0Zl18XHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwP1wuP3xcdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJcdTA0MzA/fFx1MDQzY1x1MDQzMFx1MDQ0MFwuP3xcdTA0MzBcdTA0M2ZcdTA0NDBcdTA0MzVcdTA0M2JbXHUwNDRjXHUwNDRmXXxcdTA0MzBcdTA0M2ZcdTA0NDBcLj98XHUwNDNjXHUw''@;'; put 'put ''NDMwW1x1MDQzOVx1MDQ0Zl18XHUwNDM4XHUwNDRlXHUwNDNkW1x1MDQ0Y1x1MDQ0Zl18XHUwNDM4XHUwNDRlXHUwNDNkXC4/fFx1MDQzOFx1MDQ0ZVx1MDQzYltcdTA0NGNcdTA0NGZdfFx1MDQzOFx1MDQ0ZVx1MDQzYlwuP3xcdTA0MzBcdTA0MzJcdTA0MzNcdTA0NDNcdTA0NDFcdTA0NDJc''@;'; put 'put ''dTA0MzA/fFx1MDQzMFx1MDQzMlx1MDQzM1wuP3xcdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBbXHUwNDRjXHUwNDRmXXxcdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDI/XC4/fFx1MDQzZVx1MDQzYVx1MDQ0Mlx1MDQ0Zlx1MDQzMVx1MDQ0MFtcdTA0NGNcdTA0NGZd''@;'; put 'put ''fFx1MDQzZVx1MDQzYVx1MDQ0MlwuP3xcdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzFcdTA0NDBbXHUwNDRjXHUwNDRmXXxcdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzE/XC4/fFx1MDQzNFx1MDQzNVx1MDQzYVx1MDQzMFx1MDQzMVx1MDQ0MFtcdTA0NGNcdTA0NGZdfFx1MDQzNFx1MDQzNVx1MDQz''@;'; put 'put ''YVwuPykvaSxtb250aHNTdHJpY3RSZWdleDovXihcdTA0NGZcdTA0M2RcdTA0MzJcdTA0MzBcdTA0NDBbXHUwNDRmXHUwNDRjXXxcdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDBcdTA0MzBcdTA0M2JbXHUwNDRmXHUwNDRjXXxcdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJcdTA0MzA/fFx1MDQzMFx1''@;'; put 'put ''MDQzZlx1MDQ0MFx1MDQzNVx1MDQzYltcdTA0NGZcdTA0NGNdfFx1MDQzY1x1MDQzMFtcdTA0NGZcdTA0MzldfFx1MDQzOFx1MDQ0ZVx1MDQzZFtcdTA0NGZcdTA0NGNdfFx1MDQzOFx1MDQ0ZVx1MDQzYltcdTA0NGZcdTA0NGNdfFx1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0''@;'; put 'put ''Mlx1MDQzMD98XHUwNDQxXHUwNDM1XHUwNDNkXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwW1x1MDQ0Zlx1MDQ0Y118XHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwW1x1MDQ0Zlx1MDQ0Y118XHUwNDNkXHUwNDNlXHUwNDRmXHUwNDMxXHUwNDQwW1x1MDQ0Zlx1MDQ0Y118XHUw''@;'; put 'put ''NDM0XHUwNDM1XHUwNDNhXHUwNDMwXHUwNDMxXHUwNDQwW1x1MDQ0Zlx1MDQ0Y10pL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXihcdTA0NGZcdTA0M2RcdTA0MzJcLnxcdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDA/XC58XHUwNDNjXHUwNDMwXHUwNDQwW1x1MDQ0Mi5dfFx1MDQzMFx1MDQz''@;'; put 'put ''Zlx1MDQ0MFwufFx1MDQzY1x1MDQzMFtcdTA0NGZcdTA0MzldfFx1MDQzOFx1MDQ0ZVx1MDQzZFtcdTA0NGNcdTA0NGYuXXxcdTA0MzhcdTA0NGVcdTA0M2JbXHUwNDRjXHUwNDRmLl18XHUwNDMwXHUwNDMyXHUwNDMzXC58XHUwNDQxXHUwNDM1XHUwNDNkXHUwNDQyP1wufFx1MDQzZVx1MDQz''@;'; put 'put ''YVx1MDQ0MlwufFx1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMT9cLnxcdTA0MzRcdTA0MzVcdTA0M2FcLikvaSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIFx1MDQzMy4iLExMTDoiRCBNTU1NIFlZWVkgXHUwNDMz''@;'; put 'put ''LiwgSDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgXHUwNDMzLiwgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDIxXHUwNDM1XHUwNDMzXHUwNDNlXHUwNDM0XHUwNDNkXHUwNDRmLCBcdTA0MzJdIExUIixuZXh0RGF5OiJbXHUwNDE3XHUwNDMwXHUwNDMyXHUwNDQyXHUwNDQw''@;'; put 'put ''XHUwNDMwLCBcdTA0MzJdIExUIixsYXN0RGF5OiJbXHUwNDEyXHUwNDQ3XHUwNDM1XHUwNDQwXHUwNDMwLCBcdTA0MzJdIExUIixuZXh0V2VlazpmdW5jdGlvbihRKXtpZihRLndlZWsoKT09PXRoaXMud2VlaygpKXJldHVybiAyPT09dGhpcy5kYXkoKT8iW1x1MDQxMlx1MDQzZV0gZGRkZCwg''@;'; put 'put ''W1x1MDQzMl0gTFQiOiJbXHUwNDEyXSBkZGRkLCBbXHUwNDMyXSBMVCI7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW1x1MDQxMiBcdTA0NDFcdTA0M2JcdTA0MzVcdTA0MzRcdTA0NDNcdTA0NGVcdTA0NDlcdTA0MzVcdTA0MzVdIGRkZGQsIFtcdTA0MzJdIExUIjtjYXNlIDE6''@;'; put 'put ''Y2FzZSAyOmNhc2UgNDpyZXR1cm4iW1x1MDQxMiBcdTA0NDFcdTA0M2JcdTA0MzVcdTA0MzRcdTA0NDNcdTA0NGVcdTA0NDlcdTA0MzhcdTA0MzldIGRkZGQsIFtcdTA0MzJdIExUIjtjYXNlIDM6Y2FzZSA1OmNhc2UgNjpyZXR1cm4iW1x1MDQxMiBcdTA0NDFcdTA0M2JcdTA0MzVcdTA0MzRc''@;'; put 'put ''dTA0NDNcdTA0NGVcdTA0NDlcdTA0NDNcdTA0NGVdIGRkZGQsIFtcdTA0MzJdIExUIn19LGxhc3RXZWVrOmZ1bmN0aW9uKFEpe2lmKFEud2VlaygpPT09dGhpcy53ZWVrKCkpcmV0dXJuIDI9PT10aGlzLmRheSgpPyJbXHUwNDEyXHUwNDNlXSBkZGRkLCBbXHUwNDMyXSBMVCI6IltcdTA0MTJd''@;'; put 'put ''IGRkZGQsIFtcdTA0MzJdIExUIjtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbXHUwNDEyIFx1MDQzZlx1MDQ0MFx1MDQzZVx1MDQ0OFx1MDQzYlx1MDQzZVx1MDQzNV0gZGRkZCwgW1x1MDQzMl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiJbXHUwNDEyIFx1MDQz''@;'; put 'put ''Zlx1MDQ0MFx1MDQzZVx1MDQ0OFx1MDQzYlx1MDQ0Ylx1MDQzOV0gZGRkZCwgW1x1MDQzMl0gTFQiO2Nhc2UgMzpjYXNlIDU6Y2FzZSA2OnJldHVybiJbXHUwNDEyIFx1MDQzZlx1MDQ0MFx1MDQzZVx1MDQ0OFx1MDQzYlx1MDQ0M1x1MDQ0ZV0gZGRkZCwgW1x1MDQzMl0gTFQifX0sc2FtZUVs''@;'; put 'put ''c2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNDQ3XHUwNDM1XHUwNDQwXHUwNDM1XHUwNDM3ICVzIixwYXN0OiIlcyBcdTA0M2RcdTA0MzBcdTA0MzdcdTA0MzBcdTA0MzQiLHM6Ilx1MDQzZFx1MDQzNVx1MDQ0MVx1MDQzYVx1MDQzZVx1MDQzYlx1MDQ0Y1x1MDQzYVx1MDQzZSBc''@;'; put 'put ''dTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiLHNzOkUsbTpFLG1tOkUsaDoiXHUwNDQ3XHUwNDMwXHUwNDQxIixoaDpFLGQ6Ilx1MDQzNFx1MDQzNVx1MDQzZFx1MDQ0YyIsZGQ6RSx3OiJcdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2JcdTA0NGYiLHd3OkUsTToiXHUw''@;'; put 'put ''NDNjXHUwNDM1XHUwNDQxXHUwNDRmXHUwNDQ2IixNTTpFLHk6Ilx1MDQzM1x1MDQzZVx1MDQzNCIseXk6RX0sbWVyaWRpZW1QYXJzZTovXHUwNDNkXHUwNDNlXHUwNDQ3XHUwNDM4fFx1MDQ0M1x1MDQ0Mlx1MDQ0MFx1MDQzMHxcdTA0MzRcdTA0M2RcdTA0NGZ8XHUwNDMyXHUwNDM1XHUwNDQ3''@;'; put 'put ''XHUwNDM1XHUwNDQwXHUwNDMwL2ksaXNQTTpmdW5jdGlvbihRKXtyZXR1cm4vXihcdTA0MzRcdTA0M2RcdTA0NGZ8XHUwNDMyXHUwNDM1XHUwNDQ3XHUwNDM1XHUwNDQwXHUwNDMwKSQvLnRlc3QoUSl9LG1lcmlkaWVtOmZ1bmN0aW9uKFEsaixyZSl7cmV0dXJuIFE8ND8iXHUwNDNkXHUwNDNl''@;'; put 'put ''XHUwNDQ3XHUwNDM4IjpRPDEyPyJcdTA0NDNcdTA0NDJcdTA0NDBcdTA0MzAiOlE8MTc/Ilx1MDQzNFx1MDQzZFx1MDQ0ZiI6Ilx1MDQzMlx1MDQzNVx1MDQ0N1x1MDQzNVx1MDQ0MFx1MDQzMCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0tKFx1MDQzOXxcdTA0MzNcdTA0M2V8''@;'; put 'put ''XHUwNDRmKS8sb3JkaW5hbDpmdW5jdGlvbihRLGope3N3aXRjaChqKXtjYXNlIk0iOmNhc2UiZCI6Y2FzZSJEREQiOnJldHVybiBRKyItXHUwNDM5IjtjYXNlIkQiOnJldHVybiBRKyItXHUwNDMzXHUwNDNlIjtjYXNlInciOmNhc2UiVyI6cmV0dXJuIFErIi1cdTA0NGYiO2RlZmF1bHQ6cmV0''@;'; put 'put ''dXJuIFF9fSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSwzMjUyNTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj1bIlx1MDYyY1x1MDY0Nlx1MDY0OFx1MDYzMVx1MDY0YSIsIlx1MDY0MVx1MDY0YVx1MDYyOFx1MDYzMVx1MDY0OFx1''@;'; put 'put ''MDYzMVx1MDY0YSIsIlx1MDY0NVx1MDYyN1x1MDYzMVx1MDY4NiIsIlx1MDYyN1x1MDY3ZVx1MDYzMVx1MDY0YVx1MDY0NCIsIlx1MDY0NVx1MDYyNlx1MDY0YSIsIlx1MDYyY1x1MDY0OFx1MDY0NiIsIlx1MDYyY1x1MDY0OFx1MDY0NFx1MDYyN1x1MDYyMVx1MDY1MCIsIlx1MDYyMlx1MDZh''@;'; put 'put ''Zlx1MDYzM1x1MDY3ZCIsIlx1MDYzM1x1MDY0YVx1MDY3ZVx1MDY3ZFx1MDY0NVx1MDYyOFx1MDYzMSIsIlx1MDYyMlx1MDZhYVx1MDY3ZFx1MDY0OFx1MDYyOFx1MDYzMSIsIlx1MDY0Nlx1MDY0OFx1MDY0NVx1MDYyOFx1MDYzMSIsIlx1MDY4YVx1MDYzM1x1MDY0NVx1MDYyOFx1MDYzMSJd''@;'; put 'put ''LEU9WyJcdTA2MjJcdTA2ODZcdTA2MzEiLCJcdTA2MzNcdTA2NDhcdTA2NDVcdTA2MzEiLCJcdTA2MjdcdTA2YjFcdTA2MjdcdTA2MzFcdTA2NDgiLCJcdTA2MjdcdTA2MzFcdTA2MjhcdTA2MzkiLCJcdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzMiLCJcdTA2MmNcdTA2NDVcdTA2MzkiLCJcdTA2''@;'; put 'put ''ODdcdTA2NDZcdTA2ODdcdTA2MzEiXTttZS5kZWZpbmVMb2NhbGUoInNkIix7bW9udGhzOkIsbW9udGhzU2hvcnQ6Qix3ZWVrZGF5czpFLHdlZWtkYXlzU2hvcnQ6RSx3ZWVrZGF5c01pbjpFLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVki''@;'; put 'put ''LExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZFx1MDYwYyBEIE1NTU0gWVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1MDYzNVx1MDYyOFx1MDYyZHxcdTA2MzRcdTA2MjdcdTA2NDUvLGlzUE06ZnVuY3Rpb24oVSl7cmV0dXJuIlx1MDYzNFx1''@;'; put 'put ''MDYyN1x1MDY0NSI9PT1VfSxtZXJpZGllbTpmdW5jdGlvbihVLFEsail7cmV0dXJuIFU8MTI/Ilx1MDYzNVx1MDYyOFx1MDYyZCI6Ilx1MDYzNFx1MDYyN1x1MDY0NSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNjI3XHUwNjg0XSBMVCIsbmV4dERheToiW1x1MDYzM1x1MDY4MFx1MDYyN1x1''@;'; put 'put ''MDZiYlx1MDY0YV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MjdcdTA2YjNcdTA2NGFcdTA2NDYgXHUwNjQ3XHUwNjQxXHUwNjJhXHUwNjRhIFx1MDYyYVx1MDY0YV0gTFQiLGxhc3REYXk6IltcdTA2YWFcdTA2MjdcdTA2NDRcdTA2NDdcdTA2NDddIExUIixsYXN0V2VlazoiW1x1MDZhZlx1''@;'; put 'put ''MDYzMlx1MDYzMVx1MDY0YVx1MDY0NCBcdTA2NDdcdTA2NDFcdTA2MmFcdTA2NGFdIGRkZGQgW1x1MDYyYVx1MDY0YV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MDY3ZVx1MDY0OFx1MDYyMSIscGFzdDoiJXMgXHUwNjI3XHUwNmIzIixzOiJcdTA2ODZc''@;'; put 'put ''dTA2NDZcdTA2MmYgXHUwNjMzXHUwNjRhXHUwNmFhXHUwNjQ2XHUwNjhhIixzczoiJWQgXHUwNjMzXHUwNjRhXHUwNmFhXHUwNjQ2XHUwNjhhIixtOiJcdTA2NDdcdTA2YWEgXHUwNjQ1XHUwNjQ2XHUwNjdkIixtbToiJWQgXHUwNjQ1XHUwNjQ2XHUwNjdkIixoOiJcdTA2NDdcdTA2YWEgXHUw''@;'; put 'put ''NmFhXHUwNjQ0XHUwNjI3XHUwNmFhIixoaDoiJWQgXHUwNmFhXHUwNjQ0XHUwNjI3XHUwNmFhIixkOiJcdTA2NDdcdTA2YWEgXHUwNjhmXHUwNjRhXHUwNjQ2XHUwNjQ3XHUwNjQ2IixkZDoiJWQgXHUwNjhmXHUwNjRhXHUwNjQ2XHUwNjQ3XHUwNjQ2IixNOiJcdTA2NDdcdTA2YWEgXHUwNjQ1''@;'; put 'put ''XHUwNjQ3XHUwNjRhXHUwNjQ2XHUwNjQ4IixNTToiJWQgXHUwNjQ1XHUwNjQ3XHUwNjRhXHUwNjQ2XHUwNjI3Iix5OiJcdTA2NDdcdTA2YWEgXHUwNjMzXHUwNjI3XHUwNjQ0Iix5eToiJWQgXHUwNjMzXHUwNjI3XHUwNjQ0In0scHJlcGFyc2U6ZnVuY3Rpb24oVSl7cmV0dXJuIFUucmVwbGFj''@;'; put 'put ''ZSgvXHUwNjBjL2csIiwiKX0scG9zdGZvcm1hdDpmdW5jdGlvbihVKXtyZXR1cm4gVS5yZXBsYWNlKC8sL2csIlx1MDYwYyIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw1OTg5MzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZp''@;'; put 'put ''bmVMb2NhbGUoInNlIix7bW9udGhzOiJvXHUwMTExXHUwMTExYWphZ2VtXHhlMW5udV9ndW92dmFtXHhlMW5udV9uanVrXHUwMTBkYW1ceGUxbm51X2N1b1x1MDE0Ym9tXHhlMW5udV9taWVzc2VtXHhlMW5udV9nZWFzc2VtXHhlMW5udV9zdW9pZG5lbVx4ZTFubnVfYm9yZ2VtXHhlMW5udV9c''@;'; put 'put ''dTAxMGRha1x1MDEwZGFtXHhlMW5udV9nb2xnZ290bVx4ZTFubnVfc2tceGUxYm1hbVx4ZTFubnVfanVvdmxhbVx4ZTFubnUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Im9cdTAxMTFcdTAxMTFqX2d1b3Zfbmp1a19jdW9fbWllc19nZWFzX3N1b2lfYm9yZ19cdTAxMGRha1x1MDEwZF9nb2xn''@;'; put 'put ''X3NrXHhlMWJfanVvdiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic290bmFiZWFpdmlfdnVvc3NceGUxcmdhX21hXHUwMTRiXHUwMTRiZWJceGUxcmdhX2dhc2thdmFoa2t1X2R1b3Jhc3RhdF9iZWFyamFkYXRfbFx4ZTF2dmFyZGF0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InNvdG5fdnVv''@;'; put 'put ''c19tYVx1MDE0Yl9nYXNrX2R1b3JfYmVhcl9sXHhlMXYiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InNfdl9tX2dfZF9iX0wiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6Ik1NTU0gRC4gW2IuXSBZWVlZIixM''@;'; put 'put ''TEw6Ik1NTU0gRC4gW2IuXSBZWVlZIFt0aS5dIEhIOm1tIixMTExMOiJkZGRkLCBNTU1NIEQuIFtiLl0gWVlZWSBbdGkuXSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbb3RuZSB0aV0gTFQiLG5leHREYXk6IltpaHR0aW4gdGldIExUIixuZXh0V2VlazoiZGRkZCBbdGldIExUIixsYXN0''@;'; put 'put ''RGF5OiJbaWt0ZSB0aV0gTFQiLGxhc3RXZWVrOiJbb3ZkZGl0XSBkZGRkIFt0aV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIGdlYVx1MDE3ZWVzIixwYXN0OiJtYVx1MDE0Yml0ICVzIixzOiJtb2FkZGUgc2VrdW5kZGF0IixzczoiJWQgc2VrdW5kZGF0Iixt''@;'; put 'put ''OiJva3RhIG1pbnVodGEiLG1tOiIlZCBtaW51aHRhdCIsaDoib2t0YSBkaWltbXUiLGhoOiIlZCBkaWltbXV0IixkOiJva3RhIGJlYWl2aSIsZGQ6IiVkIGJlYWl2dml0IixNOiJva3RhIG1ceGUxbm51IixNTToiJWQgbVx4ZTFudXQiLHk6Im9rdGEgamFoa2kiLHl5OiIlZCBqYWdpdCJ9LGRh''@;'; put 'put ''eU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSwzMzEyMzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoInNpIix7bW9udGhzOiJcdTBk''@;'; put 'put ''YTJcdTBkYjFcdTBkYzBcdTBkY2ZcdTBkYmJcdTBkZDJfXHUwZGI0XHUwZGQ5XHUwZGI2XHUwZGJiXHUwZGMwXHUwZGNmXHUwZGJiXHUwZGQyX1x1MGRiOFx1MGRjZlx1MGRiYlx1MGRjYVx1MGRhZFx1MGRkNF9cdTBkODVcdTBkYjRcdTBkY2FcdTIwMGRcdTBkYmJcdTBkZGFcdTBkYmRcdTBk''@;'; put 'put ''Y2FfXHUwZGI4XHUwZGQwXHUwZGJhXHUwZGQyX1x1MGRhMlx1MGRkNlx1MGRiMVx1MGRkMl9cdTBkYTJcdTBkZDZcdTBkYmRcdTBkZDJfXHUwZDg1XHUwZDljXHUwZGRkXHUwZGMzXHUwZGNhXHUwZGFkXHUwZGQ0X1x1MGRjM1x1MGRkMFx1MGRiNFx1MGRjYVx1MGRhZFx1MGRkMFx1MGRiOFx1''@;'; put 'put ''MGRjYVx1MGRiNlx1MGRiYlx1MGRjYV9cdTBkOTRcdTBkOWFcdTBkY2FcdTBkYWRcdTBkZGRcdTBkYjZcdTBkYmJcdTBkY2FfXHUwZGIxXHUwZGRjXHUwZGMwXHUwZGQwXHUwZGI4XHUwZGNhXHUwZGI2XHUwZGJiXHUwZGNhX1x1MGRhZlx1MGRkOVx1MGRjM1x1MGRkMFx1MGRiOFx1MGRjYVx1''@;'; put 'put ''MGRiNlx1MGRiYlx1MGRjYSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwZGEyXHUwZGIxX1x1MGRiNFx1MGRkOVx1MGRiNl9cdTBkYjhcdTBkY2ZcdTBkYmJcdTBkY2FfXHUwZDg1XHUwZGI0XHUwZGNhX1x1MGRiOFx1MGRkMFx1MGRiYVx1MGRkMl9cdTBkYTJcdTBkZDZcdTBkYjFcdTBk''@;'; put 'put ''ZDJfXHUwZGEyXHUwZGQ2XHUwZGJkXHUwZGQyX1x1MGQ4NVx1MGQ5Y1x1MGRkZF9cdTBkYzNcdTBkZDBcdTBkYjRcdTBkY2FfXHUwZDk0XHUwZDlhXHUwZGNhX1x1MGRiMVx1MGRkY1x1MGRjMFx1MGRkMF9cdTBkYWZcdTBkZDlcdTBkYzNcdTBkZDAiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1''@;'; put 'put ''MGQ4OVx1MGRiYlx1MGRkMlx1MGRhZlx1MGRjZl9cdTBkYzNcdTBkYjNcdTBkZDRcdTBkYWZcdTBkY2ZfXHUwZDg1XHUwZDlmXHUwZGM0XHUwZGJiXHUwZGQ0XHUwZGMwXHUwZGNmXHUwZGFmXHUwZGNmX1x1MGRiNlx1MGRhZlx1MGRjZlx1MGRhZlx1MGRjZl9cdTBkYjZcdTBkY2FcdTIwMGRc''@;'; put 'put ''dTBkYmJcdTBkYzRcdTBkYzNcdTBkY2FcdTBkYjRcdTBkYWRcdTBkZDJcdTBkYjFcdTBkY2FcdTBkYWZcdTBkY2ZfXHUwZGMzXHUwZGQyXHUwZDlhXHUwZGQ0XHUwZGJiXHUwZGNmXHUwZGFmXHUwZGNmX1x1MGRjM1x1MGRkOVx1MGRiMVx1MGRjM1x1MGRkNFx1MGRiYlx1MGRjZlx1MGRhZlx1''@;'; put 'put ''MGRjZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTBkODlcdTBkYmJcdTBkZDJfXHUwZGMzXHUwZGIzXHUwZGQ0X1x1MGQ4NVx1MGQ5Zl9cdTBkYjZcdTBkYWZcdTBkY2ZfXHUwZGI2XHUwZGNhXHUyMDBkXHUwZGJiXHUwZGM0X1x1MGRjM1x1MGRkMlx1MGQ5YVx1MGRkNF9cdTBkYzNc''@;'; put 'put ''dTBkZDlcdTBkYjEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MGQ4OV9cdTBkYzNfXHUwZDg1X1x1MGRiNl9cdTBkYjZcdTBkY2FcdTIwMGRcdTBkYmJfXHUwZGMzXHUwZGQyX1x1MGRjM1x1MGRkOSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6''@;'; put 'put ''e0xUOiJhIGg6bW0iLExUUzoiYSBoOm1tOnNzIixMOiJZWVlZL01NL0REIixMTDoiWVlZWSBNTU1NIEQiLExMTDoiWVlZWSBNTU1NIEQsIGEgaDptbSIsTExMTDoiWVlZWSBNTU1NIEQgW1x1MGRjMFx1MGRkMFx1MGRiMVx1MGRkMl0gZGRkZCwgYSBoOm1tOnNzIn0sY2FsZW5kYXI6e3NhbWVE''@;'; put 'put ''YXk6IltcdTBkODVcdTBkYWZdIExUW1x1MGRhN10iLG5leHREYXk6IltcdTBkYzRcdTBkZDlcdTBkYTddIExUW1x1MGRhN10iLG5leHRXZWVrOiJkZGRkIExUW1x1MGRhN10iLGxhc3REYXk6IltcdTBkOGFcdTBkYmFcdTBkZGFdIExUW1x1MGRhN10iLGxhc3RXZWVrOiJbXHUwZGI0XHUwZGMz''@;'; put 'put ''XHUwZGQ0XHUwZDljXHUwZGQyXHUwZGJhXSBkZGRkIExUW1x1MGRhN10iLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzXHUwZDlhXHUwZGQyXHUwZGIxXHUwZGNhIixwYXN0OiIlc1x1MGQ5YVx1MGRhNyBcdTBkYjRcdTBkZDlcdTBkYmIiLHM6Ilx1MGRhZFx1MGRhZFx1''@;'; put 'put ''MGRjYVx1MGRiNFx1MGRiYiBcdTBkOWFcdTBkZDJcdTBkYzRcdTBkZDJcdTBkYjRcdTBkYmEiLHNzOiJcdTBkYWRcdTBkYWRcdTBkY2FcdTBkYjRcdTBkYmIgJWQiLG06Ilx1MGRiOFx1MGRkMlx1MGRiMVx1MGRkMlx1MGRhZFx1MGRjYVx1MGRhZFx1MGRkNFx1MGRjMCIsbW06Ilx1MGRiOFx1''@;'; put 'put ''MGRkMlx1MGRiMVx1MGRkMlx1MGRhZFx1MGRjYVx1MGRhZFx1MGRkNCAlZCIsaDoiXHUwZGI0XHUwZGQwXHUwZGJhIixoaDoiXHUwZGI0XHUwZGQwXHUwZGJhICVkIixkOiJcdTBkYWZcdTBkZDJcdTBkYjFcdTBkYmEiLGRkOiJcdTBkYWZcdTBkZDJcdTBkYjEgJWQiLE06Ilx1MGRiOFx1MGRj''@;'; put 'put ''Zlx1MGRjM1x1MGRiYSIsTU06Ilx1MGRiOFx1MGRjZlx1MGRjMyAlZCIseToiXHUwZGMwXHUwZGMzXHUwZGJiIix5eToiXHUwZGMwXHUwZGMzXHUwZGJiICVkIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfSBcdTBkYzBcdTBkZDBcdTBkYjFcdTBkZDIvLG9yZGluYWw6ZnVuY3Rp''@;'; put 'put ''b24oRSl7cmV0dXJuIEUrIiBcdTBkYzBcdTBkZDBcdTBkYjFcdTBkZDIifSxtZXJpZGllbVBhcnNlOi9cdTBkYjRcdTBkZDlcdTBkYmIgXHUwZGMwXHUwZGJiXHUwZGQ0fFx1MGRiNFx1MGRjM1x1MGRjYSBcdTBkYzBcdTBkYmJcdTBkZDR8XHUwZGI0XHUwZGQ5Llx1MGRjMHxcdTBkYjQuXHUw''@;'; put 'put ''ZGMwLi8saXNQTTpmdW5jdGlvbihFKXtyZXR1cm4iXHUwZGI0Llx1MGRjMC4iPT09RXx8Ilx1MGRiNFx1MGRjM1x1MGRjYSBcdTBkYzBcdTBkYmJcdTBkZDQiPT09RX0sbWVyaWRpZW06ZnVuY3Rpb24oRSxFZSxVKXtyZXR1cm4gRT4xMT9VPyJcdTBkYjQuXHUwZGMwLiI6Ilx1MGRiNFx1MGRj''@;'; put 'put ''M1x1MGRjYSBcdTBkYzBcdTBkYmJcdTBkZDQiOlU/Ilx1MGRiNFx1MGRkOS5cdTBkYzAuIjoiXHUwZGI0XHUwZGQ5XHUwZGJiIFx1MGRjMFx1MGRiYlx1MGRkNCJ9fSl9KEwoMTU0MzkpKX0sNTk2MzU6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9''@;'; put 'put ''ImphbnVceGUxcl9mZWJydVx4ZTFyX21hcmVjX2Fwclx4ZWRsX21ceGUxal9qXHhmYW5falx4ZmFsX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0XHhmM2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxFPSJqYW5fZmViX21hcl9hcHJfbVx4ZTFqX2pceGZhbl9qXHhmYWxfYXVnX3NlcF9v''@;'; put 'put ''a3Rfbm92X2RlYyIuc3BsaXQoIl8iKTtmdW5jdGlvbiBFZShqKXtyZXR1cm4gaj4xJiZqPDV9ZnVuY3Rpb24gVShqLHJlLGFlLFkpe3ZhciBXPWorIiAiO3N3aXRjaChhZSl7Y2FzZSJzIjpyZXR1cm4gcmV8fFk/InBceGUxciBzZWtceGZhbmQiOiJwXHhlMXIgc2VrdW5kYW1pIjtjYXNlInNz''@;'; put 'put ''IjpyZXR1cm4gcmV8fFk/VysoRWUoaik/InNla3VuZHkiOiJzZWtceGZhbmQiKTpXKyJzZWt1bmRhbWkiO2Nhc2UibSI6cmV0dXJuIHJlPyJtaW5ceGZhdGEiOlk/Im1pblx4ZmF0dSI6Im1pblx4ZmF0b3UiO2Nhc2UibW0iOnJldHVybiByZXx8WT9XKyhFZShqKT8ibWluXHhmYXR5IjoibWlu''@;'; put 'put ''XHhmYXQiKTpXKyJtaW5ceGZhdGFtaSI7Y2FzZSJoIjpyZXR1cm4gcmU/ImhvZGluYSI6WT8iaG9kaW51IjoiaG9kaW5vdSI7Y2FzZSJoaCI6cmV0dXJuIHJlfHxZP1crKEVlKGopPyJob2RpbnkiOiJob2RceGVkbiIpOlcrImhvZGluYW1pIjtjYXNlImQiOnJldHVybiByZXx8WT8iZGVcdTAx''@;'; put 'put ''NDgiOiJkXHUwMTQ4b20iO2Nhc2UiZGQiOnJldHVybiByZXx8WT9XKyhFZShqKT8iZG5pIjoiZG5ceGVkIik6VysiZFx1MDE0OGFtaSI7Y2FzZSJNIjpyZXR1cm4gcmV8fFk/Im1lc2lhYyI6Im1lc2lhY29tIjtjYXNlIk1NIjpyZXR1cm4gcmV8fFk/VysoRWUoaik/Im1lc2lhY2UiOiJtZXNp''@;'; put 'put ''YWNvdiIpOlcrIm1lc2lhY21pIjtjYXNlInkiOnJldHVybiByZXx8WT8icm9rIjoicm9rb20iO2Nhc2UieXkiOnJldHVybiByZXx8WT9XKyhFZShqKT8icm9reSI6InJva292Iik6Vysicm9rbWkifX1tZS5kZWZpbmVMb2NhbGUoInNrIix7bW9udGhzOkIsbW9udGhzU2hvcnQ6RSx3ZWVrZGF5''@;'; put 'put ''czoibmVkZVx1MDEzZWFfcG9uZGVsb2tfdXRvcm9rX3N0cmVkYV9cdTAxNjF0dnJ0b2tfcGlhdG9rX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZV9wb191dF9zdF9cdTAxNjF0X3BpX3NvIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb191dF9zdF9cdTAxNjF0X3Bp''@;'; put 'put ''X3NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkIEQuIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6Iltk''@;'; put 'put ''bmVzIG9dIExUIixuZXh0RGF5OiJbemFqdHJhIG9dIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlt2IG5lZGVcdTAxM2V1IG9dIExUIjtjYXNlIDE6Y2FzZSAyOnJldHVybiJbdl0gZGRkZCBbb10gTFQiO2Nhc2UgMzpyZXR1cm4iW3Yg''@;'; put 'put ''c3RyZWR1IG9dIExUIjtjYXNlIDQ6cmV0dXJuIlt2byBcdTAxNjF0dnJ0b2sgb10gTFQiO2Nhc2UgNTpyZXR1cm4iW3YgcGlhdG9rIG9dIExUIjtjYXNlIDY6cmV0dXJuIlt2IHNvYm90dSBvXSBMVCJ9fSxsYXN0RGF5OiJbdlx1MDEwZGVyYSBvXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtz''@;'; put 'put ''d2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbbWludWxceGZhIG5lZGVcdTAxM2V1IG9dIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlttaW51bFx4ZmRdIGRkZGQgW29dIExUIjtjYXNlIDM6cmV0dXJuIlttaW51bFx4ZmEgc3RyZWR1IG9dIExUIjtjYXNl''@;'; put 'put ''IDY6cmV0dXJuIlttaW51bFx4ZmEgc29ib3R1IG9dIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiJwcmVkICVzIixzOlUsc3M6VSxtOlUsbW06VSxoOlUsaGg6VSxkOlUsZGQ6VSxNOlUsTU06VSx5OlUseXk6VX0sZGF5T2ZNb250aE9yZGlu''@;'; put 'put ''YWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDc4MTA2OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEIoRWUsVSxRLGope3ZhciByZT1FZSsiICI7c3dpdGNoKFEpe2Nh''@;'; put 'put ''c2UicyI6cmV0dXJuIFV8fGo/Im5la2FqIHNla3VuZCI6Im5la2FqIHNla3VuZGFtaSI7Y2FzZSJzcyI6cmV0dXJuIHJlKygxPT09RWU/VT8ic2VrdW5kbyI6InNla3VuZGkiOjI9PT1FZT9VfHxqPyJzZWt1bmRpIjoic2VrdW5kYWgiOkVlPDU/VXx8aj8ic2VrdW5kZSI6InNla3VuZGFoIjoi''@;'; put 'put ''c2VrdW5kIik7Y2FzZSJtIjpyZXR1cm4gVT8iZW5hIG1pbnV0YSI6ImVubyBtaW51dG8iO2Nhc2UibW0iOnJldHVybiByZSsoMT09PUVlP1U/Im1pbnV0YSI6Im1pbnV0byI6Mj09PUVlP1V8fGo/Im1pbnV0aSI6Im1pbnV0YW1hIjpFZTw1P1V8fGo/Im1pbnV0ZSI6Im1pbnV0YW1pIjpVfHxq''@;'; put 'put ''PyJtaW51dCI6Im1pbnV0YW1pIik7Y2FzZSJoIjpyZXR1cm4gVT8iZW5hIHVyYSI6ImVubyB1cm8iO2Nhc2UiaGgiOnJldHVybiByZSsoMT09PUVlP1U/InVyYSI6InVybyI6Mj09PUVlP1V8fGo/InVyaSI6InVyYW1hIjpFZTw1P1V8fGo/InVyZSI6InVyYW1pIjpVfHxqPyJ1ciI6InVyYW1p''@;'; put 'put ''Iik7Y2FzZSJkIjpyZXR1cm4gVXx8aj8iZW4gZGFuIjoiZW5pbSBkbmVtIjtjYXNlImRkIjpyZXR1cm4gcmUrKDE9PT1FZT9VfHxqPyJkYW4iOiJkbmVtIjoyPT09RWU/VXx8aj8iZG5pIjoiZG5ldm9tYSI6VXx8aj8iZG5pIjoiZG5ldmkiKTtjYXNlIk0iOnJldHVybiBVfHxqPyJlbiBtZXNl''@;'; put 'put ''YyI6ImVuaW0gbWVzZWNlbSI7Y2FzZSJNTSI6cmV0dXJuIHJlKygxPT09RWU/VXx8aj8ibWVzZWMiOiJtZXNlY2VtIjoyPT09RWU/VXx8aj8ibWVzZWNhIjoibWVzZWNlbWEiOkVlPDU/VXx8aj8ibWVzZWNlIjoibWVzZWNpIjpVfHxqPyJtZXNlY2V2IjoibWVzZWNpIik7Y2FzZSJ5IjpyZXR1''@;'; put 'put ''cm4gVXx8aj8iZW5vIGxldG8iOiJlbmltIGxldG9tIjtjYXNlInl5IjpyZXR1cm4gcmUrKDE9PT1FZT9VfHxqPyJsZXRvIjoibGV0b20iOjI9PT1FZT9VfHxqPyJsZXRpIjoibGV0b21hIjpFZTw1P1V8fGo/ImxldGEiOiJsZXRpIjpVfHxqPyJsZXQiOiJsZXRpIil9fW1lLmRlZmluZUxvY2Fs''@;'; put 'put ''ZSgic2wiLHttb250aHM6ImphbnVhcl9mZWJydWFyX21hcmVjX2FwcmlsX21hal9qdW5pal9qdWxpal9hdmd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbi5fZmViLl9tYXIuX2Fwci5fbWFqLl9qdW4uX2p1bC5fYXZn''@;'; put 'put ''Ll9zZXAuX29rdC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Im5lZGVsamFfcG9uZWRlbGpla190b3Jla19zcmVkYV9cdTAxMGRldHJ0ZWtfcGV0ZWtfc29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lZC5fcG9uLl90b3IuX3Ny''@;'; put 'put ''ZS5fXHUwMTBkZXQuX3BldC5fc29iLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdG9fc3JfXHUwMTBkZV9wZV9zbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELiBNTS4gWVlZWSIs''@;'; put 'put ''TEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2RhbmVzIG9iXSBMVCIsbmV4dERheToiW2p1dHJpIG9iXSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5k''@;'; put 'put ''YXkoKSl7Y2FzZSAwOnJldHVybiJbdl0gW25lZGVsam9dIFtvYl0gTFQiO2Nhc2UgMzpyZXR1cm4iW3ZdIFtzcmVkb10gW29iXSBMVCI7Y2FzZSA2OnJldHVybiJbdl0gW3NvYm90b10gW29iXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbdl0gZGRkZCBbb2JdIExU''@;'; put 'put ''In19LGxhc3REYXk6Ilt2XHUwMTBkZXJhaiBvYl0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3ByZWpcdTAxNjFuam9dIFtuZWRlbGpvXSBbb2JdIExUIjtjYXNlIDM6cmV0dXJuIltwcmVqXHUwMTYxbmpvXSBbc3JlZG9dIFtvYl0g''@;'; put 'put ''TFQiO2Nhc2UgNjpyZXR1cm4iW3ByZWpcdTAxNjFuam9dIFtzb2JvdG9dIFtvYl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3ByZWpcdTAxNjFuamldIGRkZGQgW29iXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTAxMGRleiAl''@;'; put 'put ''cyIscGFzdDoicHJlZCAlcyIsczpCLHNzOkIsbTpCLG1tOkIsaDpCLGhoOkIsZDpCLGRkOkIsTTpCLE1NOkIseTpCLHl5OkJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KX0oTCgxNTQzOSkpfSw4ODc5OTpmdW5j''@;'; put 'put ''dGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoInNxIix7bW9udGhzOiJKYW5hcl9TaGt1cnRfTWFyc19QcmlsbF9NYWpfUWVyc2hvcl9Lb3JyaWtfR3VzaHRfU2h0YXRvcl9UZXRvcl9OXHhlYm50b3JfRGhqZXRvciIuc3BsaXQoIl8iKSxt''@;'; put 'put ''b250aHNTaG9ydDoiSmFuX1Noa19NYXJfUHJpX01hal9RZXJfS29yX0d1c19TaHRfVGV0X05ceGVibl9EaGoiLnNwbGl0KCJfIiksd2Vla2RheXM6IkUgRGllbF9FIEhceGViblx4ZWJfRSBNYXJ0XHhlYl9FIE1ceGVicmt1clx4ZWJfRSBFbmp0ZV9FIFByZW10ZV9FIFNodHVuXHhlYiIuc3Bs''@;'; put 'put ''aXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJEaWVfSFx4ZWJuX01hcl9NXHhlYnJfRW5qX1ByZV9TaHQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRfSF9NYV9NXHhlYl9FX1BfU2giLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLG1lcmlkaWVtUGFyc2U6L1BEfE1ELyxpc1BNOmZ1''@;'; put 'put ''bmN0aW9uKEUpe3JldHVybiJNIj09PUUuY2hhckF0KDApfSxtZXJpZGllbTpmdW5jdGlvbihFLEVlLFUpe3JldHVybiBFPDEyPyJQRCI6Ik1EIn0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQg''@;'; put 'put ''TU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbU290IG5ceGViXSBMVCIsbmV4dERheToiW05lc1x4ZWJyIG5ceGViXSBMVCIsbmV4dFdlZWs6ImRkZGQgW25ceGViXSBMVCIsbGFzdERheToiW0RqZSBuXHhlYl0gTFQi''@;'; put 'put ''LGxhc3RXZWVrOiJkZGRkIFtlIGthbHVhciBuXHhlYl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im5ceGViICVzIixwYXN0OiIlcyBtXHhlYiBwYXJceGViIixzOiJkaXNhIHNla29uZGEiLHNzOiIlZCBzZWtvbmRhIixtOiJualx4ZWIgbWludXRceGViIixtbToi''@;'; put 'put ''JWQgbWludXRhIixoOiJualx4ZWIgb3JceGViIixoaDoiJWQgb3JceGViIixkOiJualx4ZWIgZGl0XHhlYiIsZGQ6IiVkIGRpdFx4ZWIiLE06Im5qXHhlYiBtdWFqIixNTToiJWQgbXVhaiIseToibmpceGViIHZpdCIseXk6IiVkIHZpdGUifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsx''@;'; put 'put ''LDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sNTI4NzI6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9e3dvcmRzOntzczpbIlx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQz''@;'; put 'put ''MCIsIlx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQzNSIsIlx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQzOCJdLG06WyJcdTA0NThcdTA0MzVcdTA0MzRcdTA0MzBcdTA0M2QgXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyIiwiXHUw''@;'; put 'put ''NDU4XHUwNDM1XHUwNDM0XHUwNDNkXHUwNDNlXHUwNDMzIFx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQzMCJdLG1tOlsiXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyIiwiXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDMwIiwiXHUwNDNjXHUwNDM4XHUw''@;'; put 'put ''NDNkXHUwNDQzXHUwNDQyXHUwNDMwIl0saDpbIlx1MDQ1OFx1MDQzNVx1MDQzNFx1MDQzMFx1MDQzZCBcdTA0NDFcdTA0MzBcdTA0NDIiLCJcdTA0NThcdTA0MzVcdTA0MzRcdTA0M2RcdTA0M2VcdTA0MzMgXHUwNDQxXHUwNDMwXHUwNDQyXHUwNDMwIl0saGg6WyJcdTA0NDFcdTA0MzBcdTA0''@;'; put 'put ''NDIiLCJcdTA0NDFcdTA0MzBcdTA0NDJcdTA0MzAiLCJcdTA0NDFcdTA0MzBcdTA0NDJcdTA0MzgiXSxkOlsiXHUwNDU4XHUwNDM1XHUwNDM0XHUwNDMwXHUwNDNkIFx1MDQzNFx1MDQzMFx1MDQzZCIsIlx1MDQ1OFx1MDQzNVx1MDQzNFx1MDQzZFx1MDQzZVx1MDQzMyBcdTA0MzRcdTA0MzBc''@;'; put 'put ''dTA0M2RcdTA0MzAiXSxkZDpbIlx1MDQzNFx1MDQzMFx1MDQzZCIsIlx1MDQzNFx1MDQzMFx1MDQzZFx1MDQzMCIsIlx1MDQzNFx1MDQzMFx1MDQzZFx1MDQzMCJdLE06WyJcdTA0NThcdTA0MzVcdTA0MzRcdTA0MzBcdTA0M2QgXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2IiwiXHUw''@;'; put 'put ''NDU4XHUwNDM1XHUwNDM0XHUwNDNkXHUwNDNlXHUwNDMzIFx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQzNVx1MDQ0Nlx1MDQzMCJdLE1NOlsiXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2IiwiXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2XHUwNDMwIiwiXHUwNDNjXHUwNDM1XHUw''@;'; put 'put ''NDQxXHUwNDM1XHUwNDQ2XHUwNDM4Il0seTpbIlx1MDQ1OFx1MDQzNVx1MDQzNFx1MDQzZFx1MDQ0MyBcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0NDMiLCJcdTA0NThcdTA0MzVcdTA0MzRcdTA0M2RcdTA0MzUgXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDM1''@;'; put 'put ''Il0seXk6WyJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0NDMiLCJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzUiLCJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzAiXX0sY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTpmdW5jdGlvbihFZSxVKXty''@;'; put 'put ''ZXR1cm4gRWUlMTA+PTEmJkVlJTEwPD00JiYoRWUlMTAwPDEwfHxFZSUxMDA+PTIwKT9FZSUxMD09MT9VWzBdOlVbMV06VVsyXX0sdHJhbnNsYXRlOmZ1bmN0aW9uKEVlLFUsUSxqKXt2YXIgYWUscmU9Qi53b3Jkc1tRXTtyZXR1cm4gMT09PVEubGVuZ3RoPyJ5Ij09PVEmJlU/Ilx1MDQ1OFx1''@;'; put 'put ''MDQzNVx1MDQzNFx1MDQzZFx1MDQzMCBcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzAiOmp8fFU/cmVbMF06cmVbMV06KGFlPUIuY29ycmVjdEdyYW1tYXRpY2FsQ2FzZShFZSxyZSksInl5Ij09PVEmJlUmJiJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0NDMi''@;'; put 'put ''PT09YWU/RWUrIiBcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzAiOkVlKyIgIithZSl9fTttZS5kZWZpbmVMb2NhbGUoInNyLWN5cmwiLHttb250aHM6Ilx1MDQ1OFx1MDQzMFx1MDQzZFx1MDQ0M1x1MDQzMFx1MDQ0MF9cdTA0NDRcdTA0MzVcdTA0MzFcdTA0NDBcdTA0NDNc''@;'; put 'put ''dTA0MzBcdTA0NDBfXHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyX1x1MDQzMFx1MDQzZlx1MDQ0MFx1MDQzOFx1MDQzYl9cdTA0M2NcdTA0MzBcdTA0NThfXHUwNDU4XHUwNDQzXHUwNDNkX1x1MDQ1OFx1MDQ0M1x1MDQzYl9cdTA0MzBcdTA0MzJcdTA0MzNcdTA0NDNcdTA0NDFcdTA0NDJfXHUw''@;'; put 'put ''NDQxXHUwNDM1XHUwNDNmXHUwNDQyXHUwNDM1XHUwNDNjXHUwNDMxXHUwNDMwXHUwNDQwX1x1MDQzZVx1MDQzYVx1MDQ0Mlx1MDQzZVx1MDQzMVx1MDQzMFx1MDQ0MF9cdTA0M2RcdTA0M2VcdTA0MzJcdTA0MzVcdTA0M2NcdTA0MzFcdTA0MzBcdTA0NDBfXHUwNDM0XHUwNDM1XHUwNDQ2XHUw''@;'; put 'put ''NDM1XHUwNDNjXHUwNDMxXHUwNDMwXHUwNDQwIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA0NThcdTA0MzBcdTA0M2QuX1x1MDQ0NFx1MDQzNVx1MDQzMS5fXHUwNDNjXHUwNDMwXHUwNDQwLl9cdTA0MzBcdTA0M2ZcdTA0NDAuX1x1MDQzY1x1MDQzMFx1MDQ1OF9cdTA0NThcdTA0NDNc''@;'; put 'put ''dTA0M2RfXHUwNDU4XHUwNDQzXHUwNDNiX1x1MDQzMFx1MDQzMlx1MDQzMy5fXHUwNDQxXHUwNDM1XHUwNDNmLl9cdTA0M2VcdTA0M2FcdTA0NDIuX1x1MDQzZFx1MDQzZVx1MDQzMi5fXHUwNDM0XHUwNDM1XHUwNDQ2LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlz''@;'; put 'put ''OiJcdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0NTlcdTA0MzBfXHUwNDNmXHUwNDNlXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDU5XHUwNDMwXHUwNDNhX1x1MDQ0M1x1MDQ0Mlx1MDQzZVx1MDQ0MFx1MDQzMFx1MDQzYV9cdTA0NDFcdTA0NDBcdTA0MzVcdTA0MzRcdTA0MzBfXHUw''@;'; put 'put ''NDQ3XHUwNDM1XHUwNDQyXHUwNDMyXHUwNDQwXHUwNDQyXHUwNDMwXHUwNDNhX1x1MDQzZlx1MDQzNVx1MDQ0Mlx1MDQzMFx1MDQzYV9cdTA0NDFcdTA0NDNcdTA0MzFcdTA0M2VcdTA0NDJcdTA0MzAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNDNkXHUwNDM1XHUwNDM0Ll9cdTA0''@;'; put 'put ''M2ZcdTA0M2VcdTA0M2QuX1x1MDQ0M1x1MDQ0Mlx1MDQzZS5fXHUwNDQxXHUwNDQwXHUwNDM1Ll9cdTA0NDdcdTA0MzVcdTA0NDIuX1x1MDQzZlx1MDQzNVx1MDQ0Mi5fXHUwNDQxXHUwNDQzXHUwNDMxLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDNkXHUwNDM1X1x1MDQzZlx1MDQz''@;'; put 'put ''ZV9cdTA0NDNcdTA0NDJfXHUwNDQxXHUwNDQwX1x1MDQ0N1x1MDQzNV9cdTA0M2ZcdTA0MzVfXHUwNDQxXHUwNDQzIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiRC4gTS4gWVlZWS4iLExMOiJELiBN''@;'; put 'put ''TU1NIFlZWVkuIixMTEw6IkQuIE1NTU0gWVlZWS4gSDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZLiBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA0MzRcdTA0MzBcdTA0M2RcdTA0MzBcdTA0NDEgXHUwNDQzXSBMVCIsbmV4dERheToiW1x1MDQ0MVx1MDQ0M1x1MDQ0Mlx1MDQ0''@;'; put 'put ''MFx1MDQzMCBcdTA0NDNdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltcdTA0NDNdIFtcdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0NTlcdTA0NDNdIFtcdTA0NDNdIExUIjtjYXNlIDM6cmV0dXJuIltcdTA0NDNdIFtcdTA0NDFc''@;'; put 'put ''dTA0NDBcdTA0MzVcdTA0MzRcdTA0NDNdIFtcdTA0NDNdIExUIjtjYXNlIDY6cmV0dXJuIltcdTA0NDNdIFtcdTA0NDFcdTA0NDNcdTA0MzFcdTA0M2VcdTA0NDJcdTA0NDNdIFtcdTA0NDNdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIltcdTA0NDNdIGRkZGQgW1x1''@;'; put 'put ''MDQ0M10gTFQifX0sbGFzdERheToiW1x1MDQ1OFx1MDQ0M1x1MDQ0N1x1MDQzNSBcdTA0NDNdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVyblsiW1x1MDQzZlx1MDQ0MFx1MDQzZVx1MDQ0OFx1MDQzYlx1MDQzNV0gW1x1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQ1OVx1MDQzNV0g''@;'; put 'put ''W1x1MDQ0M10gTFQiLCJbXHUwNDNmXHUwNDQwXHUwNDNlXHUwNDQ4XHUwNDNiXHUwNDNlXHUwNDMzXSBbXHUwNDNmXHUwNDNlXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDU5XHUwNDNhXHUwNDMwXSBbXHUwNDQzXSBMVCIsIltcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhcdTA0M2JcdTA0''@;'; put 'put ''M2VcdTA0MzNdIFtcdTA0NDNcdTA0NDJcdTA0M2VcdTA0NDBcdTA0M2FcdTA0MzBdIFtcdTA0NDNdIExUIiwiW1x1MDQzZlx1MDQ0MFx1MDQzZVx1MDQ0OFx1MDQzYlx1MDQzNV0gW1x1MDQ0MVx1MDQ0MFx1MDQzNVx1MDQzNFx1MDQzNV0gW1x1MDQ0M10gTFQiLCJbXHUwNDNmXHUwNDQwXHUw''@;'; put 'put ''NDNlXHUwNDQ4XHUwNDNiXHUwNDNlXHUwNDMzXSBbXHUwNDQ3XHUwNDM1XHUwNDQyXHUwNDMyXHUwNDQwXHUwNDQyXHUwNDNhXHUwNDMwXSBbXHUwNDQzXSBMVCIsIltcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhcdTA0M2JcdTA0M2VcdTA0MzNdIFtcdTA0M2ZcdTA0MzVcdTA0NDJcdTA0M2Fc''@;'; put 'put ''dTA0MzBdIFtcdTA0NDNdIExUIiwiW1x1MDQzZlx1MDQ0MFx1MDQzZVx1MDQ0OFx1MDQzYlx1MDQzNV0gW1x1MDQ0MVx1MDQ0M1x1MDQzMVx1MDQzZVx1MDQ0Mlx1MDQzNV0gW1x1MDQ0M10gTFQiXVt0aGlzLmRheSgpXX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUw''@;'; put 'put ''NDM3XHUwNDMwICVzIixwYXN0OiJcdTA0M2ZcdTA0NDBcdTA0MzUgJXMiLHM6Ilx1MDQzZFx1MDQzNVx1MDQzYVx1MDQzZVx1MDQzYlx1MDQzOFx1MDQzYVx1MDQzZSBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzgiLHNzOkIudHJhbnNsYXRlLG06Qi50cmFuc2xh''@;'; put 'put ''dGUsbW06Qi50cmFuc2xhdGUsaDpCLnRyYW5zbGF0ZSxoaDpCLnRyYW5zbGF0ZSxkOkIudHJhbnNsYXRlLGRkOkIudHJhbnNsYXRlLE06Qi50cmFuc2xhdGUsTU06Qi50cmFuc2xhdGUseTpCLnRyYW5zbGF0ZSx5eTpCLnRyYW5zbGF0ZX0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwy''@;'; put 'put ''fVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDk3OTQ5OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO3ZhciBCPXt3b3Jkczp7c3M6WyJzZWt1bmRhIiwic2VrdW5kZSIsInNla3VuZGkiXSxtOlsiamVkYW4gbWlu''@;'; put 'put ''dXQiLCJqZWRub2cgbWludXRhIl0sbW06WyJtaW51dCIsIm1pbnV0YSIsIm1pbnV0YSJdLGg6WyJqZWRhbiBzYXQiLCJqZWRub2cgc2F0YSJdLGhoOlsic2F0Iiwic2F0YSIsInNhdGkiXSxkOlsiamVkYW4gZGFuIiwiamVkbm9nIGRhbmEiXSxkZDpbImRhbiIsImRhbmEiLCJkYW5hIl0sTTpb''@;'; put 'put ''ImplZGFuIG1lc2VjIiwiamVkbm9nIG1lc2VjYSJdLE1NOlsibWVzZWMiLCJtZXNlY2EiLCJtZXNlY2kiXSx5OlsiamVkbnUgZ29kaW51IiwiamVkbmUgZ29kaW5lIl0seXk6WyJnb2RpbnUiLCJnb2RpbmUiLCJnb2RpbmEiXX0sY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTpmdW5jdGlvbihFZSxV''@;'; put 'put ''KXtyZXR1cm4gRWUlMTA+PTEmJkVlJTEwPD00JiYoRWUlMTAwPDEwfHxFZSUxMDA+PTIwKT9FZSUxMD09MT9VWzBdOlVbMV06VVsyXX0sdHJhbnNsYXRlOmZ1bmN0aW9uKEVlLFUsUSxqKXt2YXIgYWUscmU9Qi53b3Jkc1tRXTtyZXR1cm4gMT09PVEubGVuZ3RoPyJ5Ij09PVEmJlU/ImplZG5h''@;'; put 'put ''IGdvZGluYSI6anx8VT9yZVswXTpyZVsxXTooYWU9Qi5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKEVlLHJlKSwieXkiPT09USYmVSYmImdvZGludSI9PT1hZT9FZSsiIGdvZGluYSI6RWUrIiAiK2FlKX19O21lLmRlZmluZUxvY2FsZSgic3IiLHttb250aHM6ImphbnVhcl9mZWJydWFyX21hcnRf''@;'; put 'put ''YXByaWxfbWFqX2p1bl9qdWxfYXZndXN0X3NlcHRlbWJhcl9va3RvYmFyX25vdmVtYmFyX2RlY2VtYmFyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW4uX2ZlYi5fbWFyLl9hcHIuX21hal9qdW5fanVsX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxtb250aHNQYXJz''@;'; put 'put ''ZUV4YWN0OiEwLHdlZWtkYXlzOiJuZWRlbGphX3BvbmVkZWxqYWtfdXRvcmFrX3NyZWRhX1x1MDEwZGV0dnJ0YWtfcGV0YWtfc3Vib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lZC5fcG9uLl91dG8uX3NyZS5fXHUwMTBkZXQuX3BldC5fc3ViLiIuc3BsaXQoIl8iKSx3ZWVrZGF5''@;'; put 'put ''c01pbjoibmVfcG9fdXRfc3JfXHUwMTBkZV9wZV9zdSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkQuIE0uIFlZWVkuIixMTDoiRC4gTU1NTSBZWVlZLiIsTExMOiJELiBNTU1NIFlZWVkuIEg6bW0i''@;'; put 'put ''LExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWS4gSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZGFuYXMgdV0gTFQiLG5leHREYXk6IltzdXRyYSB1XSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdV0gW25lZGVsanVdIFt1XSBMVCI7''@;'; put 'put ''Y2FzZSAzOnJldHVybiJbdV0gW3NyZWR1XSBbdV0gTFQiO2Nhc2UgNjpyZXR1cm4iW3VdIFtzdWJvdHVdIFt1XSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbdV0gZGRkZCBbdV0gTFQifX0sbGFzdERheToiW2p1XHUwMTBkZSB1XSBMVCIsbGFzdFdlZWs6ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm5bIltwcm9cdTAxNjFsZV0gW25lZGVsamVdIFt1XSBMVCIsIltwcm9cdTAxNjFsb2ddIFtwb25lZGVsamthXSBbdV0gTFQiLCJbcHJvXHUwMTYxbG9nXSBbdXRvcmthXSBbdV0gTFQiLCJbcHJvXHUwMTYxbGVdIFtzcmVkZV0gW3VdIExUIiwiW3Byb1x1MDE2MWxvZ10gW1x1''@;'; put 'put ''MDEwZGV0dnJ0a2FdIFt1XSBMVCIsIltwcm9cdTAxNjFsb2ddIFtwZXRrYV0gW3VdIExUIiwiW3Byb1x1MDE2MWxlXSBbc3Vib3RlXSBbdV0gTFQiXVt0aGlzLmRheSgpXX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InByZSAlcyIsczoibmVrb2xp''@;'; put 'put ''a28gc2VrdW5kaSIsc3M6Qi50cmFuc2xhdGUsbTpCLnRyYW5zbGF0ZSxtbTpCLnRyYW5zbGF0ZSxoOkIudHJhbnNsYXRlLGhoOkIudHJhbnNsYXRlLGQ6Qi50cmFuc2xhdGUsZGQ6Qi50cmFuc2xhdGUsTTpCLnRyYW5zbGF0ZSxNTTpCLnRyYW5zbGF0ZSx5OkIudHJhbnNsYXRlLHl5OkIudHJh''@;'; put 'put ''bnNsYXRlfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSl9KEwoMTU0MzkpKX0sODYxNjc6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJzcyIse21v''@;'; put 'put ''bnRoczoiQmhpbWJpZHZ3YW5lX0luZGxvdmFuYV9JbmRsb3YnbGVua2h1bHVfTWFiYXNhX0lua2h3ZWtod2V0aV9JbmhsYWJhX0tob2x3YW5lX0luZ2NpX0lueW9uaV9JbXBoYWxhX0x3ZXRpX0luZ29uZ29uaSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiQmhpX0luYV9JbnVfTWFiX0lua19J''@;'; put 'put ''bmhfS2hvX0lnY19JbnlfSW1wX0x3ZV9JZ28iLnNwbGl0KCJfIiksd2Vla2RheXM6Ikxpc29udGZvX1Vtc29tYnVsdWtvX0xlc2liaWxpX0xlc2l0c2F0ZnVfTGVzaW5lX0xlc2lobGFudV9VbWdjaWJlbG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiTGlzX1VtYl9Mc2JfTGVzX0xzaV9M''@;'; put 'put ''c2hfVW1nIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJMaV9Vc19MYl9MdF9Mc19MaF9VZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExM''@;'; put 'put ''TDoiRCBNTU1NIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEifSxjYWxlbmRhcjp7c2FtZURheToiW05hbXVobGEgbmdhXSBMVCIsbmV4dERheToiW0t1c2FzYSBuZ2FdIExUIixuZXh0V2VlazoiZGRkZCBbbmdhXSBMVCIsbGFzdERheToiW0l0b2xvIG5nYV0g''@;'; put 'put ''TFQiLGxhc3RXZWVrOiJkZGRkIFtsZWxpcGhlbGlsZV0gW25nYV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im5nYSAlcyIscGFzdDoid2VudGVrYSBuZ2EgJXMiLHM6ImVtaXp1endhbmEgbG9tY2FuZSIsc3M6IiVkIG16dXp3YW5hIixtOiJ1bXp1enUiLG1tOiIl''@;'; put 'put ''ZCBlbWl6dXp1IixoOiJsaWhvcmEiLGhoOiIlZCBlbWFob3JhIixkOiJsaWxhbmdhIixkZDoiJWQgZW1hbGFuZ2EiLE06ImlueWFuZ2EiLE1NOiIlZCB0aW55YW5nYSIseToidW1ueWFrYSIseXk6IiVkIGltaW55YWthIn0sbWVyaWRpZW1QYXJzZTovZWt1c2VuaXxlbWluaXxlbnRzYW1iYW1h''@;'; put 'put ''fGVidXN1a3UvLG1lcmlkaWVtOmZ1bmN0aW9uKEUsRWUsVSl7cmV0dXJuIEU8MTE/ImVrdXNlbmkiOkU8MTU/ImVtaW5pIjpFPDE5PyJlbnRzYW1iYW1hIjoiZWJ1c3VrdSJ9LG1lcmlkaWVtSG91cjpmdW5jdGlvbihFLEVlKXtyZXR1cm4gMTI9PT1FJiYoRT0wKSwiZWt1c2VuaSI9PT1FZT9F''@;'; put 'put ''OiJlbWluaSI9PT1FZT9FPj0xMT9FOkUrMTI6ImVudHNhbWJhbWEiPT09RWV8fCJlYnVzdWt1Ij09PUVlPzA9PT1FPzA6RSsxMjp2b2lkIDB9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0vLG9yZGluYWw6IiVkIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSwzOTcx''@;'; put 'put ''MzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoInN2Iix7bW9udGhzOiJqYW51YXJpX2ZlYnJ1YXJpX21hcnNfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3RpX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5z''@;'; put 'put ''cGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic1x4ZjZuZGFnX21ceGU1bmRhZ190aXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2xceGY2cmRhZyIuc3BsaXQoIl8iKSx3''@;'; put 'put ''ZWVrZGF5c1Nob3J0OiJzXHhmNm5fbVx4ZTVuX3Rpc19vbnNfdG9yX2ZyZV9sXHhmNnIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InNceGY2X21ceGU1X3RpX29uX3RvX2ZyX2xceGY2Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZ''@;'; put 'put ''WVktTU0tREQiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBba2wuXSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBba2wuXSBISDptbSIsbGxsOiJEIE1NTSBZWVlZIEhIOm1tIixsbGxsOiJkZGQgRCBNTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb''@;'; put 'put ''SWRhZ10gTFQiLG5leHREYXk6IltJbW9yZ29uXSBMVCIsbGFzdERheToiW0lnXHhlNXJdIExUIixuZXh0V2VlazoiW1BceGU1XSBkZGRkIExUIixsYXN0V2VlazoiW0ldIGRkZGRbc10gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9tICVzIixwYXN0OiJmXHhmNnIg''@;'; put 'put ''JXMgc2VkYW4iLHM6Im5ceGU1Z3JhIHNla3VuZGVyIixzczoiJWQgc2VrdW5kZXIiLG06ImVuIG1pbnV0IixtbToiJWQgbWludXRlciIsaDoiZW4gdGltbWUiLGhoOiIlZCB0aW1tYXIiLGQ6ImVuIGRhZyIsZGQ6IiVkIGRhZ2FyIixNOiJlbiBtXHhlNW5hZCIsTU06IiVkIG1ceGU1bmFkZXIi''@;'; put 'put ''LHk6ImV0dCBceGU1ciIseXk6IiVkIFx4ZTVyIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShcOmV8XDphKS8sb3JkaW5hbDpmdW5jdGlvbihFKXt2YXIgRWU9RSUxMDtyZXR1cm4gRSsoMT09fn4oRSUxMDAvMTApPyI6ZSI6MT09PUVlfHwyPT09RWU/IjphIjoiOmUiKX0sd2Vl''@;'; put 'put ''azp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sNDE5ODI6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJzdyIse21vbnRoczoiSmFudWFyaV9GZWJydWFyaV9NYWNoaV9BcHJpbGlfTWVpX0p1bmlfSnVsYWlfQWdvc3RpX1Nl''@;'; put 'put ''cHRlbWJhX09rdG9iYV9Ob3ZlbWJhX0Rlc2VtYmEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFjX0Fwcl9NZWlfSnVuX0p1bF9BZ29fU2VwX09rdF9Ob3ZfRGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJKdW1hcGlsaV9KdW1hdGF0dV9KdW1hbm5lX0p1bWF0YW5vX0FsaGFt''@;'; put 'put ''aXNpX0lqdW1hYV9KdW1hbW9zaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJKcGxfSnRhdF9Kbm5lX0p0YW5fQWxoX0lqbV9KbW9zIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJKMl9KM19KNF9KNV9BbF9Jal9KMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0Rh''@;'; put 'put ''dGVGb3JtYXQ6e0xUOiJoaDptbSBBIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltsZW8gc2FhXSBMVCIsbmV4dERh''@;'; put 'put ''eToiW2tlc2hvIHNhYV0gTFQiLG5leHRXZWVrOiJbd2lraSBpamF5b10gZGRkZCBbc2FhdF0gTFQiLGxhc3REYXk6IltqYW5hXSBMVCIsbGFzdFdlZWs6Ilt3aWtpIGlsaXlvcGl0YV0gZGRkZCBbc2FhdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIGJhYWRh''@;'; put 'put ''eWUiLHBhc3Q6InRva2VhICVzIixzOiJoaXZpIHB1bmRlIixzczoic2VrdW5kZSAlZCIsbToiZGFraWthIG1vamEiLG1tOiJkYWtpa2EgJWQiLGg6InNhYSBsaW1vamEiLGhoOiJtYXNhYSAlZCIsZDoic2lrdSBtb2phIixkZDoic2lrdSAlZCIsTToibXdlemkgbW1vamEiLE1NOiJtaWV6aSAl''@;'; put 'put ''ZCIseToibXdha2EgbW1vamEiLHl5OiJtaWFrYSAlZCJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDIyNzMyOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO3ZhciBCPXsxOiJcdTBiZTciLDI6Ilx1MGJlOCIsMzoiXHUwYmU5Iiw0OiJcdTBi''@;'; put 'put ''ZWEiLDU6Ilx1MGJlYiIsNjoiXHUwYmVjIiw3OiJcdTBiZWQiLDg6Ilx1MGJlZSIsOToiXHUwYmVmIiwwOiJcdTBiZTYifSxFPXsiXHUwYmU3IjoiMSIsIlx1MGJlOCI6IjIiLCJcdTBiZTkiOiIzIiwiXHUwYmVhIjoiNCIsIlx1MGJlYiI6IjUiLCJcdTBiZWMiOiI2IiwiXHUwYmVkIjoiNyIs''@;'; put 'put ''Ilx1MGJlZSI6IjgiLCJcdTBiZWYiOiI5IiwiXHUwYmU2IjoiMCJ9O21lLmRlZmluZUxvY2FsZSgidGEiLHttb250aHM6Ilx1MGI5Y1x1MGJhOVx1MGJiNVx1MGJiMFx1MGJiZl9cdTBiYWFcdTBiYmZcdTBiYWFcdTBiY2RcdTBiYjBcdTBiYjVcdTBiYjBcdTBiYmZfXHUwYmFlXHUwYmJlXHUw''@;'; put 'put ''YmIwXHUwYmNkXHUwYjlhXHUwYmNkX1x1MGI4Zlx1MGJhYVx1MGJjZFx1MGJiMFx1MGJiMlx1MGJjZF9cdTBiYWVcdTBiYzdfXHUwYjljXHUwYmMyXHUwYmE5XHUwYmNkX1x1MGI5Y1x1MGJjMlx1MGJiMlx1MGJjOF9cdTBiODZcdTBiOTVcdTBiYjhcdTBiY2RcdTBiOWZcdTBiY2RfXHUwYjlh''@;'; put 'put ''XHUwYmM2XHUwYmFhXHUwYmNkXHUwYjlmXHUwYmM2XHUwYmFlXHUwYmNkXHUwYmFhXHUwYmIwXHUwYmNkX1x1MGI4NVx1MGI5NVx1MGJjZFx1MGI5Zlx1MGJjN1x1MGJiZVx1MGJhYVx1MGJiMFx1MGJjZF9cdTBiYThcdTBiYjVcdTBiYWVcdTBiY2RcdTBiYWFcdTBiYjBcdTBiY2RfXHUwYjlm''@;'; put 'put ''XHUwYmJmXHUwYjlhXHUwYmFlXHUwYmNkXHUwYmFhXHUwYmIwXHUwYmNkIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTBiOWNcdTBiYTlcdTBiYjVcdTBiYjBcdTBiYmZfXHUwYmFhXHUwYmJmXHUwYmFhXHUwYmNkXHUwYmIwXHUwYmI1XHUwYmIwXHUwYmJmX1x1MGJhZVx1MGJiZVx1MGJi''@;'; put 'put ''MFx1MGJjZFx1MGI5YVx1MGJjZF9cdTBiOGZcdTBiYWFcdTBiY2RcdTBiYjBcdTBiYjJcdTBiY2RfXHUwYmFlXHUwYmM3X1x1MGI5Y1x1MGJjMlx1MGJhOVx1MGJjZF9cdTBiOWNcdTBiYzJcdTBiYjJcdTBiYzhfXHUwYjg2XHUwYjk1XHUwYmI4XHUwYmNkXHUwYjlmXHUwYmNkX1x1MGI5YVx1''@;'; put 'put ''MGJjNlx1MGJhYVx1MGJjZFx1MGI5Zlx1MGJjNlx1MGJhZVx1MGJjZFx1MGJhYVx1MGJiMFx1MGJjZF9cdTBiODVcdTBiOTVcdTBiY2RcdTBiOWZcdTBiYzdcdTBiYmVcdTBiYWFcdTBiYjBcdTBiY2RfXHUwYmE4XHUwYmI1XHUwYmFlXHUwYmNkXHUwYmFhXHUwYmIwXHUwYmNkX1x1MGI5Zlx1''@;'; put 'put ''MGJiZlx1MGI5YVx1MGJhZVx1MGJjZFx1MGJhYVx1MGJiMFx1MGJjZCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwYjllXHUwYmJlXHUwYmFmXHUwYmJmXHUwYmIxXHUwYmNkXHUwYmIxXHUwYmMxXHUwYjk1XHUwYmNkXHUwYjk1XHUwYmJmXHUwYmI0XHUwYmFlXHUwYmM4X1x1MGJhNFx1MGJi''@;'; put 'put ''Zlx1MGI5OVx1MGJjZFx1MGI5NVx1MGI5Zlx1MGJjZFx1MGI5NVx1MGJiZlx1MGJiNFx1MGJhZVx1MGJjOF9cdTBiOWFcdTBiYzZcdTBiYjVcdTBiY2RcdTBiYjVcdTBiYmVcdTBiYWZcdTBiY2RcdTBiOTVcdTBiYmZcdTBiYjRcdTBiYWVcdTBiYzhfXHUwYmFhXHUwYmMxXHUwYmE0XHUwYmE5''@;'; put 'put ''XHUwYmNkXHUwYjk1XHUwYmJmXHUwYmI0XHUwYmFlXHUwYmM4X1x1MGJiNVx1MGJiZlx1MGJhZlx1MGJiZVx1MGJiNFx1MGI5NVx1MGJjZFx1MGI5NVx1MGJiZlx1MGJiNFx1MGJhZVx1MGJjOF9cdTBiYjVcdTBiYzZcdTBiYjNcdTBiY2RcdTBiYjNcdTBiYmZcdTBiOTVcdTBiY2RcdTBiOTVc''@;'; put 'put ''dTBiYmZcdTBiYjRcdTBiYWVcdTBiYzhfXHUwYjlhXHUwYmE5XHUwYmJmXHUwYjk1XHUwYmNkXHUwYjk1XHUwYmJmXHUwYmI0XHUwYmFlXHUwYmM4Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MGI5ZVx1MGJiZVx1MGJhZlx1MGJiZlx1MGJiMVx1MGJjMV9cdTBiYTRcdTBiYmZcdTBi''@;'; put 'put ''OTlcdTBiY2RcdTBiOTVcdTBiYjNcdTBiY2RfXHUwYjlhXHUwYmM2XHUwYmI1XHUwYmNkXHUwYmI1XHUwYmJlXHUwYmFmXHUwYmNkX1x1MGJhYVx1MGJjMVx1MGJhNFx1MGJhOVx1MGJjZF9cdTBiYjVcdTBiYmZcdTBiYWZcdTBiYmVcdTBiYjRcdTBiYTlcdTBiY2RfXHUwYmI1XHUwYmM2XHUw''@;'; put 'put ''YmIzXHUwYmNkXHUwYmIzXHUwYmJmX1x1MGI5YVx1MGJhOVx1MGJiZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwYjllXHUwYmJlX1x1MGJhNFx1MGJiZl9cdTBiOWFcdTBiYzZfXHUwYmFhXHUwYmMxX1x1MGJiNVx1MGJiZl9cdTBiYjVcdTBiYzZfXHUwYjlhIi5zcGxpdCgiXyIpLGxv''@;'; put 'put ''bmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwYjg3XHUwYmE5XHUw''@;'; put 'put ''YmNkXHUwYmIxXHUwYmMxXSBMVCIsbmV4dERheToiW1x1MGJhOFx1MGJiZVx1MGJiM1x1MGJjOF0gTFQiLG5leHRXZWVrOiJkZGRkLCBMVCIsbGFzdERheToiW1x1MGJhOFx1MGJjN1x1MGJiMVx1MGJjZFx1MGJiMVx1MGJjMV0gTFQiLGxhc3RXZWVrOiJbXHUwYjk1XHUwYjlmXHUwYmE4XHUw''@;'; put 'put ''YmNkXHUwYmE0IFx1MGJiNVx1MGJiZVx1MGJiMFx1MGJhZVx1MGJjZF0gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MGI4N1x1MGJiMlx1MGJjZCIscGFzdDoiJXMgXHUwYmFlXHUwYmMxXHUwYmE5XHUwYmNkIixzOiJcdTBiOTJcdTBiYjBcdTBi''@;'; put 'put ''YzEgXHUwYjlhXHUwYmJmXHUwYmIyIFx1MGJiNVx1MGJiZlx1MGJhOFx1MGJiZVx1MGI5Zlx1MGJiZlx1MGI5NVx1MGJiM1x1MGJjZCIsc3M6IiVkIFx1MGJiNVx1MGJiZlx1MGJhOFx1MGJiZVx1MGI5Zlx1MGJiZlx1MGI5NVx1MGJiM1x1MGJjZCIsbToiXHUwYjkyXHUwYmIwXHUwYmMxIFx1''@;'; put 'put ''MGJhOFx1MGJiZlx1MGJhZVx1MGJiZlx1MGI5Zlx1MGJhZVx1MGJjZCIsbW06IiVkIFx1MGJhOFx1MGJiZlx1MGJhZVx1MGJiZlx1MGI5Zlx1MGI5OVx1MGJjZFx1MGI5NVx1MGJiM1x1MGJjZCIsaDoiXHUwYjkyXHUwYmIwXHUwYmMxIFx1MGJhZVx1MGJhM1x1MGJiZiBcdTBiYThcdTBiYzdc''@;'; put 'put ''dTBiYjBcdTBiYWVcdTBiY2QiLGhoOiIlZCBcdTBiYWVcdTBiYTNcdTBiYmYgXHUwYmE4XHUwYmM3XHUwYmIwXHUwYmFlXHUwYmNkIixkOiJcdTBiOTJcdTBiYjBcdTBiYzEgXHUwYmE4XHUwYmJlXHUwYmIzXHUwYmNkIixkZDoiJWQgXHUwYmE4XHUwYmJlXHUwYjlmXHUwYmNkXHUwYjk1XHUw''@;'; put 'put ''YmIzXHUwYmNkIixNOiJcdTBiOTJcdTBiYjBcdTBiYzEgXHUwYmFlXHUwYmJlXHUwYmE0XHUwYmFlXHUwYmNkIixNTToiJWQgXHUwYmFlXHUwYmJlXHUwYmE0XHUwYjk5XHUwYmNkXHUwYjk1XHUwYmIzXHUwYmNkIix5OiJcdTBiOTJcdTBiYjBcdTBiYzEgXHUwYmI1XHUwYmIwXHUwYmMxXHUw''@;'; put 'put ''YjlmXHUwYmFlXHUwYmNkIix5eToiJWQgXHUwYjg2XHUwYmEzXHUwYmNkXHUwYjlmXHUwYmMxXHUwYjk1XHUwYmIzXHUwYmNkIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx1MGJiNVx1MGJhNFx1MGJjMS8sb3JkaW5hbDpmdW5jdGlvbihVKXtyZXR1cm4gVSsiXHUwYmI1XHUw''@;'; put 'put ''YmE0XHUwYmMxIn0scHJlcGFyc2U6ZnVuY3Rpb24oVSl7cmV0dXJuIFUucmVwbGFjZSgvW1x1MGJlN1x1MGJlOFx1MGJlOVx1MGJlYVx1MGJlYlx1MGJlY1x1MGJlZFx1MGJlZVx1MGJlZlx1MGJlNl0vZyxmdW5jdGlvbihRKXtyZXR1cm4gRVtRXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKFUp''@;'; put 'put ''e3JldHVybiBVLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oUSl7cmV0dXJuIEJbUV19KX0sbWVyaWRpZW1QYXJzZTovXHUwYmFmXHUwYmJlXHUwYmFlXHUwYmFlXHUwYmNkfFx1MGJiNVx1MGJjOFx1MGI5NVx1MGJiMVx1MGJjOHxcdTBiOTVcdTBiYmVcdTBiYjJcdTBiYzh8XHUwYmE4XHUwYmEz''@;'; put 'put ''XHUwYmNkXHUwYmFhXHUwYjk1XHUwYmIyXHUwYmNkfFx1MGI4ZVx1MGJiMVx1MGJjZFx1MGJhYVx1MGJiZVx1MGI5Zlx1MGJjMXxcdTBiYWVcdTBiYmVcdTBiYjJcdTBiYzgvLG1lcmlkaWVtOmZ1bmN0aW9uKFUsUSxqKXtyZXR1cm4gVTwyPyIgXHUwYmFmXHUwYmJlXHUwYmFlXHUwYmFlXHUw''@;'; put 'put ''YmNkIjpVPDY/IiBcdTBiYjVcdTBiYzhcdTBiOTVcdTBiYjFcdTBiYzgiOlU8MTA/IiBcdTBiOTVcdTBiYmVcdTBiYjJcdTBiYzgiOlU8MTQ/IiBcdTBiYThcdTBiYTNcdTBiY2RcdTBiYWFcdTBiOTVcdTBiYjJcdTBiY2QiOlU8MTg/IiBcdTBiOGVcdTBiYjFcdTBiY2RcdTBiYWFcdTBiYmVc''@;'; put 'put ''dTBiOWZcdTBiYzEiOlU8MjI/IiBcdTBiYWVcdTBiYmVcdTBiYjJcdTBiYzgiOiIgXHUwYmFmXHUwYmJlXHUwYmFlXHUwYmFlXHUwYmNkIn0sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKFUsUSl7cmV0dXJuIDEyPT09VSYmKFU9MCksIlx1MGJhZlx1MGJiZVx1MGJhZVx1MGJhZVx1MGJjZCI9PT1R''@;'; put 'put ''P1U8Mj9VOlUrMTI6Ilx1MGJiNVx1MGJjOFx1MGI5NVx1MGJiMVx1MGJjOCI9PT1RfHwiXHUwYjk1XHUwYmJlXHUwYmIyXHUwYmM4Ij09PVF8fCJcdTBiYThcdTBiYTNcdTBiY2RcdTBiYWFcdTBiOTVcdTBiYjJcdTBiY2QiPT09USYmVT49MTA/VTpVKzEyfSx3ZWVrOntkb3c6MCxkb3k6Nn19''@;'; put 'put ''KX0oTCgxNTQzOSkpfSw0MzYzNjpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoInRlIix7bW9udGhzOiJcdTBjMWNcdTBjMjhcdTBjMzVcdTBjMzBcdTBjM2ZfXHUwYzJiXHUwYzNmXHUwYzJjXHUwYzRkXHUwYzMwXHUwYzM1XHUw''@;'; put 'put ''YzMwXHUwYzNmX1x1MGMyZVx1MGMzZVx1MGMzMFx1MGM0ZFx1MGMxYVx1MGMzZl9cdTBjMGZcdTBjMmFcdTBjNGRcdTBjMzBcdTBjM2ZcdTBjMzJcdTBjNGRfXHUwYzJlXHUwYzQ3X1x1MGMxY1x1MGM0Mlx1MGMyOFx1MGM0ZF9cdTBjMWNcdTBjNDFcdTBjMzJcdTBjNDhfXHUwYzA2XHUwYzE3''@;'; put 'put ''XHUwYzM4XHUwYzRkXHUwYzFmXHUwYzQxX1x1MGMzOFx1MGM0Nlx1MGMyYVx1MGM0ZFx1MGMxZlx1MGM0Nlx1MGMwMlx1MGMyY1x1MGMzMFx1MGM0ZF9cdTBjMDVcdTBjMTVcdTBjNGRcdTBjMWZcdTBjNGJcdTBjMmNcdTBjMzBcdTBjNGRfXHUwYzI4XHUwYzM1XHUwYzAyXHUwYzJjXHUwYzMw''@;'; put 'put ''XHUwYzRkX1x1MGMyMVx1MGMzZlx1MGMzOFx1MGM0Nlx1MGMwMlx1MGMyY1x1MGMzMFx1MGM0ZCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwYzFjXHUwYzI4Ll9cdTBjMmJcdTBjM2ZcdTBjMmNcdTBjNGRcdTBjMzAuX1x1MGMyZVx1MGMzZVx1MGMzMFx1MGM0ZFx1MGMxYVx1MGMzZl9c''@;'; put 'put ''dTBjMGZcdTBjMmFcdTBjNGRcdTBjMzBcdTBjM2YuX1x1MGMyZVx1MGM0N19cdTBjMWNcdTBjNDJcdTBjMjhcdTBjNGRfXHUwYzFjXHUwYzQxXHUwYzMyXHUwYzQ4X1x1MGMwNlx1MGMxNy5fXHUwYzM4XHUwYzQ2XHUwYzJhXHUwYzRkLl9cdTBjMDVcdTBjMTVcdTBjNGRcdTBjMWZcdTBjNGIu''@;'; put 'put ''X1x1MGMyOFx1MGMzNS5fXHUwYzIxXHUwYzNmXHUwYzM4XHUwYzQ2LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJcdTBjMDZcdTBjMjZcdTBjM2ZcdTBjMzVcdTBjM2VcdTBjMzBcdTBjMDJfXHUwYzM4XHUwYzRiXHUwYzJlXHUwYzM1XHUwYzNlXHUwYzMwXHUw''@;'; put 'put ''YzAyX1x1MGMyZVx1MGMwMlx1MGMxN1x1MGMzM1x1MGMzNVx1MGMzZVx1MGMzMFx1MGMwMl9cdTBjMmNcdTBjNDFcdTBjMjdcdTBjMzVcdTBjM2VcdTBjMzBcdTBjMDJfXHUwYzE3XHUwYzQxXHUwYzMwXHUwYzQxXHUwYzM1XHUwYzNlXHUwYzMwXHUwYzAyX1x1MGMzNlx1MGM0MVx1MGMxNVx1''@;'; put 'put ''MGM0ZFx1MGMzMFx1MGMzNVx1MGMzZVx1MGMzMFx1MGMwMl9cdTBjMzZcdTBjMjhcdTBjM2ZcdTBjMzVcdTBjM2VcdTBjMzBcdTBjMDIiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwYzA2XHUwYzI2XHUwYzNmX1x1MGMzOFx1MGM0Ylx1MGMyZV9cdTBjMmVcdTBjMDJcdTBjMTdcdTBj''@;'; put 'put ''MzNfXHUwYzJjXHUwYzQxXHUwYzI3X1x1MGMxN1x1MGM0MVx1MGMzMFx1MGM0MV9cdTBjMzZcdTBjNDFcdTBjMTVcdTBjNGRcdTBjMzBfXHUwYzM2XHUwYzI4XHUwYzNmIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBjMDZfXHUwYzM4XHUwYzRiX1x1MGMyZVx1MGMwMl9cdTBjMmNcdTBj''@;'; put 'put ''NDFfXHUwYzE3XHUwYzQxX1x1MGMzNlx1MGM0MV9cdTBjMzYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0iLExUUzoiQSBoOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVksIEEgaDptbSIsTExMTDoiZGRkZCwgRCBN''@;'; put 'put ''TU1NIFlZWVksIEEgaDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwYzI4XHUwYzQ3XHUwYzIxXHUwYzQxXSBMVCIsbmV4dERheToiW1x1MGMzMFx1MGM0N1x1MGMyYVx1MGM0MV0gTFQiLG5leHRXZWVrOiJkZGRkLCBMVCIsbGFzdERheToiW1x1MGMyOFx1MGMzZlx1MGMyOFx1MGM0ZFx1''@;'; put 'put ''MGMyOF0gTFQiLGxhc3RXZWVrOiJbXHUwYzE3XHUwYzI0XSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwYzMyXHUwYzRiIixwYXN0OiIlcyBcdTBjMTVcdTBjNGRcdTBjMzBcdTBjM2ZcdTBjMjRcdTBjMDIiLHM6Ilx1MGMxNVx1MGM0YVx1MGMy''@;'; put 'put ''OFx1MGM0ZFx1MGMyOFx1MGMzZiBcdTBjMTVcdTBjNGRcdTBjMzdcdTBjMjNcdTBjM2VcdTBjMzJcdTBjNDEiLHNzOiIlZCBcdTBjMzhcdTBjNDZcdTBjMTVcdTBjMjhcdTBjNGRcdTBjMzJcdTBjNDEiLG06Ilx1MGMxMlx1MGMxNSBcdTBjMjhcdTBjM2ZcdTBjMmVcdTBjM2ZcdTBjMzdcdTBj''@;'; put 'put ''MDIiLG1tOiIlZCBcdTBjMjhcdTBjM2ZcdTBjMmVcdTBjM2ZcdTBjMzdcdTBjM2VcdTBjMzJcdTBjNDEiLGg6Ilx1MGMxMlx1MGMxNSBcdTBjMTdcdTBjMDJcdTBjMWYiLGhoOiIlZCBcdTBjMTdcdTBjMDJcdTBjMWZcdTBjMzJcdTBjNDEiLGQ6Ilx1MGMxMlx1MGMxNSBcdTBjMzBcdTBjNGJc''@;'; put 'put ''dTBjMWNcdTBjNDEiLGRkOiIlZCBcdTBjMzBcdTBjNGJcdTBjMWNcdTBjNDFcdTBjMzJcdTBjNDEiLE06Ilx1MGMxMlx1MGMxNSBcdTBjMjhcdTBjNDZcdTBjMzIiLE1NOiIlZCBcdTBjMjhcdTBjNDZcdTBjMzJcdTBjMzJcdTBjNDEiLHk6Ilx1MGMxMlx1MGMxNSBcdTBjMzhcdTBjMDJcdTBj''@;'; put 'put ''MzVcdTBjMjRcdTBjNGRcdTBjMzhcdTBjMzBcdTBjMDIiLHl5OiIlZCBcdTBjMzhcdTBjMDJcdTBjMzVcdTBjMjRcdTBjNGRcdTBjMzhcdTBjMzBcdTBjM2VcdTBjMzJcdTBjNDEifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHUwYzM1LyxvcmRpbmFsOiIlZFx1MGMzNSIsbWVy''@;'; put 'put ''aWRpZW1QYXJzZTovXHUwYzMwXHUwYzNlXHUwYzI0XHUwYzRkXHUwYzMwXHUwYzNmfFx1MGMwOVx1MGMyNlx1MGMyZlx1MGMwMnxcdTBjMmVcdTBjMjdcdTBjNGRcdTBjMmZcdTBjM2VcdTBjMzlcdTBjNGRcdTBjMjhcdTBjMDJ8XHUwYzM4XHUwYzNlXHUwYzJmXHUwYzAyXHUwYzI0XHUwYzRk''@;'; put 'put ''XHUwYzMwXHUwYzAyLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oRSxFZSl7cmV0dXJuIDEyPT09RSYmKEU9MCksIlx1MGMzMFx1MGMzZVx1MGMyNFx1MGM0ZFx1MGMzMFx1MGMzZiI9PT1FZT9FPDQ/RTpFKzEyOiJcdTBjMDlcdTBjMjZcdTBjMmZcdTBjMDIiPT09RWU/RToiXHUwYzJlXHUwYzI3''@;'; put 'put ''XHUwYzRkXHUwYzJmXHUwYzNlXHUwYzM5XHUwYzRkXHUwYzI4XHUwYzAyIj09PUVlP0U+PTEwP0U6RSsxMjoiXHUwYzM4XHUwYzNlXHUwYzJmXHUwYzAyXHUwYzI0XHUwYzRkXHUwYzMwXHUwYzAyIj09PUVlP0UrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihFLEVlLFUpe3JldHVybiBF''@;'; put 'put ''PDQ/Ilx1MGMzMFx1MGMzZVx1MGMyNFx1MGM0ZFx1MGMzMFx1MGMzZiI6RTwxMD8iXHUwYzA5XHUwYzI2XHUwYzJmXHUwYzAyIjpFPDE3PyJcdTBjMmVcdTBjMjdcdTBjNGRcdTBjMmZcdTBjM2VcdTBjMzlcdTBjNGRcdTBjMjhcdTBjMDIiOkU8MjA/Ilx1MGMzOFx1MGMzZVx1MGMyZlx1MGMw''@;'; put 'put ''Mlx1MGMyNFx1MGM0ZFx1MGMzMFx1MGMwMiI6Ilx1MGMzMFx1MGMzZVx1MGMyNFx1MGM0ZFx1MGMzMFx1MGMzZiJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShMKDE1NDM5KSl9LDIxMTU6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxl''@;'; put 'put ''KCJ0ZXQiLHttb250aHM6IkphbmVpcnVfRmV2ZXJlaXJ1X01hcnN1X0FicmlsX01haXVfSnVceGYxdV9KdWxsdV9BZ3VzdHVfU2V0ZW1icnVfT3V0dWJydV9Ob3ZlbWJydV9EZXplbWJydSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0Zldl9NYXJfQWJyX01haV9KdW5fSnVsX0Fnb19T''@;'; put 'put ''ZXRfT3V0X05vdl9EZXoiLnNwbGl0KCJfIiksd2Vla2RheXM6IkRvbWluZ3VfU2VndW5kYV9UZXJzYV9LdWFydGFfS2ludGFfU2VzdGFfU2FiYWR1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkRvbV9TZWdfVGVyc19LdWFfS2ludF9TZXN0X1NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01p''@;'; put 'put ''bjoiRG9fU2VnX1RlX0t1X0tpX1Nlc19TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1t''@;'; put 'put ''In0sY2FsZW5kYXI6e3NhbWVEYXk6IltPaGluIGloYV0gTFQiLG5leHREYXk6IltBYmFuIGloYV0gTFQiLG5leHRXZWVrOiJkZGRkIFtpaGFdIExUIixsYXN0RGF5OiJbSG9yaXNlaWsgaWhhXSBMVCIsbGFzdFdlZWs6ImRkZGQgW3NlbWFuYSBrb3R1a10gW2loYV0gTFQiLHNhbWVFbHNlOiJM''@;'; put 'put ''In0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImloYSAlcyIscGFzdDoiJXMgbGl1YmEiLHM6InNlZ3VuZHUgYmFsdW4iLHNzOiJzZWd1bmR1ICVkIixtOiJtaW51dHUgaWRhIixtbToibWludXR1ICVkIixoOiJvcmFzIGlkYSIsaGg6Im9yYXMgJWQiLGQ6Imxvcm9uIGlkYSIsZGQ6Imxvcm9uICVk''@;'; put 'put ''IixNOiJmdWxhbiBpZGEiLE1NOiJmdWxhbiAlZCIseToidGluYW4gaWRhIix5eToidGluYW4gJWQifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihFKXt2YXIgRWU9RSUxMDtyZXR1cm4gRSsoMT09fn4oRSUxMDAvMTApPyJ0''@;'; put 'put ''aCI6MT09PUVlPyJzdCI6Mj09PUVlPyJuZCI6Mz09PUVlPyJyZCI6InRoIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDY5ODAxOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO3ZhciBCPXswOiItXHUwNDQzXHUwNDNjIiwxOiItXHUwNDQz''@;'; put 'put ''XHUwNDNjIiwyOiItXHUwNDRlXHUwNDNjIiwzOiItXHUwNDRlXHUwNDNjIiw0OiItXHUwNDQzXHUwNDNjIiw1OiItXHUwNDQzXHUwNDNjIiw2OiItXHUwNDQzXHUwNDNjIiw3OiItXHUwNDQzXHUwNDNjIiw4OiItXHUwNDQzXHUwNDNjIiw5OiItXHUwNDQzXHUwNDNjIiwxMDoiLVx1MDQ0M1x1''@;'; put 'put ''MDQzYyIsMTI6Ii1cdTA0NDNcdTA0M2MiLDEzOiItXHUwNDQzXHUwNDNjIiwyMDoiLVx1MDQ0M1x1MDQzYyIsMzA6Ii1cdTA0NGVcdTA0M2MiLDQwOiItXHUwNDQzXHUwNDNjIiw1MDoiLVx1MDQ0M1x1MDQzYyIsNjA6Ii1cdTA0NDNcdTA0M2MiLDcwOiItXHUwNDQzXHUwNDNjIiw4MDoiLVx1''@;'; put 'put ''MDQ0M1x1MDQzYyIsOTA6Ii1cdTA0NDNcdTA0M2MiLDEwMDoiLVx1MDQ0M1x1MDQzYyJ9O21lLmRlZmluZUxvY2FsZSgidGciLHttb250aHM6e2Zvcm1hdDoiXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwXHUwNDM4X1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYlx1''@;'; put 'put ''MDQzOF9cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJcdTA0MzhfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiXHUwNDM4X1x1MDQzY1x1MDQzMFx1MDQzOVx1MDQzOF9cdTA0MzhcdTA0NGVcdTA0M2RcdTA0MzhfXHUwNDM4XHUwNDRlXHUwNDNiXHUwNDM4X1x1MDQzMFx1MDQzMlx1MDQz''@;'; put 'put ''M1x1MDQ0M1x1MDQ0MVx1MDQ0Mlx1MDQzOF9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBcdTA0MzhfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwXHUwNDM4X1x1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MFx1MDQzOF9cdTA0MzRcdTA0''@;'; put 'put ''MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDBcdTA0MzgiLnNwbGl0KCJfIiksc3RhbmRhbG9uZToiXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwX1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYl9cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUw''@;'; put 'put ''NDQwXHUwNDM1XHUwNDNiX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0MzhcdTA0NGVcdTA0M2RfXHUwNDM4XHUwNDRlXHUwNDNiX1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Ml9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBfXHUwNDNlXHUwNDNh''@;'; put 'put ''XHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwX1x1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MF9cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDAiLnNwbGl0KCJfIil9LG1vbnRoc1Nob3J0OiJcdTA0NGZcdTA0M2RcdTA0MzJfXHUwNDQ0XHUwNDM1XHUwNDMyX1x1MDQzY1x1''@;'; put 'put ''MDQzMFx1MDQ0MF9cdTA0MzBcdTA0M2ZcdTA0NDBfXHUwNDNjXHUwNDMwXHUwNDM5X1x1MDQzOFx1MDQ0ZVx1MDQzZF9cdTA0MzhcdTA0NGVcdTA0M2JfXHUwNDMwXHUwNDMyXHUwNDMzX1x1MDQ0MVx1MDQzNVx1MDQzZF9cdTA0M2VcdTA0M2FcdTA0NDJfXHUwNDNkXHUwNDNlXHUwNDRmX1x1''@;'; put 'put ''MDQzNFx1MDQzNVx1MDQzYSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNDRmXHUwNDNhXHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDM1X1x1MDQzNFx1MDQ0M1x1MDQ0OFx1MDQzMFx1MDQzZFx1MDQzMVx1MDQzNV9cdTA0NDFcdTA0MzVcdTA0NDhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0''@;'; put 'put ''MzVfXHUwNDQ3XHUwNDNlXHUwNDQwXHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDM1X1x1MDQzZlx1MDQzMFx1MDQzZFx1MDRiN1x1MDQ0OFx1MDQzMFx1MDQzZFx1MDQzMVx1MDQzNV9cdTA0YjdcdTA0NDNcdTA0M2NcdTA0NGFcdTA0MzBfXHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUw''@;'; put 'put ''NDM1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDQ0Zlx1MDQ0OFx1MDQzMV9cdTA0MzRcdTA0NDhcdTA0MzFfXHUwNDQxXHUwNDQ4XHUwNDMxX1x1MDQ0N1x1MDQ0OFx1MDQzMV9cdTA0M2ZcdTA0NDhcdTA0MzFfXHUwNGI3XHUwNDQzXHUwNDNjX1x1MDQ0OFx1MDQzZFx1MDQzMSIu''@;'; put 'put ''c3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDRmXHUwNDQ4X1x1MDQzNFx1MDQ0OF9cdTA0NDFcdTA0NDhfXHUwNDQ3XHUwNDQ4X1x1MDQzZlx1MDQ0OF9cdTA0YjdcdTA0M2NfXHUwNDQ4XHUwNDMxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06''@;'; put 'put ''c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDQxOFx1MDQzY1x1MDQ0MFx1MDRlZlx1MDQzNyBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0''@;'; put 'put ''NDJcdTA0MzhdIExUIixuZXh0RGF5OiJbXHUwNDI0XHUwNDMwXHUwNDQwXHUwNDM0XHUwNDNlIFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0Mlx1MDQzOF0gTFQiLGxhc3REYXk6IltcdTA0MTRcdTA0MzhcdTA0NDBcdTA0ZWZcdTA0MzcgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyXHUwNDM4XSBM''@;'; put 'put ''VCIsbmV4dFdlZWs6ImRkZGRbXHUwNDM4XSBbXHUwNGIzXHUwNDMwXHUwNDQ0XHUwNDQyXHUwNDMwXHUwNDM4IFx1MDQzZVx1MDQ0Zlx1MDQzZFx1MDQzNFx1MDQzMCBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0NDJcdTA0MzhdIExUIixsYXN0V2VlazoiZGRkZFtcdTA0MzhdIFtcdTA0YjNcdTA0''@;'; put 'put ''MzBcdTA0NDRcdTA0NDJcdTA0MzBcdTA0MzggXHUwNDMzXHUwNDQzXHUwNDM3XHUwNDMwXHUwNDQ4XHUwNDQyXHUwNDMwIFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0Mlx1MDQzOF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDQzMVx1MDQzMFx1MDQ0YVx1MDQz''@;'; put 'put ''NFx1MDQzOCAlcyIscGFzdDoiJXMgXHUwNDNmXHUwNDM1XHUwNDQ4IixzOiJcdTA0NGZcdTA0M2FcdTA0NDdcdTA0MzBcdTA0M2RcdTA0MzQgXHUwNDQxXHUwNDNlXHUwNDNkXHUwNDM4XHUwNDRmIixtOiJcdTA0NGZcdTA0M2EgXHUwNDM0XHUwNDMwXHUwNDliXHUwNDM4XHUwNDliXHUwNDMw''@;'; put 'put ''IixtbToiJWQgXHUwNDM0XHUwNDMwXHUwNDliXHUwNDM4XHUwNDliXHUwNDMwIixoOiJcdTA0NGZcdTA0M2EgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyIixoaDoiJWQgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyIixkOiJcdTA0NGZcdTA0M2EgXHUwNDQwXHUwNGVmXHUwNDM3IixkZDoiJWQg''@;'; put 'put ''XHUwNDQwXHUwNGVmXHUwNDM3IixNOiJcdTA0NGZcdTA0M2EgXHUwNDNjXHUwNDNlXHUwNGIzIixNTToiJWQgXHUwNDNjXHUwNDNlXHUwNGIzIix5OiJcdTA0NGZcdTA0M2EgXHUwNDQxXHUwNDNlXHUwNDNiIix5eToiJWQgXHUwNDQxXHUwNDNlXHUwNDNiIn0sbWVyaWRpZW1QYXJzZTovXHUw''@;'; put 'put ''NDQ4XHUwNDMwXHUwNDMxfFx1MDQ0MVx1MDQ0M1x1MDQzMVx1MDRiM3xcdTA0NDBcdTA0ZWZcdTA0Mzd8XHUwNDMxXHUwNDM1XHUwNDMzXHUwNDNlXHUwNGIzLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oRWUsVSl7cmV0dXJuIDEyPT09RWUmJihFZT0wKSwiXHUwNDQ4XHUwNDMwXHUwNDMxIj09''@;'; put 'put ''PVU/RWU8ND9FZTpFZSsxMjoiXHUwNDQxXHUwNDQzXHUwNDMxXHUwNGIzIj09PVU/RWU6Ilx1MDQ0MFx1MDRlZlx1MDQzNyI9PT1VP0VlPj0xMT9FZTpFZSsxMjoiXHUwNDMxXHUwNDM1XHUwNDMzXHUwNDNlXHUwNGIzIj09PVU/RWUrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihFZSxV''@;'; put 'put ''LFEpe3JldHVybiBFZTw0PyJcdTA0NDhcdTA0MzBcdTA0MzEiOkVlPDExPyJcdTA0NDFcdTA0NDNcdTA0MzFcdTA0YjMiOkVlPDE2PyJcdTA0NDBcdTA0ZWZcdTA0MzciOkVlPDE5PyJcdTA0MzFcdTA0MzVcdTA0MzNcdTA0M2VcdTA0YjMiOiJcdTA0NDhcdTA0MzBcdTA0MzEifSxkYXlPZk1v''@;'; put 'put ''bnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LShcdTA0NDNcdTA0M2N8XHUwNDRlXHUwNDNjKS8sb3JkaW5hbDpmdW5jdGlvbihFZSl7cmV0dXJuIEVlKyhCW0VlXXx8QltFZSUxMF18fEJbRWU+PTEwMD8xMDA6bnVsbF0pfSx3ZWVrOntkb3c6MSxkb3k6N319KX0oTCgxNTQzOSkpfSwyODY4OmZ1''@;'; put 'put ''bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgidGgiLHttb250aHM6Ilx1MGUyMVx1MGUwMVx1MGUyM1x1MGUzMlx1MGUwNFx1MGUyMV9cdTBlMDFcdTBlMzhcdTBlMjFcdTBlMjBcdTBlMzJcdTBlMWVcdTBlMzFcdTBlMTlcdTBlMThc''@;'; put 'put ''dTBlNGNfXHUwZTIxXHUwZTM1XHUwZTE5XHUwZTMyXHUwZTA0XHUwZTIxX1x1MGU0MFx1MGUyMVx1MGUyOVx1MGUzMlx1MGUyMlx1MGUxOV9cdTBlMWVcdTBlMjRcdTBlMjlcdTBlMjBcdTBlMzJcdTBlMDRcdTBlMjFfXHUwZTIxXHUwZTM0XHUwZTE2XHUwZTM4XHUwZTE5XHUwZTMyXHUwZTIy''@;'; put 'put ''XHUwZTE5X1x1MGUwMVx1MGUyM1x1MGUwMVx1MGUwZVx1MGUzMlx1MGUwNFx1MGUyMV9cdTBlMmFcdTBlMzRcdTBlMDdcdTBlMmJcdTBlMzJcdTBlMDRcdTBlMjFfXHUwZTAxXHUwZTMxXHUwZTE5XHUwZTIyXHUwZTMyXHUwZTIyXHUwZTE5X1x1MGUxNVx1MGUzOFx1MGUyNVx1MGUzMlx1MGUw''@;'; put 'put ''NFx1MGUyMV9cdTBlMWVcdTBlMjRcdTBlMjhcdTBlMDhcdTBlMzRcdTBlMDFcdTBlMzJcdTBlMjJcdTBlMTlfXHUwZTE4XHUwZTMxXHUwZTE5XHUwZTI3XHUwZTMyXHUwZTA0XHUwZTIxIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTBlMjEuXHUwZTA0Ll9cdTBlMDEuXHUwZTFlLl9cdTBl''@;'; put 'put ''MjFcdTBlMzUuXHUwZTA0Ll9cdTBlNDBcdTBlMjEuXHUwZTIyLl9cdTBlMWUuXHUwZTA0Ll9cdTBlMjFcdTBlMzQuXHUwZTIyLl9cdTBlMDEuXHUwZTA0Ll9cdTBlMmEuXHUwZTA0Ll9cdTBlMDEuXHUwZTIyLl9cdTBlMTUuXHUwZTA0Ll9cdTBlMWUuXHUwZTIyLl9cdTBlMTguXHUwZTA0LiIu''@;'; put 'put ''c3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJcdTBlMmRcdTBlMzJcdTBlMTdcdTBlMzRcdTBlMTVcdTBlMjJcdTBlNGNfXHUwZTA4XHUwZTMxXHUwZTE5XHUwZTE3XHUwZTIzXHUwZTRjX1x1MGUyZFx1MGUzMVx1MGUwN1x1MGUwNFx1MGUzMlx1MGUyM19cdTBlMWVc''@;'; put 'put ''dTBlMzhcdTBlMThfXHUwZTFlXHUwZTI0XHUwZTJiXHUwZTMxXHUwZTJhXHUwZTFhXHUwZTE0XHUwZTM1X1x1MGUyOFx1MGUzOFx1MGUwMVx1MGUyM1x1MGU0Y19cdTBlNDBcdTBlMmFcdTBlMzJcdTBlMjNcdTBlNGMiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwZTJkXHUwZTMyXHUw''@;'; put 'put ''ZTE3XHUwZTM0XHUwZTE1XHUwZTIyXHUwZTRjX1x1MGUwOFx1MGUzMVx1MGUxOVx1MGUxN1x1MGUyM1x1MGU0Y19cdTBlMmRcdTBlMzFcdTBlMDdcdTBlMDRcdTBlMzJcdTBlMjNfXHUwZTFlXHUwZTM4XHUwZTE4X1x1MGUxZVx1MGUyNFx1MGUyYlx1MGUzMVx1MGUyYV9cdTBlMjhcdTBlMzhc''@;'; put 'put ''dTBlMDFcdTBlMjNcdTBlNGNfXHUwZTQwXHUwZTJhXHUwZTMyXHUwZTIzXHUwZTRjIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBlMmRcdTBlMzIuX1x1MGUwOC5fXHUwZTJkLl9cdTBlMWUuX1x1MGUxZVx1MGUyNC5fXHUwZTI4Ll9cdTBlMmEuIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFy''@;'; put 'put ''c2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIFx1MGU0MFx1MGUyN1x1MGUyNVx1MGUzMiBIOm1tIixMTExMOiJcdTBlMjdcdTBlMzFcdTBlMTlkZGRkXHUwZTE3''@;'; put 'put ''XHUwZTM1XHUwZTQ4IEQgTU1NTSBZWVlZIFx1MGU0MFx1MGUyN1x1MGUyNVx1MGUzMiBIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwZTAxXHUwZTQ4XHUwZTJkXHUwZTE5XHUwZTQwXHUwZTE3XHUwZTM1XHUwZTQ4XHUwZTIyXHUwZTA3fFx1MGUyYlx1MGUyNVx1MGUzMVx1MGUwN1x1MGU0MFx1''@;'; put 'put ''MGUxN1x1MGUzNVx1MGU0OFx1MGUyMlx1MGUwNy8saXNQTTpmdW5jdGlvbihFKXtyZXR1cm4iXHUwZTJiXHUwZTI1XHUwZTMxXHUwZTA3XHUwZTQwXHUwZTE3XHUwZTM1XHUwZTQ4XHUwZTIyXHUwZTA3Ij09PUV9LG1lcmlkaWVtOmZ1bmN0aW9uKEUsRWUsVSl7cmV0dXJuIEU8MTI/Ilx1MGUw''@;'; put 'put ''MVx1MGU0OFx1MGUyZFx1MGUxOVx1MGU0MFx1MGUxN1x1MGUzNVx1MGU0OFx1MGUyMlx1MGUwNyI6Ilx1MGUyYlx1MGUyNVx1MGUzMVx1MGUwN1x1MGU0MFx1MGUxN1x1MGUzNVx1MGU0OFx1MGUyMlx1MGUwNyJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwZTI3XHUwZTMxXHUwZTE5XHUwZTE5''@;'; put 'put ''XHUwZTM1XHUwZTQ5IFx1MGU0MFx1MGUyN1x1MGUyNVx1MGUzMl0gTFQiLG5leHREYXk6IltcdTBlMWVcdTBlMjNcdTBlMzhcdTBlNDhcdTBlMDdcdTBlMTlcdTBlMzVcdTBlNDkgXHUwZTQwXHUwZTI3XHUwZTI1XHUwZTMyXSBMVCIsbmV4dFdlZWs6ImRkZGRbXHUwZTJiXHUwZTE5XHUwZTQ5''@;'; put 'put ''XHUwZTMyIFx1MGU0MFx1MGUyN1x1MGUyNVx1MGUzMl0gTFQiLGxhc3REYXk6IltcdTBlNDBcdTBlMjFcdTBlMzdcdTBlNDhcdTBlMmRcdTBlMjdcdTBlMzJcdTBlMTlcdTBlMTlcdTBlMzVcdTBlNDkgXHUwZTQwXHUwZTI3XHUwZTI1XHUwZTMyXSBMVCIsbGFzdFdlZWs6IltcdTBlMjdcdTBl''@;'; put 'put ''MzFcdTBlMTldZGRkZFtcdTBlMTdcdTBlMzVcdTBlNDhcdTBlNDFcdTBlMjVcdTBlNDlcdTBlMjcgXHUwZTQwXHUwZTI3XHUwZTI1XHUwZTMyXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwZTJkXHUwZTM1XHUwZTAxICVzIixwYXN0OiIlc1x1MGUxN1x1MGUz''@;'; put 'put ''NVx1MGU0OFx1MGU0MVx1MGUyNVx1MGU0OVx1MGUyNyIsczoiXHUwZTQ0XHUwZTIxXHUwZTQ4XHUwZTAxXHUwZTM1XHUwZTQ4XHUwZTI3XHUwZTM0XHUwZTE5XHUwZTMyXHUwZTE3XHUwZTM1IixzczoiJWQgXHUwZTI3XHUwZTM0XHUwZTE5XHUwZTMyXHUwZTE3XHUwZTM1IixtOiIxIFx1MGUx''@;'; put 'put ''OVx1MGUzMlx1MGUxN1x1MGUzNSIsbW06IiVkIFx1MGUxOVx1MGUzMlx1MGUxN1x1MGUzNSIsaDoiMSBcdTBlMGFcdTBlMzFcdTBlNDhcdTBlMjdcdTBlNDJcdTBlMjFcdTBlMDciLGhoOiIlZCBcdTBlMGFcdTBlMzFcdTBlNDhcdTBlMjdcdTBlNDJcdTBlMjFcdTBlMDciLGQ6IjEgXHUwZTI3''@;'; put 'put ''XHUwZTMxXHUwZTE5IixkZDoiJWQgXHUwZTI3XHUwZTMxXHUwZTE5Iix3OiIxIFx1MGUyYVx1MGUzMVx1MGUxYlx1MGUxNFx1MGUzMlx1MGUyYlx1MGU0YyIsd3c6IiVkIFx1MGUyYVx1MGUzMVx1MGUxYlx1MGUxNFx1MGUzMlx1MGUyYlx1MGU0YyIsTToiMSBcdTBlNDBcdTBlMTRcdTBlMzdc''@;'; put 'put ''dTBlMmRcdTBlMTkiLE1NOiIlZCBcdTBlNDBcdTBlMTRcdTBlMzdcdTBlMmRcdTBlMTkiLHk6IjEgXHUwZTFiXHUwZTM1Iix5eToiJWQgXHUwZTFiXHUwZTM1In19KX0oTCgxNTQzOSkpfSwzMTMxMDpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj17''@;'; put 'put ''MToiJ2luamkiLDU6IidpbmppIiw4OiInaW5qaSIsNzA6IidpbmppIiw4MDoiJ2luamkiLDI6IiduamkiLDc6IiduamkiLDIwOiInbmppIiw1MDoiJ25qaSIsMzoiJ1x4ZmNuamkiLDQ6IidceGZjbmppIiwxMDA6IidceGZjbmppIiw2OiInbmp5Iiw5OiIndW5qeSIsMTA6Iid1bmp5IiwzMDoi''@;'; put 'put ''J3VuankiLDYwOiIneW5qeSIsOTA6Iid5bmp5In07bWUuZGVmaW5lTG9jYWxlKCJ0ayIse21vbnRoczoiXHhkZGFud2FyX0Zld3JhbF9NYXJ0X0FwcmVsX01hXHhmZF9JXHhmZHVuX0lceGZkdWxfQXdndXN0X1NlbnRceGZkYWJyX09rdFx4ZmRhYnJfTm9ceGZkYWJyX0Rla2FiciIuc3BsaXQo''@;'; put 'put ''Il8iKSxtb250aHNTaG9ydDoiXHhkZGFuX0Zld19NYXJfQXByX01hXHhmZF9JXHhmZG5fSVx4ZmRsX0F3Z19TZW5fT2t0X05vXHhmZF9EZWsiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx4ZGRla1x1MDE1ZmVuYmVfRHVcdTAxNWZlbmJlX1NpXHUwMTVmZW5iZV9ceGM3YXJcdTAxNWZlbmJlX1Bl''@;'; put 'put ''blx1MDE1ZmVuYmVfQW5uYV9cdTAxNWVlbmJlIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx4ZGRla19EdVx1MDE1Zl9TaVx1MDE1Zl9ceGM3YXJfUGVuX0Fubl9cdTAxNWVlbiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHhkZGtfRFx1MDE1Zl9TXHUwMTVmX1x4YzdyX1BuX0FuX1x1''@;'; put 'put ''MDE1ZW4iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5''@;'; put 'put ''OiJbYnVnXHhmY24gc2FnYXRdIExUIixuZXh0RGF5OiJbZXJ0aXIgc2FnYXRdIExUIixuZXh0V2VlazoiW2luZGlraV0gZGRkZCBbc2FnYXRdIExUIixsYXN0RGF5OiJbZFx4ZmNceGZkbl0gTFQiLGxhc3RXZWVrOiJbZ2VceGU3ZW5dIGRkZGQgW3NhZ2F0XSBMVCIsc2FtZUVsc2U6IkwifSxy''@;'; put 'put ''ZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgc29cdTAxNDgiLHBhc3Q6IiVzIFx4ZjZcdTAxNDgiLHM6ImJpcm5ceGU0XHhlN2Ugc2VrdW50IixtOiJiaXIgbWludXQiLG1tOiIlZCBtaW51dCIsaDoiYmlyIHNhZ2F0IixoaDoiJWQgc2FnYXQiLGQ6ImJpciBnXHhmY24iLGRkOiIlZCBnXHhmY24i''@;'; put 'put ''LE06ImJpciBhXHhmZCIsTU06IiVkIGFceGZkIix5OiJiaXIgXHhmZHlsIix5eToiJWQgXHhmZHlsIn0sb3JkaW5hbDpmdW5jdGlvbihFZSxVKXtzd2l0Y2goVSl7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiRG8iOmNhc2UiREQiOnJldHVybiBFZTtkZWZhdWx0OmlmKDA9PT1FZSlyZXR1cm4gRWUr''@;'; put 'put ''Iid1bmp5Ijt2YXIgUT1FZSUxMDtyZXR1cm4gRWUrKEJbUV18fEJbRWUlMTAwLVFdfHxCW0VlPj0xMDA/MTAwOm51bGxdKX19LHdlZWs6e2RvdzoxLGRveTo3fX0pfShMKDE1NDM5KSl9LDIyMzYwOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmlu''@;'; put 'put ''ZUxvY2FsZSgidGwtcGgiLHttb250aHM6IkVuZXJvX1BlYnJlcm9fTWFyc29fQWJyaWxfTWF5b19IdW55b19IdWx5b19BZ29zdG9fU2V0eWVtYnJlX09rdHVicmVfTm9ieWVtYnJlX0Rpc3llbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiRW5lX1BlYl9NYXJfQWJyX01heV9IdW5fSHVs''@;'; put 'put ''X0Fnb19TZXRfT2t0X05vYl9EaXMiLnNwbGl0KCJfIiksd2Vla2RheXM6Ikxpbmdnb19MdW5lc19NYXJ0ZXNfTWl5ZXJrdWxlc19IdXdlYmVzX0JpeWVybmVzX1NhYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJMaW5fTHVuX01hcl9NaXlfSHV3X0JpeV9TYWIiLnNwbGl0KCJfIiks''@;'; put 'put ''d2Vla2RheXNNaW46IkxpX0x1X01hX01pX0h1X0JpX1NhYiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJNTS9EL1lZWVkiLExMOiJNTU1NIEQsIFlZWVkiLExMTDoiTU1NTSBELCBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBNTU1NIERE''@;'; put 'put ''LCBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IkxUIFtuZ2F5b25nIGFyYXddIixuZXh0RGF5OiJbQnVrYXMgbmddIExUIixuZXh0V2VlazoiTFQgW3NhIHN1c3Vub2QgbmFdIGRkZGQiLGxhc3REYXk6IkxUIFtrYWhhcG9uXSIsbGFzdFdlZWs6IkxUIFtub29uZyBuYWthcmFhbmdd''@;'; put 'put ''IGRkZGQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InNhIGxvb2IgbmcgJXMiLHBhc3Q6IiVzIGFuZyBuYWthbGlwYXMiLHM6ImlsYW5nIHNlZ3VuZG8iLHNzOiIlZCBzZWd1bmRvIixtOiJpc2FuZyBtaW51dG8iLG1tOiIlZCBtaW51dG8iLGg6ImlzYW5nIG9yYXMiLGho''@;'; put 'put ''OiIlZCBvcmFzIixkOiJpc2FuZyBhcmF3IixkZDoiJWQgYXJhdyIsTToiaXNhbmcgYnV3YW4iLE1NOiIlZCBidXdhbiIseToiaXNhbmcgdGFvbiIseXk6IiVkIHRhb24ifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxvcmRpbmFsOmZ1bmN0aW9uKEUpe3JldHVybiBFfSx3ZWVr''@;'; put 'put ''Ontkb3c6MSxkb3k6NH19KX0oTCgxNTQzOSkpfSw2NjY0NTpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgQj0icGFnaF93YVx1MjAxOV9jaGFcdTIwMTlfd2VqX2xvU192YWdoX2phdl9Tb2NoX2Nob3JnaF9IdXQiLnNwbGl0KCJfIik7ZnVuY3Rpb24g''@;'; put 'put ''VShyZSxhZSxZLFcpe3ZhciBOPWZ1bmN0aW9uIFEocmUpe3ZhciBhZT1NYXRoLmZsb29yKHJlJTFlMy8xMDApLFk9TWF0aC5mbG9vcihyZSUxMDAvMTApLFc9cmUlMTAsTj0iIjtyZXR1cm4gYWU+MCYmKE4rPUJbYWVdKyJ2YXRsaCIpLFk+MCYmKE4rPSgiIiE9PU4/IiAiOiIiKStCW1ldKyJt''@;'; put 'put ''YUgiKSxXPjAmJihOKz0oIiIhPT1OPyIgIjoiIikrQltXXSksIiI9PT1OPyJwYWdoIjpOfShyZSk7c3dpdGNoKFkpe2Nhc2Uic3MiOnJldHVybiBOKyIgbHVwIjtjYXNlIm1tIjpyZXR1cm4gTisiIHR1cCI7Y2FzZSJoaCI6cmV0dXJuIE4rIiByZXAiO2Nhc2UiZGQiOnJldHVybiBOKyIgamFq''@;'; put 'put ''IjtjYXNlIk1NIjpyZXR1cm4gTisiIGphciI7Y2FzZSJ5eSI6cmV0dXJuIE4rIiBESVMifX1tZS5kZWZpbmVMb2NhbGUoInRsaCIse21vbnRoczoidGVyYVx1MjAxOSBqYXIgd2FcdTIwMTlfdGVyYVx1MjAxOSBqYXIgY2hhXHUyMDE5X3RlcmFcdTIwMTkgamFyIHdlal90ZXJhXHUyMDE5IGph''@;'; put 'put ''ciBsb1NfdGVyYVx1MjAxOSBqYXIgdmFnaF90ZXJhXHUyMDE5IGphciBqYXZfdGVyYVx1MjAxOSBqYXIgU29jaF90ZXJhXHUyMDE5IGphciBjaG9yZ2hfdGVyYVx1MjAxOSBqYXIgSHV0X3RlcmFcdTIwMTkgamFyIHdhXHUyMDE5bWFIX3RlcmFcdTIwMTkgamFyIHdhXHUyMDE5bWFIIHdhXHUy''@;'; put 'put ''MDE5X3RlcmFcdTIwMTkgamFyIHdhXHUyMDE5bWFIIGNoYVx1MjAxOSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFyIHdhXHUyMDE5X2phciBjaGFcdTIwMTlfamFyIHdlal9qYXIgbG9TX2phciB2YWdoX2phciBqYXZfamFyIFNvY2hfamFyIGNob3JnaF9qYXIgSHV0X2phciB3YVx1MjAx''@;'; put 'put ''OW1hSF9qYXIgd2FcdTIwMTltYUggd2FcdTIwMTlfamFyIHdhXHUyMDE5bWFIIGNoYVx1MjAxOSIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJsb2ptSXRqYWpfRGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9idXFqYWpfZ2hJbmphaiIuc3BsaXQoIl8i''@;'; put 'put ''KSx3ZWVrZGF5c1Nob3J0OiJsb2ptSXRqYWpfRGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9idXFqYWpfZ2hJbmphaiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibG9qbUl0amFqX0RhU2phal9wb3ZqYWpfZ2hJdGxoamFqX2xvZ2hqYWpfYnVxamFqX2doSW5qYWoiLnNwbGl0KCJf''@;'; put 'put ''IiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbRGFIamFqXSBMVCIs''@;'; put 'put ''bmV4dERheToiW3dhXHUyMDE5bGVTXSBMVCIsbmV4dFdlZWs6IkxMTCIsbGFzdERheToiW3dhXHUyMDE5SHVcdTIwMTldIExUIixsYXN0V2VlazoiTExMIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOmZ1bmN0aW9uIEUocmUpe3ZhciBhZT1yZTtyZXR1cm4tMSE9PXJlLmlu''@;'; put 'put ''ZGV4T2YoImphaiIpP2FlLnNsaWNlKDAsLTMpKyJsZVMiOi0xIT09cmUuaW5kZXhPZigiamFyIik/YWUuc2xpY2UoMCwtMykrIndhUSI6LTEhPT1yZS5pbmRleE9mKCJESVMiKT9hZS5zbGljZSgwLC0zKSsibmVtIjphZSsiIHBJcSJ9LHBhc3Q6ZnVuY3Rpb24gRWUocmUpe3ZhciBhZT1yZTty''@;'; put 'put ''ZXR1cm4tMSE9PXJlLmluZGV4T2YoImphaiIpP2FlLnNsaWNlKDAsLTMpKyJIdVx1MjAxOSI6LTEhPT1yZS5pbmRleE9mKCJqYXIiKT9hZS5zbGljZSgwLC0zKSsid2VuIjotMSE9PXJlLmluZGV4T2YoIkRJUyIpP2FlLnNsaWNlKDAsLTMpKyJiZW4iOmFlKyIgcmV0In0sczoicHVTIGx1cCIs''@;'; put 'put ''c3M6VSxtOiJ3YVx1MjAxOSB0dXAiLG1tOlUsaDoid2FcdTIwMTkgcmVwIixoaDpVLGQ6IndhXHUyMDE5IGphaiIsZGQ6VSxNOiJ3YVx1MjAxOSBqYXIiLE1NOlUseToid2FcdTIwMTkgRElTIix5eTpVfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIs''@;'; put 'put ''d2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sOTgzNzQ6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9ezE6IidpbmNpIiw1OiInaW5jaSIsODoiJ2luY2kiLDcwOiInaW5jaSIsODA6IidpbmNpIiwyOiInbmNpIiw3OiInbmNpIiwyMDoi''@;'; put 'put ''J25jaSIsNTA6IiduY2kiLDM6IidceGZjbmNceGZjIiw0OiInXHhmY25jXHhmYyIsMTAwOiInXHhmY25jXHhmYyIsNjoiJ25jXHUwMTMxIiw5OiIndW5jdSIsMTA6Iid1bmN1IiwzMDoiJ3VuY3UiLDYwOiInXHUwMTMxbmNcdTAxMzEiLDkwOiInXHUwMTMxbmNcdTAxMzEifTttZS5kZWZpbmVM''@;'; put 'put ''b2NhbGUoInRyIix7bW9udGhzOiJPY2FrX1x1MDE1ZXViYXRfTWFydF9OaXNhbl9NYXlcdTAxMzFzX0hhemlyYW5fVGVtbXV6X0FcdTAxMWZ1c3Rvc19FeWxceGZjbF9Fa2ltX0thc1x1MDEzMW1fQXJhbFx1MDEzMWsiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ik9jYV9cdTAxNWV1Yl9NYXJf''@;'; put 'put ''TmlzX01heV9IYXpfVGVtX0FcdTAxMWZ1X0V5bF9Fa2lfS2FzX0FyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiUGF6YXJfUGF6YXJ0ZXNpX1NhbFx1MDEzMV9ceGM3YXJcdTAxNWZhbWJhX1Blclx1MDE1ZmVtYmVfQ3VtYV9DdW1hcnRlc2kiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiUGF6''@;'; put 'put ''X1B6dF9TYWxfXHhjN2FyX1Blcl9DdW1fQ210Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJQel9QdF9TYV9ceGM3YV9QZV9DdV9DdCIuc3BsaXQoIl8iKSxtZXJpZGllbTpmdW5jdGlvbihFZSxVLFEpe3JldHVybiBFZTwxMj9RPyJceGY2XHhmNiI6Ilx4ZDZceGQ2IjpRPyJceGY2cyI6Ilx4''@;'; put 'put ''ZDZTIn0sbWVyaWRpZW1QYXJzZTovXHhmNlx4ZjZ8XHhkNlx4ZDZ8XHhmNnN8XHhkNlMvLGlzUE06ZnVuY3Rpb24oRWUpe3JldHVybiJceGY2cyI9PT1FZXx8Ilx4ZDZTIj09PUVlfSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoi''@;'; put 'put ''RCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltidWdceGZjbiBzYWF0XSBMVCIsbmV4dERheToiW3lhclx1MDEzMW4gc2FhdF0gTFQiLG5leHRXZWVrOiJbZ2VsZWNla10gZGRkZCBb''@;'; put 'put ''c2FhdF0gTFQiLGxhc3REYXk6IltkXHhmY25dIExUIixsYXN0V2VlazoiW2dlXHhlN2VuXSBkZGRkIFtzYWF0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgc29ucmEiLHBhc3Q6IiVzIFx4ZjZuY2UiLHM6ImJpcmthXHhlNyBzYW5peWUiLHNzOiIlZCBzYW5p''@;'; put 'put ''eWUiLG06ImJpciBkYWtpa2EiLG1tOiIlZCBkYWtpa2EiLGg6ImJpciBzYWF0IixoaDoiJWQgc2FhdCIsZDoiYmlyIGdceGZjbiIsZGQ6IiVkIGdceGZjbiIsdzoiYmlyIGhhZnRhIix3dzoiJWQgaGFmdGEiLE06ImJpciBheSIsTU06IiVkIGF5Iix5OiJiaXIgeVx1MDEzMWwiLHl5OiIlZCB5''@;'; put 'put ''XHUwMTMxbCJ9LG9yZGluYWw6ZnVuY3Rpb24oRWUsVSl7c3dpdGNoKFUpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRvIjpjYXNlIkREIjpyZXR1cm4gRWU7ZGVmYXVsdDppZigwPT09RWUpcmV0dXJuIEVlKyInXHUwMTMxbmNcdTAxMzEiO3ZhciBRPUVlJTEwO3JldHVybiBFZSsoQltRXXx8QltF''@;'; put 'put ''ZSUxMDAtUV18fEJbRWU+PTEwMD8xMDA6bnVsbF0pfX0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KEwoMTU0MzkpKX0sMjU2OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEUoRWUsVSxRLGope3ZhciByZT17czpbInZpZW5zYXMgc2VjdW5kcyIs''@;'; put 'put ''IidpZW5zYXMgc2VjdW5kcyJdLHNzOltFZSsiIHNlY3VuZHMiLEVlKyIgc2VjdW5kcyJdLG06WyInbiBtXHhlZHV0IiwiJ2llbnMgbVx4ZWR1dCJdLG1tOltFZSsiIG1ceGVkdXRzIixFZSsiIG1ceGVkdXRzIl0saDpbIiduIFx4ZmVvcmEiLCInaWVuc2EgXHhmZW9yYSJdLGhoOltFZSsiIFx4''@;'; put 'put ''ZmVvcmFzIixFZSsiIFx4ZmVvcmFzIl0sZDpbIiduIHppdWEiLCInaWVuc2Egeml1YSJdLGRkOltFZSsiIHppdWFzIixFZSsiIHppdWFzIl0sTTpbIiduIG1lcyIsIidpZW5zIG1lcyJdLE1NOltFZSsiIG1lc2VuIixFZSsiIG1lc2VuIl0seTpbIiduIGFyIiwiJ2llbnMgYXIiXSx5eTpbRWUr''@;'; put 'put ''IiBhcnMiLEVlKyIgYXJzIl19O3JldHVybiBqfHxVP3JlW1FdWzBdOnJlW1FdWzFdfW1lLmRlZmluZUxvY2FsZSgidHpsIix7bW9udGhzOiJKYW51YXJfRmV2cmFnbGhfTWFyXHhlN19BdnJceGVmdV9NYWlfR1x4ZmNuX0p1bGlhX0d1c2NodF9TZXRlbXZhcl9MaXN0b3BceGU0dHNfTm9lbXZh''@;'; put 'put ''cl9aZWNlbXZhciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0Zldl9NYXJfQXZyX01haV9HXHhmY25fSnVsX0d1c19TZXRfTGlzX05vZV9aZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlNceGZhbGFkaV9MXHhmYW5lXHhlN2lfTWFpdHppX01ceGUxcmN1cmlfWGhceGZhYWRpX1ZpXHhl''@;'; put 'put ''OW5lclx4ZTdpX1NceGUxdHVyaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTXHhmYWxfTFx4ZmFuX01haV9NXHhlMXJfWGhceGZhX1ZpXHhlOV9TXHhlMXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlNceGZhX0xceGZhX01hX01ceGUxX1hoX1ZpX1NceGUxIi5zcGxpdCgiXyIpLGxv''@;'; put 'put ''bmdEYXRlRm9ybWF0OntMVDoiSEgubW0iLExUUzoiSEgubW0uc3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFtkYWxsYXNdIFlZWVkiLExMTDoiRC4gTU1NTSBbZGFsbGFzXSBZWVlZIEhILm1tIixMTExMOiJkZGRkLCBbbGldIEQuIE1NTU0gW2RhbGxhc10gWVlZWSBISC5tbSJ9LG1l''@;'; put 'put ''cmlkaWVtUGFyc2U6L2RcJ298ZFwnYS9pLGlzUE06ZnVuY3Rpb24oRWUpe3JldHVybiJkJ28iPT09RWUudG9Mb3dlckNhc2UoKX0sbWVyaWRpZW06ZnVuY3Rpb24oRWUsVSxRKXtyZXR1cm4gRWU+MTE/UT8iZCdvIjoiRCdPIjpRPyJkJ2EiOiJEJ0EifSxjYWxlbmRhcjp7c2FtZURheToiW294''@;'; put 'put ''aGkgXHhlMF0gTFQiLG5leHREYXk6IltkZW1ceGUwIFx4ZTBdIExUIixuZXh0V2VlazoiZGRkZCBbXHhlMF0gTFQiLGxhc3REYXk6IltpZWlyaSBceGUwXSBMVCIsbGFzdFdlZWs6IltzXHhmY3IgZWxdIGRkZGQgW2xhc3RldSBceGUwXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6''@;'; put 'put ''e2Z1dHVyZToib3NwcmVpICVzIixwYXN0OiJqYSVzIixzOkUsc3M6RSxtOkUsbW06RSxoOkUsaGg6RSxkOkUsZGQ6RSxNOkUsTU06RSx5OkUseXk6RX0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5''@;'; put 'put ''KSl9LDYxNjMxOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgidHptLWxhdG4iLHttb250aHM6ImlubmF5cl9iclx1MDJlNGF5clx1MDJlNF9tYXJcdTAyZTRzXHUwMmU0X2licmlyX21heXl3X3l3bnl3X3l3bHl3el9cdTAyNjN3''@;'; put 'put ''XHUwMTYxdF9cdTAxNjF3dGFuYmlyX2t0XHUwMmU0d2JyXHUwMmU0X253d2FuYmlyX2R3am5iaXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ImlubmF5cl9iclx1MDJlNGF5clx1MDJlNF9tYXJcdTAyZTRzXHUwMmU0X2licmlyX21heXl3X3l3bnl3X3l3bHl3el9cdTAyNjN3XHUwMTYxdF9c''@;'; put 'put ''dTAxNjF3dGFuYmlyX2t0XHUwMmU0d2JyXHUwMmU0X253d2FuYmlyX2R3am5iaXIiLnNwbGl0KCJfIiksd2Vla2RheXM6ImFzYW1hc19heW5hc19hc2luYXNfYWtyYXNfYWt3YXNfYXNpbXdhc19hc2lcdTFlMGR5YXMiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiYXNhbWFzX2F5bmFzX2Fz''@;'; put 'put ''aW5hc19ha3Jhc19ha3dhc19hc2ltd2FzX2FzaVx1MWUwZHlhcyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiYXNhbWFzX2F5bmFzX2FzaW5hc19ha3Jhc19ha3dhc19hc2ltd2FzX2FzaVx1MWUwZHlhcyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1t''@;'; put 'put ''OnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2FzZGtoIGddIExUIixuZXh0RGF5OiJbYXNrYSBnXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2dd''@;'; put 'put ''IExUIixsYXN0RGF5OiJbYXNzYW50IGddIExUIixsYXN0V2VlazoiZGRkZCBbZ10gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhZGtoIHMgeWFuICVzIixwYXN0OiJ5YW4gJXMiLHM6ImltaWsiLHNzOiIlZCBpbWlrIixtOiJtaW51XHUxZTBkIixtbToiJWQgbWlu''@;'; put 'put ''dVx1MWUwZCIsaDoic2FcdTAyNWJhIixoaDoiJWQgdGFzc2FcdTAyNWJpbiIsZDoiYXNzIixkZDoiJWQgb3NzYW4iLE06ImF5b3dyIixNTToiJWQgaXl5aXJuIix5OiJhc2dhcyIseXk6IiVkIGlzZ2FzbiJ9LHdlZWs6e2Rvdzo2LGRveToxMn19KX0oTCgxNTQzOSkpfSw2MTU5NTpmdW5jdGlv''@;'; put 'put ''bihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoInR6bSIse21vbnRoczoiXHUyZDQ5XHUyZDRmXHUyZDRmXHUyZDMwXHUyZDYyXHUyZDU0X1x1MmQzMVx1MmQ1NVx1MmQzMFx1MmQ2Mlx1MmQ1NV9cdTJkNGVcdTJkMzBcdTJkNTVcdTJkNWFfXHUy''@;'; put 'put ''ZDQ5XHUyZDMxXHUyZDU0XHUyZDQ5XHUyZDU0X1x1MmQ0ZVx1MmQzMFx1MmQ2Mlx1MmQ2Mlx1MmQ1M19cdTJkNjJcdTJkNTNcdTJkNGZcdTJkNjJcdTJkNTNfXHUyZDYyXHUyZDUzXHUyZDRkXHUyZDYyXHUyZDUzXHUyZDYzX1x1MmQ1Nlx1MmQ1M1x1MmQ1Ylx1MmQ1Y19cdTJkNWJcdTJkNTNc''@;'; put 'put ''dTJkNWNcdTJkMzBcdTJkNGZcdTJkMzFcdTJkNDlcdTJkNTRfXHUyZDNkXHUyZDVmXHUyZDUzXHUyZDMxXHUyZDU1X1x1MmQ0Zlx1MmQ1M1x1MmQ2MVx1MmQzMFx1MmQ0Zlx1MmQzMVx1MmQ0OVx1MmQ1NF9cdTJkMzdcdTJkNTNcdTJkNGFcdTJkNGZcdTJkMzFcdTJkNDlcdTJkNTQiLnNwbGl0''@;'; put 'put ''KCJfIiksbW9udGhzU2hvcnQ6Ilx1MmQ0OVx1MmQ0Zlx1MmQ0Zlx1MmQzMFx1MmQ2Mlx1MmQ1NF9cdTJkMzFcdTJkNTVcdTJkMzBcdTJkNjJcdTJkNTVfXHUyZDRlXHUyZDMwXHUyZDU1XHUyZDVhX1x1MmQ0OVx1MmQzMVx1MmQ1NFx1MmQ0OVx1MmQ1NF9cdTJkNGVcdTJkMzBcdTJkNjJcdTJk''@;'; put 'put ''NjJcdTJkNTNfXHUyZDYyXHUyZDUzXHUyZDRmXHUyZDYyXHUyZDUzX1x1MmQ2Mlx1MmQ1M1x1MmQ0ZFx1MmQ2Mlx1MmQ1M1x1MmQ2M19cdTJkNTZcdTJkNTNcdTJkNWJcdTJkNWNfXHUyZDViXHUyZDUzXHUyZDVjXHUyZDMwXHUyZDRmXHUyZDMxXHUyZDQ5XHUyZDU0X1x1MmQzZFx1MmQ1Zlx1''@;'; put 'put ''MmQ1M1x1MmQzMVx1MmQ1NV9cdTJkNGZcdTJkNTNcdTJkNjFcdTJkMzBcdTJkNGZcdTJkMzFcdTJkNDlcdTJkNTRfXHUyZDM3XHUyZDUzXHUyZDRhXHUyZDRmXHUyZDMxXHUyZDQ5XHUyZDU0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTJkMzBcdTJkNTlcdTJkMzBcdTJkNGVcdTJkMzBcdTJk''@;'; put 'put ''NTlfXHUyZDMwXHUyZDYyXHUyZDRmXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQ1OVx1MmQ0OVx1MmQ0Zlx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkM2RcdTJkNTRcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDNkXHUyZDYxXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQ1OVx1MmQ0OVx1MmQ0ZVx1MmQ2MVx1''@;'; put 'put ''MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlcdTJkNDlcdTJkMzlcdTJkNjJcdTJkMzBcdTJkNTkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUyZDMwXHUyZDU5XHUyZDMwXHUyZDRlXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQ2Mlx1MmQ0Zlx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlcdTJk''@;'; put 'put ''NDlcdTJkNGZcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDNkXHUyZDU0XHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQzZFx1MmQ2MVx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlcdTJkNDlcdTJkNGVcdTJkNjFcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDU5XHUyZDQ5XHUyZDM5XHUyZDYyXHUyZDMwXHUy''@;'; put 'put ''ZDU5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTJkMzBcdTJkNTlcdTJkMzBcdTJkNGVcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDYyXHUyZDRmXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQ1OVx1MmQ0OVx1MmQ0Zlx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkM2RcdTJkNTRcdTJkMzBcdTJkNTlf''@;'; put 'put ''XHUyZDMwXHUyZDNkXHUyZDYxXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQ1OVx1MmQ0OVx1MmQ0ZVx1MmQ2MVx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlcdTJkNDlcdTJkMzlcdTJkNjJcdTJkMzBcdTJkNTkiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDpt''@;'; put 'put ''bTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTJkMzBcdTJkNTlcdTJkMzdcdTJkNDUgXHUyZDM0XSBMVCIsbmV4dERheToiW1x1MmQz''@;'; put 'put ''MFx1MmQ1OVx1MmQzZFx1MmQzMCBcdTJkMzRdIExUIixuZXh0V2VlazoiZGRkZCBbXHUyZDM0XSBMVCIsbGFzdERheToiW1x1MmQzMFx1MmQ1YVx1MmQzMFx1MmQ0Zlx1MmQ1YyBcdTJkMzRdIExUIixsYXN0V2VlazoiZGRkZCBbXHUyZDM0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRp''@;'; put 'put ''bWU6e2Z1dHVyZToiXHUyZDM3XHUyZDMwXHUyZDM3XHUyZDQ1IFx1MmQ1OSBcdTJkNjJcdTJkMzBcdTJkNGYgJXMiLHBhc3Q6Ilx1MmQ2Mlx1MmQzMFx1MmQ0ZiAlcyIsczoiXHUyZDQ5XHUyZDRlXHUyZDQ5XHUyZDNkIixzczoiJWQgXHUyZDQ5XHUyZDRlXHUyZDQ5XHUyZDNkIixtOiJcdTJk''@;'; put 'put ''NGVcdTJkNDlcdTJkNGZcdTJkNTNcdTJkM2EiLG1tOiIlZCBcdTJkNGVcdTJkNDlcdTJkNGZcdTJkNTNcdTJkM2EiLGg6Ilx1MmQ1OVx1MmQzMFx1MmQ0NFx1MmQzMCIsaGg6IiVkIFx1MmQ1Y1x1MmQzMFx1MmQ1OVx1MmQ1OVx1MmQzMFx1MmQ0NFx1MmQ0OVx1MmQ0ZiIsZDoiXHUyZDMwXHUy''@;'; put 'put ''ZDU5XHUyZDU5IixkZDoiJWQgb1x1MmQ1OVx1MmQ1OVx1MmQzMFx1MmQ0ZiIsTToiXHUyZDMwXHUyZDYyb1x1MmQ1M1x1MmQ1NCIsTU06IiVkIFx1MmQ0OVx1MmQ2Mlx1MmQ2Mlx1MmQ0OVx1MmQ1NFx1MmQ0ZiIseToiXHUyZDMwXHUyZDU5XHUyZDMzXHUyZDMwXHUyZDU5Iix5eToiJWQgXHUy''@;'; put 'put ''ZDQ5XHUyZDU5XHUyZDMzXHUyZDMwXHUyZDU5XHUyZDRmIn0sd2Vlazp7ZG93OjYsZG95OjEyfX0pfShMKDE1NDM5KSl9LDYwNTA6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJ1Zy1jbiIse21vbnRoczoiXHUwNjRhXHUwNjI3''@;'; put 'put ''XHUwNjQ2XHUwNmNiXHUwNjI3XHUwNjMxX1x1MDY0MVx1MDZkMFx1MDZjYlx1MDYzMVx1MDYyN1x1MDY0NF9cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MmFfXHUwNjI2XHUwNjI3XHUwNjdlXHUwNjMxXHUwNmQwXHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDY0YV9cdTA2MjZcdTA2NDlcdTA2NGFcdTA2''@;'; put 'put ''YzdcdTA2NDZfXHUwNjI2XHUwNjQ5XHUwNjRhXHUwNmM3XHUwNjQ0X1x1MDYyNlx1MDYyN1x1MDZjYlx1MDYzYVx1MDZjN1x1MDYzM1x1MDYyYV9cdTA2MzNcdTA2ZDBcdTA2NDZcdTA2MmFcdTA2ZDVcdTA2MjhcdTA2NDlcdTA2MzFfXHUwNjI2XHUwNmM2XHUwNjQzXHUwNjJhXHUwNmQ1XHUw''@;'; put 'put ''NjI4XHUwNjQ5XHUwNjMxX1x1MDY0Nlx1MDY0OFx1MDY0YVx1MDYyN1x1MDYyOFx1MDY0OVx1MDYzMV9cdTA2MmZcdTA2ZDBcdTA2NDNcdTA2MjdcdTA2MjhcdTA2NDlcdTA2MzEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDY0YVx1MDYyN1x1MDY0Nlx1MDZjYlx1MDYyN1x1MDYzMV9c''@;'; put 'put ''dTA2NDFcdTA2ZDBcdTA2Y2JcdTA2MzFcdTA2MjdcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjJhX1x1MDYyNlx1MDYyN1x1MDY3ZVx1MDYzMVx1MDZkMFx1MDY0NF9cdTA2NDVcdTA2MjdcdTA2NGFfXHUwNjI2XHUwNjQ5XHUwNjRhXHUwNmM3XHUwNjQ2X1x1MDYyNlx1MDY0OVx1MDY0''@;'; put 'put ''YVx1MDZjN1x1MDY0NF9cdTA2MjZcdTA2MjdcdTA2Y2JcdTA2M2FcdTA2YzdcdTA2MzNcdTA2MmFfXHUwNjMzXHUwNmQwXHUwNjQ2XHUwNjJhXHUwNmQ1XHUwNjI4XHUwNjQ5XHUwNjMxX1x1MDYyNlx1MDZjNlx1MDY0M1x1MDYyYVx1MDZkNVx1MDYyOFx1MDY0OVx1MDYzMV9cdTA2NDZcdTA2''@;'; put 'put ''NDhcdTA2NGFcdTA2MjdcdTA2MjhcdTA2NDlcdTA2MzFfXHUwNjJmXHUwNmQwXHUwNjQzXHUwNjI3XHUwNjI4XHUwNjQ5XHUwNjMxIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA2NGFcdTA2ZDVcdTA2NDNcdTA2MzRcdTA2ZDVcdTA2NDZcdTA2MjhcdTA2ZDVfXHUwNjJmXHUwNmM4XHUwNjM0''@;'; put 'put ''XHUwNmQ1XHUwNjQ2XHUwNjI4XHUwNmQ1X1x1MDYzM1x1MDZkNVx1MDY0YVx1MDYzNFx1MDZkNVx1MDY0Nlx1MDYyOFx1MDZkNV9cdTA2ODZcdTA2MjdcdTA2MzFcdTA2MzRcdTA2ZDVcdTA2NDZcdTA2MjhcdTA2ZDVfXHUwNjdlXHUwNmQ1XHUwNjRhXHUwNjM0XHUwNmQ1XHUwNjQ2XHUwNjI4''@;'; put 'put ''XHUwNmQ1X1x1MDYyY1x1MDZjOFx1MDY0NVx1MDZkNV9cdTA2MzRcdTA2ZDVcdTA2NDZcdTA2MjhcdTA2ZDUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNjRhXHUwNmQ1X1x1MDYyZlx1MDZjOF9cdTA2MzNcdTA2ZDVfXHUwNjg2XHUwNjI3X1x1MDY3ZVx1MDZkNV9cdTA2MmNcdTA2''@;'; put 'put ''YzhfXHUwNjM0XHUwNmQ1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA2NGFcdTA2ZDVfXHUwNjJmXHUwNmM4X1x1MDYzM1x1MDZkNV9cdTA2ODZcdTA2MjdfXHUwNjdlXHUwNmQ1X1x1MDYyY1x1MDZjOF9cdTA2MzRcdTA2ZDUiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJI''@;'; put 'put ''SDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS1NTS1ERCIsTEw6IllZWVktXHUwNjRhXHUwNjQ5XHUwNjQ0XHUwNjQ5TS1cdTA2MjZcdTA2MjdcdTA2NGFcdTA2NDZcdTA2NDlcdTA2YWRELVx1MDY0M1x1MDZjOFx1MDY0Nlx1MDY0OSIsTExMOiJZWVlZLVx1MDY0YVx1MDY0OVx1MDY0NFx1''@;'; put 'put ''MDY0OU0tXHUwNjI2XHUwNjI3XHUwNjRhXHUwNjQ2XHUwNjQ5XHUwNmFkRC1cdTA2NDNcdTA2YzhcdTA2NDZcdTA2NDlcdTA2MGMgSEg6bW0iLExMTEw6ImRkZGRcdTA2MGMgWVlZWS1cdTA2NGFcdTA2NDlcdTA2NDRcdTA2NDlNLVx1MDYyNlx1MDYyN1x1MDY0YVx1MDY0Nlx1MDY0OVx1MDZh''@;'; put 'put ''ZEQtXHUwNjQzXHUwNmM4XHUwNjQ2XHUwNjQ5XHUwNjBjIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwNjRhXHUwNmQwXHUwNjMxXHUwNjQ5XHUwNjQ1IFx1MDY0M1x1MDZkMFx1MDY4Nlx1MDZkNXxcdTA2MzNcdTA2ZDVcdTA2YmVcdTA2ZDVcdTA2MzF8XHUwNjg2XHUwNmM4XHUwNjM0XHUw''@;'; put 'put ''NjJhXHUwNjQ5XHUwNjQ2IFx1MDYyOFx1MDZjN1x1MDYzMVx1MDZjN1x1MDY0NnxcdTA2ODZcdTA2YzhcdTA2MzR8XHUwNjg2XHUwNmM4XHUwNjM0XHUwNjJhXHUwNjQ5XHUwNjQ2IFx1MDY0M1x1MDZkMFx1MDY0YVx1MDY0OVx1MDY0NnxcdTA2NDNcdTA2ZDVcdTA2ODYvLG1lcmlkaWVtSG91''@;'; put 'put ''cjpmdW5jdGlvbihFLEVlKXtyZXR1cm4gMTI9PT1FJiYoRT0wKSwiXHUwNjRhXHUwNmQwXHUwNjMxXHUwNjQ5XHUwNjQ1IFx1MDY0M1x1MDZkMFx1MDY4Nlx1MDZkNSI9PT1FZXx8Ilx1MDYzM1x1MDZkNVx1MDZiZVx1MDZkNVx1MDYzMSI9PT1FZXx8Ilx1MDY4Nlx1MDZjOFx1MDYzNFx1MDYy''@;'; put 'put ''YVx1MDY0OVx1MDY0NiBcdTA2MjhcdTA2YzdcdTA2MzFcdTA2YzdcdTA2NDYiPT09RWU/RToiXHUwNjg2XHUwNmM4XHUwNjM0XHUwNjJhXHUwNjQ5XHUwNjQ2IFx1MDY0M1x1MDZkMFx1MDY0YVx1MDY0OVx1MDY0NiI9PT1FZXx8Ilx1MDY0M1x1MDZkNVx1MDY4NiI9PT1FZT9FKzEyOkU+PTEx''@;'; put 'put ''P0U6RSsxMn0sbWVyaWRpZW06ZnVuY3Rpb24oRSxFZSxVKXt2YXIgUT0xMDAqRStFZTtyZXR1cm4gUTw2MDA/Ilx1MDY0YVx1MDZkMFx1MDYzMVx1MDY0OVx1MDY0NSBcdTA2NDNcdTA2ZDBcdTA2ODZcdTA2ZDUiOlE8OTAwPyJcdTA2MzNcdTA2ZDVcdTA2YmVcdTA2ZDVcdTA2MzEiOlE8MTEz''@;'; put 'put ''MD8iXHUwNjg2XHUwNmM4XHUwNjM0XHUwNjJhXHUwNjQ5XHUwNjQ2IFx1MDYyOFx1MDZjN1x1MDYzMVx1MDZjN1x1MDY0NiI6UTwxMjMwPyJcdTA2ODZcdTA2YzhcdTA2MzQiOlE8MTgwMD8iXHUwNjg2XHUwNmM4XHUwNjM0XHUwNjJhXHUwNjQ5XHUwNjQ2IFx1MDY0M1x1MDZkMFx1MDY0YVx1''@;'; put 'put ''MDY0OVx1MDY0NiI6Ilx1MDY0M1x1MDZkNVx1MDY4NiJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNjI4XHUwNmM4XHUwNmFmXHUwNmM4XHUwNjQ2IFx1MDYzM1x1MDYyN1x1MDYyNlx1MDZkNVx1MDYyYV0gTFQiLG5leHREYXk6IltcdTA2MjZcdTA2ZDVcdTA2MmFcdTA2ZDUgXHUwNjMzXHUw''@;'; put 'put ''NjI3XHUwNjI2XHUwNmQ1XHUwNjJhXSBMVCIsbmV4dFdlZWs6IltcdTA2NDNcdTA2ZDBcdTA2NDRcdTA2ZDVcdTA2MzFcdTA2NDNcdTA2NDldIGRkZGQgW1x1MDYzM1x1MDYyN1x1MDYyNlx1MDZkNVx1MDYyYV0gTFQiLGxhc3REYXk6IltcdTA2MmFcdTA2YzZcdTA2NDZcdTA2YzhcdTA2YWZc''@;'; put 'put ''dTA2YzhcdTA2NDZdIExUIixsYXN0V2VlazoiW1x1MDYyNlx1MDYyN1x1MDY0NFx1MDYyZlx1MDY0OVx1MDY0Nlx1MDY0Mlx1MDY0OV0gZGRkZCBbXHUwNjMzXHUwNjI3XHUwNjI2XHUwNmQ1XHUwNjJhXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwNjQz''@;'; put 'put ''XHUwNmQwXHUwNjRhXHUwNjQ5XHUwNjQ2IixwYXN0OiIlcyBcdTA2MjhcdTA2YzdcdTA2MzFcdTA2YzdcdTA2NDYiLHM6Ilx1MDY0Nlx1MDZkNVx1MDY4Nlx1MDY4Nlx1MDZkNSBcdTA2MzNcdTA2ZDBcdTA2NDNcdTA2NDhcdTA2NDZcdTA2MmEiLHNzOiIlZCBcdTA2MzNcdTA2ZDBcdTA2NDNc''@;'; put 'put ''dTA2NDhcdTA2NDZcdTA2MmEiLG06Ilx1MDYyOFx1MDY0OVx1MDYzMSBcdTA2NDVcdTA2NDlcdTA2NDZcdTA2YzdcdTA2MmEiLG1tOiIlZCBcdTA2NDVcdTA2NDlcdTA2NDZcdTA2YzdcdTA2MmEiLGg6Ilx1MDYyOFx1MDY0OVx1MDYzMSBcdTA2MzNcdTA2MjdcdTA2MjZcdTA2ZDVcdTA2MmEi''@;'; put 'put ''LGhoOiIlZCBcdTA2MzNcdTA2MjdcdTA2MjZcdTA2ZDVcdTA2MmEiLGQ6Ilx1MDYyOFx1MDY0OVx1MDYzMSBcdTA2NDNcdTA2YzhcdTA2NDYiLGRkOiIlZCBcdTA2NDNcdTA2YzhcdTA2NDYiLE06Ilx1MDYyOFx1MDY0OVx1MDYzMSBcdTA2MjZcdTA2MjdcdTA2NGEiLE1NOiIlZCBcdTA2MjZc''@;'; put 'put ''dTA2MjdcdTA2NGEiLHk6Ilx1MDYyOFx1MDY0OVx1MDYzMSBcdTA2NGFcdTA2NDlcdTA2NDQiLHl5OiIlZCBcdTA2NGFcdTA2NDlcdTA2NDQifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KC1cdTA2NDNcdTA2YzhcdTA2NDZcdTA2NDl8LVx1MDYyNlx1MDYyN1x1MDY0YXwtXHUw''@;'; put 'put ''NmJlXHUwNmQ1XHUwNjdlXHUwNjJhXHUwNmQ1KS8sb3JkaW5hbDpmdW5jdGlvbihFLEVlKXtzd2l0Y2goRWUpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIEUrIi1cdTA2NDNcdTA2YzhcdTA2NDZcdTA2NDkiO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gRSsiLVx1MDZiZVx1MDZk''@;'; put 'put ''NVx1MDY3ZVx1MDYyYVx1MDZkNSI7ZGVmYXVsdDpyZXR1cm4gRX19LHByZXBhcnNlOmZ1bmN0aW9uKEUpe3JldHVybiBFLnJlcGxhY2UoL1x1MDYwYy9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oRSl7cmV0dXJuIEUucmVwbGFjZSgvLC9nLCJcdTA2MGMiKX0sd2Vlazp7ZG93OjEsZG95''@;'; put 'put ''Ojd9fSl9KEwoMTU0MzkpKX0sNjU2MTA6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gRShqLHJlLGFlKXtyZXR1cm4ibSI9PT1hZT9yZT8iXHUwNDQ1XHUwNDMyXHUwNDM4XHUwNDNiXHUwNDM4XHUwNDNkXHUwNDMwIjoiXHUwNDQ1XHUwNDMy''@;'; put 'put ''XHUwNDM4XHUwNDNiXHUwNDM4XHUwNDNkXHUwNDQzIjoiaCI9PT1hZT9yZT8iXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDMwIjoiXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDQzIjpqKyIgIitmdW5jdGlvbiBCKGoscmUpe3ZhciBhZT1qLnNwbGl0KCJfIik7''@;'; put 'put ''cmV0dXJuIHJlJTEwPT0xJiZyZSUxMDAhPTExP2FlWzBdOnJlJTEwPj0yJiZyZSUxMDw9NCYmKHJlJTEwMDwxMHx8cmUlMTAwPj0yMCk/YWVbMV06YWVbMl19KHtzczpyZT8iXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDMwX1x1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0''@;'; put 'put ''M1x1MDQzZFx1MDQzNFx1MDQzOF9cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiOiJcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0NDNfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDM4X1x1MDQ0MVx1MDQzNVx1MDQzYVx1''@;'; put 'put ''MDQ0M1x1MDQzZFx1MDQzNCIsbW06cmU/Ilx1MDQ0NVx1MDQzMlx1MDQzOFx1MDQzYlx1MDQzOFx1MDQzZFx1MDQzMF9cdTA0NDVcdTA0MzJcdTA0MzhcdTA0M2JcdTA0MzhcdTA0M2RcdTA0MzhfXHUwNDQ1XHUwNDMyXHUwNDM4XHUwNDNiXHUwNDM4XHUwNDNkIjoiXHUwNDQ1XHUwNDMyXHUw''@;'; put 'put ''NDM4XHUwNDNiXHUwNDM4XHUwNDNkXHUwNDQzX1x1MDQ0NVx1MDQzMlx1MDQzOFx1MDQzYlx1MDQzOFx1MDQzZFx1MDQzOF9cdTA0NDVcdTA0MzJcdTA0MzhcdTA0M2JcdTA0MzhcdTA0M2QiLGhoOnJlPyJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzBfXHUwNDMzXHUwNDNl''@;'; put 'put ''XHUwNDM0XHUwNDM4XHUwNDNkXHUwNDM4X1x1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZCI6Ilx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQ0M19cdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzhfXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkIixk''@;'; put 'put ''ZDoiXHUwNDM0XHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzNFx1MDQzZFx1MDQ1Nl9cdTA0MzRcdTA0M2RcdTA0NTZcdTA0MzIiLE1NOiJcdTA0M2NcdTA0NTZcdTA0NDFcdTA0NGZcdTA0NDZcdTA0NGNfXHUwNDNjXHUwNDU2XHUwNDQxXHUwNDRmXHUwNDQ2XHUwNDU2X1x1MDQzY1x1MDQ1Nlx1''@;'; put 'put ''MDQ0MVx1MDQ0Zlx1MDQ0Nlx1MDQ1Nlx1MDQzMiIseXk6Ilx1MDQ0MFx1MDQ1Nlx1MDQzYV9cdTA0NDBcdTA0M2VcdTA0M2FcdTA0MzhfXHUwNDQwXHUwNDNlXHUwNDNhXHUwNDU2XHUwNDMyIn1bYWVdLCtqKX1mdW5jdGlvbiBVKGope3JldHVybiBmdW5jdGlvbigpe3JldHVybiBqKyJcdTA0''@;'; put 'put ''M2UiKygxMT09PXRoaXMuaG91cnMoKT8iXHUwNDMxIjoiIikrIl0gTFQifX1tZS5kZWZpbmVMb2NhbGUoInVrIix7bW9udGhzOntmb3JtYXQ6Ilx1MDQ0MVx1MDQ1Nlx1MDQ0N1x1MDQzZFx1MDQ0Zl9cdTA0M2JcdTA0NGVcdTA0NDJcdTA0M2VcdTA0MzNcdTA0M2VfXHUwNDMxXHUwNDM1XHUw''@;'; put 'put ''NDQwXHUwNDM1XHUwNDM3XHUwNDNkXHUwNDRmX1x1MDQzYVx1MDQzMlx1MDQ1Nlx1MDQ0Mlx1MDQzZFx1MDQ0Zl9cdTA0NDJcdTA0NDBcdTA0MzBcdTA0MzJcdTA0M2RcdTA0NGZfXHUwNDQ3XHUwNDM1XHUwNDQwXHUwNDMyXHUwNDNkXHUwNDRmX1x1MDQzYlx1MDQzOFx1MDQzZlx1MDQzZFx1''@;'; put 'put ''MDQ0Zl9cdTA0NDFcdTA0MzVcdTA0NDBcdTA0M2ZcdTA0M2RcdTA0NGZfXHUwNDMyXHUwNDM1XHUwNDQwXHUwNDM1XHUwNDQxXHUwNDNkXHUwNDRmX1x1MDQzNlx1MDQzZVx1MDQzMlx1MDQ0Mlx1MDQzZFx1MDQ0Zl9cdTA0M2JcdTA0MzhcdTA0NDFcdTA0NDJcdTA0M2VcdTA0M2ZcdTA0MzBc''@;'; put 'put ''dTA0MzRcdTA0MzBfXHUwNDMzXHUwNDQwXHUwNDQzXHUwNDM0XHUwNDNkXHUwNDRmIi5zcGxpdCgiXyIpLHN0YW5kYWxvbmU6Ilx1MDQ0MVx1MDQ1Nlx1MDQ0N1x1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0M2JcdTA0NGVcdTA0NDJcdTA0MzhcdTA0MzlfXHUwNDMxXHUwNDM1XHUwNDQwXHUwNDM1''@;'; put 'put ''XHUwNDM3XHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzYVx1MDQzMlx1MDQ1Nlx1MDQ0Mlx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0NDJcdTA0NDBcdTA0MzBcdTA0MzJcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDQ3XHUwNDM1XHUwNDQwXHUwNDMyXHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzYlx1MDQz''@;'; put 'put ''OFx1MDQzZlx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0NDFcdTA0MzVcdTA0NDBcdTA0M2ZcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDMyXHUwNDM1XHUwNDQwXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzNlx1MDQzZVx1MDQzMlx1MDQ0Mlx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0''@;'; put 'put ''M2JcdTA0MzhcdTA0NDFcdTA0NDJcdTA0M2VcdTA0M2ZcdTA0MzBcdTA0MzRfXHUwNDMzXHUwNDQwXHUwNDQzXHUwNDM0XHUwNDM1XHUwNDNkXHUwNDRjIi5zcGxpdCgiXyIpfSxtb250aHNTaG9ydDoiXHUwNDQxXHUwNDU2XHUwNDQ3X1x1MDQzYlx1MDQ0ZVx1MDQ0Ml9cdTA0MzFcdTA0MzVc''@;'; put 'put ''dTA0NDBfXHUwNDNhXHUwNDMyXHUwNDU2XHUwNDQyX1x1MDQ0Mlx1MDQ0MFx1MDQzMFx1MDQzMl9cdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzJfXHUwNDNiXHUwNDM4XHUwNDNmX1x1MDQ0MVx1MDQzNVx1MDQ0MFx1MDQzZl9cdTA0MzJcdTA0MzVcdTA0NDBfXHUwNDM2XHUwNDNlXHUwNDMyXHUw''@;'; put 'put ''NDQyX1x1MDQzYlx1MDQzOFx1MDQ0MVx1MDQ0Ml9cdTA0MzNcdTA0NDBcdTA0NDNcdTA0MzQiLnNwbGl0KCJfIiksd2Vla2RheXM6ZnVuY3Rpb24gRWUoaixyZSl7dmFyIGFlPXtub21pbmF0aXZlOiJcdTA0M2RcdTA0MzVcdTA0MzRcdTA0NTZcdTA0M2JcdTA0NGZfXHUwNDNmXHUwNDNlXHUw''@;'; put 'put ''NDNkXHUwNDM1XHUwNDM0XHUwNDU2XHUwNDNiXHUwNDNlXHUwNDNhX1x1MDQzMlx1MDQ1Nlx1MDQzMlx1MDQ0Mlx1MDQzZVx1MDQ0MFx1MDQzZVx1MDQzYV9cdTA0NDFcdTA0MzVcdTA0NDBcdTA0MzVcdTA0MzRcdTA0MzBfXHUwNDQ3XHUwNDM1XHUwNDQyXHUwNDMyXHUwNDM1XHUwNDQwX1x1''@;'; put 'put ''MDQzZlx1MjAxOVx1MDQ0Zlx1MDQ0Mlx1MDQzZFx1MDQzOFx1MDQ0Nlx1MDQ0Zl9cdTA0NDFcdTA0NDNcdTA0MzFcdTA0M2VcdTA0NDJcdTA0MzAiLnNwbGl0KCJfIiksYWNjdXNhdGl2ZToiXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDU2XHUwNDNiXHUwNDRlX1x1MDQzZlx1MDQzZVx1MDQzZFx1''@;'; put 'put ''MDQzNVx1MDQzNFx1MDQ1Nlx1MDQzYlx1MDQzZVx1MDQzYV9cdTA0MzJcdTA0NTZcdTA0MzJcdTA0NDJcdTA0M2VcdTA0NDBcdTA0M2VcdTA0M2FfXHUwNDQxXHUwNDM1XHUwNDQwXHUwNDM1XHUwNDM0XHUwNDQzX1x1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQzMlx1MDQzNVx1MDQ0MF9cdTA0M2Zc''@;'; put 'put ''dTIwMTlcdTA0NGZcdTA0NDJcdTA0M2RcdTA0MzhcdTA0NDZcdTA0NGVfXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDQzIi5zcGxpdCgiXyIpLGdlbml0aXZlOiJcdTA0M2RcdTA0MzVcdTA0MzRcdTA0NTZcdTA0M2JcdTA0NTZfXHUwNDNmXHUwNDNlXHUwNDNkXHUwNDM1XHUw''@;'; put 'put ''NDM0XHUwNDU2XHUwNDNiXHUwNDNhXHUwNDMwX1x1MDQzMlx1MDQ1Nlx1MDQzMlx1MDQ0Mlx1MDQzZVx1MDQ0MFx1MDQzYVx1MDQzMF9cdTA0NDFcdTA0MzVcdTA0NDBcdTA0MzVcdTA0MzRcdTA0MzhfXHUwNDQ3XHUwNDM1XHUwNDQyXHUwNDMyXHUwNDM1XHUwNDQwXHUwNDMzXHUwNDMwX1x1''@;'; put 'put ''MDQzZlx1MjAxOVx1MDQ0Zlx1MDQ0Mlx1MDQzZFx1MDQzOFx1MDQ0Nlx1MDQ1Nl9cdTA0NDFcdTA0NDNcdTA0MzFcdTA0M2VcdTA0NDJcdTA0MzgiLnNwbGl0KCJfIil9O3JldHVybiEwPT09aj9hZS5ub21pbmF0aXZlLnNsaWNlKDEsNykuY29uY2F0KGFlLm5vbWluYXRpdmUuc2xpY2UoMCwx''@;'; put 'put ''KSk6aj9hZVsvKFxbW1x1MDQxMlx1MDQzMlx1MDQyM1x1MDQ0M11cXSkgP2RkZGQvLnRlc3QocmUpPyJhY2N1c2F0aXZlIjovXFs/KD86XHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDNiXHUwNDNlXHUwNDU3fFx1MDQzZFx1MDQzMFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQzZlx1MDQzZFx1''@;'; put 'put ''MDQzZVx1MDQ1Nyk/ID9cXSA/ZGRkZC8udGVzdChyZSk/Imdlbml0aXZlIjoibm9taW5hdGl2ZSJdW2ouZGF5KCldOmFlLm5vbWluYXRpdmV9LHdlZWtkYXlzU2hvcnQ6Ilx1MDQzZFx1MDQzNF9cdTA0M2ZcdTA0M2RfXHUwNDMyXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0NDJfXHUw''@;'; put 'put ''NDNmXHUwNDQyX1x1MDQ0MVx1MDQzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDNkXHUwNDM0X1x1MDQzZlx1MDQzZF9cdTA0MzJcdTA0NDJfXHUwNDQxXHUwNDQwX1x1MDQ0N1x1MDQ0Ml9cdTA0M2ZcdTA0NDJfXHUwNDQxXHUwNDMxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0''@;'; put 'put ''OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSBcdTA0NDAuIixMTEw6IkQgTU1NTSBZWVlZIFx1MDQ0MC4sIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBcdTA0NDAuLCBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OlUoIltc''@;'; put 'put ''dTA0MjFcdTA0NGNcdTA0M2VcdTA0MzNcdTA0M2VcdTA0MzRcdTA0M2RcdTA0NTYgIiksbmV4dERheTpVKCJbXHUwNDE3XHUwNDMwXHUwNDMyXHUwNDQyXHUwNDQwXHUwNDMwICIpLGxhc3REYXk6VSgiW1x1MDQxMlx1MDQ0N1x1MDQzZVx1MDQ0MFx1MDQzMCAiKSxuZXh0V2VlazpVKCJbXHUw''@;'; put 'put ''NDIzXSBkZGRkIFsiKSxsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6Y2FzZSAzOmNhc2UgNTpjYXNlIDY6cmV0dXJuIFUoIltcdTA0MWNcdTA0MzhcdTA0M2RcdTA0NDNcdTA0M2JcdTA0M2VcdTA0NTddIGRkZGQgWyIpLmNhbGwodGhpcyk7Y2FzZSAxOmNh''@;'; put 'put ''c2UgMjpjYXNlIDQ6cmV0dXJuIFUoIltcdTA0MWNcdTA0MzhcdTA0M2RcdTA0NDNcdTA0M2JcdTA0M2VcdTA0MzNcdTA0M2VdIGRkZGQgWyIpLmNhbGwodGhpcyl9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA0MzdcdTA0MzAgJXMiLHBhc3Q6IiVzIFx1MDQ0Mlx1''@;'; put 'put ''MDQzZVx1MDQzY1x1MDQ0MyIsczoiXHUwNDM0XHUwNDM1XHUwNDNhXHUwNDU2XHUwNDNiXHUwNDRjXHUwNDNhXHUwNDMwIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCIsc3M6RSxtOkUsbW06RSxoOiJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0NDMiLGho''@;'; put 'put ''OkUsZDoiXHUwNDM0XHUwNDM1XHUwNDNkXHUwNDRjIixkZDpFLE06Ilx1MDQzY1x1MDQ1Nlx1MDQ0MVx1MDQ0Zlx1MDQ0Nlx1MDQ0YyIsTU06RSx5OiJcdTA0NDBcdTA0NTZcdTA0M2EiLHl5OkV9LG1lcmlkaWVtUGFyc2U6L1x1MDQzZFx1MDQzZVx1MDQ0N1x1MDQ1NnxcdTA0NDBcdTA0MzBc''@;'; put 'put ''dTA0M2RcdTA0M2FcdTA0NDN8XHUwNDM0XHUwNDNkXHUwNDRmfFx1MDQzMlx1MDQzNVx1MDQ0N1x1MDQzZVx1MDQ0MFx1MDQzMC8saXNQTTpmdW5jdGlvbihqKXtyZXR1cm4vXihcdTA0MzRcdTA0M2RcdTA0NGZ8XHUwNDMyXHUwNDM1XHUwNDQ3XHUwNDNlXHUwNDQwXHUwNDMwKSQvLnRlc3Qo''@;'; put 'put ''ail9LG1lcmlkaWVtOmZ1bmN0aW9uKGoscmUsYWUpe3JldHVybiBqPDQ/Ilx1MDQzZFx1MDQzZVx1MDQ0N1x1MDQ1NiI6ajwxMj8iXHUwNDQwXHUwNDMwXHUwNDNkXHUwNDNhXHUwNDQzIjpqPDE3PyJcdTA0MzRcdTA0M2RcdTA0NGYiOiJcdTA0MzJcdTA0MzVcdTA0NDdcdTA0M2VcdTA0NDBc''@;'; put 'put ''dTA0MzAifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LShcdTA0Mzl8XHUwNDMzXHUwNDNlKS8sb3JkaW5hbDpmdW5jdGlvbihqLHJlKXtzd2l0Y2gocmUpe2Nhc2UiTSI6Y2FzZSJkIjpjYXNlIkRERCI6Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBqKyItXHUwNDM5IjtjYXNlIkQi''@;'; put 'put ''OnJldHVybiBqKyItXHUwNDMzXHUwNDNlIjtkZWZhdWx0OnJldHVybiBqfX0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KEwoMTU0MzkpKX0sODYwNzc6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7dmFyIEI9WyJcdTA2MmNcdTA2NDZcdTA2NDhcdTA2MzFcdTA2''@;'; put 'put ''Y2MiLCJcdTA2NDFcdTA2MzFcdTA2NDhcdTA2MzFcdTA2Y2MiLCJcdTA2NDVcdTA2MjdcdTA2MzFcdTA2ODYiLCJcdTA2MjdcdTA2N2VcdTA2MzFcdTA2Y2NcdTA2NDQiLCJcdTA2NDVcdTA2MjZcdTA2Y2MiLCJcdTA2MmNcdTA2NDhcdTA2NDYiLCJcdTA2MmNcdTA2NDhcdTA2NDRcdTA2Mjdc''@;'; put 'put ''dTA2MjZcdTA2Y2MiLCJcdTA2MjdcdTA2YWZcdTA2MzNcdTA2MmEiLCJcdTA2MzNcdTA2MmFcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2MjdcdTA2YTlcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzEiLCJcdTA2NDZcdTA2NDhcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2MmZcdTA2MzNcdTA2NDVc''@;'; put 'put ''dTA2MjhcdTA2MzEiXSxFPVsiXHUwNjI3XHUwNjJhXHUwNjQ4XHUwNjI3XHUwNjMxIiwiXHUwNjdlXHUwNmNjXHUwNjMxIiwiXHUwNjQ1XHUwNjQ2XHUwNmFmXHUwNjQ0IiwiXHUwNjI4XHUwNjJmXHUwNmJlIiwiXHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjMxXHUwNjI3XHUwNjJhIiwiXHUwNjJj''@;'; put 'put ''XHUwNjQ1XHUwNjM5XHUwNmMxIiwiXHUwNmMxXHUwNjQxXHUwNjJhXHUwNmMxIl07bWUuZGVmaW5lTG9jYWxlKCJ1ciIse21vbnRoczpCLG1vbnRoc1Nob3J0OkIsd2Vla2RheXM6RSx3ZWVrZGF5c1Nob3J0OkUsd2Vla2RheXNNaW46RSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6''@;'; put 'put ''IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGRcdTA2MGMgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA2MzVcdTA2MjhcdTA2MmR8XHUwNjM0XHUwNjI3XHUwNjQ1Lyxpc1BNOmZ1''@;'; put 'put ''bmN0aW9uKFUpe3JldHVybiJcdTA2MzRcdTA2MjdcdTA2NDUiPT09VX0sbWVyaWRpZW06ZnVuY3Rpb24oVSxRLGope3JldHVybiBVPDEyPyJcdTA2MzVcdTA2MjhcdTA2MmQiOiJcdTA2MzRcdTA2MjdcdTA2NDUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyMlx1MDYyYyBcdTA2MjhcdTA2''@;'; put 'put ''NDhcdTA2NDJcdTA2MmFdIExUIixuZXh0RGF5OiJbXHUwNmE5XHUwNjQ0IFx1MDYyOFx1MDY0OFx1MDY0Mlx1MDYyYV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MjhcdTA2NDhcdTA2NDJcdTA2MmFdIExUIixsYXN0RGF5OiJbXHUwNmFmXHUwNjMwXHUwNjM0XHUwNjJhXHUwNmMxIFx1MDYz''@;'; put 'put ''MVx1MDY0OFx1MDYzMiBcdTA2MjhcdTA2NDhcdTA2NDJcdTA2MmFdIExUIixsYXN0V2VlazoiW1x1MDZhZlx1MDYzMFx1MDYzNFx1MDYyYVx1MDZjMV0gZGRkZCBbXHUwNjI4XHUwNjQ4XHUwNjQyXHUwNjJhXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUw''@;'; put 'put ''NjI4XHUwNjM5XHUwNjJmIixwYXN0OiIlcyBcdTA2NDJcdTA2MjhcdTA2NDQiLHM6Ilx1MDY4Nlx1MDY0Nlx1MDYyZiBcdTA2MzNcdTA2Y2NcdTA2YTlcdTA2NDZcdTA2ODgiLHNzOiIlZCBcdTA2MzNcdTA2Y2NcdTA2YTlcdTA2NDZcdTA2ODgiLG06Ilx1MDYyN1x1MDZjY1x1MDZhOSBcdTA2''@;'; put 'put ''NDVcdTA2NDZcdTA2NzkiLG1tOiIlZCBcdTA2NDVcdTA2NDZcdTA2NzkiLGg6Ilx1MDYyN1x1MDZjY1x1MDZhOSBcdTA2YWZcdTA2YmVcdTA2NDZcdTA2NzlcdTA2YzEiLGhoOiIlZCBcdTA2YWZcdTA2YmVcdTA2NDZcdTA2NzlcdTA2ZDIiLGQ6Ilx1MDYyN1x1MDZjY1x1MDZhOSBcdTA2MmZc''@;'; put 'put ''dTA2NDYiLGRkOiIlZCBcdTA2MmZcdTA2NDYiLE06Ilx1MDYyN1x1MDZjY1x1MDZhOSBcdTA2NDVcdTA2MjdcdTA2YzEiLE1NOiIlZCBcdTA2NDVcdTA2MjdcdTA2YzEiLHk6Ilx1MDYyN1x1MDZjY1x1MDZhOSBcdTA2MzNcdTA2MjdcdTA2NDQiLHl5OiIlZCBcdTA2MzNcdTA2MjdcdTA2NDQi''@;'; put 'put ''fSxwcmVwYXJzZTpmdW5jdGlvbihVKXtyZXR1cm4gVS5yZXBsYWNlKC9cdTA2MGMvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKFUpe3JldHVybiBVLnJlcGxhY2UoLywvZywiXHUwNjBjIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDEyMjA3OmZ1bmN0aW9uKFhlLEpl''@;'; put 'put ''LEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgidXotbGF0biIse21vbnRoczoiWWFudmFyX0ZldnJhbF9NYXJ0X0FwcmVsX01heV9JeXVuX0l5dWxfQXZndXN0X1NlbnRhYnJfT2t0YWJyX05veWFicl9EZWthYnIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6''@;'; put 'put ''Illhbl9GZXZfTWFyX0Fwcl9NYXlfSXl1bl9JeXVsX0F2Z19TZW5fT2t0X05veV9EZWsiLnNwbGl0KCJfIiksd2Vla2RheXM6Illha3NoYW5iYV9EdXNoYW5iYV9TZXNoYW5iYV9DaG9yc2hhbmJhX1BheXNoYW5iYV9KdW1hX1NoYW5iYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJZYWtf''@;'; put 'put ''RHVzaF9TZXNoX0Nob3JfUGF5X0p1bV9TaGFuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJZYV9EdV9TZV9DaG9fUGFfSnVfU2hhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExM''@;'; put 'put ''OiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiRCBNTU1NIFlZWVksIGRkZGQgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0J1Z3VuIHNvYXRdIExUIFtkYV0iLG5leHREYXk6IltFcnRhZ2FdIExUIFtkYV0iLG5leHRXZWVrOiJkZGRkIFtrdW5pIHNvYXRdIExUIFtkYV0iLGxhc3REYXk6''@;'; put 'put ''IltLZWNoYSBzb2F0XSBMVCBbZGFdIixsYXN0V2VlazoiW08ndGdhbl0gZGRkZCBba3VuaSBzb2F0XSBMVCBbZGFdIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJZYXFpbiAlcyBpY2hpZGEiLHBhc3Q6IkJpciBuZWNoYSAlcyBvbGRpbiIsczoic29uaXlhIixzczoiJWQg''@;'; put 'put ''c29uaXlhIixtOiJiaXIgZGFxaXFhIixtbToiJWQgZGFxaXFhIixoOiJiaXIgc29hdCIsaGg6IiVkIHNvYXQiLGQ6ImJpciBrdW4iLGRkOiIlZCBrdW4iLE06ImJpciBveSIsTU06IiVkIG95Iix5OiJiaXIgeWlsIix5eToiJWQgeWlsIn0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KEwoMTU0Mzkp''@;'; put 'put ''KX0sMjI4NjI6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJ1eiIse21vbnRoczoiXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwX1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYl9cdTA0M2NcdTA0MzBc''@;'; put 'put ''dTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0MzhcdTA0NGVcdTA0M2RfXHUwNDM4XHUwNDRlXHUwNDNiX1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Ml9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0''@;'; put 'put ''NGZcdTA0MzFcdTA0NDBfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwX1x1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MF9cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDQ0Zlx1MDQzZFx1MDQzMl9c''@;'; put 'put ''dTA0NDRcdTA0MzVcdTA0MzJfXHUwNDNjXHUwNDMwXHUwNDQwX1x1MDQzMFx1MDQzZlx1MDQ0MF9cdTA0M2NcdTA0MzBcdTA0MzlfXHUwNDM4XHUwNDRlXHUwNDNkX1x1MDQzOFx1MDQ0ZVx1MDQzYl9cdTA0MzBcdTA0MzJcdTA0MzNfXHUwNDQxXHUwNDM1XHUwNDNkX1x1MDQzZVx1MDQzYVx1''@;'; put 'put ''MDQ0Ml9cdTA0M2RcdTA0M2VcdTA0NGZfXHUwNDM0XHUwNDM1XHUwNDNhIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA0MmZcdTA0M2FcdTA0NDhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzBfXHUwNDE0XHUwNDQzXHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDMwX1x1MDQyMVx1MDQzNVx1''@;'; put 'put ''MDQ0OFx1MDQzMFx1MDQzZFx1MDQzMVx1MDQzMF9cdTA0MjdcdTA0M2VcdTA0NDBcdTA0NDhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzBfXHUwNDFmXHUwNDMwXHUwNDM5XHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDMwX1x1MDQxNlx1MDQ0M1x1MDQzY1x1MDQzMF9cdTA0MjhcdTA0MzBc''@;'; put 'put ''dTA0M2RcdTA0MzFcdTA0MzAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNDJmXHUwNDNhXHUwNDQ4X1x1MDQxNFx1MDQ0M1x1MDQ0OF9cdTA0MjFcdTA0MzVcdTA0NDhfXHUwNDI3XHUwNDNlXHUwNDQwX1x1MDQxZlx1MDQzMFx1MDQzOV9cdTA0MTZcdTA0NDNcdTA0M2NfXHUwNDI4''@;'; put 'put ''XHUwNDMwXHUwNDNkIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA0MmZcdTA0M2FfXHUwNDE0XHUwNDQzX1x1MDQyMVx1MDQzNV9cdTA0MjdcdTA0M2VfXHUwNDFmXHUwNDMwX1x1MDQxNlx1MDQ0M19cdTA0MjhcdTA0MzAiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDpt''@;'; put 'put ''bSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJEIE1NTU0gWVlZWSwgZGRkZCBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDExXHUwNDQzXHUwNDMzXHUwNDQzXHUwNDNkIFx1MDQ0MVx1''@;'; put 'put ''MDQzZVx1MDQzMFx1MDQ0Ml0gTFQgW1x1MDQzNFx1MDQzMF0iLG5leHREYXk6IltcdTA0MmRcdTA0NDBcdTA0NDJcdTA0MzBcdTA0MzNcdTA0MzBdIExUIFtcdTA0MzRcdTA0MzBdIixuZXh0V2VlazoiZGRkZCBbXHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM4IFx1MDQ0MVx1MDQzZVx1MDQzMFx1''@;'; put 'put ''MDQ0Ml0gTFQgW1x1MDQzNFx1MDQzMF0iLGxhc3REYXk6IltcdTA0MWFcdTA0MzVcdTA0NDdcdTA0MzAgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyXSBMVCBbXHUwNDM0XHUwNDMwXSIsbGFzdFdlZWs6IltcdTA0MjNcdTA0NDJcdTA0MzNcdTA0MzBcdTA0M2RdIGRkZGQgW1x1MDQzYVx1MDQ0''@;'; put 'put ''M1x1MDQzZFx1MDQzOCBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0NDJdIExUIFtcdTA0MzRcdTA0MzBdIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA0MmZcdTA0M2FcdTA0MzhcdTA0M2QgJXMgXHUwNDM4XHUwNDQ3XHUwNDM4XHUwNDM0XHUwNDMwIixwYXN0OiJcdTA0''@;'; put 'put ''MTFcdTA0MzhcdTA0NDAgXHUwNDNkXHUwNDM1XHUwNDQ3XHUwNDMwICVzIFx1MDQzZVx1MDQzYlx1MDQzNFx1MDQzOFx1MDQzZCIsczoiXHUwNDQ0XHUwNDQzXHUwNDQwXHUwNDQxXHUwNDMwXHUwNDQyIixzczoiJWQgXHUwNDQ0XHUwNDQzXHUwNDQwXHUwNDQxXHUwNDMwXHUwNDQyIixtOiJc''@;'; put 'put ''dTA0MzFcdTA0MzhcdTA0NDAgXHUwNDM0XHUwNDMwXHUwNDNhXHUwNDM4XHUwNDNhXHUwNDMwIixtbToiJWQgXHUwNDM0XHUwNDMwXHUwNDNhXHUwNDM4XHUwNDNhXHUwNDMwIixoOiJcdTA0MzFcdTA0MzhcdTA0NDAgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyIixoaDoiJWQgXHUwNDQxXHUw''@;'; put 'put ''NDNlXHUwNDMwXHUwNDQyIixkOiJcdTA0MzFcdTA0MzhcdTA0NDAgXHUwNDNhXHUwNDQzXHUwNDNkIixkZDoiJWQgXHUwNDNhXHUwNDQzXHUwNDNkIixNOiJcdTA0MzFcdTA0MzhcdTA0NDAgXHUwNDNlXHUwNDM5IixNTToiJWQgXHUwNDNlXHUwNDM5Iix5OiJcdTA0MzFcdTA0MzhcdTA0NDAg''@;'; put 'put ''XHUwNDM5XHUwNDM4XHUwNDNiIix5eToiJWQgXHUwNDM5XHUwNDM4XHUwNDNiIn0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KEwoMTU0MzkpKX0sNDgwOTM6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJ2aSIse21vbnRoczoidGhc''@;'; put 'put ''eGUxbmcgMV90aFx4ZTFuZyAyX3RoXHhlMW5nIDNfdGhceGUxbmcgNF90aFx4ZTFuZyA1X3RoXHhlMW5nIDZfdGhceGUxbmcgN190aFx4ZTFuZyA4X3RoXHhlMW5nIDlfdGhceGUxbmcgMTBfdGhceGUxbmcgMTFfdGhceGUxbmcgMTIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IlRoZyAwMV9U''@;'; put 'put ''aGcgMDJfVGhnIDAzX1RoZyAwNF9UaGcgMDVfVGhnIDA2X1RoZyAwN19UaGcgMDhfVGhnIDA5X1RoZyAxMF9UaGcgMTFfVGhnIDEyIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImNoXHUxZWU3IG5oXHUxZWFkdF90aFx1MWVlOSBoYWlfdGhcdTFlZTkgYmFfdGhc''@;'; put 'put ''dTFlZTkgdFx1MDFiMF90aFx1MWVlOSBuXHUwMTAzbV90aFx1MWVlOSBzXHhlMXVfdGhcdTFlZTkgYlx1MWVhM3kiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiQ05fVDJfVDNfVDRfVDVfVDZfVDciLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkNOX1QyX1QzX1Q0X1Q1X1Q2X1Q3Ii5zcGxp''@;'; put 'put ''dCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxtZXJpZGllbVBhcnNlOi9zYXxjaC9pLGlzUE06ZnVuY3Rpb24oRSl7cmV0dXJuL15jaCQvaS50ZXN0KEUpfSxtZXJpZGllbTpmdW5jdGlvbihFLEVlLFUpe3JldHVybiBFPDEyP1U/InNhIjoiU0EiOlU/ImNoIjoiQ0gifSxsb25nRGF0ZUZv''@;'; put 'put ''cm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFtuXHUwMTAzbV0gWVlZWSIsTExMOiJEIE1NTU0gW25cdTAxMDNtXSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gW25cdTAxMDNtXSBZWVlZIEhIOm1tIixsOiJERC9NL1lZWVki''@;'; put 'put ''LGxsOiJEIE1NTSBZWVlZIixsbGw6IkQgTU1NIFlZWVkgSEg6bW0iLGxsbGw6ImRkZCwgRCBNTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSFx4ZjRtIG5heSBsXHhmYWNdIExUIixuZXh0RGF5OiJbTmdceGUweSBtYWkgbFx4ZmFjXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3R1''@;'; put 'put ''XHUxZWE3biB0XHUxZWRiaSBsXHhmYWNdIExUIixsYXN0RGF5OiJbSFx4ZjRtIHF1YSBsXHhmYWNdIExUIixsYXN0V2VlazoiZGRkZCBbdHVcdTFlYTduIHRyXHUwMWIwXHUxZWRiYyBsXHhmYWNdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyB0XHUxZWRiaSIs''@;'; put 'put ''cGFzdDoiJXMgdHJcdTAxYjBcdTFlZGJjIixzOiJ2XHhlMGkgZ2lceGUyeSIsc3M6IiVkIGdpXHhlMnkiLG06Im1cdTFlZDl0IHBoXHhmYXQiLG1tOiIlZCBwaFx4ZmF0IixoOiJtXHUxZWQ5dCBnaVx1MWVkZCIsaGg6IiVkIGdpXHUxZWRkIixkOiJtXHUxZWQ5dCBuZ1x4ZTB5IixkZDoiJWQg''@;'; put 'put ''bmdceGUweSIsdzoibVx1MWVkOXQgdHVcdTFlYTduIix3dzoiJWQgdHVcdTFlYTduIixNOiJtXHUxZWQ5dCB0aFx4ZTFuZyIsTU06IiVkIHRoXHhlMW5nIix5OiJtXHUxZWQ5dCBuXHUwMTAzbSIseXk6IiVkIG5cdTAxMDNtIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS8sb3Jk''@;'; put 'put ''aW5hbDpmdW5jdGlvbihFKXtyZXR1cm4gRX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sMjU1OTA6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJ4LXBzZXVkbyIse21vbnRoczoiSn5ceGUxXHhmMVx4ZmFceGUx''@;'; put 'put ''fnJceGZkX0Z+XHhlOWJyXHhmYX5ceGUxclx4ZmRffk1ceGUxcmN+aF9ceGMxcH5yXHhlZGxffk1ceGUxXHhmZF9+Slx4ZmFceGYxXHhlOX5fSlx4ZmFsflx4ZmRfXHhjMVx4ZmF+Z1x4ZmFzdH5fU1x4ZTlwfnRceGU5bWJ+XHhlOXJfXHhkM35jdFx4ZjNiflx4ZTlyX1x4ZDF+XHhmM3ZceGU5''@;'; put 'put ''bX5iXHhlOXJffkRceGU5Y1x4ZTl+bWJceGU5ciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSn5ceGUxXHhmMV9+Rlx4ZTliX35NXHhlMXJfflx4YzFwcl9+TVx4ZTFceGZkX35KXHhmYVx4ZjFffkpceGZhbF9+XHhjMVx4ZmFnX35TXHhlOXBfflx4ZDNjdF9+XHhkMVx4ZjN2X35EXHhlOWMi''@;'; put 'put ''LnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiU35ceGZhXHhmMWRceGUxflx4ZmRfTVx4ZjN+XHhmMWRceGUxXHhmZH5fVFx4ZmFceGU5fnNkXHhlMVx4ZmR+X1dceGU5ZH5ceGYxXHhlOXNkflx4ZTFceGZkX1R+aFx4ZmFyc35kXHhlMVx4ZmRffkZyXHhlZGR+XHhl''@;'; put 'put ''MVx4ZmRfU35ceGUxdFx4ZmFyfmRceGUxXHhmZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTflx4ZmFceGYxX35NXHhmM1x4ZjFfflRceGZhXHhlOV9+V1x4ZTlkX35UaFx4ZmFffkZyXHhlZF9+U1x4ZTF0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTflx4ZmFfTVx4ZjN+X1RceGZh''@;'; put 'put ''X35XXHhlOV9UfmhfRnJ+X1NceGUxIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhI''@;'; put 'put ''Om1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUflx4ZjNkXHhlMX5ceGZkIFx4ZTF0XSBMVCIsbmV4dERheToiW1R+XHhmM21ceGYzfnJyXHhmM353IFx4ZTF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x4ZTF0XSBMVCIsbGFzdERheToiW1x4ZGR+XHhlOXN0flx4ZTlyZFx4ZTF+XHhmZCBceGUx''@;'; put 'put ''dF0gTFQiLGxhc3RXZWVrOiJbTH5ceGUxc3RdIGRkZGQgW1x4ZTF0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHhlZH5ceGYxICVzIixwYXN0OiIlcyBceGUxfmdceGYzIixzOiJceGUxIH5mXHhlOXcgfnNceGU5Y1x4ZjN+XHhmMWRzIixzczoiJWQgc35ceGU5''@;'; put 'put ''Y1x4ZjNceGYxfmRzIixtOiJceGUxIH5tXHhlZFx4ZjF+XHhmYXRceGU5IixtbToiJWQgbX5ceGVkXHhmMVx4ZmF+dFx4ZTlzIixoOiJceGUxflx4ZjEgaFx4ZjN+XHhmYXIiLGhoOiIlZCBoflx4ZjNceGZhcnMiLGQ6Ilx4ZTEgfmRceGUxXHhmZCIsZGQ6IiVkIGR+XHhlMVx4ZmRzIixNOiJc''@;'; put 'put ''eGUxIH5tXHhmM1x4ZjF+dGgiLE1NOiIlZCBtflx4ZjNceGYxdH5ocyIseToiXHhlMSB+XHhmZFx4ZTlceGUxciIseXk6IiVkIFx4ZmR+XHhlOVx4ZTFycyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0odGh8c3R8bmR8cmQpLyxvcmRpbmFsOmZ1bmN0aW9uKEUpe3ZhciBFZT1F''@;'; put 'put ''JTEwO3JldHVybiBFKygxPT1+fihFJTEwMC8xMCk/InRoIjoxPT09RWU/InN0IjoyPT09RWU/Im5kIjozPT09RWU/InJkIjoidGgiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KEwoMTU0MzkpKX0sOTA1ODpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5k''@;'; put 'put ''ZWZpbmVMb2NhbGUoInlvIix7bW9udGhzOiJTXHUxZWI5XHUwMzAxclx1MWViOVx1MDMwMV9FXHUwMzAwcmVcdTAzMDBsZVx1MDMwMF9cdTFlYjhyXHUxZWI5XHUwMzAwbmFcdTAzMDBfSVx1MDMwMGdiZVx1MDMwMV9FXHUwMzAwYmliaV9PXHUwMzAwa3VcdTAzMDBkdV9BZ1x1MWViOW1vX09c''@;'; put 'put ''dTAzMDBndVx1MDMwMW5fT3dld2VfXHUxZWNjXHUwMzAwd2FcdTAzMDByYVx1MDMwMF9CZVx1MDMwMWx1XHUwMzAxX1x1MWVjY1x1MDMwMHBcdTFlYjlcdTAzMDBcdTAzMDAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IlNcdTFlYjlcdTAzMDFyX0VcdTAzMDBybF9cdTFlYjhybl9JXHUwMzAw''@;'; put 'put ''Z2JfRVx1MDMwMGJpX09cdTAzMDBrdVx1MDMwMF9BZ1x1MWViOV9PXHUwMzAwZ3VcdTAzMDFfT3dlX1x1MWVjY1x1MDMwMHdhXHUwMzAwX0JlXHUwMzAxbF9cdTFlY2NcdTAzMDBwXHUxZWI5XHUwMzAwXHUwMzAwIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJBXHUwMzAwaVx1MDMwMGt1XHUwMzAx''@;'; put 'put ''X0FqZVx1MDMwMV9JXHUwMzAwc1x1MWViOVx1MDMwMWd1bl9cdTFlY2NqXHUxZWNkXHUwMzAxcnVcdTAzMDFfXHUxZWNjalx1MWVjZFx1MDMwMWJcdTFlY2RfXHUxZWI4dGlcdTAzMDBfQVx1MDMwMGJhXHUwMzAxbVx1MWViOVx1MDMwMXRhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkFc''@;'; put 'put ''dTAzMDBpXHUwMzAwa19BamVcdTAzMDFfSVx1MDMwMHNcdTFlYjlcdTAzMDFfXHUxZWNjanJfXHUxZWNjamJfXHUxZWI4dGlcdTAzMDBfQVx1MDMwMGJhXHUwMzAxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJBXHUwMzAwaVx1MDMwMF9Bal9JXHUwMzAwc19cdTFlY2NyX1x1MWVjY2JfXHUx''@;'; put 'put ''ZWI4dF9BXHUwMzAwYiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSJ9LGNhbGVu''@;'; put 'put ''ZGFyOntzYW1lRGF5OiJbT1x1MDMwMG5pXHUwMzAwIG5pXSBMVCIsbmV4dERheToiW1x1MWVjY1x1MDMwMGxhIG5pXSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MWVjY3NcdTFlYjlcdTAzMDAgdG9cdTAzMDFuJ2JcdTFlY2RdIFtuaV0gTFQiLGxhc3REYXk6IltBXHUwMzAwbmEgbmldIExUIixs''@;'; put 'put ''YXN0V2VlazoiZGRkZCBbXHUxZWNjc1x1MWViOVx1MDMwMCB0b1x1MDMwMWxcdTFlY2RcdTAzMDFdIFtuaV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im5pXHUwMzAxICVzIixwYXN0OiIlcyBrXHUxZWNkamFcdTAzMDEiLHM6ImlcdTAzMDBzXHUxZWI5anVcdTAz''@;'; put 'put ''MDEgYWF5YVx1MDMwMSBkaWUiLHNzOiJhYXlhXHUwMzAxICVkIixtOiJpXHUwMzAwc1x1MWViOWp1XHUwMzAxIGthbiIsbW06ImlcdTAzMDBzXHUxZWI5anVcdTAzMDEgJWQiLGg6IndhXHUwMzAxa2F0aSBrYW4iLGhoOiJ3YVx1MDMwMWthdGkgJWQiLGQ6Ilx1MWVjZGpcdTFlY2RcdTAzMDEg''@;'; put 'put ''a2FuIixkZDoiXHUxZWNkalx1MWVjZFx1MDMwMSAlZCIsTToib3N1XHUwMzAwIGthbiIsTU06Im9zdVx1MDMwMCAlZCIseToiXHUxZWNkZHVcdTAzMDFuIGthbiIseXk6Ilx1MWVjZGR1XHUwMzAxbiAlZCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1x1MWVjZGpcdTFlY2RcdTAzMDFcc1xk''@;'; put 'put ''ezEsMn0vLG9yZGluYWw6Ilx1MWVjZGpcdTFlY2RcdTAzMDEgJWQiLHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDc3OTA4OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgiemgtY24iLHttb250aHM6Ilx1NGUwMFx1''@;'; put 'put ''NjcwOF9cdTRlOGNcdTY3MDhfXHU0ZTA5XHU2NzA4X1x1NTZkYlx1NjcwOF9cdTRlOTRcdTY3MDhfXHU1MTZkXHU2NzA4X1x1NGUwM1x1NjcwOF9cdTUxNmJcdTY3MDhfXHU0ZTVkXHU2NzA4X1x1NTM0MVx1NjcwOF9cdTUzNDFcdTRlMDBcdTY3MDhfXHU1MzQxXHU0ZThjXHU2NzA4Ii5zcGxp''@;'; put 'put ''dCgiXyIpLG1vbnRoc1Nob3J0OiIxXHU2NzA4XzJcdTY3MDhfM1x1NjcwOF80XHU2NzA4XzVcdTY3MDhfNlx1NjcwOF83XHU2NzA4XzhcdTY3MDhfOVx1NjcwOF8xMFx1NjcwOF8xMVx1NjcwOF8xMlx1NjcwOCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHU2NjFmXHU2NzFmXHU2NWU1X1x1NjYx''@;'; put 'put ''Zlx1NjcxZlx1NGUwMF9cdTY2MWZcdTY3MWZcdTRlOGNfXHU2NjFmXHU2NzFmXHU0ZTA5X1x1NjYxZlx1NjcxZlx1NTZkYl9cdTY2MWZcdTY3MWZcdTRlOTRfXHU2NjFmXHU2NzFmXHU1MTZkIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1NTQ2OFx1NjVlNV9cdTU0NjhcdTRlMDBfXHU1''@;'; put 'put ''NDY4XHU0ZThjX1x1NTQ2OFx1NGUwOV9cdTU0NjhcdTU2ZGJfXHU1NDY4XHU0ZTk0X1x1NTQ2OFx1NTE2ZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHU2NWU1X1x1NGUwMF9cdTRlOGNfXHU0ZTA5X1x1NTZkYl9cdTRlOTRfXHU1MTZkIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntM''@;'; put 'put ''VDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVkvTU0vREQiLExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUiLExMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1QWhcdTcwYjltbVx1NTIwNiIsTExMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1ZGRkZEFoXHU3MGI5bW1cdTUy''@;'; put 'put ''MDYiLGw6IllZWVkvTS9EIixsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IixsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSBISDptbSIsbGxsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1ZGRkZCBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1NTFjY1x1NjY2OHxcdTY1ZTlcdTRl''@;'; put 'put ''MGF8XHU0ZTBhXHU1MzQ4fFx1NGUyZFx1NTM0OHxcdTRlMGJcdTUzNDh8XHU2NjVhXHU0ZTBhLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oRSxFZSl7cmV0dXJuIDEyPT09RSYmKEU9MCksIlx1NTFjY1x1NjY2OCI9PT1FZXx8Ilx1NjVlOVx1NGUwYSI9PT1FZXx8Ilx1NGUwYVx1NTM0OCI9PT1F''@;'; put 'put ''ZT9FOiJcdTRlMGJcdTUzNDgiPT09RWV8fCJcdTY2NWFcdTRlMGEiPT09RWU/RSsxMjpFPj0xMT9FOkUrMTJ9LG1lcmlkaWVtOmZ1bmN0aW9uKEUsRWUsVSl7dmFyIFE9MTAwKkUrRWU7cmV0dXJuIFE8NjAwPyJcdTUxY2NcdTY2NjgiOlE8OTAwPyJcdTY1ZTlcdTRlMGEiOlE8MTEzMD8iXHU0''@;'; put 'put ''ZTBhXHU1MzQ4IjpRPDEyMzA/Ilx1NGUyZFx1NTM0OCI6UTwxODAwPyJcdTRlMGJcdTUzNDgiOiJcdTY2NWFcdTRlMGEifSxjYWxlbmRhcjp7c2FtZURheToiW1x1NGVjYVx1NTkyOV1MVCIsbmV4dERheToiW1x1NjYwZVx1NTkyOV1MVCIsbmV4dFdlZWs6ZnVuY3Rpb24oRSl7cmV0dXJuIEUu''@;'; put 'put ''d2VlaygpIT09dGhpcy53ZWVrKCk/IltcdTRlMGJdZGRkTFQiOiJbXHU2NzJjXWRkZExUIn0sbGFzdERheToiW1x1NjYyOFx1NTkyOV1MVCIsbGFzdFdlZWs6ZnVuY3Rpb24oRSl7cmV0dXJuIHRoaXMud2VlaygpIT09RS53ZWVrKCk/IltcdTRlMGFdZGRkTFQiOiJbXHU2NzJjXWRkZExUIn0s''@;'; put 'put ''c2FtZUVsc2U6IkwifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KFx1NjVlNXxcdTY3MDh8XHU1NDY4KS8sb3JkaW5hbDpmdW5jdGlvbihFLEVlKXtzd2l0Y2goRWUpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIEUrIlx1NjVlNSI7Y2FzZSJNIjpyZXR1cm4gRSsi''@;'; put 'put ''XHU2NzA4IjtjYXNlInciOmNhc2UiVyI6cmV0dXJuIEUrIlx1NTQ2OCI7ZGVmYXVsdDpyZXR1cm4gRX19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc1x1NTQwZSIscGFzdDoiJXNcdTUyNGQiLHM6Ilx1NTFlMFx1NzlkMiIsc3M6IiVkIFx1NzlkMiIsbToiMSBcdTUyMDZcdTk0OWYiLG1tOiIl''@;'; put 'put ''ZCBcdTUyMDZcdTk0OWYiLGg6IjEgXHU1YzBmXHU2NWY2IixoaDoiJWQgXHU1YzBmXHU2NWY2IixkOiIxIFx1NTkyOSIsZGQ6IiVkIFx1NTkyOSIsdzoiMSBcdTU0NjgiLHd3OiIlZCBcdTU0NjgiLE06IjEgXHU0ZTJhXHU2NzA4IixNTToiJWQgXHU0ZTJhXHU2NzA4Iix5OiIxIFx1NWU3NCIs''@;'; put 'put ''eXk6IiVkIFx1NWU3NCJ9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShMKDE1NDM5KSl9LDg4Njc6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7bWUuZGVmaW5lTG9jYWxlKCJ6aC1oayIse21vbnRoczoiXHU0ZTAwXHU2NzA4X1x1NGU4Y1x1NjcwOF9cdTRlMDlc''@;'; put 'put ''dTY3MDhfXHU1NmRiXHU2NzA4X1x1NGU5NFx1NjcwOF9cdTUxNmRcdTY3MDhfXHU0ZTAzXHU2NzA4X1x1NTE2Ylx1NjcwOF9cdTRlNWRcdTY3MDhfXHU1MzQxXHU2NzA4X1x1NTM0MVx1NGUwMFx1NjcwOF9cdTUzNDFcdTRlOGNcdTY3MDgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjFcdTY3''@;'; put 'put ''MDhfMlx1NjcwOF8zXHU2NzA4XzRcdTY3MDhfNVx1NjcwOF82XHU2NzA4XzdcdTY3MDhfOFx1NjcwOF85XHU2NzA4XzEwXHU2NzA4XzExXHU2NzA4XzEyXHU2NzA4Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTY2MWZcdTY3MWZcdTY1ZTVfXHU2NjFmXHU2NzFmXHU0ZTAwX1x1NjYxZlx1Njcx''@;'; put 'put ''Zlx1NGU4Y19cdTY2MWZcdTY3MWZcdTRlMDlfXHU2NjFmXHU2NzFmXHU1NmRiX1x1NjYxZlx1NjcxZlx1NGU5NF9cdTY2MWZcdTY3MWZcdTUxNmQiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHU5MDMxXHU2NWU1X1x1OTAzMVx1NGUwMF9cdTkwMzFcdTRlOGNfXHU5MDMxXHU0ZTA5X1x1''@;'; put 'put ''OTAzMVx1NTZkYl9cdTkwMzFcdTRlOTRfXHU5MDMxXHU1MTZkIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTY1ZTVfXHU0ZTAwX1x1NGU4Y19cdTRlMDlfXHU1NmRiX1x1NGU5NF9cdTUxNmQiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIs''@;'; put 'put ''TDoiWVlZWS9NTS9ERCIsTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSIsTExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUgSEg6bW0iLExMTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNWRkZGQgSEg6bW0iLGw6IllZWVkvTS9EIixsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1''@;'; put 'put ''IixsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSBISDptbSIsbGxsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1ZGRkZCBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1NTFjY1x1NjY2OHxcdTY1ZTlcdTRlMGF8XHU0ZTBhXHU1MzQ4fFx1NGUyZFx1NTM0OHxcdTRlMGJcdTUzNDh8XHU2''@;'; put 'put ''NjVhXHU0ZTBhLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oRSxFZSl7cmV0dXJuIDEyPT09RSYmKEU9MCksIlx1NTFjY1x1NjY2OCI9PT1FZXx8Ilx1NjVlOVx1NGUwYSI9PT1FZXx8Ilx1NGUwYVx1NTM0OCI9PT1FZT9FOiJcdTRlMmRcdTUzNDgiPT09RWU/RT49MTE/RTpFKzEyOiJcdTRlMGJc''@;'; put 'put ''dTUzNDgiPT09RWV8fCJcdTY2NWFcdTRlMGEiPT09RWU/RSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKEUsRWUsVSl7dmFyIFE9MTAwKkUrRWU7cmV0dXJuIFE8NjAwPyJcdTUxY2NcdTY2NjgiOlE8OTAwPyJcdTY1ZTlcdTRlMGEiOlE8MTIwMD8iXHU0ZTBhXHU1MzQ4IjoxMjAwPT09''@;'; put 'put ''UT8iXHU0ZTJkXHU1MzQ4IjpRPDE4MDA/Ilx1NGUwYlx1NTM0OCI6Ilx1NjY1YVx1NGUwYSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHU0ZWNhXHU1OTI5XUxUIixuZXh0RGF5OiJbXHU2NjBlXHU1OTI5XUxUIixuZXh0V2VlazoiW1x1NGUwYl1kZGRkTFQiLGxhc3REYXk6IltcdTY2MjhcdTU5''@;'; put 'put ''MjldTFQiLGxhc3RXZWVrOiJbXHU0ZTBhXWRkZGRMVCIsc2FtZUVsc2U6IkwifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KFx1NjVlNXxcdTY3MDh8XHU5MDMxKS8sb3JkaW5hbDpmdW5jdGlvbihFLEVlKXtzd2l0Y2goRWUpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0''@;'; put 'put ''dXJuIEUrIlx1NjVlNSI7Y2FzZSJNIjpyZXR1cm4gRSsiXHU2NzA4IjtjYXNlInciOmNhc2UiVyI6cmV0dXJuIEUrIlx1OTAzMSI7ZGVmYXVsdDpyZXR1cm4gRX19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc1x1NWY4YyIscGFzdDoiJXNcdTUyNGQiLHM6Ilx1NWU3ZVx1NzlkMiIsc3M6IiVk''@;'; put 'put ''IFx1NzlkMiIsbToiMSBcdTUyMDZcdTk0MTgiLG1tOiIlZCBcdTUyMDZcdTk0MTgiLGg6IjEgXHU1YzBmXHU2NjQyIixoaDoiJWQgXHU1YzBmXHU2NjQyIixkOiIxIFx1NTkyOSIsZGQ6IiVkIFx1NTkyOSIsTToiMSBcdTUwMGJcdTY3MDgiLE1NOiIlZCBcdTUwMGJcdTY3MDgiLHk6IjEgXHU1''@;'; put 'put ''ZTc0Iix5eToiJWQgXHU1ZTc0In19KX0oTCgxNTQzOSkpfSwzMTEzMzpmdW5jdGlvbihYZSxKZSxMKXshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5kZWZpbmVMb2NhbGUoInpoLW1vIix7bW9udGhzOiJcdTRlMDBcdTY3MDhfXHU0ZThjXHU2NzA4X1x1NGUwOVx1NjcwOF9cdTU2ZGJc''@;'; put 'put ''dTY3MDhfXHU0ZTk0XHU2NzA4X1x1NTE2ZFx1NjcwOF9cdTRlMDNcdTY3MDhfXHU1MTZiXHU2NzA4X1x1NGU1ZFx1NjcwOF9cdTUzNDFcdTY3MDhfXHU1MzQxXHU0ZTAwXHU2NzA4X1x1NTM0MVx1NGU4Y1x1NjcwOCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMVx1NjcwOF8yXHU2NzA4XzNc''@;'; put 'put ''dTY3MDhfNFx1NjcwOF81XHU2NzA4XzZcdTY3MDhfN1x1NjcwOF84XHU2NzA4XzlcdTY3MDhfMTBcdTY3MDhfMTFcdTY3MDhfMTJcdTY3MDgiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1NjYxZlx1NjcxZlx1NjVlNV9cdTY2MWZcdTY3MWZcdTRlMDBfXHU2NjFmXHU2NzFmXHU0ZThjX1x1NjYx''@;'; put 'put ''Zlx1NjcxZlx1NGUwOV9cdTY2MWZcdTY3MWZcdTU2ZGJfXHU2NjFmXHU2NzFmXHU0ZTk0X1x1NjYxZlx1NjcxZlx1NTE2ZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTkwMzFcdTY1ZTVfXHU5MDMxXHU0ZTAwX1x1OTAzMVx1NGU4Y19cdTkwMzFcdTRlMDlfXHU5MDMxXHU1NmRiX1x1''@;'; put 'put ''OTAzMVx1NGU5NF9cdTkwMzFcdTUxNmQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1NjVlNV9cdTRlMDBfXHU0ZThjX1x1NGUwOV9cdTU2ZGJfXHU0ZTk0X1x1NTE2ZCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZ''@;'; put 'put ''IixMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IixMTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSBISDptbSIsTExMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1ZGRkZCBISDptbSIsbDoiRC9NL1lZWVkiLGxsOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUiLGxsbDoiWVlZWVx1''@;'; put 'put ''NWU3NE1cdTY3MDhEXHU2NWU1IEhIOm1tIixsbGxsOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTVkZGRkIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHU1MWNjXHU2NjY4fFx1NjVlOVx1NGUwYXxcdTRlMGFcdTUzNDh8XHU0ZTJkXHU1MzQ4fFx1NGUwYlx1NTM0OHxcdTY2NWFcdTRlMGEvLG1l''@;'; put 'put ''cmlkaWVtSG91cjpmdW5jdGlvbihFLEVlKXtyZXR1cm4gMTI9PT1FJiYoRT0wKSwiXHU1MWNjXHU2NjY4Ij09PUVlfHwiXHU2NWU5XHU0ZTBhIj09PUVlfHwiXHU0ZTBhXHU1MzQ4Ij09PUVlP0U6Ilx1NGUyZFx1NTM0OCI9PT1FZT9FPj0xMT9FOkUrMTI6Ilx1NGUwYlx1NTM0OCI9PT1FZXx8''@;'; put 'put ''Ilx1NjY1YVx1NGUwYSI9PT1FZT9FKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oRSxFZSxVKXt2YXIgUT0xMDAqRStFZTtyZXR1cm4gUTw2MDA/Ilx1NTFjY1x1NjY2OCI6UTw5MDA/Ilx1NjVlOVx1NGUwYSI6UTwxMTMwPyJcdTRlMGFcdTUzNDgiOlE8MTIzMD8iXHU0ZTJkXHU1MzQ4''@;'; put 'put ''IjpRPDE4MDA/Ilx1NGUwYlx1NTM0OCI6Ilx1NjY1YVx1NGUwYSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHU0ZWNhXHU1OTI5XSBMVCIsbmV4dERheToiW1x1NjYwZVx1NTkyOV0gTFQiLG5leHRXZWVrOiJbXHU0ZTBiXWRkZGQgTFQiLGxhc3REYXk6IltcdTY2MjhcdTU5MjldIExUIixsYXN0''@;'; put 'put ''V2VlazoiW1x1NGUwYV1kZGRkIExUIixzYW1lRWxzZToiTCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oXHU2NWU1fFx1NjcwOHxcdTkwMzEpLyxvcmRpbmFsOmZ1bmN0aW9uKEUsRWUpe3N3aXRjaChFZSl7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gRSsiXHU2''@;'; put 'put ''NWU1IjtjYXNlIk0iOnJldHVybiBFKyJcdTY3MDgiO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gRSsiXHU5MDMxIjtkZWZhdWx0OnJldHVybiBFfX0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzXHU1MTY3IixwYXN0OiIlc1x1NTI0ZCIsczoiXHU1ZTdlXHU3OWQyIixzczoiJWQgXHU3OWQyIixt''@;'; put 'put ''OiIxIFx1NTIwNlx1OTQxOCIsbW06IiVkIFx1NTIwNlx1OTQxOCIsaDoiMSBcdTVjMGZcdTY2NDIiLGhoOiIlZCBcdTVjMGZcdTY2NDIiLGQ6IjEgXHU1OTI5IixkZDoiJWQgXHU1OTI5IixNOiIxIFx1NTAwYlx1NjcwOCIsTU06IiVkIFx1NTAwYlx1NjcwOCIseToiMSBcdTVlNzQiLHl5OiIl''@;'; put 'put ''ZCBcdTVlNzQifX0pfShMKDE1NDM5KSl9LDgzMjkxOmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSl7InVzZSBzdHJpY3QiO21lLmRlZmluZUxvY2FsZSgiemgtdHciLHttb250aHM6Ilx1NGUwMFx1NjcwOF9cdTRlOGNcdTY3MDhfXHU0ZTA5XHU2NzA4X1x1NTZkYlx1NjcwOF9cdTRl''@;'; put 'put ''OTRcdTY3MDhfXHU1MTZkXHU2NzA4X1x1NGUwM1x1NjcwOF9cdTUxNmJcdTY3MDhfXHU0ZTVkXHU2NzA4X1x1NTM0MVx1NjcwOF9cdTUzNDFcdTRlMDBcdTY3MDhfXHU1MzQxXHU0ZThjXHU2NzA4Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiIxXHU2NzA4XzJcdTY3MDhfM1x1NjcwOF80XHU2''@;'; put 'put ''NzA4XzVcdTY3MDhfNlx1NjcwOF83XHU2NzA4XzhcdTY3MDhfOVx1NjcwOF8xMFx1NjcwOF8xMVx1NjcwOF8xMlx1NjcwOCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHU2NjFmXHU2NzFmXHU2NWU1X1x1NjYxZlx1NjcxZlx1NGUwMF9cdTY2MWZcdTY3MWZcdTRlOGNfXHU2NjFmXHU2NzFmXHU0''@;'; put 'put ''ZTA5X1x1NjYxZlx1NjcxZlx1NTZkYl9cdTY2MWZcdTY3MWZcdTRlOTRfXHU2NjFmXHU2NzFmXHU1MTZkIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1OTAzMVx1NjVlNV9cdTkwMzFcdTRlMDBfXHU5MDMxXHU0ZThjX1x1OTAzMVx1NGUwOV9cdTkwMzFcdTU2ZGJfXHU5MDMxXHU0ZTk0''@;'; put 'put ''X1x1OTAzMVx1NTE2ZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHU2NWU1X1x1NGUwMF9cdTRlOGNfXHU0ZTA5X1x1NTZkYl9cdTRlOTRfXHU1MTZkIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVkvTU0vREQiLExMOiJZWVlZ''@;'; put 'put ''XHU1ZTc0TVx1NjcwOERcdTY1ZTUiLExMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IEhIOm1tIixMTExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTVkZGRkIEhIOm1tIixsOiJZWVlZL00vRCIsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSIsbGxsOiJZWVlZXHU1ZTc0TVx1Njcw''@;'; put 'put ''OERcdTY1ZTUgSEg6bW0iLGxsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNWRkZGQgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTUxY2NcdTY2Njh8XHU2NWU5XHU0ZTBhfFx1NGUwYVx1NTM0OHxcdTRlMmRcdTUzNDh8XHU0ZTBiXHU1MzQ4fFx1NjY1YVx1NGUwYS8sbWVyaWRpZW1Ib3Vy''@;'; put 'put ''OmZ1bmN0aW9uKEUsRWUpe3JldHVybiAxMj09PUUmJihFPTApLCJcdTUxY2NcdTY2NjgiPT09RWV8fCJcdTY1ZTlcdTRlMGEiPT09RWV8fCJcdTRlMGFcdTUzNDgiPT09RWU/RToiXHU0ZTJkXHU1MzQ4Ij09PUVlP0U+PTExP0U6RSsxMjoiXHU0ZTBiXHU1MzQ4Ij09PUVlfHwiXHU2NjVhXHU0''@;'; put 'put ''ZTBhIj09PUVlP0UrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihFLEVlLFUpe3ZhciBRPTEwMCpFK0VlO3JldHVybiBRPDYwMD8iXHU1MWNjXHU2NjY4IjpRPDkwMD8iXHU2NWU5XHU0ZTBhIjpRPDExMzA/Ilx1NGUwYVx1NTM0OCI6UTwxMjMwPyJcdTRlMmRcdTUzNDgiOlE8MTgwMD8i''@;'; put 'put ''XHU0ZTBiXHU1MzQ4IjoiXHU2NjVhXHU0ZTBhIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTRlY2FcdTU5MjldIExUIixuZXh0RGF5OiJbXHU2NjBlXHU1OTI5XSBMVCIsbmV4dFdlZWs6IltcdTRlMGJdZGRkZCBMVCIsbGFzdERheToiW1x1NjYyOFx1NTkyOV0gTFQiLGxhc3RXZWVrOiJbXHU0''@;'; put 'put ''ZTBhXWRkZGQgTFQiLHNhbWVFbHNlOiJMIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShcdTY1ZTV8XHU2NzA4fFx1OTAzMSkvLG9yZGluYWw6ZnVuY3Rpb24oRSxFZSl7c3dpdGNoKEVlKXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiBFKyJcdTY1ZTUiO2Nhc2Ui''@;'; put 'put ''TSI6cmV0dXJuIEUrIlx1NjcwOCI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBFKyJcdTkwMzEiO2RlZmF1bHQ6cmV0dXJuIEV9fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXNcdTVmOGMiLHBhc3Q6IiVzXHU1MjRkIixzOiJcdTVlN2VcdTc5ZDIiLHNzOiIlZCBcdTc5ZDIiLG06IjEgXHU1MjA2''@;'; put 'put ''XHU5NDE4IixtbToiJWQgXHU1MjA2XHU5NDE4IixoOiIxIFx1NWMwZlx1NjY0MiIsaGg6IiVkIFx1NWMwZlx1NjY0MiIsZDoiMSBcdTU5MjkiLGRkOiIlZCBcdTU5MjkiLE06IjEgXHU1MDBiXHU2NzA4IixNTToiJWQgXHU1MDBiXHU2NzA4Iix5OiIxIFx1NWU3NCIseXk6IiVkIFx1NWU3NCJ9''@;'; put 'put ''fSl9KEwoMTU0MzkpKX0sMTU0Mzk6ZnVuY3Rpb24oWGUsSmUsTCl7KFhlPUwubm1kKFhlKSkuZXhwb3J0cz1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgbWUsc2U7ZnVuY3Rpb24gQigpe3JldHVybiBtZS5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gRWUoemUpe3JldHVybiB6''@;'; put 'put ''ZSBpbnN0YW5jZW9mIEFycmF5fHwiW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHplKX1mdW5jdGlvbiBVKHplKXtyZXR1cm4gbnVsbCE9emUmJiJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHplKX1mdW5j''@;'; put 'put ''dGlvbiBRKHplLFZ0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHplLFZ0KX1mdW5jdGlvbiBqKHplKXtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcylyZXR1cm4gMD09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHplKS5sZW5ndGg7dmFyIFZ0''@;'; put 'put ''O2ZvcihWdCBpbiB6ZSlpZihRKHplLFZ0KSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiByZSh6ZSl7cmV0dXJuIHZvaWQgMD09PXplfWZ1bmN0aW9uIGFlKHplKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHplfHwiW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJp''@;'; put 'put ''bmcuY2FsbCh6ZSl9ZnVuY3Rpb24gWSh6ZSl7cmV0dXJuIHplIGluc3RhbmNlb2YgRGF0ZXx8IltvYmplY3QgRGF0ZV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHplKX1mdW5jdGlvbiBXKHplLFZ0KXt2YXIgUm4saG49W10sdHI9emUubGVuZ3RoO2ZvcihSbj0wO1JuPHRy''@;'; put 'put ''OysrUm4paG4ucHVzaChWdCh6ZVtSbl0sUm4pKTtyZXR1cm4gaG59ZnVuY3Rpb24gTih6ZSxWdCl7Zm9yKHZhciBobiBpbiBWdClRKFZ0LGhuKSYmKHplW2huXT1WdFtobl0pO3JldHVybiBRKFZ0LCJ0b1N0cmluZyIpJiYoemUudG9TdHJpbmc9VnQudG9TdHJpbmcpLFEoVnQsInZhbHVlT2Yi''@;'; put 'put ''KSYmKHplLnZhbHVlT2Y9VnQudmFsdWVPZiksemV9ZnVuY3Rpb24gdGUoemUsVnQsaG4sUm4pe3JldHVybiBLbyh6ZSxWdCxobixSbiwhMCkudXRjKCl9ZnVuY3Rpb24gSih6ZSl7cmV0dXJuIG51bGw9PXplLl9wZiYmKHplLl9wZj17ZW1wdHk6ITEsdW51c2VkVG9rZW5zOltdLHVudXNlZElu''@;'; put 'put ''cHV0OltdLG92ZXJmbG93Oi0yLGNoYXJzTGVmdE92ZXI6MCxudWxsSW5wdXQ6ITEsaW52YWxpZEVyYTpudWxsLGludmFsaWRNb250aDpudWxsLGludmFsaWRGb3JtYXQ6ITEsdXNlckludmFsaWRhdGVkOiExLGlzbzohMSxwYXJzZWREYXRlUGFydHM6W10sZXJhOm51bGwsbWVyaWRpZW06bnVs''@;'; put 'put ''bCxyZmMyODIyOiExLHdlZWtkYXlNaXNtYXRjaDohMX0pLHplLl9wZn1mdW5jdGlvbiBvZSh6ZSl7aWYobnVsbD09emUuX2lzVmFsaWQpe3ZhciBWdD1KKHplKSxobj1zZS5jYWxsKFZ0LnBhcnNlZERhdGVQYXJ0cyxmdW5jdGlvbih0cil7cmV0dXJuIG51bGwhPXRyfSksUm49IWlzTmFOKHpl''@;'; put 'put ''Ll9kLmdldFRpbWUoKSkmJlZ0Lm92ZXJmbG93PDAmJiFWdC5lbXB0eSYmIVZ0LmludmFsaWRFcmEmJiFWdC5pbnZhbGlkTW9udGgmJiFWdC5pbnZhbGlkV2Vla2RheSYmIVZ0LndlZWtkYXlNaXNtYXRjaCYmIVZ0Lm51bGxJbnB1dCYmIVZ0LmludmFsaWRGb3JtYXQmJiFWdC51c2VySW52YWxp''@;'; put 'put ''ZGF0ZWQmJighVnQubWVyaWRpZW18fFZ0Lm1lcmlkaWVtJiZobik7aWYoemUuX3N0cmljdCYmKFJuPVJuJiYwPT09VnQuY2hhcnNMZWZ0T3ZlciYmMD09PVZ0LnVudXNlZFRva2Vucy5sZW5ndGgmJnZvaWQgMD09PVZ0LmJpZ0hvdXIpLG51bGwhPU9iamVjdC5pc0Zyb3plbiYmT2JqZWN0Lmlz''@;'; put 'put ''RnJvemVuKHplKSlyZXR1cm4gUm47emUuX2lzVmFsaWQ9Um59cmV0dXJuIHplLl9pc1ZhbGlkfWZ1bmN0aW9uIGNlKHplKXt2YXIgVnQ9dGUoTmFOKTtyZXR1cm4gbnVsbCE9emU/TihKKFZ0KSx6ZSk6SihWdCkudXNlckludmFsaWRhdGVkPSEwLFZ0fXNlPUFycmF5LnByb3RvdHlwZS5zb21l''@;'; put 'put ''P0FycmF5LnByb3RvdHlwZS5zb21lOmZ1bmN0aW9uKHplKXt2YXIgUm4sVnQ9T2JqZWN0KHRoaXMpLGhuPVZ0Lmxlbmd0aD4+PjA7Zm9yKFJuPTA7Um48aG47Um4rKylpZihSbiBpbiBWdCYmemUuY2FsbCh0aGlzLFZ0W1JuXSxSbixWdCkpcmV0dXJuITA7cmV0dXJuITF9O3ZhciBkZT1CLm1v''@;'; put 'put ''bWVudFByb3BlcnRpZXM9W10sdmU9ITE7ZnVuY3Rpb24gQWUoemUsVnQpe3ZhciBobixSbix0cixlaT1kZS5sZW5ndGg7aWYocmUoVnQuX2lzQU1vbWVudE9iamVjdCl8fCh6ZS5faXNBTW9tZW50T2JqZWN0PVZ0Ll9pc0FNb21lbnRPYmplY3QpLHJlKFZ0Ll9pKXx8KHplLl9pPVZ0Ll9pKSxy''@;'; put 'put ''ZShWdC5fZil8fCh6ZS5fZj1WdC5fZikscmUoVnQuX2wpfHwoemUuX2w9VnQuX2wpLHJlKFZ0Ll9zdHJpY3QpfHwoemUuX3N0cmljdD1WdC5fc3RyaWN0KSxyZShWdC5fdHptKXx8KHplLl90em09VnQuX3R6bSkscmUoVnQuX2lzVVRDKXx8KHplLl9pc1VUQz1WdC5faXNVVEMpLHJlKFZ0Ll9v''@;'; put 'put ''ZmZzZXQpfHwoemUuX29mZnNldD1WdC5fb2Zmc2V0KSxyZShWdC5fcGYpfHwoemUuX3BmPUooVnQpKSxyZShWdC5fbG9jYWxlKXx8KHplLl9sb2NhbGU9VnQuX2xvY2FsZSksZWk+MClmb3IoaG49MDtobjxlaTtobisrKXJlKHRyPVZ0W1JuPWRlW2huXV0pfHwoemVbUm5dPXRyKTtyZXR1cm4g''@;'; put 'put ''emV9ZnVuY3Rpb24ga2UoemUpe0FlKHRoaXMsemUpLHRoaXMuX2Q9bmV3IERhdGUobnVsbCE9emUuX2Q/emUuX2QuZ2V0VGltZSgpOk5hTiksdGhpcy5pc1ZhbGlkKCl8fCh0aGlzLl9kPW5ldyBEYXRlKE5hTikpLCExPT09dmUmJih2ZT0hMCxCLnVwZGF0ZU9mZnNldCh0aGlzKSx2ZT0hMSl9''@;'; put 'put ''ZnVuY3Rpb24gU2UoemUpe3JldHVybiB6ZSBpbnN0YW5jZW9mIGtlfHxudWxsIT16ZSYmbnVsbCE9emUuX2lzQU1vbWVudE9iamVjdH1mdW5jdGlvbiBJZSh6ZSl7ITE9PT1CLnN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncyYmInVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZjb25zb2xl''@;'; put 'put ''Lndhcm4mJmNvbnNvbGUud2FybigiRGVwcmVjYXRpb24gd2FybmluZzogIit6ZSl9ZnVuY3Rpb24gVGUoemUsVnQpe3ZhciBobj0hMDtyZXR1cm4gTihmdW5jdGlvbigpe2lmKG51bGwhPUIuZGVwcmVjYXRpb25IYW5kbGVyJiZCLmRlcHJlY2F0aW9uSGFuZGxlcihudWxsLHplKSxobil7dmFy''@;'; put 'put ''IHRyLGVpLFlpLFJuPVtdLGRhPWFyZ3VtZW50cy5sZW5ndGg7Zm9yKGVpPTA7ZWk8ZGE7ZWkrKyl7aWYodHI9IiIsIm9iamVjdCI9PXR5cGVvZiBhcmd1bWVudHNbZWldKXtmb3IoWWkgaW4gdHIrPSJcblsiK2VpKyJdICIsYXJndW1lbnRzWzBdKVEoYXJndW1lbnRzWzBdLFlpKSYmKHRyKz1Z''@;'; put 'put ''aSsiOiAiK2FyZ3VtZW50c1swXVtZaV0rIiwgIik7dHI9dHIuc2xpY2UoMCwtMil9ZWxzZSB0cj1hcmd1bWVudHNbZWldO1JuLnB1c2godHIpfUllKHplKyJcbkFyZ3VtZW50czogIitBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChSbikuam9pbigiIikrIlxuIisobmV3IEVycm9yKS5zdGFj''@;'; put 'put ''ayksaG49ITF9cmV0dXJuIFZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sVnQpfXZhciB4LE1lPXt9O2Z1bmN0aW9uIGhlKHplLFZ0KXtudWxsIT1CLmRlcHJlY2F0aW9uSGFuZGxlciYmQi5kZXByZWNhdGlvbkhhbmRsZXIoemUsVnQpLE1lW3plXXx8KEllKFZ0KSxNZVt6ZV09ITApfWZ1bmN0''@;'; put 'put ''aW9uIE8oemUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgRnVuY3Rpb24mJnplIGluc3RhbmNlb2YgRnVuY3Rpb258fCJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoemUpfWZ1bmN0aW9uIGVlKHplLFZ0KXt2YXIgUm4saG49Tih7fSx6ZSk7''@;'; put 'put ''Zm9yKFJuIGluIFZ0KVEoVnQsUm4pJiYoVSh6ZVtSbl0pJiZVKFZ0W1JuXSk/KGhuW1JuXT17fSxOKGhuW1JuXSx6ZVtSbl0pLE4oaG5bUm5dLFZ0W1JuXSkpOm51bGwhPVZ0W1JuXT9obltSbl09VnRbUm5dOmRlbGV0ZSBobltSbl0pO2ZvcihSbiBpbiB6ZSlRKHplLFJuKSYmIVEoVnQsUm4p''@;'; put 'put ''JiZVKHplW1JuXSkmJihobltSbl09Tih7fSxobltSbl0pKTtyZXR1cm4gaG59ZnVuY3Rpb24gbmUoemUpe251bGwhPXplJiZ0aGlzLnNldCh6ZSl9Qi5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3M9ITEsQi5kZXByZWNhdGlvbkhhbmRsZXI9bnVsbCx4PU9iamVjdC5rZXlzP09iamVjdC5r''@;'; put 'put ''ZXlzOmZ1bmN0aW9uKHplKXt2YXIgVnQsaG49W107Zm9yKFZ0IGluIHplKVEoemUsVnQpJiZobi5wdXNoKFZ0KTtyZXR1cm4gaG59O2Z1bmN0aW9uIFQoemUsVnQsaG4pe3ZhciBSbj0iIitNYXRoLmFicyh6ZSk7cmV0dXJuKHplPj0wP2huPyIrIjoiIjoiLSIpK01hdGgucG93KDEwLE1hdGgu''@;'; put 'put ''bWF4KDAsVnQtUm4ubGVuZ3RoKSkudG9TdHJpbmcoKS5zdWJzdHIoMSkrUm59dmFyIFM9LyhcW1teXFtdKlxdKXwoXFwpPyhbSGhdbW0oc3MpP3xNb3xNTT9NP00/fERvfERERG98REQ/RD9EP3xkZGQ/ZD98ZG8/fHdbb3x3XT98V1tvfFddP3xRbz98TnsxLDV9fFlZWVlZWXxZWVlZWXxZWVlZ''@;'; put 'put ''fFlZfHl7Miw0fXx5bz98Z2coZ2dnPyk/fEdHKEdHRz8pP3xlfEV8YXxBfGhoP3xISD98a2s/fG1tP3xzcz98U3sxLDl9fHh8WHx6ej98Wlo/fC4pL2csRj0vKFxbW15cW10qXF0pfChcXCk/KExUU3xMVHxMTD9MP0w/fGx7MSw0fSkvZyx5ZT17fSxDZT17fTtmdW5jdGlvbiBEZSh6ZSxWdCxo''@;'; put 'put ''bixSbil7dmFyIHRyPVJuOyJzdHJpbmciPT10eXBlb2YgUm4mJih0cj1mdW5jdGlvbigpe3JldHVybiB0aGlzW1JuXSgpfSksemUmJihDZVt6ZV09dHIpLFZ0JiYoQ2VbVnRbMF1dPWZ1bmN0aW9uKCl7cmV0dXJuIFQodHIuYXBwbHkodGhpcyxhcmd1bWVudHMpLFZ0WzFdLFZ0WzJdKX0pLGhu''@;'; put 'put ''JiYoQ2VbaG5dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm9yZGluYWwodHIuYXBwbHkodGhpcyxhcmd1bWVudHMpLHplKX0pfWZ1bmN0aW9uIFBlKHplKXtyZXR1cm4gemUubWF0Y2goL1xbW1xzXFNdLyk/emUucmVwbGFjZSgvXlxbfFxdJC9nLCIiKTp6ZS5yZXBsYWNl''@;'; put 'put ''KC9cXC9nLCIiKX1mdW5jdGlvbiAkZSh6ZSxWdCl7cmV0dXJuIHplLmlzVmFsaWQoKT8oVnQ9Z3QoVnQsemUubG9jYWxlRGF0YSgpKSx5ZVtWdF09eWVbVnRdfHxmdW5jdGlvbiBRZSh6ZSl7dmFyIGhuLFJuLFZ0PXplLm1hdGNoKFMpO2Zvcihobj0wLFJuPVZ0Lmxlbmd0aDtobjxSbjtobisr''@;'; put 'put ''KVZ0W2huXT1DZVtWdFtobl1dP0NlW1Z0W2huXV06UGUoVnRbaG5dKTtyZXR1cm4gZnVuY3Rpb24odHIpe3ZhciBZaSxlaT0iIjtmb3IoWWk9MDtZaTxSbjtZaSsrKWVpKz1PKFZ0W1lpXSk/VnRbWWldLmNhbGwodHIsemUpOlZ0W1lpXTtyZXR1cm4gZWl9fShWdCkseWVbVnRdKHplKSk6emUu''@;'; put 'put ''bG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCl9ZnVuY3Rpb24gZ3QoemUsVnQpe3ZhciBobj01O2Z1bmN0aW9uIFJuKHRyKXtyZXR1cm4gVnQubG9uZ0RhdGVGb3JtYXQodHIpfHx0cn1mb3IoRi5sYXN0SW5kZXg9MDtobj49MCYmRi50ZXN0KHplKTspemU9emUucmVwbGFjZShGLFJuKSxGLmxh''@;'; put 'put ''c3RJbmRleD0wLGhuLT0xO3JldHVybiB6ZX12YXIgbHQ9e307ZnVuY3Rpb24gTHQoemUsVnQpe3ZhciBobj16ZS50b0xvd2VyQ2FzZSgpO2x0W2huXT1sdFtobisicyJdPWx0W1Z0XT16ZX1mdW5jdGlvbiBDdCh6ZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB6ZT9sdFt6ZV18fGx0W3plLnRv''@;'; put 'put ''TG93ZXJDYXNlKCldOnZvaWQgMH1mdW5jdGlvbiBmdCh6ZSl7dmFyIGhuLFJuLFZ0PXt9O2ZvcihSbiBpbiB6ZSlRKHplLFJuKSYmKGhuPUN0KFJuKSkmJihWdFtobl09emVbUm5dKTtyZXR1cm4gVnR9dmFyIEh0PXt9O2Z1bmN0aW9uIEdlKHplLFZ0KXtIdFt6ZV09VnR9ZnVuY3Rpb24geXQo''@;'; put 'put ''emUpe3JldHVybiB6ZSU0PT0wJiZ6ZSUxMDAhPTB8fHplJTQwMD09MH1mdW5jdGlvbiBqdCh6ZSl7cmV0dXJuIHplPDA/TWF0aC5jZWlsKHplKXx8MDpNYXRoLmZsb29yKHplKX1mdW5jdGlvbiBKdCh6ZSl7dmFyIFZ0PSt6ZSxobj0wO3JldHVybiAwIT09VnQmJmlzRmluaXRlKFZ0KSYmKGhu''@;'; put 'put ''PWp0KFZ0KSksaG59ZnVuY3Rpb24gZ24oemUsVnQpe3JldHVybiBmdW5jdGlvbihobil7cmV0dXJuIG51bGwhPWhuPyh5bih0aGlzLHplLGhuKSxCLnVwZGF0ZU9mZnNldCh0aGlzLFZ0KSx0aGlzKTpkbih0aGlzLHplKX19ZnVuY3Rpb24gZG4oemUsVnQpe3JldHVybiB6ZS5pc1ZhbGlkKCk/''@;'; put 'put ''emUuX2RbImdldCIrKHplLl9pc1VUQz8iVVRDIjoiIikrVnRdKCk6TmFOfWZ1bmN0aW9uIHluKHplLFZ0LGhuKXt6ZS5pc1ZhbGlkKCkmJiFpc05hTihobikmJigiRnVsbFllYXIiPT09VnQmJnl0KHplLnllYXIoKSkmJjE9PT16ZS5tb250aCgpJiYyOT09PXplLmRhdGUoKT8oaG49SnQoaG4p''@;'; put 'put ''LHplLl9kWyJzZXQiKyh6ZS5faXNVVEM/IlVUQyI6IiIpK1Z0XShobix6ZS5tb250aCgpLGlpKGhuLHplLm1vbnRoKCkpKSk6emUuX2RbInNldCIrKHplLl9pc1VUQz8iVVRDIjoiIikrVnRdKGhuKSl9dmFyIHduLGJuPS9cZC8sZXI9L1xkXGQvLHNyPS9cZHszfS8sWG49L1xkezR9LyxGcj0v''@;'; put 'put ''WystXT9cZHs2fS8seHI9L1xkXGQ/LyxxdD0vXGRcZFxkXGQ/Lyxwcj0vXGRcZFxkXGRcZFxkPy8sbnI9L1xkezEsM30vLEFuPS9cZHsxLDR9Lyxxbj0vWystXT9cZHsxLDZ9LyxXdD0vXGQrLyxwbj0vWystXT9cZCsvLEtuPS9afFsrLV1cZFxkOj9cZFxkL2dpLE50PS9afFsrLV1cZFxkKD86''@;'; put 'put ''Oj9cZFxkKT8vZ2ksVW49L1swLTldezAsMjU2fVsnYS16XHUwMEEwLVx1MDVGRlx1MDcwMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkYwN1x1RkYxMC1cdUZGRUZdezEsMjU2fXxbXHUwNjAwLVx1MDZGRlwvXXsxLDI1Nn0oXHMqP1tcdTA2MDAtXHUwNkZGXXsxLDI1Nn0pezEsMn0v''@;'; put 'put ''aTtmdW5jdGlvbiB0bih6ZSxWdCxobil7d25bemVdPU8oVnQpP1Z0OmZ1bmN0aW9uKFJuLHRyKXtyZXR1cm4gUm4mJmhuP2huOlZ0fX1mdW5jdGlvbiB6bih6ZSxWdCl7cmV0dXJuIFEod24semUpP3duW3plXShWdC5fc3RyaWN0LFZ0Ll9sb2NhbGUpOm5ldyBSZWdFeHAoZnVuY3Rpb24gVHIo''@;'; put 'put ''emUpe3JldHVybiBCbih6ZS5yZXBsYWNlKCJcXCIsIiIpLnJlcGxhY2UoL1xcKFxbKXxcXChcXSl8XFsoW15cXVxbXSopXF18XFwoLikvZyxmdW5jdGlvbihWdCxobixSbix0cixlaSl7cmV0dXJuIGhufHxSbnx8dHJ8fGVpfSkpfSh6ZSkpfWZ1bmN0aW9uIEJuKHplKXtyZXR1cm4gemUucmVw''@;'; put 'put ''bGFjZSgvWy1cL1xcXiQqKz8uKCl8W1xde31dL2csIlxcJCYiKX13bj17fTt2YXIga3I9e307ZnVuY3Rpb24gbW4oemUsVnQpe3ZhciBobix0cixSbj1WdDtmb3IoInN0cmluZyI9PXR5cGVvZiB6ZSYmKHplPVt6ZV0pLGFlKFZ0KSYmKFJuPWZ1bmN0aW9uKGVpLFlpKXtZaVtWdF09SnQoZWkp''@;'; put 'put ''fSksdHI9emUubGVuZ3RoLGhuPTA7aG48dHI7aG4rKylrclt6ZVtobl1dPVJufWZ1bmN0aW9uIHVuKHplLFZ0KXttbih6ZSxmdW5jdGlvbihobixSbix0cixlaSl7dHIuX3c9dHIuX3d8fHt9LFZ0KGhuLHRyLl93LHRyLGVpKX0pfWZ1bmN0aW9uIGNuKHplLFZ0LGhuKXtudWxsIT1WdCYmUShr''@;'; put 'put ''cix6ZSkmJmtyW3plXShWdCxobi5fYSxobix6ZSl9dmFyIFZyO2Z1bmN0aW9uIGlpKHplLFZ0KXtpZihpc05hTih6ZSl8fGlzTmFOKFZ0KSlyZXR1cm4gTmFOO3ZhciBobj1mdW5jdGlvbiBLcih6ZSxWdCl7cmV0dXJuKHplJVZ0K1Z0KSVWdH0oVnQsMTIpO3JldHVybiB6ZSs9KFZ0LWhuKS8x''@;'; put 'put ''MiwxPT09aG4/eXQoemUpPzI5OjI4OjMxLWhuJTclMn1Wcj1BcnJheS5wcm90b3R5cGUuaW5kZXhPZj9BcnJheS5wcm90b3R5cGUuaW5kZXhPZjpmdW5jdGlvbih6ZSl7dmFyIFZ0O2ZvcihWdD0wO1Z0PHRoaXMubGVuZ3RoOysrVnQpaWYodGhpc1tWdF09PT16ZSlyZXR1cm4gVnQ7cmV0dXJu''@;'; put 'put ''LTF9LERlKCJNIixbIk1NIiwyXSwiTW8iLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubW9udGgoKSsxfSksRGUoIk1NTSIsMCwwLGZ1bmN0aW9uKHplKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzU2hvcnQodGhpcyx6ZSl9KSxEZSgiTU1NTSIsMCwwLGZ1bmN0aW9uKHplKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzKHRoaXMsemUpfSksTHQoIm1vbnRoIiwiTSIpLEdlKCJtb250aCIsOCksdG4oIk0iLHhyKSx0bigiTU0iLHhyLGVyKSx0bigiTU1NIixmdW5jdGlvbih6ZSxWdCl7cmV0dXJuIFZ0Lm1vbnRoc1Nob3J0UmVnZXgoemUpfSksdG4oIk1NTU0iLGZ1''@;'; put 'put ''bmN0aW9uKHplLFZ0KXtyZXR1cm4gVnQubW9udGhzUmVnZXgoemUpfSksbW4oWyJNIiwiTU0iXSxmdW5jdGlvbih6ZSxWdCl7VnRbMV09SnQoemUpLTF9KSxtbihbIk1NTSIsIk1NTU0iXSxmdW5jdGlvbih6ZSxWdCxobixSbil7dmFyIHRyPWhuLl9sb2NhbGUubW9udGhzUGFyc2UoemUsUm4s''@;'; put 'put ''aG4uX3N0cmljdCk7bnVsbCE9dHI/VnRbMV09dHI6SihobikuaW52YWxpZE1vbnRoPXplfSk7dmFyIFJyPSJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLGxpPSJK''@;'; put 'put ''YW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSxNaT0vRFtvRF0/KFxbW15cW1xdXSpcXXxccykrTU1NTT8vLG8wPVVuLG4wPVVuO2Z1bmN0aW9uIEcwKHplLFZ0LGhuKXt2YXIgUm4sdHIsZWksWWk9emUudG9Mb2NhbGVMb3dlckNhc2Uo''@;'; put 'put ''KTtpZighdGhpcy5fbW9udGhzUGFyc2UpZm9yKHRoaXMuX21vbnRoc1BhcnNlPVtdLHRoaXMuX2xvbmdNb250aHNQYXJzZT1bXSx0aGlzLl9zaG9ydE1vbnRoc1BhcnNlPVtdLFJuPTA7Um48MTI7KytSbillaT10ZShbMmUzLFJuXSksdGhpcy5fc2hvcnRNb250aHNQYXJzZVtSbl09dGhpcy5t''@;'; put 'put ''b250aHNTaG9ydChlaSwiIikudG9Mb2NhbGVMb3dlckNhc2UoKSx0aGlzLl9sb25nTW9udGhzUGFyc2VbUm5dPXRoaXMubW9udGhzKGVpLCIiKS50b0xvY2FsZUxvd2VyQ2FzZSgpO3JldHVybiBobj8iTU1NIj09PVZ0Py0xIT09KHRyPVZyLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSxZ''@;'; put 'put ''aSkpP3RyOm51bGw6LTEhPT0odHI9VnIuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsWWkpKT90cjpudWxsOiJNTU0iPT09VnQ/LTEhPT0odHI9VnIuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLFlpKSl8fC0xIT09KHRyPVZyLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLFlpKSk/''@;'; put 'put ''dHI6bnVsbDotMSE9PSh0cj1Wci5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSxZaSkpfHwtMSE9PSh0cj1Wci5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsWWkpKT90cjpudWxsfWZ1bmN0aW9uIFcwKHplLFZ0KXt2YXIgaG47aWYoIXplLmlzVmFsaWQoKSlyZXR1cm4gemU7aWYoInN0''@;'; put 'put ''cmluZyI9PXR5cGVvZiBWdClpZigvXlxkKyQvLnRlc3QoVnQpKVZ0PUp0KFZ0KTtlbHNlIGlmKCFhZShWdD16ZS5sb2NhbGVEYXRhKCkubW9udGhzUGFyc2UoVnQpKSlyZXR1cm4gemU7cmV0dXJuIGhuPU1hdGgubWluKHplLmRhdGUoKSxpaSh6ZS55ZWFyKCksVnQpKSx6ZS5fZFsic2V0Iiso''@;'; put 'put ''emUuX2lzVVRDPyJVVEMiOiIiKSsiTW9udGgiXShWdCxobiksemV9ZnVuY3Rpb24gRW8oemUpe3JldHVybiBudWxsIT16ZT8oVzAodGhpcyx6ZSksQi51cGRhdGVPZmZzZXQodGhpcywhMCksdGhpcyk6ZG4odGhpcywiTW9udGgiKX1mdW5jdGlvbiBRaSgpe2Z1bmN0aW9uIHplKFlpLGRhKXty''@;'; put 'put ''ZXR1cm4gZGEubGVuZ3RoLVlpLmxlbmd0aH12YXIgdHIsZWksVnQ9W10saG49W10sUm49W107Zm9yKHRyPTA7dHI8MTI7dHIrKyllaT10ZShbMmUzLHRyXSksVnQucHVzaCh0aGlzLm1vbnRoc1Nob3J0KGVpLCIiKSksaG4ucHVzaCh0aGlzLm1vbnRocyhlaSwiIikpLFJuLnB1c2godGhpcy5t''@;'; put 'put ''b250aHMoZWksIiIpKSxSbi5wdXNoKHRoaXMubW9udGhzU2hvcnQoZWksIiIpKTtmb3IoVnQuc29ydCh6ZSksaG4uc29ydCh6ZSksUm4uc29ydCh6ZSksdHI9MDt0cjwxMjt0cisrKVZ0W3RyXT1CbihWdFt0cl0pLGhuW3RyXT1Cbihoblt0cl0pO2Zvcih0cj0wO3RyPDI0O3RyKyspUm5bdHJd''@;'; put 'put ''PUJuKFJuW3RyXSk7dGhpcy5fbW9udGhzUmVnZXg9bmV3IFJlZ0V4cCgiXigiK1JuLmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl9tb250aHNTaG9ydFJlZ2V4PXRoaXMuX21vbnRoc1JlZ2V4LHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4PW5ldyBSZWdFeHAoIl4oIitobi5qb2luKCJ8IikrIiki''@;'; put 'put ''LCJpIiksdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIrVnQuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIE1hKHplKXtyZXR1cm4geXQoemUpPzM2NjozNjV9RGUoIlkiLDAsMCxmdW5jdGlvbigpe3ZhciB6ZT10aGlzLnllYXIoKTtyZXR1cm4gemU8PTk5''@;'; put 'put ''OTk/VCh6ZSw0KToiKyIremV9KSxEZSgwLFsiWVkiLDJdLDAsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55ZWFyKCklMTAwfSksRGUoMCxbIllZWVkiLDRdLDAsInllYXIiKSxEZSgwLFsiWVlZWVkiLDVdLDAsInllYXIiKSxEZSgwLFsiWVlZWVlZIiw2LCEwXSwwLCJ5ZWFyIiksTHQoInllYXIi''@;'; put 'put ''LCJ5IiksR2UoInllYXIiLDEpLHRuKCJZIixwbiksdG4oIllZIix4cixlciksdG4oIllZWVkiLEFuLFhuKSx0bigiWVlZWVkiLHFuLEZyKSx0bigiWVlZWVlZIixxbixGciksbW4oWyJZWVlZWSIsIllZWVlZWSJdLDApLG1uKCJZWVlZIixmdW5jdGlvbih6ZSxWdCl7VnRbMF09Mj09PXplLmxl''@;'; put 'put ''bmd0aD9CLnBhcnNlVHdvRGlnaXRZZWFyKHplKTpKdCh6ZSl9KSxtbigiWVkiLGZ1bmN0aW9uKHplLFZ0KXtWdFswXT1CLnBhcnNlVHdvRGlnaXRZZWFyKHplKX0pLG1uKCJZIixmdW5jdGlvbih6ZSxWdCl7VnRbMF09cGFyc2VJbnQoemUsMTApfSksQi5wYXJzZVR3b0RpZ2l0WWVhcj1mdW5j''@;'; put 'put ''dGlvbih6ZSl7cmV0dXJuIEp0KHplKSsoSnQoemUpPjY4PzE5MDA6MmUzKX07dmFyIG5sPWduKCJGdWxsWWVhciIsITApO2Z1bmN0aW9uIEFpKHplLFZ0LGhuLFJuLHRyLGVpLFlpKXt2YXIgZGE7cmV0dXJuIHplPDEwMCYmemU+PTA/KGRhPW5ldyBEYXRlKHplKzQwMCxWdCxobixSbix0cixl''@;'; put 'put ''aSxZaSksaXNGaW5pdGUoZGEuZ2V0RnVsbFllYXIoKSkmJmRhLnNldEZ1bGxZZWFyKHplKSk6ZGE9bmV3IERhdGUoemUsVnQsaG4sUm4sdHIsZWksWWkpLGRhfWZ1bmN0aW9uIHZpKHplKXt2YXIgVnQsaG47cmV0dXJuIHplPDEwMCYmemU+PTA/KChobj1BcnJheS5wcm90b3R5cGUuc2xpY2Uu''@;'; put 'put ''Y2FsbChhcmd1bWVudHMpKVswXT16ZSs0MDAsVnQ9bmV3IERhdGUoRGF0ZS5VVEMuYXBwbHkobnVsbCxobikpLGlzRmluaXRlKFZ0LmdldFVUQ0Z1bGxZZWFyKCkpJiZWdC5zZXRVVENGdWxsWWVhcih6ZSkpOlZ0PW5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsYXJndW1lbnRzKSksVnR9''@;'; put 'put ''ZnVuY3Rpb24gYjAoemUsVnQsaG4pe3ZhciBSbj03K1Z0LWhuO3JldHVybi0oNyt2aSh6ZSwwLFJuKS5nZXRVVENEYXkoKS1WdCklNytSbi0xfWZ1bmN0aW9uIHNhKHplLFZ0LGhuLFJuLHRyKXt2YXIgemEsRnMsZGE9MSs3KihWdC0xKSsoNytobi1SbiklNytiMCh6ZSxSbix0cik7cmV0dXJu''@;'; put 'put ''IGRhPD0wP0ZzPU1hKHphPXplLTEpK2RhOmRhPk1hKHplKT8oemE9emUrMSxGcz1kYS1NYSh6ZSkpOih6YT16ZSxGcz1kYSkse3llYXI6emEsZGF5T2ZZZWFyOkZzfX1mdW5jdGlvbiBybCh6ZSxWdCxobil7dmFyIGVpLFlpLFJuPWIwKHplLnllYXIoKSxWdCxobiksdHI9TWF0aC5mbG9vcigo''@;'; put 'put ''emUuZGF5T2ZZZWFyKCktUm4tMSkvNykrMTtyZXR1cm4gdHI8MT9laT10citfaShZaT16ZS55ZWFyKCktMSxWdCxobik6dHI+X2koemUueWVhcigpLFZ0LGhuKT8oZWk9dHItX2koemUueWVhcigpLFZ0LGhuKSxZaT16ZS55ZWFyKCkrMSk6KFlpPXplLnllYXIoKSxlaT10cikse3dlZWs6ZWks''@;'; put 'put ''eWVhcjpZaX19ZnVuY3Rpb24gX2koemUsVnQsaG4pe3ZhciBSbj1iMCh6ZSxWdCxobiksdHI9YjAoemUrMSxWdCxobik7cmV0dXJuKE1hKHplKS1Sbit0cikvN31EZSgidyIsWyJ3dyIsMl0sIndvIiwid2VlayIpLERlKCJXIixbIldXIiwyXSwiV28iLCJpc29XZWVrIiksTHQoIndlZWsiLCJ3''@;'; put 'put ''IiksTHQoImlzb1dlZWsiLCJXIiksR2UoIndlZWsiLDUpLEdlKCJpc29XZWVrIiw1KSx0bigidyIseHIpLHRuKCJ3dyIseHIsZXIpLHRuKCJXIix4ciksdG4oIldXIix4cixlciksdW4oWyJ3Iiwid3ciLCJXIiwiV1ciXSxmdW5jdGlvbih6ZSxWdCxobixSbil7VnRbUm4uc3Vic3RyKDAsMSld''@;'; put 'put ''PUp0KHplKX0pO2Z1bmN0aW9uIHZuKHplLFZ0KXtyZXR1cm4gemUuc2xpY2UoVnQsNykuY29uY2F0KHplLnNsaWNlKDAsVnQpKX1EZSgiZCIsMCwiZG8iLCJkYXkiKSxEZSgiZGQiLDAsMCxmdW5jdGlvbih6ZSl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzTWluKHRoaXMsemUp''@;'; put 'put ''fSksRGUoImRkZCIsMCwwLGZ1bmN0aW9uKHplKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNTaG9ydCh0aGlzLHplKX0pLERlKCJkZGRkIiwwLDAsZnVuY3Rpb24oemUpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5cyh0aGlzLHplKX0pLERlKCJlIiwwLDAsIndl''@;'; put 'put ''ZWtkYXkiKSxEZSgiRSIsMCwwLCJpc29XZWVrZGF5IiksTHQoImRheSIsImQiKSxMdCgid2Vla2RheSIsImUiKSxMdCgiaXNvV2Vla2RheSIsIkUiKSxHZSgiZGF5IiwxMSksR2UoIndlZWtkYXkiLDExKSxHZSgiaXNvV2Vla2RheSIsMTEpLHRuKCJkIix4ciksdG4oImUiLHhyKSx0bigiRSIs''@;'; put 'put ''eHIpLHRuKCJkZCIsZnVuY3Rpb24oemUsVnQpe3JldHVybiBWdC53ZWVrZGF5c01pblJlZ2V4KHplKX0pLHRuKCJkZGQiLGZ1bmN0aW9uKHplLFZ0KXtyZXR1cm4gVnQud2Vla2RheXNTaG9ydFJlZ2V4KHplKX0pLHRuKCJkZGRkIixmdW5jdGlvbih6ZSxWdCl7cmV0dXJuIFZ0LndlZWtkYXlz''@;'; put 'put ''UmVnZXgoemUpfSksdW4oWyJkZCIsImRkZCIsImRkZGQiXSxmdW5jdGlvbih6ZSxWdCxobixSbil7dmFyIHRyPWhuLl9sb2NhbGUud2Vla2RheXNQYXJzZSh6ZSxSbixobi5fc3RyaWN0KTtudWxsIT10cj9WdC5kPXRyOkooaG4pLmludmFsaWRXZWVrZGF5PXplfSksdW4oWyJkIiwiZSIsIkUi''@;'; put 'put ''XSxmdW5jdGlvbih6ZSxWdCxobixSbil7VnRbUm5dPUp0KHplKX0pO3ZhciBfMD0iU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksZ2M9IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSxwZD0i''@;'; put 'put ''U3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksQjE9VW4sYXU9VW4sUDE9VW47ZnVuY3Rpb24gZDMoemUsVnQsaG4pe3ZhciBSbix0cixlaSxZaT16ZS50b0xvY2FsZUxvd2VyQ2FzZSgpO2lmKCF0aGlzLl93ZWVrZGF5c1BhcnNlKWZvcih0aGlzLl93ZWVrZGF5c1BhcnNlPVtdLHRo''@;'; put 'put ''aXMuX3Nob3J0V2Vla2RheXNQYXJzZT1bXSx0aGlzLl9taW5XZWVrZGF5c1BhcnNlPVtdLFJuPTA7Um48NzsrK1JuKWVpPXRlKFsyZTMsMV0pLmRheShSbiksdGhpcy5fbWluV2Vla2RheXNQYXJzZVtSbl09dGhpcy53ZWVrZGF5c01pbihlaSwiIikudG9Mb2NhbGVMb3dlckNhc2UoKSx0aGlz''@;'; put 'put ''Ll9zaG9ydFdlZWtkYXlzUGFyc2VbUm5dPXRoaXMud2Vla2RheXNTaG9ydChlaSwiIikudG9Mb2NhbGVMb3dlckNhc2UoKSx0aGlzLl93ZWVrZGF5c1BhcnNlW1JuXT10aGlzLndlZWtkYXlzKGVpLCIiKS50b0xvY2FsZUxvd2VyQ2FzZSgpO3JldHVybiBobj8iZGRkZCI9PT1WdD8tMSE9PSh0''@;'; put 'put ''cj1Wci5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsWWkpKT90cjpudWxsOiJkZGQiPT09VnQ/LTEhPT0odHI9VnIuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsWWkpKT90cjpudWxsOi0xIT09KHRyPVZyLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxZaSkpP3RyOm51bGw6ImRk''@;'; put 'put ''ZGQiPT09VnQ/LTEhPT0odHI9VnIuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLFlpKSl8fC0xIT09KHRyPVZyLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLFlpKSl8fC0xIT09KHRyPVZyLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxZaSkpP3RyOm51bGw6ImRkZCI9PT1WdD8t''@;'; put 'put ''MSE9PSh0cj1Wci5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSxZaSkpfHwtMSE9PSh0cj1Wci5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsWWkpKXx8LTEhPT0odHI9VnIuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLFlpKSk/dHI6bnVsbDotMSE9PSh0cj1Wci5jYWxsKHRoaXMu''@;'; put 'put ''X21pbldlZWtkYXlzUGFyc2UsWWkpKXx8LTEhPT0odHI9VnIuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLFlpKSl8fC0xIT09KHRyPVZyLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLFlpKSk/dHI6bnVsbH1mdW5jdGlvbiBkcygpe2Z1bmN0aW9uIHplKEt1LEhzKXtyZXR1cm4gSHMu''@;'; put 'put ''bGVuZ3RoLUt1Lmxlbmd0aH12YXIgZWksWWksZGEsemEsRnMsVnQ9W10saG49W10sUm49W10sdHI9W107Zm9yKGVpPTA7ZWk8NztlaSsrKVlpPXRlKFsyZTMsMV0pLmRheShlaSksZGE9Qm4odGhpcy53ZWVrZGF5c01pbihZaSwiIikpLHphPUJuKHRoaXMud2Vla2RheXNTaG9ydChZaSwiIikp''@;'; put 'put ''LEZzPUJuKHRoaXMud2Vla2RheXMoWWksIiIpKSxWdC5wdXNoKGRhKSxobi5wdXNoKHphKSxSbi5wdXNoKEZzKSx0ci5wdXNoKGRhKSx0ci5wdXNoKHphKSx0ci5wdXNoKEZzKTtWdC5zb3J0KHplKSxobi5zb3J0KHplKSxSbi5zb3J0KHplKSx0ci5zb3J0KHplKSx0aGlzLl93ZWVrZGF5c1Jl''@;'; put 'put ''Z2V4PW5ldyBSZWdFeHAoIl4oIit0ci5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4PXRoaXMuX3dlZWtkYXlzUmVnZXgsdGhpcy5fd2Vla2RheXNNaW5SZWdleD10aGlzLl93ZWVrZGF5c1JlZ2V4LHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXg9bmV3IFJlZ0V4''@;'; put 'put ''cCgiXigiK1JuLmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK2huLmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4PW5ldyBSZWdFeHAoIl4oIitWdC5qb2luKCJ8IikrIikiLCJpIil9''@;'; put 'put ''ZnVuY3Rpb24gbjIoKXtyZXR1cm4gdGhpcy5ob3VycygpJTEyfHwxMn1mdW5jdGlvbiBUaSh6ZSxWdCl7RGUoemUsMCwwLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1lcmlkaWVtKHRoaXMuaG91cnMoKSx0aGlzLm1pbnV0ZXMoKSxWdCl9KX1mdW5jdGlvbiBQcyh6ZSxW''@;'; put 'put ''dCl7cmV0dXJuIFZ0Ll9tZXJpZGllbVBhcnNlfURlKCJIIixbIkhIIiwyXSwwLCJob3VyIiksRGUoImgiLFsiaGgiLDJdLDAsbjIpLERlKCJrIixbImtrIiwyXSwwLGZ1bmN0aW9uIFQyKCl7cmV0dXJuIHRoaXMuaG91cnMoKXx8MjR9KSxEZSgiaG1tIiwwLDAsZnVuY3Rpb24oKXtyZXR1cm4i''@;'; put 'put ''IituMi5hcHBseSh0aGlzKStUKHRoaXMubWludXRlcygpLDIpfSksRGUoImhtbXNzIiwwLDAsZnVuY3Rpb24oKXtyZXR1cm4iIituMi5hcHBseSh0aGlzKStUKHRoaXMubWludXRlcygpLDIpK1QodGhpcy5zZWNvbmRzKCksMil9KSxEZSgiSG1tIiwwLDAsZnVuY3Rpb24oKXtyZXR1cm4iIit0''@;'; put 'put ''aGlzLmhvdXJzKCkrVCh0aGlzLm1pbnV0ZXMoKSwyKX0pLERlKCJIbW1zcyIsMCwwLGZ1bmN0aW9uKCl7cmV0dXJuIiIrdGhpcy5ob3VycygpK1QodGhpcy5taW51dGVzKCksMikrVCh0aGlzLnNlY29uZHMoKSwyKX0pLFRpKCJhIiwhMCksVGkoIkEiLCExKSxMdCgiaG91ciIsImgiKSxHZSgi''@;'; put 'put ''aG91ciIsMTMpLHRuKCJhIixQcyksdG4oIkEiLFBzKSx0bigiSCIseHIpLHRuKCJoIix4ciksdG4oImsiLHhyKSx0bigiSEgiLHhyLGVyKSx0bigiaGgiLHhyLGVyKSx0bigia2siLHhyLGVyKSx0bigiaG1tIixxdCksdG4oImhtbXNzIixwciksdG4oIkhtbSIscXQpLHRuKCJIbW1zcyIscHIp''@;'; put 'put ''LG1uKFsiSCIsIkhIIl0sMyksbW4oWyJrIiwia2siXSxmdW5jdGlvbih6ZSxWdCxobil7dmFyIFJuPUp0KHplKTtWdFszXT0yND09PVJuPzA6Um59KSxtbihbImEiLCJBIl0sZnVuY3Rpb24oemUsVnQsaG4pe2huLl9pc1BtPWhuLl9sb2NhbGUuaXNQTSh6ZSksaG4uX21lcmlkaWVtPXplfSks''@;'; put 'put ''bW4oWyJoIiwiaGgiXSxmdW5jdGlvbih6ZSxWdCxobil7VnRbM109SnQoemUpLEooaG4pLmJpZ0hvdXI9ITB9KSxtbigiaG1tIixmdW5jdGlvbih6ZSxWdCxobil7dmFyIFJuPXplLmxlbmd0aC0yO1Z0WzNdPUp0KHplLnN1YnN0cigwLFJuKSksVnRbNF09SnQoemUuc3Vic3RyKFJuKSksSiho''@;'; put 'put ''bikuYmlnSG91cj0hMH0pLG1uKCJobW1zcyIsZnVuY3Rpb24oemUsVnQsaG4pe3ZhciBSbj16ZS5sZW5ndGgtNCx0cj16ZS5sZW5ndGgtMjtWdFszXT1KdCh6ZS5zdWJzdHIoMCxSbikpLFZ0WzRdPUp0KHplLnN1YnN0cihSbiwyKSksVnRbNV09SnQoemUuc3Vic3RyKHRyKSksSihobikuYmln''@;'; put 'put ''SG91cj0hMH0pLG1uKCJIbW0iLGZ1bmN0aW9uKHplLFZ0LGhuKXt2YXIgUm49emUubGVuZ3RoLTI7VnRbM109SnQoemUuc3Vic3RyKDAsUm4pKSxWdFs0XT1KdCh6ZS5zdWJzdHIoUm4pKX0pLG1uKCJIbW1zcyIsZnVuY3Rpb24oemUsVnQsaG4pe3ZhciBSbj16ZS5sZW5ndGgtNCx0cj16ZS5s''@;'; put 'put ''ZW5ndGgtMjtWdFszXT1KdCh6ZS5zdWJzdHIoMCxSbikpLFZ0WzRdPUp0KHplLnN1YnN0cihSbiwyKSksVnRbNV09SnQoemUuc3Vic3RyKHRyKSl9KTt2YXIgTmM9Z24oIkhvdXJzIiwhMCk7dmFyIFVzLEM0PXtjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1Rv''@;'; put 'put ''bW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LGxvbmdEYXRlRm9ybWF0OntMVFM6Img6bW06c3MgQSIsTFQ6Img6bW0gQSIsTDoiTU0vREQv''@;'; put 'put ''WVlZWSIsTEw6Ik1NTU0gRCwgWVlZWSIsTExMOiJNTU1NIEQsIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBNTU1NIEQsIFlZWVkgaDptbSBBIn0saW52YWxpZERhdGU6IkludmFsaWQgZGF0ZSIsb3JkaW5hbDoiJWQiLGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0vLHJlbGF0aXZl''@;'; put 'put ''VGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixzczoiJWQgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsdzoiYSB3ZWVrIix3dzoiJWQg''@;'; put 'put ''d2Vla3MiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sbW9udGhzOlJyLG1vbnRoc1Nob3J0OmxpLHdlZWs6e2RvdzowLGRveTo2fSx3ZWVrZGF5czpfMCx3ZWVrZGF5c01pbjpwZCx3ZWVrZGF5c1Nob3J0OmdjLG1lcmlkaWVtUGFyc2U6L1th''@;'; put 'put ''cF1cLj9tP1wuPy9pfSxyMj17fSxXaT17fTtmdW5jdGlvbiB2cyh6ZSxWdCl7dmFyIGhuLFJuPU1hdGgubWluKHplLmxlbmd0aCxWdC5sZW5ndGgpO2Zvcihobj0wO2huPFJuO2huKz0xKWlmKHplW2huXSE9PVZ0W2huXSlyZXR1cm4gaG47cmV0dXJuIFJufWZ1bmN0aW9uIEYxKHplKXtyZXR1''@;'; put 'put ''cm4gemUmJnplLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgiXyIsIi0iKX1mdW5jdGlvbiBSaSh6ZSl7dmFyIFZ0PW51bGw7aWYodm9pZCAwPT09cjJbemVdJiZYZSYmWGUuZXhwb3J0cyYmZnVuY3Rpb24gQ3MoemUpe3JldHVybiBudWxsIT16ZS5tYXRjaCgiXlteL1xcXFxdKiQiKX0oemUpKXRy''@;'; put 'put ''eXtWdD1Vcy5fYWJicixMKDQ2NzAwKSgiLi8iK3plKSxIMShWdCl9Y2F0Y2goUm4pe3IyW3plXT1udWxsfXJldHVybiByMlt6ZV19ZnVuY3Rpb24gSDEoemUsVnQpe3ZhciBobjtyZXR1cm4gemUmJigoaG49cmUoVnQpP3UxKHplKTpKMih6ZSxWdCkpP1VzPWhuOiJ1bmRlZmluZWQiIT10eXBl''@;'; put 'put ''b2YgY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oIkxvY2FsZSAiK3plKyIgbm90IGZvdW5kLiBEaWQgeW91IGZvcmdldCB0byBsb2FkIGl0PyIpKSxVcy5fYWJicn1mdW5jdGlvbiBKMih6ZSxWdCl7aWYobnVsbCE9PVZ0KXt2YXIgaG4sUm49QzQ7aWYoVnQuYWJicj16ZSxu''@;'; put 'put ''dWxsIT1yMlt6ZV0paGUoImRlZmluZUxvY2FsZU92ZXJyaWRlIiwidXNlIG1vbWVudC51cGRhdGVMb2NhbGUobG9jYWxlTmFtZSwgY29uZmlnKSB0byBjaGFuZ2UgYW4gZXhpc3RpbmcgbG9jYWxlLiBtb21lbnQuZGVmaW5lTG9jYWxlKGxvY2FsZU5hbWUsIGNvbmZpZykgc2hvdWxkIG9ubHkg''@;'; put 'put ''YmUgdXNlZCBmb3IgY3JlYXRpbmcgYSBuZXcgbG9jYWxlIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RlZmluZS1sb2NhbGUvIGZvciBtb3JlIGluZm8uIiksUm49cjJbemVdLl9jb25maWc7ZWxzZSBpZihudWxsIT1WdC5wYXJlbnRMb2NhbGUpaWYobnVsbCE9''@;'; put 'put ''cjJbVnQucGFyZW50TG9jYWxlXSlSbj1yMltWdC5wYXJlbnRMb2NhbGVdLl9jb25maWc7ZWxzZXtpZihudWxsPT0oaG49UmkoVnQucGFyZW50TG9jYWxlKSkpcmV0dXJuIFdpW1Z0LnBhcmVudExvY2FsZV18fChXaVtWdC5wYXJlbnRMb2NhbGVdPVtdKSxXaVtWdC5wYXJlbnRMb2NhbGVdLnB1''@;'; put 'put ''c2goe25hbWU6emUsY29uZmlnOlZ0fSksbnVsbDtSbj1obi5fY29uZmlnfXJldHVybiByMlt6ZV09bmV3IG5lKGVlKFJuLFZ0KSksV2lbemVdJiZXaVt6ZV0uZm9yRWFjaChmdW5jdGlvbih0cil7SjIodHIubmFtZSx0ci5jb25maWcpfSksSDEoemUpLHIyW3plXX1yZXR1cm4gZGVsZXRlIHIy''@;'; put 'put ''W3plXSxudWxsfWZ1bmN0aW9uIHUxKHplKXt2YXIgVnQ7aWYoemUmJnplLl9sb2NhbGUmJnplLl9sb2NhbGUuX2FiYnImJih6ZT16ZS5fbG9jYWxlLl9hYmJyKSwhemUpcmV0dXJuIFVzO2lmKCFFZSh6ZSkpe2lmKFZ0PVJpKHplKSlyZXR1cm4gVnQ7emU9W3plXX1yZXR1cm4gZnVuY3Rpb24g''@;'; put 'put ''S2woemUpe2Zvcih2YXIgaG4sUm4sdHIsZWksVnQ9MDtWdDx6ZS5sZW5ndGg7KXtmb3IoaG49KGVpPUYxKHplW1Z0XSkuc3BsaXQoIi0iKSkubGVuZ3RoLFJuPShSbj1GMSh6ZVtWdCsxXSkpP1JuLnNwbGl0KCItIik6bnVsbDtobj4wOyl7aWYodHI9UmkoZWkuc2xpY2UoMCxobikuam9pbigi''@;'; put 'put ''LSIpKSlyZXR1cm4gdHI7aWYoUm4mJlJuLmxlbmd0aD49aG4mJnZzKGVpLFJuKT49aG4tMSlicmVhaztobi0tfVZ0Kyt9cmV0dXJuIFVzfSh6ZSl9ZnVuY3Rpb24gcDMoemUpe3ZhciBWdCxobj16ZS5fYTtyZXR1cm4gaG4mJi0yPT09Sih6ZSkub3ZlcmZsb3cmJihWdD1oblsxXTwwfHxoblsx''@;'; put 'put ''XT4xMT8xOmhuWzJdPDF8fGhuWzJdPmlpKGhuWzBdLGhuWzFdKT8yOmhuWzNdPDB8fGhuWzNdPjI0fHwyND09PWhuWzNdJiYoMCE9PWhuWzRdfHwwIT09aG5bNV18fDAhPT1obls2XSk/Mzpobls0XTwwfHxobls0XT41OT80OmhuWzVdPDB8fGhuWzVdPjU5PzU6aG5bNl08MHx8aG5bNl0+OTk5''@;'; put 'put ''PzY6LTEsSih6ZSkuX292ZXJmbG93RGF5T2ZZZWFyJiYoVnQ8MHx8VnQ+MikmJihWdD0yKSxKKHplKS5fb3ZlcmZsb3dXZWVrcyYmLTE9PT1WdCYmKFZ0PTcpLEooemUpLl9vdmVyZmxvd1dlZWtkYXkmJi0xPT09VnQmJihWdD04KSxKKHplKS5vdmVyZmxvdz1WdCksemV9dmFyIFl1PS9eXHMq''@;'; put 'put ''KCg/OlsrLV1cZHs2fXxcZHs0fSktKD86XGRcZC1cZFxkfFdcZFxkLVxkfFdcZFxkfFxkXGRcZHxcZFxkKSkoPzooVHwgKShcZFxkKD86OlxkXGQoPzo6XGRcZCg/OlsuLF1cZCspPyk/KT8pKFsrLV1cZFxkKD86Oj9cZFxkKT98XHMqWik/KT8kLyxzbz0vXlxzKigoPzpbKy1dXGR7Nn18XGR7''@;'; put 'put ''NH0pKD86XGRcZFxkXGR8V1xkXGRcZHxXXGRcZHxcZFxkXGR8XGRcZHwpKSg/OihUfCApKFxkXGQoPzpcZFxkKD86XGRcZCg/OlsuLF1cZCspPyk/KT8pKFsrLV1cZFxkKD86Oj9cZFxkKT98XHMqWik/KT8kLyxZYT0vWnxbKy1dXGRcZCg/Ojo/XGRcZCk/Lyxhcz1bWyJZWVlZWVktTU0tREQi''@;'; put 'put ''LC9bKy1dXGR7Nn0tXGRcZC1cZFxkL10sWyJZWVlZLU1NLUREIiwvXGR7NH0tXGRcZC1cZFxkL10sWyJHR0dHLVtXXVdXLUUiLC9cZHs0fS1XXGRcZC1cZC9dLFsiR0dHRy1bV11XVyIsL1xkezR9LVdcZFxkLywhMV0sWyJZWVlZLURERCIsL1xkezR9LVxkezN9L10sWyJZWVlZLU1NIiwvXGR7''@;'; put 'put ''NH0tXGRcZC8sITFdLFsiWVlZWVlZTU1ERCIsL1srLV1cZHsxMH0vXSxbIllZWVlNTUREIiwvXGR7OH0vXSxbIkdHR0dbV11XV0UiLC9cZHs0fVdcZHszfS9dLFsiR0dHR1tXXVdXIiwvXGR7NH1XXGR7Mn0vLCExXSxbIllZWVlEREQiLC9cZHs3fS9dLFsiWVlZWU1NIiwvXGR7Nn0vLCExXSxb''@;'; put 'put ''IllZWVkiLC9cZHs0fS8sITFdXSxYYT1bWyJISDptbTpzcy5TU1NTIiwvXGRcZDpcZFxkOlxkXGRcLlxkKy9dLFsiSEg6bW06c3MsU1NTUyIsL1xkXGQ6XGRcZDpcZFxkLFxkKy9dLFsiSEg6bW06c3MiLC9cZFxkOlxkXGQ6XGRcZC9dLFsiSEg6bW0iLC9cZFxkOlxkXGQvXSxbIkhIbW1zcy5T''@;'; put 'put ''U1NTIiwvXGRcZFxkXGRcZFxkXC5cZCsvXSxbIkhIbW1zcyxTU1NTIiwvXGRcZFxkXGRcZFxkLFxkKy9dLFsiSEhtbXNzIiwvXGRcZFxkXGRcZFxkL10sWyJISG1tIiwvXGRcZFxkXGQvXSxbIkhIIiwvXGRcZC9dXSxVdT0vXlwvP0RhdGVcKCgtP1xkKykvaSxBMT0vXig/OihNb258VHVlfFdl''@;'; put 'put ''ZHxUaHV8RnJpfFNhdHxTdW4pLD9ccyk/KFxkezEsMn0pXHMoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpXHMoXGR7Miw0fSlccyhcZFxkKTooXGRcZCkoPzo6KFxkXGQpKT9ccyg/OihVVHxHTVR8W0VDTVBdW1NEXVQpfChbWnpdKXwoWystXVxkezR9''@;'; put 'put ''KSkkLyxtaD17VVQ6MCxHTVQ6MCxFRFQ6LTI0MCxFU1Q6LTMwMCxDRFQ6LTMwMCxDU1Q6LTM2MCxNRFQ6LTM2MCxNU1Q6LTQyMCxQRFQ6LTQyMCxQU1Q6LTQ4MH07ZnVuY3Rpb24gX2EoemUpe3ZhciBWdCxobixlaSxZaSxkYSx6YSxSbj16ZS5faSx0cj1ZdS5leGVjKFJuKXx8c28uZXhlYyhS''@;'; put 'put ''biksRnM9YXMubGVuZ3RoLEt1PVhhLmxlbmd0aDtpZih0cil7Zm9yKEooemUpLmlzbz0hMCxWdD0wLGhuPUZzO1Z0PGhuO1Z0KyspaWYoYXNbVnRdWzFdLmV4ZWModHJbMV0pKXtZaT1hc1tWdF1bMF0sZWk9ITEhPT1hc1tWdF1bMl07YnJlYWt9aWYobnVsbD09WWkpcmV0dXJuIHZvaWQoemUu''@;'; put 'put ''X2lzVmFsaWQ9ITEpO2lmKHRyWzNdKXtmb3IoVnQ9MCxobj1LdTtWdDxobjtWdCsrKWlmKFhhW1Z0XVsxXS5leGVjKHRyWzNdKSl7ZGE9KHRyWzJdfHwiICIpK1hhW1Z0XVswXTticmVha31pZihudWxsPT1kYSlyZXR1cm4gdm9pZCh6ZS5faXNWYWxpZD0hMSl9aWYoIWVpJiZudWxsIT1kYSly''@;'; put 'put ''ZXR1cm4gdm9pZCh6ZS5faXNWYWxpZD0hMSk7aWYodHJbNF0pe2lmKCFZYS5leGVjKHRyWzRdKSlyZXR1cm4gdm9pZCh6ZS5faXNWYWxpZD0hMSk7emE9IloifXplLl9mPVlpKyhkYXx8IiIpKyh6YXx8IiIpLGxmKHplKX1lbHNlIHplLl9pc1ZhbGlkPSExfWZ1bmN0aW9uIGs0KHplKXt2YXIg''@;'; put 'put ''VnQ9cGFyc2VJbnQoemUsMTApO3JldHVybiBWdDw9NDk/MmUzK1Z0OlZ0PD05OTk/MTkwMCtWdDpWdH1mdW5jdGlvbiBBcyh6ZSl7dmFyIGhuLFZ0PUExLmV4ZWMoZnVuY3Rpb24gc2woemUpe3JldHVybiB6ZS5yZXBsYWNlKC9cKFteKCldKlwpfFtcblx0XS9nLCIgIikucmVwbGFjZSgvKFxz''@;'; put 'put ''XHMrKS9nLCIgIikucmVwbGFjZSgvXlxzXHMqLywiIikucmVwbGFjZSgvXHNccyokLywiIil9KHplLl9pKSk7aWYoVnQpe2lmKGhuPWZ1bmN0aW9uIGpwKHplLFZ0LGhuLFJuLHRyLGVpKXt2YXIgWWk9W2s0KHplKSxsaS5pbmRleE9mKFZ0KSxwYXJzZUludChobiwxMCkscGFyc2VJbnQoUm4s''@;'; put 'put ''MTApLHBhcnNlSW50KHRyLDEwKV07cmV0dXJuIGVpJiZZaS5wdXNoKHBhcnNlSW50KGVpLDEwKSksWWl9KFZ0WzRdLFZ0WzNdLFZ0WzJdLFZ0WzVdLFZ0WzZdLFZ0WzddKSwhZnVuY3Rpb24gdWwoemUsVnQsaG4pe3JldHVybiF6ZXx8Z2MuaW5kZXhPZih6ZSk9PT1uZXcgRGF0ZShWdFswXSxW''@;'; put 'put ''dFsxXSxWdFsyXSkuZ2V0RGF5KCl8fChKKGhuKS53ZWVrZGF5TWlzbWF0Y2g9ITAsaG4uX2lzVmFsaWQ9ITEsITEpfShWdFsxXSxobix6ZSkpcmV0dXJuO3plLl9hPWhuLHplLl90em09ZnVuY3Rpb24gWTAoemUsVnQsaG4pe2lmKHplKXJldHVybiBtaFt6ZV07aWYoVnQpcmV0dXJuIDA7dmFy''@;'; put 'put ''IFJuPXBhcnNlSW50KGhuLDEwKSx0cj1SbiUxMDA7cmV0dXJuKFJuLXRyKS8xMDAqNjArdHJ9KFZ0WzhdLFZ0WzldLFZ0WzEwXSksemUuX2Q9dmkuYXBwbHkobnVsbCx6ZS5fYSksemUuX2Quc2V0VVRDTWludXRlcyh6ZS5fZC5nZXRVVENNaW51dGVzKCktemUuX3R6bSksSih6ZSkucmZjMjgy''@;'; put 'put ''Mj0hMH1lbHNlIHplLl9pc1ZhbGlkPSExfWZ1bmN0aW9uIEZvKHplLFZ0LGhuKXtyZXR1cm4gbnVsbCE9emU/emU6bnVsbCE9VnQ/VnQ6aG59ZnVuY3Rpb24geTEoemUpe3ZhciBWdCxobix0cixlaSxZaSxSbj1bXTtpZighemUuX2Qpe2Zvcih0cj1mdW5jdGlvbiBnZCh6ZSl7dmFyIFZ0PW5l''@;'; put 'put ''dyBEYXRlKEIubm93KCkpO3JldHVybiB6ZS5fdXNlVVRDP1tWdC5nZXRVVENGdWxsWWVhcigpLFZ0LmdldFVUQ01vbnRoKCksVnQuZ2V0VVRDRGF0ZSgpXTpbVnQuZ2V0RnVsbFllYXIoKSxWdC5nZXRNb250aCgpLFZ0LmdldERhdGUoKV19KHplKSx6ZS5fdyYmbnVsbD09emUuX2FbMl0mJm51''@;'; put 'put ''bGw9PXplLl9hWzFdJiZmdW5jdGlvbiB3MSh6ZSl7dmFyIFZ0LGhuLFJuLHRyLGVpLFlpLGRhLHphLEZzO251bGwhPShWdD16ZS5fdykuR0d8fG51bGwhPVZ0Lld8fG51bGwhPVZ0LkU/KGVpPTEsWWk9NCxobj1GbyhWdC5HRyx6ZS5fYVswXSxybChrcygpLDEsNCkueWVhciksUm49Rm8oVnQu''@;'; put 'put ''VywxKSwoKHRyPUZvKFZ0LkUsMSkpPDF8fHRyPjcpJiYoemE9ITApKTooZWk9emUuX2xvY2FsZS5fd2Vlay5kb3csWWk9emUuX2xvY2FsZS5fd2Vlay5kb3ksRnM9cmwoa3MoKSxlaSxZaSksaG49Rm8oVnQuZ2csemUuX2FbMF0sRnMueWVhciksUm49Rm8oVnQudyxGcy53ZWVrKSxudWxsIT1W''@;'; put 'put ''dC5kPygodHI9VnQuZCk8MHx8dHI+NikmJih6YT0hMCk6bnVsbCE9VnQuZT8odHI9VnQuZStlaSwoVnQuZTwwfHxWdC5lPjYpJiYoemE9ITApKTp0cj1laSksUm48MXx8Um4+X2koaG4sZWksWWkpP0ooemUpLl9vdmVyZmxvd1dlZWtzPSEwOm51bGwhPXphP0ooemUpLl9vdmVyZmxvd1dlZWtk''@;'; put 'put ''YXk9ITA6KGRhPXNhKGhuLFJuLHRyLGVpLFlpKSx6ZS5fYVswXT1kYS55ZWFyLHplLl9kYXlPZlllYXI9ZGEuZGF5T2ZZZWFyKX0oemUpLG51bGwhPXplLl9kYXlPZlllYXImJihZaT1Gbyh6ZS5fYVswXSx0clswXSksKHplLl9kYXlPZlllYXI+TWEoWWkpfHwwPT09emUuX2RheU9mWWVhcikm''@;'; put 'put ''JihKKHplKS5fb3ZlcmZsb3dEYXlPZlllYXI9ITApLGhuPXZpKFlpLDAsemUuX2RheU9mWWVhciksemUuX2FbMV09aG4uZ2V0VVRDTW9udGgoKSx6ZS5fYVsyXT1obi5nZXRVVENEYXRlKCkpLFZ0PTA7VnQ8MyYmbnVsbD09emUuX2FbVnRdOysrVnQpemUuX2FbVnRdPVJuW1Z0XT10cltWdF07''@;'; put 'put ''Zm9yKDtWdDw3O1Z0KyspemUuX2FbVnRdPVJuW1Z0XT1udWxsPT16ZS5fYVtWdF0/Mj09PVZ0PzE6MDp6ZS5fYVtWdF07MjQ9PT16ZS5fYVszXSYmMD09PXplLl9hWzRdJiYwPT09emUuX2FbNV0mJjA9PT16ZS5fYVs2XSYmKHplLl9uZXh0RGF5PSEwLHplLl9hWzNdPTApLHplLl9kPSh6ZS5f''@;'; put 'put ''dXNlVVRDP3ZpOkFpKS5hcHBseShudWxsLFJuKSxlaT16ZS5fdXNlVVRDP3plLl9kLmdldFVUQ0RheSgpOnplLl9kLmdldERheSgpLG51bGwhPXplLl90em0mJnplLl9kLnNldFVUQ01pbnV0ZXMoemUuX2QuZ2V0VVRDTWludXRlcygpLXplLl90em0pLHplLl9uZXh0RGF5JiYoemUuX2FbM109''@;'; put 'put ''MjQpLHplLl93JiZ2b2lkIDAhPT16ZS5fdy5kJiZ6ZS5fdy5kIT09ZWkmJihKKHplKS53ZWVrZGF5TWlzbWF0Y2g9ITApfX1mdW5jdGlvbiBsZih6ZSl7aWYoemUuX2YhPT1CLklTT184NjAxKWlmKHplLl9mIT09Qi5SRkNfMjgyMil7emUuX2E9W10sSih6ZSkuZW1wdHk9ITA7dmFyIGhuLFJu''@;'; put 'put ''LHRyLGVpLFlpLEZzLEt1LFZ0PSIiK3plLl9pLGRhPVZ0Lmxlbmd0aCx6YT0wO2ZvcihLdT0odHI9Z3QoemUuX2YsemUuX2xvY2FsZSkubWF0Y2goUyl8fFtdKS5sZW5ndGgsaG49MDtobjxLdTtobisrKShSbj0oVnQubWF0Y2goem4oZWk9dHJbaG5dLHplKSl8fFtdKVswXSkmJigoWWk9VnQu''@;'; put 'put ''c3Vic3RyKDAsVnQuaW5kZXhPZihSbikpKS5sZW5ndGg+MCYmSih6ZSkudW51c2VkSW5wdXQucHVzaChZaSksVnQ9VnQuc2xpY2UoVnQuaW5kZXhPZihSbikrUm4ubGVuZ3RoKSx6YSs9Um4ubGVuZ3RoKSxDZVtlaV0/KFJuP0ooemUpLmVtcHR5PSExOkooemUpLnVudXNlZFRva2Vucy5wdXNo''@;'; put 'put ''KGVpKSxjbihlaSxSbix6ZSkpOnplLl9zdHJpY3QmJiFSbiYmSih6ZSkudW51c2VkVG9rZW5zLnB1c2goZWkpO0ooemUpLmNoYXJzTGVmdE92ZXI9ZGEtemEsVnQubGVuZ3RoPjAmJkooemUpLnVudXNlZElucHV0LnB1c2goVnQpLHplLl9hWzNdPD0xMiYmITA9PT1KKHplKS5iaWdIb3VyJiZ6''@;'; put 'put ''ZS5fYVszXT4wJiYoSih6ZSkuYmlnSG91cj12b2lkIDApLEooemUpLnBhcnNlZERhdGVQYXJ0cz16ZS5fYS5zbGljZSgwKSxKKHplKS5tZXJpZGllbT16ZS5fbWVyaWRpZW0semUuX2FbM109ZnVuY3Rpb24gbWQoemUsVnQsaG4pe3ZhciBSbjtyZXR1cm4gbnVsbD09aG4/VnQ6bnVsbCE9emUu''@;'; put 'put ''bWVyaWRpZW1Ib3VyP3plLm1lcmlkaWVtSG91cihWdCxobik6KG51bGwhPXplLmlzUE0mJigoUm49emUuaXNQTShobikpJiZWdDwxMiYmKFZ0Kz0xMiksIVJuJiYxMj09PVZ0JiYoVnQ9MCkpLFZ0KX0oemUuX2xvY2FsZSx6ZS5fYVszXSx6ZS5fbWVyaWRpZW0pLG51bGwhPT0oRnM9Sih6ZSku''@;'; put 'put ''ZXJhKSYmKHplLl9hWzBdPXplLl9sb2NhbGUuZXJhc0NvbnZlcnRZZWFyKEZzLHplLl9hWzBdKSkseTEoemUpLHAzKHplKX1lbHNlIEFzKHplKTtlbHNlIF9hKHplKX1mdW5jdGlvbiBUdSh6ZSl7dmFyIFZ0PXplLl9pLGhuPXplLl9mO3JldHVybiB6ZS5fbG9jYWxlPXplLl9sb2NhbGV8fHUx''@;'; put 'put ''KHplLl9sKSxudWxsPT09VnR8fHZvaWQgMD09PWhuJiYiIj09PVZ0P2NlKHtudWxsSW5wdXQ6ITB9KTooInN0cmluZyI9PXR5cGVvZiBWdCYmKHplLl9pPVZ0PXplLl9sb2NhbGUucHJlcGFyc2UoVnQpKSxTZShWdCk/bmV3IGtlKHAzKFZ0KSk6KFkoVnQpP3plLl9kPVZ0OkVlKGhuKT9mdW5j''@;'; put 'put ''dGlvbiAkbCh6ZSl7dmFyIFZ0LGhuLFJuLHRyLGVpLFlpLGRhPSExLHphPXplLl9mLmxlbmd0aDtpZigwPT09emEpcmV0dXJuIEooemUpLmludmFsaWRGb3JtYXQ9ITAsdm9pZCh6ZS5fZD1uZXcgRGF0ZShOYU4pKTtmb3IodHI9MDt0cjx6YTt0cisrKWVpPTAsWWk9ITEsVnQ9QWUoe30semUp''@;'; put 'put ''LG51bGwhPXplLl91c2VVVEMmJihWdC5fdXNlVVRDPXplLl91c2VVVEMpLFZ0Ll9mPXplLl9mW3RyXSxsZihWdCksb2UoVnQpJiYoWWk9ITApLGVpKz1KKFZ0KS5jaGFyc0xlZnRPdmVyLGVpKz0xMCpKKFZ0KS51bnVzZWRUb2tlbnMubGVuZ3RoLEooVnQpLnNjb3JlPWVpLGRhP2VpPFJuJiYo''@;'; put 'put ''Um49ZWksaG49VnQpOihudWxsPT1Sbnx8ZWk8Um58fFlpKSYmKFJuPWVpLGhuPVZ0LFlpJiYoZGE9ITApKTtOKHplLGhufHxWdCl9KHplKTpobj9sZih6ZSk6ZnVuY3Rpb24gc2YoemUpe3ZhciBWdD16ZS5faTtyZShWdCk/emUuX2Q9bmV3IERhdGUoQi5ub3coKSk6WShWdCk/emUuX2Q9bmV3''@;'; put 'put ''IERhdGUoVnQudmFsdWVPZigpKToic3RyaW5nIj09dHlwZW9mIFZ0P2Z1bmN0aW9uIGZhKHplKXt2YXIgVnQ9VXUuZXhlYyh6ZS5faSk7bnVsbD09PVZ0PyhfYSh6ZSksITE9PT16ZS5faXNWYWxpZCYmKGRlbGV0ZSB6ZS5faXNWYWxpZCxBcyh6ZSksITE9PT16ZS5faXNWYWxpZCYmKGRlbGV0''@;'; put 'put ''ZSB6ZS5faXNWYWxpZCx6ZS5fc3RyaWN0P3plLl9pc1ZhbGlkPSExOkIuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2soemUpKSkpOnplLl9kPW5ldyBEYXRlKCtWdFsxXSl9KHplKTpFZShWdCk/KHplLl9hPVcoVnQuc2xpY2UoMCksZnVuY3Rpb24oaG4pe3JldHVybiBwYXJzZUludChobiwxMCl9''@;'; put 'put ''KSx5MSh6ZSkpOlUoVnQpP2Z1bmN0aW9uIHh1KHplKXtpZighemUuX2Qpe3ZhciBWdD1mdCh6ZS5faSk7emUuX2E9VyhbVnQueWVhcixWdC5tb250aCx2b2lkIDA9PT1WdC5kYXk/VnQuZGF0ZTpWdC5kYXksVnQuaG91cixWdC5taW51dGUsVnQuc2Vjb25kLFZ0Lm1pbGxpc2Vjb25kXSxmdW5j''@;'; put 'put ''dGlvbihSbil7cmV0dXJuIFJuJiZwYXJzZUludChSbiwxMCl9KSx5MSh6ZSl9fSh6ZSk6YWUoVnQpP3plLl9kPW5ldyBEYXRlKFZ0KTpCLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKHplKX0oemUpLG9lKHplKXx8KHplLl9kPW51bGwpLHplKSl9ZnVuY3Rpb24gS28oemUsVnQsaG4sUm4sdHIp''@;'; put 'put ''e3ZhciBlaT17fTtyZXR1cm4oITA9PT1WdHx8ITE9PT1WdCkmJihSbj1WdCxWdD12b2lkIDApLCghMD09PWhufHwhMT09PWhuKSYmKFJuPWhuLGhuPXZvaWQgMCksKFUoemUpJiZqKHplKXx8RWUoemUpJiYwPT09emUubGVuZ3RoKSYmKHplPXZvaWQgMCksZWkuX2lzQU1vbWVudE9iamVjdD0h''@;'; put 'put ''MCxlaS5fdXNlVVRDPWVpLl9pc1VUQz10cixlaS5fbD1obixlaS5faT16ZSxlaS5fZj1WdCxlaS5fc3RyaWN0PVJuLGZ1bmN0aW9uIGx1KHplKXt2YXIgVnQ9bmV3IGtlKHAzKFR1KHplKSkpO3JldHVybiBWdC5fbmV4dERheSYmKFZ0LmFkZCgxLCJkIiksVnQuX25leHREYXk9dm9pZCAwKSxW''@;'; put 'put ''dH0oZWkpfWZ1bmN0aW9uIGtzKHplLFZ0LGhuLFJuKXtyZXR1cm4gS28oemUsVnQsaG4sUm4sITEpfUIuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2s9VGUoInZhbHVlIHByb3ZpZGVkIGlzIG5vdCBpbiBhIHJlY29nbml6ZWQgUkZDMjgyMiBvciBJU08gZm9ybWF0LiBtb21lbnQgY29uc3RydWN0''@;'; put 'put ''aW9uIGZhbGxzIGJhY2sgdG8ganMgRGF0ZSgpLCB3aGljaCBpcyBub3QgcmVsaWFibGUgYWNyb3NzIGFsbCBicm93c2VycyBhbmQgdmVyc2lvbnMuIE5vbiBSRkMyODIyL0lTTyBkYXRlIGZvcm1hdHMgYXJlIGRpc2NvdXJhZ2VkLiBQbGVhc2UgcmVmZXIgdG8gaHR0cDovL21vbWVudGpzLmNv''@;'; put 'put ''bS9ndWlkZXMvIy93YXJuaW5ncy9qcy1kYXRlLyBmb3IgbW9yZSBpbmZvLiIsZnVuY3Rpb24oemUpe3plLl9kPW5ldyBEYXRlKHplLl9pKyh6ZS5fdXNlVVRDPyIgVVRDIjoiIikpfSksQi5JU09fODYwMT1mdW5jdGlvbigpe30sQi5SRkNfMjgyMj1mdW5jdGlvbigpe307dmFyIHpnPVRlKCJt''@;'; put 'put ''b21lbnQoKS5taW4gaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5tYXggaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LyIsZnVuY3Rpb24oKXt2YXIgemU9a3MuYXBwbHkobnVsbCxhcmd1bWVudHMpO3JldHVybiB0aGlzLmlzVmFsaWQoKSYm''@;'; put 'put ''emUuaXNWYWxpZCgpP3plPHRoaXM/dGhpczp6ZTpjZSgpfSksVmY9VGUoIm1vbWVudCgpLm1heCBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1pbiBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvIixmdW5jdGlvbigpe3ZhciB6ZT1rcy5h''@;'; put 'put ''cHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiZ6ZS5pc1ZhbGlkKCk/emU+dGhpcz90aGlzOnplOmNlKCl9KTtmdW5jdGlvbiBxdyh6ZSxWdCl7dmFyIGhuLFJuO2lmKDE9PT1WdC5sZW5ndGgmJkVlKFZ0WzBdKSYmKFZ0PVZ0WzBdKSwhVnQubGVuZ3RoKXJldHVy''@;'; put 'put ''biBrcygpO2Zvcihobj1WdFswXSxSbj0xO1JuPFZ0Lmxlbmd0aDsrK1JuKSghVnRbUm5dLmlzVmFsaWQoKXx8VnRbUm5dW3plXShobikpJiYoaG49VnRbUm5dKTtyZXR1cm4gaG59dmFyIEFoPVsieWVhciIsInF1YXJ0ZXIiLCJtb250aCIsIndlZWsiLCJkYXkiLCJob3VyIiwibWludXRlIiwi''@;'; put 'put ''c2Vjb25kIiwibWlsbGlzZWNvbmQiXTtmdW5jdGlvbiBacCh6ZSl7dmFyIFZ0PWZ0KHplKSxobj1WdC55ZWFyfHwwLFJuPVZ0LnF1YXJ0ZXJ8fDAsdHI9VnQubW9udGh8fDAsZWk9VnQud2Vla3x8VnQuaXNvV2Vla3x8MCxZaT1WdC5kYXl8fDAsZGE9VnQuaG91cnx8MCx6YT1WdC5taW51dGV8''@;'; put 'put ''fDAsRnM9VnQuc2Vjb25kfHwwLEt1PVZ0Lm1pbGxpc2Vjb25kfHwwO3RoaXMuX2lzVmFsaWQ9ZnVuY3Rpb24gZWIoemUpe3ZhciBWdCxSbixobj0hMSx0cj1BaC5sZW5ndGg7Zm9yKFZ0IGluIHplKWlmKFEoemUsVnQpJiYoLTE9PT1Wci5jYWxsKEFoLFZ0KXx8bnVsbCE9emVbVnRdJiZpc05h''@;'; put 'put ''Tih6ZVtWdF0pKSlyZXR1cm4hMTtmb3IoUm49MDtSbjx0cjsrK1JuKWlmKHplW0FoW1JuXV0pe2lmKGhuKXJldHVybiExO3BhcnNlRmxvYXQoemVbQWhbUm5dXSkhPT1KdCh6ZVtBaFtSbl1dKSYmKGhuPSEwKX1yZXR1cm4hMH0oVnQpLHRoaXMuX21pbGxpc2Vjb25kcz0rS3UrMWUzKkZzKzZl''@;'; put 'put ''NCp6YSsxZTMqZGEqNjAqNjAsdGhpcy5fZGF5cz0rWWkrNyplaSx0aGlzLl9tb250aHM9K3RyKzMqUm4rMTIqaG4sdGhpcy5fZGF0YT17fSx0aGlzLl9sb2NhbGU9dTEoKSx0aGlzLl9idWJibGUoKX1mdW5jdGlvbiBsOSh6ZSl7cmV0dXJuIHplIGluc3RhbmNlb2YgWnB9ZnVuY3Rpb24gR2co''@;'; put 'put ''emUpe3JldHVybiB6ZTwwPy0xKk1hdGgucm91bmQoLTEqemUpOk1hdGgucm91bmQoemUpfWZ1bmN0aW9uIFdnKHplLFZ0KXtEZSh6ZSwwLDAsZnVuY3Rpb24oKXt2YXIgaG49dGhpcy51dGNPZmZzZXQoKSxSbj0iKyI7cmV0dXJuIGhuPDAmJihobj0taG4sUm49Ii0iKSxSbitUKH5+KGhuLzYw''@;'; put 'put ''KSwyKStWdCtUKH5+aG4lNjAsMil9KX1XZygiWiIsIjoiKSxXZygiWloiLCIiKSx0bigiWiIsTnQpLHRuKCJaWiIsTnQpLG1uKFsiWiIsIlpaIl0sZnVuY3Rpb24oemUsVnQsaG4pe2huLl91c2VVVEM9ITAsaG4uX3R6bT1zOShOdCx6ZSl9KTt2YXIgSU09LyhbXCtcLV18XGRcZCkvZ2k7ZnVu''@;'; put 'put ''Y3Rpb24gczkoemUsVnQpe3ZhciB0cixlaSxobj0oVnR8fCIiKS5tYXRjaCh6ZSk7cmV0dXJuIG51bGw9PT1obj9udWxsOjA9PT0oZWk9NjAqKHRyPSgoaG5baG4ubGVuZ3RoLTFdfHxbXSkrIiIpLm1hdGNoKElNKXx8WyItIiwwLDBdKVsxXStKdCh0clsyXSkpPzA6IisiPT09dHJbMF0/ZWk6''@;'; put 'put ''LWVpfWZ1bmN0aW9uIFlnKHplLFZ0KXt2YXIgaG4sUm47cmV0dXJuIFZ0Ll9pc1VUQz8oaG49VnQuY2xvbmUoKSxSbj0oU2UoemUpfHxZKHplKT96ZS52YWx1ZU9mKCk6a3MoemUpLnZhbHVlT2YoKSktaG4udmFsdWVPZigpLGhuLl9kLnNldFRpbWUoaG4uX2QudmFsdWVPZigpK1JuKSxCLnVw''@;'; put 'put ''ZGF0ZU9mZnNldChobiwhMSksaG4pOmtzKHplKS5sb2NhbCgpfWZ1bmN0aW9uIHdoKHplKXtyZXR1cm4tTWF0aC5yb3VuZCh6ZS5fZC5nZXRUaW1lem9uZU9mZnNldCgpKX1mdW5jdGlvbiBuYigpe3JldHVybiEhdGhpcy5pc1ZhbGlkKCkmJnRoaXMuX2lzVVRDJiYwPT09dGhpcy5fb2Zmc2V0''@;'; put 'put ''fUIudXBkYXRlT2Zmc2V0PWZ1bmN0aW9uKCl7fTt2YXIgUWc9L14oLXxcKyk/KD86KFxkKilbLiBdKT8oXGQrKTooXGQrKSg/OjooXGQrKShcLlxkKik/KT8kLyxXcD0vXigtfFwrKT9QKD86KFstK10/WzAtOSwuXSopWSk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSop''@;'; put 'put ''Vyk/KD86KFstK10/WzAtOSwuXSopRCk/KD86VCg/OihbLStdP1swLTksLl0qKUgpPyg/OihbLStdP1swLTksLl0qKU0pPyg/OihbLStdP1swLTksLl0qKVMpPyk/JC87ZnVuY3Rpb24gUXMoemUsVnQpe3ZhciB0cixlaSxZaSxobj16ZSxSbj1udWxsO3JldHVybiBsOSh6ZSk/aG49e21zOnpl''@;'; put 'put ''Ll9taWxsaXNlY29uZHMsZDp6ZS5fZGF5cyxNOnplLl9tb250aHN9OmFlKHplKXx8IWlzTmFOKCt6ZSk/KGhuPXt9LFZ0P2huW1Z0XT0remU6aG4ubWlsbGlzZWNvbmRzPSt6ZSk6KFJuPVFnLmV4ZWMoemUpKT8odHI9Ii0iPT09Um5bMV0/LTE6MSxobj17eTowLGQ6SnQoUm5bMl0pKnRyLGg6''@;'; put 'put ''SnQoUm5bM10pKnRyLG06SnQoUm5bNF0pKnRyLHM6SnQoUm5bNV0pKnRyLG1zOkp0KEdnKDFlMypSbls2XSkpKnRyfSk6KFJuPVdwLmV4ZWMoemUpKT9obj17eTpiaChSblsyXSx0cj0iLSI9PT1SblsxXT8tMToxKSxNOmJoKFJuWzNdLHRyKSx3OmJoKFJuWzRdLHRyKSxkOmJoKFJuWzVdLHRy''@;'; put 'put ''KSxoOmJoKFJuWzZdLHRyKSxtOmJoKFJuWzddLHRyKSxzOmJoKFJuWzhdLHRyKX06bnVsbD09aG4/aG49e306Im9iamVjdCI9PXR5cGVvZiBobiYmKCJmcm9tImluIGhufHwidG8iaW4gaG4pJiYoWWk9ZnVuY3Rpb24gSmcoemUsVnQpe3ZhciBobjtyZXR1cm4gemUuaXNWYWxpZCgpJiZWdC5p''@;'; put 'put ''c1ZhbGlkKCk/KFZ0PVlnKFZ0LHplKSx6ZS5pc0JlZm9yZShWdCk/aG49WXAoemUsVnQpOigoaG49WXAoVnQsemUpKS5taWxsaXNlY29uZHM9LWhuLm1pbGxpc2Vjb25kcyxobi5tb250aHM9LWhuLm1vbnRocyksaG4pOnttaWxsaXNlY29uZHM6MCxtb250aHM6MH19KGtzKGhuLmZyb20pLGtz''@;'; put 'put ''KGhuLnRvKSksKGhuPXt9KS5tcz1ZaS5taWxsaXNlY29uZHMsaG4uTT1ZaS5tb250aHMpLGVpPW5ldyBacChobiksbDkoemUpJiZRKHplLCJfbG9jYWxlIikmJihlaS5fbG9jYWxlPXplLl9sb2NhbGUpLGw5KHplKSYmUSh6ZSwiX2lzVmFsaWQiKSYmKGVpLl9pc1ZhbGlkPXplLl9pc1ZhbGlk''@;'; put 'put ''KSxlaX1mdW5jdGlvbiBiaCh6ZSxWdCl7dmFyIGhuPXplJiZwYXJzZUZsb2F0KHplLnJlcGxhY2UoIiwiLCIuIikpO3JldHVybihpc05hTihobik/MDpobikqVnR9ZnVuY3Rpb24gWXAoemUsVnQpe3ZhciBobj17fTtyZXR1cm4gaG4ubW9udGhzPVZ0Lm1vbnRoKCktemUubW9udGgoKSsxMioo''@;'; put 'put ''VnQueWVhcigpLXplLnllYXIoKSksemUuY2xvbmUoKS5hZGQoaG4ubW9udGhzLCJNIikuaXNBZnRlcihWdCkmJi0taG4ubW9udGhzLGhuLm1pbGxpc2Vjb25kcz0rVnQtK3plLmNsb25lKCkuYWRkKGhuLm1vbnRocywiTSIpLGhufWZ1bmN0aW9uIFZjKHplLFZ0KXtyZXR1cm4gZnVuY3Rpb24o''@;'; put 'put ''aG4sUm4pe3ZhciBlaTtyZXR1cm4gbnVsbCE9PVJuJiYhaXNOYU4oK1JuKSYmKGhlKFZ0LCJtb21lbnQoKS4iK1Z0KyIocGVyaW9kLCBudW1iZXIpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgbW9tZW50KCkuIitWdCsiKG51bWJlciwgcGVyaW9kKS4gU2VlIGh0dHA6Ly9tb21lbnRqcy5j''@;'; put 'put ''b20vZ3VpZGVzLyMvd2FybmluZ3MvYWRkLWludmVydGVkLXBhcmFtLyBmb3IgbW9yZSBpbmZvLiIpLGVpPWhuLGhuPVJuLFJuPWVpKSxFNCh0aGlzLFFzKGhuLFJuKSx6ZSksdGhpc319ZnVuY3Rpb24gRTQoemUsVnQsaG4sUm4pe3ZhciB0cj1WdC5fbWlsbGlzZWNvbmRzLGVpPUdnKFZ0Ll9k''@;'; put 'put ''YXlzKSxZaT1HZyhWdC5fbW9udGhzKTshemUuaXNWYWxpZCgpfHwoUm49bnVsbD09Um58fFJuLFlpJiZXMCh6ZSxkbih6ZSwiTW9udGgiKStZaSpobiksZWkmJnluKHplLCJEYXRlIixkbih6ZSwiRGF0ZSIpK2VpKmhuKSx0ciYmemUuX2Quc2V0VGltZSh6ZS5fZC52YWx1ZU9mKCkrdHIqaG4p''@;'; put 'put ''LFJuJiZCLnVwZGF0ZU9mZnNldCh6ZSxlaXx8WWkpKX1Rcy5mbj1acC5wcm90b3R5cGUsUXMuaW52YWxpZD1mdW5jdGlvbiB5aCgpe3JldHVybiBRcyhOYU4pfTt2YXIgRE09VmMoMSwiYWRkIiksaDk9VmMoLTEsInN1YnRyYWN0Iik7ZnVuY3Rpb24gZDkoemUpe3JldHVybiJzdHJpbmciPT10''@;'; put 'put ''eXBlb2YgemV8fHplIGluc3RhbmNlb2YgU3RyaW5nfWZ1bmN0aW9uIHN1KHplKXtyZXR1cm4gU2UoemUpfHxZKHplKXx8ZDkoemUpfHxhZSh6ZSl8fGZ1bmN0aW9uIExNKHplKXt2YXIgVnQ9RWUoemUpLGhuPSExO3JldHVybiBWdCYmKGhuPTA9PT16ZS5maWx0ZXIoZnVuY3Rpb24oUm4pe3Jl''@;'; put 'put ''dHVybiFhZShSbikmJmQ5KHplKX0pLmxlbmd0aCksVnQmJmhufSh6ZSl8fGZ1bmN0aW9uIFgyKHplKXt2YXIgdHIsVnQ9VSh6ZSkmJiFqKHplKSxobj0hMSxSbj1bInllYXJzIiwieWVhciIsInkiLCJtb250aHMiLCJtb250aCIsIk0iLCJkYXlzIiwiZGF5IiwiZCIsImRhdGVzIiwiZGF0ZSIs''@;'; put 'put ''IkQiLCJob3VycyIsImhvdXIiLCJoIiwibWludXRlcyIsIm1pbnV0ZSIsIm0iLCJzZWNvbmRzIiwic2Vjb25kIiwicyIsIm1pbGxpc2Vjb25kcyIsIm1pbGxpc2Vjb25kIiwibXMiXSxZaT1Sbi5sZW5ndGg7Zm9yKHRyPTA7dHI8WWk7dHIrPTEpaG49aG58fFEoemUsUm5bdHJdKTtyZXR1cm4g''@;'; put 'put ''VnQmJmhufSh6ZSl8fG51bGw9PXplfWZ1bmN0aW9uIHJiKHplKXt2YXIgdHIsVnQ9VSh6ZSkmJiFqKHplKSxobj0hMSxSbj1bInNhbWVEYXkiLCJuZXh0RGF5IiwibGFzdERheSIsIm5leHRXZWVrIiwibGFzdFdlZWsiLCJzYW1lRWxzZSJdO2Zvcih0cj0wO3RyPFJuLmxlbmd0aDt0cis9MSlo''@;'; put 'put ''bj1obnx8USh6ZSxSblt0cl0pO3JldHVybiBWdCYmaG59ZnVuY3Rpb24gX2goemUsVnQpe2lmKHplLmRhdGUoKTxWdC5kYXRlKCkpcmV0dXJuLV9oKFZ0LHplKTt2YXIgaG49MTIqKFZ0LnllYXIoKS16ZS55ZWFyKCkpKyhWdC5tb250aCgpLXplLm1vbnRoKCkpLFJuPXplLmNsb25lKCkuYWRk''@;'; put 'put ''KGhuLCJtb250aHMiKTtyZXR1cm4tKGhuKyhWdC1SbjwwPyhWdC1SbikvKFJuLXplLmNsb25lKCkuYWRkKGhuLTEsIm1vbnRocyIpKTooVnQtUm4pLyh6ZS5jbG9uZSgpLmFkZChobisxLCJtb250aHMiKS1SbikpKXx8MH1mdW5jdGlvbiBkdCh6ZSl7dmFyIFZ0O3JldHVybiB2b2lkIDA9PT16''@;'; put 'put ''ZT90aGlzLl9sb2NhbGUuX2FiYnI6KG51bGwhPShWdD11MSh6ZSkpJiYodGhpcy5fbG9jYWxlPVZ0KSx0aGlzKX1CLmRlZmF1bHRGb3JtYXQ9IllZWVktTU0tRERUSEg6bW06c3NaIixCLmRlZmF1bHRGb3JtYXRVdGM9IllZWVktTU0tRERUSEg6bW06c3NbWl0iO3ZhciBJdD1UZSgibW9tZW50''@;'; put 'put ''KCkubGFuZygpIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSBtb21lbnQoKS5sb2NhbGVEYXRhKCkgdG8gZ2V0IHRoZSBsYW5ndWFnZSBjb25maWd1cmF0aW9uLiBVc2UgbW9tZW50KCkubG9jYWxlKCkgdG8gY2hhbmdlIGxhbmd1YWdlcy4iLGZ1bmN0aW9uKHplKXtyZXR1cm4gdm9pZCAw''@;'; put 'put ''PT09emU/dGhpcy5sb2NhbGVEYXRhKCk6dGhpcy5sb2NhbGUoemUpfSk7ZnVuY3Rpb24gUHQoKXtyZXR1cm4gdGhpcy5fbG9jYWxlfXZhciBpdD02ZTQsYT02MCppdCxYdD0zNTA2MzI4KmE7ZnVuY3Rpb24gaHIoemUsVnQpe3JldHVybih6ZSVWdCtWdCklVnR9ZnVuY3Rpb24gUGkoemUsVnQs''@;'; put 'put ''aG4pe3JldHVybiB6ZTwxMDAmJnplPj0wP25ldyBEYXRlKHplKzQwMCxWdCxobiktWHQ6bmV3IERhdGUoemUsVnQsaG4pLnZhbHVlT2YoKX1mdW5jdGlvbiBqbih6ZSxWdCxobil7cmV0dXJuIHplPDEwMCYmemU+PTA/RGF0ZS5VVEMoemUrNDAwLFZ0LGhuKS1YdDpEYXRlLlVUQyh6ZSxWdCxo''@;'; put 'put ''bil9ZnVuY3Rpb24gcWwoemUsVnQpe3JldHVybiBWdC5lcmFzQWJiclJlZ2V4KHplKX1mdW5jdGlvbiBKcCgpe3ZhciB0cixlaSx6ZT1bXSxWdD1bXSxobj1bXSxSbj1bXSxZaT10aGlzLmVyYXMoKTtmb3IodHI9MCxlaT1ZaS5sZW5ndGg7dHI8ZWk7Kyt0cilWdC5wdXNoKEJuKFlpW3RyXS5u''@;'; put 'put ''YW1lKSksemUucHVzaChCbihZaVt0cl0uYWJicikpLGhuLnB1c2goQm4oWWlbdHJdLm5hcnJvdykpLFJuLnB1c2goQm4oWWlbdHJdLm5hbWUpKSxSbi5wdXNoKEJuKFlpW3RyXS5hYmJyKSksUm4ucHVzaChCbihZaVt0cl0ubmFycm93KSk7dGhpcy5fZXJhc1JlZ2V4PW5ldyBSZWdFeHAoIl4o''@;'; put 'put ''IitSbi5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fZXJhc05hbWVSZWdleD1uZXcgUmVnRXhwKCJeKCIrVnQuam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX2VyYXNBYmJyUmVnZXg9bmV3IFJlZ0V4cCgiXigiK3plLmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl9lcmFzTmFycm93UmVnZXg9bmV3''@;'; put 'put ''IFJlZ0V4cCgiXigiK2huLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBYcCh6ZSxWdCl7RGUoMCxbemUsemUubGVuZ3RoXSwwLFZ0KX1mdW5jdGlvbiBhYih6ZSxWdCxobixSbix0cil7dmFyIGVpO3JldHVybiBudWxsPT16ZT9ybCh0aGlzLFJuLHRyKS55ZWFyOihWdD4oZWk9X2koemUs''@;'; put 'put ''Um4sdHIpKSYmKFZ0PWVpKSxGTS5jYWxsKHRoaXMsemUsVnQsaG4sUm4sdHIpKX1mdW5jdGlvbiBGTSh6ZSxWdCxobixSbix0cil7dmFyIGVpPXNhKHplLFZ0LGhuLFJuLHRyKSxZaT12aShlaS55ZWFyLDAsZWkuZGF5T2ZZZWFyKTtyZXR1cm4gdGhpcy55ZWFyKFlpLmdldFVUQ0Z1bGxZZWFy''@;'; put 'put ''KCkpLHRoaXMubW9udGgoWWkuZ2V0VVRDTW9udGgoKSksdGhpcy5kYXRlKFlpLmdldFVUQ0RhdGUoKSksdGhpc31EZSgiTiIsMCwwLCJlcmFBYmJyIiksRGUoIk5OIiwwLDAsImVyYUFiYnIiKSxEZSgiTk5OIiwwLDAsImVyYUFiYnIiKSxEZSgiTk5OTiIsMCwwLCJlcmFOYW1lIiksRGUoIk5O''@;'; put 'put ''Tk5OIiwwLDAsImVyYU5hcnJvdyIpLERlKCJ5IixbInkiLDFdLCJ5byIsImVyYVllYXIiKSxEZSgieSIsWyJ5eSIsMl0sMCwiZXJhWWVhciIpLERlKCJ5IixbInl5eSIsM10sMCwiZXJhWWVhciIpLERlKCJ5IixbInl5eXkiLDRdLDAsImVyYVllYXIiKSx0bigiTiIscWwpLHRuKCJOTiIscWwp''@;'; put 'put ''LHRuKCJOTk4iLHFsKSx0bigiTk5OTiIsZnVuY3Rpb24gaGEoemUsVnQpe3JldHVybiBWdC5lcmFzTmFtZVJlZ2V4KHplKX0pLHRuKCJOTk5OTiIsZnVuY3Rpb24gRGEoemUsVnQpe3JldHVybiBWdC5lcmFzTmFycm93UmVnZXgoemUpfSksbW4oWyJOIiwiTk4iLCJOTk4iLCJOTk5OIiwiTk5O''@;'; put 'put ''Tk4iXSxmdW5jdGlvbih6ZSxWdCxobixSbil7dmFyIHRyPWhuLl9sb2NhbGUuZXJhc1BhcnNlKHplLFJuLGhuLl9zdHJpY3QpO3RyP0ooaG4pLmVyYT10cjpKKGhuKS5pbnZhbGlkRXJhPXplfSksdG4oInkiLFd0KSx0bigieXkiLFd0KSx0bigieXl5IixXdCksdG4oInl5eXkiLFd0KSx0bigi''@;'; put 'put ''eW8iLGZ1bmN0aW9uIFQ4KHplLFZ0KXtyZXR1cm4gVnQuX2VyYVllYXJPcmRpbmFsUmVnZXh8fFd0fSksbW4oWyJ5IiwieXkiLCJ5eXkiLCJ5eXl5Il0sMCksbW4oWyJ5byJdLGZ1bmN0aW9uKHplLFZ0LGhuLFJuKXt2YXIgdHI7aG4uX2xvY2FsZS5fZXJhWWVhck9yZGluYWxSZWdleCYmKHRy''@;'; put 'put ''PXplLm1hdGNoKGhuLl9sb2NhbGUuX2VyYVllYXJPcmRpbmFsUmVnZXgpKSxWdFswXT1obi5fbG9jYWxlLmVyYVllYXJPcmRpbmFsUGFyc2U/aG4uX2xvY2FsZS5lcmFZZWFyT3JkaW5hbFBhcnNlKHplLHRyKTpwYXJzZUludCh6ZSwxMCl9KSxEZSgwLFsiZ2ciLDJdLDAsZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gdGhpcy53ZWVrWWVhcigpJTEwMH0pLERlKDAsWyJHRyIsMl0sMCxmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzb1dlZWtZZWFyKCklMTAwfSksWHAoImdnZ2ciLCJ3ZWVrWWVhciIpLFhwKCJnZ2dnZyIsIndlZWtZZWFyIiksWHAoIkdHR0ciLCJpc29XZWVrWWVhciIpLFhwKCJHR0dH''@;'; put 'put ''RyIsImlzb1dlZWtZZWFyIiksTHQoIndlZWtZZWFyIiwiZ2ciKSxMdCgiaXNvV2Vla1llYXIiLCJHRyIpLEdlKCJ3ZWVrWWVhciIsMSksR2UoImlzb1dlZWtZZWFyIiwxKSx0bigiRyIscG4pLHRuKCJnIixwbiksdG4oIkdHIix4cixlciksdG4oImdnIix4cixlciksdG4oIkdHR0ciLEFuLFhu''@;'; put 'put ''KSx0bigiZ2dnZyIsQW4sWG4pLHRuKCJHR0dHRyIscW4sRnIpLHRuKCJnZ2dnZyIscW4sRnIpLHVuKFsiZ2dnZyIsImdnZ2dnIiwiR0dHRyIsIkdHR0dHIl0sZnVuY3Rpb24oemUsVnQsaG4sUm4pe1Z0W1JuLnN1YnN0cigwLDIpXT1KdCh6ZSl9KSx1bihbImdnIiwiR0ciXSxmdW5jdGlvbih6''@;'; put 'put ''ZSxWdCxobixSbil7VnRbUm5dPUIucGFyc2VUd29EaWdpdFllYXIoemUpfSksRGUoIlEiLDAsIlFvIiwicXVhcnRlciIpLEx0KCJxdWFydGVyIiwiUSIpLEdlKCJxdWFydGVyIiw3KSx0bigiUSIsYm4pLG1uKCJRIixmdW5jdGlvbih6ZSxWdCl7VnRbMV09MyooSnQoemUpLTEpfSksRGUoIkQi''@;'; put 'put ''LFsiREQiLDJdLCJEbyIsImRhdGUiKSxMdCgiZGF0ZSIsIkQiKSxHZSgiZGF0ZSIsOSksdG4oIkQiLHhyKSx0bigiREQiLHhyLGVyKSx0bigiRG8iLGZ1bmN0aW9uKHplLFZ0KXtyZXR1cm4gemU/VnQuX2RheU9mTW9udGhPcmRpbmFsUGFyc2V8fFZ0Ll9vcmRpbmFsUGFyc2U6VnQuX2RheU9m''@;'; put 'put ''TW9udGhPcmRpbmFsUGFyc2VMZW5pZW50fSksbW4oWyJEIiwiREQiXSwyKSxtbigiRG8iLGZ1bmN0aW9uKHplLFZ0KXtWdFsyXT1KdCh6ZS5tYXRjaCh4cilbMF0pfSk7dmFyIHcyPWduKCJEYXRlIiwhMCk7RGUoIkRERCIsWyJEREREIiwzXSwiREREbyIsImRheU9mWWVhciIpLEx0KCJkYXlP''@;'; put 'put ''ZlllYXIiLCJEREQiKSxHZSgiZGF5T2ZZZWFyIiw0KSx0bigiREREIixuciksdG4oIkREREQiLHNyKSxtbihbIkRERCIsIkREREQiXSxmdW5jdGlvbih6ZSxWdCxobil7aG4uX2RheU9mWWVhcj1KdCh6ZSl9KSxEZSgibSIsWyJtbSIsMl0sMCwibWludXRlIiksTHQoIm1pbnV0ZSIsIm0iKSxH''@;'; put 'put ''ZSgibWludXRlIiwxNCksdG4oIm0iLHhyKSx0bigibW0iLHhyLGVyKSxtbihbIm0iLCJtbSJdLDQpO3ZhciB5ZD1nbigiTWludXRlcyIsITEpO0RlKCJzIixbInNzIiwyXSwwLCJzZWNvbmQiKSxMdCgic2Vjb25kIiwicyIpLEdlKCJzZWNvbmQiLDE1KSx0bigicyIseHIpLHRuKCJzcyIseHIs''@;'; put 'put ''ZXIpLG1uKFsicyIsInNzIl0sNSk7dmFyIGZmLEk4LEtwPWduKCJTZWNvbmRzIiwhMSk7Zm9yKERlKCJTIiwwLDAsZnVuY3Rpb24oKXtyZXR1cm5+fih0aGlzLm1pbGxpc2Vjb25kKCkvMTAwKX0pLERlKDAsWyJTUyIsMl0sMCxmdW5jdGlvbigpe3JldHVybn5+KHRoaXMubWlsbGlzZWNvbmQo''@;'; put 'put ''KS8xMCl9KSxEZSgwLFsiU1NTIiwzXSwwLCJtaWxsaXNlY29uZCIpLERlKDAsWyJTU1NTIiw0XSwwLGZ1bmN0aW9uKCl7cmV0dXJuIDEwKnRoaXMubWlsbGlzZWNvbmQoKX0pLERlKDAsWyJTU1NTUyIsNV0sMCxmdW5jdGlvbigpe3JldHVybiAxMDAqdGhpcy5taWxsaXNlY29uZCgpfSksRGUo''@;'; put 'put ''MCxbIlNTU1NTUyIsNl0sMCxmdW5jdGlvbigpe3JldHVybiAxZTMqdGhpcy5taWxsaXNlY29uZCgpfSksRGUoMCxbIlNTU1NTU1MiLDddLDAsZnVuY3Rpb24oKXtyZXR1cm4gMWU0KnRoaXMubWlsbGlzZWNvbmQoKX0pLERlKDAsWyJTU1NTU1NTUyIsOF0sMCxmdW5jdGlvbigpe3JldHVybiAx''@;'; put 'put ''ZTUqdGhpcy5taWxsaXNlY29uZCgpfSksRGUoMCxbIlNTU1NTU1NTUyIsOV0sMCxmdW5jdGlvbigpe3JldHVybiAxZTYqdGhpcy5taWxsaXNlY29uZCgpfSksTHQoIm1pbGxpc2Vjb25kIiwibXMiKSxHZSgibWlsbGlzZWNvbmQiLDE2KSx0bigiUyIsbnIsYm4pLHRuKCJTUyIsbnIsZXIpLHRu''@;'; put 'put ''KCJTU1MiLG5yLHNyKSxmZj0iU1NTUyI7ZmYubGVuZ3RoPD05O2ZmKz0iUyIpdG4oZmYsV3QpO2Z1bmN0aW9uIEhNKHplLFZ0KXtWdFs2XT1KdCgxZTMqKCIwLiIremUpKX1mb3IoZmY9IlMiO2ZmLmxlbmd0aDw9OTtmZis9IlMiKW1uKGZmLEhNKTtJOD1nbigiTWlsbGlzZWNvbmRzIiwhMSks''@;'; put 'put ''RGUoInoiLDAsMCwiem9uZUFiYnIiKSxEZSgienoiLDAsMCwiem9uZU5hbWUiKTt2YXIgYTA9a2UucHJvdG90eXBlO2Z1bmN0aW9uIEpzKHplKXtyZXR1cm4gemV9YTAuYWRkPURNLGEwLmNhbGVuZGFyPWZ1bmN0aW9uIHZjKHplLFZ0KXsxPT09YXJndW1lbnRzLmxlbmd0aCYmKGFyZ3VtZW50''@;'; put 'put ''c1swXT9zdShhcmd1bWVudHNbMF0pPyh6ZT1hcmd1bWVudHNbMF0sVnQ9dm9pZCAwKTpyYihhcmd1bWVudHNbMF0pJiYoVnQ9YXJndW1lbnRzWzBdLHplPXZvaWQgMCk6KHplPXZvaWQgMCxWdD12b2lkIDApKTt2YXIgaG49emV8fGtzKCksUm49WWcoaG4sdGhpcykuc3RhcnRPZigiZGF5Iiks''@;'; put 'put ''dHI9Qi5jYWxlbmRhckZvcm1hdCh0aGlzLFJuKXx8InNhbWVFbHNlIixlaT1WdCYmKE8oVnRbdHJdKT9WdFt0cl0uY2FsbCh0aGlzLGhuKTpWdFt0cl0pO3JldHVybiB0aGlzLmZvcm1hdChlaXx8dGhpcy5sb2NhbGVEYXRhKCkuY2FsZW5kYXIodHIsdGhpcyxrcyhobikpKX0sYTAuY2xvbmU9''@;'; put 'put ''ZnVuY3Rpb24gcDkoKXtyZXR1cm4gbmV3IGtlKHRoaXMpfSxhMC5kaWZmPWZ1bmN0aW9uIE4xKHplLFZ0LGhuKXt2YXIgUm4sdHIsZWk7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBOYU47aWYoIShSbj1ZZyh6ZSx0aGlzKSkuaXNWYWxpZCgpKXJldHVybiBOYU47c3dpdGNoKHRyPTZlNCoo''@;'; put 'put ''Um4udXRjT2Zmc2V0KCktdGhpcy51dGNPZmZzZXQoKSksVnQ9Q3QoVnQpKXtjYXNlInllYXIiOmVpPV9oKHRoaXMsUm4pLzEyO2JyZWFrO2Nhc2UibW9udGgiOmVpPV9oKHRoaXMsUm4pO2JyZWFrO2Nhc2UicXVhcnRlciI6ZWk9X2godGhpcyxSbikvMzticmVhaztjYXNlInNlY29uZCI6ZWk9''@;'; put 'put ''KHRoaXMtUm4pLzFlMzticmVhaztjYXNlIm1pbnV0ZSI6ZWk9KHRoaXMtUm4pLzZlNDticmVhaztjYXNlImhvdXIiOmVpPSh0aGlzLVJuKS8zNmU1O2JyZWFrO2Nhc2UiZGF5IjplaT0odGhpcy1Sbi10cikvODY0ZTU7YnJlYWs7Y2FzZSJ3ZWVrIjplaT0odGhpcy1Sbi10cikvNjA0OGU1O2Jy''@;'; put 'put ''ZWFrO2RlZmF1bHQ6ZWk9dGhpcy1Sbn1yZXR1cm4gaG4/ZWk6anQoZWkpfSxhMC5lbmRPZj1mdW5jdGlvbiBBbyh6ZSl7dmFyIFZ0LGhuO2lmKHZvaWQgMD09PSh6ZT1DdCh6ZSkpfHwibWlsbGlzZWNvbmQiPT09emV8fCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gdGhpcztzd2l0Y2goaG49dGhp''@;'; put 'put ''cy5faXNVVEM/am46UGksemUpe2Nhc2UieWVhciI6VnQ9aG4odGhpcy55ZWFyKCkrMSwwLDEpLTE7YnJlYWs7Y2FzZSJxdWFydGVyIjpWdD1obih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCktdGhpcy5tb250aCgpJTMrMywxKS0xO2JyZWFrO2Nhc2UibW9udGgiOlZ0PWhuKHRoaXMueWVhcigp''@;'; put 'put ''LHRoaXMubW9udGgoKSsxLDEpLTE7YnJlYWs7Y2FzZSJ3ZWVrIjpWdD1obih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCksdGhpcy5kYXRlKCktdGhpcy53ZWVrZGF5KCkrNyktMTticmVhaztjYXNlImlzb1dlZWsiOlZ0PWhuKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKS0o''@;'; put 'put ''dGhpcy5pc29XZWVrZGF5KCktMSkrNyktMTticmVhaztjYXNlImRheSI6Y2FzZSJkYXRlIjpWdD1obih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCksdGhpcy5kYXRlKCkrMSktMTticmVhaztjYXNlImhvdXIiOlZ0PXRoaXMuX2QudmFsdWVPZigpLFZ0Kz1hLWhyKFZ0Kyh0aGlzLl9pc1VUQz8w''@;'; put 'put ''OnRoaXMudXRjT2Zmc2V0KCkqaXQpLGEpLTE7YnJlYWs7Y2FzZSJtaW51dGUiOlZ0PXRoaXMuX2QudmFsdWVPZigpLFZ0Kz1pdC1ocihWdCxpdCktMTticmVhaztjYXNlInNlY29uZCI6VnQ9dGhpcy5fZC52YWx1ZU9mKCksVnQrPTFlMy1ocihWdCwxZTMpLTF9cmV0dXJuIHRoaXMuX2Quc2V0''@;'; put 'put ''VGltZShWdCksQi51cGRhdGVPZmZzZXQodGhpcywhMCksdGhpc30sYTAuZm9ybWF0PWZ1bmN0aW9uIHFnKHplKXt6ZXx8KHplPXRoaXMuaXNVdGMoKT9CLmRlZmF1bHRGb3JtYXRVdGM6Qi5kZWZhdWx0Rm9ybWF0KTt2YXIgVnQ9JGUodGhpcyx6ZSk7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgp''@;'; put 'put ''LnBvc3Rmb3JtYXQoVnQpfSxhMC5mcm9tPWZ1bmN0aW9uIGliKHplLFZ0KXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCkmJihTZSh6ZSkmJnplLmlzVmFsaWQoKXx8a3MoemUpLmlzVmFsaWQoKSk/UXMoe3RvOnRoaXMsZnJvbTp6ZX0pLmxvY2FsZSh0aGlzLmxvY2FsZSgpKS5odW1hbml6ZSghVnQp''@;'; put 'put ''OnRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCl9LGEwLmZyb21Ob3c9ZnVuY3Rpb24gZjIoemUpe3JldHVybiB0aGlzLmZyb20oa3MoKSx6ZSl9LGEwLnRvPWZ1bmN0aW9uIHBSKHplLFZ0KXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCkmJihTZSh6ZSkmJnplLmlzVmFsaWQoKXx8a3MoemUp''@;'; put 'put ''LmlzVmFsaWQoKSk/UXMoe2Zyb206dGhpcyx0bzp6ZX0pLmxvY2FsZSh0aGlzLmxvY2FsZSgpKS5odW1hbml6ZSghVnQpOnRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCl9LGEwLnRvTm93PWZ1bmN0aW9uIFJNKHplKXtyZXR1cm4gdGhpcy50byhrcygpLHplKX0sYTAuZ2V0PWZ1bmN0''@;'; put 'put ''aW9uIGxuKHplKXtyZXR1cm4gTyh0aGlzW3plPUN0KHplKV0pP3RoaXNbemVdKCk6dGhpc30sYTAuaW52YWxpZEF0PWZ1bmN0aW9uIG8yKCl7cmV0dXJuIEoodGhpcykub3ZlcmZsb3d9LGEwLmlzQWZ0ZXI9ZnVuY3Rpb24gWGcoemUsVnQpe3ZhciBobj1TZSh6ZSk/emU6a3MoemUpO3JldHVy''@;'; put 'put ''biEoIXRoaXMuaXNWYWxpZCgpfHwhaG4uaXNWYWxpZCgpKSYmKCJtaWxsaXNlY29uZCI9PT0oVnQ9Q3QoVnQpfHwibWlsbGlzZWNvbmQiKT90aGlzLnZhbHVlT2YoKT5obi52YWx1ZU9mKCk6aG4udmFsdWVPZigpPHRoaXMuY2xvbmUoKS5zdGFydE9mKFZ0KS52YWx1ZU9mKCkpfSxhMC5pc0Jl''@;'; put 'put ''Zm9yZT1mdW5jdGlvbiBRcCh6ZSxWdCl7dmFyIGhuPVNlKHplKT96ZTprcyh6ZSk7cmV0dXJuISghdGhpcy5pc1ZhbGlkKCl8fCFobi5pc1ZhbGlkKCkpJiYoIm1pbGxpc2Vjb25kIj09PShWdD1DdChWdCl8fCJtaWxsaXNlY29uZCIpP3RoaXMudmFsdWVPZigpPGhuLnZhbHVlT2YoKTp0aGlz''@;'; put 'put ''LmNsb25lKCkuZW5kT2YoVnQpLnZhbHVlT2YoKTxobi52YWx1ZU9mKCkpfSxhMC5pc0JldHdlZW49ZnVuY3Rpb24gUXUoemUsVnQsaG4sUm4pe3ZhciB0cj1TZSh6ZSk/emU6a3MoemUpLGVpPVNlKFZ0KT9WdDprcyhWdCk7cmV0dXJuISEodGhpcy5pc1ZhbGlkKCkmJnRyLmlzVmFsaWQoKSYm''@;'; put 'put ''ZWkuaXNWYWxpZCgpKSYmKCIoIj09PShSbj1Sbnx8IigpIilbMF0/dGhpcy5pc0FmdGVyKHRyLGhuKTohdGhpcy5pc0JlZm9yZSh0cixobikpJiYoIikiPT09Um5bMV0/dGhpcy5pc0JlZm9yZShlaSxobik6IXRoaXMuaXNBZnRlcihlaSxobikpfSxhMC5pc1NhbWU9ZnVuY3Rpb24gS2coemUs''@;'; put 'put ''VnQpe3ZhciBSbixobj1TZSh6ZSk/emU6a3MoemUpO3JldHVybiEoIXRoaXMuaXNWYWxpZCgpfHwhaG4uaXNWYWxpZCgpKSYmKCJtaWxsaXNlY29uZCI9PT0oVnQ9Q3QoVnQpfHwibWlsbGlzZWNvbmQiKT90aGlzLnZhbHVlT2YoKT09PWhuLnZhbHVlT2YoKTooUm49aG4udmFsdWVPZigpLHRo''@;'; put 'put ''aXMuY2xvbmUoKS5zdGFydE9mKFZ0KS52YWx1ZU9mKCk8PVJuJiZSbjw9dGhpcy5jbG9uZSgpLmVuZE9mKFZ0KS52YWx1ZU9mKCkpKX0sYTAuaXNTYW1lT3JBZnRlcj1mdW5jdGlvbiB1dSh6ZSxWdCl7cmV0dXJuIHRoaXMuaXNTYW1lKHplLFZ0KXx8dGhpcy5pc0FmdGVyKHplLFZ0KX0sYTAu''@;'; put 'put ''aXNTYW1lT3JCZWZvcmU9ZnVuY3Rpb24gT00oemUsVnQpe3JldHVybiB0aGlzLmlzU2FtZSh6ZSxWdCl8fHRoaXMuaXNCZWZvcmUoemUsVnQpfSxhMC5pc1ZhbGlkPWZ1bmN0aW9uIHhuKCl7cmV0dXJuIG9lKHRoaXMpfSxhMC5sYW5nPUl0LGEwLmxvY2FsZT1kdCxhMC5sb2NhbGVEYXRhPVB0''@;'; put 'put ''LGEwLm1heD1WZixhMC5taW49emcsYTAucGFyc2luZ0ZsYWdzPWZ1bmN0aW9uIGkyKCl7cmV0dXJuIE4oe30sSih0aGlzKSl9LGEwLnNldD1mdW5jdGlvbiBObih6ZSxWdCl7aWYoIm9iamVjdCI9PXR5cGVvZiB6ZSl7dmFyIFJuLGhuPWZ1bmN0aW9uIFVlKHplKXt2YXIgaG4sVnQ9W107Zm9y''@;'; put 'put ''KGhuIGluIHplKVEoemUsaG4pJiZWdC5wdXNoKHt1bml0OmhuLHByaW9yaXR5Okh0W2huXX0pO3JldHVybiBWdC5zb3J0KGZ1bmN0aW9uKFJuLHRyKXtyZXR1cm4gUm4ucHJpb3JpdHktdHIucHJpb3JpdHl9KSxWdH0oemU9ZnQoemUpKSx0cj1obi5sZW5ndGg7Zm9yKFJuPTA7Um48dHI7Um4r''@;'; put 'put ''Kyl0aGlzW2huW1JuXS51bml0XSh6ZVtobltSbl0udW5pdF0pfWVsc2UgaWYoTyh0aGlzW3plPUN0KHplKV0pKXJldHVybiB0aGlzW3plXShWdCk7cmV0dXJuIHRoaXN9LGEwLnN0YXJ0T2Y9ZnVuY3Rpb24gXyh6ZSl7dmFyIFZ0LGhuO2lmKHZvaWQgMD09PSh6ZT1DdCh6ZSkpfHwibWlsbGlz''@;'; put 'put ''ZWNvbmQiPT09emV8fCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gdGhpcztzd2l0Y2goaG49dGhpcy5faXNVVEM/am46UGksemUpe2Nhc2UieWVhciI6VnQ9aG4odGhpcy55ZWFyKCksMCwxKTticmVhaztjYXNlInF1YXJ0ZXIiOlZ0PWhuKHRoaXMueWVhcigpLHRoaXMubW9udGgoKS10aGlzLm1v''@;'; put 'put ''bnRoKCklMywxKTticmVhaztjYXNlIm1vbnRoIjpWdD1obih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCksMSk7YnJlYWs7Y2FzZSJ3ZWVrIjpWdD1obih0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCksdGhpcy5kYXRlKCktdGhpcy53ZWVrZGF5KCkpO2JyZWFrO2Nhc2UiaXNvV2VlayI6VnQ9aG4o''@;'; put 'put ''dGhpcy55ZWFyKCksdGhpcy5tb250aCgpLHRoaXMuZGF0ZSgpLSh0aGlzLmlzb1dlZWtkYXkoKS0xKSk7YnJlYWs7Y2FzZSJkYXkiOmNhc2UiZGF0ZSI6VnQ9aG4odGhpcy55ZWFyKCksdGhpcy5tb250aCgpLHRoaXMuZGF0ZSgpKTticmVhaztjYXNlImhvdXIiOlZ0PXRoaXMuX2QudmFsdWVP''@;'; put 'put ''ZigpLFZ0LT1ocihWdCsodGhpcy5faXNVVEM/MDp0aGlzLnV0Y09mZnNldCgpKml0KSxhKTticmVhaztjYXNlIm1pbnV0ZSI6VnQ9dGhpcy5fZC52YWx1ZU9mKCksVnQtPWhyKFZ0LGl0KTticmVhaztjYXNlInNlY29uZCI6VnQ9dGhpcy5fZC52YWx1ZU9mKCksVnQtPWhyKFZ0LDFlMyl9cmV0''@;'; put 'put ''dXJuIHRoaXMuX2Quc2V0VGltZShWdCksQi51cGRhdGVPZmZzZXQodGhpcywhMCksdGhpc30sYTAuc3VidHJhY3Q9aDksYTAudG9BcnJheT1mdW5jdGlvbiBWMSgpe3ZhciB6ZT10aGlzO3JldHVyblt6ZS55ZWFyKCksemUubW9udGgoKSx6ZS5kYXRlKCksemUuaG91cigpLHplLm1pbnV0ZSgp''@;'; put 'put ''LHplLnNlY29uZCgpLHplLm1pbGxpc2Vjb25kKCldfSxhMC50b09iamVjdD1mdW5jdGlvbiBscygpe3ZhciB6ZT10aGlzO3JldHVybnt5ZWFyczp6ZS55ZWFyKCksbW9udGhzOnplLm1vbnRoKCksZGF0ZTp6ZS5kYXRlKCksaG91cnM6emUuaG91cnMoKSxtaW51dGVzOnplLm1pbnV0ZXMoKSxz''@;'; put 'put ''ZWNvbmRzOnplLnNlY29uZHMoKSxtaWxsaXNlY29uZHM6emUubWlsbGlzZWNvbmRzKCl9fSxhMC50b0RhdGU9ZnVuY3Rpb24gbGUoKXtyZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkpfSxhMC50b0lTT1N0cmluZz1mdW5jdGlvbiBDYSh6ZSl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVy''@;'; put 'put ''biBudWxsO3ZhciBWdD0hMCE9PXplLGhuPVZ0P3RoaXMuY2xvbmUoKS51dGMoKTp0aGlzO3JldHVybiBobi55ZWFyKCk8MHx8aG4ueWVhcigpPjk5OTk/JGUoaG4sVnQ/IllZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXSI6IllZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1oiKTpPKERh''@;'; put 'put ''dGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKT9WdD90aGlzLnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCk6bmV3IERhdGUodGhpcy52YWx1ZU9mKCkrNjAqdGhpcy51dGNPZmZzZXQoKSoxZTMpLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgiWiIsJGUoaG4sIloiKSk6JGUoaG4sVnQ/IllZWVktTU0tRERb''@;'; put 'put ''VF1ISDptbTpzcy5TU1NbWl0iOiJZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTWiIpfSxhMC5pbnNwZWN0PWZ1bmN0aW9uICRnKCl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiJtb21lbnQuaW52YWxpZCgvKiAiK3RoaXMuX2krIiAqLykiO3ZhciBobixSbix6ZT0ibW9tZW50IixWdD0iIjty''@;'; put 'put ''ZXR1cm4gdGhpcy5pc0xvY2FsKCl8fCh6ZT0wPT09dGhpcy51dGNPZmZzZXQoKT8ibW9tZW50LnV0YyI6Im1vbWVudC5wYXJzZVpvbmUiLFZ0PSJaIiksaG49IlsiK3plKycoIl0nLFJuPTA8PXRoaXMueWVhcigpJiZ0aGlzLnllYXIoKTw9OTk5OT8iWVlZWSI6IllZWVlZWSIsdGhpcy5mb3Jt''@;'; put 'put ''YXQoaG4rUm4rIi1NTS1ERFtUXUhIOm1tOnNzLlNTUyIrVnQrJ1siKV0nKX0sInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPVN5bWJvbC5mb3ImJihhMFtTeW1ib2wuZm9yKCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbSIpXT1mdW5jdGlvbigpe3JldHVybiJNb21lbnQ8Iit0''@;'; put 'put ''aGlzLmZvcm1hdCgpKyI+In0pLGEwLnRvSlNPTj1mdW5jdGlvbiBNbigpe3JldHVybiB0aGlzLmlzVmFsaWQoKT90aGlzLnRvSVNPU3RyaW5nKCk6bnVsbH0sYTAudG9TdHJpbmc9ZnVuY3Rpb24gdmQoKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmxvY2FsZSgiZW4iKS5mb3JtYXQoImRkZCBNTU0g''@;'; put 'put ''REQgWVlZWSBISDptbTpzcyBbR01UXVpaIil9LGEwLnVuaXg9ZnVuY3Rpb24gJG8oKXtyZXR1cm4gTWF0aC5mbG9vcih0aGlzLnZhbHVlT2YoKS8xZTMpfSxhMC52YWx1ZU9mPWZ1bmN0aW9uIFNpKCl7cmV0dXJuIHRoaXMuX2QudmFsdWVPZigpLTZlNCoodGhpcy5fb2Zmc2V0fHwwKX0sYTAu''@;'; put 'put ''Y3JlYXRpb25EYXRhPWZ1bmN0aW9uIGpjKCl7cmV0dXJue2lucHV0OnRoaXMuX2ksZm9ybWF0OnRoaXMuX2YsbG9jYWxlOnRoaXMuX2xvY2FsZSxpc1VUQzp0aGlzLl9pc1VUQyxzdHJpY3Q6dGhpcy5fc3RyaWN0fX0sYTAuZXJhTmFtZT1mdW5jdGlvbiBnOSgpe3ZhciB6ZSxWdCxobixSbj10''@;'; put 'put ''aGlzLmxvY2FsZURhdGEoKS5lcmFzKCk7Zm9yKHplPTAsVnQ9Um4ubGVuZ3RoO3plPFZ0OysremUpaWYoaG49dGhpcy5jbG9uZSgpLnN0YXJ0T2YoImRheSIpLnZhbHVlT2YoKSxSblt6ZV0uc2luY2U8PWhuJiZobjw9Um5bemVdLnVudGlsfHxSblt6ZV0udW50aWw8PWhuJiZobjw9Um5bemVd''@;'; put 'put ''LnNpbmNlKXJldHVybiBSblt6ZV0ubmFtZTtyZXR1cm4iIn0sYTAuZXJhTmFycm93PWZ1bmN0aW9uIG05KCl7dmFyIHplLFZ0LGhuLFJuPXRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKTtmb3IoemU9MCxWdD1Sbi5sZW5ndGg7emU8VnQ7Kyt6ZSlpZihobj10aGlzLmNsb25lKCkuc3RhcnRPZigi''@;'; put 'put ''ZGF5IikudmFsdWVPZigpLFJuW3plXS5zaW5jZTw9aG4mJmhuPD1Sblt6ZV0udW50aWx8fFJuW3plXS51bnRpbDw9aG4mJmhuPD1Sblt6ZV0uc2luY2UpcmV0dXJuIFJuW3plXS5uYXJyb3c7cmV0dXJuIiJ9LGEwLmVyYUFiYnI9ZnVuY3Rpb24gb2IoKXt2YXIgemUsVnQsaG4sUm49dGhpcy5s''@;'; put 'put ''b2NhbGVEYXRhKCkuZXJhcygpO2Zvcih6ZT0wLFZ0PVJuLmxlbmd0aDt6ZTxWdDsrK3plKWlmKGhuPXRoaXMuY2xvbmUoKS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksUm5bemVdLnNpbmNlPD1obiYmaG48PVJuW3plXS51bnRpbHx8Um5bemVdLnVudGlsPD1obiYmaG48PVJuW3plXS5zaW5j''@;'; put 'put ''ZSlyZXR1cm4gUm5bemVdLmFiYnI7cmV0dXJuIiJ9LGEwLmVyYVllYXI9ZnVuY3Rpb24gRG4oKXt2YXIgemUsVnQsaG4sUm4sdHI9dGhpcy5sb2NhbGVEYXRhKCkuZXJhcygpO2Zvcih6ZT0wLFZ0PXRyLmxlbmd0aDt6ZTxWdDsrK3plKWlmKGhuPXRyW3plXS5zaW5jZTw9dHJbemVdLnVudGls''@;'; put 'put ''PzE6LTEsUm49dGhpcy5jbG9uZSgpLnN0YXJ0T2YoImRheSIpLnZhbHVlT2YoKSx0clt6ZV0uc2luY2U8PVJuJiZSbjw9dHJbemVdLnVudGlsfHx0clt6ZV0udW50aWw8PVJuJiZSbjw9dHJbemVdLnNpbmNlKXJldHVybih0aGlzLnllYXIoKS1CKHRyW3plXS5zaW5jZSkueWVhcigpKSpobit0''@;'; put 'put ''clt6ZV0ub2Zmc2V0O3JldHVybiB0aGlzLnllYXIoKX0sYTAueWVhcj1ubCxhMC5pc0xlYXBZZWFyPWZ1bmN0aW9uIGdsKCl7cmV0dXJuIHl0KHRoaXMueWVhcigpKX0sYTAud2Vla1llYXI9ZnVuY3Rpb24gWmYoemUpe3JldHVybiBhYi5jYWxsKHRoaXMsemUsdGhpcy53ZWVrKCksdGhpcy53''@;'; put 'put ''ZWVrZGF5KCksdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93LHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRveSl9LGEwLmlzb1dlZWtZZWFyPWZ1bmN0aW9uIFVsKHplKXtyZXR1cm4gYWIuY2FsbCh0aGlzLHplLHRoaXMuaXNvV2VlaygpLHRoaXMuaXNvV2Vla2RheSgpLDEsNCl9LGEwLnF1''@;'; put 'put ''YXJ0ZXI9YTAucXVhcnRlcnM9ZnVuY3Rpb24gQWQoemUpe3JldHVybiBudWxsPT16ZT9NYXRoLmNlaWwoKHRoaXMubW9udGgoKSsxKS8zKTp0aGlzLm1vbnRoKDMqKHplLTEpK3RoaXMubW9udGgoKSUzKX0sYTAubW9udGg9RW8sYTAuZGF5c0luTW9udGg9ZnVuY3Rpb24gcW8oKXtyZXR1cm4g''@;'; put 'put ''aWkodGhpcy55ZWFyKCksdGhpcy5tb250aCgpKX0sYTAud2Vlaz1hMC53ZWVrcz1mdW5jdGlvbiBYMCh6ZSl7dmFyIFZ0PXRoaXMubG9jYWxlRGF0YSgpLndlZWsodGhpcyk7cmV0dXJuIG51bGw9PXplP1Z0OnRoaXMuYWRkKDcqKHplLVZ0KSwiZCIpfSxhMC5pc29XZWVrPWEwLmlzb1dlZWtz''@;'; put 'put ''PWZ1bmN0aW9uIHVhKHplKXt2YXIgVnQ9cmwodGhpcywxLDQpLndlZWs7cmV0dXJuIG51bGw9PXplP1Z0OnRoaXMuYWRkKDcqKHplLVZ0KSwiZCIpfSxhMC53ZWVrc0luWWVhcj1mdW5jdGlvbiBJdSgpe3ZhciB6ZT10aGlzLmxvY2FsZURhdGEoKS5fd2VlaztyZXR1cm4gX2kodGhpcy55ZWFy''@;'; put 'put ''KCksemUuZG93LHplLmRveSl9LGEwLndlZWtzSW5XZWVrWWVhcj1mdW5jdGlvbiBBcigpe3ZhciB6ZT10aGlzLmxvY2FsZURhdGEoKS5fd2VlaztyZXR1cm4gX2kodGhpcy53ZWVrWWVhcigpLHplLmRvdyx6ZS5kb3kpfSxhMC5pc29XZWVrc0luWWVhcj1mdW5jdGlvbiB6Zigpe3JldHVybiBf''@;'; put 'put ''aSh0aGlzLnllYXIoKSwxLDQpfSxhMC5pc29XZWVrc0luSVNPV2Vla1llYXI9ZnVuY3Rpb24gRjIoKXtyZXR1cm4gX2kodGhpcy5pc29XZWVrWWVhcigpLDEsNCl9LGEwLmRhdGU9dzIsYTAuZGF5PWEwLmRheXM9ZnVuY3Rpb24gczEoemUpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVs''@;'; put 'put ''bCE9emU/dGhpczpOYU47dmFyIFZ0PXRoaXMuX2lzVVRDP3RoaXMuX2QuZ2V0VVRDRGF5KCk6dGhpcy5fZC5nZXREYXkoKTtyZXR1cm4gbnVsbCE9emU/KHplPWZ1bmN0aW9uIGowKHplLFZ0KXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHplP3plOmlzTmFOKHplKT8ibnVtYmVyIj09dHlwZW9m''@;'; put 'put ''KHplPVZ0LndlZWtkYXlzUGFyc2UoemUpKT96ZTpudWxsOnBhcnNlSW50KHplLDEwKX0oemUsdGhpcy5sb2NhbGVEYXRhKCkpLHRoaXMuYWRkKHplLVZ0LCJkIikpOlZ0fSxhMC53ZWVrZGF5PWZ1bmN0aW9uIFowKHplKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGwhPXplP3RoaXM6''@;'; put 'put ''TmFOO3ZhciBWdD0odGhpcy5kYXkoKSs3LXRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdyklNztyZXR1cm4gbnVsbD09emU/VnQ6dGhpcy5hZGQoemUtVnQsImQiKX0sYTAuaXNvV2Vla2RheT1mdW5jdGlvbiBmaSh6ZSl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBudWxsIT16ZT90aGlz''@;'; put 'put ''Ok5hTjtpZihudWxsIT16ZSl7dmFyIFZ0PWZ1bmN0aW9uIEJsKHplLFZ0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHplP1Z0LndlZWtkYXlzUGFyc2UoemUpJTd8fDc6aXNOYU4oemUpP251bGw6emV9KHplLHRoaXMubG9jYWxlRGF0YSgpKTtyZXR1cm4gdGhpcy5kYXkodGhpcy5kYXkoKSU3''@;'; put 'put ''P1Z0OlZ0LTcpfXJldHVybiB0aGlzLmRheSgpfHw3fSxhMC5kYXlPZlllYXI9ZnVuY3Rpb24gZW0oemUpe3ZhciBWdD1NYXRoLnJvdW5kKCh0aGlzLmNsb25lKCkuc3RhcnRPZigiZGF5IiktdGhpcy5jbG9uZSgpLnN0YXJ0T2YoInllYXIiKSkvODY0ZTUpKzE7cmV0dXJuIG51bGw9PXplP1Z0''@;'; put 'put ''OnRoaXMuYWRkKHplLVZ0LCJkIil9LGEwLmhvdXI9YTAuaG91cnM9TmMsYTAubWludXRlPWEwLm1pbnV0ZXM9eWQsYTAuc2Vjb25kPWEwLnNlY29uZHM9S3AsYTAubWlsbGlzZWNvbmQ9YTAubWlsbGlzZWNvbmRzPUk4LGEwLnV0Y09mZnNldD1mdW5jdGlvbiBHcCh6ZSxWdCxobil7dmFyIHRy''@;'; put 'put ''LFJuPXRoaXMuX29mZnNldHx8MDtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGwhPXplP3RoaXM6TmFOO2lmKG51bGwhPXplKXtpZigic3RyaW5nIj09dHlwZW9mIHplKXtpZihudWxsPT09KHplPXM5KE50LHplKSkpcmV0dXJuIHRoaXN9ZWxzZSBNYXRoLmFicyh6ZSk8MTYmJiFobiYm''@;'; put 'put ''KHplKj02MCk7cmV0dXJuIXRoaXMuX2lzVVRDJiZWdCYmKHRyPXdoKHRoaXMpKSx0aGlzLl9vZmZzZXQ9emUsdGhpcy5faXNVVEM9ITAsbnVsbCE9dHImJnRoaXMuYWRkKHRyLCJtIiksUm4hPT16ZSYmKCFWdHx8dGhpcy5fY2hhbmdlSW5Qcm9ncmVzcz9FNCh0aGlzLFFzKHplLVJuLCJtIiks''@;'; put 'put ''MSwhMSk6dGhpcy5fY2hhbmdlSW5Qcm9ncmVzc3x8KHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3M9ITAsQi51cGRhdGVPZmZzZXQodGhpcywhMCksdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcz1udWxsKSksdGhpc31yZXR1cm4gdGhpcy5faXNVVEM/Um46d2godGhpcyl9LGEwLnV0Yz1mdW5jdGlvbiBj''@;'; put 'put ''OSh6ZSl7cmV0dXJuIHRoaXMudXRjT2Zmc2V0KDAsemUpfSxhMC5sb2NhbD1mdW5jdGlvbiBJMih6ZSl7cmV0dXJuIHRoaXMuX2lzVVRDJiYodGhpcy51dGNPZmZzZXQoMCx6ZSksdGhpcy5faXNVVEM9ITEsemUmJnRoaXMuc3VidHJhY3Qod2godGhpcyksIm0iKSksdGhpc30sYTAucGFyc2Va''@;'; put 'put ''b25lPWZ1bmN0aW9uIHVmKCl7aWYobnVsbCE9dGhpcy5fdHptKXRoaXMudXRjT2Zmc2V0KHRoaXMuX3R6bSwhMSwhMCk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIHRoaXMuX2kpe3ZhciB6ZT1zOShLbix0aGlzLl9pKTtudWxsIT16ZT90aGlzLnV0Y09mZnNldCh6ZSk6dGhpcy51dGNPZmZz''@;'; put 'put ''ZXQoMCwhMCl9cmV0dXJuIHRoaXN9LGEwLmhhc0FsaWduZWRIb3VyT2Zmc2V0PWZ1bmN0aW9uIFVnKHplKXtyZXR1cm4hIXRoaXMuaXNWYWxpZCgpJiYoemU9emU/a3MoemUpLnV0Y09mZnNldCgpOjAsKHRoaXMudXRjT2Zmc2V0KCktemUpJTYwPT0wKX0sYTAuaXNEU1Q9ZnVuY3Rpb24gamYo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy51dGNPZmZzZXQoKT50aGlzLmNsb25lKCkubW9udGgoMCkudXRjT2Zmc2V0KCl8fHRoaXMudXRjT2Zmc2V0KCk+dGhpcy5jbG9uZSgpLm1vbnRoKDUpLnV0Y09mZnNldCgpfSxhMC5pc0xvY2FsPWZ1bmN0aW9uIEQyKCl7cmV0dXJuISF0aGlzLmlzVmFsaWQoKSYmIXRo''@;'; put 'put ''aXMuX2lzVVRDfSxhMC5pc1V0Y09mZnNldD1mdW5jdGlvbiBmOSgpe3JldHVybiEhdGhpcy5pc1ZhbGlkKCkmJnRoaXMuX2lzVVRDfSxhMC5pc1V0Yz1uYixhMC5pc1VUQz1uYixhMC56b25lQWJicj1mdW5jdGlvbiBDaCgpe3JldHVybiB0aGlzLl9pc1VUQz8iVVRDIjoiIn0sYTAuem9uZU5h''@;'; put 'put ''bWU9ZnVuY3Rpb24gd2QoKXtyZXR1cm4gdGhpcy5faXNVVEM/IkNvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lIjoiIn0sYTAuZGF0ZXM9VGUoImRhdGVzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBkYXRlIGluc3RlYWQuIix3MiksYTAubW9udGhzPVRlKCJtb250aHMgYWNjZXNzb3Ig''@;'; put 'put ''aXMgZGVwcmVjYXRlZC4gVXNlIG1vbnRoIGluc3RlYWQiLEVvKSxhMC55ZWFycz1UZSgieWVhcnMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIHllYXIgaW5zdGVhZCIsbmwpLGEwLnpvbmU9VGUoIm1vbWVudCgpLnpvbmUgaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudCgpLnV0Y09mZnNl''@;'; put 'put ''dCBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL3pvbmUvIixmdW5jdGlvbiB1OSh6ZSxWdCl7cmV0dXJuIG51bGwhPXplPygic3RyaW5nIiE9dHlwZW9mIHplJiYoemU9LXplKSx0aGlzLnV0Y09mZnNldCh6ZSxWdCksdGhpcyk6LXRoaXMudXRjT2Zmc2V0''@;'; put 'put ''KCl9KSxhMC5pc0RTVFNoaWZ0ZWQ9VGUoImlzRFNUU2hpZnRlZCBpcyBkZXByZWNhdGVkLiBTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9kc3Qtc2hpZnRlZC8gZm9yIG1vcmUgaW5mb3JtYXRpb24iLGZ1bmN0aW9uIHRiKCl7aWYoIXJlKHRoaXMuX2lzRFNUU2hp''@;'; put 'put ''ZnRlZCkpcmV0dXJuIHRoaXMuX2lzRFNUU2hpZnRlZDt2YXIgVnQsemU9e307cmV0dXJuIEFlKHplLHRoaXMpLCh6ZT1UdSh6ZSkpLl9hPyhWdD16ZS5faXNVVEM/dGUoemUuX2EpOmtzKHplLl9hKSx0aGlzLl9pc0RTVFNoaWZ0ZWQ9dGhpcy5pc1ZhbGlkKCkmJmZ1bmN0aW9uIHpwKHplLFZ0''@;'; put 'put ''LGhuKXt2YXIgWWksUm49TWF0aC5taW4oemUubGVuZ3RoLFZ0Lmxlbmd0aCksdHI9TWF0aC5hYnMoemUubGVuZ3RoLVZ0Lmxlbmd0aCksZWk9MDtmb3IoWWk9MDtZaTxSbjtZaSsrKShobiYmemVbWWldIT09VnRbWWldfHwhaG4mJkp0KHplW1lpXSkhPT1KdChWdFtZaV0pKSYmZWkrKztyZXR1''@;'; put 'put ''cm4gZWkrdHJ9KHplLl9hLFZ0LnRvQXJyYXkoKSk+MCk6dGhpcy5faXNEU1RTaGlmdGVkPSExLHRoaXMuX2lzRFNUU2hpZnRlZH0pO3ZhciB0YT1uZS5wcm90b3R5cGU7ZnVuY3Rpb24gajEoemUsVnQsaG4sUm4pe3ZhciB0cj11MSgpLGVpPXRlKCkuc2V0KFJuLFZ0KTtyZXR1cm4gdHJbaG5d''@;'; put 'put ''KGVpLHplKX1mdW5jdGlvbiBjMSh6ZSxWdCxobil7aWYoYWUoemUpJiYoVnQ9emUsemU9dm9pZCAwKSx6ZT16ZXx8IiIsbnVsbCE9VnQpcmV0dXJuIGoxKHplLFZ0LGhuLCJtb250aCIpO3ZhciBSbix0cj1bXTtmb3IoUm49MDtSbjwxMjtSbisrKXRyW1JuXT1qMSh6ZSxSbixobiwibW9udGgi''@;'; put 'put ''KTtyZXR1cm4gdHJ9ZnVuY3Rpb24gaGYoemUsVnQsaG4sUm4peyJib29sZWFuIj09dHlwZW9mIHplPyhhZShWdCkmJihobj1WdCxWdD12b2lkIDApLFZ0PVZ0fHwiIik6KGhuPVZ0PXplLHplPSExLGFlKFZ0KSYmKGhuPVZ0LFZ0PXZvaWQgMCksVnQ9VnR8fCIiKTt2YXIgWWksdHI9dTEoKSxl''@;'; put 'put ''aT16ZT90ci5fd2Vlay5kb3c6MCxkYT1bXTtpZihudWxsIT1obilyZXR1cm4gajEoVnQsKGhuK2VpKSU3LFJuLCJkYXkiKTtmb3IoWWk9MDtZaTw3O1lpKyspZGFbWWldPWoxKFZ0LChZaStlaSklNyxSbiwiZGF5Iik7cmV0dXJuIGRhfXRhLmNhbGVuZGFyPWZ1bmN0aW9uIFYoemUsVnQsaG4p''@;'; put 'put ''e3ZhciBSbj10aGlzLl9jYWxlbmRhclt6ZV18fHRoaXMuX2NhbGVuZGFyLnNhbWVFbHNlO3JldHVybiBPKFJuKT9Sbi5jYWxsKFZ0LGhuKTpSbn0sdGEubG9uZ0RhdGVGb3JtYXQ9ZnVuY3Rpb24gbXQoemUpe3ZhciBWdD10aGlzLl9sb25nRGF0ZUZvcm1hdFt6ZV0saG49dGhpcy5fbG9uZ0Rh''@;'; put 'put ''dGVGb3JtYXRbemUudG9VcHBlckNhc2UoKV07cmV0dXJuIFZ0fHwhaG4/VnQ6KHRoaXMuX2xvbmdEYXRlRm9ybWF0W3plXT1obi5tYXRjaChTKS5tYXAoZnVuY3Rpb24oUm4pe3JldHVybiJNTU1NIj09PVJufHwiTU0iPT09Um58fCJERCI9PT1Sbnx8ImRkZGQiPT09Um4/Um4uc2xpY2UoMSk6''@;'; put 'put ''Um59KS5qb2luKCIiKSx0aGlzLl9sb25nRGF0ZUZvcm1hdFt6ZV0pfSx0YS5pbnZhbGlkRGF0ZT1mdW5jdGlvbiBBdCgpe3JldHVybiB0aGlzLl9pbnZhbGlkRGF0ZX0sdGEub3JkaW5hbD1mdW5jdGlvbiBvbih6ZSl7cmV0dXJuIHRoaXMuX29yZGluYWwucmVwbGFjZSgiJWQiLHplKX0sdGEu''@;'; put 'put ''cHJlcGFyc2U9SnMsdGEucG9zdGZvcm1hdD1Kcyx0YS5yZWxhdGl2ZVRpbWU9ZnVuY3Rpb24gdHQoemUsVnQsaG4sUm4pe3ZhciB0cj10aGlzLl9yZWxhdGl2ZVRpbWVbaG5dO3JldHVybiBPKHRyKT90cih6ZSxWdCxobixSbik6dHIucmVwbGFjZSgvJWQvaSx6ZSl9LHRhLnBhc3RGdXR1cmU9''@;'; put 'put ''ZnVuY3Rpb24gZXQoemUsVnQpe3ZhciBobj10aGlzLl9yZWxhdGl2ZVRpbWVbemU+MD8iZnV0dXJlIjoicGFzdCJdO3JldHVybiBPKGhuKT9obihWdCk6aG4ucmVwbGFjZSgvJXMvaSxWdCl9LHRhLnNldD1mdW5jdGlvbiB6KHplKXt2YXIgVnQsaG47Zm9yKGhuIGluIHplKVEoemUsaG4pJiYo''@;'; put 'put ''TyhWdD16ZVtobl0pP3RoaXNbaG5dPVZ0OnRoaXNbIl8iK2huXT1WdCk7dGhpcy5fY29uZmlnPXplLHRoaXMuX2RheU9mTW9udGhPcmRpbmFsUGFyc2VMZW5pZW50PW5ldyBSZWdFeHAoKHRoaXMuX2RheU9mTW9udGhPcmRpbmFsUGFyc2Uuc291cmNlfHx0aGlzLl9vcmRpbmFsUGFyc2Uuc291''@;'; put 'put ''cmNlKSsifCIrL1xkezEsMn0vLnNvdXJjZSl9LHRhLmVyYXM9ZnVuY3Rpb24geXMoemUsVnQpe3ZhciBobixSbix0cixlaT10aGlzLl9lcmFzfHx1MSgiZW4iKS5fZXJhcztmb3IoaG49MCxSbj1laS5sZW5ndGg7aG48Um47Kytobilzd2l0Y2goInN0cmluZyI9PXR5cGVvZiBlaVtobl0uc2lu''@;'; put 'put ''Y2UmJih0cj1CKGVpW2huXS5zaW5jZSkuc3RhcnRPZigiZGF5IiksZWlbaG5dLnNpbmNlPXRyLnZhbHVlT2YoKSksdHlwZW9mIGVpW2huXS51bnRpbCl7Y2FzZSJ1bmRlZmluZWQiOmVpW2huXS51bnRpbD0xLzA7YnJlYWs7Y2FzZSJzdHJpbmciOnRyPUIoZWlbaG5dLnVudGlsKS5zdGFydE9m''@;'; put 'put ''KCJkYXkiKS52YWx1ZU9mKCksZWlbaG5dLnVudGlsPXRyLnZhbHVlT2YoKX1yZXR1cm4gZWl9LHRhLmVyYXNQYXJzZT1mdW5jdGlvbiBCTSh6ZSxWdCxobil7dmFyIFJuLHRyLFlpLGRhLHphLGVpPXRoaXMuZXJhcygpO2Zvcih6ZT16ZS50b1VwcGVyQ2FzZSgpLFJuPTAsdHI9ZWkubGVuZ3Ro''@;'; put 'put ''O1JuPHRyOysrUm4paWYoWWk9ZWlbUm5dLm5hbWUudG9VcHBlckNhc2UoKSxkYT1laVtSbl0uYWJici50b1VwcGVyQ2FzZSgpLHphPWVpW1JuXS5uYXJyb3cudG9VcHBlckNhc2UoKSxobilzd2l0Y2goVnQpe2Nhc2UiTiI6Y2FzZSJOTiI6Y2FzZSJOTk4iOmlmKGRhPT09emUpcmV0dXJuIGVp''@;'; put 'put ''W1JuXTticmVhaztjYXNlIk5OTk4iOmlmKFlpPT09emUpcmV0dXJuIGVpW1JuXTticmVhaztjYXNlIk5OTk5OIjppZih6YT09PXplKXJldHVybiBlaVtSbl19ZWxzZSBpZihbWWksZGEsemFdLmluZGV4T2YoemUpPj0wKXJldHVybiBlaVtSbl19LHRhLmVyYXNDb252ZXJ0WWVhcj1mdW5jdGlv''@;'; put 'put ''biBQTSh6ZSxWdCl7dmFyIGhuPXplLnNpbmNlPD16ZS51bnRpbD8xOi0xO3JldHVybiB2b2lkIDA9PT1WdD9CKHplLnNpbmNlKS55ZWFyKCk6Qih6ZS5zaW5jZSkueWVhcigpKyhWdC16ZS5vZmZzZXQpKmhufSx0YS5lcmFzQWJiclJlZ2V4PWZ1bmN0aW9uIGVvKHplKXtyZXR1cm4gUSh0aGlz''@;'; put 'put ''LCJfZXJhc0FiYnJSZWdleCIpfHxKcC5jYWxsKHRoaXMpLHplP3RoaXMuX2VyYXNBYmJyUmVnZXg6dGhpcy5fZXJhc1JlZ2V4fSx0YS5lcmFzTmFtZVJlZ2V4PWZ1bmN0aW9uIGNmKHplKXtyZXR1cm4gUSh0aGlzLCJfZXJhc05hbWVSZWdleCIpfHxKcC5jYWxsKHRoaXMpLHplP3RoaXMuX2Vy''@;'; put 'put ''YXNOYW1lUmVnZXg6dGhpcy5fZXJhc1JlZ2V4fSx0YS5lcmFzTmFycm93UmVnZXg9ZnVuY3Rpb24gRDAoemUpe3JldHVybiBRKHRoaXMsIl9lcmFzTmFycm93UmVnZXgiKXx8SnAuY2FsbCh0aGlzKSx6ZT90aGlzLl9lcmFzTmFycm93UmVnZXg6dGhpcy5fZXJhc1JlZ2V4fSx0YS5tb250aHM9''@;'; put 'put ''ZnVuY3Rpb24gZDAoemUsVnQpe3JldHVybiB6ZT9FZSh0aGlzLl9tb250aHMpP3RoaXMuX21vbnRoc1t6ZS5tb250aCgpXTp0aGlzLl9tb250aHNbKHRoaXMuX21vbnRocy5pc0Zvcm1hdHx8TWkpLnRlc3QoVnQpPyJmb3JtYXQiOiJzdGFuZGFsb25lIl1bemUubW9udGgoKV06RWUodGhpcy5f''@;'; put 'put ''bW9udGhzKT90aGlzLl9tb250aHM6dGhpcy5fbW9udGhzLnN0YW5kYWxvbmV9LHRhLm1vbnRoc1Nob3J0PWZ1bmN0aW9uIG0wKHplLFZ0KXtyZXR1cm4gemU/RWUodGhpcy5fbW9udGhzU2hvcnQpP3RoaXMuX21vbnRoc1Nob3J0W3plLm1vbnRoKCldOnRoaXMuX21vbnRoc1Nob3J0W01pLnRl''@;'; put 'put ''c3QoVnQpPyJmb3JtYXQiOiJzdGFuZGFsb25lIl1bemUubW9udGgoKV06RWUodGhpcy5fbW9udGhzU2hvcnQpP3RoaXMuX21vbnRoc1Nob3J0OnRoaXMuX21vbnRoc1Nob3J0LnN0YW5kYWxvbmV9LHRhLm1vbnRoc1BhcnNlPWZ1bmN0aW9uIERpKHplLFZ0LGhuKXt2YXIgUm4sdHIsZWk7aWYo''@;'; put 'put ''dGhpcy5fbW9udGhzUGFyc2VFeGFjdClyZXR1cm4gRzAuY2FsbCh0aGlzLHplLFZ0LGhuKTtmb3IodGhpcy5fbW9udGhzUGFyc2V8fCh0aGlzLl9tb250aHNQYXJzZT1bXSx0aGlzLl9sb25nTW9udGhzUGFyc2U9W10sdGhpcy5fc2hvcnRNb250aHNQYXJzZT1bXSksUm49MDtSbjwxMjtSbisr''@;'; put 'put ''KXtpZih0cj10ZShbMmUzLFJuXSksaG4mJiF0aGlzLl9sb25nTW9udGhzUGFyc2VbUm5dJiYodGhpcy5fbG9uZ01vbnRoc1BhcnNlW1JuXT1uZXcgUmVnRXhwKCJeIit0aGlzLm1vbnRocyh0ciwiIikucmVwbGFjZSgiLiIsIiIpKyIkIiwiaSIpLHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbUm5d''@;'; put 'put ''PW5ldyBSZWdFeHAoIl4iK3RoaXMubW9udGhzU2hvcnQodHIsIiIpLnJlcGxhY2UoIi4iLCIiKSsiJCIsImkiKSksIWhuJiYhdGhpcy5fbW9udGhzUGFyc2VbUm5dJiYoZWk9Il4iK3RoaXMubW9udGhzKHRyLCIiKSsifF4iK3RoaXMubW9udGhzU2hvcnQodHIsIiIpLHRoaXMuX21vbnRoc1Bh''@;'; put 'put ''cnNlW1JuXT1uZXcgUmVnRXhwKGVpLnJlcGxhY2UoIi4iLCIiKSwiaSIpKSxobiYmIk1NTU0iPT09VnQmJnRoaXMuX2xvbmdNb250aHNQYXJzZVtSbl0udGVzdCh6ZSkpcmV0dXJuIFJuO2lmKGhuJiYiTU1NIj09PVZ0JiZ0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW1JuXS50ZXN0KHplKSlyZXR1''@;'; put 'put ''cm4gUm47aWYoIWhuJiZ0aGlzLl9tb250aHNQYXJzZVtSbl0udGVzdCh6ZSkpcmV0dXJuIFJufX0sdGEubW9udGhzUmVnZXg9ZnVuY3Rpb24gbGwoemUpe3JldHVybiB0aGlzLl9tb250aHNQYXJzZUV4YWN0PyhRKHRoaXMsIl9tb250aHNSZWdleCIpfHxRaS5jYWxsKHRoaXMpLHplP3RoaXMu''@;'; put 'put ''X21vbnRoc1N0cmljdFJlZ2V4OnRoaXMuX21vbnRoc1JlZ2V4KTooUSh0aGlzLCJfbW9udGhzUmVnZXgiKXx8KHRoaXMuX21vbnRoc1JlZ2V4PW4wKSx0aGlzLl9tb250aHNTdHJpY3RSZWdleCYmemU/dGhpcy5fbW9udGhzU3RyaWN0UmVnZXg6dGhpcy5fbW9udGhzUmVnZXgpfSx0YS5tb250''@;'; put 'put ''aHNTaG9ydFJlZ2V4PWZ1bmN0aW9uIGNhKHplKXtyZXR1cm4gdGhpcy5fbW9udGhzUGFyc2VFeGFjdD8oUSh0aGlzLCJfbW9udGhzUmVnZXgiKXx8UWkuY2FsbCh0aGlzKSx6ZT90aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4OnRoaXMuX21vbnRoc1Nob3J0UmVnZXgpOihRKHRoaXMsIl9t''@;'; put 'put ''b250aHNTaG9ydFJlZ2V4Iil8fCh0aGlzLl9tb250aHNTaG9ydFJlZ2V4PW8wKSx0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4JiZ6ZT90aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4OnRoaXMuX21vbnRoc1Nob3J0UmVnZXgpfSx0YS53ZWVrPWZ1bmN0aW9uIG91KHplKXtyZXR1cm4g''@;'; put 'put ''cmwoemUsdGhpcy5fd2Vlay5kb3csdGhpcy5fd2Vlay5kb3kpLndlZWt9LHRhLmZpcnN0RGF5T2ZZZWFyPWZ1bmN0aW9uIEJzKCl7cmV0dXJuIHRoaXMuX3dlZWsuZG95fSx0YS5maXJzdERheU9mV2Vlaz1mdW5jdGlvbiBVMCgpe3JldHVybiB0aGlzLl93ZWVrLmRvd30sdGEud2Vla2RheXM9''@;'; put 'put ''ZnVuY3Rpb24gbWMoemUsVnQpe3ZhciBobj1FZSh0aGlzLl93ZWVrZGF5cyk/dGhpcy5fd2Vla2RheXM6dGhpcy5fd2Vla2RheXNbemUmJiEwIT09emUmJnRoaXMuX3dlZWtkYXlzLmlzRm9ybWF0LnRlc3QoVnQpPyJmb3JtYXQiOiJzdGFuZGFsb25lIl07cmV0dXJuITA9PT16ZT92bihobix0''@;'; put 'put ''aGlzLl93ZWVrLmRvdyk6emU/aG5bemUuZGF5KCldOmhufSx0YS53ZWVrZGF5c01pbj1mdW5jdGlvbiBQbCh6ZSl7cmV0dXJuITA9PT16ZT92bih0aGlzLl93ZWVrZGF5c01pbix0aGlzLl93ZWVrLmRvdyk6emU/dGhpcy5fd2Vla2RheXNNaW5bemUuZGF5KCldOnRoaXMuX3dlZWtkYXlzTWlu''@;'; put 'put ''fSx0YS53ZWVrZGF5c1Nob3J0PWZ1bmN0aW9uIHgyKHplKXtyZXR1cm4hMD09PXplP3ZuKHRoaXMuX3dlZWtkYXlzU2hvcnQsdGhpcy5fd2Vlay5kb3cpOnplP3RoaXMuX3dlZWtkYXlzU2hvcnRbemUuZGF5KCldOnRoaXMuX3dlZWtkYXlzU2hvcnR9LHRhLndlZWtkYXlzUGFyc2U9ZnVuY3Rp''@;'; put 'put ''b24gUTIoemUsVnQsaG4pe3ZhciBSbix0cixlaTtpZih0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpcmV0dXJuIGQzLmNhbGwodGhpcyx6ZSxWdCxobik7Zm9yKHRoaXMuX3dlZWtkYXlzUGFyc2V8fCh0aGlzLl93ZWVrZGF5c1BhcnNlPVtdLHRoaXMuX21pbldlZWtkYXlzUGFyc2U9W10sdGhp''@;'; put 'put ''cy5fc2hvcnRXZWVrZGF5c1BhcnNlPVtdLHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlPVtdKSxSbj0wO1JuPDc7Um4rKyl7aWYodHI9dGUoWzJlMywxXSkuZGF5KFJuKSxobiYmIXRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW1JuXSYmKHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW1JuXT1uZXcgUmVn''@;'; put 'put ''RXhwKCJeIit0aGlzLndlZWtkYXlzKHRyLCIiKS5yZXBsYWNlKCIuIiwiXFwuPyIpKyIkIiwiaSIpLHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtSbl09bmV3IFJlZ0V4cCgiXiIrdGhpcy53ZWVrZGF5c1Nob3J0KHRyLCIiKS5yZXBsYWNlKCIuIiwiXFwuPyIpKyIkIiwiaSIpLHRoaXMuX21p''@;'; put 'put ''bldlZWtkYXlzUGFyc2VbUm5dPW5ldyBSZWdFeHAoIl4iK3RoaXMud2Vla2RheXNNaW4odHIsIiIpLnJlcGxhY2UoIi4iLCJcXC4/IikrIiQiLCJpIikpLHRoaXMuX3dlZWtkYXlzUGFyc2VbUm5dfHwoZWk9Il4iK3RoaXMud2Vla2RheXModHIsIiIpKyJ8XiIrdGhpcy53ZWVrZGF5c1Nob3J0''@;'; put 'put ''KHRyLCIiKSsifF4iK3RoaXMud2Vla2RheXNNaW4odHIsIiIpLHRoaXMuX3dlZWtkYXlzUGFyc2VbUm5dPW5ldyBSZWdFeHAoZWkucmVwbGFjZSgiLiIsIiIpLCJpIikpLGhuJiYiZGRkZCI9PT1WdCYmdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbUm5dLnRlc3QoemUpKXJldHVybiBSbjtpZiho''@;'; put 'put ''biYmImRkZCI9PT1WdCYmdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW1JuXS50ZXN0KHplKSlyZXR1cm4gUm47aWYoaG4mJiJkZCI9PT1WdCYmdGhpcy5fbWluV2Vla2RheXNQYXJzZVtSbl0udGVzdCh6ZSkpcmV0dXJuIFJuO2lmKCFobiYmdGhpcy5fd2Vla2RheXNQYXJzZVtSbl0udGVzdCh6''@;'; put 'put ''ZSkpcmV0dXJuIFJufX0sdGEud2Vla2RheXNSZWdleD1mdW5jdGlvbiBSMCh6ZSl7cmV0dXJuIHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdD8oUSh0aGlzLCJfd2Vla2RheXNSZWdleCIpfHxkcy5jYWxsKHRoaXMpLHplP3RoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNS''@;'; put 'put ''ZWdleCk6KFEodGhpcywiX3dlZWtkYXlzUmVnZXgiKXx8KHRoaXMuX3dlZWtkYXlzUmVnZXg9QjEpLHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXgmJnplP3RoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNSZWdleCl9LHRhLndlZWtkYXlzU2hvcnRSZWdleD1mdW5jdGlv''@;'; put 'put ''biBtbyh6ZSl7cmV0dXJuIHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdD8oUSh0aGlzLCJfd2Vla2RheXNSZWdleCIpfHxkcy5jYWxsKHRoaXMpLHplP3RoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleDp0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXgpOihRKHRoaXMsIl93ZWVrZGF5c1Nob3J0''@;'; put 'put ''UmVnZXgiKXx8KHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleD1hdSksdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4JiZ6ZT90aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4KX0sdGEud2Vla2RheXNNaW5SZWdleD1mdW5jdGlvbiBycyh6''@;'; put 'put ''ZSl7cmV0dXJuIHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdD8oUSh0aGlzLCJfd2Vla2RheXNSZWdleCIpfHxkcy5jYWxsKHRoaXMpLHplP3RoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNNaW5SZWdleCk6KFEodGhpcywiX3dlZWtkYXlzTWluUmVnZXgiKXx8KHRo''@;'; put 'put ''aXMuX3dlZWtkYXlzTWluUmVnZXg9UDEpLHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXgmJnplP3RoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNNaW5SZWdleCl9LHRhLmlzUE09ZnVuY3Rpb24gTmYoemUpe3JldHVybiJwIj09PSh6ZSsiIikudG9Mb3dlckNh''@;'; put 'put ''c2UoKS5jaGFyQXQoMCl9LHRhLm1lcmlkaWVtPWZ1bmN0aW9uIGNvKHplLFZ0LGhuKXtyZXR1cm4gemU+MTE/aG4/InBtIjoiUE0iOmhuPyJhbSI6IkFNIn0sSDEoImVuIix7ZXJhczpbe3NpbmNlOiIwMDAxLTAxLTAxIix1bnRpbDoxLzAsb2Zmc2V0OjEsbmFtZToiQW5ubyBEb21pbmkiLG5h''@;'; put 'put ''cnJvdzoiQUQiLGFiYnI6IkFEIn0se3NpbmNlOiIwMDAwLTEyLTMxIix1bnRpbDotMS8wLG9mZnNldDoxLG5hbWU6IkJlZm9yZSBDaHJpc3QiLG5hcnJvdzoiQkMiLGFiYnI6IkJDIn1dLGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0odGh8c3R8bmR8cmQpLyxvcmRpbmFsOmZ1bmN0''@;'; put 'put ''aW9uKHplKXt2YXIgVnQ9emUlMTA7cmV0dXJuIHplKygxPT09SnQoemUlMTAwLzEwKT8idGgiOjE9PT1WdD8ic3QiOjI9PT1WdD8ibmQiOjM9PT1WdD8icmQiOiJ0aCIpfX0pLEIubGFuZz1UZSgibW9tZW50LmxhbmcgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGUgaW5zdGVhZC4i''@;'; put 'put ''LEgxKSxCLmxhbmdEYXRhPVRlKCJtb21lbnQubGFuZ0RhdGEgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGVEYXRhIGluc3RlYWQuIix1MSk7dmFyIEdjPU1hdGguYWJzO2Z1bmN0aW9uIHg0KHplLFZ0LGhuLFJuKXt2YXIgdHI9UXMoVnQsaG4pO3JldHVybiB6ZS5fbWlsbGlzZWNv''@;'; put 'put ''bmRzKz1Sbip0ci5fbWlsbGlzZWNvbmRzLHplLl9kYXlzKz1Sbip0ci5fZGF5cyx6ZS5fbW9udGhzKz1Sbip0ci5fbW9udGhzLHplLl9idWJibGUoKX1mdW5jdGlvbiBMOCh6ZSl7cmV0dXJuIHplPDA/TWF0aC5mbG9vcih6ZSk6TWF0aC5jZWlsKHplKX1mdW5jdGlvbiAkcCh6ZSl7cmV0dXJu''@;'; put 'put ''IDQ4MDAqemUvMTQ2MDk3fWZ1bmN0aW9uIE84KHplKXtyZXR1cm4gMTQ2MDk3KnplLzQ4MDB9ZnVuY3Rpb24ga2goemUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLmFzKHplKX19dmFyIGU2PWtoKCJtcyIpLHQ2PWtoKCJzIiksUjg9a2goIm0iKSxBYz1raCgiaCIpLEdmPWtoKCJk''@;'; put 'put ''Iiksc2I9a2goInciKSxiZD1raCgiTSIpLHY5PWtoKCJRIiksdG09a2goInkiKTtmdW5jdGlvbiBKdSh6ZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpP3RoaXMuX2RhdGFbemVdOk5hTn19dmFyIFQ0PUp1KCJtaWxsaXNlY29uZHMiKSxyNj1KdSgic2Vjb25kcyIp''@;'; put 'put ''LHViPUp1KCJtaW51dGVzIiksQTk9SnUoImhvdXJzIiksSTQ9SnUoImRheXMiKSxWTT1KdSgibW9udGhzIiksZmw9SnUoInllYXJzIik7dmFyIFh1PU1hdGgucm91bmQsRHU9e3NzOjQ0LHM6NDUsbTo0NSxoOjIyLGQ6MjYsdzpudWxsLE06MTF9O2Z1bmN0aW9uIGczKHplLFZ0LGhuLFJuLHRy''@;'; put 'put ''KXtyZXR1cm4gdHIucmVsYXRpdmVUaW1lKFZ0fHwxLCEhaG4semUsUm4pfXZhciBQOD1NYXRoLmFicztmdW5jdGlvbiBXZih6ZSl7cmV0dXJuKHplPjApLSh6ZTwwKXx8K3plfWZ1bmN0aW9uIHk5KCl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlk''@;'; put 'put ''RGF0ZSgpO3ZhciBSbix0cixlaSxZaSx6YSxGcyxLdSxIcyx6ZT1QOCh0aGlzLl9taWxsaXNlY29uZHMpLzFlMyxWdD1QOCh0aGlzLl9kYXlzKSxobj1QOCh0aGlzLl9tb250aHMpLGRhPXRoaXMuYXNTZWNvbmRzKCk7cmV0dXJuIGRhPyhSbj1qdCh6ZS82MCksdHI9anQoUm4vNjApLHplJT02''@;'; put 'put ''MCxSbiU9NjAsZWk9anQoaG4vMTIpLGhuJT0xMixZaT16ZT96ZS50b0ZpeGVkKDMpLnJlcGxhY2UoL1wuPzArJC8sIiIpOiIiLHphPWRhPDA/Ii0iOiIiLEZzPVdmKHRoaXMuX21vbnRocykhPT1XZihkYSk/Ii0iOiIiLEt1PVdmKHRoaXMuX2RheXMpIT09V2YoZGEpPyItIjoiIixIcz1XZih0''@;'; put 'put ''aGlzLl9taWxsaXNlY29uZHMpIT09V2YoZGEpPyItIjoiIix6YSsiUCIrKGVpP0ZzK2VpKyJZIjoiIikrKGhuP0ZzK2huKyJNIjoiIikrKFZ0P0t1K1Z0KyJEIjoiIikrKHRyfHxSbnx8emU/IlQiOiIiKSsodHI/SHMrdHIrIkgiOiIiKSsoUm4/SHMrUm4rIk0iOiIiKSsoemU/SHMrWWkrIlMi''@;'; put 'put ''OiIiKSk6IlAwRCJ9dmFyIGJsPVpwLnByb3RvdHlwZTtyZXR1cm4gYmwuaXNWYWxpZD1mdW5jdGlvbiBUTSgpe3JldHVybiB0aGlzLl9pc1ZhbGlkfSxibC5hYnM9ZnVuY3Rpb24gY3UoKXt2YXIgemU9dGhpcy5fZGF0YTtyZXR1cm4gdGhpcy5fbWlsbGlzZWNvbmRzPUdjKHRoaXMuX21pbGxp''@;'; put 'put ''c2Vjb25kcyksdGhpcy5fZGF5cz1HYyh0aGlzLl9kYXlzKSx0aGlzLl9tb250aHM9R2ModGhpcy5fbW9udGhzKSx6ZS5taWxsaXNlY29uZHM9R2MoemUubWlsbGlzZWNvbmRzKSx6ZS5zZWNvbmRzPUdjKHplLnNlY29uZHMpLHplLm1pbnV0ZXM9R2MoemUubWludXRlcyksemUuaG91cnM9R2Mo''@;'; put 'put ''emUuaG91cnMpLHplLm1vbnRocz1HYyh6ZS5tb250aHMpLHplLnllYXJzPUdjKHplLnllYXJzKSx0aGlzfSxibC5hZGQ9ZnVuY3Rpb24gZGYoemUsVnQpe3JldHVybiB4NCh0aGlzLHplLFZ0LDEpfSxibC5zdWJ0cmFjdD1mdW5jdGlvbiBQcih6ZSxWdCl7cmV0dXJuIHg0KHRoaXMsemUsVnQs''@;'; put 'put ''LTEpfSxibC5hcz1mdW5jdGlvbiBxcCh6ZSl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBOYU47dmFyIFZ0LGhuLFJuPXRoaXMuX21pbGxpc2Vjb25kcztpZigibW9udGgiPT09KHplPUN0KHplKSl8fCJxdWFydGVyIj09PXplfHwieWVhciI9PT16ZSlzd2l0Y2goVnQ9dGhpcy5fZGF5cytS''@;'; put 'put ''bi84NjRlNSxobj10aGlzLl9tb250aHMrJHAoVnQpLHplKXtjYXNlIm1vbnRoIjpyZXR1cm4gaG47Y2FzZSJxdWFydGVyIjpyZXR1cm4gaG4vMztjYXNlInllYXIiOnJldHVybiBobi8xMn1lbHNlIHN3aXRjaChWdD10aGlzLl9kYXlzK01hdGgucm91bmQoTzgodGhpcy5fbW9udGhzKSksemUp''@;'; put 'put ''e2Nhc2Uid2VlayI6cmV0dXJuIFZ0LzcrUm4vNjA0OGU1O2Nhc2UiZGF5IjpyZXR1cm4gVnQrUm4vODY0ZTU7Y2FzZSJob3VyIjpyZXR1cm4gMjQqVnQrUm4vMzZlNTtjYXNlIm1pbnV0ZSI6cmV0dXJuIDE0NDAqVnQrUm4vNmU0O2Nhc2Uic2Vjb25kIjpyZXR1cm4gODY0MDAqVnQrUm4vMWUz''@;'; put 'put ''O2Nhc2UibWlsbGlzZWNvbmQiOnJldHVybiBNYXRoLmZsb29yKDg2NGU1KlZ0KStSbjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biB1bml0ICIremUpfX0sYmwuYXNNaWxsaXNlY29uZHM9ZTYsYmwuYXNTZWNvbmRzPXQ2LGJsLmFzTWludXRlcz1SOCxibC5hc0hvdXJzPUFjLGJs''@;'; put 'put ''LmFzRGF5cz1HZixibC5hc1dlZWtzPXNiLGJsLmFzTW9udGhzPWJkLGJsLmFzUXVhcnRlcnM9djksYmwuYXNZZWFycz10bSxibC52YWx1ZU9mPWZ1bmN0aW9uIHBmKCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpP3RoaXMuX21pbGxpc2Vjb25kcys4NjRlNSp0aGlzLl9kYXlzK3RoaXMuX21vbnRo''@;'; put 'put ''cyUxMioyNTkyZTYrMzE1MzZlNipKdCh0aGlzLl9tb250aHMvMTIpOk5hTn0sYmwuX2J1YmJsZT1mdW5jdGlvbiBOTSgpe3ZhciB0cixlaSxZaSxkYSx6YSx6ZT10aGlzLl9taWxsaXNlY29uZHMsVnQ9dGhpcy5fZGF5cyxobj10aGlzLl9tb250aHMsUm49dGhpcy5fZGF0YTtyZXR1cm4gemU+''@;'; put 'put ''PTAmJlZ0Pj0wJiZobj49MHx8emU8PTAmJlZ0PD0wJiZobjw9MHx8KHplKz04NjRlNSpMOChPOChobikrVnQpLFZ0PTAsaG49MCksUm4ubWlsbGlzZWNvbmRzPXplJTFlMyx0cj1qdCh6ZS8xZTMpLFJuLnNlY29uZHM9dHIlNjAsZWk9anQodHIvNjApLFJuLm1pbnV0ZXM9ZWklNjAsWWk9anQo''@;'; put 'put ''ZWkvNjApLFJuLmhvdXJzPVlpJTI0LFZ0Kz1qdChZaS8yNCksaG4rPXphPWp0KCRwKFZ0KSksVnQtPUw4KE84KHphKSksZGE9anQoaG4vMTIpLGhuJT0xMixSbi5kYXlzPVZ0LFJuLm1vbnRocz1obixSbi55ZWFycz1kYSx0aGlzfSxibC5jbG9uZT1mdW5jdGlvbiBCOCgpe3JldHVybiBRcyh0''@;'; put 'put ''aGlzKX0sYmwuZ2V0PWZ1bmN0aW9uIG42KHplKXtyZXR1cm4gemU9Q3QoemUpLHRoaXMuaXNWYWxpZCgpP3RoaXNbemUrInMiXSgpOk5hTn0sYmwubWlsbGlzZWNvbmRzPVQ0LGJsLnNlY29uZHM9cjYsYmwubWludXRlcz11YixibC5ob3Vycz1BOSxibC5kYXlzPUk0LGJsLndlZWtzPWZ1bmN0''@;'; put 'put ''aW9uIG5tKCl7cmV0dXJuIGp0KHRoaXMuZGF5cygpLzcpfSxibC5tb250aHM9Vk0sYmwueWVhcnM9ZmwsYmwuaHVtYW5pemU9ZnVuY3Rpb24gY2IoemUsVnQpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTt2YXIgdHIsZWksaG49ITEs''@;'; put 'put ''Um49RHU7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB6ZSYmKFZ0PXplLHplPSExKSwiYm9vbGVhbiI9PXR5cGVvZiB6ZSYmKGhuPXplKSwib2JqZWN0Ij09dHlwZW9mIFZ0JiYoUm49T2JqZWN0LmFzc2lnbih7fSxEdSxWdCksbnVsbCE9VnQucyYmbnVsbD09VnQuc3MmJihSbi5zcz1WdC5zLTEp''@;'; put 'put ''KSxlaT1mdW5jdGlvbiBpNih6ZSxWdCxobixSbil7dmFyIHRyPVFzKHplKS5hYnMoKSxlaT1YdSh0ci5hcygicyIpKSxZaT1YdSh0ci5hcygibSIpKSxkYT1YdSh0ci5hcygiaCIpKSx6YT1YdSh0ci5hcygiZCIpKSxGcz1YdSh0ci5hcygiTSIpKSxLdT1YdSh0ci5hcygidyIpKSxIcz1YdSh0''@;'; put 'put ''ci5hcygieSIpKSxXYz1laTw9aG4uc3MmJlsicyIsZWldfHxlaTxobi5zJiZbInNzIixlaV18fFlpPD0xJiZbIm0iXXx8WWk8aG4ubSYmWyJtbSIsWWldfHxkYTw9MSYmWyJoIl18fGRhPGhuLmgmJlsiaGgiLGRhXXx8emE8PTEmJlsiZCJdfHx6YTxobi5kJiZbImRkIix6YV07cmV0dXJuIG51''@;'; put 'put ''bGwhPWhuLncmJihXYz1XY3x8S3U8PTEmJlsidyJdfHxLdTxobi53JiZbInd3IixLdV0pLChXYz1XY3x8RnM8PTEmJlsiTSJdfHxGczxobi5NJiZbIk1NIixGc118fEhzPD0xJiZbInkiXXx8WyJ5eSIsSHNdKVsyXT1WdCxXY1szXT0remU+MCxXY1s0XT1SbixnMy5hcHBseShudWxsLFdjKX0o''@;'; put 'put ''dGhpcywhaG4sUm4sdHI9dGhpcy5sb2NhbGVEYXRhKCkpLGhuJiYoZWk9dHIucGFzdEZ1dHVyZSgrdGhpcyxlaSkpLHRyLnBvc3Rmb3JtYXQoZWkpfSxibC50b0lTT1N0cmluZz15OSxibC50b1N0cmluZz15OSxibC50b0pTT049eTksYmwubG9jYWxlPWR0LGJsLmxvY2FsZURhdGE9UHQsYmwu''@;'; put 'put ''dG9Jc29TdHJpbmc9VGUoInRvSXNvU3RyaW5nKCkgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0b0lTT1N0cmluZygpIGluc3RlYWQgKG5vdGljZSB0aGUgY2FwaXRhbHMpIix5OSksYmwubGFuZz1JdCxEZSgiWCIsMCwwLCJ1bml4IiksRGUoIngiLDAsMCwidmFsdWVPZiIpLHRuKCJ4Iixw''@;'; put 'put ''biksdG4oIlgiLC9bKy1dP1xkKyhcLlxkezEsM30pPy8pLG1uKCJYIixmdW5jdGlvbih6ZSxWdCxobil7aG4uX2Q9bmV3IERhdGUoMWUzKnBhcnNlRmxvYXQoemUpKX0pLG1uKCJ4IixmdW5jdGlvbih6ZSxWdCxobil7aG4uX2Q9bmV3IERhdGUoSnQoemUpKX0pLEIudmVyc2lvbj0iMi4yOS40''@;'; put 'put ''IixmdW5jdGlvbiBFKHplKXttZT16ZX0oa3MpLEIuZm49YTAsQi5taW49ZnVuY3Rpb24gdmgoKXtyZXR1cm4gcXcoImlzQmVmb3JlIixbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSl9LEIubWF4PWZ1bmN0aW9uIFM0KCl7cmV0dXJuIHF3KCJpc0FmdGVyIixbXS5zbGljZS5jYWxsKGFyZ3Vt''@;'; put 'put ''ZW50cywwKSl9LEIubm93PWZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93P0RhdGUubm93KCk6K25ldyBEYXRlfSxCLnV0Yz10ZSxCLnVuaXg9ZnVuY3Rpb24gRmwoemUpe3JldHVybiBrcygxZTMqemUpfSxCLm1vbnRocz1mdW5jdGlvbiBaYyh6ZSxWdCl7cmV0dXJuIGMxKHplLFZ0LCJtb250''@;'; put 'put ''aHMiKX0sQi5pc0RhdGU9WSxCLmxvY2FsZT1IMSxCLmludmFsaWQ9Y2UsQi5kdXJhdGlvbj1RcyxCLmlzTW9tZW50PVNlLEIud2Vla2RheXM9ZnVuY3Rpb24gWjEoemUsVnQsaG4pe3JldHVybiBoZih6ZSxWdCxobiwid2Vla2RheXMiKX0sQi5wYXJzZVpvbmU9ZnVuY3Rpb24gRDgoKXtyZXR1''@;'; put 'put ''cm4ga3MuYXBwbHkobnVsbCxhcmd1bWVudHMpLnBhcnNlWm9uZSgpfSxCLmxvY2FsZURhdGE9dTEsQi5pc0R1cmF0aW9uPWw5LEIubW9udGhzU2hvcnQ9ZnVuY3Rpb24gc3MoemUsVnQpe3JldHVybiBjMSh6ZSxWdCwibW9udGhzU2hvcnQiKX0sQi53ZWVrZGF5c01pbj1mdW5jdGlvbiBsYih6''@;'; put 'put ''ZSxWdCxobil7cmV0dXJuIGhmKHplLFZ0LGhuLCJ3ZWVrZGF5c01pbiIpfSxCLmRlZmluZUxvY2FsZT1KMixCLnVwZGF0ZUxvY2FsZT1mdW5jdGlvbiBDMCh6ZSxWdCl7aWYobnVsbCE9VnQpe3ZhciBobixSbix0cj1DNDtudWxsIT1yMlt6ZV0mJm51bGwhPXIyW3plXS5wYXJlbnRMb2NhbGU/''@;'; put 'put ''cjJbemVdLnNldChlZShyMlt6ZV0uX2NvbmZpZyxWdCkpOihudWxsIT0oUm49UmkoemUpKSYmKHRyPVJuLl9jb25maWcpLFZ0PWVlKHRyLFZ0KSxudWxsPT1SbiYmKFZ0LmFiYnI9emUpLChobj1uZXcgbmUoVnQpKS5wYXJlbnRMb2NhbGU9cjJbemVdLHIyW3plXT1obiksSDEoemUpfWVsc2Ug''@;'; put 'put ''bnVsbCE9cjJbemVdJiYobnVsbCE9cjJbemVdLnBhcmVudExvY2FsZT8ocjJbemVdPXIyW3plXS5wYXJlbnRMb2NhbGUsemU9PT1IMSgpJiZIMSh6ZSkpOm51bGwhPXIyW3plXSYmZGVsZXRlIHIyW3plXSk7cmV0dXJuIHIyW3plXX0sQi5sb2NhbGVzPWZ1bmN0aW9uIG1sKCl7cmV0dXJuIHgo''@;'; put 'put ''cjIpfSxCLndlZWtkYXlzU2hvcnQ9ZnVuY3Rpb24gemMoemUsVnQsaG4pe3JldHVybiBoZih6ZSxWdCxobiwid2Vla2RheXNTaG9ydCIpfSxCLm5vcm1hbGl6ZVVuaXRzPUN0LEIucmVsYXRpdmVUaW1lUm91bmRpbmc9ZnVuY3Rpb24gbzYoemUpe3JldHVybiB2b2lkIDA9PT16ZT9YdToiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgemUmJihYdT16ZSwhMCl9LEIucmVsYXRpdmVUaW1lVGhyZXNob2xkPWZ1bmN0aW9uIGE2KHplLFZ0KXtyZXR1cm4gdm9pZCAwIT09RHVbemVdJiYodm9pZCAwPT09VnQ/RHVbemVdOihEdVt6ZV09VnQsInMiPT09emUmJihEdS5zcz1WdC0xKSwhMCkpfSxCLmNhbGVu''@;'; put 'put ''ZGFyRm9ybWF0PWZ1bmN0aW9uIFVwKHplLFZ0KXt2YXIgaG49emUuZGlmZihWdCwiZGF5cyIsITApO3JldHVybiBobjwtNj8ic2FtZUVsc2UiOmhuPC0xPyJsYXN0V2VlayI6aG48MD8ibGFzdERheSI6aG48MT8ic2FtZURheSI6aG48Mj8ibmV4dERheSI6aG48Nz8ibmV4dFdlZWsiOiJzYW1l''@;'; put 'put ''RWxzZSJ9LEIucHJvdG90eXBlPWEwLEIuSFRNTDVfRk1UPXtEQVRFVElNRV9MT0NBTDoiWVlZWS1NTS1ERFRISDptbSIsREFURVRJTUVfTE9DQUxfU0VDT05EUzoiWVlZWS1NTS1ERFRISDptbTpzcyIsREFURVRJTUVfTE9DQUxfTVM6IllZWVktTU0tRERUSEg6bW06c3MuU1NTIixEQVRFOiJZ''@;'; put 'put ''WVlZLU1NLUREIixUSU1FOiJISDptbSIsVElNRV9TRUNPTkRTOiJISDptbTpzcyIsVElNRV9NUzoiSEg6bW06c3MuU1NTIixXRUVLOiJHR0dHLVtXXVdXIixNT05USDoiWVlZWS1NTSJ9LEJ9KCl9LDUyOTk5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg4Nzk3Nyk7SmUuY2Vy''@;'; put 'put ''dGlmaWNhdGU9TCgxMjM5MCk7dmFyIEI9bWUuZGVmaW5lKCJSU0FQcml2YXRlS2V5IixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ2ZXJzaW9uIikuaW50KCksdGhpcy5rZXkoIm1vZHVsdXMiKS5pbnQoKSx0aGlzLmtleSgicHVibGljRXhwb25lbnQiKS5pbnQoKSx0aGlz''@;'; put 'put ''LmtleSgicHJpdmF0ZUV4cG9uZW50IikuaW50KCksdGhpcy5rZXkoInByaW1lMSIpLmludCgpLHRoaXMua2V5KCJwcmltZTIiKS5pbnQoKSx0aGlzLmtleSgiZXhwb25lbnQxIikuaW50KCksdGhpcy5rZXkoImV4cG9uZW50MiIpLmludCgpLHRoaXMua2V5KCJjb2VmZmljaWVudCIpLmludCgp''@;'; put 'put ''KX0pO0plLlJTQVByaXZhdGVLZXk9Qjt2YXIgRT1tZS5kZWZpbmUoIlJTQVB1YmxpY0tleSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgibW9kdWx1cyIpLmludCgpLHRoaXMua2V5KCJwdWJsaWNFeHBvbmVudCIpLmludCgpKX0pO0plLlJTQVB1YmxpY0tleT1FO3ZhciBF''@;'; put 'put ''ZT1tZS5kZWZpbmUoIlN1YmplY3RQdWJsaWNLZXlJbmZvIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJhbGdvcml0aG0iKS51c2UoVSksdGhpcy5rZXkoInN1YmplY3RQdWJsaWNLZXkiKS5iaXRzdHIoKSl9KTtKZS5QdWJsaWNLZXk9RWU7dmFyIFU9bWUuZGVmaW5lKCJB''@;'; put 'put ''bGdvcml0aG1JZGVudGlmaWVyIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJhbGdvcml0aG0iKS5vYmppZCgpLHRoaXMua2V5KCJub25lIikubnVsbF8oKS5vcHRpb25hbCgpLHRoaXMua2V5KCJjdXJ2ZSIpLm9iamlkKCkub3B0aW9uYWwoKSx0aGlzLmtleSgicGFyYW1z''@;'; put 'put ''Iikuc2VxKCkub2JqKHRoaXMua2V5KCJwIikuaW50KCksdGhpcy5rZXkoInEiKS5pbnQoKSx0aGlzLmtleSgiZyIpLmludCgpKS5vcHRpb25hbCgpKX0pLFE9bWUuZGVmaW5lKCJQcml2YXRlS2V5SW5mbyIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmlu''@;'; put 'put ''dCgpLHRoaXMua2V5KCJhbGdvcml0aG0iKS51c2UoVSksdGhpcy5rZXkoInN1YmplY3RQcml2YXRlS2V5Iikub2N0c3RyKCkpfSk7SmUuUHJpdmF0ZUtleT1RO3ZhciBqPW1lLmRlZmluZSgiRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5r''@;'; put 'put ''ZXkoImFsZ29yaXRobSIpLnNlcSgpLm9iaih0aGlzLmtleSgiaWQiKS5vYmppZCgpLHRoaXMua2V5KCJkZWNyeXB0Iikuc2VxKCkub2JqKHRoaXMua2V5KCJrZGUiKS5zZXEoKS5vYmoodGhpcy5rZXkoImlkIikub2JqaWQoKSx0aGlzLmtleSgia2RlcGFyYW1zIikuc2VxKCkub2JqKHRoaXMu''@;'; put 'put ''a2V5KCJzYWx0Iikub2N0c3RyKCksdGhpcy5rZXkoIml0ZXJzIikuaW50KCkpKSx0aGlzLmtleSgiY2lwaGVyIikuc2VxKCkub2JqKHRoaXMua2V5KCJhbGdvIikub2JqaWQoKSx0aGlzLmtleSgiaXYiKS5vY3RzdHIoKSkpKSx0aGlzLmtleSgic3ViamVjdFByaXZhdGVLZXkiKS5vY3RzdHIo''@;'; put 'put ''KSl9KTtKZS5FbmNyeXB0ZWRQcml2YXRlS2V5PWo7dmFyIHJlPW1lLmRlZmluZSgiRFNBUHJpdmF0ZUtleSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmludCgpLHRoaXMua2V5KCJwIikuaW50KCksdGhpcy5rZXkoInEiKS5pbnQoKSx0aGlzLmtleSgi''@;'; put 'put ''ZyIpLmludCgpLHRoaXMua2V5KCJwdWJfa2V5IikuaW50KCksdGhpcy5rZXkoInByaXZfa2V5IikuaW50KCkpfSk7SmUuRFNBUHJpdmF0ZUtleT1yZSxKZS5EU0FwYXJhbT1tZS5kZWZpbmUoIkRTQXBhcmFtIixmdW5jdGlvbigpe3RoaXMuaW50KCl9KTt2YXIgYWU9bWUuZGVmaW5lKCJFQ1By''@;'; put 'put ''aXZhdGVLZXkiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInZlcnNpb24iKS5pbnQoKSx0aGlzLmtleSgicHJpdmF0ZUtleSIpLm9jdHN0cigpLHRoaXMua2V5KCJwYXJhbWV0ZXJzIikub3B0aW9uYWwoKS5leHBsaWNpdCgwKS51c2UoWSksdGhpcy5rZXkoInB1YmxpY0tl''@;'; put 'put ''eSIpLm9wdGlvbmFsKCkuZXhwbGljaXQoMSkuYml0c3RyKCkpfSk7SmUuRUNQcml2YXRlS2V5PWFlO3ZhciBZPW1lLmRlZmluZSgiRUNQYXJhbWV0ZXJzIixmdW5jdGlvbigpe3RoaXMuY2hvaWNlKHtuYW1lZEN1cnZlOnRoaXMub2JqaWQoKX0pfSk7SmUuc2lnbmF0dXJlPW1lLmRlZmluZSgi''@;'; put 'put ''c2lnbmF0dXJlIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJyIikuaW50KCksdGhpcy5rZXkoInMiKS5pbnQoKSl9KX0sMTIzOTA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDg3OTc3KSxCPW1lLmRlZmluZSgiVGltZSIsZnVuY3Rpb24oKXt0aGlzLmNo''@;'; put 'put ''b2ljZSh7dXRjVGltZTp0aGlzLnV0Y3RpbWUoKSxnZW5lcmFsVGltZTp0aGlzLmdlbnRpbWUoKX0pfSksRT1tZS5kZWZpbmUoIkF0dHJpYnV0ZVR5cGVWYWx1ZSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidHlwZSIpLm9iamlkKCksdGhpcy5rZXkoInZhbHVlIikuYW55''@;'; put 'put ''KCkpfSksRWU9bWUuZGVmaW5lKCJBbGdvcml0aG1JZGVudGlmaWVyIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJhbGdvcml0aG0iKS5vYmppZCgpLHRoaXMua2V5KCJwYXJhbWV0ZXJzIikub3B0aW9uYWwoKSx0aGlzLmtleSgiY3VydmUiKS5vYmppZCgpLm9wdGlvbmFs''@;'; put 'put ''KCkpfSksVT1tZS5kZWZpbmUoIlN1YmplY3RQdWJsaWNLZXlJbmZvIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJhbGdvcml0aG0iKS51c2UoRWUpLHRoaXMua2V5KCJzdWJqZWN0UHVibGljS2V5IikuYml0c3RyKCkpfSksUT1tZS5kZWZpbmUoIlJlbGF0aXZlRGlzdGlu''@;'; put 'put ''Z3Vpc2hlZE5hbWUiLGZ1bmN0aW9uKCl7dGhpcy5zZXRvZihFKX0pLGo9bWUuZGVmaW5lKCJSRE5TZXF1ZW5jZSIsZnVuY3Rpb24oKXt0aGlzLnNlcW9mKFEpfSkscmU9bWUuZGVmaW5lKCJOYW1lIixmdW5jdGlvbigpe3RoaXMuY2hvaWNlKHtyZG5TZXF1ZW5jZTp0aGlzLnVzZShqKX0pfSks''@;'; put 'put ''YWU9bWUuZGVmaW5lKCJWYWxpZGl0eSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgibm90QmVmb3JlIikudXNlKEIpLHRoaXMua2V5KCJub3RBZnRlciIpLnVzZShCKSl9KSxZPW1lLmRlZmluZSgiRXh0ZW5zaW9uIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMu''@;'; put 'put ''a2V5KCJleHRuSUQiKS5vYmppZCgpLHRoaXMua2V5KCJjcml0aWNhbCIpLmJvb2woKS5kZWYoITEpLHRoaXMua2V5KCJleHRuVmFsdWUiKS5vY3RzdHIoKSl9KSxXPW1lLmRlZmluZSgiVEJTQ2VydGlmaWNhdGUiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInZlcnNpb24i''@;'; put 'put ''KS5leHBsaWNpdCgwKS5pbnQoKS5vcHRpb25hbCgpLHRoaXMua2V5KCJzZXJpYWxOdW1iZXIiKS5pbnQoKSx0aGlzLmtleSgic2lnbmF0dXJlIikudXNlKEVlKSx0aGlzLmtleSgiaXNzdWVyIikudXNlKHJlKSx0aGlzLmtleSgidmFsaWRpdHkiKS51c2UoYWUpLHRoaXMua2V5KCJzdWJqZWN0''@;'; put 'put ''IikudXNlKHJlKSx0aGlzLmtleSgic3ViamVjdFB1YmxpY0tleUluZm8iKS51c2UoVSksdGhpcy5rZXkoImlzc3VlclVuaXF1ZUlEIikuaW1wbGljaXQoMSkuYml0c3RyKCkub3B0aW9uYWwoKSx0aGlzLmtleSgic3ViamVjdFVuaXF1ZUlEIikuaW1wbGljaXQoMikuYml0c3RyKCkub3B0aW9u''@;'; put 'put ''YWwoKSx0aGlzLmtleSgiZXh0ZW5zaW9ucyIpLmV4cGxpY2l0KDMpLnNlcW9mKFkpLm9wdGlvbmFsKCkpfSksTj1tZS5kZWZpbmUoIlg1MDlDZXJ0aWZpY2F0ZSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidGJzQ2VydGlmaWNhdGUiKS51c2UoVyksdGhpcy5rZXkoInNp''@;'; put 'put ''Z25hdHVyZUFsZ29yaXRobSIpLnVzZShFZSksdGhpcy5rZXkoInNpZ25hdHVyZVZhbHVlIikuYml0c3RyKCkpfSk7WGUuZXhwb3J0cz1OfSw2NTI2OTooWGUsSmUsTCk9Pnt2YXIgbWU9L1Byb2MtVHlwZTogNCxFTkNSWVBURURbXG5ccl0rREVLLUluZm86IEFFUy0oKD86MTI4KXwoPzoxOTIp''@;'; put 'put ''fCg/OjI1NikpLUNCQywoWzAtOUEtSF0rKVtcblxyXSsoWzAtOUEtelxuXHIrLz1dKylbXG5ccl0rL20sQj0vXi0tLS0tQkVHSU4gKCg/Oi4qPyBLRVkpfENFUlRJRklDQVRFKS0tLS0tL20sRT0vXi0tLS0tQkVHSU4gKCg/Oi4qPyBLRVkpfENFUlRJRklDQVRFKS0tLS0tKFswLTlBLXpcblxy''@;'; put 'put ''Ky89XSspLS0tLS1FTkQgXDEtLS0tLSQvbSxFZT1MKDQwMzQ3KSxVPUwoODQzMzApLFE9TCg3MzUwMikuQnVmZmVyO1hlLmV4cG9ydHM9ZnVuY3Rpb24oaixyZSl7dmFyIFcsYWU9ai50b1N0cmluZygpLFk9YWUubWF0Y2gobWUpO2lmKFkpe3ZhciB0ZT0iYWVzIitZWzFdLEs9US5mcm9tKFlb''@;'; put 'put ''Ml0sImhleCIpLEo9US5mcm9tKFlbM10ucmVwbGFjZSgvW1xyXG5dL2csIiIpLCJiYXNlNjQiKSxzZT1FZShyZSxLLnNsaWNlKDAsOCkscGFyc2VJbnQoWVsxXSwxMCkpLmtleSxvZT1bXSxjZT1VLmNyZWF0ZURlY2lwaGVyaXYodGUsc2UsSyk7b2UucHVzaChjZS51cGRhdGUoSikpLG9lLnB1''@;'; put 'put ''c2goY2UuZmluYWwoKSksVz1RLmNvbmNhdChvZSl9ZWxzZXt2YXIgTj1hZS5tYXRjaChFKTtXPVEuZnJvbShOWzJdLnJlcGxhY2UoL1tcclxuXS9nLCIiKSwiYmFzZTY0Iil9cmV0dXJue3RhZzphZS5tYXRjaChCKVsxXSxkYXRhOld9fX0sMjI3NzI6KFhlLEplLEwpPT57dmFyIG1lPUwoNTI5''@;'; put 'put ''OTkpLEI9TCgyMjU2MiksRT1MKDY1MjY5KSxFZT1MKDg0MzMwKSxVPUwoOTkzNTcpLFE9TCg3MzUwMikuQnVmZmVyO2Z1bmN0aW9uIGooYWUpe3ZhciBZOyJvYmplY3QiPT10eXBlb2YgYWUmJiFRLmlzQnVmZmVyKGFlKSYmKFk9YWUucGFzc3BocmFzZSxhZT1hZS5rZXkpLCJzdHJpbmciPT10''@;'; put 'put ''eXBlb2YgYWUmJihhZT1RLmZyb20oYWUpKTt2YXIgSyxKLFc9RShhZSxZKSxOPVcudGFnLHRlPVcuZGF0YTtzd2l0Y2goTil7Y2FzZSJDRVJUSUZJQ0FURSI6Sj1tZS5jZXJ0aWZpY2F0ZS5kZWNvZGUodGUsImRlciIpLnRic0NlcnRpZmljYXRlLnN1YmplY3RQdWJsaWNLZXlJbmZvO2Nhc2Ui''@;'; put 'put ''UFVCTElDIEtFWSI6c3dpdGNoKEp8fChKPW1lLlB1YmxpY0tleS5kZWNvZGUodGUsImRlciIpKSxLPUouYWxnb3JpdGhtLmFsZ29yaXRobS5qb2luKCIuIikpe2Nhc2UiMS4yLjg0MC4xMTM1NDkuMS4xLjEiOnJldHVybiBtZS5SU0FQdWJsaWNLZXkuZGVjb2RlKEouc3ViamVjdFB1YmxpY0tl''@;'; put 'put ''eS5kYXRhLCJkZXIiKTtjYXNlIjEuMi44NDAuMTAwNDUuMi4xIjpyZXR1cm4gSi5zdWJqZWN0UHJpdmF0ZUtleT1KLnN1YmplY3RQdWJsaWNLZXkse3R5cGU6ImVjIixkYXRhOkp9O2Nhc2UiMS4yLjg0MC4xMDA0MC40LjEiOnJldHVybiBKLmFsZ29yaXRobS5wYXJhbXMucHViX2tleT1tZS5E''@;'; put 'put ''U0FwYXJhbS5kZWNvZGUoSi5zdWJqZWN0UHVibGljS2V5LmRhdGEsImRlciIpLHt0eXBlOiJkc2EiLGRhdGE6Si5hbGdvcml0aG0ucGFyYW1zfTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5rbm93biBrZXkgaWQgIitLKX1jYXNlIkVOQ1JZUFRFRCBQUklWQVRFIEtFWSI6dGU9ZnVuY3Rp''@;'; put 'put ''b24gcmUoYWUsWSl7dmFyIFc9YWUuYWxnb3JpdGhtLmRlY3J5cHQua2RlLmtkZXBhcmFtcy5zYWx0LE49cGFyc2VJbnQoYWUuYWxnb3JpdGhtLmRlY3J5cHQua2RlLmtkZXBhcmFtcy5pdGVycy50b1N0cmluZygpLDEwKSx0ZT1CW2FlLmFsZ29yaXRobS5kZWNyeXB0LmNpcGhlci5hbGdvLmpv''@;'; put 'put ''aW4oIi4iKV0sSz1hZS5hbGdvcml0aG0uZGVjcnlwdC5jaXBoZXIuaXYsSj1hZS5zdWJqZWN0UHJpdmF0ZUtleSxzZT1wYXJzZUludCh0ZS5zcGxpdCgiLSIpWzFdLDEwKS84LG9lPVUucGJrZGYyU3luYyhZLFcsTixzZSwic2hhMSIpLGNlPUVlLmNyZWF0ZURlY2lwaGVyaXYodGUsb2UsSyks''@;'; put 'put ''ZGU9W107cmV0dXJuIGRlLnB1c2goY2UudXBkYXRlKEopKSxkZS5wdXNoKGNlLmZpbmFsKCkpLFEuY29uY2F0KGRlKX0odGU9bWUuRW5jcnlwdGVkUHJpdmF0ZUtleS5kZWNvZGUodGUsImRlciIpLFkpO2Nhc2UiUFJJVkFURSBLRVkiOnN3aXRjaChLPShKPW1lLlByaXZhdGVLZXkuZGVjb2Rl''@;'; put 'put ''KHRlLCJkZXIiKSkuYWxnb3JpdGhtLmFsZ29yaXRobS5qb2luKCIuIikpe2Nhc2UiMS4yLjg0MC4xMTM1NDkuMS4xLjEiOnJldHVybiBtZS5SU0FQcml2YXRlS2V5LmRlY29kZShKLnN1YmplY3RQcml2YXRlS2V5LCJkZXIiKTtjYXNlIjEuMi44NDAuMTAwNDUuMi4xIjpyZXR1cm57Y3VydmU6''@;'; put 'put ''Si5hbGdvcml0aG0uY3VydmUscHJpdmF0ZUtleTptZS5FQ1ByaXZhdGVLZXkuZGVjb2RlKEouc3ViamVjdFByaXZhdGVLZXksImRlciIpLnByaXZhdGVLZXl9O2Nhc2UiMS4yLjg0MC4xMDA0MC40LjEiOnJldHVybiBKLmFsZ29yaXRobS5wYXJhbXMucHJpdl9rZXk9bWUuRFNBcGFyYW0uZGVj''@;'; put 'put ''b2RlKEouc3ViamVjdFByaXZhdGVLZXksImRlciIpLHt0eXBlOiJkc2EiLHBhcmFtczpKLmFsZ29yaXRobS5wYXJhbXN9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIGtleSBpZCAiK0spfWNhc2UiUlNBIFBVQkxJQyBLRVkiOnJldHVybiBtZS5SU0FQdWJsaWNLZXkuZGVjb2Rl''@;'; put 'put ''KHRlLCJkZXIiKTtjYXNlIlJTQSBQUklWQVRFIEtFWSI6cmV0dXJuIG1lLlJTQVByaXZhdGVLZXkuZGVjb2RlKHRlLCJkZXIiKTtjYXNlIkRTQSBQUklWQVRFIEtFWSI6cmV0dXJue3R5cGU6ImRzYSIscGFyYW1zOm1lLkRTQVByaXZhdGVLZXkuZGVjb2RlKHRlLCJkZXIiKX07Y2FzZSJFQyBQ''@;'; put 'put ''UklWQVRFIEtFWSI6cmV0dXJue2N1cnZlOih0ZT1tZS5FQ1ByaXZhdGVLZXkuZGVjb2RlKHRlLCJkZXIiKSkucGFyYW1ldGVycy52YWx1ZSxwcml2YXRlS2V5OnRlLnByaXZhdGVLZXl9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIGtleSB0eXBlICIrTil9fVhlLmV4cG9ydHM9''@;'; put 'put ''aixqLnNpZ25hdHVyZT1tZS5zaWduYXR1cmV9LDk5MzU3OihYZSxKZSxMKT0+e0plLnBia2RmMj1MKDkwNDE1KSxKZS5wYmtkZjJTeW5jPUwoNzc0NzIpfSw5MDQxNTooWGUsSmUsTCk9Pnt2YXIgUSxXLG1lPUwoNzM1MDIpLkJ1ZmZlcixCPUwoNjI2OTcpLEU9TCg3ODg2NyksRWU9TCg3NzQ3''@;'; put 'put ''MiksVT1MKDk0NTY2KSxqPWdsb2JhbC5jcnlwdG8mJmdsb2JhbC5jcnlwdG8uc3VidGxlLHJlPXtzaGE6IlNIQS0xIiwic2hhLTEiOiJTSEEtMSIsc2hhMToiU0hBLTEiLHNoYTI1NjoiU0hBLTI1NiIsInNoYS0yNTYiOiJTSEEtMjU2IixzaGEzODQ6IlNIQS0zODQiLCJzaGEtMzg0IjoiU0hB''@;'; put 'put ''LTM4NCIsInNoYS01MTIiOiJTSEEtNTEyIixzaGE1MTI6IlNIQS01MTIifSxhZT1bXTtmdW5jdGlvbiBOKCl7cmV0dXJuIFd8fChXPWdsb2JhbC5wcm9jZXNzJiZnbG9iYWwucHJvY2Vzcy5uZXh0VGljaz9nbG9iYWwucHJvY2Vzcy5uZXh0VGljazpnbG9iYWwucXVldWVNaWNyb3Rhc2s/Z2xv''@;'; put 'put ''YmFsLnF1ZXVlTWljcm90YXNrOmdsb2JhbC5zZXRJbW1lZGlhdGU/Z2xvYmFsLnNldEltbWVkaWF0ZTpnbG9iYWwuc2V0VGltZW91dCl9ZnVuY3Rpb24gdGUoSixzZSxvZSxjZSxkZSl7cmV0dXJuIGouaW1wb3J0S2V5KCJyYXciLEose25hbWU6IlBCS0RGMiJ9LCExLFsiZGVyaXZlQml0cyJd''@;'; put 'put ''KS50aGVuKGZ1bmN0aW9uKHZlKXtyZXR1cm4gai5kZXJpdmVCaXRzKHtuYW1lOiJQQktERjIiLHNhbHQ6c2UsaXRlcmF0aW9uczpvZSxoYXNoOntuYW1lOmRlfX0sdmUsY2U8PDMpfSkudGhlbihmdW5jdGlvbih2ZSl7cmV0dXJuIG1lLmZyb20odmUpfSl9WGUuZXhwb3J0cz1mdW5jdGlvbihK''@;'; put 'put ''LHNlLG9lLGNlLGRlLHZlKXsiZnVuY3Rpb24iPT10eXBlb2YgZGUmJih2ZT1kZSxkZT12b2lkIDApO3ZhciBBZT1yZVsoZGU9ZGV8fCJzaGExIikudG9Mb3dlckNhc2UoKV07aWYoQWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBnbG9iYWwuUHJvbWlzZSl7aWYoQihvZSxjZSksSj1VKEosRSwiUGFz''@;'; put 'put ''c3dvcmQiKSxzZT1VKHNlLEUsIlNhbHQiKSwiZnVuY3Rpb24iIT10eXBlb2YgdmUpdGhyb3cgbmV3IEVycm9yKCJObyBjYWxsYmFjayBwcm92aWRlZCB0byBwYmtkZjIiKTshZnVuY3Rpb24gSyhKLHNlKXtKLnRoZW4oZnVuY3Rpb24ob2Upe04oKShmdW5jdGlvbigpe3NlKG51bGwsb2UpfSl9''@;'; put 'put ''LGZ1bmN0aW9uKG9lKXtOKCkoZnVuY3Rpb24oKXtzZShvZSl9KX0pfShmdW5jdGlvbiBZKEope2lmKGdsb2JhbC5wcm9jZXNzJiYhZ2xvYmFsLnByb2Nlc3MuYnJvd3Nlcnx8IWp8fCFqLmltcG9ydEtleXx8IWouZGVyaXZlQml0cylyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCExKTtpZih2b2lk''@;'; put 'put ''IDAhPT1hZVtKXSlyZXR1cm4gYWVbSl07dmFyIHNlPXRlKFE9UXx8bWUuYWxsb2MoOCksUSwxMCwxMjgsSikudGhlbihmdW5jdGlvbigpe3JldHVybiEwfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4hMX0pO3JldHVybiBhZVtKXT1zZSxzZX0oQWUpLnRoZW4oZnVuY3Rpb24oa2Upe3JldHVy''@;'; put 'put ''biBrZT90ZShKLHNlLG9lLGNlLEFlKTpFZShKLHNlLG9lLGNlLGRlKX0pLHZlKX1lbHNlIE4oKShmdW5jdGlvbigpe3ZhciBrZTt0cnl7a2U9RWUoSixzZSxvZSxjZSxkZSl9Y2F0Y2goU2Upe3JldHVybiB2ZShTZSl9dmUobnVsbCxrZSl9KX19LDc4ODY3OlhlPT57dmFyIEplO0plPWdsb2Jh''@;'; put 'put ''bC5wcm9jZXNzJiZnbG9iYWwucHJvY2Vzcy5icm93c2VyPyJ1dGYtOCI6Z2xvYmFsLnByb2Nlc3MmJmdsb2JhbC5wcm9jZXNzLnZlcnNpb24/cGFyc2VJbnQocHJvY2Vzcy52ZXJzaW9uLnNwbGl0KCIuIilbMF0uc2xpY2UoMSksMTApPj02PyJ1dGYtOCI6ImJpbmFyeSI6InV0Zi04IixYZS5l''@;'; put 'put ''eHBvcnRzPUplfSw2MjY5NzpYZT0+e3ZhciBKZT1NYXRoLnBvdygyLDMwKS0xO1hlLmV4cG9ydHM9ZnVuY3Rpb24oTCxtZSl7aWYoIm51bWJlciIhPXR5cGVvZiBMKXRocm93IG5ldyBUeXBlRXJyb3IoIkl0ZXJhdGlvbnMgbm90IGEgbnVtYmVyIik7aWYoTDwwKXRocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoIkJhZCBpdGVyYXRpb25zIik7aWYoIm51bWJlciIhPXR5cGVvZiBtZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJLZXkgbGVuZ3RoIG5vdCBhIG51bWJlciIpO2lmKG1lPDB8fG1lPkplfHxtZSE9bWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQmFkIGtleSBsZW5ndGgiKX19LDc3NDcyOihYZSxK''@;'; put 'put ''ZSxMKT0+e3ZhciBtZT1MKDU1NjQwKSxCPUwoNzU2MzQpLEU9TCg5NTI0NCksRWU9TCg3MzUwMikuQnVmZmVyLFU9TCg2MjY5NyksUT1MKDc4ODY3KSxqPUwoOTQ1NjYpLHJlPUVlLmFsbG9jKDEyOCksYWU9e21kNToxNixzaGExOjIwLHNoYTIyNDoyOCxzaGEyNTY6MzIsc2hhMzg0OjQ4LHNo''@;'; put 'put ''YTUxMjo2NCxybWQxNjA6MjAscmlwZW1kMTYwOjIwfTtmdW5jdGlvbiBZKHRlLEssSil7dmFyIHNlPWZ1bmN0aW9uIFcodGUpe3JldHVybiJybWQxNjAiPT09dGV8fCJyaXBlbWQxNjAiPT09dGU/ZnVuY3Rpb24gSihzZSl7cmV0dXJuKG5ldyBCKS51cGRhdGUoc2UpLmRpZ2VzdCgpfToibWQ1''@;'; put 'put ''Ij09PXRlP21lOmZ1bmN0aW9uIEsoc2Upe3JldHVybiBFKHRlKS51cGRhdGUoc2UpLmRpZ2VzdCgpfX0odGUpLG9lPSJzaGE1MTIiPT09dGV8fCJzaGEzODQiPT09dGU/MTI4OjY0O0subGVuZ3RoPm9lP0s9c2UoSyk6Sy5sZW5ndGg8b2UmJihLPUVlLmNvbmNhdChbSyxyZV0sb2UpKTtmb3Io''@;'; put 'put ''dmFyIGNlPUVlLmFsbG9jVW5zYWZlKG9lK2FlW3RlXSksZGU9RWUuYWxsb2NVbnNhZmUob2UrYWVbdGVdKSx2ZT0wO3ZlPG9lO3ZlKyspY2VbdmVdPTU0XktbdmVdLGRlW3ZlXT05Ml5LW3ZlXTt2YXIgQWU9RWUuYWxsb2NVbnNhZmUob2UrSis0KTtjZS5jb3B5KEFlLDAsMCxvZSksdGhpcy5p''@;'; put 'put ''cGFkMT1BZSx0aGlzLmlwYWQyPWNlLHRoaXMub3BhZD1kZSx0aGlzLmFsZz10ZSx0aGlzLmJsb2Nrc2l6ZT1vZSx0aGlzLmhhc2g9c2UsdGhpcy5zaXplPWFlW3RlXX1ZLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24odGUsSyl7cmV0dXJuIHRlLmNvcHkoSyx0aGlzLmJsb2Nrc2l6ZSksdGhpcy5o''@;'; put 'put ''YXNoKEspLmNvcHkodGhpcy5vcGFkLHRoaXMuYmxvY2tzaXplKSx0aGlzLmhhc2godGhpcy5vcGFkKX0sWGUuZXhwb3J0cz1mdW5jdGlvbiBOKHRlLEssSixzZSxvZSl7VShKLHNlKTt2YXIgY2U9bmV3IFkob2U9b2V8fCJzaGExIix0ZT1qKHRlLFEsIlBhc3N3b3JkIiksKEs9aihLLFEsIlNh''@;'; put 'put ''bHQiKSkubGVuZ3RoKSxkZT1FZS5hbGxvY1Vuc2FmZShzZSksdmU9RWUuYWxsb2NVbnNhZmUoSy5sZW5ndGgrNCk7Sy5jb3B5KHZlLDAsMCxLLmxlbmd0aCk7Zm9yKHZhciBBZT0wLGtlPWFlW29lXSxTZT1NYXRoLmNlaWwoc2Uva2UpLEllPTE7SWU8PVNlO0llKyspe3ZlLndyaXRlVUludDMy''@;'; put 'put ''QkUoSWUsSy5sZW5ndGgpO2Zvcih2YXIgVGU9Y2UucnVuKHZlLGNlLmlwYWQxKSxNZT1UZSxoZT0xO2hlPEo7aGUrKyl7TWU9Y2UucnVuKE1lLGNlLmlwYWQyKTtmb3IodmFyIE89MDtPPGtlO08rKylUZVtPXV49TWVbT119VGUuY29weShkZSxBZSksQWUrPWtlfXJldHVybiBkZX19LDk0NTY2''@;'; put 'put ''OihYZSxKZSxMKT0+e3ZhciBtZT1MKDczNTAyKS5CdWZmZXI7WGUuZXhwb3J0cz1mdW5jdGlvbihCLEUsRWUpe2lmKG1lLmlzQnVmZmVyKEIpKXJldHVybiBCO2lmKCJzdHJpbmciPT10eXBlb2YgQilyZXR1cm4gbWUuZnJvbShCLEUpO2lmKEFycmF5QnVmZmVyLmlzVmlldyhCKSlyZXR1cm4g''@;'; put 'put ''bWUuZnJvbShCLmJ1ZmZlcik7dGhyb3cgbmV3IFR5cGVFcnJvcihFZSsiIG11c3QgYmUgYSBzdHJpbmcsIGEgQnVmZmVyLCBhIHR5cGVkIGFycmF5IG9yIGEgRGF0YVZpZXciKX19LDQxMDc4OmZ1bmN0aW9uKFhlLEplLEwpeyFmdW5jdGlvbihtZSxCKXsidXNlIHN0cmljdCI7dmFyIEU7dHJ5''@;'; put 'put ''e0U9TCgxNTQzOSl9Y2F0Y2goRWUpe31YZS5leHBvcnRzPWZ1bmN0aW9uKG1lKXt2YXIgQj0iZnVuY3Rpb24iPT10eXBlb2YgbWUsRT0hIXdpbmRvdy5hZGRFdmVudExpc3RlbmVyLEVlPXdpbmRvdy5kb2N1bWVudCxVPXdpbmRvdy5zZXRUaW1lb3V0LFE9ZnVuY3Rpb24oUCxWLFQsUyl7RT9Q''@;'; put 'put ''LmFkZEV2ZW50TGlzdGVuZXIoVixULCEhUyk6UC5hdHRhY2hFdmVudCgib24iK1YsVCl9LGo9ZnVuY3Rpb24oUCxWLFQsUyl7RT9QLnJlbW92ZUV2ZW50TGlzdGVuZXIoVixULCEhUyk6UC5kZXRhY2hFdmVudCgib24iK1YsVCl9LGFlPWZ1bmN0aW9uKFAsVil7cmV0dXJuLTEhPT0oIiAiK1Au''@;'; put 'put ''Y2xhc3NOYW1lKyIgIikuaW5kZXhPZigiICIrVisiICIpfSxZPWZ1bmN0aW9uKFAsVil7YWUoUCxWKXx8KFAuY2xhc3NOYW1lPSIiPT09UC5jbGFzc05hbWU/VjpQLmNsYXNzTmFtZSsiICIrVil9LFc9ZnVuY3Rpb24oUCxWKXtQLmNsYXNzTmFtZT1mdW5jdGlvbihQKXtyZXR1cm4gUC50cmlt''@;'; put 'put ''P1AudHJpbSgpOlAucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfSgoIiAiK1AuY2xhc3NOYW1lKyIgIikucmVwbGFjZSgiICIrVisiICIsIiAiKSl9LE49ZnVuY3Rpb24oUCl7cmV0dXJuL0FycmF5Ly50ZXN0KE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChQKSl9LHRlPWZ1bmN0aW9u''@;'; put 'put ''KFApe3JldHVybi9EYXRlLy50ZXN0KE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChQKSkmJiFpc05hTihQLmdldFRpbWUoKSl9LEs9ZnVuY3Rpb24oUCl7dmFyIFY9UC5nZXREYXkoKTtyZXR1cm4gMD09PVZ8fDY9PT1WfSxKPWZ1bmN0aW9uKFApe3JldHVybiBQJTQ9PTAmJlAlMTAw''@;'; put 'put ''IT0wfHxQJTQwMD09MH0sc2U9ZnVuY3Rpb24oUCxWKXtyZXR1cm5bMzEsSihQKT8yOToyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV1bVl19LG9lPWZ1bmN0aW9uKFApe3RlKFApJiZQLnNldEhvdXJzKDAsMCwwLDApfSxjZT1mdW5jdGlvbihQLFYpe3JldHVybiBQLmdldFRpbWUo''@;'; put 'put ''KT09PVYuZ2V0VGltZSgpfSxkZT1mdW5jdGlvbihQLFYsVCl7dmFyIFMsRjtmb3IoUyBpbiBWKShGPXZvaWQgMCE9PVBbU10pJiYib2JqZWN0Ij09dHlwZW9mIFZbU10mJm51bGwhPT1WW1NdJiZ2b2lkIDA9PT1WW1NdLm5vZGVOYW1lP3RlKFZbU10pP1QmJihQW1NdPW5ldyBEYXRlKFZbU10u''@;'; put 'put ''Z2V0VGltZSgpKSk6TihWW1NdKT9UJiYoUFtTXT1WW1NdLnNsaWNlKDApKTpQW1NdPWRlKHt9LFZbU10sVCk6KFR8fCFGKSYmKFBbU109VltTXSk7cmV0dXJuIFB9LHZlPWZ1bmN0aW9uKFAsVixUKXt2YXIgUztFZS5jcmVhdGVFdmVudD8oKFM9RWUuY3JlYXRlRXZlbnQoIkhUTUxFdmVudHMi''@;'; put 'put ''KSkuaW5pdEV2ZW50KFYsITAsITEpLFM9ZGUoUyxUKSxQLmRpc3BhdGNoRXZlbnQoUykpOkVlLmNyZWF0ZUV2ZW50T2JqZWN0JiYoUz1FZS5jcmVhdGVFdmVudE9iamVjdCgpLFM9ZGUoUyxUKSxQLmZpcmVFdmVudCgib24iK1YsUykpfSxBZT1mdW5jdGlvbihQKXtyZXR1cm4gUC5tb250aDww''@;'; put 'put ''JiYoUC55ZWFyLT1NYXRoLmNlaWwoTWF0aC5hYnMoUC5tb250aCkvMTIpLFAubW9udGgrPTEyKSxQLm1vbnRoPjExJiYoUC55ZWFyKz1NYXRoLmZsb29yKE1hdGguYWJzKFAubW9udGgpLzEyKSxQLm1vbnRoLT0xMiksUH0sa2U9e2ZpZWxkOm51bGwsYm91bmQ6dm9pZCAwLGFyaWFMYWJlbDoi''@;'; put 'put ''VXNlIHRoZSBhcnJvdyBrZXlzIHRvIHBpY2sgYSBkYXRlIixwb3NpdGlvbjoiYm90dG9tIGxlZnQiLHJlcG9zaXRpb246ITAsZm9ybWF0OiJZWVlZLU1NLUREIix0b1N0cmluZzpudWxsLHBhcnNlOm51bGwsZGVmYXVsdERhdGU6bnVsbCxzZXREZWZhdWx0RGF0ZTohMSxmaXJzdERheTowLGZp''@;'; put 'put ''cnN0V2Vla09mWWVhck1pbkRheXM6NCxmb3JtYXRTdHJpY3Q6ITEsbWluRGF0ZTpudWxsLG1heERhdGU6bnVsbCx5ZWFyUmFuZ2U6MTAsc2hvd1dlZWtOdW1iZXI6ITEscGlja1dob2xlV2VlazohMSxtaW5ZZWFyOjAsbWF4WWVhcjo5OTk5LG1pbk1vbnRoOnZvaWQgMCxtYXhNb250aDp2b2lk''@;'; put 'put ''IDAsc3RhcnRSYW5nZTpudWxsLGVuZFJhbmdlOm51bGwsaXNSVEw6ITEseWVhclN1ZmZpeDoiIixzaG93TW9udGhBZnRlclllYXI6ITEsc2hvd0RheXNJbk5leHRBbmRQcmV2aW91c01vbnRoczohMSxlbmFibGVTZWxlY3Rpb25EYXlzSW5OZXh0QW5kUHJldmlvdXNNb250aHM6ITEsbnVtYmVy''@;'; put 'put ''T2ZNb250aHM6MSxtYWluQ2FsZW5kYXI6ImxlZnQiLGNvbnRhaW5lcjp2b2lkIDAsYmx1ckZpZWxkT25TZWxlY3Q6ITAsaTE4bjp7cHJldmlvdXNNb250aDoiUHJldmlvdXMgTW9udGgiLG5leHRNb250aDoiTmV4dCBNb250aCIsbW9udGhzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2gi''@;'; put 'put ''LCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSx3ZWVrZGF5czpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0s''@;'; put 'put ''d2Vla2RheXNTaG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdfSx0aGVtZTpudWxsLGV2ZW50czpbXSxvblNlbGVjdDpudWxsLG9uT3BlbjpudWxsLG9uQ2xvc2U6bnVsbCxvbkRyYXc6bnVsbCxrZXlib2FyZElucHV0OiEwfSxTZT1mdW5jdGlvbihQLFYs''@;'; put 'put ''VCl7Zm9yKFYrPVAuZmlyc3REYXk7Vj49NzspVi09NztyZXR1cm4gVD9QLmkxOG4ud2Vla2RheXNTaG9ydFtWXTpQLmkxOG4ud2Vla2RheXNbVl19LEllPWZ1bmN0aW9uKFApe3ZhciBWPVtdLFQ9ImZhbHNlIjtpZihQLmlzRW1wdHkpe2lmKCFQLnNob3dEYXlzSW5OZXh0QW5kUHJldmlvdXNN''@;'; put 'put ''b250aHMpcmV0dXJuJzx0ZCBjbGFzcz0iaXMtZW1wdHkiPjwvdGQ+JztWLnB1c2goImlzLW91dHNpZGUtY3VycmVudC1tb250aCIpLFAuZW5hYmxlU2VsZWN0aW9uRGF5c0luTmV4dEFuZFByZXZpb3VzTW9udGhzfHxWLnB1c2goImlzLXNlbGVjdGlvbi1kaXNhYmxlZCIpfXJldHVybiBQLmlz''@;'; put 'put ''RGlzYWJsZWQmJlYucHVzaCgiaXMtZGlzYWJsZWQiKSxQLmlzVG9kYXkmJlYucHVzaCgiaXMtdG9kYXkiKSxQLmlzU2VsZWN0ZWQmJihWLnB1c2goImlzLXNlbGVjdGVkIiksVD0idHJ1ZSIpLFAuaGFzRXZlbnQmJlYucHVzaCgiaGFzLWV2ZW50IiksUC5pc0luUmFuZ2UmJlYucHVzaCgiaXMt''@;'; put 'put ''aW5yYW5nZSIpLFAuaXNTdGFydFJhbmdlJiZWLnB1c2goImlzLXN0YXJ0cmFuZ2UiKSxQLmlzRW5kUmFuZ2UmJlYucHVzaCgiaXMtZW5kcmFuZ2UiKSwnPHRkIGRhdGEtZGF5PSInK1AuZGF5KyciIGNsYXNzPSInK1Yuam9pbigiICIpKyciIGFyaWEtc2VsZWN0ZWQ9IicrVCsnIj48YnV0dG9u''@;'; put 'put ''IGNsYXNzPSJwaWthLWJ1dHRvbiBwaWthLWRheSIgdHlwZT0iYnV0dG9uIiBkYXRhLXBpa2EteWVhcj0iJytQLnllYXIrJyIgZGF0YS1waWthLW1vbnRoPSInK1AubW9udGgrJyIgZGF0YS1waWthLWRheT0iJytQLmRheSsnIj4nK1AuZGF5KyI8L2J1dHRvbj48L3RkPiJ9LE1lPWZ1bmN0aW9u''@;'; put 'put ''KFAsVixULFMpe3ZhciBGPW5ldyBEYXRlKFQsVixQKTtyZXR1cm4nPHRkIGNsYXNzPSJwaWthLXdlZWsiPicrKEI/bWUoRikuaXNvV2VlaygpOmZ1bmN0aW9uKFAsVil7UC5zZXRIb3VycygwLDAsMCwwKTt2YXIgVD1QLmdldERhdGUoKSxTPVAuZ2V0RGF5KCksRj1WLHllPUYtMSxEZT1mdW5j''@;'; put 'put ''dGlvbih3dCl7cmV0dXJuKHd0KzctMSklN307UC5zZXREYXRlKFQreWUtRGUoUykpO3ZhciBQZT1uZXcgRGF0ZShQLmdldEZ1bGxZZWFyKCksMCxGKSwkZT0oUC5nZXRUaW1lKCktUGUuZ2V0VGltZSgpKS84NjRlNTtyZXR1cm4gMStNYXRoLnJvdW5kKCgkZS15ZStEZShQZS5nZXREYXkoKSkp''@;'; put 'put ''LzcpfShGLFMpKSsiPC90ZD4ifSxoZT1mdW5jdGlvbihQLFYsVCxTKXtyZXR1cm4nPHRyIGNsYXNzPSJwaWthLXJvdycrKFQ/IiBwaWNrLXdob2xlLXdlZWsiOiIiKSsoUz8iIGlzLXNlbGVjdGVkIjoiIikrJyI+JysoVj9QLnJldmVyc2UoKTpQKS5qb2luKCIiKSsiPC90cj4ifSxlZT1mdW5j''@;'; put 'put ''dGlvbihQLFYsVCxTLEYseWUpe3ZhciBDZSxEZSxQZSxtdCx2dCxRZT1QLl9vLCRlPVQ9PT1RZS5taW5ZZWFyLGd0PVQ9PT1RZS5tYXhZZWFyLHd0PSc8ZGl2IGlkPSInK3llKyciIGNsYXNzPSJwaWthLXRpdGxlIiByb2xlPSJoZWFkaW5nIiBhcmlhLWxpdmU9ImFzc2VydGl2ZSI+JyxBdD0h''@;'; put 'put ''MCxodD0hMDtmb3IoUGU9W10sQ2U9MDtDZTwxMjtDZSsrKVBlLnB1c2goJzxvcHRpb24gdmFsdWU9IicrKFQ9PT1GP0NlLVY6MTIrQ2UtVikrJyInKyhDZT09PVM/JyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzoiIikrKCRlJiZDZTxRZS5taW5Nb250aHx8Z3QmJkNlPlFlLm1heE1vbnRoPycgZGlz''@;'; put 'put ''YWJsZWQ9ImRpc2FibGVkIic6IiIpKyI+IitRZS5pMThuLm1vbnRoc1tDZV0rIjwvb3B0aW9uPiIpO2ZvcihtdD0nPGRpdiBjbGFzcz0icGlrYS1sYWJlbCI+JytRZS5pMThuLm1vbnRoc1tTXSsnPHNlbGVjdCBjbGFzcz0icGlrYS1zZWxlY3QgcGlrYS1zZWxlY3QtbW9udGgiIHRhYmluZGV4''@;'; put 'put ''PSItMSI+JytQZS5qb2luKCIiKSsiPC9zZWxlY3Q+PC9kaXY+IixOKFFlLnllYXJSYW5nZSk/KENlPVFlLnllYXJSYW5nZVswXSxEZT1RZS55ZWFyUmFuZ2VbMV0rMSk6KENlPVQtUWUueWVhclJhbmdlLERlPTErVCtRZS55ZWFyUmFuZ2UpLFBlPVtdO0NlPERlJiZDZTw9UWUubWF4WWVhcjtD''@;'; put 'put ''ZSsrKUNlPj1RZS5taW5ZZWFyJiZQZS5wdXNoKCc8b3B0aW9uIHZhbHVlPSInK0NlKyciJysoQ2U9PT1UPycgc2VsZWN0ZWQ9InNlbGVjdGVkIic6IiIpKyI+IitDZSsiPC9vcHRpb24+Iik7cmV0dXJuIHZ0PSc8ZGl2IGNsYXNzPSJwaWthLWxhYmVsIj4nK1QrUWUueWVhclN1ZmZpeCsnPHNl''@;'; put 'put ''bGVjdCBjbGFzcz0icGlrYS1zZWxlY3QgcGlrYS1zZWxlY3QteWVhciIgdGFiaW5kZXg9Ii0xIj4nK1BlLmpvaW4oIiIpKyI8L3NlbGVjdD48L2Rpdj4iLHd0Kz1RZS5zaG93TW9udGhBZnRlclllYXI/dnQrbXQ6bXQrdnQsJGUmJigwPT09U3x8UWUubWluTW9udGg+PVMpJiYoQXQ9ITEpLGd0''@;'; put 'put ''JiYoMTE9PT1TfHxRZS5tYXhNb250aDw9UykmJihodD0hMSksMD09PVYmJih3dCs9JzxidXR0b24gY2xhc3M9InBpa2EtcHJldicrKEF0PyIiOiIgaXMtZGlzYWJsZWQiKSsnIiB0eXBlPSJidXR0b24iPicrUWUuaTE4bi5wcmV2aW91c01vbnRoKyI8L2J1dHRvbj4iKSxWPT09UC5fby5udW1i''@;'; put 'put ''ZXJPZk1vbnRocy0xJiYod3QrPSc8YnV0dG9uIGNsYXNzPSJwaWthLW5leHQnKyhodD8iIjoiIGlzLWRpc2FibGVkIikrJyIgdHlwZT0iYnV0dG9uIj4nK1FlLmkxOG4ubmV4dE1vbnRoKyI8L2J1dHRvbj4iKSx3dCsiPC9kaXY+In0sbmU9ZnVuY3Rpb24oUCxWLFQpe3JldHVybic8dGFibGUg''@;'; put 'put ''Y2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGlrYS10YWJsZSIgcm9sZT0iZ3JpZCIgYXJpYS1sYWJlbGxlZGJ5PSInK1QrJyI+JytmdW5jdGlvbihQKXt2YXIgVixUPVtdO2ZvcihQLnNob3dXZWVrTnVtYmVyJiZULnB1c2goIjx0aD48L3RoPiIpLFY9MDtWPDc7Visr''@;'; put 'put ''KVQucHVzaCgnPHRoIHNjb3BlPSJjb2wiPjxhYmJyIHRpdGxlPSInK1NlKFAsVikrJyI+JytTZShQLFYsITApKyI8L2FiYnI+PC90aD4iKTtyZXR1cm4iPHRoZWFkPjx0cj4iKyhQLmlzUlRMP1QucmV2ZXJzZSgpOlQpLmpvaW4oIiIpKyI8L3RyPjwvdGhlYWQ+In0oUCkrZnVuY3Rpb24oUCl7''@;'; put 'put ''cmV0dXJuIjx0Ym9keT4iK1Auam9pbigiIikrIjwvdGJvZHk+In0oVikrIjwvdGFibGU+In0seD1mdW5jdGlvbihQKXt2YXIgVj10aGlzLFQ9Vi5jb25maWcoUCk7Vi5fb25Nb3VzZURvd249ZnVuY3Rpb24oRil7aWYoVi5fdil7dmFyIHllPShGPUZ8fHdpbmRvdy5ldmVudCkudGFyZ2V0fHxG''@;'; put 'put ''LnNyY0VsZW1lbnQ7aWYoeWUpaWYoYWUoeWUsImlzLWRpc2FibGVkIil8fCghYWUoeWUsInBpa2EtYnV0dG9uIil8fGFlKHllLCJpcy1lbXB0eSIpfHxhZSh5ZS5wYXJlbnROb2RlLCJpcy1kaXNhYmxlZCIpP2FlKHllLCJwaWthLXByZXYiKT9WLnByZXZNb250aCgpOmFlKHllLCJwaWthLW5l''@;'; put 'put ''eHQiKSYmVi5uZXh0TW9udGgoKTooVi5zZXREYXRlKG5ldyBEYXRlKHllLmdldEF0dHJpYnV0ZSgiZGF0YS1waWthLXllYXIiKSx5ZS5nZXRBdHRyaWJ1dGUoImRhdGEtcGlrYS1tb250aCIpLHllLmdldEF0dHJpYnV0ZSgiZGF0YS1waWthLWRheSIpKSksVC5ib3VuZCYmVShmdW5jdGlvbigp''@;'; put 'put ''e1YuaGlkZSgpLFQuYmx1ckZpZWxkT25TZWxlY3QmJlQuZmllbGQmJlQuZmllbGQuYmx1cigpfSwxMDApKSksYWUoeWUsInBpa2Etc2VsZWN0IikpVi5fYz0hMDtlbHNle2lmKCFGLnByZXZlbnREZWZhdWx0KXJldHVybiBGLnJldHVyblZhbHVlPSExLCExO0YucHJldmVudERlZmF1bHQoKX19''@;'; put 'put ''fSxWLl9vbkNoYW5nZT1mdW5jdGlvbihGKXt2YXIgeWU9KEY9Rnx8d2luZG93LmV2ZW50KS50YXJnZXR8fEYuc3JjRWxlbWVudDsheWV8fChhZSh5ZSwicGlrYS1zZWxlY3QtbW9udGgiKT9WLmdvdG9Nb250aCh5ZS52YWx1ZSk6YWUoeWUsInBpa2Etc2VsZWN0LXllYXIiKSYmVi5nb3RvWWVh''@;'; put 'put ''cih5ZS52YWx1ZSkpfSxWLl9vbktleUNoYW5nZT1mdW5jdGlvbihGKXtpZihGPUZ8fHdpbmRvdy5ldmVudCxWLmlzVmlzaWJsZSgpKXN3aXRjaChGLmtleUNvZGUpe2Nhc2UgMTM6Y2FzZSAyNzpULmZpZWxkJiZULmZpZWxkLmJsdXIoKTticmVhaztjYXNlIDM3OlYuYWRqdXN0RGF0ZSgic3Vi''@;'; put 'put ''dHJhY3QiLDEpO2JyZWFrO2Nhc2UgMzg6Vi5hZGp1c3REYXRlKCJzdWJ0cmFjdCIsNyk7YnJlYWs7Y2FzZSAzOTpWLmFkanVzdERhdGUoImFkZCIsMSk7YnJlYWs7Y2FzZSA0MDpWLmFkanVzdERhdGUoImFkZCIsNyk7YnJlYWs7Y2FzZSA4OmNhc2UgNDY6Vi5zZXREYXRlKG51bGwpfX0sVi5f''@;'; put 'put ''cGFyc2VGaWVsZFZhbHVlPWZ1bmN0aW9uKCl7aWYoVC5wYXJzZSlyZXR1cm4gVC5wYXJzZShULmZpZWxkLnZhbHVlLFQuZm9ybWF0KTtpZihCKXt2YXIgRj1tZShULmZpZWxkLnZhbHVlLFQuZm9ybWF0LFQuZm9ybWF0U3RyaWN0KTtyZXR1cm4gRiYmRi5pc1ZhbGlkKCk/Ri50b0RhdGUoKTpu''@;'; put 'put ''dWxsfXJldHVybiBuZXcgRGF0ZShEYXRlLnBhcnNlKFQuZmllbGQudmFsdWUpKX0sVi5fb25JbnB1dENoYW5nZT1mdW5jdGlvbihGKXt2YXIgeWU7Ri5maXJlZEJ5IT09ViYmKHllPVYuX3BhcnNlRmllbGRWYWx1ZSgpLHRlKHllKSYmVi5zZXREYXRlKHllKSxWLl92fHxWLnNob3coKSl9LFYu''@;'; put 'put ''X29uSW5wdXRGb2N1cz1mdW5jdGlvbigpe1Yuc2hvdygpfSxWLl9vbklucHV0Q2xpY2s9ZnVuY3Rpb24oKXtWLnNob3coKX0sVi5fb25JbnB1dEJsdXI9ZnVuY3Rpb24oKXt2YXIgRj1FZS5hY3RpdmVFbGVtZW50O2Rve2lmKGFlKEYsInBpa2Etc2luZ2xlIikpcmV0dXJufXdoaWxlKEY9Ri5w''@;'; put 'put ''YXJlbnROb2RlKTtWLl9jfHwoVi5fYj1VKGZ1bmN0aW9uKCl7Vi5oaWRlKCl9LDUwKSksVi5fYz0hMX0sVi5fb25DbGljaz1mdW5jdGlvbihGKXt2YXIgeWU9KEY9Rnx8d2luZG93LmV2ZW50KS50YXJnZXR8fEYuc3JjRWxlbWVudCxDZT15ZTtpZih5ZSl7IUUmJmFlKHllLCJwaWthLXNlbGVj''@;'; put 'put ''dCIpJiYoeWUub25jaGFuZ2V8fCh5ZS5zZXRBdHRyaWJ1dGUoIm9uY2hhbmdlIiwicmV0dXJuOyIpLFEoeWUsImNoYW5nZSIsVi5fb25DaGFuZ2UpKSk7ZG97aWYoYWUoQ2UsInBpa2Etc2luZ2xlIil8fENlPT09VC50cmlnZ2VyKXJldHVybn13aGlsZShDZT1DZS5wYXJlbnROb2RlKTtWLl92''@;'; put 'put ''JiZ5ZSE9PVQudHJpZ2dlciYmQ2UhPT1ULnRyaWdnZXImJlYuaGlkZSgpfX0sVi5lbD1FZS5jcmVhdGVFbGVtZW50KCJkaXYiKSxWLmVsLmNsYXNzTmFtZT0icGlrYS1zaW5nbGUiKyhULmlzUlRMPyIgaXMtcnRsIjoiIikrKFQudGhlbWU/IiAiK1QudGhlbWU6IiIpLFEoVi5lbCwibW91c2Vk''@;'; put 'put ''b3duIixWLl9vbk1vdXNlRG93biwhMCksUShWLmVsLCJ0b3VjaGVuZCIsVi5fb25Nb3VzZURvd24sITApLFEoVi5lbCwiY2hhbmdlIixWLl9vbkNoYW5nZSksVC5rZXlib2FyZElucHV0JiZRKEVlLCJrZXlkb3duIixWLl9vbktleUNoYW5nZSksVC5maWVsZCYmKFQuY29udGFpbmVyP1QuY29u''@;'; put 'put ''dGFpbmVyLmFwcGVuZENoaWxkKFYuZWwpOlQuYm91bmQ/RWUuYm9keS5hcHBlbmRDaGlsZChWLmVsKTpULmZpZWxkLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKFYuZWwsVC5maWVsZC5uZXh0U2libGluZyksUShULmZpZWxkLCJjaGFuZ2UiLFYuX29uSW5wdXRDaGFuZ2UpLFQuZGVmYXVsdERh''@;'; put 'put ''dGV8fChULmRlZmF1bHREYXRlPVYuX3BhcnNlRmllbGRWYWx1ZSgpLFQuc2V0RGVmYXVsdERhdGU9ITApKTt2YXIgUz1ULmRlZmF1bHREYXRlO3RlKFMpP1Quc2V0RGVmYXVsdERhdGU/Vi5zZXREYXRlKFMsITApOlYuZ290b0RhdGUoUyk6Vi5nb3RvRGF0ZShuZXcgRGF0ZSksVC5ib3VuZD8o''@;'; put 'put ''dGhpcy5oaWRlKCksVi5lbC5jbGFzc05hbWUrPSIgaXMtYm91bmQiLFEoVC50cmlnZ2VyLCJjbGljayIsVi5fb25JbnB1dENsaWNrKSxRKFQudHJpZ2dlciwiZm9jdXMiLFYuX29uSW5wdXRGb2N1cyksUShULnRyaWdnZXIsImJsdXIiLFYuX29uSW5wdXRCbHVyKSk6dGhpcy5zaG93KCl9O3Jl''@;'; put 'put ''dHVybiB4LnByb3RvdHlwZT17Y29uZmlnOmZ1bmN0aW9uKFApe3RoaXMuX298fCh0aGlzLl9vPWRlKHt9LGtlLCEwKSk7dmFyIFY9ZGUodGhpcy5fbyxQLCEwKTtWLmlzUlRMPSEhVi5pc1JUTCxWLmZpZWxkPVYuZmllbGQmJlYuZmllbGQubm9kZU5hbWU/Vi5maWVsZDpudWxsLFYudGhlbWU9''@;'; put 'put ''InN0cmluZyI9PXR5cGVvZiBWLnRoZW1lJiZWLnRoZW1lP1YudGhlbWU6bnVsbCxWLmJvdW5kPSEhKHZvaWQgMCE9PVYuYm91bmQ/Vi5maWVsZCYmVi5ib3VuZDpWLmZpZWxkKSxWLnRyaWdnZXI9Vi50cmlnZ2VyJiZWLnRyaWdnZXIubm9kZU5hbWU/Vi50cmlnZ2VyOlYuZmllbGQsVi5kaXNh''@;'; put 'put ''YmxlV2Vla2VuZHM9ISFWLmRpc2FibGVXZWVrZW5kcyxWLmRpc2FibGVEYXlGbj0iZnVuY3Rpb24iPT10eXBlb2YgVi5kaXNhYmxlRGF5Rm4/Vi5kaXNhYmxlRGF5Rm46bnVsbDt2YXIgVD1wYXJzZUludChWLm51bWJlck9mTW9udGhzLDEwKXx8MTtpZihWLm51bWJlck9mTW9udGhzPVQ+ND80''@;'; put 'put ''OlQsdGUoVi5taW5EYXRlKXx8KFYubWluRGF0ZT0hMSksdGUoVi5tYXhEYXRlKXx8KFYubWF4RGF0ZT0hMSksVi5taW5EYXRlJiZWLm1heERhdGUmJlYubWF4RGF0ZTxWLm1pbkRhdGUmJihWLm1heERhdGU9Vi5taW5EYXRlPSExKSxWLm1pbkRhdGUmJnRoaXMuc2V0TWluRGF0ZShWLm1pbkRh''@;'; put 'put ''dGUpLFYubWF4RGF0ZSYmdGhpcy5zZXRNYXhEYXRlKFYubWF4RGF0ZSksTihWLnllYXJSYW5nZSkpe3ZhciBTPShuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKS0xMDtWLnllYXJSYW5nZVswXT1wYXJzZUludChWLnllYXJSYW5nZVswXSwxMCl8fFMsVi55ZWFyUmFuZ2VbMV09cGFyc2VJbnQoVi55''@;'; put 'put ''ZWFyUmFuZ2VbMV0sMTApfHxTfWVsc2UgVi55ZWFyUmFuZ2U9TWF0aC5hYnMocGFyc2VJbnQoVi55ZWFyUmFuZ2UsMTApKXx8a2UueWVhclJhbmdlLFYueWVhclJhbmdlPjEwMCYmKFYueWVhclJhbmdlPTEwMCk7cmV0dXJuIFZ9LHRvU3RyaW5nOmZ1bmN0aW9uKFApe3JldHVybiBQPVB8fHRo''@;'; put 'put ''aXMuX28uZm9ybWF0LHRlKHRoaXMuX2QpP3RoaXMuX28udG9TdHJpbmc/dGhpcy5fby50b1N0cmluZyh0aGlzLl9kLFApOkI/bWUodGhpcy5fZCkuZm9ybWF0KFApOnRoaXMuX2QudG9EYXRlU3RyaW5nKCk6IiJ9LGdldE1vbWVudDpmdW5jdGlvbigpe3JldHVybiBCP21lKHRoaXMuX2QpOm51''@;'; put 'put ''bGx9LHNldE1vbWVudDpmdW5jdGlvbihQLFYpe0ImJm1lLmlzTW9tZW50KFApJiZ0aGlzLnNldERhdGUoUC50b0RhdGUoKSxWKX0sZ2V0RGF0ZTpmdW5jdGlvbigpe3JldHVybiB0ZSh0aGlzLl9kKT9uZXcgRGF0ZSh0aGlzLl9kLmdldFRpbWUoKSk6bnVsbH0sc2V0RGF0ZTpmdW5jdGlvbihQ''@;'; put 'put ''LFYpe2lmKCFQKXJldHVybiB0aGlzLl9kPW51bGwsdGhpcy5fby5maWVsZCYmKHRoaXMuX28uZmllbGQudmFsdWU9IiIsdmUodGhpcy5fby5maWVsZCwiY2hhbmdlIix7ZmlyZWRCeTp0aGlzfSkpLHRoaXMuZHJhdygpO2lmKCJzdHJpbmciPT10eXBlb2YgUCYmKFA9bmV3IERhdGUoRGF0ZS5w''@;'; put 'put ''YXJzZShQKSkpLHRlKFApKXt2YXIgVD10aGlzLl9vLm1pbkRhdGUsUz10aGlzLl9vLm1heERhdGU7dGUoVCkmJlA8VD9QPVQ6dGUoUykmJlA+UyYmKFA9UyksdGhpcy5fZD1uZXcgRGF0ZShQLmdldFRpbWUoKSksb2UodGhpcy5fZCksdGhpcy5nb3RvRGF0ZSh0aGlzLl9kKSx0aGlzLl9vLmZp''@;'; put 'put ''ZWxkJiYodGhpcy5fby5maWVsZC52YWx1ZT10aGlzLnRvU3RyaW5nKCksdmUodGhpcy5fby5maWVsZCwiY2hhbmdlIix7ZmlyZWRCeTp0aGlzfSkpLCFWJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fby5vblNlbGVjdCYmdGhpcy5fby5vblNlbGVjdC5jYWxsKHRoaXMsdGhpcy5nZXREYXRl''@;'; put 'put ''KCkpfX0sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLnNldERhdGUobnVsbCl9LGdvdG9EYXRlOmZ1bmN0aW9uKFApe3ZhciBWPSEwO2lmKHRlKFApKXtpZih0aGlzLmNhbGVuZGFycyl7dmFyIFQ9bmV3IERhdGUodGhpcy5jYWxlbmRhcnNbMF0ueWVhcix0aGlzLmNhbGVuZGFyc1swXS5tb250aCwx''@;'; put 'put ''KSxTPW5ldyBEYXRlKHRoaXMuY2FsZW5kYXJzW3RoaXMuY2FsZW5kYXJzLmxlbmd0aC0xXS55ZWFyLHRoaXMuY2FsZW5kYXJzW3RoaXMuY2FsZW5kYXJzLmxlbmd0aC0xXS5tb250aCwxKSxGPVAuZ2V0VGltZSgpO1Muc2V0TW9udGgoUy5nZXRNb250aCgpKzEpLFMuc2V0RGF0ZShTLmdldERh''@;'; put 'put ''dGUoKS0xKSxWPUY8VC5nZXRUaW1lKCl8fFMuZ2V0VGltZSgpPEZ9ViYmKHRoaXMuY2FsZW5kYXJzPVt7bW9udGg6UC5nZXRNb250aCgpLHllYXI6UC5nZXRGdWxsWWVhcigpfV0sInJpZ2h0Ij09PXRoaXMuX28ubWFpbkNhbGVuZGFyJiYodGhpcy5jYWxlbmRhcnNbMF0ubW9udGgrPTEtdGhp''@;'; put 'put ''cy5fby5udW1iZXJPZk1vbnRocykpLHRoaXMuYWRqdXN0Q2FsZW5kYXJzKCl9fSxhZGp1c3REYXRlOmZ1bmN0aW9uKFAsVil7dmFyIEYsVD10aGlzLmdldERhdGUoKXx8bmV3IERhdGUsUz0yNCpwYXJzZUludChWKSo2MCo2MCoxZTM7ImFkZCI9PT1QP0Y9bmV3IERhdGUoVC52YWx1ZU9mKCkr''@;'; put 'put ''Uyk6InN1YnRyYWN0Ij09PVAmJihGPW5ldyBEYXRlKFQudmFsdWVPZigpLVMpKSx0aGlzLnNldERhdGUoRil9LGFkanVzdENhbGVuZGFyczpmdW5jdGlvbigpe3RoaXMuY2FsZW5kYXJzWzBdPUFlKHRoaXMuY2FsZW5kYXJzWzBdKTtmb3IodmFyIFA9MTtQPHRoaXMuX28ubnVtYmVyT2ZNb250''@;'; put 'put ''aHM7UCsrKXRoaXMuY2FsZW5kYXJzW1BdPUFlKHttb250aDp0aGlzLmNhbGVuZGFyc1swXS5tb250aCtQLHllYXI6dGhpcy5jYWxlbmRhcnNbMF0ueWVhcn0pO3RoaXMuZHJhdygpfSxnb3RvVG9kYXk6ZnVuY3Rpb24oKXt0aGlzLmdvdG9EYXRlKG5ldyBEYXRlKX0sZ290b01vbnRoOmZ1bmN0''@;'; put 'put ''aW9uKFApe2lzTmFOKFApfHwodGhpcy5jYWxlbmRhcnNbMF0ubW9udGg9cGFyc2VJbnQoUCwxMCksdGhpcy5hZGp1c3RDYWxlbmRhcnMoKSl9LG5leHRNb250aDpmdW5jdGlvbigpe3RoaXMuY2FsZW5kYXJzWzBdLm1vbnRoKyssdGhpcy5hZGp1c3RDYWxlbmRhcnMoKX0scHJldk1vbnRoOmZ1''@;'; put 'put ''bmN0aW9uKCl7dGhpcy5jYWxlbmRhcnNbMF0ubW9udGgtLSx0aGlzLmFkanVzdENhbGVuZGFycygpfSxnb3RvWWVhcjpmdW5jdGlvbihQKXtpc05hTihQKXx8KHRoaXMuY2FsZW5kYXJzWzBdLnllYXI9cGFyc2VJbnQoUCwxMCksdGhpcy5hZGp1c3RDYWxlbmRhcnMoKSl9LHNldE1pbkRhdGU6''@;'; put 'put ''ZnVuY3Rpb24oUCl7UCBpbnN0YW5jZW9mIERhdGU/KG9lKFApLHRoaXMuX28ubWluRGF0ZT1QLHRoaXMuX28ubWluWWVhcj1QLmdldEZ1bGxZZWFyKCksdGhpcy5fby5taW5Nb250aD1QLmdldE1vbnRoKCkpOih0aGlzLl9vLm1pbkRhdGU9a2UubWluRGF0ZSx0aGlzLl9vLm1pblllYXI9a2Uu''@;'; put 'put ''bWluWWVhcix0aGlzLl9vLm1pbk1vbnRoPWtlLm1pbk1vbnRoLHRoaXMuX28uc3RhcnRSYW5nZT1rZS5zdGFydFJhbmdlKSx0aGlzLmRyYXcoKX0sc2V0TWF4RGF0ZTpmdW5jdGlvbihQKXtQIGluc3RhbmNlb2YgRGF0ZT8ob2UoUCksdGhpcy5fby5tYXhEYXRlPVAsdGhpcy5fby5tYXhZZWFy''@;'; put 'put ''PVAuZ2V0RnVsbFllYXIoKSx0aGlzLl9vLm1heE1vbnRoPVAuZ2V0TW9udGgoKSk6KHRoaXMuX28ubWF4RGF0ZT1rZS5tYXhEYXRlLHRoaXMuX28ubWF4WWVhcj1rZS5tYXhZZWFyLHRoaXMuX28ubWF4TW9udGg9a2UubWF4TW9udGgsdGhpcy5fby5lbmRSYW5nZT1rZS5lbmRSYW5nZSksdGhp''@;'; put 'put ''cy5kcmF3KCl9LHNldFN0YXJ0UmFuZ2U6ZnVuY3Rpb24oUCl7dGhpcy5fby5zdGFydFJhbmdlPVB9LHNldEVuZFJhbmdlOmZ1bmN0aW9uKFApe3RoaXMuX28uZW5kUmFuZ2U9UH0sZHJhdzpmdW5jdGlvbihQKXtpZih0aGlzLl92fHxQKXt2YXIgRGUsVj10aGlzLl9vLFQ9Vi5taW5ZZWFyLFM9''@;'; put 'put ''Vi5tYXhZZWFyLEY9Vi5taW5Nb250aCx5ZT1WLm1heE1vbnRoLENlPSIiO3RoaXMuX3k8PVQmJih0aGlzLl95PVQsIWlzTmFOKEYpJiZ0aGlzLl9tPEYmJih0aGlzLl9tPUYpKSx0aGlzLl95Pj1TJiYodGhpcy5feT1TLCFpc05hTih5ZSkmJnRoaXMuX20+eWUmJih0aGlzLl9tPXllKSk7Zm9y''@;'; put 'put ''KHZhciBQZT0wO1BlPFYubnVtYmVyT2ZNb250aHM7UGUrKylEZT0icGlrYS10aXRsZS0iK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnJlcGxhY2UoL1teYS16XSsvZywiIikuc3Vic3RyKDAsMiksQ2UrPSc8ZGl2IGNsYXNzPSJwaWthLWxlbmRhciI+JytlZSh0aGlzLFBlLHRoaXMuY2Fs''@;'; put 'put ''ZW5kYXJzW1BlXS55ZWFyLHRoaXMuY2FsZW5kYXJzW1BlXS5tb250aCx0aGlzLmNhbGVuZGFyc1swXS55ZWFyLERlKSt0aGlzLnJlbmRlcih0aGlzLmNhbGVuZGFyc1tQZV0ueWVhcix0aGlzLmNhbGVuZGFyc1tQZV0ubW9udGgsRGUpKyI8L2Rpdj4iO3RoaXMuZWwuaW5uZXJIVE1MPUNlLFYu''@;'; put 'put ''Ym91bmQmJiJoaWRkZW4iIT09Vi5maWVsZC50eXBlJiZVKGZ1bmN0aW9uKCl7Vi50cmlnZ2VyLmZvY3VzKCl9LDEpLCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9vLm9uRHJhdyYmdGhpcy5fby5vbkRyYXcodGhpcyksVi5ib3VuZCYmVi5maWVsZC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwi''@;'; put 'put ''LFYuYXJpYUxhYmVsKX19LGFkanVzdFBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIFAsVixULFMsRix5ZSxDZSxEZSxQZSxRZSwkZSxndDtpZighdGhpcy5fby5jb250YWluZXIpe2lmKHRoaXMuZWwuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixWPVA9dGhpcy5fby50cmlnZ2VyLFQ9dGhpcy5l''@;'; put 'put ''bC5vZmZzZXRXaWR0aCxTPXRoaXMuZWwub2Zmc2V0SGVpZ2h0LEY9d2luZG93LmlubmVyV2lkdGh8fEVlLmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCx5ZT13aW5kb3cuaW5uZXJIZWlnaHR8fEVlLmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsQ2U9d2luZG93LnBhZ2VZT2Zmc2V0''@;'; put 'put ''fHxFZS5ib2R5LnNjcm9sbFRvcHx8RWUuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCwkZT0hMCxndD0hMCwiZnVuY3Rpb24iPT10eXBlb2YgUC5nZXRCb3VuZGluZ0NsaWVudFJlY3QpRGU9KFFlPVAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLmxlZnQrd2luZG93LnBhZ2VYT2Zmc2V0LFBl''@;'; put 'put ''PVFlLmJvdHRvbSt3aW5kb3cucGFnZVlPZmZzZXQ7ZWxzZSBmb3IoRGU9Vi5vZmZzZXRMZWZ0LFBlPVYub2Zmc2V0VG9wK1Yub2Zmc2V0SGVpZ2h0O1Y9Vi5vZmZzZXRQYXJlbnQ7KURlKz1WLm9mZnNldExlZnQsUGUrPVYub2Zmc2V0VG9wOyh0aGlzLl9vLnJlcG9zaXRpb24mJkRlK1Q+Rnx8''@;'; put 'put ''dGhpcy5fby5wb3NpdGlvbi5pbmRleE9mKCJyaWdodCIpPi0xJiZEZS1UK1Aub2Zmc2V0V2lkdGg+MCkmJihEZT1EZS1UK1Aub2Zmc2V0V2lkdGgsJGU9ITEpLCh0aGlzLl9vLnJlcG9zaXRpb24mJlBlK1M+eWUrQ2V8fHRoaXMuX28ucG9zaXRpb24uaW5kZXhPZigidG9wIik+LTEmJlBlLVMt''@;'; put 'put ''UC5vZmZzZXRIZWlnaHQ+MCkmJihQZT1QZS1TLVAub2Zmc2V0SGVpZ2h0LGd0PSExKSx0aGlzLmVsLnN0eWxlLmxlZnQ9RGUrInB4Iix0aGlzLmVsLnN0eWxlLnRvcD1QZSsicHgiLFkodGhpcy5lbCwkZT8ibGVmdC1hbGlnbmVkIjoicmlnaHQtYWxpZ25lZCIpLFkodGhpcy5lbCxndD8iYm90''@;'; put 'put ''dG9tLWFsaWduZWQiOiJ0b3AtYWxpZ25lZCIpLFcodGhpcy5lbCwkZT8icmlnaHQtYWxpZ25lZCI6ImxlZnQtYWxpZ25lZCIpLFcodGhpcy5lbCxndD8idG9wLWFsaWduZWQiOiJib3R0b20tYWxpZ25lZCIpfX0scmVuZGVyOmZ1bmN0aW9uKFAsVixUKXt2YXIgUz10aGlzLl9vLEY9bmV3IERh''@;'; put 'put ''dGUseWU9c2UoUCxWKSxDZT1uZXcgRGF0ZShQLFYsMSkuZ2V0RGF5KCksRGU9W10sUGU9W107b2UoRiksUy5maXJzdERheT4wJiYoQ2UtPVMuZmlyc3REYXkpPDAmJihDZSs9Nyk7Zm9yKHZhciBRZT0wPT09Vj8xMTpWLTEsJGU9MTE9PT1WPzA6VisxLGd0PTA9PT1WP1AtMTpQLHd0PTExPT09''@;'; put 'put ''Vj9QKzE6UCxtdD1zZShndCxRZSksdnQ9eWUrQ2UsQXQ9dnQ7QXQ+NzspQXQtPTc7dnQrPTctQXQ7Zm9yKHZhciBodD0hMSxCdD0wLG9uPTA7QnQ8dnQ7QnQrKyl7dmFyIF90PW5ldyBEYXRlKFAsVixCdC1DZSsxKSx0dD0hIXRlKHRoaXMuX2QpJiZjZShfdCx0aGlzLl9kKSxldD1jZShfdCxG''@;'; put 'put ''KSxsdD0tMSE9PVMuZXZlbnRzLmluZGV4T2YoX3QudG9EYXRlU3RyaW5nKCkpLEx0PUJ0PENlfHxCdD49eWUrQ2UsQ3Q9QnQtQ2UrMSxmdD1WLEh0PVAsR2U9Uy5zdGFydFJhbmdlJiZjZShTLnN0YXJ0UmFuZ2UsX3QpLFVlPVMuZW5kUmFuZ2UmJmNlKFMuZW5kUmFuZ2UsX3QpLHl0PVMuc3Rh''@;'; put 'put ''cnRSYW5nZSYmUy5lbmRSYW5nZSYmUy5zdGFydFJhbmdlPF90JiZfdDxTLmVuZFJhbmdlLGp0PVMubWluRGF0ZSYmX3Q8Uy5taW5EYXRlfHxTLm1heERhdGUmJl90PlMubWF4RGF0ZXx8Uy5kaXNhYmxlV2Vla2VuZHMmJksoX3QpfHxTLmRpc2FibGVEYXlGbiYmUy5kaXNhYmxlRGF5Rm4oX3Qp''@;'; put 'put ''O0x0JiYoQnQ8Q2U/KEN0PW10K0N0LGZ0PVFlLEh0PWd0KTooQ3QtPXllLGZ0PSRlLEh0PXd0KSksUy5waWNrV2hvbGVXZWVrJiZ0dCYmKGh0PSEwKSxQZS5wdXNoKEllKHtkYXk6Q3QsbW9udGg6ZnQseWVhcjpIdCxoYXNFdmVudDpsdCxpc1NlbGVjdGVkOnR0LGlzVG9kYXk6ZXQsaXNEaXNh''@;'; put 'put ''YmxlZDpqdCxpc0VtcHR5Okx0LGlzU3RhcnRSYW5nZTpHZSxpc0VuZFJhbmdlOlVlLGlzSW5SYW5nZTp5dCxzaG93RGF5c0luTmV4dEFuZFByZXZpb3VzTW9udGhzOlMuc2hvd0RheXNJbk5leHRBbmRQcmV2aW91c01vbnRocyxlbmFibGVTZWxlY3Rpb25EYXlzSW5OZXh0QW5kUHJldmlvdXNN''@;'; put 'put ''b250aHM6Uy5lbmFibGVTZWxlY3Rpb25EYXlzSW5OZXh0QW5kUHJldmlvdXNNb250aHN9KSksNz09KytvbiYmKFMuc2hvd1dlZWtOdW1iZXImJlBlLnVuc2hpZnQoTWUoQnQtQ2UsVixQLFMuZmlyc3RXZWVrT2ZZZWFyTWluRGF5cykpLERlLnB1c2goaGUoUGUsUy5pc1JUTCxTLnBpY2tXaG9s''@;'; put 'put ''ZVdlZWssaHQpKSxQZT1bXSxvbj0wLGh0PSExKX1yZXR1cm4gbmUoUyxEZSxUKX0saXNWaXNpYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Z9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLmlzVmlzaWJsZSgpfHwodGhpcy5fdj0hMCx0aGlzLmRyYXcoKSxXKHRoaXMuZWwsImlzLWhpZGRlbiIp''@;'; put 'put ''LHRoaXMuX28uYm91bmQmJihRKEVlLCJjbGljayIsdGhpcy5fb25DbGljayksdGhpcy5hZGp1c3RQb3NpdGlvbigpKSwiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fby5vbk9wZW4mJnRoaXMuX28ub25PcGVuLmNhbGwodGhpcykpfSxoaWRlOmZ1bmN0aW9uKCl7dmFyIFA9dGhpcy5fdjshMSE9''@;'; put 'put ''PVAmJih0aGlzLl9vLmJvdW5kJiZqKEVlLCJjbGljayIsdGhpcy5fb25DbGljayksdGhpcy5fby5jb250YWluZXJ8fCh0aGlzLmVsLnN0eWxlLnBvc2l0aW9uPSJzdGF0aWMiLHRoaXMuZWwuc3R5bGUubGVmdD0iYXV0byIsdGhpcy5lbC5zdHlsZS50b3A9ImF1dG8iKSxZKHRoaXMuZWwsImlz''@;'; put 'put ''LWhpZGRlbiIpLHRoaXMuX3Y9ITEsdm9pZCAwIT09UCYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX28ub25DbG9zZSYmdGhpcy5fby5vbkNsb3NlLmNhbGwodGhpcykpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIFA9dGhpcy5fbzt0aGlzLmhpZGUoKSxqKHRoaXMuZWwsIm1vdXNlZG93biIs''@;'; put 'put ''dGhpcy5fb25Nb3VzZURvd24sITApLGoodGhpcy5lbCwidG91Y2hlbmQiLHRoaXMuX29uTW91c2VEb3duLCEwKSxqKHRoaXMuZWwsImNoYW5nZSIsdGhpcy5fb25DaGFuZ2UpLFAua2V5Ym9hcmRJbnB1dCYmaihFZSwia2V5ZG93biIsdGhpcy5fb25LZXlDaGFuZ2UpLFAuZmllbGQmJihqKFAu''@;'; put 'put ''ZmllbGQsImNoYW5nZSIsdGhpcy5fb25JbnB1dENoYW5nZSksUC5ib3VuZCYmKGooUC50cmlnZ2VyLCJjbGljayIsdGhpcy5fb25JbnB1dENsaWNrKSxqKFAudHJpZ2dlciwiZm9jdXMiLHRoaXMuX29uSW5wdXRGb2N1cyksaihQLnRyaWdnZXIsImJsdXIiLHRoaXMuX29uSW5wdXRCbHVyKSkp''@;'; put 'put ''LHRoaXMuZWwucGFyZW50Tm9kZSYmdGhpcy5lbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZWwpfX0seH0oRSl9KCl9LDYzNzAxOihYZSxKZSxMKT0+e0plLnB1YmxpY0VuY3J5cHQ9TCgxNjU2MiksSmUucHJpdmF0ZURlY3J5cHQ9TCgzNjcwNSksSmUucHJpdmF0ZUVuY3J5cHQ9ZnVu''@;'; put 'put ''Y3Rpb24oQixFKXtyZXR1cm4gSmUucHVibGljRW5jcnlwdChCLEUsITApfSxKZS5wdWJsaWNEZWNyeXB0PWZ1bmN0aW9uKEIsRSl7cmV0dXJuIEplLnByaXZhdGVEZWNyeXB0KEIsRSwhMCl9fSw4Njk0NTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg5NjM4NiksQj1MKDczNTAyKS5CdWZmZXI7ZnVu''@;'; put 'put ''Y3Rpb24gRShFZSl7dmFyIFU9Qi5hbGxvY1Vuc2FmZSg0KTtyZXR1cm4gVS53cml0ZVVJbnQzMkJFKEVlLDApLFV9WGUuZXhwb3J0cz1mdW5jdGlvbihFZSxVKXtmb3IodmFyIHJlLFE9Qi5hbGxvYygwKSxqPTA7US5sZW5ndGg8VTspcmU9RShqKyspLFE9Qi5jb25jYXQoW1EsbWUoInNoYTEi''@;'; put 'put ''KS51cGRhdGUoRWUpLnVwZGF0ZShyZSkuZGlnZXN0KCldKTtyZXR1cm4gUS5zbGljZSgwLFUpfX0sODIwNTc6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lLEIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBFKGhlLE8pe2lmKCFoZSl0aHJvdyBuZXcgRXJyb3IoT3x8IkFzc2VydGlvbiBm''@;'; put 'put ''YWlsZWQiKX1mdW5jdGlvbiBFZShoZSxPKXtoZS5zdXBlcl89Tzt2YXIgej1mdW5jdGlvbigpe307ei5wcm90b3R5cGU9Ty5wcm90b3R5cGUsaGUucHJvdG90eXBlPW5ldyB6LGhlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1oZX1mdW5jdGlvbiBVKGhlLE8seil7aWYoVS5pc0JOKGhlKSlyZXR1''@;'; put 'put ''cm4gaGU7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PWhlJiYoKCJsZSI9PT1PfHwiYmUiPT09TykmJih6PU8sTz0xMCksdGhpcy5faW5pdChoZXx8MCxPfHwxMCx6fHwiYmUiKSl9dmFyIFE7Im9iamVjdCI9PXR5cGVv''@;'; put 'put ''ZiBtZT9tZS5leHBvcnRzPVU6Qi5CTj1VLFUuQk49VSxVLndvcmRTaXplPTI2O3RyeXtRPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuQnVmZmVyP3dpbmRvdy5CdWZmZXI6TCg3NzEwOCkuQnVmZmVyfWNhdGNoKGhlKXt9ZnVuY3Rpb24gaihoZSxPKXt2YXIg''@;'; put 'put ''ej1oZS5jaGFyQ29kZUF0KE8pO3JldHVybiB6Pj02NSYmejw9NzA/ei01NTp6Pj05NyYmejw9MTAyP3otODc6ei00OCYxNX1mdW5jdGlvbiByZShoZSxPLHope3ZhciBlZT1qKGhlLHopO3JldHVybiB6LTE+PU8mJihlZXw9aihoZSx6LTEpPDw0KSxlZX1mdW5jdGlvbiBhZShoZSxPLHosZWUp''@;'; put 'put ''e2Zvcih2YXIgbmU9MCx4PU1hdGgubWluKGhlLmxlbmd0aCx6KSxQPU87UDx4O1ArKyl7dmFyIFY9aGUuY2hhckNvZGVBdChQKS00ODtuZSo9ZWUsbmUrPVY+PTQ5P1YtNDkrMTA6Vj49MTc/Vi0xNysxMDpWfXJldHVybiBuZX1VLmlzQk49ZnVuY3Rpb24oTyl7cmV0dXJuIE8gaW5zdGFuY2Vv''@;'; put 'put ''ZiBVfHxudWxsIT09TyYmIm9iamVjdCI9PXR5cGVvZiBPJiZPLmNvbnN0cnVjdG9yLndvcmRTaXplPT09VS53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheShPLndvcmRzKX0sVS5tYXg9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gTy5jbXAoeik+MD9POnp9LFUubWluPWZ1bmN0aW9uKE8seil7cmV0dXJu''@;'; put 'put ''IE8uY21wKHopPDA/Tzp6fSxVLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihPLHosZWUpe2lmKCJudW1iZXIiPT10eXBlb2YgTylyZXR1cm4gdGhpcy5faW5pdE51bWJlcihPLHosZWUpO2lmKCJvYmplY3QiPT10eXBlb2YgTylyZXR1cm4gdGhpcy5faW5pdEFycmF5KE8seixlZSk7ImhleCI9''@;'; put 'put ''PT16JiYoej0xNiksRSh6PT09KDB8eikmJno+PTImJno8PTM2KTt2YXIgbmU9MDsiLSI9PT0oTz1PLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKG5lKyssdGhpcy5uZWdhdGl2ZT0xKSxuZTxPLmxlbmd0aCYmKDE2PT09ej90aGlzLl9wYXJzZUhleChPLG5lLGVlKToodGhp''@;'; put 'put ''cy5fcGFyc2VCYXNlKE8seixuZSksImxlIj09PWVlJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCkseixlZSkpKX0sVS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oTyx6LGVlKXtPPDAmJih0aGlzLm5lZ2F0aXZlPTEsTz0tTyksTzw2NzEwODg2ND8odGhpcy53b3Jkcz1b''@;'; put 'put ''NjcxMDg4NjMmT10sdGhpcy5sZW5ndGg9MSk6Tzw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZPLE8vNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihFKE88OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmTyxPLzY3MTA4ODY0JjY3''@;'; put 'put ''MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1lZSYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHosZWUpfSxVLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKE8seixlZSl7aWYoRSgibnVtYmVyIj09dHlwZW9mIE8ubGVuZ3RoKSxPLmxlbmd0aDw9MClyZXR1cm4g''@;'; put 'put ''dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MSx0aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbChPLmxlbmd0aC8zKSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBuZT0wO25lPHRoaXMubGVuZ3RoO25lKyspdGhpcy53b3Jkc1tuZV09MDt2YXIgeCxQLFY9MDtp''@;'; put 'put ''ZigiYmUiPT09ZWUpZm9yKG5lPU8ubGVuZ3RoLTEseD0wO25lPj0wO25lLT0zKXRoaXMud29yZHNbeF18PShQPU9bbmVdfE9bbmUtMV08PDh8T1tuZS0yXTw8MTYpPDxWJjY3MTA4ODYzLHRoaXMud29yZHNbeCsxXT1QPj4+MjYtViY2NzEwODg2MywoVis9MjQpPj0yNiYmKFYtPTI2LHgrKyk7''@;'; put 'put ''ZWxzZSBpZigibGUiPT09ZWUpZm9yKG5lPTAseD0wO25lPE8ubGVuZ3RoO25lKz0zKXRoaXMud29yZHNbeF18PShQPU9bbmVdfE9bbmUrMV08PDh8T1tuZSsyXTw8MTYpPDxWJjY3MTA4ODYzLHRoaXMud29yZHNbeCsxXT1QPj4+MjYtViY2NzEwODg2MywoVis9MjQpPj0yNiYmKFYtPTI2LHgr''@;'; put 'put ''Kyk7cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKE8seixlZSl7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChPLmxlbmd0aC16KS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBuZT0wO25lPHRoaXMubGVuZ3RoO25l''@;'; put 'put ''KyspdGhpcy53b3Jkc1tuZV09MDt2YXIgVix4PTAsUD0wO2lmKCJiZSI9PT1lZSlmb3IobmU9Ty5sZW5ndGgtMTtuZT49ejtuZS09MilWPXJlKE8seixuZSk8PHgsdGhpcy53b3Jkc1tQXXw9NjcxMDg4NjMmVix4Pj0xOD8oeC09MTgsdGhpcy53b3Jkc1tQKz0xXXw9Vj4+PjI2KTp4Kz04O2Vs''@;'; put 'put ''c2UgZm9yKG5lPShPLmxlbmd0aC16KSUyPT0wP3orMTp6O25lPE8ubGVuZ3RoO25lKz0yKVY9cmUoTyx6LG5lKTw8eCx0aGlzLndvcmRzW1BdfD02NzEwODg2MyZWLHg+PTE4Pyh4LT0xOCx0aGlzLndvcmRzW1ArPTFdfD1WPj4+MjYpOngrPTg7dGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5f''@;'; put 'put ''cGFyc2VCYXNlPWZ1bmN0aW9uKE8seixlZSl7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIG5lPTAseD0xO3g8PTY3MTA4ODYzO3gqPXopbmUrKztuZS0tLHg9eC96fDA7Zm9yKHZhciBQPU8ubGVuZ3RoLWVlLFY9UCVuZSxUPU1hdGgubWluKFAsUC1WKStlZSxTPTAsRj1l''@;'; put 'put ''ZTtGPFQ7Ris9bmUpUz1hZShPLEYsRituZSx6KSx0aGlzLmltdWxuKHgpLHRoaXMud29yZHNbMF0rUzw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1TOnRoaXMuX2lhZGRuKFMpO2lmKDAhPT1WKXt2YXIgeWU9MTtmb3IoUz1hZShPLEYsTy5sZW5ndGgseiksRj0wO0Y8VjtGKyspeWUqPXo7dGhp''@;'; put 'put ''cy5pbXVsbih5ZSksdGhpcy53b3Jkc1swXStTPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPVM6dGhpcy5faWFkZG4oUyl9dGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKE8pe08ud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHo9MDt6PHRoaXMubGVu''@;'; put 'put ''Z3RoO3orKylPLndvcmRzW3pdPXRoaXMud29yZHNbel07Ty5sZW5ndGg9dGhpcy5sZW5ndGgsTy5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLE8ucmVkPXRoaXMucmVkfSxVLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBPPW5ldyBVKG51bGwpO3JldHVybiB0aGlzLmNvcHkoTyksT30s''@;'; put 'put ''VS5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihPKXtmb3IoO3RoaXMubGVuZ3RoPE87KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sVS5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVu''@;'; put 'put ''Z3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxVLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sVS5wcm90b3R5cGUuaW5zcGVj''@;'; put 'put ''dD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgWT1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAi''@;'; put 'put ''LCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxXPVswLDAsMjUsMTYs''@;'; put 'put ''MTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLE49WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4''@;'; put 'put ''MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwz''@;'; put 'put ''MzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gSyhoZSxPLHope3oubmVnYXRpdmU9Ty5uZWdhdGl2ZV5oZS5uZWdhdGl2ZTt2YXIgZWU9aGUubGVuZ3RoK08ubGVuZ3RofDA7ei5sZW5ndGg9ZWUsZWU9ZWUtMXwwO3ZhciBuZT0wfGhlLndvcmRz''@;'; put 'put ''WzBdLHg9MHxPLndvcmRzWzBdLFA9bmUqeCxUPVAvNjcxMDg4NjR8MDt6LndvcmRzWzBdPTY3MTA4ODYzJlA7Zm9yKHZhciBTPTE7UzxlZTtTKyspe2Zvcih2YXIgRj1UPj4+MjYseWU9NjcxMDg4NjMmVCxDZT1NYXRoLm1pbihTLE8ubGVuZ3RoLTEpLERlPU1hdGgubWF4KDAsUy1oZS5sZW5n''@;'; put 'put ''dGgrMSk7RGU8PUNlO0RlKyspRis9KFA9KG5lPTB8aGUud29yZHNbUy1EZXwwXSkqKHg9MHxPLndvcmRzW0RlXSkreWUpLzY3MTA4ODY0fDAseWU9NjcxMDg4NjMmUDt6LndvcmRzW1NdPTB8eWUsVD0wfEZ9cmV0dXJuIDAhPT1UP3oud29yZHNbU109MHxUOnoubGVuZ3RoLS0sei5zdHJpcCgp''@;'; put 'put ''fVUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKE8seil7dmFyIGVlO2lmKHo9MHx6fHwxLDE2PT09KE89T3x8MTApfHwiaGV4Ij09PU8pe2VlPSIiO2Zvcih2YXIgbmU9MCx4PTAsUD0wO1A8dGhpcy5sZW5ndGg7UCsrKXt2YXIgVj10aGlzLndvcmRzW1BdLFQ9KDE2Nzc3MjE1JihWPDxu''@;'; put 'put ''ZXx4KSkudG9TdHJpbmcoMTYpO2VlPTAhPSh4PVY+Pj4yNC1uZSYxNjc3NzIxNSl8fFAhPT10aGlzLmxlbmd0aC0xP1lbNi1ULmxlbmd0aF0rVCtlZTpUK2VlLChuZSs9Mik+PTI2JiYobmUtPTI2LFAtLSl9Zm9yKDAhPT14JiYoZWU9eC50b1N0cmluZygxNikrZWUpO2VlLmxlbmd0aCV6IT0w''@;'; put 'put ''OyllZT0iMCIrZWU7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoZWU9Ii0iK2VlKSxlZX1pZihPPT09KDB8TykmJk8+PTImJk88PTM2KXt2YXIgUz1XW09dLEY9TltPXTtlZT0iIjt2YXIgeWU9dGhpcy5jbG9uZSgpO2Zvcih5ZS5uZWdhdGl2ZT0wOyF5ZS5pc1plcm8oKTspe3ZhciBDZT15''@;'; put 'put ''ZS5tb2RuKEYpLnRvU3RyaW5nKE8pO2VlPSh5ZT15ZS5pZGl2bihGKSkuaXNaZXJvKCk/Q2UrZWU6WVtTLUNlLmxlbmd0aF0rQ2UrZWV9Zm9yKHRoaXMuaXNaZXJvKCkmJihlZT0iMCIrZWUpO2VlLmxlbmd0aCV6IT0wOyllZT0iMCIrZWU7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoZWU9''@;'; put 'put ''Ii0iK2VlKSxlZX1FKCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LFUucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIE89dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP08rPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVu''@;'; put 'put ''Z3RoJiYxPT09dGhpcy53b3Jkc1syXT9PKz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmRSghMSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LU86T30sVS5wcm90b3R5''@;'; put 'put ''cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpfSxVLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbihPLHope3JldHVybiBFKHZvaWQgMCE9PVEpLHRoaXMudG9BcnJheUxpa2UoUSxPLHopfSxVLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKE8seil7cmV0''@;'; put 'put ''dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksTyx6KX0sVS5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oTyx6LGVlKXt2YXIgbmU9dGhpcy5ieXRlTGVuZ3RoKCkseD1lZXx8TWF0aC5tYXgoMSxuZSk7RShuZTw9eCwiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0''@;'; put 'put ''aCIpLEUoeD4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIFQsUyxQPSJsZSI9PT16LFY9bmV3IE8oeCksRj10aGlzLmNsb25lKCk7aWYoUCl7Zm9yKFM9MDshRi5pc1plcm8oKTtTKyspVD1GLmFuZGxuKDI1NSksRi5pdXNocm4oOCksVltTXT1UO2Zv''@;'; put 'put ''cig7Uzx4O1MrKylWW1NdPTB9ZWxzZXtmb3IoUz0wO1M8eC1uZTtTKyspVltTXT0wO2ZvcihTPTA7IUYuaXNaZXJvKCk7UysrKVQ9Ri5hbmRsbigyNTUpLEYuaXVzaHJuKDgpLFZbeC1TLTFdPVR9cmV0dXJuIFZ9LFUucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbihP''@;'; put 'put ''KXtyZXR1cm4gMzItTWF0aC5jbHozMihPKX06ZnVuY3Rpb24oTyl7dmFyIHo9TyxlZT0wO3JldHVybiB6Pj00MDk2JiYoZWUrPTEzLHo+Pj49MTMpLHo+PTY0JiYoZWUrPTcsej4+Pj03KSx6Pj04JiYoZWUrPTQsej4+Pj00KSx6Pj0yJiYoZWUrPTIsej4+Pj0yKSxlZSt6fSxVLnByb3RvdHlw''@;'; put 'put ''ZS5femVyb0JpdHM9ZnVuY3Rpb24oTyl7aWYoMD09PU8pcmV0dXJuIDI2O3ZhciB6PU8sZWU9MDtyZXR1cm4gMD09KDgxOTEmeikmJihlZSs9MTMsej4+Pj0xMyksMD09KDEyNyZ6KSYmKGVlKz03LHo+Pj49NyksMD09KDE1JnopJiYoZWUrPTQsej4+Pj00KSwwPT0oMyZ6KSYmKGVlKz0yLHo+''@;'; put 'put ''Pj49MiksMD09KDEmeikmJmVlKyssZWV9LFUucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciB6PXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK3p9LFUucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9u''@;'; put 'put ''KCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIE89MCx6PTA7ejx0aGlzLmxlbmd0aDt6Kyspe3ZhciBlZT10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW3pdKTtpZihPKz1lZSwyNiE9PWVlKWJyZWFrfXJldHVybiBPfSxVLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxVLnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oTyl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oTykuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxVLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5j''@;'; put 'put ''dGlvbihPKXtyZXR1cm4gdGhpcy50ZXN0bihPLTEpP3RoaXMubm90bihPKS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxVLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sVS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuY2xvbmUoKS5pbmVnKCl9LFUucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LFUucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24oTyl7Zm9yKDt0aGlzLmxlbmd0aDxPLmxlbmd0aDspdGhpcy53b3Jkc1t0aGlz''@;'; put 'put ''Lmxlbmd0aCsrXT0wO2Zvcih2YXIgej0wO3o8Ty5sZW5ndGg7eisrKXRoaXMud29yZHNbel09dGhpcy53b3Jkc1t6XXxPLndvcmRzW3pdO3JldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlvcj1mdW5jdGlvbihPKXtyZXR1cm4gRSgwPT0odGhpcy5uZWdhdGl2ZXxPLm5lZ2F0aXZl''@;'; put 'put ''KSksdGhpcy5pdW9yKE8pfSxVLnByb3RvdHlwZS5vcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcihPKTpPLmNsb25lKCkuaW9yKHRoaXMpfSxVLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVu''@;'; put 'put ''Z3RoP3RoaXMuY2xvbmUoKS5pdW9yKE8pOk8uY2xvbmUoKS5pdW9yKHRoaXMpfSxVLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbihPKXt2YXIgejt6PXRoaXMubGVuZ3RoPk8ubGVuZ3RoP086dGhpcztmb3IodmFyIGVlPTA7ZWU8ei5sZW5ndGg7ZWUrKyl0aGlzLndvcmRzW2VlXT10aGlzLndv''@;'; put 'put ''cmRzW2VlXSZPLndvcmRzW2VlXTtyZXR1cm4gdGhpcy5sZW5ndGg9ei5sZW5ndGgsdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKE8pe3JldHVybiBFKDA9PSh0aGlzLm5lZ2F0aXZlfE8ubmVnYXRpdmUpKSx0aGlzLml1YW5kKE8pfSxVLnByb3RvdHlwZS5hbmQ9ZnVu''@;'; put 'put ''Y3Rpb24oTyl7cmV0dXJuIHRoaXMubGVuZ3RoPk8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKE8pOk8uY2xvbmUoKS5pYW5kKHRoaXMpfSxVLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoTyk6Ty5jbG9u''@;'; put 'put ''ZSgpLml1YW5kKHRoaXMpfSxVLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbihPKXt2YXIgeixlZTt0aGlzLmxlbmd0aD5PLmxlbmd0aD8oej10aGlzLGVlPU8pOih6PU8sZWU9dGhpcyk7Zm9yKHZhciBuZT0wO25lPGVlLmxlbmd0aDtuZSsrKXRoaXMud29yZHNbbmVdPXoud29yZHNbbmVdXmVl''@;'; put 'put ''LndvcmRzW25lXTtpZih0aGlzIT09eilmb3IoO25lPHoubGVuZ3RoO25lKyspdGhpcy53b3Jkc1tuZV09ei53b3Jkc1tuZV07cmV0dXJuIHRoaXMubGVuZ3RoPXoubGVuZ3RoLHRoaXMuc3RyaXAoKX0sVS5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbihPKXtyZXR1cm4gRSgwPT0odGhpcy5uZWdh''@;'; put 'put ''dGl2ZXxPLm5lZ2F0aXZlKSksdGhpcy5pdXhvcihPKX0sVS5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcihPKTpPLmNsb25lKCkuaXhvcih0aGlzKX0sVS5wcm90b3R5cGUudXhvcj1mdW5jdGlvbihPKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5sZW5ndGg+Ty5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKE8pOk8uY2xvbmUoKS5pdXhvcih0aGlzKX0sVS5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApO3ZhciB6PTB8TWF0aC5jZWlsKE8vMjYpLGVlPU8lMjY7dGhpcy5f''@;'; put 'put ''ZXhwYW5kKHopLGVlPjAmJnotLTtmb3IodmFyIG5lPTA7bmU8ejtuZSsrKXRoaXMud29yZHNbbmVdPTY3MTA4ODYzJn50aGlzLndvcmRzW25lXTtyZXR1cm4gZWU+MCYmKHRoaXMud29yZHNbbmVdPX50aGlzLndvcmRzW25lXSY2NzEwODg2Mz4+MjYtZWUpLHRoaXMuc3RyaXAoKX0sVS5wcm90''@;'; put 'put ''b3R5cGUubm90bj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKE8pfSxVLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKE8seil7RSgibnVtYmVyIj09dHlwZW9mIE8mJk8+PTApO3ZhciBlZT1PLzI2fDAsbmU9TyUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKGVlKzEpLHRoaXMu''@;'; put 'put ''d29yZHNbZWVdPXo/dGhpcy53b3Jkc1tlZV18MTw8bmU6dGhpcy53b3Jkc1tlZV0mfigxPDxuZSksdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKE8pe3ZhciB6LGVlLG5lO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Ty5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdh''@;'; put 'put ''dGl2ZT0wLHo9dGhpcy5pc3ViKE8pLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PU8ubmVnYXRpdmUpcmV0dXJuIE8ubmVnYXRpdmU9MCx6PXRoaXMuaXN1YihPKSxPLm5lZ2F0aXZlPTEsei5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0''@;'; put 'put ''aD5PLmxlbmd0aD8oZWU9dGhpcyxuZT1PKTooZWU9TyxuZT10aGlzKTtmb3IodmFyIHg9MCxQPTA7UDxuZS5sZW5ndGg7UCsrKXRoaXMud29yZHNbUF09NjcxMDg4NjMmKHo9KDB8ZWUud29yZHNbUF0pKygwfG5lLndvcmRzW1BdKSt4KSx4PXo+Pj4yNjtmb3IoOzAhPT14JiZQPGVlLmxlbmd0''@;'; put 'put ''aDtQKyspdGhpcy53b3Jkc1tQXT02NzEwODg2MyYoej0oMHxlZS53b3Jkc1tQXSkreCkseD16Pj4+MjY7aWYodGhpcy5sZW5ndGg9ZWUubGVuZ3RoLDAhPT14KXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPXgsdGhpcy5sZW5ndGgrKztlbHNlIGlmKGVlIT09dGhpcylmb3IoO1A8ZWUubGVuZ3Ro''@;'; put 'put ''O1ArKyl0aGlzLndvcmRzW1BdPWVlLndvcmRzW1BdO3JldHVybiB0aGlzfSxVLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oTyl7dmFyIHo7cmV0dXJuIDAhPT1PLm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oTy5uZWdhdGl2ZT0wLHo9dGhpcy5zdWIoTyksTy5uZWdhdGl2ZV49MSx6KTow''@;'; put 'put ''PT09Ty5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCx6PU8uc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSx6KTp0aGlzLmxlbmd0aD5PLmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZChPKTpPLmNsb25lKCkuaWFkZCh0aGlzKX0sVS5wcm90b3R5cGUuaXN1Yj1m''@;'; put 'put ''dW5jdGlvbihPKXtpZigwIT09Ty5uZWdhdGl2ZSl7Ty5uZWdhdGl2ZT0wO3ZhciB6PXRoaXMuaWFkZChPKTtyZXR1cm4gTy5uZWdhdGl2ZT0xLHouX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoTyksdGhpcy5uZWdhdGl2''@;'; put 'put ''ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIG5lLHgsZWU9dGhpcy5jbXAoTyk7aWYoMD09PWVlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztlZT4wPyhuZT10aGlzLHg9Tyk6KG5lPU8seD10aGlzKTtmb3IodmFyIFA9MCxWPTA7Vjx4''@;'; put 'put ''Lmxlbmd0aDtWKyspUD0oej0oMHxuZS53b3Jkc1tWXSktKDB8eC53b3Jkc1tWXSkrUCk+PjI2LHRoaXMud29yZHNbVl09NjcxMDg4NjMmejtmb3IoOzAhPT1QJiZWPG5lLmxlbmd0aDtWKyspUD0oej0oMHxuZS53b3Jkc1tWXSkrUCk+PjI2LHRoaXMud29yZHNbVl09NjcxMDg4NjMmejtpZigw''@;'; put 'put ''PT09UCYmVjxuZS5sZW5ndGgmJm5lIT09dGhpcylmb3IoO1Y8bmUubGVuZ3RoO1YrKyl0aGlzLndvcmRzW1ZdPW5lLndvcmRzW1ZdO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxWKSxuZSE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKX0sVS5w''@;'; put 'put ''cm90b3R5cGUuc3ViPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihPKX07dmFyIEo9ZnVuY3Rpb24oTyx6LGVlKXt2YXIgVCxTLEYsbmU9Ty53b3Jkcyx4PXoud29yZHMsUD1lZS53b3JkcyxWPTAseWU9MHxuZVswXSxDZT04MTkxJnllLERlPXllPj4+MTMsUGU9MHxuZVsx''@;'; put 'put ''XSxRZT04MTkxJlBlLCRlPVBlPj4+MTMsZ3Q9MHxuZVsyXSx3dD04MTkxJmd0LG10PWd0Pj4+MTMsdnQ9MHxuZVszXSxBdD04MTkxJnZ0LGh0PXZ0Pj4+MTMsQnQ9MHxuZVs0XSxvbj04MTkxJkJ0LF90PUJ0Pj4+MTMsdHQ9MHxuZVs1XSxldD04MTkxJnR0LGx0PXR0Pj4+MTMsTHQ9MHxuZVs2''@;'; put 'put ''XSxDdD04MTkxJkx0LGZ0PUx0Pj4+MTMsSHQ9MHxuZVs3XSxHZT04MTkxJkh0LFVlPUh0Pj4+MTMseXQ9MHxuZVs4XSxqdD04MTkxJnl0LEp0PXl0Pj4+MTMsZ249MHxuZVs5XSxkbj04MTkxJmduLHluPWduPj4+MTMsbG49MHx4WzBdLE5uPTgxOTEmbG4sYm49bG4+Pj4xMyxlcj0wfHhbMV0s''@;'; put 'put ''c3I9ODE5MSZlcixYbj1lcj4+PjEzLEZyPTB8eFsyXSx4cj04MTkxJkZyLHF0PUZyPj4+MTMscHI9MHx4WzNdLG5yPTgxOTEmcHIsQW49cHI+Pj4xMyxxbj0wfHhbNF0sV3Q9ODE5MSZxbixwbj1xbj4+PjEzLEtuPTB8eFs1XSxOdD04MTkxJktuLHNuPUtuPj4+MTMsVW49MHx4WzZdLHduPTgx''@;'; put 'put ''OTEmVW4sdG49VW4+Pj4xMyx6bj0wfHhbN10sVHI9ODE5MSZ6bixCbj16bj4+PjEzLGtyPTB8eFs4XSxtbj04MTkxJmtyLHVuPWtyPj4+MTMsY249MHx4WzldLF9uPTgxOTEmY24sR3Q9Y24+Pj4xMztlZS5uZWdhdGl2ZT1PLm5lZ2F0aXZlXnoubmVnYXRpdmUsZWUubGVuZ3RoPTE5O3ZhciBr''@;'; put 'put ''bj0oVisoVD1NYXRoLmltdWwoQ2UsTm4pKXwwKSsoKDgxOTEmKFM9KFM9TWF0aC5pbXVsKENlLGJuKSkrTWF0aC5pbXVsKERlLE5uKXwwKSk8PDEzKXwwO1Y9KChGPU1hdGguaW11bChEZSxibikpKyhTPj4+MTMpfDApKyhrbj4+PjI2KXwwLGtuJj02NzEwODg2MyxUPU1hdGguaW11bChRZSxO''@;'; put 'put ''biksUz0oUz1NYXRoLmltdWwoUWUsYm4pKStNYXRoLmltdWwoJGUsTm4pfDAsRj1NYXRoLmltdWwoJGUsYm4pO3ZhciBWbj0oVisoVD1UK01hdGguaW11bChDZSxzcil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLFhuKXwwKStNYXRoLmltdWwoRGUsc3IpfDApKTw8MTMpfDA7''@;'; put 'put ''Vj0oKEY9RitNYXRoLmltdWwoRGUsWG4pfDApKyhTPj4+MTMpfDApKyhWbj4+PjI2KXwwLFZuJj02NzEwODg2MyxUPU1hdGguaW11bCh3dCxObiksUz0oUz1NYXRoLmltdWwod3QsYm4pKStNYXRoLmltdWwobXQsTm4pfDAsRj1NYXRoLmltdWwobXQsYm4pLFQ9VCtNYXRoLmltdWwoUWUsc3Ip''@;'; put 'put ''fDAsUz0oUz1TK01hdGguaW11bChRZSxYbil8MCkrTWF0aC5pbXVsKCRlLHNyKXwwLEY9RitNYXRoLmltdWwoJGUsWG4pfDA7dmFyIGVuPShWKyhUPVQrTWF0aC5pbXVsKENlLHhyKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UscXQpfDApK01hdGguaW11bChEZSx4cil8MCkp''@;'; put 'put ''PDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxxdCl8MCkrKFM+Pj4xMyl8MCkrKGVuPj4+MjYpfDAsZW4mPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKEF0LE5uKSxTPShTPU1hdGguaW11bChBdCxibikpK01hdGguaW11bChodCxObil8MCxGPU1hdGguaW11bChodCxibiksVD1UK01hdGguaW11''@;'; put 'put ''bCh3dCxzcil8MCxTPShTPVMrTWF0aC5pbXVsKHd0LFhuKXwwKStNYXRoLmltdWwobXQsc3IpfDAsRj1GK01hdGguaW11bChtdCxYbil8MCxUPVQrTWF0aC5pbXVsKFFlLHhyKXwwLFM9KFM9UytNYXRoLmltdWwoUWUscXQpfDApK01hdGguaW11bCgkZSx4cil8MCxGPUYrTWF0aC5pbXVsKCRl''@;'; put 'put ''LHF0KXwwO3ZhciBJbj0oVisoVD1UK01hdGguaW11bChDZSxucil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLEFuKXwwKStNYXRoLmltdWwoRGUsbnIpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsQW4pfDApKyhTPj4+MTMpfDApKyhJbj4+PjI2KXwwLEluJj02''@;'; put 'put ''NzEwODg2MyxUPU1hdGguaW11bChvbixObiksUz0oUz1NYXRoLmltdWwob24sYm4pKStNYXRoLmltdWwoX3QsTm4pfDAsRj1NYXRoLmltdWwoX3QsYm4pLFQ9VCtNYXRoLmltdWwoQXQsc3IpfDAsUz0oUz1TK01hdGguaW11bChBdCxYbil8MCkrTWF0aC5pbXVsKGh0LHNyKXwwLEY9RitNYXRo''@;'; put 'put ''LmltdWwoaHQsWG4pfDAsVD1UK01hdGguaW11bCh3dCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKHd0LHF0KXwwKStNYXRoLmltdWwobXQseHIpfDAsRj1GK01hdGguaW11bChtdCxxdCl8MCxUPVQrTWF0aC5pbXVsKFFlLG5yKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsQW4pfDApK01hdGguaW11''@;'; put 'put ''bCgkZSxucil8MCxGPUYrTWF0aC5pbXVsKCRlLEFuKXwwO3ZhciBKbj0oVisoVD1UK01hdGguaW11bChDZSxXdCl8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLHBuKXwwKStNYXRoLmltdWwoRGUsV3QpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUscG4pfDApKyhT''@;'; put 'put ''Pj4+MTMpfDApKyhKbj4+PjI2KXwwLEpuJj02NzEwODg2MyxUPU1hdGguaW11bChldCxObiksUz0oUz1NYXRoLmltdWwoZXQsYm4pKStNYXRoLmltdWwobHQsTm4pfDAsRj1NYXRoLmltdWwobHQsYm4pLFQ9VCtNYXRoLmltdWwob24sc3IpfDAsUz0oUz1TK01hdGguaW11bChvbixYbil8MCkr''@;'; put 'put ''TWF0aC5pbXVsKF90LHNyKXwwLEY9RitNYXRoLmltdWwoX3QsWG4pfDAsVD1UK01hdGguaW11bChBdCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKEF0LHF0KXwwKStNYXRoLmltdWwoaHQseHIpfDAsRj1GK01hdGguaW11bChodCxxdCl8MCxUPVQrTWF0aC5pbXVsKHd0LG5yKXwwLFM9KFM9UytN''@;'; put 'put ''YXRoLmltdWwod3QsQW4pfDApK01hdGguaW11bChtdCxucil8MCxGPUYrTWF0aC5pbXVsKG10LEFuKXwwLFQ9VCtNYXRoLmltdWwoUWUsV3QpfDAsUz0oUz1TK01hdGguaW11bChRZSxwbil8MCkrTWF0aC5pbXVsKCRlLFd0KXwwLEY9RitNYXRoLmltdWwoJGUscG4pfDA7dmFyIG9yPShWKyhU''@;'; put 'put ''PVQrTWF0aC5pbXVsKENlLE50KXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2Usc24pfDApK01hdGguaW11bChEZSxOdCl8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSxzbil8MCkrKFM+Pj4xMyl8MCkrKG9yPj4+MjYpfDAsb3ImPTY3MTA4ODYzLFQ9TWF0aC5pbXVs''@;'; put 'put ''KEN0LE5uKSxTPShTPU1hdGguaW11bChDdCxibikpK01hdGguaW11bChmdCxObil8MCxGPU1hdGguaW11bChmdCxibiksVD1UK01hdGguaW11bChldCxzcil8MCxTPShTPVMrTWF0aC5pbXVsKGV0LFhuKXwwKStNYXRoLmltdWwobHQsc3IpfDAsRj1GK01hdGguaW11bChsdCxYbil8MCxUPVQr''@;'; put 'put ''TWF0aC5pbXVsKG9uLHhyKXwwLFM9KFM9UytNYXRoLmltdWwob24scXQpfDApK01hdGguaW11bChfdCx4cil8MCxGPUYrTWF0aC5pbXVsKF90LHF0KXwwLFQ9VCtNYXRoLmltdWwoQXQsbnIpfDAsUz0oUz1TK01hdGguaW11bChBdCxBbil8MCkrTWF0aC5pbXVsKGh0LG5yKXwwLEY9RitNYXRo''@;'; put 'put ''LmltdWwoaHQsQW4pfDAsVD1UK01hdGguaW11bCh3dCxXdCl8MCxTPShTPVMrTWF0aC5pbXVsKHd0LHBuKXwwKStNYXRoLmltdWwobXQsV3QpfDAsRj1GK01hdGguaW11bChtdCxwbil8MCxUPVQrTWF0aC5pbXVsKFFlLE50KXwwLFM9KFM9UytNYXRoLmltdWwoUWUsc24pfDApK01hdGguaW11''@;'; put 'put ''bCgkZSxOdCl8MCxGPUYrTWF0aC5pbXVsKCRlLHNuKXwwO3ZhciBncj0oVisoVD1UK01hdGguaW11bChDZSx3bil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLHRuKXwwKStNYXRoLmltdWwoRGUsd24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsdG4pfDApKyhT''@;'; put 'put ''Pj4+MTMpfDApKyhncj4+PjI2KXwwLGdyJj02NzEwODg2MyxUPU1hdGguaW11bChHZSxObiksUz0oUz1NYXRoLmltdWwoR2UsYm4pKStNYXRoLmltdWwoVWUsTm4pfDAsRj1NYXRoLmltdWwoVWUsYm4pLFQ9VCtNYXRoLmltdWwoQ3Qsc3IpfDAsUz0oUz1TK01hdGguaW11bChDdCxYbil8MCkr''@;'; put 'put ''TWF0aC5pbXVsKGZ0LHNyKXwwLEY9RitNYXRoLmltdWwoZnQsWG4pfDAsVD1UK01hdGguaW11bChldCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKGV0LHF0KXwwKStNYXRoLmltdWwobHQseHIpfDAsRj1GK01hdGguaW11bChsdCxxdCl8MCxUPVQrTWF0aC5pbXVsKG9uLG5yKXwwLFM9KFM9UytN''@;'; put 'put ''YXRoLmltdWwob24sQW4pfDApK01hdGguaW11bChfdCxucil8MCxGPUYrTWF0aC5pbXVsKF90LEFuKXwwLFQ9VCtNYXRoLmltdWwoQXQsV3QpfDAsUz0oUz1TK01hdGguaW11bChBdCxwbil8MCkrTWF0aC5pbXVsKGh0LFd0KXwwLEY9RitNYXRoLmltdWwoaHQscG4pfDAsVD1UK01hdGguaW11''@;'; put 'put ''bCh3dCxOdCl8MCxTPShTPVMrTWF0aC5pbXVsKHd0LHNuKXwwKStNYXRoLmltdWwobXQsTnQpfDAsRj1GK01hdGguaW11bChtdCxzbil8MCxUPVQrTWF0aC5pbXVsKFFlLHduKXwwLFM9KFM9UytNYXRoLmltdWwoUWUsdG4pfDApK01hdGguaW11bCgkZSx3bil8MCxGPUYrTWF0aC5pbXVsKCRl''@;'; put 'put ''LHRuKXwwO3ZhciBLcj0oVisoVD1UK01hdGguaW11bChDZSxUcil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLEJuKXwwKStNYXRoLmltdWwoRGUsVHIpfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoRGUsQm4pfDApKyhTPj4+MTMpfDApKyhLcj4+PjI2KXwwLEtyJj02''@;'; put 'put ''NzEwODg2MyxUPU1hdGguaW11bChqdCxObiksUz0oUz1NYXRoLmltdWwoanQsYm4pKStNYXRoLmltdWwoSnQsTm4pfDAsRj1NYXRoLmltdWwoSnQsYm4pLFQ9VCtNYXRoLmltdWwoR2Usc3IpfDAsUz0oUz1TK01hdGguaW11bChHZSxYbil8MCkrTWF0aC5pbXVsKFVlLHNyKXwwLEY9RitNYXRo''@;'; put 'put ''LmltdWwoVWUsWG4pfDAsVD1UK01hdGguaW11bChDdCx4cil8MCxTPShTPVMrTWF0aC5pbXVsKEN0LHF0KXwwKStNYXRoLmltdWwoZnQseHIpfDAsRj1GK01hdGguaW11bChmdCxxdCl8MCxUPVQrTWF0aC5pbXVsKGV0LG5yKXwwLFM9KFM9UytNYXRoLmltdWwoZXQsQW4pfDApK01hdGguaW11''@;'; put 'put ''bChsdCxucil8MCxGPUYrTWF0aC5pbXVsKGx0LEFuKXwwLFQ9VCtNYXRoLmltdWwob24sV3QpfDAsUz0oUz1TK01hdGguaW11bChvbixwbil8MCkrTWF0aC5pbXVsKF90LFd0KXwwLEY9RitNYXRoLmltdWwoX3QscG4pfDAsVD1UK01hdGguaW11bChBdCxOdCl8MCxTPShTPVMrTWF0aC5pbXVs''@;'; put 'put ''KEF0LHNuKXwwKStNYXRoLmltdWwoaHQsTnQpfDAsRj1GK01hdGguaW11bChodCxzbil8MCxUPVQrTWF0aC5pbXVsKHd0LHduKXwwLFM9KFM9UytNYXRoLmltdWwod3QsdG4pfDApK01hdGguaW11bChtdCx3bil8MCxGPUYrTWF0aC5pbXVsKG10LHRuKXwwLFQ9VCtNYXRoLmltdWwoUWUsVHIp''@;'; put 'put ''fDAsUz0oUz1TK01hdGguaW11bChRZSxCbil8MCkrTWF0aC5pbXVsKCRlLFRyKXwwLEY9RitNYXRoLmltdWwoJGUsQm4pfDA7dmFyIFZyPShWKyhUPVQrTWF0aC5pbXVsKENlLG1uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoQ2UsdW4pfDApK01hdGguaW11bChEZSxtbil8MCkp''@;'; put 'put ''PDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChEZSx1bil8MCkrKFM+Pj4xMyl8MCkrKFZyPj4+MjYpfDAsVnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLE5uKSxTPShTPU1hdGguaW11bChkbixibikpK01hdGguaW11bCh5bixObil8MCxGPU1hdGguaW11bCh5bixibiksVD1UK01hdGguaW11''@;'; put 'put ''bChqdCxzcil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LFhuKXwwKStNYXRoLmltdWwoSnQsc3IpfDAsRj1GK01hdGguaW11bChKdCxYbil8MCxUPVQrTWF0aC5pbXVsKEdlLHhyKXwwLFM9KFM9UytNYXRoLmltdWwoR2UscXQpfDApK01hdGguaW11bChVZSx4cil8MCxGPUYrTWF0aC5pbXVsKFVl''@;'; put 'put ''LHF0KXwwLFQ9VCtNYXRoLmltdWwoQ3QsbnIpfDAsUz0oUz1TK01hdGguaW11bChDdCxBbil8MCkrTWF0aC5pbXVsKGZ0LG5yKXwwLEY9RitNYXRoLmltdWwoZnQsQW4pfDAsVD1UK01hdGguaW11bChldCxXdCl8MCxTPShTPVMrTWF0aC5pbXVsKGV0LHBuKXwwKStNYXRoLmltdWwobHQsV3Qp''@;'; put 'put ''fDAsRj1GK01hdGguaW11bChsdCxwbil8MCxUPVQrTWF0aC5pbXVsKG9uLE50KXwwLFM9KFM9UytNYXRoLmltdWwob24sc24pfDApK01hdGguaW11bChfdCxOdCl8MCxGPUYrTWF0aC5pbXVsKF90LHNuKXwwLFQ9VCtNYXRoLmltdWwoQXQsd24pfDAsUz0oUz1TK01hdGguaW11bChBdCx0bil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKGh0LHduKXwwLEY9RitNYXRoLmltdWwoaHQsdG4pfDAsVD1UK01hdGguaW11bCh3dCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKHd0LEJuKXwwKStNYXRoLmltdWwobXQsVHIpfDAsRj1GK01hdGguaW11bChtdCxCbil8MCxUPVQrTWF0aC5pbXVsKFFlLG1uKXwwLFM9KFM9''@;'; put 'put ''UytNYXRoLmltdWwoUWUsdW4pfDApK01hdGguaW11bCgkZSxtbil8MCxGPUYrTWF0aC5pbXVsKCRlLHVuKXwwO3ZhciBpaT0oVisoVD1UK01hdGguaW11bChDZSxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKENlLEd0KXwwKStNYXRoLmltdWwoRGUsX24pfDApKTw8MTMpfDA7''@;'; put 'put ''Vj0oKEY9RitNYXRoLmltdWwoRGUsR3QpfDApKyhTPj4+MTMpfDApKyhpaT4+PjI2KXwwLGlpJj02NzEwODg2MyxUPU1hdGguaW11bChkbixzciksUz0oUz1NYXRoLmltdWwoZG4sWG4pKStNYXRoLmltdWwoeW4sc3IpfDAsRj1NYXRoLmltdWwoeW4sWG4pLFQ9VCtNYXRoLmltdWwoanQseHIp''@;'; put 'put ''fDAsUz0oUz1TK01hdGguaW11bChqdCxxdCl8MCkrTWF0aC5pbXVsKEp0LHhyKXwwLEY9RitNYXRoLmltdWwoSnQscXQpfDAsVD1UK01hdGguaW11bChHZSxucil8MCxTPShTPVMrTWF0aC5pbXVsKEdlLEFuKXwwKStNYXRoLmltdWwoVWUsbnIpfDAsRj1GK01hdGguaW11bChVZSxBbil8MCxU''@;'; put 'put ''PVQrTWF0aC5pbXVsKEN0LFd0KXwwLFM9KFM9UytNYXRoLmltdWwoQ3QscG4pfDApK01hdGguaW11bChmdCxXdCl8MCxGPUYrTWF0aC5pbXVsKGZ0LHBuKXwwLFQ9VCtNYXRoLmltdWwoZXQsTnQpfDAsUz0oUz1TK01hdGguaW11bChldCxzbil8MCkrTWF0aC5pbXVsKGx0LE50KXwwLEY9RitN''@;'; put 'put ''YXRoLmltdWwobHQsc24pfDAsVD1UK01hdGguaW11bChvbix3bil8MCxTPShTPVMrTWF0aC5pbXVsKG9uLHRuKXwwKStNYXRoLmltdWwoX3Qsd24pfDAsRj1GK01hdGguaW11bChfdCx0bil8MCxUPVQrTWF0aC5pbXVsKEF0LFRyKXwwLFM9KFM9UytNYXRoLmltdWwoQXQsQm4pfDApK01hdGgu''@;'; put 'put ''aW11bChodCxUcil8MCxGPUYrTWF0aC5pbXVsKGh0LEJuKXwwLFQ9VCtNYXRoLmltdWwod3QsbW4pfDAsUz0oUz1TK01hdGguaW11bCh3dCx1bil8MCkrTWF0aC5pbXVsKG10LG1uKXwwLEY9RitNYXRoLmltdWwobXQsdW4pfDA7dmFyIFJyPShWKyhUPVQrTWF0aC5pbXVsKFFlLF9uKXwwKXww''@;'; put 'put ''KSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoUWUsR3QpfDApK01hdGguaW11bCgkZSxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bCgkZSxHdCl8MCkrKFM+Pj4xMyl8MCkrKFJyPj4+MjYpfDAsUnImPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLHhyKSxTPShTPU1hdGguaW11bChk''@;'; put 'put ''bixxdCkpK01hdGguaW11bCh5bix4cil8MCxGPU1hdGguaW11bCh5bixxdCksVD1UK01hdGguaW11bChqdCxucil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LEFuKXwwKStNYXRoLmltdWwoSnQsbnIpfDAsRj1GK01hdGguaW11bChKdCxBbil8MCxUPVQrTWF0aC5pbXVsKEdlLFd0KXwwLFM9KFM9''@;'; put 'put ''UytNYXRoLmltdWwoR2UscG4pfDApK01hdGguaW11bChVZSxXdCl8MCxGPUYrTWF0aC5pbXVsKFVlLHBuKXwwLFQ9VCtNYXRoLmltdWwoQ3QsTnQpfDAsUz0oUz1TK01hdGguaW11bChDdCxzbil8MCkrTWF0aC5pbXVsKGZ0LE50KXwwLEY9RitNYXRoLmltdWwoZnQsc24pfDAsVD1UK01hdGgu''@;'; put 'put ''aW11bChldCx3bil8MCxTPShTPVMrTWF0aC5pbXVsKGV0LHRuKXwwKStNYXRoLmltdWwobHQsd24pfDAsRj1GK01hdGguaW11bChsdCx0bil8MCxUPVQrTWF0aC5pbXVsKG9uLFRyKXwwLFM9KFM9UytNYXRoLmltdWwob24sQm4pfDApK01hdGguaW11bChfdCxUcil8MCxGPUYrTWF0aC5pbXVs''@;'; put 'put ''KF90LEJuKXwwLFQ9VCtNYXRoLmltdWwoQXQsbW4pfDAsUz0oUz1TK01hdGguaW11bChBdCx1bil8MCkrTWF0aC5pbXVsKGh0LG1uKXwwLEY9RitNYXRoLmltdWwoaHQsdW4pfDA7dmFyIGxpPShWKyhUPVQrTWF0aC5pbXVsKHd0LF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwo''@;'; put 'put ''d3QsR3QpfDApK01hdGguaW11bChtdCxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChtdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKGxpPj4+MjYpfDAsbGkmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLG5yKSxTPShTPU1hdGguaW11bChkbixBbikpK01hdGguaW11bCh5bixucil8MCxG''@;'; put 'put ''PU1hdGguaW11bCh5bixBbiksVD1UK01hdGguaW11bChqdCxXdCl8MCxTPShTPVMrTWF0aC5pbXVsKGp0LHBuKXwwKStNYXRoLmltdWwoSnQsV3QpfDAsRj1GK01hdGguaW11bChKdCxwbil8MCxUPVQrTWF0aC5pbXVsKEdlLE50KXwwLFM9KFM9UytNYXRoLmltdWwoR2Usc24pfDApK01hdGgu''@;'; put 'put ''aW11bChVZSxOdCl8MCxGPUYrTWF0aC5pbXVsKFVlLHNuKXwwLFQ9VCtNYXRoLmltdWwoQ3Qsd24pfDAsUz0oUz1TK01hdGguaW11bChDdCx0bil8MCkrTWF0aC5pbXVsKGZ0LHduKXwwLEY9RitNYXRoLmltdWwoZnQsdG4pfDAsVD1UK01hdGguaW11bChldCxUcil8MCxTPShTPVMrTWF0aC5p''@;'; put 'put ''bXVsKGV0LEJuKXwwKStNYXRoLmltdWwobHQsVHIpfDAsRj1GK01hdGguaW11bChsdCxCbil8MCxUPVQrTWF0aC5pbXVsKG9uLG1uKXwwLFM9KFM9UytNYXRoLmltdWwob24sdW4pfDApK01hdGguaW11bChfdCxtbil8MCxGPUYrTWF0aC5pbXVsKF90LHVuKXwwO3ZhciBNaT0oVisoVD1UK01h''@;'; put 'put ''dGguaW11bChBdCxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKEF0LEd0KXwwKStNYXRoLmltdWwoaHQsX24pfDApKTw8MTMpfDA7Vj0oKEY9RitNYXRoLmltdWwoaHQsR3QpfDApKyhTPj4+MTMpfDApKyhNaT4+PjI2KXwwLE1pJj02NzEwODg2MyxUPU1hdGguaW11bChkbixX''@;'; put 'put ''dCksUz0oUz1NYXRoLmltdWwoZG4scG4pKStNYXRoLmltdWwoeW4sV3QpfDAsRj1NYXRoLmltdWwoeW4scG4pLFQ9VCtNYXRoLmltdWwoanQsTnQpfDAsUz0oUz1TK01hdGguaW11bChqdCxzbil8MCkrTWF0aC5pbXVsKEp0LE50KXwwLEY9RitNYXRoLmltdWwoSnQsc24pfDAsVD1UK01hdGgu''@;'; put 'put ''aW11bChHZSx3bil8MCxTPShTPVMrTWF0aC5pbXVsKEdlLHRuKXwwKStNYXRoLmltdWwoVWUsd24pfDAsRj1GK01hdGguaW11bChVZSx0bil8MCxUPVQrTWF0aC5pbXVsKEN0LFRyKXwwLFM9KFM9UytNYXRoLmltdWwoQ3QsQm4pfDApK01hdGguaW11bChmdCxUcil8MCxGPUYrTWF0aC5pbXVs''@;'; put 'put ''KGZ0LEJuKXwwLFQ9VCtNYXRoLmltdWwoZXQsbW4pfDAsUz0oUz1TK01hdGguaW11bChldCx1bil8MCkrTWF0aC5pbXVsKGx0LG1uKXwwLEY9RitNYXRoLmltdWwobHQsdW4pfDA7dmFyIG8wPShWKyhUPVQrTWF0aC5pbXVsKG9uLF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwo''@;'; put 'put ''b24sR3QpfDApK01hdGguaW11bChfdCxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChfdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKG8wPj4+MjYpfDAsbzAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLE50KSxTPShTPU1hdGguaW11bChkbixzbikpK01hdGguaW11bCh5bixOdCl8MCxG''@;'; put 'put ''PU1hdGguaW11bCh5bixzbiksVD1UK01hdGguaW11bChqdCx3bil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LHRuKXwwKStNYXRoLmltdWwoSnQsd24pfDAsRj1GK01hdGguaW11bChKdCx0bil8MCxUPVQrTWF0aC5pbXVsKEdlLFRyKXwwLFM9KFM9UytNYXRoLmltdWwoR2UsQm4pfDApK01hdGgu''@;'; put 'put ''aW11bChVZSxUcil8MCxGPUYrTWF0aC5pbXVsKFVlLEJuKXwwLFQ9VCtNYXRoLmltdWwoQ3QsbW4pfDAsUz0oUz1TK01hdGguaW11bChDdCx1bil8MCkrTWF0aC5pbXVsKGZ0LG1uKXwwLEY9RitNYXRoLmltdWwoZnQsdW4pfDA7dmFyIG4wPShWKyhUPVQrTWF0aC5pbXVsKGV0LF9uKXwwKXww''@;'; put 'put ''KSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoZXQsR3QpfDApK01hdGguaW11bChsdCxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChsdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKG4wPj4+MjYpfDAsbjAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLHduKSxTPShTPU1hdGguaW11bChk''@;'; put 'put ''bix0bikpK01hdGguaW11bCh5bix3bil8MCxGPU1hdGguaW11bCh5bix0biksVD1UK01hdGguaW11bChqdCxUcil8MCxTPShTPVMrTWF0aC5pbXVsKGp0LEJuKXwwKStNYXRoLmltdWwoSnQsVHIpfDAsRj1GK01hdGguaW11bChKdCxCbil8MCxUPVQrTWF0aC5pbXVsKEdlLG1uKXwwLFM9KFM9''@;'; put 'put ''UytNYXRoLmltdWwoR2UsdW4pfDApK01hdGguaW11bChVZSxtbil8MCxGPUYrTWF0aC5pbXVsKFVlLHVuKXwwO3ZhciBkMD0oVisoVD1UK01hdGguaW11bChDdCxfbil8MCl8MCkrKCg4MTkxJihTPShTPVMrTWF0aC5pbXVsKEN0LEd0KXwwKStNYXRoLmltdWwoZnQsX24pfDApKTw8MTMpfDA7''@;'; put 'put ''Vj0oKEY9RitNYXRoLmltdWwoZnQsR3QpfDApKyhTPj4+MTMpfDApKyhkMD4+PjI2KXwwLGQwJj02NzEwODg2MyxUPU1hdGguaW11bChkbixUciksUz0oUz1NYXRoLmltdWwoZG4sQm4pKStNYXRoLmltdWwoeW4sVHIpfDAsRj1NYXRoLmltdWwoeW4sQm4pLFQ9VCtNYXRoLmltdWwoanQsbW4p''@;'; put 'put ''fDAsUz0oUz1TK01hdGguaW11bChqdCx1bil8MCkrTWF0aC5pbXVsKEp0LG1uKXwwLEY9RitNYXRoLmltdWwoSnQsdW4pfDA7dmFyIG0wPShWKyhUPVQrTWF0aC5pbXVsKEdlLF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoR2UsR3QpfDApK01hdGguaW11bChVZSxfbil8MCkp''@;'; put 'put ''PDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChVZSxHdCl8MCkrKFM+Pj4xMyl8MCkrKG0wPj4+MjYpfDAsbTAmPTY3MTA4ODYzLFQ9TWF0aC5pbXVsKGRuLG1uKSxTPShTPU1hdGguaW11bChkbix1bikpK01hdGguaW11bCh5bixtbil8MCxGPU1hdGguaW11bCh5bix1bik7dmFyIEcwPShWKyhU''@;'; put 'put ''PVQrTWF0aC5pbXVsKGp0LF9uKXwwKXwwKSsoKDgxOTEmKFM9KFM9UytNYXRoLmltdWwoanQsR3QpfDApK01hdGguaW11bChKdCxfbil8MCkpPDwxMyl8MDtWPSgoRj1GK01hdGguaW11bChKdCxHdCl8MCkrKFM+Pj4xMyl8MCkrKEcwPj4+MjYpfDAsRzAmPTY3MTA4ODYzO3ZhciBEaT0oViso''@;'; put 'put ''VD1NYXRoLmltdWwoZG4sX24pKXwwKSsoKDgxOTEmKFM9KFM9TWF0aC5pbXVsKGRuLEd0KSkrTWF0aC5pbXVsKHluLF9uKXwwKSk8PDEzKXwwO3JldHVybiBWPSgoRj1NYXRoLmltdWwoeW4sR3QpKSsoUz4+PjEzKXwwKSsoRGk+Pj4yNil8MCxEaSY9NjcxMDg4NjMsUFswXT1rbixQWzFdPVZu''@;'; put 'put ''LFBbMl09ZW4sUFszXT1JbixQWzRdPUpuLFBbNV09b3IsUFs2XT1ncixQWzddPUtyLFBbOF09VnIsUFs5XT1paSxQWzEwXT1ScixQWzExXT1saSxQWzEyXT1NaSxQWzEzXT1vMCxQWzE0XT1uMCxQWzE1XT1kMCxQWzE2XT1tMCxQWzE3XT1HMCxQWzE4XT1EaSwwIT09ViYmKFBbMTldPVYsZWUu''@;'; put 'put ''bGVuZ3RoKyspLGVlfTtmdW5jdGlvbiBvZShoZSxPLHope3JldHVybihuZXcgY2UpLm11bHAoaGUsTyx6KX1mdW5jdGlvbiBjZShoZSxPKXt0aGlzLng9aGUsdGhpcy55PU99TWF0aC5pbXVsfHwoSj1LKSxVLnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihPLHope3ZhciBlZSxuZT10aGlzLmxl''@;'; put 'put ''bmd0aCtPLmxlbmd0aDtyZXR1cm4gZWU9MTA9PT10aGlzLmxlbmd0aCYmMTA9PT1PLmxlbmd0aD9KKHRoaXMsTyx6KTpuZTw2Mz9LKHRoaXMsTyx6KTpuZTwxMDI0P2Z1bmN0aW9uIHNlKGhlLE8seil7ei5uZWdhdGl2ZT1PLm5lZ2F0aXZlXmhlLm5lZ2F0aXZlLHoubGVuZ3RoPWhlLmxlbmd0''@;'; put 'put ''aCtPLmxlbmd0aDtmb3IodmFyIGVlPTAsbmU9MCx4PTA7eDx6Lmxlbmd0aC0xO3grKyl7dmFyIFA9bmU7bmU9MDtmb3IodmFyIFY9NjcxMDg4NjMmZWUsVD1NYXRoLm1pbih4LE8ubGVuZ3RoLTEpLFM9TWF0aC5tYXgoMCx4LWhlLmxlbmd0aCsxKTtTPD1UO1MrKyl7dmFyIERlPSgwfGhlLndv''@;'; put 'put ''cmRzW3gtU10pKigwfE8ud29yZHNbU10pLFBlPTY3MTA4ODYzJkRlO1Y9NjcxMDg4NjMmKFBlPVBlK1Z8MCksbmUrPShQPShQPVArKERlLzY3MTA4ODY0fDApfDApKyhQZT4+PjI2KXwwKT4+PjI2LFAmPTY3MTA4ODYzfXoud29yZHNbeF09VixlZT1QLFA9bmV9cmV0dXJuIDAhPT1lZT96Lndv''@;'; put 'put ''cmRzW3hdPWVlOnoubGVuZ3RoLS0sei5zdHJpcCgpfSh0aGlzLE8seik6b2UodGhpcyxPLHopLGVlfSxjZS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbihPKXtmb3IodmFyIHo9bmV3IEFycmF5KE8pLGVlPVUucHJvdG90eXBlLl9jb3VudEJpdHMoTyktMSxuZT0wO25lPE87bmUrKyl6W25l''@;'; put 'put ''XT10aGlzLnJldkJpbihuZSxlZSxPKTtyZXR1cm4gen0sY2UucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbihPLHosZWUpe2lmKDA9PT1PfHxPPT09ZWUtMSlyZXR1cm4gTztmb3IodmFyIG5lPTAseD0wO3g8ejt4KyspbmV8PSgxJk8pPDx6LXgtMSxPPj49MTtyZXR1cm4gbmV9LGNlLnByb3Rv''@;'; put 'put ''dHlwZS5wZXJtdXRlPWZ1bmN0aW9uKE8seixlZSxuZSx4LFApe2Zvcih2YXIgVj0wO1Y8UDtWKyspbmVbVl09eltPW1ZdXSx4W1ZdPWVlW09bVl1dfSxjZS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKE8seixlZSxuZSx4LFApe3RoaXMucGVybXV0ZShQLE8seixlZSxuZSx4KTtmb3Io''@;'; put 'put ''dmFyIFY9MTtWPHg7Vjw8PTEpZm9yKHZhciBUPVY8PDEsUz1NYXRoLmNvcygyKk1hdGguUEkvVCksRj1NYXRoLnNpbigyKk1hdGguUEkvVCkseWU9MDt5ZTx4O3llKz1UKWZvcih2YXIgQ2U9UyxEZT1GLFBlPTA7UGU8VjtQZSsrKXt2YXIgUWU9ZWVbeWUrUGVdLCRlPW5lW3llK1BlXSxndD1l''@;'; put 'put ''ZVt5ZStQZStWXSx3dD1uZVt5ZStQZStWXSxtdD1DZSpndC1EZSp3dDt3dD1DZSp3dCtEZSpndCxlZVt5ZStQZV09UWUrKGd0PW10KSxuZVt5ZStQZV09JGUrd3QsZWVbeWUrUGUrVl09UWUtZ3QsbmVbeWUrUGUrVl09JGUtd3QsUGUhPT1UJiYobXQ9UypDZS1GKkRlLERlPVMqRGUrRipDZSxD''@;'; put 'put ''ZT1tdCl9fSxjZS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oTyx6KXt2YXIgZWU9MXxNYXRoLm1heCh6LE8pLG5lPTEmZWUseD0wO2ZvcihlZT1lZS8yfDA7ZWU7ZWU+Pj49MSl4Kys7cmV0dXJuIDE8PHgrMStuZX0sY2UucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbihPLHos''@;'; put 'put ''ZWUpe2lmKCEoZWU8PTEpKWZvcih2YXIgbmU9MDtuZTxlZS8yO25lKyspe3ZhciB4PU9bbmVdO09bbmVdPU9bZWUtbmUtMV0sT1tlZS1uZS0xXT14LHg9eltuZV0seltuZV09LXpbZWUtbmUtMV0seltlZS1uZS0xXT0teH19LGNlLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oTyx6''@;'; put 'put ''KXtmb3IodmFyIGVlPTAsbmU9MDtuZTx6LzI7bmUrKyl7dmFyIHg9ODE5MipNYXRoLnJvdW5kKE9bMipuZSsxXS96KStNYXRoLnJvdW5kKE9bMipuZV0veikrZWU7T1tuZV09NjcxMDg4NjMmeCxlZT14PDY3MTA4ODY0PzA6eC82NzEwODg2NHwwfXJldHVybiBPfSxjZS5wcm90b3R5cGUuY29u''@;'; put 'put ''dmVydDEzYj1mdW5jdGlvbihPLHosZWUsbmUpe2Zvcih2YXIgeD0wLFA9MDtQPHo7UCsrKWVlWzIqUF09ODE5MSYoeCs9MHxPW1BdKSxlZVsyKlArMV09ODE5MSYoeD4+Pj0xMykseD4+Pj0xMztmb3IoUD0yKno7UDxuZTsrK1ApZWVbUF09MDtFKDA9PT14KSxFKDA9PSgtODE5MiZ4KSl9LGNl''@;'; put 'put ''LnByb3RvdHlwZS5zdHViPWZ1bmN0aW9uKE8pe2Zvcih2YXIgej1uZXcgQXJyYXkoTyksZWU9MDtlZTxPO2VlKyspeltlZV09MDtyZXR1cm4gen0sY2UucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oTyx6LGVlKXt2YXIgbmU9Mip0aGlzLmd1ZXNzTGVuMTNiKE8ubGVuZ3RoLHoubGVuZ3RoKSx4''@;'; put 'put ''PXRoaXMubWFrZVJCVChuZSksUD10aGlzLnN0dWIobmUpLFY9bmV3IEFycmF5KG5lKSxUPW5ldyBBcnJheShuZSksUz1uZXcgQXJyYXkobmUpLEY9bmV3IEFycmF5KG5lKSx5ZT1uZXcgQXJyYXkobmUpLENlPW5ldyBBcnJheShuZSksRGU9ZWUud29yZHM7RGUubGVuZ3RoPW5lLHRoaXMuY29u''@;'; put 'put ''dmVydDEzYihPLndvcmRzLE8ubGVuZ3RoLFYsbmUpLHRoaXMuY29udmVydDEzYih6LndvcmRzLHoubGVuZ3RoLEYsbmUpLHRoaXMudHJhbnNmb3JtKFYsUCxULFMsbmUseCksdGhpcy50cmFuc2Zvcm0oRixQLHllLENlLG5lLHgpO2Zvcih2YXIgUGU9MDtQZTxuZTtQZSsrKXt2YXIgUWU9VFtQ''@;'; put 'put ''ZV0qeWVbUGVdLVNbUGVdKkNlW1BlXTtTW1BlXT1UW1BlXSpDZVtQZV0rU1tQZV0qeWVbUGVdLFRbUGVdPVFlfXJldHVybiB0aGlzLmNvbmp1Z2F0ZShULFMsbmUpLHRoaXMudHJhbnNmb3JtKFQsUyxEZSxQLG5lLHgpLHRoaXMuY29uanVnYXRlKERlLFAsbmUpLHRoaXMubm9ybWFsaXplMTNi''@;'; put 'put ''KERlLG5lKSxlZS5uZWdhdGl2ZT1PLm5lZ2F0aXZlXnoubmVnYXRpdmUsZWUubGVuZ3RoPU8ubGVuZ3RoK3oubGVuZ3RoLGVlLnN0cmlwKCl9LFUucHJvdG90eXBlLm11bD1mdW5jdGlvbihPKXt2YXIgej1uZXcgVShudWxsKTtyZXR1cm4gei53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgr''@;'; put 'put ''Ty5sZW5ndGgpLHRoaXMubXVsVG8oTyx6KX0sVS5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihPKXt2YXIgej1uZXcgVShudWxsKTtyZXR1cm4gei53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrTy5sZW5ndGgpLG9lKHRoaXMsTyx6KX0sVS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihPKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKE8sdGhpcyl9LFUucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPKSxFKE88NjcxMDg4NjQpO2Zvcih2YXIgej0wLGVlPTA7ZWU8dGhpcy5sZW5ndGg7ZWUrKyl7dmFyIG5lPSgwfHRoaXMud29yZHNbZWVdKSpP''@;'; put 'put ''LHg9KDY3MTA4ODYzJm5lKSsoNjcxMDg4NjMmeik7ej4+PTI2LHorPW5lLzY3MTA4ODY0fDAseis9eD4+PjI2LHRoaXMud29yZHNbZWVdPTY3MTA4ODYzJnh9cmV0dXJuIDAhPT16JiYodGhpcy53b3Jkc1tlZV09eix0aGlzLmxlbmd0aCsrKSx0aGlzfSxVLnByb3RvdHlwZS5tdWxuPWZ1bmN0''@;'; put 'put ''aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oTyl9LFUucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sVS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sVS5wcm90b3R5cGUucG93PWZ1''@;'; put 'put ''bmN0aW9uKE8pe3ZhciB6PWZ1bmN0aW9uIHRlKGhlKXtmb3IodmFyIE89bmV3IEFycmF5KGhlLmJpdExlbmd0aCgpKSx6PTA7ejxPLmxlbmd0aDt6Kyspe3ZhciBuZT16JTI2O09bel09KGhlLndvcmRzW3ovMjZ8MF0mMTw8bmUpPj4+bmV9cmV0dXJuIE99KE8pO2lmKDA9PT16Lmxlbmd0aCly''@;'; put 'put ''ZXR1cm4gbmV3IFUoMSk7Zm9yKHZhciBlZT10aGlzLG5lPTA7bmU8ei5sZW5ndGgmJjA9PT16W25lXTtuZSsrLGVlPWVlLnNxcigpKTtpZigrK25lPHoubGVuZ3RoKWZvcih2YXIgeD1lZS5zcXIoKTtuZTx6Lmxlbmd0aDtuZSsrLHg9eC5zcXIoKSkwIT09eltuZV0mJihlZT1lZS5tdWwoeCkp''@;'; put 'put ''O3JldHVybiBlZX0sVS5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgeCx6PU8lMjYsZWU9KE8teikvMjYsbmU9NjcxMDg4NjM+Pj4yNi16PDwyNi16O2lmKDAhPT16KXt2YXIgUD0wO2Zvcih4PTA7eDx0aGlzLmxlbmd0aDt4Kysp''@;'; put 'put ''e3ZhciBWPXRoaXMud29yZHNbeF0mbmU7dGhpcy53b3Jkc1t4XT0oMHx0aGlzLndvcmRzW3hdKS1WPDx6fFAsUD1WPj4+MjYten1QJiYodGhpcy53b3Jkc1t4XT1QLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1lZSl7Zm9yKHg9dGhpcy5sZW5ndGgtMTt4Pj0wO3gtLSl0aGlzLndvcmRzW3grZWVd''@;'; put 'put ''PXRoaXMud29yZHNbeF07Zm9yKHg9MDt4PGVlO3grKyl0aGlzLndvcmRzW3hdPTA7dGhpcy5sZW5ndGgrPWVlfXJldHVybiB0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKE8pe3JldHVybiBFKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbihPKX0sVS5wcm90''@;'; put 'put ''b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKE8seixlZSl7dmFyIG5lO0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKSxuZT16Pyh6LXolMjYpLzI2OjA7dmFyIHg9TyUyNixQPU1hdGgubWluKChPLXgpLzI2LHRoaXMubGVuZ3RoKSxWPTY3MTA4ODYzXjY3MTA4ODYzPj4+eDw8eCxUPWVlO2lmKG5l''@;'; put 'put ''LT1QLG5lPU1hdGgubWF4KDAsbmUpLFQpe2Zvcih2YXIgUz0wO1M8UDtTKyspVC53b3Jkc1tTXT10aGlzLndvcmRzW1NdO1QubGVuZ3RoPVB9aWYoMCE9PVApaWYodGhpcy5sZW5ndGg+UClmb3IodGhpcy5sZW5ndGgtPVAsUz0wO1M8dGhpcy5sZW5ndGg7UysrKXRoaXMud29yZHNbU109dGhp''@;'; put 'put ''cy53b3Jkc1tTK1BdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIEY9MDtmb3IoUz10aGlzLmxlbmd0aC0xO1M+PTAmJigwIT09Rnx8Uz49bmUpO1MtLSl7dmFyIHllPTB8dGhpcy53b3Jkc1tTXTt0aGlzLndvcmRzW1NdPUY8PDI2LXh8eWU+Pj54LEY9eWUmVn1yZXR1''@;'; put 'put ''cm4gVCYmMCE9PUYmJihULndvcmRzW1QubGVuZ3RoKytdPUYpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LFUucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKE8seixlZSl7cmV0dXJuIEUoMD09PXRoaXMubmVnYXRpdmUpLHRo''@;'; put 'put ''aXMuaXVzaHJuKE8seixlZSl9LFUucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihPKX0sVS5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oTyl9LFUucHJvdG90eXBlLnNocm49ZnVuY3Rpb24o''@;'; put 'put ''Tyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihPKX0sVS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oTyl9LFUucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgej1PJTI2LGVl''@;'; put 'put ''PShPLXopLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PWVlfHwhKHRoaXMud29yZHNbZWVdJjE8PHopKX0sVS5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKE8pe0UoIm51bWJlciI9PXR5cGVvZiBPJiZPPj0wKTt2YXIgej1PJTI2LGVlPShPLXopLzI2O3JldHVybiBFKDA9PT10aGlzLm5lZ2F0''@;'; put 'put ''aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9ZWU/dGhpczooMCE9PXomJmVlKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oZWUsdGhpcy5sZW5ndGgpLDAhPT16JiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9NjcxMDg4NjNeNjcx''@;'; put 'put ''MDg4NjM+Pj56PDx6KSx0aGlzLnN0cmlwKCkpfSxVLnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihPKX0sVS5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24oTyl7cmV0dXJuIEUoIm51bWJlciI9PXR5cGVvZiBPKSxFKE88NjcxMDg4NjQpLE88''@;'; put 'put ''MD90aGlzLmlzdWJuKC1PKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPE8/KHRoaXMud29yZHNbMF09Ty0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKE8pLHRoaXMu''@;'; put 'put ''bmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbihPKX0sVS5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKE8pe3RoaXMud29yZHNbMF0rPU87Zm9yKHZhciB6PTA7ejx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1t6XT49NjcxMDg4NjQ7eisrKXRoaXMud29yZHNbel0tPTY3MTA4ODY0LHo9PT10''@;'; put 'put ''aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbeisxXT0xOnRoaXMud29yZHNbeisxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCx6KzEpLHRoaXN9LFUucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKE8pe2lmKEUoIm51bWJlciI9PXR5cGVvZiBPKSxFKE88NjcxMDg4''@;'; put 'put ''NjQpLE88MClyZXR1cm4gdGhpcy5pYWRkbigtTyk7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKE8pLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPU8sMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhp''@;'; put 'put ''cy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIHo9MDt6PHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW3pdPDA7eisrKXRoaXMud29yZHNbel0rPTY3MTA4ODY0LHRoaXMud29yZHNbeisxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxVLnByb3Rv''@;'; put 'put ''dHlwZS5hZGRuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oTyl9LFUucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihPKX0sVS5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhp''@;'; put 'put ''c30sVS5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LFUucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbihPLHosZWUpe3ZhciB4O3RoaXMuX2V4cGFuZChPLmxlbmd0aCtlZSk7dmFyIFAsVj0wO2Zvcih4PTA7eDxPLmxlbmd0aDt4Kysp''@;'; put 'put ''e1A9KDB8dGhpcy53b3Jkc1t4K2VlXSkrVjt2YXIgVD0oMHxPLndvcmRzW3hdKSp6O1Y9KChQLT02NzEwODg2MyZUKT4+MjYpLShULzY3MTA4ODY0fDApLHRoaXMud29yZHNbeCtlZV09NjcxMDg4NjMmUH1mb3IoO3g8dGhpcy5sZW5ndGgtZWU7eCsrKVY9KFA9KDB8dGhpcy53b3Jkc1t4K2Vl''@;'; put 'put ''XSkrVik+PjI2LHRoaXMud29yZHNbeCtlZV09NjcxMDg4NjMmUDtpZigwPT09VilyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihFKC0xPT09ViksVj0wLHg9MDt4PHRoaXMubGVuZ3RoO3grKylWPShQPS0oMHx0aGlzLndvcmRzW3hdKStWKT4+MjYsdGhpcy53b3Jkc1t4XT02NzEwODg2MyZQO3Jl''@;'; put 'put ''dHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSxVLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbihPLHope3ZhciBlZSxuZT10aGlzLmNsb25lKCkseD1PLFA9MHx4LndvcmRzW3gubGVuZ3RoLTFdOzAhPShlZT0yNi10aGlzLl9jb3VudEJpdHMoUCkpJiYoeD14LnVzaGxuKGVl''@;'; put 'put ''KSxuZS5pdXNobG4oZWUpLFA9MHx4LndvcmRzW3gubGVuZ3RoLTFdKTt2YXIgUyxUPW5lLmxlbmd0aC14Lmxlbmd0aDtpZigibW9kIiE9PXopeyhTPW5ldyBVKG51bGwpKS5sZW5ndGg9VCsxLFMud29yZHM9bmV3IEFycmF5KFMubGVuZ3RoKTtmb3IodmFyIEY9MDtGPFMubGVuZ3RoO0YrKylT''@;'; put 'put ''LndvcmRzW0ZdPTB9dmFyIHllPW5lLmNsb25lKCkuX2lzaGxuc3VibXVsKHgsMSxUKTswPT09eWUubmVnYXRpdmUmJihuZT15ZSxTJiYoUy53b3Jkc1tUXT0xKSk7Zm9yKHZhciBDZT1ULTE7Q2U+PTA7Q2UtLSl7dmFyIERlPTY3MTA4ODY0KigwfG5lLndvcmRzW3gubGVuZ3RoK0NlXSkrKDB8''@;'; put 'put ''bmUud29yZHNbeC5sZW5ndGgrQ2UtMV0pO2ZvcihEZT1NYXRoLm1pbihEZS9QfDAsNjcxMDg4NjMpLG5lLl9pc2hsbnN1Ym11bCh4LERlLENlKTswIT09bmUubmVnYXRpdmU7KURlLS0sbmUubmVnYXRpdmU9MCxuZS5faXNobG5zdWJtdWwoeCwxLENlKSxuZS5pc1plcm8oKXx8KG5lLm5lZ2F0''@;'; put 'put ''aXZlXj0xKTtTJiYoUy53b3Jkc1tDZV09RGUpfXJldHVybiBTJiZTLnN0cmlwKCksbmUuc3RyaXAoKSwiZGl2IiE9PXomJjAhPT1lZSYmbmUuaXVzaHJuKGVlKSx7ZGl2OlN8fG51bGwsbW9kOm5lfX0sVS5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKE8seixlZSl7cmV0dXJuIEUoIU8uaXNa''@;'; put 'put ''ZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgVSgwKSxtb2Q6bmV3IFUoMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Ty5uZWdhdGl2ZT8oUD10aGlzLm5lZygpLmRpdm1vZChPLHopLCJtb2QiIT09eiYmKG5lPVAuZGl2Lm5lZygpKSwiZGl2IiE9PXomJih4PVAubW9kLm5lZygpLGVl''@;'; put 'put ''JiYwIT09eC5uZWdhdGl2ZSYmeC5pYWRkKE8pKSx7ZGl2Om5lLG1vZDp4fSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1PLm5lZ2F0aXZlPyhQPXRoaXMuZGl2bW9kKE8ubmVnKCkseiksIm1vZCIhPT16JiYobmU9UC5kaXYubmVnKCkpLHtkaXY6bmUsbW9kOlAubW9kfSk6MCE9KHRoaXMubmVn''@;'; put 'put ''YXRpdmUmTy5uZWdhdGl2ZSk/KFA9dGhpcy5uZWcoKS5kaXZtb2QoTy5uZWcoKSx6KSwiZGl2IiE9PXomJih4PVAubW9kLm5lZygpLGVlJiYwIT09eC5uZWdhdGl2ZSYmeC5pc3ViKE8pKSx7ZGl2OlAuZGl2LG1vZDp4fSk6Ty5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKE8pPDA/e2Rp''@;'; put 'put ''djpuZXcgVSgwKSxtb2Q6dGhpc306MT09PU8ubGVuZ3RoPyJkaXYiPT09ej97ZGl2OnRoaXMuZGl2bihPLndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT16P3tkaXY6bnVsbCxtb2Q6bmV3IFUodGhpcy5tb2RuKE8ud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oTy53b3Jkc1swXSksbW9k''@;'; put 'put ''Om5ldyBVKHRoaXMubW9kbihPLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoTyx6KTt2YXIgbmUseCxQfSxVLnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZGl2bW9kKE8sImRpdiIsITEpLmRpdn0sVS5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlz''@;'; put 'put ''LmRpdm1vZChPLCJtb2QiLCExKS5tb2R9LFUucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZGl2bW9kKE8sIm1vZCIsITApLm1vZH0sVS5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oTyl7dmFyIHo9dGhpcy5kaXZtb2QoTyk7aWYoei5tb2QuaXNaZXJvKCkpcmV0''@;'; put 'put ''dXJuIHouZGl2O3ZhciBlZT0wIT09ei5kaXYubmVnYXRpdmU/ei5tb2QuaXN1YihPKTp6Lm1vZCxuZT1PLnVzaHJuKDEpLHg9Ty5hbmRsbigxKSxQPWVlLmNtcChuZSk7cmV0dXJuIFA8MHx8MT09PXgmJjA9PT1QP3ouZGl2OjAhPT16LmRpdi5uZWdhdGl2ZT96LmRpdi5pc3VibigxKTp6LmRp''@;'; put 'put ''di5pYWRkbigxKX0sVS5wcm90b3R5cGUubW9kbj1mdW5jdGlvbihPKXtFKE88PTY3MTA4ODYzKTtmb3IodmFyIHo9KDE8PDI2KSVPLGVlPTAsbmU9dGhpcy5sZW5ndGgtMTtuZT49MDtuZS0tKWVlPSh6KmVlKygwfHRoaXMud29yZHNbbmVdKSklTztyZXR1cm4gZWV9LFUucHJvdG90eXBlLmlk''@;'; put 'put ''aXZuPWZ1bmN0aW9uKE8pe0UoTzw9NjcxMDg4NjMpO2Zvcih2YXIgej0wLGVlPXRoaXMubGVuZ3RoLTE7ZWU+PTA7ZWUtLSl7dmFyIG5lPSgwfHRoaXMud29yZHNbZWVdKSs2NzEwODg2NCp6O3RoaXMud29yZHNbZWVdPW5lL098MCx6PW5lJU99cmV0dXJuIHRoaXMuc3RyaXAoKX0sVS5wcm90''@;'; put 'put ''b3R5cGUuZGl2bj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKE8pfSxVLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKE8pe0UoMD09PU8ubmVnYXRpdmUpLEUoIU8uaXNaZXJvKCkpO3ZhciB6PXRoaXMsZWU9Ty5jbG9uZSgpO3o9MCE9PXoubmVnYXRpdmU/ei51bW9kKE8p''@;'; put 'put ''OnouY2xvbmUoKTtmb3IodmFyIG5lPW5ldyBVKDEpLHg9bmV3IFUoMCksUD1uZXcgVSgwKSxWPW5ldyBVKDEpLFQ9MDt6LmlzRXZlbigpJiZlZS5pc0V2ZW4oKTspei5pdXNocm4oMSksZWUuaXVzaHJuKDEpLCsrVDtmb3IodmFyIFM9ZWUuY2xvbmUoKSxGPXouY2xvbmUoKTshei5pc1plcm8o''@;'; put 'put ''KTspe2Zvcih2YXIgeWU9MCxDZT0xOzA9PSh6LndvcmRzWzBdJkNlKSYmeWU8MjY7Kyt5ZSxDZTw8PTEpO2lmKHllPjApZm9yKHouaXVzaHJuKHllKTt5ZS0tID4wOykobmUuaXNPZGQoKXx8eC5pc09kZCgpKSYmKG5lLmlhZGQoUykseC5pc3ViKEYpKSxuZS5pdXNocm4oMSkseC5pdXNocm4o''@;'; put 'put ''MSk7Zm9yKHZhciBEZT0wLFBlPTE7MD09KGVlLndvcmRzWzBdJlBlKSYmRGU8MjY7KytEZSxQZTw8PTEpO2lmKERlPjApZm9yKGVlLml1c2hybihEZSk7RGUtLSA+MDspKFAuaXNPZGQoKXx8Vi5pc09kZCgpKSYmKFAuaWFkZChTKSxWLmlzdWIoRikpLFAuaXVzaHJuKDEpLFYuaXVzaHJuKDEp''@;'; put 'put ''O3ouY21wKGVlKT49MD8oei5pc3ViKGVlKSxuZS5pc3ViKFApLHguaXN1YihWKSk6KGVlLmlzdWIoeiksUC5pc3ViKG5lKSxWLmlzdWIoeCkpfXJldHVybnthOlAsYjpWLGdjZDplZS5pdXNobG4oVCl9fSxVLnByb3RvdHlwZS5faW52bXA9ZnVuY3Rpb24oTyl7RSgwPT09Ty5uZWdhdGl2ZSks''@;'; put 'put ''RSghTy5pc1plcm8oKSk7dmFyIHllLHo9dGhpcyxlZT1PLmNsb25lKCk7ej0wIT09ei5uZWdhdGl2ZT96LnVtb2QoTyk6ei5jbG9uZSgpO2Zvcih2YXIgbmU9bmV3IFUoMSkseD1uZXcgVSgwKSxQPWVlLmNsb25lKCk7ei5jbXBuKDEpPjAmJmVlLmNtcG4oMSk+MDspe2Zvcih2YXIgVj0wLFQ9''@;'; put 'put ''MTswPT0oei53b3Jkc1swXSZUKSYmVjwyNjsrK1YsVDw8PTEpO2lmKFY+MClmb3Ioei5pdXNocm4oVik7Vi0tID4wOyluZS5pc09kZCgpJiZuZS5pYWRkKFApLG5lLml1c2hybigxKTtmb3IodmFyIFM9MCxGPTE7MD09KGVlLndvcmRzWzBdJkYpJiZTPDI2OysrUyxGPDw9MSk7aWYoUz4wKWZv''@;'; put 'put ''cihlZS5pdXNocm4oUyk7Uy0tID4wOyl4LmlzT2RkKCkmJnguaWFkZChQKSx4Lml1c2hybigxKTt6LmNtcChlZSk+PTA/KHouaXN1YihlZSksbmUuaXN1Yih4KSk6KGVlLmlzdWIoeikseC5pc3ViKG5lKSl9cmV0dXJuKHllPTA9PT16LmNtcG4oMSk/bmU6eCkuY21wbigwKTwwJiZ5ZS5pYWRk''@;'; put 'put ''KE8pLHllfSxVLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oTyl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gTy5hYnMoKTtpZihPLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciB6PXRoaXMuY2xvbmUoKSxlZT1PLmNsb25lKCk7ei5uZWdhdGl2ZT0wLGVlLm5lZ2F0aXZlPTA7Zm9yKHZh''@;'; put 'put ''ciBuZT0wO3ouaXNFdmVuKCkmJmVlLmlzRXZlbigpO25lKyspei5pdXNocm4oMSksZWUuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDt6LmlzRXZlbigpOyl6Lml1c2hybigxKTtmb3IoO2VlLmlzRXZlbigpOyllZS5pdXNocm4oMSk7dmFyIHg9ei5jbXAoZWUpO2lmKHg8MCl7dmFyIFA9ejt6PWVl''@;'; put 'put ''LGVlPVB9ZWxzZSBpZigwPT09eHx8MD09PWVlLmNtcG4oMSkpYnJlYWs7ei5pc3ViKGVlKX1yZXR1cm4gZWUuaXVzaGxuKG5lKX0sVS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5lZ2NkKE8pLmEudW1vZChPKX0sVS5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIDA9PSgxJnRoaXMud29yZHNbMF0pfSxVLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLndvcmRzWzBdKX0sVS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMud29yZHNbMF0mT30sVS5wcm90b3R5cGUuYmluY249ZnVuY3Rp''@;'; put 'put ''b24oTyl7RSgibnVtYmVyIj09dHlwZW9mIE8pO3ZhciB6PU8lMjYsZWU9KE8teikvMjYsbmU9MTw8ejtpZih0aGlzLmxlbmd0aDw9ZWUpcmV0dXJuIHRoaXMuX2V4cGFuZChlZSsxKSx0aGlzLndvcmRzW2VlXXw9bmUsdGhpcztmb3IodmFyIHg9bmUsUD1lZTswIT09eCYmUDx0aGlzLmxlbmd0''@;'; put 'put ''aDtQKyspe3ZhciBWPTB8dGhpcy53b3Jkc1tQXTt4PShWKz14KT4+PjI2LHRoaXMud29yZHNbUF09ViY9NjcxMDg4NjN9cmV0dXJuIDAhPT14JiYodGhpcy53b3Jkc1tQXT14LHRoaXMubGVuZ3RoKyspLHRoaXN9LFUucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhp''@;'; put 'put ''cy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdfSxVLnByb3RvdHlwZS5jbXBuPWZ1bmN0aW9uKE8pe3ZhciBlZSx6PU88MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIXopcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJnopcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3Ro''@;'; put 'put ''PjEpZWU9MTtlbHNle3omJihPPS1PKSxFKE88PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBuZT0wfHRoaXMud29yZHNbMF07ZWU9bmU9PT1PPzA6bmU8Tz8tMToxfXJldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1lZTplZX0sVS5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKE8p''@;'; put 'put ''e2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Ty5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PU8ubmVnYXRpdmUpcmV0dXJuIDE7dmFyIHo9dGhpcy51Y21wKE8pO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC16Onp9LFUucHJvdG90eXBlLnVjbXA9ZnVu''@;'; put 'put ''Y3Rpb24oTyl7aWYodGhpcy5sZW5ndGg+Ty5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8Ty5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciB6PTAsZWU9dGhpcy5sZW5ndGgtMTtlZT49MDtlZS0tKXt2YXIgbmU9MHx0aGlzLndvcmRzW2VlXSx4PTB8Ty53b3Jkc1tlZV07aWYobmUhPT14''@;'; put 'put ''KXtuZTx4P3o9LTE6bmU+eCYmKHo9MSk7YnJlYWt9fXJldHVybiB6fSxVLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oTyl7cmV0dXJuIDE9PT10aGlzLmNtcG4oTyl9LFUucHJvdG90eXBlLmd0PWZ1bmN0aW9uKE8pe3JldHVybiAxPT09dGhpcy5jbXAoTyl9LFUucHJvdG90eXBlLmd0ZW49ZnVu''@;'; put 'put ''Y3Rpb24oTyl7cmV0dXJuIHRoaXMuY21wbihPKT49MH0sVS5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNtcChPKT49MH0sVS5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKE8pe3JldHVybi0xPT09dGhpcy5jbXBuKE8pfSxVLnByb3RvdHlwZS5sdD1mdW5jdGlvbihPKXty''@;'; put 'put ''ZXR1cm4tMT09PXRoaXMuY21wKE8pfSxVLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmNtcG4oTyk8PTB9LFUucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5jbXAoTyk8PTB9LFUucHJvdG90eXBlLmVxbj1mdW5jdGlvbihPKXtyZXR1cm4gMD09''@;'; put 'put ''PXRoaXMuY21wbihPKX0sVS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oTyl7cmV0dXJuIDA9PT10aGlzLmNtcChPKX0sVS5yZWQ9ZnVuY3Rpb24oTyl7cmV0dXJuIG5ldyBUZShPKX0sVS5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oTyl7cmV0dXJuIEUoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVt''@;'; put 'put ''YmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksRSgwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxPLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoTyl9LFUucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwiZnJv''@;'; put 'put ''bVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSxVLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMucmVkPU8sdGhpc30sVS5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rp''@;'; put 'put ''b24oTyl7cmV0dXJuIEUoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoTyl9LFUucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVt''@;'; put 'put ''YmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkU3ViPWZ1bmN0''@;'; put 'put ''aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMsTyl9LFUucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBu''@;'; put 'put ''dW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24oTyl7cmV0dXJuIEUodGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkTXVsPWZ1bmN0''@;'; put 'put ''aW9uKE8pe3JldHVybiBFKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxPKSx0aGlzLnJlZC5tdWwodGhpcyxPKX0sVS5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVk''@;'; put 'put ''TXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsTyksdGhpcy5yZWQuaW11bCh0aGlzLE8pfSxVLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVy''@;'; put 'put ''cyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sVS5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBFKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMu''@;'; put 'put ''cmVkLmlzcXIodGhpcyl9LFUucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxVLnByb3RvdHlwZS5yZWRJ''@;'; put 'put ''bnZtPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sVS5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5yZWQs''@;'; put 'put ''InJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LFUucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbihPKXtyZXR1cm4gRSh0aGlzLnJlZCYmIU8ucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMu''@;'; put 'put ''cmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLE8pfTt2YXIgZGU9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiB2ZShoZSxPKXt0aGlzLm5hbWU9aGUsdGhpcy5wPW5ldyBVKE8sMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3Ro''@;'; put 'put ''KCksdGhpcy5rPW5ldyBVKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBBZSgpe3ZlLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZl''@;'; put 'put ''IGZmZmZmYzJmIil9ZnVuY3Rpb24ga2UoKXt2ZS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIFNlKCl7dmUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYg''@;'; put 'put ''ZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiBJZSgpe3ZlLmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gVGUoaGUpe2lmKCJz''@;'; put 'put ''dHJpbmciPT10eXBlb2YgaGUpe3ZhciBPPVUuX3ByaW1lKGhlKTt0aGlzLm09Ty5wLHRoaXMucHJpbWU9T31lbHNlIEUoaGUuZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09aGUsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIE1lKGhlKXtUZS5jYWxsKHRo''@;'; put 'put ''aXMsaGUpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IFUoMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRo''@;'; put 'put ''aXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9dmUucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgTz1uZXcgVShudWxsKTtyZXR1cm4gTy53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLE99LHZlLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKE8pe3ZhciBlZSx6PU87ZG97dGhpcy5zcGxpdCh6LHRoaXMudG1wKSxlZT0oej0oej10aGlzLmltdWxLKHopKS5p''@;'; put 'put ''YWRkKHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUoZWU+dGhpcy5uKTt2YXIgbmU9ZWU8dGhpcy5uPy0xOnoudWNtcCh0aGlzLnApO3JldHVybiAwPT09bmU/KHoud29yZHNbMF09MCx6Lmxlbmd0aD0xKTpuZT4wP3ouaXN1Yih0aGlzLnApOnZvaWQgMCE9PXouc3RyaXA/ei5zdHJpcCgp''@;'; put 'put ''OnouX3N0cmlwKCksen0sdmUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKE8seil7Ty5pdXNocm4odGhpcy5uLDAseil9LHZlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihPKXtyZXR1cm4gTy5pbXVsKHRoaXMuayl9LEVlKEFlLHZlKSxBZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oTyx6''@;'; put 'put ''KXtmb3IodmFyIG5lPU1hdGgubWluKE8ubGVuZ3RoLDkpLHg9MDt4PG5lO3grKyl6LndvcmRzW3hdPU8ud29yZHNbeF07aWYoei5sZW5ndGg9bmUsTy5sZW5ndGg8PTkpcmV0dXJuIE8ud29yZHNbMF09MCx2b2lkKE8ubGVuZ3RoPTEpO3ZhciBQPU8ud29yZHNbOV07Zm9yKHoud29yZHNbei5s''@;'; put 'put ''ZW5ndGgrK109NDE5NDMwMyZQLHg9MTA7eDxPLmxlbmd0aDt4Kyspe3ZhciBWPTB8Ty53b3Jkc1t4XTtPLndvcmRzW3gtMTBdPSg0MTk0MzAzJlYpPDw0fFA+Pj4yMixQPVZ9Ty53b3Jkc1t4LTEwXT1QPj4+PTIyLE8ubGVuZ3RoLT0wPT09UCYmTy5sZW5ndGg+MTA/MTA6OX0sQWUucHJvdG90''@;'; put 'put ''eXBlLmltdWxLPWZ1bmN0aW9uKE8pe08ud29yZHNbTy5sZW5ndGhdPTAsTy53b3Jkc1tPLmxlbmd0aCsxXT0wLE8ubGVuZ3RoKz0yO2Zvcih2YXIgej0wLGVlPTA7ZWU8Ty5sZW5ndGg7ZWUrKyl7dmFyIG5lPTB8Ty53b3Jkc1tlZV07Ty53b3Jkc1tlZV09NjcxMDg4NjMmKHorPTk3NypuZSks''@;'; put 'put ''ej02NCpuZSsoei82NzEwODg2NHwwKX1yZXR1cm4gMD09PU8ud29yZHNbTy5sZW5ndGgtMV0mJihPLmxlbmd0aC0tLDA9PT1PLndvcmRzW08ubGVuZ3RoLTFdJiZPLmxlbmd0aC0tKSxPfSxFZShrZSx2ZSksRWUoU2UsdmUpLEVlKEllLHZlKSxJZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24o''@;'; put 'put ''Tyl7Zm9yKHZhciB6PTAsZWU9MDtlZTxPLmxlbmd0aDtlZSsrKXt2YXIgbmU9MTkqKDB8Ty53b3Jkc1tlZV0pK3oseD02NzEwODg2MyZuZTtuZT4+Pj0yNixPLndvcmRzW2VlXT14LHo9bmV9cmV0dXJuIDAhPT16JiYoTy53b3Jkc1tPLmxlbmd0aCsrXT16KSxPfSxVLl9wcmltZT1mdW5jdGlv''@;'; put 'put ''bihPKXtpZihkZVtPXSlyZXR1cm4gZGVbT107dmFyIHo7aWYoImsyNTYiPT09Tyl6PW5ldyBBZTtlbHNlIGlmKCJwMjI0Ij09PU8pej1uZXcga2U7ZWxzZSBpZigicDE5MiI9PT1PKXo9bmV3IFNlO2Vsc2V7aWYoInAyNTUxOSIhPT1PKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAi''@;'; put 'put ''K08pO3o9bmV3IEllfXJldHVybiBkZVtPXT16LHp9LFRlLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbihPKXtFKDA9PT1PLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEUoTy5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sVGUucHJv''@;'; put 'put ''dG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKE8seil7RSgwPT0oTy5uZWdhdGl2ZXx6Lm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxFKE8ucmVkJiZPLnJlZD09PXoucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LFRlLnByb3RvdHlwZS5p''@;'; put 'put ''bW9kPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZShPKS5fZm9yY2VSZWQodGhpcyk6Ty51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKE8pe3JldHVybiBPLmlzWmVybygpP08uY2xvbmUoKTp0aGlz''@;'; put 'put ''Lm0uc3ViKE8pLl9mb3JjZVJlZCh0aGlzKX0sVGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihPLHope3RoaXMuX3ZlcmlmeTIoTyx6KTt2YXIgZWU9Ty5hZGQoeik7cmV0dXJuIGVlLmNtcCh0aGlzLm0pPj0wJiZlZS5pc3ViKHRoaXMubSksZWUuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5''@;'; put 'put ''cGUuaWFkZD1mdW5jdGlvbihPLHope3RoaXMuX3ZlcmlmeTIoTyx6KTt2YXIgZWU9Ty5pYWRkKHopO3JldHVybiBlZS5jbXAodGhpcy5tKT49MCYmZWUuaXN1Yih0aGlzLm0pLGVlfSxUZS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKE8seil7dGhpcy5fdmVyaWZ5MihPLHopO3ZhciBlZT1PLnN1''@;'; put 'put ''Yih6KTtyZXR1cm4gZWUuY21wbigwKTwwJiZlZS5pYWRkKHRoaXMubSksZWUuX2ZvcmNlUmVkKHRoaXMpfSxUZS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihPLHope3RoaXMuX3ZlcmlmeTIoTyx6KTt2YXIgZWU9Ty5pc3ViKHopO3JldHVybiBlZS5jbXBuKDApPDAmJmVlLmlhZGQodGhpcy5t''@;'; put 'put ''KSxlZX0sVGUucHJvdG90eXBlLnNobD1mdW5jdGlvbihPLHope3JldHVybiB0aGlzLl92ZXJpZnkxKE8pLHRoaXMuaW1vZChPLnVzaGxuKHopKX0sVGUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oTyx6KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihPLHopLHRoaXMuaW1vZChPLmltdWwoeikpfSxU''@;'; put 'put ''ZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKE8seil7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoTyx6KSx0aGlzLmltb2QoTy5tdWwoeikpfSxUZS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5pbXVsKE8sTy5jbG9uZSgpKX0sVGUucHJvdG90eXBlLnNxcj1mdW5jdGlvbihP''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5tdWwoTyxPKX0sVGUucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oTyl7aWYoTy5pc1plcm8oKSlyZXR1cm4gTy5jbG9uZSgpO3ZhciB6PXRoaXMubS5hbmRsbigzKTtpZihFKHolMj09MSksMz09PXope3ZhciBlZT10aGlzLm0uYWRkKG5ldyBVKDEpKS5pdXNocm4oMik7''@;'; put 'put ''cmV0dXJuIHRoaXMucG93KE8sZWUpfWZvcih2YXIgbmU9dGhpcy5tLnN1Ym4oMSkseD0wOyFuZS5pc1plcm8oKSYmMD09PW5lLmFuZGxuKDEpOyl4KyssbmUuaXVzaHJuKDEpO0UoIW5lLmlzWmVybygpKTt2YXIgUD1uZXcgVSgxKS50b1JlZCh0aGlzKSxWPVAucmVkTmVnKCksVD10aGlzLm0u''@;'; put 'put ''c3VibigxKS5pdXNocm4oMSksUz10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKFM9bmV3IFUoMipTKlMpLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhTLFQpLmNtcChWKTspUy5yZWRJQWRkKFYpO2Zvcih2YXIgRj10aGlzLnBvdyhTLG5lKSx5ZT10aGlzLnBvdyhPLG5lLmFkZG4oMSkuaXVzaHJu''@;'; put 'put ''KDEpKSxDZT10aGlzLnBvdyhPLG5lKSxEZT14OzAhPT1DZS5jbXAoUCk7KXtmb3IodmFyIFBlPUNlLFFlPTA7MCE9PVBlLmNtcChQKTtRZSsrKVBlPVBlLnJlZFNxcigpO0UoUWU8RGUpO3ZhciAkZT10aGlzLnBvdyhGLG5ldyBVKDEpLml1c2hsbihEZS1RZS0xKSk7eWU9eWUucmVkTXVsKCRl''@;'; put 'put ''KSxGPSRlLnJlZFNxcigpLENlPUNlLnJlZE11bChGKSxEZT1RZX1yZXR1cm4geWV9LFRlLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKE8pe3ZhciB6PU8uX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT16Lm5lZ2F0aXZlPyh6Lm5lZ2F0aXZlPTAsdGhpcy5pbW9kKHopLnJlZE5lZygpKTp0aGlz''@;'; put 'put ''Lmltb2Qoeil9LFRlLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oTyx6KXtpZih6LmlzWmVybygpKXJldHVybiBuZXcgVSgxKS50b1JlZCh0aGlzKTtpZigwPT09ei5jbXBuKDEpKXJldHVybiBPLmNsb25lKCk7dmFyIG5lPW5ldyBBcnJheSgxNik7bmVbMF09bmV3IFUoMSkudG9SZWQodGhpcyks''@;'; put 'put ''bmVbMV09Tztmb3IodmFyIHg9Mjt4PG5lLmxlbmd0aDt4KyspbmVbeF09dGhpcy5tdWwobmVbeC0xXSxPKTt2YXIgUD1uZVswXSxWPTAsVD0wLFM9ei5iaXRMZW5ndGgoKSUyNjtmb3IoMD09PVMmJihTPTI2KSx4PXoubGVuZ3RoLTE7eD49MDt4LS0pe2Zvcih2YXIgRj16LndvcmRzW3hdLHll''@;'; put 'put ''PVMtMTt5ZT49MDt5ZS0tKXt2YXIgQ2U9Rj4+eWUmMTtQIT09bmVbMF0mJihQPXRoaXMuc3FyKFApKSwwIT09Q2V8fDAhPT1WPyhWPDw9MSxWfD1DZSwoND09KytUfHwwPT09eCYmMD09PXllKSYmKFA9dGhpcy5tdWwoUCxuZVtWXSksVD0wLFY9MCkpOlQ9MH1TPTI2fXJldHVybiBQfSxUZS5w''@;'; put 'put ''cm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKE8pe3ZhciB6PU8udW1vZCh0aGlzLm0pO3JldHVybiB6PT09Tz96LmNsb25lKCk6en0sVGUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKE8pe3ZhciB6PU8uY2xvbmUoKTtyZXR1cm4gei5yZWQ9bnVsbCx6fSxVLm1vbnQ9ZnVuY3Rp''@;'; put 'put ''b24oTyl7cmV0dXJuIG5ldyBNZShPKX0sRWUoTWUsVGUpLE1lLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuaW1vZChPLnVzaGxuKHRoaXMuc2hpZnQpKX0sTWUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKE8pe3ZhciB6PXRoaXMuaW1vZChPLm11''@;'; put 'put ''bCh0aGlzLnJpbnYpKTtyZXR1cm4gei5yZWQ9bnVsbCx6fSxNZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihPLHope2lmKE8uaXNaZXJvKCl8fHouaXNaZXJvKCkpcmV0dXJuIE8ud29yZHNbMF09MCxPLmxlbmd0aD0xLE87dmFyIGVlPU8uaW11bCh6KSxuZT1lZS5tYXNrbih0aGlzLnNoaWZ0''@;'; put 'put ''KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSkseD1lZS5pc3ViKG5lKS5pdXNocm4odGhpcy5zaGlmdCksUD14O3JldHVybiB4LmNtcCh0aGlzLm0pPj0wP1A9eC5pc3ViKHRoaXMubSk6eC5jbXBuKDApPDAmJihQPXguaWFkZCh0aGlzLm0pKSxQLl9mb3Jj''@;'; put 'put ''ZVJlZCh0aGlzKX0sTWUucHJvdG90eXBlLm11bD1mdW5jdGlvbihPLHope2lmKE8uaXNaZXJvKCl8fHouaXNaZXJvKCkpcmV0dXJuIG5ldyBVKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgZWU9Ty5tdWwoeiksbmU9ZWUubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRo''@;'; put 'put ''aXMuc2hpZnQpLm11bCh0aGlzLm0pLHg9ZWUuaXN1YihuZSkuaXVzaHJuKHRoaXMuc2hpZnQpLFA9eDtyZXR1cm4geC5jbXAodGhpcy5tKT49MD9QPXguaXN1Yih0aGlzLm0pOnguY21wbigwKTwwJiYoUD14LmlhZGQodGhpcy5tKSksUC5fZm9yY2VSZWQodGhpcyl9LE1lLnByb3RvdHlwZS5p''@;'; put 'put ''bnZtPWZ1bmN0aW9uKE8pe3JldHVybiB0aGlzLmltb2QoTy5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KFhlPUwubm1kKFhlKSx0aGlzKX0sMzY3MDU6KFhlLEplLEwpPT57dmFyIG1lPUwoMjI3NzIpLEI9TCg4Njk0NSksRT1MKDc5NDAxKSxFZT1MKDgy''@;'; put 'put ''MDU3KSxVPUwoODQ2NiksUT1MKDk2Mzg2KSxqPUwoMzg2NTEpLHJlPUwoNzM1MDIpLkJ1ZmZlcjtYZS5leHBvcnRzPWZ1bmN0aW9uKHRlLEssSil7dmFyIHNlO3NlPXRlLnBhZGRpbmc/dGUucGFkZGluZzpKPzE6NDt2YXIgZGUsb2U9bWUodGUpLGNlPW9lLm1vZHVsdXMuYnl0ZUxlbmd0aCgp''@;'; put 'put ''O2lmKEsubGVuZ3RoPmNlfHxuZXcgRWUoSykuY21wKG9lLm1vZHVsdXMpPj0wKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO2RlPUo/aihuZXcgRWUoSyksb2UpOlUoSyxvZSk7dmFyIHZlPXJlLmFsbG9jKGNlLWRlLmxlbmd0aCk7aWYoZGU9cmUuY29uY2F0KFt2ZSxkZV0s''@;'; put 'put ''Y2UpLDQ9PT1zZSlyZXR1cm4gZnVuY3Rpb24gYWUoTix0ZSl7dmFyIEs9Ti5tb2R1bHVzLmJ5dGVMZW5ndGgoKSxKPVEoInNoYTEiKS51cGRhdGUocmUuYWxsb2MoMCkpLmRpZ2VzdCgpLHNlPUoubGVuZ3RoO2lmKDAhPT10ZVswXSl0aHJvdyBuZXcgRXJyb3IoImRlY3J5cHRpb24gZXJyb3Ii''@;'; put 'put ''KTt2YXIgb2U9dGUuc2xpY2UoMSxzZSsxKSxjZT10ZS5zbGljZShzZSsxKSxkZT1FKG9lLEIoY2Usc2UpKSx2ZT1FKGNlLEIoZGUsSy1zZS0xKSk7aWYoZnVuY3Rpb24gVyhOLHRlKXtOPXJlLmZyb20oTiksdGU9cmUuZnJvbSh0ZSk7dmFyIEs9MCxKPU4ubGVuZ3RoO04ubGVuZ3RoIT09dGUu''@;'; put 'put ''bGVuZ3RoJiYoSysrLEo9TWF0aC5taW4oTi5sZW5ndGgsdGUubGVuZ3RoKSk7Zm9yKHZhciBzZT0tMTsrK3NlPEo7KUsrPU5bc2VdXnRlW3NlXTtyZXR1cm4gS30oSix2ZS5zbGljZSgwLHNlKSkpdGhyb3cgbmV3IEVycm9yKCJkZWNyeXB0aW9uIGVycm9yIik7Zm9yKHZhciBBZT1zZTswPT09''@;'; put 'put ''dmVbQWVdOylBZSsrO2lmKDEhPT12ZVtBZSsrXSl0aHJvdyBuZXcgRXJyb3IoImRlY3J5cHRpb24gZXJyb3IiKTtyZXR1cm4gdmUuc2xpY2UoQWUpfShvZSxkZSk7aWYoMT09PXNlKXJldHVybiBmdW5jdGlvbiBZKE4sdGUsSyl7Zm9yKHZhciBKPXRlLnNsaWNlKDAsMiksc2U9MixvZT0wOzAh''@;'; put 'put ''PT10ZVtzZSsrXTspaWYoc2U+PXRlLmxlbmd0aCl7b2UrKzticmVha312YXIgY2U9dGUuc2xpY2UoMixzZS0xKTtpZigoIjAwMDIiIT09Si50b1N0cmluZygiaGV4IikmJiFLfHwiMDAwMSIhPT1KLnRvU3RyaW5nKCJoZXgiKSYmSykmJm9lKyssY2UubGVuZ3RoPDgmJm9lKyssb2UpdGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCJkZWNyeXB0aW9uIGVycm9yIik7cmV0dXJuIHRlLnNsaWNlKHNlKX0oMCxkZSxKKTtpZigzPT09c2UpcmV0dXJuIGRlO3Rocm93IG5ldyBFcnJvcigidW5rbm93biBwYWRkaW5nIil9fSwxNjU2MjooWGUsSmUsTCk9Pnt2YXIgbWU9TCgyMjc3MiksQj1MKDUzNzUzKSxFPUwo''@;'; put 'put ''OTYzODYpLEVlPUwoODY5NDUpLFU9TCg3OTQwMSksUT1MKDgyMDU3KSxqPUwoMzg2NTEpLHJlPUwoODQ2NiksYWU9TCg3MzUwMikuQnVmZmVyO1hlLmV4cG9ydHM9ZnVuY3Rpb24oSyxKLHNlKXt2YXIgb2U7b2U9Sy5wYWRkaW5nP0sucGFkZGluZzpzZT8xOjQ7dmFyIGRlLGNlPW1lKEspO2lm''@;'; put 'put ''KDQ9PT1vZSlkZT1mdW5jdGlvbiBZKHRlLEspe3ZhciBKPXRlLm1vZHVsdXMuYnl0ZUxlbmd0aCgpLHNlPUsubGVuZ3RoLG9lPUUoInNoYTEiKS51cGRhdGUoYWUuYWxsb2MoMCkpLmRpZ2VzdCgpLGNlPW9lLmxlbmd0aCxkZT0yKmNlO2lmKHNlPkotZGUtMil0aHJvdyBuZXcgRXJyb3IoIm1l''@;'; put 'put ''c3NhZ2UgdG9vIGxvbmciKTt2YXIgdmU9YWUuYWxsb2MoSi1zZS1kZS0yKSxBZT1KLWNlLTEsa2U9QihjZSksU2U9VShhZS5jb25jYXQoW29lLHZlLGFlLmFsbG9jKDEsMSksS10sQWUpLEVlKGtlLEFlKSksSWU9VShrZSxFZShTZSxjZSkpO3JldHVybiBuZXcgUShhZS5jb25jYXQoW2FlLmFs''@;'; put 'put ''bG9jKDEpLEllLFNlXSxKKSl9KGNlLEopO2Vsc2UgaWYoMT09PW9lKWRlPWZ1bmN0aW9uIFcodGUsSyxKKXt2YXIgY2Usc2U9Sy5sZW5ndGgsb2U9dGUubW9kdWx1cy5ieXRlTGVuZ3RoKCk7aWYoc2U+b2UtMTEpdGhyb3cgbmV3IEVycm9yKCJtZXNzYWdlIHRvbyBsb25nIik7cmV0dXJuIGNl''@;'; put 'put ''PUo/YWUuYWxsb2Mob2Utc2UtMywyNTUpOmZ1bmN0aW9uIE4odGUpe2Zvcih2YXIgY2UsSz1hZS5hbGxvY1Vuc2FmZSh0ZSksSj0wLHNlPUIoMip0ZSksb2U9MDtKPHRlOylvZT09PXNlLmxlbmd0aCYmKHNlPUIoMip0ZSksb2U9MCksKGNlPXNlW29lKytdKSYmKEtbSisrXT1jZSk7cmV0dXJu''@;'; put 'put ''IEt9KG9lLXNlLTMpLG5ldyBRKGFlLmNvbmNhdChbYWUuZnJvbShbMCxKPzE6Ml0pLGNlLGFlLmFsbG9jKDEpLEtdLG9lKSl9KGNlLEosc2UpO2Vsc2V7aWYoMyE9PW9lKXRocm93IG5ldyBFcnJvcigidW5rbm93biBwYWRkaW5nIik7aWYoKGRlPW5ldyBRKEopKS5jbXAoY2UubW9kdWx1cyk+''@;'; put 'put ''PTApdGhyb3cgbmV3IEVycm9yKCJkYXRhIHRvbyBsb25nIGZvciBtb2R1bHVzIil9cmV0dXJuIHNlP3JlKGRlLGNlKTpqKGRlLGNlKX19LDM4NjUxOihYZSxKZSxMKT0+e3ZhciBtZT1MKDgyMDU3KSxCPUwoNzM1MDIpLkJ1ZmZlcjtYZS5leHBvcnRzPWZ1bmN0aW9uIEUoRWUsVSl7cmV0dXJu''@;'; put 'put ''IEIuZnJvbShFZS50b1JlZChtZS5tb250KFUubW9kdWx1cykpLnJlZFBvdyhuZXcgbWUoVS5wdWJsaWNFeHBvbmVudCkpLmZyb21SZWQoKS50b0FycmF5KCkpfX0sNzk0MDE6WGU9PntYZS5leHBvcnRzPWZ1bmN0aW9uKEwsbWUpe2Zvcih2YXIgQj1MLmxlbmd0aCxFPS0xOysrRTxCOylMW0Vd''@;'; put 'put ''Xj1tZVtFXTtyZXR1cm4gTH19LDUzNzUzOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgRWU9TCg3MzUwMikuQnVmZmVyLFU9Z2xvYmFsLmNyeXB0b3x8Z2xvYmFsLm1zQ3J5cHRvO1hlLmV4cG9ydHM9VSYmVS5nZXRSYW5kb21WYWx1ZXM/ZnVuY3Rpb24gUShqLHJlKXtpZihqPjQyOTQ5''@;'; put 'put ''NjcyOTUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMiKTt2YXIgYWU9RWUuYWxsb2NVbnNhZmUoaik7aWYoaj4wKWlmKGo+NjU1MzYpZm9yKHZhciBZPTA7WTxqO1krPTY1NTM2KVUuZ2V0UmFuZG9tVmFsdWVzKGFlLnNsaWNlKFksWSs2NTUz''@;'; put 'put ''NikpO2Vsc2UgVS5nZXRSYW5kb21WYWx1ZXMoYWUpO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByZT9wcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uKCl7cmUobnVsbCxhZSl9KTphZX06ZnVuY3Rpb24gRSgpe3Rocm93IG5ldyBFcnJvcigiU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlv''@;'; put 'put ''biBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cblVzZSBDaHJvbWUsIEZpcmVmb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX19LDE0Mjc1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtZSgpe3Rocm93IG5ldyBFcnJvcigic2VjdXJlIHJhbmRvbSBudW1i''@;'; put 'put ''ZXIgZ2VuZXJhdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3NlclxudXNlIGNocm9tZSwgRmlyZUZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfXZhciBCPUwoNzM1MDIpLEU9TCg1Mzc1MyksRWU9Qi5CdWZmZXIsVT1CLmtNYXhMZW5ndGgsUT1nbG9iYWwuY3J5cHRvfHxnbG9i''@;'; put 'put ''YWwubXNDcnlwdG8saj1NYXRoLnBvdygyLDMyKS0xO2Z1bmN0aW9uIHJlKHRlLEspe2lmKCJudW1iZXIiIT10eXBlb2YgdGV8fHRlIT10ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvZmZzZXQgbXVzdCBiZSBhIG51bWJlciIpO2lmKHRlPmp8fHRlPDApdGhyb3cgbmV3IFR5cGVFcnJvcigib2Zm''@;'; put 'put ''c2V0IG11c3QgYmUgYSB1aW50MzIiKTtpZih0ZT5VfHx0ZT5LKXRocm93IG5ldyBSYW5nZUVycm9yKCJvZmZzZXQgb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gYWUodGUsSyxKKXtpZigibnVtYmVyIiE9dHlwZW9mIHRlfHx0ZSE9dGUpdGhyb3cgbmV3IFR5cGVFcnJvcigic2l6ZSBtdXN0IGJl''@;'; put 'put ''IGEgbnVtYmVyIik7aWYodGU+anx8dGU8MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJzaXplIG11c3QgYmUgYSB1aW50MzIiKTtpZih0ZStLPkp8fHRlPlUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImJ1ZmZlciB0b28gc21hbGwiKX1mdW5jdGlvbiBXKHRlLEssSixzZSl7aWYocHJvY2Vzcy5icm93''@;'; put 'put ''c2VyKXt2YXIgY2U9bmV3IFVpbnQ4QXJyYXkodGUuYnVmZmVyLEssSik7cmV0dXJuIFEuZ2V0UmFuZG9tVmFsdWVzKGNlKSxzZT92b2lkIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24oKXtzZShudWxsLHRlKX0pOnRlfWlmKCFzZSlyZXR1cm4gRShKKS5jb3B5KHRlLEspLHRlO0UoSixmdW5j''@;'; put 'put ''dGlvbih2ZSxBZSl7aWYodmUpcmV0dXJuIHNlKHZlKTtBZS5jb3B5KHRlLEspLHNlKG51bGwsdGUpfSl9USYmUS5nZXRSYW5kb21WYWx1ZXN8fCFwcm9jZXNzLmJyb3dzZXI/KEplLnJhbmRvbUZpbGw9ZnVuY3Rpb24gWSh0ZSxLLEosc2Upe2lmKCEoRWUuaXNCdWZmZXIodGUpfHx0ZSBpbnN0''@;'; put 'put ''YW5jZW9mIGdsb2JhbC5VaW50OEFycmF5KSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgSylzZT1LLEs9MCxKPXRlLmxlbmd0aDtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBKKXNlPUosSj10ZS5sZW5ndGgtSztlbHNlIGlmKCJmdW5jdGlvbiIhPXR5cGVvZiBzZSl0aHJvdyBuZXcgVHlwZUVycm9yKCciY2IiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO3JldHVybiByZShLLHRlLmxlbmd0aCksYWUoSixLLHRlLmxlbmd0aCksVyh0ZSxLLEosc2UpfSxK''@;'; put 'put ''ZS5yYW5kb21GaWxsU3luYz1mdW5jdGlvbiBOKHRlLEssSil7aWYodm9pZCAwPT09SyYmKEs9MCksIShFZS5pc0J1ZmZlcih0ZSl8fHRlIGluc3RhbmNlb2YgZ2xvYmFsLlVpbnQ4QXJyYXkpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWYiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgb3Ig''@;'; put 'put ''VWludDhBcnJheScpO3JldHVybiByZShLLHRlLmxlbmd0aCksdm9pZCAwPT09SiYmKEo9dGUubGVuZ3RoLUspLGFlKEosSyx0ZS5sZW5ndGgpLFcodGUsSyxKKX0pOihKZS5yYW5kb21GaWxsPW1lLEplLnJhbmRvbUZpbGxTeW5jPW1lKX0sNzA4OTE6WGU9PnsidXNlIHN0cmljdCI7dmFyIEw9''@;'; put 'put ''e307ZnVuY3Rpb24gbWUoUSxqLHJlKXtyZXx8KHJlPUVycm9yKTt2YXIgWT1mdW5jdGlvbihXKXtmdW5jdGlvbiBOKHRlLEssSil7cmV0dXJuIFcuY2FsbCh0aGlzLGZ1bmN0aW9uIGFlKFcsTix0ZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBqP2o6aihXLE4sdGUpfSh0ZSxLLEopKXx8dGhp''@;'; put 'put ''c31yZXR1cm4gZnVuY3Rpb24gSmUoUSxqKXtRLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGoucHJvdG90eXBlKSxRLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1RLFEuX19wcm90b19fPWp9KE4sVyksTn0ocmUpO1kucHJvdG90eXBlLm5hbWU9cmUubmFtZSxZLnByb3RvdHlwZS5jb2RlPVEsTFtR''@;'; put 'put ''XT1ZfWZ1bmN0aW9uIEIoUSxqKXtpZihBcnJheS5pc0FycmF5KFEpKXt2YXIgcmU9US5sZW5ndGg7cmV0dXJuIFE9US5tYXAoZnVuY3Rpb24oYWUpe3JldHVybiBTdHJpbmcoYWUpfSkscmU+Mj8ib25lIG9mICIuY29uY2F0KGosIiAiKS5jb25jYXQoUS5zbGljZSgwLHJlLTEpLmpvaW4oIiwg''@;'; put 'put ''IiksIiwgb3IgIikrUVtyZS0xXToyPT09cmU/Im9uZSBvZiAiLmNvbmNhdChqLCIgIikuY29uY2F0KFFbMF0sIiBvciAiKS5jb25jYXQoUVsxXSk6Im9mICIuY29uY2F0KGosIiAiKS5jb25jYXQoUVswXSl9cmV0dXJuIm9mICIuY29uY2F0KGosIiAiKS5jb25jYXQoU3RyaW5nKFEpKX1tZSgi''@;'; put 'put ''RVJSX0lOVkFMSURfT1BUX1ZBTFVFIixmdW5jdGlvbihRLGope3JldHVybidUaGUgdmFsdWUgIicraisnIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gIicrUSsnIid9LFR5cGVFcnJvciksbWUoIkVSUl9JTlZBTElEX0FSR19UWVBFIixmdW5jdGlvbihRLGoscmUpe3ZhciBhZSxZO2lmKCJzdHJp''@;'; put 'put ''bmciPT10eXBlb2YgaiYmZnVuY3Rpb24gRShRLGoscmUpe3JldHVybiBRLnN1YnN0cighcmV8fHJlPDA/MDorcmUsai5sZW5ndGgpPT09an0oaiwibm90ICIpPyhhZT0ibXVzdCBub3QgYmUiLGo9ai5yZXBsYWNlKC9ebm90IC8sIiIpKTphZT0ibXVzdCBiZSIsZnVuY3Rpb24gRWUoUSxqLHJl''@;'; put 'put ''KXtyZXR1cm4odm9pZCAwPT09cmV8fHJlPlEubGVuZ3RoKSYmKHJlPVEubGVuZ3RoKSxRLnN1YnN0cmluZyhyZS1qLmxlbmd0aCxyZSk9PT1qfShRLCIgYXJndW1lbnQiKSlZPSJUaGUgIi5jb25jYXQoUSwiICIpLmNvbmNhdChhZSwiICIpLmNvbmNhdChCKGosInR5cGUiKSk7ZWxzZXt2YXIg''@;'; put 'put ''Vz1mdW5jdGlvbiBVKFEsaixyZSl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiByZSYmKHJlPTApLCEocmUrai5sZW5ndGg+US5sZW5ndGgpJiYtMSE9PVEuaW5kZXhPZihqLHJlKX0oUSwiLiIpPyJwcm9wZXJ0eSI6ImFyZ3VtZW50IjtZPSdUaGUgIicuY29uY2F0KFEsJyIgJykuY29uY2F0KFcs''@;'; put 'put ''IiAiKS5jb25jYXQoYWUsIiAiKS5jb25jYXQoQihqLCJ0eXBlIikpfXJldHVybiBZKyIuIFJlY2VpdmVkIHR5cGUgIi5jb25jYXQodHlwZW9mIHJlKX0sVHlwZUVycm9yKSxtZSgiRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRiIsInN0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GIiksbWUoIkVSUl9N''@;'; put 'put ''RVRIT0RfTk9UX0lNUExFTUVOVEVEIixmdW5jdGlvbihRKXtyZXR1cm4iVGhlICIrUSsiIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQifSksbWUoIkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFIiwiUHJlbWF0dXJlIGNsb3NlIiksbWUoIkVSUl9TVFJFQU1fREVTVFJPWUVEIixmdW5jdGlv''@;'; put 'put ''bihRKXtyZXR1cm4iQ2Fubm90IGNhbGwgIitRKyIgYWZ0ZXIgYSBzdHJlYW0gd2FzIGRlc3Ryb3llZCJ9KSxtZSgiRVJSX01VTFRJUExFX0NBTExCQUNLIiwiQ2FsbGJhY2sgY2FsbGVkIG11bHRpcGxlIHRpbWVzIiksbWUoIkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUiLCJDYW5ub3QgcGlwZSwg''@;'; put 'put ''bm90IHJlYWRhYmxlIiksbWUoIkVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5EIiwid3JpdGUgYWZ0ZXIgZW5kIiksbWUoIkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMiLCJNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbSIsVHlwZUVycm9yKSxtZSgiRVJSX1VOS05PV05fRU5DT0RJ''@;'; put 'put ''TkciLGZ1bmN0aW9uKFEpe3JldHVybiJVbmtub3duIGVuY29kaW5nOiAiK1F9LFR5cGVFcnJvciksbWUoIkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQiLCJzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudCIpLFhlLmV4cG9ydHMucT1MfSw0MTMzOTooWGUsSmUsTCk9''@;'; put 'put ''PnsidXNlIHN0cmljdCI7dmFyIG1lPU9iamVjdC5rZXlzfHxmdW5jdGlvbihZKXt2YXIgVz1bXTtmb3IodmFyIE4gaW4gWSlXLnB1c2goTik7cmV0dXJuIFd9O1hlLmV4cG9ydHM9ajt2YXIgQj1MKDMxNTQpLEU9TCgyMDUyMCk7TCg4Mzg5NCkoaixCKTtmb3IodmFyIEVlPW1lKEUucHJvdG90''@;'; put 'put ''eXBlKSxVPTA7VTxFZS5sZW5ndGg7VSsrKXt2YXIgUT1FZVtVXTtqLnByb3RvdHlwZVtRXXx8KGoucHJvdG90eXBlW1FdPUUucHJvdG90eXBlW1FdKX1mdW5jdGlvbiBqKFkpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGopKXJldHVybiBuZXcgaihZKTtCLmNhbGwodGhpcyxZKSxFLmNhbGwodGhp''@;'; put 'put ''cyxZKSx0aGlzLmFsbG93SGFsZk9wZW49ITAsWSYmKCExPT09WS5yZWFkYWJsZSYmKHRoaXMucmVhZGFibGU9ITEpLCExPT09WS53cml0YWJsZSYmKHRoaXMud3JpdGFibGU9ITEpLCExPT09WS5hbGxvd0hhbGZPcGVuJiYodGhpcy5hbGxvd0hhbGZPcGVuPSExLHRoaXMub25jZSgiZW5kIixy''@;'; put 'put ''ZSkpKX1mdW5jdGlvbiByZSgpe3RoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWR8fHByb2Nlc3MubmV4dFRpY2soYWUsdGhpcyl9ZnVuY3Rpb24gYWUoWSl7WS5lbmQoKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoai5wcm90b3R5cGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6''@;'; put 'put ''ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoai5wcm90b3R5cGUsIndyaXRhYmxlQnVmZmVyIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVT''@;'; put 'put ''dGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoai5wcm90b3R5cGUsIndyaXRhYmxlTGVuZ3RoIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5sZW5ndGh9fSksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KGoucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3ll''@;'; put 'put ''ZCYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbihXKXt2b2lkIDA9PT10aGlzLl9yZWFkYWJsZVN0YXRlfHx2b2lkIDA9PT10aGlzLl93cml0YWJsZVN0YXRlfHwodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9Vyx0aGlzLl93cml0YWJsZVN0YXRlLmRl''@;'; put 'put ''c3Ryb3llZD1XKX19KX0sNTYwNzE6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO1hlLmV4cG9ydHM9Qjt2YXIgbWU9TCg2MDI1KTtmdW5jdGlvbiBCKEUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEIpKXJldHVybiBuZXcgQihFKTttZS5jYWxsKHRoaXMsRSl9TCg4Mzg5NCkoQixtZSksQi5wcm90''@;'; put 'put ''b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbihFLEVlLFUpe1UobnVsbCxFKX19LDMxNTQ6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZTtYZS5leHBvcnRzPWhlLGhlLlJlYWRhYmxlU3RhdGU9TWUsTCg1OTA2OSk7dmFyIFksRT1mdW5jdGlvbihCdCxvbil7cmV0dXJuIEJ0Lmxpc3Rl''@;'; put 'put ''bmVycyhvbikubGVuZ3RofSxFZT1MKDQ5NzApLFU9TCg5MzE3MikuQnVmZmVyLFE9Z2xvYmFsLlVpbnQ4QXJyYXl8fGZ1bmN0aW9uKCl7fSxhZT1MKDk0NjE2KTtZPWFlJiZhZS5kZWJ1Z2xvZz9hZS5kZWJ1Z2xvZygic3RyZWFtIik6ZnVuY3Rpb24oKXt9O3ZhciB2ZSxBZSxrZSxXPUwoMjUw''@;'; put 'put ''MTkpLE49TCg0MTkyMCksSz1MKDQ3MTAyKS5nZXRIaWdoV2F0ZXJNYXJrLEo9TCg3MDg5MSkucSxzZT1KLkVSUl9JTlZBTElEX0FSR19UWVBFLG9lPUouRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRixjZT1KLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELGRlPUouRVJSX1NUUkVBTV9VTlNI''@;'; put 'put ''SUZUX0FGVEVSX0VORF9FVkVOVDtMKDgzODk0KShoZSxFZSk7dmFyIFNlPU4uZXJyb3JPckRlc3Ryb3ksSWU9WyJlcnJvciIsImNsb3NlIiwiZGVzdHJveSIsInBhdXNlIiwicmVzdW1lIl07ZnVuY3Rpb24gTWUoaHQsQnQsb24pe21lPW1lfHxMKDQxMzM5KSwiYm9vbGVhbiIhPXR5cGVvZiBv''@;'; put 'put ''biYmKG9uPUJ0IGluc3RhbmNlb2YgbWUpLHRoaXMub2JqZWN0TW9kZT0hIShodD1odHx8e30pLm9iamVjdE1vZGUsb24mJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIWh0LnJlYWRhYmxlT2JqZWN0TW9kZSksdGhpcy5oaWdoV2F0ZXJNYXJrPUsodGhpcyxodCwicmVhZGFi''@;'; put 'put ''bGVIaWdoV2F0ZXJNYXJrIixvbiksdGhpcy5idWZmZXI9bmV3IFcsdGhpcy5sZW5ndGg9MCx0aGlzLnBpcGVzPW51bGwsdGhpcy5waXBlc0NvdW50PTAsdGhpcy5mbG93aW5nPW51bGwsdGhpcy5lbmRlZD0hMSx0aGlzLmVuZEVtaXR0ZWQ9ITEsdGhpcy5yZWFkaW5nPSExLHRoaXMuc3luYz0h''@;'; put 'put ''MCx0aGlzLm5lZWRSZWFkYWJsZT0hMSx0aGlzLmVtaXR0ZWRSZWFkYWJsZT0hMSx0aGlzLnJlYWRhYmxlTGlzdGVuaW5nPSExLHRoaXMucmVzdW1lU2NoZWR1bGVkPSExLHRoaXMucGF1c2VkPSEwLHRoaXMuZW1pdENsb3NlPSExIT09aHQuZW1pdENsb3NlLHRoaXMuYXV0b0Rlc3Ryb3k9ISFo''@;'; put 'put ''dC5hdXRvRGVzdHJveSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmRlZmF1bHRFbmNvZGluZz1odC5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGY4Iix0aGlzLmF3YWl0RHJhaW49MCx0aGlzLnJlYWRpbmdNb3JlPSExLHRoaXMuZGVjb2Rlcj1udWxsLHRoaXMuZW5jb2Rpbmc9bnVsbCxodC5lbmNvZGlu''@;'; put 'put ''ZyYmKHZlfHwodmU9TCg3MzA1NCkucyksdGhpcy5kZWNvZGVyPW5ldyB2ZShodC5lbmNvZGluZyksdGhpcy5lbmNvZGluZz1odC5lbmNvZGluZyl9ZnVuY3Rpb24gaGUoaHQpe2lmKG1lPW1lfHxMKDQxMzM5KSwhKHRoaXMgaW5zdGFuY2VvZiBoZSkpcmV0dXJuIG5ldyBoZShodCk7dGhpcy5f''@;'; put 'put ''cmVhZGFibGVTdGF0ZT1uZXcgTWUoaHQsdGhpcyx0aGlzIGluc3RhbmNlb2YgbWUpLHRoaXMucmVhZGFibGU9ITAsaHQmJigiZnVuY3Rpb24iPT10eXBlb2YgaHQucmVhZCYmKHRoaXMuX3JlYWQ9aHQucmVhZCksImZ1bmN0aW9uIj09dHlwZW9mIGh0LmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95''@;'; put 'put ''PWh0LmRlc3Ryb3kpKSxFZS5jYWxsKHRoaXMpfWZ1bmN0aW9uIE8oaHQsQnQsb24sX3QsdHQpe1koInJlYWRhYmxlQWRkQ2h1bmsiLEJ0KTt2YXIgbHQsZXQ9aHQuX3JlYWRhYmxlU3RhdGU7aWYobnVsbD09PUJ0KWV0LnJlYWRpbmc9ITEsZnVuY3Rpb24gVihodCxCdCl7aWYoWSgib25Fb2ZD''@;'; put 'put ''aHVuayIpLCFCdC5lbmRlZCl7aWYoQnQuZGVjb2Rlcil7dmFyIG9uPUJ0LmRlY29kZXIuZW5kKCk7b24mJm9uLmxlbmd0aCYmKEJ0LmJ1ZmZlci5wdXNoKG9uKSxCdC5sZW5ndGgrPUJ0Lm9iamVjdE1vZGU/MTpvbi5sZW5ndGgpfUJ0LmVuZGVkPSEwLEJ0LnN5bmM/VChodCk6KEJ0Lm5lZWRS''@;'; put 'put ''ZWFkYWJsZT0hMSxCdC5lbWl0dGVkUmVhZGFibGV8fChCdC5lbWl0dGVkUmVhZGFibGU9ITAsUyhodCkpKX19KGh0LGV0KTtlbHNlIGlmKHR0fHwobHQ9ZnVuY3Rpb24gZWUoaHQsQnQpe3ZhciBvbjtyZXR1cm4hZnVuY3Rpb24gcmUoaHQpe3JldHVybiBVLmlzQnVmZmVyKGh0KXx8aHQgaW5z''@;'; put 'put ''dGFuY2VvZiBRfShCdCkmJiJzdHJpbmciIT10eXBlb2YgQnQmJnZvaWQgMCE9PUJ0JiYhaHQub2JqZWN0TW9kZSYmKG9uPW5ldyBzZSgiY2h1bmsiLFsic3RyaW5nIiwiQnVmZmVyIiwiVWludDhBcnJheSJdLEJ0KSksb259KGV0LEJ0KSksbHQpU2UoaHQsbHQpO2Vsc2UgaWYoZXQub2JqZWN0''@;'; put 'put ''TW9kZXx8QnQmJkJ0Lmxlbmd0aD4wKWlmKCJzdHJpbmciIT10eXBlb2YgQnQmJiFldC5vYmplY3RNb2RlJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YoQnQpIT09VS5wcm90b3R5cGUmJihCdD1mdW5jdGlvbiBqKGh0KXtyZXR1cm4gVS5mcm9tKGh0KX0oQnQpKSxfdClldC5lbmRFbWl0dGVkP1Nl''@;'; put 'put ''KGh0LG5ldyBkZSk6eihodCxldCxCdCwhMCk7ZWxzZSBpZihldC5lbmRlZClTZShodCxuZXcgb2UpO2Vsc2V7aWYoZXQuZGVzdHJveWVkKXJldHVybiExO2V0LnJlYWRpbmc9ITEsZXQuZGVjb2RlciYmIW9uPyhCdD1ldC5kZWNvZGVyLndyaXRlKEJ0KSxldC5vYmplY3RNb2RlfHwwIT09QnQu''@;'; put 'put ''bGVuZ3RoP3ooaHQsZXQsQnQsITEpOkYoaHQsZXQpKTp6KGh0LGV0LEJ0LCExKX1lbHNlIF90fHwoZXQucmVhZGluZz0hMSxGKGh0LGV0KSk7cmV0dXJuIWV0LmVuZGVkJiYoZXQubGVuZ3RoPGV0LmhpZ2hXYXRlck1hcmt8fDA9PT1ldC5sZW5ndGgpfWZ1bmN0aW9uIHooaHQsQnQsb24sX3Qp''@;'; put 'put ''e0J0LmZsb3dpbmcmJjA9PT1CdC5sZW5ndGgmJiFCdC5zeW5jPyhCdC5hd2FpdERyYWluPTAsaHQuZW1pdCgiZGF0YSIsb24pKTooQnQubGVuZ3RoKz1CdC5vYmplY3RNb2RlPzE6b24ubGVuZ3RoLF90P0J0LmJ1ZmZlci51bnNoaWZ0KG9uKTpCdC5idWZmZXIucHVzaChvbiksQnQubmVlZFJl''@;'; put 'put ''YWRhYmxlJiZUKGh0KSksRihodCxCdCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KGhlLnByb3RvdHlwZSwiZGVzdHJveWVkIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95''@;'; put 'put ''ZWR9LHNldDpmdW5jdGlvbihCdCl7IXRoaXMuX3JlYWRhYmxlU3RhdGV8fCh0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD1CdCl9fSksaGUucHJvdG90eXBlLmRlc3Ryb3k9Ti5kZXN0cm95LGhlLnByb3RvdHlwZS5fdW5kZXN0cm95PU4udW5kZXN0cm95LGhlLnByb3RvdHlwZS5fZGVz''@;'; put 'put ''dHJveT1mdW5jdGlvbihodCxCdCl7QnQoaHQpfSxoZS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihodCxCdCl7dmFyIF90LG9uPXRoaXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuIG9uLm9iamVjdE1vZGU/X3Q9ITA6InN0cmluZyI9PXR5cGVvZiBodCYmKChCdD1CdHx8b24uZGVmYXVsdEVuY29k''@;'; put 'put ''aW5nKSE9PW9uLmVuY29kaW5nJiYoaHQ9VS5mcm9tKGh0LEJ0KSxCdD0iIiksX3Q9ITApLE8odGhpcyxodCxCdCwhMSxfdCl9LGhlLnByb3RvdHlwZS51bnNoaWZ0PWZ1bmN0aW9uKGh0KXtyZXR1cm4gTyh0aGlzLGh0LG51bGwsITAsITEpfSxoZS5wcm90b3R5cGUuaXNQYXVzZWQ9ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4hMT09PXRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZ30saGUucHJvdG90eXBlLnNldEVuY29kaW5nPWZ1bmN0aW9uKGh0KXt2ZXx8KHZlPUwoNzMwNTQpLnMpO3ZhciBCdD1uZXcgdmUoaHQpO3RoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlcj1CdCx0aGlzLl9yZWFkYWJs''@;'; put 'put ''ZVN0YXRlLmVuY29kaW5nPXRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlci5lbmNvZGluZztmb3IodmFyIG9uPXRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmhlYWQsX3Q9IiI7bnVsbCE9PW9uOylfdCs9QnQud3JpdGUob24uZGF0YSksb249b24ubmV4dDtyZXR1cm4gdGhpcy5fcmVhZGFi''@;'; put 'put ''bGVTdGF0ZS5idWZmZXIuY2xlYXIoKSwiIiE9PV90JiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5wdXNoKF90KSx0aGlzLl9yZWFkYWJsZVN0YXRlLmxlbmd0aD1fdC5sZW5ndGgsdGhpc307dmFyIG5lPTEwNzM3NDE4MjQ7ZnVuY3Rpb24gUChodCxCdCl7cmV0dXJuIGh0PD0wfHwwPT09''@;'; put 'put ''QnQubGVuZ3RoJiZCdC5lbmRlZD8wOkJ0Lm9iamVjdE1vZGU/MTpodCE9aHQ/QnQuZmxvd2luZyYmQnQubGVuZ3RoP0J0LmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoOkJ0Lmxlbmd0aDooaHQ+QnQuaGlnaFdhdGVyTWFyayYmKEJ0LmhpZ2hXYXRlck1hcms9ZnVuY3Rpb24geChodCl7cmV0dXJu''@;'; put 'put ''IGh0Pj1uZT9odD1uZTooaHQtLSxodHw9aHQ+Pj4xLGh0fD1odD4+PjIsaHR8PWh0Pj4+NCxodHw9aHQ+Pj44LGh0fD1odD4+PjE2LGh0KyspLGh0fShodCkpLGh0PD1CdC5sZW5ndGg/aHQ6QnQuZW5kZWQ/QnQubGVuZ3RoOihCdC5uZWVkUmVhZGFibGU9ITAsMCkpfWZ1bmN0aW9uIFQoaHQp''@;'; put 'put ''e3ZhciBCdD1odC5fcmVhZGFibGVTdGF0ZTtZKCJlbWl0UmVhZGFibGUiLEJ0Lm5lZWRSZWFkYWJsZSxCdC5lbWl0dGVkUmVhZGFibGUpLEJ0Lm5lZWRSZWFkYWJsZT0hMSxCdC5lbWl0dGVkUmVhZGFibGV8fChZKCJlbWl0UmVhZGFibGUiLEJ0LmZsb3dpbmcpLEJ0LmVtaXR0ZWRSZWFkYWJs''@;'; put 'put ''ZT0hMCxwcm9jZXNzLm5leHRUaWNrKFMsaHQpKX1mdW5jdGlvbiBTKGh0KXt2YXIgQnQ9aHQuX3JlYWRhYmxlU3RhdGU7WSgiZW1pdFJlYWRhYmxlXyIsQnQuZGVzdHJveWVkLEJ0Lmxlbmd0aCxCdC5lbmRlZCksIUJ0LmRlc3Ryb3llZCYmKEJ0Lmxlbmd0aHx8QnQuZW5kZWQpJiYoaHQuZW1p''@;'; put 'put ''dCgicmVhZGFibGUiKSxCdC5lbWl0dGVkUmVhZGFibGU9ITEpLEJ0Lm5lZWRSZWFkYWJsZT0hQnQuZmxvd2luZyYmIUJ0LmVuZGVkJiZCdC5sZW5ndGg8PUJ0LmhpZ2hXYXRlck1hcmssZ3QoaHQpfWZ1bmN0aW9uIEYoaHQsQnQpe0J0LnJlYWRpbmdNb3JlfHwoQnQucmVhZGluZ01vcmU9ITAs''@;'; put 'put ''cHJvY2Vzcy5uZXh0VGljayh5ZSxodCxCdCkpfWZ1bmN0aW9uIHllKGh0LEJ0KXtmb3IoOyFCdC5yZWFkaW5nJiYhQnQuZW5kZWQmJihCdC5sZW5ndGg8QnQuaGlnaFdhdGVyTWFya3x8QnQuZmxvd2luZyYmMD09PUJ0Lmxlbmd0aCk7KXt2YXIgb249QnQubGVuZ3RoO2lmKFkoIm1heWJlUmVh''@;'; put 'put ''ZE1vcmUgcmVhZCAwIiksaHQucmVhZCgwKSxvbj09PUJ0Lmxlbmd0aClicmVha31CdC5yZWFkaW5nTW9yZT0hMX1mdW5jdGlvbiBEZShodCl7dmFyIEJ0PWh0Ll9yZWFkYWJsZVN0YXRlO0J0LnJlYWRhYmxlTGlzdGVuaW5nPWh0Lmxpc3RlbmVyQ291bnQoInJlYWRhYmxlIik+MCxCdC5yZXN1''@;'; put 'put ''bWVTY2hlZHVsZWQmJiFCdC5wYXVzZWQ/QnQuZmxvd2luZz0hMDpodC5saXN0ZW5lckNvdW50KCJkYXRhIik+MCYmaHQucmVzdW1lKCl9ZnVuY3Rpb24gUGUoaHQpe1koInJlYWRhYmxlIG5leHR0aWNrIHJlYWQgMCIpLGh0LnJlYWQoMCl9ZnVuY3Rpb24gJGUoaHQsQnQpe1koInJlc3VtZSIs''@;'; put 'put ''QnQucmVhZGluZyksQnQucmVhZGluZ3x8aHQucmVhZCgwKSxCdC5yZXN1bWVTY2hlZHVsZWQ9ITEsaHQuZW1pdCgicmVzdW1lIiksZ3QoaHQpLEJ0LmZsb3dpbmcmJiFCdC5yZWFkaW5nJiZodC5yZWFkKDApfWZ1bmN0aW9uIGd0KGh0KXt2YXIgQnQ9aHQuX3JlYWRhYmxlU3RhdGU7Zm9yKFko''@;'; put 'put ''ImZsb3ciLEJ0LmZsb3dpbmcpO0J0LmZsb3dpbmcmJm51bGwhPT1odC5yZWFkKCk7KTt9ZnVuY3Rpb24gd3QoaHQsQnQpe3JldHVybiAwPT09QnQubGVuZ3RoP251bGw6KEJ0Lm9iamVjdE1vZGU/b249QnQuYnVmZmVyLnNoaWZ0KCk6IWh0fHxodD49QnQubGVuZ3RoPyhvbj1CdC5kZWNvZGVy''@;'; put 'put ''P0J0LmJ1ZmZlci5qb2luKCIiKToxPT09QnQuYnVmZmVyLmxlbmd0aD9CdC5idWZmZXIuZmlyc3QoKTpCdC5idWZmZXIuY29uY2F0KEJ0Lmxlbmd0aCksQnQuYnVmZmVyLmNsZWFyKCkpOm9uPUJ0LmJ1ZmZlci5jb25zdW1lKGh0LEJ0LmRlY29kZXIpLG9uKTt2YXIgb259ZnVuY3Rpb24gbXQo''@;'; put 'put ''aHQpe3ZhciBCdD1odC5fcmVhZGFibGVTdGF0ZTtZKCJlbmRSZWFkYWJsZSIsQnQuZW5kRW1pdHRlZCksQnQuZW5kRW1pdHRlZHx8KEJ0LmVuZGVkPSEwLHByb2Nlc3MubmV4dFRpY2sodnQsQnQsaHQpKX1mdW5jdGlvbiB2dChodCxCdCl7aWYoWSgiZW5kUmVhZGFibGVOVCIsaHQuZW5kRW1p''@;'; put 'put ''dHRlZCxodC5sZW5ndGgpLCFodC5lbmRFbWl0dGVkJiYwPT09aHQubGVuZ3RoJiYoaHQuZW5kRW1pdHRlZD0hMCxCdC5yZWFkYWJsZT0hMSxCdC5lbWl0KCJlbmQiKSxodC5hdXRvRGVzdHJveSkpe3ZhciBvbj1CdC5fd3JpdGFibGVTdGF0ZTsoIW9ufHxvbi5hdXRvRGVzdHJveSYmb24uZmlu''@;'; put 'put ''aXNoZWQpJiZCdC5kZXN0cm95KCl9fWZ1bmN0aW9uIEF0KGh0LEJ0KXtmb3IodmFyIG9uPTAsX3Q9aHQubGVuZ3RoO29uPF90O29uKyspaWYoaHRbb25dPT09QnQpcmV0dXJuIG9uO3JldHVybi0xfWhlLnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKGh0KXtZKCJyZWFkIixodCksaHQ9cGFyc2VJ''@;'; put 'put ''bnQoaHQsMTApO3ZhciBCdD10aGlzLl9yZWFkYWJsZVN0YXRlLG9uPWh0O2lmKDAhPT1odCYmKEJ0LmVtaXR0ZWRSZWFkYWJsZT0hMSksMD09PWh0JiZCdC5uZWVkUmVhZGFibGUmJigoMCE9PUJ0LmhpZ2hXYXRlck1hcms/QnQubGVuZ3RoPj1CdC5oaWdoV2F0ZXJNYXJrOkJ0Lmxlbmd0aD4w''@;'; put 'put ''KXx8QnQuZW5kZWQpKXJldHVybiBZKCJyZWFkOiBlbWl0UmVhZGFibGUiLEJ0Lmxlbmd0aCxCdC5lbmRlZCksMD09PUJ0Lmxlbmd0aCYmQnQuZW5kZWQ/bXQodGhpcyk6VCh0aGlzKSxudWxsO2lmKDA9PT0oaHQ9UChodCxCdCkpJiZCdC5lbmRlZClyZXR1cm4gMD09PUJ0Lmxlbmd0aCYmbXQo''@;'; put 'put ''dGhpcyksbnVsbDt2YXIgdHQsX3Q9QnQubmVlZFJlYWRhYmxlO3JldHVybiBZKCJuZWVkIHJlYWRhYmxlIixfdCksKDA9PT1CdC5sZW5ndGh8fEJ0Lmxlbmd0aC1odDxCdC5oaWdoV2F0ZXJNYXJrKSYmWSgibGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsiLF90PSEwKSxCdC5lbmRlZHx8QnQu''@;'; put 'put ''cmVhZGluZz9ZKCJyZWFkaW5nIG9yIGVuZGVkIixfdD0hMSk6X3QmJihZKCJkbyByZWFkIiksQnQucmVhZGluZz0hMCxCdC5zeW5jPSEwLDA9PT1CdC5sZW5ndGgmJihCdC5uZWVkUmVhZGFibGU9ITApLHRoaXMuX3JlYWQoQnQuaGlnaFdhdGVyTWFyayksQnQuc3luYz0hMSxCdC5yZWFkaW5n''@;'; put 'put ''fHwoaHQ9UChvbixCdCkpKSxudWxsPT09KHR0PWh0PjA/d3QoaHQsQnQpOm51bGwpPyhCdC5uZWVkUmVhZGFibGU9QnQubGVuZ3RoPD1CdC5oaWdoV2F0ZXJNYXJrLGh0PTApOihCdC5sZW5ndGgtPWh0LEJ0LmF3YWl0RHJhaW49MCksMD09PUJ0Lmxlbmd0aCYmKEJ0LmVuZGVkfHwoQnQubmVl''@;'; put 'put ''ZFJlYWRhYmxlPSEwKSxvbiE9PWh0JiZCdC5lbmRlZCYmbXQodGhpcykpLG51bGwhPT10dCYmdGhpcy5lbWl0KCJkYXRhIix0dCksdHR9LGhlLnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbihodCl7U2UodGhpcyxuZXcgY2UoIl9yZWFkKCkiKSl9LGhlLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9u''@;'; put 'put ''KGh0LEJ0KXt2YXIgb249dGhpcyxfdD10aGlzLl9yZWFkYWJsZVN0YXRlO3N3aXRjaChfdC5waXBlc0NvdW50KXtjYXNlIDA6X3QucGlwZXM9aHQ7YnJlYWs7Y2FzZSAxOl90LnBpcGVzPVtfdC5waXBlcyxodF07YnJlYWs7ZGVmYXVsdDpfdC5waXBlcy5wdXNoKGh0KX1fdC5waXBlc0NvdW50''@;'; put 'put ''Kz0xLFkoInBpcGUgY291bnQ9JWQgb3B0cz0laiIsX3QucGlwZXNDb3VudCxCdCk7dmFyIGV0PUJ0JiYhMT09PUJ0LmVuZHx8aHQ9PT1wcm9jZXNzLnN0ZG91dHx8aHQ9PT1wcm9jZXNzLnN0ZGVycj9KdDpMdDtmdW5jdGlvbiBMdCgpe1koIm9uZW5kIiksaHQuZW5kKCl9X3QuZW5kRW1pdHRl''@;'; put 'put ''ZD9wcm9jZXNzLm5leHRUaWNrKGV0KTpvbi5vbmNlKCJlbmQiLGV0KSxodC5vbigidW5waXBlIixmdW5jdGlvbiBsdChnbixkbil7WSgib251bnBpcGUiKSxnbj09PW9uJiZkbiYmITE9PT1kbi5oYXNVbnBpcGVkJiYoZG4uaGFzVW5waXBlZD0hMCxmdW5jdGlvbiBIdCgpe1koImNsZWFudXAi''@;'; put 'put ''KSxodC5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLHl0KSxodC5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixqdCksaHQucmVtb3ZlTGlzdGVuZXIoImRyYWluIixDdCksaHQucmVtb3ZlTGlzdGVuZXIoImVycm9yIixVZSksaHQucmVtb3ZlTGlzdGVuZXIoInVucGlwZSIsbHQpLG9uLnJlbW92ZUxp''@;'; put 'put ''c3RlbmVyKCJlbmQiLEx0KSxvbi5yZW1vdmVMaXN0ZW5lcigiZW5kIixKdCksb24ucmVtb3ZlTGlzdGVuZXIoImRhdGEiLEdlKSxmdD0hMCxfdC5hd2FpdERyYWluJiYoIWh0Ll93cml0YWJsZVN0YXRlfHxodC5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW4pJiZDdCgpfSgpKX0pO3ZhciBDdD1m''@;'; put 'put ''dW5jdGlvbiBDZShodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG9uPWh0Ll9yZWFkYWJsZVN0YXRlO1koInBpcGVPbkRyYWluIixvbi5hd2FpdERyYWluKSxvbi5hd2FpdERyYWluJiZvbi5hd2FpdERyYWluLS0sMD09PW9uLmF3YWl0RHJhaW4mJkUoaHQsImRhdGEiKSYmKG9uLmZsb3dpbmc9''@;'; put 'put ''ITAsZ3QoaHQpKX19KG9uKTtodC5vbigiZHJhaW4iLEN0KTt2YXIgZnQ9ITE7ZnVuY3Rpb24gR2UoZ24pe1koIm9uZGF0YSIpO3ZhciBkbj1odC53cml0ZShnbik7WSgiZGVzdC53cml0ZSIsZG4pLCExPT09ZG4mJigoMT09PV90LnBpcGVzQ291bnQmJl90LnBpcGVzPT09aHR8fF90LnBpcGVz''@;'; put 'put ''Q291bnQ+MSYmLTEhPT1BdChfdC5waXBlcyxodCkpJiYhZnQmJihZKCJmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UiLF90LmF3YWl0RHJhaW4pLF90LmF3YWl0RHJhaW4rKyksb24ucGF1c2UoKSl9ZnVuY3Rpb24gVWUoZ24pe1koIm9uZXJyb3IiLGduKSxKdCgpLGh0LnJlbW92ZUxpc3Rl''@;'; put 'put ''bmVyKCJlcnJvciIsVWUpLDA9PT1FKGh0LCJlcnJvciIpJiZTZShodCxnbil9ZnVuY3Rpb24geXQoKXtodC5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixqdCksSnQoKX1mdW5jdGlvbiBqdCgpe1koIm9uZmluaXNoIiksaHQucmVtb3ZlTGlzdGVuZXIoImNsb3NlIix5dCksSnQoKX1mdW5jdGlv''@;'; put 'put ''biBKdCgpe1koInVucGlwZSIpLG9uLnVucGlwZShodCl9cmV0dXJuIG9uLm9uKCJkYXRhIixHZSksZnVuY3Rpb24gVGUoaHQsQnQsb24pe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBodC5wcmVwZW5kTGlzdGVuZXIpcmV0dXJuIGh0LnByZXBlbmRMaXN0ZW5lcihCdCxvbik7aHQuX2V2ZW50cyYm''@;'; put 'put ''aHQuX2V2ZW50c1tCdF0/QXJyYXkuaXNBcnJheShodC5fZXZlbnRzW0J0XSk/aHQuX2V2ZW50c1tCdF0udW5zaGlmdChvbik6aHQuX2V2ZW50c1tCdF09W29uLGh0Ll9ldmVudHNbQnRdXTpodC5vbihCdCxvbil9KGh0LCJlcnJvciIsVWUpLGh0Lm9uY2UoImNsb3NlIix5dCksaHQub25jZSgi''@;'; put 'put ''ZmluaXNoIixqdCksaHQuZW1pdCgicGlwZSIsb24pLF90LmZsb3dpbmd8fChZKCJwaXBlIHJlc3VtZSIpLG9uLnJlc3VtZSgpKSxodH0saGUucHJvdG90eXBlLnVucGlwZT1mdW5jdGlvbihodCl7dmFyIEJ0PXRoaXMuX3JlYWRhYmxlU3RhdGUsb249e2hhc1VucGlwZWQ6ITF9O2lmKDA9PT1C''@;'; put 'put ''dC5waXBlc0NvdW50KXJldHVybiB0aGlzO2lmKDE9PT1CdC5waXBlc0NvdW50KXJldHVybiBodCYmaHQhPT1CdC5waXBlc3x8KGh0fHwoaHQ9QnQucGlwZXMpLEJ0LnBpcGVzPW51bGwsQnQucGlwZXNDb3VudD0wLEJ0LmZsb3dpbmc9ITEsaHQmJmh0LmVtaXQoInVucGlwZSIsdGhpcyxvbikp''@;'; put 'put ''LHRoaXM7aWYoIWh0KXt2YXIgX3Q9QnQucGlwZXMsdHQ9QnQucGlwZXNDb3VudDtCdC5waXBlcz1udWxsLEJ0LnBpcGVzQ291bnQ9MCxCdC5mbG93aW5nPSExO2Zvcih2YXIgZXQ9MDtldDx0dDtldCsrKV90W2V0XS5lbWl0KCJ1bnBpcGUiLHRoaXMse2hhc1VucGlwZWQ6ITF9KTtyZXR1cm4g''@;'; put 'put ''dGhpc312YXIgbHQ9QXQoQnQucGlwZXMsaHQpO3JldHVybi0xPT09bHR8fChCdC5waXBlcy5zcGxpY2UobHQsMSksQnQucGlwZXNDb3VudC09MSwxPT09QnQucGlwZXNDb3VudCYmKEJ0LnBpcGVzPUJ0LnBpcGVzWzBdKSxodC5lbWl0KCJ1bnBpcGUiLHRoaXMsb24pKSx0aGlzfSxoZS5wcm90''@;'; put 'put ''b3R5cGUuYWRkTGlzdGVuZXI9aGUucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGh0LEJ0KXt2YXIgb249RWUucHJvdG90eXBlLm9uLmNhbGwodGhpcyxodCxCdCksX3Q9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4iZGF0YSI9PT1odD8oX3QucmVhZGFibGVMaXN0ZW5pbmc9dGhpcy5saXN0ZW5l''@;'; put 'put ''ckNvdW50KCJyZWFkYWJsZSIpPjAsITEhPT1fdC5mbG93aW5nJiZ0aGlzLnJlc3VtZSgpKToicmVhZGFibGUiPT09aHQmJiFfdC5lbmRFbWl0dGVkJiYhX3QucmVhZGFibGVMaXN0ZW5pbmcmJihfdC5yZWFkYWJsZUxpc3RlbmluZz1fdC5uZWVkUmVhZGFibGU9ITAsX3QuZmxvd2luZz0hMSxf''@;'; put 'put ''dC5lbWl0dGVkUmVhZGFibGU9ITEsWSgib24gcmVhZGFibGUiLF90Lmxlbmd0aCxfdC5yZWFkaW5nKSxfdC5sZW5ndGg/VCh0aGlzKTpfdC5yZWFkaW5nfHxwcm9jZXNzLm5leHRUaWNrKFBlLHRoaXMpKSxvbn0saGUucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKGh0LEJ0KXt2''@;'; put 'put ''YXIgb249RWUucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyLmNhbGwodGhpcyxodCxCdCk7cmV0dXJuInJlYWRhYmxlIj09PWh0JiZwcm9jZXNzLm5leHRUaWNrKERlLHRoaXMpLG9ufSxoZS5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKGh0KXt2YXIgQnQ9RWUucHJvdG90''@;'; put 'put ''eXBlLnJlbW92ZUFsbExpc3RlbmVycy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuKCJyZWFkYWJsZSI9PT1odHx8dm9pZCAwPT09aHQpJiZwcm9jZXNzLm5leHRUaWNrKERlLHRoaXMpLEJ0fSxoZS5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7dmFyIGh0PXRoaXMuX3JlYWRhYmxl''@;'; put 'put ''U3RhdGU7cmV0dXJuIGh0LmZsb3dpbmd8fChZKCJyZXN1bWUiKSxodC5mbG93aW5nPSFodC5yZWFkYWJsZUxpc3RlbmluZyxmdW5jdGlvbiBRZShodCxCdCl7QnQucmVzdW1lU2NoZWR1bGVkfHwoQnQucmVzdW1lU2NoZWR1bGVkPSEwLHByb2Nlc3MubmV4dFRpY2soJGUsaHQsQnQpKX0odGhp''@;'; put 'put ''cyxodCkpLGh0LnBhdXNlZD0hMSx0aGlzfSxoZS5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXtyZXR1cm4gWSgiY2FsbCBwYXVzZSBmbG93aW5nPSVqIix0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpLCExIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiYoWSgicGF1c2UiKSx0''@;'; put 'put ''aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9ITEsdGhpcy5lbWl0KCJwYXVzZSIpKSx0aGlzLl9yZWFkYWJsZVN0YXRlLnBhdXNlZD0hMCx0aGlzfSxoZS5wcm90b3R5cGUud3JhcD1mdW5jdGlvbihodCl7dmFyIEJ0PXRoaXMsb249dGhpcy5fcmVhZGFibGVTdGF0ZSxfdD0hMTtmb3IodmFy''@;'; put 'put ''IHR0IGluIGh0Lm9uKCJlbmQiLGZ1bmN0aW9uKCl7aWYoWSgid3JhcHBlZCBlbmQiKSxvbi5kZWNvZGVyJiYhb24uZW5kZWQpe3ZhciBsdD1vbi5kZWNvZGVyLmVuZCgpO2x0JiZsdC5sZW5ndGgmJkJ0LnB1c2gobHQpfUJ0LnB1c2gobnVsbCl9KSxodC5vbigiZGF0YSIsZnVuY3Rpb24obHQp''@;'; put 'put ''e1koIndyYXBwZWQgZGF0YSIpLG9uLmRlY29kZXImJihsdD1vbi5kZWNvZGVyLndyaXRlKGx0KSksb24ub2JqZWN0TW9kZSYmbnVsbD09bHR8fCEob24ub2JqZWN0TW9kZXx8bHQmJmx0Lmxlbmd0aCl8fEJ0LnB1c2gobHQpfHwoX3Q9ITAsaHQucGF1c2UoKSl9KSxodCl2b2lkIDA9PT10aGlz''@;'; put 'put ''W3R0XSYmImZ1bmN0aW9uIj09dHlwZW9mIGh0W3R0XSYmKHRoaXNbdHRdPWZ1bmN0aW9uKEx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gaHRbTHRdLmFwcGx5KGh0LGFyZ3VtZW50cyl9fSh0dCkpO2Zvcih2YXIgZXQ9MDtldDxJZS5sZW5ndGg7ZXQrKylodC5vbihJZVtldF0sdGhpcy5l''@;'; put 'put ''bWl0LmJpbmQodGhpcyxJZVtldF0pKTtyZXR1cm4gdGhpcy5fcmVhZD1mdW5jdGlvbihsdCl7WSgid3JhcHBlZCBfcmVhZCIsbHQpLF90JiYoX3Q9ITEsaHQucmVzdW1lKCkpfSx0aGlzfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoaGUucHJvdG90eXBlW1N5bWJvbC5hc3luY0l0ZXJh''@;'; put 'put ''dG9yXT1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1BZSYmKEFlPUwoMTM4NzIpKSxBZSh0aGlzKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoZS5wcm90b3R5cGUsInJlYWRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jl''@;'; put 'put ''YWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaGUucHJvdG90eXBlLCJyZWFkYWJsZUJ1ZmZlciIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVy''@;'; put 'put ''fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoZS5wcm90b3R5cGUsInJlYWRhYmxlRmxvd2luZyIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZ30sc2V0OmZ1bmN0aW9uKEJ0KXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhp''@;'; put 'put ''cy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nPUJ0KX19KSxoZS5fZnJvbUxpc3Q9d3QsT2JqZWN0LmRlZmluZVByb3BlcnR5KGhlLnByb3RvdHlwZSwicmVhZGFibGVMZW5ndGgiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmxlbmd0aH19''@;'; put 'put ''KSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoaGUuZnJvbT1mdW5jdGlvbihodCxCdCl7cmV0dXJuIHZvaWQgMD09PWtlJiYoa2U9TCg0NzQxMikpLGtlKGhlLGh0LEJ0KX0pfSw2MDI1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtYZS5leHBvcnRzPXJlO3ZhciBtZT1MKDcwODkxKS5x''@;'; put 'put ''LEI9bWUuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsRT1tZS5FUlJfTVVMVElQTEVfQ0FMTEJBQ0ssRWU9bWUuRVJSX1RSQU5TRk9STV9BTFJFQURZX1RSQU5TRk9STUlORyxVPW1lLkVSUl9UUkFOU0ZPUk1fV0lUSF9MRU5HVEhfMCxRPUwoNDEzMzkpO2Z1bmN0aW9uIGooVyxOKXt2YXIg''@;'; put 'put ''dGU9dGhpcy5fdHJhbnNmb3JtU3RhdGU7dGUudHJhbnNmb3JtaW5nPSExO3ZhciBLPXRlLndyaXRlY2I7aWYobnVsbD09PUspcmV0dXJuIHRoaXMuZW1pdCgiZXJyb3IiLG5ldyBFKTt0ZS53cml0ZWNodW5rPW51bGwsdGUud3JpdGVjYj1udWxsLG51bGwhPU4mJnRoaXMucHVzaChOKSxLKFcp''@;'; put 'put ''O3ZhciBKPXRoaXMuX3JlYWRhYmxlU3RhdGU7Si5yZWFkaW5nPSExLChKLm5lZWRSZWFkYWJsZXx8Si5sZW5ndGg8Si5oaWdoV2F0ZXJNYXJrKSYmdGhpcy5fcmVhZChKLmhpZ2hXYXRlck1hcmspfWZ1bmN0aW9uIHJlKFcpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHJlKSlyZXR1cm4gbmV3IHJl''@;'; put 'put ''KFcpO1EuY2FsbCh0aGlzLFcpLHRoaXMuX3RyYW5zZm9ybVN0YXRlPXthZnRlclRyYW5zZm9ybTpqLmJpbmQodGhpcyksbmVlZFRyYW5zZm9ybTohMSx0cmFuc2Zvcm1pbmc6ITEsd3JpdGVjYjpudWxsLHdyaXRlY2h1bms6bnVsbCx3cml0ZWVuY29kaW5nOm51bGx9LHRoaXMuX3JlYWRhYmxl''@;'; put 'put ''U3RhdGUubmVlZFJlYWRhYmxlPSEwLHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYz0hMSxXJiYoImZ1bmN0aW9uIj09dHlwZW9mIFcudHJhbnNmb3JtJiYodGhpcy5fdHJhbnNmb3JtPVcudHJhbnNmb3JtKSwiZnVuY3Rpb24iPT10eXBlb2YgVy5mbHVzaCYmKHRoaXMuX2ZsdXNoPVcuZmx1c2gp''@;'; put 'put ''KSx0aGlzLm9uKCJwcmVmaW5pc2giLGFlKX1mdW5jdGlvbiBhZSgpe3ZhciBXPXRoaXM7ImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuX2ZsdXNofHx0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD9ZKHRoaXMsbnVsbCxudWxsKTp0aGlzLl9mbHVzaChmdW5jdGlvbihOLHRlKXtZKFcsTix0''@;'; put 'put ''ZSl9KX1mdW5jdGlvbiBZKFcsTix0ZSl7aWYoTilyZXR1cm4gVy5lbWl0KCJlcnJvciIsTik7aWYobnVsbCE9dGUmJlcucHVzaCh0ZSksVy5fd3JpdGFibGVTdGF0ZS5sZW5ndGgpdGhyb3cgbmV3IFU7aWYoVy5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKXRocm93IG5ldyBFZTtyZXR1''@;'; put 'put ''cm4gVy5wdXNoKG51bGwpfUwoODM4OTQpKHJlLFEpLHJlLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKFcsTil7cmV0dXJuIHRoaXMuX3RyYW5zZm9ybVN0YXRlLm5lZWRUcmFuc2Zvcm09ITEsUS5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsVyxOKX0scmUucHJvdG90eXBlLl90cmFuc2Zvcm09''@;'; put 'put ''ZnVuY3Rpb24oVyxOLHRlKXt0ZShuZXcgQigiX3RyYW5zZm9ybSgpIikpfSxyZS5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKFcsTix0ZSl7dmFyIEs9dGhpcy5fdHJhbnNmb3JtU3RhdGU7aWYoSy53cml0ZWNiPXRlLEsud3JpdGVjaHVuaz1XLEsud3JpdGVlbmNvZGluZz1OLCFLLnRyYW5z''@;'; put 'put ''Zm9ybWluZyl7dmFyIEo9dGhpcy5fcmVhZGFibGVTdGF0ZTsoSy5uZWVkVHJhbnNmb3JtfHxKLm5lZWRSZWFkYWJsZXx8Si5sZW5ndGg8Si5oaWdoV2F0ZXJNYXJrKSYmdGhpcy5fcmVhZChKLmhpZ2hXYXRlck1hcmspfX0scmUucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKFcpe3ZhciBOPXRo''@;'; put 'put ''aXMuX3RyYW5zZm9ybVN0YXRlO251bGw9PT1OLndyaXRlY2h1bmt8fE4udHJhbnNmb3JtaW5nP04ubmVlZFRyYW5zZm9ybT0hMDooTi50cmFuc2Zvcm1pbmc9ITAsdGhpcy5fdHJhbnNmb3JtKE4ud3JpdGVjaHVuayxOLndyaXRlZW5jb2RpbmcsTi5hZnRlclRyYW5zZm9ybSkpfSxyZS5wcm90''@;'; put 'put ''b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oVyxOKXtRLnByb3RvdHlwZS5fZGVzdHJveS5jYWxsKHRoaXMsVyxmdW5jdGlvbih0ZSl7Tih0ZSl9KX19LDIwNTIwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBCKGd0KXt2YXIgd3Q9dGhpczt0aGlzLm5leHQ9bnVsbCx0aGlzLmVu''@;'; put 'put ''dHJ5PW51bGwsdGhpcy5maW5pc2g9ZnVuY3Rpb24oKXshZnVuY3Rpb24gJGUoZ3Qsd3QsbXQpe3ZhciB2dD1ndC5lbnRyeTtmb3IoZ3QuZW50cnk9bnVsbDt2dDspe3ZhciBBdD12dC5jYWxsYmFjazt3dC5wZW5kaW5nY2ItLSxBdChtdCksdnQ9dnQubmV4dH13dC5jb3JrZWRSZXF1ZXN0c0Zy''@;'; put 'put ''ZWUubmV4dD1ndH0od3QsZ3QpfX12YXIgRTtYZS5leHBvcnRzPU1lLE1lLldyaXRhYmxlU3RhdGU9SWU7dmFyIFRlLEVlPXtkZXByZWNhdGU6TCgyMzUzMil9LFU9TCg0OTcwKSxRPUwoOTMxNzIpLkJ1ZmZlcixqPWdsb2JhbC5VaW50OEFycmF5fHxmdW5jdGlvbigpe30sWT1MKDQxOTIwKSxO''@;'; put 'put ''PUwoNDcxMDIpLmdldEhpZ2hXYXRlck1hcmssdGU9TCg3MDg5MSkucSxLPXRlLkVSUl9JTlZBTElEX0FSR19UWVBFLEo9dGUuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsc2U9dGUuRVJSX01VTFRJUExFX0NBTExCQUNLLG9lPXRlLkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUsY2U9dGUuRVJS''@;'; put 'put ''X1NUUkVBTV9ERVNUUk9ZRUQsZGU9dGUuRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUyx2ZT10ZS5FUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCxBZT10ZS5FUlJfVU5LTk9XTl9FTkNPRElORyxrZT1ZLmVycm9yT3JEZXN0cm95O2Z1bmN0aW9uIFNlKCl7fWZ1bmN0aW9uIEllKGd0LHd0LG10KXtF''@;'; put 'put ''PUV8fEwoNDEzMzkpLCJib29sZWFuIiE9dHlwZW9mIG10JiYobXQ9d3QgaW5zdGFuY2VvZiBFKSx0aGlzLm9iamVjdE1vZGU9ISEoZ3Q9Z3R8fHt9KS5vYmplY3RNb2RlLG10JiYodGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISFndC53cml0YWJsZU9iamVjdE1vZGUpLHRoaXMu''@;'; put 'put ''aGlnaFdhdGVyTWFyaz1OKHRoaXMsZ3QsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIsbXQpLHRoaXMuZmluYWxDYWxsZWQ9ITEsdGhpcy5uZWVkRHJhaW49ITEsdGhpcy5lbmRpbmc9ITEsdGhpcy5lbmRlZD0hMSx0aGlzLmZpbmlzaGVkPSExLHRoaXMuZGVzdHJveWVkPSExLHRoaXMuZGVjb2Rl''@;'; put 'put ''U3RyaW5ncz0hKCExPT09Z3QuZGVjb2RlU3RyaW5ncyksdGhpcy5kZWZhdWx0RW5jb2Rpbmc9Z3QuZGVmYXVsdEVuY29kaW5nfHwidXRmOCIsdGhpcy5sZW5ndGg9MCx0aGlzLndyaXRpbmc9ITEsdGhpcy5jb3JrZWQ9MCx0aGlzLnN5bmM9ITAsdGhpcy5idWZmZXJQcm9jZXNzaW5nPSExLHRo''@;'; put 'put ''aXMub253cml0ZT1mdW5jdGlvbihBdCl7IWZ1bmN0aW9uIFYoZ3Qsd3Qpe3ZhciBtdD1ndC5fd3JpdGFibGVTdGF0ZSx2dD1tdC5zeW5jLEF0PW10LndyaXRlY2I7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEF0KXRocm93IG5ldyBzZTtpZihmdW5jdGlvbiBQKGd0KXtndC53cml0aW5nPSExLGd0''@;'; put 'put ''LndyaXRlY2I9bnVsbCxndC5sZW5ndGgtPWd0LndyaXRlbGVuLGd0LndyaXRlbGVuPTB9KG10KSx3dCkhZnVuY3Rpb24geChndCx3dCxtdCx2dCxBdCl7LS13dC5wZW5kaW5nY2IsbXQ/KHByb2Nlc3MubmV4dFRpY2soQXQsdnQpLHByb2Nlc3MubmV4dFRpY2soUGUsZ3Qsd3QpLGd0Ll93cml0''@;'; put 'put ''YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxrZShndCx2dCkpOihBdCh2dCksZ3QuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLGtlKGd0LHZ0KSxQZShndCx3dCkpfShndCxtdCx2dCx3dCxBdCk7ZWxzZXt2YXIgaHQ9eWUobXQpfHxndC5kZXN0cm95ZWQ7IWh0JiYhbXQuY29ya2Vk''@;'; put 'put ''JiYhbXQuYnVmZmVyUHJvY2Vzc2luZyYmbXQuYnVmZmVyZWRSZXF1ZXN0JiZGKGd0LG10KSx2dD9wcm9jZXNzLm5leHRUaWNrKFQsZ3QsbXQsaHQsQXQpOlQoZ3QsbXQsaHQsQXQpfX0od3QsQXQpfSx0aGlzLndyaXRlY2I9bnVsbCx0aGlzLndyaXRlbGVuPTAsdGhpcy5idWZmZXJlZFJlcXVl''@;'; put 'put ''c3Q9bnVsbCx0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLnBlbmRpbmdjYj0wLHRoaXMucHJlZmluaXNoZWQ9ITEsdGhpcy5lcnJvckVtaXR0ZWQ9ITEsdGhpcy5lbWl0Q2xvc2U9ITEhPT1ndC5lbWl0Q2xvc2UsdGhpcy5hdXRvRGVzdHJveT0hIWd0LmF1dG9EZXN0cm95LHRo''@;'; put 'put ''aXMuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MCx0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgQih0aGlzKX1mdW5jdGlvbiBNZShndCl7dmFyIHd0PXRoaXMgaW5zdGFuY2VvZihFPUV8fEwoNDEzMzkpKTtpZighd3QmJiFUZS5jYWxsKE1lLHRoaXMpKXJldHVybiBuZXcgTWUoZ3QpO3RoaXMu''@;'; put 'put ''X3dyaXRhYmxlU3RhdGU9bmV3IEllKGd0LHRoaXMsd3QpLHRoaXMud3JpdGFibGU9ITAsZ3QmJigiZnVuY3Rpb24iPT10eXBlb2YgZ3Qud3JpdGUmJih0aGlzLl93cml0ZT1ndC53cml0ZSksImZ1bmN0aW9uIj09dHlwZW9mIGd0LndyaXRldiYmKHRoaXMuX3dyaXRldj1ndC53cml0ZXYpLCJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBndC5kZXN0cm95JiYodGhpcy5fZGVzdHJveT1ndC5kZXN0cm95KSwiZnVuY3Rpb24iPT10eXBlb2YgZ3QuZmluYWwmJih0aGlzLl9maW5hbD1ndC5maW5hbCkpLFUuY2FsbCh0aGlzKX1mdW5jdGlvbiBuZShndCx3dCxtdCx2dCxBdCxodCxCdCl7d3Qud3JpdGVs''@;'; put 'put ''ZW49dnQsd3Qud3JpdGVjYj1CdCx3dC53cml0aW5nPSEwLHd0LnN5bmM9ITAsd3QuZGVzdHJveWVkP3d0Lm9ud3JpdGUobmV3IGNlKCJ3cml0ZSIpKTptdD9ndC5fd3JpdGV2KEF0LHd0Lm9ud3JpdGUpOmd0Ll93cml0ZShBdCxodCx3dC5vbndyaXRlKSx3dC5zeW5jPSExfWZ1bmN0aW9uIFQo''@;'; put 'put ''Z3Qsd3QsbXQsdnQpe210fHxmdW5jdGlvbiBTKGd0LHd0KXswPT09d3QubGVuZ3RoJiZ3dC5uZWVkRHJhaW4mJih3dC5uZWVkRHJhaW49ITEsZ3QuZW1pdCgiZHJhaW4iKSl9KGd0LHd0KSx3dC5wZW5kaW5nY2ItLSx2dCgpLFBlKGd0LHd0KX1mdW5jdGlvbiBGKGd0LHd0KXt3dC5idWZmZXJQ''@;'; put 'put ''cm9jZXNzaW5nPSEwO3ZhciBtdD13dC5idWZmZXJlZFJlcXVlc3Q7aWYoZ3QuX3dyaXRldiYmbXQmJm10Lm5leHQpe3ZhciBBdD1uZXcgQXJyYXkod3QuYnVmZmVyZWRSZXF1ZXN0Q291bnQpLGh0PXd0LmNvcmtlZFJlcXVlc3RzRnJlZTtodC5lbnRyeT1tdDtmb3IodmFyIEJ0PTAsb249ITA7''@;'; put 'put ''bXQ7KUF0W0J0XT1tdCxtdC5pc0J1Znx8KG9uPSExKSxtdD1tdC5uZXh0LEJ0Kz0xO0F0LmFsbEJ1ZmZlcnM9b24sbmUoZ3Qsd3QsITAsd3QubGVuZ3RoLEF0LCIiLGh0LmZpbmlzaCksd3QucGVuZGluZ2NiKyssd3QubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsLGh0Lm5leHQ/KHd0LmNvcmtl''@;'; put 'put ''ZFJlcXVlc3RzRnJlZT1odC5uZXh0LGh0Lm5leHQ9bnVsbCk6d3QuY29ya2VkUmVxdWVzdHNGcmVlPW5ldyBCKHd0KSx3dC5idWZmZXJlZFJlcXVlc3RDb3VudD0wfWVsc2V7Zm9yKDttdDspe3ZhciBfdD1tdC5jaHVuaztpZihuZShndCx3dCwhMSx3dC5vYmplY3RNb2RlPzE6X3QubGVuZ3Ro''@;'; put 'put ''LF90LG10LmVuY29kaW5nLG10LmNhbGxiYWNrKSxtdD1tdC5uZXh0LHd0LmJ1ZmZlcmVkUmVxdWVzdENvdW50LS0sd3Qud3JpdGluZylicmVha31udWxsPT09bXQmJih3dC5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwpfXd0LmJ1ZmZlcmVkUmVxdWVzdD1tdCx3dC5idWZmZXJQcm9jZXNzaW5n''@;'; put 'put ''PSExfWZ1bmN0aW9uIHllKGd0KXtyZXR1cm4gZ3QuZW5kaW5nJiYwPT09Z3QubGVuZ3RoJiZudWxsPT09Z3QuYnVmZmVyZWRSZXF1ZXN0JiYhZ3QuZmluaXNoZWQmJiFndC53cml0aW5nfWZ1bmN0aW9uIENlKGd0LHd0KXtndC5fZmluYWwoZnVuY3Rpb24obXQpe3d0LnBlbmRpbmdjYi0tLG10''@;'; put 'put ''JiZrZShndCxtdCksd3QucHJlZmluaXNoZWQ9ITAsZ3QuZW1pdCgicHJlZmluaXNoIiksUGUoZ3Qsd3QpfSl9ZnVuY3Rpb24gUGUoZ3Qsd3Qpe3ZhciBtdD15ZSh3dCk7aWYobXQmJihmdW5jdGlvbiBEZShndCx3dCl7IXd0LnByZWZpbmlzaGVkJiYhd3QuZmluYWxDYWxsZWQmJigiZnVuY3Rp''@;'; put 'put ''b24iIT10eXBlb2YgZ3QuX2ZpbmFsfHx3dC5kZXN0cm95ZWQ/KHd0LnByZWZpbmlzaGVkPSEwLGd0LmVtaXQoInByZWZpbmlzaCIpKTood3QucGVuZGluZ2NiKyssd3QuZmluYWxDYWxsZWQ9ITAscHJvY2Vzcy5uZXh0VGljayhDZSxndCx3dCkpKX0oZ3Qsd3QpLDA9PT13dC5wZW5kaW5nY2Im''@;'; put 'put ''Jih3dC5maW5pc2hlZD0hMCxndC5lbWl0KCJmaW5pc2giKSx3dC5hdXRvRGVzdHJveSkpKXt2YXIgdnQ9Z3QuX3JlYWRhYmxlU3RhdGU7KCF2dHx8dnQuYXV0b0Rlc3Ryb3kmJnZ0LmVuZEVtaXR0ZWQpJiZndC5kZXN0cm95KCl9cmV0dXJuIG10fUwoODM4OTQpKE1lLFUpLEllLnByb3RvdHlw''@;'; put 'put ''ZS5nZXRCdWZmZXI9ZnVuY3Rpb24oKXtmb3IodmFyIHd0PXRoaXMuYnVmZmVyZWRSZXF1ZXN0LG10PVtdO3d0OyltdC5wdXNoKHd0KSx3dD13dC5uZXh0O3JldHVybiBtdH0sZnVuY3Rpb24oKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KEllLnByb3RvdHlwZSwiYnVmZmVyIix7Z2V0OkVl''@;'; put 'put ''LmRlcHJlY2F0ZShmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEJ1ZmZlcigpfSwiX3dyaXRhYmxlU3RhdGUuYnVmZmVyIGlzIGRlcHJlY2F0ZWQuIFVzZSBfd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIgaW5zdGVhZC4iLCJERVAwMDAzIil9KX1jYXRjaChndCl7fX0oKSwiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgU3ltYm9sJiZTeW1ib2wuaGFzSW5zdGFuY2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXT8oVGU9RnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0sT2JqZWN0LmRlZmluZVByb3BlcnR5KE1lLFN5bWJv''@;'; put 'put ''bC5oYXNJbnN0YW5jZSx7dmFsdWU6ZnVuY3Rpb24od3Qpe3JldHVybiEhVGUuY2FsbCh0aGlzLHd0KXx8dGhpcz09PU1lJiZ3dCYmd3QuX3dyaXRhYmxlU3RhdGUgaW5zdGFuY2VvZiBJZX19KSk6VGU9ZnVuY3Rpb24od3Qpe3JldHVybiB3dCBpbnN0YW5jZW9mIHRoaXN9LE1lLnByb3RvdHlw''@;'; put 'put ''ZS5waXBlPWZ1bmN0aW9uKCl7a2UodGhpcyxuZXcgb2UpfSxNZS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZ3Qsd3QsbXQpe3ZhciB2dD10aGlzLl93cml0YWJsZVN0YXRlLEF0PSExLGh0PSF2dC5vYmplY3RNb2RlJiZmdW5jdGlvbiBhZShndCl7cmV0dXJuIFEuaXNCdWZmZXIoZ3QpfHxn''@;'; put 'put ''dCBpbnN0YW5jZW9mIGp9KGd0KTtyZXR1cm4gaHQmJiFRLmlzQnVmZmVyKGd0KSYmKGd0PWZ1bmN0aW9uIHJlKGd0KXtyZXR1cm4gUS5mcm9tKGd0KX0oZ3QpKSwiZnVuY3Rpb24iPT10eXBlb2Ygd3QmJihtdD13dCx3dD1udWxsKSxodD93dD0iYnVmZmVyIjp3dHx8KHd0PXZ0LmRlZmF1bHRF''@;'; put 'put ''bmNvZGluZyksImZ1bmN0aW9uIiE9dHlwZW9mIG10JiYobXQ9U2UpLHZ0LmVuZGluZz9mdW5jdGlvbiBoZShndCx3dCl7dmFyIG10PW5ldyB2ZTtrZShndCxtdCkscHJvY2Vzcy5uZXh0VGljayh3dCxtdCl9KHRoaXMsbXQpOihodHx8ZnVuY3Rpb24gTyhndCx3dCxtdCx2dCl7dmFyIEF0O3Jl''@;'; put 'put ''dHVybiBudWxsPT09bXQ/QXQ9bmV3IGRlOiJzdHJpbmciIT10eXBlb2YgbXQmJiF3dC5vYmplY3RNb2RlJiYoQXQ9bmV3IEsoImNodW5rIixbInN0cmluZyIsIkJ1ZmZlciJdLG10KSksIUF0fHwoa2UoZ3QsQXQpLHByb2Nlc3MubmV4dFRpY2sodnQsQXQpLCExKX0odGhpcyx2dCxndCxtdCkp''@;'; put 'put ''JiYodnQucGVuZGluZ2NiKyssQXQ9ZnVuY3Rpb24gZWUoZ3Qsd3QsbXQsdnQsQXQsaHQpe2lmKCFtdCl7dmFyIEJ0PWZ1bmN0aW9uIHooZ3Qsd3QsbXQpe3JldHVybiFndC5vYmplY3RNb2RlJiYhMSE9PWd0LmRlY29kZVN0cmluZ3MmJiJzdHJpbmciPT10eXBlb2Ygd3QmJih3dD1RLmZyb20o''@;'; put 'put ''d3QsbXQpKSx3dH0od3QsdnQsQXQpO3Z0IT09QnQmJihtdD0hMCxBdD0iYnVmZmVyIix2dD1CdCl9dmFyIG9uPXd0Lm9iamVjdE1vZGU/MTp2dC5sZW5ndGg7d3QubGVuZ3RoKz1vbjt2YXIgX3Q9d3QubGVuZ3RoPHd0LmhpZ2hXYXRlck1hcms7aWYoX3R8fCh3dC5uZWVkRHJhaW49ITApLHd0''@;'; put 'put ''LndyaXRpbmd8fHd0LmNvcmtlZCl7dmFyIHR0PXd0Lmxhc3RCdWZmZXJlZFJlcXVlc3Q7d3QubGFzdEJ1ZmZlcmVkUmVxdWVzdD17Y2h1bms6dnQsZW5jb2Rpbmc6QXQsaXNCdWY6bXQsY2FsbGJhY2s6aHQsbmV4dDpudWxsfSx0dD90dC5uZXh0PXd0Lmxhc3RCdWZmZXJlZFJlcXVlc3Q6d3Qu''@;'; put 'put ''YnVmZmVyZWRSZXF1ZXN0PXd0Lmxhc3RCdWZmZXJlZFJlcXVlc3Qsd3QuYnVmZmVyZWRSZXF1ZXN0Q291bnQrPTF9ZWxzZSBuZShndCx3dCwhMSxvbix2dCxBdCxodCk7cmV0dXJuIF90fSh0aGlzLHZ0LGh0LGd0LHd0LG10KSksQXR9LE1lLnByb3RvdHlwZS5jb3JrPWZ1bmN0aW9uKCl7dGhp''@;'; put 'put ''cy5fd3JpdGFibGVTdGF0ZS5jb3JrZWQrK30sTWUucHJvdG90eXBlLnVuY29yaz1mdW5jdGlvbigpe3ZhciBndD10aGlzLl93cml0YWJsZVN0YXRlO2d0LmNvcmtlZCYmKGd0LmNvcmtlZC0tLCFndC53cml0aW5nJiYhZ3QuY29ya2VkJiYhZ3QuYnVmZmVyUHJvY2Vzc2luZyYmZ3QuYnVmZmVy''@;'; put 'put ''ZWRSZXF1ZXN0JiZGKHRoaXMsZ3QpKX0sTWUucHJvdG90eXBlLnNldERlZmF1bHRFbmNvZGluZz1mdW5jdGlvbih3dCl7aWYoInN0cmluZyI9PXR5cGVvZiB3dCYmKHd0PXd0LnRvTG93ZXJDYXNlKCkpLCEoWyJoZXgiLCJ1dGY4IiwidXRmLTgiLCJhc2NpaSIsImJpbmFyeSIsImJhc2U2NCIs''@;'; put 'put ''InVjczIiLCJ1Y3MtMiIsInV0ZjE2bGUiLCJ1dGYtMTZsZSIsInJhdyJdLmluZGV4T2YoKHd0KyIiKS50b0xvd2VyQ2FzZSgpKT4tMSkpdGhyb3cgbmV3IEFlKHd0KTtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5kZWZhdWx0RW5jb2Rpbmc9d3QsdGhpc30sT2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KE1lLnByb3RvdHlwZSwid3JpdGFibGVCdWZmZXIiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmdldEJ1ZmZlcigpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNZS5wcm90b3R5cGUsIndy''@;'; put 'put ''aXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxNZS5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKGd0LHd0LG10KXttdChuZXcgSigiX3dyaXRlKCkiKSl9LE1lLnByb3Rv''@;'; put 'put ''dHlwZS5fd3JpdGV2PW51bGwsTWUucHJvdG90eXBlLmVuZD1mdW5jdGlvbihndCx3dCxtdCl7dmFyIHZ0PXRoaXMuX3dyaXRhYmxlU3RhdGU7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGd0PyhtdD1ndCxndD1udWxsLHd0PW51bGwpOiJmdW5jdGlvbiI9PXR5cGVvZiB3dCYmKG10PXd0LHd0''@;'; put 'put ''PW51bGwpLG51bGwhPWd0JiZ0aGlzLndyaXRlKGd0LHd0KSx2dC5jb3JrZWQmJih2dC5jb3JrZWQ9MSx0aGlzLnVuY29yaygpKSx2dC5lbmRpbmd8fGZ1bmN0aW9uIFFlKGd0LHd0LG10KXt3dC5lbmRpbmc9ITAsUGUoZ3Qsd3QpLG10JiYod3QuZmluaXNoZWQ/cHJvY2Vzcy5uZXh0VGljayht''@;'; put 'put ''dCk6Z3Qub25jZSgiZmluaXNoIixtdCkpLHd0LmVuZGVkPSEwLGd0LndyaXRhYmxlPSExfSh0aGlzLHZ0LG10KSx0aGlzfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTWUucHJvdG90eXBlLCJ3cml0YWJsZUxlbmd0aCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''X3dyaXRhYmxlU3RhdGUubGVuZ3RofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNZS5wcm90b3R5cGUsImRlc3Ryb3llZCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJv''@;'; put 'put ''eWVkfSxzZXQ6ZnVuY3Rpb24od3QpeyF0aGlzLl93cml0YWJsZVN0YXRlfHwodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9d3QpfX0pLE1lLnByb3RvdHlwZS5kZXN0cm95PVkuZGVzdHJveSxNZS5wcm90b3R5cGUuX3VuZGVzdHJveT1ZLnVuZGVzdHJveSxNZS5wcm90b3R5cGUuX2Rl''@;'; put 'put ''c3Ryb3k9ZnVuY3Rpb24oZ3Qsd3Qpe3d0KGd0KX19LDEzODcyOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU7ZnVuY3Rpb24gQihjZSxkZSx2ZSl7cmV0dXJuIGRlIGluIGNlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShjZSxkZSx7dmFsdWU6dmUsZW51bWVyYWJsZTohMCxjb25maWd1''@;'; put 'put ''cmFibGU6ITAsd3JpdGFibGU6ITB9KTpjZVtkZV09dmUsY2V9dmFyIEU9TCg2NzU0MiksRWU9U3ltYm9sKCJsYXN0UmVzb2x2ZSIpLFU9U3ltYm9sKCJsYXN0UmVqZWN0IiksUT1TeW1ib2woImVycm9yIiksaj1TeW1ib2woImVuZGVkIikscmU9U3ltYm9sKCJsYXN0UHJvbWlzZSIpLGFlPVN5''@;'; put 'put ''bWJvbCgiaGFuZGxlUHJvbWlzZSIpLFk9U3ltYm9sKCJzdHJlYW0iKTtmdW5jdGlvbiBXKGNlLGRlKXtyZXR1cm57dmFsdWU6Y2UsZG9uZTpkZX19ZnVuY3Rpb24gTihjZSl7dmFyIGRlPWNlW0VlXTtpZihudWxsIT09ZGUpe3ZhciB2ZT1jZVtZXS5yZWFkKCk7bnVsbCE9PXZlJiYoY2VbcmVd''@;'; put 'put ''PW51bGwsY2VbRWVdPW51bGwsY2VbVV09bnVsbCxkZShXKHZlLCExKSkpfX1mdW5jdGlvbiB0ZShjZSl7cHJvY2Vzcy5uZXh0VGljayhOLGNlKX12YXIgSj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZnVuY3Rpb24oKXt9KSxzZT1PYmplY3Quc2V0UHJvdG90eXBlT2YoKEIobWU9e2dldCBzdHJl''@;'; put 'put ''YW0oKXtyZXR1cm4gdGhpc1tZXX0sbmV4dDpmdW5jdGlvbigpe3ZhciBkZT10aGlzLHZlPXRoaXNbUV07aWYobnVsbCE9PXZlKXJldHVybiBQcm9taXNlLnJlamVjdCh2ZSk7aWYodGhpc1tqXSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFcodm9pZCAwLCEwKSk7aWYodGhpc1tZXS5kZXN0cm95''@;'; put 'put ''ZWQpcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKEllLFRlKXtwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uKCl7ZGVbUV0/VGUoZGVbUV0pOkllKFcodm9pZCAwLCEwKSl9KX0pO3ZhciBrZSxBZT10aGlzW3JlXTtpZihBZSlrZT1uZXcgUHJvbWlzZShmdW5jdGlvbiBLKGNlLGRlKXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24odmUsQWUpe2NlLnRoZW4oZnVuY3Rpb24oKXtkZVtqXT92ZShXKHZvaWQgMCwhMCkpOmRlW2FlXSh2ZSxBZSl9LEFlKX19KEFlLHRoaXMpKTtlbHNle3ZhciBTZT10aGlzW1ldLnJlYWQoKTtpZihudWxsIT09U2UpcmV0dXJuIFByb21pc2UucmVzb2x2ZShXKFNlLCExKSk7''@;'; put 'put ''a2U9bmV3IFByb21pc2UodGhpc1thZV0pfXJldHVybiB0aGlzW3JlXT1rZSxrZX19LFN5bWJvbC5hc3luY0l0ZXJhdG9yLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxCKG1lLCJyZXR1cm4iLGZ1bmN0aW9uKCl7dmFyIGRlPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHZlLEFl''@;'; put 'put ''KXtkZVtZXS5kZXN0cm95KG51bGwsZnVuY3Rpb24oa2Upe2tlP0FlKGtlKTp2ZShXKHZvaWQgMCwhMCkpfSl9KX0pLG1lKSxKKTtYZS5leHBvcnRzPWZ1bmN0aW9uKGRlKXt2YXIgdmUsQWU9T2JqZWN0LmNyZWF0ZShzZSwoQih2ZT17fSxZLHt2YWx1ZTpkZSx3cml0YWJsZTohMH0pLEIodmUs''@;'; put 'put ''RWUse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KSxCKHZlLFUse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KSxCKHZlLFEse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KSxCKHZlLGose3ZhbHVlOmRlLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQsd3JpdGFibGU6ITB9KSxCKHZlLGFlLHt2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbihTZSxJZSl7dmFyIFRlPUFlW1ldLnJlYWQoKTtUZT8oQWVbcmVdPW51bGwsQWVbRWVdPW51bGwsQWVbVV09bnVsbCxTZShXKFRlLCExKSkpOihBZVtFZV09U2UsQWVbVV09SWUpfSx3cml0YWJsZTohMH0pLHZlKSk7cmV0dXJuIEFlW3JlXT1udWxsLEUoZGUsZnVuY3Rpb24o''@;'; put 'put ''a2Upe2lmKGtlJiYiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UiIT09a2UuY29kZSl7dmFyIFNlPUFlW1VdO3JldHVybiBudWxsIT09U2UmJihBZVtyZV09bnVsbCxBZVtFZV09bnVsbCxBZVtVXT1udWxsLFNlKGtlKSksdm9pZChBZVtRXT1rZSl9dmFyIEllPUFlW0VlXTtudWxsIT09SWUm''@;'; put 'put ''JihBZVtyZV09bnVsbCxBZVtFZV09bnVsbCxBZVtVXT1udWxsLEllKFcodm9pZCAwLCEwKSkpLEFlW2pdPSEwfSksZGUub24oInJlYWRhYmxlIix0ZS5iaW5kKG51bGwsQWUpKSxBZX19LDI1MDE5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtZSh0ZSxLKXt2YXIgSj1PYmpl''@;'; put 'put ''Y3Qua2V5cyh0ZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHNlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModGUpO0smJihzZT1zZS5maWx0ZXIoZnVuY3Rpb24ob2Upe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRlLG9lKS5lbnVt''@;'; put 'put ''ZXJhYmxlfSkpLEoucHVzaC5hcHBseShKLHNlKX1yZXR1cm4gSn1mdW5jdGlvbiBFKHRlLEssSil7cmV0dXJuIEsgaW4gdGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KHRlLEsse3ZhbHVlOkosZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0ZVtLXT1KLHRlfWZ1''@;'; put 'put ''bmN0aW9uIFUodGUsSyl7Zm9yKHZhciBKPTA7SjxLLmxlbmd0aDtKKyspe3ZhciBzZT1LW0pdO3NlLmVudW1lcmFibGU9c2UuZW51bWVyYWJsZXx8ITEsc2UuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBzZSYmKHNlLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGUsc2Uu''@;'; put 'put ''a2V5LHNlKX19dmFyIHJlPUwoOTMxNzIpLkJ1ZmZlcixZPUwoNTIzNjEpLmluc3BlY3QsVz1ZJiZZLmN1c3RvbXx8Imluc3BlY3QiO2Z1bmN0aW9uIE4odGUsSyxKKXtyZS5wcm90b3R5cGUuY29weS5jYWxsKHRlLEssSil9WGUuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIHRlKCl7KGZ1''@;'; put 'put ''bmN0aW9uIEVlKHRlLEspe2lmKCEodGUgaW5zdGFuY2VvZiBLKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsdGUpLHRoaXMuaGVhZD1udWxsLHRoaXMudGFpbD1udWxsLHRoaXMubGVuZ3RoPTB9cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''IFEodGUsSyxKKXtLJiZVKHRlLnByb3RvdHlwZSxLKSxKJiZVKHRlLEopfSh0ZSxbe2tleToicHVzaCIsdmFsdWU6ZnVuY3Rpb24oSil7dmFyIHNlPXtkYXRhOkosbmV4dDpudWxsfTt0aGlzLmxlbmd0aD4wP3RoaXMudGFpbC5uZXh0PXNlOnRoaXMuaGVhZD1zZSx0aGlzLnRhaWw9c2UsKyt0''@;'; put 'put ''aGlzLmxlbmd0aH19LHtrZXk6InVuc2hpZnQiLHZhbHVlOmZ1bmN0aW9uKEope3ZhciBzZT17ZGF0YTpKLG5leHQ6dGhpcy5oZWFkfTswPT09dGhpcy5sZW5ndGgmJih0aGlzLnRhaWw9c2UpLHRoaXMuaGVhZD1zZSwrK3RoaXMubGVuZ3RofX0se2tleToic2hpZnQiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KCl7aWYoMCE9PXRoaXMubGVuZ3RoKXt2YXIgSj10aGlzLmhlYWQuZGF0YTtyZXR1cm4gdGhpcy5oZWFkPTE9PT10aGlzLmxlbmd0aD90aGlzLnRhaWw9bnVsbDp0aGlzLmhlYWQubmV4dCwtLXRoaXMubGVuZ3RoLEp9fX0se2tleToiY2xlYXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5oZWFk''@;'; put 'put ''PXRoaXMudGFpbD1udWxsLHRoaXMubGVuZ3RoPTB9fSx7a2V5OiJqb2luIix2YWx1ZTpmdW5jdGlvbihKKXtpZigwPT09dGhpcy5sZW5ndGgpcmV0dXJuIiI7Zm9yKHZhciBzZT10aGlzLmhlYWQsb2U9IiIrc2UuZGF0YTtzZT1zZS5uZXh0OylvZSs9SitzZS5kYXRhO3JldHVybiBvZX19LHtr''@;'; put 'put ''ZXk6ImNvbmNhdCIsdmFsdWU6ZnVuY3Rpb24oSil7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybiByZS5hbGxvYygwKTtmb3IodmFyIHNlPXJlLmFsbG9jVW5zYWZlKEo+Pj4wKSxvZT10aGlzLmhlYWQsY2U9MDtvZTspTihvZS5kYXRhLHNlLGNlKSxjZSs9b2UuZGF0YS5sZW5ndGgsb2U9b2Uu''@;'; put 'put ''bmV4dDtyZXR1cm4gc2V9fSx7a2V5OiJjb25zdW1lIix2YWx1ZTpmdW5jdGlvbihKLHNlKXt2YXIgb2U7cmV0dXJuIEo8dGhpcy5oZWFkLmRhdGEubGVuZ3RoPyhvZT10aGlzLmhlYWQuZGF0YS5zbGljZSgwLEopLHRoaXMuaGVhZC5kYXRhPXRoaXMuaGVhZC5kYXRhLnNsaWNlKEopKTpvZT1K''@;'; put 'put ''PT09dGhpcy5oZWFkLmRhdGEubGVuZ3RoP3RoaXMuc2hpZnQoKTpzZT90aGlzLl9nZXRTdHJpbmcoSik6dGhpcy5fZ2V0QnVmZmVyKEopLG9lfX0se2tleToiZmlyc3QiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGVhZC5kYXRhfX0se2tleToiX2dldFN0cmluZyIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oSil7dmFyIHNlPXRoaXMuaGVhZCxvZT0xLGNlPXNlLmRhdGE7Zm9yKEotPWNlLmxlbmd0aDtzZT1zZS5uZXh0Oyl7dmFyIGRlPXNlLmRhdGEsdmU9Sj5kZS5sZW5ndGg/ZGUubGVuZ3RoOko7aWYoY2UrPXZlPT09ZGUubGVuZ3RoP2RlOmRlLnNsaWNlKDAsSiksMD09KEotPXZlKSl7''@;'; put 'put ''dmU9PT1kZS5sZW5ndGg/KCsrb2UsdGhpcy5oZWFkPXNlLm5leHQ/c2UubmV4dDp0aGlzLnRhaWw9bnVsbCk6KHRoaXMuaGVhZD1zZSxzZS5kYXRhPWRlLnNsaWNlKHZlKSk7YnJlYWt9KytvZX1yZXR1cm4gdGhpcy5sZW5ndGgtPW9lLGNlfX0se2tleToiX2dldEJ1ZmZlciIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oSil7dmFyIHNlPXJlLmFsbG9jVW5zYWZlKEopLG9lPXRoaXMuaGVhZCxjZT0xO2ZvcihvZS5kYXRhLmNvcHkoc2UpLEotPW9lLmRhdGEubGVuZ3RoO29lPW9lLm5leHQ7KXt2YXIgZGU9b2UuZGF0YSx2ZT1KPmRlLmxlbmd0aD9kZS5sZW5ndGg6SjtpZihkZS5jb3B5KHNlLHNlLmxl''@;'; put 'put ''bmd0aC1KLDAsdmUpLDA9PShKLT12ZSkpe3ZlPT09ZGUubGVuZ3RoPygrK2NlLHRoaXMuaGVhZD1vZS5uZXh0P29lLm5leHQ6dGhpcy50YWlsPW51bGwpOih0aGlzLmhlYWQ9b2Usb2UuZGF0YT1kZS5zbGljZSh2ZSkpO2JyZWFrfSsrY2V9cmV0dXJuIHRoaXMubGVuZ3RoLT1jZSxzZX19LHtr''@;'; put 'put ''ZXk6Vyx2YWx1ZTpmdW5jdGlvbihKLHNlKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uIEIodGUpe2Zvcih2YXIgSz0xO0s8YXJndW1lbnRzLmxlbmd0aDtLKyspe3ZhciBKPW51bGwhPWFyZ3VtZW50c1tLXT9hcmd1bWVudHNbS106e307SyUyP21lKE9iamVjdChKKSwhMCkuZm9yRWFjaChmdW5j''@;'; put 'put ''dGlvbihzZSl7RSh0ZSxzZSxKW3NlXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0ZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhKKSk6bWUoT2JqZWN0KEopKS5mb3JFYWNoKGZ1bmN0aW9uKHNlKXtPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkodGUsc2UsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKLHNlKSl9KX1yZXR1cm4gdGV9KHt9LHNlLHtkZXB0aDowLGN1c3RvbUluc3BlY3Q6ITF9KSl9fV0pLHRlfSgpfSw0MTkyMDpYZT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBMKFUsUSl7RShVLFEp''@;'; put 'put ''LG1lKFUpfWZ1bmN0aW9uIG1lKFUpe1UuX3dyaXRhYmxlU3RhdGUmJiFVLl93cml0YWJsZVN0YXRlLmVtaXRDbG9zZXx8VS5fcmVhZGFibGVTdGF0ZSYmIVUuX3JlYWRhYmxlU3RhdGUuZW1pdENsb3NlfHxVLmVtaXQoImNsb3NlIil9ZnVuY3Rpb24gRShVLFEpe1UuZW1pdCgiZXJyb3IiLFEp''@;'; put 'put ''fVhlLmV4cG9ydHM9e2Rlc3Ryb3k6ZnVuY3Rpb24gSmUoVSxRKXt2YXIgaj10aGlzO3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZHx8dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ/KFE/UShV''@;'; put 'put ''KTpVJiYodGhpcy5fd3JpdGFibGVTdGF0ZT90aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZHx8KHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLHByb2Nlc3MubmV4dFRpY2soRSx0aGlzLFUpKTpwcm9jZXNzLm5leHRUaWNrKEUsdGhpcyxVKSksdGhpcyk6KHRoaXMu''@;'; put 'put ''X3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD0hMCksdGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPSEwKSx0aGlzLl9kZXN0cm95KFV8fG51bGwsZnVuY3Rpb24oWSl7IVEmJlk/ai5fd3JpdGFibGVTdGF0ZT9q''@;'; put 'put ''Ll93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD9wcm9jZXNzLm5leHRUaWNrKG1lLGopOihqLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxwcm9jZXNzLm5leHRUaWNrKEwsaixZKSk6cHJvY2Vzcy5uZXh0VGljayhMLGosWSk6UT8ocHJvY2Vzcy5uZXh0VGljayhtZSxqKSxRKFkp''@;'; put 'put ''KTpwcm9jZXNzLm5leHRUaWNrKG1lLGopfSksdGhpcyl9LHVuZGVzdHJveTpmdW5jdGlvbiBCKCl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZGluZz0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVu''@;'; put 'put ''ZGVkPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZD0hMSksdGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRpbmc9ITEsdGhpcy5fd3Jp''@;'; put 'put ''dGFibGVTdGF0ZS5maW5hbENhbGxlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLnByZWZpbmlzaGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITEpfSxlcnJvck9yRGVzdHJveTpmdW5jdGlvbiBFZShVLFEpe3Zh''@;'; put 'put ''ciBqPVUuX3JlYWRhYmxlU3RhdGUscmU9VS5fd3JpdGFibGVTdGF0ZTtqJiZqLmF1dG9EZXN0cm95fHxyZSYmcmUuYXV0b0Rlc3Ryb3k/VS5kZXN0cm95KFEpOlUuZW1pdCgiZXJyb3IiLFEpfX19LDY3NTQyOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg3MDg5MSkucS5FUlJf''@;'; put 'put ''U1RSRUFNX1BSRU1BVFVSRV9DTE9TRTtmdW5jdGlvbiBFKCl7fVhlLmV4cG9ydHM9ZnVuY3Rpb24gVShRLGoscmUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBqKXJldHVybiBVKFEsbnVsbCxqKTtqfHwoaj17fSkscmU9ZnVuY3Rpb24gQihRKXt2YXIgaj0hMTtyZXR1cm4gZnVuY3Rpb24oKXtp''@;'; put 'put ''Zighail7aj0hMDtmb3IodmFyIHJlPWFyZ3VtZW50cy5sZW5ndGgsYWU9bmV3IEFycmF5KHJlKSxZPTA7WTxyZTtZKyspYWVbWV09YXJndW1lbnRzW1ldO1EuYXBwbHkodGhpcyxhZSl9fX0ocmV8fEUpO3ZhciBhZT1qLnJlYWRhYmxlfHwhMSE9PWoucmVhZGFibGUmJlEucmVhZGFibGUsWT1q''@;'; put 'put ''LndyaXRhYmxlfHwhMSE9PWoud3JpdGFibGUmJlEud3JpdGFibGUsVz1mdW5jdGlvbigpe1Eud3JpdGFibGV8fHRlKCl9LE49US5fd3JpdGFibGVTdGF0ZSYmUS5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZCx0ZT1mdW5jdGlvbigpe1k9ITEsTj0hMCxhZXx8cmUuY2FsbChRKX0sSz1RLl9yZWFk''@;'; put 'put ''YWJsZVN0YXRlJiZRLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQsSj1mdW5jdGlvbigpe2FlPSExLEs9ITAsWXx8cmUuY2FsbChRKX0sc2U9ZnVuY3Rpb24odmUpe3JlLmNhbGwoUSx2ZSl9LG9lPWZ1bmN0aW9uKCl7dmFyIHZlO3JldHVybiBhZSYmIUs/KCghUS5fcmVhZGFibGVTdGF0ZXx8''@;'; put 'put ''IVEuX3JlYWRhYmxlU3RhdGUuZW5kZWQpJiYodmU9bmV3IG1lKSxyZS5jYWxsKFEsdmUpKTpZJiYhTj8oKCFRLl93cml0YWJsZVN0YXRlfHwhUS5fd3JpdGFibGVTdGF0ZS5lbmRlZCkmJih2ZT1uZXcgbWUpLHJlLmNhbGwoUSx2ZSkpOnZvaWQgMH0sY2U9ZnVuY3Rpb24oKXtRLnJlcS5vbigi''@;'; put 'put ''ZmluaXNoIix0ZSl9O3JldHVybiBmdW5jdGlvbiBFZShRKXtyZXR1cm4gUS5zZXRIZWFkZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBRLmFib3J0fShRKT8oUS5vbigiY29tcGxldGUiLHRlKSxRLm9uKCJhYm9ydCIsb2UpLFEucmVxP2NlKCk6US5vbigicmVxdWVzdCIsY2UpKTpZJiYhUS5fd3Jp''@;'; put 'put ''dGFibGVTdGF0ZSYmKFEub24oImVuZCIsVyksUS5vbigiY2xvc2UiLFcpKSxRLm9uKCJlbmQiLEopLFEub24oImZpbmlzaCIsdGUpLCExIT09ai5lcnJvciYmUS5vbigiZXJyb3IiLHNlKSxRLm9uKCJjbG9zZSIsb2UpLGZ1bmN0aW9uKCl7US5yZW1vdmVMaXN0ZW5lcigiY29tcGxldGUiLHRl''@;'; put 'put ''KSxRLnJlbW92ZUxpc3RlbmVyKCJhYm9ydCIsb2UpLFEucmVtb3ZlTGlzdGVuZXIoInJlcXVlc3QiLGNlKSxRLnJlcSYmUS5yZXEucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIsdGUpLFEucmVtb3ZlTGlzdGVuZXIoImVuZCIsVyksUS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLFcpLFEucmVtb3Zl''@;'; put 'put ''TGlzdGVuZXIoImZpbmlzaCIsdGUpLFEucmVtb3ZlTGlzdGVuZXIoImVuZCIsSiksUS5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLHNlKSxRLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsb2UpfX19LDQ3NDEyOlhlPT57WGUuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiUmVhZGFi''@;'; put 'put ''bGUuZnJvbSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyIil9fSw5MDk1NDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lLEU9TCg3MDg5MSkucSxFZT1FLkVSUl9NSVNTSU5HX0FSR1MsVT1FLkVSUl9TVFJFQU1fREVTVFJPWUVEO2Z1bmN0aW9uIFEodGUpe2lmKHRlKXRo''@;'; put 'put ''cm93IHRlfWZ1bmN0aW9uIHJlKHRlLEssSixzZSl7c2U9ZnVuY3Rpb24gQih0ZSl7dmFyIEs9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7S3x8KEs9ITAsdGUuYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpfX0oc2UpO3ZhciBvZT0hMTt0ZS5vbigiY2xvc2UiLGZ1bmN0aW9uKCl7b2U9ITB9KSx2b2lk''@;'; put 'put ''IDA9PT1tZSYmKG1lPUwoNjc1NDIpKSxtZSh0ZSx7cmVhZGFibGU6Syx3cml0YWJsZTpKfSxmdW5jdGlvbihkZSl7aWYoZGUpcmV0dXJuIHNlKGRlKTtvZT0hMCxzZSgpfSk7dmFyIGNlPSExO3JldHVybiBmdW5jdGlvbihkZSl7aWYoIW9lJiYhY2Upe2lmKGNlPSEwLGZ1bmN0aW9uIGoodGUp''@;'; put 'put ''e3JldHVybiB0ZS5zZXRIZWFkZXImJiJmdW5jdGlvbiI9PXR5cGVvZiB0ZS5hYm9ydH0odGUpKXJldHVybiB0ZS5hYm9ydCgpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0ZS5kZXN0cm95KXJldHVybiB0ZS5kZXN0cm95KCk7c2UoZGV8fG5ldyBVKCJwaXBlIikpfX19ZnVuY3Rpb24gYWUodGUp''@;'; put 'put ''e3RlKCl9ZnVuY3Rpb24gWSh0ZSxLKXtyZXR1cm4gdGUucGlwZShLKX1mdW5jdGlvbiBXKHRlKXtyZXR1cm4gdGUubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgdGVbdGUubGVuZ3RoLTFdP3RlLnBvcCgpOlF9WGUuZXhwb3J0cz1mdW5jdGlvbiBOKCl7Zm9yKHZhciB0ZT1hcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoLEs9bmV3IEFycmF5KHRlKSxKPTA7Sjx0ZTtKKyspS1tKXT1hcmd1bWVudHNbSl07dmFyIHNlPVcoSyk7aWYoQXJyYXkuaXNBcnJheShLWzBdKSYmKEs9S1swXSksSy5sZW5ndGg8Mil0aHJvdyBuZXcgRWUoInN0cmVhbXMiKTt2YXIgb2UsY2U9Sy5tYXAoZnVuY3Rpb24oZGUsdmUp''@;'; put 'put ''e3ZhciBBZT12ZTxLLmxlbmd0aC0xO3JldHVybiByZShkZSxBZSx2ZT4wLGZ1bmN0aW9uKFNlKXtvZXx8KG9lPVNlKSxTZSYmY2UuZm9yRWFjaChhZSksIUFlJiYoY2UuZm9yRWFjaChhZSksc2Uob2UpKX0pfSk7cmV0dXJuIEsucmVkdWNlKFkpfX0sNDcxMDI6KFhlLEplLEwpPT57InVzZSBz''@;'; put 'put ''dHJpY3QiO3ZhciBtZT1MKDcwODkxKS5xLkVSUl9JTlZBTElEX09QVF9WQUxVRTtYZS5leHBvcnRzPXtnZXRIaWdoV2F0ZXJNYXJrOmZ1bmN0aW9uIEUoRWUsVSxRLGope3ZhciByZT1mdW5jdGlvbiBCKEVlLFUsUSl7cmV0dXJuIG51bGwhPUVlLmhpZ2hXYXRlck1hcms/RWUuaGlnaFdhdGVy''@;'; put 'put ''TWFyazpVP0VlW1FdOm51bGx9KFUsaixRKTtpZihudWxsIT1yZSl7aWYoIWlzRmluaXRlKHJlKXx8TWF0aC5mbG9vcihyZSkhPT1yZXx8cmU8MCl0aHJvdyBuZXcgbWUoaj9ROiJoaWdoV2F0ZXJNYXJrIixyZSk7cmV0dXJuIE1hdGguZmxvb3IocmUpfXJldHVybiBFZS5vYmplY3RNb2RlPzE2''@;'; put 'put ''OjE2Mzg0fX19LDQ5NzA6KFhlLEplLEwpPT57WGUuZXhwb3J0cz1MKDU5MDY5KS5FdmVudEVtaXR0ZXJ9LDY1Njg1OihYZSxKZSxMKT0+eyhKZT1YZS5leHBvcnRzPUwoMzE1NCkpLlN0cmVhbT1KZSxKZS5SZWFkYWJsZT1KZSxKZS5Xcml0YWJsZT1MKDIwNTIwKSxKZS5EdXBsZXg9TCg0MTMz''@;'; put 'put ''OSksSmUuVHJhbnNmb3JtPUwoNjAyNSksSmUuUGFzc1Rocm91Z2g9TCg1NjA3MSksSmUuZmluaXNoZWQ9TCg2NzU0MiksSmUucGlwZWxpbmU9TCg5MDk1NCl9LDc1NjM0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg5MzE3MikuQnVmZmVyLEI9TCg4Mzg5NCksRT1MKDM5NjUw''@;'; put 'put ''KSxFZT1uZXcgQXJyYXkoMTYpLFU9WzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsNyw0LDEzLDEsMTAsNiwxNSwzLDEyLDAsOSw1LDIsMTQsMTEsOCwzLDEwLDE0LDQsOSwxNSw4LDEsMiw3LDAsNiwxMywxMSw1LDEyLDEsOSwxMSwxMCwwLDgsMTIsNCwxMywzLDcsMTUs''@;'; put 'put ''MTQsNSw2LDIsNCwwLDUsOSw3LDEyLDIsMTAsMTQsMSwzLDgsMTEsNiwxNSwxM10sUT1bNSwxNCw3LDAsOSwyLDExLDQsMTMsNiwxNSw4LDEsMTAsMywxMiw2LDExLDMsNywwLDEzLDUsMTAsMTQsMTUsOCwxMiw0LDksMSwyLDE1LDUsMSwzLDcsMTQsNiw5LDExLDgsMTIsMiwxMCwwLDQsMTMs''@;'; put 'put ''OCw2LDQsMSwzLDExLDE1LDAsNSwxMiwyLDEzLDksNywxMCwxNCwxMiwxNSwxMCw0LDEsNSw4LDcsNiwyLDEzLDE0LDAsMyw5LDExXSxqPVsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEz''@;'; put 'put ''LDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XSxyZT1bOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMs''@;'; put 'put ''MTUsNywxMiw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcsMTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0LDE0LDYsMTQsNiw5LDEyLDksMTIsNSwxNSw4LDgsNSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV0sYWU9WzAsMTUx''@;'; put 'put ''ODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMjg0MDg1MzgzOF0sWT1bMTM1MjgyOTkyNiwxNTQ4NjAzNjg0LDE4MzYwNzI2OTEsMjA1Mzk5NDIxNywwXTtmdW5jdGlvbiBXKCl7RS5jYWxsKHRoaXMsNjQpLHRoaXMuX2E9MTczMjU4NDE5Myx0aGlzLl9iPTQwMjMyMzM0MTcsdGhpcy5f''@;'; put 'put ''Yz0yNTYyMzgzMTAyLHRoaXMuX2Q9MjcxNzMzODc4LHRoaXMuX2U9MzI4NTM3NzUyMH1mdW5jdGlvbiBOKGNlLGRlKXtyZXR1cm4gY2U8PGRlfGNlPj4+MzItZGV9ZnVuY3Rpb24gdGUoY2UsZGUsdmUsQWUsa2UsU2UsSWUsVGUpe3JldHVybiBOKGNlKyhkZV52ZV5BZSkrU2UrSWV8MCxUZSkr''@;'; put 'put ''a2V8MH1mdW5jdGlvbiBLKGNlLGRlLHZlLEFlLGtlLFNlLEllLFRlKXtyZXR1cm4gTihjZSsoZGUmdmV8fmRlJkFlKStTZStJZXwwLFRlKStrZXwwfWZ1bmN0aW9uIEooY2UsZGUsdmUsQWUsa2UsU2UsSWUsVGUpe3JldHVybiBOKGNlKygoZGV8fnZlKV5BZSkrU2UrSWV8MCxUZSkra2V8MH1m''@;'; put 'put ''dW5jdGlvbiBzZShjZSxkZSx2ZSxBZSxrZSxTZSxJZSxUZSl7cmV0dXJuIE4oY2UrKGRlJkFlfHZlJn5BZSkrU2UrSWV8MCxUZSkra2V8MH1mdW5jdGlvbiBvZShjZSxkZSx2ZSxBZSxrZSxTZSxJZSxUZSl7cmV0dXJuIE4oY2UrKGRlXih2ZXx+QWUpKStTZStJZXwwLFRlKStrZXwwfUIoVyxF''@;'; put 'put ''KSxXLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciBjZT1FZSxkZT0wO2RlPDE2OysrZGUpY2VbZGVdPXRoaXMuX2Jsb2NrLnJlYWRJbnQzMkxFKDQqZGUpO2Zvcih2YXIgdmU9MHx0aGlzLl9hLEFlPTB8dGhpcy5fYixrZT0wfHRoaXMuX2MsU2U9MHx0aGlzLl9kLEllPTB8''@;'; put 'put ''dGhpcy5fZSxUZT0wfHRoaXMuX2EsTWU9MHx0aGlzLl9iLGhlPTB8dGhpcy5fYyxPPTB8dGhpcy5fZCx6PTB8dGhpcy5fZSxlZT0wO2VlPDgwO2VlKz0xKXt2YXIgbmUseDtlZTwxNj8obmU9dGUodmUsQWUsa2UsU2UsSWUsY2VbVVtlZV1dLGFlWzBdLGpbZWVdKSx4PW9lKFRlLE1lLGhlLE8s''@;'; put 'put ''eixjZVtRW2VlXV0sWVswXSxyZVtlZV0pKTplZTwzMj8obmU9Syh2ZSxBZSxrZSxTZSxJZSxjZVtVW2VlXV0sYWVbMV0saltlZV0pLHg9c2UoVGUsTWUsaGUsTyx6LGNlW1FbZWVdXSxZWzFdLHJlW2VlXSkpOmVlPDQ4PyhuZT1KKHZlLEFlLGtlLFNlLEllLGNlW1VbZWVdXSxhZVsyXSxqW2Vl''@;'; put 'put ''XSkseD1KKFRlLE1lLGhlLE8seixjZVtRW2VlXV0sWVsyXSxyZVtlZV0pKTplZTw2ND8obmU9c2UodmUsQWUsa2UsU2UsSWUsY2VbVVtlZV1dLGFlWzNdLGpbZWVdKSx4PUsoVGUsTWUsaGUsTyx6LGNlW1FbZWVdXSxZWzNdLHJlW2VlXSkpOihuZT1vZSh2ZSxBZSxrZSxTZSxJZSxjZVtVW2Vl''@;'; put 'put ''XV0sYWVbNF0saltlZV0pLHg9dGUoVGUsTWUsaGUsTyx6LGNlW1FbZWVdXSxZWzRdLHJlW2VlXSkpLHZlPUllLEllPVNlLFNlPU4oa2UsMTApLGtlPUFlLEFlPW5lLFRlPXosej1PLE89TihoZSwxMCksaGU9TWUsTWU9eH12YXIgUD10aGlzLl9iK2tlK098MDt0aGlzLl9iPXRoaXMuX2MrU2Ur''@;'; put 'put ''enwwLHRoaXMuX2M9dGhpcy5fZCtJZStUZXwwLHRoaXMuX2Q9dGhpcy5fZSt2ZStNZXwwLHRoaXMuX2U9dGhpcy5fYStBZStoZXwwLHRoaXMuX2E9UH0sVy5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbigpe3RoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdPTEyOCx0aGlzLl9ibG9j''@;'; put 'put ''a09mZnNldD41NiYmKHRoaXMuX2Jsb2NrLmZpbGwoMCx0aGlzLl9ibG9ja09mZnNldCw2NCksdGhpcy5fdXBkYXRlKCksdGhpcy5fYmxvY2tPZmZzZXQ9MCksdGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xl''@;'; put 'put ''bmd0aFswXSw1NiksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMV0sNjApLHRoaXMuX3VwZGF0ZSgpO3ZhciBjZT1tZS5hbGxvYz9tZS5hbGxvYygyMCk6bmV3IG1lKDIwKTtyZXR1cm4gY2Uud3JpdGVJbnQzMkxFKHRoaXMuX2EsMCksY2Uud3JpdGVJbnQzMkxFKHRo''@;'; put 'put ''aXMuX2IsNCksY2Uud3JpdGVJbnQzMkxFKHRoaXMuX2MsOCksY2Uud3JpdGVJbnQzMkxFKHRoaXMuX2QsMTIpLGNlLndyaXRlSW50MzJMRSh0aGlzLl9lLDE2KSxjZX0sWGUuZXhwb3J0cz1XfSw3MzUwMjooWGUsSmUsTCk9Pnt2YXIgbWU9TCg5MzE3MiksQj1tZS5CdWZmZXI7ZnVuY3Rpb24g''@;'; put 'put ''RShVLFEpe2Zvcih2YXIgaiBpbiBVKVFbal09VVtqXX1mdW5jdGlvbiBFZShVLFEsail7cmV0dXJuIEIoVSxRLGopfUIuZnJvbSYmQi5hbGxvYyYmQi5hbGxvY1Vuc2FmZSYmQi5hbGxvY1Vuc2FmZVNsb3c/WGUuZXhwb3J0cz1tZTooRShtZSxKZSksSmUuQnVmZmVyPUVlKSxFKEIsRWUpLEVl''@;'; put 'put ''LmZyb209ZnVuY3Rpb24oVSxRLGope2lmKCJudW1iZXIiPT10eXBlb2YgVSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlciIpO3JldHVybiBCKFUsUSxqKX0sRWUuYWxsb2M9ZnVuY3Rpb24oVSxRLGope2lmKCJudW1iZXIiIT10eXBlb2YgVSl0aHJv''@;'; put 'put ''dyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7dmFyIHJlPUIoVSk7cmV0dXJuIHZvaWQgMCE9PVE/InN0cmluZyI9PXR5cGVvZiBqP3JlLmZpbGwoUSxqKTpyZS5maWxsKFEpOnJlLmZpbGwoMCkscmV9LEVlLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKFUpe2lmKCJu''@;'; put 'put ''dW1iZXIiIT10eXBlb2YgVSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIEIoVSl9LEVlLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihVKXtpZigibnVtYmVyIiE9dHlwZW9mIFUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVz''@;'; put 'put ''dCBiZSBhIG51bWJlciIpO3JldHVybiBtZS5TbG93QnVmZmVyKFUpfX0sNjIwMzg6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBFZSxtZT1MKDkzMTcyKSxCPW1lLkJ1ZmZlcixFPXt9O2ZvcihFZSBpbiBtZSkhbWUuaGFzT3duUHJvcGVydHkoRWUpfHwiU2xvd0J1ZmZlciI9PT1FZXx8''@;'; put 'put ''IkJ1ZmZlciI9PT1FZXx8KEVbRWVdPW1lW0VlXSk7dmFyIFU9RS5CdWZmZXI9e307Zm9yKEVlIGluIEIpIUIuaGFzT3duUHJvcGVydHkoRWUpfHwiYWxsb2NVbnNhZmUiPT09RWV8fCJhbGxvY1Vuc2FmZVNsb3ciPT09RWV8fChVW0VlXT1CW0VlXSk7aWYoRS5CdWZmZXIucHJvdG90eXBlPUIu''@;'; put 'put ''cHJvdG90eXBlLCghVS5mcm9tfHxVLmZyb209PT1VaW50OEFycmF5LmZyb20pJiYoVS5mcm9tPWZ1bmN0aW9uKFEsaixyZSl7aWYoIm51bWJlciI9PXR5cGVvZiBRKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAidmFsdWUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG9mIHR5cGUgbnVtYmVyLiBS''@;'; put 'put ''ZWNlaXZlZCB0eXBlICcrdHlwZW9mIFEpO2lmKFEmJnZvaWQgMD09PVEubGVuZ3RoKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIEFycmF5LWxpa2UgT2JqZWN0''@;'; put 'put ''LiBSZWNlaXZlZCB0eXBlICIrdHlwZW9mIFEpO3JldHVybiBCKFEsaixyZSl9KSxVLmFsbG9jfHwoVS5hbGxvYz1mdW5jdGlvbihRLGoscmUpe2lmKCJudW1iZXIiIT10eXBlb2YgUSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInNpemUiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1i''@;'; put 'put ''ZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgUSk7aWYoUTwwfHxRPj0yKigxPDwzMCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJytRKyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKTt2YXIgYWU9QihRKTtyZXR1cm4gaiYmMCE9PWoubGVuZ3RoPyJzdHJpbmci''@;'; put 'put ''PT10eXBlb2YgcmU/YWUuZmlsbChqLHJlKTphZS5maWxsKGopOmFlLmZpbGwoMCksYWV9KSwhRS5rU3RyaW5nTWF4TGVuZ3RoKXRyeXtFLmtTdHJpbmdNYXhMZW5ndGg9cHJvY2Vzcy5iaW5kaW5nKCJidWZmZXIiKS5rU3RyaW5nTWF4TGVuZ3RofWNhdGNoKFEpe31FLmNvbnN0YW50c3x8KEUu''@;'; put 'put ''Y29uc3RhbnRzPXtNQVhfTEVOR1RIOkUua01heExlbmd0aH0sRS5rU3RyaW5nTWF4TGVuZ3RoJiYoRS5jb25zdGFudHMuTUFYX1NUUklOR19MRU5HVEg9RS5rU3RyaW5nTWF4TGVuZ3RoKSksWGUuZXhwb3J0cz1FfSwyMDMzOihYZSxKZSk9PnsidXNlIHN0cmljdCI7dmFyIG1lOyFmdW5jdGlv''@;'; put 'put ''bigpe3ZhciBCPUplfHx7fTt2b2lkIDAhPT0obWU9ZnVuY3Rpb24oKXtyZXR1cm4gQn0uYXBwbHkoSmUsW10pKSYmKFhlLmV4cG9ydHM9bWUpLEIuZGVmYXVsdD1CO3ZhciBFPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsVT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGo9''@;'; put 'put ''L3VybFwoWyInXT8oLis/KVsiJ10/XCkvLHJlPXt3b2ZmMjoiZm9udC93b2ZmMiIsd29mZjoiZm9udC93b2ZmIixvdGY6ImFwcGxpY2F0aW9uL3gtZm9udC1vcGVudHlwZSIsdHRmOiJhcHBsaWNhdGlvbi94LWZvbnQtdHRmIixlb3Q6ImFwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0Iixz''@;'; put 'put ''Zm50OiJhcHBsaWNhdGlvbi9mb250LXNmbnQiLHN2ZzoiaW1hZ2Uvc3ZnK3htbCJ9LGFlPWZ1bmN0aW9uKHope3JldHVybiB6IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fHogaW5zdGFuY2VvZiBTVkdFbGVtZW50fSxZPWZ1bmN0aW9uKHope2lmKCFhZSh6KSl0aHJvdyBuZXcgRXJyb3IoImFu''@;'; put 'put ''IEhUTUxFbGVtZW50IG9yIFNWR0VsZW1lbnQgaXMgcmVxdWlyZWQ7IGdvdCAiK3opfSxXPWZ1bmN0aW9uKHope3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlZSxuZSl7YWUoeik/ZWUoeik6bmUobmV3IEVycm9yKCJhbiBIVE1MRWxlbWVudCBvciBTVkdFbGVtZW50IGlzIHJlcXVpcmVk''@;'; put 'put ''OyBnb3QgIit6KSl9KX0sdGU9ZnVuY3Rpb24oeil7dmFyIGVlPU9iamVjdC5rZXlzKHJlKS5maWx0ZXIoZnVuY3Rpb24obmUpe3JldHVybiB6LmluZGV4T2YoIi4iK25lKT4wfSkubWFwKGZ1bmN0aW9uKG5lKXtyZXR1cm4gcmVbbmVdfSk7cmV0dXJuIGVlP2VlWzBdOihjb25zb2xlLmVycm9y''@;'; put 'put ''KCJVbmtub3duIGZvbnQgZm9ybWF0IGZvciAiK3orIi4gRm9udHMgbWF5IG5vdCBiZSB3b3JraW5nIGNvcnJlY3RseS4iKSwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIil9LEo9ZnVuY3Rpb24oeixlZSxuZSl7dmFyIHg9ei52aWV3Qm94JiZ6LnZpZXdCb3guYmFzZVZhbCYmei52aWV3Qm94''@;'; put 'put ''LmJhc2VWYWxbbmVdfHxudWxsIT09ZWUuZ2V0QXR0cmlidXRlKG5lKSYmIWVlLmdldEF0dHJpYnV0ZShuZSkubWF0Y2goLyUkLykmJnBhcnNlSW50KGVlLmdldEF0dHJpYnV0ZShuZSkpfHx6LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW25lXXx8cGFyc2VJbnQoZWUuc3R5bGVbbmVdKXx8cGFy''@;'; put 'put ''c2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoeikuZ2V0UHJvcGVydHlWYWx1ZShuZSkpO3JldHVybiBudWxsPT14fHxpc05hTihwYXJzZUZsb2F0KHgpKT8wOnh9LGNlPWZ1bmN0aW9uKHope2Zvcih2YXIgZWU9d2luZG93LmF0b2Ioei5zcGxpdCgiLCIpWzFdKSxuZT16LnNwbGl0KCIs''@;'; put 'put ''IilbMF0uc3BsaXQoIjoiKVsxXS5zcGxpdCgiOyIpWzBdLHg9bmV3IEFycmF5QnVmZmVyKGVlLmxlbmd0aCksUD1uZXcgVWludDhBcnJheSh4KSxWPTA7VjxlZS5sZW5ndGg7VisrKVBbVl09ZWUuY2hhckNvZGVBdChWKTtyZXR1cm4gbmV3IEJsb2IoW3hdLHt0eXBlOm5lfSl9LGtlPXt9LEll''@;'; put 'put ''PW51bGwsTWU9ZnVuY3Rpb24oeixlZSl7dmFyIG5lPWVlfHx7fSx4PW5lLnNlbGVjdG9yUmVtYXAsUD1uZS5tb2RpZnlTdHlsZSxUPW5lLmZvbnRzLFM9bmUuZXhjbHVkZVVudXNlZENzcyxGPW5lLm1vZGlmeUNzc3x8ZnVuY3Rpb24oUGUsUWUpe3JldHVybih4P3goUGUpOlBlKSsieyIrKFA/''@;'; put 'put ''UChRZSk6UWUpKyJ9XG4ifSx5ZT1bXSxDZT12b2lkIDA9PT1ULERlPVR8fFtdO3JldHVybihJZXx8KEllPUFycmF5LmZyb20oZG9jdW1lbnQuc3R5bGVTaGVldHMpLm1hcChmdW5jdGlvbih6KXt0cnl7cmV0dXJue3J1bGVzOnouY3NzUnVsZXMsaHJlZjp6LmhyZWZ9fWNhdGNoKGVlKXtyZXR1''@;'; put 'put ''cm4gY29uc29sZS53YXJuKCJTdHlsZXNoZWV0IGNvdWxkIG5vdCBiZSBsb2FkZWQ6ICIrei5ocmVmLGVlKSx7fX19KSkpLmZvckVhY2goZnVuY3Rpb24oUGUpe3ZhciBRZT1QZS5ydWxlcywkZT1QZS5ocmVmOyFRZXx8QXJyYXkuZnJvbShRZSkuZm9yRWFjaChmdW5jdGlvbihndCl7aWYodm9p''@;'; put 'put ''ZCAwIT09Z3Quc3R5bGUpaWYoZnVuY3Rpb24oeixlZSl7aWYoZWUpdHJ5e3JldHVybiB6LnF1ZXJ5U2VsZWN0b3IoZWUpfHx6LnBhcmVudE5vZGUmJnoucGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yKGVlKX1jYXRjaChuZSl7Y29uc29sZS53YXJuKCdJbnZhbGlkIENTUyBzZWxlY3RvciAiJytl''@;'; put 'put ''ZSsnIicsbmUpfX0oeixndC5zZWxlY3RvclRleHQpKXllLnB1c2goRihndC5zZWxlY3RvclRleHQsZ3Quc3R5bGUuY3NzVGV4dCkpO2Vsc2UgaWYoQ2UmJmd0LmNzc1RleHQubWF0Y2goL15AZm9udC1mYWNlLykpe3ZhciB3dD1mdW5jdGlvbih6LGVlKXt2YXIgbmU9ei5jc3NUZXh0Lm1hdGNo''@;'; put 'put ''KGopLHg9bmUmJm5lWzFdfHwiIjtpZih4JiYheC5tYXRjaCgvXmRhdGE6LykmJiJhYm91dDpibGFuayIhPT14KXt2YXIgUD14LnN0YXJ0c1dpdGgoIi4uLyIpP2VlKyIvLi4vIit4Onguc3RhcnRzV2l0aCgiLi8iKT9lZSsiLy4iK3g6eDtyZXR1cm57dGV4dDp6LmNzc1RleHQsZm9ybWF0OnRl''@;'; put 'put ''KFApLHVybDpQfX19KGd0LCRlKTt3dCYmRGUucHVzaCh3dCl9ZWxzZSBTfHx5ZS5wdXNoKGd0LmNzc1RleHQpfSl9KSxmdW5jdGlvbih6KXtyZXR1cm4gUHJvbWlzZS5hbGwoei5tYXAoZnVuY3Rpb24oZWUpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihuZSx4KXtpZihrZVtlZS51cmxd''@;'; put 'put ''KXJldHVybiBuZShrZVtlZS51cmxdKTt2YXIgUD1uZXcgWE1MSHR0cFJlcXVlc3Q7UC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbigpe3ZhciBWPWZ1bmN0aW9uKHope2Zvcih2YXIgZWU9IiIsbmU9bmV3IFVpbnQ4QXJyYXkoeikseD0wO3g8bmUuYnl0ZUxlbmd0aDt4KyspZWUr''@;'; put 'put ''PVN0cmluZy5mcm9tQ2hhckNvZGUobmVbeF0pO3JldHVybiB3aW5kb3cuYnRvYShlZSl9KFAucmVzcG9uc2UpLFQ9ZWUudGV4dC5yZXBsYWNlKGosJ3VybCgiZGF0YTonK2VlLmZvcm1hdCsiO2Jhc2U2NCwiK1YrJyIpJykrIlxuIjtrZVtlZS51cmxdPVQsbmUoVCl9KSxQLmFkZEV2ZW50TGlz''@;'; put 'put ''dGVuZXIoImVycm9yIixmdW5jdGlvbihWKXtjb25zb2xlLndhcm4oIkZhaWxlZCB0byBsb2FkIGZvbnQgZnJvbTogIitlZS51cmwsViksa2VbZWUudXJsXT1udWxsLG5lKG51bGwpfSksUC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsZnVuY3Rpb24oVil7Y29uc29sZS53YXJuKCJBYm9ydGVk''@;'; put 'put ''IGxvYWRpbmcgZm9udCBmcm9tOiAiK2VlLnVybCxWKSxuZShudWxsKX0pLFAub3BlbigiR0VUIixlZS51cmwpLFAucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciIsUC5zZW5kKCl9KX0pKS50aGVuKGZ1bmN0aW9uKGVlKXtyZXR1cm4gZWUuZmlsdGVyKGZ1bmN0aW9uKG5lKXtyZXR1cm4gbmV9''@;'; put 'put ''KS5qb2luKCIiKX0pfShEZSkudGhlbihmdW5jdGlvbihQZSl7cmV0dXJuIHllLmpvaW4oIlxuIikrUGV9KX0saGU9ZnVuY3Rpb24oKXtpZighbmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2ImJiEoImRvd25sb2FkImluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSkpcmV0dXJue3BvcHVw''@;'; put 'put ''OndpbmRvdy5vcGVuKCl9fTtCLnByZXBhcmVTdmc9ZnVuY3Rpb24oTyx6LGVlKXtZKE8pO3ZhciBuZT16fHx7fSx4PW5lLmxlZnQsUD12b2lkIDA9PT14PzA6eCxWPW5lLnRvcCxUPXZvaWQgMD09PVY/MDpWLFM9bmUud2lkdGgsRj1uZS5oZWlnaHQseWU9bmUuc2NhbGUsQ2U9dm9pZCAwPT09''@;'; put 'put ''eWU/MTp5ZSxEZT1uZS5yZXNwb25zaXZlLFBlPXZvaWQgMCE9PURlJiZEZSxRZT1uZS5leGNsdWRlQ3NzLCRlPXZvaWQgMCE9PVFlJiZRZTtyZXR1cm4gZnVuY3Rpb24oeil7cmV0dXJuIFByb21pc2UuYWxsKEFycmF5LmZyb20oei5xdWVyeVNlbGVjdG9yQWxsKCJpbWFnZSIpKS5tYXAoZnVu''@;'; put 'put ''Y3Rpb24oZWUpe3ZhciBuZT1lZS5nZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsImhyZWYiKXx8ZWUuZ2V0QXR0cmlidXRlKCJocmVmIik7cmV0dXJuIG5lPyhmdW5jdGlvbih6KXtyZXR1cm4geiYmMD09PXoubGFzdEluZGV4T2YoImh0dHAiLDApJiYtMT09''@;'; put 'put ''PXoubGFzdEluZGV4T2Yod2luZG93LmxvY2F0aW9uLmhvc3QpfShuZSkmJihuZSs9KC0xPT09bmUuaW5kZXhPZigiPyIpPyI/IjoiJiIpKyJ0PSIrKG5ldyBEYXRlKS52YWx1ZU9mKCkpLG5ldyBQcm9taXNlKGZ1bmN0aW9uKHgsUCl7dmFyIFY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2Fu''@;'; put 'put ''dmFzIiksVD1uZXcgSW1hZ2U7VC5jcm9zc09yaWdpbj0iYW5vbnltb3VzIixULnNyYz1uZSxULm9uZXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gUChuZXcgRXJyb3IoIkNvdWxkIG5vdCBsb2FkICIrbmUpKX0sVC5vbmxvYWQ9ZnVuY3Rpb24oKXtWLndpZHRoPVQud2lkdGgsVi5oZWlnaHQ9VC5o''@;'; put 'put ''ZWlnaHQsVi5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZShULDAsMCksZWUuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJocmVmIixWLnRvRGF0YVVSTCgiaW1hZ2UvcG5nIikpLHgoITApfX0pKTpQcm9taXNlLnJlc29sdmUobnVsbCl9KSl9KE8pLnRo''@;'; put 'put ''ZW4oZnVuY3Rpb24oKXt2YXIgZ3Q9Ty5jbG9uZU5vZGUoITApO2d0LnN0eWxlLmJhY2tncm91bmRDb2xvcj0oenx8e30pLmJhY2tncm91bmRDb2xvcnx8Ty5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I7dmFyIHd0PWZ1bmN0aW9uKHosZWUsbmUseCl7aWYoInN2ZyI9PT16LnRhZ05hbWUpcmV0dXJu''@;'; put 'put ''e3dpZHRoOm5lfHxKKHosZWUsIndpZHRoIiksaGVpZ2h0Onh8fEooeixlZSwiaGVpZ2h0Iil9O2lmKHouZ2V0QkJveCl7dmFyIFA9ei5nZXRCQm94KCk7cmV0dXJue3dpZHRoOlAueCtQLndpZHRoLGhlaWdodDpQLnkrUC5oZWlnaHR9fX0oTyxndCxTLEYpLG10PXd0LndpZHRoLHZ0PXd0Lmhl''@;'; put 'put ''aWdodDtpZigic3ZnIiE9PU8udGFnTmFtZSl7aWYoIU8uZ2V0QkJveClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJBdHRlbXB0ZWQgdG8gcmVuZGVyIG5vbi1TVkcgZWxlbWVudCIsTyk7bnVsbCE9Z3QuZ2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iKSYmZ3Quc2V0QXR0cmlidXRlKCJ0cmFu''@;'; put 'put ''c2Zvcm0iLGd0LmdldEF0dHJpYnV0ZSgidHJhbnNmb3JtIikucmVwbGFjZSgvdHJhbnNsYXRlXCguKj9cKS8sIiIpKTt2YXIgQXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInN2ZyIpO0F0LmFwcGVuZENoaWxkKGd0KSxndD1BdH1pZihn''@;'; put 'put ''dC5zZXRBdHRyaWJ1dGUoInZlcnNpb24iLCIxLjEiKSxndC5zZXRBdHRyaWJ1dGUoInZpZXdCb3giLFtQLFQsbXQsdnRdLmpvaW4oIiAiKSksZ3QuZ2V0QXR0cmlidXRlKCJ4bWxucyIpfHxndC5zZXRBdHRyaWJ1dGVOUyhFLCJ4bWxucyIsVSksZ3QuZ2V0QXR0cmlidXRlKCJ4bWxuczp4bGlu''@;'; put 'put ''ayIpfHxndC5zZXRBdHRyaWJ1dGVOUyhFLCJ4bWxuczp4bGluayIsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiKSxQZT8oZ3QucmVtb3ZlQXR0cmlidXRlKCJ3aWR0aCIpLGd0LnJlbW92ZUF0dHJpYnV0ZSgiaGVpZ2h0IiksZ3Quc2V0QXR0cmlidXRlKCJwcmVzZXJ2ZUFzcGVjdFJh''@;'; put 'put ''dGlvIiwieE1pbllNaW4gbWVldCIpKTooZ3Quc2V0QXR0cmlidXRlKCJ3aWR0aCIsbXQqQ2UpLGd0LnNldEF0dHJpYnV0ZSgiaGVpZ2h0Iix2dCpDZSkpLEFycmF5LmZyb20oZ3QucXVlcnlTZWxlY3RvckFsbCgiZm9yZWlnbk9iamVjdCA+ICoiKSkuZm9yRWFjaChmdW5jdGlvbihvbil7b24u''@;'; put 'put ''c2V0QXR0cmlidXRlTlMoRSwieG1sbnMiLCJzdmciPT09b24udGFnTmFtZT9VOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIil9KSwhJGUpcmV0dXJuIE1lKE8seikudGhlbihmdW5jdGlvbihvbil7dmFyIF90PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7X3Quc2V0QXR0''@;'; put 'put ''cmlidXRlKCJ0eXBlIiwidGV4dC9jc3MiKSxfdC5pbm5lckhUTUw9IjwhW0NEQVRBW1xuIitvbisiXG5dXT4iO3ZhciB0dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkZWZzIik7dHQuYXBwZW5kQ2hpbGQoX3QpLGd0Lmluc2VydEJlZm9yZSh0dCxndC5maXJzdENoaWxkKTt2YXIgZXQ9ZG9j''@;'; put 'put ''dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZXQuYXBwZW5kQ2hpbGQoZ3QpO3ZhciBsdD1ldC5pbm5lckhUTUwucmVwbGFjZSgvTlNcZCs6aHJlZi9naSwneG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWYnKTtpZigiZnVuY3Rpb24iIT10eXBl''@;'; put 'put ''b2YgZWUpcmV0dXJue3NyYzpsdCx3aWR0aDptdCxoZWlnaHQ6dnR9O2VlKGx0LG10LHZ0KX0pO3ZhciBodD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtodC5hcHBlbmRDaGlsZChndCk7dmFyIEJ0PWh0LmlubmVySFRNTDtpZigiZnVuY3Rpb24iIT10eXBlb2YgZWUpcmV0dXJue3Ny''@;'; put 'put ''YzpCdCx3aWR0aDptdCxoZWlnaHQ6dnR9O2VlKEJ0LG10LHZ0KX0pfSxCLnN2Z0FzRGF0YVVyaT1mdW5jdGlvbihPLHosZWUpe3JldHVybiBZKE8pLEIucHJlcGFyZVN2ZyhPLHopLnRoZW4oZnVuY3Rpb24obmUpe3ZhciBQPW5lLndpZHRoLFY9bmUuaGVpZ2h0LFQ9ImRhdGE6aW1hZ2Uvc3Zn''@;'; put 'put ''K3htbDtiYXNlNjQsIit3aW5kb3cuYnRvYShmdW5jdGlvbih6KXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVuY29kZVVSSUNvbXBvbmVudCh6KS5yZXBsYWNlKC8lKFswLTlBLUZdezJ9KS9nLGZ1bmN0aW9uKGVlLG5lKXt2YXIgeD1TdHJpbmcuZnJvbUNoYXJDb2RlKCIweCIrbmUpO3Jl''@;'; put 'put ''dHVybiIlIj09PXg/IiUyNSI6eH0pKX0oJzw/eG1sIHZlcnNpb249IjEuMCIgc3RhbmRhbG9uZT0ibm8iPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiIFs8IUVO''@;'; put 'put ''VElUWSBuYnNwICImIzE2MDsiPl0+JytuZS5zcmMpKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZWUmJmVlKFQsUCxWKSxUfSl9LEIuc3ZnQXNQbmdVcmk9ZnVuY3Rpb24oTyx6LGVlKXtZKE8pO3ZhciBuZT16fHx7fSx4PW5lLmVuY29kZXJUeXBlLFA9dm9pZCAwPT09eD8iaW1hZ2UvcG5n''@;'; put 'put ''Ijp4LFY9bmUuZW5jb2Rlck9wdGlvbnMsVD12b2lkIDA9PT1WPy44OlYsUz1uZS5jYW52ZyxGPWZ1bmN0aW9uKENlKXt2YXIgRGU9Q2Uuc3JjLFBlPUNlLndpZHRoLFFlPUNlLmhlaWdodCwkZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxndD0kZS5nZXRDb250ZXh0KCIyZCIp''@;'; put 'put ''LHd0PXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvfHwxOyRlLndpZHRoPVBlKnd0LCRlLmhlaWdodD1RZSp3dCwkZS5zdHlsZS53aWR0aD0kZS53aWR0aCsicHgiLCRlLnN0eWxlLmhlaWdodD0kZS5oZWlnaHQrInB4IixndC5zZXRUcmFuc2Zvcm0od3QsMCwwLHd0LDAsMCksUz9TKCRlLERlKTpn''@;'; put 'put ''dC5kcmF3SW1hZ2UoRGUsMCwwKTt2YXIgbXQ9dm9pZCAwO3RyeXttdD0kZS50b0RhdGFVUkwoUCxUKX1jYXRjaCh2dCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTZWN1cml0eUVycm9yJiZ2dCBpbnN0YW5jZW9mIFNlY3VyaXR5RXJyb3J8fCJTZWN1cml0eUVycm9yIj09PXZ0Lm5hbWUpcmV0''@;'; put 'put ''dXJuIHZvaWQgY29uc29sZS5lcnJvcigiUmVuZGVyZWQgU1ZHIGltYWdlcyBjYW5ub3QgYmUgZG93bmxvYWRlZCBpbiB0aGlzIGJyb3dzZXIuIik7dGhyb3cgdnR9cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGVlJiZlZShtdCwkZS53aWR0aCwkZS5oZWlnaHQpLFByb21pc2UucmVzb2x2ZSht''@;'; put 'put ''dCl9O3JldHVybiBTP0IucHJlcGFyZVN2ZyhPLHopLnRoZW4oRik6Qi5zdmdBc0RhdGFVcmkoTyx6KS50aGVuKGZ1bmN0aW9uKHllKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oQ2UsRGUpe3ZhciBQZT1uZXcgSW1hZ2U7UGUub25sb2FkPWZ1bmN0aW9uKCl7cmV0dXJuIENlKEYoe3Ny''@;'; put 'put ''YzpQZSx3aWR0aDpQZS53aWR0aCxoZWlnaHQ6UGUuaGVpZ2h0fSkpfSxQZS5vbmVycm9yPWZ1bmN0aW9uKCl7RGUoIlRoZXJlIHdhcyBhbiBlcnJvciBsb2FkaW5nIHRoZSBkYXRhIFVSSSBhcyBhbiBpbWFnZSBvbiB0aGUgZm9sbG93aW5nIFNWR1xuIit3aW5kb3cuYXRvYih5ZS5zbGljZSgy''@;'; put 'put ''NikpKyJPcGVuIHRoZSBmb2xsb3dpbmcgbGluayB0byBzZWUgYnJvd3NlcidzIGRpYWdub3Npc1xuIit5ZSl9LFBlLnNyYz15ZX0pfSl9LEIuZG93bmxvYWQ9ZnVuY3Rpb24oTyx6LGVlKXtpZihuYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYiluYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihj''@;'; put 'put ''ZSh6KSxPKTtlbHNle3ZhciBuZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7aWYoImRvd25sb2FkImluIG5lKXtuZS5kb3dubG9hZD1PLG5lLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobmUpO3RyeXt2YXIgeD1jZSh6KSxQPVVSTC5jcmVhdGVP''@;'; put 'put ''YmplY3RVUkwoeCk7bmUuaHJlZj1QLG5lLm9uY2xpY2s9ZnVuY3Rpb24oKXtyZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7cmV0dXJuIFVSTC5yZXZva2VPYmplY3RVUkwoUCl9KX19Y2F0Y2goVil7Y29uc29sZS5lcnJvcihWKSxjb25zb2xlLndhcm4oIkVycm9yIHdo''@;'; put 'put ''aWxlIGdldHRpbmcgb2JqZWN0IFVSTC4gRmFsbGluZyBiYWNrIHRvIHN0cmluZyBVUkwuIiksbmUuaHJlZj16fW5lLmNsaWNrKCksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChuZSl9ZWxzZSBlZSYmZWUucG9wdXAmJihlZS5wb3B1cC5kb2N1bWVudC50aXRsZT1PLGVlLnBvcHVwLmxvY2F0''@;'; put 'put ''aW9uLnJlcGxhY2UoeikpfX0sQi5zYXZlU3ZnPWZ1bmN0aW9uKE8seixlZSl7dmFyIG5lPWhlKCk7cmV0dXJuIFcoTykudGhlbihmdW5jdGlvbih4KXtyZXR1cm4gQi5zdmdBc0RhdGFVcmkoeCxlZXx8e30pfSkudGhlbihmdW5jdGlvbih4KXtyZXR1cm4gQi5kb3dubG9hZCh6LHgsbmUpfSl9''@;'; put 'put ''LEIuc2F2ZVN2Z0FzUG5nPWZ1bmN0aW9uKE8seixlZSl7dmFyIG5lPWhlKCk7cmV0dXJuIFcoTykudGhlbihmdW5jdGlvbih4KXtyZXR1cm4gQi5zdmdBc1BuZ1VyaSh4LGVlfHx7fSl9KS50aGVuKGZ1bmN0aW9uKHgpe3JldHVybiBCLmRvd25sb2FkKHoseCxuZSl9KX19KCl9LDg2NjkyOihY''@;'; put 'put ''ZSxKZSxMKT0+e3ZhciBtZT1MKDczNTAyKS5CdWZmZXI7ZnVuY3Rpb24gQihFLEVlKXt0aGlzLl9ibG9jaz1tZS5hbGxvYyhFKSx0aGlzLl9maW5hbFNpemU9RWUsdGhpcy5fYmxvY2tTaXplPUUsdGhpcy5fbGVuPTB9Qi5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKEUsRWUpeyJzdHJpbmci''@;'; put 'put ''PT10eXBlb2YgRSYmKEU9bWUuZnJvbShFLEVlPUVlfHwidXRmOCIpKTtmb3IodmFyIFU9dGhpcy5fYmxvY2ssUT10aGlzLl9ibG9ja1NpemUsaj1FLmxlbmd0aCxyZT10aGlzLl9sZW4sYWU9MDthZTxqOyl7Zm9yKHZhciBZPXJlJVEsVz1NYXRoLm1pbihqLWFlLFEtWSksTj0wO048VztOKysp''@;'; put 'put ''VVtZK05dPUVbYWUrTl07YWUrPVcsKHJlKz1XKSVRPT0wJiZ0aGlzLl91cGRhdGUoVSl9cmV0dXJuIHRoaXMuX2xlbis9aix0aGlzfSxCLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oRSl7dmFyIEVlPXRoaXMuX2xlbiV0aGlzLl9ibG9ja1NpemU7dGhpcy5fYmxvY2tbRWVdPTEyOCx0aGlz''@;'; put 'put ''Ll9ibG9jay5maWxsKDAsRWUrMSksRWU+PXRoaXMuX2ZpbmFsU2l6ZSYmKHRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jayksdGhpcy5fYmxvY2suZmlsbCgwKSk7dmFyIFU9OCp0aGlzLl9sZW47aWYoVTw9NDI5NDk2NzI5NSl0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKFUsdGhpcy5fYmxvY2tT''@;'; put 'put ''aXplLTQpO2Vsc2V7dmFyIFE9KDQyOTQ5NjcyOTUmVSk+Pj4wO3RoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUoKFUtUSkvNDI5NDk2NzI5Nix0aGlzLl9ibG9ja1NpemUtOCksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRShRLHRoaXMuX2Jsb2NrU2l6ZS00KX10aGlzLl91cGRhdGUodGhpcy5f''@;'; put 'put ''YmxvY2spO3ZhciByZT10aGlzLl9oYXNoKCk7cmV0dXJuIEU/cmUudG9TdHJpbmcoRSk6cmV9LEIucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIl91cGRhdGUgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzcyIpfSxYZS5leHBvcnRzPUJ9LDk1MjQ0''@;'; put 'put ''OihYZSxKZSxMKT0+e3ZhciBtZT1YZS5leHBvcnRzPWZ1bmN0aW9uKEUpe0U9RS50b0xvd2VyQ2FzZSgpO3ZhciBFZT1tZVtFXTtpZighRWUpdGhyb3cgbmV3IEVycm9yKEUrIiBpcyBub3Qgc3VwcG9ydGVkICh3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0cykiKTtyZXR1cm4gbmV3IEVlfTttZS5z''@;'; put 'put ''aGE9TCg4ODkzMiksbWUuc2hhMT1MKDE3NzM2KSxtZS5zaGEyMjQ9TCgyNTA0NCksbWUuc2hhMjU2PUwoMTUwMTQpLG1lLnNoYTM4ND1MKDc2NTQwKSxtZS5zaGE1MTI9TCgxMDExNyl9LDg4OTMyOihYZSxKZSxMKT0+e3ZhciBtZT1MKDgzODk0KSxCPUwoODY2OTIpLEU9TCg3MzUwMikuQnVm''@;'; put 'put ''ZmVyLEVlPVsxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsLTE4OTQwMDc1ODgsLTg5OTQ5NzUxNF0sVT1uZXcgQXJyYXkoODApO2Z1bmN0aW9uIFEoKXt0aGlzLmluaXQoKSx0aGlzLl93PVUsQi5jYWxsKHRoaXMsNjQsNTYpfWZ1bmN0aW9uIGooWSl7cmV0dXJuIFk8PDV8WT4+PjI3fWZ1bmN0aW9u''@;'; put 'put ''IHJlKFkpe3JldHVybiBZPDwzMHxZPj4+Mn1mdW5jdGlvbiBhZShZLFcsTix0ZSl7cmV0dXJuIDA9PT1ZP1cmTnx+VyZ0ZToyPT09WT9XJk58VyZ0ZXxOJnRlOldeTl50ZX1tZShRLEIpLFEucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT0xNzMyNTg0MTkzLHRoaXMu''@;'; put 'put ''X2I9NDAyMzIzMzQxNyx0aGlzLl9jPTI1NjIzODMxMDIsdGhpcy5fZD0yNzE3MzM4NzgsdGhpcy5fZT0zMjg1Mzc3NTIwLHRoaXN9LFEucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oWSl7Zm9yKHZhciBXPXRoaXMuX3csTj0wfHRoaXMuX2EsdGU9MHx0aGlzLl9iLEs9MHx0aGlzLl9jLEo9''@;'; put 'put ''MHx0aGlzLl9kLHNlPTB8dGhpcy5fZSxvZT0wO29lPDE2Oysrb2UpV1tvZV09WS5yZWFkSW50MzJCRSg0Km9lKTtmb3IoO29lPDgwOysrb2UpV1tvZV09V1tvZS0zXV5XW29lLThdXldbb2UtMTRdXldbb2UtMTZdO2Zvcih2YXIgY2U9MDtjZTw4MDsrK2NlKXt2YXIgZGU9fn4oY2UvMjApLHZl''@;'; put 'put ''PWooTikrYWUoZGUsdGUsSyxKKStzZStXW2NlXStFZVtkZV18MDtzZT1KLEo9SyxLPXJlKHRlKSx0ZT1OLE49dmV9dGhpcy5fYT1OK3RoaXMuX2F8MCx0aGlzLl9iPXRlK3RoaXMuX2J8MCx0aGlzLl9jPUsrdGhpcy5fY3wwLHRoaXMuX2Q9Sit0aGlzLl9kfDAsdGhpcy5fZT1zZSt0aGlzLl9l''@;'; put 'put ''fDB9LFEucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIFk9RS5hbGxvY1Vuc2FmZSgyMCk7cmV0dXJuIFkud3JpdGVJbnQzMkJFKDB8dGhpcy5fYSwwKSxZLndyaXRlSW50MzJCRSgwfHRoaXMuX2IsNCksWS53cml0ZUludDMyQkUoMHx0aGlzLl9jLDgpLFkud3JpdGVJbnQzMkJFKDB8''@;'; put 'put ''dGhpcy5fZCwxMiksWS53cml0ZUludDMyQkUoMHx0aGlzLl9lLDE2KSxZfSxYZS5leHBvcnRzPVF9LDE3NzM2OihYZSxKZSxMKT0+e3ZhciBtZT1MKDgzODk0KSxCPUwoODY2OTIpLEU9TCg3MzUwMikuQnVmZmVyLEVlPVsxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsLTE4OTQwMDc1ODgsLTg5OTQ5''@;'; put 'put ''NzUxNF0sVT1uZXcgQXJyYXkoODApO2Z1bmN0aW9uIFEoKXt0aGlzLmluaXQoKSx0aGlzLl93PVUsQi5jYWxsKHRoaXMsNjQsNTYpfWZ1bmN0aW9uIGooVyl7cmV0dXJuIFc8PDF8Vz4+PjMxfWZ1bmN0aW9uIHJlKFcpe3JldHVybiBXPDw1fFc+Pj4yN31mdW5jdGlvbiBhZShXKXtyZXR1cm4g''@;'; put 'put ''Vzw8MzB8Vz4+PjJ9ZnVuY3Rpb24gWShXLE4sdGUsSyl7cmV0dXJuIDA9PT1XP04mdGV8fk4mSzoyPT09Vz9OJnRlfE4mS3x0ZSZLOk5edGVeS31tZShRLEIpLFEucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT0xNzMyNTg0MTkzLHRoaXMuX2I9NDAyMzIzMzQxNyx0''@;'; put 'put ''aGlzLl9jPTI1NjIzODMxMDIsdGhpcy5fZD0yNzE3MzM4NzgsdGhpcy5fZT0zMjg1Mzc3NTIwLHRoaXN9LFEucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oVyl7Zm9yKHZhciBOPXRoaXMuX3csdGU9MHx0aGlzLl9hLEs9MHx0aGlzLl9iLEo9MHx0aGlzLl9jLHNlPTB8dGhpcy5fZCxvZT0w''@;'; put 'put ''fHRoaXMuX2UsY2U9MDtjZTwxNjsrK2NlKU5bY2VdPVcucmVhZEludDMyQkUoNCpjZSk7Zm9yKDtjZTw4MDsrK2NlKU5bY2VdPWooTltjZS0zXV5OW2NlLThdXk5bY2UtMTRdXk5bY2UtMTZdKTtmb3IodmFyIGRlPTA7ZGU8ODA7KytkZSl7dmFyIHZlPX5+KGRlLzIwKSxBZT1yZSh0ZSkrWSh2''@;'; put 'put ''ZSxLLEosc2UpK29lK05bZGVdK0VlW3ZlXXwwO29lPXNlLHNlPUosSj1hZShLKSxLPXRlLHRlPUFlfXRoaXMuX2E9dGUrdGhpcy5fYXwwLHRoaXMuX2I9Syt0aGlzLl9ifDAsdGhpcy5fYz1KK3RoaXMuX2N8MCx0aGlzLl9kPXNlK3RoaXMuX2R8MCx0aGlzLl9lPW9lK3RoaXMuX2V8MH0sUS5w''@;'; put 'put ''cm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgVz1FLmFsbG9jVW5zYWZlKDIwKTtyZXR1cm4gVy53cml0ZUludDMyQkUoMHx0aGlzLl9hLDApLFcud3JpdGVJbnQzMkJFKDB8dGhpcy5fYiw0KSxXLndyaXRlSW50MzJCRSgwfHRoaXMuX2MsOCksVy53cml0ZUludDMyQkUoMHx0aGlzLl9k''@;'; put 'put ''LDEyKSxXLndyaXRlSW50MzJCRSgwfHRoaXMuX2UsMTYpLFd9LFhlLmV4cG9ydHM9UX0sMjUwNDQ6KFhlLEplLEwpPT57dmFyIG1lPUwoODM4OTQpLEI9TCgxNTAxNCksRT1MKDg2NjkyKSxFZT1MKDczNTAyKS5CdWZmZXIsVT1uZXcgQXJyYXkoNjQpO2Z1bmN0aW9uIFEoKXt0aGlzLmluaXQo''@;'; put 'put ''KSx0aGlzLl93PVUsRS5jYWxsKHRoaXMsNjQsNTYpfW1lKFEsQiksUS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPTMyMzgzNzEwMzIsdGhpcy5fYj05MTQxNTA2NjMsdGhpcy5fYz04MTI3MDI5OTksdGhpcy5fZD00MTQ0OTEyNjk3LHRoaXMuX2U9NDI5MDc3NTg1''@;'; put 'put ''Nyx0aGlzLl9mPTE3NTA2MDMwMjUsdGhpcy5fZz0xNjk0MDc2ODM5LHRoaXMuX2g9MzIwNDA3NTQyOCx0aGlzfSxRLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBqPUVlLmFsbG9jVW5zYWZlKDI4KTtyZXR1cm4gai53cml0ZUludDMyQkUodGhpcy5fYSwwKSxqLndyaXRlSW50MzJC''@;'; put 'put ''RSh0aGlzLl9iLDQpLGoud3JpdGVJbnQzMkJFKHRoaXMuX2MsOCksai53cml0ZUludDMyQkUodGhpcy5fZCwxMiksai53cml0ZUludDMyQkUodGhpcy5fZSwxNiksai53cml0ZUludDMyQkUodGhpcy5fZiwyMCksai53cml0ZUludDMyQkUodGhpcy5fZywyNCksan0sWGUuZXhwb3J0cz1RfSwx''@;'; put 'put ''NTAxNDooWGUsSmUsTCk9Pnt2YXIgbWU9TCg4Mzg5NCksQj1MKDg2NjkyKSxFPUwoNzM1MDIpLkJ1ZmZlcixFZT1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwz''@;'; put 'put ''MTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIy''@;'; put 'put ''MDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3''@;'; put 'put ''LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4''@;'; put 'put ''NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XSxVPW5ldyBBcnJheSg2NCk7ZnVuY3Rpb24gUSgpe3RoaXMuaW5pdCgpLHRoaXMuX3c9VSxCLmNhbGwodGhpcyw2NCw1Nil9''@;'; put 'put ''ZnVuY3Rpb24gaih0ZSxLLEope3JldHVybiBKXnRlJihLXkopfWZ1bmN0aW9uIHJlKHRlLEssSil7cmV0dXJuIHRlJkt8SiYodGV8Syl9ZnVuY3Rpb24gYWUodGUpe3JldHVybih0ZT4+PjJ8dGU8PDMwKV4odGU+Pj4xM3x0ZTw8MTkpXih0ZT4+PjIyfHRlPDwxMCl9ZnVuY3Rpb24gWSh0ZSl7''@;'; put 'put ''cmV0dXJuKHRlPj4+Nnx0ZTw8MjYpXih0ZT4+PjExfHRlPDwyMSleKHRlPj4+MjV8dGU8PDcpfWZ1bmN0aW9uIFcodGUpe3JldHVybih0ZT4+Pjd8dGU8PDI1KV4odGU+Pj4xOHx0ZTw8MTQpXnRlPj4+M31mdW5jdGlvbiBOKHRlKXtyZXR1cm4odGU+Pj4xN3x0ZTw8MTUpXih0ZT4+PjE5fHRl''@;'; put 'put ''PDwxMyledGU+Pj4xMH1tZShRLEIpLFEucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT0xNzc5MDMzNzAzLHRoaXMuX2I9MzE0NDEzNDI3Nyx0aGlzLl9jPTEwMTM5MDQyNDIsdGhpcy5fZD0yNzczNDgwNzYyLHRoaXMuX2U9MTM1OTg5MzExOSx0aGlzLl9mPTI2MDA4''@;'; put 'put ''MjI5MjQsdGhpcy5fZz01Mjg3MzQ2MzUsdGhpcy5faD0xNTQxNDU5MjI1LHRoaXN9LFEucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odGUpe2Zvcih2YXIgSz10aGlzLl93LEo9MHx0aGlzLl9hLHNlPTB8dGhpcy5fYixvZT0wfHRoaXMuX2MsY2U9MHx0aGlzLl9kLGRlPTB8dGhpcy5fZSx2''@;'; put 'put ''ZT0wfHRoaXMuX2YsQWU9MHx0aGlzLl9nLGtlPTB8dGhpcy5faCxTZT0wO1NlPDE2OysrU2UpS1tTZV09dGUucmVhZEludDMyQkUoNCpTZSk7Zm9yKDtTZTw2NDsrK1NlKUtbU2VdPU4oS1tTZS0yXSkrS1tTZS03XStXKEtbU2UtMTVdKStLW1NlLTE2XXwwO2Zvcih2YXIgSWU9MDtJZTw2NDsr''@;'; put 'put ''K0llKXt2YXIgVGU9a2UrWShkZSkraihkZSx2ZSxBZSkrRWVbSWVdK0tbSWVdfDAsTWU9YWUoSikrcmUoSixzZSxvZSl8MDtrZT1BZSxBZT12ZSx2ZT1kZSxkZT1jZStUZXwwLGNlPW9lLG9lPXNlLHNlPUosSj1UZStNZXwwfXRoaXMuX2E9Sit0aGlzLl9hfDAsdGhpcy5fYj1zZSt0aGlzLl9i''@;'; put 'put ''fDAsdGhpcy5fYz1vZSt0aGlzLl9jfDAsdGhpcy5fZD1jZSt0aGlzLl9kfDAsdGhpcy5fZT1kZSt0aGlzLl9lfDAsdGhpcy5fZj12ZSt0aGlzLl9mfDAsdGhpcy5fZz1BZSt0aGlzLl9nfDAsdGhpcy5faD1rZSt0aGlzLl9ofDB9LFEucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIHRl''@;'; put 'put ''PUUuYWxsb2NVbnNhZmUoMzIpO3JldHVybiB0ZS53cml0ZUludDMyQkUodGhpcy5fYSwwKSx0ZS53cml0ZUludDMyQkUodGhpcy5fYiw0KSx0ZS53cml0ZUludDMyQkUodGhpcy5fYyw4KSx0ZS53cml0ZUludDMyQkUodGhpcy5fZCwxMiksdGUud3JpdGVJbnQzMkJFKHRoaXMuX2UsMTYpLHRl''@;'; put 'put ''LndyaXRlSW50MzJCRSh0aGlzLl9mLDIwKSx0ZS53cml0ZUludDMyQkUodGhpcy5fZywyNCksdGUud3JpdGVJbnQzMkJFKHRoaXMuX2gsMjgpLHRlfSxYZS5leHBvcnRzPVF9LDc2NTQwOihYZSxKZSxMKT0+e3ZhciBtZT1MKDgzODk0KSxCPUwoMTAxMTcpLEU9TCg4NjY5MiksRWU9TCg3MzUw''@;'; put 'put ''MikuQnVmZmVyLFU9bmV3IEFycmF5KDE2MCk7ZnVuY3Rpb24gUSgpe3RoaXMuaW5pdCgpLHRoaXMuX3c9VSxFLmNhbGwodGhpcywxMjgsMTEyKX1tZShRLEIpLFEucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWg9MzQxODA3MDM2NSx0aGlzLl9iaD0xNjU0MjcwMjUw''@;'; put 'put ''LHRoaXMuX2NoPTI0Mzg1MjkzNzAsdGhpcy5fZGg9MzU1NDYyMzYwLHRoaXMuX2VoPTE3MzE0MDU0MTUsdGhpcy5fZmg9MjM5NDE4MDIzMSx0aGlzLl9naD0zNjc1MDA4NTI1LHRoaXMuX2hoPTEyMDMwNjI4MTMsdGhpcy5fYWw9MzIzODM3MTAzMix0aGlzLl9ibD05MTQxNTA2NjMsdGhpcy5f''@;'; put 'put ''Y2w9ODEyNzAyOTk5LHRoaXMuX2RsPTQxNDQ5MTI2OTcsdGhpcy5fZWw9NDI5MDc3NTg1Nyx0aGlzLl9mbD0xNzUwNjAzMDI1LHRoaXMuX2dsPTE2OTQwNzY4MzksdGhpcy5faGw9MzIwNDA3NTQyOCx0aGlzfSxRLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBqPUVlLmFsbG9jVW5z''@;'; put 'put ''YWZlKDQ4KTtmdW5jdGlvbiByZShhZSxZLFcpe2oud3JpdGVJbnQzMkJFKGFlLFcpLGoud3JpdGVJbnQzMkJFKFksVys0KX1yZXR1cm4gcmUodGhpcy5fYWgsdGhpcy5fYWwsMCkscmUodGhpcy5fYmgsdGhpcy5fYmwsOCkscmUodGhpcy5fY2gsdGhpcy5fY2wsMTYpLHJlKHRoaXMuX2RoLHRo''@;'; put 'put ''aXMuX2RsLDI0KSxyZSh0aGlzLl9laCx0aGlzLl9lbCwzMikscmUodGhpcy5fZmgsdGhpcy5fZmwsNDApLGp9LFhlLmV4cG9ydHM9UX0sMTAxMTc6KFhlLEplLEwpPT57dmFyIG1lPUwoODM4OTQpLEI9TCg4NjY5MiksRT1MKDczNTAyKS5CdWZmZXIsRWU9WzExMTYzNTI0MDgsMzYwOTc2NzQ1''@;'; put 'put ''OCwxODk5NDQ3NDQxLDYwMjg5MTcyNSwzMDQ5MzIzNDcxLDM5NjQ0ODQzOTksMzkyMTAwOTU3MywyMTczMjk1NTQ4LDk2MTk4NzE2Myw0MDgxNjI4NDcyLDE1MDg5NzA5OTMsMzA1MzgzNDI2NSwyNDUzNjM1NzQ4LDI5Mzc2NzE1NzksMjg3MDc2MzIyMSwzNjY0NjA5NTYwLDM2MjQzODEwODAs''@;'; put 'put ''MjczNDg4MzM5NCwzMTA1OTg0MDEsMTE2NDk5NjU0Miw2MDcyMjUyNzgsMTMyMzYxMDc2NCwxNDI2ODgxOTg3LDM1OTAzMDQ5OTQsMTkyNTA3ODM4OCw0MDY4MTgyMzgzLDIxNjIwNzgyMDYsOTkxMzM2MTEzLDI2MTQ4ODgxMDMsNjMzODAzMzE3LDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCwzODM1''@;'; put 'put ''MzkwNDAxLDI2NjY2MTM0NTgsNDAyMjIyNDc3NCw5NDQ3MTExMzksMjY0MzQ3MDc4LDIzNDEyNjI3NzMsNjA0ODA3NjI4LDIwMDc4MDA5MzMsNzcwMjU1OTgzLDE0OTU5OTA5MDEsMTI0OTE1MDEyMiwxODU2NDMxMjM1LDE1NTUwODE2OTIsMzE3NTIxODEzMiwxOTk2MDY0OTg2LDIxOTg5NTA4''@;'; put 'put ''MzcsMjU1NDIyMDg4MiwzOTk5NzE5MzM5LDI4MjE4MzQzNDksNzY2Nzg0MDE2LDI5NTI5OTY4MDgsMjU2NjU5NDg3OSwzMjEwMzEzNjcxLDMyMDMzMzc5NTYsMzMzNjU3MTg5MSwxMDM0NDU3MDI2LDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSwxMTM5MjY5OTMsMzc1ODMyNjM4MywzMzgyNDE4OTUs''@;'; put 'put ''MTY4NzE3OTM2LDY2NjMwNzIwNSwxMTg4MTc5OTY0LDc3MzUyOTkxMiwxNTQ2MDQ1NzM0LDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSwxMzk2MTgyMjkxLDI2NDM4MzM4MjMsMTY5NTE4MzcwMCwyMzQzNTI3MzkwLDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCwyMTc3MDI2MzUwLDEyMDY3NTkxNDIsMjQ1''@;'; put 'put ''Njk1NjAzNywzNDQwNzc2MjcsMjczMDQ4NTkyMSwxMjkwODYzNDYwLDI4MjAzMDI0MTEsMzE1ODQ1NDI3MywzMjU5NzMwODAwLDM1MDU5NTI2NTcsMzM0NTc2NDc3MSwxMDYyMTcwMDgsMzUxNjA2NTgxNywzNjA2MDA4MzQ0LDM2MDAzNTI4MDQsMTQzMjcyNTc3Niw0MDk0NTcxOTA5LDE0Njcw''@;'; put 'put ''MzE1OTQsMjc1NDIzMzQ0LDg1MTE2OTcyMCw0MzAyMjc3MzQsMzEwMDgyMzc1Miw1MDY5NDg2MTYsMTM2MzI1ODE5NSw2NTkwNjA1NTYsMzc1MDY4NTU5Myw4ODM5OTc4NzcsMzc4NTA1MDI4MCw5NTgxMzk1NzEsMzMxODMwNzQyNywxMzIyODIyMjE4LDM4MTI3MjM0MDMsMTUzNzAwMjA2Mywy''@;'; put 'put ''MDAzMDM0OTk1LDE3NDc4NzM3NzksMzYwMjAzNjg5OSwxOTU1NTYyMjIyLDE1NzU5OTAwMTIsMjAyNDEwNDgxNSwxMTI1NTkyOTI4LDIyMjc3MzA0NTIsMjcxNjkwNDMwNiwyMzYxODUyNDI0LDQ0Mjc3NjA0NCwyNDI4NDM2NDc0LDU5MzY5ODM0NCwyNzU2NzM0MTg3LDM3MzMxMTAyNDksMzIw''@;'; put 'put ''NDAzMTQ3OSwyOTk5MzUxNTczLDMzMjkzMjUyOTgsMzgxNTkyMDQyNywzMzkxNTY5NjE0LDM5MjgzODM5MDAsMzUxNTI2NzI3MSw1NjYyODA3MTEsMzk0MDE4NzYwNiwzNDU0MDY5NTM0LDQxMTg2MzAyNzEsNDAwMDIzOTk5MiwxMTY0MTg0NzQsMTkxNDEzODU1NCwxNzQyOTI0MjEsMjczMTA1''@;'; put 'put ''NTI3MCwyODkzODAzNTYsMzIwMzk5MzAwNiw0NjAzOTMyNjksMzIwNjIwMzE1LDY4NTQ3MTczMyw1ODc0OTY4MzYsODUyMTQyOTcxLDEwODY3OTI4NTEsMTAxNzAzNjI5OCwzNjU1NDMxMDAsMTEyNjAwMDU4MCwyNjE4Mjk3Njc2LDEyODgwMzM0NzAsMzQwOTg1NTE1OCwxNTAxNTA1OTQ4LDQy''@;'; put 'put ''MzQ1MDk4NjYsMTYwNzE2NzkxNSw5ODcxNjc0NjgsMTgxNjQwMjMxNiwxMjQ2MTg5NTkxXSxVPW5ldyBBcnJheSgxNjApO2Z1bmN0aW9uIFEoKXt0aGlzLmluaXQoKSx0aGlzLl93PVUsQi5jYWxsKHRoaXMsMTI4LDExMil9ZnVuY3Rpb24gaihzZSxvZSxjZSl7cmV0dXJuIGNlXnNlJihvZV5j''@;'; put 'put ''ZSl9ZnVuY3Rpb24gcmUoc2Usb2UsY2Upe3JldHVybiBzZSZvZXxjZSYoc2V8b2UpfWZ1bmN0aW9uIGFlKHNlLG9lKXtyZXR1cm4oc2U+Pj4yOHxvZTw8NCleKG9lPj4+MnxzZTw8MzApXihvZT4+Pjd8c2U8PDI1KX1mdW5jdGlvbiBZKHNlLG9lKXtyZXR1cm4oc2U+Pj4xNHxvZTw8MTgpXihz''@;'; put 'put ''ZT4+PjE4fG9lPDwxNCleKG9lPj4+OXxzZTw8MjMpfWZ1bmN0aW9uIFcoc2Usb2Upe3JldHVybihzZT4+PjF8b2U8PDMxKV4oc2U+Pj44fG9lPDwyNClec2U+Pj43fWZ1bmN0aW9uIE4oc2Usb2Upe3JldHVybihzZT4+PjF8b2U8PDMxKV4oc2U+Pj44fG9lPDwyNCleKHNlPj4+N3xvZTw8MjUp''@;'; put 'put ''fWZ1bmN0aW9uIHRlKHNlLG9lKXtyZXR1cm4oc2U+Pj4xOXxvZTw8MTMpXihvZT4+PjI5fHNlPDwzKV5zZT4+PjZ9ZnVuY3Rpb24gSyhzZSxvZSl7cmV0dXJuKHNlPj4+MTl8b2U8PDEzKV4ob2U+Pj4yOXxzZTw8MyleKHNlPj4+NnxvZTw8MjYpfWZ1bmN0aW9uIEooc2Usb2Upe3JldHVybiBz''@;'; put 'put ''ZT4+PjA8b2U+Pj4wPzE6MH1tZShRLEIpLFEucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWg9MTc3OTAzMzcwMyx0aGlzLl9iaD0zMTQ0MTM0Mjc3LHRoaXMuX2NoPTEwMTM5MDQyNDIsdGhpcy5fZGg9Mjc3MzQ4MDc2Mix0aGlzLl9laD0xMzU5ODkzMTE5LHRoaXMu''@;'; put 'put ''X2ZoPTI2MDA4MjI5MjQsdGhpcy5fZ2g9NTI4NzM0NjM1LHRoaXMuX2hoPTE1NDE0NTkyMjUsdGhpcy5fYWw9NDA4OTIzNTcyMCx0aGlzLl9ibD0yMjI3ODczNTk1LHRoaXMuX2NsPTQyNzExNzU3MjMsdGhpcy5fZGw9MTU5NTc1MDEyOSx0aGlzLl9lbD0yOTE3NTY1MTM3LHRoaXMuX2ZsPTcy''@;'; put 'put ''NTUxMTE5OSx0aGlzLl9nbD00MjE1Mzg5NTQ3LHRoaXMuX2hsPTMyNzAzMzIwOSx0aGlzfSxRLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHNlKXtmb3IodmFyIG9lPXRoaXMuX3csY2U9MHx0aGlzLl9haCxkZT0wfHRoaXMuX2JoLHZlPTB8dGhpcy5fY2gsQWU9MHx0aGlzLl9kaCxrZT0w''@;'; put 'put ''fHRoaXMuX2VoLFNlPTB8dGhpcy5fZmgsSWU9MHx0aGlzLl9naCxUZT0wfHRoaXMuX2hoLE1lPTB8dGhpcy5fYWwsaGU9MHx0aGlzLl9ibCxPPTB8dGhpcy5fY2wsej0wfHRoaXMuX2RsLGVlPTB8dGhpcy5fZWwsbmU9MHx0aGlzLl9mbCx4PTB8dGhpcy5fZ2wsUD0wfHRoaXMuX2hsLFY9MDtW''@;'; put 'put ''PDMyO1YrPTIpb2VbVl09c2UucmVhZEludDMyQkUoNCpWKSxvZVtWKzFdPXNlLnJlYWRJbnQzMkJFKDQqVis0KTtmb3IoO1Y8MTYwO1YrPTIpe3ZhciBUPW9lW1YtMzBdLFM9b2VbVi0zMCsxXSxGPVcoVCxTKSx5ZT1OKFMsVCksQ2U9dGUoVD1vZVtWLTRdLFM9b2VbVi00KzFdKSxEZT1LKFMs''@;'; put 'put ''VCksJGU9b2VbVi0zMl0sZ3Q9b2VbVi0zMisxXSx3dD15ZStvZVtWLTE0KzFdfDAsbXQ9RitvZVtWLTE0XStKKHd0LHllKXwwO210PShtdD1tdCtDZStKKHd0PXd0K0RlfDAsRGUpfDApKyRlK0ood3Q9d3QrZ3R8MCxndCl8MCxvZVtWXT1tdCxvZVtWKzFdPXd0fWZvcih2YXIgdnQ9MDt2dDwx''@;'; put 'put ''NjA7dnQrPTIpe210PW9lW3Z0XSx3dD1vZVt2dCsxXTt2YXIgQXQ9cmUoY2UsZGUsdmUpLGh0PXJlKE1lLGhlLE8pLEJ0PWFlKGNlLE1lKSxvbj1hZShNZSxjZSksX3Q9WShrZSxlZSksdHQ9WShlZSxrZSksZXQ9RWVbdnRdLGx0PUVlW3Z0KzFdLEx0PWooa2UsU2UsSWUpLEN0PWooZWUsbmUs''@;'; put 'put ''eCksZnQ9UCt0dHwwLEh0PVRlK190K0ooZnQsUCl8MDtIdD0oSHQ9KEh0PUh0K0x0K0ooZnQ9ZnQrQ3R8MCxDdCl8MCkrZXQrSihmdD1mdCtsdHwwLGx0KXwwKSttdCtKKGZ0PWZ0K3d0fDAsd3QpfDA7dmFyIEdlPW9uK2h0fDAsVWU9QnQrQXQrSihHZSxvbil8MDtUZT1JZSxQPXgsSWU9U2Us''@;'; put 'put ''eD1uZSxTZT1rZSxuZT1lZSxrZT1BZStIdCtKKGVlPXorZnR8MCx6KXwwLEFlPXZlLHo9Tyx2ZT1kZSxPPWhlLGRlPWNlLGhlPU1lLGNlPUh0K1VlK0ooTWU9ZnQrR2V8MCxmdCl8MH10aGlzLl9hbD10aGlzLl9hbCtNZXwwLHRoaXMuX2JsPXRoaXMuX2JsK2hlfDAsdGhpcy5fY2w9dGhpcy5f''@;'; put 'put ''Y2wrT3wwLHRoaXMuX2RsPXRoaXMuX2RsK3p8MCx0aGlzLl9lbD10aGlzLl9lbCtlZXwwLHRoaXMuX2ZsPXRoaXMuX2ZsK25lfDAsdGhpcy5fZ2w9dGhpcy5fZ2wreHwwLHRoaXMuX2hsPXRoaXMuX2hsK1B8MCx0aGlzLl9haD10aGlzLl9haCtjZStKKHRoaXMuX2FsLE1lKXwwLHRoaXMuX2Jo''@;'; put 'put ''PXRoaXMuX2JoK2RlK0oodGhpcy5fYmwsaGUpfDAsdGhpcy5fY2g9dGhpcy5fY2grdmUrSih0aGlzLl9jbCxPKXwwLHRoaXMuX2RoPXRoaXMuX2RoK0FlK0oodGhpcy5fZGwseil8MCx0aGlzLl9laD10aGlzLl9laCtrZStKKHRoaXMuX2VsLGVlKXwwLHRoaXMuX2ZoPXRoaXMuX2ZoK1NlK0oo''@;'; put 'put ''dGhpcy5fZmwsbmUpfDAsdGhpcy5fZ2g9dGhpcy5fZ2grSWUrSih0aGlzLl9nbCx4KXwwLHRoaXMuX2hoPXRoaXMuX2hoK1RlK0oodGhpcy5faGwsUCl8MH0sUS5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgc2U9RS5hbGxvY1Vuc2FmZSg2NCk7ZnVuY3Rpb24gb2UoY2UsZGUsdmUp''@;'; put 'put ''e3NlLndyaXRlSW50MzJCRShjZSx2ZSksc2Uud3JpdGVJbnQzMkJFKGRlLHZlKzQpfXJldHVybiBvZSh0aGlzLl9haCx0aGlzLl9hbCwwKSxvZSh0aGlzLl9iaCx0aGlzLl9ibCw4KSxvZSh0aGlzLl9jaCx0aGlzLl9jbCwxNiksb2UodGhpcy5fZGgsdGhpcy5fZGwsMjQpLG9lKHRoaXMuX2Vo''@;'; put 'put ''LHRoaXMuX2VsLDMyKSxvZSh0aGlzLl9maCx0aGlzLl9mbCw0MCksb2UodGhpcy5fZ2gsdGhpcy5fZ2wsNDgpLG9lKHRoaXMuX2hoLHRoaXMuX2hsLDU2KSxzZX0sWGUuZXhwb3J0cz1RfSwyOTU6KFhlLEplLEwpPT57WGUuZXhwb3J0cz1FO3ZhciBtZT1MKDU5MDY5KS5FdmVudEVtaXR0ZXI7''@;'; put 'put ''ZnVuY3Rpb24gRSgpe21lLmNhbGwodGhpcyl9TCg4Mzg5NCkoRSxtZSksRS5SZWFkYWJsZT1MKDMxNTQpLEUuV3JpdGFibGU9TCgyMDUyMCksRS5EdXBsZXg9TCg0MTMzOSksRS5UcmFuc2Zvcm09TCg2MDI1KSxFLlBhc3NUaHJvdWdoPUwoNTYwNzEpLEUuZmluaXNoZWQ9TCg2NzU0MiksRS5w''@;'; put 'put ''aXBlbGluZT1MKDkwOTU0KSxFLlN0cmVhbT1FLEUucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oRWUsVSl7dmFyIFE9dGhpcztmdW5jdGlvbiBqKEspe0VlLndyaXRhYmxlJiYhMT09PUVlLndyaXRlKEspJiZRLnBhdXNlJiZRLnBhdXNlKCl9ZnVuY3Rpb24gcmUoKXtRLnJlYWRhYmxlJiZRLnJl''@;'; put 'put ''c3VtZSYmUS5yZXN1bWUoKX1RLm9uKCJkYXRhIixqKSxFZS5vbigiZHJhaW4iLHJlKSwhRWUuX2lzU3RkaW8mJighVXx8ITEhPT1VLmVuZCkmJihRLm9uKCJlbmQiLFkpLFEub24oImNsb3NlIixXKSk7dmFyIGFlPSExO2Z1bmN0aW9uIFkoKXthZXx8KGFlPSEwLEVlLmVuZCgpKX1mdW5jdGlv''@;'; put 'put ''biBXKCl7YWV8fChhZT0hMCwiZnVuY3Rpb24iPT10eXBlb2YgRWUuZGVzdHJveSYmRWUuZGVzdHJveSgpKX1mdW5jdGlvbiBOKEspe2lmKHRlKCksMD09PW1lLmxpc3RlbmVyQ291bnQodGhpcywiZXJyb3IiKSl0aHJvdyBLfWZ1bmN0aW9uIHRlKCl7US5yZW1vdmVMaXN0ZW5lcigiZGF0YSIs''@;'; put 'put ''aiksRWUucmVtb3ZlTGlzdGVuZXIoImRyYWluIixyZSksUS5yZW1vdmVMaXN0ZW5lcigiZW5kIixZKSxRLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsVyksUS5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLE4pLEVlLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsTiksUS5yZW1vdmVMaXN0ZW5lcigiZW5k''@;'; put 'put ''Iix0ZSksUS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLHRlKSxFZS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLHRlKX1yZXR1cm4gUS5vbigiZXJyb3IiLE4pLEVlLm9uKCJlcnJvciIsTiksUS5vbigiZW5kIix0ZSksUS5vbigiY2xvc2UiLHRlKSxFZS5vbigiY2xvc2UiLHRlKSxFZS5lbWl0KCJw''@;'; put 'put ''aXBlIixRKSxFZX19LDczMDU0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgzMDg1OCkuQnVmZmVyLEI9bWUuaXNFbmNvZGluZ3x8ZnVuY3Rpb24oY2Upe3N3aXRjaCgoY2U9IiIrY2UpJiZjZS50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04''@;'; put 'put ''IjpjYXNlImFzY2lpIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpjYXNlInJhdyI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19O2Z1bmN0aW9uIFUoY2Upe3ZhciBkZTtzd2l0Y2godGhpcy5l''@;'; put 'put ''bmNvZGluZz1mdW5jdGlvbiBFZShjZSl7dmFyIGRlPWZ1bmN0aW9uIEUoY2Upe2lmKCFjZSlyZXR1cm4idXRmOCI7Zm9yKHZhciBkZTs7KXN3aXRjaChjZSl7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4idXRmOCI7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNh''@;'; put 'put ''c2UidXRmLTE2bGUiOnJldHVybiJ1dGYxNmxlIjtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiJsYXRpbjEiO2Nhc2UiYmFzZTY0IjpjYXNlImFzY2lpIjpjYXNlImhleCI6cmV0dXJuIGNlO2RlZmF1bHQ6aWYoZGUpcmV0dXJuO2NlPSgiIitjZSkudG9Mb3dlckNhc2UoKSxkZT0h''@;'; put 'put ''MH19KGNlKTtpZigic3RyaW5nIiE9dHlwZW9mIGRlJiYobWUuaXNFbmNvZGluZz09PUJ8fCFCKGNlKSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2NlKTtyZXR1cm4gZGV8fGNlfShjZSksdGhpcy5lbmNvZGluZyl7Y2FzZSJ1dGYxNmxlIjp0aGlzLnRleHQ9Tix0aGlz''@;'; put 'put ''LmVuZD10ZSxkZT00O2JyZWFrO2Nhc2UidXRmOCI6dGhpcy5maWxsTGFzdD1hZSxkZT00O2JyZWFrO2Nhc2UiYmFzZTY0Ijp0aGlzLnRleHQ9Syx0aGlzLmVuZD1KLGRlPTM7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gdGhpcy53cml0ZT1zZSx2b2lkKHRoaXMuZW5kPW9lKX10aGlzLmxhc3ROZWVk''@;'; put 'put ''PTAsdGhpcy5sYXN0VG90YWw9MCx0aGlzLmxhc3RDaGFyPW1lLmFsbG9jVW5zYWZlKGRlKX1mdW5jdGlvbiBRKGNlKXtyZXR1cm4gY2U8PTEyNz8wOmNlPj41PT02PzI6Y2U+PjQ9PTE0PzM6Y2U+PjM9PTMwPzQ6Y2U+PjY9PTI/LTE6LTJ9ZnVuY3Rpb24gYWUoY2Upe3ZhciBkZT10aGlzLmxh''@;'; put 'put ''c3RUb3RhbC10aGlzLmxhc3ROZWVkLHZlPWZ1bmN0aW9uIHJlKGNlLGRlLHZlKXtpZigxMjghPSgxOTImZGVbMF0pKXJldHVybiBjZS5sYXN0TmVlZD0wLCJcdWZmZmQiO2lmKGNlLmxhc3ROZWVkPjEmJmRlLmxlbmd0aD4xKXtpZigxMjghPSgxOTImZGVbMV0pKXJldHVybiBjZS5sYXN0TmVl''@;'; put 'put ''ZD0xLCJcdWZmZmQiO2lmKGNlLmxhc3ROZWVkPjImJmRlLmxlbmd0aD4yJiYxMjghPSgxOTImZGVbMl0pKXJldHVybiBjZS5sYXN0TmVlZD0yLCJcdWZmZmQifX0odGhpcyxjZSk7cmV0dXJuIHZvaWQgMCE9PXZlP3ZlOnRoaXMubGFzdE5lZWQ8PWNlLmxlbmd0aD8oY2UuY29weSh0aGlzLmxh''@;'; put 'put ''c3RDaGFyLGRlLDAsdGhpcy5sYXN0TmVlZCksdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLDAsdGhpcy5sYXN0VG90YWwpKTooY2UuY29weSh0aGlzLmxhc3RDaGFyLGRlLDAsY2UubGVuZ3RoKSx2b2lkKHRoaXMubGFzdE5lZWQtPWNlLmxlbmd0aCkpfWZ1bmN0aW9uIE4o''@;'; put 'put ''Y2UsZGUpe2lmKChjZS5sZW5ndGgtZGUpJTI9PTApe3ZhciB2ZT1jZS50b1N0cmluZygidXRmMTZsZSIsZGUpO2lmKHZlKXt2YXIgQWU9dmUuY2hhckNvZGVBdCh2ZS5sZW5ndGgtMSk7aWYoQWU+PTU1Mjk2JiZBZTw9NTYzMTkpcmV0dXJuIHRoaXMubGFzdE5lZWQ9Mix0aGlzLmxhc3RUb3Rh''@;'; put 'put ''bD00LHRoaXMubGFzdENoYXJbMF09Y2VbY2UubGVuZ3RoLTJdLHRoaXMubGFzdENoYXJbMV09Y2VbY2UubGVuZ3RoLTFdLHZlLnNsaWNlKDAsLTEpfXJldHVybiB2ZX1yZXR1cm4gdGhpcy5sYXN0TmVlZD0xLHRoaXMubGFzdFRvdGFsPTIsdGhpcy5sYXN0Q2hhclswXT1jZVtjZS5sZW5ndGgt''@;'; put 'put ''MV0sY2UudG9TdHJpbmcoInV0ZjE2bGUiLGRlLGNlLmxlbmd0aC0xKX1mdW5jdGlvbiB0ZShjZSl7dmFyIGRlPWNlJiZjZS5sZW5ndGg/dGhpcy53cml0ZShjZSk6IiI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/ZGUrdGhpcy5sYXN0Q2hhci50b1N0cmluZygidXRmMTZsZSIsMCx0aGlzLmxhc3RU''@;'; put 'put ''b3RhbC10aGlzLmxhc3ROZWVkKTpkZX1mdW5jdGlvbiBLKGNlLGRlKXt2YXIgdmU9KGNlLmxlbmd0aC1kZSklMztyZXR1cm4gMD09PXZlP2NlLnRvU3RyaW5nKCJiYXNlNjQiLGRlKToodGhpcy5sYXN0TmVlZD0zLXZlLHRoaXMubGFzdFRvdGFsPTMsMT09PXZlP3RoaXMubGFzdENoYXJbMF09''@;'; put 'put ''Y2VbY2UubGVuZ3RoLTFdOih0aGlzLmxhc3RDaGFyWzBdPWNlW2NlLmxlbmd0aC0yXSx0aGlzLmxhc3RDaGFyWzFdPWNlW2NlLmxlbmd0aC0xXSksY2UudG9TdHJpbmcoImJhc2U2NCIsZGUsY2UubGVuZ3RoLXZlKSl9ZnVuY3Rpb24gSihjZSl7dmFyIGRlPWNlJiZjZS5sZW5ndGg/dGhpcy53''@;'; put 'put ''cml0ZShjZSk6IiI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/ZGUrdGhpcy5sYXN0Q2hhci50b1N0cmluZygiYmFzZTY0IiwwLDMtdGhpcy5sYXN0TmVlZCk6ZGV9ZnVuY3Rpb24gc2UoY2Upe3JldHVybiBjZS50b1N0cmluZyh0aGlzLmVuY29kaW5nKX1mdW5jdGlvbiBvZShjZSl7cmV0dXJuIGNl''@;'; put 'put ''JiZjZS5sZW5ndGg/dGhpcy53cml0ZShjZSk6IiJ9SmUucz1VLFUucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGNlKXtpZigwPT09Y2UubGVuZ3RoKXJldHVybiIiO3ZhciBkZSx2ZTtpZih0aGlzLmxhc3ROZWVkKXtpZih2b2lkIDA9PT0oZGU9dGhpcy5maWxsTGFzdChjZSkpKXJldHVybiIi''@;'; put 'put ''O3ZlPXRoaXMubGFzdE5lZWQsdGhpcy5sYXN0TmVlZD0wfWVsc2UgdmU9MDtyZXR1cm4gdmU8Y2UubGVuZ3RoP2RlP2RlK3RoaXMudGV4dChjZSx2ZSk6dGhpcy50ZXh0KGNlLHZlKTpkZXx8IiJ9LFUucHJvdG90eXBlLmVuZD1mdW5jdGlvbiBXKGNlKXt2YXIgZGU9Y2UmJmNlLmxlbmd0aD90''@;'; put 'put ''aGlzLndyaXRlKGNlKToiIjtyZXR1cm4gdGhpcy5sYXN0TmVlZD9kZSsiXHVmZmZkIjpkZX0sVS5wcm90b3R5cGUudGV4dD1mdW5jdGlvbiBZKGNlLGRlKXt2YXIgdmU9ZnVuY3Rpb24gaihjZSxkZSx2ZSl7dmFyIEFlPWRlLmxlbmd0aC0xO2lmKEFlPHZlKXJldHVybiAwO3ZhciBrZT1RKGRl''@;'; put 'put ''W0FlXSk7cmV0dXJuIGtlPj0wPyhrZT4wJiYoY2UubGFzdE5lZWQ9a2UtMSksa2UpOi0tQWU8dmV8fC0yPT09a2U/MDooa2U9UShkZVtBZV0pKT49MD8oa2U+MCYmKGNlLmxhc3ROZWVkPWtlLTIpLGtlKTotLUFlPHZlfHwtMj09PWtlPzA6KGtlPVEoZGVbQWVdKSk+PTA/KGtlPjAmJigyPT09''@;'; put 'put ''a2U/a2U9MDpjZS5sYXN0TmVlZD1rZS0zKSxrZSk6MH0odGhpcyxjZSxkZSk7aWYoIXRoaXMubGFzdE5lZWQpcmV0dXJuIGNlLnRvU3RyaW5nKCJ1dGY4IixkZSk7dGhpcy5sYXN0VG90YWw9dmU7dmFyIEFlPWNlLmxlbmd0aC0odmUtdGhpcy5sYXN0TmVlZCk7cmV0dXJuIGNlLmNvcHkodGhp''@;'; put 'put ''cy5sYXN0Q2hhciwwLEFlKSxjZS50b1N0cmluZygidXRmOCIsZGUsQWUpfSxVLnByb3RvdHlwZS5maWxsTGFzdD1mdW5jdGlvbihjZSl7aWYodGhpcy5sYXN0TmVlZDw9Y2UubGVuZ3RoKXJldHVybiBjZS5jb3B5KHRoaXMubGFzdENoYXIsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCww''@;'; put 'put ''LHRoaXMubGFzdE5lZWQpLHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKTtjZS5jb3B5KHRoaXMubGFzdENoYXIsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCwwLGNlLmxlbmd0aCksdGhpcy5sYXN0TmVlZC09Y2UubGVuZ3RofX0sMzA4''@;'; put 'put ''NTg6KFhlLEplLEwpPT57dmFyIG1lPUwoOTMxNzIpLEI9bWUuQnVmZmVyO2Z1bmN0aW9uIEUoVSxRKXtmb3IodmFyIGogaW4gVSlRW2pdPVVbal19ZnVuY3Rpb24gRWUoVSxRLGope3JldHVybiBCKFUsUSxqKX1CLmZyb20mJkIuYWxsb2MmJkIuYWxsb2NVbnNhZmUmJkIuYWxsb2NVbnNhZmVT''@;'; put 'put ''bG93P1hlLmV4cG9ydHM9bWU6KEUobWUsSmUpLEplLkJ1ZmZlcj1FZSksRWUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQi5wcm90b3R5cGUpLEUoQixFZSksRWUuZnJvbT1mdW5jdGlvbihVLFEsail7aWYoIm51bWJlciI9PXR5cGVvZiBVKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50''@;'; put 'put ''IG11c3Qgbm90IGJlIGEgbnVtYmVyIik7cmV0dXJuIEIoVSxRLGopfSxFZS5hbGxvYz1mdW5jdGlvbihVLFEsail7aWYoIm51bWJlciIhPXR5cGVvZiBVKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTt2YXIgcmU9QihVKTtyZXR1cm4gdm9pZCAwIT09''@;'; put 'put ''UT8ic3RyaW5nIj09dHlwZW9mIGo/cmUuZmlsbChRLGopOnJlLmZpbGwoUSk6cmUuZmlsbCgwKSxyZX0sRWUuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oVSl7aWYoIm51bWJlciIhPXR5cGVvZiBVKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4g''@;'; put 'put ''QihVKX0sRWUuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKFUpe2lmKCJudW1iZXIiIT10eXBlb2YgVSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIG1lLlNsb3dCdWZmZXIoVSl9fSwyNDg3OTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg5OTU2''@;'; put 'put ''NSk7WGUuZXhwb3J0cz17VGV4dEVuY29kZXI6bWUuVGV4dEVuY29kZXIsVGV4dERlY29kZXI6bWUuVGV4dERlY29kZXJ9fSw4NjM4OTpmdW5jdGlvbihYZSl7IWZ1bmN0aW9uKEplKXsidXNlIHN0cmljdCI7WGUuZXhwb3J0cyYmKFhlLmV4cG9ydHM9SmUpLEplWyJlbmNvZGluZy1pbmRleGVz''@;'; put 'put ''Il09e2JpZzU6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE3MzkyLDE5NTA2LDE3OTIzLDE3ODMwLDE3Nzg0LDE2MDM1OSwxOTgzMSwxNzg0MywxNjI5OTMsMTk2ODIsMTYz''@;'; put 'put ''MDEzLDE1MjUzLDE4MjMwLDE4MjQ0LDE5NTI3LDE5NTIwLDE0ODE1OSwxNDQ5MTksMTYwNTk0LDE1OTM3MSwxNTk5NTQsMTk1NDMsMTcyODgxLDE4MjU1LDE3ODgyLDE5NTg5LDE2MjkyNCwxOTcxOSwxOTEwOCwxODA4MSwxNTg0OTksMjkyMjEsMTU0MTk2LDEzNzgyNywxNDY5NTAsMTQ3Mjk3''@;'; put 'put ''LDI2MTg5LDIyMjY3LG51bGwsMzIxNDksMjI4MTMsMTY2ODQxLDE1ODYwLDM4NzA4LDE2Mjc5OSwyMzUxNSwxMzg1OTAsMjMyMDQsMTM4NjEsMTcxNjk2LDIzMjQ5LDIzNDc5LDIzODA0LDI2NDc4LDM0MTk1LDE3MDMwOSwyOTc5MywyOTg1MywxNDQ1MywxMzg1NzksMTQ1MDU0LDE1NTY4MSwx''@;'; put 'put ''NjEwOCwxNTM4MjIsMTUwOTMsMzE0ODQsNDA4NTUsMTQ3ODA5LDE2NjE1NywxNDM4NTAsMTMzNzcwLDE0Mzk2NiwxNzE2MiwzMzkyNCw0MDg1NCwzNzkzNSwxODczNiwzNDMyMywyMjY3OCwzODczMCwzNzQwMCwzMTE4NCwzMTI4MiwyNjIwOCwyNzE3NywzNDk3MywyOTc3MiwzMTY4NSwyNjQ5''@;'; put 'put ''OCwzMTI3NiwyMTA3MSwzNjkzNCwxMzU0MiwyOTYzNiwxNTUwNjUsMjk4OTQsNDA5MDMsMjI0NTEsMTg3MzUsMjE1ODAsMTY2ODksMTQ1MDM4LDIyNTUyLDMxMzQ2LDE2MjY2MSwzNTcyNywxODA5NCwxNTkzNjgsMTY3NjksMTU1MDMzLDMxNjYyLDE0MDQ3Niw0MDkwNCwxNDA0ODEsMTQwNDg5''@;'; put 'put ''LDE0MDQ5Miw0MDkwNSwzNDA1MiwxNDQ4MjcsMTY1NjQsNDA5MDYsMTc2MzMsMTc1NjE1LDI1MjgxLDI4NzgyLDQwOTA3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTI3MzYsMTI3MzcsMTI3MzgsMTI3MzksMTI3NDAsMTMxMzQwLDEyNzQxLDEzMTI4MSwxMzEyNzcsMTI3NDIsMTI3NDMsMTMxMjc1LDEzOTI0MCwxMjc0NCwxMzEyNzQsMTI3NDUsMTI3''@;'; put 'put ''NDYsMTI3NDcsMTI3NDgsMTMxMzQyLDEyNzQ5LDEyNzUwLDI1NiwxOTMsNDYxLDE5MiwyNzQsMjAxLDI4MiwyMDAsMzMyLDIxMSw0NjUsMjEwLG51bGwsNzg3MCxudWxsLDc4NzIsMjAyLDI1NywyMjUsNDYyLDIyNCw1OTMsMjc1LDIzMywyODMsMjMyLDI5OSwyMzcsNDY0LDIzNiwzMzMsMjQz''@;'; put 'put ''LDQ2NiwyNDIsMzYzLDI1MCw0NjgsMjQ5LDQ3MCw0NzIsNDc0LDQ3NiwyNTIsbnVsbCw3ODcxLG51bGwsNzg3MywyMzQsNjA5LDkxNzgsOTE3OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCwxNzI5NjksMTM1NDkzLG51bGwsMjU4NjYsbnVsbCxudWxsLDIwMDI5LDI4MzgxLDQwMjcwLDM3MzQzLG51bGwsbnVsbCwxNjE1ODksMjU3NDUsMjAyNTAsMjAyNjQsMjAzOTIsMjA4MjIsMjA4NTIsMjA4OTIsMjA5NjQsMjExNTMsMjExNjAsMjEzMDcsMjEzMjYsMjE0NTcsMjE0''@;'; put 'put ''NjQsMjIyNDIsMjI3NjgsMjI3ODgsMjI3OTEsMjI4MzQsMjI4MzYsMjMzOTgsMjM0NTQsMjM0NTUsMjM3MDYsMjQxOTgsMjQ2MzUsMjU5OTMsMjY2MjIsMjY2MjgsMjY3MjUsMjc5ODIsMjg4NjAsMzAwMDUsMzI0MjAsMzI0MjgsMzI0NDIsMzI0NTUsMzI0NjMsMzI0NzksMzI1MTgsMzI1Njcs''@;'; put 'put ''MzM0MDIsMzM0ODcsMzM2NDcsMzUyNzAsMzU3NzQsMzU4MTAsMzY3MTAsMzY3MTEsMzY3MTgsMjk3MTMsMzE5OTYsMzIyMDUsMjY5NTAsMzE0MzMsMjEwMzEsbnVsbCxudWxsLG51bGwsbnVsbCwzNzI2MCwzMDkwNCwzNzIxNCwzMjk1NixudWxsLDM2MTA3LDMzMDE0LDEzMzYwNyxudWxsLG51''@;'; put 'put ''bGwsMzI5MjcsNDA2NDcsMTk2NjEsNDAzOTMsNDA0NjAsMTk1MTgsMTcxNTEwLDE1OTc1OCw0MDQ1OCwxNzIzMzksMTM3NjEsbnVsbCwyODMxNCwzMzM0MiwyOTk3NyxudWxsLDE4NzA1LDM5NTMyLDM5NTY3LDQwODU3LDMxMTExLDE2NDk3MiwxMzg2OTgsMTMyNTYwLDE0MjA1NCwyMDAwNCwy''@;'; put 'put ''MDA5NywyMDA5NiwyMDEwMywyMDE1OSwyMDIwMywyMDI3OSwxMzM4OCwyMDQxMywxNTk0NCwyMDQ4MywyMDYxNiwxMzQzNywxMzQ1OSwxMzQ3NywyMDg3MCwyMjc4OSwyMDk1NSwyMDk4OCwyMDk5NywyMDEwNSwyMTExMywyMTEzNiwyMTI4NywxMzc2NywyMTQxNywxMzY0OSwyMTQyNCwxMzY1''@;'; put 'put ''MSwyMTQ0MiwyMTUzOSwxMzY3NywxMzY4MiwxMzk1MywyMTY1MSwyMTY2NywyMTY4NCwyMTY4OSwyMTcxMiwyMTc0MywyMTc4NCwyMTc5NSwyMTgwMCwxMzcyMCwyMTgyMywxMzczMywxMzc1OSwyMTk3NSwxMzc2NSwxNjMyMDQsMjE3OTcsbnVsbCwxMzQyMTAsMTM0NDIxLDE1MTg1MSwyMTkw''@;'; put 'put ''NCwxNDI1MzQsMTQ4MjgsMTMxOTA1LDM2NDIyLDE1MDk2OCwxNjkxODksMTY0NjcsMTY0MDMwLDMwNTg2LDE0MjM5MiwxNDkwMCwxODM4OSwxNjQxODksMTU4MTk0LDE1MTAxOCwyNTgyMSwxMzQ1MjQsMTM1MDkyLDEzNDM1NywxMzU0MTIsMjU3NDEsMzY0NzgsMTM0ODA2LDEzNDE1NSwxMzUw''@;'; put 'put ''MTIsMTQyNTA1LDE2NDQzOCwxNDg2OTEsbnVsbCwxMzQ0NzAsMTcwNTczLDE2NDA3MywxODQyMCwxNTEyMDcsMTQyNTMwLDM5NjAyLDE0OTUxLDE2OTQ2MCwxNjM2NSwxMzU3NCwxNTIyNjMsMTY5OTQwLDE2MTk5MiwxNDI2NjAsNDAzMDIsMzg5MzMsbnVsbCwxNzM2OSwxNTU4MTMsMjU3ODAs''@;'; put 'put ''MjE3MzEsMTQyNjY4LDE0MjI4MiwxMzUyODcsMTQ4NDMsMTM1Mjc5LDE1NzQwMiwxNTc0NjIsMTYyMjA4LDI1ODM0LDE1MTYzNCwxMzQyMTEsMzY0NTYsMTM5NjgxLDE2NjczMiwxMzI5MTMsbnVsbCwxODQ0MywxMzE0OTcsMTYzNzgsMjI2NDMsMTQyNzMzLG51bGwsMTQ4OTM2LDEzMjM0OCwx''@;'; put 'put ''NTU3OTksMTM0OTg4LDEzNDU1MCwyMTg4MSwxNjU3MSwxNzMzOCxudWxsLDE5MTI0LDE0MTkyNiwxMzUzMjUsMzMxOTQsMzkxNTcsMTM0NTU2LDI1NDY1LDE0ODQ2LDE0MTE3MywzNjI4OCwyMjE3NywyNTcyNCwxNTkzOSxudWxsLDE3MzU2OSwxMzQ2NjUsMTQyMDMxLDE0MjUzNyxudWxsLDEz''@;'; put 'put ''NTM2OCwxNDU4NTgsMTQ3MzgsMTQ4NTQsMTY0NTA3LDEzNjg4LDE1NTIwOSwxMzk0NjMsMjIwOTgsMTM0OTYxLDE0MjUxNCwxNjk3NjAsMTM1MDAsMjc3MDksMTUxMDk5LG51bGwsbnVsbCwxNjExNDAsMTQyOTg3LDEzOTc4NCwxNzM2NTksMTY3MTE3LDEzNDc3OCwxMzQxOTYsMTU3NzI0LDMy''@;'; put 'put ''NjU5LDEzNTM3NSwxNDEzMTUsMTQxNjI1LDEzODE5LDE1MjAzNSwxMzQ3OTYsMTM1MDUzLDEzNDgyNiwxNjI3NSwxMzQ5NjAsMTM0NDcxLDEzNTUwMywxMzQ3MzIsbnVsbCwxMzQ4MjcsMTM0MDU3LDEzNDQ3MiwxMzUzNjAsMTM1NDg1LDE2Mzc3LDE0MDk1MCwyNTY1MCwxMzUwODUsMTQ0Mzcy''@;'; put 'put ''LDE2MTMzNywxNDIyODYsMTM0NTI2LDEzNDUyNywxNDI0MTcsMTQyNDIxLDE0ODcyLDEzNDgwOCwxMzUzNjcsMTM0OTU4LDE3MzYxOCwxNTg1NDQsMTY3MTIyLDE2NzMyMSwxNjcxMTQsMzgzMTQsMjE3MDgsMzM0NzYsMjE5NDUsbnVsbCwxNzE3MTUsMzk5NzQsMzk2MDYsMTYxNjMwLDE0Mjgz''@;'; put 'put ''MCwyODk5MiwzMzEzMywzMzAwNCwyMzU4MCwxNTcwNDIsMzMwNzYsMTQyMzEsMjEzNDMsMTY0MDI5LDM3MzAyLDEzNDkwNiwxMzQ2NzEsMTM0Nzc1LDEzNDkwNywxMzc4OSwxNTEwMTksMTM4MzMsMTM0MzU4LDIyMTkxLDE0MTIzNywxMzUzNjksMTM0NjcyLDEzNDc3NiwxMzUyODgsMTM1NDk2''@;'; put 'put ''LDE2NDM1OSwxMzYyNzcsMTM0Nzc3LDE1MTEyMCwxNDI3NTYsMjMxMjQsMTM1MTk3LDEzNTE5OCwxMzU0MTMsMTM1NDE0LDIyNDI4LDEzNDY3MywxNjE0MjgsMTY0NTU3LDEzNTA5MywxMzQ3NzksMTUxOTM0LDE0MDgzLDEzNTA5NCwxMzU1NTIsMTUyMjgwLDE3MjczMywxNDk5NzgsMTM3Mjc0''@;'; put 'put ''LDE0NzgzMSwxNjQ0NzYsMjI2ODEsMjEwOTYsMTM4NTAsMTUzNDA1LDMxNjY2LDIzNDAwLDE4NDMyLDE5MjQ0LDQwNzQzLDE4OTE5LDM5OTY3LDM5ODIxLDE1NDQ4NCwxNDM2NzcsMjIwMTEsMTM4MTAsMjIxNTMsMjAwMDgsMjI3ODYsMTM4MTc3LDE5NDY4MCwzODczNywxMzEyMDYsMjAwNTks''@;'; put 'put ''MjAxNTUsMTM2MzAsMjM1ODcsMjQ0MDEsMjQ1MTYsMTQ1ODYsMjUxNjQsMjU5MDksMjc1MTQsMjc3MDEsMjc3MDYsMjg3ODAsMjkyMjcsMjAwMTIsMjkzNTcsMTQ5NzM3LDMyNTk0LDMxMDM1LDMxOTkzLDMyNTk1LDE1NjI2NiwxMzUwNSxudWxsLDE1NjQ5MSwzMjc3MCwzMjg5NiwxNTcyMDIs''@;'; put 'put ''MTU4MDMzLDIxMzQxLDM0OTE2LDM1MjY1LDE2MTk3MCwzNTc0NCwzNjEyNSwzODAyMSwzODI2NCwzODI3MSwzODM3NiwxNjc0MzksMzg4ODYsMzkwMjksMzkxMTgsMzkxMzQsMzkyNjcsMTdlNCw0MDA2MCw0MDQ3OSw0MDY0NCwyNzUwMyw2Mzc1MSwyMDAyMywxMzEyMDcsMzg0MjksMjUxNDMs''@;'; put 'put ''MzgwNTAsbnVsbCwyMDUzOSwyODE1OCwxNzExMjMsNDA4NzAsMTU4MTcsMzQ5NTksMTQ3NzkwLDI4NzkxLDIzNzk3LDE5MjMyLDE1MjAxMywxMzY1NywxNTQ5MjgsMjQ4NjYsMTY2NDUwLDM2Nzc1LDM3MzY2LDI5MDczLDI2MzkzLDI5NjI2LDE0NDAwMSwxNzIyOTUsMTU0OTksMTM3NjAwLDE5''@;'; put 'put ''MjE2LDMwOTQ4LDI5Njk4LDIwOTEwLDE2NTY0NywxNjM5MywyNzIzNSwxNzI3MzAsMTY5MzEsMzQzMTksMTMzNzQzLDMxMjc0LDE3MDMxMSwxNjY2MzQsMzg3NDEsMjg3NDksMjEyODQsMTM5MzkwLDM3ODc2LDMwNDI1LDE2NjM3MSw0MDg3MSwzMDY4NSwyMDEzMSwyMDQ2NCwyMDY2OCwyMDAx''@;'; put 'put ''NSwyMDI0Nyw0MDg3MiwyMTU1NiwzMjEzOSwyMjY3NCwyMjczNiwxMzg2NzgsMjQyMTAsMjQyMTcsMjQ1MTQsMTQxMDc0LDI1OTk1LDE0NDM3NywyNjkwNSwyNzIwMywxNDY1MzEsMjc5MDMsbnVsbCwyOTE4NCwxNDg3NDEsMjk1ODAsMTYwOTEsMTUwMDM1LDIzMzE3LDI5ODgxLDM1NzE1LDE1''@;'; put 'put ''NDc4OCwxNTMyMzcsMzEzNzksMzE3MjQsMzE5MzksMzIzNjQsMzM1MjgsMzQxOTksNDA4NzMsMzQ5NjAsNDA4NzQsMzY1MzcsNDA4NzUsMzY4MTUsMzQxNDMsMzkzOTIsMzc0MDksNDA4NzYsMTY3MzUzLDEzNjI1NSwxNjQ5NywxNzA1OCwyMzA2NixudWxsLG51bGwsbnVsbCwzOTAxNiwyNjQ3''@;'; put 'put ''NSwxNzAxNCwyMjMzMyxudWxsLDM0MjYyLDE0OTg4MywzMzQ3MSwxNjAwMTMsMTk1ODUsMTU5MDkyLDIzOTMxLDE1ODQ4NSwxNTk2NzgsNDA4NzcsNDA4NzgsMjM0NDYsNDA4NzksMjYzNDMsMzIzNDcsMjgyNDcsMzExNzgsMTU3NTIsMTc2MDMsMTQzOTU4LDE0MTIwNiwxNzMwNiwxNzcxOCxu''@;'; put 'put ''dWxsLDIzNzY1LDE0NjIwMiwzNTU3NywyMzY3MiwxNTYzNCwxNDQ3MjEsMjM5MjgsNDA4ODIsMjkwMTUsMTc3NTIsMTQ3NjkyLDEzODc4NywxOTU3NSwxNDcxMiwxMzM4NiwxMzE0OTIsMTU4Nzg1LDM1NTMyLDIwNDA0LDEzMTY0MSwyMjk3NSwzMzEzMiwzODk5OCwxNzAyMzQsMjQzNzksMTM0''@;'; put 'put ''MDQ3LG51bGwsMTM5NzEzLDE2NjI1MywxNjY0MiwxODEwNywxNjgwNTcsMTYxMzUsNDA4ODMsMTcyNDY5LDE2NjMyLDE0Mjk0LDE4MTY3LDE1ODc5MCwxNjc2NCwxNjU1NTQsMTYwNzY3LDE3NzczLDE0NTQ4LDE1MjczMCwxNzc2MSwxNzY5MSwxOTg0OSwxOTU3OSwxOTgzMCwxNzg5OCwxNjMy''@;'; put 'put ''OCwxNTAyODcsMTM5MjEsMTc2MzAsMTc1OTcsMTY4NzcsMjM4NzAsMjM4ODAsMjM4OTQsMTU4NjgsMTQzNTEsMjM5NzIsMjM5OTMsMTQzNjgsMTQzOTIsMjQxMzAsMjQyNTMsMjQzNTcsMjQ0NTEsMTQ2MDAsMTQ2MTIsMTQ2NTUsMTQ2NjksMjQ3OTEsMjQ4OTMsMjM3ODEsMTQ3MjksMjUwMTUs''@;'; put 'put ''MjUwMTcsMjUwMzksMTQ3NzYsMjUxMzIsMjUyMzIsMjUzMTcsMjUzNjgsMTQ4NDAsMjIxOTMsMTQ4NTEsMjU1NzAsMjU1OTUsMjU2MDcsMjU2OTAsMTQ5MjMsMjU3OTIsMjM4MjksMjIwNDksNDA4NjMsMTQ5OTksMjU5OTAsMTUwMzcsMjYxMTEsMjYxOTUsMTUwOTAsMjYyNTgsMTUxMzgsMjYz''@;'; put 'put ''OTAsMTUxNzAsMjY1MzIsMjY2MjQsMTUxOTIsMjY2OTgsMjY3NTYsMTUyMTgsMTUyMTcsMTUyMjcsMjY4ODksMjY5NDcsMjkyNzYsMjY5ODAsMjcwMzksMjcwMTMsMTUyOTIsMjcwOTQsMTUzMjUsMjcyMzcsMjcyNTIsMjcyNDksMjcyNjYsMTUzNDAsMjcyODksMTUzNDYsMjczMDcsMjczMTcs''@;'; put 'put ''MjczNDgsMjczODIsMjc1MjEsMjc1ODUsMjc2MjYsMjc3NjUsMjc4MTgsMTU1NjMsMjc5MDYsMjc5MTAsMjc5NDIsMjgwMzMsMTU1OTksMjgwNjgsMjgwODEsMjgxODEsMjgxODQsMjgyMDEsMjgyOTQsMTY2MzM2LDI4MzQ3LDI4Mzg2LDI4Mzc4LDQwODMxLDI4MzkyLDI4MzkzLDI4NDUyLDI4''@;'; put 'put ''NDY4LDE1Njg2LDE0NzI2NSwyODU0NSwyODYwNiwxNTcyMiwxNTczMywyOTExMSwyMzcwNSwxNTc1NCwyODcxNiwxNTc2MSwyODc1MiwyODc1NiwyODc4MywyODc5OSwyODgwOSwxMzE4NzcsMTczNDUsMTM4MDksMTM0ODcyLDE0NzE1OSwyMjQ2MiwxNTk0NDMsMjg5OTAsMTUzNTY4LDEzOTAy''@;'; put 'put ''LDI3MDQyLDE2Njg4OSwyMzQxMiwzMTMwNSwxNTM4MjUsMTY5MTc3LDMxMzMzLDMxMzU3LDE1NDAyOCwzMTQxOSwzMTQwOCwzMTQyNiwzMTQyNywyOTEzNywxNTY4MTMsMTY4NDIsMzE0NTAsMzE0NTMsMzE0NjYsMTY4NzksMjE2ODIsMTU0NjI1LDMxNDk5LDMxNTczLDMxNTI5LDE1MjMzNCwx''@;'; put 'put ''NTQ4NzgsMzE2NTAsMzE1OTksMzM2OTIsMTU0NTQ4LDE1ODg0NywzMTY5NiwzMzgyNSwzMTYzNCwzMTY3MiwxNTQ5MTIsMTU3ODksMTU0NzI1LDMzOTM4LDMxNzM4LDMxNzUwLDMxNzk3LDE1NDgxNywzMTgxMiwzMTg3NSwxNDk2MzQsMzE5MTAsMjYyMzcsMTQ4ODU2LDMxOTQ1LDMxOTQzLDMx''@;'; put 'put ''OTc0LDMxODYwLDMxOTg3LDMxOTg5LDMxOTUwLDMyMzU5LDE3NjkzLDE1OTMwMCwzMjA5MywxNTk0NDYsMjk4MzcsMzIxMzcsMzIxNzEsMjg5ODEsMzIxNzksMzIyMTAsMTQ3NTQzLDE1NTY4OSwzMjIyOCwxNTYzNSwzMjI0NSwxMzcyMDksMzIyMjksMTY0NzE3LDMyMjg1LDE1NTkzNywxNTU5''@;'; put 'put ''OTQsMzIzNjYsMzI0MDIsMTcxOTUsMzc5OTYsMzIyOTUsMzI1NzYsMzI1NzcsMzI1ODMsMzEwMzAsMTU2MzY4LDM5MzkzLDMyNjYzLDE1NjQ5NywzMjY3NSwxMzY4MDEsMTMxMTc2LDE3NzU2LDE0NTI1NCwxNzY2NywxNjQ2NjYsMzI3NjIsMTU2ODA5LDMyNzczLDMyNzc2LDMyNzk3LDMyODA4''@;'; put 'put ''LDMyODE1LDE3MjE2NywxNTg5MTUsMzI4MjcsMzI4MjgsMzI4NjUsMTQxMDc2LDE4ODI1LDE1NzIyMiwxNDY5MTUsMTU3NDE2LDI2NDA1LDMyOTM1LDE2NjQ3MiwzMzAzMSwzMzA1MCwyMjcwNCwxNDEwNDYsMjc3NzUsMTU2ODI0LDE1MTQ4MCwyNTgzMSwxMzYzMzAsMzMzMDQsMTM3MzEwLDI3''@;'; put 'put ''MjE5LDE1MDExNywxNTAxNjUsMTc1MzAsMzMzMjEsMTMzOTAxLDE1ODI5MCwxNDY4MTQsMjA0NzMsMTM2NDQ1LDM0MDE4LDMzNjM0LDE1ODQ3NCwxNDk5MjcsMTQ0Njg4LDEzNzA3NSwxNDY5MzYsMzM0NTAsMjY5MDcsMTk0OTY0LDE2ODU5LDM0MTIzLDMzNDg4LDMzNTYyLDEzNDY3OCwxMzcx''@;'; put 'put ''NDAsMTQwMTcsMTQzNzQxLDE0NDczMCwzMzQwMywzMzUwNiwzMzU2MCwxNDcwODMsMTU5MTM5LDE1ODQ2OSwxNTg2MTUsMTQ0ODQ2LDE1ODA3LDMzNTY1LDIxOTk2LDMzNjY5LDE3Njc1LDE1OTE0MSwzMzcwOCwzMzcyOSwzMzc0NywxMzQzOCwxNTk0NDQsMjcyMjMsMzQxMzgsMTM0NjIsMTU5''@;'; put 'put ''Mjk4LDE0MzA4NywzMzg4MCwxNTQ1OTYsMzM5MDUsMTU4MjcsMTc2MzYsMjczMDMsMzM4NjYsMTQ2NjEzLDMxMDY0LDMzOTYwLDE1ODYxNCwxNTkzNTEsMTU5Mjk5LDM0MDE0LDMzODA3LDMzNjgxLDE3NTY4LDMzOTM5LDM0MDIwLDE1NDc2OSwxNjk2MCwxNTQ4MTYsMTc3MzEsMzQxMDAsMjMy''@;'; put 'put ''ODIsMTU5Mzg1LDE3NzAzLDM0MTYzLDE3Njg2LDI2NTU5LDM0MzI2LDE2NTQxMywxNjU0MzUsMzQyNDEsMTU5ODgwLDM0MzA2LDEzNjU3OCwxNTk5NDksMTk0OTk0LDE3NzcwLDM0MzQ0LDEzODk2LDEzNzM3OCwyMTQ5NSwxNjA2NjYsMzQ0MzAsMzQ2NzMsMTcyMjgwLDM0Nzk4LDE0MjM3NSwz''@;'; put 'put ''NDczNywzNDc3OCwzNDgzMSwyMjExMywzNDQxMiwyNjcxMCwxNzkzNSwzNDg4NSwzNDg4NiwxNjEyNDgsMTQ2ODczLDE2MTI1MiwzNDkxMCwzNDk3MiwxODAxMSwzNDk5NiwzNDk5NywyNTUzNywzNTAxMywzMDU4MywxNjE1NTEsMzUyMDcsMzUyMTAsMzUyMzgsMzUyNDEsMzUyMzksMzUyNjAs''@;'; put 'put ''MTY2NDM3LDM1MzAzLDE2MjA4NCwxNjI0OTMsMzU0ODQsMzA2MTEsMzczNzQsMzU0NzIsMTYyMzkzLDMxNDY1LDE2MjYxOCwxNDczNDMsMTgxOTUsMTYyNjE2LDI5MDUyLDM1NTk2LDM1NjE1LDE1MjYyNCwxNTI5MzMsMzU2NDcsMzU2NjAsMzU2NjEsMzU0OTcsMTUwMTM4LDM1NzI4LDM1NzM5''@;'; put 'put ''LDM1NTAzLDEzNjkyNywxNzk0MSwzNDg5NSwzNTk5NSwxNjMxNTYsMTYzMjE1LDE5NTAyOCwxNDExNywxNjMxNTUsMzYwNTQsMTYzMjI0LDE2MzI2MSwzNjExNCwzNjA5OSwxMzc0ODgsMzYwNTksMjg3NjQsMzYxMTMsMTUwNzI5LDE2MDgwLDM2MjE1LDM2MjY1LDE2Mzg0MiwxMzUxODgsMTQ5''@;'; put 'put ''ODk4LDE1MjI4LDE2NDI4NCwxNjAwMTIsMzE0NjMsMzY1MjUsMzY1MzQsMzY1NDcsMzc1ODgsMzY2MzMsMzY2NTMsMTY0NzA5LDE2NDg4MiwzNjc3MywzNzYzNSwxNzI3MDMsMTMzNzEyLDM2Nzg3LDE4NzMwLDE2NjM2NiwxNjUxODEsMTQ2ODc1LDI0MzEyLDE0Mzk3MCwzNjg1NywxNzIwNTIs''@;'; put 'put ''MTY1NTY0LDE2NTEyMSwxNDAwNjksMTQ3MjAsMTU5NDQ3LDM2OTE5LDE2NTE4MCwxNjI0OTQsMzY5NjEsMTY1MjI4LDE2NTM4NywzNzAzMiwxNjU2NTEsMzcwNjAsMTY1NjA2LDM3MDM4LDM3MTE3LDM3MjIzLDE1MDg4LDM3Mjg5LDM3MzE2LDMxOTE2LDE2NjE5NSwxMzg4ODksMzczOTAsMjc4''@;'; put 'put ''MDcsMzc0NDEsMzc0NzQsMTUzMDE3LDM3NTYxLDE2NjU5OCwxNDY1ODcsMTY2NjY4LDE1MzA1MSwxMzQ0NDksMzc2NzYsMzc3MzksMTY2NjI1LDE2Njg5MSwyODgxNSwyMzIzNSwxNjY2MjYsMTY2NjI5LDE4Nzg5LDM3NDQ0LDE2Njg5MiwxNjY5NjksMTY2OTExLDM3NzQ3LDM3OTc5LDM2NTQw''@;'; put 'put ''LDM4Mjc3LDM4MzEwLDM3OTI2LDM4MzA0LDI4NjYyLDE3MDgxLDE0MDkyMiwxNjU1OTIsMTM1ODA0LDE0Njk5MCwxODkxMSwyNzY3NiwzODUyMywzODU1MCwxNjc0OCwzODU2MywxNTk0NDUsMjUwNTAsMzg1ODIsMzA5NjUsMTY2NjI0LDM4NTg5LDIxNDUyLDE4ODQ5LDE1ODkwNCwxMzE3MDAs''@;'; put 'put ''MTU2Njg4LDE2ODExMSwxNjgxNjUsMTUwMjI1LDEzNzQ5MywxNDQxMzgsMzg3MDUsMzQzNzAsMzg3MTAsMTg5NTksMTc3MjUsMTc3OTcsMTUwMjQ5LDI4Nzg5LDIzMzYxLDM4NjgzLDM4NzQ4LDE2ODQwNSwzODc0MywyMzM3MCwxNjg0MjcsMzg3NTEsMzc5MjUsMjA2ODgsMTQzNTQzLDE0MzU0''@;'; put 'put ''OCwzODc5MywzODgxNSwzODgzMywzODg0NiwzODg0OCwzODg2NiwzODg4MCwxNTI2ODQsMzg4OTQsMjk3MjQsMTY5MDExLDM4OTExLDM4OTAxLDE2ODk4OSwxNjIxNzAsMTkxNTMsMzg5NjQsMzg5NjMsMzg5ODcsMzkwMTQsMTUxMTgsMTYwMTE3LDE1Njk3LDEzMjY1NiwxNDc4MDQsMTUzMzUw''@;'; put 'put ''LDM5MTE0LDM5MDk1LDM5MTEyLDM5MTExLDE5MTk5LDE1OTAxNSwxMzY5MTUsMjE5MzYsMzkxMzcsMzkxNDIsMzkxNDgsMzc3NTIsMzkyMjUsMTUwMDU3LDE5MzE0LDE3MDA3MSwxNzAyNDUsMzk0MTMsMzk0MzYsMzk0ODMsMzk0NDAsMzk1MTIsMTUzMzgxLDE0MDIwLDE2ODExMywxNzA5NjUs''@;'; put 'put ''Mzk2NDgsMzk2NTAsMTcwNzU3LDM5NjY4LDE5NDcwLDM5NzAwLDM5NzI1LDE2NTM3NiwyMDUzMiwzOTczMiwxNTgxMjAsMTQ1MzEsMTQzNDg1LDM5NzYwLDM5NzQ0LDE3MTMyNiwyMzEwOSwxMzczMTUsMzk4MjIsMTQ4MDQzLDM5OTM4LDM5OTM1LDM5OTQ4LDE3MTYyNCw0MDQwNCwxNzE5NTks''@;'; put 'put ''MTcyNDM0LDE3MjQ1OSwxNzIyNTcsMTcyMzIzLDE3MjUxMSw0MDMxOCw0MDMyMywxNzIzNDAsNDA0NjIsMjY3NjAsNDAzODgsMTM5NjExLDE3MjQzNSwxNzI1NzYsMTM3NTMxLDE3MjU5NSw0MDI0OSwxNzIyMTcsMTcyNzI0LDQwNTkyLDQwNTk3LDQwNjA2LDQwNjEwLDE5NzY0LDQwNjE4LDQw''@;'; put 'put ''NjIzLDE0ODMyNCw0MDY0MSwxNTIwMCwxNDgyMSwxNTY0NSwyMDI3NCwxNDI3MCwxNjY5NTUsNDA3MDYsNDA3MTIsMTkzNTAsMzc5MjQsMTU5MTM4LDQwNzI3LDQwNzI2LDQwNzYxLDIyMTc1LDIyMTU0LDQwNzczLDM5MzUyLDE2ODA3NSwzODg5OCwzMzkxOSw0MDgwMiw0MDgwOSwzMTQ1Miw0''@;'; put 'put ''MDg0NiwyOTIwNiwxOTM5MCwxNDk4NzcsMTQ5OTQ3LDI5MDQ3LDE1MDAwOCwxNDgyOTYsMTUwMDk3LDI5NTk4LDE2Njg3NCwxMzc0NjYsMzExMzUsMTY2MjcwLDE2NzQ3OCwzNzczNywzNzg3NSwxNjY0NjgsMzc2MTIsMzc3NjEsMzc4MzUsMTY2MjUyLDE0ODY2NSwyOTIwNywxNjEwNywzMDU3''@;'; put 'put ''OCwzMTI5OSwyODg4MCwxNDg1OTUsMTQ4NDcyLDI5MDU0LDEzNzE5OSwyODgzNSwxMzc0MDYsMTQ0NzkzLDE2MDcxLDEzNzM0OSwxNTI2MjMsMTM3MjA4LDE0MTE0LDEzNjk1NSwxMzcyNzMsMTQwNDksMTM3MDc2LDEzNzQyNSwxNTU0NjcsMTQxMTUsMTM2ODk2LDIyMzYzLDE1MDA1MywxMzYx''@;'; put 'put ''OTAsMTM1ODQ4LDEzNjEzNCwxMzYzNzQsMzQwNTEsMTQ1MDYyLDM0MDUxLDMzODc3LDE0OTkwOCwxNjAxMDEsMTQ2OTkzLDE1MjkyNCwxNDcxOTUsMTU5ODI2LDE3NjUyLDE0NTEzNCwxNzAzOTcsMTU5NTI2LDI2NjE3LDE0MTMxLDE1MzgxLDE1ODQ3LDIyNjM2LDEzNzUwNiwyNjY0MCwxNjQ3''@;'; put 'put ''MSwxNDUyMTUsMTQ3NjgxLDE0NzU5NSwxNDc3MjcsMTU4NzUzLDIxNzA3LDIyMTc0LDE1NzM2MSwyMjE2MiwxMzUxMzUsMTM0MDU2LDEzNDY2OSwzNzgzMCwxNjY2NzUsMzc3ODgsMjAyMTYsMjA3NzksMTQzNjEsMTQ4NTM0LDIwMTU2LDEzMjE5NywxMzE5NjcsMjAyOTksMjAzNjIsMTUzMTY5''@;'; put 'put ''LDIzMTQ0LDEzMTQ5OSwxMzIwNDMsMTQ3NDUsMTMxODUwLDEzMjExNiwxMzM2NSwyMDI2NSwxMzE3NzYsMTY3NjAzLDEzMTcwMSwzNTU0NiwxMzE1OTYsMjAxMjAsMjA2ODUsMjA3NDksMjAzODYsMjAyMjcsMTUwMDMwLDE0NzA4MiwyMDI5MCwyMDUyNiwyMDU4OCwyMDYwOSwyMDQyOCwyMDQ1''@;'; put 'put ''MywyMDU2OCwyMDczMiwyMDgyNSwyMDgyNywyMDgyOSwyMDgzMCwyODI3OCwxNDQ3ODksMTQ3MDAxLDE0NzEzNSwyODAxOCwxMzczNDgsMTQ3MDgxLDIwOTA0LDIwOTMxLDEzMjU3NiwxNzYyOSwxMzIyNTksMTMyMjQyLDEzMjI0MSwzNjIxOCwxNjY1NTYsMTMyODc4LDIxMDgxLDIxMTU2LDEz''@;'; put 'put ''MzIzNSwyMTIxNywzNzc0MiwxODA0MiwyOTA2OCwxNDgzNjQsMTM0MTc2LDE0OTkzMiwxMzUzOTYsMjcwODksMTM0Njg1LDI5ODE3LDE2MDk0LDI5ODQ5LDI5NzE2LDI5NzgyLDI5NTkyLDE5MzQyLDE1MDIwNCwxNDc1OTcsMjE0NTYsMTM3MDAsMjkxOTksMTQ3NjU3LDIxOTQwLDEzMTkwOSwy''@;'; put 'put ''MTcwOSwxMzQwODYsMjIzMDEsMzc0NjksMzg2NDQsMzc3MzQsMjI0OTMsMjI0MTMsMjIzOTksMTM4ODYsMjI3MzEsMjMxOTMsMTY2NDcwLDEzNjk1NCwxMzcwNzEsMTM2OTc2LDIzMDg0LDIyOTY4LDM3NTE5LDIzMTY2LDIzMjQ3LDIzMDU4LDE1MzkyNiwxMzc3MTUsMTM3MzEzLDE0ODExNywx''@;'; put 'put ''NDA2OSwyNzkwOSwyOTc2MywyMzA3MywxNTUyNjcsMjMxNjksMTY2ODcxLDEzMjExNSwzNzg1NiwyOTgzNiwxMzU5MzksMjg5MzMsMTg4MDIsMzc4OTYsMTY2Mzk1LDM3ODIxLDE0MjQwLDIzNTgyLDIzNzEwLDI0MTU4LDI0MTM2LDEzNzYyMiwxMzc1OTYsMTQ2MTU4LDI0MjY5LDIzMzc1LDEz''@;'; put 'put ''NzQ3NSwxMzc0NzYsMTQwODEsMTM3Mzc2LDE0MDQ1LDEzNjk1OCwxNDAzNSwzMzA2NiwxNjY0NzEsMTM4NjgyLDE0NDQ5OCwxNjYzMTIsMjQzMzIsMjQzMzQsMTM3NTExLDEzNzEzMSwyMzE0NywxMzcwMTksMjMzNjQsMzQzMjQsMTYxMjc3LDM0OTEyLDI0NzAyLDE0MTQwOCwxNDA4NDMsMjQ1''@;'; put 'put ''MzksMTYwNTYsMTQwNzE5LDE0MDczNCwxNjgwNzIsMTU5NjAzLDI1MDI0LDEzMTEzNCwxMzExNDIsMTQwODI3LDI0OTg1LDI0OTg0LDI0NjkzLDE0MjQ5MSwxNDI1OTksMTQ5MjA0LDE2ODI2OSwyNTcxMywxNDkwOTMsMTQyMTg2LDE0ODg5LDE0MjExNCwxNDQ0NjQsMTcwMjE4LDE0Mjk2OCwy''@;'; put 'put ''NTM5OSwxNzMxNDcsMjU3ODIsMjUzOTMsMjU1NTMsMTQ5OTg3LDE0MjY5NSwyNTI1MiwxNDI0OTcsMjU2NTksMjU5NjMsMjY5OTQsMTUzNDgsMTQzNTAyLDE0NDA0NSwxNDk4OTcsMTQ0MDQzLDIxNzczLDE0NDA5NiwxMzc0MzMsMTY5MDIzLDI2MzE4LDE0NDAwOSwxNDM3OTUsMTUwNzIsMTY3''@;'; put 'put ''ODQsMTUyOTY0LDE2NjY5MCwxNTI5NzUsMTM2OTU2LDE1MjkyMywxNTI2MTMsMzA5NTgsMTQzNjE5LDEzNzI1OCwxNDM5MjQsMTM0MTIsMTQzODg3LDE0Mzc0NiwxNDgxNjksMjYyNTQsMTU5MDEyLDI2MjE5LDE5MzQ3LDI2MTYwLDE2MTkwNCwxMzg3MzEsMjYyMTEsMTQ0MDgyLDE0NDA5Nywy''@;'; put 'put ''NjE0MiwxNTM3MTQsMTQ1NDUsMTQ1NDY2LDE0NTM0MCwxNTI1NywxNDUzMTQsMTQ0MzgyLDI5OTA0LDE1MjU0LDI2NTExLDE0OTAzNCwyNjgwNiwyNjY1NCwxNTMwMCwyNzMyNiwxNDQzNSwxNDUzNjUsMTQ4NjE1LDI3MTg3LDI3MjE4LDI3MzM3LDI3Mzk3LDEzNzQ5MCwyNTg3MywyNjc3Niwy''@;'; put 'put ''NzIxMiwxNTMxOSwyNzI1OCwyNzQ3OSwxNDczOTIsMTQ2NTg2LDM3NzkyLDM3NjE4LDE2Njg5MCwxNjY2MDMsMzc1MTMsMTYzODcwLDE2NjM2NCwzNzk5MSwyODA2OSwyODQyNywxNDk5OTYsMjgwMDcsMTQ3MzI3LDE1NzU5LDI4MTY0LDE0NzUxNiwyMzEwMSwyODE3MCwyMjU5OSwyNzk0MCwz''@;'; put 'put ''MDc4NiwyODk4NywxNDgyNTAsMTQ4MDg2LDI4OTEzLDI5MjY0LDI5MzE5LDI5MzMyLDE0OTM5MSwxNDkyODUsMjA4NTcsMTUwMTgwLDEzMjU4NywyOTgxOCwxNDcxOTIsMTQ0OTkxLDE1MDA5MCwxNDk3ODMsMTU1NjE3LDE2MTM0LDE2MDQ5LDE1MDIzOSwxNjY5NDcsMTQ3MjUzLDI0NzQzLDE2''@;'; put 'put ''MTE1LDI5OTAwLDI5NzU2LDM3NzY3LDI5NzUxLDE3NTY3LDE1OTIxMCwxNzc0NSwzMDA4MywxNjIyNywxNTA3NDUsMTUwNzkwLDE2MjE2LDMwMDM3LDMwMzIzLDE3MzUxMCwxNTEyOSwyOTgwMCwxNjY2MDQsMTQ5OTMxLDE0OTkwMiwxNTA5OSwxNTgyMSwxNTAwOTQsMTYxMjcsMTQ5OTU3LDE0''@;'; put 'put ''OTc0NywzNzM3MCwyMjMyMiwzNzY5OCwxNjY2MjcsMTM3MzE2LDIwNzAzLDE1MjA5NywxNTIwMzksMzA1ODQsMTQzOTIyLDMwNDc4LDMwNDc5LDMwNTg3LDE0OTE0MywxNDUyODEsMTQ5NDIsMTQ5NzQ0LDI5NzUyLDI5ODUxLDE2MDYzLDE1MDIwMiwxNTAyMTUsMTY1ODQsMTUwMTY2LDE1NjA3''@;'; put 'put ''OCwzNzYzOSwxNTI5NjEsMzA3NTAsMzA4NjEsMzA4NTYsMzA5MzAsMjk2NDgsMzEwNjUsMTYxNjAxLDE1MzMxNSwxNjY1NCwzMTEzMSwzMzk0MiwzMTE0MSwyNzE4MSwxNDcxOTQsMzEyOTAsMzEyMjAsMTY3NTAsMTM2OTM0LDE2NjkwLDM3NDI5LDMxMjE3LDEzNDQ3NiwxNDk5MDAsMTMxNzM3''@;'; put 'put ''LDE0Njg3NCwxMzcwNzAsMTM3MTksMjE4NjcsMTM2ODAsMTM5OTQsMTMxNTQwLDEzNDE1NywzMTQ1OCwyMzEyOSwxNDEwNDUsMTU0Mjg3LDE1NDI2OCwyMzA1MywxMzE2NzUsMzA5NjAsMjMwODIsMTU0NTY2LDMxNDg2LDE2ODg5LDMxODM3LDMxODUzLDE2OTEzLDE1NDU0NywxNTUzMjQsMTU1''@;'; put 'put ''MzAyLDMxOTQ5LDE1MDAwOSwxMzcxMzYsMzE4ODYsMzE4NjgsMzE5MTgsMjczMTQsMzIyMjAsMzIyNjMsMzIyMTEsMzI1OTAsMTU2MjU3LDE1NTk5NiwxNjI2MzIsMzIxNTEsMTU1MjY2LDE3MDAyLDE1ODU4MSwxMzMzOTgsMjY1ODIsMTMxMTUwLDE0NDg0NywyMjQ2OCwxNTY2OTAsMTU2NjY0''@;'; put 'put ''LDE0OTg1OCwzMjczMywzMTUyNywxMzMxNjQsMTU0MzQ1LDE1NDk0NywzMTUwMCwxNTUxNTAsMzkzOTgsMzQzNzMsMzk1MjMsMjcxNjQsMTQ0NDQ3LDE0ODE4LDE1MDAwNywxNTcxMDEsMzk0NTUsMTU3MDg4LDMzOTIwLDE2MDAzOSwxNTg5MjksMTc2NDIsMzMwNzksMTc0MTAsMzI5NjYsMzMw''@;'; put 'put ''MzMsMzMwOTAsMTU3NjIwLDM5MTA3LDE1ODI3NCwzMzM3OCwzMzM4MSwxNTgyODksMzM4NzUsMTU5MTQzLDM0MzIwLDE2MDI4MywyMzE3NCwxNjc2NywxMzcyODAsMjMzMzksMTM3Mzc3LDIzMjY4LDEzNzQzMiwzNDQ2NCwxOTUwMDQsMTQ2ODMxLDM0ODYxLDE2MDgwMiwyMzA0MiwzNDkyNiwy''@;'; put 'put ''MDI5MywzNDk1MSwzNTAwNywzNTA0NiwzNTE3MywzNTE0OSwxNTMyMTksMzUxNTYsMTYxNjY5LDE2MTY2OCwxNjY5MDEsMTY2ODczLDE2NjgxMiwxNjYzOTMsMTYwNDUsMzM5NTUsMTgxNjUsMTgxMjcsMTQzMjIsMzUzODksMzUzNTYsMTY5MDMyLDI0Mzk3LDM3NDE5LDE0ODEwMCwyNjA2OCwy''@;'; put 'put ''ODk2OSwyODg2OCwxMzcyODUsNDAzMDEsMzU5OTksMzYwNzMsMTYzMjkyLDIyOTM4LDMwNjU5LDIzMDI0LDE3MjYyLDE0MDM2LDM2Mzk0LDM2NTE5LDE1MDUzNywzNjY1NiwzNjY4MiwxNzE0MCwyNzczNiwyODYwMywxNDAwNjUsMTg1ODcsMjg1MzcsMjgyOTksMTM3MTc4LDM5OTEzLDE0MDA1''@;'; put 'put ''LDE0OTgwNywzNzA1MSwzNzAxNSwyMTg3MywxODY5NCwzNzMwNywzNzg5MiwxNjY0NzUsMTY0ODIsMTY2NjUyLDM3OTI3LDE2Njk0MSwxNjY5NzEsMzQwMjEsMzUzNzEsMzgyOTcsMzgzMTEsMzgyOTUsMzgyOTQsMTY3MjIwLDI5NzY1LDE2MDY2LDE0OTc1OSwxNTAwODIsMTQ4NDU4LDE2MTAz''@;'; put 'put ''LDE0MzkwOSwzODU0MywxNjc2NTUsMTY3NTI2LDE2NzUyNSwxNjA3NiwxNDk5OTcsMTUwMTM2LDE0NzQzOCwyOTcxNCwyOTgwMywxNjEyNCwzODcyMSwxNjgxMTIsMjY2OTUsMTg5NzMsMTY4MDgzLDE1MzU2NywzODc0OSwzNzczNiwxNjYyODEsMTY2OTUwLDE2NjcwMywxNTY2MDYsMzc1NjIs''@;'; put 'put ''MjMzMTMsMzU2ODksMTg3NDgsMjk2ODksMTQ3OTk1LDM4ODExLDM4NzY5LDM5MjI0LDEzNDk1MCwyNDAwMSwxNjY4NTMsMTUwMTk0LDM4OTQzLDE2OTE3OCwzNzYyMiwxNjk0MzEsMzczNDksMTc2MDAsMTY2NzM2LDE1MDExOSwxNjY3NTYsMzkxMzIsMTY2NDY5LDE2MTI4LDM3NDE4LDE4NzI1''@;'; put 'put ''LDMzODEyLDM5MjI3LDM5MjQ1LDE2MjU2NiwxNTg2OSwzOTMyMywxOTMxMSwzOTMzOCwzOTUxNiwxNjY3NTcsMTUzODAwLDI3Mjc5LDM5NDU3LDIzMjk0LDM5NDcxLDE3MDIyNSwxOTM0NCwxNzAzMTIsMzkzNTYsMTkzODksMTkzNTEsMzc3NTcsMjI2NDIsMTM1OTM4LDIyNTYyLDE0OTk0NCwx''@;'; put 'put ''MzY0MjQsMzA3ODgsMTQxMDg3LDE0Njg3MiwyNjgyMSwxNTc0MSwzNzk3NiwxNDYzMSwyNDkxMiwxNDExODUsMTQxNjc1LDI0ODM5LDQwMDE1LDQwMDE5LDQwMDU5LDM5OTg5LDM5OTUyLDM5ODA3LDM5ODg3LDE3MTU2NSwzOTgzOSwxNzI1MzMsMTcyMjg2LDQwMjI1LDE5NjMwLDE0NzcxNiw0''@;'; put 'put ''MDQ3MiwxOTYzMiw0MDIwNCwxNzI0NjgsMTcyMjY5LDE3MjI3NSwxNzAyODcsNDAzNTcsMzM5ODEsMTU5MjUwLDE1OTcxMSwxNTg1OTQsMzQzMDAsMTc3MTUsMTU5MTQwLDE1OTM2NCwxNTkyMTYsMzM4MjQsMzQyODYsMTU5MjMyLDE0NTM2NywxNTU3NDgsMzEyMDIsMTQ0Nzk2LDE0NDk2MCwx''@;'; put 'put ''ODczMywxNDk5ODIsMTU3MTQsMzc4NTEsMzc1NjYsMzc3MDQsMTMxNzc1LDMwOTA1LDM3NDk1LDM3OTY1LDIwNDUyLDEzMzc2LDM2OTY0LDE1MjkyNSwzMDc4MSwzMDgwNCwzMDkwMiwzMDc5NSwxMzcwNDcsMTQzODE3LDE0OTgyNSwxMzk3OCwyMDMzOCwyODYzNCwyODYzMywyODcwMiwyODcw''@;'; put 'put ''MiwyMTUyNCwxNDc4OTMsMjI0NTksMjI3NzEsMjI0MTAsNDAyMTQsMjI0ODcsMjg5ODAsMTM0ODcsMTQ3ODg0LDI5MTYzLDE1ODc4NCwxNTE0NDcsMjMzMzYsMTM3MTQxLDE2NjQ3MywyNDg0NCwyMzI0NiwyMzA1MSwxNzA4NCwxNDg2MTYsMTQxMjQsMTkzMjMsMTY2Mzk2LDM3ODE5LDM3ODE2''@;'; put 'put ''LDEzNzQzMCwxMzQ5NDEsMzM5MDYsMTU4OTEyLDEzNjIxMSwxNDgyMTgsMTQyMzc0LDE0ODQxNywyMjkzMiwxNDY4NzEsMTU3NTA1LDMyMTY4LDE1NTk5NSwxNTU4MTIsMTQ5OTQ1LDE0OTg5OSwxNjYzOTQsMzc2MDUsMjk2NjYsMTYxMDUsMjk4NzYsMTY2NzU1LDEzNzM3NSwxNjA5NywxNTAx''@;'; put 'put ''OTUsMjczNTIsMjk2ODMsMjk2OTEsMTYwODYsMTUwMDc4LDE1MDE2NCwxMzcxNzcsMTUwMTE4LDEzMjAwNywxMzYyMjgsMTQ5OTg5LDI5NzY4LDE0OTc4MiwyODgzNywxNDk4NzgsMzc1MDgsMjk2NzAsMzc3MjcsMTMyMzUwLDM3NjgxLDE2NjYwNiwxNjY0MjIsMzc3NjYsMTY2ODg3LDE1MzA0''@;'; put 'put ''NSwxODc0MSwxNjY1MzAsMjkwMzUsMTQ5ODI3LDEzNDM5OSwyMjE4MCwxMzI2MzQsMTM0MTIzLDEzNDMyOCwyMTc2MiwzMTE3MiwxMzcyMTAsMzIyNTQsMTM2ODk4LDE1MDA5NiwxMzcyOTgsMTc3MTAsMzc4ODksMTQwOTAsMTY2NTkyLDE0OTkzMywyMjk2MCwxMzc0MDcsMTM3MzQ3LDE2MDkw''@;'; put 'put ''MCwyMzIwMSwxNDA1MCwxNDY3NzksMTRlMywzNzQ3MSwyMzE2MSwxNjY1MjksMTM3MzE0LDM3NzQ4LDE1NTY1LDEzMzgxMiwxOTA5NCwxNDczMCwyMDcyNCwxNTcyMSwxNTY5MiwxMzYwOTIsMjkwNDUsMTcxNDcsMTY0Mzc2LDI4MTc1LDE2ODE2NCwxNzY0MywyNzk5MSwxNjM0MDcsMjg3NzUs''@;'; put 'put ''Mjc4MjMsMTU1NzQsMTQ3NDM3LDE0Njk4OSwyODE2MiwyODQyOCwxNTcyNywxMzIwODUsMzAwMzMsMTQwMTIsMTM1MTIsMTgwNDgsMTYwOTAsMTg1NDUsMjI5ODAsMzc0ODYsMTg3NTAsMzY2NzMsMTY2OTQwLDE1ODY1NiwyMjU0NiwyMjQ3MiwxNDAzOCwxMzYyNzQsMjg5MjYsMTQ4MzIyLDE1''@;'; put 'put ''MDEyOSwxNDMzMzEsMTM1ODU2LDE0MDIyMSwyNjgwOSwyNjk4MywxMzYwODgsMTQ0NjEzLDE2MjgwNCwxNDUxMTksMTY2NTMxLDE0NTM2NiwxNDQzNzgsMTUwNjg3LDI3MTYyLDE0NTA2OSwxNTg5MDMsMzM4NTQsMTc2MzEsMTc2MTQsMTU5MDE0LDE1OTA1NywxNTg4NTAsMTU5NzEwLDI4NDM5''@;'; put 'put ''LDE2MDAwOSwzMzU5NywxMzcwMTgsMzM3NzMsMTU4ODQ4LDE1OTgyNywxMzcxNzksMjI5MjEsMjMxNzAsMTM3MTM5LDIzMTM3LDIzMTUzLDEzNzQ3NywxNDc5NjQsMTQxMjUsMjMwMjMsMTM3MDIwLDE0MDIzLDI5MDcwLDM3Nzc2LDI2MjY2LDE0ODEzMywyMzE1MCwyMzA4MywxNDgxMTUsMjcx''@;'; put 'put ''NzksMTQ3MTkzLDE2MTU5MCwxNDg1NzEsMTQ4MTcwLDI4OTU3LDE0ODA1NywxNjYzNjksMjA0MDAsMTU5MDE2LDIzNzQ2LDE0ODY4NiwxNjM0MDUsMTQ4NDEzLDI3MTQ4LDE0ODA1NCwxMzU5NDAsMjg4MzgsMjg5NzksMTQ4NDU3LDE1NzgxLDI3ODcxLDE5NDU5NywxNTAwOTUsMzIzNTcsMjMw''@;'; put 'put ''MTksMjM4NTUsMTU4NTksMjQ0MTIsMTUwMTA5LDEzNzE4MywzMjE2NCwzMzgzMCwyMTYzNywxNDYxNzAsMTQ0MTI4LDEzMTYwNCwyMjM5OCwxMzMzMzMsMTMyNjMzLDE2MzU3LDEzOTE2NiwxNzI3MjYsMjg2NzUsMTY4MjgzLDIzOTIwLDI5NTgzLDMxOTU1LDE2NjQ4OSwxNjg5OTIsMjA0MjQs''@;'; put 'put ''MzI3NDMsMjkzODksMjk0NTYsMTYyNTQ4LDI5NDk2LDI5NDk3LDE1MzMzNCwyOTUwNSwyOTUxMiwxNjA0MSwxNjI1ODQsMzY5NzIsMjkxNzMsMTQ5NzQ2LDI5NjY1LDMzMjcwLDE2MDc0LDMwNDc2LDE2MDgxLDI3ODEwLDIyMjY5LDI5NzIxLDI5NzI2LDI5NzI3LDE2MDk4LDE2MTEyLDE2MTE2''@;'; put 'put ''LDE2MTIyLDI5OTA3LDE2MTQyLDE2MjExLDMwMDE4LDMwMDYxLDMwMDY2LDMwMDkzLDE2MjUyLDMwMTUyLDMwMTcyLDE2MzIwLDMwMjg1LDE2MzQzLDMwMzI0LDE2MzQ4LDMwMzMwLDE1MTM4OCwyOTA2NCwyMjA1MSwzNTIwMCwyMjYzMywxNjQxMywzMDUzMSwxNjQ0MSwyNjQ2NSwxNjQ1Mywx''@;'; put 'put ''Mzc4NywzMDYxNiwxNjQ5MCwxNjQ5NSwyMzY0NiwzMDY1NCwzMDY2NywyMjc3MCwzMDc0NCwyODg1NywzMDc0OCwxNjU1MiwzMDc3NywzMDc5MSwzMDgwMSwzMDgyMiwzMzg2NCwxNTI4ODUsMzEwMjcsMjY2MjcsMzEwMjYsMTY2NDMsMTY2NDksMzExMjEsMzExMjksMzY3OTUsMzEyMzgsMzY3''@;'; put 'put ''OTYsMTY3NDMsMzEzNzcsMTY4MTgsMzE0MjAsMzM0MDEsMTY4MzYsMzE0MzksMzE0NTEsMTY4NDcsMjAwMDEsMzE1ODYsMzE1OTYsMzE2MTEsMzE3NjIsMzE3NzEsMTY5OTIsMTcwMTgsMzE4NjcsMzE5MDAsMTcwMzYsMzE5MjgsMTcwNDQsMzE5ODEsMzY3NTUsMjg4NjQsMTM0MzUxLDMyMjA3''@;'; put 'put ''LDMyMjEyLDMyMjA4LDMyMjUzLDMyNjg2LDMyNjkyLDI5MzQzLDE3MzAzLDMyODAwLDMyODA1LDMxNTQ1LDMyODE0LDMyODE3LDMyODUyLDE1ODIwLDIyNDUyLDI4ODMyLDMyOTUxLDMzMDAxLDE3Mzg5LDMzMDM2LDI5NDgyLDMzMDM4LDMzMDQyLDMwMDQ4LDMzMDQ0LDE3NDA5LDE1MTYxLDMz''@;'; put 'put ''MTEwLDMzMTEzLDMzMTE0LDE3NDI3LDIyNTg2LDMzMTQ4LDMzMTU2LDE3NDQ1LDMzMTcxLDE3NDUzLDMzMTg5LDIyNTExLDMzMjE3LDMzMjUyLDMzMzY0LDE3NTUxLDMzNDQ2LDMzMzk4LDMzNDgyLDMzNDk2LDMzNTM1LDE3NTg0LDMzNjIzLDM4NTA1LDI3MDE4LDMzNzk3LDI4OTE3LDMzODky''@;'; put 'put ''LDI0ODAzLDMzOTI4LDE3NjY4LDMzOTgyLDM0MDE3LDM0MDQwLDM0MDY0LDM0MTA0LDM0MTMwLDE3NzIzLDM0MTU5LDM0MTYwLDM0MjcyLDE3NzgzLDM0NDE4LDM0NDUwLDM0NDgyLDM0NTQzLDM4NDY5LDM0Njk5LDE3OTI2LDE3OTQzLDM0OTkwLDM1MDcxLDM1MTA4LDM1MTQzLDM1MjE3LDE2''@;'; put 'put ''MjE1MSwzNTM2OSwzNTM4NCwzNTQ3NiwzNTUwOCwzNTkyMSwzNjA1MiwzNjA4MiwzNjEyNCwxODMyOCwyMjYyMywzNjI5MSwxODQxMywyMDIwNiwzNjQxMCwyMTk3NiwyMjM1NiwzNjQ2NSwyMjAwNSwzNjUyOCwxODQ4NywzNjU1OCwzNjU3OCwzNjU4MCwzNjU4OSwzNjU5NCwzNjc5MSwzNjgw''@;'; put 'put ''MSwzNjgxMCwzNjgxMiwzNjkxNSwzOTM2NCwxODYwNSwzOTEzNiwzNzM5NSwxODcxOCwzNzQxNiwzNzQ2NCwzNzQ4MywzNzU1MywzNzU1MCwzNzU2NywzNzYwMywzNzYxMSwzNzYxOSwzNzYyMCwzNzYyOSwzNzY5OSwzNzc2NCwzNzgwNSwxODc1NywxODc2OSw0MDYzOSwzNzkxMSwyMTI0OSwz''@;'; put 'put ''NzkxNywzNzkzMywzNzk1MCwxODc5NCwzNzk3MiwzODAwOSwzODE4OSwzODMwNiwxODg1NSwzODM4OCwzODQ1MSwxODkxNywyNjUyOCwxODk4MCwzODcyMCwxODk5NywzODgzNCwzODg1MCwyMjEwMCwxOTE3MiwyNDgwOCwzOTA5NywxOTIyNSwzOTE1MywyMjU5NiwzOTE4MiwzOTE5MywyMDkx''@;'; put 'put ''NiwzOTE5NiwzOTIyMywzOTIzNCwzOTI2MSwzOTI2NiwxOTMxMiwzOTM2NSwxOTM1NywzOTQ4NCwzOTY5NSwzMTM2MywzOTc4NSwzOTgwOSwzOTkwMSwzOTkyMSwzOTkyNCwxOTU2NSwzOTk2OCwxNDE5MSwxMzgxNzgsNDAyNjUsMzk5OTQsNDA3MDIsMjIwOTYsNDAzMzksNDAzODEsNDAzODQs''@;'; put 'put ''NDA0NDQsMzgxMzQsMzY3OTAsNDA1NzEsNDA2MjAsNDA2MjUsNDA2MzcsNDA2NDYsMzgxMDgsNDA2NzQsNDA2ODksNDA2OTYsMzE0MzIsNDA3NzIsMTMxMjIwLDEzMTc2NywxMzJlMywyNjkwNiwzODA4MywyMjk1NiwxMzIzMTEsMjI1OTIsMzgwODEsMTQyNjUsMTMyNTY1LDEzMjYyOSwxMzI3''@;'; put 'put ''MjYsMTM2ODkwLDIyMzU5LDI5MDQzLDEzMzgyNiwxMzM4MzcsMTM0MDc5LDIxNjEwLDE5NDYxOSwxMzQwOTEsMjE2NjIsMTM0MTM5LDEzNDIwMywxMzQyMjcsMTM0MjQ1LDEzNDI2OCwyNDgwNywxMzQyODUsMjIxMzgsMTM0MzI1LDEzNDM2NSwxMzQzODEsMTM0NTExLDEzNDU3OCwxMzQ2MDAs''@;'; put 'put ''MjY5NjUsMzk5ODMsMzQ3MjUsMTM0NjYwLDEzNDY3MCwxMzQ4NzEsMTM1MDU2LDEzNDk1NywxMzQ3NzEsMjM1ODQsMTM1MTAwLDI0MDc1LDEzNTI2MCwxMzUyNDcsMTM1Mjg2LDI2Mzk4LDEzNTI5MSwxMzUzMDQsMTM1MzE4LDEzODk1LDEzNTM1OSwxMzUzNzksMTM1NDcxLDEzNTQ4MywyMTM0''@;'; put 'put ''OCwzMzk2NSwxMzU5MDcsMTM2MDUzLDEzNTk5MCwzNTcxMywxMzY1NjcsMTM2NzI5LDEzNzE1NSwxMzcxNTksMjAwODgsMjg4NTksMTM3MjYxLDEzNzU3OCwxMzc3NzMsMTM3Nzk3LDEzODI4MiwxMzgzNTIsMTM4NDEyLDEzODk1MiwyNTI4MywxMzg5NjUsMTM5MDI5LDI5MDgwLDI2NzA5LDEz''@;'; put 'put ''OTMzMywyNzExMywxNDAyNCwxMzk5MDAsMTQwMjQ3LDE0MDI4MiwxNDEwOTgsMTQxNDI1LDE0MTY0NywzMzUzMywxNDE2NzEsMTQxNzE1LDE0MjAzNywzNTIzNywxNDIwNTYsMzY3NjgsMTQyMDk0LDM4ODQwLDE0MjE0MywzODk4MywzOTYxMywxNDI0MTIsbnVsbCwxNDI0NzIsMTQyNTE5LDE1''@;'; put 'put ''NDYwMCwxNDI2MDAsMTQyNjEwLDE0Mjc3NSwxNDI3NDEsMTQyOTE0LDE0MzIyMCwxNDMzMDgsMTQzNDExLDE0MzQ2MiwxNDQxNTksMTQ0MzUwLDI0NDk3LDI2MTg0LDI2MzAzLDE2MjQyNSwxNDQ3NDMsMTQ0ODgzLDI5MTg1LDE0OTk0NiwzMDY3OSwxNDQ5MjIsMTQ1MTc0LDMyMzkxLDEzMTkx''@;'; put 'put ''MCwyMjcwOSwyNjM4MiwyNjkwNCwxNDYwODcsMTYxMzY3LDE1NTYxOCwxNDY5NjEsMTQ3MTI5LDE2MTI3OCwxMzk0MTgsMTg2NDAsMTkxMjgsMTQ3NzM3LDE2NjU1NCwxNDgyMDYsMTQ4MjM3LDE0NzUxNSwxNDgyNzYsMTQ4Mzc0LDE1MDA4NSwxMzI1NTQsMjA5NDYsMTMyNjI1LDIyOTQzLDEz''@;'; put 'put ''ODkyMCwxNTI5NCwxNDY2ODcsMTQ4NDg0LDE0ODY5NCwyMjQwOCwxNDkxMDgsMTQ3NDcsMTQ5Mjk1LDE2NTM1MiwxNzA0NDEsMTQxNzgsMTM5NzE1LDM1Njc4LDE2NjczNCwzOTM4MiwxNDk1MjIsMTQ5NzU1LDE1MDAzNywyOTE5MywxNTAyMDgsMTM0MjY0LDIyODg1LDE1MTIwNSwxNTE0MzAs''@;'; put 'put ''MTMyOTg1LDM2NTcwLDE1MTU5NiwyMTEzNSwyMjMzNSwyOTA0MSwxNTIyMTcsMTUyNjAxLDE0NzI3NCwxNTAxODMsMjE5NDgsMTUyNjQ2LDE1MjY4NiwxNTg1NDYsMzczMzIsMTM0MjcsMTUyODk1LDE2MTMzMCwxNTI5MjYsMTgyMDAsMTUyOTMwLDE1MjkzNCwxNTM1NDMsMTQ5ODIzLDE1MzY5''@;'; put 'put ''MywyMDU4MiwxMzU2MywxNDQzMzIsMjQ3OTgsMTUzODU5LDE4MzAwLDE2NjIxNiwxNTQyODYsMTU0NTA1LDE1NDYzMCwxMzg2NDAsMjI0MzMsMjkwMDksMjg1OTgsMTU1OTA2LDE2MjgzNCwzNjk1MCwxNTYwODIsMTUxNDUwLDM1NjgyLDE1NjY3NCwxNTY3NDYsMjM4OTksMTU4NzExLDM2NjYy''@;'; put 'put ''LDE1NjgwNCwxMzc1MDAsMzU1NjIsMTUwMDA2LDE1NjgwOCwxNDc0MzksMTU2OTQ2LDE5MzkyLDE1NzExOSwxNTczNjUsMTQxMDgzLDM3OTg5LDE1MzU2OSwyNDk4MSwyMzA3OSwxOTQ3NjUsMjA0MTEsMjIyMDEsMTQ4NzY5LDE1NzQzNiwyMDA3NCwxNDk4MTIsMzg0ODYsMjgwNDcsMTU4OTA5''@;'; put 'put ''LDEzODQ4LDM1MTkxLDE1NzU5MywxNTc4MDYsMTU2Njg5LDE1Nzc5MCwyOTE1MSwxNTc4OTUsMzE1NTQsMTY4MTI4LDEzMzY0OSwxNTc5OTAsMzcxMjQsMTU4MDA5LDMxMzAxLDQwNDMyLDE1ODIwMiwzOTQ2MiwxNTgyNTMsMTM5MTksMTU2Nzc3LDEzMTEwNSwzMTEwNywxNTgyNjAsMTU4NTU1''@;'; put 'put ''LDIzODUyLDE0NDY2NSwzMzc0MywxNTg2MjEsMTgxMjgsMTU4ODg0LDMwMDExLDM0OTE3LDE1OTE1MCwyMjcxMCwxNDEwOCwxNDA2ODUsMTU5ODE5LDE2MDIwNSwxNTQ0NCwxNjAzODQsMTYwMzg5LDM3NTA1LDEzOTY0MiwxNjAzOTUsMzc2ODAsMTYwNDg2LDE0OTk2OCwyNzcwNSwzODA0Nywx''@;'; put 'put ''NjA4NDgsMTM0OTA0LDM0ODU1LDM1MDYxLDE0MTYwNiwxNjQ5NzksMTM3MTM3LDI4MzQ0LDE1MDA1OCwxMzcyNDgsMTQ3NTYsMTQwMDksMjM1NjgsMzEyMDMsMTc3MjcsMjYyOTQsMTcxMTgxLDE3MDE0OCwzNTEzOSwxNjE3NDAsMTYxODgwLDIyMjMwLDE2NjA3LDEzNjcxNCwxNDc1MywxNDUx''@;'; put 'put ''OTksMTY0MDcyLDEzNjEzMywyOTEwMSwzMzYzOCwxNjIyNjksMTY4MzYwLDIzMTQzLDE5NjM5LDE1OTkxOSwxNjYzMTUsMTYyMzAxLDE2MjMxNCwxNjI1NzEsMTYzMTc0LDE0NzgzNCwzMTU1NSwzMTEwMiwxNjM4NDksMjg1OTcsMTcyNzY3LDI3MTM5LDE2NDYzMiwyMTQxMCwxNTkyMzksMzc4''@;'; put 'put ''MjMsMjY2NzgsMzg3NDksMTY0MjA3LDE2Mzg3NSwxNTgxMzMsMTM2MTczLDE0MzkxOSwxNjM5MTIsMjM5NDEsMTY2OTYwLDE2Mzk3MSwyMjI5MywzODk0NywxNjYyMTcsMjM5NzksMTQ5ODk2LDI2MDQ2LDI3MDkzLDIxNDU4LDE1MDE4MSwxNDczMjksMTUzNzcsMjY0MjIsMTYzOTg0LDE2NDA4''@;'; put 'put ''NCwxNjQxNDIsMTM5MTY5LDE2NDE3NSwxNjQyMzMsMTY0MjcxLDE2NDM3OCwxNjQ2MTQsMTY0NjU1LDE2NDc0NiwxMzc3MCwxNjQ5NjgsMTY1NTQ2LDE4NjgyLDI1NTc0LDE2NjIzMCwzMDcyOCwzNzQ2MSwxNjYzMjgsMTczOTQsMTY2Mzc1LDE3Mzc1LDE2NjM3NiwxNjY3MjYsMTY2ODY4LDIz''@;'; put 'put ''MDMyLDE2NjkyMSwzNjYxOSwxNjc4NzcsMTY4MTcyLDMxNTY5LDE2ODIwOCwxNjgyNTIsMTU4NjMsMTY4Mjg2LDE1MDIxOCwzNjgxNiwyOTMyNywyMjE1NSwxNjkxOTEsMTY5NDQ5LDE2OTM5MiwxNjk0MDAsMTY5Nzc4LDE3MDE5MywxNzAzMTMsMTcwMzQ2LDE3MDQzNSwxNzA1MzYsMTcwNzY2''@;'; put 'put ''LDE3MTM1NCwxNzE0MTksMzI0MTUsMTcxNzY4LDE3MTgxMSwxOTYyMCwzODIxNSwxNzI2OTEsMjkwOTAsMTcyNzk5LDE5ODU3LDM2ODgyLDE3MzUxNSwxOTg2OCwxMzQzMDAsMzY3OTgsMjE5NTMsMzY3OTQsMTQwNDY0LDM2NzkzLDE1MDE2MywxNzY3MywzMjM4MywyODUwMiwyNzMxMywyMDIw''@;'; put 'put ''MiwxMzU0MCwxNjY3MDAsMTYxOTQ5LDE0MTM4LDM2NDgwLDEzNzIwNSwxNjM4NzYsMTY2NzY0LDE2NjgwOSwxNjIzNjYsMTU3MzU5LDE1ODUxLDE2MTM2NSwxNDY2MTUsMTUzMTQxLDE1Mzk0MiwyMDEyMiwxNTUyNjUsMTU2MjQ4LDIyMjA3LDEzNDc2NSwzNjM2NiwyMzQwNSwxNDcwODAsMTUw''@;'; put 'put ''Njg2LDI1NTY2LDI1Mjk2LDEzNzIwNiwxMzczMzksMjU5MDQsMjIwNjEsMTU0Njk4LDIxNTMwLDE1MjMzNywxNTgxNCwxNzE0MTYsMTk1ODEsMjIwNTAsMjIwNDYsMzI1ODUsMTU1MzUyLDIyOTAxLDE0Njc1MiwzNDY3MiwxOTk5NiwxMzUxNDYsMTM0NDczLDE0NTA4MiwzMzA0Nyw0MDI4Niwz''@;'; put 'put ''NjEyMCwzMDI2Nyw0MDAwNSwzMDI4NiwzMDY0OSwzNzcwMSwyMTU1NCwzMzA5NiwzMzUyNywyMjA1MywzMzA3NCwzMzgxNiwzMjk1NywyMTk5NCwzMTA3NCwyMjA4MywyMTUyNiwxMzQ4MTMsMTM3NzQsMjIwMjEsMjIwMDEsMjYzNTMsMTY0NTc4LDEzODY5LDMwMDA0LDIyZTMsMjE5NDYsMjE2''@;'; put 'put ''NTUsMjE4NzQsMTM0MjA5LDEzNDI5NCwyNDI3MiwxNTE4ODAsMTM0Nzc0LDE0MjQzNCwxMzQ4MTgsNDA2MTksMzIwOTAsMjE5ODIsMTM1Mjg1LDI1MjQ1LDM4NzY1LDIxNjUyLDM2MDQ1LDI5MTc0LDM3MjM4LDI1NTk2LDI1NTI5LDI1NTk4LDIxODY1LDE0MjE0Nyw0MDA1MCwxNDMwMjcsMjA4''@;'; put 'put ''OTAsMTM1MzUsMTM0NTY3LDIwOTAzLDIxNTgxLDIxNzkwLDIxNzc5LDMwMzEwLDM2Mzk3LDE1NzgzNCwzMDEyOSwzMjk1MCwzNDgyMCwzNDY5NCwzNTAxNSwzMzIwNiwzMzgyMCwxMzUzNjEsMTc2NDQsMjk0NDQsMTQ5MjU0LDIzNDQwLDMzNTQ3LDE1Nzg0MywyMjEzOSwxNDEwNDQsMTYzMTE5''@;'; put 'put ''LDE0Nzg3NSwxNjMxODcsMTU5NDQwLDE2MDQzOCwzNzIzMiwxMzU2NDEsMzczODQsMTQ2Njg0LDE3MzczNywxMzQ4MjgsMTM0OTA1LDI5Mjg2LDEzODQwMiwxODI1NCwxNTE0OTAsMTYzODMzLDEzNTE0NywxNjYzNCw0MDAyOSwyNTg4NywxNDI3NTIsMTg2NzUsMTQ5NDcyLDE3MTM4OCwxMzUx''@;'; put 'put ''NDgsMTM0NjY2LDI0Njc0LDE2MTE4NywxMzUxNDksbnVsbCwxNTU3MjAsMTM1NTU5LDI5MDkxLDMyMzk4LDQwMjcyLDE5OTk0LDE5OTcyLDEzNjg3LDIzMzA5LDI3ODI2LDIxMzUxLDEzOTk2LDE0ODEyLDIxMzczLDEzOTg5LDE0OTAxNiwyMjY4MiwxNTAzODIsMzMzMjUsMjE1NzksMjI0NDIs''@;'; put 'put ''MTU0MjYxLDEzMzQ5NyxudWxsLDE0OTMwLDE0MDM4OSwyOTU1NiwxNzE2OTIsMTk3MjEsMzk5MTcsMTQ2Njg2LDE3MTgyNCwxOTU0NywxNTE0NjUsMTY5Mzc0LDE3MTk5OCwzMzg4NCwxNDY4NzAsMTYwNDM0LDE1NzYxOSwxNDUxODQsMjUzOTAsMzIwMzcsMTQ3MTkxLDE0Njk4OCwxNDg5MCwz''@;'; put 'put ''Njg3MiwyMTE5NiwxNTk4OCwxMzk0NiwxNzg5NywxMzIyMzgsMzAyNzIsMjMyODAsMTM0ODM4LDMwODQyLDE2MzYzMCwyMjY5NSwxNjU3NSwyMjE0MCwzOTgxOSwyMzkyNCwzMDI5MiwxNzMxMDgsNDA1ODEsMTk2ODEsMzAyMDEsMTQzMzEsMjQ4NTcsMTQzNTc4LDE0ODQ2NixudWxsLDIyMTA5''@;'; put 'put ''LDEzNTg0OSwyMjQzOSwxNDk4NTksMTcxNTI2LDIxMDQ0LDE1OTkxOCwxMzc0MSwyNzcyMiw0MDMxNiwzMTgzMCwzOTczNywyMjQ5NCwxMzcwNjgsMjM2MzUsMjU4MTEsMTY5MTY4LDE1NjQ2OSwxNjAxMDAsMzQ0NzcsMTM0NDQwLDE1OTAxMCwxNTAyNDIsMTM0NTEzLG51bGwsMjA5OTAsMTM5''@;'; put 'put ''MDIzLDIzOTUwLDM4NjU5LDEzODcwNSw0MDU3NywzNjk0MCwzMTUxOSwzOTY4MiwyMzc2MSwzMTY1MSwyNTE5MiwyNTM5NywzOTY3OSwzMTY5NSwzOTcyMiwzMTg3MCwzOTcyNiwzMTgxMCwzMTg3OCwzOTk1NywzMTc0MCwzOTY4OSw0MDcyNywzOTk2MywxNDk4MjIsNDA3OTQsMjE4NzUsMjM0''@;'; put 'put ''OTEsMjA0NzcsNDA2MDAsMjA0NjYsMjEwODgsMTU4NzgsMjEyMDEsMjIzNzUsMjA1NjYsMjI5NjcsMjQwODIsMzg4NTYsNDAzNjMsMzY3MDAsMjE2MDksMzg4MzYsMzkyMzIsMzg4NDIsMjEyOTIsMjQ4ODAsMjY5MjQsMjE0NjYsMzk5NDYsNDAxOTQsMTk1MTUsMzg0NjUsMjcwMDgsMjA2NDYs''@;'; put 'put ''MzAwMjIsMTM3MDY5LDM5Mzg2LDIxMTA3LG51bGwsMzcyMDksMzg1MjksMzcyMTIsbnVsbCwzNzIwMSwxNjc1NzUsMjU0NzEsMTU5MDExLDI3MzM4LDIyMDMzLDM3MjYyLDMwMDc0LDI1MjIxLDEzMjA5MiwyOTUxOSwzMTg1NiwxNTQ2NTcsMTQ2Njg1LG51bGwsMTQ5Nzg1LDMwNDIyLDM5ODM3''@;'; put 'put ''LDIwMDEwLDEzNDM1NiwzMzcyNiwzNDg4MixudWxsLDIzNjI2LDI3MDcyLDIwNzE3LDIyMzk0LDIxMDIzLDI0MDUzLDIwMTc0LDI3Njk3LDEzMTU3MCwyMDI4MSwyMTY2MCwyMTcyMiwyMTE0NiwzNjIyNiwxMzgyMiwyNDMzMiwxMzgxMSxudWxsLDI3NDc0LDM3MjQ0LDQwODY5LDM5ODMxLDM4''@;'; put 'put ''OTU4LDM5MDkyLDM5NjEwLDQwNjE2LDQwNTgwLDI5MDUwLDMxNTA4LG51bGwsMjc2NDIsMzQ4NDAsMzI2MzIsbnVsbCwyMjA0OCwxNzM2NDIsMzY0NzEsNDA3ODcsbnVsbCwzNjMwOCwzNjQzMSw0MDQ3NiwzNjM1MywyNTIxOCwxNjQ3MzMsMzYzOTIsMzY0NjksMzE0NDMsMTUwMTM1LDMxMjk0''@;'; put 'put ''LDMwOTM2LDI3ODgyLDM1NDMxLDMwMjE1LDE2NjQ5MCw0MDc0MiwyNzg1NCwzNDc3NCwzMDE0NywxNzI3MjIsMzA4MDMsMTk0NjI0LDM2MTA4LDI5NDEwLDI5NTUzLDM1NjI5LDI5NDQyLDI5OTM3LDM2MDc1LDE1MDIwMywzNDM1MSwyNDUwNiwzNDk3NiwxNzU5MSxudWxsLDEzNzI3NSwxNTky''@;'; put 'put ''MzcsbnVsbCwzNTQ1NCwxNDA1NzEsbnVsbCwyNDgyOSwzMDMxMSwzOTYzOSw0MDI2MCwzNzc0MiwzOTgyMywzNDgwNSxudWxsLDM0ODMxLDM2MDg3LDI5NDg0LDM4Njg5LDM5ODU2LDEzNzgyLDI5MzYyLDE5NDYzLDMxODI1LDM5MjQyLDE1NTk5MywyNDkyMSwxOTQ2MCw0MDU5OCwyNDk1Nyxu''@;'; put 'put ''dWxsLDIyMzY3LDI0OTQzLDI1MjU0LDI1MTQ1LDI1Mjk0LDE0OTQwLDI1MDU4LDIxNDE4LDE0NDM3MywyNTQ0NCwyNjYyNiwxMzc3OCwyMzg5NSwxNjY4NTAsMzY4MjYsMTY3NDgxLG51bGwsMjA2OTcsMTM4NTY2LDMwOTgyLDIxMjk4LDM4NDU2LDEzNDk3MSwxNjQ4NSxudWxsLDMwNzE4LG51''@;'; put 'put ''bGwsMzE5MzgsMTU1NDE4LDMxOTYyLDMxMjc3LDMyODcwLDMyODY3LDMyMDc3LDI5OTU3LDI5OTM4LDM1MjIwLDMzMzA2LDI2MzgwLDMyODY2LDE2MDkwMiwzMjg1OSwyOTkzNiwzMzAyNywzMDUwMCwzNTIwOSwxNTc2NDQsMzAwMzUsMTU5NDQxLDM0NzI5LDM0NzY2LDMzMjI0LDM0NzAwLDM1''@;'; put 'put ''NDAxLDM2MDEzLDM1NjUxLDMwNTA3LDI5OTQ0LDM0MDEwLDEzODc3LDI3MDU4LDM2MjYyLG51bGwsMzUyNDEsMjk4MDAsMjgwODksMzQ3NTMsMTQ3NDczLDI5OTI3LDE1ODM1LDI5MDQ2LDI0NzQwLDI0OTg4LDE1NTY5LDI5MDI2LDI0Njk1LG51bGwsMzI2MjUsMTY2NzAxLDI5MjY0LDI0ODA5''@;'; put 'put ''LDE5MzI2LDIxMDI0LDE1Mzg0LDE0NjYzMSwxNTUzNTEsMTYxMzY2LDE1Mjg4MSwxMzc1NDAsMTM1OTM0LDE3MDI0MywxNTkxOTYsMTU5OTE3LDIzNzQ1LDE1NjA3NywxNjY0MTUsMTQ1MDE1LDEzMTMxMCwxNTc3NjYsMTUxMzEwLDE3NzYyLDIzMzI3LDE1NjQ5Miw0MDc4NCw0MDYxNCwxNTYy''@;'; put 'put ''NjcsMTIyODgsNjUyOTIsMTIyODksMTIyOTAsNjUyOTQsODIzMSw2NTMwNyw2NTMwNiw2NTMxMSw2NTI4MSw2NTA3Miw4MjMwLDgyMjksNjUxMDQsNjUxMDUsNjUxMDYsMTgzLDY1MTA4LDY1MTA5LDY1MTEwLDY1MTExLDY1MzcyLDgyMTEsNjUwNzMsODIxMiw2NTA3NSw5NTg4LDY1MDc2LDY1''@;'; put 'put ''MTAzLDY1Mjg4LDY1Mjg5LDY1MDc3LDY1MDc4LDY1MzcxLDY1MzczLDY1MDc5LDY1MDgwLDEyMzA4LDEyMzA5LDY1MDgxLDY1MDgyLDEyMzA0LDEyMzA1LDY1MDgzLDY1MDg0LDEyMjk4LDEyMjk5LDY1MDg1LDY1MDg2LDEyMjk2LDEyMjk3LDY1MDg3LDY1MDg4LDEyMzAwLDEyMzAxLDY1MDg5''@;'; put 'put ''LDY1MDkwLDEyMzAyLDEyMzAzLDY1MDkxLDY1MDkyLDY1MTEzLDY1MTE0LDY1MTE1LDY1MTE2LDY1MTE3LDY1MTE4LDgyMTYsODIxNyw4MjIwLDgyMjEsMTIzMTcsMTIzMTgsODI0NSw4MjQyLDY1MjgzLDY1Mjg2LDY1MjkwLDgyNTEsMTY3LDEyMjkxLDk2NzUsOTY3OSw5NjUxLDk2NTAsOTY3''@;'; put 'put ''OCw5NzM0LDk3MzMsOTY3MSw5NjcwLDk2MzMsOTYzMiw5NjYxLDk2NjAsMTI5NjMsODQ1MywxNzUsNjU1MDcsNjUzNDMsNzE3LDY1MDk3LDY1MDk4LDY1MTAxLDY1MTAyLDY1MDk5LDY1MTAwLDY1MTE5LDY1MTIwLDY1MTIxLDY1MjkxLDY1MjkzLDIxNSwyNDcsMTc3LDg3MzAsNjUzMDgsNjUz''@;'; put 'put ''MTAsNjUzMDksODgwNiw4ODA3LDg4MDAsODczNCw4Nzg2LDg4MDEsNjUxMjIsNjUxMjMsNjUxMjQsNjUxMjUsNjUxMjYsNjUzNzQsODc0NSw4NzQ2LDg4NjksODczNiw4NzM1LDg4OTUsMTMyNjYsMTMyNjUsODc0Nyw4NzUwLDg3NTcsODc1Niw5NzkyLDk3OTQsODg1Myw4ODU3LDg1OTMsODU5''@;'; put 'put ''NSw4NTkyLDg1OTQsODU5OCw4NTk5LDg2MDEsODYwMCw4NzQxLDg3MzksNjUyOTUsNjUzNDAsODcyNSw2NTEyOCw2NTI4NCw2NTUwOSwxMjMwNiw2NTUwNCw2NTUwNSw2NTI4NSw2NTMxMiw4NDUxLDg0NTcsNjUxMjksNjUxMzAsNjUxMzEsMTMyNjksMTMyMTIsMTMyMTMsMTMyMTQsMTMyNjIs''@;'; put 'put ''MTMyMTcsMTMxOTgsMTMxOTksMTMyNTIsMTc2LDIwODI1LDIwODI3LDIwODMwLDIwODI5LDIwODMzLDIwODM1LDIxOTkxLDI5OTI5LDMxOTUwLDk2MDEsOTYwMiw5NjAzLDk2MDQsOTYwNSw5NjA2LDk2MDcsOTYwOCw5NjE1LDk2MTQsOTYxMyw5NjEyLDk2MTEsOTYxMCw5NjA5LDk1MzIsOTUy''@;'; put 'put ''NCw5NTE2LDk1MDgsOTUwMCw5NjIwLDk0NzIsOTQ3NCw5NjIxLDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTU4MSw5NTgyLDk1ODQsOTU4Myw5NTUyLDk1NjYsOTU3OCw5NTY5LDk2OTgsOTY5OSw5NzAxLDk3MDAsOTU4NSw5NTg2LDk1ODcsNjUyOTYsNjUyOTcsNjUyOTgsNjUyOTksNjUzMDAsNjUz''@;'; put 'put ''MDEsNjUzMDIsNjUzMDMsNjUzMDQsNjUzMDUsODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUxLDg1NTIsODU1MywxMjMyMSwxMjMyMiwxMjMyMywxMjMyNCwxMjMyNSwxMjMyNiwxMjMyNywxMjMyOCwxMjMyOSwyMTMxMywyMTMxNiwyMTMxNyw2NTMxMyw2NTMxNCw2NTMx''@;'; put 'put ''NSw2NTMxNiw2NTMxNyw2NTMxOCw2NTMxOSw2NTMyMCw2NTMyMSw2NTMyMiw2NTMyMyw2NTMyNCw2NTMyNSw2NTMyNiw2NTMyNyw2NTMyOCw2NTMyOSw2NTMzMCw2NTMzMSw2NTMzMiw2NTMzMyw2NTMzNCw2NTMzNSw2NTMzNiw2NTMzNyw2NTMzOCw2NTM0NSw2NTM0Niw2NTM0Nyw2NTM0OCw2''@;'; put 'put ''NTM0OSw2NTM1MCw2NTM1MSw2NTM1Miw2NTM1Myw2NTM1NCw2NTM1NSw2NTM1Niw2NTM1Nyw2NTM1OCw2NTM1OSw2NTM2MCw2NTM2MSw2NTM2Miw2NTM2Myw2NTM2NCw2NTM2NSw2NTM2Niw2NTM2Nyw2NTM2OCw2NTM2OSw2NTM3MCw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDky''@;'; put 'put ''MSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSwxMjU0OSwx''@;'; put 'put ''MjU1MCwxMjU1MSwxMjU1MiwxMjU1MywxMjU1NCwxMjU1NSwxMjU1NiwxMjU1NywxMjU1OCwxMjU1OSwxMjU2MCwxMjU2MSwxMjU2MiwxMjU2MywxMjU2NCwxMjU2NSwxMjU2NiwxMjU2NywxMjU2OCwxMjU2OSwxMjU3MCwxMjU3MSwxMjU3MiwxMjU3MywxMjU3NCwxMjU3NSwxMjU3NiwxMjU3''@;'; put 'put ''NywxMjU3OCwxMjU3OSwxMjU4MCwxMjU4MSwxMjU4MiwxMjU4MywxMjU4NCwxMjU4NSw3MjksNzEzLDcxNCw3MTEsNzE1LDkyMTYsOTIxNyw5MjE4LDkyMTksOTIyMCw5MjIxLDkyMjIsOTIyMyw5MjI0LDkyMjUsOTIyNiw5MjI3LDkyMjgsOTIyOSw5MjMwLDkyMzEsOTIzMiw5MjMzLDkyMzQs''@;'; put 'put ''OTIzNSw5MjM2LDkyMzcsOTIzOCw5MjM5LDkyNDAsOTI0MSw5MjQyLDkyNDMsOTI0NCw5MjQ1LDkyNDYsOTI0Nyw5MjQ5LDgzNjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE5OTY4LDIwMDU3LDE5OTY5LDE5OTcxLDIwMDM1LDIwMDYxLDIwMTAyLDIwMTA4LDIwMTU0LDIwNzk5LDIwODM3LDIwODQzLDIwOTYwLDIwOTkyLDIwOTkzLDIxMTQ3LDIxMjY5LDIxMzEzLDIx''@;'; put 'put ''MzQwLDIxNDQ4LDE5OTc3LDE5OTc5LDE5OTc2LDE5OTc4LDIwMDExLDIwMDI0LDIwOTYxLDIwMDM3LDIwMDQwLDIwMDYzLDIwMDYyLDIwMTEwLDIwMTI5LDIwODAwLDIwOTk1LDIxMjQyLDIxMzE1LDIxNDQ5LDIxNDc1LDIyMzAzLDIyNzYzLDIyODA1LDIyODIzLDIyODk5LDIzMzc2LDIzMzc3''@;'; put 'put ''LDIzMzc5LDIzNTQ0LDIzNTY3LDIzNTg2LDIzNjA4LDIzNjY1LDI0MDI5LDI0MDM3LDI0MDQ5LDI0MDUwLDI0MDUxLDI0MDYyLDI0MTc4LDI0MzE4LDI0MzMxLDI0MzM5LDI1MTY1LDE5OTg1LDE5OTg0LDE5OTgxLDIwMDEzLDIwMDE2LDIwMDI1LDIwMDQzLDIzNjA5LDIwMTA0LDIwMTEzLDIw''@;'; put 'put ''MTE3LDIwMTE0LDIwMTE2LDIwMTMwLDIwMTYxLDIwMTYwLDIwMTYzLDIwMTY2LDIwMTY3LDIwMTczLDIwMTcwLDIwMTcxLDIwMTY0LDIwODAzLDIwODAxLDIwODM5LDIwODQ1LDIwODQ2LDIwODQ0LDIwODg3LDIwOTgyLDIwOTk4LDIwOTk5LDIxZTMsMjEyNDMsMjEyNDYsMjEyNDcsMjEyNzAs''@;'; put 'put ''MjEzMDUsMjEzMjAsMjEzMTksMjEzMTcsMjEzNDIsMjEzODAsMjE0NTEsMjE0NTAsMjE0NTMsMjI3NjQsMjI4MjUsMjI4MjcsMjI4MjYsMjI4MjksMjMzODAsMjM1NjksMjM1ODgsMjM2MTAsMjM2NjMsMjQwNTIsMjQxODcsMjQzMTksMjQzNDAsMjQzNDEsMjQ1MTUsMjUwOTYsMjUxNDIsMjUx''@;'; put 'put ''NjMsMjUxNjYsMjU5MDMsMjU5OTEsMjYwMDcsMjYwMjAsMjYwNDEsMjYwODUsMjYzNTIsMjYzNzYsMjY0MDgsMjc0MjQsMjc0OTAsMjc1MTMsMjc1OTUsMjc2MDQsMjc2MTEsMjc2NjMsMjc3MDAsMjg3NzksMjkyMjYsMjkyMzgsMjkyNDMsMjkyNTUsMjkyNzMsMjkyNzUsMjkzNTYsMjk1Nzks''@;'; put 'put ''MTk5OTMsMTk5OTAsMTk5ODksMTk5ODgsMTk5OTIsMjAwMjcsMjAwNDUsMjAwNDcsMjAwNDYsMjAxOTcsMjAxODQsMjAxODAsMjAxODEsMjAxODIsMjAxODMsMjAxOTUsMjAxOTYsMjAxODUsMjAxOTAsMjA4MDUsMjA4MDQsMjA4NzMsMjA4NzQsMjA5MDgsMjA5ODUsMjA5ODYsMjA5ODQsMjEw''@;'; put 'put ''MDIsMjExNTIsMjExNTEsMjEyNTMsMjEyNTQsMjEyNzEsMjEyNzcsMjAxOTEsMjEzMjIsMjEzMjEsMjEzNDUsMjEzNDQsMjEzNTksMjEzNTgsMjE0MzUsMjE0ODcsMjE0NzYsMjE0OTEsMjE0ODQsMjE0ODYsMjE0ODEsMjE0ODAsMjE1MDAsMjE0OTYsMjE0OTMsMjE0ODMsMjE0NzgsMjE0ODIs''@;'; put 'put ''MjE0OTAsMjE0ODksMjE0ODgsMjE0NzcsMjE0ODUsMjE0OTksMjIyMzUsMjIyMzQsMjI4MDYsMjI4MzAsMjI4MzMsMjI5MDAsMjI5MDIsMjMzODEsMjM0MjcsMjM2MTIsMjQwNDAsMjQwMzksMjQwMzgsMjQwNjYsMjQwNjcsMjQxNzksMjQxODgsMjQzMjEsMjQzNDQsMjQzNDMsMjQ1MTcsMjUw''@;'; put 'put ''OTgsMjUxNzEsMjUxNzIsMjUxNzAsMjUxNjksMjYwMjEsMjYwODYsMjY0MTQsMjY0MTIsMjY0MTAsMjY0MTEsMjY0MTMsMjc0OTEsMjc1OTcsMjc2NjUsMjc2NjQsMjc3MDQsMjc3MTMsMjc3MTIsMjc3MTAsMjkzNTksMjk1NzIsMjk1NzcsMjk5MTYsMjk5MjYsMjk5NzYsMjk5ODMsMjk5OTIs''@;'; put 'put ''Mjk5OTMsM2U0LDMwMDAxLDMwMDAyLDMwMDAzLDMwMDkxLDMwMzMzLDMwMzgyLDMwMzk5LDMwNDQ2LDMwNjgzLDMwNjkwLDMwNzA3LDMxMDM0LDMxMTY2LDMxMzQ4LDMxNDM1LDE5OTk4LDE5OTk5LDIwMDUwLDIwMDUxLDIwMDczLDIwMTIxLDIwMTMyLDIwMTM0LDIwMTMzLDIwMjIzLDIwMjMz''@;'; put 'put ''LDIwMjQ5LDIwMjM0LDIwMjQ1LDIwMjM3LDIwMjQwLDIwMjQxLDIwMjM5LDIwMjEwLDIwMjE0LDIwMjE5LDIwMjA4LDIwMjExLDIwMjIxLDIwMjI1LDIwMjM1LDIwODA5LDIwODA3LDIwODA2LDIwODA4LDIwODQwLDIwODQ5LDIwODc3LDIwOTEyLDIxMDE1LDIxMDA5LDIxMDEwLDIxMDA2LDIx''@;'; put 'put ''MDE0LDIxMTU1LDIxMjU2LDIxMjgxLDIxMjgwLDIxMzYwLDIxMzYxLDIxNTEzLDIxNTE5LDIxNTE2LDIxNTE0LDIxNTIwLDIxNTA1LDIxNTE1LDIxNTA4LDIxNTIxLDIxNTE3LDIxNTEyLDIxNTA3LDIxNTE4LDIxNTEwLDIxNTIyLDIyMjQwLDIyMjM4LDIyMjM3LDIyMzIzLDIyMzIwLDIyMzEy''@;'; put 'put ''LDIyMzE3LDIyMzE2LDIyMzE5LDIyMzEzLDIyODA5LDIyODEwLDIyODM5LDIyODQwLDIyOTE2LDIyOTA0LDIyOTE1LDIyOTA5LDIyOTA1LDIyOTE0LDIyOTEzLDIzMzgzLDIzMzg0LDIzNDMxLDIzNDMyLDIzNDI5LDIzNDMzLDIzNTQ2LDIzNTc0LDIzNjczLDI0MDMwLDI0MDcwLDI0MTgyLDI0''@;'; put 'put ''MTgwLDI0MzM1LDI0MzQ3LDI0NTM3LDI0NTM0LDI1MTAyLDI1MTAwLDI1MTAxLDI1MTA0LDI1MTg3LDI1MTc5LDI1MTc2LDI1OTEwLDI2MDg5LDI2MDg4LDI2MDkyLDI2MDkzLDI2MzU0LDI2MzU1LDI2Mzc3LDI2NDI5LDI2NDIwLDI2NDE3LDI2NDIxLDI3NDI1LDI3NDkyLDI3NTE1LDI3Njcw''@;'; put 'put ''LDI3NzQxLDI3NzM1LDI3NzM3LDI3NzQzLDI3NzQ0LDI3NzI4LDI3NzMzLDI3NzQ1LDI3NzM5LDI3NzI1LDI3NzI2LDI4Nzg0LDI5Mjc5LDI5Mjc3LDMwMzM0LDMxNDgxLDMxODU5LDMxOTkyLDMyNTY2LDMyNjUwLDMyNzAxLDMyNzY5LDMyNzcxLDMyNzgwLDMyNzg2LDMyODE5LDMyODk1LDMy''@;'; put 'put ''OTA1LDMyOTA3LDMyOTA4LDMzMjUxLDMzMjU4LDMzMjY3LDMzMjc2LDMzMjkyLDMzMzA3LDMzMzExLDMzMzkwLDMzMzk0LDMzNDA2LDM0NDExLDM0ODgwLDM0ODkyLDM0OTE1LDM1MTk5LDM4NDMzLDIwMDE4LDIwMTM2LDIwMzAxLDIwMzAzLDIwMjk1LDIwMzExLDIwMzE4LDIwMjc2LDIwMzE1''@;'; put 'put ''LDIwMzA5LDIwMjcyLDIwMzA0LDIwMzA1LDIwMjg1LDIwMjgyLDIwMjgwLDIwMjkxLDIwMzA4LDIwMjg0LDIwMjk0LDIwMzIzLDIwMzE2LDIwMzIwLDIwMjcxLDIwMzAyLDIwMjc4LDIwMzEzLDIwMzE3LDIwMjk2LDIwMzE0LDIwODEyLDIwODExLDIwODEzLDIwODUzLDIwOTE4LDIwOTE5LDIx''@;'; put 'put ''MDI5LDIxMDI4LDIxMDMzLDIxMDM0LDIxMDMyLDIxMTYzLDIxMTYxLDIxMTYyLDIxMTY0LDIxMjgzLDIxMzYzLDIxMzY1LDIxNTMzLDIxNTQ5LDIxNTM0LDIxNTY2LDIxNTQyLDIxNTgyLDIxNTQzLDIxNTc0LDIxNTcxLDIxNTU1LDIxNTc2LDIxNTcwLDIxNTMxLDIxNTQ1LDIxNTc4LDIxNTYx''@;'; put 'put ''LDIxNTYzLDIxNTYwLDIxNTUwLDIxNTU3LDIxNTU4LDIxNTM2LDIxNTY0LDIxNTY4LDIxNTUzLDIxNTQ3LDIxNTM1LDIxNTQ4LDIyMjUwLDIyMjU2LDIyMjQ0LDIyMjUxLDIyMzQ2LDIyMzUzLDIyMzM2LDIyMzQ5LDIyMzQzLDIyMzUwLDIyMzM0LDIyMzUyLDIyMzUxLDIyMzMxLDIyNzY3LDIy''@;'; put 'put ''ODQ2LDIyOTQxLDIyOTMwLDIyOTUyLDIyOTQyLDIyOTQ3LDIyOTM3LDIyOTM0LDIyOTI1LDIyOTQ4LDIyOTMxLDIyOTIyLDIyOTQ5LDIzMzg5LDIzMzg4LDIzMzg2LDIzMzg3LDIzNDM2LDIzNDM1LDIzNDM5LDIzNTk2LDIzNjE2LDIzNjE3LDIzNjE1LDIzNjE0LDIzNjk2LDIzNjk3LDIzNzAw''@;'; put 'put ''LDIzNjkyLDI0MDQzLDI0MDc2LDI0MjA3LDI0MTk5LDI0MjAyLDI0MzExLDI0MzI0LDI0MzUxLDI0NDIwLDI0NDE4LDI0NDM5LDI0NDQxLDI0NTM2LDI0NTI0LDI0NTM1LDI0NTI1LDI0NTYxLDI0NTU1LDI0NTY4LDI0NTU0LDI1MTA2LDI1MTA1LDI1MjIwLDI1MjM5LDI1MjM4LDI1MjE2LDI1''@;'; put 'put ''MjA2LDI1MjI1LDI1MTk3LDI1MjI2LDI1MjEyLDI1MjE0LDI1MjA5LDI1MjAzLDI1MjM0LDI1MTk5LDI1MjQwLDI1MTk4LDI1MjM3LDI1MjM1LDI1MjMzLDI1MjIyLDI1OTEzLDI1OTE1LDI1OTEyLDI2MDk3LDI2MzU2LDI2NDYzLDI2NDQ2LDI2NDQ3LDI2NDQ4LDI2NDQ5LDI2NDYwLDI2NDU0''@;'; put 'put ''LDI2NDYyLDI2NDQxLDI2NDM4LDI2NDY0LDI2NDUxLDI2NDU1LDI3NDkzLDI3NTk5LDI3NzE0LDI3NzQyLDI3ODAxLDI3Nzc3LDI3Nzg0LDI3Nzg1LDI3NzgxLDI3ODAzLDI3NzU0LDI3NzcwLDI3NzkyLDI3NzYwLDI3Nzg4LDI3NzUyLDI3Nzk4LDI3Nzk0LDI3NzczLDI3Nzc5LDI3NzYyLDI3''@;'; put 'put ''Nzc0LDI3NzY0LDI3NzgyLDI3NzY2LDI3Nzg5LDI3Nzk2LDI3ODAwLDI3Nzc4LDI4NzkwLDI4Nzk2LDI4Nzk3LDI4NzkyLDI5MjgyLDI5MjgxLDI5MjgwLDI5MzgwLDI5Mzc4LDI5NTkwLDI5OTk2LDI5OTk1LDMwMDA3LDMwMDA4LDMwMzM4LDMwNDQ3LDMwNjkxLDMxMTY5LDMxMTY4LDMxMTY3''@;'; put 'put ''LDMxMzUwLDMxOTk1LDMyNTk3LDMyOTE4LDMyOTE1LDMyOTI1LDMyOTIwLDMyOTIzLDMyOTIyLDMyOTQ2LDMzMzkxLDMzNDI2LDMzNDE5LDMzNDIxLDM1MjExLDM1MjgyLDM1MzI4LDM1ODk1LDM1OTEwLDM1OTI1LDM1OTk3LDM2MTk2LDM2MjA4LDM2Mjc1LDM2NTIzLDM2NTU0LDM2NzYzLDM2''@;'; put 'put ''Nzg0LDM2ODAyLDM2ODA2LDM2ODA1LDM2ODA0LDI0MDMzLDM3MDA5LDM3MDI2LDM3MDM0LDM3MDMwLDM3MDI3LDM3MTkzLDM3MzE4LDM3MzI0LDM4NDUwLDM4NDQ2LDM4NDQ5LDM4NDQyLDM4NDQ0LDIwMDA2LDIwMDU0LDIwMDgzLDIwMTA3LDIwMTIzLDIwMTI2LDIwMTM5LDIwMTQwLDIwMzM1''@;'; put 'put ''LDIwMzgxLDIwMzY1LDIwMzM5LDIwMzUxLDIwMzMyLDIwMzc5LDIwMzYzLDIwMzU4LDIwMzU1LDIwMzM2LDIwMzQxLDIwMzYwLDIwMzI5LDIwMzQ3LDIwMzc0LDIwMzUwLDIwMzY3LDIwMzY5LDIwMzQ2LDIwODIwLDIwODE4LDIwODIxLDIwODQxLDIwODU1LDIwODU0LDIwODU2LDIwOTI1LDIw''@;'; put 'put ''OTg5LDIxMDUxLDIxMDQ4LDIxMDQ3LDIxMDUwLDIxMDQwLDIxMDM4LDIxMDQ2LDIxMDU3LDIxMTgyLDIxMTc5LDIxMzMwLDIxMzMyLDIxMzMxLDIxMzI5LDIxMzUwLDIxMzY3LDIxMzY4LDIxMzY5LDIxNDYyLDIxNDYwLDIxNDYzLDIxNjE5LDIxNjIxLDIxNjU0LDIxNjI0LDIxNjUzLDIxNjMy''@;'; put 'put ''LDIxNjI3LDIxNjIzLDIxNjM2LDIxNjUwLDIxNjM4LDIxNjI4LDIxNjQ4LDIxNjE3LDIxNjIyLDIxNjQ0LDIxNjU4LDIxNjAyLDIxNjA4LDIxNjQzLDIxNjI5LDIxNjQ2LDIyMjY2LDIyNDAzLDIyMzkxLDIyMzc4LDIyMzc3LDIyMzY5LDIyMzc0LDIyMzcyLDIyMzk2LDIyODEyLDIyODU3LDIy''@;'; put 'put ''ODU1LDIyODU2LDIyODUyLDIyODY4LDIyOTc0LDIyOTcxLDIyOTk2LDIyOTY5LDIyOTU4LDIyOTkzLDIyOTgyLDIyOTkyLDIyOTg5LDIyOTg3LDIyOTk1LDIyOTg2LDIyOTU5LDIyOTYzLDIyOTk0LDIyOTgxLDIzMzkxLDIzMzk2LDIzMzk1LDIzNDQ3LDIzNDUwLDIzNDQ4LDIzNDUyLDIzNDQ5''@;'; put 'put ''LDIzNDUxLDIzNTc4LDIzNjI0LDIzNjIxLDIzNjIyLDIzNzM1LDIzNzEzLDIzNzM2LDIzNzIxLDIzNzIzLDIzNzI5LDIzNzMxLDI0MDg4LDI0MDkwLDI0MDg2LDI0MDg1LDI0MDkxLDI0MDgxLDI0MTg0LDI0MjE4LDI0MjE1LDI0MjIwLDI0MjEzLDI0MjE0LDI0MzEwLDI0MzU4LDI0MzU5LDI0''@;'; put 'put ''MzYxLDI0NDQ4LDI0NDQ5LDI0NDQ3LDI0NDQ0LDI0NTQxLDI0NTQ0LDI0NTczLDI0NTY1LDI0NTc1LDI0NTkxLDI0NTk2LDI0NjIzLDI0NjI5LDI0NTk4LDI0NjE4LDI0NTk3LDI0NjA5LDI0NjE1LDI0NjE3LDI0NjE5LDI0NjAzLDI1MTEwLDI1MTA5LDI1MTUxLDI1MTUwLDI1MTUyLDI1MjE1''@;'; put 'put ''LDI1Mjg5LDI1MjkyLDI1Mjg0LDI1Mjc5LDI1MjgyLDI1MjczLDI1Mjk4LDI1MzA3LDI1MjU5LDI1Mjk5LDI1MzAwLDI1MjkxLDI1Mjg4LDI1MjU2LDI1Mjc3LDI1Mjc2LDI1Mjk2LDI1MzA1LDI1Mjg3LDI1MjkzLDI1MjY5LDI1MzA2LDI1MjY1LDI1MzA0LDI1MzAyLDI1MzAzLDI1Mjg2LDI1''@;'; put 'put ''MjYwLDI1Mjk0LDI1OTE4LDI2MDIzLDI2MDQ0LDI2MTA2LDI2MTMyLDI2MTMxLDI2MTI0LDI2MTE4LDI2MTE0LDI2MTI2LDI2MTEyLDI2MTI3LDI2MTMzLDI2MTIyLDI2MTE5LDI2MzgxLDI2Mzc5LDI2NDc3LDI2NTA3LDI2NTE3LDI2NDgxLDI2NTI0LDI2NDgzLDI2NDg3LDI2NTAzLDI2NTI1''@;'; put 'put ''LDI2NTE5LDI2NDc5LDI2NDgwLDI2NDk1LDI2NTA1LDI2NDk0LDI2NTEyLDI2NDg1LDI2NTIyLDI2NTE1LDI2NDkyLDI2NDc0LDI2NDgyLDI3NDI3LDI3NDk0LDI3NDk1LDI3NTE5LDI3NjY3LDI3Njc1LDI3ODc1LDI3ODgwLDI3ODkxLDI3ODI1LDI3ODUyLDI3ODc3LDI3ODI3LDI3ODM3LDI3''@;'; put 'put ''ODM4LDI3ODM2LDI3ODc0LDI3ODE5LDI3ODYxLDI3ODU5LDI3ODMyLDI3ODQ0LDI3ODMzLDI3ODQxLDI3ODIyLDI3ODYzLDI3ODQ1LDI3ODg5LDI3ODM5LDI3ODM1LDI3ODczLDI3ODY3LDI3ODUwLDI3ODIwLDI3ODg3LDI3ODY4LDI3ODYyLDI3ODcyLDI4ODIxLDI4ODE0LDI4ODE4LDI4ODEw''@;'; put 'put ''LDI4ODI1LDI5MjI4LDI5MjI5LDI5MjQwLDI5MjU2LDI5Mjg3LDI5Mjg5LDI5Mzc2LDI5MzkwLDI5NDAxLDI5Mzk5LDI5MzkyLDI5NjA5LDI5NjA4LDI5NTk5LDI5NjExLDI5NjA1LDMwMDEzLDMwMTA5LDMwMTA1LDMwMTA2LDMwMzQwLDMwNDAyLDMwNDUwLDMwNDUyLDMwNjkzLDMwNzE3LDMx''@;'; put 'put ''MDM4LDMxMDQwLDMxMDQxLDMxMTc3LDMxMTc2LDMxMzU0LDMxMzUzLDMxNDgyLDMxOTk4LDMyNTk2LDMyNjUyLDMyNjUxLDMyNzczLDMyOTU0LDMyOTMzLDMyOTMwLDMyOTQ1LDMyOTI5LDMyOTM5LDMyOTM3LDMyOTQ4LDMyOTM4LDMyOTQzLDMzMjUzLDMzMjc4LDMzMjkzLDMzNDU5LDMzNDM3''@;'; put 'put ''LDMzNDMzLDMzNDUzLDMzNDY5LDMzNDM5LDMzNDY1LDMzNDU3LDMzNDUyLDMzNDQ1LDMzNDU1LDMzNDY0LDMzNDQzLDMzNDU2LDMzNDcwLDMzNDYzLDM0MzgyLDM0NDE3LDIxMDIxLDM0OTIwLDM2NTU1LDM2ODE0LDM2ODIwLDM2ODE3LDM3MDQ1LDM3MDQ4LDM3MDQxLDM3MDQ2LDM3MzE5LDM3''@;'; put 'put ''MzI5LDM4MjYzLDM4MjcyLDM4NDI4LDM4NDY0LDM4NDYzLDM4NDU5LDM4NDY4LDM4NDY2LDM4NTg1LDM4NjMyLDM4NzM4LDM4NzUwLDIwMTI3LDIwMTQxLDIwMTQyLDIwNDQ5LDIwNDA1LDIwMzk5LDIwNDE1LDIwNDQ4LDIwNDMzLDIwNDMxLDIwNDQ1LDIwNDE5LDIwNDA2LDIwNDQwLDIwNDQ3''@;'; put 'put ''LDIwNDI2LDIwNDM5LDIwMzk4LDIwNDMyLDIwNDIwLDIwNDE4LDIwNDQyLDIwNDMwLDIwNDQ2LDIwNDA3LDIwODIzLDIwODgyLDIwODgxLDIwODk2LDIxMDcwLDIxMDU5LDIxMDY2LDIxMDY5LDIxMDY4LDIxMDY3LDIxMDYzLDIxMTkxLDIxMTkzLDIxMTg3LDIxMTg1LDIxMjYxLDIxMzM1LDIx''@;'; put 'put ''MzcxLDIxNDAyLDIxNDY3LDIxNjc2LDIxNjk2LDIxNjcyLDIxNzEwLDIxNzA1LDIxNjg4LDIxNjcwLDIxNjgzLDIxNzAzLDIxNjk4LDIxNjkzLDIxNjc0LDIxNjk3LDIxNzAwLDIxNzA0LDIxNjc5LDIxNjc1LDIxNjgxLDIxNjkxLDIxNjczLDIxNjcxLDIxNjk1LDIyMjcxLDIyNDAyLDIyNDEx''@;'; put 'put ''LDIyNDMyLDIyNDM1LDIyNDM0LDIyNDc4LDIyNDQ2LDIyNDE5LDIyODY5LDIyODY1LDIyODYzLDIyODYyLDIyODY0LDIzMDA0LDIzZTMsMjMwMzksMjMwMTEsMjMwMTYsMjMwNDMsMjMwMTMsMjMwMTgsMjMwMDIsMjMwMTQsMjMwNDEsMjMwMzUsMjM0MDEsMjM0NTksMjM0NjIsMjM0NjAsMjM0''@;'; put 'put ''NTgsMjM0NjEsMjM1NTMsMjM2MzAsMjM2MzEsMjM2MjksMjM2MjcsMjM3NjksMjM3NjIsMjQwNTUsMjQwOTMsMjQxMDEsMjQwOTUsMjQxODksMjQyMjQsMjQyMzAsMjQzMTQsMjQzMjgsMjQzNjUsMjQ0MjEsMjQ0NTYsMjQ0NTMsMjQ0NTgsMjQ0NTksMjQ0NTUsMjQ0NjAsMjQ0NTcsMjQ1OTQs''@;'; put 'put ''MjQ2MDUsMjQ2MDgsMjQ2MTMsMjQ1OTAsMjQ2MTYsMjQ2NTMsMjQ2ODgsMjQ2ODAsMjQ2NzQsMjQ2NDYsMjQ2NDMsMjQ2ODQsMjQ2ODMsMjQ2ODIsMjQ2NzYsMjUxNTMsMjUzMDgsMjUzNjYsMjUzNTMsMjUzNDAsMjUzMjUsMjUzNDUsMjUzMjYsMjUzNDEsMjUzNTEsMjUzMjksMjUzMzUsMjUz''@;'; put 'put ''MjcsMjUzMjQsMjUzNDIsMjUzMzIsMjUzNjEsMjUzNDYsMjU5MTksMjU5MjUsMjYwMjcsMjYwNDUsMjYwODIsMjYxNDksMjYxNTcsMjYxNDQsMjYxNTEsMjYxNTksMjYxNDMsMjYxNTIsMjYxNjEsMjYxNDgsMjYzNTksMjY2MjMsMjY1NzksMjY2MDksMjY1ODAsMjY1NzYsMjY2MDQsMjY1NTAs''@;'; put 'put ''MjY1NDMsMjY2MTMsMjY2MDEsMjY2MDcsMjY1NjQsMjY1NzcsMjY1NDgsMjY1ODYsMjY1OTcsMjY1NTIsMjY1NzUsMjY1OTAsMjY2MTEsMjY1NDQsMjY1ODUsMjY1OTQsMjY1ODksMjY1NzgsMjc0OTgsMjc1MjMsMjc1MjYsMjc1NzMsMjc2MDIsMjc2MDcsMjc2NzksMjc4NDksMjc5MTUsMjc5''@;'; put 'put ''NTQsMjc5NDYsMjc5NjksMjc5NDEsMjc5MTYsMjc5NTMsMjc5MzQsMjc5MjcsMjc5NjMsMjc5NjUsMjc5NjYsMjc5NTgsMjc5MzEsMjc4OTMsMjc5NjEsMjc5NDMsMjc5NjAsMjc5NDUsMjc5NTAsMjc5NTcsMjc5MTgsMjc5NDcsMjg4NDMsMjg4NTgsMjg4NTEsMjg4NDQsMjg4NDcsMjg4NDUs''@;'; put 'put ''Mjg4NTYsMjg4NDYsMjg4MzYsMjkyMzIsMjkyOTgsMjkyOTUsMjkzMDAsMjk0MTcsMjk0MDgsMjk0MDksMjk2MjMsMjk2NDIsMjk2MjcsMjk2MTgsMjk2NDUsMjk2MzIsMjk2MTksMjk5NzgsMjk5OTcsMzAwMzEsMzAwMjgsMzAwMzAsMzAwMjcsMzAxMjMsMzAxMTYsMzAxMTcsMzAxMTQsMzAx''@;'; put 'put ''MTUsMzAzMjgsMzAzNDIsMzAzNDMsMzAzNDQsMzA0MDgsMzA0MDYsMzA0MDMsMzA0MDUsMzA0NjUsMzA0NTcsMzA0NTYsMzA0NzMsMzA0NzUsMzA0NjIsMzA0NjAsMzA0NzEsMzA2ODQsMzA3MjIsMzA3NDAsMzA3MzIsMzA3MzMsMzEwNDYsMzEwNDksMzEwNDgsMzEwNDcsMzExNjEsMzExNjIs''@;'; put 'put ''MzExODUsMzExODYsMzExNzksMzEzNTksMzEzNjEsMzE0ODcsMzE0ODUsMzE4NjksMzIwMDIsMzIwMDUsMzJlMywzMjAwOSwzMjAwNywzMjAwNCwzMjAwNiwzMjU2OCwzMjY1NCwzMjcwMywzMjc3MiwzMjc4NCwzMjc4MSwzMjc4NSwzMjgyMiwzMjk4MiwzMjk5NywzMjk4NiwzMjk2MywzMjk2''@;'; put 'put ''NCwzMjk3MiwzMjk5MywzMjk4NywzMjk3NCwzMjk5MCwzMjk5NiwzMjk4OSwzMzI2OCwzMzMxNCwzMzUxMSwzMzUzOSwzMzU0MSwzMzUwNywzMzQ5OSwzMzUxMCwzMzU0MCwzMzUwOSwzMzUzOCwzMzU0NSwzMzQ5MCwzMzQ5NSwzMzUyMSwzMzUzNywzMzUwMCwzMzQ5MiwzMzQ4OSwzMzUwMiwz''@;'; put 'put ''MzQ5MSwzMzUwMywzMzUxOSwzMzU0MiwzNDM4NCwzNDQyNSwzNDQyNywzNDQyNiwzNDg5MywzNDkyMywzNTIwMSwzNTI4NCwzNTMzNiwzNTMzMCwzNTMzMSwzNTk5OCwzNmUzLDM2MjEyLDM2MjExLDM2Mjc2LDM2NTU3LDM2NTU2LDM2ODQ4LDM2ODM4LDM2ODM0LDM2ODQyLDM2ODM3LDM2ODQ1''@;'; put 'put ''LDM2ODQzLDM2ODM2LDM2ODQwLDM3MDY2LDM3MDcwLDM3MDU3LDM3MDU5LDM3MTk1LDM3MTk0LDM3MzI1LDM4Mjc0LDM4NDgwLDM4NDc1LDM4NDc2LDM4NDc3LDM4NzU0LDM4NzYxLDM4ODU5LDM4ODkzLDM4ODk5LDM4OTEzLDM5MDgwLDM5MTMxLDM5MTM1LDM5MzE4LDM5MzIxLDIwMDU2LDIw''@;'; put 'put ''MTQ3LDIwNDkyLDIwNDkzLDIwNTE1LDIwNDYzLDIwNTE4LDIwNTE3LDIwNDcyLDIwNTIxLDIwNTAyLDIwNDg2LDIwNTQwLDIwNTExLDIwNTA2LDIwNDk4LDIwNDk3LDIwNDc0LDIwNDgwLDIwNTAwLDIwNTIwLDIwNDY1LDIwNTEzLDIwNDkxLDIwNTA1LDIwNTA0LDIwNDY3LDIwNDYyLDIwNTI1''@;'; put 'put ''LDIwNTIyLDIwNDc4LDIwNTIzLDIwNDg5LDIwODYwLDIwOTAwLDIwOTAxLDIwODk4LDIwOTQxLDIwOTQwLDIwOTM0LDIwOTM5LDIxMDc4LDIxMDg0LDIxMDc2LDIxMDgzLDIxMDg1LDIxMjkwLDIxMzc1LDIxNDA3LDIxNDA1LDIxNDcxLDIxNzM2LDIxNzc2LDIxNzYxLDIxODE1LDIxNzU2LDIx''@;'; put 'put ''NzMzLDIxNzQ2LDIxNzY2LDIxNzU0LDIxNzgwLDIxNzM3LDIxNzQxLDIxNzI5LDIxNzY5LDIxNzQyLDIxNzM4LDIxNzM0LDIxNzk5LDIxNzY3LDIxNzU3LDIxNzc1LDIyMjc1LDIyMjc2LDIyNDY2LDIyNDg0LDIyNDc1LDIyNDY3LDIyNTM3LDIyNzk5LDIyODcxLDIyODcyLDIyODc0LDIzMDU3''@;'; put 'put ''LDIzMDY0LDIzMDY4LDIzMDcxLDIzMDY3LDIzMDU5LDIzMDIwLDIzMDcyLDIzMDc1LDIzMDgxLDIzMDc3LDIzMDUyLDIzMDQ5LDIzNDAzLDIzNjQwLDIzNDcyLDIzNDc1LDIzNDc4LDIzNDc2LDIzNDcwLDIzNDc3LDIzNDgxLDIzNDgwLDIzNTU2LDIzNjMzLDIzNjM3LDIzNjMyLDIzNzg5LDIz''@;'; put 'put ''ODA1LDIzODAzLDIzNzg2LDIzNzg0LDIzNzkyLDIzNzk4LDIzODA5LDIzNzk2LDI0MDQ2LDI0MTA5LDI0MTA3LDI0MjM1LDI0MjM3LDI0MjMxLDI0MzY5LDI0NDY2LDI0NDY1LDI0NDY0LDI0NjY1LDI0Njc1LDI0Njc3LDI0NjU2LDI0NjYxLDI0Njg1LDI0NjgxLDI0Njg3LDI0NzA4LDI0NzM1''@;'; put 'put ''LDI0NzMwLDI0NzE3LDI0NzI0LDI0NzE2LDI0NzA5LDI0NzI2LDI1MTU5LDI1MzMxLDI1MzUyLDI1MzQzLDI1NDIyLDI1NDA2LDI1MzkxLDI1NDI5LDI1NDEwLDI1NDE0LDI1NDIzLDI1NDE3LDI1NDAyLDI1NDI0LDI1NDA1LDI1Mzg2LDI1Mzg3LDI1Mzg0LDI1NDIxLDI1NDIwLDI1OTI4LDI1''@;'; put 'put ''OTI5LDI2MDA5LDI2MDQ5LDI2MDUzLDI2MTc4LDI2MTg1LDI2MTkxLDI2MTc5LDI2MTk0LDI2MTg4LDI2MTgxLDI2MTc3LDI2MzYwLDI2Mzg4LDI2Mzg5LDI2MzkxLDI2NjU3LDI2NjgwLDI2Njk2LDI2Njk0LDI2NzA3LDI2NjgxLDI2NjkwLDI2NzA4LDI2NjY1LDI2ODAzLDI2NjQ3LDI2NzAw''@;'; put 'put ''LDI2NzA1LDI2Njg1LDI2NjEyLDI2NzA0LDI2Njg4LDI2Njg0LDI2NjkxLDI2NjY2LDI2NjkzLDI2NjQzLDI2NjQ4LDI2Njg5LDI3NTMwLDI3NTI5LDI3NTc1LDI3NjgzLDI3Njg3LDI3Njg4LDI3Njg2LDI3Njg0LDI3ODg4LDI4MDEwLDI4MDUzLDI4MDQwLDI4MDM5LDI4MDA2LDI4MDI0LDI4''@;'; put 'put ''MDIzLDI3OTkzLDI4MDUxLDI4MDEyLDI4MDQxLDI4MDE0LDI3OTk0LDI4MDIwLDI4MDA5LDI4MDQ0LDI4MDQyLDI4MDI1LDI4MDM3LDI4MDA1LDI4MDUyLDI4ODc0LDI4ODg4LDI4OTAwLDI4ODg5LDI4ODcyLDI4ODc5LDI5MjQxLDI5MzA1LDI5NDM2LDI5NDMzLDI5NDM3LDI5NDMyLDI5NDMx''@;'; put 'put ''LDI5NTc0LDI5Njc3LDI5NzA1LDI5Njc4LDI5NjY0LDI5Njc0LDI5NjYyLDMwMDM2LDMwMDQ1LDMwMDQ0LDMwMDQyLDMwMDQxLDMwMTQyLDMwMTQ5LDMwMTUxLDMwMTMwLDMwMTMxLDMwMTQxLDMwMTQwLDMwMTM3LDMwMTQ2LDMwMTM2LDMwMzQ3LDMwMzg0LDMwNDEwLDMwNDEzLDMwNDE0LDMw''@;'; put 'put ''NTA1LDMwNDk1LDMwNDk2LDMwNTA0LDMwNjk3LDMwNzY4LDMwNzU5LDMwNzc2LDMwNzQ5LDMwNzcyLDMwNzc1LDMwNzU3LDMwNzY1LDMwNzUyLDMwNzUxLDMwNzcwLDMxMDYxLDMxMDU2LDMxMDcyLDMxMDcxLDMxMDYyLDMxMDcwLDMxMDY5LDMxMDYzLDMxMDY2LDMxMjA0LDMxMjAzLDMxMjA3''@;'; put 'put ''LDMxMTk5LDMxMjA2LDMxMjA5LDMxMTkyLDMxMzY0LDMxMzY4LDMxNDQ5LDMxNDk0LDMxNTA1LDMxODgxLDMyMDMzLDMyMDIzLDMyMDExLDMyMDEwLDMyMDMyLDMyMDM0LDMyMDIwLDMyMDE2LDMyMDIxLDMyMDI2LDMyMDI4LDMyMDEzLDMyMDI1LDMyMDI3LDMyNTcwLDMyNjA3LDMyNjYwLDMy''@;'; put 'put ''NzA5LDMyNzA1LDMyNzc0LDMyNzkyLDMyNzg5LDMyNzkzLDMyNzkxLDMyODI5LDMyODMxLDMzMDA5LDMzMDI2LDMzMDA4LDMzMDI5LDMzMDA1LDMzMDEyLDMzMDMwLDMzMDE2LDMzMDExLDMzMDMyLDMzMDIxLDMzMDM0LDMzMDIwLDMzMDA3LDMzMjYxLDMzMjYwLDMzMjgwLDMzMjk2LDMzMzIy''@;'; put 'put ''LDMzMzIzLDMzMzIwLDMzMzI0LDMzNDY3LDMzNTc5LDMzNjE4LDMzNjIwLDMzNjEwLDMzNTkyLDMzNjE2LDMzNjA5LDMzNTg5LDMzNTg4LDMzNjE1LDMzNTg2LDMzNTkzLDMzNTkwLDMzNTU5LDMzNjAwLDMzNTg1LDMzNTc2LDMzNjAzLDM0Mzg4LDM0NDQyLDM0NDc0LDM0NDUxLDM0NDY4LDM0''@;'; put 'put ''NDczLDM0NDQ0LDM0NDY3LDM0NDYwLDM0OTI4LDM0OTM1LDM0OTQ1LDM0OTQ2LDM0OTQxLDM0OTM3LDM1MzUyLDM1MzQ0LDM1MzQyLDM1MzQwLDM1MzQ5LDM1MzM4LDM1MzUxLDM1MzQ3LDM1MzUwLDM1MzQzLDM1MzQ1LDM1OTEyLDM1OTYyLDM1OTYxLDM2MDAxLDM2MDAyLDM2MjE1LDM2NTI0''@;'; put 'put ''LDM2NTYyLDM2NTY0LDM2NTU5LDM2Nzg1LDM2ODY1LDM2ODcwLDM2ODU1LDM2ODY0LDM2ODU4LDM2ODUyLDM2ODY3LDM2ODYxLDM2ODY5LDM2ODU2LDM3MDEzLDM3MDg5LDM3MDg1LDM3MDkwLDM3MjAyLDM3MTk3LDM3MTk2LDM3MzM2LDM3MzQxLDM3MzM1LDM3MzQwLDM3MzM3LDM4Mjc1LDM4''@;'; put 'put ''NDk4LDM4NDk5LDM4NDk3LDM4NDkxLDM4NDkzLDM4NTAwLDM4NDg4LDM4NDk0LDM4NTg3LDM5MTM4LDM5MzQwLDM5NTkyLDM5NjQwLDM5NzE3LDM5NzMwLDM5NzQwLDIwMDk0LDIwNjAyLDIwNjA1LDIwNTcyLDIwNTUxLDIwNTQ3LDIwNTU2LDIwNTcwLDIwNTUzLDIwNTgxLDIwNTk4LDIwNTU4''@;'; put 'put ''LDIwNTY1LDIwNTk3LDIwNTk2LDIwNTk5LDIwNTU5LDIwNDk1LDIwNTkxLDIwNTg5LDIwODI4LDIwODg1LDIwOTc2LDIxMDk4LDIxMTAzLDIxMjAyLDIxMjA5LDIxMjA4LDIxMjA1LDIxMjY0LDIxMjYzLDIxMjczLDIxMzExLDIxMzEyLDIxMzEwLDIxNDQzLDI2MzY0LDIxODMwLDIxODY2LDIx''@;'; put 'put ''ODYyLDIxODI4LDIxODU0LDIxODU3LDIxODI3LDIxODM0LDIxODA5LDIxODQ2LDIxODM5LDIxODQ1LDIxODA3LDIxODYwLDIxODE2LDIxODA2LDIxODUyLDIxODA0LDIxODU5LDIxODExLDIxODI1LDIxODQ3LDIyMjgwLDIyMjgzLDIyMjgxLDIyNDk1LDIyNTMzLDIyNTM4LDIyNTM0LDIyNDk2''@;'; put 'put ''LDIyNTAwLDIyNTIyLDIyNTMwLDIyNTgxLDIyNTE5LDIyNTIxLDIyODE2LDIyODgyLDIzMDk0LDIzMTA1LDIzMTEzLDIzMTQyLDIzMTQ2LDIzMTA0LDIzMTAwLDIzMTM4LDIzMTMwLDIzMTEwLDIzMTE0LDIzNDA4LDIzNDk1LDIzNDkzLDIzNDkyLDIzNDkwLDIzNDg3LDIzNDk0LDIzNTYxLDIz''@;'; put 'put ''NTYwLDIzNTU5LDIzNjQ4LDIzNjQ0LDIzNjQ1LDIzODE1LDIzODE0LDIzODIyLDIzODM1LDIzODMwLDIzODQyLDIzODI1LDIzODQ5LDIzODI4LDIzODMzLDIzODQ0LDIzODQ3LDIzODMxLDI0MDM0LDI0MTIwLDI0MTE4LDI0MTE1LDI0MTE5LDI0MjQ3LDI0MjQ4LDI0MjQ2LDI0MjQ1LDI0MjU0''@;'; put 'put ''LDI0MzczLDI0Mzc1LDI0NDA3LDI0NDI4LDI0NDI1LDI0NDI3LDI0NDcxLDI0NDczLDI0NDc4LDI0NDcyLDI0NDgxLDI0NDgwLDI0NDc2LDI0NzAzLDI0NzM5LDI0NzEzLDI0NzM2LDI0NzQ0LDI0Nzc5LDI0NzU2LDI0ODA2LDI0NzY1LDI0NzczLDI0NzYzLDI0NzU3LDI0Nzk2LDI0NzY0LDI0''@;'; put 'put ''NzkyLDI0Nzg5LDI0Nzc0LDI0Nzk5LDI0NzYwLDI0Nzk0LDI0Nzc1LDI1MTE0LDI1MTE1LDI1MTYwLDI1NTA0LDI1NTExLDI1NDU4LDI1NDk0LDI1NTA2LDI1NTA5LDI1NDYzLDI1NDQ3LDI1NDk2LDI1NTE0LDI1NDU3LDI1NTEzLDI1NDgxLDI1NDc1LDI1NDk5LDI1NDUxLDI1NTEyLDI1NDc2''@;'; put 'put ''LDI1NDgwLDI1NDk3LDI1NTA1LDI1NTE2LDI1NDkwLDI1NDg3LDI1NDcyLDI1NDY3LDI1NDQ5LDI1NDQ4LDI1NDY2LDI1OTQ5LDI1OTQyLDI1OTM3LDI1OTQ1LDI1OTQzLDIxODU1LDI1OTM1LDI1OTQ0LDI1OTQxLDI1OTQwLDI2MDEyLDI2MDExLDI2MDI4LDI2MDYzLDI2MDU5LDI2MDYwLDI2''@;'; put 'put ''MDYyLDI2MjA1LDI2MjAyLDI2MjEyLDI2MjE2LDI2MjE0LDI2MjA2LDI2MzYxLDIxMjA3LDI2Mzk1LDI2NzUzLDI2Nzk5LDI2Nzg2LDI2NzcxLDI2ODA1LDI2NzUxLDI2NzQyLDI2ODAxLDI2NzkxLDI2Nzc1LDI2ODAwLDI2NzU1LDI2ODIwLDI2Nzk3LDI2NzU4LDI2NzU3LDI2NzcyLDI2Nzgx''@;'; put 'put ''LDI2NzkyLDI2NzgzLDI2Nzg1LDI2NzU0LDI3NDQyLDI3NTc4LDI3NjI3LDI3NjI4LDI3NjkxLDI4MDQ2LDI4MDkyLDI4MTQ3LDI4MTIxLDI4MDgyLDI4MTI5LDI4MTA4LDI4MTMyLDI4MTU1LDI4MTU0LDI4MTY1LDI4MTAzLDI4MTA3LDI4MDc5LDI4MTEzLDI4MDc4LDI4MTI2LDI4MTUzLDI4''@;'; put 'put ''MDg4LDI4MTUxLDI4MTQ5LDI4MTAxLDI4MTE0LDI4MTg2LDI4MDg1LDI4MTIyLDI4MTM5LDI4MTIwLDI4MTM4LDI4MTQ1LDI4MTQyLDI4MTM2LDI4MTAyLDI4MTAwLDI4MDc0LDI4MTQwLDI4MDk1LDI4MTM0LDI4OTIxLDI4OTM3LDI4OTM4LDI4OTI1LDI4OTExLDI5MjQ1LDI5MzA5LDI5MzEz''@;'; put 'put ''LDI5NDY4LDI5NDY3LDI5NDYyLDI5NDU5LDI5NDY1LDI5NTc1LDI5NzAxLDI5NzA2LDI5Njk5LDI5NzAyLDI5Njk0LDI5NzA5LDI5OTIwLDI5OTQyLDI5OTQzLDI5OTgwLDI5OTg2LDMwMDUzLDMwMDU0LDMwMDUwLDMwMDY0LDMwMDk1LDMwMTY0LDMwMTY1LDMwMTMzLDMwMTU0LDMwMTU3LDMw''@;'; put 'put ''MzUwLDMwNDIwLDMwNDE4LDMwNDI3LDMwNTE5LDMwNTI2LDMwNTI0LDMwNTE4LDMwNTIwLDMwNTIyLDMwODI3LDMwNzg3LDMwNzk4LDMxMDc3LDMxMDgwLDMxMDg1LDMxMjI3LDMxMzc4LDMxMzgxLDMxNTIwLDMxNTI4LDMxNTE1LDMxNTMyLDMxNTI2LDMxNTEzLDMxNTE4LDMxNTM0LDMxODkw''@;'; put 'put ''LDMxODk1LDMxODkzLDMyMDcwLDMyMDY3LDMyMTEzLDMyMDQ2LDMyMDU3LDMyMDYwLDMyMDY0LDMyMDQ4LDMyMDUxLDMyMDY4LDMyMDQ3LDMyMDY2LDMyMDUwLDMyMDQ5LDMyNTczLDMyNjcwLDMyNjY2LDMyNzE2LDMyNzE4LDMyNzIyLDMyNzk2LDMyODQyLDMyODM4LDMzMDcxLDMzMDQ2LDMz''@;'; put 'put ''MDU5LDMzMDY3LDMzMDY1LDMzMDcyLDMzMDYwLDMzMjgyLDMzMzMzLDMzMzM1LDMzMzM0LDMzMzM3LDMzNjc4LDMzNjk0LDMzNjg4LDMzNjU2LDMzNjk4LDMzNjg2LDMzNzI1LDMzNzA3LDMzNjgyLDMzNjc0LDMzNjgzLDMzNjczLDMzNjk2LDMzNjU1LDMzNjU5LDMzNjYwLDMzNjcwLDMzNzAz''@;'; put 'put ''LDM0Mzg5LDI0NDI2LDM0NTAzLDM0NDk2LDM0NDg2LDM0NTAwLDM0NDg1LDM0NTAyLDM0NTA3LDM0NDgxLDM0NDc5LDM0NTA1LDM0ODk5LDM0OTc0LDM0OTUyLDM0OTg3LDM0OTYyLDM0OTY2LDM0OTU3LDM0OTU1LDM1MjE5LDM1MjE1LDM1MzcwLDM1MzU3LDM1MzYzLDM1MzY1LDM1Mzc3LDM1''@;'; put 'put ''MzczLDM1MzU5LDM1MzU1LDM1MzYyLDM1OTEzLDM1OTMwLDM2MDA5LDM2MDEyLDM2MDExLDM2MDA4LDM2MDEwLDM2MDA3LDM2MTk5LDM2MTk4LDM2Mjg2LDM2MjgyLDM2NTcxLDM2NTc1LDM2ODg5LDM2ODc3LDM2ODkwLDM2ODg3LDM2ODk5LDM2ODk1LDM2ODkzLDM2ODgwLDM2ODg1LDM2ODk0''@;'; put 'put ''LDM2ODk2LDM2ODc5LDM2ODk4LDM2ODg2LDM2ODkxLDM2ODg0LDM3MDk2LDM3MTAxLDM3MTE3LDM3MjA3LDM3MzI2LDM3MzY1LDM3MzUwLDM3MzQ3LDM3MzUxLDM3MzU3LDM3MzUzLDM4MjgxLDM4NTA2LDM4NTE3LDM4NTE1LDM4NTIwLDM4NTEyLDM4NTE2LDM4NTE4LDM4NTE5LDM4NTA4LDM4''@;'; put 'put ''NTkyLDM4NjM0LDM4NjMzLDMxNDU2LDMxNDU1LDM4OTE0LDM4OTE1LDM5NzcwLDQwMTY1LDQwNTY1LDQwNTc1LDQwNjEzLDQwNjM1LDIwNjQyLDIwNjIxLDIwNjEzLDIwNjMzLDIwNjI1LDIwNjA4LDIwNjMwLDIwNjMyLDIwNjM0LDI2MzY4LDIwOTc3LDIxMTA2LDIxMTA4LDIxMTA5LDIxMDk3''@;'; put 'put ''LDIxMjE0LDIxMjEzLDIxMjExLDIxMzM4LDIxNDEzLDIxODgzLDIxODg4LDIxOTI3LDIxODg0LDIxODk4LDIxOTE3LDIxOTEyLDIxODkwLDIxOTE2LDIxOTMwLDIxOTA4LDIxODk1LDIxODk5LDIxODkxLDIxOTM5LDIxOTM0LDIxOTE5LDIxODIyLDIxOTM4LDIxOTE0LDIxOTQ3LDIxOTMyLDIx''@;'; put 'put ''OTM3LDIxODg2LDIxODk3LDIxOTMxLDIxOTEzLDIyMjg1LDIyNTc1LDIyNTcwLDIyNTgwLDIyNTY0LDIyNTc2LDIyNTc3LDIyNTYxLDIyNTU3LDIyNTYwLDIyNzc3LDIyNzc4LDIyODgwLDIzMTU5LDIzMTk0LDIzMTY3LDIzMTg2LDIzMTk1LDIzMjA3LDIzNDExLDIzNDA5LDIzNTA2LDIzNTAw''@;'; put 'put ''LDIzNTA3LDIzNTA0LDIzNTYyLDIzNTYzLDIzNjAxLDIzODg0LDIzODg4LDIzODYwLDIzODc5LDI0MDYxLDI0MTMzLDI0MTI1LDI0MTI4LDI0MTMxLDI0MTkwLDI0MjY2LDI0MjU3LDI0MjU4LDI0MjYwLDI0MzgwLDI0NDI5LDI0NDg5LDI0NDkwLDI0NDg4LDI0Nzg1LDI0ODAxLDI0NzU0LDI0''@;'; put 'put ''NzU4LDI0ODAwLDI0ODYwLDI0ODY3LDI0ODI2LDI0ODUzLDI0ODE2LDI0ODI3LDI0ODIwLDI0OTM2LDI0ODE3LDI0ODQ2LDI0ODIyLDI0ODQxLDI0ODMyLDI0ODUwLDI1MTE5LDI1MTYxLDI1NTA3LDI1NDg0LDI1NTUxLDI1NTM2LDI1NTc3LDI1NTQ1LDI1NTQyLDI1NTQ5LDI1NTU0LDI1NTcx''@;'; put 'put ''LDI1NTUyLDI1NTY5LDI1NTU4LDI1NTgxLDI1NTgyLDI1NDYyLDI1NTg4LDI1NTc4LDI1NTYzLDI1NjgyLDI1NTYyLDI1NTkzLDI1OTUwLDI1OTU4LDI1OTU0LDI1OTU1LDI2MDAxLDI2ZTMsMjYwMzEsMjYyMjIsMjYyMjQsMjYyMjgsMjYyMzAsMjYyMjMsMjYyNTcsMjYyMzQsMjYyMzgsMjYy''@;'; put 'put ''MzEsMjYzNjYsMjYzNjcsMjYzOTksMjYzOTcsMjY4NzQsMjY4MzcsMjY4NDgsMjY4NDAsMjY4MzksMjY4ODUsMjY4NDcsMjY4NjksMjY4NjIsMjY4NTUsMjY4NzMsMjY4MzQsMjY4NjYsMjY4NTEsMjY4MjcsMjY4MjksMjY4OTMsMjY4OTgsMjY4OTQsMjY4MjUsMjY4NDIsMjY5OTAsMjY4NzUs''@;'; put 'put ''Mjc0NTQsMjc0NTAsMjc0NTMsMjc1NDQsMjc1NDIsMjc1ODAsMjc2MzEsMjc2OTQsMjc2OTUsMjc2OTIsMjgyMDcsMjgyMTYsMjgyNDQsMjgxOTMsMjgyMTAsMjgyNjMsMjgyMzQsMjgxOTIsMjgxOTcsMjgxOTUsMjgxODcsMjgyNTEsMjgyNDgsMjgxOTYsMjgyNDYsMjgyNzAsMjgyMDUsMjgx''@;'; put 'put ''OTgsMjgyNzEsMjgyMTIsMjgyMzcsMjgyMTgsMjgyMDQsMjgyMjcsMjgxODksMjgyMjIsMjgzNjMsMjgyOTcsMjgxODUsMjgyMzgsMjgyNTksMjgyMjgsMjgyNzQsMjgyNjUsMjgyNTUsMjg5NTMsMjg5NTQsMjg5NjYsMjg5NzYsMjg5NjEsMjg5ODIsMjkwMzgsMjg5NTYsMjkyNjAsMjkzMTYs''@;'; put 'put ''MjkzMTIsMjk0OTQsMjk0NzcsMjk0OTIsMjk0ODEsMjk3NTQsMjk3MzgsMjk3NDcsMjk3MzAsMjk3MzMsMjk3NDksMjk3NTAsMjk3NDgsMjk3NDMsMjk3MjMsMjk3MzQsMjk3MzYsMjk5ODksMjk5OTAsMzAwNTksMzAwNTgsMzAxNzgsMzAxNzEsMzAxNzksMzAxNjksMzAxNjgsMzAxNzQsMzAx''@;'; put 'put ''NzYsMzAzMzEsMzAzMzIsMzAzNTgsMzAzNTUsMzAzODgsMzA0MjgsMzA1NDMsMzA3MDEsMzA4MTMsMzA4MjgsMzA4MzEsMzEyNDUsMzEyNDAsMzEyNDMsMzEyMzcsMzEyMzIsMzEzODQsMzEzODMsMzEzODIsMzE0NjEsMzE0NTksMzE1NjEsMzE1NzQsMzE1NTgsMzE1NjgsMzE1NzAsMzE1NzIs''@;'; put 'put ''MzE1NjUsMzE1NjMsMzE1NjcsMzE1NjksMzE5MDMsMzE5MDksMzIwOTQsMzIwODAsMzIxMDQsMzIwODUsMzIwNDMsMzIxMTAsMzIxMTQsMzIwOTcsMzIxMDIsMzIwOTgsMzIxMTIsMzIxMTUsMjE4OTIsMzI3MjQsMzI3MjUsMzI3NzksMzI4NTAsMzI5MDEsMzMxMDksMzMxMDgsMzMwOTksMzMx''@;'; put 'put ''MDUsMzMxMDIsMzMwODEsMzMwOTQsMzMwODYsMzMxMDAsMzMxMDcsMzMxNDAsMzMyOTgsMzMzMDgsMzM3NjksMzM3OTUsMzM3ODQsMzM4MDUsMzM3NjAsMzM3MzMsMzM4MDMsMzM3MjksMzM3NzUsMzM3NzcsMzM3ODAsMzM4NzksMzM4MDIsMzM3NzYsMzM4MDQsMzM3NDAsMzM3ODksMzM3Nzgs''@;'; put 'put ''MzM3MzgsMzM4NDgsMzM4MDYsMzM3OTYsMzM3NTYsMzM3OTksMzM3NDgsMzM3NTksMzQzOTUsMzQ1MjcsMzQ1MjEsMzQ1NDEsMzQ1MTYsMzQ1MjMsMzQ1MzIsMzQ1MTIsMzQ1MjYsMzQ5MDMsMzUwMDksMzUwMTAsMzQ5OTMsMzUyMDMsMzUyMjIsMzUzODcsMzU0MjQsMzU0MTMsMzU0MjIsMzUz''@;'; put 'put ''ODgsMzUzOTMsMzU0MTIsMzU0MTksMzU0MDgsMzUzOTgsMzUzODAsMzUzODYsMzUzODIsMzU0MTQsMzU5MzcsMzU5NzAsMzYwMTUsMzYwMjgsMzYwMTksMzYwMjksMzYwMzMsMzYwMjcsMzYwMzIsMzYwMjAsMzYwMjMsMzYwMjIsMzYwMzEsMzYwMjQsMzYyMzQsMzYyMjksMzYyMjUsMzYzMDIs''@;'; put 'put ''MzYzMTcsMzYyOTksMzYzMTQsMzYzMDUsMzYzMDAsMzYzMTUsMzYyOTQsMzY2MDMsMzY2MDAsMzY2MDQsMzY3NjQsMzY5MTAsMzY5MTcsMzY5MTMsMzY5MjAsMzY5MTQsMzY5MTgsMzcxMjIsMzcxMDksMzcxMjksMzcxMTgsMzcyMTksMzcyMjEsMzczMjcsMzczOTYsMzczOTcsMzc0MTEsMzcz''@;'; put 'put ''ODUsMzc0MDYsMzczODksMzczOTIsMzczODMsMzczOTMsMzgyOTIsMzgyODcsMzgyODMsMzgyODksMzgyOTEsMzgyOTAsMzgyODYsMzg1MzgsMzg1NDIsMzg1MzksMzg1MjUsMzg1MzMsMzg1MzQsMzg1NDEsMzg1MTQsMzg1MzIsMzg1OTMsMzg1OTcsMzg1OTYsMzg1OTgsMzg1OTksMzg2Mzks''@;'; put 'put ''Mzg2NDIsMzg4NjAsMzg5MTcsMzg5MTgsMzg5MjAsMzkxNDMsMzkxNDYsMzkxNTEsMzkxNDUsMzkxNTQsMzkxNDksMzkzNDIsMzkzNDEsNDA2NDMsNDA2NTMsNDA2NTcsMjAwOTgsMjA2NTMsMjA2NjEsMjA2NTgsMjA2NTksMjA2NzcsMjA2NzAsMjA2NTIsMjA2NjMsMjA2NjcsMjA2NTUsMjA2''@;'; put 'put ''NzksMjExMTksMjExMTEsMjExMTcsMjEyMTUsMjEyMjIsMjEyMjAsMjEyMTgsMjEyMTksMjEyOTUsMjE5ODMsMjE5OTIsMjE5NzEsMjE5OTAsMjE5NjYsMjE5ODAsMjE5NTksMjE5NjksMjE5ODcsMjE5ODgsMjE5OTksMjE5NzgsMjE5ODUsMjE5NTcsMjE5NTgsMjE5ODksMjE5NjEsMjIyOTAs''@;'; put 'put ''MjIyOTEsMjI2MjIsMjI2MDksMjI2MTYsMjI2MTUsMjI2MTgsMjI2MTIsMjI2MzUsMjI2MDQsMjI2MzcsMjI2MDIsMjI2MjYsMjI2MTAsMjI2MDMsMjI4ODcsMjMyMzMsMjMyNDEsMjMyNDQsMjMyMzAsMjMyMjksMjMyMjgsMjMyMTksMjMyMzQsMjMyMTgsMjM5MTMsMjM5MTksMjQxNDAsMjQx''@;'; put 'put ''ODUsMjQyNjUsMjQyNjQsMjQzMzgsMjQ0MDksMjQ0OTIsMjQ0OTQsMjQ4NTgsMjQ4NDcsMjQ5MDQsMjQ4NjMsMjQ4MTksMjQ4NTksMjQ4MjUsMjQ4MzMsMjQ4NDAsMjQ5MTAsMjQ5MDgsMjQ5MDAsMjQ5MDksMjQ4OTQsMjQ4ODQsMjQ4NzEsMjQ4NDUsMjQ4MzgsMjQ4ODcsMjUxMjEsMjUxMjIs''@;'; put 'put ''MjU2MTksMjU2NjIsMjU2MzAsMjU2NDIsMjU2NDUsMjU2NjEsMjU2NDQsMjU2MTUsMjU2MjgsMjU2MjAsMjU2MTMsMjU2NTQsMjU2MjIsMjU2MjMsMjU2MDYsMjU5NjQsMjYwMTUsMjYwMzIsMjYyNjMsMjYyNDksMjYyNDcsMjYyNDgsMjYyNjIsMjYyNDQsMjYyNjQsMjYyNTMsMjYzNzEsMjcw''@;'; put 'put ''MjgsMjY5ODksMjY5NzAsMjY5OTksMjY5NzYsMjY5NjQsMjY5OTcsMjY5MjgsMjcwMTAsMjY5NTQsMjY5ODQsMjY5ODcsMjY5NzQsMjY5NjMsMjcwMDEsMjcwMTQsMjY5NzMsMjY5NzksMjY5NzEsMjc0NjMsMjc1MDYsMjc1ODQsMjc1ODMsMjc2MDMsMjc2NDUsMjgzMjIsMjgzMzUsMjgzNzEs''@;'; put 'put ''MjgzNDIsMjgzNTQsMjgzMDQsMjgzMTcsMjgzNTksMjgzNTcsMjgzMjUsMjgzMTIsMjgzNDgsMjgzNDYsMjgzMzEsMjgzNjksMjgzMTAsMjgzMTYsMjgzNTYsMjgzNzIsMjgzMzAsMjgzMjcsMjgzNDAsMjkwMDYsMjkwMTcsMjkwMzMsMjkwMjgsMjkwMDEsMjkwMzEsMjkwMjAsMjkwMzYsMjkw''@;'; put 'put ''MzAsMjkwMDQsMjkwMjksMjkwMjIsMjg5OTgsMjkwMzIsMjkwMTQsMjkyNDIsMjkyNjYsMjk0OTUsMjk1MDksMjk1MDMsMjk1MDIsMjk4MDcsMjk3ODYsMjk3ODEsMjk3OTEsMjk3OTAsMjk3NjEsMjk3NTksMjk3ODUsMjk3ODcsMjk3ODgsMzAwNzAsMzAwNzIsMzAyMDgsMzAxOTIsMzAyMDks''@;'; put 'put ''MzAxOTQsMzAxOTMsMzAyMDIsMzAyMDcsMzAxOTYsMzAxOTUsMzA0MzAsMzA0MzEsMzA1NTUsMzA1NzEsMzA1NjYsMzA1NTgsMzA1NjMsMzA1ODUsMzA1NzAsMzA1NzIsMzA1NTYsMzA1NjUsMzA1NjgsMzA1NjIsMzA3MDIsMzA4NjIsMzA4OTYsMzA4NzEsMzA4NzIsMzA4NjAsMzA4NTcsMzA4''@;'; put 'put ''NDQsMzA4NjUsMzA4NjcsMzA4NDcsMzEwOTgsMzExMDMsMzExMDUsMzM4MzYsMzExNjUsMzEyNjAsMzEyNTgsMzEyNjQsMzEyNTIsMzEyNjMsMzEyNjIsMzEzOTEsMzEzOTIsMzE2MDcsMzE2ODAsMzE1ODQsMzE1OTgsMzE1OTEsMzE5MjEsMzE5MjMsMzE5MjUsMzIxNDcsMzIxMjEsMzIxNDUs''@;'; put 'put ''MzIxMjksMzIxNDMsMzIwOTEsMzI2MjIsMzI2MTcsMzI2MTgsMzI2MjYsMzI2ODEsMzI2ODAsMzI2NzYsMzI4NTQsMzI4NTYsMzI5MDIsMzI5MDAsMzMxMzcsMzMxMzYsMzMxNDQsMzMxMjUsMzMxMzQsMzMxMzksMzMxMzEsMzMxNDUsMzMxNDYsMzMxMjYsMzMyODUsMzMzNTEsMzM5MjIsMzM5''@;'; put 'put ''MTEsMzM4NTMsMzM4NDEsMzM5MDksMzM4OTQsMzM4OTksMzM4NjUsMzM5MDAsMzM4ODMsMzM4NTIsMzM4NDUsMzM4ODksMzM4OTEsMzM4OTcsMzM5MDEsMzM4NjIsMzQzOTgsMzQzOTYsMzQzOTksMzQ1NTMsMzQ1NzksMzQ1NjgsMzQ1NjcsMzQ1NjAsMzQ1NTgsMzQ1NTUsMzQ1NjIsMzQ1NjMs''@;'; put 'put ''MzQ1NjYsMzQ1NzAsMzQ5MDUsMzUwMzksMzUwMjgsMzUwMzMsMzUwMzYsMzUwMzIsMzUwMzcsMzUwNDEsMzUwMTgsMzUwMjksMzUwMjYsMzUyMjgsMzUyOTksMzU0MzUsMzU0NDIsMzU0NDMsMzU0MzAsMzU0MzMsMzU0NDAsMzU0NjMsMzU0NTIsMzU0MjcsMzU0ODgsMzU0NDEsMzU0NjEsMzU0''@;'; put 'put ''MzcsMzU0MjYsMzU0MzgsMzU0MzYsMzU0NDksMzU0NTEsMzUzOTAsMzU0MzIsMzU5MzgsMzU5NzgsMzU5NzcsMzYwNDIsMzYwMzksMzYwNDAsMzYwMzYsMzYwMTgsMzYwMzUsMzYwMzQsMzYwMzcsMzYzMjEsMzYzMTksMzYzMjgsMzYzMzUsMzYzMzksMzYzNDYsMzYzMzAsMzYzMjQsMzYzMjYs''@;'; put 'put ''MzY1MzAsMzY2MTEsMzY2MTcsMzY2MDYsMzY2MTgsMzY3NjcsMzY3ODYsMzY5MzksMzY5MzgsMzY5NDcsMzY5MzAsMzY5NDgsMzY5MjQsMzY5NDksMzY5NDQsMzY5MzUsMzY5NDMsMzY5NDIsMzY5NDEsMzY5NDUsMzY5MjYsMzY5MjksMzcxMzgsMzcxNDMsMzcyMjgsMzcyMjYsMzcyMjUsMzcz''@;'; put 'put ''MjEsMzc0MzEsMzc0NjMsMzc0MzIsMzc0MzcsMzc0NDAsMzc0MzgsMzc0NjcsMzc0NTEsMzc0NzYsMzc0NTcsMzc0MjgsMzc0NDksMzc0NTMsMzc0NDUsMzc0MzMsMzc0MzksMzc0NjYsMzgyOTYsMzg1NTIsMzg1NDgsMzg1NDksMzg2MDUsMzg2MDMsMzg2MDEsMzg2MDIsMzg2NDcsMzg2NTEs''@;'; put 'put ''Mzg2NDksMzg2NDYsMzg3NDIsMzg3NzIsMzg3NzQsMzg5MjgsMzg5MjksMzg5MzEsMzg5MjIsMzg5MzAsMzg5MjQsMzkxNjQsMzkxNTYsMzkxNjUsMzkxNjYsMzkzNDcsMzkzNDUsMzkzNDgsMzk2NDksNDAxNjksNDA1NzgsNDA3MTgsNDA3MjMsNDA3MzYsMjA3MTEsMjA3MTgsMjA3MDksMjA2''@;'; put 'put ''OTQsMjA3MTcsMjA2OTgsMjA2OTMsMjA2ODcsMjA2ODksMjA3MjEsMjA2ODYsMjA3MTMsMjA4MzQsMjA5NzksMjExMjMsMjExMjIsMjEyOTcsMjE0MjEsMjIwMTQsMjIwMTYsMjIwNDMsMjIwMzksMjIwMTMsMjIwMzYsMjIwMjIsMjIwMjUsMjIwMjksMjIwMzAsMjIwMDcsMjIwMzgsMjIwNDcs''@;'; put 'put ''MjIwMjQsMjIwMzIsMjIwMDYsMjIyOTYsMjIyOTQsMjI2NDUsMjI2NTQsMjI2NTksMjI2NzUsMjI2NjYsMjI2NDksMjI2NjEsMjI2NTMsMjI3ODEsMjI4MjEsMjI4MTgsMjI4MjAsMjI4OTAsMjI4ODksMjMyNjUsMjMyNzAsMjMyNzMsMjMyNTUsMjMyNTQsMjMyNTYsMjMyNjcsMjM0MTMsMjM1''@;'; put 'put ''MTgsMjM1MjcsMjM1MjEsMjM1MjUsMjM1MjYsMjM1MjgsMjM1MjIsMjM1MjQsMjM1MTksMjM1NjUsMjM2NTAsMjM5NDAsMjM5NDMsMjQxNTUsMjQxNjMsMjQxNDksMjQxNTEsMjQxNDgsMjQyNzUsMjQyNzgsMjQzMzAsMjQzOTAsMjQ0MzIsMjQ1MDUsMjQ5MDMsMjQ4OTUsMjQ5MDcsMjQ5NTEs''@;'; put 'put ''MjQ5MzAsMjQ5MzEsMjQ5MjcsMjQ5MjIsMjQ5MjAsMjQ5NDksMjUxMzAsMjU3MzUsMjU2ODgsMjU2ODQsMjU3NjQsMjU3MjAsMjU2OTUsMjU3MjIsMjU2ODEsMjU3MDMsMjU2NTIsMjU3MDksMjU3MjMsMjU5NzAsMjYwMTcsMjYwNzEsMjYwNzAsMjYyNzQsMjYyODAsMjYyNjksMjcwMzYsMjcw''@;'; put 'put ''NDgsMjcwMjksMjcwNzMsMjcwNTQsMjcwOTEsMjcwODMsMjcwMzUsMjcwNjMsMjcwNjcsMjcwNTEsMjcwNjAsMjcwODgsMjcwODUsMjcwNTMsMjcwODQsMjcwNDYsMjcwNzUsMjcwNDMsMjc0NjUsMjc0NjgsMjc2OTksMjg0NjcsMjg0MzYsMjg0MTQsMjg0MzUsMjg0MDQsMjg0NTcsMjg0Nzgs''@;'; put 'put ''Mjg0NDgsMjg0NjAsMjg0MzEsMjg0MTgsMjg0NTAsMjg0MTUsMjgzOTksMjg0MjIsMjg0NjUsMjg0NzIsMjg0NjYsMjg0NTEsMjg0MzcsMjg0NTksMjg0NjMsMjg1NTIsMjg0NTgsMjgzOTYsMjg0MTcsMjg0MDIsMjgzNjQsMjg0MDcsMjkwNzYsMjkwODEsMjkwNTMsMjkwNjYsMjkwNjAsMjkw''@;'; put 'put ''NzQsMjkyNDYsMjkzMzAsMjkzMzQsMjk1MDgsMjk1MjAsMjk3OTYsMjk3OTUsMjk4MDIsMjk4MDgsMjk4MDUsMjk5NTYsMzAwOTcsMzAyNDcsMzAyMjEsMzAyMTksMzAyMTcsMzAyMjcsMzA0MzMsMzA0MzUsMzA1OTYsMzA1ODksMzA1OTEsMzA1NjEsMzA5MTMsMzA4NzksMzA4ODcsMzA4OTks''@;'; put 'put ''MzA4ODksMzA4ODMsMzExMTgsMzExMTksMzExMTcsMzEyNzgsMzEyODEsMzE0MDIsMzE0MDEsMzE0NjksMzE0NzEsMzE2NDksMzE2MzcsMzE2MjcsMzE2MDUsMzE2MzksMzE2NDUsMzE2MzYsMzE2MzEsMzE2NzIsMzE2MjMsMzE2MjAsMzE5MjksMzE5MzMsMzE5MzQsMzIxODcsMzIxNzYsMzIx''@;'; put 'put ''NTYsMzIxODksMzIxOTAsMzIxNjAsMzIyMDIsMzIxODAsMzIxNzgsMzIxNzcsMzIxODYsMzIxNjIsMzIxOTEsMzIxODEsMzIxODQsMzIxNzMsMzIyMTAsMzIxOTksMzIxNzIsMzI2MjQsMzI3MzYsMzI3MzcsMzI3MzUsMzI4NjIsMzI4NTgsMzI5MDMsMzMxMDQsMzMxNTIsMzMxNjcsMzMxNjAs''@;'; put 'put ''MzMxNjIsMzMxNTEsMzMxNTQsMzMyNTUsMzMyNzQsMzMyODcsMzMzMDAsMzMzMTAsMzMzNTUsMzM5OTMsMzM5ODMsMzM5OTAsMzM5ODgsMzM5NDUsMzM5NTAsMzM5NzAsMzM5NDgsMzM5OTUsMzM5NzYsMzM5ODQsMzQwMDMsMzM5MzYsMzM5ODAsMzQwMDEsMzM5OTQsMzQ2MjMsMzQ1ODgsMzQ2''@;'; put 'put ''MTksMzQ1OTQsMzQ1OTcsMzQ2MTIsMzQ1ODQsMzQ2NDUsMzQ2MTUsMzQ2MDEsMzUwNTksMzUwNzQsMzUwNjAsMzUwNjUsMzUwNjQsMzUwNjksMzUwNDgsMzUwOTgsMzUwNTUsMzU0OTQsMzU0NjgsMzU0ODYsMzU0OTEsMzU0NjksMzU0ODksMzU0NzUsMzU0OTIsMzU0OTgsMzU0OTMsMzU0OTYs''@;'; put 'put ''MzU0ODAsMzU0NzMsMzU0ODIsMzU0OTUsMzU5NDYsMzU5ODEsMzU5ODAsMzYwNTEsMzYwNDksMzYwNTAsMzYyMDMsMzYyNDksMzYyNDUsMzYzNDgsMzY2MjgsMzY2MjYsMzY2MjksMzY2MjcsMzY3NzEsMzY5NjAsMzY5NTIsMzY5NTYsMzY5NjMsMzY5NTMsMzY5NTgsMzY5NjIsMzY5NTcsMzY5''@;'; put 'put ''NTUsMzcxNDUsMzcxNDQsMzcxNTAsMzcyMzcsMzcyNDAsMzcyMzksMzcyMzYsMzc0OTYsMzc1MDQsMzc1MDksMzc1MjgsMzc1MjYsMzc0OTksMzc1MjMsMzc1MzIsMzc1NDQsMzc1MDAsMzc1MjEsMzgzMDUsMzgzMTIsMzgzMTMsMzgzMDcsMzgzMDksMzgzMDgsMzg1NTMsMzg1NTYsMzg1NTUs''@;'; put 'put ''Mzg2MDQsMzg2MTAsMzg2NTYsMzg3ODAsMzg3ODksMzg5MDIsMzg5MzUsMzg5MzYsMzkwODcsMzkwODksMzkxNzEsMzkxNzMsMzkxODAsMzkxNzcsMzkzNjEsMzk1OTksMzk2MDAsMzk2NTQsMzk3NDUsMzk3NDYsNDAxODAsNDAxODIsNDAxNzksNDA2MzYsNDA3NjMsNDA3NzgsMjA3NDAsMjA3''@;'; put 'put ''MzYsMjA3MzEsMjA3MjUsMjA3MjksMjA3MzgsMjA3NDQsMjA3NDUsMjA3NDEsMjA5NTYsMjExMjcsMjExMjgsMjExMjksMjExMzMsMjExMzAsMjEyMzIsMjE0MjYsMjIwNjIsMjIwNzUsMjIwNzMsMjIwNjYsMjIwNzksMjIwNjgsMjIwNTcsMjIwOTksMjIwOTQsMjIxMDMsMjIxMzIsMjIwNzAs''@;'; put 'put ''MjIwNjMsMjIwNjQsMjI2NTYsMjI2ODcsMjI2ODYsMjI3MDcsMjI2ODQsMjI3MDIsMjI2OTcsMjI2OTQsMjI4OTMsMjMzMDUsMjMyOTEsMjMzMDcsMjMyODUsMjMzMDgsMjMzMDQsMjM1MzQsMjM1MzIsMjM1MjksMjM1MzEsMjM2NTIsMjM2NTMsMjM5NjUsMjM5NTYsMjQxNjIsMjQxNTksMjQx''@;'; put 'put ''NjEsMjQyOTAsMjQyODIsMjQyODcsMjQyODUsMjQyOTEsMjQyODgsMjQzOTIsMjQ0MzMsMjQ1MDMsMjQ1MDEsMjQ5NTAsMjQ5MzUsMjQ5NDIsMjQ5MjUsMjQ5MTcsMjQ5NjIsMjQ5NTYsMjQ5NDQsMjQ5MzksMjQ5NTgsMjQ5OTksMjQ5NzYsMjUwMDMsMjQ5NzQsMjUwMDQsMjQ5ODYsMjQ5OTYs''@;'; put 'put ''MjQ5ODAsMjUwMDYsMjUxMzQsMjU3MDUsMjU3MTEsMjU3MjEsMjU3NTgsMjU3NzgsMjU3MzYsMjU3NDQsMjU3NzYsMjU3NjUsMjU3NDcsMjU3NDksMjU3NjksMjU3NDYsMjU3NzQsMjU3NzMsMjU3NzEsMjU3NTQsMjU3NzIsMjU3NTMsMjU3NjIsMjU3NzksMjU5NzMsMjU5NzUsMjU5NzYsMjYy''@;'; put 'put ''ODYsMjYyODMsMjYyOTIsMjYyODksMjcxNzEsMjcxNjcsMjcxMTIsMjcxMzcsMjcxNjYsMjcxNjEsMjcxMzMsMjcxNjksMjcxNTUsMjcxNDYsMjcxMjMsMjcxMzgsMjcxNDEsMjcxMTcsMjcxNTMsMjc0NzIsMjc0NzAsMjc1NTYsMjc1ODksMjc1OTAsMjg0NzksMjg1NDAsMjg1NDgsMjg0OTcs''@;'; put 'put ''Mjg1MTgsMjg1MDAsMjg1NTAsMjg1MjUsMjg1MDcsMjg1MzYsMjg1MjYsMjg1NTgsMjg1MzgsMjg1MjgsMjg1MTYsMjg1NjcsMjg1MDQsMjgzNzMsMjg1MjcsMjg1MTIsMjg1MTEsMjkwODcsMjkxMDAsMjkxMDUsMjkwOTYsMjkyNzAsMjkzMzksMjk1MTgsMjk1MjcsMjk4MDEsMjk4MzUsMjk4''@;'; put 'put ''MjcsMjk4MjIsMjk4MjQsMzAwNzksMzAyNDAsMzAyNDksMzAyMzksMzAyNDQsMzAyNDYsMzAyNDEsMzAyNDIsMzAzNjIsMzAzOTQsMzA0MzYsMzA2MDYsMzA1OTksMzA2MDQsMzA2MDksMzA2MDMsMzA5MjMsMzA5MTcsMzA5MDYsMzA5MjIsMzA5MTAsMzA5MzMsMzA5MDgsMzA5MjgsMzEyOTUs''@;'; put 'put ''MzEyOTIsMzEyOTYsMzEyOTMsMzEyODcsMzEyOTEsMzE0MDcsMzE0MDYsMzE2NjEsMzE2NjUsMzE2ODQsMzE2NjgsMzE2ODYsMzE2ODcsMzE2ODEsMzE2NDgsMzE2OTIsMzE5NDYsMzIyMjQsMzIyNDQsMzIyMzksMzIyNTEsMzIyMTYsMzIyMzYsMzIyMjEsMzIyMzIsMzIyMjcsMzIyMTgsMzIy''@;'; put 'put ''MjIsMzIyMzMsMzIxNTgsMzIyMTcsMzIyNDIsMzIyNDksMzI2MjksMzI2MzEsMzI2ODcsMzI3NDUsMzI4MDYsMzMxNzksMzMxODAsMzMxODEsMzMxODQsMzMxNzgsMzMxNzYsMzQwNzEsMzQxMDksMzQwNzQsMzQwMzAsMzQwOTIsMzQwOTMsMzQwNjcsMzQwNjUsMzQwODMsMzQwODEsMzQwNjgs''@;'; put 'put ''MzQwMjgsMzQwODUsMzQwNDcsMzQwNTQsMzQ2OTAsMzQ2NzYsMzQ2NzgsMzQ2NTYsMzQ2NjIsMzQ2ODAsMzQ2NjQsMzQ2NDksMzQ2NDcsMzQ2MzYsMzQ2NDMsMzQ5MDcsMzQ5MDksMzUwODgsMzUwNzksMzUwOTAsMzUwOTEsMzUwOTMsMzUwODIsMzU1MTYsMzU1MzgsMzU1MjcsMzU1MjQsMzU0''@;'; put 'put ''NzcsMzU1MzEsMzU1NzYsMzU1MDYsMzU1MjksMzU1MjIsMzU1MTksMzU1MDQsMzU1NDIsMzU1MzMsMzU1MTAsMzU1MTMsMzU1NDcsMzU5MTYsMzU5MTgsMzU5NDgsMzYwNjQsMzYwNjIsMzYwNzAsMzYwNjgsMzYwNzYsMzYwNzcsMzYwNjYsMzYwNjcsMzYwNjAsMzYwNzQsMzYwNjUsMzYyMDUs''@;'; put 'put ''MzYyNTUsMzYyNTksMzYzOTUsMzYzNjgsMzYzODEsMzYzODYsMzYzNjcsMzYzOTMsMzYzODMsMzYzODUsMzYzODIsMzY1MzgsMzY2MzcsMzY2MzUsMzY2MzksMzY2NDksMzY2NDYsMzY2NTAsMzY2MzYsMzY2MzgsMzY2NDUsMzY5NjksMzY5NzQsMzY5NjgsMzY5NzMsMzY5ODMsMzcxNjgsMzcx''@;'; put 'put ''NjUsMzcxNTksMzcxNjksMzcyNTUsMzcyNTcsMzcyNTksMzcyNTEsMzc1NzMsMzc1NjMsMzc1NTksMzc2MTAsMzc1NDgsMzc2MDQsMzc1NjksMzc1NTUsMzc1NjQsMzc1ODYsMzc1NzUsMzc2MTYsMzc1NTQsMzgzMTcsMzgzMjEsMzg2NjAsMzg2NjIsMzg2NjMsMzg2NjUsMzg3NTIsMzg3OTcs''@;'; put 'put ''Mzg3OTUsMzg3OTksMzg5NDUsMzg5NTUsMzg5NDAsMzkwOTEsMzkxNzgsMzkxODcsMzkxODYsMzkxOTIsMzkzODksMzkzNzYsMzkzOTEsMzkzODcsMzkzNzcsMzkzODEsMzkzNzgsMzkzODUsMzk2MDcsMzk2NjIsMzk2NjMsMzk3MTksMzk3NDksMzk3NDgsMzk3OTksMzk3OTEsNDAxOTgsNDAy''@;'; put 'put ''MDEsNDAxOTUsNDA2MTcsNDA2MzgsNDA2NTQsMjI2OTYsNDA3ODYsMjA3NTQsMjA3NjAsMjA3NTYsMjA3NTIsMjA3NTcsMjA4NjQsMjA5MDYsMjA5NTcsMjExMzcsMjExMzksMjEyMzUsMjIxMDUsMjIxMjMsMjIxMzcsMjIxMjEsMjIxMTYsMjIxMzYsMjIxMjIsMjIxMjAsMjIxMTcsMjIxMjks''@;'; put 'put ''MjIxMjcsMjIxMjQsMjIxMTQsMjIxMzQsMjI3MjEsMjI3MTgsMjI3MjcsMjI3MjUsMjI4OTQsMjMzMjUsMjMzNDgsMjM0MTYsMjM1MzYsMjM1NjYsMjQzOTQsMjUwMTAsMjQ5NzcsMjUwMDEsMjQ5NzAsMjUwMzcsMjUwMTQsMjUwMjIsMjUwMzQsMjUwMzIsMjUxMzYsMjU3OTcsMjU3OTMsMjU4''@;'; put 'put ''MDMsMjU3ODcsMjU3ODgsMjU4MTgsMjU3OTYsMjU3OTksMjU3OTQsMjU4MDUsMjU3OTEsMjU4MTAsMjU4MTIsMjU3OTAsMjU5NzIsMjYzMTAsMjYzMTMsMjYyOTcsMjYzMDgsMjYzMTEsMjYyOTYsMjcxOTcsMjcxOTIsMjcxOTQsMjcyMjUsMjcyNDMsMjcyMjQsMjcxOTMsMjcyMDQsMjcyMzQs''@;'; put 'put ''MjcyMzMsMjcyMTEsMjcyMDcsMjcxODksMjcyMzEsMjcyMDgsMjc0ODEsMjc1MTEsMjc2NTMsMjg2MTAsMjg1OTMsMjg1NzcsMjg2MTEsMjg1ODAsMjg2MDksMjg1ODMsMjg1OTUsMjg2MDgsMjg2MDEsMjg1OTgsMjg1ODIsMjg1NzYsMjg1OTYsMjkxMTgsMjkxMjksMjkxMzYsMjkxMzgsMjkx''@;'; put 'put ''MjgsMjkxNDEsMjkxMTMsMjkxMzQsMjkxNDUsMjkxNDgsMjkxMjMsMjkxMjQsMjk1NDQsMjk4NTIsMjk4NTksMjk4NDgsMjk4NTUsMjk4NTQsMjk5MjIsMjk5NjQsMjk5NjUsMzAyNjAsMzAyNjQsMzAyNjYsMzA0MzksMzA0MzcsMzA2MjQsMzA2MjIsMzA2MjMsMzA2MjksMzA5NTIsMzA5Mzgs''@;'; put 'put ''MzA5NTYsMzA5NTEsMzExNDIsMzEzMDksMzEzMTAsMzEzMDIsMzEzMDgsMzEzMDcsMzE0MTgsMzE3MDUsMzE3NjEsMzE2ODksMzE3MTYsMzE3MDcsMzE3MTMsMzE3MjEsMzE3MTgsMzE5NTcsMzE5NTgsMzIyNjYsMzIyNzMsMzIyNjQsMzIyODMsMzIyOTEsMzIyODYsMzIyODUsMzIyNjUsMzIy''@;'; put 'put ''NzIsMzI2MzMsMzI2OTAsMzI3NTIsMzI3NTMsMzI3NTAsMzI4MDgsMzMyMDMsMzMxOTMsMzMxOTIsMzMyNzUsMzMyODgsMzMzNjgsMzMzNjksMzQxMjIsMzQxMzcsMzQxMjAsMzQxNTIsMzQxNTMsMzQxMTUsMzQxMjEsMzQxNTcsMzQxNTQsMzQxNDIsMzQ2OTEsMzQ3MTksMzQ3MTgsMzQ3MjIs''@;'; put 'put ''MzQ3MDEsMzQ5MTMsMzUxMTQsMzUxMjIsMzUxMDksMzUxMTUsMzUxMDUsMzUyNDIsMzUyMzgsMzU1NTgsMzU1NzgsMzU1NjMsMzU1NjksMzU1ODQsMzU1NDgsMzU1NTksMzU1NjYsMzU1ODIsMzU1ODUsMzU1ODYsMzU1NzUsMzU1NjUsMzU1NzEsMzU1NzQsMzU1ODAsMzU5NDcsMzU5NDksMzU5''@;'; put 'put ''ODcsMzYwODQsMzY0MjAsMzY0MDEsMzY0MDQsMzY0MTgsMzY0MDksMzY0MDUsMzY2NjcsMzY2NTUsMzY2NjQsMzY2NTksMzY3NzYsMzY3NzQsMzY5ODEsMzY5ODAsMzY5ODQsMzY5NzgsMzY5ODgsMzY5ODYsMzcxNzIsMzcyNjYsMzc2NjQsMzc2ODYsMzc2MjQsMzc2ODMsMzc2NzksMzc2NjYs''@;'; put 'put ''Mzc2MjgsMzc2NzUsMzc2MzYsMzc2NTgsMzc2NDgsMzc2NzAsMzc2NjUsMzc2NTMsMzc2NzgsMzc2NTcsMzgzMzEsMzg1NjcsMzg1NjgsMzg1NzAsMzg2MTMsMzg2NzAsMzg2NzMsMzg2NzgsMzg2NjksMzg2NzUsMzg2NzEsMzg3NDcsMzg3NDgsMzg3NTgsMzg4MDgsMzg5NjAsMzg5NjgsMzg5''@;'; put 'put ''NzEsMzg5NjcsMzg5NTcsMzg5NjksMzg5NDgsMzkxODQsMzkyMDgsMzkxOTgsMzkxOTUsMzkyMDEsMzkxOTQsMzk0MDUsMzkzOTQsMzk0MDksMzk2MDgsMzk2MTIsMzk2NzUsMzk2NjEsMzk3MjAsMzk4MjUsNDAyMTMsNDAyMjcsNDAyMzAsNDAyMzIsNDAyMTAsNDAyMTksNDA2NjQsNDA2NjAs''@;'; put 'put ''NDA4NDUsNDA4NjAsMjA3NzgsMjA3NjcsMjA3NjksMjA3ODYsMjEyMzcsMjIxNTgsMjIxNDQsMjIxNjAsMjIxNDksMjIxNTEsMjIxNTksMjI3NDEsMjI3MzksMjI3MzcsMjI3MzQsMjMzNDQsMjMzMzgsMjMzMzIsMjM0MTgsMjM2MDcsMjM2NTYsMjM5OTYsMjM5OTQsMjM5OTcsMjM5OTIsMjQx''@;'; put 'put ''NzEsMjQzOTYsMjQ1MDksMjUwMzMsMjUwMjYsMjUwMzEsMjUwNjIsMjUwMzUsMjUxMzgsMjUxNDAsMjU4MDYsMjU4MDIsMjU4MTYsMjU4MjQsMjU4NDAsMjU4MzAsMjU4MzYsMjU4NDEsMjU4MjYsMjU4MzcsMjU5ODYsMjU5ODcsMjYzMjksMjYzMjYsMjcyNjQsMjcyODQsMjcyNjgsMjcyOTgs''@;'; put 'put ''MjcyOTIsMjczNTUsMjcyOTksMjcyNjIsMjcyODcsMjcyODAsMjcyOTYsMjc0ODQsMjc1NjYsMjc2MTAsMjc2NTYsMjg2MzIsMjg2NTcsMjg2MzksMjg2NDAsMjg2MzUsMjg2NDQsMjg2NTEsMjg2NTUsMjg1NDQsMjg2NTIsMjg2NDEsMjg2NDksMjg2MjksMjg2NTQsMjg2NTYsMjkxNTksMjkx''@;'; put 'put ''NTEsMjkxNjYsMjkxNTgsMjkxNTcsMjkxNjUsMjkxNjQsMjkxNzIsMjkxNTIsMjkyMzcsMjkyNTQsMjk1NTIsMjk1NTQsMjk4NjUsMjk4NzIsMjk4NjIsMjk4NjQsMzAyNzgsMzAyNzQsMzAyODQsMzA0NDIsMzA2NDMsMzA2MzQsMzA2NDAsMzA2MzYsMzA2MzEsMzA2MzcsMzA3MDMsMzA5Njcs''@;'; put 'put ''MzA5NzAsMzA5NjQsMzA5NTksMzA5NzcsMzExNDMsMzExNDYsMzEzMTksMzE0MjMsMzE3NTEsMzE3NTcsMzE3NDIsMzE3MzUsMzE3NTYsMzE3MTIsMzE5NjgsMzE5NjQsMzE5NjYsMzE5NzAsMzE5NjcsMzE5NjEsMzE5NjUsMzIzMDIsMzIzMTgsMzIzMjYsMzIzMTEsMzIzMDYsMzIzMjMsMzIy''@;'; put 'put ''OTksMzIzMTcsMzIzMDUsMzIzMjUsMzIzMjEsMzIzMDgsMzIzMTMsMzIzMjgsMzIzMDksMzIzMTksMzIzMDMsMzI1ODAsMzI3NTUsMzI3NjQsMzI4ODEsMzI4ODIsMzI4ODAsMzI4NzksMzI4ODMsMzMyMjIsMzMyMTksMzMyMTAsMzMyMTgsMzMyMTYsMzMyMTUsMzMyMTMsMzMyMjUsMzMyMTQs''@;'; put 'put ''MzMyNTYsMzMyODksMzMzOTMsMzQyMTgsMzQxODAsMzQxNzQsMzQyMDQsMzQxOTMsMzQxOTYsMzQyMjMsMzQyMDMsMzQxODMsMzQyMTYsMzQxODYsMzQ0MDcsMzQ3NTIsMzQ3NjksMzQ3MzksMzQ3NzAsMzQ3NTgsMzQ3MzEsMzQ3NDcsMzQ3NDYsMzQ3NjAsMzQ3NjMsMzUxMzEsMzUxMjYsMzUx''@;'; put 'put ''NDAsMzUxMjgsMzUxMzMsMzUyNDQsMzU1OTgsMzU2MDcsMzU2MDksMzU2MTEsMzU1OTQsMzU2MTYsMzU2MTMsMzU1ODgsMzU2MDAsMzU5MDUsMzU5MDMsMzU5NTUsMzYwOTAsMzYwOTMsMzYwOTIsMzYwODgsMzYwOTEsMzYyNjQsMzY0MjUsMzY0MjcsMzY0MjQsMzY0MjYsMzY2NzYsMzY2NzAs''@;'; put 'put ''MzY2NzQsMzY2NzcsMzY2NzEsMzY5OTEsMzY5ODksMzY5OTYsMzY5OTMsMzY5OTQsMzY5OTIsMzcxNzcsMzcyODMsMzcyNzgsMzcyNzYsMzc3MDksMzc3NjIsMzc2NzIsMzc3NDksMzc3MDYsMzc3MzMsMzc3MDcsMzc2NTYsMzc3NTgsMzc3NDAsMzc3MjMsMzc3NDQsMzc3MjIsMzc3MTYsMzgz''@;'; put 'put ''NDYsMzgzNDcsMzgzNDgsMzgzNDQsMzgzNDIsMzg1NzcsMzg1ODQsMzg2MTQsMzg2ODQsMzg2ODYsMzg4MTYsMzg4NjcsMzg5ODIsMzkwOTQsMzkyMjEsMzk0MjUsMzk0MjMsMzk4NTQsMzk4NTEsMzk4NTAsMzk4NTMsNDAyNTEsNDAyNTUsNDA1ODcsNDA2NTUsNDA2NzAsNDA2NjgsNDA2Njks''@;'; put 'put ''NDA2NjcsNDA3NjYsNDA3NzksMjE0NzQsMjIxNjUsMjIxOTAsMjI3NDUsMjI3NDQsMjMzNTIsMjQ0MTMsMjUwNTksMjUxMzksMjU4NDQsMjU4NDIsMjU4NTQsMjU4NjIsMjU4NTAsMjU4NTEsMjU4NDcsMjYwMzksMjYzMzIsMjY0MDYsMjczMTUsMjczMDgsMjczMzEsMjczMjMsMjczMjAsMjcz''@;'; put 'put ''MzAsMjczMTAsMjczMTEsMjc0ODcsMjc1MTIsMjc1NjcsMjg2ODEsMjg2ODMsMjg2NzAsMjg2NzgsMjg2NjYsMjg2ODksMjg2ODcsMjkxNzksMjkxODAsMjkxODIsMjkxNzYsMjk1NTksMjk1NTcsMjk4NjMsMjk4ODcsMjk5NzMsMzAyOTQsMzAyOTYsMzAyOTAsMzA2NTMsMzA2NTUsMzA2NTEs''@;'; put 'put ''MzA2NTIsMzA5OTAsMzExNTAsMzEzMjksMzEzMzAsMzEzMjgsMzE0MjgsMzE0MjksMzE3ODcsMzE3ODMsMzE3ODYsMzE3NzQsMzE3NzksMzE3NzcsMzE5NzUsMzIzNDAsMzIzNDEsMzIzNTAsMzIzNDYsMzIzNTMsMzIzMzgsMzIzNDUsMzI1ODQsMzI3NjEsMzI3NjMsMzI4ODcsMzI4ODYsMzMy''@;'; put 'put ''MjksMzMyMzEsMzMyOTAsMzQyNTUsMzQyMTcsMzQyNTMsMzQyNTYsMzQyNDksMzQyMjQsMzQyMzQsMzQyMzMsMzQyMTQsMzQ3OTksMzQ3OTYsMzQ4MDIsMzQ3ODQsMzUyMDYsMzUyNTAsMzUzMTYsMzU2MjQsMzU2NDEsMzU2MjgsMzU2MjcsMzU5MjAsMzYxMDEsMzY0NDEsMzY0NTEsMzY0NTQs''@;'; put 'put ''MzY0NTIsMzY0NDcsMzY0MzcsMzY1NDQsMzY2ODEsMzY2ODUsMzY5OTksMzY5OTUsMzdlMywzNzI5MSwzNzI5MiwzNzMyOCwzNzc4MCwzNzc3MCwzNzc4MiwzNzc5NCwzNzgxMSwzNzgwNiwzNzgwNCwzNzgwOCwzNzc4NCwzNzc4NiwzNzc4MywzODM1NiwzODM1OCwzODM1MiwzODM1NywzODYy''@;'; put 'put ''NiwzODYyMCwzODYxNywzODYxOSwzODYyMiwzODY5MiwzODgxOSwzODgyMiwzODgyOSwzODkwNSwzODk4OSwzODk5MSwzODk4OCwzODk5MCwzODk5NSwzOTA5OCwzOTIzMCwzOTIzMSwzOTIyOSwzOTIxNCwzOTMzMywzOTQzOCwzOTYxNywzOTY4MywzOTY4NiwzOTc1OSwzOTc1OCwzOTc1Nywz''@;'; put 'put ''OTg4MiwzOTg4MSwzOTkzMywzOTg4MCwzOTg3Miw0MDI3Myw0MDI4NSw0MDI4OCw0MDY3Miw0MDcyNSw0MDc0OCwyMDc4NywyMjE4MSwyMjc1MCwyMjc1MSwyMjc1NCwyMzU0MSw0MDg0OCwyNDMwMCwyNTA3NCwyNTA3OSwyNTA3OCwyNTA3NywyNTg1NiwyNTg3MSwyNjMzNiwyNjMzMywyNzM2''@;'; put 'put ''NSwyNzM1NywyNzM1NCwyNzM0NywyODY5OSwyODcwMywyODcxMiwyODY5OCwyODcwMSwyODY5MywyODY5NiwyOTE5MCwyOTE5NywyOTI3MiwyOTM0NiwyOTU2MCwyOTU2MiwyOTg4NSwyOTg5OCwyOTkyMywzMDA4NywzMDA4NiwzMDMwMywzMDMwNSwzMDY2MywzMTAwMSwzMTE1MywzMTMzOSwz''@;'; put 'put ''MTMzNywzMTgwNiwzMTgwNywzMTgwMCwzMTgwNSwzMTc5OSwzMTgwOCwzMjM2MywzMjM2NSwzMjM3NywzMjM2MSwzMjM2MiwzMjY0NSwzMjM3MSwzMjY5NCwzMjY5NywzMjY5NiwzMzI0MCwzNDI4MSwzNDI2OSwzNDI4MiwzNDI2MSwzNDI3NiwzNDI3NywzNDI5NSwzNDgxMSwzNDgyMSwzNDgy''@;'; put 'put ''OSwzNDgwOSwzNDgxNCwzNTE2OCwzNTE2NywzNTE1OCwzNTE2NiwzNTY0OSwzNTY3NiwzNTY3MiwzNTY1NywzNTY3NCwzNTY2MiwzNTY2MywzNTY1NCwzNTY3MywzNjEwNCwzNjEwNiwzNjQ3NiwzNjQ2NiwzNjQ4NywzNjQ3MCwzNjQ2MCwzNjQ3NCwzNjQ2OCwzNjY5MiwzNjY4NiwzNjc4MSwz''@;'; put 'put ''NzAwMiwzNzAwMywzNzI5NywzNzI5NCwzNzg1NywzNzg0MSwzNzg1NSwzNzgyNywzNzgzMiwzNzg1MiwzNzg1MywzNzg0NiwzNzg1OCwzNzgzNywzNzg0OCwzNzg2MCwzNzg0NywzNzg2NCwzODM2NCwzODU4MCwzODYyNywzODY5OCwzODY5NSwzODc1MywzODg3NiwzODkwNywzOTAwNiwzOWUz''@;'; put 'put ''LDM5MDAzLDM5MTAwLDM5MjM3LDM5MjQxLDM5NDQ2LDM5NDQ5LDM5NjkzLDM5OTEyLDM5OTExLDM5ODk0LDM5ODk5LDQwMzI5LDQwMjg5LDQwMzA2LDQwMjk4LDQwMzAwLDQwNTk0LDQwNTk5LDQwNTk1LDQwNjI4LDIxMjQwLDIyMTg0LDIyMTk5LDIyMTk4LDIyMTk2LDIyMjA0LDIyNzU2LDIz''@;'; put 'put ''MzYwLDIzMzYzLDIzNDIxLDIzNTQyLDI0MDA5LDI1MDgwLDI1MDgyLDI1ODgwLDI1ODc2LDI1ODgxLDI2MzQyLDI2NDA3LDI3MzcyLDI4NzM0LDI4NzIwLDI4NzIyLDI5MjAwLDI5NTYzLDI5OTAzLDMwMzA2LDMwMzA5LDMxMDE0LDMxMDE4LDMxMDIwLDMxMDE5LDMxNDMxLDMxNDc4LDMxODIw''@;'; put 'put ''LDMxODExLDMxODIxLDMxOTgzLDMxOTg0LDM2NzgyLDMyMzgxLDMyMzgwLDMyMzg2LDMyNTg4LDMyNzY4LDMzMjQyLDMzMzgyLDM0Mjk5LDM0Mjk3LDM0MzIxLDM0Mjk4LDM0MzEwLDM0MzE1LDM0MzExLDM0MzE0LDM0ODM2LDM0ODM3LDM1MTcyLDM1MjU4LDM1MzIwLDM1Njk2LDM1NjkyLDM1''@;'; put 'put ''Njg2LDM1Njk1LDM1Njc5LDM1NjkxLDM2MTExLDM2MTA5LDM2NDg5LDM2NDgxLDM2NDg1LDM2NDgyLDM3MzAwLDM3MzIzLDM3OTEyLDM3ODkxLDM3ODg1LDM4MzY5LDM4NzA0LDM5MTA4LDM5MjUwLDM5MjQ5LDM5MzM2LDM5NDY3LDM5NDcyLDM5NDc5LDM5NDc3LDM5OTU1LDM5OTQ5LDQwNTY5''@;'; put 'put ''LDQwNjI5LDQwNjgwLDQwNzUxLDQwNzk5LDQwODAzLDQwODAxLDIwNzkxLDIwNzkyLDIyMjA5LDIyMjA4LDIyMjEwLDIyODA0LDIzNjYwLDI0MDEzLDI1MDg0LDI1MDg2LDI1ODg1LDI1ODg0LDI2MDA1LDI2MzQ1LDI3Mzg3LDI3Mzk2LDI3Mzg2LDI3NTcwLDI4NzQ4LDI5MjExLDI5MzUxLDI5''@;'; put 'put ''OTEwLDI5OTA4LDMwMzEzLDMwNjc1LDMxODI0LDMyMzk5LDMyMzk2LDMyNzAwLDM0MzI3LDM0MzQ5LDM0MzMwLDM0ODUxLDM0ODUwLDM0ODQ5LDM0ODQ3LDM1MTc4LDM1MTgwLDM1MjYxLDM1NzAwLDM1NzAzLDM1NzA5LDM2MTE1LDM2NDkwLDM2NDkzLDM2NDkxLDM2NzAzLDM2NzgzLDM3MzA2''@;'; put 'put ''LDM3OTM0LDM3OTM5LDM3OTQxLDM3OTQ2LDM3OTQ0LDM3OTM4LDM3OTMxLDM4MzcwLDM4NzEyLDM4NzEzLDM4NzA2LDM4OTExLDM5MDE1LDM5MDEzLDM5MjU1LDM5NDkzLDM5NDkxLDM5NDg4LDM5NDg2LDM5NjMxLDM5NzY0LDM5NzYxLDM5OTgxLDM5OTczLDQwMzY3LDQwMzcyLDQwMzg2LDQw''@;'; put 'put ''Mzc2LDQwNjA1LDQwNjg3LDQwNzI5LDQwNzk2LDQwODA2LDQwODA3LDIwNzk2LDIwNzk1LDIyMjE2LDIyMjE4LDIyMjE3LDIzNDIzLDI0MDIwLDI0MDE4LDI0Mzk4LDI1MDg3LDI1ODkyLDI3NDAyLDI3NDg5LDI4NzUzLDI4NzYwLDI5NTY4LDI5OTI0LDMwMDkwLDMwMzE4LDMwMzE2LDMxMTU1''@;'; put 'put ''LDMxODQwLDMxODM5LDMyODk0LDMyODkzLDMzMjQ3LDM1MTg2LDM1MTgzLDM1MzI0LDM1NzEyLDM2MTE4LDM2MTE5LDM2NDk3LDM2NDk5LDM2NzA1LDM3MTkyLDM3OTU2LDM3OTY5LDM3OTcwLDM4NzE3LDM4NzE4LDM4ODUxLDM4ODQ5LDM5MDE5LDM5MjUzLDM5NTA5LDM5NTAxLDM5NjM0LDM5''@;'; put 'put ''NzA2LDQwMDA5LDM5OTg1LDM5OTk4LDM5OTk1LDQwNDAzLDQwNDA3LDQwNzU2LDQwODEyLDQwODEwLDQwODUyLDIyMjIwLDI0MDIyLDI1MDg4LDI1ODkxLDI1ODk5LDI1ODk4LDI2MzQ4LDI3NDA4LDI5OTE0LDMxNDM0LDMxODQ0LDMxODQzLDMxODQ1LDMyNDAzLDMyNDA2LDMyNDA0LDMzMjUw''@;'; put 'put ''LDM0MzYwLDM0MzY3LDM0ODY1LDM1NzIyLDM3MDA4LDM3MDA3LDM3OTg3LDM3OTg0LDM3OTg4LDM4NzYwLDM5MDIzLDM5MjYwLDM5NTE0LDM5NTE1LDM5NTExLDM5NjM1LDM5NjM2LDM5NjMzLDQwMDIwLDQwMDIzLDQwMDIyLDQwNDIxLDQwNjA3LDQwNjkyLDIyMjI1LDIyNzYxLDI1OTAwLDI4''@;'; put 'put ''NzY2LDMwMzIxLDMwMzIyLDMwNjc5LDMyNTkyLDMyNjQ4LDM0ODcwLDM0ODczLDM0OTE0LDM1NzMxLDM1NzMwLDM1NzM0LDMzMzk5LDM2MTIzLDM3MzEyLDM3OTk0LDM4NzIyLDM4NzI4LDM4NzI0LDM4ODU0LDM5MDI0LDM5NTE5LDM5NzE0LDM5NzY4LDQwMDMxLDQwNDQxLDQwNDQyLDQwNTcy''@;'; put 'put ''LDQwNTczLDQwNzExLDQwODIzLDQwODE4LDI0MzA3LDI3NDE0LDI4NzcxLDMxODUyLDMxODU0LDM0ODc1LDM1MjY0LDM2NTEzLDM3MzEzLDM4MDAyLDM4ZTMsMzkwMjUsMzkyNjIsMzk2MzgsMzk3MTUsNDA2NTIsMjg3NzIsMzA2ODIsMzU3MzgsMzgwMDcsMzg4NTcsMzk1MjIsMzk1MjUsMzI0''@;'; put 'put ''MTIsMzU3NDAsMzY1MjIsMzczMTcsMzgwMTMsMzgwMTQsMzgwMTIsNDAwNTUsNDAwNTYsNDA2OTUsMzU5MjQsMzgwMTUsNDA0NzQsMjkyMjQsMzk1MzAsMzk3MjksNDA0NzUsNDA0NzgsMzE4NTgsOTMxMiw5MzEzLDkzMTQsOTMxNSw5MzE2LDkzMTcsOTMxOCw5MzE5LDkzMjAsOTMyMSw5MzMy''@;'; put 'put ''LDkzMzMsOTMzNCw5MzM1LDkzMzYsOTMzNyw5MzM4LDkzMzksOTM0MCw5MzQxLDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksMjAwMjIsMjAwMzEsMjAxMDEsMjAxMjgsMjA4NjYsMjA4ODYsMjA5MDcsMjEyNDEsMjEzMDQsMjEzNTMsMjE0MzAsMjI3''@;'; put 'put ''OTQsMjM0MjQsMjQwMjcsMTIwODMsMjQxOTEsMjQzMDgsMjQ0MDAsMjQ0MTcsMjU5MDgsMjYwODAsMzAwOTgsMzAzMjYsMzY3ODksMzg1ODIsMTY4LDcxMCwxMjU0MSwxMjU0MiwxMjQ0NSwxMjQ0NiwxMjI5MSwyMDE4OSwxMjI5MywxMjI5NCwxMjI5NSwxMjU0MCw2NTMzOSw2NTM0MSwxMDA0''@;'; put 'put ''NSwxMjM1MywxMjM1NCwxMjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2MCwxMjM2MSwxMjM2MiwxMjM2MywxMjM2NCwxMjM2NSwxMjM2NiwxMjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3MiwxMjM3MywxMjM3NCwxMjM3NSwxMjM3NiwxMjM3NywxMjM3OCwxMjM3OSwx''@;'; put 'put ''MjM4MCwxMjM4MSwxMjM4MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4NywxMjM4OCwxMjM4OSwxMjM5MCwxMjM5MSwxMjM5MiwxMjM5MywxMjM5NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQwMCwxMjQwMSwxMjQwMiwxMjQwMywxMjQwNCwxMjQwNSwxMjQwNiwxMjQw''@;'; put 'put ''NywxMjQwOCwxMjQwOSwxMjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQxNSwxMjQxNiwxMjQxNywxMjQxOCwxMjQxOSwxMjQyMCwxMjQyMSwxMjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywxMjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwxMjQzMiwxMjQzMywxMjQzNCwx''@;'; put 'put ''MjQzNSwxMjQ0OSwxMjQ1MCwxMjQ1MSwxMjQ1MiwxMjQ1MywxMjQ1NCwxMjQ1NSwxMjQ1NiwxMjQ1NywxMjQ1OCwxMjQ1OSwxMjQ2MCwxMjQ2MSwxMjQ2MiwxMjQ2MywxMjQ2NCwxMjQ2NSwxMjQ2NiwxMjQ2NywxMjQ2OCwxMjQ2OSwxMjQ3MCwxMjQ3MSwxMjQ3MiwxMjQ3MywxMjQ3NCwxMjQ3''@;'; put 'put ''NSwxMjQ3NiwxMjQ3NywxMjQ3OCwxMjQ3OSwxMjQ4MCwxMjQ4MSwxMjQ4MiwxMjQ4MywxMjQ4NCwxMjQ4NSwxMjQ4NiwxMjQ4NywxMjQ4OCwxMjQ4OSwxMjQ5MCwxMjQ5MSwxMjQ5MiwxMjQ5MywxMjQ5NCwxMjQ5NSwxMjQ5NiwxMjQ5NywxMjQ5OCwxMjQ5OSwxMjUwMCwxMjUwMSwxMjUwMiwx''@;'; put 'put ''MjUwMywxMjUwNCwxMjUwNSwxMjUwNiwxMjUwNywxMjUwOCwxMjUwOSwxMjUxMCwxMjUxMSwxMjUxMiwxMjUxMywxMjUxNCwxMjUxNSwxMjUxNiwxMjUxNywxMjUxOCwxMjUxOSwxMjUyMCwxMjUyMSwxMjUyMiwxMjUyMywxMjUyNCwxMjUyNSwxMjUyNiwxMjUyNywxMjUyOCwxMjUyOSwxMjUz''@;'; put 'put ''MCwxMjUzMSwxMjUzMiwxMjUzMywxMjUzNCwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDI1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2''@;'; put 'put ''LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMTA1LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4''@;'; put 'put ''LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMyw4Njc5LDg2MzIsODYzMywxMjc1MSwxMzEyNzYsMjAwNTgsMTMxMjEwLDIwOTk0LDE3NTUzLDQwODgwLDIwODcyLDQwODgxLDE2MTI4NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY1NTA2LDY1NTA4LDY1Mjg3LDY1MjgyLDEy''@;'; put 'put ''ODQ5LDg0NzAsODQ4MSwxMjQ0MywxMjQ0NCwxMTkwNCwxMTkwOCwxMTkxMCwxMTkxMSwxMTkxMiwxMTkxNCwxMTkxNiwxMTkxNywxMTkyNSwxMTkzMiwxMTkzMywxMTk0MSwxMTk0MywxMTk0NiwxMTk0OCwxMTk1MCwxMTk1OCwxMTk2NCwxMTk2NiwxMTk3NCwxMTk3OCwxMTk4MCwxMTk4MSwx''@;'; put 'put ''MTk4MywxMTk5MCwxMTk5MSwxMTk5OCwxMjAwMyxudWxsLG51bGwsbnVsbCw2NDMsNTkyLDYwMyw1OTYsNjI5LDMzOSwyNDgsMzMxLDY1MCw2MTgsMjAwMzQsMjAwNjAsMjA5ODEsMjEyNzQsMjEzNzgsMTk5NzUsMTk5ODAsMjAwMzksMjAxMDksMjIyMzEsNjQwMTIsMjM2NjIsMjQ0MzUsMTk5''@;'; put 'put ''ODMsMjA4NzEsMTk5ODIsMjAwMTQsMjAxMTUsMjAxNjIsMjAxNjksMjAxNjgsMjA4ODgsMjEyNDQsMjEzNTYsMjE0MzMsMjIzMDQsMjI3ODcsMjI4MjgsMjM1NjgsMjQwNjMsMjYwODEsMjc1NzEsMjc1OTYsMjc2NjgsMjkyNDcsMjAwMTcsMjAwMjgsMjAyMDAsMjAxODgsMjAyMDEsMjAxOTMs''@;'; put 'put ''MjAxODksMjAxODYsMjEwMDQsMjEyNzYsMjEzMjQsMjIzMDYsMjIzMDcsMjI4MDcsMjI4MzEsMjM0MjUsMjM0MjgsMjM1NzAsMjM2MTEsMjM2NjgsMjM2NjcsMjQwNjgsMjQxOTIsMjQxOTQsMjQ1MjEsMjUwOTcsMjUxNjgsMjc2NjksMjc3MDIsMjc3MTUsMjc3MTEsMjc3MDcsMjkzNTgsMjkz''@;'; put 'put ''NjAsMjk1NzgsMzExNjAsMzI5MDYsMzg0MzAsMjAyMzgsMjAyNDgsMjAyNjgsMjAyMTMsMjAyNDQsMjAyMDksMjAyMjQsMjAyMTUsMjAyMzIsMjAyNTMsMjAyMjYsMjAyMjksMjAyNTgsMjAyNDMsMjAyMjgsMjAyMTIsMjAyNDIsMjA5MTMsMjEwMTEsMjEwMDEsMjEwMDgsMjExNTgsMjEyODIs''@;'; put 'put ''MjEyNzksMjEzMjUsMjEzODYsMjE1MTEsMjIyNDEsMjIyMzksMjIzMTgsMjIzMTQsMjIzMjQsMjI4NDQsMjI5MTIsMjI5MDgsMjI5MTcsMjI5MDcsMjI5MTAsMjI5MDMsMjI5MTEsMjMzODIsMjM1NzMsMjM1ODksMjM2NzYsMjM2NzQsMjM2NzUsMjM2NzgsMjQwMzEsMjQxODEsMjQxOTYsMjQz''@;'; put 'put ''MjIsMjQzNDYsMjQ0MzYsMjQ1MzMsMjQ1MzIsMjQ1MjcsMjUxODAsMjUxODIsMjUxODgsMjUxODUsMjUxOTAsMjUxODYsMjUxNzcsMjUxODQsMjUxNzgsMjUxODksMjYwOTUsMjYwOTQsMjY0MzAsMjY0MjUsMjY0MjQsMjY0MjcsMjY0MjYsMjY0MzEsMjY0MjgsMjY0MTksMjc2NzIsMjc3MTgs''@;'; put 'put ''Mjc3MzAsMjc3NDAsMjc3MjcsMjc3MjIsMjc3MzIsMjc3MjMsMjc3MjQsMjg3ODUsMjkyNzgsMjkzNjQsMjkzNjUsMjk1ODIsMjk5OTQsMzAzMzUsMzEzNDksMzI1OTMsMzM0MDAsMzM0MDQsMzM0MDgsMzM0MDUsMzM0MDcsMzQzODEsMzUxOTgsMzcwMTcsMzcwMTUsMzcwMTYsMzcwMTksMzcw''@;'; put 'put ''MTIsMzg0MzQsMzg0MzYsMzg0MzIsMzg0MzUsMjAzMTAsMjAyODMsMjAzMjIsMjAyOTcsMjAzMDcsMjAzMjQsMjAyODYsMjAzMjcsMjAzMDYsMjAzMTksMjAyODksMjAzMTIsMjAyNjksMjAyNzUsMjAyODcsMjAzMjEsMjA4NzksMjA5MjEsMjEwMjAsMjEwMjIsMjEwMjUsMjExNjUsMjExNjYs''@;'; put 'put ''MjEyNTcsMjEzNDcsMjEzNjIsMjEzOTAsMjEzOTEsMjE1NTIsMjE1NTksMjE1NDYsMjE1ODgsMjE1NzMsMjE1MjksMjE1MzIsMjE1NDEsMjE1MjgsMjE1NjUsMjE1ODMsMjE1NjksMjE1NDQsMjE1NDAsMjE1NzUsMjIyNTQsMjIyNDcsMjIyNDUsMjIzMzcsMjIzNDEsMjIzNDgsMjIzNDUsMjIz''@;'; put 'put ''NDcsMjIzNTQsMjI3OTAsMjI4NDgsMjI5NTAsMjI5MzYsMjI5NDQsMjI5MzUsMjI5MjYsMjI5NDYsMjI5MjgsMjI5MjcsMjI5NTEsMjI5NDUsMjM0MzgsMjM0NDIsMjM1OTIsMjM1OTQsMjM2OTMsMjM2OTUsMjM2ODgsMjM2OTEsMjM2ODksMjM2OTgsMjM2OTAsMjM2ODYsMjM2OTksMjM3MDEs''@;'; put 'put ''MjQwMzIsMjQwNzQsMjQwNzgsMjQyMDMsMjQyMDEsMjQyMDQsMjQyMDAsMjQyMDUsMjQzMjUsMjQzNDksMjQ0NDAsMjQ0MzgsMjQ1MzAsMjQ1MjksMjQ1MjgsMjQ1NTcsMjQ1NTIsMjQ1NTgsMjQ1NjMsMjQ1NDUsMjQ1NDgsMjQ1NDcsMjQ1NzAsMjQ1NTksMjQ1NjcsMjQ1NzEsMjQ1NzYsMjQ1''@;'; put 'put ''NjQsMjUxNDYsMjUyMTksMjUyMjgsMjUyMzAsMjUyMzEsMjUyMzYsMjUyMjMsMjUyMDEsMjUyMTEsMjUyMTAsMjUyMDAsMjUyMTcsMjUyMjQsMjUyMDcsMjUyMTMsMjUyMDIsMjUyMDQsMjU5MTEsMjYwOTYsMjYxMDAsMjYwOTksMjYwOTgsMjYxMDEsMjY0MzcsMjY0MzksMjY0NTcsMjY0NTMs''@;'; put 'put ''MjY0NDQsMjY0NDAsMjY0NjEsMjY0NDUsMjY0NTgsMjY0NDMsMjc2MDAsMjc2NzMsMjc2NzQsMjc3NjgsMjc3NTEsMjc3NTUsMjc3ODAsMjc3ODcsMjc3OTEsMjc3NjEsMjc3NTksMjc3NTMsMjc4MDIsMjc3NTcsMjc3ODMsMjc3OTcsMjc4MDQsMjc3NTAsMjc3NjMsMjc3NDksMjc3NzEsMjc3''@;'; put 'put ''OTAsMjg3ODgsMjg3OTQsMjkyODMsMjkzNzUsMjkzNzMsMjkzNzksMjkzODIsMjkzNzcsMjkzNzAsMjkzODEsMjk1ODksMjk1OTEsMjk1ODcsMjk1ODgsMjk1ODYsMzAwMTAsMzAwMDksMzAxMDAsMzAxMDEsMzAzMzcsMzEwMzcsMzI4MjAsMzI5MTcsMzI5MjEsMzI5MTIsMzI5MTQsMzI5MjQs''@;'; put 'put ''MzM0MjQsMzM0MjMsMzM0MTMsMzM0MjIsMzM0MjUsMzM0MjcsMzM0MTgsMzM0MTEsMzM0MTIsMzU5NjAsMzY4MDksMzY3OTksMzcwMjMsMzcwMjUsMzcwMjksMzcwMjIsMzcwMzEsMzcwMjQsMzg0NDgsMzg0NDAsMzg0NDcsMzg0NDUsMjAwMTksMjAzNzYsMjAzNDgsMjAzNTcsMjAzNDksMjAz''@;'; put 'put ''NTIsMjAzNTksMjAzNDIsMjAzNDAsMjAzNjEsMjAzNTYsMjAzNDMsMjAzMDAsMjAzNzUsMjAzMzAsMjAzNzgsMjAzNDUsMjAzNTMsMjAzNDQsMjAzNjgsMjAzODAsMjAzNzIsMjAzODIsMjAzNzAsMjAzNTQsMjAzNzMsMjAzMzEsMjAzMzQsMjA4OTQsMjA5MjQsMjA5MjYsMjEwNDUsMjEwNDIs''@;'; put 'put ''MjEwNDMsMjEwNjIsMjEwNDEsMjExODAsMjEyNTgsMjEyNTksMjEzMDgsMjEzOTQsMjEzOTYsMjE2MzksMjE2MzEsMjE2MzMsMjE2NDksMjE2MzQsMjE2NDAsMjE2MTEsMjE2MjYsMjE2MzAsMjE2MDUsMjE2MTIsMjE2MjAsMjE2MDYsMjE2NDUsMjE2MTUsMjE2MDEsMjE2MDAsMjE2NTYsMjE2''@;'; put 'put ''MDMsMjE2MDcsMjE2MDQsMjIyNjMsMjIyNjUsMjIzODMsMjIzODYsMjIzODEsMjIzNzksMjIzODUsMjIzODQsMjIzOTAsMjI0MDAsMjIzODksMjIzOTUsMjIzODcsMjIzODgsMjIzNzAsMjIzNzYsMjIzOTcsMjI3OTYsMjI4NTMsMjI5NjUsMjI5NzAsMjI5OTEsMjI5OTAsMjI5NjIsMjI5ODgs''@;'; put 'put ''MjI5NzcsMjI5NjYsMjI5NzIsMjI5NzksMjI5OTgsMjI5NjEsMjI5NzMsMjI5NzYsMjI5ODQsMjI5NjQsMjI5ODMsMjMzOTQsMjMzOTcsMjM0NDMsMjM0NDUsMjM2MjAsMjM2MjMsMjM3MjYsMjM3MTYsMjM3MTIsMjM3MzMsMjM3MjcsMjM3MjAsMjM3MjQsMjM3MTEsMjM3MTUsMjM3MjUsMjM3''@;'; put 'put ''MTQsMjM3MjIsMjM3MTksMjM3MDksMjM3MTcsMjM3MzQsMjM3MjgsMjM3MTgsMjQwODcsMjQwODQsMjQwODksMjQzNjAsMjQzNTQsMjQzNTUsMjQzNTYsMjQ0MDQsMjQ0NTAsMjQ0NDYsMjQ0NDUsMjQ1NDIsMjQ1NDksMjQ2MjEsMjQ2MTQsMjQ2MDEsMjQ2MjYsMjQ1ODcsMjQ2MjgsMjQ1ODYs''@;'; put 'put ''MjQ1OTksMjQ2MjcsMjQ2MDIsMjQ2MDYsMjQ2MjAsMjQ2MTAsMjQ1ODksMjQ1OTIsMjQ2MjIsMjQ1OTUsMjQ1OTMsMjQ1ODgsMjQ1ODUsMjQ2MDQsMjUxMDgsMjUxNDksMjUyNjEsMjUyNjgsMjUyOTcsMjUyNzgsMjUyNTgsMjUyNzAsMjUyOTAsMjUyNjIsMjUyNjcsMjUyNjMsMjUyNzUsMjUy''@;'; put 'put ''NTcsMjUyNjQsMjUyNzIsMjU5MTcsMjYwMjQsMjYwNDMsMjYxMjEsMjYxMDgsMjYxMTYsMjYxMzAsMjYxMjAsMjYxMDcsMjYxMTUsMjYxMjMsMjYxMjUsMjYxMTcsMjYxMDksMjYxMjksMjYxMjgsMjYzNTgsMjYzNzgsMjY1MDEsMjY0NzYsMjY1MTAsMjY1MTQsMjY0ODYsMjY0OTEsMjY1MjAs''@;'; put 'put ''MjY1MDIsMjY1MDAsMjY0ODQsMjY1MDksMjY1MDgsMjY0OTAsMjY1MjcsMjY1MTMsMjY1MjEsMjY0OTksMjY0OTMsMjY0OTcsMjY0ODgsMjY0ODksMjY1MTYsMjc0MjksMjc1MjAsMjc1MTgsMjc2MTQsMjc2NzcsMjc3OTUsMjc4ODQsMjc4ODMsMjc4ODYsMjc4NjUsMjc4MzAsMjc4NjAsMjc4''@;'; put 'put ''MjEsMjc4NzksMjc4MzEsMjc4NTYsMjc4NDIsMjc4MzQsMjc4NDMsMjc4NDYsMjc4ODUsMjc4OTAsMjc4NTgsMjc4NjksMjc4MjgsMjc3ODYsMjc4MDUsMjc3NzYsMjc4NzAsMjc4NDAsMjc5NTIsMjc4NTMsMjc4NDcsMjc4MjQsMjc4OTcsMjc4NTUsMjc4ODEsMjc4NTcsMjg4MjAsMjg4MjQs''@;'; put 'put ''Mjg4MDUsMjg4MTksMjg4MDYsMjg4MDQsMjg4MTcsMjg4MjIsMjg4MDIsMjg4MjYsMjg4MDMsMjkyOTAsMjkzOTgsMjkzODcsMjk0MDAsMjkzODUsMjk0MDQsMjkzOTQsMjkzOTYsMjk0MDIsMjkzODgsMjkzOTMsMjk2MDQsMjk2MDEsMjk2MTMsMjk2MDYsMjk2MDIsMjk2MDAsMjk2MTIsMjk1''@;'; put 'put ''OTcsMjk5MTcsMjk5MjgsMzAwMTUsMzAwMTYsMzAwMTQsMzAwOTIsMzAxMDQsMzAzODMsMzA0NTEsMzA0NDksMzA0NDgsMzA0NTMsMzA3MTIsMzA3MTYsMzA3MTMsMzA3MTUsMzA3MTQsMzA3MTEsMzEwNDIsMzEwMzksMzExNzMsMzEzNTIsMzEzNTUsMzE0ODMsMzE4NjEsMzE5OTcsMzI4MjEs''@;'; put 'put ''MzI5MTEsMzI5NDIsMzI5MzEsMzI5NTIsMzI5NDksMzI5NDEsMzMzMTIsMzM0NDAsMzM0NzIsMzM0NTEsMzM0MzQsMzM0MzIsMzM0MzUsMzM0NjEsMzM0NDcsMzM0NTQsMzM0NjgsMzM0MzgsMzM0NjYsMzM0NjAsMzM0NDgsMzM0NDEsMzM0NDksMzM0NzQsMzM0NDQsMzM0NzUsMzM0NjIsMzM0''@;'; put 'put ''NDIsMzQ0MTYsMzQ0MTUsMzQ0MTMsMzQ0MTQsMzU5MjYsMzY4MTgsMzY4MTEsMzY4MTksMzY4MTMsMzY4MjIsMzY4MjEsMzY4MjMsMzcwNDIsMzcwNDQsMzcwMzksMzcwNDMsMzcwNDAsMzg0NTcsMzg0NjEsMzg0NjAsMzg0NTgsMzg0NjcsMjA0MjksMjA0MjEsMjA0MzUsMjA0MDIsMjA0MjUs''@;'; put 'put ''MjA0MjcsMjA0MTcsMjA0MzYsMjA0NDQsMjA0NDEsMjA0MTEsMjA0MDMsMjA0NDMsMjA0MjMsMjA0MzgsMjA0MTAsMjA0MTYsMjA0MDksMjA0NjAsMjEwNjAsMjEwNjUsMjExODQsMjExODYsMjEzMDksMjEzNzIsMjEzOTksMjEzOTgsMjE0MDEsMjE0MDAsMjE2OTAsMjE2NjUsMjE2NzcsMjE2''@;'; put 'put ''NjksMjE3MTEsMjE2OTksMzM1NDksMjE2ODcsMjE2NzgsMjE3MTgsMjE2ODYsMjE3MDEsMjE3MDIsMjE2NjQsMjE2MTYsMjE2OTIsMjE2NjYsMjE2OTQsMjE2MTgsMjE3MjYsMjE2ODAsMjI0NTMsMjI0MzAsMjI0MzEsMjI0MzYsMjI0MTIsMjI0MjMsMjI0MjksMjI0MjcsMjI0MjAsMjI0MjQs''@;'; put 'put ''MjI0MTUsMjI0MjUsMjI0MzcsMjI0MjYsMjI0MjEsMjI3NzIsMjI3OTcsMjI4NjcsMjMwMDksMjMwMDYsMjMwMjIsMjMwNDAsMjMwMjUsMjMwMDUsMjMwMzQsMjMwMzcsMjMwMzYsMjMwMzAsMjMwMTIsMjMwMjYsMjMwMzEsMjMwMDMsMjMwMTcsMjMwMjcsMjMwMjksMjMwMDgsMjMwMzgsMjMw''@;'; put 'put ''MjgsMjMwMjEsMjM0NjQsMjM2MjgsMjM3NjAsMjM3NjgsMjM3NTYsMjM3NjcsMjM3NTUsMjM3NzEsMjM3NzQsMjM3NzAsMjM3NTMsMjM3NTEsMjM3NTQsMjM3NjYsMjM3NjMsMjM3NjQsMjM3NTksMjM3NTIsMjM3NTAsMjM3NTgsMjM3NzUsMjM4MDAsMjQwNTcsMjQwOTcsMjQwOTgsMjQwOTks''@;'; put 'put ''MjQwOTYsMjQxMDAsMjQyNDAsMjQyMjgsMjQyMjYsMjQyMTksMjQyMjcsMjQyMjksMjQzMjcsMjQzNjYsMjQ0MDYsMjQ0NTQsMjQ2MzEsMjQ2MzMsMjQ2NjAsMjQ2OTAsMjQ2NzAsMjQ2NDUsMjQ2NTksMjQ2NDcsMjQ2NDksMjQ2NjcsMjQ2NTIsMjQ2NDAsMjQ2NDIsMjQ2NzEsMjQ2MTIsMjQ2''@;'; put 'put ''NDQsMjQ2NjQsMjQ2NzgsMjQ2ODYsMjUxNTQsMjUxNTUsMjUyOTUsMjUzNTcsMjUzNTUsMjUzMzMsMjUzNTgsMjUzNDcsMjUzMjMsMjUzMzcsMjUzNTksMjUzNTYsMjUzMzYsMjUzMzQsMjUzNDQsMjUzNjMsMjUzNjQsMjUzMzgsMjUzNjUsMjUzMzksMjUzMjgsMjU5MjEsMjU5MjMsMjYwMjYs''@;'; put 'put ''MjYwNDcsMjYxNjYsMjYxNDUsMjYxNjIsMjYxNjUsMjYxNDAsMjYxNTAsMjYxNDYsMjYxNjMsMjYxNTUsMjYxNzAsMjYxNDEsMjYxNjQsMjYxNjksMjYxNTgsMjYzODMsMjYzODQsMjY1NjEsMjY2MTAsMjY1NjgsMjY1NTQsMjY1ODgsMjY1NTUsMjY2MTYsMjY1ODQsMjY1NjAsMjY1NTEsMjY1''@;'; put 'put ''NjUsMjY2MDMsMjY1OTYsMjY1OTEsMjY1NDksMjY1NzMsMjY1NDcsMjY2MTUsMjY2MTQsMjY2MDYsMjY1OTUsMjY1NjIsMjY1NTMsMjY1NzQsMjY1OTksMjY2MDgsMjY1NDYsMjY2MjAsMjY1NjYsMjY2MDUsMjY1NzIsMjY1NDIsMjY1OTgsMjY1ODcsMjY2MTgsMjY1NjksMjY1NzAsMjY1NjMs''@;'; put 'put ''MjY2MDIsMjY1NzEsMjc0MzIsMjc1MjIsMjc1MjQsMjc1NzQsMjc2MDYsMjc2MDgsMjc2MTYsMjc2ODAsMjc2ODEsMjc5NDQsMjc5NTYsMjc5NDksMjc5MzUsMjc5NjQsMjc5NjcsMjc5MjIsMjc5MTQsMjc4NjYsMjc5NTUsMjc5MDgsMjc5MjksMjc5NjIsMjc5MzAsMjc5MjEsMjc5MDQsMjc5''@;'; put 'put ''MzMsMjc5NzAsMjc5MDUsMjc5MjgsMjc5NTksMjc5MDcsMjc5MTksMjc5NjgsMjc5MTEsMjc5MzYsMjc5NDgsMjc5MTIsMjc5MzgsMjc5MTMsMjc5MjAsMjg4NTUsMjg4MzEsMjg4NjIsMjg4NDksMjg4NDgsMjg4MzMsMjg4NTIsMjg4NTMsMjg4NDEsMjkyNDksMjkyNTcsMjkyNTgsMjkyOTIs''@;'; put 'put ''MjkyOTYsMjkyOTksMjkyOTQsMjkzODYsMjk0MTIsMjk0MTYsMjk0MTksMjk0MDcsMjk0MTgsMjk0MTQsMjk0MTEsMjk1NzMsMjk2NDQsMjk2MzQsMjk2NDAsMjk2MzcsMjk2MjUsMjk2MjIsMjk2MjEsMjk2MjAsMjk2NzUsMjk2MzEsMjk2MzksMjk2MzAsMjk2MzUsMjk2MzgsMjk2MjQsMjk2''@;'; put 'put ''NDMsMjk5MzIsMjk5MzQsMjk5OTgsMzAwMjMsMzAwMjQsMzAxMTksMzAxMjIsMzAzMjksMzA0MDQsMzA0NzIsMzA0NjcsMzA0NjgsMzA0NjksMzA0NzQsMzA0NTUsMzA0NTksMzA0NTgsMzA2OTUsMzA2OTYsMzA3MjYsMzA3MzcsMzA3MzgsMzA3MjUsMzA3MzYsMzA3MzUsMzA3MzQsMzA3Mjks''@;'; put 'put ''MzA3MjMsMzA3MzksMzEwNTAsMzEwNTIsMzEwNTEsMzEwNDUsMzEwNDQsMzExODksMzExODEsMzExODMsMzExOTAsMzExODIsMzEzNjAsMzEzNTgsMzE0NDEsMzE0ODgsMzE0ODksMzE4NjYsMzE4NjQsMzE4NjUsMzE4NzEsMzE4NzIsMzE4NzMsMzIwMDMsMzIwMDgsMzIwMDEsMzI2MDAsMzI2''@;'; put 'put ''NTcsMzI2NTMsMzI3MDIsMzI3NzUsMzI3ODIsMzI3ODMsMzI3ODgsMzI4MjMsMzI5ODQsMzI5NjcsMzI5OTIsMzI5NzcsMzI5NjgsMzI5NjIsMzI5NzYsMzI5NjUsMzI5OTUsMzI5ODUsMzI5ODgsMzI5NzAsMzI5ODEsMzI5NjksMzI5NzUsMzI5ODMsMzI5OTgsMzI5NzMsMzMyNzksMzMzMTMs''@;'; put 'put ''MzM0MjgsMzM0OTcsMzM1MzQsMzM1MjksMzM1NDMsMzM1MTIsMzM1MzYsMzM0OTMsMzM1OTQsMzM1MTUsMzM0OTQsMzM1MjQsMzM1MTYsMzM1MDUsMzM1MjIsMzM1MjUsMzM1NDgsMzM1MzEsMzM1MjYsMzM1MjAsMzM1MTQsMzM1MDgsMzM1MDQsMzM1MzAsMzM1MjMsMzM1MTcsMzQ0MjMsMzQ0''@;'; put 'put ''MjAsMzQ0MjgsMzQ0MTksMzQ4ODEsMzQ4OTQsMzQ5MTksMzQ5MjIsMzQ5MjEsMzUyODMsMzUzMzIsMzUzMzUsMzYyMTAsMzY4MzUsMzY4MzMsMzY4NDYsMzY4MzIsMzcxMDUsMzcwNTMsMzcwNTUsMzcwNzcsMzcwNjEsMzcwNTQsMzcwNjMsMzcwNjcsMzcwNjQsMzczMzIsMzczMzEsMzg0ODQs''@;'; put 'put ''Mzg0NzksMzg0ODEsMzg0ODMsMzg0NzQsMzg0NzgsMjA1MTAsMjA0ODUsMjA0ODcsMjA0OTksMjA1MTQsMjA1MjgsMjA1MDcsMjA0NjksMjA0NjgsMjA1MzEsMjA1MzUsMjA1MjQsMjA0NzAsMjA0NzEsMjA1MDMsMjA1MDgsMjA1MTIsMjA1MTksMjA1MzMsMjA1MjcsMjA1MjksMjA0OTQsMjA4''@;'; put 'put ''MjYsMjA4ODQsMjA4ODMsMjA5MzgsMjA5MzIsMjA5MzMsMjA5MzYsMjA5NDIsMjEwODksMjEwODIsMjEwNzQsMjEwODYsMjEwODcsMjEwNzcsMjEwOTAsMjExOTcsMjEyNjIsMjE0MDYsMjE3OTgsMjE3MzAsMjE3ODMsMjE3NzgsMjE3MzUsMjE3NDcsMjE3MzIsMjE3ODYsMjE3NTksMjE3NjQs''@;'; put 'put ''MjE3NjgsMjE3MzksMjE3NzcsMjE3NjUsMjE3NDUsMjE3NzAsMjE3NTUsMjE3NTEsMjE3NTIsMjE3MjgsMjE3NzQsMjE3NjMsMjE3NzEsMjIyNzMsMjIyNzQsMjI0NzYsMjI1NzgsMjI0ODUsMjI0ODIsMjI0NTgsMjI0NzAsMjI0NjEsMjI0NjAsMjI0NTYsMjI0NTQsMjI0NjMsMjI0NzEsMjI0''@;'; put 'put ''ODAsMjI0NTcsMjI0NjUsMjI3OTgsMjI4NTgsMjMwNjUsMjMwNjIsMjMwODUsMjMwODYsMjMwNjEsMjMwNTUsMjMwNjMsMjMwNTAsMjMwNzAsMjMwOTEsMjM0MDQsMjM0NjMsMjM0NjksMjM0NjgsMjM1NTUsMjM2MzgsMjM2MzYsMjM3ODgsMjM4MDcsMjM3OTAsMjM3OTMsMjM3OTksMjM4MDgs''@;'; put 'put ''MjM4MDEsMjQxMDUsMjQxMDQsMjQyMzIsMjQyMzgsMjQyMzQsMjQyMzYsMjQzNzEsMjQzNjgsMjQ0MjMsMjQ2NjksMjQ2NjYsMjQ2NzksMjQ2NDEsMjQ3MzgsMjQ3MTIsMjQ3MDQsMjQ3MjIsMjQ3MDUsMjQ3MzMsMjQ3MDcsMjQ3MjUsMjQ3MzEsMjQ3MjcsMjQ3MTEsMjQ3MzIsMjQ3MTgsMjUx''@;'; put 'put ''MTMsMjUxNTgsMjUzMzAsMjUzNjAsMjU0MzAsMjUzODgsMjU0MTIsMjU0MTMsMjUzOTgsMjU0MTEsMjU1NzIsMjU0MDEsMjU0MTksMjU0MTgsMjU0MDQsMjUzODUsMjU0MDksMjUzOTYsMjU0MzIsMjU0MjgsMjU0MzMsMjUzODksMjU0MTUsMjUzOTUsMjU0MzQsMjU0MjUsMjU0MDAsMjU0MzEs''@;'; put 'put ''MjU0MDgsMjU0MTYsMjU5MzAsMjU5MjYsMjYwNTQsMjYwNTEsMjYwNTIsMjYwNTAsMjYxODYsMjYyMDcsMjYxODMsMjYxOTMsMjYzODYsMjYzODcsMjY2NTUsMjY2NTAsMjY2OTcsMjY2NzQsMjY2NzUsMjY2ODMsMjY2OTksMjY3MDMsMjY2NDYsMjY2NzMsMjY2NTIsMjY2NzcsMjY2NjcsMjY2''@;'; put 'put ''NjksMjY2NzEsMjY3MDIsMjY2OTIsMjY2NzYsMjY2NTMsMjY2NDIsMjY2NDQsMjY2NjIsMjY2NjQsMjY2NzAsMjY3MDEsMjY2ODIsMjY2NjEsMjY2NTYsMjc0MzYsMjc0MzksMjc0MzcsMjc0NDEsMjc0NDQsMjc1MDEsMzI4OTgsMjc1MjgsMjc2MjIsMjc2MjAsMjc2MjQsMjc2MTksMjc2MTgs''@;'; put 'put ''Mjc2MjMsMjc2ODUsMjgwMjYsMjgwMDMsMjgwMDQsMjgwMjIsMjc5MTcsMjgwMDEsMjgwNTAsMjc5OTIsMjgwMDIsMjgwMTMsMjgwMTUsMjgwNDksMjgwNDUsMjgxNDMsMjgwMzEsMjgwMzgsMjc5OTgsMjgwMDcsMjhlMywyODA1NSwyODAxNiwyODAyOCwyNzk5OSwyODAzNCwyODA1NiwyNzk1''@;'; put 'put ''MSwyODAwOCwyODA0MywyODAzMCwyODAzMiwyODAzNiwyNzkyNiwyODAzNSwyODAyNywyODAyOSwyODAyMSwyODA0OCwyODg5MiwyODg4MywyODg4MSwyODg5MywyODg3NSwzMjU2OSwyODg5OCwyODg4NywyODg4MiwyODg5NCwyODg5NiwyODg4NCwyODg3NywyODg2OSwyODg3MCwyODg3MSwy''@;'; put 'put ''ODg5MCwyODg3OCwyODg5NywyOTI1MCwyOTMwNCwyOTMwMywyOTMwMiwyOTQ0MCwyOTQzNCwyOTQyOCwyOTQzOCwyOTQzMCwyOTQyNywyOTQzNSwyOTQ0MSwyOTY1MSwyOTY1NywyOTY2OSwyOTY1NCwyOTYyOCwyOTY3MSwyOTY2NywyOTY3MywyOTY2MCwyOTY1MCwyOTY1OSwyOTY1MiwyOTY2''@;'; put 'put ''MSwyOTY1OCwyOTY1NSwyOTY1NiwyOTY3MiwyOTkxOCwyOTkxOSwyOTk0MCwyOTk0MSwyOTk4NSwzMDA0MywzMDA0NywzMDEyOCwzMDE0NSwzMDEzOSwzMDE0OCwzMDE0NCwzMDE0MywzMDEzNCwzMDEzOCwzMDM0NiwzMDQwOSwzMDQ5MywzMDQ5MSwzMDQ4MCwzMDQ4MywzMDQ4MiwzMDQ5OSwz''@;'; put 'put ''MDQ4MSwzMDQ4NSwzMDQ4OSwzMDQ5MCwzMDQ5OCwzMDUwMywzMDc1NSwzMDc2NCwzMDc1NCwzMDc3MywzMDc2NywzMDc2MCwzMDc2NiwzMDc2MywzMDc1MywzMDc2MSwzMDc3MSwzMDc2MiwzMDc2OSwzMTA2MCwzMTA2NywzMTA1NSwzMTA2OCwzMTA1OSwzMTA1OCwzMTA1NywzMTIxMSwzMTIx''@;'; put 'put ''MiwzMTIwMCwzMTIxNCwzMTIxMywzMTIxMCwzMTE5NiwzMTE5OCwzMTE5NywzMTM2NiwzMTM2OSwzMTM2NSwzMTM3MSwzMTM3MiwzMTM3MCwzMTM2NywzMTQ0OCwzMTUwNCwzMTQ5MiwzMTUwNywzMTQ5MywzMTUwMywzMTQ5NiwzMTQ5OCwzMTUwMiwzMTQ5NywzMTUwNiwzMTg3NiwzMTg4OSwz''@;'; put 'put ''MTg4MiwzMTg4NCwzMTg4MCwzMTg4NSwzMTg3NywzMjAzMCwzMjAyOSwzMjAxNywzMjAxNCwzMjAyNCwzMjAyMiwzMjAxOSwzMjAzMSwzMjAxOCwzMjAxNSwzMjAxMiwzMjYwNCwzMjYwOSwzMjYwNiwzMjYwOCwzMjYwNSwzMjYwMywzMjY2MiwzMjY1OCwzMjcwNywzMjcwNiwzMjcwNCwzMjc5''@;'; put 'put ''MCwzMjgzMCwzMjgyNSwzMzAxOCwzMzAxMCwzMzAxNywzMzAxMywzMzAyNSwzMzAxOSwzMzAyNCwzMzI4MSwzMzMyNywzMzMxNywzMzU4NywzMzU4MSwzMzYwNCwzMzU2MSwzMzYxNywzMzU3MywzMzYyMiwzMzU5OSwzMzYwMSwzMzU3NCwzMzU2NCwzMzU3MCwzMzYwMiwzMzYxNCwzMzU2Mywz''@;'; put 'put ''MzU3OCwzMzU0NCwzMzU5NiwzMzYxMywzMzU1OCwzMzU3MiwzMzU2OCwzMzU5MSwzMzU4MywzMzU3NywzMzYwNywzMzYwNSwzMzYxMiwzMzYxOSwzMzU2NiwzMzU4MCwzMzYxMSwzMzU3NSwzMzYwOCwzNDM4NywzNDM4NiwzNDQ2NiwzNDQ3MiwzNDQ1NCwzNDQ0NSwzNDQ0OSwzNDQ2MiwzNDQz''@;'; put 'put ''OSwzNDQ1NSwzNDQzOCwzNDQ0MywzNDQ1OCwzNDQzNywzNDQ2OSwzNDQ1NywzNDQ2NSwzNDQ3MSwzNDQ1MywzNDQ1NiwzNDQ0NiwzNDQ2MSwzNDQ0OCwzNDQ1MiwzNDg4MywzNDg4NCwzNDkyNSwzNDkzMywzNDkzNCwzNDkzMCwzNDk0NCwzNDkyOSwzNDk0MywzNDkyNywzNDk0NywzNDk0Miwz''@;'; put 'put ''NDkzMiwzNDk0MCwzNTM0NiwzNTkxMSwzNTkyNywzNTk2MywzNjAwNCwzNjAwMywzNjIxNCwzNjIxNiwzNjI3NywzNjI3OSwzNjI3OCwzNjU2MSwzNjU2MywzNjg2MiwzNjg1MywzNjg2NiwzNjg2MywzNjg1OSwzNjg2OCwzNjg2MCwzNjg1NCwzNzA3OCwzNzA4OCwzNzA4MSwzNzA4MiwzNzA5''@;'; put 'put ''MSwzNzA4NywzNzA5MywzNzA4MCwzNzA4MywzNzA3OSwzNzA4NCwzNzA5MiwzNzIwMCwzNzE5OCwzNzE5OSwzNzMzMywzNzM0NiwzNzMzOCwzODQ5MiwzODQ5NSwzODU4OCwzOTEzOSwzOTY0NywzOTcyNywyMDA5NSwyMDU5MiwyMDU4NiwyMDU3NywyMDU3NCwyMDU3NiwyMDU2MywyMDU1NSwy''@;'; put 'put ''MDU3MywyMDU5NCwyMDU1MiwyMDU1NywyMDU0NSwyMDU3MSwyMDU1NCwyMDU3OCwyMDUwMSwyMDU0OSwyMDU3NSwyMDU4NSwyMDU4NywyMDU3OSwyMDU4MCwyMDU1MCwyMDU0NCwyMDU5MCwyMDU5NSwyMDU2NywyMDU2MSwyMDk0NCwyMTA5OSwyMTEwMSwyMTEwMCwyMTEwMiwyMTIwNiwyMTIw''@;'; put 'put ''MywyMTI5MywyMTQwNCwyMTg3NywyMTg3OCwyMTgyMCwyMTgzNywyMTg0MCwyMTgxMiwyMTgwMiwyMTg0MSwyMTg1OCwyMTgxNCwyMTgxMywyMTgwOCwyMTg0MiwyMTgyOSwyMTc3MiwyMTgxMCwyMTg2MSwyMTgzOCwyMTgxNywyMTgzMiwyMTgwNSwyMTgxOSwyMTgyNCwyMTgzNSwyMjI4Miwy''@;'; put 'put ''MjI3OSwyMjUyMywyMjU0OCwyMjQ5OCwyMjUxOCwyMjQ5MiwyMjUxNiwyMjUyOCwyMjUwOSwyMjUyNSwyMjUzNiwyMjUyMCwyMjUzOSwyMjUxNSwyMjQ3OSwyMjUzNSwyMjUxMCwyMjQ5OSwyMjUxNCwyMjUwMSwyMjUwOCwyMjQ5NywyMjU0MiwyMjUyNCwyMjU0NCwyMjUwMywyMjUyOSwyMjU0''@;'; put 'put ''MCwyMjUxMywyMjUwNSwyMjUxMiwyMjU0MSwyMjUzMiwyMjg3NiwyMzEzNiwyMzEyOCwyMzEyNSwyMzE0MywyMzEzNCwyMzA5NiwyMzA5MywyMzE0OSwyMzEyMCwyMzEzNSwyMzE0MSwyMzE0OCwyMzEyMywyMzE0MCwyMzEyNywyMzEwNywyMzEzMywyMzEyMiwyMzEwOCwyMzEzMSwyMzExMiwy''@;'; put 'put ''MzE4MiwyMzEwMiwyMzExNywyMzA5NywyMzExNiwyMzE1MiwyMzE0NSwyMzExMSwyMzEyMSwyMzEyNiwyMzEwNiwyMzEzMiwyMzQxMCwyMzQwNiwyMzQ4OSwyMzQ4OCwyMzY0MSwyMzgzOCwyMzgxOSwyMzgzNywyMzgzNCwyMzg0MCwyMzgyMCwyMzg0OCwyMzgyMSwyMzg0NiwyMzg0NSwyMzgy''@;'; put 'put ''MywyMzg1NiwyMzgyNiwyMzg0MywyMzgzOSwyMzg1NCwyNDEyNiwyNDExNiwyNDI0MSwyNDI0NCwyNDI0OSwyNDI0MiwyNDI0MywyNDM3NCwyNDM3NiwyNDQ3NSwyNDQ3MCwyNDQ3OSwyNDcxNCwyNDcyMCwyNDcxMCwyNDc2NiwyNDc1MiwyNDc2MiwyNDc4NywyNDc4OCwyNDc4MywyNDgwNCwy''@;'; put 'put ''NDc5MywyNDc5NywyNDc3NiwyNDc1MywyNDc5NSwyNDc1OSwyNDc3OCwyNDc2NywyNDc3MSwyNDc4MSwyNDc2OCwyNTM5NCwyNTQ0NSwyNTQ4MiwyNTQ3NCwyNTQ2OSwyNTUzMywyNTUwMiwyNTUxNywyNTUwMSwyNTQ5NSwyNTUxNSwyNTQ4NiwyNTQ1NSwyNTQ3OSwyNTQ4OCwyNTQ1NCwyNTUx''@;'; put 'put ''OSwyNTQ2MSwyNTUwMCwyNTQ1MywyNTUxOCwyNTQ2OCwyNTUwOCwyNTQwMywyNTUwMywyNTQ2NCwyNTQ3NywyNTQ3MywyNTQ4OSwyNTQ4NSwyNTQ1NiwyNTkzOSwyNjA2MSwyNjIxMywyNjIwOSwyNjIwMywyNjIwMSwyNjIwNCwyNjIxMCwyNjM5MiwyNjc0NSwyNjc1OSwyNjc2OCwyNjc4MCwy''@;'; put 'put ''NjczMywyNjczNCwyNjc5OCwyNjc5NSwyNjk2NiwyNjczNSwyNjc4NywyNjc5NiwyNjc5MywyNjc0MSwyNjc0MCwyNjgwMiwyNjc2NywyNjc0MywyNjc3MCwyNjc0OCwyNjczMSwyNjczOCwyNjc5NCwyNjc1MiwyNjczNywyNjc1MCwyNjc3OSwyNjc3NCwyNjc2MywyNjc4NCwyNjc2MSwyNjc4''@;'; put 'put ''OCwyNjc0NCwyNjc0NywyNjc2OSwyNjc2NCwyNjc2MiwyNjc0OSwyNzQ0NiwyNzQ0MywyNzQ0NywyNzQ0OCwyNzUzNywyNzUzNSwyNzUzMywyNzUzNCwyNzUzMiwyNzY5MCwyODA5NiwyODA3NSwyODA4NCwyODA4MywyODI3NiwyODA3NiwyODEzNywyODEzMCwyODA4NywyODE1MCwyODExNiwy''@;'; put 'put ''ODE2MCwyODEwNCwyODEyOCwyODEyNywyODExOCwyODA5NCwyODEzMywyODEyNCwyODEyNSwyODEyMywyODE0OCwyODEwNiwyODA5MywyODE0MSwyODE0NCwyODA5MCwyODExNywyODA5OCwyODExMSwyODEwNSwyODExMiwyODE0NiwyODExNSwyODE1NywyODExOSwyODEwOSwyODEzMSwyODA5''@;'; put 'put ''MSwyODkyMiwyODk0MSwyODkxOSwyODk1MSwyODkxNiwyODk0MCwyODkxMiwyODkzMiwyODkxNSwyODk0NCwyODkyNCwyODkyNywyODkzNCwyODk0NywyODkyOCwyODkyMCwyODkxOCwyODkzOSwyODkzMCwyODk0MiwyOTMxMCwyOTMwNywyOTMwOCwyOTMxMSwyOTQ2OSwyOTQ2MywyOTQ0Nywy''@;'; put 'put ''OTQ1NywyOTQ2NCwyOTQ1MCwyOTQ0OCwyOTQzOSwyOTQ1NSwyOTQ3MCwyOTU3NiwyOTY4NiwyOTY4OCwyOTY4NSwyOTcwMCwyOTY5NywyOTY5MywyOTcwMywyOTY5NiwyOTY5MCwyOTY5MiwyOTY5NSwyOTcwOCwyOTcwNywyOTY4NCwyOTcwNCwzMDA1MiwzMDA1MSwzMDE1OCwzMDE2MiwzMDE1''@;'; put 'put ''OSwzMDE1NSwzMDE1NiwzMDE2MSwzMDE2MCwzMDM1MSwzMDM0NSwzMDQxOSwzMDUyMSwzMDUxMSwzMDUwOSwzMDUxMywzMDUxNCwzMDUxNiwzMDUxNSwzMDUyNSwzMDUwMSwzMDUyMywzMDUxNywzMDc5MiwzMDgwMiwzMDc5MywzMDc5NywzMDc5NCwzMDc5NiwzMDc1OCwzMDc4OSwzMDgwMCwz''@;'; put 'put ''MTA3NiwzMTA3OSwzMTA4MSwzMTA4MiwzMTA3NSwzMTA4MywzMTA3MywzMTE2MywzMTIyNiwzMTIyNCwzMTIyMiwzMTIyMywzMTM3NSwzMTM4MCwzMTM3NiwzMTU0MSwzMTU1OSwzMTU0MCwzMTUyNSwzMTUzNiwzMTUyMiwzMTUyNCwzMTUzOSwzMTUxMiwzMTUzMCwzMTUxNywzMTUzNywzMTUz''@;'; put 'put ''MSwzMTUzMywzMTUzNSwzMTUzOCwzMTU0NCwzMTUxNCwzMTUyMywzMTg5MiwzMTg5NiwzMTg5NCwzMTkwNywzMjA1MywzMjA2MSwzMjA1NiwzMjA1NCwzMjA1OCwzMjA2OSwzMjA0NCwzMjA0MSwzMjA2NSwzMjA3MSwzMjA2MiwzMjA2MywzMjA3NCwzMjA1OSwzMjA0MCwzMjYxMSwzMjY2MSwz''@;'; put 'put ''MjY2OCwzMjY2OSwzMjY2NywzMjcxNCwzMjcxNSwzMjcxNywzMjcyMCwzMjcyMSwzMjcxMSwzMjcxOSwzMjcxMywzMjc5OSwzMjc5OCwzMjc5NSwzMjgzOSwzMjgzNSwzMjg0MCwzMzA0OCwzMzA2MSwzMzA0OSwzMzA1MSwzMzA2OSwzMzA1NSwzMzA2OCwzMzA1NCwzMzA1NywzMzA0NSwzMzA2''@;'; put 'put ''MywzMzA1MywzMzA1OCwzMzI5NywzMzMzNiwzMzMzMSwzMzMzOCwzMzMzMiwzMzMzMCwzMzM5NiwzMzY4MCwzMzY5OSwzMzcwNCwzMzY3NywzMzY1OCwzMzY1MSwzMzcwMCwzMzY1MiwzMzY3OSwzMzY2NSwzMzY4NSwzMzY4OSwzMzY1MywzMzY4NCwzMzcwNSwzMzY2MSwzMzY2NywzMzY3Niwz''@;'; put 'put ''MzY5MywzMzY5MSwzMzcwNiwzMzY3NSwzMzY2MiwzMzcwMSwzMzcxMSwzMzY3MiwzMzY4NywzMzcxMiwzMzY2MywzMzcwMiwzMzY3MSwzMzcxMCwzMzY1NCwzMzY5MCwzNDM5MywzNDM5MCwzNDQ5NSwzNDQ4NywzNDQ5OCwzNDQ5NywzNDUwMSwzNDQ5MCwzNDQ4MCwzNDUwNCwzNDQ4OSwzNDQ4''@;'; put 'put ''MywzNDQ4OCwzNDUwOCwzNDQ4NCwzNDQ5MSwzNDQ5MiwzNDQ5OSwzNDQ5MywzNDQ5NCwzNDg5OCwzNDk1MywzNDk2NSwzNDk4NCwzNDk3OCwzNDk4NiwzNDk3MCwzNDk2MSwzNDk3NywzNDk3NSwzNDk2OCwzNDk4MywzNDk2OSwzNDk3MSwzNDk2NywzNDk4MCwzNDk4OCwzNDk1NiwzNDk2Mywz''@;'; put 'put ''NDk1OCwzNTIwMiwzNTI4NiwzNTI4OSwzNTI4NSwzNTM3NiwzNTM2NywzNTM3MiwzNTM1OCwzNTg5NywzNTg5OSwzNTkzMiwzNTkzMywzNTk2NSwzNjAwNSwzNjIyMSwzNjIxOSwzNjIxNywzNjI4NCwzNjI5MCwzNjI4MSwzNjI4NywzNjI4OSwzNjU2OCwzNjU3NCwzNjU3MywzNjU3MiwzNjU2''@;'; put 'put ''NywzNjU3NiwzNjU3NywzNjkwMCwzNjg3NSwzNjg4MSwzNjg5MiwzNjg3NiwzNjg5NywzNzEwMywzNzA5OCwzNzEwNCwzNzEwOCwzNzEwNiwzNzEwNywzNzA3NiwzNzA5OSwzNzEwMCwzNzA5NywzNzIwNiwzNzIwOCwzNzIxMCwzNzIwMywzNzIwNSwzNzM1NiwzNzM2NCwzNzM2MSwzNzM2Mywz''@;'; put 'put ''NzM2OCwzNzM0OCwzNzM2OSwzNzM1NCwzNzM1NSwzNzM2NywzNzM1MiwzNzM1OCwzODI2NiwzODI3OCwzODI4MCwzODUyNCwzODUwOSwzODUwNywzODUxMywzODUxMSwzODU5MSwzODc2MiwzODkxNiwzOTE0MSwzOTMxOSwyMDYzNSwyMDYyOSwyMDYyOCwyMDYzOCwyMDYxOSwyMDY0MywyMDYx''@;'; put 'put ''MSwyMDYyMCwyMDYyMiwyMDYzNywyMDU4NCwyMDYzNiwyMDYyNiwyMDYxMCwyMDYxNSwyMDgzMSwyMDk0OCwyMTI2NiwyMTI2NSwyMTQxMiwyMTQxNSwyMTkwNSwyMTkyOCwyMTkyNSwyMTkzMywyMTg3OSwyMjA4NSwyMTkyMiwyMTkwNywyMTg5NiwyMTkwMywyMTk0MSwyMTg4OSwyMTkyMywy''@;'; put 'put ''MTkwNiwyMTkyNCwyMTg4NSwyMTkwMCwyMTkyNiwyMTg4NywyMTkwOSwyMTkyMSwyMTkwMiwyMjI4NCwyMjU2OSwyMjU4MywyMjU1MywyMjU1OCwyMjU2NywyMjU2MywyMjU2OCwyMjUxNywyMjYwMCwyMjU2NSwyMjU1NiwyMjU1NSwyMjU3OSwyMjU5MSwyMjU4MiwyMjU3NCwyMjU4NSwyMjU4''@;'; put 'put ''NCwyMjU3MywyMjU3MiwyMjU4NywyMjg4MSwyMzIxNSwyMzE4OCwyMzE5OSwyMzE2MiwyMzIwMiwyMzE5OCwyMzE2MCwyMzIwNiwyMzE2NCwyMzIwNSwyMzIxMiwyMzE4OSwyMzIxNCwyMzA5NSwyMzE3MiwyMzE3OCwyMzE5MSwyMzE3MSwyMzE3OSwyMzIwOSwyMzE2MywyMzE2NSwyMzE4MCwy''@;'; put 'put ''MzE5NiwyMzE4MywyMzE4NywyMzE5NywyMzUzMCwyMzUwMSwyMzQ5OSwyMzUwOCwyMzUwNSwyMzQ5OCwyMzUwMiwyMzU2NCwyMzYwMCwyMzg2MywyMzg3NSwyMzkxNSwyMzg3MywyMzg4MywyMzg3MSwyMzg2MSwyMzg4OSwyMzg4NiwyMzg5MywyMzg1OSwyMzg2NiwyMzg5MCwyMzg2OSwyMzg1''@;'; put 'put ''NywyMzg5NywyMzg3NCwyMzg2NSwyMzg4MSwyMzg2NCwyMzg2OCwyMzg1OCwyMzg2MiwyMzg3MiwyMzg3NywyNDEzMiwyNDEyOSwyNDQwOCwyNDQ4NiwyNDQ4NSwyNDQ5MSwyNDc3NywyNDc2MSwyNDc4MCwyNDgwMiwyNDc4MiwyNDc3MiwyNDg1MiwyNDgxOCwyNDg0MiwyNDg1NCwyNDgzNywy''@;'; put 'put ''NDgyMSwyNDg1MSwyNDgyNCwyNDgyOCwyNDgzMCwyNDc2OSwyNDgzNSwyNDg1NiwyNDg2MSwyNDg0OCwyNDgzMSwyNDgzNiwyNDg0MywyNTE2MiwyNTQ5MiwyNTUyMSwyNTUyMCwyNTU1MCwyNTU3MywyNTU3NiwyNTU4MywyNTUzOSwyNTc1NywyNTU4NywyNTU0NiwyNTU2OCwyNTU5MCwyNTU1''@;'; put 'put ''NywyNTU4NiwyNTU4OSwyNTY5NywyNTU2NywyNTUzNCwyNTU2NSwyNTU2NCwyNTU0MCwyNTU2MCwyNTU1NSwyNTUzOCwyNTU0MywyNTU0OCwyNTU0NywyNTU0NCwyNTU4NCwyNTU1OSwyNTU2MSwyNTkwNiwyNTk1OSwyNTk2MiwyNTk1NiwyNTk0OCwyNTk2MCwyNTk1NywyNTk5NiwyNjAxMywy''@;'; put 'put ''NjAxNCwyNjAzMCwyNjA2NCwyNjA2NiwyNjIzNiwyNjIyMCwyNjIzNSwyNjI0MCwyNjIyNSwyNjIzMywyNjIxOCwyNjIyNiwyNjM2OSwyNjg5MiwyNjgzNSwyNjg4NCwyNjg0NCwyNjkyMiwyNjg2MCwyNjg1OCwyNjg2NSwyNjg5NSwyNjgzOCwyNjg3MSwyNjg1OSwyNjg1MiwyNjg3MCwyNjg5''@;'; put 'put ''OSwyNjg5NiwyNjg2NywyNjg0OSwyNjg4NywyNjgyOCwyNjg4OCwyNjk5MiwyNjgwNCwyNjg5NywyNjg2MywyNjgyMiwyNjkwMCwyNjg3MiwyNjgzMiwyNjg3NywyNjg3NiwyNjg1NiwyNjg5MSwyNjg5MCwyNjkwMywyNjgzMCwyNjgyNCwyNjg0NSwyNjg0NiwyNjg1NCwyNjg2OCwyNjgzMywy''@;'; put 'put ''Njg4NiwyNjgzNiwyNjg1NywyNjkwMSwyNjkxNywyNjgyMywyNzQ0OSwyNzQ1MSwyNzQ1NSwyNzQ1MiwyNzU0MCwyNzU0MywyNzU0NSwyNzU0MSwyNzU4MSwyNzYzMiwyNzYzNCwyNzYzNSwyNzY5NiwyODE1NiwyODIzMCwyODIzMSwyODE5MSwyODIzMywyODI5NiwyODIyMCwyODIyMSwyODIy''@;'; put 'put ''OSwyODI1OCwyODIwMywyODIyMywyODIyNSwyODI1MywyODI3NSwyODE4OCwyODIxMSwyODIzNSwyODIyNCwyODI0MSwyODIxOSwyODE2MywyODIwNiwyODI1NCwyODI2NCwyODI1MiwyODI1NywyODIwOSwyODIwMCwyODI1NiwyODI3MywyODI2NywyODIxNywyODE5NCwyODIwOCwyODI0Mywy''@;'; put 'put ''ODI2MSwyODE5OSwyODI4MCwyODI2MCwyODI3OSwyODI0NSwyODI4MSwyODI0MiwyODI2MiwyODIxMywyODIxNCwyODI1MCwyODk2MCwyODk1OCwyODk3NSwyODkyMywyODk3NCwyODk3NywyODk2MywyODk2NSwyODk2MiwyODk3OCwyODk1OSwyODk2OCwyODk4NiwyODk1NSwyOTI1OSwyOTI3''@;'; put 'put ''NCwyOTMyMCwyOTMyMSwyOTMxOCwyOTMxNywyOTMyMywyOTQ1OCwyOTQ1MSwyOTQ4OCwyOTQ3NCwyOTQ4OSwyOTQ5MSwyOTQ3OSwyOTQ5MCwyOTQ4NSwyOTQ3OCwyOTQ3NSwyOTQ5MywyOTQ1MiwyOTc0MiwyOTc0MCwyOTc0NCwyOTczOSwyOTcxOCwyOTcyMiwyOTcyOSwyOTc0MSwyOTc0NSwy''@;'; put 'put ''OTczMiwyOTczMSwyOTcyNSwyOTczNywyOTcyOCwyOTc0NiwyOTk0NywyOTk5OSwzMDA2MywzMDA2MCwzMDE4MywzMDE3MCwzMDE3NywzMDE4MiwzMDE3MywzMDE3NSwzMDE4MCwzMDE2NywzMDM1NywzMDM1NCwzMDQyNiwzMDUzNCwzMDUzNSwzMDUzMiwzMDU0MSwzMDUzMywzMDUzOCwzMDU0''@;'; put 'put ''MiwzMDUzOSwzMDU0MCwzMDY4NiwzMDcwMCwzMDgxNiwzMDgyMCwzMDgyMSwzMDgxMiwzMDgyOSwzMDgzMywzMDgyNiwzMDgzMCwzMDgzMiwzMDgyNSwzMDgyNCwzMDgxNCwzMDgxOCwzMTA5MiwzMTA5MSwzMTA5MCwzMTA4OCwzMTIzNCwzMTI0MiwzMTIzNSwzMTI0NCwzMTIzNiwzMTM4NSwz''@;'; put 'put ''MTQ2MiwzMTQ2MCwzMTU2MiwzMTU0NywzMTU1NiwzMTU2MCwzMTU2NCwzMTU2NiwzMTU1MiwzMTU3NiwzMTU1NywzMTkwNiwzMTkwMiwzMTkxMiwzMTkwNSwzMjA4OCwzMjExMSwzMjA5OSwzMjA4MywzMjA4NiwzMjEwMywzMjEwNiwzMjA3OSwzMjEwOSwzMjA5MiwzMjEwNywzMjA4MiwzMjA4''@;'; put 'put ''NCwzMjEwNSwzMjA4MSwzMjA5NSwzMjA3OCwzMjU3NCwzMjU3NSwzMjYxMywzMjYxNCwzMjY3NCwzMjY3MiwzMjY3MywzMjcyNywzMjg0OSwzMjg0NywzMjg0OCwzMzAyMiwzMjk4MCwzMzA5MSwzMzA5OCwzMzEwNiwzMzEwMywzMzA5NSwzMzA4NSwzMzEwMSwzMzA4MiwzMzI1NCwzMzI2Miwz''@;'; put 'put ''MzI3MSwzMzI3MiwzMzI3MywzMzI4NCwzMzM0MCwzMzM0MSwzMzM0MywzMzM5NywzMzU5NSwzMzc0MywzMzc4NSwzMzgyNywzMzcyOCwzMzc2OCwzMzgxMCwzMzc2NywzMzc2NCwzMzc4OCwzMzc4MiwzMzgwOCwzMzczNCwzMzczNiwzMzc3MSwzMzc2MywzMzcyNywzMzc5MywzMzc1NywzMzc2''@;'; put 'put ''NSwzMzc1MiwzMzc5MSwzMzc2MSwzMzczOSwzMzc0MiwzMzc1MCwzMzc4MSwzMzczNywzMzgwMSwzMzgwNywzMzc1OCwzMzgwOSwzMzc5OCwzMzczMCwzMzc3OSwzMzc0OSwzMzc4NiwzMzczNSwzMzc0NSwzMzc3MCwzMzgxMSwzMzczMSwzMzc3MiwzMzc3NCwzMzczMiwzMzc4NywzMzc1MSwz''@;'; put 'put ''Mzc2MiwzMzgxOSwzMzc1NSwzMzc5MCwzNDUyMCwzNDUzMCwzNDUzNCwzNDUxNSwzNDUzMSwzNDUyMiwzNDUzOCwzNDUyNSwzNDUzOSwzNDUyNCwzNDU0MCwzNDUzNywzNDUxOSwzNDUzNiwzNDUxMywzNDg4OCwzNDkwMiwzNDkwMSwzNTAwMiwzNTAzMSwzNTAwMSwzNWUzLDM1MDA4LDM1MDA2''@;'; put 'put ''LDM0OTk4LDM1MDA0LDM0OTk5LDM1MDA1LDM0OTk0LDM1MDczLDM1MDE3LDM1MjIxLDM1MjI0LDM1MjIzLDM1MjkzLDM1MjkwLDM1MjkxLDM1NDA2LDM1NDA1LDM1Mzg1LDM1NDE3LDM1MzkyLDM1NDE1LDM1NDE2LDM1Mzk2LDM1Mzk3LDM1NDEwLDM1NDAwLDM1NDA5LDM1NDAyLDM1NDA0LDM1''@;'; put 'put ''NDA3LDM1OTM1LDM1OTY5LDM1OTY4LDM2MDI2LDM2MDMwLDM2MDE2LDM2MDI1LDM2MDIxLDM2MjI4LDM2MjI0LDM2MjMzLDM2MzEyLDM2MzA3LDM2MzAxLDM2Mjk1LDM2MzEwLDM2MzE2LDM2MzAzLDM2MzA5LDM2MzEzLDM2Mjk2LDM2MzExLDM2MjkzLDM2NTkxLDM2NTk5LDM2NjAyLDM2NjAx''@;'; put 'put ''LDM2NTgyLDM2NTkwLDM2NTgxLDM2NTk3LDM2NTgzLDM2NTg0LDM2NTk4LDM2NTg3LDM2NTkzLDM2NTg4LDM2NTk2LDM2NTg1LDM2OTA5LDM2OTE2LDM2OTExLDM3MTI2LDM3MTY0LDM3MTI0LDM3MTE5LDM3MTE2LDM3MTI4LDM3MTEzLDM3MTE1LDM3MTIxLDM3MTIwLDM3MTI3LDM3MTI1LDM3''@;'; put 'put ''MTIzLDM3MjE3LDM3MjIwLDM3MjE1LDM3MjE4LDM3MjE2LDM3Mzc3LDM3Mzg2LDM3NDEzLDM3Mzc5LDM3NDAyLDM3NDE0LDM3MzkxLDM3Mzg4LDM3Mzc2LDM3Mzk0LDM3Mzc1LDM3MzczLDM3MzgyLDM3MzgwLDM3NDE1LDM3Mzc4LDM3NDA0LDM3NDEyLDM3NDAxLDM3Mzk5LDM3MzgxLDM3Mzk4''@;'; put 'put ''LDM4MjY3LDM4Mjg1LDM4Mjg0LDM4Mjg4LDM4NTM1LDM4NTI2LDM4NTM2LDM4NTM3LDM4NTMxLDM4NTI4LDM4NTk0LDM4NjAwLDM4NTk1LDM4NjQxLDM4NjQwLDM4NzY0LDM4NzY4LDM4NzY2LDM4OTE5LDM5MDgxLDM5MTQ3LDQwMTY2LDQwNjk3LDIwMDk5LDIwMTAwLDIwMTUwLDIwNjY5LDIw''@;'; put 'put ''NjcxLDIwNjc4LDIwNjU0LDIwNjc2LDIwNjgyLDIwNjYwLDIwNjgwLDIwNjc0LDIwNjU2LDIwNjczLDIwNjY2LDIwNjU3LDIwNjgzLDIwNjgxLDIwNjYyLDIwNjY0LDIwOTUxLDIxMTE0LDIxMTEyLDIxMTE1LDIxMTE2LDIxOTU1LDIxOTc5LDIxOTY0LDIxOTY4LDIxOTYzLDIxOTYyLDIxOTgx''@;'; put 'put ''LDIxOTUyLDIxOTcyLDIxOTU2LDIxOTkzLDIxOTUxLDIxOTcwLDIxOTAxLDIxOTY3LDIxOTczLDIxOTg2LDIxOTc0LDIxOTYwLDIyMDAyLDIxOTY1LDIxOTc3LDIxOTU0LDIyMjkyLDIyNjExLDIyNjMyLDIyNjI4LDIyNjA3LDIyNjA1LDIyNjAxLDIyNjM5LDIyNjEzLDIyNjA2LDIyNjIxLDIy''@;'; put 'put ''NjE3LDIyNjI5LDIyNjE5LDIyNTg5LDIyNjI3LDIyNjQxLDIyNzgwLDIzMjM5LDIzMjM2LDIzMjQzLDIzMjI2LDIzMjI0LDIzMjE3LDIzMjIxLDIzMjE2LDIzMjMxLDIzMjQwLDIzMjI3LDIzMjM4LDIzMjIzLDIzMjMyLDIzMjQyLDIzMjIwLDIzMjIyLDIzMjQ1LDIzMjI1LDIzMTg0LDIzNTEw''@;'; put 'put ''LDIzNTEyLDIzNTEzLDIzNTgzLDIzNjAzLDIzOTIxLDIzOTA3LDIzODgyLDIzOTA5LDIzOTIyLDIzOTE2LDIzOTAyLDIzOTEyLDIzOTExLDIzOTA2LDI0MDQ4LDI0MTQzLDI0MTQyLDI0MTM4LDI0MTQxLDI0MTM5LDI0MjYxLDI0MjY4LDI0MjYyLDI0MjY3LDI0MjYzLDI0Mzg0LDI0NDk1LDI0''@;'; put 'put ''NDkzLDI0ODIzLDI0OTA1LDI0OTA2LDI0ODc1LDI0OTAxLDI0ODg2LDI0ODgyLDI0ODc4LDI0OTAyLDI0ODc5LDI0OTExLDI0ODczLDI0ODk2LDI1MTIwLDM3MjI0LDI1MTIzLDI1MTI1LDI1MTI0LDI1NTQxLDI1NTg1LDI1NTc5LDI1NjE2LDI1NjE4LDI1NjA5LDI1NjMyLDI1NjM2LDI1NjUx''@;'; put 'put ''LDI1NjY3LDI1NjMxLDI1NjIxLDI1NjI0LDI1NjU3LDI1NjU1LDI1NjM0LDI1NjM1LDI1NjEyLDI1NjM4LDI1NjQ4LDI1NjQwLDI1NjY1LDI1NjUzLDI1NjQ3LDI1NjEwLDI1NjI2LDI1NjY0LDI1NjM3LDI1NjM5LDI1NjExLDI1NTc1LDI1NjI3LDI1NjQ2LDI1NjMzLDI1NjE0LDI1OTY3LDI2''@;'; put 'put ''MDAyLDI2MDY3LDI2MjQ2LDI2MjUyLDI2MjYxLDI2MjU2LDI2MjUxLDI2MjUwLDI2MjY1LDI2MjYwLDI2MjMyLDI2NDAwLDI2OTgyLDI2OTc1LDI2OTM2LDI2OTU4LDI2OTc4LDI2OTkzLDI2OTQzLDI2OTQ5LDI2OTg2LDI2OTM3LDI2OTQ2LDI2OTY3LDI2OTY5LDI3MDAyLDI2OTUyLDI2OTUz''@;'; put 'put ''LDI2OTMzLDI2OTg4LDI2OTMxLDI2OTQxLDI2OTgxLDI2ODY0LDI3ZTMsMjY5MzIsMjY5ODUsMjY5NDQsMjY5OTEsMjY5NDgsMjY5OTgsMjY5NjgsMjY5NDUsMjY5OTYsMjY5NTYsMjY5MzksMjY5NTUsMjY5MzUsMjY5NzIsMjY5NTksMjY5NjEsMjY5MzAsMjY5NjIsMjY5MjcsMjcwMDMsMjY5''@;'; put 'put ''NDAsMjc0NjIsMjc0NjEsMjc0NTksMjc0NTgsMjc0NjQsMjc0NTcsMjc1NDcsNjQwMTMsMjc2NDMsMjc2NDQsMjc2NDEsMjc2MzksMjc2NDAsMjgzMTUsMjgzNzQsMjgzNjAsMjgzMDMsMjgzNTIsMjgzMTksMjgzMDcsMjgzMDgsMjgzMjAsMjgzMzcsMjgzNDUsMjgzNTgsMjgzNzAsMjgzNDks''@;'; put 'put ''MjgzNTMsMjgzMTgsMjgzNjEsMjgzNDMsMjgzMzYsMjgzNjUsMjgzMjYsMjgzNjcsMjgzMzgsMjgzNTAsMjgzNTUsMjgzODAsMjgzNzYsMjgzMTMsMjgzMDYsMjgzMDIsMjgzMDEsMjgzMjQsMjgzMjEsMjgzNTEsMjgzMzksMjgzNjgsMjgzNjIsMjgzMTEsMjgzMzQsMjgzMjMsMjg5OTksMjkw''@;'; put 'put ''MTIsMjkwMTAsMjkwMjcsMjkwMjQsMjg5OTMsMjkwMjEsMjkwMjYsMjkwNDIsMjkwNDgsMjkwMzQsMjkwMjUsMjg5OTQsMjkwMTYsMjg5OTUsMjkwMDMsMjkwNDAsMjkwMjMsMjkwMDgsMjkwMTEsMjg5OTYsMjkwMDUsMjkwMTgsMjkyNjMsMjkzMjUsMjkzMjQsMjkzMjksMjkzMjgsMjkzMjYs''@;'; put 'put ''Mjk1MDAsMjk1MDYsMjk0OTksMjk0OTgsMjk1MDQsMjk1MTQsMjk1MTMsMjk3NjQsMjk3NzAsMjk3NzEsMjk3NzgsMjk3NzcsMjk3ODMsMjk3NjAsMjk3NzUsMjk3NzYsMjk3NzQsMjk3NjIsMjk3NjYsMjk3NzMsMjk3ODAsMjk5MjEsMjk5NTEsMjk5NTAsMjk5NDksMjk5ODEsMzAwNzMsMzAw''@;'; put 'put ''NzEsMjcwMTEsMzAxOTEsMzAyMjMsMzAyMTEsMzAxOTksMzAyMDYsMzAyMDQsMzAyMDEsMzAyMDAsMzAyMjQsMzAyMDMsMzAxOTgsMzAxODksMzAxOTcsMzAyMDUsMzAzNjEsMzAzODksMzA0MjksMzA1NDksMzA1NTksMzA1NjAsMzA1NDYsMzA1NTAsMzA1NTQsMzA1NjksMzA1NjcsMzA1NDgs''@;'; put 'put ''MzA1NTMsMzA1NzMsMzA2ODgsMzA4NTUsMzA4NzQsMzA4NjgsMzA4NjMsMzA4NTIsMzA4NjksMzA4NTMsMzA4NTQsMzA4ODEsMzA4NTEsMzA4NDEsMzA4NzMsMzA4NDgsMzA4NzAsMzA4NDMsMzExMDAsMzExMDYsMzExMDEsMzEwOTcsMzEyNDksMzEyNTYsMzEyNTcsMzEyNTAsMzEyNTUsMzEy''@;'; put 'put ''NTMsMzEyNjYsMzEyNTEsMzEyNTksMzEyNDgsMzEzOTUsMzEzOTQsMzEzOTAsMzE0NjcsMzE1OTAsMzE1ODgsMzE1OTcsMzE2MDQsMzE1OTMsMzE2MDIsMzE1ODksMzE2MDMsMzE2MDEsMzE2MDAsMzE1ODUsMzE2MDgsMzE2MDYsMzE1ODcsMzE5MjIsMzE5MjQsMzE5MTksMzIxMzYsMzIxMzQs''@;'; put 'put ''MzIxMjgsMzIxNDEsMzIxMjcsMzIxMzMsMzIxMjIsMzIxNDIsMzIxMjMsMzIxMzEsMzIxMjQsMzIxNDAsMzIxNDgsMzIxMzIsMzIxMjUsMzIxNDYsMzI2MjEsMzI2MTksMzI2MTUsMzI2MTYsMzI2MjAsMzI2NzgsMzI2NzcsMzI2NzksMzI3MzEsMzI3MzIsMzI4MDEsMzMxMjQsMzMxMjAsMzMx''@;'; put 'put ''NDMsMzMxMTYsMzMxMjksMzMxMTUsMzMxMjIsMzMxMzgsMjY0MDEsMzMxMTgsMzMxNDIsMzMxMjcsMzMxMzUsMzMwOTIsMzMxMjEsMzMzMDksMzMzNTMsMzMzNDgsMzMzNDQsMzMzNDYsMzMzNDksMzQwMzMsMzM4NTUsMzM4NzgsMzM5MTAsMzM5MTMsMzM5MzUsMzM5MzMsMzM4OTMsMzM4NzMs''@;'; put 'put ''MzM4NTYsMzM5MjYsMzM4OTUsMzM4NDAsMzM4NjksMzM5MTcsMzM4ODIsMzM4ODEsMzM5MDgsMzM5MDcsMzM4ODUsMzQwNTUsMzM4ODYsMzM4NDcsMzM4NTAsMzM4NDQsMzM5MTQsMzM4NTksMzM5MTIsMzM4NDIsMzM4NjEsMzM4MzMsMzM3NTMsMzM4NjcsMzM4MzksMzM4NTgsMzM4MzcsMzM4''@;'; put 'put ''ODcsMzM5MDQsMzM4NDksMzM4NzAsMzM4NjgsMzM4NzQsMzM5MDMsMzM5ODksMzM5MzQsMzM4NTEsMzM4NjMsMzM4NDYsMzM4NDMsMzM4OTYsMzM5MTgsMzM4NjAsMzM4MzUsMzM4ODgsMzM4NzYsMzM5MDIsMzM4NzIsMzQ1NzEsMzQ1NjQsMzQ1NTEsMzQ1NzIsMzQ1NTQsMzQ1MTgsMzQ1NDks''@;'; put 'put ''MzQ2MzcsMzQ1NTIsMzQ1NzQsMzQ1NjksMzQ1NjEsMzQ1NTAsMzQ1NzMsMzQ1NjUsMzUwMzAsMzUwMTksMzUwMjEsMzUwMjIsMzUwMzgsMzUwMzUsMzUwMzQsMzUwMjAsMzUwMjQsMzUyMDUsMzUyMjcsMzUyOTUsMzUzMDEsMzUzMDAsMzUyOTcsMzUyOTYsMzUyOTgsMzUyOTIsMzUzMDIsMzU0''@;'; put 'put ''NDYsMzU0NjIsMzU0NTUsMzU0MjUsMzUzOTEsMzU0NDcsMzU0NTgsMzU0NjAsMzU0NDUsMzU0NTksMzU0NTcsMzU0NDQsMzU0NTAsMzU5MDAsMzU5MTUsMzU5MTQsMzU5NDEsMzU5NDAsMzU5NDIsMzU5NzQsMzU5NzIsMzU5NzMsMzYwNDQsMzYyMDAsMzYyMDEsMzYyNDEsMzYyMzYsMzYyMzgs''@;'; put 'put ''MzYyMzksMzYyMzcsMzYyNDMsMzYyNDQsMzYyNDAsMzYyNDIsMzYzMzYsMzYzMjAsMzYzMzIsMzYzMzcsMzYzMzQsMzYzMDQsMzYzMjksMzYzMjMsMzYzMjIsMzYzMjcsMzYzMzgsMzYzMzEsMzYzNDAsMzY2MTQsMzY2MDcsMzY2MDksMzY2MDgsMzY2MTMsMzY2MTUsMzY2MTYsMzY2MTAsMzY2''@;'; put 'put ''MTksMzY5NDYsMzY5MjcsMzY5MzIsMzY5MzcsMzY5MjUsMzcxMzYsMzcxMzMsMzcxMzUsMzcxMzcsMzcxNDIsMzcxNDAsMzcxMzEsMzcxMzQsMzcyMzAsMzcyMzEsMzc0NDgsMzc0NTgsMzc0MjQsMzc0MzQsMzc0NzgsMzc0MjcsMzc0NzcsMzc0NzAsMzc1MDcsMzc0MjIsMzc0NTAsMzc0NDYs''@;'; put 'put ''Mzc0ODUsMzc0ODQsMzc0NTUsMzc0NzIsMzc0NzksMzc0ODcsMzc0MzAsMzc0NzMsMzc0ODgsMzc0MjUsMzc0NjAsMzc0NzUsMzc0NTYsMzc0OTAsMzc0NTQsMzc0NTksMzc0NTIsMzc0NjIsMzc0MjYsMzgzMDMsMzgzMDAsMzgzMDIsMzgyOTksMzg1NDYsMzg1NDcsMzg1NDUsMzg1NTEsMzg2''@;'; put 'put ''MDYsMzg2NTAsMzg2NTMsMzg2NDgsMzg2NDUsMzg3NzEsMzg3NzUsMzg3NzYsMzg3NzAsMzg5MjcsMzg5MjUsMzg5MjYsMzkwODQsMzkxNTgsMzkxNjEsMzkzNDMsMzkzNDYsMzkzNDQsMzkzNDksMzk1OTcsMzk1OTUsMzk3NzEsNDAxNzAsNDAxNzMsNDAxNjcsNDA1NzYsNDA3MDEsMjA3MTAs''@;'; put 'put ''MjA2OTIsMjA2OTUsMjA3MTIsMjA3MjMsMjA2OTksMjA3MTQsMjA3MDEsMjA3MDgsMjA2OTEsMjA3MTYsMjA3MjAsMjA3MTksMjA3MDcsMjA3MDQsMjA5NTIsMjExMjAsMjExMjEsMjEyMjUsMjEyMjcsMjEyOTYsMjE0MjAsMjIwNTUsMjIwMzcsMjIwMjgsMjIwMzQsMjIwMTIsMjIwMzEsMjIw''@;'; put 'put ''NDQsMjIwMTcsMjIwMzUsMjIwMTgsMjIwMTAsMjIwNDUsMjIwMjAsMjIwMTUsMjIwMDksMjI2NjUsMjI2NTIsMjI2NzIsMjI2ODAsMjI2NjIsMjI2NTcsMjI2NTUsMjI2NDQsMjI2NjcsMjI2NTAsMjI2NjMsMjI2NzMsMjI2NzAsMjI2NDYsMjI2NTgsMjI2NjQsMjI2NTEsMjI2NzYsMjI2NzEs''@;'; put 'put ''MjI3ODIsMjI4OTEsMjMyNjAsMjMyNzgsMjMyNjksMjMyNTMsMjMyNzQsMjMyNTgsMjMyNzcsMjMyNzUsMjMyODMsMjMyNjYsMjMyNjQsMjMyNTksMjMyNzYsMjMyNjIsMjMyNjEsMjMyNTcsMjMyNzIsMjMyNjMsMjM0MTUsMjM1MjAsMjM1MjMsMjM2NTEsMjM5MzgsMjM5MzYsMjM5MzMsMjM5''@;'; put 'put ''NDIsMjM5MzAsMjM5MzcsMjM5MjcsMjM5NDYsMjM5NDUsMjM5NDQsMjM5MzQsMjM5MzIsMjM5NDksMjM5MjksMjM5MzUsMjQxNTIsMjQxNTMsMjQxNDcsMjQyODAsMjQyNzMsMjQyNzksMjQyNzAsMjQyODQsMjQyNzcsMjQyODEsMjQyNzQsMjQyNzYsMjQzODgsMjQzODcsMjQ0MzEsMjQ1MDIs''@;'; put 'put ''MjQ4NzYsMjQ4NzIsMjQ4OTcsMjQ5MjYsMjQ5NDUsMjQ5NDcsMjQ5MTQsMjQ5MTUsMjQ5NDYsMjQ5NDAsMjQ5NjAsMjQ5NDgsMjQ5MTYsMjQ5NTQsMjQ5MjMsMjQ5MzMsMjQ4OTEsMjQ5MzgsMjQ5MjksMjQ5MTgsMjUxMjksMjUxMjcsMjUxMzEsMjU2NDMsMjU2NzcsMjU2OTEsMjU2OTMsMjU3''@;'; put 'put ''MTYsMjU3MTgsMjU3MTQsMjU3MTUsMjU3MjUsMjU3MTcsMjU3MDIsMjU3NjYsMjU2NzgsMjU3MzAsMjU2OTQsMjU2OTIsMjU2NzUsMjU2ODMsMjU2OTYsMjU2ODAsMjU3MjcsMjU2NjMsMjU3MDgsMjU3MDcsMjU2ODksMjU3MDEsMjU3MTksMjU5NzEsMjYwMTYsMjYyNzMsMjYyNzIsMjYyNzEs''@;'; put 'put ''MjYzNzMsMjYzNzIsMjY0MDIsMjcwNTcsMjcwNjIsMjcwODEsMjcwNDAsMjcwODYsMjcwMzAsMjcwNTYsMjcwNTIsMjcwNjgsMjcwMjUsMjcwMzMsMjcwMjIsMjcwNDcsMjcwMjEsMjcwNDksMjcwNzAsMjcwNTUsMjcwNzEsMjcwNzYsMjcwNjksMjcwNDQsMjcwOTIsMjcwNjUsMjcwODIsMjcw''@;'; put 'put ''MzQsMjcwODcsMjcwNTksMjcwMjcsMjcwNTAsMjcwNDEsMjcwMzgsMjcwOTcsMjcwMzEsMjcwMjQsMjcwNzQsMjcwNjEsMjcwNDUsMjcwNzgsMjc0NjYsMjc0NjksMjc0NjcsMjc1NTAsMjc1NTEsMjc1NTIsMjc1ODcsMjc1ODgsMjc2NDYsMjgzNjYsMjg0MDUsMjg0MDEsMjg0MTksMjg0NTMs''@;'; put 'put ''Mjg0MDgsMjg0NzEsMjg0MTEsMjg0NjIsMjg0MjUsMjg0OTQsMjg0NDEsMjg0NDIsMjg0NTUsMjg0NDAsMjg0NzUsMjg0MzQsMjgzOTcsMjg0MjYsMjg0NzAsMjg1MzEsMjg0MDksMjgzOTgsMjg0NjEsMjg0ODAsMjg0NjQsMjg0NzYsMjg0NjksMjgzOTUsMjg0MjMsMjg0MzAsMjg0ODMsMjg0''@;'; put 'put ''MjEsMjg0MTMsMjg0MDYsMjg0NzMsMjg0NDQsMjg0MTIsMjg0NzQsMjg0NDcsMjg0MjksMjg0NDYsMjg0MjQsMjg0NDksMjkwNjMsMjkwNzIsMjkwNjUsMjkwNTYsMjkwNjEsMjkwNTgsMjkwNzEsMjkwNTEsMjkwNjIsMjkwNTcsMjkwNzksMjkyNTIsMjkyNjcsMjkzMzUsMjkzMzMsMjkzMzEs''@;'; put 'put ''Mjk1MDcsMjk1MTcsMjk1MjEsMjk1MTYsMjk3OTQsMjk4MTEsMjk4MDksMjk4MTMsMjk4MTAsMjk3OTksMjk4MDYsMjk5NTIsMjk5NTQsMjk5NTUsMzAwNzcsMzAwOTYsMzAyMzAsMzAyMTYsMzAyMjAsMzAyMjksMzAyMjUsMzAyMTgsMzAyMjgsMzAzOTIsMzA1OTMsMzA1ODgsMzA1OTcsMzA1''@;'; put 'put ''OTQsMzA1NzQsMzA1OTIsMzA1NzUsMzA1OTAsMzA1OTUsMzA4OTgsMzA4OTAsMzA5MDAsMzA4OTMsMzA4ODgsMzA4NDYsMzA4OTEsMzA4NzgsMzA4ODUsMzA4ODAsMzA4OTIsMzA4ODIsMzA4ODQsMzExMjgsMzExMTQsMzExMTUsMzExMjYsMzExMjUsMzExMjQsMzExMjMsMzExMjcsMzExMTIs''@;'; put 'put ''MzExMjIsMzExMjAsMzEyNzUsMzEzMDYsMzEyODAsMzEyNzksMzEyNzIsMzEyNzAsMzE0MDAsMzE0MDMsMzE0MDQsMzE0NzAsMzE2MjQsMzE2NDQsMzE2MjYsMzE2MzMsMzE2MzIsMzE2MzgsMzE2MjksMzE2MjgsMzE2NDMsMzE2MzAsMzE2MjEsMzE2NDAsMjExMjQsMzE2NDEsMzE2NTIsMzE2''@;'; put 'put ''MTgsMzE5MzEsMzE5MzUsMzE5MzIsMzE5MzAsMzIxNjcsMzIxODMsMzIxOTQsMzIxNjMsMzIxNzAsMzIxOTMsMzIxOTIsMzIxOTcsMzIxNTcsMzIyMDYsMzIxOTYsMzIxOTgsMzIyMDMsMzIyMDQsMzIxNzUsMzIxODUsMzIxNTAsMzIxODgsMzIxNTksMzIxNjYsMzIxNzQsMzIxNjksMzIxNjEs''@;'; put 'put ''MzIyMDEsMzI2MjcsMzI3MzgsMzI3MzksMzI3NDEsMzI3MzQsMzI4MDQsMzI4NjEsMzI4NjAsMzMxNjEsMzMxNTgsMzMxNTUsMzMxNTksMzMxNjUsMzMxNjQsMzMxNjMsMzMzMDEsMzM5NDMsMzM5NTYsMzM5NTMsMzM5NTEsMzM5NzgsMzM5OTgsMzM5ODYsMzM5NjQsMzM5NjYsMzM5NjMsMzM5''@;'; put 'put ''NzcsMzM5NzIsMzM5ODUsMzM5OTcsMzM5NjIsMzM5NDYsMzM5NjksMzRlMywzMzk0OSwzMzk1OSwzMzk3OSwzMzk1NCwzMzk0MCwzMzk5MSwzMzk5NiwzMzk0NywzMzk2MSwzMzk2NywzMzk2MCwzNDAwNiwzMzk0NCwzMzk3NCwzMzk5OSwzMzk1MiwzNDAwNywzNDAwNCwzNDAwMiwzNDAxMSwz''@;'; put 'put ''Mzk2OCwzMzkzNywzNDQwMSwzNDYxMSwzNDU5NSwzNDYwMCwzNDY2NywzNDYyNCwzNDYwNiwzNDU5MCwzNDU5MywzNDU4NSwzNDU4NywzNDYyNywzNDYwNCwzNDYyNSwzNDYyMiwzNDYzMCwzNDU5MiwzNDYxMCwzNDYwMiwzNDYwNSwzNDYyMCwzNDU3OCwzNDYxOCwzNDYwOSwzNDYxMywzNDYy''@;'; put 'put ''NiwzNDU5OCwzNDU5OSwzNDYxNiwzNDU5NiwzNDU4NiwzNDYwOCwzNDU3NywzNTA2MywzNTA0NywzNTA1NywzNTA1OCwzNTA2NiwzNTA3MCwzNTA1NCwzNTA2OCwzNTA2MiwzNTA2NywzNTA1NiwzNTA1MiwzNTA1MSwzNTIyOSwzNTIzMywzNTIzMSwzNTIzMCwzNTMwNSwzNTMwNywzNTMwNCwz''@;'; put 'put ''NTQ5OSwzNTQ4MSwzNTQ2NywzNTQ3NCwzNTQ3MSwzNTQ3OCwzNTkwMSwzNTk0NCwzNTk0NSwzNjA1MywzNjA0NywzNjA1NSwzNjI0NiwzNjM2MSwzNjM1NCwzNjM1MSwzNjM2NSwzNjM0OSwzNjM2MiwzNjM1NSwzNjM1OSwzNjM1OCwzNjM1NywzNjM1MCwzNjM1MiwzNjM1NiwzNjYyNCwzNjYy''@;'; put 'put ''NSwzNjYyMiwzNjYyMSwzNzE1NSwzNzE0OCwzNzE1MiwzNzE1NCwzNzE1MSwzNzE0OSwzNzE0NiwzNzE1NiwzNzE1MywzNzE0NywzNzI0MiwzNzIzNCwzNzI0MSwzNzIzNSwzNzU0MSwzNzU0MCwzNzQ5NCwzNzUzMSwzNzQ5OCwzNzUzNiwzNzUyNCwzNzU0NiwzNzUxNywzNzU0MiwzNzUzMCwz''@;'; put 'put ''NzU0NywzNzQ5NywzNzUyNywzNzUwMywzNzUzOSwzNzYxNCwzNzUxOCwzNzUwNiwzNzUyNSwzNzUzOCwzNzUwMSwzNzUxMiwzNzUzNywzNzUxNCwzNzUxMCwzNzUxNiwzNzUyOSwzNzU0MywzNzUwMiwzNzUxMSwzNzU0NSwzNzUzMywzNzUxNSwzNzQyMSwzODU1OCwzODU2MSwzODY1NSwzODc0''@;'; put 'put ''NCwzODc4MSwzODc3OCwzODc4MiwzODc4NywzODc4NCwzODc4NiwzODc3OSwzODc4OCwzODc4NSwzODc4MywzODg2MiwzODg2MSwzODkzNCwzOTA4NSwzOTA4NiwzOTE3MCwzOTE2OCwzOTE3NSwzOTMyNSwzOTMyNCwzOTM2MywzOTM1MywzOTM1NSwzOTM1NCwzOTM2MiwzOTM1NywzOTM2Nywz''@;'; put 'put ''OTYwMSwzOTY1MSwzOTY1NSwzOTc0MiwzOTc0MywzOTc3NiwzOTc3NywzOTc3NSw0MDE3Nyw0MDE3OCw0MDE4MSw0MDYxNSwyMDczNSwyMDczOSwyMDc4NCwyMDcyOCwyMDc0MiwyMDc0MywyMDcyNiwyMDczNCwyMDc0NywyMDc0OCwyMDczMywyMDc0NiwyMTEzMSwyMTEzMiwyMTIzMywyMTIz''@;'; put 'put ''MSwyMjA4OCwyMjA4MiwyMjA5MiwyMjA2OSwyMjA4MSwyMjA5MCwyMjA4OSwyMjA4NiwyMjEwNCwyMjEwNiwyMjA4MCwyMjA2NywyMjA3NywyMjA2MCwyMjA3OCwyMjA3MiwyMjA1OCwyMjA3NCwyMjI5OCwyMjY5OSwyMjY4NSwyMjcwNSwyMjY4OCwyMjY5MSwyMjcwMywyMjcwMCwyMjY5Mywy''@;'; put 'put ''MjY4OSwyMjc4MywyMzI5NSwyMzI4NCwyMzI5MywyMzI4NywyMzI4NiwyMzI5OSwyMzI4OCwyMzI5OCwyMzI4OSwyMzI5NywyMzMwMywyMzMwMSwyMzMxMSwyMzY1NSwyMzk2MSwyMzk1OSwyMzk2NywyMzk1NCwyMzk3MCwyMzk1NSwyMzk1NywyMzk2OCwyMzk2NCwyMzk2OSwyMzk2MiwyMzk2''@;'; put 'put ''NiwyNDE2OSwyNDE1NywyNDE2MCwyNDE1NiwzMjI0MywyNDI4MywyNDI4NiwyNDI4OSwyNDM5MywyNDQ5OCwyNDk3MSwyNDk2MywyNDk1MywyNTAwOSwyNTAwOCwyNDk5NCwyNDk2OSwyNDk4NywyNDk3OSwyNTAwNywyNTAwNSwyNDk5MSwyNDk3OCwyNTAwMiwyNDk5MywyNDk3MywyNDkzNCwy''@;'; put 'put ''NTAxMSwyNTEzMywyNTcxMCwyNTcxMiwyNTc1MCwyNTc2MCwyNTczMywyNTc1MSwyNTc1NiwyNTc0MywyNTczOSwyNTczOCwyNTc0MCwyNTc2MywyNTc1OSwyNTcwNCwyNTc3NywyNTc1MiwyNTk3NCwyNTk3OCwyNTk3NywyNTk3OSwyNjAzNCwyNjAzNSwyNjI5MywyNjI4OCwyNjI4MSwyNjI5''@;'; put 'put ''MCwyNjI5NSwyNjI4MiwyNjI4NywyNzEzNiwyNzE0MiwyNzE1OSwyNzEwOSwyNzEyOCwyNzE1NywyNzEyMSwyNzEwOCwyNzE2OCwyNzEzNSwyNzExNiwyNzEwNiwyNzE2MywyNzE2NSwyNzEzNCwyNzE3NSwyNzEyMiwyNzExOCwyNzE1NiwyNzEyNywyNzExMSwyNzIwMCwyNzE0NCwyNzExMCwy''@;'; put 'put ''NzEzMSwyNzE0OSwyNzEzMiwyNzExNSwyNzE0NSwyNzE0MCwyNzE2MCwyNzE3MywyNzE1MSwyNzEyNiwyNzE3NCwyNzE0MywyNzEyNCwyNzE1OCwyNzQ3MywyNzU1NywyNzU1NSwyNzU1NCwyNzU1OCwyNzY0OSwyNzY0OCwyNzY0NywyNzY1MCwyODQ4MSwyODQ1NCwyODU0MiwyODU1MSwyODYx''@;'; put 'put ''NCwyODU2MiwyODU1NywyODU1MywyODU1NiwyODUxNCwyODQ5NSwyODU0OSwyODUwNiwyODU2NiwyODUzNCwyODUyNCwyODU0NiwyODUwMSwyODUzMCwyODQ5OCwyODQ5NiwyODUwMywyODU2NCwyODU2MywyODUwOSwyODQxNiwyODUxMywyODUyMywyODU0MSwyODUxOSwyODU2MCwyODQ5OSwy''@;'; put 'put ''ODU1NSwyODUyMSwyODU0MywyODU2NSwyODUxNSwyODUzNSwyODUyMiwyODUzOSwyOTEwNiwyOTEwMywyOTA4MywyOTEwNCwyOTA4OCwyOTA4MiwyOTA5NywyOTEwOSwyOTA4NSwyOTA5MywyOTA4NiwyOTA5MiwyOTA4OSwyOTA5OCwyOTA4NCwyOTA5NSwyOTEwNywyOTMzNiwyOTMzOCwyOTUy''@;'; put 'put ''OCwyOTUyMiwyOTUzNCwyOTUzNSwyOTUzNiwyOTUzMywyOTUzMSwyOTUzNywyOTUzMCwyOTUyOSwyOTUzOCwyOTgzMSwyOTgzMywyOTgzNCwyOTgzMCwyOTgyNSwyOTgyMSwyOTgyOSwyOTgzMiwyOTgyMCwyOTgxNywyOTk2MCwyOTk1OSwzMDA3OCwzMDI0NSwzMDIzOCwzMDIzMywzMDIzNywz''@;'; put 'put ''MDIzNiwzMDI0MywzMDIzNCwzMDI0OCwzMDIzNSwzMDM2NCwzMDM2NSwzMDM2NiwzMDM2MywzMDYwNSwzMDYwNywzMDYwMSwzMDYwMCwzMDkyNSwzMDkwNywzMDkyNywzMDkyNCwzMDkyOSwzMDkyNiwzMDkzMiwzMDkyMCwzMDkxNSwzMDkxNiwzMDkyMSwzMTEzMCwzMTEzNywzMTEzNiwzMTEz''@;'; put 'put ''MiwzMTEzOCwzMTEzMSwyNzUxMCwzMTI4OSwzMTQxMCwzMTQxMiwzMTQxMSwzMTY3MSwzMTY5MSwzMTY3OCwzMTY2MCwzMTY5NCwzMTY2MywzMTY3MywzMTY5MCwzMTY2OSwzMTk0MSwzMTk0NCwzMTk0OCwzMTk0NywzMjI0NywzMjIxOSwzMjIzNCwzMjIzMSwzMjIxNSwzMjIyNSwzMjI1OSwz''@;'; put 'put ''MjI1MCwzMjIzMCwzMjI0NiwzMjI0MSwzMjI0MCwzMjIzOCwzMjIyMywzMjYzMCwzMjY4NCwzMjY4OCwzMjY4NSwzMjc0OSwzMjc0NywzMjc0NiwzMjc0OCwzMjc0MiwzMjc0NCwzMjg2OCwzMjg3MSwzMzE4NywzMzE4MywzMzE4MiwzMzE3MywzMzE4NiwzMzE3NywzMzE3NSwzMzMwMiwzMzM1''@;'; put 'put ''OSwzMzM2MywzMzM2MiwzMzM2MCwzMzM1OCwzMzM2MSwzNDA4NCwzNDEwNywzNDA2MywzNDA0OCwzNDA4OSwzNDA2MiwzNDA1NywzNDA2MSwzNDA3OSwzNDA1OCwzNDA4NywzNDA3NiwzNDA0MywzNDA5MSwzNDA0MiwzNDA1NiwzNDA2MCwzNDAzNiwzNDA5MCwzNDAzNCwzNDA2OSwzNDAzOSwz''@;'; put 'put ''NDAyNywzNDAzNSwzNDA0NCwzNDA2NiwzNDAyNiwzNDAyNSwzNDA3MCwzNDA0NiwzNDA4OCwzNDA3NywzNDA5NCwzNDA1MCwzNDA0NSwzNDA3OCwzNDAzOCwzNDA5NywzNDA4NiwzNDAyMywzNDAyNCwzNDAzMiwzNDAzMSwzNDA0MSwzNDA3MiwzNDA4MCwzNDA5NiwzNDA1OSwzNDA3MywzNDA5''@;'; put 'put ''NSwzNDQwMiwzNDY0NiwzNDY1OSwzNDY2MCwzNDY3OSwzNDc4NSwzNDY3NSwzNDY0OCwzNDY0NCwzNDY1MSwzNDY0MiwzNDY1NywzNDY1MCwzNDY0MSwzNDY1NCwzNDY2OSwzNDY2NiwzNDY0MCwzNDYzOCwzNDY1NSwzNDY1MywzNDY3MSwzNDY2OCwzNDY4MiwzNDY3MCwzNDY1MiwzNDY2MSwz''@;'; put 'put ''NDYzOSwzNDY4MywzNDY3NywzNDY1OCwzNDY2MywzNDY2NSwzNDkwNiwzNTA3NywzNTA4NCwzNTA5MiwzNTA4MywzNTA5NSwzNTA5NiwzNTA5NywzNTA3OCwzNTA5NCwzNTA4OSwzNTA4NiwzNTA4MSwzNTIzNCwzNTIzNiwzNTIzNSwzNTMwOSwzNTMxMiwzNTMwOCwzNTUzNSwzNTUyNiwzNTUx''@;'; put 'put ''MiwzNTUzOSwzNTUzNywzNTU0MCwzNTU0MSwzNTUxNSwzNTU0MywzNTUxOCwzNTUyMCwzNTUyNSwzNTU0NCwzNTUyMywzNTUxNCwzNTUxNywzNTU0NSwzNTkwMiwzNTkxNywzNTk4MywzNjA2OSwzNjA2MywzNjA1NywzNjA3MiwzNjA1OCwzNjA2MSwzNjA3MSwzNjI1NiwzNjI1MiwzNjI1Nywz''@;'; put 'put ''NjI1MSwzNjM4NCwzNjM4NywzNjM4OSwzNjM4OCwzNjM5OCwzNjM3MywzNjM3OSwzNjM3NCwzNjM2OSwzNjM3NywzNjM5MCwzNjM5MSwzNjM3MiwzNjM3MCwzNjM3NiwzNjM3MSwzNjM4MCwzNjM3NSwzNjM3OCwzNjY1MiwzNjY0NCwzNjYzMiwzNjYzNCwzNjY0MCwzNjY0MywzNjYzMCwzNjYz''@;'; put 'put ''MSwzNjk3OSwzNjk3NiwzNjk3NSwzNjk2NywzNjk3MSwzNzE2NywzNzE2MywzNzE2MSwzNzE2MiwzNzE3MCwzNzE1OCwzNzE2NiwzNzI1MywzNzI1NCwzNzI1OCwzNzI0OSwzNzI1MCwzNzI1MiwzNzI0OCwzNzU4NCwzNzU3MSwzNzU3MiwzNzU2OCwzNzU5MywzNzU1OCwzNzU4MywzNzYxNywz''@;'; put 'put ''NzU5OSwzNzU5MiwzNzYwOSwzNzU5MSwzNzU5NywzNzU4MCwzNzYxNSwzNzU3MCwzNzYwOCwzNzU3OCwzNzU3NiwzNzU4MiwzNzYwNiwzNzU4MSwzNzU4OSwzNzU3NywzNzYwMCwzNzU5OCwzNzYwNywzNzU4NSwzNzU4NywzNzU1NywzNzYwMSwzNzU3NCwzNzU1NiwzODI2OCwzODMxNiwzODMx''@;'; put 'put ''NSwzODMxOCwzODMyMCwzODU2NCwzODU2MiwzODYxMSwzODY2MSwzODY2NCwzODY1OCwzODc0NiwzODc5NCwzODc5OCwzODc5MiwzODg2NCwzODg2MywzODk0MiwzODk0MSwzODk1MCwzODk1MywzODk1MiwzODk0NCwzODkzOSwzODk1MSwzOTA5MCwzOTE3NiwzOTE2MiwzOTE4NSwzOTE4OCwz''@;'; put 'put ''OTE5MCwzOTE5MSwzOTE4OSwzOTM4OCwzOTM3MywzOTM3NSwzOTM3OSwzOTM4MCwzOTM3NCwzOTM2OSwzOTM4MiwzOTM4NCwzOTM3MSwzOTM4MywzOTM3MiwzOTYwMywzOTY2MCwzOTY1OSwzOTY2NywzOTY2NiwzOTY2NSwzOTc1MCwzOTc0NywzOTc4MywzOTc5NiwzOTc5MywzOTc4MiwzOTc5''@;'; put 'put ''OCwzOTc5NywzOTc5MiwzOTc4NCwzOTc4MCwzOTc4OCw0MDE4OCw0MDE4Niw0MDE4OSw0MDE5MSw0MDE4Myw0MDE5OSw0MDE5Miw0MDE4NSw0MDE4Nyw0MDIwMCw0MDE5Nyw0MDE5Niw0MDU3OSw0MDY1OSw0MDcxOSw0MDcyMCwyMDc2NCwyMDc1NSwyMDc1OSwyMDc2MiwyMDc1MywyMDk1OCwy''@;'; put 'put ''MTMwMCwyMTQ3MywyMjEyOCwyMjExMiwyMjEyNiwyMjEzMSwyMjExOCwyMjExNSwyMjEyNSwyMjEzMCwyMjExMCwyMjEzNSwyMjMwMCwyMjI5OSwyMjcyOCwyMjcxNywyMjcyOSwyMjcxOSwyMjcxNCwyMjcyMiwyMjcxNiwyMjcyNiwyMzMxOSwyMzMyMSwyMzMyMywyMzMyOSwyMzMxNiwyMzMx''@;'; put 'put ''NSwyMzMxMiwyMzMxOCwyMzMzNiwyMzMyMiwyMzMyOCwyMzMyNiwyMzUzNSwyMzk4MCwyMzk4NSwyMzk3NywyMzk3NSwyMzk4OSwyMzk4NCwyMzk4MiwyMzk3OCwyMzk3NiwyMzk4NiwyMzk4MSwyMzk4MywyMzk4OCwyNDE2NywyNDE2OCwyNDE2NiwyNDE3NSwyNDI5NywyNDI5NSwyNDI5NCwy''@;'; put 'put ''NDI5NiwyNDI5MywyNDM5NSwyNDUwOCwyNDk4OSwyNWUzLDI0OTgyLDI1MDI5LDI1MDEyLDI1MDMwLDI1MDI1LDI1MDM2LDI1MDE4LDI1MDIzLDI1MDE2LDI0OTcyLDI1ODE1LDI1ODE0LDI1ODA4LDI1ODA3LDI1ODAxLDI1Nzg5LDI1NzM3LDI1Nzk1LDI1ODE5LDI1ODQzLDI1ODE3LDI1OTA3''@;'; put 'put ''LDI1OTgzLDI1OTgwLDI2MDE4LDI2MzEyLDI2MzAyLDI2MzA0LDI2MzE0LDI2MzE1LDI2MzE5LDI2MzAxLDI2Mjk5LDI2Mjk4LDI2MzE2LDI2NDAzLDI3MTg4LDI3MjM4LDI3MjA5LDI3MjM5LDI3MTg2LDI3MjQwLDI3MTk4LDI3MjI5LDI3MjQ1LDI3MjU0LDI3MjI3LDI3MjE3LDI3MTc2LDI3''@;'; put 'put ''MjI2LDI3MTk1LDI3MTk5LDI3MjAxLDI3MjQyLDI3MjM2LDI3MjE2LDI3MjE1LDI3MjIwLDI3MjQ3LDI3MjQxLDI3MjMyLDI3MTk2LDI3MjMwLDI3MjIyLDI3MjIxLDI3MjEzLDI3MjE0LDI3MjA2LDI3NDc3LDI3NDc2LDI3NDc4LDI3NTU5LDI3NTYyLDI3NTYzLDI3NTkyLDI3NTkxLDI3NjUy''@;'; put 'put ''LDI3NjUxLDI3NjU0LDI4NTg5LDI4NjE5LDI4NTc5LDI4NjE1LDI4NjA0LDI4NjIyLDI4NjE2LDI4NTEwLDI4NjEyLDI4NjA1LDI4NTc0LDI4NjE4LDI4NTg0LDI4Njc2LDI4NTgxLDI4NTkwLDI4NjAyLDI4NTg4LDI4NTg2LDI4NjIzLDI4NjA3LDI4NjAwLDI4NTc4LDI4NjE3LDI4NTg3LDI4''@;'; put 'put ''NjIxLDI4NTkxLDI4NTk0LDI4NTkyLDI5MTI1LDI5MTIyLDI5MTE5LDI5MTEyLDI5MTQyLDI5MTIwLDI5MTIxLDI5MTMxLDI5MTQwLDI5MTMwLDI5MTI3LDI5MTM1LDI5MTE3LDI5MTQ0LDI5MTE2LDI5MTI2LDI5MTQ2LDI5MTQ3LDI5MzQxLDI5MzQyLDI5NTQ1LDI5NTQyLDI5NTQzLDI5NTQ4''@;'; put 'put ''LDI5NTQxLDI5NTQ3LDI5NTQ2LDI5ODIzLDI5ODUwLDI5ODU2LDI5ODQ0LDI5ODQyLDI5ODQ1LDI5ODU3LDI5OTYzLDMwMDgwLDMwMjU1LDMwMjUzLDMwMjU3LDMwMjY5LDMwMjU5LDMwMjY4LDMwMjYxLDMwMjU4LDMwMjU2LDMwMzk1LDMwNDM4LDMwNjE4LDMwNjIxLDMwNjI1LDMwNjIwLDMw''@;'; put 'put ''NjE5LDMwNjI2LDMwNjI3LDMwNjEzLDMwNjE3LDMwNjE1LDMwOTQxLDMwOTUzLDMwOTQ5LDMwOTU0LDMwOTQyLDMwOTQ3LDMwOTM5LDMwOTQ1LDMwOTQ2LDMwOTU3LDMwOTQzLDMwOTQ0LDMxMTQwLDMxMzAwLDMxMzA0LDMxMzAzLDMxNDE0LDMxNDE2LDMxNDEzLDMxNDA5LDMxNDE1LDMxNzEw''@;'; put 'put ''LDMxNzE1LDMxNzE5LDMxNzA5LDMxNzAxLDMxNzE3LDMxNzA2LDMxNzIwLDMxNzM3LDMxNzAwLDMxNzIyLDMxNzE0LDMxNzA4LDMxNzIzLDMxNzA0LDMxNzExLDMxOTU0LDMxOTU2LDMxOTU5LDMxOTUyLDMxOTUzLDMyMjc0LDMyMjg5LDMyMjc5LDMyMjY4LDMyMjg3LDMyMjg4LDMyMjc1LDMy''@;'; put 'put ''MjcwLDMyMjg0LDMyMjc3LDMyMjgyLDMyMjkwLDMyMjY3LDMyMjcxLDMyMjc4LDMyMjY5LDMyMjc2LDMyMjkzLDMyMjkyLDMyNTc5LDMyNjM1LDMyNjM2LDMyNjM0LDMyNjg5LDMyNzUxLDMyODEwLDMyODA5LDMyODc2LDMzMjAxLDMzMTkwLDMzMTk4LDMzMjA5LDMzMjA1LDMzMTk1LDMzMjAw''@;'; put 'put ''LDMzMTk2LDMzMjA0LDMzMjAyLDMzMjA3LDMzMTkxLDMzMjY2LDMzMzY1LDMzMzY2LDMzMzY3LDM0MTM0LDM0MTE3LDM0MTU1LDM0MTI1LDM0MTMxLDM0MTQ1LDM0MTM2LDM0MTEyLDM0MTE4LDM0MTQ4LDM0MTEzLDM0MTQ2LDM0MTE2LDM0MTI5LDM0MTE5LDM0MTQ3LDM0MTEwLDM0MTM5LDM0''@;'; put 'put ''MTYxLDM0MTI2LDM0MTU4LDM0MTY1LDM0MTMzLDM0MTUxLDM0MTQ0LDM0MTg4LDM0MTUwLDM0MTQxLDM0MTMyLDM0MTQ5LDM0MTU2LDM0NDAzLDM0NDA1LDM0NDA0LDM0NzE1LDM0NzAzLDM0NzExLDM0NzA3LDM0NzA2LDM0Njk2LDM0Njg5LDM0NzEwLDM0NzEyLDM0NjgxLDM0Njk1LDM0NzIz''@;'; put 'put ''LDM0NjkzLDM0NzA0LDM0NzA1LDM0NzE3LDM0NjkyLDM0NzA4LDM0NzE2LDM0NzE0LDM0Njk3LDM1MTAyLDM1MTEwLDM1MTIwLDM1MTE3LDM1MTE4LDM1MTExLDM1MTIxLDM1MTA2LDM1MTEzLDM1MTA3LDM1MTE5LDM1MTE2LDM1MTAzLDM1MzEzLDM1NTUyLDM1NTU0LDM1NTcwLDM1NTcyLDM1''@;'; put 'put ''NTczLDM1NTQ5LDM1NjA0LDM1NTU2LDM1NTUxLDM1NTY4LDM1NTI4LDM1NTUwLDM1NTUzLDM1NTYwLDM1NTgzLDM1NTY3LDM1NTc5LDM1OTg1LDM1OTg2LDM1OTg0LDM2MDg1LDM2MDc4LDM2MDgxLDM2MDgwLDM2MDgzLDM2MjA0LDM2MjA2LDM2MjYxLDM2MjYzLDM2NDAzLDM2NDE0LDM2NDA4''@;'; put 'put ''LDM2NDE2LDM2NDIxLDM2NDA2LDM2NDEyLDM2NDEzLDM2NDE3LDM2NDAwLDM2NDE1LDM2NTQxLDM2NjYyLDM2NjU0LDM2NjYxLDM2NjU4LDM2NjY1LDM2NjYzLDM2NjYwLDM2OTgyLDM2OTg1LDM2OTg3LDM2OTk4LDM3MTE0LDM3MTcxLDM3MTczLDM3MTc0LDM3MjY3LDM3MjY0LDM3MjY1LDM3''@;'; put 'put ''MjYxLDM3MjYzLDM3NjcxLDM3NjYyLDM3NjQwLDM3NjYzLDM3NjM4LDM3NjQ3LDM3NzU0LDM3Njg4LDM3NjkyLDM3NjU5LDM3NjY3LDM3NjUwLDM3NjMzLDM3NzAyLDM3Njc3LDM3NjQ2LDM3NjQ1LDM3NTc5LDM3NjYxLDM3NjI2LDM3NjY5LDM3NjUxLDM3NjI1LDM3NjIzLDM3Njg0LDM3NjM0''@;'; put 'put ''LDM3NjY4LDM3NjMxLDM3NjczLDM3Njg5LDM3Njg1LDM3Njc0LDM3NjUyLDM3NjQ0LDM3NjQzLDM3NjMwLDM3NjQxLDM3NjMyLDM3NjI3LDM3NjU0LDM4MzMyLDM4MzQ5LDM4MzM0LDM4MzI5LDM4MzMwLDM4MzI2LDM4MzM1LDM4MzI1LDM4MzMzLDM4NTY5LDM4NjEyLDM4NjY3LDM4Njc0LDM4''@;'; put 'put ''NjcyLDM4ODA5LDM4ODA3LDM4ODA0LDM4ODk2LDM4OTA0LDM4OTY1LDM4OTU5LDM4OTYyLDM5MjA0LDM5MTk5LDM5MjA3LDM5MjA5LDM5MzI2LDM5NDA2LDM5NDA0LDM5Mzk3LDM5Mzk2LDM5NDA4LDM5Mzk1LDM5NDAyLDM5NDAxLDM5Mzk5LDM5NjA5LDM5NjE1LDM5NjA0LDM5NjExLDM5Njcw''@;'; put 'put ''LDM5Njc0LDM5NjczLDM5NjcxLDM5NzMxLDM5ODA4LDM5ODEzLDM5ODE1LDM5ODA0LDM5ODA2LDM5ODAzLDM5ODEwLDM5ODI3LDM5ODI2LDM5ODI0LDM5ODAyLDM5ODI5LDM5ODA1LDM5ODE2LDQwMjI5LDQwMjE1LDQwMjI0LDQwMjIyLDQwMjEyLDQwMjMzLDQwMjIxLDQwMjE2LDQwMjI2LDQw''@;'; put 'put ''MjA4LDQwMjE3LDQwMjIzLDQwNTg0LDQwNTgyLDQwNTgzLDQwNjIyLDQwNjIxLDQwNjYxLDQwNjYyLDQwNjk4LDQwNzIyLDQwNzY1LDIwNzc0LDIwNzczLDIwNzcwLDIwNzcyLDIwNzY4LDIwNzc3LDIxMjM2LDIyMTYzLDIyMTU2LDIyMTU3LDIyMTUwLDIyMTQ4LDIyMTQ3LDIyMTQyLDIyMTQ2''@;'; put 'put ''LDIyMTQzLDIyMTQ1LDIyNzQyLDIyNzQwLDIyNzM1LDIyNzM4LDIzMzQxLDIzMzMzLDIzMzQ2LDIzMzMxLDIzMzQwLDIzMzM1LDIzMzM0LDIzMzQzLDIzMzQyLDIzNDE5LDIzNTM3LDIzNTM4LDIzOTkxLDI0MTcyLDI0MTcwLDI0NTEwLDI0NTA3LDI1MDI3LDI1MDEzLDI1MDIwLDI1MDYzLDI1''@;'; put 'put ''MDU2LDI1MDYxLDI1MDYwLDI1MDY0LDI1MDU0LDI1ODM5LDI1ODMzLDI1ODI3LDI1ODM1LDI1ODI4LDI1ODMyLDI1OTg1LDI1OTg0LDI2MDM4LDI2MDc0LDI2MzIyLDI3Mjc3LDI3Mjg2LDI3MjY1LDI3MzAxLDI3MjczLDI3Mjk1LDI3MjkxLDI3Mjk3LDI3Mjk0LDI3MjcxLDI3MjgzLDI3Mjc4''@;'; put 'put ''LDI3Mjg1LDI3MjY3LDI3MzA0LDI3MzAwLDI3MjgxLDI3MjYzLDI3MzAyLDI3MjkwLDI3MjY5LDI3Mjc2LDI3MjgyLDI3NDgzLDI3NTY1LDI3NjU3LDI4NjIwLDI4NTg1LDI4NjYwLDI4NjI4LDI4NjQzLDI4NjM2LDI4NjUzLDI4NjQ3LDI4NjQ2LDI4NjM4LDI4NjU4LDI4NjM3LDI4NjQyLDI4''@;'; put 'put ''NjQ4LDI5MTUzLDI5MTY5LDI5MTYwLDI5MTcwLDI5MTU2LDI5MTY4LDI5MTU0LDI5NTU1LDI5NTUwLDI5NTUxLDI5ODQ3LDI5ODc0LDI5ODY3LDI5ODQwLDI5ODY2LDI5ODY5LDI5ODczLDI5ODYxLDI5ODcxLDI5OTY4LDI5OTY5LDI5OTcwLDI5OTY3LDMwMDg0LDMwMjc1LDMwMjgwLDMwMjgx''@;'; put 'put ''LDMwMjc5LDMwMzcyLDMwNDQxLDMwNjQ1LDMwNjM1LDMwNjQyLDMwNjQ3LDMwNjQ2LDMwNjQ0LDMwNjQxLDMwNjMyLDMwNzA0LDMwOTYzLDMwOTczLDMwOTc4LDMwOTcxLDMwOTcyLDMwOTYyLDMwOTgxLDMwOTY5LDMwOTc0LDMwOTgwLDMxMTQ3LDMxMTQ0LDMxMzI0LDMxMzIzLDMxMzE4LDMx''@;'; put 'put ''MzIwLDMxMzE2LDMxMzIyLDMxNDIyLDMxNDI0LDMxNDI1LDMxNzQ5LDMxNzU5LDMxNzMwLDMxNzQ0LDMxNzQzLDMxNzM5LDMxNzU4LDMxNzMyLDMxNzU1LDMxNzMxLDMxNzQ2LDMxNzUzLDMxNzQ3LDMxNzQ1LDMxNzM2LDMxNzQxLDMxNzUwLDMxNzI4LDMxNzI5LDMxNzYwLDMxNzU0LDMxOTc2''@;'; put 'put ''LDMyMzAxLDMyMzE2LDMyMzIyLDMyMzA3LDM4OTg0LDMyMzEyLDMyMjk4LDMyMzI5LDMyMzIwLDMyMzI3LDMyMjk3LDMyMzMyLDMyMzA0LDMyMzE1LDMyMzEwLDMyMzI0LDMyMzE0LDMyNTgxLDMyNjM5LDMyNjM4LDMyNjM3LDMyNzU2LDMyNzU0LDMyODEyLDMzMjExLDMzMjIwLDMzMjI4LDMz''@;'; put 'put ''MjI2LDMzMjIxLDMzMjIzLDMzMjEyLDMzMjU3LDMzMzcxLDMzMzcwLDMzMzcyLDM0MTc5LDM0MTc2LDM0MTkxLDM0MjE1LDM0MTk3LDM0MjA4LDM0MTg3LDM0MjExLDM0MTcxLDM0MjEyLDM0MjAyLDM0MjA2LDM0MTY3LDM0MTcyLDM0MTg1LDM0MjA5LDM0MTcwLDM0MTY4LDM0MTM1LDM0MTkw''@;'; put 'put ''LDM0MTk4LDM0MTgyLDM0MTg5LDM0MjAxLDM0MjA1LDM0MTc3LDM0MjEwLDM0MTc4LDM0MTg0LDM0MTgxLDM0MTY5LDM0MTY2LDM0MjAwLDM0MTkyLDM0MjA3LDM0NDA4LDM0NzUwLDM0NzMwLDM0NzMzLDM0NzU3LDM0NzM2LDM0NzMyLDM0NzQ1LDM0NzQxLDM0NzQ4LDM0NzM0LDM0NzYxLDM0''@;'; put 'put ''NzU1LDM0NzU0LDM0NzY0LDM0NzQzLDM0NzM1LDM0NzU2LDM0NzYyLDM0NzQwLDM0NzQyLDM0NzUxLDM0NzQ0LDM0NzQ5LDM0NzgyLDM0NzM4LDM1MTI1LDM1MTIzLDM1MTMyLDM1MTM0LDM1MTM3LDM1MTU0LDM1MTI3LDM1MTM4LDM1MjQ1LDM1MjQ3LDM1MjQ2LDM1MzE0LDM1MzE1LDM1NjE0''@;'; put 'put ''LDM1NjA4LDM1NjA2LDM1NjAxLDM1NTg5LDM1NTk1LDM1NjE4LDM1NTk5LDM1NjAyLDM1NjA1LDM1NTkxLDM1NTk3LDM1NTkyLDM1NTkwLDM1NjEyLDM1NjAzLDM1NjEwLDM1OTE5LDM1OTUyLDM1OTU0LDM1OTUzLDM1OTUxLDM1OTg5LDM1OTg4LDM2MDg5LDM2MjA3LDM2NDMwLDM2NDI5LDM2''@;'; put 'put ''NDM1LDM2NDMyLDM2NDI4LDM2NDIzLDM2Njc1LDM2NjcyLDM2OTk3LDM2OTkwLDM3MTc2LDM3Mjc0LDM3MjgyLDM3Mjc1LDM3MjczLDM3Mjc5LDM3MjgxLDM3Mjc3LDM3MjgwLDM3NzkzLDM3NzYzLDM3ODA3LDM3NzMyLDM3NzE4LDM3NzAzLDM3NzU2LDM3NzIwLDM3NzI0LDM3NzUwLDM3NzA1''@;'; put 'put ''LDM3NzEyLDM3NzEzLDM3NzI4LDM3NzQxLDM3Nzc1LDM3NzA4LDM3NzM4LDM3NzUzLDM3NzE5LDM3NzE3LDM3NzE0LDM3NzExLDM3NzQ1LDM3NzUxLDM3NzU1LDM3NzI5LDM3NzI2LDM3NzMxLDM3NzM1LDM3NzYwLDM3NzEwLDM3NzIxLDM4MzQzLDM4MzM2LDM4MzQ1LDM4MzM5LDM4MzQxLDM4''@;'; put 'put ''MzI3LDM4NTc0LDM4NTc2LDM4NTcyLDM4Njg4LDM4Njg3LDM4NjgwLDM4Njg1LDM4NjgxLDM4ODEwLDM4ODE3LDM4ODEyLDM4ODE0LDM4ODEzLDM4ODY5LDM4ODY4LDM4ODk3LDM4OTc3LDM4OTgwLDM4OTg2LDM4OTg1LDM4OTgxLDM4OTc5LDM5MjA1LDM5MjExLDM5MjEyLDM5MjEwLDM5MjE5''@;'; put 'put ''LDM5MjE4LDM5MjE1LDM5MjEzLDM5MjE3LDM5MjE2LDM5MzIwLDM5MzMxLDM5MzI5LDM5NDI2LDM5NDE4LDM5NDEyLDM5NDE1LDM5NDE3LDM5NDE2LDM5NDE0LDM5NDE5LDM5NDIxLDM5NDIyLDM5NDIwLDM5NDI3LDM5NjE0LDM5Njc4LDM5Njc3LDM5NjgxLDM5Njc2LDM5NzUyLDM5ODM0LDM5''@;'; put 'put ''ODQ4LDM5ODM4LDM5ODM1LDM5ODQ2LDM5ODQxLDM5ODQ1LDM5ODQ0LDM5ODE0LDM5ODQyLDM5ODQwLDM5ODU1LDQwMjQzLDQwMjU3LDQwMjk1LDQwMjQ2LDQwMjM4LDQwMjM5LDQwMjQxLDQwMjQ4LDQwMjQwLDQwMjYxLDQwMjU4LDQwMjU5LDQwMjU0LDQwMjQ3LDQwMjU2LDQwMjUzLDMyNzU3''@;'; put 'put ''LDQwMjM3LDQwNTg2LDQwNTg1LDQwNTg5LDQwNjI0LDQwNjQ4LDQwNjY2LDQwNjk5LDQwNzAzLDQwNzQwLDQwNzM5LDQwNzM4LDQwNzg4LDQwODY0LDIwNzg1LDIwNzgxLDIwNzgyLDIyMTY4LDIyMTcyLDIyMTY3LDIyMTcwLDIyMTczLDIyMTY5LDIyODk2LDIzMzU2LDIzNjU3LDIzNjU4LDI0''@;'; put 'put ''ZTMsMjQxNzMsMjQxNzQsMjUwNDgsMjUwNTUsMjUwNjksMjUwNzAsMjUwNzMsMjUwNjYsMjUwNzIsMjUwNjcsMjUwNDYsMjUwNjUsMjU4NTUsMjU4NjAsMjU4NTMsMjU4NDgsMjU4NTcsMjU4NTksMjU4NTIsMjYwMDQsMjYwNzUsMjYzMzAsMjYzMzEsMjYzMjgsMjczMzMsMjczMjEsMjczMjUs''@;'; put 'put ''MjczNjEsMjczMzQsMjczMjIsMjczMTgsMjczMTksMjczMzUsMjczMTYsMjczMDksMjc0ODYsMjc1OTMsMjc2NTksMjg2NzksMjg2ODQsMjg2ODUsMjg2NzMsMjg2NzcsMjg2OTIsMjg2ODYsMjg2NzEsMjg2NzIsMjg2NjcsMjg3MTAsMjg2NjgsMjg2NjMsMjg2ODIsMjkxODUsMjkxODMsMjkx''@;'; put 'put ''NzcsMjkxODcsMjkxODEsMjk1NTgsMjk4ODAsMjk4ODgsMjk4NzcsMjk4ODksMjk4ODYsMjk4NzgsMjk4ODMsMjk4OTAsMjk5NzIsMjk5NzEsMzAzMDAsMzAzMDgsMzAyOTcsMzAyODgsMzAyOTEsMzAyOTUsMzAyOTgsMzAzNzQsMzAzOTcsMzA0NDQsMzA2NTgsMzA2NTAsMzA5NzUsMzA5ODgs''@;'; put 'put ''MzA5OTUsMzA5OTYsMzA5ODUsMzA5OTIsMzA5OTQsMzA5OTMsMzExNDksMzExNDgsMzEzMjcsMzE3NzIsMzE3ODUsMzE3NjksMzE3NzYsMzE3NzUsMzE3ODksMzE3NzMsMzE3ODIsMzE3ODQsMzE3NzgsMzE3ODEsMzE3OTIsMzIzNDgsMzIzMzYsMzIzNDIsMzIzNTUsMzIzNDQsMzIzNTQsMzIz''@;'; put 'put ''NTEsMzIzMzcsMzIzNTIsMzIzNDMsMzIzMzksMzI2OTMsMzI2OTEsMzI3NTksMzI3NjAsMzI4ODUsMzMyMzMsMzMyMzQsMzMyMzIsMzMzNzUsMzMzNzQsMzQyMjgsMzQyNDYsMzQyNDAsMzQyNDMsMzQyNDIsMzQyMjcsMzQyMjksMzQyMzcsMzQyNDcsMzQyNDQsMzQyMzksMzQyNTEsMzQyNTQs''@;'; put 'put ''MzQyNDgsMzQyNDUsMzQyMjUsMzQyMzAsMzQyNTgsMzQzNDAsMzQyMzIsMzQyMzEsMzQyMzgsMzQ0MDksMzQ3OTEsMzQ3OTAsMzQ3ODYsMzQ3NzksMzQ3OTUsMzQ3OTQsMzQ3ODksMzQ3ODMsMzQ4MDMsMzQ3ODgsMzQ3NzIsMzQ3ODAsMzQ3NzEsMzQ3OTcsMzQ3NzYsMzQ3ODcsMzQ3MjQsMzQ3''@;'; put 'put ''NzUsMzQ3NzcsMzQ4MTcsMzQ4MDQsMzQ3OTIsMzQ3ODEsMzUxNTUsMzUxNDcsMzUxNTEsMzUxNDgsMzUxNDIsMzUxNTIsMzUxNTMsMzUxNDUsMzU2MjYsMzU2MjMsMzU2MTksMzU2MzUsMzU2MzIsMzU2MzcsMzU2NTUsMzU2MzEsMzU2NDQsMzU2NDYsMzU2MzMsMzU2MjEsMzU2MzksMzU2MjIs''@;'; put 'put ''MzU2MzgsMzU2MzAsMzU2MjAsMzU2NDMsMzU2NDUsMzU2NDIsMzU5MDYsMzU5NTcsMzU5OTMsMzU5OTIsMzU5OTEsMzYwOTQsMzYxMDAsMzYwOTgsMzYwOTYsMzY0NDQsMzY0NTAsMzY0NDgsMzY0MzksMzY0MzgsMzY0NDYsMzY0NTMsMzY0NTUsMzY0NDMsMzY0NDIsMzY0NDksMzY0NDUsMzY0''@;'; put 'put ''NTcsMzY0MzYsMzY2NzgsMzY2NzksMzY2ODAsMzY2ODMsMzcxNjAsMzcxNzgsMzcxNzksMzcxODIsMzcyODgsMzcyODUsMzcyODcsMzcyOTUsMzcyOTAsMzc4MTMsMzc3NzIsMzc3NzgsMzc4MTUsMzc3ODcsMzc3ODksMzc3NjksMzc3OTksMzc3NzQsMzc4MDIsMzc3OTAsMzc3OTgsMzc3ODEs''@;'; put 'put ''Mzc3NjgsMzc3ODUsMzc3OTEsMzc3NzMsMzc4MDksMzc3NzcsMzc4MTAsMzc3OTYsMzc4MDAsMzc4MTIsMzc3OTUsMzc3OTcsMzgzNTQsMzgzNTUsMzgzNTMsMzg1NzksMzg2MTUsMzg2MTgsMjQwMDIsMzg2MjMsMzg2MTYsMzg2MjEsMzg2OTEsMzg2OTAsMzg2OTMsMzg4MjgsMzg4MzAsMzg4''@;'; put 'put ''MjQsMzg4MjcsMzg4MjAsMzg4MjYsMzg4MTgsMzg4MjEsMzg4NzEsMzg4NzMsMzg4NzAsMzg4NzIsMzg5MDYsMzg5OTIsMzg5OTMsMzg5OTQsMzkwOTYsMzkyMzMsMzkyMjgsMzkyMjYsMzk0MzksMzk0MzUsMzk0MzMsMzk0MzcsMzk0MjgsMzk0NDEsMzk0MzQsMzk0MjksMzk0MzEsMzk0MzAs''@;'; put 'put ''Mzk2MTYsMzk2NDQsMzk2ODgsMzk2ODQsMzk2ODUsMzk3MjEsMzk3MzMsMzk3NTQsMzk3NTYsMzk3NTUsMzk4NzksMzk4NzgsMzk4NzUsMzk4NzEsMzk4NzMsMzk4NjEsMzk4NjQsMzk4OTEsMzk4NjIsMzk4NzYsMzk4NjUsMzk4NjksNDAyODQsNDAyNzUsNDAyNzEsNDAyNjYsNDAyODMsNDAy''@;'; put 'put ''NjcsNDAyODEsNDAyNzgsNDAyNjgsNDAyNzksNDAyNzQsNDAyNzYsNDAyODcsNDAyODAsNDAyODIsNDA1OTAsNDA1ODgsNDA2NzEsNDA3MDUsNDA3MDQsNDA3MjYsNDA3NDEsNDA3NDcsNDA3NDYsNDA3NDUsNDA3NDQsNDA3ODAsNDA3ODksMjA3ODgsMjA3ODksMjExNDIsMjEyMzksMjE0Mjgs''@;'; put 'put ''MjIxODcsMjIxODksMjIxODIsMjIxODMsMjIxODYsMjIxODgsMjI3NDYsMjI3NDksMjI3NDcsMjI4MDIsMjMzNTcsMjMzNTgsMjMzNTksMjQwMDMsMjQxNzYsMjQ1MTEsMjUwODMsMjU4NjMsMjU4NzIsMjU4NjksMjU4NjUsMjU4NjgsMjU4NzAsMjU5ODgsMjYwNzgsMjYwNzcsMjYzMzQsMjcz''@;'; put 'put ''NjcsMjczNjAsMjczNDAsMjczNDUsMjczNTMsMjczMzksMjczNTksMjczNTYsMjczNDQsMjczNzEsMjczNDMsMjczNDEsMjczNTgsMjc0ODgsMjc1NjgsMjc2NjAsMjg2OTcsMjg3MTEsMjg3MDQsMjg2OTQsMjg3MTUsMjg3MDUsMjg3MDYsMjg3MDcsMjg3MTMsMjg2OTUsMjg3MDgsMjg3MDAs''@;'; put 'put ''Mjg3MTQsMjkxOTYsMjkxOTQsMjkxOTEsMjkxODYsMjkxODksMjkzNDksMjkzNTAsMjkzNDgsMjkzNDcsMjkzNDUsMjk4OTksMjk4OTMsMjk4NzksMjk4OTEsMjk5NzQsMzAzMDQsMzA2NjUsMzA2NjYsMzA2NjAsMzA3MDUsMzEwMDUsMzEwMDMsMzEwMDksMzEwMDQsMzA5OTksMzEwMDYsMzEx''@;'; put 'put ''NTIsMzEzMzUsMzEzMzYsMzE3OTUsMzE4MDQsMzE4MDEsMzE3ODgsMzE4MDMsMzE5ODAsMzE5NzgsMzIzNzQsMzIzNzMsMzIzNzYsMzIzNjgsMzIzNzUsMzIzNjcsMzIzNzgsMzIzNzAsMzIzNzIsMzIzNjAsMzI1ODcsMzI1ODYsMzI2NDMsMzI2NDYsMzI2OTUsMzI3NjUsMzI3NjYsMzI4ODgs''@;'; put 'put ''MzMyMzksMzMyMzcsMzMzODAsMzMzNzcsMzMzNzksMzQyODMsMzQyODksMzQyODUsMzQyNjUsMzQyNzMsMzQyODAsMzQyNjYsMzQyNjMsMzQyODQsMzQyOTAsMzQyOTYsMzQyNjQsMzQyNzEsMzQyNzUsMzQyNjgsMzQyNTcsMzQyODgsMzQyNzgsMzQyODcsMzQyNzAsMzQyNzQsMzQ4MTYsMzQ4''@;'; put 'put ''MTAsMzQ4MTksMzQ4MDYsMzQ4MDcsMzQ4MjUsMzQ4MjgsMzQ4MjcsMzQ4MjIsMzQ4MTIsMzQ4MjQsMzQ4MTUsMzQ4MjYsMzQ4MTgsMzUxNzAsMzUxNjIsMzUxNjMsMzUxNTksMzUxNjksMzUxNjQsMzUxNjAsMzUxNjUsMzUxNjEsMzUyMDgsMzUyNTUsMzUyNTQsMzUzMTgsMzU2NjQsMzU2NTYs''@;'; put 'put ''MzU2NTgsMzU2NDgsMzU2NjcsMzU2NzAsMzU2NjgsMzU2NTksMzU2NjksMzU2NjUsMzU2NTAsMzU2NjYsMzU2NzEsMzU5MDcsMzU5NTksMzU5NTgsMzU5OTQsMzYxMDIsMzYxMDMsMzYxMDUsMzYyNjgsMzYyNjYsMzYyNjksMzYyNjcsMzY0NjEsMzY0NzIsMzY0NjcsMzY0NTgsMzY0NjMsMzY0''@;'; put 'put ''NzUsMzY1NDYsMzY2OTAsMzY2ODksMzY2ODcsMzY2ODgsMzY2OTEsMzY3ODgsMzcxODQsMzcxODMsMzcyOTYsMzcyOTMsMzc4NTQsMzc4MzEsMzc4MzksMzc4MjYsMzc4NTAsMzc4NDAsMzc4ODEsMzc4NjgsMzc4MzYsMzc4NDksMzc4MDEsMzc4NjIsMzc4MzQsMzc4NDQsMzc4NzAsMzc4NTks''@;'; put 'put ''Mzc4NDUsMzc4MjgsMzc4MzgsMzc4MjQsMzc4NDIsMzc4NjMsMzgyNjksMzgzNjIsMzgzNjMsMzg2MjUsMzg2OTcsMzg2OTksMzg3MDAsMzg2OTYsMzg2OTQsMzg4MzUsMzg4MzksMzg4MzgsMzg4NzcsMzg4NzgsMzg4NzksMzkwMDQsMzkwMDEsMzkwMDUsMzg5OTksMzkxMDMsMzkxMDEsMzkw''@;'; put 'put ''OTksMzkxMDIsMzkyNDAsMzkyMzksMzkyMzUsMzkzMzQsMzkzMzUsMzk0NTAsMzk0NDUsMzk0NjEsMzk0NTMsMzk0NjAsMzk0NTEsMzk0NTgsMzk0NTYsMzk0NjMsMzk0NTksMzk0NTQsMzk0NTIsMzk0NDQsMzk2MTgsMzk2OTEsMzk2OTAsMzk2OTQsMzk2OTIsMzk3MzUsMzk5MTQsMzk5MTUs''@;'; put 'put ''Mzk5MDQsMzk5MDIsMzk5MDgsMzk5MTAsMzk5MDYsMzk5MjAsMzk4OTIsMzk4OTUsMzk5MTYsMzk5MDAsMzk4OTcsMzk5MDksMzk4OTMsMzk5MDUsMzk4OTgsNDAzMTEsNDAzMjEsNDAzMzAsNDAzMjQsNDAzMjgsNDAzMDUsNDAzMjAsNDAzMTIsNDAzMjYsNDAzMzEsNDAzMzIsNDAzMTcsNDAy''@;'; put 'put ''OTksNDAzMDgsNDAzMDksNDAzMDQsNDAyOTcsNDAzMjUsNDAzMDcsNDAzMTUsNDAzMjIsNDAzMDMsNDAzMTMsNDAzMTksNDAzMjcsNDAyOTYsNDA1OTYsNDA1OTMsNDA2NDAsNDA3MDAsNDA3NDksNDA3NjgsNDA3NjksNDA3ODEsNDA3OTAsNDA3OTEsNDA3OTIsMjEzMDMsMjIxOTQsMjIxOTcs''@;'; put 'put ''MjIxOTUsMjI3NTUsMjMzNjUsMjQwMDYsMjQwMDcsMjQzMDIsMjQzMDMsMjQ1MTIsMjQ1MTMsMjUwODEsMjU4NzksMjU4NzgsMjU4NzcsMjU4NzUsMjYwNzksMjYzNDQsMjYzMzksMjYzNDAsMjczNzksMjczNzYsMjczNzAsMjczNjgsMjczODUsMjczNzcsMjczNzQsMjczNzUsMjg3MzIsMjg3''@;'; put 'put ''MjUsMjg3MTksMjg3MjcsMjg3MjQsMjg3MjEsMjg3MzgsMjg3MjgsMjg3MzUsMjg3MzAsMjg3MjksMjg3MzYsMjg3MzEsMjg3MjMsMjg3MzcsMjkyMDMsMjkyMDQsMjkzNTIsMjk1NjUsMjk1NjQsMjk4ODIsMzAzNzksMzAzNzgsMzAzOTgsMzA0NDUsMzA2NjgsMzA2NzAsMzA2NzEsMzA2Njks''@;'; put 'put ''MzA3MDYsMzEwMTMsMzEwMTEsMzEwMTUsMzEwMTYsMzEwMTIsMzEwMTcsMzExNTQsMzEzNDIsMzEzNDAsMzEzNDEsMzE0NzksMzE4MTcsMzE4MTYsMzE4MTgsMzE4MTUsMzE4MTMsMzE5ODIsMzIzNzksMzIzODIsMzIzODUsMzIzODQsMzI2OTgsMzI3NjcsMzI4ODksMzMyNDMsMzMyNDEsMzMy''@;'; put 'put ''OTEsMzMzODQsMzMzODUsMzQzMzgsMzQzMDMsMzQzMDUsMzQzMDIsMzQzMzEsMzQzMDQsMzQyOTQsMzQzMDgsMzQzMTMsMzQzMDksMzQzMTYsMzQzMDEsMzQ4NDEsMzQ4MzIsMzQ4MzMsMzQ4MzksMzQ4MzUsMzQ4MzgsMzUxNzEsMzUxNzQsMzUyNTcsMzUzMTksMzU2ODAsMzU2OTAsMzU2Nzcs''@;'; put 'put ''MzU2ODgsMzU2ODMsMzU2ODUsMzU2ODcsMzU2OTMsMzYyNzAsMzY0ODYsMzY0ODgsMzY0ODQsMzY2OTcsMzY2OTQsMzY2OTUsMzY2OTMsMzY2OTYsMzY2OTgsMzcwMDUsMzcxODcsMzcxODUsMzczMDMsMzczMDEsMzcyOTgsMzcyOTksMzc4OTksMzc5MDcsMzc4ODMsMzc5MjAsMzc5MDMsMzc5''@;'; put 'put ''MDgsMzc4ODYsMzc5MDksMzc5MDQsMzc5MjgsMzc5MTMsMzc5MDEsMzc4NzcsMzc4ODgsMzc4NzksMzc4OTUsMzc5MDIsMzc5MTAsMzc5MDYsMzc4ODIsMzc4OTcsMzc4ODAsMzc4OTgsMzc4ODcsMzc4ODQsMzc5MDAsMzc4NzgsMzc5MDUsMzc4OTQsMzgzNjYsMzgzNjgsMzgzNjcsMzg3MDIs''@;'; put 'put ''Mzg3MDMsMzg4NDEsMzg4NDMsMzg5MDksMzg5MTAsMzkwMDgsMzkwMTAsMzkwMTEsMzkwMDcsMzkxMDUsMzkxMDYsMzkyNDgsMzkyNDYsMzkyNTcsMzkyNDQsMzkyNDMsMzkyNTEsMzk0NzQsMzk0NzYsMzk0NzMsMzk0NjgsMzk0NjYsMzk0NzgsMzk0NjUsMzk0NzAsMzk0ODAsMzk0NjksMzk2''@;'; put 'put ''MjMsMzk2MjYsMzk2MjIsMzk2OTYsMzk2OTgsMzk2OTcsMzk5NDcsMzk5NDQsMzk5MjcsMzk5NDEsMzk5NTQsMzk5MjgsNGU0LDM5OTQzLDM5OTUwLDM5OTQyLDM5OTU5LDM5OTU2LDM5OTQ1LDQwMzUxLDQwMzQ1LDQwMzU2LDQwMzQ5LDQwMzM4LDQwMzQ0LDQwMzM2LDQwMzQ3LDQwMzUyLDQw''@;'; put 'put ''MzQwLDQwMzQ4LDQwMzYyLDQwMzQzLDQwMzUzLDQwMzQ2LDQwMzU0LDQwMzYwLDQwMzUwLDQwMzU1LDQwMzgzLDQwMzYxLDQwMzQyLDQwMzU4LDQwMzU5LDQwNjAxLDQwNjAzLDQwNjAyLDQwNjc3LDQwNjc2LDQwNjc5LDQwNjc4LDQwNzUyLDQwNzUwLDQwNzk1LDQwODAwLDQwNzk4LDQwNzk3''@;'; put 'put ''LDQwNzkzLDQwODQ5LDIwNzk0LDIwNzkzLDIxMTQ0LDIxMTQzLDIyMjExLDIyMjA1LDIyMjA2LDIzMzY4LDIzMzY3LDI0MDExLDI0MDE1LDI0MzA1LDI1MDg1LDI1ODgzLDI3Mzk0LDI3Mzg4LDI3Mzk1LDI3Mzg0LDI3MzkyLDI4NzM5LDI4NzQwLDI4NzQ2LDI4NzQ0LDI4NzQ1LDI4NzQxLDI4''@;'; put 'put ''NzQyLDI5MjEzLDI5MjEwLDI5MjA5LDI5NTY2LDI5OTc1LDMwMzE0LDMwNjcyLDMxMDIxLDMxMDI1LDMxMDIzLDMxODI4LDMxODI3LDMxOTg2LDMyMzk0LDMyMzkxLDMyMzkyLDMyMzk1LDMyMzkwLDMyMzk3LDMyNTg5LDMyNjk5LDMyODE2LDMzMjQ1LDM0MzI4LDM0MzQ2LDM0MzQyLDM0MzM1''@;'; put 'put ''LDM0MzM5LDM0MzMyLDM0MzI5LDM0MzQzLDM0MzUwLDM0MzM3LDM0MzM2LDM0MzQ1LDM0MzM0LDM0MzQxLDM0ODU3LDM0ODQ1LDM0ODQzLDM0ODQ4LDM0ODUyLDM0ODQ0LDM0ODU5LDM0ODkwLDM1MTgxLDM1MTc3LDM1MTgyLDM1MTc5LDM1MzIyLDM1NzA1LDM1NzA0LDM1NjUzLDM1NzA2LDM1''@;'; put 'put ''NzA3LDM2MTEyLDM2MTE2LDM2MjcxLDM2NDk0LDM2NDkyLDM2NzAyLDM2Njk5LDM2NzAxLDM3MTkwLDM3MTg4LDM3MTg5LDM3MzA1LDM3OTUxLDM3OTQ3LDM3OTQyLDM3OTI5LDM3OTQ5LDM3OTQ4LDM3OTM2LDM3OTQ1LDM3OTMwLDM3OTQzLDM3OTMyLDM3OTUyLDM3OTM3LDM4MzczLDM4Mzcy''@;'; put 'put ''LDM4MzcxLDM4NzA5LDM4NzE0LDM4ODQ3LDM4ODgxLDM5MDEyLDM5MTEzLDM5MTEwLDM5MTA0LDM5MjU2LDM5MjU0LDM5NDgxLDM5NDg1LDM5NDk0LDM5NDkyLDM5NDkwLDM5NDg5LDM5NDgyLDM5NDg3LDM5NjI5LDM5NzAxLDM5NzAzLDM5NzA0LDM5NzAyLDM5NzM4LDM5NzYyLDM5OTc5LDM5''@;'; put 'put ''OTY1LDM5OTY0LDM5OTgwLDM5OTcxLDM5OTc2LDM5OTc3LDM5OTcyLDM5OTY5LDQwMzc1LDQwMzc0LDQwMzgwLDQwMzg1LDQwMzkxLDQwMzk0LDQwMzk5LDQwMzgyLDQwMzg5LDQwMzg3LDQwMzc5LDQwMzczLDQwMzk4LDQwMzc3LDQwMzc4LDQwMzY0LDQwMzkyLDQwMzY5LDQwMzY1LDQwMzk2''@;'; put 'put ''LDQwMzcxLDQwMzk3LDQwMzcwLDQwNTcwLDQwNjA0LDQwNjgzLDQwNjg2LDQwNjg1LDQwNzMxLDQwNzI4LDQwNzMwLDQwNzUzLDQwNzgyLDQwODA1LDQwODA0LDQwODUwLDIwMTUzLDIyMjE0LDIyMjEzLDIyMjE5LDIyODk3LDIzMzcxLDIzMzcyLDI0MDIxLDI0MDE3LDI0MzA2LDI1ODg5LDI1''@;'; put 'put ''ODg4LDI1ODk0LDI1ODkwLDI3NDAzLDI3NDAwLDI3NDAxLDI3NjYxLDI4NzU3LDI4NzU4LDI4NzU5LDI4NzU0LDI5MjE0LDI5MjE1LDI5MzUzLDI5NTY3LDI5OTEyLDI5OTA5LDI5OTEzLDI5OTExLDMwMzE3LDMwMzgxLDMxMDI5LDMxMTU2LDMxMzQ0LDMxMzQ1LDMxODMxLDMxODM2LDMxODMz''@;'; put 'put ''LDMxODM1LDMxODM0LDMxOTg4LDMxOTg1LDMyNDAxLDMyNTkxLDMyNjQ3LDMzMjQ2LDMzMzg3LDM0MzU2LDM0MzU3LDM0MzU1LDM0MzQ4LDM0MzU0LDM0MzU4LDM0ODYwLDM0ODU2LDM0ODU0LDM0ODU4LDM0ODUzLDM1MTg1LDM1MjYzLDM1MjYyLDM1MzIzLDM1NzEwLDM1NzE2LDM1NzE0LDM1''@;'; put 'put ''NzE4LDM1NzE3LDM1NzExLDM2MTE3LDM2NTAxLDM2NTAwLDM2NTA2LDM2NDk4LDM2NDk2LDM2NTAyLDM2NTAzLDM2NzA0LDM2NzA2LDM3MTkxLDM3OTY0LDM3OTY4LDM3OTYyLDM3OTYzLDM3OTY3LDM3OTU5LDM3OTU3LDM3OTYwLDM3OTYxLDM3OTU4LDM4NzE5LDM4ODgzLDM5MDE4LDM5MDE3''@;'; put 'put ''LDM5MTE1LDM5MjUyLDM5MjU5LDM5NTAyLDM5NTA3LDM5NTA4LDM5NTAwLDM5NTAzLDM5NDk2LDM5NDk4LDM5NDk3LDM5NTA2LDM5NTA0LDM5NjMyLDM5NzA1LDM5NzIzLDM5NzM5LDM5NzY2LDM5NzY1LDQwMDA2LDQwMDA4LDM5OTk5LDQwMDA0LDM5OTkzLDM5OTg3LDQwMDAxLDM5OTk2LDM5''@;'; put 'put ''OTkxLDM5OTg4LDM5OTg2LDM5OTk3LDM5OTkwLDQwNDExLDQwNDAyLDQwNDE0LDQwNDEwLDQwMzk1LDQwNDAwLDQwNDEyLDQwNDAxLDQwNDE1LDQwNDI1LDQwNDA5LDQwNDA4LDQwNDA2LDQwNDM3LDQwNDA1LDQwNDEzLDQwNjMwLDQwNjg4LDQwNzU3LDQwNzU1LDQwNzU0LDQwNzcwLDQwODEx''@;'; put 'put ''LDQwODUzLDQwODY2LDIwNzk3LDIxMTQ1LDIyNzYwLDIyNzU5LDIyODk4LDIzMzczLDI0MDI0LDM0ODYzLDI0Mzk5LDI1MDg5LDI1MDkxLDI1MDkyLDI1ODk3LDI1ODkzLDI2MDA2LDI2MzQ3LDI3NDA5LDI3NDEwLDI3NDA3LDI3NTk0LDI4NzYzLDI4NzYyLDI5MjE4LDI5NTcwLDI5NTY5LDI5''@;'; put 'put ''NTcxLDMwMzIwLDMwNjc2LDMxODQ3LDMxODQ2LDMyNDA1LDMzMzg4LDM0MzYyLDM0MzY4LDM0MzYxLDM0MzY0LDM0MzUzLDM0MzYzLDM0MzY2LDM0ODY0LDM0ODY2LDM0ODYyLDM0ODY3LDM1MTkwLDM1MTg4LDM1MTg3LDM1MzI2LDM1NzI0LDM1NzI2LDM1NzIzLDM1NzIwLDM1OTA5LDM2MTIx''@;'; put 'put ''LDM2NTA0LDM2NzA4LDM2NzA3LDM3MzA4LDM3OTg2LDM3OTczLDM3OTgxLDM3OTc1LDM3OTgyLDM4ODUyLDM4ODUzLDM4OTEyLDM5NTEwLDM5NTEzLDM5NzEwLDM5NzExLDM5NzEyLDQwMDE4LDQwMDI0LDQwMDE2LDQwMDEwLDQwMDEzLDQwMDExLDQwMDIxLDQwMDI1LDQwMDEyLDQwMDE0LDQw''@;'; put 'put ''NDQzLDQwNDM5LDQwNDMxLDQwNDE5LDQwNDI3LDQwNDQwLDQwNDIwLDQwNDM4LDQwNDE3LDQwNDMwLDQwNDIyLDQwNDM0LDQwNDMyLDQwNDE4LDQwNDI4LDQwNDM2LDQwNDM1LDQwNDI0LDQwNDI5LDQwNjQyLDQwNjU2LDQwNjkwLDQwNjkxLDQwNzEwLDQwNzMyLDQwNzYwLDQwNzU5LDQwNzU4''@;'; put 'put ''LDQwNzcxLDQwNzgzLDQwODE3LDQwODE2LDQwODE0LDQwODE1LDIyMjI3LDIyMjIxLDIzMzc0LDIzNjYxLDI1OTAxLDI2MzQ5LDI2MzUwLDI3NDExLDI4NzY3LDI4NzY5LDI4NzY1LDI4NzY4LDI5MjE5LDI5OTE1LDI5OTI1LDMwNjc3LDMxMDMyLDMxMTU5LDMxMTU4LDMxODUwLDMyNDA3LDMy''@;'; put 'put ''NjQ5LDMzMzg5LDM0MzcxLDM0ODcyLDM0ODcxLDM0ODY5LDM0ODkxLDM1NzMyLDM1NzMzLDM2NTEwLDM2NTExLDM2NTEyLDM2NTA5LDM3MzEwLDM3MzA5LDM3MzE0LDM3OTk1LDM3OTkyLDM3OTkzLDM4NjI5LDM4NzI2LDM4NzIzLDM4NzI3LDM4ODU1LDM4ODg1LDM5NTE4LDM5NjM3LDM5NzY5''@;'; put 'put ''LDQwMDM1LDQwMDM5LDQwMDM4LDQwMDM0LDQwMDMwLDQwMDMyLDQwNDUwLDQwNDQ2LDQwNDU1LDQwNDUxLDQwNDU0LDQwNDUzLDQwNDQ4LDQwNDQ5LDQwNDU3LDQwNDQ3LDQwNDQ1LDQwNDUyLDQwNjA4LDQwNzM0LDQwNzc0LDQwODIwLDQwODIxLDQwODIyLDIyMjI4LDI1OTAyLDI2MDQwLDI3''@;'; put 'put ''NDE2LDI3NDE3LDI3NDE1LDI3NDE4LDI4NzcwLDI5MjIyLDI5MzU0LDMwNjgwLDMwNjgxLDMxMDMzLDMxODQ5LDMxODUxLDMxOTkwLDMyNDEwLDMyNDA4LDMyNDExLDMyNDA5LDMzMjQ4LDMzMjQ5LDM0Mzc0LDM0Mzc1LDM0Mzc2LDM1MTkzLDM1MTk0LDM1MTk2LDM1MTk1LDM1MzI3LDM1NzM2''@;'; put 'put ''LDM1NzM3LDM2NTE3LDM2NTE2LDM2NTE1LDM3OTk4LDM3OTk3LDM3OTk5LDM4MDAxLDM4MDAzLDM4NzI5LDM5MDI2LDM5MjYzLDQwMDQwLDQwMDQ2LDQwMDQ1LDQwNDU5LDQwNDYxLDQwNDY0LDQwNDYzLDQwNDY2LDQwNDY1LDQwNjA5LDQwNjkzLDQwNzEzLDQwNzc1LDQwODI0LDQwODI3LDQw''@;'; put 'put ''ODI2LDQwODI1LDIyMzAyLDI4Nzc0LDMxODU1LDM0ODc2LDM2Mjc0LDM2NTE4LDM3MzE1LDM4MDA0LDM4MDA4LDM4MDA2LDM4MDA1LDM5NTIwLDQwMDUyLDQwMDUxLDQwMDQ5LDQwMDUzLDQwNDY4LDQwNDY3LDQwNjk0LDQwNzE0LDQwODY4LDI4Nzc2LDI4NzczLDMxOTkxLDM0NDEwLDM0ODc4''@;'; put 'put ''LDM0ODc3LDM0ODc5LDM1NzQyLDM1OTk2LDM2NTIxLDM2NTUzLDM4NzMxLDM5MDI3LDM5MDI4LDM5MTE2LDM5MjY1LDM5MzM5LDM5NTI0LDM5NTI2LDM5NTI3LDM5NzE2LDQwNDY5LDQwNDcxLDQwNzc2LDI1MDk1LDI3NDIyLDI5MjIzLDM0MzgwLDM2NTIwLDM4MDE4LDM4MDE2LDM4MDE3LDM5''@;'; put 'put ''NTI5LDM5NTI4LDM5NzI2LDQwNDczLDI5MjI1LDM0Mzc5LDM1NzQzLDM4MDE5LDQwMDU3LDQwNjMxLDMwMzI1LDM5NTMxLDQwMDU4LDQwNDc3LDI4Nzc3LDI4Nzc4LDQwNjEyLDQwODMwLDQwNzc3LDQwODU2LDMwODQ5LDM3NTYxLDM1MDIzLDIyNzE1LDI0NjU4LDMxOTExLDIzMjkwLDk1NTYs''@;'; put 'put ''OTU3NCw5NTU5LDk1NjgsOTU4MCw5NTcxLDk1NjIsOTU3Nyw5NTY1LDk1NTQsOTU3Miw5NTU3LDk1NjYsOTU3OCw5NTY5LDk1NjAsOTU3NSw5NTYzLDk1NTUsOTU3Myw5NTU4LDk1NjcsOTU3OSw5NTcwLDk1NjEsOTU3Niw5NTY0LDk1NTMsOTU1Miw5NTgxLDk1ODIsOTU4NCw5NTgzLDY1NTE3''@;'; put 'put ''LDEzMjQyMywzNzU5NSwxMzI1NzUsMTQ3Mzk3LDM0MTI0LDE3MDc3LDI5Njc5LDIwOTE3LDEzODk3LDE0OTgyNiwxNjYzNzIsMzc3MDAsMTM3NjkxLDMzNTE4LDE0NjYzMiwzMDc4MCwyNjQzNiwyNTMxMSwxNDk4MTEsMTY2MzE0LDEzMTc0NCwxNTg2NDMsMTM1OTQxLDIwMzk1LDE0MDUyNSwy''@;'; put 'put ''MDQ4OCwxNTkwMTcsMTYyNDM2LDE0NDg5NiwxNTAxOTMsMTQwNTYzLDIwNTIxLDEzMTk2NiwyNDQ4NCwxMzE5NjgsMTMxOTExLDI4Mzc5LDEzMjEyNywyMDYwNSwyMDczNywxMzQzNCwyMDc1MCwzOTAyMCwxNDE0NywzMzgxNCwxNDk5MjQsMTMyMjMxLDIwODMyLDE0NDMwOCwyMDg0MiwxMzQx''@;'; put 'put ''NDMsMTM5NTE2LDEzMTgxMywxNDA1OTIsMTMyNDk0LDE0MzkyMywxMzc2MDMsMjM0MjYsMzQ2ODUsMTMyNTMxLDE0NjU4NSwyMDkxNCwyMDkyMCw0MDI0NCwyMDkzNywyMDk0MywyMDk0NSwxNTU4MCwyMDk0NywxNTAxODIsMjA5MTUsMjA5NjIsMjEzMTQsMjA5NzMsMzM3NDEsMjY5NDIsMTQ1''@;'; put 'put ''MTk3LDI0NDQzLDIxMDAzLDIxMDMwLDIxMDUyLDIxMTczLDIxMDc5LDIxMTQwLDIxMTc3LDIxMTg5LDMxNzY1LDM0MTE0LDIxMjE2LDM0MzE3LDE1ODQ4MywyMTI1MywxNjY2MjIsMjE4MzMsMjgzNzcsMTQ3MzI4LDEzMzQ2MCwxNDc0MzYsMjEyOTksMjEzMTYsMTM0MTE0LDI3ODUxLDEzNjk5''@;'; put 'put ''OCwyNjY1MSwyOTY1MywyNDY1MCwxNjA0MiwxNDU0MCwxMzY5MzYsMjkxNDksMTc1NzAsMjEzNTcsMjEzNjQsMTY1NTQ3LDIxMzc0LDIxMzc1LDEzNjU5OCwxMzY3MjMsMzA2OTQsMjEzOTUsMTY2NTU1LDIxNDA4LDIxNDE5LDIxNDIyLDI5NjA3LDE1MzQ1OCwxNjIxNywyOTU5NiwyMTQ0MSwy''@;'; put 'put ''MTQ0NSwyNzcyMSwyMDA0MSwyMjUyNiwyMTQ2NSwxNTAxOSwxMzQwMzEsMjE0NzIsMTQ3NDM1LDE0Mjc1NSwyMTQ5NCwxMzQyNjMsMjE1MjMsMjg3OTMsMjE4MDMsMjYxOTksMjc5OTUsMjE2MTMsMTU4NTQ3LDEzNDUxNiwyMTg1MywyMTY0NywyMTY2OCwxODM0MiwxMzY5NzMsMTM0ODc3LDE1''@;'; put 'put ''Nzk2LDEzNDQ3NywxNjYzMzIsMTQwOTUyLDIxODMxLDE5NjkzLDIxNTUxLDI5NzE5LDIxODk0LDIxOTI5LDIyMDIxLDEzNzQzMSwxNDc1MTQsMTc3NDYsMTQ4NTMzLDI2MjkxLDEzNTM0OCwyMjA3MSwyNjMxNywxNDQwMTAsMjYyNzYsMjYyODUsMjIwOTMsMjIwOTUsMzA5NjEsMjIyNTcsMzg3''@;'; put 'put ''OTEsMjE1MDIsMjIyNzIsMjIyNTUsMjIyNTMsMTY2NzU4LDEzODU5LDEzNTc1OSwyMjM0MiwxNDc4NzcsMjc3NTgsMjg4MTEsMjIzMzgsMTQwMDEsMTU4ODQ2LDIyNTAyLDEzNjIxNCwyMjUzMSwxMzYyNzYsMTQ4MzIzLDIyNTY2LDE1MDUxNywyMjYyMCwyMjY5OCwxMzY2NSwyMjc1MiwyMjc0''@;'; put 'put ''OCwxMzU3NDAsMjI3NzksMjM1NTEsMjIzMzksMTcyMzY4LDE0ODA4OCwzNzg0MywxMzcyOSwyMjgxNSwyNjc5MCwxNDAxOSwyODI0OSwxMzY3NjYsMjMwNzYsMjE4NDMsMTM2ODUwLDM0MDUzLDIyOTg1LDEzNDQ3OCwxNTg4NDksMTU5MDE4LDEzNzE4MCwyMzAwMSwxMzcyMTEsMTM3MTM4LDE1''@;'; put 'put ''OTE0MiwyODAxNywxMzcyNTYsMTM2OTE3LDIzMDMzLDE1OTMwMSwyMzIxMSwyMzEzOSwxNDA1NCwxNDk5MjksMjMxNTksMTQwODgsMjMxOTAsMjk3OTcsMjMyNTEsMTU5NjQ5LDE0MDYyOCwxNTc0OSwxMzc0ODksMTQxMzAsMTM2ODg4LDI0MTk1LDIxMjAwLDIzNDE0LDI1OTkyLDIzNDIwLDE2''@;'; put 'put ''MjMxOCwxNjM4OCwxODUyNSwxMzE1ODgsMjM1MDksMjQ5MjgsMTM3NzgwLDE1NDA2MCwxMzI1MTcsMjM1MzksMjM0NTMsMTk3MjgsMjM1NTcsMTM4MDUyLDIzNTcxLDI5NjQ2LDIzNTcyLDEzODQwNSwxNTg1MDQsMjM2MjUsMTg2NTMsMjM2ODUsMjM3ODUsMjM3OTEsMjM5NDcsMTM4NzQ1LDEz''@;'; put 'put ''ODgwNywyMzgyNCwyMzgzMiwyMzg3OCwxMzg5MTYsMjM3MzgsMjQwMjMsMzM1MzIsMTQzODEsMTQ5NzYxLDEzOTMzNywxMzk2MzUsMzM0MTUsMTQzOTAsMTUyOTgsMjQxMTAsMjcyNzQsMjQxODEsMjQxODYsMTQ4NjY4LDEzNDM1NSwyMTQxNCwyMDE1MSwyNDI3MiwyMTQxNiwxMzcwNzMsMjQw''@;'; put 'put ''NzMsMjQzMDgsMTY0OTk0LDI0MzEzLDI0MzE1LDE0NDk2LDI0MzE2LDI2Njg2LDM3OTE1LDI0MzMzLDEzMTUyMSwxOTQ3MDgsMTUwNzAsMTg2MDYsMTM1OTk0LDI0Mzc4LDE1NzgzMiwxNDAyNDAsMjQ0MDgsMTQwNDAxLDI0NDE5LDM4ODQ1LDE1OTM0MiwyNDQzNCwzNzY5NiwxNjY0NTQsMjQ0''@;'; put 'put ''ODcsMjM5OTAsMTU3MTEsMTUyMTQ0LDEzOTExNCwxNTk5OTIsMTQwOTA0LDM3MzM0LDEzMTc0MiwxNjY0NDEsMjQ2MjUsMjYyNDUsMTM3MzM1LDE0NjkxLDE1ODE1LDEzODgxLDIyNDE2LDE0MTIzNiwzMTA4OSwxNTkzNiwyNDczNCwyNDc0MCwyNDc1NSwxNDk4OTAsMTQ5OTAzLDE2MjM4Nywy''@;'; put 'put ''OTg2MCwyMDcwNSwyMzIwMCwyNDkzMiwzMzgyOCwyNDg5OCwxOTQ3MjYsMTU5NDQyLDI0OTYxLDIwOTgwLDEzMjY5NCwyNDk2NywyMzQ2NiwxNDczODMsMTQxNDA3LDI1MDQzLDE2NjgxMywxNzAzMzMsMjUwNDAsMTQ2NDIsMTQxNjk2LDE0MTUwNSwyNDYxMSwyNDkyNCwyNTg4NiwyNTQ4Mywx''@;'; put 'put ''MzEzNTIsMjUyODUsMTM3MDcyLDI1MzAxLDE0Mjg2MSwyNTQ1MiwxNDk5ODMsMTQ4NzEsMjU2NTYsMjU1OTIsMTM2MDc4LDEzNzIxMiwyNTc0NCwyODU1NCwxNDI5MDIsMzg5MzIsMTQ3NTk2LDE1MzM3MywyNTgyNSwyNTgyOSwzODAxMSwxNDk1MCwyNTY1OCwxNDkzNSwyNTkzMywyODQzOCwx''@;'; put 'put ''NTAwNTYsMTUwMDUxLDI1OTg5LDI1OTY1LDI1OTUxLDE0MzQ4NiwyNjAzNywxNDk4MjQsMTkyNTUsMjYwNjUsMTY2MDAsMTM3MjU3LDI2MDgwLDI2MDgzLDI0NTQzLDE0NDM4NCwyNjEzNiwxNDM4NjMsMTQzODY0LDI2MTgwLDE0Mzc4MCwxNDM3ODEsMjYxODcsMTM0NzczLDI2MjE1LDE1MjAz''@;'; put 'put ''OCwyNjIyNywyNjIyOCwxMzg4MTMsMTQzOTIxLDE2NTM2NCwxNDM4MTYsMTUyMzM5LDMwNjYxLDE0MTU1OSwzOTMzMiwyNjM3MCwxNDgzODAsMTUwMDQ5LDE1MTQ3LDI3MTMwLDE0NTM0NiwyNjQ2MiwyNjQ3MSwyNjQ2NiwxNDc5MTcsMTY4MTczLDI2NTgzLDE3NjQxLDI2NjU4LDI4MjQwLDM3''@;'; put 'put ''NDM2LDI2NjI1LDE0NDM1OCwxNTkxMzYsMjY3MTcsMTQ0NDk1LDI3MTA1LDI3MTQ3LDE2NjYyMywyNjk5NSwyNjgxOSwxNDQ4NDUsMjY4ODEsMjY4ODAsMTU2NjYsMTQ4NDksMTQ0OTU2LDE1MjMyLDI2NTQwLDI2OTc3LDE2NjQ3NCwxNzE0OCwyNjkzNCwyNzAzMiwxNTI2NSwxMzIwNDEsMzM2''@;'; put 'put ''MzUsMjA2MjQsMjcxMjksMTQ0OTg1LDEzOTU2MiwyNzIwNSwxNDUxNTUsMjcyOTMsMTUzNDcsMjY1NDUsMjczMzYsMTY4MzQ4LDE1MzczLDI3NDIxLDEzMzQxMSwyNDc5OCwyNzQ0NSwyNzUwOCwxNDEyNjEsMjgzNDEsMTQ2MTM5LDEzMjAyMSwxMzc1NjAsMTQxNDQsMjE1MzcsMTQ2MjY2LDI3''@;'; put 'put ''NjE3LDE0NzE5NiwyNzYxMiwyNzcwMywxNDA0MjcsMTQ5NzQ1LDE1ODU0NSwyNzczOCwzMzMxOCwyNzc2OSwxNDY4NzYsMTc2MDUsMTQ2ODc3LDE0Nzg3NiwxNDk3NzIsMTQ5NzYwLDE0NjYzMywxNDA1MywxNTU5NSwxMzQ0NTAsMzk4MTEsMTQzODY1LDE0MDQzMywzMjY1NSwyNjY3OSwxNTkw''@;'; put 'put ''MTMsMTU5MTM3LDE1OTIxMSwyODA1NCwyNzk5NiwyODI4NCwyODQyMCwxNDk4ODcsMTQ3NTg5LDE1OTM0NiwzNDA5OSwxNTk2MDQsMjA5MzUsMjc4MDQsMjgxODksMzM4MzgsMTY2Njg5LDI4MjA3LDE0Njk5MSwyOTc3OSwxNDczMzAsMzExODAsMjgyMzksMjMxODUsMTQzNDM1LDI4NjY0LDE0''@;'; put 'put ''MDkzLDI4NTczLDE0Njk5MiwyODQxMCwxMzYzNDMsMTQ3NTE3LDE3NzQ5LDM3ODcyLDI4NDg0LDI4NTA4LDE1Njk0LDI4NTMyLDE2ODMwNCwxNTY3NSwyODU3NSwxNDc3ODAsMjg2MjcsMTQ3NjAxLDE0Nzc5NywxNDc1MTMsMTQ3NDQwLDE0NzM4MCwxNDc3NzUsMjA5NTksMTQ3Nzk4LDE0Nzc5''@;'; put 'put ''OSwxNDc3NzYsMTU2MTI1LDI4NzQ3LDI4Nzk4LDI4ODM5LDI4ODAxLDI4ODc2LDI4ODg1LDI4ODg2LDI4ODk1LDE2NjQ0LDE1ODQ4LDI5MTA4LDI5MDc4LDE0ODA4NywyODk3MSwyODk5NywyMzE3NiwyOTAwMiwyOTAzOCwyMzcwOCwxNDgzMjUsMjkwMDcsMzc3MzAsMTQ4MTYxLDI4OTcyLDE0''@;'; put 'put ''ODU3MCwxNTAwNTUsMTUwMDUwLDI5MTE0LDE2Njg4OCwyODg2MSwyOTE5OCwzNzk1NCwyOTIwNSwyMjgwMSwzNzk1NSwyOTIyMCwzNzY5NywxNTMwOTMsMjkyMzAsMjkyNDgsMTQ5ODc2LDI2ODEzLDI5MjY5LDI5MjcxLDE1OTU3LDE0MzQyOCwyNjYzNywyODQ3NywyOTMxNCwyOTQ4MiwyOTQ4''@;'; put 'put ''MywxNDk1MzksMTY1OTMxLDE4NjY5LDE2NTg5MiwyOTQ4MCwyOTQ4NiwyOTY0NywyOTYxMCwxMzQyMDIsMTU4MjU0LDI5NjQxLDI5NzY5LDE0NzkzOCwxMzY5MzUsMTUwMDUyLDI2MTQ3LDE0MDIxLDE0OTk0MywxNDk5MDEsMTUwMDExLDI5Njg3LDI5NzE3LDI2ODgzLDE1MDA1NCwyOTc1Mywx''@;'; put 'put ''MzI1NDcsMTYwODcsMjk3ODgsMTQxNDg1LDI5NzkyLDE2NzYwMiwyOTc2NywyOTY2OCwyOTgxNCwzMzcyMSwyOTgwNCwxNDEyOCwyOTgxMiwzNzg3MywyNzE4MCwyOTgyNiwxODc3MSwxNTAxNTYsMTQ3ODA3LDE1MDEzNywxNjY3OTksMjMzNjYsMTY2OTE1LDEzNzM3NCwyOTg5NiwxMzc2MDgs''@;'; put 'put ''Mjk5NjYsMjk5MjksMjk5ODIsMTY3NjQxLDEzNzgwMywyMzUxMSwxNjc1OTYsMzc3NjUsMzAwMjksMzAwMjYsMzAwNTUsMzAwNjIsMTUxNDI2LDE2MTMyLDE1MDgwMywzMDA5NCwyOTc4OSwzMDExMCwzMDEzMiwzMDIxMCwzMDI1MiwzMDI4OSwzMDI4NywzMDMxOSwzMDMyNiwxNTY2NjEsMzAz''@;'; put 'put ''NTIsMzMyNjMsMTQzMjgsMTU3OTY5LDE1Nzk2NiwzMDM2OSwzMDM3MywzMDM5MSwzMDQxMiwxNTk2NDcsMzM4OTAsMTUxNzA5LDE1MTkzMywxMzg3ODAsMzA0OTQsMzA1MDIsMzA1MjgsMjU3NzUsMTUyMDk2LDMwNTUyLDE0NDA0NCwzMDYzOSwxNjYyNDQsMTY2MjQ4LDEzNjg5NywzMDcwOCwz''@;'; put 'put ''MDcyOSwxMzYwNTQsMTUwMDM0LDI2ODI2LDMwODk1LDMwOTE5LDMwOTMxLDM4NTY1LDMxMDIyLDE1MzA1NiwzMDkzNSwzMTAyOCwzMDg5NywxNjEyOTIsMzY3OTIsMzQ5NDgsMTY2Njk5LDE1NTc3OSwxNDA4MjgsMzExMTAsMzUwNzIsMjY4ODIsMzExMDQsMTUzNjg3LDMxMTMzLDE2MjYxNywz''@;'; put 'put ''MTAzNiwzMTE0NSwyODIwMiwxNjAwMzgsMTYwNDAsMzExNzQsMTY4MjA1LDMxMTg4XSwiZXVjLWtyIjpbNDQwMzQsNDQwMzUsNDQwMzcsNDQwMzgsNDQwNDMsNDQwNDQsNDQwNDUsNDQwNDYsNDQwNDcsNDQwNTYsNDQwNjIsNDQwNjMsNDQwNjUsNDQwNjYsNDQwNjcsNDQwNjksNDQwNzAsNDQw''@;'; put 'put ''NzEsNDQwNzIsNDQwNzMsNDQwNzQsNDQwNzUsNDQwNzgsNDQwODIsNDQwODMsNDQwODQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQwODUsNDQwODYsNDQwODcsNDQwOTAsNDQwOTEsNDQwOTMsNDQwOTQsNDQwOTUsNDQwOTcsNDQwOTgsNDQwOTksNDQxMDAsNDQxMDEsNDQxMDIs''@;'; put 'put ''NDQxMDMsNDQxMDQsNDQxMDUsNDQxMDYsNDQxMDgsNDQxMTAsNDQxMTEsNDQxMTIsNDQxMTMsNDQxMTQsNDQxMTUsNDQxMTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQxMTgsNDQxMTksNDQxMjEsNDQxMjIsNDQxMjMsNDQxMjUsNDQxMjYsNDQxMjcsNDQxMjgsNDQxMjksNDQx''@;'; put 'put ''MzAsNDQxMzEsNDQxMzIsNDQxMzMsNDQxMzQsNDQxMzUsNDQxMzYsNDQxMzcsNDQxMzgsNDQxMzksNDQxNDAsNDQxNDEsNDQxNDIsNDQxNDMsNDQxNDYsNDQxNDcsNDQxNDksNDQxNTAsNDQxNTMsNDQxNTUsNDQxNTYsNDQxNTcsNDQxNTgsNDQxNTksNDQxNjIsNDQxNjcsNDQxNjgsNDQxNzMs''@;'; put 'put ''NDQxNzQsNDQxNzUsNDQxNzcsNDQxNzgsNDQxNzksNDQxODEsNDQxODIsNDQxODMsNDQxODQsNDQxODUsNDQxODYsNDQxODcsNDQxOTAsNDQxOTQsNDQxOTUsNDQxOTYsNDQxOTcsNDQxOTgsNDQxOTksNDQyMDMsNDQyMDUsNDQyMDYsNDQyMDksNDQyMTAsNDQyMTEsNDQyMTIsNDQyMTMsNDQy''@;'; put 'put ''MTQsNDQyMTUsNDQyMTgsNDQyMjIsNDQyMjMsNDQyMjQsNDQyMjYsNDQyMjcsNDQyMjksNDQyMzAsNDQyMzEsNDQyMzMsNDQyMzQsNDQyMzUsNDQyMzcsNDQyMzgsNDQyMzksNDQyNDAsNDQyNDEsNDQyNDIsNDQyNDMsNDQyNDQsNDQyNDYsNDQyNDgsNDQyNDksNDQyNTAsNDQyNTEsNDQyNTIs''@;'; put 'put ''NDQyNTMsNDQyNTQsNDQyNTUsNDQyNTgsNDQyNTksNDQyNjEsNDQyNjIsNDQyNjUsNDQyNjcsNDQyNjksNDQyNzAsNDQyNzQsNDQyNzYsNDQyNzksNDQyODAsNDQyODEsNDQyODIsNDQyODMsNDQyODYsNDQyODcsNDQyODksNDQyOTAsNDQyOTEsNDQyOTMsNDQyOTUsNDQyOTYsNDQyOTcsNDQy''@;'; put 'put ''OTgsNDQyOTksNDQzMDIsNDQzMDQsNDQzMDYsNDQzMDcsNDQzMDgsNDQzMDksNDQzMTAsNDQzMTEsNDQzMTMsNDQzMTQsNDQzMTUsNDQzMTcsNDQzMTgsNDQzMTksNDQzMjEsNDQzMjIsNDQzMjMsNDQzMjQsNDQzMjUsNDQzMjYsNDQzMjcsNDQzMjgsNDQzMzAsNDQzMzEsNDQzMzQsNDQzMzUs''@;'; put 'put ''NDQzMzYsNDQzMzcsNDQzMzgsNDQzMzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQzNDIsNDQzNDMsNDQzNDUsNDQzNDYsNDQzNDcsNDQzNDksNDQzNTAsNDQzNTEsNDQzNTIsNDQzNTMsNDQzNTQsNDQzNTUsNDQzNTgsNDQzNjAsNDQzNjIsNDQzNjMsNDQzNjQsNDQzNjUsNDQz''@;'; put 'put ''NjYsNDQzNjcsNDQzNjksNDQzNzAsNDQzNzEsNDQzNzMsNDQzNzQsNDQzNzUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQzNzcsNDQzNzgsNDQzNzksNDQzODAsNDQzODEsNDQzODIsNDQzODMsNDQzODQsNDQzODYsNDQzODgsNDQzODksNDQzOTAsNDQzOTEsNDQzOTIsNDQzOTMs''@;'; put 'put ''NDQzOTQsNDQzOTUsNDQzOTgsNDQzOTksNDQ0MDEsNDQ0MDIsNDQ0MDcsNDQ0MDgsNDQ0MDksNDQ0MTAsNDQ0MTQsNDQ0MTYsNDQ0MTksNDQ0MjAsNDQ0MjEsNDQ0MjIsNDQ0MjMsNDQ0MjYsNDQ0MjcsNDQ0MjksNDQ0MzAsNDQ0MzEsNDQ0MzMsNDQ0MzQsNDQ0MzUsNDQ0MzYsNDQ0MzcsNDQ0''@;'; put 'put ''MzgsNDQ0MzksNDQ0NDAsNDQ0NDEsNDQ0NDIsNDQ0NDMsNDQ0NDYsNDQ0NDcsNDQ0NDgsNDQ0NDksNDQ0NTAsNDQ0NTEsNDQ0NTMsNDQ0NTQsNDQ0NTUsNDQ0NTYsNDQ0NTcsNDQ0NTgsNDQ0NTksNDQ0NjAsNDQ0NjEsNDQ0NjIsNDQ0NjMsNDQ0NjQsNDQ0NjUsNDQ0NjYsNDQ0NjcsNDQ0Njgs''@;'; put 'put ''NDQ0NjksNDQ0NzAsNDQ0NzIsNDQ0NzMsNDQ0NzQsNDQ0NzUsNDQ0NzYsNDQ0NzcsNDQ0NzgsNDQ0NzksNDQ0ODIsNDQ0ODMsNDQ0ODUsNDQ0ODYsNDQ0ODcsNDQ0ODksNDQ0OTAsNDQ0OTEsNDQ0OTIsNDQ0OTMsNDQ0OTQsNDQ0OTUsNDQ0OTgsNDQ1MDAsNDQ1MDEsNDQ1MDIsNDQ1MDMsNDQ1''@;'; put 'put ''MDQsNDQ1MDUsNDQ1MDYsNDQ1MDcsNDQ1MDksNDQ1MTAsNDQ1MTEsNDQ1MTMsNDQ1MTQsNDQ1MTUsNDQ1MTcsNDQ1MTgsNDQ1MTksNDQ1MjAsNDQ1MjEsNDQ1MjIsNDQ1MjMsNDQ1MjQsNDQ1MjUsNDQ1MjYsNDQ1MjcsNDQ1MjgsNDQ1MjksNDQ1MzAsNDQ1MzEsNDQ1MzIsNDQ1MzMsNDQ1MzQs''@;'; put 'put ''NDQ1MzUsNDQ1MzgsNDQ1MzksNDQ1NDEsNDQ1NDIsNDQ1NDYsNDQ1NDcsNDQ1NDgsNDQ1NDksNDQ1NTAsNDQ1NTEsNDQ1NTQsNDQ1NTYsNDQ1NTgsNDQ1NTksNDQ1NjAsNDQ1NjEsNDQ1NjIsNDQ1NjMsNDQ1NjUsNDQ1NjYsNDQ1NjcsNDQ1NjgsNDQ1NjksNDQ1NzAsNDQ1NzEsNDQ1NzIsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ1NzMsNDQ1NzQsNDQ1NzUsNDQ1NzYsNDQ1NzcsNDQ1NzgsNDQ1NzksNDQ1ODAsNDQ1ODEsNDQ1ODIsNDQ1ODMsNDQ1ODQsNDQ1ODUsNDQ1ODYsNDQ1ODcsNDQ1ODgsNDQ1ODksNDQ1OTAsNDQ1OTEsNDQ1OTQsNDQ1OTUsNDQ1OTcsNDQ1OTgs''@;'; put 'put ''NDQ2MDEsNDQ2MDMsNDQ2MDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ2MDUsNDQ2MDYsNDQ2MDcsNDQ2MTAsNDQ2MTIsNDQ2MTUsNDQ2MTYsNDQ2MTcsNDQ2MTksNDQ2MjMsNDQ2MjUsNDQ2MjYsNDQ2MjcsNDQ2MjksNDQ2MzEsNDQ2MzIsNDQ2MzMsNDQ2MzQsNDQ2MzUsNDQ2''@;'; put 'put ''MzgsNDQ2NDIsNDQ2NDMsNDQ2NDQsNDQ2NDYsNDQ2NDcsNDQ2NTAsNDQ2NTEsNDQ2NTMsNDQ2NTQsNDQ2NTUsNDQ2NTcsNDQ2NTgsNDQ2NTksNDQ2NjAsNDQ2NjEsNDQ2NjIsNDQ2NjMsNDQ2NjYsNDQ2NzAsNDQ2NzEsNDQ2NzIsNDQ2NzMsNDQ2NzQsNDQ2NzUsNDQ2NzgsNDQ2NzksNDQ2ODAs''@;'; put 'put ''NDQ2ODEsNDQ2ODIsNDQ2ODMsNDQ2ODUsNDQ2ODYsNDQ2ODcsNDQ2ODgsNDQ2ODksNDQ2OTAsNDQ2OTEsNDQ2OTIsNDQ2OTMsNDQ2OTQsNDQ2OTUsNDQ2OTYsNDQ2OTcsNDQ2OTgsNDQ2OTksNDQ3MDAsNDQ3MDEsNDQ3MDIsNDQ3MDMsNDQ3MDQsNDQ3MDUsNDQ3MDYsNDQ3MDcsNDQ3MDgsNDQ3''@;'; put 'put ''MDksNDQ3MTAsNDQ3MTEsNDQ3MTIsNDQ3MTMsNDQ3MTQsNDQ3MTUsNDQ3MTYsNDQ3MTcsNDQ3MTgsNDQ3MTksNDQ3MjAsNDQ3MjEsNDQ3MjIsNDQ3MjMsNDQ3MjQsNDQ3MjUsNDQ3MjYsNDQ3MjcsNDQ3MjgsNDQ3MjksNDQ3MzAsNDQ3MzEsNDQ3MzUsNDQ3MzcsNDQ3MzgsNDQ3MzksNDQ3NDEs''@;'; put 'put ''NDQ3NDIsNDQ3NDMsNDQ3NDQsNDQ3NDUsNDQ3NDYsNDQ3NDcsNDQ3NTAsNDQ3NTQsNDQ3NTUsNDQ3NTYsNDQ3NTcsNDQ3NTgsNDQ3NTksNDQ3NjIsNDQ3NjMsNDQ3NjUsNDQ3NjYsNDQ3NjcsNDQ3NjgsNDQ3NjksNDQ3NzAsNDQ3NzEsNDQ3NzIsNDQ3NzMsNDQ3NzQsNDQ3NzUsNDQ3NzcsNDQ3''@;'; put 'put ''NzgsNDQ3ODAsNDQ3ODIsNDQ3ODMsNDQ3ODQsNDQ3ODUsNDQ3ODYsNDQ3ODcsNDQ3ODksNDQ3OTAsNDQ3OTEsNDQ3OTMsNDQ3OTQsNDQ3OTUsNDQ3OTcsNDQ3OTgsNDQ3OTksNDQ4MDAsNDQ4MDEsNDQ4MDIsNDQ4MDMsNDQ4MDQsNDQ4MDUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''NDQ4MDYsNDQ4MDksNDQ4MTAsNDQ4MTEsNDQ4MTIsNDQ4MTQsNDQ4MTUsNDQ4MTcsNDQ4MTgsNDQ4MTksNDQ4MjAsNDQ4MjEsNDQ4MjIsNDQ4MjMsNDQ4MjQsNDQ4MjUsNDQ4MjYsNDQ4MjcsNDQ4MjgsNDQ4MjksNDQ4MzAsNDQ4MzEsNDQ4MzIsNDQ4MzMsNDQ4MzQsNDQ4MzUsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsNDQ4MzYsNDQ4MzcsNDQ4MzgsNDQ4MzksNDQ4NDAsNDQ4NDEsNDQ4NDIsNDQ4NDMsNDQ4NDYsNDQ4NDcsNDQ4NDksNDQ4NTEsNDQ4NTMsNDQ4NTQsNDQ4NTUsNDQ4NTYsNDQ4NTcsNDQ4NTgsNDQ4NTksNDQ4NjIsNDQ4NjQsNDQ4NjgsNDQ4NjksNDQ4NzAs''@;'; put 'put ''NDQ4NzEsNDQ4NzQsNDQ4NzUsNDQ4NzYsNDQ4NzcsNDQ4NzgsNDQ4NzksNDQ4ODEsNDQ4ODIsNDQ4ODMsNDQ4ODQsNDQ4ODUsNDQ4ODYsNDQ4ODcsNDQ4ODgsNDQ4ODksNDQ4OTAsNDQ4OTEsNDQ4OTQsNDQ4OTUsNDQ4OTYsNDQ4OTcsNDQ4OTgsNDQ4OTksNDQ5MDIsNDQ5MDMsNDQ5MDQsNDQ5''@;'; put 'put ''MDUsNDQ5MDYsNDQ5MDcsNDQ5MDgsNDQ5MDksNDQ5MTAsNDQ5MTEsNDQ5MTIsNDQ5MTMsNDQ5MTQsNDQ5MTUsNDQ5MTYsNDQ5MTcsNDQ5MTgsNDQ5MTksNDQ5MjAsNDQ5MjIsNDQ5MjMsNDQ5MjQsNDQ5MjUsNDQ5MjYsNDQ5MjcsNDQ5MjksNDQ5MzAsNDQ5MzEsNDQ5MzMsNDQ5MzQsNDQ5MzUs''@;'; put 'put ''NDQ5MzcsNDQ5MzgsNDQ5MzksNDQ5NDAsNDQ5NDEsNDQ5NDIsNDQ5NDMsNDQ5NDYsNDQ5NDcsNDQ5NDgsNDQ5NTAsNDQ5NTEsNDQ5NTIsNDQ5NTMsNDQ5NTQsNDQ5NTUsNDQ5NTcsNDQ5NTgsNDQ5NTksNDQ5NjAsNDQ5NjEsNDQ5NjIsNDQ5NjMsNDQ5NjQsNDQ5NjUsNDQ5NjYsNDQ5NjcsNDQ5''@;'; put 'put ''NjgsNDQ5NjksNDQ5NzAsNDQ5NzEsNDQ5NzIsNDQ5NzMsNDQ5NzQsNDQ5NzUsNDQ5NzYsNDQ5NzcsNDQ5NzgsNDQ5NzksNDQ5ODAsNDQ5ODEsNDQ5ODIsNDQ5ODMsNDQ5ODYsNDQ5ODcsNDQ5ODksNDQ5OTAsNDQ5OTEsNDQ5OTMsNDQ5OTQsNDQ5OTUsNDQ5OTYsNDQ5OTcsNDQ5OTgsNDUwMDIs''@;'; put 'put ''NDUwMDQsNDUwMDcsNDUwMDgsNDUwMDksNDUwMTAsNDUwMTEsNDUwMTMsNDUwMTQsNDUwMTUsNDUwMTYsNDUwMTcsNDUwMTgsNDUwMTksNDUwMjEsNDUwMjIsNDUwMjMsNDUwMjQsNDUwMjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUwMjYsNDUwMjcsNDUwMjgsNDUwMjksNDUw''@;'; put 'put ''MzAsNDUwMzEsNDUwMzQsNDUwMzUsNDUwMzYsNDUwMzcsNDUwMzgsNDUwMzksNDUwNDIsNDUwNDMsNDUwNDUsNDUwNDYsNDUwNDcsNDUwNDksNDUwNTAsNDUwNTEsNDUwNTIsNDUwNTMsNDUwNTQsNDUwNTUsNDUwNTgsNDUwNTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUwNjEs''@;'; put 'put ''NDUwNjIsNDUwNjMsNDUwNjQsNDUwNjUsNDUwNjYsNDUwNjcsNDUwNjksNDUwNzAsNDUwNzEsNDUwNzMsNDUwNzQsNDUwNzUsNDUwNzcsNDUwNzgsNDUwNzksNDUwODAsNDUwODEsNDUwODIsNDUwODMsNDUwODYsNDUwODcsNDUwODgsNDUwODksNDUwOTAsNDUwOTEsNDUwOTIsNDUwOTMsNDUw''@;'; put 'put ''OTQsNDUwOTUsNDUwOTcsNDUwOTgsNDUwOTksNDUxMDAsNDUxMDEsNDUxMDIsNDUxMDMsNDUxMDQsNDUxMDUsNDUxMDYsNDUxMDcsNDUxMDgsNDUxMDksNDUxMTAsNDUxMTEsNDUxMTIsNDUxMTMsNDUxMTQsNDUxMTUsNDUxMTYsNDUxMTcsNDUxMTgsNDUxMTksNDUxMjAsNDUxMjEsNDUxMjIs''@;'; put 'put ''NDUxMjMsNDUxMjYsNDUxMjcsNDUxMjksNDUxMzEsNDUxMzMsNDUxMzUsNDUxMzYsNDUxMzcsNDUxMzgsNDUxNDIsNDUxNDQsNDUxNDYsNDUxNDcsNDUxNDgsNDUxNTAsNDUxNTEsNDUxNTIsNDUxNTMsNDUxNTQsNDUxNTUsNDUxNTYsNDUxNTcsNDUxNTgsNDUxNTksNDUxNjAsNDUxNjEsNDUx''@;'; put 'put ''NjIsNDUxNjMsNDUxNjQsNDUxNjUsNDUxNjYsNDUxNjcsNDUxNjgsNDUxNjksNDUxNzAsNDUxNzEsNDUxNzIsNDUxNzMsNDUxNzQsNDUxNzUsNDUxNzYsNDUxNzcsNDUxNzgsNDUxNzksNDUxODIsNDUxODMsNDUxODUsNDUxODYsNDUxODcsNDUxODksNDUxOTAsNDUxOTEsNDUxOTIsNDUxOTMs''@;'; put 'put ''NDUxOTQsNDUxOTUsNDUxOTgsNDUyMDAsNDUyMDIsNDUyMDMsNDUyMDQsNDUyMDUsNDUyMDYsNDUyMDcsNDUyMTEsNDUyMTMsNDUyMTQsNDUyMTksNDUyMjAsNDUyMjEsNDUyMjIsNDUyMjMsNDUyMjYsNDUyMzIsNDUyMzQsNDUyMzgsNDUyMzksNDUyNDEsNDUyNDIsNDUyNDMsNDUyNDUsNDUy''@;'; put 'put ''NDYsNDUyNDcsNDUyNDgsNDUyNDksNDUyNTAsNDUyNTEsNDUyNTQsNDUyNTgsNDUyNTksNDUyNjAsNDUyNjEsNDUyNjIsNDUyNjMsNDUyNjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUyNjcsNDUyNjksNDUyNzAsNDUyNzEsNDUyNzMsNDUyNzQsNDUyNzUsNDUyNzYsNDUyNzcs''@;'; put 'put ''NDUyNzgsNDUyNzksNDUyODEsNDUyODIsNDUyODMsNDUyODQsNDUyODYsNDUyODcsNDUyODgsNDUyODksNDUyOTAsNDUyOTEsNDUyOTIsNDUyOTMsNDUyOTQsNDUyOTUsNDUyOTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUyOTcsNDUyOTgsNDUyOTksNDUzMDAsNDUzMDEsNDUz''@;'; put 'put ''MDIsNDUzMDMsNDUzMDQsNDUzMDUsNDUzMDYsNDUzMDcsNDUzMDgsNDUzMDksNDUzMTAsNDUzMTEsNDUzMTIsNDUzMTMsNDUzMTQsNDUzMTUsNDUzMTYsNDUzMTcsNDUzMTgsNDUzMTksNDUzMjIsNDUzMjUsNDUzMjYsNDUzMjcsNDUzMjksNDUzMzIsNDUzMzMsNDUzMzQsNDUzMzUsNDUzMzgs''@;'; put 'put ''NDUzNDIsNDUzNDMsNDUzNDQsNDUzNDUsNDUzNDYsNDUzNTAsNDUzNTEsNDUzNTMsNDUzNTQsNDUzNTUsNDUzNTcsNDUzNTgsNDUzNTksNDUzNjAsNDUzNjEsNDUzNjIsNDUzNjMsNDUzNjYsNDUzNzAsNDUzNzEsNDUzNzIsNDUzNzMsNDUzNzQsNDUzNzUsNDUzNzgsNDUzNzksNDUzODEsNDUz''@;'; put 'put ''ODIsNDUzODMsNDUzODUsNDUzODYsNDUzODcsNDUzODgsNDUzODksNDUzOTAsNDUzOTEsNDUzOTQsNDUzOTUsNDUzOTgsNDUzOTksNDU0MDEsNDU0MDIsNDU0MDMsNDU0MDUsNDU0MDYsNDU0MDcsNDU0MDksNDU0MTAsNDU0MTEsNDU0MTIsNDU0MTMsNDU0MTQsNDU0MTUsNDU0MTYsNDU0MTcs''@;'; put 'put ''NDU0MTgsNDU0MTksNDU0MjAsNDU0MjEsNDU0MjIsNDU0MjMsNDU0MjQsNDU0MjUsNDU0MjYsNDU0MjcsNDU0MjgsNDU0MjksNDU0MzAsNDU0MzEsNDU0MzQsNDU0MzUsNDU0MzcsNDU0MzgsNDU0MzksNDU0NDEsNDU0NDMsNDU0NDQsNDU0NDUsNDU0NDYsNDU0NDcsNDU0NTAsNDU0NTIsNDU0''@;'; put 'put ''NTQsNDU0NTUsNDU0NTYsNDU0NTcsNDU0NjEsNDU0NjIsNDU0NjMsNDU0NjUsNDU0NjYsNDU0NjcsNDU0NjksNDU0NzAsNDU0NzEsNDU0NzIsNDU0NzMsNDU0NzQsNDU0NzUsNDU0NzYsNDU0NzcsNDU0NzgsNDU0NzksNDU0ODEsNDU0ODIsNDU0ODMsNDU0ODQsNDU0ODUsNDU0ODYsNDU0ODcs''@;'; put 'put ''NDU0ODgsNDU0ODksNDU0OTAsNDU0OTEsNDU0OTIsNDU0OTMsNDU0OTQsNDU0OTUsNDU0OTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU0OTcsNDU0OTgsNDU0OTksNDU1MDAsNDU1MDEsNDU1MDIsNDU1MDMsNDU1MDQsNDU1MDUsNDU1MDYsNDU1MDcsNDU1MDgsNDU1MDksNDU1''@;'; put 'put ''MTAsNDU1MTEsNDU1MTIsNDU1MTMsNDU1MTQsNDU1MTUsNDU1MTcsNDU1MTgsNDU1MTksNDU1MjEsNDU1MjIsNDU1MjMsNDU1MjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU1MjYsNDU1MjcsNDU1MjgsNDU1MjksNDU1MzAsNDU1MzEsNDU1MzQsNDU1MzYsNDU1MzcsNDU1Mzgs''@;'; put 'put ''NDU1MzksNDU1NDAsNDU1NDEsNDU1NDIsNDU1NDMsNDU1NDYsNDU1NDcsNDU1NDksNDU1NTAsNDU1NTEsNDU1NTMsNDU1NTQsNDU1NTUsNDU1NTYsNDU1NTcsNDU1NTgsNDU1NTksNDU1NjAsNDU1NjIsNDU1NjQsNDU1NjYsNDU1NjcsNDU1NjgsNDU1NjksNDU1NzAsNDU1NzEsNDU1NzQsNDU1''@;'; put 'put ''NzUsNDU1NzcsNDU1NzgsNDU1ODEsNDU1ODIsNDU1ODMsNDU1ODQsNDU1ODUsNDU1ODYsNDU1ODcsNDU1OTAsNDU1OTIsNDU1OTQsNDU1OTUsNDU1OTYsNDU1OTcsNDU1OTgsNDU1OTksNDU2MDEsNDU2MDIsNDU2MDMsNDU2MDQsNDU2MDUsNDU2MDYsNDU2MDcsNDU2MDgsNDU2MDksNDU2MTAs''@;'; put 'put ''NDU2MTEsNDU2MTIsNDU2MTMsNDU2MTQsNDU2MTUsNDU2MTYsNDU2MTcsNDU2MTgsNDU2MTksNDU2MjEsNDU2MjIsNDU2MjMsNDU2MjQsNDU2MjUsNDU2MjYsNDU2MjcsNDU2MjksNDU2MzAsNDU2MzEsNDU2MzIsNDU2MzMsNDU2MzQsNDU2MzUsNDU2MzYsNDU2MzcsNDU2MzgsNDU2MzksNDU2''@;'; put 'put ''NDAsNDU2NDEsNDU2NDIsNDU2NDMsNDU2NDQsNDU2NDUsNDU2NDYsNDU2NDcsNDU2NDgsNDU2NDksNDU2NTAsNDU2NTEsNDU2NTIsNDU2NTMsNDU2NTQsNDU2NTUsNDU2NTcsNDU2NTgsNDU2NTksNDU2NjEsNDU2NjIsNDU2NjMsNDU2NjUsNDU2NjYsNDU2NjcsNDU2NjgsNDU2NjksNDU2NzAs''@;'; put 'put ''NDU2NzEsNDU2NzQsNDU2NzUsNDU2NzYsNDU2NzcsNDU2NzgsNDU2NzksNDU2ODAsNDU2ODEsNDU2ODIsNDU2ODMsNDU2ODYsNDU2ODcsNDU2ODgsNDU2ODksNDU2OTAsNDU2OTEsNDU2OTMsNDU2OTQsNDU2OTUsNDU2OTYsNDU2OTcsNDU2OTgsNDU2OTksNDU3MDIsNDU3MDMsNDU3MDQsNDU3''@;'; put 'put ''MDYsNDU3MDcsNDU3MDgsNDU3MDksNDU3MTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU3MTEsNDU3MTQsNDU3MTUsNDU3MTcsNDU3MTgsNDU3MTksNDU3MjMsNDU3MjQsNDU3MjUsNDU3MjYsNDU3MjcsNDU3MzAsNDU3MzIsNDU3MzUsNDU3MzYsNDU3MzcsNDU3MzksNDU3NDEs''@;'; put 'put ''NDU3NDIsNDU3NDMsNDU3NDUsNDU3NDYsNDU3NDcsNDU3NDksNDU3NTAsNDU3NTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU3NTIsNDU3NTMsNDU3NTQsNDU3NTUsNDU3NTYsNDU3NTcsNDU3NTgsNDU3NTksNDU3NjAsNDU3NjEsNDU3NjIsNDU3NjMsNDU3NjQsNDU3NjUsNDU3''@;'; put 'put ''NjYsNDU3NjcsNDU3NzAsNDU3NzEsNDU3NzMsNDU3NzQsNDU3NzUsNDU3NzcsNDU3NzksNDU3ODAsNDU3ODEsNDU3ODIsNDU3ODMsNDU3ODYsNDU3ODgsNDU3OTAsNDU3OTEsNDU3OTIsNDU3OTMsNDU3OTUsNDU3OTksNDU4MDEsNDU4MDIsNDU4MDgsNDU4MDksNDU4MTAsNDU4MTQsNDU4MjAs''@;'; put 'put ''NDU4MjEsNDU4MjIsNDU4MjYsNDU4MjcsNDU4MjksNDU4MzAsNDU4MzEsNDU4MzMsNDU4MzQsNDU4MzUsNDU4MzYsNDU4MzcsNDU4MzgsNDU4MzksNDU4NDIsNDU4NDYsNDU4NDcsNDU4NDgsNDU4NDksNDU4NTAsNDU4NTEsNDU4NTMsNDU4NTQsNDU4NTUsNDU4NTYsNDU4NTcsNDU4NTgsNDU4''@;'; put 'put ''NTksNDU4NjAsNDU4NjEsNDU4NjIsNDU4NjMsNDU4NjQsNDU4NjUsNDU4NjYsNDU4NjcsNDU4NjgsNDU4NjksNDU4NzAsNDU4NzEsNDU4NzIsNDU4NzMsNDU4NzQsNDU4NzUsNDU4NzYsNDU4NzcsNDU4NzgsNDU4NzksNDU4ODAsNDU4ODEsNDU4ODIsNDU4ODMsNDU4ODQsNDU4ODUsNDU4ODYs''@;'; put 'put ''NDU4ODcsNDU4ODgsNDU4ODksNDU4OTAsNDU4OTEsNDU4OTIsNDU4OTMsNDU4OTQsNDU4OTUsNDU4OTYsNDU4OTcsNDU4OTgsNDU4OTksNDU5MDAsNDU5MDEsNDU5MDIsNDU5MDMsNDU5MDQsNDU5MDUsNDU5MDYsNDU5MDcsNDU5MTEsNDU5MTMsNDU5MTQsNDU5MTcsNDU5MjAsNDU5MjEsNDU5''@;'; put 'put ''MjIsNDU5MjMsNDU5MjYsNDU5MjgsNDU5MzAsNDU5MzIsNDU5MzMsNDU5MzUsNDU5MzgsNDU5MzksNDU5NDEsNDU5NDIsNDU5NDMsNDU5NDUsNDU5NDYsNDU5NDcsNDU5NDgsNDU5NDksNDU5NTAsNDU5NTEsNDU5NTQsNDU5NTgsNDU5NTksNDU5NjAsNDU5NjEsNDU5NjIsNDU5NjMsNDU5NjUs''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU5NjYsNDU5NjcsNDU5NjksNDU5NzAsNDU5NzEsNDU5NzMsNDU5NzQsNDU5NzUsNDU5NzYsNDU5NzcsNDU5NzgsNDU5NzksNDU5ODAsNDU5ODEsNDU5ODIsNDU5ODMsNDU5ODYsNDU5ODcsNDU5ODgsNDU5ODksNDU5OTAsNDU5OTEsNDU5''@;'; put 'put ''OTMsNDU5OTQsNDU5OTUsNDU5OTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU5OTgsNDU5OTksNDZlMyw0NjAwMSw0NjAwMiw0NjAwMyw0NjAwNCw0NjAwNSw0NjAwNiw0NjAwNyw0NjAwOCw0NjAwOSw0NjAxMCw0NjAxMSw0NjAxMiw0NjAxMyw0NjAxNCw0NjAxNSw0NjAxNiw0''@;'; put 'put ''NjAxNyw0NjAxOCw0NjAxOSw0NjAyMiw0NjAyMyw0NjAyNSw0NjAyNiw0NjAyOSw0NjAzMSw0NjAzMyw0NjAzNCw0NjAzNSw0NjAzOCw0NjA0MCw0NjA0Miw0NjA0NCw0NjA0Niw0NjA0Nyw0NjA0OSw0NjA1MCw0NjA1MSw0NjA1Myw0NjA1NCw0NjA1NSw0NjA1Nyw0NjA1OCw0NjA1OSw0NjA2''@;'; put 'put ''MCw0NjA2MSw0NjA2Miw0NjA2Myw0NjA2NCw0NjA2NSw0NjA2Niw0NjA2Nyw0NjA2OCw0NjA2OSw0NjA3MCw0NjA3MSw0NjA3Miw0NjA3Myw0NjA3NCw0NjA3NSw0NjA3Nyw0NjA3OCw0NjA3OSw0NjA4MCw0NjA4MSw0NjA4Miw0NjA4Myw0NjA4NCw0NjA4NSw0NjA4Niw0NjA4Nyw0NjA4OCw0''@;'; put 'put ''NjA4OSw0NjA5MCw0NjA5MSw0NjA5Miw0NjA5Myw0NjA5NCw0NjA5NSw0NjA5Nyw0NjA5OCw0NjA5OSw0NjEwMCw0NjEwMSw0NjEwMiw0NjEwMyw0NjEwNSw0NjEwNiw0NjEwNyw0NjEwOSw0NjExMCw0NjExMSw0NjExMyw0NjExNCw0NjExNSw0NjExNiw0NjExNyw0NjExOCw0NjExOSw0NjEy''@;'; put 'put ''Miw0NjEyNCw0NjEyNSw0NjEyNiw0NjEyNyw0NjEyOCw0NjEyOSw0NjEzMCw0NjEzMSw0NjEzMyw0NjEzNCw0NjEzNSw0NjEzNiw0NjEzNyw0NjEzOCw0NjEzOSw0NjE0MCw0NjE0MSw0NjE0Miw0NjE0Myw0NjE0NCw0NjE0NSw0NjE0Niw0NjE0Nyw0NjE0OCw0NjE0OSw0NjE1MCw0NjE1MSw0''@;'; put 'put ''NjE1Miw0NjE1Myw0NjE1NCw0NjE1NSw0NjE1Niw0NjE1Nyw0NjE1OCw0NjE1OSw0NjE2Miw0NjE2Myw0NjE2NSw0NjE2Niw0NjE2Nyw0NjE2OSw0NjE3MCw0NjE3MSw0NjE3Miw0NjE3Myw0NjE3NCw0NjE3NSw0NjE3OCw0NjE4MCw0NjE4MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCw0NjE4Myw0NjE4NCw0NjE4NSw0NjE4Niw0NjE4Nyw0NjE4OSw0NjE5MCw0NjE5MSw0NjE5Miw0NjE5Myw0NjE5NCw0NjE5NSw0NjE5Niw0NjE5Nyw0NjE5OCw0NjE5OSw0NjIwMCw0NjIwMSw0NjIwMiw0NjIwMyw0NjIwNCw0NjIwNSw0NjIwNiw0NjIwNyw0NjIwOSw0NjIxMCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjIxMSw0NjIxMiw0NjIxMyw0NjIxNCw0NjIxNSw0NjIxNyw0NjIxOCw0NjIxOSw0NjIyMCw0NjIyMSw0NjIyMiw0NjIyMyw0NjIyNCw0NjIyNSw0NjIyNiw0NjIyNyw0NjIyOCw0NjIyOSw0NjIzMCw0NjIzMSw0NjIzMiw0NjIzMyw0NjIzNCw0NjIz''@;'; put 'put ''NSw0NjIzNiw0NjIzOCw0NjIzOSw0NjI0MCw0NjI0MSw0NjI0Miw0NjI0Myw0NjI0NSw0NjI0Niw0NjI0Nyw0NjI0OSw0NjI1MCw0NjI1MSw0NjI1Myw0NjI1NCw0NjI1NSw0NjI1Niw0NjI1Nyw0NjI1OCw0NjI1OSw0NjI2MCw0NjI2Miw0NjI2NCw0NjI2Niw0NjI2Nyw0NjI2OCw0NjI2OSw0''@;'; put 'put ''NjI3MCw0NjI3MSw0NjI3Myw0NjI3NCw0NjI3NSw0NjI3Nyw0NjI3OCw0NjI3OSw0NjI4MSw0NjI4Miw0NjI4Myw0NjI4NCw0NjI4NSw0NjI4Niw0NjI4Nyw0NjI4OSw0NjI5MCw0NjI5MSw0NjI5Miw0NjI5NCw0NjI5NSw0NjI5Niw0NjI5Nyw0NjI5OCw0NjI5OSw0NjMwMiw0NjMwMyw0NjMw''@;'; put 'put ''NSw0NjMwNiw0NjMwOSw0NjMxMSw0NjMxMiw0NjMxMyw0NjMxNCw0NjMxNSw0NjMxOCw0NjMyMCw0NjMyMiw0NjMyMyw0NjMyNCw0NjMyNSw0NjMyNiw0NjMyNyw0NjMyOSw0NjMzMCw0NjMzMSw0NjMzMiw0NjMzMyw0NjMzNCw0NjMzNSw0NjMzNiw0NjMzNyw0NjMzOCw0NjMzOSw0NjM0MCw0''@;'; put 'put ''NjM0MSw0NjM0Miw0NjM0Myw0NjM0NCw0NjM0NSw0NjM0Niw0NjM0Nyw0NjM0OCw0NjM0OSw0NjM1MCw0NjM1MSw0NjM1Miw0NjM1Myw0NjM1NCw0NjM1NSw0NjM1OCw0NjM1OSw0NjM2MSw0NjM2Miw0NjM2NSw0NjM2Niw0NjM2Nyw0NjM2OCw0NjM2OSw0NjM3MCw0NjM3MSw0NjM3NCw0NjM3''@;'; put 'put ''OSw0NjM4MCw0NjM4MSw0NjM4Miw0NjM4Myw0NjM4Niw0NjM4Nyw0NjM4OSw0NjM5MCw0NjM5MSw0NjM5Myw0NjM5NCw0NjM5NSw0NjM5Niw0NjM5Nyw0NjM5OCw0NjM5OSw0NjQwMiw0NjQwNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjQwNyw0NjQwOCw0NjQwOSw0NjQxMCw0''@;'; put 'put ''NjQxNCw0NjQxNSw0NjQxNyw0NjQxOCw0NjQxOSw0NjQyMSw0NjQyMiw0NjQyMyw0NjQyNCw0NjQyNSw0NjQyNiw0NjQyNyw0NjQzMCw0NjQzNCw0NjQzNSw0NjQzNiw0NjQzNyw0NjQzOCw0NjQzOSw0NjQ0MCw0NjQ0MSw0NjQ0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjQ0''@;'; put 'put ''Myw0NjQ0NCw0NjQ0NSw0NjQ0Niw0NjQ0Nyw0NjQ0OCw0NjQ0OSw0NjQ1MCw0NjQ1MSw0NjQ1Miw0NjQ1Myw0NjQ1NCw0NjQ1NSw0NjQ1Niw0NjQ1Nyw0NjQ1OCw0NjQ1OSw0NjQ2MCw0NjQ2MSw0NjQ2Miw0NjQ2Myw0NjQ2NCw0NjQ2NSw0NjQ2Niw0NjQ2Nyw0NjQ2OCw0NjQ2OSw0NjQ3MCw0''@;'; put 'put ''NjQ3MSw0NjQ3Miw0NjQ3Myw0NjQ3NCw0NjQ3NSw0NjQ3Niw0NjQ3Nyw0NjQ3OCw0NjQ3OSw0NjQ4MCw0NjQ4MSw0NjQ4Miw0NjQ4Myw0NjQ4NCw0NjQ4NSw0NjQ4Niw0NjQ4Nyw0NjQ4OCw0NjQ4OSw0NjQ5MCw0NjQ5MSw0NjQ5Miw0NjQ5Myw0NjQ5NCw0NjQ5NSw0NjQ5OCw0NjQ5OSw0NjUw''@;'; put 'put ''MSw0NjUwMiw0NjUwMyw0NjUwNSw0NjUwOCw0NjUwOSw0NjUxMCw0NjUxMSw0NjUxNCw0NjUxOCw0NjUxOSw0NjUyMCw0NjUyMSw0NjUyMiw0NjUyNiw0NjUyNyw0NjUyOSw0NjUzMCw0NjUzMSw0NjUzMyw0NjUzNCw0NjUzNSw0NjUzNiw0NjUzNyw0NjUzOCw0NjUzOSw0NjU0Miw0NjU0Niw0''@;'; put 'put ''NjU0Nyw0NjU0OCw0NjU0OSw0NjU1MCw0NjU1MSw0NjU1Myw0NjU1NCw0NjU1NSw0NjU1Niw0NjU1Nyw0NjU1OCw0NjU1OSw0NjU2MCw0NjU2MSw0NjU2Miw0NjU2Myw0NjU2NCw0NjU2NSw0NjU2Niw0NjU2Nyw0NjU2OCw0NjU2OSw0NjU3MCw0NjU3MSw0NjU3Myw0NjU3NCw0NjU3NSw0NjU3''@;'; put 'put ''Niw0NjU3Nyw0NjU3OCw0NjU3OSw0NjU4MCw0NjU4MSw0NjU4Miw0NjU4Myw0NjU4NCw0NjU4NSw0NjU4Niw0NjU4Nyw0NjU4OCw0NjU4OSw0NjU5MCw0NjU5MSw0NjU5Miw0NjU5Myw0NjU5NCw0NjU5NSw0NjU5Niw0NjU5Nyw0NjU5OCw0NjU5OSw0NjYwMCw0NjYwMSw0NjYwMiw0NjYwMyw0''@;'; put 'put ''NjYwNCw0NjYwNSw0NjYwNiw0NjYwNyw0NjYxMCw0NjYxMSw0NjYxMyw0NjYxNCw0NjYxNSw0NjYxNyw0NjYxOCw0NjYxOSw0NjYyMCw0NjYyMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjYyMiw0NjYyMyw0NjYyNCw0NjYyNSw0NjYyNiw0NjYyNyw0NjYyOCw0NjYzMCw0NjYz''@;'; put 'put ''MSw0NjYzMiw0NjYzMyw0NjYzNCw0NjYzNSw0NjYzNyw0NjYzOCw0NjYzOSw0NjY0MCw0NjY0MSw0NjY0Miw0NjY0Myw0NjY0NSw0NjY0Niw0NjY0Nyw0NjY0OCw0NjY0OSw0NjY1MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjY1MSw0NjY1Miw0NjY1Myw0NjY1NCw0NjY1NSw0''@;'; put 'put ''NjY1Niw0NjY1Nyw0NjY1OCw0NjY1OSw0NjY2MCw0NjY2MSw0NjY2Miw0NjY2Myw0NjY2NSw0NjY2Niw0NjY2Nyw0NjY2OCw0NjY2OSw0NjY3MCw0NjY3MSw0NjY3Miw0NjY3Myw0NjY3NCw0NjY3NSw0NjY3Niw0NjY3Nyw0NjY3OCw0NjY3OSw0NjY4MCw0NjY4MSw0NjY4Miw0NjY4Myw0NjY4''@;'; put 'put ''NCw0NjY4NSw0NjY4Niw0NjY4Nyw0NjY4OCw0NjY4OSw0NjY5MCw0NjY5MSw0NjY5Myw0NjY5NCw0NjY5NSw0NjY5Nyw0NjY5OCw0NjY5OSw0NjcwMCw0NjcwMSw0NjcwMiw0NjcwMyw0NjcwNCw0NjcwNSw0NjcwNiw0NjcwNyw0NjcwOCw0NjcwOSw0NjcxMCw0NjcxMSw0NjcxMiw0NjcxMyw0''@;'; put 'put ''NjcxNCw0NjcxNSw0NjcxNiw0NjcxNyw0NjcxOCw0NjcxOSw0NjcyMCw0NjcyMSw0NjcyMiw0NjcyMyw0NjcyNCw0NjcyNSw0NjcyNiw0NjcyNyw0NjcyOCw0NjcyOSw0NjczMCw0NjczMSw0NjczMiw0NjczMyw0NjczNCw0NjczNSw0NjczNiw0NjczNyw0NjczOCw0NjczOSw0Njc0MCw0Njc0''@;'; put 'put ''MSw0Njc0Miw0Njc0Myw0Njc0NCw0Njc0NSw0Njc0Niw0Njc0Nyw0Njc1MCw0Njc1MSw0Njc1Myw0Njc1NCw0Njc1NSw0Njc1Nyw0Njc1OCw0Njc1OSw0Njc2MCw0Njc2MSw0Njc2Miw0Njc2NSw0Njc2Niw0Njc2Nyw0Njc2OCw0Njc3MCw0Njc3MSw0Njc3Miw0Njc3Myw0Njc3NCw0Njc3NSw0''@;'; put 'put ''Njc3Niw0Njc3Nyw0Njc3OCw0Njc3OSw0Njc4MCw0Njc4MSw0Njc4Miw0Njc4Myw0Njc4NCw0Njc4NSw0Njc4Niw0Njc4Nyw0Njc4OCw0Njc4OSw0Njc5MCw0Njc5MSw0Njc5Miw0Njc5Myw0Njc5NCw0Njc5NSw0Njc5Niw0Njc5Nyw0Njc5OCw0Njc5OSw0NjgwMCw0NjgwMSw0NjgwMiw0Njgw''@;'; put 'put ''Myw0NjgwNSw0NjgwNiw0NjgwNyw0NjgwOCw0NjgwOSw0NjgxMCw0NjgxMSw0NjgxMiw0NjgxMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjgxNCw0NjgxNSw0NjgxNiw0NjgxNyw0NjgxOCw0NjgxOSw0NjgyMCw0NjgyMSw0NjgyMiw0NjgyMyw0NjgyNCw0NjgyNSw0NjgyNiw0''@;'; put 'put ''NjgyNyw0NjgyOCw0NjgyOSw0NjgzMCw0NjgzMSw0NjgzMyw0NjgzNCw0NjgzNSw0NjgzNyw0NjgzOCw0NjgzOSw0Njg0MSw0Njg0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0Njg0Myw0Njg0NCw0Njg0NSw0Njg0Niw0Njg0Nyw0Njg1MCw0Njg1MSw0Njg1Miw0Njg1NCw0Njg1''@;'; put 'put ''NSw0Njg1Niw0Njg1Nyw0Njg1OCw0Njg1OSw0Njg2MCw0Njg2MSw0Njg2Miw0Njg2Myw0Njg2NCw0Njg2NSw0Njg2Niw0Njg2Nyw0Njg2OCw0Njg2OSw0Njg3MCw0Njg3MSw0Njg3Miw0Njg3Myw0Njg3NCw0Njg3NSw0Njg3Niw0Njg3Nyw0Njg3OCw0Njg3OSw0Njg4MCw0Njg4MSw0Njg4Miw0''@;'; put 'put ''Njg4Myw0Njg4NCw0Njg4NSw0Njg4Niw0Njg4Nyw0Njg5MCw0Njg5MSw0Njg5Myw0Njg5NCw0Njg5Nyw0Njg5OCw0Njg5OSw0NjkwMCw0NjkwMSw0NjkwMiw0NjkwMyw0NjkwNiw0NjkwOCw0NjkwOSw0NjkxMCw0NjkxMSw0NjkxMiw0NjkxMyw0NjkxNCw0NjkxNSw0NjkxNyw0NjkxOCw0Njkx''@;'; put 'put ''OSw0NjkyMSw0NjkyMiw0NjkyMyw0NjkyNSw0NjkyNiw0NjkyNyw0NjkyOCw0NjkyOSw0NjkzMCw0NjkzMSw0NjkzNCw0NjkzNSw0NjkzNiw0NjkzNyw0NjkzOCw0NjkzOSw0Njk0MCw0Njk0MSw0Njk0Miw0Njk0Myw0Njk0NSw0Njk0Niw0Njk0Nyw0Njk0OSw0Njk1MCw0Njk1MSw0Njk1Myw0''@;'; put 'put ''Njk1NCw0Njk1NSw0Njk1Niw0Njk1Nyw0Njk1OCw0Njk1OSw0Njk2Miw0Njk2NCw0Njk2Niw0Njk2Nyw0Njk2OCw0Njk2OSw0Njk3MCw0Njk3MSw0Njk3NCw0Njk3NSw0Njk3Nyw0Njk3OCw0Njk3OSw0Njk4MSw0Njk4Miw0Njk4Myw0Njk4NCw0Njk4NSw0Njk4Niw0Njk4Nyw0Njk5MCw0Njk5''@;'; put 'put ''NSw0Njk5Niw0Njk5Nyw0NzAwMiw0NzAwMyw0NzAwNSw0NzAwNiw0NzAwNyw0NzAwOSw0NzAxMCw0NzAxMSw0NzAxMiw0NzAxMyw0NzAxNCw0NzAxNSw0NzAxOCw0NzAyMiw0NzAyMyw0NzAyNCw0NzAyNSw0NzAyNiw0NzAyNyw0NzAzMCw0NzAzMSw0NzAzMyw0NzAzNCw0NzAzNSw0NzAzNiw0''@;'; put 'put ''NzAzNyw0NzAzOCw0NzAzOSw0NzA0MCw0NzA0MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzA0Miw0NzA0Myw0NzA0NCw0NzA0NSw0NzA0Niw0NzA0OCw0NzA1MCw0NzA1MSw0NzA1Miw0NzA1Myw0NzA1NCw0NzA1NSw0NzA1Niw0NzA1Nyw0NzA1OCw0NzA1OSw0NzA2MCw0NzA2''@;'; put 'put ''MSw0NzA2Miw0NzA2Myw0NzA2NCw0NzA2NSw0NzA2Niw0NzA2Nyw0NzA2OCw0NzA2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzA3MCw0NzA3MSw0NzA3Miw0NzA3Myw0NzA3NCw0NzA3NSw0NzA3Niw0NzA3Nyw0NzA3OCw0NzA3OSw0NzA4MCw0NzA4MSw0NzA4Miw0NzA4Myw0''@;'; put 'put ''NzA4Niw0NzA4Nyw0NzA4OSw0NzA5MCw0NzA5MSw0NzA5Myw0NzA5NCw0NzA5NSw0NzA5Niw0NzA5Nyw0NzA5OCw0NzA5OSw0NzEwMiw0NzEwNiw0NzEwNyw0NzEwOCw0NzEwOSw0NzExMCw0NzExNCw0NzExNSw0NzExNyw0NzExOCw0NzExOSw0NzEyMSw0NzEyMiw0NzEyMyw0NzEyNCw0NzEy''@;'; put 'put ''NSw0NzEyNiw0NzEyNyw0NzEzMCw0NzEzMiw0NzEzNCw0NzEzNSw0NzEzNiw0NzEzNyw0NzEzOCw0NzEzOSw0NzE0Miw0NzE0Myw0NzE0NSw0NzE0Niw0NzE0Nyw0NzE0OSw0NzE1MCw0NzE1MSw0NzE1Miw0NzE1Myw0NzE1NCw0NzE1NSw0NzE1OCw0NzE2Miw0NzE2Myw0NzE2NCw0NzE2NSw0''@;'; put 'put ''NzE2Niw0NzE2Nyw0NzE2OSw0NzE3MCw0NzE3MSw0NzE3Myw0NzE3NCw0NzE3NSw0NzE3Niw0NzE3Nyw0NzE3OCw0NzE3OSw0NzE4MCw0NzE4MSw0NzE4Miw0NzE4Myw0NzE4NCw0NzE4Niw0NzE4OCw0NzE4OSw0NzE5MCw0NzE5MSw0NzE5Miw0NzE5Myw0NzE5NCw0NzE5NSw0NzE5OCw0NzE5''@;'; put 'put ''OSw0NzIwMSw0NzIwMiw0NzIwMyw0NzIwNSw0NzIwNiw0NzIwNyw0NzIwOCw0NzIwOSw0NzIxMCw0NzIxMSw0NzIxNCw0NzIxNiw0NzIxOCw0NzIxOSw0NzIyMCw0NzIyMSw0NzIyMiw0NzIyMyw0NzIyNSw0NzIyNiw0NzIyNyw0NzIyOSw0NzIzMCw0NzIzMSw0NzIzMiw0NzIzMyw0NzIzNCw0''@;'; put 'put ''NzIzNSw0NzIzNiw0NzIzNyw0NzIzOCw0NzIzOSw0NzI0MCw0NzI0MSw0NzI0Miw0NzI0Myw0NzI0NCw0NzI0Niw0NzI0Nyw0NzI0OCw0NzI0OSw0NzI1MCw0NzI1MSw0NzI1Miw0NzI1Myw0NzI1NCw0NzI1NSw0NzI1Niw0NzI1Nyw0NzI1OCw0NzI1OSw0NzI2MCw0NzI2MSw0NzI2Miw0NzI2''@;'; put 'put ''MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzI2NCw0NzI2NSw0NzI2Niw0NzI2Nyw0NzI2OCw0NzI2OSw0NzI3MCw0NzI3MSw0NzI3Myw0NzI3NCw0NzI3NSw0NzI3Niw0NzI3Nyw0NzI3OCw0NzI3OSw0NzI4MSw0NzI4Miw0NzI4Myw0NzI4NSw0NzI4Niw0NzI4Nyw0NzI4OSw0''@;'; put 'put ''NzI5MCw0NzI5MSw0NzI5Miw0NzI5MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzI5NCw0NzI5NSw0NzI5OCw0NzMwMCw0NzMwMiw0NzMwMyw0NzMwNCw0NzMwNSw0NzMwNiw0NzMwNyw0NzMwOSw0NzMxMCw0NzMxMSw0NzMxMyw0NzMxNCw0NzMxNSw0NzMxNyw0NzMxOCw0NzMx''@;'; put 'put ''OSw0NzMyMCw0NzMyMSw0NzMyMiw0NzMyMyw0NzMyNCw0NzMyNiw0NzMyOCw0NzMzMCw0NzMzMSw0NzMzMiw0NzMzMyw0NzMzNCw0NzMzNSw0NzMzOCw0NzMzOSw0NzM0MSw0NzM0Miw0NzM0Myw0NzM0NSw0NzM0Niw0NzM0Nyw0NzM0OCw0NzM0OSw0NzM1MCw0NzM1MSw0NzM1NCw0NzM1Niw0''@;'; put 'put ''NzM1OCw0NzM1OSw0NzM2MCw0NzM2MSw0NzM2Miw0NzM2Myw0NzM2NSw0NzM2Niw0NzM2Nyw0NzM2OCw0NzM2OSw0NzM3MCw0NzM3MSw0NzM3Miw0NzM3Myw0NzM3NCw0NzM3NSw0NzM3Niw0NzM3Nyw0NzM3OCw0NzM3OSw0NzM4MCw0NzM4MSw0NzM4Miw0NzM4Myw0NzM4NSw0NzM4Niw0NzM4''@;'; put 'put ''Nyw0NzM4OCw0NzM4OSw0NzM5MCw0NzM5MSw0NzM5Myw0NzM5NCw0NzM5NSw0NzM5Niw0NzM5Nyw0NzM5OCw0NzM5OSw0NzQwMCw0NzQwMSw0NzQwMiw0NzQwMyw0NzQwNCw0NzQwNSw0NzQwNiw0NzQwNyw0NzQwOCw0NzQwOSw0NzQxMCw0NzQxMSw0NzQxMiw0NzQxMyw0NzQxNCw0NzQxNSw0''@;'; put 'put ''NzQxNiw0NzQxNyw0NzQxOCw0NzQxOSw0NzQyMiw0NzQyMyw0NzQyNSw0NzQyNiw0NzQyNyw0NzQyOSw0NzQzMCw0NzQzMSw0NzQzMiw0NzQzMyw0NzQzNCw0NzQzNSw0NzQzNyw0NzQzOCw0NzQ0MCw0NzQ0Miw0NzQ0Myw0NzQ0NCw0NzQ0NSw0NzQ0Niw0NzQ0Nyw0NzQ1MCw0NzQ1MSw0NzQ1''@;'; put 'put ''Myw0NzQ1NCw0NzQ1NSw0NzQ1Nyw0NzQ1OCw0NzQ1OSw0NzQ2MCw0NzQ2MSw0NzQ2Miw0NzQ2Myw0NzQ2Niw0NzQ2OCw0NzQ3MCw0NzQ3MSw0NzQ3Miw0NzQ3Myw0NzQ3NCw0NzQ3NSw0NzQ3OCw0NzQ3OSw0NzQ4MSw0NzQ4Miw0NzQ4Myw0NzQ4NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCw0NzQ4Niw0NzQ4Nyw0NzQ4OCw0NzQ4OSw0NzQ5MCw0NzQ5MSw0NzQ5NCw0NzQ5Niw0NzQ5OSw0NzUwMCw0NzUwMyw0NzUwNCw0NzUwNSw0NzUwNiw0NzUwNyw0NzUwOCw0NzUwOSw0NzUxMCw0NzUxMSw0NzUxMiw0NzUxMyw0NzUxNCw0NzUxNSw0NzUxNiw0NzUxNyw0NzUxOCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzUxOSw0NzUyMCw0NzUyMSw0NzUyMiw0NzUyMyw0NzUyNCw0NzUyNSw0NzUyNiw0NzUyNyw0NzUyOCw0NzUyOSw0NzUzMCw0NzUzMSw0NzUzNCw0NzUzNSw0NzUzNyw0NzUzOCw0NzUzOSw0NzU0MSw0NzU0Miw0NzU0Myw0NzU0NCw0NzU0NSw0''@;'; put 'put ''NzU0Niw0NzU0Nyw0NzU1MCw0NzU1Miw0NzU1NCw0NzU1NSw0NzU1Niw0NzU1Nyw0NzU1OCw0NzU1OSw0NzU2Miw0NzU2Myw0NzU2NSw0NzU3MSw0NzU3Miw0NzU3Myw0NzU3NCw0NzU3NSw0NzU3OCw0NzU4MCw0NzU4Myw0NzU4NCw0NzU4Niw0NzU5MCw0NzU5MSw0NzU5Myw0NzU5NCw0NzU5''@;'; put 'put ''NSw0NzU5Nyw0NzU5OCw0NzU5OSw0NzYwMCw0NzYwMSw0NzYwMiw0NzYwMyw0NzYwNiw0NzYxMSw0NzYxMiw0NzYxMyw0NzYxNCw0NzYxNSw0NzYxOCw0NzYxOSw0NzYyMCw0NzYyMSw0NzYyMiw0NzYyMyw0NzYyNSw0NzYyNiw0NzYyNyw0NzYyOCw0NzYyOSw0NzYzMCw0NzYzMSw0NzYzMiw0''@;'; put 'put ''NzYzMyw0NzYzNCw0NzYzNSw0NzYzNiw0NzYzOCw0NzYzOSw0NzY0MCw0NzY0MSw0NzY0Miw0NzY0Myw0NzY0NCw0NzY0NSw0NzY0Niw0NzY0Nyw0NzY0OCw0NzY0OSw0NzY1MCw0NzY1MSw0NzY1Miw0NzY1Myw0NzY1NCw0NzY1NSw0NzY1Niw0NzY1Nyw0NzY1OCw0NzY1OSw0NzY2MCw0NzY2''@;'; put 'put ''MSw0NzY2Miw0NzY2Myw0NzY2NCw0NzY2NSw0NzY2Niw0NzY2Nyw0NzY2OCw0NzY2OSw0NzY3MCw0NzY3MSw0NzY3NCw0NzY3NSw0NzY3Nyw0NzY3OCw0NzY3OSw0NzY4MSw0NzY4Myw0NzY4NCw0NzY4NSw0NzY4Niw0NzY4Nyw0NzY5MCw0NzY5Miw0NzY5NSw0NzY5Niw0NzY5Nyw0NzY5OCw0''@;'; put 'put ''NzcwMiw0NzcwMyw0NzcwNSw0NzcwNiw0NzcwNyw0NzcwOSw0NzcxMCw0NzcxMSw0NzcxMiw0NzcxMyw0NzcxNCw0NzcxNSw0NzcxOCw0NzcyMiw0NzcyMyw0NzcyNCw0NzcyNSw0NzcyNiw0NzcyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzczMCw0NzczMSw0NzczMyw0Nzcz''@;'; put 'put ''NCw0NzczNSw0NzczNyw0NzczOCw0NzczOSw0Nzc0MCw0Nzc0MSw0Nzc0Miw0Nzc0Myw0Nzc0NCw0Nzc0NSw0Nzc0Niw0Nzc1MCw0Nzc1Miw0Nzc1Myw0Nzc1NCw0Nzc1NSw0Nzc1Nyw0Nzc1OCw0Nzc1OSw0Nzc2MCw0Nzc2MSw0Nzc2MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0''@;'; put 'put ''Nzc2Myw0Nzc2NCw0Nzc2NSw0Nzc2Niw0Nzc2Nyw0Nzc2OCw0Nzc2OSw0Nzc3MCw0Nzc3MSw0Nzc3Miw0Nzc3Myw0Nzc3NCw0Nzc3NSw0Nzc3Niw0Nzc3Nyw0Nzc3OCw0Nzc3OSw0Nzc4MCw0Nzc4MSw0Nzc4Miw0Nzc4Myw0Nzc4Niw0Nzc4OSw0Nzc5MCw0Nzc5MSw0Nzc5Myw0Nzc5NSw0Nzc5''@;'; put 'put ''Niw0Nzc5Nyw0Nzc5OCw0Nzc5OSw0NzgwMiw0NzgwNCw0NzgwNiw0NzgwNyw0NzgwOCw0NzgwOSw0NzgxMCw0NzgxMSw0NzgxMyw0NzgxNCw0NzgxNSw0NzgxNyw0NzgxOCw0NzgxOSw0NzgyMCw0NzgyMSw0NzgyMiw0NzgyMyw0NzgyNCw0NzgyNSw0NzgyNiw0NzgyNyw0NzgyOCw0NzgyOSw0''@;'; put 'put ''NzgzMCw0NzgzMSw0NzgzNCw0NzgzNSw0NzgzNiw0NzgzNyw0NzgzOCw0NzgzOSw0Nzg0MCw0Nzg0MSw0Nzg0Miw0Nzg0Myw0Nzg0NCw0Nzg0NSw0Nzg0Niw0Nzg0Nyw0Nzg0OCw0Nzg0OSw0Nzg1MCw0Nzg1MSw0Nzg1Miw0Nzg1Myw0Nzg1NCw0Nzg1NSw0Nzg1Niw0Nzg1Nyw0Nzg1OCw0Nzg1''@;'; put 'put ''OSw0Nzg2MCw0Nzg2MSw0Nzg2Miw0Nzg2Myw0Nzg2NCw0Nzg2NSw0Nzg2Niw0Nzg2Nyw0Nzg2OSw0Nzg3MCw0Nzg3MSw0Nzg3Myw0Nzg3NCw0Nzg3NSw0Nzg3Nyw0Nzg3OCw0Nzg3OSw0Nzg4MCw0Nzg4MSw0Nzg4Miw0Nzg4Myw0Nzg4NCw0Nzg4Niw0Nzg4OCw0Nzg5MCw0Nzg5MSw0Nzg5Miw0''@;'; put 'put ''Nzg5Myw0Nzg5NCw0Nzg5NSw0Nzg5Nyw0Nzg5OCw0Nzg5OSw0NzkwMSw0NzkwMiw0NzkwMyw0NzkwNSw0NzkwNiw0NzkwNyw0NzkwOCw0NzkwOSw0NzkxMCw0NzkxMSw0NzkxMiw0NzkxNCw0NzkxNiw0NzkxNyw0NzkxOCw0NzkxOSw0NzkyMCw0NzkyMSw0NzkyMiw0NzkyMyw0NzkyNyw0Nzky''@;'; put 'put ''OSw0NzkzMCw0NzkzNSw0NzkzNiw0NzkzNyw0NzkzOCw0NzkzOSw0Nzk0Miw0Nzk0NCw0Nzk0Niw0Nzk0Nyw0Nzk0OCw0Nzk1MCw0Nzk1Myw0Nzk1NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0Nzk1NSw0Nzk1Nyw0Nzk1OCw0Nzk1OSw0Nzk2MSw0Nzk2Miw0Nzk2Myw0Nzk2NCw0''@;'; put 'put ''Nzk2NSw0Nzk2Niw0Nzk2Nyw0Nzk2OCw0Nzk3MCw0Nzk3Miw0Nzk3Myw0Nzk3NCw0Nzk3NSw0Nzk3Niw0Nzk3Nyw0Nzk3OCw0Nzk3OSw0Nzk4MSw0Nzk4Miw0Nzk4Myw0Nzk4NCw0Nzk4NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0Nzk4Niw0Nzk4Nyw0Nzk4OCw0Nzk4OSw0Nzk5''@;'; put 'put ''MCw0Nzk5MSw0Nzk5Miw0Nzk5Myw0Nzk5NCw0Nzk5NSw0Nzk5Niw0Nzk5Nyw0Nzk5OCw0Nzk5OSw0OGUzLDQ4MDAxLDQ4MDAyLDQ4MDAzLDQ4MDA0LDQ4MDA1LDQ4MDA2LDQ4MDA3LDQ4MDA5LDQ4MDEwLDQ4MDExLDQ4MDEzLDQ4MDE0LDQ4MDE1LDQ4MDE3LDQ4MDE4LDQ4MDE5LDQ4MDIwLDQ4''@;'; put 'put ''MDIxLDQ4MDIyLDQ4MDIzLDQ4MDI0LDQ4MDI1LDQ4MDI2LDQ4MDI3LDQ4MDI4LDQ4MDI5LDQ4MDMwLDQ4MDMxLDQ4MDMyLDQ4MDMzLDQ4MDM0LDQ4MDM1LDQ4MDM3LDQ4MDM4LDQ4MDM5LDQ4MDQxLDQ4MDQyLDQ4MDQzLDQ4MDQ1LDQ4MDQ2LDQ4MDQ3LDQ4MDQ4LDQ4MDQ5LDQ4MDUwLDQ4MDUx''@;'; put 'put ''LDQ4MDUzLDQ4MDU0LDQ4MDU2LDQ4MDU3LDQ4MDU4LDQ4MDU5LDQ4MDYwLDQ4MDYxLDQ4MDYyLDQ4MDYzLDQ4MDY1LDQ4MDY2LDQ4MDY3LDQ4MDY5LDQ4MDcwLDQ4MDcxLDQ4MDczLDQ4MDc0LDQ4MDc1LDQ4MDc2LDQ4MDc3LDQ4MDc4LDQ4MDc5LDQ4MDgxLDQ4MDgyLDQ4MDg0LDQ4MDg1LDQ4''@;'; put 'put ''MDg2LDQ4MDg3LDQ4MDg4LDQ4MDg5LDQ4MDkwLDQ4MDkxLDQ4MDkyLDQ4MDkzLDQ4MDk0LDQ4MDk1LDQ4MDk2LDQ4MDk3LDQ4MDk4LDQ4MDk5LDQ4MTAwLDQ4MTAxLDQ4MTAyLDQ4MTAzLDQ4MTA0LDQ4MTA1LDQ4MTA2LDQ4MTA3LDQ4MTA4LDQ4MTA5LDQ4MTEwLDQ4MTExLDQ4MTEyLDQ4MTEz''@;'; put 'put ''LDQ4MTE0LDQ4MTE1LDQ4MTE2LDQ4MTE3LDQ4MTE4LDQ4MTE5LDQ4MTIyLDQ4MTIzLDQ4MTI1LDQ4MTI2LDQ4MTI5LDQ4MTMxLDQ4MTMyLDQ4MTMzLDQ4MTM0LDQ4MTM1LDQ4MTM4LDQ4MTQyLDQ4MTQ0LDQ4MTQ2LDQ4MTQ3LDQ4MTUzLDQ4MTU0LDQ4MTYwLDQ4MTYxLDQ4MTYyLDQ4MTYzLDQ4''@;'; put 'put ''MTY2LDQ4MTY4LDQ4MTcwLDQ4MTcxLDQ4MTcyLDQ4MTc0LDQ4MTc1LDQ4MTc4LDQ4MTc5LDQ4MTgxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4MTgyLDQ4MTgzLDQ4MTg1LDQ4MTg2LDQ4MTg3LDQ4MTg4LDQ4MTg5LDQ4MTkwLDQ4MTkxLDQ4MTk0LDQ4MTk4LDQ4MTk5LDQ4MjAw''@;'; put 'put ''LDQ4MjAyLDQ4MjAzLDQ4MjA2LDQ4MjA3LDQ4MjA5LDQ4MjEwLDQ4MjExLDQ4MjEyLDQ4MjEzLDQ4MjE0LDQ4MjE1LDQ4MjE2LDQ4MjE3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4MjE4LDQ4MjE5LDQ4MjIwLDQ4MjIyLDQ4MjIzLDQ4MjI0LDQ4MjI1LDQ4MjI2LDQ4MjI3LDQ4''@;'; put 'put ''MjI4LDQ4MjI5LDQ4MjMwLDQ4MjMxLDQ4MjMyLDQ4MjMzLDQ4MjM0LDQ4MjM1LDQ4MjM2LDQ4MjM3LDQ4MjM4LDQ4MjM5LDQ4MjQwLDQ4MjQxLDQ4MjQyLDQ4MjQzLDQ4MjQ0LDQ4MjQ1LDQ4MjQ2LDQ4MjQ3LDQ4MjQ4LDQ4MjQ5LDQ4MjUwLDQ4MjUxLDQ4MjUyLDQ4MjUzLDQ4MjU0LDQ4MjU1''@;'; put 'put ''LDQ4MjU2LDQ4MjU3LDQ4MjU4LDQ4MjU5LDQ4MjYyLDQ4MjYzLDQ4MjY1LDQ4MjY2LDQ4MjY5LDQ4MjcxLDQ4MjcyLDQ4MjczLDQ4Mjc0LDQ4Mjc1LDQ4Mjc4LDQ4MjgwLDQ4MjgzLDQ4Mjg0LDQ4Mjg1LDQ4Mjg2LDQ4Mjg3LDQ4MjkwLDQ4MjkxLDQ4MjkzLDQ4Mjk0LDQ4Mjk3LDQ4Mjk4LDQ4''@;'; put 'put ''Mjk5LDQ4MzAwLDQ4MzAxLDQ4MzAyLDQ4MzAzLDQ4MzA2LDQ4MzEwLDQ4MzExLDQ4MzEyLDQ4MzEzLDQ4MzE0LDQ4MzE1LDQ4MzE4LDQ4MzE5LDQ4MzIxLDQ4MzIyLDQ4MzIzLDQ4MzI1LDQ4MzI2LDQ4MzI3LDQ4MzI4LDQ4MzI5LDQ4MzMwLDQ4MzMxLDQ4MzMyLDQ4MzM0LDQ4MzM4LDQ4MzM5''@;'; put 'put ''LDQ4MzQwLDQ4MzQyLDQ4MzQzLDQ4MzQ1LDQ4MzQ2LDQ4MzQ3LDQ4MzQ5LDQ4MzUwLDQ4MzUxLDQ4MzUyLDQ4MzUzLDQ4MzU0LDQ4MzU1LDQ4MzU2LDQ4MzU3LDQ4MzU4LDQ4MzU5LDQ4MzYwLDQ4MzYxLDQ4MzYyLDQ4MzYzLDQ4MzY0LDQ4MzY1LDQ4MzY2LDQ4MzY3LDQ4MzY4LDQ4MzY5LDQ4''@;'; put 'put ''MzcwLDQ4MzcxLDQ4Mzc1LDQ4Mzc3LDQ4Mzc4LDQ4Mzc5LDQ4MzgxLDQ4MzgyLDQ4MzgzLDQ4Mzg0LDQ4Mzg1LDQ4Mzg2LDQ4Mzg3LDQ4MzkwLDQ4MzkyLDQ4Mzk0LDQ4Mzk1LDQ4Mzk2LDQ4Mzk3LDQ4Mzk4LDQ4Mzk5LDQ4NDAxLDQ4NDAyLDQ4NDAzLDQ4NDA1LDQ4NDA2LDQ4NDA3LDQ4NDA4''@;'; put 'put ''LDQ4NDA5LDQ4NDEwLDQ4NDExLDQ4NDEyLDQ4NDEzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4NDE0LDQ4NDE1LDQ4NDE2LDQ4NDE3LDQ4NDE4LDQ4NDE5LDQ4NDIxLDQ4NDIyLDQ4NDIzLDQ4NDI0LDQ4NDI1LDQ4NDI2LDQ4NDI3LDQ4NDI5LDQ4NDMwLDQ4NDMxLDQ4NDMyLDQ4''@;'; put 'put ''NDMzLDQ4NDM0LDQ4NDM1LDQ4NDM2LDQ4NDM3LDQ4NDM4LDQ4NDM5LDQ4NDQwLDQ4NDQxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4NDQyLDQ4NDQzLDQ4NDQ0LDQ4NDQ1LDQ4NDQ2LDQ4NDQ3LDQ4NDQ5LDQ4NDUwLDQ4NDUxLDQ4NDUyLDQ4NDUzLDQ4NDU0LDQ4NDU1LDQ4NDU4''@;'; put 'put ''LDQ4NDU5LDQ4NDYxLDQ4NDYyLDQ4NDYzLDQ4NDY1LDQ4NDY2LDQ4NDY3LDQ4NDY4LDQ4NDY5LDQ4NDcwLDQ4NDcxLDQ4NDc0LDQ4NDc1LDQ4NDc2LDQ4NDc3LDQ4NDc4LDQ4NDc5LDQ4NDgwLDQ4NDgxLDQ4NDgyLDQ4NDgzLDQ4NDg1LDQ4NDg2LDQ4NDg3LDQ4NDg5LDQ4NDkwLDQ4NDkxLDQ4''@;'; put 'put ''NDkyLDQ4NDkzLDQ4NDk0LDQ4NDk1LDQ4NDk2LDQ4NDk3LDQ4NDk4LDQ4NDk5LDQ4NTAwLDQ4NTAxLDQ4NTAyLDQ4NTAzLDQ4NTA0LDQ4NTA1LDQ4NTA2LDQ4NTA3LDQ4NTA4LDQ4NTA5LDQ4NTEwLDQ4NTExLDQ4NTE0LDQ4NTE1LDQ4NTE3LDQ4NTE4LDQ4NTIzLDQ4NTI0LDQ4NTI1LDQ4NTI2''@;'; put 'put ''LDQ4NTI3LDQ4NTMwLDQ4NTMyLDQ4NTM0LDQ4NTM1LDQ4NTM2LDQ4NTM5LDQ4NTQxLDQ4NTQyLDQ4NTQzLDQ4NTQ0LDQ4NTQ1LDQ4NTQ2LDQ4NTQ3LDQ4NTQ5LDQ4NTUwLDQ4NTUxLDQ4NTUyLDQ4NTUzLDQ4NTU0LDQ4NTU1LDQ4NTU2LDQ4NTU3LDQ4NTU4LDQ4NTU5LDQ4NTYxLDQ4NTYyLDQ4''@;'; put 'put ''NTYzLDQ4NTY0LDQ4NTY1LDQ4NTY2LDQ4NTY3LDQ4NTY5LDQ4NTcwLDQ4NTcxLDQ4NTcyLDQ4NTczLDQ4NTc0LDQ4NTc1LDQ4NTc2LDQ4NTc3LDQ4NTc4LDQ4NTc5LDQ4NTgwLDQ4NTgxLDQ4NTgyLDQ4NTgzLDQ4NTg0LDQ4NTg1LDQ4NTg2LDQ4NTg3LDQ4NTg4LDQ4NTg5LDQ4NTkwLDQ4NTkx''@;'; put 'put ''LDQ4NTkyLDQ4NTkzLDQ4NTk0LDQ4NTk1LDQ4NTk4LDQ4NTk5LDQ4NjAxLDQ4NjAyLDQ4NjAzLDQ4NjA1LDQ4NjA2LDQ4NjA3LDQ4NjA4LDQ4NjA5LDQ4NjEwLDQ4NjExLDQ4NjEyLDQ4NjEzLDQ4NjE0LDQ4NjE1LDQ4NjE2LDQ4NjE4LDQ4NjE5LDQ4NjIwLDQ4NjIxLDQ4NjIyLDQ4NjIzLDQ4''@;'; put 'put ''NjI1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4NjI2LDQ4NjI3LDQ4NjI5LDQ4NjMwLDQ4NjMxLDQ4NjMzLDQ4NjM0LDQ4NjM1LDQ4NjM2LDQ4NjM3LDQ4NjM4LDQ4NjM5LDQ4NjQxLDQ4NjQyLDQ4NjQ0LDQ4NjQ2LDQ4NjQ3LDQ4NjQ4LDQ4NjQ5LDQ4NjUwLDQ4NjUxLDQ4NjU0''@;'; put 'put ''LDQ4NjU1LDQ4NjU3LDQ4NjU4LDQ4NjU5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4NjYxLDQ4NjYyLDQ4NjYzLDQ4NjY0LDQ4NjY1LDQ4NjY2LDQ4NjY3LDQ4NjcwLDQ4NjcyLDQ4NjczLDQ4Njc0LDQ4Njc1LDQ4Njc2LDQ4Njc3LDQ4Njc4LDQ4Njc5LDQ4NjgwLDQ4NjgxLDQ4''@;'; put 'put ''NjgyLDQ4NjgzLDQ4Njg0LDQ4Njg1LDQ4Njg2LDQ4Njg3LDQ4Njg4LDQ4Njg5LDQ4NjkwLDQ4NjkxLDQ4NjkyLDQ4NjkzLDQ4Njk0LDQ4Njk1LDQ4Njk2LDQ4Njk3LDQ4Njk4LDQ4Njk5LDQ4NzAwLDQ4NzAxLDQ4NzAyLDQ4NzAzLDQ4NzA0LDQ4NzA1LDQ4NzA2LDQ4NzA3LDQ4NzEwLDQ4NzEx''@;'; put 'put ''LDQ4NzEzLDQ4NzE0LDQ4NzE1LDQ4NzE3LDQ4NzE5LDQ4NzIwLDQ4NzIxLDQ4NzIyLDQ4NzIzLDQ4NzI2LDQ4NzI4LDQ4NzMyLDQ4NzMzLDQ4NzM0LDQ4NzM1LDQ4NzM4LDQ4NzM5LDQ4NzQxLDQ4NzQyLDQ4NzQzLDQ4NzQ1LDQ4NzQ3LDQ4NzQ4LDQ4NzQ5LDQ4NzUwLDQ4NzUxLDQ4NzU0LDQ4''@;'; put 'put ''NzU4LDQ4NzU5LDQ4NzYwLDQ4NzYxLDQ4NzYyLDQ4NzY2LDQ4NzY3LDQ4NzY5LDQ4NzcwLDQ4NzcxLDQ4NzczLDQ4Nzc0LDQ4Nzc1LDQ4Nzc2LDQ4Nzc3LDQ4Nzc4LDQ4Nzc5LDQ4NzgyLDQ4Nzg2LDQ4Nzg3LDQ4Nzg4LDQ4Nzg5LDQ4NzkwLDQ4NzkxLDQ4Nzk0LDQ4Nzk1LDQ4Nzk2LDQ4Nzk3''@;'; put 'put ''LDQ4Nzk4LDQ4Nzk5LDQ4ODAwLDQ4ODAxLDQ4ODAyLDQ4ODAzLDQ4ODA0LDQ4ODA1LDQ4ODA2LDQ4ODA3LDQ4ODA5LDQ4ODEwLDQ4ODExLDQ4ODEyLDQ4ODEzLDQ4ODE0LDQ4ODE1LDQ4ODE2LDQ4ODE3LDQ4ODE4LDQ4ODE5LDQ4ODIwLDQ4ODIxLDQ4ODIyLDQ4ODIzLDQ4ODI0LDQ4ODI1LDQ4''@;'; put 'put ''ODI2LDQ4ODI3LDQ4ODI4LDQ4ODI5LDQ4ODMwLDQ4ODMxLDQ4ODMyLDQ4ODMzLDQ4ODM0LDQ4ODM1LDQ4ODM2LDQ4ODM3LDQ4ODM4LDQ4ODM5LDQ4ODQwLDQ4ODQxLDQ4ODQyLDQ4ODQzLDQ4ODQ0LDQ4ODQ1LDQ4ODQ2LDQ4ODQ3LDQ4ODUwLDQ4ODUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLDQ4ODUzLDQ4ODU0LDQ4ODU3LDQ4ODU4LDQ4ODU5LDQ4ODYwLDQ4ODYxLDQ4ODYyLDQ4ODYzLDQ4ODY1LDQ4ODY2LDQ4ODcwLDQ4ODcxLDQ4ODcyLDQ4ODczLDQ4ODc0LDQ4ODc1LDQ4ODc3LDQ4ODc4LDQ4ODc5LDQ4ODgwLDQ4ODgxLDQ4ODgyLDQ4ODgzLDQ4ODg0LDQ4ODg1LG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4ODg2LDQ4ODg3LDQ4ODg4LDQ4ODg5LDQ4ODkwLDQ4ODkxLDQ4ODkyLDQ4ODkzLDQ4ODk0LDQ4ODk1LDQ4ODk2LDQ4ODk4LDQ4ODk5LDQ4OTAwLDQ4OTAxLDQ4OTAyLDQ4OTAzLDQ4OTA2LDQ4OTA3LDQ4OTA4LDQ4OTA5LDQ4OTEwLDQ4OTEx''@;'; put 'put ''LDQ4OTEyLDQ4OTEzLDQ4OTE0LDQ4OTE1LDQ4OTE2LDQ4OTE3LDQ4OTE4LDQ4OTE5LDQ4OTIyLDQ4OTI2LDQ4OTI3LDQ4OTI4LDQ4OTI5LDQ4OTMwLDQ4OTMxLDQ4OTMyLDQ4OTMzLDQ4OTM0LDQ4OTM1LDQ4OTM2LDQ4OTM3LDQ4OTM4LDQ4OTM5LDQ4OTQwLDQ4OTQxLDQ4OTQyLDQ4OTQzLDQ4''@;'; put 'put ''OTQ0LDQ4OTQ1LDQ4OTQ2LDQ4OTQ3LDQ4OTQ4LDQ4OTQ5LDQ4OTUwLDQ4OTUxLDQ4OTUyLDQ4OTUzLDQ4OTU0LDQ4OTU1LDQ4OTU2LDQ4OTU3LDQ4OTU4LDQ4OTU5LDQ4OTYyLDQ4OTYzLDQ4OTY1LDQ4OTY2LDQ4OTY3LDQ4OTY5LDQ4OTcwLDQ4OTcxLDQ4OTcyLDQ4OTczLDQ4OTc0LDQ4OTc1''@;'; put 'put ''LDQ4OTc4LDQ4OTc5LDQ4OTgwLDQ4OTgyLDQ4OTgzLDQ4OTg0LDQ4OTg1LDQ4OTg2LDQ4OTg3LDQ4OTg4LDQ4OTg5LDQ4OTkwLDQ4OTkxLDQ4OTkyLDQ4OTkzLDQ4OTk0LDQ4OTk1LDQ4OTk2LDQ4OTk3LDQ4OTk4LDQ4OTk5LDQ5ZTMsNDkwMDEsNDkwMDIsNDkwMDMsNDkwMDQsNDkwMDUsNDkw''@;'; put 'put ''MDYsNDkwMDcsNDkwMDgsNDkwMDksNDkwMTAsNDkwMTEsNDkwMTIsNDkwMTMsNDkwMTQsNDkwMTUsNDkwMTYsNDkwMTcsNDkwMTgsNDkwMTksNDkwMjAsNDkwMjEsNDkwMjIsNDkwMjMsNDkwMjQsNDkwMjUsNDkwMjYsNDkwMjcsNDkwMjgsNDkwMjksNDkwMzAsNDkwMzEsNDkwMzIsNDkwMzMs''@;'; put 'put ''NDkwMzQsNDkwMzUsNDkwMzYsNDkwMzcsNDkwMzgsNDkwMzksNDkwNDAsNDkwNDEsNDkwNDIsNDkwNDMsNDkwNDUsNDkwNDYsNDkwNDcsNDkwNDgsNDkwNDksNDkwNTAsNDkwNTEsNDkwNTIsNDkwNTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkwNTQsNDkwNTUsNDkwNTYsNDkw''@;'; put 'put ''NTcsNDkwNTgsNDkwNTksNDkwNjAsNDkwNjEsNDkwNjIsNDkwNjMsNDkwNjQsNDkwNjUsNDkwNjYsNDkwNjcsNDkwNjgsNDkwNjksNDkwNzAsNDkwNzEsNDkwNzMsNDkwNzQsNDkwNzUsNDkwNzYsNDkwNzcsNDkwNzgsNDkwNzksNDkwODAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''NDkwODEsNDkwODIsNDkwODMsNDkwODQsNDkwODUsNDkwODYsNDkwODcsNDkwODgsNDkwODksNDkwOTAsNDkwOTEsNDkwOTIsNDkwOTQsNDkwOTUsNDkwOTYsNDkwOTcsNDkwOTgsNDkwOTksNDkxMDIsNDkxMDMsNDkxMDUsNDkxMDYsNDkxMDcsNDkxMDksNDkxMTAsNDkxMTEsNDkxMTIsNDkx''@;'; put 'put ''MTMsNDkxMTQsNDkxMTUsNDkxMTcsNDkxMTgsNDkxMjAsNDkxMjIsNDkxMjMsNDkxMjQsNDkxMjUsNDkxMjYsNDkxMjcsNDkxMjgsNDkxMjksNDkxMzAsNDkxMzEsNDkxMzIsNDkxMzMsNDkxMzQsNDkxMzUsNDkxMzYsNDkxMzcsNDkxMzgsNDkxMzksNDkxNDAsNDkxNDEsNDkxNDIsNDkxNDMs''@;'; put 'put ''NDkxNDQsNDkxNDUsNDkxNDYsNDkxNDcsNDkxNDgsNDkxNDksNDkxNTAsNDkxNTEsNDkxNTIsNDkxNTMsNDkxNTQsNDkxNTUsNDkxNTYsNDkxNTcsNDkxNTgsNDkxNTksNDkxNjAsNDkxNjEsNDkxNjIsNDkxNjMsNDkxNjQsNDkxNjUsNDkxNjYsNDkxNjcsNDkxNjgsNDkxNjksNDkxNzAsNDkx''@;'; put 'put ''NzEsNDkxNzIsNDkxNzMsNDkxNzQsNDkxNzUsNDkxNzYsNDkxNzcsNDkxNzgsNDkxNzksNDkxODAsNDkxODEsNDkxODIsNDkxODMsNDkxODQsNDkxODUsNDkxODYsNDkxODcsNDkxODgsNDkxODksNDkxOTAsNDkxOTEsNDkxOTIsNDkxOTMsNDkxOTQsNDkxOTUsNDkxOTYsNDkxOTcsNDkxOTgs''@;'; put 'put ''NDkxOTksNDkyMDAsNDkyMDEsNDkyMDIsNDkyMDMsNDkyMDQsNDkyMDUsNDkyMDYsNDkyMDcsNDkyMDgsNDkyMDksNDkyMTAsNDkyMTEsNDkyMTMsNDkyMTQsNDkyMTUsNDkyMTYsNDkyMTcsNDkyMTgsNDkyMTksNDkyMjAsNDkyMjEsNDkyMjIsNDkyMjMsNDkyMjQsNDkyMjUsNDkyMjYsNDky''@;'; put 'put ''MjcsNDkyMjgsNDkyMjksNDkyMzAsNDkyMzEsNDkyMzIsNDkyMzQsNDkyMzUsNDkyMzYsNDkyMzcsNDkyMzgsNDkyMzksNDkyNDEsNDkyNDIsNDkyNDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkyNDUsNDkyNDYsNDkyNDcsNDkyNDksNDkyNTAsNDkyNTEsNDkyNTIsNDkyNTMs''@;'; put 'put ''NDkyNTQsNDkyNTUsNDkyNTgsNDkyNTksNDkyNjAsNDkyNjEsNDkyNjIsNDkyNjMsNDkyNjQsNDkyNjUsNDkyNjYsNDkyNjcsNDkyNjgsNDkyNjksNDkyNzAsNDkyNzEsNDkyNzIsNDkyNzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkyNzQsNDkyNzUsNDkyNzYsNDkyNzcsNDky''@;'; put 'put ''NzgsNDkyNzksNDkyODAsNDkyODEsNDkyODIsNDkyODMsNDkyODQsNDkyODUsNDkyODYsNDkyODcsNDkyODgsNDkyODksNDkyOTAsNDkyOTEsNDkyOTIsNDkyOTMsNDkyOTQsNDkyOTUsNDkyOTgsNDkyOTksNDkzMDEsNDkzMDIsNDkzMDMsNDkzMDUsNDkzMDYsNDkzMDcsNDkzMDgsNDkzMDks''@;'; put 'put ''NDkzMTAsNDkzMTEsNDkzMTQsNDkzMTYsNDkzMTgsNDkzMTksNDkzMjAsNDkzMjEsNDkzMjIsNDkzMjMsNDkzMjYsNDkzMjksNDkzMzAsNDkzMzUsNDkzMzYsNDkzMzcsNDkzMzgsNDkzMzksNDkzNDIsNDkzNDYsNDkzNDcsNDkzNDgsNDkzNTAsNDkzNTEsNDkzNTQsNDkzNTUsNDkzNTcsNDkz''@;'; put 'put ''NTgsNDkzNTksNDkzNjEsNDkzNjIsNDkzNjMsNDkzNjQsNDkzNjUsNDkzNjYsNDkzNjcsNDkzNzAsNDkzNzQsNDkzNzUsNDkzNzYsNDkzNzcsNDkzNzgsNDkzNzksNDkzODIsNDkzODMsNDkzODUsNDkzODYsNDkzODcsNDkzODksNDkzOTAsNDkzOTEsNDkzOTIsNDkzOTMsNDkzOTQsNDkzOTUs''@;'; put 'put ''NDkzOTgsNDk0MDAsNDk0MDIsNDk0MDMsNDk0MDQsNDk0MDUsNDk0MDYsNDk0MDcsNDk0MDksNDk0MTAsNDk0MTEsNDk0MTMsNDk0MTQsNDk0MTUsNDk0MTcsNDk0MTgsNDk0MTksNDk0MjAsNDk0MjEsNDk0MjIsNDk0MjMsNDk0MjUsNDk0MjYsNDk0MjcsNDk0MjgsNDk0MzAsNDk0MzEsNDk0''@;'; put 'put ''MzIsNDk0MzMsNDk0MzQsNDk0MzUsNDk0NDEsNDk0NDIsNDk0NDUsNDk0NDgsNDk0NDksNDk0NTAsNDk0NTEsNDk0NTQsNDk0NTgsNDk0NTksNDk0NjAsNDk0NjEsNDk0NjMsNDk0NjYsNDk0NjcsNDk0NjksNDk0NzAsNDk0NzEsNDk0NzMsNDk0NzQsNDk0NzUsNDk0NzYsNDk0NzcsNDk0Nzgs''@;'; put 'put ''NDk0NzksNDk0ODIsNDk0ODYsNDk0ODcsNDk0ODgsNDk0ODksNDk0OTAsNDk0OTEsNDk0OTQsNDk0OTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk0OTcsNDk0OTgsNDk0OTksNDk1MDEsNDk1MDIsNDk1MDMsNDk1MDQsNDk1MDUsNDk1MDYsNDk1MDcsNDk1MTAsNDk1MTQsNDk1''@;'; put 'put ''MTUsNDk1MTYsNDk1MTcsNDk1MTgsNDk1MTksNDk1MjEsNDk1MjIsNDk1MjMsNDk1MjUsNDk1MjYsNDk1MjcsNDk1MjksNDk1MzAsNDk1MzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk1MzIsNDk1MzMsNDk1MzQsNDk1MzUsNDk1MzYsNDk1MzcsNDk1MzgsNDk1MzksNDk1NDAs''@;'; put 'put ''NDk1NDIsNDk1NDMsNDk1NDQsNDk1NDUsNDk1NDYsNDk1NDcsNDk1NTEsNDk1NTMsNDk1NTQsNDk1NTUsNDk1NTcsNDk1NTksNDk1NjAsNDk1NjEsNDk1NjIsNDk1NjMsNDk1NjYsNDk1NjgsNDk1NzAsNDk1NzEsNDk1NzIsNDk1NzQsNDk1NzUsNDk1NzgsNDk1NzksNDk1ODEsNDk1ODIsNDk1''@;'; put 'put ''ODMsNDk1ODUsNDk1ODYsNDk1ODcsNDk1ODgsNDk1ODksNDk1OTAsNDk1OTEsNDk1OTIsNDk1OTMsNDk1OTQsNDk1OTUsNDk1OTYsNDk1OTgsNDk1OTksNDk2MDAsNDk2MDEsNDk2MDIsNDk2MDMsNDk2MDUsNDk2MDYsNDk2MDcsNDk2MDksNDk2MTAsNDk2MTEsNDk2MTMsNDk2MTQsNDk2MTUs''@;'; put 'put ''NDk2MTYsNDk2MTcsNDk2MTgsNDk2MTksNDk2MjEsNDk2MjIsNDk2MjUsNDk2MjYsNDk2MjcsNDk2MjgsNDk2MjksNDk2MzAsNDk2MzEsNDk2MzMsNDk2MzQsNDk2MzUsNDk2MzcsNDk2MzgsNDk2MzksNDk2NDEsNDk2NDIsNDk2NDMsNDk2NDQsNDk2NDUsNDk2NDYsNDk2NDcsNDk2NTAsNDk2''@;'; put 'put ''NTIsNDk2NTMsNDk2NTQsNDk2NTUsNDk2NTYsNDk2NTcsNDk2NTgsNDk2NTksNDk2NjIsNDk2NjMsNDk2NjUsNDk2NjYsNDk2NjcsNDk2NjksNDk2NzAsNDk2NzEsNDk2NzIsNDk2NzMsNDk2NzQsNDk2NzUsNDk2NzgsNDk2ODAsNDk2ODIsNDk2ODMsNDk2ODQsNDk2ODUsNDk2ODYsNDk2ODcs''@;'; put 'put ''NDk2OTAsNDk2OTEsNDk2OTMsNDk2OTQsNDk2OTcsNDk2OTgsNDk2OTksNDk3MDAsNDk3MDEsNDk3MDIsNDk3MDMsNDk3MDYsNDk3MDgsNDk3MTAsNDk3MTIsNDk3MTUsNDk3MTcsNDk3MTgsNDk3MTksNDk3MjAsNDk3MjEsNDk3MjIsNDk3MjMsNDk3MjQsNDk3MjUsNDk3MjYsNDk3MjcsNDk3''@;'; put 'put ''MjgsNDk3MjksNDk3MzAsNDk3MzEsNDk3MzIsNDk3MzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk3MzQsNDk3MzUsNDk3MzcsNDk3MzgsNDk3MzksNDk3NDAsNDk3NDEsNDk3NDIsNDk3NDMsNDk3NDYsNDk3NDcsNDk3NDksNDk3NTAsNDk3NTEsNDk3NTMsNDk3NTQsNDk3NTUs''@;'; put 'put ''NDk3NTYsNDk3NTcsNDk3NTgsNDk3NTksNDk3NjEsNDk3NjIsNDk3NjMsNDk3NjQsNDk3NjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk3NjcsNDk3NjgsNDk3NjksNDk3NzAsNDk3NzEsNDk3NzQsNDk3NzUsNDk3NzcsNDk3NzgsNDk3NzksNDk3ODEsNDk3ODIsNDk3ODMsNDk3''@;'; put 'put ''ODQsNDk3ODUsNDk3ODYsNDk3ODcsNDk3OTAsNDk3OTIsNDk3OTQsNDk3OTUsNDk3OTYsNDk3OTcsNDk3OTgsNDk3OTksNDk4MDIsNDk4MDMsNDk4MDQsNDk4MDUsNDk4MDYsNDk4MDcsNDk4MDksNDk4MTAsNDk4MTEsNDk4MTIsNDk4MTMsNDk4MTQsNDk4MTUsNDk4MTcsNDk4MTgsNDk4MjAs''@;'; put 'put ''NDk4MjIsNDk4MjMsNDk4MjQsNDk4MjUsNDk4MjYsNDk4MjcsNDk4MzAsNDk4MzEsNDk4MzMsNDk4MzQsNDk4MzUsNDk4MzgsNDk4MzksNDk4NDAsNDk4NDEsNDk4NDIsNDk4NDMsNDk4NDYsNDk4NDgsNDk4NTAsNDk4NTEsNDk4NTIsNDk4NTMsNDk4NTQsNDk4NTUsNDk4NTYsNDk4NTcsNDk4''@;'; put 'put ''NTgsNDk4NTksNDk4NjAsNDk4NjEsNDk4NjIsNDk4NjMsNDk4NjQsNDk4NjUsNDk4NjYsNDk4NjcsNDk4NjgsNDk4NjksNDk4NzAsNDk4NzEsNDk4NzIsNDk4NzMsNDk4NzQsNDk4NzUsNDk4NzYsNDk4NzcsNDk4NzgsNDk4NzksNDk4ODAsNDk4ODEsNDk4ODIsNDk4ODMsNDk4ODYsNDk4ODcs''@;'; put 'put ''NDk4ODksNDk4OTAsNDk4OTMsNDk4OTQsNDk4OTUsNDk4OTYsNDk4OTcsNDk4OTgsNDk5MDIsNDk5MDQsNDk5MDYsNDk5MDcsNDk5MDgsNDk5MDksNDk5MTEsNDk5MTQsNDk5MTcsNDk5MTgsNDk5MTksNDk5MjEsNDk5MjIsNDk5MjMsNDk5MjQsNDk5MjUsNDk5MjYsNDk5MjcsNDk5MzAsNDk5''@;'; put 'put ''MzEsNDk5MzQsNDk5MzUsNDk5MzYsNDk5MzcsNDk5MzgsNDk5NDIsNDk5NDMsNDk5NDUsNDk5NDYsNDk5NDcsNDk5NDksNDk5NTAsNDk5NTEsNDk5NTIsNDk5NTMsNDk5NTQsNDk5NTUsNDk5NTgsNDk5NTksNDk5NjIsNDk5NjMsNDk5NjQsNDk5NjUsNDk5NjYsNDk5NjcsNDk5NjgsNDk5Njks''@;'; put 'put ''NDk5NzAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk5NzEsNDk5NzIsNDk5NzMsNDk5NzQsNDk5NzUsNDk5NzYsNDk5NzcsNDk5NzgsNDk5NzksNDk5ODAsNDk5ODEsNDk5ODIsNDk5ODMsNDk5ODQsNDk5ODUsNDk5ODYsNDk5ODcsNDk5ODgsNDk5OTAsNDk5OTEsNDk5OTIsNDk5''@;'; put 'put ''OTMsNDk5OTQsNDk5OTUsNDk5OTYsNDk5OTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk5OTgsNDk5OTksNWU0LDUwMDAxLDUwMDAyLDUwMDAzLDUwMDA0LDUwMDA1LDUwMDA2LDUwMDA3LDUwMDA4LDUwMDA5LDUwMDEwLDUwMDExLDUwMDEyLDUwMDEzLDUwMDE0LDUwMDE1LDUw''@;'; put 'put ''MDE2LDUwMDE3LDUwMDE4LDUwMDE5LDUwMDIwLDUwMDIxLDUwMDIyLDUwMDIzLDUwMDI2LDUwMDI3LDUwMDI5LDUwMDMwLDUwMDMxLDUwMDMzLDUwMDM1LDUwMDM2LDUwMDM3LDUwMDM4LDUwMDM5LDUwMDQyLDUwMDQzLDUwMDQ2LDUwMDQ3LDUwMDQ4LDUwMDQ5LDUwMDUwLDUwMDUxLDUwMDUz''@;'; put 'put ''LDUwMDU0LDUwMDU1LDUwMDU3LDUwMDU4LDUwMDU5LDUwMDYxLDUwMDYyLDUwMDYzLDUwMDY0LDUwMDY1LDUwMDY2LDUwMDY3LDUwMDY4LDUwMDY5LDUwMDcwLDUwMDcxLDUwMDcyLDUwMDczLDUwMDc0LDUwMDc1LDUwMDc2LDUwMDc3LDUwMDc4LDUwMDc5LDUwMDgwLDUwMDgxLDUwMDgyLDUw''@;'; put 'put ''MDgzLDUwMDg0LDUwMDg1LDUwMDg2LDUwMDg3LDUwMDg4LDUwMDg5LDUwMDkwLDUwMDkxLDUwMDkyLDUwMDkzLDUwMDk0LDUwMDk1LDUwMDk2LDUwMDk3LDUwMDk4LDUwMDk5LDUwMTAwLDUwMTAxLDUwMTAyLDUwMTAzLDUwMTA0LDUwMTA1LDUwMTA2LDUwMTA3LDUwMTA4LDUwMTA5LDUwMTEw''@;'; put 'put ''LDUwMTExLDUwMTEzLDUwMTE0LDUwMTE1LDUwMTE2LDUwMTE3LDUwMTE4LDUwMTE5LDUwMTIwLDUwMTIxLDUwMTIyLDUwMTIzLDUwMTI0LDUwMTI1LDUwMTI2LDUwMTI3LDUwMTI4LDUwMTI5LDUwMTMwLDUwMTMxLDUwMTMyLDUwMTMzLDUwMTM0LDUwMTM1LDUwMTM4LDUwMTM5LDUwMTQxLDUw''@;'; put 'put ''MTQyLDUwMTQ1LDUwMTQ3LDUwMTQ4LDUwMTQ5LDUwMTUwLDUwMTUxLDUwMTU0LDUwMTU1LDUwMTU2LDUwMTU4LDUwMTU5LDUwMTYwLDUwMTYxLDUwMTYyLDUwMTYzLDUwMTY2LDUwMTY3LDUwMTY5LDUwMTcwLDUwMTcxLDUwMTcyLDUwMTczLDUwMTc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLDUwMTc1LDUwMTc2LDUwMTc3LDUwMTc4LDUwMTc5LDUwMTgwLDUwMTgxLDUwMTgyLDUwMTgzLDUwMTg1LDUwMTg2LDUwMTg3LDUwMTg4LDUwMTg5LDUwMTkwLDUwMTkxLDUwMTkzLDUwMTk0LDUwMTk1LDUwMTk2LDUwMTk3LDUwMTk4LDUwMTk5LDUwMjAwLDUwMjAxLDUwMjAyLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwMjAzLDUwMjA0LDUwMjA1LDUwMjA2LDUwMjA3LDUwMjA4LDUwMjA5LDUwMjEwLDUwMjExLDUwMjEzLDUwMjE0LDUwMjE1LDUwMjE2LDUwMjE3LDUwMjE4LDUwMjE5LDUwMjIxLDUwMjIyLDUwMjIzLDUwMjI1LDUwMjI2LDUwMjI3LDUwMjI5''@;'; put 'put ''LDUwMjMwLDUwMjMxLDUwMjMyLDUwMjMzLDUwMjM0LDUwMjM1LDUwMjM4LDUwMjM5LDUwMjQwLDUwMjQxLDUwMjQyLDUwMjQzLDUwMjQ0LDUwMjQ1LDUwMjQ2LDUwMjQ3LDUwMjQ5LDUwMjUwLDUwMjUxLDUwMjUyLDUwMjUzLDUwMjU0LDUwMjU1LDUwMjU2LDUwMjU3LDUwMjU4LDUwMjU5LDUw''@;'; put 'put ''MjYwLDUwMjYxLDUwMjYyLDUwMjYzLDUwMjY0LDUwMjY1LDUwMjY2LDUwMjY3LDUwMjY4LDUwMjY5LDUwMjcwLDUwMjcxLDUwMjcyLDUwMjczLDUwMjc0LDUwMjc1LDUwMjc4LDUwMjc5LDUwMjgxLDUwMjgyLDUwMjgzLDUwMjg1LDUwMjg2LDUwMjg3LDUwMjg4LDUwMjg5LDUwMjkwLDUwMjkx''@;'; put 'put ''LDUwMjk0LDUwMjk1LDUwMjk2LDUwMjk4LDUwMjk5LDUwMzAwLDUwMzAxLDUwMzAyLDUwMzAzLDUwMzA1LDUwMzA2LDUwMzA3LDUwMzA4LDUwMzA5LDUwMzEwLDUwMzExLDUwMzEyLDUwMzEzLDUwMzE0LDUwMzE1LDUwMzE2LDUwMzE3LDUwMzE4LDUwMzE5LDUwMzIwLDUwMzIxLDUwMzIyLDUw''@;'; put 'put ''MzIzLDUwMzI1LDUwMzI2LDUwMzI3LDUwMzI4LDUwMzI5LDUwMzMwLDUwMzMxLDUwMzMzLDUwMzM0LDUwMzM1LDUwMzM2LDUwMzM3LDUwMzM4LDUwMzM5LDUwMzQwLDUwMzQxLDUwMzQyLDUwMzQzLDUwMzQ0LDUwMzQ1LDUwMzQ2LDUwMzQ3LDUwMzQ4LDUwMzQ5LDUwMzUwLDUwMzUxLDUwMzUy''@;'; put 'put ''LDUwMzUzLDUwMzU0LDUwMzU1LDUwMzU2LDUwMzU3LDUwMzU4LDUwMzU5LDUwMzYxLDUwMzYyLDUwMzYzLDUwMzY1LDUwMzY2LDUwMzY3LDUwMzY4LDUwMzY5LDUwMzcwLDUwMzcxLDUwMzcyLDUwMzczLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwMzc0LDUwMzc1LDUwMzc2LDUw''@;'; put 'put ''Mzc3LDUwMzc4LDUwMzc5LDUwMzgwLDUwMzgxLDUwMzgyLDUwMzgzLDUwMzg0LDUwMzg1LDUwMzg2LDUwMzg3LDUwMzg4LDUwMzg5LDUwMzkwLDUwMzkxLDUwMzkyLDUwMzkzLDUwMzk0LDUwMzk1LDUwMzk2LDUwMzk3LDUwMzk4LDUwMzk5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LDUwNDAwLDUwNDAxLDUwNDAyLDUwNDAzLDUwNDA0LDUwNDA1LDUwNDA2LDUwNDA3LDUwNDA4LDUwNDEwLDUwNDExLDUwNDEyLDUwNDEzLDUwNDE0LDUwNDE1LDUwNDE4LDUwNDE5LDUwNDIxLDUwNDIyLDUwNDIzLDUwNDI1LDUwNDI3LDUwNDI4LDUwNDI5LDUwNDMwLDUwNDM0LDUwNDM1LDUw''@;'; put 'put ''NDM2LDUwNDM3LDUwNDM4LDUwNDM5LDUwNDQwLDUwNDQxLDUwNDQyLDUwNDQzLDUwNDQ1LDUwNDQ2LDUwNDQ3LDUwNDQ5LDUwNDUwLDUwNDUxLDUwNDUzLDUwNDU0LDUwNDU1LDUwNDU2LDUwNDU3LDUwNDU4LDUwNDU5LDUwNDYxLDUwNDYyLDUwNDYzLDUwNDY0LDUwNDY1LDUwNDY2LDUwNDY3''@;'; put 'put ''LDUwNDY4LDUwNDY5LDUwNDcwLDUwNDcxLDUwNDc0LDUwNDc1LDUwNDc3LDUwNDc4LDUwNDc5LDUwNDgxLDUwNDgyLDUwNDgzLDUwNDg0LDUwNDg1LDUwNDg2LDUwNDg3LDUwNDkwLDUwNDkyLDUwNDk0LDUwNDk1LDUwNDk2LDUwNDk3LDUwNDk4LDUwNDk5LDUwNTAyLDUwNTAzLDUwNTA3LDUw''@;'; put 'put ''NTExLDUwNTEyLDUwNTEzLDUwNTE0LDUwNTE4LDUwNTIyLDUwNTIzLDUwNTI0LDUwNTI3LDUwNTMwLDUwNTMxLDUwNTMzLDUwNTM0LDUwNTM1LDUwNTM3LDUwNTM4LDUwNTM5LDUwNTQwLDUwNTQxLDUwNTQyLDUwNTQzLDUwNTQ2LDUwNTUwLDUwNTUxLDUwNTUyLDUwNTUzLDUwNTU0LDUwNTU1''@;'; put 'put ''LDUwNTU4LDUwNTU5LDUwNTYxLDUwNTYyLDUwNTYzLDUwNTY1LDUwNTY2LDUwNTY4LDUwNTY5LDUwNTcwLDUwNTcxLDUwNTc0LDUwNTc2LDUwNTc4LDUwNTc5LDUwNTgwLDUwNTgyLDUwNTg1LDUwNTg2LDUwNTg3LDUwNTg5LDUwNTkwLDUwNTkxLDUwNTkzLDUwNTk0LDUwNTk1LDUwNTk2LDUw''@;'; put 'put ''NTk3LDUwNTk4LDUwNTk5LDUwNjAwLDUwNjAyLDUwNjAzLDUwNjA0LDUwNjA1LDUwNjA2LDUwNjA3LDUwNjA4LDUwNjA5LDUwNjEwLDUwNjExLDUwNjE0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwNjE1LDUwNjE4LDUwNjIzLDUwNjI0LDUwNjI1LDUwNjI2LDUwNjI3LDUwNjM1''@;'; put 'put ''LDUwNjM3LDUwNjM5LDUwNjQyLDUwNjQzLDUwNjQ1LDUwNjQ2LDUwNjQ3LDUwNjQ5LDUwNjUwLDUwNjUxLDUwNjUyLDUwNjUzLDUwNjU0LDUwNjU1LDUwNjU4LDUwNjYwLDUwNjYyLDUwNjYzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwNjY0LDUwNjY1LDUwNjY2LDUwNjY3LDUw''@;'; put 'put ''NjcxLDUwNjczLDUwNjc0LDUwNjc1LDUwNjc3LDUwNjgwLDUwNjgxLDUwNjgyLDUwNjgzLDUwNjkwLDUwNjkxLDUwNjkyLDUwNjk3LDUwNjk4LDUwNjk5LDUwNzAxLDUwNzAyLDUwNzAzLDUwNzA1LDUwNzA2LDUwNzA3LDUwNzA4LDUwNzA5LDUwNzEwLDUwNzExLDUwNzE0LDUwNzE3LDUwNzE4''@;'; put 'put ''LDUwNzE5LDUwNzIwLDUwNzIxLDUwNzIyLDUwNzIzLDUwNzI2LDUwNzI3LDUwNzI5LDUwNzMwLDUwNzMxLDUwNzM1LDUwNzM3LDUwNzM4LDUwNzQyLDUwNzQ0LDUwNzQ2LDUwNzQ4LDUwNzQ5LDUwNzUwLDUwNzUxLDUwNzU0LDUwNzU1LDUwNzU3LDUwNzU4LDUwNzU5LDUwNzYxLDUwNzYyLDUw''@;'; put 'put ''NzYzLDUwNzY0LDUwNzY1LDUwNzY2LDUwNzY3LDUwNzcwLDUwNzc0LDUwNzc1LDUwNzc2LDUwNzc3LDUwNzc4LDUwNzc5LDUwNzgyLDUwNzgzLDUwNzg1LDUwNzg2LDUwNzg3LDUwNzg4LDUwNzg5LDUwNzkwLDUwNzkxLDUwNzkyLDUwNzkzLDUwNzk0LDUwNzk1LDUwNzk3LDUwNzk4LDUwODAw''@;'; put 'put ''LDUwODAyLDUwODAzLDUwODA0LDUwODA1LDUwODA2LDUwODA3LDUwODEwLDUwODExLDUwODEzLDUwODE0LDUwODE1LDUwODE3LDUwODE4LDUwODE5LDUwODIwLDUwODIxLDUwODIyLDUwODIzLDUwODI2LDUwODI4LDUwODMwLDUwODMxLDUwODMyLDUwODMzLDUwODM0LDUwODM1LDUwODM4LDUw''@;'; put 'put ''ODM5LDUwODQxLDUwODQyLDUwODQzLDUwODQ1LDUwODQ2LDUwODQ3LDUwODQ4LDUwODQ5LDUwODUwLDUwODUxLDUwODU0LDUwODU2LDUwODU4LDUwODU5LDUwODYwLDUwODYxLDUwODYyLDUwODYzLDUwODY2LDUwODY3LDUwODY5LDUwODcwLDUwODcxLDUwODc1LDUwODc2LDUwODc3LDUwODc4''@;'; put 'put ''LDUwODc5LDUwODgyLDUwODg0LDUwODg2LDUwODg3LDUwODg4LDUwODg5LDUwODkwLDUwODkxLDUwODk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwODk1LDUwODk3LDUwODk4LDUwODk5LDUwOTAxLDUwOTAyLDUwOTAzLDUwOTA0LDUwOTA1LDUwOTA2LDUwOTA3LDUwOTEwLDUw''@;'; put 'put ''OTExLDUwOTE0LDUwOTE1LDUwOTE2LDUwOTE3LDUwOTE4LDUwOTE5LDUwOTIyLDUwOTIzLDUwOTI1LDUwOTI2LDUwOTI3LDUwOTI5LDUwOTMwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwOTMxLDUwOTMyLDUwOTMzLDUwOTM0LDUwOTM1LDUwOTM4LDUwOTM5LDUwOTQwLDUwOTQy''@;'; put 'put ''LDUwOTQzLDUwOTQ0LDUwOTQ1LDUwOTQ2LDUwOTQ3LDUwOTUwLDUwOTUxLDUwOTUzLDUwOTU0LDUwOTU1LDUwOTU3LDUwOTU4LDUwOTU5LDUwOTYwLDUwOTYxLDUwOTYyLDUwOTYzLDUwOTY2LDUwOTY4LDUwOTcwLDUwOTcxLDUwOTcyLDUwOTczLDUwOTc0LDUwOTc1LDUwOTc4LDUwOTc5LDUw''@;'; put 'put ''OTgxLDUwOTgyLDUwOTgzLDUwOTg1LDUwOTg2LDUwOTg3LDUwOTg4LDUwOTg5LDUwOTkwLDUwOTkxLDUwOTk0LDUwOTk2LDUwOTk4LDUxZTMsNTEwMDEsNTEwMDIsNTEwMDMsNTEwMDYsNTEwMDcsNTEwMDksNTEwMTAsNTEwMTEsNTEwMTMsNTEwMTQsNTEwMTUsNTEwMTYsNTEwMTcsNTEwMTks''@;'; put 'put ''NTEwMjIsNTEwMjQsNTEwMzMsNTEwMzQsNTEwMzUsNTEwMzcsNTEwMzgsNTEwMzksNTEwNDEsNTEwNDIsNTEwNDMsNTEwNDQsNTEwNDUsNTEwNDYsNTEwNDcsNTEwNDksNTEwNTAsNTEwNTIsNTEwNTMsNTEwNTQsNTEwNTUsNTEwNTYsNTEwNTcsNTEwNTgsNTEwNTksNTEwNjIsNTEwNjMsNTEw''@;'; put 'put ''NjUsNTEwNjYsNTEwNjcsNTEwNzEsNTEwNzIsNTEwNzMsNTEwNzQsNTEwNzgsNTEwODMsNTEwODQsNTEwODUsNTEwODcsNTEwOTAsNTEwOTEsNTEwOTMsNTEwOTcsNTEwOTksNTExMDAsNTExMDEsNTExMDIsNTExMDMsNTExMDYsNTExMTEsNTExMTIsNTExMTMsNTExMTQsNTExMTUsNTExMTgs''@;'; put 'put ''NTExMTksNTExMjEsNTExMjIsNTExMjMsNTExMjUsNTExMjYsNTExMjcsNTExMjgsNTExMjksNTExMzAsNTExMzEsNTExMzQsNTExMzgsNTExMzksNTExNDAsNTExNDEsNTExNDIsNTExNDMsNTExNDYsNTExNDcsNTExNDksNTExNTEsNTExNTMsNTExNTQsNTExNTUsNTExNTYsNTExNTcsNTEx''@;'; put 'put ''NTgsNTExNTksNTExNjEsNTExNjIsNTExNjMsNTExNjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTExNjYsNTExNjcsNTExNjgsNTExNjksNTExNzAsNTExNzEsNTExNzMsNTExNzQsNTExNzUsNTExNzcsNTExNzgsNTExNzksNTExODEsNTExODIsNTExODMsNTExODQsNTExODUs''@;'; put 'put ''NTExODYsNTExODcsNTExODgsNTExODksNTExOTAsNTExOTEsNTExOTIsNTExOTMsNTExOTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTExOTUsNTExOTYsNTExOTcsNTExOTgsNTExOTksNTEyMDIsNTEyMDMsNTEyMDUsNTEyMDYsNTEyMDcsNTEyMDksNTEyMTEsNTEyMTIsNTEy''@;'; put 'put ''MTMsNTEyMTQsNTEyMTUsNTEyMTgsNTEyMjAsNTEyMjMsNTEyMjQsNTEyMjUsNTEyMjYsNTEyMjcsNTEyMzAsNTEyMzEsNTEyMzMsNTEyMzQsNTEyMzUsNTEyMzcsNTEyMzgsNTEyMzksNTEyNDAsNTEyNDEsNTEyNDIsNTEyNDMsNTEyNDYsNTEyNDgsNTEyNTAsNTEyNTEsNTEyNTIsNTEyNTMs''@;'; put 'put ''NTEyNTQsNTEyNTUsNTEyNTcsNTEyNTgsNTEyNTksNTEyNjEsNTEyNjIsNTEyNjMsNTEyNjUsNTEyNjYsNTEyNjcsNTEyNjgsNTEyNjksNTEyNzAsNTEyNzEsNTEyNzQsNTEyNzUsNTEyNzgsNTEyNzksNTEyODAsNTEyODEsNTEyODIsNTEyODMsNTEyODUsNTEyODYsNTEyODcsNTEyODgsNTEy''@;'; put 'put ''ODksNTEyOTAsNTEyOTEsNTEyOTIsNTEyOTMsNTEyOTQsNTEyOTUsNTEyOTYsNTEyOTcsNTEyOTgsNTEyOTksNTEzMDAsNTEzMDEsNTEzMDIsNTEzMDMsNTEzMDQsNTEzMDUsNTEzMDYsNTEzMDcsNTEzMDgsNTEzMDksNTEzMTAsNTEzMTEsNTEzMTQsNTEzMTUsNTEzMTcsNTEzMTgsNTEzMTks''@;'; put 'put ''NTEzMjEsNTEzMjMsNTEzMjQsNTEzMjUsNTEzMjYsNTEzMjcsNTEzMzAsNTEzMzIsNTEzMzYsNTEzMzcsNTEzMzgsNTEzNDIsNTEzNDMsNTEzNDQsNTEzNDUsNTEzNDYsNTEzNDcsNTEzNDksNTEzNTAsNTEzNTEsNTEzNTIsNTEzNTMsNTEzNTQsNTEzNTUsNTEzNTYsNTEzNTgsNTEzNjAsNTEz''@;'; put 'put ''NjIsNTEzNjMsNTEzNjQsNTEzNjUsNTEzNjYsNTEzNjcsNTEzNjksNTEzNzAsNTEzNzEsNTEzNzIsNTEzNzMsNTEzNzQsNTEzNzUsNTEzNzYsNTEzNzcsNTEzNzgsNTEzNzksNTEzODAsNTEzODEsNTEzODIsNTEzODMsNTEzODQsNTEzODUsNTEzODYsNTEzODcsNTEzOTAsNTEzOTEsNTEzOTIs''@;'; put 'put ''NTEzOTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTEzOTQsNTEzOTUsNTEzOTcsNTEzOTgsNTEzOTksNTE0MDEsNTE0MDIsNTE0MDMsNTE0MDUsNTE0MDYsNTE0MDcsNTE0MDgsNTE0MDksNTE0MTAsNTE0MTEsNTE0MTQsNTE0MTYsNTE0MTgsNTE0MTksNTE0MjAsNTE0MjEsNTE0''@;'; put 'put ''MjIsNTE0MjMsNTE0MjYsNTE0MjcsNTE0MjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE0MzAsNTE0MzEsNTE0MzIsNTE0MzMsNTE0MzQsNTE0MzUsNTE0MzYsNTE0MzcsNTE0MzgsNTE0MzksNTE0NDAsNTE0NDEsNTE0NDIsNTE0NDMsNTE0NDQsNTE0NDYsNTE0NDcsNTE0NDgs''@;'; put 'put ''NTE0NDksNTE0NTAsNTE0NTEsNTE0NTQsNTE0NTUsNTE0NTcsNTE0NTgsNTE0NTksNTE0NjMsNTE0NjQsNTE0NjUsNTE0NjYsNTE0NjcsNTE0NzAsMTIyODgsMTIyODksMTIyOTAsMTgzLDgyMjksODIzMCwxNjgsMTIyOTEsMTczLDgyMTMsODc0MSw2NTM0MCw4NzY0LDgyMTYsODIxNyw4MjIw''@;'; put 'put ''LDgyMjEsMTIzMDgsMTIzMDksMTIyOTYsMTIyOTcsMTIyOTgsMTIyOTksMTIzMDAsMTIzMDEsMTIzMDIsMTIzMDMsMTIzMDQsMTIzMDUsMTc3LDIxNSwyNDcsODgwMCw4ODA0LDg4MDUsODczNCw4NzU2LDE3Niw4MjQyLDgyNDMsODQ1MSw4NDkxLDY1NTA0LDY1NTA1LDY1NTA5LDk3OTQsOTc5''@;'; put 'put ''Miw4NzM2LDg4NjksODk3OCw4NzA2LDg3MTEsODgwMSw4Nzg2LDE2Nyw4MjUxLDk3MzQsOTczMyw5Njc1LDk2NzksOTY3OCw5NjcxLDk2NzAsOTYzMyw5NjMyLDk2NTEsOTY1MCw5NjYxLDk2NjAsODU5NCw4NTkyLDg1OTMsODU5NSw4NTk2LDEyMzA3LDg4MTAsODgxMSw4NzMwLDg3NjUsODcz''@;'; put 'put ''Myw4NzU3LDg3NDcsODc0OCw4NzEyLDg3MTUsODgzOCw4ODM5LDg4MzQsODgzNSw4NzQ2LDg3NDUsODc0Myw4NzQ0LDY1NTA2LDUxNDcyLDUxNDc0LDUxNDc1LDUxNDc2LDUxNDc3LDUxNDc4LDUxNDc5LDUxNDgxLDUxNDgyLDUxNDgzLDUxNDg0LDUxNDg1LDUxNDg2LDUxNDg3LDUxNDg4LDUx''@;'; put 'put ''NDg5LDUxNDkwLDUxNDkxLDUxNDkyLDUxNDkzLDUxNDk0LDUxNDk1LDUxNDk2LDUxNDk3LDUxNDk4LDUxNDk5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNTAxLDUxNTAyLDUxNTAzLDUxNTA0LDUxNTA1LDUxNTA2LDUxNTA3LDUxNTA5LDUxNTEwLDUxNTExLDUxNTEyLDUxNTEz''@;'; put 'put ''LDUxNTE0LDUxNTE1LDUxNTE2LDUxNTE3LDUxNTE4LDUxNTE5LDUxNTIwLDUxNTIxLDUxNTIyLDUxNTIzLDUxNTI0LDUxNTI1LDUxNTI2LDUxNTI3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNTI4LDUxNTI5LDUxNTMwLDUxNTMxLDUxNTMyLDUxNTMzLDUxNTM0LDUxNTM1LDUx''@;'; put 'put ''NTM4LDUxNTM5LDUxNTQxLDUxNTQyLDUxNTQzLDUxNTQ1LDUxNTQ2LDUxNTQ3LDUxNTQ4LDUxNTQ5LDUxNTUwLDUxNTUxLDUxNTU0LDUxNTU2LDUxNTU3LDUxNTU4LDUxNTU5LDUxNTYwLDUxNTYxLDUxNTYyLDUxNTYzLDUxNTY1LDUxNTY2LDUxNTY3LDg2NTgsODY2MCw4NzA0LDg3MDcsMTgw''@;'; put 'put ''LDY1Mzc0LDcxMSw3MjgsNzMzLDczMCw3MjksMTg0LDczMSwxNjEsMTkxLDcyMCw4NzUwLDg3MjEsODcxOSwxNjQsODQ1Nyw4MjQwLDk2NjUsOTY2NCw5NjU1LDk2NTQsOTgyOCw5ODI0LDk4MjUsOTgyOSw5ODMxLDk4MjcsODg1Nyw5NjcyLDk2MzUsOTY4MCw5NjgxLDk2MTgsOTYzNiw5NjM3''@;'; put 'put ''LDk2NDAsOTYzOSw5NjM4LDk2NDEsOTgzMiw5NzQzLDk3NDIsOTc1Niw5NzU4LDE4Miw4MjI0LDgyMjUsODU5Nyw4NTk5LDg2MDEsODU5OCw4NjAwLDk4MzcsOTgzMyw5ODM0LDk4MzYsMTI5MjcsMTI4MjgsODQ3MCwxMzI1NSw4NDgyLDEzMjUwLDEzMjcyLDg0ODEsODM2NCwxNzQsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNTY5LDUxNTcwLDUxNTcxLDUxNTczLDUxNTc0LDUxNTc1LDUxNTc2LDUxNTc3LDUxNTc4LDUx''@;'; put 'put ''NTc5LDUxNTgxLDUxNTgyLDUxNTgzLDUxNTg0LDUxNTg1LDUxNTg2LDUxNTg3LDUxNTg4LDUxNTg5LDUxNTkwLDUxNTkxLDUxNTk0LDUxNTk1LDUxNTk3LDUxNTk4LDUxNTk5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNjAxLDUxNjAyLDUxNjAzLDUxNjA0LDUxNjA1LDUxNjA2''@;'; put 'put ''LDUxNjA3LDUxNjEwLDUxNjEyLDUxNjE0LDUxNjE1LDUxNjE2LDUxNjE3LDUxNjE4LDUxNjE5LDUxNjIwLDUxNjIxLDUxNjIyLDUxNjIzLDUxNjI0LDUxNjI1LDUxNjI2LDUxNjI3LDUxNjI4LDUxNjI5LDUxNjMwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNjMxLDUxNjMyLDUx''@;'; put 'put ''NjMzLDUxNjM0LDUxNjM1LDUxNjM2LDUxNjM3LDUxNjM4LDUxNjM5LDUxNjQwLDUxNjQxLDUxNjQyLDUxNjQzLDUxNjQ0LDUxNjQ1LDUxNjQ2LDUxNjQ3LDUxNjUwLDUxNjUxLDUxNjUzLDUxNjU0LDUxNjU3LDUxNjU5LDUxNjYwLDUxNjYxLDUxNjYyLDUxNjYzLDUxNjY2LDUxNjY4LDUxNjcx''@;'; put 'put ''LDUxNjcyLDUxNjc1LDY1MjgxLDY1MjgyLDY1MjgzLDY1Mjg0LDY1Mjg1LDY1Mjg2LDY1Mjg3LDY1Mjg4LDY1Mjg5LDY1MjkwLDY1MjkxLDY1MjkyLDY1MjkzLDY1Mjk0LDY1Mjk1LDY1Mjk2LDY1Mjk3LDY1Mjk4LDY1Mjk5LDY1MzAwLDY1MzAxLDY1MzAyLDY1MzAzLDY1MzA0LDY1MzA1LDY1''@;'; put 'put ''MzA2LDY1MzA3LDY1MzA4LDY1MzA5LDY1MzEwLDY1MzExLDY1MzEyLDY1MzEzLDY1MzE0LDY1MzE1LDY1MzE2LDY1MzE3LDY1MzE4LDY1MzE5LDY1MzIwLDY1MzIxLDY1MzIyLDY1MzIzLDY1MzI0LDY1MzI1LDY1MzI2LDY1MzI3LDY1MzI4LDY1MzI5LDY1MzMwLDY1MzMxLDY1MzMyLDY1MzMz''@;'; put 'put ''LDY1MzM0LDY1MzM1LDY1MzM2LDY1MzM3LDY1MzM4LDY1MzM5LDY1NTEwLDY1MzQxLDY1MzQyLDY1MzQzLDY1MzQ0LDY1MzQ1LDY1MzQ2LDY1MzQ3LDY1MzQ4LDY1MzQ5LDY1MzUwLDY1MzUxLDY1MzUyLDY1MzUzLDY1MzU0LDY1MzU1LDY1MzU2LDY1MzU3LDY1MzU4LDY1MzU5LDY1MzYwLDY1''@;'; put 'put ''MzYxLDY1MzYyLDY1MzYzLDY1MzY0LDY1MzY1LDY1MzY2LDY1MzY3LDY1MzY4LDY1MzY5LDY1MzcwLDY1MzcxLDY1MzcyLDY1MzczLDY1NTA3LDUxNjc4LDUxNjc5LDUxNjgxLDUxNjgzLDUxNjg1LDUxNjg2LDUxNjg4LDUxNjg5LDUxNjkwLDUxNjkxLDUxNjk0LDUxNjk4LDUxNjk5LDUxNzAw''@;'; put 'put ''LDUxNzAxLDUxNzAyLDUxNzAzLDUxNzA2LDUxNzA3LDUxNzA5LDUxNzEwLDUxNzExLDUxNzEzLDUxNzE0LDUxNzE1LDUxNzE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNzE3LDUxNzE4LDUxNzE5LDUxNzIyLDUxNzI2LDUxNzI3LDUxNzI4LDUxNzI5LDUxNzMwLDUxNzMxLDUx''@;'; put 'put ''NzMzLDUxNzM0LDUxNzM1LDUxNzM3LDUxNzM4LDUxNzM5LDUxNzQwLDUxNzQxLDUxNzQyLDUxNzQzLDUxNzQ0LDUxNzQ1LDUxNzQ2LDUxNzQ3LDUxNzQ4LDUxNzQ5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNzUwLDUxNzUxLDUxNzUyLDUxNzU0LDUxNzU1LDUxNzU2LDUxNzU3''@;'; put 'put ''LDUxNzU4LDUxNzU5LDUxNzYwLDUxNzYxLDUxNzYyLDUxNzYzLDUxNzY0LDUxNzY1LDUxNzY2LDUxNzY3LDUxNzY4LDUxNzY5LDUxNzcwLDUxNzcxLDUxNzcyLDUxNzczLDUxNzc0LDUxNzc1LDUxNzc2LDUxNzc3LDUxNzc4LDUxNzc5LDUxNzgwLDUxNzgxLDUxNzgyLDEyNTkzLDEyNTk0LDEy''@;'; put 'put ''NTk1LDEyNTk2LDEyNTk3LDEyNTk4LDEyNTk5LDEyNjAwLDEyNjAxLDEyNjAyLDEyNjAzLDEyNjA0LDEyNjA1LDEyNjA2LDEyNjA3LDEyNjA4LDEyNjA5LDEyNjEwLDEyNjExLDEyNjEyLDEyNjEzLDEyNjE0LDEyNjE1LDEyNjE2LDEyNjE3LDEyNjE4LDEyNjE5LDEyNjIwLDEyNjIxLDEyNjIy''@;'; put 'put ''LDEyNjIzLDEyNjI0LDEyNjI1LDEyNjI2LDEyNjI3LDEyNjI4LDEyNjI5LDEyNjMwLDEyNjMxLDEyNjMyLDEyNjMzLDEyNjM0LDEyNjM1LDEyNjM2LDEyNjM3LDEyNjM4LDEyNjM5LDEyNjQwLDEyNjQxLDEyNjQyLDEyNjQzLDEyNjQ0LDEyNjQ1LDEyNjQ2LDEyNjQ3LDEyNjQ4LDEyNjQ5LDEy''@;'; put 'put ''NjUwLDEyNjUxLDEyNjUyLDEyNjUzLDEyNjU0LDEyNjU1LDEyNjU2LDEyNjU3LDEyNjU4LDEyNjU5LDEyNjYwLDEyNjYxLDEyNjYyLDEyNjYzLDEyNjY0LDEyNjY1LDEyNjY2LDEyNjY3LDEyNjY4LDEyNjY5LDEyNjcwLDEyNjcxLDEyNjcyLDEyNjczLDEyNjc0LDEyNjc1LDEyNjc2LDEyNjc3''@;'; put 'put ''LDEyNjc4LDEyNjc5LDEyNjgwLDEyNjgxLDEyNjgyLDEyNjgzLDEyNjg0LDEyNjg1LDEyNjg2LDUxNzgzLDUxNzg0LDUxNzg1LDUxNzg2LDUxNzg3LDUxNzkwLDUxNzkxLDUxNzkzLDUxNzk0LDUxNzk1LDUxNzk3LDUxNzk4LDUxNzk5LDUxODAwLDUxODAxLDUxODAyLDUxODAzLDUxODA2LDUx''@;'; put 'put ''ODEwLDUxODExLDUxODEyLDUxODEzLDUxODE0LDUxODE1LDUxODE3LDUxODE4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxODE5LDUxODIwLDUxODIxLDUxODIyLDUxODIzLDUxODI0LDUxODI1LDUxODI2LDUxODI3LDUxODI4LDUxODI5LDUxODMwLDUxODMxLDUxODMyLDUxODMz''@;'; put 'put ''LDUxODM0LDUxODM1LDUxODM2LDUxODM4LDUxODM5LDUxODQwLDUxODQxLDUxODQyLDUxODQzLDUxODQ1LDUxODQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxODQ3LDUxODQ4LDUxODQ5LDUxODUwLDUxODUxLDUxODUyLDUxODUzLDUxODU0LDUxODU1LDUxODU2LDUxODU3LDUx''@;'; put 'put ''ODU4LDUxODU5LDUxODYwLDUxODYxLDUxODYyLDUxODYzLDUxODY1LDUxODY2LDUxODY3LDUxODY4LDUxODY5LDUxODcwLDUxODcxLDUxODcyLDUxODczLDUxODc0LDUxODc1LDUxODc2LDUxODc3LDUxODc4LDUxODc5LDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4''@;'; put 'put ''NTY4LDg1NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg1NDQsODU0NSw4NTQ2LDg1NDcsODU0OCw4NTQ5LDg1NTAsODU1MSw4NTUyLDg1NTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDky''@;'; put 'put ''NCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjMsOTY0''@;'; put 'put ''LDk2NSw5NjYsOTY3LDk2OCw5NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE4ODAsNTE4ODEsNTE4ODIsNTE4ODMsNTE4ODQsNTE4ODUsNTE4ODYsNTE4ODcsNTE4ODgsNTE4ODksNTE4OTAsNTE4OTEsNTE4OTIsNTE4OTMsNTE4OTQsNTE4OTUsNTE4OTYsNTE4OTcsNTE4OTgs''@;'; put 'put ''NTE4OTksNTE5MDIsNTE5MDMsNTE5MDUsNTE5MDYsNTE5MDcsNTE5MDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE5MTAsNTE5MTEsNTE5MTIsNTE5MTMsNTE5MTQsNTE5MTUsNTE5MTgsNTE5MjAsNTE5MjIsNTE5MjQsNTE5MjUsNTE5MjYsNTE5MjcsNTE5MzAsNTE5MzEsNTE5''@;'; put 'put ''MzIsNTE5MzMsNTE5MzQsNTE5MzUsNTE5MzcsNTE5MzgsNTE5MzksNTE5NDAsNTE5NDEsNTE5NDIsNTE5NDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE5NDQsNTE5NDUsNTE5NDYsNTE5NDcsNTE5NDksNTE5NTAsNTE5NTEsNTE5NTIsNTE5NTMsNTE5NTQsNTE5NTUsNTE5NTcs''@;'; put 'put ''NTE5NTgsNTE5NTksNTE5NjAsNTE5NjEsNTE5NjIsNTE5NjMsNTE5NjQsNTE5NjUsNTE5NjYsNTE5NjcsNTE5NjgsNTE5NjksNTE5NzAsNTE5NzEsNTE5NzIsNTE5NzMsNTE5NzQsNTE5NzUsNTE5NzcsNTE5NzgsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDk2LDk0OTIsOTUwMCw5NTE2LDk1MDgs''@;'; put 'put ''OTUyNCw5NTMyLDk0NzMsOTQ3NSw5NDg3LDk0OTEsOTQ5OSw5NDk1LDk1MDcsOTUyMyw5NTE1LDk1MzEsOTU0Nyw5NTA0LDk1MTksOTUxMiw5NTI3LDk1MzUsOTUwMSw5NTIwLDk1MDksOTUyOCw5NTM4LDk0OTAsOTQ4OSw5NDk4LDk0OTcsOTQ5NCw5NDkzLDk0ODYsOTQ4NSw5NTAyLDk1MDMs''@;'; put 'put ''OTUwNSw5NTA2LDk1MTAsOTUxMSw5NTEzLDk1MTQsOTUxNyw5NTE4LDk1MjEsOTUyMiw5NTI1LDk1MjYsOTUyOSw5NTMwLDk1MzMsOTUzNCw5NTM2LDk1MzcsOTUzOSw5NTQwLDk1NDEsOTU0Miw5NTQzLDk1NDQsOTU0NSw5NTQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTk3OSw1MTk4MCw1MTk4MSw1MTk4Miw1MTk4Myw1MTk4NSw1MTk4Niw1MTk4Nyw1MTk4OSw1MTk5MCw1MTk5MSw1MTk5''@;'; put 'put ''Myw1MTk5NCw1MTk5NSw1MTk5Niw1MTk5Nyw1MTk5OCw1MTk5OSw1MjAwMiw1MjAwMyw1MjAwNCw1MjAwNSw1MjAwNiw1MjAwNyw1MjAwOCw1MjAwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjAxMCw1MjAxMSw1MjAxMiw1MjAxMyw1MjAxNCw1MjAxNSw1MjAxNiw1MjAxNyw1''@;'; put 'put ''MjAxOCw1MjAxOSw1MjAyMCw1MjAyMSw1MjAyMiw1MjAyMyw1MjAyNCw1MjAyNSw1MjAyNiw1MjAyNyw1MjAyOCw1MjAyOSw1MjAzMCw1MjAzMSw1MjAzMiw1MjAzNCw1MjAzNSw1MjAzNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjAzNyw1MjAzOCw1MjAzOSw1MjA0Miw1MjA0''@;'; put 'put ''Myw1MjA0NSw1MjA0Niw1MjA0Nyw1MjA0OSw1MjA1MCw1MjA1MSw1MjA1Miw1MjA1Myw1MjA1NCw1MjA1NSw1MjA1OCw1MjA1OSw1MjA2MCw1MjA2Miw1MjA2Myw1MjA2NCw1MjA2NSw1MjA2Niw1MjA2Nyw1MjA2OSw1MjA3MCw1MjA3MSw1MjA3Miw1MjA3Myw1MjA3NCw1MjA3NSw1MjA3Niwx''@;'; put 'put ''MzIwNSwxMzIwNiwxMzIwNyw4NDY3LDEzMjA4LDEzMjUyLDEzMjE5LDEzMjIwLDEzMjIxLDEzMjIyLDEzMjA5LDEzMjEwLDEzMjExLDEzMjEyLDEzMjEzLDEzMjE0LDEzMjE1LDEzMjE2LDEzMjE3LDEzMjE4LDEzMjU4LDEzMTk3LDEzMTk4LDEzMTk5LDEzMjYzLDEzMTkyLDEzMTkzLDEzMjU2''@;'; put 'put ''LDEzMjIzLDEzMjI0LDEzMjMyLDEzMjMzLDEzMjM0LDEzMjM1LDEzMjM2LDEzMjM3LDEzMjM4LDEzMjM5LDEzMjQwLDEzMjQxLDEzMTg0LDEzMTg1LDEzMTg2LDEzMTg3LDEzMTg4LDEzMjQyLDEzMjQzLDEzMjQ0LDEzMjQ1LDEzMjQ2LDEzMjQ3LDEzMjAwLDEzMjAxLDEzMjAyLDEzMjAzLDEz''@;'; put 'put ''MjA0LDg0ODYsMTMyNDgsMTMyNDksMTMxOTQsMTMxOTUsMTMxOTYsMTMyNzAsMTMyNTMsMTMyMjksMTMyMzAsMTMyMzEsMTMyNzUsMTMyMjUsMTMyMjYsMTMyMjcsMTMyMjgsMTMyNzcsMTMyNjQsMTMyNjcsMTMyNTEsMTMyNTcsMTMyNzYsMTMyNTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIwNzcsNTIwNzgsNTIwNzksNTIwODAsNTIwODEsNTIwODIsNTIwODMsNTIwODQsNTIwODUsNTIwODYsNTIwODcsNTIwOTAsNTIwOTEsNTIwOTIsNTIwOTMsNTIwOTQsNTIwOTUsNTIwOTYsNTIwOTcs''@;'; put 'put ''NTIwOTgsNTIwOTksNTIxMDAsNTIxMDEsNTIxMDIsNTIxMDMsNTIxMDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIxMDUsNTIxMDYsNTIxMDcsNTIxMDgsNTIxMDksNTIxMTAsNTIxMTEsNTIxMTIsNTIxMTMsNTIxMTQsNTIxMTUsNTIxMTYsNTIxMTcsNTIxMTgsNTIxMTksNTIx''@;'; put 'put ''MjAsNTIxMjEsNTIxMjIsNTIxMjMsNTIxMjUsNTIxMjYsNTIxMjcsNTIxMjgsNTIxMjksNTIxMzAsNTIxMzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIxMzIsNTIxMzMsNTIxMzQsNTIxMzUsNTIxMzYsNTIxMzcsNTIxMzgsNTIxMzksNTIxNDAsNTIxNDEsNTIxNDIsNTIxNDMs''@;'; put 'put ''NTIxNDQsNTIxNDUsNTIxNDYsNTIxNDcsNTIxNDgsNTIxNDksNTIxNTAsNTIxNTEsNTIxNTMsNTIxNTQsNTIxNTUsNTIxNTYsNTIxNTcsNTIxNTgsNTIxNTksNTIxNjAsNTIxNjEsNTIxNjIsNTIxNjMsNTIxNjQsMTk4LDIwOCwxNzAsMjk0LG51bGwsMzA2LG51bGwsMzE5LDMyMSwyMTYsMzM4''@;'; put 'put ''LDE4NiwyMjIsMzU4LDMzMCxudWxsLDEyODk2LDEyODk3LDEyODk4LDEyODk5LDEyOTAwLDEyOTAxLDEyOTAyLDEyOTAzLDEyOTA0LDEyOTA1LDEyOTA2LDEyOTA3LDEyOTA4LDEyOTA5LDEyOTEwLDEyOTExLDEyOTEyLDEyOTEzLDEyOTE0LDEyOTE1LDEyOTE2LDEyOTE3LDEyOTE4LDEyOTE5''@;'; put 'put ''LDEyOTIwLDEyOTIxLDEyOTIyLDEyOTIzLDk0MjQsOTQyNSw5NDI2LDk0MjcsOTQyOCw5NDI5LDk0MzAsOTQzMSw5NDMyLDk0MzMsOTQzNCw5NDM1LDk0MzYsOTQzNyw5NDM4LDk0MzksOTQ0MCw5NDQxLDk0NDIsOTQ0Myw5NDQ0LDk0NDUsOTQ0Niw5NDQ3LDk0NDgsOTQ0OSw5MzEyLDkzMTMs''@;'; put 'put ''OTMxNCw5MzE1LDkzMTYsOTMxNyw5MzE4LDkzMTksOTMyMCw5MzIxLDkzMjIsOTMyMyw5MzI0LDkzMjUsOTMyNiwxODksODUzMSw4NTMyLDE4OCwxOTAsODUzOSw4NTQwLDg1NDEsODU0Miw1MjE2NSw1MjE2Niw1MjE2Nyw1MjE2OCw1MjE2OSw1MjE3MCw1MjE3MSw1MjE3Miw1MjE3Myw1MjE3''@;'; put 'put ''NCw1MjE3NSw1MjE3Niw1MjE3Nyw1MjE3OCw1MjE3OSw1MjE4MSw1MjE4Miw1MjE4Myw1MjE4NCw1MjE4NSw1MjE4Niw1MjE4Nyw1MjE4OCw1MjE4OSw1MjE5MCw1MjE5MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjE5Miw1MjE5Myw1MjE5NCw1MjE5NSw1MjE5Nyw1MjE5OCw1''@;'; put 'put ''MjIwMCw1MjIwMiw1MjIwMyw1MjIwNCw1MjIwNSw1MjIwNiw1MjIwNyw1MjIwOCw1MjIwOSw1MjIxMCw1MjIxMSw1MjIxMiw1MjIxMyw1MjIxNCw1MjIxNSw1MjIxNiw1MjIxNyw1MjIxOCw1MjIxOSw1MjIyMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjIyMSw1MjIyMiw1MjIy''@;'; put 'put ''Myw1MjIyNCw1MjIyNSw1MjIyNiw1MjIyNyw1MjIyOCw1MjIyOSw1MjIzMCw1MjIzMSw1MjIzMiw1MjIzMyw1MjIzNCw1MjIzNSw1MjIzOCw1MjIzOSw1MjI0MSw1MjI0Miw1MjI0Myw1MjI0NSw1MjI0Niw1MjI0Nyw1MjI0OCw1MjI0OSw1MjI1MCw1MjI1MSw1MjI1NCw1MjI1NSw1MjI1Niw1''@;'; put 'put ''MjI1OSw1MjI2MCwyMzAsMjczLDI0MCwyOTUsMzA1LDMwNywzMTIsMzIwLDMyMiwyNDgsMzM5LDIyMywyNTQsMzU5LDMzMSwzMjksMTI4MDAsMTI4MDEsMTI4MDIsMTI4MDMsMTI4MDQsMTI4MDUsMTI4MDYsMTI4MDcsMTI4MDgsMTI4MDksMTI4MTAsMTI4MTEsMTI4MTIsMTI4MTMsMTI4MTQs''@;'; put 'put ''MTI4MTUsMTI4MTYsMTI4MTcsMTI4MTgsMTI4MTksMTI4MjAsMTI4MjEsMTI4MjIsMTI4MjMsMTI4MjQsMTI4MjUsMTI4MjYsMTI4MjcsOTM3Miw5MzczLDkzNzQsOTM3NSw5Mzc2LDkzNzcsOTM3OCw5Mzc5LDkzODAsOTM4MSw5MzgyLDkzODMsOTM4NCw5Mzg1LDkzODYsOTM4Nyw5Mzg4LDkz''@;'; put 'put ''ODksOTM5MCw5MzkxLDkzOTIsOTM5Myw5Mzk0LDkzOTUsOTM5Niw5Mzk3LDkzMzIsOTMzMyw5MzM0LDkzMzUsOTMzNiw5MzM3LDkzMzgsOTMzOSw5MzQwLDkzNDEsOTM0Miw5MzQzLDkzNDQsOTM0NSw5MzQ2LDE4NSwxNzgsMTc5LDgzMDgsODMxOSw4MzIxLDgzMjIsODMyMyw4MzI0LDUyMjYx''@;'; put 'put ''LDUyMjYyLDUyMjY2LDUyMjY3LDUyMjY5LDUyMjcxLDUyMjczLDUyMjc0LDUyMjc1LDUyMjc2LDUyMjc3LDUyMjc4LDUyMjc5LDUyMjgyLDUyMjg3LDUyMjg4LDUyMjg5LDUyMjkwLDUyMjkxLDUyMjk0LDUyMjk1LDUyMjk3LDUyMjk4LDUyMjk5LDUyMzAxLDUyMzAyLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLDUyMzAzLDUyMzA0LDUyMzA1LDUyMzA2LDUyMzA3LDUyMzEwLDUyMzE0LDUyMzE1LDUyMzE2LDUyMzE3LDUyMzE4LDUyMzE5LDUyMzIxLDUyMzIyLDUyMzIzLDUyMzI1LDUyMzI3LDUyMzI5LDUyMzMwLDUyMzMxLDUyMzMyLDUyMzMzLDUyMzM0LDUyMzM1LDUyMzM3''@;'; put 'put ''LDUyMzM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMzM5LDUyMzQwLDUyMzQyLDUyMzQzLDUyMzQ0LDUyMzQ1LDUyMzQ2LDUyMzQ3LDUyMzQ4LDUyMzQ5LDUyMzUwLDUyMzUxLDUyMzUyLDUyMzUzLDUyMzU0LDUyMzU1LDUyMzU2LDUyMzU3LDUyMzU4LDUyMzU5LDUyMzYwLDUy''@;'; put 'put ''MzYxLDUyMzYyLDUyMzYzLDUyMzY0LDUyMzY1LDUyMzY2LDUyMzY3LDUyMzY4LDUyMzY5LDUyMzcwLDUyMzcxLDEyMzUzLDEyMzU0LDEyMzU1LDEyMzU2LDEyMzU3LDEyMzU4LDEyMzU5LDEyMzYwLDEyMzYxLDEyMzYyLDEyMzYzLDEyMzY0LDEyMzY1LDEyMzY2LDEyMzY3LDEyMzY4LDEyMzY5''@;'; put 'put ''LDEyMzcwLDEyMzcxLDEyMzcyLDEyMzczLDEyMzc0LDEyMzc1LDEyMzc2LDEyMzc3LDEyMzc4LDEyMzc5LDEyMzgwLDEyMzgxLDEyMzgyLDEyMzgzLDEyMzg0LDEyMzg1LDEyMzg2LDEyMzg3LDEyMzg4LDEyMzg5LDEyMzkwLDEyMzkxLDEyMzkyLDEyMzkzLDEyMzk0LDEyMzk1LDEyMzk2LDEy''@;'; put 'put ''Mzk3LDEyMzk4LDEyMzk5LDEyNDAwLDEyNDAxLDEyNDAyLDEyNDAzLDEyNDA0LDEyNDA1LDEyNDA2LDEyNDA3LDEyNDA4LDEyNDA5LDEyNDEwLDEyNDExLDEyNDEyLDEyNDEzLDEyNDE0LDEyNDE1LDEyNDE2LDEyNDE3LDEyNDE4LDEyNDE5LDEyNDIwLDEyNDIxLDEyNDIyLDEyNDIzLDEyNDI0''@;'; put 'put ''LDEyNDI1LDEyNDI2LDEyNDI3LDEyNDI4LDEyNDI5LDEyNDMwLDEyNDMxLDEyNDMyLDEyNDMzLDEyNDM0LDEyNDM1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjM3Miw1MjM3Myw1MjM3NCw1MjM3NSw1MjM3OCw1MjM3OSw1MjM4MSw1''@;'; put 'put ''MjM4Miw1MjM4Myw1MjM4NSw1MjM4Niw1MjM4Nyw1MjM4OCw1MjM4OSw1MjM5MCw1MjM5MSw1MjM5NCw1MjM5OCw1MjM5OSw1MjQwMCw1MjQwMSw1MjQwMiw1MjQwMyw1MjQwNiw1MjQwNyw1MjQwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjQxMCw1MjQxMSw1MjQxMyw1MjQx''@;'; put 'put ''NCw1MjQxNSw1MjQxNiw1MjQxNyw1MjQxOCw1MjQxOSw1MjQyMiw1MjQyNCw1MjQyNiw1MjQyNyw1MjQyOCw1MjQyOSw1MjQzMCw1MjQzMSw1MjQzMyw1MjQzNCw1MjQzNSw1MjQzNyw1MjQzOCw1MjQzOSw1MjQ0MCw1MjQ0MSw1MjQ0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1''@;'; put 'put ''MjQ0Myw1MjQ0NCw1MjQ0NSw1MjQ0Niw1MjQ0Nyw1MjQ0OCw1MjQ0OSw1MjQ1MCw1MjQ1MSw1MjQ1Myw1MjQ1NCw1MjQ1NSw1MjQ1Niw1MjQ1Nyw1MjQ1OCw1MjQ1OSw1MjQ2MSw1MjQ2Miw1MjQ2Myw1MjQ2NSw1MjQ2Niw1MjQ2Nyw1MjQ2OCw1MjQ2OSw1MjQ3MCw1MjQ3MSw1MjQ3Miw1MjQ3''@;'; put 'put ''Myw1MjQ3NCw1MjQ3NSw1MjQ3Niw1MjQ3NywxMjQ0OSwxMjQ1MCwxMjQ1MSwxMjQ1MiwxMjQ1MywxMjQ1NCwxMjQ1NSwxMjQ1NiwxMjQ1NywxMjQ1OCwxMjQ1OSwxMjQ2MCwxMjQ2MSwxMjQ2MiwxMjQ2MywxMjQ2NCwxMjQ2NSwxMjQ2NiwxMjQ2NywxMjQ2OCwxMjQ2OSwxMjQ3MCwxMjQ3MSwx''@;'; put 'put ''MjQ3MiwxMjQ3MywxMjQ3NCwxMjQ3NSwxMjQ3NiwxMjQ3NywxMjQ3OCwxMjQ3OSwxMjQ4MCwxMjQ4MSwxMjQ4MiwxMjQ4MywxMjQ4NCwxMjQ4NSwxMjQ4NiwxMjQ4NywxMjQ4OCwxMjQ4OSwxMjQ5MCwxMjQ5MSwxMjQ5MiwxMjQ5MywxMjQ5NCwxMjQ5NSwxMjQ5NiwxMjQ5NywxMjQ5OCwxMjQ5''@;'; put 'put ''OSwxMjUwMCwxMjUwMSwxMjUwMiwxMjUwMywxMjUwNCwxMjUwNSwxMjUwNiwxMjUwNywxMjUwOCwxMjUwOSwxMjUxMCwxMjUxMSwxMjUxMiwxMjUxMywxMjUxNCwxMjUxNSwxMjUxNiwxMjUxNywxMjUxOCwxMjUxOSwxMjUyMCwxMjUyMSwxMjUyMiwxMjUyMywxMjUyNCwxMjUyNSwxMjUyNiwx''@;'; put 'put ''MjUyNywxMjUyOCwxMjUyOSwxMjUzMCwxMjUzMSwxMjUzMiwxMjUzMywxMjUzNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI0NzgsNTI0NzksNTI0ODAsNTI0ODIsNTI0ODMsNTI0ODQsNTI0ODUsNTI0ODYsNTI0ODcsNTI0OTAsNTI0OTEsNTI0OTMsNTI0OTQs''@;'; put 'put ''NTI0OTUsNTI0OTcsNTI0OTgsNTI0OTksNTI1MDAsNTI1MDEsNTI1MDIsNTI1MDMsNTI1MDYsNTI1MDgsNTI1MTAsNTI1MTEsNTI1MTIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI1MTMsNTI1MTQsNTI1MTUsNTI1MTcsNTI1MTgsNTI1MTksNTI1MjEsNTI1MjIsNTI1MjMsNTI1''@;'; put 'put ''MjUsNTI1MjYsNTI1MjcsNTI1MjgsNTI1MjksNTI1MzAsNTI1MzEsNTI1MzIsNTI1MzMsNTI1MzQsNTI1MzUsNTI1MzYsNTI1MzgsNTI1MzksNTI1NDAsNTI1NDEsNTI1NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI1NDMsNTI1NDQsNTI1NDUsNTI1NDYsNTI1NDcsNTI1NDgs''@;'; put 'put ''NTI1NDksNTI1NTAsNTI1NTEsNTI1NTIsNTI1NTMsNTI1NTQsNTI1NTUsNTI1NTYsNTI1NTcsNTI1NTgsNTI1NTksNTI1NjAsNTI1NjEsNTI1NjIsNTI1NjMsNTI1NjQsNTI1NjUsNTI1NjYsNTI1NjcsNTI1NjgsNTI1NjksNTI1NzAsNTI1NzEsNTI1NzMsNTI1NzQsNTI1NzUsMTA0MCwxMDQx''@;'; put 'put ''LDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkw''@;'; put 'put ''LDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjU3Nyw1MjU3OCw1MjU3OSw1MjU4MSw1MjU4Miw1MjU4''@;'; put 'put ''Myw1MjU4NCw1MjU4NSw1MjU4Niw1MjU4Nyw1MjU5MCw1MjU5Miw1MjU5NCw1MjU5NSw1MjU5Niw1MjU5Nyw1MjU5OCw1MjU5OSw1MjYwMSw1MjYwMiw1MjYwMyw1MjYwNCw1MjYwNSw1MjYwNiw1MjYwNyw1MjYwOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjYwOSw1MjYxMCw1''@;'; put 'put ''MjYxMSw1MjYxMiw1MjYxMyw1MjYxNCw1MjYxNSw1MjYxNyw1MjYxOCw1MjYxOSw1MjYyMCw1MjYyMSw1MjYyMiw1MjYyMyw1MjYyNCw1MjYyNSw1MjYyNiw1MjYyNyw1MjYzMCw1MjYzMSw1MjYzMyw1MjYzNCw1MjYzNSw1MjYzNyw1MjYzOCw1MjYzOSxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCw1MjY0MCw1MjY0MSw1MjY0Miw1MjY0Myw1MjY0Niw1MjY0OCw1MjY1MCw1MjY1MSw1MjY1Miw1MjY1Myw1MjY1NCw1MjY1NSw1MjY1Nyw1MjY1OCw1MjY1OSw1MjY2MCw1MjY2MSw1MjY2Miw1MjY2Myw1MjY2NCw1MjY2NSw1MjY2Niw1MjY2Nyw1MjY2OCw1MjY2OSw1MjY3MCw1''@;'; put 'put ''MjY3MSw1MjY3Miw1MjY3Myw1MjY3NCw1MjY3NSw1MjY3NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLDUyNjc4LDUyNjc5LDUyNjgwLDUyNjgxLDUyNjgyLDUyNjgzLDUyNjg1LDUyNjg2LDUyNjg3LDUyNjg5LDUyNjkwLDUyNjkxLDUyNjkyLDUyNjkzLDUyNjk0LDUyNjk1LDUyNjk2LDUyNjk3LDUyNjk4LDUyNjk5LDUyNzAwLDUyNzAxLDUyNzAyLDUyNzAzLDUyNzA0LDUyNzA1''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNzA2LDUyNzA3LDUyNzA4LDUyNzA5LDUyNzEwLDUyNzExLDUyNzEzLDUyNzE0LDUyNzE1LDUyNzE3LDUyNzE4LDUyNzE5LDUyNzIxLDUyNzIyLDUyNzIzLDUyNzI0LDUyNzI1LDUyNzI2LDUyNzI3LDUyNzMwLDUyNzMyLDUyNzM0LDUy''@;'; put 'put ''NzM1LDUyNzM2LDUyNzM3LDUyNzM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNzM5LDUyNzQxLDUyNzQyLDUyNzQzLDUyNzQ1LDUyNzQ2LDUyNzQ3LDUyNzQ5LDUyNzUwLDUyNzUxLDUyNzUyLDUyNzUzLDUyNzU0LDUyNzU1LDUyNzU3LDUyNzU4LDUyNzU5LDUyNzYwLDUyNzYy''@;'; put 'put ''LDUyNzYzLDUyNzY0LDUyNzY1LDUyNzY2LDUyNzY3LDUyNzcwLDUyNzcxLDUyNzczLDUyNzc0LDUyNzc1LDUyNzc3LDUyNzc4LDUyNzc5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI3ODAsNTI3ODEsNTI3ODIsNTI3ODMsNTI3ODYsNTI3ODgsNTI3OTAsNTI3OTEsNTI3OTIsNTI3OTMsNTI3OTQsNTI3OTUsNTI3OTYsNTI3OTcsNTI3OTgsNTI3OTksNTI4MDAsNTI4MDEsNTI4''@;'; put 'put ''MDIsNTI4MDMsNTI4MDQsNTI4MDUsNTI4MDYsNTI4MDcsNTI4MDgsNTI4MDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI4MTAsNTI4MTEsNTI4MTIsNTI4MTMsNTI4MTQsNTI4MTUsNTI4MTYsNTI4MTcsNTI4MTgsNTI4MTksNTI4MjAsNTI4MjEsNTI4MjIsNTI4MjMsNTI4MjYs''@;'; put 'put ''NTI4MjcsNTI4MjksNTI4MzAsNTI4MzQsNTI4MzUsNTI4MzYsNTI4MzcsNTI4MzgsNTI4MzksNTI4NDIsNTI4NDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI4NDYsNTI4NDcsNTI4NDgsNTI4NDksNTI4NTAsNTI4NTEsNTI4NTQsNTI4NTUsNTI4NTcsNTI4NTgsNTI4NTksNTI4''@;'; put 'put ''NjEsNTI4NjIsNTI4NjMsNTI4NjQsNTI4NjUsNTI4NjYsNTI4NjcsNTI4NzAsNTI4NzIsNTI4NzQsNTI4NzUsNTI4NzYsNTI4NzcsNTI4NzgsNTI4NzksNTI4ODIsNTI4ODMsNTI4ODUsNTI4ODYsNTI4ODcsNTI4ODksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mjg5MCw1Mjg5MSw1Mjg5Miw1Mjg5Myw1Mjg5NCw1Mjg5NSw1Mjg5OCw1MjkwMiw1MjkwMyw1MjkwNCw1MjkwNSw1''@;'; put 'put ''MjkwNiw1MjkwNyw1MjkxMCw1MjkxMSw1MjkxMiw1MjkxMyw1MjkxNCw1MjkxNSw1MjkxNiw1MjkxNyw1MjkxOCw1MjkxOSw1MjkyMCw1MjkyMSw1MjkyMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjkyMyw1MjkyNCw1MjkyNSw1MjkyNiw1MjkyNyw1MjkyOCw1MjkzMCw1Mjkz''@;'; put 'put ''MSw1MjkzMiw1MjkzMyw1MjkzNCw1MjkzNSw1MjkzNiw1MjkzNyw1MjkzOCw1MjkzOSw1Mjk0MCw1Mjk0MSw1Mjk0Miw1Mjk0Myw1Mjk0NCw1Mjk0NSw1Mjk0Niw1Mjk0Nyw1Mjk0OCw1Mjk0OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mjk1MCw1Mjk1MSw1Mjk1Miw1Mjk1Myw1''@;'; put 'put ''Mjk1NCw1Mjk1NSw1Mjk1Niw1Mjk1Nyw1Mjk1OCw1Mjk1OSw1Mjk2MCw1Mjk2MSw1Mjk2Miw1Mjk2Myw1Mjk2Niw1Mjk2Nyw1Mjk2OSw1Mjk3MCw1Mjk3Myw1Mjk3NCw1Mjk3NSw1Mjk3Niw1Mjk3Nyw1Mjk3OCw1Mjk3OSw1Mjk4Miw1Mjk4Niw1Mjk4Nyw1Mjk4OCw1Mjk4OSw1Mjk5MCw1Mjk5''@;'; put 'put ''MSw0NDAzMiw0NDAzMyw0NDAzNiw0NDAzOSw0NDA0MCw0NDA0MSw0NDA0Miw0NDA0OCw0NDA0OSw0NDA1MCw0NDA1MSw0NDA1Miw0NDA1Myw0NDA1NCw0NDA1NSw0NDA1Nyw0NDA1OCw0NDA1OSw0NDA2MCw0NDA2MSw0NDA2NCw0NDA2OCw0NDA3Niw0NDA3Nyw0NDA3OSw0NDA4MCw0NDA4MSw0''@;'; put 'put ''NDA4OCw0NDA4OSw0NDA5Miw0NDA5Niw0NDEwNyw0NDEwOSw0NDExNiw0NDEyMCw0NDEyNCw0NDE0NCw0NDE0NSw0NDE0OCw0NDE1MSw0NDE1Miw0NDE1NCw0NDE2MCw0NDE2MSw0NDE2Myw0NDE2NCw0NDE2NSw0NDE2Niw0NDE2OSw0NDE3MCw0NDE3MSw0NDE3Miw0NDE3Niw0NDE4MCw0NDE4''@;'; put 'put ''OCw0NDE4OSw0NDE5MSw0NDE5Miw0NDE5Myw0NDIwMCw0NDIwMSw0NDIwMiw0NDIwNCw0NDIwNyw0NDIwOCw0NDIxNiw0NDIxNyw0NDIxOSw0NDIyMCw0NDIyMSw0NDIyNSw0NDIyOCw0NDIzMiw0NDIzNiw0NDI0NSw0NDI0Nyw0NDI1Niw0NDI1Nyw0NDI2MCw0NDI2Myw0NDI2NCw0NDI2Niw0''@;'; put 'put ''NDI2OCw0NDI3MSw0NDI3Miw0NDI3Myw0NDI3NSw0NDI3Nyw0NDI3OCw0NDI4NCw0NDI4NSw0NDI4OCw0NDI5Miw0NDI5NCw1Mjk5NCw1Mjk5NSw1Mjk5Nyw1Mjk5OCw1Mjk5OSw1MzAwMSw1MzAwMiw1MzAwMyw1MzAwNCw1MzAwNSw1MzAwNiw1MzAwNyw1MzAxMCw1MzAxMiw1MzAxNCw1MzAx''@;'; put 'put ''NSw1MzAxNiw1MzAxNyw1MzAxOCw1MzAxOSw1MzAyMSw1MzAyMiw1MzAyMyw1MzAyNSw1MzAyNiw1MzAyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzAyOSw1MzAzMCw1MzAzMSw1MzAzMiw1MzAzMyw1MzAzNCw1MzAzNSw1MzAzOCw1MzA0Miw1MzA0Myw1MzA0NCw1MzA0NSw1''@;'; put 'put ''MzA0Niw1MzA0Nyw1MzA0OSw1MzA1MCw1MzA1MSw1MzA1Miw1MzA1Myw1MzA1NCw1MzA1NSw1MzA1Niw1MzA1Nyw1MzA1OCw1MzA1OSw1MzA2MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzA2MSw1MzA2Miw1MzA2Myw1MzA2NCw1MzA2NSw1MzA2Niw1MzA2Nyw1MzA2OCw1MzA2''@;'; put 'put ''OSw1MzA3MCw1MzA3MSw1MzA3Miw1MzA3Myw1MzA3NCw1MzA3NSw1MzA3OCw1MzA3OSw1MzA4MSw1MzA4Miw1MzA4Myw1MzA4NSw1MzA4Niw1MzA4Nyw1MzA4OCw1MzA4OSw1MzA5MCw1MzA5MSw1MzA5NCw1MzA5Niw1MzA5OCw1MzA5OSw1MzEwMCw0NDMwMCw0NDMwMSw0NDMwMyw0NDMwNSw0''@;'; put 'put ''NDMxMiw0NDMxNiw0NDMyMCw0NDMyOSw0NDMzMiw0NDMzMyw0NDM0MCw0NDM0MSw0NDM0NCw0NDM0OCw0NDM1Niw0NDM1Nyw0NDM1OSw0NDM2MSw0NDM2OCw0NDM3Miw0NDM3Niw0NDM4NSw0NDM4Nyw0NDM5Niw0NDM5Nyw0NDQwMCw0NDQwMyw0NDQwNCw0NDQwNSw0NDQwNiw0NDQxMSw0NDQx''@;'; put 'put ''Miw0NDQxMyw0NDQxNSw0NDQxNyw0NDQxOCw0NDQyNCw0NDQyNSw0NDQyOCw0NDQzMiw0NDQ0NCw0NDQ0NSw0NDQ1Miw0NDQ3MSw0NDQ4MCw0NDQ4MSw0NDQ4NCw0NDQ4OCw0NDQ5Niw0NDQ5Nyw0NDQ5OSw0NDUwOCw0NDUxMiw0NDUxNiw0NDUzNiw0NDUzNyw0NDU0MCw0NDU0Myw0NDU0NCw0''@;'; put 'put ''NDU0NSw0NDU1Miw0NDU1Myw0NDU1NSw0NDU1Nyw0NDU2NCw0NDU5Miw0NDU5Myw0NDU5Niw0NDU5OSw0NDYwMCw0NDYwMiw0NDYwOCw0NDYwOSw0NDYxMSw0NDYxMyw0NDYxNCw0NDYxOCw0NDYyMCw0NDYyMSw0NDYyMiw0NDYyNCw0NDYyOCw0NDYzMCw0NDYzNiw0NDYzNyw0NDYzOSw0NDY0''@;'; put 'put ''MCw0NDY0MSw0NDY0NSw0NDY0OCw0NDY0OSw0NDY1Miw0NDY1Niw0NDY2NCw1MzEwMSw1MzEwMiw1MzEwMyw1MzEwNiw1MzEwNyw1MzEwOSw1MzExMCw1MzExMSw1MzExMyw1MzExNCw1MzExNSw1MzExNiw1MzExNyw1MzExOCw1MzExOSw1MzEyMSw1MzEyMiw1MzEyMyw1MzEyNCw1MzEyNiw1''@;'; put 'put ''MzEyNyw1MzEyOCw1MzEyOSw1MzEzMCw1MzEzMSw1MzEzMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzEzNCw1MzEzNSw1MzEzNiw1MzEzNyw1MzEzOCw1MzEzOSw1MzE0MCw1MzE0MSw1MzE0Miw1MzE0Myw1MzE0NCw1MzE0NSw1MzE0Niw1MzE0Nyw1MzE0OCw1MzE0OSw1MzE1''@;'; put 'put ''MCw1MzE1MSw1MzE1Miw1MzE1NCw1MzE1NSw1MzE1Niw1MzE1Nyw1MzE1OCw1MzE1OSw1MzE2MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzE2Miw1MzE2Myw1MzE2NCw1MzE2NSw1MzE2Niw1MzE2Nyw1MzE2OSw1MzE3MCw1MzE3MSw1MzE3Miw1MzE3Myw1MzE3NCw1MzE3NSw1''@;'; put 'put ''MzE3Niw1MzE3Nyw1MzE3OCw1MzE3OSw1MzE4MCw1MzE4MSw1MzE4Miw1MzE4Myw1MzE4NCw1MzE4NSw1MzE4Niw1MzE4Nyw1MzE4OSw1MzE5MCw1MzE5MSw1MzE5Miw1MzE5Myw1MzE5NCw1MzE5NSw0NDY2NSw0NDY2Nyw0NDY2OCw0NDY2OSw0NDY3Niw0NDY3Nyw0NDY4NCw0NDczMiw0NDcz''@;'; put 'put ''Myw0NDczNCw0NDczNiw0NDc0MCw0NDc0OCw0NDc0OSw0NDc1MSw0NDc1Miw0NDc1Myw0NDc2MCw0NDc2MSw0NDc2NCw0NDc3Niw0NDc3OSw0NDc4MSw0NDc4OCw0NDc5Miw0NDc5Niw0NDgwNyw0NDgwOCw0NDgxMyw0NDgxNiw0NDg0NCw0NDg0NSw0NDg0OCw0NDg1MCw0NDg1Miw0NDg2MCw0''@;'; put 'put ''NDg2MSw0NDg2Myw0NDg2NSw0NDg2Niw0NDg2Nyw0NDg3Miw0NDg3Myw0NDg4MCw0NDg5Miw0NDg5Myw0NDkwMCw0NDkwMSw0NDkyMSw0NDkyOCw0NDkzMiw0NDkzNiw0NDk0NCw0NDk0NSw0NDk0OSw0NDk1Niw0NDk4NCw0NDk4NSw0NDk4OCw0NDk5Miw0NDk5OSw0NWUzLDQ1MDAxLDQ1MDAz''@;'; put 'put ''LDQ1MDA1LDQ1MDA2LDQ1MDEyLDQ1MDIwLDQ1MDMyLDQ1MDMzLDQ1MDQwLDQ1MDQxLDQ1MDQ0LDQ1MDQ4LDQ1MDU2LDQ1MDU3LDQ1MDYwLDQ1MDY4LDQ1MDcyLDQ1MDc2LDQ1MDg0LDQ1MDg1LDQ1MDk2LDQ1MTI0LDQ1MTI1LDQ1MTI4LDQ1MTMwLDQ1MTMyLDQ1MTM0LDQ1MTM5LDQ1MTQwLDQ1''@;'; put 'put ''MTQxLDQ1MTQzLDQ1MTQ1LDUzMTk2LDUzMTk3LDUzMTk4LDUzMTk5LDUzMjAwLDUzMjAxLDUzMjAyLDUzMjAzLDUzMjA0LDUzMjA1LDUzMjA2LDUzMjA3LDUzMjA4LDUzMjA5LDUzMjEwLDUzMjExLDUzMjEyLDUzMjEzLDUzMjE0LDUzMjE1LDUzMjE4LDUzMjE5LDUzMjIxLDUzMjIyLDUzMjIz''@;'; put 'put ''LDUzMjI1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMjI2LDUzMjI3LDUzMjI4LDUzMjI5LDUzMjMwLDUzMjMxLDUzMjM0LDUzMjM2LDUzMjM4LDUzMjM5LDUzMjQwLDUzMjQxLDUzMjQyLDUzMjQzLDUzMjQ1LDUzMjQ2LDUzMjQ3LDUzMjQ5LDUzMjUwLDUzMjUxLDUzMjUzLDUz''@;'; put 'put ''MjU0LDUzMjU1LDUzMjU2LDUzMjU3LDUzMjU4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMjU5LDUzMjYwLDUzMjYxLDUzMjYyLDUzMjYzLDUzMjY0LDUzMjY2LDUzMjY3LDUzMjY4LDUzMjY5LDUzMjcwLDUzMjcxLDUzMjczLDUzMjc0LDUzMjc1LDUzMjc2LDUzMjc3LDUzMjc4''@;'; put 'put ''LDUzMjc5LDUzMjgwLDUzMjgxLDUzMjgyLDUzMjgzLDUzMjg0LDUzMjg1LDUzMjg2LDUzMjg3LDUzMjg4LDUzMjg5LDUzMjkwLDUzMjkxLDUzMjkyLDQ1MTQ5LDQ1MTgwLDQ1MTgxLDQ1MTg0LDQ1MTg4LDQ1MTk2LDQ1MTk3LDQ1MTk5LDQ1MjAxLDQ1MjA4LDQ1MjA5LDQ1MjEwLDQ1MjEyLDQ1''@;'; put 'put ''MjE1LDQ1MjE2LDQ1MjE3LDQ1MjE4LDQ1MjI0LDQ1MjI1LDQ1MjI3LDQ1MjI4LDQ1MjI5LDQ1MjMwLDQ1MjMxLDQ1MjMzLDQ1MjM1LDQ1MjM2LDQ1MjM3LDQ1MjQwLDQ1MjQ0LDQ1MjUyLDQ1MjUzLDQ1MjU1LDQ1MjU2LDQ1MjU3LDQ1MjY0LDQ1MjY1LDQ1MjY4LDQ1MjcyLDQ1MjgwLDQ1Mjg1''@;'; put 'put ''LDQ1MzIwLDQ1MzIxLDQ1MzIzLDQ1MzI0LDQ1MzI4LDQ1MzMwLDQ1MzMxLDQ1MzM2LDQ1MzM3LDQ1MzM5LDQ1MzQwLDQ1MzQxLDQ1MzQ3LDQ1MzQ4LDQ1MzQ5LDQ1MzUyLDQ1MzU2LDQ1MzY0LDQ1MzY1LDQ1MzY3LDQ1MzY4LDQ1MzY5LDQ1Mzc2LDQ1Mzc3LDQ1MzgwLDQ1Mzg0LDQ1MzkyLDQ1''@;'; put 'put ''MzkzLDQ1Mzk2LDQ1Mzk3LDQ1NDAwLDQ1NDA0LDQ1NDA4LDQ1NDMyLDQ1NDMzLDQ1NDM2LDQ1NDQwLDQ1NDQyLDQ1NDQ4LDQ1NDQ5LDQ1NDUxLDQ1NDUzLDQ1NDU4LDQ1NDU5LDQ1NDYwLDQ1NDY0LDQ1NDY4LDQ1NDgwLDQ1NTE2LDQ1NTIwLDQ1NTI0LDQ1NTMyLDQ1NTMzLDUzMjk0LDUzMjk1''@;'; put 'put ''LDUzMjk2LDUzMjk3LDUzMjk4LDUzMjk5LDUzMzAyLDUzMzAzLDUzMzA1LDUzMzA2LDUzMzA3LDUzMzA5LDUzMzEwLDUzMzExLDUzMzEyLDUzMzEzLDUzMzE0LDUzMzE1LDUzMzE4LDUzMzIwLDUzMzIyLDUzMzIzLDUzMzI0LDUzMzI1LDUzMzI2LDUzMzI3LG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLDUzMzI5LDUzMzMwLDUzMzMxLDUzMzMzLDUzMzM0LDUzMzM1LDUzMzM3LDUzMzM4LDUzMzM5LDUzMzQwLDUzMzQxLDUzMzQyLDUzMzQzLDUzMzQ1LDUzMzQ2LDUzMzQ3LDUzMzQ4LDUzMzQ5LDUzMzUwLDUzMzUxLDUzMzUyLDUzMzUzLDUzMzU0LDUzMzU1LDUzMzU4LDUzMzU5''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMzYxLDUzMzYyLDUzMzYzLDUzMzY1LDUzMzY2LDUzMzY3LDUzMzY4LDUzMzY5LDUzMzcwLDUzMzcxLDUzMzc0LDUzMzc1LDUzMzc2LDUzMzc4LDUzMzc5LDUzMzgwLDUzMzgxLDUzMzgyLDUzMzgzLDUzMzg0LDUzMzg1LDUzMzg2LDUz''@;'; put 'put ''Mzg3LDUzMzg4LDUzMzg5LDUzMzkwLDUzMzkxLDUzMzkyLDUzMzkzLDUzMzk0LDUzMzk1LDUzMzk2LDQ1NTM1LDQ1NTQ0LDQ1NTQ1LDQ1NTQ4LDQ1NTUyLDQ1NTYxLDQ1NTYzLDQ1NTY1LDQ1NTcyLDQ1NTczLDQ1NTc2LDQ1NTc5LDQ1NTgwLDQ1NTg4LDQ1NTg5LDQ1NTkxLDQ1NTkzLDQ1NjAw''@;'; put 'put ''LDQ1NjIwLDQ1NjI4LDQ1NjU2LDQ1NjYwLDQ1NjY0LDQ1NjcyLDQ1NjczLDQ1Njg0LDQ1Njg1LDQ1NjkyLDQ1NzAwLDQ1NzAxLDQ1NzA1LDQ1NzEyLDQ1NzEzLDQ1NzE2LDQ1NzIwLDQ1NzIxLDQ1NzIyLDQ1NzI4LDQ1NzI5LDQ1NzMxLDQ1NzMzLDQ1NzM0LDQ1NzM4LDQ1NzQwLDQ1NzQ0LDQ1''@;'; put 'put ''NzQ4LDQ1NzY4LDQ1NzY5LDQ1NzcyLDQ1Nzc2LDQ1Nzc4LDQ1Nzg0LDQ1Nzg1LDQ1Nzg3LDQ1Nzg5LDQ1Nzk0LDQ1Nzk2LDQ1Nzk3LDQ1Nzk4LDQ1ODAwLDQ1ODAzLDQ1ODA0LDQ1ODA1LDQ1ODA2LDQ1ODA3LDQ1ODExLDQ1ODEyLDQ1ODEzLDQ1ODE1LDQ1ODE2LDQ1ODE3LDQ1ODE4LDQ1ODE5''@;'; put 'put ''LDQ1ODIzLDQ1ODI0LDQ1ODI1LDQ1ODI4LDQ1ODMyLDQ1ODQwLDQ1ODQxLDQ1ODQzLDQ1ODQ0LDQ1ODQ1LDQ1ODUyLDQ1OTA4LDQ1OTA5LDQ1OTEwLDQ1OTEyLDQ1OTE1LDQ1OTE2LDQ1OTE4LDQ1OTE5LDQ1OTI0LDQ1OTI1LDUzMzk3LDUzMzk4LDUzMzk5LDUzNDAwLDUzNDAxLDUzNDAyLDUz''@;'; put 'put ''NDAzLDUzNDA0LDUzNDA1LDUzNDA2LDUzNDA3LDUzNDA4LDUzNDA5LDUzNDEwLDUzNDExLDUzNDE0LDUzNDE1LDUzNDE3LDUzNDE4LDUzNDE5LDUzNDIxLDUzNDIyLDUzNDIzLDUzNDI0LDUzNDI1LDUzNDI2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNDI3LDUzNDMwLDUzNDMy''@;'; put 'put ''LDUzNDM0LDUzNDM1LDUzNDM2LDUzNDM3LDUzNDM4LDUzNDM5LDUzNDQyLDUzNDQzLDUzNDQ1LDUzNDQ2LDUzNDQ3LDUzNDUwLDUzNDUxLDUzNDUyLDUzNDUzLDUzNDU0LDUzNDU1LDUzNDU4LDUzNDYyLDUzNDYzLDUzNDY0LDUzNDY1LDUzNDY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLDUzNDY3LDUzNDcwLDUzNDcxLDUzNDczLDUzNDc0LDUzNDc1LDUzNDc3LDUzNDc4LDUzNDc5LDUzNDgwLDUzNDgxLDUzNDgyLDUzNDgzLDUzNDg2LDUzNDkwLDUzNDkxLDUzNDkyLDUzNDkzLDUzNDk0LDUzNDk1LDUzNDk3LDUzNDk4LDUzNDk5LDUzNTAwLDUzNTAxLDUzNTAyLDUzNTAz''@;'; put 'put ''LDUzNTA0LDUzNTA1LDUzNTA2LDUzNTA3LDUzNTA4LDQ1OTI3LDQ1OTI5LDQ1OTMxLDQ1OTM0LDQ1OTM2LDQ1OTM3LDQ1OTQwLDQ1OTQ0LDQ1OTUyLDQ1OTUzLDQ1OTU1LDQ1OTU2LDQ1OTU3LDQ1OTY0LDQ1OTY4LDQ1OTcyLDQ1OTg0LDQ1OTg1LDQ1OTkyLDQ1OTk2LDQ2MDIwLDQ2MDIxLDQ2''@;'; put 'put ''MDI0LDQ2MDI3LDQ2MDI4LDQ2MDMwLDQ2MDMyLDQ2MDM2LDQ2MDM3LDQ2MDM5LDQ2MDQxLDQ2MDQzLDQ2MDQ1LDQ2MDQ4LDQ2MDUyLDQ2MDU2LDQ2MDc2LDQ2MDk2LDQ2MTA0LDQ2MTA4LDQ2MTEyLDQ2MTIwLDQ2MTIxLDQ2MTIzLDQ2MTMyLDQ2MTYwLDQ2MTYxLDQ2MTY0LDQ2MTY4LDQ2MTc2''@;'; put 'put ''LDQ2MTc3LDQ2MTc5LDQ2MTgxLDQ2MTg4LDQ2MjA4LDQ2MjE2LDQ2MjM3LDQ2MjQ0LDQ2MjQ4LDQ2MjUyLDQ2MjYxLDQ2MjYzLDQ2MjY1LDQ2MjcyLDQ2Mjc2LDQ2MjgwLDQ2Mjg4LDQ2MjkzLDQ2MzAwLDQ2MzAxLDQ2MzA0LDQ2MzA3LDQ2MzA4LDQ2MzEwLDQ2MzE2LDQ2MzE3LDQ2MzE5LDQ2''@;'; put 'put ''MzIxLDQ2MzI4LDQ2MzU2LDQ2MzU3LDQ2MzYwLDQ2MzYzLDQ2MzY0LDQ2MzcyLDQ2MzczLDQ2Mzc1LDQ2Mzc2LDQ2Mzc3LDQ2Mzc4LDQ2Mzg0LDQ2Mzg1LDQ2Mzg4LDQ2MzkyLDUzNTA5LDUzNTEwLDUzNTExLDUzNTEyLDUzNTEzLDUzNTE0LDUzNTE1LDUzNTE2LDUzNTE4LDUzNTE5LDUzNTIw''@;'; put 'put ''LDUzNTIxLDUzNTIyLDUzNTIzLDUzNTI0LDUzNTI1LDUzNTI2LDUzNTI3LDUzNTI4LDUzNTI5LDUzNTMwLDUzNTMxLDUzNTMyLDUzNTMzLDUzNTM0LDUzNTM1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNTM2LDUzNTM3LDUzNTM4LDUzNTM5LDUzNTQwLDUzNTQxLDUzNTQyLDUz''@;'; put 'put ''NTQzLDUzNTQ0LDUzNTQ1LDUzNTQ2LDUzNTQ3LDUzNTQ4LDUzNTQ5LDUzNTUwLDUzNTUxLDUzNTU0LDUzNTU1LDUzNTU3LDUzNTU4LDUzNTU5LDUzNTYxLDUzNTYzLDUzNTY0LDUzNTY1LDUzNTY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNTY3LDUzNTcwLDUzNTc0LDUzNTc1''@;'; put 'put ''LDUzNTc2LDUzNTc3LDUzNTc4LDUzNTc5LDUzNTgyLDUzNTgzLDUzNTg1LDUzNTg2LDUzNTg3LDUzNTg5LDUzNTkwLDUzNTkxLDUzNTkyLDUzNTkzLDUzNTk0LDUzNTk1LDUzNTk4LDUzNjAwLDUzNjAyLDUzNjAzLDUzNjA0LDUzNjA1LDUzNjA2LDUzNjA3LDUzNjA5LDUzNjEwLDUzNjExLDUz''@;'; put 'put ''NjEzLDQ2NDAwLDQ2NDAxLDQ2NDAzLDQ2NDA0LDQ2NDA1LDQ2NDExLDQ2NDEyLDQ2NDEzLDQ2NDE2LDQ2NDIwLDQ2NDI4LDQ2NDI5LDQ2NDMxLDQ2NDMyLDQ2NDMzLDQ2NDk2LDQ2NDk3LDQ2NTAwLDQ2NTA0LDQ2NTA2LDQ2NTA3LDQ2NTEyLDQ2NTEzLDQ2NTE1LDQ2NTE2LDQ2NTE3LDQ2NTIz''@;'; put 'put ''LDQ2NTI0LDQ2NTI1LDQ2NTI4LDQ2NTMyLDQ2NTQwLDQ2NTQxLDQ2NTQzLDQ2NTQ0LDQ2NTQ1LDQ2NTUyLDQ2NTcyLDQ2NjA4LDQ2NjA5LDQ2NjEyLDQ2NjE2LDQ2NjI5LDQ2NjM2LDQ2NjQ0LDQ2NjY0LDQ2NjkyLDQ2Njk2LDQ2NzQ4LDQ2NzQ5LDQ2NzUyLDQ2NzU2LDQ2NzYzLDQ2NzY0LDQ2''@;'; put 'put ''NzY5LDQ2ODA0LDQ2ODMyLDQ2ODM2LDQ2ODQwLDQ2ODQ4LDQ2ODQ5LDQ2ODUzLDQ2ODg4LDQ2ODg5LDQ2ODkyLDQ2ODk1LDQ2ODk2LDQ2OTA0LDQ2OTA1LDQ2OTA3LDQ2OTE2LDQ2OTIwLDQ2OTI0LDQ2OTMyLDQ2OTMzLDQ2OTQ0LDQ2OTQ4LDQ2OTUyLDQ2OTYwLDQ2OTYxLDQ2OTYzLDQ2OTY1''@;'; put 'put ''LDQ2OTcyLDQ2OTczLDQ2OTc2LDQ2OTgwLDQ2OTg4LDQ2OTg5LDQ2OTkxLDQ2OTkyLDQ2OTkzLDQ2OTk0LDQ2OTk4LDQ2OTk5LDUzNjE0LDUzNjE1LDUzNjE2LDUzNjE3LDUzNjE4LDUzNjE5LDUzNjIwLDUzNjIxLDUzNjIyLDUzNjIzLDUzNjI0LDUzNjI1LDUzNjI2LDUzNjI3LDUzNjI5LDUz''@;'; put 'put ''NjMwLDUzNjMxLDUzNjMyLDUzNjMzLDUzNjM0LDUzNjM1LDUzNjM3LDUzNjM4LDUzNjM5LDUzNjQxLDUzNjQyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNjQzLDUzNjQ0LDUzNjQ1LDUzNjQ2LDUzNjQ3LDUzNjQ4LDUzNjQ5LDUzNjUwLDUzNjUxLDUzNjUyLDUzNjUzLDUzNjU0''@;'; put 'put ''LDUzNjU1LDUzNjU2LDUzNjU3LDUzNjU4LDUzNjU5LDUzNjYwLDUzNjYxLDUzNjYyLDUzNjYzLDUzNjY2LDUzNjY3LDUzNjY5LDUzNjcwLDUzNjcxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNjczLDUzNjc0LDUzNjc1LDUzNjc2LDUzNjc3LDUzNjc4LDUzNjc5LDUzNjgyLDUz''@;'; put 'put ''Njg0LDUzNjg2LDUzNjg3LDUzNjg4LDUzNjg5LDUzNjkxLDUzNjkzLDUzNjk0LDUzNjk1LDUzNjk3LDUzNjk4LDUzNjk5LDUzNzAwLDUzNzAxLDUzNzAyLDUzNzAzLDUzNzA0LDUzNzA1LDUzNzA2LDUzNzA3LDUzNzA4LDUzNzA5LDUzNzEwLDUzNzExLDQ3ZTMsNDcwMDEsNDcwMDQsNDcwMDgs''@;'; put 'put ''NDcwMTYsNDcwMTcsNDcwMTksNDcwMjAsNDcwMjEsNDcwMjgsNDcwMjksNDcwMzIsNDcwNDcsNDcwNDksNDcwODQsNDcwODUsNDcwODgsNDcwOTIsNDcxMDAsNDcxMDEsNDcxMDMsNDcxMDQsNDcxMDUsNDcxMTEsNDcxMTIsNDcxMTMsNDcxMTYsNDcxMjAsNDcxMjgsNDcxMjksNDcxMzEsNDcx''@;'; put 'put ''MzMsNDcxNDAsNDcxNDEsNDcxNDQsNDcxNDgsNDcxNTYsNDcxNTcsNDcxNTksNDcxNjAsNDcxNjEsNDcxNjgsNDcxNzIsNDcxODUsNDcxODcsNDcxOTYsNDcxOTcsNDcyMDAsNDcyMDQsNDcyMTIsNDcyMTMsNDcyMTUsNDcyMTcsNDcyMjQsNDcyMjgsNDcyNDUsNDcyNzIsNDcyODAsNDcyODQs''@;'; put 'put ''NDcyODgsNDcyOTYsNDcyOTcsNDcyOTksNDczMDEsNDczMDgsNDczMTIsNDczMTYsNDczMjUsNDczMjcsNDczMjksNDczMzYsNDczMzcsNDczNDAsNDczNDQsNDczNTIsNDczNTMsNDczNTUsNDczNTcsNDczNjQsNDczODQsNDczOTIsNDc0MjAsNDc0MjEsNDc0MjQsNDc0MjgsNDc0MzYsNDc0''@;'; put 'put ''MzksNDc0NDEsNDc0NDgsNDc0NDksNDc0NTIsNDc0NTYsNDc0NjQsNDc0NjUsNTM3MTIsNTM3MTMsNTM3MTQsNTM3MTUsNTM3MTYsNTM3MTcsNTM3MTgsNTM3MTksNTM3MjEsNTM3MjIsNTM3MjMsNTM3MjQsNTM3MjUsNTM3MjYsNTM3MjcsNTM3MjgsNTM3MjksNTM3MzAsNTM3MzEsNTM3MzIs''@;'; put 'put ''NTM3MzMsNTM3MzQsNTM3MzUsNTM3MzYsNTM3MzcsNTM3MzgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM3MzksNTM3NDAsNTM3NDEsNTM3NDIsNTM3NDMsNTM3NDQsNTM3NDUsNTM3NDYsNTM3NDcsNTM3NDksNTM3NTAsNTM3NTEsNTM3NTMsNTM3NTQsNTM3NTUsNTM3NTYsNTM3''@;'; put 'put ''NTcsNTM3NTgsNTM3NTksNTM3NjAsNTM3NjEsNTM3NjIsNTM3NjMsNTM3NjQsNTM3NjUsNTM3NjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM3NjgsNTM3NzAsNTM3NzEsNTM3NzIsNTM3NzMsNTM3NzQsNTM3NzUsNTM3NzcsNTM3NzgsNTM3NzksNTM3ODAsNTM3ODEsNTM3ODIs''@;'; put 'put ''NTM3ODMsNTM3ODQsNTM3ODUsNTM3ODYsNTM3ODcsNTM3ODgsNTM3ODksNTM3OTAsNTM3OTEsNTM3OTIsNTM3OTMsNTM3OTQsNTM3OTUsNTM3OTYsNTM3OTcsNTM3OTgsNTM3OTksNTM4MDAsNTM4MDEsNDc0NjcsNDc0NjksNDc0NzYsNDc0NzcsNDc0ODAsNDc0ODQsNDc0OTIsNDc0OTMsNDc0''@;'; put 'put ''OTUsNDc0OTcsNDc0OTgsNDc1MDEsNDc1MDIsNDc1MzIsNDc1MzMsNDc1MzYsNDc1NDAsNDc1NDgsNDc1NDksNDc1NTEsNDc1NTMsNDc1NjAsNDc1NjEsNDc1NjQsNDc1NjYsNDc1NjcsNDc1NjgsNDc1NjksNDc1NzAsNDc1NzYsNDc1NzcsNDc1NzksNDc1ODEsNDc1ODIsNDc1ODUsNDc1ODcs''@;'; put 'put ''NDc1ODgsNDc1ODksNDc1OTIsNDc1OTYsNDc2MDQsNDc2MDUsNDc2MDcsNDc2MDgsNDc2MDksNDc2MTAsNDc2MTYsNDc2MTcsNDc2MjQsNDc2MzcsNDc2NzIsNDc2NzMsNDc2NzYsNDc2ODAsNDc2ODIsNDc2ODgsNDc2ODksNDc2OTEsNDc2OTMsNDc2OTQsNDc2OTksNDc3MDAsNDc3MDEsNDc3''@;'; put 'put ''MDQsNDc3MDgsNDc3MTYsNDc3MTcsNDc3MTksNDc3MjAsNDc3MjEsNDc3MjgsNDc3MjksNDc3MzIsNDc3MzYsNDc3NDcsNDc3NDgsNDc3NDksNDc3NTEsNDc3NTYsNDc3ODQsNDc3ODUsNDc3ODcsNDc3ODgsNDc3OTIsNDc3OTQsNDc4MDAsNDc4MDEsNDc4MDMsNDc4MDUsNDc4MTIsNDc4MTYs''@;'; put 'put ''NDc4MzIsNDc4MzMsNDc4NjgsNTM4MDIsNTM4MDMsNTM4MDYsNTM4MDcsNTM4MDksNTM4MTAsNTM4MTEsNTM4MTMsNTM4MTQsNTM4MTUsNTM4MTYsNTM4MTcsNTM4MTgsNTM4MTksNTM4MjIsNTM4MjQsNTM4MjYsNTM4MjcsNTM4MjgsNTM4MjksNTM4MzAsNTM4MzEsNTM4MzMsNTM4MzQsNTM4''@;'; put 'put ''MzUsNTM4MzYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM4MzcsNTM4MzgsNTM4MzksNTM4NDAsNTM4NDEsNTM4NDIsNTM4NDMsNTM4NDQsNTM4NDUsNTM4NDYsNTM4NDcsNTM4NDgsNTM4NDksNTM4NTAsNTM4NTEsNTM4NTMsNTM4NTQsNTM4NTUsNTM4NTYsNTM4NTcsNTM4NTgs''@;'; put 'put ''NTM4NTksNTM4NjEsNTM4NjIsNTM4NjMsNTM4NjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM4NjUsNTM4NjYsNTM4NjcsNTM4NjgsNTM4NjksNTM4NzAsNTM4NzEsNTM4NzIsNTM4NzMsNTM4NzQsNTM4NzUsNTM4NzYsNTM4NzcsNTM4NzgsNTM4NzksNTM4ODAsNTM4ODEsNTM4''@;'; put 'put ''ODIsNTM4ODMsNTM4ODQsNTM4ODUsNTM4ODYsNTM4ODcsNTM4OTAsNTM4OTEsNTM4OTMsNTM4OTQsNTM4OTUsNTM4OTcsNTM4OTgsNTM4OTksNTM5MDAsNDc4NzIsNDc4NzYsNDc4ODUsNDc4ODcsNDc4ODksNDc4OTYsNDc5MDAsNDc5MDQsNDc5MTMsNDc5MTUsNDc5MjQsNDc5MjUsNDc5MjYs''@;'; put 'put ''NDc5MjgsNDc5MzEsNDc5MzIsNDc5MzMsNDc5MzQsNDc5NDAsNDc5NDEsNDc5NDMsNDc5NDUsNDc5NDksNDc5NTEsNDc5NTIsNDc5NTYsNDc5NjAsNDc5NjksNDc5NzEsNDc5ODAsNDgwMDgsNDgwMTIsNDgwMTYsNDgwMzYsNDgwNDAsNDgwNDQsNDgwNTIsNDgwNTUsNDgwNjQsNDgwNjgsNDgw''@;'; put 'put ''NzIsNDgwODAsNDgwODMsNDgxMjAsNDgxMjEsNDgxMjQsNDgxMjcsNDgxMjgsNDgxMzAsNDgxMzYsNDgxMzcsNDgxMzksNDgxNDAsNDgxNDEsNDgxNDMsNDgxNDUsNDgxNDgsNDgxNDksNDgxNTAsNDgxNTEsNDgxNTIsNDgxNTUsNDgxNTYsNDgxNTcsNDgxNTgsNDgxNTksNDgxNjQsNDgxNjUs''@;'; put 'put ''NDgxNjcsNDgxNjksNDgxNzMsNDgxNzYsNDgxNzcsNDgxODAsNDgxODQsNDgxOTIsNDgxOTMsNDgxOTUsNDgxOTYsNDgxOTcsNDgyMDEsNDgyMDQsNDgyMDUsNDgyMDgsNDgyMjEsNDgyNjAsNDgyNjEsNDgyNjQsNDgyNjcsNDgyNjgsNDgyNzAsNDgyNzYsNDgyNzcsNDgyNzksNTM5MDEsNTM5''@;'; put 'put ''MDIsNTM5MDMsNTM5MDYsNTM5MDcsNTM5MDgsNTM5MTAsNTM5MTEsNTM5MTIsNTM5MTMsNTM5MTQsNTM5MTUsNTM5MTcsNTM5MTgsNTM5MTksNTM5MjEsNTM5MjIsNTM5MjMsNTM5MjUsNTM5MjYsNTM5MjcsNTM5MjgsNTM5MjksNTM5MzAsNTM5MzEsNTM5MzMsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsNTM5MzQsNTM5MzUsNTM5MzYsNTM5MzgsNTM5MzksNTM5NDAsNTM5NDEsNTM5NDIsNTM5NDMsNTM5NDYsNTM5NDcsNTM5NDksNTM5NTAsNTM5NTMsNTM5NTUsNTM5NTYsNTM5NTcsNTM5NTgsNTM5NTksNTM5NjIsNTM5NjQsNTM5NjUsNTM5NjYsNTM5NjcsNTM5NjgsNTM5''@;'; put 'put ''NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM5NzAsNTM5NzEsNTM5NzMsNTM5NzQsNTM5NzUsNTM5NzcsNTM5NzgsNTM5NzksNTM5ODEsNTM5ODIsNTM5ODMsNTM5ODQsNTM5ODUsNTM5ODYsNTM5ODcsNTM5OTAsNTM5OTEsNTM5OTIsNTM5OTMsNTM5OTQsNTM5OTUsNTM5OTYs''@;'; put 'put ''NTM5OTcsNTM5OTgsNTM5OTksNTQwMDIsNTQwMDMsNTQwMDUsNTQwMDYsNTQwMDcsNTQwMDksNTQwMTAsNDgyODEsNDgyODIsNDgyODgsNDgyODksNDgyOTIsNDgyOTUsNDgyOTYsNDgzMDQsNDgzMDUsNDgzMDcsNDgzMDgsNDgzMDksNDgzMTYsNDgzMTcsNDgzMjAsNDgzMjQsNDgzMzMsNDgz''@;'; put 'put ''MzUsNDgzMzYsNDgzMzcsNDgzNDEsNDgzNDQsNDgzNDgsNDgzNzIsNDgzNzMsNDgzNzQsNDgzNzYsNDgzODAsNDgzODgsNDgzODksNDgzOTEsNDgzOTMsNDg0MDAsNDg0MDQsNDg0MjAsNDg0MjgsNDg0NDgsNDg0NTYsNDg0NTcsNDg0NjAsNDg0NjQsNDg0NzIsNDg0NzMsNDg0ODQsNDg0ODgs''@;'; put 'put ''NDg1MTIsNDg1MTMsNDg1MTYsNDg1MTksNDg1MjAsNDg1MjEsNDg1MjIsNDg1MjgsNDg1MjksNDg1MzEsNDg1MzMsNDg1MzcsNDg1MzgsNDg1NDAsNDg1NDgsNDg1NjAsNDg1NjgsNDg1OTYsNDg1OTcsNDg2MDAsNDg2MDQsNDg2MTcsNDg2MjQsNDg2MjgsNDg2MzIsNDg2NDAsNDg2NDMsNDg2''@;'; put 'put ''NDUsNDg2NTIsNDg2NTMsNDg2NTYsNDg2NjAsNDg2NjgsNDg2NjksNDg2NzEsNDg3MDgsNDg3MDksNDg3MTIsNDg3MTYsNDg3MTgsNDg3MjQsNDg3MjUsNDg3MjcsNDg3MjksNDg3MzAsNDg3MzEsNDg3MzYsNDg3MzcsNDg3NDAsNTQwMTEsNTQwMTIsNTQwMTMsNTQwMTQsNTQwMTUsNTQwMTgs''@;'; put 'put ''NTQwMjAsNTQwMjIsNTQwMjMsNTQwMjQsNTQwMjUsNTQwMjYsNTQwMjcsNTQwMzEsNTQwMzMsNTQwMzQsNTQwMzUsNTQwMzcsNTQwMzksNTQwNDAsNTQwNDEsNTQwNDIsNTQwNDMsNTQwNDYsNTQwNTAsNTQwNTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQwNTIsNTQwNTQsNTQw''@;'; put 'put ''NTUsNTQwNTgsNTQwNTksNTQwNjEsNTQwNjIsNTQwNjMsNTQwNjUsNTQwNjYsNTQwNjcsNTQwNjgsNTQwNjksNTQwNzAsNTQwNzEsNTQwNzQsNTQwNzgsNTQwNzksNTQwODAsNTQwODEsNTQwODIsNTQwODMsNTQwODYsNTQwODcsNTQwODgsNTQwODksbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsNTQwOTAsNTQwOTEsNTQwOTIsNTQwOTMsNTQwOTQsNTQwOTUsNTQwOTYsNTQwOTcsNTQwOTgsNTQwOTksNTQxMDAsNTQxMDEsNTQxMDIsNTQxMDMsNTQxMDQsNTQxMDUsNTQxMDYsNTQxMDcsNTQxMDgsNTQxMDksNTQxMTAsNTQxMTEsNTQxMTIsNTQxMTMsNTQxMTQsNTQxMTUsNTQx''@;'; put 'put ''MTYsNTQxMTcsNTQxMTgsNTQxMTksNTQxMjAsNTQxMjEsNDg3NDQsNDg3NDYsNDg3NTIsNDg3NTMsNDg3NTUsNDg3NTYsNDg3NTcsNDg3NjMsNDg3NjQsNDg3NjUsNDg3NjgsNDg3NzIsNDg3ODAsNDg3ODEsNDg3ODMsNDg3ODQsNDg3ODUsNDg3OTIsNDg3OTMsNDg4MDgsNDg4NDgsNDg4NDks''@;'; put 'put ''NDg4NTIsNDg4NTUsNDg4NTYsNDg4NjQsNDg4NjcsNDg4NjgsNDg4NjksNDg4NzYsNDg4OTcsNDg5MDQsNDg5MDUsNDg5MjAsNDg5MjEsNDg5MjMsNDg5MjQsNDg5MjUsNDg5NjAsNDg5NjEsNDg5NjQsNDg5NjgsNDg5NzYsNDg5NzcsNDg5ODEsNDkwNDQsNDkwNzIsNDkwOTMsNDkxMDAsNDkx''@;'; put 'put ''MDEsNDkxMDQsNDkxMDgsNDkxMTYsNDkxMTksNDkxMjEsNDkyMTIsNDkyMzMsNDkyNDAsNDkyNDQsNDkyNDgsNDkyNTYsNDkyNTcsNDkyOTYsNDkyOTcsNDkzMDAsNDkzMDQsNDkzMTIsNDkzMTMsNDkzMTUsNDkzMTcsNDkzMjQsNDkzMjUsNDkzMjcsNDkzMjgsNDkzMzEsNDkzMzIsNDkzMzMs''@;'; put 'put ''NDkzMzQsNDkzNDAsNDkzNDEsNDkzNDMsNDkzNDQsNDkzNDUsNDkzNDksNDkzNTIsNDkzNTMsNDkzNTYsNDkzNjAsNDkzNjgsNDkzNjksNDkzNzEsNDkzNzIsNDkzNzMsNDkzODAsNTQxMjIsNTQxMjMsNTQxMjQsNTQxMjUsNTQxMjYsNTQxMjcsNTQxMjgsNTQxMjksNTQxMzAsNTQxMzEsNTQx''@;'; put 'put ''MzIsNTQxMzMsNTQxMzQsNTQxMzUsNTQxMzYsNTQxMzcsNTQxMzgsNTQxMzksNTQxNDIsNTQxNDMsNTQxNDUsNTQxNDYsNTQxNDcsNTQxNDksNTQxNTAsNTQxNTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQxNTIsNTQxNTMsNTQxNTQsNTQxNTUsNTQxNTgsNTQxNjIsNTQxNjMs''@;'; put 'put ''NTQxNjQsNTQxNjUsNTQxNjYsNTQxNjcsNTQxNzAsNTQxNzEsNTQxNzMsNTQxNzQsNTQxNzUsNTQxNzcsNTQxNzgsNTQxNzksNTQxODAsNTQxODEsNTQxODIsNTQxODMsNTQxODYsNTQxODgsNTQxOTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQxOTEsNTQxOTIsNTQxOTMsNTQx''@;'; put 'put ''OTQsNTQxOTUsNTQxOTcsNTQxOTgsNTQxOTksNTQyMDEsNTQyMDIsNTQyMDMsNTQyMDUsNTQyMDYsNTQyMDcsNTQyMDgsNTQyMDksNTQyMTAsNTQyMTEsNTQyMTQsNTQyMTUsNTQyMTgsNTQyMTksNTQyMjAsNTQyMjEsNTQyMjIsNTQyMjMsNTQyMjUsNTQyMjYsNTQyMjcsNTQyMjgsNTQyMjks''@;'; put 'put ''NTQyMzAsNDkzODEsNDkzODQsNDkzODgsNDkzOTYsNDkzOTcsNDkzOTksNDk0MDEsNDk0MDgsNDk0MTIsNDk0MTYsNDk0MjQsNDk0MjksNDk0MzYsNDk0MzcsNDk0MzgsNDk0MzksNDk0NDAsNDk0NDMsNDk0NDQsNDk0NDYsNDk0NDcsNDk0NTIsNDk0NTMsNDk0NTUsNDk0NTYsNDk0NTcsNDk0''@;'; put 'put ''NjIsNDk0NjQsNDk0NjUsNDk0NjgsNDk0NzIsNDk0ODAsNDk0ODEsNDk0ODMsNDk0ODQsNDk0ODUsNDk0OTIsNDk0OTMsNDk0OTYsNDk1MDAsNDk1MDgsNDk1MDksNDk1MTEsNDk1MTIsNDk1MTMsNDk1MjAsNDk1MjQsNDk1MjgsNDk1NDEsNDk1NDgsNDk1NDksNDk1NTAsNDk1NTIsNDk1NTYs''@;'; put 'put ''NDk1NTgsNDk1NjQsNDk1NjUsNDk1NjcsNDk1NjksNDk1NzMsNDk1NzYsNDk1NzcsNDk1ODAsNDk1ODQsNDk1OTcsNDk2MDQsNDk2MDgsNDk2MTIsNDk2MjAsNDk2MjMsNDk2MjQsNDk2MzIsNDk2MzYsNDk2NDAsNDk2NDgsNDk2NDksNDk2NTEsNDk2NjAsNDk2NjEsNDk2NjQsNDk2NjgsNDk2''@;'; put 'put ''NzYsNDk2NzcsNDk2NzksNDk2ODEsNDk2ODgsNDk2ODksNDk2OTIsNDk2OTUsNDk2OTYsNDk3MDQsNDk3MDUsNDk3MDcsNDk3MDksNTQyMzEsNTQyMzMsNTQyMzQsNTQyMzUsNTQyMzYsNTQyMzcsNTQyMzgsNTQyMzksNTQyNDAsNTQyNDIsNTQyNDQsNTQyNDUsNTQyNDYsNTQyNDcsNTQyNDgs''@;'; put 'put ''NTQyNDksNTQyNTAsNTQyNTEsNTQyNTQsNTQyNTUsNTQyNTcsNTQyNTgsNTQyNTksNTQyNjEsNTQyNjIsNTQyNjMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQyNjQsNTQyNjUsNTQyNjYsNTQyNjcsNTQyNzAsNTQyNzIsNTQyNzQsNTQyNzUsNTQyNzYsNTQyNzcsNTQyNzgsNTQy''@;'; put 'put ''NzksNTQyODEsNTQyODIsNTQyODMsNTQyODQsNTQyODUsNTQyODYsNTQyODcsNTQyODgsNTQyODksNTQyOTAsNTQyOTEsNTQyOTIsNTQyOTMsNTQyOTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQyOTUsNTQyOTYsNTQyOTcsNTQyOTgsNTQyOTksNTQzMDAsNTQzMDIsNTQzMDMs''@;'; put 'put ''NTQzMDQsNTQzMDUsNTQzMDYsNTQzMDcsNTQzMDgsNTQzMDksNTQzMTAsNTQzMTEsNTQzMTIsNTQzMTMsNTQzMTQsNTQzMTUsNTQzMTYsNTQzMTcsNTQzMTgsNTQzMTksNTQzMjAsNTQzMjEsNTQzMjIsNTQzMjMsNTQzMjQsNTQzMjUsNTQzMjYsNTQzMjcsNDk3MTEsNDk3MTMsNDk3MTQsNDk3''@;'; put 'put ''MTYsNDk3MzYsNDk3NDQsNDk3NDUsNDk3NDgsNDk3NTIsNDk3NjAsNDk3NjUsNDk3NzIsNDk3NzMsNDk3NzYsNDk3ODAsNDk3ODgsNDk3ODksNDk3OTEsNDk3OTMsNDk4MDAsNDk4MDEsNDk4MDgsNDk4MTYsNDk4MTksNDk4MjEsNDk4MjgsNDk4MjksNDk4MzIsNDk4MzYsNDk4MzcsNDk4NDQs''@;'; put 'put ''NDk4NDUsNDk4NDcsNDk4NDksNDk4ODQsNDk4ODUsNDk4ODgsNDk4OTEsNDk4OTIsNDk4OTksNDk5MDAsNDk5MDEsNDk5MDMsNDk5MDUsNDk5MTAsNDk5MTIsNDk5MTMsNDk5MTUsNDk5MTYsNDk5MjAsNDk5MjgsNDk5MjksNDk5MzIsNDk5MzMsNDk5MzksNDk5NDAsNDk5NDEsNDk5NDQsNDk5''@;'; put 'put ''NDgsNDk5NTYsNDk5NTcsNDk5NjAsNDk5NjEsNDk5ODksNTAwMjQsNTAwMjUsNTAwMjgsNTAwMzIsNTAwMzQsNTAwNDAsNTAwNDEsNTAwNDQsNTAwNDUsNTAwNTIsNTAwNTYsNTAwNjAsNTAxMTIsNTAxMzYsNTAxMzcsNTAxNDAsNTAxNDMsNTAxNDQsNTAxNDYsNTAxNTIsNTAxNTMsNTAxNTcs''@;'; put 'put ''NTAxNjQsNTAxNjUsNTAxNjgsNTAxODQsNTAxOTIsNTAyMTIsNTAyMjAsNTAyMjQsNTQzMjgsNTQzMjksNTQzMzAsNTQzMzEsNTQzMzIsNTQzMzMsNTQzMzQsNTQzMzUsNTQzMzcsNTQzMzgsNTQzMzksNTQzNDEsNTQzNDIsNTQzNDMsNTQzNDQsNTQzNDUsNTQzNDYsNTQzNDcsNTQzNDgsNTQz''@;'; put 'put ''NDksNTQzNTAsNTQzNTEsNTQzNTIsNTQzNTMsNTQzNTQsNTQzNTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQzNTYsNTQzNTcsNTQzNTgsNTQzNTksNTQzNjAsNTQzNjEsNTQzNjIsNTQzNjMsNTQzNjUsNTQzNjYsNTQzNjcsNTQzNjksNTQzNzAsNTQzNzEsNTQzNzMsNTQzNzQs''@;'; put 'put ''NTQzNzUsNTQzNzYsNTQzNzcsNTQzNzgsNTQzNzksNTQzODAsNTQzODIsNTQzODQsNTQzODUsNTQzODYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQzODcsNTQzODgsNTQzODksNTQzOTAsNTQzOTEsNTQzOTQsNTQzOTUsNTQzOTcsNTQzOTgsNTQ0MDEsNTQ0MDMsNTQ0MDQsNTQ0''@;'; put 'put ''MDUsNTQ0MDYsNTQ0MDcsNTQ0MTAsNTQ0MTIsNTQ0MTQsNTQ0MTUsNTQ0MTYsNTQ0MTcsNTQ0MTgsNTQ0MTksNTQ0MjEsNTQ0MjIsNTQ0MjMsNTQ0MjQsNTQ0MjUsNTQ0MjYsNTQ0MjcsNTQ0MjgsNTQ0MjksNTAyMjgsNTAyMzYsNTAyMzcsNTAyNDgsNTAyNzYsNTAyNzcsNTAyODAsNTAyODQs''@;'; put 'put ''NTAyOTIsNTAyOTMsNTAyOTcsNTAzMDQsNTAzMjQsNTAzMzIsNTAzNjAsNTAzNjQsNTA0MDksNTA0MTYsNTA0MTcsNTA0MjAsNTA0MjQsNTA0MjYsNTA0MzEsNTA0MzIsNTA0MzMsNTA0NDQsNTA0NDgsNTA0NTIsNTA0NjAsNTA0NzIsNTA0NzMsNTA0NzYsNTA0ODAsNTA0ODgsNTA0ODksNTA0''@;'; put 'put ''OTEsNTA0OTMsNTA1MDAsNTA1MDEsNTA1MDQsNTA1MDUsNTA1MDYsNTA1MDgsNTA1MDksNTA1MTAsNTA1MTUsNTA1MTYsNTA1MTcsNTA1MTksNTA1MjAsNTA1MjEsNTA1MjUsNTA1MjYsNTA1MjgsNTA1MjksNTA1MzIsNTA1MzYsNTA1NDQsNTA1NDUsNTA1NDcsNTA1NDgsNTA1NDksNTA1NTYs''@;'; put 'put ''NTA1NTcsNTA1NjAsNTA1NjQsNTA1NjcsNTA1NzIsNTA1NzMsNTA1NzUsNTA1NzcsNTA1ODEsNTA1ODMsNTA1ODQsNTA1ODgsNTA1OTIsNTA2MDEsNTA2MTIsNTA2MTMsNTA2MTYsNTA2MTcsNTA2MTksNTA2MjAsNTA2MjEsNTA2MjIsNTA2MjgsNTA2MjksNTA2MzAsNTA2MzEsNTA2MzIsNTA2''@;'; put 'put ''MzMsNTA2MzQsNTA2MzYsNTA2MzgsNTQ0MzAsNTQ0MzEsNTQ0MzIsNTQ0MzMsNTQ0MzQsNTQ0MzUsNTQ0MzYsNTQ0MzcsNTQ0MzgsNTQ0MzksNTQ0NDAsNTQ0NDIsNTQ0NDMsNTQ0NDQsNTQ0NDUsNTQ0NDYsNTQ0NDcsNTQ0NDgsNTQ0NDksNTQ0NTAsNTQ0NTEsNTQ0NTIsNTQ0NTMsNTQ0NTQs''@;'; put 'put ''NTQ0NTUsNTQ0NTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ0NTcsNTQ0NTgsNTQ0NTksNTQ0NjAsNTQ0NjEsNTQ0NjIsNTQ0NjMsNTQ0NjQsNTQ0NjUsNTQ0NjYsNTQ0NjcsNTQ0NjgsNTQ0NjksNTQ0NzAsNTQ0NzEsNTQ0NzIsNTQ0NzMsNTQ0NzQsNTQ0NzUsNTQ0NzcsNTQ0''@;'; put 'put ''NzgsNTQ0NzksNTQ0ODEsNTQ0ODIsNTQ0ODMsNTQ0ODUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ0ODYsNTQ0ODcsNTQ0ODgsNTQ0ODksNTQ0OTAsNTQ0OTEsNTQ0OTMsNTQ0OTQsNTQ0OTYsNTQ0OTcsNTQ0OTgsNTQ0OTksNTQ1MDAsNTQ1MDEsNTQ1MDIsNTQ1MDMsNTQ1MDUs''@;'; put 'put ''NTQ1MDYsNTQ1MDcsNTQ1MDksNTQ1MTAsNTQ1MTEsNTQ1MTMsNTQ1MTQsNTQ1MTUsNTQ1MTYsNTQ1MTcsNTQ1MTgsNTQ1MTksNTQ1MjEsNTQ1MjIsNTQ1MjQsNTA2NDAsNTA2NDEsNTA2NDQsNTA2NDgsNTA2NTYsNTA2NTcsNTA2NTksNTA2NjEsNTA2NjgsNTA2NjksNTA2NzAsNTA2NzIsNTA2''@;'; put 'put ''NzYsNTA2NzgsNTA2NzksNTA2ODQsNTA2ODUsNTA2ODYsNTA2ODcsNTA2ODgsNTA2ODksNTA2OTMsNTA2OTQsNTA2OTUsNTA2OTYsNTA3MDAsNTA3MDQsNTA3MTIsNTA3MTMsNTA3MTUsNTA3MTYsNTA3MjQsNTA3MjUsNTA3MjgsNTA3MzIsNTA3MzMsNTA3MzQsNTA3MzYsNTA3MzksNTA3NDAs''@;'; put 'put ''NTA3NDEsNTA3NDMsNTA3NDUsNTA3NDcsNTA3NTIsNTA3NTMsNTA3NTYsNTA3NjAsNTA3NjgsNTA3NjksNTA3NzEsNTA3NzIsNTA3NzMsNTA3ODAsNTA3ODEsNTA3ODQsNTA3OTYsNTA3OTksNTA4MDEsNTA4MDgsNTA4MDksNTA4MTIsNTA4MTYsNTA4MjQsNTA4MjUsNTA4MjcsNTA4MjksNTA4''@;'; put 'put ''MzYsNTA4MzcsNTA4NDAsNTA4NDQsNTA4NTIsNTA4NTMsNTA4NTUsNTA4NTcsNTA4NjQsNTA4NjUsNTA4NjgsNTA4NzIsNTA4NzMsNTA4NzQsNTA4ODAsNTA4ODEsNTA4ODMsNTA4ODUsNTA4OTIsNTA4OTMsNTA4OTYsNTA5MDAsNTA5MDgsNTA5MDksNTA5MTIsNTA5MTMsNTA5MjAsNTQ1MjYs''@;'; put 'put ''NTQ1MjcsNTQ1MjgsNTQ1MjksNTQ1MzAsNTQ1MzEsNTQ1MzMsNTQ1MzQsNTQ1MzUsNTQ1MzcsNTQ1MzgsNTQ1MzksNTQ1NDEsNTQ1NDIsNTQ1NDMsNTQ1NDQsNTQ1NDUsNTQ1NDYsNTQ1NDcsNTQ1NTAsNTQ1NTIsNTQ1NTMsNTQ1NTQsNTQ1NTUsNTQ1NTYsNTQ1NTcsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsNTQ1NTgsNTQ1NTksNTQ1NjAsNTQ1NjEsNTQ1NjIsNTQ1NjMsNTQ1NjQsNTQ1NjUsNTQ1NjYsNTQ1NjcsNTQ1NjgsNTQ1NjksNTQ1NzAsNTQ1NzEsNTQ1NzIsNTQ1NzMsNTQ1NzQsNTQ1NzUsNTQ1NzYsNTQ1NzcsNTQ1NzgsNTQ1NzksNTQ1ODAsNTQ1ODEsNTQ1ODIs''@;'; put 'put ''NTQ1ODMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ1ODQsNTQ1ODUsNTQ1ODYsNTQ1ODcsNTQ1OTAsNTQ1OTEsNTQ1OTMsNTQ1OTQsNTQ1OTUsNTQ1OTcsNTQ1OTgsNTQ1OTksNTQ2MDAsNTQ2MDEsNTQ2MDIsNTQ2MDMsNTQ2MDYsNTQ2MDgsNTQ2MTAsNTQ2MTEsNTQ2MTIsNTQ2''@;'; put 'put ''MTMsNTQ2MTQsNTQ2MTUsNTQ2MTgsNTQ2MTksNTQ2MjEsNTQ2MjIsNTQ2MjMsNTQ2MjUsNTQ2MjYsNTQ2MjcsNTA5MjEsNTA5MjQsNTA5MjgsNTA5MzYsNTA5MzcsNTA5NDEsNTA5NDgsNTA5NDksNTA5NTIsNTA5NTYsNTA5NjQsNTA5NjUsNTA5NjcsNTA5NjksNTA5NzYsNTA5NzcsNTA5ODAs''@;'; put 'put ''NTA5ODQsNTA5OTIsNTA5OTMsNTA5OTUsNTA5OTcsNTA5OTksNTEwMDQsNTEwMDUsNTEwMDgsNTEwMTIsNTEwMTgsNTEwMjAsNTEwMjEsNTEwMjMsNTEwMjUsNTEwMjYsNTEwMjcsNTEwMjgsNTEwMjksNTEwMzAsNTEwMzEsNTEwMzIsNTEwMzYsNTEwNDAsNTEwNDgsNTEwNTEsNTEwNjAsNTEw''@;'; put 'put ''NjEsNTEwNjQsNTEwNjgsNTEwNjksNTEwNzAsNTEwNzUsNTEwNzYsNTEwNzcsNTEwNzksNTEwODAsNTEwODEsNTEwODIsNTEwODYsNTEwODgsNTEwODksNTEwOTIsNTEwOTQsNTEwOTUsNTEwOTYsNTEwOTgsNTExMDQsNTExMDUsNTExMDcsNTExMDgsNTExMDksNTExMTAsNTExMTYsNTExMTcs''@;'; put 'put ''NTExMjAsNTExMjQsNTExMzIsNTExMzMsNTExMzUsNTExMzYsNTExMzcsNTExNDQsNTExNDUsNTExNDgsNTExNTAsNTExNTIsNTExNjAsNTExNjUsNTExNzIsNTExNzYsNTExODAsNTEyMDAsNTEyMDEsNTEyMDQsNTEyMDgsNTEyMTAsNTQ2MjgsNTQ2MzAsNTQ2MzEsNTQ2MzQsNTQ2MzYsNTQ2''@;'; put 'put ''MzgsNTQ2MzksNTQ2NDAsNTQ2NDEsNTQ2NDIsNTQ2NDMsNTQ2NDYsNTQ2NDcsNTQ2NDksNTQ2NTAsNTQ2NTEsNTQ2NTMsNTQ2NTQsNTQ2NTUsNTQ2NTYsNTQ2NTcsNTQ2NTgsNTQ2NTksNTQ2NjIsNTQ2NjYsNTQ2NjcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ2NjgsNTQ2Njks''@;'; put 'put ''NTQ2NzAsNTQ2NzEsNTQ2NzMsNTQ2NzQsNTQ2NzUsNTQ2NzYsNTQ2NzcsNTQ2NzgsNTQ2NzksNTQ2ODAsNTQ2ODEsNTQ2ODIsNTQ2ODMsNTQ2ODQsNTQ2ODUsNTQ2ODYsNTQ2ODcsNTQ2ODgsNTQ2ODksNTQ2OTAsNTQ2OTEsNTQ2OTIsNTQ2OTQsNTQ2OTUsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsNTQ2OTYsNTQ2OTcsNTQ2OTgsNTQ2OTksNTQ3MDAsNTQ3MDEsNTQ3MDIsNTQ3MDMsNTQ3MDQsNTQ3MDUsNTQ3MDYsNTQ3MDcsNTQ3MDgsNTQ3MDksNTQ3MTAsNTQ3MTEsNTQ3MTIsNTQ3MTMsNTQ3MTQsNTQ3MTUsNTQ3MTYsNTQ3MTcsNTQ3MTgsNTQ3MTksNTQ3MjAsNTQ3MjEs''@;'; put 'put ''NTQ3MjIsNTQ3MjMsNTQ3MjQsNTQ3MjUsNTQ3MjYsNTQ3MjcsNTEyMTYsNTEyMTcsNTEyMTksNTEyMjEsNTEyMjIsNTEyMjgsNTEyMjksNTEyMzIsNTEyMzYsNTEyNDQsNTEyNDUsNTEyNDcsNTEyNDksNTEyNTYsNTEyNjAsNTEyNjQsNTEyNzIsNTEyNzMsNTEyNzYsNTEyNzcsNTEyODQsNTEz''@;'; put 'put ''MTIsNTEzMTMsNTEzMTYsNTEzMjAsNTEzMjIsNTEzMjgsNTEzMjksNTEzMzEsNTEzMzMsNTEzMzQsNTEzMzUsNTEzMzksNTEzNDAsNTEzNDEsNTEzNDgsNTEzNTcsNTEzNTksNTEzNjEsNTEzNjgsNTEzODgsNTEzODksNTEzOTYsNTE0MDAsNTE0MDQsNTE0MTIsNTE0MTMsNTE0MTUsNTE0MTcs''@;'; put 'put ''NTE0MjQsNTE0MjUsNTE0MjgsNTE0NDUsNTE0NTIsNTE0NTMsNTE0NTYsNTE0NjAsNTE0NjEsNTE0NjIsNTE0NjgsNTE0NjksNTE0NzEsNTE0NzMsNTE0ODAsNTE1MDAsNTE1MDgsNTE1MzYsNTE1MzcsNTE1NDAsNTE1NDQsNTE1NTIsNTE1NTMsNTE1NTUsNTE1NjQsNTE1NjgsNTE1NzIsNTE1''@;'; put 'put ''ODAsNTE1OTIsNTE1OTMsNTE1OTYsNTE2MDAsNTE2MDgsNTE2MDksNTE2MTEsNTE2MTMsNTE2NDgsNTE2NDksNTE2NTIsNTE2NTUsNTE2NTYsNTE2NTgsNTE2NjQsNTE2NjUsNTE2NjcsNTQ3MzAsNTQ3MzEsNTQ3MzMsNTQ3MzQsNTQ3MzUsNTQ3MzcsNTQ3MzksNTQ3NDAsNTQ3NDEsNTQ3NDIs''@;'; put 'put ''NTQ3NDMsNTQ3NDYsNTQ3NDgsNTQ3NTAsNTQ3NTEsNTQ3NTIsNTQ3NTMsNTQ3NTQsNTQ3NTUsNTQ3NTgsNTQ3NTksNTQ3NjEsNTQ3NjIsNTQ3NjMsNTQ3NjUsNTQ3NjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ3NjcsNTQ3NjgsNTQ3NjksNTQ3NzAsNTQ3NzEsNTQ3NzQsNTQ3''@;'; put 'put ''NzYsNTQ3NzgsNTQ3NzksNTQ3ODAsNTQ3ODEsNTQ3ODIsNTQ3ODMsNTQ3ODYsNTQ3ODcsNTQ3ODksNTQ3OTAsNTQ3OTEsNTQ3OTMsNTQ3OTQsNTQ3OTUsNTQ3OTYsNTQ3OTcsNTQ3OTgsNTQ3OTksNTQ4MDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ4MDYsNTQ4MDcsNTQ4MDgs''@;'; put 'put ''NTQ4MDksNTQ4MTAsNTQ4MTEsNTQ4MTMsNTQ4MTQsNTQ4MTUsNTQ4MTcsNTQ4MTgsNTQ4MTksNTQ4MjEsNTQ4MjIsNTQ4MjMsNTQ4MjQsNTQ4MjUsNTQ4MjYsNTQ4MjcsNTQ4MjgsNTQ4MzAsNTQ4MzEsNTQ4MzIsNTQ4MzMsNTQ4MzQsNTQ4MzUsNTQ4MzYsNTQ4MzcsNTQ4MzgsNTQ4MzksNTQ4''@;'; put 'put ''NDIsNTQ4NDMsNTE2NjksNTE2NzAsNTE2NzMsNTE2NzQsNTE2NzYsNTE2NzcsNTE2ODAsNTE2ODIsNTE2ODQsNTE2ODcsNTE2OTIsNTE2OTMsNTE2OTUsNTE2OTYsNTE2OTcsNTE3MDQsNTE3MDUsNTE3MDgsNTE3MTIsNTE3MjAsNTE3MjEsNTE3MjMsNTE3MjQsNTE3MjUsNTE3MzIsNTE3MzYs''@;'; put 'put ''NTE3NTMsNTE3ODgsNTE3ODksNTE3OTIsNTE3OTYsNTE4MDQsNTE4MDUsNTE4MDcsNTE4MDgsNTE4MDksNTE4MTYsNTE4MzcsNTE4NDQsNTE4NjQsNTE5MDAsNTE5MDEsNTE5MDQsNTE5MDgsNTE5MTYsNTE5MTcsNTE5MTksNTE5MjEsNTE5MjMsNTE5MjgsNTE5MjksNTE5MzYsNTE5NDgsNTE5''@;'; put 'put ''NTYsNTE5NzYsNTE5ODQsNTE5ODgsNTE5OTIsNTJlMyw1MjAwMSw1MjAzMyw1MjA0MCw1MjA0MSw1MjA0NCw1MjA0OCw1MjA1Niw1MjA1Nyw1MjA2MSw1MjA2OCw1MjA4OCw1MjA4OSw1MjEyNCw1MjE1Miw1MjE4MCw1MjE5Niw1MjE5OSw1MjIwMSw1MjIzNiw1MjIzNyw1MjI0MCw1MjI0NCw1''@;'; put 'put ''MjI1Miw1MjI1Myw1MjI1Nyw1MjI1OCw1MjI2Myw1MjI2NCw1MjI2NSw1MjI2OCw1MjI3MCw1MjI3Miw1MjI4MCw1MjI4MSw1MjI4Myw1NDg0NSw1NDg0Niw1NDg0Nyw1NDg0OSw1NDg1MCw1NDg1MSw1NDg1Miw1NDg1NCw1NDg1NSw1NDg1OCw1NDg2MCw1NDg2Miw1NDg2Myw1NDg2NCw1NDg2''@;'; put 'put ''Niw1NDg2Nyw1NDg3MCw1NDg3MSw1NDg3Myw1NDg3NCw1NDg3NSw1NDg3Nyw1NDg3OCw1NDg3OSw1NDg4MCw1NDg4MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDg4Miw1NDg4Myw1NDg4NCw1NDg4NSw1NDg4Niw1NDg4OCw1NDg5MCw1NDg5MSw1NDg5Miw1NDg5Myw1NDg5NCw1''@;'; put 'put ''NDg5NSw1NDg5OCw1NDg5OSw1NDkwMSw1NDkwMiw1NDkwMyw1NDkwNCw1NDkwNSw1NDkwNiw1NDkwNyw1NDkwOCw1NDkwOSw1NDkxMCw1NDkxMSw1NDkxMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDkxMyw1NDkxNCw1NDkxNiw1NDkxOCw1NDkxOSw1NDkyMCw1NDkyMSw1NDky''@;'; put 'put ''Miw1NDkyMyw1NDkyNiw1NDkyNyw1NDkyOSw1NDkzMCw1NDkzMSw1NDkzMyw1NDkzNCw1NDkzNSw1NDkzNiw1NDkzNyw1NDkzOCw1NDkzOSw1NDk0MCw1NDk0Miw1NDk0NCw1NDk0Niw1NDk0Nyw1NDk0OCw1NDk0OSw1NDk1MCw1NDk1MSw1NDk1Myw1NDk1NCw1MjI4NCw1MjI4NSw1MjI4Niw1''@;'; put 'put ''MjI5Miw1MjI5Myw1MjI5Niw1MjMwMCw1MjMwOCw1MjMwOSw1MjMxMSw1MjMxMiw1MjMxMyw1MjMyMCw1MjMyNCw1MjMyNiw1MjMyOCw1MjMzNiw1MjM0MSw1MjM3Niw1MjM3Nyw1MjM4MCw1MjM4NCw1MjM5Miw1MjM5Myw1MjM5NSw1MjM5Niw1MjM5Nyw1MjQwNCw1MjQwNSw1MjQwOCw1MjQx''@;'; put 'put ''Miw1MjQyMCw1MjQyMSw1MjQyMyw1MjQyNSw1MjQzMiw1MjQzNiw1MjQ1Miw1MjQ2MCw1MjQ2NCw1MjQ4MSw1MjQ4OCw1MjQ4OSw1MjQ5Miw1MjQ5Niw1MjUwNCw1MjUwNSw1MjUwNyw1MjUwOSw1MjUxNiw1MjUyMCw1MjUyNCw1MjUzNyw1MjU3Miw1MjU3Niw1MjU4MCw1MjU4OCw1MjU4OSw1''@;'; put 'put ''MjU5MSw1MjU5Myw1MjYwMCw1MjYxNiw1MjYyOCw1MjYyOSw1MjYzMiw1MjYzNiw1MjY0NCw1MjY0NSw1MjY0Nyw1MjY0OSw1MjY1Niw1MjY3Niw1MjY4NCw1MjY4OCw1MjcxMiw1MjcxNiw1MjcyMCw1MjcyOCw1MjcyOSw1MjczMSw1MjczMyw1Mjc0MCw1Mjc0NCw1Mjc0OCw1Mjc1Niw1Mjc2''@;'; put 'put ''MSw1Mjc2OCw1Mjc2OSw1Mjc3Miw1Mjc3Niw1Mjc4NCw1Mjc4NSw1Mjc4Nyw1Mjc4OSw1NDk1NSw1NDk1Nyw1NDk1OCw1NDk1OSw1NDk2MSw1NDk2Miw1NDk2Myw1NDk2NCw1NDk2NSw1NDk2Niw1NDk2Nyw1NDk2OCw1NDk3MCw1NDk3Miw1NDk3Myw1NDk3NCw1NDk3NSw1NDk3Niw1NDk3Nyw1''@;'; put 'put ''NDk3OCw1NDk3OSw1NDk4Miw1NDk4Myw1NDk4NSw1NDk4Niw1NDk4NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDk4OSw1NDk5MCw1NDk5MSw1NDk5Miw1NDk5NCw1NDk5NSw1NDk5Nyw1NDk5OCw1NWUzLDU1MDAyLDU1MDAzLDU1MDA0LDU1MDA1LDU1MDA2LDU1MDA3LDU1MDA5''@;'; put 'put ''LDU1MDEwLDU1MDExLDU1MDEzLDU1MDE0LDU1MDE1LDU1MDE3LDU1MDE4LDU1MDE5LDU1MDIwLDU1MDIxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU1MDIyLDU1MDIzLDU1MDI1LDU1MDI2LDU1MDI3LDU1MDI4LDU1MDMwLDU1MDMxLDU1MDMyLDU1MDMzLDU1MDM0LDU1MDM1LDU1''@;'; put 'put ''MDM4LDU1MDM5LDU1MDQxLDU1MDQyLDU1MDQzLDU1MDQ1LDU1MDQ2LDU1MDQ3LDU1MDQ4LDU1MDQ5LDU1MDUwLDU1MDUxLDU1MDUyLDU1MDUzLDU1MDU0LDU1MDU1LDU1MDU2LDU1MDU4LDU1MDU5LDU1MDYwLDUyODI0LDUyODI1LDUyODI4LDUyODMxLDUyODMyLDUyODMzLDUyODQwLDUyODQx''@;'; put 'put ''LDUyODQzLDUyODQ1LDUyODUyLDUyODUzLDUyODU2LDUyODYwLDUyODY4LDUyODY5LDUyODcxLDUyODczLDUyODgwLDUyODgxLDUyODg0LDUyODg4LDUyODk2LDUyODk3LDUyODk5LDUyOTAwLDUyOTAxLDUyOTA4LDUyOTA5LDUyOTI5LDUyOTY0LDUyOTY1LDUyOTY4LDUyOTcxLDUyOTcyLDUy''@;'; put 'put ''OTgwLDUyOTgxLDUyOTgzLDUyOTg0LDUyOTg1LDUyOTkyLDUyOTkzLDUyOTk2LDUzZTMsNTMwMDgsNTMwMDksNTMwMTEsNTMwMTMsNTMwMjAsNTMwMjQsNTMwMjgsNTMwMzYsNTMwMzcsNTMwMzksNTMwNDAsNTMwNDEsNTMwNDgsNTMwNzYsNTMwNzcsNTMwODAsNTMwODQsNTMwOTIsNTMwOTMs''@;'; put 'put ''NTMwOTUsNTMwOTcsNTMxMDQsNTMxMDUsNTMxMDgsNTMxMTIsNTMxMjAsNTMxMjUsNTMxMzIsNTMxNTMsNTMxNjAsNTMxNjgsNTMxODgsNTMyMTYsNTMyMTcsNTMyMjAsNTMyMjQsNTMyMzIsNTMyMzMsNTMyMzUsNTMyMzcsNTMyNDQsNTMyNDgsNTMyNTIsNTMyNjUsNTMyNzIsNTMyOTMsNTMz''@;'; put 'put ''MDAsNTMzMDEsNTMzMDQsNTMzMDgsNTUwNjEsNTUwNjIsNTUwNjMsNTUwNjYsNTUwNjcsNTUwNjksNTUwNzAsNTUwNzEsNTUwNzMsNTUwNzQsNTUwNzUsNTUwNzYsNTUwNzcsNTUwNzgsNTUwNzksNTUwODIsNTUwODQsNTUwODYsNTUwODcsNTUwODgsNTUwODksNTUwOTAsNTUwOTEsNTUwOTQs''@;'; put 'put ''NTUwOTUsNTUwOTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTUwOTgsNTUwOTksNTUxMDEsNTUxMDIsNTUxMDMsNTUxMDQsNTUxMDUsNTUxMDYsNTUxMDcsNTUxMDksNTUxMTAsNTUxMTIsNTUxMTQsNTUxMTUsNTUxMTYsNTUxMTcsNTUxMTgsNTUxMTksNTUxMjIsNTUxMjMsNTUx''@;'; put 'put ''MjUsNTUxMzAsNTUxMzEsNTUxMzIsNTUxMzMsNTUxMzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTUxMzUsNTUxMzgsNTUxNDAsNTUxNDIsNTUxNDMsNTUxNDQsNTUxNDYsNTUxNDcsNTUxNDksNTUxNTAsNTUxNTEsNTUxNTMsNTUxNTQsNTUxNTUsNTUxNTcsNTUxNTgsNTUxNTks''@;'; put 'put ''NTUxNjAsNTUxNjEsNTUxNjIsNTUxNjMsNTUxNjYsNTUxNjcsNTUxNjgsNTUxNzAsNTUxNzEsNTUxNzIsNTUxNzMsNTUxNzQsNTUxNzUsNTUxNzgsNTUxNzksNTMzMTYsNTMzMTcsNTMzMTksNTMzMjEsNTMzMjgsNTMzMzIsNTMzMzYsNTMzNDQsNTMzNTYsNTMzNTcsNTMzNjAsNTMzNjQsNTMz''@;'; put 'put ''NzIsNTMzNzMsNTMzNzcsNTM0MTIsNTM0MTMsNTM0MTYsNTM0MjAsNTM0MjgsNTM0MjksNTM0MzEsNTM0MzMsNTM0NDAsNTM0NDEsNTM0NDQsNTM0NDgsNTM0NDksNTM0NTYsNTM0NTcsNTM0NTksNTM0NjAsNTM0NjEsNTM0NjgsNTM0NjksNTM0NzIsNTM0NzYsNTM0ODQsNTM0ODUsNTM0ODcs''@;'; put 'put ''NTM0ODgsNTM0ODksNTM0OTYsNTM1MTcsNTM1NTIsNTM1NTMsNTM1NTYsNTM1NjAsNTM1NjIsNTM1NjgsNTM1NjksNTM1NzEsNTM1NzIsNTM1NzMsNTM1ODAsNTM1ODEsNTM1ODQsNTM1ODgsNTM1OTYsNTM1OTcsNTM1OTksNTM2MDEsNTM2MDgsNTM2MTIsNTM2MjgsNTM2MzYsNTM2NDAsNTM2''@;'; put 'put ''NjQsNTM2NjUsNTM2NjgsNTM2NzIsNTM2ODAsNTM2ODEsNTM2ODMsNTM2ODUsNTM2OTAsNTM2OTIsNTM2OTYsNTM3MjAsNTM3NDgsNTM3NTIsNTM3NjcsNTM3NjksNTM3NzYsNTM4MDQsNTM4MDUsNTM4MDgsNTM4MTIsNTM4MjAsNTM4MjEsNTM4MjMsNTM4MjUsNTM4MzIsNTM4NTIsNTUxODEs''@;'; put 'put ''NTUxODIsNTUxODMsNTUxODUsNTUxODYsNTUxODcsNTUxODgsNTUxODksNTUxOTAsNTUxOTEsNTUxOTQsNTUxOTYsNTUxOTgsNTUxOTksNTUyMDAsNTUyMDEsNTUyMDIsNTUyMDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM4''@;'; put 'put ''NjAsNTM4ODgsNTM4ODksNTM4OTIsNTM4OTYsNTM5MDQsNTM5MDUsNTM5MDksNTM5MTYsNTM5MjAsNTM5MjQsNTM5MzIsNTM5MzcsNTM5NDQsNTM5NDUsNTM5NDgsNTM5NTEsNTM5NTIsNTM5NTQsNTM5NjAsNTM5NjEsNTM5NjMsNTM5NzIsNTM5NzYsNTM5ODAsNTM5ODgsNTM5ODksNTRlMyw1''@;'; put 'put ''NDAwMSw1NDAwNCw1NDAwOCw1NDAxNiw1NDAxNyw1NDAxOSw1NDAyMSw1NDAyOCw1NDAyOSw1NDAzMCw1NDAzMiw1NDAzNiw1NDAzOCw1NDA0NCw1NDA0NSw1NDA0Nyw1NDA0OCw1NDA0OSw1NDA1Myw1NDA1Niw1NDA1Nyw1NDA2MCw1NDA2NCw1NDA3Miw1NDA3Myw1NDA3NSw1NDA3Niw1NDA3''@;'; put 'put ''Nyw1NDA4NCw1NDA4NSw1NDE0MCw1NDE0MSw1NDE0NCw1NDE0OCw1NDE1Niw1NDE1Nyw1NDE1OSw1NDE2MCw1NDE2MSw1NDE2OCw1NDE2OSw1NDE3Miw1NDE3Niw1NDE4NCw1NDE4NSw1NDE4Nyw1NDE4OSw1NDE5Niw1NDIwMCw1NDIwNCw1NDIxMiw1NDIxMyw1NDIxNiw1NDIxNyw1NDIyNCw1''@;'; put 'put ''NDIzMiw1NDI0MSw1NDI0Myw1NDI1Miw1NDI1Myw1NDI1Niw1NDI2MCw1NDI2OCw1NDI2OSw1NDI3MSw1NDI3MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDI4MCw1NDMwMSw1NDMzNiw1NDM0MCw1NDM2NCw1NDM2OCw1NDM3Miw1NDM4MSw1NDM4Myw1NDM5Miw1NDM5Myw1NDM5Niw1NDM5OSw1NDQwMCw1NDQwMiw1NDQwOCw1NDQwOSw1NDQxMSw1NDQxMyw1''@;'; put 'put ''NDQyMCw1NDQ0MSw1NDQ3Niw1NDQ4MCw1NDQ4NCw1NDQ5Miw1NDQ5NSw1NDUwNCw1NDUwOCw1NDUxMiw1NDUyMCw1NDUyMyw1NDUyNSw1NDUzMiw1NDUzNiw1NDU0MCw1NDU0OCw1NDU0OSw1NDU1MSw1NDU4OCw1NDU4OSw1NDU5Miw1NDU5Niw1NDYwNCw1NDYwNSw1NDYwNyw1NDYwOSw1NDYx''@;'; put 'put ''Niw1NDYxNyw1NDYyMCw1NDYyNCw1NDYyOSw1NDYzMiw1NDYzMyw1NDYzNSw1NDYzNyw1NDY0NCw1NDY0NSw1NDY0OCw1NDY1Miw1NDY2MCw1NDY2MSw1NDY2Myw1NDY2NCw1NDY2NSw1NDY3Miw1NDY5Myw1NDcyOCw1NDcyOSw1NDczMiw1NDczNiw1NDczOCw1NDc0NCw1NDc0NSw1NDc0Nyw1''@;'; put 'put ''NDc0OSw1NDc1Niw1NDc1Nyw1NDc2MCw1NDc2NCw1NDc3Miw1NDc3Myw1NDc3NSw1NDc3Nyw1NDc4NCw1NDc4NSw1NDc4OCw1NDc5Miw1NDgwMCw1NDgwMSw1NDgwMyw1NDgwNCw1NDgwNSw1NDgxMiw1NDgxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDgyMCw1NDgyOSw1NDg0MCw1NDg0MSw1NDg0NCw1NDg0OCw1NDg1Myw1NDg1Niw1NDg1Nyw1NDg1OSw1''@;'; put 'put ''NDg2MSw1NDg2NSw1NDg2OCw1NDg2OSw1NDg3Miw1NDg3Niw1NDg4Nyw1NDg4OSw1NDg5Niw1NDg5Nyw1NDkwMCw1NDkxNSw1NDkxNyw1NDkyNCw1NDkyNSw1NDkyOCw1NDkzMiw1NDk0MSw1NDk0Myw1NDk0NSw1NDk1Miw1NDk1Niw1NDk2MCw1NDk2OSw1NDk3MSw1NDk4MCw1NDk4MSw1NDk4''@;'; put 'put ''NCw1NDk4OCw1NDk5Myw1NDk5Niw1NDk5OSw1NTAwMSw1NTAwOCw1NTAxMiw1NTAxNiw1NTAyNCw1NTAyOSw1NTAzNiw1NTAzNyw1NTA0MCw1NTA0NCw1NTA1Nyw1NTA2NCw1NTA2NSw1NTA2OCw1NTA3Miw1NTA4MCw1NTA4MSw1NTA4Myw1NTA4NSw1NTA5Miw1NTA5Myw1NTA5Niw1NTEwMCw1''@;'; put 'put ''NTEwOCw1NTExMSw1NTExMyw1NTEyMCw1NTEyMSw1NTEyNCw1NTEyNiw1NTEyNyw1NTEyOCw1NTEyOSw1NTEzNiw1NTEzNyw1NTEzOSw1NTE0MSw1NTE0NSw1NTE0OCw1NTE1Miw1NTE1Niw1NTE2NCw1NTE2NSw1NTE2OSw1NTE3Niw1NTE3Nyw1NTE4MCw1NTE4NCw1NTE5Miw1NTE5Myw1NTE5''@;'; put 'put ''NSw1NTE5NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIwMjg1LDIwMzM5LDIwNTUxLDIwNzI5LDIxMTUyLDIxNDg3LDIxNjIxLDIxNzMz''@;'; put 'put ''LDIyMDI1LDIzMjMzLDIzNDc4LDI2MjQ3LDI2NTUwLDI2NTUxLDI2NjA3LDI3NDY4LDI5NjM0LDMwMTQ2LDMxMjkyLDMzNDk5LDMzNTQwLDM0OTAzLDM0OTUyLDM1MzgyLDM2MDQwLDM2MzAzLDM2NjAzLDM2ODM4LDM5MzgxLDIxMDUxLDIxMzY0LDIxNTA4LDI0NjgyLDI0OTMyLDI3NTgwLDI5''@;'; put 'put ''NjQ3LDMzMDUwLDM1MjU4LDM1MjgyLDM4MzA3LDIwMzU1LDIxMDAyLDIyNzE4LDIyOTA0LDIzMDE0LDI0MTc4LDI0MTg1LDI1MDMxLDI1NTM2LDI2NDM4LDI2NjA0LDI2NzUxLDI4NTY3LDMwMjg2LDMwNDc1LDMwOTY1LDMxMjQwLDMxNDg3LDMxNzc3LDMyOTI1LDMzMzkwLDMzMzkzLDM1NTYz''@;'; put 'put ''LDM4MjkxLDIwMDc1LDIxOTE3LDI2MzU5LDI4MjEyLDMwODgzLDMxNDY5LDMzODgzLDM1MDg4LDM0NjM4LDM4ODI0LDIxMjA4LDIyMzUwLDIyNTcwLDIzODg0LDI0ODYzLDI1MDIyLDI1MTIxLDI1OTU0LDI2NTc3LDI3MjA0LDI4MTg3LDI5OTc2LDMwMTMxLDMwNDM1LDMwNjQwLDMyMDU4LDM3''@;'; put 'put ''MDM5LDM3OTY5LDM3OTcwLDQwODUzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLDIxMjgzLDIzNzI0LDMwMDAyLDMyOTg3LDM3NDQwLDM4Mjk2LDIxMDgzLDIyNTM2LDIzMDA0LDIzNzEzLDIzODMxLDI0MjQ3LDI0Mzc4LDI0Mzk0LDI0OTUxLDI3NzQzLDMwMDc0LDMwMDg2LDMxOTY4LDMyMTE1LDMyMTc3LDMyNjUyLDMzMTA4LDMzMzEzLDM0MTkzLDM1MTM3LDM1''@;'; put 'put ''NjExLDM3NjI4LDM4NDc3LDQwMDA3LDIwMTcxLDIwMjE1LDIwNDkxLDIwOTc3LDIyNjA3LDI0ODg3LDI0ODk0LDI0OTM2LDI1OTEzLDI3MTE0LDI4NDMzLDMwMTE3LDMwMzQyLDMwNDIyLDMxNjIzLDMzNDQ1LDMzOTk1LDYzNzQ0LDM3Nzk5LDM4MjgzLDIxODg4LDIzNDU4LDIyMzUzLDYzNzQ1''@;'; put 'put ''LDMxOTIzLDMyNjk3LDM3MzAxLDIwNTIwLDIxNDM1LDIzNjIxLDI0MDQwLDI1Mjk4LDI1NDU0LDI1ODE4LDI1ODMxLDI4MTkyLDI4ODQ0LDMxMDY3LDM2MzE3LDM2MzgyLDYzNzQ2LDM2OTg5LDM3NDQ1LDM3NjI0LDIwMDk0LDIwMjE0LDIwNTgxLDI0MDYyLDI0MzE0LDI0ODM4LDI2OTY3LDMz''@;'; put 'put ''MTM3LDM0Mzg4LDM2NDIzLDM3NzQ5LDM5NDY3LDIwMDYyLDIwNjI1LDI2NDgwLDI2Njg4LDIwNzQ1LDIxMTMzLDIxMTM4LDI3Mjk4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMwNjUyLDM3MzkyLDQwNjYwLDIxMTYzLDI0NjIzLDM2ODUwLDIwNTUyLDI1MDAxLDI1NTgxLDI1ODAyLDI2Njg0LDI3MjY4LDI4NjA4LDMzMTYwLDM1MjMzLDM4NTQ4LDIyNTMzLDI5''@;'; put 'put ''MzA5LDI5MzU2LDI5OTU2LDMyMTIxLDMyMzY1LDMyOTM3LDM1MjExLDM1NzAwLDM2OTYzLDQwMjczLDI1MjI1LDI3NzcwLDI4NTAwLDMyMDgwLDMyNTcwLDM1MzYzLDIwODYwLDI0OTA2LDMxNjQ1LDM1NjA5LDM3NDYzLDM3NzcyLDIwMTQwLDIwNDM1LDIwNTEwLDIwNjcwLDIwNzQyLDIxMTg1''@;'; put 'put ''LDIxMTk3LDIxMzc1LDIyMzg0LDIyNjU5LDI0MjE4LDI0NDY1LDI0OTUwLDI1MDA0LDI1ODA2LDI1OTY0LDI2MjIzLDI2Mjk5LDI2MzU2LDI2Nzc1LDI4MDM5LDI4ODA1LDI4OTEzLDI5ODU1LDI5ODYxLDI5ODk4LDMwMTY5LDMwODI4LDMwOTU2LDMxNDU1LDMxNDc4LDMyMDY5LDMyMTQ3LDMy''@;'; put 'put ''Nzg5LDMyODMxLDMzMDUxLDMzNjg2LDM1Njg2LDM2NjI5LDM2ODg1LDM3ODU3LDM4OTE1LDM4OTY4LDM5NTE0LDM5OTEyLDIwNDE4LDIxODQzLDIyNTg2LDIyODY1LDIzMzk1LDIzNjIyLDI0NzYwLDI1MTA2LDI2NjkwLDI2ODAwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2ODU2LDI4MzMwLDMwMDI4LDMwMzI4LDMwOTI2LDMxMjkzLDMxOTk1LDMyMzYzLDMy''@;'; put 'put ''MzgwLDM1MzM2LDM1NDg5LDM1OTAzLDM4NTQyLDQwMzg4LDIxNDc2LDIxNDgxLDIxNTc4LDIxNjE3LDIyMjY2LDIyOTkzLDIzMzk2LDIzNjExLDI0MjM1LDI1MzM1LDI1OTExLDI1OTI1LDI1OTcwLDI2MjcyLDI2NTQzLDI3MDczLDI3ODM3LDMwMjA0LDMwMzUyLDMwNTkwLDMxMjk1LDMyNjYw''@;'; put 'put ''LDMyNzcxLDMyOTI5LDMzMTY3LDMzNTEwLDMzNTMzLDMzNzc2LDM0MjQxLDM0ODY1LDM0OTk2LDM1NDkzLDYzNzQ3LDM2NzY0LDM3Njc4LDM4NTk5LDM5MDE1LDM5NjQwLDQwNzIzLDIxNzQxLDI2MDExLDI2MzU0LDI2NzY3LDMxMjk2LDM1ODk1LDQwMjg4LDIyMjU2LDIyMzcyLDIzODI1LDI2''@;'; put 'put ''MTE4LDI2ODAxLDI2ODI5LDI4NDE0LDI5NzM2LDM0OTc0LDM5OTA4LDI3NzUyLDYzNzQ4LDM5NTkyLDIwMzc5LDIwODQ0LDIwODQ5LDIxMTUxLDIzMzgwLDI0MDM3LDI0NjU2LDI0Njg1LDI1MzI5LDI1NTExLDI1OTE1LDI5NjU3LDMxMzU0LDM0NDY3LDM2MDAyLDM4Nzk5LDIwMDE4LDIzNTIx''@;'; put 'put ''LDI1MDk2LDI2NTI0LDI5OTE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLDMxMTg1LDMzNzQ3LDM1NDYzLDM1NTA2LDM2MzI4LDM2OTQyLDM3NzA3LDM4OTgyLDI0Mjc1LDI3MTEyLDM0MzAzLDM3MTAxLDYzNzQ5LDIwODk2LDIzNDQ4LDIzNTMyLDI0OTMxLDI2ODc0LDI3NDU0LDI4NzQ4LDI5NzQzLDI5OTEyLDMxNjQ5LDMyNTkyLDMzNzMzLDM1MjY0LDM2MDEx''@;'; put 'put ''LDM4MzY0LDM5MjA4LDIxMDM4LDI0NjY5LDI1MzI0LDM2ODY2LDIwMzYyLDIwODA5LDIxMjgxLDIyNzQ1LDI0MjkxLDI2MzM2LDI3OTYwLDI4ODI2LDI5Mzc4LDI5NjU0LDMxNTY4LDMzMDA5LDM3OTc5LDIxMzUwLDI1NDk5LDMyNjE5LDIwMDU0LDIwNjA4LDIyNjAyLDIyNzUwLDI0NjE4LDI0''@;'; put 'put ''ODcxLDI1Mjk2LDI3MDg4LDM5NzQ1LDIzNDM5LDMyMDI0LDMyOTQ1LDM2NzAzLDIwMTMyLDIwNjg5LDIxNjc2LDIxOTMyLDIzMzA4LDIzOTY4LDI0MDM5LDI1ODk4LDI1OTM0LDI2NjU3LDI3MjExLDI5NDA5LDMwMzUwLDMwNzAzLDMyMDk0LDMyNzYxLDMzMTg0LDM0MTI2LDM0NTI3LDM2NjEx''@;'; put 'put ''LDM2Njg2LDM3MDY2LDM5MTcxLDM5NTA5LDM5ODUxLDE5OTkyLDIwMDM3LDIwMDYxLDIwMTY3LDIwNDY1LDIwODU1LDIxMjQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxMzEyLDIxNDc1LDIxNDc3LDIxNjQ2LDIyMDM2LDIyMzg5LDIyNDM0LDIzNDk1LDIzOTQzLDI0MjcyLDI1MDg0LDI1MzA0LDI1OTM3LDI2NTUyLDI2NjAxLDI3MDgzLDI3NDcyLDI3NTkw''@;'; put 'put ''LDI3NjI4LDI3NzE0LDI4MzE3LDI4NzkyLDI5Mzk5LDI5NTkwLDI5Njk5LDMwNjU1LDMwNjk3LDMxMzUwLDMyMTI3LDMyNzc3LDMzMjc2LDMzMjg1LDMzMjkwLDMzNTAzLDM0OTE0LDM1NjM1LDM2MDkyLDM2NTQ0LDM2ODgxLDM3MDQxLDM3NDc2LDM3NTU4LDM5Mzc4LDM5NDkzLDQwMTY5LDQw''@;'; put 'put ''NDA3LDQwODYwLDIyMjgzLDIzNjE2LDMzNzM4LDM4ODE2LDM4ODI3LDQwNjI4LDIxNTMxLDMxMzg0LDMyNjc2LDM1MDMzLDM2NTU3LDM3MDg5LDIyNTI4LDIzNjI0LDI1NDk2LDMxMzkxLDIzNDcwLDI0MzM5LDMxMzUzLDMxNDA2LDMzNDIyLDM2NTI0LDIwNTE4LDIxMDQ4LDIxMjQwLDIxMzY3''@;'; put 'put ''LDIyMjgwLDI1MzMxLDI1NDU4LDI3NDAyLDI4MDk5LDMwNTE5LDIxNDEzLDI5NTI3LDM0MTUyLDM2NDcwLDM4MzU3LDI2NDI2LDI3MzMxLDI4NTI4LDM1NDM3LDM2NTU2LDM5MjQzLDYzNzUwLDI2MjMxLDI3NTEyLDM2MDIwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM5NzQwLDYzNzUxLDIxNDgzLDIyMzE3LDIyODYyLDI1NTQyLDI3MTMxLDI5Njc0LDMwNzg5''@;'; put 'put ''LDMxNDE4LDMxNDI5LDMxOTk4LDMzOTA5LDM1MjE1LDM2MjExLDM2OTE3LDM4MzEyLDIxMjQzLDIyMzQzLDMwMDIzLDMxNTg0LDMzNzQwLDM3NDA2LDYzNzUyLDI3MjI0LDIwODExLDIxMDY3LDIxMTI3LDI1MTE5LDI2ODQwLDI2OTk3LDM4NTUzLDIwNjc3LDIxMTU2LDIxMjIwLDI1MDI3LDI2''@;'; put 'put ''MDIwLDI2NjgxLDI3MTM1LDI5ODIyLDMxNTYzLDMzNDY1LDMzNzcxLDM1MjUwLDM1NjQxLDM2ODE3LDM5MjQxLDYzNzUzLDIwMTcwLDIyOTM1LDI1ODEwLDI2MTI5LDI3Mjc4LDI5NzQ4LDMxMTA1LDMxMTY1LDMzNDQ5LDM0OTQyLDM0OTQzLDM1MTY3LDYzNzU0LDM3NjcwLDIwMjM1LDIxNDUw''@;'; put 'put ''LDI0NjEzLDI1MjAxLDI3NzYyLDMyMDI2LDMyMTAyLDIwMTIwLDIwODM0LDMwNjg0LDMyOTQzLDIwMjI1LDIwMjM4LDIwODU0LDIwODY0LDIxOTgwLDIyMTIwLDIyMzMxLDIyNTIyLDIyNTI0LDIyODA0LDIyODU1LDIyOTMxLDIzNDkyLDIzNjk2LDIzODIyLDI0MDQ5LDI0MTkwLDI0NTI0LDI1''@;'; put 'put ''MjE2LDI2MDcxLDI2MDgzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LDI2Mzk4LDI2Mzk5LDI2NDYyLDI2ODI3LDI2ODIwLDI3MjMxLDI3NDUwLDI3NjgzLDI3NzczLDI3Nzc4LDI4MTAzLDI5NTkyLDI5NzM0LDI5NzM4LDI5ODI2LDI5ODU5LDMwMDcyLDMwMDc5LDMwODQ5LDMwOTU5LDMxMDQxLDMxMDQ3LDMxMDQ4LDMxMDk4LDMxNjM3LDMyZTMsMzIxODYsMzI2''@;'; put 'put ''NDgsMzI3NzQsMzI4MTMsMzI5MDgsMzUzNTIsMzU2NjMsMzU5MTIsMzYyMTUsMzc2NjUsMzc2NjgsMzkxMzgsMzkyNDksMzk0MzgsMzk0MzksMzk1MjUsNDA1OTQsMzIyMDIsMjAzNDIsMjE1MTMsMjUzMjYsMjY3MDgsMzczMjksMjE5MzEsMjA3OTQsNjM3NTUsNjM3NTYsMjMwNjgsMjUwNjIs''@;'; put 'put ''NjM3NTcsMjUyOTUsMjUzNDMsNjM3NTgsNjM3NTksNjM3NjAsNjM3NjEsNjM3NjIsNjM3NjMsMzcwMjcsNjM3NjQsNjM3NjUsNjM3NjYsNjM3NjcsNjM3NjgsMzU1ODIsNjM3NjksNjM3NzAsNjM3NzEsNjM3NzIsMjYyNjIsNjM3NzMsMjkwMTQsNjM3NzQsNjM3NzUsMzg2MjcsNjM3NzYsMjU0''@;'; put 'put ''MjMsMjU0NjYsMjEzMzUsNjM3NzcsMjY1MTEsMjY5NzYsMjgyNzUsNjM3NzgsMzAwMDcsNjM3NzksNjM3ODAsNjM3ODEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzIwMTMsNjM3ODIsNjM3ODMsMzQ5MzAsMjIyMTgsMjMwNjQsNjM3ODQsNjM3ODUsNjM3ODYsNjM3ODcsNjM3ODgsMjAwMzUsNjM3ODksMjA4MzksMjI4NTYsMjY2MDgsMzI3ODQsNjM3OTAsMjI4''@;'; put 'put ''OTksMjQxODAsMjU3NTQsMzExNzgsMjQ1NjUsMjQ2ODQsMjUyODgsMjU0NjcsMjM1MjcsMjM1MTEsMjExNjIsNjM3OTEsMjI5MDAsMjQzNjEsMjQ1OTQsNjM3OTIsNjM3OTMsNjM3OTQsMjk3ODUsNjM3OTUsNjM3OTYsNjM3OTcsNjM3OTgsNjM3OTksNjM4MDAsMzkzNzcsNjM4MDEsNjM4MDIs''@;'; put 'put ''NjM4MDMsNjM4MDQsNjM4MDUsNjM4MDYsNjM4MDcsNjM4MDgsNjM4MDksNjM4MTAsNjM4MTEsMjg2MTEsNjM4MTIsNjM4MTMsMzMyMTUsMzY3ODYsMjQ4MTcsNjM4MTQsNjM4MTUsMzMxMjYsNjM4MTYsNjM4MTcsMjM2MTUsNjM4MTgsNjM4MTksNjM4MjAsNjM4MjEsNjM4MjIsNjM4MjMsNjM4''@;'; put 'put ''MjQsNjM4MjUsMjMyNzMsMzUzNjUsMjY0OTEsMzIwMTYsNjM4MjYsNjM4MjcsNjM4MjgsNjM4MjksNjM4MzAsNjM4MzEsMzMwMjEsNjM4MzIsNjM4MzMsMjM2MTIsMjc4NzcsMjEzMTEsMjgzNDYsMjI4MTAsMzM1OTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjAwMjUsMjAxNTAsMjAyOTQsMjE5MzQsMjIyOTYsMjI3MjcsMjQ0MDYsMjYwMzksMjYwODYsMjcy''@;'; put 'put ''NjQsMjc1NzMsMjgyMzcsMzA3MDEsMzE0NzEsMzE3NzQsMzIyMjIsMzQ1MDcsMzQ5NjIsMzcxNzAsMzc3MjMsMjU3ODcsMjg2MDYsMjk1NjIsMzAxMzYsMzY5NDgsMjE4NDYsMjIzNDksMjUwMTgsMjU4MTIsMjYzMTEsMjgxMjksMjgyNTEsMjg1MjUsMjg2MDEsMzAxOTIsMzI4MzUsMzMyMTMs''@;'; put 'put ''MzQxMTMsMzUyMDMsMzU1MjcsMzU2NzQsMzc2NjMsMjc3OTUsMzAwMzUsMzE1NzIsMzYzNjcsMzY5NTcsMjE3NzYsMjI1MzAsMjI2MTYsMjQxNjIsMjUwOTUsMjU3NTgsMjY4NDgsMzAwNzAsMzE5NTgsMzQ3MzksNDA2ODAsMjAxOTUsMjI0MDgsMjIzODIsMjI4MjMsMjM1NjUsMjM3MjksMjQx''@;'; put 'put ''MTgsMjQ0NTMsMjUxNDAsMjU4MjUsMjk2MTksMzMyNzQsMzQ5NTUsMzYwMjQsMzg1MzgsNDA2NjcsMjM0MjksMjQ1MDMsMjQ3NTUsMjA0OTgsMjA5OTIsMjEwNDAsMjIyOTQsMjI1ODEsMjI2MTUsMjM1NjYsMjM2NDgsMjM3OTgsMjM5NDcsMjQyMzAsMjQ0NjYsMjQ3NjQsMjUzNjEsMjU0ODEs''@;'; put 'put ''MjU2MjMsMjY2OTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjY4''@;'; put 'put ''NzMsMjczMzAsMjgxMjAsMjgxOTMsMjgzNzIsMjg2NDQsMjkxODIsMzA0MjgsMzA1ODUsMzExNTMsMzEyOTEsMzM3OTYsMzUyNDEsMzYwNzcsMzYzMzksMzY0MjQsMzY4NjcsMzY4ODQsMzY5NDcsMzcxMTcsMzc3MDksMzg1MTgsMzg4NzYsMjc2MDIsMjg2NzgsMjkyNzIsMjkzNDYsMjk1NDQs''@;'; put 'put ''MzA1NjMsMzExNjcsMzE3MTYsMzI0MTEsMzU3MTIsMjI2OTcsMjQ3NzUsMjU5NTgsMjYxMDksMjYzMDIsMjc3ODgsMjg5NTgsMjkxMjksMzU5MzAsMzg5MzEsMjAwNzcsMzEzNjEsMjAxODksMjA5MDgsMjA5NDEsMjEyMDUsMjE1MTYsMjQ5OTksMjY0ODEsMjY3MDQsMjY4NDcsMjc5MzQsMjg1''@;'; put 'put ''NDAsMzAxNDAsMzA2NDMsMzE0NjEsMzMwMTIsMzM4OTEsMzc1MDksMjA4MjgsMjYwMDcsMjY0NjAsMjY1MTUsMzAxNjgsMzE0MzEsMzM2NTEsNjM4MzQsMzU5MTAsMzY4ODcsMzg5NTcsMjM2NjMsMzMyMTYsMzM0MzQsMzY5MjksMzY5NzUsMzczODksMjQ0NzEsMjM5NjUsMjcyMjUsMjkxMjgs''@;'; put 'put ''MzAzMzEsMzE1NjEsMzQyNzYsMzU1ODgsMzcxNTksMzk0NzIsMjE4OTUsMjUwNzgsNjM4MzUsMzAzMTMsMzI2NDUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzQzNjcsMzQ3NDYsMzUwNjQsMzcwMDcsNjM4MzYsMjc5MzEsMjg4ODksMjk2NjIsMzIwOTcsMzM4NTMsNjM4MzcsMzcyMjYsMzk0MDksNjM4MzgsMjAwOTgsMjEzNjUsMjczOTYsMjc0MTAsMjg3MzQs''@;'; put 'put ''MjkyMTEsMzQzNDksNDA0NzgsMjEwNjgsMzY3NzEsMjM4ODgsMjU4MjksMjU5MDAsMjc0MTQsMjg2NTEsMzE4MTEsMzI0MTIsMzQyNTMsMzUxNzIsMzUyNjEsMjUyODksMzMyNDAsMzQ4NDcsMjQyNjYsMjYzOTEsMjgwMTAsMjk0MzYsMjk3MDEsMjk4MDcsMzQ2OTAsMzcwODYsMjAzNTgsMjM4''@;'; put 'put ''MjEsMjQ0ODAsMzM4MDIsMjA5MTksMjU1MDQsMzAwNTMsMjAxNDIsMjA0ODYsMjA4NDEsMjA5MzcsMjY3NTMsMjcxNTMsMzE5MTgsMzE5MjEsMzE5NzUsMzMzOTEsMzU1MzgsMzY2MzUsMzczMjcsMjA0MDYsMjA3OTEsMjEyMzcsMjE1NzAsMjQzMDAsMjQ5NDIsMjUxNTAsMjYwNTMsMjczNTQs''@;'; put 'put ''Mjg2NzAsMzEwMTgsMzQyNjgsMzQ4NTEsMzgzMTcsMzk1MjIsMzk1MzAsNDA1OTksNDA2NTQsMjExNDcsMjYzMTAsMjc1MTEsMjg3MDEsMzEwMTksMzY3MDYsMzg3MjIsMjQ5NzYsMjUwODgsMjU4OTEsMjg0NTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjkwMDEsMjk4MzMsMzIyNDQsMzI4NzksMzQwMzAsMzY2NDYsMzY4OTksMzc3MDYsMjA5MjUsMjEwMTUs''@;'; put 'put ''MjExNTUsMjc5MTYsMjg4NzIsMzUwMTAsMjQyNjUsMjU5ODYsMjc1NjYsMjg2MTAsMzE4MDYsMjk1NTcsMjAxOTYsMjAyNzgsMjIyNjUsNjM4MzksMjM3MzgsMjM5OTQsMjQ2MDQsMjk2MTgsMzE1MzMsMzI2NjYsMzI3MTgsMzI4MzgsMzY4OTQsMzc0MjgsMzg2NDYsMzg3MjgsMzg5MzYsNDA4''@;'; put 'put ''MDEsMjAzNjMsMjg1ODMsMzExNTAsMzczMDAsMzg1ODMsMjEyMTQsNjM4NDAsMjU3MzYsMjU3OTYsMjczNDcsMjg1MTAsMjg2OTYsMjkyMDAsMzA0MzksMzI3NjksMzQzMTAsMzQzOTYsMzYzMzUsMzY2MTMsMzg3MDYsMzk3OTEsNDA0NDIsNDA1NjUsMzA4NjAsMzExMDMsMzIxNjAsMzM3Mzcs''@;'; put 'put ''Mzc2MzYsNDA1NzUsNDA1OTUsMzU1NDIsMjI3NTEsMjQzMjQsMjY0MDcsMjg3MTEsMjk5MDMsMzE4NDAsMzI4OTQsMjA3NjksMjg3MTIsMjkyODIsMzA5MjIsMzYwMzQsMzYwNTgsMzYwODQsMzg2NDcsMjAxMDIsMjA2OTgsMjM1MzQsMjQyNzgsMjYwMDksMjkxMzQsMzAyNzQsMzA2MzcsMzI4''@;'; put 'put ''NDIsMzQwNDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzY5ODgs''@;'; put 'put ''Mzk3MTksNDA4NDUsMjI3NDQsMjMxMDUsMjM2NTAsMjcxNTUsMjgxMjIsMjg0MzEsMzAyNjcsMzIwNDcsMzIzMTEsMzQwNzgsMzUxMjgsMzc4NjAsMzg0NzUsMjExMjksMjYwNjYsMjY2MTEsMjcwNjAsMjc5NjksMjgzMTYsMjg2ODcsMjk3MDUsMjk3OTIsMzAwNDEsMzAyNDQsMzA4MjcsMzU2''@;'; put 'put ''MjgsMzkwMDYsMjA4NDUsMjUxMzQsMzg1MjAsMjAzNzQsMjA1MjMsMjM4MzMsMjgxMzgsMzIxODQsMzY2NTAsMjQ0NTksMjQ5MDAsMjY2NDcsNjM4NDEsMzg1MzQsMjEyMDIsMzI5MDcsMjA5NTYsMjA5NDAsMjY5NzQsMzEyNjAsMzIxOTAsMzM3NzcsMzg1MTcsMjA0NDIsMjEwMzMsMjE0MDAs''@;'; put 'put ''MjE1MTksMjE3NzQsMjM2NTMsMjQ3NDMsMjY0NDYsMjY3OTIsMjgwMTIsMjkzMTMsMjk0MzIsMjk3MDIsMjk4MjcsNjM4NDIsMzAxNzgsMzE4NTIsMzI2MzMsMzI2OTYsMzM2NzMsMzUwMjMsMzUwNDEsMzczMjQsMzczMjgsMzg2MjYsMzk4ODEsMjE1MzMsMjg1NDIsMjkxMzYsMjk4NDgsMzQy''@;'; put 'put ''OTgsMzY1MjIsMzg1NjMsNDAwMjMsNDA2MDcsMjY1MTksMjgxMDcsMjk3NDcsMzMyNTYsMzg2NzgsMzA3NjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzE0MzUsMzE1MjAsMzE4OTAsMjU3MDUsMjk4MDIsMzAxOTQsMzA5MDgsMzA5NTIsMzkzNDAsMzk3NjQsNDA2MzUsMjM1MTgsMjQxNDksMjg0NDgsMzMxODAsMzM3MDcsMzdlMywxOTk3NSwyMTMyNSwyMzA4''@;'; put 'put ''MSwyNDAxOCwyNDM5OCwyNDkzMCwyNTQwNSwyNjIxNywyNjM2NCwyODQxNSwyODQ1OSwyODc3MSwzMDYyMiwzMzgzNiwzNDA2NywzNDg3NSwzNjYyNywzOTIzNywzOTk5NSwyMTc4OCwyNTI3MywyNjQxMSwyNzgxOSwzMzU0NSwzNTE3OCwzODc3OCwyMDEyOSwyMjkxNiwyNDUzNiwyNDUzNywy''@;'; put 'put ''NjM5NSwzMjE3OCwzMjU5NiwzMzQyNiwzMzU3OSwzMzcyNSwzNjYzOCwzNzAxNywyMjQ3NSwyMjk2OSwyMzE4NiwyMzUwNCwyNjE1MSwyNjUyMiwyNjc1NywyNzU5OSwyOTAyOCwzMjYyOSwzNjAyMywzNjA2NywzNjk5MywzOTc0OSwzMzAzMiwzNTk3OCwzODQ3NiwzOTQ4OCw0MDYxMywyMzM5''@;'; put 'put ''MSwyNzY2NywyOTQ2NywzMDQ1MCwzMDQzMSwzMzgwNCwyMDkwNiwzNTIxOSwyMDgxMywyMDg4NSwyMTE5MywyNjgyNSwyNzc5NiwzMDQ2OCwzMDQ5NiwzMjE5MSwzMjIzNiwzODc1NCw0MDYyOSwyODM1NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNDA2NSwyMDkwMSwyMTUxNywyMTYyOSwyNjEyNiwyNjI2OSwyNjkxOSwyODMxOSwzMDM5OSwzMDYwOSwzMzU1''@;'; put 'put ''OSwzMzk4NiwzNDcxOSwzNzIyNSwzNzUyOCw0MDE4MCwzNDk0NiwyMDM5OCwyMDg4MiwyMTIxNSwyMjk4MiwyNDEyNSwyNDkxNywyNTcyMCwyNTcyMSwyNjI4NiwyNjU3NiwyNzE2OSwyNzU5NywyNzYxMSwyOTI3OSwyOTI4MSwyOTc2MSwzMDUyMCwzMDY4MywzMjc5MSwzMzQ2OCwzMzU0MSwz''@;'; put 'put ''NTU4NCwzNTYyNCwzNTk4MCwyNjQwOCwyNzc5MiwyOTI4NywzMDQ0NiwzMDU2NiwzMTMwMiw0MDM2MSwyNzUxOSwyNzc5NCwyMjgxOCwyNjQwNiwzMzk0NSwyMTM1OSwyMjY3NSwyMjkzNywyNDI4NywyNTU1MSwyNjE2NCwyNjQ4MywyODIxOCwyOTQ4MywzMTQ0NywzMzQ5NSwzNzY3MiwyMTIw''@;'; put 'put ''OSwyNDA0MywyNTAwNiwyNTAzNSwyNTA5OCwyNTI4NywyNTc3MSwyNjA4MCwyNjk2OSwyNzQ5NCwyNzU5NSwyODk2MSwyOTY4NywzMDA0NSwzMjMyNiwzMzMxMCwzMzUzOCwzNDE1NCwzNTQ5MSwzNjAzMSwzODY5NSw0MDI4OSwyMjY5Niw0MDY2NCwyMDQ5NywyMTAwNiwyMTU2MywyMTgzOSwy''@;'; put 'put ''NTk5MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNzc2NiwzMjAx''@;'; put 'put ''MCwzMjAxMSwzMjg2MiwzNDQ0MiwzODI3MiwzODYzOSwyMTI0NywyNzc5NywyOTI4OSwyMTYxOSwyMzE5NCwyMzYxNCwyMzg4MywyNDM5NiwyNDQ5NCwyNjQxMCwyNjgwNiwyNjk3OSwyODIyMCwyODIyOCwzMDQ3MywzMTg1OSwzMjY1NCwzNDE4MywzNTU5OCwzNjg1NSwzODc1Myw0MDY5Miwy''@;'; put 'put ''MzczNSwyNDc1OCwyNDg0NSwyNTAwMywyNTkzNSwyNjEwNywyNjEwOCwyNzY2NSwyNzg4NywyOTU5OSwyOTY0MSwzMjIyNSwzODI5MiwyMzQ5NCwzNDU4OCwzNTYwMCwyMTA4NSwyMTMzOCwyNTI5MywyNTYxNSwyNTc3OCwyNjQyMCwyNzE5MiwyNzg1MCwyOTYzMiwyOTg1NCwzMTYzNiwzMTg5''@;'; put 'put ''MywzMjI4MywzMzE2MiwzMzMzNCwzNDE4MCwzNjg0MywzODY0OSwzOTM2MSwyMDI3NiwyMTMyMiwyMTQ1MywyMTQ2NywyNTI5MiwyNTY0NCwyNTg1NiwyNjAwMSwyNzA3NSwyNzg4NiwyODUwNCwyOTY3NywzMDAzNiwzMDI0MiwzMDQzNiwzMDQ2MCwzMDkyOCwzMDk3MSwzMTAyMCwzMjA3MCwz''@;'; put 'put ''MzMyNCwzNDc4NCwzNjgyMCwzODkzMCwzOTE1MSwyMTE4NywyNTMwMCwyNTc2NSwyODE5NiwyODQ5NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMDMzMiwzNjI5OSwzNzI5NywzNzQ3NCwzOTY2MiwzOTc0NywyMDUxNSwyMDYyMSwyMjM0NiwyMjk1MiwyMzU5MiwyNDEzNSwyNDQzOSwyNTE1MSwyNTkxOCwyNjA0MSwyNjA0OSwyNjEyMSwyNjUwNywyNzAzNiwy''@;'; put 'put ''ODM1NCwzMDkxNywzMjAzMywzMjkzOCwzMzE1MiwzMzMyMywzMzQ1OSwzMzk1MywzNDQ0NCwzNTM3MCwzNTYwNywzNzAzMCwzODQ1MCw0MDg0OCwyMDQ5MywyMDQ2Nyw2Mzg0MywyMjUyMSwyNDQ3MiwyNTMwOCwyNTQ5MCwyNjQ3OSwyODIyNywyODk1MywzMDQwMywzMjk3MiwzMjk4NiwzNTA2''@;'; put 'put ''MCwzNTA2MSwzNTA5NywzNjA2NCwzNjY0OSwzNzE5NywzODUwNiwyMDI3MSwyMDMzNiwyNDA5MSwyNjU3NSwyNjY1OCwzMDMzMywzMDMzNCwzOTc0OCwyNDE2MSwyNzE0NiwyOTAzMywyOTE0MCwzMDA1OCw2Mzg0NCwzMjMyMSwzNDExNSwzNDI4MSwzOTEzMiwyMDI0MCwzMTU2NywzMjYyNCwz''@;'; put 'put ''ODMwOSwyMDk2MSwyNDA3MCwyNjgwNSwyNzcxMCwyNzcyNiwyNzg2NywyOTM1OSwzMTY4NCwzMzUzOSwyNzg2MSwyOTc1NCwyMDczMSwyMTEyOCwyMjcyMSwyNTgxNiwyNzI4NywyOTg2MywzMDI5NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMDg4NywzNDMyNywzODM3MCwzODcxMyw2Mzg0NSwyMTM0MiwyNDMyMSwzNTcyMiwzNjc3NiwzNjc4MywzNzAwMiwy''@;'; put 'put ''MTAyOSwzMDYyOSw0MDAwOSw0MDcxMiwxOTk5MywyMDQ4MiwyMDg1MywyMzY0MywyNDE4MywyNjE0MiwyNjE3MCwyNjU2NCwyNjgyMSwyODg1MSwyOTk1MywzMDE0OSwzMTE3NywzMTQ1MywzNjY0NywzOTIwMCwzOTQzMiwyMDQ0NSwyMjU2MSwyMjU3NywyMzU0MiwyNjIyMiwyNzQ5MywyNzky''@;'; put 'put ''MSwyODI4MiwyODU0MSwyOTY2OCwyOTk5NSwzMzc2OSwzNTAzNiwzNTA5MSwzNTY3NiwzNjYyOCwyMDIzOSwyMDY5MywyMTI2NCwyMTM0MCwyMzQ0MywyNDQ4OSwyNjM4MSwzMTExOSwzMzE0NSwzMzU4MywzNDA2OCwzNTA3OSwzNTIwNiwzNjY2NSwzNjY2NywzOTMzMywzOTk1NCwyNjQxMiwy''@;'; put 'put ''MDA4NiwyMDQ3MiwyMjg1NywyMzU1MywyMzc5MSwyMzc5MiwyNTQ0NywyNjgzNCwyODkyNSwyOTA5MCwyOTczOSwzMjI5OSwzNDAyOCwzNDU2MiwzNjg5OCwzNzU4Niw0MDE3OSwxOTk4MSwyMDE4NCwyMDQ2MywyMDYxMywyMTA3OCwyMTEwMywyMTU0MiwyMTY0OCwyMjQ5NiwyMjgyNywyMzE0''@;'; put 'put ''MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMzM4NiwyMzQxMywy''@;'; put 'put ''MzUwMCwyNDIyMCw2Mzg0NiwyNTIwNiwyNTk3NSwyNjAyMywyODAxNCwyODMyNSwyOTIzOCwzMTUyNiwzMTgwNywzMjU2NiwzMzEwNCwzMzEwNSwzMzE3OCwzMzM0NCwzMzQzMywzMzcwNSwzNTMzMSwzNmUzLDM2MDcwLDM2MDkxLDM2MjEyLDM2MjgyLDM3MDk2LDM3MzQwLDM4NDI4LDM4NDY4''@;'; put 'put ''LDM5Mzg1LDQwMTY3LDIxMjcxLDIwOTk4LDIxNTQ1LDIyMTMyLDIyNzA3LDIyODY4LDIyODk0LDI0NTc1LDI0OTk2LDI1MTk4LDI2MTI4LDI3Nzc0LDI4OTU0LDMwNDA2LDMxODgxLDMxOTY2LDMyMDI3LDMzNDUyLDM2MDMzLDM4NjQwLDYzODQ3LDIwMzE1LDI0MzQzLDI0NDQ3LDI1MjgyLDIz''@;'; put 'put ''ODQ5LDI2Mzc5LDI2ODQyLDMwODQ0LDMyMzIzLDQwMzAwLDE5OTg5LDIwNjMzLDIxMjY5LDIxMjkwLDIxMzI5LDIyOTE1LDIzMTM4LDI0MTk5LDI0NzU0LDI0OTcwLDI1MTYxLDI1MjA5LDI2ZTMsMjY1MDMsMjcwNDcsMjc2MDQsMjc2MDYsMjc2MDcsMjc2MDgsMjc4MzIsNjM4NDgsMjk3NDks''@;'; put 'put ''MzAyMDIsMzA3MzgsMzA4NjUsMzExODksMzExOTIsMzE4NzUsMzIyMDMsMzI3MzcsMzI5MzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzMwODYsMzMyMTgsMzM3NzgsMzQ1ODYsMzUwNDgsMzU1MTMsMzU2OTIsMzYwMjcsMzcxNDUsMzg3NTAsMzkxMzEsNDA3NjMsMjIxODgsMjMzMzgsMjQ0MjgsMjU5OTYsMjczMTUsMjc1NjcsMjc5OTYsMjg2NTcsMjg2OTMs''@;'; put 'put ''MjkyNzcsMjk2MTMsMzYwMDcsMzYwNTEsMzg5NzEsMjQ5NzcsMjc3MDMsMzI4NTYsMzk0MjUsMjAwNDUsMjAxMDcsMjAxMjMsMjAxODEsMjAyODIsMjAyODQsMjAzNTEsMjA0NDcsMjA3MzUsMjE0OTAsMjE0OTYsMjE3NjYsMjE5ODcsMjIyMzUsMjI3NjMsMjI4ODIsMjMwNTcsMjM1MzEsMjM1''@;'; put 'put ''NDYsMjM1NTYsMjQwNTEsMjQxMDcsMjQ0NzMsMjQ2MDUsMjU0NDgsMjYwMTIsMjYwMzEsMjY2MTQsMjY2MTksMjY3OTcsMjc1MTUsMjc4MDEsMjc4NjMsMjgxOTUsMjg2ODEsMjk1MDksMzA3MjIsMzEwMzgsMzEwNDAsMzEwNzIsMzExNjksMzE3MjEsMzIwMjMsMzIxMTQsMzI5MDIsMzMyOTMs''@;'; put 'put ''MzM2NzgsMzQwMDEsMzQ1MDMsMzUwMzksMzU0MDgsMzU0MjIsMzU2MTMsMzYwNjAsMzYxOTgsMzY3ODEsMzcwMzQsMzkxNjQsMzkzOTEsNDA2MDUsMjEwNjYsNjM4NDksMjYzODgsNjM4NTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjA2MzIsMjEwMzQsMjM2NjUsMjU5NTUsMjc3MzMsMjk2NDIsMjk5ODcsMzAxMDksMzE2MzksMzM5NDgsMzcyNDAsMzg3MDQs''@;'; put 'put ''MjAwODcsMjU3NDYsMjc1NzgsMjkwMjIsMzQyMTcsMTk5NzcsNjM4NTEsMjY0NDEsMjY4NjIsMjgxODMsMzM0MzksMzQwNzIsMzQ5MjMsMjU1OTEsMjg1NDUsMzczOTQsMzkwODcsMTk5NzgsMjA2NjMsMjA2ODcsMjA3NjcsMjE4MzAsMjE5MzAsMjIwMzksMjMzNjAsMjM1NzcsMjM3NzYsMjQx''@;'; put 'put ''MjAsMjQyMDIsMjQyMjQsMjQyNTgsMjQ4MTksMjY3MDUsMjcyMzMsMjgyNDgsMjkyNDUsMjkyNDgsMjkzNzYsMzA0NTYsMzEwNzcsMzE2NjUsMzI3MjQsMzUwNTksMzUzMTYsMzU0NDMsMzU5MzcsMzYwNjIsMzg2ODQsMjI2MjIsMjk4ODUsMzYwOTMsMjE5NTksNjM4NTIsMzEzMjksMzIwMzQs''@;'; put 'put ''MzMzOTQsMjkyOTgsMjk5ODMsMjk5ODksNjM4NTMsMzE1MTMsMjI2NjEsMjI3NzksMjM5OTYsMjQyMDcsMjQyNDYsMjQ0NjQsMjQ2NjEsMjUyMzQsMjU0NzEsMjU5MzMsMjYyNTcsMjYzMjksMjYzNjAsMjY2NDYsMjY4NjYsMjkzMTIsMjk3OTAsMzE1OTgsMzIxMTAsMzIyMTQsMzI2MjYsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzI5OTcsMzMyOTgsMzQyMjMs''@;'; put 'put ''MzUxOTksMzU0NzUsMzY4OTMsMzc2MDQsNDA2NTMsNDA3MzYsMjI4MDUsMjI4OTMsMjQxMDksMjQ3OTYsMjYxMzIsMjYyMjcsMjY1MTIsMjc3MjgsMjgxMDEsMjg1MTEsMzA3MDcsMzA4ODksMzM5OTAsMzczMjMsMzc2NzUsMjAxODUsMjA2ODIsMjA4MDgsMjE4OTIsMjMzMDcsMjM0NTksMjUx''@;'; put 'put ''NTksMjU5ODIsMjYwNTksMjgyMTAsMjkwNTMsMjk2OTcsMjk3NjQsMjk4MzEsMjk4ODcsMzAzMTYsMzExNDYsMzIyMTgsMzIzNDEsMzI2ODAsMzMxNDYsMzMyMDMsMzMzMzcsMzQzMzAsMzQ3OTYsMzU0NDUsMzYzMjMsMzY5ODQsMzc1MjEsMzc5MjUsMzkyNDUsMzk4NTQsMjEzNTIsMjM2MzMs''@;'; put 'put ''MjY5NjQsMjc4NDQsMjc5NDUsMjgyMDMsMzMyOTIsMzQyMDMsMzUxMzEsMzUzNzMsMzU0OTgsMzg2MzQsNDA4MDcsMjEwODksMjYyOTcsMjc1NzAsMzI0MDYsMzQ4MTQsMzYxMDksMzgyNzUsMzg0OTMsMjU4ODUsMjgwNDEsMjkxNjYsNjM4NTQsMjI0NzgsMjI5OTUsMjM0NjgsMjQ2MTUsMjQ4''@;'; put 'put ''MjYsMjUxMDQsMjYxNDMsMjYyMDcsMjk0ODEsMjk2ODksMzA0MjcsMzA0NjUsMzE1OTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzI4NTQsMzI4ODIsMzMxMjUsMzU0ODgsMzcyNjYsMTk5OTAsMjEyMTgsMjc1MDYsMjc5MjcsMzEyMzcsMzE1NDUsMzIwNDgsNjM4NTUsMzYwMTYsMjE0ODQsMjIwNjMsMjI2MDksMjM0NzcsMjM1NjcsMjM1NjksMjQwMzQsMjUx''@;'; put 'put ''NTIsMjU0NzUsMjU2MjAsMjYxNTcsMjY4MDMsMjc4MzYsMjgwNDAsMjgzMzUsMjg3MDMsMjg4MzYsMjkxMzgsMjk5OTAsMzAwOTUsMzAwOTQsMzAyMzMsMzE1MDUsMzE3MTIsMzE3ODcsMzIwMzIsMzIwNTcsMzQwOTIsMzQxNTcsMzQzMTEsMzUzODAsMzY4NzcsMzY5NjEsMzcwNDUsMzc1NTks''@;'; put 'put ''Mzg5MDIsMzk0NzksMjA0MzksMjM2NjAsMjY0NjMsMjgwNDksMzE5MDMsMzIzOTYsMzU2MDYsMzYxMTgsMzY4OTUsMjM0MDMsMjQwNjEsMjU2MTMsMzM5ODQsMzY5NTYsMzkxMzcsMjk1NzUsMjM0MzUsMjQ3MzAsMjY0OTQsMjgxMjYsMzUzNTksMzU0OTQsMzY4NjUsMzg5MjQsMjEwNDcsNjM4''@;'; put 'put ''NTYsMjg3NTMsMzA4NjIsMzc3ODIsMzQ5MjgsMzczMzUsMjA0NjIsMjE0NjMsMjIwMTMsMjIyMzQsMjI0MDIsMjI3ODEsMjMyMzQsMjM0MzIsMjM3MjMsMjM3NDQsMjQxMDEsMjQ4MzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjUxMDEsMjUxNjMsMjU0ODAsMjU2MjgsMjU5MTAsMjU5NzYsMjcxOTMsMjc1MzAsMjc3MDAsMjc5MjksMjg0NjUsMjkxNTksMjk0''@;'; put 'put ''MTcsMjk1NjAsMjk3MDMsMjk4NzQsMzAyNDYsMzA1NjEsMzExNjgsMzEzMTksMzE0NjYsMzE5MjksMzIxNDMsMzIxNzIsMzIzNTMsMzI2NzAsMzMwNjUsMzM1ODUsMzM5MzYsMzQwMTAsMzQyODIsMzQ5NjYsMzU1MDQsMzU3MjgsMzY2NjQsMzY5MzAsMzY5OTUsMzcyMjgsMzc1MjYsMzc1NjEs''@;'; put 'put ''Mzg1MzksMzg1NjcsMzg1NjgsMzg2MTQsMzg2NTYsMzg5MjAsMzkzMTgsMzk2MzUsMzk3MDYsMjE0NjAsMjI2NTQsMjI4MDksMjM0MDgsMjM0ODcsMjgxMTMsMjg1MDYsMjkwODcsMjk3MjksMjk4ODEsMzI5MDEsMzM3ODksMjQwMzMsMjQ0NTUsMjQ0OTAsMjQ2NDIsMjYwOTIsMjY2NDIsMjY5''@;'; put 'put ''OTEsMjcyMTksMjc1MjksMjc5NTcsMjgxNDcsMjk2NjcsMzA0NjIsMzA2MzYsMzE1NjUsMzIwMjAsMzMwNTksMzMzMDgsMzM2MDAsMzQwMzYsMzQxNDcsMzU0MjYsMzU1MjQsMzcyNTUsMzc2NjIsMzg5MTgsMzkzNDgsMjUxMDAsMzQ4OTksMzY4NDgsMzc0NzcsMjM4MTUsMjM4NDcsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjM5MTMsMjk3OTEsMzMxODEsMzQ2''@;'; put 'put ''NjQsMjg2MjksMjUzNDIsMzI3MjIsMzUxMjYsMzUxODYsMTk5OTgsMjAwNTYsMjA3MTEsMjEyMTMsMjEzMTksMjUyMTUsMjYxMTksMzIzNjEsMzQ4MjEsMzg0OTQsMjAzNjUsMjEyNzMsMjIwNzAsMjI5ODcsMjMyMDQsMjM2MDgsMjM2MzAsMjM2MjksMjQwNjYsMjQzMzcsMjQ2NDMsMjYwNDUs''@;'; put 'put ''MjYxNTksMjYxNzgsMjY1NTgsMjY2MTIsMjk0NjgsMzA2OTAsMzEwMzQsMzI3MDksMzM5NDAsMzM5OTcsMzUyMjIsMzU0MzAsMzU0MzMsMzU1NTMsMzU5MjUsMzU5NjIsMjI1MTYsMjM1MDgsMjQzMzUsMjQ2ODcsMjUzMjUsMjY4OTMsMjc1NDIsMjgyNTIsMjkwNjAsMzE2OTgsMzQ2NDUsMzU2''@;'; put 'put ''NzIsMzY2MDYsMzkxMzUsMzkxNjYsMjAyODAsMjAzNTMsMjA0NDksMjE2MjcsMjMwNzIsMjM0ODAsMjQ4OTIsMjYwMzIsMjYyMTYsMjkxODAsMzAwMDMsMzEwNzAsMzIwNTEsMzMxMDIsMzMyNTEsMzM2ODgsMzQyMTgsMzQyNTQsMzQ1NjMsMzUzMzgsMzY1MjMsMzY3NjMsNjM4NTcsMzY4MDUs''@;'; put 'put ''MjI4MzMsMjM0NjAsMjM1MjYsMjQ3MTMsMjM1MjksMjM1NjMsMjQ1MTUsMjc3NzcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjM4NTgsMjgxNDUsMjg2ODMsMjk5NzgsMzM0NTUsMzU1NzQsMjAxNjAsMjEzMTMsNjM4NTksMzg2MTcsMjc2NjMsMjAxMjYsMjA0MjAsMjA4MTgsMjE4NTQsMjMwNzcsMjM3ODQsMjUxMDUsMjkyNzMsMzM0NjksMzM3MDYsMzQ1NTgs''@;'; put 'put ''MzQ5MDUsMzUzNTcsMzg0NjMsMzg1OTcsMzkxODcsNDAyMDEsNDAyODUsMjI1MzgsMjM3MzEsMjM5OTcsMjQxMzIsMjQ4MDEsMjQ4NTMsMjU1NjksMjcxMzgsMjgxOTcsMzcxMjIsMzc3MTYsMzg5OTAsMzk5NTIsNDA4MjMsMjM0MzMsMjM3MzYsMjUzNTMsMjYxOTEsMjY2OTYsMzA1MjQsMzg1''@;'; put 'put ''OTMsMzg3OTcsMzg5OTYsMzk4MzksMjYwMTcsMzU1ODUsMzY1NTUsMzgzMzIsMjE4MTMsMjM3MjEsMjQwMjIsMjQyNDUsMjYyNjMsMzAyODQsMzM3ODAsMzgzNDMsMjI3MzksMjUyNzYsMjkzOTAsNDAyMzIsMjAyMDgsMjI4MzAsMjQ1OTEsMjYxNzEsMjc1MjMsMzEyMDcsNDAyMzAsMjEzOTUs''@;'; put 'put ''MjE2OTYsMjI0NjcsMjM4MzAsMjQ4NTksMjYzMjYsMjgwNzksMzA4NjEsMzM0MDYsMzg1NTIsMzg3MjQsMjEzODAsMjUyMTIsMjU0OTQsMjgwODIsMzIyNjYsMzMwOTksMzg5ODksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjczODcsMzI1ODgsNDAzNjcsNDA0NzQsMjAwNjMsMjA1MzksMjA5MTgsMjI4MTIsMjQ4MjUsMjU1OTAsMjY5MjgsMjkyNDIsMzI4MjIs''@;'; put 'put ''NjM4NjAsMzczMjYsMjQzNjksNjM4NjEsNjM4NjIsMzIwMDQsMzM1MDksMzM5MDMsMzM5NzksMzQyNzcsMzY0OTMsNjM4NjMsMjAzMzUsNjM4NjQsNjM4NjUsMjI3NTYsMjMzNjMsMjQ2NjUsMjU1NjIsMjU4ODAsMjU5NjUsMjYyNjQsNjM4NjYsMjY5NTQsMjcxNzEsMjc5MTUsMjg2NzMsMjkw''@;'; put 'put ''MzYsMzAxNjIsMzAyMjEsMzExNTUsMzEzNDQsNjM4NjcsMzI2NTAsNjM4NjgsMzUxNDAsNjM4NjksMzU3MzEsMzczMTIsMzg1MjUsNjM4NzAsMzkxNzgsMjIyNzYsMjQ0ODEsMjYwNDQsMjg0MTcsMzAyMDgsMzExNDIsMzU0ODYsMzkzNDEsMzk3NzAsNDA4MTIsMjA3NDAsMjUwMTQsMjUyMzMs''@;'; put 'put ''MjcyNzcsMzMyMjIsMjA1NDcsMjI1NzYsMjQ0MjIsMjg5MzcsMzUzMjgsMzU1NzgsMjM0MjAsMzQzMjYsMjA0NzQsMjA3OTYsMjIxOTYsMjI4NTIsMjU1MTMsMjgxNTMsMjM5NzgsMjY5ODksMjA4NzAsMjAxMDQsMjAzMTMsNjM4NzEsNjM4NzIsNjM4NzMsMjI5MTQsNjM4NzQsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjM4NzUsMjc0ODcsMjc3NDEsNjM4NzYs''@;'; put 'put ''Mjk4NzcsMzA5OTgsNjM4NzcsMzMyODcsMzMzNDksMzM1OTMsMzY2NzEsMzY3MDEsNjM4NzgsMzkxOTIsNjM4NzksNjM4ODAsNjM4ODEsMjAxMzQsNjM4ODIsMjI0OTUsMjQ0NDEsMjYxMzEsNjM4ODMsNjM4ODQsMzAxMjMsMzIzNzcsMzU2OTUsNjM4ODUsMzY4NzAsMzk1MTUsMjIxODEsMjI1''@;'; put 'put ''NjcsMjMwMzIsMjMwNzEsMjM0NzYsNjM4ODYsMjQzMTAsNjM4ODcsNjM4ODgsMjU0MjQsMjU0MDMsNjM4ODksMjY5NDEsMjc3ODMsMjc4MzksMjgwNDYsMjgwNTEsMjgxNDksMjg0MzYsNjM4OTAsMjg4OTUsMjg5ODIsMjkwMTcsNjM4OTEsMjkxMjMsMjkxNDEsNjM4OTIsMzA3OTksMzA4MzEs''@;'; put 'put ''NjM4OTMsMzE2MDUsMzIyMjcsNjM4OTQsMzIzMDMsNjM4OTUsMzQ4OTMsMzY1NzUsNjM4OTYsNjM4OTcsNjM4OTgsMzc0NjcsNjM4OTksNDAxODIsNjM5MDAsNjM5MDEsNjM5MDIsMjQ3MDksMjgwMzcsNjM5MDMsMjkxMDUsNjM5MDQsNjM5MDUsMzgzMjEsMjE0MjEsNjM5MDYsNjM5MDcsNjM5''@;'; put 'put ''MDgsMjY1NzksNjM5MDksMjg4MTQsMjg5NzYsMjk3NDQsMzMzOTgsMzM0OTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjM5MTAsMzgzMzEsMzk2NTMsNDA1NzMsMjYzMDgsNjM5MTEsMjkxMjEsMzM4NjUsNjM5MTIsNjM5MTMsMjI2MDMsNjM5MTQsNjM5MTUsMjM5OTIsMjQ0MzMsNjM5MTYsMjYxNDQsMjYyNTQsMjcwMDEsMjcwNTQsMjc3MDQsMjc4OTEsMjgy''@;'; put 'put ''MTQsMjg0ODEsMjg2MzQsMjg2OTksMjg3MTksMjkwMDgsMjkxNTEsMjk1NTIsNjM5MTcsMjk3ODcsNjM5MTgsMjk5MDgsMzA0MDgsMzEzMTAsMzI0MDMsNjM5MTksNjM5MjAsMzM1MjEsMzU0MjQsMzY4MTQsNjM5MjEsMzc3MDQsNjM5MjIsMzg2ODEsNjM5MjMsNjM5MjQsMjAwMzQsMjA1MjIs''@;'; put 'put ''NjM5MjUsMjFlMywyMTQ3MywyNjM1NSwyNzc1NywyODYxOCwyOTQ1MCwzMDU5MSwzMTMzMCwzMzQ1NCwzNDI2OSwzNDMwNiw2MzkyNiwzNTAyOCwzNTQyNywzNTcwOSwzNTk0Nyw2MzkyNywzNzU1NSw2MzkyOCwzODY3NSwzODkyOCwyMDExNiwyMDIzNywyMDQyNSwyMDY1OCwyMTMyMCwyMTU2''@;'; put 'put ''NiwyMTU1NSwyMTk3OCwyMjYyNiwyMjcxNCwyMjg4NywyMzA2NywyMzUyNCwyNDczNSw2MzkyOSwyNTAzNCwyNTk0MiwyNjExMSwyNjIxMiwyNjc5MSwyNzczOCwyODU5NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyODg3OSwyOTEwMCwyOTUyMiwzMTYxMywzNDU2OCwzNTQ5MiwzOTk4Niw0MDcxMSwyMzYyNywyNzc3OSwyOTUwOCwyOTU3NywzNzQzNCwyODMz''@;'; put 'put ''MSwyOTc5NywzMDIzOSwzMTMzNywzMjI3NywzNDMxNCwyMDgwMCwyMjcyNSwyNTc5MywyOTkzNCwyOTk3MywzMDMyMCwzMjcwNSwzNzAxMywzODYwNSwzOTI1MiwyODE5OCwyOTkyNiwzMTQwMSwzMTQwMiwzMzI1MywzNDUyMSwzNDY4MCwzNTM1NSwyMzExMywyMzQzNiwyMzQ1MSwyNjc4NSwy''@;'; put 'put ''Njg4MCwyODAwMywyOTYwOSwyOTcxNSwyOTc0MCwzMDg3MSwzMjIzMywzMjc0NywzMzA0OCwzMzEwOSwzMzY5NCwzNTkxNiwzODQ0NiwzODkyOSwyNjM1MiwyNDQ0OCwyNjEwNiwyNjUwNSwyNzc1NCwyOTU3OSwyMDUyNSwyMzA0MywyNzQ5OCwzMDcwMiwyMjgwNiwyMzkxNiwyNDAxMywyOTQ3''@;'; put 'put ''NywzMDAzMSw2MzkzMCw2MzkzMSwyMDcwOSwyMDk4NSwyMjU3NSwyMjgyOSwyMjkzNCwyMzAwMiwyMzUyNSw2MzkzMiw2MzkzMywyMzk3MCwyNTMwMywyNTYyMiwyNTc0NywyNTg1NCw2MzkzNCwyNjMzMiw2MzkzNSwyNzIwOCw2MzkzNiwyOTE4MywyOTc5Niw2MzkzNyxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMTM2OCwzMTQwNywzMjMyNywzMjM1MCwzMjc2''@;'; put 'put ''OCwzMzEzNiw2MzkzOCwzNDc5OSwzNTIwMSwzNTYxNiwzNjk1Myw2MzkzOSwzNjk5MiwzOTI1MCwyNDk1OCwyNzQ0MiwyODAyMCwzMjI4NywzNTEwOSwzNjc4NSwyMDQzMywyMDY1MywyMDg4NywyMTE5MSwyMjQ3MSwyMjY2NSwyMzQ4MSwyNDI0OCwyNDg5OCwyNzAyOSwyODA0NCwyODI2Mywy''@;'; put 'put ''ODM0MiwyOTA3NiwyOTc5NCwyOTk5MiwyOTk5NiwzMjg4MywzMzU5MiwzMzk5MywzNjM2MiwzNzc4MCwzNzg1NCw2Mzk0MCwyMDExMCwyMDMwNSwyMDU5OCwyMDc3OCwyMTQ0OCwyMTQ1MSwyMTQ5MSwyMzQzMSwyMzUwNywyMzU4OCwyNDg1OCwyNDk2MiwyNjEwMCwyOTI3NSwyOTU5MSwyOTc2''@;'; put 'put ''MCwzMDQwMiwzMTA1NiwzMTEyMSwzMTE2MSwzMjAwNiwzMjcwMSwzMzQxOSwzNDI2MSwzNDM5OCwzNjgwMiwzNjkzNSwzNzEwOSwzNzM1NCwzODUzMywzODYzMiwzODYzMywyMTIwNiwyNDQyMywyNjA5MywyNjE2MSwyNjY3MSwyOTAyMCwzMTI4NiwzNzA1NywzODkyMiwyMDExMyw2Mzk0MSwy''@;'; put 'put ''NzIxOCwyNzU1MCwyODU2MCwyOTA2NSwzMjc5MiwzMzQ2NCwzNDEzMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNjkzOSwzODU0OSwzODY0MiwzODkwNywzNDA3NCwzOTcyOSwyMDExMiwyOTA2NiwzODU5NiwyMDgwMywyMTQwNywyMTcyOSwyMjI5MSwyMjI5MCwyMjQzNSwyMzE5NSwyMzIzNiwyMzQ5MSwyNDYxNiwyNDg5NSwyNTU4OCwyNzc4MSwyNzk2MSwy''@;'; put 'put ''ODI3NCwyODMwNCwyOTIzMiwyOTUwMywyOTc4MywzMzQ4OSwzNDk0NSwzNjY3NywzNjk2MCw2Mzk0MiwzODQ5OCwzOWUzLDQwMjE5LDI2Mzc2LDM2MjM0LDM3NDcwLDIwMzAxLDIwNTUzLDIwNzAyLDIxMzYxLDIyMjg1LDIyOTk2LDIzMDQxLDIzNTYxLDI0OTQ0LDI2MjU2LDI4MjA1LDI5MjM0''@;'; put 'put ''LDI5NzcxLDMyMjM5LDMyOTYzLDMzODA2LDMzODk0LDM0MTExLDM0NjU1LDM0OTA3LDM1MDk2LDM1NTg2LDM2OTQ5LDM4ODU5LDM5NzU5LDIwMDgzLDIwMzY5LDIwNzU0LDIwODQyLDYzOTQzLDIxODA3LDIxOTI5LDIzNDE4LDIzNDYxLDI0MTg4LDI0MTg5LDI0MjU0LDI0NzM2LDI0Nzk5LDI0''@;'; put 'put ''ODQwLDI0ODQxLDI1NTQwLDI1OTEyLDI2Mzc3LDYzOTQ0LDI2NTgwLDI2NTg2LDYzOTQ1LDI2OTc3LDI2OTc4LDI3ODMzLDI3OTQzLDYzOTQ2LDI4MjE2LDYzOTQ3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI4NjQxLDI5NDk0LDI5NDk1LDYzOTQ4LDI5Nzg4LDMwMDAxLDYzOTQ5LDMwMjkwLDYzOTUwLDYzOTUxLDMyMTczLDMzMjc4LDMzODQ4LDM1MDI5LDM1''@;'; put 'put ''NDgwLDM1NTQ3LDM1NTY1LDM2NDAwLDM2NDE4LDM2OTM4LDM2OTI2LDM2OTg2LDM3MTkzLDM3MzIxLDM3NzQyLDYzOTUyLDYzOTUzLDIyNTM3LDYzOTU0LDI3NjAzLDMyOTA1LDMyOTQ2LDYzOTU1LDYzOTU2LDIwODAxLDIyODkxLDIzNjA5LDYzOTU3LDYzOTU4LDI4NTE2LDI5NjA3LDMyOTk2''@;'; put 'put ''LDM2MTAzLDYzOTU5LDM3Mzk5LDM4Mjg3LDYzOTYwLDYzOTYxLDYzOTYyLDYzOTYzLDMyODk1LDI1MTAyLDI4NzAwLDMyMTA0LDM0NzAxLDYzOTY0LDIyNDMyLDI0NjgxLDI0OTAzLDI3NTc1LDM1NTE4LDM3NTA0LDM4NTc3LDIwMDU3LDIxNTM1LDI4MTM5LDM0MDkzLDM4NTEyLDM4ODk5LDM5''@;'; put 'put ''MTUwLDI1NTU4LDI3ODc1LDM3MDA5LDIwOTU3LDI1MDMzLDMzMjEwLDQwNDQxLDIwMzgxLDIwNTA2LDIwNzM2LDIzNDUyLDI0ODQ3LDI1MDg3LDI1ODM2LDI2ODg1LDI3NTg5LDMwMDk3LDMwNjkxLDMyNjgxLDMzMzgwLDM0MTkxLDM0ODExLDM0OTE1LDM1NTE2LG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM1Njk2LDM3MjkxLDIwMTA4LDIwMTk3LDIwMjM0LDYz''@;'; put 'put ''OTY1LDYzOTY2LDIyODM5LDIzMDE2LDYzOTY3LDI0MDUwLDI0MzQ3LDI0NDExLDI0NjA5LDYzOTY4LDYzOTY5LDYzOTcwLDYzOTcxLDI5MjQ2LDI5NjY5LDYzOTcyLDMwMDY0LDMwMTU3LDYzOTczLDMxMjI3LDYzOTc0LDMyNzgwLDMyODE5LDMyOTAwLDMzNTA1LDMzNjE3LDYzOTc1LDYzOTc2''@;'; put 'put ''LDM2MDI5LDM2MDE5LDM2OTk5LDYzOTc3LDYzOTc4LDM5MTU2LDM5MTgwLDYzOTc5LDYzOTgwLDI4NzI3LDMwNDEwLDMyNzE0LDMyNzE2LDMyNzY0LDM1NjEwLDIwMTU0LDIwMTYxLDIwOTk1LDIxMzYwLDYzOTgxLDIxNjkzLDIyMjQwLDIzMDM1LDIzNDkzLDI0MzQxLDI0NTI1LDI4MjcwLDYz''@;'; put 'put ''OTgyLDYzOTgzLDMyMTA2LDMzNTg5LDYzOTg0LDM0NDUxLDM1NDY5LDYzOTg1LDM4NzY1LDM4Nzc1LDYzOTg2LDYzOTg3LDE5OTY4LDIwMzE0LDIwMzUwLDIyNzc3LDI2MDg1LDI4MzIyLDM2OTIwLDM3ODA4LDM5MzUzLDIwMjE5LDIyNzY0LDIyOTIyLDIzMDAxLDI0NjQxLDYzOTg4LDYzOTg5''@;'; put 'put ''LDMxMjUyLDYzOTkwLDMzNjE1LDM2MDM1LDIwODM3LDIxMzE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLDYzOTkxLDYzOTkyLDYzOTkzLDIwMTczLDIxMDk3LDIzMzgxLDMzNDcxLDIwMTgwLDIxMDUwLDIxNjcyLDIyOTg1LDIzMDM5LDIzMzc2LDIzMzgzLDIzMzg4LDI0Njc1LDI0OTA0LDI4MzYzLDI4ODI1LDI5MDM4LDI5NTc0LDI5OTQzLDMwMTMzLDMwOTEz''@;'; put 'put ''LDMyMDQzLDMyNzczLDMzMjU4LDMzNTc2LDM0MDcxLDM0MjQ5LDM1NTY2LDM2MDM5LDM4NjA0LDIwMzE2LDIxMjQyLDIyMjA0LDI2MDI3LDI2MTUyLDI4Nzk2LDI4ODU2LDI5MjM3LDMyMTg5LDMzNDIxLDM3MTk2LDM4NTkyLDQwMzA2LDIzNDA5LDI2ODU1LDI3NTQ0LDI4NTM4LDMwNDMwLDIz''@;'; put 'put ''Njk3LDI2MjgzLDI4NTA3LDMxNjY4LDMxNzg2LDM0ODcwLDM4NjIwLDE5OTc2LDIwMTgzLDIxMjgwLDIyNTgwLDIyNzE1LDIyNzY3LDIyODkyLDIzNTU5LDI0MTE1LDI0MTk2LDI0MzczLDI1NDg0LDI2MjkwLDI2NDU0LDI3MTY3LDI3Mjk5LDI3NDA0LDI4NDc5LDI5MjU0LDYzOTk0LDI5NTIw''@;'; put 'put ''LDI5ODM1LDMxNDU2LDMxOTExLDMzMTQ0LDMzMjQ3LDMzMjU1LDMzNjc0LDMzOTAwLDM0MDgzLDM0MTk2LDM0MjU1LDM1MDM3LDM2MTE1LDM3MjkyLDM4MjYzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM4NTU2LDIwODc3LDIxNzA1LDIyMzEyLDIzNDcyLDI1MTY1LDI2NDQ4LDI2Njg1LDI2NzcxLDI4MjIxLDI4MzcxLDI4Nzk3LDMyMjg5LDM1MDA5LDM2MDAx''@;'; put 'put ''LDM2NjE3LDQwNzc5LDQwNzgyLDI5MjI5LDMxNjMxLDM1NTMzLDM3NjU4LDIwMjk1LDIwMzAyLDIwNzg2LDIxNjMyLDIyOTkyLDI0MjEzLDI1MjY5LDI2NDg1LDI2OTkwLDI3MTU5LDI3ODIyLDI4MTg2LDI5NDAxLDI5NDgyLDMwMTQxLDMxNjcyLDMyMDUzLDMzNTExLDMzNzg1LDMzODc5LDM0''@;'; put 'put ''Mjk1LDM1NDE5LDM2MDE1LDM2NDg3LDM2ODg5LDM3MDQ4LDM4NjA2LDQwNzk5LDIxMjE5LDIxNTE0LDIzMjY1LDIzNDkwLDI1Njg4LDI1OTczLDI4NDA0LDI5MzgwLDYzOTk1LDMwMzQwLDMxMzA5LDMxNTE1LDMxODIxLDMyMzE4LDMyNzM1LDMzNjU5LDM1NjI3LDM2MDQyLDM2MTk2LDM2MzIx''@;'; put 'put ''LDM2NDQ3LDM2ODQyLDM2ODU3LDM2OTY5LDM3ODQxLDIwMjkxLDIwMzQ2LDIwNjU5LDIwODQwLDIwODU2LDIxMDY5LDIxMDk4LDIyNjI1LDIyNjUyLDIyODgwLDIzNTYwLDIzNjM3LDI0MjgzLDI0NzMxLDI1MTM2LDI2NjQzLDI3NTgzLDI3NjU2LDI4NTkzLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI5MDA2LDI5NzI4LDNlNCwzMDAwOCwzMDAzMywzMDMyMiwz''@;'; put 'put ''MTU2NCwzMTYyNywzMTY2MSwzMTY4NiwzMjM5OSwzNTQzOCwzNjY3MCwzNjY4MSwzNzQzOSwzNzUyMywzNzY2NiwzNzkzMSwzODY1MSwzOTAwMiwzOTAxOSwzOTE5OCwyMDk5OSwyNTEzMCwyNTI0MCwyNzk5MywzMDMwOCwzMTQzNCwzMTY4MCwzMjExOCwyMTM0NCwyMzc0MiwyNDIxNSwyODQ3''@;'; put 'put ''MiwyODg1NywzMTg5NiwzODY3MywzOTgyMiw0MDY3MCwyNTUwOSwyNTcyMiwzNDY3OCwxOTk2OSwyMDExNywyMDE0MSwyMDU3MiwyMDU5NywyMTU3NiwyMjk3OSwyMzQ1MCwyNDEyOCwyNDIzNywyNDMxMSwyNDQ0OSwyNDc3MywyNTQwMiwyNTkxOSwyNTk3MiwyNjA2MCwyNjIzMCwyNjIzMiwy''@;'; put 'put ''NjYyMiwyNjk4NCwyNzI3MywyNzQ5MSwyNzcxMiwyODA5NiwyODEzNiwyODE5MSwyODI1NCwyODcwMiwyODgzMywyOTU4MiwyOTY5MywzMDAxMCwzMDU1NSwzMDg1NSwzMTExOCwzMTI0MywzMTM1NywzMTkzNCwzMjE0MiwzMzM1MSwzNTMzMCwzNTU2MiwzNTk5OCwzNzE2NSwzNzE5NCwzNzMz''@;'; put 'put ''NiwzNzQ3OCwzNzU4MCwzNzY2NCwzODY2MiwzODc0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCwzODc0OCwzODkxNCw0MDcxOCwyMTA0NiwyMTEzNywyMTg4NCwyMjU2NCwyNDA5MywyNDM1MSwyNDcxNiwyNTU1MiwyNjc5OSwyODYzOSwzMTA4NSwzMTUzMiwzMzIyOSwzNDIzNCwzNTA2OSwzNTU3NiwzNjQyMCwzNzI2MSwzODUwMCwzODU1NSwzODcxNywzODk4''@;'; put 'put ''OCw0MDc3OCwyMDQzMCwyMDgwNiwyMDkzOSwyMTE2MSwyMjA2NiwyNDM0MCwyNDQyNywyNTUxNCwyNTgwNSwyNjA4OSwyNjE3NywyNjM2MiwyNjM2MSwyNjM5NywyNjc4MSwyNjgzOSwyNzEzMywyODQzNywyODUyNiwyOTAzMSwyOTE1NywyOTIyNiwyOTg2NiwzMDUyMiwzMTA2MiwzMTA2Niwz''@;'; put 'put ''MTE5OSwzMTI2NCwzMTM4MSwzMTg5NSwzMTk2NywzMjA2OCwzMjM2OCwzMjkwMywzNDI5OSwzNDQ2OCwzNTQxMiwzNTUxOSwzNjI0OSwzNjQ4MSwzNjg5NiwzNjk3MywzNzM0NywzODQ1OSwzODYxMyw0MDE2NSwyNjA2MywzMTc1MSwzNjI3NSwzNzgyNywyMzM4NCwyMzU2MiwyMTMzMCwyNTMw''@;'; put 'put ''NSwyOTQ2OSwyMDUxOSwyMzQ0NywyNDQ3OCwyNDc1MiwyNDkzOSwyNjgzNywyODEyMSwyOTc0MiwzMTI3OCwzMjA2NiwzMjE1NiwzMjMwNSwzMzEzMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNjM5NCwzNjQwNSwzNzc1OCwzNzkxMiwyMDMwNCwyMjM1MiwyNDAzOCwyNDIzMSwyNTM4NywzMjYxOCwyMDAyNywyMDMwMywyMDM2NywyMDU3MCwyMzAwNSwzMjk2''@;'; put 'put ''NCwyMTYxMCwyMTYwOCwyMjAxNCwyMjg2MywyMzQ0OSwyNDAzMCwyNDI4MiwyNjIwNSwyNjQxNywyNjYwOSwyNjY2NiwyNzg4MCwyNzk1NCwyODIzNCwyODU1NywyODg1NSwyOTY2NCwzMDA4NywzMTgyMCwzMjAwMiwzMjA0NCwzMjE2MiwzMzMxMSwzNDUyMywzNTM4NywzNTQ2MSwzNjIwOCwz''@;'; put 'put ''NjQ5MCwzNjY1OSwzNjkxMywzNzE5OCwzNzIwMiwzNzk1NiwzOTM3NiwzMTQ4MSwzMTkwOSwyMDQyNiwyMDczNywyMDkzNCwyMjQ3MiwyMzUzNSwyMzgwMywyNjIwMSwyNzE5NywyNzk5NCwyODMxMCwyODY1MiwyODk0MCwzMDA2MywzMTQ1OSwzNDg1MCwzNjg5NywzNjk4MSwzODYwMywzOTQy''@;'; put 'put ''MywzMzUzNywyMDAxMywyMDIxMCwzNDg4NiwzNzMyNSwyMTM3MywyNzM1NSwyNjk4NywyNzcxMywzMzkxNCwyMjY4NiwyNDk3NCwyNjM2NiwyNTMyNywyODg5MywyOTk2OSwzMDE1MSwzMjMzOCwzMzk3NiwzNTY1NywzNjEwNCwyMDA0MywyMTQ4MixudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMTY3NSwyMjMyMCwyMjMzNiwyNDUzNSwyNTM0NSwyNTM1MSwyNTcx''@;'; put 'put ''MSwyNTkwMywyNjA4OCwyNjIzNCwyNjUyNSwyNjU0NywyNzQ5MCwyNzc0NCwyNzgwMiwyODQ2MCwzMDY5MywzMDc1NywzMTA0OSwzMTA2MywzMjAyNSwzMjkzMCwzMzAyNiwzMzI2NywzMzQzNywzMzQ2MywzNDU4NCwzNTQ2OCw2Mzk5NiwzNjEwMCwzNjI4NiwzNjk3OCwzMDQ1MiwzMTI1Nywz''@;'; put 'put ''MTI4NywzMjM0MCwzMjg4NywyMTc2NywyMTk3MiwyMjY0NSwyNTM5MSwyNTYzNCwyNjE4NSwyNjE4NywyNjczMywyNzAzNSwyNzUyNCwyNzk0MSwyODMzNywyOTY0NSwyOTgwMCwyOTg1NywzMDA0MywzMDEzNywzMDQzMywzMDQ5NCwzMDYwMywzMTIwNiwzMjI2NSwzMjI4NSwzMzI3NSwzNDA5''@;'; put 'put ''NSwzNDk2NywzNTM4NiwzNjA0OSwzNjU4NywzNjc4NCwzNjkxNCwzNzgwNSwzODQ5OSwzODUxNSwzODY2MywyMDM1NiwyMTQ4OSwyMzAxOCwyMzI0MSwyNDA4OSwyNjcwMiwyOTg5NCwzMDE0MiwzMTIwOSwzMTM3OCwzMzE4NywzNDU0MSwzNjA3NCwzNjMwMCwzNjg0NSwyNjAxNSwyNjM4OSw2''@;'; put 'put ''Mzk5NywyMjUxOSwyODUwMywzMjIyMSwzNjY1NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCwzNzg3OCwzODU5OCwyNDUwMSwyNTA3NCwyODU0OCwxOTk4OCwyMDM3NiwyMDUxMSwyMTQ0OSwyMTk4MywyMzkxOSwyNDA0NiwyNzQyNSwyNzQ5MiwzMDkyMywzMTY0Miw2Mzk5OCwzNjQyNSwzNjU1NCwzNjk3NCwyNTQxNywyNTY2MiwzMDUyOCwzMTM2NCwzNzY3OSwz''@;'; put 'put ''ODAxNSw0MDgxMCwyNTc3NiwyODU5MSwyOTE1OCwyOTg2NCwyOTkxNCwzMTQyOCwzMTc2MiwzMjM4NiwzMTkyMiwzMjQwOCwzNTczOCwzNjEwNiwzODAxMywzOTE4NCwzOTI0NCwyMTA0OSwyMzUxOSwyNTgzMCwyNjQxMywzMjA0NiwyMDcxNywyMTQ0MywyMjY0OSwyNDkyMCwyNDkyMSwyNTA4''@;'; put 'put ''MiwyNjAyOCwzMTQ0OSwzNTczMCwzNTczNCwyMDQ4OSwyMDUxMywyMTEwOSwyMTgwOSwyMzEwMCwyNDI4OCwyNDQzMiwyNDg4NCwyNTk1MCwyNjEyNCwyNjE2NiwyNjI3NCwyNzA4NSwyODM1NiwyODQ2NiwyOTQ2MiwzMDI0MSwzMTM3OSwzMzA4MSwzMzM2OSwzMzc1MCwzMzk4MCwyMDY2MSwy''@;'; put 'put ''MjUxMiwyMzQ4OCwyMzUyOCwyNDQyNSwyNTUwNSwzMDc1OCwzMjE4MSwzMzc1NiwzNDA4MSwzNzMxOSwzNzM2NSwyMDg3NCwyNjYxMywzMTU3NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNjAxMiwyMDkzMiwyMjk3MSwyNDc2NSwzNDM4OSwyMDUwOCw2Mzk5OSwyMTA3NiwyMzYxMCwyNDk1NywyNTExNCwyNTI5OSwyNTg0MiwyNjAyMSwyODM2NCwzMDI0MCwz''@;'; put 'put ''MzAzNCwzNjQ0OCwzODQ5NSwzODU4NywyMDE5MSwyMTMxNSwyMTkxMiwyMjgyNSwyNDAyOSwyNTc5NywyNzg0OSwyODE1NCwyOTU4OCwzMTM1OSwzMzMwNywzNDIxNCwzNjA2OCwzNjM2OCwzNjk4MywzNzM1MSwzODM2OSwzODQzMywzODg1NCwyMDk4NCwyMTc0NiwyMTg5NCwyNDUwNSwyNTc2''@;'; put 'put ''NCwyODU1MiwzMjE4MCwzNjYzOSwzNjY4NSwzNzk0MSwyMDY4MSwyMzU3NCwyNzgzOCwyODE1NSwyOTk3OSwzMDY1MSwzMTgwNSwzMTg0NCwzNTQ0OSwzNTUyMiwyMjU1OCwyMjk3NCwyNDA4NiwyNTQ2MywyOTI2NiwzMDA5MCwzMDU3MSwzNTU0OCwzNjAyOCwzNjYyNiwyNDMwNywyNjIyOCwy''@;'; put 'put ''ODE1MiwzMjg5MywzMzcyOSwzNTUzMSwzODczNywzOTg5NCw2NGUzLDIxMDU5LDI2MzY3LDI4MDUzLDI4Mzk5LDMyMjI0LDM1NTU4LDM2OTEwLDM2OTU4LDM5NjM2LDIxMDIxLDIxMTE5LDIxNzM2LDI0OTgwLDI1MjIwLDI1MzA3LDI2Nzg2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2ODk4LDI2OTcwLDI3MTg5LDI4ODE4LDI4OTY2LDMwODEzLDMwOTc3LDMw''@;'; put 'put ''OTkwLDMxMTg2LDMxMjQ1LDMyOTE4LDMzNDAwLDMzNDkzLDMzNjA5LDM0MTIxLDM1OTcwLDM2MjI5LDM3MjE4LDM3MjU5LDM3Mjk0LDIwNDE5LDIyMjI1LDI5MTY1LDMwNjc5LDM0NTYwLDM1MzIwLDIzNTQ0LDI0NTM0LDI2NDQ5LDM3MDMyLDIxNDc0LDIyNjE4LDIzNTQxLDI0NzQwLDI0OTYx''@;'; put 'put ''LDI1Njk2LDMyMzE3LDMyODgwLDM0MDg1LDM3NTA3LDI1Nzc0LDIwNjUyLDIzODI4LDI2MzY4LDIyNjg0LDI1Mjc3LDI1NTEyLDI2ODk0LDI3ZTMsMjcxNjYsMjgyNjcsMzAzOTQsMzExNzksMzM0NjcsMzM4MzMsMzU1MzUsMzYyNjQsMzY4NjEsMzcxMzgsMzcxOTUsMzcyNzYsMzc2NDgsMzc2''@;'; put 'put ''NTYsMzc3ODYsMzg2MTksMzk0NzgsMzk5NDksMTk5ODUsMzAwNDQsMzEwNjksMzE0ODIsMzE1NjksMzE2ODksMzIzMDIsMzM5ODgsMzY0NDEsMzY0NjgsMzY2MDAsMzY4ODAsMjYxNDksMjY5NDMsMjk3NjMsMjA5ODYsMjY0MTQsNDA2NjgsMjA4MDUsMjQ1NDQsMjc3OTgsMzQ4MDIsMzQ5MDks''@;'; put 'put ''MzQ5MzUsMjQ3NTYsMzMyMDUsMzM3OTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsMzYxMDEsMjE0NjIsMjE1NjEsMjIwNjgsMjMwOTQsMjM2MDEsMjg4MTAsMzI3MzYsMzI4NTgsMzMwMzAsMzMyNjEsMzYyNTksMzcyNTcsMzk1MTksNDA0MzQsMjA1OTYsMjAxNjQsMjE0MDgsMjQ4MjcsMjgyMDQsMjM2NTIsMjAzNjAsMjA1MTYsMjE5ODgsMjM3NjksMjQxNTks''@;'; put 'put ''MjQ2NzcsMjY3NzIsMjc4MzUsMjgxMDAsMjkxMTgsMzAxNjQsMzAxOTYsMzAzMDUsMzEyNTgsMzEzMDUsMzIxOTksMzIyNTEsMzI2MjIsMzMyNjgsMzQ0NzMsMzY2MzYsMzg2MDEsMzkzNDcsNDA3ODYsMjEwNjMsMjExODksMzkxNDksMzUyNDIsMTk5NzEsMjY1NzgsMjg0MjIsMjA0MDUsMjM1''@;'; put 'put ''MjIsMjY1MTcsMjc3ODQsMjgwMjQsMjk3MjMsMzA3NTksMzczNDEsMzc3NTYsMzQ3NTYsMzEyMDQsMzEyODEsMjQ1NTUsMjAxODIsMjE2NjgsMjE4MjIsMjI3MDIsMjI5NDksMjQ4MTYsMjUxNzEsMjUzMDIsMjY0MjIsMjY5NjUsMzMzMzMsMzg0NjQsMzkzNDUsMzkzODksMjA1MjQsMjEzMzEs''@;'; put 'put ''MjE4MjgsMjIzOTYsNjQwMDEsMjUxNzYsNjQwMDIsMjU4MjYsMjYyMTksMjY1ODksMjg2MDksMjg2NTUsMjk3MzAsMjk3NTIsMzUzNTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzc5NDQsMjE1ODUsMjIwMjIsMjIzNzQsMjQzOTIsMjQ5ODYsMjc0NzAsMjg3NjAsMjg4NDUsMzIxODcsMzU0NzcsMjI4OTAsMzMwNjcsMjU1MDYsMzA0NzIsMzI4MjksMzYwMTAs''@;'; put 'put ''MjI2MTIsMjU2NDUsMjcwNjcsMjM0NDUsMjQwODEsMjgyNzEsNjQwMDMsMzQxNTMsMjA4MTIsMjE0ODgsMjI4MjYsMjQ2MDgsMjQ5MDcsMjc1MjYsMjc3NjAsMjc4ODgsMzE1MTgsMzI5NzQsMzM0OTIsMzYyOTQsMzcwNDAsMzkwODksNjQwMDQsMjU3OTksMjg1ODAsMjU3NDUsMjU4NjAsMjA4''@;'; put 'put ''MTQsMjE1MjAsMjIzMDMsMzUzNDIsMjQ5MjcsMjY3NDIsNjQwMDUsMzAxNzEsMzE1NzAsMzIxMTMsMzY4OTAsMjI1MzQsMjcwODQsMzMxNTEsMzUxMTQsMzY4NjQsMzg5NjksMjA2MDAsMjI4NzEsMjI5NTYsMjUyMzcsMzY4NzksMzk3MjIsMjQ5MjUsMjkzMDUsMzgzNTgsMjIzNjksMjMxMTAs''@;'; put 'put ''MjQwNTIsMjUyMjYsMjU3NzMsMjU4NTAsMjY0ODcsMjc4NzQsMjc5NjYsMjkyMjgsMjk3NTAsMzA3NzIsMzI2MzEsMzM0NTMsMzYzMTUsMzg5MzUsMjEwMjgsMjIzMzgsMjY0OTUsMjkyNTYsMjk5MjMsMzYwMDksMzY3NzQsMzczOTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzg0NDIsMjA4NDMsMjE0ODUsMjU0MjAsMjAzMjksMjE3NjQsMjQ3MjYsMjU5NDMs''@;'; put 'put ''Mjc4MDMsMjgwMzEsMjkyNjAsMjk0MzcsMzEyNTUsMzUyMDcsMzU5OTcsMjQ0MjksMjg1NTgsMjg5MjEsMzMxOTIsMjQ4NDYsMjA0MTUsMjA1NTksMjUxNTMsMjkyNTUsMzE2ODcsMzIyMzIsMzI3NDUsMzY5NDEsMzg4MjksMzk0NDksMzYwMjIsMjIzNzgsMjQxNzksMjY1NDQsMzM4MDUsMzU0''@;'; put 'put ''MTMsMjE1MzYsMjMzMTgsMjQxNjMsMjQyOTAsMjQzMzAsMjU5ODcsMzI5NTQsMzQxMDksMzgyODEsMzg0OTEsMjAyOTYsMjEyNTMsMjEyNjEsMjEyNjMsMjE2MzgsMjE3NTQsMjIyNzUsMjQwNjcsMjQ1OTgsMjUyNDMsMjUyNjUsMjU0MjksNjQwMDYsMjc4NzMsMjgwMDYsMzAxMjksMzA3NzAs''@;'; put 'put ''MzI5OTAsMzMwNzEsMzM1MDIsMzM4ODksMzM5NzAsMzQ5NTcsMzUwOTAsMzY4NzUsMzc2MTAsMzkxNjUsMzk4MjUsMjQxMzMsMjYyOTIsMjYzMzMsMjg2ODksMjkxOTAsNjQwMDcsMjA0NjksMjExMTcsMjQ0MjYsMjQ5MTUsMjY0NTEsMjcxNjEsMjg0MTgsMjk5MjIsMzEwODAsMzQ5MjAsMzU5''@;'; put 'put ''NjEsMzkxMTEsMzkxMDgsMzk0OTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsMjE2OTcsMzEyNjMsMjY5NjMsMzU1NzUsMzU5MTQsMzkwODAsMzkzNDIsMjQ0NDQsMjUyNTksMzAxMzAsMzAzODIsMzQ5ODcsMzY5OTEsMzg0NjYsMjEzMDUsMjQzODAsMjQ1MTcsMjc4NTIsMjk2NDQsMzAwNTAsMzAwOTEsMzE1NTgsMzM1MzQsMzkzMjUsMjAwNDcsMzY5MjQsMTk5''@;'; put 'put ''NzksMjAzMDksMjE0MTQsMjI3OTksMjQyNjQsMjYxNjAsMjc4MjcsMjk3ODEsMzM2NTUsMzQ2NjIsMzYwMzIsMzY5NDQsMzg2ODYsMzk5NTcsMjI3MzcsMjM0MTYsMzQzODQsMzU2MDQsNDAzNzIsMjM1MDYsMjQ2ODAsMjQ3MTcsMjYwOTcsMjc3MzUsMjg0NTAsMjg1NzksMjg2OTgsMzI1OTcs''@;'; put 'put ''MzI3NTIsMzgyODksMzgyOTAsMzg0ODAsMzg4NjcsMjExMDYsMzY2NzYsMjA5ODksMjE1NDcsMjE2ODgsMjE4NTksMjE4OTgsMjczMjMsMjgwODUsMzIyMTYsMzMzODIsMzc1MzIsMzg1MTksNDA1NjksMjE1MTIsMjE3MDQsMzA0MTgsMzQ1MzIsMzgzMDgsMzgzNTYsMzg0OTIsMjAxMzAsMjAy''@;'; put 'put ''MzMsMjMwMjIsMjMyNzAsMjQwNTUsMjQ2NTgsMjUyMzksMjY0NzcsMjY2ODksMjc3ODIsMjgyMDcsMzI1NjgsMzI5MjMsMzMzMjIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjQwMDgsNjQwMDksMzg5MTcsMjAxMzMsMjA1NjUsMjE2ODMsMjI0MTksMjI4NzQsMjM0MDEsMjM0NzUsMjUwMzIsMjY5OTksMjgwMjMsMjg3MDcsMzQ4MDksMzUyOTksMzU0NDIsMzU1''@;'; put 'put ''NTksMzY5OTQsMzk0MDUsMzk2MDgsMjExODIsMjY2ODAsMjA1MDIsMjQxODQsMjY0NDcsMzM2MDcsMzQ4OTIsMjAxMzksMjE1MjEsMjIxOTAsMjk2NzAsMzcxNDEsMzg5MTEsMzkxNzcsMzkyNTUsMzkzMjEsMjIwOTksMjI2ODcsMzQzOTUsMzUzNzcsMjUwMTAsMjczODIsMjk1NjMsMzY1NjIs''@;'; put 'put ''Mjc0NjMsMzg1NzAsMzk1MTEsMjI4NjksMjkxODQsMzYyMDMsMzg3NjEsMjA0MzYsMjM3OTYsMjQzNTgsMjUwODAsMjYyMDMsMjc4ODMsMjg4NDMsMjk1NzIsMjk2MjUsMjk2OTQsMzA1MDUsMzA1NDEsMzIwNjcsMzIwOTgsMzIyOTEsMzMzMzUsMzQ4OTgsNjQwMTAsMzYwNjYsMzc0NDksMzkw''@;'; put 'put ''MjMsMjMzNzcsMzEzNDgsMzQ4ODAsMzg5MTMsMjMyNDQsMjA0NDgsMjEzMzIsMjI4NDYsMjM4MDUsMjU0MDYsMjgwMjUsMjk0MzMsMzMwMjksMzMwMzEsMzM2OTgsMzc1ODMsMzg5NjAsMjAxMzYsMjA4MDQsMjEwMDksMjI0MTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjQ0MTgsMjc4NDIsMjgzNjYsMjg2NzcsMjg3NTIsMjg4NDcsMjkwNzQsMjk2NzMsMjk4''@;'; put 'put ''MDEsMzM2MTAsMzQ3MjIsMzQ5MTMsMzY4NzIsMzcwMjYsMzc3OTUsMzkzMzYsMjA4NDYsMjQ0MDcsMjQ4MDAsMjQ5MzUsMjYyOTEsMzQxMzcsMzY0MjYsMzcyOTUsMzg3OTUsMjAwNDYsMjAxMTQsMjE2MjgsMjI3NDEsMjI3NzgsMjI5MDksMjM3MzMsMjQzNTksMjUxNDIsMjUxNjAsMjYxMjIs''@;'; put 'put ''MjYyMTUsMjc2MjcsMjgwMDksMjgxMTEsMjgyNDYsMjg0MDgsMjg1NjQsMjg2NDAsMjg2NDksMjg3NjUsMjkzOTIsMjk3MzMsMjk3ODYsMjk5MjAsMzAzNTUsMzEwNjgsMzE5NDYsMzIyODYsMzI5OTMsMzM0NDYsMzM4OTksMzM5ODMsMzQzODIsMzQzOTksMzQ2NzYsMzU3MDMsMzU5NDYsMzc4''@;'; put 'put ''MDQsMzg5MTIsMzkwMTMsMjQ3ODUsMjUxMTAsMzcyMzksMjMxMzAsMjYxMjcsMjgxNTEsMjgyMjIsMjk3NTksMzk3NDYsMjQ1NzMsMjQ3OTQsMzE1MDMsMjE3MDAsMjQzNDQsMjc3NDIsMjc4NTksMjc5NDYsMjg4ODgsMzIwMDUsMzQ0MjUsMzUzNDAsNDAyNTEsMjEyNzAsMjE2NDQsMjMzMDEs''@;'; put 'put ''MjcxOTQsMjg3NzksMzAwNjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsMzExMTcsMzExNjYsMzM0NTcsMzM3NzUsMzU0NDEsMzU2NDksMzYwMDgsMzg3NzIsNjQwMTEsMjU4NDQsMjU4OTksMzA5MDYsMzA5MDcsMzEzMzksMjAwMjQsMjE5MTQsMjI4NjQsMjM0NjIsMjQxODcsMjQ3MzksMjU1NjMsMjc0ODksMjYyMTMsMjY3MDcsMjgxODUsMjkwMjksMjk4NzIs''@;'; put 'put ''MzIwMDgsMzY5OTYsMzk1MjksMzk5NzMsMjc5NjMsMjgzNjksMjk1MDIsMzU5MDUsMzgzNDYsMjA5NzYsMjQxNDAsMjQ0ODgsMjQ2NTMsMjQ4MjIsMjQ4ODAsMjQ5MDgsMjYxNzksMjYxODAsMjcwNDUsMjc4NDEsMjgyNTUsMjgzNjEsMjg1MTQsMjkwMDQsMjk4NTIsMzAzNDMsMzE2ODEsMzE3''@;'; put 'put ''ODMsMzM2MTgsMzQ2NDcsMzY5NDUsMzg1NDEsNDA2NDMsMjEyOTUsMjIyMzgsMjQzMTUsMjQ0NTgsMjQ2NzQsMjQ3MjQsMjUwNzksMjYyMTQsMjYzNzEsMjcyOTIsMjgxNDIsMjg1OTAsMjg3ODQsMjk1NDYsMzIzNjIsMzMyMTQsMzM1ODgsMzQ1MTYsMzU0OTYsMzYwMzYsMjExMjMsMjk1NTQs''@;'; put 'put ''MjM0NDYsMjcyNDMsMzc4OTIsMjE3NDIsMjIxNTAsMjMzODksMjU5MjgsMjU5ODksMjYzMTMsMjY3ODMsMjgwNDUsMjgxMDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjkyNDMsMzI5NDgsMzcyMzcsMzk1MDEsMjAzOTksMjA1MDUsMjE0MDIsMjE1MTgsMjE1NjQsMjE4OTcsMjE5NTcsMjQxMjcsMjQ0NjAsMjY0MjksMjkwMzAsMjk2NjEsMzY4NjksMjEyMTEs''@;'; put 'put ''MjEyMzUsMjI2MjgsMjI3MzQsMjg5MzIsMjkwNzEsMjkxNzksMzQyMjQsMzUzNDcsMjYyNDgsMzQyMTYsMjE5MjcsMjYyNDQsMjkwMDIsMzM4NDEsMjEzMjEsMjE5MTMsMjc1ODUsMjQ0MDksMjQ1MDksMjU1ODIsMjYyNDksMjg5OTksMzU1NjksMzY2MzcsNDA2MzgsMjAyNDEsMjU2NTgsMjg4''@;'; put 'put ''NzUsMzAwNTQsMzQ0MDcsMjQ2NzYsMzU2NjIsNDA0NDAsMjA4MDcsMjA5ODIsMjEyNTYsMjc5NTgsMzMwMTYsNDA2NTcsMjYxMzMsMjc0MjcsMjg4MjQsMzAxNjUsMjE1MDcsMjM2NzMsMzIwMDcsMzUzNTAsMjc0MjQsMjc0NTMsMjc0NjIsMjE1NjAsMjQ2ODgsMjc5NjUsMzI3MjUsMzMyODgs''@;'; put 'put ''MjA2OTQsMjA5NTgsMjE5MTYsMjIxMjMsMjIyMjEsMjMwMjAsMjMzMDUsMjQwNzYsMjQ5ODUsMjQ5ODQsMjUxMzcsMjYyMDYsMjYzNDIsMjkwODEsMjkxMTMsMjkxMTQsMjkzNTEsMzExNDMsMzEyMzIsMzI2OTAsMzU0NDAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0sZ2IxODAzMDpbMTk5NzAsMTk5NzIsMTk5NzMsMTk5NzQsMTk5ODMsMTk5ODYsMTk5OTEsMTk5OTksMmU0LDIwMDAxLDIwMDAzLDIwMDA2''@;'; put 'put ''LDIwMDA5LDIwMDE0LDIwMDE1LDIwMDE3LDIwMDE5LDIwMDIxLDIwMDIzLDIwMDI4LDIwMDMyLDIwMDMzLDIwMDM0LDIwMDM2LDIwMDM4LDIwMDQyLDIwMDQ5LDIwMDUzLDIwMDU1LDIwMDU4LDIwMDU5LDIwMDY2LDIwMDY3LDIwMDY4LDIwMDY5LDIwMDcxLDIwMDcyLDIwMDc0LDIwMDc1LDIw''@;'; put 'put ''MDc2LDIwMDc3LDIwMDc4LDIwMDc5LDIwMDgyLDIwMDg0LDIwMDg1LDIwMDg2LDIwMDg3LDIwMDg4LDIwMDg5LDIwMDkwLDIwMDkxLDIwMDkyLDIwMDkzLDIwMDk1LDIwMDk2LDIwMDk3LDIwMDk4LDIwMDk5LDIwMTAwLDIwMTAxLDIwMTAzLDIwMTA2LDIwMTEyLDIwMTE4LDIwMTE5LDIwMTIx''@;'; put 'put ''LDIwMTI0LDIwMTI1LDIwMTI2LDIwMTMxLDIwMTM4LDIwMTQzLDIwMTQ0LDIwMTQ1LDIwMTQ4LDIwMTUwLDIwMTUxLDIwMTUyLDIwMTUzLDIwMTU2LDIwMTU3LDIwMTU4LDIwMTY4LDIwMTcyLDIwMTc1LDIwMTc2LDIwMTc4LDIwMTg2LDIwMTg3LDIwMTg4LDIwMTkyLDIwMTk0LDIwMTk4LDIw''@;'; put 'put ''MTk5LDIwMjAxLDIwMjA1LDIwMjA2LDIwMjA3LDIwMjA5LDIwMjEyLDIwMjE2LDIwMjE3LDIwMjE4LDIwMjIwLDIwMjIyLDIwMjI0LDIwMjI2LDIwMjI3LDIwMjI4LDIwMjI5LDIwMjMwLDIwMjMxLDIwMjMyLDIwMjM1LDIwMjM2LDIwMjQyLDIwMjQzLDIwMjQ0LDIwMjQ1LDIwMjQ2LDIwMjUy''@;'; put 'put ''LDIwMjUzLDIwMjU3LDIwMjU5LDIwMjY0LDIwMjY1LDIwMjY4LDIwMjY5LDIwMjcwLDIwMjczLDIwMjc1LDIwMjc3LDIwMjc5LDIwMjgxLDIwMjgzLDIwMjg2LDIwMjg3LDIwMjg4LDIwMjg5LDIwMjkwLDIwMjkyLDIwMjkzLDIwMjk1LDIwMjk2LDIwMjk3LDIwMjk4LDIwMjk5LDIwMzAwLDIw''@;'; put 'put ''MzA2LDIwMzA4LDIwMzEwLDIwMzIxLDIwMzIyLDIwMzI2LDIwMzI4LDIwMzMwLDIwMzMxLDIwMzMzLDIwMzM0LDIwMzM3LDIwMzM4LDIwMzQxLDIwMzQzLDIwMzQ0LDIwMzQ1LDIwMzQ2LDIwMzQ5LDIwMzUyLDIwMzUzLDIwMzU0LDIwMzU3LDIwMzU4LDIwMzU5LDIwMzYyLDIwMzY0LDIwMzY2''@;'; put 'put ''LDIwMzY4LDIwMzcwLDIwMzcxLDIwMzczLDIwMzc0LDIwMzc2LDIwMzc3LDIwMzc4LDIwMzgwLDIwMzgyLDIwMzgzLDIwMzg1LDIwMzg2LDIwMzg4LDIwMzk1LDIwMzk3LDIwNDAwLDIwNDAxLDIwNDAyLDIwNDAzLDIwNDA0LDIwNDA2LDIwNDA3LDIwNDA4LDIwNDA5LDIwNDEwLDIwNDExLDIw''@;'; put 'put ''NDEyLDIwNDEzLDIwNDE0LDIwNDE2LDIwNDE3LDIwNDE4LDIwNDIyLDIwNDIzLDIwNDI0LDIwNDI1LDIwNDI3LDIwNDI4LDIwNDI5LDIwNDM0LDIwNDM1LDIwNDM2LDIwNDM3LDIwNDM4LDIwNDQxLDIwNDQzLDIwNDQ4LDIwNDUwLDIwNDUyLDIwNDUzLDIwNDU1LDIwNDU5LDIwNDYwLDIwNDY0''@;'; put 'put ''LDIwNDY2LDIwNDY4LDIwNDY5LDIwNDcwLDIwNDcxLDIwNDczLDIwNDc1LDIwNDc2LDIwNDc3LDIwNDc5LDIwNDgwLDIwNDgxLDIwNDgyLDIwNDgzLDIwNDg0LDIwNDg1LDIwNDg2LDIwNDg3LDIwNDg4LDIwNDg5LDIwNDkwLDIwNDkxLDIwNDk0LDIwNDk2LDIwNDk3LDIwNDk5LDIwNTAxLDIw''@;'; put 'put ''NTAyLDIwNTAzLDIwNTA3LDIwNTA5LDIwNTEwLDIwNTEyLDIwNTE0LDIwNTE1LDIwNTE2LDIwNTE5LDIwNTIzLDIwNTI3LDIwNTI4LDIwNTI5LDIwNTMwLDIwNTMxLDIwNTMyLDIwNTMzLDIwNTM0LDIwNTM1LDIwNTM2LDIwNTM3LDIwNTM5LDIwNTQxLDIwNTQzLDIwNTQ0LDIwNTQ1LDIwNTQ2''@;'; put 'put ''LDIwNTQ4LDIwNTQ5LDIwNTUwLDIwNTUzLDIwNTU0LDIwNTU1LDIwNTU3LDIwNTYwLDIwNTYxLDIwNTYyLDIwNTYzLDIwNTY0LDIwNTY2LDIwNTY3LDIwNTY4LDIwNTY5LDIwNTcxLDIwNTczLDIwNTc0LDIwNTc1LDIwNTc2LDIwNTc3LDIwNTc4LDIwNTc5LDIwNTgwLDIwNTgyLDIwNTgzLDIw''@;'; put 'put ''NTg0LDIwNTg1LDIwNTg2LDIwNTg3LDIwNTg5LDIwNTkwLDIwNTkxLDIwNTkyLDIwNTkzLDIwNTk0LDIwNTk1LDIwNTk2LDIwNTk3LDIwNjAwLDIwNjAxLDIwNjAyLDIwNjA0LDIwNjA1LDIwNjA5LDIwNjEwLDIwNjExLDIwNjEyLDIwNjE0LDIwNjE1LDIwNjE3LDIwNjE4LDIwNjE5LDIwNjIw''@;'; put 'put ''LDIwNjIyLDIwNjIzLDIwNjI0LDIwNjI1LDIwNjI2LDIwNjI3LDIwNjI4LDIwNjI5LDIwNjMwLDIwNjMxLDIwNjMyLDIwNjMzLDIwNjM0LDIwNjM1LDIwNjM2LDIwNjM3LDIwNjM4LDIwNjM5LDIwNjQwLDIwNjQxLDIwNjQyLDIwNjQ0LDIwNjQ2LDIwNjUwLDIwNjUxLDIwNjUzLDIwNjU0LDIw''@;'; put 'put ''NjU1LDIwNjU2LDIwNjU3LDIwNjU5LDIwNjYwLDIwNjYxLDIwNjYyLDIwNjYzLDIwNjY0LDIwNjY1LDIwNjY4LDIwNjY5LDIwNjcwLDIwNjcxLDIwNjcyLDIwNjczLDIwNjc0LDIwNjc1LDIwNjc2LDIwNjc3LDIwNjc4LDIwNjc5LDIwNjgwLDIwNjgxLDIwNjgyLDIwNjgzLDIwNjg0LDIwNjg1''@;'; put 'put ''LDIwNjg2LDIwNjg4LDIwNjg5LDIwNjkwLDIwNjkxLDIwNjkyLDIwNjkzLDIwNjk1LDIwNjk2LDIwNjk3LDIwNjk5LDIwNzAwLDIwNzAxLDIwNzAyLDIwNzAzLDIwNzA0LDIwNzA1LDIwNzA2LDIwNzA3LDIwNzA4LDIwNzA5LDIwNzEyLDIwNzEzLDIwNzE0LDIwNzE1LDIwNzE5LDIwNzIwLDIw''@;'; put 'put ''NzIxLDIwNzIyLDIwNzI0LDIwNzI2LDIwNzI3LDIwNzI4LDIwNzI5LDIwNzMwLDIwNzMyLDIwNzMzLDIwNzM0LDIwNzM1LDIwNzM2LDIwNzM3LDIwNzM4LDIwNzM5LDIwNzQwLDIwNzQxLDIwNzQ0LDIwNzQ1LDIwNzQ2LDIwNzQ4LDIwNzQ5LDIwNzUwLDIwNzUxLDIwNzUyLDIwNzUzLDIwNzU1''@;'; put 'put ''LDIwNzU2LDIwNzU3LDIwNzU4LDIwNzU5LDIwNzYwLDIwNzYxLDIwNzYyLDIwNzYzLDIwNzY0LDIwNzY1LDIwNzY2LDIwNzY3LDIwNzY4LDIwNzcwLDIwNzcxLDIwNzcyLDIwNzczLDIwNzc0LDIwNzc1LDIwNzc2LDIwNzc3LDIwNzc4LDIwNzc5LDIwNzgwLDIwNzgxLDIwNzgyLDIwNzgzLDIw''@;'; put 'put ''Nzg0LDIwNzg1LDIwNzg2LDIwNzg3LDIwNzg4LDIwNzg5LDIwNzkwLDIwNzkxLDIwNzkyLDIwNzkzLDIwNzk0LDIwNzk1LDIwNzk2LDIwNzk3LDIwNzk4LDIwODAyLDIwODA3LDIwODEwLDIwODEyLDIwODE0LDIwODE1LDIwODE2LDIwODE4LDIwODE5LDIwODIzLDIwODI0LDIwODI1LDIwODI3''@;'; put 'put ''LDIwODI5LDIwODMwLDIwODMxLDIwODMyLDIwODMzLDIwODM1LDIwODM2LDIwODM4LDIwODM5LDIwODQxLDIwODQyLDIwODQ3LDIwODUwLDIwODU4LDIwODYyLDIwODYzLDIwODY3LDIwODY4LDIwODcwLDIwODcxLDIwODc0LDIwODc1LDIwODc4LDIwODc5LDIwODgwLDIwODgxLDIwODgzLDIw''@;'; put 'put ''ODg0LDIwODg4LDIwODkwLDIwODkzLDIwODk0LDIwODk1LDIwODk3LDIwODk5LDIwOTAyLDIwOTAzLDIwOTA0LDIwOTA1LDIwOTA2LDIwOTA5LDIwOTEwLDIwOTE2LDIwOTIwLDIwOTIxLDIwOTIyLDIwOTI2LDIwOTI3LDIwOTI5LDIwOTMwLDIwOTMxLDIwOTMzLDIwOTM2LDIwOTM4LDIwOTQx''@;'; put 'put ''LDIwOTQyLDIwOTQ0LDIwOTQ2LDIwOTQ3LDIwOTQ4LDIwOTQ5LDIwOTUwLDIwOTUxLDIwOTUyLDIwOTUzLDIwOTU0LDIwOTU2LDIwOTU4LDIwOTU5LDIwOTYyLDIwOTYzLDIwOTY1LDIwOTY2LDIwOTY3LDIwOTY4LDIwOTY5LDIwOTcwLDIwOTcyLDIwOTc0LDIwOTc3LDIwOTc4LDIwOTgwLDIw''@;'; put 'put ''OTgzLDIwOTkwLDIwOTk2LDIwOTk3LDIxMDAxLDIxMDAzLDIxMDA0LDIxMDA3LDIxMDA4LDIxMDExLDIxMDEyLDIxMDEzLDIxMDIwLDIxMDIyLDIxMDIzLDIxMDI1LDIxMDI2LDIxMDI3LDIxMDI5LDIxMDMwLDIxMDMxLDIxMDM0LDIxMDM2LDIxMDM5LDIxMDQxLDIxMDQyLDIxMDQ0LDIxMDQ1''@;'; put 'put ''LDIxMDUyLDIxMDU0LDIxMDYwLDIxMDYxLDIxMDYyLDIxMDYzLDIxMDY0LDIxMDY1LDIxMDY3LDIxMDcwLDIxMDcxLDIxMDc0LDIxMDc1LDIxMDc3LDIxMDc5LDIxMDgwLDIxMDgxLDIxMDgyLDIxMDgzLDIxMDg1LDIxMDg3LDIxMDg4LDIxMDkwLDIxMDkxLDIxMDkyLDIxMDk0LDIxMDk2LDIx''@;'; put 'put ''MDk5LDIxMTAwLDIxMTAxLDIxMTAyLDIxMTA0LDIxMTA1LDIxMTA3LDIxMTA4LDIxMTA5LDIxMTEwLDIxMTExLDIxMTEyLDIxMTEzLDIxMTE0LDIxMTE1LDIxMTE2LDIxMTE4LDIxMTIwLDIxMTIzLDIxMTI0LDIxMTI1LDIxMTI2LDIxMTI3LDIxMTI5LDIxMTMwLDIxMTMxLDIxMTMyLDIxMTMz''@;'; put 'put ''LDIxMTM0LDIxMTM1LDIxMTM3LDIxMTM4LDIxMTQwLDIxMTQxLDIxMTQyLDIxMTQzLDIxMTQ0LDIxMTQ1LDIxMTQ2LDIxMTQ4LDIxMTU2LDIxMTU3LDIxMTU4LDIxMTU5LDIxMTY2LDIxMTY3LDIxMTY4LDIxMTcyLDIxMTczLDIxMTc0LDIxMTc1LDIxMTc2LDIxMTc3LDIxMTc4LDIxMTc5LDIx''@;'; put 'put ''MTgwLDIxMTgxLDIxMTg0LDIxMTg1LDIxMTg2LDIxMTg4LDIxMTg5LDIxMTkwLDIxMTkyLDIxMTk0LDIxMTk2LDIxMTk3LDIxMTk4LDIxMTk5LDIxMjAxLDIxMjAzLDIxMjA0LDIxMjA1LDIxMjA3LDIxMjA5LDIxMjEwLDIxMjExLDIxMjEyLDIxMjEzLDIxMjE0LDIxMjE2LDIxMjE3LDIxMjE4''@;'; put 'put ''LDIxMjE5LDIxMjIxLDIxMjIyLDIxMjIzLDIxMjI0LDIxMjI1LDIxMjI2LDIxMjI3LDIxMjI4LDIxMjI5LDIxMjMwLDIxMjMxLDIxMjMzLDIxMjM0LDIxMjM1LDIxMjM2LDIxMjM3LDIxMjM4LDIxMjM5LDIxMjQwLDIxMjQzLDIxMjQ0LDIxMjQ1LDIxMjQ5LDIxMjUwLDIxMjUxLDIxMjUyLDIx''@;'; put 'put ''MjU1LDIxMjU3LDIxMjU4LDIxMjU5LDIxMjYwLDIxMjYyLDIxMjY1LDIxMjY2LDIxMjY3LDIxMjY4LDIxMjcyLDIxMjc1LDIxMjc2LDIxMjc4LDIxMjc5LDIxMjgyLDIxMjg0LDIxMjg1LDIxMjg3LDIxMjg4LDIxMjg5LDIxMjkxLDIxMjkyLDIxMjkzLDIxMjk1LDIxMjk2LDIxMjk3LDIxMjk4''@;'; put 'put ''LDIxMjk5LDIxMzAwLDIxMzAxLDIxMzAyLDIxMzAzLDIxMzA0LDIxMzA4LDIxMzA5LDIxMzEyLDIxMzE0LDIxMzE2LDIxMzE4LDIxMzIzLDIxMzI0LDIxMzI1LDIxMzI4LDIxMzMyLDIxMzM2LDIxMzM3LDIxMzM5LDIxMzQxLDIxMzQ5LDIxMzUyLDIxMzU0LDIxMzU2LDIxMzU3LDIxMzYyLDIx''@;'; put 'put ''MzY2LDIxMzY5LDIxMzcxLDIxMzcyLDIxMzczLDIxMzc0LDIxMzc2LDIxMzc3LDIxMzc5LDIxMzgzLDIxMzg0LDIxMzg2LDIxMzkwLDIxMzkxLDIxMzkyLDIxMzkzLDIxMzk0LDIxMzk1LDIxMzk2LDIxMzk4LDIxMzk5LDIxNDAxLDIxNDAzLDIxNDA0LDIxNDA2LDIxNDA4LDIxNDA5LDIxNDEy''@;'; put 'put ''LDIxNDE1LDIxNDE4LDIxNDE5LDIxNDIwLDIxNDIxLDIxNDIzLDIxNDI0LDIxNDI1LDIxNDI2LDIxNDI3LDIxNDI4LDIxNDI5LDIxNDMxLDIxNDMyLDIxNDMzLDIxNDM0LDIxNDM2LDIxNDM3LDIxNDM4LDIxNDQwLDIxNDQzLDIxNDQ0LDIxNDQ1LDIxNDQ2LDIxNDQ3LDIxNDU0LDIxNDU1LDIx''@;'; put 'put ''NDU2LDIxNDU4LDIxNDU5LDIxNDYxLDIxNDY2LDIxNDY4LDIxNDY5LDIxNDcwLDIxNDczLDIxNDc0LDIxNDc5LDIxNDkyLDIxNDk4LDIxNTAyLDIxNTAzLDIxNTA0LDIxNTA2LDIxNTA5LDIxNTExLDIxNTE1LDIxNTI0LDIxNTI4LDIxNTI5LDIxNTMwLDIxNTMyLDIxNTM4LDIxNTQwLDIxNTQx''@;'; put 'put ''LDIxNTQ2LDIxNTUyLDIxNTU1LDIxNTU4LDIxNTU5LDIxNTYyLDIxNTY1LDIxNTY3LDIxNTY5LDIxNTcwLDIxNTcyLDIxNTczLDIxNTc1LDIxNTc3LDIxNTgwLDIxNTgxLDIxNTgyLDIxNTgzLDIxNTg1LDIxNTk0LDIxNTk3LDIxNTk4LDIxNTk5LDIxNjAwLDIxNjAxLDIxNjAzLDIxNjA1LDIx''@;'; put 'put ''NjA3LDIxNjA5LDIxNjEwLDIxNjExLDIxNjEyLDIxNjEzLDIxNjE0LDIxNjE1LDIxNjE2LDIxNjIwLDIxNjI1LDIxNjI2LDIxNjMwLDIxNjMxLDIxNjMzLDIxNjM1LDIxNjM3LDIxNjM5LDIxNjQwLDIxNjQxLDIxNjQyLDIxNjQ1LDIxNjQ5LDIxNjUxLDIxNjU1LDIxNjU2LDIxNjYwLDIxNjYy''@;'; put 'put ''LDIxNjYzLDIxNjY0LDIxNjY1LDIxNjY2LDIxNjY5LDIxNjc4LDIxNjgwLDIxNjgyLDIxNjg1LDIxNjg2LDIxNjg3LDIxNjg5LDIxNjkwLDIxNjkyLDIxNjk0LDIxNjk5LDIxNzAxLDIxNzA2LDIxNzA3LDIxNzE4LDIxNzIwLDIxNzIzLDIxNzI4LDIxNzI5LDIxNzMwLDIxNzMxLDIxNzMyLDIx''@;'; put 'put ''NzM5LDIxNzQwLDIxNzQzLDIxNzQ0LDIxNzQ1LDIxNzQ4LDIxNzQ5LDIxNzUwLDIxNzUxLDIxNzUyLDIxNzUzLDIxNzU1LDIxNzU4LDIxNzYwLDIxNzYyLDIxNzYzLDIxNzY0LDIxNzY1LDIxNzY4LDIxNzcwLDIxNzcxLDIxNzcyLDIxNzczLDIxNzc0LDIxNzc4LDIxNzc5LDIxNzgxLDIxNzgy''@;'; put 'put ''LDIxNzgzLDIxNzg0LDIxNzg1LDIxNzg2LDIxNzg4LDIxNzg5LDIxNzkwLDIxNzkxLDIxNzkzLDIxNzk3LDIxNzk4LDIxODAwLDIxODAxLDIxODAzLDIxODA1LDIxODEwLDIxODEyLDIxODEzLDIxODE0LDIxODE2LDIxODE3LDIxODE4LDIxODE5LDIxODIxLDIxODI0LDIxODI2LDIxODI5LDIx''@;'; put 'put ''ODMxLDIxODMyLDIxODM1LDIxODM2LDIxODM3LDIxODM4LDIxODM5LDIxODQxLDIxODQyLDIxODQzLDIxODQ0LDIxODQ3LDIxODQ4LDIxODQ5LDIxODUwLDIxODUxLDIxODUzLDIxODU0LDIxODU1LDIxODU2LDIxODU4LDIxODU5LDIxODY0LDIxODY1LDIxODY3LDIxODcxLDIxODcyLDIxODcz''@;'; put 'put ''LDIxODc0LDIxODc1LDIxODc2LDIxODgxLDIxODgyLDIxODg1LDIxODg3LDIxODkzLDIxODk0LDIxOTAwLDIxOTAxLDIxOTAyLDIxOTA0LDIxOTA2LDIxOTA3LDIxOTA5LDIxOTEwLDIxOTExLDIxOTE0LDIxOTE1LDIxOTE4LDIxOTIwLDIxOTIxLDIxOTIyLDIxOTIzLDIxOTI0LDIxOTI1LDIx''@;'; put 'put ''OTI2LDIxOTI4LDIxOTI5LDIxOTMwLDIxOTMxLDIxOTMyLDIxOTMzLDIxOTM0LDIxOTM1LDIxOTM2LDIxOTM4LDIxOTQwLDIxOTQyLDIxOTQ0LDIxOTQ2LDIxOTQ4LDIxOTUxLDIxOTUyLDIxOTUzLDIxOTU0LDIxOTU1LDIxOTU4LDIxOTU5LDIxOTYwLDIxOTYyLDIxOTYzLDIxOTY2LDIxOTY3''@;'; put 'put ''LDIxOTY4LDIxOTczLDIxOTc1LDIxOTc2LDIxOTc3LDIxOTc4LDIxOTc5LDIxOTgyLDIxOTg0LDIxOTg2LDIxOTkxLDIxOTkzLDIxOTk3LDIxOTk4LDIyZTMsMjIwMDEsMjIwMDQsMjIwMDYsMjIwMDgsMjIwMDksMjIwMTAsMjIwMTEsMjIwMTIsMjIwMTUsMjIwMTgsMjIwMTksMjIwMjAsMjIw''@;'; put 'put ''MjEsMjIwMjIsMjIwMjMsMjIwMjYsMjIwMjcsMjIwMjksMjIwMzIsMjIwMzMsMjIwMzQsMjIwMzUsMjIwMzYsMjIwMzcsMjIwMzgsMjIwMzksMjIwNDEsMjIwNDIsMjIwNDQsMjIwNDUsMjIwNDgsMjIwNDksMjIwNTAsMjIwNTMsMjIwNTQsMjIwNTYsMjIwNTcsMjIwNTgsMjIwNTksMjIwNjIs''@;'; put 'put ''MjIwNjMsMjIwNjQsMjIwNjcsMjIwNjksMjIwNzEsMjIwNzIsMjIwNzQsMjIwNzYsMjIwNzcsMjIwNzgsMjIwODAsMjIwODEsMjIwODIsMjIwODMsMjIwODQsMjIwODUsMjIwODYsMjIwODcsMjIwODgsMjIwODksMjIwOTAsMjIwOTEsMjIwOTUsMjIwOTYsMjIwOTcsMjIwOTgsMjIwOTksMjIx''@;'; put 'put ''MDEsMjIxMDIsMjIxMDYsMjIxMDcsMjIxMDksMjIxMTAsMjIxMTEsMjIxMTIsMjIxMTMsMjIxMTUsMjIxMTcsMjIxMTgsMjIxMTksMjIxMjUsMjIxMjYsMjIxMjcsMjIxMjgsMjIxMzAsMjIxMzEsMjIxMzIsMjIxMzMsMjIxMzUsMjIxMzYsMjIxMzcsMjIxMzgsMjIxNDEsMjIxNDIsMjIxNDMs''@;'; put 'put ''MjIxNDQsMjIxNDUsMjIxNDYsMjIxNDcsMjIxNDgsMjIxNTEsMjIxNTIsMjIxNTMsMjIxNTQsMjIxNTUsMjIxNTYsMjIxNTcsMjIxNjAsMjIxNjEsMjIxNjIsMjIxNjQsMjIxNjUsMjIxNjYsMjIxNjcsMjIxNjgsMjIxNjksMjIxNzAsMjIxNzEsMjIxNzIsMjIxNzMsMjIxNzQsMjIxNzUsMjIx''@;'; put 'put ''NzYsMjIxNzcsMjIxNzgsMjIxODAsMjIxODEsMjIxODIsMjIxODMsMjIxODQsMjIxODUsMjIxODYsMjIxODcsMjIxODgsMjIxODksMjIxOTAsMjIxOTIsMjIxOTMsMjIxOTQsMjIxOTUsMjIxOTYsMjIxOTcsMjIxOTgsMjIyMDAsMjIyMDEsMjIyMDIsMjIyMDMsMjIyMDUsMjIyMDYsMjIyMDcs''@;'; put 'put ''MjIyMDgsMjIyMDksMjIyMTAsMjIyMTEsMjIyMTIsMjIyMTMsMjIyMTQsMjIyMTUsMjIyMTYsMjIyMTcsMjIyMTksMjIyMjAsMjIyMjEsMjIyMjIsMjIyMjMsMjIyMjQsMjIyMjUsMjIyMjYsMjIyMjcsMjIyMjksMjIyMzAsMjIyMzIsMjIyMzMsMjIyMzYsMjIyNDMsMjIyNDUsMjIyNDYsMjIy''@;'; put 'put ''NDcsMjIyNDgsMjIyNDksMjIyNTAsMjIyNTIsMjIyNTQsMjIyNTUsMjIyNTgsMjIyNTksMjIyNjIsMjIyNjMsMjIyNjQsMjIyNjcsMjIyNjgsMjIyNzIsMjIyNzMsMjIyNzQsMjIyNzcsMjIyNzksMjIyODMsMjIyODQsMjIyODUsMjIyODYsMjIyODcsMjIyODgsMjIyODksMjIyOTAsMjIyOTEs''@;'; put 'put ''MjIyOTIsMjIyOTMsMjIyOTQsMjIyOTUsMjIyOTYsMjIyOTcsMjIyOTgsMjIyOTksMjIzMDEsMjIzMDIsMjIzMDQsMjIzMDUsMjIzMDYsMjIzMDgsMjIzMDksMjIzMTAsMjIzMTEsMjIzMTUsMjIzMjEsMjIzMjIsMjIzMjQsMjIzMjUsMjIzMjYsMjIzMjcsMjIzMjgsMjIzMzIsMjIzMzMsMjIz''@;'; put 'put ''MzUsMjIzMzcsMjIzMzksMjIzNDAsMjIzNDEsMjIzNDIsMjIzNDQsMjIzNDUsMjIzNDcsMjIzNTQsMjIzNTUsMjIzNTYsMjIzNTcsMjIzNTgsMjIzNjAsMjIzNjEsMjIzNzAsMjIzNzEsMjIzNzMsMjIzNzUsMjIzODAsMjIzODIsMjIzODQsMjIzODUsMjIzODYsMjIzODgsMjIzODksMjIzOTIs''@;'; put 'put ''MjIzOTMsMjIzOTQsMjIzOTcsMjIzOTgsMjIzOTksMjI0MDAsMjI0MDEsMjI0MDcsMjI0MDgsMjI0MDksMjI0MTAsMjI0MTMsMjI0MTQsMjI0MTUsMjI0MTYsMjI0MTcsMjI0MjAsMjI0MjEsMjI0MjIsMjI0MjMsMjI0MjQsMjI0MjUsMjI0MjYsMjI0MjgsMjI0MjksMjI0MzAsMjI0MzEsMjI0''@;'; put 'put ''MzcsMjI0NDAsMjI0NDIsMjI0NDQsMjI0NDcsMjI0NDgsMjI0NDksMjI0NTEsMjI0NTMsMjI0NTQsMjI0NTUsMjI0NTcsMjI0NTgsMjI0NTksMjI0NjAsMjI0NjEsMjI0NjIsMjI0NjMsMjI0NjQsMjI0NjUsMjI0NjgsMjI0NjksMjI0NzAsMjI0NzEsMjI0NzIsMjI0NzMsMjI0NzQsMjI0NzYs''@;'; put 'put ''MjI0NzcsMjI0ODAsMjI0ODEsMjI0ODMsMjI0ODYsMjI0ODcsMjI0OTEsMjI0OTIsMjI0OTQsMjI0OTcsMjI0OTgsMjI0OTksMjI1MDEsMjI1MDIsMjI1MDMsMjI1MDQsMjI1MDUsMjI1MDYsMjI1MDcsMjI1MDgsMjI1MTAsMjI1MTIsMjI1MTMsMjI1MTQsMjI1MTUsMjI1MTcsMjI1MTgsMjI1''@;'; put 'put ''MTksMjI1MjMsMjI1MjQsMjI1MjYsMjI1MjcsMjI1MjksMjI1MzEsMjI1MzIsMjI1MzMsMjI1MzYsMjI1MzcsMjI1MzgsMjI1NDAsMjI1NDIsMjI1NDMsMjI1NDQsMjI1NDYsMjI1NDcsMjI1NDgsMjI1NTAsMjI1NTEsMjI1NTIsMjI1NTQsMjI1NTUsMjI1NTYsMjI1NTcsMjI1NTksMjI1NjIs''@;'; put 'put ''MjI1NjMsMjI1NjUsMjI1NjYsMjI1NjcsMjI1NjgsMjI1NjksMjI1NzEsMjI1NzIsMjI1NzMsMjI1NzQsMjI1NzUsMjI1NzcsMjI1NzgsMjI1NzksMjI1ODAsMjI1ODIsMjI1ODMsMjI1ODQsMjI1ODUsMjI1ODYsMjI1ODcsMjI1ODgsMjI1ODksMjI1OTAsMjI1OTEsMjI1OTIsMjI1OTMsMjI1''@;'; put 'put ''OTQsMjI1OTUsMjI1OTcsMjI1OTgsMjI1OTksMjI2MDAsMjI2MDEsMjI2MDIsMjI2MDMsMjI2MDYsMjI2MDcsMjI2MDgsMjI2MTAsMjI2MTEsMjI2MTMsMjI2MTQsMjI2MTUsMjI2MTcsMjI2MTgsMjI2MTksMjI2MjAsMjI2MjEsMjI2MjMsMjI2MjQsMjI2MjUsMjI2MjYsMjI2MjcsMjI2Mjgs''@;'; put 'put ''MjI2MzAsMjI2MzEsMjI2MzIsMjI2MzMsMjI2MzQsMjI2MzcsMjI2MzgsMjI2MzksMjI2NDAsMjI2NDEsMjI2NDIsMjI2NDMsMjI2NDQsMjI2NDUsMjI2NDYsMjI2NDcsMjI2NDgsMjI2NDksMjI2NTAsMjI2NTEsMjI2NTIsMjI2NTMsMjI2NTUsMjI2NTgsMjI2NjAsMjI2NjIsMjI2NjMsMjI2''@;'; put 'put ''NjQsMjI2NjYsMjI2NjcsMjI2NjgsMjI2NjksMjI2NzAsMjI2NzEsMjI2NzIsMjI2NzMsMjI2NzYsMjI2NzcsMjI2NzgsMjI2NzksMjI2ODAsMjI2ODMsMjI2ODQsMjI2ODUsMjI2ODgsMjI2ODksMjI2OTAsMjI2OTEsMjI2OTIsMjI2OTMsMjI2OTQsMjI2OTUsMjI2OTgsMjI2OTksMjI3MDAs''@;'; put 'put ''MjI3MDEsMjI3MDIsMjI3MDMsMjI3MDQsMjI3MDUsMjI3MDYsMjI3MDcsMjI3MDgsMjI3MDksMjI3MTAsMjI3MTEsMjI3MTIsMjI3MTMsMjI3MTQsMjI3MTUsMjI3MTcsMjI3MTgsMjI3MTksMjI3MjAsMjI3MjIsMjI3MjMsMjI3MjQsMjI3MjYsMjI3MjcsMjI3MjgsMjI3MjksMjI3MzAsMjI3''@;'; put 'put ''MzEsMjI3MzIsMjI3MzMsMjI3MzQsMjI3MzUsMjI3MzYsMjI3MzgsMjI3MzksMjI3NDAsMjI3NDIsMjI3NDMsMjI3NDQsMjI3NDUsMjI3NDYsMjI3NDcsMjI3NDgsMjI3NDksMjI3NTAsMjI3NTEsMjI3NTIsMjI3NTMsMjI3NTQsMjI3NTUsMjI3NTcsMjI3NTgsMjI3NTksMjI3NjAsMjI3NjEs''@;'; put 'put ''MjI3NjIsMjI3NjUsMjI3NjcsMjI3NjksMjI3NzAsMjI3NzIsMjI3NzMsMjI3NzUsMjI3NzYsMjI3NzgsMjI3NzksMjI3ODAsMjI3ODEsMjI3ODIsMjI3ODMsMjI3ODQsMjI3ODUsMjI3ODcsMjI3ODksMjI3OTAsMjI3OTIsMjI3OTMsMjI3OTQsMjI3OTUsMjI3OTYsMjI3OTgsMjI4MDAsMjI4''@;'; put 'put ''MDEsMjI4MDIsMjI4MDMsMjI4MDcsMjI4MDgsMjI4MTEsMjI4MTMsMjI4MTQsMjI4MTYsMjI4MTcsMjI4MTgsMjI4MTksMjI4MjIsMjI4MjQsMjI4MjgsMjI4MzIsMjI4MzQsMjI4MzUsMjI4MzcsMjI4MzgsMjI4NDMsMjI4NDUsMjI4NDYsMjI4NDcsMjI4NDgsMjI4NTEsMjI4NTMsMjI4NTQs''@;'; put 'put ''MjI4NTgsMjI4NjAsMjI4NjEsMjI4NjQsMjI4NjYsMjI4NjcsMjI4NzMsMjI4NzUsMjI4NzYsMjI4NzcsMjI4NzgsMjI4NzksMjI4ODEsMjI4ODMsMjI4ODQsMjI4ODYsMjI4ODcsMjI4ODgsMjI4ODksMjI4OTAsMjI4OTEsMjI4OTIsMjI4OTMsMjI4OTQsMjI4OTUsMjI4OTYsMjI4OTcsMjI4''@;'; put 'put ''OTgsMjI5MDEsMjI5MDMsMjI5MDYsMjI5MDcsMjI5MDgsMjI5MTAsMjI5MTEsMjI5MTIsMjI5MTcsMjI5MjEsMjI5MjMsMjI5MjQsMjI5MjYsMjI5MjcsMjI5MjgsMjI5MjksMjI5MzIsMjI5MzMsMjI5MzYsMjI5MzgsMjI5MzksMjI5NDAsMjI5NDEsMjI5NDMsMjI5NDQsMjI5NDUsMjI5NDYs''@;'; put 'put ''MjI5NTAsMjI5NTEsMjI5NTYsMjI5NTcsMjI5NjAsMjI5NjEsMjI5NjMsMjI5NjQsMjI5NjUsMjI5NjYsMjI5NjcsMjI5NjgsMjI5NzAsMjI5NzIsMjI5NzMsMjI5NzUsMjI5NzYsMjI5NzcsMjI5NzgsMjI5NzksMjI5ODAsMjI5ODEsMjI5ODMsMjI5ODQsMjI5ODUsMjI5ODgsMjI5ODksMjI5''@;'; put 'put ''OTAsMjI5OTEsMjI5OTcsMjI5OTgsMjMwMDEsMjMwMDMsMjMwMDYsMjMwMDcsMjMwMDgsMjMwMDksMjMwMTAsMjMwMTIsMjMwMTQsMjMwMTUsMjMwMTcsMjMwMTgsMjMwMTksMjMwMjEsMjMwMjIsMjMwMjMsMjMwMjQsMjMwMjUsMjMwMjYsMjMwMjcsMjMwMjgsMjMwMjksMjMwMzAsMjMwMzEs''@;'; put 'put ''MjMwMzIsMjMwMzQsMjMwMzYsMjMwMzcsMjMwMzgsMjMwNDAsMjMwNDIsMjMwNTAsMjMwNTEsMjMwNTMsMjMwNTQsMjMwNTUsMjMwNTYsMjMwNTgsMjMwNjAsMjMwNjEsMjMwNjIsMjMwNjMsMjMwNjUsMjMwNjYsMjMwNjcsMjMwNjksMjMwNzAsMjMwNzMsMjMwNzQsMjMwNzYsMjMwNzgsMjMw''@;'; put 'put ''NzksMjMwODAsMjMwODIsMjMwODMsMjMwODQsMjMwODUsMjMwODYsMjMwODcsMjMwODgsMjMwOTEsMjMwOTMsMjMwOTUsMjMwOTYsMjMwOTcsMjMwOTgsMjMwOTksMjMxMDEsMjMxMDIsMjMxMDMsMjMxMDUsMjMxMDYsMjMxMDcsMjMxMDgsMjMxMDksMjMxMTEsMjMxMTIsMjMxMTUsMjMxMTYs''@;'; put 'put ''MjMxMTcsMjMxMTgsMjMxMTksMjMxMjAsMjMxMjEsMjMxMjIsMjMxMjMsMjMxMjQsMjMxMjYsMjMxMjcsMjMxMjgsMjMxMjksMjMxMzEsMjMxMzIsMjMxMzMsMjMxMzQsMjMxMzUsMjMxMzYsMjMxMzcsMjMxMzksMjMxNDAsMjMxNDEsMjMxNDIsMjMxNDQsMjMxNDUsMjMxNDcsMjMxNDgsMjMx''@;'; put 'put ''NDksMjMxNTAsMjMxNTEsMjMxNTIsMjMxNTMsMjMxNTQsMjMxNTUsMjMxNjAsMjMxNjEsMjMxNjMsMjMxNjQsMjMxNjUsMjMxNjYsMjMxNjgsMjMxNjksMjMxNzAsMjMxNzEsMjMxNzIsMjMxNzMsMjMxNzQsMjMxNzUsMjMxNzYsMjMxNzcsMjMxNzgsMjMxNzksMjMxODAsMjMxODEsMjMxODIs''@;'; put 'put ''MjMxODMsMjMxODQsMjMxODUsMjMxODcsMjMxODgsMjMxODksMjMxOTAsMjMxOTEsMjMxOTIsMjMxOTMsMjMxOTYsMjMxOTcsMjMxOTgsMjMxOTksMjMyMDAsMjMyMDEsMjMyMDIsMjMyMDMsMjMyMDQsMjMyMDUsMjMyMDYsMjMyMDcsMjMyMDgsMjMyMDksMjMyMTEsMjMyMTIsMjMyMTMsMjMy''@;'; put 'put ''MTQsMjMyMTUsMjMyMTYsMjMyMTcsMjMyMjAsMjMyMjIsMjMyMjMsMjMyMjUsMjMyMjYsMjMyMjcsMjMyMjgsMjMyMjksMjMyMzEsMjMyMzIsMjMyMzUsMjMyMzYsMjMyMzcsMjMyMzgsMjMyMzksMjMyNDAsMjMyNDIsMjMyNDMsMjMyNDUsMjMyNDYsMjMyNDcsMjMyNDgsMjMyNDksMjMyNTEs''@;'; put 'put ''MjMyNTMsMjMyNTUsMjMyNTcsMjMyNTgsMjMyNTksMjMyNjEsMjMyNjIsMjMyNjMsMjMyNjYsMjMyNjgsMjMyNjksMjMyNzEsMjMyNzIsMjMyNzQsMjMyNzYsMjMyNzcsMjMyNzgsMjMyNzksMjMyODAsMjMyODIsMjMyODMsMjMyODQsMjMyODUsMjMyODYsMjMyODcsMjMyODgsMjMyODksMjMy''@;'; put 'put ''OTAsMjMyOTEsMjMyOTIsMjMyOTMsMjMyOTQsMjMyOTUsMjMyOTYsMjMyOTcsMjMyOTgsMjMyOTksMjMzMDAsMjMzMDEsMjMzMDIsMjMzMDMsMjMzMDQsMjMzMDYsMjMzMDcsMjMzMDgsMjMzMDksMjMzMTAsMjMzMTEsMjMzMTIsMjMzMTMsMjMzMTQsMjMzMTUsMjMzMTYsMjMzMTcsMjMzMjAs''@;'; put 'put ''MjMzMjEsMjMzMjIsMjMzMjMsMjMzMjQsMjMzMjUsMjMzMjYsMjMzMjcsMjMzMjgsMjMzMjksMjMzMzAsMjMzMzEsMjMzMzIsMjMzMzMsMjMzMzQsMjMzMzUsMjMzMzYsMjMzMzcsMjMzMzgsMjMzMzksMjMzNDAsMjMzNDEsMjMzNDIsMjMzNDMsMjMzNDQsMjMzNDUsMjMzNDcsMjMzNDksMjMz''@;'; put 'put ''NTAsMjMzNTIsMjMzNTMsMjMzNTQsMjMzNTUsMjMzNTYsMjMzNTcsMjMzNTgsMjMzNTksMjMzNjEsMjMzNjIsMjMzNjMsMjMzNjQsMjMzNjUsMjMzNjYsMjMzNjcsMjMzNjgsMjMzNjksMjMzNzAsMjMzNzEsMjMzNzIsMjMzNzMsMjMzNzQsMjMzNzUsMjMzNzgsMjMzODIsMjMzOTAsMjMzOTIs''@;'; put 'put ''MjMzOTMsMjMzOTksMjM0MDAsMjM0MDMsMjM0MDUsMjM0MDYsMjM0MDcsMjM0MTAsMjM0MTIsMjM0MTQsMjM0MTUsMjM0MTYsMjM0MTcsMjM0MTksMjM0MjAsMjM0MjIsMjM0MjMsMjM0MjYsMjM0MzAsMjM0MzQsMjM0MzcsMjM0MzgsMjM0NDAsMjM0NDEsMjM0NDIsMjM0NDQsMjM0NDYsMjM0''@;'; put 'put ''NTUsMjM0NjMsMjM0NjQsMjM0NjUsMjM0NjgsMjM0NjksMjM0NzAsMjM0NzEsMjM0NzMsMjM0NzQsMjM0NzksMjM0ODIsMjM0ODMsMjM0ODQsMjM0ODgsMjM0ODksMjM0OTEsMjM0OTYsMjM0OTcsMjM0OTgsMjM0OTksMjM1MDEsMjM1MDIsMjM1MDMsMjM1MDUsMjM1MDgsMjM1MDksMjM1MTAs''@;'; put 'put ''MjM1MTEsMjM1MTIsMjM1MTMsMjM1MTQsMjM1MTUsMjM1MTYsMjM1MjAsMjM1MjIsMjM1MjMsMjM1MjYsMjM1MjcsMjM1MjksMjM1MzAsMjM1MzEsMjM1MzIsMjM1MzMsMjM1MzUsMjM1MzcsMjM1MzgsMjM1MzksMjM1NDAsMjM1NDEsMjM1NDIsMjM1NDMsMjM1NDksMjM1NTAsMjM1NTIsMjM1''@;'; put 'put ''NTQsMjM1NTUsMjM1NTcsMjM1NTksMjM1NjAsMjM1NjMsMjM1NjQsMjM1NjUsMjM1NjYsMjM1NjgsMjM1NzAsMjM1NzEsMjM1NzUsMjM1NzcsMjM1NzksMjM1ODIsMjM1ODMsMjM1ODQsMjM1ODUsMjM1ODcsMjM1OTAsMjM1OTIsMjM1OTMsMjM1OTQsMjM1OTUsMjM1OTcsMjM1OTgsMjM1OTks''@;'; put 'put ''MjM2MDAsMjM2MDIsMjM2MDMsMjM2MDUsMjM2MDYsMjM2MDcsMjM2MTksMjM2MjAsMjM2MjIsMjM2MjMsMjM2MjgsMjM2MjksMjM2MzQsMjM2MzUsMjM2MzYsMjM2MzgsMjM2MzksMjM2NDAsMjM2NDIsMjM2NDMsMjM2NDQsMjM2NDUsMjM2NDcsMjM2NTAsMjM2NTIsMjM2NTUsMjM2NTYsMjM2''@;'; put 'put ''NTcsMjM2NTgsMjM2NTksMjM2NjAsMjM2NjEsMjM2NjQsMjM2NjYsMjM2NjcsMjM2NjgsMjM2NjksMjM2NzAsMjM2NzEsMjM2NzIsMjM2NzUsMjM2NzYsMjM2NzcsMjM2NzgsMjM2ODAsMjM2ODMsMjM2ODQsMjM2ODUsMjM2ODYsMjM2ODcsMjM2ODksMjM2OTAsMjM2OTEsMjM2OTQsMjM2OTUs''@;'; put 'put ''MjM2OTgsMjM2OTksMjM3MDEsMjM3MDksMjM3MTAsMjM3MTEsMjM3MTIsMjM3MTMsMjM3MTYsMjM3MTcsMjM3MTgsMjM3MTksMjM3MjAsMjM3MjIsMjM3MjYsMjM3MjcsMjM3MjgsMjM3MzAsMjM3MzIsMjM3MzQsMjM3MzcsMjM3MzgsMjM3MzksMjM3NDAsMjM3NDIsMjM3NDQsMjM3NDYsMjM3''@;'; put 'put ''NDcsMjM3NDksMjM3NTAsMjM3NTEsMjM3NTIsMjM3NTMsMjM3NTQsMjM3NTYsMjM3NTcsMjM3NTgsMjM3NTksMjM3NjAsMjM3NjEsMjM3NjMsMjM3NjQsMjM3NjUsMjM3NjYsMjM3NjcsMjM3NjgsMjM3NzAsMjM3NzEsMjM3NzIsMjM3NzMsMjM3NzQsMjM3NzUsMjM3NzYsMjM3NzgsMjM3Nzks''@;'; put 'put ''MjM3ODMsMjM3ODUsMjM3ODcsMjM3ODgsMjM3OTAsMjM3OTEsMjM3OTMsMjM3OTQsMjM3OTUsMjM3OTYsMjM3OTcsMjM3OTgsMjM3OTksMjM4MDAsMjM4MDEsMjM4MDIsMjM4MDQsMjM4MDUsMjM4MDYsMjM4MDcsMjM4MDgsMjM4MDksMjM4MTIsMjM4MTMsMjM4MTYsMjM4MTcsMjM4MTgsMjM4''@;'; put 'put ''MTksMjM4MjAsMjM4MjEsMjM4MjMsMjM4MjQsMjM4MjUsMjM4MjYsMjM4MjcsMjM4MjksMjM4MzEsMjM4MzIsMjM4MzMsMjM4MzQsMjM4MzYsMjM4MzcsMjM4MzksMjM4NDAsMjM4NDEsMjM4NDIsMjM4NDMsMjM4NDUsMjM4NDgsMjM4NTAsMjM4NTEsMjM4NTIsMjM4NTUsMjM4NTYsMjM4NTcs''@;'; put 'put ''MjM4NTgsMjM4NTksMjM4NjEsMjM4NjIsMjM4NjMsMjM4NjQsMjM4NjUsMjM4NjYsMjM4NjcsMjM4NjgsMjM4NzEsMjM4NzIsMjM4NzMsMjM4NzQsMjM4NzUsMjM4NzYsMjM4NzcsMjM4NzgsMjM4ODAsMjM4ODEsMjM4ODUsMjM4ODYsMjM4ODcsMjM4ODgsMjM4ODksMjM4OTAsMjM4OTEsMjM4''@;'; put 'put ''OTIsMjM4OTMsMjM4OTQsMjM4OTUsMjM4OTcsMjM4OTgsMjM5MDAsMjM5MDIsMjM5MDMsMjM5MDQsMjM5MDUsMjM5MDYsMjM5MDcsMjM5MDgsMjM5MDksMjM5MTAsMjM5MTEsMjM5MTIsMjM5MTQsMjM5MTcsMjM5MTgsMjM5MjAsMjM5MjEsMjM5MjIsMjM5MjMsMjM5MjUsMjM5MjYsMjM5Mjcs''@;'; put 'put ''MjM5MjgsMjM5MjksMjM5MzAsMjM5MzEsMjM5MzIsMjM5MzMsMjM5MzQsMjM5MzUsMjM5MzYsMjM5MzcsMjM5MzksMjM5NDAsMjM5NDEsMjM5NDIsMjM5NDMsMjM5NDQsMjM5NDUsMjM5NDYsMjM5NDcsMjM5NDgsMjM5NDksMjM5NTAsMjM5NTEsMjM5NTIsMjM5NTMsMjM5NTQsMjM5NTUsMjM5''@;'; put 'put ''NTYsMjM5NTcsMjM5NTgsMjM5NTksMjM5NjAsMjM5NjIsMjM5NjMsMjM5NjQsMjM5NjYsMjM5NjcsMjM5NjgsMjM5NjksMjM5NzAsMjM5NzEsMjM5NzIsMjM5NzMsMjM5NzQsMjM5NzUsMjM5NzYsMjM5NzcsMjM5NzgsMjM5NzksMjM5ODAsMjM5ODEsMjM5ODIsMjM5ODMsMjM5ODQsMjM5ODUs''@;'; put 'put ''MjM5ODYsMjM5ODcsMjM5ODgsMjM5ODksMjM5OTAsMjM5OTIsMjM5OTMsMjM5OTQsMjM5OTUsMjM5OTYsMjM5OTcsMjM5OTgsMjM5OTksMjRlMywyNDAwMSwyNDAwMiwyNDAwMywyNDAwNCwyNDAwNiwyNDAwNywyNDAwOCwyNDAwOSwyNDAxMCwyNDAxMSwyNDAxMiwyNDAxNCwyNDAxNSwyNDAx''@;'; put 'put ''NiwyNDAxNywyNDAxOCwyNDAxOSwyNDAyMCwyNDAyMSwyNDAyMiwyNDAyMywyNDAyNCwyNDAyNSwyNDAyNiwyNDAyOCwyNDAzMSwyNDAzMiwyNDAzNSwyNDAzNiwyNDA0MiwyNDA0NCwyNDA0NSwyNDA0OCwyNDA1MywyNDA1NCwyNDA1NiwyNDA1NywyNDA1OCwyNDA1OSwyNDA2MCwyNDA2Mywy''@;'; put 'put ''NDA2NCwyNDA2OCwyNDA3MSwyNDA3MywyNDA3NCwyNDA3NSwyNDA3NywyNDA3OCwyNDA4MiwyNDA4MywyNDA4NywyNDA5NCwyNDA5NSwyNDA5NiwyNDA5NywyNDA5OCwyNDA5OSwyNDEwMCwyNDEwMSwyNDEwNCwyNDEwNSwyNDEwNiwyNDEwNywyNDEwOCwyNDExMSwyNDExMiwyNDExNCwyNDEx''@;'; put 'put ''NSwyNDExNiwyNDExNywyNDExOCwyNDEyMSwyNDEyMiwyNDEyNiwyNDEyNywyNDEyOCwyNDEyOSwyNDEzMSwyNDEzNCwyNDEzNSwyNDEzNiwyNDEzNywyNDEzOCwyNDEzOSwyNDE0MSwyNDE0MiwyNDE0MywyNDE0NCwyNDE0NSwyNDE0NiwyNDE0NywyNDE1MCwyNDE1MSwyNDE1MiwyNDE1Mywy''@;'; put 'put ''NDE1NCwyNDE1NiwyNDE1NywyNDE1OSwyNDE2MCwyNDE2MywyNDE2NCwyNDE2NSwyNDE2NiwyNDE2NywyNDE2OCwyNDE2OSwyNDE3MCwyNDE3MSwyNDE3MiwyNDE3MywyNDE3NCwyNDE3NSwyNDE3NiwyNDE3NywyNDE4MSwyNDE4MywyNDE4NSwyNDE5MCwyNDE5MywyNDE5NCwyNDE5NSwyNDE5''@;'; put 'put ''NywyNDIwMCwyNDIwMSwyNDIwNCwyNDIwNSwyNDIwNiwyNDIxMCwyNDIxNiwyNDIxOSwyNDIyMSwyNDIyNSwyNDIyNiwyNDIyNywyNDIyOCwyNDIzMiwyNDIzMywyNDIzNCwyNDIzNSwyNDIzNiwyNDIzOCwyNDIzOSwyNDI0MCwyNDI0MSwyNDI0MiwyNDI0NCwyNDI1MCwyNDI1MSwyNDI1Miwy''@;'; put 'put ''NDI1MywyNDI1NSwyNDI1NiwyNDI1NywyNDI1OCwyNDI1OSwyNDI2MCwyNDI2MSwyNDI2MiwyNDI2MywyNDI2NCwyNDI2NywyNDI2OCwyNDI2OSwyNDI3MCwyNDI3MSwyNDI3MiwyNDI3NiwyNDI3NywyNDI3OSwyNDI4MCwyNDI4MSwyNDI4MiwyNDI4NCwyNDI4NSwyNDI4NiwyNDI4NywyNDI4''@;'; put 'put ''OCwyNDI4OSwyNDI5MCwyNDI5MSwyNDI5MiwyNDI5MywyNDI5NCwyNDI5NSwyNDI5NywyNDI5OSwyNDMwMCwyNDMwMSwyNDMwMiwyNDMwMywyNDMwNCwyNDMwNSwyNDMwNiwyNDMwNywyNDMwOSwyNDMxMiwyNDMxMywyNDMxNSwyNDMxNiwyNDMxNywyNDMyNSwyNDMyNiwyNDMyNywyNDMyOSwy''@;'; put 'put ''NDMzMiwyNDMzMywyNDMzNCwyNDMzNiwyNDMzOCwyNDM0MCwyNDM0MiwyNDM0NSwyNDM0NiwyNDM0OCwyNDM0OSwyNDM1MCwyNDM1MywyNDM1NCwyNDM1NSwyNDM1NiwyNDM2MCwyNDM2MywyNDM2NCwyNDM2NiwyNDM2OCwyNDM3MCwyNDM3MSwyNDM3MiwyNDM3MywyNDM3NCwyNDM3NSwyNDM3''@;'; put 'put ''NiwyNDM3OSwyNDM4MSwyNDM4MiwyNDM4MywyNDM4NSwyNDM4NiwyNDM4NywyNDM4OCwyNDM4OSwyNDM5MCwyNDM5MSwyNDM5MiwyNDM5MywyNDM5NCwyNDM5NSwyNDM5NiwyNDM5NywyNDM5OCwyNDM5OSwyNDQwMSwyNDQwNCwyNDQwOSwyNDQxMCwyNDQxMSwyNDQxMiwyNDQxNCwyNDQxNSwy''@;'; put 'put ''NDQxNiwyNDQxOSwyNDQyMSwyNDQyMywyNDQyNCwyNDQyNywyNDQzMCwyNDQzMSwyNDQzNCwyNDQzNiwyNDQzNywyNDQzOCwyNDQ0MCwyNDQ0MiwyNDQ0NSwyNDQ0NiwyNDQ0NywyNDQ1MSwyNDQ1NCwyNDQ2MSwyNDQ2MiwyNDQ2MywyNDQ2NSwyNDQ2NywyNDQ2OCwyNDQ3MCwyNDQ3NCwyNDQ3''@;'; put 'put ''NSwyNDQ3NywyNDQ3OCwyNDQ3OSwyNDQ4MCwyNDQ4MiwyNDQ4MywyNDQ4NCwyNDQ4NSwyNDQ4NiwyNDQ4NywyNDQ4OSwyNDQ5MSwyNDQ5MiwyNDQ5NSwyNDQ5NiwyNDQ5NywyNDQ5OCwyNDQ5OSwyNDUwMCwyNDUwMiwyNDUwNCwyNDUwNSwyNDUwNiwyNDUwNywyNDUxMCwyNDUxMSwyNDUxMiwy''@;'; put 'put ''NDUxMywyNDUxNCwyNDUxOSwyNDUyMCwyNDUyMiwyNDUyMywyNDUyNiwyNDUzMSwyNDUzMiwyNDUzMywyNDUzOCwyNDUzOSwyNDU0MCwyNDU0MiwyNDU0MywyNDU0NiwyNDU0NywyNDU0OSwyNDU1MCwyNDU1MiwyNDU1MywyNDU1NiwyNDU1OSwyNDU2MCwyNDU2MiwyNDU2MywyNDU2NCwyNDU2''@;'; put 'put ''NiwyNDU2NywyNDU2OSwyNDU3MCwyNDU3MiwyNDU4MywyNDU4NCwyNDU4NSwyNDU4NywyNDU4OCwyNDU5MiwyNDU5MywyNDU5NSwyNDU5OSwyNDYwMCwyNDYwMiwyNDYwNiwyNDYwNywyNDYxMCwyNDYxMSwyNDYxMiwyNDYyMCwyNDYyMSwyNDYyMiwyNDYyNCwyNDYyNSwyNDYyNiwyNDYyNywy''@;'; put 'put ''NDYyOCwyNDYzMCwyNDYzMSwyNDYzMiwyNDYzMywyNDYzNCwyNDYzNywyNDYzOCwyNDY0MCwyNDY0NCwyNDY0NSwyNDY0NiwyNDY0NywyNDY0OCwyNDY0OSwyNDY1MCwyNDY1MiwyNDY1NCwyNDY1NSwyNDY1NywyNDY1OSwyNDY2MCwyNDY2MiwyNDY2MywyNDY2NCwyNDY2NywyNDY2OCwyNDY3''@;'; put 'put ''MCwyNDY3MSwyNDY3MiwyNDY3MywyNDY3NywyNDY3OCwyNDY4NiwyNDY4OSwyNDY5MCwyNDY5MiwyNDY5MywyNDY5NSwyNDcwMiwyNDcwNCwyNDcwNSwyNDcwNiwyNDcwOSwyNDcxMCwyNDcxMSwyNDcxMiwyNDcxNCwyNDcxNSwyNDcxOCwyNDcxOSwyNDcyMCwyNDcyMSwyNDcyMywyNDcyNSwy''@;'; put 'put ''NDcyNywyNDcyOCwyNDcyOSwyNDczMiwyNDczNCwyNDczNywyNDczOCwyNDc0MCwyNDc0MSwyNDc0MywyNDc0NSwyNDc0NiwyNDc1MCwyNDc1MiwyNDc1NSwyNDc1NywyNDc1OCwyNDc1OSwyNDc2MSwyNDc2MiwyNDc2NSwyNDc2NiwyNDc2NywyNDc2OCwyNDc2OSwyNDc3MCwyNDc3MSwyNDc3''@;'; put 'put ''MiwyNDc3NSwyNDc3NiwyNDc3NywyNDc4MCwyNDc4MSwyNDc4MiwyNDc4MywyNDc4NCwyNDc4NiwyNDc4NywyNDc4OCwyNDc5MCwyNDc5MSwyNDc5MywyNDc5NSwyNDc5OCwyNDgwMSwyNDgwMiwyNDgwMywyNDgwNCwyNDgwNSwyNDgxMCwyNDgxNywyNDgxOCwyNDgyMSwyNDgyMywyNDgyNCwy''@;'; put 'put ''NDgyNywyNDgyOCwyNDgyOSwyNDgzMCwyNDgzMSwyNDgzNCwyNDgzNSwyNDgzNiwyNDgzNywyNDgzOSwyNDg0MiwyNDg0MywyNDg0NCwyNDg0OCwyNDg0OSwyNDg1MCwyNDg1MSwyNDg1MiwyNDg1NCwyNDg1NSwyNDg1NiwyNDg1NywyNDg1OSwyNDg2MCwyNDg2MSwyNDg2MiwyNDg2NSwyNDg2''@;'; put 'put ''NiwyNDg2OSwyNDg3MiwyNDg3MywyNDg3NCwyNDg3NiwyNDg3NywyNDg3OCwyNDg3OSwyNDg4MCwyNDg4MSwyNDg4MiwyNDg4MywyNDg4NCwyNDg4NSwyNDg4NiwyNDg4NywyNDg4OCwyNDg4OSwyNDg5MCwyNDg5MSwyNDg5MiwyNDg5MywyNDg5NCwyNDg5NiwyNDg5NywyNDg5OCwyNDg5OSwy''@;'; put 'put ''NDkwMCwyNDkwMSwyNDkwMiwyNDkwMywyNDkwNSwyNDkwNywyNDkwOSwyNDkxMSwyNDkxMiwyNDkxNCwyNDkxNSwyNDkxNiwyNDkxOCwyNDkxOSwyNDkyMCwyNDkyMSwyNDkyMiwyNDkyMywyNDkyNCwyNDkyNiwyNDkyNywyNDkyOCwyNDkyOSwyNDkzMSwyNDkzMiwyNDkzMywyNDkzNCwyNDkz''@;'; put 'put ''NywyNDkzOCwyNDkzOSwyNDk0MCwyNDk0MSwyNDk0MiwyNDk0MywyNDk0NSwyNDk0NiwyNDk0NywyNDk0OCwyNDk1MCwyNDk1MiwyNDk1MywyNDk1NCwyNDk1NSwyNDk1NiwyNDk1NywyNDk1OCwyNDk1OSwyNDk2MCwyNDk2MSwyNDk2MiwyNDk2MywyNDk2NCwyNDk2NSwyNDk2NiwyNDk2Nywy''@;'; put 'put ''NDk2OCwyNDk2OSwyNDk3MCwyNDk3MiwyNDk3MywyNDk3NSwyNDk3NiwyNDk3NywyNDk3OCwyNDk3OSwyNDk4MSwyNDk4MiwyNDk4MywyNDk4NCwyNDk4NSwyNDk4NiwyNDk4NywyNDk4OCwyNDk5MCwyNDk5MSwyNDk5MiwyNDk5MywyNDk5NCwyNDk5NSwyNDk5NiwyNDk5NywyNDk5OCwyNTAw''@;'; put 'put ''MiwyNTAwMywyNTAwNSwyNTAwNiwyNTAwNywyNTAwOCwyNTAwOSwyNTAxMCwyNTAxMSwyNTAxMiwyNTAxMywyNTAxNCwyNTAxNiwyNTAxNywyNTAxOCwyNTAxOSwyNTAyMCwyNTAyMSwyNTAyMywyNTAyNCwyNTAyNSwyNTAyNywyNTAyOCwyNTAyOSwyNTAzMCwyNTAzMSwyNTAzMywyNTAzNiwy''@;'; put 'put ''NTAzNywyNTAzOCwyNTAzOSwyNTA0MCwyNTA0MywyNTA0NSwyNTA0NiwyNTA0NywyNTA0OCwyNTA0OSwyNTA1MCwyNTA1MSwyNTA1MiwyNTA1MywyNTA1NCwyNTA1NSwyNTA1NiwyNTA1NywyNTA1OCwyNTA1OSwyNTA2MCwyNTA2MSwyNTA2MywyNTA2NCwyNTA2NSwyNTA2NiwyNTA2NywyNTA2''@;'; put 'put ''OCwyNTA2OSwyNTA3MCwyNTA3MSwyNTA3MiwyNTA3MywyNTA3NCwyNTA3NSwyNTA3NiwyNTA3OCwyNTA3OSwyNTA4MCwyNTA4MSwyNTA4MiwyNTA4MywyNTA4NCwyNTA4NSwyNTA4NiwyNTA4OCwyNTA4OSwyNTA5MCwyNTA5MSwyNTA5MiwyNTA5MywyNTA5NSwyNTA5NywyNTEwNywyNTEwOCwy''@;'; put 'put ''NTExMywyNTExNiwyNTExNywyNTExOCwyNTEyMCwyNTEyMywyNTEyNiwyNTEyNywyNTEyOCwyNTEyOSwyNTEzMSwyNTEzMywyNTEzNSwyNTEzNiwyNTEzNywyNTEzOCwyNTE0MSwyNTE0MiwyNTE0NCwyNTE0NSwyNTE0NiwyNTE0NywyNTE0OCwyNTE1NCwyNTE1NiwyNTE1NywyNTE1OCwyNTE2''@;'; put 'put ''MiwyNTE2NywyNTE2OCwyNTE3MywyNTE3NCwyNTE3NSwyNTE3NywyNTE3OCwyNTE4MCwyNTE4MSwyNTE4MiwyNTE4MywyNTE4NCwyNTE4NSwyNTE4NiwyNTE4OCwyNTE4OSwyNTE5MiwyNTIwMSwyNTIwMiwyNTIwNCwyNTIwNSwyNTIwNywyNTIwOCwyNTIxMCwyNTIxMSwyNTIxMywyNTIxNywy''@;'; put 'put ''NTIxOCwyNTIxOSwyNTIyMSwyNTIyMiwyNTIyMywyNTIyNCwyNTIyNywyNTIyOCwyNTIyOSwyNTIzMCwyNTIzMSwyNTIzMiwyNTIzNiwyNTI0MSwyNTI0NCwyNTI0NSwyNTI0NiwyNTI1MSwyNTI1NCwyNTI1NSwyNTI1NywyNTI1OCwyNTI2MSwyNTI2MiwyNTI2MywyNTI2NCwyNTI2NiwyNTI2''@;'; put 'put ''NywyNTI2OCwyNTI3MCwyNTI3MSwyNTI3MiwyNTI3NCwyNTI3OCwyNTI4MCwyNTI4MSwyNTI4MywyNTI5MSwyNTI5NSwyNTI5NywyNTMwMSwyNTMwOSwyNTMxMCwyNTMxMiwyNTMxMywyNTMxNiwyNTMyMiwyNTMyMywyNTMyOCwyNTMzMCwyNTMzMywyNTMzNiwyNTMzNywyNTMzOCwyNTMzOSwy''@;'; put 'put ''NTM0NCwyNTM0NywyNTM0OCwyNTM0OSwyNTM1MCwyNTM1NCwyNTM1NSwyNTM1NiwyNTM1NywyNTM1OSwyNTM2MCwyNTM2MiwyNTM2MywyNTM2NCwyNTM2NSwyNTM2NywyNTM2OCwyNTM2OSwyNTM3MiwyNTM4MiwyNTM4MywyNTM4NSwyNTM4OCwyNTM4OSwyNTM5MCwyNTM5MiwyNTM5MywyNTM5''@;'; put 'put ''NSwyNTM5NiwyNTM5NywyNTM5OCwyNTM5OSwyNTQwMCwyNTQwMywyNTQwNCwyNTQwNiwyNTQwNywyNTQwOCwyNTQwOSwyNTQxMiwyNTQxNSwyNTQxNiwyNTQxOCwyNTQyNSwyNTQyNiwyNTQyNywyNTQyOCwyNTQzMCwyNTQzMSwyNTQzMiwyNTQzMywyNTQzNCwyNTQzNSwyNTQzNiwyNTQzNywy''@;'; put 'put ''NTQ0MCwyNTQ0NCwyNTQ0NSwyNTQ0NiwyNTQ0OCwyNTQ1MCwyNTQ1MSwyNTQ1MiwyNTQ1NSwyNTQ1NiwyNTQ1OCwyNTQ1OSwyNTQ2MCwyNTQ2MSwyNTQ2NCwyNTQ2NSwyNTQ2OCwyNTQ2OSwyNTQ3MCwyNTQ3MSwyNTQ3MywyNTQ3NSwyNTQ3NiwyNTQ3NywyNTQ3OCwyNTQ4MywyNTQ4NSwyNTQ4''@;'; put 'put ''OSwyNTQ5MSwyNTQ5MiwyNTQ5MywyNTQ5NSwyNTQ5NywyNTQ5OCwyNTQ5OSwyNTUwMCwyNTUwMSwyNTUwMiwyNTUwMywyNTUwNSwyNTUwOCwyNTUxMCwyNTUxNSwyNTUxOSwyNTUyMSwyNTUyMiwyNTUyNSwyNTUyNiwyNTUyOSwyNTUzMSwyNTUzMywyNTUzNSwyNTUzNiwyNTUzNywyNTUzOCwy''@;'; put 'put ''NTUzOSwyNTU0MSwyNTU0MywyNTU0NCwyNTU0NiwyNTU0NywyNTU0OCwyNTU1MywyNTU1NSwyNTU1NiwyNTU1NywyNTU1OSwyNTU2MCwyNTU2MSwyNTU2MiwyNTU2MywyNTU2NCwyNTU2NSwyNTU2NywyNTU3MCwyNTU3MiwyNTU3MywyNTU3NCwyNTU3NSwyNTU3NiwyNTU3OSwyNTU4MCwyNTU4''@;'; put 'put ''MiwyNTU4MywyNTU4NCwyNTU4NSwyNTU4NywyNTU4OSwyNTU5MSwyNTU5MywyNTU5NCwyNTU5NSwyNTU5NiwyNTU5OCwyNTYwMywyNTYwNCwyNTYwNiwyNTYwNywyNTYwOCwyNTYwOSwyNTYxMCwyNTYxMywyNTYxNCwyNTYxNywyNTYxOCwyNTYyMSwyNTYyMiwyNTYyMywyNTYyNCwyNTYyNSwy''@;'; put 'put ''NTYyNiwyNTYyOSwyNTYzMSwyNTYzNCwyNTYzNSwyNTYzNiwyNTYzNywyNTYzOSwyNTY0MCwyNTY0MSwyNTY0MywyNTY0NiwyNTY0NywyNTY0OCwyNTY0OSwyNTY1MCwyNTY1MSwyNTY1MywyNTY1NCwyNTY1NSwyNTY1NiwyNTY1NywyNTY1OSwyNTY2MCwyNTY2MiwyNTY2NCwyNTY2NiwyNTY2''@;'; put 'put ''NywyNTY3MywyNTY3NSwyNTY3NiwyNTY3NywyNTY3OCwyNTY3OSwyNTY4MCwyNTY4MSwyNTY4MywyNTY4NSwyNTY4NiwyNTY4NywyNTY4OSwyNTY5MCwyNTY5MSwyNTY5MiwyNTY5MywyNTY5NSwyNTY5NiwyNTY5NywyNTY5OCwyNTY5OSwyNTcwMCwyNTcwMSwyNTcwMiwyNTcwNCwyNTcwNiwy''@;'; put 'put ''NTcwNywyNTcwOCwyNTcxMCwyNTcxMSwyNTcxMiwyNTcxMywyNTcxNCwyNTcxNSwyNTcxNiwyNTcxNywyNTcxOCwyNTcxOSwyNTcyMywyNTcyNCwyNTcyNSwyNTcyNiwyNTcyNywyNTcyOCwyNTcyOSwyNTczMSwyNTczNCwyNTczNiwyNTczNywyNTczOCwyNTczOSwyNTc0MCwyNTc0MSwyNTc0''@;'; put 'put ''MiwyNTc0MywyNTc0NCwyNTc0NywyNTc0OCwyNTc1MSwyNTc1MiwyNTc1NCwyNTc1NSwyNTc1NiwyNTc1NywyNTc1OSwyNTc2MCwyNTc2MSwyNTc2MiwyNTc2MywyNTc2NSwyNTc2NiwyNTc2NywyNTc2OCwyNTc3MCwyNTc3MSwyNTc3NSwyNTc3NywyNTc3OCwyNTc3OSwyNTc4MCwyNTc4Miwy''@;'; put 'put ''NTc4NSwyNTc4NywyNTc4OSwyNTc5MCwyNTc5MSwyNTc5MywyNTc5NSwyNTc5NiwyNTc5OCwyNTc5OSwyNTgwMCwyNTgwMSwyNTgwMiwyNTgwMywyNTgwNCwyNTgwNywyNTgwOSwyNTgxMSwyNTgxMiwyNTgxMywyNTgxNCwyNTgxNywyNTgxOCwyNTgxOSwyNTgyMCwyNTgyMSwyNTgyMywyNTgy''@;'; put 'put ''NCwyNTgyNSwyNTgyNywyNTgyOSwyNTgzMSwyNTgzMiwyNTgzMywyNTgzNCwyNTgzNSwyNTgzNiwyNTgzNywyNTgzOCwyNTgzOSwyNTg0MCwyNTg0MSwyNTg0MiwyNTg0MywyNTg0NCwyNTg0NSwyNTg0NiwyNTg0NywyNTg0OCwyNTg0OSwyNTg1MCwyNTg1MSwyNTg1MiwyNTg1MywyNTg1NCwy''@;'; put 'put ''NTg1NSwyNTg1NywyNTg1OCwyNTg1OSwyNTg2MCwyNTg2MSwyNTg2MiwyNTg2MywyNTg2NCwyNTg2NiwyNTg2NywyNTg2OCwyNTg2OSwyNTg3MCwyNTg3MSwyNTg3MiwyNTg3MywyNTg3NSwyNTg3NiwyNTg3NywyNTg3OCwyNTg3OSwyNTg4MSwyNTg4MiwyNTg4MywyNTg4NCwyNTg4NSwyNTg4''@;'; put 'put ''NiwyNTg4NywyNTg4OCwyNTg4OSwyNTg5MCwyNTg5MSwyNTg5MiwyNTg5NCwyNTg5NSwyNTg5NiwyNTg5NywyNTg5OCwyNTkwMCwyNTkwMSwyNTkwNCwyNTkwNSwyNTkwNiwyNTkwNywyNTkxMSwyNTkxNCwyNTkxNiwyNTkxNywyNTkyMCwyNTkyMSwyNTkyMiwyNTkyMywyNTkyNCwyNTkyNiwy''@;'; put 'put ''NTkyNywyNTkzMCwyNTkzMSwyNTkzMywyNTkzNCwyNTkzNiwyNTkzOCwyNTkzOSwyNTk0MCwyNTk0MywyNTk0NCwyNTk0NiwyNTk0OCwyNTk1MSwyNTk1MiwyNTk1MywyNTk1NiwyNTk1NywyNTk1OSwyNTk2MCwyNTk2MSwyNTk2MiwyNTk2NSwyNTk2NiwyNTk2NywyNTk2OSwyNTk3MSwyNTk3''@;'; put 'put ''MywyNTk3NCwyNTk3NiwyNTk3NywyNTk3OCwyNTk3OSwyNTk4MCwyNTk4MSwyNTk4MiwyNTk4MywyNTk4NCwyNTk4NSwyNTk4NiwyNTk4NywyNTk4OCwyNTk4OSwyNTk5MCwyNTk5MiwyNTk5MywyNTk5NCwyNTk5NywyNTk5OCwyNTk5OSwyNjAwMiwyNjAwNCwyNjAwNSwyNjAwNiwyNjAwOCwy''@;'; put 'put ''NjAxMCwyNjAxMywyNjAxNCwyNjAxNiwyNjAxOCwyNjAxOSwyNjAyMiwyNjAyNCwyNjAyNiwyNjAyOCwyNjAzMCwyNjAzMywyNjAzNCwyNjAzNSwyNjAzNiwyNjAzNywyNjAzOCwyNjAzOSwyNjA0MCwyNjA0MiwyNjA0MywyNjA0NiwyNjA0NywyNjA0OCwyNjA1MCwyNjA1NSwyNjA1NiwyNjA1''@;'; put 'put ''NywyNjA1OCwyNjA2MSwyNjA2NCwyNjA2NSwyNjA2NywyNjA2OCwyNjA2OSwyNjA3MiwyNjA3MywyNjA3NCwyNjA3NSwyNjA3NiwyNjA3NywyNjA3OCwyNjA3OSwyNjA4MSwyNjA4MywyNjA4NCwyNjA5MCwyNjA5MSwyNjA5OCwyNjA5OSwyNjEwMCwyNjEwMSwyNjEwNCwyNjEwNSwyNjEwNywy''@;'; put 'put ''NjEwOCwyNjEwOSwyNjExMCwyNjExMSwyNjExMywyNjExNiwyNjExNywyNjExOSwyNjEyMCwyNjEyMSwyNjEyMywyNjEyNSwyNjEyOCwyNjEyOSwyNjEzMCwyNjEzNCwyNjEzNSwyNjEzNiwyNjEzOCwyNjEzOSwyNjE0MCwyNjE0MiwyNjE0NSwyNjE0NiwyNjE0NywyNjE0OCwyNjE1MCwyNjE1''@;'; put 'put ''MywyNjE1NCwyNjE1NSwyNjE1NiwyNjE1OCwyNjE2MCwyNjE2MiwyNjE2MywyNjE2NywyNjE2OCwyNjE2OSwyNjE3MCwyNjE3MSwyNjE3MywyNjE3NSwyNjE3NiwyNjE3OCwyNjE4MCwyNjE4MSwyNjE4MiwyNjE4MywyNjE4NCwyNjE4NSwyNjE4NiwyNjE4OSwyNjE5MCwyNjE5MiwyNjE5Mywy''@;'; put 'put ''NjIwMCwyNjIwMSwyNjIwMywyNjIwNCwyNjIwNSwyNjIwNiwyNjIwOCwyNjIxMCwyNjIxMSwyNjIxMywyNjIxNSwyNjIxNywyNjIxOCwyNjIxOSwyNjIyMCwyNjIyMSwyNjIyNSwyNjIyNiwyNjIyNywyNjIyOSwyNjIzMiwyNjIzMywyNjIzNSwyNjIzNiwyNjIzNywyNjIzOSwyNjI0MCwyNjI0''@;'; put 'put ''MSwyNjI0MywyNjI0NSwyNjI0NiwyNjI0OCwyNjI0OSwyNjI1MCwyNjI1MSwyNjI1MywyNjI1NCwyNjI1NSwyNjI1NiwyNjI1OCwyNjI1OSwyNjI2MCwyNjI2MSwyNjI2NCwyNjI2NSwyNjI2NiwyNjI2NywyNjI2OCwyNjI3MCwyNjI3MSwyNjI3MiwyNjI3MywyNjI3NCwyNjI3NSwyNjI3Niwy''@;'; put 'put ''NjI3NywyNjI3OCwyNjI4MSwyNjI4MiwyNjI4MywyNjI4NCwyNjI4NSwyNjI4NywyNjI4OCwyNjI4OSwyNjI5MCwyNjI5MSwyNjI5MywyNjI5NCwyNjI5NSwyNjI5NiwyNjI5OCwyNjI5OSwyNjMwMCwyNjMwMSwyNjMwMywyNjMwNCwyNjMwNSwyNjMwNiwyNjMwNywyNjMwOCwyNjMwOSwyNjMx''@;'; put 'put ''MCwyNjMxMSwyNjMxMiwyNjMxMywyNjMxNCwyNjMxNSwyNjMxNiwyNjMxNywyNjMxOCwyNjMxOSwyNjMyMCwyNjMyMSwyNjMyMiwyNjMyMywyNjMyNCwyNjMyNSwyNjMyNiwyNjMyNywyNjMyOCwyNjMzMCwyNjMzNCwyNjMzNSwyNjMzNiwyNjMzNywyNjMzOCwyNjMzOSwyNjM0MCwyNjM0MSwy''@;'; put 'put ''NjM0MywyNjM0NCwyNjM0NiwyNjM0NywyNjM0OCwyNjM0OSwyNjM1MCwyNjM1MSwyNjM1MywyNjM1NywyNjM1OCwyNjM2MCwyNjM2MiwyNjM2MywyNjM2NSwyNjM2OSwyNjM3MCwyNjM3MSwyNjM3MiwyNjM3MywyNjM3NCwyNjM3NSwyNjM4MCwyNjM4MiwyNjM4MywyNjM4NSwyNjM4NiwyNjM4''@;'; put 'put ''NywyNjM5MCwyNjM5MiwyNjM5MywyNjM5NCwyNjM5NiwyNjM5OCwyNjQwMCwyNjQwMSwyNjQwMiwyNjQwMywyNjQwNCwyNjQwNSwyNjQwNywyNjQwOSwyNjQxNCwyNjQxNiwyNjQxOCwyNjQxOSwyNjQyMiwyNjQyMywyNjQyNCwyNjQyNSwyNjQyNywyNjQyOCwyNjQzMCwyNjQzMSwyNjQzMywy''@;'; put 'put ''NjQzNiwyNjQzNywyNjQzOSwyNjQ0MiwyNjQ0MywyNjQ0NSwyNjQ1MCwyNjQ1MiwyNjQ1MywyNjQ1NSwyNjQ1NiwyNjQ1NywyNjQ1OCwyNjQ1OSwyNjQ2MSwyNjQ2NiwyNjQ2NywyNjQ2OCwyNjQ3MCwyNjQ3MSwyNjQ3NSwyNjQ3NiwyNjQ3OCwyNjQ4MSwyNjQ4NCwyNjQ4NiwyNjQ4OCwyNjQ4''@;'; put 'put ''OSwyNjQ5MCwyNjQ5MSwyNjQ5MywyNjQ5NiwyNjQ5OCwyNjQ5OSwyNjUwMSwyNjUwMiwyNjUwNCwyNjUwNiwyNjUwOCwyNjUwOSwyNjUxMCwyNjUxMSwyNjUxMywyNjUxNCwyNjUxNSwyNjUxNiwyNjUxOCwyNjUyMSwyNjUyMywyNjUyNywyNjUyOCwyNjUyOSwyNjUzMiwyNjUzNCwyNjUzNywy''@;'; put 'put ''NjU0MCwyNjU0MiwyNjU0NSwyNjU0NiwyNjU0OCwyNjU1MywyNjU1NCwyNjU1NSwyNjU1NiwyNjU1NywyNjU1OCwyNjU1OSwyNjU2MCwyNjU2MiwyNjU2NSwyNjU2NiwyNjU2NywyNjU2OCwyNjU2OSwyNjU3MCwyNjU3MSwyNjU3MiwyNjU3MywyNjU3NCwyNjU4MSwyNjU4MiwyNjU4MywyNjU4''@;'; put 'put ''NywyNjU5MSwyNjU5MywyNjU5NSwyNjU5NiwyNjU5OCwyNjU5OSwyNjYwMCwyNjYwMiwyNjYwMywyNjYwNSwyNjYwNiwyNjYxMCwyNjYxMywyNjYxNCwyNjYxNSwyNjYxNiwyNjYxNywyNjYxOCwyNjYxOSwyNjYyMCwyNjYyMiwyNjYyNSwyNjYyNiwyNjYyNywyNjYyOCwyNjYzMCwyNjYzNywy''@;'; put 'put ''NjY0MCwyNjY0MiwyNjY0NCwyNjY0NSwyNjY0OCwyNjY0OSwyNjY1MCwyNjY1MSwyNjY1MiwyNjY1NCwyNjY1NSwyNjY1NiwyNjY1OCwyNjY1OSwyNjY2MCwyNjY2MSwyNjY2MiwyNjY2MywyNjY2NCwyNjY2NywyNjY2OCwyNjY2OSwyNjY3MCwyNjY3MSwyNjY3MiwyNjY3MywyNjY3NiwyNjY3''@;'; put 'put ''NywyNjY3OCwyNjY4MiwyNjY4MywyNjY4NywyNjY5NSwyNjY5OSwyNjcwMSwyNjcwMywyNjcwNiwyNjcxMCwyNjcxMSwyNjcxMiwyNjcxMywyNjcxNCwyNjcxNSwyNjcxNiwyNjcxNywyNjcxOCwyNjcxOSwyNjczMCwyNjczMiwyNjczMywyNjczNCwyNjczNSwyNjczNiwyNjczNywyNjczOCwy''@;'; put 'put ''NjczOSwyNjc0MSwyNjc0NCwyNjc0NSwyNjc0NiwyNjc0NywyNjc0OCwyNjc0OSwyNjc1MCwyNjc1MSwyNjc1MiwyNjc1NCwyNjc1NiwyNjc1OSwyNjc2MCwyNjc2MSwyNjc2MiwyNjc2MywyNjc2NCwyNjc2NSwyNjc2NiwyNjc2OCwyNjc2OSwyNjc3MCwyNjc3MiwyNjc3MywyNjc3NCwyNjc3''@;'; put 'put ''NiwyNjc3NywyNjc3OCwyNjc3OSwyNjc4MCwyNjc4MSwyNjc4MiwyNjc4MywyNjc4NCwyNjc4NSwyNjc4NywyNjc4OCwyNjc4OSwyNjc5MywyNjc5NCwyNjc5NSwyNjc5NiwyNjc5OCwyNjgwMSwyNjgwMiwyNjgwNCwyNjgwNiwyNjgwNywyNjgwOCwyNjgwOSwyNjgxMCwyNjgxMSwyNjgxMiwy''@;'; put 'put ''NjgxMywyNjgxNCwyNjgxNSwyNjgxNywyNjgxOSwyNjgyMCwyNjgyMSwyNjgyMiwyNjgyMywyNjgyNCwyNjgyNiwyNjgyOCwyNjgzMCwyNjgzMSwyNjgzMiwyNjgzMywyNjgzNSwyNjgzNiwyNjgzOCwyNjgzOSwyNjg0MSwyNjg0MywyNjg0NCwyNjg0NSwyNjg0NiwyNjg0NywyNjg0OSwyNjg1''@;'; put 'put ''MCwyNjg1MiwyNjg1MywyNjg1NCwyNjg1NSwyNjg1NiwyNjg1NywyNjg1OCwyNjg1OSwyNjg2MCwyNjg2MSwyNjg2MywyNjg2NiwyNjg2NywyNjg2OCwyNjg3MCwyNjg3MSwyNjg3MiwyNjg3NSwyNjg3NywyNjg3OCwyNjg3OSwyNjg4MCwyNjg4MiwyNjg4MywyNjg4NCwyNjg4NiwyNjg4Nywy''@;'; put 'put ''Njg4OCwyNjg4OSwyNjg5MCwyNjg5MiwyNjg5NSwyNjg5NywyNjg5OSwyNjkwMCwyNjkwMSwyNjkwMiwyNjkwMywyNjkwNCwyNjkwNSwyNjkwNiwyNjkwNywyNjkwOCwyNjkwOSwyNjkxMCwyNjkxMywyNjkxNCwyNjkxNSwyNjkxNywyNjkxOCwyNjkxOSwyNjkyMCwyNjkyMSwyNjkyMiwyNjky''@;'; put 'put ''MywyNjkyNCwyNjkyNiwyNjkyNywyNjkyOSwyNjkzMCwyNjkzMSwyNjkzMywyNjkzNCwyNjkzNSwyNjkzNiwyNjkzOCwyNjkzOSwyNjk0MCwyNjk0MiwyNjk0NCwyNjk0NSwyNjk0NywyNjk0OCwyNjk0OSwyNjk1MCwyNjk1MSwyNjk1MiwyNjk1MywyNjk1NCwyNjk1NSwyNjk1NiwyNjk1Nywy''@;'; put 'put ''Njk1OCwyNjk1OSwyNjk2MCwyNjk2MSwyNjk2MiwyNjk2MywyNjk2NSwyNjk2NiwyNjk2OCwyNjk2OSwyNjk3MSwyNjk3MiwyNjk3NSwyNjk3NywyNjk3OCwyNjk4MCwyNjk4MSwyNjk4MywyNjk4NCwyNjk4NSwyNjk4NiwyNjk4OCwyNjk4OSwyNjk5MSwyNjk5MiwyNjk5NCwyNjk5NSwyNjk5''@;'; put 'put ''NiwyNjk5NywyNjk5OCwyNzAwMiwyNzAwMywyNzAwNSwyNzAwNiwyNzAwNywyNzAwOSwyNzAxMSwyNzAxMywyNzAxOCwyNzAxOSwyNzAyMCwyNzAyMiwyNzAyMywyNzAyNCwyNzAyNSwyNzAyNiwyNzAyNywyNzAzMCwyNzAzMSwyNzAzMywyNzAzNCwyNzAzNywyNzAzOCwyNzAzOSwyNzA0MCwy''@;'; put 'put ''NzA0MSwyNzA0MiwyNzA0MywyNzA0NCwyNzA0NSwyNzA0NiwyNzA0OSwyNzA1MCwyNzA1MiwyNzA1NCwyNzA1NSwyNzA1NiwyNzA1OCwyNzA1OSwyNzA2MSwyNzA2MiwyNzA2NCwyNzA2NSwyNzA2NiwyNzA2OCwyNzA2OSwyNzA3MCwyNzA3MSwyNzA3MiwyNzA3NCwyNzA3NSwyNzA3NiwyNzA3''@;'; put 'put ''NywyNzA3OCwyNzA3OSwyNzA4MCwyNzA4MSwyNzA4MywyNzA4NSwyNzA4NywyNzA4OSwyNzA5MCwyNzA5MSwyNzA5MywyNzA5NCwyNzA5NSwyNzA5NiwyNzA5NywyNzA5OCwyNzEwMCwyNzEwMSwyNzEwMiwyNzEwNSwyNzEwNiwyNzEwNywyNzEwOCwyNzEwOSwyNzExMCwyNzExMSwyNzExMiwy''@;'; put 'put ''NzExMywyNzExNCwyNzExNSwyNzExNiwyNzExOCwyNzExOSwyNzEyMCwyNzEyMSwyNzEyMywyNzEyNCwyNzEyNSwyNzEyNiwyNzEyNywyNzEyOCwyNzEyOSwyNzEzMCwyNzEzMSwyNzEzMiwyNzEzNCwyNzEzNiwyNzEzNywyNzEzOCwyNzEzOSwyNzE0MCwyNzE0MSwyNzE0MiwyNzE0MywyNzE0''@;'; put 'put ''NCwyNzE0NSwyNzE0NywyNzE0OCwyNzE0OSwyNzE1MCwyNzE1MSwyNzE1MiwyNzE1MywyNzE1NCwyNzE1NSwyNzE1NiwyNzE1NywyNzE1OCwyNzE2MSwyNzE2MiwyNzE2MywyNzE2NCwyNzE2NSwyNzE2NiwyNzE2OCwyNzE3MCwyNzE3MSwyNzE3MiwyNzE3MywyNzE3NCwyNzE3NSwyNzE3Nywy''@;'; put 'put ''NzE3OSwyNzE4MCwyNzE4MSwyNzE4MiwyNzE4NCwyNzE4NiwyNzE4NywyNzE4OCwyNzE5MCwyNzE5MSwyNzE5MiwyNzE5MywyNzE5NCwyNzE5NSwyNzE5NiwyNzE5OSwyNzIwMCwyNzIwMSwyNzIwMiwyNzIwMywyNzIwNSwyNzIwNiwyNzIwOCwyNzIwOSwyNzIxMCwyNzIxMSwyNzIxMiwyNzIx''@;'; put 'put ''MywyNzIxNCwyNzIxNSwyNzIxNywyNzIxOCwyNzIxOSwyNzIyMCwyNzIyMSwyNzIyMiwyNzIyMywyNzIyNiwyNzIyOCwyNzIyOSwyNzIzMCwyNzIzMSwyNzIzMiwyNzIzNCwyNzIzNSwyNzIzNiwyNzIzOCwyNzIzOSwyNzI0MCwyNzI0MSwyNzI0MiwyNzI0MywyNzI0NCwyNzI0NSwyNzI0Niwy''@;'; put 'put ''NzI0NywyNzI0OCwyNzI1MCwyNzI1MSwyNzI1MiwyNzI1MywyNzI1NCwyNzI1NSwyNzI1NiwyNzI1OCwyNzI1OSwyNzI2MSwyNzI2MiwyNzI2MywyNzI2NSwyNzI2NiwyNzI2NywyNzI2OSwyNzI3MCwyNzI3MSwyNzI3MiwyNzI3MywyNzI3NCwyNzI3NSwyNzI3NiwyNzI3NywyNzI3OSwyNzI4''@;'; put 'put ''MiwyNzI4MywyNzI4NCwyNzI4NSwyNzI4NiwyNzI4OCwyNzI4OSwyNzI5MCwyNzI5MSwyNzI5MiwyNzI5MywyNzI5NCwyNzI5NSwyNzI5NywyNzI5OCwyNzI5OSwyNzMwMCwyNzMwMSwyNzMwMiwyNzMwMywyNzMwNCwyNzMwNiwyNzMwOSwyNzMxMCwyNzMxMSwyNzMxMiwyNzMxMywyNzMxNCwy''@;'; put 'put ''NzMxNSwyNzMxNiwyNzMxNywyNzMxOCwyNzMxOSwyNzMyMCwyNzMyMSwyNzMyMiwyNzMyMywyNzMyNCwyNzMyNSwyNzMyNiwyNzMyNywyNzMyOCwyNzMyOSwyNzMzMCwyNzMzMSwyNzMzMiwyNzMzMywyNzMzNCwyNzMzNSwyNzMzNiwyNzMzNywyNzMzOCwyNzMzOSwyNzM0MCwyNzM0MSwyNzM0''@;'; put 'put ''MiwyNzM0MywyNzM0NCwyNzM0NSwyNzM0NiwyNzM0NywyNzM0OCwyNzM0OSwyNzM1MCwyNzM1MSwyNzM1MiwyNzM1MywyNzM1NCwyNzM1NSwyNzM1NiwyNzM1NywyNzM1OCwyNzM1OSwyNzM2MCwyNzM2MSwyNzM2MiwyNzM2MywyNzM2NCwyNzM2NSwyNzM2NiwyNzM2NywyNzM2OCwyNzM2OSwy''@;'; put 'put ''NzM3MCwyNzM3MSwyNzM3MiwyNzM3MywyNzM3NCwyNzM3NSwyNzM3NiwyNzM3NywyNzM3OCwyNzM3OSwyNzM4MCwyNzM4MSwyNzM4MiwyNzM4MywyNzM4NCwyNzM4NSwyNzM4NiwyNzM4NywyNzM4OCwyNzM4OSwyNzM5MCwyNzM5MSwyNzM5MiwyNzM5MywyNzM5NCwyNzM5NSwyNzM5NiwyNzM5''@;'; put 'put ''NywyNzM5OCwyNzM5OSwyNzQwMCwyNzQwMSwyNzQwMiwyNzQwMywyNzQwNCwyNzQwNSwyNzQwNiwyNzQwNywyNzQwOCwyNzQwOSwyNzQxMCwyNzQxMSwyNzQxMiwyNzQxMywyNzQxNCwyNzQxNSwyNzQxNiwyNzQxNywyNzQxOCwyNzQxOSwyNzQyMCwyNzQyMSwyNzQyMiwyNzQyMywyNzQyOSwy''@;'; put 'put ''NzQzMCwyNzQzMiwyNzQzMywyNzQzNCwyNzQzNSwyNzQzNiwyNzQzNywyNzQzOCwyNzQzOSwyNzQ0MCwyNzQ0MSwyNzQ0MywyNzQ0NCwyNzQ0NSwyNzQ0NiwyNzQ0OCwyNzQ1MSwyNzQ1MiwyNzQ1MywyNzQ1NSwyNzQ1NiwyNzQ1NywyNzQ1OCwyNzQ2MCwyNzQ2MSwyNzQ2NCwyNzQ2NiwyNzQ2''@;'; put 'put ''NywyNzQ2OSwyNzQ3MCwyNzQ3MSwyNzQ3MiwyNzQ3MywyNzQ3NCwyNzQ3NSwyNzQ3NiwyNzQ3NywyNzQ3OCwyNzQ3OSwyNzQ4MCwyNzQ4MiwyNzQ4MywyNzQ4NCwyNzQ4NSwyNzQ4NiwyNzQ4NywyNzQ4OCwyNzQ4OSwyNzQ5NiwyNzQ5NywyNzQ5OSwyNzUwMCwyNzUwMSwyNzUwMiwyNzUwMywy''@;'; put 'put ''NzUwNCwyNzUwNSwyNzUwNiwyNzUwNywyNzUwOCwyNzUwOSwyNzUxMCwyNzUxMSwyNzUxMiwyNzUxNCwyNzUxNywyNzUxOCwyNzUxOSwyNzUyMCwyNzUyNSwyNzUyOCwyNzUzMiwyNzUzNCwyNzUzNSwyNzUzNiwyNzUzNywyNzU0MCwyNzU0MSwyNzU0MywyNzU0NCwyNzU0NSwyNzU0OCwyNzU0''@;'; put 'put ''OSwyNzU1MCwyNzU1MSwyNzU1MiwyNzU1NCwyNzU1NSwyNzU1NiwyNzU1NywyNzU1OCwyNzU1OSwyNzU2MCwyNzU2MSwyNzU2MywyNzU2NCwyNzU2NSwyNzU2NiwyNzU2NywyNzU2OCwyNzU2OSwyNzU3MCwyNzU3NCwyNzU3NiwyNzU3NywyNzU3OCwyNzU3OSwyNzU4MCwyNzU4MSwyNzU4Miwy''@;'; put 'put ''NzU4NCwyNzU4NywyNzU4OCwyNzU5MCwyNzU5MSwyNzU5MiwyNzU5MywyNzU5NCwyNzU5NiwyNzU5OCwyNzYwMCwyNzYwMSwyNzYwOCwyNzYxMCwyNzYxMiwyNzYxMywyNzYxNCwyNzYxNSwyNzYxNiwyNzYxOCwyNzYxOSwyNzYyMCwyNzYyMSwyNzYyMiwyNzYyMywyNzYyNCwyNzYyNSwyNzYy''@;'; put 'put ''OCwyNzYyOSwyNzYzMCwyNzYzMiwyNzYzMywyNzYzNCwyNzYzNiwyNzYzOCwyNzYzOSwyNzY0MCwyNzY0MiwyNzY0MywyNzY0NCwyNzY0NiwyNzY0NywyNzY0OCwyNzY0OSwyNzY1MCwyNzY1MSwyNzY1MiwyNzY1NiwyNzY1NywyNzY1OCwyNzY1OSwyNzY2MCwyNzY2MiwyNzY2NiwyNzY3MSwy''@;'; put 'put ''NzY3NiwyNzY3NywyNzY3OCwyNzY4MCwyNzY4MywyNzY4NSwyNzY5MSwyNzY5MiwyNzY5MywyNzY5NywyNzY5OSwyNzcwMiwyNzcwMywyNzcwNSwyNzcwNiwyNzcwNywyNzcwOCwyNzcxMCwyNzcxMSwyNzcxNSwyNzcxNiwyNzcxNywyNzcyMCwyNzcyMywyNzcyNCwyNzcyNSwyNzcyNiwyNzcy''@;'; put 'put ''NywyNzcyOSwyNzczMCwyNzczMSwyNzczNCwyNzczNiwyNzczNywyNzczOCwyNzc0NiwyNzc0NywyNzc0OSwyNzc1MCwyNzc1MSwyNzc1NSwyNzc1NiwyNzc1NywyNzc1OCwyNzc1OSwyNzc2MSwyNzc2MywyNzc2NSwyNzc2NywyNzc2OCwyNzc3MCwyNzc3MSwyNzc3MiwyNzc3NSwyNzc3Niwy''@;'; put 'put ''Nzc4MCwyNzc4MywyNzc4NiwyNzc4NywyNzc4OSwyNzc5MCwyNzc5MywyNzc5NCwyNzc5NywyNzc5OCwyNzc5OSwyNzgwMCwyNzgwMiwyNzgwNCwyNzgwNSwyNzgwNiwyNzgwOCwyNzgxMCwyNzgxNiwyNzgyMCwyNzgyMywyNzgyNCwyNzgyOCwyNzgyOSwyNzgzMCwyNzgzMSwyNzgzNCwyNzg0''@;'; put 'put ''MCwyNzg0MSwyNzg0MiwyNzg0MywyNzg0NiwyNzg0NywyNzg0OCwyNzg1MSwyNzg1MywyNzg1NCwyNzg1NSwyNzg1NywyNzg1OCwyNzg2NCwyNzg2NSwyNzg2NiwyNzg2OCwyNzg2OSwyNzg3MSwyNzg3NiwyNzg3OCwyNzg3OSwyNzg4MSwyNzg4NCwyNzg4NSwyNzg5MCwyNzg5MiwyNzg5Nywy''@;'; put 'put ''NzkwMywyNzkwNCwyNzkwNiwyNzkwNywyNzkwOSwyNzkxMCwyNzkxMiwyNzkxMywyNzkxNCwyNzkxNywyNzkxOSwyNzkyMCwyNzkyMSwyNzkyMywyNzkyNCwyNzkyNSwyNzkyNiwyNzkyOCwyNzkzMiwyNzkzMywyNzkzNSwyNzkzNiwyNzkzNywyNzkzOCwyNzkzOSwyNzk0MCwyNzk0MiwyNzk0''@;'; put 'put ''NCwyNzk0NSwyNzk0OCwyNzk0OSwyNzk1MSwyNzk1MiwyNzk1NiwyNzk1OCwyNzk1OSwyNzk2MCwyNzk2MiwyNzk2NywyNzk2OCwyNzk3MCwyNzk3MiwyNzk3NywyNzk4MCwyNzk4NCwyNzk4OSwyNzk5MCwyNzk5MSwyNzk5MiwyNzk5NSwyNzk5NywyNzk5OSwyODAwMSwyODAwMiwyODAwNCwy''@;'; put 'put ''ODAwNSwyODAwNywyODAwOCwyODAxMSwyODAxMiwyODAxMywyODAxNiwyODAxNywyODAxOCwyODAxOSwyODAyMSwyODAyMiwyODAyNSwyODAyNiwyODAyNywyODAyOSwyODAzMCwyODAzMSwyODAzMiwyODAzMywyODAzNSwyODAzNiwyODAzOCwyODAzOSwyODA0MiwyODA0MywyODA0NSwyODA0''@;'; put 'put ''NywyODA0OCwyODA1MCwyODA1NCwyODA1NSwyODA1NiwyODA1NywyODA1OCwyODA2MCwyODA2NiwyODA2OSwyODA3NiwyODA3NywyODA4MCwyODA4MSwyODA4MywyODA4NCwyODA4NiwyODA4NywyODA4OSwyODA5MCwyODA5MSwyODA5MiwyODA5MywyODA5NCwyODA5NywyODA5OCwyODA5OSwy''@;'; put 'put ''ODEwNCwyODEwNSwyODEwNiwyODEwOSwyODExMCwyODExMSwyODExMiwyODExNCwyODExNSwyODExNiwyODExNywyODExOSwyODEyMiwyODEyMywyODEyNCwyODEyNywyODEzMCwyODEzMSwyODEzMywyODEzNSwyODEzNiwyODEzNywyODEzOCwyODE0MSwyODE0MywyODE0NCwyODE0NiwyODE0''@;'; put 'put ''OCwyODE0OSwyODE1MCwyODE1MiwyODE1NCwyODE1NywyODE1OCwyODE1OSwyODE2MCwyODE2MSwyODE2MiwyODE2MywyODE2NCwyODE2NiwyODE2NywyODE2OCwyODE2OSwyODE3MSwyODE3NSwyODE3OCwyODE3OSwyODE4MSwyODE4NCwyODE4NSwyODE4NywyODE4OCwyODE5MCwyODE5MSwy''@;'; put 'put ''ODE5NCwyODE5OCwyODE5OSwyODIwMCwyODIwMiwyODIwNCwyODIwNiwyODIwOCwyODIwOSwyODIxMSwyODIxMywyODIxNCwyODIxNSwyODIxNywyODIxOSwyODIyMCwyODIyMSwyODIyMiwyODIyMywyODIyNCwyODIyNSwyODIyNiwyODIyOSwyODIzMCwyODIzMSwyODIzMiwyODIzMywyODIz''@;'; put 'put ''NCwyODIzNSwyODIzNiwyODIzOSwyODI0MCwyODI0MSwyODI0MiwyODI0NSwyODI0NywyODI0OSwyODI1MCwyODI1MiwyODI1MywyODI1NCwyODI1NiwyODI1NywyODI1OCwyODI1OSwyODI2MCwyODI2MSwyODI2MiwyODI2MywyODI2NCwyODI2NSwyODI2NiwyODI2OCwyODI2OSwyODI3MSwy''@;'; put 'put ''ODI3MiwyODI3MywyODI3NCwyODI3NSwyODI3NiwyODI3NywyODI3OCwyODI3OSwyODI4MCwyODI4MSwyODI4MiwyODI4MywyODI4NCwyODI4NSwyODI4OCwyODI4OSwyODI5MCwyODI5MiwyODI5NSwyODI5NiwyODI5OCwyODI5OSwyODMwMCwyODMwMSwyODMwMiwyODMwNSwyODMwNiwyODMw''@;'; put 'put ''NywyODMwOCwyODMwOSwyODMxMCwyODMxMSwyODMxMywyODMxNCwyODMxNSwyODMxNywyODMxOCwyODMyMCwyODMyMSwyODMyMywyODMyNCwyODMyNiwyODMyOCwyODMyOSwyODMzMSwyODMzMiwyODMzMywyODMzNCwyODMzNiwyODMzOSwyODM0MSwyODM0NCwyODM0NSwyODM0OCwyODM1MCwy''@;'; put 'put ''ODM1MSwyODM1MiwyODM1NSwyODM1NiwyODM1NywyODM1OCwyODM2MCwyODM2MSwyODM2MiwyODM2NCwyODM2NSwyODM2NiwyODM2OCwyODM3MCwyODM3NCwyODM3NiwyODM3NywyODM3OSwyODM4MCwyODM4MSwyODM4NywyODM5MSwyODM5NCwyODM5NSwyODM5NiwyODM5NywyODM5OCwyODM5''@;'; put 'put ''OSwyODQwMCwyODQwMSwyODQwMiwyODQwMywyODQwNSwyODQwNiwyODQwNywyODQwOCwyODQxMCwyODQxMSwyODQxMiwyODQxMywyODQxNCwyODQxNSwyODQxNiwyODQxNywyODQxOSwyODQyMCwyODQyMSwyODQyMywyODQyNCwyODQyNiwyODQyNywyODQyOCwyODQyOSwyODQzMCwyODQzMiwy''@;'; put 'put ''ODQzMywyODQzNCwyODQzOCwyODQzOSwyODQ0MCwyODQ0MSwyODQ0MiwyODQ0MywyODQ0NCwyODQ0NSwyODQ0NiwyODQ0NywyODQ0OSwyODQ1MCwyODQ1MSwyODQ1MywyODQ1NCwyODQ1NSwyODQ1NiwyODQ2MCwyODQ2MiwyODQ2NCwyODQ2NiwyODQ2OCwyODQ2OSwyODQ3MSwyODQ3MiwyODQ3''@;'; put 'put ''MywyODQ3NCwyODQ3NSwyODQ3NiwyODQ3NywyODQ3OSwyODQ4MCwyODQ4MSwyODQ4MiwyODQ4MywyODQ4NCwyODQ4NSwyODQ4OCwyODQ4OSwyODQ5MCwyODQ5MiwyODQ5NCwyODQ5NSwyODQ5NiwyODQ5NywyODQ5OCwyODQ5OSwyODUwMCwyODUwMSwyODUwMiwyODUwMywyODUwNSwyODUwNiwy''@;'; put 'put ''ODUwNywyODUwOSwyODUxMSwyODUxMiwyODUxMywyODUxNSwyODUxNiwyODUxNywyODUxOSwyODUyMCwyODUyMSwyODUyMiwyODUyMywyODUyNCwyODUyNywyODUyOCwyODUyOSwyODUzMSwyODUzMywyODUzNCwyODUzNSwyODUzNywyODUzOSwyODU0MSwyODU0MiwyODU0MywyODU0NCwyODU0''@;'; put 'put ''NSwyODU0NiwyODU0NywyODU0OSwyODU1MCwyODU1MSwyODU1NCwyODU1NSwyODU1OSwyODU2MCwyODU2MSwyODU2MiwyODU2MywyODU2NCwyODU2NSwyODU2NiwyODU2NywyODU2OCwyODU2OSwyODU3MCwyODU3MSwyODU3MywyODU3NCwyODU3NSwyODU3NiwyODU3OCwyODU3OSwyODU4MCwy''@;'; put 'put ''ODU4MSwyODU4MiwyODU4NCwyODU4NSwyODU4NiwyODU4NywyODU4OCwyODU4OSwyODU5MCwyODU5MSwyODU5MiwyODU5MywyODU5NCwyODU5NiwyODU5NywyODU5OSwyODYwMCwyODYwMiwyODYwMywyODYwNCwyODYwNSwyODYwNiwyODYwNywyODYwOSwyODYxMSwyODYxMiwyODYxMywyODYx''@;'; put 'put ''NCwyODYxNSwyODYxNiwyODYxOCwyODYxOSwyODYyMCwyODYyMSwyODYyMiwyODYyMywyODYyNCwyODYyNywyODYyOCwyODYyOSwyODYzMCwyODYzMSwyODYzMiwyODYzMywyODYzNCwyODYzNSwyODYzNiwyODYzNywyODYzOSwyODY0MiwyODY0MywyODY0NCwyODY0NSwyODY0NiwyODY0Nywy''@;'; put 'put ''ODY0OCwyODY0OSwyODY1MCwyODY1MSwyODY1MiwyODY1MywyODY1NiwyODY1NywyODY1OCwyODY1OSwyODY2MCwyODY2MSwyODY2MiwyODY2MywyODY2NCwyODY2NSwyODY2NiwyODY2NywyODY2OCwyODY2OSwyODY3MCwyODY3MSwyODY3MiwyODY3MywyODY3NCwyODY3NSwyODY3NiwyODY3''@;'; put 'put ''NywyODY3OCwyODY3OSwyODY4MCwyODY4MSwyODY4MiwyODY4MywyODY4NCwyODY4NSwyODY4NiwyODY4NywyODY4OCwyODY5MCwyODY5MSwyODY5MiwyODY5MywyODY5NCwyODY5NSwyODY5NiwyODY5NywyODcwMCwyODcwMSwyODcwMiwyODcwMywyODcwNCwyODcwNSwyODcwNiwyODcwOCwy''@;'; put 'put ''ODcwOSwyODcxMCwyODcxMSwyODcxMiwyODcxMywyODcxNCwyODcxNSwyODcxNiwyODcxNywyODcxOCwyODcxOSwyODcyMCwyODcyMSwyODcyMiwyODcyMywyODcyNCwyODcyNiwyODcyNywyODcyOCwyODczMCwyODczMSwyODczMiwyODczMywyODczNCwyODczNSwyODczNiwyODczNywyODcz''@;'; put 'put ''OCwyODczOSwyODc0MCwyODc0MSwyODc0MiwyODc0MywyODc0NCwyODc0NSwyODc0NiwyODc0NywyODc0OSwyODc1MCwyODc1MiwyODc1MywyODc1NCwyODc1NSwyODc1NiwyODc1NywyODc1OCwyODc1OSwyODc2MCwyODc2MSwyODc2MiwyODc2MywyODc2NCwyODc2NSwyODc2NywyODc2OCwy''@;'; put 'put ''ODc2OSwyODc3MCwyODc3MSwyODc3MiwyODc3MywyODc3NCwyODc3NSwyODc3NiwyODc3NywyODc3OCwyODc4MiwyODc4NSwyODc4NiwyODc4NywyODc4OCwyODc5MSwyODc5MywyODc5NCwyODc5NSwyODc5NywyODgwMSwyODgwMiwyODgwMywyODgwNCwyODgwNiwyODgwNywyODgwOCwyODgx''@;'; put 'put ''MSwyODgxMiwyODgxMywyODgxNSwyODgxNiwyODgxNywyODgxOSwyODgyMywyODgyNCwyODgyNiwyODgyNywyODgzMCwyODgzMSwyODgzMiwyODgzMywyODgzNCwyODgzNSwyODgzNiwyODgzNywyODgzOCwyODgzOSwyODg0MCwyODg0MSwyODg0MiwyODg0OCwyODg1MCwyODg1MiwyODg1Mywy''@;'; put 'put ''ODg1NCwyODg1OCwyODg2MiwyODg2MywyODg2OCwyODg2OSwyODg3MCwyODg3MSwyODg3MywyODg3NSwyODg3NiwyODg3NywyODg3OCwyODg3OSwyODg4MCwyODg4MSwyODg4MiwyODg4MywyODg4NCwyODg4NSwyODg4NiwyODg4NywyODg5MCwyODg5MiwyODg5MywyODg5NCwyODg5NiwyODg5''@;'; put 'put ''NywyODg5OCwyODg5OSwyODkwMSwyODkwNiwyODkxMCwyODkxMiwyODkxMywyODkxNCwyODkxNSwyODkxNiwyODkxNywyODkxOCwyODkyMCwyODkyMiwyODkyMywyODkyNCwyODkyNiwyODkyNywyODkyOCwyODkyOSwyODkzMCwyODkzMSwyODkzMiwyODkzMywyODkzNCwyODkzNSwyODkzNiwy''@;'; put 'put ''ODkzOSwyODk0MCwyODk0MSwyODk0MiwyODk0MywyODk0NSwyODk0NiwyODk0OCwyODk1MSwyODk1NSwyODk1NiwyODk1NywyODk1OCwyODk1OSwyODk2MCwyODk2MSwyODk2MiwyODk2MywyODk2NCwyODk2NSwyODk2NywyODk2OCwyODk2OSwyODk3MCwyODk3MSwyODk3MiwyODk3MywyODk3''@;'; put 'put ''NCwyODk3OCwyODk3OSwyODk4MCwyODk4MSwyODk4MywyODk4NCwyODk4NSwyODk4NiwyODk4NywyODk4OCwyODk4OSwyODk5MCwyODk5MSwyODk5MiwyODk5MywyODk5NCwyODk5NSwyODk5NiwyODk5OCwyODk5OSwyOWUzLDI5MDAxLDI5MDAzLDI5MDA1LDI5MDA3LDI5MDA4LDI5MDA5LDI5''@;'; put 'put ''MDEwLDI5MDExLDI5MDEyLDI5MDEzLDI5MDE0LDI5MDE1LDI5MDE2LDI5MDE3LDI5MDE4LDI5MDE5LDI5MDIxLDI5MDIzLDI5MDI0LDI5MDI1LDI5MDI2LDI5MDI3LDI5MDI5LDI5MDMzLDI5MDM0LDI5MDM1LDI5MDM2LDI5MDM3LDI5MDM5LDI5MDQwLDI5MDQxLDI5MDQ0LDI5MDQ1LDI5MDQ2''@;'; put 'put ''LDI5MDQ3LDI5MDQ5LDI5MDUxLDI5MDUyLDI5MDU0LDI5MDU1LDI5MDU2LDI5MDU3LDI5MDU4LDI5MDU5LDI5MDYxLDI5MDYyLDI5MDYzLDI5MDY0LDI5MDY1LDI5MDY3LDI5MDY4LDI5MDY5LDI5MDcwLDI5MDcyLDI5MDczLDI5MDc0LDI5MDc1LDI5MDc3LDI5MDc4LDI5MDc5LDI5MDgyLDI5''@;'; put 'put ''MDgzLDI5MDg0LDI5MDg1LDI5MDg2LDI5MDg5LDI5MDkwLDI5MDkxLDI5MDkyLDI5MDkzLDI5MDk0LDI5MDk1LDI5MDk3LDI5MDk4LDI5MDk5LDI5MTAxLDI5MTAyLDI5MTAzLDI5MTA0LDI5MTA1LDI5MTA2LDI5MTA4LDI5MTEwLDI5MTExLDI5MTEyLDI5MTE0LDI5MTE1LDI5MTE2LDI5MTE3''@;'; put 'put ''LDI5MTE4LDI5MTE5LDI5MTIwLDI5MTIxLDI5MTIyLDI5MTI0LDI5MTI1LDI5MTI2LDI5MTI3LDI5MTI4LDI5MTI5LDI5MTMwLDI5MTMxLDI5MTMyLDI5MTMzLDI5MTM1LDI5MTM2LDI5MTM3LDI5MTM4LDI5MTM5LDI5MTQyLDI5MTQzLDI5MTQ0LDI5MTQ1LDI5MTQ2LDI5MTQ3LDI5MTQ4LDI5''@;'; put 'put ''MTQ5LDI5MTUwLDI5MTUxLDI5MTUzLDI5MTU0LDI5MTU1LDI5MTU2LDI5MTU4LDI5MTYwLDI5MTYxLDI5MTYyLDI5MTYzLDI5MTY0LDI5MTY1LDI5MTY3LDI5MTY4LDI5MTY5LDI5MTcwLDI5MTcxLDI5MTcyLDI5MTczLDI5MTc0LDI5MTc1LDI5MTc2LDI5MTc4LDI5MTc5LDI5MTgwLDI5MTgx''@;'; put 'put ''LDI5MTgyLDI5MTgzLDI5MTg0LDI5MTg1LDI5MTg2LDI5MTg3LDI5MTg4LDI5MTg5LDI5MTkxLDI5MTkyLDI5MTkzLDI5MTk0LDI5MTk1LDI5MTk2LDI5MTk3LDI5MTk4LDI5MTk5LDI5MjAwLDI5MjAxLDI5MjAyLDI5MjAzLDI5MjA0LDI5MjA1LDI5MjA2LDI5MjA3LDI5MjA4LDI5MjA5LDI5''@;'; put 'put ''MjEwLDI5MjExLDI5MjEyLDI5MjE0LDI5MjE1LDI5MjE2LDI5MjE3LDI5MjE4LDI5MjE5LDI5MjIwLDI5MjIxLDI5MjIyLDI5MjIzLDI5MjI1LDI5MjI3LDI5MjI5LDI5MjMwLDI5MjMxLDI5MjM0LDI5MjM1LDI5MjM2LDI5MjQyLDI5MjQ0LDI5MjQ2LDI5MjQ4LDI5MjQ5LDI5MjUwLDI5MjUx''@;'; put 'put ''LDI5MjUyLDI5MjUzLDI5MjU0LDI5MjU3LDI5MjU4LDI5MjU5LDI5MjYyLDI5MjYzLDI5MjY0LDI5MjY1LDI5MjY3LDI5MjY4LDI5MjY5LDI5MjcxLDI5MjcyLDI5Mjc0LDI5Mjc2LDI5Mjc4LDI5MjgwLDI5MjgzLDI5Mjg0LDI5Mjg1LDI5Mjg4LDI5MjkwLDI5MjkxLDI5MjkyLDI5MjkzLDI5''@;'; put 'put ''Mjk2LDI5Mjk3LDI5Mjk5LDI5MzAwLDI5MzAyLDI5MzAzLDI5MzA0LDI5MzA3LDI5MzA4LDI5MzA5LDI5MzE0LDI5MzE1LDI5MzE3LDI5MzE4LDI5MzE5LDI5MzIwLDI5MzIxLDI5MzI0LDI5MzI2LDI5MzI4LDI5MzI5LDI5MzMxLDI5MzMyLDI5MzMzLDI5MzM0LDI5MzM1LDI5MzM2LDI5MzM3''@;'; put 'put ''LDI5MzM4LDI5MzM5LDI5MzQwLDI5MzQxLDI5MzQyLDI5MzQ0LDI5MzQ1LDI5MzQ2LDI5MzQ3LDI5MzQ4LDI5MzQ5LDI5MzUwLDI5MzUxLDI5MzUyLDI5MzUzLDI5MzU0LDI5MzU1LDI5MzU4LDI5MzYxLDI5MzYyLDI5MzYzLDI5MzY1LDI5MzcwLDI5MzcxLDI5MzcyLDI5MzczLDI5Mzc0LDI5''@;'; put 'put ''Mzc1LDI5Mzc2LDI5MzgxLDI5MzgyLDI5MzgzLDI5Mzg1LDI5Mzg2LDI5Mzg3LDI5Mzg4LDI5MzkxLDI5MzkzLDI5Mzk1LDI5Mzk2LDI5Mzk3LDI5Mzk4LDI5NDAwLDI5NDAyLDI5NDAzLDU4NTY2LDU4NTY3LDU4NTY4LDU4NTY5LDU4NTcwLDU4NTcxLDU4NTcyLDU4NTczLDU4NTc0LDU4NTc1''@;'; put 'put ''LDU4NTc2LDU4NTc3LDU4NTc4LDU4NTc5LDU4NTgwLDU4NTgxLDU4NTgyLDU4NTgzLDU4NTg0LDU4NTg1LDU4NTg2LDU4NTg3LDU4NTg4LDU4NTg5LDU4NTkwLDU4NTkxLDU4NTkyLDU4NTkzLDU4NTk0LDU4NTk1LDU4NTk2LDU4NTk3LDU4NTk4LDU4NTk5LDU4NjAwLDU4NjAxLDU4NjAyLDU4''@;'; put 'put ''NjAzLDU4NjA0LDU4NjA1LDU4NjA2LDU4NjA3LDU4NjA4LDU4NjA5LDU4NjEwLDU4NjExLDU4NjEyLDU4NjEzLDU4NjE0LDU4NjE1LDU4NjE2LDU4NjE3LDU4NjE4LDU4NjE5LDU4NjIwLDU4NjIxLDU4NjIyLDU4NjIzLDU4NjI0LDU4NjI1LDU4NjI2LDU4NjI3LDU4NjI4LDU4NjI5LDU4NjMw''@;'; put 'put ''LDU4NjMxLDU4NjMyLDU4NjMzLDU4NjM0LDU4NjM1LDU4NjM2LDU4NjM3LDU4NjM4LDU4NjM5LDU4NjQwLDU4NjQxLDU4NjQyLDU4NjQzLDU4NjQ0LDU4NjQ1LDU4NjQ2LDU4NjQ3LDU4NjQ4LDU4NjQ5LDU4NjUwLDU4NjUxLDU4NjUyLDU4NjUzLDU4NjU0LDU4NjU1LDU4NjU2LDU4NjU3LDU4''@;'; put 'put ''NjU4LDU4NjU5LDU4NjYwLDU4NjYxLDEyMjg4LDEyMjg5LDEyMjkwLDE4Myw3MTMsNzExLDE2OCwxMjI5MSwxMjI5Myw4MjEyLDY1Mzc0LDgyMTQsODIzMCw4MjE2LDgyMTcsODIyMCw4MjIxLDEyMzA4LDEyMzA5LDEyMjk2LDEyMjk3LDEyMjk4LDEyMjk5LDEyMzAwLDEyMzAxLDEyMzAyLDEy''@;'; put 'put ''MzAzLDEyMzEwLDEyMzExLDEyMzA0LDEyMzA1LDE3NywyMTUsMjQ3LDg3NTgsODc0Myw4NzQ0LDg3MjEsODcxOSw4NzQ2LDg3NDUsODcxMiw4NzU5LDg3MzAsODg2OSw4NzQxLDg3MzYsODk3OCw4ODU3LDg3NDcsODc1MCw4ODAxLDg3ODAsODc3Niw4NzY1LDg3MzMsODgwMCw4ODE0LDg4MTUs''@;'; put 'put ''ODgwNCw4ODA1LDg3MzQsODc1Nyw4NzU2LDk3OTQsOTc5MiwxNzYsODI0Miw4MjQzLDg0NTEsNjUyODQsMTY0LDY1NTA0LDY1NTA1LDgyNDAsMTY3LDg0NzAsOTczNCw5NzMzLDk2NzUsOTY3OSw5Njc4LDk2NzEsOTY3MCw5NjMzLDk2MzIsOTY1MSw5NjUwLDgyNTEsODU5NCw4NTkyLDg1OTMs''@;'; put 'put ''ODU5NSwxMjMwNyw1ODY2Miw1ODY2Myw1ODY2NCw1ODY2NSw1ODY2Niw1ODY2Nyw1ODY2OCw1ODY2OSw1ODY3MCw1ODY3MSw1ODY3Miw1ODY3Myw1ODY3NCw1ODY3NSw1ODY3Niw1ODY3Nyw1ODY3OCw1ODY3OSw1ODY4MCw1ODY4MSw1ODY4Miw1ODY4Myw1ODY4NCw1ODY4NSw1ODY4Niw1ODY4''@;'; put 'put ''Nyw1ODY4OCw1ODY4OSw1ODY5MCw1ODY5MSw1ODY5Miw1ODY5Myw1ODY5NCw1ODY5NSw1ODY5Niw1ODY5Nyw1ODY5OCw1ODY5OSw1ODcwMCw1ODcwMSw1ODcwMiw1ODcwMyw1ODcwNCw1ODcwNSw1ODcwNiw1ODcwNyw1ODcwOCw1ODcwOSw1ODcxMCw1ODcxMSw1ODcxMiw1ODcxMyw1ODcxNCw1''@;'; put 'put ''ODcxNSw1ODcxNiw1ODcxNyw1ODcxOCw1ODcxOSw1ODcyMCw1ODcyMSw1ODcyMiw1ODcyMyw1ODcyNCw1ODcyNSw1ODcyNiw1ODcyNyw1ODcyOCw1ODcyOSw1ODczMCw1ODczMSw1ODczMiw1ODczMyw1ODczNCw1ODczNSw1ODczNiw1ODczNyw1ODczOCw1ODczOSw1ODc0MCw1ODc0MSw1ODc0''@;'; put 'put ''Miw1ODc0Myw1ODc0NCw1ODc0NSw1ODc0Niw1ODc0Nyw1ODc0OCw1ODc0OSw1ODc1MCw1ODc1MSw1ODc1Miw1ODc1Myw1ODc1NCw1ODc1NSw1ODc1Niw1ODc1Nyw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2NSw4NTY2LDg1NjcsODU2OCw4NTY5LDU5MjM4LDU5MjM5LDU5MjQwLDU5MjQx''@;'; put 'put ''LDU5MjQyLDU5MjQzLDkzNTIsOTM1Myw5MzU0LDkzNTUsOTM1Niw5MzU3LDkzNTgsOTM1OSw5MzYwLDkzNjEsOTM2Miw5MzYzLDkzNjQsOTM2NSw5MzY2LDkzNjcsOTM2OCw5MzY5LDkzNzAsOTM3MSw5MzMyLDkzMzMsOTMzNCw5MzM1LDkzMzYsOTMzNyw5MzM4LDkzMzksOTM0MCw5MzQxLDkz''@;'; put 'put ''NDIsOTM0Myw5MzQ0LDkzNDUsOTM0Niw5MzQ3LDkzNDgsOTM0OSw5MzUwLDkzNTEsOTMxMiw5MzEzLDkzMTQsOTMxNSw5MzE2LDkzMTcsOTMxOCw5MzE5LDkzMjAsOTMyMSw4MzY0LDU5MjQ1LDEyODMyLDEyODMzLDEyODM0LDEyODM1LDEyODM2LDEyODM3LDEyODM4LDEyODM5LDEyODQwLDEy''@;'; put 'put ''ODQxLDU5MjQ2LDU5MjQ3LDg1NDQsODU0NSw4NTQ2LDg1NDcsODU0OCw4NTQ5LDg1NTAsODU1MSw4NTUyLDg1NTMsODU1NCw4NTU1LDU5MjQ4LDU5MjQ5LDU4NzU4LDU4NzU5LDU4NzYwLDU4NzYxLDU4NzYyLDU4NzYzLDU4NzY0LDU4NzY1LDU4NzY2LDU4NzY3LDU4NzY4LDU4NzY5LDU4Nzcw''@;'; put 'put ''LDU4NzcxLDU4NzcyLDU4NzczLDU4Nzc0LDU4Nzc1LDU4Nzc2LDU4Nzc3LDU4Nzc4LDU4Nzc5LDU4NzgwLDU4NzgxLDU4NzgyLDU4NzgzLDU4Nzg0LDU4Nzg1LDU4Nzg2LDU4Nzg3LDU4Nzg4LDU4Nzg5LDU4NzkwLDU4NzkxLDU4NzkyLDU4NzkzLDU4Nzk0LDU4Nzk1LDU4Nzk2LDU4Nzk3LDU4''@;'; put 'put ''Nzk4LDU4Nzk5LDU4ODAwLDU4ODAxLDU4ODAyLDU4ODAzLDU4ODA0LDU4ODA1LDU4ODA2LDU4ODA3LDU4ODA4LDU4ODA5LDU4ODEwLDU4ODExLDU4ODEyLDU4ODEzLDU4ODE0LDU4ODE1LDU4ODE2LDU4ODE3LDU4ODE4LDU4ODE5LDU4ODIwLDU4ODIxLDU4ODIyLDU4ODIzLDU4ODI0LDU4ODI1''@;'; put 'put ''LDU4ODI2LDU4ODI3LDU4ODI4LDU4ODI5LDU4ODMwLDU4ODMxLDU4ODMyLDU4ODMzLDU4ODM0LDU4ODM1LDU4ODM2LDU4ODM3LDU4ODM4LDU4ODM5LDU4ODQwLDU4ODQxLDU4ODQyLDU4ODQzLDU4ODQ0LDU4ODQ1LDU4ODQ2LDU4ODQ3LDU4ODQ4LDU4ODQ5LDU4ODUwLDU4ODUxLDU4ODUyLDEy''@;'; put 'put ''Mjg4LDY1MjgxLDY1MjgyLDY1MjgzLDY1NTA5LDY1Mjg1LDY1Mjg2LDY1Mjg3LDY1Mjg4LDY1Mjg5LDY1MjkwLDY1MjkxLDY1MjkyLDY1MjkzLDY1Mjk0LDY1Mjk1LDY1Mjk2LDY1Mjk3LDY1Mjk4LDY1Mjk5LDY1MzAwLDY1MzAxLDY1MzAyLDY1MzAzLDY1MzA0LDY1MzA1LDY1MzA2LDY1MzA3''@;'; put 'put ''LDY1MzA4LDY1MzA5LDY1MzEwLDY1MzExLDY1MzEyLDY1MzEzLDY1MzE0LDY1MzE1LDY1MzE2LDY1MzE3LDY1MzE4LDY1MzE5LDY1MzIwLDY1MzIxLDY1MzIyLDY1MzIzLDY1MzI0LDY1MzI1LDY1MzI2LDY1MzI3LDY1MzI4LDY1MzI5LDY1MzMwLDY1MzMxLDY1MzMyLDY1MzMzLDY1MzM0LDY1''@;'; put 'put ''MzM1LDY1MzM2LDY1MzM3LDY1MzM4LDY1MzM5LDY1MzQwLDY1MzQxLDY1MzQyLDY1MzQzLDY1MzQ0LDY1MzQ1LDY1MzQ2LDY1MzQ3LDY1MzQ4LDY1MzQ5LDY1MzUwLDY1MzUxLDY1MzUyLDY1MzUzLDY1MzU0LDY1MzU1LDY1MzU2LDY1MzU3LDY1MzU4LDY1MzU5LDY1MzYwLDY1MzYxLDY1MzYy''@;'; put 'put ''LDY1MzYzLDY1MzY0LDY1MzY1LDY1MzY2LDY1MzY3LDY1MzY4LDY1MzY5LDY1MzcwLDY1MzcxLDY1MzcyLDY1MzczLDY1NTA3LDU4ODU0LDU4ODU1LDU4ODU2LDU4ODU3LDU4ODU4LDU4ODU5LDU4ODYwLDU4ODYxLDU4ODYyLDU4ODYzLDU4ODY0LDU4ODY1LDU4ODY2LDU4ODY3LDU4ODY4LDU4''@;'; put 'put ''ODY5LDU4ODcwLDU4ODcxLDU4ODcyLDU4ODczLDU4ODc0LDU4ODc1LDU4ODc2LDU4ODc3LDU4ODc4LDU4ODc5LDU4ODgwLDU4ODgxLDU4ODgyLDU4ODgzLDU4ODg0LDU4ODg1LDU4ODg2LDU4ODg3LDU4ODg4LDU4ODg5LDU4ODkwLDU4ODkxLDU4ODkyLDU4ODkzLDU4ODk0LDU4ODk1LDU4ODk2''@;'; put 'put ''LDU4ODk3LDU4ODk4LDU4ODk5LDU4OTAwLDU4OTAxLDU4OTAyLDU4OTAzLDU4OTA0LDU4OTA1LDU4OTA2LDU4OTA3LDU4OTA4LDU4OTA5LDU4OTEwLDU4OTExLDU4OTEyLDU4OTEzLDU4OTE0LDU4OTE1LDU4OTE2LDU4OTE3LDU4OTE4LDU4OTE5LDU4OTIwLDU4OTIxLDU4OTIyLDU4OTIzLDU4''@;'; put 'put ''OTI0LDU4OTI1LDU4OTI2LDU4OTI3LDU4OTI4LDU4OTI5LDU4OTMwLDU4OTMxLDU4OTMyLDU4OTMzLDU4OTM0LDU4OTM1LDU4OTM2LDU4OTM3LDU4OTM4LDU4OTM5LDU4OTQwLDU4OTQxLDU4OTQyLDU4OTQzLDU4OTQ0LDU4OTQ1LDU4OTQ2LDU4OTQ3LDU4OTQ4LDU4OTQ5LDEyMzUzLDEyMzU0''@;'; put 'put ''LDEyMzU1LDEyMzU2LDEyMzU3LDEyMzU4LDEyMzU5LDEyMzYwLDEyMzYxLDEyMzYyLDEyMzYzLDEyMzY0LDEyMzY1LDEyMzY2LDEyMzY3LDEyMzY4LDEyMzY5LDEyMzcwLDEyMzcxLDEyMzcyLDEyMzczLDEyMzc0LDEyMzc1LDEyMzc2LDEyMzc3LDEyMzc4LDEyMzc5LDEyMzgwLDEyMzgxLDEy''@;'; put 'put ''MzgyLDEyMzgzLDEyMzg0LDEyMzg1LDEyMzg2LDEyMzg3LDEyMzg4LDEyMzg5LDEyMzkwLDEyMzkxLDEyMzkyLDEyMzkzLDEyMzk0LDEyMzk1LDEyMzk2LDEyMzk3LDEyMzk4LDEyMzk5LDEyNDAwLDEyNDAxLDEyNDAyLDEyNDAzLDEyNDA0LDEyNDA1LDEyNDA2LDEyNDA3LDEyNDA4LDEyNDA5''@;'; put 'put ''LDEyNDEwLDEyNDExLDEyNDEyLDEyNDEzLDEyNDE0LDEyNDE1LDEyNDE2LDEyNDE3LDEyNDE4LDEyNDE5LDEyNDIwLDEyNDIxLDEyNDIyLDEyNDIzLDEyNDI0LDEyNDI1LDEyNDI2LDEyNDI3LDEyNDI4LDEyNDI5LDEyNDMwLDEyNDMxLDEyNDMyLDEyNDMzLDEyNDM0LDEyNDM1LDU5MjUwLDU5''@;'; put 'put ''MjUxLDU5MjUyLDU5MjUzLDU5MjU0LDU5MjU1LDU5MjU2LDU5MjU3LDU5MjU4LDU5MjU5LDU5MjYwLDU4OTUwLDU4OTUxLDU4OTUyLDU4OTUzLDU4OTU0LDU4OTU1LDU4OTU2LDU4OTU3LDU4OTU4LDU4OTU5LDU4OTYwLDU4OTYxLDU4OTYyLDU4OTYzLDU4OTY0LDU4OTY1LDU4OTY2LDU4OTY3''@;'; put 'put ''LDU4OTY4LDU4OTY5LDU4OTcwLDU4OTcxLDU4OTcyLDU4OTczLDU4OTc0LDU4OTc1LDU4OTc2LDU4OTc3LDU4OTc4LDU4OTc5LDU4OTgwLDU4OTgxLDU4OTgyLDU4OTgzLDU4OTg0LDU4OTg1LDU4OTg2LDU4OTg3LDU4OTg4LDU4OTg5LDU4OTkwLDU4OTkxLDU4OTkyLDU4OTkzLDU4OTk0LDU4''@;'; put 'put ''OTk1LDU4OTk2LDU4OTk3LDU4OTk4LDU4OTk5LDU5ZTMsNTkwMDEsNTkwMDIsNTkwMDMsNTkwMDQsNTkwMDUsNTkwMDYsNTkwMDcsNTkwMDgsNTkwMDksNTkwMTAsNTkwMTEsNTkwMTIsNTkwMTMsNTkwMTQsNTkwMTUsNTkwMTYsNTkwMTcsNTkwMTgsNTkwMTksNTkwMjAsNTkwMjEsNTkwMjIs''@;'; put 'put ''NTkwMjMsNTkwMjQsNTkwMjUsNTkwMjYsNTkwMjcsNTkwMjgsNTkwMjksNTkwMzAsNTkwMzEsNTkwMzIsNTkwMzMsNTkwMzQsNTkwMzUsNTkwMzYsNTkwMzcsNTkwMzgsNTkwMzksNTkwNDAsNTkwNDEsNTkwNDIsNTkwNDMsNTkwNDQsNTkwNDUsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0''@;'; put 'put ''NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAs''@;'; put 'put ''MTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1''@;'; put 'put ''MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsNTkyNjEs''@;'; put 'put ''NTkyNjIsNTkyNjMsNTkyNjQsNTkyNjUsNTkyNjYsNTkyNjcsNTkyNjgsNTkwNDYsNTkwNDcsNTkwNDgsNTkwNDksNTkwNTAsNTkwNTEsNTkwNTIsNTkwNTMsNTkwNTQsNTkwNTUsNTkwNTYsNTkwNTcsNTkwNTgsNTkwNTksNTkwNjAsNTkwNjEsNTkwNjIsNTkwNjMsNTkwNjQsNTkwNjUsNTkw''@;'; put 'put ''NjYsNTkwNjcsNTkwNjgsNTkwNjksNTkwNzAsNTkwNzEsNTkwNzIsNTkwNzMsNTkwNzQsNTkwNzUsNTkwNzYsNTkwNzcsNTkwNzgsNTkwNzksNTkwODAsNTkwODEsNTkwODIsNTkwODMsNTkwODQsNTkwODUsNTkwODYsNTkwODcsNTkwODgsNTkwODksNTkwOTAsNTkwOTEsNTkwOTIsNTkwOTMs''@;'; put 'put ''NTkwOTQsNTkwOTUsNTkwOTYsNTkwOTcsNTkwOTgsNTkwOTksNTkxMDAsNTkxMDEsNTkxMDIsNTkxMDMsNTkxMDQsNTkxMDUsNTkxMDYsNTkxMDcsNTkxMDgsNTkxMDksNTkxMTAsNTkxMTEsNTkxMTIsNTkxMTMsNTkxMTQsNTkxMTUsNTkxMTYsNTkxMTcsNTkxMTgsNTkxMTksNTkxMjAsNTkx''@;'; put 'put ''MjEsNTkxMjIsNTkxMjMsNTkxMjQsNTkxMjUsNTkxMjYsNTkxMjcsNTkxMjgsNTkxMjksNTkxMzAsNTkxMzEsNTkxMzIsNTkxMzMsNTkxMzQsNTkxMzUsNTkxMzYsNTkxMzcsNTkxMzgsNTkxMzksNTkxNDAsNTkxNDEsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDky''@;'; put 'put ''Myw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsNTkyNjksNTkyNzAsNTkyNzEsNTkyNzIsNTkyNzMsNTkyNzQsNTkyNzUsNTkyNzYsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYw''@;'; put 'put ''LDk2MSw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksNTkyNzcsNTkyNzgsNTkyNzksNTkyODAsNTkyODEsNTkyODIsNTkyODMsNjUwNzcsNjUwNzgsNjUwODEsNjUwODIsNjUwODcsNjUwODgsNjUwODUsNjUwODYsNjUwODksNjUwOTAsNjUwOTEsNjUwOTIsNTkyODQsNTkyODUsNjUwODMs''@;'; put 'put ''NjUwODQsNjUwNzksNjUwODAsNjUwNzMsNTkyODYsNjUwNzUsNjUwNzYsNTkyODcsNTkyODgsNTkyODksNTkyOTAsNTkyOTEsNTkyOTIsNTkyOTMsNTkyOTQsNTkyOTUsNTkxNDIsNTkxNDMsNTkxNDQsNTkxNDUsNTkxNDYsNTkxNDcsNTkxNDgsNTkxNDksNTkxNTAsNTkxNTEsNTkxNTIsNTkx''@;'; put 'put ''NTMsNTkxNTQsNTkxNTUsNTkxNTYsNTkxNTcsNTkxNTgsNTkxNTksNTkxNjAsNTkxNjEsNTkxNjIsNTkxNjMsNTkxNjQsNTkxNjUsNTkxNjYsNTkxNjcsNTkxNjgsNTkxNjksNTkxNzAsNTkxNzEsNTkxNzIsNTkxNzMsNTkxNzQsNTkxNzUsNTkxNzYsNTkxNzcsNTkxNzgsNTkxNzksNTkxODAs''@;'; put 'put ''NTkxODEsNTkxODIsNTkxODMsNTkxODQsNTkxODUsNTkxODYsNTkxODcsNTkxODgsNTkxODksNTkxOTAsNTkxOTEsNTkxOTIsNTkxOTMsNTkxOTQsNTkxOTUsNTkxOTYsNTkxOTcsNTkxOTgsNTkxOTksNTkyMDAsNTkyMDEsNTkyMDIsNTkyMDMsNTkyMDQsNTkyMDUsNTkyMDYsNTkyMDcsNTky''@;'; put 'put ''MDgsNTkyMDksNTkyMTAsNTkyMTEsNTkyMTIsNTkyMTMsNTkyMTQsNTkyMTUsNTkyMTYsNTkyMTcsNTkyMTgsNTkyMTksNTkyMjAsNTkyMjEsNTkyMjIsNTkyMjMsNTkyMjQsNTkyMjUsNTkyMjYsNTkyMjcsNTkyMjgsNTkyMjksNTkyMzAsNTkyMzEsNTkyMzIsNTkyMzMsNTkyMzQsNTkyMzUs''@;'; put 'put ''NTkyMzYsNTkyMzcsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2''@;'; put 'put ''OSwxMDcwLDEwNzEsNTkyOTYsNTkyOTcsNTkyOTgsNTkyOTksNTkzMDAsNTkzMDEsNTkzMDIsNTkzMDMsNTkzMDQsNTkzMDUsNTkzMDYsNTkzMDcsNTkzMDgsNTkzMDksNTkzMTAsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4''@;'; put 'put ''MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsNTkzMTEsNTkzMTIsNTkzMTMsNTkzMTQsNTkzMTUsNTkzMTYsNTkzMTcsNTkzMTgsNTkzMTksNTkzMjAsNTkz''@;'; put 'put ''MjEsNTkzMjIsNTkzMjMsNzE0LDcxNSw3MjksODIxMSw4MjEzLDgyMjksODI0NSw4NDUzLDg0NTcsODU5OCw4NTk5LDg2MDAsODYwMSw4NzI1LDg3MzUsODczOSw4Nzg2LDg4MDYsODgwNyw4ODk1LDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2''@;'; put 'put ''Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NTgxLDk1ODIsOTU4Myw5NTg0LDk1ODUsOTU4Niw5NTg3LDk2MDEsOTYwMiw5NjAzLDk2MDQsOTYwNSw5NjA2LDk2MDcsOTYw''@;'; put 'put ''OCw5NjA5LDk2MTAsOTYxMSw5NjEyLDk2MTMsOTYxNCw5NjE1LDk2MTksOTYyMCw5NjIxLDk2NjAsOTY2MSw5Njk4LDk2OTksOTcwMCw5NzAxLDk3MzcsODg1MywxMjMwNiwxMjMxNywxMjMxOCw1OTMyNCw1OTMyNSw1OTMyNiw1OTMyNyw1OTMyOCw1OTMyOSw1OTMzMCw1OTMzMSw1OTMzMiw1''@;'; put 'put ''OTMzMyw1OTMzNCwyNTcsMjI1LDQ2MiwyMjQsMjc1LDIzMywyODMsMjMyLDI5OSwyMzcsNDY0LDIzNiwzMzMsMjQzLDQ2NiwyNDIsMzYzLDI1MCw0NjgsMjQ5LDQ3MCw0NzIsNDc0LDQ3NiwyNTIsMjM0LDU5Myw3NzQzLDMyNCwzMjgsNTA1LDYwOSw1OTMzNyw1OTMzOCw1OTMzOSw1OTM0MCwx''@;'; put 'put ''MjU0OSwxMjU1MCwxMjU1MSwxMjU1MiwxMjU1MywxMjU1NCwxMjU1NSwxMjU1NiwxMjU1NywxMjU1OCwxMjU1OSwxMjU2MCwxMjU2MSwxMjU2MiwxMjU2MywxMjU2NCwxMjU2NSwxMjU2NiwxMjU2NywxMjU2OCwxMjU2OSwxMjU3MCwxMjU3MSwxMjU3MiwxMjU3MywxMjU3NCwxMjU3NSwxMjU3''@;'; put 'put ''NiwxMjU3NywxMjU3OCwxMjU3OSwxMjU4MCwxMjU4MSwxMjU4MiwxMjU4MywxMjU4NCwxMjU4NSw1OTM0MSw1OTM0Miw1OTM0Myw1OTM0NCw1OTM0NSw1OTM0Niw1OTM0Nyw1OTM0OCw1OTM0OSw1OTM1MCw1OTM1MSw1OTM1Miw1OTM1Myw1OTM1NCw1OTM1NSw1OTM1Niw1OTM1Nyw1OTM1OCw1''@;'; put 'put ''OTM1OSw1OTM2MCw1OTM2MSwxMjMyMSwxMjMyMiwxMjMyMywxMjMyNCwxMjMyNSwxMjMyNiwxMjMyNywxMjMyOCwxMjMyOSwxMjk2MywxMzE5OCwxMzE5OSwxMzIxMiwxMzIxMywxMzIxNCwxMzIxNywxMzI1MiwxMzI2MiwxMzI2NSwxMzI2NiwxMzI2OSw2NTA3Miw2NTUwNiw2NTUwOCw1OTM2''@;'; put 'put ''Miw4NDgxLDEyODQ5LDU5MzYzLDgyMDgsNTkzNjQsNTkzNjUsNTkzNjYsMTI1NDAsMTI0NDMsMTI0NDQsMTI1NDEsMTI1NDIsMTIyOTQsMTI0NDUsMTI0NDYsNjUwOTcsNjUwOTgsNjUwOTksNjUxMDAsNjUxMDEsNjUxMDIsNjUxMDMsNjUxMDQsNjUxMDUsNjUxMDYsNjUxMDgsNjUxMDksNjUx''@;'; put 'put ''MTAsNjUxMTEsNjUxMTMsNjUxMTQsNjUxMTUsNjUxMTYsNjUxMTcsNjUxMTgsNjUxMTksNjUxMjAsNjUxMjEsNjUxMjIsNjUxMjMsNjUxMjQsNjUxMjUsNjUxMjYsNjUxMjgsNjUxMjksNjUxMzAsNjUxMzEsMTIzNTAsMTIyNzIsMTIyNzMsMTIyNzQsMTIyNzUsMTIyNzYsMTIyNzcsMTIyNzgs''@;'; put 'put ''MTIyNzksMTIyODAsMTIyODEsMTIyODIsMTIyODMsMTIyOTUsNTkzODAsNTkzODEsNTkzODIsNTkzODMsNTkzODQsNTkzODUsNTkzODYsNTkzODcsNTkzODgsNTkzODksNTkzOTAsNTkzOTEsNTkzOTIsOTQ3Miw5NDczLDk0NzQsOTQ3NSw5NDc2LDk0NzcsOTQ3OCw5NDc5LDk0ODAsOTQ4MSw5''@;'; put 'put ''NDgyLDk0ODMsOTQ4NCw5NDg1LDk0ODYsOTQ4Nyw5NDg4LDk0ODksOTQ5MCw5NDkxLDk0OTIsOTQ5Myw5NDk0LDk0OTUsOTQ5Niw5NDk3LDk0OTgsOTQ5OSw5NTAwLDk1MDEsOTUwMiw5NTAzLDk1MDQsOTUwNSw5NTA2LDk1MDcsOTUwOCw5NTA5LDk1MTAsOTUxMSw5NTEyLDk1MTMsOTUxNCw5''@;'; put 'put ''NTE1LDk1MTYsOTUxNyw5NTE4LDk1MTksOTUyMCw5NTIxLDk1MjIsOTUyMyw5NTI0LDk1MjUsOTUyNiw5NTI3LDk1MjgsOTUyOSw5NTMwLDk1MzEsOTUzMiw5NTMzLDk1MzQsOTUzNSw5NTM2LDk1MzcsOTUzOCw5NTM5LDk1NDAsOTU0MSw5NTQyLDk1NDMsOTU0NCw5NTQ1LDk1NDYsOTU0Nyw1''@;'; put 'put ''OTM5Myw1OTM5NCw1OTM5NSw1OTM5Niw1OTM5Nyw1OTM5OCw1OTM5OSw1OTQwMCw1OTQwMSw1OTQwMiw1OTQwMyw1OTQwNCw1OTQwNSw1OTQwNiw1OTQwNywyOTQwNCwyOTQwNSwyOTQwNywyOTQxMCwyOTQxMSwyOTQxMiwyOTQxMywyOTQxNCwyOTQxNSwyOTQxOCwyOTQxOSwyOTQyOSwyOTQz''@;'; put 'put ''MCwyOTQzMywyOTQzNywyOTQzOCwyOTQzOSwyOTQ0MCwyOTQ0MiwyOTQ0NCwyOTQ0NSwyOTQ0NiwyOTQ0NywyOTQ0OCwyOTQ0OSwyOTQ1MSwyOTQ1MiwyOTQ1MywyOTQ1NSwyOTQ1NiwyOTQ1NywyOTQ1OCwyOTQ2MCwyOTQ2NCwyOTQ2NSwyOTQ2NiwyOTQ3MSwyOTQ3MiwyOTQ3NSwyOTQ3Niwy''@;'; put 'put ''OTQ3OCwyOTQ3OSwyOTQ4MCwyOTQ4NSwyOTQ4NywyOTQ4OCwyOTQ5MCwyOTQ5MSwyOTQ5MywyOTQ5NCwyOTQ5OCwyOTQ5OSwyOTUwMCwyOTUwMSwyOTUwNCwyOTUwNSwyOTUwNiwyOTUwNywyOTUwOCwyOTUwOSwyOTUxMCwyOTUxMSwyOTUxMiwyOTUxMywyOTUxNCwyOTUxNSwyOTUxNiwyOTUx''@;'; put 'put ''OCwyOTUxOSwyOTUyMSwyOTUyMywyOTUyNCwyOTUyNSwyOTUyNiwyOTUyOCwyOTUyOSwyOTUzMCwyOTUzMSwyOTUzMiwyOTUzMywyOTUzNCwyOTUzNSwyOTUzNywyOTUzOCwyOTUzOSwyOTU0MCwyOTU0MSwyOTU0MiwyOTU0MywyOTU0NCwyOTU0NSwyOTU0NiwyOTU0NywyOTU1MCwyOTU1Miwy''@;'; put 'put ''OTU1Myw1NzM0NCw1NzM0NSw1NzM0Niw1NzM0Nyw1NzM0OCw1NzM0OSw1NzM1MCw1NzM1MSw1NzM1Miw1NzM1Myw1NzM1NCw1NzM1NSw1NzM1Niw1NzM1Nyw1NzM1OCw1NzM1OSw1NzM2MCw1NzM2MSw1NzM2Miw1NzM2Myw1NzM2NCw1NzM2NSw1NzM2Niw1NzM2Nyw1NzM2OCw1NzM2OSw1NzM3''@;'; put 'put ''MCw1NzM3MSw1NzM3Miw1NzM3Myw1NzM3NCw1NzM3NSw1NzM3Niw1NzM3Nyw1NzM3OCw1NzM3OSw1NzM4MCw1NzM4MSw1NzM4Miw1NzM4Myw1NzM4NCw1NzM4NSw1NzM4Niw1NzM4Nyw1NzM4OCw1NzM4OSw1NzM5MCw1NzM5MSw1NzM5Miw1NzM5Myw1NzM5NCw1NzM5NSw1NzM5Niw1NzM5Nyw1''@;'; put 'put ''NzM5OCw1NzM5OSw1NzQwMCw1NzQwMSw1NzQwMiw1NzQwMyw1NzQwNCw1NzQwNSw1NzQwNiw1NzQwNyw1NzQwOCw1NzQwOSw1NzQxMCw1NzQxMSw1NzQxMiw1NzQxMyw1NzQxNCw1NzQxNSw1NzQxNiw1NzQxNyw1NzQxOCw1NzQxOSw1NzQyMCw1NzQyMSw1NzQyMiw1NzQyMyw1NzQyNCw1NzQy''@;'; put 'put ''NSw1NzQyNiw1NzQyNyw1NzQyOCw1NzQyOSw1NzQzMCw1NzQzMSw1NzQzMiw1NzQzMyw1NzQzNCw1NzQzNSw1NzQzNiw1NzQzNywyOTU1NCwyOTU1NSwyOTU1NiwyOTU1NywyOTU1OCwyOTU1OSwyOTU2MCwyOTU2MSwyOTU2MiwyOTU2MywyOTU2NCwyOTU2NSwyOTU2NywyOTU2OCwyOTU2OSwy''@;'; put 'put ''OTU3MCwyOTU3MSwyOTU3MywyOTU3NCwyOTU3NiwyOTU3OCwyOTU4MCwyOTU4MSwyOTU4MywyOTU4NCwyOTU4NiwyOTU4NywyOTU4OCwyOTU4OSwyOTU5MSwyOTU5MiwyOTU5MywyOTU5NCwyOTU5NiwyOTU5NywyOTU5OCwyOTYwMCwyOTYwMSwyOTYwMywyOTYwNCwyOTYwNSwyOTYwNiwyOTYw''@;'; put 'put ''NywyOTYwOCwyOTYxMCwyOTYxMiwyOTYxMywyOTYxNywyOTYyMCwyOTYyMSwyOTYyMiwyOTYyNCwyOTYyNSwyOTYyOCwyOTYyOSwyOTYzMCwyOTYzMSwyOTYzMywyOTYzNSwyOTYzNiwyOTYzNywyOTYzOCwyOTYzOSwyOTY0MywyOTY0NCwyOTY0NiwyOTY1MCwyOTY1MSwyOTY1MiwyOTY1Mywy''@;'; put 'put ''OTY1NCwyOTY1NSwyOTY1NiwyOTY1OCwyOTY1OSwyOTY2MCwyOTY2MSwyOTY2MywyOTY2NSwyOTY2NiwyOTY2NywyOTY2OCwyOTY3MCwyOTY3MiwyOTY3NCwyOTY3NSwyOTY3NiwyOTY3OCwyOTY3OSwyOTY4MCwyOTY4MSwyOTY4MywyOTY4NCwyOTY4NSwyOTY4NiwyOTY4Nyw1NzQzOCw1NzQz''@;'; put 'put ''OSw1NzQ0MCw1NzQ0MSw1NzQ0Miw1NzQ0Myw1NzQ0NCw1NzQ0NSw1NzQ0Niw1NzQ0Nyw1NzQ0OCw1NzQ0OSw1NzQ1MCw1NzQ1MSw1NzQ1Miw1NzQ1Myw1NzQ1NCw1NzQ1NSw1NzQ1Niw1NzQ1Nyw1NzQ1OCw1NzQ1OSw1NzQ2MCw1NzQ2MSw1NzQ2Miw1NzQ2Myw1NzQ2NCw1NzQ2NSw1NzQ2Niw1''@;'; put 'put ''NzQ2Nyw1NzQ2OCw1NzQ2OSw1NzQ3MCw1NzQ3MSw1NzQ3Miw1NzQ3Myw1NzQ3NCw1NzQ3NSw1NzQ3Niw1NzQ3Nyw1NzQ3OCw1NzQ3OSw1NzQ4MCw1NzQ4MSw1NzQ4Miw1NzQ4Myw1NzQ4NCw1NzQ4NSw1NzQ4Niw1NzQ4Nyw1NzQ4OCw1NzQ4OSw1NzQ5MCw1NzQ5MSw1NzQ5Miw1NzQ5Myw1NzQ5''@;'; put 'put ''NCw1NzQ5NSw1NzQ5Niw1NzQ5Nyw1NzQ5OCw1NzQ5OSw1NzUwMCw1NzUwMSw1NzUwMiw1NzUwMyw1NzUwNCw1NzUwNSw1NzUwNiw1NzUwNyw1NzUwOCw1NzUwOSw1NzUxMCw1NzUxMSw1NzUxMiw1NzUxMyw1NzUxNCw1NzUxNSw1NzUxNiw1NzUxNyw1NzUxOCw1NzUxOSw1NzUyMCw1NzUyMSw1''@;'; put 'put ''NzUyMiw1NzUyMyw1NzUyNCw1NzUyNSw1NzUyNiw1NzUyNyw1NzUyOCw1NzUyOSw1NzUzMCw1NzUzMSwyOTY4OCwyOTY4OSwyOTY5MCwyOTY5MSwyOTY5MiwyOTY5MywyOTY5NCwyOTY5NSwyOTY5NiwyOTY5NywyOTY5OCwyOTcwMCwyOTcwMywyOTcwNCwyOTcwNywyOTcwOCwyOTcwOSwyOTcx''@;'; put 'put ''MCwyOTcxMywyOTcxNCwyOTcxNSwyOTcxNiwyOTcxNywyOTcxOCwyOTcxOSwyOTcyMCwyOTcyMSwyOTcyNCwyOTcyNSwyOTcyNiwyOTcyNywyOTcyOCwyOTcyOSwyOTczMSwyOTczMiwyOTczNSwyOTczNywyOTczOSwyOTc0MSwyOTc0MywyOTc0NSwyOTc0NiwyOTc1MSwyOTc1MiwyOTc1Mywy''@;'; put 'put ''OTc1NCwyOTc1NSwyOTc1NywyOTc1OCwyOTc1OSwyOTc2MCwyOTc2MiwyOTc2MywyOTc2NCwyOTc2NSwyOTc2NiwyOTc2NywyOTc2OCwyOTc2OSwyOTc3MCwyOTc3MSwyOTc3MiwyOTc3MywyOTc3NCwyOTc3NSwyOTc3NiwyOTc3NywyOTc3OCwyOTc3OSwyOTc4MCwyOTc4MiwyOTc4NCwyOTc4''@;'; put 'put ''OSwyOTc5MiwyOTc5MywyOTc5NCwyOTc5NSwyOTc5NiwyOTc5NywyOTc5OCwyOTc5OSwyOTgwMCwyOTgwMSwyOTgwMiwyOTgwMywyOTgwNCwyOTgwNiwyOTgwNywyOTgwOSwyOTgxMCwyOTgxMSwyOTgxMiwyOTgxMywyOTgxNiwyOTgxNywyOTgxOCw1NzUzMiw1NzUzMyw1NzUzNCw1NzUzNSw1''@;'; put 'put ''NzUzNiw1NzUzNyw1NzUzOCw1NzUzOSw1NzU0MCw1NzU0MSw1NzU0Miw1NzU0Myw1NzU0NCw1NzU0NSw1NzU0Niw1NzU0Nyw1NzU0OCw1NzU0OSw1NzU1MCw1NzU1MSw1NzU1Miw1NzU1Myw1NzU1NCw1NzU1NSw1NzU1Niw1NzU1Nyw1NzU1OCw1NzU1OSw1NzU2MCw1NzU2MSw1NzU2Miw1NzU2''@;'; put 'put ''Myw1NzU2NCw1NzU2NSw1NzU2Niw1NzU2Nyw1NzU2OCw1NzU2OSw1NzU3MCw1NzU3MSw1NzU3Miw1NzU3Myw1NzU3NCw1NzU3NSw1NzU3Niw1NzU3Nyw1NzU3OCw1NzU3OSw1NzU4MCw1NzU4MSw1NzU4Miw1NzU4Myw1NzU4NCw1NzU4NSw1NzU4Niw1NzU4Nyw1NzU4OCw1NzU4OSw1NzU5MCw1''@;'; put 'put ''NzU5MSw1NzU5Miw1NzU5Myw1NzU5NCw1NzU5NSw1NzU5Niw1NzU5Nyw1NzU5OCw1NzU5OSw1NzYwMCw1NzYwMSw1NzYwMiw1NzYwMyw1NzYwNCw1NzYwNSw1NzYwNiw1NzYwNyw1NzYwOCw1NzYwOSw1NzYxMCw1NzYxMSw1NzYxMiw1NzYxMyw1NzYxNCw1NzYxNSw1NzYxNiw1NzYxNyw1NzYx''@;'; put 'put ''OCw1NzYxOSw1NzYyMCw1NzYyMSw1NzYyMiw1NzYyMyw1NzYyNCw1NzYyNSwyOTgxOSwyOTgyMCwyOTgyMSwyOTgyMywyOTgyNiwyOTgyOCwyOTgyOSwyOTgzMCwyOTgzMiwyOTgzMywyOTgzNCwyOTgzNiwyOTgzNywyOTgzOSwyOTg0MSwyOTg0MiwyOTg0MywyOTg0NCwyOTg0NSwyOTg0Niwy''@;'; put 'put ''OTg0NywyOTg0OCwyOTg0OSwyOTg1MCwyOTg1MSwyOTg1MywyOTg1NSwyOTg1NiwyOTg1NywyOTg1OCwyOTg1OSwyOTg2MCwyOTg2MSwyOTg2MiwyOTg2NiwyOTg2NywyOTg2OCwyOTg2OSwyOTg3MCwyOTg3MSwyOTg3MiwyOTg3MywyOTg3NCwyOTg3NSwyOTg3NiwyOTg3NywyOTg3OCwyOTg3''@;'; put 'put ''OSwyOTg4MCwyOTg4MSwyOTg4MywyOTg4NCwyOTg4NSwyOTg4NiwyOTg4NywyOTg4OCwyOTg4OSwyOTg5MCwyOTg5MSwyOTg5MiwyOTg5MywyOTg5NCwyOTg5NSwyOTg5NiwyOTg5NywyOTg5OCwyOTg5OSwyOTkwMCwyOTkwMSwyOTkwMiwyOTkwMywyOTkwNCwyOTkwNSwyOTkwNywyOTkwOCwy''@;'; put 'put ''OTkwOSwyOTkxMCwyOTkxMSwyOTkxMiwyOTkxMywyOTkxNCwyOTkxNSwyOTkxNywyOTkxOSwyOTkyMSwyOTkyNSwyOTkyNywyOTkyOCwyOTkyOSwyOTkzMCwyOTkzMSwyOTkzMiwyOTkzMywyOTkzNiwyOTkzNywyOTkzOCw1NzYyNiw1NzYyNyw1NzYyOCw1NzYyOSw1NzYzMCw1NzYzMSw1NzYz''@;'; put 'put ''Miw1NzYzMyw1NzYzNCw1NzYzNSw1NzYzNiw1NzYzNyw1NzYzOCw1NzYzOSw1NzY0MCw1NzY0MSw1NzY0Miw1NzY0Myw1NzY0NCw1NzY0NSw1NzY0Niw1NzY0Nyw1NzY0OCw1NzY0OSw1NzY1MCw1NzY1MSw1NzY1Miw1NzY1Myw1NzY1NCw1NzY1NSw1NzY1Niw1NzY1Nyw1NzY1OCw1NzY1OSw1''@;'; put 'put ''NzY2MCw1NzY2MSw1NzY2Miw1NzY2Myw1NzY2NCw1NzY2NSw1NzY2Niw1NzY2Nyw1NzY2OCw1NzY2OSw1NzY3MCw1NzY3MSw1NzY3Miw1NzY3Myw1NzY3NCw1NzY3NSw1NzY3Niw1NzY3Nyw1NzY3OCw1NzY3OSw1NzY4MCw1NzY4MSw1NzY4Miw1NzY4Myw1NzY4NCw1NzY4NSw1NzY4Niw1NzY4''@;'; put 'put ''Nyw1NzY4OCw1NzY4OSw1NzY5MCw1NzY5MSw1NzY5Miw1NzY5Myw1NzY5NCw1NzY5NSw1NzY5Niw1NzY5Nyw1NzY5OCw1NzY5OSw1NzcwMCw1NzcwMSw1NzcwMiw1NzcwMyw1NzcwNCw1NzcwNSw1NzcwNiw1NzcwNyw1NzcwOCw1NzcwOSw1NzcxMCw1NzcxMSw1NzcxMiw1NzcxMyw1NzcxNCw1''@;'; put 'put ''NzcxNSw1NzcxNiw1NzcxNyw1NzcxOCw1NzcxOSwyOTkzOSwyOTk0MSwyOTk0NCwyOTk0NSwyOTk0NiwyOTk0NywyOTk0OCwyOTk0OSwyOTk1MCwyOTk1MiwyOTk1MywyOTk1NCwyOTk1NSwyOTk1NywyOTk1OCwyOTk1OSwyOTk2MCwyOTk2MSwyOTk2MiwyOTk2MywyOTk2NCwyOTk2NiwyOTk2''@;'; put 'put ''OCwyOTk3MCwyOTk3MiwyOTk3MywyOTk3NCwyOTk3NSwyOTk3OSwyOTk4MSwyOTk4MiwyOTk4NCwyOTk4NSwyOTk4NiwyOTk4NywyOTk4OCwyOTk5MCwyOTk5MSwyOTk5NCwyOTk5OCwzMDAwNCwzMDAwNiwzMDAwOSwzMDAxMiwzMDAxMywzMDAxNSwzMDAxNywzMDAxOCwzMDAxOSwzMDAyMCwz''@;'; put 'put ''MDAyMiwzMDAyMywzMDAyNSwzMDAyNiwzMDAyOSwzMDAzMiwzMDAzMywzMDAzNCwzMDAzNSwzMDAzNywzMDAzOCwzMDAzOSwzMDA0MCwzMDA0NSwzMDA0NiwzMDA0NywzMDA0OCwzMDA0OSwzMDA1MCwzMDA1MSwzMDA1MiwzMDA1NSwzMDA1NiwzMDA1NywzMDA1OSwzMDA2MCwzMDA2MSwzMDA2''@;'; put 'put ''MiwzMDA2MywzMDA2NCwzMDA2NSwzMDA2NywzMDA2OSwzMDA3MCwzMDA3MSwzMDA3NCwzMDA3NSwzMDA3NiwzMDA3NywzMDA3OCwzMDA4MCwzMDA4MSwzMDA4MiwzMDA4NCwzMDA4NSwzMDA4Nyw1NzcyMCw1NzcyMSw1NzcyMiw1NzcyMyw1NzcyNCw1NzcyNSw1NzcyNiw1NzcyNyw1NzcyOCw1''@;'; put 'put ''NzcyOSw1NzczMCw1NzczMSw1NzczMiw1NzczMyw1NzczNCw1NzczNSw1NzczNiw1NzczNyw1NzczOCw1NzczOSw1Nzc0MCw1Nzc0MSw1Nzc0Miw1Nzc0Myw1Nzc0NCw1Nzc0NSw1Nzc0Niw1Nzc0Nyw1Nzc0OCw1Nzc0OSw1Nzc1MCw1Nzc1MSw1Nzc1Miw1Nzc1Myw1Nzc1NCw1Nzc1NSw1Nzc1''@;'; put 'put ''Niw1Nzc1Nyw1Nzc1OCw1Nzc1OSw1Nzc2MCw1Nzc2MSw1Nzc2Miw1Nzc2Myw1Nzc2NCw1Nzc2NSw1Nzc2Niw1Nzc2Nyw1Nzc2OCw1Nzc2OSw1Nzc3MCw1Nzc3MSw1Nzc3Miw1Nzc3Myw1Nzc3NCw1Nzc3NSw1Nzc3Niw1Nzc3Nyw1Nzc3OCw1Nzc3OSw1Nzc4MCw1Nzc4MSw1Nzc4Miw1Nzc4Myw1''@;'; put 'put ''Nzc4NCw1Nzc4NSw1Nzc4Niw1Nzc4Nyw1Nzc4OCw1Nzc4OSw1Nzc5MCw1Nzc5MSw1Nzc5Miw1Nzc5Myw1Nzc5NCw1Nzc5NSw1Nzc5Niw1Nzc5Nyw1Nzc5OCw1Nzc5OSw1NzgwMCw1NzgwMSw1NzgwMiw1NzgwMyw1NzgwNCw1NzgwNSw1NzgwNiw1NzgwNyw1NzgwOCw1NzgwOSw1NzgxMCw1Nzgx''@;'; put 'put ''MSw1NzgxMiw1NzgxMywzMDA4OCwzMDA4OSwzMDA5MCwzMDA5MiwzMDA5MywzMDA5NCwzMDA5NiwzMDA5OSwzMDEwMSwzMDEwNCwzMDEwNywzMDEwOCwzMDExMCwzMDExNCwzMDExOCwzMDExOSwzMDEyMCwzMDEyMSwzMDEyMiwzMDEyNSwzMDEzNCwzMDEzNSwzMDEzOCwzMDEzOSwzMDE0Mywz''@;'; put 'put ''MDE0NCwzMDE0NSwzMDE1MCwzMDE1NSwzMDE1NiwzMDE1OCwzMDE1OSwzMDE2MCwzMDE2MSwzMDE2MywzMDE2NywzMDE2OSwzMDE3MCwzMDE3MiwzMDE3MywzMDE3NSwzMDE3NiwzMDE3NywzMDE4MSwzMDE4NSwzMDE4OCwzMDE4OSwzMDE5MCwzMDE5MSwzMDE5NCwzMDE5NSwzMDE5NywzMDE5''@;'; put 'put ''OCwzMDE5OSwzMDIwMCwzMDIwMiwzMDIwMywzMDIwNSwzMDIwNiwzMDIxMCwzMDIxMiwzMDIxNCwzMDIxNSwzMDIxNiwzMDIxNywzMDIxOSwzMDIyMSwzMDIyMiwzMDIyMywzMDIyNSwzMDIyNiwzMDIyNywzMDIyOCwzMDIzMCwzMDIzNCwzMDIzNiwzMDIzNywzMDIzOCwzMDI0MSwzMDI0Mywz''@;'; put 'put ''MDI0NywzMDI0OCwzMDI1MiwzMDI1NCwzMDI1NSwzMDI1NywzMDI1OCwzMDI2MiwzMDI2MywzMDI2NSwzMDI2NiwzMDI2NywzMDI2OSwzMDI3MywzMDI3NCwzMDI3Niw1NzgxNCw1NzgxNSw1NzgxNiw1NzgxNyw1NzgxOCw1NzgxOSw1NzgyMCw1NzgyMSw1NzgyMiw1NzgyMyw1NzgyNCw1Nzgy''@;'; put 'put ''NSw1NzgyNiw1NzgyNyw1NzgyOCw1NzgyOSw1NzgzMCw1NzgzMSw1NzgzMiw1NzgzMyw1NzgzNCw1NzgzNSw1NzgzNiw1NzgzNyw1NzgzOCw1NzgzOSw1Nzg0MCw1Nzg0MSw1Nzg0Miw1Nzg0Myw1Nzg0NCw1Nzg0NSw1Nzg0Niw1Nzg0Nyw1Nzg0OCw1Nzg0OSw1Nzg1MCw1Nzg1MSw1Nzg1Miw1''@;'; put 'put ''Nzg1Myw1Nzg1NCw1Nzg1NSw1Nzg1Niw1Nzg1Nyw1Nzg1OCw1Nzg1OSw1Nzg2MCw1Nzg2MSw1Nzg2Miw1Nzg2Myw1Nzg2NCw1Nzg2NSw1Nzg2Niw1Nzg2Nyw1Nzg2OCw1Nzg2OSw1Nzg3MCw1Nzg3MSw1Nzg3Miw1Nzg3Myw1Nzg3NCw1Nzg3NSw1Nzg3Niw1Nzg3Nyw1Nzg3OCw1Nzg3OSw1Nzg4''@;'; put 'put ''MCw1Nzg4MSw1Nzg4Miw1Nzg4Myw1Nzg4NCw1Nzg4NSw1Nzg4Niw1Nzg4Nyw1Nzg4OCw1Nzg4OSw1Nzg5MCw1Nzg5MSw1Nzg5Miw1Nzg5Myw1Nzg5NCw1Nzg5NSw1Nzg5Niw1Nzg5Nyw1Nzg5OCw1Nzg5OSw1NzkwMCw1NzkwMSw1NzkwMiw1NzkwMyw1NzkwNCw1NzkwNSw1NzkwNiw1NzkwNywz''@;'; put 'put ''MDI3NywzMDI3OCwzMDI3OSwzMDI4MCwzMDI4MSwzMDI4MiwzMDI4MywzMDI4NiwzMDI4NywzMDI4OCwzMDI4OSwzMDI5MCwzMDI5MSwzMDI5MywzMDI5NSwzMDI5NiwzMDI5NywzMDI5OCwzMDI5OSwzMDMwMSwzMDMwMywzMDMwNCwzMDMwNSwzMDMwNiwzMDMwOCwzMDMwOSwzMDMxMCwzMDMx''@;'; put 'put ''MSwzMDMxMiwzMDMxMywzMDMxNCwzMDMxNiwzMDMxNywzMDMxOCwzMDMyMCwzMDMyMSwzMDMyMiwzMDMyMywzMDMyNCwzMDMyNSwzMDMyNiwzMDMyNywzMDMyOSwzMDMzMCwzMDMzMiwzMDMzNSwzMDMzNiwzMDMzNywzMDMzOSwzMDM0MSwzMDM0NSwzMDM0NiwzMDM0OCwzMDM0OSwzMDM1MSwz''@;'; put 'put ''MDM1MiwzMDM1NCwzMDM1NiwzMDM1NywzMDM1OSwzMDM2MCwzMDM2MiwzMDM2MywzMDM2NCwzMDM2NSwzMDM2NiwzMDM2NywzMDM2OCwzMDM2OSwzMDM3MCwzMDM3MSwzMDM3MywzMDM3NCwzMDM3NSwzMDM3NiwzMDM3NywzMDM3OCwzMDM3OSwzMDM4MCwzMDM4MSwzMDM4MywzMDM4NCwzMDM4''@;'; put 'put ''NywzMDM4OSwzMDM5MCwzMDM5MSwzMDM5MiwzMDM5MywzMDM5NCwzMDM5NSwzMDM5NiwzMDM5NywzMDM5OCwzMDQwMCwzMDQwMSwzMDQwMywyMTgzNCwzODQ2MywyMjQ2NywyNTM4NCwyMTcxMCwyMTc2OSwyMTY5NiwzMDM1MywzMDI4NCwzNDEwOCwzMDcwMiwzMzQwNiwzMDg2MSwyOTIzMywz''@;'; put 'put ''ODU1MiwzODc5NywyNzY4OCwyMzQzMywyMDQ3NCwyNTM1MywyNjI2MywyMzczNiwzMzAxOCwyNjY5NiwzMjk0MiwyNjExNCwzMDQxNCwyMDk4NSwyNTk0MiwyOTEwMCwzMjc1MywzNDk0OCwyMDY1OCwyMjg4NSwyNTAzNCwyODU5NSwzMzQ1MywyNTQyMCwyNTE3MCwyMTQ4NSwyMTU0MywzMTQ5''@;'; put 'put ''NCwyMDg0MywzMDExNiwyNDA1MiwyNTMwMCwzNjI5OSwzODc3NCwyNTIyNiwzMjc5MywyMjM2NSwzODcxMiwzMjYxMCwyOTI0MCwzMDMzMywyNjU3NSwzMDMzNCwyNTY3MCwyMDMzNiwzNjEzMywyNTMwOCwzMTI1NSwyNjAwMSwyOTY3NywyNTY0NCwyNTIwMywzMzMyNCwzOTA0MSwyNjQ5NSwy''@;'; put 'put ''OTI1NiwyNTE5OCwyNTI5MiwyMDI3NiwyOTkyMywyMTMyMiwyMTE1MCwzMjQ1OCwzNzAzMCwyNDExMCwyNjc1OCwyNzAzNiwzMzE1MiwzMjQ2NSwyNjgzNCwzMDkxNywzNDQ0NCwzODIyNSwyMDYyMSwzNTg3NiwzMzUwMiwzMjk5MCwyMTI1MywzNTA5MCwyMTA5MywzMDQwNCwzMDQwNywzMDQw''@;'; put 'put ''OSwzMDQxMSwzMDQxMiwzMDQxOSwzMDQyMSwzMDQyNSwzMDQyNiwzMDQyOCwzMDQyOSwzMDQzMCwzMDQzMiwzMDQzMywzMDQzNCwzMDQzNSwzMDQzNiwzMDQzOCwzMDQzOSwzMDQ0MCwzMDQ0MSwzMDQ0MiwzMDQ0MywzMDQ0NCwzMDQ0NSwzMDQ0OCwzMDQ1MSwzMDQ1MywzMDQ1NCwzMDQ1NSwz''@;'; put 'put ''MDQ1OCwzMDQ1OSwzMDQ2MSwzMDQ2MywzMDQ2NCwzMDQ2NiwzMDQ2NywzMDQ2OSwzMDQ3MCwzMDQ3NCwzMDQ3NiwzMDQ3OCwzMDQ3OSwzMDQ4MCwzMDQ4MSwzMDQ4MiwzMDQ4MywzMDQ4NCwzMDQ4NSwzMDQ4NiwzMDQ4NywzMDQ4OCwzMDQ5MSwzMDQ5MiwzMDQ5MywzMDQ5NCwzMDQ5NywzMDQ5''@;'; put 'put ''OSwzMDUwMCwzMDUwMSwzMDUwMywzMDUwNiwzMDUwNywzMDUwOCwzMDUxMCwzMDUxMiwzMDUxMywzMDUxNCwzMDUxNSwzMDUxNiwzMDUyMSwzMDUyMywzMDUyNSwzMDUyNiwzMDUyNywzMDUzMCwzMDUzMiwzMDUzMywzMDUzNCwzMDUzNiwzMDUzNywzMDUzOCwzMDUzOSwzMDU0MCwzMDU0MSwz''@;'; put 'put ''MDU0MiwzMDU0MywzMDU0NiwzMDU0NywzMDU0OCwzMDU0OSwzMDU1MCwzMDU1MSwzMDU1MiwzMDU1MywzMDU1NiwzNDE4MCwzODY0OSwyMDQ0NSwyMjU2MSwzOTI4MSwyMzQ1MywyNTI2NSwyNTI1MywyNjI5MiwzNTk2MSw0MDA3NywyOTE5MCwyNjQ3OSwzMDg2NSwyNDc1NCwyMTMyOSwyMTI3''@;'; put 'put ''MSwzNjc0NCwzMjk3MiwzNjEyNSwzODA0OSwyMDQ5MywyOTM4NCwyMjc5MSwyNDgxMSwyODk1MywzNDk4NywyMjg2OCwzMzUxOSwyNjQxMiwzMTUyOCwyMzg0OSwzMjUwMywyOTk5NywyNzg5MywzNjQ1NCwzNjg1NiwzNjkyNCw0MDc2MywyNzYwNCwzNzE0NSwzMTUwOCwyNDQ0NCwzMDg4Nywz''@;'; put 'put ''NDAwNiwzNDEwOSwyNzYwNSwyNzYwOSwyNzYwNiwyNDA2NSwyNDE5OSwzMDIwMSwzODM4MSwyNTk0OSwyNDMzMCwyNDUxNywzNjc2NywyMjcyMSwzMzIxOCwzNjk5MSwzODQ5MSwzODgyOSwzNjc5MywzMjUzNCwzNjE0MCwyNTE1MywyMDQxNSwyMTQ2NCwyMTM0MiwzNjc3NiwzNjc3NywzNjc3''@;'; put 'put ''OSwzNjk0MSwyNjYzMSwyNDQyNiwzMzE3NiwzNDkyMCw0MDE1MCwyNDk3MSwyMTAzNSwzMDI1MCwyNDQyOCwyNTk5NiwyODYyNiwyODM5MiwyMzQ4NiwyNTY3MiwyMDg1MywyMDkxMiwyNjU2NCwxOTk5MywzMTE3NywzOTI5MiwyODg1MSwzMDU1NywzMDU1OCwzMDU1OSwzMDU2MCwzMDU2NCwz''@;'; put 'put ''MDU2NywzMDU2OSwzMDU3MCwzMDU3MywzMDU3NCwzMDU3NSwzMDU3NiwzMDU3NywzMDU3OCwzMDU3OSwzMDU4MCwzMDU4MSwzMDU4MiwzMDU4MywzMDU4NCwzMDU4NiwzMDU4NywzMDU4OCwzMDU5MywzMDU5NCwzMDU5NSwzMDU5OCwzMDU5OSwzMDYwMCwzMDYwMSwzMDYwMiwzMDYwMywzMDYw''@;'; put 'put ''NywzMDYwOCwzMDYxMSwzMDYxMiwzMDYxMywzMDYxNCwzMDYxNSwzMDYxNiwzMDYxNywzMDYxOCwzMDYxOSwzMDYyMCwzMDYyMSwzMDYyMiwzMDYyNSwzMDYyNywzMDYyOCwzMDYzMCwzMDYzMiwzMDYzNSwzMDYzNywzMDYzOCwzMDYzOSwzMDY0MSwzMDY0MiwzMDY0NCwzMDY0NiwzMDY0Nywz''@;'; put 'put ''MDY0OCwzMDY0OSwzMDY1MCwzMDY1MiwzMDY1NCwzMDY1NiwzMDY1NywzMDY1OCwzMDY1OSwzMDY2MCwzMDY2MSwzMDY2MiwzMDY2MywzMDY2NCwzMDY2NSwzMDY2NiwzMDY2NywzMDY2OCwzMDY3MCwzMDY3MSwzMDY3MiwzMDY3MywzMDY3NCwzMDY3NSwzMDY3NiwzMDY3NywzMDY3OCwzMDY4''@;'; put 'put ''MCwzMDY4MSwzMDY4MiwzMDY4NSwzMDY4NiwzMDY4NywzMDY4OCwzMDY4OSwzMDY5MiwzMDE0OSwyNDE4MiwyOTYyNywzMzc2MCwyNTc3MywyNTMyMCwzODA2OSwyNzg3NCwyMTMzOCwyMTE4NywyNTYxNSwzODA4MiwzMTYzNiwyMDI3MSwyNDA5MSwzMzMzNCwzMzA0NiwzMzE2MiwyODE5Niwy''@;'; put 'put ''Nzg1MCwzOTUzOSwyNTQyOSwyMTM0MCwyMTc1NCwzNDkxNywyMjQ5NiwxOTk4MSwyNDA2NywyNzQ5MywzMTgwNywzNzA5NiwyNDU5OCwyNTgzMCwyOTQ2OCwzNTAwOSwyNjQ0OCwyNTE2NSwzNjEzMCwzMDU3MiwzNjM5MywzNzMxOSwyNDQyNSwzMzc1NiwzNDA4MSwzOTE4NCwyMTQ0MiwzNDQ1''@;'; put 'put ''MywyNzUzMSwyNDgxMywyNDgwOCwyODc5OSwzMzQ4NSwzMzMyOSwyMDE3OSwyNzgxNSwzNDI1NSwyNTgwNSwzMTk2MSwyNzEzMywyNjM2MSwzMzYwOSwyMTM5NywzMTU3NCwyMDM5MSwyMDg3NiwyNzk3OSwyMzYxOCwzNjQ2MSwyNTU1NCwyMTQ0OSwzMzU4MCwzMzU5MCwyNjU5NywzMDkwMCwy''@;'; put 'put ''NTY2MSwyMzUxOSwyMzcwMCwyNDA0NiwzNTgxNSwyNTI4NiwyNjYxMiwzNTk2MiwyNTYwMCwyNTUzMCwzNDYzMywzOTMwNywzNTg2MywzMjU0NCwzODEzMCwyMDEzNSwzODQxNiwzOTA3NiwyNjEyNCwyOTQ2MiwzMDY5NCwzMDY5NiwzMDY5OCwzMDcwMywzMDcwNCwzMDcwNSwzMDcwNiwzMDcw''@;'; put 'put ''OCwzMDcwOSwzMDcxMSwzMDcxMywzMDcxNCwzMDcxNSwzMDcxNiwzMDcyMywzMDcyNCwzMDcyNSwzMDcyNiwzMDcyNywzMDcyOCwzMDczMCwzMDczMSwzMDczNCwzMDczNSwzMDczNiwzMDczOSwzMDc0MSwzMDc0NSwzMDc0NywzMDc1MCwzMDc1MiwzMDc1MywzMDc1NCwzMDc1NiwzMDc2MCwz''@;'; put 'put ''MDc2MiwzMDc2MywzMDc2NiwzMDc2NywzMDc2OSwzMDc3MCwzMDc3MSwzMDc3MywzMDc3NCwzMDc4MSwzMDc4MywzMDc4NSwzMDc4NiwzMDc4NywzMDc4OCwzMDc5MCwzMDc5MiwzMDc5MywzMDc5NCwzMDc5NSwzMDc5NywzMDc5OSwzMDgwMSwzMDgwMywzMDgwNCwzMDgwOCwzMDgwOSwzMDgx''@;'; put 'put ''MCwzMDgxMSwzMDgxMiwzMDgxNCwzMDgxNSwzMDgxNiwzMDgxNywzMDgxOCwzMDgxOSwzMDgyMCwzMDgyMSwzMDgyMiwzMDgyMywzMDgyNCwzMDgyNSwzMDgzMSwzMDgzMiwzMDgzMywzMDgzNCwzMDgzNSwzMDgzNiwzMDgzNywzMDgzOCwzMDg0MCwzMDg0MSwzMDg0MiwzMDg0MywzMDg0NSwz''@;'; put 'put ''MDg0NiwzMDg0NywzMDg0OCwzMDg0OSwzMDg1MCwzMDg1MSwyMjMzMCwyMzU4MSwyNDEyMCwzODI3MSwyMDYwNywzMjkyOCwyMTM3OCwyNTk1MCwzMDAyMSwyMTgwOSwyMDUxMywzNjIyOSwyNTIyMCwzODA0NiwyNjM5NywyMjA2NiwyODUyNiwyNDAzNCwyMTU1NywyODgxOCwzNjcxMCwyNTE5''@;'; put 'put ''OSwyNTc2NCwyNTUwNywyNDQ0MywyODU1MiwzNzEwOCwzMzI1MSwzNjc4NCwyMzU3NiwyNjIxNiwyNDU2MSwyNzc4NSwzODQ3MiwzNjIyNSwzNDkyNCwyNTc0NSwzMTIxNiwyMjQ3OCwyNzIyNSwyNTEwNCwyMTU3NiwyMDA1NiwzMTI0MywyNDgwOSwyODU0OCwzNTgwMiwyNTIxNSwzNjg5NCwz''@;'; put 'put ''OTU2MywzMTIwNCwyMTUwNywzMDE5NiwyNTM0NSwyMTI3MywyNzc0NCwzNjgzMSwyNDM0NywzOTUzNiwzMjgyNyw0MDgzMSwyMDM2MCwyMzYxMCwzNjE5NiwzMjcwOSwyNjAyMSwyODg2MSwyMDgwNSwyMDkxNCwzNDQxMSwyMzgxNSwyMzQ1NiwyNTI3NywzNzIyOCwzMDA2OCwzNjM2NCwzMTI2''@;'; put 'put ''NCwyNDgzMywzMTYwOSwyMDE2NywzMjUwNCwzMDU5NywxOTk4NSwzMzI2MSwyMTAyMSwyMDk4NiwyNzI0OSwyMTQxNiwzNjQ4NywzODE0OCwzODYwNywyODM1MywzODUwMCwyNjk3MCwzMDg1MiwzMDg1MywzMDg1NCwzMDg1NiwzMDg1OCwzMDg1OSwzMDg2MywzMDg2NCwzMDg2NiwzMDg2OCwz''@;'; put 'put ''MDg2OSwzMDg3MCwzMDg3MywzMDg3NywzMDg3OCwzMDg4MCwzMDg4MiwzMDg4NCwzMDg4NiwzMDg4OCwzMDg4OSwzMDg5MCwzMDg5MSwzMDg5MiwzMDg5MywzMDg5NCwzMDg5NSwzMDkwMSwzMDkwMiwzMDkwMywzMDkwNCwzMDkwNiwzMDkwNywzMDkwOCwzMDkwOSwzMDkxMSwzMDkxMiwzMDkx''@;'; put 'put ''NCwzMDkxNSwzMDkxNiwzMDkxOCwzMDkxOSwzMDkyMCwzMDkyNCwzMDkyNSwzMDkyNiwzMDkyNywzMDkyOSwzMDkzMCwzMDkzMSwzMDkzNCwzMDkzNSwzMDkzNiwzMDkzOCwzMDkzOSwzMDk0MCwzMDk0MSwzMDk0MiwzMDk0MywzMDk0NCwzMDk0NSwzMDk0NiwzMDk0NywzMDk0OCwzMDk0OSwz''@;'; put 'put ''MDk1MCwzMDk1MSwzMDk1MywzMDk1NCwzMDk1NSwzMDk1NywzMDk1OCwzMDk1OSwzMDk2MCwzMDk2MSwzMDk2MywzMDk2NSwzMDk2NiwzMDk2OCwzMDk2OSwzMDk3MSwzMDk3MiwzMDk3MywzMDk3NCwzMDk3NSwzMDk3NiwzMDk3OCwzMDk3OSwzMDk4MCwzMDk4MiwzMDk4MywzMDk4NCwzMDk4''@;'; put 'put ''NSwzMDk4NiwzMDk4NywzMDk4OCwzMDc4NCwyMDY0OCwzMDY3OSwyNTYxNiwzNTMwMiwyMjc4OCwyNTU3MSwyNDAyOSwzMTM1OSwyNjk0MSwyMDI1NiwzMzMzNywyMTkxMiwyMDAxOCwzMDEyNiwzMTM4MywyNDE2MiwyNDIwMiwzODM4MywyMTAxOSwyMTU2MSwyODgxMCwyNTQ2MiwzODE4MCwy''@;'; put 'put ''MjQwMiwyNjE0OSwyNjk0MywzNzI1NSwyMTc2NywyODE0NywzMjQzMSwzNDg1MCwyNTEzOSwzMjQ5NiwzMDEzMywzMzU3NiwzMDkxMywzODYwNCwzNjc2NiwyNDkwNCwyOTk0MywzNTc4OSwyNzQ5MiwyMTA1MCwzNjE3NiwyNzQyNSwzMjg3NCwzMzkwNSwyMjI1NywyMTI1NCwyMDE3NCwxOTk5''@;'; put 'put ''NSwyMDk0NSwzMTg5NSwzNzI1OSwzMTc1MSwyMDQxOSwzNjQ3OSwzMTcxMywzMTM4OCwyNTcwMywyMzgyOCwyMDY1MiwzMzAzMCwzMDIwOSwzMTkyOSwyODE0MCwzMjczNiwyNjQ0OSwyMzM4NCwyMzU0NCwzMDkyMywyNTc3NCwyNTYxOSwyNTUxNCwyNTM4NywzODE2OSwyNTY0NSwzNjc5OCwz''@;'; put 'put ''MTU3MiwzMDI0OSwyNTE3MSwyMjgyMywyMTU3NCwyNzUxMywyMDY0MywyNTE0MCwyNDEwMiwyNzUyNiwyMDE5NSwzNjE1MSwzNDk1NSwyNDQ1MywzNjkxMCwzMDk4OSwzMDk5MCwzMDk5MSwzMDk5MiwzMDk5MywzMDk5NCwzMDk5NiwzMDk5NywzMDk5OCwzMDk5OSwzMWUzLDMxMDAxLDMxMDAy''@;'; put 'put ''LDMxMDAzLDMxMDA0LDMxMDA1LDMxMDA3LDMxMDA4LDMxMDA5LDMxMDEwLDMxMDExLDMxMDEzLDMxMDE0LDMxMDE1LDMxMDE2LDMxMDE3LDMxMDE4LDMxMDE5LDMxMDIwLDMxMDIxLDMxMDIyLDMxMDIzLDMxMDI0LDMxMDI1LDMxMDI2LDMxMDI3LDMxMDI5LDMxMDMwLDMxMDMxLDMxMDMyLDMx''@;'; put 'put ''MDMzLDMxMDM3LDMxMDM5LDMxMDQyLDMxMDQzLDMxMDQ0LDMxMDQ1LDMxMDQ3LDMxMDUwLDMxMDUxLDMxMDUyLDMxMDUzLDMxMDU0LDMxMDU1LDMxMDU2LDMxMDU3LDMxMDU4LDMxMDYwLDMxMDYxLDMxMDY0LDMxMDY1LDMxMDczLDMxMDc1LDMxMDc2LDMxMDc4LDMxMDgxLDMxMDgyLDMxMDgz''@;'; put 'put ''LDMxMDg0LDMxMDg2LDMxMDg4LDMxMDg5LDMxMDkwLDMxMDkxLDMxMDkyLDMxMDkzLDMxMDk0LDMxMDk3LDMxMDk5LDMxMTAwLDMxMTAxLDMxMTAyLDMxMTAzLDMxMTA2LDMxMTA3LDMxMTEwLDMxMTExLDMxMTEyLDMxMTEzLDMxMTE1LDMxMTE2LDMxMTE3LDMxMTE4LDMxMTIwLDMxMTIxLDMx''@;'; put 'put ''MTIyLDI0NjA4LDMyODI5LDI1Mjg1LDIwMDI1LDIxMzMzLDM3MTEyLDI1NTI4LDMyOTY2LDI2MDg2LDI3Njk0LDIwMjk0LDI0ODE0LDI4MTI5LDM1ODA2LDI0Mzc3LDM0NTA3LDI0NDAzLDI1Mzc3LDIwODI2LDMzNjMzLDI2NzIzLDIwOTkyLDI1NDQzLDM2NDI0LDIwNDk4LDIzNzA3LDMxMDk1''@;'; put 'put ''LDIzNTQ4LDIxMDQwLDMxMjkxLDI0NzY0LDM2OTQ3LDMwNDIzLDI0NTAzLDI0NDcxLDMwMzQwLDM2NDYwLDI4NzgzLDMwMzMxLDMxNTYxLDMwNjM0LDIwOTc5LDM3MDExLDIyNTY0LDIwMzAyLDI4NDA0LDM2ODQyLDI1OTMyLDMxNTE1LDI5MzgwLDI4MDY4LDMyNzM1LDIzMjY1LDI1MjY5LDI0''@;'; put 'put ''MjEzLDIyMzIwLDMzOTIyLDMxNTMyLDI0MDkzLDI0MzUxLDM2ODgyLDMyNTMyLDM5MDcyLDI1NDc0LDI4MzU5LDMwODcyLDI4ODU3LDIwODU2LDM4NzQ3LDIyNDQzLDMwMDA1LDIwMjkxLDMwMDA4LDI0MjE1LDI0ODA2LDIyODgwLDI4MDk2LDI3NTgzLDMwODU3LDIxNTAwLDM4NjEzLDIwOTM5''@;'; put 'put ''LDIwOTkzLDI1NDgxLDIxNTE0LDM4MDM1LDM1ODQzLDM2MzAwLDI5MjQxLDMwODc5LDM0Njc4LDM2ODQ1LDM1ODUzLDIxNDcyLDMxMTIzLDMxMTI0LDMxMTI1LDMxMTI2LDMxMTI3LDMxMTI4LDMxMTI5LDMxMTMxLDMxMTMyLDMxMTMzLDMxMTM0LDMxMTM1LDMxMTM2LDMxMTM3LDMxMTM4LDMx''@;'; put 'put ''MTM5LDMxMTQwLDMxMTQxLDMxMTQyLDMxMTQ0LDMxMTQ1LDMxMTQ2LDMxMTQ3LDMxMTQ4LDMxMTQ5LDMxMTUwLDMxMTUxLDMxMTUyLDMxMTUzLDMxMTU0LDMxMTU2LDMxMTU3LDMxMTU4LDMxMTU5LDMxMTYwLDMxMTY0LDMxMTY3LDMxMTcwLDMxMTcyLDMxMTczLDMxMTc1LDMxMTc2LDMxMTc4''@;'; put 'put ''LDMxMTgwLDMxMTgyLDMxMTgzLDMxMTg0LDMxMTg3LDMxMTg4LDMxMTkwLDMxMTkxLDMxMTkzLDMxMTk0LDMxMTk1LDMxMTk2LDMxMTk3LDMxMTk4LDMxMjAwLDMxMjAxLDMxMjAyLDMxMjA1LDMxMjA4LDMxMjEwLDMxMjEyLDMxMjE0LDMxMjE3LDMxMjE4LDMxMjE5LDMxMjIwLDMxMjIxLDMx''@;'; put 'put ''MjIyLDMxMjIzLDMxMjI1LDMxMjI2LDMxMjI4LDMxMjMwLDMxMjMxLDMxMjMzLDMxMjM2LDMxMjM3LDMxMjM5LDMxMjQwLDMxMjQxLDMxMjQyLDMxMjQ0LDMxMjQ3LDMxMjQ4LDMxMjQ5LDMxMjUwLDMxMjUxLDMxMjUzLDMxMjU0LDMxMjU2LDMxMjU3LDMxMjU5LDMxMjYwLDE5OTY5LDMwNDQ3''@;'; put 'put ''LDIxNDg2LDM4MDI1LDM5MDMwLDQwNzE4LDM4MTg5LDIzNDUwLDM1NzQ2LDIwMDAyLDE5OTk2LDIwOTA4LDMzODkxLDI1MDI2LDIxMTYwLDI2NjM1LDIwMzc1LDI0NjgzLDIwOTIzLDI3OTM0LDIwODI4LDI1MjM4LDI2MDA3LDM4NDk3LDM1OTEwLDM2ODg3LDMwMTY4LDM3MTE3LDMwNTYzLDI3''@;'; put 'put ''NjAyLDI5MzIyLDI5NDIwLDM1ODM1LDIyNTgxLDMwNTg1LDM2MTcyLDI2NDYwLDM4MjA4LDMyOTIyLDI0MjMwLDI4MTkzLDIyOTMwLDMxNDcxLDMwNzAxLDM4MjAzLDI3NTczLDI2MDI5LDMyNTI2LDIyNTM0LDIwODE3LDM4NDMxLDIzNTQ1LDIyNjk3LDIxNTQ0LDM2NDY2LDI1OTU4LDM5MDM5''@;'; put 'put ''LDIyMjQ0LDM4MDQ1LDMwNDYyLDM2OTI5LDI1NDc5LDIxNzAyLDIyODEwLDIyODQyLDIyNDI3LDM2NTMwLDI2NDIxLDM2MzQ2LDMzMzMzLDIxMDU3LDI0ODE2LDIyNTQ5LDM0NTU4LDIzNzg0LDQwNTE3LDIwNDIwLDM5MDY5LDM1NzY5LDIzMDc3LDI0Njk0LDIxMzgwLDI1MjEyLDM2OTQzLDM3''@;'; put 'put ''MTIyLDM5Mjk1LDI0NjgxLDMyNzgwLDIwNzk5LDMyODE5LDIzNTcyLDM5Mjg1LDI3OTUzLDIwMTA4LDMxMjYxLDMxMjYzLDMxMjY1LDMxMjY2LDMxMjY4LDMxMjY5LDMxMjcwLDMxMjcxLDMxMjcyLDMxMjczLDMxMjc0LDMxMjc1LDMxMjc2LDMxMjc3LDMxMjc4LDMxMjc5LDMxMjgwLDMxMjgx''@;'; put 'put ''LDMxMjgyLDMxMjg0LDMxMjg1LDMxMjg2LDMxMjg4LDMxMjkwLDMxMjk0LDMxMjk2LDMxMjk3LDMxMjk4LDMxMjk5LDMxMzAwLDMxMzAxLDMxMzAzLDMxMzA0LDMxMzA1LDMxMzA2LDMxMzA3LDMxMzA4LDMxMzA5LDMxMzEwLDMxMzExLDMxMzEyLDMxMzE0LDMxMzE1LDMxMzE2LDMxMzE3LDMx''@;'; put 'put ''MzE4LDMxMzIwLDMxMzIxLDMxMzIyLDMxMzIzLDMxMzI0LDMxMzI1LDMxMzI2LDMxMzI3LDMxMzI4LDMxMzI5LDMxMzMwLDMxMzMxLDMxMzMyLDMxMzMzLDMxMzM0LDMxMzM1LDMxMzM2LDMxMzM3LDMxMzM4LDMxMzM5LDMxMzQwLDMxMzQxLDMxMzQyLDMxMzQzLDMxMzQ1LDMxMzQ2LDMxMzQ3''@;'; put 'put ''LDMxMzQ5LDMxMzU1LDMxMzU2LDMxMzU3LDMxMzU4LDMxMzYyLDMxMzY1LDMxMzY3LDMxMzY5LDMxMzcwLDMxMzcxLDMxMzcyLDMxMzc0LDMxMzc1LDMxMzc2LDMxMzc5LDMxMzgwLDMxMzg1LDMxMzg2LDMxMzg3LDMxMzkwLDMxMzkzLDMxMzk0LDM2MTQ0LDIxNDU3LDMyNjAyLDMxNTY3LDIw''@;'; put 'put ''MjQwLDIwMDQ3LDM4NDAwLDI3ODYxLDI5NjQ4LDM0MjgxLDI0MDcwLDMwMDU4LDMyNzYzLDI3MTQ2LDMwNzE4LDM4MDM0LDMyMzIxLDIwOTYxLDI4OTAyLDIxNDUzLDM2ODIwLDMzNTM5LDM2MTM3LDI5MzU5LDM5Mjc3LDI3ODY3LDIyMzQ2LDMzNDU5LDI2MDQxLDMyOTM4LDI1MTUxLDM4NDUw''@;'; put 'put ''LDIyOTUyLDIwMjIzLDM1Nzc1LDMyNDQyLDI1OTE4LDMzNzc4LDM4NzUwLDIxODU3LDM5MTM0LDMyOTMzLDIxMjkwLDM1ODM3LDIxNTM2LDMyOTU0LDI0MjIzLDI3ODMyLDM2MTUzLDMzNDUyLDM3MjEwLDIxNTQ1LDI3Njc1LDIwOTk4LDMyNDM5LDIyMzY3LDI4OTU0LDI3Nzc0LDMxODgxLDIy''@;'; put 'put ''ODU5LDIwMjIxLDI0NTc1LDI0ODY4LDMxOTE0LDIwMDE2LDIzNTUzLDI2NTM5LDM0NTYyLDIzNzkyLDM4MTU1LDM5MTE4LDMwMTI3LDI4OTI1LDM2ODk4LDIwOTExLDMyNTQxLDM1NzczLDIyODU3LDIwOTY0LDIwMzE1LDIxNTQyLDIyODI3LDI1OTc1LDMyOTMyLDIzNDEzLDI1MjA2LDI1Mjgy''@;'; put 'put ''LDM2NzUyLDI0MTMzLDI3Njc5LDMxNTI2LDIwMjM5LDIwNDQwLDI2MzgxLDMxMzk1LDMxMzk2LDMxMzk5LDMxNDAxLDMxNDAyLDMxNDAzLDMxNDA2LDMxNDA3LDMxNDA4LDMxNDA5LDMxNDEwLDMxNDEyLDMxNDEzLDMxNDE0LDMxNDE1LDMxNDE2LDMxNDE3LDMxNDE4LDMxNDE5LDMxNDIwLDMx''@;'; put 'put ''NDIxLDMxNDIyLDMxNDI0LDMxNDI1LDMxNDI2LDMxNDI3LDMxNDI4LDMxNDI5LDMxNDMwLDMxNDMxLDMxNDMyLDMxNDMzLDMxNDM0LDMxNDM2LDMxNDM3LDMxNDM4LDMxNDM5LDMxNDQwLDMxNDQxLDMxNDQyLDMxNDQzLDMxNDQ0LDMxNDQ1LDMxNDQ3LDMxNDQ4LDMxNDUwLDMxNDUxLDMxNDUy''@;'; put 'put ''LDMxNDUzLDMxNDU3LDMxNDU4LDMxNDYwLDMxNDYzLDMxNDY0LDMxNDY1LDMxNDY2LDMxNDY3LDMxNDY4LDMxNDcwLDMxNDcyLDMxNDczLDMxNDc0LDMxNDc1LDMxNDc2LDMxNDc3LDMxNDc4LDMxNDc5LDMxNDgwLDMxNDgzLDMxNDg0LDMxNDg2LDMxNDg4LDMxNDg5LDMxNDkwLDMxNDkzLDMx''@;'; put 'put ''NDk1LDMxNDk3LDMxNTAwLDMxNTAxLDMxNTAyLDMxNTA0LDMxNTA2LDMxNTA3LDMxNTEwLDMxNTExLDMxNTEyLDMxNTE0LDMxNTE2LDMxNTE3LDMxNTE5LDMxNTIxLDMxNTIyLDMxNTIzLDMxNTI3LDMxNTI5LDMxNTMzLDI4MDE0LDI4MDc0LDMxMTE5LDM0OTkzLDI0MzQzLDI5OTk1LDI1MjQy''@;'; put 'put ''LDM2NzQxLDIwNDYzLDM3MzQwLDI2MDIzLDMzMDcxLDMzMTA1LDI0MjIwLDMzMTA0LDM2MjEyLDIxMTAzLDM1MjA2LDM2MTcxLDIyNzk3LDIwNjEzLDIwMTg0LDM4NDI4LDI5MjM4LDMzMTQ1LDM2MTI3LDIzNTAwLDM1NzQ3LDM4NDY4LDIyOTE5LDMyNTM4LDIxNjQ4LDIyMTM0LDIyMDMwLDM1''@;'; put 'put ''ODEzLDI1OTEzLDI3MDEwLDM4MDQxLDMwNDIyLDI4Mjk3LDI0MTc4LDI5OTc2LDI2NDM4LDI2NTc3LDMxNDg3LDMyOTI1LDM2MjE0LDI0ODYzLDMxMTc0LDI1OTU0LDM2MTk1LDIwODcyLDIxMDE4LDM4MDUwLDMyNTY4LDMyOTIzLDMyNDM0LDIzNzAzLDI4MjA3LDI2NDY0LDMxNzA1LDMwMzQ3''@;'; put 'put ''LDM5NjQwLDMzMTY3LDMyNjYwLDMxOTU3LDI1NjMwLDM4MjI0LDMxMjk1LDIxNTc4LDIxNzMzLDI3NDY4LDI1NjAxLDI1MDk2LDQwNTA5LDMzMDExLDMwMTA1LDIxMTA2LDM4NzYxLDMzODgzLDI2Njg0LDM0NTMyLDM4NDAxLDM4NTQ4LDM4MTI0LDIwMDEwLDIxNTA4LDMyNDczLDI2NjgxLDM2''@;'; put 'put ''MzE5LDMyNzg5LDI2MzU2LDI0MjE4LDMyNjk3LDMxNTM1LDMxNTM2LDMxNTM4LDMxNTQwLDMxNTQxLDMxNTQyLDMxNTQzLDMxNTQ1LDMxNTQ3LDMxNTQ5LDMxNTUxLDMxNTUyLDMxNTUzLDMxNTU0LDMxNTU1LDMxNTU2LDMxNTU4LDMxNTYwLDMxNTYyLDMxNTY1LDMxNTY2LDMxNTcxLDMxNTcz''@;'; put 'put ''LDMxNTc1LDMxNTc3LDMxNTgwLDMxNTgyLDMxNTgzLDMxNTg1LDMxNTg3LDMxNTg4LDMxNTg5LDMxNTkwLDMxNTkxLDMxNTkyLDMxNTkzLDMxNTk0LDMxNTk1LDMxNTk2LDMxNTk3LDMxNTk5LDMxNjAwLDMxNjAzLDMxNjA0LDMxNjA2LDMxNjA4LDMxNjEwLDMxNjEyLDMxNjEzLDMxNjE1LDMx''@;'; put 'put ''NjE3LDMxNjE4LDMxNjE5LDMxNjIwLDMxNjIyLDMxNjIzLDMxNjI0LDMxNjI1LDMxNjI2LDMxNjI3LDMxNjI4LDMxNjMwLDMxNjMxLDMxNjMzLDMxNjM0LDMxNjM1LDMxNjM4LDMxNjQwLDMxNjQxLDMxNjQyLDMxNjQzLDMxNjQ2LDMxNjQ3LDMxNjQ4LDMxNjUxLDMxNjUyLDMxNjUzLDMxNjYy''@;'; put 'put ''LDMxNjYzLDMxNjY0LDMxNjY2LDMxNjY3LDMxNjY5LDMxNjcwLDMxNjcxLDMxNjczLDMxNjc0LDMxNjc1LDMxNjc2LDMxNjc3LDMxNjc4LDMxNjc5LDMxNjgwLDMxNjgyLDMxNjgzLDMxNjg0LDIyNDY2LDMyODMxLDI2Nzc1LDI0MDM3LDI1OTE1LDIxMTUxLDI0Njg1LDQwODU4LDIwMzc5LDM2''@;'; put 'put ''NTI0LDIwODQ0LDIzNDY3LDI0MzM5LDI0MDQxLDI3NzQyLDI1MzI5LDM2MTI5LDIwODQ5LDM4MDU3LDIxMjQ2LDI3ODA3LDMzNTAzLDI5Mzk5LDIyNDM0LDI2NTAwLDM2MTQxLDIyODE1LDM2NzY0LDMzNzM1LDIxNjUzLDMxNjI5LDIwMjcyLDI3ODM3LDIzMzk2LDIyOTkzLDQwNzIzLDIxNDc2''@;'; put 'put ''LDM0NTA2LDM5NTkyLDM1ODk1LDMyOTI5LDI1OTI1LDM5MDM4LDIyMjY2LDM4NTk5LDIxMDM4LDI5OTE2LDIxMDcyLDIzNTIxLDI1MzQ2LDM1MDc0LDIwMDU0LDI1Mjk2LDI0NjE4LDI2ODc0LDIwODUxLDIzNDQ4LDIwODk2LDM1MjY2LDMxNjQ5LDM5MzAyLDMyNTkyLDI0ODE1LDI4NzQ4LDM2''@;'; put 'put ''MTQzLDIwODA5LDI0MTkxLDM2ODkxLDI5ODA4LDM1MjY4LDIyMzE3LDMwNzg5LDI0NDAyLDQwODYzLDM4Mzk0LDM2NzEyLDM5NzQwLDM1ODA5LDMwMzI4LDI2NjkwLDI2NTg4LDM2MzMwLDM2MTQ5LDIxMDUzLDM2NzQ2LDI4Mzc4LDI2ODI5LDM4MTQ5LDM3MTAxLDIyMjY5LDI2NTI0LDM1MDY1''@;'; put 'put ''LDM2ODA3LDIxNzA0LDMxNjg1LDMxNjg4LDMxNjg5LDMxNjkwLDMxNjkxLDMxNjkzLDMxNjk0LDMxNjk1LDMxNjk2LDMxNjk4LDMxNzAwLDMxNzAxLDMxNzAyLDMxNzAzLDMxNzA0LDMxNzA3LDMxNzA4LDMxNzEwLDMxNzExLDMxNzEyLDMxNzE0LDMxNzE1LDMxNzE2LDMxNzE5LDMxNzIwLDMx''@;'; put 'put ''NzIxLDMxNzIzLDMxNzI0LDMxNzI1LDMxNzI3LDMxNzI4LDMxNzMwLDMxNzMxLDMxNzMyLDMxNzMzLDMxNzM0LDMxNzM2LDMxNzM3LDMxNzM4LDMxNzM5LDMxNzQxLDMxNzQzLDMxNzQ0LDMxNzQ1LDMxNzQ2LDMxNzQ3LDMxNzQ4LDMxNzQ5LDMxNzUwLDMxNzUyLDMxNzUzLDMxNzU0LDMxNzU3''@;'; put 'put ''LDMxNzU4LDMxNzYwLDMxNzYxLDMxNzYyLDMxNzYzLDMxNzY0LDMxNzY1LDMxNzY3LDMxNzY4LDMxNzY5LDMxNzcwLDMxNzcxLDMxNzcyLDMxNzczLDMxNzc0LDMxNzc2LDMxNzc3LDMxNzc4LDMxNzc5LDMxNzgwLDMxNzgxLDMxNzg0LDMxNzg1LDMxNzg3LDMxNzg4LDMxNzg5LDMxNzkwLDMx''@;'; put 'put ''NzkxLDMxNzkyLDMxNzkzLDMxNzk0LDMxNzk1LDMxNzk2LDMxNzk3LDMxNzk4LDMxNzk5LDMxODAxLDMxODAyLDMxODAzLDMxODA0LDMxODA1LDMxODA2LDMxODEwLDM5NjA4LDIzNDAxLDI4MDIzLDI3Njg2LDIwMTMzLDIzNDc1LDM5NTU5LDM3MjE5LDI1ZTMsMzcwMzksMzg4ODksMjE1NDcs''@;'; put 'put ''MjgwODUsMjM1MDYsMjA5ODksMjE4OTgsMzI1OTcsMzI3NTIsMjU3ODgsMjU0MjEsMjYwOTcsMjUwMjIsMjQ3MTcsMjg5MzgsMjc3MzUsMjc3MjEsMjI4MzEsMjY0NzcsMzMzMjIsMjI3NDEsMjIxNTgsMzU5NDYsMjc2MjcsMzcwODUsMjI5MDksMzI3OTEsMjE0OTUsMjgwMDksMjE2MjEsMjE5''@;'; put 'put ''MTcsMzM2NTUsMzM3NDMsMjY2ODAsMzExNjYsMjE2NDQsMjAzMDksMjE1MTIsMzA0MTgsMzU5NzcsMzg0MDIsMjc4MjcsMjgwODgsMzYyMDMsMzUwODgsNDA1NDgsMzYxNTQsMjIwNzksNDA2NTcsMzAxNjUsMjQ0NTYsMjk0MDgsMjQ2ODAsMjE3NTYsMjAxMzYsMjcxNzgsMzQ5MTMsMjQ2NTgs''@;'; put 'put ''MzY3MjAsMjE3MDAsMjg4ODgsMzQ0MjUsNDA1MTEsMjc5NDYsMjM0MzksMjQzNDQsMzI0MTgsMjE4OTcsMjAzOTksMjk0OTIsMjE1NjQsMjE0MDIsMjA1MDUsMjE1MTgsMjE2MjgsMjAwNDYsMjQ1NzMsMjk3ODYsMjI3NzQsMzM4OTksMzI5OTMsMzQ2NzYsMjkzOTIsMzE5NDYsMjgyNDYsMzE4''@;'; put 'put ''MTEsMzE4MTIsMzE4MTMsMzE4MTQsMzE4MTUsMzE4MTYsMzE4MTcsMzE4MTgsMzE4MTksMzE4MjAsMzE4MjIsMzE4MjMsMzE4MjQsMzE4MjUsMzE4MjYsMzE4MjcsMzE4MjgsMzE4MjksMzE4MzAsMzE4MzEsMzE4MzIsMzE4MzMsMzE4MzQsMzE4MzUsMzE4MzYsMzE4MzcsMzE4MzgsMzE4Mzks''@;'; put 'put ''MzE4NDAsMzE4NDEsMzE4NDIsMzE4NDMsMzE4NDQsMzE4NDUsMzE4NDYsMzE4NDcsMzE4NDgsMzE4NDksMzE4NTAsMzE4NTEsMzE4NTIsMzE4NTMsMzE4NTQsMzE4NTUsMzE4NTYsMzE4NTcsMzE4NTgsMzE4NjEsMzE4NjIsMzE4NjMsMzE4NjQsMzE4NjUsMzE4NjYsMzE4NzAsMzE4NzEsMzE4''@;'; put 'put ''NzIsMzE4NzMsMzE4NzQsMzE4NzUsMzE4NzYsMzE4NzcsMzE4NzgsMzE4NzksMzE4ODAsMzE4ODIsMzE4ODMsMzE4ODQsMzE4ODUsMzE4ODYsMzE4ODcsMzE4ODgsMzE4OTEsMzE4OTIsMzE4OTQsMzE4OTcsMzE4OTgsMzE4OTksMzE5MDQsMzE5MDUsMzE5MDcsMzE5MTAsMzE5MTEsMzE5MTIs''@;'; put 'put ''MzE5MTMsMzE5MTUsMzE5MTYsMzE5MTcsMzE5MTksMzE5MjAsMzE5MjQsMzE5MjUsMzE5MjYsMzE5MjcsMzE5MjgsMzE5MzAsMzE5MzEsMjQzNTksMzQzODIsMjE4MDQsMjUyNTIsMjAxMTQsMjc4MTgsMjUxNDMsMzM0NTcsMjE3MTksMjEzMjYsMjk1MDIsMjgzNjksMzAwMTEsMjEwMTAsMjEy''@;'; put 'put ''NzAsMzU4MDUsMjcwODgsMjQ0NTgsMjQ1NzYsMjgxNDIsMjIzNTEsMjc0MjYsMjk2MTUsMjY3MDcsMzY4MjQsMzI1MzEsMjU0NDIsMjQ3MzksMjE3OTYsMzAxODYsMzU5MzgsMjg5NDksMjgwNjcsMjM0NjIsMjQxODcsMzM2MTgsMjQ5MDgsNDA2NDQsMzA5NzAsMzQ2NDcsMzE3ODMsMzAzNDMs''@;'; put 'put ''MjA5NzYsMjQ4MjIsMjkwMDQsMjYxNzksMjQxNDAsMjQ2NTMsMzU4NTQsMjg3ODQsMjUzODEsMzY3NDUsMjQ1MDksMjQ2NzQsMzQ1MTYsMjIyMzgsMjc1ODUsMjQ3MjQsMjQ5MzUsMjEzMjEsMjQ4MDAsMjYyMTQsMzYxNTksMzEyMjksMjAyNTAsMjg5MDUsMjc3MTksMzU3NjMsMzU4MjYsMzI0''@;'; put 'put ''NzIsMzM2MzYsMjYxMjcsMjMxMzAsMzk3NDYsMjc5ODUsMjgxNTEsMzU5MDUsMjc5NjMsMjAyNDksMjg3NzksMzM3MTksMjUxMTAsMjQ3ODUsMzg2NjksMzYxMzUsMzEwOTYsMjA5ODcsMjIzMzQsMjI1MjIsMjY0MjYsMzAwNzIsMzEyOTMsMzEyMTUsMzE2MzcsMzE5MzUsMzE5MzYsMzE5Mzgs''@;'; put 'put ''MzE5MzksMzE5NDAsMzE5NDIsMzE5NDUsMzE5NDcsMzE5NTAsMzE5NTEsMzE5NTIsMzE5NTMsMzE5NTQsMzE5NTUsMzE5NTYsMzE5NjAsMzE5NjIsMzE5NjMsMzE5NjUsMzE5NjYsMzE5NjksMzE5NzAsMzE5NzEsMzE5NzIsMzE5NzMsMzE5NzQsMzE5NzUsMzE5NzcsMzE5NzgsMzE5NzksMzE5''@;'; put 'put ''ODAsMzE5ODEsMzE5ODIsMzE5ODQsMzE5ODUsMzE5ODYsMzE5ODcsMzE5ODgsMzE5ODksMzE5OTAsMzE5OTEsMzE5OTMsMzE5OTQsMzE5OTYsMzE5OTcsMzE5OTgsMzE5OTksMzJlMywzMjAwMSwzMjAwMiwzMjAwMywzMjAwNCwzMjAwNSwzMjAwNiwzMjAwNywzMjAwOCwzMjAwOSwzMjAxMSwz''@;'; put 'put ''MjAxMiwzMjAxMywzMjAxNCwzMjAxNSwzMjAxNiwzMjAxNywzMjAxOCwzMjAxOSwzMjAyMCwzMjAyMSwzMjAyMiwzMjAyMywzMjAyNCwzMjAyNSwzMjAyNiwzMjAyNywzMjAyOCwzMjAyOSwzMjAzMCwzMjAzMSwzMjAzMywzMjAzNSwzMjAzNiwzMjAzNywzMjAzOCwzMjA0MCwzMjA0MSwzMjA0''@;'; put 'put ''MiwzMjA0NCwzMjA0NSwzMjA0NiwzMjA0OCwzMjA0OSwzMjA1MCwzMjA1MSwzMjA1MiwzMjA1MywzMjA1NCwzMjkwOCwzOTI2OSwzNjg1NywyODYwOCwzNTc0OSw0MDQ4MSwyMzAyMCwzMjQ4OSwzMjUyMSwyMTUxMywyNjQ5NywyNjg0MCwzNjc1MywzMTgyMSwzODU5OCwyMTQ1MCwyNDYxMywz''@;'; put 'put ''MDE0MiwyNzc2MiwyMTM2MywyMzI0MSwzMjQyMywyNTM4MCwyMDk2MCwzMzAzNCwyNDA0OSwzNDAxNSwyNTIxNiwyMDg2NCwyMzM5NSwyMDIzOCwzMTA4NSwyMTA1OCwyNDc2MCwyNzk4MiwyMzQ5MiwyMzQ5MCwzNTc0NSwzNTc2MCwyNjA4MiwyNDUyNCwzODQ2OSwyMjkzMSwzMjQ4NywzMjQy''@;'; put 'put ''NiwyMjAyNSwyNjU1MSwyMjg0MSwyMDMzOSwyMzQ3OCwyMTE1MiwzMzYyNiwzOTA1MCwzNjE1OCwzMDAwMiwzODA3OCwyMDU1MSwzMTI5MiwyMDIxNSwyNjU1MCwzOTU1MCwyMzIzMywyNzUxNiwzMDQxNywyMjM2MiwyMzU3NCwzMTU0NiwzODM4OCwyOTAwNiwyMDg2MCwzMjkzNywzMzM5Miwy''@;'; put 'put ''MjkwNCwzMjUxNiwzMzU3NSwyNjgxNiwyNjYwNCwzMDg5NywzMDgzOSwyNTMxNSwyNTQ0MSwzMTYxNiwyMDQ2MSwyMTA5OCwyMDk0MywzMzYxNiwyNzA5OSwzNzQ5MiwzNjM0MSwzNjE0NSwzNTI2NSwzODE5MCwzMTY2MSwyMDIxNCwzMjA1NSwzMjA1NiwzMjA1NywzMjA1OCwzMjA1OSwzMjA2''@;'; put 'put ''MCwzMjA2MSwzMjA2MiwzMjA2MywzMjA2NCwzMjA2NSwzMjA2NiwzMjA2NywzMjA2OCwzMjA2OSwzMjA3MCwzMjA3MSwzMjA3MiwzMjA3MywzMjA3NCwzMjA3NSwzMjA3NiwzMjA3NywzMjA3OCwzMjA3OSwzMjA4MCwzMjA4MSwzMjA4MiwzMjA4MywzMjA4NCwzMjA4NSwzMjA4NiwzMjA4Nywz''@;'; put 'put ''MjA4OCwzMjA4OSwzMjA5MCwzMjA5MSwzMjA5MiwzMjA5MywzMjA5NCwzMjA5NSwzMjA5NiwzMjA5NywzMjA5OCwzMjA5OSwzMjEwMCwzMjEwMSwzMjEwMiwzMjEwMywzMjEwNCwzMjEwNSwzMjEwNiwzMjEwNywzMjEwOCwzMjEwOSwzMjExMSwzMjExMiwzMjExMywzMjExNCwzMjExNSwzMjEx''@;'; put 'put ''NiwzMjExNywzMjExOCwzMjEyMCwzMjEyMSwzMjEyMiwzMjEyMywzMjEyNCwzMjEyNSwzMjEyNiwzMjEyNywzMjEyOCwzMjEyOSwzMjEzMCwzMjEzMSwzMjEzMiwzMjEzMywzMjEzNCwzMjEzNSwzMjEzNiwzMjEzNywzMjEzOCwzMjEzOSwzMjE0MCwzMjE0MSwzMjE0MiwzMjE0MywzMjE0NCwz''@;'; put 'put ''MjE0NSwzMjE0NiwzMjE0NywzMjE0OCwzMjE0OSwzMjE1MCwzMjE1MSwzMjE1MiwyMDU4MSwzMzMyOCwyMTA3MywzOTI3OSwyODE3NiwyODI5MywyODA3MSwyNDMxNCwyMDcyNSwyMzAwNCwyMzU1OCwyNzk3NCwyNzc0MywzMDA4NiwzMzkzMSwyNjcyOCwyMjg3MCwzNTc2MiwyMTI4MCwzNzIz''@;'; put 'put ''MywzODQ3NywzNDEyMSwyNjg5OCwzMDk3NywyODk2NiwzMzAxNCwyMDEzMiwzNzA2NiwyNzk3NSwzOTU1NiwyMzA0NywyMjIwNCwyNTYwNSwzODEyOCwzMDY5OSwyMDM4OSwzMzA1MCwyOTQwOSwzNTI4MiwzOTI5MCwzMjU2NCwzMjQ3OCwyMTExOSwyNTk0NSwzNzIzNywzNjczNSwzNjczOSwy''@;'; put 'put ''MTQ4MywzMTM4MiwyNTU4MSwyNTUwOSwzMDM0MiwzMTIyNCwzNDkwMywzODQ1NCwyNTEzMCwyMTE2MywzMzQxMCwyNjcwOCwyNjQ4MCwyNTQ2MywzMDU3MSwzMTQ2OSwyNzkwNSwzMjQ2NywzNTI5OSwyMjk5MiwyNTEwNiwzNDI0OSwzMzQ0NSwzMDAyOCwyMDUxMSwyMDE3MSwzMDExNywzNTgx''@;'; put 'put ''OSwyMzYyNiwyNDA2MiwzMTU2MywyNjAyMCwzNzMyOSwyMDE3MCwyNzk0MSwzNTE2NywzMjAzOSwzODE4MiwyMDE2NSwzNTg4MCwzNjgyNywzODc3MSwyNjE4NywzMTEwNSwzNjgxNywyODkwOCwyODAyNCwzMjE1MywzMjE1NCwzMjE1NSwzMjE1NiwzMjE1NywzMjE1OCwzMjE1OSwzMjE2MCwz''@;'; put 'put ''MjE2MSwzMjE2MiwzMjE2MywzMjE2NCwzMjE2NSwzMjE2NywzMjE2OCwzMjE2OSwzMjE3MCwzMjE3MSwzMjE3MiwzMjE3MywzMjE3NSwzMjE3NiwzMjE3NywzMjE3OCwzMjE3OSwzMjE4MCwzMjE4MSwzMjE4MiwzMjE4MywzMjE4NCwzMjE4NSwzMjE4NiwzMjE4NywzMjE4OCwzMjE4OSwzMjE5''@;'; put 'put ''MCwzMjE5MSwzMjE5MiwzMjE5MywzMjE5NCwzMjE5NSwzMjE5NiwzMjE5NywzMjE5OCwzMjE5OSwzMjIwMCwzMjIwMSwzMjIwMiwzMjIwMywzMjIwNCwzMjIwNSwzMjIwNiwzMjIwNywzMjIwOCwzMjIwOSwzMjIxMCwzMjIxMSwzMjIxMiwzMjIxMywzMjIxNCwzMjIxNSwzMjIxNiwzMjIxNywz''@;'; put 'put ''MjIxOCwzMjIxOSwzMjIyMCwzMjIyMSwzMjIyMiwzMjIyMywzMjIyNCwzMjIyNSwzMjIyNiwzMjIyNywzMjIyOCwzMjIyOSwzMjIzMCwzMjIzMSwzMjIzMiwzMjIzMywzMjIzNCwzMjIzNSwzMjIzNiwzMjIzNywzMjIzOCwzMjIzOSwzMjI0MCwzMjI0MSwzMjI0MiwzMjI0MywzMjI0NCwzMjI0''@;'; put 'put ''NSwzMjI0NiwzMjI0NywzMjI0OCwzMjI0OSwzMjI1MCwyMzYxMywyMTE3MCwzMzYwNiwyMDgzNCwzMzU1MCwzMDU1NSwyNjIzMCw0MDEyMCwyMDE0MCwyNDc3OCwzMTkzNCwzMTkyMywzMjQ2MywyMDExNywzNTY4NiwyNjIyMywzOTA0OCwzODc0NSwyMjY1OSwyNTk2NCwzODIzNiwyNDQ1Miwz''@;'; put 'put ''MDE1MywzODc0MiwzMTQ1NSwzMTQ1NCwyMDkyOCwyODg0NywzMTM4NCwyNTU3OCwzMTM1MCwzMjQxNiwyOTU5MCwzODg5MywyMDAzNywyODc5MiwyMDA2MSwzNzIwMiwyMTQxNywyNTkzNywyNjA4NywzMzI3NiwzMzI4NSwyMTY0NiwyMzYwMSwzMDEwNiwzODgxNiwyNTMwNCwyOTQwMSwzMDE0''@;'; put 'put ''MSwyMzYyMSwzOTU0NSwzMzczOCwyMzYxNiwyMTYzMiwzMDY5NywyMDAzMCwyNzgyMiwzMjg1OCwyNTI5OCwyNTQ1NCwyNDA0MCwyMDg1NSwzNjMxNywzNjM4MiwzODE5MSwyMDQ2NSwyMTQ3NywyNDgwNywyODg0NCwyMTA5NSwyNTQyNCw0MDUxNSwyMzA3MSwyMDUxOCwzMDUxOSwyMTM2Nywz''@;'; put 'put ''MjQ4MiwyNTczMywyNTg5OSwyNTIyNSwyNTQ5NiwyMDUwMCwyOTIzNywzNTI3MywyMDkxNSwzNTc3NiwzMjQ3NywyMjM0MywzMzc0MCwzODA1NSwyMDg5MSwyMTUzMSwyMzgwMywzMjI1MSwzMjI1MiwzMjI1MywzMjI1NCwzMjI1NSwzMjI1NiwzMjI1NywzMjI1OCwzMjI1OSwzMjI2MCwzMjI2''@;'; put 'put ''MSwzMjI2MiwzMjI2MywzMjI2NCwzMjI2NSwzMjI2NiwzMjI2NywzMjI2OCwzMjI2OSwzMjI3MCwzMjI3MSwzMjI3MiwzMjI3MywzMjI3NCwzMjI3NSwzMjI3NiwzMjI3NywzMjI3OCwzMjI3OSwzMjI4MCwzMjI4MSwzMjI4MiwzMjI4MywzMjI4NCwzMjI4NSwzMjI4NiwzMjI4NywzMjI4OCwz''@;'; put 'put ''MjI4OSwzMjI5MCwzMjI5MSwzMjI5MiwzMjI5MywzMjI5NCwzMjI5NSwzMjI5NiwzMjI5NywzMjI5OCwzMjI5OSwzMjMwMCwzMjMwMSwzMjMwMiwzMjMwMywzMjMwNCwzMjMwNSwzMjMwNiwzMjMwNywzMjMwOCwzMjMwOSwzMjMxMCwzMjMxMSwzMjMxMiwzMjMxMywzMjMxNCwzMjMxNiwzMjMx''@;'; put 'put ''NywzMjMxOCwzMjMxOSwzMjMyMCwzMjMyMiwzMjMyMywzMjMyNCwzMjMyNSwzMjMyNiwzMjMyOCwzMjMyOSwzMjMzMCwzMjMzMSwzMjMzMiwzMjMzMywzMjMzNCwzMjMzNSwzMjMzNiwzMjMzNywzMjMzOCwzMjMzOSwzMjM0MCwzMjM0MSwzMjM0MiwzMjM0MywzMjM0NCwzMjM0NSwzMjM0Niwz''@;'; put 'put ''MjM0NywzMjM0OCwzMjM0OSwyMDQyNiwzMTQ1OSwyNzk5NCwzNzA4OSwzOTU2NywyMTg4OCwyMTY1NCwyMTM0NSwyMTY3OSwyNDMyMCwyNTU3NywyNjk5OSwyMDk3NSwyNDkzNiwyMTAwMiwyMjU3MCwyMTIwOCwyMjM1MCwzMDczMywzMDQ3NSwyNDI0NywyNDk1MSwzMTk2OCwyNTE3OSwyNTIz''@;'; put 'put ''OSwyMDEzMCwyODgyMSwzMjc3MSwyNTMzNSwyODkwMCwzODc1MiwyMjM5MSwzMzQ5OSwyNjYwNywyNjg2OSwzMDkzMywzOTA2MywzMTE4NSwyMjc3MSwyMTY4MywyMTQ4NywyODIxMiwyMDgxMSwyMTA1MSwyMzQ1OCwzNTgzOCwzMjk0MywyMTgyNywyMjQzOCwyNDY5MSwyMjM1MywyMTU0OSwz''@;'; put 'put ''MTM1NCwyNDY1NiwyMzM4MCwyNTUxMSwyNTI0OCwyMTQ3NSwyNTE4NywyMzQ5NSwyNjU0MywyMTc0MSwzMTM5MSwzMzUxMCwzNzIzOSwyNDIxMSwzNTA0NCwyMjg0MCwyMjQ0NiwyNTM1OCwzNjMyOCwzMzAwNywyMjM1OSwzMTYwNywyMDM5MywyNDU1NSwyMzQ4NSwyNzQ1NCwyMTI4MSwzMTU2''@;'; put 'put ''OCwyOTM3OCwyNjY5NCwzMDcxOSwzMDUxOCwyNjEwMywyMDkxNywyMDExMSwzMDQyMCwyMzc0MywzMTM5NywzMzkwOSwyMjg2MiwzOTc0NSwyMDYwOCwzMjM1MCwzMjM1MSwzMjM1MiwzMjM1MywzMjM1NCwzMjM1NSwzMjM1NiwzMjM1NywzMjM1OCwzMjM1OSwzMjM2MCwzMjM2MSwzMjM2Miwz''@;'; put 'put ''MjM2MywzMjM2NCwzMjM2NSwzMjM2NiwzMjM2NywzMjM2OCwzMjM2OSwzMjM3MCwzMjM3MSwzMjM3MiwzMjM3MywzMjM3NCwzMjM3NSwzMjM3NiwzMjM3NywzMjM3OCwzMjM3OSwzMjM4MCwzMjM4MSwzMjM4MiwzMjM4MywzMjM4NCwzMjM4NSwzMjM4NywzMjM4OCwzMjM4OSwzMjM5MCwzMjM5''@;'; put 'put ''MSwzMjM5MiwzMjM5MywzMjM5NCwzMjM5NSwzMjM5NiwzMjM5NywzMjM5OCwzMjM5OSwzMjQwMCwzMjQwMSwzMjQwMiwzMjQwMywzMjQwNCwzMjQwNSwzMjQwNiwzMjQwNywzMjQwOCwzMjQwOSwzMjQxMCwzMjQxMiwzMjQxMywzMjQxNCwzMjQzMCwzMjQzNiwzMjQ0MywzMjQ0NCwzMjQ3MCwz''@;'; put 'put ''MjQ4NCwzMjQ5MiwzMjUwNSwzMjUyMiwzMjUyOCwzMjU0MiwzMjU2NywzMjU2OSwzMjU3MSwzMjU3MiwzMjU3MywzMjU3NCwzMjU3NSwzMjU3NiwzMjU3NywzMjU3OSwzMjU4MiwzMjU4MywzMjU4NCwzMjU4NSwzMjU4NiwzMjU4NywzMjU4OCwzMjU4OSwzMjU5MCwzMjU5MSwzMjU5NCwzMjU5''@;'; put 'put ''NSwzOTMwNCwyNDg3MSwyODI5MSwyMjM3MiwyNjExOCwyNTQxNCwyMjI1NiwyNTMyNCwyNTE5MywyNDI3NSwzODQyMCwyMjQwMywyNTI4OSwyMTg5NSwzNDU5MywzMzA5OCwzNjc3MSwyMTg2MiwzMzcxMywyNjQ2OSwzNjE4MiwzNDAxMywyMzE0NiwyNjYzOSwyNTMxOCwzMTcyNiwzODQxNywy''@;'; put 'put ''MDg0OCwyODU3MiwzNTg4OCwyNTU5NywzNTI3MiwyNTA0MiwzMjUxOCwyODg2NiwyODM4OSwyOTcwMSwyNzAyOCwyOTQzNiwyNDI2NiwzNzA3MCwyNjM5MSwyODAxMCwyNTQzOCwyMTE3MSwyOTI4MiwzMjc2OSwyMDMzMiwyMzAxMywzNzIyNiwyODg4OSwyODA2MSwyMTIwMiwyMDA0OCwzODY0''@;'; put 'put ''NywzODI1MywzNDE3NCwzMDkyMiwzMjA0NywyMDc2OSwyMjQxOCwyNTc5NCwzMjkwNywzMTg2NywyNzg4MiwyNjg2NSwyNjk3NCwyMDkxOSwyMTQwMCwyNjc5MiwyOTMxMyw0MDY1NCwzMTcyOSwyOTQzMiwzMTE2MywyODQzNSwyOTcwMiwyNjQ0NiwzNzMyNCw0MDEwMCwzMTAzNiwzMzY3Mywz''@;'; put 'put ''MzYyMCwyMTUxOSwyNjY0NywyMDAyOSwyMTM4NSwyMTE2OSwzMDc4MiwyMTM4MiwyMTAzMywyMDYxNiwyMDM2MywyMDQzMiwzMjU5OCwzMjYwMSwzMjYwMywzMjYwNCwzMjYwNSwzMjYwNiwzMjYwOCwzMjYxMSwzMjYxMiwzMjYxMywzMjYxNCwzMjYxNSwzMjYxOSwzMjYyMCwzMjYyMSwzMjYy''@;'; put 'put ''MywzMjYyNCwzMjYyNywzMjYyOSwzMjYzMCwzMjYzMSwzMjYzMiwzMjYzNCwzMjYzNSwzMjYzNiwzMjYzNywzMjYzOSwzMjY0MCwzMjY0MiwzMjY0MywzMjY0NCwzMjY0NSwzMjY0NiwzMjY0NywzMjY0OCwzMjY0OSwzMjY1MSwzMjY1MywzMjY1NSwzMjY1NiwzMjY1NywzMjY1OCwzMjY1OSwz''@;'; put 'put ''MjY2MSwzMjY2MiwzMjY2MywzMjY2NCwzMjY2NSwzMjY2NywzMjY2OCwzMjY3MiwzMjY3NCwzMjY3NSwzMjY3NywzMjY3OCwzMjY4MCwzMjY4MSwzMjY4MiwzMjY4MywzMjY4NCwzMjY4NSwzMjY4NiwzMjY4OSwzMjY5MSwzMjY5MiwzMjY5MywzMjY5NCwzMjY5NSwzMjY5OCwzMjY5OSwzMjcw''@;'; put 'put ''MiwzMjcwNCwzMjcwNiwzMjcwNywzMjcwOCwzMjcxMCwzMjcxMSwzMjcxMiwzMjcxMywzMjcxNSwzMjcxNywzMjcxOSwzMjcyMCwzMjcyMSwzMjcyMiwzMjcyMywzMjcyNiwzMjcyNywzMjcyOSwzMjczMCwzMjczMSwzMjczMiwzMjczMywzMjczNCwzMjczOCwzMjczOSwzMDE3OCwzMTQzNSwz''@;'; put 'put ''MTg5MCwyNzgxMywzODU4MiwyMTE0NywyOTgyNywyMTczNywyMDQ1NywzMjg1MiwzMzcxNCwzNjgzMCwzODI1NiwyNDI2NSwyNDYwNCwyODA2MywyNDA4OCwyNTk0NywzMzA4MCwzODE0MiwyNDY1MSwyODg2MCwzMjQ1MSwzMTkxOCwyMDkzNywyNjc1MywzMTkyMSwzMzM5MSwyMDAwNCwzNjc0''@;'; put 'put ''MiwzNzMyNywyNjIzOCwyMDE0MiwzNTg0NSwyNTc2OSwzMjg0MiwyMDY5OCwzMDEwMywyOTEzNCwyMzUyNSwzNjc5NywyODUxOCwyMDEwMiwyNTczMCwzODI0MywyNDI3OCwyNjAwOSwyMTAxNSwzNTAxMCwyODg3MiwyMTE1NSwyOTQ1NCwyOTc0NywyNjUxOSwzMDk2NywzODY3OCwyMDAyMCwz''@;'; put 'put ''NzA1MSw0MDE1OCwyODEwNywyMDk1NSwzNjE2MSwyMTUzMywyNTI5NCwyOTYxOCwzMzc3NywzODY0Niw0MDgzNiwzODA4MywyMDI3OCwzMjY2NiwyMDk0MCwyODc4OSwzODUxNywyMzcyNSwzOTA0NiwyMTQ3OCwyMDE5NiwyODMxNiwyOTcwNSwyNzA2MCwzMDgyNywzOTMxMSwzMDA0MSwyMTAx''@;'; put 'put ''NiwzMDI0NCwyNzk2OSwyNjYxMSwyMDg0NSw0MDg1NywzMjg0MywyMTY1NywzMTU0OCwzMTQyMywzMjc0MCwzMjc0MywzMjc0NCwzMjc0NiwzMjc0NywzMjc0OCwzMjc0OSwzMjc1MSwzMjc1NCwzMjc1NiwzMjc1NywzMjc1OCwzMjc1OSwzMjc2MCwzMjc2MSwzMjc2MiwzMjc2NSwzMjc2Niwz''@;'; put 'put ''Mjc2NywzMjc3MCwzMjc3NSwzMjc3NiwzMjc3NywzMjc3OCwzMjc4MiwzMjc4MywzMjc4NSwzMjc4NywzMjc5NCwzMjc5NSwzMjc5NywzMjc5OCwzMjc5OSwzMjgwMSwzMjgwMywzMjgwNCwzMjgxMSwzMjgxMiwzMjgxMywzMjgxNCwzMjgxNSwzMjgxNiwzMjgxOCwzMjgyMCwzMjgyNSwzMjgy''@;'; put 'put ''NiwzMjgyOCwzMjgzMCwzMjgzMiwzMjgzMywzMjgzNiwzMjgzNywzMjgzOSwzMjg0MCwzMjg0MSwzMjg0NiwzMjg0NywzMjg0OCwzMjg0OSwzMjg1MSwzMjg1MywzMjg1NCwzMjg1NSwzMjg1NywzMjg1OSwzMjg2MCwzMjg2MSwzMjg2MiwzMjg2MywzMjg2NCwzMjg2NSwzMjg2NiwzMjg2Nywz''@;'; put 'put ''Mjg2OCwzMjg2OSwzMjg3MCwzMjg3MSwzMjg3MiwzMjg3NSwzMjg3NiwzMjg3NywzMjg3OCwzMjg3OSwzMjg4MCwzMjg4MiwzMjg4MywzMjg4NCwzMjg4NSwzMjg4NiwzMjg4NywzMjg4OCwzMjg4OSwzMjg5MCwzMjg5MSwzMjg5MiwzMjg5MywzODUzNCwyMjQwNCwyNTMxNCwzODQ3MSwyNzAw''@;'; put 'put ''NCwyMzA0NCwyNTYwMiwzMTY5OSwyODQzMSwzODQ3NSwzMzQ0NiwyMTM0NiwzOTA0NSwyNDIwOCwyODgwOSwyNTUyMywyMTM0OCwzNDM4Myw0MDA2NSw0MDU5NSwzMDg2MCwzODcwNiwzNjMzNSwzNjE2Miw0MDU3NSwyODUxMCwzMTEwOCwyNDQwNSwzODQ3MCwyNTEzNCwzOTU0MCwyMTUyNSwz''@;'; put 'put ''ODEwOSwyMDM4NywyNjA1MywyMzY1MywyMzY0OSwzMjUzMywzNDM4NSwyNzY5NSwyNDQ1OSwyOTU3NSwyODM4OCwzMjUxMSwyMzc4MiwyNTM3MSwyMzQwMiwyODM5MCwyMTM2NSwyMDA4MSwyNTUwNCwzMDA1MywyNTI0OSwzNjcxOCwyMDI2MiwyMDE3NywyNzgxNCwzMjQzOCwzNTc3MCwzMzgy''@;'; put 'put ''MSwzNDc0NiwzMjU5OSwzNjkyMywzODE3OSwzMTY1NywzOTU4NSwzNTA2NCwzMzg1MywyNzkzMSwzOTU1OCwzMjQ3NiwyMjkyMCw0MDYzNSwyOTU5NSwzMDcyMSwzNDQzNCwzOTUzMiwzOTU1NCwyMjA0MywyMTUyNywyMjQ3NSwyMDA4MCw0MDYxNCwyMTMzNCwzNjgwOCwzMzAzMywzMDYxMCwz''@;'; put 'put ''OTMxNCwzNDU0MiwyODM4NSwzNDA2NywyNjM2NCwyNDkzMCwyODQ1OSwzMjg5NCwzMjg5NywzMjg5OCwzMjkwMSwzMjkwNCwzMjkwNiwzMjkwOSwzMjkxMCwzMjkxMSwzMjkxMiwzMjkxMywzMjkxNCwzMjkxNiwzMjkxNywzMjkxOSwzMjkyMSwzMjkyNiwzMjkzMSwzMjkzNCwzMjkzNSwzMjkz''@;'; put 'put ''NiwzMjk0MCwzMjk0NCwzMjk0NywzMjk0OSwzMjk1MCwzMjk1MiwzMjk1MywzMjk1NSwzMjk2NSwzMjk2NywzMjk2OCwzMjk2OSwzMjk3MCwzMjk3MSwzMjk3NSwzMjk3NiwzMjk3NywzMjk3OCwzMjk3OSwzMjk4MCwzMjk4MSwzMjk4NCwzMjk5MSwzMjk5MiwzMjk5NCwzMjk5NSwzMjk5OCwz''@;'; put 'put ''MzAwNiwzMzAxMywzMzAxNSwzMzAxNywzMzAxOSwzMzAyMiwzMzAyMywzMzAyNCwzMzAyNSwzMzAyNywzMzAyOCwzMzAyOSwzMzAzMSwzMzAzMiwzMzAzNSwzMzAzNiwzMzA0NSwzMzA0NywzMzA0OSwzMzA1MSwzMzA1MiwzMzA1MywzMzA1NSwzMzA1NiwzMzA1NywzMzA1OCwzMzA1OSwzMzA2''@;'; put 'put ''MCwzMzA2MSwzMzA2MiwzMzA2MywzMzA2NCwzMzA2NSwzMzA2NiwzMzA2NywzMzA2OSwzMzA3MCwzMzA3MiwzMzA3NSwzMzA3NiwzMzA3NywzMzA3OSwzMzA4MSwzMzA4MiwzMzA4MywzMzA4NCwzMzA4NSwzMzA4NywzNTg4MSwzMzQyNiwzMzU3OSwzMDQ1MCwyNzY2NywyNDUzNywzMzcyNSwy''@;'; put 'put ''OTQ4MywzMzU0MSwzODE3MCwyNzYxMSwzMDY4MywzODA4NiwyMTM1OSwzMzUzOCwyMDg4MiwyNDEyNSwzNTk4MCwzNjE1MiwyMDA0MCwyOTYxMSwyNjUyMiwyNjc1NywzNzIzOCwzODY2NSwyOTAyOCwyNzgwOSwzMDQ3MywyMzE4NiwzODIwOSwyNzU5OSwzMjY1NCwyNjE1MSwyMzUwNCwyMjk2''@;'; put 'put ''OSwyMzE5NCwzODM3NiwzODM5MSwyMDIwNCwzMzgwNCwzMzk0NSwyNzMwOCwzMDQzMSwzODE5MiwyOTQ2NywyNjc5MCwyMzM5MSwzMDUxMSwzNzI3NCwzODc1MywzMTk2NCwzNjg1NSwzNTg2OCwyNDM1NywzMTg1OSwzMTE5MiwzNTI2OSwyNzg1MiwzNDU4OCwyMzQ5NCwyNDEzMCwyNjgyNSwz''@;'; put 'put ''MDQ5NiwzMjUwMSwyMDg4NSwyMDgxMywyMTE5MywyMzA4MSwzMjUxNywzODc1NCwzMzQ5NSwyNTU1MSwzMDU5NiwzNDI1NiwzMTE4NiwyODIxOCwyNDIxNywyMjkzNywzNDA2NSwyODc4MSwyNzY2NSwyNTI3OSwzMDM5OSwyNTkzNSwyNDc1MSwzODM5NywyNjEyNiwzNDcxOSw0MDQ4MywzODEy''@;'; put 'put ''NSwyMTUxNywyMTYyOSwzNTg4NCwyNTcyMCwzMzA4OCwzMzA4OSwzMzA5MCwzMzA5MSwzMzA5MiwzMzA5MywzMzA5NSwzMzA5NywzMzEwMSwzMzEwMiwzMzEwMywzMzEwNiwzMzExMCwzMzExMSwzMzExMiwzMzExNSwzMzExNiwzMzExNywzMzExOCwzMzExOSwzMzEyMSwzMzEyMiwzMzEyMywz''@;'; put 'put ''MzEyNCwzMzEyNiwzMzEyOCwzMzEzMCwzMzEzMSwzMzEzMiwzMzEzNSwzMzEzOCwzMzEzOSwzMzE0MSwzMzE0MiwzMzE0MywzMzE0NCwzMzE1MywzMzE1NSwzMzE1NiwzMzE1NywzMzE1OCwzMzE1OSwzMzE2MSwzMzE2MywzMzE2NCwzMzE2NSwzMzE2NiwzMzE2OCwzMzE3MCwzMzE3MSwzMzE3''@;'; put 'put ''MiwzMzE3MywzMzE3NCwzMzE3NSwzMzE3NywzMzE3OCwzMzE4MiwzMzE4MywzMzE4NCwzMzE4NSwzMzE4NiwzMzE4OCwzMzE4OSwzMzE5MSwzMzE5MywzMzE5NSwzMzE5NiwzMzE5NywzMzE5OCwzMzE5OSwzMzIwMCwzMzIwMSwzMzIwMiwzMzIwNCwzMzIwNSwzMzIwNiwzMzIwNywzMzIwOCwz''@;'; put 'put ''MzIwOSwzMzIxMiwzMzIxMywzMzIxNCwzMzIxNSwzMzIyMCwzMzIyMSwzMzIyMywzMzIyNCwzMzIyNSwzMzIyNywzMzIyOSwzMzIzMCwzMzIzMSwzMzIzMiwzMzIzMywzMzIzNCwzMzIzNSwyNTcyMSwzNDMyMSwyNzE2OSwzMzE4MCwzMDk1MiwyNTcwNSwzOTc2NCwyNTI3MywyNjQxMSwzMzcw''@;'; put 'put ''NywyMjY5Niw0MDY2NCwyNzgxOSwyODQ0OCwyMzUxOCwzODQ3NiwzNTg1MSwyOTI3OSwyNjU3NiwyNTI4NywyOTI4MSwyMDEzNywyMjk4MiwyNzU5NywyMjY3NSwyNjI4NiwyNDE0OSwyMTIxNSwyNDkxNywyNjQwOCwzMDQ0NiwzMDU2NiwyOTI4NywzMTMwMiwyNTM0MywyMTczOCwyMTU4NCwz''@;'; put 'put ''ODA0OCwzNzAyNywyMzA2OCwzMjQzNSwyNzY3MCwyMDAzNSwyMjkwMiwzMjc4NCwyMjg1NiwyMTMzNSwzMDAwNywzODU5MCwyMjIxOCwyNTM3NiwzMzA0MSwyNDcwMCwzODM5MywyODExOCwyMTYwMiwzOTI5NywyMDg2OSwyMzI3MywzMzAyMSwyMjk1OCwzODY3NSwyMDUyMiwyNzg3NywyMzYx''@;'; put 'put ''MiwyNTMxMSwyMDMyMCwyMTMxMSwzMzE0NywzNjg3MCwyODM0NiwzNDA5MSwyNTI4OCwyNDE4MCwzMDkxMCwyNTc4MSwyNTQ2NywyNDU2NSwyMzA2NCwzNzI0Nyw0MDQ3OSwyMzYxNSwyNTQyMywzMjgzNCwyMzQyMSwyMTg3MCwzODIxOCwzODIyMSwyODAzNywyNDc0NCwyNjU5MiwyOTQwNiwy''@;'; put 'put ''MDk1NywyMzQyNSwzMzIzNiwzMzIzNywzMzIzOCwzMzIzOSwzMzI0MCwzMzI0MSwzMzI0MiwzMzI0MywzMzI0NCwzMzI0NSwzMzI0NiwzMzI0NywzMzI0OCwzMzI0OSwzMzI1MCwzMzI1MiwzMzI1MywzMzI1NCwzMzI1NiwzMzI1NywzMzI1OSwzMzI2MiwzMzI2MywzMzI2NCwzMzI2NSwzMzI2''@;'; put 'put ''NiwzMzI2OSwzMzI3MCwzMzI3MSwzMzI3MiwzMzI3MywzMzI3NCwzMzI3NywzMzI3OSwzMzI4MywzMzI4NywzMzI4OCwzMzI4OSwzMzI5MCwzMzI5MSwzMzI5NCwzMzI5NSwzMzI5NywzMzI5OSwzMzMwMSwzMzMwMiwzMzMwMywzMzMwNCwzMzMwNSwzMzMwNiwzMzMwOSwzMzMxMiwzMzMxNiwz''@;'; put 'put ''MzMxNywzMzMxOCwzMzMxOSwzMzMyMSwzMzMyNiwzMzMzMCwzMzMzOCwzMzM0MCwzMzM0MSwzMzM0MywzMzM0NCwzMzM0NSwzMzM0NiwzMzM0NywzMzM0OSwzMzM1MCwzMzM1MiwzMzM1NCwzMzM1NiwzMzM1NywzMzM1OCwzMzM2MCwzMzM2MSwzMzM2MiwzMzM2MywzMzM2NCwzMzM2NSwzMzM2''@;'; put 'put ''NiwzMzM2NywzMzM2OSwzMzM3MSwzMzM3MiwzMzM3MywzMzM3NCwzMzM3NiwzMzM3NywzMzM3OCwzMzM3OSwzMzM4MCwzMzM4MSwzMzM4MiwzMzM4MywzMzM4NSwyNTMxOSwyNzg3MCwyOTI3NSwyNTE5NywzODA2MiwzMjQ0NSwzMzA0MywyNzk4NywyMDg5MiwyNDMyNCwyMjkwMCwyMTE2Miwy''@;'; put 'put ''NDU5NCwyMjg5OSwyNjI2MiwzNDM4NCwzMDExMSwyNTM4NiwyNTA2MiwzMTk4MywzNTgzNCwyMTczNCwyNzQzMSw0MDQ4NSwyNzU3MiwzNDI2MSwyMTU4OSwyMDU5OCwyNzgxMiwyMTg2NiwzNjI3NiwyOTIyOCwyNDA4NSwyNDU5NywyOTc1MCwyNTI5MywyNTQ5MCwyOTI2MCwyNDQ3MiwyODIy''@;'; put 'put ''NywyNzk2NiwyNTg1NiwyODUwNCwzMDQyNCwzMDkyOCwzMDQ2MCwzMDAzNiwyMTAyOCwyMTQ2NywyMDA1MSwyNDIyMiwyNjA0OSwzMjgxMCwzMjk4MiwyNTI0MywyMTYzOCwyMTAzMiwyODg0NiwzNDk1NywzNjMwNSwyNzg3MywyMTYyNCwzMjk4NiwyMjUyMSwzNTA2MCwzNjE4MCwzODUwNiwz''@;'; put 'put ''NzE5NywyMDMyOSwyNzgwMywyMTk0MywzMDQwNiwzMDc2OCwyNTI1NiwyODkyMSwyODU1OCwyNDQyOSwzNDAyOCwyNjg0MiwzMDg0NCwzMTczNSwzMzE5MiwyNjM3OSw0MDUyNywyNTQ0NywzMDg5NiwyMjM4MywzMDczOCwzODcxMywyNTIwOSwyNTI1OSwyMTEyOCwyOTc0OSwyNzYwNywzMzM4''@;'; put 'put ''NiwzMzM4NywzMzM4OCwzMzM4OSwzMzM5MywzMzM5NywzMzM5OCwzMzM5OSwzMzQwMCwzMzQwMywzMzQwNCwzMzQwOCwzMzQwOSwzMzQxMSwzMzQxMywzMzQxNCwzMzQxNSwzMzQxNywzMzQyMCwzMzQyNCwzMzQyNywzMzQyOCwzMzQyOSwzMzQzMCwzMzQzNCwzMzQzNSwzMzQzOCwzMzQ0MCwz''@;'; put 'put ''MzQ0MiwzMzQ0MywzMzQ0NywzMzQ1OCwzMzQ2MSwzMzQ2MiwzMzQ2NiwzMzQ2NywzMzQ2OCwzMzQ3MSwzMzQ3MiwzMzQ3NCwzMzQ3NSwzMzQ3NywzMzQ3OCwzMzQ4MSwzMzQ4OCwzMzQ5NCwzMzQ5NywzMzQ5OCwzMzUwMSwzMzUwNiwzMzUxMSwzMzUxMiwzMzUxMywzMzUxNCwzMzUxNiwzMzUx''@;'; put 'put ''NywzMzUxOCwzMzUyMCwzMzUyMiwzMzUyMywzMzUyNSwzMzUyNiwzMzUyOCwzMzUzMCwzMzUzMiwzMzUzMywzMzUzNCwzMzUzNSwzMzUzNiwzMzU0NiwzMzU0NywzMzU0OSwzMzU1MiwzMzU1NCwzMzU1NSwzMzU1OCwzMzU2MCwzMzU2MSwzMzU2NSwzMzU2NiwzMzU2NywzMzU2OCwzMzU2OSwz''@;'; put 'put ''MzU3MCwzMzU3MSwzMzU3MiwzMzU3MywzMzU3NCwzMzU3NywzMzU3OCwzMzU4MiwzMzU4NCwzMzU4NiwzMzU5MSwzMzU5NSwzMzU5NywyMTg2MCwzMzA4NiwzMDEzMCwzMDM4MiwyMTMwNSwzMDE3NCwyMDczMSwyMzYxNywzNTY5MiwzMTY4NywyMDU1OSwyOTI1NSwzOTU3NSwzOTEyOCwyODQx''@;'; put 'put ''OCwyOTkyMiwzMTA4MCwyNTczNSwzMDYyOSwyNTM0MCwzOTA1NywzNjEzOSwyMTY5NywzMjg1NiwyMDA1MCwyMjM3OCwzMzUyOSwzMzgwNSwyNDE3OSwyMDk3MywyOTk0MiwzNTc4MCwyMzYzMSwyMjM2OSwyNzkwMCwzOTA0NywyMzExMCwzMDc3MiwzOTc0OCwzNjg0MywzMTg5MywyMTA3OCwy''@;'; put 'put ''NTE2OSwzODEzOCwyMDE2NiwzMzY3MCwzMzg4OSwzMzc2OSwzMzk3MCwyMjQ4NCwyNjQyMCwyMjI3NSwyNjIyMiwyODAwNiwzNTg4OSwyNjMzMywyODY4OSwyNjM5OSwyNzQ1MCwyNjY0NiwyNTExNCwyMjk3MSwxOTk3MSwyMDkzMiwyODQyMiwyNjU3OCwyNzc5MSwyMDg1NCwyNjgyNywyMjg1''@;'; put 'put ''NSwyNzQ5NSwzMDA1NCwyMzgyMiwzMzA0MCw0MDc4NCwyNjA3MSwzMTA0OCwzMTA0MSwzOTU2OSwzNjIxNSwyMzY4MiwyMDA2MiwyMDIyNSwyMTU1MSwyMjg2NSwzMDczMiwyMjEyMCwyNzY2OCwzNjgwNCwyNDMyMywyNzc3MywyNzg3NSwzNTc1NSwyNTQ4OCwzMzU5OCwzMzU5OSwzMzYwMSwz''@;'; put 'put ''MzYwMiwzMzYwNCwzMzYwNSwzMzYwOCwzMzYxMCwzMzYxMSwzMzYxMiwzMzYxMywzMzYxNCwzMzYxOSwzMzYyMSwzMzYyMiwzMzYyMywzMzYyNCwzMzYyNSwzMzYyOSwzMzYzNCwzMzY0OCwzMzY0OSwzMzY1MCwzMzY1MSwzMzY1MiwzMzY1MywzMzY1NCwzMzY1NywzMzY1OCwzMzY2MiwzMzY2''@;'; put 'put ''MywzMzY2NCwzMzY2NSwzMzY2NiwzMzY2NywzMzY2OCwzMzY3MSwzMzY3MiwzMzY3NCwzMzY3NSwzMzY3NiwzMzY3NywzMzY3OSwzMzY4MCwzMzY4MSwzMzY4NCwzMzY4NSwzMzY4NiwzMzY4NywzMzY4OSwzMzY5MCwzMzY5MywzMzY5NSwzMzY5NywzMzY5OCwzMzY5OSwzMzcwMCwzMzcwMSwz''@;'; put 'put ''MzcwMiwzMzcwMywzMzcwOCwzMzcwOSwzMzcxMCwzMzcxMSwzMzcxNywzMzcyMywzMzcyNiwzMzcyNywzMzczMCwzMzczMSwzMzczMiwzMzczNCwzMzczNiwzMzczNywzMzczOSwzMzc0MSwzMzc0MiwzMzc0NCwzMzc0NSwzMzc0NiwzMzc0NywzMzc0OSwzMzc1MSwzMzc1MywzMzc1NCwzMzc1''@;'; put 'put ''NSwzMzc1OCwzMzc2MiwzMzc2MywzMzc2NCwzMzc2NiwzMzc2NywzMzc2OCwzMzc3MSwzMzc3MiwzMzc3MywyNDY4OCwyNzk2NSwyOTMwMSwyNTE5MCwzODAzMCwzODA4NSwyMTMxNSwzNjgwMSwzMTYxNCwyMDE5MSwzNTg3OCwyMDA5NCw0MDY2MCwzODA2NSwzODA2NywyMTA2OSwyODUwOCwz''@;'; put 'put ''Njk2MywyNzk3MywzNTg5MiwyMjU0NSwyMzg4NCwyNzQyNCwyNzQ2NSwyNjUzOCwyMTU5NSwzMzEwOCwzMjY1MiwyMjY4MSwzNDEwMywyNDM3OCwyNTI1MCwyNzIwNywzODIwMSwyNTk3MCwyNDcwOCwyNjcyNSwzMDYzMSwyMDA1MiwyMDM5MiwyNDAzOSwzODgwOCwyNTc3MiwzMjcyOCwyMzc4''@;'; put 'put ''OSwyMDQzMSwzMTM3MywyMDk5OSwzMzU0MCwxOTk4OCwyNDYyMywzMTM2MywzODA1NCwyMDQwNSwyMDE0NiwzMTIwNiwyOTc0OCwyMTIyMCwzMzQ2NSwyNTgxMCwzMTE2NSwyMzUxNywyNzc3NywzODczOCwzNjczMSwyNzY4MiwyMDU0MiwyMTM3NSwyODE2NSwyNTgwNiwyNjIyOCwyNzY5Niwy''@;'; put 'put ''NDc3MywzOTAzMSwzNTgzMSwyNDE5OCwyOTc1NiwzMTM1MSwzMTE3OSwxOTk5MiwzNzA0MSwyOTY5OSwyNzcxNCwyMjIzNCwzNzE5NSwyNzg0NSwzNjIzNSwyMTMwNiwzNDUwMiwyNjM1NCwzNjUyNywyMzYyNCwzOTUzNywyODE5MiwzMzc3NCwzMzc3NSwzMzc3OSwzMzc4MCwzMzc4MSwzMzc4''@;'; put 'put ''MiwzMzc4MywzMzc4NiwzMzc4NywzMzc4OCwzMzc5MCwzMzc5MSwzMzc5MiwzMzc5NCwzMzc5NywzMzc5OSwzMzgwMCwzMzgwMSwzMzgwMiwzMzgwOCwzMzgxMCwzMzgxMSwzMzgxMiwzMzgxMywzMzgxNCwzMzgxNSwzMzgxNywzMzgxOCwzMzgxOSwzMzgyMiwzMzgyMywzMzgyNCwzMzgyNSwz''@;'; put 'put ''MzgyNiwzMzgyNywzMzgzMywzMzgzNCwzMzgzNSwzMzgzNiwzMzgzNywzMzgzOCwzMzgzOSwzMzg0MCwzMzg0MiwzMzg0MywzMzg0NCwzMzg0NSwzMzg0NiwzMzg0NywzMzg0OSwzMzg1MCwzMzg1MSwzMzg1NCwzMzg1NSwzMzg1NiwzMzg1NywzMzg1OCwzMzg1OSwzMzg2MCwzMzg2MSwzMzg2''@;'; put 'put ''MywzMzg2NCwzMzg2NSwzMzg2NiwzMzg2NywzMzg2OCwzMzg2OSwzMzg3MCwzMzg3MSwzMzg3MiwzMzg3NCwzMzg3NSwzMzg3NiwzMzg3NywzMzg3OCwzMzg4MCwzMzg4NSwzMzg4NiwzMzg4NywzMzg4OCwzMzg5MCwzMzg5MiwzMzg5MywzMzg5NCwzMzg5NSwzMzg5NiwzMzg5OCwzMzkwMiwz''@;'; put 'put ''MzkwMywzMzkwNCwzMzkwNiwzMzkwOCwzMzkxMSwzMzkxMywzMzkxNSwzMzkxNiwyMTQ2MiwyMzA5NCw0MDg0MywzNjI1OSwyMTQzNSwyMjI4MCwzOTA3OSwyNjQzNSwzNzI3NSwyNzg0OSwyMDg0MCwzMDE1NCwyNTMzMSwyOTM1NiwyMTA0OCwyMTE0OSwzMjU3MCwyODgyMCwzMDI2NCwyMTM2''@;'; put 'put ''NCw0MDUyMiwyNzA2MywzMDgzMCwzODU5MiwzNTAzMywzMjY3NiwyODk4MiwyOTEyMywyMDg3MywyNjU3OSwyOTkyNCwyMjc1NiwyNTg4MCwyMjE5OSwzNTc1MywzOTI4NiwyNTIwMCwzMjQ2OSwyNDgyNSwyODkwOSwyMjc2NCwyMDE2MSwyMDE1NCwyNDUyNSwzODg4NywyMDIxOSwzNTc0OCwy''@;'; put 'put ''MDk5NSwyMjkyMiwzMjQyNywyNTE3MiwyMDE3MywyNjA4NSwyNTEwMiwzMzU5MiwzMzk5MywzMzYzNSwzNDcwMSwyOTA3NiwyODM0MiwyMzQ4MSwzMjQ2NiwyMDg4NywyNTU0NSwyNjU4MCwzMjkwNSwzMzU5MywzNDgzNywyMDc1NCwyMzQxOCwyMjkxNCwzNjc4NSwyMDA4MywyNzc0MSwyMDgz''@;'; put 'put ''NywzNTEwOSwzNjcxOSwzODQ0NiwzNDEyMiwyOTc5MCwzODE2MCwzODM4NCwyODA3MCwzMzUwOSwyNDM2OSwyNTc0NiwyNzkyMiwzMzgzMiwzMzEzNCw0MDEzMSwyMjYyMiwzNjE4NywxOTk3NywyMTQ0MSwzMzkxNywzMzkxOCwzMzkxOSwzMzkyMCwzMzkyMSwzMzkyMywzMzkyNCwzMzkyNSwz''@;'; put 'put ''MzkyNiwzMzkzMCwzMzkzMywzMzkzNSwzMzkzNiwzMzkzNywzMzkzOCwzMzkzOSwzMzk0MCwzMzk0MSwzMzk0MiwzMzk0NCwzMzk0NiwzMzk0NywzMzk0OSwzMzk1MCwzMzk1MSwzMzk1MiwzMzk1NCwzMzk1NSwzMzk1NiwzMzk1NywzMzk1OCwzMzk1OSwzMzk2MCwzMzk2MSwzMzk2MiwzMzk2''@;'; put 'put ''MywzMzk2NCwzMzk2NSwzMzk2NiwzMzk2OCwzMzk2OSwzMzk3MSwzMzk3MywzMzk3NCwzMzk3NSwzMzk3OSwzMzk4MCwzMzk4MiwzMzk4NCwzMzk4NiwzMzk4NywzMzk4OSwzMzk5MCwzMzk5MSwzMzk5MiwzMzk5NSwzMzk5NiwzMzk5OCwzMzk5OSwzNDAwMiwzNDAwNCwzNDAwNSwzNDAwNywz''@;'; put 'put ''NDAwOCwzNDAwOSwzNDAxMCwzNDAxMSwzNDAxMiwzNDAxNCwzNDAxNywzNDAxOCwzNDAyMCwzNDAyMywzNDAyNCwzNDAyNSwzNDAyNiwzNDAyNywzNDAyOSwzNDAzMCwzNDAzMSwzNDAzMywzNDAzNCwzNDAzNSwzNDAzNiwzNDAzNywzNDAzOCwzNDAzOSwzNDA0MCwzNDA0MSwzNDA0MiwzNDA0''@;'; put 'put ''MywzNDA0NSwzNDA0NiwzNDA0OCwzNDA0OSwzNDA1MCwyMDI1NCwyNTk1NSwyNjcwNSwyMTk3MSwyMDAwNywyNTYyMCwzOTU3OCwyNTE5NSwyMzIzNCwyOTc5MSwzMzM5NCwyODA3MywyNjg2MiwyMDcxMSwzMzY3OCwzMDcyMiwyNjQzMiwyMTA0OSwyNzgwMSwzMjQzMywyMDY2NywyMTg2MSwy''@;'; put 'put ''OTAyMiwzMTU3OSwyNjE5NCwyOTY0MiwzMzUxNSwyNjQ0MSwyMzY2NSwyMTAyNCwyOTA1MywzNDkyMywzODM3OCwzODQ4NSwyNTc5NywzNjE5MywzMzIwMywyMTg5MiwyNzczMywyNTE1OSwzMjU1OCwyMjY3NCwyMDI2MCwyMTgzMCwzNjE3NSwyNjE4OCwxOTk3OCwyMzU3OCwzNTA1OSwyNjc4''@;'; put 'put ''NiwyNTQyMiwzMTI0NSwyODkwMywzMzQyMSwyMTI0MiwzODkwMiwyMzU2OSwyMTczNiwzNzA0NSwzMjQ2MSwyMjg4MiwzNjE3MCwzNDUwMywzMzI5MiwzMzI5MywzNjE5OCwyNTY2OCwyMzU1NiwyNDkxMywyODA0MSwzMTAzOCwzNTc3NCwzMDc3NSwzMDAwMywyMTYyNywyMDI4MCwzNjUyMywy''@;'; put 'put ''ODE0NSwyMzA3MiwzMjQ1MywzMTA3MCwyNzc4NCwyMzQ1NywyMzE1OCwyOTk3OCwzMjk1OCwyNDkxMCwyODE4MywyMjc2OCwyOTk4MywyOTk4OSwyOTI5OCwyMTMxOSwzMjQ5OSwzNDA1MSwzNDA1MiwzNDA1MywzNDA1NCwzNDA1NSwzNDA1NiwzNDA1NywzNDA1OCwzNDA1OSwzNDA2MSwzNDA2''@;'; put 'put ''MiwzNDA2MywzNDA2NCwzNDA2NiwzNDA2OCwzNDA2OSwzNDA3MCwzNDA3MiwzNDA3MywzNDA3NSwzNDA3NiwzNDA3NywzNDA3OCwzNDA4MCwzNDA4MiwzNDA4MywzNDA4NCwzNDA4NSwzNDA4NiwzNDA4NywzNDA4OCwzNDA4OSwzNDA5MCwzNDA5MywzNDA5NCwzNDA5NSwzNDA5NiwzNDA5Nywz''@;'; put 'put ''NDA5OCwzNDA5OSwzNDEwMCwzNDEwMSwzNDEwMiwzNDExMCwzNDExMSwzNDExMiwzNDExMywzNDExNCwzNDExNiwzNDExNywzNDExOCwzNDExOSwzNDEyMywzNDEyNCwzNDEyNSwzNDEyNiwzNDEyNywzNDEyOCwzNDEyOSwzNDEzMCwzNDEzMSwzNDEzMiwzNDEzMywzNDEzNSwzNDEzNiwzNDEz''@;'; put 'put ''OCwzNDEzOSwzNDE0MCwzNDE0MSwzNDE0MywzNDE0NCwzNDE0NSwzNDE0NiwzNDE0NywzNDE0OSwzNDE1MCwzNDE1MSwzNDE1MywzNDE1NCwzNDE1NSwzNDE1NiwzNDE1NywzNDE1OCwzNDE1OSwzNDE2MCwzNDE2MSwzNDE2MywzNDE2NSwzNDE2NiwzNDE2NywzNDE2OCwzNDE3MiwzNDE3Mywz''@;'; put 'put ''NDE3NSwzNDE3NiwzNDE3NywzMDQ2NSwzMDQyNywyMTA5NywzMjk4OCwyMjMwNywyNDA3MiwyMjgzMywyOTQyMiwyNjA0NSwyODI4NywzNTc5OSwyMzYwOCwzNDQxNywyMTMxMywzMDcwNywyNTM0MiwyNjEwMiwyMDE2MCwzOTEzNSwzNDQzMiwyMzQ1NCwzNTc4MiwyMTQ5MCwzMDY5MCwyMDM1''@;'; put 'put ''MSwyMzYzMCwzOTU0MiwyMjk4NywyNDMzNSwzMTAzNCwyMjc2MywxOTk5MCwyNjYyMywyMDEwNywyNTMyNSwzNTQ3NSwzNjg5MywyMTE4MywyNjE1OSwyMTk4MCwyMjEyNCwzNjg2NiwyMDE4MSwyMDM2NSwzNzMyMiwzOTI4MCwyNzY2MywyNDA2NiwyNDY0MywyMzQ2MCwzNTI3MCwzNTc5Nywy''@;'; put 'put ''NTkxMCwyNTE2MywzOTMxOCwyMzQzMiwyMzU1MSwyNTQ4MCwyMTgwNiwyMTQ2MywzMDI0NiwyMDg2MSwzNDA5MiwyNjUzMCwyNjgwMywyNzUzMCwyNTIzNCwzNjc1NSwyMTQ2MCwzMzI5OCwyODExMywzMDA5NSwyMDA3MCwzNjE3NCwyMzQwOCwyOTA4NywzNDIyMywyNjI1NywyNjMyOSwzMjYy''@;'; put 'put ''NiwzNDU2MCw0MDY1Myw0MDczNiwyMzY0NiwyNjQxNSwzNjg0OCwyNjY0MSwyNjQ2MywyNTEwMSwzMTQ0NiwyMjY2MSwyNDI0NiwyNTk2OCwyODQ2NSwzNDE3OCwzNDE3OSwzNDE4MiwzNDE4NCwzNDE4NSwzNDE4NiwzNDE4NywzNDE4OCwzNDE4OSwzNDE5MCwzNDE5MiwzNDE5MywzNDE5NCwz''@;'; put 'put ''NDE5NSwzNDE5NiwzNDE5NywzNDE5OCwzNDE5OSwzNDIwMCwzNDIwMSwzNDIwMiwzNDIwNSwzNDIwNiwzNDIwNywzNDIwOCwzNDIwOSwzNDIxMCwzNDIxMSwzNDIxMywzNDIxNCwzNDIxNSwzNDIxNywzNDIxOSwzNDIyMCwzNDIyMSwzNDIyNSwzNDIyNiwzNDIyNywzNDIyOCwzNDIyOSwzNDIz''@;'; put 'put ''MCwzNDIzMiwzNDIzNCwzNDIzNSwzNDIzNiwzNDIzNywzNDIzOCwzNDIzOSwzNDI0MCwzNDI0MiwzNDI0MywzNDI0NCwzNDI0NSwzNDI0NiwzNDI0NywzNDI0OCwzNDI1MCwzNDI1MSwzNDI1MiwzNDI1MywzNDI1NCwzNDI1NywzNDI1OCwzNDI2MCwzNDI2MiwzNDI2MywzNDI2NCwzNDI2NSwz''@;'; put 'put ''NDI2NiwzNDI2NywzNDI2OSwzNDI3MCwzNDI3MSwzNDI3MiwzNDI3MywzNDI3NCwzNDI3NSwzNDI3NywzNDI3OCwzNDI3OSwzNDI4MCwzNDI4MiwzNDI4MywzNDI4NCwzNDI4NSwzNDI4NiwzNDI4NywzNDI4OCwzNDI4OSwzNDI5MCwzNDI5MSwzNDI5MiwzNDI5MywzNDI5NCwzNDI5NSwzNDI5''@;'; put 'put ''NiwyNDY2MSwyMTA0NywzMjc4MSwyNTY4NCwzNDkyOCwyOTk5MywyNDA2OSwyNjY0MywyNTMzMiwzODY4NCwyMTQ1MiwyOTI0NSwzNTg0MSwyNzcwMCwzMDU2MSwzMTI0NiwyMTU1MCwzMDYzNiwzOTAzNCwzMzMwOCwzNTgyOCwzMDgwNSwyNjM4OCwyODg2NSwyNjAzMSwyNTc0OSwyMjA3MCwy''@;'; put 'put ''NDYwNSwzMTE2OSwyMTQ5NiwxOTk5NywyNzUxNSwzMjkwMiwyMzU0NiwyMTk4NywyMjIzNSwyMDI4MiwyMDI4NCwzOTI4MiwyNDA1MSwyNjQ5NCwzMjgyNCwyNDU3OCwzOTA0MiwzNjg2NSwyMzQzNSwzNTc3MiwzNTgyOSwyNTYyOCwzMzM2OCwyNTgyMiwyMjAxMywzMzQ4NywzNzIyMSwyMDQz''@;'; put 'put ''OSwzMjAzMiwzNjg5NSwzMTkwMywyMDcyMywyMjYwOSwyODMzNSwyMzQ4NywzNTc4NSwzMjg5OSwzNzI0MCwzMzk0OCwzMTYzOSwzNDQyOSwzODUzOSwzODU0MywzMjQ4NSwzOTYzNSwzMDg2MiwyMzY4MSwzMTMxOSwzNjkzMCwzODU2NywzMTA3MSwyMzM4NSwyNTQzOSwzMTQ5OSwzNDAwMSwy''@;'; put 'put ''Njc5NywyMTc2NiwzMjU1MywyOTcxMiwzMjAzNCwzODE0NSwyNTE1MiwyMjYwNCwyMDE4MiwyMzQyNywyMjkwNSwyMjYxMiwzNDI5NywzNDI5OCwzNDMwMCwzNDMwMSwzNDMwMiwzNDMwNCwzNDMwNSwzNDMwNiwzNDMwNywzNDMwOCwzNDMxMCwzNDMxMSwzNDMxMiwzNDMxMywzNDMxNCwzNDMx''@;'; put 'put ''NSwzNDMxNiwzNDMxNywzNDMxOCwzNDMxOSwzNDMyMCwzNDMyMiwzNDMyMywzNDMyNCwzNDMyNSwzNDMyNywzNDMyOCwzNDMyOSwzNDMzMCwzNDMzMSwzNDMzMiwzNDMzMywzNDMzNCwzNDMzNSwzNDMzNiwzNDMzNywzNDMzOCwzNDMzOSwzNDM0MCwzNDM0MSwzNDM0MiwzNDM0NCwzNDM0Niwz''@;'; put 'put ''NDM0NywzNDM0OCwzNDM0OSwzNDM1MCwzNDM1MSwzNDM1MiwzNDM1MywzNDM1NCwzNDM1NSwzNDM1NiwzNDM1NywzNDM1OCwzNDM1OSwzNDM2MSwzNDM2MiwzNDM2MywzNDM2NSwzNDM2NiwzNDM2NywzNDM2OCwzNDM2OSwzNDM3MCwzNDM3MSwzNDM3MiwzNDM3MywzNDM3NCwzNDM3NSwzNDM3''@;'; put 'put ''NiwzNDM3NywzNDM3OCwzNDM3OSwzNDM4MCwzNDM4NiwzNDM4NywzNDM4OSwzNDM5MCwzNDM5MSwzNDM5MiwzNDM5MywzNDM5NSwzNDM5NiwzNDM5NywzNDM5OSwzNDQwMCwzNDQwMSwzNDQwMywzNDQwNCwzNDQwNSwzNDQwNiwzNDQwNywzNDQwOCwzNDQwOSwzNDQxMCwyOTU0OSwyNTM3NCwz''@;'; put 'put ''NjQyNywzNjM2NywzMjk3NCwzMzQ5MiwyNTI2MCwyMTQ4OCwyNzg4OCwzNzIxNCwyMjgyNiwyNDU3NywyNzc2MCwyMjM0OSwyNTY3NCwzNjEzOCwzMDI1MSwyODM5MywyMjM2MywyNzI2NCwzMDE5MiwyODUyNSwzNTg4NSwzNTg0OCwyMjM3NCwyNzYzMSwzNDk2MiwzMDg5OSwyNTUwNiwyMTQ5''@;'; put 'put ''NywyODg0NSwyNzc0OCwyMjYxNiwyNTY0MiwyMjUzMCwyNjg0OCwzMzE3OSwyMTc3NiwzMTk1OCwyMDUwNCwzNjUzOCwyODEwOCwzNjI1NSwyODkwNywyNTQ4NywyODA1OSwyODM3MiwzMjQ4NiwzMzc5NiwyNjY5MSwzNjg2NywyODEyMCwzODUxOCwzNTc1MiwyMjg3MSwyOTMwNSwzNDI3Niwz''@;'; put 'put ''MzE1MCwzMDE0MCwzNTQ2NiwyNjc5OSwyMTA3NiwzNjM4NiwzODE2MSwyNTU1MiwzOTA2NCwzNjQyMCwyMTg4NCwyMDMwNywyNjM2NywyMjE1OSwyNDc4OSwyODA1MywyMTA1OSwyMzYyNSwyMjgyNSwyODE1NSwyMjYzNSwzZTQsMjk5ODAsMjQ2ODQsMzMzMDAsMzMwOTQsMjUzNjEsMjY0NjUs''@;'; put 'put ''MzY4MzQsMzA1MjIsMzYzMzksMzYxNDgsMzgwODEsMjQwODYsMjEzODEsMjE1NDgsMjg4NjcsMzQ0MTMsMzQ0MTUsMzQ0MTYsMzQ0MTgsMzQ0MTksMzQ0MjAsMzQ0MjEsMzQ0MjIsMzQ0MjMsMzQ0MjQsMzQ0MzUsMzQ0MzYsMzQ0MzcsMzQ0MzgsMzQ0MzksMzQ0NDAsMzQ0NDEsMzQ0NDYsMzQ0''@;'; put 'put ''NDcsMzQ0NDgsMzQ0NDksMzQ0NTAsMzQ0NTIsMzQ0NTQsMzQ0NTUsMzQ0NTYsMzQ0NTcsMzQ0NTgsMzQ0NTksMzQ0NjIsMzQ0NjMsMzQ0NjQsMzQ0NjUsMzQ0NjYsMzQ0NjksMzQ0NzAsMzQ0NzUsMzQ0NzcsMzQ0NzgsMzQ0ODIsMzQ0ODMsMzQ0ODcsMzQ0ODgsMzQ0ODksMzQ0OTEsMzQ0OTIs''@;'; put 'put ''MzQ0OTMsMzQ0OTQsMzQ0OTUsMzQ0OTcsMzQ0OTgsMzQ0OTksMzQ1MDEsMzQ1MDQsMzQ1MDgsMzQ1MDksMzQ1MTQsMzQ1MTUsMzQ1MTcsMzQ1MTgsMzQ1MTksMzQ1MjIsMzQ1MjQsMzQ1MjUsMzQ1MjgsMzQ1MjksMzQ1MzAsMzQ1MzEsMzQ1MzMsMzQ1MzQsMzQ1MzUsMzQ1MzYsMzQ1MzgsMzQ1''@;'; put 'put ''MzksMzQ1NDAsMzQ1NDMsMzQ1NDksMzQ1NTAsMzQ1NTEsMzQ1NTQsMzQ1NTUsMzQ1NTYsMzQ1NTcsMzQ1NTksMzQ1NjEsMzQ1NjQsMzQ1NjUsMzQ1NjYsMzQ1NzEsMzQ1NzIsMzQ1NzQsMzQ1NzUsMzQ1NzYsMzQ1NzcsMzQ1ODAsMzQ1ODIsMjc3MTIsMjQzMTEsMjA1NzIsMjAxNDEsMjQyMzcs''@;'; put 'put ''MjU0MDIsMzMzNTEsMzY4OTAsMjY3MDQsMzcyMzAsMzA2NDMsMjE1MTYsMzgxMDgsMjQ0MjAsMzE0NjEsMjY3NDIsMjU0MTMsMzE1NzAsMzI0NzksMzAxNzEsMjA1OTksMjUyMzcsMjI4MzYsMzY4NzksMjA5ODQsMzExNzEsMzEzNjEsMjIyNzAsMjQ0NjYsMzY4ODQsMjgwMzQsMjM2NDgsMjIz''@;'; put 'put ''MDMsMjE1MjAsMjA4MjAsMjgyMzcsMjIyNDIsMjU1MTIsMzkwNTksMzMxNTEsMzQ1ODEsMzUxMTQsMzY4NjQsMjE1MzQsMjM2NjMsMzMyMTYsMjUzMDIsMjUxNzYsMzMwNzMsNDA1MDEsMzg0NjQsMzk1MzQsMzk1NDgsMjY5MjUsMjI5NDksMjUyOTksMjE4MjIsMjUzNjYsMjE3MDMsMzQ1MjEs''@;'; put 'put ''Mjc5NjQsMjMwNDMsMjk5MjYsMzQ5NzIsMjc0OTgsMjI4MDYsMzU5MTYsMjQzNjcsMjgyODYsMjk2MDksMzkwMzcsMjAwMjQsMjg5MTksMjM0MzYsMzA4NzEsMjU0MDUsMjYyMDIsMzAzNTgsMjQ3NzksMjM0NTEsMjMxMTMsMTk5NzUsMzMxMDksMjc3NTQsMjk1NzksMjAxMjksMjY1MDUsMzI1''@;'; put 'put ''OTMsMjQ0NDgsMjYxMDYsMjYzOTUsMjQ1MzYsMjI5MTYsMjMwNDEsMzQ1ODUsMzQ1ODcsMzQ1ODksMzQ1OTEsMzQ1OTIsMzQ1OTYsMzQ1OTgsMzQ1OTksMzQ2MDAsMzQ2MDIsMzQ2MDMsMzQ2MDQsMzQ2MDUsMzQ2MDcsMzQ2MDgsMzQ2MTAsMzQ2MTEsMzQ2MTMsMzQ2MTQsMzQ2MTYsMzQ2MTcs''@;'; put 'put ''MzQ2MTgsMzQ2MjAsMzQ2MjEsMzQ2MjQsMzQ2MjUsMzQ2MjYsMzQ2MjcsMzQ2MjgsMzQ2MjksMzQ2MzAsMzQ2MzQsMzQ2MzUsMzQ2MzcsMzQ2MzksMzQ2NDAsMzQ2NDEsMzQ2NDIsMzQ2NDQsMzQ2NDUsMzQ2NDYsMzQ2NDgsMzQ2NTAsMzQ2NTEsMzQ2NTIsMzQ2NTMsMzQ2NTQsMzQ2NTUsMzQ2''@;'; put 'put ''NTcsMzQ2NTgsMzQ2NjIsMzQ2NjMsMzQ2NjQsMzQ2NjUsMzQ2NjYsMzQ2NjcsMzQ2NjgsMzQ2NjksMzQ2NzEsMzQ2NzMsMzQ2NzQsMzQ2NzUsMzQ2NzcsMzQ2NzksMzQ2ODAsMzQ2ODEsMzQ2ODIsMzQ2ODcsMzQ2ODgsMzQ2ODksMzQ2OTIsMzQ2OTQsMzQ2OTUsMzQ2OTcsMzQ2OTgsMzQ3MDAs''@;'; put 'put ''MzQ3MDIsMzQ3MDMsMzQ3MDQsMzQ3MDUsMzQ3MDYsMzQ3MDgsMzQ3MDksMzQ3MTAsMzQ3MTIsMzQ3MTMsMzQ3MTQsMzQ3MTUsMzQ3MTYsMzQ3MTcsMzQ3MTgsMzQ3MjAsMzQ3MjEsMzQ3MjIsMzQ3MjMsMzQ3MjQsMjQwMTMsMjQ0OTQsMjEzNjEsMzg4ODYsMzY4MjksMjY2OTMsMjIyNjAsMjE4''@;'; put 'put ''MDcsMjQ3OTksMjAwMjYsMjg0OTMsMzI1MDAsMzM0NzksMzM4MDYsMjI5OTYsMjAyNTUsMjAyNjYsMjM2MTQsMzI0MjgsMjY0MTAsMzQwNzQsMjE2MTksMzAwMzEsMzI5NjMsMjE4OTAsMzk3NTksMjAzMDEsMjgyMDUsMzU4NTksMjM1NjEsMjQ5NDQsMjEzNTUsMzAyMzksMjgyMDEsMzQ0NDIs''@;'; put 'put ''MjU5OTEsMzgzOTUsMzI0NDEsMjE1NjMsMzEyODMsMzIwMTAsMzgzODIsMjE5ODUsMzI3MDUsMjk5MzQsMjUzNzMsMzQ1ODMsMjgwNjUsMzEzODksMjUxMDUsMjYwMTcsMjEzNTEsMjU1NjksMjc3NzksMjQwNDMsMjE1OTYsMzgwNTYsMjAwNDQsMjc3NDUsMzU4MjAsMjM2MjcsMjYwODAsMzM0''@;'; put 'put ''MzYsMjY3OTEsMjE1NjYsMjE1NTYsMjc1OTUsMjc0OTQsMjAxMTYsMjU0MTAsMjEzMjAsMzMzMTAsMjAyMzcsMjAzOTgsMjIzNjYsMjUwOTgsMzg2NTQsMjYyMTIsMjkyODksMjEyNDcsMjExNTMsMjQ3MzUsMzU4MjMsMjYxMzIsMjkwODEsMjY1MTIsMzUxOTksMzA4MDIsMzA3MTcsMjYyMjQs''@;'; put 'put ''MjIwNzUsMjE1NjAsMzgxNzcsMjkzMDYsMzQ3MjUsMzQ3MjYsMzQ3MjcsMzQ3MjksMzQ3MzAsMzQ3MzQsMzQ3MzYsMzQ3MzcsMzQ3MzgsMzQ3NDAsMzQ3NDIsMzQ3NDMsMzQ3NDQsMzQ3NDUsMzQ3NDcsMzQ3NDgsMzQ3NTAsMzQ3NTEsMzQ3NTMsMzQ3NTQsMzQ3NTUsMzQ3NTYsMzQ3NTcsMzQ3''@;'; put 'put ''NTksMzQ3NjAsMzQ3NjEsMzQ3NjQsMzQ3NjUsMzQ3NjYsMzQ3NjcsMzQ3NjgsMzQ3NzIsMzQ3NzMsMzQ3NzQsMzQ3NzUsMzQ3NzYsMzQ3NzcsMzQ3NzgsMzQ3ODAsMzQ3ODEsMzQ3ODIsMzQ3ODMsMzQ3ODUsMzQ3ODYsMzQ3ODcsMzQ3ODgsMzQ3OTAsMzQ3OTEsMzQ3OTIsMzQ3OTMsMzQ3OTUs''@;'; put 'put ''MzQ3OTYsMzQ3OTcsMzQ3OTksMzQ4MDAsMzQ4MDEsMzQ4MDIsMzQ4MDMsMzQ4MDQsMzQ4MDUsMzQ4MDYsMzQ4MDcsMzQ4MDgsMzQ4MTAsMzQ4MTEsMzQ4MTIsMzQ4MTMsMzQ4MTUsMzQ4MTYsMzQ4MTcsMzQ4MTgsMzQ4MjAsMzQ4MjEsMzQ4MjIsMzQ4MjMsMzQ4MjQsMzQ4MjUsMzQ4MjcsMzQ4''@;'; put 'put ''MjgsMzQ4MjksMzQ4MzAsMzQ4MzEsMzQ4MzIsMzQ4MzMsMzQ4MzQsMzQ4MzYsMzQ4MzksMzQ4NDAsMzQ4NDEsMzQ4NDIsMzQ4NDQsMzQ4NDUsMzQ4NDYsMzQ4NDcsMzQ4NDgsMzQ4NTEsMzEyMzIsMjQ2ODcsMjQwNzYsMjQ3MTMsMzMxODEsMjI4MDUsMjQ3OTYsMjkwNjAsMjg5MTEsMjgzMzAs''@;'; put 'put ''Mjc3MjgsMjkzMTIsMjcyNjgsMzQ5ODksMjQxMDksMjAwNjQsMjMyMTksMjE5MTYsMzgxMTUsMjc5MjcsMzE5OTUsMzg1NTMsMjUxMDMsMzI0NTQsMzA2MDYsMzQ0MzAsMjEyODMsMzg2ODYsMzY3NTgsMjYyNDcsMjM3NzcsMjAzODQsMjk0MjEsMTk5NzksMjE0MTQsMjI3OTksMjE1MjMsMjU0''@;'; put 'put ''NzIsMzgxODQsMjA4MDgsMjAxODUsNDAwOTIsMzI0MjAsMjE2ODgsMzYxMzIsMzQ5MDAsMzMzMzUsMzgzODYsMjgwNDYsMjQzNTgsMjMyNDQsMjYxNzQsMzg1MDUsMjk2MTYsMjk0ODYsMjE0MzksMzMxNDYsMzkzMDEsMzI2NzMsMjM0NjYsMzg1MTksMzg0ODAsMzI0NDcsMzA0NTYsMjE0MTAs''@;'; put 'put ''MzgyNjIsMzkzMjEsMzE2NjUsMzUxNDAsMjgyNDgsMjAwNjUsMzI3MjQsMzEwNzcsMzU4MTQsMjQ4MTksMjE3MDksMjAxMzksMzkwMzMsMjQwNTUsMjcyMzMsMjA2ODcsMjE1MjEsMzU5MzcsMzM4MzEsMzA4MTMsMzg2NjAsMjEwNjYsMjE3NDIsMjIxNzksMzgxNDQsMjgwNDAsMjM0NzcsMjgx''@;'; put 'put ''MDIsMjYxOTUsMzQ4NTIsMzQ4NTMsMzQ4NTQsMzQ4NTUsMzQ4NTYsMzQ4NTcsMzQ4NTgsMzQ4NTksMzQ4NjAsMzQ4NjEsMzQ4NjIsMzQ4NjMsMzQ4NjQsMzQ4NjUsMzQ4NjcsMzQ4NjgsMzQ4NjksMzQ4NzAsMzQ4NzEsMzQ4NzIsMzQ4NzQsMzQ4NzUsMzQ4NzcsMzQ4NzgsMzQ4NzksMzQ4ODEs''@;'; put 'put ''MzQ4ODIsMzQ4ODMsMzQ4ODYsMzQ4ODcsMzQ4ODgsMzQ4ODksMzQ4OTAsMzQ4OTEsMzQ4OTQsMzQ4OTUsMzQ4OTYsMzQ4OTcsMzQ4OTgsMzQ4OTksMzQ5MDEsMzQ5MDIsMzQ5MDQsMzQ5MDYsMzQ5MDcsMzQ5MDgsMzQ5MDksMzQ5MTAsMzQ5MTEsMzQ5MTIsMzQ5MTgsMzQ5MTksMzQ5MjIsMzQ5''@;'; put 'put ''MjUsMzQ5MjcsMzQ5MjksMzQ5MzEsMzQ5MzIsMzQ5MzMsMzQ5MzQsMzQ5MzYsMzQ5MzcsMzQ5MzgsMzQ5MzksMzQ5NDAsMzQ5NDQsMzQ5NDcsMzQ5NTAsMzQ5NTEsMzQ5NTMsMzQ5NTQsMzQ5NTYsMzQ5NTgsMzQ5NTksMzQ5NjAsMzQ5NjEsMzQ5NjMsMzQ5NjQsMzQ5NjUsMzQ5NjcsMzQ5Njgs''@;'; put 'put ''MzQ5NjksMzQ5NzAsMzQ5NzEsMzQ5NzMsMzQ5NzQsMzQ5NzUsMzQ5NzYsMzQ5NzcsMzQ5NzksMzQ5ODEsMzQ5ODIsMzQ5ODMsMzQ5ODQsMzQ5ODUsMzQ5ODYsMjM1NjcsMjMzODksMjY2NTcsMzI5MTgsMjE4ODAsMzE1MDUsMjU5MjgsMjY5NjQsMjAxMjMsMjc0NjMsMzQ2MzgsMzg3OTUsMjEz''@;'; put 'put ''MjcsMjUzNzUsMjU2NTgsMzcwMzQsMjYwMTIsMzI5NjEsMzU4NTYsMjA4ODksMjY4MDAsMjEzNjgsMzQ4MDksMjUwMzIsMjc4NDQsMjc4OTksMzU4NzQsMjM2MzMsMzQyMTgsMzM0NTUsMzgxNTYsMjc0MjcsMzY3NjMsMjYwMzIsMjQ1NzEsMjQ1MTUsMjA0NDksMzQ4ODUsMjYxNDMsMzMxMjUs''@;'; put 'put ''Mjk0ODEsMjQ4MjYsMjA4NTIsMjEwMDksMjI0MTEsMjQ0MTgsMzcwMjYsMzQ4OTIsMzcyNjYsMjQxODQsMjY0NDcsMjQ2MTUsMjI5OTUsMjA4MDQsMjA5ODIsMzMwMTYsMjEyNTYsMjc3NjksMzg1OTYsMjkwNjYsMjAyNDEsMjA0NjIsMzI2NzAsMjY0MjksMjE5NTcsMzgxNTIsMzExNjgsMzQ5''@;'; put 'put ''NjYsMzI0ODMsMjI2ODcsMjUxMDAsMzg2NTYsMzQzOTQsMjIwNDAsMzkwMzUsMjQ0NjQsMzU3NjgsMzM5ODgsMzcyMDcsMjE0NjUsMjYwOTMsMjQyMDcsMzAwNDQsMjQ2NzYsMzIxMTAsMjMxNjcsMzI0OTAsMzI0OTMsMzY3MTMsMjE5MjcsMjM0NTksMjQ3NDgsMjYwNTksMjk1NzIsMzQ5ODgs''@;'; put 'put ''MzQ5OTAsMzQ5OTEsMzQ5OTIsMzQ5OTQsMzQ5OTUsMzQ5OTYsMzQ5OTcsMzQ5OTgsMzVlMywzNTAwMSwzNTAwMiwzNTAwMywzNTAwNSwzNTAwNiwzNTAwNywzNTAwOCwzNTAxMSwzNTAxMiwzNTAxNSwzNTAxNiwzNTAxOCwzNTAxOSwzNTAyMCwzNTAyMSwzNTAyMywzNTAyNCwzNTAyNSwzNTAy''@;'; put 'put ''NywzNTAzMCwzNTAzMSwzNTAzNCwzNTAzNSwzNTAzNiwzNTAzNywzNTAzOCwzNTA0MCwzNTA0MSwzNTA0NiwzNTA0NywzNTA0OSwzNTA1MCwzNTA1MSwzNTA1MiwzNTA1MywzNTA1NCwzNTA1NSwzNTA1OCwzNTA2MSwzNTA2MiwzNTA2MywzNTA2NiwzNTA2NywzNTA2OSwzNTA3MSwzNTA3Miwz''@;'; put 'put ''NTA3MywzNTA3NSwzNTA3NiwzNTA3NywzNTA3OCwzNTA3OSwzNTA4MCwzNTA4MSwzNTA4MywzNTA4NCwzNTA4NSwzNTA4NiwzNTA4NywzNTA4OSwzNTA5MiwzNTA5MywzNTA5NCwzNTA5NSwzNTA5NiwzNTEwMCwzNTEwMSwzNTEwMiwzNTEwMywzNTEwNCwzNTEwNiwzNTEwNywzNTEwOCwzNTEx''@;'; put 'put ''MCwzNTExMSwzNTExMiwzNTExMywzNTExNiwzNTExNywzNTExOCwzNTExOSwzNTEyMSwzNTEyMiwzNTEyMywzNTEyNSwzNTEyNywzNjg3MywzMDMwNywzMDUwNSwzMjQ3NCwzODc3MiwzNDIwMywyMzM5OCwzMTM0OCwzODYzNCwzNDg4MCwyMTE5NSwyOTA3MSwyNDQ5MCwyNjA5MiwzNTgxMCwy''@;'; put 'put ''MzU0NywzOTUzNSwyNDAzMywyNzUyOSwyNzczOSwzNTc1NywzNTc1OSwzNjg3NCwzNjgwNSwyMTM4NywyNTI3Niw0MDQ4Niw0MDQ5MywyMTU2OCwyMDAxMSwzMzQ2OSwyOTI3MywzNDQ2MCwyMzgzMCwzNDkwNSwyODA3OSwzODU5NywyMTcxMywyMDEyMiwzNTc2NiwyODkzNywyMTY5MywzODQw''@;'; put 'put ''OSwyODg5NSwyODE1MywzMDQxNiwyMDAwNSwzMDc0MCwzNDU3OCwyMzcyMSwyNDMxMCwzNTMyOCwzOTA2OCwzODQxNCwyODgxNCwyNzgzOSwyMjg1MiwyNTUxMywzMDUyNCwzNDg5MywyODQzNiwzMzM5NSwyMjU3NiwyOTE0MSwyMTM4OCwzMDc0NiwzODU5MywyMTc2MSwyNDQyMiwyODk3Niwy''@;'; put 'put ''MzQ3NiwzNTg2NiwzOTU2NCwyNzUyMywyMjgzMCw0MDQ5NSwzMTIwNywyNjQ3MiwyNTE5NiwyMDMzNSwzMDExMywzMjY1MCwyNzkxNSwzODQ1MSwyNzY4NywyMDIwOCwzMDE2MiwyMDg1OSwyNjY3OSwyODQ3OCwzNjk5MiwzMzEzNiwyMjkzNCwyOTgxNCwzNTEyOCwzNTEyOSwzNTEzMCwzNTEz''@;'; put 'put ''MSwzNTEzMiwzNTEzMywzNTEzNCwzNTEzNSwzNTEzNiwzNTEzOCwzNTEzOSwzNTE0MSwzNTE0MiwzNTE0MywzNTE0NCwzNTE0NSwzNTE0NiwzNTE0NywzNTE0OCwzNTE0OSwzNTE1MCwzNTE1MSwzNTE1MiwzNTE1MywzNTE1NCwzNTE1NSwzNTE1NiwzNTE1NywzNTE1OCwzNTE1OSwzNTE2MCwz''@;'; put 'put ''NTE2MSwzNTE2MiwzNTE2MywzNTE2NCwzNTE2NSwzNTE2OCwzNTE2OSwzNTE3MCwzNTE3MSwzNTE3MiwzNTE3MywzNTE3NSwzNTE3NiwzNTE3NywzNTE3OCwzNTE3OSwzNTE4MCwzNTE4MSwzNTE4MiwzNTE4MywzNTE4NCwzNTE4NSwzNTE4NiwzNTE4NywzNTE4OCwzNTE4OSwzNTE5MCwzNTE5''@;'; put 'put ''MSwzNTE5MiwzNTE5MywzNTE5NCwzNTE5NiwzNTE5NywzNTE5OCwzNTIwMCwzNTIwMiwzNTIwNCwzNTIwNSwzNTIwNywzNTIwOCwzNTIwOSwzNTIxMCwzNTIxMSwzNTIxMiwzNTIxMywzNTIxNCwzNTIxNSwzNTIxNiwzNTIxNywzNTIxOCwzNTIxOSwzNTIyMCwzNTIyMSwzNTIyMiwzNTIyMywz''@;'; put 'put ''NTIyNCwzNTIyNSwzNTIyNiwzNTIyNywzNTIyOCwzNTIyOSwzNTIzMCwzNTIzMSwzNTIzMiwzNTIzMywyNTY3MSwyMzU5MSwzNjk2NSwzMTM3NywzNTg3NSwyMzAwMiwyMTY3NiwzMzI4MCwzMzY0NywzNTIwMSwzMjc2OCwyNjkyOCwyMjA5NCwzMjgyMiwyOTIzOSwzNzMyNiwyMDkxOCwyMDA2''@;'; put 'put ''MywzOTAyOSwyNTQ5NCwxOTk5NCwyMTQ5NCwyNjM1NSwzMzA5OSwyMjgxMiwyODA4MiwxOTk2OCwyMjc3NywyMTMwNywyNTU1OCwzODEyOSwyMDM4MSwyMDIzNCwzNDkxNSwzOTA1NiwyMjgzOSwzNjk1MSwzMTIyNywyMDIwMiwzMzAwOCwzMDA5NywyNzc3OCwyMzQ1MiwyMzAxNiwyNDQxMywy''@;'; put 'put ''Njg4NSwzNDQzMywyMDUwNiwyNDA1MCwyMDA1NywzMDY5MSwyMDE5NywzMzQwMiwyNTIzMywyNjEzMSwzNzAwOSwyMzY3MywyMDE1OSwyNDQ0MSwzMzIyMiwzNjkyMCwzMjkwMCwzMDEyMywyMDEzNCwzNTAyOCwyNDg0NywyNzU4OSwyNDUxOCwyMDA0MSwzMDQxMCwyODMyMiwzNTgxMSwzNTc1''@;'; put 'put ''OCwzNTg1MCwzNTc5MywyNDMyMiwzMjc2NCwzMjcxNiwzMjQ2MiwzMzU4OSwzMzY0MywyMjI0MCwyNzU3NSwzODg5OSwzODQ1MiwyMzAzNSwyMTUzNSwzODEzNCwyODEzOSwyMzQ5MywzOTI3OCwyMzYwOSwyNDM0MSwzODU0NCwzNTIzNCwzNTIzNSwzNTIzNiwzNTIzNywzNTIzOCwzNTIzOSwz''@;'; put 'put ''NTI0MCwzNTI0MSwzNTI0MiwzNTI0MywzNTI0NCwzNTI0NSwzNTI0NiwzNTI0NywzNTI0OCwzNTI0OSwzNTI1MCwzNTI1MSwzNTI1MiwzNTI1MywzNTI1NCwzNTI1NSwzNTI1NiwzNTI1NywzNTI1OCwzNTI1OSwzNTI2MCwzNTI2MSwzNTI2MiwzNTI2MywzNTI2NCwzNTI2NywzNTI3NywzNTI4''@;'; put 'put ''MywzNTI4NCwzNTI4NSwzNTI4NywzNTI4OCwzNTI4OSwzNTI5MSwzNTI5MywzNTI5NSwzNTI5NiwzNTI5NywzNTI5OCwzNTMwMCwzNTMwMywzNTMwNCwzNTMwNSwzNTMwNiwzNTMwOCwzNTMwOSwzNTMxMCwzNTMxMiwzNTMxMywzNTMxNCwzNTMxNiwzNTMxNywzNTMxOCwzNTMxOSwzNTMyMCwz''@;'; put 'put ''NTMyMSwzNTMyMiwzNTMyMywzNTMyNCwzNTMyNSwzNTMyNiwzNTMyNywzNTMyOSwzNTMzMCwzNTMzMSwzNTMzMiwzNTMzMywzNTMzNCwzNTMzNiwzNTMzNywzNTMzOCwzNTMzOSwzNTM0MCwzNTM0MSwzNTM0MiwzNTM0MywzNTM0NCwzNTM0NSwzNTM0NiwzNTM0NywzNTM0OCwzNTM0OSwzNTM1''@;'; put 'put ''MCwzNTM1MSwzNTM1MiwzNTM1MywzNTM1NCwzNTM1NSwzNTM1NiwzNTM1NywyMTM2MCwzMzUyMSwyNzE4NSwyMzE1Niw0MDU2MCwyNDIxMiwzMjU1MiwzMzcyMSwzMzgyOCwzMzgyOSwzMzYzOSwzNDYzMSwzNjgxNCwzNjE5NCwzMDQwOCwyNDQzMywzOTA2MiwzMDgyOCwyNjE0NCwyMTcyNywy''@;'; put 'put ''NTMxNywyMDMyMywzMzIxOSwzMDE1MiwyNDI0OCwzODYwNSwzNjM2MiwzNDU1MywyMTY0NywyNzg5MSwyODA0NCwyNzcwNCwyNDcwMywyMTE5MSwyOTk5MiwyNDE4OSwyMDI0OCwyNDczNiwyNDU1MSwyMzU4OCwzMDAwMSwzNzAzOCwzODA4MCwyOTM2OSwyNzgzMywyODIxNiwzNzE5MywyNjM3''@;'; put 'put ''NywyMTQ1MSwyMTQ5MSwyMDMwNSwzNzMyMSwzNTgyNSwyMTQ0OCwyNDE4OCwzNjgwMiwyODEzMiwyMDExMCwzMDQwMiwyNzAxNCwzNDM5OCwyNDg1OCwzMzI4NiwyMDMxMywyMDQ0NiwzNjkyNiw0MDA2MCwyNDg0MSwyODE4OSwyODE4MCwzODUzMywyMDEwNCwyMzA4OSwzODYzMiwxOTk4Miwy''@;'; put 'put ''MzY3OSwzMTE2MSwyMzQzMSwzNTgyMSwzMjcwMSwyOTU3NywyMjQ5NSwzMzQxOSwzNzA1NywyMTUwNSwzNjkzNSwyMTk0NywyMzc4NiwyNDQ4MSwyNDg0MCwyNzQ0MiwyOTQyNSwzMjk0NiwzNTQ2NSwzNTM1OCwzNTM1OSwzNTM2MCwzNTM2MSwzNTM2MiwzNTM2MywzNTM2NCwzNTM2NSwzNTM2''@;'; put 'put ''NiwzNTM2NywzNTM2OCwzNTM2OSwzNTM3MCwzNTM3MSwzNTM3MiwzNTM3MywzNTM3NCwzNTM3NSwzNTM3NiwzNTM3NywzNTM3OCwzNTM3OSwzNTM4MCwzNTM4MSwzNTM4MiwzNTM4MywzNTM4NCwzNTM4NSwzNTM4NiwzNTM4NywzNTM4OCwzNTM4OSwzNTM5MSwzNTM5MiwzNTM5MywzNTM5NCwz''@;'; put 'put ''NTM5NSwzNTM5NiwzNTM5NywzNTM5OCwzNTM5OSwzNTQwMSwzNTQwMiwzNTQwMywzNTQwNCwzNTQwNSwzNTQwNiwzNTQwNywzNTQwOCwzNTQwOSwzNTQxMCwzNTQxMSwzNTQxMiwzNTQxMywzNTQxNCwzNTQxNSwzNTQxNiwzNTQxNywzNTQxOCwzNTQxOSwzNTQyMCwzNTQyMSwzNTQyMiwzNTQy''@;'; put 'put ''MywzNTQyNCwzNTQyNSwzNTQyNiwzNTQyNywzNTQyOCwzNTQyOSwzNTQzMCwzNTQzMSwzNTQzMiwzNTQzMywzNTQzNCwzNTQzNSwzNTQzNiwzNTQzNywzNTQzOCwzNTQzOSwzNTQ0MCwzNTQ0MSwzNTQ0MiwzNTQ0MywzNTQ0NCwzNTQ0NSwzNTQ0NiwzNTQ0NywzNTQ0OCwzNTQ1MCwzNTQ1MSwz''@;'; put 'put ''NTQ1MiwzNTQ1MywzNTQ1NCwzNTQ1NSwzNTQ1NiwyODAyMCwyMzUwNywzNTAyOSwzOTA0NCwzNTk0NywzOTUzMyw0MDQ5OSwyODE3MCwyMDkwMCwyMDgwMywyMjQzNSwzNDk0NSwyMTQwNywyNTU4OCwzNjc1NywyMjI1MywyMTU5MiwyMjI3OCwyOTUwMywyODMwNCwzMjUzNiwzNjgyOCwzMzQ4''@;'; put 'put ''OSwyNDg5NSwyNDYxNiwzODQ5OCwyNjM1MiwzMjQyMiwzNjIzNCwzNjI5MSwzODA1MywyMzczMSwzMTkwOCwyNjM3NiwyNDc0MiwzODQwNSwzMjc5MiwyMDExMywzNzA5NSwyMTI0OCwzODUwNCwyMDgwMSwzNjgxNiwzNDE2NCwzNzIxMywyNjE5NywzODkwMSwyMzM4MSwyMTI3NywzMDc3Niwy''@;'; put 'put ''NjQzNCwyNjY4NSwyMTcwNSwyODc5OCwyMzQ3MiwzNjczMywyMDg3NywyMjMxMiwyMTY4MSwyNTg3NCwyNjI0MiwzNjE5MCwzNjE2MywzMzAzOSwzMzkwMCwzNjk3MywzMTk2NywyMDk5MSwzNDI5OSwyNjUzMSwyNjA4OSwyODU3NywzNDQ2OCwzNjQ4MSwyMjEyMiwzNjg5NiwzMDMzOCwyODc5''@;'; put 'put ''MCwyOTE1NywzNjEzMSwyNTMyMSwyMTAxNywyNzkwMSwzNjE1NiwyNDU5MCwyMjY4NiwyNDk3NCwyNjM2NiwzNjE5MiwyNTE2NiwyMTkzOSwyODE5NSwyNjQxMywzNjcxMSwzNTQ1NywzNTQ1OCwzNTQ1OSwzNTQ2MCwzNTQ2MSwzNTQ2MiwzNTQ2MywzNTQ2NCwzNTQ2NywzNTQ2OCwzNTQ2OSwz''@;'; put 'put ''NTQ3MCwzNTQ3MSwzNTQ3MiwzNTQ3MywzNTQ3NCwzNTQ3NiwzNTQ3NywzNTQ3OCwzNTQ3OSwzNTQ4MCwzNTQ4MSwzNTQ4MiwzNTQ4MywzNTQ4NCwzNTQ4NSwzNTQ4NiwzNTQ4NywzNTQ4OCwzNTQ4OSwzNTQ5MCwzNTQ5MSwzNTQ5MiwzNTQ5MywzNTQ5NCwzNTQ5NSwzNTQ5NiwzNTQ5NywzNTQ5''@;'; put 'put ''OCwzNTQ5OSwzNTUwMCwzNTUwMSwzNTUwMiwzNTUwMywzNTUwNCwzNTUwNSwzNTUwNiwzNTUwNywzNTUwOCwzNTUwOSwzNTUxMCwzNTUxMSwzNTUxMiwzNTUxMywzNTUxNCwzNTUxNSwzNTUxNiwzNTUxNywzNTUxOCwzNTUxOSwzNTUyMCwzNTUyMSwzNTUyMiwzNTUyMywzNTUyNCwzNTUyNSwz''@;'; put 'put ''NTUyNiwzNTUyNywzNTUyOCwzNTUyOSwzNTUzMCwzNTUzMSwzNTUzMiwzNTUzMywzNTUzNCwzNTUzNSwzNTUzNiwzNTUzNywzNTUzOCwzNTUzOSwzNTU0MCwzNTU0MSwzNTU0MiwzNTU0MywzNTU0NCwzNTU0NSwzNTU0NiwzNTU0NywzNTU0OCwzNTU0OSwzNTU1MCwzNTU1MSwzNTU1MiwzNTU1''@;'; put 'put ''MywzNTU1NCwzNTU1NSwzODExMywzODM5MiwzMDUwNCwyNjYyOSwyNzA0OCwyMTY0MywyMDA0NSwyODg1NiwzNTc4NCwyNTY4OCwyNTk5NSwyMzQyOSwzMTM2NCwyMDUzOCwyMzUyOCwzMDY1MSwyNzYxNywzNTQ0OSwzMTg5NiwyNzgzOCwzMDQxNSwyNjAyNSwzNjc1OSwyMzg1MywyMzYzNywz''@;'; put 'put ''NDM2MCwyNjYzMiwyMTM0NCwyNTExMiwzMTQ0OSwyODI1MSwzMjUwOSwyNzE2NywzMTQ1NiwyNDQzMiwyODQ2NywyNDM1MiwyNTQ4NCwyODA3MiwyNjQ1NCwxOTk3NiwyNDA4MCwzNjEzNCwyMDE4MywzMjk2MCwzMDI2MCwzODU1NiwyNTMwNywyNjE1NywyNTIxNCwyNzgzNiwzNjIxMywyOTAz''@;'; put 'put ''MSwzMjYxNywyMDgwNiwzMjkwMywyMTQ4NCwzNjk3NCwyNTI0MCwyMTc0NiwzNDU0NCwzNjc2MSwzMjc3MywzODE2NywzNDA3MSwzNjgyNSwyNzk5MywyOTY0NSwyNjAxNSwzMDQ5NSwyOTk1NiwzMDc1OSwzMzI3NSwzNjEyNiwzODAyNCwyMDM5MCwyNjUxNywzMDEzNywzNTc4NiwzODY2Mywy''@;'; put 'put ''NTM5MSwzODIxNSwzODQ1MywzMzk3NiwyNTM3OSwzMDUyOSwyNDQ0OSwyOTQyNCwyMDEwNSwyNDU5NiwyNTk3MiwyNTMyNywyNzQ5MSwyNTkxOSwzNTU1NiwzNTU1NywzNTU1OCwzNTU1OSwzNTU2MCwzNTU2MSwzNTU2MiwzNTU2MywzNTU2NCwzNTU2NSwzNTU2NiwzNTU2NywzNTU2OCwzNTU2''@;'; put 'put ''OSwzNTU3MCwzNTU3MSwzNTU3MiwzNTU3MywzNTU3NCwzNTU3NSwzNTU3NiwzNTU3NywzNTU3OCwzNTU3OSwzNTU4MCwzNTU4MSwzNTU4MiwzNTU4MywzNTU4NCwzNTU4NSwzNTU4NiwzNTU4NywzNTU4OCwzNTU4OSwzNTU5MCwzNTU5MiwzNTU5MywzNTU5NCwzNTU5NSwzNTU5NiwzNTU5Nywz''@;'; put 'put ''NTU5OCwzNTU5OSwzNTYwMCwzNTYwMSwzNTYwMiwzNTYwMywzNTYwNCwzNTYwNSwzNTYwNiwzNTYwNywzNTYwOCwzNTYwOSwzNTYxMCwzNTYxMSwzNTYxMiwzNTYxMywzNTYxNCwzNTYxNSwzNTYxNiwzNTYxNywzNTYxOCwzNTYxOSwzNTYyMCwzNTYyMSwzNTYyMywzNTYyNCwzNTYyNSwzNTYy''@;'; put 'put ''NiwzNTYyNywzNTYyOCwzNTYyOSwzNTYzMCwzNTYzMSwzNTYzMiwzNTYzMywzNTYzNCwzNTYzNSwzNTYzNiwzNTYzNywzNTYzOCwzNTYzOSwzNTY0MCwzNTY0MSwzNTY0MiwzNTY0MywzNTY0NCwzNTY0NSwzNTY0NiwzNTY0NywzNTY0OCwzNTY0OSwzNTY1MCwzNTY1MSwzNTY1MiwzNTY1Mywy''@;'; put 'put ''NDEwMywzMDE1MSwzNzA3MywzNTc3NywzMzQzNywyNjUyNSwyNTkwMywyMTU1MywzNDU4NCwzMDY5MywzMjkzMCwzMzAyNiwyNzcxMywyMDA0MywzMjQ1NSwzMjg0NCwzMDQ1MiwyNjg5MywyNzU0MiwyNTE5MSwyMDU0MCwyMDM1NiwyMjMzNiwyNTM1MSwyNzQ5MCwzNjI4NiwyMTQ4MiwyNjA4''@;'; put 'put ''OCwzMjQ0MCwyNDUzNSwyNTM3MCwyNTUyNywzMzI2NywzMzI2OCwzMjYyMiwyNDA5MiwyMzc2OSwyMTA0NiwyNjIzNCwzMTIwOSwzMTI1OCwzNjEzNiwyODgyNSwzMDE2NCwyODM4MiwyNzgzNSwzMTM3OCwyMDAxMywzMDQwNSwyNDU0NCwzODA0NywzNDkzNSwzMjQ1NiwzMTE4MSwzMjk1OSwz''@;'; put 'put ''NzMyNSwyMDIxMCwyMDI0NywzMzMxMSwyMTYwOCwyNDAzMCwyNzk1NCwzNTc4OCwzMTkwOSwzNjcyNCwzMjkyMCwyNDA5MCwyMTY1MCwzMDM4NSwyMzQ0OSwyNjE3MiwzOTU4OCwyOTY2NCwyNjY2NiwzNDUyMywyNjQxNywyOTQ4MiwzNTgzMiwzNTgwMywzNjg4MCwzMTQ4MSwyODg5MSwyOTAz''@;'; put 'put ''OCwyNTI4NCwzMDYzMywyMjA2NSwyMDAyNywzMzg3OSwyNjYwOSwyMTE2MSwzNDQ5NiwzNjE0MiwzODEzNiwzMTU2OSwzNTY1NCwzNTY1NSwzNTY1NiwzNTY1NywzNTY1OCwzNTY1OSwzNTY2MCwzNTY2MSwzNTY2MiwzNTY2MywzNTY2NCwzNTY2NSwzNTY2NiwzNTY2NywzNTY2OCwzNTY2OSwz''@;'; put 'put ''NTY3MCwzNTY3MSwzNTY3MiwzNTY3MywzNTY3NCwzNTY3NSwzNTY3NiwzNTY3NywzNTY3OCwzNTY3OSwzNTY4MCwzNTY4MSwzNTY4MiwzNTY4MywzNTY4NCwzNTY4NSwzNTY4NywzNTY4OCwzNTY4OSwzNTY5MCwzNTY5MSwzNTY5MywzNTY5NCwzNTY5NSwzNTY5NiwzNTY5NywzNTY5OCwzNTY5''@;'; put 'put ''OSwzNTcwMCwzNTcwMSwzNTcwMiwzNTcwMywzNTcwNCwzNTcwNSwzNTcwNiwzNTcwNywzNTcwOCwzNTcwOSwzNTcxMCwzNTcxMSwzNTcxMiwzNTcxMywzNTcxNCwzNTcxNSwzNTcxNiwzNTcxNywzNTcxOCwzNTcxOSwzNTcyMCwzNTcyMSwzNTcyMiwzNTcyMywzNTcyNCwzNTcyNSwzNTcyNiwz''@;'; put 'put ''NTcyNywzNTcyOCwzNTcyOSwzNTczMCwzNTczMSwzNTczMiwzNTczMywzNTczNCwzNTczNSwzNTczNiwzNTczNywzNTczOCwzNTczOSwzNTc0MCwzNTc0MSwzNTc0MiwzNTc0MywzNTc1NiwzNTc2MSwzNTc3MSwzNTc4MywzNTc5MiwzNTgxOCwzNTg0OSwzNTg3MCwyMDMwMywyNzg4MCwzMTA2''@;'; put 'put ''OSwzOTU0NywyNTIzNSwyOTIyNiwyNTM0MSwxOTk4NywzMDc0MiwzNjcxNiwyNTc3NiwzNjE4NiwzMTY4NiwyNjcyOSwyNDE5NiwzNTAxMywyMjkxOCwyNTc1OCwyMjc2NiwyOTM2NiwyNjg5NCwzODE4MSwzNjg2MSwzNjE4NCwyMjM2OCwzMjUxMiwzNTg0NiwyMDkzNCwyNTQxNywyNTMwNSwy''@;'; put 'put ''MTMzMSwyNjcwMCwyOTczMCwzMzUzNywzNzE5NiwyMTgyOCwzMDUyOCwyODc5NiwyNzk3OCwyMDg1NywyMTY3MiwzNjE2NCwyMzAzOSwyODM2MywyODEwMCwyMzM4OCwzMjA0MywyMDE4MCwzMTg2OSwyODM3MSwyMzM3NiwzMzI1OCwyODE3MywyMzM4MywzOTY4MywyNjgzNywzNjM5NCwyMzQ0''@;'; put 'put ''NywzMjUwOCwyNDYzNSwzMjQzNywzNzA0OSwzNjIwOCwyMjg2MywyNTU0OSwzMTE5OSwzNjI3NSwyMTMzMCwyNjA2MywzMTA2MiwzNTc4MSwzODQ1OSwzMjQ1MiwzODA3NSwzMjM4NiwyMjA2OCwzNzI1NywyNjM2OCwzMjYxOCwyMzU2MiwzNjk4MSwyNjE1MiwyNDAzOCwyMDMwNCwyNjU5MCwy''@;'; put 'put ''MDU3MCwyMDMxNiwyMjM1MiwyNDIzMSw1OTQwOCw1OTQwOSw1OTQxMCw1OTQxMSw1OTQxMiwzNTg5NiwzNTg5NywzNTg5OCwzNTg5OSwzNTkwMCwzNTkwMSwzNTkwMiwzNTkwMywzNTkwNCwzNTkwNiwzNTkwNywzNTkwOCwzNTkwOSwzNTkxMiwzNTkxNCwzNTkxNSwzNTkxNywzNTkxOCwzNTkx''@;'; put 'put ''OSwzNTkyMCwzNTkyMSwzNTkyMiwzNTkyMywzNTkyNCwzNTkyNiwzNTkyNywzNTkyOCwzNTkyOSwzNTkzMSwzNTkzMiwzNTkzMywzNTkzNCwzNTkzNSwzNTkzNiwzNTkzOSwzNTk0MCwzNTk0MSwzNTk0MiwzNTk0MywzNTk0NCwzNTk0NSwzNTk0OCwzNTk0OSwzNTk1MCwzNTk1MSwzNTk1Miwz''@;'; put 'put ''NTk1MywzNTk1NCwzNTk1NiwzNTk1NywzNTk1OCwzNTk1OSwzNTk2MywzNTk2NCwzNTk2NSwzNTk2NiwzNTk2NywzNTk2OCwzNTk2OSwzNTk3MSwzNTk3MiwzNTk3NCwzNTk3NSwzNTk3NiwzNTk3OSwzNTk4MSwzNTk4MiwzNTk4MywzNTk4NCwzNTk4NSwzNTk4NiwzNTk4NywzNTk4OSwzNTk5''@;'; put 'put ''MCwzNTk5MSwzNTk5MywzNTk5NCwzNTk5NSwzNTk5NiwzNTk5NywzNTk5OCwzNTk5OSwzNmUzLDM2MDAxLDM2MDAyLDM2MDAzLDM2MDA0LDM2MDA1LDM2MDA2LDM2MDA3LDM2MDA4LDM2MDA5LDM2MDEwLDM2MDExLDM2MDEyLDM2MDEzLDIwMTA5LDE5OTgwLDIwODAwLDE5OTg0LDI0MzE5LDIx''@;'; put 'put ''MzE3LDE5OTg5LDIwMTIwLDE5OTk4LDM5NzMwLDIzNDA0LDIyMTIxLDIwMDA4LDMxMTYyLDIwMDMxLDIxMjY5LDIwMDM5LDIyODI5LDI5MjQzLDIxMzU4LDI3NjY0LDIyMjM5LDMyOTk2LDM5MzE5LDI3NjAzLDMwNTkwLDQwNzI3LDIwMDIyLDIwMTI3LDQwNzIwLDIwMDYwLDIwMDczLDIwMTE1''@;'; put 'put ''LDMzNDE2LDIzMzg3LDIxODY4LDIyMDMxLDIwMTY0LDIxMzg5LDIxNDA1LDIxNDExLDIxNDEzLDIxNDIyLDM4NzU3LDM2MTg5LDIxMjc0LDIxNDkzLDIxMjg2LDIxMjk0LDIxMzEwLDM2MTg4LDIxMzUwLDIxMzQ3LDIwOTk0LDIxZTMsMjEwMDYsMjEwMzcsMjEwNDMsMjEwNTUsMjEwNTYsMjEw''@;'; put 'put ''NjgsMjEwODYsMjEwODksMjEwODQsMzM5NjcsMjExMTcsMjExMjIsMjExMjEsMjExMzYsMjExMzksMjA4NjYsMzI1OTYsMjAxNTUsMjAxNjMsMjAxNjksMjAxNjIsMjAyMDAsMjAxOTMsMjAyMDMsMjAxOTAsMjAyNTEsMjAyMTEsMjAyNTgsMjAzMjQsMjAyMTMsMjAyNjEsMjAyNjMsMjAyMzMs''@;'; put 'put ''MjAyNjcsMjAzMTgsMjAzMjcsMjU5MTIsMjAzMTQsMjAzMTcsMzYwMTQsMzYwMTUsMzYwMTYsMzYwMTcsMzYwMTgsMzYwMTksMzYwMjAsMzYwMjEsMzYwMjIsMzYwMjMsMzYwMjQsMzYwMjUsMzYwMjYsMzYwMjcsMzYwMjgsMzYwMjksMzYwMzAsMzYwMzEsMzYwMzIsMzYwMzMsMzYwMzQsMzYw''@;'; put 'put ''MzUsMzYwMzYsMzYwMzcsMzYwMzgsMzYwMzksMzYwNDAsMzYwNDEsMzYwNDIsMzYwNDMsMzYwNDQsMzYwNDUsMzYwNDYsMzYwNDcsMzYwNDgsMzYwNDksMzYwNTAsMzYwNTEsMzYwNTIsMzYwNTMsMzYwNTQsMzYwNTUsMzYwNTYsMzYwNTcsMzYwNTgsMzYwNTksMzYwNjAsMzYwNjEsMzYwNjIs''@;'; put 'put ''MzYwNjMsMzYwNjQsMzYwNjUsMzYwNjYsMzYwNjcsMzYwNjgsMzYwNjksMzYwNzAsMzYwNzEsMzYwNzIsMzYwNzMsMzYwNzQsMzYwNzUsMzYwNzYsMzYwNzcsMzYwNzgsMzYwNzksMzYwODAsMzYwODEsMzYwODIsMzYwODMsMzYwODQsMzYwODUsMzYwODYsMzYwODcsMzYwODgsMzYwODksMzYw''@;'; put 'put ''OTAsMzYwOTEsMzYwOTIsMzYwOTMsMzYwOTQsMzYwOTUsMzYwOTYsMzYwOTcsMzYwOTgsMzYwOTksMzYxMDAsMzYxMDEsMzYxMDIsMzYxMDMsMzYxMDQsMzYxMDUsMzYxMDYsMzYxMDcsMzYxMDgsMzYxMDksMjAzMTksMjAzMTEsMjAyNzQsMjAyODUsMjAzNDIsMjAzNDAsMjAzNjksMjAzNjEs''@;'; put 'put ''MjAzNTUsMjAzNjcsMjAzNTAsMjAzNDcsMjAzOTQsMjAzNDgsMjAzOTYsMjAzNzIsMjA0NTQsMjA0NTYsMjA0NTgsMjA0MjEsMjA0NDIsMjA0NTEsMjA0NDQsMjA0MzMsMjA0NDcsMjA0NzIsMjA1MjEsMjA1NTYsMjA0NjcsMjA1MjQsMjA0OTUsMjA1MjYsMjA1MjUsMjA0NzgsMjA1MDgsMjA0''@;'; put 'put ''OTIsMjA1MTcsMjA1MjAsMjA2MDYsMjA1NDcsMjA1NjUsMjA1NTIsMjA1NTgsMjA1ODgsMjA2MDMsMjA2NDUsMjA2NDcsMjA2NDksMjA2NjYsMjA2OTQsMjA3NDIsMjA3MTcsMjA3MTYsMjA3MTAsMjA3MTgsMjA3NDMsMjA3NDcsMjAxODksMjc3MDksMjAzMTIsMjAzMjUsMjA0MzAsNDA4NjQs''@;'; put 'put ''Mjc3MTgsMzE4NjAsMjA4NDYsMjQwNjEsNDA2NDksMzkzMjAsMjA4NjUsMjI4MDQsMjEyNDEsMjEyNjEsMzUzMzUsMjEyNjQsMjA5NzEsMjI4MDksMjA4MjEsMjAxMjgsMjA4MjIsMjAxNDcsMzQ5MjYsMzQ5ODAsMjAxNDksMzMwNDQsMzUwMjYsMzExMDQsMjMzNDgsMzQ4MTksMzI2OTYsMjA5''@;'; put 'put ''MDcsMjA5MTMsMjA5MjUsMjA5MjQsMzYxMTAsMzYxMTEsMzYxMTIsMzYxMTMsMzYxMTQsMzYxMTUsMzYxMTYsMzYxMTcsMzYxMTgsMzYxMTksMzYxMjAsMzYxMjEsMzYxMjIsMzYxMjMsMzYxMjQsMzYxMjgsMzYxNzcsMzYxNzgsMzYxODMsMzYxOTEsMzYxOTcsMzYyMDAsMzYyMDEsMzYyMDIs''@;'; put 'put ''MzYyMDQsMzYyMDYsMzYyMDcsMzYyMDksMzYyMTAsMzYyMTYsMzYyMTcsMzYyMTgsMzYyMTksMzYyMjAsMzYyMjEsMzYyMjIsMzYyMjMsMzYyMjQsMzYyMjYsMzYyMjcsMzYyMzAsMzYyMzEsMzYyMzIsMzYyMzMsMzYyMzYsMzYyMzcsMzYyMzgsMzYyMzksMzYyNDAsMzYyNDIsMzYyNDMsMzYy''@;'; put 'put ''NDUsMzYyNDYsMzYyNDcsMzYyNDgsMzYyNDksMzYyNTAsMzYyNTEsMzYyNTIsMzYyNTMsMzYyNTQsMzYyNTYsMzYyNTcsMzYyNTgsMzYyNjAsMzYyNjEsMzYyNjIsMzYyNjMsMzYyNjQsMzYyNjUsMzYyNjYsMzYyNjcsMzYyNjgsMzYyNjksMzYyNzAsMzYyNzEsMzYyNzIsMzYyNzQsMzYyNzgs''@;'; put 'put ''MzYyNzksMzYyODEsMzYyODMsMzYyODUsMzYyODgsMzYyODksMzYyOTAsMzYyOTMsMzYyOTUsMzYyOTYsMzYyOTcsMzYyOTgsMzYzMDEsMzYzMDQsMzYzMDYsMzYzMDcsMzYzMDgsMjA5MzUsMjA4ODYsMjA4OTgsMjA5MDEsMzU3NDQsMzU3NTAsMzU3NTEsMzU3NTQsMzU3NjQsMzU3NjUsMzU3''@;'; put 'put ''NjcsMzU3NzgsMzU3NzksMzU3ODcsMzU3OTEsMzU3OTAsMzU3OTQsMzU3OTUsMzU3OTYsMzU3OTgsMzU4MDAsMzU4MDEsMzU4MDQsMzU4MDcsMzU4MDgsMzU4MTIsMzU4MTYsMzU4MTcsMzU4MjIsMzU4MjQsMzU4MjcsMzU4MzAsMzU4MzMsMzU4MzYsMzU4MzksMzU4NDAsMzU4NDIsMzU4NDQs''@;'; put 'put ''MzU4NDcsMzU4NTIsMzU4NTUsMzU4NTcsMzU4NTgsMzU4NjAsMzU4NjEsMzU4NjIsMzU4NjUsMzU4NjcsMzU4NjQsMzU4NjksMzU4NzEsMzU4NzIsMzU4NzMsMzU4NzcsMzU4NzksMzU4ODIsMzU4ODMsMzU4ODYsMzU4ODcsMzU4OTAsMzU4OTEsMzU4OTMsMzU4OTQsMjEzNTMsMjEzNzAsMzg0''@;'; put 'put ''MjksMzg0MzQsMzg0MzMsMzg0NDksMzg0NDIsMzg0NjEsMzg0NjAsMzg0NjYsMzg0NzMsMzg0ODQsMzg0OTUsMzg1MDMsMzg1MDgsMzg1MTQsMzg1MTYsMzg1MzYsMzg1NDEsMzg1NTEsMzg1NzYsMzcwMTUsMzcwMTksMzcwMjEsMzcwMTcsMzcwMzYsMzcwMjUsMzcwNDQsMzcwNDMsMzcwNDYs''@;'; put 'put ''MzcwNTAsMzYzMDksMzYzMTIsMzYzMTMsMzYzMTYsMzYzMjAsMzYzMjEsMzYzMjIsMzYzMjUsMzYzMjYsMzYzMjcsMzYzMjksMzYzMzMsMzYzMzQsMzYzMzYsMzYzMzcsMzYzMzgsMzYzNDAsMzYzNDIsMzYzNDgsMzYzNTAsMzYzNTEsMzYzNTIsMzYzNTMsMzYzNTQsMzYzNTUsMzYzNTYsMzYz''@;'; put 'put ''NTgsMzYzNTksMzYzNjAsMzYzNjMsMzYzNjUsMzYzNjYsMzYzNjgsMzYzNjksMzYzNzAsMzYzNzEsMzYzNzMsMzYzNzQsMzYzNzUsMzYzNzYsMzYzNzcsMzYzNzgsMzYzNzksMzYzODAsMzYzODQsMzYzODUsMzYzODgsMzYzODksMzYzOTAsMzYzOTEsMzYzOTIsMzYzOTUsMzYzOTcsMzY0MDAs''@;'; put 'put ''MzY0MDIsMzY0MDMsMzY0MDQsMzY0MDYsMzY0MDcsMzY0MDgsMzY0MTEsMzY0MTIsMzY0MTQsMzY0MTUsMzY0MTksMzY0MjEsMzY0MjIsMzY0MjgsMzY0MjksMzY0MzAsMzY0MzEsMzY0MzIsMzY0MzUsMzY0MzYsMzY0MzcsMzY0MzgsMzY0MzksMzY0NDAsMzY0NDIsMzY0NDMsMzY0NDQsMzY0''@;'; put 'put ''NDUsMzY0NDYsMzY0NDcsMzY0NDgsMzY0NDksMzY0NTAsMzY0NTEsMzY0NTIsMzY0NTMsMzY0NTUsMzY0NTYsMzY0NTgsMzY0NTksMzY0NjIsMzY0NjUsMzcwNDgsMzcwNDAsMzcwNzEsMzcwNjEsMzcwNTQsMzcwNzIsMzcwNjAsMzcwNjMsMzcwNzUsMzcwOTQsMzcwOTAsMzcwODQsMzcwNzks''@;'; put 'put ''MzcwODMsMzcwOTksMzcxMDMsMzcxMTgsMzcxMjQsMzcxNTQsMzcxNTAsMzcxNTUsMzcxNjksMzcxNjcsMzcxNzcsMzcxODcsMzcxOTAsMjEwMDUsMjI4NTAsMjExNTQsMjExNjQsMjExNjUsMjExODIsMjE3NTksMjEyMDAsMjEyMDYsMjEyMzIsMjE0NzEsMjkxNjYsMzA2NjksMjQzMDgsMjA5''@;'; put 'put ''ODEsMjA5ODgsMzk3MjcsMjE0MzAsMjQzMjEsMzAwNDIsMjQwNDcsMjIzNDgsMjI0NDEsMjI0MzMsMjI2NTQsMjI3MTYsMjI3MjUsMjI3MzcsMjIzMTMsMjIzMTYsMjIzMTQsMjIzMjMsMjIzMjksMjIzMTgsMjIzMTksMjIzNjQsMjIzMzEsMjIzMzgsMjIzNzcsMjI0MDUsMjIzNzksMjI0MDYs''@;'; put 'put ''MjIzOTYsMjIzOTUsMjIzNzYsMjIzODEsMjIzOTAsMjIzODcsMjI0NDUsMjI0MzYsMjI0MTIsMjI0NTAsMjI0NzksMjI0MzksMjI0NTIsMjI0MTksMjI0MzIsMjI0ODUsMjI0ODgsMjI0OTAsMjI0ODksMjI0ODIsMjI0NTYsMjI1MTYsMjI1MTEsMjI1MjAsMjI1MDAsMjI0OTMsMzY0NjcsMzY0''@;'; put 'put ''NjksMzY0NzEsMzY0NzIsMzY0NzMsMzY0NzQsMzY0NzUsMzY0NzcsMzY0NzgsMzY0ODAsMzY0ODIsMzY0ODMsMzY0ODQsMzY0ODYsMzY0ODgsMzY0ODksMzY0OTAsMzY0OTEsMzY0OTIsMzY0OTMsMzY0OTQsMzY0OTcsMzY0OTgsMzY0OTksMzY1MDEsMzY1MDIsMzY1MDMsMzY1MDQsMzY1MDUs''@;'; put 'put ''MzY1MDYsMzY1MDcsMzY1MDksMzY1MTEsMzY1MTIsMzY1MTMsMzY1MTQsMzY1MTUsMzY1MTYsMzY1MTcsMzY1MTgsMzY1MTksMzY1MjAsMzY1MjEsMzY1MjIsMzY1MjUsMzY1MjYsMzY1MjgsMzY1MjksMzY1MzEsMzY1MzIsMzY1MzMsMzY1MzQsMzY1MzUsMzY1MzYsMzY1MzcsMzY1MzksMzY1''@;'; put 'put ''NDAsMzY1NDEsMzY1NDIsMzY1NDMsMzY1NDQsMzY1NDUsMzY1NDYsMzY1NDcsMzY1NDgsMzY1NDksMzY1NTAsMzY1NTEsMzY1NTIsMzY1NTMsMzY1NTQsMzY1NTUsMzY1NTYsMzY1NTcsMzY1NTksMzY1NjAsMzY1NjEsMzY1NjIsMzY1NjMsMzY1NjQsMzY1NjUsMzY1NjYsMzY1NjcsMzY1Njgs''@;'; put 'put ''MzY1NjksMzY1NzAsMzY1NzEsMzY1NzIsMzY1NzMsMzY1NzQsMzY1NzUsMzY1NzYsMzY1NzcsMzY1NzgsMzY1NzksMzY1ODAsMjI1MzksMjI1NDEsMjI1MjUsMjI1MDksMjI1MjgsMjI1NTgsMjI1NTMsMjI1OTYsMjI1NjAsMjI2MjksMjI2MzYsMjI2NTcsMjI2NjUsMjI2ODIsMjI2NTYsMzkz''@;'; put 'put ''MzYsNDA3MjksMjUwODcsMzM0MDEsMzM0MDUsMzM0MDcsMzM0MjMsMzM0MTgsMzM0NDgsMzM0MTIsMzM0MjIsMzM0MjUsMzM0MzEsMzM0MzMsMzM0NTEsMzM0NjQsMzM0NzAsMzM0NTYsMzM0ODAsMzM0ODIsMzM1MDcsMzM0MzIsMzM0NjMsMzM0NTQsMzM0ODMsMzM0ODQsMzM0NzMsMzM0NDks''@;'; put 'put ''MzM0NjAsMzM0NDEsMzM0NTAsMzM0MzksMzM0NzYsMzM0ODYsMzM0NDQsMzM1MDUsMzM1NDUsMzM1MjcsMzM1MDgsMzM1NTEsMzM1NDMsMzM1MDAsMzM1MjQsMzM0OTAsMzM0OTYsMzM1NDgsMzM1MzEsMzM0OTEsMzM1NTMsMzM1NjIsMzM1NDIsMzM1NTYsMzM1NTcsMzM1MDQsMzM0OTMsMzM1''@;'; put 'put ''NjQsMzM2MTcsMzM2MjcsMzM2MjgsMzM1NDQsMzM2ODIsMzM1OTYsMzM1ODgsMzM1ODUsMzM2OTEsMzM2MzAsMzM1ODMsMzM2MTUsMzM2MDcsMzM2MDMsMzM2MzEsMzM2MDAsMzM1NTksMzM2MzIsMzM1ODEsMzM1OTQsMzM1ODcsMzM2MzgsMzM2MzcsMzY1ODEsMzY1ODIsMzY1ODMsMzY1ODQs''@;'; put 'put ''MzY1ODUsMzY1ODYsMzY1ODcsMzY1ODgsMzY1ODksMzY1OTAsMzY1OTEsMzY1OTIsMzY1OTMsMzY1OTQsMzY1OTUsMzY1OTYsMzY1OTcsMzY1OTgsMzY1OTksMzY2MDAsMzY2MDEsMzY2MDIsMzY2MDMsMzY2MDQsMzY2MDUsMzY2MDYsMzY2MDcsMzY2MDgsMzY2MDksMzY2MTAsMzY2MTEsMzY2''@;'; put 'put ''MTIsMzY2MTMsMzY2MTQsMzY2MTUsMzY2MTYsMzY2MTcsMzY2MTgsMzY2MTksMzY2MjAsMzY2MjEsMzY2MjIsMzY2MjMsMzY2MjQsMzY2MjUsMzY2MjYsMzY2MjcsMzY2MjgsMzY2MjksMzY2MzAsMzY2MzEsMzY2MzIsMzY2MzMsMzY2MzQsMzY2MzUsMzY2MzYsMzY2MzcsMzY2MzgsMzY2Mzks''@;'; put 'put ''MzY2NDAsMzY2NDEsMzY2NDIsMzY2NDMsMzY2NDQsMzY2NDUsMzY2NDYsMzY2NDcsMzY2NDgsMzY2NDksMzY2NTAsMzY2NTEsMzY2NTIsMzY2NTMsMzY2NTQsMzY2NTUsMzY2NTYsMzY2NTcsMzY2NTgsMzY2NTksMzY2NjAsMzY2NjEsMzY2NjIsMzY2NjMsMzY2NjQsMzY2NjUsMzY2NjYsMzY2''@;'; put 'put ''NjcsMzY2NjgsMzY2NjksMzY2NzAsMzY2NzEsMzY2NzIsMzY2NzMsMzY2NzQsMzY2NzUsMzY2NzYsMzM2NDAsMzM1NjMsMzM2NDEsMzM2NDQsMzM2NDIsMzM2NDUsMzM2NDYsMzM3MTIsMzM2NTYsMzM3MTUsMzM3MTYsMzM2OTYsMzM3MDYsMzM2ODMsMzM2OTIsMzM2NjksMzM2NjAsMzM3MTgs''@;'; put 'put ''MzM3MDUsMzM2NjEsMzM3MjAsMzM2NTksMzM2ODgsMzM2OTQsMzM3MDQsMzM3MjIsMzM3MjQsMzM3MjksMzM3OTMsMzM3NjUsMzM3NTIsMjI1MzUsMzM4MTYsMzM4MDMsMzM3NTcsMzM3ODksMzM3NTAsMzM4MjAsMzM4NDgsMzM4MDksMzM3OTgsMzM3NDgsMzM3NTksMzM4MDcsMzM3OTUsMzM3''@;'; put 'put ''ODQsMzM3ODUsMzM3NzAsMzM3MzMsMzM3MjgsMzM4MzAsMzM3NzYsMzM3NjEsMzM4ODQsMzM4NzMsMzM4ODIsMzM4ODEsMzM5MDcsMzM5MjcsMzM5MjgsMzM5MTQsMzM5MjksMzM5MTIsMzM4NTIsMzM4NjIsMzM4OTcsMzM5MTAsMzM5MzIsMzM5MzQsMzM4NDEsMzM5MDEsMzM5ODUsMzM5OTcs''@;'; put 'put ''MzRlMywzNDAyMiwzMzk4MSwzNDAwMywzMzk5NCwzMzk4MywzMzk3OCwzNDAxNiwzMzk1MywzMzk3NywzMzk3MiwzMzk0MywzNDAyMSwzNDAxOSwzNDA2MCwyOTk2NSwzNDEwNCwzNDAzMiwzNDEwNSwzNDA3OSwzNDEwNiwzNjY3NywzNjY3OCwzNjY3OSwzNjY4MCwzNjY4MSwzNjY4MiwzNjY4''@;'; put 'put ''MywzNjY4NCwzNjY4NSwzNjY4NiwzNjY4NywzNjY4OCwzNjY4OSwzNjY5MCwzNjY5MSwzNjY5MiwzNjY5MywzNjY5NCwzNjY5NSwzNjY5NiwzNjY5NywzNjY5OCwzNjY5OSwzNjcwMCwzNjcwMSwzNjcwMiwzNjcwMywzNjcwNCwzNjcwNSwzNjcwNiwzNjcwNywzNjcwOCwzNjcwOSwzNjcxNCwz''@;'; put 'put ''NjczNiwzNjc0OCwzNjc1NCwzNjc2NSwzNjc2OCwzNjc2OSwzNjc3MCwzNjc3MiwzNjc3MywzNjc3NCwzNjc3NSwzNjc3OCwzNjc4MCwzNjc4MSwzNjc4MiwzNjc4MywzNjc4NiwzNjc4NywzNjc4OCwzNjc4OSwzNjc5MSwzNjc5MiwzNjc5NCwzNjc5NSwzNjc5NiwzNjc5OSwzNjgwMCwzNjgw''@;'; put 'put ''MywzNjgwNiwzNjgwOSwzNjgxMCwzNjgxMSwzNjgxMiwzNjgxMywzNjgxNSwzNjgxOCwzNjgyMiwzNjgyMywzNjgyNiwzNjgzMiwzNjgzMywzNjgzNSwzNjgzOSwzNjg0NCwzNjg0NywzNjg0OSwzNjg1MCwzNjg1MiwzNjg1MywzNjg1NCwzNjg1OCwzNjg1OSwzNjg2MCwzNjg2MiwzNjg2Mywz''@;'; put 'put ''Njg3MSwzNjg3MiwzNjg3NiwzNjg3OCwzNjg4MywzNjg4NSwzNjg4OCwzNDEzNCwzNDEwNywzNDA0NywzNDA0NCwzNDEzNywzNDEyMCwzNDE1MiwzNDE0OCwzNDE0MiwzNDE3MCwzMDYyNiwzNDExNSwzNDE2MiwzNDE3MSwzNDIxMiwzNDIxNiwzNDE4MywzNDE5MSwzNDE2OSwzNDIyMiwzNDIw''@;'; put 'put ''NCwzNDE4MSwzNDIzMywzNDIzMSwzNDIyNCwzNDI1OSwzNDI0MSwzNDI2OCwzNDMwMywzNDM0MywzNDMwOSwzNDM0NSwzNDMyNiwzNDM2NCwyNDMxOCwyNDMyOCwyMjg0NCwyMjg0OSwzMjgyMywyMjg2OSwyMjg3NCwyMjg3MiwyMTI2MywyMzU4NiwyMzU4OSwyMzU5NiwyMzYwNCwyNTE2NCwy''@;'; put 'put ''NTE5NCwyNTI0NywyNTI3NSwyNTI5MCwyNTMwNiwyNTMwMywyNTMyNiwyNTM3OCwyNTMzNCwyNTQwMSwyNTQxOSwyNTQxMSwyNTUxNywyNTU5MCwyNTQ1NywyNTQ2NiwyNTQ4NiwyNTUyNCwyNTQ1MywyNTUxNiwyNTQ4MiwyNTQ0OSwyNTUxOCwyNTUzMiwyNTU4NiwyNTU5MiwyNTU2OCwyNTU5''@;'; put 'put ''OSwyNTU0MCwyNTU2NiwyNTU1MCwyNTY4MiwyNTU0MiwyNTUzNCwyNTY2OSwyNTY2NSwyNTYxMSwyNTYyNywyNTYzMiwyNTYxMiwyNTYzOCwyNTYzMywyNTY5NCwyNTczMiwyNTcwOSwyNTc1MCwzNjg4OSwzNjg5MiwzNjg5OSwzNjkwMCwzNjkwMSwzNjkwMywzNjkwNCwzNjkwNSwzNjkwNiwz''@;'; put 'put ''NjkwNywzNjkwOCwzNjkxMiwzNjkxMywzNjkxNCwzNjkxNSwzNjkxNiwzNjkxOSwzNjkyMSwzNjkyMiwzNjkyNSwzNjkyNywzNjkyOCwzNjkzMSwzNjkzMywzNjkzNCwzNjkzNiwzNjkzNywzNjkzOCwzNjkzOSwzNjk0MCwzNjk0MiwzNjk0OCwzNjk0OSwzNjk1MCwzNjk1MywzNjk1NCwzNjk1''@;'; put 'put ''NiwzNjk1NywzNjk1OCwzNjk1OSwzNjk2MCwzNjk2MSwzNjk2NCwzNjk2NiwzNjk2NywzNjk2OSwzNjk3MCwzNjk3MSwzNjk3MiwzNjk3NSwzNjk3NiwzNjk3NywzNjk3OCwzNjk3OSwzNjk4MiwzNjk4MywzNjk4NCwzNjk4NSwzNjk4NiwzNjk4NywzNjk4OCwzNjk5MCwzNjk5MywzNjk5Niwz''@;'; put 'put ''Njk5NywzNjk5OCwzNjk5OSwzNzAwMSwzNzAwMiwzNzAwNCwzNzAwNSwzNzAwNiwzNzAwNywzNzAwOCwzNzAxMCwzNzAxMiwzNzAxNCwzNzAxNiwzNzAxOCwzNzAyMCwzNzAyMiwzNzAyMywzNzAyNCwzNzAyOCwzNzAyOSwzNzAzMSwzNzAzMiwzNzAzMywzNzAzNSwzNzAzNywzNzA0MiwzNzA0''@;'; put 'put ''NywzNzA1MiwzNzA1MywzNzA1NSwzNzA1NiwyNTcyMiwyNTc4MywyNTc4NCwyNTc1MywyNTc4NiwyNTc5MiwyNTgwOCwyNTgxNSwyNTgyOCwyNTgyNiwyNTg2NSwyNTg5MywyNTkwMiwyNDMzMSwyNDUzMCwyOTk3NywyNDMzNywyMTM0MywyMTQ4OSwyMTUwMSwyMTQ4MSwyMTQ4MCwyMTQ5OSwy''@;'; put 'put ''MTUyMiwyMTUyNiwyMTUxMCwyMTU3OSwyMTU4NiwyMTU4NywyMTU4OCwyMTU5MCwyMTU3MSwyMTUzNywyMTU5MSwyMTU5MywyMTUzOSwyMTU1NCwyMTYzNCwyMTY1MiwyMTYyMywyMTYxNywyMTYwNCwyMTY1OCwyMTY1OSwyMTYzNiwyMTYyMiwyMTYwNiwyMTY2MSwyMTcxMiwyMTY3NywyMTY5''@;'; put 'put ''OCwyMTY4NCwyMTcxNCwyMTY3MSwyMTY3MCwyMTcxNSwyMTcxNiwyMTYxOCwyMTY2NywyMTcxNywyMTY5MSwyMTY5NSwyMTcwOCwyMTcyMSwyMTcyMiwyMTcyNCwyMTY3MywyMTY3NCwyMTY2OCwyMTcyNSwyMTcxMSwyMTcyNiwyMTc4NywyMTczNSwyMTc5MiwyMTc1NywyMTc4MCwyMTc0Nywy''@;'; put 'put ''MTc5NCwyMTc5NSwyMTc3NSwyMTc3NywyMTc5OSwyMTgwMiwyMTg2MywyMTkwMywyMTk0MSwyMTgzMywyMTg2OSwyMTgyNSwyMTg0NSwyMTgyMywyMTg0MCwyMTgyMCwzNzA1OCwzNzA1OSwzNzA2MiwzNzA2NCwzNzA2NSwzNzA2NywzNzA2OCwzNzA2OSwzNzA3NCwzNzA3NiwzNzA3NywzNzA3''@;'; put 'put ''OCwzNzA4MCwzNzA4MSwzNzA4MiwzNzA4NiwzNzA4NywzNzA4OCwzNzA5MSwzNzA5MiwzNzA5MywzNzA5NywzNzA5OCwzNzEwMCwzNzEwMiwzNzEwNCwzNzEwNSwzNzEwNiwzNzEwNywzNzEwOSwzNzExMCwzNzExMSwzNzExMywzNzExNCwzNzExNSwzNzExNiwzNzExOSwzNzEyMCwzNzEyMSwz''@;'; put 'put ''NzEyMywzNzEyNSwzNzEyNiwzNzEyNywzNzEyOCwzNzEyOSwzNzEzMCwzNzEzMSwzNzEzMiwzNzEzMywzNzEzNCwzNzEzNSwzNzEzNiwzNzEzNywzNzEzOCwzNzEzOSwzNzE0MCwzNzE0MSwzNzE0MiwzNzE0MywzNzE0NCwzNzE0NiwzNzE0NywzNzE0OCwzNzE0OSwzNzE1MSwzNzE1MiwzNzE1''@;'; put 'put ''MywzNzE1NiwzNzE1NywzNzE1OCwzNzE1OSwzNzE2MCwzNzE2MSwzNzE2MiwzNzE2MywzNzE2NCwzNzE2NSwzNzE2NiwzNzE2OCwzNzE3MCwzNzE3MSwzNzE3MiwzNzE3MywzNzE3NCwzNzE3NSwzNzE3NiwzNzE3OCwzNzE3OSwzNzE4MCwzNzE4MSwzNzE4MiwzNzE4MywzNzE4NCwzNzE4NSwz''@;'; put 'put ''NzE4NiwzNzE4OCwyMTgxNSwyMTg0NiwyMTg3NywyMTg3OCwyMTg3OSwyMTgxMSwyMTgwOCwyMTg1MiwyMTg5OSwyMTk3MCwyMTg5MSwyMTkzNywyMTk0NSwyMTg5NiwyMTg4OSwyMTkxOSwyMTg4NiwyMTk3NCwyMTkwNSwyMTg4MywyMTk4MywyMTk0OSwyMTk1MCwyMTkwOCwyMTkxMywyMTk5''@;'; put 'put ''NCwyMjAwNywyMTk2MSwyMjA0NywyMTk2OSwyMTk5NSwyMTk5NiwyMTk3MiwyMTk5MCwyMTk4MSwyMTk1NiwyMTk5OSwyMTk4OSwyMjAwMiwyMjAwMywyMTk2NCwyMTk2NSwyMTk5MiwyMjAwNSwyMTk4OCwzNjc1NiwyMjA0NiwyMjAyNCwyMjAyOCwyMjAxNywyMjA1MiwyMjA1MSwyMjAxNCwy''@;'; put 'put ''MjAxNiwyMjA1NSwyMjA2MSwyMjEwNCwyMjA3MywyMjEwMywyMjA2MCwyMjA5MywyMjExNCwyMjEwNSwyMjEwOCwyMjA5MiwyMjEwMCwyMjE1MCwyMjExNiwyMjEyOSwyMjEyMywyMjEzOSwyMjE0MCwyMjE0OSwyMjE2MywyMjE5MSwyMjIyOCwyMjIzMSwyMjIzNywyMjI0MSwyMjI2MSwyMjI1''@;'; put 'put ''MSwyMjI2NSwyMjI3MSwyMjI3NiwyMjI4MiwyMjI4MSwyMjMwMCwyNDA3OSwyNDA4OSwyNDA4NCwyNDA4MSwyNDExMywyNDEyMywyNDEyNCwzNzE4OSwzNzE5MSwzNzE5MiwzNzIwMSwzNzIwMywzNzIwNCwzNzIwNSwzNzIwNiwzNzIwOCwzNzIwOSwzNzIxMSwzNzIxMiwzNzIxNSwzNzIxNiwz''@;'; put 'put ''NzIyMiwzNzIyMywzNzIyNCwzNzIyNywzNzIyOSwzNzIzNSwzNzI0MiwzNzI0MywzNzI0NCwzNzI0OCwzNzI0OSwzNzI1MCwzNzI1MSwzNzI1MiwzNzI1NCwzNzI1NiwzNzI1OCwzNzI2MiwzNzI2MywzNzI2NywzNzI2OCwzNzI2OSwzNzI3MCwzNzI3MSwzNzI3MiwzNzI3MywzNzI3NiwzNzI3''@;'; put 'put ''NywzNzI3OCwzNzI3OSwzNzI4MCwzNzI4MSwzNzI4NCwzNzI4NSwzNzI4NiwzNzI4NywzNzI4OCwzNzI4OSwzNzI5MSwzNzI5MiwzNzI5NiwzNzI5NywzNzI5OCwzNzI5OSwzNzMwMiwzNzMwMywzNzMwNCwzNzMwNSwzNzMwNywzNzMwOCwzNzMwOSwzNzMxMCwzNzMxMSwzNzMxMiwzNzMxMywz''@;'; put 'put ''NzMxNCwzNzMxNSwzNzMxNiwzNzMxNywzNzMxOCwzNzMyMCwzNzMyMywzNzMyOCwzNzMzMCwzNzMzMSwzNzMzMiwzNzMzMywzNzMzNCwzNzMzNSwzNzMzNiwzNzMzNywzNzMzOCwzNzMzOSwzNzM0MSwzNzM0MiwzNzM0MywzNzM0NCwzNzM0NSwzNzM0NiwzNzM0NywzNzM0OCwzNzM0OSwyNDEx''@;'; put 'put ''OSwyNDEzMiwyNDE0OCwyNDE1NSwyNDE1OCwyNDE2MSwyMzY5MiwyMzY3NCwyMzY5MywyMzY5NiwyMzcwMiwyMzY4OCwyMzcwNCwyMzcwNSwyMzY5NywyMzcwNiwyMzcwOCwyMzczMywyMzcxNCwyMzc0MSwyMzcyNCwyMzcyMywyMzcyOSwyMzcxNSwyMzc0NSwyMzczNSwyMzc0OCwyMzc2Miwy''@;'; put 'put ''Mzc4MCwyMzc1NSwyMzc4MSwyMzgxMCwyMzgxMSwyMzg0NywyMzg0NiwyMzg1NCwyMzg0NCwyMzgzOCwyMzgxNCwyMzgzNSwyMzg5NiwyMzg3MCwyMzg2MCwyMzg2OSwyMzkxNiwyMzg5OSwyMzkxOSwyMzkwMSwyMzkxNSwyMzg4MywyMzg4MiwyMzkxMywyMzkyNCwyMzkzOCwyMzk2MSwyMzk2''@;'; put 'put ''NSwzNTk1NSwyMzk5MSwyNDAwNSwyNDQzNSwyNDQzOSwyNDQ1MCwyNDQ1NSwyNDQ1NywyNDQ2MCwyNDQ2OSwyNDQ3MywyNDQ3NiwyNDQ4OCwyNDQ5MywyNDUwMSwyNDUwOCwzNDkxNCwyNDQxNywyOTM1NywyOTM2MCwyOTM2NCwyOTM2NywyOTM2OCwyOTM3OSwyOTM3NywyOTM5MCwyOTM4OSwy''@;'; put 'put ''OTM5NCwyOTQxNiwyOTQyMywyOTQxNywyOTQyNiwyOTQyOCwyOTQzMSwyOTQ0MSwyOTQyNywyOTQ0MywyOTQzNCwzNzM1MCwzNzM1MSwzNzM1MiwzNzM1MywzNzM1NCwzNzM1NSwzNzM1NiwzNzM1NywzNzM1OCwzNzM1OSwzNzM2MCwzNzM2MSwzNzM2MiwzNzM2MywzNzM2NCwzNzM2NSwzNzM2''@;'; put 'put ''NiwzNzM2NywzNzM2OCwzNzM2OSwzNzM3MCwzNzM3MSwzNzM3MiwzNzM3MywzNzM3NCwzNzM3NSwzNzM3NiwzNzM3NywzNzM3OCwzNzM3OSwzNzM4MCwzNzM4MSwzNzM4MiwzNzM4MywzNzM4NCwzNzM4NSwzNzM4NiwzNzM4NywzNzM4OCwzNzM4OSwzNzM5MCwzNzM5MSwzNzM5MiwzNzM5Mywz''@;'; put 'put ''NzM5NCwzNzM5NSwzNzM5NiwzNzM5NywzNzM5OCwzNzM5OSwzNzQwMCwzNzQwMSwzNzQwMiwzNzQwMywzNzQwNCwzNzQwNSwzNzQwNiwzNzQwNywzNzQwOCwzNzQwOSwzNzQxMCwzNzQxMSwzNzQxMiwzNzQxMywzNzQxNCwzNzQxNSwzNzQxNiwzNzQxNywzNzQxOCwzNzQxOSwzNzQyMCwzNzQy''@;'; put 'put ''MSwzNzQyMiwzNzQyMywzNzQyNCwzNzQyNSwzNzQyNiwzNzQyNywzNzQyOCwzNzQyOSwzNzQzMCwzNzQzMSwzNzQzMiwzNzQzMywzNzQzNCwzNzQzNSwzNzQzNiwzNzQzNywzNzQzOCwzNzQzOSwzNzQ0MCwzNzQ0MSwzNzQ0MiwzNzQ0MywzNzQ0NCwzNzQ0NSwyOTQzNSwyOTQ2MywyOTQ1OSwy''@;'; put 'put ''OTQ3MywyOTQ1MCwyOTQ3MCwyOTQ2OSwyOTQ2MSwyOTQ3NCwyOTQ5NywyOTQ3NywyOTQ4NCwyOTQ5NiwyOTQ4OSwyOTUyMCwyOTUxNywyOTUyNywyOTUzNiwyOTU0OCwyOTU1MSwyOTU2NiwzMzMwNywyMjgyMSwzOTE0MywyMjgyMCwyMjc4NiwzOTI2NywzOTI3MSwzOTI3MiwzOTI3MywzOTI3''@;'; put 'put ''NCwzOTI3NSwzOTI3NiwzOTI4NCwzOTI4NywzOTI5MywzOTI5NiwzOTMwMCwzOTMwMywzOTMwNiwzOTMwOSwzOTMxMiwzOTMxMywzOTMxNSwzOTMxNiwzOTMxNywyNDE5MiwyNDIwOSwyNDIwMywyNDIxNCwyNDIyOSwyNDIyNCwyNDI0OSwyNDI0NSwyNDI1NCwyNDI0MywzNjE3OSwyNDI3NCwy''@;'; put 'put ''NDI3MywyNDI4MywyNDI5NiwyNDI5OCwzMzIxMCwyNDUxNiwyNDUyMSwyNDUzNCwyNDUyNywyNDU3OSwyNDU1OCwyNDU4MCwyNDU0NSwyNDU0OCwyNDU3NCwyNDU4MSwyNDU4MiwyNDU1NCwyNDU1NywyNDU2OCwyNDYwMSwyNDYyOSwyNDYxNCwyNDYwMywyNDU5MSwyNDU4OSwyNDYxNywyNDYx''@;'; put 'put ''OSwyNDU4NiwyNDYzOSwyNDYwOSwyNDY5NiwyNDY5NywyNDY5OSwyNDY5OCwyNDY0MiwzNzQ0NiwzNzQ0NywzNzQ0OCwzNzQ0OSwzNzQ1MCwzNzQ1MSwzNzQ1MiwzNzQ1MywzNzQ1NCwzNzQ1NSwzNzQ1NiwzNzQ1NywzNzQ1OCwzNzQ1OSwzNzQ2MCwzNzQ2MSwzNzQ2MiwzNzQ2MywzNzQ2NCwz''@;'; put 'put ''NzQ2NSwzNzQ2NiwzNzQ2NywzNzQ2OCwzNzQ2OSwzNzQ3MCwzNzQ3MSwzNzQ3MiwzNzQ3MywzNzQ3NCwzNzQ3NSwzNzQ3NiwzNzQ3NywzNzQ3OCwzNzQ3OSwzNzQ4MCwzNzQ4MSwzNzQ4MiwzNzQ4MywzNzQ4NCwzNzQ4NSwzNzQ4NiwzNzQ4NywzNzQ4OCwzNzQ4OSwzNzQ5MCwzNzQ5MSwzNzQ5''@;'; put 'put ''MywzNzQ5NCwzNzQ5NSwzNzQ5NiwzNzQ5NywzNzQ5OCwzNzQ5OSwzNzUwMCwzNzUwMSwzNzUwMiwzNzUwMywzNzUwNCwzNzUwNSwzNzUwNiwzNzUwNywzNzUwOCwzNzUwOSwzNzUxMCwzNzUxMSwzNzUxMiwzNzUxMywzNzUxNCwzNzUxNSwzNzUxNiwzNzUxNywzNzUxOSwzNzUyMCwzNzUyMSwz''@;'; put 'put ''NzUyMiwzNzUyMywzNzUyNCwzNzUyNSwzNzUyNiwzNzUyNywzNzUyOCwzNzUyOSwzNzUzMCwzNzUzMSwzNzUzMiwzNzUzMywzNzUzNCwzNzUzNSwzNzUzNiwzNzUzNywzNzUzOCwzNzUzOSwzNzU0MCwzNzU0MSwzNzU0MiwzNzU0MywyNDY4MiwyNDcwMSwyNDcyNiwyNDczMCwyNDc0OSwyNDcz''@;'; put 'put ''MywyNDcwNywyNDcyMiwyNDcxNiwyNDczMSwyNDgxMiwyNDc2MywyNDc1MywyNDc5NywyNDc5MiwyNDc3NCwyNDc5NCwyNDc1NiwyNDg2NCwyNDg3MCwyNDg1MywyNDg2NywyNDgyMCwyNDgzMiwyNDg0NiwyNDg3NSwyNDkwNiwyNDk0OSwyNTAwNCwyNDk4MCwyNDk5OSwyNTAxNSwyNTA0NCwy''@;'; put 'put ''NTA3NywyNDU0MSwzODU3OSwzODM3NywzODM3OSwzODM4NSwzODM4NywzODM4OSwzODM5MCwzODM5NiwzODM5OCwzODQwMywzODQwNCwzODQwNiwzODQwOCwzODQxMCwzODQxMSwzODQxMiwzODQxMywzODQxNSwzODQxOCwzODQyMSwzODQyMiwzODQyMywzODQyNSwzODQyNiwyMDAxMiwyOTI0''@;'; put 'put ''NywyNTEwOSwyNzcwMSwyNzczMiwyNzc0MCwyNzcyMiwyNzgxMSwyNzc4MSwyNzc5MiwyNzc5NiwyNzc4OCwyNzc1MiwyNzc1MywyNzc2NCwyNzc2NiwyNzc4MiwyNzgxNywyNzg1NiwyNzg2MCwyNzgyMSwyNzg5NSwyNzg5NiwyNzg4OSwyNzg2MywyNzgyNiwyNzg3MiwyNzg2MiwyNzg5OCwy''@;'; put 'put ''Nzg4MywyNzg4NiwyNzgyNSwyNzg1OSwyNzg4NywyNzkwMiwzNzU0NCwzNzU0NSwzNzU0NiwzNzU0NywzNzU0OCwzNzU0OSwzNzU1MSwzNzU1MiwzNzU1MywzNzU1NCwzNzU1NSwzNzU1NiwzNzU1NywzNzU1OCwzNzU1OSwzNzU2MCwzNzU2MSwzNzU2MiwzNzU2MywzNzU2NCwzNzU2NSwzNzU2''@;'; put 'put ''NiwzNzU2NywzNzU2OCwzNzU2OSwzNzU3MCwzNzU3MSwzNzU3MiwzNzU3MywzNzU3NCwzNzU3NSwzNzU3NywzNzU3OCwzNzU3OSwzNzU4MCwzNzU4MSwzNzU4MiwzNzU4MywzNzU4NCwzNzU4NSwzNzU4NiwzNzU4NywzNzU4OCwzNzU4OSwzNzU5MCwzNzU5MSwzNzU5MiwzNzU5MywzNzU5NCwz''@;'; put 'put ''NzU5NSwzNzU5NiwzNzU5NywzNzU5OCwzNzU5OSwzNzYwMCwzNzYwMSwzNzYwMiwzNzYwMywzNzYwNCwzNzYwNSwzNzYwNiwzNzYwNywzNzYwOCwzNzYwOSwzNzYxMCwzNzYxMSwzNzYxMiwzNzYxMywzNzYxNCwzNzYxNSwzNzYxNiwzNzYxNywzNzYxOCwzNzYxOSwzNzYyMCwzNzYyMSwzNzYy''@;'; put 'put ''MiwzNzYyMywzNzYyNCwzNzYyNSwzNzYyNiwzNzYyNywzNzYyOCwzNzYyOSwzNzYzMCwzNzYzMSwzNzYzMiwzNzYzMywzNzYzNCwzNzYzNSwzNzYzNiwzNzYzNywzNzYzOCwzNzYzOSwzNzY0MCwzNzY0MSwyNzk2MSwyNzk0MywyNzkxNiwyNzk3MSwyNzk3NiwyNzkxMSwyNzkwOCwyNzkyOSwy''@;'; put 'put ''NzkxOCwyNzk0NywyNzk4MSwyNzk1MCwyNzk1NywyNzkzMCwyNzk4MywyNzk4NiwyNzk4OCwyNzk1NSwyODA0OSwyODAxNSwyODA2MiwyODA2NCwyNzk5OCwyODA1MSwyODA1MiwyNzk5NiwyOGUzLDI4MDI4LDI4MDAzLDI4MTg2LDI4MTAzLDI4MTAxLDI4MTI2LDI4MTc0LDI4MDk1LDI4MTI4''@;'; put 'put ''LDI4MTc3LDI4MTM0LDI4MTI1LDI4MTIxLDI4MTgyLDI4MDc1LDI4MTcyLDI4MDc4LDI4MjAzLDI4MjcwLDI4MjM4LDI4MjY3LDI4MzM4LDI4MjU1LDI4Mjk0LDI4MjQzLDI4MjQ0LDI4MjEwLDI4MTk3LDI4MjI4LDI4MzgzLDI4MzM3LDI4MzEyLDI4Mzg0LDI4NDYxLDI4Mzg2LDI4MzI1LDI4''@;'; put 'put ''MzI3LDI4MzQ5LDI4MzQ3LDI4MzQzLDI4Mzc1LDI4MzQwLDI4MzY3LDI4MzAzLDI4MzU0LDI4MzE5LDI4NTE0LDI4NDg2LDI4NDg3LDI4NDUyLDI4NDM3LDI4NDA5LDI4NDYzLDI4NDcwLDI4NDkxLDI4NTMyLDI4NDU4LDI4NDI1LDI4NDU3LDI4NTUzLDI4NTU3LDI4NTU2LDI4NTM2LDI4NTMw''@;'; put 'put ''LDI4NTQwLDI4NTM4LDI4NjI1LDM3NjQyLDM3NjQzLDM3NjQ0LDM3NjQ1LDM3NjQ2LDM3NjQ3LDM3NjQ4LDM3NjQ5LDM3NjUwLDM3NjUxLDM3NjUyLDM3NjUzLDM3NjU0LDM3NjU1LDM3NjU2LDM3NjU3LDM3NjU4LDM3NjU5LDM3NjYwLDM3NjYxLDM3NjYyLDM3NjYzLDM3NjY0LDM3NjY1LDM3''@;'; put 'put ''NjY2LDM3NjY3LDM3NjY4LDM3NjY5LDM3NjcwLDM3NjcxLDM3NjcyLDM3NjczLDM3Njc0LDM3Njc1LDM3Njc2LDM3Njc3LDM3Njc4LDM3Njc5LDM3NjgwLDM3NjgxLDM3NjgyLDM3NjgzLDM3Njg0LDM3Njg1LDM3Njg2LDM3Njg3LDM3Njg4LDM3Njg5LDM3NjkwLDM3NjkxLDM3NjkyLDM3Njkz''@;'; put 'put ''LDM3Njk1LDM3Njk2LDM3Njk3LDM3Njk4LDM3Njk5LDM3NzAwLDM3NzAxLDM3NzAyLDM3NzAzLDM3NzA0LDM3NzA1LDM3NzA2LDM3NzA3LDM3NzA4LDM3NzA5LDM3NzEwLDM3NzExLDM3NzEyLDM3NzEzLDM3NzE0LDM3NzE1LDM3NzE2LDM3NzE3LDM3NzE4LDM3NzE5LDM3NzIwLDM3NzIxLDM3''@;'; put 'put ''NzIyLDM3NzIzLDM3NzI0LDM3NzI1LDM3NzI2LDM3NzI3LDM3NzI4LDM3NzI5LDM3NzMwLDM3NzMxLDM3NzMyLDM3NzMzLDM3NzM0LDM3NzM1LDM3NzM2LDM3NzM3LDM3NzM5LDI4NjE3LDI4NTgzLDI4NjAxLDI4NTk4LDI4NjEwLDI4NjQxLDI4NjU0LDI4NjM4LDI4NjQwLDI4NjU1LDI4Njk4''@;'; put 'put ''LDI4NzA3LDI4Njk5LDI4NzI5LDI4NzI1LDI4NzUxLDI4NzY2LDIzNDI0LDIzNDI4LDIzNDQ1LDIzNDQzLDIzNDYxLDIzNDgwLDI5OTk5LDM5NTgyLDI1NjUyLDIzNTI0LDIzNTM0LDM1MTIwLDIzNTM2LDM2NDIzLDM1NTkxLDM2NzkwLDM2ODE5LDM2ODIxLDM2ODM3LDM2ODQ2LDM2ODM2LDM2''@;'; put 'put ''ODQxLDM2ODM4LDM2ODUxLDM2ODQwLDM2ODY5LDM2ODY4LDM2ODc1LDM2OTAyLDM2ODgxLDM2ODc3LDM2ODg2LDM2ODk3LDM2OTE3LDM2OTE4LDM2OTA5LDM2OTExLDM2OTMyLDM2OTQ1LDM2OTQ2LDM2OTQ0LDM2OTY4LDM2OTUyLDM2OTYyLDM2OTU1LDI2Mjk3LDM2OTgwLDM2OTg5LDM2OTk0''@;'; put 'put ''LDM3ZTMsMzY5OTUsMzcwMDMsMjQ0MDAsMjQ0MDcsMjQ0MDYsMjQ0MDgsMjM2MTEsMjE2NzUsMjM2MzIsMjM2NDEsMjM0MDksMjM2NTEsMjM2NTQsMzI3MDAsMjQzNjIsMjQzNjEsMjQzNjUsMzMzOTYsMjQzODAsMzk3MzksMjM2NjIsMjI5MTMsMjI5MTUsMjI5MjUsMjI5NTMsMjI5NTQsMjI5''@;'; put 'put ''NDcsMzc3NDAsMzc3NDEsMzc3NDIsMzc3NDMsMzc3NDQsMzc3NDUsMzc3NDYsMzc3NDcsMzc3NDgsMzc3NDksMzc3NTAsMzc3NTEsMzc3NTIsMzc3NTMsMzc3NTQsMzc3NTUsMzc3NTYsMzc3NTcsMzc3NTgsMzc3NTksMzc3NjAsMzc3NjEsMzc3NjIsMzc3NjMsMzc3NjQsMzc3NjUsMzc3NjYs''@;'; put 'put ''Mzc3NjcsMzc3NjgsMzc3NjksMzc3NzAsMzc3NzEsMzc3NzIsMzc3NzMsMzc3NzQsMzc3NzYsMzc3NzcsMzc3NzgsMzc3NzksMzc3ODAsMzc3ODEsMzc3ODIsMzc3ODMsMzc3ODQsMzc3ODUsMzc3ODYsMzc3ODcsMzc3ODgsMzc3ODksMzc3OTAsMzc3OTEsMzc3OTIsMzc3OTMsMzc3OTQsMzc3''@;'; put 'put ''OTUsMzc3OTYsMzc3OTcsMzc3OTgsMzc3OTksMzc4MDAsMzc4MDEsMzc4MDIsMzc4MDMsMzc4MDQsMzc4MDUsMzc4MDYsMzc4MDcsMzc4MDgsMzc4MDksMzc4MTAsMzc4MTEsMzc4MTIsMzc4MTMsMzc4MTQsMzc4MTUsMzc4MTYsMzc4MTcsMzc4MTgsMzc4MTksMzc4MjAsMzc4MjEsMzc4MjIs''@;'; put 'put ''Mzc4MjMsMzc4MjQsMzc4MjUsMzc4MjYsMzc4MjcsMzc4MjgsMzc4MjksMzc4MzAsMzc4MzEsMzc4MzIsMzc4MzMsMzc4MzUsMzc4MzYsMzc4MzcsMjI5MzUsMjI5ODYsMjI5NTUsMjI5NDIsMjI5NDgsMjI5OTQsMjI5NjIsMjI5NTksMjI5OTksMjI5NzQsMjMwNDUsMjMwNDYsMjMwMDUsMjMw''@;'; put 'put ''NDgsMjMwMTEsMjNlMywyMzAzMywyMzA1MiwyMzA0OSwyMzA5MCwyMzA5MiwyMzA1NywyMzA3NSwyMzA1OSwyMzEwNCwyMzE0MywyMzExNCwyMzEyNSwyMzEwMCwyMzEzOCwyMzE1NywzMzAwNCwyMzIxMCwyMzE5NSwyMzE1OSwyMzE2MiwyMzIzMCwyMzI3NSwyMzIxOCwyMzI1MCwyMzI1Miwy''@;'; put 'put ''MzIyNCwyMzI2NCwyMzI2NywyMzI4MSwyMzI1NCwyMzI3MCwyMzI1NiwyMzI2MCwyMzMwNSwyMzMxOSwyMzMxOCwyMzM0NiwyMzM1MSwyMzM2MCwyMzU3MywyMzU4MCwyMzM4NiwyMzM5NywyMzQxMSwyMzM3NywyMzM3OSwyMzM5NCwzOTU0MSwzOTU0MywzOTU0NCwzOTU0NiwzOTU1MSwzOTU0''@;'; put 'put ''OSwzOTU1MiwzOTU1MywzOTU1NywzOTU2MCwzOTU2MiwzOTU2OCwzOTU3MCwzOTU3MSwzOTU3NCwzOTU3NiwzOTU3OSwzOTU4MCwzOTU4MSwzOTU4MywzOTU4NCwzOTU4NiwzOTU4NywzOTU4OSwzOTU5MSwzMjQxNSwzMjQxNywzMjQxOSwzMjQyMSwzMjQyNCwzMjQyNSwzNzgzOCwzNzgzOSwz''@;'; put 'put ''Nzg0MCwzNzg0MSwzNzg0MiwzNzg0MywzNzg0NCwzNzg0NSwzNzg0NywzNzg0OCwzNzg0OSwzNzg1MCwzNzg1MSwzNzg1MiwzNzg1MywzNzg1NCwzNzg1NSwzNzg1NiwzNzg1NywzNzg1OCwzNzg1OSwzNzg2MCwzNzg2MSwzNzg2MiwzNzg2MywzNzg2NCwzNzg2NSwzNzg2NiwzNzg2NywzNzg2''@;'; put 'put ''OCwzNzg2OSwzNzg3MCwzNzg3MSwzNzg3MiwzNzg3MywzNzg3NCwzNzg3NSwzNzg3NiwzNzg3NywzNzg3OCwzNzg3OSwzNzg4MCwzNzg4MSwzNzg4MiwzNzg4MywzNzg4NCwzNzg4NSwzNzg4NiwzNzg4NywzNzg4OCwzNzg4OSwzNzg5MCwzNzg5MSwzNzg5MiwzNzg5MywzNzg5NCwzNzg5NSwz''@;'; put 'put ''Nzg5NiwzNzg5NywzNzg5OCwzNzg5OSwzNzkwMCwzNzkwMSwzNzkwMiwzNzkwMywzNzkwNCwzNzkwNSwzNzkwNiwzNzkwNywzNzkwOCwzNzkwOSwzNzkxMCwzNzkxMSwzNzkxMiwzNzkxMywzNzkxNCwzNzkxNSwzNzkxNiwzNzkxNywzNzkxOCwzNzkxOSwzNzkyMCwzNzkyMSwzNzkyMiwzNzky''@;'; put 'put ''MywzNzkyNCwzNzkyNSwzNzkyNiwzNzkyNywzNzkyOCwzNzkyOSwzNzkzMCwzNzkzMSwzNzkzMiwzNzkzMywzNzkzNCwzMjQyOSwzMjQzMiwzMjQ0NiwzMjQ0OCwzMjQ0OSwzMjQ1MCwzMjQ1NywzMjQ1OSwzMjQ2MCwzMjQ2NCwzMjQ2OCwzMjQ3MSwzMjQ3NSwzMjQ4MCwzMjQ4MSwzMjQ4OCwz''@;'; put 'put ''MjQ5MSwzMjQ5NCwzMjQ5NSwzMjQ5NywzMjQ5OCwzMjUyNSwzMjUwMiwzMjUwNiwzMjUwNywzMjUxMCwzMjUxMywzMjUxNCwzMjUxNSwzMjUxOSwzMjUyMCwzMjUyMywzMjUyNCwzMjUyNywzMjUyOSwzMjUzMCwzMjUzNSwzMjUzNywzMjU0MCwzMjUzOSwzMjU0MywzMjU0NSwzMjU0NiwzMjU0''@;'; put 'put ''NywzMjU0OCwzMjU0OSwzMjU1MCwzMjU1MSwzMjU1NCwzMjU1NSwzMjU1NiwzMjU1NywzMjU1OSwzMjU2MCwzMjU2MSwzMjU2MiwzMjU2MywzMjU2NSwyNDE4NiwzMDA3OSwyNDAyNywzMDAxNCwzNzAxMywyOTU4MiwyOTU4NSwyOTYxNCwyOTYwMiwyOTU5OSwyOTY0NywyOTYzNCwyOTY0OSwy''@;'; put 'put ''OTYyMywyOTYxOSwyOTYzMiwyOTY0MSwyOTY0MCwyOTY2OSwyOTY1NywzOTAzNiwyOTcwNiwyOTY3MywyOTY3MSwyOTY2MiwyOTYyNiwyOTY4MiwyOTcxMSwyOTczOCwyOTc4NywyOTczNCwyOTczMywyOTczNiwyOTc0NCwyOTc0MiwyOTc0MCwzNzkzNSwzNzkzNiwzNzkzNywzNzkzOCwzNzkz''@;'; put 'put ''OSwzNzk0MCwzNzk0MSwzNzk0MiwzNzk0MywzNzk0NCwzNzk0NSwzNzk0NiwzNzk0NywzNzk0OCwzNzk0OSwzNzk1MSwzNzk1MiwzNzk1MywzNzk1NCwzNzk1NSwzNzk1NiwzNzk1NywzNzk1OCwzNzk1OSwzNzk2MCwzNzk2MSwzNzk2MiwzNzk2MywzNzk2NCwzNzk2NSwzNzk2NiwzNzk2Nywz''@;'; put 'put ''Nzk2OCwzNzk2OSwzNzk3MCwzNzk3MSwzNzk3MiwzNzk3MywzNzk3NCwzNzk3NSwzNzk3NiwzNzk3NywzNzk3OCwzNzk3OSwzNzk4MCwzNzk4MSwzNzk4MiwzNzk4MywzNzk4NCwzNzk4NSwzNzk4NiwzNzk4NywzNzk4OCwzNzk4OSwzNzk5MCwzNzk5MSwzNzk5MiwzNzk5MywzNzk5NCwzNzk5''@;'; put 'put ''NiwzNzk5NywzNzk5OCwzNzk5OSwzOGUzLDM4MDAxLDM4MDAyLDM4MDAzLDM4MDA0LDM4MDA1LDM4MDA2LDM4MDA3LDM4MDA4LDM4MDA5LDM4MDEwLDM4MDExLDM4MDEyLDM4MDEzLDM4MDE0LDM4MDE1LDM4MDE2LDM4MDE3LDM4MDE4LDM4MDE5LDM4MDIwLDM4MDMzLDM4MDM4LDM4MDQwLDM4''@;'; put 'put ''MDg3LDM4MDk1LDM4MDk5LDM4MTAwLDM4MTA2LDM4MTE4LDM4MTM5LDM4MTcyLDM4MTc2LDI5NzIzLDI5NzIyLDI5NzYxLDI5Nzg4LDI5NzgzLDI5NzgxLDI5Nzg1LDI5ODE1LDI5ODA1LDI5ODIyLDI5ODUyLDI5ODM4LDI5ODI0LDI5ODI1LDI5ODMxLDI5ODM1LDI5ODU0LDI5ODY0LDI5ODY1''@;'; put 'put ''LDI5ODQwLDI5ODYzLDI5OTA2LDI5ODgyLDM4ODkwLDM4ODkxLDM4ODkyLDI2NDQ0LDI2NDUxLDI2NDYyLDI2NDQwLDI2NDczLDI2NTMzLDI2NTAzLDI2NDc0LDI2NDgzLDI2NTIwLDI2NTM1LDI2NDg1LDI2NTM2LDI2NTI2LDI2NTQxLDI2NTA3LDI2NDg3LDI2NDkyLDI2NjA4LDI2NjMzLDI2''@;'; put 'put ''NTg0LDI2NjM0LDI2NjAxLDI2NTQ0LDI2NjM2LDI2NTg1LDI2NTQ5LDI2NTg2LDI2NTQ3LDI2NTg5LDI2NjI0LDI2NTYzLDI2NTUyLDI2NTk0LDI2NjM4LDI2NTYxLDI2NjIxLDI2Njc0LDI2Njc1LDI2NzIwLDI2NzIxLDI2NzAyLDI2NzIyLDI2NjkyLDI2NzI0LDI2NzU1LDI2NjUzLDI2NzA5''@;'; put 'put ''LDI2NzI2LDI2Njg5LDI2NzI3LDI2Njg4LDI2Njg2LDI2Njk4LDI2Njk3LDI2NjY1LDI2ODA1LDI2NzY3LDI2NzQwLDI2NzQzLDI2NzcxLDI2NzMxLDI2ODE4LDI2OTkwLDI2ODc2LDI2OTExLDI2OTEyLDI2ODczLDM4MTgzLDM4MTk1LDM4MjA1LDM4MjExLDM4MjE2LDM4MjE5LDM4MjI5LDM4''@;'; put 'put ''MjM0LDM4MjQwLDM4MjU0LDM4MjYwLDM4MjYxLDM4MjYzLDM4MjY0LDM4MjY1LDM4MjY2LDM4MjY3LDM4MjY4LDM4MjY5LDM4MjcwLDM4MjcyLDM4MjczLDM4Mjc0LDM4Mjc1LDM4Mjc2LDM4Mjc3LDM4Mjc4LDM4Mjc5LDM4MjgwLDM4MjgxLDM4MjgyLDM4MjgzLDM4Mjg0LDM4Mjg1LDM4Mjg2''@;'; put 'put ''LDM4Mjg3LDM4Mjg4LDM4Mjg5LDM4MjkwLDM4MjkxLDM4MjkyLDM4MjkzLDM4Mjk0LDM4Mjk1LDM4Mjk2LDM4Mjk3LDM4Mjk4LDM4Mjk5LDM4MzAwLDM4MzAxLDM4MzAyLDM4MzAzLDM4MzA0LDM4MzA1LDM4MzA2LDM4MzA3LDM4MzA4LDM4MzA5LDM4MzEwLDM4MzExLDM4MzEyLDM4MzEzLDM4''@;'; put 'put ''MzE0LDM4MzE1LDM4MzE2LDM4MzE3LDM4MzE4LDM4MzE5LDM4MzIwLDM4MzIxLDM4MzIyLDM4MzIzLDM4MzI0LDM4MzI1LDM4MzI2LDM4MzI3LDM4MzI4LDM4MzI5LDM4MzMwLDM4MzMxLDM4MzMyLDM4MzMzLDM4MzM0LDM4MzM1LDM4MzM2LDM4MzM3LDM4MzM4LDM4MzM5LDM4MzQwLDM4MzQx''@;'; put 'put ''LDM4MzQyLDM4MzQzLDM4MzQ0LDM4MzQ1LDM4MzQ2LDM4MzQ3LDI2OTE2LDI2ODY0LDI2ODkxLDI2ODgxLDI2OTY3LDI2ODUxLDI2ODk2LDI2OTkzLDI2OTM3LDI2OTc2LDI2OTQ2LDI2OTczLDI3MDEyLDI2OTg3LDI3MDA4LDI3MDMyLDI3ZTMsMjY5MzIsMjcwODQsMjcwMTUsMjcwMTYsMjcw''@;'; put 'put ''ODYsMjcwMTcsMjY5ODIsMjY5NzksMjcwMDEsMjcwMzUsMjcwNDcsMjcwNjcsMjcwNTEsMjcwNTMsMjcwOTIsMjcwNTcsMjcwNzMsMjcwODIsMjcxMDMsMjcwMjksMjcxMDQsMjcwMjEsMjcxMzUsMjcxODMsMjcxMTcsMjcxNTksMjcxNjAsMjcyMzcsMjcxMjIsMjcyMDQsMjcxOTgsMjcyOTYs''@;'; put 'put ''MjcyMTYsMjcyMjcsMjcxODksMjcyNzgsMjcyNTcsMjcxOTcsMjcxNzYsMjcyMjQsMjcyNjAsMjcyODEsMjcyODAsMjczMDUsMjcyODcsMjczMDcsMjk0OTUsMjk1MjIsMjc1MjEsMjc1MjIsMjc1MjcsMjc1MjQsMjc1MzgsMjc1MzksMjc1MzMsMjc1NDYsMjc1NDcsMjc1NTMsMjc1NjIsMzY3''@;'; put 'put ''MTUsMzY3MTcsMzY3MjEsMzY3MjIsMzY3MjMsMzY3MjUsMzY3MjYsMzY3MjgsMzY3MjcsMzY3MjksMzY3MzAsMzY3MzIsMzY3MzQsMzY3MzcsMzY3MzgsMzY3NDAsMzY3NDMsMzY3NDcsMzgzNDgsMzgzNDksMzgzNTAsMzgzNTEsMzgzNTIsMzgzNTMsMzgzNTQsMzgzNTUsMzgzNTYsMzgzNTcs''@;'; put 'put ''MzgzNTgsMzgzNTksMzgzNjAsMzgzNjEsMzgzNjIsMzgzNjMsMzgzNjQsMzgzNjUsMzgzNjYsMzgzNjcsMzgzNjgsMzgzNjksMzgzNzAsMzgzNzEsMzgzNzIsMzgzNzMsMzgzNzQsMzgzNzUsMzgzODAsMzgzOTksMzg0MDcsMzg0MTksMzg0MjQsMzg0MjcsMzg0MzAsMzg0MzIsMzg0MzUsMzg0''@;'; put 'put ''MzYsMzg0MzcsMzg0MzgsMzg0MzksMzg0NDAsMzg0NDEsMzg0NDMsMzg0NDQsMzg0NDUsMzg0NDcsMzg0NDgsMzg0NTUsMzg0NTYsMzg0NTcsMzg0NTgsMzg0NjIsMzg0NjUsMzg0NjcsMzg0NzQsMzg0NzgsMzg0NzksMzg0ODEsMzg0ODIsMzg0ODMsMzg0ODYsMzg0ODcsMzg0ODgsMzg0ODks''@;'; put 'put ''Mzg0OTAsMzg0OTIsMzg0OTMsMzg0OTQsMzg0OTYsMzg0OTksMzg1MDEsMzg1MDIsMzg1MDcsMzg1MDksMzg1MTAsMzg1MTEsMzg1MTIsMzg1MTMsMzg1MTUsMzg1MjAsMzg1MjEsMzg1MjIsMzg1MjMsMzg1MjQsMzg1MjUsMzg1MjYsMzg1MjcsMzg1MjgsMzg1MjksMzg1MzAsMzg1MzEsMzg1''@;'; put 'put ''MzIsMzg1MzUsMzg1MzcsMzg1MzgsMzY3NDksMzY3NTAsMzY3NTEsMzY3NjAsMzY3NjIsMzY1NTgsMjUwOTksMjUxMTEsMjUxMTUsMjUxMTksMjUxMjIsMjUxMjEsMjUxMjUsMjUxMjQsMjUxMzIsMzMyNTUsMjk5MzUsMjk5NDAsMjk5NTEsMjk5NjcsMjk5NjksMjk5NzEsMjU5MDgsMjYwOTQs''@;'; put 'put ''MjYwOTUsMjYwOTYsMjYxMjIsMjYxMzcsMjY0ODIsMjYxMTUsMjYxMzMsMjYxMTIsMjg4MDUsMjYzNTksMjYxNDEsMjYxNjQsMjYxNjEsMjYxNjYsMjYxNjUsMzI3NzQsMjYyMDcsMjYxOTYsMjYxNzcsMjYxOTEsMjYxOTgsMjYyMDksMjYxOTksMjYyMzEsMjYyNDQsMjYyNTIsMjYyNzksMjYy''@;'; put 'put ''NjksMjYzMDIsMjYzMzEsMjYzMzIsMjYzNDIsMjYzNDUsMzYxNDYsMzYxNDcsMzYxNTAsMzYxNTUsMzYxNTcsMzYxNjAsMzYxNjUsMzYxNjYsMzYxNjgsMzYxNjksMzYxNjcsMzYxNzMsMzYxODEsMzYxODUsMzUyNzEsMzUyNzQsMzUyNzUsMzUyNzYsMzUyNzgsMzUyNzksMzUyODAsMzUyODEs''@;'; put 'put ''MjkyOTQsMjkzNDMsMjkyNzcsMjkyODYsMjkyOTUsMjkzMTAsMjkzMTEsMjkzMTYsMjkzMjMsMjkzMjUsMjkzMjcsMjkzMzAsMjUzNTIsMjUzOTQsMjU1MjAsMzg1NDAsMzg1NDIsMzg1NDUsMzg1NDYsMzg1NDcsMzg1NDksMzg1NTAsMzg1NTQsMzg1NTUsMzg1NTcsMzg1NTgsMzg1NTksMzg1''@;'; put 'put ''NjAsMzg1NjEsMzg1NjIsMzg1NjMsMzg1NjQsMzg1NjUsMzg1NjYsMzg1NjgsMzg1NjksMzg1NzAsMzg1NzEsMzg1NzIsMzg1NzMsMzg1NzQsMzg1NzUsMzg1NzcsMzg1NzgsMzg1ODAsMzg1ODEsMzg1ODMsMzg1ODQsMzg1ODYsMzg1ODcsMzg1OTEsMzg1OTQsMzg1OTUsMzg2MDAsMzg2MDIs''@;'; put 'put ''Mzg2MDMsMzg2MDgsMzg2MDksMzg2MTEsMzg2MTIsMzg2MTQsMzg2MTUsMzg2MTYsMzg2MTcsMzg2MTgsMzg2MTksMzg2MjAsMzg2MjEsMzg2MjIsMzg2MjMsMzg2MjUsMzg2MjYsMzg2MjcsMzg2MjgsMzg2MjksMzg2MzAsMzg2MzEsMzg2MzUsMzg2MzYsMzg2MzcsMzg2MzgsMzg2NDAsMzg2''@;'; put 'put ''NDEsMzg2NDIsMzg2NDQsMzg2NDUsMzg2NDgsMzg2NTAsMzg2NTEsMzg2NTIsMzg2NTMsMzg2NTUsMzg2NTgsMzg2NTksMzg2NjEsMzg2NjYsMzg2NjcsMzg2NjgsMzg2NzIsMzg2NzMsMzg2NzQsMzg2NzYsMzg2NzcsMzg2NzksMzg2ODAsMzg2ODEsMzg2ODIsMzg2ODMsMzg2ODUsMzg2ODcs''@;'; put 'put ''Mzg2ODgsMjU2NjMsMjU4MTYsMzI3NzIsMjc2MjYsMjc2MzUsMjc2NDUsMjc2MzcsMjc2NDEsMjc2NTMsMjc2NTUsMjc2NTQsMjc2NjEsMjc2NjksMjc2NzIsMjc2NzMsMjc2NzQsMjc2ODEsMjc2ODksMjc2ODQsMjc2OTAsMjc2OTgsMjU5MDksMjU5NDEsMjU5NjMsMjkyNjEsMjkyNjYsMjky''@;'; put 'put ''NzAsMjkyMzIsMzQ0MDIsMjEwMTQsMzI5MjcsMzI5MjQsMzI5MTUsMzI5NTYsMjYzNzgsMzI5NTcsMzI5NDUsMzI5MzksMzI5NDEsMzI5NDgsMzI5NTEsMzI5OTksMzNlMywzMzAwMSwzMzAwMiwzMjk4NywzMjk2MiwzMjk2NCwzMjk4NSwzMjk3MywzMjk4MywyNjM4NCwzMjk4OSwzMzAwMywz''@;'; put 'put ''MzAwOSwzMzAxMiwzMzAwNSwzMzAzNywzMzAzOCwzMzAxMCwzMzAyMCwyNjM4OSwzMzA0MiwzNTkzMCwzMzA3OCwzMzA1NCwzMzA2OCwzMzA0OCwzMzA3NCwzMzA5NiwzMzEwMCwzMzEwNywzMzE0MCwzMzExMywzMzExNCwzMzEzNywzMzEyMCwzMzEyOSwzMzE0OCwzMzE0OSwzMzEzMywzMzEy''@;'; put 'put ''NywyMjYwNSwyMzIyMSwzMzE2MCwzMzE1NCwzMzE2OSwyODM3MywzMzE4NywzMzE5NCwzMzIyOCwyNjQwNiwzMzIyNiwzMzIxMSwzODY4OSwzODY5MCwzODY5MSwzODY5MiwzODY5MywzODY5NCwzODY5NSwzODY5NiwzODY5NywzODY5OSwzODcwMCwzODcwMiwzODcwMywzODcwNSwzODcwNywz''@;'; put 'put ''ODcwOCwzODcwOSwzODcxMCwzODcxMSwzODcxNCwzODcxNSwzODcxNiwzODcxNywzODcxOSwzODcyMCwzODcyMSwzODcyMiwzODcyMywzODcyNCwzODcyNSwzODcyNiwzODcyNywzODcyOCwzODcyOSwzODczMCwzODczMSwzODczMiwzODczMywzODczNCwzODczNSwzODczNiwzODczNywzODc0''@;'; put 'put ''MCwzODc0MSwzODc0MywzODc0NCwzODc0NiwzODc0OCwzODc0OSwzODc1MSwzODc1NSwzODc1NiwzODc1OCwzODc1OSwzODc2MCwzODc2MiwzODc2MywzODc2NCwzODc2NSwzODc2NiwzODc2NywzODc2OCwzODc2OSwzODc3MCwzODc3MywzODc3NSwzODc3NiwzODc3NywzODc3OCwzODc3OSwz''@;'; put 'put ''ODc4MSwzODc4MiwzODc4MywzODc4NCwzODc4NSwzODc4NiwzODc4NywzODc4OCwzODc5MCwzODc5MSwzODc5MiwzODc5MywzODc5NCwzODc5NiwzODc5OCwzODc5OSwzODgwMCwzODgwMywzODgwNSwzODgwNiwzODgwNywzODgwOSwzODgxMCwzODgxMSwzODgxMiwzODgxMywzMzIxNywzMzE5''@;'; put 'put ''MCwyNzQyOCwyNzQ0NywyNzQ0OSwyNzQ1OSwyNzQ2MiwyNzQ4MSwzOTEyMSwzOTEyMiwzOTEyMywzOTEyNSwzOTEyOSwzOTEzMCwyNzU3MSwyNDM4NCwyNzU4NiwzNTMxNSwyNmUzLDQwNzg1LDI2MDAzLDI2MDQ0LDI2MDU0LDI2MDUyLDI2MDUxLDI2MDYwLDI2MDYyLDI2MDY2LDI2MDcwLDI4''@;'; put 'put ''ODAwLDI4ODI4LDI4ODIyLDI4ODI5LDI4ODU5LDI4ODY0LDI4ODU1LDI4ODQzLDI4ODQ5LDI4OTA0LDI4ODc0LDI4OTQ0LDI4OTQ3LDI4OTUwLDI4OTc1LDI4OTc3LDI5MDQzLDI5MDIwLDI5MDMyLDI4OTk3LDI5MDQyLDI5MDAyLDI5MDQ4LDI5MDUwLDI5MDgwLDI5MTA3LDI5MTA5LDI5MDk2''@;'; put 'put ''LDI5MDg4LDI5MTUyLDI5MTQwLDI5MTU5LDI5MTc3LDI5MjEzLDI5MjI0LDI4NzgwLDI4OTUyLDI5MDMwLDI5MTEzLDI1MTUwLDI1MTQ5LDI1MTU1LDI1MTYwLDI1MTYxLDMxMDM1LDMxMDQwLDMxMDQ2LDMxMDQ5LDMxMDY3LDMxMDY4LDMxMDU5LDMxMDY2LDMxMDc0LDMxMDYzLDMxMDcyLDMx''@;'; put 'put ''MDg3LDMxMDc5LDMxMDk4LDMxMTA5LDMxMTE0LDMxMTMwLDMxMTQzLDMxMTU1LDI0NTI5LDI0NTI4LDM4ODE0LDM4ODE1LDM4ODE3LDM4ODE4LDM4ODIwLDM4ODIxLDM4ODIyLDM4ODIzLDM4ODI0LDM4ODI1LDM4ODI2LDM4ODI4LDM4ODMwLDM4ODMyLDM4ODMzLDM4ODM1LDM4ODM3LDM4ODM4''@;'; put 'put ''LDM4ODM5LDM4ODQwLDM4ODQxLDM4ODQyLDM4ODQzLDM4ODQ0LDM4ODQ1LDM4ODQ2LDM4ODQ3LDM4ODQ4LDM4ODQ5LDM4ODUwLDM4ODUxLDM4ODUyLDM4ODUzLDM4ODU0LDM4ODU1LDM4ODU2LDM4ODU3LDM4ODU4LDM4ODU5LDM4ODYwLDM4ODYxLDM4ODYyLDM4ODYzLDM4ODY0LDM4ODY1LDM4''@;'; put 'put ''ODY2LDM4ODY3LDM4ODY4LDM4ODY5LDM4ODcwLDM4ODcxLDM4ODcyLDM4ODczLDM4ODc0LDM4ODc1LDM4ODc2LDM4ODc3LDM4ODc4LDM4ODc5LDM4ODgwLDM4ODgxLDM4ODgyLDM4ODgzLDM4ODg0LDM4ODg1LDM4ODg4LDM4ODk0LDM4ODk1LDM4ODk2LDM4ODk3LDM4ODk4LDM4OTAwLDM4OTAz''@;'; put 'put ''LDM4OTA0LDM4OTA1LDM4OTA2LDM4OTA3LDM4OTA4LDM4OTA5LDM4OTEwLDM4OTExLDM4OTEyLDM4OTEzLDM4OTE0LDM4OTE1LDM4OTE2LDM4OTE3LDM4OTE4LDM4OTE5LDM4OTIwLDM4OTIxLDM4OTIyLDM4OTIzLDM4OTI0LDM4OTI1LDM4OTI2LDI0NjM2LDI0NjY5LDI0NjY2LDI0Njc5LDI0''@;'; put 'put ''NjQxLDI0NjY1LDI0Njc1LDI0NzQ3LDI0ODM4LDI0ODQ1LDI0OTI1LDI1MDAxLDI0OTg5LDI1MDM1LDI1MDQxLDI1MDk0LDMyODk2LDMyODk1LDI3Nzk1LDI3ODk0LDI4MTU2LDMwNzEwLDMwNzEyLDMwNzIwLDMwNzI5LDMwNzQzLDMwNzQ0LDMwNzM3LDI2MDI3LDMwNzY1LDMwNzQ4LDMwNzQ5''@;'; put 'put ''LDMwNzc3LDMwNzc4LDMwNzc5LDMwNzUxLDMwNzgwLDMwNzU3LDMwNzY0LDMwNzU1LDMwNzYxLDMwNzk4LDMwODI5LDMwODA2LDMwODA3LDMwNzU4LDMwODAwLDMwNzkxLDMwNzk2LDMwODI2LDMwODc1LDMwODY3LDMwODc0LDMwODU1LDMwODc2LDMwODgxLDMwODgzLDMwODk4LDMwOTA1LDMw''@;'; put 'put ''ODg1LDMwOTMyLDMwOTM3LDMwOTIxLDMwOTU2LDMwOTYyLDMwOTgxLDMwOTY0LDMwOTk1LDMxMDEyLDMxMDA2LDMxMDI4LDQwODU5LDQwNjk3LDQwNjk5LDQwNzAwLDMwNDQ5LDMwNDY4LDMwNDc3LDMwNDU3LDMwNDcxLDMwNDcyLDMwNDkwLDMwNDk4LDMwNDg5LDMwNTA5LDMwNTAyLDMwNTE3''@;'; put 'put ''LDMwNTIwLDMwNTQ0LDMwNTQ1LDMwNTM1LDMwNTMxLDMwNTU0LDMwNTY4LDM4OTI3LDM4OTI4LDM4OTI5LDM4OTMwLDM4OTMxLDM4OTMyLDM4OTMzLDM4OTM0LDM4OTM1LDM4OTM2LDM4OTM3LDM4OTM4LDM4OTM5LDM4OTQwLDM4OTQxLDM4OTQyLDM4OTQzLDM4OTQ0LDM4OTQ1LDM4OTQ2LDM4''@;'; put 'put ''OTQ3LDM4OTQ4LDM4OTQ5LDM4OTUwLDM4OTUxLDM4OTUyLDM4OTUzLDM4OTU0LDM4OTU1LDM4OTU2LDM4OTU3LDM4OTU4LDM4OTU5LDM4OTYwLDM4OTYxLDM4OTYyLDM4OTYzLDM4OTY0LDM4OTY1LDM4OTY2LDM4OTY3LDM4OTY4LDM4OTY5LDM4OTcwLDM4OTcxLDM4OTcyLDM4OTczLDM4OTc0''@;'; put 'put ''LDM4OTc1LDM4OTc2LDM4OTc3LDM4OTc4LDM4OTc5LDM4OTgwLDM4OTgxLDM4OTgyLDM4OTgzLDM4OTg0LDM4OTg1LDM4OTg2LDM4OTg3LDM4OTg4LDM4OTg5LDM4OTkwLDM4OTkxLDM4OTkyLDM4OTkzLDM4OTk0LDM4OTk1LDM4OTk2LDM4OTk3LDM4OTk4LDM4OTk5LDM5ZTMsMzkwMDEsMzkw''@;'; put 'put ''MDIsMzkwMDMsMzkwMDQsMzkwMDUsMzkwMDYsMzkwMDcsMzkwMDgsMzkwMDksMzkwMTAsMzkwMTEsMzkwMTIsMzkwMTMsMzkwMTQsMzkwMTUsMzkwMTYsMzkwMTcsMzkwMTgsMzkwMTksMzkwMjAsMzkwMjEsMzkwMjIsMzA1NjIsMzA1NjUsMzA1OTEsMzA2MDUsMzA1ODksMzA1OTIsMzA2MDQs''@;'; put 'put ''MzA2MDksMzA2MjMsMzA2MjQsMzA2NDAsMzA2NDUsMzA2NTMsMzAwMTAsMzAwMTYsMzAwMzAsMzAwMjcsMzAwMjQsMzAwNDMsMzAwNjYsMzAwNzMsMzAwODMsMzI2MDAsMzI2MDksMzI2MDcsMzU0MDAsMzI2MTYsMzI2MjgsMzI2MjUsMzI2MzMsMzI2NDEsMzI2MzgsMzA0MTMsMzA0MzcsMzQ4''@;'; put 'put ''NjYsMzgwMjEsMzgwMjIsMzgwMjMsMzgwMjcsMzgwMjYsMzgwMjgsMzgwMjksMzgwMzEsMzgwMzIsMzgwMzYsMzgwMzksMzgwMzcsMzgwNDIsMzgwNDMsMzgwNDQsMzgwNTEsMzgwNTIsMzgwNTksMzgwNTgsMzgwNjEsMzgwNjAsMzgwNjMsMzgwNjQsMzgwNjYsMzgwNjgsMzgwNzAsMzgwNzEs''@;'; put 'put ''MzgwNzIsMzgwNzMsMzgwNzQsMzgwNzYsMzgwNzcsMzgwNzksMzgwODQsMzgwODgsMzgwODksMzgwOTAsMzgwOTEsMzgwOTIsMzgwOTMsMzgwOTQsMzgwOTYsMzgwOTcsMzgwOTgsMzgxMDEsMzgxMDIsMzgxMDMsMzgxMDUsMzgxMDQsMzgxMDcsMzgxMTAsMzgxMTEsMzgxMTIsMzgxMTQsMzgx''@;'; put 'put ''MTYsMzgxMTcsMzgxMTksMzgxMjAsMzgxMjIsMzkwMjMsMzkwMjQsMzkwMjUsMzkwMjYsMzkwMjcsMzkwMjgsMzkwNTEsMzkwNTQsMzkwNTgsMzkwNjEsMzkwNjUsMzkwNzUsMzkwODAsMzkwODEsMzkwODIsMzkwODMsMzkwODQsMzkwODUsMzkwODYsMzkwODcsMzkwODgsMzkwODksMzkwOTAs''@;'; put 'put ''MzkwOTEsMzkwOTIsMzkwOTMsMzkwOTQsMzkwOTUsMzkwOTYsMzkwOTcsMzkwOTgsMzkwOTksMzkxMDAsMzkxMDEsMzkxMDIsMzkxMDMsMzkxMDQsMzkxMDUsMzkxMDYsMzkxMDcsMzkxMDgsMzkxMDksMzkxMTAsMzkxMTEsMzkxMTIsMzkxMTMsMzkxMTQsMzkxMTUsMzkxMTYsMzkxMTcsMzkx''@;'; put 'put ''MTksMzkxMjAsMzkxMjQsMzkxMjYsMzkxMjcsMzkxMzEsMzkxMzIsMzkxMzMsMzkxMzYsMzkxMzcsMzkxMzgsMzkxMzksMzkxNDAsMzkxNDEsMzkxNDIsMzkxNDUsMzkxNDYsMzkxNDcsMzkxNDgsMzkxNDksMzkxNTAsMzkxNTEsMzkxNTIsMzkxNTMsMzkxNTQsMzkxNTUsMzkxNTYsMzkxNTcs''@;'; put 'put ''MzkxNTgsMzkxNTksMzkxNjAsMzkxNjEsMzkxNjIsMzkxNjMsMzkxNjQsMzkxNjUsMzkxNjYsMzkxNjcsMzkxNjgsMzkxNjksMzkxNzAsMzkxNzEsMzkxNzIsMzkxNzMsMzkxNzQsMzkxNzUsMzgxMjEsMzgxMjMsMzgxMjYsMzgxMjcsMzgxMzEsMzgxMzIsMzgxMzMsMzgxMzUsMzgxMzcsMzgx''@;'; put 'put ''NDAsMzgxNDEsMzgxNDMsMzgxNDcsMzgxNDYsMzgxNTAsMzgxNTEsMzgxNTMsMzgxNTQsMzgxNTcsMzgxNTgsMzgxNTksMzgxNjIsMzgxNjMsMzgxNjQsMzgxNjUsMzgxNjYsMzgxNjgsMzgxNzEsMzgxNzMsMzgxNzQsMzgxNzUsMzgxNzgsMzgxODYsMzgxODcsMzgxODUsMzgxODgsMzgxOTMs''@;'; put 'put ''MzgxOTQsMzgxOTYsMzgxOTgsMzgxOTksMzgyMDAsMzgyMDQsMzgyMDYsMzgyMDcsMzgyMTAsMzgxOTcsMzgyMTIsMzgyMTMsMzgyMTQsMzgyMTcsMzgyMjAsMzgyMjIsMzgyMjMsMzgyMjYsMzgyMjcsMzgyMjgsMzgyMzAsMzgyMzEsMzgyMzIsMzgyMzMsMzgyMzUsMzgyMzgsMzgyMzksMzgy''@;'; put 'put ''MzcsMzgyNDEsMzgyNDIsMzgyNDQsMzgyNDUsMzgyNDYsMzgyNDcsMzgyNDgsMzgyNDksMzgyNTAsMzgyNTEsMzgyNTIsMzgyNTUsMzgyNTcsMzgyNTgsMzgyNTksMzgyMDIsMzA2OTUsMzA3MDAsMzg2MDEsMzExODksMzEyMTMsMzEyMDMsMzEyMTEsMzEyMzgsMjM4NzksMzEyMzUsMzEyMzQs''@;'; put 'put ''MzEyNjIsMzEyNTIsMzkxNzYsMzkxNzcsMzkxNzgsMzkxNzksMzkxODAsMzkxODIsMzkxODMsMzkxODUsMzkxODYsMzkxODcsMzkxODgsMzkxODksMzkxOTAsMzkxOTEsMzkxOTIsMzkxOTMsMzkxOTQsMzkxOTUsMzkxOTYsMzkxOTcsMzkxOTgsMzkxOTksMzkyMDAsMzkyMDEsMzkyMDIsMzky''@;'; put 'put ''MDMsMzkyMDQsMzkyMDUsMzkyMDYsMzkyMDcsMzkyMDgsMzkyMDksMzkyMTAsMzkyMTEsMzkyMTIsMzkyMTMsMzkyMTUsMzkyMTYsMzkyMTcsMzkyMTgsMzkyMTksMzkyMjAsMzkyMjEsMzkyMjIsMzkyMjMsMzkyMjQsMzkyMjUsMzkyMjYsMzkyMjcsMzkyMjgsMzkyMjksMzkyMzAsMzkyMzEs''@;'; put 'put ''MzkyMzIsMzkyMzMsMzkyMzQsMzkyMzUsMzkyMzYsMzkyMzcsMzkyMzgsMzkyMzksMzkyNDAsMzkyNDEsMzkyNDIsMzkyNDMsMzkyNDQsMzkyNDUsMzkyNDYsMzkyNDcsMzkyNDgsMzkyNDksMzkyNTAsMzkyNTEsMzkyNTQsMzkyNTUsMzkyNTYsMzkyNTcsMzkyNTgsMzkyNTksMzkyNjAsMzky''@;'; put 'put ''NjEsMzkyNjIsMzkyNjMsMzkyNjQsMzkyNjUsMzkyNjYsMzkyNjgsMzkyNzAsMzkyODMsMzkyODgsMzkyODksMzkyOTEsMzkyOTQsMzkyOTgsMzkyOTksMzkzMDUsMzEyODksMzEyODcsMzEzMTMsNDA2NTUsMzkzMzMsMzEzNDQsMzAzNDQsMzAzNTAsMzAzNTUsMzAzNjEsMzAzNzIsMjk5MTgs''@;'; put 'put ''Mjk5MjAsMjk5OTYsNDA0ODAsNDA0ODIsNDA0ODgsNDA0ODksNDA0OTAsNDA0OTEsNDA0OTIsNDA0OTgsNDA0OTcsNDA1MDIsNDA1MDQsNDA1MDMsNDA1MDUsNDA1MDYsNDA1MTAsNDA1MTMsNDA1MTQsNDA1MTYsNDA1MTgsNDA1MTksNDA1MjAsNDA1MjEsNDA1MjMsNDA1MjQsNDA1MjYsNDA1''@;'; put 'put ''MjksNDA1MzMsNDA1MzUsNDA1MzgsNDA1MzksNDA1NDAsNDA1NDIsNDA1NDcsNDA1NTAsNDA1NTEsNDA1NTIsNDA1NTMsNDA1NTQsNDA1NTUsNDA1NTYsNDA1NjEsNDA1NTcsNDA1NjMsMzAwOTgsMzAxMDAsMzAxMDIsMzAxMTIsMzAxMDksMzAxMjQsMzAxMTUsMzAxMzEsMzAxMzIsMzAxMzYs''@;'; put 'put ''MzAxNDgsMzAxMjksMzAxMjgsMzAxNDcsMzAxNDYsMzAxNjYsMzAxNTcsMzAxNzksMzAxODQsMzAxODIsMzAxODAsMzAxODcsMzAxODMsMzAyMTEsMzAxOTMsMzAyMDQsMzAyMDcsMzAyMjQsMzAyMDgsMzAyMTMsMzAyMjAsMzAyMzEsMzAyMTgsMzAyNDUsMzAyMzIsMzAyMjksMzAyMzMsMzkz''@;'; put 'put ''MDgsMzkzMTAsMzkzMjIsMzkzMjMsMzkzMjQsMzkzMjUsMzkzMjYsMzkzMjcsMzkzMjgsMzkzMjksMzkzMzAsMzkzMzEsMzkzMzIsMzkzMzQsMzkzMzUsMzkzMzcsMzkzMzgsMzkzMzksMzkzNDAsMzkzNDEsMzkzNDIsMzkzNDMsMzkzNDQsMzkzNDUsMzkzNDYsMzkzNDcsMzkzNDgsMzkzNDks''@;'; put 'put ''MzkzNTAsMzkzNTEsMzkzNTIsMzkzNTMsMzkzNTQsMzkzNTUsMzkzNTYsMzkzNTcsMzkzNTgsMzkzNTksMzkzNjAsMzkzNjEsMzkzNjIsMzkzNjMsMzkzNjQsMzkzNjUsMzkzNjYsMzkzNjcsMzkzNjgsMzkzNjksMzkzNzAsMzkzNzEsMzkzNzIsMzkzNzMsMzkzNzQsMzkzNzUsMzkzNzYsMzkz''@;'; put 'put ''NzcsMzkzNzgsMzkzNzksMzkzODAsMzkzODEsMzkzODIsMzkzODMsMzkzODQsMzkzODUsMzkzODYsMzkzODcsMzkzODgsMzkzODksMzkzOTAsMzkzOTEsMzkzOTIsMzkzOTMsMzkzOTQsMzkzOTUsMzkzOTYsMzkzOTcsMzkzOTgsMzkzOTksMzk0MDAsMzk0MDEsMzk0MDIsMzk0MDMsMzk0MDQs''@;'; put 'put ''Mzk0MDUsMzk0MDYsMzk0MDcsMzk0MDgsMzk0MDksMzk0MTAsMzk0MTEsMzk0MTIsMzk0MTMsMzk0MTQsMzk0MTUsMzk0MTYsMzk0MTcsMzAyMzUsMzAyNjgsMzAyNDIsMzAyNDAsMzAyNzIsMzAyNTMsMzAyNTYsMzAyNzEsMzAyNjEsMzAyNzUsMzAyNzAsMzAyNTksMzAyODUsMzAzMDIsMzAy''@;'; put 'put ''OTIsMzAzMDAsMzAyOTQsMzAzMTUsMzAzMTksMzI3MTQsMzE0NjIsMzEzNTIsMzEzNTMsMzEzNjAsMzEzNjYsMzEzNjgsMzEzODEsMzEzOTgsMzEzOTIsMzE0MDQsMzE0MDAsMzE0MDUsMzE0MTEsMzQ5MTYsMzQ5MjEsMzQ5MzAsMzQ5NDEsMzQ5NDMsMzQ5NDYsMzQ5NzgsMzUwMTQsMzQ5OTks''@;'; put 'put ''MzUwMDQsMzUwMTcsMzUwNDIsMzUwMjIsMzUwNDMsMzUwNDUsMzUwNTcsMzUwOTgsMzUwNjgsMzUwNDgsMzUwNzAsMzUwNTYsMzUxMDUsMzUwOTcsMzUwOTEsMzUwOTksMzUwODIsMzUxMjQsMzUxMTUsMzUxMjYsMzUxMzcsMzUxNzQsMzUxOTUsMzAwOTEsMzI5OTcsMzAzODYsMzAzODgsMzA2''@;'; put 'put ''ODQsMzI3ODYsMzI3ODgsMzI3OTAsMzI3OTYsMzI4MDAsMzI4MDIsMzI4MDUsMzI4MDYsMzI4MDcsMzI4MDksMzI4MDgsMzI4MTcsMzI3NzksMzI4MjEsMzI4MzUsMzI4MzgsMzI4NDUsMzI4NTAsMzI4NzMsMzI4ODEsMzUyMDMsMzkwMzIsMzkwNDAsMzkwNDMsMzk0MTgsMzk0MTksMzk0MjAs''@;'; put 'put ''Mzk0MjEsMzk0MjIsMzk0MjMsMzk0MjQsMzk0MjUsMzk0MjYsMzk0MjcsMzk0MjgsMzk0MjksMzk0MzAsMzk0MzEsMzk0MzIsMzk0MzMsMzk0MzQsMzk0MzUsMzk0MzYsMzk0MzcsMzk0MzgsMzk0MzksMzk0NDAsMzk0NDEsMzk0NDIsMzk0NDMsMzk0NDQsMzk0NDUsMzk0NDYsMzk0NDcsMzk0''@;'; put 'put ''NDgsMzk0NDksMzk0NTAsMzk0NTEsMzk0NTIsMzk0NTMsMzk0NTQsMzk0NTUsMzk0NTYsMzk0NTcsMzk0NTgsMzk0NTksMzk0NjAsMzk0NjEsMzk0NjIsMzk0NjMsMzk0NjQsMzk0NjUsMzk0NjYsMzk0NjcsMzk0NjgsMzk0NjksMzk0NzAsMzk0NzEsMzk0NzIsMzk0NzMsMzk0NzQsMzk0NzUs''@;'; put 'put ''Mzk0NzYsMzk0NzcsMzk0NzgsMzk0NzksMzk0ODAsMzk0ODEsMzk0ODIsMzk0ODMsMzk0ODQsMzk0ODUsMzk0ODYsMzk0ODcsMzk0ODgsMzk0ODksMzk0OTAsMzk0OTEsMzk0OTIsMzk0OTMsMzk0OTQsMzk0OTUsMzk0OTYsMzk0OTcsMzk0OTgsMzk0OTksMzk1MDAsMzk1MDEsMzk1MDIsMzk1''@;'; put 'put ''MDMsMzk1MDQsMzk1MDUsMzk1MDYsMzk1MDcsMzk1MDgsMzk1MDksMzk1MTAsMzk1MTEsMzk1MTIsMzk1MTMsMzkwNDksMzkwNTIsMzkwNTMsMzkwNTUsMzkwNjAsMzkwNjYsMzkwNjcsMzkwNzAsMzkwNzEsMzkwNzMsMzkwNzQsMzkwNzcsMzkwNzgsMzQzODEsMzQzODgsMzQ0MTIsMzQ0MTQs''@;'; put 'put ''MzQ0MzEsMzQ0MjYsMzQ0MjgsMzQ0MjcsMzQ0NzIsMzQ0NDUsMzQ0NDMsMzQ0NzYsMzQ0NjEsMzQ0NzEsMzQ0NjcsMzQ0NzQsMzQ0NTEsMzQ0NzMsMzQ0ODYsMzQ1MDAsMzQ0ODUsMzQ1MTAsMzQ0ODAsMzQ0OTAsMzQ0ODEsMzQ0NzksMzQ1MDUsMzQ1MTEsMzQ0ODQsMzQ1MzcsMzQ1NDUsMzQ1''@;'; put 'put ''NDYsMzQ1NDEsMzQ1NDcsMzQ1MTIsMzQ1NzksMzQ1MjYsMzQ1NDgsMzQ1MjcsMzQ1MjAsMzQ1MTMsMzQ1NjMsMzQ1NjcsMzQ1NTIsMzQ1NjgsMzQ1NzAsMzQ1NzMsMzQ1NjksMzQ1OTUsMzQ2MTksMzQ1OTAsMzQ1OTcsMzQ2MDYsMzQ1ODYsMzQ2MjIsMzQ2MzIsMzQ2MTIsMzQ2MDksMzQ2MDEs''@;'; put 'put ''MzQ2MTUsMzQ2MjMsMzQ2OTAsMzQ1OTQsMzQ2ODUsMzQ2ODYsMzQ2ODMsMzQ2NTYsMzQ2NzIsMzQ2MzYsMzQ2NzAsMzQ2OTksMzQ2NDMsMzQ2NTksMzQ2ODQsMzQ2NjAsMzQ2NDksMzQ2NjEsMzQ3MDcsMzQ3MzUsMzQ3MjgsMzQ3NzAsMzk1MTQsMzk1MTUsMzk1MTYsMzk1MTcsMzk1MTgsMzk1''@;'; put 'put ''MTksMzk1MjAsMzk1MjEsMzk1MjIsMzk1MjMsMzk1MjQsMzk1MjUsMzk1MjYsMzk1MjcsMzk1MjgsMzk1MjksMzk1MzAsMzk1MzEsMzk1MzgsMzk1NTUsMzk1NjEsMzk1NjUsMzk1NjYsMzk1NzIsMzk1NzMsMzk1NzcsMzk1OTAsMzk1OTMsMzk1OTQsMzk1OTUsMzk1OTYsMzk1OTcsMzk1OTgs''@;'; put 'put ''Mzk1OTksMzk2MDIsMzk2MDMsMzk2MDQsMzk2MDUsMzk2MDksMzk2MTEsMzk2MTMsMzk2MTQsMzk2MTUsMzk2MTksMzk2MjAsMzk2MjIsMzk2MjMsMzk2MjQsMzk2MjUsMzk2MjYsMzk2MjksMzk2MzAsMzk2MzEsMzk2MzIsMzk2MzQsMzk2MzYsMzk2MzcsMzk2MzgsMzk2MzksMzk2NDEsMzk2''@;'; put 'put ''NDIsMzk2NDMsMzk2NDQsMzk2NDUsMzk2NDYsMzk2NDgsMzk2NTAsMzk2NTEsMzk2NTIsMzk2NTMsMzk2NTUsMzk2NTYsMzk2NTcsMzk2NTgsMzk2NjAsMzk2NjIsMzk2NjQsMzk2NjUsMzk2NjYsMzk2NjcsMzk2NjgsMzk2NjksMzk2NzAsMzk2NzEsMzk2NzIsMzk2NzQsMzk2NzYsMzk2Nzcs''@;'; put 'put ''Mzk2NzgsMzk2NzksMzk2ODAsMzk2ODEsMzk2ODIsMzk2ODQsMzk2ODUsMzk2ODYsMzQ3NTgsMzQ2OTYsMzQ2OTMsMzQ3MzMsMzQ3MTEsMzQ2OTEsMzQ3MzEsMzQ3ODksMzQ3MzIsMzQ3NDEsMzQ3MzksMzQ3NjMsMzQ3NzEsMzQ3NDksMzQ3NjksMzQ3NTIsMzQ3NjIsMzQ3NzksMzQ3OTQsMzQ3''@;'; put 'put ''ODQsMzQ3OTgsMzQ4MzgsMzQ4MzUsMzQ4MTQsMzQ4MjYsMzQ4NDMsMzQ4NDksMzQ4NzMsMzQ4NzYsMzI1NjYsMzI1NzgsMzI1ODAsMzI1ODEsMzMyOTYsMzE0ODIsMzE0ODUsMzE0OTYsMzE0OTEsMzE0OTIsMzE1MDksMzE0OTgsMzE1MzEsMzE1MDMsMzE1NTksMzE1NDQsMzE1MzAsMzE1MTMs''@;'; put 'put ''MzE1MzQsMzE1MzcsMzE1MjAsMzE1MjUsMzE1MjQsMzE1MzksMzE1NTAsMzE1MTgsMzE1NzYsMzE1NzgsMzE1NTcsMzE2MDUsMzE1NjQsMzE1ODEsMzE1ODQsMzE1OTgsMzE2MTEsMzE1ODYsMzE2MDIsMzE2MDEsMzE2MzIsMzE2NTQsMzE2NTUsMzE2NzIsMzE2NjAsMzE2NDUsMzE2NTYsMzE2''@;'; put 'put ''MjEsMzE2NTgsMzE2NDQsMzE2NTAsMzE2NTksMzE2NjgsMzE2OTcsMzE2ODEsMzE2OTIsMzE3MDksMzE3MDYsMzE3MTcsMzE3MTgsMzE3MjIsMzE3NTYsMzE3NDIsMzE3NDAsMzE3NTksMzE3NjYsMzE3NTUsMzk2ODcsMzk2ODksMzk2OTAsMzk2OTEsMzk2OTIsMzk2OTMsMzk2OTQsMzk2OTYs''@;'; put 'put ''Mzk2OTcsMzk2OTgsMzk3MDAsMzk3MDEsMzk3MDIsMzk3MDMsMzk3MDQsMzk3MDUsMzk3MDYsMzk3MDcsMzk3MDgsMzk3MDksMzk3MTAsMzk3MTIsMzk3MTMsMzk3MTQsMzk3MTYsMzk3MTcsMzk3MTgsMzk3MTksMzk3MjAsMzk3MjEsMzk3MjIsMzk3MjMsMzk3MjQsMzk3MjUsMzk3MjYsMzk3''@;'; put 'put ''MjgsMzk3MjksMzk3MzEsMzk3MzIsMzk3MzMsMzk3MzQsMzk3MzUsMzk3MzYsMzk3MzcsMzk3MzgsMzk3NDEsMzk3NDIsMzk3NDMsMzk3NDQsMzk3NTAsMzk3NTQsMzk3NTUsMzk3NTYsMzk3NTgsMzk3NjAsMzk3NjIsMzk3NjMsMzk3NjUsMzk3NjYsMzk3NjcsMzk3NjgsMzk3NjksMzk3NzAs''@;'; put 'put ''Mzk3NzEsMzk3NzIsMzk3NzMsMzk3NzQsMzk3NzUsMzk3NzYsMzk3NzcsMzk3NzgsMzk3NzksMzk3ODAsMzk3ODEsMzk3ODIsMzk3ODMsMzk3ODQsMzk3ODUsMzk3ODYsMzk3ODcsMzk3ODgsMzk3ODksMzk3OTAsMzk3OTEsMzk3OTIsMzk3OTMsMzk3OTQsMzk3OTUsMzk3OTYsMzk3OTcsMzk3''@;'; put 'put ''OTgsMzk3OTksMzk4MDAsMzk4MDEsMzk4MDIsMzk4MDMsMzE3NzUsMzE3ODYsMzE3ODIsMzE4MDAsMzE4MDksMzE4MDgsMzMyNzgsMzMyODEsMzMyODIsMzMyODQsMzMyNjAsMzQ4ODQsMzMzMTMsMzMzMTQsMzMzMTUsMzMzMjUsMzMzMjcsMzMzMjAsMzMzMjMsMzMzMzYsMzMzMzksMzMzMzEs''@;'; put 'put ''MzMzMzIsMzMzNDIsMzMzNDgsMzMzNTMsMzMzNTUsMzMzNTksMzMzNzAsMzMzNzUsMzMzODQsMzQ5NDIsMzQ5NDksMzQ5NTIsMzUwMzIsMzUwMzksMzUxNjYsMzI2NjksMzI2NzEsMzI2NzksMzI2ODcsMzI2ODgsMzI2OTAsMzE4NjgsMjU5MjksMzE4ODksMzE5MDEsMzE5MDAsMzE5MDIsMzE5''@;'; put 'put ''MDYsMzE5MjIsMzE5MzIsMzE5MzMsMzE5MzcsMzE5NDMsMzE5NDgsMzE5NDksMzE5NDQsMzE5NDEsMzE5NTksMzE5NzYsMzMzOTAsMjYyODAsMzI3MDMsMzI3MTgsMzI3MjUsMzI3NDEsMzI3MzcsMzI3NDIsMzI3NDUsMzI3NTAsMzI3NTUsMzE5OTIsMzIxMTksMzIxNjYsMzIxNzQsMzIzMjcs''@;'; put 'put ''MzI0MTEsNDA2MzIsNDA2MjgsMzYyMTEsMzYyMjgsMzYyNDQsMzYyNDEsMzYyNzMsMzYxOTksMzYyMDUsMzU5MTEsMzU5MTMsMzcxOTQsMzcyMDAsMzcxOTgsMzcxOTksMzcyMjAsMzk4MDQsMzk4MDUsMzk4MDYsMzk4MDcsMzk4MDgsMzk4MDksMzk4MTAsMzk4MTEsMzk4MTIsMzk4MTMsMzk4''@;'; put 'put ''MTQsMzk4MTUsMzk4MTYsMzk4MTcsMzk4MTgsMzk4MTksMzk4MjAsMzk4MjEsMzk4MjIsMzk4MjMsMzk4MjQsMzk4MjUsMzk4MjYsMzk4MjcsMzk4MjgsMzk4MjksMzk4MzAsMzk4MzEsMzk4MzIsMzk4MzMsMzk4MzQsMzk4MzUsMzk4MzYsMzk4MzcsMzk4MzgsMzk4MzksMzk4NDAsMzk4NDEs''@;'; put 'put ''Mzk4NDIsMzk4NDMsMzk4NDQsMzk4NDUsMzk4NDYsMzk4NDcsMzk4NDgsMzk4NDksMzk4NTAsMzk4NTEsMzk4NTIsMzk4NTMsMzk4NTQsMzk4NTUsMzk4NTYsMzk4NTcsMzk4NTgsMzk4NTksMzk4NjAsMzk4NjEsMzk4NjIsMzk4NjMsMzk4NjQsMzk4NjUsMzk4NjYsMzk4NjcsMzk4NjgsMzk4''@;'; put 'put ''NjksMzk4NzAsMzk4NzEsMzk4NzIsMzk4NzMsMzk4NzQsMzk4NzUsMzk4NzYsMzk4NzcsMzk4NzgsMzk4NzksMzk4ODAsMzk4ODEsMzk4ODIsMzk4ODMsMzk4ODQsMzk4ODUsMzk4ODYsMzk4ODcsMzk4ODgsMzk4ODksMzk4OTAsMzk4OTEsMzk4OTIsMzk4OTMsMzk4OTQsMzk4OTUsMzk4OTYs''@;'; put 'put ''Mzk4OTcsMzk4OTgsMzk4OTksMzcyMTgsMzcyMTcsMzcyMzIsMzcyMjUsMzcyMzEsMzcyNDUsMzcyNDYsMzcyMzQsMzcyMzYsMzcyNDEsMzcyNjAsMzcyNTMsMzcyNjQsMzcyNjEsMzcyNjUsMzcyODIsMzcyODMsMzcyOTAsMzcyOTMsMzcyOTQsMzcyOTUsMzczMDEsMzczMDAsMzczMDYsMzU5''@;'; put 'put ''MjUsNDA1NzQsMzYyODAsMzYzMzEsMzYzNTcsMzY0NDEsMzY0NTcsMzYyNzcsMzYyODcsMzYyODQsMzYyODIsMzYyOTIsMzYzMTAsMzYzMTEsMzYzMTQsMzYzMTgsMzYzMDIsMzYzMDMsMzYzMTUsMzYyOTQsMzYzMzIsMzYzNDMsMzYzNDQsMzYzMjMsMzYzNDUsMzYzNDcsMzYzMjQsMzYzNjEs''@;'; put 'put ''MzYzNDksMzYzNzIsMzYzODEsMzYzODMsMzYzOTYsMzYzOTgsMzYzODcsMzYzOTksMzY0MTAsMzY0MTYsMzY0MDksMzY0MDUsMzY0MTMsMzY0MDEsMzY0MjUsMzY0MTcsMzY0MTgsMzY0MzMsMzY0MzQsMzY0MjYsMzY0NjQsMzY0NzAsMzY0NzYsMzY0NjMsMzY0NjgsMzY0ODUsMzY0OTUsMzY1''@;'; put 'put ''MDAsMzY0OTYsMzY1MDgsMzY1MTAsMzU5NjAsMzU5NzAsMzU5NzgsMzU5NzMsMzU5OTIsMzU5ODgsMjYwMTEsMzUyODYsMzUyOTQsMzUyOTAsMzUyOTIsMzk5MDAsMzk5MDEsMzk5MDIsMzk5MDMsMzk5MDQsMzk5MDUsMzk5MDYsMzk5MDcsMzk5MDgsMzk5MDksMzk5MTAsMzk5MTEsMzk5MTIs''@;'; put 'put ''Mzk5MTMsMzk5MTQsMzk5MTUsMzk5MTYsMzk5MTcsMzk5MTgsMzk5MTksMzk5MjAsMzk5MjEsMzk5MjIsMzk5MjMsMzk5MjQsMzk5MjUsMzk5MjYsMzk5MjcsMzk5MjgsMzk5MjksMzk5MzAsMzk5MzEsMzk5MzIsMzk5MzMsMzk5MzQsMzk5MzUsMzk5MzYsMzk5MzcsMzk5MzgsMzk5MzksMzk5''@;'; put 'put ''NDAsMzk5NDEsMzk5NDIsMzk5NDMsMzk5NDQsMzk5NDUsMzk5NDYsMzk5NDcsMzk5NDgsMzk5NDksMzk5NTAsMzk5NTEsMzk5NTIsMzk5NTMsMzk5NTQsMzk5NTUsMzk5NTYsMzk5NTcsMzk5NTgsMzk5NTksMzk5NjAsMzk5NjEsMzk5NjIsMzk5NjMsMzk5NjQsMzk5NjUsMzk5NjYsMzk5Njcs''@;'; put 'put ''Mzk5NjgsMzk5NjksMzk5NzAsMzk5NzEsMzk5NzIsMzk5NzMsMzk5NzQsMzk5NzUsMzk5NzYsMzk5NzcsMzk5NzgsMzk5NzksMzk5ODAsMzk5ODEsMzk5ODIsMzk5ODMsMzk5ODQsMzk5ODUsMzk5ODYsMzk5ODcsMzk5ODgsMzk5ODksMzk5OTAsMzk5OTEsMzk5OTIsMzk5OTMsMzk5OTQsMzk5''@;'; put 'put ''OTUsMzUzMDEsMzUzMDcsMzUzMTEsMzUzOTAsMzU2MjIsMzg3MzksMzg2MzMsMzg2NDMsMzg2MzksMzg2NjIsMzg2NTcsMzg2NjQsMzg2NzEsMzg2NzAsMzg2OTgsMzg3MDEsMzg3MDQsMzg3MTgsNDA4MzIsNDA4MzUsNDA4MzcsNDA4MzgsNDA4MzksNDA4NDAsNDA4NDEsNDA4NDIsNDA4NDQs''@;'; put 'put ''NDA3MDIsNDA3MTUsNDA3MTcsMzg1ODUsMzg1ODgsMzg1ODksMzg2MDYsMzg2MTAsMzA2NTUsMzg2MjQsMzc1MTgsMzc1NTAsMzc1NzYsMzc2OTQsMzc3MzgsMzc4MzQsMzc3NzUsMzc5NTAsMzc5OTUsNDAwNjMsNDAwNjYsNDAwNjksNDAwNzAsNDAwNzEsNDAwNzIsMzEyNjcsNDAwNzUsNDAw''@;'; put 'put ''NzgsNDAwODAsNDAwODEsNDAwODIsNDAwODQsNDAwODUsNDAwOTAsNDAwOTEsNDAwOTQsNDAwOTUsNDAwOTYsNDAwOTcsNDAwOTgsNDAwOTksNDAxMDEsNDAxMDIsNDAxMDMsNDAxMDQsNDAxMDUsNDAxMDcsNDAxMDksNDAxMTAsNDAxMTIsNDAxMTMsNDAxMTQsNDAxMTUsNDAxMTYsNDAxMTcs''@;'; put 'put ''NDAxMTgsNDAxMTksNDAxMjIsNDAxMjMsNDAxMjQsNDAxMjUsNDAxMzIsNDAxMzMsNDAxMzQsNDAxMzUsNDAxMzgsNDAxMzksMzk5OTYsMzk5OTcsMzk5OTgsMzk5OTksNGU0LDQwMDAxLDQwMDAyLDQwMDAzLDQwMDA0LDQwMDA1LDQwMDA2LDQwMDA3LDQwMDA4LDQwMDA5LDQwMDEwLDQwMDEx''@;'; put 'put ''LDQwMDEyLDQwMDEzLDQwMDE0LDQwMDE1LDQwMDE2LDQwMDE3LDQwMDE4LDQwMDE5LDQwMDIwLDQwMDIxLDQwMDIyLDQwMDIzLDQwMDI0LDQwMDI1LDQwMDI2LDQwMDI3LDQwMDI4LDQwMDI5LDQwMDMwLDQwMDMxLDQwMDMyLDQwMDMzLDQwMDM0LDQwMDM1LDQwMDM2LDQwMDM3LDQwMDM4LDQw''@;'; put 'put ''MDM5LDQwMDQwLDQwMDQxLDQwMDQyLDQwMDQzLDQwMDQ0LDQwMDQ1LDQwMDQ2LDQwMDQ3LDQwMDQ4LDQwMDQ5LDQwMDUwLDQwMDUxLDQwMDUyLDQwMDUzLDQwMDU0LDQwMDU1LDQwMDU2LDQwMDU3LDQwMDU4LDQwMDU5LDQwMDYxLDQwMDYyLDQwMDY0LDQwMDY3LDQwMDY4LDQwMDczLDQwMDc0''@;'; put 'put ''LDQwMDc2LDQwMDc5LDQwMDgzLDQwMDg2LDQwMDg3LDQwMDg4LDQwMDg5LDQwMDkzLDQwMTA2LDQwMTA4LDQwMTExLDQwMTIxLDQwMTI2LDQwMTI3LDQwMTI4LDQwMTI5LDQwMTMwLDQwMTM2LDQwMTM3LDQwMTQ1LDQwMTQ2LDQwMTU0LDQwMTU1LDQwMTYwLDQwMTYxLDQwMTQwLDQwMTQxLDQw''@;'; put 'put ''MTQyLDQwMTQzLDQwMTQ0LDQwMTQ3LDQwMTQ4LDQwMTQ5LDQwMTUxLDQwMTUyLDQwMTUzLDQwMTU2LDQwMTU3LDQwMTU5LDQwMTYyLDM4NzgwLDM4Nzg5LDM4ODAxLDM4ODAyLDM4ODA0LDM4ODMxLDM4ODI3LDM4ODE5LDM4ODM0LDM4ODM2LDM5NjAxLDM5NjAwLDM5NjA3LDQwNTM2LDM5NjA2''@;'; put 'put ''LDM5NjEwLDM5NjEyLDM5NjE3LDM5NjE2LDM5NjIxLDM5NjE4LDM5NjI3LDM5NjI4LDM5NjMzLDM5NzQ5LDM5NzQ3LDM5NzUxLDM5NzUzLDM5NzUyLDM5NzU3LDM5NzYxLDM5MTQ0LDM5MTgxLDM5MjE0LDM5MjUzLDM5MjUyLDM5NjQ3LDM5NjQ5LDM5NjU0LDM5NjYzLDM5NjU5LDM5Njc1LDM5''@;'; put 'put ''NjYxLDM5NjczLDM5Njg4LDM5Njk1LDM5Njk5LDM5NzExLDM5NzE1LDQwNjM3LDQwNjM4LDMyMzE1LDQwNTc4LDQwNTgzLDQwNTg0LDQwNTg3LDQwNTk0LDM3ODQ2LDQwNjA1LDQwNjA3LDQwNjY3LDQwNjY4LDQwNjY5LDQwNjcyLDQwNjcxLDQwNjc0LDQwNjgxLDQwNjc5LDQwNjc3LDQwNjgy''@;'; put 'put ''LDQwNjg3LDQwNzM4LDQwNzQ4LDQwNzUxLDQwNzYxLDQwNzU5LDQwNzY1LDQwNzY2LDQwNzcyLDQwMTYzLDQwMTY0LDQwMTY1LDQwMTY2LDQwMTY3LDQwMTY4LDQwMTY5LDQwMTcwLDQwMTcxLDQwMTcyLDQwMTczLDQwMTc0LDQwMTc1LDQwMTc2LDQwMTc3LDQwMTc4LDQwMTc5LDQwMTgwLDQw''@;'; put 'put ''MTgxLDQwMTgyLDQwMTgzLDQwMTg0LDQwMTg1LDQwMTg2LDQwMTg3LDQwMTg4LDQwMTg5LDQwMTkwLDQwMTkxLDQwMTkyLDQwMTkzLDQwMTk0LDQwMTk1LDQwMTk2LDQwMTk3LDQwMTk4LDQwMTk5LDQwMjAwLDQwMjAxLDQwMjAyLDQwMjAzLDQwMjA0LDQwMjA1LDQwMjA2LDQwMjA3LDQwMjA4''@;'; put 'put ''LDQwMjA5LDQwMjEwLDQwMjExLDQwMjEyLDQwMjEzLDQwMjE0LDQwMjE1LDQwMjE2LDQwMjE3LDQwMjE4LDQwMjE5LDQwMjIwLDQwMjIxLDQwMjIyLDQwMjIzLDQwMjI0LDQwMjI1LDQwMjI2LDQwMjI3LDQwMjI4LDQwMjI5LDQwMjMwLDQwMjMxLDQwMjMyLDQwMjMzLDQwMjM0LDQwMjM1LDQw''@;'; put 'put ''MjM2LDQwMjM3LDQwMjM4LDQwMjM5LDQwMjQwLDQwMjQxLDQwMjQyLDQwMjQzLDQwMjQ0LDQwMjQ1LDQwMjQ2LDQwMjQ3LDQwMjQ4LDQwMjQ5LDQwMjUwLDQwMjUxLDQwMjUyLDQwMjUzLDQwMjU0LDQwMjU1LDQwMjU2LDQwMjU3LDQwMjU4LDU3OTA4LDU3OTA5LDU3OTEwLDU3OTExLDU3OTEy''@;'; put 'put ''LDU3OTEzLDU3OTE0LDU3OTE1LDU3OTE2LDU3OTE3LDU3OTE4LDU3OTE5LDU3OTIwLDU3OTIxLDU3OTIyLDU3OTIzLDU3OTI0LDU3OTI1LDU3OTI2LDU3OTI3LDU3OTI4LDU3OTI5LDU3OTMwLDU3OTMxLDU3OTMyLDU3OTMzLDU3OTM0LDU3OTM1LDU3OTM2LDU3OTM3LDU3OTM4LDU3OTM5LDU3''@;'; put 'put ''OTQwLDU3OTQxLDU3OTQyLDU3OTQzLDU3OTQ0LDU3OTQ1LDU3OTQ2LDU3OTQ3LDU3OTQ4LDU3OTQ5LDU3OTUwLDU3OTUxLDU3OTUyLDU3OTUzLDU3OTU0LDU3OTU1LDU3OTU2LDU3OTU3LDU3OTU4LDU3OTU5LDU3OTYwLDU3OTYxLDU3OTYyLDU3OTYzLDU3OTY0LDU3OTY1LDU3OTY2LDU3OTY3''@;'; put 'put ''LDU3OTY4LDU3OTY5LDU3OTcwLDU3OTcxLDU3OTcyLDU3OTczLDU3OTc0LDU3OTc1LDU3OTc2LDU3OTc3LDU3OTc4LDU3OTc5LDU3OTgwLDU3OTgxLDU3OTgyLDU3OTgzLDU3OTg0LDU3OTg1LDU3OTg2LDU3OTg3LDU3OTg4LDU3OTg5LDU3OTkwLDU3OTkxLDU3OTkyLDU3OTkzLDU3OTk0LDU3''@;'; put 'put ''OTk1LDU3OTk2LDU3OTk3LDU3OTk4LDU3OTk5LDU4ZTMsNTgwMDEsNDAyNTksNDAyNjAsNDAyNjEsNDAyNjIsNDAyNjMsNDAyNjQsNDAyNjUsNDAyNjYsNDAyNjcsNDAyNjgsNDAyNjksNDAyNzAsNDAyNzEsNDAyNzIsNDAyNzMsNDAyNzQsNDAyNzUsNDAyNzYsNDAyNzcsNDAyNzgsNDAyNzks''@;'; put 'put ''NDAyODAsNDAyODEsNDAyODIsNDAyODMsNDAyODQsNDAyODUsNDAyODYsNDAyODcsNDAyODgsNDAyODksNDAyOTAsNDAyOTEsNDAyOTIsNDAyOTMsNDAyOTQsNDAyOTUsNDAyOTYsNDAyOTcsNDAyOTgsNDAyOTksNDAzMDAsNDAzMDEsNDAzMDIsNDAzMDMsNDAzMDQsNDAzMDUsNDAzMDYsNDAz''@;'; put 'put ''MDcsNDAzMDgsNDAzMDksNDAzMTAsNDAzMTEsNDAzMTIsNDAzMTMsNDAzMTQsNDAzMTUsNDAzMTYsNDAzMTcsNDAzMTgsNDAzMTksNDAzMjAsNDAzMjEsNDAzMjIsNDAzMjMsNDAzMjQsNDAzMjUsNDAzMjYsNDAzMjcsNDAzMjgsNDAzMjksNDAzMzAsNDAzMzEsNDAzMzIsNDAzMzMsNDAzMzQs''@;'; put 'put ''NDAzMzUsNDAzMzYsNDAzMzcsNDAzMzgsNDAzMzksNDAzNDAsNDAzNDEsNDAzNDIsNDAzNDMsNDAzNDQsNDAzNDUsNDAzNDYsNDAzNDcsNDAzNDgsNDAzNDksNDAzNTAsNDAzNTEsNDAzNTIsNDAzNTMsNDAzNTQsNTgwMDIsNTgwMDMsNTgwMDQsNTgwMDUsNTgwMDYsNTgwMDcsNTgwMDgsNTgw''@;'; put 'put ''MDksNTgwMTAsNTgwMTEsNTgwMTIsNTgwMTMsNTgwMTQsNTgwMTUsNTgwMTYsNTgwMTcsNTgwMTgsNTgwMTksNTgwMjAsNTgwMjEsNTgwMjIsNTgwMjMsNTgwMjQsNTgwMjUsNTgwMjYsNTgwMjcsNTgwMjgsNTgwMjksNTgwMzAsNTgwMzEsNTgwMzIsNTgwMzMsNTgwMzQsNTgwMzUsNTgwMzYs''@;'; put 'put ''NTgwMzcsNTgwMzgsNTgwMzksNTgwNDAsNTgwNDEsNTgwNDIsNTgwNDMsNTgwNDQsNTgwNDUsNTgwNDYsNTgwNDcsNTgwNDgsNTgwNDksNTgwNTAsNTgwNTEsNTgwNTIsNTgwNTMsNTgwNTQsNTgwNTUsNTgwNTYsNTgwNTcsNTgwNTgsNTgwNTksNTgwNjAsNTgwNjEsNTgwNjIsNTgwNjMsNTgw''@;'; put 'put ''NjQsNTgwNjUsNTgwNjYsNTgwNjcsNTgwNjgsNTgwNjksNTgwNzAsNTgwNzEsNTgwNzIsNTgwNzMsNTgwNzQsNTgwNzUsNTgwNzYsNTgwNzcsNTgwNzgsNTgwNzksNTgwODAsNTgwODEsNTgwODIsNTgwODMsNTgwODQsNTgwODUsNTgwODYsNTgwODcsNTgwODgsNTgwODksNTgwOTAsNTgwOTEs''@;'; put 'put ''NTgwOTIsNTgwOTMsNTgwOTQsNTgwOTUsNDAzNTUsNDAzNTYsNDAzNTcsNDAzNTgsNDAzNTksNDAzNjAsNDAzNjEsNDAzNjIsNDAzNjMsNDAzNjQsNDAzNjUsNDAzNjYsNDAzNjcsNDAzNjgsNDAzNjksNDAzNzAsNDAzNzEsNDAzNzIsNDAzNzMsNDAzNzQsNDAzNzUsNDAzNzYsNDAzNzcsNDAz''@;'; put 'put ''NzgsNDAzNzksNDAzODAsNDAzODEsNDAzODIsNDAzODMsNDAzODQsNDAzODUsNDAzODYsNDAzODcsNDAzODgsNDAzODksNDAzOTAsNDAzOTEsNDAzOTIsNDAzOTMsNDAzOTQsNDAzOTUsNDAzOTYsNDAzOTcsNDAzOTgsNDAzOTksNDA0MDAsNDA0MDEsNDA0MDIsNDA0MDMsNDA0MDQsNDA0MDUs''@;'; put 'put ''NDA0MDYsNDA0MDcsNDA0MDgsNDA0MDksNDA0MTAsNDA0MTEsNDA0MTIsNDA0MTMsNDA0MTQsNDA0MTUsNDA0MTYsNDA0MTcsNDA0MTgsNDA0MTksNDA0MjAsNDA0MjEsNDA0MjIsNDA0MjMsNDA0MjQsNDA0MjUsNDA0MjYsNDA0MjcsNDA0MjgsNDA0MjksNDA0MzAsNDA0MzEsNDA0MzIsNDA0''@;'; put 'put ''MzMsNDA0MzQsNDA0MzUsNDA0MzYsNDA0MzcsNDA0MzgsNDA0MzksNDA0NDAsNDA0NDEsNDA0NDIsNDA0NDMsNDA0NDQsNDA0NDUsNDA0NDYsNDA0NDcsNDA0NDgsNDA0NDksNDA0NTAsNTgwOTYsNTgwOTcsNTgwOTgsNTgwOTksNTgxMDAsNTgxMDEsNTgxMDIsNTgxMDMsNTgxMDQsNTgxMDUs''@;'; put 'put ''NTgxMDYsNTgxMDcsNTgxMDgsNTgxMDksNTgxMTAsNTgxMTEsNTgxMTIsNTgxMTMsNTgxMTQsNTgxMTUsNTgxMTYsNTgxMTcsNTgxMTgsNTgxMTksNTgxMjAsNTgxMjEsNTgxMjIsNTgxMjMsNTgxMjQsNTgxMjUsNTgxMjYsNTgxMjcsNTgxMjgsNTgxMjksNTgxMzAsNTgxMzEsNTgxMzIsNTgx''@;'; put 'put ''MzMsNTgxMzQsNTgxMzUsNTgxMzYsNTgxMzcsNTgxMzgsNTgxMzksNTgxNDAsNTgxNDEsNTgxNDIsNTgxNDMsNTgxNDQsNTgxNDUsNTgxNDYsNTgxNDcsNTgxNDgsNTgxNDksNTgxNTAsNTgxNTEsNTgxNTIsNTgxNTMsNTgxNTQsNTgxNTUsNTgxNTYsNTgxNTcsNTgxNTgsNTgxNTksNTgxNjAs''@;'; put 'put ''NTgxNjEsNTgxNjIsNTgxNjMsNTgxNjQsNTgxNjUsNTgxNjYsNTgxNjcsNTgxNjgsNTgxNjksNTgxNzAsNTgxNzEsNTgxNzIsNTgxNzMsNTgxNzQsNTgxNzUsNTgxNzYsNTgxNzcsNTgxNzgsNTgxNzksNTgxODAsNTgxODEsNTgxODIsNTgxODMsNTgxODQsNTgxODUsNTgxODYsNTgxODcsNTgx''@;'; put 'put ''ODgsNTgxODksNDA0NTEsNDA0NTIsNDA0NTMsNDA0NTQsNDA0NTUsNDA0NTYsNDA0NTcsNDA0NTgsNDA0NTksNDA0NjAsNDA0NjEsNDA0NjIsNDA0NjMsNDA0NjQsNDA0NjUsNDA0NjYsNDA0NjcsNDA0NjgsNDA0NjksNDA0NzAsNDA0NzEsNDA0NzIsNDA0NzMsNDA0NzQsNDA0NzUsNDA0NzYs''@;'; put 'put ''NDA0NzcsNDA0NzgsNDA0ODQsNDA0ODcsNDA0OTQsNDA0OTYsNDA1MDAsNDA1MDcsNDA1MDgsNDA1MTIsNDA1MjUsNDA1MjgsNDA1MzAsNDA1MzEsNDA1MzIsNDA1MzQsNDA1MzcsNDA1NDEsNDA1NDMsNDA1NDQsNDA1NDUsNDA1NDYsNDA1NDksNDA1NTgsNDA1NTksNDA1NjIsNDA1NjQsNDA1''@;'; put 'put ''NjUsNDA1NjYsNDA1NjcsNDA1NjgsNDA1NjksNDA1NzAsNDA1NzEsNDA1NzIsNDA1NzMsNDA1NzYsNDA1NzcsNDA1NzksNDA1ODAsNDA1ODEsNDA1ODIsNDA1ODUsNDA1ODYsNDA1ODgsNDA1ODksNDA1OTAsNDA1OTEsNDA1OTIsNDA1OTMsNDA1OTYsNDA1OTcsNDA1OTgsNDA1OTksNDA2MDAs''@;'; put 'put ''NDA2MDEsNDA2MDIsNDA2MDMsNDA2MDQsNDA2MDYsNDA2MDgsNDA2MDksNDA2MTAsNDA2MTEsNDA2MTIsNDA2MTMsNDA2MTUsNDA2MTYsNDA2MTcsNDA2MTgsNTgxOTAsNTgxOTEsNTgxOTIsNTgxOTMsNTgxOTQsNTgxOTUsNTgxOTYsNTgxOTcsNTgxOTgsNTgxOTksNTgyMDAsNTgyMDEsNTgy''@;'; put 'put ''MDIsNTgyMDMsNTgyMDQsNTgyMDUsNTgyMDYsNTgyMDcsNTgyMDgsNTgyMDksNTgyMTAsNTgyMTEsNTgyMTIsNTgyMTMsNTgyMTQsNTgyMTUsNTgyMTYsNTgyMTcsNTgyMTgsNTgyMTksNTgyMjAsNTgyMjEsNTgyMjIsNTgyMjMsNTgyMjQsNTgyMjUsNTgyMjYsNTgyMjcsNTgyMjgsNTgyMjks''@;'; put 'put ''NTgyMzAsNTgyMzEsNTgyMzIsNTgyMzMsNTgyMzQsNTgyMzUsNTgyMzYsNTgyMzcsNTgyMzgsNTgyMzksNTgyNDAsNTgyNDEsNTgyNDIsNTgyNDMsNTgyNDQsNTgyNDUsNTgyNDYsNTgyNDcsNTgyNDgsNTgyNDksNTgyNTAsNTgyNTEsNTgyNTIsNTgyNTMsNTgyNTQsNTgyNTUsNTgyNTYsNTgy''@;'; put 'put ''NTcsNTgyNTgsNTgyNTksNTgyNjAsNTgyNjEsNTgyNjIsNTgyNjMsNTgyNjQsNTgyNjUsNTgyNjYsNTgyNjcsNTgyNjgsNTgyNjksNTgyNzAsNTgyNzEsNTgyNzIsNTgyNzMsNTgyNzQsNTgyNzUsNTgyNzYsNTgyNzcsNTgyNzgsNTgyNzksNTgyODAsNTgyODEsNTgyODIsNTgyODMsNDA2MTks''@;'; put 'put ''NDA2MjAsNDA2MjEsNDA2MjIsNDA2MjMsNDA2MjQsNDA2MjUsNDA2MjYsNDA2MjcsNDA2MjksNDA2MzAsNDA2MzEsNDA2MzMsNDA2MzQsNDA2MzYsNDA2MzksNDA2NDAsNDA2NDEsNDA2NDIsNDA2NDMsNDA2NDUsNDA2NDYsNDA2NDcsNDA2NDgsNDA2NTAsNDA2NTEsNDA2NTIsNDA2NTYsNDA2''@;'; put 'put ''NTgsNDA2NTksNDA2NjEsNDA2NjIsNDA2NjMsNDA2NjUsNDA2NjYsNDA2NzAsNDA2NzMsNDA2NzUsNDA2NzYsNDA2NzgsNDA2ODAsNDA2ODMsNDA2ODQsNDA2ODUsNDA2ODYsNDA2ODgsNDA2ODksNDA2OTAsNDA2OTEsNDA2OTIsNDA2OTMsNDA2OTQsNDA2OTUsNDA2OTYsNDA2OTgsNDA3MDEs''@;'; put 'put ''NDA3MDMsNDA3MDQsNDA3MDUsNDA3MDYsNDA3MDcsNDA3MDgsNDA3MDksNDA3MTAsNDA3MTEsNDA3MTIsNDA3MTMsNDA3MTQsNDA3MTYsNDA3MTksNDA3MjEsNDA3MjIsNDA3MjQsNDA3MjUsNDA3MjYsNDA3MjgsNDA3MzAsNDA3MzEsNDA3MzIsNDA3MzMsNDA3MzQsNDA3MzUsNDA3MzcsNDA3''@;'; put 'put ''MzksNDA3NDAsNDA3NDEsNDA3NDIsNDA3NDMsNDA3NDQsNDA3NDUsNDA3NDYsNDA3NDcsNDA3NDksNDA3NTAsNDA3NTIsNDA3NTMsNTgyODQsNTgyODUsNTgyODYsNTgyODcsNTgyODgsNTgyODksNTgyOTAsNTgyOTEsNTgyOTIsNTgyOTMsNTgyOTQsNTgyOTUsNTgyOTYsNTgyOTcsNTgyOTgs''@;'; put 'put ''NTgyOTksNTgzMDAsNTgzMDEsNTgzMDIsNTgzMDMsNTgzMDQsNTgzMDUsNTgzMDYsNTgzMDcsNTgzMDgsNTgzMDksNTgzMTAsNTgzMTEsNTgzMTIsNTgzMTMsNTgzMTQsNTgzMTUsNTgzMTYsNTgzMTcsNTgzMTgsNTgzMTksNTgzMjAsNTgzMjEsNTgzMjIsNTgzMjMsNTgzMjQsNTgzMjUsNTgz''@;'; put 'put ''MjYsNTgzMjcsNTgzMjgsNTgzMjksNTgzMzAsNTgzMzEsNTgzMzIsNTgzMzMsNTgzMzQsNTgzMzUsNTgzMzYsNTgzMzcsNTgzMzgsNTgzMzksNTgzNDAsNTgzNDEsNTgzNDIsNTgzNDMsNTgzNDQsNTgzNDUsNTgzNDYsNTgzNDcsNTgzNDgsNTgzNDksNTgzNTAsNTgzNTEsNTgzNTIsNTgzNTMs''@;'; put 'put ''NTgzNTQsNTgzNTUsNTgzNTYsNTgzNTcsNTgzNTgsNTgzNTksNTgzNjAsNTgzNjEsNTgzNjIsNTgzNjMsNTgzNjQsNTgzNjUsNTgzNjYsNTgzNjcsNTgzNjgsNTgzNjksNTgzNzAsNTgzNzEsNTgzNzIsNTgzNzMsNTgzNzQsNTgzNzUsNTgzNzYsNTgzNzcsNDA3NTQsNDA3NTUsNDA3NTYsNDA3''@;'; put 'put ''NTcsNDA3NTgsNDA3NjAsNDA3NjIsNDA3NjQsNDA3NjcsNDA3NjgsNDA3NjksNDA3NzAsNDA3NzEsNDA3NzMsNDA3NzQsNDA3NzUsNDA3NzYsNDA3NzcsNDA3NzgsNDA3NzksNDA3ODAsNDA3ODEsNDA3ODIsNDA3ODMsNDA3ODYsNDA3ODcsNDA3ODgsNDA3ODksNDA3OTAsNDA3OTEsNDA3OTIs''@;'; put 'put ''NDA3OTMsNDA3OTQsNDA3OTUsNDA3OTYsNDA3OTcsNDA3OTgsNDA3OTksNDA4MDAsNDA4MDEsNDA4MDIsNDA4MDMsNDA4MDQsNDA4MDUsNDA4MDYsNDA4MDcsNDA4MDgsNDA4MDksNDA4MTAsNDA4MTEsNDA4MTIsNDA4MTMsNDA4MTQsNDA4MTUsNDA4MTYsNDA4MTcsNDA4MTgsNDA4MTksNDA4''@;'; put 'put ''MjAsNDA4MjEsNDA4MjIsNDA4MjMsNDA4MjQsNDA4MjUsNDA4MjYsNDA4MjcsNDA4MjgsNDA4MjksNDA4MzAsNDA4MzMsNDA4MzQsNDA4NDUsNDA4NDYsNDA4NDcsNDA4NDgsNDA4NDksNDA4NTAsNDA4NTEsNDA4NTIsNDA4NTMsNDA4NTQsNDA4NTUsNDA4NTYsNDA4NjAsNDA4NjEsNDA4NjIs''@;'; put 'put ''NDA4NjUsNDA4NjYsNDA4NjcsNDA4NjgsNDA4NjksNjM3ODgsNjM4NjUsNjM4OTMsNjM5NzUsNjM5ODUsNTgzNzgsNTgzNzksNTgzODAsNTgzODEsNTgzODIsNTgzODMsNTgzODQsNTgzODUsNTgzODYsNTgzODcsNTgzODgsNTgzODksNTgzOTAsNTgzOTEsNTgzOTIsNTgzOTMsNTgzOTQsNTgz''@;'; put 'put ''OTUsNTgzOTYsNTgzOTcsNTgzOTgsNTgzOTksNTg0MDAsNTg0MDEsNTg0MDIsNTg0MDMsNTg0MDQsNTg0MDUsNTg0MDYsNTg0MDcsNTg0MDgsNTg0MDksNTg0MTAsNTg0MTEsNTg0MTIsNTg0MTMsNTg0MTQsNTg0MTUsNTg0MTYsNTg0MTcsNTg0MTgsNTg0MTksNTg0MjAsNTg0MjEsNTg0MjIs''@;'; put 'put ''NTg0MjMsNTg0MjQsNTg0MjUsNTg0MjYsNTg0MjcsNTg0MjgsNTg0MjksNTg0MzAsNTg0MzEsNTg0MzIsNTg0MzMsNTg0MzQsNTg0MzUsNTg0MzYsNTg0MzcsNTg0MzgsNTg0MzksNTg0NDAsNTg0NDEsNTg0NDIsNTg0NDMsNTg0NDQsNTg0NDUsNTg0NDYsNTg0NDcsNTg0NDgsNTg0NDksNTg0''@;'; put 'put ''NTAsNTg0NTEsNTg0NTIsNTg0NTMsNTg0NTQsNTg0NTUsNTg0NTYsNTg0NTcsNTg0NTgsNTg0NTksNTg0NjAsNTg0NjEsNTg0NjIsNTg0NjMsNTg0NjQsNTg0NjUsNTg0NjYsNTg0NjcsNTg0NjgsNTg0NjksNTg0NzAsNTg0NzEsNjQwMTIsNjQwMTMsNjQwMTQsNjQwMTUsNjQwMTcsNjQwMTks''@;'; put 'put ''NjQwMjAsNjQwMjQsNjQwMzEsNjQwMzIsNjQwMzMsNjQwMzUsNjQwMzYsNjQwMzksNjQwNDAsNjQwNDEsMTE5MDUsNTk0MTQsNTk0MTUsNTk0MTYsMTE5MDgsMTM0MjcsMTMzODMsMTE5MTIsMTE5MTUsNTk0MjIsMTM3MjYsMTM4NTAsMTM4MzgsMTE5MTYsMTE5MjcsMTQ3MDIsMTQ2MTYsNTk0''@;'; put 'put ''MzAsMTQ3OTksMTQ4MTUsMTQ5NjMsMTQ4MDAsNTk0MzUsNTk0MzYsMTUxODIsMTU0NzAsMTU1ODQsMTE5NDMsNTk0NDEsNTk0NDIsMTE5NDYsMTY0NzAsMTY3MzUsMTE5NTAsMTcyMDcsMTE5NTUsMTE5NTgsMTE5NTksNTk0NTEsMTczMjksMTczMjQsMTE5NjMsMTczNzMsMTc2MjIsMTgwMTcs''@;'; put 'put ''MTc5OTYsNTk0NTksMTgyMTEsMTgyMTcsMTgzMDAsMTgzMTcsMTE5NzgsMTg3NTksMTg4MTAsMTg4MTMsMTg4MTgsMTg4MTksMTg4MjEsMTg4MjIsMTg4NDcsMTg4NDMsMTg4NzEsMTg4NzAsNTk0NzYsNTk0NzcsMTk2MTksMTk2MTUsMTk2MTYsMTk2MTcsMTk1NzUsMTk2MTgsMTk3MzEsMTk3''@;'; put 'put ''MzIsMTk3MzMsMTk3MzQsMTk3MzUsMTk3MzYsMTk3MzcsMTk4ODYsNTk0OTIsNTg0NzIsNTg0NzMsNTg0NzQsNTg0NzUsNTg0NzYsNTg0NzcsNTg0NzgsNTg0NzksNTg0ODAsNTg0ODEsNTg0ODIsNTg0ODMsNTg0ODQsNTg0ODUsNTg0ODYsNTg0ODcsNTg0ODgsNTg0ODksNTg0OTAsNTg0OTEs''@;'; put 'put ''NTg0OTIsNTg0OTMsNTg0OTQsNTg0OTUsNTg0OTYsNTg0OTcsNTg0OTgsNTg0OTksNTg1MDAsNTg1MDEsNTg1MDIsNTg1MDMsNTg1MDQsNTg1MDUsNTg1MDYsNTg1MDcsNTg1MDgsNTg1MDksNTg1MTAsNTg1MTEsNTg1MTIsNTg1MTMsNTg1MTQsNTg1MTUsNTg1MTYsNTg1MTcsNTg1MTgsNTg1''@;'; put 'put ''MTksNTg1MjAsNTg1MjEsNTg1MjIsNTg1MjMsNTg1MjQsNTg1MjUsNTg1MjYsNTg1MjcsNTg1MjgsNTg1MjksNTg1MzAsNTg1MzEsNTg1MzIsNTg1MzMsNTg1MzQsNTg1MzUsNTg1MzYsNTg1MzcsNTg1MzgsNTg1MzksNTg1NDAsNTg1NDEsNTg1NDIsNTg1NDMsNTg1NDQsNTg1NDUsNTg1NDYs''@;'; put 'put ''NTg1NDcsNTg1NDgsNTg1NDksNTg1NTAsNTg1NTEsNTg1NTIsNTg1NTMsNTg1NTQsNTg1NTUsNTg1NTYsNTg1NTcsNTg1NTgsNTg1NTksNTg1NjAsNTg1NjEsNTg1NjIsNTg1NjMsNTg1NjQsNTg1NjVdLCJnYjE4MDMwLXJhbmdlcyI6W1swLDEyOF0sWzM2LDE2NV0sWzM4LDE2OV0sWzQ1LDE3''@;'; put 'put ''OF0sWzUwLDE4NF0sWzgxLDIxNl0sWzg5LDIyNl0sWzk1LDIzNV0sWzk2LDIzOF0sWzEwMCwyNDRdLFsxMDMsMjQ4XSxbMTA0LDI1MV0sWzEwNSwyNTNdLFsxMDksMjU4XSxbMTI2LDI3Nl0sWzEzMywyODRdLFsxNDgsMzAwXSxbMTcyLDMyNV0sWzE3NSwzMjldLFsxNzksMzM0XSxbMjA4LDM2''@;'; put 'put ''NF0sWzMwNiw0NjNdLFszMDcsNDY1XSxbMzA4LDQ2N10sWzMwOSw0NjldLFszMTAsNDcxXSxbMzExLDQ3M10sWzMxMiw0NzVdLFszMTMsNDc3XSxbMzQxLDUwNl0sWzQyOCw1OTRdLFs0NDMsNjEwXSxbNTQ0LDcxMl0sWzU0NSw3MTZdLFs1NTgsNzMwXSxbNzQxLDkzMF0sWzc0Miw5MzhdLFs3''@;'; put 'put ''NDksOTYyXSxbNzUwLDk3MF0sWzgwNSwxMDI2XSxbODE5LDExMDRdLFs4MjAsMTEwNl0sWzc5MjIsODIwOV0sWzc5MjQsODIxNV0sWzc5MjUsODIxOF0sWzc5MjcsODIyMl0sWzc5MzQsODIzMV0sWzc5NDMsODI0MV0sWzc5NDQsODI0NF0sWzc5NDUsODI0Nl0sWzc5NTAsODI1Ml0sWzgwNjIs''@;'; put 'put ''ODM2NV0sWzgxNDgsODQ1Ml0sWzgxNDksODQ1NF0sWzgxNTIsODQ1OF0sWzgxNjQsODQ3MV0sWzgxNzQsODQ4Ml0sWzgyMzYsODU1Nl0sWzgyNDAsODU3MF0sWzgyNjIsODU5Nl0sWzgyNjQsODYwMl0sWzgzNzQsODcxM10sWzgzODAsODcyMF0sWzgzODEsODcyMl0sWzgzODQsODcyNl0sWzgz''@;'; put 'put ''ODgsODczMV0sWzgzOTAsODczN10sWzgzOTIsODc0MF0sWzgzOTMsODc0Ml0sWzgzOTQsODc0OF0sWzgzOTYsODc1MV0sWzg0MDEsODc2MF0sWzg0MDYsODc2Nl0sWzg0MTYsODc3N10sWzg0MTksODc4MV0sWzg0MjQsODc4N10sWzg0MzcsODgwMl0sWzg0MzksODgwOF0sWzg0NDUsODgxNl0s''@;'; put 'put ''Wzg0ODIsODg1NF0sWzg0ODUsODg1OF0sWzg0OTYsODg3MF0sWzg1MjEsODg5Nl0sWzg2MDMsODk3OV0sWzg5MzYsOTMyMl0sWzg5NDYsOTM3Ml0sWzkwNDYsOTU0OF0sWzkwNTAsOTU4OF0sWzkwNjMsOTYxNl0sWzkwNjYsOTYyMl0sWzkwNzYsOTYzNF0sWzkwOTIsOTY1Ml0sWzkxMDAsOTY2''@;'; put 'put ''Ml0sWzkxMDgsOTY3Ml0sWzkxMTEsOTY3Nl0sWzkxMTMsOTY4MF0sWzkxMzEsOTcwMl0sWzkxNjIsOTczNV0sWzkxNjQsOTczOF0sWzkyMTgsOTc5M10sWzkyMTksOTc5NV0sWzExMzI5LDExOTA2XSxbMTEzMzEsMTE5MDldLFsxMTMzNCwxMTkxM10sWzExMzM2LDExOTE3XSxbMTEzNDYsMTE5''@;'; put 'put ''MjhdLFsxMTM2MSwxMTk0NF0sWzExMzYzLDExOTQ3XSxbMTEzNjYsMTE5NTFdLFsxMTM3MCwxMTk1Nl0sWzExMzcyLDExOTYwXSxbMTEzNzUsMTE5NjRdLFsxMTM4OSwxMTk3OV0sWzExNjgyLDEyMjg0XSxbMTE2ODYsMTIyOTJdLFsxMTY4NywxMjMxMl0sWzExNjkyLDEyMzE5XSxbMTE2OTQs''@;'; put 'put ''MTIzMzBdLFsxMTcxNCwxMjM1MV0sWzExNzE2LDEyNDM2XSxbMTE3MjMsMTI0NDddLFsxMTcyNSwxMjUzNV0sWzExNzMwLDEyNTQzXSxbMTE3MzYsMTI1ODZdLFsxMTk4MiwxMjg0Ml0sWzExOTg5LDEyODUwXSxbMTIxMDIsMTI5NjRdLFsxMjMzNiwxMzIwMF0sWzEyMzQ4LDEzMjE1XSxbMTIz''@;'; put 'put ''NTAsMTMyMThdLFsxMjM4NCwxMzI1M10sWzEyMzkzLDEzMjYzXSxbMTIzOTUsMTMyNjddLFsxMjM5NywxMzI3MF0sWzEyNTEwLDEzMzg0XSxbMTI1NTMsMTM0MjhdLFsxMjg1MSwxMzcyN10sWzEyOTYyLDEzODM5XSxbMTI5NzMsMTM4NTFdLFsxMzczOCwxNDYxN10sWzEzODIzLDE0NzAzXSxb''@;'; put 'put ''MTM5MTksMTQ4MDFdLFsxMzkzMywxNDgxNl0sWzE0MDgwLDE0OTY0XSxbMTQyOTgsMTUxODNdLFsxNDU4NSwxNTQ3MV0sWzE0Njk4LDE1NTg1XSxbMTU1ODMsMTY0NzFdLFsxNTg0NywxNjczNl0sWzE2MzE4LDE3MjA4XSxbMTY0MzQsMTczMjVdLFsxNjQzOCwxNzMzMF0sWzE2NDgxLDE3Mzc0''@;'; put 'put ''XSxbMTY3MjksMTc2MjNdLFsxNzEwMiwxNzk5N10sWzE3MTIyLDE4MDE4XSxbMTczMTUsMTgyMTJdLFsxNzMyMCwxODIxOF0sWzE3NDAyLDE4MzAxXSxbMTc0MTgsMTgzMThdLFsxNzg1OSwxODc2MF0sWzE3OTA5LDE4ODExXSxbMTc5MTEsMTg4MTRdLFsxNzkxNSwxODgyMF0sWzE3OTE2LDE4''@;'; put 'put ''ODIzXSxbMTc5MzYsMTg4NDRdLFsxNzkzOSwxODg0OF0sWzE3OTYxLDE4ODcyXSxbMTg2NjQsMTk1NzZdLFsxODcwMywxOTYyMF0sWzE4ODE0LDE5NzM4XSxbMTg5NjIsMTk4ODddLFsxOTA0Myw0MDg3MF0sWzMzNDY5LDU5MjQ0XSxbMzM0NzAsNTkzMzZdLFszMzQ3MSw1OTM2N10sWzMzNDg0''@;'; put 'put ''LDU5NDEzXSxbMzM0ODUsNTk0MTddLFszMzQ5MCw1OTQyM10sWzMzNDk3LDU5NDMxXSxbMzM1MDEsNTk0MzddLFszMzUwNSw1OTQ0M10sWzMzNTEzLDU5NDUyXSxbMzM1MjAsNTk0NjBdLFszMzUzNiw1OTQ3OF0sWzMzNTUwLDU5NDkzXSxbMzc4NDUsNjM3ODldLFszNzkyMSw2Mzg2Nl0sWzM3''@;'; put 'put ''OTQ4LDYzODk0XSxbMzgwMjksNjM5NzZdLFszODAzOCw2Mzk4Nl0sWzM4MDY0LDY0MDE2XSxbMzgwNjUsNjQwMThdLFszODA2Niw2NDAyMV0sWzM4MDY5LDY0MDI1XSxbMzgwNzUsNjQwMzRdLFszODA3Niw2NDAzN10sWzM4MDc4LDY0MDQyXSxbMzkxMDgsNjUwNzRdLFszOTEwOSw2NTA5M10s''@;'; put 'put ''WzM5MTEzLDY1MTA3XSxbMzkxMTQsNjUxMTJdLFszOTExNSw2NTEyN10sWzM5MTE2LDY1MTMyXSxbMzkyNjUsNjUzNzVdLFszOTM5NCw2NTUxMF0sWzE4OWUzLDY1NTM2XV0samlzMDIwODpbMTIyODgsMTIyODksMTIyOTAsNjUyOTIsNjUyOTQsMTI1MzksNjUzMDYsNjUzMDcsNjUzMTEsNjUy''@;'; put 'put ''ODEsMTI0NDMsMTI0NDQsMTgwLDY1MzQ0LDE2OCw2NTM0Miw2NTUwNyw2NTM0MywxMjU0MSwxMjU0MiwxMjQ0NSwxMjQ0NiwxMjI5MSwyMDE4OSwxMjI5MywxMjI5NCwxMjI5NSwxMjU0MCw4MjEzLDgyMDgsNjUyOTUsNjUzNDAsNjUzNzQsODc0MSw2NTM3Miw4MjMwLDgyMjksODIxNiw4MjE3''@;'; put 'put ''LDgyMjAsODIyMSw2NTI4OCw2NTI4OSwxMjMwOCwxMjMwOSw2NTMzOSw2NTM0MSw2NTM3MSw2NTM3MywxMjI5NiwxMjI5NywxMjI5OCwxMjI5OSwxMjMwMCwxMjMwMSwxMjMwMiwxMjMwMywxMjMwNCwxMjMwNSw2NTI5MSw2NTI5MywxNzcsMjE1LDI0Nyw2NTMwOSw4ODAwLDY1MzA4LDY1MzEw''@;'; put 'put ''LDg4MDYsODgwNyw4NzM0LDg3NTYsOTc5NCw5NzkyLDE3Niw4MjQyLDgyNDMsODQ1MSw2NTUwOSw2NTI4NCw2NTUwNCw2NTUwNSw2NTI4NSw2NTI4Myw2NTI4Niw2NTI5MCw2NTMxMiwxNjcsOTczNCw5NzMzLDk2NzUsOTY3OSw5Njc4LDk2NzEsOTY3MCw5NjMzLDk2MzIsOTY1MSw5NjUwLDk2''@;'; put 'put ''NjEsOTY2MCw4MjUxLDEyMzA2LDg1OTQsODU5Miw4NTkzLDg1OTUsMTIzMDcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg3MTIsODcxNSw4ODM4LDg4MzksODgzNCw4ODM1LDg3NDYsODc0NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsODc0Myw4NzQ0LDY1NTA2LDg2NTgsODY2MCw4NzA0LDg3MDcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg3MzYsODg2OSw4OTc4LDg3MDYsODcxMSw4ODAxLDg3ODYsODgxMCw4ODExLDg3MzAsODc2NSw4NzMz''@;'; put 'put ''LDg3NTcsODc0Nyw4NzQ4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODQ5MSw4MjQwLDk4MzksOTgzNyw5ODM0LDgyMjQsODIyNSwxODIsbnVsbCxudWxsLG51bGwsbnVsbCw5NzExLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY1Mjk2LDY1Mjk3LDY1Mjk4LDY1Mjk5LDY1MzAwLDY1MzAxLDY1MzAyLDY1MzAzLDY1MzA0LDY1MzA1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjUzMTMsNjUzMTQsNjUzMTUsNjUzMTYsNjUzMTcsNjUzMTgsNjUzMTksNjUz''@;'; put 'put ''MjAsNjUzMjEsNjUzMjIsNjUzMjMsNjUzMjQsNjUzMjUsNjUzMjYsNjUzMjcsNjUzMjgsNjUzMjksNjUzMzAsNjUzMzEsNjUzMzIsNjUzMzMsNjUzMzQsNjUzMzUsNjUzMzYsNjUzMzcsNjUzMzgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjUzNDUsNjUzNDYsNjUzNDcsNjUzNDgs''@;'; put 'put ''NjUzNDksNjUzNTAsNjUzNTEsNjUzNTIsNjUzNTMsNjUzNTQsNjUzNTUsNjUzNTYsNjUzNTcsNjUzNTgsNjUzNTksNjUzNjAsNjUzNjEsNjUzNjIsNjUzNjMsNjUzNjQsNjUzNjUsNjUzNjYsNjUzNjcsNjUzNjgsNjUzNjksNjUzNzAsbnVsbCxudWxsLG51bGwsbnVsbCwxMjM1MywxMjM1NCwx''@;'; put 'put ''MjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2MCwxMjM2MSwxMjM2MiwxMjM2MywxMjM2NCwxMjM2NSwxMjM2NiwxMjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3MiwxMjM3MywxMjM3NCwxMjM3NSwxMjM3NiwxMjM3NywxMjM3OCwxMjM3OSwxMjM4MCwxMjM4MSwxMjM4''@;'; put 'put ''MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4NywxMjM4OCwxMjM4OSwxMjM5MCwxMjM5MSwxMjM5MiwxMjM5MywxMjM5NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQwMCwxMjQwMSwxMjQwMiwxMjQwMywxMjQwNCwxMjQwNSwxMjQwNiwxMjQwNywxMjQwOCwxMjQwOSwx''@;'; put 'put ''MjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQxNSwxMjQxNiwxMjQxNywxMjQxOCwxMjQxOSwxMjQyMCwxMjQyMSwxMjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywxMjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwxMjQzMiwxMjQzMywxMjQzNCwxMjQzNSxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0Njgs''@;'; put 'put ''MTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0''@;'; put 'put ''OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMs''@;'; put 'put ''MTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3''@;'; put 'put ''LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Myw5NjQsOTY1LDk2Niw5Njcs''@;'; put 'put ''OTY4LDk2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEw''@;'; put 'put ''NjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEw''@;'; put 'put ''ODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTYsOTQ5Miw5NTAwLDk1MTYsOTUwOCw5NTI0LDk1MzIsOTQ3Myw5NDc1LDk0ODcsOTQ5MSw5NDk5LDk0OTUsOTUwNyw5NTIzLDk1MTUsOTUzMSw5NTQ3LDk1MDQsOTUxOSw5NTEyLDk1MjcsOTUzNSw5NTAxLDk1MjAsOTUwOSw5NTI4LDk1''@;'; put 'put ''MzgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTMxMiw5MzEzLDkzMTQsOTMxNSw5MzE2LDkzMTcsOTMxOCw5MzE5LDkzMjAsOTMyMSw5MzIyLDkzMjMsOTMyNCw5MzI1LDkzMjYsOTMyNyw5MzI4LDkzMjksOTMzMCw5MzMxLDg1NDQsODU0NSw4NTQ2LDg1''@;'; put 'put ''NDcsODU0OCw4NTQ5LDg1NTAsODU1MSw4NTUyLDg1NTMsbnVsbCwxMzEyOSwxMzA3NiwxMzA5MCwxMzEzMywxMzA4MCwxMzA5NSwxMzA1OSwxMzExMCwxMzEzNywxMzE0MywxMzA2OSwxMzA5NCwxMzA5MSwxMzA5OSwxMzEzMCwxMzExNSwxMzIxMiwxMzIxMywxMzIxNCwxMzE5OCwxMzE5OSwx''@;'; put 'put ''MzI1MiwxMzIxNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTMxNzksMTIzMTcsMTIzMTksODQ3MCwxMzI2MSw4NDgxLDEyOTY0LDEyOTY1LDEyOTY2LDEyOTY3LDEyOTY4LDEyODQ5LDEyODUwLDEyODU3LDEzMTgyLDEzMTgxLDEzMTgwLDg3ODYsODgwMSw4NzQ3''@;'; put 'put ''LDg3NTAsODcyMSw4NzMwLDg4NjksODczNiw4NzM1LDg4OTUsODc1Nyw4NzQ1LDg3NDYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCwyMDEyNCwyMTc4MiwyMzA0MywzODQ2MywyMTY5NiwyNDg1OSwyNTM4NCwyMzAzMCwzNjg5OCwzMzkwOSwzMzU2NCwzMTMxMiwyNDc0NiwyNTU2OSwyODE5NywyNjA5MywzMzg5NCwzMzQ0NiwzOTkyNSwyNjc3MSwyMjMxMSwyNjAxNywyNTIwMSwyMzQ1MSwyMjk5MiwzNDQy''@;'; put 'put ''NywzOTE1NiwzMjA5OCwzMjE5MCwzOTgyMiwyNTExMCwzMTkwMywzNDk5OSwyMzQzMywyNDI0NSwyNTM1MywyNjI2MywyNjY5NiwzODM0MywzODc5NywyNjQ0NywyMDE5NywyMDIzNCwyMDMwMSwyMDM4MSwyMDU1MywyMjI1OCwyMjgzOSwyMjk5NiwyMzA0MSwyMzU2MSwyNDc5OSwyNDg0Nywy''@;'; put 'put ''NDk0NCwyNjEzMSwyNjg4NSwyODg1OCwzMDAzMSwzMDA2NCwzMTIyNywzMjE3MywzMjIzOSwzMjk2MywzMzgwNiwzNDkxNSwzNTU4NiwzNjk0OSwzNjk4NiwyMTMwNywyMDExNywyMDEzMywyMjQ5NSwzMjk0NiwzNzA1NywzMDk1OSwxOTk2OCwyMjc2OSwyODMyMiwzNjkyMCwzMTI4MiwzMzU3''@;'; put 'put ''NiwzMzQxOSwzOTk4MywyMDgwMSwyMTM2MCwyMTY5MywyMTcyOSwyMjI0MCwyMzAzNSwyNDM0MSwzOTE1NCwyODEzOSwzMjk5NiwzNDA5MywzODQ5OCwzODUxMiwzODU2MCwzODkwNywyMTUxNSwyMTQ5MSwyMzQzMSwyODg3OSwzMjcwMSwzNjgwMiwzODYzMiwyMTM1OSw0MDI4NCwzMTQxOCwx''@;'; put 'put ''OTk4NSwzMDg2NywzMzI3NiwyODE5OCwyMjA0MCwyMTc2NCwyNzQyMSwzNDA3NCwzOTk5NSwyMzAxMywyMTQxNywyODAwNiwyOTkxNiwzODI4NywyMjA4MiwyMDExMywzNjkzOSwzODY0MiwzMzYxNSwzOTE4MCwyMTQ3MywyMTk0MiwyMzM0NCwyNDQzMywyNjE0NCwyNjM1NSwyNjYyOCwyNzcw''@;'; put 'put ''NCwyNzg5MSwyNzk0NSwyOTc4NywzMDQwOCwzMTMxMCwzODk2NCwzMzUyMSwzNDkwNywzNTQyNCwzNzYxMywyODA4MiwzMDEyMywzMDQxMCwzOTM2NSwyNDc0MiwzNTU4NSwzNjIzNCwzODMyMiwyNzAyMiwyMTQyMSwyMDg3MCwyMjI5MCwyMjU3NiwyMjg1MiwyMzQ3NiwyNDMxMCwyNDYxNiwy''@;'; put 'put ''NTUxMywyNTU4OCwyNzgzOSwyODQzNiwyODgxNCwyODk0OCwyOTAxNywyOTE0MSwyOTUwMywzMjI1NywzMzM5OCwzMzQ4OSwzNDE5OSwzNjk2MCwzNzQ2Nyw0MDIxOSwyMjYzMywyNjA0NCwyNzczOCwyOTk4OSwyMDk4NSwyMjgzMCwyMjg4NSwyNDQ0OCwyNDU0MCwyNTI3NiwyNjEwNiwyNzE3''@;'; put 'put ''OCwyNzQzMSwyNzU3MiwyOTU3OSwzMjcwNSwzNTE1OCw0MDIzNiw0MDIwNiw0MDY0NCwyMzcxMywyNzc5OCwzMzY1OSwyMDc0MCwyMzYyNywyNTAxNCwzMzIyMiwyNjc0MiwyOTI4MSwyMDA1NywyMDQ3NCwyMTM2OCwyNDY4MSwyODIwMSwzMTMxMSwzODg5OSwxOTk3OSwyMTI3MCwyMDIwNiwy''@;'; put 'put ''MDMwOSwyMDI4NSwyMDM4NSwyMDMzOSwyMTE1MiwyMTQ4NywyMjAyNSwyMjc5OSwyMzIzMywyMzQ3OCwyMzUyMSwzMTE4NSwyNjI0NywyNjUyNCwyNjU1MCwyNzQ2OCwyNzgyNywyODc3OSwyOTYzNCwzMTExNywzMTE2NiwzMTI5MiwzMTYyMywzMzQ1NywzMzQ5OSwzMzU0MCwzMzY1NSwzMzc3''@;'; put 'put ''NSwzMzc0NywzNDY2MiwzNTUwNiwyMjA1NywzNjAwOCwzNjgzOCwzNjk0MiwzODY4NiwzNDQ0MiwyMDQyMCwyMzc4NCwyNTEwNSwyOTI3MywzMDAxMSwzMzI1MywzMzQ2OSwzNDU1OCwzNjAzMiwzODU5NywzOTE4NywzOTM4MSwyMDE3MSwyMDI1MCwzNTI5OSwyMjIzOCwyMjYwMiwyMjczMCwy''@;'; put 'put ''NDMxNSwyNDU1NSwyNDYxOCwyNDcyNCwyNDY3NCwyNTA0MCwyNTEwNiwyNTI5NiwyNTkxMywzOTc0NSwyNjIxNCwyNjgwMCwyODAyMywyODc4NCwzMDAyOCwzMDM0MiwzMjExNywzMzQ0NSwzNDgwOSwzODI4MywzODU0MiwzNTk5NywyMDk3NywyMTE4MiwyMjgwNiwyMTY4MywyMzQ3NSwyMzgz''@;'; put 'put ''MCwyNDkzNiwyNzAxMCwyODA3OSwzMDg2MSwzMzk5NSwzNDkwMywzNTQ0MiwzNzc5OSwzOTYwOCwyODAxMiwzOTMzNiwzNDUyMSwyMjQzNSwyNjYyMywzNDUxMCwzNzM5MCwyMTEyMywyMjE1MSwyMTUwOCwyNDI3NSwyNTMxMywyNTc4NSwyNjY4NCwyNjY4MCwyNzU3OSwyOTU1NCwzMDkwNiwz''@;'; put 'put ''MTMzOSwzNTIyNiwzNTI4MiwzNjIwMywzNjYxMSwzNzEwMSwzODMwNywzODU0OCwzODc2MSwyMzM5OCwyMzczMSwyNzAwNSwzODk4OSwzODk5MCwyNTQ5OSwzMTUyMCwyNzE3OSwyNzI2MywyNjgwNiwzOTk0OSwyODUxMSwyMTEwNiwyMTkxNywyNDY4OCwyNTMyNCwyNzk2MywyODE2NywyODM2''@;'; put 'put ''OSwzMzg4MywzNTA4OCwzNjY3NiwxOTk4OCwzOTk5MywyMTQ5NCwyNjkwNywyNzE5NCwzODc4OCwyNjY2NiwyMDgyOCwzMTQyNywzMzk3MCwzNzM0MCwzNzc3MiwyMjEwNyw0MDIzMiwyNjY1OCwzMzU0MSwzMzg0MSwzMTkwOSwyMWUzLDMzNDc3LDI5OTI2LDIwMDk0LDIwMzU1LDIwODk2LDIz''@;'; put 'put ''NTA2LDIxMDAyLDIxMjA4LDIxMjIzLDI0MDU5LDIxOTE0LDIyNTcwLDIzMDE0LDIzNDM2LDIzNDQ4LDIzNTE1LDI0MTc4LDI0MTg1LDI0NzM5LDI0ODYzLDI0OTMxLDI1MDIyLDI1NTYzLDI1OTU0LDI2NTc3LDI2NzA3LDI2ODc0LDI3NDU0LDI3NDc1LDI3NzM1LDI4NDUwLDI4NTY3LDI4NDg1''@;'; put 'put ''LDI5ODcyLDI5OTc2LDMwNDM1LDMwNDc1LDMxNDg3LDMxNjQ5LDMxNzc3LDMyMjMzLDMyNTY2LDMyNzUyLDMyOTI1LDMzMzgyLDMzNjk0LDM1MjUxLDM1NTMyLDM2MDExLDM2OTk2LDM3OTY5LDM4MjkxLDM4Mjg5LDM4MzA2LDM4NTAxLDM4ODY3LDM5MjA4LDMzMzA0LDIwMDI0LDIxNTQ3LDIz''@;'; put 'put ''NzM2LDI0MDEyLDI5NjA5LDMwMjg0LDMwNTI0LDIzNzIxLDMyNzQ3LDM2MTA3LDM4NTkzLDM4OTI5LDM4OTk2LDM5ZTMsMjAyMjUsMjAyMzgsMjEzNjEsMjE5MTYsMjIxMjAsMjI1MjIsMjI4NTUsMjMzMDUsMjM0OTIsMjM2OTYsMjQwNzYsMjQxOTAsMjQ1MjQsMjU1ODIsMjY0MjYsMjYwNzEs''@;'; put 'put ''MjYwODIsMjYzOTksMjY4MjcsMjY4MjAsMjcyMzEsMjQxMTIsMjc1ODksMjc2NzEsMjc3NzMsMzAwNzksMzEwNDgsMjMzOTUsMzEyMzIsMzJlMywyNDUwOSwzNTIxNSwzNTM1MiwzNjAyMCwzNjIxNSwzNjU1NiwzNjYzNywzOTEzOCwzOTQzOCwzOTc0MCwyMDA5NiwyMDYwNSwyMDczNiwyMjkz''@;'; put 'put ''MSwyMzQ1MiwyNTEzNSwyNTIxNiwyNTgzNiwyNzQ1MCwyOTM0NCwzMDA5NywzMTA0NywzMjY4MSwzNDgxMSwzNTUxNiwzNTY5NiwyNTUxNiwzMzczOCwzODgxNiwyMTUxMywyMTUwNywyMTkzMSwyNjcwOCwyNzIyNCwzNTQ0MCwzMDc1OSwyNjQ4NSw0MDY1MywyMTM2NCwyMzQ1OCwzMzA1MCwz''@;'; put 'put ''NDM4NCwzNjg3MCwxOTk5MiwyMDAzNywyMDE2NywyMDI0MSwyMTQ1MCwyMTU2MCwyMzQ3MCwyNDMzOSwyNDYxMywyNTkzNywyNjQyOSwyNzcxNCwyNzc2MiwyNzg3NSwyODc5MiwyOTY5OSwzMTM1MCwzMTQwNiwzMTQ5NiwzMjAyNiwzMTk5OCwzMjEwMiwyNjA4NywyOTI3NSwyMTQzNSwyMzYy''@;'; put 'put ''MSwyNDA0MCwyNTI5OCwyNTMxMiwyNTM2OSwyODE5MiwzNDM5NCwzNTM3NywzNjMxNywzNzYyNCwyODQxNywzMTE0MiwzOTc3MCwyMDEzNiwyMDEzOSwyMDE0MCwyMDM3OSwyMDM4NCwyMDY4OSwyMDgwNywzMTQ3OCwyMDg0OSwyMDk4MiwyMTMzMiwyMTI4MSwyMTM3NSwyMTQ4MywyMTkzMiwy''@;'; put 'put ''MjY1OSwyMzc3NywyNDM3NSwyNDM5NCwyNDYyMywyNDY1NiwyNDY4NSwyNTM3NSwyNTk0NSwyNzIxMSwyNzg0MSwyOTM3OCwyOTQyMSwzMDcwMywzMzAxNiwzMzAyOSwzMzI4OCwzNDEyNiwzNzExMSwzNzg1NywzODkxMSwzOTI1NSwzOTUxNCwyMDIwOCwyMDk1NywyMzU5NywyNjI0MSwyNjk4''@;'; put 'put ''OSwyMzYxNiwyNjM1NCwyNjk5NywyOTU3NywyNjcwNCwzMTg3MywyMDY3NywyMTIyMCwyMjM0MywyNDA2MiwzNzY3MCwyNjAyMCwyNzQyNywyNzQ1MywyOTc0OCwzMTEwNSwzMTE2NSwzMTU2MywzMjIwMiwzMzQ2NSwzMzc0MCwzNDk0MywzNTE2NywzNTY0MSwzNjgxNywzNzMyOSwyMTUzNSwz''@;'; put 'put ''NzUwNCwyMDA2MSwyMDUzNCwyMTQ3NywyMTMwNiwyOTM5OSwyOTU5MCwzMDY5NywzMzUxMCwzNjUyNywzOTM2NiwzOTM2OCwzOTM3OCwyMDg1NSwyNDg1OCwzNDM5OCwyMTkzNiwzMTM1NCwyMDU5OCwyMzUwNywzNjkzNSwzODUzMywyMDAxOCwyNzM1NSwzNzM1MSwyMzYzMywyMzYyNCwyNTQ5''@;'; put 'put ''NiwzMTM5MSwyNzc5NSwzODc3MiwzNjcwNSwzMTQwMiwyOTA2NiwzODUzNiwzMTg3NCwyNjY0NywzMjM2OCwyNjcwNSwzNzc0MCwyMTIzNCwyMTUzMSwzNDIxOSwzNTM0NywzMjY3NiwzNjU1NywzNzA4OSwyMTM1MCwzNDk1MiwzMTA0MSwyMDQxOCwyMDY3MCwyMTAwOSwyMDgwNCwyMTg0Mywy''@;'; put 'put ''MjMxNywyOTY3NCwyMjQxMSwyMjg2NSwyNDQxOCwyNDQ1MiwyNDY5MywyNDk1MCwyNDkzNSwyNTAwMSwyNTUyMiwyNTY1OCwyNTk2NCwyNjIyMywyNjY5MCwyODE3OSwzMDA1NCwzMTI5MywzMTk5NSwzMjA3NiwzMjE1MywzMjMzMSwzMjYxOSwzMzU1MCwzMzYxMCwzNDUwOSwzNTMzNiwzNTQy''@;'; put 'put ''NywzNTY4NiwzNjYwNSwzODkzOCw0MDMzNSwzMzQ2NCwzNjgxNCwzOTkxMiwyMTEyNywyNTExOSwyNTczMSwyODYwOCwzODU1MywyNjY4OSwyMDYyNSwyNzQyNCwyNzc3MCwyODUwMCwzMTM0OCwzMjA4MCwzNDg4MCwzNTM2MywyNjM3NiwyMDIxNCwyMDUzNywyMDUxOCwyMDU4MSwyMDg2MCwy''@;'; put 'put ''MTA0OCwyMTA5MSwyMTkyNywyMjI4NywyMjUzMywyMzI0NCwyNDMxNCwyNTAxMCwyNTA4MCwyNTMzMSwyNTQ1OCwyNjkwOCwyNzE3NywyOTMwOSwyOTM1NiwyOTQ4NiwzMDc0MCwzMDgzMSwzMjEyMSwzMDQ3NiwzMjkzNywzNTIxMSwzNTYwOSwzNjA2NiwzNjU2MiwzNjk2MywzNzc0OSwzODUy''@;'; put 'put ''MiwzODk5NywzOTQ0Myw0MDU2OCwyMDgwMywyMTQwNywyMTQyNywyNDE4NywyNDM1OCwyODE4NywyODMwNCwyOTU3MiwyOTY5NCwzMjA2NywzMzMzNSwzNTMyOCwzNTU3OCwzODQ4MCwyMDA0NiwyMDQ5MSwyMTQ3NiwyMTYyOCwyMjI2NiwyMjk5MywyMzM5NiwyNDA0OSwyNDIzNSwyNDM1OSwy''@;'; put 'put ''NTE0NCwyNTkyNSwyNjU0MywyODI0NiwyOTM5MiwzMTk0NiwzNDk5NiwzMjkyOSwzMjk5MywzMzc3NiwzNDM4MiwzNTQ2MywzNjMyOCwzNzQzMSwzODU5OSwzOTAxNSw0MDcyMywyMDExNiwyMDExNCwyMDIzNywyMTMyMCwyMTU3NywyMTU2NiwyMzA4NywyNDQ2MCwyNDQ4MSwyNDczNSwyNjc5''@;'; put 'put ''MSwyNzI3OCwyOTc4NiwzMDg0OSwzNTQ4NiwzNTQ5MiwzNTcwMywzNzI2NCwyMDA2MiwzOTg4MSwyMDEzMiwyMDM0OCwyMDM5OSwyMDUwNSwyMDUwMiwyMDgwOSwyMDg0NCwyMTE1MSwyMTE3NywyMTI0NiwyMTQwMiwyMTQ3NSwyMTUyMSwyMTUxOCwyMTg5NywyMjM1MywyMjQzNCwyMjkwOSwy''@;'; put 'put ''MzM4MCwyMzM4OSwyMzQzOSwyNDAzNywyNDAzOSwyNDA1NSwyNDE4NCwyNDE5NSwyNDIxOCwyNDI0NywyNDM0NCwyNDY1OCwyNDkwOCwyNTIzOSwyNTMwNCwyNTUxMSwyNTkxNSwyNjExNCwyNjE3OSwyNjM1NiwyNjQ3NywyNjY1NywyNjc3NSwyNzA4MywyNzc0MywyNzk0NiwyODAwOSwyODIw''@;'; put 'put ''NywyODMxNywzMDAwMiwzMDM0MywzMDgyOCwzMTI5NSwzMTk2OCwzMjAwNSwzMjAyNCwzMjA5NCwzMjE3NywzMjc4OSwzMjc3MSwzMjk0MywzMjk0NSwzMzEwOCwzMzE2NywzMzMyMiwzMzYxOCwzNDg5MiwzNDkxMywzNTYxMSwzNjAwMiwzNjA5MiwzNzA2NiwzNzIzNywzNzQ4OSwzMDc4Mywz''@;'; put 'put ''NzYyOCwzODMwOCwzODQ3NywzODkxNywzOTMyMSwzOTY0MCw0MDI1MSwyMTA4MywyMTE2MywyMTQ5NSwyMTUxMiwyMjc0MSwyNTMzNSwyODY0MCwzNTk0NiwzNjcwMyw0MDYzMywyMDgxMSwyMTA1MSwyMTU3OCwyMjI2OSwzMTI5NiwzNzIzOSw0MDI4OCw0MDY1OCwyOTUwOCwyODQyNSwzMzEz''@;'; put 'put ''NiwyOTk2OSwyNDU3MywyNDc5NCwzOTU5MiwyOTQwMywzNjc5NiwyNzQ5MiwzODkxNSwyMDE3MCwyMjI1NiwyMjM3MiwyMjcxOCwyMzEzMCwyNDY4MCwyNTAzMSwyNjEyNywyNjExOCwyNjY4MSwyNjgwMSwyODE1MSwzMDE2NSwzMjA1OCwzMzM5MCwzOTc0NiwyMDEyMywyMDMwNCwyMTQ0OSwy''@;'; put 'put ''MTc2NiwyMzkxOSwyNDAzOCwyNDA0NiwyNjYxOSwyNzgwMSwyOTgxMSwzMDcyMiwzNTQwOCwzNzc4MiwzNTAzOSwyMjM1MiwyNDIzMSwyNTM4NywyMDY2MSwyMDY1MiwyMDg3NywyNjM2OCwyMTcwNSwyMjYyMiwyMjk3MSwyMzQ3MiwyNDQyNSwyNTE2NSwyNTUwNSwyNjY4NSwyNzUwNywyODE2''@;'; put 'put ''OCwyODc5NywzNzMxOSwyOTMxMiwzMDc0MSwzMDc1OCwzMTA4NSwyNTk5OCwzMjA0OCwzMzc1NiwzNTAwOSwzNjYxNywzODU1NSwyMTA5MiwyMjMxMiwyNjQ0OCwzMjYxOCwzNjAwMSwyMDkxNiwyMjMzOCwzODQ0MiwyMjU4NiwyNzAxOCwzMjk0OCwyMTY4MiwyMzgyMiwyMjUyNCwzMDg2OSw0''@;'; put 'put ''MDQ0MiwyMDMxNiwyMTA2NiwyMTY0MywyNTY2MiwyNjE1MiwyNjM4OCwyNjYxMywzMTM2NCwzMTU3NCwzMjAzNCwzNzY3OSwyNjcxNiwzOTg1MywzMTU0NSwyMTI3MywyMDg3NCwyMTA0NywyMzUxOSwyNTMzNCwyNTc3NCwyNTgzMCwyNjQxMywyNzU3OCwzNDIxNywzODYwOSwzMDM1MiwzOTg5''@;'; put 'put ''NCwyNTQyMCwzNzYzOCwzOTg1MSwzMDM5OSwyNjE5NCwxOTk3NywyMDYzMiwyMTQ0MiwyMzY2NSwyNDgwOCwyNTc0NiwyNTk1NSwyNjcxOSwyOTE1OCwyOTY0MiwyOTk4NywzMTYzOSwzMjM4NiwzNDQ1MywzNTcxNSwzNjA1OSwzNzI0MCwzOTE4NCwyNjAyOCwyNjI4MywyNzUzMSwyMDE4MSwy''@;'; put 'put ''MDE4MCwyMDI4MiwyMDM1MSwyMTA1MCwyMTQ5NiwyMTQ5MCwyMTk4NywyMjIzNSwyMjc2MywyMjk4NywyMjk4NSwyMzAzOSwyMzM3NiwyMzYyOSwyNDA2NiwyNDEwNywyNDUzNSwyNDYwNSwyNTM1MSwyNTkwMywyMzM4OCwyNjAzMSwyNjA0NSwyNjA4OCwyNjUyNSwyNzQ5MCwyNzUxNSwyNzY2''@;'; put 'put ''MywyOTUwOSwzMTA0OSwzMTE2OSwzMTk5MiwzMjAyNSwzMjA0MywzMjkzMCwzMzAyNiwzMzI2NywzNTIyMiwzNTQyMiwzNTQzMywzNTQzMCwzNTQ2OCwzNTU2NiwzNjAzOSwzNjA2MCwzODYwNCwzOTE2NCwyNzUwMywyMDEwNywyMDI4NCwyMDM2NSwyMDgxNiwyMzM4MywyMzU0NiwyNDkwNCwy''@;'; put 'put ''NTM0NSwyNjE3OCwyNzQyNSwyODM2MywyNzgzNSwyOTI0NiwyOTg4NSwzMDE2NCwzMDkxMywzMTAzNCwzMjc4MCwzMjgxOSwzMzI1OCwzMzk0MCwzNjc2NiwyNzcyOCw0MDU3NSwyNDMzNSwzNTY3Miw0MDIzNSwzMTQ4MiwzNjYwMCwyMzQzNywzODYzNSwxOTk3MSwyMTQ4OSwyMjUxOSwyMjgz''@;'; put 'put ''MywyMzI0MSwyMzQ2MCwyNDcxMywyODI4NywyODQyMiwzMDE0MiwzNjA3NCwyMzQ1NSwzNDA0OCwzMTcxMiwyMDU5NCwyNjYxMiwzMzQzNywyMzY0OSwzNDEyMiwzMjI4NiwzMzI5NCwyMDg4OSwyMzU1NiwyNTQ0OCwzNjE5OCwyNjAxMiwyOTAzOCwzMTAzOCwzMjAyMywzMjc3MywzNTYxMywz''@;'; put 'put ''NjU1NCwzNjk3NCwzNDUwMywzNzAzNCwyMDUxMSwyMTI0MiwyMzYxMCwyNjQ1MSwyODc5NiwyOTIzNywzNzE5NiwzNzMyMCwzNzY3NSwzMzUwOSwyMzQ5MCwyNDM2OSwyNDgyNSwyMDAyNywyMTQ2MiwyMzQzMiwyNTE2MywyNjQxNywyNzUzMCwyOTQxNywyOTY2NCwzMTI3OCwzMzEzMSwzNjI1''@;'; put 'put ''OSwzNzIwMiwzOTMxOCwyMDc1NCwyMTQ2MywyMTYxMCwyMzU1MSwyNTQ4MCwyNzE5MywzMjE3MiwzODY1NiwyMjIzNCwyMTQ1NCwyMTYwOCwyMzQ0NywyMzYwMSwyNDAzMCwyMDQ2MiwyNDgzMywyNTM0MiwyNzk1NCwzMTE2OCwzMTE3OSwzMjA2NiwzMjMzMywzMjcyMiwzMzI2MSwzMzMxMSwz''@;'; put 'put ''MzkzNiwzNDg4NiwzNTE4NiwzNTcyOCwzNjQ2OCwzNjY1NSwzNjkxMywzNzE5NSwzNzIyOCwzODU5OCwzNzI3NiwyMDE2MCwyMDMwMywyMDgwNSwyMTMxMywyNDQ2NywyNTEwMiwyNjU4MCwyNzcxMywyODE3MSwyOTUzOSwzMjI5NCwzNzMyNSwzNzUwNywyMTQ2MCwyMjgwOSwyMzQ4NywyODEx''@;'; put 'put ''MywzMTA2OSwzMjMwMiwzMTg5OSwyMjY1NCwyOTA4NywyMDk4NiwzNDg5OSwzNjg0OCwyMDQyNiwyMzgwMywyNjE0OSwzMDYzNiwzMTQ1OSwzMzMwOCwzOTQyMywyMDkzNCwyNDQ5MCwyNjA5MiwyNjk5MSwyNzUyOSwyODE0NywyODMxMCwyODUxNiwzMDQ2MiwzMjAyMCwyNDAzMywzNjk4MSwz''@;'; put 'put ''NzI1NSwzODkxOCwyMDk2NiwyMTAyMSwyNTE1MiwyNjI1NywyNjMyOSwyODE4NiwyNDI0NiwzMjIxMCwzMjYyNiwyNjM2MCwzNDIyMywzNDI5NSwzNTU3NiwyMTE2MSwyMTQ2NSwyMjg5OSwyNDIwNywyNDQ2NCwyNDY2MSwzNzYwNCwzODUwMCwyMDY2MywyMDc2NywyMTIxMywyMTI4MCwyMTMx''@;'; put 'put ''OSwyMTQ4NCwyMTczNiwyMTgzMCwyMTgwOSwyMjAzOSwyMjg4OCwyMjk3NCwyMzEwMCwyMzQ3NywyMzU1OCwyMzU2NywyMzU2OSwyMzU3OCwyNDE5NiwyNDIwMiwyNDI4OCwyNDQzMiwyNTIxNSwyNTIyMCwyNTMwNywyNTQ4NCwyNTQ2MywyNjExOSwyNjEyNCwyNjE1NywyNjIzMCwyNjQ5NCwy''@;'; put 'put ''Njc4NiwyNzE2NywyNzE4OSwyNzgzNiwyODA0MCwyODE2OSwyODI0OCwyODk4OCwyODk2NiwyOTAzMSwzMDE1MSwzMDQ2NSwzMDgxMywzMDk3NywzMTA3NywzMTIxNiwzMTQ1NiwzMTUwNSwzMTkxMSwzMjA1NywzMjkxOCwzMzc1MCwzMzkzMSwzNDEyMSwzNDkwOSwzNTA1OSwzNTM1OSwzNTM4''@;'; put 'put ''OCwzNTQxMiwzNTQ0MywzNTkzNywzNjA2MiwzNzI4NCwzNzQ3OCwzNzc1OCwzNzkxMiwzODU1NiwzODgwOCwxOTk3OCwxOTk3NiwxOTk5OCwyMDA1NSwyMDg4NywyMTEwNCwyMjQ3OCwyMjU4MCwyMjczMiwyMzMzMCwyNDEyMCwyNDc3MywyNTg1NCwyNjQ2NSwyNjQ1NCwyNzk3MiwyOTM2Niwz''@;'; put 'put ''MDA2NywzMTMzMSwzMzk3NiwzNTY5OCwzNzMwNCwzNzY2NCwyMjA2NSwyMjUxNiwzOTE2NiwyNTMyNSwyNjg5MywyNzU0MiwyOTE2NSwzMjM0MCwzMjg4NywzMzM5NCwzNTMwMiwzOTEzNSwzNDY0NSwzNjc4NSwyMzYxMSwyMDI4MCwyMDQ0OSwyMDQwNSwyMTc2NywyMzA3MiwyMzUxNywyMzUy''@;'; put 'put ''OSwyNDUxNSwyNDkxMCwyNTM5MSwyNjAzMiwyNjE4NywyNjg2MiwyNzAzNSwyODAyNCwyODE0NSwzMDAwMywzMDEzNywzMDQ5NSwzMTA3MCwzMTIwNiwzMjA1MSwzMzI1MSwzMzQ1NSwzNDIxOCwzNTI0MiwzNTM4NiwzNjUyMywzNjc2MywzNjkxNCwzNzM0MSwzODY2MywyMDE1NCwyMDE2MSwy''@;'; put 'put ''MDk5NSwyMjY0NSwyMjc2NCwyMzU2MywyOTk3OCwyMzYxMywzMzEwMiwzNTMzOCwzNjgwNSwzODQ5OSwzODc2NSwzMTUyNSwzNTUzNSwzODkyMCwzNzIxOCwyMjI1OSwyMTQxNiwzNjg4NywyMTU2MSwyMjQwMiwyNDEwMSwyNTUxMiwyNzcwMCwyODgxMCwzMDU2MSwzMTg4MywzMjczNiwzNDky''@;'; put 'put ''OCwzNjkzMCwzNzIwNCwzNzY0OCwzNzY1NiwzODU0MywyOTc5MCwzOTYyMCwyMzgxNSwyMzkxMywyNTk2OCwyNjUzMCwzNjI2NCwzODYxOSwyNTQ1NCwyNjQ0MSwyNjkwNSwzMzczMywzODkzNSwzODU5MiwzNTA3MCwyODU0OCwyNTcyMiwyMzU0NCwxOTk5MCwyODcxNiwzMDA0NSwyNjE1OSwy''@;'; put 'put ''MDkzMiwyMTA0NiwyMTIxOCwyMjk5NSwyNDQ0OSwyNDYxNSwyNTEwNCwyNTkxOSwyNTk3MiwyNjE0MywyNjIyOCwyNjg2NiwyNjY0NiwyNzQ5MSwyODE2NSwyOTI5OCwyOTk4MywzMDQyNywzMTkzNCwzMjg1NCwyMjc2OCwzNTA2OSwzNTE5OSwzNTQ4OCwzNTQ3NSwzNTUzMSwzNjg5MywzNzI2''@;'; put 'put ''NiwzODczOCwzODc0NSwyNTk5MywzMTI0NiwzMzAzMCwzODU4NywyNDEwOSwyNDc5NiwyNTExNCwyNjAyMSwyNjEzMiwyNjUxMiwzMDcwNywzMTMwOSwzMTgyMSwzMjMxOCwzMzAzNCwzNjAxMiwzNjE5NiwzNjMyMSwzNjQ0NywzMDg4OSwyMDk5OSwyNTMwNSwyNTUwOSwyNTY2NiwyNTI0MCwz''@;'; put 'put ''NTM3MywzMTM2MywzMTY4MCwzNTUwMCwzODYzNCwzMjExOCwzMzI5MiwzNDYzMywyMDE4NSwyMDgwOCwyMTMxNSwyMTM0NCwyMzQ1OSwyMzU1NCwyMzU3NCwyNDAyOSwyNTEyNiwyNTE1OSwyNTc3NiwyNjY0MywyNjY3NiwyNzg0OSwyNzk3MywyNzkyNywyNjU3OSwyODUwOCwyOTAwNiwyOTA1''@;'; put 'put ''MywyNjA1OSwzMTM1OSwzMTY2MSwzMjIxOCwzMjMzMCwzMjY4MCwzMzE0NiwzMzMwNywzMzMzNywzNDIxNCwzNTQzOCwzNjA0NiwzNjM0MSwzNjk4NCwzNjk4MywzNzU0OSwzNzUyMSwzODI3NSwzOTg1NCwyMTA2OSwyMTg5MiwyODQ3MiwyODk4MiwyMDg0MCwzMTEwOSwzMjM0MSwzMzIwMywz''@;'; put 'put ''MTk1MCwyMjA5MiwyMjYwOSwyMzcyMCwyNTUxNCwyNjM2NiwyNjM2NSwyNjk3MCwyOTQwMSwzMDA5NSwzMDA5NCwzMDk5MCwzMTA2MiwzMTE5OSwzMTg5NSwzMjAzMiwzMjA2OCwzNDMxMSwzNTM4MCwzODQ1OSwzNjk2MSw0MDczNiwyMDcxMSwyMTEwOSwyMTQ1MiwyMTQ3NCwyMDQ4OSwyMTkz''@;'; put 'put ''MCwyMjc2NiwyMjg2MywyOTI0NSwyMzQzNSwyMzY1MiwyMTI3NywyNDgwMywyNDgxOSwyNTQzNiwyNTQ3NSwyNTQwNywyNTUzMSwyNTgwNSwyNjA4OSwyNjM2MSwyNDAzNSwyNzA4NSwyNzEzMywyODQzNywyOTE1NywyMDEwNSwzMDE4NSwzMDQ1NiwzMTM3OSwzMTk2NywzMjIwNywzMjE1Niwz''@;'; put 'put ''Mjg2NSwzMzYwOSwzMzYyNCwzMzkwMCwzMzk4MCwzNDI5OSwzNTAxMywzNjIwOCwzNjg2NSwzNjk3MywzNzc4MywzODY4NCwzOTQ0MiwyMDY4NywyMjY3OSwyNDk3NCwzMzIzNSwzNDEwMSwzNjEwNCwzNjg5NiwyMDQxOSwyMDU5NiwyMTA2MywyMTM2MywyNDY4NywyNTQxNywyNjQ2MywyODIw''@;'; put 'put ''NCwzNjI3NSwzNjg5NSwyMDQzOSwyMzY0NiwzNjA0MiwyNjA2MywzMjE1NCwyMTMzMCwzNDk2NiwyMDg1NCwyNTUzOSwyMzM4NCwyMzQwMywyMzU2MiwyNTYxMywyNjQ0OSwzNjk1NiwyMDE4MiwyMjgxMCwyMjgyNiwyNzc2MCwzNTQwOSwyMTgyMiwyMjU0OSwyMjk0OSwyNDgxNiwyNTE3MSwy''@;'; put 'put ''NjU2MSwzMzMzMywyNjk2NSwzODQ2NCwzOTM2NCwzOTQ2NCwyMDMwNywyMjUzNCwyMzU1MCwzMjc4NCwyMzcyOSwyNDExMSwyNDQ1MywyNDYwOCwyNDkwNywyNTE0MCwyNjM2NywyNzg4OCwyODM4MiwzMjk3NCwzMzE1MSwzMzQ5MiwzNDk1NSwzNjAyNCwzNjg2NCwzNjkxMCwzODUzOCw0MDY2''@;'; put 'put ''NywzOTg5OSwyMDE5NSwyMTQ4OCwyMjgyMywzMTUzMiwzNzI2MSwzODk4OCw0MDQ0MSwyODM4MSwyODcxMSwyMTMzMSwyMTgyOCwyMzQyOSwyNTE3NiwyNTI0NiwyNTI5OSwyNzgxMCwyODY1NSwyOTczMCwzNTM1MSwzNzk0NCwyODYwOSwzNTU4MiwzMzU5MiwyMDk2NywzNDU1MiwyMTQ4Miwy''@;'; put 'put ''MTQ4MSwyMDI5NCwzNjk0OCwzNjc4NCwyMjg5MCwzMzA3MywyNDA2MSwzMTQ2NiwzNjc5OSwyNjg0MiwzNTg5NSwyOTQzMiw0MDAwOCwyNzE5NywzNTUwNCwyMDAyNSwyMTMzNiwyMjAyMiwyMjM3NCwyNTI4NSwyNTUwNiwyNjA4NiwyNzQ3MCwyODEyOSwyODI1MSwyODg0NSwzMDcwMSwzMTQ3''@;'; put 'put ''MSwzMTY1OCwzMjE4NywzMjgyOSwzMjk2NiwzNDUwNywzNTQ3NywzNzcyMywyMjI0MywyMjcyNywyNDM4MiwyNjAyOSwyNjI2MiwyNzI2NCwyNzU3MywzMDAwNywzNTUyNywyMDUxNiwzMDY5MywyMjMyMCwyNDM0NywyNDY3NywyNjIzNCwyNzc0NCwzMDE5NiwzMTI1OCwzMjYyMiwzMzI2OCwz''@;'; put 'put ''NDU4NCwzNjkzMywzOTM0NywzMTY4OSwzMDA0NCwzMTQ4MSwzMTU2OSwzMzk4OCwzNjg4MCwzMTIwOSwzMTM3OCwzMzU5MCwyMzI2NSwzMDUyOCwyMDAxMywyMDIxMCwyMzQ0OSwyNDU0NCwyNTI3NywyNjE3MiwyNjYwOSwyNzg4MCwzNDQxMSwzNDkzNSwzNTM4NywzNzE5OCwzNzYxOSwzOTM3''@;'; put 'put ''NiwyNzE1OSwyODcxMCwyOTQ4MiwzMzUxMSwzMzg3OSwzNjAxNSwxOTk2OSwyMDgwNiwyMDkzOSwyMTg5OSwyMzU0MSwyNDA4NiwyNDExNSwyNDE5MywyNDM0MCwyNDM3MywyNDQyNywyNDUwMCwyNTA3NCwyNTM2MSwyNjI3NCwyNjM5NywyODUyNiwyOTI2NiwzMDAxMCwzMDUyMiwzMjg4NCwz''@;'; put 'put ''MzA4MSwzMzE0NCwzNDY3OCwzNTUxOSwzNTU0OCwzNjIyOSwzNjMzOSwzNzUzMCwzODI2MywzODkxNCw0MDE2NSwyMTE4OSwyNTQzMSwzMDQ1MiwyNjM4OSwyNzc4NCwyOTY0NSwzNjAzNSwzNzgwNiwzODUxNSwyNzk0MSwyMjY4NCwyNjg5NCwyNzA4NCwzNjg2MSwzNzc4NiwzMDE3MSwzNjg5''@;'; put 'put ''MCwyMjYxOCwyNjYyNiwyNTUyNCwyNzEzMSwyMDI5MSwyODQ2MCwyNjU4NCwzNjc5NSwzNDA4NiwzMjE4MCwzNzcxNiwyNjk0MywyODUyOCwyMjM3OCwyMjc3NSwyMzM0MCwzMjA0NCwyOTIyNiwyMTUxNCwzNzM0Nyw0MDM3MiwyMDE0MSwyMDMwMiwyMDU3MiwyMDU5NywyMTA1OSwzNTk5OCwy''@;'; put 'put ''MTU3NiwyMjU2NCwyMzQ1MCwyNDA5MywyNDIxMywyNDIzNywyNDMxMSwyNDM1MSwyNDcxNiwyNTI2OSwyNTQwMiwyNTU1MiwyNjc5OSwyNzcxMiwzMDg1NSwzMTExOCwzMTI0MywzMjIyNCwzMzM1MSwzNTMzMCwzNTU1OCwzNjQyMCwzNjg4MywzNzA0OCwzNzE2NSwzNzMzNiw0MDcxOCwyNzg3''@;'; put 'put ''NywyNTY4OCwyNTgyNiwyNTk3MywyODQwNCwzMDM0MCwzMTUxNSwzNjk2OSwzNzg0MSwyODM0NiwyMTc0NiwyNDUwNSwyNTc2NCwzNjY4NSwzNjg0NSwzNzQ0NCwyMDg1NiwyMjYzNSwyMjgyNSwyMzYzNywyNDIxNSwyODE1NSwzMjM5OSwyOTk4MCwzNjAyOCwzNjU3OCwzOTAwMywyODg1Nywy''@;'; put 'put ''MDI1MywyNzU4MywyODU5MywzZTQsMzg2NTEsMjA4MTQsMjE1MjAsMjI1ODEsMjI2MTUsMjI5NTYsMjM2NDgsMjQ0NjYsMjYwMDcsMjY0NjAsMjgxOTMsMzAzMzEsMzM3NTksMzYwNzcsMzY4ODQsMzcxMTcsMzc3MDksMzA3NTcsMzA3NzgsMjExNjIsMjQyMzAsMjIzMDMsMjI5MDAsMjQ1OTQs''@;'; put 'put ''MjA0OTgsMjA4MjYsMjA5MDgsMjA5NDEsMjA5OTIsMjE3NzYsMjI2MTIsMjI2MTYsMjI4NzEsMjM0NDUsMjM3OTgsMjM5NDcsMjQ3NjQsMjUyMzcsMjU2NDUsMjY0ODEsMjY2OTEsMjY4MTIsMjY4NDcsMzA0MjMsMjgxMjAsMjgyNzEsMjgwNTksMjg3ODMsMjkxMjgsMjQ0MDMsMzAxNjgsMzEw''@;'; put 'put ''OTUsMzE1NjEsMzE1NzIsMzE1NzAsMzE5NTgsMzIxMTMsMjEwNDAsMzM4OTEsMzQxNTMsMzQyNzYsMzUzNDIsMzU1ODgsMzU5MTAsMzYzNjcsMzY4NjcsMzY4NzksMzc5MTMsMzg1MTgsMzg5NTcsMzk0NzIsMzgzNjAsMjA2ODUsMjEyMDUsMjE1MTYsMjI1MzAsMjM1NjYsMjQ5OTksMjU3NTgs''@;'; put 'put ''Mjc5MzQsMzA2NDMsMzE0NjEsMzMwMTIsMzM3OTYsMzY5NDcsMzc1MDksMjM3NzYsNDAxOTksMjEzMTEsMjQ0NzEsMjQ0OTksMjgwNjAsMjkzMDUsMzA1NjMsMzExNjcsMzE3MTYsMjc2MDIsMjk0MjAsMzU1MDEsMjY2MjcsMjcyMzMsMjA5ODQsMzEzNjEsMjY5MzIsMjM2MjYsNDAxODIsMzM1''@;'; put 'put ''MTUsMjM0OTMsMzcxOTMsMjg3MDIsMjIxMzYsMjM2NjMsMjQ3NzUsMjU5NTgsMjc3ODgsMzU5MzAsMzY5MjksMzg5MzEsMjE1ODUsMjYzMTEsMzczODksMjI4NTYsMzcwMjcsMjA4NjksMjAwNDUsMjA5NzAsMzQyMDEsMzU1OTgsMjg3NjAsMjU0NjYsMzc3MDcsMjY5NzgsMzkzNDgsMzIyNjAs''@;'; put 'put ''MzAwNzEsMjEzMzUsMjY5NzYsMzY1NzUsMzg2MjcsMjc3NDEsMjAxMDgsMjM2MTIsMjQzMzYsMzY4NDEsMjEyNTAsMzYwNDksMzI5MDUsMzQ0MjUsMjQzMTksMjYwODUsMjAwODMsMjA4MzcsMjI5MTQsMjM2MTUsMzg4OTQsMjAyMTksMjI5MjIsMjQ1MjUsMzU0NjksMjg2NDEsMzExNTIsMzEw''@;'; put 'put ''NzQsMjM1MjcsMzM5MDUsMjk0ODMsMjkxMDUsMjQxODAsMjQ1NjUsMjU0NjcsMjU3NTQsMjkxMjMsMzE4OTYsMjAwMzUsMjQzMTYsMjAwNDMsMjI0OTIsMjIxNzgsMjQ3NDUsMjg2MTEsMzIwMTMsMzMwMjEsMzMwNzUsMzMyMTUsMzY3ODYsMzUyMjMsMzQ0NjgsMjQwNTIsMjUyMjYsMjU3NzMs''@;'; put 'put ''MzUyMDcsMjY0ODcsMjc4NzQsMjc5NjYsMjk3NTAsMzA3NzIsMjMxMTAsMzI2MjksMzM0NTMsMzkzNDAsMjA0NjcsMjQyNTksMjUzMDksMjU0OTAsMjU5NDMsMjY0NzksMzA0MDMsMjkyNjAsMzI5NzIsMzI5NTQsMzY2NDksMzcxOTcsMjA0OTMsMjI1MjEsMjMxODYsMjY3NTcsMjY5OTUsMjkw''@;'; put 'put ''MjgsMjk0MzcsMzYwMjMsMjI3NzAsMzYwNjQsMzg1MDYsMzY4ODksMzQ2ODcsMzEyMDQsMzA2OTUsMzM4MzMsMjAyNzEsMjEwOTMsMjEzMzgsMjUyOTMsMjY1NzUsMjc4NTAsMzAzMzMsMzE2MzYsMzE4OTMsMzMzMzQsMzQxODAsMzY4NDMsMjYzMzMsMjg0NDgsMjkxOTAsMzIyODMsMzM3MDcs''@;'; put 'put ''MzkzNjEsNDA2MTQsMjA5ODksMzE2NjUsMzA4MzQsMzE2NzIsMzI5MDMsMzE1NjAsMjczNjgsMjQxNjEsMzI5MDgsMzAwMzMsMzAwNDgsMjA4NDMsMzc0NzQsMjgzMDAsMzAzMzAsMzcyNzEsMzk2NTgsMjAyNDAsMzI2MjQsMjUyNDQsMzE1NjcsMzgzMDksNDAxNjksMjIxMzgsMjI2MTcsMzQ1''@;'; put 'put ''MzIsMzg1ODgsMjAyNzYsMjEwMjgsMjEzMjIsMjE0NTMsMjE0NjcsMjQwNzAsMjU2NDQsMjYwMDEsMjY0OTUsMjc3MTAsMjc3MjYsMjkyNTYsMjkzNTksMjk2NzcsMzAwMzYsMzIzMjEsMzMzMjQsMzQyODEsMzYwMDksMzE2ODQsMzczMTgsMjkwMzMsMzg5MzAsMzkxNTEsMjU0MDUsMjYyMTcs''@;'; put 'put ''MzAwNTgsMzA0MzYsMzA5MjgsMzQxMTUsMzQ1NDIsMjEyOTAsMjEzMjksMjE1NDIsMjI5MTUsMjQxOTksMjQ0NDQsMjQ3NTQsMjUxNjEsMjUyMDksMjUyNTksMjZlMywyNzYwNCwyNzg1MiwzMDEzMCwzMDM4MiwzMDg2NSwzMTE5MiwzMjIwMywzMjYzMSwzMjkzMywzNDk4NywzNTUxMywzNjAy''@;'; put 'put ''NywzNjk5MSwzODc1MCwzOTEzMSwyNzE0NywzMTgwMCwyMDYzMywyMzYxNCwyNDQ5NCwyNjUwMywyNzYwOCwyOTc0OSwzMDQ3MywzMjY1NCw0MDc2MywyNjU3MCwzMTI1NSwyMTMwNSwzMDA5MSwzOTY2MSwyNDQyMiwzMzE4MSwzMzc3NywzMjkyMCwyNDM4MCwyNDUxNywzMDA1MCwzMTU1OCwz''@;'; put 'put ''NjkyNCwyNjcyNywyMzAxOSwyMzE5NSwzMjAxNiwzMDMzNCwzNTYyOCwyMDQ2OSwyNDQyNiwyNzE2MSwyNzcwMywyODQxOCwyOTkyMiwzMTA4MCwzNDkyMCwzNTQxMywzNTk2MSwyNDI4NywyNTU1MSwzMDE0OSwzMTE4NiwzMzQ5NSwzNzY3MiwzNzYxOCwzMzk0OCwzNDU0MSwzOTk4MSwyMTY5''@;'; put 'put ''NywyNDQyOCwyNTk5NiwyNzk5NiwyODY5MywzNjAwNywzNjA1MSwzODk3MSwyNTkzNSwyOTk0MiwxOTk4MSwyMDE4NCwyMjQ5NiwyMjgyNywyMzE0MiwyMzUwMCwyMDkwNCwyNDA2NywyNDIyMCwyNDU5OCwyNTIwNiwyNTk3NSwyNjAyMywyNjIyMiwyODAxNCwyOTIzOCwzMTUyNiwzMzEwNCwz''@;'; put 'put ''MzE3OCwzMzQzMywzNTY3NiwzNmUzLDM2MDcwLDM2MjEyLDM4NDI4LDM4NDY4LDIwMzk4LDI1NzcxLDI3NDk0LDMzMzEwLDMzODg5LDM0MTU0LDM3MDk2LDIzNTUzLDI2OTYzLDM5MDgwLDMzOTE0LDM0MTM1LDIwMjM5LDIxMTAzLDI0NDg5LDI0MTMzLDI2MzgxLDMxMTE5LDMzMTQ1LDM1MDc5''@;'; put 'put ''LDM1MjA2LDI4MTQ5LDI0MzQzLDI1MTczLDI3ODMyLDIwMTc1LDI5Mjg5LDM5ODI2LDIwOTk4LDIxNTYzLDIyMTMyLDIyNzA3LDI0OTk2LDI1MTk4LDI4OTU0LDIyODk0LDMxODgxLDMxOTY2LDMyMDI3LDM4NjQwLDI1OTkxLDMyODYyLDE5OTkzLDIwMzQxLDIwODUzLDIyNTkyLDI0MTYzLDI0''@;'; put 'put ''MTc5LDI0MzMwLDI2NTY0LDIwMDA2LDM0MTA5LDM4MjgxLDM4NDkxLDMxODU5LDM4OTEzLDIwNzMxLDIyNzIxLDMwMjk0LDMwODg3LDIxMDI5LDMwNjI5LDM0MDY1LDMxNjIyLDIwNTU5LDIyNzkzLDI5MjU1LDMxNjg3LDMyMjMyLDM2Nzk0LDM2ODIwLDM2OTQxLDIwNDE1LDIxMTkzLDIzMDgx''@;'; put 'put ''LDI0MzIxLDM4ODI5LDIwNDQ1LDMzMzAzLDM3NjEwLDIyMjc1LDI1NDI5LDI3NDk3LDI5OTk1LDM1MDM2LDM2NjI4LDMxMjk4LDIxMjE1LDIyNjc1LDI0OTE3LDI1MDk4LDI2Mjg2LDI3NTk3LDMxODA3LDMzNzY5LDIwNTE1LDIwNDcyLDIxMjUzLDIxNTc0LDIyNTc3LDIyODU3LDIzNDUzLDIz''@;'; put 'put ''NzkyLDIzNzkxLDIzODQ5LDI0MjE0LDI1MjY1LDI1NDQ3LDI1OTE4LDI2MDQxLDI2Mzc5LDI3ODYxLDI3ODczLDI4OTIxLDMwNzcwLDMyMjk5LDMyOTkwLDMzNDU5LDMzODA0LDM0MDI4LDM0NTYyLDM1MDkwLDM1MzcwLDM1OTE0LDM3MDMwLDM3NTg2LDM5MTY1LDQwMTc5LDQwMzAwLDIwMDQ3''@;'; put 'put ''LDIwMTI5LDIwNjIxLDIxMDc4LDIyMzQ2LDIyOTUyLDI0MTI1LDI0NTM2LDI0NTM3LDI1MTUxLDI2MjkyLDI2Mzk1LDI2NTc2LDI2ODM0LDIwODgyLDMyMDMzLDMyOTM4LDMzMTkyLDM1NTg0LDM1OTgwLDM2MDMxLDM3NTAyLDM4NDUwLDIxNTM2LDM4OTU2LDIxMjcxLDIwNjkzLDIxMzQwLDIy''@;'; put 'put ''Njk2LDI1Nzc4LDI2NDIwLDI5Mjg3LDMwNTY2LDMxMzAyLDM3MzUwLDIxMTg3LDI3ODA5LDI3NTI2LDIyNTI4LDI0MTQwLDIyODY4LDI2NDEyLDMyNzYzLDIwOTYxLDMwNDA2LDI1NzA1LDMwOTUyLDM5NzY0LDQwNjM1LDIyNDc1LDIyOTY5LDI2MTUxLDI2NTIyLDI3NTk4LDIxNzM3LDI3MDk3''@;'; put 'put ''LDI0MTQ5LDMzMTgwLDI2NTE3LDM5ODUwLDI2NjIyLDQwMDE4LDI2NzE3LDIwMTM0LDIwNDUxLDIxNDQ4LDI1MjczLDI2NDExLDI3ODE5LDM2ODA0LDIwMzk3LDMyMzY1LDQwNjM5LDE5OTc1LDI0OTMwLDI4Mjg4LDI4NDU5LDM0MDY3LDIxNjE5LDI2NDEwLDM5NzQ5LDI0MDUxLDMxNjM3LDIz''@;'; put 'put ''NzI0LDIzNDk0LDM0NTg4LDI4MjM0LDM0MDAxLDMxMjUyLDMzMDMyLDIyOTM3LDMxODg1LDI3NjY1LDMwNDk2LDIxMjA5LDIyODE4LDI4OTYxLDI5Mjc5LDMwNjgzLDM4Njk1LDQwMjg5LDI2ODkxLDIzMTY3LDIzMDY0LDIwOTAxLDIxNTE3LDIxNjI5LDI2MTI2LDMwNDMxLDM2ODU1LDM3NTI4''@;'; put 'put ''LDQwMTgwLDIzMDE4LDI5Mjc3LDI4MzU3LDIwODEzLDI2ODI1LDMyMTkxLDMyMjM2LDM4NzU0LDQwNjM0LDI1NzIwLDI3MTY5LDMzNTM4LDIyOTE2LDIzMzkxLDI3NjExLDI5NDY3LDMwNDUwLDMyMTc4LDMyNzkxLDMzOTQ1LDIwNzg2LDI2NDA4LDQwNjY1LDMwNDQ2LDI2NDY2LDIxMjQ3LDM5''@;'; put 'put ''MTczLDIzNTg4LDI1MTQ3LDMxODcwLDM2MDE2LDIxODM5LDI0NzU4LDMyMDExLDM4MjcyLDIxMjQ5LDIwMDYzLDIwOTE4LDIyODEyLDI5MjQyLDMyODIyLDM3MzI2LDI0MzU3LDMwNjkwLDIxMzgwLDI0NDQxLDMyMDA0LDM0MjIwLDM1Mzc5LDM2NDkzLDM4NzQyLDI2NjExLDM0MjIyLDM3OTcx''@;'; put 'put ''LDI0ODQxLDI0ODQwLDI3ODMzLDMwMjkwLDM1NTY1LDM2NjY0LDIxODA3LDIwMzA1LDIwNzc4LDIxMTkxLDIxNDUxLDIzNDYxLDI0MTg5LDI0NzM2LDI0OTYyLDI1NTU4LDI2Mzc3LDI2NTg2LDI4MjYzLDI4MDQ0LDI5NDk0LDI5NDk1LDMwMDAxLDMxMDU2LDM1MDI5LDM1NDgwLDM2OTM4LDM3''@;'; put 'put ''MDA5LDM3MTA5LDM4NTk2LDM0NzAxLDIyODA1LDIwMTA0LDIwMzEzLDE5OTgyLDM1NDY1LDM2NjcxLDM4OTI4LDIwNjUzLDI0MTg4LDIyOTM0LDIzNDgxLDI0MjQ4LDI1NTYyLDI1NTk0LDI1NzkzLDI2MzMyLDI2OTU0LDI3MDk2LDI3OTE1LDI4MzQyLDI5MDc2LDI5OTkyLDMxNDA3LDMyNjUw''@;'; put 'put ''LDMyNzY4LDMzODY1LDMzOTkzLDM1MjAxLDM1NjE3LDM2MzYyLDM2OTY1LDM4NTI1LDM5MTc4LDI0OTU4LDI1MjMzLDI3NDQyLDI3Nzc5LDI4MDIwLDMyNzE2LDMyNzY0LDI4MDk2LDMyNjQ1LDM0NzQ2LDM1MDY0LDI2NDY5LDMzNzEzLDM4OTcyLDM4NjQ3LDI3OTMxLDMyMDk3LDMzODUzLDM3''@;'; put 'put ''MjI2LDIwMDgxLDIxMzY1LDIzODg4LDI3Mzk2LDI4NjUxLDM0MjUzLDM0MzQ5LDM1MjM5LDIxMDMzLDIxNTE5LDIzNjUzLDI2NDQ2LDI2NzkyLDI5NzAyLDI5ODI3LDMwMTc4LDM1MDIzLDM1MDQxLDM3MzI0LDM4NjI2LDM4NTIwLDI0NDU5LDI5NTc1LDMxNDM1LDMzODcwLDI1NTA0LDMwMDUz''@;'; put 'put ''LDIxMTI5LDI3OTY5LDI4MzE2LDI5NzA1LDMwMDQxLDMwODI3LDMxODkwLDM4NTM0LDMxNDUyLDQwODQ1LDIwNDA2LDI0OTQyLDI2MDUzLDM0Mzk2LDIwMTAyLDIwMTQyLDIwNjk4LDIwMDAxLDIwOTQwLDIzNTM0LDI2MDA5LDI2NzUzLDI4MDkyLDI5NDcxLDMwMjc0LDMwNjM3LDMxMjYwLDMx''@;'; put 'put ''OTc1LDMzMzkxLDM1NTM4LDM2OTg4LDM3MzI3LDM4NTE3LDM4OTM2LDIxMTQ3LDMyMjA5LDIwNTIzLDIxNDAwLDI2NTE5LDI4MTA3LDI5MTM2LDI5NzQ3LDMzMjU2LDM2NjUwLDM4NTYzLDQwMDIzLDQwNjA3LDI5NzkyLDIyNTkzLDI4MDU3LDMyMDQ3LDM5MDA2LDIwMTk2LDIwMjc4LDIwMzYz''@;'; put 'put ''LDIwOTE5LDIxMTY5LDIzOTk0LDI0NjA0LDI5NjE4LDMxMDM2LDMzNDkxLDM3NDI4LDM4NTgzLDM4NjQ2LDM4NjY2LDQwNTk5LDQwODAyLDI2Mjc4LDI3NTA4LDIxMDE1LDIxMTU1LDI4ODcyLDM1MDEwLDI0MjY1LDI0NjUxLDI0OTc2LDI4NDUxLDI5MDAxLDMxODA2LDMyMjQ0LDMyODc5LDM0''@;'; put 'put ''MDMwLDM2ODk5LDM3Njc2LDIxNTcwLDM5NzkxLDI3MzQ3LDI4ODA5LDM2MDM0LDM2MzM1LDM4NzA2LDIxMTcyLDIzMTA1LDI0MjY2LDI0MzI0LDI2MzkxLDI3MDA0LDI3MDI4LDI4MDEwLDI4NDMxLDI5MjgyLDI5NDM2LDMxNzI1LDMyNzY5LDMyODk0LDM0NjM1LDM3MDcwLDIwODQ1LDQwNTk1''@;'; put 'put ''LDMxMTA4LDMyOTA3LDM3NjgyLDM1NTQyLDIwNTI1LDIxNjQ0LDM1NDQxLDI3NDk4LDM2MDM2LDMzMDMxLDI0Nzg1LDI2NTI4LDQwNDM0LDIwMTIxLDIwMTIwLDM5OTUyLDM1NDM1LDM0MjQxLDM0MTUyLDI2ODgwLDI4Mjg2LDMwODcxLDMzMTA5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjQzMzIsMTk5ODQsMTk5ODksMjAwMTAsMjAwMTcsMjAwMjIsMjAwMjgsMjAwMzEsMjAwMzQsMjAwNTQsMjAwNTYsMjAwOTgsMjAxMDEsMzU5NDcsMjAxMDYsMzMyOTgsMjQzMzMsMjAxMTAsMjAxMjYsMjAxMjcsMjAxMjgsMjAxMzAsMjAxNDQsMjAx''@;'; put 'put ''NDcsMjAxNTAsMjAxNzQsMjAxNzMsMjAxNjQsMjAxNjYsMjAxNjIsMjAxODMsMjAxOTAsMjAyMDUsMjAxOTEsMjAyMTUsMjAyMzMsMjAzMTQsMjAyNzIsMjAzMTUsMjAzMTcsMjAzMTEsMjAyOTUsMjAzNDIsMjAzNjAsMjAzNjcsMjAzNzYsMjAzNDcsMjAzMjksMjAzMzYsMjAzNjksMjAzMzUs''@;'; put 'put ''MjAzNTgsMjAzNzQsMjA3NjAsMjA0MzYsMjA0NDcsMjA0MzAsMjA0NDAsMjA0NDMsMjA0MzMsMjA0NDIsMjA0MzIsMjA0NTIsMjA0NTMsMjA1MDYsMjA1MjAsMjA1MDAsMjA1MjIsMjA1MTcsMjA0ODUsMjAyNTIsMjA0NzAsMjA1MTMsMjA1MjEsMjA1MjQsMjA0NzgsMjA0NjMsMjA0OTcsMjA0''@;'; put 'put ''ODYsMjA1NDcsMjA1NTEsMjYzNzEsMjA1NjUsMjA1NjAsMjA1NTIsMjA1NzAsMjA1NjYsMjA1ODgsMjA2MDAsMjA2MDgsMjA2MzQsMjA2MTMsMjA2NjAsMjA2NTgsMjA2ODEsMjA2ODIsMjA2NTksMjA2NzQsMjA2OTQsMjA3MDIsMjA3MDksMjA3MTcsMjA3MDcsMjA3MTgsMjA3MjksMjA3MjUs''@;'; put 'put ''MjA3NDUsMjA3MzcsMjA3MzgsMjA3NTgsMjA3NTcsMjA3NTYsMjA3NjIsMjA3NjksMjA3OTQsMjA3OTEsMjA3OTYsMjA3OTUsMjA3OTksMjA4MDAsMjA4MTgsMjA4MTIsMjA4MjAsMjA4MzQsMzE0ODAsMjA4NDEsMjA4NDIsMjA4NDYsMjA4NjQsMjA4NjYsMjIyMzIsMjA4NzYsMjA4NzMsMjA4''@;'; put 'put ''NzksMjA4ODEsMjA4ODMsMjA4ODUsMjA4ODYsMjA5MDAsMjA5MDIsMjA4OTgsMjA5MDUsMjA5MDYsMjA5MDcsMjA5MTUsMjA5MTMsMjA5MTQsMjA5MTIsMjA5MTcsMjA5MjUsMjA5MzMsMjA5MzcsMjA5NTUsMjA5NjAsMzQzODksMjA5NjksMjA5NzMsMjA5NzYsMjA5ODEsMjA5OTAsMjA5OTYs''@;'; put 'put ''MjEwMDMsMjEwMTIsMjEwMDYsMjEwMzEsMjEwMzQsMjEwMzgsMjEwNDMsMjEwNDksMjEwNzEsMjEwNjAsMjEwNjcsMjEwNjgsMjEwODYsMjEwNzYsMjEwOTgsMjExMDgsMjEwOTcsMjExMDcsMjExMTksMjExMTcsMjExMzMsMjExNDAsMjExMzgsMjExMDUsMjExMjgsMjExMzcsMzY3NzYsMzY3''@;'; put 'put ''NzUsMjExNjQsMjExNjUsMjExODAsMjExNzMsMjExODUsMjExOTcsMjEyMDcsMjEyMTQsMjEyMTksMjEyMjIsMzkxNDksMjEyMTYsMjEyMzUsMjEyMzcsMjEyNDAsMjEyNDEsMjEyNTQsMjEyNTYsMzAwMDgsMjEyNjEsMjEyNjQsMjEyNjMsMjEyNjksMjEyNzQsMjEyODMsMjEyOTUsMjEyOTcs''@;'; put 'put ''MjEyOTksMjEzMDQsMjEzMTIsMjEzMTgsMjEzMTcsMTk5OTEsMjEzMjEsMjEzMjUsMjA5NTAsMjEzNDIsMjEzNTMsMjEzNTgsMjI4MDgsMjEzNzEsMjEzNjcsMjEzNzgsMjEzOTgsMjE0MDgsMjE0MTQsMjE0MTMsMjE0MjIsMjE0MjQsMjE0MzAsMjE0NDMsMzE3NjIsMzg2MTcsMjE0NzEsMjYz''@;'; put 'put ''NjQsMjkxNjYsMjE0ODYsMjE0ODAsMjE0ODUsMjE0OTgsMjE1MDUsMjE1NjUsMjE1NjgsMjE1NDgsMjE1NDksMjE1NjQsMjE1NTAsMjE1NTgsMjE1NDUsMjE1MzMsMjE1ODIsMjE2NDcsMjE2MjEsMjE2NDYsMjE1OTksMjE2MTcsMjE2MjMsMjE2MTYsMjE2NTAsMjE2MjcsMjE2MzIsMjE2MjIs''@;'; put 'put ''MjE2MzYsMjE2NDgsMjE2MzgsMjE3MDMsMjE2NjYsMjE2ODgsMjE2NjksMjE2NzYsMjE3MDAsMjE3MDQsMjE2NzIsMjE2NzUsMjE2OTgsMjE2NjgsMjE2OTQsMjE2OTIsMjE3MjAsMjE3MzMsMjE3MzQsMjE3NzUsMjE3ODAsMjE3NTcsMjE3NDIsMjE3NDEsMjE3NTQsMjE3MzAsMjE4MTcsMjE4''@;'; put 'put ''MjQsMjE4NTksMjE4MzYsMjE4MDYsMjE4NTIsMjE4MjksMjE4NDYsMjE4NDcsMjE4MTYsMjE4MTEsMjE4NTMsMjE5MTMsMjE4ODgsMjE2NzksMjE4OTgsMjE5MTksMjE4ODMsMjE4ODYsMjE5MTIsMjE5MTgsMjE5MzQsMjE4ODQsMjE4OTEsMjE5MjksMjE4OTUsMjE5MjgsMjE5NzgsMjE5NTcs''@;'; put 'put ''MjE5ODMsMjE5NTYsMjE5ODAsMjE5ODgsMjE5NzIsMjIwMzYsMjIwMDcsMjIwMzgsMjIwMTQsMjIwMTMsMjIwNDMsMjIwMDksMjIwOTQsMjIwOTYsMjkxNTEsMjIwNjgsMjIwNzAsMjIwNjYsMjIwNzIsMjIxMjMsMjIxMTYsMjIwNjMsMjIxMjQsMjIxMjIsMjIxNTAsMjIxNDQsMjIxNTQsMjIx''@;'; put 'put ''NzYsMjIxNjQsMjIxNTksMjIxODEsMjIxOTAsMjIxOTgsMjIxOTYsMjIyMTAsMjIyMDQsMjIyMDksMjIyMTEsMjIyMDgsMjIyMTYsMjIyMjIsMjIyMjUsMjIyMjcsMjIyMzEsMjIyNTQsMjIyNjUsMjIyNzIsMjIyNzEsMjIyNzYsMjIyODEsMjIyODAsMjIyODMsMjIyODUsMjIyOTEsMjIyOTYs''@;'; put 'put ''MjIyOTQsMjE5NTksMjIzMDAsMjIzMTAsMjIzMjcsMjIzMjgsMjIzNTAsMjIzMzEsMjIzMzYsMjIzNTEsMjIzNzcsMjI0NjQsMjI0MDgsMjIzNjksMjIzOTksMjI0MDksMjI0MTksMjI0MzIsMjI0NTEsMjI0MzYsMjI0NDIsMjI0NDgsMjI0NjcsMjI0NzAsMjI0ODQsMjI0ODIsMjI0ODMsMjI1''@;'; put 'put ''MzgsMjI0ODYsMjI0OTksMjI1MzksMjI1NTMsMjI1NTcsMjI2NDIsMjI1NjEsMjI2MjYsMjI2MDMsMjI2NDAsMjc1ODQsMjI2MTAsMjI1ODksMjI2NDksMjI2NjEsMjI3MTMsMjI2ODcsMjI2OTksMjI3MTQsMjI3NTAsMjI3MTUsMjI3MTIsMjI3MDIsMjI3MjUsMjI3MzksMjI3MzcsMjI3NDMs''@;'; put 'put ''MjI3NDUsMjI3NDQsMjI3NTcsMjI3NDgsMjI3NTYsMjI3NTEsMjI3NjcsMjI3NzgsMjI3NzcsMjI3NzksMjI3ODAsMjI3ODEsMjI3ODYsMjI3OTQsMjI4MDAsMjI4MTEsMjY3OTAsMjI4MjEsMjI4MjgsMjI4MjksMjI4MzQsMjI4NDAsMjI4NDYsMzE0NDIsMjI4NjksMjI4NjQsMjI4NjIsMjI4''@;'; put 'put ''NzQsMjI4NzIsMjI4ODIsMjI4ODAsMjI4ODcsMjI4OTIsMjI4ODksMjI5MDQsMjI5MTMsMjI5NDEsMjAzMTgsMjAzOTUsMjI5NDcsMjI5NjIsMjI5ODIsMjMwMTYsMjMwMDQsMjI5MjUsMjMwMDEsMjMwMDIsMjMwNzcsMjMwNzEsMjMwNTcsMjMwNjgsMjMwNDksMjMwNjYsMjMxMDQsMjMxNDgs''@;'; put 'put ''MjMxMTMsMjMwOTMsMjMwOTQsMjMxMzgsMjMxNDYsMjMxOTQsMjMyMjgsMjMyMzAsMjMyNDMsMjMyMzQsMjMyMjksMjMyNjcsMjMyNTUsMjMyNzAsMjMyNzMsMjMyNTQsMjMyOTAsMjMyOTEsMjMzMDgsMjMzMDcsMjMzMTgsMjMzNDYsMjMyNDgsMjMzMzgsMjMzNTAsMjMzNTgsMjMzNjMsMjMz''@;'; put 'put ''NjUsMjMzNjAsMjMzNzcsMjMzODEsMjMzODYsMjMzODcsMjMzOTcsMjM0MDEsMjM0MDgsMjM0MTEsMjM0MTMsMjM0MTYsMjU5OTIsMjM0MTgsMjM0MjQsMjM0MjcsMjM0NjIsMjM0ODAsMjM0OTEsMjM0OTUsMjM0OTcsMjM1MDgsMjM1MDQsMjM1MjQsMjM1MjYsMjM1MjIsMjM1MTgsMjM1MjUs''@;'; put 'put ''MjM1MzEsMjM1MzYsMjM1NDIsMjM1MzksMjM1NTcsMjM1NTksMjM1NjAsMjM1NjUsMjM1NzEsMjM1ODQsMjM1ODYsMjM1OTIsMjM2MDgsMjM2MDksMjM2MTcsMjM2MjIsMjM2MzAsMjM2MzUsMjM2MzIsMjM2MzEsMjM0MDksMjM2NjAsMjM2NjIsMjAwNjYsMjM2NzAsMjM2NzMsMjM2OTIsMjM2''@;'; put 'put ''OTcsMjM3MDAsMjI5MzksMjM3MjMsMjM3MzksMjM3MzQsMjM3NDAsMjM3MzUsMjM3NDksMjM3NDIsMjM3NTEsMjM3NjksMjM3ODUsMjM4MDUsMjM4MDIsMjM3ODksMjM5NDgsMjM3ODYsMjM4MTksMjM4MjksMjM4MzEsMjM5MDAsMjM4MzksMjM4MzUsMjM4MjUsMjM4MjgsMjM4NDIsMjM4MzQs''@;'; put 'put ''MjM4MzMsMjM4MzIsMjM4ODQsMjM4OTAsMjM4ODYsMjM4ODMsMjM5MTYsMjM5MjMsMjM5MjYsMjM5NDMsMjM5NDAsMjM5MzgsMjM5NzAsMjM5NjUsMjM5ODAsMjM5ODIsMjM5OTcsMjM5NTIsMjM5OTEsMjM5OTYsMjQwMDksMjQwMTMsMjQwMTksMjQwMTgsMjQwMjIsMjQwMjcsMjQwNDMsMjQw''@;'; put 'put ''NTAsMjQwNTMsMjQwNzUsMjQwOTAsMjQwODksMjQwODEsMjQwOTEsMjQxMTgsMjQxMTksMjQxMzIsMjQxMzEsMjQxMjgsMjQxNDIsMjQxNTEsMjQxNDgsMjQxNTksMjQxNjIsMjQxNjQsMjQxMzUsMjQxODEsMjQxODIsMjQxODYsNDA2MzYsMjQxOTEsMjQyMjQsMjQyNTcsMjQyNTgsMjQyNjQs''@;'; put 'put ''MjQyNzIsMjQyNzEsMjQyNzgsMjQyOTEsMjQyODUsMjQyODIsMjQyODMsMjQyOTAsMjQyODksMjQyOTYsMjQyOTcsMjQzMDAsMjQzMDUsMjQzMDcsMjQzMDQsMjQzMDgsMjQzMTIsMjQzMTgsMjQzMjMsMjQzMjksMjQ0MTMsMjQ0MTIsMjQzMzEsMjQzMzcsMjQzNDIsMjQzNjEsMjQzNjUsMjQz''@;'; put 'put ''NzYsMjQzODUsMjQzOTIsMjQzOTYsMjQzOTgsMjQzNjcsMjQ0MDEsMjQ0MDYsMjQ0MDcsMjQ0MDksMjQ0MTcsMjQ0MjksMjQ0MzUsMjQ0MzksMjQ0NTEsMjQ0NTAsMjQ0NDcsMjQ0NTgsMjQ0NTYsMjQ0NjUsMjQ0NTUsMjQ0NzgsMjQ0NzMsMjQ0NzIsMjQ0ODAsMjQ0ODgsMjQ0OTMsMjQ1MDgs''@;'; put 'put ''MjQ1MzQsMjQ1NzEsMjQ1NDgsMjQ1NjgsMjQ1NjEsMjQ1NDEsMjQ3NTUsMjQ1NzUsMjQ2MDksMjQ2NzIsMjQ2MDEsMjQ1OTIsMjQ2MTcsMjQ1OTAsMjQ2MjUsMjQ2MDMsMjQ1OTcsMjQ2MTksMjQ2MTQsMjQ1OTEsMjQ2MzQsMjQ2NjYsMjQ2NDEsMjQ2ODIsMjQ2OTUsMjQ2NzEsMjQ2NTAsMjQ2''@;'; put 'put ''NDYsMjQ2NTMsMjQ2NzUsMjQ2NDMsMjQ2NzYsMjQ2NDIsMjQ2ODQsMjQ2ODMsMjQ2NjUsMjQ3MDUsMjQ3MTcsMjQ4MDcsMjQ3MDcsMjQ3MzAsMjQ3MDgsMjQ3MzEsMjQ3MjYsMjQ3MjcsMjQ3MjIsMjQ3NDMsMjQ3MTUsMjQ4MDEsMjQ3NjAsMjQ4MDAsMjQ3ODcsMjQ3NTYsMjQ1NjAsMjQ3NjUs''@;'; put 'put ''MjQ3NzQsMjQ3NTcsMjQ3OTIsMjQ5MDksMjQ4NTMsMjQ4MzgsMjQ4MjIsMjQ4MjMsMjQ4MzIsMjQ4MjAsMjQ4MjYsMjQ4MzUsMjQ4NjUsMjQ4MjcsMjQ4MTcsMjQ4NDUsMjQ4NDYsMjQ5MDMsMjQ4OTQsMjQ4NzIsMjQ4NzEsMjQ5MDYsMjQ4OTUsMjQ4OTIsMjQ4NzYsMjQ4ODQsMjQ4OTMsMjQ4''@;'; put 'put ''OTgsMjQ5MDAsMjQ5NDcsMjQ5NTEsMjQ5MjAsMjQ5MjEsMjQ5MjIsMjQ5MzksMjQ5NDgsMjQ5NDMsMjQ5MzMsMjQ5NDUsMjQ5MjcsMjQ5MjUsMjQ5MTUsMjQ5NDksMjQ5ODUsMjQ5ODIsMjQ5NjcsMjUwMDQsMjQ5ODAsMjQ5ODYsMjQ5NzAsMjQ5NzcsMjUwMDMsMjUwMDYsMjUwMzYsMjUwMzQs''@;'; put 'put ''MjUwMzMsMjUwNzksMjUwMzIsMjUwMjcsMjUwMzAsMjUwMTgsMjUwMzUsMzI2MzMsMjUwMzcsMjUwNjIsMjUwNTksMjUwNzgsMjUwODIsMjUwNzYsMjUwODcsMjUwODUsMjUwODQsMjUwODYsMjUwODgsMjUwOTYsMjUwOTcsMjUxMDEsMjUxMDAsMjUxMDgsMjUxMTUsMjUxMTgsMjUxMjEsMjUx''@;'; put 'put ''MzAsMjUxMzQsMjUxMzYsMjUxMzgsMjUxMzksMjUxNTMsMjUxNjYsMjUxODIsMjUxODcsMjUxNzksMjUxODQsMjUxOTIsMjUyMTIsMjUyMTgsMjUyMjUsMjUyMTQsMjUyMzQsMjUyMzUsMjUyMzgsMjUzMDAsMjUyMTksMjUyMzYsMjUzMDMsMjUyOTcsMjUyNzUsMjUyOTUsMjUzNDMsMjUyODYs''@;'; put 'put ''MjU4MTIsMjUyODgsMjUzMDgsMjUyOTIsMjUyOTAsMjUyODIsMjUyODcsMjUyNDMsMjUyODksMjUzNTYsMjUzMjYsMjUzMjksMjUzODMsMjUzNDYsMjUzNTIsMjUzMjcsMjUzMzMsMjU0MjQsMjU0MDYsMjU0MjEsMjU2MjgsMjU0MjMsMjU0OTQsMjU0ODYsMjU0NzIsMjU1MTUsMjU0NjIsMjU1''@;'; put 'put ''MDcsMjU0ODcsMjU0ODEsMjU1MDMsMjU1MjUsMjU0NTEsMjU0NDksMjU1MzQsMjU1NzcsMjU1MzYsMjU1NDIsMjU1NzEsMjU1NDUsMjU1NTQsMjU1OTAsMjU1NDAsMjU2MjIsMjU2NTIsMjU2MDYsMjU2MTksMjU2MzgsMjU2NTQsMjU4ODUsMjU2MjMsMjU2NDAsMjU2MTUsMjU3MDMsMjU3MTEs''@;'; put 'put ''MjU3MTgsMjU2NzgsMjU4OTgsMjU3NDksMjU3NDcsMjU3NjUsMjU3NjksMjU3MzYsMjU3ODgsMjU4MTgsMjU4MTAsMjU3OTcsMjU3OTksMjU3ODcsMjU4MTYsMjU3OTQsMjU4NDEsMjU4MzEsMzMyODksMjU4MjQsMjU4MjUsMjUyNjAsMjU4MjcsMjU4MzksMjU5MDAsMjU4NDYsMjU4NDQsMjU4''@;'; put 'put ''NDIsMjU4NTAsMjU4NTYsMjU4NTMsMjU4ODAsMjU4ODQsMjU4NjEsMjU4OTIsMjU4OTEsMjU4OTksMjU5MDgsMjU5MDksMjU5MTEsMjU5MTAsMjU5MTIsMzAwMjcsMjU5MjgsMjU5NDIsMjU5NDEsMjU5MzMsMjU5NDQsMjU5NTAsMjU5NDksMjU5NzAsMjU5NzYsMjU5ODYsMjU5ODcsMzU3MjIs''@;'; put 'put ''MjYwMTEsMjYwMTUsMjYwMjcsMjYwMzksMjYwNTEsMjYwNTQsMjYwNDksMjYwNTIsMjYwNjAsMjYwNjYsMjYwNzUsMjYwNzMsMjYwODAsMjYwODEsMjYwOTcsMjY0ODIsMjYxMjIsMjYxMTUsMjYxMDcsMjY0ODMsMjYxNjUsMjYxNjYsMjYxNjQsMjYxNDAsMjYxOTEsMjYxODAsMjYxODUsMjYx''@;'; put 'put ''NzcsMjYyMDYsMjYyMDUsMjYyMTIsMjYyMTUsMjYyMTYsMjYyMDcsMjYyMTAsMjYyMjQsMjYyNDMsMjYyNDgsMjYyNTQsMjYyNDksMjYyNDQsMjYyNjQsMjYyNjksMjYzMDUsMjYyOTcsMjYzMTMsMjYzMDIsMjYzMDAsMjYzMDgsMjYyOTYsMjYzMjYsMjYzMzAsMjYzMzYsMjYxNzUsMjYzNDIs''@;'; put 'put ''MjYzNDUsMjYzNTIsMjYzNTcsMjYzNTksMjYzODMsMjYzOTAsMjYzOTgsMjY0MDYsMjY0MDcsMzg3MTIsMjY0MTQsMjY0MzEsMjY0MjIsMjY0MzMsMjY0MjQsMjY0MjMsMjY0MzgsMjY0NjIsMjY0NjQsMjY0NTcsMjY0NjcsMjY0NjgsMjY1MDUsMjY0ODAsMjY1MzcsMjY0OTIsMjY0NzQsMjY1''@;'; put 'put ''MDgsMjY1MDcsMjY1MzQsMjY1MjksMjY1MDEsMjY1NTEsMjY2MDcsMjY1NDgsMjY2MDQsMjY1NDcsMjY2MDEsMjY1NTIsMjY1OTYsMjY1OTAsMjY1ODksMjY1OTQsMjY2MDYsMjY1NTMsMjY1NzQsMjY1NjYsMjY1OTksMjcyOTIsMjY2NTQsMjY2OTQsMjY2NjUsMjY2ODgsMjY3MDEsMjY2NzQs''@;'; put 'put ''MjY3MDIsMjY4MDMsMjY2NjcsMjY3MTMsMjY3MjMsMjY3NDMsMjY3NTEsMjY3ODMsMjY3NjcsMjY3OTcsMjY3NzIsMjY3ODEsMjY3NzksMjY3NTUsMjczMTAsMjY4MDksMjY3NDAsMjY4MDUsMjY3ODQsMjY4MTAsMjY4OTUsMjY3NjUsMjY3NTAsMjY4ODEsMjY4MjYsMjY4ODgsMjY4NDAsMjY5''@;'; put 'put ''MTQsMjY5MTgsMjY4NDksMjY4OTIsMjY4MjksMjY4MzYsMjY4NTUsMjY4MzcsMjY5MzQsMjY4OTgsMjY4ODQsMjY4MzksMjY4NTEsMjY5MTcsMjY4NzMsMjY4NDgsMjY4NjMsMjY5MjAsMjY5MjIsMjY5MDYsMjY5MTUsMjY5MTMsMjY4MjIsMjcwMDEsMjY5OTksMjY5NzIsMjdlMywyNjk4Nywy''@;'; put 'put ''Njk2NCwyNzAwNiwyNjk5MCwyNjkzNywyNjk5NiwyNjk0MSwyNjk2OSwyNjkyOCwyNjk3NywyNjk3NCwyNjk3MywyNzAwOSwyNjk4NiwyNzA1OCwyNzA1NCwyNzA4OCwyNzA3MSwyNzA3MywyNzA5MSwyNzA3MCwyNzA4NiwyMzUyOCwyNzA4MiwyNzEwMSwyNzA2NywyNzA3NSwyNzA0NywyNzE4''@;'; put 'put ''MiwyNzAyNSwyNzA0MCwyNzAzNiwyNzAyOSwyNzA2MCwyNzEwMiwyNzExMiwyNzEzOCwyNzE2MywyNzEzNSwyNzQwMiwyNzEyOSwyNzEyMiwyNzExMSwyNzE0MSwyNzA1NywyNzE2NiwyNzExNywyNzE1NiwyNzExNSwyNzE0NiwyNzE1NCwyNzMyOSwyNzE3MSwyNzE1NSwyNzIwNCwyNzE0OCwy''@;'; put 'put ''NzI1MCwyNzE5MCwyNzI1NiwyNzIwNywyNzIzNCwyNzIyNSwyNzIzOCwyNzIwOCwyNzE5MiwyNzE3MCwyNzI4MCwyNzI3NywyNzI5NiwyNzI2OCwyNzI5OCwyNzI5OSwyNzI4NywzNDMyNywyNzMyMywyNzMzMSwyNzMzMCwyNzMyMCwyNzMxNSwyNzMwOCwyNzM1OCwyNzM0NSwyNzM1OSwyNzMw''@;'; put 'put ''NiwyNzM1NCwyNzM3MCwyNzM4NywyNzM5NywzNDMyNiwyNzM4NiwyNzQxMCwyNzQxNCwzOTcyOSwyNzQyMywyNzQ0OCwyNzQ0NywzMDQyOCwyNzQ0OSwzOTE1MCwyNzQ2MywyNzQ1OSwyNzQ2NSwyNzQ3MiwyNzQ4MSwyNzQ3NiwyNzQ4MywyNzQ4NywyNzQ4OSwyNzUxMiwyNzUxMywyNzUxOSwy''@;'; put 'put ''NzUyMCwyNzUyNCwyNzUyMywyNzUzMywyNzU0NCwyNzU0MSwyNzU1MCwyNzU1NiwyNzU2MiwyNzU2MywyNzU2NywyNzU3MCwyNzU2OSwyNzU3MSwyNzU3NSwyNzU4MCwyNzU5MCwyNzU5NSwyNzYwMywyNzYxNSwyNzYyOCwyNzYyNywyNzYzNSwyNzYzMSw0MDYzOCwyNzY1NiwyNzY2NywyNzY2''@;'; put 'put ''OCwyNzY3NSwyNzY4NCwyNzY4MywyNzc0MiwyNzczMywyNzc0NiwyNzc1NCwyNzc3OCwyNzc4OSwyNzgwMiwyNzc3NywyNzgwMywyNzc3NCwyNzc1MiwyNzc2MywyNzc5NCwyNzc5MiwyNzg0NCwyNzg4OSwyNzg1OSwyNzgzNywyNzg2MywyNzg0NSwyNzg2OSwyNzgyMiwyNzgyNSwyNzgzOCwy''@;'; put 'put ''NzgzNCwyNzg2NywyNzg4NywyNzg2NSwyNzg4MiwyNzkzNSwzNDg5MywyNzk1OCwyNzk0NywyNzk2NSwyNzk2MCwyNzkyOSwyNzk1NywyNzk1NSwyNzkyMiwyNzkxNiwyODAwMywyODA1MSwyODAwNCwyNzk5NCwyODAyNSwyNzk5MywyODA0NiwyODA1MywyODY0NCwyODAzNywyODE1MywyODE4''@;'; put 'put ''MSwyODE3MCwyODA4NSwyODEwMywyODEzNCwyODA4OCwyODEwMiwyODE0MCwyODEyNiwyODEwOCwyODEzNiwyODExNCwyODEwMSwyODE1NCwyODEyMSwyODEzMiwyODExNywyODEzOCwyODE0MiwyODIwNSwyODI3MCwyODIwNiwyODE4NSwyODI3NCwyODI1NSwyODIyMiwyODE5NSwyODI2Nywy''@;'; put 'put ''ODIwMywyODI3OCwyODIzNywyODE5MSwyODIyNywyODIxOCwyODIzOCwyODE5NiwyODQxNSwyODE4OSwyODIxNiwyODI5MCwyODMzMCwyODMxMiwyODM2MSwyODM0MywyODM3MSwyODM0OSwyODMzNSwyODM1NiwyODMzOCwyODM3MiwyODM3MywyODMwMywyODMyNSwyODM1NCwyODMxOSwyODQ4''@;'; put 'put ''MSwyODQzMywyODc0OCwyODM5NiwyODQwOCwyODQxNCwyODQ3OSwyODQwMiwyODQ2NSwyODM5OSwyODQ2NiwyODM2NCwyODQ3OCwyODQzNSwyODQwNywyODU1MCwyODUzOCwyODUzNiwyODU0NSwyODU0NCwyODUyNywyODUwNywyODY1OSwyODUyNSwyODU0NiwyODU0MCwyODUwNCwyODU1OCwy''@;'; put 'put ''ODU2MSwyODYxMCwyODUxOCwyODU5NSwyODU3OSwyODU3NywyODU4MCwyODYwMSwyODYxNCwyODU4NiwyODYzOSwyODYyOSwyODY1MiwyODYyOCwyODYzMiwyODY1NywyODY1NCwyODYzNSwyODY4MSwyODY4MywyODY2NiwyODY4OSwyODY3MywyODY4NywyODY3MCwyODY5OSwyODY5OCwyODUz''@;'; put 'put ''MiwyODcwMSwyODY5NiwyODcwMywyODcyMCwyODczNCwyODcyMiwyODc1MywyODc3MSwyODgyNSwyODgxOCwyODg0NywyODkxMywyODg0NCwyODg1NiwyODg1MSwyODg0NiwyODg5NSwyODg3NSwyODg5MywyODg4OSwyODkzNywyODkyNSwyODk1NiwyODk1MywyOTAyOSwyOTAxMywyOTA2NCwy''@;'; put 'put ''OTAzMCwyOTAyNiwyOTAwNCwyOTAxNCwyOTAzNiwyOTA3MSwyOTE3OSwyOTA2MCwyOTA3NywyOTA5NiwyOTEwMCwyOTE0MywyOTExMywyOTExOCwyOTEzOCwyOTEyOSwyOTE0MCwyOTEzNCwyOTE1MiwyOTE2NCwyOTE1OSwyOTE3MywyOTE4MCwyOTE3NywyOTE4MywyOTE5NywyOTIwMCwyOTIx''@;'; put 'put ''MSwyOTIyNCwyOTIyOSwyOTIyOCwyOTIzMiwyOTIzNCwyOTI0MywyOTI0NCwyOTI0NywyOTI0OCwyOTI1NCwyOTI1OSwyOTI3MiwyOTMwMCwyOTMxMCwyOTMxNCwyOTMxMywyOTMxOSwyOTMzMCwyOTMzNCwyOTM0NiwyOTM1MSwyOTM2OSwyOTM2MiwyOTM3OSwyOTM4MiwyOTM4MCwyOTM5MCwy''@;'; put 'put ''OTM5NCwyOTQxMCwyOTQwOCwyOTQwOSwyOTQzMywyOTQzMSwyMDQ5NSwyOTQ2MywyOTQ1MCwyOTQ2OCwyOTQ2MiwyOTQ2OSwyOTQ5MiwyOTQ4NywyOTQ4MSwyOTQ3NywyOTUwMiwyOTUxOCwyOTUxOSw0MDY2NCwyOTUyNywyOTU0NiwyOTU0NCwyOTU1MiwyOTU2MCwyOTU1NywyOTU2MywyOTU2''@;'; put 'put ''MiwyOTY0MCwyOTYxOSwyOTY0NiwyOTYyNywyOTYzMiwyOTY2OSwyOTY3OCwyOTY2MiwyOTg1OCwyOTcwMSwyOTgwNywyOTczMywyOTY4OCwyOTc0NiwyOTc1NCwyOTc4MSwyOTc1OSwyOTc5MSwyOTc4NSwyOTc2MSwyOTc4OCwyOTgwMSwyOTgwOCwyOTc5NSwyOTgwMiwyOTgxNCwyOTgyMiwy''@;'; put 'put ''OTgzNSwyOTg1NCwyOTg2MywyOTg5OCwyOTkwMywyOTkwOCwyOTY4MSwyOTkyMCwyOTkyMywyOTkyNywyOTkyOSwyOTkzNCwyOTkzOCwyOTkzNiwyOTkzNywyOTk0NCwyOTk0MywyOTk1NiwyOTk1NSwyOTk1NywyOTk2NCwyOTk2NiwyOTk2NSwyOTk3MywyOTk3MSwyOTk4MiwyOTk5MCwyOTk5''@;'; put 'put ''NiwzMDAxMiwzMDAyMCwzMDAyOSwzMDAyNiwzMDAyNSwzMDA0MywzMDAyMiwzMDA0MiwzMDA1NywzMDA1MiwzMDA1NSwzMDA1OSwzMDA2MSwzMDA3MiwzMDA3MCwzMDA4NiwzMDA4NywzMDA2OCwzMDA5MCwzMDA4OSwzMDA4MiwzMDEwMCwzMDEwNiwzMDEwOSwzMDExNywzMDExNSwzMDE0Niwz''@;'; put 'put ''MDEzMSwzMDE0NywzMDEzMywzMDE0MSwzMDEzNiwzMDE0MCwzMDEyOSwzMDE1NywzMDE1NCwzMDE2MiwzMDE2OSwzMDE3OSwzMDE3NCwzMDIwNiwzMDIwNywzMDIwNCwzMDIwOSwzMDE5MiwzMDIwMiwzMDE5NCwzMDE5NSwzMDIxOSwzMDIyMSwzMDIxNywzMDIzOSwzMDI0NywzMDI0MCwzMDI0''@;'; put 'put ''MSwzMDI0MiwzMDI0NCwzMDI2MCwzMDI1NiwzMDI2NywzMDI3OSwzMDI4MCwzMDI3OCwzMDMwMCwzMDI5NiwzMDMwNSwzMDMwNiwzMDMxMiwzMDMxMywzMDMxNCwzMDMxMSwzMDMxNiwzMDMyMCwzMDMyMiwzMDMyNiwzMDMyOCwzMDMzMiwzMDMzNiwzMDMzOSwzMDM0NCwzMDM0NywzMDM1MCwz''@;'; put 'put ''MDM1OCwzMDM1NSwzMDM2MSwzMDM2MiwzMDM4NCwzMDM4OCwzMDM5MiwzMDM5MywzMDM5NCwzMDQwMiwzMDQxMywzMDQyMiwzMDQxOCwzMDQzMCwzMDQzMywzMDQzNywzMDQzOSwzMDQ0MiwzNDM1MSwzMDQ1OSwzMDQ3MiwzMDQ3MSwzMDQ2OCwzMDUwNSwzMDUwMCwzMDQ5NCwzMDUwMSwzMDUw''@;'; put 'put ''MiwzMDQ5MSwzMDUxOSwzMDUyMCwzMDUzNSwzMDU1NCwzMDU2OCwzMDU3MSwzMDU1NSwzMDU2NSwzMDU5MSwzMDU5MCwzMDU4NSwzMDYwNiwzMDYwMywzMDYwOSwzMDYyNCwzMDYyMiwzMDY0MCwzMDY0NiwzMDY0OSwzMDY1NSwzMDY1MiwzMDY1MywzMDY1MSwzMDY2MywzMDY2OSwzMDY3OSwz''@;'; put 'put ''MDY4MiwzMDY4NCwzMDY5MSwzMDcwMiwzMDcxNiwzMDczMiwzMDczOCwzMTAxNCwzMDc1MiwzMTAxOCwzMDc4OSwzMDg2MiwzMDgzNiwzMDg1NCwzMDg0NCwzMDg3NCwzMDg2MCwzMDg4MywzMDkwMSwzMDg5MCwzMDg5NSwzMDkyOSwzMDkxOCwzMDkyMywzMDkzMiwzMDkxMCwzMDkwOCwzMDkx''@;'; put 'put ''NywzMDkyMiwzMDk1NiwzMDk1MSwzMDkzOCwzMDk3MywzMDk2NCwzMDk4MywzMDk5NCwzMDk5MywzMTAwMSwzMTAyMCwzMTAxOSwzMTA0MCwzMTA3MiwzMTA2MywzMTA3MSwzMTA2NiwzMTA2MSwzMTA1OSwzMTA5OCwzMTEwMywzMTExNCwzMTEzMywzMTE0Myw0MDc3OSwzMTE0NiwzMTE1MCwz''@;'; put 'put ''MTE1NSwzMTE2MSwzMTE2MiwzMTE3NywzMTE4OSwzMTIwNywzMTIxMiwzMTIwMSwzMTIwMywzMTI0MCwzMTI0NSwzMTI1NiwzMTI1NywzMTI2NCwzMTI2MywzMTEwNCwzMTI4MSwzMTI5MSwzMTI5NCwzMTI4NywzMTI5OSwzMTMxOSwzMTMwNSwzMTMyOSwzMTMzMCwzMTMzNyw0MDg2MSwzMTM0''@;'; put 'put ''NCwzMTM1MywzMTM1NywzMTM2OCwzMTM4MywzMTM4MSwzMTM4NCwzMTM4MiwzMTQwMSwzMTQzMiwzMTQwOCwzMTQxNCwzMTQyOSwzMTQyOCwzMTQyMywzNjk5NSwzMTQzMSwzMTQzNCwzMTQzNywzMTQzOSwzMTQ0NSwzMTQ0MywzMTQ0OSwzMTQ1MCwzMTQ1MywzMTQ1NywzMTQ1OCwzMTQ2Miwz''@;'; put 'put ''MTQ2OSwzMTQ3MiwzMTQ5MCwzMTUwMywzMTQ5OCwzMTQ5NCwzMTUzOSwzMTUxMiwzMTUxMywzMTUxOCwzMTU0MSwzMTUyOCwzMTU0MiwzMTU2OCwzMTYxMCwzMTQ5MiwzMTU2NSwzMTQ5OSwzMTU2NCwzMTU1NywzMTYwNSwzMTU4OSwzMTYwNCwzMTU5MSwzMTYwMCwzMTYwMSwzMTU5NiwzMTU5''@;'; put 'put ''OCwzMTY0NSwzMTY0MCwzMTY0NywzMTYyOSwzMTY0NCwzMTY0MiwzMTYyNywzMTYzNCwzMTYzMSwzMTU4MSwzMTY0MSwzMTY5MSwzMTY4MSwzMTY5MiwzMTY5NSwzMTY2OCwzMTY4NiwzMTcwOSwzMTcyMSwzMTc2MSwzMTc2NCwzMTcxOCwzMTcxNywzMTg0MCwzMTc0NCwzMTc1MSwzMTc2Mywz''@;'; put 'put ''MTczMSwzMTczNSwzMTc2NywzMTc1NywzMTczNCwzMTc3OSwzMTc4MywzMTc4NiwzMTc3NSwzMTc5OSwzMTc4NywzMTgwNSwzMTgyMCwzMTgxMSwzMTgyOCwzMTgyMywzMTgwOCwzMTgyNCwzMTgzMiwzMTgzOSwzMTg0NCwzMTgzMCwzMTg0NSwzMTg1MiwzMTg2MSwzMTg3NSwzMTg4OCwzMTkw''@;'; put 'put ''OCwzMTkxNywzMTkwNiwzMTkxNSwzMTkwNSwzMTkxMiwzMTkyMywzMTkyMiwzMTkyMSwzMTkxOCwzMTkyOSwzMTkzMywzMTkzNiwzMTk0MSwzMTkzOCwzMTk2MCwzMTk1NCwzMTk2NCwzMTk3MCwzOTczOSwzMTk4MywzMTk4NiwzMTk4OCwzMTk5MCwzMTk5NCwzMjAwNiwzMjAwMiwzMjAyOCwz''@;'; put 'put ''MjAyMSwzMjAxMCwzMjA2OSwzMjA3NSwzMjA0NiwzMjA1MCwzMjA2MywzMjA1MywzMjA3MCwzMjExNSwzMjA4NiwzMjA3OCwzMjExNCwzMjEwNCwzMjExMCwzMjA3OSwzMjA5OSwzMjE0NywzMjEzNywzMjA5MSwzMjE0MywzMjEyNSwzMjE1NSwzMjE4NiwzMjE3NCwzMjE2MywzMjE4MSwzMjE5''@;'; put 'put ''OSwzMjE4OSwzMjE3MSwzMjMxNywzMjE2MiwzMjE3NSwzMjIyMCwzMjE4NCwzMjE1OSwzMjE3NiwzMjIxNiwzMjIyMSwzMjIyOCwzMjIyMiwzMjI1MSwzMjI0MiwzMjIyNSwzMjI2MSwzMjI2NiwzMjI5MSwzMjI4OSwzMjI3NCwzMjMwNSwzMjI4NywzMjI2NSwzMjI2NywzMjI5MCwzMjMyNiwz''@;'; put 'put ''MjM1OCwzMjMxNSwzMjMwOSwzMjMxMywzMjMyMywzMjMxMSwzMjMwNiwzMjMxNCwzMjM1OSwzMjM0OSwzMjM0MiwzMjM1MCwzMjM0NSwzMjM0NiwzMjM3NywzMjM2MiwzMjM2MSwzMjM4MCwzMjM3OSwzMjM4NywzMjIxMywzMjM4MSwzNjc4MiwzMjM4MywzMjM5MiwzMjM5MywzMjM5NiwzMjQw''@;'; put 'put ''MiwzMjQwMCwzMjQwMywzMjQwNCwzMjQwNiwzMjM5OCwzMjQxMSwzMjQxMiwzMjU2OCwzMjU3MCwzMjU4MSwzMjU4OCwzMjU4OSwzMjU5MCwzMjU5MiwzMjU5MywzMjU5NywzMjU5NiwzMjYwMCwzMjYwNywzMjYwOCwzMjYxNiwzMjYxNywzMjYxNSwzMjYzMiwzMjY0MiwzMjY0NiwzMjY0Mywz''@;'; put 'put ''MjY0OCwzMjY0NywzMjY1MiwzMjY2MCwzMjY3MCwzMjY2OSwzMjY2NiwzMjY3NSwzMjY4NywzMjY5MCwzMjY5NywzMjY4NiwzMjY5NCwzMjY5NiwzNTY5NywzMjcwOSwzMjcxMCwzMjcxNCwzMjcyNSwzMjcyNCwzMjczNywzMjc0MiwzMjc0NSwzMjc1NSwzMjc2MSwzOTEzMiwzMjc3NCwzMjc3''@;'; put 'put ''MiwzMjc3OSwzMjc4NiwzMjc5MiwzMjc5MywzMjc5NiwzMjgwMSwzMjgwOCwzMjgzMSwzMjgyNywzMjg0MiwzMjgzOCwzMjg1MCwzMjg1NiwzMjg1OCwzMjg2MywzMjg2NiwzMjg3MiwzMjg4MywzMjg4MiwzMjg4MCwzMjg4NiwzMjg4OSwzMjg5MywzMjg5NSwzMjkwMCwzMjkwMiwzMjkwMSwz''@;'; put 'put ''MjkyMywzMjkxNSwzMjkyMiwzMjk0MSwyMDg4MCwzMjk0MCwzMjk4NywzMjk5NywzMjk4NSwzMjk4OSwzMjk2NCwzMjk4NiwzMjk4MiwzMzAzMywzMzAwNywzMzAwOSwzMzA1MSwzMzA2NSwzMzA1OSwzMzA3MSwzMzA5OSwzODUzOSwzMzA5NCwzMzA4NiwzMzEwNywzMzEwNSwzMzAyMCwzMzEz''@;'; put 'put ''NywzMzEzNCwzMzEyNSwzMzEyNiwzMzE0MCwzMzE1NSwzMzE2MCwzMzE2MiwzMzE1MiwzMzE1NCwzMzE4NCwzMzE3MywzMzE4OCwzMzE4NywzMzExOSwzMzE3MSwzMzE5MywzMzIwMCwzMzIwNSwzMzIxNCwzMzIwOCwzMzIxMywzMzIxNiwzMzIxOCwzMzIxMCwzMzIyNSwzMzIyOSwzMzIzMywz''@;'; put 'put ''MzI0MSwzMzI0MCwzMzIyNCwzMzI0MiwzMzI0NywzMzI0OCwzMzI1NSwzMzI3NCwzMzI3NSwzMzI3OCwzMzI4MSwzMzI4MiwzMzI4NSwzMzI4NywzMzI5MCwzMzI5MywzMzI5NiwzMzMwMiwzMzMyMSwzMzMyMywzMzMzNiwzMzMzMSwzMzM0NCwzMzM2OSwzMzM2OCwzMzM3MywzMzM3MCwzMzM3''@;'; put 'put ''NSwzMzM4MCwzMzM3OCwzMzM4NCwzMzM4NiwzMzM4NywzMzMyNiwzMzM5MywzMzM5OSwzMzQwMCwzMzQwNiwzMzQyMSwzMzQyNiwzMzQ1MSwzMzQzOSwzMzQ2NywzMzQ1MiwzMzUwNSwzMzUwNywzMzUwMywzMzQ5MCwzMzUyNCwzMzUyMywzMzUzMCwzMzY4MywzMzUzOSwzMzUzMSwzMzUyOSwz''@;'; put 'put ''MzUwMiwzMzU0MiwzMzUwMCwzMzU0NSwzMzQ5NywzMzU4OSwzMzU4OCwzMzU1OCwzMzU4NiwzMzU4NSwzMzYwMCwzMzU5MywzMzYxNiwzMzYwNSwzMzU4MywzMzU3OSwzMzU1OSwzMzU2MCwzMzY2OSwzMzY5MCwzMzcwNiwzMzY5NSwzMzY5OCwzMzY4NiwzMzU3MSwzMzY3OCwzMzY3MSwzMzY3''@;'; put 'put ''NCwzMzY2MCwzMzcxNywzMzY1MSwzMzY1MywzMzY5NiwzMzY3MywzMzcwNCwzMzc4MCwzMzgxMSwzMzc3MSwzMzc0MiwzMzc4OSwzMzc5NSwzMzc1MiwzMzgwMywzMzcyOSwzMzc4MywzMzc5OSwzMzc2MCwzMzc3OCwzMzgwNSwzMzgyNiwzMzgyNCwzMzcyNSwzMzg0OCwzNDA1NCwzMzc4Nywz''@;'; put 'put ''MzkwMSwzMzgzNCwzMzg1MiwzNDEzOCwzMzkyNCwzMzkxMSwzMzg5OSwzMzk2NSwzMzkwMiwzMzkyMiwzMzg5NywzMzg2MiwzMzgzNiwzMzkwMywzMzkxMywzMzg0NSwzMzk5NCwzMzg5MCwzMzk3NywzMzk4MywzMzk1MSwzNDAwOSwzMzk5NywzMzk3OSwzNDAxMCwzNGUzLDMzOTg1LDMzOTkw''@;'; put 'put ''LDM0MDA2LDMzOTUzLDM0MDgxLDM0MDQ3LDM0MDM2LDM0MDcxLDM0MDcyLDM0MDkyLDM0MDc5LDM0MDY5LDM0MDY4LDM0MDQ0LDM0MTEyLDM0MTQ3LDM0MTM2LDM0MTIwLDM0MTEzLDM0MzA2LDM0MTIzLDM0MTMzLDM0MTc2LDM0MjEyLDM0MTg0LDM0MTkzLDM0MTg2LDM0MjE2LDM0MTU3LDM0''@;'; put 'put ''MTk2LDM0MjAzLDM0MjgyLDM0MTgzLDM0MjA0LDM0MTY3LDM0MTc0LDM0MTkyLDM0MjQ5LDM0MjM0LDM0MjU1LDM0MjMzLDM0MjU2LDM0MjYxLDM0MjY5LDM0Mjc3LDM0MjY4LDM0Mjk3LDM0MzE0LDM0MzIzLDM0MzE1LDM0MzAyLDM0Mjk4LDM0MzEwLDM0MzM4LDM0MzMwLDM0MzUyLDM0MzY3''@;'; put 'put ''LDM0MzgxLDIwMDUzLDM0Mzg4LDM0Mzk5LDM0NDA3LDM0NDE3LDM0NDUxLDM0NDY3LDM0NDczLDM0NDc0LDM0NDQzLDM0NDQ0LDM0NDg2LDM0NDc5LDM0NTAwLDM0NTAyLDM0NDgwLDM0NTA1LDM0ODUxLDM0NDc1LDM0NTE2LDM0NTI2LDM0NTM3LDM0NTQwLDM0NTI3LDM0NTIzLDM0NTQzLDM0''@;'; put 'put ''NTc4LDM0NTY2LDM0NTY4LDM0NTYwLDM0NTYzLDM0NTU1LDM0NTc3LDM0NTY5LDM0NTczLDM0NTUzLDM0NTcwLDM0NjEyLDM0NjIzLDM0NjE1LDM0NjE5LDM0NTk3LDM0NjAxLDM0NTg2LDM0NjU2LDM0NjU1LDM0NjgwLDM0NjM2LDM0NjM4LDM0Njc2LDM0NjQ3LDM0NjY0LDM0NjcwLDM0NjQ5''@;'; put 'put ''LDM0NjQzLDM0NjU5LDM0NjY2LDM0ODIxLDM0NzIyLDM0NzE5LDM0NjkwLDM0NzM1LDM0NzYzLDM0NzQ5LDM0NzUyLDM0NzY4LDM4NjE0LDM0NzMxLDM0NzU2LDM0NzM5LDM0NzU5LDM0NzU4LDM0NzQ3LDM0Nzk5LDM0ODAyLDM0Nzg0LDM0ODMxLDM0ODI5LDM0ODE0LDM0ODA2LDM0ODA3LDM0''@;'; put 'put ''ODMwLDM0NzcwLDM0ODMzLDM0ODM4LDM0ODM3LDM0ODUwLDM0ODQ5LDM0ODY1LDM0ODcwLDM0ODczLDM0ODU1LDM0ODc1LDM0ODg0LDM0ODgyLDM0ODk4LDM0OTA1LDM0OTEwLDM0OTE0LDM0OTIzLDM0OTQ1LDM0OTQyLDM0OTc0LDM0OTMzLDM0OTQxLDM0OTk3LDM0OTMwLDM0OTQ2LDM0OTY3''@;'; put 'put ''LDM0OTYyLDM0OTkwLDM0OTY5LDM0OTc4LDM0OTU3LDM0OTgwLDM0OTkyLDM1MDA3LDM0OTkzLDM1MDExLDM1MDEyLDM1MDI4LDM1MDMyLDM1MDMzLDM1MDM3LDM1MDY1LDM1MDc0LDM1MDY4LDM1MDYwLDM1MDQ4LDM1MDU4LDM1MDc2LDM1MDg0LDM1MDgyLDM1MDkxLDM1MTM5LDM1MTAyLDM1''@;'; put 'put ''MTA5LDM1MTE0LDM1MTE1LDM1MTM3LDM1MTQwLDM1MTMxLDM1MTI2LDM1MTI4LDM1MTQ4LDM1MTAxLDM1MTY4LDM1MTY2LDM1MTc0LDM1MTcyLDM1MTgxLDM1MTc4LDM1MTgzLDM1MTg4LDM1MTkxLDM1MTk4LDM1MjAzLDM1MjA4LDM1MjEwLDM1MjE5LDM1MjI0LDM1MjMzLDM1MjQxLDM1MjM4''@;'; put 'put ''LDM1MjQ0LDM1MjQ3LDM1MjUwLDM1MjU4LDM1MjYxLDM1MjYzLDM1MjY0LDM1MjkwLDM1MjkyLDM1MjkzLDM1MzAzLDM1MzE2LDM1MzIwLDM1MzMxLDM1MzUwLDM1MzQ0LDM1MzQwLDM1MzU1LDM1MzU3LDM1MzY1LDM1MzgyLDM1MzkzLDM1NDE5LDM1NDEwLDM1Mzk4LDM1NDAwLDM1NDUyLDM1''@;'; put 'put ''NDM3LDM1NDM2LDM1NDI2LDM1NDYxLDM1NDU4LDM1NDYwLDM1NDk2LDM1NDg5LDM1NDczLDM1NDkzLDM1NDk0LDM1NDgyLDM1NDkxLDM1NTI0LDM1NTMzLDM1NTIyLDM1NTQ2LDM1NTYzLDM1NTcxLDM1NTU5LDM1NTU2LDM1NTY5LDM1NjA0LDM1NTUyLDM1NTU0LDM1NTc1LDM1NTUwLDM1NTQ3''@;'; put 'put ''LDM1NTk2LDM1NTkxLDM1NjEwLDM1NTUzLDM1NjA2LDM1NjAwLDM1NjA3LDM1NjE2LDM1NjM1LDM4ODI3LDM1NjIyLDM1NjI3LDM1NjQ2LDM1NjI0LDM1NjQ5LDM1NjYwLDM1NjYzLDM1NjYyLDM1NjU3LDM1NjcwLDM1Njc1LDM1Njc0LDM1NjkxLDM1Njc5LDM1NjkyLDM1Njk1LDM1NzAwLDM1''@;'; put 'put ''NzA5LDM1NzEyLDM1NzI0LDM1NzI2LDM1NzMwLDM1NzMxLDM1NzM0LDM1NzM3LDM1NzM4LDM1ODk4LDM1OTA1LDM1OTAzLDM1OTEyLDM1OTE2LDM1OTE4LDM1OTIwLDM1OTI1LDM1OTM4LDM1OTQ4LDM1OTYwLDM1OTYyLDM1OTcwLDM1OTc3LDM1OTczLDM1OTc4LDM1OTgxLDM1OTgyLDM1OTg4''@;'; put 'put ''LDM1OTY0LDM1OTkyLDI1MTE3LDM2MDEzLDM2MDEwLDM2MDI5LDM2MDE4LDM2MDE5LDM2MDE0LDM2MDIyLDM2MDQwLDM2MDMzLDM2MDY4LDM2MDY3LDM2MDU4LDM2MDkzLDM2MDkwLDM2MDkxLDM2MTAwLDM2MTAxLDM2MTA2LDM2MTAzLDM2MTExLDM2MTA5LDM2MTEyLDQwNzgyLDM2MTE1LDM2''@;'; put 'put ''MDQ1LDM2MTE2LDM2MTE4LDM2MTk5LDM2MjA1LDM2MjA5LDM2MjExLDM2MjI1LDM2MjQ5LDM2MjkwLDM2Mjg2LDM2MjgyLDM2MzAzLDM2MzE0LDM2MzEwLDM2MzAwLDM2MzE1LDM2Mjk5LDM2MzMwLDM2MzMxLDM2MzE5LDM2MzIzLDM2MzQ4LDM2MzYwLDM2MzYxLDM2MzUxLDM2MzgxLDM2Mzgy''@;'; put 'put ''LDM2MzY4LDM2MzgzLDM2NDE4LDM2NDA1LDM2NDAwLDM2NDA0LDM2NDI2LDM2NDIzLDM2NDI1LDM2NDI4LDM2NDMyLDM2NDI0LDM2NDQxLDM2NDUyLDM2NDQ4LDM2Mzk0LDM2NDUxLDM2NDM3LDM2NDcwLDM2NDY2LDM2NDc2LDM2NDgxLDM2NDg3LDM2NDg1LDM2NDg0LDM2NDkxLDM2NDkwLDM2''@;'; put 'put ''NDk5LDM2NDk3LDM2NTAwLDM2NTA1LDM2NTIyLDM2NTEzLDM2NTI0LDM2NTI4LDM2NTUwLDM2NTI5LDM2NTQyLDM2NTQ5LDM2NTUyLDM2NTU1LDM2NTcxLDM2NTc5LDM2NjA0LDM2NjAzLDM2NTg3LDM2NjA2LDM2NjE4LDM2NjEzLDM2NjI5LDM2NjI2LDM2NjMzLDM2NjI3LDM2NjM2LDM2NjM5''@;'; put 'put ''LDM2NjM1LDM2NjIwLDM2NjQ2LDM2NjU5LDM2NjY3LDM2NjY1LDM2Njc3LDM2Njc0LDM2NjcwLDM2Njg0LDM2NjgxLDM2Njc4LDM2Njg2LDM2Njk1LDM2NzAwLDM2NzA2LDM2NzA3LDM2NzA4LDM2NzY0LDM2NzY3LDM2NzcxLDM2NzgxLDM2NzgzLDM2NzkxLDM2ODI2LDM2ODM3LDM2ODM0LDM2''@;'; put 'put ''ODQyLDM2ODQ3LDM2OTk5LDM2ODUyLDM2ODY5LDM2ODU3LDM2ODU4LDM2ODgxLDM2ODg1LDM2ODk3LDM2ODc3LDM2ODk0LDM2ODg2LDM2ODc1LDM2OTAzLDM2OTE4LDM2OTE3LDM2OTIxLDM2ODU2LDM2OTQzLDM2OTQ0LDM2OTQ1LDM2OTQ2LDM2ODc4LDM2OTM3LDM2OTI2LDM2OTUwLDM2OTUy''@;'; put 'put ''LDM2OTU4LDM2OTY4LDM2OTc1LDM2OTgyLDM4NTY4LDM2OTc4LDM2OTk0LDM2OTg5LDM2OTkzLDM2OTkyLDM3MDAyLDM3MDAxLDM3MDA3LDM3MDMyLDM3MDM5LDM3MDQxLDM3MDQ1LDM3MDkwLDM3MDkyLDI1MTYwLDM3MDgzLDM3MTIyLDM3MTM4LDM3MTQ1LDM3MTcwLDM3MTY4LDM3MTk0LDM3''@;'; put 'put ''MjA2LDM3MjA4LDM3MjE5LDM3MjIxLDM3MjI1LDM3MjM1LDM3MjM0LDM3MjU5LDM3MjU3LDM3MjUwLDM3MjgyLDM3MjkxLDM3Mjk1LDM3MjkwLDM3MzAxLDM3MzAwLDM3MzA2LDM3MzEyLDM3MzEzLDM3MzIxLDM3MzIzLDM3MzI4LDM3MzM0LDM3MzQzLDM3MzQ1LDM3MzM5LDM3MzcyLDM3MzY1''@;'; put 'put ''LDM3MzY2LDM3NDA2LDM3Mzc1LDM3Mzk2LDM3NDIwLDM3Mzk3LDM3MzkzLDM3NDcwLDM3NDYzLDM3NDQ1LDM3NDQ5LDM3NDc2LDM3NDQ4LDM3NTI1LDM3NDM5LDM3NDUxLDM3NDU2LDM3NTMyLDM3NTI2LDM3NTIzLDM3NTMxLDM3NDY2LDM3NTgzLDM3NTYxLDM3NTU5LDM3NjA5LDM3NjQ3LDM3''@;'; put 'put ''NjI2LDM3NzAwLDM3Njc4LDM3NjU3LDM3NjY2LDM3NjU4LDM3NjY3LDM3NjkwLDM3Njg1LDM3NjkxLDM3NzI0LDM3NzI4LDM3NzU2LDM3NzQyLDM3NzE4LDM3ODA4LDM3ODA0LDM3ODA1LDM3NzgwLDM3ODE3LDM3ODQ2LDM3ODQ3LDM3ODY0LDM3ODYxLDM3ODQ4LDM3ODI3LDM3ODUzLDM3ODQw''@;'; put 'put ''LDM3ODMyLDM3ODYwLDM3OTE0LDM3OTA4LDM3OTA3LDM3ODkxLDM3ODk1LDM3OTA0LDM3OTQyLDM3OTMxLDM3OTQxLDM3OTIxLDM3OTQ2LDM3OTUzLDM3OTcwLDM3OTU2LDM3OTc5LDM3OTg0LDM3OTg2LDM3OTgyLDM3OTk0LDM3NDE3LDM4ZTMsMzgwMDUsMzgwMDcsMzgwMTMsMzc5NzgsMzgw''@;'; put 'put ''MTIsMzgwMTQsMzgwMTcsMzgwMTUsMzgyNzQsMzgyNzksMzgyODIsMzgyOTIsMzgyOTQsMzgyOTYsMzgyOTcsMzgzMDQsMzgzMTIsMzgzMTEsMzgzMTcsMzgzMzIsMzgzMzEsMzgzMjksMzgzMzQsMzgzNDYsMjg2NjIsMzgzMzksMzgzNDksMzgzNDgsMzgzNTcsMzgzNTYsMzgzNTgsMzgzNjQs''@;'; put 'put ''MzgzNjksMzgzNzMsMzgzNzAsMzg0MzMsMzg0NDAsMzg0NDYsMzg0NDcsMzg0NjYsMzg0NzYsMzg0NzksMzg0NzUsMzg1MTksMzg0OTIsMzg0OTQsMzg0OTMsMzg0OTUsMzg1MDIsMzg1MTQsMzg1MDgsMzg1NDEsMzg1NTIsMzg1NDksMzg1NTEsMzg1NzAsMzg1NjcsMzg1NzcsMzg1NzgsMzg1''@;'; put 'put ''NzYsMzg1ODAsMzg1ODIsMzg1ODQsMzg1ODUsMzg2MDYsMzg2MDMsMzg2MDEsMzg2MDUsMzUxNDksMzg2MjAsMzg2NjksMzg2MTMsMzg2NDksMzg2NjAsMzg2NjIsMzg2NjQsMzg2NzUsMzg2NzAsMzg2NzMsMzg2NzEsMzg2NzgsMzg2ODEsMzg2OTIsMzg2OTgsMzg3MDQsMzg3MTMsMzg3MTcs''@;'; put 'put ''Mzg3MTgsMzg3MjQsMzg3MjYsMzg3MjgsMzg3MjIsMzg3MjksMzg3NDgsMzg3NTIsMzg3NTYsMzg3NTgsMzg3NjAsMjEyMDIsMzg3NjMsMzg3NjksMzg3NzcsMzg3ODksMzg3ODAsMzg3ODUsMzg3NzgsMzg3OTAsMzg3OTUsMzg3OTksMzg4MDAsMzg4MTIsMzg4MjQsMzg4MjIsMzg4MTksMzg4''@;'; put 'put ''MzUsMzg4MzYsMzg4NTEsMzg4NTQsMzg4NTYsMzg4NTksMzg4NzYsMzg4OTMsNDA3ODMsMzg4OTgsMzE0NTUsMzg5MDIsMzg5MDEsMzg5MjcsMzg5MjQsMzg5NjgsMzg5NDgsMzg5NDUsMzg5NjcsMzg5NzMsMzg5ODIsMzg5OTEsMzg5ODcsMzkwMTksMzkwMjMsMzkwMjQsMzkwMjUsMzkwMjgs''@;'; put 'put ''MzkwMjcsMzkwODIsMzkwODcsMzkwODksMzkwOTQsMzkxMDgsMzkxMDcsMzkxMTAsMzkxNDUsMzkxNDcsMzkxNzEsMzkxNzcsMzkxODYsMzkxODgsMzkxOTIsMzkyMDEsMzkxOTcsMzkxOTgsMzkyMDQsMzkyMDAsMzkyMTIsMzkyMTQsMzkyMjksMzkyMzAsMzkyMzQsMzkyNDEsMzkyMzcsMzky''@;'; put 'put ''NDgsMzkyNDMsMzkyNDksMzkyNTAsMzkyNDQsMzkyNTMsMzkzMTksMzkzMjAsMzkzMzMsMzkzNDEsMzkzNDIsMzkzNTYsMzkzOTEsMzkzODcsMzkzODksMzkzODQsMzkzNzcsMzk0MDUsMzk0MDYsMzk0MDksMzk0MTAsMzk0MTksMzk0MTYsMzk0MjUsMzk0MzksMzk0MjksMzkzOTQsMzk0NDks''@;'; put 'put ''Mzk0NjcsMzk0NzksMzk0OTMsMzk0OTAsMzk0ODgsMzk0OTEsMzk0ODYsMzk1MDksMzk1MDEsMzk1MTUsMzk1MTEsMzk1MTksMzk1MjIsMzk1MjUsMzk1MjQsMzk1MjksMzk1MzEsMzk1MzAsMzk1OTcsMzk2MDAsMzk2MTIsMzk2MTYsMzk2MzEsMzk2MzMsMzk2MzUsMzk2MzYsMzk2NDYsMzk2''@;'; put 'put ''NDcsMzk2NTAsMzk2NTEsMzk2NTQsMzk2NjMsMzk2NTksMzk2NjIsMzk2NjgsMzk2NjUsMzk2NzEsMzk2NzUsMzk2ODYsMzk3MDQsMzk3MDYsMzk3MTEsMzk3MTQsMzk3MTUsMzk3MTcsMzk3MTksMzk3MjAsMzk3MjEsMzk3MjIsMzk3MjYsMzk3MjcsMzk3MzAsMzk3NDgsMzk3NDcsMzk3NTks''@;'; put 'put ''Mzk3NTcsMzk3NTgsMzk3NjEsMzk3NjgsMzk3OTYsMzk4MjcsMzk4MTEsMzk4MjUsMzk4MzAsMzk4MzEsMzk4MzksMzk4NDAsMzk4NDgsMzk4NjAsMzk4NzIsMzk4ODIsMzk4NjUsMzk4NzgsMzk4ODcsMzk4ODksMzk4OTAsMzk5MDcsMzk5MDYsMzk5MDgsMzk4OTIsMzk5MDUsMzk5OTQsMzk5''@;'; put 'put ''MjIsMzk5MjEsMzk5MjAsMzk5NTcsMzk5NTYsMzk5NDUsMzk5NTUsMzk5NDgsMzk5NDIsMzk5NDQsMzk5NTQsMzk5NDYsMzk5NDAsMzk5ODIsMzk5NjMsMzk5NzMsMzk5NzIsMzk5NjksMzk5ODQsNDAwMDcsMzk5ODYsNDAwMDYsMzk5OTgsNDAwMjYsNDAwMzIsNDAwMzksNDAwNTQsNDAwNTYs''@;'; put 'put ''NDAxNjcsNDAxNzIsNDAxNzYsNDAyMDEsNDAyMDAsNDAxNzEsNDAxOTUsNDAxOTgsNDAyMzQsNDAyMzAsNDAzNjcsNDAyMjcsNDAyMjMsNDAyNjAsNDAyMTMsNDAyMTAsNDAyNTcsNDAyNTUsNDAyNTQsNDAyNjIsNDAyNjQsNDAyODUsNDAyODYsNDAyOTIsNDAyNzMsNDAyNzIsNDAyODEsNDAz''@;'; put 'put ''MDYsNDAzMjksNDAzMjcsNDAzNjMsNDAzMDMsNDAzMTQsNDAzNDYsNDAzNTYsNDAzNjEsNDAzNzAsNDAzODgsNDAzODUsNDAzNzksNDAzNzYsNDAzNzgsNDAzOTAsNDAzOTksNDAzODYsNDA0MDksNDA0MDMsNDA0NDAsNDA0MjIsNDA0MjksNDA0MzEsNDA0NDUsNDA0NzQsNDA0NzUsNDA0Nzgs''@;'; put 'put ''NDA1NjUsNDA1NjksNDA1NzMsNDA1NzcsNDA1ODQsNDA1ODcsNDA1ODgsNDA1OTQsNDA1OTcsNDA1OTMsNDA2MDUsNDA2MTMsNDA2MTcsNDA2MzIsNDA2MTgsNDA2MjEsMzg3NTMsNDA2NTIsNDA2NTQsNDA2NTUsNDA2NTYsNDA2NjAsNDA2NjgsNDA2NzAsNDA2NjksNDA2NzIsNDA2NzcsNDA2''@;'; put 'put ''ODAsNDA2ODcsNDA2OTIsNDA2OTQsNDA2OTUsNDA2OTcsNDA2OTksNDA3MDAsNDA3MDEsNDA3MTEsNDA3MTIsMzAzOTEsNDA3MjUsNDA3MzcsNDA3NDgsNDA3NjYsNDA3NzgsNDA3ODYsNDA3ODgsNDA4MDMsNDA3OTksNDA4MDAsNDA4MDEsNDA4MDYsNDA4MDcsNDA4MTIsNDA4MTAsNDA4MjMs''@;'; put 'put ''NDA4MTgsNDA4MjIsNDA4NTMsNDA4NjAsNDA4NjQsMjI1NzUsMjcwNzksMzY5NTMsMjk3OTYsMjA5NTYsMjkwODEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyMzk0LDM1MTAwLDM3NzA0LDM3NTEyLDM0MDEyLDIwNDI1LDI4ODU5LDI2MTYxLDI2ODI0LDM3NjI1LDI2MzYzLDI0Mzg5LDIwMDA4LDIwMTkzLDIwMjIw''@;'; put 'put ''LDIwMjI0LDIwMjI3LDIwMjgxLDIwMzEwLDIwMzcwLDIwMzYyLDIwMzc4LDIwMzcyLDIwNDI5LDIwNTQ0LDIwNTE0LDIwNDc5LDIwNTEwLDIwNTUwLDIwNTkyLDIwNTQ2LDIwNjI4LDIwNzI0LDIwNjk2LDIwODEwLDIwODM2LDIwODkzLDIwOTI2LDIwOTcyLDIxMDEzLDIxMTQ4LDIxMTU4LDIx''@;'; put 'put ''MTg0LDIxMjExLDIxMjQ4LDIxMjU1LDIxMjg0LDIxMzYyLDIxMzk1LDIxNDI2LDIxNDY5LDY0MDE0LDIxNjYwLDIxNjQyLDIxNjczLDIxNzU5LDIxODk0LDIyMzYxLDIyMzczLDIyNDQ0LDIyNDcyLDIyNDcxLDY0MDE1LDY0MDE2LDIyNjg2LDIyNzA2LDIyNzk1LDIyODY3LDIyODc1LDIyODc3''@;'; put 'put ''LDIyODgzLDIyOTQ4LDIyOTcwLDIzMzgyLDIzNDg4LDI5OTk5LDIzNTEyLDIzNTMyLDIzNTgyLDIzNzE4LDIzNzM4LDIzNzk3LDIzODQ3LDIzODkxLDY0MDE3LDIzODc0LDIzOTE3LDIzOTkyLDIzOTkzLDI0MDE2LDI0MzUzLDI0MzcyLDI0NDIzLDI0NTAzLDI0NTQyLDI0NjY5LDI0NzA5LDI0''@;'; put 'put ''NzE0LDI0Nzk4LDI0Nzg5LDI0ODY0LDI0ODE4LDI0ODQ5LDI0ODg3LDI0ODgwLDI0OTg0LDI1MTA3LDI1MjU0LDI1NTg5LDI1Njk2LDI1NzU3LDI1ODA2LDI1OTM0LDI2MTEyLDI2MTMzLDI2MTcxLDI2MTIxLDI2MTU4LDI2MTQyLDI2MTQ4LDI2MjEzLDI2MTk5LDI2MjAxLDY0MDE4LDI2MjI3''@;'; put 'put ''LDI2MjY1LDI2MjcyLDI2MjkwLDI2MzAzLDI2MzYyLDI2MzgyLDYzNzg1LDI2NDcwLDI2NTU1LDI2NzA2LDI2NTYwLDI2NjI1LDI2NjkyLDI2ODMxLDY0MDE5LDI2OTg0LDY0MDIwLDI3MDMyLDI3MTA2LDI3MTg0LDI3MjQzLDI3MjA2LDI3MjUxLDI3MjYyLDI3MzYyLDI3MzY0LDI3NjA2LDI3''@;'; put 'put ''NzExLDI3NzQwLDI3NzgyLDI3NzU5LDI3ODY2LDI3OTA4LDI4MDM5LDI4MDE1LDI4MDU0LDI4MDc2LDI4MTExLDI4MTUyLDI4MTQ2LDI4MTU2LDI4MjE3LDI4MjUyLDI4MTk5LDI4MjIwLDI4MzUxLDI4NTUyLDI4NTk3LDI4NjYxLDI4Njc3LDI4Njc5LDI4NzEyLDI4ODA1LDI4ODQzLDI4OTQz''@;'; put 'put ''LDI4OTMyLDI5MDIwLDI4OTk4LDI4OTk5LDY0MDIxLDI5MTIxLDI5MTgyLDI5MzYxLDI5Mzc0LDI5NDc2LDY0MDIyLDI5NTU5LDI5NjI5LDI5NjQxLDI5NjU0LDI5NjY3LDI5NjUwLDI5NzAzLDI5Njg1LDI5NzM0LDI5NzM4LDI5NzM3LDI5NzQyLDI5Nzk0LDI5ODMzLDI5ODU1LDI5OTUzLDMw''@;'; put 'put ''MDYzLDMwMzM4LDMwMzY0LDMwMzY2LDMwMzYzLDMwMzc0LDY0MDIzLDMwNTM0LDIxMTY3LDMwNzUzLDMwNzk4LDMwODIwLDMwODQyLDMxMDI0LDY0MDI0LDY0MDI1LDY0MDI2LDMxMTI0LDY0MDI3LDMxMTMxLDMxNDQxLDMxNDYzLDY0MDI4LDMxNDY3LDMxNjQ2LDY0MDI5LDMyMDcyLDMyMDky''@;'; put 'put ''LDMyMTgzLDMyMTYwLDMyMjE0LDMyMzM4LDMyNTgzLDMyNjczLDY0MDMwLDMzNTM3LDMzNjM0LDMzNjYzLDMzNzM1LDMzNzgyLDMzODY0LDMzOTcyLDM0MTMxLDM0MTM3LDM0MTU1LDY0MDMxLDM0MjI0LDY0MDMyLDY0MDMzLDM0ODIzLDM1MDYxLDM1MzQ2LDM1MzgzLDM1NDQ5LDM1NDk1LDM1''@;'; put 'put ''NTE4LDM1NTUxLDY0MDM0LDM1NTc0LDM1NjY3LDM1NzExLDM2MDgwLDM2MDg0LDM2MTE0LDM2MjE0LDY0MDM1LDM2NTU5LDY0MDM2LDY0MDM3LDM2OTY3LDM3MDg2LDY0MDM4LDM3MTQxLDM3MTU5LDM3MzM4LDM3MzM1LDM3MzQyLDM3MzU3LDM3MzU4LDM3MzQ4LDM3MzQ5LDM3MzgyLDM3Mzky''@;'; put 'put ''LDM3Mzg2LDM3NDM0LDM3NDQwLDM3NDM2LDM3NDU0LDM3NDY1LDM3NDU3LDM3NDMzLDM3NDc5LDM3NTQzLDM3NDk1LDM3NDk2LDM3NjA3LDM3NTkxLDM3NTkzLDM3NTg0LDY0MDM5LDM3NTg5LDM3NjAwLDM3NTg3LDM3NjY5LDM3NjY1LDM3NjI3LDY0MDQwLDM3NjYyLDM3NjMxLDM3NjYxLDM3''@;'; put 'put ''NjM0LDM3NzQ0LDM3NzE5LDM3Nzk2LDM3ODMwLDM3ODU0LDM3ODgwLDM3OTM3LDM3OTU3LDM3OTYwLDM4MjkwLDYzOTY0LDY0MDQxLDM4NTU3LDM4NTc1LDM4NzA3LDM4NzE1LDM4NzIzLDM4NzMzLDM4NzM1LDM4NzM3LDM4NzQxLDM4OTk5LDM5MDEzLDY0MDQyLDY0MDQzLDM5MjA3LDY0MDQ0''@;'; put 'put ''LDM5MzI2LDM5NTAyLDM5NjQxLDM5NjQ0LDM5Nzk3LDM5Nzk0LDM5ODIzLDM5ODU3LDM5ODY3LDM5OTM2LDQwMzA0LDQwMjk5LDY0MDQ1LDQwNDczLDQwNjU3LG51bGwsbnVsbCw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2NSw4NTY2LDg1NjcsODU2OCw4NTY5LDY1NTA2LDY1NTA4LDY1''@;'; put 'put ''Mjg3LDY1MjgyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODU2MCw4NTYxLDg1NjIsODU2Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1Njgs''@;'; put 'put ''ODU2OSw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEsODU1Miw4NTUzLDY1NTA2LDY1NTA4LDY1Mjg3LDY1MjgyLDEyODQ5LDg0NzAsODQ4MSw4NzU3LDMyMzk0LDM1MTAwLDM3NzA0LDM3NTEyLDM0MDEyLDIwNDI1LDI4ODU5LDI2MTYxLDI2ODI0LDM3NjI1LDI2MzYz''@;'; put 'put ''LDI0Mzg5LDIwMDA4LDIwMTkzLDIwMjIwLDIwMjI0LDIwMjI3LDIwMjgxLDIwMzEwLDIwMzcwLDIwMzYyLDIwMzc4LDIwMzcyLDIwNDI5LDIwNTQ0LDIwNTE0LDIwNDc5LDIwNTEwLDIwNTUwLDIwNTkyLDIwNTQ2LDIwNjI4LDIwNzI0LDIwNjk2LDIwODEwLDIwODM2LDIwODkzLDIwOTI2LDIw''@;'; put 'put ''OTcyLDIxMDEzLDIxMTQ4LDIxMTU4LDIxMTg0LDIxMjExLDIxMjQ4LDIxMjU1LDIxMjg0LDIxMzYyLDIxMzk1LDIxNDI2LDIxNDY5LDY0MDE0LDIxNjYwLDIxNjQyLDIxNjczLDIxNzU5LDIxODk0LDIyMzYxLDIyMzczLDIyNDQ0LDIyNDcyLDIyNDcxLDY0MDE1LDY0MDE2LDIyNjg2LDIyNzA2''@;'; put 'put ''LDIyNzk1LDIyODY3LDIyODc1LDIyODc3LDIyODgzLDIyOTQ4LDIyOTcwLDIzMzgyLDIzNDg4LDI5OTk5LDIzNTEyLDIzNTMyLDIzNTgyLDIzNzE4LDIzNzM4LDIzNzk3LDIzODQ3LDIzODkxLDY0MDE3LDIzODc0LDIzOTE3LDIzOTkyLDIzOTkzLDI0MDE2LDI0MzUzLDI0MzcyLDI0NDIzLDI0''@;'; put 'put ''NTAzLDI0NTQyLDI0NjY5LDI0NzA5LDI0NzE0LDI0Nzk4LDI0Nzg5LDI0ODY0LDI0ODE4LDI0ODQ5LDI0ODg3LDI0ODgwLDI0OTg0LDI1MTA3LDI1MjU0LDI1NTg5LDI1Njk2LDI1NzU3LDI1ODA2LDI1OTM0LDI2MTEyLDI2MTMzLDI2MTcxLDI2MTIxLDI2MTU4LDI2MTQyLDI2MTQ4LDI2MjEz''@;'; put 'put ''LDI2MTk5LDI2MjAxLDY0MDE4LDI2MjI3LDI2MjY1LDI2MjcyLDI2MjkwLDI2MzAzLDI2MzYyLDI2MzgyLDYzNzg1LDI2NDcwLDI2NTU1LDI2NzA2LDI2NTYwLDI2NjI1LDI2NjkyLDI2ODMxLDY0MDE5LDI2OTg0LDY0MDIwLDI3MDMyLDI3MTA2LDI3MTg0LDI3MjQzLDI3MjA2LDI3MjUxLDI3''@;'; put 'put ''MjYyLDI3MzYyLDI3MzY0LDI3NjA2LDI3NzExLDI3NzQwLDI3NzgyLDI3NzU5LDI3ODY2LDI3OTA4LDI4MDM5LDI4MDE1LDI4MDU0LDI4MDc2LDI4MTExLDI4MTUyLDI4MTQ2LDI4MTU2LDI4MjE3LDI4MjUyLDI4MTk5LDI4MjIwLDI4MzUxLDI4NTUyLDI4NTk3LDI4NjYxLDI4Njc3LDI4Njc5''@;'; put 'put ''LDI4NzEyLDI4ODA1LDI4ODQzLDI4OTQzLDI4OTMyLDI5MDIwLDI4OTk4LDI4OTk5LDY0MDIxLDI5MTIxLDI5MTgyLDI5MzYxLDI5Mzc0LDI5NDc2LDY0MDIyLDI5NTU5LDI5NjI5LDI5NjQxLDI5NjU0LDI5NjY3LDI5NjUwLDI5NzAzLDI5Njg1LDI5NzM0LDI5NzM4LDI5NzM3LDI5NzQyLDI5''@;'; put 'put ''Nzk0LDI5ODMzLDI5ODU1LDI5OTUzLDMwMDYzLDMwMzM4LDMwMzY0LDMwMzY2LDMwMzYzLDMwMzc0LDY0MDIzLDMwNTM0LDIxMTY3LDMwNzUzLDMwNzk4LDMwODIwLDMwODQyLDMxMDI0LDY0MDI0LDY0MDI1LDY0MDI2LDMxMTI0LDY0MDI3LDMxMTMxLDMxNDQxLDMxNDYzLDY0MDI4LDMxNDY3''@;'; put 'put ''LDMxNjQ2LDY0MDI5LDMyMDcyLDMyMDkyLDMyMTgzLDMyMTYwLDMyMjE0LDMyMzM4LDMyNTgzLDMyNjczLDY0MDMwLDMzNTM3LDMzNjM0LDMzNjYzLDMzNzM1LDMzNzgyLDMzODY0LDMzOTcyLDM0MTMxLDM0MTM3LDM0MTU1LDY0MDMxLDM0MjI0LDY0MDMyLDY0MDMzLDM0ODIzLDM1MDYxLDM1''@;'; put 'put ''MzQ2LDM1MzgzLDM1NDQ5LDM1NDk1LDM1NTE4LDM1NTUxLDY0MDM0LDM1NTc0LDM1NjY3LDM1NzExLDM2MDgwLDM2MDg0LDM2MTE0LDM2MjE0LDY0MDM1LDM2NTU5LDY0MDM2LDY0MDM3LDM2OTY3LDM3MDg2LDY0MDM4LDM3MTQxLDM3MTU5LDM3MzM4LDM3MzM1LDM3MzQyLDM3MzU3LDM3MzU4''@;'; put 'put ''LDM3MzQ4LDM3MzQ5LDM3MzgyLDM3MzkyLDM3Mzg2LDM3NDM0LDM3NDQwLDM3NDM2LDM3NDU0LDM3NDY1LDM3NDU3LDM3NDMzLDM3NDc5LDM3NTQzLDM3NDk1LDM3NDk2LDM3NjA3LDM3NTkxLDM3NTkzLDM3NTg0LDY0MDM5LDM3NTg5LDM3NjAwLDM3NTg3LDM3NjY5LDM3NjY1LDM3NjI3LDY0''@;'; put 'put ''MDQwLDM3NjYyLDM3NjMxLDM3NjYxLDM3NjM0LDM3NzQ0LDM3NzE5LDM3Nzk2LDM3ODMwLDM3ODU0LDM3ODgwLDM3OTM3LDM3OTU3LDM3OTYwLDM4MjkwLDYzOTY0LDY0MDQxLDM4NTU3LDM4NTc1LDM4NzA3LDM4NzE1LDM4NzIzLDM4NzMzLDM4NzM1LDM4NzM3LDM4NzQxLDM4OTk5LDM5MDEz''@;'; put 'put ''LDY0MDQyLDY0MDQzLDM5MjA3LDY0MDQ0LDM5MzI2LDM5NTAyLDM5NjQxLDM5NjQ0LDM5Nzk3LDM5Nzk0LDM5ODIzLDM5ODU3LDM5ODY3LDM5OTM2LDQwMzA0LDQwMjk5LDY0MDQ1LDQwNDczLDQwNjU3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbF0samlzMDIxMjpbbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNzI4LDcxMSwxODQsNzI5LDczMywxNzUsNzMxLDczMCw2NTM3NCw5MDAsOTAxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNjEsMTY2LDE5MSxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsMTg2LDE3MCwxNjksMTc0LDg0ODIsMTY0LDg0NzAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDkwMiw5MDQsOTA1LDkwNiw5MzgsbnVsbCw5MDgsbnVsbCw5MTAsOTM5LG51bGwsOTExLG51bGwsbnVsbCxudWxsLG51bGwsOTQwLDk0MSw5NDIsOTQzLDk3MCw5MTIsOTcyLDk2Miw5NzMsOTcxLDk0NCw5NzQsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEwMjYsMTAy''@;'; put 'put ''NywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM4LDEwMzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE4LDExMTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxOTgsMjcyLG51bGwsMjk0LG51bGwsMzA2LG51bGwsMzIxLDMxOSxudWxsLDMzMCwyMTYsMzM4LG51''@;'; put 'put ''bGwsMzU4LDIyMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIzMCwyNzMsMjQwLDI5NSwzMDUsMzA3LDMxMiwzMjIsMzIwLDMyOSwzMzEsMjQ4LDMzOSwyMjMsMzU5LDI1NCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE5MywxOTIsMTk2LDE5NCwyNTgsNDYxLDI1NiwyNjAsMTk3LDE5NSwyNjIsMjY0LDI2OCwxOTksMjY2LDI3MCwyMDEsMjAwLDIwMywyMDIsMjgyLDI3OCwyNzQsMjgwLG51bGwsMjg0LDI4Niwy''@;'; put 'put ''OTAsMjg4LDI5MiwyMDUsMjA0LDIwNywyMDYsNDYzLDMwNCwyOTgsMzAyLDI5NiwzMDgsMzEwLDMxMywzMTcsMzE1LDMyMywzMjcsMzI1LDIwOSwyMTEsMjEwLDIxNCwyMTIsNDY1LDMzNiwzMzIsMjEzLDM0MCwzNDQsMzQyLDM0NiwzNDgsMzUyLDM1MCwzNTYsMzU0LDIxOCwyMTcsMjIwLDIx''@;'; put 'put ''OSwzNjQsNDY3LDM2OCwzNjIsMzcwLDM2NiwzNjAsNDcxLDQ3NSw0NzMsNDY5LDM3MiwyMjEsMzc2LDM3NCwzNzcsMzgxLDM3OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIyNSwyMjQsMjI4LDIyNiwyNTksNDYyLDI1NywyNjEsMjI5LDIyNywyNjMsMjY1LDI2OSwyMzEs''@;'; put 'put ''MjY3LDI3MSwyMzMsMjMyLDIzNSwyMzQsMjgzLDI3OSwyNzUsMjgxLDUwMSwyODUsMjg3LG51bGwsMjg5LDI5MywyMzcsMjM2LDIzOSwyMzgsNDY0LG51bGwsMjk5LDMwMywyOTcsMzA5LDMxMSwzMTQsMzE4LDMxNiwzMjQsMzI4LDMyNiwyNDEsMjQzLDI0MiwyNDYsMjQ0LDQ2NiwzMzcsMzMz''@;'; put 'put ''LDI0NSwzNDEsMzQ1LDM0MywzNDcsMzQ5LDM1MywzNTEsMzU3LDM1NSwyNTAsMjQ5LDI1MiwyNTEsMzY1LDQ2OCwzNjksMzYzLDM3MSwzNjcsMzYxLDQ3Miw0NzYsNDc0LDQ3MCwzNzMsMjUzLDI1NSwzNzUsMzc4LDM4MiwzODAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE5OTcwLDE5OTcyLDE5OTczLDE5OTgwLDE5OTg2LDE5OTk5LDIwMDAzLDIwMDA0LDIwMDA4LDIwMDExLDIwMDE0LDIwMDE1LDIwMDE2LDIwMDIxLDIwMDMyLDIwMDMzLDIwMDM2''@;'; put 'put ''LDIwMDM5LDIwMDQ5LDIwMDU4LDIwMDYwLDIwMDY3LDIwMDcyLDIwMDczLDIwMDg0LDIwMDg1LDIwMDg5LDIwMDk1LDIwMTA5LDIwMTE4LDIwMTE5LDIwMTI1LDIwMTQzLDIwMTUzLDIwMTYzLDIwMTc2LDIwMTg2LDIwMTg3LDIwMTkyLDIwMTkzLDIwMTk0LDIwMjAwLDIwMjA3LDIwMjA5LDIw''@;'; put 'put ''MjExLDIwMjEzLDIwMjIxLDIwMjIyLDIwMjIzLDIwMjI0LDIwMjI2LDIwMjI3LDIwMjMyLDIwMjM1LDIwMjM2LDIwMjQyLDIwMjQ1LDIwMjQ2LDIwMjQ3LDIwMjQ5LDIwMjcwLDIwMjczLDIwMzIwLDIwMjc1LDIwMjc3LDIwMjc5LDIwMjgxLDIwMjgzLDIwMjg2LDIwMjg4LDIwMjkwLDIwMjk2''@;'; put 'put ''LDIwMjk3LDIwMjk5LDIwMzAwLDIwMzA2LDIwMzA4LDIwMzEwLDIwMzEyLDIwMzE5LDIwMzIzLDIwMzMwLDIwMzMyLDIwMzM0LDIwMzM3LDIwMzQzLDIwMzQ0LDIwMzQ1LDIwMzQ2LDIwMzQ5LDIwMzUwLDIwMzUzLDIwMzU0LDIwMzU2LDIwMzU3LDIwMzYxLDIwMzYyLDIwMzY0LDIwMzY2LDIw''@;'; put 'put ''MzY4LDIwMzcwLDIwMzcxLDIwMzcyLDIwMzc1LDIwMzc3LDIwMzc4LDIwMzgyLDIwMzgzLDIwNDAyLDIwNDA3LDIwNDA5LDIwNDExLDIwNDEyLDIwNDEzLDIwNDE0LDIwNDE2LDIwNDE3LDIwNDIxLDIwNDIyLDIwNDI0LDIwNDI1LDIwNDI3LDIwNDI4LDIwNDI5LDIwNDMxLDIwNDM0LDIwNDQ0''@;'; put 'put ''LDIwNDQ4LDIwNDUwLDIwNDY0LDIwNDY2LDIwNDc2LDIwNDc3LDIwNDc5LDIwNDgwLDIwNDgxLDIwNDg0LDIwNDg3LDIwNDkwLDIwNDkyLDIwNDk0LDIwNDk2LDIwNDk5LDIwNTAzLDIwNTA0LDIwNTA3LDIwNTA4LDIwNTA5LDIwNTEwLDIwNTE0LDIwNTE5LDIwNTI2LDIwNTI4LDIwNTMwLDIw''@;'; put 'put ''NTMxLDIwNTMzLDIwNTQ0LDIwNTQ1LDIwNTQ2LDIwNTQ5LDIwNTUwLDIwNTU0LDIwNTU2LDIwNTU4LDIwNTYxLDIwNTYyLDIwNTYzLDIwNTY3LDIwNTY5LDIwNTc1LDIwNTc2LDIwNTc4LDIwNTc5LDIwNTgyLDIwNTgzLDIwNTg2LDIwNTg5LDIwNTkyLDIwNTkzLDIwNTM5LDIwNjA5LDIwNjEx''@;'; put 'put ''LDIwNjEyLDIwNjE0LDIwNjE4LDIwNjIyLDIwNjIzLDIwNjI0LDIwNjI2LDIwNjI3LDIwNjI4LDIwNjMwLDIwNjM1LDIwNjM2LDIwNjM4LDIwNjM5LDIwNjQwLDIwNjQxLDIwNjQyLDIwNjUwLDIwNjU1LDIwNjU2LDIwNjY1LDIwNjY2LDIwNjY5LDIwNjcyLDIwNjc1LDIwNjc2LDIwNjc5LDIw''@;'; put 'put ''Njg0LDIwNjg2LDIwNjg4LDIwNjkxLDIwNjkyLDIwNjk2LDIwNzAwLDIwNzAxLDIwNzAzLDIwNzA2LDIwNzA4LDIwNzEwLDIwNzEyLDIwNzEzLDIwNzE5LDIwNzIxLDIwNzI2LDIwNzMwLDIwNzM0LDIwNzM5LDIwNzQyLDIwNzQzLDIwNzQ0LDIwNzQ3LDIwNzQ4LDIwNzQ5LDIwNzUwLDIwNzIy''@;'; put 'put ''LDIwNzUyLDIwNzU5LDIwNzYxLDIwNzYzLDIwNzY0LDIwNzY1LDIwNzY2LDIwNzcxLDIwNzc1LDIwNzc2LDIwNzgwLDIwNzgxLDIwNzgzLDIwNzg1LDIwNzg3LDIwNzg4LDIwNzg5LDIwNzkyLDIwNzkzLDIwODAyLDIwODEwLDIwODE1LDIwODE5LDIwODIxLDIwODIzLDIwODI0LDIwODMxLDIw''@;'; put 'put ''ODM2LDIwODM4LDIwODYyLDIwODY3LDIwODY4LDIwODc1LDIwODc4LDIwODg4LDIwODkzLDIwODk3LDIwODk5LDIwOTA5LDIwOTIwLDIwOTIyLDIwOTI0LDIwOTI2LDIwOTI3LDIwOTMwLDIwOTM2LDIwOTQzLDIwOTQ1LDIwOTQ2LDIwOTQ3LDIwOTQ5LDIwOTUyLDIwOTU4LDIwOTYyLDIwOTY1''@;'; put 'put ''LDIwOTc0LDIwOTc4LDIwOTc5LDIwOTgwLDIwOTgzLDIwOTkzLDIwOTk0LDIwOTk3LDIxMDEwLDIxMDExLDIxMDEzLDIxMDE0LDIxMDE2LDIxMDI2LDIxMDMyLDIxMDQxLDIxMDQyLDIxMDQ1LDIxMDUyLDIxMDYxLDIxMDY1LDIxMDc3LDIxMDc5LDIxMDgwLDIxMDgyLDIxMDg0LDIxMDg3LDIx''@;'; put 'put ''MDg4LDIxMDg5LDIxMDk0LDIxMTAyLDIxMTExLDIxMTEyLDIxMTEzLDIxMTIwLDIxMTIyLDIxMTI1LDIxMTMwLDIxMTMyLDIxMTM5LDIxMTQxLDIxMTQyLDIxMTQzLDIxMTQ0LDIxMTQ2LDIxMTQ4LDIxMTU2LDIxMTU3LDIxMTU4LDIxMTU5LDIxMTY3LDIxMTY4LDIxMTc0LDIxMTc1LDIxMTc2''@;'; put 'put ''LDIxMTc4LDIxMTc5LDIxMTgxLDIxMTg0LDIxMTg4LDIxMTkwLDIxMTkyLDIxMTk2LDIxMTk5LDIxMjAxLDIxMjA0LDIxMjA2LDIxMjExLDIxMjEyLDIxMjE3LDIxMjIxLDIxMjI0LDIxMjI1LDIxMjI2LDIxMjI4LDIxMjMyLDIxMjMzLDIxMjM2LDIxMjM4LDIxMjM5LDIxMjQ4LDIxMjUxLDIx''@;'; put 'put ''MjU4LDIxMjU5LDIxMjYwLDIxMjY1LDIxMjY3LDIxMjcyLDIxMjc1LDIxMjc2LDIxMjc4LDIxMjc5LDIxMjg1LDIxMjg3LDIxMjg4LDIxMjg5LDIxMjkxLDIxMjkyLDIxMjkzLDIxMjk2LDIxMjk4LDIxMzAxLDIxMzA4LDIxMzA5LDIxMzEwLDIxMzE0LDIxMzI0LDIxMzIzLDIxMzM3LDIxMzM5''@;'; put 'put ''LDIxMzQ1LDIxMzQ3LDIxMzQ5LDIxMzU2LDIxMzU3LDIxMzYyLDIxMzY5LDIxMzc0LDIxMzc5LDIxMzgzLDIxMzg0LDIxMzkwLDIxMzk1LDIxMzk2LDIxNDAxLDIxNDA1LDIxNDA5LDIxNDEyLDIxNDE4LDIxNDE5LDIxNDIzLDIxNDI2LDIxNDI4LDIxNDI5LDIxNDMxLDIxNDMyLDIxNDM0LDIx''@;'; put 'put ''NDM3LDIxNDQwLDIxNDQ1LDIxNDU1LDIxNDU4LDIxNDU5LDIxNDYxLDIxNDY2LDIxNDY5LDIxNDcwLDIxNDcyLDIxNDc4LDIxNDc5LDIxNDkzLDIxNTA2LDIxNTIzLDIxNTMwLDIxNTM3LDIxNTQzLDIxNTQ0LDIxNTQ2LDIxNTUxLDIxNTUzLDIxNTU2LDIxNTU3LDIxNTcxLDIxNTcyLDIxNTc1''@;'; put 'put ''LDIxNTgxLDIxNTgzLDIxNTk4LDIxNjAyLDIxNjA0LDIxNjA2LDIxNjA3LDIxNjA5LDIxNjExLDIxNjEzLDIxNjE0LDIxNjIwLDIxNjMxLDIxNjMzLDIxNjM1LDIxNjM3LDIxNjQwLDIxNjQxLDIxNjQ1LDIxNjQ5LDIxNjUzLDIxNjU0LDIxNjYwLDIxNjYzLDIxNjY1LDIxNjcwLDIxNjcxLDIx''@;'; put 'put ''NjczLDIxNjc0LDIxNjc3LDIxNjc4LDIxNjgxLDIxNjg3LDIxNjg5LDIxNjkwLDIxNjkxLDIxNjk1LDIxNzAyLDIxNzA2LDIxNzA5LDIxNzEwLDIxNzI4LDIxNzM4LDIxNzQwLDIxNzQzLDIxNzUwLDIxNzU2LDIxNzU4LDIxNzU5LDIxNzYwLDIxNzYxLDIxNzY1LDIxNzY4LDIxNzY5LDIxNzcy''@;'; put 'put ''LDIxNzczLDIxNzc0LDIxNzgxLDIxODAyLDIxODAzLDIxODEwLDIxODEzLDIxODE0LDIxODE5LDIxODIwLDIxODIxLDIxODI1LDIxODMxLDIxODMzLDIxODM0LDIxODM3LDIxODQwLDIxODQxLDIxODQ4LDIxODUwLDIxODUxLDIxODU0LDIxODU2LDIxODU3LDIxODYwLDIxODYyLDIxODg3LDIx''@;'; put 'put ''ODg5LDIxODkwLDIxODk0LDIxODk2LDIxOTAyLDIxOTAzLDIxOTA1LDIxOTA2LDIxOTA3LDIxOTA4LDIxOTExLDIxOTIzLDIxOTI0LDIxOTMzLDIxOTM4LDIxOTUxLDIxOTUzLDIxOTU1LDIxOTU4LDIxOTYxLDIxOTYzLDIxOTY0LDIxOTY2LDIxOTY5LDIxOTcwLDIxOTcxLDIxOTc1LDIxOTc2''@;'; put 'put ''LDIxOTc5LDIxOTgyLDIxOTg2LDIxOTkzLDIyMDA2LDIyMDE1LDIyMDIxLDIyMDI0LDIyMDI2LDIyMDI5LDIyMDMwLDIyMDMxLDIyMDMyLDIyMDMzLDIyMDM0LDIyMDQxLDIyMDYwLDIyMDY0LDIyMDY3LDIyMDY5LDIyMDcxLDIyMDczLDIyMDc1LDIyMDc2LDIyMDc3LDIyMDc5LDIyMDgwLDIy''@;'; put 'put ''MDgxLDIyMDgzLDIyMDg0LDIyMDg2LDIyMDg5LDIyMDkxLDIyMDkzLDIyMDk1LDIyMTAwLDIyMTEwLDIyMTEyLDIyMTEzLDIyMTE0LDIyMTE1LDIyMTE4LDIyMTIxLDIyMTI1LDIyMTI3LDIyMTI5LDIyMTMwLDIyMTMzLDIyMTQ4LDIyMTQ5LDIyMTUyLDIyMTU1LDIyMTU2LDIyMTY1LDIyMTY5''@;'; put 'put ''LDIyMTcwLDIyMTczLDIyMTc0LDIyMTc1LDIyMTgyLDIyMTgzLDIyMTg0LDIyMTg1LDIyMTg3LDIyMTg4LDIyMTg5LDIyMTkzLDIyMTk1LDIyMTk5LDIyMjA2LDIyMjEzLDIyMjE3LDIyMjE4LDIyMjE5LDIyMjIzLDIyMjI0LDIyMjIwLDIyMjIxLDIyMjMzLDIyMjM2LDIyMjM3LDIyMjM5LDIy''@;'; put 'put ''MjQxLDIyMjQ0LDIyMjQ1LDIyMjQ2LDIyMjQ3LDIyMjQ4LDIyMjU3LDIyMjUxLDIyMjUzLDIyMjYyLDIyMjYzLDIyMjczLDIyMjc0LDIyMjc5LDIyMjgyLDIyMjg0LDIyMjg5LDIyMjkzLDIyMjk4LDIyMjk5LDIyMzAxLDIyMzA0LDIyMzA2LDIyMzA3LDIyMzA4LDIyMzA5LDIyMzEzLDIyMzE0''@;'; put 'put ''LDIyMzE2LDIyMzE4LDIyMzE5LDIyMzIzLDIyMzI0LDIyMzMzLDIyMzM0LDIyMzM1LDIyMzQxLDIyMzQyLDIyMzQ4LDIyMzQ5LDIyMzU0LDIyMzcwLDIyMzczLDIyMzc1LDIyMzc2LDIyMzc5LDIyMzgxLDIyMzgyLDIyMzgzLDIyMzg0LDIyMzg1LDIyMzg3LDIyMzg4LDIyMzg5LDIyMzkxLDIy''@;'; put 'put ''MzkzLDIyMzk0LDIyMzk1LDIyMzk2LDIyMzk4LDIyNDAxLDIyNDAzLDIyNDEyLDIyNDIwLDIyNDIzLDIyNDI1LDIyNDI2LDIyNDI4LDIyNDI5LDIyNDMwLDIyNDMxLDIyNDMzLDIyNDIxLDIyNDM5LDIyNDQwLDIyNDQxLDIyNDQ0LDIyNDU2LDIyNDYxLDIyNDcxLDIyNDcyLDIyNDc2LDIyNDc5''@;'; put 'put ''LDIyNDg1LDIyNDkzLDIyNDk0LDIyNTAwLDIyNTAyLDIyNTAzLDIyNTA1LDIyNTA5LDIyNTEyLDIyNTE3LDIyNTE4LDIyNTIwLDIyNTI1LDIyNTI2LDIyNTI3LDIyNTMxLDIyNTMyLDIyNTM2LDIyNTM3LDIyNDk3LDIyNTQwLDIyNTQxLDIyNTU1LDIyNTU4LDIyNTU5LDIyNTYwLDIyNTY2LDIy''@;'; put 'put ''NTY3LDIyNTczLDIyNTc4LDIyNTg1LDIyNTkxLDIyNjAxLDIyNjA0LDIyNjA1LDIyNjA3LDIyNjA4LDIyNjEzLDIyNjIzLDIyNjI1LDIyNjI4LDIyNjMxLDIyNjMyLDIyNjQ4LDIyNjUyLDIyNjU1LDIyNjU2LDIyNjU3LDIyNjYzLDIyNjY0LDIyNjY1LDIyNjY2LDIyNjY4LDIyNjY5LDIyNjcx''@;'; put 'put ''LDIyNjcyLDIyNjc2LDIyNjc4LDIyNjg1LDIyNjg4LDIyNjg5LDIyNjkwLDIyNjk0LDIyNjk3LDIyNzA1LDIyNzA2LDIyNzI0LDIyNzE2LDIyNzIyLDIyNzI4LDIyNzMzLDIyNzM0LDIyNzM2LDIyNzM4LDIyNzQwLDIyNzQyLDIyNzQ2LDIyNzQ5LDIyNzUzLDIyNzU0LDIyNzYxLDIyNzcxLDIy''@;'; put 'put ''Nzg5LDIyNzkwLDIyNzk1LDIyNzk2LDIyODAyLDIyODAzLDIyODA0LDM0MzY5LDIyODEzLDIyODE3LDIyODE5LDIyODIwLDIyODI0LDIyODMxLDIyODMyLDIyODM1LDIyODM3LDIyODM4LDIyODQ3LDIyODUxLDIyODU0LDIyODY2LDIyODY3LDIyODczLDIyODc1LDIyODc3LDIyODc4LDIyODc5''@;'; put 'put ''LDIyODgxLDIyODgzLDIyODkxLDIyODkzLDIyODk1LDIyODk4LDIyOTAxLDIyOTAyLDIyOTA1LDIyOTA3LDIyOTA4LDIyOTIzLDIyOTI0LDIyOTI2LDIyOTMwLDIyOTMzLDIyOTM1LDIyOTQzLDIyOTQ4LDIyOTUxLDIyOTU3LDIyOTU4LDIyOTU5LDIyOTYwLDIyOTYzLDIyOTY3LDIyOTcwLDIy''@;'; put 'put ''OTcyLDIyOTc3LDIyOTc5LDIyOTgwLDIyOTg0LDIyOTg2LDIyOTg5LDIyOTk0LDIzMDA1LDIzMDA2LDIzMDA3LDIzMDExLDIzMDEyLDIzMDE1LDIzMDIyLDIzMDIzLDIzMDI1LDIzMDI2LDIzMDI4LDIzMDMxLDIzMDQwLDIzMDQ0LDIzMDUyLDIzMDUzLDIzMDU0LDIzMDU4LDIzMDU5LDIzMDcw''@;'; put 'put ''LDIzMDc1LDIzMDc2LDIzMDc5LDIzMDgwLDIzMDgyLDIzMDg1LDIzMDg4LDIzMTA4LDIzMTA5LDIzMTExLDIzMTEyLDIzMTE2LDIzMTIwLDIzMTI1LDIzMTM0LDIzMTM5LDIzMTQxLDIzMTQzLDIzMTQ5LDIzMTU5LDIzMTYyLDIzMTYzLDIzMTY2LDIzMTc5LDIzMTg0LDIzMTg3LDIzMTkwLDIz''@;'; put 'put ''MTkzLDIzMTk2LDIzMTk4LDIzMTk5LDIzMjAwLDIzMjAyLDIzMjA3LDIzMjEyLDIzMjE3LDIzMjE4LDIzMjE5LDIzMjIxLDIzMjI0LDIzMjI2LDIzMjI3LDIzMjMxLDIzMjM2LDIzMjM4LDIzMjQwLDIzMjQ3LDIzMjU4LDIzMjYwLDIzMjY0LDIzMjY5LDIzMjc0LDIzMjc4LDIzMjg1LDIzMjg2''@;'; put 'put ''LDIzMjkzLDIzMjk2LDIzMjk3LDIzMzA0LDIzMzE5LDIzMzQ4LDIzMzIxLDIzMzIzLDIzMzI1LDIzMzI5LDIzMzMzLDIzMzQxLDIzMzUyLDIzMzYxLDIzMzcxLDIzMzcyLDIzMzc4LDIzMzgyLDIzMzkwLDIzNDAwLDIzNDA2LDIzNDA3LDIzNDIwLDIzNDIxLDIzNDIyLDIzNDIzLDIzNDI1LDIz''@;'; put 'put ''NDI4LDIzNDMwLDIzNDM0LDIzNDM4LDIzNDQwLDIzNDQxLDIzNDQzLDIzNDQ0LDIzNDQ2LDIzNDY0LDIzNDY1LDIzNDY4LDIzNDY5LDIzNDcxLDIzNDczLDIzNDc0LDIzNDc5LDIzNDgyLDIzNDg0LDIzNDg4LDIzNDg5LDIzNTAxLDIzNTAzLDIzNTEwLDIzNTExLDIzNTEyLDIzNTEzLDIzNTE0''@;'; put 'put ''LDIzNTIwLDIzNTM1LDIzNTM3LDIzNTQwLDIzNTQ5LDIzNTY0LDIzNTc1LDIzNTgyLDIzNTgzLDIzNTg3LDIzNTkwLDIzNTkzLDIzNTk1LDIzNTk2LDIzNTk4LDIzNjAwLDIzNjAyLDIzNjA1LDIzNjA2LDIzNjQxLDIzNjQyLDIzNjQ0LDIzNjUwLDIzNjUxLDIzNjU1LDIzNjU2LDIzNjU3LDIz''@;'; put 'put ''NjYxLDIzNjY0LDIzNjY4LDIzNjY5LDIzNjc0LDIzNjc1LDIzNjc2LDIzNjc3LDIzNjg3LDIzNjg4LDIzNjkwLDIzNjk1LDIzNjk4LDIzNzA5LDIzNzExLDIzNzEyLDIzNzE0LDIzNzE1LDIzNzE4LDIzNzIyLDIzNzMwLDIzNzMyLDIzNzMzLDIzNzM4LDIzNzUzLDIzNzU1LDIzNzYyLDIzNzcz''@;'; put 'put ''LDIzNzY3LDIzNzkwLDIzNzkzLDIzNzk0LDIzNzk2LDIzODA5LDIzODE0LDIzODIxLDIzODI2LDIzODUxLDIzODQzLDIzODQ0LDIzODQ2LDIzODQ3LDIzODU3LDIzODYwLDIzODY1LDIzODY5LDIzODcxLDIzODc0LDIzODc1LDIzODc4LDIzODgwLDIzODkzLDIzODg5LDIzODk3LDIzODgyLDIz''@;'; put 'put ''OTAzLDIzOTA0LDIzOTA1LDIzOTA2LDIzOTA4LDIzOTE0LDIzOTE3LDIzOTIwLDIzOTI5LDIzOTMwLDIzOTM0LDIzOTM1LDIzOTM3LDIzOTM5LDIzOTQ0LDIzOTQ2LDIzOTU0LDIzOTU1LDIzOTU2LDIzOTU3LDIzOTYxLDIzOTYzLDIzOTY3LDIzOTY4LDIzOTc1LDIzOTc5LDIzOTg0LDIzOTg4''@;'; put 'put ''LDIzOTkyLDIzOTkzLDI0MDAzLDI0MDA3LDI0MDExLDI0MDE2LDI0MDE0LDI0MDI0LDI0MDI1LDI0MDMyLDI0MDM2LDI0MDQxLDI0MDU2LDI0MDU3LDI0MDY0LDI0MDcxLDI0MDc3LDI0MDgyLDI0MDg0LDI0MDg1LDI0MDg4LDI0MDk1LDI0MDk2LDI0MTEwLDI0MTA0LDI0MTE0LDI0MTE3LDI0''@;'; put 'put ''MTI2LDI0MTM5LDI0MTQ0LDI0MTM3LDI0MTQ1LDI0MTUwLDI0MTUyLDI0MTU1LDI0MTU2LDI0MTU4LDI0MTY4LDI0MTcwLDI0MTcxLDI0MTcyLDI0MTczLDI0MTc0LDI0MTc2LDI0MTkyLDI0MjAzLDI0MjA2LDI0MjI2LDI0MjI4LDI0MjI5LDI0MjMyLDI0MjM0LDI0MjM2LDI0MjQxLDI0MjQz''@;'; put 'put ''LDI0MjUzLDI0MjU0LDI0MjU1LDI0MjYyLDI0MjY4LDI0MjY3LDI0MjcwLDI0MjczLDI0Mjc0LDI0Mjc2LDI0Mjc3LDI0Mjg0LDI0Mjg2LDI0MjkzLDI0Mjk5LDI0MzIyLDI0MzI2LDI0MzI3LDI0MzI4LDI0MzM0LDI0MzQ1LDI0MzQ4LDI0MzQ5LDI0MzUzLDI0MzU0LDI0MzU1LDI0MzU2LDI0''@;'; put 'put ''MzYwLDI0MzYzLDI0MzY0LDI0MzY2LDI0MzY4LDI0MzcyLDI0Mzc0LDI0Mzc5LDI0MzgxLDI0MzgzLDI0Mzg0LDI0Mzg4LDI0Mzg5LDI0MzkxLDI0Mzk3LDI0NDAwLDI0NDA0LDI0NDA4LDI0NDExLDI0NDE2LDI0NDE5LDI0NDIwLDI0NDIzLDI0NDMxLDI0NDM0LDI0NDM2LDI0NDM3LDI0NDQw''@;'; put 'put ''LDI0NDQyLDI0NDQ1LDI0NDQ2LDI0NDU3LDI0NDYxLDI0NDYzLDI0NDcwLDI0NDc2LDI0NDc3LDI0NDgyLDI0NDg3LDI0NDkxLDI0NDg0LDI0NDkyLDI0NDk1LDI0NDk2LDI0NDk3LDI0NTA0LDI0NTE2LDI0NTE5LDI0NTIwLDI0NTIxLDI0NTIzLDI0NTI4LDI0NTI5LDI0NTMwLDI0NTMxLDI0''@;'; put 'put ''NTMyLDI0NTQyLDI0NTQ1LDI0NTQ2LDI0NTUyLDI0NTUzLDI0NTU0LDI0NTU2LDI0NTU3LDI0NTU4LDI0NTU5LDI0NTYyLDI0NTYzLDI0NTY2LDI0NTcwLDI0NTcyLDI0NTgzLDI0NTg2LDI0NTg5LDI0NTk1LDI0NTk2LDI0NTk5LDI0NjAwLDI0NjAyLDI0NjA3LDI0NjEyLDI0NjIxLDI0NjI3''@;'; put 'put ''LDI0NjI5LDI0NjQwLDI0NjQ3LDI0NjQ4LDI0NjQ5LDI0NjUyLDI0NjU3LDI0NjYwLDI0NjYyLDI0NjYzLDI0NjY5LDI0NjczLDI0Njc5LDI0Njg5LDI0NzAyLDI0NzAzLDI0NzA2LDI0NzEwLDI0NzEyLDI0NzE0LDI0NzE4LDI0NzIxLDI0NzIzLDI0NzI1LDI0NzI4LDI0NzMzLDI0NzM0LDI0''@;'; put 'put ''NzM4LDI0NzQwLDI0NzQxLDI0NzQ0LDI0NzUyLDI0NzUzLDI0NzU5LDI0NzYzLDI0NzY2LDI0NzcwLDI0NzcyLDI0Nzc2LDI0Nzc3LDI0Nzc4LDI0Nzc5LDI0NzgyLDI0NzgzLDI0Nzg4LDI0Nzg5LDI0NzkzLDI0Nzk1LDI0Nzk3LDI0Nzk4LDI0ODAyLDI0ODA1LDI0ODE4LDI0ODIxLDI0ODI0''@;'; put 'put ''LDI0ODI4LDI0ODI5LDI0ODM0LDI0ODM5LDI0ODQyLDI0ODQ0LDI0ODQ4LDI0ODQ5LDI0ODUwLDI0ODUxLDI0ODUyLDI0ODU0LDI0ODU1LDI0ODU3LDI0ODYwLDI0ODYyLDI0ODY2LDI0ODc0LDI0ODc1LDI0ODgwLDI0ODgxLDI0ODg1LDI0ODg2LDI0ODg3LDI0ODg5LDI0ODk3LDI0OTAxLDI0''@;'; put 'put ''OTAyLDI0OTA1LDI0OTI2LDI0OTI4LDI0OTQwLDI0OTQ2LDI0OTUyLDI0OTU1LDI0OTU2LDI0OTU5LDI0OTYwLDI0OTYxLDI0OTYzLDI0OTY0LDI0OTcxLDI0OTczLDI0OTc4LDI0OTc5LDI0OTgzLDI0OTg0LDI0OTg4LDI0OTg5LDI0OTkxLDI0OTkyLDI0OTk3LDI1ZTMsMjUwMDIsMjUwMDUs''@;'; put 'put ''MjUwMTYsMjUwMTcsMjUwMjAsMjUwMjQsMjUwMjUsMjUwMjYsMjUwMzgsMjUwMzksMjUwNDUsMjUwNTIsMjUwNTMsMjUwNTQsMjUwNTUsMjUwNTcsMjUwNTgsMjUwNjMsMjUwNjUsMjUwNjEsMjUwNjgsMjUwNjksMjUwNzEsMjUwODksMjUwOTEsMjUwOTIsMjUwOTUsMjUxMDcsMjUxMDksMjUx''@;'; put 'put ''MTYsMjUxMjAsMjUxMjIsMjUxMjMsMjUxMjcsMjUxMjksMjUxMzEsMjUxNDUsMjUxNDksMjUxNTQsMjUxNTUsMjUxNTYsMjUxNTgsMjUxNjQsMjUxNjgsMjUxNjksMjUxNzAsMjUxNzIsMjUxNzQsMjUxNzgsMjUxODAsMjUxODgsMjUxOTcsMjUxOTksMjUyMDMsMjUyMTAsMjUyMTMsMjUyMjks''@;'; put 'put ''MjUyMzAsMjUyMzEsMjUyMzIsMjUyNTQsMjUyNTYsMjUyNjcsMjUyNzAsMjUyNzEsMjUyNzQsMjUyNzgsMjUyNzksMjUyODQsMjUyOTQsMjUzMDEsMjUzMDIsMjUzMDYsMjUzMjIsMjUzMzAsMjUzMzIsMjUzNDAsMjUzNDEsMjUzNDcsMjUzNDgsMjUzNTQsMjUzNTUsMjUzNTcsMjUzNjAsMjUz''@;'; put 'put ''NjMsMjUzNjYsMjUzNjgsMjUzODUsMjUzODYsMjUzODksMjUzOTcsMjUzOTgsMjU0MDEsMjU0MDQsMjU0MDksMjU0MTAsMjU0MTEsMjU0MTIsMjU0MTQsMjU0MTgsMjU0MTksMjU0MjIsMjU0MjYsMjU0MjcsMjU0MjgsMjU0MzIsMjU0MzUsMjU0NDUsMjU0NDYsMjU0NTIsMjU0NTMsMjU0NTcs''@;'; put 'put ''MjU0NjAsMjU0NjEsMjU0NjQsMjU0NjgsMjU0NjksMjU0NzEsMjU0NzQsMjU0NzYsMjU0NzksMjU0ODIsMjU0ODgsMjU0OTIsMjU0OTMsMjU0OTcsMjU0OTgsMjU1MDIsMjU1MDgsMjU1MTAsMjU1MTcsMjU1MTgsMjU1MTksMjU1MzMsMjU1MzcsMjU1NDEsMjU1NDQsMjU1NTAsMjU1NTMsMjU1''@;'; put 'put ''NTUsMjU1NTYsMjU1NTcsMjU1NjQsMjU1NjgsMjU1NzMsMjU1NzgsMjU1ODAsMjU1ODYsMjU1ODcsMjU1ODksMjU1OTIsMjU1OTMsMjU2MDksMjU2MTAsMjU2MTYsMjU2MTgsMjU2MjAsMjU2MjQsMjU2MzAsMjU2MzIsMjU2MzQsMjU2MzYsMjU2MzcsMjU2NDEsMjU2NDIsMjU2NDcsMjU2NDgs''@;'; put 'put ''MjU2NTMsMjU2NjEsMjU2NjMsMjU2NzUsMjU2NzksMjU2ODEsMjU2ODIsMjU2ODMsMjU2ODQsMjU2OTAsMjU2OTEsMjU2OTIsMjU2OTMsMjU2OTUsMjU2OTYsMjU2OTcsMjU2OTksMjU3MDksMjU3MTUsMjU3MTYsMjU3MjMsMjU3MjUsMjU3MzMsMjU3MzUsMjU3NDMsMjU3NDQsMjU3NDUsMjU3''@;'; put 'put ''NTIsMjU3NTMsMjU3NTUsMjU3NTcsMjU3NTksMjU3NjEsMjU3NjMsMjU3NjYsMjU3NjgsMjU3NzIsMjU3NzksMjU3ODksMjU3OTAsMjU3OTEsMjU3OTYsMjU4MDEsMjU4MDIsMjU4MDMsMjU4MDQsMjU4MDYsMjU4MDgsMjU4MDksMjU4MTMsMjU4MTUsMjU4MjgsMjU4MjksMjU4MzMsMjU4MzQs''@;'; put 'put ''MjU4MzcsMjU4NDAsMjU4NDUsMjU4NDcsMjU4NTEsMjU4NTUsMjU4NTcsMjU4NjAsMjU4NjQsMjU4NjUsMjU4NjYsMjU4NzEsMjU4NzUsMjU4NzYsMjU4NzgsMjU4ODEsMjU4ODMsMjU4ODYsMjU4ODcsMjU4OTAsMjU4OTQsMjU4OTcsMjU5MDIsMjU5MDUsMjU5MTQsMjU5MTYsMjU5MTcsMjU5''@;'; put 'put ''MjMsMjU5MjcsMjU5MjksMjU5MzYsMjU5MzgsMjU5NDAsMjU5NTEsMjU5NTIsMjU5NTksMjU5NjMsMjU5NzgsMjU5ODEsMjU5ODUsMjU5ODksMjU5OTQsMjYwMDIsMjYwMDUsMjYwMDgsMjYwMTMsMjYwMTYsMjYwMTksMjYwMjIsMjYwMzAsMjYwMzQsMjYwMzUsMjYwMzYsMjYwNDcsMjYwNTAs''@;'; put 'put ''MjYwNTYsMjYwNTcsMjYwNjIsMjYwNjQsMjYwNjgsMjYwNzAsMjYwNzIsMjYwNzksMjYwOTYsMjYwOTgsMjYxMDAsMjYxMDEsMjYxMDUsMjYxMTAsMjYxMTEsMjYxMTIsMjYxMTYsMjYxMjAsMjYxMjEsMjYxMjUsMjYxMjksMjYxMzAsMjYxMzMsMjYxMzQsMjYxNDEsMjYxNDIsMjYxNDUsMjYx''@;'; put 'put ''NDYsMjYxNDcsMjYxNDgsMjYxNTAsMjYxNTMsMjYxNTQsMjYxNTUsMjYxNTYsMjYxNTgsMjYxNjAsMjYxNjEsMjYxNjMsMjYxNjksMjYxNjcsMjYxNzYsMjYxODEsMjYxODIsMjYxODYsMjYxODgsMjYxOTMsMjYxOTAsMjYxOTksMjYyMDAsMjYyMDEsMjYyMDMsMjYyMDQsMjYyMDgsMjYyMDks''@;'; put 'put ''MjYzNjMsMjYyMTgsMjYyMTksMjYyMjAsMjYyMzgsMjYyMjcsMjYyMjksMjYyMzksMjYyMzEsMjYyMzIsMjYyMzMsMjYyMzUsMjYyNDAsMjYyMzYsMjYyNTEsMjYyNTIsMjYyNTMsMjYyNTYsMjYyNTgsMjYyNjUsMjYyNjYsMjYyNjcsMjYyNjgsMjYyNzEsMjYyNzIsMjYyNzYsMjYyODUsMjYy''@;'; put 'put ''ODksMjYyOTAsMjYyOTMsMjYyOTksMjYzMDMsMjYzMDQsMjYzMDYsMjYzMDcsMjYzMTIsMjYzMTYsMjYzMTgsMjYzMTksMjYzMjQsMjYzMzEsMjYzMzUsMjYzNDQsMjYzNDcsMjYzNDgsMjYzNTAsMjYzNjIsMjYzNzMsMjYzNzUsMjYzODIsMjYzODcsMjYzOTMsMjYzOTYsMjY0MDAsMjY0MDIs''@;'; put 'put ''MjY0MTksMjY0MzAsMjY0MzcsMjY0MzksMjY0NDAsMjY0NDQsMjY0NTIsMjY0NTMsMjY0NjEsMjY0NzAsMjY0NzYsMjY0NzgsMjY0ODQsMjY0ODYsMjY0OTEsMjY0OTcsMjY1MDAsMjY1MTAsMjY1MTEsMjY1MTMsMjY1MTUsMjY1MTgsMjY1MjAsMjY1MjEsMjY1MjMsMjY1NDQsMjY1NDUsMjY1''@;'; put 'put ''NDYsMjY1NDksMjY1NTUsMjY1NTYsMjY1NTcsMjY2MTcsMjY1NjAsMjY1NjIsMjY1NjMsMjY1NjUsMjY1NjgsMjY1NjksMjY1NzgsMjY1ODMsMjY1ODUsMjY1ODgsMjY1OTMsMjY1OTgsMjY2MDgsMjY2MTAsMjY2MTQsMjY2MTUsMjY3MDYsMjY2NDQsMjY2NDksMjY2NTMsMjY2NTUsMjY2NjQs''@;'; put 'put ''MjY2NjMsMjY2NjgsMjY2NjksMjY2NzEsMjY2NzIsMjY2NzMsMjY2NzUsMjY2ODMsMjY2ODcsMjY2OTIsMjY2OTMsMjY2OTgsMjY3MDAsMjY3MDksMjY3MTEsMjY3MTIsMjY3MTUsMjY3MzEsMjY3MzQsMjY3MzUsMjY3MzYsMjY3MzcsMjY3MzgsMjY3NDEsMjY3NDUsMjY3NDYsMjY3NDcsMjY3''@;'; put 'put ''NDgsMjY3NTQsMjY3NTYsMjY3NTgsMjY3NjAsMjY3NzQsMjY3NzYsMjY3NzgsMjY3ODAsMjY3ODUsMjY3ODcsMjY3ODksMjY3OTMsMjY3OTQsMjY3OTgsMjY4MDIsMjY4MTEsMjY4MjEsMjY4MjQsMjY4MjgsMjY4MzEsMjY4MzIsMjY4MzMsMjY4MzUsMjY4MzgsMjY4NDEsMjY4NDQsMjY4NDUs''@;'; put 'put ''MjY4NTMsMjY4NTYsMjY4NTgsMjY4NTksMjY4NjAsMjY4NjEsMjY4NjQsMjY4NjUsMjY4NjksMjY4NzAsMjY4NzUsMjY4NzYsMjY4NzcsMjY4ODYsMjY4ODksMjY4OTAsMjY4OTYsMjY4OTcsMjY4OTksMjY5MDIsMjY5MDMsMjY5MjksMjY5MzEsMjY5MzMsMjY5MzYsMjY5MzksMjY5NDYsMjY5''@;'; put 'put ''NDksMjY5NTMsMjY5NTgsMjY5NjcsMjY5NzEsMjY5NzksMjY5ODAsMjY5ODEsMjY5ODIsMjY5ODQsMjY5ODUsMjY5ODgsMjY5OTIsMjY5OTMsMjY5OTQsMjcwMDIsMjcwMDMsMjcwMDcsMjcwMDgsMjcwMjEsMjcwMjYsMjcwMzAsMjcwMzIsMjcwNDEsMjcwNDUsMjcwNDYsMjcwNDgsMjcwNTEs''@;'; put 'put ''MjcwNTMsMjcwNTUsMjcwNjMsMjcwNjQsMjcwNjYsMjcwNjgsMjcwNzcsMjcwODAsMjcwODksMjcwOTQsMjcwOTUsMjcxMDYsMjcxMDksMjcxMTgsMjcxMTksMjcxMjEsMjcxMjMsMjcxMjUsMjcxMzQsMjcxMzYsMjcxMzcsMjcxMzksMjcxNTEsMjcxNTMsMjcxNTcsMjcxNjIsMjcxNjUsMjcx''@;'; put 'put ''NjgsMjcxNzIsMjcxNzYsMjcxODQsMjcxODYsMjcxODgsMjcxOTEsMjcxOTUsMjcxOTgsMjcxOTksMjcyMDUsMjcyMDYsMjcyMDksMjcyMTAsMjcyMTQsMjcyMTYsMjcyMTcsMjcyMTgsMjcyMjEsMjcyMjIsMjcyMjcsMjcyMzYsMjcyMzksMjcyNDIsMjcyNDksMjcyNTEsMjcyNjIsMjcyNjUs''@;'; put 'put ''MjcyNjcsMjcyNzAsMjcyNzEsMjcyNzMsMjcyNzUsMjcyODEsMjcyOTEsMjcyOTMsMjcyOTQsMjcyOTUsMjczMDEsMjczMDcsMjczMTEsMjczMTIsMjczMTMsMjczMTYsMjczMjUsMjczMjYsMjczMjcsMjczMzQsMjczMzcsMjczMzYsMjczNDAsMjczNDQsMjczNDgsMjczNDksMjczNTAsMjcz''@;'; put 'put ''NTYsMjczNTcsMjczNjQsMjczNjcsMjczNzIsMjczNzYsMjczNzcsMjczNzgsMjczODgsMjczODksMjczOTQsMjczOTUsMjczOTgsMjczOTksMjc0MDEsMjc0MDcsMjc0MDgsMjc0MDksMjc0MTUsMjc0MTksMjc0MjIsMjc0MjgsMjc0MzIsMjc0MzUsMjc0MzYsMjc0MzksMjc0NDUsMjc0NDYs''@;'; put 'put ''Mjc0NTEsMjc0NTUsMjc0NjIsMjc0NjYsMjc0NjksMjc0NzQsMjc0NzgsMjc0ODAsMjc0ODUsMjc0ODgsMjc0OTUsMjc0OTksMjc1MDIsMjc1MDQsMjc1MDksMjc1MTcsMjc1MTgsMjc1MjIsMjc1MjUsMjc1NDMsMjc1NDcsMjc1NTEsMjc1NTIsMjc1NTQsMjc1NTUsMjc1NjAsMjc1NjEsMjc1''@;'; put 'put ''NjQsMjc1NjUsMjc1NjYsMjc1NjgsMjc1NzYsMjc1NzcsMjc1ODEsMjc1ODIsMjc1ODcsMjc1ODgsMjc1OTMsMjc1OTYsMjc2MDYsMjc2MTAsMjc2MTcsMjc2MTksMjc2MjIsMjc2MjMsMjc2MzAsMjc2MzMsMjc2MzksMjc2NDEsMjc2NDcsMjc2NTAsMjc2NTIsMjc2NTMsMjc2NTcsMjc2NjEs''@;'; put 'put ''Mjc2NjIsMjc2NjQsMjc2NjYsMjc2NzMsMjc2NzksMjc2ODYsMjc2ODcsMjc2ODgsMjc2OTIsMjc2OTQsMjc2OTksMjc3MDEsMjc3MDIsMjc3MDYsMjc3MDcsMjc3MTEsMjc3MjIsMjc3MjMsMjc3MjUsMjc3MjcsMjc3MzAsMjc3MzIsMjc3MzcsMjc3MzksMjc3NDAsMjc3NTUsMjc3NTcsMjc3''@;'; put 'put ''NTksMjc3NjQsMjc3NjYsMjc3NjgsMjc3NjksMjc3NzEsMjc3ODEsMjc3ODIsMjc3ODMsMjc3ODUsMjc3OTYsMjc3OTcsMjc3OTksMjc4MDAsMjc4MDQsMjc4MDcsMjc4MjQsMjc4MjYsMjc4MjgsMjc4NDIsMjc4NDYsMjc4NTMsMjc4NTUsMjc4NTYsMjc4NTcsMjc4NTgsMjc4NjAsMjc4NjIs''@;'; put 'put ''Mjc4NjYsMjc4NjgsMjc4NzIsMjc4NzksMjc4ODEsMjc4ODMsMjc4ODQsMjc4ODYsMjc4OTAsMjc4OTIsMjc5MDgsMjc5MTEsMjc5MTQsMjc5MTgsMjc5MTksMjc5MjEsMjc5MjMsMjc5MzAsMjc5NDIsMjc5NDMsMjc5NDQsMjc3NTEsMjc5NTAsMjc5NTEsMjc5NTMsMjc5NjEsMjc5NjQsMjc5''@;'; put 'put ''NjcsMjc5OTEsMjc5OTgsMjc5OTksMjgwMDEsMjgwMDUsMjgwMDcsMjgwMTUsMjgwMTYsMjgwMjgsMjgwMzQsMjgwMzksMjgwNDksMjgwNTAsMjgwNTIsMjgwNTQsMjgwNTUsMjgwNTYsMjgwNzQsMjgwNzYsMjgwODQsMjgwODcsMjgwODksMjgwOTMsMjgwOTUsMjgxMDAsMjgxMDQsMjgxMDYs''@;'; put 'put ''MjgxMTAsMjgxMTEsMjgxMTgsMjgxMjMsMjgxMjUsMjgxMjcsMjgxMjgsMjgxMzAsMjgxMzMsMjgxMzcsMjgxNDMsMjgxNDQsMjgxNDgsMjgxNTAsMjgxNTYsMjgxNjAsMjgxNjQsMjgxOTAsMjgxOTQsMjgxOTksMjgyMTAsMjgyMTQsMjgyMTcsMjgyMTksMjgyMjAsMjgyMjgsMjgyMjksMjgy''@;'; put 'put ''MzIsMjgyMzMsMjgyMzUsMjgyMzksMjgyNDEsMjgyNDIsMjgyNDMsMjgyNDQsMjgyNDcsMjgyNTIsMjgyNTMsMjgyNTQsMjgyNTgsMjgyNTksMjgyNjQsMjgyNzUsMjgyODMsMjgyODUsMjgzMDEsMjgzMDcsMjgzMTMsMjgzMjAsMjgzMjcsMjgzMzMsMjgzMzQsMjgzMzcsMjgzMzksMjgzNDcs''@;'; put 'put ''MjgzNTEsMjgzNTIsMjgzNTMsMjgzNTUsMjgzNTksMjgzNjAsMjgzNjIsMjgzNjUsMjgzNjYsMjgzNjcsMjgzOTUsMjgzOTcsMjgzOTgsMjg0MDksMjg0MTEsMjg0MTMsMjg0MjAsMjg0MjQsMjg0MjYsMjg0MjgsMjg0MjksMjg0MzgsMjg0NDAsMjg0NDIsMjg0NDMsMjg0NTQsMjg0NTcsMjg0''@;'; put 'put ''NTgsMjg0NjMsMjg0NjQsMjg0NjcsMjg0NzAsMjg0NzUsMjg0NzYsMjg0NjEsMjg0OTUsMjg0OTcsMjg0OTgsMjg0OTksMjg1MDMsMjg1MDUsMjg1MDYsMjg1MDksMjg1MTAsMjg1MTMsMjg1MTQsMjg1MjAsMjg1MjQsMjg1NDEsMjg1NDIsMjg1NDcsMjg1NTEsMjg1NTIsMjg1NTUsMjg1NTYs''@;'; put 'put ''Mjg1NTcsMjg1NjAsMjg1NjIsMjg1NjMsMjg1NjQsMjg1NjYsMjg1NzAsMjg1NzUsMjg1NzYsMjg1ODEsMjg1ODIsMjg1ODMsMjg1ODQsMjg1OTAsMjg1OTEsMjg1OTIsMjg1OTcsMjg1OTgsMjg2MDQsMjg2MTMsMjg2MTUsMjg2MTYsMjg2MTgsMjg2MzQsMjg2MzgsMjg2NDgsMjg2NDksMjg2''@;'; put 'put ''NTYsMjg2NjEsMjg2NjUsMjg2NjgsMjg2NjksMjg2NzIsMjg2NzcsMjg2NzgsMjg2NzksMjg2ODUsMjg2OTUsMjg3MDQsMjg3MDcsMjg3MTksMjg3MjQsMjg3MjcsMjg3MjksMjg3MzIsMjg3MzksMjg3NDAsMjg3NDQsMjg3NDUsMjg3NDYsMjg3NDcsMjg3NTYsMjg3NTcsMjg3NjUsMjg3NjYs''@;'; put 'put ''Mjg3NTAsMjg3NzIsMjg3NzMsMjg3ODAsMjg3ODIsMjg3ODksMjg3OTAsMjg3OTgsMjg4MDEsMjg4MDUsMjg4MDYsMjg4MjAsMjg4MjEsMjg4MjIsMjg4MjMsMjg4MjQsMjg4MjcsMjg4MzYsMjg4NDMsMjg4NDgsMjg4NDksMjg4NTIsMjg4NTUsMjg4NzQsMjg4ODEsMjg4ODMsMjg4ODQsMjg4''@;'; put 'put ''ODUsMjg4ODYsMjg4ODgsMjg4OTIsMjg5MDAsMjg5MjIsMjg5MzEsMjg5MzIsMjg5MzMsMjg5MzQsMjg5MzUsMjg5MzksMjg5NDAsMjg5NDMsMjg5NTgsMjg5NjAsMjg5NzEsMjg5NzMsMjg5NzUsMjg5NzYsMjg5NzcsMjg5ODQsMjg5OTMsMjg5OTcsMjg5OTgsMjg5OTksMjkwMDIsMjkwMDMs''@;'; put 'put ''MjkwMDgsMjkwMTAsMjkwMTUsMjkwMTgsMjkwMjAsMjkwMjIsMjkwMjQsMjkwMzIsMjkwNDksMjkwNTYsMjkwNjEsMjkwNjMsMjkwNjgsMjkwNzQsMjkwODIsMjkwODMsMjkwODgsMjkwOTAsMjkxMDMsMjkxMDQsMjkxMDYsMjkxMDcsMjkxMTQsMjkxMTksMjkxMjAsMjkxMjEsMjkxMjQsMjkx''@;'; put 'put ''MzEsMjkxMzIsMjkxMzksMjkxNDIsMjkxNDUsMjkxNDYsMjkxNDgsMjkxNzYsMjkxODIsMjkxODQsMjkxOTEsMjkxOTIsMjkxOTMsMjkyMDMsMjkyMDcsMjkyMTAsMjkyMTMsMjkyMTUsMjkyMjAsMjkyMjcsMjkyMzEsMjkyMzYsMjkyNDAsMjkyNDEsMjkyNDksMjkyNTAsMjkyNTEsMjkyNTMs''@;'; put 'put ''MjkyNjIsMjkyNjMsMjkyNjQsMjkyNjcsMjkyNjksMjkyNzAsMjkyNzQsMjkyNzYsMjkyNzgsMjkyODAsMjkyODMsMjkyODgsMjkyOTEsMjkyOTQsMjkyOTUsMjkyOTcsMjkzMDMsMjkzMDQsMjkzMDcsMjkzMDgsMjkzMTEsMjkzMTYsMjkzMjEsMjkzMjUsMjkzMjYsMjkzMzEsMjkzMzksMjkz''@;'; put 'put ''NTIsMjkzNTcsMjkzNTgsMjkzNjEsMjkzNjQsMjkzNzQsMjkzNzcsMjkzODMsMjkzODUsMjkzODgsMjkzOTcsMjkzOTgsMjk0MDAsMjk0MDcsMjk0MTMsMjk0MjcsMjk0MjgsMjk0MzQsMjk0MzUsMjk0MzgsMjk0NDIsMjk0NDQsMjk0NDUsMjk0NDcsMjk0NTEsMjk0NTMsMjk0NTgsMjk0NTks''@;'; put 'put ''Mjk0NjQsMjk0NjUsMjk0NzAsMjk0NzQsMjk0NzYsMjk0NzksMjk0ODAsMjk0ODQsMjk0ODksMjk0OTAsMjk0OTMsMjk0OTgsMjk0OTksMjk1MDEsMjk1MDcsMjk1MTcsMjk1MjAsMjk1MjIsMjk1MjYsMjk1MjgsMjk1MzMsMjk1MzQsMjk1MzUsMjk1MzYsMjk1NDIsMjk1NDMsMjk1NDUsMjk1''@;'; put 'put ''NDcsMjk1NDgsMjk1NTAsMjk1NTEsMjk1NTMsMjk1NTksMjk1NjEsMjk1NjQsMjk1NjgsMjk1NjksMjk1NzEsMjk1NzMsMjk1NzQsMjk1ODIsMjk1ODQsMjk1ODcsMjk1ODksMjk1OTEsMjk1OTIsMjk1OTYsMjk1OTgsMjk1OTksMjk2MDAsMjk2MDIsMjk2MDUsMjk2MDYsMjk2MTAsMjk2MTEs''@;'; put 'put ''Mjk2MTMsMjk2MjEsMjk2MjMsMjk2MjUsMjk2MjgsMjk2MjksMjk2MzEsMjk2MzcsMjk2MzgsMjk2NDEsMjk2NDMsMjk2NDQsMjk2NDcsMjk2NTAsMjk2NTEsMjk2NTQsMjk2NTcsMjk2NjEsMjk2NjUsMjk2NjcsMjk2NzAsMjk2NzEsMjk2NzMsMjk2ODQsMjk2ODUsMjk2ODcsMjk2ODksMjk2''@;'; put 'put ''OTAsMjk2OTEsMjk2OTMsMjk2OTUsMjk2OTYsMjk2OTcsMjk3MDAsMjk3MDMsMjk3MDYsMjk3MTMsMjk3MjIsMjk3MjMsMjk3MzIsMjk3MzQsMjk3MzYsMjk3MzcsMjk3MzgsMjk3MzksMjk3NDAsMjk3NDEsMjk3NDIsMjk3NDMsMjk3NDQsMjk3NDUsMjk3NTMsMjk3NjAsMjk3NjMsMjk3NjQs''@;'; put 'put ''Mjk3NjYsMjk3NjcsMjk3NzEsMjk3NzMsMjk3NzcsMjk3NzgsMjk3ODMsMjk3ODksMjk3OTQsMjk3OTgsMjk3OTksMjk4MDAsMjk4MDMsMjk4MDUsMjk4MDYsMjk4MDksMjk4MTAsMjk4MjQsMjk4MjUsMjk4MjksMjk4MzAsMjk4MzEsMjk4MzMsMjk4MzksMjk4NDAsMjk4NDEsMjk4NDIsMjk4''@;'; put 'put ''NDgsMjk4NDksMjk4NTAsMjk4NTIsMjk4NTUsMjk4NTYsMjk4NTcsMjk4NTksMjk4NjIsMjk4NjQsMjk4NjUsMjk4NjYsMjk4NjcsMjk4NzAsMjk4NzEsMjk4NzMsMjk4NzQsMjk4NzcsMjk4ODEsMjk4ODMsMjk4ODcsMjk4OTYsMjk4OTcsMjk5MDAsMjk5MDQsMjk5MDcsMjk5MTIsMjk5MTQs''@;'; put 'put ''Mjk5MTUsMjk5MTgsMjk5MTksMjk5MjQsMjk5MjgsMjk5MzAsMjk5MzEsMjk5MzUsMjk5NDAsMjk5NDYsMjk5NDcsMjk5NDgsMjk5NTEsMjk5NTgsMjk5NzAsMjk5NzQsMjk5NzUsMjk5ODQsMjk5ODUsMjk5ODgsMjk5OTEsMjk5OTMsMjk5OTQsMjk5OTksMzAwMDYsMzAwMDksMzAwMTMsMzAw''@;'; put 'put ''MTQsMzAwMTUsMzAwMTYsMzAwMTksMzAwMjMsMzAwMjQsMzAwMzAsMzAwMzIsMzAwMzQsMzAwMzksMzAwNDYsMzAwNDcsMzAwNDksMzAwNjMsMzAwNjUsMzAwNzMsMzAwNzQsMzAwNzUsMzAwNzYsMzAwNzcsMzAwNzgsMzAwODEsMzAwODUsMzAwOTYsMzAwOTgsMzAwOTksMzAxMDEsMzAxMDUs''@;'; put 'put ''MzAxMDgsMzAxMTQsMzAxMTYsMzAxMzIsMzAxMzgsMzAxNDMsMzAxNDQsMzAxNDUsMzAxNDgsMzAxNTAsMzAxNTYsMzAxNTgsMzAxNTksMzAxNjcsMzAxNzIsMzAxNzUsMzAxNzYsMzAxNzcsMzAxODAsMzAxODMsMzAxODgsMzAxOTAsMzAxOTEsMzAxOTMsMzAyMDEsMzAyMDgsMzAyMTAsMzAy''@;'; put 'put ''MTEsMzAyMTIsMzAyMTUsMzAyMTYsMzAyMTgsMzAyMjAsMzAyMjMsMzAyMjYsMzAyMjcsMzAyMjksMzAyMzAsMzAyMzMsMzAyMzUsMzAyMzYsMzAyMzcsMzAyMzgsMzAyNDMsMzAyNDUsMzAyNDYsMzAyNDksMzAyNTMsMzAyNTgsMzAyNTksMzAyNjEsMzAyNjQsMzAyNjUsMzAyNjYsMzAyNjgs''@;'; put 'put ''MzAyODIsMzAyNzIsMzAyNzMsMzAyNzUsMzAyNzYsMzAyNzcsMzAyODEsMzAyODMsMzAyOTMsMzAyOTcsMzAzMDMsMzAzMDgsMzAzMDksMzAzMTcsMzAzMTgsMzAzMTksMzAzMjEsMzAzMjQsMzAzMzcsMzAzNDEsMzAzNDgsMzAzNDksMzAzNTcsMzAzNjMsMzAzNjQsMzAzNjUsMzAzNjcsMzAz''@;'; put 'put ''NjgsMzAzNzAsMzAzNzEsMzAzNzIsMzAzNzMsMzAzNzQsMzAzNzUsMzAzNzYsMzAzNzgsMzAzODEsMzAzOTcsMzA0MDEsMzA0MDUsMzA0MDksMzA0MTEsMzA0MTIsMzA0MTQsMzA0MjAsMzA0MjUsMzA0MzIsMzA0MzgsMzA0NDAsMzA0NDQsMzA0NDgsMzA0NDksMzA0NTQsMzA0NTcsMzA0NjAs''@;'; put 'put ''MzA0NjQsMzA0NzAsMzA0NzQsMzA0NzgsMzA0ODIsMzA0ODQsMzA0ODUsMzA0ODcsMzA0ODksMzA0OTAsMzA0OTIsMzA0OTgsMzA1MDQsMzA1MDksMzA1MTAsMzA1MTEsMzA1MTYsMzA1MTcsMzA1MTgsMzA1MjEsMzA1MjUsMzA1MjYsMzA1MzAsMzA1MzMsMzA1MzQsMzA1MzgsMzA1NDEsMzA1''@;'; put 'put ''NDIsMzA1NDMsMzA1NDYsMzA1NTAsMzA1NTEsMzA1NTYsMzA1NTgsMzA1NTksMzA1NjAsMzA1NjIsMzA1NjQsMzA1NjcsMzA1NzAsMzA1NzIsMzA1NzYsMzA1NzgsMzA1NzksMzA1ODAsMzA1ODYsMzA1ODksMzA1OTIsMzA1OTYsMzA2MDQsMzA2MDUsMzA2MTIsMzA2MTMsMzA2MTQsMzA2MTgs''@;'; put 'put ''MzA2MjMsMzA2MjYsMzA2MzEsMzA2MzQsMzA2MzgsMzA2MzksMzA2NDEsMzA2NDUsMzA2NTQsMzA2NTksMzA2NjUsMzA2NzMsMzA2NzQsMzA2NzcsMzA2ODEsMzA2ODYsMzA2ODcsMzA2ODgsMzA2OTIsMzA2OTQsMzA2OTgsMzA3MDAsMzA3MDQsMzA3MDUsMzA3MDgsMzA3MTIsMzA3MTUsMzA3''@;'; put 'put ''MjUsMzA3MjYsMzA3MjksMzA3MzMsMzA3MzQsMzA3MzcsMzA3NDksMzA3NTMsMzA3NTQsMzA3NTUsMzA3NjUsMzA3NjYsMzA3NjgsMzA3NzMsMzA3NzUsMzA3ODcsMzA3ODgsMzA3OTEsMzA3OTIsMzA3OTYsMzA3OTgsMzA4MDIsMzA4MTIsMzA4MTQsMzA4MTYsMzA4MTcsMzA4MTksMzA4MjAs''@;'; put 'put ''MzA4MjQsMzA4MjYsMzA4MzAsMzA4NDIsMzA4NDYsMzA4NTgsMzA4NjMsMzA4NjgsMzA4NzIsMzA4ODEsMzA4NzcsMzA4NzgsMzA4NzksMzA4ODQsMzA4ODgsMzA4OTIsMzA4OTMsMzA4OTYsMzA4OTcsMzA4OTgsMzA4OTksMzA5MDcsMzA5MDksMzA5MTEsMzA5MTksMzA5MjAsMzA5MjEsMzA5''@;'; put 'put ''MjQsMzA5MjYsMzA5MzAsMzA5MzEsMzA5MzMsMzA5MzQsMzA5NDgsMzA5MzksMzA5NDMsMzA5NDQsMzA5NDUsMzA5NTAsMzA5NTQsMzA5NjIsMzA5NjMsMzA5NzYsMzA5NjYsMzA5NjcsMzA5NzAsMzA5NzEsMzA5NzUsMzA5ODIsMzA5ODgsMzA5OTIsMzEwMDIsMzEwMDQsMzEwMDYsMzEwMDcs''@;'; put 'put ''MzEwMDgsMzEwMTMsMzEwMTUsMzEwMTcsMzEwMjEsMzEwMjUsMzEwMjgsMzEwMjksMzEwMzUsMzEwMzcsMzEwMzksMzEwNDQsMzEwNDUsMzEwNDYsMzEwNTAsMzEwNTEsMzEwNTUsMzEwNTcsMzEwNjAsMzEwNjQsMzEwNjcsMzEwNjgsMzEwNzksMzEwODEsMzEwODMsMzEwOTAsMzEwOTcsMzEw''@;'; put 'put ''OTksMzExMDAsMzExMDIsMzExMTUsMzExMTYsMzExMjEsMzExMjMsMzExMjQsMzExMjUsMzExMjYsMzExMjgsMzExMzEsMzExMzIsMzExMzcsMzExNDQsMzExNDUsMzExNDcsMzExNTEsMzExNTMsMzExNTYsMzExNjAsMzExNjMsMzExNzAsMzExNzIsMzExNzUsMzExNzYsMzExNzgsMzExODMs''@;'; put 'put ''MzExODgsMzExOTAsMzExOTQsMzExOTcsMzExOTgsMzEyMDAsMzEyMDIsMzEyMDUsMzEyMTAsMzEyMTEsMzEyMTMsMzEyMTcsMzEyMjQsMzEyMjgsMzEyMzQsMzEyMzUsMzEyMzksMzEyNDEsMzEyNDIsMzEyNDQsMzEyNDksMzEyNTMsMzEyNTksMzEyNjIsMzEyNjUsMzEyNzEsMzEyNzUsMzEy''@;'; put 'put ''NzcsMzEyNzksMzEyODAsMzEyODQsMzEyODUsMzEyODgsMzEyODksMzEyOTAsMzEzMDAsMzEzMDEsMzEzMDMsMzEzMDQsMzEzMDgsMzEzMTcsMzEzMTgsMzEzMjEsMzEzMjQsMzEzMjUsMzEzMjcsMzEzMjgsMzEzMzMsMzEzMzUsMzEzMzgsMzEzNDEsMzEzNDksMzEzNTIsMzEzNTgsMzEzNjAs''@;'; put 'put ''MzEzNjIsMzEzNjUsMzEzNjYsMzEzNzAsMzEzNzEsMzEzNzYsMzEzNzcsMzEzODAsMzEzOTAsMzEzOTIsMzEzOTUsMzE0MDQsMzE0MTEsMzE0MTMsMzE0MTcsMzE0MTksMzE0MjAsMzE0MzAsMzE0MzMsMzE0MzYsMzE0MzgsMzE0NDEsMzE0NTEsMzE0NjQsMzE0NjUsMzE0NjcsMzE0NjgsMzE0''@;'; put 'put ''NzMsMzE0NzYsMzE0ODMsMzE0ODUsMzE0ODYsMzE0OTUsMzE1MDgsMzE1MTksMzE1MjMsMzE1MjcsMzE1MjksMzE1MzAsMzE1MzEsMzE1MzMsMzE1MzQsMzE1MzUsMzE1MzYsMzE1MzcsMzE1NDAsMzE1NDksMzE1NTEsMzE1NTIsMzE1NTMsMzE1NTksMzE1NjYsMzE1NzMsMzE1ODQsMzE1ODgs''@;'; put 'put ''MzE1OTAsMzE1OTMsMzE1OTQsMzE1OTcsMzE1OTksMzE2MDIsMzE2MDMsMzE2MDcsMzE2MjAsMzE2MjUsMzE2MzAsMzE2MzIsMzE2MzMsMzE2MzgsMzE2NDMsMzE2NDYsMzE2NDgsMzE2NTMsMzE2NjAsMzE2NjMsMzE2NjQsMzE2NjYsMzE2NjksMzE2NzAsMzE2NzQsMzE2NzUsMzE2NzYsMzE2''@;'; put 'put ''NzcsMzE2ODIsMzE2ODUsMzE2ODgsMzE2OTAsMzE3MDAsMzE3MDIsMzE3MDMsMzE3MDUsMzE3MDYsMzE3MDcsMzE3MjAsMzE3MjIsMzE3MzAsMzE3MzIsMzE3MzMsMzE3MzYsMzE3MzcsMzE3MzgsMzE3NDAsMzE3NDIsMzE3NDUsMzE3NDYsMzE3NDcsMzE3NDgsMzE3NTAsMzE3NTMsMzE3NTUs''@;'; put 'put ''MzE3NTYsMzE3NTgsMzE3NTksMzE3NjksMzE3NzEsMzE3NzYsMzE3ODEsMzE3ODIsMzE3ODQsMzE3ODgsMzE3OTMsMzE3OTUsMzE3OTYsMzE3OTgsMzE4MDEsMzE4MDIsMzE4MTQsMzE4MTgsMzE4MjksMzE4MjUsMzE4MjYsMzE4MjcsMzE4MzMsMzE4MzQsMzE4MzUsMzE4MzYsMzE4MzcsMzE4''@;'; put 'put ''MzgsMzE4NDEsMzE4NDMsMzE4NDcsMzE4NDksMzE4NTMsMzE4NTQsMzE4NTYsMzE4NTgsMzE4NjUsMzE4NjgsMzE4NjksMzE4NzgsMzE4NzksMzE4ODcsMzE4OTIsMzE5MDIsMzE5MDQsMzE5MTAsMzE5MjAsMzE5MjYsMzE5MjcsMzE5MzAsMzE5MzEsMzE5MzIsMzE5MzUsMzE5NDAsMzE5NDMs''@;'; put 'put ''MzE5NDQsMzE5NDUsMzE5NDksMzE5NTEsMzE5NTUsMzE5NTYsMzE5NTcsMzE5NTksMzE5NjEsMzE5NjIsMzE5NjUsMzE5NzQsMzE5NzcsMzE5NzksMzE5ODksMzIwMDMsMzIwMDcsMzIwMDgsMzIwMDksMzIwMTUsMzIwMTcsMzIwMTgsMzIwMTksMzIwMjIsMzIwMjksMzIwMzAsMzIwMzUsMzIw''@;'; put 'put ''MzgsMzIwNDIsMzIwNDUsMzIwNDksMzIwNjAsMzIwNjEsMzIwNjIsMzIwNjQsMzIwNjUsMzIwNzEsMzIwNzIsMzIwNzcsMzIwODEsMzIwODMsMzIwODcsMzIwODksMzIwOTAsMzIwOTIsMzIwOTMsMzIxMDEsMzIxMDMsMzIxMDYsMzIxMTIsMzIxMjAsMzIxMjIsMzIxMjMsMzIxMjcsMzIxMjks''@;'; put 'put ''MzIxMzAsMzIxMzEsMzIxMzMsMzIxMzQsMzIxMzYsMzIxMzksMzIxNDAsMzIxNDEsMzIxNDUsMzIxNTAsMzIxNTEsMzIxNTcsMzIxNTgsMzIxNjYsMzIxNjcsMzIxNzAsMzIxNzksMzIxODIsMzIxODMsMzIxODUsMzIxOTQsMzIxOTUsMzIxOTYsMzIxOTcsMzIxOTgsMzIyMDQsMzIyMDUsMzIy''@;'; put 'put ''MDYsMzIyMTUsMzIyMTcsMzIyNTYsMzIyMjYsMzIyMjksMzIyMzAsMzIyMzQsMzIyMzUsMzIyMzcsMzIyNDEsMzIyNDUsMzIyNDYsMzIyNDksMzIyNTAsMzIyNjQsMzIyNzIsMzIyNzMsMzIyNzcsMzIyNzksMzIyODQsMzIyODUsMzIyODgsMzIyOTUsMzIyOTYsMzIzMDAsMzIzMDEsMzIzMDMs''@;'; put 'put ''MzIzMDcsMzIzMTAsMzIzMTksMzIzMjQsMzIzMjUsMzIzMjcsMzIzMzQsMzIzMzYsMzIzMzgsMzIzNDQsMzIzNTEsMzIzNTMsMzIzNTQsMzIzNTcsMzIzNjMsMzIzNjYsMzIzNjcsMzIzNzEsMzIzNzYsMzIzODIsMzIzODUsMzIzOTAsMzIzOTEsMzIzOTQsMzIzOTcsMzI0MDEsMzI0MDUsMzI0''@;'; put 'put ''MDgsMzI0MTAsMzI0MTMsMzI0MTQsMzI1NzIsMzI1NzEsMzI1NzMsMzI1NzQsMzI1NzUsMzI1NzksMzI1ODAsMzI1ODMsMzI1OTEsMzI1OTQsMzI1OTUsMzI2MDMsMzI2MDQsMzI2MDUsMzI2MDksMzI2MTEsMzI2MTIsMzI2MTMsMzI2MTQsMzI2MjEsMzI2MjUsMzI2MzcsMzI2MzgsMzI2Mzks''@;'; put 'put ''MzI2NDAsMzI2NTEsMzI2NTMsMzI2NTUsMzI2NTYsMzI2NTcsMzI2NjIsMzI2NjMsMzI2NjgsMzI2NzMsMzI2NzQsMzI2NzgsMzI2ODIsMzI2ODUsMzI2OTIsMzI3MDAsMzI3MDMsMzI3MDQsMzI3MDcsMzI3MTIsMzI3MTgsMzI3MTksMzI3MzEsMzI3MzUsMzI3MzksMzI3NDEsMzI3NDQsMzI3''@;'; put 'put ''NDgsMzI3NTAsMzI3NTEsMzI3NTQsMzI3NjIsMzI3NjUsMzI3NjYsMzI3NjcsMzI3NzUsMzI3NzYsMzI3NzgsMzI3ODEsMzI3ODIsMzI3ODMsMzI3ODUsMzI3ODcsMzI3ODgsMzI3OTAsMzI3OTcsMzI3OTgsMzI3OTksMzI4MDAsMzI4MDQsMzI4MDYsMzI4MTIsMzI4MTQsMzI4MTYsMzI4MjAs''@;'; put 'put ''MzI4MjEsMzI4MjMsMzI4MjUsMzI4MjYsMzI4MjgsMzI4MzAsMzI4MzIsMzI4MzYsMzI4NjQsMzI4NjgsMzI4NzAsMzI4NzcsMzI4ODEsMzI4ODUsMzI4OTcsMzI5MDQsMzI5MTAsMzI5MjQsMzI5MjYsMzI5MzQsMzI5MzUsMzI5MzksMzI5NTIsMzI5NTMsMzI5NjgsMzI5NzMsMzI5NzUsMzI5''@;'; put 'put ''NzgsMzI5ODAsMzI5ODEsMzI5ODMsMzI5ODQsMzI5OTIsMzMwMDUsMzMwMDYsMzMwMDgsMzMwMTAsMzMwMTEsMzMwMTQsMzMwMTcsMzMwMTgsMzMwMjIsMzMwMjcsMzMwMzUsMzMwNDYsMzMwNDcsMzMwNDgsMzMwNTIsMzMwNTQsMzMwNTYsMzMwNjAsMzMwNjMsMzMwNjgsMzMwNzIsMzMwNzcs''@;'; put 'put ''MzMwODIsMzMwODQsMzMwOTMsMzMwOTUsMzMwOTgsMzMxMDAsMzMxMDYsMzMxMTEsMzMxMjAsMzMxMjEsMzMxMjcsMzMxMjgsMzMxMjksMzMxMzMsMzMxMzUsMzMxNDMsMzMxNTMsMzMxNjgsMzMxNTYsMzMxNTcsMzMxNTgsMzMxNjMsMzMxNjYsMzMxNzQsMzMxNzYsMzMxNzksMzMxODIsMzMx''@;'; put 'put ''ODYsMzMxOTgsMzMyMDIsMzMyMDQsMzMyMTEsMzMyMjcsMzMyMTksMzMyMjEsMzMyMjYsMzMyMzAsMzMyMzEsMzMyMzcsMzMyMzksMzMyNDMsMzMyNDUsMzMyNDYsMzMyNDksMzMyNTIsMzMyNTksMzMyNjAsMzMyNjQsMzMyNjUsMzMyNjYsMzMyNjksMzMyNzAsMzMyNzIsMzMyNzMsMzMyNzcs''@;'; put 'put ''MzMyNzksMzMyODAsMzMyODMsMzMyOTUsMzMyOTksMzMzMDAsMzMzMDUsMzMzMDYsMzMzMDksMzMzMTMsMzMzMTQsMzMzMjAsMzMzMzAsMzMzMzIsMzMzMzgsMzMzNDcsMzMzNDgsMzMzNDksMzMzNTAsMzMzNTUsMzMzNTgsMzMzNTksMzMzNjEsMzMzNjYsMzMzNzIsMzMzNzYsMzMzNzksMzMz''@;'; put 'put ''ODMsMzMzODksMzMzOTYsMzM0MDMsMzM0MDUsMzM0MDcsMzM0MDgsMzM0MDksMzM0MTEsMzM0MTIsMzM0MTUsMzM0MTcsMzM0MTgsMzM0MjIsMzM0MjUsMzM0MjgsMzM0MzAsMzM0MzIsMzM0MzQsMzM0MzUsMzM0NDAsMzM0NDEsMzM0NDMsMzM0NDQsMzM0NDcsMzM0NDgsMzM0NDksMzM0NTAs''@;'; put 'put ''MzM0NTQsMzM0NTYsMzM0NTgsMzM0NjAsMzM0NjMsMzM0NjYsMzM0NjgsMzM0NzAsMzM0NzEsMzM0NzgsMzM0ODgsMzM0OTMsMzM0OTgsMzM1MDQsMzM1MDYsMzM1MDgsMzM1MTIsMzM1MTQsMzM1MTcsMzM1MTksMzM1MjYsMzM1MjcsMzM1MzMsMzM1MzQsMzM1MzYsMzM1MzcsMzM1NDMsMzM1''@;'; put 'put ''NDQsMzM1NDYsMzM1NDcsMzM2MjAsMzM1NjMsMzM1NjUsMzM1NjYsMzM1NjcsMzM1NjksMzM1NzAsMzM1ODAsMzM1ODEsMzM1ODIsMzM1ODQsMzM1ODcsMzM1OTEsMzM1OTQsMzM1OTYsMzM1OTcsMzM2MDIsMzM2MDMsMzM2MDQsMzM2MDcsMzM2MTMsMzM2MTQsMzM2MTcsMzM2MjEsMzM2MjIs''@;'; put 'put ''MzM2MjMsMzM2NDgsMzM2NTYsMzM2NjEsMzM2NjMsMzM2NjQsMzM2NjYsMzM2NjgsMzM2NzAsMzM2NzcsMzM2ODIsMzM2ODQsMzM2ODUsMzM2ODgsMzM2ODksMzM2OTEsMzM2OTIsMzM2OTMsMzM3MDIsMzM3MDMsMzM3MDUsMzM3MDgsMzM3MjYsMzM3MjcsMzM3MjgsMzM3MzUsMzM3MzcsMzM3''@;'; put 'put ''NDMsMzM3NDQsMzM3NDUsMzM3NDgsMzM3NTcsMzM2MTksMzM3NjgsMzM3NzAsMzM3ODIsMzM3ODQsMzM3ODUsMzM3ODgsMzM3OTMsMzM3OTgsMzM4MDIsMzM4MDcsMzM4MDksMzM4MTMsMzM4MTcsMzM3MDksMzM4MzksMzM4NDksMzM4NjEsMzM4NjMsMzM4NjQsMzM4NjYsMzM4NjksMzM4NzEs''@;'; put 'put ''MzM4NzMsMzM4NzQsMzM4NzgsMzM4ODAsMzM4ODEsMzM4ODIsMzM4ODQsMzM4ODgsMzM4OTIsMzM4OTMsMzM4OTUsMzM4OTgsMzM5MDQsMzM5MDcsMzM5MDgsMzM5MTAsMzM5MTIsMzM5MTYsMzM5MTcsMzM5MjEsMzM5MjUsMzM5MzgsMzM5MzksMzM5NDEsMzM5NTAsMzM5NTgsMzM5NjAsMzM5''@;'; put 'put ''NjEsMzM5NjIsMzM5NjcsMzM5NjksMzM5NzIsMzM5NzgsMzM5ODEsMzM5ODIsMzM5ODQsMzM5ODYsMzM5OTEsMzM5OTIsMzM5OTYsMzM5OTksMzQwMDMsMzQwMTIsMzQwMjMsMzQwMjYsMzQwMzEsMzQwMzIsMzQwMzMsMzQwMzQsMzQwMzksMzQwOTgsMzQwNDIsMzQwNDMsMzQwNDUsMzQwNTAs''@;'; put 'put ''MzQwNTEsMzQwNTUsMzQwNjAsMzQwNjIsMzQwNjQsMzQwNzYsMzQwNzgsMzQwODIsMzQwODMsMzQwODQsMzQwODUsMzQwODcsMzQwOTAsMzQwOTEsMzQwOTUsMzQwOTksMzQxMDAsMzQxMDIsMzQxMTEsMzQxMTgsMzQxMjcsMzQxMjgsMzQxMjksMzQxMzAsMzQxMzEsMzQxMzQsMzQxMzcsMzQx''@;'; put 'put ''NDAsMzQxNDEsMzQxNDIsMzQxNDMsMzQxNDQsMzQxNDUsMzQxNDYsMzQxNDgsMzQxNTUsMzQxNTksMzQxNjksMzQxNzAsMzQxNzEsMzQxNzMsMzQxNzUsMzQxNzcsMzQxODEsMzQxODIsMzQxODUsMzQxODcsMzQxODgsMzQxOTEsMzQxOTUsMzQyMDAsMzQyMDUsMzQyMDcsMzQyMDgsMzQyMTAs''@;'; put 'put ''MzQyMTMsMzQyMTUsMzQyMjgsMzQyMzAsMzQyMzEsMzQyMzIsMzQyMzYsMzQyMzcsMzQyMzgsMzQyMzksMzQyNDIsMzQyNDcsMzQyNTAsMzQyNTEsMzQyNTQsMzQyMjEsMzQyNjQsMzQyNjYsMzQyNzEsMzQyNzIsMzQyNzgsMzQyODAsMzQyODUsMzQyOTEsMzQyOTQsMzQzMDAsMzQzMDMsMzQz''@;'; put 'put ''MDQsMzQzMDgsMzQzMDksMzQzMTcsMzQzMTgsMzQzMjAsMzQzMjEsMzQzMjIsMzQzMjgsMzQzMjksMzQzMzEsMzQzMzQsMzQzMzcsMzQzNDMsMzQzNDUsMzQzNTgsMzQzNjAsMzQzNjIsMzQzNjQsMzQzNjUsMzQzNjgsMzQzNzAsMzQzNzQsMzQzODYsMzQzODcsMzQzOTAsMzQzOTEsMzQzOTIs''@;'; put 'put ''MzQzOTMsMzQzOTcsMzQ0MDAsMzQ0MDEsMzQ0MDIsMzQ0MDMsMzQ0MDQsMzQ0MDksMzQ0MTIsMzQ0MTUsMzQ0MjEsMzQ0MjIsMzQ0MjMsMzQ0MjYsMzQ0NDUsMzQ0NDksMzQ0NTQsMzQ0NTYsMzQ0NTgsMzQ0NjAsMzQ0NjUsMzQ0NzAsMzQ0NzEsMzQ0NzIsMzQ0NzcsMzQ0ODEsMzQ0ODMsMzQ0''@;'; put 'put ''ODQsMzQ0ODUsMzQ0ODcsMzQ0ODgsMzQ0ODksMzQ0OTUsMzQ0OTYsMzQ0OTcsMzQ0OTksMzQ1MDEsMzQ1MTMsMzQ1MTQsMzQ1MTcsMzQ1MTksMzQ1MjIsMzQ1MjQsMzQ1MjgsMzQ1MzEsMzQ1MzMsMzQ1MzUsMzQ0NDAsMzQ1NTQsMzQ1NTYsMzQ1NTcsMzQ1NjQsMzQ1NjUsMzQ1NjcsMzQ1NzEs''@;'; put 'put ''MzQ1NzQsMzQ1NzUsMzQ1NzYsMzQ1NzksMzQ1ODAsMzQ1ODUsMzQ1OTAsMzQ1OTEsMzQ1OTMsMzQ1OTUsMzQ2MDAsMzQ2MDYsMzQ2MDcsMzQ2MDksMzQ2MTAsMzQ2MTcsMzQ2MTgsMzQ2MjAsMzQ2MjEsMzQ2MjIsMzQ2MjQsMzQ2MjcsMzQ2MjksMzQ2MzcsMzQ2NDgsMzQ2NTMsMzQ2NTcsMzQ2''@;'; put 'put ''NjAsMzQ2NjEsMzQ2NzEsMzQ2NzMsMzQ2NzQsMzQ2ODMsMzQ2OTEsMzQ2OTIsMzQ2OTMsMzQ2OTQsMzQ2OTUsMzQ2OTYsMzQ2OTcsMzQ2OTksMzQ3MDAsMzQ3MDQsMzQ3MDcsMzQ3MDksMzQ3MTEsMzQ3MTIsMzQ3MTMsMzQ3MTgsMzQ3MjAsMzQ3MjMsMzQ3MjcsMzQ3MzIsMzQ3MzMsMzQ3MzQs''@;'; put 'put ''MzQ3MzcsMzQ3NDEsMzQ3NTAsMzQ3NTEsMzQ3NTMsMzQ3NjAsMzQ3NjEsMzQ3NjIsMzQ3NjYsMzQ3NzMsMzQ3NzQsMzQ3NzcsMzQ3NzgsMzQ3ODAsMzQ3ODMsMzQ3ODYsMzQ3ODcsMzQ3ODgsMzQ3OTQsMzQ3OTUsMzQ3OTcsMzQ4MDEsMzQ4MDMsMzQ4MDgsMzQ4MTAsMzQ4MTUsMzQ4MTcsMzQ4''@;'; put 'put ''MTksMzQ4MjIsMzQ4MjUsMzQ4MjYsMzQ4MjcsMzQ4MzIsMzQ4NDEsMzQ4MzQsMzQ4MzUsMzQ4MzYsMzQ4NDAsMzQ4NDIsMzQ4NDMsMzQ4NDQsMzQ4NDYsMzQ4NDcsMzQ4NTYsMzQ4NjEsMzQ4NjIsMzQ4NjQsMzQ4NjYsMzQ4NjksMzQ4NzQsMzQ4NzYsMzQ4ODEsMzQ4ODMsMzQ4ODUsMzQ4ODgs''@;'; put 'put ''MzQ4ODksMzQ4OTAsMzQ4OTEsMzQ4OTQsMzQ4OTcsMzQ5MDEsMzQ5MDIsMzQ5MDQsMzQ5MDYsMzQ5MDgsMzQ5MTEsMzQ5MTIsMzQ5MTYsMzQ5MjEsMzQ5MjksMzQ5MzcsMzQ5MzksMzQ5NDQsMzQ5NjgsMzQ5NzAsMzQ5NzEsMzQ5NzIsMzQ5NzUsMzQ5NzYsMzQ5ODQsMzQ5ODYsMzUwMDIsMzUw''@;'; put 'put ''MDUsMzUwMDYsMzUwMDgsMzUwMTgsMzUwMTksMzUwMjAsMzUwMjEsMzUwMjIsMzUwMjUsMzUwMjYsMzUwMjcsMzUwMzUsMzUwMzgsMzUwNDcsMzUwNTUsMzUwNTYsMzUwNTcsMzUwNjEsMzUwNjMsMzUwNzMsMzUwNzgsMzUwODUsMzUwODYsMzUwODcsMzUwOTMsMzUwOTQsMzUwOTYsMzUwOTcs''@;'; put 'put ''MzUwOTgsMzUxMDAsMzUxMDQsMzUxMTAsMzUxMTEsMzUxMTIsMzUxMjAsMzUxMjEsMzUxMjIsMzUxMjUsMzUxMjksMzUxMzAsMzUxMzQsMzUxMzYsMzUxMzgsMzUxNDEsMzUxNDIsMzUxNDUsMzUxNTEsMzUxNTQsMzUxNTksMzUxNjIsMzUxNjMsMzUxNjQsMzUxNjksMzUxNzAsMzUxNzEsMzUx''@;'; put 'put ''NzksMzUxODIsMzUxODQsMzUxODcsMzUxODksMzUxOTQsMzUxOTUsMzUxOTYsMzUxOTcsMzUyMDksMzUyMTMsMzUyMTYsMzUyMjAsMzUyMjEsMzUyMjcsMzUyMjgsMzUyMzEsMzUyMzIsMzUyMzcsMzUyNDgsMzUyNTIsMzUyNTMsMzUyNTQsMzUyNTUsMzUyNjAsMzUyODQsMzUyODUsMzUyODYs''@;'; put 'put ''MzUyODcsMzUyODgsMzUzMDEsMzUzMDUsMzUzMDcsMzUzMDksMzUzMTMsMzUzMTUsMzUzMTgsMzUzMjEsMzUzMjUsMzUzMjcsMzUzMzIsMzUzMzMsMzUzMzUsMzUzNDMsMzUzNDUsMzUzNDYsMzUzNDgsMzUzNDksMzUzNTgsMzUzNjAsMzUzNjIsMzUzNjQsMzUzNjYsMzUzNzEsMzUzNzIsMzUz''@;'; put 'put ''NzUsMzUzODEsMzUzODMsMzUzODksMzUzOTAsMzUzOTIsMzUzOTUsMzUzOTcsMzUzOTksMzU0MDEsMzU0MDUsMzU0MDYsMzU0MTEsMzU0MTQsMzU0MTUsMzU0MTYsMzU0MjAsMzU0MjEsMzU0MjUsMzU0MjksMzU0MzEsMzU0NDUsMzU0NDYsMzU0NDcsMzU0NDksMzU0NTAsMzU0NTEsMzU0NTQs''@;'; put 'put ''MzU0NTUsMzU0NTYsMzU0NTksMzU0NjIsMzU0NjcsMzU0NzEsMzU0NzIsMzU0NzQsMzU0NzgsMzU0NzksMzU0ODEsMzU0ODcsMzU0OTUsMzU0OTcsMzU1MDIsMzU1MDMsMzU1MDcsMzU1MTAsMzU1MTEsMzU1MTUsMzU1MTgsMzU1MjMsMzU1MjYsMzU1MjgsMzU1MjksMzU1MzAsMzU1MzcsMzU1''@;'; put 'put ''MzksMzU1NDAsMzU1NDEsMzU1NDMsMzU1NDksMzU1NTEsMzU1NjQsMzU1NjgsMzU1NzIsMzU1NzMsMzU1NzQsMzU1ODAsMzU1ODMsMzU1ODksMzU1OTAsMzU1OTUsMzU2MDEsMzU2MTIsMzU2MTQsMzU2MTUsMzU1OTQsMzU2MjksMzU2MzIsMzU2MzksMzU2NDQsMzU2NTAsMzU2NTEsMzU2NTIs''@;'; put 'put ''MzU2NTMsMzU2NTQsMzU2NTYsMzU2NjYsMzU2NjcsMzU2NjgsMzU2NzMsMzU2NjEsMzU2NzgsMzU2ODMsMzU2OTMsMzU3MDIsMzU3MDQsMzU3MDUsMzU3MDgsMzU3MTAsMzU3MTMsMzU3MTYsMzU3MTcsMzU3MjMsMzU3MjUsMzU3MjcsMzU3MzIsMzU3MzMsMzU3NDAsMzU3NDIsMzU3NDMsMzU4''@;'; put 'put ''OTYsMzU4OTcsMzU5MDEsMzU5MDIsMzU5MDksMzU5MTEsMzU5MTMsMzU5MTUsMzU5MTksMzU5MjEsMzU5MjMsMzU5MjQsMzU5MjcsMzU5MjgsMzU5MzEsMzU5MzMsMzU5MjksMzU5MzksMzU5NDAsMzU5NDIsMzU5NDQsMzU5NDUsMzU5NDksMzU5NTUsMzU5NTcsMzU5NTgsMzU5NjMsMzU5NjYs''@;'; put 'put ''MzU5NzQsMzU5NzUsMzU5NzksMzU5ODQsMzU5ODYsMzU5ODcsMzU5OTMsMzU5OTUsMzU5OTYsMzYwMDQsMzYwMjUsMzYwMjYsMzYwMzcsMzYwMzgsMzYwNDEsMzYwNDMsMzYwNDcsMzYwNTQsMzYwNTMsMzYwNTcsMzYwNjEsMzYwNjUsMzYwNzIsMzYwNzYsMzYwNzksMzYwODAsMzYwODIsMzYw''@;'; put 'put ''ODUsMzYwODcsMzYwODgsMzYwOTQsMzYwOTUsMzYwOTcsMzYwOTksMzYxMDUsMzYxMTQsMzYxMTksMzYxMjMsMzYxOTcsMzYyMDEsMzYyMDQsMzYyMDYsMzYyMjMsMzYyMjYsMzYyMjgsMzYyMzIsMzYyMzcsMzYyNDAsMzYyNDEsMzYyNDUsMzYyNTQsMzYyNTUsMzYyNTYsMzYyNjIsMzYyNjcs''@;'; put 'put ''MzYyNjgsMzYyNzEsMzYyNzQsMzYyNzcsMzYyNzksMzYyODEsMzYyODMsMzYyODgsMzYyOTMsMzYyOTQsMzYyOTUsMzYyOTYsMzYyOTgsMzYzMDIsMzYzMDUsMzYzMDgsMzYzMDksMzYzMTEsMzYzMTMsMzYzMjQsMzYzMjUsMzYzMjcsMzYzMzIsMzYzMzYsMzYyODQsMzYzMzcsMzYzMzgsMzYz''@;'; put 'put ''NDAsMzYzNDksMzYzNTMsMzYzNTYsMzYzNTcsMzYzNTgsMzYzNjMsMzYzNjksMzYzNzIsMzYzNzQsMzYzODQsMzYzODUsMzYzODYsMzYzODcsMzYzOTAsMzYzOTEsMzY0MDEsMzY0MDMsMzY0MDYsMzY0MDcsMzY0MDgsMzY0MDksMzY0MTMsMzY0MTYsMzY0MTcsMzY0MjcsMzY0MjksMzY0MzAs''@;'; put 'put ''MzY0MzEsMzY0MzYsMzY0NDMsMzY0NDQsMzY0NDUsMzY0NDYsMzY0NDksMzY0NTAsMzY0NTcsMzY0NjAsMzY0NjEsMzY0NjMsMzY0NjQsMzY0NjUsMzY0NzMsMzY0NzQsMzY0NzUsMzY0ODIsMzY0ODMsMzY0ODksMzY0OTYsMzY0OTgsMzY1MDEsMzY1MDYsMzY1MDcsMzY1MDksMzY1MTAsMzY1''@;'; put 'put ''MTQsMzY1MTksMzY1MjEsMzY1MjUsMzY1MjYsMzY1MzEsMzY1MzMsMzY1MzgsMzY1MzksMzY1NDQsMzY1NDUsMzY1NDcsMzY1NDgsMzY1NTEsMzY1NTksMzY1NjEsMzY1NjQsMzY1NzIsMzY1ODQsMzY1OTAsMzY1OTIsMzY1OTMsMzY1OTksMzY2MDEsMzY2MDIsMzY1ODksMzY2MDgsMzY2MTAs''@;'; put 'put ''MzY2MTUsMzY2MTYsMzY2MjMsMzY2MjQsMzY2MzAsMzY2MzEsMzY2MzIsMzY2MzgsMzY2NDAsMzY2NDEsMzY2NDMsMzY2NDUsMzY2NDcsMzY2NDgsMzY2NTIsMzY2NTMsMzY2NTQsMzY2NjAsMzY2NjEsMzY2NjIsMzY2NjMsMzY2NjYsMzY2NzIsMzY2NzMsMzY2NzUsMzY2NzksMzY2ODcsMzY2''@;'; put 'put ''ODksMzY2OTAsMzY2OTEsMzY2OTIsMzY2OTMsMzY2OTYsMzY3MDEsMzY3MDIsMzY3MDksMzY3NjUsMzY3NjgsMzY3NjksMzY3NzIsMzY3NzMsMzY3NzQsMzY3ODksMzY3OTAsMzY3OTIsMzY3OTgsMzY4MDAsMzY4MDEsMzY4MDYsMzY4MTAsMzY4MTEsMzY4MTMsMzY4MTYsMzY4MTgsMzY4MTks''@;'; put 'put ''MzY4MjEsMzY4MzIsMzY4MzUsMzY4MzYsMzY4NDAsMzY4NDYsMzY4NDksMzY4NTMsMzY4NTQsMzY4NTksMzY4NjIsMzY4NjYsMzY4NjgsMzY4NzIsMzY4NzYsMzY4ODgsMzY4OTEsMzY5MDQsMzY5MDUsMzY5MTEsMzY5MDYsMzY5MDgsMzY5MDksMzY5MTUsMzY5MTYsMzY5MTksMzY5MjcsMzY5''@;'; put 'put ''MzEsMzY5MzIsMzY5NDAsMzY5NTUsMzY5NTcsMzY5NjIsMzY5NjYsMzY5NjcsMzY5NzIsMzY5NzYsMzY5ODAsMzY5ODUsMzY5OTcsMzdlMywzNzAwMywzNzAwNCwzNzAwNiwzNzAwOCwzNzAxMywzNzAxNSwzNzAxNiwzNzAxNywzNzAxOSwzNzAyNCwzNzAyNSwzNzAyNiwzNzAyOSwzNzA0MCwz''@;'; put 'put ''NzA0MiwzNzA0MywzNzA0NCwzNzA0NiwzNzA1MywzNzA2OCwzNzA1NCwzNzA1OSwzNzA2MCwzNzA2MSwzNzA2MywzNzA2NCwzNzA3NywzNzA3OSwzNzA4MCwzNzA4MSwzNzA4NCwzNzA4NSwzNzA4NywzNzA5MywzNzA3NCwzNzExMCwzNzA5OSwzNzEwMywzNzEwNCwzNzEwOCwzNzExOCwzNzEx''@;'; put 'put ''OSwzNzEyMCwzNzEyNCwzNzEyNSwzNzEyNiwzNzEyOCwzNzEzMywzNzEzNiwzNzE0MCwzNzE0MiwzNzE0MywzNzE0NCwzNzE0NiwzNzE0OCwzNzE1MCwzNzE1MiwzNzE1NywzNzE1NCwzNzE1NSwzNzE1OSwzNzE2MSwzNzE2NiwzNzE2NywzNzE2OSwzNzE3MiwzNzE3NCwzNzE3NSwzNzE3Nywz''@;'; put 'put ''NzE3OCwzNzE4MCwzNzE4MSwzNzE4NywzNzE5MSwzNzE5MiwzNzE5OSwzNzIwMywzNzIwNywzNzIwOSwzNzIxMCwzNzIxMSwzNzIxNywzNzIyMCwzNzIyMywzNzIyOSwzNzIzNiwzNzI0MSwzNzI0MiwzNzI0MywzNzI0OSwzNzI1MSwzNzI1MywzNzI1NCwzNzI1OCwzNzI2MiwzNzI2NSwzNzI2''@;'; put 'put ''NywzNzI2OCwzNzI2OSwzNzI3MiwzNzI3OCwzNzI4MSwzNzI4NiwzNzI4OCwzNzI5MiwzNzI5MywzNzI5NCwzNzI5NiwzNzI5NywzNzI5OCwzNzI5OSwzNzMwMiwzNzMwNywzNzMwOCwzNzMwOSwzNzMxMSwzNzMxNCwzNzMxNSwzNzMxNywzNzMzMSwzNzMzMiwzNzMzNSwzNzMzNywzNzMzOCwz''@;'; put 'put ''NzM0MiwzNzM0OCwzNzM0OSwzNzM1MywzNzM1NCwzNzM1NiwzNzM1NywzNzM1OCwzNzM1OSwzNzM2MCwzNzM2MSwzNzM2NywzNzM2OSwzNzM3MSwzNzM3MywzNzM3NiwzNzM3NywzNzM4MCwzNzM4MSwzNzM4MiwzNzM4MywzNzM4NSwzNzM4NiwzNzM4OCwzNzM5MiwzNzM5NCwzNzM5NSwzNzM5''@;'; put 'put ''OCwzNzQwMCwzNzQwNCwzNzQwNSwzNzQxMSwzNzQxMiwzNzQxMywzNzQxNCwzNzQxNiwzNzQyMiwzNzQyMywzNzQyNCwzNzQyNywzNzQyOSwzNzQzMCwzNzQzMiwzNzQzMywzNzQzNCwzNzQzNiwzNzQzOCwzNzQ0MCwzNzQ0MiwzNzQ0MywzNzQ0NiwzNzQ0NywzNzQ1MCwzNzQ1MywzNzQ1NCwz''@;'; put 'put ''NzQ1NSwzNzQ1NywzNzQ2NCwzNzQ2NSwzNzQ2OCwzNzQ2OSwzNzQ3MiwzNzQ3MywzNzQ3NywzNzQ3OSwzNzQ4MCwzNzQ4MSwzNzQ4NiwzNzQ4NywzNzQ4OCwzNzQ5MywzNzQ5NCwzNzQ5NSwzNzQ5NiwzNzQ5NywzNzQ5OSwzNzUwMCwzNzUwMSwzNzUwMywzNzUxMiwzNzUxMywzNzUxNCwzNzUx''@;'; put 'put ''NywzNzUxOCwzNzUyMiwzNzUyNywzNzUyOSwzNzUzNSwzNzUzNiwzNzU0MCwzNzU0MSwzNzU0MywzNzU0NCwzNzU0NywzNzU1MSwzNzU1NCwzNzU1OCwzNzU2MCwzNzU2MiwzNzU2MywzNzU2NCwzNzU2NSwzNzU2NywzNzU2OCwzNzU2OSwzNzU3MCwzNzU3MSwzNzU3MywzNzU3NCwzNzU3NSwz''@;'; put 'put ''NzU3NiwzNzU3OSwzNzU4MCwzNzU4MSwzNzU4MiwzNzU4NCwzNzU4NywzNzU4OSwzNzU5MSwzNzU5MiwzNzU5MywzNzU5NiwzNzU5NywzNzU5OSwzNzYwMCwzNzYwMSwzNzYwMywzNzYwNSwzNzYwNywzNzYwOCwzNzYxMiwzNzYxNCwzNzYxNiwzNzYyNSwzNzYyNywzNzYzMSwzNzYzMiwzNzYz''@;'; put 'put ''NCwzNzY0MCwzNzY0NSwzNzY0OSwzNzY1MiwzNzY1MywzNzY2MCwzNzY2MSwzNzY2MiwzNzY2MywzNzY2NSwzNzY2OCwzNzY2OSwzNzY3MSwzNzY3MywzNzY3NCwzNzY4MywzNzY4NCwzNzY4NiwzNzY4NywzNzcwMywzNzcwNCwzNzcwNSwzNzcxMiwzNzcxMywzNzcxNCwzNzcxNywzNzcxOSwz''@;'; put 'put ''NzcyMCwzNzcyMiwzNzcyNiwzNzczMiwzNzczMywzNzczNSwzNzczNywzNzczOCwzNzc0MSwzNzc0MywzNzc0NCwzNzc0NSwzNzc0NywzNzc0OCwzNzc1MCwzNzc1NCwzNzc1NywzNzc1OSwzNzc2MCwzNzc2MSwzNzc2MiwzNzc2OCwzNzc3MCwzNzc3MSwzNzc3MywzNzc3NSwzNzc3OCwzNzc4''@;'; put 'put ''MSwzNzc4NCwzNzc4NywzNzc5MCwzNzc5MywzNzc5NSwzNzc5NiwzNzc5OCwzNzgwMCwzNzgwMywzNzgxMiwzNzgxMywzNzgxNCwzNzgxOCwzNzgwMSwzNzgyNSwzNzgyOCwzNzgyOSwzNzgzMCwzNzgzMSwzNzgzMywzNzgzNCwzNzgzNSwzNzgzNiwzNzgzNywzNzg0MywzNzg0OSwzNzg1Miwz''@;'; put 'put ''Nzg1NCwzNzg1NSwzNzg1OCwzNzg2MiwzNzg2MywzNzg4MSwzNzg3OSwzNzg4MCwzNzg4MiwzNzg4MywzNzg4NSwzNzg4OSwzNzg5MCwzNzg5MiwzNzg5NiwzNzg5NywzNzkwMSwzNzkwMiwzNzkwMywzNzkwOSwzNzkxMCwzNzkxMSwzNzkxOSwzNzkzNCwzNzkzNSwzNzkzNywzNzkzOCwzNzkz''@;'; put 'put ''OSwzNzk0MCwzNzk0NywzNzk1MSwzNzk0OSwzNzk1NSwzNzk1NywzNzk2MCwzNzk2MiwzNzk2NCwzNzk3MywzNzk3NywzNzk4MCwzNzk4MywzNzk4NSwzNzk4NywzNzk5MiwzNzk5NSwzNzk5NywzNzk5OCwzNzk5OSwzODAwMSwzODAwMiwzODAyMCwzODAxOSwzODI2NCwzODI2NSwzODI3MCwz''@;'; put 'put ''ODI3NiwzODI4MCwzODI4NCwzODI4NSwzODI4NiwzODMwMSwzODMwMiwzODMwMywzODMwNSwzODMxMCwzODMxMywzODMxNSwzODMxNiwzODMyNCwzODMyNiwzODMzMCwzODMzMywzODMzNSwzODM0MiwzODM0NCwzODM0NSwzODM0NywzODM1MiwzODM1MywzODM1NCwzODM1NSwzODM2MSwzODM2''@;'; put 'put ''MiwzODM2NSwzODM2NiwzODM2NywzODM2OCwzODM3MiwzODM3NCwzODQyOSwzODQzMCwzODQzNCwzODQzNiwzODQzNywzODQzOCwzODQ0NCwzODQ0OSwzODQ1MSwzODQ1NSwzODQ1NiwzODQ1NywzODQ1OCwzODQ2MCwzODQ2MSwzODQ2NSwzODQ4MiwzODQ4NCwzODQ4NiwzODQ4NywzODQ4OCwz''@;'; put 'put ''ODQ5NywzODUxMCwzODUxNiwzODUyMywzODUyNCwzODUyNiwzODUyNywzODUyOSwzODUzMCwzODUzMSwzODUzMiwzODUzNywzODU0NSwzODU1MCwzODU1NCwzODU1NywzODU1OSwzODU2NCwzODU2NSwzODU2NiwzODU2OSwzODU3NCwzODU3NSwzODU3OSwzODU4NiwzODYwMiwzODYxMCwyMzk4''@;'; put 'put ''NiwzODYxNiwzODYxOCwzODYyMSwzODYyMiwzODYyMywzODYzMywzODYzOSwzODY0MSwzODY1MCwzODY1OCwzODY1OSwzODY2MSwzODY2NSwzODY4MiwzODY4MywzODY4NSwzODY4OSwzODY5MCwzODY5MSwzODY5NiwzODcwNSwzODcwNywzODcyMSwzODcyMywzODczMCwzODczNCwzODczNSwz''@;'; put 'put ''ODc0MSwzODc0MywzODc0NCwzODc0NiwzODc0NywzODc1NSwzODc1OSwzODc2MiwzODc2NiwzODc3MSwzODc3NCwzODc3NSwzODc3NiwzODc3OSwzODc4MSwzODc4MywzODc4NCwzODc5MywzODgwNSwzODgwNiwzODgwNywzODgwOSwzODgxMCwzODgxNCwzODgxNSwzODgxOCwzODgyOCwzODgz''@;'; put 'put ''MCwzODgzMywzODgzNCwzODgzNywzODgzOCwzODg0MCwzODg0MSwzODg0MiwzODg0NCwzODg0NiwzODg0NywzODg0OSwzODg1MiwzODg1MywzODg1NSwzODg1NywzODg1OCwzODg2MCwzODg2MSwzODg2MiwzODg2NCwzODg2NSwzODg2OCwzODg3MSwzODg3MiwzODg3MywzODg3NywzODg3OCwz''@;'; put 'put ''ODg4MCwzODg3NSwzODg4MSwzODg4NCwzODg5NSwzODg5NywzODkwMCwzODkwMywzODkwNCwzODkwNiwzODkxOSwzODkyMiwzODkzNywzODkyNSwzODkyNiwzODkzMiwzODkzNCwzODk0MCwzODk0MiwzODk0NCwzODk0NywzODk1MCwzODk1NSwzODk1OCwzODk1OSwzODk2MCwzODk2MiwzODk2''@;'; put 'put ''MywzODk2NSwzODk0OSwzODk3NCwzODk4MCwzODk4MywzODk4NiwzODk5MywzODk5NCwzODk5NSwzODk5OCwzODk5OSwzOTAwMSwzOTAwMiwzOTAxMCwzOTAxMSwzOTAxMywzOTAxNCwzOTAxOCwzOTAyMCwzOTA4MywzOTA4NSwzOTA4NiwzOTA4OCwzOTA5MiwzOTA5NSwzOTA5NiwzOTA5OCwz''@;'; put 'put ''OTA5OSwzOTEwMywzOTEwNiwzOTEwOSwzOTExMiwzOTExNiwzOTEzNywzOTEzOSwzOTE0MSwzOTE0MiwzOTE0MywzOTE0NiwzOTE1NSwzOTE1OCwzOTE3MCwzOTE3NSwzOTE3NiwzOTE4NSwzOTE4OSwzOTE5MCwzOTE5MSwzOTE5NCwzOTE5NSwzOTE5NiwzOTE5OSwzOTIwMiwzOTIwNiwzOTIw''@;'; put 'put ''NywzOTIxMSwzOTIxNywzOTIxOCwzOTIxOSwzOTIyMCwzOTIyMSwzOTIyNSwzOTIyNiwzOTIyNywzOTIyOCwzOTIzMiwzOTIzMywzOTIzOCwzOTIzOSwzOTI0MCwzOTI0NSwzOTI0NiwzOTI1MiwzOTI1NiwzOTI1NywzOTI1OSwzOTI2MCwzOTI2MiwzOTI2MywzOTI2NCwzOTMyMywzOTMyNSwz''@;'; put 'put ''OTMyNywzOTMzNCwzOTM0NCwzOTM0NSwzOTM0NiwzOTM0OSwzOTM1MywzOTM1NCwzOTM1NywzOTM1OSwzOTM2MywzOTM2OSwzOTM3OSwzOTM4MCwzOTM4NSwzOTM4NiwzOTM4OCwzOTM5MCwzOTM5OSwzOTQwMiwzOTQwMywzOTQwNCwzOTQwOCwzOTQxMiwzOTQxMywzOTQxNywzOTQyMSwzOTQy''@;'; put 'put ''MiwzOTQyNiwzOTQyNywzOTQyOCwzOTQzNSwzOTQzNiwzOTQ0MCwzOTQ0MSwzOTQ0NiwzOTQ1NCwzOTQ1NiwzOTQ1OCwzOTQ1OSwzOTQ2MCwzOTQ2MywzOTQ2OSwzOTQ3MCwzOTQ3NSwzOTQ3NywzOTQ3OCwzOTQ4MCwzOTQ5NSwzOTQ4OSwzOTQ5MiwzOTQ5OCwzOTQ5OSwzOTUwMCwzOTUwMiwz''@;'; put 'put ''OTUwNSwzOTUwOCwzOTUxMCwzOTUxNywzOTU5NCwzOTU5NiwzOTU5OCwzOTU5OSwzOTYwMiwzOTYwNCwzOTYwNSwzOTYwNiwzOTYwOSwzOTYxMSwzOTYxNCwzOTYxNSwzOTYxNywzOTYxOSwzOTYyMiwzOTYyNCwzOTYzMCwzOTYzMiwzOTYzNCwzOTYzNywzOTYzOCwzOTYzOSwzOTY0MywzOTY0''@;'; put 'put ''NCwzOTY0OCwzOTY1MiwzOTY1MywzOTY1NSwzOTY1NywzOTY2MCwzOTY2NiwzOTY2NywzOTY2OSwzOTY3MywzOTY3NCwzOTY3NywzOTY3OSwzOTY4MCwzOTY4MSwzOTY4MiwzOTY4MywzOTY4NCwzOTY4NSwzOTY4OCwzOTY4OSwzOTY5MSwzOTY5MiwzOTY5MywzOTY5NCwzOTY5NiwzOTY5OCwz''@;'; put 'put ''OTcwMiwzOTcwNSwzOTcwNywzOTcwOCwzOTcxMiwzOTcxOCwzOTcyMywzOTcyNSwzOTczMSwzOTczMiwzOTczMywzOTczNSwzOTczNywzOTczOCwzOTc0MSwzOTc1MiwzOTc1NSwzOTc1NiwzOTc2NSwzOTc2NiwzOTc2NywzOTc3MSwzOTc3NCwzOTc3NywzOTc3OSwzOTc4MSwzOTc4MiwzOTc4''@;'; put 'put ''NCwzOTc4NiwzOTc4NywzOTc4OCwzOTc4OSwzOTc5MCwzOTc5NSwzOTc5NywzOTc5OSwzOTgwMCwzOTgwMSwzOTgwNywzOTgwOCwzOTgxMiwzOTgxMywzOTgxNCwzOTgxNSwzOTgxNywzOTgxOCwzOTgxOSwzOTgyMSwzOTgyMywzOTgyNCwzOTgyOCwzOTgzNCwzOTgzNywzOTgzOCwzOTg0Niwz''@;'; put 'put ''OTg0NywzOTg0OSwzOTg1MiwzOTg1NiwzOTg1NywzOTg1OCwzOTg2MywzOTg2NCwzOTg2NywzOTg2OCwzOTg3MCwzOTg3MSwzOTg3MywzOTg3OSwzOTg4MCwzOTg4NiwzOTg4OCwzOTg5NSwzOTg5NiwzOTkwMSwzOTkwMywzOTkwOSwzOTkxMSwzOTkxNCwzOTkxNSwzOTkxOSwzOTkyMywzOTky''@;'; put 'put ''NywzOTkyOCwzOTkyOSwzOTkzMCwzOTkzMywzOTkzNSwzOTkzNiwzOTkzOCwzOTk0NywzOTk1MSwzOTk1MywzOTk1OCwzOTk2MCwzOTk2MSwzOTk2MiwzOTk2NCwzOTk2NiwzOTk3MCwzOTk3MSwzOTk3NCwzOTk3NSwzOTk3NiwzOTk3NywzOTk3OCwzOTk4NSwzOTk4OSwzOTk5MCwzOTk5MSwz''@;'; put 'put ''OTk5Nyw0MDAwMSw0MDAwMyw0MDAwNCw0MDAwNSw0MDAwOSw0MDAxMCw0MDAxNCw0MDAxNSw0MDAxNiw0MDAxOSw0MDAyMCw0MDAyMiw0MDAyNCw0MDAyNyw0MDAyOSw0MDAzMCw0MDAzMSw0MDAzNSw0MDA0MSw0MDA0Miw0MDAyOCw0MDA0Myw0MDA0MCw0MDA0Niw0MDA0OCw0MDA1MCw0MDA1''@;'; put 'put ''Myw0MDA1NSw0MDA1OSw0MDE2Niw0MDE3OCw0MDE4Myw0MDE4NSw0MDIwMyw0MDE5NCw0MDIwOSw0MDIxNSw0MDIxNiw0MDIyMCw0MDIyMSw0MDIyMiw0MDIzOSw0MDI0MCw0MDI0Miw0MDI0Myw0MDI0NCw0MDI1MCw0MDI1Miw0MDI2MSw0MDI1Myw0MDI1OCw0MDI1OSw0MDI2Myw0MDI2Niw0''@;'; put 'put ''MDI3NSw0MDI3Niw0MDI4Nyw0MDI5MSw0MDI5MCw0MDI5Myw0MDI5Nyw0MDI5OCw0MDI5OSw0MDMwNCw0MDMxMCw0MDMxMSw0MDMxNSw0MDMxNiw0MDMxOCw0MDMyMyw0MDMyNCw0MDMyNiw0MDMzMCw0MDMzMyw0MDMzNCw0MDMzOCw0MDMzOSw0MDM0MSw0MDM0Miw0MDM0Myw0MDM0NCw0MDM1''@;'; put 'put ''Myw0MDM2Miw0MDM2NCw0MDM2Niw0MDM2OSw0MDM3Myw0MDM3Nyw0MDM4MCw0MDM4Myw0MDM4Nyw0MDM5MSw0MDM5Myw0MDM5NCw0MDQwNCw0MDQwNSw0MDQwNiw0MDQwNyw0MDQxMCw0MDQxNCw0MDQxNSw0MDQxNiw0MDQyMSw0MDQyMyw0MDQyNSw0MDQyNyw0MDQzMCw0MDQzMiw0MDQzNSw0''@;'; put 'put ''MDQzNiw0MDQ0Niw0MDQ1OCw0MDQ1MCw0MDQ1NSw0MDQ2Miw0MDQ2NCw0MDQ2NSw0MDQ2Niw0MDQ2OSw0MDQ3MCw0MDQ3Myw0MDQ3Niw0MDQ3Nyw0MDU3MCw0MDU3MSw0MDU3Miw0MDU3Niw0MDU3OCw0MDU3OSw0MDU4MCw0MDU4MSw0MDU4Myw0MDU5MCw0MDU5MSw0MDU5OCw0MDYwMCw0MDYw''@;'; put 'put ''Myw0MDYwNiw0MDYxMiw0MDYxNiw0MDYyMCw0MDYyMiw0MDYyMyw0MDYyNCw0MDYyNyw0MDYyOCw0MDYyOSw0MDY0Niw0MDY0OCw0MDY1MSw0MDY2MSw0MDY3MSw0MDY3Niw0MDY3OSw0MDY4NCw0MDY4NSw0MDY4Niw0MDY4OCw0MDY4OSw0MDY5MCw0MDY5Myw0MDY5Niw0MDcwMyw0MDcwNiw0''@;'; put 'put ''MDcwNyw0MDcxMyw0MDcxOSw0MDcyMCw0MDcyMSw0MDcyMiw0MDcyNCw0MDcyNiw0MDcyNyw0MDcyOSw0MDczMCw0MDczMSw0MDczNSw0MDczOCw0MDc0Miw0MDc0Niw0MDc0Nyw0MDc1MSw0MDc1Myw0MDc1NCw0MDc1Niw0MDc1OSw0MDc2MSw0MDc2Miw0MDc2NCw0MDc2NSw0MDc2Nyw0MDc2''@;'; put 'put ''OSw0MDc3MSw0MDc3Miw0MDc3Myw0MDc3NCw0MDc3NSw0MDc4Nyw0MDc4OSw0MDc5MCw0MDc5MSw0MDc5Miw0MDc5NCw0MDc5Nyw0MDc5OCw0MDgwOCw0MDgwOSw0MDgxMyw0MDgxNCw0MDgxNSw0MDgxNiw0MDgxNyw0MDgxOSw0MDgyMSw0MDgyNiw0MDgyOSw0MDg0Nyw0MDg0OCw0MDg0OSw0''@;'; put 'put ''MDg1MCw0MDg1Miw0MDg1NCw0MDg1NSw0MDg2Miw0MDg2NSw0MDg2Niw0MDg2Nyw0MDg2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLGlibTg2NjpbMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1''@;'; put 'put ''MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4''@;'; put 'put ''NSwxMDg2LDEwODcsOTYxNyw5NjE4LDk2MTksOTQ3NCw5NTA4LDk1NjksOTU3MCw5NTU4LDk1NTcsOTU3MSw5NTUzLDk1NTksOTU2NSw5NTY0LDk1NjMsOTQ4OCw5NDkyLDk1MjQsOTUxNiw5NTAwLDk0NzIsOTUzMiw5NTY2LDk1NjcsOTU2Miw5NTU2LDk1NzcsOTU3NCw5NTY4LDk1NTIsOTU4''@;'; put 'put ''MCw5NTc1LDk1NzYsOTU3Miw5NTczLDk1NjEsOTU2MCw5NTU0LDk1NTUsOTU3OSw5NTc4LDk0OTYsOTQ4NCw5NjA4LDk2MDQsOTYxMiw5NjE2LDk2MDAsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEw''@;'; put 'put ''MywxMDI1LDExMDUsMTAyOCwxMTA4LDEwMzEsMTExMSwxMDM4LDExMTgsMTc2LDg3MjksMTgzLDg3MzAsODQ3MCwxNjQsOTYzMiwxNjBdLCJpc28tODg1OS0yIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUs''@;'; put 'put ''MTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjYwLDcyOCwzMjEsMTY0LDMxNywzNDYsMTY3LDE2OCwzNTIsMzUwLDM1NiwzNzcsMTczLDM4MSwzNzksMTc2LDI2MSw3MzEsMzIyLDE4MCwzMTgsMzQ3LDcxMSwxODQsMzUzLDM1MSwz''@;'; put 'put ''NTcsMzc4LDczMywzODIsMzgwLDM0MCwxOTMsMTk0LDI1OCwxOTYsMzEzLDI2MiwxOTksMjY4LDIwMSwyODAsMjAzLDI4MiwyMDUsMjA2LDI3MCwyNzIsMzIzLDMyNywyMTEsMjEyLDMzNiwyMTQsMjE1LDM0NCwzNjYsMjE4LDM2OCwyMjAsMjIxLDM1NCwyMjMsMzQxLDIyNSwyMjYsMjU5LDIy''@;'; put 'put ''OCwzMTQsMjYzLDIzMSwyNjksMjMzLDI4MSwyMzUsMjgzLDIzNywyMzgsMjcxLDI3MywzMjQsMzI4LDI0MywyNDQsMzM3LDI0NiwyNDcsMzQ1LDM2NywyNTAsMzY5LDI1MiwyNTMsMzU1LDcyOV0sImlzby04ODU5LTMiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcs''@;'; put 'put ''MTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwyOTQsNzI4LDE2MywxNjQsbnVsbCwyOTIsMTY3LDE2OCwzMDQsMzUwLDI4NiwzMDgsMTczLG51bGwsMzc5LDE3NiwyOTUsMTc4''@;'; put 'put ''LDE3OSwxODAsMTgxLDI5MywxODMsMTg0LDMwNSwzNTEsMjg3LDMwOSwxODksbnVsbCwzODAsMTkyLDE5MywxOTQsbnVsbCwxOTYsMjY2LDI2NCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNyxudWxsLDIwOSwyMTAsMjExLDIxMiwyODgsMjE0LDIxNSwyODQsMjE3LDIxOCwy''@;'; put 'put ''MTksMjIwLDM2NCwzNDgsMjIzLDIyNCwyMjUsMjI2LG51bGwsMjI4LDI2NywyNjUsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksbnVsbCwyNDEsMjQyLDI0MywyNDQsMjg5LDI0NiwyNDcsMjg1LDI0OSwyNTAsMjUxLDI1MiwzNjUsMzQ5LDcyOV0sImlzby04ODU5LTQiOlsx''@;'; put 'put ''MjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwyNjAsMzEyLDM0MiwxNjQsMjk2LDMxNSwxNjcsMTY4LDM1''@;'; put 'put ''MiwyNzQsMjkwLDM1OCwxNzMsMzgxLDE3NSwxNzYsMjYxLDczMSwzNDMsMTgwLDI5NywzMTYsNzExLDE4NCwzNTMsMjc1LDI5MSwzNTksMzMwLDM4MiwzMzEsMjU2LDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDMwMiwyNjgsMjAxLDI4MCwyMDMsMjc4LDIwNSwyMDYsMjk4LDI3MiwzMjUsMzMy''@;'; put 'put ''LDMxMCwyMTIsMjEzLDIxNCwyMTUsMjE2LDM3MCwyMTgsMjE5LDIyMCwzNjAsMzYyLDIyMywyNTcsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMzAzLDI2OSwyMzMsMjgxLDIzNSwyNzksMjM3LDIzOCwyOTksMjczLDMyNiwzMzMsMzExLDI0NCwyNDUsMjQ2LDI0NywyNDgsMzcxLDI1MCwyNTEs''@;'; put 'put ''MjUyLDM2MSwzNjMsNzI5XSwiaXNvLTg4NTktNSI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDEw''@;'; put 'put ''MjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDE3MywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1''@;'; put 'put ''OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5''@;'; put 'put ''MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMyw4NDcwLDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDE2NywxMTE4LDExMTldLCJpc28tODg1OS02IjpbMTI4LDEyOSwx''@;'; put 'put ''MzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsbnVsbCxudWxsLG51bGwsMTY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsMTU0OCwxNzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNTYzLG51bGwsbnVsbCxudWxsLDE1NjcsbnVsbCwxNTY5LDE1NzAsMTU3MSwxNTcyLDE1NzMsMTU3NCwxNTc1LDE1NzYsMTU3NywxNTc4''@;'; put 'put ''LDE1NzksMTU4MCwxNTgxLDE1ODIsMTU4MywxNTg0LDE1ODUsMTU4NiwxNTg3LDE1ODgsMTU4OSwxNTkwLDE1OTEsMTU5MiwxNTkzLDE1OTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE2MDAsMTYwMSwxNjAyLDE2MDMsMTYwNCwxNjA1LDE2MDYsMTYwNywxNjA4LDE2MDksMTYxMCwxNjEx''@;'; put 'put ''LDE2MTIsMTYxMywxNjE0LDE2MTUsMTYxNiwxNjE3LDE2MTgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0sImlzby04ODU5LTciOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwx''@;'; put 'put ''NDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCw4MjE2LDgyMTcsMTYzLDgzNjQsODM2NywxNjYsMTY3LDE2OCwxNjksODkwLDE3MSwxNzIsMTczLG51bGwsODIxMywxNzYsMTc3LDE3OCwxNzks''@;'; put 'put ''OTAwLDkwMSw5MDIsMTgzLDkwNCw5MDUsOTA2LDE4Nyw5MDgsMTg5LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksbnVsbCw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAs''@;'; put 'put ''OTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LG51bGxdLCJpc28tODg1OS04IjpbMTI4LDEyOSwx''@;'; put 'put ''MzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsbnVsbCwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDIxNSwx''@;'; put 'put ''NzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwyNDcsMTg3LDE4OCwxODksMTkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4MjE1LDE0ODgsMTQ4OSwxNDkwLDE0OTEsMTQ5MiwxNDkzLDE0OTQsMTQ5NSwxNDk2LDE0OTcsMTQ5OCwxNDk5LDE1MDAsMTUwMSwxNTAyLDE1MDMsMTUwNCwx''@;'; put 'put ''NTA1LDE1MDYsMTUwNywxNTA4LDE1MDksMTUxMCwxNTExLDE1MTIsMTUxMywxNTE0LG51bGwsbnVsbCw4MjA2LDgyMDcsbnVsbF0sImlzby04ODU5LTEwIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2''@;'; put 'put ''LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjYwLDI3NCwyOTAsMjk4LDI5NiwzMTAsMTY3LDMxNSwyNzIsMzUyLDM1OCwzODEsMTczLDM2MiwzMzAsMTc2LDI2MSwyNzUsMjkxLDI5OSwyOTcsMzExLDE4MywzMTYsMjczLDM1MywzNTks''@;'; put 'put ''MzgyLDgyMTMsMzYzLDMzMSwyNTYsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMzAyLDI2OCwyMDEsMjgwLDIwMywyNzgsMjA1LDIwNiwyMDcsMjA4LDMyNSwzMzIsMjExLDIxMiwyMTMsMjE0LDM2MCwyMTYsMzcwLDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDI1NywyMjUsMjI2LDIyNywyMjgs''@;'; put 'put ''MjI5LDIzMCwzMDMsMjY5LDIzMywyODEsMjM1LDI3OSwyMzcsMjM4LDIzOSwyNDAsMzI2LDMzMywyNDMsMjQ0LDI0NSwyNDYsMzYxLDI0OCwzNzEsMjUwLDI1MSwyNTIsMjUzLDI1NCwzMTJdLCJpc28tODg1OS0xMyI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywx''@;'; put 'put ''MzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDgyMjEsMTYyLDE2MywxNjQsODIyMiwxNjYsMTY3LDIxNiwxNjksMzQyLDE3MSwxNzIsMTczLDE3NCwxOTgsMTc2LDE3NywxNzgs''@;'; put 'put ''MTc5LDgyMjAsMTgxLDE4MiwxODMsMjQ4LDE4NSwzNDMsMTg3LDE4OCwxODksMTkwLDIzMCwyNjAsMzAyLDI1NiwyNjIsMTk2LDE5NywyODAsMjc0LDI2OCwyMDEsMzc3LDI3OCwyOTAsMzEwLDI5OCwzMTUsMzUyLDMyMywzMjUsMjExLDMzMiwyMTMsMjE0LDIxNSwzNzAsMzIxLDM0NiwzNjIs''@;'; put 'put ''MjIwLDM3OSwzODEsMjIzLDI2MSwzMDMsMjU3LDI2MywyMjgsMjI5LDI4MSwyNzUsMjY5LDIzMywzNzgsMjc5LDI5MSwzMTEsMjk5LDMxNiwzNTMsMzI0LDMyNiwyNDMsMzMzLDI0NSwyNDYsMjQ3LDM3MSwzMjIsMzQ3LDM2MywyNTIsMzgwLDM4Miw4MjE3XSwiaXNvLTg4NTktMTQiOlsxMjgs''@;'; put 'put ''MTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCw3NjgyLDc2ODMsMTYzLDI2NiwyNjcsNzY5MCwxNjcsNzgwOCwx''@;'; put 'put ''NjksNzgxMCw3NjkxLDc5MjIsMTczLDE3NCwzNzYsNzcxMCw3NzExLDI4OCwyODksNzc0NCw3NzQ1LDE4Miw3NzY2LDc4MDksNzc2Nyw3ODExLDc3NzYsNzkyMyw3ODEyLDc4MTMsNzc3NywxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIw''@;'; put 'put ''NiwyMDcsMzcyLDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDc3ODYsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMzc0LDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMzczLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDc3''@;'; put 'put ''ODcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMzc1LDI1NV0sImlzby04ODU5LTE1IjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1''@;'; put 'put ''NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsODM2NCwxNjUsMzUyLDE2NywzNTMsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwzODEsMTgxLDE4MiwxODMsMzgyLDE4NSwxODYsMTg3LDMzOCwzMzksMzc2LDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5''@;'; put 'put ''NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4''@;'; put 'put ''LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTVdLCJpc28tODg1OS0xNiI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcs''@;'; put 'put ''MTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDI2MCwyNjEsMzIxLDgzNjQsODIyMiwzNTIsMTY3LDM1MywxNjksNTM2LDE3MSwzNzcsMTczLDM3OCwzNzksMTc2LDE3NywyNjgsMzIyLDM4MSw4MjIxLDE4MiwxODMsMzgyLDI2OSw1MzcsMTg3LDMz''@;'; put 'put ''OCwzMzksMzc2LDM4MCwxOTIsMTkzLDE5NCwyNTgsMTk2LDI2MiwxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjcyLDMyMywyMTAsMjExLDIxMiwzMzYsMjE0LDM0NiwzNjgsMjE3LDIxOCwyMTksMjIwLDI4MCw1MzgsMjIzLDIyNCwyMjUsMjI2LDI1OSwyMjgsMjYz''@;'; put 'put ''LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNzMsMzI0LDI0MiwyNDMsMjQ0LDMzNywyNDYsMzQ3LDM2OSwyNDksMjUwLDI1MSwyNTIsMjgxLDUzOSwyNTVdLCJrb2k4LXIiOls5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0''@;'; put 'put ''LDk1MzIsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDg5OTIsOTYzMiw4NzI5LDg3MzAsODc3Niw4ODA0LDg4MDUsMTYwLDg5OTMsMTc2LDE3OCwxODMsMjQ3LDk1NTIsOTU1Myw5NTU0LDExMDUsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYy''@;'; put 'put ''LDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksMTAyNSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsMTY5LDExMDIsMTA3MiwxMDczLDEwOTQsMTA3NiwxMDc3LDEwOTIsMTA3NSwxMDkzLDEwODAsMTA4MSwxMDgyLDEwODMs''@;'; put 'put ''MTA4NCwxMDg1LDEwODYsMTA4NywxMTAzLDEwODgsMTA4OSwxMDkwLDEwOTEsMTA3OCwxMDc0LDExMDAsMTA5OSwxMDc5LDEwOTYsMTEwMSwxMDk3LDEwOTUsMTA5OCwxMDcwLDEwNDAsMTA0MSwxMDYyLDEwNDQsMTA0NSwxMDYwLDEwNDMsMTA2MSwxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIs''@;'; put 'put ''MTA1MywxMDU0LDEwNTUsMTA3MSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNDYsMTA0MiwxMDY4LDEwNjcsMTA0NywxMDY0LDEwNjksMTA2NSwxMDYzLDEwNjZdLCJrb2k4LXUiOls5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTYwMCw5NjA0''@;'; put 'put ''LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDg5OTIsOTYzMiw4NzI5LDg3MzAsODc3Niw4ODA0LDg4MDUsMTYwLDg5OTMsMTc2LDE3OCwxODMsMjQ3LDk1NTIsOTU1Myw5NTU0LDExMDUsMTEwOCw5NTU2LDExMTAsMTExMSw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsMTE2OSwxMTE4''@;'; put 'put ''LDk1NjYsOTU2Nyw5NTY4LDk1NjksMTAyNSwxMDI4LDk1NzEsMTAzMCwxMDMxLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCwxMTY4LDEwMzgsMTY5LDExMDIsMTA3MiwxMDczLDEwOTQsMTA3NiwxMDc3LDEwOTIsMTA3NSwxMDkzLDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYs''@;'; put 'put ''MTA4NywxMTAzLDEwODgsMTA4OSwxMDkwLDEwOTEsMTA3OCwxMDc0LDExMDAsMTA5OSwxMDc5LDEwOTYsMTEwMSwxMDk3LDEwOTUsMTA5OCwxMDcwLDEwNDAsMTA0MSwxMDYyLDEwNDQsMTA0NSwxMDYwLDEwNDMsMTA2MSwxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUs''@;'; put 'put ''MTA3MSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNDYsMTA0MiwxMDY4LDEwNjcsMTA0NywxMDY0LDEwNjksMTA2NSwxMDYzLDEwNjZdLG1hY2ludG9zaDpbMTk2LDE5NywxOTksMjAxLDIwOSwyMTQsMjIwLDIyNSwyMjQsMjI2LDIyOCwyMjcsMjI5LDIzMSwyMzMsMjMyLDIzNCwyMzUsMjM3LDIz''@;'; put 'put ''NiwyMzgsMjM5LDI0MSwyNDMsMjQyLDI0NCwyNDYsMjQ1LDI1MCwyNDksMjUxLDI1Miw4MjI0LDE3NiwxNjIsMTYzLDE2Nyw4MjI2LDE4MiwyMjMsMTc0LDE2OSw4NDgyLDE4MCwxNjgsODgwMCwxOTgsMjE2LDg3MzQsMTc3LDg4MDQsODgwNSwxNjUsMTgxLDg3MDYsODcyMSw4NzE5LDk2MCw4''@;'; put 'put ''NzQ3LDE3MCwxODYsOTM3LDIzMCwyNDgsMTkxLDE2MSwxNzIsODczMCw0MDIsODc3Niw4NzEwLDE3MSwxODcsODIzMCwxNjAsMTkyLDE5NSwyMTMsMzM4LDMzOSw4MjExLDgyMTIsODIyMCw4MjIxLDgyMTYsODIxNywyNDcsOTY3NCwyNTUsMzc2LDgyNjAsODM2NCw4MjQ5LDgyNTAsNjQyNTcs''@;'; put 'put ''NjQyNTgsODIyNSwxODMsODIxOCw4MjIyLDgyNDAsMTk0LDIwMiwxOTMsMjAzLDIwMCwyMDUsMjA2LDIwNywyMDQsMjExLDIxMiw2Mzc0MywyMTAsMjE4LDIxOSwyMTcsMzA1LDcxMCw3MzIsMTc1LDcyOCw3MjksNzMwLDE4NCw3MzMsNzMxLDcxMV0sIndpbmRvd3MtODc0IjpbODM2NCwxMjks''@;'; put 'put ''MTMwLDEzMSwxMzIsODIzMCwxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMzU4NSwzNTg2LDM1ODcsMzU4OCwzNTg5LDM1OTAsMzU5''@;'; put 'put ''MSwzNTkyLDM1OTMsMzU5NCwzNTk1LDM1OTYsMzU5NywzNTk4LDM1OTksMzYwMCwzNjAxLDM2MDIsMzYwMywzNjA0LDM2MDUsMzYwNiwzNjA3LDM2MDgsMzYwOSwzNjEwLDM2MTEsMzYxMiwzNjEzLDM2MTQsMzYxNSwzNjE2LDM2MTcsMzYxOCwzNjE5LDM2MjAsMzYyMSwzNjIyLDM2MjMsMzYy''@;'; put 'put ''NCwzNjI1LDM2MjYsMzYyNywzNjI4LDM2MjksMzYzMCwzNjMxLDM2MzIsMzYzMywzNjM0LDM2MzUsMzYzNiwzNjM3LDM2MzgsMzYzOSwzNjQwLDM2NDEsMzY0MixudWxsLG51bGwsbnVsbCxudWxsLDM2NDcsMzY0OCwzNjQ5LDM2NTAsMzY1MSwzNjUyLDM2NTMsMzY1NCwzNjU1LDM2NTYsMzY1''@;'; put 'put ''NywzNjU4LDM2NTksMzY2MCwzNjYxLDM2NjIsMzY2MywzNjY0LDM2NjUsMzY2NiwzNjY3LDM2NjgsMzY2OSwzNjcwLDM2NzEsMzY3MiwzNjczLDM2NzQsMzY3NSxudWxsLG51bGwsbnVsbCxudWxsXSwid2luZG93cy0xMjUwIjpbODM2NCwxMjksODIxOCwxMzEsODIyMiw4MjMwLDgyMjQsODIy''@;'; put 'put ''NSwxMzYsODI0MCwzNTIsODI0OSwzNDYsMzU2LDM4MSwzNzcsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDg0ODIsMzUzLDgyNTAsMzQ3LDM1NywzODIsMzc4LDE2MCw3MTEsNzI4LDMyMSwxNjQsMjYwLDE2NiwxNjcsMTY4LDE2OSwzNTAsMTcxLDE3MiwxNzMs''@;'; put 'put ''MTc0LDM3OSwxNzYsMTc3LDczMSwzMjIsMTgwLDE4MSwxODIsMTgzLDE4NCwyNjEsMzUxLDE4NywzMTcsNzMzLDMxOCwzODAsMzQwLDE5MywxOTQsMjU4LDE5NiwzMTMsMjYyLDE5OSwyNjgsMjAxLDI4MCwyMDMsMjgyLDIwNSwyMDYsMjcwLDI3MiwzMjMsMzI3LDIxMSwyMTIsMzM2LDIxNCwy''@;'; put 'put ''MTUsMzQ0LDM2NiwyMTgsMzY4LDIyMCwyMjEsMzU0LDIyMywzNDEsMjI1LDIyNiwyNTksMjI4LDMxNCwyNjMsMjMxLDI2OSwyMzMsMjgxLDIzNSwyODMsMjM3LDIzOCwyNzEsMjczLDMyNCwzMjgsMjQzLDI0NCwzMzcsMjQ2LDI0NywzNDUsMzY3LDI1MCwzNjksMjUyLDI1MywzNTUsNzI5XSwi''@;'; put 'put ''d2luZG93cy0xMjUxIjpbMTAyNiwxMDI3LDgyMTgsMTEwNyw4MjIyLDgyMzAsODIyNCw4MjI1LDgzNjQsODI0MCwxMDMzLDgyNDksMTAzNCwxMDM2LDEwMzUsMTAzOSwxMTA2LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDg0ODIsMTExMyw4MjUwLDExMTQsMTExNiwx''@;'; put 'put ''MTE1LDExMTksMTYwLDEwMzgsMTExOCwxMDMyLDE2NCwxMTY4LDE2NiwxNjcsMTAyNSwxNjksMTAyOCwxNzEsMTcyLDE3MywxNzQsMTAzMSwxNzYsMTc3LDEwMzAsMTExMCwxMTY5LDE4MSwxODIsMTgzLDExMDUsODQ3MCwxMTA4LDE4NywxMTEyLDEwMjksMTEwOSwxMTExLDEwNDAsMTA0MSwx''@;'; put 'put ''MDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwx''@;'; put 'put ''MDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDNdLCJ3aW5kb3dzLTEyNTIiOls4MzY0''@;'; put 'put ''LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDcxMCw4MjQwLDM1Miw4MjQ5LDMzOCwxNDEsMzgxLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiw3MzIsODQ4MiwzNTMsODI1MCwzMzksMTU3LDM4MiwzNzYsMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUs''@;'; put 'put ''MTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwy''@;'; put 'put ''MDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0''@;'; put 'put ''OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTVdLCJ3aW5kb3dzLTEyNTMiOls4MzY0LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDEzNiw4MjQwLDEzOCw4MjQ5LDE0MCwxNDEsMTQyLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNTIsODQ4''@;'; put 'put ''MiwxNTQsODI1MCwxNTYsMTU3LDE1OCwxNTksMTYwLDkwMSw5MDIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LG51bGwsMTcxLDE3MiwxNzMsMTc0LDgyMTMsMTc2LDE3NywxNzgsMTc5LDkwMCwxODEsMTgyLDE4Myw5MDQsOTA1LDkwNiwxODcsOTA4LDE4OSw5MTAsOTExLDkxMiw5MTMs''@;'; put 'put ''OTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LG51bGwsOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQs''@;'; put 'put ''OTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCxudWxsXSwid2luZG93cy0xMjU0IjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwzNTIsODI0OSwzMzgsMTQx''@;'; put 'put ''LDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsNzMyLDg0ODIsMzUzLDgyNTAsMzM5LDE1NywxNTgsMzc2LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgw''@;'; put 'put ''LDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDI4NiwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwzMDQs''@;'; put 'put ''MzUwLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjg3LDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDMwNSwzNTEsMjU1XSwid2luZG93cy0xMjU1IjpbODM2NCwxMjksODIx''@;'; put 'put ''OCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwxMzgsODI0OSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsNzMyLDg0ODIsMTU0LDgyNTAsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2Myw4MzYyLDE2NSwxNjYsMTY3''@;'; put 'put ''LDE2OCwxNjksMjE1LDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDI0NywxODcsMTg4LDE4OSwxOTAsMTkxLDE0NTYsMTQ1NywxNDU4LDE0NTksMTQ2MCwxNDYxLDE0NjIsMTQ2MywxNDY0LDE0NjUsMTQ2NiwxNDY3LDE0NjgsMTQ2''@;'; put 'put ''OSwxNDcwLDE0NzEsMTQ3MiwxNDczLDE0NzQsMTQ3NSwxNTIwLDE1MjEsMTUyMiwxNTIzLDE1MjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNDg4LDE0ODksMTQ5MCwxNDkxLDE0OTIsMTQ5MywxNDk0LDE0OTUsMTQ5NiwxNDk3LDE0OTgsMTQ5OSwxNTAwLDE1MDEsMTUw''@;'; put 'put ''MiwxNTAzLDE1MDQsMTUwNSwxNTA2LDE1MDcsMTUwOCwxNTA5LDE1MTAsMTUxMSwxNTEyLDE1MTMsMTUxNCxudWxsLG51bGwsODIwNiw4MjA3LG51bGxdLCJ3aW5kb3dzLTEyNTYiOls4MzY0LDE2NjIsODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwxNjU3LDgyNDksMzM4''@;'; put 'put ''LDE2NzAsMTY4OCwxNjcyLDE3MTEsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNzA1LDg0ODIsMTY4MSw4MjUwLDMzOSw4MjA0LDgyMDUsMTcyMiwxNjAsMTU0OCwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MjYsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYs''@;'; put 'put ''MTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTU2MywxODcsMTg4LDE4OSwxOTAsMTU2NywxNzI5LDE1NjksMTU3MCwxNTcxLDE1NzIsMTU3MywxNTc0LDE1NzUsMTU3NiwxNTc3LDE1NzgsMTU3OSwxNTgwLDE1ODEsMTU4MiwxNTgzLDE1ODQsMTU4NSwxNTg2LDE1ODcsMTU4''@;'; put 'put ''OCwxNTg5LDE1OTAsMjE1LDE1OTEsMTU5MiwxNTkzLDE1OTQsMTYwMCwxNjAxLDE2MDIsMTYwMywyMjQsMTYwNCwyMjYsMTYwNSwxNjA2LDE2MDcsMTYwOCwyMzEsMjMyLDIzMywyMzQsMjM1LDE2MDksMTYxMCwyMzgsMjM5LDE2MTEsMTYxMiwxNjEzLDE2MTQsMjQ0LDE2MTUsMTYxNiwyNDcs''@;'; put 'put ''MTYxNywyNDksMTYxOCwyNTEsMjUyLDgyMDYsODIwNywxNzQ2XSwid2luZG93cy0xMjU3IjpbODM2NCwxMjksODIxOCwxMzEsODIyMiw4MjMwLDgyMjQsODIyNSwxMzYsODI0MCwxMzgsODI0OSwxNDAsMTY4LDcxMSwxODQsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIs''@;'; put 'put ''MTUyLDg0ODIsMTU0LDgyNTAsMTU2LDE3NSw3MzEsMTU5LDE2MCxudWxsLDE2MiwxNjMsMTY0LG51bGwsMTY2LDE2NywyMTYsMTY5LDM0MiwxNzEsMTcyLDE3MywxNzQsMTk4LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMjQ4LDE4NSwzNDMsMTg3LDE4OCwxODksMTkwLDIzMCwy''@;'; put 'put ''NjAsMzAyLDI1NiwyNjIsMTk2LDE5NywyODAsMjc0LDI2OCwyMDEsMzc3LDI3OCwyOTAsMzEwLDI5OCwzMTUsMzUyLDMyMywzMjUsMjExLDMzMiwyMTMsMjE0LDIxNSwzNzAsMzIxLDM0NiwzNjIsMjIwLDM3OSwzODEsMjIzLDI2MSwzMDMsMjU3LDI2MywyMjgsMjI5LDI4MSwyNzUsMjY5LDIz''@;'; put 'put ''MywzNzgsMjc5LDI5MSwzMTEsMjk5LDMxNiwzNTMsMzI0LDMyNiwyNDMsMzMzLDI0NSwyNDYsMjQ3LDM3MSwzMjIsMzQ3LDM2MywyNTIsMzgwLDM4Miw3MjldLCJ3aW5kb3dzLTEyNTgiOls4MzY0LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDcxMCw4MjQwLDEzOCw4MjQ5LDMz''@;'; put 'put ''OCwxNDEsMTQyLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiw3MzIsODQ4MiwxNTQsODI1MCwzMzksMTU3LDE1OCwzNzYsMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3''@;'; put 'put ''OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwyNTgsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMyw3NjgsMjA1LDIwNiwyMDcsMjcyLDIwOSw3NzcsMjExLDIxMiw0MTYsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIw''@;'; put 'put ''LDQzMSw3NzEsMjIzLDIyNCwyMjUsMjI2LDI1OSwyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDc2OSwyMzcsMjM4LDIzOSwyNzMsMjQxLDgwMywyNDMsMjQ0LDQxNywyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsNDMyLDgzNjMsMjU1XSwieC1tYWMtY3lyaWxsaWMiOlsxMDQw''@;'; put 'put ''LDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsODIyNCwxNzYs''@;'; put 'put ''MTE2OCwxNjMsMTY3LDgyMjYsMTgyLDEwMzAsMTc0LDE2OSw4NDgyLDEwMjYsMTEwNiw4ODAwLDEwMjcsMTEwNyw4NzM0LDE3Nyw4ODA0LDg4MDUsMTExMCwxODEsMTE2OSwxMDMyLDEwMjgsMTEwOCwxMDMxLDExMTEsMTAzMywxMTEzLDEwMzQsMTExNCwxMTEyLDEwMjksMTcyLDg3MzAsNDAy''@;'; put 'put ''LDg3NzYsODcxMCwxNzEsMTg3LDgyMzAsMTYwLDEwMzUsMTExNSwxMDM2LDExMTYsMTEwOSw4MjExLDgyMTIsODIyMCw4MjIxLDgyMTYsODIxNywyNDcsODIyMiwxMDM4LDExMTgsMTAzOSwxMTE5LDg0NzAsMTAyNSwxMTA1LDExMDMsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3''@;'; put 'put ''OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiw4MzY0XX19KHRoaXN8fHt9KX0sOTk1NjU6ZnVuY3Rpb24oWGUsSmUsTCl7''@;'; put 'put ''IWZ1bmN0aW9uKG1lKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gQihsdCxMdCxDdCl7cmV0dXJuIEx0PD1sdCYmbHQ8PUN0fVhlLmV4cG9ydHMmJiFtZVsiZW5jb2RpbmctaW5kZXhlcyJdJiYobWVbImVuY29kaW5nLWluZGV4ZXMiXT1MKDg2Mzg5KVsiZW5jb2RpbmctaW5kZXhlcyJdKTt2YXIg''@;'; put 'put ''RWU9TWF0aC5mbG9vcjtmdW5jdGlvbiBVKGx0KXtpZih2b2lkIDA9PT1sdClyZXR1cm57fTtpZihsdD09PU9iamVjdChsdCkpcmV0dXJuIGx0O3Rocm93IFR5cGVFcnJvcigiQ291bGQgbm90IGNvbnZlcnQgYXJndW1lbnQgdG8gZGljdGlvbmFyeSIpfWZ1bmN0aW9uIHJlKGx0KXtyZXR1cm4g''@;'; put 'put ''MDw9bHQmJmx0PD0xMjd9dmFyIGFlPXJlLFk9LTE7ZnVuY3Rpb24gVyhsdCl7dGhpcy50b2tlbnM9W10uc2xpY2UuY2FsbChsdCksdGhpcy50b2tlbnMucmV2ZXJzZSgpfVcucHJvdG90eXBlPXtlbmRPZlN0cmVhbTpmdW5jdGlvbigpe3JldHVybiF0aGlzLnRva2Vucy5sZW5ndGh9LHJlYWQ6''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbnMubGVuZ3RoP3RoaXMudG9rZW5zLnBvcCgpOll9LHByZXBlbmQ6ZnVuY3Rpb24obHQpe2lmKEFycmF5LmlzQXJyYXkobHQpKWZvcih2YXIgTHQ9bHQ7THQubGVuZ3RoOyl0aGlzLnRva2Vucy5wdXNoKEx0LnBvcCgpKTtlbHNlIHRoaXMudG9r''@;'; put 'put ''ZW5zLnB1c2gobHQpfSxwdXNoOmZ1bmN0aW9uKGx0KXtpZihBcnJheS5pc0FycmF5KGx0KSlmb3IodmFyIEx0PWx0O0x0Lmxlbmd0aDspdGhpcy50b2tlbnMudW5zaGlmdChMdC5zaGlmdCgpKTtlbHNlIHRoaXMudG9rZW5zLnVuc2hpZnQobHQpfX07dmFyIE49LTE7ZnVuY3Rpb24gdGUobHQs''@;'; put 'put ''THQpe2lmKGx0KXRocm93IFR5cGVFcnJvcigiRGVjb2RlciBlcnJvciIpO3JldHVybiBMdHx8NjU1MzN9ZnVuY3Rpb24gSyhsdCl7dGhyb3cgVHlwZUVycm9yKCJUaGUgY29kZSBwb2ludCAiK2x0KyIgY291bGQgbm90IGJlIGVuY29kZWQuIil9ZnVuY3Rpb24gb2UobHQpe3JldHVybiBsdD1T''@;'; put 'put ''dHJpbmcobHQpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkZSxsdCk/ZGVbbHRdOm51bGx9dmFyIGNlPVt7ZW5jb2RpbmdzOlt7bGFiZWxzOlsidW5pY29kZS0xLTEtdXRmLTgiLCJ1dGYtOCIsInV0ZjgiXSxuYW1lOiJVVEYtOCJ9''@;'; put 'put ''XSxoZWFkaW5nOiJUaGUgRW5jb2RpbmcifSx7ZW5jb2RpbmdzOlt7bGFiZWxzOlsiODY2IiwiY3A4NjYiLCJjc2libTg2NiIsImlibTg2NiJdLG5hbWU6IklCTTg2NiJ9LHtsYWJlbHM6WyJjc2lzb2xhdGluMiIsImlzby04ODU5LTIiLCJpc28taXItMTAxIiwiaXNvODg1OS0yIiwiaXNvODg1''@;'; put 'put ''OTIiLCJpc29fODg1OS0yIiwiaXNvXzg4NTktMjoxOTg3IiwibDIiLCJsYXRpbjIiXSxuYW1lOiJJU08tODg1OS0yIn0se2xhYmVsczpbImNzaXNvbGF0aW4zIiwiaXNvLTg4NTktMyIsImlzby1pci0xMDkiLCJpc284ODU5LTMiLCJpc284ODU5MyIsImlzb184ODU5LTMiLCJpc29fODg1OS0z''@;'; put 'put ''OjE5ODgiLCJsMyIsImxhdGluMyJdLG5hbWU6IklTTy04ODU5LTMifSx7bGFiZWxzOlsiY3Npc29sYXRpbjQiLCJpc28tODg1OS00IiwiaXNvLWlyLTExMCIsImlzbzg4NTktNCIsImlzbzg4NTk0IiwiaXNvXzg4NTktNCIsImlzb184ODU5LTQ6MTk4OCIsImw0IiwibGF0aW40Il0sbmFtZToi''@;'; put 'put ''SVNPLTg4NTktNCJ9LHtsYWJlbHM6WyJjc2lzb2xhdGluY3lyaWxsaWMiLCJjeXJpbGxpYyIsImlzby04ODU5LTUiLCJpc28taXItMTQ0IiwiaXNvODg1OS01IiwiaXNvODg1OTUiLCJpc29fODg1OS01IiwiaXNvXzg4NTktNToxOTg4Il0sbmFtZToiSVNPLTg4NTktNSJ9LHtsYWJlbHM6WyJh''@;'; put 'put ''cmFiaWMiLCJhc21vLTcwOCIsImNzaXNvODg1OTZlIiwiY3Npc284ODU5NmkiLCJjc2lzb2xhdGluYXJhYmljIiwiZWNtYS0xMTQiLCJpc28tODg1OS02IiwiaXNvLTg4NTktNi1lIiwiaXNvLTg4NTktNi1pIiwiaXNvLWlyLTEyNyIsImlzbzg4NTktNiIsImlzbzg4NTk2IiwiaXNvXzg4NTkt''@;'; put 'put ''NiIsImlzb184ODU5LTY6MTk4NyJdLG5hbWU6IklTTy04ODU5LTYifSx7bGFiZWxzOlsiY3Npc29sYXRpbmdyZWVrIiwiZWNtYS0xMTgiLCJlbG90XzkyOCIsImdyZWVrIiwiZ3JlZWs4IiwiaXNvLTg4NTktNyIsImlzby1pci0xMjYiLCJpc284ODU5LTciLCJpc284ODU5NyIsImlzb184ODU5''@;'; put 'put ''LTciLCJpc29fODg1OS03OjE5ODciLCJzdW5fZXVfZ3JlZWsiXSxuYW1lOiJJU08tODg1OS03In0se2xhYmVsczpbImNzaXNvODg1OThlIiwiY3Npc29sYXRpbmhlYnJldyIsImhlYnJldyIsImlzby04ODU5LTgiLCJpc28tODg1OS04LWUiLCJpc28taXItMTM4IiwiaXNvODg1OS04IiwiaXNv''@;'; put 'put ''ODg1OTgiLCJpc29fODg1OS04IiwiaXNvXzg4NTktODoxOTg4IiwidmlzdWFsIl0sbmFtZToiSVNPLTg4NTktOCJ9LHtsYWJlbHM6WyJjc2lzbzg4NTk4aSIsImlzby04ODU5LTgtaSIsImxvZ2ljYWwiXSxuYW1lOiJJU08tODg1OS04LUkifSx7bGFiZWxzOlsiY3Npc29sYXRpbjYiLCJpc28t''@;'; put 'put ''ODg1OS0xMCIsImlzby1pci0xNTciLCJpc284ODU5LTEwIiwiaXNvODg1OTEwIiwibDYiLCJsYXRpbjYiXSxuYW1lOiJJU08tODg1OS0xMCJ9LHtsYWJlbHM6WyJpc28tODg1OS0xMyIsImlzbzg4NTktMTMiLCJpc284ODU5MTMiXSxuYW1lOiJJU08tODg1OS0xMyJ9LHtsYWJlbHM6WyJpc28t''@;'; put 'put ''ODg1OS0xNCIsImlzbzg4NTktMTQiLCJpc284ODU5MTQiXSxuYW1lOiJJU08tODg1OS0xNCJ9LHtsYWJlbHM6WyJjc2lzb2xhdGluOSIsImlzby04ODU5LTE1IiwiaXNvODg1OS0xNSIsImlzbzg4NTkxNSIsImlzb184ODU5LTE1IiwibDkiXSxuYW1lOiJJU08tODg1OS0xNSJ9LHtsYWJlbHM6''@;'; put 'put ''WyJpc28tODg1OS0xNiJdLG5hbWU6IklTTy04ODU5LTE2In0se2xhYmVsczpbImNza29pOHIiLCJrb2kiLCJrb2k4Iiwia29pOC1yIiwia29pOF9yIl0sbmFtZToiS09JOC1SIn0se2xhYmVsczpbImtvaTgtcnUiLCJrb2k4LXUiXSxuYW1lOiJLT0k4LVUifSx7bGFiZWxzOlsiY3NtYWNpbnRv''@;'; put 'put ''c2giLCJtYWMiLCJtYWNpbnRvc2giLCJ4LW1hYy1yb21hbiJdLG5hbWU6Im1hY2ludG9zaCJ9LHtsYWJlbHM6WyJkb3MtODc0IiwiaXNvLTg4NTktMTEiLCJpc284ODU5LTExIiwiaXNvODg1OTExIiwidGlzLTYyMCIsIndpbmRvd3MtODc0Il0sbmFtZToid2luZG93cy04NzQifSx7bGFiZWxz''@;'; put 'put ''OlsiY3AxMjUwIiwid2luZG93cy0xMjUwIiwieC1jcDEyNTAiXSxuYW1lOiJ3aW5kb3dzLTEyNTAifSx7bGFiZWxzOlsiY3AxMjUxIiwid2luZG93cy0xMjUxIiwieC1jcDEyNTEiXSxuYW1lOiJ3aW5kb3dzLTEyNTEifSx7bGFiZWxzOlsiYW5zaV94My40LTE5NjgiLCJhc2NpaSIsImNwMTI1''@;'; put 'put ''MiIsImNwODE5IiwiY3Npc29sYXRpbjEiLCJpYm04MTkiLCJpc28tODg1OS0xIiwiaXNvLWlyLTEwMCIsImlzbzg4NTktMSIsImlzbzg4NTkxIiwiaXNvXzg4NTktMSIsImlzb184ODU5LTE6MTk4NyIsImwxIiwibGF0aW4xIiwidXMtYXNjaWkiLCJ3aW5kb3dzLTEyNTIiLCJ4LWNwMTI1MiJd''@;'; put 'put ''LG5hbWU6IndpbmRvd3MtMTI1MiJ9LHtsYWJlbHM6WyJjcDEyNTMiLCJ3aW5kb3dzLTEyNTMiLCJ4LWNwMTI1MyJdLG5hbWU6IndpbmRvd3MtMTI1MyJ9LHtsYWJlbHM6WyJjcDEyNTQiLCJjc2lzb2xhdGluNSIsImlzby04ODU5LTkiLCJpc28taXItMTQ4IiwiaXNvODg1OS05IiwiaXNvODg1''@;'; put 'put ''OTkiLCJpc29fODg1OS05IiwiaXNvXzg4NTktOToxOTg5IiwibDUiLCJsYXRpbjUiLCJ3aW5kb3dzLTEyNTQiLCJ4LWNwMTI1NCJdLG5hbWU6IndpbmRvd3MtMTI1NCJ9LHtsYWJlbHM6WyJjcDEyNTUiLCJ3aW5kb3dzLTEyNTUiLCJ4LWNwMTI1NSJdLG5hbWU6IndpbmRvd3MtMTI1NSJ9LHts''@;'; put 'put ''YWJlbHM6WyJjcDEyNTYiLCJ3aW5kb3dzLTEyNTYiLCJ4LWNwMTI1NiJdLG5hbWU6IndpbmRvd3MtMTI1NiJ9LHtsYWJlbHM6WyJjcDEyNTciLCJ3aW5kb3dzLTEyNTciLCJ4LWNwMTI1NyJdLG5hbWU6IndpbmRvd3MtMTI1NyJ9LHtsYWJlbHM6WyJjcDEyNTgiLCJ3aW5kb3dzLTEyNTgiLCJ4''@;'; put 'put ''LWNwMTI1OCJdLG5hbWU6IndpbmRvd3MtMTI1OCJ9LHtsYWJlbHM6WyJ4LW1hYy1jeXJpbGxpYyIsIngtbWFjLXVrcmFpbmlhbiJdLG5hbWU6IngtbWFjLWN5cmlsbGljIn1dLGhlYWRpbmc6IkxlZ2FjeSBzaW5nbGUtYnl0ZSBlbmNvZGluZ3MifSx7ZW5jb2RpbmdzOlt7bGFiZWxzOlsiY2hp''@;'; put 'put ''bmVzZSIsImNzZ2IyMzEyIiwiY3Npc281OGdiMjMxMjgwIiwiZ2IyMzEyIiwiZ2JfMjMxMiIsImdiXzIzMTItODAiLCJnYmsiLCJpc28taXItNTgiLCJ4LWdiayJdLG5hbWU6IkdCSyJ9LHtsYWJlbHM6WyJnYjE4MDMwIl0sbmFtZToiZ2IxODAzMCJ9XSxoZWFkaW5nOiJMZWdhY3kgbXVsdGkt''@;'; put 'put ''Ynl0ZSBDaGluZXNlIChzaW1wbGlmaWVkKSBlbmNvZGluZ3MifSx7ZW5jb2RpbmdzOlt7bGFiZWxzOlsiYmlnNSIsImJpZzUtaGtzY3MiLCJjbi1iaWc1IiwiY3NiaWc1IiwieC14LWJpZzUiXSxuYW1lOiJCaWc1In1dLGhlYWRpbmc6IkxlZ2FjeSBtdWx0aS1ieXRlIENoaW5lc2UgKHRyYWRp''@;'; put 'put ''dGlvbmFsKSBlbmNvZGluZ3MifSx7ZW5jb2RpbmdzOlt7bGFiZWxzOlsiY3NldWNwa2RmbXRqYXBhbmVzZSIsImV1Yy1qcCIsIngtZXVjLWpwIl0sbmFtZToiRVVDLUpQIn0se2xhYmVsczpbImNzaXNvMjAyMmpwIiwiaXNvLTIwMjItanAiXSxuYW1lOiJJU08tMjAyMi1KUCJ9LHtsYWJlbHM6''@;'; put 'put ''WyJjc3NoaWZ0amlzIiwibXM5MzIiLCJtc19rYW5qaSIsInNoaWZ0LWppcyIsInNoaWZ0X2ppcyIsInNqaXMiLCJ3aW5kb3dzLTMxaiIsIngtc2ppcyJdLG5hbWU6IlNoaWZ0X0pJUyJ9XSxoZWFkaW5nOiJMZWdhY3kgbXVsdGktYnl0ZSBKYXBhbmVzZSBlbmNvZGluZ3MifSx7ZW5jb2Rpbmdz''@;'; put 'put ''Olt7bGFiZWxzOlsiY3NldWNrciIsImNza3NjNTYwMTE5ODciLCJldWMta3IiLCJpc28taXItMTQ5Iiwia29yZWFuIiwia3NfY181NjAxLTE5ODciLCJrc19jXzU2MDEtMTk4OSIsImtzYzU2MDEiLCJrc2NfNTYwMSIsIndpbmRvd3MtOTQ5Il0sbmFtZToiRVVDLUtSIn1dLGhlYWRpbmc6Ikxl''@;'; put 'put ''Z2FjeSBtdWx0aS1ieXRlIEtvcmVhbiBlbmNvZGluZ3MifSx7ZW5jb2RpbmdzOlt7bGFiZWxzOlsiY3Npc28yMDIya3IiLCJoei1nYi0yMzEyIiwiaXNvLTIwMjItY24iLCJpc28tMjAyMi1jbi1leHQiLCJpc28tMjAyMi1rciJdLG5hbWU6InJlcGxhY2VtZW50In0se2xhYmVsczpbInV0Zi0x''@;'; put 'put ''NmJlIl0sbmFtZToiVVRGLTE2QkUifSx7bGFiZWxzOlsidXRmLTE2IiwidXRmLTE2bGUiXSxuYW1lOiJVVEYtMTZMRSJ9LHtsYWJlbHM6WyJ4LXVzZXItZGVmaW5lZCJdLG5hbWU6IngtdXNlci1kZWZpbmVkIn1dLGhlYWRpbmc6IkxlZ2FjeSBtaXNjZWxsYW5lb3VzIGVuY29kaW5ncyJ9XSxk''@;'; put 'put ''ZT17fTtjZS5mb3JFYWNoKGZ1bmN0aW9uKGx0KXtsdC5lbmNvZGluZ3MuZm9yRWFjaChmdW5jdGlvbihMdCl7THQubGFiZWxzLmZvckVhY2goZnVuY3Rpb24oQ3Qpe2RlW0N0XT1MdH0pfSl9KTt2YXIgTyxlZSx2ZT17fSxBZT17fTtmdW5jdGlvbiBrZShsdCxMdCl7cmV0dXJuIEx0JiZMdFts''@;'; put 'put ''dF18fG51bGx9ZnVuY3Rpb24gU2UobHQsTHQpe3ZhciBDdD1MdC5pbmRleE9mKGx0KTtyZXR1cm4tMT09PUN0P251bGw6Q3R9ZnVuY3Rpb24gSWUobHQpe2lmKCEoImVuY29kaW5nLWluZGV4ZXMiaW4gbWUpKXRocm93IEVycm9yKCJJbmRleGVzIG1pc3NpbmcuIERpZCB5b3UgZm9yZ2V0IHRv''@;'; put 'put ''IGluY2x1ZGUgZW5jb2RpbmctaW5kZXhlcy5qcyBmaXJzdD8iKTtyZXR1cm4gbWVbImVuY29kaW5nLWluZGV4ZXMiXVtsdF19ZnVuY3Rpb24geChsdCxMdCl7aWYoISh0aGlzIGluc3RhbmNlb2YgeCkpdGhyb3cgVHlwZUVycm9yKCJDYWxsZWQgYXMgYSBmdW5jdGlvbi4gRGlkIHlvdSBmb3Jn''@;'; put 'put ''ZXQgJ25ldyc/Iik7bHQ9dm9pZCAwIT09bHQ/U3RyaW5nKGx0KToidXRmLTgiLEx0PVUoTHQpLHRoaXMuX2VuY29kaW5nPW51bGwsdGhpcy5fZGVjb2Rlcj1udWxsLHRoaXMuX2lnbm9yZUJPTT0hMSx0aGlzLl9CT01zZWVuPSExLHRoaXMuX2Vycm9yX21vZGU9InJlcGxhY2VtZW50Iix0aGlz''@;'; put 'put ''Ll9kb19ub3RfZmx1c2g9ITE7dmFyIEN0PW9lKGx0KTtpZihudWxsPT09Q3R8fCJyZXBsYWNlbWVudCI9PT1DdC5uYW1lKXRocm93IFJhbmdlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbHQpO2lmKCFBZVtDdC5uYW1lXSl0aHJvdyBFcnJvcigiRGVjb2RlciBub3QgcHJlc2VudC4gRGlk''@;'; put 'put ''IHlvdSBmb3JnZXQgdG8gaW5jbHVkZSBlbmNvZGluZy1pbmRleGVzLmpzIGZpcnN0PyIpO3ZhciBmdD10aGlzO3JldHVybiBmdC5fZW5jb2Rpbmc9Q3QsQm9vbGVhbihMdC5mYXRhbCkmJihmdC5fZXJyb3JfbW9kZT0iZmF0YWwiKSxCb29sZWFuKEx0Lmlnbm9yZUJPTSkmJihmdC5faWdub3Jl''@;'; put 'put ''Qk9NPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHl8fCh0aGlzLmVuY29kaW5nPWZ0Ll9lbmNvZGluZy5uYW1lLnRvTG93ZXJDYXNlKCksdGhpcy5mYXRhbD0iZmF0YWwiPT09ZnQuX2Vycm9yX21vZGUsdGhpcy5pZ25vcmVCT009ZnQuX2lnbm9yZUJPTSksZnR9ZnVuY3Rpb24gUChsdCxMdCl7''@;'; put 'put ''aWYoISh0aGlzIGluc3RhbmNlb2YgUCkpdGhyb3cgVHlwZUVycm9yKCJDYWxsZWQgYXMgYSBmdW5jdGlvbi4gRGlkIHlvdSBmb3JnZXQgJ25ldyc/Iik7aWYoTHQ9VShMdCksdGhpcy5fZW5jb2Rpbmc9bnVsbCx0aGlzLl9lbmNvZGVyPW51bGwsdGhpcy5fZG9fbm90X2ZsdXNoPSExLHRoaXMu''@;'; put 'put ''X2ZhdGFsPUJvb2xlYW4oTHQuZmF0YWwpPyJmYXRhbCI6InJlcGxhY2VtZW50IixCb29sZWFuKEx0Lk5PTlNUQU5EQVJEX2FsbG93TGVnYWN5RW5jb2RpbmcpKXt2YXIgZnQ9b2UobHQ9dm9pZCAwIT09bHQ/U3RyaW5nKGx0KToidXRmLTgiKTtpZihudWxsPT09ZnR8fCJyZXBsYWNlbWVudCI9''@;'; put 'put ''PT1mdC5uYW1lKXRocm93IFJhbmdlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbHQpO2lmKCF2ZVtmdC5uYW1lXSl0aHJvdyBFcnJvcigiRW5jb2RlciBub3QgcHJlc2VudC4gRGlkIHlvdSBmb3JnZXQgdG8gaW5jbHVkZSBlbmNvZGluZy1pbmRleGVzLmpzIGZpcnN0PyIpO3RoaXMuX2Vu''@;'; put 'put ''Y29kaW5nPWZ0fWVsc2UgdGhpcy5fZW5jb2Rpbmc9b2UoInV0Zi04Iiksdm9pZCAwIT09bHQmJiJjb25zb2xlImluIG1lJiZjb25zb2xlLndhcm4oIlRleHRFbmNvZGVyIGNvbnN0cnVjdG9yIGNhbGxlZCB3aXRoIGVuY29kaW5nIGxhYmVsLCB3aGljaCBpcyBpZ25vcmVkLiIpO3JldHVybiBP''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHl8fCh0aGlzLmVuY29kaW5nPXRoaXMuX2VuY29kaW5nLm5hbWUudG9Mb3dlckNhc2UoKSksdGhpc31mdW5jdGlvbiBWKGx0KXt2YXIgTHQ9bHQuZmF0YWwsQ3Q9MCxmdD0wLEh0PTAsR2U9MTI4LFVlPTE5MTt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oeXQsanQp''@;'; put 'put ''e2lmKGp0PT09WSYmMCE9PUh0KXJldHVybiBIdD0wLHRlKEx0KTtpZihqdD09PVkpcmV0dXJuIE47aWYoMD09PUh0KXtpZihCKGp0LDAsMTI3KSlyZXR1cm4ganQ7aWYoQihqdCwxOTQsMjIzKSlIdD0xLEN0PTMxJmp0O2Vsc2UgaWYoQihqdCwyMjQsMjM5KSkyMjQ9PT1qdCYmKEdlPTE2MCks''@;'; put 'put ''MjM3PT09anQmJihVZT0xNTkpLEh0PTIsQ3Q9MTUmanQ7ZWxzZXtpZighQihqdCwyNDAsMjQ0KSlyZXR1cm4gdGUoTHQpOzI0MD09PWp0JiYoR2U9MTQ0KSwyNDQ9PT1qdCYmKFVlPTE0MyksSHQ9MyxDdD03Jmp0fXJldHVybiBudWxsfWlmKCFCKGp0LEdlLFVlKSlyZXR1cm4gQ3Q9SHQ9ZnQ9''@;'; put 'put ''MCxHZT0xMjgsVWU9MTkxLHl0LnByZXBlbmQoanQpLHRlKEx0KTtpZihHZT0xMjgsVWU9MTkxLEN0PUN0PDw2fDYzJmp0LChmdCs9MSkhPT1IdClyZXR1cm4gbnVsbDt2YXIgSnQ9Q3Q7cmV0dXJuIEN0PUh0PWZ0PTAsSnR9fWZ1bmN0aW9uIFQobHQpe3RoaXMuaGFuZGxlcj1mdW5jdGlvbihD''@;'; put 'put ''dCxmdCl7aWYoZnQ9PT1ZKXJldHVybiBOO2lmKGFlKGZ0KSlyZXR1cm4gZnQ7dmFyIEh0LEdlO0IoZnQsMTI4LDIwNDcpPyhIdD0xLEdlPTE5Mik6QihmdCwyMDQ4LDY1NTM1KT8oSHQ9MixHZT0yMjQpOkIoZnQsNjU1MzYsMTExNDExMSkmJihIdD0zLEdlPTI0MCk7Zm9yKHZhciBVZT1bKGZ0''@;'; put 'put ''Pj42Kkh0KStHZV07SHQ+MDspVWUucHVzaCgxMjh8NjMmZnQ+PjYqKEh0LTEpKSxIdC09MTtyZXR1cm4gVWV9fWZ1bmN0aW9uIFMobHQsTHQpe3ZhciBDdD1MdC5mYXRhbDt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oZnQsSHQpe2lmKEh0PT09WSlyZXR1cm4gTjtpZihyZShIdCkpcmV0dXJuIEh0''@;'; put 'put ''O3ZhciBHZT1sdFtIdC0xMjhdO3JldHVybiBudWxsPT09R2U/dGUoQ3QpOkdlfX1mdW5jdGlvbiBGKGx0LEx0KXt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oZnQsSHQpe2lmKEh0PT09WSlyZXR1cm4gTjtpZihhZShIdCkpcmV0dXJuIEh0O3ZhciBHZT1TZShIdCxsdCk7cmV0dXJuIG51bGw9PT1H''@;'; put 'put ''ZSYmSyhIdCksR2UrMTI4fX1mdW5jdGlvbiB5ZShsdCl7dmFyIEx0PWx0LmZhdGFsLEN0PTAsZnQ9MCxIdD0wO3RoaXMuaGFuZGxlcj1mdW5jdGlvbihHZSxVZSl7aWYoVWU9PT1ZJiYwPT09Q3QmJjA9PT1mdCYmMD09PUh0KXJldHVybiBOO3ZhciB5dDtpZihVZT09PVkmJigwIT09Q3R8fDAh''@;'; put 'put ''PT1mdHx8MCE9PUh0KSYmKEN0PTAsZnQ9MCxIdD0wLHRlKEx0KSksMCE9PUh0KXt5dD1udWxsLEIoVWUsNDgsNTcpJiYoeXQ9ZnVuY3Rpb24gVGUobHQpe2lmKGx0PjM5NDE5JiZsdDwxODllM3x8bHQ+MTIzNzU3NSlyZXR1cm4gbnVsbDtpZig3NDU3PT09bHQpcmV0dXJuIDU5MzM1O3ZhciBI''@;'; put 'put ''dCxMdD0wLEN0PTAsZnQ9SWUoImdiMTgwMzAtcmFuZ2VzIik7Zm9yKEh0PTA7SHQ8ZnQubGVuZ3RoOysrSHQpe3ZhciBHZT1mdFtIdF07aWYoIShHZVswXTw9bHQpKWJyZWFrO0x0PUdlWzBdLEN0PUdlWzFdfXJldHVybiBDdCtsdC1MdH0oMTAqKDEyNiooMTAqKEN0LTEyOSkrZnQtNDgpK0h0''@;'; put 'put ''LTEyOSkrVWUtNDgpKTt2YXIganQ9W2Z0LEh0LFVlXTtyZXR1cm4gQ3Q9MCxmdD0wLEh0PTAsbnVsbD09PXl0PyhHZS5wcmVwZW5kKGp0KSx0ZShMdCkpOnl0fWlmKDAhPT1mdClyZXR1cm4gQihVZSwxMjksMjU0KT8oSHQ9VWUsbnVsbCk6KEdlLnByZXBlbmQoW2Z0LFVlXSksQ3Q9MCxmdD0w''@;'; put 'put ''LHRlKEx0KSk7aWYoMCE9PUN0KXtpZihCKFVlLDQ4LDU3KSlyZXR1cm4gZnQ9VWUsbnVsbDt2YXIgSnQ9Q3QsZ249bnVsbDtDdD0wO3ZhciBkbj1VZTwxMjc/NjQ6NjU7cmV0dXJuKEIoVWUsNjQsMTI2KXx8QihVZSwxMjgsMjU0KSkmJihnbj0xOTAqKEp0LTEyOSkrKFVlLWRuKSksbnVsbD09''@;'; put 'put ''PSh5dD1udWxsPT09Z24/bnVsbDprZShnbixJZSgiZ2IxODAzMCIpKSkmJnJlKFVlKSYmR2UucHJlcGVuZChVZSksbnVsbD09PXl0P3RlKEx0KTp5dH1yZXR1cm4gcmUoVWUpP1VlOjEyOD09PVVlPzgzNjQ6QihVZSwxMjksMjU0KT8oQ3Q9VWUsbnVsbCk6dGUoTHQpfX1mdW5jdGlvbiBDZShs''@;'; put 'put ''dCxMdCl7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKGZ0LEh0KXtpZihIdD09PVkpcmV0dXJuIE47aWYoYWUoSHQpKXJldHVybiBIdDtpZig1ODg1Mz09PUh0KXJldHVybiBLKEh0KTtpZihMdCYmODM2ND09PUh0KXJldHVybiAxMjg7dmFyIEdlPVNlKEh0LEllKCJnYjE4MDMwIikpO2lmKG51bGwh''@;'; put 'put ''PT1HZSl7dmFyIHl0PUdlJTE5MDtyZXR1cm5bRWUoR2UvMTkwKSsxMjkseXQrKHl0PDYzPzY0OjY1KV19aWYoTHQpcmV0dXJuIEsoSHQpO0dlPWZ1bmN0aW9uIE1lKGx0KXtpZig1OTMzNT09PWx0KXJldHVybiA3NDU3O3ZhciBIdCxMdD0wLEN0PTAsZnQ9SWUoImdiMTgwMzAtcmFuZ2VzIik7''@;'; put 'put ''Zm9yKEh0PTA7SHQ8ZnQubGVuZ3RoOysrSHQpe3ZhciBHZT1mdFtIdF07aWYoIShHZVsxXTw9bHQpKWJyZWFrO0x0PUdlWzFdLEN0PUdlWzBdfXJldHVybiBDdCtsdC1MdH0oSHQpO3ZhciBKdD1FZShHZS8xMC8xMjYvMTApLGduPUVlKChHZS09MTAqSnQqMTI2KjEwKS8xMC8xMjYpLGRuPUVl''@;'; put 'put ''KChHZS09MTAqZ24qMTI2KS8xMCk7cmV0dXJuW0p0KzEyOSxnbis0OCxkbisxMjksR2UtMTAqZG4rNDhdfX1mdW5jdGlvbiBEZShsdCl7dmFyIEx0PWx0LmZhdGFsLEN0PTA7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKGZ0LEh0KXtpZihIdD09PVkmJjAhPT1DdClyZXR1cm4gQ3Q9MCx0ZShMdCk7''@;'; put 'put ''aWYoSHQ9PT1ZJiYwPT09Q3QpcmV0dXJuIE47aWYoMCE9PUN0KXt2YXIgR2U9Q3QsVWU9bnVsbDtDdD0wO3ZhciB5dD1IdDwxMjc/NjQ6OTg7c3dpdGNoKChCKEh0LDY0LDEyNil8fEIoSHQsMTYxLDI1NCkpJiYoVWU9MTU3KihHZS0xMjkpKyhIdC15dCkpLFVlKXtjYXNlIDExMzM6cmV0dXJu''@;'; put 'put ''WzIwMiw3NzJdO2Nhc2UgMTEzNTpyZXR1cm5bMjAyLDc4MF07Y2FzZSAxMTY0OnJldHVyblsyMzQsNzcyXTtjYXNlIDExNjY6cmV0dXJuWzIzNCw3ODBdfXZhciBqdD1udWxsPT09VWU/bnVsbDprZShVZSxJZSgiYmlnNSIpKTtyZXR1cm4gbnVsbD09PWp0JiZyZShIdCkmJmZ0LnByZXBlbmQo''@;'; put 'put ''SHQpLG51bGw9PT1qdD90ZShMdCk6anR9cmV0dXJuIHJlKEh0KT9IdDpCKEh0LDEyOSwyNTQpPyhDdD1IdCxudWxsKTp0ZShMdCl9fWZ1bmN0aW9uIFBlKGx0KXt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oQ3QsZnQpe2lmKGZ0PT09WSlyZXR1cm4gTjtpZihhZShmdCkpcmV0dXJuIGZ0O3ZhciBI''@;'; put 'put ''dD1mdW5jdGlvbiB6KGx0KXt2YXIgTHQ9ZWU9ZWV8fEllKCJiaWc1IikubWFwKGZ1bmN0aW9uKEN0LGZ0KXtyZXR1cm4gZnQ8NTAyND9udWxsOkN0fSk7cmV0dXJuIDk1NTI9PT1sdHx8OTU2Nj09PWx0fHw5NTY5PT09bHR8fDk1Nzg9PT1sdHx8MjEzMTM9PT1sdHx8MjEzMTc9PT1sdD9MdC5s''@;'; put 'put ''YXN0SW5kZXhPZihsdCk6U2UobHQsTHQpfShmdCk7aWYobnVsbD09PUh0KXJldHVybiBLKGZ0KTt2YXIgR2U9RWUoSHQvMTU3KSsxMjk7aWYoR2U8MTYxKXJldHVybiBLKGZ0KTt2YXIgVWU9SHQlMTU3O3JldHVybltHZSxVZSsoVWU8NjM/NjQ6OTgpXX19ZnVuY3Rpb24gUWUobHQpe3ZhciBM''@;'; put 'put ''dD1sdC5mYXRhbCxDdD0hMSxmdD0wO3RoaXMuaGFuZGxlcj1mdW5jdGlvbihIdCxHZSl7aWYoR2U9PT1ZJiYwIT09ZnQpcmV0dXJuIGZ0PTAsdGUoTHQpO2lmKEdlPT09WSYmMD09PWZ0KXJldHVybiBOO2lmKDE0Mj09PWZ0JiZCKEdlLDE2MSwyMjMpKXJldHVybiBmdD0wLDY1MjE2K0dlO2lm''@;'; put 'put ''KDE0Mz09PWZ0JiZCKEdlLDE2MSwyNTQpKXJldHVybiBDdD0hMCxmdD1HZSxudWxsO2lmKDAhPT1mdCl7dmFyIFVlPWZ0O2Z0PTA7dmFyIHl0PW51bGw7cmV0dXJuIEIoVWUsMTYxLDI1NCkmJkIoR2UsMTYxLDI1NCkmJih5dD1rZSg5NCooVWUtMTYxKSsoR2UtMTYxKSxJZShDdD8iamlzMDIx''@;'; put 'put ''MiI6ImppczAyMDgiKSkpLEN0PSExLEIoR2UsMTYxLDI1NCl8fEh0LnByZXBlbmQoR2UpLG51bGw9PT15dD90ZShMdCk6eXR9cmV0dXJuIHJlKEdlKT9HZToxNDI9PT1HZXx8MTQzPT09R2V8fEIoR2UsMTYxLDI1NCk/KGZ0PUdlLG51bGwpOnRlKEx0KX19ZnVuY3Rpb24gJGUobHQpe3RoaXMu''@;'; put 'put ''aGFuZGxlcj1mdW5jdGlvbihDdCxmdCl7aWYoZnQ9PT1ZKXJldHVybiBOO2lmKGFlKGZ0KSlyZXR1cm4gZnQ7aWYoMTY1PT09ZnQpcmV0dXJuIDkyO2lmKDgyNTQ9PT1mdClyZXR1cm4gMTI2O2lmKEIoZnQsNjUzNzcsNjU0MzkpKXJldHVyblsxNDIsZnQtNjUzNzcrMTYxXTs4NzIyPT09ZnQm''@;'; put 'put ''JihmdD02NTI5Myk7dmFyIEh0PVNlKGZ0LEllKCJqaXMwMjA4IikpO3JldHVybiBudWxsPT09SHQ/SyhmdCk6W0VlKEh0Lzk0KSsxNjEsSHQlOTQrMTYxXX19ZnVuY3Rpb24gZ3QobHQpe3ZhciBMdD1sdC5mYXRhbCxmdD0wLEdlPTAsVWU9ITE7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKHl0LGp0''@;'; put 'put ''KXtzd2l0Y2goZnQpe2RlZmF1bHQ6Y2FzZSAwOnJldHVybiAyNz09PWp0PyhmdD01LG51bGwpOkIoanQsMCwxMjcpJiYxNCE9PWp0JiYxNSE9PWp0JiYyNyE9PWp0PyhVZT0hMSxqdCk6anQ9PT1ZP046KFVlPSExLHRlKEx0KSk7Y2FzZSAxOnJldHVybiAyNz09PWp0PyhmdD01LG51bGwpOjky''@;'; put 'put ''PT09anQ/KFVlPSExLDE2NSk6MTI2PT09anQ/KFVlPSExLDgyNTQpOkIoanQsMCwxMjcpJiYxNCE9PWp0JiYxNSE9PWp0JiYyNyE9PWp0JiY5MiE9PWp0JiYxMjYhPT1qdD8oVWU9ITEsanQpOmp0PT09WT9OOihVZT0hMSx0ZShMdCkpO2Nhc2UgMjpyZXR1cm4gMjc9PT1qdD8oZnQ9NSxudWxs''@;'; put 'put ''KTpCKGp0LDMzLDk1KT8oVWU9ITEsNjUzNDQranQpOmp0PT09WT9OOihVZT0hMSx0ZShMdCkpO2Nhc2UgMzpyZXR1cm4gMjc9PT1qdD8oZnQ9NSxudWxsKTpCKGp0LDMzLDEyNik/KFVlPSExLEdlPWp0LGZ0PTQsbnVsbCk6anQ9PT1ZP046KFVlPSExLHRlKEx0KSk7Y2FzZSA0OmlmKDI3PT09''@;'; put 'put ''anQpcmV0dXJuIGZ0PTUsdGUoTHQpO2lmKEIoanQsMzMsMTI2KSl7ZnQ9Mzt2YXIgZ249a2UoOTQqKEdlLTMzKStqdC0zMyxJZSgiamlzMDIwOCIpKTtyZXR1cm4gbnVsbD09PWduP3RlKEx0KTpnbn1yZXR1cm4ganQ9PT1ZPyhmdD0zLHl0LnByZXBlbmQoanQpLHRlKEx0KSk6KGZ0PTMsdGUo''@;'; put 'put ''THQpKTtjYXNlIDU6cmV0dXJuIDM2PT09anR8fDQwPT09anQ/KEdlPWp0LGZ0PTYsbnVsbCk6KHl0LnByZXBlbmQoanQpLFVlPSExLGZ0PTAsdGUoTHQpKTtjYXNlIDY6dmFyIGRuPUdlO0dlPTA7dmFyIHluPW51bGw7aWYoNDA9PT1kbiYmNjY9PT1qdCYmKHluPTApLDQwPT09ZG4mJjc0PT09''@;'; put 'put ''anQmJih5bj0xKSw0MD09PWRuJiY3Mz09PWp0JiYoeW49MiksMzY9PT1kbiYmKDY0PT09anR8fDY2PT09anQpJiYoeW49MyksbnVsbCE9PXluKXtmdD1mdD15bjt2YXIgbG49VWU7cmV0dXJuIFVlPSEwLGxuP3RlKEx0KTpudWxsfXJldHVybiB5dC5wcmVwZW5kKFtkbixqdF0pLFVlPSExLGZ0''@;'; put 'put ''PTAsdGUoTHQpfX19ZnVuY3Rpb24gd3QobHQpe3ZhciBmdD0wO3RoaXMuaGFuZGxlcj1mdW5jdGlvbihIdCxHZSl7aWYoR2U9PT1ZJiYwIT09ZnQpcmV0dXJuIEh0LnByZXBlbmQoR2UpLGZ0PTAsWzI3LDQwLDY2XTtpZihHZT09PVkmJjA9PT1mdClyZXR1cm4gTjtpZighKDAhPT1mdCYmMSE9''@;'; put 'put ''PWZ0fHwxNCE9PUdlJiYxNSE9PUdlJiYyNyE9PUdlKSlyZXR1cm4gSyg2NTUzMyk7aWYoMD09PWZ0JiZhZShHZSkpcmV0dXJuIEdlO2lmKDE9PT1mdCYmKGFlKEdlKSYmOTIhPT1HZSYmMTI2IT09R2V8fDE2NT09R2V8fDgyNTQ9PUdlKSl7aWYoYWUoR2UpKXJldHVybiBHZTtpZigxNjU9PT1H''@;'; put 'put ''ZSlyZXR1cm4gOTI7aWYoODI1ND09PUdlKXJldHVybiAxMjZ9aWYoYWUoR2UpJiYwIT09ZnQpcmV0dXJuIEh0LnByZXBlbmQoR2UpLGZ0PTAsWzI3LDQwLDY2XTtpZigoMTY1PT09R2V8fDgyNTQ9PT1HZSkmJjEhPT1mdClyZXR1cm4gSHQucHJlcGVuZChHZSksZnQ9MSxbMjcsNDAsNzRdOzg3''@;'; put 'put ''MjI9PT1HZSYmKEdlPTY1MjkzKTt2YXIgVWU9U2UoR2UsSWUoImppczAyMDgiKSk7cmV0dXJuIG51bGw9PT1VZT9LKEdlKToyIT09ZnQ/KEh0LnByZXBlbmQoR2UpLGZ0PTIsWzI3LDM2LDY2XSk6W0VlKFVlLzk0KSszMyxVZSU5NCszM119fWZ1bmN0aW9uIG10KGx0KXt2YXIgTHQ9bHQuZmF0''@;'; put 'put ''YWwsQ3Q9MDt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oZnQsSHQpe2lmKEh0PT09WSYmMCE9PUN0KXJldHVybiBDdD0wLHRlKEx0KTtpZihIdD09PVkmJjA9PT1DdClyZXR1cm4gTjtpZigwIT09Q3Qpe3ZhciBHZT1DdCxVZT1udWxsO0N0PTA7dmFyIHl0PUh0PDEyNz82NDo2NSxqdD1HZTwxNjA/''@;'; put 'put ''MTI5OjE5MztpZigoQihIdCw2NCwxMjYpfHxCKEh0LDEyOCwyNTIpKSYmKFVlPTE4OCooR2UtanQpK0h0LXl0KSxCKFVlLDg4MzYsMTA3MTUpKXJldHVybiA0ODUwOCtVZTt2YXIgSnQ9bnVsbD09PVVlP251bGw6a2UoVWUsSWUoImppczAyMDgiKSk7cmV0dXJuIG51bGw9PT1KdCYmcmUoSHQp''@;'; put 'put ''JiZmdC5wcmVwZW5kKEh0KSxudWxsPT09SnQ/dGUoTHQpOkp0fXJldHVybiByZShIdCl8fDEyOD09PUh0P0h0OkIoSHQsMTYxLDIyMyk/NjUyMTYrSHQ6QihIdCwxMjksMTU5KXx8QihIdCwyMjQsMjUyKT8oQ3Q9SHQsbnVsbCk6dGUoTHQpfX1mdW5jdGlvbiB2dChsdCl7dGhpcy5oYW5kbGVy''@;'; put 'put ''PWZ1bmN0aW9uKEN0LGZ0KXtpZihmdD09PVkpcmV0dXJuIE47aWYoYWUoZnQpfHwxMjg9PT1mdClyZXR1cm4gZnQ7aWYoMTY1PT09ZnQpcmV0dXJuIDkyO2lmKDgyNTQ9PT1mdClyZXR1cm4gMTI2O2lmKEIoZnQsNjUzNzcsNjU0MzkpKXJldHVybiBmdC02NTM3NysxNjE7ODcyMj09PWZ0JiYo''@;'; put 'put ''ZnQ9NjUyOTMpO3ZhciBIdD1mdW5jdGlvbiBoZShsdCl7cmV0dXJuKE89T3x8SWUoImppczAyMDgiKS5tYXAoZnVuY3Rpb24oQ3QsZnQpe3JldHVybiBCKGZ0LDgyNzIsODgzNSk/bnVsbDpDdH0pKS5pbmRleE9mKGx0KX0oZnQpO2lmKG51bGw9PT1IdClyZXR1cm4gSyhmdCk7dmFyIEdlPUVl''@;'; put 'put ''KEh0LzE4OCkseXQ9SHQlMTg4O3JldHVybltHZSsoR2U8MzE/MTI5OjE5MykseXQrKHl0PDYzPzY0OjY1KV19fWZ1bmN0aW9uIEF0KGx0KXt2YXIgTHQ9bHQuZmF0YWwsQ3Q9MDt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oZnQsSHQpe2lmKEh0PT09WSYmMCE9PUN0KXJldHVybiBDdD0wLHRlKEx0''@;'; put 'put ''KTtpZihIdD09PVkmJjA9PT1DdClyZXR1cm4gTjtpZigwIT09Q3Qpe3ZhciBHZT1DdCxVZT1udWxsO0N0PTAsQihIdCw2NSwyNTQpJiYoVWU9MTkwKihHZS0xMjkpKyhIdC02NSkpO3ZhciB5dD1udWxsPT09VWU/bnVsbDprZShVZSxJZSgiZXVjLWtyIikpO3JldHVybiBudWxsPT09VWUmJnJl''@;'; put 'put ''KEh0KSYmZnQucHJlcGVuZChIdCksbnVsbD09PXl0P3RlKEx0KTp5dH1yZXR1cm4gcmUoSHQpP0h0OkIoSHQsMTI5LDI1NCk/KEN0PUh0LG51bGwpOnRlKEx0KX19ZnVuY3Rpb24gaHQobHQpe3RoaXMuaGFuZGxlcj1mdW5jdGlvbihDdCxmdCl7aWYoZnQ9PT1ZKXJldHVybiBOO2lmKGFlKGZ0''@;'; put 'put ''KSlyZXR1cm4gZnQ7dmFyIEh0PVNlKGZ0LEllKCJldWMta3IiKSk7cmV0dXJuIG51bGw9PT1IdD9LKGZ0KTpbRWUoSHQvMTkwKSsxMjksSHQlMTkwKzY1XX19ZnVuY3Rpb24gQnQobHQsTHQpe3ZhciBDdD1sdD4+OCxmdD0yNTUmbHQ7cmV0dXJuIEx0P1tDdCxmdF06W2Z0LEN0XX1mdW5jdGlv''@;'; put 'put ''biBvbihsdCxMdCl7dmFyIEN0PUx0LmZhdGFsLGZ0PW51bGwsSHQ9bnVsbDt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oR2UsVWUpe2lmKFVlPT09WSYmKG51bGwhPT1mdHx8bnVsbCE9PUh0KSlyZXR1cm4gdGUoQ3QpO2lmKFVlPT09WSYmbnVsbD09PWZ0JiZudWxsPT09SHQpcmV0dXJuIE47aWYo''@;'; put 'put ''bnVsbD09PWZ0KXJldHVybiBmdD1VZSxudWxsO3ZhciB5dDtpZih5dD1sdD8oZnQ8PDgpK1VlOihVZTw8OCkrZnQsZnQ9bnVsbCxudWxsIT09SHQpe3ZhciBqdD1IdDtyZXR1cm4gSHQ9bnVsbCxCKHl0LDU2MzIwLDU3MzQzKT82NTUzNisxMDI0KihqdC01NTI5NikrKHl0LTU2MzIwKTooR2Uu''@;'; put 'put ''cHJlcGVuZChCdCh5dCxsdCkpLHRlKEN0KSl9cmV0dXJuIEIoeXQsNTUyOTYsNTYzMTkpPyhIdD15dCxudWxsKTpCKHl0LDU2MzIwLDU3MzQzKT90ZShDdCk6eXR9fWZ1bmN0aW9uIF90KGx0LEx0KXt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oZnQsSHQpe2lmKEh0PT09WSlyZXR1cm4gTjtpZihC''@;'; put 'put ''KEh0LDAsNjU1MzUpKXJldHVybiBCdChIdCxsdCk7dmFyIEdlPUJ0KDU1Mjk2KyhIdC02NTUzNj4+MTApLGx0KSxVZT1CdCg1NjMyMCsoSHQtNjU1MzYmMTAyMyksbHQpO3JldHVybiBHZS5jb25jYXQoVWUpfX1mdW5jdGlvbiB0dChsdCl7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKEN0LGZ0KXty''@;'; put 'put ''ZXR1cm4gZnQ9PT1ZP046cmUoZnQpP2Z0OjYzMzYwK2Z0LTEyOH19ZnVuY3Rpb24gZXQobHQpe3RoaXMuaGFuZGxlcj1mdW5jdGlvbihDdCxmdCl7cmV0dXJuIGZ0PT09WT9OOmFlKGZ0KT9mdDpCKGZ0LDYzMzYwLDYzNDg3KT9mdC02MzM2MCsxMjg6SyhmdCl9fU9iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4LnByb3RvdHlwZSwiZW5jb2RpbmciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW5jb2RpbmcubmFtZS50b0xvd2VyQ2FzZSgpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4LnByb3RvdHlwZSwiZmF0YWwiLHtnZXQ6ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4iZmF0YWwiPT09dGhpcy5fZXJyb3JfbW9kZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoeC5wcm90b3R5cGUsImlnbm9yZUJPTSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pZ25vcmVCT019fSkpLHgucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihMdCxDdCl7''@;'; put 'put ''dmFyIGZ0O2Z0PSJvYmplY3QiPT10eXBlb2YgTHQmJkx0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/bmV3IFVpbnQ4QXJyYXkoTHQpOiJvYmplY3QiPT10eXBlb2YgTHQmJiJidWZmZXIiaW4gTHQmJkx0LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP25ldyBVaW50OEFycmF5KEx0LmJ1''@;'; put 'put ''ZmZlcixMdC5ieXRlT2Zmc2V0LEx0LmJ5dGVMZW5ndGgpOm5ldyBVaW50OEFycmF5KDApLEN0PVUoQ3QpLHRoaXMuX2RvX25vdF9mbHVzaHx8KHRoaXMuX2RlY29kZXI9QWVbdGhpcy5fZW5jb2RpbmcubmFtZV0oe2ZhdGFsOiJmYXRhbCI9PT10aGlzLl9lcnJvcl9tb2RlfSksdGhpcy5fQk9N''@;'; put 'put ''c2Vlbj0hMSksdGhpcy5fZG9fbm90X2ZsdXNoPUJvb2xlYW4oQ3Quc3RyZWFtKTtmb3IodmFyIFVlLEh0PW5ldyBXKGZ0KSxHZT1bXTs7KXt2YXIgeXQ9SHQucmVhZCgpO2lmKHl0PT09WXx8KFVlPXRoaXMuX2RlY29kZXIuaGFuZGxlcihIdCx5dCkpPT09TilicmVhaztudWxsIT09VWUmJihB''@;'; put 'put ''cnJheS5pc0FycmF5KFVlKT9HZS5wdXNoLmFwcGx5KEdlLFVlKTpHZS5wdXNoKFVlKSl9aWYoIXRoaXMuX2RvX25vdF9mbHVzaCl7ZG97aWYoKFVlPXRoaXMuX2RlY29kZXIuaGFuZGxlcihIdCxIdC5yZWFkKCkpKT09PU4pYnJlYWs7bnVsbCE9PVVlJiYoQXJyYXkuaXNBcnJheShVZSk/R2Uu''@;'; put 'put ''cHVzaC5hcHBseShHZSxVZSk6R2UucHVzaChVZSkpfXdoaWxlKCFIdC5lbmRPZlN0cmVhbSgpKTt0aGlzLl9kZWNvZGVyPW51bGx9cmV0dXJuIGZ1bmN0aW9uIGp0KEp0KXtyZXR1cm4gZnVuY3Rpb24gRShsdCxMdCl7cmV0dXJuLTEhPT1sdC5pbmRleE9mKEx0KX0oWyJVVEYtOCIsIlVURi0x''@;'; put 'put ''NkxFIiwiVVRGLTE2QkUiXSx0aGlzLl9lbmNvZGluZy5uYW1lKSYmIXRoaXMuX2lnbm9yZUJPTSYmIXRoaXMuX0JPTXNlZW4mJihKdC5sZW5ndGg+MCYmNjUyNzk9PT1KdFswXT8odGhpcy5fQk9Nc2Vlbj0hMCxKdC5zaGlmdCgpKTpKdC5sZW5ndGg+MCYmKHRoaXMuX0JPTXNlZW49ITApKSxm''@;'; put 'put ''dW5jdGlvbiBqKGx0KXtmb3IodmFyIEx0PSIiLEN0PTA7Q3Q8bHQubGVuZ3RoOysrQ3Qpe3ZhciBmdD1sdFtDdF07ZnQ8PTY1NTM1P0x0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGZ0KTooZnQtPTY1NTM2LEx0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2KyhmdD4+MTApLDU2MzIwKygxMDIz''@;'; put 'put ''JmZ0KSkpfXJldHVybiBMdH0oSnQpfS5jYWxsKHRoaXMsR2UpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShQLnByb3RvdHlwZSwiZW5jb2RpbmciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW5jb2RpbmcubmFtZS50b0xvd2VyQ2FzZSgpfX0p''@;'; put 'put ''LFAucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbihMdCxDdCl7THQ9dm9pZCAwPT09THQ/IiI6U3RyaW5nKEx0KSxDdD1VKEN0KSx0aGlzLl9kb19ub3RfZmx1c2h8fCh0aGlzLl9lbmNvZGVyPXZlW3RoaXMuX2VuY29kaW5nLm5hbWVdKHtmYXRhbDoiZmF0YWwiPT09dGhpcy5fZmF0YWx9KSks''@;'; put 'put ''dGhpcy5fZG9fbm90X2ZsdXNoPUJvb2xlYW4oQ3Quc3RyZWFtKTtmb3IodmFyIEdlLGZ0PW5ldyBXKGZ1bmN0aW9uIFEobHQpe2Zvcih2YXIgTHQ9U3RyaW5nKGx0KSxDdD1MdC5sZW5ndGgsZnQ9MCxIdD1bXTtmdDxDdDspe3ZhciBHZT1MdC5jaGFyQ29kZUF0KGZ0KTtpZihHZTw1NTI5Nnx8''@;'; put 'put ''R2U+NTczNDMpSHQucHVzaChHZSk7ZWxzZSBpZig1NjMyMDw9R2UmJkdlPD01NzM0MylIdC5wdXNoKDY1NTMzKTtlbHNlIGlmKDU1Mjk2PD1HZSYmR2U8PTU2MzE5KWlmKGZ0PT09Q3QtMSlIdC5wdXNoKDY1NTMzKTtlbHNle3ZhciBVZT1MdC5jaGFyQ29kZUF0KGZ0KzEpOzU2MzIwPD1VZSYm''@;'; put 'put ''VWU8PTU3MzQzPyhIdC5wdXNoKDY1NTM2KygoMTAyMyZHZSk8PDEwKSsoMTAyMyZVZSkpLGZ0Kz0xKTpIdC5wdXNoKDY1NTMzKX1mdCs9MX1yZXR1cm4gSHR9KEx0KSksSHQ9W107Oyl7dmFyIFVlPWZ0LnJlYWQoKTtpZihVZT09PVl8fChHZT10aGlzLl9lbmNvZGVyLmhhbmRsZXIoZnQsVWUp''@;'; put 'put ''KT09PU4pYnJlYWs7QXJyYXkuaXNBcnJheShHZSk/SHQucHVzaC5hcHBseShIdCxHZSk6SHQucHVzaChHZSl9aWYoIXRoaXMuX2RvX25vdF9mbHVzaCl7Zm9yKDsoR2U9dGhpcy5fZW5jb2Rlci5oYW5kbGVyKGZ0LGZ0LnJlYWQoKSkpIT09TjspQXJyYXkuaXNBcnJheShHZSk/SHQucHVzaC5h''@;'; put 'put ''cHBseShIdCxHZSk6SHQucHVzaChHZSk7dGhpcy5fZW5jb2Rlcj1udWxsfXJldHVybiBuZXcgVWludDhBcnJheShIdCl9LHZlWyJVVEYtOCJdPWZ1bmN0aW9uKGx0KXtyZXR1cm4gbmV3IFQobHQpfSxBZVsiVVRGLTgiXT1mdW5jdGlvbihsdCl7cmV0dXJuIG5ldyBWKGx0KX0sImVuY29kaW5n''@;'; put 'put ''LWluZGV4ZXMiaW4gbWUmJmNlLmZvckVhY2goZnVuY3Rpb24obHQpeyJMZWdhY3kgc2luZ2xlLWJ5dGUgZW5jb2RpbmdzIj09PWx0LmhlYWRpbmcmJmx0LmVuY29kaW5ncy5mb3JFYWNoKGZ1bmN0aW9uKEx0KXt2YXIgQ3Q9THQubmFtZSxmdD1JZShDdC50b0xvd2VyQ2FzZSgpKTtBZVtDdF09''@;'; put 'put ''ZnVuY3Rpb24oSHQpe3JldHVybiBuZXcgUyhmdCxIdCl9LHZlW0N0XT1mdW5jdGlvbihIdCl7cmV0dXJuIG5ldyBGKGZ0LEh0KX19KX0pLEFlLkdCSz1mdW5jdGlvbihsdCl7cmV0dXJuIG5ldyB5ZShsdCl9LHZlLkdCSz1mdW5jdGlvbihsdCl7cmV0dXJuIG5ldyBDZShsdCwhMCl9LHZlLmdi''@;'; put 'put ''MTgwMzA9ZnVuY3Rpb24obHQpe3JldHVybiBuZXcgQ2UobHQpfSxBZS5nYjE4MDMwPWZ1bmN0aW9uKGx0KXtyZXR1cm4gbmV3IHllKGx0KX0sdmUuQmlnNT1mdW5jdGlvbihsdCl7cmV0dXJuIG5ldyBQZShsdCl9LEFlLkJpZzU9ZnVuY3Rpb24obHQpe3JldHVybiBuZXcgRGUobHQpfSx2ZVsi''@;'; put 'put ''RVVDLUpQIl09ZnVuY3Rpb24obHQpe3JldHVybiBuZXcgJGUobHQpfSxBZVsiRVVDLUpQIl09ZnVuY3Rpb24obHQpe3JldHVybiBuZXcgUWUobHQpfSx2ZVsiSVNPLTIwMjItSlAiXT1mdW5jdGlvbihsdCl7cmV0dXJuIG5ldyB3dChsdCl9LEFlWyJJU08tMjAyMi1KUCJdPWZ1bmN0aW9uKGx0''@;'; put 'put ''KXtyZXR1cm4gbmV3IGd0KGx0KX0sdmUuU2hpZnRfSklTPWZ1bmN0aW9uKGx0KXtyZXR1cm4gbmV3IHZ0KGx0KX0sQWUuU2hpZnRfSklTPWZ1bmN0aW9uKGx0KXtyZXR1cm4gbmV3IG10KGx0KX0sdmVbIkVVQy1LUiJdPWZ1bmN0aW9uKGx0KXtyZXR1cm4gbmV3IGh0KGx0KX0sQWVbIkVVQy1L''@;'; put 'put ''UiJdPWZ1bmN0aW9uKGx0KXtyZXR1cm4gbmV3IEF0KGx0KX0sdmVbIlVURi0xNkJFIl09ZnVuY3Rpb24obHQpe3JldHVybiBuZXcgX3QoITAsbHQpfSxBZVsiVVRGLTE2QkUiXT1mdW5jdGlvbihsdCl7cmV0dXJuIG5ldyBvbighMCxsdCl9LHZlWyJVVEYtMTZMRSJdPWZ1bmN0aW9uKGx0KXty''@;'; put 'put ''ZXR1cm4gbmV3IF90KCExLGx0KX0sQWVbIlVURi0xNkxFIl09ZnVuY3Rpb24obHQpe3JldHVybiBuZXcgb24oITEsbHQpfSx2ZVsieC11c2VyLWRlZmluZWQiXT1mdW5jdGlvbihsdCl7cmV0dXJuIG5ldyBldChsdCl9LEFlWyJ4LXVzZXItZGVmaW5lZCJdPWZ1bmN0aW9uKGx0KXtyZXR1cm4g''@;'; put 'put ''bmV3IHR0KGx0KX0sbWUuVGV4dEVuY29kZXJ8fChtZS5UZXh0RW5jb2Rlcj1QKSxtZS5UZXh0RGVjb2Rlcnx8KG1lLlRleHREZWNvZGVyPXgpLFhlLmV4cG9ydHMmJihYZS5leHBvcnRzPXtUZXh0RW5jb2RlcjptZS5UZXh0RW5jb2RlcixUZXh0RGVjb2RlcjptZS5UZXh0RGVjb2RlcixFbmNv''@;'; put 'put ''ZGluZ0luZGV4ZXM6bWVbImVuY29kaW5nLWluZGV4ZXMiXX0pfSh0aGlzfHx7fSl9LDIzNTMyOlhlPT57ZnVuY3Rpb24gTChtZSl7dHJ5e2lmKCFnbG9iYWwubG9jYWxTdG9yYWdlKXJldHVybiExfWNhdGNoKEUpe3JldHVybiExfXZhciBCPWdsb2JhbC5sb2NhbFN0b3JhZ2VbbWVdO3JldHVy''@;'; put 'put ''biBudWxsIT1CJiYidHJ1ZSI9PT1TdHJpbmcoQikudG9Mb3dlckNhc2UoKX1YZS5leHBvcnRzPWZ1bmN0aW9uIEplKG1lLEIpe2lmKEwoIm5vRGVwcmVjYXRpb24iKSlyZXR1cm4gbWU7dmFyIEU9ITE7cmV0dXJuIGZ1bmN0aW9uIEVlKCl7aWYoIUUpe2lmKEwoInRocm93RGVwcmVjYXRpb24i''@;'; put 'put ''KSl0aHJvdyBuZXcgRXJyb3IoQik7TCgidHJhY2VEZXByZWNhdGlvbiIpP2NvbnNvbGUudHJhY2UoQik6Y29uc29sZS53YXJuKEIpLEU9ITB9cmV0dXJuIG1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fSw3MzM5MzooWGUsSmUsTCk9PnshZnVuY3Rpb24obWUpeyJ1c2Ugc3RyaWN0IjttZS5l''@;'; put 'put ''eHBvcnRzLmlzX3VyaT1FLG1lLmV4cG9ydHMuaXNfaHR0cF91cmk9RWUsbWUuZXhwb3J0cy5pc19odHRwc191cmk9VSxtZS5leHBvcnRzLmlzX3dlYl91cmk9USxtZS5leHBvcnRzLmlzVXJpPUUsbWUuZXhwb3J0cy5pc0h0dHBVcmk9RWUsbWUuZXhwb3J0cy5pc0h0dHBzVXJpPVUsbWUuZXhw''@;'; put 'put ''b3J0cy5pc1dlYlVyaT1RO3ZhciBCPWZ1bmN0aW9uKGope3JldHVybiBqLm1hdGNoKC8oPzooW146XC8/I10rKTopPyg/OlwvXC8oW15cLz8jXSopKT8oW14/I10qKSg/Olw/KFteI10qKSk/KD86IyguKikpPy8pfTtmdW5jdGlvbiBFKGope2lmKGomJiEvW15hLXowLTlcOlwvXD9cI1xbXF1c''@;'; put 'put ''QFwhXCRcJlwnXChcKVwqXCtcLFw7XD1cLlwtXF9cflwlXS9pLnRlc3QoaikmJiEvJVteMC05YS1mXS9pLnRlc3QoaikmJiEvJVswLTlhLWZdKDo/W14wLTlhLWZdfCQpL2kudGVzdChqKSl7dmFyIHJlLFksVyxOLHRlLGFlPSIiLEs9IiI7aWYoWT0ocmU9QihqKSlbMl0sVz1yZVszXSxOPXJl''@;'; put 'put ''WzRdLHRlPXJlWzVdLChhZT1yZVsxXSkmJmFlLmxlbmd0aCYmVy5sZW5ndGg+PTApe2lmKFkmJlkubGVuZ3RoKXtpZigwIT09Vy5sZW5ndGgmJiEvXlwvLy50ZXN0KFcpKXJldHVybn1lbHNlIGlmKC9eXC9cLy8udGVzdChXKSlyZXR1cm47aWYoL15bYS16XVthLXowLTlcK1wtXC5dKiQvLnRl''@;'; put 'put ''c3QoYWUudG9Mb3dlckNhc2UoKSkpcmV0dXJuIEsrPWFlKyI6IixZJiZZLmxlbmd0aCYmKEsrPSIvLyIrWSksSys9VyxOJiZOLmxlbmd0aCYmKEsrPSI/IitOKSx0ZSYmdGUubGVuZ3RoJiYoSys9IiMiK3RlKSxLfX19ZnVuY3Rpb24gRWUoaixyZSl7aWYoRShqKSl7dmFyIGFlLE4sSyxKLFk9''@;'; put 'put ''IiIsVz0iIix0ZT0iIixzZT0iIjtpZihXPShhZT1CKGopKVsyXSxOPWFlWzNdLEs9YWVbNF0sSj1hZVs1XSxZPWFlWzFdKXtpZihyZSl7aWYoImh0dHBzIiE9WS50b0xvd2VyQ2FzZSgpKXJldHVybn1lbHNlIGlmKCJodHRwIiE9WS50b0xvd2VyQ2FzZSgpKXJldHVybjtpZihXKXJldHVybi86''@;'; put 'put ''KFxkKykkLy50ZXN0KFcpJiYodGU9Vy5tYXRjaCgvOihcZCspJC8pWzBdLFc9Vy5yZXBsYWNlKC86XGQrJC8sIiIpKSxzZSs9WSsiOiIsc2UrPSIvLyIrVyx0ZSYmKHNlKz10ZSksc2UrPU4sSyYmSy5sZW5ndGgmJihzZSs9Ij8iK0spLEomJkoubGVuZ3RoJiYoc2UrPSIjIitKKSxzZX19fWZ1''@;'; put 'put ''bmN0aW9uIFUoail7cmV0dXJuIEVlKGosITApfWZ1bmN0aW9uIFEoail7cmV0dXJuIEVlKGopfHxVKGopfX0oWGU9TC5ubWQoWGUpKX0sMjkwMzU6ZnVuY3Rpb24oWGUsSmUsTCl7IWZ1bmN0aW9uKG1lKXt2YXIgQj1mdW5jdGlvbihqKXtqPXZvaWQgMCE9PShqPWp8fHt9KT9qOnt9O3ZhciBh''@;'; put 'put ''ZSxyZT17fTtmb3IoYWUgaW4gailqLmhhc093blByb3BlcnR5KGFlKSYmKHJlW2FlXT1qW2FlXSk7ai5hcmd1bWVudHM9W10sai50aGlzUHJvZ3JhbT0iLi90aGlzLnByb2dyYW0iLGoucXVpdD1mdW5jdGlvbihkdCxJdCl7dGhyb3cgSXR9LGoucHJlUnVuPVtdLGoucG9zdFJ1bj1bXTt2YXIg''@;'; put 'put ''SyxKLFk9ITEsVz0hMSxOPSExLHRlPSExO2lmKGouRU5WSVJPTk1FTlQpaWYoIldFQiI9PT1qLkVOVklST05NRU5UKVk9ITA7ZWxzZSBpZigiV09SS0VSIj09PWouRU5WSVJPTk1FTlQpVz0hMDtlbHNlIGlmKCJOT0RFIj09PWouRU5WSVJPTk1FTlQpTj0hMDtlbHNle2lmKCJTSEVMTCIhPT1q''@;'; put 'put ''LkVOVklST05NRU5UKXRocm93IG5ldyBFcnJvcigiTW9kdWxlWydFTlZJUk9OTUVOVCddIHZhbHVlIGlzIG5vdCB2YWxpZC4gbXVzdCBiZSBvbmUgb2Y6IFdFQnxXT1JLRVJ8Tk9ERXxTSEVMTC4iKTt0ZT0hMH1lbHNlIFk9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3csVz0iZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgaW1wb3J0U2NyaXB0cyxOPSJvYmplY3QiPT10eXBlb2YgcHJvY2VzcyYmIVkmJiFXLHRlPSFZJiYhTiYmIVc7Zm9yKGFlIGluIE4/KGoucmVhZD1mdW5jdGlvbihJdCxQdCl7dmFyIGZlO3JldHVybihmZT1VdShJdCkpfHwoS3x8KEs9TCgzNTE1OSkpLEp8fChKPUwoNzU3MDEpKSxJ''@;'; put 'put ''dD1KLm5vcm1hbGl6ZShJdCksZmU9Sy5yZWFkRmlsZVN5bmMoSXQpKSxQdD9mZTpmZS50b1N0cmluZygpfSxqLnJlYWRCaW5hcnk9ZnVuY3Rpb24oSXQpe3ZhciBQdD1qLnJlYWQoSXQsITApO3JldHVybiBQdC5idWZmZXJ8fChQdD1uZXcgVWludDhBcnJheShQdCkpLE8oUHQuYnVmZmVyKSxQ''@;'; put 'put ''dH0scHJvY2Vzcy5hcmd2Lmxlbmd0aD4xJiYoai50aGlzUHJvZ3JhbT1wcm9jZXNzLmFyZ3ZbMV0ucmVwbGFjZSgvXFwvZywiLyIpKSxqLmFyZ3VtZW50cz1wcm9jZXNzLmFyZ3Yuc2xpY2UoMiksWGUuZXhwb3J0cz1qLHByb2Nlc3Mub24oInVuY2F1Z2h0RXhjZXB0aW9uIixmdW5jdGlvbihk''@;'; put 'put ''dCl7aWYoIShkdCBpbnN0YW5jZW9mIENhKSl0aHJvdyBkdH0pLHByb2Nlc3Mub24oInVuaGFuZGxlZFJlamVjdGlvbiIsZnVuY3Rpb24oZHQsSXQpe3Byb2Nlc3MuZXhpdCgxKX0pLGouaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiJbRW1zY3JpcHRlbiBNb2R1bGUgb2JqZWN0XSJ9KTp0ZT8o''@;'; put 'put ''InVuZGVmaW5lZCIhPXR5cGVvZiByZWFkJiYoai5yZWFkPWZ1bmN0aW9uKEl0KXt2YXIgUHQ9VXUoSXQpO3JldHVybiBQdD9ZYShQdCk6cmVhZChJdCl9KSxqLnJlYWRCaW5hcnk9ZnVuY3Rpb24oSXQpe3ZhciBQdDtyZXR1cm4oUHQ9VXUoSXQpKXx8KCJmdW5jdGlvbiI9PXR5cGVvZiByZWFk''@;'; put 'put ''YnVmZmVyP25ldyBVaW50OEFycmF5KHJlYWRidWZmZXIoSXQpKTooTygib2JqZWN0Ij09dHlwZW9mKFB0PXJlYWQoSXQsImJpbmFyeSIpKSksUHQpKX0sInVuZGVmaW5lZCIhPXR5cGVvZiBzY3JpcHRBcmdzP2ouYXJndW1lbnRzPXNjcmlwdEFyZ3M6dm9pZCAwIT09YXJndW1lbnRzJiYoai5h''@;'; put 'put ''cmd1bWVudHM9YXJndW1lbnRzKSwiZnVuY3Rpb24iPT10eXBlb2YgcXVpdCYmKGoucXVpdD1mdW5jdGlvbihkdCxJdCl7cXVpdChkdCl9KSk6KFl8fFcpJiYoai5yZWFkPWZ1bmN0aW9uKEl0KXt0cnl7dmFyIFB0PW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gUHQub3BlbigiR0VUIixJdCwh''@;'; put 'put ''MSksUHQuc2VuZChudWxsKSxQdC5yZXNwb25zZVRleHR9Y2F0Y2goaXQpe3ZhciBmZT1VdShJdCk7aWYoZmUpcmV0dXJuIFlhKGZlKTt0aHJvdyBpdH19LFcmJihqLnJlYWRCaW5hcnk9ZnVuY3Rpb24oSXQpe3RyeXt2YXIgUHQ9bmV3IFhNTEh0dHBSZXF1ZXN0O3JldHVybiBQdC5vcGVuKCJH''@;'; put 'put ''RVQiLEl0LCExKSxQdC5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIixQdC5zZW5kKG51bGwpLG5ldyBVaW50OEFycmF5KFB0LnJlc3BvbnNlKX1jYXRjaChpdCl7dmFyIGZlPVV1KEl0KTtpZihmZSlyZXR1cm4gZmU7dGhyb3cgaXR9fSksai5yZWFkQXN5bmM9ZnVuY3Rpb24oSXQsUHQsZmUp''@;'; put 'put ''e3ZhciBpdD1uZXcgWE1MSHR0cFJlcXVlc3Q7aXQub3BlbigiR0VUIixJdCwhMCksaXQucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciIsaXQub25sb2FkPWZ1bmN0aW9uKCl7aWYoMjAwPT1pdC5zdGF0dXN8fDA9PWl0LnN0YXR1cyYmaXQucmVzcG9uc2UpUHQoaXQucmVzcG9uc2UpO2Vsc2V7''@;'; put 'put ''dmFyIFh0PVV1KEl0KTtYdD9QdChYdC5idWZmZXIpOmZlKCl9fSxpdC5vbmVycm9yPWZlLGl0LnNlbmQobnVsbCl9LHZvaWQgMCE9PWFyZ3VtZW50cyYmKGouYXJndW1lbnRzPWFyZ3VtZW50cyksai5zZXRXaW5kb3dUaXRsZT1mdW5jdGlvbihkdCl7ZG9jdW1lbnQudGl0bGU9ZHR9KSxqLnBy''@;'; put 'put ''aW50PSJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZT9jb25zb2xlLmxvZzoidW5kZWZpbmVkIiE9dHlwZW9mIHByaW50P3ByaW50Om51bGwsai5wcmludEVycj0idW5kZWZpbmVkIiE9dHlwZW9mIHByaW50RXJyP3ByaW50RXJyOiJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29s''@;'; put 'put ''ZS53YXJufHxqLnByaW50LGoucHJpbnQ9ai5wcmludCxqLnByaW50RXJyPWoucHJpbnRFcnIscmUpcmUuaGFzT3duUHJvcGVydHkoYWUpJiYoalthZV09cmVbYWVdKTtyZT12b2lkIDA7dmFyIHNlPTE2O2Z1bmN0aW9uIG9lKGR0KXtPKCFqdCk7dmFyIEl0PXl0O3JldHVybiB5dD15dCtkdCsx''@;'; put 'put ''NSYtMTYsSXR9ZnVuY3Rpb24gY2UoZHQpe08obG4pO3ZhciBJdD1MdFtsbj4+Ml0sUHQ9SXQrZHQrMTUmLTE2O3JldHVybiBMdFtsbj4+Ml09UHQsUHQ+PXNyJiYhYm4oKT8oTHRbbG4+PjJdPUl0LDApOkl0fWZ1bmN0aW9uIGRlKGR0LEl0KXtyZXR1cm4gSXR8fChJdD1zZSksTWF0aC5jZWls''@;'; put 'put ''KGR0L0l0KSpJdH1mdW5jdGlvbiB2ZShkdCl7c3dpdGNoKGR0KXtjYXNlImkxIjpjYXNlImk4IjpyZXR1cm4gMTtjYXNlImkxNiI6cmV0dXJuIDI7Y2FzZSJpMzIiOmNhc2UiZmxvYXQiOnJldHVybiA0O2Nhc2UiaTY0IjpjYXNlImRvdWJsZSI6cmV0dXJuIDg7ZGVmYXVsdDppZigiKiI9PT1k''@;'; put 'put ''dFtkdC5sZW5ndGgtMV0pcmV0dXJuIDQ7aWYoImkiPT09ZHRbMF0pe3ZhciBJdD1wYXJzZUludChkdC5zdWJzdHIoMSkpO3JldHVybiBPKEl0JTg9PTApLEl0Lzh9cmV0dXJuIDB9fW5ldyBBcnJheSgwKTt2YXIgVGU9OCxNZT0wO2Z1bmN0aW9uIE8oZHQsSXQpe2R0fHxmMigiQXNzZXJ0aW9u''@;'; put 'put ''IGZhaWxlZDogIitJdCl9ZnVuY3Rpb24geihkdCl7dmFyIEl0PWpbIl8iK2R0XTtyZXR1cm4gTyhJdCwiQ2Fubm90IGNhbGwgdW5rbm93biBmdW5jdGlvbiAiK2R0KyIsIG1ha2Ugc3VyZSBpdCBpcyBleHBvcnRlZCIpLEl0fXZhciBlZT17c3RhY2tTYXZlOmZ1bmN0aW9uKCl7UXMoKX0sc3Rh''@;'; put 'put ''Y2tSZXN0b3JlOmZ1bmN0aW9uKCl7V3AoKX0sYXJyYXlUb0M6ZnVuY3Rpb24oZHQpe3ZhciBJdD1RZyhkdC5sZW5ndGgpO3JldHVybiB6bihkdCxJdCksSXR9LHN0cmluZ1RvQzpmdW5jdGlvbihkdCl7dmFyIEl0PTA7aWYobnVsbCE9ZHQmJjAhPT1kdCl7dmFyIFB0PTErKGR0Lmxlbmd0aDw8''@;'; put 'put ''Mik7UWUoZHQsSXQ9UWcoUHQpLFB0KX1yZXR1cm4gSXR9fSxuZT17c3RyaW5nOmVlLnN0cmluZ1RvQyxhcnJheTplZS5hcnJheVRvQ307ZnVuY3Rpb24geChkdCxJdCxQdCxmZSxpdCl7dmFyIGE9eihkdCksWHQ9W10saHI9MDtpZihmZSlmb3IodmFyIFBpPTA7UGk8ZmUubGVuZ3RoO1BpKysp''@;'; put 'put ''e3ZhciBqbj1uZVtQdFtQaV1dO2puPygwPT09aHImJihocj1RcygpKSxYdFtQaV09am4oZmVbUGldKSk6WHRbUGldPWZlW1BpXX12YXIgXz1hLmFwcGx5KG51bGwsWHQpO3JldHVybiJzdHJpbmciPT09SXQmJihfPUYoXykpLDAhPT1ociYmV3AoaHIpLF99ZnVuY3Rpb24gUChkdCxJdCxQdCxm''@;'; put 'put ''ZSl7c3dpdGNoKCIqIj09PShQdD1QdHx8Imk4IikuY2hhckF0KFB0Lmxlbmd0aC0xKSYmKFB0PSJpMzIiKSxQdCl7Y2FzZSJpMSI6Y2FzZSJpOCI6X3RbZHQ+PjBdPUl0O2JyZWFrO2Nhc2UiaTE2IjpldFtkdD4+MV09SXQ7YnJlYWs7Y2FzZSJpMzIiOkx0W2R0Pj4yXT1JdDticmVhaztjYXNl''@;'; put 'put ''Imk2NCI6dGVtcEk2ND1bSXQ+Pj4wLCh0ZW1wRG91YmxlPUl0LCtCbih0ZW1wRG91YmxlKT49MT90ZW1wRG91YmxlPjA/KDB8UnIoK29yKHRlbXBEb3VibGUvNDI5NDk2NzI5NiksNDI5NDk2NzI5NSkpPj4+MDp+fitKbigodGVtcERvdWJsZS0rKH5+dGVtcERvdWJsZT4+PjApKS80Mjk0OTY3''@;'; put 'put ''Mjk2KT4+PjA6MCldLEx0W2R0Pj4yXT10ZW1wSTY0WzBdLEx0W2R0KzQ+PjJdPXRlbXBJNjRbMV07YnJlYWs7Y2FzZSJmbG9hdCI6ZnRbZHQ+PjJdPUl0O2JyZWFrO2Nhc2UiZG91YmxlIjpIdFtkdD4+M109SXQ7YnJlYWs7ZGVmYXVsdDpmMigiaW52YWxpZCB0eXBlIGZvciBzZXRWYWx1ZTog''@;'; put 'put ''IitQdCl9fXZhciBWPTIsVD00O2Z1bmN0aW9uIFMoZHQsSXQsUHQsZmUpe3ZhciBpdCxhOyJudW1iZXIiPT10eXBlb2YgZHQ/KGl0PSEwLGE9ZHQpOihpdD0hMSxhPWR0Lmxlbmd0aCk7dmFyIGhyLFh0PSJzdHJpbmciPT10eXBlb2YgSXQ/SXQ6bnVsbDtpZihocj1QdD09VD9mZTpbImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIHpwP3pwOm9lLFFnLG9lLGNlXVt2b2lkIDA9PT1QdD9WOlB0XShNYXRoLm1heChhLFh0PzE6SXQubGVuZ3RoKSksaXQpe3ZhciBQaTtmb3IoZmU9aHIsTygwPT0oMyZocikpLFBpPWhyKygtNCZhKTtmZTxQaTtmZSs9NClMdFtmZT4+Ml09MDtmb3IoUGk9aHIrYTtmZTxQ''@;'; put 'put ''aTspX3RbZmUrKz4+MF09MDtyZXR1cm4gaHJ9aWYoImk4Ij09PVh0KXJldHVybiB0dC5zZXQoZHQuc3ViYXJyYXl8fGR0LnNsaWNlP2R0Om5ldyBVaW50OEFycmF5KGR0KSxociksaHI7Zm9yKHZhciBfLEFvLFNpLGpuPTA7am48YTspMCE9PShfPVh0fHxJdFtqbl0pPygiaTY0Ij09XyYmKF89''@;'; put 'put ''ImkzMiIpLFAoaHIram4sZHRbam5dLF8pLFNpIT09XyYmKEFvPXZlKF8pLFNpPV8pLGpuKz1Bbyk6am4rKztyZXR1cm4gaHJ9ZnVuY3Rpb24gRihkdCxJdCl7aWYoMD09PUl0fHwhZHQpcmV0dXJuIiI7Zm9yKHZhciBmZSxQdD0wLGl0PTA7UHR8PWZlPXR0W2R0K2l0Pj4wXSwoMCE9ZmV8fEl0''@;'; put 'put ''KSYmKGl0KyssIUl0fHxpdCE9SXQpOyk7SXR8fChJdD1pdCk7dmFyIGE9IiI7aWYoUHQ8MTI4KXtmb3IodmFyIGhyO0l0PjA7KWhyPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLHR0LnN1YmFycmF5KGR0LGR0K01hdGgubWluKEl0LDEwMjQpKSksYT1hP2EraHI6aHIsZHQrPTEw''@;'; put 'put ''MjQsSXQtPTEwMjQ7cmV0dXJuIGF9cmV0dXJuIERlKGR0KX12YXIgeWU9InVuZGVmaW5lZCIhPXR5cGVvZiBUZXh0RGVjb2Rlcj9uZXcgVGV4dERlY29kZXIoInV0ZjgiKTp2b2lkIDA7ZnVuY3Rpb24gQ2UoZHQsSXQpe2Zvcih2YXIgUHQ9SXQ7ZHRbUHRdOykrK1B0O2lmKFB0LUl0PjE2JiZk''@;'; put 'put ''dC5zdWJhcnJheSYmeWUpcmV0dXJuIHllLmRlY29kZShkdC5zdWJhcnJheShJdCxQdCkpO2Zvcih2YXIgZmUsaXQsYSxYdCxocixqbj0iIjs7KXtpZighKGZlPWR0W0l0KytdKSlyZXR1cm4gam47aWYoMTI4JmZlKWlmKGl0PTYzJmR0W0l0KytdLDE5MiE9KDIyNCZmZSkpaWYoYT02MyZkdFtJ''@;'; put 'put ''dCsrXSwyMjQ9PSgyNDAmZmUpP2ZlPSgxNSZmZSk8PDEyfGl0PDw2fGE6KFh0PTYzJmR0W0l0KytdLDI0MD09KDI0OCZmZSk/ZmU9KDcmZmUpPDwxOHxpdDw8MTJ8YTw8NnxYdDooaHI9NjMmZHRbSXQrK10sZmU9MjQ4PT0oMjUyJmZlKT8oMyZmZSk8PDI0fGl0PDwxOHxhPDwxMnxYdDw8Nnxo''@;'; put 'put ''cjooMSZmZSk8PDMwfGl0PDwyNHxhPDwxOHxYdDw8MTJ8aHI8PDZ8NjMmZHRbSXQrK10pKSxmZTw2NTUzNilqbis9U3RyaW5nLmZyb21DaGFyQ29kZShmZSk7ZWxzZXt2YXIgXz1mZS02NTUzNjtqbis9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxfPj4xMCw1NjMyMHwxMDIzJl8pfWVsc2Ug''@;'; put 'put ''am4rPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMxJmZlKTw8NnxpdCk7ZWxzZSBqbis9U3RyaW5nLmZyb21DaGFyQ29kZShmZSl9fWZ1bmN0aW9uIERlKGR0KXtyZXR1cm4gQ2UodHQsZHQpfWZ1bmN0aW9uIFBlKGR0LEl0LFB0LGZlKXtpZighKGZlPjApKXJldHVybiAwO2Zvcih2YXIgaXQ9UHQs''@;'; put 'put ''YT1QdCtmZS0xLFh0PTA7WHQ8ZHQubGVuZ3RoOysrWHQpe3ZhciBocj1kdC5jaGFyQ29kZUF0KFh0KTtpZihocj49NTUyOTYmJmhyPD01NzM0MyYmKGhyPTY1NTM2KygoMTAyMyZocik8PDEwKXwxMDIzJmR0LmNoYXJDb2RlQXQoKytYdCkpLGhyPD0xMjcpe2lmKFB0Pj1hKWJyZWFrO0l0W1B0''@;'; put 'put ''KytdPWhyfWVsc2UgaWYoaHI8PTIwNDcpe2lmKFB0KzE+PWEpYnJlYWs7SXRbUHQrK109MTkyfGhyPj42LEl0W1B0KytdPTEyOHw2MyZocn1lbHNlIGlmKGhyPD02NTUzNSl7aWYoUHQrMj49YSlicmVhaztJdFtQdCsrXT0yMjR8aHI+PjEyLEl0W1B0KytdPTEyOHxocj4+NiY2MyxJdFtQdCsr''@;'; put 'put ''XT0xMjh8NjMmaHJ9ZWxzZSBpZihocjw9MjA5NzE1MSl7aWYoUHQrMz49YSlicmVhaztJdFtQdCsrXT0yNDB8aHI+PjE4LEl0W1B0KytdPTEyOHxocj4+MTImNjMsSXRbUHQrK109MTI4fGhyPj42JjYzLEl0W1B0KytdPTEyOHw2MyZocn1lbHNlIGlmKGhyPD02NzEwODg2Myl7aWYoUHQrND49''@;'; put 'put ''YSlicmVhaztJdFtQdCsrXT0yNDh8aHI+PjI0LEl0W1B0KytdPTEyOHxocj4+MTgmNjMsSXRbUHQrK109MTI4fGhyPj4xMiY2MyxJdFtQdCsrXT0xMjh8aHI+PjYmNjMsSXRbUHQrK109MTI4fDYzJmhyfWVsc2V7aWYoUHQrNT49YSlicmVhaztJdFtQdCsrXT0yNTJ8aHI+PjMwLEl0W1B0Kytd''@;'; put 'put ''PTEyOHxocj4+MjQmNjMsSXRbUHQrK109MTI4fGhyPj4xOCY2MyxJdFtQdCsrXT0xMjh8aHI+PjEyJjYzLEl0W1B0KytdPTEyOHxocj4+NiY2MyxJdFtQdCsrXT0xMjh8NjMmaHJ9fXJldHVybiBJdFtQdF09MCxQdC1pdH1mdW5jdGlvbiBRZShkdCxJdCxQdCl7cmV0dXJuIFBlKGR0LHR0LEl0''@;'; put 'put ''LFB0KX1mdW5jdGlvbiAkZShkdCl7Zm9yKHZhciBJdD0wLFB0PTA7UHQ8ZHQubGVuZ3RoOysrUHQpe3ZhciBmZT1kdC5jaGFyQ29kZUF0KFB0KTtmZT49NTUyOTYmJmZlPD01NzM0MyYmKGZlPTY1NTM2KygoMTAyMyZmZSk8PDEwKXwxMDIzJmR0LmNoYXJDb2RlQXQoKytQdCkpLGZlPD0xMjc/''@;'; put 'put ''KytJdDpJdCs9ZmU8PTIwNDc/MjpmZTw9NjU1MzU/MzpmZTw9MjA5NzE1MT80OmZlPD02NzEwODg2Mz81OjZ9cmV0dXJuIEl0fWZ1bmN0aW9uIHd0KGR0KXt2YXIgSXQ9JGUoZHQpKzEsUHQ9enAoSXQpO3JldHVybiBQdCYmUGUoZHQsX3QsUHQsSXQpLFB0fWZ1bmN0aW9uIHZ0KGR0KXtyZXR1''@;'; put 'put ''cm4gZHQucmVwbGFjZSgvX19aW1x3XGRfXSsvZyxmdW5jdGlvbihQdCl7cmV0dXJuIFB0PT1QdD9QdDpQdCsiIFsiK1B0KyJdIn0pfWZ1bmN0aW9uIEF0KCl7dmFyIGR0PW5ldyBFcnJvcjtpZighZHQuc3RhY2spe3RyeXt0aHJvdyBuZXcgRXJyb3IoMCl9Y2F0Y2goSXQpe2R0PUl0fWlmKCFk''@;'; put 'put ''dC5zdGFjaylyZXR1cm4iKG5vIHN0YWNrIHRyYWNlIGF2YWlsYWJsZSkifXJldHVybiBkdC5zdGFjay50b1N0cmluZygpfWZ1bmN0aW9uIGh0KCl7dmFyIGR0PUF0KCk7cmV0dXJuIGouZXh0cmFTdGFja1RyYWNlJiYoZHQrPSJcbiIrai5leHRyYVN0YWNrVHJhY2UoKSksdnQoZHQpfSJ1bmRl''@;'; put 'put ''ZmluZWQiIT10eXBlb2YgVGV4dERlY29kZXImJm5ldyBUZXh0RGVjb2RlcigidXRmLTE2bGUiKTt2YXIgb24sX3QsdHQsZXQsTHQsZnQsSHQseXQsanQsSnQsZ24sZG4seW4sbG4sQnQ9MTYzODQ7ZnVuY3Rpb24gR2UoKXtqLkhFQVA4PV90PW5ldyBJbnQ4QXJyYXkob24pLGouSEVBUDE2PWV0''@;'; put 'put ''PW5ldyBJbnQxNkFycmF5KG9uKSxqLkhFQVAzMj1MdD1uZXcgSW50MzJBcnJheShvbiksai5IRUFQVTg9dHQ9bmV3IFVpbnQ4QXJyYXkob24pLGouSEVBUFUxNj1uZXcgVWludDE2QXJyYXkob24pLGouSEVBUFUzMj1uZXcgVWludDMyQXJyYXkob24pLGouSEVBUEYzMj1mdD1uZXcgRmxvYXQz''@;'; put 'put ''MkFycmF5KG9uKSxqLkhFQVBGNjQ9SHQ9bmV3IEZsb2F0NjRBcnJheShvbil9ZnVuY3Rpb24gTm4oKXtmMigiQ2Fubm90IGVubGFyZ2UgbWVtb3J5IGFycmF5cy4gRWl0aGVyICgxKSBjb21waWxlIHdpdGggIC1zIFRPVEFMX01FTU9SWT1YICB3aXRoIFggaGlnaGVyIHRoYW4gdGhlIGN1cnJl''@;'; put 'put ''bnQgdmFsdWUgIitzcisiLCAoMikgY29tcGlsZSB3aXRoICAtcyBBTExPV19NRU1PUllfR1JPV1RIPTEgIHdoaWNoIGFsbG93cyBpbmNyZWFzaW5nIHRoZSBzaXplIGF0IHJ1bnRpbWUgYnV0IHByZXZlbnRzIHNvbWUgb3B0aW1pemF0aW9ucywgKDMpIHNldCBNb2R1bGUuVE9UQUxfTUVNT1JZ''@;'; put 'put ''IHRvIGEgaGlnaGVyIHZhbHVlIGJlZm9yZSB0aGUgcHJvZ3JhbSBydW5zLCBvciAoNCkgaWYgeW91IHdhbnQgbWFsbG9jIHRvIHJldHVybiBOVUxMICgwKSBpbnN0ZWFkIG9mIHRoaXMgYWJvcnQsIGNvbXBpbGUgd2l0aCAgLXMgQUJPUlRJTkdfTUFMTE9DPTAgIil9ZnVuY3Rpb24gYm4oKXtO''@;'; put 'put ''bigpfXl0PUp0PWduPWRuPXluPWxuPTAsanQ9ITE7dmFyIGVyPWouVE9UQUxfU1RBQ0t8fDUyNDI4ODAsc3I9ai5UT1RBTF9NRU1PUll8fDE2Nzc3MjE2O2Z1bmN0aW9uIFhuKCl7cmV0dXJuIHNyfWlmKHNyPGVyJiZqLnByaW50RXJyKCJUT1RBTF9NRU1PUlkgc2hvdWxkIGJlIGxhcmdlciB0''@;'; put 'put ''aGFuIFRPVEFMX1NUQUNLLCB3YXMgIitzcisiISAoVE9UQUxfU1RBQ0s9IitlcisiKSIpLGouYnVmZmVyP29uPWouYnVmZmVyOihvbj1uZXcgQXJyYXlCdWZmZXIoc3IpLGouYnVmZmVyPW9uKSxHZSgpLEx0WzBdPTE2Njg1MDkwMjksZXRbMV09MjU0NTksMTE1IT09dHRbMl18fDk5IT09dHRb''@;'; put 'put ''M10pdGhyb3ciUnVudGltZSBlcnJvcjogZXhwZWN0ZWQgdGhlIHN5c3RlbSB0byBiZSBsaXR0bGUtZW5kaWFuISI7ZnVuY3Rpb24gRnIoZHQpe2Zvcig7ZHQubGVuZ3RoPjA7KXt2YXIgSXQ9ZHQuc2hpZnQoKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgSXQpe3ZhciBQdD1JdC5mdW5jOyJudW1i''@;'; put 'put ''ZXIiPT10eXBlb2YgUHQ/dm9pZCAwPT09SXQuYXJnP2ouZHluQ2FsbF92KFB0KTpqLmR5bkNhbGxfdmkoUHQsSXQuYXJnKTpQdCh2b2lkIDA9PT1JdC5hcmc/bnVsbDpJdC5hcmcpfWVsc2UgSXQoKX19dmFyIHhyPVtdLHF0PVtdLHByPVtdLG5yPVtdLEFuPVtdLHFuPSExO2Z1bmN0aW9uIHBu''@;'; put 'put ''KCl7aWYoai5wcmVSdW4pZm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBqLnByZVJ1biYmKGoucHJlUnVuPVtqLnByZVJ1bl0pO2oucHJlUnVuLmxlbmd0aDspd24oai5wcmVSdW4uc2hpZnQoKSk7RnIoeHIpfWZ1bmN0aW9uIEtuKCl7cW58fChxbj0hMCxGcihxdCkpfWZ1bmN0aW9uIE50KCl7RnIo''@;'; put 'put ''cHIpfWZ1bmN0aW9uIHNuKCl7RnIobnIpfWZ1bmN0aW9uIFVuKCl7aWYoai5wb3N0UnVuKWZvcigiZnVuY3Rpb24iPT10eXBlb2Ygai5wb3N0UnVuJiYoai5wb3N0UnVuPVtqLnBvc3RSdW5dKTtqLnBvc3RSdW4ubGVuZ3RoOyl0bihqLnBvc3RSdW4uc2hpZnQoKSk7RnIoQW4pfWZ1bmN0aW9u''@;'; put 'put ''IHduKGR0KXt4ci51bnNoaWZ0KGR0KX1mdW5jdGlvbiB0bihkdCl7QW4udW5zaGlmdChkdCl9ZnVuY3Rpb24gem4oZHQsSXQpe190LnNldChkdCxJdCl9ZnVuY3Rpb24gVHIoZHQsSXQsUHQpe2Zvcih2YXIgZmU9MDtmZTxkdC5sZW5ndGg7KytmZSlfdFtJdCsrPj4wXT1kdC5jaGFyQ29kZUF0''@;'; put 'put ''KGZlKTtQdHx8KF90W0l0Pj4wXT0wKX0oIU1hdGguaW11bHx8LTUhPT1NYXRoLmltdWwoNDI5NDk2NzI5NSw1KSkmJihNYXRoLmltdWw9ZnVuY3Rpb24oSXQsUHQpe3ZhciBpdD02NTUzNSZJdCxYdD02NTUzNSZQdDtyZXR1cm4gaXQqWHQrKChJdD4+PjE2KSpYdCtpdCooUHQ+Pj4xNik8PDE2''@;'; put 'put ''KXwwfSksTWF0aC5pbXVsPU1hdGguaW11bCxNYXRoLmNsejMyfHwoTWF0aC5jbHozMj1mdW5jdGlvbihkdCl7ZHQ+Pj49MDtmb3IodmFyIEl0PTA7SXQ8MzI7SXQrKylpZihkdCYxPDwzMS1JdClyZXR1cm4gSXQ7cmV0dXJuIDMyfSksTWF0aC5jbHozMj1NYXRoLmNsejMyLE1hdGgudHJ1bmN8''@;'; put 'put ''fChNYXRoLnRydW5jPWZ1bmN0aW9uKGR0KXtyZXR1cm4gZHQ8MD9NYXRoLmNlaWwoZHQpOk1hdGguZmxvb3IoZHQpfSksTWF0aC50cnVuYz1NYXRoLnRydW5jO3ZhciBCbj1NYXRoLmFicyxJbj0oTWF0aCxNYXRoLE1hdGgsTWF0aCxNYXRoLE1hdGgsTWF0aCxNYXRoLE1hdGgsTWF0aC5zcXJ0''@;'; put 'put ''KSxKbj1NYXRoLmNlaWwsb3I9TWF0aC5mbG9vcixncj1NYXRoLnBvdyxScj0oTWF0aCxNYXRoLE1hdGgsTWF0aC5taW4pLG4wPShNYXRoLE1hdGgsTWF0aCwwKSxkMD1udWxsLG0wPW51bGw7ZnVuY3Rpb24gRGkoZHQpe24wKyssai5tb25pdG9yUnVuRGVwZW5kZW5jaWVzJiZqLm1vbml0b3JS''@;'; put 'put ''dW5EZXBlbmRlbmNpZXMobjApfWZ1bmN0aW9uIFcwKGR0KXtpZihuMC0tLGoubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmai5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKG4wKSwwPT1uMCYmKG51bGwhPT1kMCYmKGNsZWFySW50ZXJ2YWwoZDApLGQwPW51bGwpLG0wKSl7dmFyIEl0PW0wO20wPW51''@;'; put 'put ''bGwsSXQoKX19ai5wcmVsb2FkZWRJbWFnZXM9e30sai5wcmVsb2FkZWRBdWRpb3M9e307dmFyIEVvPW51bGwscW89ImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCwiO2Z1bmN0aW9uIGNhKGR0KXtyZXR1cm4gU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoP2R0LnN0YXJ0''@;'; put 'put ''c1dpdGgocW8pOjA9PT1kdC5pbmRleE9mKHFvKX12YXIgbGw9W2Z1bmN0aW9uKGR0LEl0KXt2YXIgUHQ9RihkdCksZmU9RihJdCk7dm4uY3JlYXRlUGF0aCgiLyIsVTAuZGlybmFtZShQdCkpLHZuLndyaXRlRmlsZShVMC5qb2luKCIvIixQdCksZmUpfV07ZnVuY3Rpb24gUWkoZHQsSXQsUHQp''@;'; put 'put ''e3JldHVybiBsbFtkdF0oSXQsUHQpfXl0PVRlKzE5NzIzMixxdC5wdXNoKCksRW89ImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCxBQUFBQUFBQThEOEFBQUFBQUFEd1B3QUFBQUFBQVBBL0FBQUFBQUFBOEQ4QUFBQUFBQUR3UHdBQUFBQUFBUEEvQUFBQUFBQUE4RDhBQUFB''@;'; put 'put ''QUFBRHdQd0FBQUFBQUFQQS9BQUFBQUFBQThEOEFBQUFBQUFEd1B3QUFBQUFBQVBBL0FDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBQUFBQUFBQUFBSU1FQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlNRQUFBQUFBQUFGSkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkpBQUFBQUFBQUFVa0FBSU1FQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQUFBQUFBQUFBQUFB''@;'; put 'put ''QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlNRQUFBQUFBQUFGSkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkpBQUFBQUFBQUFVa0FDRUFBQUFBQUFBQUFBQUFBQUFC''@;'; put 'put ''QkFvQzhBQUFnQUFBQUJBQUFBQUFBQUFBSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQ1dRQUFBQUFBQWdKWkFCSkREQUFBQUFBQUFBQUFBQUFBUVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVdFQUFBQUFBQUFCWVFBQUFEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQllRQUFBQUFBQUFGaEFBQUFBQUFBQUFBQUFBQUFBQUFBUVFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVrQUFBQUFBQUFCU1FBQWdBd0lBQUFBQUFBQUFBQUFBRUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUFBQUFBQUFBQUFBQUFBQUFBQkNRQUFBQUFBQUFFSkFBQUFBQUFBZ2cwQUFB''@;'; put 'put ''QUFBQU1DSVFBQUFBQUFBQUZKQUFBQUFBQUFBVWtBQUFBQUFBQUFBQUFBQUFBQUFBRUpBQUFBQUFBQUFRa0FBQUFBQUFDQ0RRQUFBQUFBQXdJaEFBQUFBQUFBQVVrQUFBQUFBQUFCU1FBQ3d3UUFBQUFBQUFBQUFBQUFBRUVCQU5nQUFrd0FBQUFFQUFBQUFBQUFBUUFFQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZKQUFBQUFBQUFBVWtBQUVBQUNBQUFBQUFBQUFBQUFBQkJBQUFBQUFBQUFBQUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJZUUFB''@;'; put 'put ''QUFBQUFBRmhBQUxEQkFBQUFBQUFBQUFBQUFBQUFBQnc2QUFBUUFBQUFBUUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFXRUFBQUFBQUFBQllRRUFnUGdNQUFBQUFBQUFBQUFBQUVFQWtPd0FBZWdBQUFBRUFBQUFB''@;'; put 'put ''QUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGSkFBQUFBQUFBQVVrQUFBQUFBQUFBQUFBQUFBQUFBQUJCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFCU1FBQUFBQUFBQUZKQS8vLy8vLy8vNzMvLy8vLy8vLy92Zi8vLy8vLy8vKy8vLy8vLy8vLy83LzhBQUFBQUFBRDRQek16TXpNek05TS9QQUFBQUFBQUFBQ2FtWm1abVptcFB3RUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUR3UHdFQUFBQUFBQUFBQWdBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBRHdQd0lBQUFBQUFBQUFBd0FBQUFBQUFBQUFBQUFBQUFEZ1B3TUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUR3UHdRQUFBQUFBQUFBQlFBQUFBQUFBQUF6TXpNek16UHpQd1VBQUFBQUFBQUFCZ0FBQUFBQUFBQ2FtWm1abVpucFB3WUFBQUFBQUFBQUJ3QUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUR3UHdjQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBRGdQd2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUVBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBUUFBQUFFQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFNek16TXpNejA3OEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBREFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQWdFWkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBbXBtWm1abVoyYjhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBek16TXpNelBqUHdBQUFBQUFBQUFBQUFBQUFBRUFBQUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFleFN1''@;'; put 'put ''UitGNjVMOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFB''@;'; put 'put ''QUFIQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVBQUFBQUFBQUFBQUVBQUFBVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUJyNFZRQUFBUUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBSUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBSUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFEQUFBQUFBQUFBQUFBQUFBQWdHWkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFnR1pBbXBtWm1abVoyYjhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUZBQUFBQUFBQUFBQUFBQUFBZ0daQWV4U3VSK0Y2NUw4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFnRVpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmdBQUFBQUFBQUFBUUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQVFBQUFBRUFBQUFC''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCZ0FBQUFBQUFBQUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZQUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBY0FBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCRUFBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQklBQUFBQUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJN''@;'; put 'put ''QUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlVBQUFBQUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFvQUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc0FBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdBQUFBQUFBQUFB''@;'; put 'put ''QUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEwQUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBNEFBQUFBQUFBQUFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQThBQUFBQUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCWUFBQUFBQUFBQUFBRUFBQUFFQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmdBQUFBQUFBQUFBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJjQUFBQUFBQUFBQUFFQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFCa0FBQUFBQUFBQUFBRUFBQUFLQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR3VlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUEMvQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFB''@;'; put 'put ''QUFBQU5BL0FBQUFBQUFBMEQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvQUFBQUFBQUEwRDhBQUFBQUFBRFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvQUFBQUFBQUEwRDhBQUFBQUFBRFFQd0FBQUFBQUFO''@;'; put 'put ''QS9BQUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvQUFBQUFBQUEwRDhBQUFBQUFBRFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ4QUFBQUFBQURRUDFpb05jMDdUdFUvSlhV''@;'; put 'put ''Q21nZ2IyajhBQUFBQUFBRGdQd0FBQUFBQUFPQS9MTlNhNWgybjZqOXEzbkdLanVUb1AxaW9OYzA3VHRVL1dLZzF6VHRPMVQ5WXFEWE5PMDdWUHdBQUFBQUFBT0EvWGR4R0EzZ0w0ajhBQUFBQUFBRFFQMWlvTmMwN1R0VS9BQUFBQUFBQTBEL1R2T01VSGNuUlB3QUFBQUFBQU9BL0FBQUFBQUFB''@;'; put 'put ''NEQ4QUFBQUFBQURnUHdBQUFBQUFBT0EvQUFBQUFBQUE0RDhBQUFBQUFBRGdQd0FBQUFBQUFPQS9BQUFBQUFBQTREOEFBQUFBQUFEZ1B3QUFBQUFBQU9BLzA3empGQjNKMFQvVHZPTVVIY25SUDEzY1JnTjRDK0kvWGR4R0EzZ0w0ajlkM0VZRGVBdmlQdzF4ckl2YmFOdy9aRjNjUmdONDdUL1Ni''@;'; put 'put ''MThIemhublB4QjZOcXMrVitVL0VIbzJxejVYNVQvU2IxOEh6aG5uUDNnTEpDaCtqT00vdFJYN3krN0o0VC9TYjE4SHpobm5QOUp2WHdmT0dlYy9XS2cxelR0TzFUK0loVnJUdk9QWVA5SnZYd2ZPR2VjL2VBc2tLSDZNNHovRVFxMXAzbkhzUDlKdlh3Zk9HZWMvMG05ZkI4NFo1eisxRmZ2TDdz''@;'; put 'put ''bmhQOUp2WHdmT0dlYy9FSG8ycXo1WDVUKzFGZnZMN3NuaFAzZ0xKQ2grak9NLzBtOWZCODRaNXovU2IxOEh6aG5uUDRZNDFzVnROTzQvMG05ZkI4NFo1ei9TYjE4SHpobm5QM2dMSkNoK2pPTS9XS2cxelR0TzFUL1R2T01VSGNuUlAxaW9OYzA3VHRVL3BncEdKWFVDM2o4QUFBQUFBQURnUDFp''@;'; put 'put ''b05jMDdUdFUvRFhHc2k5dG8zRDhBQUFBQUFBRGdQdzF4ckl2YmFOdy9BQUFBQUFBQTREOE5jYXlMMjJqY1AxaW9OYzA3VHRVL0FBQUFBQUFBNEQ4QUFBQUFBQURnUDlPODR4UWR5ZEUvMDd6akZCM0owVDhBQUFBQUFBRGdQOU84NHhRZHlkRS9hdDV4aW83azZEOEFBQUFBQUFEZ1B3QUFBQUFB''@;'; put 'put ''QU9BL0FBQUFBQUFBNEQ4QUFBQUFBQURnUDFpb05jMDdUdFUvaUlWYTA3emoyRC9Udk9NVUhjblJQd0FBQUFBQUFPQS9BQUFBQUFBQTREL1NiMThIemhublB3QUFBQUFBQU9BL0FBQUFBQUFBNEQ4TmNheUwyMmpjUC9Sc1ZuMnV0dDQvRVRZOHZWS1d5VC8wYkZaOXJyYmVQenNCVFlRTlQrRS9B''@;'; put 'put ''QUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvQUFBQUFBQUEwRDhBQUFBQUFBRFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvQUFBQUFB''@;'; put 'put ''QUEwRDhBQUFBQUFBRFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvQUFBQUFBQUEwRDhBQUFBQUFBRFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ4''@;'; put 'put ''QUFBQUFBQURRUHdBQUFBQUFBTkEvQUFBQUFBQUEwRDlZcURYTk8wN1ZQd0FBQUFBQUFPQS9BQUFBQUFBQTREOCs2Tm1zK2x6RlB3QUFBQUFBQU9BL0FBQUFBQUFBNEQ4QUFBQUFBQURnUHdBQUFBQUFBT0EvZ25OR2xQWUd4ejhOY2F5TDIyamNQd0FBQUFBQUFPQS9XS2cxelR0TzFUOVlxRFhO''@;'; put 'put ''TzA3VlA3VVYrOHZ1eWVFL3RSWDd5KzdKNFQ4QUFBQUFBQURRUHdBQUFBQUFBT0EvQUFBQUFBQUE0RDhBQUFBQUFBRGdQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEg4QlpJVVB6Y1A2SzBOL2pDWk5ZL1dLZzF6VHRPMVQ4TmNheUwyMmpjUHcxeHJJdmJhTncvQUFBQUFBQUE0RDhBQUFBQUFBRHdQ''@;'; put 'put ''d0FBQUFBQUFQQS9BQUFBQUFBQTBEOE5jYXlMMjJqY1B3QUFBQUFBQU5BL1dLZzF6VHRPMVQ5WXFEWE5PMDdWUDFpb05jMDdUdFUvV0tnMXpUdE8xVDlZcURYTk8wN1ZQMWlvTmMwN1R0VS9XS2cxelR0TzFUOVlxRFhOTzA3VlB3QUFBQUFBQU5BL1dLZzF6VHRPMVQ5WXFEWE5PMDdWUHdBQUFB''@;'; put 'put ''QUFBTkEvV0tnMXpUdE8xVDlZcURYTk8wN1ZQMWlvTmMwN1R0VS9BQUFBQUFBQThEOEFBQUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvQUFBQUFBQUEwRDhBQUFBQUFBRFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFBQUFBQU5B''@;'; put 'put ''L0FBQUFBQUFBMEQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvQUFBQUFBQUEwRDhBQUFBQUFBRFFQOFJDclduZWNldy9BQUFBQUFBQTBEOS8yVDE1V0tqUlB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvZUFza0tINk00ei9TYjE4SHpobm5QOFJDclduZWNldy9FL0pC''@;'; put 'put ''ejJiVjB6OEFBQUFBQUFEUVB3QUFBQUFBQU5BL0FBQUFBQUFBMEQ4QUFBQUFBQURRUHdBQUFBQUFBTkEvRUhvMnF6NVg1VDhBQUFBQUFBRFFQd0FBQUFBQUFOQS9BQUFBQUFBQTBEL1R2T01VSGNuUlB3QUFBQUFBQU5BL0FBQUFBQUFBMEQvVHZPTVVIY25SUHdBQUFBQUFBT0EvMG05ZkI4NFo1''@;'; put 'put ''ejhBQUFBQUFBRGdQd0FBQUFBQUFOQS9BQUFBQUFBQTBEOEFBQUFBQUFEUVB3QUFBQUFBQU5BL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJo''@;'; put 'put ''dDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRM''@;'; put 'put ''alAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhh''@;'; put 'put ''RzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhN''@;'; put 'put ''dU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vk''@;'; put 'put ''b2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdF''@;'; put 'put ''eTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlS''@;'; put 'put ''Mmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZ''@;'; put 'put ''VExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAx''@;'; put 'put ''SGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4''@;'; put 'put ''aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0v''@;'; put 'put ''VWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2Jm''@;'; put 'put ''R0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6''@;'; put 'put ''OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0''@;'; put 'put ''OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExq''@;'; put 'put ''UDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFH''@;'; put 'put ''M3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ejlSMmh0OFlUTGpQMUhhRzN4aE11TS9VZG9iZkdFeTR6OVIyaHQ4WVRMalAxSGFHM3hoTXVNL1Vkb2JmR0V5NHo5UjJodDhZVExqUDFIYUczeGhNdU0vVWRvYmZHRXk0ei9Udk9NVUhjblJQOU84NHhRZHlk''@;'; put 'put ''RS8wN3pqRkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQvVHZPTVVIY25SUDlPODR4UWR5ZEUvMDd6akZCM0owVC9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQvVHZPTVVIY25SUDlPODR4UWR5ZEUvMDd6''@;'; put 'put ''akZCM0owVC9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQvVHZPTVVIY25SUDlPODR4UWR5ZEUvMDd6akZCM0owVC9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNK''@;'; put 'put ''MFQvVHZPTVVIY25SUC9Sc1ZuMnV0dFkvdFJYN3krN0o0VCsxRmZ2TDdzbmhQOFJDclduZWNldy9FSG8ycXo1WDVULzEyOWVCYzBiTVAxaW9OYzA3VHRVL1dLZzF6VHRPMVQrSWhWclR2T1BZUHdGTmhBMVByK0kvMDd6akZCM0owVDlZcURYTk8wN1ZQOU84NHhRZHlkRS8wN3pqRkIzSjBUKzFG''@;'; put 'put ''ZnZMN3NuaFA3VVYrOHZ1eWVFL3RSWDd5KzdKNFQrMUZmdkw3c25oUDdVVis4dnV5ZUUvdFJYN3krN0o0VCsxRmZ2TDdzbmhQN1VWKzh2dXllRS90Ulg3eSs3SjRUKzFGZnZMN3NuaFA5Tzg0eFFkeWRFLzA3empGQjNKMFQ4QlRZUU5UNi9pUHdGTmhBMVByK0kvQVUyRURVK3Y0aisxRmZ2TDdz''@;'; put 'put ''bmhQOHhkUzhnSFBmQS9FSG8ycXo1WDVUOFFlamFyUGxmbFA5SnZYd2ZPR2VjLzBtOWZCODRaNXo4UWVqYXJQbGZsUDNnTEpDaCtqT00vYXQ1eGlvN2s2RC9TYjE4SHpobm5QOU84NHhRZHlkRS9BQUFBQUFBQTREOFFlamFyUGxmbFA3VVYrOHZ1eWVFL0xOU2E1aDJuNmovU2IxOEh6aG5uUDJy''@;'; put 'put ''ZWNZcU81T2cvRUhvMnF6NVg1VDlxM25HS2p1VG9QOUp2WHdmT0dlYy9FSG8ycXo1WDVUOTRDeVFvZm96alA5SnZYd2ZPR2VjL0VIbzJxejVYNVQrR09OYkZiVFR1UHhCNk5xcytWK1UvRUhvMnF6NVg1VDk0Q3lRb2ZvempQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlA2WUtSaVYx''@;'; put 'put ''QXQ0L3RSWDd5KzdKNFQ5SXYzMGRPR2ZNUDdVVis4dnV5ZUUvdFJYN3krN0o0VDhBQUFBQUFBRGdQN1VWKzh2dXllRS90Ulg3eSs3SjRUL1R2T01VSGNuUlA3VVYrOHZ1eWVFL3RSWDd5KzdKNFQ5SXYzMGRPR2ZNUDBpL2ZSMDRaOHcvQUFBQUFBQUE0RDlJdjMwZE9HZk1QeXpVbXVZZHArby90''@;'; put 'put ''Ulg3eSs3SjRUKzFGZnZMN3NuaFA3VVYrOHZ1eWVFL3RSWDd5KzdKNFQ5WXFEWE5PMDdWUHdBQUFBQUFBT0EvMDd6akZCM0owVCsxRmZ2TDdzbmhQd0FBQUFBQUFPQS8wbTlmQjg0WjV6OEFBQUFBQUFEZ1B3QUFBQUFBQU9BL0FBQUFBQUFBNEQ4Q21nZ2JubDdWUCtDK0Rwd3pvdEEvQXBvSUc1''@;'; put 'put ''NWUxVDhCVFlRTlQ2L2lQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQvVHZPTVVIY25SUDlPODR4UWR5ZEUvMDd6akZCM0owVC9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQv''@;'; put 'put ''VHZPTVVIY25SUDlPODR4UWR5ZEUvMDd6akZCM0owVC9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQvVHZPTVVIY25SUDlPODR4UWR5ZEUvMDd6akZCM0owVC9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01V''@;'; put 'put ''SGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQvVHZPTVVIY25SUDlPODR4UWR5ZEUvV0tnMXpUdE8xVCsxRmZ2TDdzbmhQN1VWKzh2dXllRS9QdWpaclBwY3hUKzFGZnZMN3NuaFA3VVYrOHZ1eWVFL3RSWDd5KzdKNFQrMUZmdkw3c25oUHgwNFowUnBiOGcvV0tnMXpUdE8xVCsxRmZ2TDdzbmhQ''@;'; put 'put ''MWlvTmMwN1R0VS9XS2cxelR0TzFUOEFBQUFBQUFEZ1B3QUFBQUFBQU9BLzA3empGQjNKMFQrMUZmdkw3c25oUDdVVis4dnV5ZUUvdFJYN3krN0o0VC9Udk9NVUhjblJQOU84NHhRZHlkRS81eDJuNkVndTRUK2l0RGY0d21UV1AwaS9mUjA0Wjh3L1dLZzF6VHRPMVQ5WXFEWE5PMDdWUDdVVis4''@;'; put 'put ''dnV5ZUUvQUFBQUFBQUE4RDhBQUFBQUFBRHdQOU84NHhRZHlkRS9lQXNrS0g2TTR6L1R2T01VSGNuUlAxaW9OYzA3VHRVL1dLZzF6VHRPMVQ5WXFEWE5PMDdWUDFpb05jMDdUdFUvV0tnMXpUdE8xVDlZcURYTk8wN1ZQMWlvTmMwN1R0VS9XS2cxelR0TzFUL1R2T01VSGNuUlAxaW9OYzA3VHRV''@;'; put 'put ''L1dLZzF6VHRPMVQvVHZPTVVIY25SUDFpb05jMDdUdFUvV0tnMXpUdE8xVDlZcURYTk8wN1ZQd0FBQUFBQUFQQS8wN3pqRkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQvVHZPTVVIY25SUDlPODR4UWR5ZEUvMDd6akZCM0owVC9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pq''@;'; put 'put ''RkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQvVHZPTVVIY25SUDlPODR4UWR5ZEUvMDd6akZCM0owVDhBQUFBQUFBRHdQOU84NHhRZHlkRS82cFd5REhHczF6L1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQvVHZPTVVIY25SUDdVVis4dnV5ZUUvYXQ1eGlvN2s2''@;'; put 'put ''RDhBQUFBQUFBRHdQNWpkazRlRld0Yy8wN3pqRkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFkeWRFLzA3empGQjNKMFQvVHZPTVVIY25SUDhSQ3JXbmVjZXcvMDd6akZCM0owVC9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlA5Tzg0eFFkeWRFL1NMOTlIVGhuekQ5NEN5''@;'; put 'put ''UW9mb3pqUDRZNDFzVnROTzQvZUFza0tINk00ei9Udk9NVUhjblJQOU84NHhRZHlkRS8wN3pqRkIzSjBUL1R2T01VSGNuUlAxR2dUK1JKMGc1QXRNaDJ2cDg2TmNBNkl0K2wxQ1hWdi9PQ1BrZWFMb28vbitWNWNIZlcrYjkrL1JBYkxKem1QNWJzMkFqRTY4dy96YzZpZHlyZzBEK3c0NzlBRUNE''@;'; put 'put ''dHY2MmgxRjVFMjlnL082Rjg1bEdXZGovVGJuRDVlb1I3UDRITXpxSjNLdVMvMGEzWDlLQ2d5RDlxM3pjWnNEK0VQNzdLa0JsZS80US9ISllHZmxURHhMK2xTU25vOXVJalFLblpBNjNBa01FL0NNU1FRWk5waVQvNlJKNGtYVFBRdndId21UWXR3bDQvRFp4OUw4K1VseitKdGZnVUFPT0pQK1dw''@;'; put 'put ''V0VZMHk3Ry9qd0RKejZGbnByOWN0Y2I3ekxTSVAwMmtqMVE2czVBLzVzY0VvV0hXb0wvSGFXY2NFL2VDdnlwL2ErVXRjRnkvNUZkaVZBaWFkVC9SOFlkVmNnUzNQNVhVQ1dnaVBEUEFaQ01Rcit0M0VNQ25JYXJ3WjNqSFA5ci9BR3ZWcnNFL1RpaEV3Q0ZVOTcrcVNJV3hoU0QxUDUxb1Z5SGxK''@;'; put 'put ''L1kvVFM3R3dEcU96VDlaYXlpMUY5SGN2d00vcW1HL0o4dy9wa2RUUFpsLzJqKzJnVHRRcHp5dVAxRk0zZ0F6MzdtLzlYYVYvOW9McGovVXBUVzhEL2FVUHgrdElMd3MzSkEvS0N6eGdMTEpJMEFqV3VGTUFvcTNQMGlqWlZHV0tYOC91N1NHOThHZWt6OFhxSHRUUjMyZ3Z5RXJydUJ0bElzL00z''@;'; put 'put ''UGNoTllldGIrZ2VJU0o5ZnlQUDJrMUpPNng5SkcvdU0wemVsNi9haitTUHEyaVB6VE52MzZ3NThaUFBwaS9CeU9iVUMzSHBEOCtHTUo3V0xtUnZ5MThmYTFMamNZL0FBQUFRUHNoK1Q4QUFBQUFMVVIwUGdBQUFJQ1lSdmc4QUFBQVlGSE1lRHNBQUFDQWd4dndPUUFBQUVBZ0pYbzRBQUFBZ0NL''@;'; put 'put ''QzR6WUFBQUFBSGZOcE5RQUFBQUFBQVBDL3ZBUUJBT2dxQUFBREFBQUFFQzBBQUFNQUFBRG9Md0FBQXdBQUFMQXdBQUFEQUFBQUFESUFBQU1BQUFCNE5RQUFBd0FBQUxRNEFBQURBQUFBeEM0QUFBTUFBQUI4T1FBQUF3QUFBSVE2QUFBREFBQUFFRDhBQUFNQUFBQTBQUUFBQUFBQUFOUXNBQUFB''@;'; put 'put ''QUFBQXdDOEFBQUFBQUFBUU1BQUFBQUFBQU5neEFBQUFBQUFBS0RJQUFBQUFBQUNNT0FBQUFBQUFBR0F1QUFBQUFBQUFWRGtBQUFBQUFBQmNPZ0FBQUFBQUFPZytBQUFBQUFBQUREMEFBQVFBQUFBNFB3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUNBQUFBQVFBQUFBRUFBQUFEQUFBQUFBQUFBQUFBQUFBSTJRSUFHTmtDQUNqWkFnQTQyUUlBU05rQ0FGalpBZ0JvMlFJQWVOa0NBQmpaQWdB''@;'; put 'put ''WTJRSUFXTmtDQUZqWkFnQWZBQUFBUHdBQUFIOEFBQUFBQUFBQW9vVUJBQUVBQUFDb0t3QUFhQUFBQUFRQUFBRFZDQUVBQVFBQUFDQXNBQUNJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBY0FVQkFBRUFBQUFBQUFBQTRBQUFBQUFBQUFCNEJRRUFBUUFBQUFBQUFBRGdBQUFB''@;'; put 'put ''QVFBQUFIOEZBUUFCQUFBQUFBQUFBS2dBQUFBQ0FBQUFpUVVCQUFFQUFBQUFBQUFBNEFBQUFBTUFBQUNUQlFFQUFRQUFBQUFBQUFEZ0FBQUFCQUFBQUtFRkFRQUJBQUFBQUFBQUFPQUFBQUFGQUFBQXF3VUJBQUVBQUFBQUFBQUE0QUFBQUFZQUFBQzRCUUVBQVFBQUFBQUFBQURnQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUFBQUFIQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFJQUFBQS8vLy8vd0FBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTJnZ0JBQUVBQUFERUxRQUFHQUVBQUFFQUFBRGZDQUVBQVFBQUFNUXRBQUFZQVFBQUFnQUFBT1VJQVFBQkFBQUF4QzBBQUJnQkFBQURBQUFBN2dnQkFBRUFBQURFTFFB''@;'; put 'put ''QUdBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQZ0lBUUFCQUFBQUFBQUFBSEFCQUFBQkFBQUFBZ2tCQUFFQUFBQUFBQUFBY0FFQUFBSUFBQUFOQ1FFQUFRQUFBQUFBQUFBNEFRQUFBd0FBQUJzSkFRQUJBQUFBQUFBQUFEZ0JBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQ0FBQUFBa0FBQUFBQUFBQUFBQUFBQW9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUN3QUFBQXdBQUFBTkFBQUFEZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFBQUFRQUFBQVlBQUFBQ0FBQUFBZ0FBQUFjQUFBQUNBQUFBQUFBQUFHSVlB''@;'; put 'put ''Z0JuQVFJQStBSUNBRGdKQWdBdkVBSUFiaFFDQU80WEFnRC9Gd0lBQUFBQUFHSUpBUUFCQUFBQUtDOEFBS2dCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJtQ1FFQUFRQUFBQUFBQUFESUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQWJna0JBQUVBQUFBNE1B''@;'; put 'put ''QUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHdBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUtZS0FRQUJBQUFBQUFBQUFDQUNBQUFDQUFBQXNBb0JBQUVBQUFBQUFBQUFXQUlBQUFBQUFBQzVDZ0VBQVFBQUFBQUFBQUJZQWdBQUF3QUFBTUlLQVFBQkFBQUFBQUFBQUZnQ0FBQUFBQUFBekFvQkFBRUFBQUFBQUFBQUlBSUFBQU1B''@;'; put 'put ''QUFEWUNnRUFBUUFBQUFBQUFBQWdBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJFQUFBQVNBQUFBQUFBQUFBQUFBQUFUQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFBQUFWQUFBQUZnQUFBQmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQ0FBQUFBTUFBQUFKQUFBQUF3QUFBQU1BQUFBS0FBQUFCQUFBQUFBQUFBQmlHQUlBWndFQ0FEZ0pBZ0Q0QWdJQWJoUUNBQzhRQWdEL0Z3SUE3aGNDQUFBQUFBQUFBQUFBbFF3QkFQLy8vLzg4TVFBQWtBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKZ01BUUQvLy8vL0FB''@;'; put 'put ''QUFBTEFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNvalFFQUFRQUFBRkF5QUFEb0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZQUFBQUdRQUFBQm9BQUFBQUFBQUFCQUFBQUFBQUFBQWJBQUFBSEFBQUFCMEFBQUFlQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUI4''@;'; put 'put ''QUFBQWdBQUFBSVFBQUFDSUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFDd0FBQUFBQUFBQU1BQUFBQlFBQUFBUUFBQUFOQUFBQUJRQUFBQU1BQUFDVkVBRUFveEFCQUxrUUFRRHorUUlBeHhBQkFOWVFBUURiRUFFQStSQUJBUFA1QWdBTEVRRUFPeEVCQVBQNUFnQlpFUUVBZ1JFQkFJOFJBUUMr''@;'; put 'put ''RVFFQThoRUJBQU1TQVFBb0VnRUFTeElCQUZFU0FRQnRFZ0VBaWhJQkFLVVNBUURHRWdFQTRCSUJBQUlUQVFBaEV3RUFSeE1CQUY4VEFRQi9Fd0VBbkJNQkFNQVRBUURNRXdFQTgva0NBTmNUQVFEOUV3RUFJUlFCQUVjVUFRRHorUUlBZlJRQkFKVVVBUUNpRkFFQTBSUUJBTXdUQVFEeitRSUEz''@;'; put 'put ''aFFCQU9jVUFRQUlGUUVBUXhVQkFJNFZBUURpRlFFQUJCWUJBQmtXQVFBd0ZnRUFSaFlCQUY0V0FRRHorUUlBZEJZQkFJOFdBUUN6RmdFQTF4WUJBUHdXQVFEeitRSUFIUmNCQURjWEFRQkpGd0VBVmhjQkFHTVhBUUIzRndFQWhoY0JBSTRYQVFDakZ3RUFzUmNCQU84WEFRRDZGd0VBekJNQkFQ''@;'; put 'put ''UDVBZ0FBR0FFQURCZ0JBQnNZQVFCTEVnRUE4L2tDQUM0WUFRQlhHQUVBZFJnQkFJVVlBUUNXR0FFQW5SZ0JBS3dZQVFDOEdBRUFBQmtCQUFjWkFRQkxFZ0VBOC9rQ0FCRVpBUUE5R1FFQVNCa0JBRkVaQVFCYUdRRUFheGtCQUh3WkFRQ1FHUUVBekJNQkFQUDVBZ0NjR1FFQXJCa0JBTG9aQVFE''@;'; put 'put ''SUdRRUExUmtCQU9JWkFRRDRHUUVBQVJvQkFCQWFBUUFkR2dFQUxob0JBTXdUQVFEeitRSUFPUm9CQUZnYUFRRHorUUlBYWhvQkFIa2FBUUNwR2dFQXN4b0JBTUFhQVFETkdnRUEyaG9CQU9jYUFRRHFHZ0VBOC9rQ0FPNGFBUUR6K1FJQUVSc0JBRUliQVFCeEd3RUFpQnNCQUtNYkFRQytHd0VB''@;'; put 'put ''ekJNQkFQUDVBZ0RhR3dFQTgva0NBQUljQVFBT0hBRUFJUndCQURRY0FRQkpIQUVBWGh3QkFHSWNBUUJMRWdFQTgva0NBRzRjQVFEeitRSUFmaHdCQUl3Y0FRQ1lIQUVBcFJ3QkFNVWNBUURiSEFFQTgva0NBTzhjQVFBNEhRRUFmaDBCQUs0ZEFRRGhIUUVBNkIwQkFBOGVBUUEySGdFQTgva0NB''@;'; put 'put ''RHNlQVFBQUFBQUFBQUFBQVBCSEFRQUJBQUFBQUFBQUFBZ0RBQUFCQUFBQXJ4NEJBQUVBQUFBQUFBQUFDQU1BQUFJQUFBRHBSd0VBQVFBQUFBQUFBQUJBQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWpBQUFBQUFBQUFDUUFBQUFsQUFBQUJnQUFBQ1lBQUFBbkFBQUFLQUFBQUNrQUFB''@;'; put 'put ''QXFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3NBQUFBc0FBQUFMUUFBQUM0QUFBQUVBQUFBTHdBQUFBQUFBQUFBQUFBQURnQUFBQUFBQUFBUEFBQUFCd0FBQUFVQUFBQVFBQUFBQmdBQUFBQUFBQUIvQUFJQWlRQUNBSGt4QVFET0FBSUFDUUVDQUNzQkFnQXhBUUlBWWhnQ0FGZ0JBZ0JuQVFJ''@;'; put 'put ''QWhBRUNBSThCQWdDeEFRSUE1d0VDQUIwQ0FnQllBZ0lBamdJQ0FMQUNBZ0MvQWdJQThBSUNBUGdDQWdBL0pRRUFTQ1VCQUJVREFnQlJKUUVBWHdNQ0FGb2xBUUJwQXdJQVl5VUJBSE1EQWdEQ0F3SUEvUU1DQUc4bEFRQTRCQUlBUXdRQ0FJZ0VBZ0NXQkFJQTRBUUNBTzRFQWdEOEJBSUFCd1VD''@;'; put 'put ''QURnRkFnQjRCUUlBZ0FVQ0FJZ0ZBZ0REQlFJQStRVUNBQVVHQWdCK01RRUFFUVlDQUJzR0FnQW1CZ0lBUXdZQ0FIa0dBZ0E0Q1FJQVdna0NBR1lKQWdBbERBSUFWZ3dDQUlJTUFnQzREQUlBeFF3Q0FPY01BZ0FKRFFJQUVnMENBRndOQWdCbURRSUFxdzBDQU9FTkFnRHNEUUlBY1E0Q0FJWU9B''@;'; put 'put ''Z0IzSlFFQWtBNENBSm9PQWdEUURnSUFFQThDQUI0UEFnQnlEd0lBZ1E4Q0FKQVBBZ0RmRHdJQWhqRUJBQjhRQWdBcEVBSUFMeEFDQUZzUUFnQ0NFQUlBa3hBQ0FKNFFBZ0RqRUFJQUtCRUNBRGNSQWdCSEVRSUFXUkVDQUdrUkFnQjVFUUlBaGhFQ0FKQVJBZ0RHRVFJQXp4RUNBQThTQWdBaUVn''@;'; put 'put ''SUFpekVCQUNvU0FnQmdFZ0lBaHhJQ0FMMFNBZ0RrRWdJQThoSUNBQ2dUQWdCeUV3SUF2Qk1DQU1jVEFnRDlFd0lBQWhRQ0FCOFVBZ0E4RkFJQVJ4UUNBRzRVQWdDR0ZBSUF2QlFDQVBJVUFnRCtGQUlBSlJVQ0FEQVZBZ0JoRlFJQWtoVUNBSGc4QVFDNUZRSUE1UlVDQUJzV0FnQlJGZ0lBV3hZ''@;'; put 'put ''Q0FIZ1dBZ0M0RmdJQTdoWUNBSkV4QVFBR0Z3SUFNaGNDQUZrWEFnQ1BGd0lBekJjQ0FPNFhBZ0QwRndJQS94Y0NBQ1lZQWdBQUFBQUFxNDBCQUFFQUFBRElOUUFBZUFNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1kSUFRQUJBQUFBQUFBQUFKZ0RBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQURBQUFBQUFBQUFBTVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1nQUFBQUFBQUFBekFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSQUFBQUFBQUFBQklBQUFBSUFBQUFCZ0FBQUJNQUFBQUhB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUN0SmdFQUFRQUFBTnc0QUFEUUF3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNDWUJBQUVBQUFBQUFBQUE4QU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU5BQUFBQUFBQUFBMUFBQUFOZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUFBRGNBQUFBQUFBQUFBQUFBQUJRQUFBQUFBQUFBRlFBQUFBa0FBQUFIQUFBQUZnQUFBQWdBQUFBQUFBQUFlVEVCQUdJWUFnQm5BUUlBZmpFQkFIa0dBZ0E0Q1FJQWhqRUJBRnNRQWdBUEVnSUFpekVCQUVj''@;'; put 'put ''VUFnQnVGQUlBZUR3QkFKRXhBUUR1RndJQS94Y0NBQUFBQUFDV01RRUFBUUFBQUtRNUFBQW9CQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFtakVCQUFFQUFBQUFBQUFBU0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQUFBQUFBQUFBQTVBQUFBT2dBQUFBb0FBQUE3''@;'; put 'put ''QUFBQVBBQUFBRDBBQUFBK0FBQUFQd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQVFRQUFBRUlBQUFCREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCY0FBQUFBQUFBQUdBQUFBQXNBQUFBSUFBQUFHUUFBQUFrQUFBQUFBQUFBemdBQ0FBNDdBUUJpR0FJQVp3RUNBSVFCQWdBWk93RUFI''@;'; put 'put ''enNCQUNvN0FRQXhPd0VBandFQ0FPY0JBZ0E1T3dFQVB6c0JBRW83QVFDT0FnSUFzQUlDQVBnQ0FnQlJPd0VBWHdNQ0FITURBZ0Q5QXdJQVd6c0JBSWdFQWdDV0JBSUE0QVFDQUdZN0FRRHVCQUlBYmpzQkFIYzdBUUNGT3dFQWp6c0JBTU1GQWdDWU93RUFCUVlDQUNZR0FnQkRCZ0lBbmpzQkFJ''@;'; put 'put ''b0dBZ0MxQmdJQTNnWUNBQUVIQWdBcUJ3SUFUUWNDQUhZSEFnQ1pCd0lBd2djQ0FPVUhBZ0FPQ0FJQU1RZ0NBRm9JQWdCOUNBSUFwZ2dDQU1rSUFnRHlDQUlBRlFrQ0FEZ0pBZ0NsT3dFQVdna0NBTEU3QVFDQ0RBSUE1d3dDQUtzTkFnQytPd0VBa0E4Q0FNczdBUUFmRUFJQUx4QUNBTlU3QVFC''@;'; put 'put ''YkVBSUFnaEFDQUpNUUFnRGtPd0VBOWpzQkFKNFFBZ0FvRVFJQU54RUNBRWNSQWdCWkVRSUFhUkVDQUFZOEFRQVJQQUVBSER3QkFIa1JBZ0FQRWdJQUZCSUNBQ0U4QVFBcVBBRUFNendCQUVNOEFRQktQQUVBWUJJQ0FJY1NBZ0M5RWdJQThoSUNBQUlVQWdBZkZBSUFVandCQUc0VUFnQlpQQUVB''@;'; put 'put ''L2hRQ0FHSThBUUF3RlFJQWFqd0JBSklWQWdCNFBBRUF1UlVDQU9VVkFnQi9QQUVBZUJZQ0FMZ1dBZ0NKUEFFQTdoWUNBQVlYQWdCWkZ3SUFrendCQUtFOEFRQ1BGd0lBbGhjQ0FNd1hBZ0R1RndJQS94Y0NBQ1lZQWdBQUFBQUFzendCQUFFQUFBQ3NPZ0FBZ0FRQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUxjOEFRQUJBQUFBQUFBQUFLQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUkFBQUFFVUFBQUFBQUFBQUFBQUFBRVlBQUFCSEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFhQUFBQUFBQUFBQnNBQUFBTUFBQUFDUUFBQUJ3QUFBQUtBQUFBQUFBQUFFRkNBQUN3b1FFQVFVa0FBSXFoQVFCQlVnQUFYYUVCQUVGWUFBREZvUUVBUWlBQUFBR2tBUUJDU1FBQUVxUUJBRU5DQUFCS29nRUFRMDhBQURpaUFRQkRXQUFBVjZJQkFFZ2dBQUI3b2dF''@;'; put 'put ''QVNFSUFBSVdpQVFCSVNRQUFFYU1CQUVoWUFBQ1VvZ0VBU0dJQUFNV2lBUUJJYVFBQStLSUJBRWh5QUFDcW9nRUFTSGdBQU51aUFRQkpJQUFBSTZRQkFFdENBQURjb1FFQVMwa0FBQ1NpQVFCTFVnQUFFS0lCQUV0WUFBRDlvUUVBVGtJQUFDT2pBUUJPU1FBQWFxTUJBRTVTQUFDQ293RUFUbGdB''@;'; put 'put ''QUU2akFRQlFRUUFBNDZNQkFGQkNBQUNmb3dFQVVFa0FBTk9qQVFCUVdBQUF2Nk1CQUZJZ0FBRGFwUUVBVXlBQUFQS2pBUUJhUkFBQVlLUUJBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQmRSd0VBLy8vLy8xdzlBQURZQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWVVjQkFQLy8v''@;'; put 'put ''LzhBQUFBQStBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHdBQUFHbEhBUUFCQUFBQUlFTUFBQUFBQUFBUUFBQUFjVWNCQUFFQUFBQWdRd0FBQUFBQUFCRUFBQUI1UndFQUFRQUFBQ0JEQUFBQUFBQUFFUUFBQUlKSEFRQUJBQUFBSUVNQUFBQUFBQUFSQUFBQWlrY0JBQUVBQUFBZ1F3''@;'; put 'put ''QUFBQUFBQUJNQUFBQ1NSd0VBQVFBQUFDUkRBQUFBQUFBQUZBQUFBSnBIQVFBQkFBQUFKRU1BQUFBQUFBQVZBQUFBb2tjQkFBRUFBQUFrUXdBQUFBQUFBQlVBQUFDclJ3RUFBUUFBQUNSREFBQUFBQUFBRlFBQUFMTkhBUUFCQUFBQUpFTUFBQUFBQUFBV0FBQUF1MGNCQUFFQUFBQW9Rd0FBQUFB''@;'; put 'put ''QUFCY0FBQURFUndFQUFRQUFBQ2hEQUFBQUFBQUFHQUFBQU0xSEFRQUJBQUFBS0VNQUFBQUFBQUFZQUFBQTEwY0JBQUVBQUFBb1F3QUFBQUFBQUJnQUFBRGdSd0VBQVFBQUFDaERBQUFBQUFBQUdRQUFBT2xIQVFBQkFBQUFMRU1BQUFBQUFBQVpBQUFBOEVjQkFBRUFBQUFzUXdBQUFBQUFBQm9B''@;'; put 'put ''QUFEMlJ3RUFBUUFBQURCREFBQUFBQUFBQ2dBQUFQOUhBUUFCQUFBQU5FTUFBQUFBQUFBTEFBQUFCMGdCQUFFQUFBQTBRd0FBQUFBQUFBd0FBQUFQU0FFQUFRQUFBRFJEQUFBQUFBQUFEQUFBQUJoSUFRQUJBQUFBTkVNQUFBQUFBQUFNQUFBQUlFZ0JBQUVBQUFBMFF3QUFBQUFBQUE0QUFBQW9T''@;'; put 'put ''QUVBQVFBQUFEUkRBQUFBQUFBQURnQUFBQzlJQVFBQkFBQUFORU1BQUFBQUFBQU5BQUFBTjBnQkFBRUFBQUEwUXdBQUFBQUFBQVVBQUFBL1NBRUFBUUFBQURSREFBQUFBQUFBQmdBQUFFZElBUUFCQUFBQU5FTUFBQUFBQUFBSEFBQUFUMGdCQUFFQUFBQTBRd0FBQUFBQUFBY0FBQUJZU0FFQUFR''@;'; put 'put ''QUFBRFJEQUFBQUFBQUFCd0FBQUdCSUFRQUJBQUFBTkVNQUFBQUFBQUFKQUFBQWFFZ0JBQUVBQUFBMFF3QUFBQUFBQUFrQUFBQnZTQUVBQVFBQUFEUkRBQUFBQUFBQUNBQUFBSGRJQVFBQkFBQUFORU1BQUFBQUFBQUFBQUFBZjBnQkFBRUFBQUE0UXdBQUFBQUFBQUVBQUFDSVNBRUFBUUFBQURo''@;'; put 'put ''REFBQUFBQUFBQWdBQUFKRklBUUFCQUFBQU9FTUFBQUFBQUFBQ0FBQUFtMGdCQUFFQUFBQTRRd0FBQUFBQUFBSUFBQUNrU0FFQUFRQUFBRGhEQUFBQUFBQUFCQUFBQUsxSUFRQUJBQUFBT0VNQUFBQUFBQUFFQUFBQXRVZ0JBQUVBQUFBNFF3QUFBQUFBQUFNQUFBQytTQUVBQVFBQUFEaERBQUFB''@;'; put 'put ''QUFBQUVnQUFBTWRJQVFBQkFBQUFJRU1BQUFBQUFBQWJBQUFBejBnQkFBRUFBQUE4UXdBQUFBQUFBQndBQUFEWFNBRUFBUUFBQUR4REFBQUFBQUFBSFFBQUFOOUlBUUFCQUFBQVBFTUFBQUFBQUFBZEFBQUE2RWdCQUFFQUFBQThRd0FBQUFBQUFCMEFBQUR3U0FFQUFRQUFBRHhEQUFBQUFBQUFI''@;'; put 'put ''Z0FBQVBoSUFRQUJBQUFBUUVNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFSQUFBQUVnQUFBQk1BQUFBVUFBQUFGUUFBQUdOTUFRQk1Rd0FBQVFBQUFHaERBQUFBQUFBQUFBQUFBRWdBQUFCSkFBQUFBUUFBQUFBQUFBQ2loUUVBQUFBQUFG''@;'; put 'put ''eERBQUJrUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQWdBQUFBQUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBZ0FBQUFJQUFBQUJBQUFBQWdBQUFBUUFBQUFZQVFBQU1BRUFBTEFBQUFDSVZBRUFqVlFCQUpGVUFRQ1lWQUVBbkZRQkFBQUFBQUFCQUFBQUFnQUFBQU1BQUFB''@;'; put 'put ''RUFBQUFCUUFBQUFBQUFBQWRBQUFBQUFBQUFBQUFBQUFlQUFBQUFBQUFBQUFBQUFBZkFBQUFBQUFBQUFBQUFBQ1JXUUVBS0VRQUFBRUFBQUNBUkFBQUFBQUFBQUFBQUFCS0FBQUFTd0FBQUV3QUFBQk5BQUFBVGdBQUFFOEFBQUJRQUFBQVVRQUFBRklBQUFCVEFBQUFWQUFBQUVzQUFBQlZBQUFB''@;'; put 'put ''U3dBQUFGWUFBQUJYQUFBQVdBQUFBRmtBQUFBQUFBQUFubGtCQUFBQUFBQTRSQUFBS05zQ0FBRUFBQUNrV1FFQUFBQUFBRUJFQUFBbzJ3SUFBZ0FBQUtoWkFRQUFBQUFBU0VRQUFDamJBZ0FEQUFBQXJWa0JBQUFBQUFCUVJBQUFLTnNDQUFRQUFBQ3pXUUVBQUFBQUFGaEVBQUFvMndJQUJRQUFB''@;'; put 'put ''TGxaQVFBQUFBQUFjRVFBQUNqYkFnQUdBQUFBdzFrQkFBQUFBQUI0UkFBQUtOc0NBQWNBQUFESldRRUFBQUFBQUdCRUFBQW8yd0lBQndBQUFNMVpBUUFBQUFBQVlFUUFBQ2piQWdBSEFBQUEwbGtCQUFBQUFBQm9SQUFBS05zQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQURBQUFB''@;'; put 'put ''QUFBQUFBQVFBQUFDQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0FBQUFRQUFBQUFBQUFBUEdjQkFGUm5BUUJ6WndFQWtHY0JBSzluQVFDMlp3RUF2MmNCQUR4bkFRQkJad0VBU0djQkFFMW5BUURlWmdFQThHWUJBUDVtQVFBTVp3RUFHbWNCQUNGbkFRQXdad0VBUEdjQkFBQUFBQUR6K1FJ''@;'; put 'put ''QUFBQUFBQjBTQWdBQkFBQUErR2tCQUFjQUFBQzhhUUVBQXdBQUFNWWxBZ0FGQUFBQUFHb0JBQThBQUFDUWpRRUFDQUFBQUpDTkFRQVFBQUFBQ0dvQkFBUUFBQUFJYWdFQUVRQUFBQTFxQVFBRkFBQUFEV29CQUFJQUFBQVRhZ0VBQmdBQUFCcHFBUUFFQUFBQUptb0JBQWNBQUFBdWFnRUFCd0FB''@;'; put 'put ''QUQ1cUFRQUZBQUFBUkdvQkFBZ0FBQUJiYWdFQUNBQUFBRVJxQVFBSkFBQUFaR29CQUFjQUFBQnNhZ0VBQ2dBQUFJWnFBUUFIQUFBQWptb0JBQXNBQUFDb2FnRUFCZ0FBQUs5cUFRQU1BQUFBeldvQkFBa0FBQUN2YWdFQURRQUFBTmRxQVFBSUFBQUE0R29CQUE0QUFBQUJhd0VBQ0FBQUFBcHJB''@;'; put 'put ''UUFTQUFBQUsyc0JBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQURBQUFBQUlBQUFBQUFBQUFBd0FBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFFQUFBQUFBQUFBQU1BQUFBaEFB''@;'; put 'put ''QUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFFQUFBQUFBQUFBQVFBQUFBaUFBQUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFBQUJBQUFBQWlFY0FBSmhIQUFBR0FBQUFCQUFBQUtSSEFBQUdBQUFBQ0FBQUFBWUFBQUFFQUFBQXJFY0FBQUFFQUFBSUFBQUEvLy8vL3dBQUFBQUFBQUFBSXdB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFHQUFBQUFBQUFBQWNBQUFBQUFBQUFBQUFBQUFBQUFBRC8vLy8vQUFBQUFBQUFBQUFHQUFBQUFBQUFBQWNBQUFBQUFBQUFBQUFBQUFBQUFBQVlBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQWNB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBRC8vLy8vQUFBQUFBQUFBQUFJQUFBQUFBQUFBQWNBQUFBQUFBQUFBQUFBQUFBQUFBQWNBQUFBQUFBQUFBQUFBQUFKQUFBQUFBQUFBQWNBQUFBQUFBQUFDUUFBQUFzQUFBQUlBQUFBQ2dBQUFEQkpBQUMwU0FBQUdFa0FBQUVBQUFBQkFBQUFDZ0FBQUJZQUFBQUxB''@;'; put 'put ''QUFBV2dBQUFDUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3QUFBQUFBQUFBQndBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUEwQUFBQUFBQUFBQndBQUFBQUFBQUFIQUFBQUFnQUFBQVVBQUFBSUFBQUFBQUFBQUFBQUFBQUdBQUFBQXdBQUFBNEFBQUFMQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBRHdBQUFBQUFBQUFIQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWxBQUFBRUFBQUFBQUFBQUFIQUFBQUFBQUFBQWdBQUFBSUFBQUFBQUFBQUFBQUFBQW1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFELy8vLy9BQUFBQUFB''@;'; put 'put ''QUFBQW5BQUFBQUFBQUFBQUFBQUFIQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQ0FBQUFBd0FBQUFFQUFBQUJBQUFBQWdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFC''@;'; put 'put ''QUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFCQUFBQUJBQUFBQVVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFHQUFBQUFRQUFBQUVBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ2dBQUFBb0FBQUFLQUFBQUNnQUFBQW9BQUFBS0FBQUFD''@;'; put 'put ''Z0FBQUFvQUFBQUtBQUFBQVFBQUFBRUFBQUFMQUFBQUFRQUFBQXdBQUFBQkFBQUFEUUFBQUE0QUFBQVBBQUFBRUFBQUFCRUFBQUFTQUFBQUV3QUFBQlFBQUFBVkFBQUFGZ0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFYQUFBQUdBQUFBQmtBQUFBVEFBQUFHZ0FBQUJzQUFBQWNBQUFBSFFBQUFC''@;'; put 'put ''TUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFBUUFBQUI0QUFBQUJBQUFBQVFBQUFCTUFBQUFCQUFBQUh3QUFBQ0FBQUFBaEFBQUFJZ0FBQUNNQUFBQVRBQUFBSkFBQUFDVUFBQUFtQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUNjQUFBQW9BQUFBS1FBQUFCTUFBQUFxQUFBQUt3QUFBQ3dBQUFB''@;'; put 'put ''dEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFB''@;'; put 'put ''RXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFB''@;'; put 'put ''Qk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUxnQUFBQk1BQUFBVEFBQUFFd0FBQUM4QUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFB''@;'; put 'put ''QVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFEQUFBQUFUQUFB''@;'; put 'put ''QUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBRXdBQUFCTUFBQUFUQUFBQUV3QUFBQk1BQUFBVEFBQUFFd0FBQUJNQUFBQVRBQUFBQUFBQUFBRUFBQUFCQUFBQUFnQUFBQU1BQUFBQkFBQUFCQUFBQUFFQUFBQUZBQUFBQVFBQUFBWUFBQUFIQUFBQUJ3QUFBQUVBQUFBR0FBQUFCZ0FB''@;'; put 'put ''QUFZQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUF3QUFBQVlBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFBQmdBQUFBWUFB''@;'; put 'put ''QUFHQUFBQUJnQUFBSUFBQUFCNXN3RUFXck1CQUNCOEFRQ0dzd0VBZnJNQkFJeXpBUUFBQUFBQUpvQUJBQytBQVFBMmdBRUFSSUFCQUhxeUFRQ2lzd0VBUzRBQkFGS0FBUUFCQUFBQUNBQUFBUC8vLy84QUFBQUFBQUFBQUNnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQThJRUJBQWdBQUFBREFB''@;'; put 'put ''QUErWUVCQVAyQkFRQUxBQUFBQmdBQUFLaU5BUUFKZ2dFQUFnQUFBQUVBQUFBTWdnRUFFSUlCQUFRQUFBQUNBQUFBRllJQkFCbUNBUUFFQUFBQUJBQUFBQjZDQVFBamdnRUFCUUFBQUFVQUFBQXBnZ0VBTFlJQkFBUUFBQUFIQUFBQU1vSUJBRGFDQVFBRkFBQUFDUUFBQUR5Q0FRQkFnZ0VBQkFB''@;'; put 'put ''QUFBb0FBQUJGZ2dFQVNvSUJBQVFBQUFBTUFBQUFUNElCQU9LR0FRQUFBQUFBQVFBQUFPcUdBUUFCQUFBQUFBQUFBSFd5QVFBQkFBQUFBUUFBQUIwU0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTXVGQVFBeEFBQUFBQUFBQUFBQUFBQ2pyUUVBRUFBQUFFVWVBZ0NBQUFBQXhJVUJBRUFB''@;'; put 'put ''QUFBT29BRUFFQUFBQU1hRkFRQkFBQUFBQUFBQUFBQUFBQUNTaFFFQUFRQUFBSm1GQVFBQ0FBQUFub1VCQUFNQUFBRE1wZ0VBQkFBQUFEQ2RBUUFGQUFBQW9vVUJBQVlBQUFBZEVnSUFDQUFBQUthRkFRQWhBQUFBcW9VQkFDSUFBQUN1aFFFQUlnQUFBTEtGQVFBQkFBQUF0NFVCQUFjQUFBQzlo''@;'; put 'put ''UUVBSndBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUEvLy8vL3dBQUFBQXBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDJLQVFBRWl3RUFBQUFBQUtXTkFRQ29qUUVBcTQwQkFBQUFBQUFBQUFBQUFRQUFBQUlBQUFELy8vLy9hSTBCQUc2TkFRQWRFZ0lBQUFBQUFHUUFBQUJsQUFBQVpn''@;'; put 'put ''QUFBR1FBQUFBSUFBQUFDQUFBQUFBQUFBQUFBQUFBS2dBQUFCRUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFDQUFBQUFBQUFBQUpBQUFBS3dBQUFCRUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUEvLy8vL3dBQUFBQUFBQUFBTEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFETXBnRUFZRlVBQUlB''@;'; put 'put ''R0FBQUFBQUFBK1p3QkFHQlZBQUN3QmdBQUFBQUFBTktsQVFCZ1ZRQUE0QVlBQUFBQUFBQUJuUUVBWUZVQUFPQUdBQUFBQUFBQUJwMEJBR0JWQUFBUUJ3QUFBQUFBQUEyZEFRQjRWUUFBRUFjQUFBQUFBQUFUblFFQVlGVUFBRUFIQUFBQUFBQUFGNTBCQUdCVkFBQndCd0FBQUFBQUFCMFNBZ0Jn''@;'; put 'put ''VlFBQW9BY0FBQUFBQUFBZ25RRUFZRlVBQUtBSEFBQUFBQUFBS3AwQkFHQlZBQUJRQmdBQUFBQUFBRENkQVFCZ1ZRQUEwQWNBQUFBQUFBQTRuUUVBWUZVQUFBQUlBQUFBQUFBQVFwMEJBR0JWQUFBd0NBQUFBQUFBQUZDZEFRQmdWUUFBWUFnQUFBQUFBQUJXblFFQVlGVUFBSkFJQUFBQUFBQUFY''@;'; put 'put ''NTBCQUdCVkFBREFDQUFBQUFBQUFHZWRBUUJnVlFBQThBZ0FBQUFBQUFCd25RRUFZRlVBQUNBSkFBQUFBQUFBZUowQkFHQlZBQUJRQ1FBQUFBQUFBSDJkQVFCZ1ZRQUFnQWtBQUFBQUFBQ0JuUUVBWUZVQUFMQUpBQUFBQUFBQWlKMEJBR0JWQUFEZ0NRQUFBQUFBQUk2ZEFRQmdWUUFBRUFvQUFB''@;'; put 'put ''QUFBQUNZblFFQWtGVUFBRUFLQUFBQUFBQUFvWjBCQUdCVkFBQ0FCZ0FBQUFBQUFLYWRBUUJnVlFBQWdBWUFBQUFBQUFDd25RRUFZRlVBQUhBS0FBQUFBQUFBdDUwQkFHQlZBQUNnQ2dBQUFBQUFBTVNkQVFCZ1ZRQUEwQW9BQUFBQUFBRFNuUUVBWUZVQUFBQUxBQUFBQUFBQTRKMEJBR0JWQUFB''@;'; put 'put ''d0N3QUFBQUFBQU95ZEFRQmdWUUFBWUFzQUFBQUFBQUQ1blFFQVlGVUFBSkFMQUFBQUFBQUFBcDRCQUdCVkFBREFDd0FBQUFBQUFBeWVBUUJnVlFBQThBc0FBQUFBQUFBVm5nRUFZRlVBQUNBTUFBQUFBQUFBSFo0QkFHQlZBQUJRREFBQUFBQUFBQ1dlQVFCZ1ZRQUFnQXdBQUFBQUFBQXVuZ0VB''@;'; put 'put ''WUZVQUFMQU1BQUFBQUFBQU1wNEJBR0JWQUFEZ0RBQUFBQUFBQUQyZUFRQmdWUUFBRUEwQUFBQUFBQUJCbmdFQVlGVUFBRUFOQUFBQUFBQUFTNTRCQUdCVkFBQndEUUFBQUFBQUFGU2VBUUJnVlFBQW9BMEFBQUFBQUFCY25nRUFZRlVBQU5BTkFBQUFBQUFBYVo0QkFHQlZBQUFBRGdBQUFBQUFB''@;'; put 'put ''SFdlQVFCZ1ZRQUFNQTRBQUFBQUFBQ0FuZ0VBWUZVQUFHQU9BQUFBQUFBQWtKNEJBR0JWQUFDUURnQUFBQUFBQUo2ZUFRQmdWUUFBd0E0QUFBQUFBQUN0bmdFQVlGVUFBUEFPQUFBQUFBQUF0NTRCQUdCVkFBQWdEd0FBQUFBQUFNQ2VBUUJnVlFBQVVBOEFBQUFBQUFES25nRUFZRlVBQUlBUEFB''@;'; put 'put ''QUFBQUFBMUo0QkFHQlZBQUN3RHdBQUFBQUFBTnVlQVFCZ1ZRQUE0QThBQUFBQUFBRGluZ0VBWUZVQUFCQVFBQUFBQUFBQTdKNEJBS2hWQUFBQUFBQUFBQUFBQVBPZUFRQ29WUUFBQUFBQUFBQUFBQURWbkFFQXdGVUFBQUFBQUFBQUFBQUErNTRCQU5oVkFBQkFFQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFCYkFBQUFYQUFBQUJjQUFBQUVBQUFBQWdBQUFBd0FBQUJkQUFBQVhBQUFBQmNBQUFBRkFBQUFBQUFBQUEwQUFBQmJBQUFBWEFBQUFCY0FBQUFFQUFBQUFnQUFBQXdBQUFCZUFBQUFYd0FBQUJnQUFBQUdBQUFBQXdBQUFBNEFBQUJnQUFBQVlRQUFBQmNBQUFBSEFBQUFBQUFB''@;'; put 'put ''QUE4QUFBQmJBQUFBWEFBQUFCY0FBQUFJQUFBQUFnQUFBQXdBQUFBUUFBQUFFUUFBQUJJQUFBQVRBQUFBL1o4QkFBU2dBUUFBQUFBQURLQUJBQTZnQVFCL0hnSUFFS0FCQUF3QUFBQUVBQUFBQmdBQUFBSUFBQUFEQUFBQUFRQUFBQWtBQUFBSUFBQUFDd0FBQUF3QUFBQU5BQUFBRGdBQUFBOEFB''@;'; put 'put ''QUFRQUFBQUVRQUFBQklBQUFBVkFBQUFGZ0FBQUJjQUFBQVlBQUFBR1FBQUFCb0FBQUFiQUFBQUhBQUFBQjhBQUFBZ0FBQUFJUUFBQUNJQUFBQWpBQUFBSkFBQUFDVUFBQUFtQUFBQUtRQUFBQ29BQUFBckFBQUFMQUFBQUMwQUFBQXVBQUFBTHdBQUFEQUFBQUF6QUFBQU5BQUFBRFVBQUFBMkFB''@;'; put 'put ''QUFOd0FBQURnQUFBQTVBQUFBT2dBQUFEMEFBQUErQUFBQVB3QUFBRUFBQUFCQkFBQUFRZ0FBQUVNQUFBQkVBQUFBUndBQUFFZ0FBQUJKQUFBQVNnQUFBRXNBQUFCTUFBQUFUUUFBQUU0QUFBQlJBQUFBVWdBQUFGTUFBQUJVQUFBQVZRQUFBRllBQUFCWEFBQUFXQUFBQUYyaEFRQnRvUUVBZXFF''@;'; put 'put ''QkFBQUFBQUFBQUFBQUJBQUFBSCtoQVFBQUFBQUFBQUFBQUlxaEFRQnRvUUVBZXFFQkFBQUFBQUNob1FFQUJRQUFBSCtoQVFBQUFBQUFxYUVCQUxDaEFRQnRvUUVBd0tFQkFBQUFBQUFBQUFBQUJnQUFBSCtoQVFEcnNRRUFBQUFBQU1XaEFRQnRvUUVBd0tFQkFBQUFBQUNob1FFQUJ3QUFBSCto''@;'; put 'put ''QVFEcnNRRUFxYUVCQU55aEFRRHBvUUVBd0tFQkFBQUFBQUFBQUFBQUNnQUFBUGVoQVFEcnNRRUFBQUFBQVAyaEFRRHBvUUVBd0tFQkFBQUFBQUNwb1FFQUN3QUFBUGVoQVFEcnNRRUFxYUVCQUJDaUFRRHBvUUVBSHFJQkFBQUFBQUFBQUFBQUNBQUFBUGVoQVFBQUFBQUFBQUFBQUNTaUFRRHBv''@;'; put 'put ''UUVBSHFJQkFBQUFBQUNwb1FFQUNRQUFBUGVoQVFBQUFBQUFxYUVCQURpaUFRQTRvZ0VBQUFBQUFBQUFBQUFBQUFBQURBQUFBRUNpQVFBQUFBQUFBQUFBQUVxaUFRQTRvZ0VBNjdFQkFBQUFBQUFBQUFBQURnQUFBRUNpQVFEcnNRRUFBQUFBQUZlaUFRQTRvZ0VBNjdFQkFBQUFBQUNob1FFQUR3''@;'; put 'put ''QUFBRUNpQVFEcnNRRUFxYUVCQUd1aUFRQTRvZ0VBQUFBQUFBQUFBQUNob1FFQURRQUFBRUNpQVFBQUFBQUFxYUVCQUh1aUFRQjdvZ0VBQUFBQUFBQUFBQUFBQUFBQUVBQUFBSCtoQVFBQUFBQUFBQUFBQUlXaUFRQjdvZ0VBNjdFQkFBQUFBQUFBQUFBQUVnQUFBSCtoQVFEcnNRRUFBQUFBQUpT''@;'; put 'put ''aUFRQjdvZ0VBNjdFQkFBQUFBQUNob1FFQUV3QUFBSCtoQVFEcnNRRUFxYUVCQUtxaUFRQjdvZ0VBQUFBQUFMdWlBUUFBQUFBQUZBQUFBSCtoQVFBQUFBQUFBQUFBQU1XaUFRQjdvZ0VBNjdFQkFMdWlBUUFBQUFBQUZnQUFBSCtoQVFEcnNRRUFBQUFBQU51aUFRQjdvZ0VBNjdFQkFMdWlBUUNo''@;'; put 'put ''b1FFQUZ3QUFBSCtoQVFEcnNRRUFxYUVCQVBpaUFRQjdvZ0VBQUFBQUFMdWlBUUNob1FFQUZRQUFBSCtoQVFBQUFBQUFxYUVCQUJHakFRQjdvZ0VBQUFBQUFBQUFBQUNob1FFQUVRQUFBSCtoQVFBQUFBQUFxYUVCQUNPakFRQTVvd0VBNjdFQkFBQUFBQUFBQUFBQUdnQUFBUGVoQVFEcnNRRUFB''@;'; put 'put ''QUFBQUU2akFRQTVvd0VBNjdFQkFBQUFBQUNwb1FFQUd3QUFBUGVoQVFEcnNRRUFxYUVCQUdxakFRQTVvd0VBQUFBQUFBQUFBQUNwb1FFQUdRQUFBUGVoQVFBQUFBQUFxYUVCQUlLakFRQTVvd0VBbWFNQkFBQUFBQUFBQUFBQUdBQUFBUGVoQVFBQUFBQUFBQUFBQUorakFRQ3Rvd0VBNjdFQkFB''@;'; put 'put ''QUFBQUFBQUFBQUhnQUFBUGVoQVFEcnNRRUFBQUFBQUwrakFRQ3Rvd0VBNjdFQkFBQUFBQUNwb1FFQUh3QUFBUGVoQVFEcnNRRUFxYUVCQU5PakFRQ3Rvd0VBQUFBQUFBQUFBQUNwb1FFQUhRQUFBUGVoQVFBQUFBQUFxYUVCQU9PakFRQ3Rvd0VBbWFNQkFBQUFBQUFBQUFBQUhBQUFBUGVoQVFB''@;'; put 'put ''QUFBQUFBQUFBQVBLakFRRHlvd0VBQUFBQUFBQUFBQUFBQUFBQUlBQUFBUG1qQVFBQUFBQUFBQUFBQUFHa0FRQU1wQUVBNjdFQkFBQUFBQUFBQUFBQUFnQUFBUGVoQVFEcnNRRUFBQUFBQUJLa0FRQU1wQUVBNjdFQkFBQUFBQUNwb1FFQUF3QUFBUGVoQVFEcnNRRUFxYUVCQUNPa0FRQU1wQUVB''@;'; put 'put ''QUFBQUFBQUFBQUNwb1FFQUFRQUFBUGVoQVFBQUFBQUFxYUVCQU5xbEFRQU1wQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUGVoQVFBQUFBQUFBQUFBQURDa0FRQktwQUVBV2FRQkFBQUFBQUNwb1FFQUlRQUFBUGVoQVFBQUFBQUFxYUVCQUdDa0FRQnRwQUVBQUFBQUFBQUFBQUFBQUFBQUlnQUFB''@;'; put 'put ''UG1qQVFBQUFBQUFBQUFBQUFnQUFBQUVBQUFBQUFBQUFBb0FBQUF0QUFBQUVnQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBRC8vLy8vQUFBQUFBQUFBQUF1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFtbkFRREdBQUFBRDZjQkFNRUFBQUFXcHdFQXdnQUFBQnluQVFEQUFBQUFJNmNCQUpFREFB''@;'; put 'put ''QXBwd0VBeFFBQUFDK25BUUREQUFBQU5xY0JBTVFBQUFBN3B3RUFrZ01BQUVDbkFRREhBQUFBUjZjQkFLY0RBQUJMcHdFQUlTQUFBRktuQVFDVUF3QUFXS2NCQU5BQUFBQmNwd0VBeVFBQUFHT25BUURLQUFBQWFhY0JBTWdBQUFCd3B3RUFsUU1BQUhpbkFRQ1hBd0FBZktjQkFNc0FBQUNCcHdF''@;'; put 'put ''QWt3TUFBSWVuQVFETkFBQUFqcWNCQU00QUFBQ1Vwd0VBekFBQUFKdW5BUUNaQXdBQW9LY0JBTThBQUFDbHB3RUFtZ01BQUt1bkFRQ2JBd0FBc3FjQkFKd0RBQUMxcHdFQTBRQUFBTHluQVFDZEF3QUF2NmNCQUZJQkFBREZwd0VBMHdBQUFNeW5BUURVQUFBQTBxY0JBTklBQUFEWnB3RUFxUU1B''@;'; put 'put ''QU4rbkFRQ2ZBd0FBNTZjQkFOZ0FBQUR1cHdFQTFRQUFBUFduQVFEV0FBQUErcWNCQUtZREFBRCtwd0VBb0FNQUFBR29BUUF6SUFBQUI2Z0JBS2dEQUFBTHFBRUFvUU1BQUErb0FRQmdBUUFBRnFnQkFLTURBQUFjcUFFQTNnQUFBQ0tvQVFDa0F3QUFKcWdCQUpnREFBQXNxQUVBMmdBQUFET29B''@;'; put 'put ''UURiQUFBQU9hZ0JBTmtBQUFCQXFBRUFwUU1BQUVpb0FRRGNBQUFBVGFnQkFKNERBQUJRcUFFQTNRQUFBRmVvQVFCNEFRQUFYS2dCQUpZREFBQmhxQUVBNFFBQUFHaW9BUURpQUFBQWJxZ0JBTFFBQUFCMHFBRUE1Z0FBQUhxb0FRRGdBQUFBZ2FnQkFEVWhBQUNKcUFFQXNRTUFBSStvQVFBbUFB''@;'; put 'put ''QUFrNmdCQUNjaUFBQ1hxQUVBSUNJQUFKdW9BUURsQUFBQW9hZ0JBRWdpQUFDbnFBRUE0d0FBQUs2b0FRRGtBQUFBczZnQkFCNGdBQUM1cUFFQXNnTUFBTDZvQVFDbUFBQUF4YWdCQUNJZ0FBREtxQUVBS1NJQUFNNm9BUURuQUFBQTFhZ0JBTGdBQUFEYnFBRUFvZ0FBQU9Db0FRREhBd0FBNUtn''@;'; put 'put ''QkFNWUNBQURwcUFFQVl5WUFBTytvQVFCRklnQUE5S2dCQUtrQUFBRDVxQUVBdFNFQUFQK29BUUFxSWdBQUE2a0JBS1FBQUFBS3FRRUEweUVBQUErcEFRQWdJQUFBRnFrQkFKTWhBQUFicVFFQXNBQUFBQitwQVFDMEF3QUFKYWtCQUdZbUFBQXJxUUVBOXdBQUFES3BBUURwQUFBQU9ha0JBT29B''@;'; put 'put ''QUFBL3FRRUE2QUFBQUVhcEFRQUZJZ0FBVEtrQkFBTWdBQUJScVFFQUFpQUFBRmFwQVFDMUF3QUFYcWtCQUdFaUFBQmtxUUVBdHdNQUFHaXBBUUR3QUFBQWJLa0JBT3NBQUFCeHFRRUFyQ0FBQUhhcEFRQURJZ0FBZktrQkFKSUJBQUNCcVFFQUFDSUFBSWlwQVFDOUFBQUFqNmtCQUx3QUFBQ1dx''@;'; put 'put ''UUVBdmdBQUFKMnBBUUJFSUFBQW82a0JBTE1EQUFDcHFRRUFaU0lBQUt5cEFRQStBQUFBcjZrQkFOUWhBQUMwcVFFQWxDRUFBTG1wQVFCbEpnQUF3S2tCQUNZZ0FBREhxUUVBN1FBQUFNNnBBUUR1QUFBQTFLa0JBS0VBQUFEYXFRRUE3QUFBQU9HcEFRQVJJUUFBNTZrQkFCNGlBQUR0cVFFQUt5''@;'; put 'put ''SUFBUEdwQVFDNUF3QUE5cWtCQUw4QUFBRDlxUUVBQ0NJQUFBS3FBUUR2QUFBQUI2b0JBTG9EQUFBTnFnRUEwQ0VBQUJLcUFRQzdBd0FBR2FvQkFDa2pBQUFlcWdFQXF3QUFBQ1NxQVFDUUlRQUFLYW9CQUFnakFBQXZxZ0VBSENBQUFEV3FBUUJrSWdBQU9Lb0JBQW9qQUFBL3FnRUFGeUlBQUVh''@;'; put 'put ''cUFRREtKUUFBU3FvQkFBNGdBQUJPcWdFQU9TQUFBRldxQVFBWUlBQUFXNm9CQUR3QUFBQmVxZ0VBcndBQUFHT3FBUUFVSUFBQWFhb0JBTFVBQUFCdnFnRUF0d0FBQUVhekFRQVNJZ0FBZHFvQkFMd0RBQUI1cWdFQUJ5SUFBSCtxQVFDZ0FBQUFoS29CQUJNZ0FBQ0txZ0VBWUNJQUFJMnFBUUFM''@;'; put 'put ''SWdBQWtLb0JBS3dBQUFDVXFnRUFDU0lBQUpxcUFRQ0VJZ0FBbjZvQkFQRUFBQUNtcWdFQXZRTUFBS21xQVFEekFBQUFzS29CQVBRQUFBQzJxZ0VBVXdFQUFMeXFBUUR5QUFBQXc2b0JBRDRnQUFESnFnRUF5UU1BQU0rcUFRQy9Bd0FBMTZvQkFKVWlBQURkcWdFQUtDSUFBT0NxQVFDcUFBQUE1''@;'; put 'put ''YW9CQUxvQUFBRHFxZ0VBK0FBQUFQR3FBUUQxQUFBQStLb0JBSmNpQUFEL3FnRUE5Z0FBQUFTckFRQzJBQUFBQ2FzQkFBSWlBQUFPcXdFQU1DQUFBQldyQVFDbElnQUFHcXNCQU1ZREFBQWVxd0VBd0FNQUFDR3JBUURXQXdBQUphc0JBTEVBQUFBc3F3RUFvd0FBQURLckFRQXlJQUFBT0tzQkFB''@;'; put 'put ''OGlBQUE5cXdFQUhTSUFBRUtyQVFESUF3QUFScXNCQUNJQUFBQkxxd0VBMGlFQUFGQ3JBUUFhSWdBQVZxc0JBQ29qQUFCYnF3RUF1d0FBQUdHckFRQ1NJUUFBWnFzQkFBa2pBQUJzcXdFQUhTQUFBSEtyQVFBY0lRQUFkNnNCQUs0QUFBQjdxd0VBQ3lNQUFJS3JBUURCQXdBQWhxc0JBQThnQUFD''@;'; put 'put ''S3F3RUFPaUFBQUpHckFRQVpJQUFBbDZzQkFCb2dBQUNkcXdFQVlRRUFBS1NyQVFERklnQUFxYXNCQUtjQUFBQ3Vxd0VBclFBQUFMS3JBUUREQXdBQXVLc0JBTUlEQUFDL3F3RUFQQ0lBQU1PckFRQmdKZ0FBeXFzQkFJSWlBQURPcXdFQWhpSUFBTk9yQVFBUklnQUExNnNCQUlNaUFBRGJxd0VB''@;'; put 'put ''dVFBQUFPQ3JBUUN5QUFBQTVhc0JBTE1BQUFEcXF3RUFoeUlBQU8rckFRRGZBQUFBOWFzQkFNUURBQUQ1cXdFQU5DSUFBQUNzQVFDNEF3QUFCcXdCQU5FREFBQVByQUVBQ1NBQUFCYXNBUUQrQUFBQUhLd0JBTndDQUFBaXJBRUExd0FBQUNpc0FRQWlJUUFBTHF3QkFORWhBQUF6ckFFQStnQUFB''@;'; put 'put ''RHFzQVFDUklRQUFQNndCQVBzQUFBQkZyQUVBK1FBQUFFeXNBUUNvQUFBQVVLd0JBTklEQUFCV3JBRUF4UU1BQUY2c0FRRDhBQUFBWTZ3QkFCZ2hBQUJxckFFQXZnTUFBRzJzQVFEOUFBQUFkS3dCQUtVQUFBQjRyQUVBL3dBQUFIMnNBUUMyQXdBQWdxd0JBQTBnQUFDR3JBRUFEQ0FBQUFjQUFB''@;'; put 'put ''QUlBQUFBQVFFQUFBZ0FBQUFJQUFBQUFBQUFBQUFBQUFBdkFBQUFFd0FBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFRQUFBQUFBQUFBQUFBQUFBd0FBQUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBYXpBUUFKQUFBQUNMTUJBQW9BQUFBTnN3RUFDZ0FBQUJXekFRQUxBQUFBRzdNQkFBc0FBQUFrc3dF''@;'; put 'put ''QURBQUFBQ2V6QVFBTUFBQUFMYk1CQUEwQUFBQXlzd0VBRFFBQUFEcXpBUUFPQUFBQVA3TUJBQTRBQUFCR3N3RUFEd0FBQUV5ekFRQVBBQUFBV0xNQkFCQUFBQUJpQUFBQU1RQUFBRElBQUFBVUFBQUFNd0FBQUdNQUFBQTBBQUFBRlFBQUFEVUFBQUFJQUFBQUJBQUFBUC8vLy84QUFBQUFBQUFB''@;'; put 'put ''QUJVQUFBQUFBQUFBQUFBQUFBQUFBQUNqdEFFQVZWM0pmOGwvL3dDdXRBRUF1eTNVdnE3VS93QzV0QUVBRkhmOS9jQ0cvd0RFdEFFQVZWM0pmOGwvL3dEUHRBRUF1eTNVdnE3VS93RGF0QUVBRkhmOS9jQ0cvd0RsdEFFQUttYi8vLytaL3dEd3RBRUFWVjNKZjhsLy93RDd0QUVBdXkzVXZxN1Uv''@;'; put 'put ''d0FHdFFFQUZIZjkvY0NHL3dBUnRRRUFLbWIvLy8rWi93QWN0UUVBbDYyd09HeXcvd0FudFFFQVZWM0pmOGwvL3dBeXRRRUF1eTNVdnE3VS93QTl0UUVBRkhmOS9jQ0cvd0JJdFFFQUttYi8vLytaL3dCVHRRRUFsNjJ3T0d5dy93QmV0UUVBNlB6dzhBSi8vd0JwdFFFQVZWM0pmOGwvL3dCMHRR''@;'; put 'put ''RUF1eTNVdnE3VS93Qi90UUVBRkhmOS9jQ0cvd0NLdFFFQUttYi8vLytaL3dDVnRRRUFsNjJ3T0d5dy93Q2d0UUVBNlB6dzhBSi8vd0NydFFFQUVlQy92MXNYL3dDMnRRRUFWVjNKZjhsLy93REJ0UUVBdXkzVXZxN1Uvd0RNdFFFQUZIZjkvY0NHL3dEWHRRRUFLbWIvLy8rWi93RGl0UUVBbDYy''@;'; put 'put ''d09HeXcvd0R0dFFFQTZQenc4QUovL3dENHRRRUFFZUMvdjFzWC93QUR0Z0VBQUFCbVptWm0vd0FPdGdFQWt4bjMzdXYzL3dBWXRnRUFqa3ZobnNyaC93QWl0Z0VBa2J5OU1ZSzkvd0FzdGdFQW54RC83L1AvL3dBMnRnRUFqeTdudmRmbi93QkF0Z0VBajMvV2E2N1cvd0JLdGdFQWs5QzFJWEcx''@;'; put 'put ''L3dCVXRnRUFueEQvNy9QLy93QmV0Z0VBank3bnZkZm4vd0JvdGdFQWozL1dhNjdXL3dCeXRnRUFrYnk5TVlLOS93Qjh0Z0VBbGZHY0NGR2Mvd0NHdGdFQW54RC83L1AvL3dDUXRnRUFsQ3Z2eHR2di93Q2F0Z0VBamt2aG5zcmgvd0NrdGdFQWozL1dhNjdXL3dDdXRnRUFrYnk5TVlLOS93QzR0''@;'; put 'put ''Z0VBbGZHY0NGR2Mvd0RDdGdFQW54RC83L1AvL3dETXRnRUFsQ3Z2eHR2di93RFd0Z0VBamt2aG5zcmgvd0RndGdFQWozL1dhNjdXL3dEcXRnRUFrS25HUXBMRy93RDB0Z0VBazlDMUlYRzEvd0QrdGdFQWwvR1VDRVdVL3dBSXR3RUFsQWovOS92Ly93QVN0d0VBa3huMzN1djMvd0FjdHdFQWxD''@;'; put 'put ''dnZ4dHZ2L3dBbXR3RUFqa3ZobnNyaC93QXd0d0VBajMvV2E2N1cvd0E2dHdFQWtLbkdRcExHL3dCRXR3RUFrOUMxSVhHMS93Qk90d0VBbC9HVUNFV1Uvd0JZdHdFQWxBai85L3YvL3dCaXR3RUFreG4zM3V2My93QnN0d0VBbEN2dnh0dnYvd0IydHdFQWprdmhuc3JoL3dDQXR3RUFqMy9XYTY3''@;'; put 'put ''Vy93Q0t0d0VBa0tuR1FwTEcvd0NVdHdFQWs5QzFJWEcxL3dDZXR3RUFsZkdjQ0ZHYy93Q290d0VBbU90ckNEQnIvd0N5dHdFQUYrOVVWREFGL3dDOHR3RUFkLzg4QUR3dy93REh0d0VBRit5TWpGRUsvd0RSdHdFQUdNSy92NEV0L3dEYnR3RUFIWERmMzhKOS93RGx0d0VBSGpUMjl1akQvd0R2''@;'; put 'put ''dHdFQWVTYnF4K3JsL3dENXR3RUFlRi9OZ00zQi93QUR1QUVBZktXWE5aZVAvd0FOdUFFQWZQeG1BV1plL3dBWHVBRUFGKzlVVkRBRi93QWh1QUVBZlB4bUFXWmUvd0FzdUFFQWQvODhBRHd3L3dBM3VBRUFGK3lNakZFSy93QkJ1QUVBR01LL3Y0RXQvd0JMdUFFQUhYRGYzOEo5L3dCVnVBRUFI''@;'; put 'put ''alQyOXVqRC93QmZ1QUVBQUFEMTlmWDEvd0JwdUFFQWVTYnF4K3JsL3dCenVBRUFlRi9OZ00zQi93Qjl1QUVBZktXWE5aZVAvd0NIdUFFQUhJZlkyTE5sL3dDUXVBRUFBQUQxOWZYMS93Q1p1QUVBZTMrMFdyU3Mvd0NpdUFFQUZkZW1wbUVhL3dDcnVBRUFIWERmMzhKOS93QzB1QUVBZUYvTmdN''@;'; put 'put ''M0Ivd0M5dUFFQWVmMkZBWVZ4L3dER3VBRUFGZGVtcG1FYS93RFB1QUVBSFhEZjM4Sjkvd0RZdUFFQUFBRDE5ZlgxL3dEaHVBRUFlRi9OZ00zQi93RHF1QUVBZWYyRkFZVngvd0R6dUFFQUYreU1qRkVLL3dEOHVBRUFISWZZMkxObC93QUZ1UUVBSGpUMjl1akQvd0FPdVFFQWVTYnF4K3JsL3dB''@;'; put 'put ''WHVRRUFlMyswV3JTcy93QWd1UUVBZlB4bUFXWmUvd0FwdVFFQUYreU1qRkVLL3dBeXVRRUFISWZZMkxObC93QTd1UUVBSGpUMjl1akQvd0JFdVFFQUFBRDE5ZlgxL3dCTnVRRUFlU2JxeCtybC93Qld1UUVBZTMrMFdyU3Mvd0JmdVFFQWZQeG1BV1plL3dCb3VRRUFGK3lNakZFSy93Qnh1UUVB''@;'; put 'put ''R01LL3Y0RXQvd0I2dVFFQUhYRGYzOEo5L3dDRHVRRUFIalQyOXVqRC93Q011UUVBZVNicXgrcmwvd0NWdVFFQWVGL05nTTNCL3dDZXVRRUFmS1dYTlplUC93Q251UUVBZlB4bUFXWmUvd0N3dVFFQUYreU1qRkVLL3dDNXVRRUFHTUsvdjRFdC93REN1UUVBSFhEZjM4Sjkvd0RMdVFFQUhqVDI5''@;'; put 'put ''dWpEL3dEVXVRRUFBQUQxOWZYMS93RGR1UUVBZVNicXgrcmwvd0RtdVFFQWVGL05nTTNCL3dEdnVRRUFmS1dYTlplUC93RDR1UUVBZlB4bUFXWmUvd0FCdWdFQWh4VDU1Zlg1L3dBS3VnRUFkVXJZbWRqSi93QVR1Z0VBWjdtaUxLSmYvd0FjdWdFQWlBNzc3Zmo3L3dBbHVnRUFmemJpc3VMaS93''@;'; put 'put ''QXV1Z0VBY1hqQ1pzS2svd0EzdWdFQVlyNkxJNHRGL3dCQXVnRUFpQTc3N2ZqNy93Qkp1Z0VBZnpiaXN1TGkvd0JTdWdFQWNYakNac0trL3dCYnVnRUFaN21pTEtKZi93Qmt1Z0VBWnY5dEFHMHMvd0J0dWdFQWlBNzc3Zmo3L3dCMnVnRUFkeUxzek96bS93Qi91Z0VBZFVyWW1kakovd0NJdWdF''@;'; put 'put ''QWNYakNac0trL3dDUnVnRUFaN21pTEtKZi93Q2F1Z0VBWnY5dEFHMHMvd0NqdWdFQWlBNzc3Zmo3L3dDc3VnRUFkeUxzek96bS93QzF1Z0VBZFVyWW1kakovd0MrdWdFQWNYakNac0trL3dESHVnRUFhWit1UWE1Mi93RFF1Z0VBWXI2TEk0dEYvd0RadWdFQVp2OVlBRmdrL3dEaXVnRUFoZ2I5''@;'; put 'put ''OS96OS93RHJ1Z0VBaHhUNTVmWDUvd0QwdWdFQWR5THN6T3ptL3dEOXVnRUFkVXJZbWRqSi93QUd1d0VBY1hqQ1pzS2svd0FQdXdFQWFaK3VRYTUyL3dBWXV3RUFZcjZMSTR0Ri93QWh1d0VBWnY5WUFGZ2svd0FxdXdFQWhnYjk5L3o5L3dBenV3RUFoeFQ1NWZYNS93QTh1d0VBZHlMc3pPem0v''@;'; put 'put ''d0JGdXdFQWRVclltZGpKL3dCT3V3RUFjWGpDWnNLay93Qlh1d0VBYVordVFhNTIvd0JndXdFQVlyNkxJNHRGL3dCcHV3RUFadjl0QUcwcy93Qnl1d0VBWmY5RUFFUWIvd0I3dXdFQWtCVDA0T3owL3dDRXV3RUFsRWJhbnJ6YS93Q051d0VBeEh1bmlGYW4vd0NXdXdFQWlBNzc3Zmo3L3dDZnV3''@;'; put 'put ''RUFralhqczgzai93Q291d0VBb2tyR2pKYkcvd0N4dXdFQXlwV2RpRUdkL3dDNnV3RUFpQTc3N2ZqNy93RER1d0VBa2pYanM4M2ovd0RNdXdFQW9rckdqSmJHL3dEVnV3RUF4SHVuaUZhbi93RGV1d0VBMXVHQmdROTgvd0RudXdFQWlBNzc3Zmo3L3dEd3V3RUFsQ3ZtdjlQbS93RDV1d0VBbEVi''@;'; put 'put ''YW5yemEvd0FDdkFFQW9rckdqSmJHL3dBTHZBRUF4SHVuaUZhbi93QVV2QUVBMXVHQmdROTgvd0FkdkFFQWlBNzc3Zmo3L3dBbXZBRUFsQ3ZtdjlQbS93QXZ2QUVBbEViYW5yemEvd0E0dkFFQW9rckdqSmJHL3dCQnZBRUF2bVN4akd1eC93Qkt2QUVBeXBXZGlFR2Qvd0JUdkFFQTFmeHViZ0Zy''@;'; put 'put ''L3dCY3ZBRUFoZ2I5OS96OS93Qmx2QUVBa0JUMDRPejAvd0J1dkFFQWxDdm12OVBtL3dCM3ZBRUFsRWJhbnJ6YS93Q0F2QUVBb2tyR2pKYkcvd0NKdkFFQXZtU3hqR3V4L3dDU3ZBRUF5cFdkaUVHZC93Q2J2QUVBMWZ4dWJnRnIvd0NrdkFFQWhnYjk5L3o5L3dDdHZBRUFrQlQwNE96MC93QzJ2''@;'; put 'put ''QUVBbEN2bXY5UG0vd0MvdkFFQWxFYmFucnphL3dESXZBRUFva3JHakpiRy93RFJ2QUVBdm1TeGpHdXgvd0RhdkFFQXlwV2RpRUdkL3dEanZBRUExdUdCZ1E5OC93RHN2QUVBMWY5TlRRQkwvd0QxdkFFQWN0T2VHNTUzL3dEL3ZBRUFFdnpaMlY4Qy93QUp2UUVBclYremRYQ3ovd0FUdlFFQWN0''@;'; put 'put ''T2VHNTUzL3dBZHZRRUFFdnpaMlY4Qy93QW52UUVBclYremRYQ3ovd0F4dlFFQTZkSG41eW1LL3dBN3ZRRUFjdE9lRzU1My93QkZ2UUVBRXZ6WjJWOEMvd0JQdlFFQXJWK3pkWEN6L3dCWnZRRUE2ZEhuNXltSy93Qmp2UUVBUHRDbVpxWWUvd0J0dlFFQWN0T2VHNTUzL3dCM3ZRRUFFdnpaMlY4''@;'; put 'put ''Qy93Q0J2UUVBclYremRYQ3ovd0NMdlFFQTZkSG41eW1LL3dDVnZRRUFQdENtWnFZZS93Q2Z2UUVBSC96bTVxc0Mvd0NwdlFFQWN0T2VHNTUzL3dDenZRRUFFdnpaMlY4Qy93Qzl2UUVBclYremRYQ3ovd0RIdlFFQTZkSG41eW1LL3dEUnZRRUFQdENtWnFZZS93RGJ2UUVBSC96bTVxc0Mvd0Rs''@;'; put 'put ''dlFFQUc5S21wbllkL3dEdnZRRUFjdE9lRzU1My93RDV2UUVBRXZ6WjJWOEMvd0FEdmdFQXJWK3pkWEN6L3dBTnZnRUE2ZEhuNXltSy93QVh2Z0VBUHRDbVpxWWUvd0FodmdFQUgvem01cXNDL3dBcnZnRUFHOUttcG5ZZC93QTF2Z0VBQUFCbVptWm0vd0EvdmdFQVRCbno0UFBiL3dCSXZnRUFY''@;'; put 'put ''ejNkcU4yMS93QlJ2Z0VBaktyS1E2TEsvd0JhdmdFQVFSSDU4UG5vL3dCanZnRUFWeTdrdXVTOC93QnN2Z0VBZTJYTWU4ekUvd0IxdmdFQWpjVytLNHkrL3dCK3ZnRUFRUkg1OFBuby93Q0h2Z0VBVnk3a3V1Uzgvd0NRdmdFQWUyWE1lOHpFL3dDWnZnRUFqS3JLUTZMSy93Q2l2Z0VBa2ZPc0NH''@;'; put 'put ''aXMvd0NydmdFQVFSSDU4UG5vL3dDMHZnRUFUU25yek92Ri93Qzl2Z0VBWHozZHFOMjEvd0RHdmdFQWUyWE1lOHpFL3dEUHZnRUFqS3JLUTZMSy93RFl2Z0VBa2ZPc0NHaXMvd0RodmdFQVFSSDU4UG5vL3dEcXZnRUFUU25yek92Ri93RHp2Z0VBWHozZHFOMjEvd0Q4dmdFQWUyWE1lOHpFL3dB''@;'; put 'put ''RnZ3RUFpYURUVHJQVC93QU92d0VBamNXK0s0eSsvd0FYdndFQWsvS2VDRmllL3dBZ3Z3RUFQQXo4OS96dy93QXB2d0VBVEJuejRQUGIvd0F5dndFQVRTbnJ6T3ZGL3dBN3Z3RUFYejNkcU4yMS93QkV2d0VBZTJYTWU4ekUvd0JOdndFQWlhRFRUclBUL3dCV3Z3RUFqY1crSzR5Ky93QmZ2d0VB''@;'; put 'put ''ay9LZUNGaWUvd0JvdndFQVBBejg5L3p3L3dCeHZ3RUFUQm56NFBQYi93QjZ2d0VBVFNucnpPdkYvd0NEdndFQVh6M2RxTjIxL3dDTXZ3RUFlMlhNZTh6RS93Q1Z2d0VBaWFEVFRyUFQvd0NldndFQWpjVytLNHkrL3dDbnZ3RUFrZk9zQ0dpcy93Q3d2d0VBbHUrQkNFQ0Ivd0M1dndFQVNoWDE1''@;'; put 'put ''ZlhnL3dERXZ3RUFVRWpab2RtYi93RFB2d0VBWXJLak1hTlUvd0RhdndFQVNRLzQ3ZmpwL3dEbHZ3RUFUamJrdXVTei93RHd2d0VBVm1qRWRNUjIvd0Q3dndFQVlyNkxJNHRGL3dBR3dBRUFTUS80N2ZqcC93QVJ3QUVBVGpia3V1U3ovd0Fjd0FFQVZtakVkTVIyL3dBbndBRUFZcktqTWFOVS93''@;'; put 'put ''QXl3QUVBWnY5dEFHMHMvd0E5d0FFQVNRLzQ3ZmpwL3dCSXdBRUFUU3pweCtuQS93QlR3QUVBVUVqWm9kbWIvd0Jld0FFQVZtakVkTVIyL3dCcHdBRUFZcktqTWFOVS93QjB3QUVBWnY5dEFHMHMvd0Ivd0FFQVNRLzQ3ZmpwL3dDS3dBRUFUU3pweCtuQS93Q1Z3QUVBVUVqWm9kbWIvd0Nnd0FF''@;'; put 'put ''QVZtakVkTVIyL3dDcndBRUFZSjZyUWF0ZC93QzJ3QUVBWXI2TEk0dEYvd0RCd0FFQWJQOWFBRm95L3dETXdBRUFTQWY4OS96MS93RFh3QUVBU2hYMTVmWGcvd0Rpd0FFQVRTenB4K25BL3dEdHdBRUFVRWpab2RtYi93RDR3QUVBVm1qRWRNUjIvd0FEd1FFQVlKNnJRYXRkL3dBT3dRRUFZcjZM''@;'; put 'put ''STR0Ri93QVp3UUVBYlA5YUFGb3kvd0Frd1FFQVNBZjg5L3oxL3dBdndRRUFTaFgxNWZYZy93QTZ3UUVBVFN6cHgrbkEvd0JGd1FFQVVFalpvZG1iL3dCUXdRRUFWbWpFZE1SMi93QmJ3UUVBWUo2clFhdGQvd0Jtd1FFQVlyNkxJNHRGL3dCeHdRRUFadjl0QUcwcy93Qjh3UUVBWmY5RUFFUWIv''@;'; put 'put ''d0NId1FFQUFBRHc4UER3L3dDUndRRUFBQUM5dmIyOS93Q2J3UUVBQUFCalkyTmovd0Nsd1FFQUFBRDM5L2YzL3dDdndRRUFBQURNek16TS93QzV3UUVBQUFDV2xwYVcvd0REd1FFQUFBQlNVbEpTL3dETndRRUFBQUQzOS9mMy93RFh3UUVBQUFETXpNek0vd0Rod1FFQUFBQ1dscGFXL3dEcndR''@;'; put 'put ''RUFBQUJqWTJOai93RDF3UUVBQUFBbEpTVWwvd0Qvd1FFQUFBRDM5L2YzL3dBSndnRUFBQURaMmRuWi93QVR3Z0VBQUFDOXZiMjkvd0Fkd2dFQUFBQ1dscGFXL3dBbndnRUFBQUJqWTJOai93QXh3Z0VBQUFBbEpTVWwvd0E3d2dFQUFBRDM5L2YzL3dCRndnRUFBQURaMmRuWi93QlB3Z0VBQUFD''@;'; put 'put ''OXZiMjkvd0Jad2dFQUFBQ1dscGFXL3dCandnRUFBQUJ6YzNOei93QnR3Z0VBQUFCU1VsSlMvd0Izd2dFQUFBQWxKU1VsL3dDQndnRUFBQUQvLy8vLy93Q0x3Z0VBQUFEdzhQRHcvd0NWd2dFQUFBRFoyZG5aL3dDZndnRUFBQUM5dmIyOS93Q3B3Z0VBQUFDV2xwYVcvd0N6d2dFQUFBQnpjM056''@;'; put 'put ''L3dDOXdnRUFBQUJTVWxKUy93REh3Z0VBQUFBbEpTVWwvd0RSd2dFQUFBRC8vLy8vL3dEYndnRUFBQUR3OFBEdy93RGx3Z0VBQUFEWjJkblovd0R2d2dFQUFBQzl2YjI5L3dENXdnRUFBQUNXbHBhVy93QUR3d0VBQUFCemMzTnovd0FOd3dFQUFBQlNVbEpTL3dBWHd3RUFBQUFsSlNVbC93QWh3''@;'; put 'put ''d0VBQUFBQUFBQUEvd0Fyd3dFQUZURCsvdWJPL3dBM3d3RUFFNVA5L2E1ci93QkR3d0VBRHZEbTVsVU4vd0JQd3dFQUV5RCsvdTNlL3dCYnd3RUFGSGo5L2I2Ri93Qm53d0VBRWNMOS9ZMDgvd0J6d3dFQURmM1oyVWNCL3dCL3d3RUFFeUQrL3UzZS93Q0x3d0VBRkhqOS9iNkYvd0NYd3dFQUVj''@;'; put 'put ''TDkvWTA4L3dDand3RUFEdkRtNWxVTi93Q3Z3d0VBRGZxbXBqWUQvd0M3d3dFQUV5RCsvdTNlL3dESHd3RUFGVnY5L2RDaS93RFR3d0VBRTVQOS9hNXIvd0Rmd3dFQUVjTDkvWTA4L3dEcnd3RUFEdkRtNWxVTi93RDN3d0VBRGZxbXBqWUQvd0FEeEFFQUV5RCsvdTNlL3dBUHhBRUFGVnY5L2RD''@;'; put 'put ''aS93QWJ4QUVBRTVQOS9hNXIvd0FueEFFQUVjTDkvWTA4L3dBenhBRUFFT3J4OFdrVC93QS94QUVBRGYzWjJVZ0Ivd0JMeEFFQURQZU1qQzBFL3dCWHhBRUFGUlQvLy9Yci93Qmp4QUVBRlREKy91Yk8vd0J2eEFFQUZWdjkvZENpL3dCN3hBRUFFNVA5L2E1ci93Q0h4QUVBRWNMOS9ZMDgvd0NU''@;'; put 'put ''eEFFQUVPcng4V2tUL3dDZnhBRUFEZjNaMlVnQi93Q3J4QUVBRFBlTWpDMEUvd0MzeEFFQUZSVC8vL1hyL3dERHhBRUFGVEQrL3ViTy93RFB4QUVBRlZ2OS9kQ2kvd0RieEFFQUU1UDkvYTVyL3dEbnhBRUFFY0w5L1kwOC93RHp4QUVBRU9yeDhXa1Qvd0QveEFFQURmM1oyVWdCL3dBTHhRRUFE''@;'; put 'put ''ZnFtcGpZRC93QVh4UUVBRFBaL2Z5Y0Uvd0FqeFFFQUdUYisvdWpJL3dBc3hRRUFFM245L2J1RS93QTF4UUVBQmNYajQwb3ovd0EreFFFQUdpWCsvdkRaL3dCSHhRRUFHSFA5L2N5Sy93QlF4UUVBRGFUOC9JMVovd0JaeFFFQUE5clgxekFmL3dCaXhRRUFHaVgrL3ZEWi93QnJ4UUVBR0hQOS9j''@;'; put 'put ''eUsvd0IweFFFQURhVDgvSTFaL3dCOXhRRUFCY1hqNDBvei93Q0d4UUVBQVArenN3QUEvd0NQeFFFQUdpWCsvdkRaL3dDWXhRRUFHRi85L2RTZS93Q2h4UUVBRTNuOS9idUUvd0NxeFFFQURhVDgvSTFaL3dDenhRRUFCY1hqNDBvei93Qzh4UUVBQVArenN3QUEvd0RGeFFFQUdpWCsvdkRaL3dE''@;'; put 'put ''T3hRRUFHRi85L2RTZS93RFh4UUVBRTNuOS9idUUvd0RneFFFQURhVDgvSTFaL3dEcHhRRUFCN0x2NzJWSS93RHl4UUVBQTlyWDF6QWYvd0Q3eFFFQUFQK1ptUUFBL3dBRXhnRUFHQkwvLy9mcy93QU54Z0VBR1RiKy91akkvd0FXeGdFQUdGLzkvZFNlL3dBZnhnRUFFM245L2J1RS93QW94Z0VB''@;'; put 'put ''RGFUOC9JMVovd0F4eGdFQUI3THY3MlZJL3dBNnhnRUFBOXJYMXpBZi93QkR4Z0VBQVArWm1RQUEvd0JNeGdFQUdCTC8vL2ZzL3dCVnhnRUFHVGIrL3VqSS93QmV4Z0VBR0YvOS9kU2Uvd0JueGdFQUUzbjkvYnVFL3dCd3hnRUFEYVQ4L0kxWi93QjV4Z0VBQjdMdjcyVkkvd0NDeGdFQUE5clgx''@;'; put 'put ''ekFmL3dDTHhnRUFBUCt6c3dBQS93Q1V4Z0VBQVA5L2Z3QUEvd0NkeGdFQWprVGpwczdqL3dDcHhnRUF2cG1hYWoyYS93QzJ4Z0VBa05PMEgzaTAvd0RDeGdFQVFXSGZzdCtLL3dET3hnRUFVcmlnTTZBcy93RGF4Z0VBQUdQNys1cVovd0RteGdFQS91SGo0eG9jL3dEeXhnRUFGNC85L2I5di93''@;'; put 'put ''RCt4Z0VBRmYvLy8zOEEvd0FLeHdFQXhpcld5ckxXL3dBV3h3RUFqa1RqcHM3ai93QWl4d0VBdnBtYWFqMmEvd0F2eHdFQUttYi8vLytaL3dBOHh3RUFrTk8wSDNpMC93Qkl4d0VBUVdIZnN0K0svd0JVeHdFQVVyaWdNNkFzL3dCZ3h3RUFBR1A3KzVxWi93QnN4d0VBL3VIajR4b2Mvd0I0eHdF''@;'; put 'put ''QUY0LzkvYjl2L3dDRXh3RUFGZi8vLzM4QS93Q1F4d0VBeGlyV3lyTFcvd0NjeHdFQWprVGpwczdqL3dDb3h3RUF2cG1hYWoyYS93QzF4d0VBS21iLy8vK1ovd0RDeHdFQUQ4V3hzVmtvL3dEUHh3RUFrTk8wSDNpMC93RGJ4d0VBUVdIZnN0K0svd0RueHdFQVVyaWdNNkFzL3dEenh3RUFBR1A3''@;'; put 'put ''KzVxWi93RC94d0VBL3VIajR4b2Mvd0FMeUFFQUY0LzkvYjl2L3dBWHlBRUFGZi8vLzM4QS93QWp5QUVBeGlyV3lyTFcvd0F2eUFFQWprVGpwczdqL3dBNnlBRUFrTk8wSDNpMC93QkZ5QUVBUVdIZnN0K0svd0JReUFFQWprVGpwczdqL3dCYnlBRUFrTk8wSDNpMC93Qm15QUVBUVdIZnN0K0sv''@;'; put 'put ''d0J4eUFFQVVyaWdNNkFzL3dCOHlBRUFqa1RqcHM3ai93Q0h5QUVBa05PMEgzaTAvd0NTeUFFQVFXSGZzdCtLL3dDZHlBRUFVcmlnTTZBcy93Q295QUVBQUdQNys1cVovd0N6eUFFQWprVGpwczdqL3dDK3lBRUFrTk8wSDNpMC93REp5QUVBUVdIZnN0K0svd0RVeUFFQVVyaWdNNkFzL3dEZnlB''@;'; put 'put ''RUFBR1A3KzVxWi93RHF5QUVBL3VIajR4b2Mvd0QxeUFFQWprVGpwczdqL3dBQXlRRUFrTk8wSDNpMC93QUx5UUVBUVdIZnN0K0svd0FXeVFFQVVyaWdNNkFzL3dBaHlRRUFBR1A3KzVxWi93QXN5UUVBL3VIajR4b2Mvd0EzeVFFQUY0LzkvYjl2L3dCQ3lRRUFqa1RqcHM3ai93Qk55UUVBa05P''@;'; put 'put ''MEgzaTAvd0JZeVFFQVFXSGZzdCtLL3dCanlRRUFVcmlnTTZBcy93QnV5UUVBQUdQNys1cVovd0I1eVFFQS91SGo0eG9jL3dDRXlRRUFGNC85L2I5di93Q1B5UUVBRmYvLy8zOEEvd0NheVFFQWprVGpwczdqL3dDbHlRRUFrTk8wSDNpMC93Q3d5UUVBUVdIZnN0K0svd0M3eVFFQVVyaWdNNkFz''@;'; put 'put ''L3dER3lRRUFBR1A3KzVxWi93RFJ5UUVBL3VIajR4b2Mvd0RjeVFFQUY0LzkvYjl2L3dEbnlRRUFGZi8vLzM4QS93RHl5UUVBeGlyV3lyTFcvd0Q5eVFFQUEwNzcrN1N1L3dBSnlnRUFralhqczgzai93QVZ5Z0VBVFNucnpPdkYvd0FoeWdFQUEwNzcrN1N1L3dBdHlnRUFralhqczgzai93QTV5''@;'; put 'put ''Z0VBVFNucnpPdkYvd0JGeWdFQXlodmszc3ZrL3dCUnlnRUFBMDc3KzdTdS93QmR5Z0VBa2pYanM4M2ovd0JweWdFQVRTbnJ6T3ZGL3dCMXlnRUF5aHZrM3N2ay93Q0J5Z0VBR0ZqKy90bW0vd0NOeWdFQUEwNzcrN1N1L3dDWnlnRUFralhqczgzai93Q2x5Z0VBVFNucnpPdkYvd0N4eWdFQXlo''@;'; put 'put ''dmszc3ZrL3dDOXlnRUFHRmorL3RtbS93REp5Z0VBS2pMLy8vL00vd0RWeWdFQUEwNzcrN1N1L3dEaHlnRUFralhqczgzai93RHR5Z0VBVFNucnpPdkYvd0Q1eWdFQXlodmszc3ZrL3dBRnl3RUFHRmorL3RtbS93QVJ5d0VBS2pMLy8vL00vd0FkeXdFQUhDemw1ZGk5L3dBcHl3RUFBMDc3KzdT''@;'; put 'put ''dS93QTF5d0VBa2pYanM4M2ovd0JCeXdFQVRTbnJ6T3ZGL3dCTnl3RUF5aHZrM3N2ay93Qlp5d0VBR0ZqKy90bW0vd0JseXdFQUtqTC8vLy9NL3dCeHl3RUFIQ3psNWRpOS93Qjl5d0VBNlNQOS9kcnMvd0NKeXdFQUEwNzcrN1N1L3dDVnl3RUFralhqczgzai93Q2h5d0VBVFNucnpPdkYvd0N0''@;'; put 'put ''eXdFQXlodmszc3ZrL3dDNXl3RUFHRmorL3RtbS93REZ5d0VBS2pMLy8vL00vd0RSeXdFQUhDemw1ZGk5L3dEZHl3RUE2U1A5L2Rycy93RHB5d0VBQUFEeTh2THkvd0QxeXdFQWJEWGlzK0xOL3dBQnpBRUFFVkg5L2Mycy93QU56QUVBbXgvb3k5WG8vd0FaekFFQWJEWGlzK0xOL3dBbHpBRUFF''@;'; put 'put ''Vkg5L2Mycy93QXh6QUVBbXgvb3k5WG8vd0E5ekFFQTVDdjA5TXJrL3dCSnpBRUFiRFhpcytMTi93QlZ6QUVBRVZIOS9jMnMvd0JoekFFQW14L295OVhvL3dCdHpBRUE1Q3YwOU1yay93QjV6QUVBT0MzMTV2WEovd0NGekFFQWJEWGlzK0xOL3dDUnpBRUFFVkg5L2Mycy93Q2R6QUVBbXgvb3k5''@;'; put 'put ''WG8vd0NwekFFQTVDdjA5TXJrL3dDMXpBRUFPQzMxNXZYSi93REJ6QUVBSTFILy8vS3Uvd0ROekFFQWJEWGlzK0xOL3dEWnpBRUFFVkg5L2Mycy93RGx6QUVBbXgvb3k5WG8vd0R4ekFFQTVDdjA5TXJrL3dEOXpBRUFPQzMxNXZYSi93QUp6UUVBSTFILy8vS3Uvd0FWelFFQUdTZng4ZUxNL3dB''@;'; put 'put ''aHpRRUFiRFhpcytMTi93QXR6UUVBRVZIOS9jMnMvd0E1elFFQW14L295OVhvL3dCRnpRRUE1Q3YwOU1yay93QlJ6UUVBT0MzMTV2WEovd0JkelFFQUkxSC8vL0t1L3dCcHpRRUFHU2Z4OGVMTS93QjF6UUVBQUFETXpNek0vd0NCelFFQTV2Mk9qZ0ZTL3dDTHpRRUFUYjlrSjJRWi93Q1d6UUVB''@;'; put 'put ''NXR6RnhSdDkvd0NnelFFQTZIYmUzbmV1L3dDcXpRRUE1VDd4OGJiYS93QzB6UUVBNlIzOS9lRHYvd0MrelFFQU95YjE1dlhRL3dESXpRRUFQV2ZodU9HRy93RFN6UUVBUDZhOGY3eEIvd0RjelFFQVJNV1NUWkloL3dEbXpRRUE1djJPamdGUy93RHd6UUVBUk1XU1RaSWgvd0Q3elFFQVRiOWtK''@;'; put 'put ''MlFaL3dBR3pnRUE1dHpGeFJ0OS93QVF6Z0VBNkhiZTNuZXUvd0FhemdFQTVUN3g4YmJhL3dBa3pnRUE2UjM5L2VEdi93QXV6Z0VBQUFEMzkvZjMvd0E0emdFQU95YjE1dlhRL3dCQ3pnRUFQV2ZodU9HRy93Qk16Z0VBUDZhOGY3eEIvd0JXemdFQTUwenA2YVBKL3dCZnpnRUFBQUQzOS9mMy93''@;'; put 'put ''Qm96Z0VBUDRIWG9kZHEvd0J4emdFQTVOelEwQnlML3dCNnpnRUE1VDd4OGJiYS93Q0R6Z0VBUFdmaHVPR0cvd0NNemdFQVNNYXNUYXdtL3dDVnpnRUE1TnpRMEJ5TC93Q2V6Z0VBNVQ3eDhiYmEvd0NuemdFQUFBRDM5L2YzL3dDd3pnRUFQV2ZodU9HRy93QzV6Z0VBU01hc1Rhd20vd0RDemdF''@;'; put 'put ''QTV0ekZ4UnQ5L3dETHpnRUE1MHpwNmFQSi93RFV6Z0VBNlIzOS9lRHYvd0RkemdFQU95YjE1dlhRL3dEbXpnRUFQNEhYb2RkcS93RHZ6Z0VBUk1XU1RaSWgvd0Q0emdFQTV0ekZ4UnQ5L3dBQnp3RUE1MHpwNmFQSi93QUt6d0VBNlIzOS9lRHYvd0FUendFQUFBRDM5L2YzL3dBY3p3RUFPeWIx''@;'; put 'put ''NXZYUS93QWx6d0VBUDRIWG9kZHEvd0F1endFQVJNV1NUWkloL3dBM3p3RUE1dHpGeFJ0OS93QkF6d0VBNkhiZTNuZXUvd0JKendFQTVUN3g4YmJhL3dCU3p3RUE2UjM5L2VEdi93QmJ6d0VBT3liMTV2WFEvd0JrendFQVBXZmh1T0dHL3dCdHp3RUFQNmE4Zjd4Qi93QjJ6d0VBUk1XU1RaSWgv''@;'; put 'put ''d0IvendFQTV0ekZ4UnQ5L3dDSXp3RUE2SGJlM25ldS93Q1J6d0VBNVQ3eDhiYmEvd0NhendFQTZSMzkvZUR2L3dDanp3RUFBQUQzOS9mMy93Q3N6d0VBT3liMTV2WFEvd0MxendFQVBXZmh1T0dHL3dDK3p3RUFQNmE4Zjd4Qi93REh6d0VBUk1XU1RaSWgvd0RRendFQXp2OUxRQUJML3dEYXp3''@;'; put 'put ''RUFaZjlFQUVRYi93RGx6d0VBenEyRGRpcUQvd0R2endFQXgxZXJtWENyL3dENXp3RUF4elBQd3FYUC93QUQwQUVBMGhYbzU5VG8vd0FOMEFFQVRCN3cyZkRUL3dBWDBBRUFVRVRicHR1Zy93QWgwQUVBV0h1dVdxNWgvd0FyMEFFQVljVjRHM2czL3dBMTBBRUF6djlMUUFCTC93QS8wQUVBWWNW''@;'; put 'put ''NEczZzMvd0JLMEFFQVpmOUVBRVFiL3dCVjBBRUF6cTJEZGlxRC93QmYwQUVBeDFlcm1YQ3Ivd0JwMEFFQXh6UFB3cVhQL3dCejBBRUEwaFhvNTlUby93QjkwQUVBQUFEMzkvZjMvd0NIMEFFQVRCN3cyZkRUL3dDUjBBRUFVRVRicHR1Zy93Q2IwQUVBV0h1dVdxNWgvd0NsMEFFQXhFYkRyNDNE''@;'; put 'put ''L3dDdTBBRUFBQUQzOS9mMy93QzMwQUVBVWxxL2Y3OTcvd0RBMEFFQXlhaVVlektVL3dESjBBRUF4elBQd3FYUC93RFMwQUVBVUVUYnB0dWcvd0RiMEFFQVp2K0lBSWczL3dEazBBRUF5YWlVZXpLVS93RHQwQUVBeHpQUHdxWFAvd0QyMEFFQUFBRDM5L2YzL3dELzBBRUFVRVRicHR1Zy93QUkw''@;'; put 'put ''UUVBWnYrSUFJZzMvd0FSMFFFQXpxMkRkaXFEL3dBYTBRRUF4RWJEcjQzRC93QWowUUVBMGhYbzU5VG8vd0FzMFFFQVRCN3cyZkRUL3dBMTBRRUFVbHEvZjc5Ny93QSswUUVBWWNWNEczZzMvd0JIMFFFQXpxMkRkaXFEL3dCUTBRRUF4RWJEcjQzRC93QlowUUVBMGhYbzU5VG8vd0JpMFFFQUFB''@;'; put 'put ''RDM5L2YzL3dCcjBRRUFUQjd3MmZEVC93QjAwUUVBVWxxL2Y3OTcvd0I5MFFFQVljVjRHM2czL3dDRzBRRUF6cTJEZGlxRC93Q1AwUUVBeDFlcm1YQ3Ivd0NZMFFFQXh6UFB3cVhQL3dDaDBRRUEwaFhvNTlUby93Q3EwUUVBVEI3dzJmRFQvd0N6MFFFQVVFVGJwdHVnL3dDODBRRUFXSHV1V3E1''@;'; put 'put ''aC93REYwUUVBWWNWNEczZzMvd0RPMFFFQXpxMkRkaXFEL3dEWDBRRUF4MWVybVhDci93RGcwUUVBeHpQUHdxWFAvd0RwMFFFQTBoWG81OVRvL3dEeTBRRUFBQUQzOS9mMy93RDcwUUVBVEI3dzJmRFQvd0FFMGdFQVVFVGJwdHVnL3dBTjBnRUFXSHV1V3E1aC93QVcwZ0VBWWNWNEczZzMvd0Fm''@;'; put 'put ''MGdFQXZRdnk3T2Z5L3dBbzBnRUFsejNicHIzYi93QXgwZ0VBamNXK0s0eSsvd0E2MGdFQXVRajI4ZTcyL3dCRDBnRUFteWpodmNuaC93Qk0wZ0VBa1hEUGRLblAvd0JWMGdFQWovZXdCWEN3L3dCZTBnRUF1UWoyOGU3Mi93Qm4wZ0VBbXlqaHZjbmgvd0J3MGdFQWtYRFBkS25QL3dCNTBnRUFq''@;'; put 'put ''Y1crSzR5Ky93Q0MwZ0VBai9lTkJGcU4vd0NMMGdFQXVRajI4ZTcyL3dDVTBnRUFxQmptME5IbS93Q2QwZ0VBbHozYnByM2Ivd0NtMGdFQWtYRFBkS25QL3dDdjBnRUFqY1crSzR5Ky93QzQwZ0VBai9lTkJGcU4vd0RCMGdFQXVRajI4ZTcyL3dESzBnRUFxQmptME5IbS93RFQwZ0VBbHozYnBy''@;'; put 'put ''M2Ivd0RjMGdFQWtYRFBkS25QL3dEbDBnRUFqcmZBTnBEQS93RHUwZ0VBai9ld0JYQ3cvd0QzMGdFQWovaDdBMDU3L3dBQTB3RUE2UWovLy9mNy93QUowd0VBdlF2eTdPZnkvd0FTMHdFQXFCam0wTkhtL3dBYjB3RUFsejNicHIzYi93QWswd0VBa1hEUGRLblAvd0F0MHdFQWpyZkFOcERBL3dB''@;'; put 'put ''MjB3RUFqL2V3QlhDdy93QS8wd0VBai9oN0EwNTcvd0JJMHdFQTZRai8vL2Y3L3dCUjB3RUF2UXZ5N09meS93QmEwd0VBcUJqbTBOSG0vd0JqMHdFQWx6M2JwcjNiL3dCczB3RUFrWERQZEtuUC93QjEwd0VBanJmQU5wREEvd0IrMHdFQWovZXdCWEN3L3dDSDB3RUFqL2VOQkZxTi93Q1Ewd0VB''@;'; put 'put ''ai9sWUFqaFkvd0NaMHdFQXlBN3c3T0x3L3dDazB3RUFsejNicHIzYi93Q3Ywd0VBZ3RDWkhKQ1ovd0M2MHdFQXp3ajM5dS8zL3dERjB3RUFteWpodmNuaC93RFEwd0VBajREUFo2blAvd0RiMHdFQWd2dUtBb0dLL3dEbTB3RUF6d2ozOXUvMy93RHgwd0VBbXlqaHZjbmgvd0Q4MHdFQWo0RFBa''@;'; put 'put ''Nm5QL3dBSDFBRUFndENaSEpDWi93QVMxQUVBZC94c0FXeFovd0FkMUFFQXp3ajM5dS8zL3dBbzFBRUFxQmptME5IbS93QXoxQUVBbHozYnByM2Ivd0ErMUFFQWo0RFBaNm5QL3dCSjFBRUFndENaSEpDWi93QlUxQUVBZC94c0FXeFovd0JmMUFFQXp3ajM5dS8zL3dCcTFBRUFxQmptME5IbS93''@;'; put 'put ''QjExQUVBbHozYnByM2Ivd0NBMUFFQWo0RFBaNm5QL3dDTDFBRUFqcmZBTnBEQS93Q1cxQUVBZ3Z1S0FvR0svd0NoMUFFQWR2eGtBV1JRL3dDczFBRUE2UWovLy9mNy93QzMxQUVBeUE3dzdPTHcvd0RDMUFFQXFCam0wTkhtL3dETjFBRUFsejNicHIzYi93RFkxQUVBajREUFo2blAvd0RqMUFF''@;'; put 'put ''QWpyZkFOcERBL3dEdTFBRUFndnVLQW9HSy93RDUxQUVBZHZ4a0FXUlEvd0FFMVFFQTZRai8vL2Y3L3dBUDFRRUF5QTd3N09Mdy93QWExUUVBcUJqbTBOSG0vd0FsMVFFQWx6M2JwcjNiL3dBdzFRRUFqNERQWjZuUC93QTcxUUVBanJmQU5wREEvd0JHMVFFQWd2dUtBb0dLL3dCUjFRRUFkL3hz''@;'; put 'put ''QVd4Wi93QmMxUUVBZGZ0R0FVWTIvd0JuMVFFQUV1NS9menNJL3dCeDFRRUF3LzlMTFFCTC93QjgxUUVBRlBhenMxZ0cvd0NHMVFFQUZ1amc0SUlVL3dDUTFRRUFGNXY5L2Joai93Q2ExUUVBR0VqKy91QzIvd0NrMVFFQXBSVHIyTnJyL3dDdTFRRUFzUy9Tc3F2Uy93QzQxUUVBczFTc2dIT3Mv''@;'; put 'put ''d0RDMVFFQXZiV0lWQ2VJL3dETTFRRUFFdTUvZnpzSS93RFcxUUVBdmJXSVZDZUkvd0RoMVFFQXcvOUxMUUJML3dEczFRRUFGUGF6czFnRy93RDIxUUVBRnVqZzRJSVUvd0FBMWdFQUY1djkvYmhqL3dBSzFnRUFHRWorL3VDMi93QVUxZ0VBQUFEMzkvZjMvd0FlMWdFQXBSVHIyTnJyL3dBbzFn''@;'; put 'put ''RUFzUy9Tc3F2Uy93QXkxZ0VBczFTc2dIT3Mvd0E4MWdFQUY3dng4YU5BL3dCRjFnRUFBQUQzOS9mMy93Qk8xZ0VBc2tYRG1ZN0Qvd0JYMWdFQUVmM201bUVCL3dCZzFnRUFGNXY5L2Joai93QnAxZ0VBc1MvU3NxdlMvd0J5MWdFQXVadVpYanlaL3dCNzFnRUFFZjNtNW1FQi93Q0UxZ0VBRjV2''@;'; put 'put ''OS9iaGovd0NOMWdFQUFBRDM5L2YzL3dDVzFnRUFzUy9Tc3F2Uy93Q2YxZ0VBdVp1WlhqeVovd0NvMWdFQUZQYXpzMWdHL3dDeDFnRUFGN3Z4OGFOQS93QzYxZ0VBR0VqKy91QzIvd0REMWdFQXBSVHIyTnJyL3dETTFnRUFza1hEbVk3RC93RFYxZ0VBdmJXSVZDZUkvd0RlMWdFQUZQYXpzMWdH''@;'; put 'put ''L3dEbjFnRUFGN3Z4OGFOQS93RHcxZ0VBR0VqKy91QzIvd0Q1MWdFQUFBRDM5L2YzL3dBQzF3RUFwUlRyMk5yci93QUwxd0VBc2tYRG1ZN0Qvd0FVMXdFQXZiV0lWQ2VJL3dBZDF3RUFGUGF6czFnRy93QW0xd0VBRnVqZzRJSVUvd0F2MXdFQUY1djkvYmhqL3dBNDF3RUFHRWorL3VDMi93QkIx''@;'; put 'put ''d0VBcFJUcjJOcnIvd0JLMXdFQXNTL1NzcXZTL3dCVDF3RUFzMVNzZ0hPcy93QmMxd0VBdmJXSVZDZUkvd0JsMXdFQUZQYXpzMWdHL3dCdTF3RUFGdWpnNElJVS93QjMxd0VBRjV2OS9iaGovd0NBMXdFQUdFaisvdUMyL3dDSjF3RUFBQUQzOS9mMy93Q1Mxd0VBcFJUcjJOcnIvd0NiMXdFQXNT''@;'; put 'put ''L1NzcXZTL3dDazF3RUFzMVNzZ0hPcy93Q3Qxd0VBdmJXSVZDZUkvd0MyMXdFQXZBN3Y1K0h2L3dDLzF3RUExa1BKeVpUSC93REkxd0VBNnQ3ZDNSeDMvd0RSMXdFQXVRajI4ZTcyL3dEYTF3RUEweW5ZMTdYWS93RGoxd0VBNUl2ZjMyV3cvd0RzMXdFQTcrak96aEpXL3dEMTF3RUF1UWoyOGU3''@;'; put 'put ''Mi93RCsxd0VBMHluWTE3WFkvd0FIMkFFQTVJdmYzMld3L3dBUTJBRUE2dDdkM1J4My93QVoyQUVBN1ArWW1BQkQvd0FpMkFFQXVRajI4ZTcyL3dBcjJBRUF6Q2JhMUxuYS93QTAyQUVBMWtQSnlaVEgvd0E5MkFFQTVJdmYzMld3L3dCRzJBRUE2dDdkM1J4My93QlAyQUVBN1ArWW1BQkQvd0JZ''@;'; put 'put ''MkFFQXVRajI4ZTcyL3dCaDJBRUF6Q2JhMUxuYS93QnEyQUVBMWtQSnlaVEgvd0J6MkFFQTVJdmYzMld3L3dCODJBRUE2ZEhuNXltSy93Q0YyQUVBNytqT3poSlcvd0NPMkFFQTdQK1JrUUEvL3dDWDJBRUF3d1g1OS9UNS93Q2cyQUVBdkE3djUrSHYvd0NwMkFFQXpDYmExTG5hL3dDeTJBRUEx''@;'; put 'put ''a1BKeVpUSC93QzcyQUVBNUl2ZjMyV3cvd0RFMkFFQTZkSG41eW1LL3dETjJBRUE3K2pPemhKVy93RFcyQUVBN1ArUmtRQS8vd0RmMkFFQXd3WDU5L1Q1L3dEbzJBRUF2QTd2NStIdi93RHgyQUVBekNiYTFMbmEvd0Q2MkFFQTFrUEp5WlRIL3dBRDJRRUE1SXZmMzJXdy93QU0yUUVBNmRIbjV5''@;'; put 'put ''bUsvd0FWMlFFQTcrak96aEpXL3dBZTJRRUE3UCtZbUFCRC93QW4yUUVBOHY5blp3QWYvd0F3MlFFQXRBajE3KzMxL3dBODJRRUFxQ1hjdkwzYy93QkkyUUVBc0dTeGRXdXgvd0JVMlFFQXRnZjM4dkQzL3dCZzJRRUFyUnppeThuaS93QnMyUUVBclRySW5wckkvd0I0MlFFQXRvQ2phbEdqL3dD''@;'; put 'put ''RTJRRUF0Z2YzOHZEMy93Q1EyUUVBclJ6aXk4bmkvd0NjMlFFQXJUcklucHJJL3dDbzJRRUFzR1N4ZFd1eC93QzAyUUVBdkxtUFZDZVAvd0RBMlFFQXRnZjM4dkQzL3dETTJRRUFxaExyMnRyci93RFkyUUVBcUNYY3ZMM2Mvd0RrMlFFQXJUcklucHJJL3dEdzJRRUFzR1N4ZFd1eC93RDgyUUVB''@;'; put 'put ''dkxtUFZDZVAvd0FJMmdFQXRnZjM4dkQzL3dBVTJnRUFxaExyMnRyci93QWcyZ0VBcUNYY3ZMM2Mvd0FzMmdFQXJUcklucHJJL3dBNDJnRUFyRk82Z0gyNi93QkUyZ0VBdG9DamFsR2ovd0JRMmdFQXZ0aUdTaFNHL3dCYzJnRUF2d0w5L1B2OS93Qm8yZ0VBdEFqMTcrMzEvd0IwMmdFQXFoTHIy''@;'; put 'put ''dHJyL3dDQTJnRUFxQ1hjdkwzYy93Q00yZ0VBclRySW5wckkvd0NZMmdFQXJGTzZnSDI2L3dDazJnRUF0b0NqYWxHai93Q3cyZ0VBdnRpR1NoU0cvd0M4MmdFQXZ3TDkvUHY5L3dESTJnRUF0QWoxNyszMS93RFUyZ0VBcWhMcjJ0cnIvd0RnMmdFQXFDWGN2TDNjL3dEczJnRUFyVHJJbnBySS93''@;'; put 'put ''RDQyZ0VBckZPNmdIMjYvd0FFMndFQXRvQ2phbEdqL3dBUTJ3RUF2TG1QVkNlUC93QWMyd0VBdi85OVB3Qjkvd0FvMndFQTh2OW5ad0FmL3dBeTJ3RUFsdkZoQlRCaC93QTkyd0VBK2R5eXNoZ3Ivd0JIMndFQUJhUFcxbUJOL3dCUjJ3RUFEWGYwOUtXQy93QmIyd0VBRHpiOS9kdkgvd0JsMndF''@;'; put 'put ''QWppRHcwZVh3L3dCdjJ3RUFqVmZla3NYZS93QjUyd0VBajZmRFE1UEQvd0NEMndFQWxNNnNJV2FzL3dDTjJ3RUE4djluWndBZi93Q1gyd0VBbE02c0lXYXMvd0NpMndFQWx2RmhCVEJoL3dDdDJ3RUErZHl5c2hnci93QzMyd0VBQmFQVzFtQk4vd0RCMndFQURYZjA5S1dDL3dETDJ3RUFEemI5''@;'; put 'put ''L2R2SC93RFYyd0VBQUFEMzkvZjMvd0RmMndFQWppRHcwZVh3L3dEcDJ3RUFqVmZla3NYZS93RHoyd0VBajZmRFE1UEQvd0Q5MndFQURKYnY3NHBpL3dBRzNBRUFBQUQzOS9mMy93QVAzQUVBajREUFo2blAvd0FZM0FFQStQL0t5Z0FnL3dBaDNBRUFEWGYwOUtXQy93QXEzQUVBalZmZWtzWGUv''@;'; put 'put ''d0F6M0FFQWovZXdCWEd3L3dBODNBRUErUC9LeWdBZy93QkYzQUVBRFhmMDlLV0Mvd0JPM0FFQUFBRDM5L2YzL3dCWDNBRUFqVmZla3NYZS93QmczQUVBai9ld0JYR3cvd0JwM0FFQStkeXlzaGdyL3dCeTNBRUFESmJ2NzRwaS93QjczQUVBRHpiOS9kdkgvd0NFM0FFQWppRHcwZVh3L3dDTjNB''@;'; put 'put ''RUFqNERQWjZuUC93Q1czQUVBbE02c0lXYXMvd0NmM0FFQStkeXlzaGdyL3dDbzNBRUFESmJ2NzRwaS93Q3gzQUVBRHpiOS9kdkgvd0M2M0FFQUFBRDM5L2YzL3dERDNBRUFqaUR3MGVYdy93RE0zQUVBajREUFo2blAvd0RWM0FFQWxNNnNJV2FzL3dEZTNBRUErZHl5c2hnci93RG4zQUVBQmFQ''@;'; put 'put ''VzFtQk4vd0R3M0FFQURYZjA5S1dDL3dENTNBRUFEemI5L2R2SC93QUMzUUVBamlEdzBlWHcvd0FMM1FFQWpWZmVrc1hlL3dBVTNRRUFqNmZEUTVQRC93QWQzUUVBbE02c0lXYXMvd0FtM1FFQStkeXlzaGdyL3dBdjNRRUFCYVBXMW1CTi93QTQzUUVBRFhmMDlLV0Mvd0JCM1FFQUR6YjkvZHZI''@;'; put 'put ''L3dCSzNRRUFBQUQzOS9mMy93QlQzUUVBamlEdzBlWHcvd0JjM1FFQWpWZmVrc1hlL3dCbDNRRUFqNmZEUTVQRC93QnUzUUVBbE02c0lXYXMvd0IzM1FFQTh2OW5ad0FmL3dDQjNRRUFBQUFhR2hvYS93Q00zUUVBK2R5eXNoZ3Ivd0NXM1FFQUJhUFcxbUJOL3dDZzNRRUFEWGYwOUtXQy93Q3Ez''@;'; put 'put ''UUVBRHpiOS9kdkgvd0MwM1FFQUFBRGc0T0RnL3dDKzNRRUFBQUM2dXJxNi93REkzUUVBQUFDSGg0ZUgvd0RTM1FFQUFBQk5UVTFOL3dEYzNRRUE4djluWndBZi93RG0zUUVBQUFCTlRVMU4vd0R4M1FFQUFBQWFHaG9hL3dEODNRRUErZHl5c2hnci93QUczZ0VBQmFQVzFtQk4vd0FRM2dFQURY''@;'; put 'put ''ZjA5S1dDL3dBYTNnRUFEemI5L2R2SC93QWszZ0VBQUFELy8vLy8vd0F1M2dFQUFBRGc0T0RnL3dBNDNnRUFBQUM2dXJxNi93QkMzZ0VBQUFDSGg0ZUgvd0JNM2dFQURKYnY3NHBpL3dCVjNnRUFBQUQvLy8vLy93QmUzZ0VBQUFDWm1abVovd0JuM2dFQStQL0t5Z0FnL3dCdzNnRUFEWGYwOUtX''@;'; put 'put ''Qy93QjUzZ0VBQUFDNnVycTYvd0NDM2dFQUFBQkFRRUJBL3dDTDNnRUErUC9LeWdBZy93Q1UzZ0VBRFhmMDlLV0Mvd0NkM2dFQUFBRC8vLy8vL3dDbTNnRUFBQUM2dXJxNi93Q3YzZ0VBQUFCQVFFQkEvd0M0M2dFQStkeXlzaGdyL3dEQjNnRUFESmJ2NzRwaS93REszZ0VBRHpiOS9kdkgvd0RU''@;'; put 'put ''M2dFQUFBRGc0T0RnL3dEYzNnRUFBQUNabVptWi93RGwzZ0VBQUFCTlRVMU4vd0R1M2dFQStkeXlzaGdyL3dEMzNnRUFESmJ2NzRwaS93QUEzd0VBRHpiOS9kdkgvd0FKM3dFQUFBRC8vLy8vL3dBUzN3RUFBQURnNE9EZy93QWIzd0VBQUFDWm1abVovd0FrM3dFQUFBQk5UVTFOL3dBdDN3RUEr''@;'; put 'put ''ZHl5c2hnci93QTIzd0VBQmFQVzFtQk4vd0EvM3dFQURYZjA5S1dDL3dCSTN3RUFEemI5L2R2SC93QlIzd0VBQUFEZzRPRGcvd0JhM3dFQUFBQzZ1cnE2L3dCajN3RUFBQUNIaDRlSC93QnMzd0VBQUFCTlRVMU4vd0IxM3dFQStkeXlzaGdyL3dCKzN3RUFCYVBXMW1CTi93Q0gzd0VBRFhmMDlL''@;'; put 'put ''V0Mvd0NRM3dFQUR6YjkvZHZIL3dDWjN3RUFBQUQvLy8vLy93Q2kzd0VBQUFEZzRPRGcvd0NyM3dFQUFBQzZ1cnE2L3dDMDN3RUFBQUNIaDRlSC93Qzkzd0VBQUFCTlRVMU4vd0RHM3dFQUF5RDkvZURkL3dEUDN3RUE5Rno2K3ArMS93RFkzd0VBNDl6RnhSdUsvd0RoM3dFQURSeisvdXZpL3dE''@;'; put 'put ''cTN3RUEvRWo3KzdTNS93RHozd0VBN3BQMzkyaWgvd0Q4M3dFQTRQMnVyZ0YrL3dBRjRBRUFEUnorL3V2aS93QU80QUVBL0VqNys3UzUvd0FYNEFFQTdwUDM5MmloL3dBZzRBRUE0OXpGeFJ1Sy93QXA0QUVBMWZ4NmVnRjMvd0F5NEFFQURSeisvdXZpL3dBNzRBRUFBeno4L01YQS93QkU0QUVB''@;'; put 'put ''OUZ6NitwKzEvd0JONEFFQTdwUDM5MmloL3dCVzRBRUE0OXpGeFJ1Sy93QmY0QUVBMWZ4NmVnRjMvd0JvNEFFQURSeisvdXZpL3dCeDRBRUFBeno4L01YQS93QjY0QUVBOUZ6NitwKzEvd0NENEFFQTdwUDM5MmloL3dDTTRBRUE1c1BkM1RTWC93Q1Y0QUVBNFAydXJnRisvd0NlNEFFQTFmeDZl''@;'; put 'put ''Z0YzL3dDbjRBRUFEZ3ovLy9mei93Q3c0QUVBQXlEOS9lRGQvd0M1NEFFQUF6ejgvTVhBL3dEQzRBRUE5Rno2K3ArMS93REw0QUVBN3BQMzkyaWgvd0RVNEFFQTVzUGQzVFNYL3dEZDRBRUE0UDJ1cmdGKy93RG00QUVBMWZ4NmVnRjMvd0R2NEFFQURnei8vL2Z6L3dENDRBRUFBeUQ5L2VEZC93''@;'; put 'put ''QUI0UUVBQXp6OC9NWEEvd0FLNFFFQTlGejYrcCsxL3dBVDRRRUE3cFAzOTJpaC93QWM0UUVBNXNQZDNUU1gvd0FsNFFFQTRQMnVyZ0YrL3dBdTRRRUExZng2ZWdGMy93QTM0UUVBeC85cVNRQnEvd0JBNFFFQTlmK2xwUUFtL3dCTTRRRUFwNnVWTVRhVi93Qlo0UUVBQXREWDF6QW4vd0JsNFFF''@;'; put 'put ''QUNyajA5RzFEL3dCeDRRRUFGSjM5L2E1aC93Qjk0UUVBSG03Ky91Q1Evd0NKNFFFQWlCajQ0UFA0L3dDVjRRRUFpa1BwcTlucC93Q2g0UUVBajNIUmRLM1Ivd0N0NFFFQWw1MjBSWFcwL3dDNTRRRUE5ZitscFFBbS93REY0UUVBbDUyMFJYVzAvd0RTNFFFQXA2dVZNVGFWL3dEZjRRRUFBdERY''@;'; put 'put ''MXpBbi93RHI0UUVBQ3JqMDlHMUQvd0QzNFFFQUZKMzkvYTVoL3dBRDRnRUFIbTcrL3VDUS93QVA0Z0VBS2tELy8vKy8vd0FiNGdFQWlCajQ0UFA0L3dBbjRnRUFpa1BwcTlucC93QXo0Z0VBajNIUmRLM1Ivd0EvNGdFQURhVDgvSTFaL3dCSzRnRUFLa0QvLy8rLy93QlY0Z0VBajFiYmtiL2Iv''@;'; put 'put ''d0JnNGdFQS91SFgxeGtjL3dCcjRnRUFGSjM5L2E1aC93QjI0Z0VBaWtQcHE5bnAvd0NCNGdFQWtjRzJMSHUyL3dDTTRnRUEvdUhYMXhrYy93Q1g0Z0VBRkozOS9hNWgvd0NpNGdFQUtrRC8vLysvL3dDdDRnRUFpa1BwcTlucC93QzQ0Z0VBa2NHMkxIdTIvd0RENGdFQUF0RFgxekFuL3dETzRn''@;'; put 'put ''RUFEYVQ4L0kxWi93RFo0Z0VBSG03Ky91Q1Evd0RrNGdFQWlCajQ0UFA0L3dEdjRnRUFqMWJia2IvYi93RDY0Z0VBbDUyMFJYVzAvd0FGNHdFQUF0RFgxekFuL3dBUTR3RUFEYVQ4L0kxWi93QWI0d0VBSG03Ky91Q1Evd0FtNHdFQUtrRC8vLysvL3dBeDR3RUFpQmo0NFBQNC93QTg0d0VBajFi''@;'; put 'put ''YmtiL2Ivd0JINHdFQWw1MjBSWFcwL3dCUzR3RUFBdERYMXpBbi93QmQ0d0VBQ3JqMDlHMUQvd0JvNHdFQUZKMzkvYTVoL3dCejR3RUFIbTcrL3VDUS93Qis0d0VBaUJqNDRQUDQvd0NKNHdFQWlrUHBxOW5wL3dDVTR3RUFqM0hSZEszUi93Q2Y0d0VBbDUyMFJYVzAvd0NxNHdFQUF0RFgxekFu''@;'; put 'put ''L3dDMTR3RUFDcmowOUcxRC93REE0d0VBRkozOS9hNWgvd0RMNHdFQUhtNysvdUNRL3dEVzR3RUFLa0QvLy8rLy93RGg0d0VBaUJqNDRQUDQvd0RzNHdFQWlrUHBxOW5wL3dEMzR3RUFqM0hSZEszUi93QUM1QUVBbDUyMFJYVzAvd0FONUFFQTlmK2xwUUFtL3dBWjVBRUFhLzlvQUdnMy93QW01''@;'; put 'put ''QUVBQXREWDF6QW4vd0F5NUFFQUNyajA5RzFEL3dBKzVBRUFGSjM5L2E1aC93Qks1QUVBSDNQKy91Q0wvd0JXNUFFQU0ycnYyZStML3dCaTVBRUFQb0xacHRscS93QnU1QUVBVTNtOVpyMWovd0I2NUFFQVo5T1lHcGhRL3dDRzVBRUE5ZitscFFBbS93Q1M1QUVBWjlPWUdwaFEvd0NmNUFFQWEv''@;'; put 'put ''OW9BR2czL3dDczVBRUFBdERYMXpBbi93QzQ1QUVBQ3JqMDlHMUQvd0RFNUFFQUZKMzkvYTVoL3dEUTVBRUFIM1ArL3VDTC93RGM1QUVBS2tELy8vKy8vd0RvNUFFQU0ycnYyZStML3dEMDVBRUFQb0xacHRscS93QUE1UUVBVTNtOVpyMWovd0FNNVFFQURhVDgvSTFaL3dBWDVRRUFLa0QvLy8r''@;'; put 'put ''Ly93QWk1UUVBUW9qUGtjOWcvd0F0NVFFQS91SFgxeGtjL3dBNDVRRUFGSjM5L2E1aC93QkQ1UUVBUG9MWnB0bHEvd0JPNVFFQVl0S1dHcFpCL3dCWjVRRUEvdUhYMXhrYy93Qms1UUVBRkozOS9hNWgvd0J2NVFFQUtrRC8vLysvL3dCNjVRRUFQb0xacHRscS93Q0Y1UUVBWXRLV0dwWkIvd0NR''@;'; put 'put ''NVFFQUF0RFgxekFuL3dDYjVRRUFEYVQ4L0kxWi93Q201UUVBSDNQKy91Q0wvd0N4NVFFQU0ycnYyZStML3dDODVRRUFRb2pQa2M5Zy93REg1UUVBWjlPWUdwaFEvd0RTNVFFQUF0RFgxekFuL3dEZDVRRUFEYVQ4L0kxWi93RG81UUVBSDNQKy91Q0wvd0R6NVFFQUtrRC8vLysvL3dEKzVRRUFN''@;'; put 'put ''MnJ2MmUrTC93QUo1Z0VBUW9qUGtjOWcvd0FVNWdFQVo5T1lHcGhRL3dBZjVnRUFBdERYMXpBbi93QXE1Z0VBQ3JqMDlHMUQvd0ExNWdFQUZKMzkvYTVoL3dCQTVnRUFIM1ArL3VDTC93Qkw1Z0VBTTJydjJlK0wvd0JXNWdFQVBvTFpwdGxxL3dCaDVnRUFVM205WnIxai93QnM1Z0VBWjlPWUdw''@;'; put 'put ''aFEvd0IzNWdFQUF0RFgxekFuL3dDQzVnRUFDcmowOUcxRC93Q041Z0VBRkozOS9hNWgvd0NZNWdFQUgzUCsvdUNML3dDajVnRUFLa0QvLy8rLy93Q3U1Z0VBTTJydjJlK0wvd0M1NWdFQVBvTFpwdGxxL3dERTVnRUFVM205WnIxai93RFA1Z0VBWjlPWUdwaFEvd0RhNWdFQURTeisvdURTL3dE''@;'; put 'put ''ajVnRUFDWXY4L0pKeS93RHM1Z0VBQWRQZTNpMG0vd0QxNWdFQURTWCsvdVhaL3dEKzVnRUFDMno4L0s2Ui93QUg1d0VBQjdQNysycEsvd0FRNXdFQS9lREx5eGdkL3dBWjV3RUFEU1grL3VYWi93QWk1d0VBQzJ6OC9LNlIvd0FyNXdFQUI3UDcrMnBLL3dBMDV3RUFBZFBlM2kwbS93QTk1d0VB''@;'; put 'put ''L2VlbHBROFYvd0JHNXdFQURTWCsvdVhaL3dCUDV3RUFERno4L0x1aC93Qlk1d0VBQ1l2OC9KSnkvd0JoNXdFQUI3UDcrMnBLL3dCcTV3RUFBZFBlM2kwbS93Qno1d0VBL2VlbHBROFYvd0I4NXdFQURTWCsvdVhaL3dDRjV3RUFERno4L0x1aC93Q081d0VBQ1l2OC9KSnkvd0NYNXdFQUI3UDcr''@;'; put 'put ''MnBLL3dDZzV3RUFBOUR2N3pzcy93Q3A1d0VBL2VETHl4Z2Qvd0N5NXdFQSsvK1ptUUFOL3dDNzV3RUFEZy8vLy9Ydy93REU1d0VBRFN6Ky91RFMvd0RONXdFQURGejgvTHVoL3dEVzV3RUFDWXY4L0pKeS93RGY1d0VBQjdQNysycEsvd0RvNXdFQUE5RHY3enNzL3dEeDV3RUEvZURMeXhnZC93''@;'; put 'put ''RDY1d0VBKy8rWm1RQU4vd0FENkFFQURnLy8vL1h3L3dBTTZBRUFEU3orL3VEUy93QVY2QUVBREZ6OC9MdWgvd0FlNkFFQUNZdjgvSkp5L3dBbjZBRUFCN1A3KzJwSy93QXc2QUVBQTlEdjd6c3Mvd0E1NkFFQS9lREx5eGdkL3dCQzZBRUEvZWVscFE4Vi93Qkw2QUVBK2Y5blp3QU4vd0JVNkFF''@;'; put 'put ''QS91SGs1Qm9jL3dCZDZBRUFrcks0TjM2NC93Qm02QUVBVTVPdlRhOUsvd0J2NkFFQS91SGs1Qm9jL3dCNDZBRUFrcks0TjM2NC93Q0I2QUVBVTVPdlRhOUsvd0NLNkFFQXo0U2ptRTZqL3dDVDZBRUEvdUhrNUJvYy93Q2M2QUVBa3JLNE4zNjQvd0NsNkFFQVU1T3ZUYTlLL3dDdTZBRUF6NFNq''@;'; put 'put ''bUU2ai93QzM2QUVBRmYvLy8zOEEvd0RBNkFFQS91SGs1Qm9jL3dESjZBRUFrcks0TjM2NC93RFM2QUVBVTVPdlRhOUsvd0RiNkFFQXo0U2ptRTZqL3dEazZBRUFGZi8vLzM4QS93RHQ2QUVBS3N6Ly8vOHovd0QyNkFFQS91SGs1Qm9jL3dELzZBRUFrcks0TjM2NC93QUk2UUVBVTVPdlRhOUsv''@;'; put 'put ''d0FSNlFFQXo0U2ptRTZqL3dBYTZRRUFGZi8vLzM4QS93QWo2UUVBS3N6Ly8vOHovd0FzNlFFQUQ4R21wbFlvL3dBMTZRRUEvdUhrNUJvYy93QSs2UUVBa3JLNE4zNjQvd0JINlFFQVU1T3ZUYTlLL3dCUTZRRUF6NFNqbUU2ai93Qlo2UUVBRmYvLy8zOEEvd0JpNlFFQUtzei8vLzh6L3dCcjZR''@;'; put 'put ''RUFEOEdtcGxZby93QjA2UUVBNkhuMzk0Ry8vd0I5NlFFQS91SGs1Qm9jL3dDRzZRRUFrcks0TjM2NC93Q1A2UUVBVTVPdlRhOUsvd0NZNlFFQXo0U2ptRTZqL3dDaDZRRUFGZi8vLzM4QS93Q3E2UUVBS3N6Ly8vOHovd0N6NlFFQUQ4R21wbFlvL3dDODZRRUE2SG4zOTRHLy93REY2UUVBQUFD''@;'; put 'put ''Wm1abVovd0RPNlFFQWNuakNac0tsL3dEWDZRRUFDNXY4L0kxaS93RGc2UUVBbkUzTGphREwvd0RwNlFFQWNuakNac0tsL3dEeTZRRUFDNXY4L0kxaS93RDc2UUVBbkUzTGphREwvd0FFNmdFQTVHYm41NHJEL3dBTjZnRUFjbmpDWnNLbC93QVc2Z0VBQzV2OC9JMWkvd0FmNmdFQW5FM0xqYURM''@;'; put 'put ''L3dBbzZnRUE1R2JuNTRyRC93QXg2Z0VBT3B2WXB0aFUvd0E2NmdFQWNuakNac0tsL3dCRDZnRUFDNXY4L0kxaS93Qk02Z0VBbkUzTGphREwvd0JWNmdFQTVHYm41NHJEL3dCZTZnRUFPcHZZcHRoVS93Qm42Z0VBSXRELy85a3Yvd0J3NmdFQWNuakNac0tsL3dCNTZnRUFDNXY4L0kxaS93Q0M2''@;'; put 'put ''Z0VBbkUzTGphREwvd0NMNmdFQTVHYm41NHJEL3dDVTZnRUFPcHZZcHRoVS93Q2Q2Z0VBSXRELy85a3Yvd0NtNmdFQUdWcmw1Y1NVL3dDdjZnRUFjbmpDWnNLbC93QzQ2Z0VBQzV2OC9JMWkvd0RCNmdFQW5FM0xqYURML3dESzZnRUE1R2JuNTRyRC93RFQ2Z0VBT3B2WXB0aFUvd0RjNmdFQUl0''@;'; put 'put ''RC8vOWt2L3dEbDZnRUFHVnJsNWNTVS93RHU2Z0VBQUFDenM3T3ovd0QzNmdFQWVGVFRqZFBIL3dBQjZ3RUEwMUs5dklDOS93QU02d0VBS2t6Ly8vK3ovd0FXNndFQXJ5WGF2cnJhL3dBZzZ3RUFCSXY3KzRCeS93QXE2d0VBa0dUVGdMSFQvd0EwNndFQUZwejkvYlJpL3dBKzZ3RUFPb2Jlczk1''@;'; put 'put ''cC93Qkk2d0VBNlMvOC9NM2wvd0JTNndFQUFBRFoyZG5aL3dCYzZ3RUFlRlRUamRQSC93Qm02d0VBMDFLOXZJQzkvd0J4NndFQVRTbnJ6T3ZGL3dCODZ3RUFLa3ovLy8rei93Q0c2d0VBcnlYYXZycmEvd0NRNndFQUJJdjcrNEJ5L3dDYTZ3RUFrR1RUZ0xIVC93Q2s2d0VBRnB6OS9iUmkvd0N1''@;'; put 'put ''NndFQU9vYmVzOTVwL3dDNDZ3RUE2Uy84L00zbC93REM2d0VBQUFEWjJkblovd0RNNndFQWVGVFRqZFBIL3dEVzZ3RUEwMUs5dklDOS93RGg2d0VBVFNucnpPdkYvd0RzNndFQUpaRC8vKzF2L3dEMzZ3RUFLa3ovLy8rei93QUI3QUVBcnlYYXZycmEvd0FMN0FFQUJJdjcrNEJ5L3dBVjdBRUFr''@;'; put 'put ''R1RUZ0xIVC93QWY3QUVBRnB6OS9iUmkvd0FwN0FFQU9vYmVzOTVwL3dBejdBRUE2Uy84L00zbC93QTk3QUVBQUFEWjJkblovd0JIN0FFQWVGVFRqZFBIL3dCUTdBRUFLa3ovLy8rei93Qlo3QUVBcnlYYXZycmEvd0JpN0FFQWVGVFRqZFBIL3dCcjdBRUFLa3ovLy8rei93QjA3QUVBcnlYYXZy''@;'; put 'put ''cmEvd0I5N0FFQUJJdjcrNEJ5L3dDRzdBRUFlRlRUamRQSC93Q1A3QUVBS2t6Ly8vK3ovd0NZN0FFQXJ5WGF2cnJhL3dDaDdBRUFCSXY3KzRCeS93Q3E3QUVBa0dUVGdMSFQvd0N6N0FFQWVGVFRqZFBIL3dDODdBRUFLa3ovLy8rei93REY3QUVBcnlYYXZycmEvd0RPN0FFQUJJdjcrNEJ5L3dE''@;'; put 'put ''WDdBRUFrR1RUZ0xIVC93RGc3QUVBRnB6OS9iUmkvd0RwN0FFQWVGVFRqZFBIL3dEeTdBRUFLa3ovLy8rei93RDc3QUVBcnlYYXZycmEvd0FFN1FFQUJJdjcrNEJ5L3dBTjdRRUFrR1RUZ0xIVC93QVc3UUVBRnB6OS9iUmkvd0FmN1FFQU9vYmVzOTVwL3dBbzdRRUFlRlRUamRQSC93QXg3UUVB''@;'; put 'put ''S2t6Ly8vK3ovd0E2N1FFQXJ5WGF2cnJhL3dCRDdRRUFCSXY3KzRCeS93Qk03UUVBa0dUVGdMSFQvd0JWN1FFQUZwejkvYlJpL3dCZTdRRUFPb2Jlczk1cC93Qm43UUVBNlMvOC9NM2wvd0J3N1FFQWVGVFRqZFBIL3dCNTdRRUFLa3ovLy8rei93Q0M3UUVBcnlYYXZycmEvd0NMN1FFQUJJdjcr''@;'; put 'put ''NEJ5L3dDVTdRRUFrR1RUZ0xIVC93Q2Q3UUVBRnB6OS9iUmkvd0NtN1FFQU9vYmVzOTVwL3dDdjdRRUE2Uy84L00zbC93QzQ3UUVBQUFEWjJkblovd0RCN1FFQTdmMmVuZ0ZDL3dEUDdRRUFzWUtpWGsraS93RGU3UUVBK3JUVjFUNVAvd0RzN1FFQUNyajA5RzFEL3dENjdRRUFGSjM5L2E1aC93''@;'; put 'put ''QUk3Z0VBSDNQKy91Q0wvd0FXN2dFQU1XRDE1dldZL3dBazdnRUFUMEhkcTkyay93QXk3Z0VBY25qQ1pzS2wvd0JBN2dFQWo3dTlNb2k5L3dCTzdnRUE3ZjJlbmdGQy93QmM3Z0VBajd1OU1vaTkvd0JyN2dFQXNZS2lYaytpL3dCNjdnRUErclRWMVQ1UC93Q0k3Z0VBQ3JqMDlHMUQvd0NXN2dF''@;'; put 'put ''QUZKMzkvYTVoL3dDazdnRUFIM1ArL3VDTC93Q3k3Z0VBS2tELy8vKy8vd0RBN2dFQU1XRDE1dldZL3dETzdnRUFUMEhkcTkyay93RGM3Z0VBY25qQ1pzS2wvd0RxN2dFQURhVDgvSTFaL3dEMzdnRUFLa0QvLy8rLy93QUU3d0VBVVUzVm1kV1Uvd0FSN3dFQS91SFgxeGtjL3dBZTd3RUFGSjM5''@;'; put 'put ''L2E1aC93QXI3d0VBVDBIZHE5Mmsvd0E0N3dFQWo4UzZLNE82L3dCRjd3RUEvdUhYMXhrYy93QlM3d0VBRkozOS9hNWgvd0JmN3dFQUtrRC8vLysvL3dCczd3RUFUMEhkcTkyay93QjU3d0VBajhTNks0TzYvd0NHN3dFQStyVFYxVDVQL3dDVDd3RUFEYVQ4L0kxWi93Q2c3d0VBSDNQKy91Q0wv''@;'; put 'put ''d0N0N3dFQU1XRDE1dldZL3dDNjd3RUFVVTNWbWRXVS93REg3d0VBajd1OU1vaTkvd0RVN3dFQStyVFYxVDVQL3dEaDd3RUFEYVQ4L0kxWi93RHU3d0VBSDNQKy91Q0wvd0Q3N3dFQUtrRC8vLysvL3dBSThBRUFNV0QxNXZXWS93QVY4QUVBVVUzVm1kV1Uvd0FpOEFFQWo3dTlNb2k5L3dBdjhB''@;'; put 'put ''RUErclRWMVQ1UC93QTg4QUVBQ3JqMDlHMUQvd0JKOEFFQUZKMzkvYTVoL3dCVzhBRUFIM1ArL3VDTC93Qmo4QUVBTVdEMTV2V1kvd0J3OEFFQVQwSGRxOTJrL3dCOThBRUFjbmpDWnNLbC93Q0s4QUVBajd1OU1vaTkvd0NYOEFFQStyVFYxVDVQL3dDazhBRUFDcmowOUcxRC93Q3g4QUVBRkoz''@;'; put 'put ''OS9hNWgvd0MrOEFFQUgzUCsvdUNML3dETDhBRUFLa0QvLy8rLy93RFk4QUVBTVdEMTV2V1kvd0RsOEFFQVQwSGRxOTJrL3dEeThBRUFjbmpDWnNLbC93RC84QUVBajd1OU1vaTkvd0FNOFFFQWt3Ly84UGovL3dBYjhRRUFHQ1A2K3V2WC93QXQ4UUVBZi8vL0FQLy8vd0EzOFFFQWNZRC9mLy9V''@;'; put 'put ''L3dCSDhRRUFmdy8vOFAvLy93QlM4UUVBS2hyMTlmWGMvd0JkOFFFQUZ6ci8vK1RFL3dCcDhRRUFBQUFBQUFBQS93QjA4UUVBR1RILy8rdk4vd0NJOFFFQXF2Ly9BQUQvL3dDUzhRRUF3TTdpaWl2aS93Q2k4UUVBQUw2bHBTb3Evd0N0OFFFQUYyUGUzcmlIL3dDODhRRUFnR2VnWDU2Zy93REw4''@;'; put 'put ''UUVBUC8vL2YvOEEvd0RiOFFFQUVkclMwbWtlL3dEcThRRUFDNi8vLzM5US93RDE4UUVBbXBQdFpKWHQvd0FKOGdFQUlTTC8vL2pjL3dBWDhnRUE5dWZjM0JROC93QWs4Z0VBZi8vL0FQLy8vd0F1OGdFQXF2K0xBQUNML3dBODhnRUFmLytMQUl1TC93Qks4Z0VBSHUrNHVJWUwvd0JkOGdFQUFB''@;'; put 'put ''Q3BxYW1wL3dCcjhnRUFWZjlrQUdRQS93QjY4Z0VBQUFDcHFhbXAvd0NJOGdFQUoyNjl2YmRyL3dDWDhnRUExUCtMaXdDTC93Q284Z0VBT281clZXc3Yvd0M4OGdFQUYvLy8vNHdBL3dETThnRUF4c0RNbVRMTS93RGM4Z0VBQVArTGl3QUEvd0RwOGdFQUNubnA2Wlo2L3dENThnRUFWVDI4ajd5''@;'; put 'put ''UC93QUw4d0VBcjQrTFNEMkwvd0FlOHdFQWYyZFBMMDlQL3dBeDh3RUFmMmRQTDA5UC93QkU4d0VBZ1AvUkFNN1Ivd0JYOHdFQXgvL1RsQURUL3dCbjh3RUE2T3YvL3hTVC93QjE4d0VBaXYvL0FMLy8vd0NHOHdFQUFBQnBhV2xwL3dDVDh3RUFBQUJwYVdscC93Q2c4d0VBbE9IL0hwRC8vd0N3''@;'; put 'put ''OHdFQUFNNnlzaUlpL3dDLzh3RUFIQS8vLy9ydy93RFE4d0VBVmNDTElvc2kvd0RoOHdFQTFQLy8vd0QvL3dEdTh3RUFBQURjM056Yy93RDk4d0VBcWdmLytQai8vd0FOOUFFQUkvLy8vOWNBL3dBWDlBRUFIdG5hMnFVZy93QW05QUVBQUFDQWdJQ0Evd0F3OUFFQVZmK0FBSUFBL3dBNzlBRUFP''@;'; put 'put ''OUQvcmY4di93Qk05QUVBQUFDQWdJQ0Evd0JXOUFFQVZRLy84UC93L3dCazlBRUE2WmIvLzJtMC93Qng5QUVBQUl6TnpWeGMvd0NBOUFFQXd2K0NTd0NDL3dDTTlBRUFLZy8vLy8vdy93Q1g5QUVBSm1ydzhPYU0vd0NpOUFFQXFoVDY1dWI2L3dDdzlBRUE4QS8vLy9EMS93REQ5QUVBUVAvOGZQ''@;'; put 'put ''d0Evd0RTOUFFQUpqSC8vL3JOL3dEazlBRUFpVC9tcmRqbS93RHo5QUVBQUhmdzhJQ0Evd0FEOVFFQWZ4Ly80UC8vL3dBUzlRRUFLaWo2K3ZyUy93QXM5UUVBQUFEVDA5UFQvd0E3OVFFQVZXVHVrTzZRL3dCTDlRRUFBQURUMDlQVC93QmE5UUVBK0VuLy83YkIvd0JwOVFFQURJVC8vNkI2L3dC''@;'; put 'put ''NjlRRUFmZEd5SUxLcS93Q045UUVBajNYNmg4NzYvd0NmOVFFQWxEaVpkNGlaL3dDejlRRUFsRGlaZDRpWi93REg5UUVBbHpUZXNNVGUvd0RiOVFFQUtoLy8vLy9nL3dEczlRRUFWZi8vQVA4QS93RDI5UUVBVmNETk1zMHkvd0FGOWdFQUZSVDYrdkRtL3dBUTlnRUExUC8vL3dELy93QWQ5Z0VB''@;'; put 'put ''QVArQWdBQUEvd0FwOWdFQWNZRE5aczJxL3dBLzlnRUFxdi9OQUFETi93QlA5Z0VBekpqVHVsWFQvd0JoOWdFQXQzemJrM0RiL3dCejlnRUFaNm16UExOeC93Q0g5Z0VBc0kvdWUyanUvd0NjOWdFQWIvLzZBUHFhL3dDejlnRUFmYWZSU05ITS93REk5Z0VBNU9USHh4V0Yvd0RkOWdFQXFzWndH''@;'; put 'put ''Umx3L3dEdjlnRUFhZ24vOWYvNi93RCs5Z0VBQkI3Ly8rVGgvd0FOOXdFQUdrbi8vK1MxL3dBYjl3RUFHVkgvLzk2dC93QXM5d0VBcXYrQUFBQ0Evd0EyOXdFQUd4ZjkvZlhtL3dCRDl3RUFLditBZ0lBQS93Qk85d0VBT01DT2E0NGovd0JkOXdFQUcvLy8vNlVBL3dCcDl3RUFDLy8vLzBVQS93''@;'; put 'put ''QjQ5d0VBMW52YTJuRFcvd0NFOXdFQUpranU3dWlxL3dDWDl3RUFWV1Q3bVB1WS93Q205d0VBZjBQdXIrN3Uvd0M1OXdFQThYemIyM0NUL3dETTl3RUFHaW4vLysvVi93RGM5d0VBRkViLy85cTUvd0RyOXdFQUZMRE56WVUvL3dEMTl3RUE5ei8vLzhETC93RC85d0VBMUViZDNhRGQvd0FKK0FF''@;'; put 'put ''QWhEdm1zT0RtL3dBWitBRUExUCtBZ0FDQS93QWwrQUVBQVAvLy93QUEvd0F1K0FFQUFEMjh2SStQL3dBOStBRUFuN1hoUVduaC93Qk0rQUVBRWR5TGkwVVQvd0JkK0FFQUJJcjYrb0J5L3dCcCtBRUFFNXIwOUtSZy93QjUrQUVBWjZxTExvdFgvd0NIK0FFQUVSRC8vL1h1L3dDVitBRUFEYmVn''@;'; put 'put ''b0ZJdC93Q2grQUVBQUFEQXdNREEvd0N0K0FFQWkyenJoODdyL3dDNitBRUFyNC9OYWxyTi93REorQUVBbERpUWNJQ1Evd0RZK0FFQWxEaVFjSUNRL3dEbitBRUFBQVgvLy9yNi93RHgrQUVBYXYvL0FQOS8vd0FDK1FFQWtwdTBSb0swL3dBUitRRUFHRlRTMHJTTS93QWErUUVBZi8rQUFJQ0Ev''@;'; put 'put ''d0FrK1FFQTFCM1kyTC9ZL3dBeCtRRUFCcmovLzJOSC93QTkrUUVBZTdiZ1FPRFEvd0JNK1FFQTFIUHU3b0x1L3dCWStRRUFHMFQxOWQ2ei93QmorUUVBQUFELy8vLy8vd0J1K1FFQUFBRDE5ZlgxL3dCKytRRUFLdi8vLy84QS93Q0srUUVBT01ETm1zMHkvd0NiK1FFQUxVUDg5L3k1L3dDaytR''@;'; put 'put ''RUFSRnZkcmQyTy93Q3QrUUVBWXJLak1hTlUvd0MyK1FFQUtqTC8vLy9NL3dDLytRRUFQbFhtd3VhWi93REkrUUVBVldUR2VNWjUvd0RSK1FFQVk3dUVJNFJEL3dEYStRRUFLakwvLy8vTS93RGorUUVBUGxYbXd1YVovd0RzK1FFQVZXVEdlTVo1L3dEMStRRUFZcktqTWFOVS93RCsrUUVBYS85''@;'; put 'put ''b0FHZzMvd0FIK2dFQUtqTC8vLy9NL3dBUStnRUFOMUh3MmZDai93QVorZ0VBUkZ2ZHJkMk8vd0FpK2dFQVZXVEdlTVo1L3dBcitnRUFZcktqTWFOVS93QTArZ0VBYS85b0FHZzMvd0E5K2dFQUtqTC8vLy9NL3dCRytnRUFOMUh3MmZDai93QlArZ0VBUkZ2ZHJkMk8vd0JZK2dFQVZXVEdlTVo1''@;'; put 'put ''L3dCaCtnRUFZSjZyUWF0ZC93QnErZ0VBWTd1RUk0UkQvd0J6K2dFQWJQOWFBRm95L3dCOCtnRUFLaG4vLy8vbC93Q0YrZ0VBTFVQODkveTUvd0NPK2dFQU4xSHcyZkNqL3dDWCtnRUFSRnZkcmQyTy93Q2crZ0VBVldUR2VNWjUvd0NwK2dFQVlKNnJRYXRkL3dDeStnRUFZN3VFSTRSRC93Qzcr''@;'; put 'put ''Z0VBYlA5YUFGb3kvd0RFK2dFQUtobi8vLy9sL3dETitnRUFMVVA4OS95NS93RFcrZ0VBTjFIdzJmQ2ovd0RmK2dFQVJGdmRyZDJPL3dEbytnRUFWV1RHZU1aNS93RHgrZ0VBWUo2clFhdGQvd0Q2K2dFQVk3dUVJNFJEL3dBRCt3RUFhLzlvQUdnMy93QU0rd0VBYnY5RkFFVXAvd0FWK3dFQU1V''@;'; put 'put ''bjQ3Zml4L3dBZyt3RUFkV0hOZjgyNy93QXIrd0VBa01LNExIKzQvd0EyK3dFQUtqTC8vLy9NL3dCQit3RUFZMExhb2RxMC93Qk0rd0VBaEtyRVFiYkUvd0JYK3dFQWxzdW9JbDZvL3dCaSt3RUFLakwvLy8vTS93QnQrd0VBWTBMYW9kcTAvd0I0K3dFQWhLckVRYmJFL3dDRCt3RUFrTUs0TEgr''@;'; put 'put ''NC93Q08rd0VBcEwrVUpUU1Uvd0NaK3dFQUtqTC8vLy9NL3dDayt3RUFSVHJweCttMC93Q3Yrd0VBZFdITmY4Mjcvd0M2K3dFQWhLckVRYmJFL3dERit3RUFrTUs0TEgrNC93RFErd0VBcEwrVUpUU1Uvd0RiK3dFQUtqTC8vLy9NL3dEbSt3RUFSVHJweCttMC93RHgrd0VBZFdITmY4Mjcvd0Q4''@;'; put 'put ''K3dFQWhLckVRYmJFL3dBSC9BRUFpOWpBSFpIQS93QVMvQUVBbHN1b0lsNm8vd0FkL0FFQW51ZUVEQ3lFL3dBby9BRUFLaWIvLy8vWi93QXovQUVBTVVuNDdmaXgvd0ErL0FFQVJUcnB4K20wL3dCSi9BRUFkV0hOZjgyNy93QlUvQUVBaEtyRVFiYkUvd0JmL0FFQWk5akFIWkhBL3dCcS9BRUFs''@;'; put 'put ''c3VvSWw2by93QjEvQUVBbnVlRURDeUUvd0NBL0FFQUtpYi8vLy9aL3dDTC9BRUFNVW40N2ZpeC93Q1cvQUVBUlRycHgrbTAvd0NoL0FFQWRXSE5mODI3L3dDcy9BRUFoS3JFUWJiRS93QzMvQUVBaTlqQUhaSEEvd0RDL0FFQWxzdW9JbDZvL3dETi9BRUFwTCtVSlRTVS93RFkvQUVBbnVkWUNC''@;'; put 'put ''MVkvd0RqL0FFQUpVTC8vL2U4L3dEdS9BRUFISy8rL3NSUC93RDUvQUVBRU83WjJWOE8vd0FFL1FFQUtpci8vLy9VL3dBUC9RRUFISEQrL3RtTy93QWEvUUVBRnRYKy9wa3Avd0FsL1FFQUQvek16RXdDL3dBdy9RRUFLaXIvLy8vVS93QTcvUUVBSEhEKy90bU8vd0JHL1FFQUZ0WCsvcGtwL3dC''@;'; put 'put ''Ui9RRUFFTzdaMlY4Ty93QmMvUUVBRGZpWm1UUUUvd0JuL1FFQUtpci8vLy9VL3dCeS9RRUFIMjMrL3VPUi93QjkvUUVBSEsvKy9zUlAvd0NJL1FFQUZ0WCsvcGtwL3dDVC9RRUFFTzdaMlY4Ty93Q2UvUUVBRGZpWm1UUUUvd0NwL1FFQUtpci8vLy9VL3dDMC9RRUFIMjMrL3VPUi93Qy8vUUVB''@;'; put 'put ''SEsvKy9zUlAvd0RLL1FFQUZ0WCsvcGtwL3dEVi9RRUFFdW5zN0hBVS93RGcvUUVBRC96TXpFd0Mvd0RyL1FFQURQZU1qQzBFL3dEMi9RRUFLaG4vLy8vbC93QUIvZ0VBSlVMLy8vZTgvd0FNL2dFQUgyMysvdU9SL3dBWC9nRUFISy8rL3NSUC93QWkvZ0VBRnRYKy9wa3Avd0F0L2dFQUV1bnM3''@;'; put 'put ''SEFVL3dBNC9nRUFEL3pNekV3Qy93QkQvZ0VBRFBlTWpDMEUvd0JPL2dFQUtobi8vLy9sL3dCWi9nRUFKVUwvLy9lOC93QmsvZ0VBSDIzKy91T1Ivd0J2L2dFQUhLLysvc1JQL3dCNi9nRUFGdFgrL3BrcC93Q0YvZ0VBRXVuczdIQVUvd0NRL2dFQUQvek16RXdDL3dDYi9nRUFEZmlabVRRRS93''@;'; put 'put ''Q20vZ0VBRGZCbVppVUcvd0N4L2dFQUlsLy8vKzJnL3dDOC9nRUFHTEwrL3JKTS93REgvZ0VBQmQzdzhEc2cvd0RTL2dFQUtrMy8vLyt5L3dEZC9nRUFIYUwrL3N4Yy93RG8vZ0VBRWNMOS9ZMDgvd0R6L2dFQS91SGo0eG9jL3dEKy9nRUFLazMvLy8reS93QUovd0VBSGFMKy9zeGMvd0FVL3dF''@;'; put 'put ''QUVjTDkvWTA4L3dBZi93RUFCZDN3OERzZy93QXEvd0VBOXYrOXZRQW0vd0ExL3dFQUtrMy8vLyt5L3dCQS93RUFIb2orL3RsMi93Qkwvd0VBR0xMKy9ySk0vd0JXL3dFQUVjTDkvWTA4L3dCaC93RUFCZDN3OERzZy93QnMvd0VBOXYrOXZRQW0vd0IzL3dFQUtrMy8vLyt5L3dDQy93RUFIb2or''@;'; put 'put ''L3RsMi93Q04vd0VBR0xMKy9ySk0vd0NZL3dFQUVjTDkvWTA4L3dDai93RUFCOVQ4L0U0cS93Q3Uvd0VBL3VIajR4b2Mvd0M1L3dFQTlmK3hzUUFtL3dERS93RUFLakwvLy8vTS93RFAvd0VBSWwvLy8rMmcvd0RhL3dFQUhvaisvdGwyL3dEbC93RUFHTEwrL3JKTS93RHcvd0VBRWNMOS9ZMDgv''@;'; put 'put ''d0Q3L3dFQUI5VDgvRTRxL3dBR0FBSUEvdUhqNHhvYy93QVJBQUlBOWYreHNRQW0vd0FjQUFJQUtqTC8vLy9NL3dBbkFBSUFJbC8vLysyZy93QXlBQUlBSG9qKy90bDIvd0E5QUFJQUdMTCsvckpNL3dCSUFBSUFFY0w5L1kwOC93QlRBQUlBQjlUOC9FNHEvd0JlQUFJQS91SGo0eG9jL3dCcEFB''@;'; put 'put ''SUE5dis5dlFBbS93QjBBQUlBOHYrQWdBQW0vd0IvQUFJQWt3Ly84UGovL3dDSkFBSUFHQ1A2K3V2WC93Q1dBQUlBRnlULy8rL2Ivd0NrQUFJQUZ5VHU3dC9NL3dDeUFBSUFGeVROemNDdy93REFBQUlBR0NLTGk0TjQvd0RPQUFJQWNZRC9mLy9VL3dEWkFBSUFjWUQvZi8vVS93RGxBQUlBY1lE''@;'; put 'put ''dWR1N0cvd0R4QUFJQWNZRE5aczJxL3dEOUFBSUFjWUNMUll0MC93QUpBUUlBZncvLzhQLy8vd0FQQVFJQWZ3Ly84UC8vL3dBV0FRSUFmdy91NE83dS93QWRBUUlBZnc3TndjM04vd0FrQVFJQWZ3NkxnNHVML3dBckFRSUFLaHIxOWZYYy93QXhBUUlBRnpyLy8rVEUvd0E0QVFJQUZ6ci8vK1RF''@;'; put 'put ''L3dCQUFRSUFGenJ1N3RXMy93QklBUUlBRmpyTnpiZWUvd0JRQVFJQUZ6cUxpMzFyL3dCaUdBSUFBQUFBQUFBQS93QllBUUlBR1RILy8rdk4vd0JuQVFJQXF2Ly9BQUQvL3dCc0FRSUFxdi8vQUFELy93QnlBUUlBcXYvdUFBRHUvd0I0QVFJQXF2L05BQUROL3dCK0FRSUFxditMQUFDTC93Q0VB''@;'; put 'put ''UUlBd003aWlpdmkvd0NQQVFJQUFMNmxwU29xL3dDVkFRSUFBTC8vLzBCQS93Q2NBUUlBQUwvdTdqczcvd0NqQVFJQUFML056VE16L3dDcUFRSUFBTDZMaXlNai93Q3hBUUlBRjJQZTNyaUgvd0M3QVFJQUYyVC8vOU9iL3dER0FRSUFGMlB1N3NXUi93RFJBUUlBRjJQTnphcDkvd0RjQVFJQUYy''@;'; put 'put ''T0xpM05WL3dEbkFRSUFnR2VnWDU2Zy93RHhBUUlBZzJmL21QWC8vd0Q4QVFJQWcyYnVqdVh1L3dBSEFnSUFnMmZOZXNYTi93QVNBZ0lBZzJhTFU0YUwvd0FkQWdJQVAvLy9mLzhBL3dBb0FnSUFQLy8vZi84QS93QTBBZ0lBUC8vdWR1NEEvd0JBQWdJQVAvL05aczBBL3dCTUFnSUFQLytMUllz''@;'; put 'put ''QS93QllBZ0lBRWRyUzBta2Uvd0JpQWdJQUVkdi8vMzhrL3dCdEFnSUFFZHZ1N25ZaC93QjRBZ0lBRWRyTnpXWWQvd0NEQWdJQUVkeUxpMFVUL3dDT0FnSUFDNi8vLzM5US93Q1VBZ0lBQjZuLy8zSlcvd0NiQWdJQUJxbnU3bXBRL3dDaUFnSUFCcW5OelZ0Ri93Q3BBZ0lBQnFpTGl6NHYvd0N3''@;'; put 'put ''QWdJQW1wUHRaSlh0L3dDL0FnSUFJU0wvLy9qYy93RElBZ0lBSVNMLy8vamMvd0RTQWdJQUlpUHU3dWpOL3dEY0FnSUFJaUxOemNpeC93RG1BZ0lBSXlLTGk0aDQvd0R3QWdJQTl1ZmMzQlE4L3dENEFnSUFmLy8vQVAvLy93RDlBZ0lBZi8vL0FQLy8vd0FEQXdJQWYvL3VBTzd1L3dBSkF3SUFm''@;'; put 'put ''Ly9OQU0zTi93QVBBd0lBZi8rTEFJdUwvd0FWQXdJQUh1KzR1SVlML3dBakF3SUFIdkQvLzdrUC93QXlBd0lBSHZEdTdxME8vd0JCQXdJQUh2RE56WlVNL3dCUUF3SUFIdkNMaTJVSS93QmZBd0lBVmY5a0FHUUEvd0JwQXdJQUoyNjl2YmRyL3dCekF3SUFPbzVyVldzdi93Q0NBd0lBT28vL3l2''@;'; put 'put ''OXcvd0NTQXdJQU9vL3V2TzVvL3dDaUF3SUFPby9Ob3MxYS93Q3lBd0lBT28rTGJvczkvd0RDQXdJQUYvLy8vNHdBL3dETkF3SUFGZi8vLzM4QS93RFpBd0lBRmYvdTduWUEvd0RsQXdJQUZmL056V1lBL3dEeEF3SUFGZitMaTBVQS93RDlBd0lBeHNETW1UTE0vd0FJQkFJQXhzSC92ejcvL3dB''@;'; put 'put ''VUJBSUF4c0R1c2pydS93QWdCQUlBeHNETm1qTE4vd0FzQkFJQXhzQ0xhQ0tML3dBNEJBSUFDbm5wNlpaNi93QkRCQUlBVlQyOGo3eVAvd0JRQkFJQVZUNy93Zi9CL3dCZUJBSUFWVDd1dE82MC93QnNCQUlBVlQ3Tm04MmIvd0I2QkFJQVZUNkxhWXRwL3dDSUJBSUFyNCtMU0QyTC93Q1dCQUlB''@;'; put 'put ''ZjJkUEwwOVAvd0NrQkFJQWYyai9sLy8vL3dDekJBSUFmMmZ1amU3dS93RENCQUlBZjJqTmVjM04vd0RSQkFJQWYyaUxVb3VML3dEZ0JBSUFmMmRQTDA5UC93RHVCQUlBZ1AvUkFNN1Ivd0Q4QkFJQXgvL1RsQURUL3dBSEJRSUE2T3YvL3hTVC93QVFCUUlBNk92Ly94U1Qvd0FhQlFJQTZPdnU3''@;'; put 'put ''aEtKL3dBa0JRSUE2T3ZOelJCMi93QXVCUUlBNSt5TGl3cFEvd0E0QlFJQWl2Ly9BTC8vL3dCRUJRSUFpdi8vQUwvLy93QlJCUUlBaXYvdUFMTHUvd0JlQlFJQWl2L05BSnJOL3dCckJRSUFpditMQUdpTC93QjRCUUlBQUFCcGFXbHAvd0NBQlFJQUFBQnBhV2xwL3dDSUJRSUFsT0gvSHBELy93''@;'; put 'put ''Q1RCUUlBbE9IL0hwRC8vd0NmQlFJQWxPSHVISWJ1L3dDckJRSUFsT0hOR0hUTi93QzNCUUlBbE9HTEVFNkwvd0REQlFJQUFNNnlzaUlpL3dETkJRSUFBTS8vL3pBdy93RFlCUUlBQU0vdTdpd3Mvd0RqQlFJQUFNL056U1ltL3dEdUJRSUFBTStMaXhvYS93RDVCUUlBSEEvLy8vcncvd0FGQmdJ''@;'; put 'put ''QVZjQ0xJb3NpL3dBUkJnSUFBQURjM056Yy93QWJCZ0lBcWdmLytQai8vd0FtQmdJQUkvLy8vOWNBL3dBckJnSUFJLy8vLzljQS93QXhCZ0lBSS8vdTdza0Evd0EzQmdJQUkvL056YTBBL3dBOUJnSUFJLytMaTNVQS93QkRCZ0lBSHRuYTJxVWcvd0JOQmdJQUh0ci8vOEVsL3dCWUJnSUFIdHJ1''@;'; put 'put ''N3JRaS93QmpCZ0lBSHRyTnpac2Qvd0J1QmdJQUh0cUxpMmtVL3dCNUJnSUFBQURBd01EQS93QitCZ0lBQUFBQUFBQUEvd0NFQmdJQUFBQURBd01EL3dDS0JnSUFBQUFhR2hvYS93Q1JCZ0lBQUFELy8vLy8vd0NaQmdJQUFBQWNIQndjL3dDZ0JnSUFBQUFmSHg4Zi93Q25CZ0lBQUFBaElTRWgv''@;'; put 'put ''d0N1QmdJQUFBQWtKQ1FrL3dDMUJnSUFBQUFtSmlZbS93QzhCZ0lBQUFBcEtTa3Avd0REQmdJQUFBQXJLeXNyL3dES0JnSUFBQUF1TGk0dS93RFJCZ0lBQUFBd01EQXcvd0RZQmdJQUFBQUZCUVVGL3dEZUJnSUFBQUF6TXpNei93RGxCZ0lBQUFBMk5qWTIvd0RzQmdJQUFBQTRPRGc0L3dEekJn''@;'; put 'put ''SUFBQUE3T3pzNy93RDZCZ0lBQUFBOVBUMDkvd0FCQndJQUFBQkFRRUJBL3dBSUJ3SUFBQUJDUWtKQy93QVBCd0lBQUFCRlJVVkYvd0FXQndJQUFBQkhSMGRIL3dBZEJ3SUFBQUJLU2twSy93QWtCd0lBQUFBSUNBZ0kvd0FxQndJQUFBQk5UVTFOL3dBeEJ3SUFBQUJQVDA5UC93QTRCd0lBQUFC''@;'; put 'put ''U1VsSlMvd0EvQndJQUFBQlVWRlJVL3dCR0J3SUFBQUJYVjFkWC93Qk5Cd0lBQUFCWldWbFovd0JVQndJQUFBQmNYRnhjL3dCYkJ3SUFBQUJlWGw1ZS93QmlCd0lBQUFCaFlXRmgvd0JwQndJQUFBQmpZMk5qL3dCd0J3SUFBQUFLQ2dvSy93QjJCd0lBQUFCbVptWm0vd0I5QndJQUFBQnBhV2xw''@;'; put 'put ''L3dDRUJ3SUFBQUJyYTJ0ci93Q0xCd0lBQUFCdWJtNXUvd0NTQndJQUFBQndjSEJ3L3dDWkJ3SUFBQUJ6YzNOei93Q2dCd0lBQUFCMWRYVjEvd0NuQndJQUFBQjRlSGg0L3dDdUJ3SUFBQUI2ZW5wNi93QzFCd0lBQUFCOWZYMTkvd0M4QndJQUFBQU5EUTBOL3dEQ0J3SUFBQUIvZjM5Ly93REpC''@;'; put 'put ''d0lBQUFDQ2dvS0Mvd0RRQndJQUFBQ0ZoWVdGL3dEWEJ3SUFBQUNIaDRlSC93RGVCd0lBQUFDS2lvcUsvd0RsQndJQUFBQ01qSXlNL3dEc0J3SUFBQUNQajQrUC93RHpCd0lBQUFDUmtaR1Ivd0Q2QndJQUFBQ1VsSlNVL3dBQkNBSUFBQUNXbHBhVy93QUlDQUlBQUFBUER3OFAvd0FPQ0FJQUFB''@;'; put 'put ''Q1ptWm1aL3dBVkNBSUFBQUNjbkp5Yy93QWNDQUlBQUFDZW5wNmUvd0FqQ0FJQUFBQ2hvYUdoL3dBcUNBSUFBQUNqbzZPai93QXhDQUlBQUFDbXBxYW0vd0E0Q0FJQUFBQ29xS2lvL3dBL0NBSUFBQUNycTZ1ci93QkdDQUlBQUFDdHJhMnQvd0JOQ0FJQUFBQ3dzTEN3L3dCVUNBSUFBQUFTRWhJ''@;'; put 'put ''Uy93QmFDQUlBQUFDenM3T3ovd0JoQ0FJQUFBQzF0YlcxL3dCb0NBSUFBQUM0dUxpNC93QnZDQUlBQUFDNnVycTYvd0IyQ0FJQUFBQzl2YjI5L3dCOUNBSUFBQUMvdjcrLy93Q0VDQUlBQUFEQ3dzTEMvd0NMQ0FJQUFBREV4TVRFL3dDU0NBSUFBQURIeDhmSC93Q1pDQUlBQUFESnljbkovd0Nn''@;'; put 'put ''Q0FJQUFBQVVGQlFVL3dDbUNBSUFBQURNek16TS93Q3RDQUlBQUFEUHo4L1Avd0MwQ0FJQUFBRFIwZEhSL3dDN0NBSUFBQURVMU5UVS93RENDQUlBQUFEVzF0Ylcvd0RKQ0FJQUFBRFoyZG5aL3dEUUNBSUFBQURiMjl2Yi93RFhDQUlBQUFEZTN0N2Uvd0RlQ0FJQUFBRGc0T0RnL3dEbENBSUFB''@;'; put 'put ''QURqNCtQai93RHNDQUlBQUFBWEZ4Y1gvd0R5Q0FJQUFBRGw1ZVhsL3dENUNBSUFBQURvNk9qby93QUFDUUlBQUFEcjYrdnIvd0FIQ1FJQUFBRHQ3ZTN0L3dBT0NRSUFBQUR3OFBEdy93QVZDUUlBQUFEeTh2THkvd0FjQ1FJQUFBRDE5ZlgxL3dBakNRSUFBQUQzOS9mMy93QXFDUUlBQUFENit2''@;'; put 'put ''cjYvd0F4Q1FJQUFBRDgvUHo4L3dBNENRSUFWZi8vQVA4QS93QStDUUlBVmYvL0FQOEEvd0JGQ1FJQVZmL3VBTzRBL3dCTUNRSUFWZi9OQU0wQS93QlRDUUlBVmYrTEFJc0Evd0JhQ1FJQU85RC9yZjh2L3dCbUNRSUFBQURBd01EQS93QnJDUUlBQUFBQUFBQUEvd0J4Q1FJQUFBQURBd01EL3dC''@;'; put 'put ''M0NRSUFBQUFhR2hvYS93QitDUUlBQUFELy8vLy8vd0NHQ1FJQUFBQWNIQndjL3dDTkNRSUFBQUFmSHg4Zi93Q1VDUUlBQUFBaElTRWgvd0NiQ1FJQUFBQWtKQ1FrL3dDaUNRSUFBQUFtSmlZbS93Q3BDUUlBQUFBcEtTa3Avd0N3Q1FJQUFBQXJLeXNyL3dDM0NRSUFBQUF1TGk0dS93QytDUUlB''@;'; put 'put ''QUFBd01EQXcvd0RGQ1FJQUFBQUZCUVVGL3dETENRSUFBQUF6TXpNei93RFNDUUlBQUFBMk5qWTIvd0RaQ1FJQUFBQTRPRGc0L3dEZ0NRSUFBQUE3T3pzNy93RG5DUUlBQUFBOVBUMDkvd0R1Q1FJQUFBQkFRRUJBL3dEMUNRSUFBQUJDUWtKQy93RDhDUUlBQUFCRlJVVkYvd0FEQ2dJQUFBQkhS''@;'; put 'put ''MGRIL3dBS0NnSUFBQUJLU2twSy93QVJDZ0lBQUFBSUNBZ0kvd0FYQ2dJQUFBQk5UVTFOL3dBZUNnSUFBQUJQVDA5UC93QWxDZ0lBQUFCU1VsSlMvd0FzQ2dJQUFBQlVWRlJVL3dBekNnSUFBQUJYVjFkWC93QTZDZ0lBQUFCWldWbFovd0JCQ2dJQUFBQmNYRnhjL3dCSUNnSUFBQUJlWGw1ZS93''@;'; put 'put ''QlBDZ0lBQUFCaFlXRmgvd0JXQ2dJQUFBQmpZMk5qL3dCZENnSUFBQUFLQ2dvSy93QmpDZ0lBQUFCbVptWm0vd0JxQ2dJQUFBQnBhV2xwL3dCeENnSUFBQUJyYTJ0ci93QjRDZ0lBQUFCdWJtNXUvd0IvQ2dJQUFBQndjSEJ3L3dDR0NnSUFBQUJ6YzNOei93Q05DZ0lBQUFCMWRYVjEvd0NVQ2dJ''@;'; put 'put ''QUFBQjRlSGg0L3dDYkNnSUFBQUI2ZW5wNi93Q2lDZ0lBQUFCOWZYMTkvd0NwQ2dJQUFBQU5EUTBOL3dDdkNnSUFBQUIvZjM5Ly93QzJDZ0lBQUFDQ2dvS0Mvd0M5Q2dJQUFBQ0ZoWVdGL3dERUNnSUFBQUNIaDRlSC93RExDZ0lBQUFDS2lvcUsvd0RTQ2dJQUFBQ01qSXlNL3dEWkNnSUFBQUNQ''@;'; put 'put ''ajQrUC93RGdDZ0lBQUFDUmtaR1Ivd0RuQ2dJQUFBQ1VsSlNVL3dEdUNnSUFBQUNXbHBhVy93RDFDZ0lBQUFBUER3OFAvd0Q3Q2dJQUFBQ1ptWm1aL3dBQ0N3SUFBQUNjbkp5Yy93QUpDd0lBQUFDZW5wNmUvd0FRQ3dJQUFBQ2hvYUdoL3dBWEN3SUFBQUNqbzZPai93QWVDd0lBQUFDbXBxYW0v''@;'; put 'put ''d0FsQ3dJQUFBQ29xS2lvL3dBc0N3SUFBQUNycTZ1ci93QXpDd0lBQUFDdHJhMnQvd0E2Q3dJQUFBQ3dzTEN3L3dCQkN3SUFBQUFTRWhJUy93QkhDd0lBQUFDenM3T3ovd0JPQ3dJQUFBQzF0YlcxL3dCVkN3SUFBQUM0dUxpNC93QmNDd0lBQUFDNnVycTYvd0JqQ3dJQUFBQzl2YjI5L3dCcUN3''@;'; put 'put ''SUFBQUMvdjcrLy93QnhDd0lBQUFEQ3dzTEMvd0I0Q3dJQUFBREV4TVRFL3dCL0N3SUFBQURIeDhmSC93Q0dDd0lBQUFESnljbkovd0NOQ3dJQUFBQVVGQlFVL3dDVEN3SUFBQURNek16TS93Q2FDd0lBQUFEUHo4L1Avd0NoQ3dJQUFBRFIwZEhSL3dDb0N3SUFBQURVMU5UVS93Q3ZDd0lBQUFE''@;'; put 'put ''VzF0Ylcvd0MyQ3dJQUFBRFoyZG5aL3dDOUN3SUFBQURiMjl2Yi93REVDd0lBQUFEZTN0N2Uvd0RMQ3dJQUFBRGc0T0RnL3dEU0N3SUFBQURqNCtQai93RFpDd0lBQUFBWEZ4Y1gvd0RmQ3dJQUFBRGw1ZVhsL3dEbUN3SUFBQURvNk9qby93RHRDd0lBQUFEcjYrdnIvd0QwQ3dJQUFBRHQ3ZTN0''@;'; put 'put ''L3dEN0N3SUFBQUR3OFBEdy93QUNEQUlBQUFEeTh2THkvd0FKREFJQUFBRDE5ZlgxL3dBUURBSUFBQUQzOS9mMy93QVhEQUlBQUFENit2cjYvd0FlREFJQUFBRDgvUHo4L3dBbERBSUFWUS8vOFAvdy93QXVEQUlBVlEvLzhQL3cvd0E0REFJQVZRL3U0TzdnL3dCQ0RBSUFWUTdOd2MzQi93Qk1E''@;'; put 'put ''QUlBVlE2TGc0dUQvd0JXREFJQTZaYi8vMm0wL3dCZURBSUE2cEgvLzI2MC93Qm5EQUlBNjQzdTdtcW4vd0J3REFJQTdJZk56V0NRL3dCNURBSUE2cFNMaXpwaS93Q0NEQUlBQUl6TnpWeGMvd0NNREFJQUFKVC8vMnBxL3dDWERBSUFBSlR1N21Oai93Q2lEQUlBQUpYTnpWVlYvd0N0REFJQUFK''@;'; put 'put ''U0xpem82L3dDNERBSUF3ditDU3dDQy93Qy9EQUlBS2dELy8vLytBQURGREFJQUtnLy8vLy93L3dETERBSUFLZy8vLy8vdy93RFNEQUlBS2cvdTd1N2cvd0RaREFJQUtnN056YzNCL3dEZ0RBSUFLZzZMaTR1RC93RG5EQUlBSm1ydzhPYU0vd0R0REFJQUozRC8vL2FQL3dEMERBSUFKM0R1N3Vh''@;'; put 'put ''Ri93RDdEQUlBSjIvTnpjWnovd0FDRFFJQUoyK0xpNFpPL3dBSkRRSUFxaFQ2NXViNi93QVNEUUlBOEEvLy8vRDEvd0FnRFFJQThBLy8vL0QxL3dBdkRRSUE3dy91N3VEbC93QStEUUlBOEE3TnpjSEYvd0JORFFJQTd3NkxpNE9HL3dCY0RRSUFRUC84ZlB3QS93Qm1EUUlBSmpILy8vck4vd0J6''@;'; put 'put ''RFFJQUpqSC8vL3JOL3dDQkRRSUFKVEx1N3VtLy93Q1BEUUlBSmpITnpjbWwvd0NkRFFJQUp6R0xpNGx3L3dDckRRSUFpVC9tcmRqbS93QzFEUUlBaWtEL3YrLy8vd0RBRFFJQWlrRHVzdC91L3dETERRSUFpai9ObXNETi93RFdEUUlBaVVDTGFJT0wvd0RoRFFJQUFIZnc4SUNBL3dEc0RRSUFm''@;'; put 'put ''eC8vNFAvLy93RDJEUUlBZngvLzRQLy8vd0FCRGdJQWZ4L3UwZTd1L3dBTURnSUFmeC9OdE0zTi93QVhEZ0lBZngrTGVvdUwvd0FpRGdJQUkzUHU3dDJDL3dBeERnSUFJM1QvLyt5TC93QkJEZ0lBSTNQdTd0eUMvd0JSRGdJQUkzUE56YjV3L3dCaERnSUFJM09MaTRGTS93QnhEZ0lBS2lqNit2''@;'; put 'put ''clMvd0NHRGdJQUFBRFQwOVBUL3dDUURnSUFBQURUMDlQVC93Q2FEZ0lBK0VuLy83YkIvd0NrRGdJQStWSC8vNjY1L3dDdkRnSUErRkh1N3FLdC93QzZEZ0lBK1ZETnpZeVYvd0RGRGdJQStWQ0xpMTlsL3dEUURnSUFESVQvLzZCNi93RGNEZ0lBRElULy82QjYvd0RwRGdJQUM0VHU3cFZ5L3dE''@;'; put 'put ''MkRnSUFESVhOellGaS93QUREd0lBRElXTGkxZEMvd0FRRHdJQWZkR3lJTEtxL3dBZUR3SUFqM1g2aDg3Ni93QXJEd0lBajAvL3NPTC8vd0E1RHdJQWowL3VwTlB1L3dCSER3SUFqay9OamJiTi93QlZEd0lBajA2TFlIdUwvd0JqRHdJQXI0Ly9oSEQvL3dCeUR3SUFsRGlaZDRpWi93Q0JEd0lB''@;'; put 'put ''bERpWmQ0aVovd0NRRHdJQWx6VGVzTVRlL3dDZkR3SUFselgveXVILy93Q3ZEd0lBbHpYdXZOTHUvd0MvRHdJQWx6WE5vclhOL3dEUER3SUFsaldMYm51TC93RGZEd0lBS2gvLy8vL2cvd0RyRHdJQUtoLy8vLy9nL3dENER3SUFLaC91N3U3Ui93QUZFQUlBS2gvTnpjMjAvd0FTRUFJQUtoK0xp''@;'; put 'put ''NHQ2L3dBZkVBSUFWY0ROTXMweS93QXBFQUlBRlJUNit2RG0vd0F2RUFJQTFQLy8vd0QvL3dBM0VBSUExUC8vL3dELy93QkFFQUlBMVAvdTdnRHUvd0JKRUFJQTFQL056UUROL3dCU0VBSUExUCtMaXdDTC93QmJFQUlBNzdtd3NEQmcvd0JpRUFJQTVNdi8velN6L3dCcUVBSUE1TXZ1N2pDbi93''@;'; put 'put ''QnlFQUlBNU16TnpTbVEvd0I2RUFJQTVNdUxpeHhpL3dDQ0VBSUFjWUROWnMycS93Q1RFQUlBcXYvTkFBRE4vd0NlRUFJQXpKalR1bFhUL3dDckVBSUF5NW4vNEdiLy93QzVFQUlBeTVudTBWL3Uvd0RIRUFJQXk1bk50RkxOL3dEVkVBSUF5NXFMZWplTC93RGpFQUlBdDN6YmszRGIvd0R3RUFJ''@;'; put 'put ''QXQzMy9xNEwvL3dEK0VBSUF0MzN1bjNudS93QU1FUUlBdDMzTmlXak4vd0FhRVFJQXQzeUxYVWVML3dBb0VRSUFaNm16UExOeC93QTNFUUlBc0kvdWUyanUvd0JIRVFJQWIvLzZBUHFhL3dCWkVRSUFmYWZSU05ITS93QnBFUUlBNU9USHh4V0Yvd0I1RVFJQXFzWndHUmx3L3dDR0VRSUFhZ24v''@;'; put 'put ''OWYvNi93Q1FFUUlBQkI3Ly8rVGgvd0NhRVFJQUJCNy8vK1RoL3dDbEVRSUFCQjd1N3RYUy93Q3dFUUlBQXgzTnpiZTEvd0M3RVFJQUJSMkxpMzE3L3dER0VRSUFHa24vLytTMS93RFBFUUlBR1ZILy85NnQvd0RiRVFJQUdWSC8vOTZ0L3dEb0VRSUFHVkx1N3MraC93RDFFUUlBR1ZMTnpiT0wv''@;'; put 'put ''d0FDRWdJQUdWS0xpM2xlL3dBUEVnSUFxditBQUFDQS93QVVFZ0lBcXYrQUFBQ0Evd0FkRWdJQUtnRC8vLy8rQUFBaUVnSUFHeGY5L2ZYbS93QXFFZ0lBT01DT2E0NGovd0EwRWdJQU9NSC93UDgrL3dBL0VnSUFPTUR1cys0Ni93QktFZ0lBT01ETm1zMHkvd0JWRWdJQU9NQ0xhWXNpL3dCZ0Vn''@;'; put 'put ''SUFHLy8vLzZVQS93Qm5FZ0lBRy8vLy82VUEvd0J2RWdJQUcvL3U3cG9BL3dCM0VnSUFHLy9OellVQS93Qi9FZ0lBRy8rTGkxb0Evd0NIRWdJQUMvLy8vMFVBL3dDUkVnSUFDLy8vLzBVQS93Q2NFZ0lBQy8vdTdrQUEvd0NuRWdJQUMvL056VGNBL3dDeUVnSUFDLytMaXlVQS93QzlFZ0lBMW52''@;'; put 'put ''YTJuRFcvd0RFRWdJQTFuei8vNFA2L3dETUVnSUExbnp1N25ycC93RFVFZ0lBMW56TnpXbkovd0RjRWdJQTFYeUxpMGVKL3dEa0VnSUFKa2p1N3VpcS93RHlFZ0lBVldUN21QdVkvd0Q4RWdJQVZXWC9tdithL3dBSEV3SUFWV1R1a082US93QVNFd0lBVldUTmZNMTgvd0FkRXdJQVZXU0xWSXRV''@;'; put 'put ''L3dBb0V3SUFmMFB1cis3dS93QTJFd0lBZjBUL3UvLy8vd0JGRXdJQWYwVHVydTd1L3dCVUV3SUFmMFRObHMzTi93QmpFd0lBZjBPTFpvdUwvd0J5RXdJQThYemIyM0NUL3dDQUV3SUE4WDMvLzRLci93Q1BFd0lBOFgzdTdubWYvd0NlRXdJQThYM056V2lKL3dDdEV3SUE4WHlMaTBkZC93QzhF''@;'; put 'put ''d0lBR2luLy8rL1Yvd0RIRXdJQUZFYi8vOXE1L3dEUkV3SUFGRWIvLzlxNS93RGNFd0lBRTBYdTdzdXQvd0RuRXdJQUUwWE56YStWL3dEeUV3SUFGRVdMaTNkbC93RDlFd0lBRkxETnpZVS8vd0FDRkFJQTl6Ly8vOERML3dBSEZBSUE5VW4vLzdYRi93QU5GQUlBOVVudTdxbTQvd0FURkFJQTlV''@;'; put 'put ''ck56WkdlL3dBWkZBSUE5VW1MaTJOcy93QWZGQUlBMUViZDNhRGQvd0FrRkFJQTFFVC8vN3YvL3dBcUZBSUExRVR1N3E3dS93QXdGQUlBMUVUTnpaYk4vd0EyRkFJQTFFT0xpMmFML3dBOEZBSUFoRHZtc09EbS93QkhGQUlBeE4zd29DRHcvd0JPRkFJQXY4Ly9tekQvL3dCV0ZBSUF3TS91a1N6''@;'; put 'put ''dS93QmVGQUlBd00vTmZTYk4vd0JtRkFJQXdNK0xWUnFML3dCdUZBSUFBUC8vL3dBQS93QnlGQUlBQVAvLy93QUEvd0IzRkFJQUFQL3U3Z0FBL3dCOEZBSUFBUC9OelFBQS93Q0JGQUlBQVArTGl3QUEvd0NHRkFJQUFEMjh2SStQL3dDUUZBSUFBRDcvLzhIQi93Q2JGQUlBQUQ3dTdyUzAvd0Nt''@;'; put 'put ''RkFJQUFEN056WnViL3dDeEZBSUFBRDZMaTJscC93QzhGQUlBbjdYaFFXbmgvd0RHRkFJQW43Zi9TSGIvL3dEUkZBSUFuN2Z1UTI3dS93RGNGQUlBbjdiTk9sL04vd0RuRkFJQW43ZUxKMENML3dEeUZBSUFFZHlMaTBVVC93RCtGQUlBQklyNitvQnkvd0FGRlFJQUNaYi8vNHhwL3dBTkZRSUFD''@;'; put 'put ''WmJ1N29KaS93QVZGUUlBQ1piTnpYQlUvd0FkRlFJQUNaYUxpMHc1L3dBbEZRSUFFNXIwOUtSZy93QXdGUUlBWjZxTExvdFgvd0E1RlFJQVo2di9WUCtmL3dCREZRSUFaNnZ1VHU2VS93Qk5GUUlBWjZ2TlE4MkEvd0JYRlFJQVo2cUxMb3RYL3dCaEZRSUFFUkQvLy9YdS93QnFGUUlBRVJELy8v''@;'; put 'put ''WHUvd0IwRlFJQUVoSHU3dVhlL3dCK0ZRSUFFaEhOemNXLy93Q0lGUUlBRWhDTGk0YUMvd0NTRlFJQURiZWdvRkl0L3dDWkZRSUFEYmovLzRKSC93Q2hGUUlBRGJqdTdubEMvd0NwRlFJQURiak56V2c1L3dDeEZRSUFEYm1MaTBjbS93QzVGUUlBaTJ6cmg4N3Ivd0RCRlFJQWtIai9oODcvL3dE''@;'; put 'put ''S0ZRSUFrSGp1ZnNEdS93RFRGUUlBa0hqTmJLYk4vd0RjRlFJQWtYZUxTbkNML3dEbEZRSUFyNC9OYWxyTi93RHZGUUlBcjVEL2cyLy8vd0Q2RlFJQXI1RHVlbWZ1L3dBRkZnSUFyNUROYVZuTi93QVFGZ0lBcjVDTFJ6eUwvd0FiRmdJQWxEaVFjSUNRL3dBbEZnSUFsVGoveHVMLy93QXdGZ0lB''@;'; put 'put ''bFRqdXVkUHUvd0E3RmdJQWxEbk5uN2JOL3dCR0ZnSUFsVGlMYkh1TC93QlJGZ0lBbERpUWNJQ1Evd0JiRmdJQUFBWC8vL3I2L3dCZ0ZnSUFBQVgvLy9yNi93Qm1GZ0lBQUFYdTd1bnAvd0JzRmdJQUFBVE56Y25KL3dCeUZnSUFBQU9MaTRtSi93QjRGZ0lBYXYvL0FQOS8vd0NFRmdJQWF2Ly9B''@;'; put 'put ''UDkvL3dDUkZnSUFhdi91QU81Mi93Q2VGZ0lBYXYvTkFNMW0vd0NyRmdJQWF2K0xBSXRGL3dDNEZnSUFrcHUwUm9LMC93RENGZ0lBa3B6L1k3ai8vd0RORmdJQWtwenVYS3p1L3dEWUZnSUFrcHpOVDVUTi93RGpGZ0lBazV1TE5tU0wvd0R1RmdJQUdGVFMwclNNL3dEeUZnSUFGTEQvLzZWUC93''@;'; put 'put ''RDNGZ0lBRkxEdTdwcEovd0Q4RmdJQUZMRE56WVUvL3dBQkZ3SUFGTENMaTFvci93QUdGd0lBMUIzWTJML1kvd0FPRndJQTFCNy8vK0gvL3dBWEZ3SUExQjd1N3RMdS93QWdGd0lBMUIzTnpiWE4vd0FwRndJQTFCMkxpM3VML3dBeUZ3SUFCcmovLzJOSC93QTVGd0lBQnJqLy8yTkgvd0JCRndJ''@;'; put 'put ''QUJyanU3bHhDL3dCSkZ3SUFCcmpOelU4NS93QlJGd0lBQnJtTGl6WW0vd0NqR0FJQUtnRC8vLy8rQUFCWkZ3SUFlN2JnUU9EUS93QmpGd0lBZ2YvL0FQWC8vd0J1RndJQWdmL3VBT1h1L3dCNUZ3SUFnZi9OQU1YTi93Q0VGd0lBZ2YrTEFJYUwvd0NQRndJQTFIUHU3b0x1L3dDV0Z3SUE0OWZR''@;'; put 'put ''MENDUS93Q2dGd0lBNjhILy96Nlcvd0NyRndJQTY4RHU3anFNL3dDMkZ3SUE2OEROelRKNC93REJGd0lBNjhDTGl5SlMvd0RNRndJQUcwVDE5ZDZ6L3dEU0Z3SUFHMFgvLytlNi93RFpGd0lBRzBUdTd0aXUvd0RnRndJQUcwVE56YnFXL3dEbkZ3SUFHME9MaTM1bS93RHVGd0lBQUFELy8vLy8v''@;'; put 'put ''d0QwRndJQUFBRDE5ZlgxL3dEL0Z3SUFLdi8vLy84QS93QUdHQUlBS3YvLy8vOEEvd0FPR0FJQUt2L3U3dTRBL3dBV0dBSUFLdi9OemMwQS93QWVHQUlBS3YrTGk0c0Evd0FtR0FJQU9NRE5tczB5L3dDYUhBSUFmeXdDQUxZWUFnQzRHQUlBdWhnQ0FMd1lBZ0MrR0FJQXdCZ0NBTUlZQWdERUdB''@;'; put 'put ''SUF4aGdDQU1rWUFnRE1HQUlBenhnQ0FOSVlBZ0RWR0FJQTJCZ0NBTnNZQWdEZUdBSUE0UmdDQU9RWUFnQUFBQUFBQkFBQUFBUUFBQUFMQUFBQU5nQUFBQllBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBRUFBQUFCZ0FBQUFBQUFBQUFBQUFBQmNBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBRUFB''@;'; put 'put ''QUFCZ0FBQUFBQUFBQUFBQUFBQmdBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQkFBQUFBQUFBQUFBQUFBQU53QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQkFBQUFBQUFBQUFBQUFBQU9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9BQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREdKUUlBQ1FBQUFNd2xBZ0FLQUFBQTFTVUNBQXNBQUFBWEpnSUFEQUFBQUIwbUFnQU5BQUFBSWlZQ0FBNEFBQURWSlFJQUR3QUFBS29tQWdBUUFBQUFzU1lDQUJFQUFBQzVK''@;'; put 'put ''Z0lBRWdBQUFNQW1BZ0FUQUFBQXpDWUNBQlFBQUFBWEpnSUFGUUFBQU5nbUFnQVdBQUFBNENZQ0FCY0FBQURxSmdJQUdBQUFBUGdtQWdBWkFBQUEveVlDQUJvQUFBQUVKd0lBR3dBQUFBY25BZ0FjQUFBQURDY0NBQjBBQUFBVUp3SUFIZ0FBQUJvbkFnQWZBQUFBSUNjQ0FDQUFBQUFuSndJQUlR''@;'; put 'put ''QUFBQzBuQWdBaEFBQUFOU2NDQUNJQUFBQThKd0lBSXdBQUFOVWxBZ0FrQUFBQXNTWUNBQkVBQUFDNUpnSUFFZ0FBQURNcEFnQWxBQUFBd0NZQ0FCTUFBQURNSmdJQUZBQUFBQmNtQWdBVkFBQUFQaWtDQUNZQUFBRGdKZ0lBRndBQUFPb21BZ0FZQUFBQStDWUNBQmtBQUFEL0pnSUFHZ0FBQUFR''@;'; put 'put ''bkFnQWJBQUFBQnljQ0FCd0FBQUJHS1FJQUp3QUFBQlFuQWdBZUFBQUFHaWNDQUI4QUFBQWdKd0lBSUFBQUFDY25BZ0FoQUFBQUxTY0NBQ0VBQUFBMUp3SUFJZ0FBQUR3bkFnQWpBQUFBR1FBQUFCb0FBQUFiQUFBQUhBQUFBQjBBQUFBZUFBQUFId0FBQUNnQUFBQXBBQUFBSUFBQUFDb0FBQUFN''@;'; put 'put ''QUFBQUdRQUFBQ0VBQUFBRUFBQUFCUUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBRlFvQUFBa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZFQXdUSEI0RERSOGdJU0lqR3hvUkdSa1pHUmtaR1JrWkdSWVNBZzRMRHh3WUdCZ1lHQmdXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhRY0JCd1dI''@;'; put 'put ''QmdZR0JnWUdCWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdIQ1FjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndXSEJ3Y0hCd2NIQndjSEJZY0dod2NGaHdjSEJ3Y0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFljRmhZV0Zo''@;'; put 'put ''WVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0Zod1dGaFlXRmhZV0ZnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v''@;'; put 'put ''Ly8vLy8vLy8vLy8vLy8vOEFBQUFBQUFBQUJQNy8vNGYrLy84SEFBQUFBQUFBQUFELy8zLy8vLzkvLy8vLy8vLy8vL04vL3YzLy8vLy8vMy8vLy8vLy8vLy8vdy9nLy8vLy96SDgvLy8vQUFBQUFBQUFBUC8vLy8vLy8vLy8vLy8vQVFENEF3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''UU5mLy8vdi8vLy8vZjM5VS9mOFBBUDdmLy8vLy8vLy8vLy8rMy8vLy8vOERBUC8vLy8vLy81OFovLy8veno4REFBQUFBQUFBL3YvLy8zOEMvdi8vLzM4QUFBQUFBQUFBQUFELy8vOEhCd0FBQUFBQS92Ly9CLzRIQUFBQUFQNy8vLy8vLy8vLy8zei9meThBWUFBQUFPRC8vLy8vLy84akFBQUEv''@;'; put 'put ''d01BQUFEZ24vbi8vLzNGQXdBQUFMQURBQU1BNElmNS8vLzliUU1BQUFCZUFBQWNBT0N2Ky8vLy9lMGpBQUFBQUFFQUFBRGduL24vLy8zTkl3QUFBTEFEQUFBQTRNYzkxaGpIdndNQUFBQUFBQUFBQU9EZi9mLy8vZThEQUFBQUFBTUFBQURnMy8zLy8vM3ZBd0FBQUVBREFBQUE0Ti85Ly8vOS93''@;'; put 'put ''TUFBQUFBQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEKy8vLy8vMzhOQUQ4QUFBQUFBQUFBbGlYdy9xNXNEU0FmQUFBQUFBQUFBQUFBQUFBQUFBQUEvLzcvLy84REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC8vLy8vUHdELy8vLy9md0R0Mmdj''@;'; put 'put ''QUFBQUFVQUZRTVlLcllpd0FBQUFBUUFESmdQVUhBQUFBQUFnQkF2Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOFAvLy8vLy8vLy8vLy8vLzhELy84L1AvLy8vLzgvUC8rcS8vLy9QLy8vLy8vLy85OWYzQi9QRC84ZjNCOEFBQUFBUUV3QUFBQUFBQUFBQUFBQUJ3QUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUlBQUFBRCtBd0FBL3YvLy8vLy8vLy8vL3g4QS92Ly8vLy8vLy8vLy8vOEg0UC8vLy84ZkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy96OEFBQUFBQUFBQUFBQUFBUC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vRHdBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUJnL3dmKy8vK0gvdi8vQndBQUFBQUFBSUFBLy85Ly8vLy9mLy8vLy84QUFBQUFBQUFBLy8vLy8vLy8vLy8vLy84QkFQZ0RBQU1BQUFBQUFQLy8vLy8vLy8vL1B3QUFBQU1BQUFEQTEvLy8rLy8vLy85L2YxVDkvdzhBL3QvLy8vLy8vLy8vLy83Zi8vLy8vM3NBLy8vLy8v''@;'; put 'put ''Ly9ueG4vLy8vUFB3TUFBQUFBQUFEKy8vLy9md0wrLy8vL2Z3RCsvL3YvLzdzV0FQLy8vd2NIQUFBQUFBRCsvLzhILy84SEFQOEQvLy8vLy8vLy8vLy9mUDkvNy8vL1BmOEQ3di8vLy8vLy8vUC9QeDcvei84QUFPNmYrZi8vL2NYVG56bUFzTS8vQXdEa2gvbi8vLzF0MDRjNUFGN0EveDhBN3Ev''@;'; put 'put ''Ny8vLzk3Zk8vT3dBQXdmOEFBTzZmK2YvLy9jM3pqem5Bc01QL0FBRHN4ejNXR01lL3c4YzlnQUNBL3dBQTd0LzkvLy85NzhQZlBXQUF3LzhBQU96Zi9mLy8vZS9EM3oxZ1FNUC9BQURzMy8zLy8vMy93ODg5Z0FERC93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQNy8vLy8vZi84SC8zLy9Bd0FB''@;'; put 'put ''QUFDV0pmRCtybXovTzE4Ly93TUFBQUFBQUFBQUEvOERvTUwvL3YvLy93UCsvOThQdi83L1AvNENBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQOGZBZ0FBQUtBQUFBRCsvejRBL3YvLy8vLy8vLy8vL3g5bS92Ly8vLy8vLy8vLy8vOTNHUUFBQUJvQUFBQWJB''@;'; put 'put ''QUFBSEFBQUFCMEFBQUFlQUFBQUh3QUFBQ2dBQUFBcEFBQUFJQUFBQUNvQUFBQU1BQUFBR1FBQUFDRUFBQUFHQUFBQUJ3QUFBQUVBQUFBQkFBQUFBQUFBQUFBQUFBQUFGUW9BQUJVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVkVBd1RIQjRERFI4Z0lTSWpHeG9SR1JrWkdSa1pHUmtaR1JZU0Fn''@;'; put 'put ''NExEeHdZR0JnWUdCZ1dGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFFjQkJ3V0hCZ1lHQmdZR0JZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0hDUWNIQndJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn''@;'; put 'put ''SUNBZ0lDQWdJQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0J3Y0hCd2NBQUFBQUFBQUFBQUFCQVNzQUFBQXNBQUFBTFFBQUFDNEFBQUF2QUFBQUxRQUFBREFBQUFBeEFBQUFNZ0FBQUJrQUFBQWFBQUFBR3dBQUFCd0FBQUFk''@;'; put 'put ''QUFBQUhnQUFBQjhBQUFBb0FBQUFLUUFBQUNBQUFBQXFBQUFBREFBQUFCa0FBQUFoQUFBQUJnQUFBQWNBQUFBQkFBQUFBUUFBQUFBQUFBQUFBQUFBQUJVS0FBQUpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGUkFNRXh3ZUF3MGZJQ0VpSXhzYUVSa1pHUmtaR1JrWkdSa1dFZ0lPQ3c4Y0dCZ1lH''@;'; put 'put ''QmdZRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZVUhBUWNGaHdZR0JnWUdCZ1dGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaHdrSEJ3Y0NBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB''@;'; put 'put ''VUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ2NIQndjSEFBQUFBQUFBQUFBQUFRRXJBQUFBTEFBQUFDMEFBQUF1QUFBQUx3QUFBQzBBQUFBd0FBQUFNUUFBQURJQUFBQUEzUUFBWU9ZQUFOamtBQURNNXdBQXpPY0FBRGpwQUFE''@;'; put 'put ''WTVBQUFHUUFBQUJvQUFBQWJBQUFBSEFBQUFCMEFBQUFlQUFBQUh3QUFBQ2dBQUFBcEFBQUFJQUFBQUNvQUFBQU1BQUFBR1FBQUFDRUFBQUFJQUFBQUJRQUFBQUVBQUFBQkFBQUFBQUFBQUFBQUFBQUFGUW9BQUFrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVkVBd1RIQjRERFI4Z0lTSWpHeG9S''@;'; put 'put ''R1JrWkdSa1pHUmtaR1JZU0FnNExEeHdZR0JnWUdCZ1dGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFFjQkJ3V0hCZ1lHQmdZR0JZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0hDUWNIQndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNJQUFB''@;'; put 'put ''QWpBQUFBSkFBQUFDVUFBQUFtQUFBQUp3QUFBQ2dBQUFBekFBQUFOQUFBQUNrQUFBQTFBQUFBRFFBQUFCb0FBQUFxQUFBQUNRQUFBQW9BQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUJVS0FBQUpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGUkFNRXh3ZUF3MGZJQ0VpSXhzYUVSa1pHUmtaR1Jr''@;'; put 'put ''WkdSa1dFZ0lPQ3c4Y0dCZ1lHQmdZRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZVUhBUWNGaHdZR0JnWUdCZ1dGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaHdrSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjRmh3Y0hCd2NIQndj''@;'; put 'put ''SEJ3V0hCb2NIQlljSEJ3Y0hCWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXSEJZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWWNGaFlXRmhZV0ZoWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXJBQUFBTEFBQUFDMEFB''@;'; put 'put ''QUF1QUFBQUx3QUFBREFBQUFBeEFBQUFOZ0FBQURjQUFBQXlBQUFBT0FBQUFBNEFBQUFiQUFBQU13QUFBQXNBQUFBTUFBQUFBZ0FBQUFBQkFBQUFBQUFBQUFBQUFBQVZDZ0FBQ1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJVUURCTWNIZ01OSHlBaElpTWJHaEVaR1JrWkdSa1pHUmtaRmhJQ0Rn''@;'; put 'put ''c1BIQmdZR0JnWUdCWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGQndFSEJZY0dCZ1lHQmdZRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZY0pCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCWWNIQndjSEJ3Y0hCd2NGaHdhSEJ3''@;'; put 'put ''V0hCd2NIQndXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0Zod1dGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXSEJZV0ZoWVdGaFlXQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBejQwQkFMSXpBZ0JUamdFQXV6TUNBTUl6''@;'; put 'put ''QWdETE13SUFHUUFBQUJvQUFBQWJBQUFBSEFBQUFCMEFBQUFlQUFBQUh3QUFBQ2dBQUFBcEFBQUFJQUFBQUNvQUFBQU1BQUFBR1FBQUFDRUFBQUFHQUFBQUJ3QUFBQUVBQUFBQkFBQUFBQUFBQUFBQUFBQUFGUW9BQUJVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVkVBd1RIQjRERFI4Z0lTSWpH''@;'; put 'put ''eG9SR1JrWkdSa1pHUmtaR1JjU0FnNExEeHdZR0JnWUdCZ1dGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFFjQkJ3V0hCZ1lHQmdZR0JZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0hDUWNIQndJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB''@;'; put 'put ''Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0J3Y0hCd2NBQUFBQUFBQUFBQUFCQVNzQUFBQXNBQUFBTFFBQUFDNEFBQUF2QUFBQUxRQUFBREFBQUFBeEFBQUFNZ0FBQUVU''@;'; put 'put ''c0FBQ3c3UUFBSE84QUFJandBQUNJOEFBQTlQRUFBQnp2QUFBWkFBQUFHZ0FBQUJzQUFBQWNBQUFBSFFBQUFCNEFBQUFmQUFBQUtBQUFBQ2tBQUFBZ0FBQUFLZ0FBQUF3QUFBQVpBQUFBSVFBQUFBUUFBQUFGQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBVkNnQUFDUUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQlVRREJNY0hnTU5IeUFoSWlNYkdoRVpHUmtaR1JrWkdSa1pGeElDRGdzUEhCZ1lHQmdZR0JZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZCd0VIQlljR0JnWUdCZ1lGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFljSkJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NI''@;'; put 'put ''QndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJZY0hCd2NIQndjSEJ3Y0Zod2FIQndXSEJ3Y0hCd1dGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmh3V0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdIQllXRmhZV0ZoWVdBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHUUFBQUJvQUFBQWJBQUFBSEFBQUFCMEFBQUFlQUFBQUh3QUFBQ2dBQUFBcEFBQUFJQUFBQUNvQUFBQU1BQUFBR1FBQUFDRUFBQUFJQUFBQUJRQUFBQUVBQUFBQkFBQUFBQUFBQUFBQUFBQUFGUW9BQUFrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''VkVBd1RIQjRERFI4Z0lTSWpHeG9SR1JrWkdSa1pHUmtaR1JjU0FnNExEeHdZR0JnWUdCZ1dGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFFjQkJ3V0hCZ1lHQmdZR0JZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0hDUWNIQndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUJrQUFBQWFBQUFBR3dBQUFCd0FBQUFkQUFBQUhnQUFBQjhBQUFBb0FBQUFLUUFBQUNBQUFBQXFBQUFBREFBQUFCa0FBQUFoQUFBQUJnQUFBQWNBQUFBQkFBQUFBUUFBQUFBQUFBQUFBQUFBQUJVS0FBQUpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGUkFNRXh3ZUF3''@;'; put 'put ''MGZJQ0VpSXhzYUVSa1pHUmtaR1JrWkdSa1hFZ0lPQ3c4Y0dCZ1lHQmdZRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZVUhBUWNGaHdZR0JnWUdCZ1dGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaHdrSEJ3Y0NBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn''@;'; put 'put ''SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ2NIQndjSEFBQUFBQUFBQUFBQUFRRXJBQUFBTEFBQUFDMEFBQUF1QUFBQUx3QUFBQzBBQUFBd0FBQUFNUUFB''@;'; put 'put ''QURJQUFBQWlBQUFBSXdBQUFDUUFBQUFsQUFBQUpnQUFBQ2NBQUFBb0FBQUFNd0FBQURRQUFBQXBBQUFBTlFBQUFBMEFBQUFhQUFBQUtnQUFBQWtBQUFBS0FBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQVZDZ0FBQ1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJVUURCTWNIZ01OSHlBaElpTWJH''@;'; put 'put ''aEVaR1JrWkdSa1pHUmtaRnhJQ0Rnc1BIQmdZR0JnWUdCWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGQndFSEJZY0dCZ1lHQmdZRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZY0pCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hC''@;'; put 'put ''WWNIQndjSEJ3Y0hCd2NGaHdhSEJ3V0hCd2NIQndXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0Zod1dGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXSEJZV0ZoWVdGaFlXQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS3dB''@;'; put 'put ''QUFDd0FBQUF0QUFBQUxnQUFBQzhBQUFBd0FBQUFNUUFBQURZQUFBQTNBQUFBTWdBQUFEZ0FBQUFPQUFBQUd3QUFBRE1BQUFBTEFBQUFEQUFBQUFJQUFBQUFBUUFBQUFBQUFBQUFBQUFBRlFvQUFBa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZFQXdUSEI0RERSOGdJU0lqR3hvUkdSa1pHUmta''@;'; put 'put ''R1JrWkdSY1NBZzRMRHh3WUdCZ1lHQmdXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhRY0JCd1dIQmdZR0JnWUdCWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdIQ1FjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndXSEJ3Y0hCd2NI''@;'; put 'put ''QndjSEJZY0dod2NGaHdjSEJ3Y0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFljRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0Zod1dGaFlXRmhZV0ZnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGMDBBZ0JqTkFJQVpq''@;'; put 'put ''UUNBR3cwQWdBR05BSUFjelFDQUh3MEFnQ0VOQUlBblBNQUFCUUFBQUJETGxWVVJpMDRBQUFBQUFBQUFBQUFBQUFBQU40U0JKVUFBQUFBLy8vLy8vLy8vLy8vLy8vL0FnQUF3QU1BQU1BRUFBREFCUUFBd0FZQUFNQUhBQURBQ0FBQXdBa0FBTUFLQUFEQUN3QUF3QXdBQU1BTkFBREFEZ0FBd0E4''@;'; put 'put ''QUFNQVFBQURBRVFBQXdCSUFBTUFUQUFEQUZBQUF3QlVBQU1BV0FBREFGd0FBd0JnQUFNQVpBQURBR2dBQXdCc0FBTUFjQUFEQUhRQUF3QjRBQU1BZkFBREFBQUFBc3dFQUFNTUNBQUREQXdBQXd3UUFBTU1GQUFEREJnQUF3d2NBQU1NSUFBRERDUUFBd3dvQUFNTUxBQUREREFBQXd3MEFBTk1P''@;'; put 'put ''QUFERER3QUF3d0FBRExzQkFBekRBZ0FNd3dNQURNTUVBQXpUZ1BRQUFBa0FBQUFBQUFBQUFBQUFBQkVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHdBQUFBQUFBQUFRQUFBQS9Qa0NBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvLy8vL0FBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTlRQUFCUUFBQUFBQUFBQUFBQUFBRVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFUUFBQUJBQUFBQUUvZ0lBQUFRQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQ3YvLy8vOEFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDFBQUNFOVFBQUJRQUFBQUFBQUFBQUFBQUFFUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnQUFBQkFBQUFBTUFnTUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUEvLy8vLy84''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBbU9nQ0FBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREFBQUFCQUFBQUFRQUFBQUdBQUFBZy9taUFFUk9iZ0Q4S1JVQTBWY25BTjAwOVFCaTI4QUFQSm1WQUVHUVF3QmpVZjRBdTk2ckFMZGh4UUE2YmlRQTBrMUNBRWtHNEFBSjZpNEFISkxSQU9zZC9n''@;'; put 'put ''QXBzUndBNkQ2bkFQVTFnZ0JFdXk0QW5PbUVBTFFtY0FCQmZsOEExcEU1QUZPRE9RQ2M5RGtBaTErRUFDajV2UUQ0SHpzQTN2K1hBQStZQlFBUkwrOEFDbHFMQUcwZmJRRFBmallBQ2NzbkFFWlB0d0NlWmo4QUxlcGZBTG9uZFFEbDY4Y0FQWHZ4QVBjNUJ3Q1NVb29BKzJ2cUFCK3hYd0FJWFkw''@;'; put 'put ''QU1BTldBSHY4UmdEd3Eyc0FJTHpQQURiMG1nRGpxUjBBWG1HUkFBZ2I1Z0NGbVdVQW9CUmZBSTFBYUFDQTJQOEFKM05OQUFZR01RREtWaFVBeWFoekFIdmlZQUJyak1BQUlBQUFBQWtBQUFBS0FBQUFEUUFBQUFzQUFBQU1BQUFBaFFBQUFBQWdBQUFCSUFBQUFpQUFBQU1nQUFBRUlBQUFCU0FB''@;'; put 'put ''QUFZZ0FBQUlJQUFBQ1NBQUFBb2dBQUFvSUFBQUtTQUFBRjhnQUFBQU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLy8vLy8vQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQUFBQVpBQUFBT2dEQUFBUUp3QUFvSVlCQUVCQ0R3Q0FscGdBQU9IMUJWOXdpUUQvQ1M4UGRBQUFBUDFYQWdCdUFBQUEvMWNDQUhJQUFBQUJXQUlBWmdBQUFBTllBZ0JoQUFBQUJWZ0NBR1VBQUFBSFdB''@;'; put 'put ''SUFkd0FBQUFsWUFnQlhBQUFBRmxnQ0FITUFBQUFrV0FJQVV3QUFBREJZQWdCa0FBQUFQVmdDQUVRQUFBQkpXQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQVFBR3dBYkFDQUFJQUFqQUNFQUNnQUNBQllBQ1FBaEFDRUFJUUFWQUJ3QUFRQVVBQlFBRkFBVUFCUUFGQUFVQUFnQUJBQUZBQnNBQWdB''@;'; put 'put ''WEFCc0FJQUFmQUI0QUhRQUpBQk1BQUFBVkFCSUFGUUFEQUFjQUZRQVZBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUlBQVFBQlFBRkFBWUFHd0FhQUJnQUdRQWdBQWNBRlFBVUFCUUFGQUFVQUJRQUZBQUxBQlFBRFFBVUFBd0FGQUFVQUJRQURnQVVBQlFBRkFBUUFCUUFEd0FVQUJFQUFBQUFBQUFB''@;'; put 'put ''cmdBdUFDOEFNd0ExQURBQU53Q3FBTnNBMndEYkFOc0FBQUE5QUljQU53QTNBTnNBMndBQUFDZ0FOUUF1QURJQUx3QmlBQUFBQUFCSEFBQUFBQURiQUZFQUFBRGJBTnNBMndBQUFOc0FoQUJWQU5zQWdnRGJBQUFBZ1FEYkFBQUFQZ0JDQUVFQVNBQkVBRklBV3dBQUFBQUFYZ0JmQU5zQUFBRGJB''@;'; put 'put ''TnNBMndBQUFBQUFld0JKQUZjQVVnQmFBRm9BWFFBQUFGOEFBQUJmQUFBQVpRQmRBRjhBQUFCZEFHNEFhZ0FBQUdrQUFBQnVBQUFBMndDVEFKb0FvUUNvQUtzQWNBQ3hBTGdBdndER0FNMEEwd0FBQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFR''@;'; put 'put ''QUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQU1BQkFBSEFBTUFCQUFGQUFVQUJnQUdBQWdBQndBSEFCRUFGZ0FTQUJFQUVnQUlBQWdBRHdBUEFCY0FEd0FZQUE4QUdRQWFBQm9BSGdBV0FEUUFIZ0FGQURJ''@;'; put 'put ''QUJnQWlBQ0lBTXdBWEFCZ0FOUUFaQUJvQUdnQXFBRFlBS2dBMEFEY0FNZ0JGQURzQVBBQXpBRHNBUEFCR0FEVUFSd0JJQUV3QU5nQWlBRWtBU2dBM0FFVUFUZ0JRQUdJQVVRQlNBRlFBUmdCSEFGVUFTQUJNQUZZQVNRQktBRmdBV2dCT0FFUUFVQUJSQUZJQVZBQTRBQzhBTEFCVkFDa0FWZ0Fi''@;'; put 'put ''QUJBQVdBQmFBRjBBWFFCZEFGMEFYUUJkQUYwQVhnQmVBRjRBWGdCZUFGNEFYZ0JmQUY4QVh3QmZBRjhBWHdCZkFHQUFDUUJnQUdBQVlBQmdBR0FBWVFCaEFHTUFBZ0JqQUdNQVl3QmpBR01BWkFBQUFHUUFBQUJrQUdRQVpBQmxBQUFBWlFCbEFHVUFaUUJsQUdZQVpnQUFBR1lBWmdCbUFHWUFa''@;'; put 'put ''d0FBQUdjQVp3Qm5BR2NBYUFBQUFHZ0FhQUJvQUdnQWFBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FB''@;'; put 'put ''QUFYQUFCQUYwQVhRQmVBRjRBWHdCZkFGd0FYQUJjQUZ3QVhBQmdBRndBWEFCY0FHRUFYQUJjQUdJQVlnQmlBR0lBWWdCaUFHSUFZd0JrQUdVQVpnQm1BRndBWEFCbkFGd0FYQUJjQUdBQVhBQmNBR0VBWEFCaEFGd0FhQUJoQUZ3QVlnQmlBR0lBWWdCaUFHSUFZZ0JpQUdNQVpBQmxBR1VBWEFC''@;'; put 'put ''bUFGd0FYQUJjQUdjQWFBQmhBR0lBWWdCaUFHSUFZZ0JpQUdJQVlnQmlBR0lBWWdCaUFHSUFZZ0JpQUdJQVlnQmlBR0lBWWdCaUFHSUFZZ0FBQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBQUFBQ2dBTEFBd0FEUUFPQUFvQUR3QVFBQkVBRWdBVEFBb0FGQUFWQUJVQUZRQVdBQmNB''@;'; put 'put ''RlFBWUFCVUFGUUFaQUJVQUZRQVZBQm9BRlFBVkFBb0FGUUFWQUJVQUZnQVhBQmdBRlFBVkFCa0FGUUFWQUJVQUdnQVZBQlVBRlFBVkFCc0FEQUFNQUNRQUhnQWVBQ0FBSVFBZ0FDRUFKQUFsQUNZQUxRQXlBQzhBTGdBcUFDVUFKZ0FvQUNrQU13QXFBRFFBS3dBMUFEWUFOd0E4QURJQVJ3QTlB''@;'; put 'put ''Q0lBUlFBaUFEOEFRQUJHQURNQU5BQklBRFVBTmdBM0FDOEFTUUFxQUVjQVNnQkZBRXdBWEFBOEFFWUFYQUE5QUUwQVNBQk9BRThBVWdCSkFFRUFVQUJSQUVvQVRBQlRBRlFBTVFCVkFGWUFWd0JOQUU0QVdBQlBBRklBV1FCUUFGRUFXZ0JiQUZNQVJBQlVBRlVBVmdCWEFFc0FSQUFzQUZnQUxB''@;'; put 'put ''QlpBRGdBTEFCYUFGc0FIUUFkQUIwQUhRQWRBQjBBSFFBZkFCOEFId0FmQUI4QUh3QWZBQ01BSXdBakFDTUFJd0FqQUNNQUp3QmNBQ2NBSndBbkFDY0FKd0F3QURBQU9RQWNBRGtBT1FBNUFEa0FPUUE2QUZ3QU9nQmNBRG9BT2dBNkFEc0FYQUE3QURzQU93QTdBRHNBUGdBK0FGd0FQZ0ErQUQ0''@;'; put 'put ''QVBnQkNBRndBUWdCQ0FFSUFRZ0JEQUZ3QVF3QkRBRU1BUXdCREFBa0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJj''@;'; put 'put ''QUZ3QUNBQ3UvOUVBQ2dDdS82Ny9Dd0N1LzY3L3J2K3UvNjcvcnYrdS82Ny9CUURSQUs3LzBRRFJBTkVBMFFEUkFORUEwUURSQUs3LysvK3UvdzRBN1ArdS82Ny9ydit1LzlFQTBRRFJBTkVBMFFBTkFDVUFEQUJDQUJBQVVBQVRBRzBBZXdBVUFKZ0FEd0NtQU1NQXJ2K3UvNjcvcnYrdS82Ny9y''@;'; put 'put ''dit1LzY3L3J2K3UvNjcvcnYrdS82Ny9ydit1LzY3L3J2K3UvNjcvcnYrdS82Ny9Gd0N1LzNjQXJ2OEhBQzRBcnY4bUFLNy9Gd0FSQUNNQXJ2OE5BSzcvcnYrdS82Ny9PZ0N1LzY3L05RQ3UvNjcvcnY4b0FLNy9Cd0N1L3pzQVJRQ3UvMGdBcnYrdS82Ny9ydit1LzY3L3J2LzgvK2dBOXYvLy94''@;'; put 'put ''b0FBQUFuQUFFQU1nQ3UvNjcvQWdBa0FBTUFMd0N1LzY3L3J2K3UvNjcvL3YrVUFLNy9DUUFiQUs3L3ZQK3UvNjcvci8rdS82Ny9ydit1LzY3L3J2K3Uvd0FBQUFBQUFHM203TjRGQUFzQVNRQXhBVk1BZndFd0FXa0FlQUgvQUlFQlV3S0NBWU1CaEFHRkFZWUJWQUtIQVlnQmlRRldBb29CVndL''@;'; put 'put ''TEFZd0JqZ0hkQVk4QldRS1FBVnNDa1FHU0FaTUJZQUtVQVdNQ2xnRnBBcGNCYUFLWUFaa0JuQUZ2QXAwQmNnS2ZBWFVDcGdHQUFxY0JxQUdwQVlNQ3JBR3RBYTRCaUFLdkFiQUJzUUdLQXJJQml3SzNBWklDdUFHNUFid0J2UUhFQWNZQnhBSEZBY1VCeGdISEFja0J4d0hJQWNnQnlRSEtBY3dC''@;'; put 'put ''eWdITEFjc0J6QUh4QWZNQjhRSHlBZklCOHdIMEFmVUI5Z0dWQWZjQnZ3RWdBcDRCaGdPc0E0Z0RyUU9KQTY0RGlnT3ZBNHdEekFPT0E4MERqd1BPQTVrRFJRT1pBNzRmb3dQQ0EvY0QrQVA2QS9zRFlCNmJIcDRlM3dCWkgxRWZXeDlUSDEwZlZSOWZIMWNmdkIrekg4d2Z3eC9zSCtVZi9CL3pI''@;'; put 'put ''em9DWlN3N0Fqd0NQUUthQVQ0Q1ppeEJBa0lDUXdLQUFVUUNpUUpGQW93QzlBTzRBL2tEOGdQOUEzc0QvZ044QS84RGZRUEFCTThFSmlISkF5b2hhd0FySWVVQU1pRk9JWU1oaENGZ0xHRXNZaXhyQW1Nc2ZSMWtMSDBDYlN4UkFtNHNjUUp2TEZBQ2NDeFNBbklzY3l4MUxIWXNmaXcvQW44c1FB''@;'; put 'put ''THlMUE1zZmFkNUhZdW5qS2VOcDJVQ3FxZG1Bc2NRSnkzTkVDMHRkZ04zQTV3RHRRQ1NBOUFEbUFQUkE2WUQxUU9nQTlZRG1nUHdBNkVEOFFPVkEvVUR6d1BYQXdBQUFBQkJBQ0Fhd0FBZ0h3QUJBUzh5QVFFRk9RRUJEMG9CQVMxNUFRRUZjQU1CQTVFRElCR2pBeUFKQUFSUUVCQUVJQ0JnQkFF''@;'; put 'put ''aGlnUUJOY0VFQVEzUUJBRS9GQVVCRXpFRk1DYWdBUUVGc3dFQkE4MEJBUS9lQVFFUitBRUJKeUlDQVJIWUF3RVhBQjRCbGFBZUFWOElIL2dJR0IvNEJpZ2YrQWc0SC9nSVNCLzRCbWdmK0FpSUgvZ0ltQi80Q0tnZitBaTRIL2dDdWgrMkFzZ2ZxZ1RZSC9nQzJoK2NBdWdmK0FMcUg1QUMrQitB''@;'; put 'put ''QXZvZmdnSkdBZ0VKRUFVQkEyQWhFQkFBTERBdlp5d0JCWUFzQVdQckxBRURRS1lCTFlDbUFSY2lwd0VOTXFjQlBYbW5BUU4rcHdFSmtLY0JBNkNuQVFraC95QWFBQUFBQUhzZ2RtRnlJSEJoZEdnZ1BTQlFiMmx1ZEdWeVgzTjBjbWx1WjJsbWVTZ2tNQ2s3SUhaaGNpQmtZWFJoSUQwZ1VHOXBi''@;'; put 'put ''blJsY2w5emRISnBibWRwWm5rb0pERXBPeUJHVXk1amNtVmhkR1ZRWVhSb0tDSXZJaXdnVUVGVVNDNWthWEp1WVcxbEtIQmhkR2dwS1RzZ1JsTXVkM0pwZEdWR2FXeGxLRkJCVkVndWFtOXBiaWdpTHlJc0lIQmhkR2dwTENCa1lYUmhLVHNnZlFCamIzSmxBSGhrYjNSMlpYSnphVzl1QURFdU53''@;'; put 'put ''QXhMalFBTVM0eUFGOXNaSEpoZDE4QVgyaGtjbUYzWHdCZmRHUnlZWGRmQUY5b2JHUnlZWGRmQUY5MGJHUnlZWGRmQUhoa2IzUWdkbVZ5YzJsdmJpQWlKWE1pSUhSdmJ5QnNiMjVuQUNBbFpDQUFKUzR3TW1ZQUpYTWxaQ0F0QUNNbE1ESjRKVEF5ZUNVd01uZ2xNREo0QUhObGRHeHBibVYzYVdS''@;'; put 'put ''MGFDZ0FKUzR6WmdCVElBQkRJQUF5SUFCRklBQmxJQUJHSUFCMElDVjFJQUJVSUFCa2IzUTZaRzkwQUdkMk9tUnZkQUJqWVc1dmJqcGtiM1FBY0d4aGFXNDZaRzkwQUhCc1lXbHVMV1Y0ZERwa2IzUUFlR1J2ZERwNFpHOTBBSGhrYjNReExqSTZlR1J2ZEFCNFpHOTBNUzQwT25oa2IzUUFTU0FB''@;'; put 'put ''SWw5emRXSm5jbUZ3YUY5amJuUWlPaUFsWkFBaVgyZDJhV1FpT2lBbFpBQWlaV1JuWlhNaU9pQmJDZ0FpWDJkMmFXUWlPaUFsWkN3S0FDSjBZV2xzSWpvZ0pXUXNDZ0FpYUdWaFpDSTZJQ1ZrQUNKdlltcGxZM1J6SWpvZ1d3b0FJbTV2WkdWeklqb2dXd29BSW01aGJXVWlPaUFpSlhNaUFGd2lB''@;'; put 'put ''Rnd2QUZ4aUFGeG1BRnh1QUZ4eUFGeDBBQ0p6ZFdKbmNtRndhSE1pT2lCYkNnQWlKWE1pT2lBQUlpVnpJZ0JEYjNWc1pDQnViM1FnY0dGeWMyVWdlR1J2ZENBaUpYTWlDZ0JiQ2dBaWIzQWlPaUFpSldNaUxBb0FJbkpsWTNRaU9pQmJKUzR3TTJZc0pTNHdNMllzSlM0d00yWXNKUzR3TTJaZENn''@;'; put 'put ''QWliM0FpT2lBaVRDSXNDZ0FpYjNBaU9pQWlWQ0lzQ2dBaWNIUWlPaUJiSlM0d00yWXNKUzR3TTJaZExBb0FJbUZzYVdkdUlqb2dJaVZqSWl3S0FDSjNhV1IwYUNJNklDVXVNRE5tTEFvQUluUmxlSFFpT2lBaUpYTWlDZ0FpWjNKaFpDSTZJQ0p1YjI1bElpd0tBQ0pqYjJ4dmNpSTZJQ0lsY3lJ''@;'; put 'put ''S0FDSm5jbUZrSWpvZ0lteHBibVZoY2lJc0NnQWlaM0poWkNJNklDSnlZV1JwWVd3aUxBb0FJbTl3SWpvZ0lrWWlMQW9BSW5OcGVtVWlPaUFsTGpBelppd0tBQ0ptWVdObElqb2dJaVZ6SWdvQUltOXdJam9nSWxNaUxBb0FJbk4wZVd4bElqb2dJaVZ6SWdvQUltOXdJam9nSW5RaUxBb0FJbVp2''@;'; put 'put ''Ym5SamFHRnlJam9nSldRS0FDSndNQ0k2SUZzbExqQXpaaXdsTGpBelppd2xMakF6Wmwwc0NnQWljREVpT2lCYkpTNHdNMllzSlM0d00yWXNKUzR3TTJaZExBb0FJbk4wYjNCeklqb2dXd0I3SW1aeVlXTWlPaUFsTGpBelppd2dJbU52Ykc5eUlqb2dJaVZ6SW4wQVhRb0FJbkF3SWpvZ1d5VXVN''@;'; put 'put ''RE5tTENVdU1ETm1YU3dLQUNKd01TSTZJRnNsTGpBelppd2xMakF6Wmwwc0NnQWljRzlwYm5Seklqb2dXd0JiSlM0d00yWXNKUzR3TTJaZEFHUnlZWGRmQUd4a2NtRjNYd0JvWkhKaGQxOEFkR1J5WVhkZkFHaHNaSEpoZDE4QWRHeGtjbUYzWHdBaVpHbHlaV04wWldRaU9pQWxjeXdLQUNKemRI''@;'; put 'put ''SnBZM1FpT2lBbGN3QkVkWEJzYVdOaGRHVWdZMngxYzNSbGNpQnVZVzFsSUNJbGN5SUtBSGhrYjNRQWFuTnZiZ0JxYzI5dU1BQmtiM1JmYW5OdmJnQjRaRzkwWDJwemIyNEFhbk52YmpwcWMyOXVBR3B6YjI0d09tcHpiMjRBWkc5MFgycHpiMjQ2YW5OdmJnQjRaRzkwWDJwemIyNDZhbk52YmdC''@;'; put 'put ''dUlENDlJRFFBWjNaeVpXNWtaWEpmWTI5eVpWOW1hV2N1WXdCbWFXZGZZbVY2YVdWeUFHWnBaMTl5WlhOdmJIWmxYMk52Ykc5eUFHWnBad0JtYVdjNlptbG5BRzFoY0FCeVpXTjBJQ1Z6SUNWa0xDVmtJQ1ZrTENWa0NnQmphWEpqYkdVZ0pYTWdKV1FzSldRc0pXUUtBSEJ2YkhrZ0pYTUFJQ1Zr''@;'; put 'put ''TENWa0FHZDJjbVZ1WkdWeVgyTnZjbVZmYldGd0xtTUFiV0Z3WDI5MWRIQjFkRjl6YUdGd1pRQnlaV04wWVc1bmJHVWdLQ1ZrTENWa0tTQW9KV1FzSldRcElDVnpJQ1Z6Q2dBOFlYSmxZU0J6YUdGd1pUMGlZMmx5WTJ4bElnQThZWEpsWVNCemFHRndaVDBpY21WamRDSUFQR0Z5WldFZ2MyaGhj''@;'; put 'put ''R1U5SW5CdmJIa2lBQ0JvY21WbVBTSUFJSFJwZEd4bFBTSUFJR0ZzZEQwaUlnQWdZMjl2Y21SelBTSUFKV1FzSldRc0pXUUFKV1FzSldRc0pXUXNKV1FBSldRc0pXUUFMQ1ZrTENWa0FDSStDZ0E4TDIxaGNENEtBR0poYzJVZ2NtVm1aWEpsY2dvQVpHVm1ZWFZzZENBQVBHMWhjQ0JwWkQwaUFD''@;'; put 'put ''SWdibUZ0WlQwaUFHbHpiV0Z3T20xaGNBQmpiV0Z3T20xaGNBQnBiV0Z3T20xaGNBQmpiV0Z3ZURwdFlYQUFhVzFoY0Y5dWNEcHRZWEFBWTIxaGNIaGZibkE2YldGd0FDTWdKWE1LQUNWa0lDVmtJQ1ZrSUNWa0lDVmtJQ1ZrSUNWa0lDVmtJQ1ZrSUNVdU1XWWdKV1FnSldRZ0pXUWdKV1FnSldR''@;'; put 'put ''Z0pXUUtBQ1ZrSUNWa0lDVmtJQ1ZrSUNWa0lDVmtJQ1ZrSUNWa0lDVmtJQ1V1TVdZZ0pXUWdKV1FnSldRZ0pXUUtBQ1ZrSUNWa0lDVmtJQ1ZrSUNWa0lDVmtJQ1ZrSUNWa0lDVmtJQ1V1TTJZZ0pXUWdKUzQwWmlBbFpDQWxaQ0FsWkNBbFpDQWxaQ0FsWkNBbFpDQWxaQW9BSldRZ0pXUWdJeVV3''@;'; put 'put ''TW5nbE1ESjRKVEF5ZUFvQVozWnlaVzVrWlhKZlkyOXlaVjl0Y0M1akFHMXdYM0psYzI5c2RtVmZZMjlzYjNJQUpXUWdKV1FnSldRZ0pXUWdKV1FnSldRZ0pTNHhaaUFsTGpSbUlDVmtJQ1V1TVdZZ0pTNHhaaUFsWkNBbFpDQWxjMXd3TURFS0FDTWdaVzVrSUc5bUlFWkpSeUJtYVd4bENnQWpS''@;'; put 'put ''a2xISURNdU1nb0FJeUJIWlc1bGNtRjBaV1FnWW5rZ0pYTWdkbVZ5YzJsdmJpQWxjeUFvSlhNcENnQWpJRlJwZEd4bE9pQWxjd29BSXlCUVlXZGxjem9nSldRS0FGQnZjblJ5WVdsMENnQkRaVzUwWlhJS0FFbHVZMmhsY3dvQVRHVjBkR1Z5Q2dBeE1EQXVNREFLQUZOcGJtZHNaUW9BTFRJS0FE''@;'; put 'put ''RXlNREFBSURJS0FHMXdBRzF3T20xd0FDQmRJQ0FsWkNCMGNuVmxJQ1Z6Q2dBZ1hTQWdKV1FnWm1Gc2MyVWdKWE1LQUNCelpYUnNhVzVsZDJsa2RHZ0tBQ1Z6SUFCelpYUm9jMklBSlM0MVp5QWxMalZuSUNVdU5XY2dKWE5qYjJ4dmNnb0FKU0FBYm1WM2NHRjBhQ0FBSUcxdmRtVjBid29BSUd4''@;'; put 'put ''cGJtVjBid29BYzNSeWIydGxDZ0FnWTNWeWRtVjBid29BWTJ4dmMyVndZWFJvSUdacGJHd0tBR05zYjNObGNHRjBhQ0J6ZEhKdmEyVUtBQ0JsYkd4cGNITmxYM0JoZEdnZ1ptbHNiQW9BSUdWc2JHbHdjMlZmY0dGMGFDQnpkSEp2YTJVS0FDQXZKWE1nYzJWMFgyWnZiblFLQUNCdGIzWmxkRzhn''@;'; put 'put ''QUNBbGN5QmhiR2xuYm1Wa2RHVjRkQW9BV3lBdlVtVmpkQ0JiSUFBZ1hRb0FJQ0F2UW05eVpHVnlJRnNnTUNBd0lEQWdYUW9nSUM5QlkzUnBiMjRnUER3Z0wxTjFZblI1Y0dVZ0wxVlNTU0F2VlZKSklDVnpJRDQrQ2lBZ0wxTjFZblI1Y0dVZ0wweHBibXNLTDBGT1RpQndaR1p0WVhKckNnQm5j''@;'; put 'put ''MkYyWlFvQUpTVWdKWE1LQURBZ01DQXdJR1ZrWjJWamIyeHZjZ29BWlc1a2NHRm5aUXB6YUc5M2NHRm5aUXBuY21WemRHOXlaUW9BSlNWUVlXZGxWSEpoYVd4bGNnb0FKU1VsSlVWdVpGQmhaMlU2SUNWa0NnQWxKU1VsVUdGblpUb2dKV1FnSldRS0FDVWxKU1ZRWVdkbFFtOTFibVJwYm1kQ2Iz''@;'; put 'put ''ZzZJQ1ZrSUNWa0lDVmtJQ1ZrQ2dCTVlXNWtjMk5oY0dVQVVHOXlkSEpoYVhRQUpTVWxKVkJoWjJWUGNtbGxiblJoZEdsdmJqb2dKWE1LQUR3OElDOVFZV2RsVTJsNlpTQmJKV1FnSldSZElENCtJSE5sZEhCaFoyVmtaWFpwWTJVS0FDVmtJQ1ZrSUNWa0lHSmxaMmx1Y0dGblpRb0FaM05oZG1V''@;'; put 'put ''S0pXUWdKV1FnSldRZ0pXUWdZbTk0Y0hKcGJTQmpiR2x3SUc1bGQzQmhkR2dLQUNWbklDVm5JSE5sZEY5elkyRnNaU0FsWkNCeWIzUmhkR1VnSldjZ0pXY2dkSEpoYm5Oc1lYUmxDZ0JqWVc1MllYTWdjMmw2WlNBb0pXUXNKV1FwSUdWNFkyVmxaSE1nVUVSR0lHeHBiV2wwSUNnbFpDa0tDU2h6''@;'; put 'put ''ZFdkblpYTjBJSE5sZEhScGJtY2dZU0JpYjNWdVpHbHVaeUJpYjNnZ2MybDZaU3dnYzJWbElHUnZkQ2d4S1NrS0FGc2dMME55YjNCQ2IzZ2dXeVZrSUNWa0lDVmtJQ1ZrWFNBdlVFRkhSVk1nY0dSbWJXRnlhd29BSldRZ0pXUWdjMlYwYkdGNVpYSUtBQ1VsSlNWVWFYUnNaVG9nSlhNS0FDVWxV''@;'; put 'put ''R0ZuWlhNNklDaGhkR1Z1WkNrS0FDVWxVR0ZuWlhNNklERUtBQ1VsUW05MWJtUnBibWRDYjNnNklDaGhkR1Z1WkNrS0FDVWxKU1ZDYjNWdVpHbHVaMEp2ZURvZ0pXUWdKV1FnSldRZ0pXUUtBQ1VsUlc1a1EyOXRiV1Z1ZEhNS2MyRjJaUW9BYzJWMGRYQk1ZWFJwYmpFS0FGc2dlME5oZEdGc2Iy''@;'; put 'put ''ZDlJRHc4SUM5VlVra2dQRHdnTDBKaGMyVWdKWE1nUGo0Z1BqNEtMMUJWVkNCd1pHWnRZWEpyQ2dBbEpVSmxaMmx1VUhKdmJHOW5BQzlFYjNSRWFXTjBJREl3TUNCa2FXTjBJR1JsWmdCRWIzUkVhV04wSUdKbFoybHVBQzl6WlhSMWNFeGhkR2x1TVNCN0FHMWhjbXNBTDBWdVkyOWthVzVuVm1W''@;'; put 'put ''amRHOXlJREkxTmlCaGNuSmhlU0JrWldZQUlFVnVZMjlrYVc1blZtVmpkRzl5SURBQVNWTlBUR0YwYVc0eFJXNWpiMlJwYm1jZ01DQXlOVFVnWjJWMGFXNTBaWEoyWVd3Z2NIVjBhVzUwWlhKMllXd0FSVzVqYjJScGJtZFdaV04wYjNJZ05EVWdMMmg1Y0dobGJpQndkWFFBSlNCVFpYUWdkWEFn''@;'; put 'put ''U1ZOUElFeGhkR2x1SURFZ1kyaGhjbUZqZEdWeUlHVnVZMjlrYVc1bkFDOXpkR0Z5Ym1WMFNWTlBJSHNBSUNBZ0lDQWdJQ0JrZFhBZ1pIVndJR1pwYm1SbWIyNTBJR1IxY0NCc1pXNW5kR2dnWkdsamRDQmlaV2RwYmdBZ0lDQWdJQ0FnSUhzZ01TQnBibVJsZUNBdlJrbEVJRzVsSUhzZ1pHVm1J''@;'; put 'put ''SDE3SUhCdmNDQndiM0FnZlNCcFptVnNjMlVBSUNBZ0lDQWdJQ0I5SUdadmNtRnNiQUFnSUNBZ0lDQWdJQzlGYm1OdlpHbHVaeUJGYm1OdlpHbHVaMVpsWTNSdmNpQmtaV1lBSUNBZ0lDQWdJQ0JqZFhKeVpXNTBaR2xqZENCbGJtUWdaR1ZtYVc1bFptOXVkQUI5SUdSbFpnQXZWR2x0WlhNdFVt''@;'; put 'put ''OXRZVzRnYzNSaGNtNWxkRWxUVHlCa1pXWUFMMVJwYldWekxVbDBZV3hwWXlCemRHRnlibVYwU1ZOUElHUmxaZ0F2VkdsdFpYTXRRbTlzWkNCemRHRnlibVYwU1ZOUElHUmxaZ0F2VkdsdFpYTXRRbTlzWkVsMFlXeHBZeUJ6ZEdGeWJtVjBTVk5QSUdSbFpnQXZTR1ZzZG1WMGFXTmhJSE4wWVhK''@;'; put 'put ''dVpYUkpVMDhnWkdWbUFDOUlaV3gyWlhScFkyRXRUMkpzYVhGMVpTQnpkR0Z5Ym1WMFNWTlBJR1JsWmdBdlNHVnNkbVYwYVdOaExVSnZiR1FnYzNSaGNtNWxkRWxUVHlCa1pXWUFMMGhsYkhabGRHbGpZUzFDYjJ4a1QySnNhWEYxWlNCemRHRnlibVYwU1ZOUElHUmxaZ0F2UTI5MWNtbGxjaUJ6''@;'; put 'put ''ZEdGeWJtVjBTVk5QSUdSbFpnQXZRMjkxY21sbGNpMVBZbXhwY1hWbElITjBZWEp1WlhSSlUwOGdaR1ZtQUM5RGIzVnlhV1Z5TFVKdmJHUWdjM1JoY201bGRFbFRUeUJrWldZQUwwTnZkWEpwWlhJdFFtOXNaRTlpYkdseGRXVWdjM1JoY201bGRFbFRUeUJrWldZQVkyeGxZWEowYjIxaGNtc0Fm''@;'; put 'put ''U0JpYVc1a0lHUmxaZ0FsSlVKbFoybHVVbVZ6YjNWeVkyVTZJSEJ5YjJOelpYUWdaM0poY0doMmFYb2dNQ0F3QUM5amIyOXlaQzFtYjI1MExXWmhiV2xzZVNBdlZHbHRaWE10VW05dFlXNGdaR1ZtQUM5a1pXWmhkV3gwTFdadmJuUXRabUZ0YVd4NUlDOVVhVzFsY3kxU2IyMWhiaUJrWldZQUwy''@;'; put 'put ''TnZiM0prWm05dWRDQmpiMjl5WkMxbWIyNTBMV1poYldsc2VTQm1hVzVrWm05dWRDQTRJSE5qWVd4bFptOXVkQ0JrWldZQUwwbHVkbE5qWVd4bFJtRmpkRzl5SURFdU1DQmtaV1lBTDNObGRGOXpZMkZzWlNCN0FDQWdJQ0FnSUNCa2RYQWdNU0JsZUdOb0lHUnBkaUF2U1c1MlUyTmhiR1ZHWVdO''@;'; put 'put ''MGIzSWdaWGhqYUNCa1pXWUFJQ0FnSUNBZ0lITmpZV3hsQUNVZ2MzUjViR1Z6QUM5emIyeHBaQ0I3SUZ0ZElEQWdjMlYwWkdGemFDQjlJR0pwYm1RZ1pHVm1BQzlrWVhOb1pXUWdleUJiT1NCSmJuWlRZMkZzWlVaaFkzUnZjaUJ0ZFd3Z1pIVndJRjBnTUNCelpYUmtZWE5vSUgwZ1ltbHVaQ0Jr''@;'; put 'put ''WldZQUwyUnZkSFJsWkNCN0lGc3hJRWx1ZGxOallXeGxSbUZqZEc5eUlHMTFiQ0EySUVsdWRsTmpZV3hsUm1GamRHOXlJRzExYkYwZ01DQnpaWFJrWVhOb0lIMGdZbWx1WkNCa1pXWUFMMmx1ZG1seklIc3ZabWxzYkNCN2JtVjNjR0YwYUgwZ1pHVm1JQzl6ZEhKdmEyVWdlMjVsZDNCaGRHaDlJ''@;'; put 'put ''R1JsWmlBdmMyaHZkeUI3Y0c5d0lHNWxkM0JoZEdoOUlHUmxabjBnWW1sdVpDQmtaV1lBTDJKdmJHUWdleUF5SUhObGRHeHBibVYzYVdSMGFDQjlJR0pwYm1RZ1pHVm1BQzltYVd4c1pXUWdleUI5SUdKcGJtUWdaR1ZtQUM5MWJtWnBiR3hsWkNCN0lIMGdZbWx1WkNCa1pXWUFMM0p2ZFc1a1pX''@;'; put 'put ''UWdleUI5SUdKcGJtUWdaR1ZtQUM5a2FXRm5iMjVoYkhNZ2V5QjlJR0pwYm1RZ1pHVm1BQzkwWVhCbGNtVmtJSHNnZlNCaWFXNWtJR1JsWmdBbElHaHZiMnR6SUdadmNpQnpaWFIwYVc1bklHTnZiRzl5SUFBdmJtOWtaV052Ykc5eUlIc2djMlYwYUhOaVkyOXNiM0lnZlNCaWFXNWtJR1JsWmdB''@;'; put 'put ''dlpXUm5aV052Ykc5eUlIc2djMlYwYUhOaVkyOXNiM0lnZlNCaWFXNWtJR1JsWmdBdlozSmhjR2hqYjJ4dmNpQjdJSE5sZEdoelltTnZiRzl5SUgwZ1ltbHVaQ0JrWldZQUwyNXZjR052Ykc5eUlIdHdiM0FnY0c5d0lIQnZjSDBnWW1sdVpDQmtaV1lBTDJKbFoybHVjR0ZuWlNCN0NTVWdhU0Jx''@;'; put 'put ''SUc1d1lXZGxjd0FKTDI1d1lXZGxjeUJsZUdOb0lHUmxaZ0FKTDJvZ1pYaGphQ0JrWldZQUNTOXBJR1Y0WTJnZ1pHVm1BQWt2YzNSeUlERXdJSE4wY21sdVp5QmtaV1lBQ1c1d1lXZGxjeUF4SUdkMElIc0FDUWxuYzJGMlpRQUpDUWxqYjI5eVpHWnZiblFnYzJWMFptOXVkQUFKQ1Frd0lEQWdi''@;'; put 'put ''VzkyWlhSdkFBa0pDU2hjS0NrZ2MyaHZkeUJwSUhOMGNpQmpkbk1nYzJodmR5QW9MQ2tnYzJodmR5QnFJSE4wY2lCamRuTWdjMmh2ZHlBb1hDa3BJSE5vYjNjQUNRbG5jbVZ6ZEc5eVpRQUpmU0JwWmdBdmMyVjBYMlp2Ym5RZ2V3QUpabWx1WkdadmJuUWdaWGhqYUFBSmMyTmhiR1ZtYjI1MElI''@;'; put 'put ''TmxkR1p2Ym5RQUpTQmtjbUYzSUhSbGVIUWdabWwwZEdWa0lIUnZJR2wwY3lCbGVIQmxZM1JsWkNCM2FXUjBhQUF2WVd4cFoyNWxaSFJsZUhRZ2V3a0pDU1VnZDJsa2RHZ2dkR1Y0ZEFBSkwzUmxlSFFnWlhoamFDQmtaV1lBQ1M5M2FXUjBhQ0JsZUdOb0lHUmxaZ0FKWjNOaGRtVUFDUWwzYVdS''@;'; put 'put ''MGFDQXdJR2QwSUhzQUNRa0pXMTBnTUNCelpYUmtZWE5vQUFrSkNYUmxlSFFnYzNSeWFXNW5kMmxrZEdnZ2NHOXdJSGRwWkhSb0lHVjRZMmdnYzNWaUlIUmxlSFFnYkdWdVozUm9JR1JwZGlBd0lIUmxlSFFnWVhOb2IzY0FDUWw5SUdsbUFBbG5jbVZ6ZEc5eVpRQXZZbTk0Y0hKcGJTQjdDUWtK''@;'; put 'put ''Q1NVZ2VHTnZjbTVsY2lCNVkyOXlibVZ5SUhoemFYcGxJSGx6YVhwbEFBa0pOQ0F5SUhKdmJHd0FDUWx0YjNabGRHOEFDUWt5SUdOdmNIa0FDUWxsZUdOb0lEQWdjbXhwYm1WMGJ3QUpDVEFnWlhoamFDQnliR2x1WlhSdkFBa0pjRzl3SUc1bFp5QXdJSEpzYVc1bGRHOEFDUWxqYkc5elpYQmhk''@;'; put 'put ''R2dBTDJWc2JHbHdjMlZmY0dGMGFDQjdBQWt2Y25rZ1pYaGphQ0JrWldZQUNTOXllQ0JsZUdOb0lHUmxaZ0FKTDNrZ1pYaGphQ0JrWldZQUNTOTRJR1Y0WTJnZ1pHVm1BQWx0WVhSeWFYZ2dZM1Z5Y21WdWRHMWhkSEpwZUFBSmJtVjNjR0YwYUFBSmVDQjVJSFJ5WVc1emJHRjBaUUFKY25nZ2Nu''@;'; put 'put ''a2djMk5oYkdVQUNUQWdNQ0F4SURBZ016WXdJR0Z5WXdBSmMyVjBiV0YwY21sNEFDOWxibVJ3WVdkbElIc2djMmh2ZDNCaFoyVWdmU0JpYVc1a0lHUmxaZ0F2YzJodmQzQmhaMlVnZXlCOUlHUmxaZ0F2YkdGNVpYSmpiMnh2Y25ObGNRQUpXd2tsSUd4aGVXVnlJR052Ykc5eUlITmxjWFZsYm1O''@;'; put 'put ''bElDMGdaR0Z5YTJWemRDQjBieUJzYVdkb2RHVnpkQUFKQ1Zzd0lEQWdNRjBBQ1FsYkxqSWdMamdnTGpoZEFBa0pXeTQwSUM0NElDNDRYUUFKQ1ZzdU5pQXVPQ0F1T0YwQUNRbGJMamdnTGpnZ0xqaGRBQWxkQUdSbFpnQXZiR0Y1WlhKc1pXNGdiR0Y1WlhKamIyeHZjbk5sY1NCc1pXNW5kR2dn''@;'; put 'put ''WkdWbUFDOXpaWFJzWVhsbGNpQjdMMjFoZUd4aGVXVnlJR1Y0WTJnZ1pHVm1JQzlqZFhKc1lYbGxjaUJsZUdOb0lHUmxaZ0FKYkdGNVpYSmpiMnh2Y25ObGNTQmpkWEpzWVhsbGNpQXhJSE4xWWlCc1lYbGxjbXhsYmlCdGIyUWdaMlYwQUFsaGJHOWhaQ0J3YjNBZ2MyVjBhSE5pWTI5c2IzSUFD''@;'; put 'put ''Uzl1YjJSbFkyOXNiM0lnZTI1dmNHTnZiRzl5ZlNCa1pXWUFDUzlsWkdkbFkyOXNiM0lnZTI1dmNHTnZiRzl5ZlNCa1pXWUFDUzluY21Gd2FHTnZiRzl5SUh0dWIzQmpiMnh2Y24wZ1pHVm1BQzl2Ym14aGVXVnlJSHNnWTNWeWJHRjVaWElnYm1VZ2UybHVkbWx6ZlNCcFppQjlJR1JsWmdBdmIy''@;'; put 'put ''NXNZWGxsY25NZ2V3QUpMMjE1ZFhCd1pYSWdaWGhqYUNCa1pXWUFDUzl0ZVd4dmQyVnlJR1Y0WTJnZ1pHVm1BQWxqZFhKc1lYbGxjaUJ0ZVd4dmQyVnlJR3gwQUFsamRYSnNZWGxsY2lCdGVYVndjR1Z5SUdkMEFBbHZjZ0FKZTJsdWRtbHpmU0JwWmdBdlkzVnliR0Y1WlhJZ01DQmtaV1lBSlNW''@;'; put 'put ''RmJtUlNaWE52ZFhKalpRQWxKVVZ1WkZCeWIyeHZad0FsSlVKbFoybHVVMlYwZFhBQU1UUWdaR1ZtWVhWc2RDMW1iMjUwTFdaaGJXbHNlU0J6WlhSZlptOXVkQUFsSUM5aGNuSnZkMnhsYm1kMGFDQXhNQ0JrWldZQUpTQXZZWEp5YjNkM2FXUjBhQ0ExSUdSbFpnQWxJRzFoYTJVZ2MzVnlaU0J3''@;'; put 'put ''WkdadFlYSnJJR2x6SUdoaGNtMXNaWE56SUdadmNpQlFVeTFwYm5SbGNuQnlaWFJsY25NZ2IzUm9aWElnZEdoaGJpQkVhWE4wYVd4c1pYSUFMM0JrWm0xaGNtc2dkMmhsY21VZ2UzQnZjSDBnZTNWelpYSmthV04wSUM5d1pHWnRZWEpySUM5amJHVmhjblJ2YldGeWF5QnNiMkZrSUhCMWRIMGdh''@;'; put 'put ''V1psYkhObEFDVWdiV0ZyWlNBblBEd25JR0Z1WkNBblBqNG5JSE5oWm1VZ2IyNGdVRk1nVEdWMlpXd2dNU0JrWlhacFkyVnpBQzlzWVc1bmRXRm5aV3hsZG1Wc0lIZG9aWEpsSUh0d2IzQWdiR0Z1WjNWaFoyVnNaWFpsYkgxN01YMGdhV1psYkhObEFESWdiSFFnZXdBZ0lDQWdkWE5sY21ScFkz''@;'; put 'put ''UWdLRHc4S1NCamRtNGdLRnNwSUdOMmJpQnNiMkZrSUhCMWRBQWdJQ0FnZFhObGNtUnBZM1FnS0Q0K0tTQmpkbTRnS0ZzcElHTjJiaUJzYjJGa0lIQjFkQUI5SUdsbUFDVWxSVzVrVTJWMGRYQUFKU1ZVY21GcGJHVnlDZ0FsSlNVbFVHRm5aWE02SUNWa0NnQmxibVFLY21WemRHOXlaUW9BSlNW''@;'; put 'put ''RlQwWUtBQ1VoVUZNdFFXUnZZbVV0TXk0d0FDQkZVRk5HTFRNdU1Bb0FKU1VsSlVOeVpXRjBiM0k2SUNWeklIWmxjbk5wYjI0Z0pYTWdLQ1Z6S1FvQWNITXlPbkJ6QUR3aExTMGdBRHh3YjJ4NWJHbHVaUUFnY0c5cGJuUnpQU0lBSWk4K0NnQWdabWxzYkQwaUFIVnliQ2dqYkY4bFpDa0FkWEpz''@;'; put 'put ''S0NOeVh5VmtLUUFpSUdacGJHd3RiM0JoWTJsMGVUMGlKV1lBSWlCemRISnZhMlU5SWdBaUlITjBjbTlyWlMxM2FXUjBhRDBpQUNJZ2MzUnliMnRsTFdSaGMyaGhjbkpoZVQwaUpYTUFOU3d5QURFc05RQWlJSE4wY205clpTMXZjR0ZqYVhSNVBTSWxaZ0JuZG5KbGJtUmxjbDlqYjNKbFgzTjJa''@;'; put 'put ''eTVqQUhOMloxOXdjbWx1ZEY5amIyeHZjZ0E4Y0dGMGFBQWdhV1E5SWdCZmNDSWdBQ0JrUFNJQUpXTUFQR1JsWm5NK0NqeHlZV1JwWVd4SGNtRmthV1Z1ZENCcFpEMGljbDhsWkNJZ1kzZzlJalV3SlNVaUlHTjVQU0kxTUNVbElpQnlQU0kzTlNVbElpQm1lRDBpSldRbEpTSWdabms5SWlWa0pT''@;'; put 'put ''VWlQZ29BUEhOMGIzQWdiMlptYzJWMFBTSXdJaUJ6ZEhsc1pUMGljM1J2Y0MxamIyeHZjam9BTzNOMGIzQXRiM0JoWTJsMGVUb0FNUzRBT3lJdlBnb0FQSE4wYjNBZ2IyWm1jMlYwUFNJeElpQnpkSGxzWlQwaWMzUnZjQzFqYjJ4dmNqb0FPeUl2UGdvOEwzSmhaR2xoYkVkeVlXUnBaVzUwUGdv''@;'; put 'put ''OEwyUmxabk0rQ2dBOFpHVm1jejRLUEd4cGJtVmhja2R5WVdScFpXNTBJR2xrUFNKc1h5VmtJaUJuY21Ga2FXVnVkRlZ1YVhSelBTSjFjMlZ5VTNCaFkyVlBibFZ6WlNJZ0FIZ3hQU0lBSWlCNU1UMGlBQ0lnZURJOUlnQWlJSGt5UFNJQUlpQStDZ0E4YzNSdmNDQnZabVp6WlhROUlpVXVNRE5t''@;'; put 'put ''SWlCemRIbHNaVDBpYzNSdmNDMWpiMnh2Y2pvQU95SXZQZ284TDJ4cGJtVmhja2R5WVdScFpXNTBQZ284TDJSbFpuTStDZ0E4Y0c5c2VXZHZiZ0E4Wld4c2FYQnpaUUFnWTNnOUlnQWlJR041UFNJQUlpQnllRDBpQUNJZ2NuazlJZ0E4ZEdWNGRBQWdkR1Y0ZEMxaGJtTm9iM0k5SW5OMFlYSjBJ''@;'; put 'put ''Z0FnZEdWNGRDMWhibU5vYjNJOUltVnVaQ0lBSUhSbGVIUXRZVzVqYUc5eVBTSnRhV1JrYkdVaUFDQjRQU0lBSWlCNVBTSUFJR1p2Ym5RdFptRnRhV3g1UFNJbGN3QXNKWE1BSUdadmJuUXRkMlZwWjJoMFBTSWxjeUlBSUdadmJuUXRjM1J5WlhSamFEMGlKWE1pQUNCbWIyNTBMWE4wZVd4bFBT''@;'; put 'put ''SWxjeUlBSUdadmJuUXRabUZ0YVd4NVBTSWxjeUlBSUdadmJuUXRkMlZwWjJoMFBTSmliMnhrSWdBZ1ptOXVkQzF6ZEhsc1pUMGlhWFJoYkdsaklnQWdkR1Y0ZEMxa1pXTnZjbUYwYVc5dVBTSUFKWE52ZG1WeWJHbHVaUUFsYzJ4cGJtVXRkR2h5YjNWbmFBQWdZbUZ6Wld4cGJtVXRjMmhwWm5R''@;'; put 'put ''OUluTjFjR1Z5SWdBZ1ltRnpaV3hwYm1VdGMyaHBablE5SW5OMVlpSUFJR1p2Ym5RdGMybDZaVDBpSlM0eVppSUFJR1pwYkd3OUlpVnpJZ0FnWm1sc2JEMGlJeVV3TW5nbE1ESjRKVEF5ZUNJQWMzWm5YM1JsZUhSemNHRnVBRDRBUEhSbGVIUlFZWFJvSUhoc2FXNXJPbWh5WldZOUlpTWxjMTl3''@;'; put 'put ''SWlCemRHRnlkRTltWm5ObGREMGlOVEFsSlNJK0FEeDBjM0JoYmlCNFBTSXdJaUJrZVQwaUFDSStBRHd2ZEhOd1lXNCtQQzkwWlhoMFVHRjBhRDRBUEM5MFpYaDBQZ29BUEM5blBnb0FQR2NBSUdsa1BTSmhYd0FnZUd4cGJtczZhSEpsWmowaUFDQjRiR2x1YXpwMGFYUnNaVDBpQUNCMFlYSm5a''@;'; put 'put ''WFE5SWdBOGRHbDBiR1UrQUR3dmRHbDBiR1UrQ2dBOFp5QnBaRDBpQUY4bGN3QWlJR05zWVhOelBTSWxjd0JqYkdGemN3QWdkSEpoYm5ObWIzSnRQU0p6WTJGc1pTZ0FLU0J5YjNSaGRHVW9KV1FwSUhSeVlXNXpiR0YwWlNnQUtTSStDZ0E4TDNOMlp6NEtBRHdoTFMwQUlGQmhaMlZ6T2lBbFpD''@;'; put 'put ''QXRMVDRLQUR4emRtY2dkMmxrZEdnOUlpVmtjSFFpSUdobGFXZG9kRDBpSldSd2RDSUtBQ0IyYVdWM1FtOTRQU0lsTGpKbUlDVXVNbVlnSlM0eVppQWxMakptSWdBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdBZ2VHMXNibk02ZUd4cGJtczlJbWgwZEhB''@;'; put 'put ''Nkx5OTNkM2N1ZHpNdWIzSm5MekU1T1RrdmVHeHBibXNpQUR3L2VHMXNJSFpsY25OcGIyNDlJakV1TUNJZ1pXNWpiMlJwYm1jOUlsVlVSaTA0SWlCemRHRnVaR0ZzYjI1bFBTSnVieUkvUGdvQWMzUjViR1Z6YUdWbGRBQThQM2h0YkMxemRIbHNaWE5vWldWMElHaHlaV1k5SWdBaUlIUjVjR1U5''@;'; put 'put ''SW5SbGVIUXZZM056SWo4K0NnQThJVVJQUTFSWlVFVWdjM1puSUZCVlFreEpReUFpTFM4dlZ6TkRMeTlFVkVRZ1UxWkhJREV1TVM4dlJVNGlDZ0FnSW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTDBkeVlYQm9hV056TDFOV1J5OHhMakV2UkZSRUwzTjJaekV4TG1SMFpDSStDZ0E4SVMwdElFZGxi''@;'; put 'put ''bVZ5WVhSbFpDQmllU0FBWkdGeWEySnNkV1VBWkdGeWEyTjVZVzRBWkdGeWEyZHlZWGtBWkdGeWEyZHlaWGtBWkdGeWEyMWhaMlZ1ZEdFQVpHRnlhM0psWkFCc2FXZG9kR2R5WldWdUFDTWdBQ0JqY21WaGRHVWdiR2x1WlNBQUlDMW1hV3hzSUFBZ0xXUmhjMmdnTlFBZ0xXUmhjMmdnTWdCbmRu''@;'; put 'put ''SmxibVJsY2w5amIzSmxYM1JyTG1NQWRHdG5aVzVmY0hKcGJuUmZkR0ZuY3dCbmNtRndhQ0JzWVdKbGJBQWdMWFJoWjNNZ2V5VmtKWE1sY0gwQWRHdG5aVzVmY0hKcGJuUmZZMjlzYjNJQUpHTUFJQzEzYVdSMGFDQUFJQzF6Ylc5dmRHZ2dZbVY2YVdWeUlBQWdZM0psWVhSbElIQnZiSGxuYjI0''@;'; put 'put ''Z0FDQXRiM1YwYkdsdVpTQUFJR055WldGMFpTQnZkbUZzSUFBZ1kzSmxZWFJsSUhSbGVIUWdBQ0F0ZEdWNGRDQjdBSDBBSUMxbWIyNTBJSHNBSUNWa2ZRQWdMV0Z1WTJodmNpQjNBQ0F0WVc1amFHOXlJR1VBSXdBZ1ZHbDBiR1U2SUFBZ1VHRm5aWE02SUNWa0NnQWpJRWRsYm1WeVlYUmxaQ0Jp''@;'; put 'put ''ZVNBQUtRb0FkR3NBZEdzNmRHc0FJQ0FnSUNBZ1BDRXRMU0FBSUMwdFBnb0FSWEp5YjNJZ1pIVnlhVzVuSUdOdmJuWmxjbk5wYjI0Z2RHOGdJbFZVUmkwNElpNGdJRkYxYVhScGJtY3VDZ0FnUEhZNmMyaGhjR1VnYzNSNWJHVTlJbkJ2YzJsMGFXOXVPbUZpYzI5c2RYUmxPeUFBSUhkcFpIUm9P''@;'; put 'put ''aUFsWkRzZ2FHVnBaMmgwT2lBbFpDSWdabWxzYkdWa1BTSm1ZV3h6WlNJK0FEeDJPbkJoZEdnZ2RqMGlBQ0J0SUFBbExqQm1MQ1V1TUdZZ0FDQnNJQUFnWlNBQUlpOCtBRHd2ZGpwemFHRndaVDRLQUR4Mk9uTjBjbTlyWlNCamIyeHZjajBpQUNJZ2QyVnBaMmgwUFNJbExqQm1jSFFBSWlCa1lY''@;'; put 'put ''Tm9jM1I1YkdVOUltUmhjMmdBSWlCa1lYTm9jM1I1YkdVOUltUnZkQUFpSUM4K0FDTWxNREo0SlRBeWVDVXdNbmdBWjNaeVpXNWtaWEpmWTI5eVpWOTJiV3d1WXdCMmJXeGZjSEpwYm5SZlkyOXNiM0lBSUhkcFpIUm9PaUFsWkRzZ2FHVnBaMmgwT2lBbFpDSUFJRDRBUEhZNmNHRjBhQ0FnZGow''@;'; put 'put ''aUFDOCtQQzkyT25Ob1lYQmxQZ29BYlNBQUpYTWxMakJtTENVdU1HWWdBR01nQUNCbWFXeHNaV1E5SW5SeWRXVWlJR1pwYkd4amIyeHZjajBpQUNJZ0FDQm1hV3hzWldROUltWmhiSE5sSWlBQUpTNHdaaUFsTGpCbUlBQnNJQUI0SUdVZ0lpOCtBQ0FnUEhZNmIzWmhiQ0J6ZEhsc1pUMGljRzl6''@;'; put 'put ''YVhScGIyNDZZV0p6YjJ4MWRHVTdBQ0JzWldaME9pQWxMakptT3lCMGIzQTZJQ1V1TW1ZN0FDQjNhV1IwYURvZ0pTNHlaanNnYUdWcFoyaDBPaUFsTGpKbUlnQThMM1k2YjNaaGJENEtBRHgyT25KbFkzUWdjM1I1YkdVOUluQnZjMmwwYVc5dU9tRmljMjlzZFhSbE95QUFJSE4wY205clpXUTlJ''@;'; put 'put ''bVpoYkhObElpQm1hV3hzWldROUltWmhiSE5sSWo0S0FEeDJPblJsZUhSaWIzZ2dhVzV6WlhROUlqQXNNQ3d3TERBaUlITjBlV3hsUFNKd2IzTnBkR2x2YmpwaFluTnZiSFYwWlRzZ2RpMTBaWGgwTFhkeVlYQndhVzVuT2lkbVlXeHpaU2M3Y0dGa1pHbHVaem9uTUNjN0FHWnZiblF0Wm1GdGFX''@;'; put 'put ''eDVPaUFuSlhNbk93Qm1iMjUwTFhkbGFXZG9kRG9nSlhNN0FHWnZiblF0YzNSeVpYUmphRG9nSlhNN0FHWnZiblF0YzNSNWJHVTZJQ1Z6T3dBZ1ptOXVkQzF6YVhwbE9pQWxMakptY0hRN0FHTnZiRzl5T2lWek93QmpiMnh2Y2pvakpUQXllQ1V3TW5nbE1ESjRPd0IyYld4ZmRHVjRkSE53WVc0''@;'; put 'put ''QUlqNDhZMlZ1ZEdWeVBnQThMMk5sYm5SbGNqNDhMM1k2ZEdWNGRHSnZlRDRLQUR3dmRqcHlaV04wUGdvQVBDOWhQZ29BUEdFQUlHaHlaV1k5SWlWeklnQWdkR2wwYkdVOUlpVnpJZ0FnZEdGeVoyVjBQU0lsY3lJQVBnb0FQQzkyT21keWIzVndQZ29BUEM5RVNWWStDZ0E4UkVsV0lHbGtQU2Rm''@;'; put 'put ''VmsxTU1sOG5JSE4wZVd4bFBTSndiM05wZEdsdmJqcHlaV3hoZEdsMlpUdDJhWE5wWW1sc2FYUjVPbWhwWkdSbGJpSStDZ0E4SVMwdElHbHVjMlZ5ZENCaGJua2diM1JvWlhJZ2FIUnRiQ0JqYjI1MFpXNTBJR2hsY21VZ0xTMCtDZ0E4UkVsV0lHbGtQU2RmYm05MFZrMU1NVjhuSUhOMGVXeGxQ''@;'; put 'put ''U0p3YjNOcGRHbHZianB5Wld4aGRHbDJaVHNpUGdvQVBDRXRMU0IwYUdseklITm9iM1ZzWkNCdmJteDVJR1JwYzNCc1lYa2diMjRnVGs5T0xVbEZJR0p5YjNkelpYSnpJQzB0UGdvQVBFZ3lQbE52Y25KNUxDQjBhR2x6SUdScFlXZHlZVzBnZDJsc2JDQnZibXg1SUdScGMzQnNZWGtnWTI5eWNt''@;'; put 'put ''VmpkR3g1SUc5dUlFbHVkR1Z5Ym1WMElFVjRjR3h2Y21WeUlEVWdLR0Z1WkNCMWNDa2dZbkp2ZDNObGNuTXVQQzlJTWo0S0FEeEVTVllnYVdROUoxOXViM1JXVFV3eVh5Y2djM1I1YkdVOUluQnZjMmwwYVc5dU9uSmxiR0YwYVhabE95SStDZ0E4SVMwdElHbHVjMlZ5ZENCaGJua2diM1JvWlhJ''@;'; put 'put ''Z1RrOU9MVWxGSUdoMGJXd2dZMjl1ZEdWdWRDQm9aWEpsSUMwdFBnb0FQQzlDVDBSWlBnbzhMMGhVVFV3K0NnQThTRVZCUkQ0QVBFMUZWRUVnYUhSMGNDMWxjWFZwZGowaVEyOXVkR1Z1ZEMxVWVYQmxJaUJqYjI1MFpXNTBQU0owWlhoMEwyaDBiV3c3SUdOb1lYSnpaWFE5VlZSR0xUZ2lQZ29B''@;'; put 'put ''UEZSSlZFeEZQZ0E4TDFSSlZFeEZQZ0E4SVMwdElGQmhaMlZ6T2lBbFpDQXRMVDRLQUNBZ0lEeFRRMUpKVUZRZ1RFRk9SMVZCUjBVOUowcGhkbUZ6WTNKcGNIUW5QZ29BSUNBZ1puVnVZM1JwYjI0Z1luSnZkM05sY21Ob1pXTnJLQ2tLQUNBZ0lIc0tBQ0FnSUNBZ0lIWmhjaUIxWVNBOUlIZHBi''@;'; put 'put ''bVJ2ZHk1dVlYWnBaMkYwYjNJdWRYTmxja0ZuWlc1MENnQWdJQ0FnSUNCMllYSWdiWE5wWlNBOUlIVmhMbWx1WkdWNFQyWWdLQ0FuVFZOSlJTQW5JQ2tLQUNBZ0lDQWdJSFpoY2lCcFpYWmxjbk03Q2dBZ0lDQWdJQ0IyWVhJZ2FYUmxiVHNLQUNBZ0lDQWdJSFpoY2lCV1RVeDVaWE05Ym1WM0lF''@;'; put 'put ''RnljbUY1S0NkZlZrMU1NVjhuTENkZlZrMU1NbDhuS1RzS0FDQWdJQ0FnSUhaaGNpQldUVXh1YnoxdVpYY2dRWEp5WVhrb0oxOXViM1JXVFV3eFh5Y3NKMTl1YjNSV1RVd3lYeWNwT3dvQUlDQWdJQ0FnYVdZZ0tDQnRjMmxsSUQ0Z01DQXBleUFnSUNBZ0lDOHZJRWxtSUVsdWRHVnlibVYwSUVW''@;'; put 'put ''NGNHeHZjbVZ5TENCeVpYUjFjbTRnZG1WeWMybHZiaUJ1ZFcxaVpYSUtBQ0FnSUNBZ0lDQWdJR2xsZG1WeWN6MGdjR0Z5YzJWSmJuUWdLSFZoTG5OMVluTjBjbWx1WnlBb2JYTnBaU3MxTENCMVlTNXBibVJsZUU5bUlDZ25MaWNzSUcxemFXVWdLU2twQ2dBZ0lDQWdJQ0I5Q2dBZ0lDQWdJQ0Jw''@;'; put 'put ''WmlBb2FXVjJaWEp6UGowMUtYc0tBQ0FnSUNBZ0lDQm1iM0lnS0hnZ2FXNGdWazFNZVdWektYc0tBQ0FnSUNBZ0lDQWdJR2wwWlcwZ1BTQmtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBRbmxKWkNoV1RVeDVaWE5iZUYwcE93b0FJQ0FnSUNBZ0lDQWdhV1lnS0dsMFpXMHBJSHNLQUNBZ0lDQWdJ''@;'; put 'put ''Q0FnSUNBZ2FYUmxiUzV6ZEhsc1pTNTJhWE5wWW1sc2FYUjVQU2QyYVhOcFlteGxKenNLQUNBZ0lDQWdJQ0FnSUgwS0FDQWdJQ0FnSUNCOUNnQWdJQ0FnSUNBZ1ptOXlJQ2g0SUdsdUlGWk5URzV2S1hzS0FDQWdJQ0FnSUNBZ0lHbDBaVzBnUFNCa2IyTjFiV1Z1ZEM1blpYUkZiR1Z0Wlc1MFFu''@;'; put 'put ''bEpaQ2hXVFV4dWIxdDRYU2s3Q2dBZ0lDQWdJQ0FnSUNBZ0lHbDBaVzB1YzNSNWJHVXVkbWx6YVdKcGJHbDBlVDBuYUdsa1pHVnVKenNLQUNBZ0lDQWdmV1ZzYzJWN0NnQWdJQ0FnSUgwS0FDQWdJSDBLQUNBZ0lEd3ZVME5TU1ZCVVBnb0FQQzlJUlVGRVBnQThRazlFV1NCdmJteHZZV1E5SjJK''@;'; put 'put ''eWIzZHpaWEpqYUdWamF5Z3BPeWMrQ2dBOFJFbFdJR2xrUFNkZlZrMU1NVjhuSUhOMGVXeGxQU0p3YjNOcGRHbHZianB5Wld4aGRHbDJaVHNnWkdsemNHeGhlVHBwYm14cGJtVTdJSFpwYzJsaWFXeHBkSGs2YUdsa1pHVnVBQ0IzYVdSMGFEb2dKV1J3ZERzZ2FHVnBaMmgwT2lBbFpIQjBJajRL''@;'; put 'put ''QUR4VFZGbE1SVDRLQUhaY09pb2dleUJpWldoaGRtbHZjam9nZFhKc0tDTmtaV1poZFd4MEkxWk5UQ2s3WkdsemNHeGhlVHBwYm14cGJtVXRZbXh2WTJ0OUNnQThMMU5VV1V4RlBnb0FQSGh0YkRwdVlXMWxjM0JoWTJVZ2JuTTlJblZ5YmpwelkyaGxiV0Z6TFcxcFkzSnZjMjltZEMxamIyMDZk''@;'; put 'put ''bTFzSWlCd2NtVm1hWGc5SW5ZaUlDOCtDZ0FnUEhZNlozSnZkWEFnYzNSNWJHVTlJbkJ2YzJsMGFXOXVPbkpsYkdGMGFYWmxPeUFBSUhkcFpIUm9PaUFsWkhCME95Qm9aV2xuYUhRNklDVmtjSFFpQUNCamIyOXlaRzl5YVdkcGJqMGlNQ3d3SWlCamIyOXlaSE5wZW1VOUlpVmtMQ1ZrSWlBK0FE''@;'; put 'put ''eElWRTFNUGdvQUNqd2hMUzBnUjJWdVpYSmhkR1ZrSUdKNUlBQWdkbVZ5YzJsdmJpQUFJQ2dBS1FvdExUNEtBR0Z4ZFdFQVpuVmphSE5wWVFCc2FXMWxBRzlzYVhabEFIUmxZV3dBZG0xc0FIWnRiRHAyYld3QUx5OHFLaW9nWTI5dGJXVnVkRG9nSlhNS0FDOHZLaW9xSUhCdmJIbHNhVzVsQ2dC''@;'; put 'put ''elkyRnNaU0FnSUNBOEpUa3VNMllzSUNVNUxqTm1MQ0FsT1M0elpqNEtBSEp2ZEdGMFpTQWdJRHdsT1M0elppd2dKVGt1TTJZc0lDVTVMak5tUGdvQWRISmhibk5zWVhSbFBDVTVMak5tTENBbE9TNHpaaXdnSlRrdU0yWStDZ0J6Y0dobGNtVmZjM2RsWlhBZ2V3b2dJQ0FnSlhNS0lDQWdJQ1Zr''@;'; put 'put ''TEFvQWJHbHVaV0Z5WDNOd2JHbHVaUUE4SlRrdU0yWXNJQ1U1TGpObUxDQWxPUzR6Wmo0c0lDVXVNMllLQUNWeklDQWdJQ1Z6QUNBZ0lDQjBiMnhsY21GdVkyVWdNQzR3TVFvZ0lDQWdKWE1nSUNBZ0pYTWdJQ0FnSlhNZ0lDQWdKWE45Q2dBbGN5VnpBQ1Z6SUhSeVlXNXpiV2wwSUNVdU0yWUFV''@;'; put 'put ''bVZrQUVkeVpXVnVBRUpzZFdVQWNtZGlQQ1U1TGpObUxDQWxPUzR6Wml3Z0pUa3VNMlkrSUhSeVlXNXpiV2wwSUNVdU0yWUFiMjl3Y3l3Z2FXNTBaWEp1WVd3Z1pYSnliM0k2SUhWdWFHRnVaR3hsWkNCamIyeHZjaUIwZVhCbFBTVmtJQ1Z6Q2dCbmRuSmxibVJsY2w5amIzSmxYM0J2ZGk1akFI''@;'; put 'put ''QnZkbDlqYjJ4dmNsOWhjMTl6ZEhJQWNHbG5iV1Z1ZENCN0lHTnZiRzl5SUNWeklIMEtBSEJ2ZGlCeVpXNWtaWEpsY2pwbGJDQXRJQ1Z6Q2dBdkx5b3FLaUJpWlhwcFpYSUtBR0pmYzNCc2FXNWxBQ0FnSUNBZ0lDQWdkRzlzWlhKaGJtTmxJREF1TURFS0lDQWdJQ1Z6SUNBZ0lDVnpJQ0FnSUNW''@;'; put 'put ''eklDQWdJQ1Z6ZlFvQUx5OHFLaW9nY0c5c2VXZHZiZ29BSUNBZ0lIUnZiR1Z5WVc1alpTQXdMakVLSUNBZ0lDVnpJQ0FnSUNWeklDQWdJQ1Z6SUNBZ0lDVnpmUW9BY0c5c2VXZHZiaUI3SUNWa0xBb0FQQ1U1TGpObUxDQWxPUzR6Wml3Z0pUa3VNMlkrQUNWekNpQWdJQ0FsY3dBS0lDQWdJQ1Z6''@;'; put 'put ''SUNBZ0lDVnpJQ0FnSUNWeklDQWdJQ1Z6ZlFvQUx5OHFLaW9nWld4c2FYQnpaUW9BZEc5eWRYTWdleUFsTGpObUxDQWxMak5tQ2lBZ0lDQWxjeUFnSUNBbGN5QWdJQ0FsY3lBZ0lDQWxjMzBLQUhOd2FHVnlaU0I3UENVNUxqTm1MQ0FsT1M0elppd2dKVGt1TTJZK0xDQXhMakFLSUNBZ0lDVnpJ''@;'; put 'put ''Q0FnSUNWeklDQWdJQ1Z6SUNBZ0lDVnpmUW9BTHk4cUtpb2dkR1Y0ZEhOd1lXNDZJQ1Z6TENCbWIyNTBjMmw2WlNBOUlDVXVNMllzSUdadmJuUnVZVzFsSUQwZ0pYTUtBSE5qWVd4bElDVXVNMllLQUhSbGVIUWdld29nSUNBZ2RIUm1JQ0lsY3lJc0NpQWdJQ0FpSlhNaUxDQWxMak5tTENBbExq''@;'; put 'put ''Tm1DaUFnSUNBbGN5QWdJQ0FsY3lBZ0lDQWxjeUFnSUNBbGN5QWdJQ0FsYzMwS0FDQWdJQ0J1YjE5emFHRmtiM2NLQUM4dktpb3FJR1Z1WkY5bFpHZGxDZ0F2THlvcUtpQmlaV2RwYmw5bFpHZGxDZ0F2THlvcUtpQmxibVJmYm05a1pRb0FMeThxS2lvZ1ltVm5hVzVmYm05a1pUb2dKWE1LQUM4''@;'; put 'put ''dktpb3FJR1Z1WkY5amJIVnpkR1Z5Q2dBdkx5b3FLaUJpWldkcGJsOWpiSFZ6ZEdWeUNnQXZMeW9xS2lCbGJtUmZjR0ZuWlFvQUx5OHFLaW9nWW1WbmFXNWZjR0ZuWlFvQUx5OHFLaW9nWlc1a1gyeGhlV1Z5Q2dBdkx5b3FLaUJpWldkcGJsOXNZWGxsY2pvZ0pYTXNJQ1ZrTHlWa0NnQXZMeW9x''@;'; put 'put ''S2lCbGJtUmZaM0poY0dnS0FDOHZLaW9xSUdKbFoybHVYMmR5WVhCb0lDVnpDZ0JqWVcxbGNtRWdleUJzYjJOaGRHbHZiaUE4SlM0elppQXNJQ1V1TTJZZ0xDQWxMak5tUGdvZ0lDQWdJQ0FnSUNCc2IyOXJYMkYwSUNBOEpTNHpaaUFzSUNVdU0yWWdMQ0FsTGpObVBnb2dJQ0FnSUNBZ0lDQnlh''@;'; put 'put ''V2RvZENCNElDb2dhVzFoWjJWZmQybGtkR2dnTHlCcGJXRm5aVjlvWldsbmFIUUtJQ0FnSUNBZ0lDQWdZVzVuYkdVZ0pTNHpaZ3A5Q2dBdkwzTnJlUXB3YkdGdVpTQjdJRHd3TENBeExDQXdQaXdnTVNCb2IyeHNiM2NLSUNBZ0lIUmxlSFIxY21VZ2V3b2dJQ0FnSUNBZ0lIQnBaMjFsYm5RZ2V5''@;'; put 'put ''QmliM3B2SUhSMWNtSjFiR1Z1WTJVZ01DNDVOUW9nSUNBZ0lDQWdJQ0FnSUNCamIyeHZjbDl0WVhBZ2V3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1d6QXVNREFnY21kaUlEd3dMakExTENBd0xqSXdMQ0F3TGpVd1BsMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lGc3dMalV3SUhKbllpQThNQzR3TlN3''@;'; put 'put ''Z01DNHlNQ3dnTUM0MU1ENWRDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmJNQzQzTlNCeVoySWdQREV1TURBc0lERXVNREFzSURFdU1EQStYUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdXekF1TnpVZ2NtZGlJRHd3TGpJMUxDQXdMakkxTENBd0xqSTFQbDBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRnN4''@;'; put 'put ''TGpBd0lISm5ZaUE4TUM0MU1Dd2dNQzQxTUN3Z01DNDFNRDVkQ2lBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQWdJQ0FnYzJOaGJHVWdQREV1TURBc0lERXVNREFzSURFdU5UQStJQ29nTWk0MU1Bb2dJQ0FnSUNBZ0lDQWdJQ0IwY21GdWMyeGhkR1VnUERBdU1EQXNJREF1TURBc0lEQXVN''@;'; put 'put ''REErQ2lBZ0lDQWdJQ0FnZlFvZ0lDQWdJQ0FnSUdacGJtbHphQ0I3SUdGdFltbGxiblFnTVNCa2FXWm1kWE5sSURBZ2ZRb2dJQ0FnZlFvZ0lDQWdjMk5oYkdVZ01UQXdNREFLZlFvdkwyMXBjM1FLWm05bklIc2dabTluWDNSNWNHVWdNZ29nSUNBZ1pHbHpkR0Z1WTJVZ05UQUtJQ0FnSUdOdmJH''@;'; put 'put ''OXlJSEpuWWlBOE1TNHdNQ3dnTVM0d01Dd2dNUzR3TUQ0Z0tpQXdMamMxQ2lBZ0lDQm1iMmRmYjJabWMyVjBJREF1TVRBS0lDQWdJR1p2WjE5aGJIUWdNUzQxTUFvZ0lDQWdkSFZ5WW5Wc1pXNWpaU0F4TGpjMUNuMEtMeTluYm1RS2NHeGhibVVnZXlBOE1DNHdNQ3dnTVM0d01Dd2dNQzR3TUQ0''@;'; put 'put ''c0lEQUtJQ0FnSUhSbGVIUjFjbVVnZXdvZ0lDQWdJQ0FnSUhCcFoyMWxiblI3SUdOdmJHOXlJSEpuWWlBOE1DNHlOU3dnTUM0ME5Td2dNQzR3TUQ0Z2ZRb2dJQ0FnSUNBZ0lHNXZjbTFoYkNCN0lHSjFiWEJ6SURBdU56VWdjMk5oYkdVZ01DNHdNU0I5Q2lBZ0lDQWdJQ0FnWm1sdWFYTm9JSHNn''@;'; put 'put ''Y0dodmJtY2dNQzR4TUNCOUNpQWdJQ0I5Q24wS0FHeHBaMmgwWDNOdmRYSmpaU0I3SUR3eE5UQXdMRE13TURBc0xUSTFNREErSUdOdmJHOXlJRmRvYVhSbElIMEtBQ04yWlhKemFXOXVJRE11TmpzS0FHZHNiMkpoYkY5elpYUjBhVzVuY3lCN0lHRnpjM1Z0WldSZloyRnRiV0VnTVM0d0lIMEtB''@;'; put 'put ''Q05rWldaaGRXeDBJSHNnWm1sdWFYTm9JSHNnWVcxaWFXVnVkQ0F3TGpFZ1pHbG1ablZ6WlNBd0xqa2dmU0I5Q2dBamFXNWpiSFZrWlNBaVkyOXNiM0p6TG1sdVl5SUtJMmx1WTJ4MVpHVWdJblJsZUhSMWNtVnpMbWx1WXlJS0kybHVZMngxWkdVZ0luTm9ZWEJsY3k1cGJtTWlDZ0FqWkdWamJH''@;'; put 'put ''RnlaU0FsY3lBOUlDVnpPd29BUW14aFkyc0FWMmhwZEdVQVltRnJaWEp6WTJodll3QmljbUZ6Y3dCaWNtbG5hSFJuYjJ4a0FHSnliMjU2WlFCaWNtOXVlbVV5QUdOc1pXRnlBR052YjJ4amIzQndaWElBWTI5d2NHVnlBR1JoY210aWNtOTNiZ0JrWVhKcmNIVnljR3hsQUdSaGNtdDBZVzRBWkdG''@;'; put 'put ''eWEzZHZiMlFBWkd0bmNtVmxibU52Y0hCbGNnQmtkWE4wZVhKdmMyVUFabVZzWkhOd1lYSUFabXhsYzJnQVozSmhlVEExQUdkeVpXVnVZMjl3Y0dWeUFHaDFiblJsY25ObmNtVmxiZ0JzYVdkb2RGOXdkWEp3YkdVQWJHbG5hSFIzYjI5a0FHMWhibVJoY21sdWIzSmhibWRsQUcxbFpHbDFiV1p2''@;'; put 'put ''Y21WemRHZHlaV1Z1QUcxbFpHbDFiV2R2YkdSbGJuSnZaQUJ0WldScGRXMTNiMjlrQUcxbFpGOXdkWEp3YkdVQWJXbGpZUUJ1Wlc5dVlteDFaUUJ1Wlc5dWNHbHVhd0J1WlhkdGFXUnVhV2RvZEdKc2RXVUFibVYzZEdGdUFHOXNaR2R2YkdRQWNYVmhjblI2QUhKcFkyaGliSFZsQUhOallYSnNa''@;'; put 'put ''WFFBYzJWdGFWTjNaV1YwUTJodll3QnphV3gyWlhJQWMzQnBZM2x3YVc1ckFITjFiVzFsY25OcmVRQjJaWEo1WkdGeWEySnliM2R1QUhabGNubGZiR2xuYUhSZmNIVnljR3hsQUhCdmRnQndiM1k2Y0c5MkFDVnpJQ1Z6Q2dBdVhDSWdBQ0FsWkNBbFpBQWdKWE1LQUNBbFpBQm1hV3hzSUFCbGJH''@;'; put 'put ''eHBjSE5sSUdGMGRISnpKV1FnSlhOM2FXUWdKUzQxWmlCb2RDQWxMalZtSUdGMElDZ2xMalZtTENVdU5XWXBPd29BTG1aMElDVnpDZ0F1Y0hNZ0pXUXFYRzRvVTBaMUx5VXVNR1oxQ2dBaUpYTWlJR0YwSUNnbExqVm1MQ1V1TldZcE93b0FKVEF6YndBbGN5VnpJR2x6SUc1dmRDQmhJSFJ5YjJa''@;'; put 'put ''bUlHWnZiblFLQUdSdmRDQndhV01nY0d4MVoybHVPaUFBVWdCZENpNVFSUW9BTGxCVElDVXVOV1lnSlM0MVpnb0FKWE1nZEc4Z1kyaGhibWRsSUdSeVlYZHBibWNnYzJsNlpTd2diWFZzZEdsd2JIa2dkR2hsSUhkcFpIUm9JR0Z1WkNCb1pXbG5hSFFnYjI0Z2RHaGxJQzVRVXlCc2FXNWxJR0Zp''@;'; put 'put ''YjNabElHRnVaQ0IwYUdVZ2JuVnRZbVZ5SUc5dUlIUm9aU0IwZDI4Z2JHbHVaWE1nWW1Wc2IzY2dLSEp2ZFc1a1pXUWdkRzhnZEdobElHNWxZWEpsYzNRZ2FXNTBaV2RsY2lrZ1lua2dZU0J6WTJGc1pTQm1ZV04wYjNJS0FDNXVjaUJUUmlBbExqQm1Dbk5qWVd4bGRHaHBZMnR1WlhOeklEMGdK''@;'; put 'put ''UzR3WmdvQUpYTWdaRzl1SjNRZ1kyaGhibWRsSUdGdWVYUm9hVzVuSUdKbGJHOTNJSFJvYVhNZ2JHbHVaU0JwYmlCMGFHbHpJR1J5WVhkcGJtY0tBQ1Z6SUc1dmJpMW1ZWFJoYkNCeWRXNHRkR2x0WlNCd2FXTWdkbVZ5YzJsdmJpQmtaWFJsY20xcGJtRjBhVzl1TENCMlpYSnphVzl1SURJS0FH''@;'; put 'put ''SnZlSEpoWkQweUxqQWdKWE1nZDJsc2JDQmlaU0J5WlhObGRDQjBieUF3TGpBZ1lua2daM0JwWXlCdmJteDVDZ0J6WTJGc1pUMHhMakFnSlhNZ2NtVnhkV2x5WldRZ1ptOXlJR052YlhCaGNtbHpiMjV6Q2dBbGN5QmliM2h5WVdRZ2FYTWdibTkzSURBdU1DQnBiaUJuY0dsakxDQmxiSE5sSUds''@;'; put 'put ''MElISmxiV0ZwYm5NZ01pNHdDZ0FsY3lCa1lYTm9kMmxrSUdseklEQXVNU0JwYmlBeE1IUm9JRVZrYVhScGIyNHNJREF1TURVZ2FXNGdSRmRDSURJZ1lXNWtJR2x1SUdkd2FXTUtBQ1Z6SUdacGJHeDJZV3dnYVhNZ01DNHpJR2x1SURFd2RHZ2dSV1JwZEdsdmJpQW9abWxzYkNBd0lHMWxZVzV6''@;'; put 'put ''SUdKc1lXTnJLU3dnTUM0MUlHbHVJR2R3YVdNZ0tHWnBiR3dnTUNCdFpXRnVjeUIzYUdsMFpTa3NJSFZ1WkdWbWFXNWxaQ0JwYmlCRVYwSWdNZ29BSlhNZ1ptbHNiQ0JvWVhNZ2JtOGdiV1ZoYm1sdVp5QnBiaUJFVjBJZ01pd2daM0JwWXlCallXNGdkWE5sSUdacGJHd2diM0lnWm1sc2JHVmtM''@;'; put 'put ''Q0F4TUhSb0lFVmthWFJwYjI0Z2RYTmxjeUJtYVd4c0lHOXViSGtLQUNWeklFUlhRaUF5SUdSdlpYTnVKM1FnZFhObElHWnBiR3dnWVc1a0lHUnZaWE51SjNRZ1pHVm1hVzVsSUdacGJHeDJZV3dLQUNWeklISmxjMlYwSUhkdmNtdHpJR2x1SUdkd2FXTWdZVzVrSURFd2RHZ2daV1JwZEdsdmJp''@;'; put 'put ''d2dZblYwSUdsemJpZDBJR1JsWm1sdVpXUWdhVzRnUkZkQ0lESUtBQ1Z6SUVSWFFpQXlJR052YlhCaGRHbGlhV3hwZEhrZ1pHVm1hVzVwZEdsdmJuTUtBR2xtSUdKdmVISmhaQ0ErSURFdU1DQW1KaUJrWVhOb2QybGtJRHdnTUM0d056VWdkR2hsYmlCWUNnbG1hV3hzZG1Gc0lEMGdNVHNLQ1dS''@;'; put 'put ''bFptbHVaU0JtYVd4c0lGa2dXVHNLQ1dSbFptbHVaU0J6YjJ4cFpDQlpJRms3Q2dsa1pXWnBibVVnY21WelpYUWdXU0J6WTJGc1pUMHhMakFnV1RzS1dBb0FjbVZ6WlhRZ0pYTWdjMlYwSUhSdklHdHViM2R1SUhOMFlYUmxDZ0FsY3lCSFRsVWdjR2xqSUhaekxpQXhNSFJvSUVWa2FYUnBiMjRn''@;'; put 'put ''WkZ3b1pTZDBaVzUwWlFvQWFXWWdabWxzYkhaaGJDQStJREF1TkNCMGFHVnVJRmdLQ1dSbFptbHVaU0J6WlhSbWFXeHNkbUZzSUZrZ1ptbHNiSFpoYkNBOUlERWdMU0JaT3dvSlpHVm1hVzVsSUdKdmJHUWdXU0IwYUdsamEyNWxjM01nTWlCWk93b0FDU1Z6SUdsbUlIbHZkU0IxYzJVZ1ozQnBZ''@;'; put 'put ''eUJoYm1RZ2FYUWdZbUZ5Wm5NZ2IyNGdaVzVqYjNWdWRHVnlhVzVuSUNKemIyeHBaQ0lzQ2dBSkpYTUphVzV6ZEdGc2JDQmhJRzF2Y21VZ2NtVmpaVzUwSUhabGNuTnBiMjRnYjJZZ1ozQnBZeUJ2Y2lCemQybDBZMmdnZEc4Z1JGZENJRzl5SURFd2RHZ2dSV1JwZEdsdmJpQndhV003Q2dBSkpY''@;'; put 'put ''TUpjMjl5Y25rc0lIUm9aU0JuY205bVppQm1iMnhyY3lCamFHRnVaMlZrSUdkd2FXTTdJSE5sYm1RZ1lXNTVJR052YlhCc1lXbHVkQ0IwYnlCMGFHVnRPd29BV0NCbGJITmxJRm9LQ1dSbFptbHVaU0J6WlhSbWFXeHNkbUZzSUZrZ1ptbHNiSFpoYkNBOUlGazdDZ2xrWldacGJtVWdZbTlzWkNC''@;'; put 'put ''WklGazdDZ2xrWldacGJtVWdabWxzYkdWa0lGa2dabWxzYkNCWk93cGFDZ0FsY3lCaGNuSnZkMmhsWVdRZ2FHRnpJRzV2SUcxbFlXNXBibWNnYVc0Z1JGZENJRElzSUdGeWNtOTNhR1ZoWkNBOUlEY2diV0ZyWlhNZ1ptbHNiR1ZrSUdGeWNtOTNhR1ZoWkhNZ2FXNGdaM0JwWXlCaGJtUWdhVzRn''@;'; put 'put ''TVRCMGFDQkZaR2wwYVc5dUNnQWxjeUJoY25KdmQyaGxZV1FnYVhNZ2RXNWtaV1pwYm1Wa0lHbHVJRVJYUWlBeUxDQnBibWwwYVdGc2JIa2dNU0JwYmlCbmNHbGpMQ0F5SUdsdUlERXdkR2dnUldScGRHbHZiZ29BWVhKeWIzZG9aV0ZrSUQwZ055QWxjeUJ1YjNRZ2RYTmxaQ0JpZVNCbmNtRndh''@;'; put 'put ''SFpwZWdvQUpYTWdSMDVWSUhCcFl5QnpkWEJ3YjNKMGN5QmhJR0p2ZUhKaFpDQjJZWEpwWVdKc1pTQjBieUJrY21GM0lHSnZlR1Z6SUhkcGRHZ2djbTkxYm1SbFpDQmpiM0p1WlhKek95QkVWMElnWVc1a0lERXdkR2dnUldRdUlHUnZJRzV2ZEFvQVltOTRjbUZrSUQwZ01DQWxjeUJ1YnlCeWIz''@;'; put 'put ''VnVaR1ZrSUdOdmNtNWxjbk1nYVc0Z1ozSmhjR2gyYVhvS0FDVnpJRWRPVlNCd2FXTWdjM1Z3Y0c5eWRITWdZU0JzYVc1bGRHaHBZMnNnZG1GeWFXRmliR1VnZEc4Z2MyVjBJR3hwYm1VZ2RHaHBZMnR1WlhOek95QkVWMElnWVc1a0lERXdkR2dnUldRdUlHUnZJRzV2ZEFvQWJHbHVaWFJvYVdO''@;'; put 'put ''cklEMGdNRHNnYjJ4a2JHbHVaWFJvYVdOcklEMGdiR2x1WlhSb2FXTnJDZ0FsY3lBdVVGTWdkeTl2SUdGeVozTWdZMkYxYzJWeklFZE9WU0J3YVdNZ2RHOGdjMk5oYkdVZ1pISmhkMmx1WnlCMGJ5Qm1hWFFnT0M0MWVERXhJSEJoY0dWeU95QkVWMElnWkc5bGN5QnViM1FLQUNWeklHMWhlSEJ6''@;'; put 'put ''YUhRZ1lXNWtJRzFoZUhCemQybGtJR2hoZG1VZ2JtOGdiV1ZoYm1sdVp5QnBiaUJFVjBJZ01pNHdMQ0J6WlhRZ2NHRm5aU0JpYjNWdVpHRnlhV1Z6SUdsdUlHZHdhV01nWVc1a0lHbHVJREV3ZEdnZ1JXUnBkR2x2YmdvQUpYTWdiV0Y0Y0hOb2RDQmhibVFnYldGNGNITjNhV1FnWVhKbElIQnla''@;'; put 'put ''V1JsWm1sdVpXUWdkRzhnTVRFdU1DQmhibVFnT0M0MUlHbHVJR2R3YVdNS0FHMWhlSEJ6YUhRZ1BTQWxaZ3B0WVhod2MzZHBaQ0E5SUNWbUNnQkViM1E2SUZzS0FHUmxabWx1WlNCaGRIUnljekFnSlNVZ0pTVTdJR1JsWm1sdVpTQjFibVpwYkd4bFpDQWxKU0FsSlRzZ1pHVm1hVzVsSUhKdmRX''@;'; put 'put ''NWtaV1FnSlNVZ0pTVTdJR1JsWm1sdVpTQmthV0ZuYjI1aGJITWdKU1VnSlNVS0FDVnpKWE1nZFc1emRYQndiM0owWldRS0FDVnpJSEpsYzNSdmNtVWdjRzlwYm5RZ2MybDZaU0JoYm1RZ1ptOXVkQW91Y0hNZ1hHNG9MbE1LTG1aMElGeHVLRVJHQ2dBbGN5QkRjbVZoZEc5eU9pQWxjeUIyWlhK''@;'; put 'put ''emFXOXVJQ1Z6SUNnbGN5a0tBQ1Z6SUZScGRHeGxPaUFsY3dvQUpYTWdjMkYyWlNCd2IybHVkQ0J6YVhwbElHRnVaQ0JtYjI1MENpNXVjaUF1VXlCY2JpZ3Vjd291Ym5JZ1JFWWdYRzRvTG1ZS0FIQnBZd0J3YVdNNmNHbGpBSEJ1WnpwemRtY0FaMmxtT25OMlp3QnFjR1ZuT25OMlp3QnFjR1U2''@;'; put 'put ''YzNabkFHcHdaenB6ZG1jQWNHNW5PbVpwWndCbmFXWTZabWxuQUdwd1pXYzZabWxuQUdwd1pUcG1hV2NBYW5Cbk9tWnBad0J3Ym1jNmRuSnRiQUJuYVdZNmRuSnRiQUJxY0dWbk9uWnliV3dBYW5CbE9uWnliV3dBYW5Cbk9uWnliV3dBWlhCek9uQnpBSEJ6T25CekFDaHNhV0lwT25CekFIQnVa''@;'; put 'put ''enB0WVhBQVoybG1PbTFoY0FCcWNHVm5PbTFoY0FCcWNHVTZiV0Z3QUdwd1p6cHRZWEFBY0hNNmJXRndBR1Z3Y3pwdFlYQUFjM1puT20xaGNBQndibWM2Wkc5MEFHZHBaanBrYjNRQWFuQmxaenBrYjNRQWFuQmxPbVJ2ZEFCcWNHYzZaRzkwQUhCek9tUnZkQUJsY0hNNlpHOTBBSE4yWnpwa2Iz''@;'; put 'put ''UUFjRzVuT25oa2IzUUFaMmxtT25oa2IzUUFhbkJsWnpwNFpHOTBBR3B3WlRwNFpHOTBBR3B3WnpwNFpHOTBBSEJ6T25oa2IzUUFaWEJ6T25oa2IzUUFjM1puT25oa2IzUUFjM1puT25OMlp3QndibWM2ZG0xc0FHZHBaanAyYld3QWFuQmxaenAyYld3QWFuQmxPblp0YkFCcWNHYzZkbTFzQUdk''@;'; put 'put ''cFpqcDBhd0JwYldGblpTQmpjbVZoZEdVZ2NHaHZkRzhnSW5Cb2IzUnZYeVZ6SWlBdFptbHNaU0FpSlhNaUNnQWtZeUJqY21WaGRHVWdhVzFoWjJVZ0pTNHlaaUFsTGpKbUlDMXBiV0ZuWlNBaWNHaHZkRzlmSlhNaUNnQThkanBwYldGblpTQnpjbU05SWlWeklpQnpkSGxzWlQwaUlIQnZjMmww''@;'; put 'put ''YVc5dU9tRmljMjlzZFhSbE95QjNhV1IwYURvbExqSm1PeUJvWldsbmFIUTZKUzR5WmpzZ2JHVm1kRG9sTGpKbUlEc2dkRzl3T2lVdU1tWWlBQ0F2UGdvQVozWnNiMkZrYVcxaFoyVmZZMjl5WlM1akFHTnZjbVZmYkc5aFpHbHRZV2RsWDNCemJHbGlBRnNnQUNWbklDVm5JQUJkSUNBbFpDQjBj''@;'; put 'put ''blZsSUNWekNnQmRJQ0FsWkNCbVlXeHpaU0FsY3dvQVkyOXlaVjlzYjJGa2FXMWhaMlZmY0hNQVozTmhkbVVnSldjZ0pXY2dkSEpoYm5Oc1lYUmxJRzVsZDNCaGRHZ0tBSFZ6WlhKZmMyaGhjR1ZmSldRS0FHZHlaWE4wYjNKbENnQmpiM0psWDJ4dllXUnBiV0ZuWlY5MmNtMXNBRk5vWVhCbElI''@;'; put 'put ''c0tBQ0FnWVhCd1pXRnlZVzVqWlNCQmNIQmxZWEpoYm1ObElIc0tBQ0FnSUNCdFlYUmxjbWxoYkNCTllYUmxjbWxoYkNCN0NnQWdJQ0FnSUNCaGJXSnBaVzUwU1c1MFpXNXphWFI1SURBdU16TUtBQ0FnSUNBZ0lDQWdaR2xtWm5WelpVTnZiRzl5SURFZ01TQXhDZ0FnSUNBZ2ZRb0FJQ0FnSUhS''@;'; put 'put ''bGVIUjFjbVVnU1cxaFoyVlVaWGgwZFhKbElIc2dkWEpzSUNJbGN5SWdmUW9BSUNCOUNnQmpiM0psWDJ4dllXUnBiV0ZuWlY5bWFXY0FKV1FnSldRZ0pXUWdKV1FnSldRZ0pXUWdKV1FnSldRZ0pXUWdKUzR4WmlBbFpDQWxaQ0FsWkNBbFpDQWxaQ0FsWkFvZ0pXUWdKWE1LQUNBbFpDQWxaQ0Fs''@;'; put 'put ''WkNBbFpDQWxaQ0FsWkNBbFpDQWxaQ0FsWkNBbFpBb0FZMjl5WlY5c2IyRmthVzFoWjJWZmMzWm5BRHhwYldGblpTQjRiR2x1YXpwb2NtVm1QU0lBSWlCM2FXUjBhRDBpSldkd2VDSWdhR1ZwWjJoMFBTSWxaM0I0SWlCd2NtVnpaWEoyWlVGemNHVmpkRkpoZEdsdlBTSjRUV2xrV1UxcFpDQnRa''@;'; put 'put ''V1YwSWlCNFBTSWxaeUlnZVQwaUpXY2lBQ0IwY21GdWMyWnZjbTA5SW5KdmRHRjBaU2dsWkNBbFp5QWxaeWtpQUNJZ2QybGtkR2c5SWlWbmNIZ2lJR2hsYVdkb2REMGlKV2R3ZUNJZ2NISmxjMlZ5ZG1WQmMzQmxZM1JTWVhScGJ6MGllRTFwYmxsTmFXNGdiV1ZsZENJZ2VEMGlKV2NpSUhrOUlp''@;'; put 'put ''Vm5JZ0F2UGdvQVpHOTBYMnhoZVc5MWRBQndhR0Z6WlFCa2IzUWdaRzlsY3lCdWIzUWdjM1Z3Y0c5eWRDQjBhR1VnWVhOd1pXTjBJR0YwZEhKcFluVjBaU0JtYjNJZ1pHbHpZMjl1Ym1WamRHVmtJR2R5WVhCb2N5QnZjaUJuY21Gd2FITWdkMmwwYUNCamJIVnpkR1Z5Y3dvQVkyOXRjRzkxYm1R''@;'; put 'put ''QWRpQTlQU0J1QUdSdmRHbHVhWFF1WXdCeVpXMXZkbVZmWm5KdmJWOXlZVzVyQUc5eVpHVnlBR1ZrWjJVZ2JHRmlaV3h6SUhkcGRHZ2djM0JzYVc1bGN6MWpkWEoyWldRZ2JtOTBJSE4xY0hCdmNuUmxaQ0JwYmlCa2IzUWdMU0IxYzJVZ2VHeGhZbVZzY3dvQVJVUmZiR0ZpWld3b1ptVXBBR1J2''@;'; put 'put ''ZEhOd2JHbHVaWE11WXdCZlpHOTBYM053YkdsdVpYTUFabXhoZENCbFpHZGxJR0psZEhkbFpXNGdZV1JxWVdObGJuUWdibTlrWlhNZ2IyNWxJRzltSUhkb2FXTm9JR2hoY3lCaElISmxZMjl5WkNCemFHRndaU0F0SUhKbGNHeGhZMlVnY21WamIzSmtjeUIzYVhSb0lFaFVUVXd0YkdsclpTQnNZ''@;'; put 'put ''V0psYkhNS0FDQWdSV1JuWlNBbGN5QWxjeUFsY3dvQWVIaDRBREV3TURBd0FIc2xjMzBBWVhWNFp3QnNZV0psYkY5bWJHOWhkQUJtYVhobFpBQW9iQ0E5SUVWRVgyeGhZbVZzS0dabEtTa0FjMlYwUldSblpVeGhZbVZzVUc5ekFHVWdJVDBnVGxWTVRBQm1ZWE4wWjNJdVl3QmtaV3hsZEdWZlpt''@;'; put 'put ''RnpkRjlsWkdkbEFHNGdJVDBnVGtSZmJtVjRkQ2h1S1FCbVlYTjBYMjV2WkdVQWRTQWhQU0IyQUdaaGMzUmZibTlrWldGd2NBQk9SRjl1WlhoMEtIWXBJRDA5SUU1VlRFd0FabWx1WkY5bVlYTjBYMjV2WkdVb1p5d2diaWtBWkdWc1pYUmxYMlpoYzNSZmJtOWtaUUJrWld4bGRHVmZabXhoZEY5''@;'; put 'put ''bFpHZGxBRzFsY21kbFgyOXVaWGRoZVNCbmJHbDBZMmdLQUcxbGNtZGxYMjl1WlhkaGVRQnpZV1psWDJSbGJHVjBaVjltWVhOMFgyVmtaMlVBYkdjQVkyOXRjQUJqYm5RZ1BUMGdjM29BYldsdVkzSnZjM011WXdCbWFYaE1ZV0psYkU5eVpHVnlBSEpsYldsdVkzSnZjM01BYldsdVkzSnZjM01n''@;'; put 'put ''SlhNNklDVmtJR055YjNOemFXNW5jeXdnSlM0eVppQnpaV056TGdvQWRnQnVaV2xuYUdKdmNnQW9jbllnUFQwZ01Da2dmSHdnS0U1RVgyOXlaR1Z5S0hKMktTMU9SRjl2Y21SbGNpaDJLU2txWkdseUlENGdNQUJqYjI1emRISmhhVzVwYm1kZlpteGhkRjlsWkdkbEtHY3NkaXhsS1NBOVBTQkdR''@;'; put 'put ''VXhUUlFCbWJHRjBYM0psYjNKa1pYSUFUa1JmY21GdWF5aDJLU0E5UFNCeUFIQnZjM1J2Y21SbGNnQm1iR0YwYVc1a1pYZ29ZV2RvWldGa0tHVXBLU0E4SUUwdFBtNXliM2R6QUdac1lYUmZjMlZoY21Ob0FHWnNZWFJwYm1SbGVDaGhaM1JoYVd3b1pTa3BJRHdnVFMwK2JtTnZiSE1BYjNWMEFH''@;'; put 'put ''OXlaR1Z5YVc1bklDY2xjeWNnYm05MElISmxZMjluYm1sNlpXUXVDZ0J2Y21SbGNtbHVaeUFuSlhNbklHNXZkQ0J5WldOdloyNXBlbVZrSUdadmNpQnViMlJsSUNjbGN5Y3VDZ0J0WlhKblpUSTZJR2R5WVhCb0lDVnpMQ0J5WVc1cklDVmtJR2hoY3lCdmJteDVJQ1ZrSUR3Z0pXUWdibTlrWlhN''@;'; put 'put ''S0FHMXBibU55YjNOek9pQndZWE56SUNWa0lHbDBaWElnSldRZ2RISjVhVzVuSUNWa0lHTjFjbDlqY205emN5QWxaQ0JpWlhOMFgyTnliM056SUNWa0NnQk9SRjl2Y21SbGNpaDJLU0E4SUU1RVgyOXlaR1Z5S0hjcEFHSmhiR0Z1WTJVQWRISmhibk53YjNObFgzTjBaWEFBYzNWeWNISnBjMlVL''@;'; put 'put ''QUdsdWMzUmhiR3hmYVc1ZmNtRnVheXdnYkdsdVpTQWxaRG9nSlhNZ0pYTWdjbUZ1YXlBbFpDQnBJRDBnSldRZ1lXNGdQU0F3Q2dCSFJGOXlZVzVyS0djcFczSmRMbTRnUEQwZ1IwUmZjbUZ1YXlobktWdHlYUzVoYmdCcGJuTjBZV3hzWDJsdVgzSmhibXNBYVc1emRHRnNiRjlwYmw5eVlXNXJM''@;'; put 'put ''Q0JzYVc1bElDVmtPaUJPUkY5dmNtUmxjaWdsY3lrZ1d5VmtYU0ErSUVkRVgzSmhibXNvVW05dmRDbGJKV1JkTG1GdUlGc2xaRjBLQUdsdWMzUmhiR3hmYVc1ZmNtRnVheXdnYkdsdVpTQWxaRG9nY21GdWF5QWxaQ0J1YjNRZ2FXNGdjbUZ1YXlCeVlXNW5aU0JiSldRc0pXUmRDZ0JwYm5OMFlX''@;'; put 'put ''eHNYMmx1WDNKaGJtc3NJR3hwYm1VZ0pXUTZJRWRFWDNKaGJtc29aeWxiSldSZExuWWdLeUJPUkY5dmNtUmxjaWdsY3lrZ1d5VmtYU0ErSUVkRVgzSmhibXNvWnlsYkpXUmRMbUYySUNzZ1IwUmZjbUZ1YXloU2IyOTBLVnNsWkYwdVlXNGdXeVZrWFFvQVgyNWxkMTl5WVc1ckFHMWpiR2x0YVhR''@;'; put 'put ''QWNtRnVheWhuTENBeUxDQnVjMmwwWlhJeUtHY3BLU0E5UFNBd0FIQnZjMmwwYVc5dUxtTUFaRzkwWDNCdmMybDBhVzl1QUVGU1BTVXdMalJzWmdrZ1FYSmxZVDBnSlRBdU5HeG1DUUJFZFcxdGVUMGxaQW9BUjI5cGJtY2dkRzhnWVhCd2JIa2dZVzV2ZEdobGNpQmxlSEJoYm5OcGIyNHVDZ0J1''@;'; put 'put ''WlhoMEkybDBaWEk5SldRS0FHaHdBR052Ym01bFkzUkhjbUZ3YUFCRlpHZGxJR3hsYm1kMGFDQWxaaUJzWVhKblpYSWdkR2hoYmlCdFlYaHBiWFZ0SUNWMUlHRnNiRzkzWldRdUNrTm9aV05ySUdadmNpQnZkbVZ5ZDJsa1pTQnViMlJsS0hNcExnb0Fibk5zYVcxcGRBQmpiMjUwWVdsdVgyNXZa''@;'; put 'put ''R1Z6SUdOc2RYTjBJQ1Z6SUhKaGJtc2dKV1FnYldsemMybHVaeUJ1YjJSbENnQnVjMnhwYldsME1RQnVaWGR5WVc1ckFFMWhlSEpoYm1zZ1BTQWxaQ3dnYldsdWNtRnVheUE5SUNWa0NnQnNaV0ZrWlhJZ0lUMGdUbFZNVEFCeVlXNXJMbU1BWTJ4MWMzUmxjbDlzWldGa1pYSUFLRTVFWDFWR1gz''@;'; put 'put ''TnBlbVVvYmlrZ1BEMGdNU2tnZkh3Z0tHNGdQVDBnYkdWaFpHVnlLUUJoWjJobFlXUW9aU2tnUFQwZ1ZVWmZabWx1WkNoaFoyaGxZV1FvWlNrcEFHMXBibTFoZUY5bFpHZGxjd0JoWjNSaGFXd29aU2tnUFQwZ1ZVWmZabWx1WkNoaFozUmhhV3dvWlNrcEFISmhibXNBYzJGdFpRQnRhVzRBYzI5''@;'; put 'put ''MWNtTmxBRzFoZUFCemFXNXJBR3hsZG1Wc0lHRnpjMmxuYm0xbGJuUWdZMjl1YzNSeVlXbHVkSE1BYkdWMlpXd2daM0poY0dnZ2NtVmpBSDl5YjI5MEFIOTBiM0FBZjJKdmRBQmpiMjF3WVdOMEFGOTNaV0ZyWHlWa0FISmhibXRwYm1jNklHWmhhV3gxY21VZ2RHOGdZM0psWVhSbElITjBjbTl1''@;'; put 'put ''WnlCamIyNXpkSEpoYVc1MElHVmtaMlVnWW1WMGQyVmxiaUJ1YjJSbGN5QWxjeUJoYm1RZ0pYTUtBQ1Z6SUdoaGN5QjFibkpsWTI5bmJtbDZaV1FnY21GdWF6MGxjd0JzWlhabGJDQmxaR2RsSUhKbFl3QnNaWFpsYkNCdWIyUmxJSEpsWXdCellXMWxhR1ZoWkFCellXMWxkR0ZwYkFCMGIyOGdi''@;'; put 'put ''V0Z1ZVNBb1BpQWxaQ2tnYzJGdFpYdG9aV0ZrTEhSaGFXeDlJR2R5YjNWd2N5Qm1iM0lnYm05a1pTQWxjd29BWTI5dFltbEJVaUE5SUNWc1pnb0FKV3htTENWa0FIUm9aU0JoYzNCbFkzUWdZWFIwY21saWRYUmxJR2hoY3lCaVpXVnVJR1JwYzJGaWJHVmtJR1IxWlNCMGJ5QnBiWEJzWlcxbGJu''@;'; put 'put ''UmhkR2x2YmlCbWJHRjNjeUF0SUdGMGRISnBZblYwWlNCcFoyNXZjbVZrTGdvQVJVUmZkRzlmZG1seWRDaGxLU0E5UFNCT1ZVeE1BR05zWVhOek1pNWpBRzFsY21kbFgyTm9ZV2x1QUVWRVgzUnZYM1pwY25Rb2IzSnBaeWtnUFQwZ1RsVk1UQUJ0WVd0bFgyTm9ZV2x1QUVWRVgzUnZYM1pwY25R''@;'; put 'put ''b2IzSnBaeWtnSVQwZ1RsVk1UQUJPUkY5eVlXNXJLR1p5YjIwcElEd2dUa1JmY21GdWF5aDBieWtBWTJ4MWMzUmxjaTVqQUcxaGNGOXdZWFJvQUNWeklIZGhjeUJoYkhKbFlXUjVJR2x1SUdFZ2NtRnVhM05sZEN3Z1pHVnNaWFJsWkNCbWNtOXRJR05zZFhOMFpYSWdKWE1LQUd4b1pXRmtBR3gw''@;'; put 'put ''WVdsc0FDVnpJQzArSUNWek9pQnpjR3hwYm1VZ2MybDZaU0ErSURFZ2JtOTBJSE4xY0hCdmNuUmxaQW9BSlhNZ0xUNGdKWE02SUdobFlXUWdibTkwSUdsdWMybGtaU0JvWldGa0lHTnNkWE4wWlhJZ0pYTUtBQ1Z6SUMwK0lDVnpPaUIwWVdsc0lHbHpJR2x1YzJsa1pTQm9aV0ZrSUdOc2RYTjBa''@;'; put 'put ''WElnSlhNS0FHSmxlaTArYzJac1lXY0FZMjl0Y0c5MWJtUXVZd0J0WVd0bFEyOXRjRzkxYm1SRlpHZGxBR0psZWkwK1pXWnNZV2NBSlhNZ0xUNGdKWE02SUhSaGFXd2dibTkwSUdsdWMybGtaU0IwWVdsc0lHTnNkWE4wWlhJZ0pYTUtBQ1Z6SUMwK0lDVnpPaUJvWldGa0lHbHpJR2x1YzJsa1pT''@;'; put 'put ''QjBZV2xzSUdOc2RYTjBaWElnSlhNS0FITmxaMjFsYm5RZ1d5VnpMQ1Z6WFNCa2IyVnpJRzV2ZENCcGJuUmxjbk5sWTNRZ1ltOTRJR3hzUFNWekxIVnlQU1Z6Q2dCaWIzaEpiblJsY25ObFkzUm1BQ2dsTGpWbkxDVXVOV2NwQUdOc2RYTjBaWElnYm1GdFpXUWdKWE1nYm05MElHWnZkVzVrQ2dC''@;'; put 'put ''amIyNWpaVzUwY21GMFpUMTBjblZsSUcxaGVTQnViM1FnZDI5eWF5QmpiM0p5WldOMGJIa3VDZ0J5WldKMWFXeDBaRjkyYkdsemRITTZJSEpoYm1zZ2JHVmhaQ0FsY3lCdWIzUWdhVzRnYjNKa1pYSWdKV1FnYjJZZ2NtRnVheUFsWkFvQVpHVm5aVzVsY21GMFpTQmpiMjVqWlc1MGNtRjBaV1Fn''@;'; put 'put ''Y21GdWF5QWxjeXdsWkFvQVRrUmZhVzRvY21sbmFIUXBMbk5wZW1VZ0t5Qk9SRjl2ZFhRb2NtbG5hSFFwTG5OcGVtVWdQVDBnTUFCamIyNWpMbU1BYldWeVoyVjJhWEowZFdGc0FHUnZkRG9nVDNWMElHOW1JRzFsYlc5eWVRb0FUa1JmYjNWMEtIWXBMbk5wZW1VZ1BUMGdNZ0JtYkdGMExtTUFj''@;'; put 'put ''MlYwWW05MWJtUnpBRWRFWDIxcGJuSmhibXNvWnlrZ1BUMGdNQUJoWW05dGFXNWhkR2x2YmdCdVpXRjBiMTlzWVhsdmRYUUFibVZoZEc4QVptUndBSE5tWkhBQWRIZHZjR2tBWTJseVkyOEFjR0YwWTJoM2IzSnJBRzl6WVdkbEFHNXZjQUJ1YjNBeEFHNXZjRElBSld4bUxDVnNaaXdsYkdZbFl3''@;'; put 'put ''QnViMlJsSUNWekxDQndiM05wZEdsdmJpQWxjeXdnWlhod1pXTjBaV1FnZEhkdklHUnZkV0pzWlhNS0FHNXZkSEpoYm5Oc1lYUmxBRzV2WkdVZ0pYTWdhVzRnWjNKaGNHZ2dKWE1nYUdGeklHNXZJSEJ2YzJsMGFXOXVDZ0J6TENWc1ppd2xiR1lsYmdBZ1pTd2xiR1lzSld4bUpXNEFjRzl6SUdG''@;'; put 'put ''MGRISnBZblYwWlNCbWIzSWdaV1JuWlNBb0pYTXNKWE1wSUdSdlpYTnVKM1FnYUdGMlpTQXpiaXN4SUhCdmFXNTBjd29BSld4bUxDVnNaaVZ1QUhONWJuUmhlQ0JsY25KdmNpQnBiaUJ3YjNNZ1lYUjBjbWxpZFhSbElHWnZjaUJsWkdkbElDZ2xjeXdsY3lrS0FDVnNaaXdsYkdZc0pXeG1MQ1Zz''@;'; put 'put ''WmdCemRHRnlkQUJ6Wld4bUFISmhibVJ2YlFCdWIyUmxJSEJ2YzJsMGFXOXVjeUJoY21VZ2FXZHViM0psWkNCMWJteGxjM01nYzNSaGNuUTljbUZ1Wkc5dENnQmhjeUJ5WlhGMWFYSmxaQ0JpZVNCMGFHVWdMVzRnWm14aFp3b0FYMjVsWVhSdlgyTmpBR2R5WVhCb0lDVnpJR2x6SUdScGMyTnZi''@;'; put 'put ''bTVsWTNSbFpDNGdTR1Z1WTJVc0lIUm9aU0JqYVhKamRXbDBJRzF2WkdWc0NnQkJiSFJsY201aGRHbDJaV3g1TENCamIyNXphV1JsY2lCeWRXNXVhVzVuSUc1bFlYUnZJSFZ6YVc1bklDMUhjR0ZqYXoxMGNuVmxJRzl5SUdSbFkyOXRjRzl6YVc1bkNnQjBhR1VnWjNKaGNHZ2dhVzUwYnlCamIy''@;'; put 'put ''NXVaV04wWldRZ1kyOXRjRzl1Wlc1MGN5NEtBRk52YkhacGJtY2diVzlrWld3Z0pXUWdhWFJsY21GMGFXOXVjeUFsWkNCMGIyd2dKV1lLQUU1RVgybGtLRzV3S1NBOVBTQnBBRzVsWVhSdmFXNXBkQzVqQUcxaGEyVkhjbUZ3YUVSaGRHRUFaaUE4SUdkeVlYQm9XMnBkTG01bFpHZGxjd0JrWm5O''@;'; put 'put ''RGVXTnNaUUJ0YjJSbGJDQWxaQ0J6YldGeWRGOXBibWwwSUNWa0lITjBjbVZ6YzNkMElDVmtJR2wwWlhKaGRHbHZibk1nSldRZ2RHOXNJQ1ZtQ2dCamIyNTJaWEowSUdkeVlYQm9PaUFBYldGcWIzSnBlbUYwYVc5dUNnQWxaQ0J1YjJSbGN5QWxMakptSUhObFl3b0FiR1YyWld4eloyRndBR3ho''@;'; put 'put ''ZVc5MWRDQmhZbTl5ZEdWa0NnQnpkSEpsYzNOM2RBQWxjeUJoZEhSeWFXSjFkR1VnZG1Gc2RXVWdiWFZ6ZENCaVpTQXhJRzl5SURJZ0xTQnBaMjV2Y21sdVp3b0FiVzlrWld3QVkybHlZM1ZwZEFCemRXSnpaWFFBYzJodmNuUndZWFJvQUcxa2N3QmxaR2RsY3lCcGJpQm5jbUZ3YUNBbGN5Qm9Z''@;'; put 'put ''WFpsSUc1dklHeGxiaUJoZEhSeWFXSjFkR1V1SUVobGJtTmxMQ0IwYUdVZ2JXUnpJRzF2WkdWc0NnQnBjeUJwYm1Gd2NISnZjSEpwWVhSbExpQlNaWFpsY25ScGJtY2dkRzhnZEdobElITm9iM0owWlhOMElIQmhkR2dnYlc5a1pXd3VDZ0JWYm10dWIzZHVJSFpoYkhWbElDVnpJR1p2Y2lCaGRI''@;'; put 'put ''UnlhV0oxZEdVZ0ltMXZaR1ZzSWlCcGJpQm5jbUZ3YUNBbGN5QXRJR2xuYm05eVpXUUtBRzF2WkdVQVMwc0FiV0ZxYjNJQWFHbGxjZ0JKYkd4bFoyRnNJSFpoYkhWbElDVnpJR1p2Y2lCaGRIUnlhV0oxZEdVZ0ltMXZaR1VpSUdsdUlHZHlZWEJvSUNWeklDMGdhV2R1YjNKbFpBb0FiV0ZyWlZO''@;'; put 'put ''d2JHbHVaVG9nWm1GcGJHVmtJSFJ2SUcxaGEyVWdjM0JzYVc1bElHVmtaMlVnS0NWekxDVnpLUW9BYzNCc2FXNWxJQ1Z6SUNWekNnQmlJRDA5SUc0QWJtVmhkRzl6Y0d4cGJtVnpMbU1BYldGclpWOWlZWEp5YVdWeWN3QjBhR1VnWW05MWJtUnBibWNnWW05NFpYTWdiMllnYzI5dFpTQnViMlJs''@;'; put 'put ''Y3lCMGIzVmphQ0F0SUdaaGJHeHBibWNnWW1GamF5QjBieUJ6ZEhKaGFXZG9kQ0JzYVc1bElHVmtaMlZ6Q2dCemIyMWxJRzV2WkdWeklIZHBkR2dnYldGeVoybHVJQ2dsTGpBeVppd2xMakF5WmlrZ2RHOTFZMmdnTFNCbVlXeHNhVzVuSUdKaFkyc2dkRzhnYzNSeVlXbG5hSFFnYkdsdVpTQmxa''@;'; put 'put ''R2RsY3dvQWNHOXNlV3hwYm1WekFHeHBibVVnYzJWbmJXVnVkSE1BYjNKMGFHOW5iMjVoYkNCc2FXNWxjd0JEY21WaGRHbHVaeUJsWkdkbGN5QjFjMmx1WnlBbGN3b0FjRzlzZVd4cGJtVWdKWE1nSlhNS0FHMWtjMDF2WkdWc09pQmtaV3gwWVNBOUlDVm1DZ0JUWlhSMGFXNW5JSFZ3SUhOMGNt''@;'; put 'put ''VnpjeUJtZFc1amRHbHZiZ0JUYjJ4MmFXNW5JRzF2WkdWc09pQUFDbVpwYm1Gc0lHVWdQU0FsWmlBbFpDQnBkR1Z5WVhScGIyNXpJQ1V1TW1ZZ2MyVmpDZ0JFWVcxd2FXNW5BR1JsWm1GMWJIUmthWE4wQUNCcGJpQWxjeUF0SUhObGRIUnBibWNnZEc4Z0pTNHdNbVlLQUdKaFpDQmxaR2RsSUd4''@;'; put 'put ''bGJpQWlKWE1pQUZObGRIUnBibWNnYVc1cGRHbGhiQ0J3YjNOcGRHbHZibk1LQUhOMFlYSjBQU1Z6SUc1dmRDQnpkWEJ3YjNKMFpXUWdkMmwwYUNCdGIyUmxQWE5sYkdZZ0xTQnBaMjV2Y21Wa0NnQlRaWFIwYVc1bklIVndJSE53Y21sdVp5QnRiMlJsYkRvZ0FDVXVNbVlnYzJWakNnQUtabWx1''@;'; put 'put ''WVd3Z1pTQTlJQ1ZtQUNFQUlDVmtKWE1nYVhSbGNtRjBhVzl1Y3lBbExqSm1JSE5sWXdvQVRXRjRMaUJwZEdWeVlYUnBiMjV6SUNnbFpDa2djbVZoWTJobFpDQnZiaUJuY21Gd2FDQWxjd29BSlhNZ0pTNHpaZ29BSlM0elppQUFUa1JmYUdWaGNHbHVaR1Y0S0hZcElEd2dNQUJ6ZEhWbVppNWpB''@;'; put 'put ''RzVsWVhSdlgyVnVjWFZsZFdVQVEyRnNZM1ZzWVhScGJtY2djMmh2Y25SbGMzUWdjR0YwYUhNNklBQnpjR1ZqYVdacFpXUWdjbTl2ZENCdWIyUmxJQ0lsY3lJZ2QyRnpJRzV2ZENCbWIzVnVaQzRBVlhOcGJtY2daR1ZtWVhWc2RDQmpZV3hqZFd4aGRHbHZiaUJtYjNJZ2NtOXZkQ0J1YjJSbENn''@;'; put 'put ''QnlaWEJ2YzJsMGFXOXVJQ1Z6Q2dBbGN5QTZJQ1ZtSUNWbUNnQWxjeUE2SUNWbUlDVm1JQ1ZtSUNWbUNnQWdJQUJIY21Gd2FDQWxjeUJvWVhNZ1lYSnlZWGtnY0dGamEybHVaeUIzYVhSb0lIVnpaWElnZG1Gc2RXVnpJR0oxZENCdWJ5QWljMjl5ZEhZaUlHRjBkSEpwWW5WMFpYTWdZWEpsSUdS''@;'; put 'put ''bFptbHVaV1F1QUhCcGJnQlhZWEp1YVc1bk9pQnViMlJsSUNWekxDQndiM05wZEdsdmJpQWxjeXdnWlhod1pXTjBaV1FnZEhkdklHWnNiMkYwY3dvQVkyOXZjbVJ6QUd4aGVXOTFkQ0FsY3dvQVpXNWtJQ1Z6Q2dCcFpIZ2dQVDBnYzNvQWJHRjViM1YwTG1NQVpYaHdZVzVrUTJ4MWMzUmxjZ0Jw''@;'; put 'put ''SUQwOUlHUmxad0JuWlhSRlpHZGxUR2x6ZEFCZlpHZGZKV1FBWkdWeWFYWmxJR2R5WVhCb0lDVnpJRzltSUNWekNnQnViMlJsSUNJbGN5SWdhWE1nWTI5dWRHRnBibVZrSUdsdUlIUjNieUJ1YjI0dFkyOXRjR0Z5WVdKc1pTQmpiSFZ6ZEdWeWN5QWlKWE1pSUdGdVpDQWlKWE1pQ2dCZmNHOXlk''@;'; put 'put ''RjhsYzE4bGMxOGxjMThsYkdRQVgzQnZjblJmSlhOZktDVmtLVjhvSldRcFh5VnNaQUFsYkdZc0pXeG1MQ1ZzWml3bGJHWWxZd0JuY21Gd2FDQWxjeXdnWTI5dmNtUWdKWE1zSUdWNGNHVmpkR1ZrSUdadmRYSWdaRzkxWW14bGN3b0FjM0JzYVc1bGN5QmhibVFnWTJ4MWMzUmxjaUJsWkdkbGN5''@;'; put 'put ''QnViM1FnYzNWd2NHOXlkR1ZrSUMwZ2RYTnBibWNnYkdsdVpTQnpaV2R0Wlc1MGN3b0FiV0Y0YVhSbGNnQlVNQUJtWkhBZ1pHOWxjeUJ1YjNRZ2MzVndjRzl5ZENCemRHRnlkRDF6Wld4bUlDMGdhV2R1YjNKcGJtY0tBSGhNWVhsdmRYUWdBRGs2Y0hKcGMyMEFkSEpwWlhNZ1BTQWxaQ3dnYlc5''@;'; put 'put ''a1pTQTlJQ1Z6Q2dCa1pYSnBkbVZrQUdsdVptOEFjMlprY0NCdmJteDVJSE4xY0hCdmNuUnpJSE4wWVhKMFBYSmhibVJ2YlFvQVN3QnlaWEIxYkhOcGRtVm1iM0pqWlFCc1pYWmxiSE1BYzIxdmIzUm9hVzVuQUhGMVlXUjBjbVZsQUdKbFlYVjBhV1o1QUc5MlpYSnNZWEJmYzJoeWFXNXJBSEp2''@;'; put 'put ''ZEdGMGFXOXVBR3hoWW1Wc1gzTmphR1Z0WlFCc1lXSmxiRjl6WTJobGJXVWdQU0FsWkNBK0lEUWdPaUJwWjI1dmNtbHVad29BWm1GemRBQmhkbWRmWkdsemRBQm5jbUZ3YUY5a2FYTjBBSEJ2ZDJWeVgyUnBjM1FBYzNCeWFXNW5BR1JwYldWdUFHUnBiUUJ6Y0hKcGJtZGZaV3hsWTNSeWFXTmhi''@;'; put 'put ''RjlqYjI1MGNtOXNPZ29BSUNCeVpYQjFiSE5wZG1VZ1lXNWtJR0YwZEhKaFkzUnBkbVVnWlhod2IyNWxiblJ6T2lBbExqQXpaaUFsTGpBelpnb0FJQ0J5WVc1a2IyMGdjM1JoY25RZ0pXUWdjMlZsWkNBbFpBb0FJQ0JMSURvZ0pTNHdNMllnUXlBNklDVXVNRE5tQ2dBZ0lHMWhlQ0JzWlhabGJI''@;'; put 'put ''TWdKV1FnWTI5aGNuTmxibDl6WTJobGJXVWdKV1FnWTI5aGNuTmxibDl1YjJSbElDVmtDZ0FnSUhGMVlXUjBjbVZsSUhOcGVtVWdKV1FnYldGNFgyeGxkbVZzSUNWa0NnQWdJRUpoY201bGN5MUlkWFIwSUdOdmJuTjBZVzUwSUNVdU1ETm1JSFJ2YkdWeVlXNWpaU0FnSlM0d00yWWdiV0Y0YVhS''@;'; put 'put ''bGNpQWxaQW9BSUNCamIyOXNhVzVuSUNVdU1ETm1JSE4wWlhBZ2MybDZaU0FnSlM0d00yWWdZV1JoY0hScGRtVWdKV1FLQUNBZ1ltVmhkWFJwWm5sZmJHVmhkbVZ6SUNWa0lHNXZaR1VnZDJWcFoyaDBjeUFsWkNCeWIzUmhkR2x2YmlBbExqQXpaZ29BSUNCemJXOXZkR2hwYm1jZ0pYTWdiM1ps''@;'; put 'put ''Y214aGNDQWxaQ0JwYm1sMGFXRnNYM05qWVd4cGJtY2dKUzR3TTJZZ1pHOWZjMmh5YVc1cmFXNW5JQ1ZrQ2dBZ0lHOWpkSEpsWlNCelkyaGxiV1VnSlhNZ2JXVjBhRzlrSUNWekNnQWdJR1ZrWjJWZmJHRmlaV3hwYm1kZmMyTm9aVzFsSUNWa0NnQlRVRkpKVGtkZlJVeEZRMVJTU1VOQlRBQlRV''@;'; put 'put ''RkpKVGtkZlRVRllSVTVVQUZOVVVrVlRVMTlOUVZoRlRsUUFVMVJTUlZOVFgwRlFVRkpQV0FCVFZGSkZVMU1BVlU1SlJrOVNUVjlUVkZKRlUxTUFSbFZNVEY5VFZGSkZVMU1BVGs5T1JRQk9UMUpOUVV3QVJrRlRWQUJJV1VKU1NVUUFVMVJTUlZOVFgwMUJTazlTU1ZwQlZFbFBUbDlIVWtGUVNG''@;'; put 'put ''OUVTVk5VQUZOVVVrVlRVMTlOUVVwUFVrbGFRVlJKVDA1ZlFWWkhYMFJKVTFRQVUxUlNSVk5UWDAxQlNrOVNTVnBCVkVsUFRsOVFUMWRGVWw5RVNWTlVBRk5RVWtsT1J3QlVVa2xCVGtkTVJRQlNUa2NBRFNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwZEdWeUlEMGdKV1FzSUhOMFpYQWdQU0FsWmlC''@;'; put 'put ''R2JtOXliU0E5SUNWbUlHNTZJRDBnSldRZ0lFc2dQU0FsWmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FBYzNCeWFXNW5YMlZzWldOMGNtbGpZV3hmWlcxaVpXUmthVzVuWDNOc2IzY0FaRzFsWVc0Z1BTQWxaaXdnY21odklEMGdKV1lLQUhObGJtUWdjbUZ1''@;'; put 'put ''Wkc5dElHTnZiM0prYVc1aGRHVnpDZ0J6WTJGc2FXNW5JR1poWTNSdmNpQTlJQ1ZtQ2dCUlZVRkVYMVJTUlVWZlNGbENVa2xFTENCemFYcGxJR3hoY21kbGNpQjBhR0Z1SUNWa0xDQnpkMmwwWTJnZ2RHOGdabUZ6ZENCeGRXRmtkSEpsWlFCamRISnNMVDV2ZG1WeWJHRndQU1ZrQ2dBbFpDQWxa''@;'; put 'put ''QW9BZFc1cFptOXliVjl6ZEhKbGMzTXVZd0JWYm1sbWIzSnRVM1J5WlhOelUyMXZiM1JvWlhKZmJtVjNBRk53WVhKelpVMWhkSEpwZUY5cGMxOXplVzF0WlhSeWFXTW9RaXdnUmtGTVUwVXBBSFZ1YVdadmNtMWZjM1J5WlhOekFIeGxaR2RsYkdGaVpXeDhBR3hsYmdCdWIzSnRZV3hwZW1VQWIz''@;'; put 'put ''WmxjbXhoY0FCUGRtVnliR0Z3SUhaaGJIVmxJQ0lsY3lJZ2RXNXpkWEJ3YjNKMFpXUWdMU0JwWjI1dmNtVmtDZ0JWYm5KbFkyOW5ibWw2WldRZ2IzWmxjbXhoY0NCMllXeDFaU0FpSlhNaUlDMGdkWE5wYm1jZ1ptRnNjMlVLQUZadmNtOXViMmtBYjNabGNteGhjRG9nSlhNZ2RtRnNkV1VnSldR''@;'; put 'put ''Z2MyTmhiR2x1WnlBbExqQTBaZ29BYjNabGNteGhjRjl6WTJGc2FXNW5BSFp2Y205dWIya0FjMk5oYkdsdVp3QjJjSE5qQUdsd2MyVndBRzl6WTJGc1pRQnZiR1FnYzJOaGJHbHVad0J6WTJGc1pYaDVBSGdnWVc1a0lIa2djMk5oYkdsdVp3QnZjblJvYndCdmNuUm9iMmR2Ym1Gc0lHTnZibk4w''@;'; put 'put ''Y21GcGJuUnpBRzl5ZEdodlgzbDRBRzl5ZEdodmVIa0FlSGtnYjNKMGFHOW5iMjVoYkNCamIyNXpkSEpoYVc1MGN3QnZjblJvYjNsNEFIbDRJRzl5ZEdodloyOXVZV3dnWTI5dWMzUnlZV2x1ZEhNQWNHOXlkR2h2QUhCelpYVmtieTF2Y25Sb2IyZHZibUZzSUdOdmJuTjBjbUZwYm5SekFIQnZj''@;'; put 'put ''blJvYjE5NWVBQndiM0owYUc5NGVRQjRlU0J3YzJWMVpHOHRiM0owYUc5bmIyNWhiQ0JqYjI1emRISmhhVzUwY3dCd2IzSjBhRzk1ZUFCNWVDQndjMlYxWkc4dGIzSjBhRzluYjI1aGJDQmpiMjV6ZEhKaGFXNTBjd0J3Y21semJRQkJaR3AxYzNScGJtY2dKWE1nZFhOcGJtY2dKWE1LQUZWdWFH''@;'; put 'put ''RnVaR3hsWkNCaFpHcDFjM1FnYjNCMGFXOXVJQ1Z6Q2dCT2RXMWlaWElnYjJZZ2FYUmxjbUYwYVc5dWN5QTlJQ1ZrQ2dCT2RXMWlaWElnYjJZZ2FXNWpjbVZoYzJWeklEMGdKV1FLQUc5MlpYSnNZWEFnV3lWa1hTQTZJQ1ZrQ2dCMmIzSnZYMjFoY21kcGJnQnpaWEFBWlhObGNBQk9iMlJsSUhO''@;'; put 'put ''bGNHRnlZWFJwYjI0NklHRmtaRDBsWkNBb0pXWXNKV1lwQ2dBbFppd2xaZ0J6WTJGc1pTQTlJQ2dsTGpBelppd2xMakF6WmlrS0FFVmtaMlVnYzJWd1lYSmhkR2x2YmpvZ1lXUmtQU1ZrSUNnbFppd2xaaWtLQUVOaGJHTjFiR0YwYVc1bklHTnBjbU4xYVhRZ2JXOWtaV3dBWTI5dWFuVm5ZWFJs''@;'; put 'put ''WDJkeVlXUnBaVzUwT2lCMWJtVjRjR1ZqZEdWa0lHeGxibWQwYUNBd0lIWmxZM1J2Y2dvQVEyRnNZM1ZzWVhScGJtY2djM1ZpYzJWMElHMXZaR1ZzQUdkeVlYQm9JR2x6SUdScGMyTnZibTVsWTNSbFpDNGdTR1Z1WTJVc0lIUm9aU0JqYVhKamRXbDBJRzF2WkdWc0NnQnBjeUIxYm1SbFptbHVa''@;'; put 'put ''V1F1SUZKbGRtVnlkR2x1WnlCMGJ5QjBhR1VnYzJodmNuUmxjM1FnY0dGMGFDQnRiMlJsYkM0S0FFTmhiR04xYkdGMGFXNW5JRTFFVXlCdGIyUmxiQUJEWVd4amRXeGhkR2x1WnlCemFHOXlkR1Z6ZENCd1lYUm9jd0E2SUNVdU1tWWdjMlZqQ2dCVFpYUjBhVzVuSUdsdWFYUnBZV3dnY0c5emFY''@;'; put 'put ''UnBiMjV6QURvZ0pTNHlaaUJ6WldNQVkyY0FaR1ZzZEdFZ1BEMGdNSGhHUmtaR0FHTnZibk4wY21GcGJuUXVZd0J0YTA1RGIyNXpkSEpoYVc1MFJ3QjJad0JqYjIxd2NtVnpjeUFsWnlBS0FITmpZV3hsSUdKNUlDVm5MQ1ZuSUFvQVltVnpkR052YzNRZ1BDQklWVWRGWDFaQlRBQmpiMjF3ZFhS''@;'; put 'put ''bFUyTmhiR1ZZV1FCSGNtRndhSFpwZWlCaWRXbHNkQ0IzYVhSb2IzVjBJR0Z1ZVNCMGNtbGhibWQxYkdGMGFXOXVJR3hwWW5KaGNua0tBR1JsYkdGMWJtRjVYM1J5YVdGdVozVnNZWFJwYjI0NklDVnpDZ0JrWld4aGRXNWhlVjkwY21rNklDVnpDZ0IwY25scGJtY2dkRzhnWkdWc1pYUmxJR0Vn''@;'; put 'put ''Ym05dUxXeHBibVVLQUFwcGJuUmxjbk5sWTNScGIyNGdZWFFnSlM0elppQWxMak5tQ2dCelpXY2pKV1FnT2lBb0pTNHpaaXdnSlM0elppa2dLQ1V1TTJZc0lDVXVNMllwQ2dCeVpXMXZkbVZmYjNabGNteGhjRG9nUjNKaGNHaDJhWG9nYm05MElHSjFhV3gwSUhkcGRHZ2dkSEpwWVc1bmRXeGhk''@;'; put 'put ''R2x2YmlCc2FXSnlZWEo1Q2dCdFlXdGxRV1JrVUc5c2VUb2dkVzVyYm05M2JpQnphR0Z3WlNCMGVYQmxJQ1Z6Q2dCdFlXdGxVRzlzZVRvZ2RXNXJibTkzYmlCemFHRndaU0IwZVhCbElDVnpDZ0I0SVQxT1ZVeE1BSE50WVhKMFgybHVhVjk0TG1NQVNVMUVVMTluYVhabGJsOWthVzBBYVd4c0xX''@;'; put 'put ''TnZibVJwZEdsdmJtVmtBSEp2YjNRZ1BTQWxjeUJ0WVhnZ2MzUmxjSE1nZEc4Z2NtOXZkQ0E5SUNWa0NnQjBkMjl3YVRvZ2RYTmxJRzltSUhkbGFXZG9kRDB3SUdOeVpXRjBaWE1nWkdselkyOXVibVZqZEdWa0lHTnZiWEJ2Ym1WdWRDNEtBRkpoYm1zZ2MyVndZWEpoZEdsdmJpQTlJQUFsTGpB''@;'; put 'put ''emJHWWdBR0Z5WldFQWFXNXpaWFFBSlhNZ1kyOXZjbVFnSlM0MVp5QWxMalZuSUdoMElDVm1JSGRwWkhSb0lDVm1DZ0FsTGpBelpnQnlaV01nSldZZ0pXWWdKV1lnSldZS0FDVm1JQzBnSldZZ0pXWWdKV1lnSldZZ1BTQWxaaUFvSldZZ0pXWWdKV1lnSldZcENnQjBjbmxwYm1jZ2RHOGdZV1Jr''@;'; put 'put ''SUhSdklISmxZM1FnZXlWbUlDc3ZMU0FsWml3Z0pXWWdLeTh0SUNWbWZRb0FkRzkwWVd3Z1lXUmtaV1FnYzI4Z1ptRnlJRDBnSldRS0FHRmtaR2x1WnlBbFpDQnBkR1Z0Y3l3Z2RHOTBZV3dnWVhKbFlTQTlJQ1ZtTENCM0lEMGdKV1lzSUdGeVpXRXZkejBsWmdvQVkyOXRjRzkxYm1SRlpHZGxj''@;'; put 'put ''em9nWTI5MWJHUWdibTkwSUdOdmJuTjBjblZqZENCdlluTjBZV05zWlhNZ0xTQm1ZV3hzYVc1bklHSmhZMnNnZEc4Z2MzUnlZV2xuYUhRZ2JHbHVaU0JsWkdkbGN3b0FZMjl0Y0c5MWJtUkZaR2RsY3pvZ2JtOWtaWE1nZEc5MVkyZ2dMU0JtWVd4c2FXNW5JR0poWTJzZ2RHOGdjM1J5WVdsbmFI''@;'; put 'put ''UWdiR2x1WlNCbFpHZGxjd29BY0dGamF5QjJZV3gxWlNBbFpDQnBjeUJ6YldGc2JHVnlJSFJvWVc0Z1pYTmxjQ0FvSlM0d00yWXNKUzR3TTJZcENnQnpaWEFnZG1Gc2RXVWdLQ1V1TURObUxDVXVNRE5tS1NCcGN5QnpiV0ZzYkdWeUlIUm9ZVzRnWlhObGNDQW9KUzR3TTJZc0pTNHdNMllwQ2dC''@;'; put 'put ''all5VnpYeVZrQUdOakpYTXJKV1FBWTE5amJuUWdQVDBnTUFCamIyMXdMbU1BWm1sdVpFTkRiMjF3QUdkeWFXUW9KV1FzSldRcE9pQWxjd29BZDJkMElENGdNQUJSZFdGa1ZISmxaUzVqQUZGMVlXUlVjbVZsWDNKbGNIVnNjMmwyWlY5bWIzSmpaVjloWTJOMWJYVnNZWFJsQUhGME1pMCtiaUEr''@;'; put 'put ''SURBQWNYUXhMVDV1SUQ0Z01DQW1KaUJ4ZERJdFBtNGdQaUF3QUZGMVlXUlVjbVZsWDNKbGNIVnNjMmwyWlY5bWIzSmpaVjlwYm5SbGNtRmpkQUJrYVhOMElENGdNQUFoS0hFdFBtd3BBRkYxWVdSVWNtVmxYMkZrWkY5cGJuUmxjbTVoYkFCcGFTQThJREU4UEdScGJTQW1KaUJwYVNBK1BTQXdB''@;'; put 'put ''SEV0UG5GMGMxdHBhVjBBY1MwK2JpQTlQU0F4QUNFb2NTMCtjWFJ6S1FCeExUNXNBSGRwWkhSb0lENGdNQUJSZFdGa1ZISmxaVjl1WlhjQVFTMCtabTl5YldGMElEMDlJRVpQVWsxQlZGOURVMUlBVTNCaGNuTmxUV0YwY21sNExtTUFVM0JoY25ObFRXRjBjbWw0WDNSeVlXNXpjRzl6WlFCQklD''@;'; put 'put ''WW1JRUlBVTNCaGNuTmxUV0YwY21sNFgyRmtaQUJCTFQ1bWIzSnRZWFFnUFQwZ1FpMCtabTl5YldGMElDWW1JRUV0UG1admNtMWhkQ0E5UFNCR1QxSk5RVlJmUTFOU0FFRXRQblI1Y0dVZ1BUMGdRaTArZEhsd1pRQlRjR0Z5YzJWTllYUnlhWGhmYVhOZmMzbHRiV1YwY21sakFFRXRQbVp2Y20x''@;'; put 'put ''aGRDQTlQU0JHVDFKTlFWUmZRMDlQVWtRQVUzQmhjbk5sVFdGMGNtbDRYMlp5YjIxZlkyOXZjbVJwYm1GMFpWOW1iM0p0WVhRQWJTQStJREFnSmlZZ2JpQStJREFnSmlZZ2Jub2dQajBnTUFCVGNHRnljMlZOWVhSeWFYaGZabkp2YlY5amIyOXlaR2x1WVhSbFgyRnljbUY1YzE5cGJuUmxjbTVo''@;'; put 'put ''YkFCQkFHcGhXMjFoYzJ0YmFtRmJhbDFkWFNBOVBTQnFZVnRxWFFCVGNHRnljMlZOWVhSeWFYaGZjM1Z0WDNKbGNHVmhkRjlsYm5SeWFXVnpBR2xrSUR3Z2Jpb29lVzFoZUMxNWJXbHVLekVwQUdwaFcyMWhjMnRiYVdSZFhTQTlQU0JxWVZ0cVhRQlRjR0Z5YzJWTllYUnlhWGhmYlhWc2RHbHdi''@;'; put 'put ''SGxmWkdWdWMyVXlBRUV0UG5SNWNHVWdQVDBnVFVGVVVrbFlYMVJaVUVWZlVrVkJUQUJUY0dGeWMyVk5ZWFJ5YVhoZmJYVnNkR2x3YkhsZmRtVmpkRzl5QUVFdFBuUjVjR1VnUFQwZ1RVRlVVa2xZWDFSWlVFVmZVa1ZCVENCOGZDQkJMVDUwZVhCbElEMDlJRTFCVkZKSldGOVVXVkJGWDBsT1ZF''@;'; put 'put ''VkhSVklBVTNCaGNuTmxUV0YwY21sNFgyMTFiSFJwY0d4NVgyUmxibk5sTVFCVGNHRnljMlZOWVhSeWFYaGZiWFZzZEdsd2JIa0FhbU5iYldGemExdHFZbHRyWFYxZElEMDlJR3BpVzJ0ZEFGTndZWEp6WlUxaGRISnBlRjl0ZFd4MGFYQnNlVE1BYW1SYmJXRnphMXRxWTF0clhWMWRJRDA5SUdw''@;'; put 'put ''alcydGRBRk53WVhKelpVMWhkSEpwZUY5amIyOXlaR2x1WVhSbFgyWnZjbTFmWVdSa1gyVnVkSEpwWlhNQVUzQmhjbk5sVFdGMGNtbDRYMlJwZG1sa1pWOXliM2RmWW5sZlpHVm5jbVZsQUc0Z1BpQXhBR2RsYm1WeVlXd3VZd0JwY21GdVpBQnZibVZpYkc5amF3QnRhVzVrYVhOMEFHRnlkR2xq''@;'; put 'put ''ZFd4aGRHbHZibDl3YjNNQWNtOXZkQUJRY21sdmNtbDBlVkYxWlhWbExtTUFVSEpwYjNKcGRIbFJkV1YxWlY5d2RYTm9BR2RoYVc0Z1BEMGdjUzArYm1kaGFXNEFVM0JoY25ObFRXRjBjbWw0WDJselgzTjViVzFsZEhKcFl5aEJMQ0JHUVV4VFJTa0FjRzl6ZEY5d2NtOWpaWE56TG1NQWFXUmxZ''@;'; put 'put ''V3hmWkdsemRHRnVZMlZmYldGMGNtbDRBR3hsYmlBK0lEQUFVM1J5WlhOelRXRnFiM0pwZW1GMGFXOXVVMjF2YjNSb1pYSXlYMjVsZHdCdWVpQStJREFBYVdSbFlXeGZaR2x6ZEY5elkyaGxiV1VnZG1Gc2RXVWdkM0p2Ym1jQVUzQmhjbk5sVFdGMGNtbDRYMmx6WDNONWJXMWxkSEpwWXloQkxD''@;'; put 'put ''QkdRVXhUUlNrZ0ppWWdRUzArZEhsd1pTQTlQU0JOUVZSU1NWaGZWRmxRUlY5U1JVRk1BRk53WVhKelpWTjBjbVZ6YzAxaGFtOXlhWHBoZEdsdmJsTnRiMjkwYUdWeVgyNWxkd0JwWkdsaFp5QStQU0F3QUZOMGNtVnpjMDFoYW05eWFYcGhkR2x2YmxOdGIyOTBhR1Z5WDNOdGIyOTBhQUFvSVdw''@;'; put 'put ''amJpa2dKaVlnS0NGMllXd3BBR2RsZEY5bFpHZGxYMnhoWW1Wc1gyMWhkSEpwZUFCVWNtbGhibWRzWlZOdGIyOTBhR1Z5WDI1bGR3QnFaR2xoWnlBK1BTQXdBRk53Y21sdVoxTnRiMjkwYUdWeVgyNWxkd0FoWm14aFp3QlRjSEpwYm1kVGJXOXZkR2hsY2w5emJXOXZkR2dBYm1WcFoyaGlQU1Zr''@;'; put 'put ''Q2dCeWIyOTBJRDBnSlhNS0FGOWliRzlqYTE4bFpBQnpMVDV6ZWlBK0lEQUFZbXh2WTJ0MGNtVmxMbU1BY0c5d0FHRmpkSFZoYkFCdWIyUmxiR2x6ZEM1akFHbHVjMlZ5ZEU1dlpHVnNhWE4wQUY5emNHRnVYeVZrQUY5amJHOXVaVjhsWkFCcGNBQmtaV2RzYVhOMExtTUFjbVZ0YjNabFJHVm5i''@;'; put 'put ''R2x6ZEFCRmNuSnZjZ0JYWVhKdWFXNW5BQ1Z6T2lBQWRYTmxjbTkxZERvZ1kyOTFiR1FnYm05MElHRnNiRzlqWVhSbElHMWxiVzl5ZVFvQVgwRkhYM04wY21SaGRHRUFYMEZIWDJSaGRHRmthV04wQUdGblpHbGpkRzltT2lCMWJtdHViM2R1SUd0cGJtUWdKV1FLQUNWakpXeGtBRzFsYlc5eWVT''@;'; put 'put ''QmhiR3h2WTJGMGFXOXVJR1poYVd4MWNtVUFZV2RrWld4bGRHVWdiMjRnZDNKdmJtY2daM0poY0dnQVgwRkhYM0JsYm1ScGJtY0FZV2R5WldOdmNtUmZZMkZzYkdKaFkyc2diMllnWVNCaVlXUWdiMkpxWldOMEFIQmxibVFnWkdsamRHOW1JR0VnWW1Ga0lHOWlhbVZqZEFCdGIzWmxJSFJ2SUda''@;'; put 'put ''eWIyNTBJR3h2WTJzZ2FXNWpiMjV6YVhOMFpXNWplUUJjWEFCbVlYUmhiQ0JtYkdWNElITmpZVzV1WlhJZ2FXNTBaWEp1WVd3Z1pYSnliM0l0TFc1dklHRmpkR2x2YmlCbWIzVnVaQUFsY3dvQVptRjBZV3dnWm14bGVDQnpZMkZ1Ym1WeUlHbHVkR1Z5Ym1Gc0lHVnljbTl5TFMxbGJtUWdiMlln''@;'; put 'put ''WW5WbVptVnlJRzFwYzNObFpBQm1ZWFJoYkNCbGNuSnZjaUF0SUhOallXNXVaWElnYVc1d2RYUWdZblZtWm1WeUlHOTJaWEptYkc5M0FHOTFkQ0J2WmlCa2VXNWhiV2xqSUcxbGJXOXllU0JwYmlCaFlXZGZaMlYwWDI1bGVIUmZZblZtWm1WeUtDa0FhVzV3ZFhRQWMzbHVkR0Y0SUdGdFltbG5k''@;'; put 'put ''V2wwZVNBdElHSmhaR3g1SUdSbGJHbHRhWFJsWkNCdWRXMWlaWElnSndBbklHbHVJR3hwYm1VZ0pXUWdiMllnQUNCemNHeHBkSE1nYVc1MGJ5QjBkMjhnZEc5clpXNXpDZ0FsY3dCc2FXNWxBQ1ZrSUNVeFd5SmRKVzRBYjNWMElHOW1JR1I1Ym1GdGFXTWdiV1Z0YjNKNUlHbHVJR0ZoWjE5amNt''@;'; put 'put ''VmhkR1ZmWW5WbVptVnlLQ2tBYjNWMElHOW1JR1I1Ym1GdGFXTWdiV1Z0YjNKNUlHbHVJR0ZoWjJWdWMzVnlaVjlpZFdabVpYSmZjM1JoWTJzb0tRQTZJQUFnYVc0Z2JHbHVaU0FsWkFBZ2JtVmhjaUFuQUNCelkyRnVibWx1WnlCaElIRjFiM1JsWkNCemRISnBibWNnS0cxcGMzTnBibWNnWlc1''@;'; put 'put ''a2NYVnZkR1UvSUd4dmJtZGxjaUIwYUdGdUlDVmtQeWtBQ2xOMGNtbHVaeUJ6ZEdGeWRHbHVaem9pQUNCelkyRnVibWx1WnlCaElFaFVUVXdnYzNSeWFXNW5JQ2h0YVhOemFXNW5JQ2MrSno4Z1ltRmtJRzVsYzNScGJtYy9JR3h2Ym1kbGNpQjBhR0Z1SUNWa1B5a0FDbE4wY21sdVp5QnpkR0Z5''@;'; put 'put ''ZEdsdVp6bzhBQ0J6WTJGdWJtbHVaeUJoSUM4cUxpNHVLaThnWTI5dGJXVnVkQ0FvYldsemMybHVaeUFuS2k4L0lHeHZibWRsY2lCMGFHRnVJQ1ZrUHlrQVpteGxlQ0J6WTJGdWJtVnlJSEIxYzJndFltRmpheUJ2ZG1WeVpteHZkd0FpSWdCemRISnBZM1FBYkdsdVpXeGxibWQwYUFBN0NnQWdX''@;'; put 'put ''MnRsZVQwQVhRQWdXd0FzQ2dBOUFGOGxiR1JmVTFWVFVFVkRWQUJrYVFCemRISnBZM1FnQUhzS0FGMDdDZ0FTN3U0VUNRUHUvdTd1N2dIdTd1NEI3dTRLL3U0VEdSWHVFd0h1N3U3dUN4SHU3dTd1N3U3dTd1NEI3dTRXQ1FFQkhROFg3dTRhRnh2dTdoenU3dTd1QVJuNzd1N3VBZTRRN3U0ZTd1''@;'; put 'put ''N3U3Z0FDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSVhFUUlDQWdJQ0FnSUNBZ0lDQWdJU0VBSVRBZ0lXQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lVQWhVQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ''@;'; put 'put ''Q0FnNENEd0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD''@;'; put 'put ''QWdJQ0FnSUNBZ0lDQWdJQkFnTUVCUVlIQ0FrS0N3d05Dd01FQlE4SEF3d05CZ3dORGd3TkdoVVdBQUVBQXdjT0JnOElEQTBTRXlvUUVRa1FMekFSTWhjVERSUVNMaElVUVJNeUV5eEFLa0laTEVKR0lnd05EaU1QQ1JBUkNoQVJ5UkFSTFVWRy9BRUc5ZzhIOWlRQ0VCRXZNRFpOVGlnbU96d3FO''@;'; put 'put ''akU1UFQ4dk9rRFlSREErSlRkRE5Vc3JPRWxNQUFNSkFBQUFBUTRDQ3d3SUl5UWxOanM5QUEwUUVoc1dIQkluTWlJWE14NDhCZ2MxQlE4UkZCZ3BBQk1wQUFBQUFBQTNGU2dkSGdBaEpqUWZNRDRaTEFBYkFDQWFLZ0FyT2k0dkFERTRPUzBBQWdJQkFBTURBUUFCQUFFQkFRQUNBUUVBQWdJREFR''@;'; put 'put ''RUFBQVVBQVFNQkF3VURBUUVCQVFJQUFRQUVBZ0FDQVFFREFnRUFBd0lCQUFFQkFBRUJBUU1BR0JrWkdSb2JIQndkSFI0ZUh4OGdJQ0VoSWlJakpDUW1KeVVsS0NncEtTa3FLaXNyS3l3c0xTMHVMeTh3TVRFeU16UTJOVGMzTnpnNE9EazVPanJ1N3YvdTd1N3U3dTRmSU80QTcrN3U3Z3p1N3U0''@;'; put 'put ''SURlN3U3dmp1N3U3dTd1NzE3djhEQ0FRaEJRc1NFeWNVRlJZcE1rRVhHQmthTERNMFFrZElHMG9jSFM0ZVR4OGdhMlY1QUdGMGRISnBZblYwWlNCdFlXTnliM01nYm05MElHbHRjR3hsYldWdWRHVmtBQ1Z6T2lWekFFTnZkV3hrSUc1dmRDQnZjR1Z1SUNJbGN5SWdabTl5SUhkeWFYUnBibWNn''@;'; put 'put ''T2lBbGN3b0FUbThnYkdsaWVpQnpkWEJ3YjNKMExnb0FMaVZrQUc1dmJtRnRaUzVuZGdCbmRuZHlhWFJsWDI1dlgzb2djSEp2WW14bGJTQWxaQW9BYldWdGIzSjVJR0ZzYkc5allYUnBiMjRnWm1GcGJIVnlaUW9BVG04Z2JHbGllaUJ6ZFhCd2IzSjBDZ0JuZG5CeWFXNTBaam9nSlhNS0FDMDVP''@;'; put 'put ''VGs1T1RrNU9UazVPVGs1T1RrdU9Ua0FaM0poY0doMmFYb0FNaTQwTUM0eEFESXdNVFl4TWpJMUxqQXpNRFFBY21WdVpHVnlBR1JsZG1salpRQnNiMkZrYVcxaFoyVUFaSGx1WVcxcFl5QnNiMkZrYVc1bklHNXZkQ0JoZG1GcGJHRmliR1VLQUZWemFXNW5JQ1Z6T2lBbGN6b2xjd29BWjNaMWMy''@;'; put 'put ''VnljMmhoY0dVdVl3Qm5kblZ6WlhKemFHRndaVjltYVc1a0FHZDJkWE5sY25Ob1lYQmxYMlpwYkdWZllXTmpaWE56QUVacGJHVnVZVzFsSUNJbGN5SWdhWE1nZFc1ellXWmxDZ0FsY3lCM2FHbHNaU0J2Y0dWdWFXNW5JQ1Z6Q2dCMWN5MCtaZ0JuZG5WelpYSnphR0Z3WlY5dmNHVnVBQ0lsY3lJ''@;'; put 'put ''Z2QyRnpJRzV2ZENCbWIzVnVaQ0JoY3lCaElHWnBiR1VnYjNJZ1lYTWdZU0J6YUdGd1pTQnNhV0p5WVhKNUlHMWxiV0psY2dvQUwwMWxaR2xoUW05NEFDaGJZUzE2WFZ0aExYcEJMVnBkS2lrOUlpaGJYaUpkS2lraUFHTmhibTV2ZENCamIyMXdhV3hsSUhKbFozVnNZWElnWlhod2NtVnpjMmx2''@;'; put 'put ''YmlBbGN3QWxiR1lsTW5NQWNIUUFkbWxsZDBKdmVBQWxiR1lnSld4bUlDVnNaaUFsYkdZQWFXNEFjSGdBY0dNQUlnQmpiUUJ0YlFBbEpVSnZkVzVrYVc1blFtOTRPZ0FCME5IUzA5VFYxdGZZMlFBOGMzWm5BRmRGUWxBQWQyVmljQUFvYkdsaUtRQ0pVRTVIRFFvYUNnQndibWNBSlNGUVV5MUJa''@;'; put 'put ''RzlpWlMwQVFrMEFZbTF3QUVkSlJqZ0FaMmxtQVAvWS8rQUFhbkJsWndBbFVFUkdMUUJ3WkdZQXhkRFR4Z0JsY0hNQVBEOTRiV3dBZUcxc0FGSkpSa1lBY21sbVpnQUFBQUVBQUdsamJ3QWxaQ0FsWkNBbFpDQWxaQUJNWVhsdmRYUWdkMkZ6SUc1dmRDQmtiMjVsQ2dCbVlXbHNkWEpsSUcxaGJH''@;'; put 'put ''eHZZeWRwYm1jZ1ptOXlJSEpsYzNWc2RDQnpkSEpwYm1jQVoyTTZJRTkxZENCdlppQnRaVzF2Y25rS0FGOWpZMThBYjNKcFp3QnZjQUJqWTI5dGNITXVZd0J0WVhCRGJIVnpkQUJqWTJkeVlYQm9hVzVtYndCalkyZHViMlJsYVc1bWJ3QW9KVFJzWkNrZ0pUZHNaQ0J1YjJSbGN5QWxOMnhrSUdW''@;'; put 'put ''a1oyVnpDZ0FnSUNBZ0lDQWdKVGRrSUc1dlpHVnpJQ1UzWkNCbFpHZGxjeUFsTjJ4a0lHTnZiWEJ2Ym1WdWRITWdKWE1LQUdSbkFFVnljbTl5T2lCdWIyUmxJQ0lsY3lJZ1ltVnNiMjVuY3lCMGJ5QjBkMjhnYm05dUxXNWxjM1JsWkNCamJIVnpkR1Z5Y3lBaUpYTWlJR0Z1WkNBaUpYTWlDZ0J6''@;'; put 'put ''YjNKMGRnQnliM2NnYldGcWIzSUFZMjlzZFcxdUlHMWhhbTl5QUdGeWNtRjVJSEJoWTJ0cGJtYzZJQ1Z6SUNWa0lISnZkM01nSldRZ1kyOXNkVzF1Y3dvQVltSmJKWE5kSUNVdU5XY2dKUzQxWnlBbExqVm5JQ1V1TldjS0FITjBaWEFnYzJsNlpTQTlJQ1ZrQ2dCd2IzTmJKV1JkSUNWa0lDVmtD''@;'; put 'put ''Z0JqWXlBb0pXUWdZMlZzYkhNcElHRjBJQ2dsWkN3bFpDa2dLQ1ZrTENWa0tRb0FZMk1nS0NWa0lHTmxiR3h6S1NCaGRDQW9KV1FzSldRcENnQWxjeUJ1Ynk0Z1kyVnNiSE1nSldRZ1Z5QWxaQ0JJSUNWa0NnQWdJQ1ZrSUNWa0lHTmxiR3dLQUd4cFluQmhZMnM2SUdScGMyTWdQU0FsWmlBb0lE''@;'; put 'put ''d2dNQ2tLQUZCaFkydHBibWM2SUdOdmJYQjFkR1VnWjNKcFpDQnphWHBsQ2dCaElDVm1JR0lnSldZZ1l5QWxaaUJrSUNWbUlISWdKV1lLQUhKdmIzUWdKV1FnS0NWbUtTQWxaQ0FvSldZcENnQWdjakVnSldZZ2NqSWdKV1lLQUhCcGJtWnZBSEJoWTJzdVl3Qm5aWFJRWVdOclNXNW1id0FnSUcx''@;'; put 'put ''aGNtZHBiaUFsWkFvQWNHRmphMjF2WkdVQWNHRnljMlZRWVdOclRXOWtaVWx1Wm04QVlYSnlZWGtBWVhOd1pXTjBBQ1ZtQUhCaFkyc2dhVzVtYnpvS0FDQWdiVzlrWlNBZ0lDVnpDZ0FnSUdGemNHVmpkQ0FsWmdvQUlDQnphWHBsSUNBZ0pXUUtBQ0FnWm14aFozTWdJQ1ZrQ2dCMWJtUmxabWx1''@;'; put 'put ''WldRQWNHRmphd0JCY25KdmR5QjBlWEJsSUNJbGN5SWdkVzVyYm05M2JpQXRJR2xuYm05eWFXNW5DZ0J1YjNKdFlXd0FZM0p2ZHdCMFpXVUFaRzkwQUdsdWRnQjJaV1VBY0dWdUFHMXdkSGtBWTNWeWRtVUFhV04xY25abEFHd0FhR0ZzWmdCcGJuWmxiWEIwZVFCZlltRmphMmR5YjNWdVpBQmZa''@;'; put 'put ''SEpoZDE4QVEyOTFiR1FnYm05MElIQmhjbk5sSUNKZlltRmphMmR5YjNWdVpDSWdZWFIwY21saWRYUmxJR2x1SUdkeVlYQm9JQ1Z6Q2dBZ0lDSWxjeUlLQUc1dklHMWxiVzl5ZVNCbWNtOXRJSHB0WVd4c2IyTW9LUW9BYjJKcUFHVnRhWFF1WXdCd2IzQmZiMkpxWDNOMFlYUmxBR05zZFhOMEFD''@;'; put 'put ''VnNaQUJ3WVdkbEpXUXNKV1JmQUZSdmRHRnNJSE5wZW1VZ1BpQXhJR2x1SUNJbGN5SWdZMjlzYjNJZ2MzQmxZeUFBU1d4c1pXZGhiQ0JzWlc1bmRHZ2dkbUZzZFdVZ2FXNGdJaVZ6SWlCamIyeHZjaUJoZEhSeWFXSjFkR1VnQUd4dWNtTnZiRzl5YzJOb1pXMWxBR1Z0YVhSZlpXUm5aVjlzWVdK''@;'; put 'put ''bGJBQWxjeTBsY3dCbWIzSjNZWEprQUdKaFkyc0FJQzArSUFBZ0xTMGdBR2x1SUdWa1oyVWdKWE1sY3lWekNnQnNZV0psYkdGc2FXZHVaV1FBWldSblpXaHlaV1lBWldSblpWVlNUQUJzWVdKbGJHaHlaV1lBYkdGaVpXeFZVa3dBZEdGcGJHaHlaV1lBZEdGcGJGVlNUQUJvWldGa2FISmxaZ0Jv''@;'; put 'put ''WldGa1ZWSk1BR1ZrWjJWMFlYSm5aWFFBYkdGaVpXeDBZWEpuWlhRQWRHRnBiSFJoY21kbGRBQm9aV0ZrZEdGeVoyVjBBR1ZrWjJWMGIyOXNkR2x3QUd4aFltVnNkRzl2YkhScGNBQjBZV2xzZEc5dmJIUnBjQUJvWldGa2RHOXZiSFJwY0FBQmJtVnpkR2x1WnlCdWIzUWdZV3hzYjNkbFpDQnBi''@;'; put 'put ''aUJ6ZEhsc1pUb2dKWE1LQUhWdWJXRjBZMmhsWkNBbktTY2dhVzRnYzNSNWJHVTZJQ1Z6Q2dCMGNuVnVZMkYwYVc1bklITjBlV3hsSUNjbGN5Y0tBSFZ1YldGMFkyaGxaQ0FuS0NjZ2FXNGdjM1I1YkdVNklDVnpDZ0JoYkd3QWFXNGdZMngxYzNSbGNpQWxjd29BVFc5eVpTQjBhR0Z1SURJZ1ky''@;'; put 'put ''OXNiM0p6SUhOd1pXTnBabWxsWkNCbWIzSWdZU0JuY21Ga2FXVnVkQ0F0SUdsbmJtOXlhVzVuSUhKbGJXRnBibWx1WndvQVozSmhaR2xsYm5RZ2NHVnVJR052Ykc5eWN5QnViM1FnZVdWMElITjFjSEJ2Y25SbFpDNEtBRWx0WVdkbGN5QjFibk4xY0hCdmNuUmxaQ0JwYmlBaVltRmphMmR5YjNW''@;'; put 'put ''dVpDSWdZWFIwY21saWRYUmxDZ0JzWVhsbGNuTWdibTkwSUhOMWNIQnZjblJsWkNCcGJpQWxjeUJ2ZFhSd2RYUUtBRXhoZVc5MWRDQjNZWE1nYm05MElHUnZibVV1SUNCTmFYTnphVzVuSUd4aGVXOTFkQ0J3YkhWbmFXNXpQeUFLQUdkMlVtVnVaR1Z5U205aWN5QWxjem9nSlM0eVppQnpaV056''@;'; put 'put ''TGdvQWJHRjViM1YwSUhkaGN5QnViM1FnWkc5dVpRb0FjbVZ1WkdWeVpYSWdabTl5SUNWeklHbHpJSFZ1WVhaaGFXeGhZbXhsQ2dCd1lXZGxaR2x5UFNWeklHbG5ibTl5WldRS0FIWnBaWGR3YjNKMEFDVnNaaXdsYkdZc0pXeG1MQ2NsVzE0blhTY0FKV3htTENWc1ppd2xiR1lzSlZ0ZUxGMGxj''@;'; put 'put ''d0FsYkdZc0pXeG1MQ1ZzWml3bGJHWXNKV3htQUc5MWRIQjFkRzl5WkdWeUFHOWtaWE5tYVhKemRBQmtaMlZ6Wm1seWMzUUFiR0Y1WlhKekFHeGhlV1Z5YzJWc1pXTjBBRlJvWlNCc1lYbGxjbk5sYkdWamRDQmhkSFJ5YVdKMWRHVWdJaVZ6SWlCa2IyVnpJRzV2ZENCdFlYUmphQ0JoYm5rZ2JH''@;'; put 'put ''RjVaWElnYzNCbFkybG1aV1FnWW5rZ2RHaGxJR3hoZVdWeWN5QmhkSFJ5YVdKMWRHVWdMU0JwWjI1dmNtVmtMZ29BYkdGNVpYSnpaWEFBT2drZ0FHeGhlV1Z5YkdsemRITmxjQUFzQUZSb1pTQmphR0Z5WVdOMFpYSWdKeVZqSnlCaGNIQmxZWEp6SUdsdUlHSnZkR2dnZEdobElHeGhlV1Z5YzJW''@;'; put 'put ''d0lHRnVaQ0JzWVhsbGNteHBjM1J6WlhBZ1lYUjBjbWxpZFhSbGN5QXRJR3hoZVdWeWJHbHpkSE5sY0NCcFoyNXZjbVZrTGdvQWNHRmtBRUpNQUhCaFoyVmthWElBYzI5c2FXUUFBSE5sZEd4cGJtVjNhV1IwYUFBeEFBQnpjR3d0UG5OcGVtVWdQaUF3QUdsdWFYUmZjM0JzYVc1bGMxOWlZZ0Jp''@;'; put 'put ''ZWk1emFYcGxJRDRnTUFCaVpYcHBaWEpmWW1JQVlub3VjMmw2WlNBbElETWdQVDBnTVFBbGJHWUFabTl1ZEhCaGRHZ0FSRTlVUms5T1ZGQkJWRWdBUjBSR1QwNVVVRUZVU0FCcGJXRm5aWEJoZEdnQWNYVmhiblIxYlFCeVlXNXJaR2x5QUV4U0FFSlVBRkpNQUc1dlpHVnpaWEFBY21GdWEzTmxj''@;'; put 'put ''QUJsY1hWaGJHeDVBSE5vYjNkaWIzaGxjd0JtYjI1MGJtRnRaWE1BYzJsNlpRQndZV2RsQUdObGJuUmxjZ0J5YjNSaGRHVUFiM0pwWlc1MFlYUnBiMjRBYkdGdVpITmpZWEJsQUdOc2RYTjBaWEp5WVc1ckFHTnZibU5sYm5SeVlYUmxBR1J3YVFCeVpYTnZiSFYwYVc5dUFHOXlaR1Z5YVc1bkFH''@;'; put 'put ''WnBiR3hqYjJ4dmNnQm1iMjUwYzJsNlpRQm1iMjUwYm1GdFpRQm1iMjUwWTI5c2IzSUFlR3hoWW1Wc0FIQmxibmRwWkhSb0FIQmxjbWx3YUdWeWFXVnpBSE5yWlhjQVpHbHpkRzl5ZEdsdmJnQnViMnAxYzNScFpua0FiR0Y1WlhJQVozSnZkWEFBWTI5dGJXVnVkQUIyWlhKMGFXTmxjd0I2QUhk''@;'; put 'put ''bGFXZG9kQUJzWVdKbGJHWnNiMkYwQUdScGNnQmhjbkp2ZDJobFlXUUFZWEp5YjNkMFlXbHNBR2hsWVdSc1lXSmxiQUIwWVdsc2JHRmlaV3dBYkdGaVpXeG1iMjUwYzJsNlpRQnNZV0psYkdadmJuUnVZVzFsQUd4aFltVnNabTl1ZEdOdmJHOXlBR3hoWW1Wc1pHbHpkR0Z1WTJVQWJHRmlaV3ho''@;'; put 'put ''Ym1kc1pRQnRhVzVzWlc0QVpHVmpiM0poZEdVQVlYSnliM2R6YVhwbEFHTnZibk4wY21GcGJuUUFkR0ZwYkdOc2FYQUFhR1ZoWkdOc2FYQUFiR0ZpWld4cWRYTjBBR3h2WTJGc0FHZHNiMkpoYkFBbGJHWXNKV3htSldNQUpXeG1KV01BY21GMGFXOEFZWFYwYndCamIyMXdjbVZ6Y3dCbGVIQmhi''@;'; put 'put ''bVFBWm1sc2JBQm5aQUJ3Y3dCemRtY0FZMmhoY25ObGRBQjFkR1l0T0FCc1lYUnBiaTB4QUd4aGRHbHVNUUJzTVFCSlUwOHRPRGcxT1MweEFFbFRUMTg0T0RVNUxURUFTVk5QT0RnMU9TMHhBRWxUVHkxSlVpMHhNREFBWW1sbkxUVUFZbWxuTlFCMWRHWTRBRlZ1YzNWd2NHOXlkR1ZrSUdOb1lY''@;'; put 'put ''SnpaWFFnSWlWeklpQXRJR0Z6YzNWdGFXNW5JSFYwWmkwNENnQlZibk4xY0hCdmNuUmxaQ0JqYUdGeWMyVjBJSFpoYkhWbElDVmtDZ0JWVkVZdE9BQkNTVWN0TlFCcGJpQnNZV0psYkNCdlppQm5jbUZ3YUNBbGN3b0FhVzRnYkdGaVpXd2diMllnYm05a1pTQWxjd29BYVc0Z2JHRmlaV3dnYjJZ''@;'; put 'put ''Z1pXUm5aU0FsY3lBbGN5QWxjd29BYTJsdVpDQTlQU0JNVkY5T1QwNUZBR3hoWW1Wc2N5NWpBRzFoYTJWZmJHRmlaV3dBWEV3QVhFY0FYRVVBWEVnQVhGUUFKaU14TXpzQUppTXhNRHNBSm5GMWIzUTdBQ1lqTVRZd093QW1ZVzF3T3dBbVozUTdBQ1lqTXprN0FDWWpORFU3QUNac2REc0FKWE1n''@;'; put 'put ''SldRZ2JtOWtaWE1nSldRZ1pXUm5aWE1nYldGNGFYUmxjajBsWkNCaVlXeGhibU5sUFNWa0NnQnVaWFIzYjNKcklITnBiWEJzWlhnNklBQWxaQ0FBSlhNbFpDQnViMlJsY3lBbFpDQmxaR2RsY3lBbFpDQnBkR1Z5SUNVdU1tWWdjMlZqQ2dCMWNHUmhkR1U2SUcxcGMyMWhkR05vWldRZ2JHTmhJ''@;'; put 'put ''R2x1SUhSeVpXVjFjR1JoZEdWekNnQlVjbVZsWDJWa1oyVXVjMmw2WlNBOVBTQk9YMjV2WkdWeklDMGdNUUJ1Y3k1akFHWmxZWE5wWW14bFgzUnlaV1VBSVZSU1JVVmZSVVJIUlNobEtRQnRaWEpuWlY5MGNtVmxjd0FvY2pBdFBtaGxZWEJmYVc1a1pYZ2dQaUF0TVNrZ2ZId2dLSEl4TFQ1b1pX''@;'; put 'put ''RndYMmx1WkdWNElENGdMVEVwQUZOVWMyVjBWVzVwYjI0QWNpMCthR1ZoY0Y5cGJtUmxlQ0ErUFNBd0FHRmtaRjkwY21WbFgyVmtaMlU2SUcxcGMzTnBibWNnZEhKbFpTQmxaR2RsQ2dCaFpHUmZkSEpsWlY5bFpHZGxPaUJsYlhCMGVTQnZkWFJsWkdkbElHeHBjM1FLQUdGa1pGOTBjbVZsWDJW''@;'; put 'put ''a1oyVTZJR1Z0Y0hSNUlHbHVaV1JuWlNCc2FYTjBDZ0IwY205MVlteGxJR2x1SUdsdWFYUmZjbUZ1YXdvQUNTVnpJQ1ZrQ2dCelpXRnlZMmh6YVhwbEFHZHlZWEJvSUFBZ0FHNXZaR1VnQUhOMGIzQUtBQ1V1TldjQWNHOXpBSEpsWTNSekFIaHNjQUJzY0FCb1pXRmtYMnh3QUhSaGFXeGZiSEFB''@;'; put 'put ''YkhkcFpIUm9BR3hvWldsbmFIUUFZbUlBSlM0MVp5d2xMalZuTENVdU5XY0FMQ1V1TldjQUpTNDFaeXdsTGpWbkFITmhiWEJzWlhCdmFXNTBjd0FsTGpWbklDVXVOV2NBY3l3bExqVm5MQ1V1TldjZ0FHVXNKUzQxWnl3bExqVm5JQUFsTGpWbkxDVXVOV2NzSlM0MVp5d2xMalZuQUNVdU1tWUFK''@;'; put 'put ''UzQxWnl3bExqVm5MQ1V1Tldjc0pTNDFaeUFBTDNCaGRHaGliM2dnZXdvZ0lDQWdMMWdnWlhoamFDQnVaV2NnSlM0MVp5QnpkV0lnWkdWbUNpQWdJQ0F2V1NCbGVHTm9JQ1V1TldjZ2MzVmlJR1JsWmdvZ0lDQWdMM2dnWlhoamFDQnVaV2NnSlM0MVp5QnpkV0lnWkdWbUNpQWdJQ0F2ZVNCbGVH''@;'; put 'put ''Tm9JQ1V1TldjZ2MzVmlJR1JsWmdvZ0lDQWdibVYzY0dGMGFDQjRJSGtnYlc5MlpYUnZDaUFnSUNCWUlIa2diR2x1WlhSdkNpQWdJQ0JZSUZrZ2JHbHVaWFJ2Q2lBZ0lDQjRJRmtnYkdsdVpYUnZDaUFnSUNCamJHOXpaWEJoZEdnZ2MzUnliMnRsQ24wZ1pHVm1DZ0F2Y0dGMGFHSnZlQ0I3Q2lB''@;'; put 'put ''Z0lDQXZXU0JsZUdOb0lDVXVOV2NnYzNWaUlHUmxaZ29nSUNBZ0wxZ2daWGhqYUNBbExqVm5JSE4xWWlCa1pXWUtJQ0FnSUM5NUlHVjRZMmdnSlM0MVp5QnpkV0lnWkdWbUNpQWdJQ0F2ZUNCbGVHTm9JQ1V1TldjZ2MzVmlJR1JsWmdvZ0lDQWdibVYzY0dGMGFDQjRJSGtnYlc5MlpYUnZDaUFn''@;'; put 'put ''SUNCWUlIa2diR2x1WlhSdkNpQWdJQ0JZSUZrZ2JHbHVaWFJ2Q2lBZ0lDQjRJRmtnYkdsdVpYUnZDaUFnSUNCamJHOXpaWEJoZEdnZ2MzUnliMnRsQ2lCOUlHUmxaZ292WkdKbmMzUmhjblFnZXlCbmMyRjJaU0FsTGpWbklDVXVOV2NnZEhKaGJuTnNZWFJsSUgwZ1pHVm1DaTloY25KdmQyeGxi''@;'; put 'put ''bWQwYUNBeE1DQmtaV1lLTDJGeWNtOTNkMmxrZEdnZ1lYSnliM2RzWlc1bmRHZ2dNaUJrYVhZZ1pHVm1DaTloY25KdmQyaGxZV1FnZXdvZ0lDQWdaM05oZG1VS0lDQWdJSEp2ZEdGMFpRb2dJQ0FnWTNWeWNtVnVkSEJ2YVc1MENpQWdJQ0J1Wlhkd1lYUm9DaUFnSUNCdGIzWmxkRzhLSUNBZ0lH''@;'; put 'put ''RnljbTkzYkdWdVozUm9JR0Z5Y205M2QybGtkR2dnTWlCa2FYWWdjbXhwYm1WMGJ3b2dJQ0FnTUNCaGNuSnZkM2RwWkhSb0lHNWxaeUJ5YkdsdVpYUnZDaUFnSUNCamJHOXpaWEJoZEdnZ1ptbHNiQW9nSUNBZ1ozSmxjM1J2Y21VS2ZTQmlhVzVrSUdSbFpnb3ZiV0ZyWldGeWNtOTNJSHNLSUNB''@;'; put 'put ''Z0lHTjFjbkpsYm5Sd2IybHVkQ0JsZUdOb0lIQnZjQ0J6ZFdJZ1pYaGphQ0JqZFhKeVpXNTBjRzlwYm5RZ2NHOXdJSE4xWWlCaGRHRnVDaUFnSUNCaGNuSnZkMmhsWVdRS2ZTQmlhVzVrSUdSbFpnb3ZjRzlwYm5RZ2V5QWdJQ0J1Wlhkd1lYUm9JQ0FnSURJZ01DQXpOakFnWVhKaklHWnBiR3g5''@;'; put 'put ''SUdSbFppOXRZV3RsZG1WaklIc0tJQ0FnSUM5WklHVjRZMmdnWkdWbUNpQWdJQ0F2V0NCbGVHTm9JR1JsWmdvZ0lDQWdMM2tnWlhoamFDQmtaV1lLSUNBZ0lDOTRJR1Y0WTJnZ1pHVm1DaUFnSUNCdVpYZHdZWFJvSUhnZ2VTQnRiM1psZEc4S0lDQWdJRmdnV1NCc2FXNWxkRzhnYzNSeWIydGxD''@;'; put 'put ''aUFnSUNCWUlGa2diVzkyWlhSdkNpQWdJQ0I0SUhrZ2JXRnJaV0Z5Y205M0NuMGdaR1ZtQ2dCc2IzTjBJQ1Z6SUNWeklHVmtaMlVLQUc1dklIQnZjMmwwYVc5dUlHWnZjaUJsWkdkbElIZHBkR2dnYkdGaVpXd2dKWE1BYm04Z2NHOXphWFJwYjI0Z1ptOXlJR1ZrWjJVZ2QybDBhQ0IwWVdsc0lH''@;'; put 'put ''eGhZbVZzSUNWekFHNXZJSEJ2YzJsMGFXOXVJR1p2Y2lCbFpHZGxJSGRwZEdnZ2FHVmhaQ0JzWVdKbGJDQWxjd0J1YnlCd2IzTnBkR2x2YmlCbWIzSWdaV1JuWlNCM2FYUm9JSGhzWVdKbGJDQWxjd0JtYjNKalpXeGhZbVZzY3dBbFpDQnZkWFFnYjJZZ0pXUWdiR0ZpWld4eklIQnZjMmwwYVc5''@;'; put 'put ''dVpXUXVDZ0FsWkNCdmRYUWdiMllnSldRZ1pYaDBaWEpwYjNJZ2JHRmlaV3h6SUhCdmMybDBhVzl1WldRdUNnQWxaQ0J2WW1weklDVmtJSGhzWVdKbGJITWdabTl5WTJVOUpXUWdZbUk5S0NVdU1ESm1MQ1V1TURKbUtTQW9KUzR3TW1Zc0pTNHdNbVlwQ2dCdlltcGxZM1J6Q2dBZ1d5VmtYU0Fv''@;'; put 'put ''SlM0d01tWXNKUzR3TW1ZcElDZ2xMakF5Wml3bExqQXlaaWtnSlhBZ0lpVnpJZ29BZUd4aFltVnNjd29BSUZzbFpGMGdKWEFnYzJWMElDVmtJQ2dsTGpBeVppd2xMakF5WmlrZ0tDVXVNREptTENVdU1ESm1LU0FsY3dvQWMyaGhjR1ZtYVd4bElHNXZkQ0J6WlhRZ2IzSWdibTkwSUdadmRXNWtJ''@;'; put 'put ''R1p2Y2lCbGNITm1JRzV2WkdVZ0pYTUtBR052ZFd4a2JpZDBJRzl3Wlc0Z1pYQnpaaUJtYVd4bElDVnpDZ0FsSlNVbFFtOTFibVJwYm1kQ2IzZzZJQ1ZrSUNWa0lDVmtJQ1ZrQUhKbFlXUUFRbTkxYm1ScGJtZENiM2dnYm05MElHWnZkVzVrSUdsdUlHVndjMllnWm1sc1pTQWxjd29BWTJGdUoz''@;'; put 'put ''UWdabWx1WkNCc2FXSnlZWEo1SUdacGJHVWdKWE1LQUdOaGJpZDBJRzl3Wlc0Z2JHbGljbUZ5ZVNCbWFXeGxJQ1Z6Q2dCRlQwWUFRa1ZIU1U0QVJVNUVBRlJTUVVsTVJWSUFMM1Z6WlhKZmMyaGhjR1ZmSldRZ2V3b0FKU1ZDWldkcGJrUnZZM1Z0Wlc1ME9nb0FKU1ZGYm1SRWIyTjFiV1Z1ZEFv''@;'; put 'put ''QWZTQmlhVzVrSUdSbFpnb0FWVlJHTFRnZ2FXNXdkWFFnZFhObGN5QnViMjR0VEdGMGFXNHhJR05vWVhKaFkzUmxjbk1nZDJocFkyZ2dZMkZ1Ym05MElHSmxJR2hoYm1Sc1pXUWdZbmtnZEdocGN5QlFiM04wVTJOeWFYQjBJR1J5YVhabGNnb0FZMkZ1Ym05MElISmxMV0ZzYkc5allYUmxJSEJ6''@;'; put 'put ''Q2dCeWIzVjBaWE53YkdsdVpYTnBibWwwT2lCallXNXViM1FnWVd4c2IyTmhkR1VnY0hNS0FISnZkWFJsYzNCc2FXNWxjem9nSldRZ1pXUm5aWE1zSUNWa0lHSnZlR1Z6SUNVdU1tWWdjMlZqQ2dCcGJpQnliM1YwWlhOd2JHbHVaWE1zSUdOaGJtNXZkQ0JtYVc1a0lFNVBVazFCVENCbFpHZGxD''@;'; put 'put ''Z0JwYmlCeWIzVjBaWE53YkdsdVpYTXNJR2xzYkdWbllXd2dkbUZzZFdWeklHOW1JSEJ5WlhZZ0pXUWdZVzVrSUc1bGVIUWdKV1FzSUd4cGJtVWdKV1FLQUdsdUlISnZkWFJsYzNCc2FXNWxjeXdnWldSblpTQnBjeUJoSUd4dmIzQWdZWFFnSlhNS0FHbHVJSEp2ZFhSbGMzQnNhVzVsY3l3Z1VI''@;'; put 'put ''Tm9iM0owWlhOMGNHRjBhQ0JtWVdsc1pXUUtBR2x1SUhKdmRYUmxjM0JzYVc1bGN5d2dVSEp2ZFhSbGMzQnNhVzVsSUdaaGFXeGxaQW9BVlc1aFlteGxJSFJ2SUhKbFkyeGhhVzBnWW05NElITndZV05sSUdsdUlITndiR2x1WlNCeWIzVjBhVzVuSUdadmNpQmxaR2RsSUNJbGN5SWdMVDRnSWlW''@;'; put 'put ''eklpNGdVMjl0WlhSb2FXNW5JR2x6SUhCeWIySmhZbXg1SUhObGNtbHZkWE5zZVNCM2NtOXVaeTRLQUdsdUlHTm9aV05yY0dGMGFDd2dZbTk0SURBZ2FHRnpJRXhNSUdOdmIzSmtJRDRnVlZJZ1kyOXZjbVFLQUdsdUlHTm9aV05yY0dGMGFDd2dZbTk0SUNWa0lHaGhjeUJNVENCamIyOXlaQ0Er''@;'; put 'put ''SUZWU0lHTnZiM0prQ2dCcGJpQmphR1ZqYTNCaGRHZ3NJR0p2ZUdWeklDVmtJR0Z1WkNBbFpDQmtiMjRuZENCMGIzVmphQW9BYVc0Z1kyaGxZMnR3WVhSb0xDQnpkR0Z5ZENCd2IzSjBJRzV2ZENCcGJpQm1hWEp6ZENCaWIzZ0tBR2x1SUdOb1pXTnJjR0YwYUN3Z1pXNWtJSEJ2Y25RZ2JtOTBJ''@;'; put 'put ''R2x1SUd4aGMzUWdZbTk0Q2dBbFpDQmliM2hsY3pvS0FDVmtJQ2dsTGpWbkxDQWxMalZuS1N3Z0tDVXVOV2NzSUNVdU5XY3BDZ0JqYjI1emRISmhhVzVsWkFCdWIzUWdZMjl1YzNSeVlXbHVaV1FBYzNSaGNuUWdjRzl5ZERvZ0tDVXVOV2NzSUNVdU5XY3BMQ0IwWVc1blpXNTBJR0Z1WjJ4bE9p''@;'; put 'put ''QWxMalZuTENBbGN3b0FaVzVrSUhCdmNuUTZJQ2dsTGpWbkxDQWxMalZuS1N3Z2RHRnVaMlZ1ZENCaGJtZHNaVG9nSlM0MVp5d2dKWE1LQUhOcFpHVnpJRDA5SURRQWMyaGhjR1Z6TG1NQWNtOTFibVJmWTI5eWJtVnljd0JpWVdRZ2JHRmlaV3dnWm05eWJXRjBJQ1Z6Q2dCY1RnQnRZWEpuYVc0''@;'; put 'put ''QUpXeG1MQ1ZzWmdCeVpXZDFiR0Z5QUdOMWMzUnZiUUJ6YUdGd1pXWnBiR1VBUEc1cGJENEFUbThnYjNJZ2FXMXdjbTl3WlhJZ2MyaGhjR1ZtYVd4bFBTSWxjeUlnWm05eUlHNXZaR1VnSWlWeklnb0FUbThnYjNJZ2FXMXdjbTl3WlhJZ2FXMWhaMlU5SWlWeklpQm1iM0lnYm05a1pTQWlKWE1p''@;'; put 'put ''Q2dCc1lXSmxiR3h2WXdCdWIyUmxJQ2NsY3ljc0lHZHlZWEJvSUNjbGN5Y2djMmw2WlNCMGIyOGdjMjFoYkd3Z1ptOXlJR3hoWW1Wc0NnQmxjSE5tQUhWemFXNW5JQ1Z6SUdadmNpQjFibXR1YjNkdUlITm9ZWEJsSUNWekNnQndiMng1WjI5dUFHOTJZV3dBWTJseVkyeGxBSEJ2YVc1MEFHVm5a''@;'; put 'put ''d0IwY21saGJtZHNaUUJ3YkdGcGJuUmxlSFFBY0d4aGFXNEFaR2xoYlc5dVpBQjBjbUZ3WlhwcGRXMEFjR0Z5WVd4c1pXeHZaM0poYlFCb2IzVnpaUUJ3Wlc1MFlXZHZiZ0JvWlhoaFoyOXVBSE5sY0hSaFoyOXVBRzlqZEdGbmIyNEFibTkwWlFCMFlXSUFabTlzWkdWeUFHSnZlRE5rQUdOdmJY''@;'; put 'put ''QnZibVZ1ZEFCamVXeHBibVJsY2dCeVpXTjBBSEpsWTNSaGJtZHNaUUJ6Y1hWaGNtVUFaRzkxWW14bFkybHlZMnhsQUdSdmRXSnNaVzlqZEdGbmIyNEFkSEpwY0d4bGIyTjBZV2R2YmdCcGJuWjBjbWxoYm1kc1pRQnBiblowY21Gd1pYcHBkVzBBYVc1MmFHOTFjMlVBZFc1a1pYSnNhVzVsQUUx''@;'; put 'put ''a2FXRnRiMjVrQUUxemNYVmhjbVVBVFdOcGNtTnNaUUJ3Y205dGIzUmxjZ0JqWkhNQWRHVnliV2x1WVhSdmNnQjFkSElBYVc1emRXeGhkRzl5QUhKcFltOXphWFJsQUhKdVlYTjBZV0lBY0hKdmRHVmhjMlZ6YVhSbEFIQnliM1JsYVc1emRHRmlBSEJ5YVcxbGNuTnBkR1VBY21WemRISnBZM1Jw''@;'; put 'put ''YjI1emFYUmxBR1pwZG1Wd2IzWmxjbWhoYm1jQWRHaHlaV1Z3YjNabGNtaGhibWNBYm05MlpYSm9ZVzVuQUdGemMyVnRZbXg1QUhOcFoyNWhkSFZ5WlFCeWNISnZiVzkwWlhJQWJHRnljbTkzQUhKaGNuSnZkd0JzY0hKdmJXOTBaWElBY21WamIzSmtBRTF5WldOdmNtUUFjM1JoY2dBak9EQTRN''@;'; put 'put ''RGd3QUNObVkyWmpabU1BSXpNd016QXpNQUFqWlRobE9HVTRBQ05sTUdVd1pUQUFJMll3WmpCbU1BQWpNVEF4TURFd0FDTm1PR1k0WmpnQWFXNGdibTlrWlNBbGN3b0FjbTkxYm1SbFpBQmthV0ZuYjI1aGJITUFjbUZrYVdGc0FITjBjbWx3WldRQWQyVmtaMlZrQUY4QWJtOWtaU0FsY3l3Z2NH''@;'; put 'put ''OXlkQ0FsY3l3Z2RXNXlaV052WjI1cGVtVmtJR052YlhCaGMzTWdjRzlwYm5RZ0p5VnpKeUF0SUdsbmJtOXlaV1FLQUc1dlpHVWdKWE1zSUhCdmNuUWdKWE1nZFc1eVpXTnZaMjVwZW1Wa0NnQWxMalZuSUNVdU5XY2dkSEpoYm5Oc1lYUmxJRzVsZDNCaGRHZ2dkWE5sY2w5emFHRndaVjhsWkFv''@;'; put 'put ''QWFXNTJhWE1BQUdacGJHeGxaQUFBY3dCbEFIY0FjM0JzYVc1bGN5NWpBR0psWjJsdWNHRjBhQUJRTFQ1bGJtUXVkR2hsZEdFZ1BDQXlJQ29nVFY5UVNRQmxibVJ3WVhSb0FHMWhhMlZUWld4bVJXUm5aUUJuWlhSemNHeHBibVZ3YjJsdWRITTZJRzV2SUhOd2JHbHVaU0J3YjJsdWRITWdZWFpo''@;'; put 'put ''YVd4aFlteGxJR1p2Y2lCbFpHZGxJQ2dsY3l3bGN5a0tBSEJ2Ykhsc2FXNWxUV2xrY0c5cGJuUUFjM0JoYmkwK1ptOXVkQUIwWlhoMGMzQmhiaTVqQUhSbGVIUnpjR0Z1WDNOcGVtVUFabTl1ZEMwK2JtRnRaUUJtYjI1MGJtRnRaVG9nSWlWeklpQnlaWE52YkhabFpDQjBiem9nSlhNS0FHWnZi''@;'; put 'put ''blJ1WVcxbE9pQjFibUZpYkdVZ2RHOGdjbVZ6YjJ4MlpTQWlKWE1pQ2dCamIzVnlBR0Z5YVdGc0FHaGxiSFpsZEdsallRQmJhVzUwWlhKdVlXd2dkR2x0WlhOZEFGdHBiblJsY201aGJDQmpiM1Z5YVdWeVhRQmJhVzUwWlhKdVlXd2dZWEpwWVd4ZEFFRjJZVzUwUjJGeVpHVXRRbTl2YXdCVlVs''@;'; put 'put ''Y2dSMjkwYUdsaklFd0FZbTl2YXdCellXNXpMVk5sY21sbUFFRjJZVzUwUjJGeVpHVXRRbTl2YTA5aWJHbHhkV1VBYjJKc2FYRjFaUUJwZEdGc2FXTUFRWFpoYm5SSFlYSmtaUzFFWlcxcEFHUmxiV2tBUVhaaGJuUkhZWEprWlMxRVpXMXBUMkpzYVhGMVpRQkNiMjlyYldGdUxVUmxiV2tBVlZK''@;'; put 'put ''WElFSnZiMnR0WVc0Z1RBQnpaWEpwWmdCQ2IyOXJiV0Z1TFVSbGJXbEpkR0ZzYVdNQVFtOXZhMjFoYmkxTWFXZG9kQUJzYVdkb2RBQkNiMjlyYldGdUxVeHBaMmgwU1hSaGJHbGpBRU52ZFhKcFpYSUFiVzl1YjNOd1lXTmxBRU52ZFhKcFpYSXRRbTlzWkFCRGIzVnlhV1Z5TFVKdmJHUlBZbXhw''@;'; put 'put ''Y1hWbEFFTnZkWEpwWlhJdFQySnNhWEYxWlFCSVpXeDJaWFJwWTJFQVNHVnNkbVYwYVdOaExVSnZiR1FBU0dWc2RtVjBhV05oTFVKdmJHUlBZbXhwY1hWbEFFaGxiSFpsZEdsallTMU9ZWEp5YjNjQVkyOXVaR1Z1YzJWa0FFaGxiSFpsZEdsallTMU9ZWEp5YjNjdFFtOXNaQUJJWld4MlpYUnBZ''@;'; put 'put ''MkV0VG1GeWNtOTNMVUp2YkdSUFlteHBjWFZsQUVobGJIWmxkR2xqWVMxT1lYSnliM2N0VDJKc2FYRjFaUUJJWld4MlpYUnBZMkV0VDJKc2FYRjFaUUJPWlhkRFpXNTBkWEo1VTJOb2JHSnJMVUp2YkdRQVEyVnVkSFZ5ZVNCVFkyaHZiMnhpYjI5cklFd0FUbVYzUTJWdWRIVnllVk5qYUd4aWF5''@;'; put 'put ''MUNiMnhrU1hSaGJHbGpBRTVsZDBObGJuUjFjbmxUWTJoc1ltc3RTWFJoYkdsakFFNWxkME5sYm5SMWNubFRZMmhzWW1zdFVtOXRZVzRBY205dFlXNEFVR0ZzWVhScGJtOHRRbTlzWkFCUVlXeGhkR2x1YnlCTWFXNXZkSGx3WlFCUVlXeGhkR2x1YnkxQ2IyeGtTWFJoYkdsakFGQmhiR0YwYVc1''@;'; put 'put ''dkxVbDBZV3hwWXdCUVlXeGhkR2x1YnkxU2IyMWhiZ0JUZVcxaWIyd0FabUZ1ZEdGemVRQlVhVzFsY3kxQ2IyeGtBRlJwYldWekFGUnBiV1Z6TFVKdmJHUkpkR0ZzYVdNQVZHbHRaWE10U1hSaGJHbGpBRnBoY0daRGFHRnVZMlZ5ZVMxTlpXUnBkVzFKZEdGc2FXTUFWVkpYSUVOb1lXNWpaWEo1''@;'; put 'put ''SUV3QWJXVmthWFZ0QUZwaGNHWkVhVzVuWW1GMGN3QkVhVzVuWW1GMGN3QnBibkIxZEhOallXeGxBRzV2QUhSeWRXVUFlV1Z6QUhWMGFXeHpMbU1BZFNBOVBTQlZSbDltYVc1a0tIVXBBRlZHWDNObGRHNWhiV1VBQVdacGJHVWdiRzloWkdsdVp5QnBjeUJrYVhOaFlteGxaQ0JpWldOaGRYTmxJ''@;'; put 'put ''SFJvWlNCbGJuWnBjbTl1YldWdWRDQmpiMjUwWVdsdWN5QlRSVkpXUlZKZlRrRk5SVDBpSlhNaUNtRnVaQ0IwYUdVZ1IxWmZSa2xNUlY5UVFWUklJSFpoY21saFlteGxJR2x6SUhWdWMyVjBJRzl5SUdWdGNIUjVMZ29BVUdGMGFDQndjbTkyYVdSbFpDQjBieUJtYVd4bE9pQWlKWE1pSUdoaGN5''@;'; put 'put ''QmlaV1Z1SUdsbmJtOXlaV1FnWW1WallYVnpaU0JtYVd4bGN5QmhjbVVnYjI1c2VTQndaWEp0YVhSMFpXUWdkRzhnWW1VZ2JHOWhaR1ZrSUdaeWIyMGdkR2hsSUdScGNtVmpkRzl5YVdWeklHbHVJQ0lsY3lJZ2QyaGxiaUJ5ZFc1dWFXNW5JR2x1SUdGdUlHaDBkSEFnYzJWeWRtVnlMZ29BSlhN''@;'; put 'put ''bGN5VnpBQzhBT2dCbGJHeHBjSE5sQUZScGJXVnpMVkp2YldGdUFHTnNkWE4wWlhJQVgxOWpiSFZ6ZEdWeWJtOWtaWE1BWTJ4MWMzUmxjaUJqZVdOc1pTQWxjeUF0TFNBbGN5QnViM1FnYzNWd2NHOXlkR1ZrQ2dCMFlXbHNJR05zZFhOMFpYSWdKWE1nYVc1emFXUmxJR2hsWVdRZ1kyeDFjM1Js''@;'; put 'put ''Y2lBbGN3b0FhR1ZoWkNCamJIVnpkR1Z5SUNWeklHbHVjMmxrWlNCMFlXbHNJR05zZFhOMFpYSWdKWE1LQUhSaGFXd2dibTlrWlNBbGN5QnBibk5wWkdVZ2FHVmhaQ0JqYkhWemRHVnlJQ1Z6Q2dCb1pXRmtJRzV2WkdVZ0pYTWdhVzV6YVdSbElIUmhhV3dnWTJ4MWMzUmxjaUFsY3dvQVgxOEFi''@;'; put 'put ''R0ZpWld3QWMyaGhjR1VBWW05NEFGUjNieUJqYkhWemRHVnljeUJ1WVcxbFpDQWxjeUF0SUhSb1pTQnpaV052Ym1RZ2QybHNiQ0JpWlNCcFoyNXZjbVZrQ2dCdFlYQk9BRUZGYkdsbkFFRmhZM1YwWlFCQlkybHlZd0JCWjNKaGRtVUFRV3h3YUdFQVFYSnBibWNBUVhScGJHUmxBRUYxYld3QVFt''@;'; put 'put ''VjBZUUJEWTJWa2FXd0FRMmhwQUVSaFoyZGxjZ0JFWld4MFlRQkZWRWdBUldGamRYUmxBRVZqYVhKakFFVm5jbUYyWlFCRmNITnBiRzl1QUVWMFlRQkZkVzFzQUVkaGJXMWhBRWxoWTNWMFpRQkpZMmx5WXdCSlozSmhkbVVBU1c5MFlRQkpkVzFzQUV0aGNIQmhBRXhoYldKa1lRQk5kUUJPZEds''@;'; put 'put ''c1pHVUFUblVBVDBWc2FXY0FUMkZqZFhSbEFFOWphWEpqQUU5bmNtRjJaUUJQYldWbllRQlBiV2xqY205dUFFOXpiR0Z6YUFCUGRHbHNaR1VBVDNWdGJBQlFhR2tBVUdrQVVISnBiV1VBVUhOcEFGSm9id0JUWTJGeWIyNEFVMmxuYldFQVZFaFBVazRBVkdGMUFGUm9aWFJoQUZWaFkzVjBaUUJW''@;'; put 'put ''WTJseVl3QlZaM0poZG1VQVZYQnphV3h2YmdCVmRXMXNBRmhwQUZsaFkzVjBaUUJaZFcxc0FGcGxkR0VBWVdGamRYUmxBR0ZqYVhKakFHRmpkWFJsQUdGbGJHbG5BR0ZuY21GMlpRQmhiR1ZtYzNsdEFHRnNjR2hoQUdGdGNBQmhibVFBWVc1bkFHRnlhVzVuQUdGemVXMXdBR0YwYVd4a1pRQmhk''@;'; put 'put ''VzFzQUdKa2NYVnZBR0psZEdFQVluSjJZbUZ5QUdKMWJHd0FZMkZ3QUdOalpXUnBiQUJqWldScGJBQmpaVzUwQUdOb2FRQmphWEpqQUdOc2RXSnpBR052Ym1jQVkyOXdlUUJqY21GeWNnQmpkWEFBWTNWeWNtVnVBR1JCY25JQVpHRm5aMlZ5QUdSaGNuSUFaR1ZuQUdSbGJIUmhBR1JwWVcxekFH''@;'; put 'put ''UnBkbWxrWlFCbFlXTjFkR1VBWldOcGNtTUFaV2R5WVhabEFHVnRjSFI1QUdWdGMzQUFaVzV6Y0FCbGNITnBiRzl1QUdWeGRXbDJBR1YwWVFCbGRHZ0FaWFZ0YkFCbGRYSnZBR1Y0YVhOMEFHWnViMllBWm05eVlXeHNBR1p5WVdNeE1nQm1jbUZqTVRRQVpuSmhZek0wQUdaeVlYTnNBR2RoYlcx''@;'; put 'put ''aEFHZGxBR2QwQUdoQmNuSUFhR0Z5Y2dCb1pXRnlkSE1BYUdWc2JHbHdBR2xoWTNWMFpRQnBZMmx5WXdCcFpYaGpiQUJwWjNKaGRtVUFhVzFoWjJVQWFXNW1hVzRBYVc1MEFHbHZkR0VBYVhGMVpYTjBBR2x6YVc0QWFYVnRiQUJyWVhCd1lRQnNRWEp5QUd4aGJXSmtZUUJzWVc1bkFHeGhjWFZ2''@;'; put 'put ''QUd4aGNuSUFiR05sYVd3QWJHUnhkVzhBYkdVQWJHWnNiMjl5QUd4dmQyRnpkQUJzYjNvQWJISnRBR3h6WVhGMWJ3QnNjM0YxYndCc2RBQnRZV055QUcxa1lYTm9BRzFwWTNKdkFHMXBaR1J2ZEFCdGRRQnVZV0pzWVFCdVluTndBRzVrWVhOb0FHNWxBRzVwQUc1dmRBQnViM1JwYmdCdWMzVmlB''@;'; put 'put ''RzUwYVd4a1pRQnVkUUJ2WVdOMWRHVUFiMk5wY21NQWIyVnNhV2NBYjJkeVlYWmxBRzlzYVc1bEFHOXRaV2RoQUc5dGFXTnliMjRBYjNCc2RYTUFiM0lBYjNKa1pnQnZjbVJ0QUc5emJHRnphQUJ2ZEdsc1pHVUFiM1JwYldWekFHOTFiV3dBY0dGeVlRQndZWEowQUhCbGNtMXBiQUJ3WlhKd0FI''@;'; put 'put ''Qm9hUUJ3YVFCd2FYWUFjR3gxYzIxdUFIQnZkVzVrQUhCeWFXMWxBSEJ5YjJRQWNISnZjQUJ3YzJrQWNYVnZkQUJ5UVhKeUFISmhaR2xqQUhKaGJtY0FjbUZ4ZFc4QWNtRnljZ0J5WTJWcGJBQnlaSEYxYndCeVpXRnNBSEpsWndCeVpteHZiM0lBY21odkFISnNiUUJ5YzJGeGRXOEFjbk54ZFc4''@;'; put 'put ''QWMySnhkVzhBYzJOaGNtOXVBSE5rYjNRQWMyVmpkQUJ6YUhrQWMybG5iV0VBYzJsbmJXRm1BSE5wYlFCemNHRmtaWE1BYzNWaUFITjFZbVVBYzNWdEFITjFjQUJ6ZFhBeEFITjFjRElBYzNWd013QnpkWEJsQUhONmJHbG5BSFJoZFFCMGFHVnlaVFFBZEdobGRHRUFkR2hsZEdGemVXMEFkR2hw''@;'; put 'put ''Ym5Od0FIUm9iM0p1QUhScGJHUmxBSFJwYldWekFIUnlZV1JsQUhWQmNuSUFkV0ZqZFhSbEFIVmhjbklBZFdOcGNtTUFkV2R5WVhabEFIVnRiQUIxY0hOcGFBQjFjSE5wYkc5dUFIVjFiV3dBZDJWcFpYSndBSGhwQUhsaFkzVjBaUUI1Wlc0QWVYVnRiQUI2WlhSaEFIcDNhZ0I2ZDI1cUFGVlVS''@;'; put 'put ''amdnWTI5a1pYTWdQaUEwSUdKNWRHVnpJR0Z5WlNCdWIzUWdZM1Z5Y21WdWRHeDVJSE4xY0hCdmNuUmxaQ0FvWjNKaGNHZ2dKWE1wSUMwZ2RISmxZWFJsWkNCaGN5Qk1ZWFJwYmkweExpQlFaWEpvWVhCeklDSXRSMk5vWVhKelpYUTliR0YwYVc0eElpQnBjeUJ1WldWa1pXUS9DZ0JKYm5aaGJH''@;'; put 'put ''bGtJQ1ZrTFdKNWRHVWdWVlJHT0NCbWIzVnVaQ0JwYmlCcGJuQjFkQ0J2WmlCbmNtRndhQ0FsY3lBdElIUnlaV0YwWldRZ1lYTWdUR0YwYVc0dE1TNGdVR1Z5YUdGd2N5QWlMVWRqYUdGeWMyVjBQV3hoZEdsdU1TSWdhWE1nYm1WbFpHVmtQd29BWW5vdWMybDZaUUJ2ZG1WeWJHRndYMkpsZW1s''@;'; put 'put ''bGNnQjFjblpsWkFCdmJYQnZkVzVrQUdGc2MyVUFhVzVsQUc5dVpRQnZBSEowYUc4QWIyeDViR2x1WlFCd2JHbHVaUUJ5ZFdVQVpYTUFWVzVyYm05M2JpQWljM0JzYVc1bGN5SWdkbUZzZFdVNklDSWxjeUlnTFNCcFoyNXZjbVZrQ2dCemNHeHBibVZ6QUc5a1lnQlBjblJvYjJkdmJtRnNJR1Zr''@;'; put 'put ''WjJWeklHUnZJRzV2ZENCamRYSnlaVzUwYkhrZ2FHRnVaR3hsSUdWa1oyVWdiR0ZpWld4ekxpQlVjbmtnZFhOcGJtY2dlR3hoWW1Wc2N5NEtBRzl5ZEdodklDVnpJQ1Z6Q2dCamFHRnVhUUJ2Y25Sb2J5NWpBR05vWVc1VFpXRnlZMmdBWTNBQUpTVWhVRk10UVdSdlltVXRNaTR3Q2lVbEpTVkNi''@;'; put 'put ''M1Z1WkdsdVowSnZlRG9nS0dGMFpXNWtLUW92Y0c5cGJuUWdld29nSUM5WklHVjRZMmdnWkdWbUNpQWdMMWdnWlhoamFDQmtaV1lLSUNCdVpYZHdZWFJvQ2lBZ1dDQlpJRE1nTUNBek5qQWdZWEpqSUdacGJHd0tmU0JrWldZS0wyTmxiR3dnZXdvZ0lDOVpJR1Y0WTJnZ1pHVm1DaUFnTDFnZ1pY''@;'; put 'put ''aGphQ0JrWldZS0lDQXZlU0JsZUdOb0lHUmxaZ29nSUM5NElHVjRZMmdnWkdWbUNpQWdibVYzY0dGMGFBb2dJSGdnZVNCdGIzWmxkRzhLSUNCNElGa2diR2x1WlhSdkNpQWdXQ0JaSUd4cGJtVjBid29nSUZnZ2VTQnNhVzVsZEc4S0lDQmpiRzl6WlhCaGRHZ2djM1J5YjJ0bENuMGdaR1ZtQ2k5''@;'; put 'put ''dWIyUmxJSHNLSUM5MUlHVjRZMmdnWkdWbUNpQXZjaUJsZUdOb0lHUmxaZ29nTDJRZ1pYaGphQ0JrWldZS0lDOXNJR1Y0WTJnZ1pHVm1DaUJ1Wlhkd1lYUm9JR3dnWkNCdGIzWmxkRzhLSUhJZ1pDQnNhVzVsZEc4Z2NpQjFJR3hwYm1WMGJ5QnNJSFVnYkdsdVpYUnZDaUJqYkc5elpYQmhkR2dn''@;'; put 'put ''Wm1sc2JBcDlJR1JsWmdvS0FDVmtJQ1ZrSUhSeVlXNXpiR0YwWlFvQU1DNDRJREF1T0NBd0xqZ2djMlYwY21kaVkyOXNiM0lLQUhOb2IzZHdZV2RsQ2lVbEpTVlVjbUZwYkdWeUNpVWxKU1ZDYjNWdVpHbHVaMEp2ZURvZ0pXUWdKV1FnSldRZ0pXUUtBRzVsZDNCaGRHZ2dKV1FnSldRZ2JXOTJa''@;'; put 'put ''WFJ2Q2dBbFpDQWxaQ0JzYVc1bGRHOEtBQ1ZrSUNWa0lHeHBibVYwYnlCemRISnZhMlVLQUdOb1lXNXVaV3dnSldRZ0tDVm1MQ1ZtS1FvQUlDMCtDZ0FnSUNBZ0lBQW9LQ1ZtTENWbUtTd29KV1lzSldZcEtTQWxjeUFsY3dCQ1gxSkpSMGhVQUVKZlJFOVhUZ0JDWDB4RlJsUUFRbDlWVUFCQ1gw''@;'; put 'put ''NVBSRVVBYzJWbkFHNWxlSFJmYzJWbkFHUmxZMmxrWlY5d2IybHVkQUJwYm1OdmJYQmhjbUZpYkdVZ2MyVm5iV1Z1ZEhNZ0lTRWdMUzBnUVdKdmNuUnBibWNLQUhNeExUNWpiMjF0WDJOdmIzSmtQVDF6TWkwK1kyOXRiVjlqYjI5eVpBQnBjMTl3WVhKaGJHeGxiQUJuY21Gd2FDQkhJSHNLQUNC''@;'; put 'put ''dWIyUmxXM05vWVhCbFBYQnZhVzUwWFFvQUlDQWxaQ0JiY0c5elBTSWxaQ3dsWkNKZENnQWdJQ1ZrSUMwdElDVmtXMnhsYmowaUpXWWlYUW9BZlFvQVkyOXNiM0lnSlhNQUpYTWdhWE1nYm05MElHRWdhMjV2ZDI0Z1kyOXNiM0l1Q2dCbGNuSnZjaUJwYmlCamIyeDRiR0YwWlNncENnQnpiMnhw''@;'; put 'put ''WkFCcGJuWnBjMmxpYkdVQVltOXNaQUJ6WlhSc2FXNWxkMmxrZEdnQVptbHNiR1ZrQUhWdVptbHNiR1ZrQUhSaGNHVnlaV1FBWjNaeVpXNWtaWEpmYzJWMFgzTjBlV3hsT2lCMWJuTjFjSEJ2Y25SbFpDQnpkSGxzWlNBbGN5QXRJR2xuYm05eWFXNW5DZ0JuZG5KbGJtUmxjaTVqQUdkMmNtVnVa''@;'; put 'put ''R1Z5WDNWelpYSnphR0Z3WlFCdVlXMWxBRzVoYldWYk1GMEFZbTkwYUFCc1lYbHZkWFFBVEdGNWIzVjBJSFI1Y0dVNklDSWxjeUlnYm05MElISmxZMjluYm1sNlpXUXVJRlZ6WlNCdmJtVWdiMlk2SlhNS0FHcHZZZ0JuZG14dllXUnBiV0ZuWlM1akFHZDJiRzloWkdsdFlXZGxBSFZ6QUhWekxU''@;'; put 'put ''NXVZVzFsQUhWekxUNXVZVzFsV3pCZEFFNXZJR3h2WVdScGJXRm5aU0J3YkhWbmFXNGdabTl5SUNJbGN5SUtBRkVBVEdWbWRBQkxVRjlNWldaMEFGSnBaMmgwQUV0UVgxSnBaMmgwQUZWd0FFdFFYMVZ3QUVSdmQyNEFTMUJmUkc5M2JnQndiSFZ6QUV0UVgwRmtaQUJ0YVc1MWN3QkxVRjlUZFdK''@;'; put 'put ''MGNtRmpkQUJHQUdWa1oyVUFkR0ZwYkhCdmNuUUFhR1ZoWkhCdmNuUUFhMlY1QUZWU1RBQnViMlJsQUdScFozSmhjR2dBWjNKaGNHZ0FjM1ZpWjNKaGNHZ0FYMHhVV0Y5c2FXSnlZWEo1QUhSbGVIUnNZWGx2ZFhRQWIySnFjQzArYkdKc0FIaHNZV0psYkhNdVl3QjRiR0ZrYW5WemRBQjRiR2x1''@;'; put 'put ''ZEdWeWMyVmpkR2x2Ym5NQWJIQWdJVDBnWTJ4d0FHZGxkR2x1ZEhKemVHa0FiMkpxY0RFdFBuTjZMbmdnUFQwZ01DQW1KaUJ2WW1wd01TMCtjM291ZVNBOVBTQXdBR3hpYkdWdVkyeHZjMmx1WndCMmNBQjRiR2hrZUhWdWJHOWhaQUJ6YVhwbFBUMW1jbVZsWkFCeVpXTjBMbUp2ZFc1a1lYSjVX''@;'; put 'put ''ekpkSUR3Z1NVNVVYMDFCV0FCdlltcHdiSEJ0YTNNQWNtVmpkQzVpYjNWdVpHRnllVnN6WFNBOElFbE9WRjlOUVZnQWIzVjBJRzltSUcxbGJXOXllUW9BSXlVeWVDVXllQ1V5ZUNVeWVBQWxiR1lsYkdZbGJHWUFMMkZqWTJWdWRETXZNUUF2WVdOalpXNTBNeTh5QUM5aFkyTmxiblF6THpNQUwy''@;'; put 'put ''RmpZMlZ1ZERRdk1RQXZZV05qWlc1ME5DOHlBQzloWTJObGJuUTBMek1BTDJGalkyVnVkRFF2TkFBdllXTmpaVzUwTlM4eEFDOWhZMk5sYm5RMUx6SUFMMkZqWTJWdWREVXZNd0F2WVdOalpXNTBOUzgwQUM5aFkyTmxiblExTHpVQUwyRmpZMlZ1ZERZdk1RQXZZV05qWlc1ME5pOHlBQzloWTJO''@;'; put 'put ''bGJuUTJMek1BTDJGalkyVnVkRFl2TkFBdllXTmpaVzUwTmk4MUFDOWhZMk5sYm5RMkx6WUFMMkZqWTJWdWREY3ZNUUF2WVdOalpXNTBOeTh5QUM5aFkyTmxiblEzTHpNQUwyRmpZMlZ1ZERjdk5BQXZZV05qWlc1ME55ODFBQzloWTJObGJuUTNMellBTDJGalkyVnVkRGN2TndBdllXTmpaVzUw''@;'; put 'put ''T0M4eEFDOWhZMk5sYm5RNEx6SUFMMkZqWTJWdWREZ3ZNd0F2WVdOalpXNTBPQzgwQUM5aFkyTmxiblE0THpVQUwyRmpZMlZ1ZERndk5nQXZZV05qWlc1ME9DODNBQzloWTJObGJuUTRMemdBTDJKc2RXVnpNeTh4QUM5aWJIVmxjek12TWdBdllteDFaWE16THpNQUwySnNkV1Z6TkM4eEFDOWli''@;'; put 'put ''SFZsY3pRdk1nQXZZbXgxWlhNMEx6TUFMMkpzZFdWek5DODBBQzlpYkhWbGN6VXZNUUF2WW14MVpYTTFMeklBTDJKc2RXVnpOUzh6QUM5aWJIVmxjelV2TkFBdllteDFaWE0xTHpVQUwySnNkV1Z6Tmk4eEFDOWliSFZsY3pZdk1nQXZZbXgxWlhNMkx6TUFMMkpzZFdWek5pODBBQzlpYkhWbGN6''@;'; put 'put ''WXZOUUF2WW14MVpYTTJMellBTDJKc2RXVnpOeTh4QUM5aWJIVmxjemN2TWdBdllteDFaWE0zTHpNQUwySnNkV1Z6Tnk4MEFDOWliSFZsY3pjdk5RQXZZbXgxWlhNM0x6WUFMMkpzZFdWek55ODNBQzlpYkhWbGN6Z3ZNUUF2WW14MVpYTTRMeklBTDJKc2RXVnpPQzh6QUM5aWJIVmxjemd2TkFB''@;'; put 'put ''dllteDFaWE00THpVQUwySnNkV1Z6T0M4MkFDOWliSFZsY3pndk53QXZZbXgxWlhNNEx6Z0FMMkpzZFdWek9TOHhBQzlpYkhWbGN6a3ZNZ0F2WW14MVpYTTVMek1BTDJKc2RXVnpPUzgwQUM5aWJIVmxjemt2TlFBdllteDFaWE01THpZQUwySnNkV1Z6T1M4M0FDOWliSFZsY3prdk9BQXZZbXgx''@;'; put 'put ''WlhNNUx6a0FMMkp5WW1jeE1DOHhBQzlpY21Kbk1UQXZNVEFBTDJKeVltY3hNQzh5QUM5aWNtSm5NVEF2TXdBdlluSmlaekV3THpRQUwySnlZbWN4TUM4MUFDOWljbUpuTVRBdk5nQXZZbkppWnpFd0x6Y0FMMkp5WW1jeE1DODRBQzlpY21Kbk1UQXZPUUF2WW5KaVp6RXhMekVBTDJKeVltY3hN''@;'; put 'put ''Uzh4TUFBdlluSmlaekV4THpFeEFDOWljbUpuTVRFdk1nQXZZbkppWnpFeEx6TUFMMkp5WW1jeE1TODBBQzlpY21Kbk1URXZOUUF2WW5KaVp6RXhMellBTDJKeVltY3hNUzgzQUM5aWNtSm5NVEV2T0FBdlluSmlaekV4THprQUwySnlZbWN6THpFQUwySnlZbWN6THpJQUwySnlZbWN6THpNQUwy''@;'; put 'put ''SnlZbWMwTHpFQUwySnlZbWMwTHpJQUwySnlZbWMwTHpNQUwySnlZbWMwTHpRQUwySnlZbWMxTHpFQUwySnlZbWMxTHpJQUwySnlZbWMxTHpNQUwySnlZbWMxTHpRQUwySnlZbWMxTHpVQUwySnlZbWMyTHpFQUwySnlZbWMyTHpJQUwySnlZbWMyTHpNQUwySnlZbWMyTHpRQUwySnlZbWMyTHpV''@;'; put 'put ''QUwySnlZbWMyTHpZQUwySnlZbWMzTHpFQUwySnlZbWMzTHpJQUwySnlZbWMzTHpNQUwySnlZbWMzTHpRQUwySnlZbWMzTHpVQUwySnlZbWMzTHpZQUwySnlZbWMzTHpjQUwySnlZbWM0THpFQUwySnlZbWM0THpJQUwySnlZbWM0THpNQUwySnlZbWM0THpRQUwySnlZbWM0THpVQUwySnlZbWM0''@;'; put 'put ''THpZQUwySnlZbWM0THpjQUwySnlZbWM0THpnQUwySnlZbWM1THpFQUwySnlZbWM1THpJQUwySnlZbWM1THpNQUwySnlZbWM1THpRQUwySnlZbWM1THpVQUwySnlZbWM1THpZQUwySnlZbWM1THpjQUwySnlZbWM1THpnQUwySnlZbWM1THprQUwySjFaMjR6THpFQUwySjFaMjR6THpJQUwySjFa''@;'; put 'put ''MjR6THpNQUwySjFaMjQwTHpFQUwySjFaMjQwTHpJQUwySjFaMjQwTHpNQUwySjFaMjQwTHpRQUwySjFaMjQxTHpFQUwySjFaMjQxTHpJQUwySjFaMjQxTHpNQUwySjFaMjQxTHpRQUwySjFaMjQxTHpVQUwySjFaMjQyTHpFQUwySjFaMjQyTHpJQUwySjFaMjQyTHpNQUwySjFaMjQyTHpRQUwy''@;'; put 'put ''SjFaMjQyTHpVQUwySjFaMjQyTHpZQUwySjFaMjQzTHpFQUwySjFaMjQzTHpJQUwySjFaMjQzTHpNQUwySjFaMjQzTHpRQUwySjFaMjQzTHpVQUwySjFaMjQzTHpZQUwySjFaMjQzTHpjQUwySjFaMjQ0THpFQUwySjFaMjQ0THpJQUwySjFaMjQ0THpNQUwySjFaMjQ0THpRQUwySjFaMjQ0THpV''@;'; put 'put ''QUwySjFaMjQ0THpZQUwySjFaMjQ0THpjQUwySjFaMjQ0THpnQUwySjFaMjQ1THpFQUwySjFaMjQ1THpJQUwySjFaMjQ1THpNQUwySjFaMjQ1THpRQUwySjFaMjQ1THpVQUwySjFaMjQ1THpZQUwySjFaMjQ1THpjQUwySjFaMjQ1THpnQUwySjFaMjQ1THprQUwySjFjSFV6THpFQUwySjFjSFV6''@;'; put 'put ''THpJQUwySjFjSFV6THpNQUwySjFjSFUwTHpFQUwySjFjSFUwTHpJQUwySjFjSFUwTHpNQUwySjFjSFUwTHpRQUwySjFjSFUxTHpFQUwySjFjSFUxTHpJQUwySjFjSFUxTHpNQUwySjFjSFUxTHpRQUwySjFjSFUxTHpVQUwySjFjSFUyTHpFQUwySjFjSFUyTHpJQUwySjFjSFUyTHpNQUwySjFj''@;'; put 'put ''SFUyTHpRQUwySjFjSFUyTHpVQUwySjFjSFUyTHpZQUwySjFjSFUzTHpFQUwySjFjSFUzTHpJQUwySjFjSFUzTHpNQUwySjFjSFUzTHpRQUwySjFjSFUzTHpVQUwySjFjSFUzTHpZQUwySjFjSFUzTHpjQUwySjFjSFU0THpFQUwySjFjSFU0THpJQUwySjFjSFU0THpNQUwySjFjSFU0THpRQUwy''@;'; put 'put ''SjFjSFU0THpVQUwySjFjSFU0THpZQUwySjFjSFU0THpjQUwySjFjSFU0THpnQUwySjFjSFU1THpFQUwySjFjSFU1THpJQUwySjFjSFU1THpNQUwySjFjSFU1THpRQUwySjFjSFU1THpVQUwySjFjSFU1THpZQUwySjFjSFU1THpjQUwySjFjSFU1THpnQUwySjFjSFU1THprQUwyUmhjbXN5TXk4''@;'; put 'put ''eEFDOWtZWEpyTWpNdk1nQXZaR0Z5YXpJekx6TUFMMlJoY21zeU5DOHhBQzlrWVhKck1qUXZNZ0F2WkdGeWF6STBMek1BTDJSaGNtc3lOQzgwQUM5a1lYSnJNalV2TVFBdlpHRnlhekkxTHpJQUwyUmhjbXN5TlM4ekFDOWtZWEpyTWpVdk5BQXZaR0Z5YXpJMUx6VUFMMlJoY21zeU5pOHhBQzlr''@;'; put 'put ''WVhKck1qWXZNZ0F2WkdGeWF6STJMek1BTDJSaGNtc3lOaTgwQUM5a1lYSnJNall2TlFBdlpHRnlhekkyTHpZQUwyUmhjbXN5Tnk4eEFDOWtZWEpyTWpjdk1nQXZaR0Z5YXpJM0x6TUFMMlJoY21zeU55ODBBQzlrWVhKck1qY3ZOUUF2WkdGeWF6STNMellBTDJSaGNtc3lOeTgzQUM5a1lYSnJN''@;'; put 'put ''amd2TVFBdlpHRnlhekk0THpJQUwyUmhjbXN5T0M4ekFDOWtZWEpyTWpndk5BQXZaR0Z5YXpJNEx6VUFMMlJoY21zeU9DODJBQzlrWVhKck1qZ3ZOd0F2WkdGeWF6STRMemdBTDJkdVluVXpMekVBTDJkdVluVXpMeklBTDJkdVluVXpMek1BTDJkdVluVTBMekVBTDJkdVluVTBMeklBTDJkdVlu''@;'; put 'put ''VTBMek1BTDJkdVluVTBMelFBTDJkdVluVTFMekVBTDJkdVluVTFMeklBTDJkdVluVTFMek1BTDJkdVluVTFMelFBTDJkdVluVTFMelVBTDJkdVluVTJMekVBTDJkdVluVTJMeklBTDJkdVluVTJMek1BTDJkdVluVTJMelFBTDJkdVluVTJMelVBTDJkdVluVTJMellBTDJkdVluVTNMekVBTDJk''@;'; put 'put ''dVluVTNMeklBTDJkdVluVTNMek1BTDJkdVluVTNMelFBTDJkdVluVTNMelVBTDJkdVluVTNMellBTDJkdVluVTNMemNBTDJkdVluVTRMekVBTDJkdVluVTRMeklBTDJkdVluVTRMek1BTDJkdVluVTRMelFBTDJkdVluVTRMelVBTDJkdVluVTRMellBTDJkdVluVTRMemNBTDJkdVluVTRMemdB''@;'; put 'put ''TDJkdVluVTVMekVBTDJkdVluVTVMeklBTDJkdVluVTVMek1BTDJkdVluVTVMelFBTDJkdVluVTVMelVBTDJkdVluVTVMellBTDJkdVluVTVMemNBTDJkdVluVTVMemdBTDJkdVluVTVMemtBTDJkeVpXVnVjek12TVFBdlozSmxaVzV6TXk4eUFDOW5jbVZsYm5Nekx6TUFMMmR5WldWdWN6UXZN''@;'; put 'put ''UUF2WjNKbFpXNXpOQzh5QUM5bmNtVmxibk0wTHpNQUwyZHlaV1Z1Y3pRdk5BQXZaM0psWlc1ek5TOHhBQzluY21WbGJuTTFMeklBTDJkeVpXVnVjelV2TXdBdlozSmxaVzV6TlM4MEFDOW5jbVZsYm5NMUx6VUFMMmR5WldWdWN6WXZNUUF2WjNKbFpXNXpOaTh5QUM5bmNtVmxibk0yTHpNQUwy''@;'; put 'put ''ZHlaV1Z1Y3pZdk5BQXZaM0psWlc1ek5pODFBQzluY21WbGJuTTJMellBTDJkeVpXVnVjemN2TVFBdlozSmxaVzV6Tnk4eUFDOW5jbVZsYm5NM0x6TUFMMmR5WldWdWN6Y3ZOQUF2WjNKbFpXNXpOeTgxQUM5bmNtVmxibk0zTHpZQUwyZHlaV1Z1Y3pjdk53QXZaM0psWlc1ek9DOHhBQzluY21W''@;'; put 'put ''bGJuTTRMeklBTDJkeVpXVnVjemd2TXdBdlozSmxaVzV6T0M4MEFDOW5jbVZsYm5NNEx6VUFMMmR5WldWdWN6Z3ZOZ0F2WjNKbFpXNXpPQzgzQUM5bmNtVmxibk00THpnQUwyZHlaV1Z1Y3prdk1RQXZaM0psWlc1ek9TOHlBQzluY21WbGJuTTVMek1BTDJkeVpXVnVjemt2TkFBdlozSmxaVzV6''@;'; put 'put ''T1M4MUFDOW5jbVZsYm5NNUx6WUFMMmR5WldWdWN6a3ZOd0F2WjNKbFpXNXpPUzg0QUM5bmNtVmxibk01THprQUwyZHlaWGx6TXk4eEFDOW5jbVY1Y3pNdk1nQXZaM0psZVhNekx6TUFMMmR5Wlhsek5DOHhBQzluY21WNWN6UXZNZ0F2WjNKbGVYTTBMek1BTDJkeVpYbHpOQzgwQUM5bmNtVjVj''@;'; put 'put ''elV2TVFBdlozSmxlWE0xTHpJQUwyZHlaWGx6TlM4ekFDOW5jbVY1Y3pVdk5BQXZaM0psZVhNMUx6VUFMMmR5Wlhsek5pOHhBQzluY21WNWN6WXZNZ0F2WjNKbGVYTTJMek1BTDJkeVpYbHpOaTgwQUM5bmNtVjVjell2TlFBdlozSmxlWE0yTHpZQUwyZHlaWGx6Tnk4eEFDOW5jbVY1Y3pjdk1n''@;'; put 'put ''QXZaM0psZVhNM0x6TUFMMmR5Wlhsek55ODBBQzluY21WNWN6Y3ZOUUF2WjNKbGVYTTNMellBTDJkeVpYbHpOeTgzQUM5bmNtVjVjemd2TVFBdlozSmxlWE00THpJQUwyZHlaWGx6T0M4ekFDOW5jbVY1Y3pndk5BQXZaM0psZVhNNEx6VUFMMmR5Wlhsek9DODJBQzluY21WNWN6Z3ZOd0F2WjNK''@;'; put 'put ''bGVYTTRMemdBTDJkeVpYbHpPUzh4QUM5bmNtVjVjemt2TWdBdlozSmxlWE01THpNQUwyZHlaWGx6T1M4MEFDOW5jbVY1Y3prdk5RQXZaM0psZVhNNUx6WUFMMmR5Wlhsek9TODNBQzluY21WNWN6a3ZPQUF2WjNKbGVYTTVMemtBTDI5eVlXNW5aWE16THpFQUwyOXlZVzVuWlhNekx6SUFMMjl5''@;'; put 'put ''WVc1blpYTXpMek1BTDI5eVlXNW5aWE0wTHpFQUwyOXlZVzVuWlhNMEx6SUFMMjl5WVc1blpYTTBMek1BTDI5eVlXNW5aWE0wTHpRQUwyOXlZVzVuWlhNMUx6RUFMMjl5WVc1blpYTTFMeklBTDI5eVlXNW5aWE0xTHpNQUwyOXlZVzVuWlhNMUx6UUFMMjl5WVc1blpYTTFMelVBTDI5eVlXNW5a''@;'; put 'put ''WE0yTHpFQUwyOXlZVzVuWlhNMkx6SUFMMjl5WVc1blpYTTJMek1BTDI5eVlXNW5aWE0yTHpRQUwyOXlZVzVuWlhNMkx6VUFMMjl5WVc1blpYTTJMellBTDI5eVlXNW5aWE0zTHpFQUwyOXlZVzVuWlhNM0x6SUFMMjl5WVc1blpYTTNMek1BTDI5eVlXNW5aWE0zTHpRQUwyOXlZVzVuWlhNM0x6''@;'; put 'put ''VUFMMjl5WVc1blpYTTNMellBTDI5eVlXNW5aWE0zTHpjQUwyOXlZVzVuWlhNNEx6RUFMMjl5WVc1blpYTTRMeklBTDI5eVlXNW5aWE00THpNQUwyOXlZVzVuWlhNNEx6UUFMMjl5WVc1blpYTTRMelVBTDI5eVlXNW5aWE00THpZQUwyOXlZVzVuWlhNNEx6Y0FMMjl5WVc1blpYTTRMemdBTDI5''@;'; put 'put ''eVlXNW5aWE01THpFQUwyOXlZVzVuWlhNNUx6SUFMMjl5WVc1blpYTTVMek1BTDI5eVlXNW5aWE01THpRQUwyOXlZVzVuWlhNNUx6VUFMMjl5WVc1blpYTTVMellBTDI5eVlXNW5aWE01THpjQUwyOXlZVzVuWlhNNUx6Z0FMMjl5WVc1blpYTTVMemtBTDI5eWNtUXpMekVBTDI5eWNtUXpMeklB''@;'; put 'put ''TDI5eWNtUXpMek1BTDI5eWNtUTBMekVBTDI5eWNtUTBMeklBTDI5eWNtUTBMek1BTDI5eWNtUTBMelFBTDI5eWNtUTFMekVBTDI5eWNtUTFMeklBTDI5eWNtUTFMek1BTDI5eWNtUTFMelFBTDI5eWNtUTFMelVBTDI5eWNtUTJMekVBTDI5eWNtUTJMeklBTDI5eWNtUTJMek1BTDI5eWNtUTJM''@;'; put 'put ''elFBTDI5eWNtUTJMelVBTDI5eWNtUTJMellBTDI5eWNtUTNMekVBTDI5eWNtUTNMeklBTDI5eWNtUTNMek1BTDI5eWNtUTNMelFBTDI5eWNtUTNMelVBTDI5eWNtUTNMellBTDI5eWNtUTNMemNBTDI5eWNtUTRMekVBTDI5eWNtUTRMeklBTDI5eWNtUTRMek1BTDI5eWNtUTRMelFBTDI5eWNt''@;'; put 'put ''UTRMelVBTDI5eWNtUTRMellBTDI5eWNtUTRMemNBTDI5eWNtUTRMemdBTDI5eWNtUTVMekVBTDI5eWNtUTVMeklBTDI5eWNtUTVMek1BTDI5eWNtUTVMelFBTDI5eWNtUTVMelVBTDI5eWNtUTVMellBTDI5eWNtUTVMemNBTDI5eWNtUTVMemdBTDI5eWNtUTVMemtBTDNCaGFYSmxaREV3THpF''@;'; put 'put ''QUwzQmhhWEpsWkRFd0x6RXdBQzl3WVdseVpXUXhNQzh5QUM5d1lXbHlaV1F4TUM4ekFDOXdZV2x5WldReE1DODBBQzl3WVdseVpXUXhNQzgxQUM5d1lXbHlaV1F4TUM4MkFDOXdZV2x5WldReE1DODNBQzl3WVdseVpXUXhNQzg0QUM5d1lXbHlaV1F4TUM4NUFDOXdZV2x5WldReE1TOHhBQzl3''@;'; put 'put ''WVdseVpXUXhNUzh4TUFBdmNHRnBjbVZrTVRFdk1URUFMM0JoYVhKbFpERXhMeklBTDNCaGFYSmxaREV4THpNQUwzQmhhWEpsWkRFeEx6UUFMM0JoYVhKbFpERXhMelVBTDNCaGFYSmxaREV4THpZQUwzQmhhWEpsWkRFeEx6Y0FMM0JoYVhKbFpERXhMemdBTDNCaGFYSmxaREV4THprQUwzQmhh''@;'; put 'put ''WEpsWkRFeUx6RUFMM0JoYVhKbFpERXlMekV3QUM5d1lXbHlaV1F4TWk4eE1RQXZjR0ZwY21Wa01USXZNVElBTDNCaGFYSmxaREV5THpJQUwzQmhhWEpsWkRFeUx6TUFMM0JoYVhKbFpERXlMelFBTDNCaGFYSmxaREV5THpVQUwzQmhhWEpsWkRFeUx6WUFMM0JoYVhKbFpERXlMemNBTDNCaGFY''@;'; put 'put ''SmxaREV5THpnQUwzQmhhWEpsWkRFeUx6a0FMM0JoYVhKbFpETXZNUUF2Y0dGcGNtVmtNeTh5QUM5d1lXbHlaV1F6THpNQUwzQmhhWEpsWkRRdk1RQXZjR0ZwY21Wa05DOHlBQzl3WVdseVpXUTBMek1BTDNCaGFYSmxaRFF2TkFBdmNHRnBjbVZrTlM4eEFDOXdZV2x5WldRMUx6SUFMM0JoYVhK''@;'; put 'put ''bFpEVXZNd0F2Y0dGcGNtVmtOUzgwQUM5d1lXbHlaV1ExTHpVQUwzQmhhWEpsWkRZdk1RQXZjR0ZwY21Wa05pOHlBQzl3WVdseVpXUTJMek1BTDNCaGFYSmxaRFl2TkFBdmNHRnBjbVZrTmk4MUFDOXdZV2x5WldRMkx6WUFMM0JoYVhKbFpEY3ZNUUF2Y0dGcGNtVmtOeTh5QUM5d1lXbHlaV1Ez''@;'; put 'put ''THpNQUwzQmhhWEpsWkRjdk5BQXZjR0ZwY21Wa055ODFBQzl3WVdseVpXUTNMellBTDNCaGFYSmxaRGN2TndBdmNHRnBjbVZrT0M4eEFDOXdZV2x5WldRNEx6SUFMM0JoYVhKbFpEZ3ZNd0F2Y0dGcGNtVmtPQzgwQUM5d1lXbHlaV1E0THpVQUwzQmhhWEpsWkRndk5nQXZjR0ZwY21Wa09DODNB''@;'; put 'put ''Qzl3WVdseVpXUTRMemdBTDNCaGFYSmxaRGt2TVFBdmNHRnBjbVZrT1M4eUFDOXdZV2x5WldRNUx6TUFMM0JoYVhKbFpEa3ZOQUF2Y0dGcGNtVmtPUzgxQUM5d1lXbHlaV1E1THpZQUwzQmhhWEpsWkRrdk53QXZjR0ZwY21Wa09TODRBQzl3WVdseVpXUTVMemtBTDNCaGMzUmxiREV6THpFQUwz''@;'; put 'put ''QmhjM1JsYkRFekx6SUFMM0JoYzNSbGJERXpMek1BTDNCaGMzUmxiREUwTHpFQUwzQmhjM1JsYkRFMEx6SUFMM0JoYzNSbGJERTBMek1BTDNCaGMzUmxiREUwTHpRQUwzQmhjM1JsYkRFMUx6RUFMM0JoYzNSbGJERTFMeklBTDNCaGMzUmxiREUxTHpNQUwzQmhjM1JsYkRFMUx6UUFMM0JoYzNS''@;'; put 'put ''bGJERTFMelVBTDNCaGMzUmxiREUyTHpFQUwzQmhjM1JsYkRFMkx6SUFMM0JoYzNSbGJERTJMek1BTDNCaGMzUmxiREUyTHpRQUwzQmhjM1JsYkRFMkx6VUFMM0JoYzNSbGJERTJMellBTDNCaGMzUmxiREUzTHpFQUwzQmhjM1JsYkRFM0x6SUFMM0JoYzNSbGJERTNMek1BTDNCaGMzUmxiREUz''@;'; put 'put ''THpRQUwzQmhjM1JsYkRFM0x6VUFMM0JoYzNSbGJERTNMellBTDNCaGMzUmxiREUzTHpjQUwzQmhjM1JsYkRFNEx6RUFMM0JoYzNSbGJERTRMeklBTDNCaGMzUmxiREU0THpNQUwzQmhjM1JsYkRFNEx6UUFMM0JoYzNSbGJERTRMelVBTDNCaGMzUmxiREU0THpZQUwzQmhjM1JsYkRFNEx6Y0FM''@;'; put 'put ''M0JoYzNSbGJERTRMemdBTDNCaGMzUmxiREU1THpFQUwzQmhjM1JsYkRFNUx6SUFMM0JoYzNSbGJERTVMek1BTDNCaGMzUmxiREU1THpRQUwzQmhjM1JsYkRFNUx6VUFMM0JoYzNSbGJERTVMellBTDNCaGMzUmxiREU1THpjQUwzQmhjM1JsYkRFNUx6Z0FMM0JoYzNSbGJERTVMemtBTDNCaGMz''@;'; put 'put ''UmxiREl6THpFQUwzQmhjM1JsYkRJekx6SUFMM0JoYzNSbGJESXpMek1BTDNCaGMzUmxiREkwTHpFQUwzQmhjM1JsYkRJMEx6SUFMM0JoYzNSbGJESTBMek1BTDNCaGMzUmxiREkwTHpRQUwzQmhjM1JsYkRJMUx6RUFMM0JoYzNSbGJESTFMeklBTDNCaGMzUmxiREkxTHpNQUwzQmhjM1JsYkRJ''@;'; put 'put ''MUx6UUFMM0JoYzNSbGJESTFMelVBTDNCaGMzUmxiREkyTHpFQUwzQmhjM1JsYkRJMkx6SUFMM0JoYzNSbGJESTJMek1BTDNCaGMzUmxiREkyTHpRQUwzQmhjM1JsYkRJMkx6VUFMM0JoYzNSbGJESTJMellBTDNCaGMzUmxiREkzTHpFQUwzQmhjM1JsYkRJM0x6SUFMM0JoYzNSbGJESTNMek1B''@;'; put 'put ''TDNCaGMzUmxiREkzTHpRQUwzQmhjM1JsYkRJM0x6VUFMM0JoYzNSbGJESTNMellBTDNCaGMzUmxiREkzTHpjQUwzQmhjM1JsYkRJNEx6RUFMM0JoYzNSbGJESTRMeklBTDNCaGMzUmxiREk0THpNQUwzQmhjM1JsYkRJNEx6UUFMM0JoYzNSbGJESTRMelVBTDNCaGMzUmxiREk0THpZQUwzQmhj''@;'; put 'put ''M1JsYkRJNEx6Y0FMM0JoYzNSbGJESTRMemdBTDNCcGVXY3hNQzh4QUM5d2FYbG5NVEF2TVRBQUwzQnBlV2N4TUM4eUFDOXdhWGxuTVRBdk13QXZjR2w1WnpFd0x6UUFMM0JwZVdjeE1DODFBQzl3YVhsbk1UQXZOZ0F2Y0dsNVp6RXdMemNBTDNCcGVXY3hNQzg0QUM5d2FYbG5NVEF2T1FBdmNH''@;'; put 'put ''bDVaekV4THpFQUwzQnBlV2N4TVM4eE1BQXZjR2w1WnpFeEx6RXhBQzl3YVhsbk1URXZNZ0F2Y0dsNVp6RXhMek1BTDNCcGVXY3hNUzgwQUM5d2FYbG5NVEV2TlFBdmNHbDVaekV4THpZQUwzQnBlV2N4TVM4M0FDOXdhWGxuTVRFdk9BQXZjR2w1WnpFeEx6a0FMM0JwZVdjekx6RUFMM0JwZVdj''@;'; put 'put ''ekx6SUFMM0JwZVdjekx6TUFMM0JwZVdjMEx6RUFMM0JwZVdjMEx6SUFMM0JwZVdjMEx6TUFMM0JwZVdjMEx6UUFMM0JwZVdjMUx6RUFMM0JwZVdjMUx6SUFMM0JwZVdjMUx6TUFMM0JwZVdjMUx6UUFMM0JwZVdjMUx6VUFMM0JwZVdjMkx6RUFMM0JwZVdjMkx6SUFMM0JwZVdjMkx6TUFMM0Jw''@;'; put 'put ''ZVdjMkx6UUFMM0JwZVdjMkx6VUFMM0JwZVdjMkx6WUFMM0JwZVdjM0x6RUFMM0JwZVdjM0x6SUFMM0JwZVdjM0x6TUFMM0JwZVdjM0x6UUFMM0JwZVdjM0x6VUFMM0JwZVdjM0x6WUFMM0JwZVdjM0x6Y0FMM0JwZVdjNEx6RUFMM0JwZVdjNEx6SUFMM0JwZVdjNEx6TUFMM0JwZVdjNEx6UUFM''@;'; put 'put ''M0JwZVdjNEx6VUFMM0JwZVdjNEx6WUFMM0JwZVdjNEx6Y0FMM0JwZVdjNEx6Z0FMM0JwZVdjNUx6RUFMM0JwZVdjNUx6SUFMM0JwZVdjNUx6TUFMM0JwZVdjNUx6UUFMM0JwZVdjNUx6VUFMM0JwZVdjNUx6WUFMM0JwZVdjNUx6Y0FMM0JwZVdjNUx6Z0FMM0JwZVdjNUx6a0FMM0J5WjI0eE1D''@;'; put 'put ''OHhBQzl3Y21kdU1UQXZNVEFBTDNCeVoyNHhNQzh5QUM5d2NtZHVNVEF2TXdBdmNISm5iakV3THpRQUwzQnlaMjR4TUM4MUFDOXdjbWR1TVRBdk5nQXZjSEpuYmpFd0x6Y0FMM0J5WjI0eE1DODRBQzl3Y21kdU1UQXZPUUF2Y0hKbmJqRXhMekVBTDNCeVoyNHhNUzh4TUFBdmNISm5iakV4THpF''@;'; put 'put ''eEFDOXdjbWR1TVRFdk1nQXZjSEpuYmpFeEx6TUFMM0J5WjI0eE1TODBBQzl3Y21kdU1URXZOUUF2Y0hKbmJqRXhMellBTDNCeVoyNHhNUzgzQUM5d2NtZHVNVEV2T0FBdmNISm5iakV4THprQUwzQnlaMjR6THpFQUwzQnlaMjR6THpJQUwzQnlaMjR6THpNQUwzQnlaMjQwTHpFQUwzQnlaMjQw''@;'; put 'put ''THpJQUwzQnlaMjQwTHpNQUwzQnlaMjQwTHpRQUwzQnlaMjQxTHpFQUwzQnlaMjQxTHpJQUwzQnlaMjQxTHpNQUwzQnlaMjQxTHpRQUwzQnlaMjQxTHpVQUwzQnlaMjQyTHpFQUwzQnlaMjQyTHpJQUwzQnlaMjQyTHpNQUwzQnlaMjQyTHpRQUwzQnlaMjQyTHpVQUwzQnlaMjQyTHpZQUwzQnla''@;'; put 'put ''MjQzTHpFQUwzQnlaMjQzTHpJQUwzQnlaMjQzTHpNQUwzQnlaMjQzTHpRQUwzQnlaMjQzTHpVQUwzQnlaMjQzTHpZQUwzQnlaMjQzTHpjQUwzQnlaMjQ0THpFQUwzQnlaMjQ0THpJQUwzQnlaMjQ0THpNQUwzQnlaMjQ0THpRQUwzQnlaMjQ0THpVQUwzQnlaMjQ0THpZQUwzQnlaMjQ0THpjQUwz''@;'; put 'put ''QnlaMjQ0THpnQUwzQnlaMjQ1THpFQUwzQnlaMjQ1THpJQUwzQnlaMjQ1THpNQUwzQnlaMjQ1THpRQUwzQnlaMjQ1THpVQUwzQnlaMjQ1THpZQUwzQnlaMjQ1THpjQUwzQnlaMjQ1THpnQUwzQnlaMjQ1THprQUwzQjFZblV6THpFQUwzQjFZblV6THpJQUwzQjFZblV6THpNQUwzQjFZblUwTHpF''@;'; put 'put ''QUwzQjFZblUwTHpJQUwzQjFZblUwTHpNQUwzQjFZblUwTHpRQUwzQjFZblUxTHpFQUwzQjFZblUxTHpJQUwzQjFZblUxTHpNQUwzQjFZblUxTHpRQUwzQjFZblUxTHpVQUwzQjFZblUyTHpFQUwzQjFZblUyTHpJQUwzQjFZblUyTHpNQUwzQjFZblUyTHpRQUwzQjFZblUyTHpVQUwzQjFZblUy''@;'; put 'put ''THpZQUwzQjFZblUzTHpFQUwzQjFZblUzTHpJQUwzQjFZblUzTHpNQUwzQjFZblUzTHpRQUwzQjFZblUzTHpVQUwzQjFZblUzTHpZQUwzQjFZblUzTHpjQUwzQjFZblU0THpFQUwzQjFZblU0THpJQUwzQjFZblU0THpNQUwzQjFZblU0THpRQUwzQjFZblU0THpVQUwzQjFZblU0THpZQUwzQjFZ''@;'; put 'put ''blU0THpjQUwzQjFZblU0THpnQUwzQjFZblU1THpFQUwzQjFZblU1THpJQUwzQjFZblU1THpNQUwzQjFZblU1THpRQUwzQjFZblU1THpVQUwzQjFZblU1THpZQUwzQjFZblU1THpjQUwzQjFZblU1THpnQUwzQjFZblU1THprQUwzQjFZblZuYmpNdk1RQXZjSFZpZFdkdU15OHlBQzl3ZFdKMVoy''@;'; put 'put ''NHpMek1BTDNCMVluVm5ialF2TVFBdmNIVmlkV2R1TkM4eUFDOXdkV0oxWjI0MEx6TUFMM0IxWW5WbmJqUXZOQUF2Y0hWaWRXZHVOUzh4QUM5d2RXSjFaMjQxTHpJQUwzQjFZblZuYmpVdk13QXZjSFZpZFdkdU5TODBBQzl3ZFdKMVoyNDFMelVBTDNCMVluVm5iall2TVFBdmNIVmlkV2R1Tmk4''@;'; put 'put ''eUFDOXdkV0oxWjI0Mkx6TUFMM0IxWW5WbmJqWXZOQUF2Y0hWaWRXZHVOaTgxQUM5d2RXSjFaMjQyTHpZQUwzQjFZblZuYmpjdk1RQXZjSFZpZFdkdU55OHlBQzl3ZFdKMVoyNDNMek1BTDNCMVluVm5iamN2TkFBdmNIVmlkV2R1Tnk4MUFDOXdkV0oxWjI0M0x6WUFMM0IxWW5WbmJqY3ZOd0F2''@;'; put 'put ''Y0hWaWRXZHVPQzh4QUM5d2RXSjFaMjQ0THpJQUwzQjFZblZuYmpndk13QXZjSFZpZFdkdU9DODBBQzl3ZFdKMVoyNDRMelVBTDNCMVluVm5iamd2TmdBdmNIVmlkV2R1T0M4M0FDOXdkV0oxWjI0NEx6Z0FMM0IxWW5WbmJqa3ZNUUF2Y0hWaWRXZHVPUzh5QUM5d2RXSjFaMjQ1THpNQUwzQjFZ''@;'; put 'put ''blZuYmprdk5BQXZjSFZpZFdkdU9TODFBQzl3ZFdKMVoyNDVMellBTDNCMVluVm5iamt2TndBdmNIVmlkV2R1T1M4NEFDOXdkV0oxWjI0NUx6a0FMM0IxYjNJeE1DOHhBQzl3ZFc5eU1UQXZNVEFBTDNCMWIzSXhNQzh5QUM5d2RXOXlNVEF2TXdBdmNIVnZjakV3THpRQUwzQjFiM0l4TUM4MUFD''@;'; put 'put ''OXdkVzl5TVRBdk5nQXZjSFZ2Y2pFd0x6Y0FMM0IxYjNJeE1DODRBQzl3ZFc5eU1UQXZPUUF2Y0hWdmNqRXhMekVBTDNCMWIzSXhNUzh4TUFBdmNIVnZjakV4THpFeEFDOXdkVzl5TVRFdk1nQXZjSFZ2Y2pFeEx6TUFMM0IxYjNJeE1TODBBQzl3ZFc5eU1URXZOUUF2Y0hWdmNqRXhMellBTDNC''@;'; put 'put ''MWIzSXhNUzgzQUM5d2RXOXlNVEV2T0FBdmNIVnZjakV4THprQUwzQjFiM0l6THpFQUwzQjFiM0l6THpJQUwzQjFiM0l6THpNQUwzQjFiM0kwTHpFQUwzQjFiM0kwTHpJQUwzQjFiM0kwTHpNQUwzQjFiM0kwTHpRQUwzQjFiM0kxTHpFQUwzQjFiM0kxTHpJQUwzQjFiM0kxTHpNQUwzQjFiM0kx''@;'; put 'put ''THpRQUwzQjFiM0kxTHpVQUwzQjFiM0kyTHpFQUwzQjFiM0kyTHpJQUwzQjFiM0kyTHpNQUwzQjFiM0kyTHpRQUwzQjFiM0kyTHpVQUwzQjFiM0kyTHpZQUwzQjFiM0kzTHpFQUwzQjFiM0kzTHpJQUwzQjFiM0kzTHpNQUwzQjFiM0kzTHpRQUwzQjFiM0kzTHpVQUwzQjFiM0kzTHpZQUwzQjFi''@;'; put 'put ''M0kzTHpjQUwzQjFiM0k0THpFQUwzQjFiM0k0THpJQUwzQjFiM0k0THpNQUwzQjFiM0k0THpRQUwzQjFiM0k0THpVQUwzQjFiM0k0THpZQUwzQjFiM0k0THpjQUwzQjFiM0k0THpnQUwzQjFiM0k1THpFQUwzQjFiM0k1THpJQUwzQjFiM0k1THpNQUwzQjFiM0k1THpRQUwzQjFiM0k1THpVQUwz''@;'; put 'put ''QjFiM0k1THpZQUwzQjFiM0k1THpjQUwzQjFiM0k1THpnQUwzQjFiM0k1THprQUwzQjFjbVF6THpFQUwzQjFjbVF6THpJQUwzQjFjbVF6THpNQUwzQjFjbVEwTHpFQUwzQjFjbVEwTHpJQUwzQjFjbVEwTHpNQUwzQjFjbVEwTHpRQUwzQjFjbVExTHpFQUwzQjFjbVExTHpJQUwzQjFjbVExTHpN''@;'; put 'put ''QUwzQjFjbVExTHpRQUwzQjFjbVExTHpVQUwzQjFjbVEyTHpFQUwzQjFjbVEyTHpJQUwzQjFjbVEyTHpNQUwzQjFjbVEyTHpRQUwzQjFjbVEyTHpVQUwzQjFjbVEyTHpZQUwzQjFjbVEzTHpFQUwzQjFjbVEzTHpJQUwzQjFjbVEzTHpNQUwzQjFjbVEzTHpRQUwzQjFjbVEzTHpVQUwzQjFjbVEz''@;'; put 'put ''THpZQUwzQjFjbVEzTHpjQUwzQjFjbVE0THpFQUwzQjFjbVE0THpJQUwzQjFjbVE0THpNQUwzQjFjbVE0THpRQUwzQjFjbVE0THpVQUwzQjFjbVE0THpZQUwzQjFjbVE0THpjQUwzQjFjbVE0THpnQUwzQjFjbVE1THpFQUwzQjFjbVE1THpJQUwzQjFjbVE1THpNQUwzQjFjbVE1THpRQUwzQjFj''@;'; put 'put ''bVE1THpVQUwzQjFjbVE1THpZQUwzQjFjbVE1THpjQUwzQjFjbVE1THpnQUwzQjFjbVE1THprQUwzQjFjbkJzWlhNekx6RUFMM0IxY25Cc1pYTXpMeklBTDNCMWNuQnNaWE16THpNQUwzQjFjbkJzWlhNMEx6RUFMM0IxY25Cc1pYTTBMeklBTDNCMWNuQnNaWE0wTHpNQUwzQjFjbkJzWlhNMEx6''@;'; put 'put ''UUFMM0IxY25Cc1pYTTFMekVBTDNCMWNuQnNaWE0xTHpJQUwzQjFjbkJzWlhNMUx6TUFMM0IxY25Cc1pYTTFMelFBTDNCMWNuQnNaWE0xTHpVQUwzQjFjbkJzWlhNMkx6RUFMM0IxY25Cc1pYTTJMeklBTDNCMWNuQnNaWE0yTHpNQUwzQjFjbkJzWlhNMkx6UUFMM0IxY25Cc1pYTTJMelVBTDNC''@;'; put 'put ''MWNuQnNaWE0yTHpZQUwzQjFjbkJzWlhNM0x6RUFMM0IxY25Cc1pYTTNMeklBTDNCMWNuQnNaWE0zTHpNQUwzQjFjbkJzWlhNM0x6UUFMM0IxY25Cc1pYTTNMelVBTDNCMWNuQnNaWE0zTHpZQUwzQjFjbkJzWlhNM0x6Y0FMM0IxY25Cc1pYTTRMekVBTDNCMWNuQnNaWE00THpJQUwzQjFjbkJz''@;'; put 'put ''WlhNNEx6TUFMM0IxY25Cc1pYTTRMelFBTDNCMWNuQnNaWE00THpVQUwzQjFjbkJzWlhNNEx6WUFMM0IxY25Cc1pYTTRMemNBTDNCMWNuQnNaWE00THpnQUwzQjFjbkJzWlhNNUx6RUFMM0IxY25Cc1pYTTVMeklBTDNCMWNuQnNaWE01THpNQUwzQjFjbkJzWlhNNUx6UUFMM0IxY25Cc1pYTTVM''@;'; put 'put ''elVBTDNCMWNuQnNaWE01THpZQUwzQjFjbkJzWlhNNUx6Y0FMM0IxY25Cc1pYTTVMemdBTDNCMWNuQnNaWE01THprQUwzSmtZblV4TUM4eEFDOXlaR0oxTVRBdk1UQUFMM0prWW5VeE1DOHlBQzl5WkdKMU1UQXZNd0F2Y21SaWRURXdMelFBTDNKa1luVXhNQzgxQUM5eVpHSjFNVEF2TmdBdmNt''@;'; put 'put ''UmlkVEV3THpjQUwzSmtZblV4TUM4NEFDOXlaR0oxTVRBdk9RQXZjbVJpZFRFeEx6RUFMM0prWW5VeE1TOHhNQUF2Y21SaWRURXhMekV4QUM5eVpHSjFNVEV2TWdBdmNtUmlkVEV4THpNQUwzSmtZblV4TVM4MEFDOXlaR0oxTVRFdk5RQXZjbVJpZFRFeEx6WUFMM0prWW5VeE1TODNBQzl5WkdK''@;'; put 'put ''MU1URXZPQUF2Y21SaWRURXhMemtBTDNKa1luVXpMekVBTDNKa1luVXpMeklBTDNKa1luVXpMek1BTDNKa1luVTBMekVBTDNKa1luVTBMeklBTDNKa1luVTBMek1BTDNKa1luVTBMelFBTDNKa1luVTFMekVBTDNKa1luVTFMeklBTDNKa1luVTFMek1BTDNKa1luVTFMelFBTDNKa1luVTFMelVB''@;'; put 'put ''TDNKa1luVTJMekVBTDNKa1luVTJMeklBTDNKa1luVTJMek1BTDNKa1luVTJMelFBTDNKa1luVTJMelVBTDNKa1luVTJMellBTDNKa1luVTNMekVBTDNKa1luVTNMeklBTDNKa1luVTNMek1BTDNKa1luVTNMelFBTDNKa1luVTNMelVBTDNKa1luVTNMellBTDNKa1luVTNMemNBTDNKa1luVTRM''@;'; put 'put ''ekVBTDNKa1luVTRMeklBTDNKa1luVTRMek1BTDNKa1luVTRMelFBTDNKa1luVTRMelVBTDNKa1luVTRMellBTDNKa1luVTRMemNBTDNKa1luVTRMemdBTDNKa1luVTVMekVBTDNKa1luVTVMeklBTDNKa1luVTVMek1BTDNKa1luVTVMelFBTDNKa1luVTVMelVBTDNKa1luVTVMellBTDNKa1lu''@;'; put 'put ''VTVMemNBTDNKa1luVTVMemdBTDNKa1luVTVMemtBTDNKa1oza3hNQzh4QUM5eVpHZDVNVEF2TVRBQUwzSmtaM2t4TUM4eUFDOXlaR2Q1TVRBdk13QXZjbVJuZVRFd0x6UUFMM0prWjNreE1DODFBQzl5WkdkNU1UQXZOZ0F2Y21SbmVURXdMemNBTDNKa1oza3hNQzg0QUM5eVpHZDVNVEF2T1FB''@;'; put 'put ''dmNtUm5lVEV4THpFQUwzSmtaM2t4TVM4eE1BQXZjbVJuZVRFeEx6RXhBQzl5WkdkNU1URXZNZ0F2Y21SbmVURXhMek1BTDNKa1oza3hNUzgwQUM5eVpHZDVNVEV2TlFBdmNtUm5lVEV4THpZQUwzSmtaM2t4TVM4M0FDOXlaR2Q1TVRFdk9BQXZjbVJuZVRFeEx6a0FMM0prWjNrekx6RUFMM0pr''@;'; put 'put ''WjNrekx6SUFMM0prWjNrekx6TUFMM0prWjNrMEx6RUFMM0prWjNrMEx6SUFMM0prWjNrMEx6TUFMM0prWjNrMEx6UUFMM0prWjNrMUx6RUFMM0prWjNrMUx6SUFMM0prWjNrMUx6TUFMM0prWjNrMUx6UUFMM0prWjNrMUx6VUFMM0prWjNrMkx6RUFMM0prWjNrMkx6SUFMM0prWjNrMkx6TUFM''@;'; put 'put ''M0prWjNrMkx6UUFMM0prWjNrMkx6VUFMM0prWjNrMkx6WUFMM0prWjNrM0x6RUFMM0prWjNrM0x6SUFMM0prWjNrM0x6TUFMM0prWjNrM0x6UUFMM0prWjNrM0x6VUFMM0prWjNrM0x6WUFMM0prWjNrM0x6Y0FMM0prWjNrNEx6RUFMM0prWjNrNEx6SUFMM0prWjNrNEx6TUFMM0prWjNrNEx6''@;'; put 'put ''UUFMM0prWjNrNEx6VUFMM0prWjNrNEx6WUFMM0prWjNrNEx6Y0FMM0prWjNrNEx6Z0FMM0prWjNrNUx6RUFMM0prWjNrNUx6SUFMM0prWjNrNUx6TUFMM0prWjNrNUx6UUFMM0prWjNrNUx6VUFMM0prWjNrNUx6WUFMM0prWjNrNUx6Y0FMM0prWjNrNUx6Z0FMM0prWjNrNUx6a0FMM0prY0hV''@;'; put 'put ''ekx6RUFMM0prY0hVekx6SUFMM0prY0hVekx6TUFMM0prY0hVMEx6RUFMM0prY0hVMEx6SUFMM0prY0hVMEx6TUFMM0prY0hVMEx6UUFMM0prY0hVMUx6RUFMM0prY0hVMUx6SUFMM0prY0hVMUx6TUFMM0prY0hVMUx6UUFMM0prY0hVMUx6VUFMM0prY0hVMkx6RUFMM0prY0hVMkx6SUFMM0pr''@;'; put 'put ''Y0hVMkx6TUFMM0prY0hVMkx6UUFMM0prY0hVMkx6VUFMM0prY0hVMkx6WUFMM0prY0hVM0x6RUFMM0prY0hVM0x6SUFMM0prY0hVM0x6TUFMM0prY0hVM0x6UUFMM0prY0hVM0x6VUFMM0prY0hVM0x6WUFMM0prY0hVM0x6Y0FMM0prY0hVNEx6RUFMM0prY0hVNEx6SUFMM0prY0hVNEx6TUFM''@;'; put 'put ''M0prY0hVNEx6UUFMM0prY0hVNEx6VUFMM0prY0hVNEx6WUFMM0prY0hVNEx6Y0FMM0prY0hVNEx6Z0FMM0prY0hVNUx6RUFMM0prY0hVNUx6SUFMM0prY0hVNUx6TUFMM0prY0hVNUx6UUFMM0prY0hVNUx6VUFMM0prY0hVNUx6WUFMM0prY0hVNUx6Y0FMM0prY0hVNUx6Z0FMM0prY0hVNUx6''@;'; put 'put ''a0FMM0prZVd4aWRURXdMekVBTDNKa2VXeGlkVEV3THpFd0FDOXlaSGxzWW5VeE1DOHlBQzl5Wkhsc1luVXhNQzh6QUM5eVpIbHNZblV4TUM4MEFDOXlaSGxzWW5VeE1DODFBQzl5Wkhsc1luVXhNQzgyQUM5eVpIbHNZblV4TUM4M0FDOXlaSGxzWW5VeE1DODRBQzl5Wkhsc1luVXhNQzg1QUM5''@;'; put 'put ''eVpIbHNZblV4TVM4eEFDOXlaSGxzWW5VeE1TOHhNQUF2Y21SNWJHSjFNVEV2TVRFQUwzSmtlV3hpZFRFeEx6SUFMM0prZVd4aWRURXhMek1BTDNKa2VXeGlkVEV4THpRQUwzSmtlV3hpZFRFeEx6VUFMM0prZVd4aWRURXhMellBTDNKa2VXeGlkVEV4THpjQUwzSmtlV3hpZFRFeEx6Z0FMM0pr''@;'; put 'put ''ZVd4aWRURXhMemtBTDNKa2VXeGlkVE12TVFBdmNtUjViR0oxTXk4eUFDOXlaSGxzWW5Vekx6TUFMM0prZVd4aWRUUXZNUUF2Y21SNWJHSjFOQzh5QUM5eVpIbHNZblUwTHpNQUwzSmtlV3hpZFRRdk5BQXZjbVI1YkdKMU5TOHhBQzl5Wkhsc1luVTFMeklBTDNKa2VXeGlkVFV2TXdBdmNtUjVi''@;'; put 'put ''R0oxTlM4MEFDOXlaSGxzWW5VMUx6VUFMM0prZVd4aWRUWXZNUUF2Y21SNWJHSjFOaTh5QUM5eVpIbHNZblUyTHpNQUwzSmtlV3hpZFRZdk5BQXZjbVI1YkdKMU5pODFBQzl5Wkhsc1luVTJMellBTDNKa2VXeGlkVGN2TVFBdmNtUjViR0oxTnk4eUFDOXlaSGxzWW5VM0x6TUFMM0prZVd4aWRU''@;'; put 'put ''Y3ZOQUF2Y21SNWJHSjFOeTgxQUM5eVpIbHNZblUzTHpZQUwzSmtlV3hpZFRjdk53QXZjbVI1YkdKMU9DOHhBQzl5Wkhsc1luVTRMeklBTDNKa2VXeGlkVGd2TXdBdmNtUjViR0oxT0M4MEFDOXlaSGxzWW5VNEx6VUFMM0prZVd4aWRUZ3ZOZ0F2Y21SNWJHSjFPQzgzQUM5eVpIbHNZblU0THpn''@;'; put 'put ''QUwzSmtlV3hpZFRrdk1RQXZjbVI1YkdKMU9TOHlBQzl5Wkhsc1luVTVMek1BTDNKa2VXeGlkVGt2TkFBdmNtUjViR0oxT1M4MUFDOXlaSGxzWW5VNUx6WUFMM0prZVd4aWRUa3ZOd0F2Y21SNWJHSjFPUzg0QUM5eVpIbHNZblU1THprQUwzSmtlV3huYmpFd0x6RUFMM0prZVd4bmJqRXdMekV3''@;'; put 'put ''QUM5eVpIbHNaMjR4TUM4eUFDOXlaSGxzWjI0eE1DOHpBQzl5Wkhsc1oyNHhNQzgwQUM5eVpIbHNaMjR4TUM4MUFDOXlaSGxzWjI0eE1DODJBQzl5Wkhsc1oyNHhNQzgzQUM5eVpIbHNaMjR4TUM4NEFDOXlaSGxzWjI0eE1DODVBQzl5Wkhsc1oyNHhNUzh4QUM5eVpIbHNaMjR4TVM4eE1BQXZj''@;'; put 'put ''bVI1YkdkdU1URXZNVEVBTDNKa2VXeG5iakV4THpJQUwzSmtlV3huYmpFeEx6TUFMM0prZVd4bmJqRXhMelFBTDNKa2VXeG5iakV4THpVQUwzSmtlV3huYmpFeEx6WUFMM0prZVd4bmJqRXhMemNBTDNKa2VXeG5iakV4THpnQUwzSmtlV3huYmpFeEx6a0FMM0prZVd4bmJqTXZNUUF2Y21SNWJH''@;'; put 'put ''ZHVNeTh5QUM5eVpIbHNaMjR6THpNQUwzSmtlV3huYmpRdk1RQXZjbVI1YkdkdU5DOHlBQzl5Wkhsc1oyNDBMek1BTDNKa2VXeG5ialF2TkFBdmNtUjViR2R1TlM4eEFDOXlaSGxzWjI0MUx6SUFMM0prZVd4bmJqVXZNd0F2Y21SNWJHZHVOUzgwQUM5eVpIbHNaMjQxTHpVQUwzSmtlV3huYmpZ''@;'; put 'put ''dk1RQXZjbVI1YkdkdU5pOHlBQzl5Wkhsc1oyNDJMek1BTDNKa2VXeG5iall2TkFBdmNtUjViR2R1Tmk4MUFDOXlaSGxzWjI0Mkx6WUFMM0prZVd4bmJqY3ZNUUF2Y21SNWJHZHVOeTh5QUM5eVpIbHNaMjQzTHpNQUwzSmtlV3huYmpjdk5BQXZjbVI1YkdkdU55ODFBQzl5Wkhsc1oyNDNMellB''@;'; put 'put ''TDNKa2VXeG5iamN2TndBdmNtUjViR2R1T0M4eEFDOXlaSGxzWjI0NEx6SUFMM0prZVd4bmJqZ3ZNd0F2Y21SNWJHZHVPQzgwQUM5eVpIbHNaMjQ0THpVQUwzSmtlV3huYmpndk5nQXZjbVI1YkdkdU9DODNBQzl5Wkhsc1oyNDRMemdBTDNKa2VXeG5iamt2TVFBdmNtUjViR2R1T1M4eUFDOXla''@;'; put 'put ''SGxzWjI0NUx6TUFMM0prZVd4bmJqa3ZOQUF2Y21SNWJHZHVPUzgxQUM5eVpIbHNaMjQ1THpZQUwzSmtlV3huYmprdk53QXZjbVI1YkdkdU9TODRBQzl5Wkhsc1oyNDVMemtBTDNKbFpITXpMekVBTDNKbFpITXpMeklBTDNKbFpITXpMek1BTDNKbFpITTBMekVBTDNKbFpITTBMeklBTDNKbFpI''@;'; put 'put ''TTBMek1BTDNKbFpITTBMelFBTDNKbFpITTFMekVBTDNKbFpITTFMeklBTDNKbFpITTFMek1BTDNKbFpITTFMelFBTDNKbFpITTFMelVBTDNKbFpITTJMekVBTDNKbFpITTJMeklBTDNKbFpITTJMek1BTDNKbFpITTJMelFBTDNKbFpITTJMelVBTDNKbFpITTJMellBTDNKbFpITTNMekVBTDNK''@;'; put 'put ''bFpITTNMeklBTDNKbFpITTNMek1BTDNKbFpITTNMelFBTDNKbFpITTNMelVBTDNKbFpITTNMellBTDNKbFpITTNMemNBTDNKbFpITTRMekVBTDNKbFpITTRMeklBTDNKbFpITTRMek1BTDNKbFpITTRMelFBTDNKbFpITTRMelVBTDNKbFpITTRMellBTDNKbFpITTRMemNBTDNKbFpITTRMemdB''@;'; put 'put ''TDNKbFpITTVMekVBTDNKbFpITTVMeklBTDNKbFpITTVMek1BTDNKbFpITTVMelFBTDNKbFpITTVMelVBTDNKbFpITTVMellBTDNKbFpITTVMemNBTDNKbFpITTVMemdBTDNKbFpITTVMemtBTDNObGRERXpMekVBTDNObGRERXpMeklBTDNObGRERXpMek1BTDNObGRERTBMekVBTDNObGRERTBM''@;'; put 'put ''eklBTDNObGRERTBMek1BTDNObGRERTBMelFBTDNObGRERTFMekVBTDNObGRERTFMeklBTDNObGRERTFMek1BTDNObGRERTFMelFBTDNObGRERTFMelVBTDNObGRERTJMekVBTDNObGRERTJMeklBTDNObGRERTJMek1BTDNObGRERTJMelFBTDNObGRERTJMelVBTDNObGRERTJMellBTDNObGRE''@;'; put 'put ''RTNMekVBTDNObGRERTNMeklBTDNObGRERTNMek1BTDNObGRERTNMelFBTDNObGRERTNMelVBTDNObGRERTNMellBTDNObGRERTNMemNBTDNObGRERTRMekVBTDNObGRERTRMeklBTDNObGRERTRMek1BTDNObGRERTRMelFBTDNObGRERTRMelVBTDNObGRERTRMellBTDNObGRERTRMemNBTDNO''@;'; put 'put ''bGRERTRMemdBTDNObGRERTVMekVBTDNObGRERTVMeklBTDNObGRERTVMek1BTDNObGRERTVMelFBTDNObGRERTVMelVBTDNObGRERTVMellBTDNObGRERTVMemNBTDNObGRERTVMemdBTDNObGRERTVMemtBTDNObGRESXpMekVBTDNObGRESXpMeklBTDNObGRESXpMek1BTDNObGRESTBMekVB''@;'; put 'put ''TDNObGRESTBMeklBTDNObGRESTBMek1BTDNObGRESTBMelFBTDNObGRESTFMekVBTDNObGRESTFMeklBTDNObGRESTFMek1BTDNObGRESTFMelFBTDNObGRESTFMelVBTDNObGRESTJMekVBTDNObGRESTJMeklBTDNObGRESTJMek1BTDNObGRESTJMelFBTDNObGRESTJMelVBTDNObGRESTJM''@;'; put 'put ''ellBTDNObGRESTNMekVBTDNObGRESTNMeklBTDNObGRESTNMek1BTDNObGRESTNMelFBTDNObGRESTNMelVBTDNObGRESTNMellBTDNObGRESTNMemNBTDNObGRESTRMekVBTDNObGRESTRMeklBTDNObGRESTRMek1BTDNObGRESTRMelFBTDNObGRESTRMelVBTDNObGRESTRMellBTDNObGRE''@;'; put 'put ''STRMemNBTDNObGRESTRMemdBTDNObGRETXhNQzh4QUM5elpYUXpNVEF2TVRBQUwzTmxkRE14TUM4eUFDOXpaWFF6TVRBdk13QXZjMlYwTXpFd0x6UUFMM05sZERNeE1DODFBQzl6WlhRek1UQXZOZ0F2YzJWME16RXdMemNBTDNObGRETXhNQzg0QUM5elpYUXpNVEF2T1FBdmMyVjBNekV4THpF''@;'; put 'put ''QUwzTmxkRE14TVM4eE1BQXZjMlYwTXpFeEx6RXhBQzl6WlhRek1URXZNZ0F2YzJWME16RXhMek1BTDNObGRETXhNUzgwQUM5elpYUXpNVEV2TlFBdmMyVjBNekV4THpZQUwzTmxkRE14TVM4M0FDOXpaWFF6TVRFdk9BQXZjMlYwTXpFeEx6a0FMM05sZERNeE1pOHhBQzl6WlhRek1USXZNVEFB''@;'; put 'put ''TDNObGRETXhNaTh4TVFBdmMyVjBNekV5THpFeUFDOXpaWFF6TVRJdk1nQXZjMlYwTXpFeUx6TUFMM05sZERNeE1pODBBQzl6WlhRek1USXZOUUF2YzJWME16RXlMellBTDNObGRETXhNaTgzQUM5elpYUXpNVEl2T0FBdmMyVjBNekV5THprQUwzTmxkRE16THpFQUwzTmxkRE16THpJQUwzTmxk''@;'; put 'put ''RE16THpNQUwzTmxkRE0wTHpFQUwzTmxkRE0wTHpJQUwzTmxkRE0wTHpNQUwzTmxkRE0wTHpRQUwzTmxkRE0xTHpFQUwzTmxkRE0xTHpJQUwzTmxkRE0xTHpNQUwzTmxkRE0xTHpRQUwzTmxkRE0xTHpVQUwzTmxkRE0yTHpFQUwzTmxkRE0yTHpJQUwzTmxkRE0yTHpNQUwzTmxkRE0yTHpRQUwz''@;'; put 'put ''TmxkRE0yTHpVQUwzTmxkRE0yTHpZQUwzTmxkRE0zTHpFQUwzTmxkRE0zTHpJQUwzTmxkRE0zTHpNQUwzTmxkRE0zTHpRQUwzTmxkRE0zTHpVQUwzTmxkRE0zTHpZQUwzTmxkRE0zTHpjQUwzTmxkRE00THpFQUwzTmxkRE00THpJQUwzTmxkRE00THpNQUwzTmxkRE00THpRQUwzTmxkRE00THpV''@;'; put 'put ''QUwzTmxkRE00THpZQUwzTmxkRE00THpjQUwzTmxkRE00THpnQUwzTmxkRE01THpFQUwzTmxkRE01THpJQUwzTmxkRE01THpNQUwzTmxkRE01THpRQUwzTmxkRE01THpVQUwzTmxkRE01THpZQUwzTmxkRE01THpjQUwzTmxkRE01THpnQUwzTmxkRE01THprQUwzTndaV04wY21Gc01UQXZNUUF2''@;'; put 'put ''YzNCbFkzUnlZV3d4TUM4eE1BQXZjM0JsWTNSeVlXd3hNQzh5QUM5emNHVmpkSEpoYkRFd0x6TUFMM053WldOMGNtRnNNVEF2TkFBdmMzQmxZM1J5WVd3eE1DODFBQzl6Y0dWamRISmhiREV3THpZQUwzTndaV04wY21Gc01UQXZOd0F2YzNCbFkzUnlZV3d4TUM4NEFDOXpjR1ZqZEhKaGJERXdM''@;'; put 'put ''emtBTDNOd1pXTjBjbUZzTVRFdk1RQXZjM0JsWTNSeVlXd3hNUzh4TUFBdmMzQmxZM1J5WVd3eE1TOHhNUUF2YzNCbFkzUnlZV3d4TVM4eUFDOXpjR1ZqZEhKaGJERXhMek1BTDNOd1pXTjBjbUZzTVRFdk5BQXZjM0JsWTNSeVlXd3hNUzgxQUM5emNHVmpkSEpoYkRFeEx6WUFMM053WldOMGNt''@;'; put 'put ''RnNNVEV2TndBdmMzQmxZM1J5WVd3eE1TODRBQzl6Y0dWamRISmhiREV4THprQUwzTndaV04wY21Gc015OHhBQzl6Y0dWamRISmhiRE12TWdBdmMzQmxZM1J5WVd3ekx6TUFMM053WldOMGNtRnNOQzh4QUM5emNHVmpkSEpoYkRRdk1nQXZjM0JsWTNSeVlXdzBMek1BTDNOd1pXTjBjbUZzTkM4''@;'; put 'put ''MEFDOXpjR1ZqZEhKaGJEVXZNUUF2YzNCbFkzUnlZV3cxTHpJQUwzTndaV04wY21Gc05TOHpBQzl6Y0dWamRISmhiRFV2TkFBdmMzQmxZM1J5WVd3MUx6VUFMM053WldOMGNtRnNOaTh4QUM5emNHVmpkSEpoYkRZdk1nQXZjM0JsWTNSeVlXdzJMek1BTDNOd1pXTjBjbUZzTmk4MEFDOXpjR1Zq''@;'; put 'put ''ZEhKaGJEWXZOUUF2YzNCbFkzUnlZV3cyTHpZQUwzTndaV04wY21Gc055OHhBQzl6Y0dWamRISmhiRGN2TWdBdmMzQmxZM1J5WVd3M0x6TUFMM053WldOMGNtRnNOeTgwQUM5emNHVmpkSEpoYkRjdk5RQXZjM0JsWTNSeVlXdzNMellBTDNOd1pXTjBjbUZzTnk4M0FDOXpjR1ZqZEhKaGJEZ3ZN''@;'; put 'put ''UUF2YzNCbFkzUnlZV3c0THpJQUwzTndaV04wY21Gc09DOHpBQzl6Y0dWamRISmhiRGd2TkFBdmMzQmxZM1J5WVd3NEx6VUFMM053WldOMGNtRnNPQzgyQUM5emNHVmpkSEpoYkRndk53QXZjM0JsWTNSeVlXdzRMemdBTDNOd1pXTjBjbUZzT1M4eEFDOXpjR1ZqZEhKaGJEa3ZNZ0F2YzNCbFkz''@;'; put 'put ''UnlZV3c1THpNQUwzTndaV04wY21Gc09TODBBQzl6Y0dWamRISmhiRGt2TlFBdmMzQmxZM1J5WVd3NUx6WUFMM053WldOMGNtRnNPUzgzQUM5emNHVmpkSEpoYkRrdk9BQXZjM0JsWTNSeVlXdzVMemtBTDNOMlp5OWhiR2xqWldKc2RXVUFMM04yWnk5aGJuUnBjWFZsZDJocGRHVUFMM04yWnk5''@;'; put 'put ''aGNYVmhBQzl6ZG1jdllYRjFZVzFoY21sdVpRQXZjM1puTDJGNmRYSmxBQzl6ZG1jdlltVnBaMlVBTDNOMlp5OWlhWE54ZFdVQUwzTjJaeTlpYkdGamF3QXZjM1puTDJKc1lXNWphR1ZrWVd4dGIyNWtBQzl6ZG1jdllteDFaUUF2YzNabkwySnNkV1YyYVc5c1pYUUFMM04yWnk5aWNtOTNiZ0F2''@;'; put 'put ''YzNabkwySjFjbXg1ZDI5dlpBQXZjM1puTDJOaFpHVjBZbXgxWlFBdmMzWm5MMk5vWVhKMGNtVjFjMlVBTDNOMlp5OWphRzlqYjJ4aGRHVUFMM04yWnk5amIzSmhiQUF2YzNabkwyTnZjbTVtYkc5M1pYSmliSFZsQUM5emRtY3ZZMjl5Ym5OcGJHc0FMM04yWnk5amNtbHRjMjl1QUM5emRtY3ZZ''@;'; put 'put ''M2xoYmdBdmMzWm5MMlJoY210aWJIVmxBQzl6ZG1jdlpHRnlhMk41WVc0QUwzTjJaeTlrWVhKcloyOXNaR1Z1Y205a0FDOXpkbWN2WkdGeWEyZHlZWGtBTDNOMlp5OWtZWEpyWjNKbFpXNEFMM04yWnk5a1lYSnJaM0psZVFBdmMzWm5MMlJoY210cmFHRnJhUUF2YzNabkwyUmhjbXR0WVdkbGJu''@;'; put 'put ''UmhBQzl6ZG1jdlpHRnlhMjlzYVhabFozSmxaVzRBTDNOMlp5OWtZWEpyYjNKaGJtZGxBQzl6ZG1jdlpHRnlhMjl5WTJocFpBQXZjM1puTDJSaGNtdHlaV1FBTDNOMlp5OWtZWEpyYzJGc2JXOXVBQzl6ZG1jdlpHRnlhM05sWVdkeVpXVnVBQzl6ZG1jdlpHRnlhM05zWVhSbFlteDFaUUF2YzNa''@;'; put 'put ''bkwyUmhjbXR6YkdGMFpXZHlZWGtBTDNOMlp5OWtZWEpyYzJ4aGRHVm5jbVY1QUM5emRtY3ZaR0Z5YTNSMWNuRjFiMmx6WlFBdmMzWm5MMlJoY210MmFXOXNaWFFBTDNOMlp5OWtaV1Z3Y0dsdWF3QXZjM1puTDJSbFpYQnphM2xpYkhWbEFDOXpkbWN2WkdsdFozSmhlUUF2YzNabkwyUnBiV2R5''@;'; put 'put ''WlhrQUwzTjJaeTlrYjJSblpYSmliSFZsQUM5emRtY3ZabWx5WldKeWFXTnJBQzl6ZG1jdlpteHZjbUZzZDJocGRHVUFMM04yWnk5bWIzSmxjM1JuY21WbGJnQXZjM1puTDJaMVkyaHphV0VBTDNOMlp5OW5ZV2x1YzJKdmNtOEFMM04yWnk5bmFHOXpkSGRvYVhSbEFDOXpkbWN2WjI5c1pBQXZj''@;'; put 'put ''M1puTDJkdmJHUmxibkp2WkFBdmMzWm5MMmR5WVhrQUwzTjJaeTluY21WbGJnQXZjM1puTDJkeVpXVnVlV1ZzYkc5M0FDOXpkbWN2WjNKbGVRQXZjM1puTDJodmJtVjVaR1YzQUM5emRtY3ZhRzkwY0dsdWF3QXZjM1puTDJsdVpHbGhibkpsWkFBdmMzWm5MMmx1WkdsbmJ3QXZjM1puTDJsMmIz''@;'; put 'put ''SjVBQzl6ZG1jdmEyaGhhMmtBTDNOMlp5OXNZWFpsYm1SbGNnQXZjM1puTDJ4aGRtVnVaR1Z5WW14MWMyZ0FMM04yWnk5c1lYZHVaM0psWlc0QUwzTjJaeTlzWlcxdmJtTm9hV1ptYjI0QUwzTjJaeTlzYVdkb2RHSnNkV1VBTDNOMlp5OXNhV2RvZEdOdmNtRnNBQzl6ZG1jdmJHbG5hSFJqZVdG''@;'; put 'put ''dUFDOXpkbWN2YkdsbmFIUm5iMnhrWlc1eWIyUjVaV3hzYjNjQUwzTjJaeTlzYVdkb2RHZHlZWGtBTDNOMlp5OXNhV2RvZEdkeVpXVnVBQzl6ZG1jdmJHbG5hSFJuY21WNUFDOXpkbWN2YkdsbmFIUndhVzVyQUM5emRtY3ZiR2xuYUhSellXeHRiMjRBTDNOMlp5OXNhV2RvZEhObFlXZHlaV1Z1''@;'; put 'put ''QUM5emRtY3ZiR2xuYUhSemEzbGliSFZsQUM5emRtY3ZiR2xuYUhSemJHRjBaV2R5WVhrQUwzTjJaeTlzYVdkb2RITnNZWFJsWjNKbGVRQXZjM1puTDJ4cFoyaDBjM1JsWld4aWJIVmxBQzl6ZG1jdmJHbG5hSFI1Wld4c2IzY0FMM04yWnk5c2FXMWxBQzl6ZG1jdmJHbHRaV2R5WldWdUFDOXpk''@;'; put 'put ''bWN2YkdsdVpXNEFMM04yWnk5dFlXZGxiblJoQUM5emRtY3ZiV0Z5YjI5dUFDOXpkbWN2YldWa2FYVnRZWEYxWVcxaGNtbHVaUUF2YzNabkwyMWxaR2wxYldKc2RXVUFMM04yWnk5dFpXUnBkVzF2Y21Ob2FXUUFMM04yWnk5dFpXUnBkVzF3ZFhKd2JHVUFMM04yWnk5dFpXUnBkVzF6WldGbmNt''@;'; put 'put ''VmxiZ0F2YzNabkwyMWxaR2wxYlhOc1lYUmxZbXgxWlFBdmMzWm5MMjFsWkdsMWJYTndjbWx1WjJkeVpXVnVBQzl6ZG1jdmJXVmthWFZ0ZEhWeWNYVnZhWE5sQUM5emRtY3ZiV1ZrYVhWdGRtbHZiR1YwY21Wa0FDOXpkbWN2Yldsa2JtbG5hSFJpYkhWbEFDOXpkbWN2YldsdWRHTnlaV0Z0QUM5''@;'; put 'put ''emRtY3ZiV2x6ZEhseWIzTmxBQzl6ZG1jdmJXOWpZMkZ6YVc0QUwzTjJaeTl1WVhaaGFtOTNhR2wwWlFBdmMzWm5MMjVoZG5rQUwzTjJaeTl2YkdSc1lXTmxBQzl6ZG1jdmIyeHBkbVVBTDNOMlp5OXZiR2wyWldSeVlXSUFMM04yWnk5dmNtRnVaMlVBTDNOMlp5OXZjbUZ1WjJWeVpXUUFMM04y''@;'; put 'put ''Wnk5dmNtTm9hV1FBTDNOMlp5OXdZV3hsWjI5c1pHVnVjbTlrQUM5emRtY3ZjR0ZzWldkeVpXVnVBQzl6ZG1jdmNHRnNaWFIxY25GMWIybHpaUUF2YzNabkwzQmhiR1YyYVc5c1pYUnlaV1FBTDNOMlp5OXdZWEJoZVdGM2FHbHdBQzl6ZG1jdmNHVmhZMmh3ZFdabUFDOXpkbWN2Y0dWeWRRQXZj''@;'; put 'put ''M1puTDNCcGJtc0FMM04yWnk5d2JIVnRBQzl6ZG1jdmNHOTNaR1Z5WW14MVpRQXZjM1puTDNCMWNuQnNaUUF2YzNabkwzSmxaQUF2YzNabkwzSnZjM2xpY205M2JnQXZjM1puTDNKdmVXRnNZbXgxWlFBdmMzWm5MM05oWkdSc1pXSnliM2R1QUM5emRtY3ZjMkZzYlc5dUFDOXpkbWN2YzJGdVpI''@;'; put 'put ''bGljbTkzYmdBdmMzWm5MM05sWVdkeVpXVnVBQzl6ZG1jdmMyVmhjMmhsYkd3QUwzTjJaeTl6YVdWdWJtRUFMM04yWnk5emFXeDJaWElBTDNOMlp5OXphM2xpYkhWbEFDOXpkbWN2YzJ4aGRHVmliSFZsQUM5emRtY3ZjMnhoZEdWbmNtRjVBQzl6ZG1jdmMyeGhkR1ZuY21WNUFDOXpkbWN2YzI1''@;'; put 'put ''dmR3QXZjM1puTDNOd2NtbHVaMmR5WldWdUFDOXpkbWN2YzNSbFpXeGliSFZsQUM5emRtY3ZkR0Z1QUM5emRtY3ZkR1ZoYkFBdmMzWm5MM1JvYVhOMGJHVUFMM04yWnk5MGIyMWhkRzhBTDNOMlp5OTBkWEp4ZFc5cGMyVUFMM04yWnk5MmFXOXNaWFFBTDNOMlp5OTNhR1ZoZEFBdmMzWm5MM2Rv''@;'; put 'put ''YVhSbEFDOXpkbWN2ZDJocGRHVnpiVzlyWlFBdmMzWm5MM2xsYkd4dmR3QXZjM1puTDNsbGJHeHZkMmR5WldWdUFDOTViR2R1TXk4eEFDOTViR2R1TXk4eUFDOTViR2R1TXk4ekFDOTViR2R1TkM4eEFDOTViR2R1TkM4eUFDOTViR2R1TkM4ekFDOTViR2R1TkM4MEFDOTViR2R1TlM4eEFDOTVi''@;'; put 'put ''R2R1TlM4eUFDOTViR2R1TlM4ekFDOTViR2R1TlM4MEFDOTViR2R1TlM4MUFDOTViR2R1Tmk4eEFDOTViR2R1Tmk4eUFDOTViR2R1Tmk4ekFDOTViR2R1Tmk4MEFDOTViR2R1Tmk4MUFDOTViR2R1Tmk4MkFDOTViR2R1Tnk4eEFDOTViR2R1Tnk4eUFDOTViR2R1Tnk4ekFDOTViR2R1Tnk4MEFD''@;'; put 'put ''OTViR2R1Tnk4MUFDOTViR2R1Tnk4MkFDOTViR2R1Tnk4M0FDOTViR2R1T0M4eEFDOTViR2R1T0M4eUFDOTViR2R1T0M4ekFDOTViR2R1T0M4MEFDOTViR2R1T0M4MUFDOTViR2R1T0M4MkFDOTViR2R1T0M4M0FDOTViR2R1T0M4NEFDOTViR2R1T1M4eEFDOTViR2R1T1M4eUFDOTViR2R1T1M4''@;'; put 'put ''ekFDOTViR2R1T1M4MEFDOTViR2R1T1M4MUFDOTViR2R1T1M4MkFDOTViR2R1T1M4M0FDOTViR2R1T1M4NEFDOTViR2R1T1M4NUFDOTViR2R1WW5Vekx6RUFMM2xzWjI1aWRUTXZNZ0F2ZVd4bmJtSjFNeTh6QUM5NWJHZHVZblUwTHpFQUwzbHNaMjVpZFRRdk1nQXZlV3huYm1KMU5DOHpBQzk1''@;'; put 'put ''YkdkdVluVTBMelFBTDNsc1oyNWlkVFV2TVFBdmVXeG5ibUoxTlM4eUFDOTViR2R1WW5VMUx6TUFMM2xzWjI1aWRUVXZOQUF2ZVd4bmJtSjFOUzgxQUM5NWJHZHVZblUyTHpFQUwzbHNaMjVpZFRZdk1nQXZlV3huYm1KMU5pOHpBQzk1YkdkdVluVTJMelFBTDNsc1oyNWlkVFl2TlFBdmVXeG5i''@;'; put 'put ''bUoxTmk4MkFDOTViR2R1WW5VM0x6RUFMM2xzWjI1aWRUY3ZNZ0F2ZVd4bmJtSjFOeTh6QUM5NWJHZHVZblUzTHpRQUwzbHNaMjVpZFRjdk5RQXZlV3huYm1KMU55ODJBQzk1YkdkdVluVTNMemNBTDNsc1oyNWlkVGd2TVFBdmVXeG5ibUoxT0M4eUFDOTViR2R1WW5VNEx6TUFMM2xzWjI1aWRU''@;'; put 'put ''Z3ZOQUF2ZVd4bmJtSjFPQzgxQUM5NWJHZHVZblU0THpZQUwzbHNaMjVpZFRndk53QXZlV3huYm1KMU9DODRBQzk1YkdkdVluVTVMekVBTDNsc1oyNWlkVGt2TWdBdmVXeG5ibUoxT1M4ekFDOTViR2R1WW5VNUx6UUFMM2xzWjI1aWRUa3ZOUUF2ZVd4bmJtSjFPUzgyQUM5NWJHZHVZblU1THpj''@;'; put 'put ''QUwzbHNaMjVpZFRrdk9BQXZlV3huYm1KMU9TODVBQzk1Ykc5eVluSXpMekVBTDNsc2IzSmljak12TWdBdmVXeHZjbUp5TXk4ekFDOTViRzl5WW5JMEx6RUFMM2xzYjNKaWNqUXZNZ0F2ZVd4dmNtSnlOQzh6QUM5NWJHOXlZbkkwTHpRQUwzbHNiM0ppY2pVdk1RQXZlV3h2Y21KeU5TOHlBQzk1''@;'; put 'put ''Ykc5eVluSTFMek1BTDNsc2IzSmljalV2TkFBdmVXeHZjbUp5TlM4MUFDOTViRzl5WW5JMkx6RUFMM2xzYjNKaWNqWXZNZ0F2ZVd4dmNtSnlOaTh6QUM5NWJHOXlZbkkyTHpRQUwzbHNiM0ppY2pZdk5RQXZlV3h2Y21KeU5pODJBQzk1Ykc5eVluSTNMekVBTDNsc2IzSmljamN2TWdBdmVXeHZj''@;'; put 'put ''bUp5Tnk4ekFDOTViRzl5WW5JM0x6UUFMM2xzYjNKaWNqY3ZOUUF2ZVd4dmNtSnlOeTgyQUM5NWJHOXlZbkkzTHpjQUwzbHNiM0ppY2pndk1RQXZlV3h2Y21KeU9DOHlBQzk1Ykc5eVluSTRMek1BTDNsc2IzSmljamd2TkFBdmVXeHZjbUp5T0M4MUFDOTViRzl5WW5JNEx6WUFMM2xzYjNKaWNq''@;'; put 'put ''Z3ZOd0F2ZVd4dmNtSnlPQzg0QUM5NWJHOXlZbkk1THpFQUwzbHNiM0ppY2prdk1nQXZlV3h2Y21KeU9TOHpBQzk1Ykc5eVluSTVMelFBTDNsc2IzSmljamt2TlFBdmVXeHZjbUp5T1M4MkFDOTViRzl5WW5JNUx6Y0FMM2xzYjNKaWNqa3ZPQUF2ZVd4dmNtSnlPUzg1QUM5NWJHOXljbVF6THpF''@;'; put 'put ''QUwzbHNiM0p5WkRNdk1nQXZlV3h2Y25Ka015OHpBQzk1Ykc5eWNtUTBMekVBTDNsc2IzSnlaRFF2TWdBdmVXeHZjbkprTkM4ekFDOTViRzl5Y21RMEx6UUFMM2xzYjNKeVpEVXZNUUF2ZVd4dmNuSmtOUzh5QUM5NWJHOXljbVExTHpNQUwzbHNiM0p5WkRVdk5BQXZlV3h2Y25Ka05TODFBQzk1''@;'; put 'put ''Ykc5eWNtUTJMekVBTDNsc2IzSnlaRFl2TWdBdmVXeHZjbkprTmk4ekFDOTViRzl5Y21RMkx6UUFMM2xzYjNKeVpEWXZOUUF2ZVd4dmNuSmtOaTgyQUM5NWJHOXljbVEzTHpFQUwzbHNiM0p5WkRjdk1nQXZlV3h2Y25Ka055OHpBQzk1Ykc5eWNtUTNMelFBTDNsc2IzSnlaRGN2TlFBdmVXeHZj''@;'; put 'put ''bkprTnk4MkFDOTViRzl5Y21RM0x6Y0FMM2xzYjNKeVpEZ3ZNUUF2ZVd4dmNuSmtPQzh5QUM5NWJHOXljbVE0THpNQUwzbHNiM0p5WkRndk5BQXZlV3h2Y25Ka09DODFBQzk1Ykc5eWNtUTRMellBTDNsc2IzSnlaRGd2TndBdmVXeHZjbkprT0M4NEFDOTViRzl5Y21RNUx6RUFMM2xzYjNKeVpE''@;'; put 'put ''a3ZNZ0F2ZVd4dmNuSmtPUzh6QUM5NWJHOXljbVE1THpRQUwzbHNiM0p5WkRrdk5RQXZlV3h2Y25Ka09TODJBQzk1Ykc5eWNtUTVMemNBTDNsc2IzSnlaRGt2T0FBdmVXeHZjbkprT1M4NUFHRnNhV05sWW14MVpRQmhiblJwY1hWbGQyaHBkR1VBWVc1MGFYRjFaWGRvYVhSbE1RQmhiblJwY1hW''@;'; put 'put ''bGQyaHBkR1V5QUdGdWRHbHhkV1YzYUdsMFpUTUFZVzUwYVhGMVpYZG9hWFJsTkFCaGNYVmhiV0Z5YVc1bEFHRnhkV0Z0WVhKcGJtVXhBR0Z4ZFdGdFlYSnBibVV5QUdGeGRXRnRZWEpwYm1VekFHRnhkV0Z0WVhKcGJtVTBBR0Y2ZFhKbEFHRjZkWEpsTVFCaGVuVnlaVElBWVhwMWNtVXpBR0Y2''@;'; put 'put ''ZFhKbE5BQmlaV2xuWlFCaWFYTnhkV1VBWW1semNYVmxNUUJpYVhOeGRXVXlBR0pwYzNGMVpUTUFZbWx6Y1hWbE5BQmliR0Z1WTJobFpHRnNiVzl1WkFCaWJIVmxBR0pzZFdVeEFHSnNkV1V5QUdKc2RXVXpBR0pzZFdVMEFHSnNkV1YyYVc5c1pYUUFZbkp2ZDI0QVluSnZkMjR4QUdKeWIzZHVN''@;'; put 'put ''Z0JpY205M2JqTUFZbkp2ZDI0MEFHSjFjbXg1ZDI5dlpBQmlkWEpzZVhkdmIyUXhBR0oxY214NWQyOXZaRElBWW5WeWJIbDNiMjlrTXdCaWRYSnNlWGR2YjJRMEFHTmhaR1YwWW14MVpRQmpZV1JsZEdKc2RXVXhBR05oWkdWMFlteDFaVElBWTJGa1pYUmliSFZsTXdCallXUmxkR0pzZFdVMEFH''@;'; put 'put ''Tm9ZWEowY21WMWMyVUFZMmhoY25SeVpYVnpaVEVBWTJoaGNuUnlaWFZ6WlRJQVkyaGhjblJ5WlhWelpUTUFZMmhoY25SeVpYVnpaVFFBWTJodlkyOXNZWFJsQUdOb2IyTnZiR0YwWlRFQVkyaHZZMjlzWVhSbE1nQmphRzlqYjJ4aGRHVXpBR05vYjJOdmJHRjBaVFFBWTI5eVlXd0FZMjl5WVd3''@;'; put 'put ''eEFHTnZjbUZzTWdCamIzSmhiRE1BWTI5eVlXdzBBR052Y201bWJHOTNaWEppYkhWbEFHTnZjbTV6YVd4ckFHTnZjbTV6YVd4ck1RQmpiM0p1YzJsc2F6SUFZMjl5Ym5OcGJHc3pBR052Y201emFXeHJOQUJqY21sdGMyOXVBR041WVc0QVkzbGhiakVBWTNsaGJqSUFZM2xoYmpNQVkzbGhialFB''@;'; put 'put ''WkdGeWEyZHZiR1JsYm5KdlpBQmtZWEpyWjI5c1pHVnVjbTlrTVFCa1lYSnJaMjlzWkdWdWNtOWtNZ0JrWVhKcloyOXNaR1Z1Y205a013QmtZWEpyWjI5c1pHVnVjbTlrTkFCa1lYSnJaM0psWlc0QVpHRnlhMnRvWVd0cEFHUmhjbXR2YkdsMlpXZHlaV1Z1QUdSaGNtdHZiR2wyWldkeVpXVnVN''@;'; put 'put ''UUJrWVhKcmIyeHBkbVZuY21WbGJqSUFaR0Z5YTI5c2FYWmxaM0psWlc0ekFHUmhjbXR2YkdsMlpXZHlaV1Z1TkFCa1lYSnJiM0poYm1kbEFHUmhjbXR2Y21GdVoyVXhBR1JoY210dmNtRnVaMlV5QUdSaGNtdHZjbUZ1WjJVekFHUmhjbXR2Y21GdVoyVTBBR1JoY210dmNtTm9hV1FBWkdGeWEy''@;'; put 'put ''OXlZMmhwWkRFQVpHRnlhMjl5WTJocFpESUFaR0Z5YTI5eVkyaHBaRE1BWkdGeWEyOXlZMmhwWkRRQVpHRnlhM05oYkcxdmJnQmtZWEpyYzJWaFozSmxaVzRBWkdGeWEzTmxZV2R5WldWdU1RQmtZWEpyYzJWaFozSmxaVzR5QUdSaGNtdHpaV0ZuY21WbGJqTUFaR0Z5YTNObFlXZHlaV1Z1TkFC''@;'; put 'put ''a1lYSnJjMnhoZEdWaWJIVmxBR1JoY210emJHRjBaV2R5WVhrQVpHRnlhM05zWVhSbFozSmhlVEVBWkdGeWEzTnNZWFJsWjNKaGVUSUFaR0Z5YTNOc1lYUmxaM0poZVRNQVpHRnlhM05zWVhSbFozSmhlVFFBWkdGeWEzTnNZWFJsWjNKbGVRQmtZWEpyZEhWeWNYVnZhWE5sQUdSaGNtdDJhVzlz''@;'; put 'put ''WlhRQVpHVmxjSEJwYm1zQVpHVmxjSEJwYm1zeEFHUmxaWEJ3YVc1ck1nQmtaV1Z3Y0dsdWF6TUFaR1ZsY0hCcGJtczBBR1JsWlhCemEzbGliSFZsQUdSbFpYQnphM2xpYkhWbE1RQmtaV1Z3YzJ0NVlteDFaVElBWkdWbGNITnJlV0pzZFdVekFHUmxaWEJ6YTNsaWJIVmxOQUJrYVcxbmNtRjVB''@;'; put 'put ''R1JwYldkeVpYa0FaRzlrWjJWeVlteDFaUUJrYjJSblpYSmliSFZsTVFCa2IyUm5aWEppYkhWbE1nQmtiMlJuWlhKaWJIVmxNd0JrYjJSblpYSmliSFZsTkFCbWFYSmxZbkpwWTJzQVptbHlaV0p5YVdOck1RQm1hWEpsWW5KcFkyc3lBR1pwY21WaWNtbGphek1BWm1seVpXSnlhV05yTkFCbWJH''@;'; put 'put ''OXlZV3gzYUdsMFpRQm1iM0psYzNSbmNtVmxiZ0JuWVdsdWMySnZjbThBWjJodmMzUjNhR2wwWlFCbmIyeGtBR2R2YkdReEFHZHZiR1F5QUdkdmJHUXpBR2R2YkdRMEFHZHZiR1JsYm5KdlpBQm5iMnhrWlc1eWIyUXhBR2R2YkdSbGJuSnZaRElBWjI5c1pHVnVjbTlrTXdCbmIyeGtaVzV5YjJR''@;'; put 'put ''MEFHZHlZWGtBWjNKaGVUQUFaM0poZVRFQVozSmhlVEV3QUdkeVlYa3hNREFBWjNKaGVURXhBR2R5WVhreE1nQm5jbUY1TVRNQVozSmhlVEUwQUdkeVlYa3hOUUJuY21GNU1UWUFaM0poZVRFM0FHZHlZWGt4T0FCbmNtRjVNVGtBWjNKaGVUSUFaM0poZVRJd0FHZHlZWGt5TVFCbmNtRjVNaklB''@;'; put 'put ''WjNKaGVUSXpBR2R5WVhreU5BQm5jbUY1TWpVQVozSmhlVEkyQUdkeVlYa3lOd0JuY21GNU1qZ0FaM0poZVRJNUFHZHlZWGt6QUdkeVlYa3pNQUJuY21GNU16RUFaM0poZVRNeUFHZHlZWGt6TXdCbmNtRjVNelFBWjNKaGVUTTFBR2R5WVhrek5nQm5jbUY1TXpjQVozSmhlVE00QUdkeVlYa3pP''@;'; put 'put ''UUJuY21GNU5BQm5jbUY1TkRBQVozSmhlVFF4QUdkeVlYazBNZ0JuY21GNU5ETUFaM0poZVRRMEFHZHlZWGswTlFCbmNtRjVORFlBWjNKaGVUUTNBR2R5WVhrME9BQm5jbUY1TkRrQVozSmhlVFVBWjNKaGVUVXdBR2R5WVhrMU1RQm5jbUY1TlRJQVozSmhlVFV6QUdkeVlYazFOQUJuY21GNU5U''@;'; put 'put ''VUFaM0poZVRVMkFHZHlZWGsxTndCbmNtRjVOVGdBWjNKaGVUVTVBR2R5WVhrMkFHZHlZWGsyTUFCbmNtRjVOakVBWjNKaGVUWXlBR2R5WVhrMk13Qm5jbUY1TmpRQVozSmhlVFkxQUdkeVlYazJOZ0JuY21GNU5qY0FaM0poZVRZNEFHZHlZWGsyT1FCbmNtRjVOd0JuY21GNU56QUFaM0poZVRj''@;'; put 'put ''eEFHZHlZWGszTWdCbmNtRjVOek1BWjNKaGVUYzBBR2R5WVhrM05RQm5jbUY1TnpZQVozSmhlVGMzQUdkeVlYazNPQUJuY21GNU56a0FaM0poZVRnQVozSmhlVGd3QUdkeVlYazRNUUJuY21GNU9ESUFaM0poZVRnekFHZHlZWGs0TkFCbmNtRjVPRFVBWjNKaGVUZzJBR2R5WVhrNE53Qm5jbUY1''@;'; put 'put ''T0RnQVozSmhlVGc1QUdkeVlYazVBR2R5WVhrNU1BQm5jbUY1T1RFQVozSmhlVGt5QUdkeVlYazVNd0JuY21GNU9UUUFaM0poZVRrMUFHZHlZWGs1TmdCbmNtRjVPVGNBWjNKaGVUazRBR2R5WVhrNU9RQm5jbVZsYmdCbmNtVmxiakVBWjNKbFpXNHlBR2R5WldWdU13Qm5jbVZsYmpRQVozSmxa''@;'; put 'put ''VzU1Wld4c2IzY0FaM0psZVFCbmNtVjVNQUJuY21WNU1RQm5jbVY1TVRBQVozSmxlVEV3TUFCbmNtVjVNVEVBWjNKbGVURXlBR2R5WlhreE13Qm5jbVY1TVRRQVozSmxlVEUxQUdkeVpYa3hOZ0JuY21WNU1UY0FaM0psZVRFNEFHZHlaWGt4T1FCbmNtVjVNZ0JuY21WNU1qQUFaM0psZVRJeEFH''@;'; put 'put ''ZHlaWGt5TWdCbmNtVjVNak1BWjNKbGVUSTBBR2R5WlhreU5RQm5jbVY1TWpZQVozSmxlVEkzQUdkeVpYa3lPQUJuY21WNU1qa0FaM0psZVRNQVozSmxlVE13QUdkeVpYa3pNUUJuY21WNU16SUFaM0psZVRNekFHZHlaWGt6TkFCbmNtVjVNelVBWjNKbGVUTTJBR2R5Wlhrek53Qm5jbVY1TXpn''@;'; put 'put ''QVozSmxlVE01QUdkeVpYazBBR2R5WlhrME1BQm5jbVY1TkRFQVozSmxlVFF5QUdkeVpYazBNd0JuY21WNU5EUUFaM0psZVRRMUFHZHlaWGswTmdCbmNtVjVORGNBWjNKbGVUUTRBR2R5WlhrME9RQm5jbVY1TlFCbmNtVjVOVEFBWjNKbGVUVXhBR2R5WlhrMU1nQm5jbVY1TlRNQVozSmxlVFUw''@;'; put 'put ''QUdkeVpYazFOUUJuY21WNU5UWUFaM0psZVRVM0FHZHlaWGsxT0FCbmNtVjVOVGtBWjNKbGVUWUFaM0psZVRZd0FHZHlaWGsyTVFCbmNtVjVOaklBWjNKbGVUWXpBR2R5WlhrMk5BQm5jbVY1TmpVQVozSmxlVFkyQUdkeVpYazJOd0JuY21WNU5qZ0FaM0psZVRZNUFHZHlaWGszQUdkeVpYazNN''@;'; put 'put ''QUJuY21WNU56RUFaM0psZVRjeUFHZHlaWGszTXdCbmNtVjVOelFBWjNKbGVUYzFBR2R5WlhrM05nQm5jbVY1TnpjQVozSmxlVGM0QUdkeVpYazNPUUJuY21WNU9BQm5jbVY1T0RBQVozSmxlVGd4QUdkeVpYazRNZ0JuY21WNU9ETUFaM0psZVRnMEFHZHlaWGs0TlFCbmNtVjVPRFlBWjNKbGVU''@;'; put 'put ''ZzNBR2R5WlhrNE9BQm5jbVY1T0RrQVozSmxlVGtBWjNKbGVUa3dBR2R5WlhrNU1RQm5jbVY1T1RJQVozSmxlVGt6QUdkeVpYazVOQUJuY21WNU9UVUFaM0psZVRrMkFHZHlaWGs1TndCbmNtVjVPVGdBWjNKbGVUazVBR2h2Ym1WNVpHVjNBR2h2Ym1WNVpHVjNNUUJvYjI1bGVXUmxkeklBYUc5''@;'; put 'put ''dVpYbGtaWGN6QUdodmJtVjVaR1YzTkFCb2IzUndhVzVyQUdodmRIQnBibXN4QUdodmRIQnBibXN5QUdodmRIQnBibXN6QUdodmRIQnBibXMwQUdsdVpHbGhibkpsWkFCcGJtUnBZVzV5WldReEFHbHVaR2xoYm5KbFpESUFhVzVrYVdGdWNtVmtNd0JwYm1ScFlXNXlaV1EwQUdsdVpHbG5id0Jw''@;'; put 'put ''Ym5acGN3QnBkbTl5ZVFCcGRtOXllVEVBYVhadmNua3lBR2wyYjNKNU13QnBkbTl5ZVRRQWEyaGhhMmtBYTJoaGEya3hBR3RvWVd0cE1nQnJhR0ZyYVRNQWEyaGhhMmswQUd4aGRtVnVaR1Z5QUd4aGRtVnVaR1Z5WW14MWMyZ0FiR0YyWlc1a1pYSmliSFZ6YURFQWJHRjJaVzVrWlhKaWJIVnph''@;'; put 'put ''RElBYkdGMlpXNWtaWEppYkhWemFETUFiR0YyWlc1a1pYSmliSFZ6YURRQWJHRjNibWR5WldWdUFHeGxiVzl1WTJocFptWnZiZ0JzWlcxdmJtTm9hV1ptYjI0eEFHeGxiVzl1WTJocFptWnZiaklBYkdWdGIyNWphR2xtWm05dU13QnNaVzF2Ym1Ob2FXWm1iMjQwQUd4cFoyaDBZbXgxWlFCc2FX''@;'; put 'put ''ZG9kR0pzZFdVeEFHeHBaMmgwWW14MVpUSUFiR2xuYUhSaWJIVmxNd0JzYVdkb2RHSnNkV1UwQUd4cFoyaDBZMjl5WVd3QWJHbG5hSFJqZVdGdUFHeHBaMmgwWTNsaGJqRUFiR2xuYUhSamVXRnVNZ0JzYVdkb2RHTjVZVzR6QUd4cFoyaDBZM2xoYmpRQWJHbG5hSFJuYjJ4a1pXNXliMlFBYkds''@;'; put 'put ''bmFIUm5iMnhrWlc1eWIyUXhBR3hwWjJoMFoyOXNaR1Z1Y205a01nQnNhV2RvZEdkdmJHUmxibkp2WkRNQWJHbG5hSFJuYjJ4a1pXNXliMlEwQUd4cFoyaDBaMjlzWkdWdWNtOWtlV1ZzYkc5M0FHeHBaMmgwWjNKaGVRQnNhV2RvZEdkeVpYa0FiR2xuYUhSd2FXNXJBR3hwWjJoMGNHbHVhekVB''@;'; put 'put ''YkdsbmFIUndhVzVyTWdCc2FXZG9kSEJwYm1zekFHeHBaMmgwY0dsdWF6UUFiR2xuYUhSellXeHRiMjRBYkdsbmFIUnpZV3h0YjI0eEFHeHBaMmgwYzJGc2JXOXVNZ0JzYVdkb2RITmhiRzF2YmpNQWJHbG5hSFJ6WVd4dGIyNDBBR3hwWjJoMGMyVmhaM0psWlc0QWJHbG5hSFJ6YTNsaWJIVmxB''@;'; put 'put ''R3hwWjJoMGMydDVZbXgxWlRFQWJHbG5hSFJ6YTNsaWJIVmxNZ0JzYVdkb2RITnJlV0pzZFdVekFHeHBaMmgwYzJ0NVlteDFaVFFBYkdsbmFIUnpiR0YwWldKc2RXVUFiR2xuYUhSemJHRjBaV2R5WVhrQWJHbG5hSFJ6YkdGMFpXZHlaWGtBYkdsbmFIUnpkR1ZsYkdKc2RXVUFiR2xuYUhSemRH''@;'; put 'put ''VmxiR0pzZFdVeEFHeHBaMmgwYzNSbFpXeGliSFZsTWdCc2FXZG9kSE4wWldWc1lteDFaVE1BYkdsbmFIUnpkR1ZsYkdKc2RXVTBBR3hwWjJoMGVXVnNiRzkzQUd4cFoyaDBlV1ZzYkc5M01RQnNhV2RvZEhsbGJHeHZkeklBYkdsbmFIUjVaV3hzYjNjekFHeHBaMmgwZVdWc2JHOTNOQUJzYVcx''@;'; put 'put ''bFozSmxaVzRBYkdsdVpXNEFiV0ZuWlc1MFlRQnRZV2RsYm5SaE1RQnRZV2RsYm5SaE1nQnRZV2RsYm5SaE13QnRZV2RsYm5SaE5BQnRZWEp2YjI0QWJXRnliMjl1TVFCdFlYSnZiMjR5QUcxaGNtOXZiak1BYldGeWIyOXVOQUJ0WldScGRXMWhjWFZoYldGeWFXNWxBRzFsWkdsMWJXSnNkV1VB''@;'; put 'put ''YldWa2FYVnRiM0pqYUdsa0FHMWxaR2wxYlc5eVkyaHBaREVBYldWa2FYVnRiM0pqYUdsa01nQnRaV1JwZFcxdmNtTm9hV1F6QUcxbFpHbDFiVzl5WTJocFpEUUFiV1ZrYVhWdGNIVnljR3hsQUcxbFpHbDFiWEIxY25Cc1pURUFiV1ZrYVhWdGNIVnljR3hsTWdCdFpXUnBkVzF3ZFhKd2JHVXpB''@;'; put 'put ''RzFsWkdsMWJYQjFjbkJzWlRRQWJXVmthWFZ0YzJWaFozSmxaVzRBYldWa2FYVnRjMnhoZEdWaWJIVmxBRzFsWkdsMWJYTndjbWx1WjJkeVpXVnVBRzFsWkdsMWJYUjFjbkYxYjJselpRQnRaV1JwZFcxMmFXOXNaWFJ5WldRQWJXbGtibWxuYUhSaWJIVmxBRzFwYm5SamNtVmhiUUJ0YVhOMGVY''@;'; put 'put ''SnZjMlVBYldsemRIbHliM05sTVFCdGFYTjBlWEp2YzJVeUFHMXBjM1I1Y205elpUTUFiV2x6ZEhseWIzTmxOQUJ0YjJOallYTnBiZ0J1WVhaaGFtOTNhR2wwWlFCdVlYWmhhbTkzYUdsMFpURUFibUYyWVdwdmQyaHBkR1V5QUc1aGRtRnFiM2RvYVhSbE13QnVZWFpoYW05M2FHbDBaVFFBYm1G''@;'; put 'put ''MmVRQnVZWFo1WW14MVpRQnViMjVsQUc5c1pHeGhZMlVBYjJ4cGRtVmtjbUZpQUc5c2FYWmxaSEpoWWpFQWIyeHBkbVZrY21GaU1nQnZiR2wyWldSeVlXSXpBRzlzYVhabFpISmhZalFBYjNKaGJtZGxBRzl5WVc1blpURUFiM0poYm1kbE1nQnZjbUZ1WjJVekFHOXlZVzVuWlRRQWIzSmhibWRs''@;'; put 'put ''Y21Wa0FHOXlZVzVuWlhKbFpERUFiM0poYm1kbGNtVmtNZ0J2Y21GdVoyVnlaV1F6QUc5eVlXNW5aWEpsWkRRQWIzSmphR2xrQUc5eVkyaHBaREVBYjNKamFHbGtNZ0J2Y21Ob2FXUXpBRzl5WTJocFpEUUFjR0ZzWldkdmJHUmxibkp2WkFCd1lXeGxaM0psWlc0QWNHRnNaV2R5WldWdU1RQndZ''@;'; put 'put ''V3hsWjNKbFpXNHlBSEJoYkdWbmNtVmxiak1BY0dGc1pXZHlaV1Z1TkFCd1lXeGxkSFZ5Y1hWdmFYTmxBSEJoYkdWMGRYSnhkVzlwYzJVeEFIQmhiR1YwZFhKeGRXOXBjMlV5QUhCaGJHVjBkWEp4ZFc5cGMyVXpBSEJoYkdWMGRYSnhkVzlwYzJVMEFIQmhiR1YyYVc5c1pYUnlaV1FBY0dGc1pY''@;'; put 'put ''WnBiMnhsZEhKbFpERUFjR0ZzWlhacGIyeGxkSEpsWkRJQWNHRnNaWFpwYjJ4bGRISmxaRE1BY0dGc1pYWnBiMnhsZEhKbFpEUUFjR0Z3WVhsaGQyaHBjQUJ3WldGamFIQjFabVlBY0dWaFkyaHdkV1ptTVFCd1pXRmphSEIxWm1ZeUFIQmxZV05vY0hWbVpqTUFjR1ZoWTJod2RXWm1OQUJ3WlhK''@;'; put 'put ''MUFIQnBibXNBY0dsdWF6RUFjR2x1YXpJQWNHbHVhek1BY0dsdWF6UUFjR3gxYlFCd2JIVnRNUUJ3YkhWdE1nQndiSFZ0TXdCd2JIVnROQUJ3YjNka1pYSmliSFZsQUhCMWNuQnNaUUJ3ZFhKd2JHVXhBSEIxY25Cc1pUSUFjSFZ5Y0d4bE13QndkWEp3YkdVMEFISmxaQUJ5WldReEFISmxaRElB''@;'; put 'put ''Y21Wa013QnlaV1EwQUhKdmMzbGljbTkzYmdCeWIzTjVZbkp2ZDI0eEFISnZjM2xpY205M2JqSUFjbTl6ZVdKeWIzZHVNd0J5YjNONVluSnZkMjQwQUhKdmVXRnNZbXgxWlFCeWIzbGhiR0pzZFdVeEFISnZlV0ZzWW14MVpUSUFjbTk1WVd4aWJIVmxNd0J5YjNsaGJHSnNkV1UwQUhOaFpHUnNa''@;'; put 'put ''V0p5YjNkdUFITmhiRzF2YmdCellXeHRiMjR4QUhOaGJHMXZiaklBYzJGc2JXOXVNd0J6WVd4dGIyNDBBSE5oYm1SNVluSnZkMjRBYzJWaFozSmxaVzRBYzJWaFozSmxaVzR4QUhObFlXZHlaV1Z1TWdCelpXRm5jbVZsYmpNQWMyVmhaM0psWlc0MEFITmxZWE5vWld4c0FITmxZWE5vWld4c01R''@;'; put 'put ''QnpaV0Z6YUdWc2JESUFjMlZoYzJobGJHd3pBSE5sWVhOb1pXeHNOQUJ6YVdWdWJtRUFjMmxsYm01aE1RQnphV1Z1Ym1FeUFITnBaVzV1WVRNQWMybGxibTVoTkFCemEzbGliSFZsQUhOcmVXSnNkV1V4QUhOcmVXSnNkV1V5QUhOcmVXSnNkV1V6QUhOcmVXSnNkV1UwQUhOc1lYUmxZbXgxWlFC''@;'; put 'put ''emJHRjBaV0pzZFdVeEFITnNZWFJsWW14MVpUSUFjMnhoZEdWaWJIVmxNd0J6YkdGMFpXSnNkV1UwQUhOc1lYUmxaM0poZVFCemJHRjBaV2R5WVhreEFITnNZWFJsWjNKaGVUSUFjMnhoZEdWbmNtRjVNd0J6YkdGMFpXZHlZWGswQUhOc1lYUmxaM0psZVFCemJtOTNBSE51YjNjeEFITnViM2N5''@;'; put 'put ''QUhOdWIzY3pBSE51YjNjMEFITndjbWx1WjJkeVpXVnVBSE53Y21sdVoyZHlaV1Z1TVFCemNISnBibWRuY21WbGJqSUFjM0J5YVc1blozSmxaVzR6QUhOd2NtbHVaMmR5WldWdU5BQnpkR1ZsYkdKc2RXVUFjM1JsWld4aWJIVmxNUUJ6ZEdWbGJHSnNkV1V5QUhOMFpXVnNZbXgxWlRNQWMzUmxa''@;'; put 'put ''V3hpYkhWbE5BQjBZVzRBZEdGdU1RQjBZVzR5QUhSaGJqTUFkR0Z1TkFCMGFHbHpkR3hsQUhSb2FYTjBiR1V4QUhSb2FYTjBiR1V5QUhSb2FYTjBiR1V6QUhSb2FYTjBiR1UwQUhSdmJXRjBid0IwYjIxaGRHOHhBSFJ2YldGMGJ6SUFkRzl0WVhSdk13QjBiMjFoZEc4MEFIUjFjbkYxYjJselpR''@;'; put 'put ''QjBkWEp4ZFc5cGMyVXhBSFIxY25GMWIybHpaVElBZEhWeWNYVnZhWE5sTXdCMGRYSnhkVzlwYzJVMEFIWnBiMnhsZEFCMmFXOXNaWFJ5WldRQWRtbHZiR1YwY21Wa01RQjJhVzlzWlhSeVpXUXlBSFpwYjJ4bGRISmxaRE1BZG1sdmJHVjBjbVZrTkFCM2FHVmhkQUIzYUdWaGRERUFkMmhsWVhR''@;'; put 'put ''eUFIZG9aV0YwTXdCM2FHVmhkRFFBZDJocGRHVUFkMmhwZEdWemJXOXJaUUI1Wld4c2IzY0FlV1ZzYkc5M01RQjVaV3hzYjNjeUFIbGxiR3h2ZHpNQWVXVnNiRzkzTkFCNVpXeHNiM2RuY21WbGJnQnNZV05yQUdocGRHVUFhV2RvZEdkeVpYa0FXREV4THdBdkpYTXZKWE1BYVcxaFoyVnpZMkZz''@;'; put 'put ''WlFCbVlXeHpaUUJpYkdGamF3QmtiM1IwWldRQVpHRnphR1ZrQUdOd0xUNXpjbU1BYUhSdGJIUmhZbXhsTG1NQVpXMXBkRjlvZEcxc1gybHRad0JqY0MwK2MzSmpXekJkQUhSeVlXNXpjR0Z5Wlc1MEFGOGxaQUFsWkFBeUFETUFOQUExQURZQU53QTRBRGtBTVRBQU1URUFNVElBTVRNQU1UUUFN''@;'; put 'put ''VFVBTVRZQU1UY0FNVGdBTVRrQU1qQUFRV2R1YjJSbGFXNW1iMTkwQUVGblpXUm5aV2x1Wm05ZmRBQnliM2RuQUdOdmJHY0FRV2R5WVhCb2FXNW1iMTkwQUdSbGJIZ2dQajBnTUFCd2IzTmZhSFJ0YkY5MFltd0FaR1ZzZVNBK1BTQXdBSFJoWW14bElITnBlbVVnZEc5dklITnRZV3hzSUdadmNp''@;'; put 'put ''QmpiMjUwWlc1MENnQm1hWGhsWkNCMFlXSnNaU0J6YVhwbElIZHBkR2dnZFc1emNHVmphV1pwWldRZ2QybGtkR2dnYjNJZ2FHVnBaMmgwQ2dCalpXeHNJSE5wZW1VZ2RHOXZJSE50WVd4c0lHWnZjaUJqYjI1MFpXNTBDZ0JtYVhobFpDQmpaV3hzSUhOcGVtVWdkMmwwYUNCMWJuTndaV05wWm1s''@;'; put 'put ''bFpDQjNhV1IwYUNCdmNpQm9aV2xuYUhRS0FFNXZJRzl5SUdsdGNISnZjR1Z5SUdsdFlXZGxJR1pwYkdVOUlpVnpJZ29BY0dWdVkyOXNiM0lBTFQ0QVpsQlJMbU1BVUZGamFHVmphd0JJWldGd0lHOTJaWEptYkc5M0NnQWxJVkJUTFVGa2IySmxMVEl1TUFvdmJtOWtaU0I3Q2lBZ0wxa2daWGhq''@;'; put 'put ''YUNCa1pXWUtJQ0F2V0NCbGVHTm9JR1JsWmdvZ0lDOTVJR1Y0WTJnZ1pHVm1DaUFnTDNnZ1pYaGphQ0JrWldZS0lDQnVaWGR3WVhSb0NpQWdlQ0I1SUcxdmRtVjBid29nSUhnZ1dTQnNhVzVsZEc4S0lDQllJRmtnYkdsdVpYUnZDaUFnV0NCNUlHeHBibVYwYndvZ0lHTnNiM05sY0dGMGFDQm1h''@;'; put 'put ''V3hzQ24wZ1pHVm1DaTlqWld4c0lIc0tJQ0F2V1NCbGVHTm9JR1JsWmdvZ0lDOVlJR1Y0WTJnZ1pHVm1DaUFnTDNrZ1pYaGphQ0JrWldZS0lDQXZlQ0JsZUdOb0lHUmxaZ29nSUc1bGQzQmhkR2dLSUNCNElIa2diVzkyWlhSdkNpQWdlQ0JaSUd4cGJtVjBid29nSUZnZ1dTQnNhVzVsZEc4S0lD''@;'; put 'put ''QllJSGtnYkdsdVpYUnZDaUFnWTJ4dmMyVndZWFJvSUhOMGNtOXJaUXA5SUdSbFpnb0FjMmh2ZDNCaFoyVUtBR1poYVd4bFpDQmhkQ0J1YjJSbElDVmtXekJkQ2dCdWNDMCtZMlZzYkhOYk1GMEFiV0Y2WlM1akFHTm9hMU5uY21Gd2FBQm1ZV2xzWldRZ1lYUWdibTlrWlNBbFpGc3hYUW9BYm5B''@;'; put 'put ''dFBtTmxiR3h6V3pGZEFHUnBkR1Z0Y3dCbWFXNWtVMVpsY25RQUpTVWxKVkJoWjJVNklERWdNUW9sSlNVbFVHRm5aVUp2ZFc1a2FXNW5RbTk0T2lBbFpDQWxaQ0FsWkNBbFpBb0FKV1lnSldZZ2RISmhibk5zWVhSbENnQXdJREFnTVNCelpYUnlaMkpqYjJ4dmNnb0FKV1lnSldZZ0pXWWdKV1ln''@;'; put 'put ''Ym05a1pRb0FNQ0F3SURBZ2MyVjBjbWRpWTI5c2IzSUtBQ1ZtSUNWbUlDVm1JQ1ZtSUdObGJHd0tBREVnTUNBd0lITmxkSEpuWW1OdmJHOXlDZ0IxYm1WNGNHVmpkR1ZrSUdOaGMyVWdhVzRnYkc5allYUmxYMlZ1WkhCdmFXNTBDZ0F3QUhSeVlYQmxlbTlwWkM1akFHeHZZMkYwWlY5bGJtUndi''@;'; put 'put ''Mmx1ZEFCaFpHUmZjMlZuYldWdWREb2daWEp5YjNJS0FHNWxkMjV2WkdVNklGRjFaWEo1TFhSaFlteGxJRzkyWlhKbWJHOTNDZ0J1WlhkdWIyUmxBRzVsZDNSeVlYQTZJRlJ5WVhCbGVtOXBaQzEwWVdKc1pTQnZkbVZ5Wm14dmR5QWxaQW9BYm1WM2RISmhjQUJwYm1SbGVDNWpBRkpVY21WbFUy''@;'; put 'put ''VmhjbU5vQUc0dFBteGxkbVZzSUQ0OUlEQUFVbFJ5WldWSmJuTmxjblFBYkdWMlpXd2dQajBnTUNBbUppQnNaWFpsYkNBOFBTQW9LbTRwTFQ1c1pYWmxiQUJ5TFQ1aWIzVnVaR0Z5ZVZ0cFhTQThQU0J5TFQ1aWIzVnVaR0Z5ZVZ0T1ZVMUVTVTFUSUNzZ2FWMEFjaUFtSmlCdUlDWW1JRzVsZHdC''@;'; put 'put ''U1ZISmxaVWx1YzJWeWRESUFiR1YyWld3Z1BqMGdNQ0FtSmlCc1pYWmxiQ0E4UFNCdUxUNXNaWFpsYkFCR1FVeFRSUUJ1YjJSbExtTUFUbTlrWlVOdmRtVnlBSElnSmlZZ2JnQlFhV05yUW5KaGJtTm9BRUZrWkVKeVlXNWphQUJwSUR3Z1RrOUVSVU5CVWtRQWJtVjNBRzRnSmlZZ2FTQStQU0F3''@;'; put 'put ''SUNZbUlHa2dQQ0JPVDBSRlEwRlNSQUJFYVhOamIyNUNjbUZ1WTJnQWNnQnlaV04wWVc1bmJHVXVZd0JTWldOMFFYSmxZUUJ5SUNZbUlISnlBRU52YldKcGJtVlNaV04wQUhJZ0ppWWdjd0JQZG1WeWJHRndBRzRBYzNCc2FYUXVjUzVqQUZOd2JHbDBUbTlrWlFCaUFHNHRQbU52ZFc1MElDc2dL''@;'; put 'put ''Q3B1YmlrdFBtTnZkVzUwSUQwOUlFNVBSRVZEUVZKRUlDc2dNUUJNYjJGa1RtOWtaWE1BY1FCd0FISjBjQzArYzNCc2FYUXVVR0Z5ZEdsMGFXOXVjMXN3WFM1d1lYSjBhWFJwYjI1YmFWMGdQVDBnTUNCOGZDQnlkSEF0UG5Od2JHbDBMbEJoY25ScGRHbHZibk5iTUYwdWNHRnlkR2wwYVc5dVcy''@;'; put 'put ''bGRJRDA5SURFQWNuUndMVDV6Y0d4cGRDNVFZWEowYVhScGIyNXpXekJkTG1OdmRXNTBXekJkSUNzZ2NuUndMVDV6Y0d4cGRDNVFZWEowYVhScGIyNXpXekJkTG1OdmRXNTBXekZkSUQwOUlFNVBSRVZEUVZKRUlDc2dNUUJOWlhSb2IyUmFaWEp2QUhKMGNDMCtjM0JzYVhRdVVHRnlkR2wwYVc5''@;'; put 'put ''dWMxc3dYUzVqYjNWdWRGc3dYU0ErUFNCeWRIQXRQazFwYmtacGJHd2dKaVlnY25Sd0xUNXpjR3hwZEM1UVlYSjBhWFJwYjI1eld6QmRMbU52ZFc1MFd6RmRJRDQ5SUhKMGNDMCtUV2x1Um1sc2JBQWhjblJ3TFQ1emNHeHBkQzVRWVhKMGFYUnBiMjV6V3pCZExuUmhhMlZ1VzJsZEFFTnNZWE56''@;'; put 'put ''YVdaNUFFZGxkRUp5WVc1amFHVnpBRzR0UG1KeVlXNWphRnRwWFM1amFHbHNaQUFBQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB''@;'; put 'put ''Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn''@;'; put 'put ''SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FRSURCQVVHQndnSkNnc01EUTRQRUJFU0V4UVZGaGNZR1JvYkhCMGVIeUFoSWlNa0pTWW5LQUlDQWdJQ0FoQU1XUUVBSDFBSUF3Y1NFeFJYRmhjSUMya01Id29GREE0cEVTc1BMUkF2TUNB''@;'; put 'put ''eUJqUTFHeHdkSGdzTUlTSWpKQ1VtSnlnTUdCa1hCQW9iSEJvZ0tnb2hJaU1rSlNZbktBd0tEbE1LTEZneFdGaFlXRmhZREJzY0R5NVlNeUVpSXlRbEppY29HeHovVS8vL0lTSWpKQ1VtSnlnTS8vOEYvLy8vQ1JULy8vLy8vd3diSFA4UUZSWWhJaU1rSlNZbktCc2MvLy8vL3lFaUl5UWxKaWNv''@;'; put 'put ''RFA4U0V4UVJGaGYvLy8vLy8vOE1HeHovLy84U0lTSWpKQ1VtSnlnYkhQLy8vLzhoSWlNa0pTWW5LQXovLy8vLy8vOFQvLy8vLy8vL0RCc2MvLy8vL3lFaUl5UWxKaWNvR3h6Ly8vLy9JU0lqSkNVbUp5Z1NFeFFWRmhjWUdmLy8vLy8vLy8vLy95TWtKU1luR3hJVEZCWVhJalpvQVI4NFZpRWdB''@;'; put 'put ''aHNiRzE0Ykd6YzVjRGJTd2s4RVBDSkhJajhpUkNJaVdDSmxJaUlGQmw5Z09RUUhDQWtLQ3d3TkRnUm1aMTFxYlFVR2IxZzdjUWNJQ1FvTERBME9CSEk4VzNNK1lVWWJFaE1VRmhjRUJRWS9RV0pKQndnSkNnc01EUTRGQmdCY0FBQUhDQWtLQ3d3TkRnUUFBRThBQUFCVFFnQUFBQUFBQkFVR0FF''@;'; put 'put ''UlVWUWNJQ1FvTERBME9CUVlBQUFBQUJ3Z0pDZ3NNRFE0RUFDb3NMa2N4TXdBQUFBQUFBQVFGQmdBQUFFb0hDQWtLQ3d3TkRnVUdBQUFBQUFjSUNRb0xEQTBPQkFBQUFBQUFBRXdBQUFBQUFBQUVCUVlBQUFBQUJ3Z0pDZ3NNRFE0RkJnQUFBQUFIQ0FrS0N3d05EaWtyTFM4d01qUTFBQUFBQUFB''@;'; put 'put ''QUFBQUFLU3N0TURJQUJDOEFKQ01BRWhRV0dod2VJQmdBQlFjdkx5OEFMeThBQUFrSUtBQUFBU0lDQmdBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBbEF5WVRDaWtWQ3lvWERpMFpFUnNNS3gwTkxCOFBJUkFBTXdBd0FDOURBREVBTHdBMUxpZENNa0VBT2pnQVBEUkZBRFlBUUFBQVB3QkVOenM1''@;'; put 'put ''UFFBQ0F3TUJBUUlCQVFFREF3TURBd01EQXdFQkFRRUJBUUVCQVFFQkFRRUJBUUVDQVFFQ0FBWUJBd01EQXdNQkFBRUNBd0FFQVFJREFBUUFCQUFFQUFNQ0FRSUJBZ0ZUZVc1MFlYZ2daWEp5YjNJNklHNXZiaTF6Y0dGalpTQnpkSEpwYm1jZ2RYTmxaQ0JpWldadmNtVWdQRlJCUWt4RlBnQlRl''@;'; put 'put ''VzUwWVhnZ1pYSnliM0k2SUc1dmJpMXpjR0ZqWlNCemRISnBibWNnZFhObFpDQmhablJsY2lBOEwxUkJRa3hGUGdBQUtTb3FLaXNzTEMwdExTMHRMUzB0TFMwdUx6QXhNak0wTlRZM09EazZPenc5UGo0L1AwRkFRa0pDUWtKQ1EwTkVSRVJHUlVkSFIwbElTa2hMU0V4SVRVMU9UazlQL3dNUEVC''@;'; put 'put ''RWpPaVE5SlVBVlF5WkZKMGdZU3hsTkdpZ2NUaDBlVUZGU1dWcHNhMjVqWkZkcGJXVnRiM0o1SUdWNGFHRjFjM1JsWkFBbGN5QnBiaUJzYVc1bElDVmtJQW9BTGk0dUlDVnpJQzR1TGdvQVZFRkNURVVBVkZJQVZFZ0FWRVFBU0ZSTlRBQkdUMDVVQUVJQVZRQlBBRWtBVTFWUUFGTlZRZ0JUQUVK''@;'; put 'put ''U0FFaFNBRlpTQUVsTlJ3QlZibXR1YjNkdUlFaFVUVXdnWld4bGJXVnVkQ0E4SlhNK0lHOXVJR3hwYm1VZ0pXUWdDZ0E4U1UxSFBnQkpiR3hsWjJGc0lHRjBkSEpwWW5WMFpTQWxjeUJwYmlBbGN5QXRJR2xuYm05eVpXUUtBSE5qWVd4bEFITnlZd0E4UWxJK0FHRnNhV2R1QUVsSFNGUUFSVVpV''@;'; put 'put ''QUVWT1ZFVlNBRWxzYkdWbllXd2dkbUZzZFdVZ0pYTWdabTl5SUVGTVNVZE9JQzBnYVdkdWIzSmxaQW9BUEVaUFRsUStBR052Ykc5eUFHWmhZMlVBY0c5cGJuUXRjMmw2WlFCUVQwbE9WQzFUU1ZwRkFFbHRjSEp2Y0dWeUlDVnpJSFpoYkhWbElDVnpJQzBnYVdkdWIzSmxaQUFsY3lCMllXeDFa''@;'; put 'put ''U0FsY3lBK0lDVmtJQzBnZEc5dklHeGhjbWRsSUMwZ2FXZHViM0psWkFBbGN5QjJZV3gxWlNBbGN5QThJQ1ZrSUMwZ2RHOXZJSE50WVd4c0lDMGdhV2R1YjNKbFpBQThWRVErQUdKaGJHbG5iZ0JpWjJOdmJHOXlBR0p2Y21SbGNnQmpaV3hzY0dGa1pHbHVad0JqWld4c2MzQmhZMmx1WndCamIy''@;'; put 'put ''eHpjR0Z1QUdacGVHVmtjMmw2WlFCbmNtRmthV1Z1ZEdGdVoyeGxBR2hsYVdkb2RBQm9jbVZtQUdsa0FIQnZjblFBY205M2MzQmhiZ0J6YVdSbGN3QnpkSGxzWlFCMFlYSm5aWFFBZEdsMGJHVUFkRzl2YkhScGNBQjJZV3hwWjI0QWQybGtkR2dBVjBsRVZFZ0FUMVJVVDAwQVQxQUFTVVJFVEVV''@;'; put 'put ''QVNXeHNaV2RoYkNCMllXeDFaU0FsY3lCbWIzSWdWa0ZNU1VkT0lDMGdhV2R1YjNKbFpBb0FJQ3dBVDFWT1JFVkVBRUZFU1VGTUFFbHNiR1ZuWVd3Z2RtRnNkV1VnSlhNZ1ptOXlJRk5VV1V4RklDMGdhV2R1YjNKbFpBb0FVMDlNU1VRQVNVNVdTVk5KUWt4RkFFbE9Wa2xUQUVSUFZGUkZSQUJF''@;'; put 'put ''UVZOSVJVUUFWVzV5WldOdloyNXBlbVZrSUdOb1lYSmhZM1JsY2lBbkpXTW5JQ2dsWkNrZ2FXNGdjMmxrWlhNZ1lYUjBjbWxpZFhSbENnQlNUMWRUVUVGT0FGSlBWMU5RUVU0Z2RtRnNkV1VnWTJGdWJtOTBJR0psSURBZ0xTQnBaMjV2Y21Wa0NnQklSVWxIU0ZRQVIxSkJSRWxGVGxSQlRrZE1S''@;'; put 'put ''UUJTVlVVQVFVeFRSUUJKYkd4bFoyRnNJSFpoYkhWbElDVnpJR1p2Y2lCR1NWaEZSRk5KV2tVZ0xTQnBaMjV2Y21Wa0NnQkRUMHhUVUVGT0FFTlBURk5RUVU0Z2RtRnNkV1VnWTJGdWJtOTBJR0psSURBZ0xTQnBaMjV2Y21Wa0NnQkRSVXhNVTFCQlEwbE9Sd0JEUlV4TVVFRkVSRWxPUndCQ1Qx''@;'; put 'put ''SkVSVklBU1d4c1pXZGhiQ0IyWVd4MVpTQWxjeUJtYjNJZ1FrRk1TVWRPSUdsdUlGUkVJQzBnYVdkdWIzSmxaQW9BUlZoVUFFbHNiR1ZuWVd3Z2RtRnNkV1VnSlhNZ1ptOXlJRUZNU1VkT0lHbHVJRlJFSUMwZ2FXZHViM0psWkFvQVBGUkJRa3hGUGdCalpXeHNZbTl5WkdWeUFHTnZiSFZ0Ym5N''@;'; put 'put ''QWNtOTNjd0JWYm10dWIzZHVJSFpoYkhWbElDVnpJR1p2Y2lCU1QxZFRJQzBnYVdkdWIzSmxaQW9BVlc1cmJtOTNiaUIyWVd4MVpTQWxjeUJtYjNJZ1EwOU1WVTFPVXlBdElHbG5ibTl5WldRS0FFTkZURXhUUWs5U1JFVlNBRHhJVkUxTVBnQThMMGhVVFV3K0FDMHRBRXhoWW1Wc0lHTnNiM05s''@;'; put 'put ''WkNCaVpXWnZjbVVnWlc1a0lHOW1JRWhVVFV3Z1pXeGxiV1Z1ZEFvQVZXNWpiRzl6WldRZ1kyOXRiV1Z1ZEFvQWFpQTlQU0F3QUdOMmRDNWpBRkJ2WW5Od1lYUm9BSEp2ZFhSbExtTUFiR2xpY0dGMGFDOGxjem9sWkRvZ0pYTUtBSE5vYjNKMFpYTjBMbU1BYzI5MWNtTmxJSEJ2YVc1MElHNXZk''@;'; put 'put ''Q0JwYmlCaGJua2dkSEpwWVc1bmJHVUFaR1Z6ZEdsdVlYUnBiMjRnY0c5cGJuUWdibTkwSUdsdUlHRnVlU0IwY21saGJtZHNaUUJqWVc1dWIzUWdabWx1WkNCMGNtbGhibWRzWlNCd1lYUm9BR05oYm01dmRDQnRZV3hzYjJNZ2IzQnpBR05oYm01dmRDQnlaV0ZzYkc5aklHOXdjd0IwY21saGJt''@;'; put 'put ''ZDFiR0YwYVc5dUlHWmhhV3hsWkFCallXNXViM1FnYldGc2JHOWpJSFJ5YVhNQVkyRnVibTkwSUhKbFlXeHNiMk1nZEhKcGN3QmpZVzV1YjNRZ2JXRnNiRzlqSUdSeExuQnViSE1BWTJGdWJtOTBJSEpsWVd4c2IyTWdaSEV1Y0c1c2N3QmpZVzV1YjNRZ2JXRnNiRzlqSUhCdWJITUFZMkZ1Ym05''@;'; put 'put ''MElHMWhiR3h2WXlCd2JteHdjd0JqWVc1dWIzUWdjbVZoYkd4dll5QndibXh6QUdOaGJtNXZkQ0J5WldGc2JHOWpJSEJ1YkhCekFFTkVRVlJCQUVsRUFFbEVVa1ZHQUVsRVVrVkdVd0JGVGxSSlZGa0FSVTVVU1ZSSlJWTUFUazFVVDB0RlRnQk9UVlJQUzBWT1V3Qk9UMVJCVkVsUFRpZ0FLQUI4''@;'; put 'put ''QUdoMGRIQTZMeTkzZDNjdWR6TXViM0puTDFoTlRDOHhPVGs0TDI1aGJXVnpjR0ZqWlFCb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM2h0Ykc1ekx3QjRiV3c5YUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2V0UxTUx6RTVPVGd2Ym1GdFpYTndZV05sQUM5a1pYWXZkWEpoYm1SdmJRQm1Z''@;'; put 'put ''V3hzWW1GamF5ZzBLUUJuWlhSMGFXMWxiMlprWVhsZmNtVnpJRDA5SURBQWVHMXNjR0Z5YzJVdVl3Qm5ZWFJvWlhKZmRHbHRaVjlsYm5SeWIzQjVBRVZZVUVGVVgwVk9WRkpQVUZsZlJFVkNWVWNBTVFCRmJuUnliM0I1T2lBbGN5QXRMVDRnTUhnbE1DcHNlQ0FvSld4MUlHSjVkR1Z6S1FvQWFX''@;'; put 'put ''NTJZV3hwWkNCaGNtZDFiV1Z1ZEFCd2NtVm1hWGdnYlhWemRDQnViM1FnWW1VZ1ltOTFibVFnZEc4Z2IyNWxJRzltSUhSb1pTQnlaWE5sY25abFpDQnVZVzFsYzNCaFkyVWdibUZ0WlhNQWNtVnpaWEoyWldRZ2NISmxabWw0SUNoNGJXeHVjeWtnYlhWemRDQnViM1FnWW1VZ1pHVmpiR0Z5WldR''@;'; put 'put ''Z2IzSWdkVzVrWldOc1lYSmxaQUJ5WlhObGNuWmxaQ0J3Y21WbWFYZ2dLSGh0YkNrZ2JYVnpkQ0J1YjNRZ1ltVWdkVzVrWldOc1lYSmxaQ0J2Y2lCaWIzVnVaQ0IwYnlCaGJtOTBhR1Z5SUc1aGJXVnpjR0ZqWlNCdVlXMWxBR05oYm01dmRDQnpkWE53Wlc1a0lHbHVJR1Y0ZEdWeWJtRnNJSEJo''@;'; put 'put ''Y21GdFpYUmxjaUJsYm5ScGRIa0FjR0Z5YzJsdVp5Qm1hVzVwYzJobFpBQndZWEp6YVc1bklHRmliM0owWldRQWNHRnljMlZ5SUc1dmRDQnpkWE53Wlc1a1pXUUFjR0Z5YzJWeUlITjFjM0JsYm1SbFpBQnBiR3hsWjJGc0lHTm9ZWEpoWTNSbGNpaHpLU0JwYmlCd2RXSnNhV01nYVdRQWRHVjRk''@;'; put 'put ''Q0JrWldOc1lYSmhkR2x2YmlCdWIzUWdkMlZzYkMxbWIzSnRaV1FBV0UxTUlHUmxZMnhoY21GMGFXOXVJRzV2ZENCM1pXeHNMV1p2Y20xbFpBQnBibU52YlhCc1pYUmxJRzFoY210MWNDQnBiaUJ3WVhKaGJXVjBaWElnWlc1MGFYUjVBRzExYzNRZ2JtOTBJSFZ1WkdWamJHRnlaU0J3Y21WbWFY''@;'; put 'put ''Z0FkVzVpYjNWdVpDQndjbVZtYVhnQVkyRnVibTkwSUdOb1lXNW5aU0J6WlhSMGFXNW5JRzl1WTJVZ2NHRnljMmx1WnlCb1lYTWdZbVZuZFc0QWNtVnhkV1Z6ZEdWa0lHWmxZWFIxY21VZ2NtVnhkV2x5WlhNZ1dFMU1YMFJVUkNCemRYQndiM0owSUdsdUlFVjRjR0YwQUdWdWRHbDBlU0JrWldO''@;'; put 'put ''c1lYSmxaQ0JwYmlCd1lYSmhiV1YwWlhJZ1pXNTBhWFI1QUhWdVpYaHdaV04wWldRZ2NHRnljMlZ5SUhOMFlYUmxJQzBnY0d4bFlYTmxJSE5sYm1RZ1lTQmlkV2NnY21Wd2IzSjBBR1J2WTNWdFpXNTBJR2x6SUc1dmRDQnpkR0Z1WkdGc2IyNWxBR1Z5Y205eUlHbHVJSEJ5YjJObGMzTnBibWNn''@;'; put 'put ''WlhoMFpYSnVZV3dnWlc1MGFYUjVJSEpsWm1WeVpXNWpaUUIxYm1Oc2IzTmxaQ0JEUkVGVVFTQnpaV04wYVc5dUFHVnVZMjlrYVc1bklITndaV05wWm1sbFpDQnBiaUJZVFV3Z1pHVmpiR0Z5WVhScGIyNGdhWE1nYVc1amIzSnlaV04wQUhWdWEyNXZkMjRnWlc1amIyUnBibWNBV0UxTUlHOXlJ''@;'; put 'put ''SFJsZUhRZ1pHVmpiR0Z5WVhScGIyNGdibTkwSUdGMElITjBZWEowSUc5bUlHVnVkR2wwZVFCeVpXWmxjbVZ1WTJVZ2RHOGdaWGgwWlhKdVlXd2daVzUwYVhSNUlHbHVJR0YwZEhKcFluVjBaUUJ5WldabGNtVnVZMlVnZEc4Z1ltbHVZWEo1SUdWdWRHbDBlUUJ5WldabGNtVnVZMlVnZEc4Z2FX''@;'; put 'put ''NTJZV3hwWkNCamFHRnlZV04wWlhJZ2JuVnRZbVZ5QUdGemVXNWphSEp2Ym05MWN5QmxiblJwZEhrQWNtVmpkWEp6YVhabElHVnVkR2wwZVNCeVpXWmxjbVZ1WTJVQWRXNWtaV1pwYm1Wa0lHVnVkR2wwZVFCcGJHeGxaMkZzSUhCaGNtRnRaWFJsY2lCbGJuUnBkSGtnY21WbVpYSmxibU5sQUdw''@;'; put 'put ''MWJtc2dZV1owWlhJZ1pHOWpkVzFsYm5RZ1pXeGxiV1Z1ZEFCa2RYQnNhV05oZEdVZ1lYUjBjbWxpZFhSbEFHMXBjMjFoZEdOb1pXUWdkR0ZuQUhCaGNuUnBZV3dnWTJoaGNtRmpkR1Z5QUhWdVkyeHZjMlZrSUhSdmEyVnVBRzV2ZENCM1pXeHNMV1p2Y20xbFpDQW9hVzUyWVd4cFpDQjBiMnRs''@;'; put 'put ''YmlrQWJtOGdaV3hsYldWdWRDQm1iM1Z1WkFCemVXNTBZWGdnWlhKeWIzSUFiM1YwSUc5bUlHMWxiVzl5ZVFBQ0F3UUZCZ2NJQUFBSkNnc01EUTRQRUJFQUFBQUFBQUFBQUFBQUFBQVNFd0FVQUFBQUFBQUFBQUFBQUFBQUFBQVZGZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVYQUFBQUFBQUFBQUFBQUFBQUFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFR''@;'; put 'put ''RUJBUUVCQVFFQkFRRUJBUUVCQVJnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHUU1hR3h3ZEhnQUFIeUFoSWlNa0pSQVJBQUFBQUFBQUFBQUFBQUFBRWhNbUZBQUFBQUFBQUFBQUFBQUFBQUFBSnhZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkZ3QUFBQUFBQUFBQUFBQUFBQUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVC''@;'; put 'put ''QVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRVlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVORVFWUkJXMVZUTFVGVFEwbEpBRlZVUmkweE5nQlZWRVl0TVRaQ1JRQlZWRVl0TVRaTVJRQjJaWEp6YVc5dUFHVnVZMjlrYVc1bkFITjBZ''@;'; put 'put ''VzVrWVd4dmJtVUFSRTlEVkZsUVJRQlRXVk5VUlUwQVVGVkNURWxEQUVWT1ZFbFVXUUJCVkZSTVNWTlVBRVZNUlUxRlRsUUFUazlVUVZSSlQwNEFTVTVEVEZWRVJRQkpSMDVQVWtVQVJVMVFWRmtBUVU1WkFGQkRSRUZVUVFCSlRWQk1TVVZFQUZKRlVWVkpVa1ZFQUVaSldFVkVBRU5FUVZSQkFF''@;'; put 'put ''bEVBRWxFVWtWR0FFbEVVa1ZHVXdCRlRsUkpWRWxGVXdCT1RWUlBTMFZPQUU1TlZFOUxSVTVUQUU1RVFWUkJBRlFoSWhrTkFRSURFVXNjREJBRUN4MFNIaWRvYm05d2NXSWdCUVlQRXhRVkdnZ1dCeWdrRnhnSkNnNGJIeVVqZzRKOUppb3JQRDArUDBOSFNrMVlXVnBiWEYxZVgyQmhZMlJsWm1k''@;'; put 'put ''cGFtdHNjbk4wZVhwN2ZBQkpiR3hsWjJGc0lHSjVkR1VnYzJWeGRXVnVZMlVBUkc5dFlXbHVJR1Z5Y205eUFGSmxjM1ZzZENCdWIzUWdjbVZ3Y21WelpXNTBZV0pzWlFCT2IzUWdZU0IwZEhrQVVHVnliV2x6YzJsdmJpQmtaVzVwWldRQVQzQmxjbUYwYVc5dUlHNXZkQ0J3WlhKdGFYUjBaV1FB''@;'; put 'put ''VG04Z2MzVmphQ0JtYVd4bElHOXlJR1JwY21WamRHOXllUUJPYnlCemRXTm9JSEJ5YjJObGMzTUFSbWxzWlNCbGVHbHpkSE1BVm1Gc2RXVWdkRzl2SUd4aGNtZGxJR1p2Y2lCa1lYUmhJSFI1Y0dVQVRtOGdjM0JoWTJVZ2JHVm1kQ0J2YmlCa1pYWnBZMlVBVDNWMElHOW1JRzFsYlc5eWVRQlNa''@;'; put 'put ''WE52ZFhKalpTQmlkWE41QUVsdWRHVnljblZ3ZEdWa0lITjVjM1JsYlNCallXeHNBRkpsYzI5MWNtTmxJSFJsYlhCdmNtRnlhV3g1SUhWdVlYWmhhV3hoWW14bEFFbHVkbUZzYVdRZ2MyVmxhd0JEY205emN5MWtaWFpwWTJVZ2JHbHVhd0JTWldGa0xXOXViSGtnWm1sc1pTQnplWE4wWlcwQVJH''@;'; put 'put ''bHlaV04wYjNKNUlHNXZkQ0JsYlhCMGVRQkRiMjV1WldOMGFXOXVJSEpsYzJWMElHSjVJSEJsWlhJQVQzQmxjbUYwYVc5dUlIUnBiV1ZrSUc5MWRBQkRiMjV1WldOMGFXOXVJSEpsWm5WelpXUUFTRzl6ZENCcGN5QmtiM2R1QUVodmMzUWdhWE1nZFc1eVpXRmphR0ZpYkdVQVFXUmtjbVZ6Y3lC''@;'; put 'put ''cGJpQjFjMlVBUW5KdmEyVnVJSEJwY0dVQVNTOVBJR1Z5Y205eUFFNXZJSE4xWTJnZ1pHVjJhV05sSUc5eUlHRmtaSEpsYzNNQVFteHZZMnNnWkdWMmFXTmxJSEpsY1hWcGNtVmtBRTV2SUhOMVkyZ2daR1YyYVdObEFFNXZkQ0JoSUdScGNtVmpkRzl5ZVFCSmN5QmhJR1JwY21WamRHOXllUUJV''@;'; put 'put ''WlhoMElHWnBiR1VnWW5WemVRQkZlR1ZqSUdadmNtMWhkQ0JsY25KdmNnQkpiblpoYkdsa0lHRnlaM1Z0Wlc1MEFFRnlaM1Z0Wlc1MElHeHBjM1FnZEc5dklHeHZibWNBVTNsdFltOXNhV01nYkdsdWF5QnNiMjl3QUVacGJHVnVZVzFsSUhSdmJ5QnNiMjVuQUZSdmJ5QnRZVzU1SUc5d1pXNGda''@;'; put 'put ''bWxzWlhNZ2FXNGdjM2x6ZEdWdEFFNXZJR1pwYkdVZ1pHVnpZM0pwY0hSdmNuTWdZWFpoYVd4aFlteGxBRUpoWkNCbWFXeGxJR1JsYzJOeWFYQjBiM0lBVG04Z1kyaHBiR1FnY0hKdlkyVnpjd0JDWVdRZ1lXUmtjbVZ6Y3dCR2FXeGxJSFJ2YnlCc1lYSm5aUUJVYjI4Z2JXRnVlU0JzYVc1cmN3''@;'; put 'put ''Qk9ieUJzYjJOcmN5QmhkbUZwYkdGaWJHVUFVbVZ6YjNWeVkyVWdaR1ZoWkd4dlkyc2dkMjkxYkdRZ2IyTmpkWElBVTNSaGRHVWdibTkwSUhKbFkyOTJaWEpoWW14bEFGQnlaWFpwYjNWeklHOTNibVZ5SUdScFpXUUFUM0JsY21GMGFXOXVJR05oYm1ObGJHVmtBRVoxYm1OMGFXOXVJRzV2ZENC''@;'; put 'put ''cGJYQnNaVzFsYm5SbFpBQk9ieUJ0WlhOellXZGxJRzltSUdSbGMybHlaV1FnZEhsd1pRQkpaR1Z1ZEdsbWFXVnlJSEpsYlc5MlpXUUFSR1YyYVdObElHNXZkQ0JoSUhOMGNtVmhiUUJPYnlCa1lYUmhJR0YyWVdsc1lXSnNaUUJFWlhacFkyVWdkR2x0Wlc5MWRBQlBkWFFnYjJZZ2MzUnlaV0Z0''@;'; put 'put ''Y3lCeVpYTnZkWEpqWlhNQVRHbHVheUJvWVhNZ1ltVmxiaUJ6WlhabGNtVmtBRkJ5YjNSdlkyOXNJR1Z5Y205eUFFSmhaQ0J0WlhOellXZGxBRVpwYkdVZ1pHVnpZM0pwY0hSdmNpQnBiaUJpWVdRZ2MzUmhkR1VBVG05MElHRWdjMjlqYTJWMEFFUmxjM1JwYm1GMGFXOXVJR0ZrWkhKbGMzTWdj''@;'; put 'put ''bVZ4ZFdseVpXUUFUV1Z6YzJGblpTQjBiMjhnYkdGeVoyVUFVSEp2ZEc5amIyd2dkM0p2Ym1jZ2RIbHdaU0JtYjNJZ2MyOWphMlYwQUZCeWIzUnZZMjlzSUc1dmRDQmhkbUZwYkdGaWJHVUFVSEp2ZEc5amIyd2dibTkwSUhOMWNIQnZjblJsWkFCVGIyTnJaWFFnZEhsd1pTQnViM1FnYzNWd2NH''@;'; put 'put ''OXlkR1ZrQUU1dmRDQnpkWEJ3YjNKMFpXUUFVSEp2ZEc5amIyd2dabUZ0YVd4NUlHNXZkQ0J6ZFhCd2IzSjBaV1FBUVdSa2NtVnpjeUJtWVcxcGJIa2dibTkwSUhOMWNIQnZjblJsWkNCaWVTQndjbTkwYjJOdmJBQkJaR1J5WlhOeklHNXZkQ0JoZG1GcGJHRmliR1VBVG1WMGQyOXlheUJwY3lC''@;'; put 'put ''a2IzZHVBRTVsZEhkdmNtc2dkVzV5WldGamFHRmliR1VBUTI5dWJtVmpkR2x2YmlCeVpYTmxkQ0JpZVNCdVpYUjNiM0pyQUVOdmJtNWxZM1JwYjI0Z1lXSnZjblJsWkFCT2J5QmlkV1ptWlhJZ2MzQmhZMlVnWVhaaGFXeGhZbXhsQUZOdlkydGxkQ0JwY3lCamIyNXVaV04wWldRQVUyOWphMlYw''@;'; put 'put ''SUc1dmRDQmpiMjV1WldOMFpXUUFRMkZ1Ym05MElITmxibVFnWVdaMFpYSWdjMjlqYTJWMElITm9kWFJrYjNkdUFFOXdaWEpoZEdsdmJpQmhiSEpsWVdSNUlHbHVJSEJ5YjJkeVpYTnpBRTl3WlhKaGRHbHZiaUJwYmlCd2NtOW5jbVZ6Y3dCVGRHRnNaU0JtYVd4bElHaGhibVJzWlFCU1pXMXZk''@;'; put 'put ''R1VnU1M5UElHVnljbTl5QUZGMWIzUmhJR1Y0WTJWbFpHVmtBRTV2SUcxbFpHbDFiU0JtYjNWdVpBQlhjbTl1WnlCdFpXUnBkVzBnZEhsd1pRQk9ieUJsY25KdmNpQnBibVp2Y20xaGRHbHZiZ0FBRWhBVEZCVVdGeGdaR2hzY0hSNGZJQ0VRRUNJakVDUWxKaWNvS1NvckVDd3RMaEV2TUJFUk1S''@;'; put 'put ''RVJFVEl6TkRVMk56ZzVFUkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQTZFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJB''@;'; put 'put ''N0VEdzlQajlBUVJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkJDRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQkRFQkJFRUVWR1J4QklFRWtRRUJBUVNrdE1UUkFRVGhCUFVCQVFFQkJSRUJBUUVCQVFFQkFR''@;'; put 'put ''RUJBUUVGSVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFRk1RRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFF''@;'; put 'put ''QkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQlVWVlpYRUJCWVdSQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkJhRUZ0Y1hWNWZZR0ZpRUJBUUVCQVFFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFQLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vQUFBQUFQNy9BUHdCQUFENEFRQUFlQUFBQUFELys5LzdBQUNBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOEFQei80Sy8vLy8vLy8vLy8vLy8vMy8vLy8vLy9JRUN3QUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQd0RBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQd0FBQUFBQUliKy8vLy9BRUJKQUFBQUFBQVlBTi8vQU1nQUFBQUFBQUFBQVFBOEFBQUFBQUFBQUFBQUFBQUFFT0FCSGdCZy83OEFBQUFBQUFEL0J3QUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBRDR6d01BQUFBREFDRC9md0FBQUU0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQVB3QUFBQUFBQUFBQUFBUUFDQWVBREFBQVFBQUFBQUFBQUFBRUFBZ0FBQUFBUHdQQUFBQUFBQUFBQkFBSUFBQUFBQUFBQUFBQUFBQUFBQVFBQ0FBQUFBQUF3QUFBQUFBQUFBQUVBQWdB''@;'; put 'put ''QUFBQVAwQUFBQUFBQUFBQUFBQUlBQUFBQUQvQndBQUFBQUFBQUFBQUNBQUFBQUFBUDhBQUFBQUFBQUFFQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBL0FnQUFBQUFBQUFBQUFBUUFBQUFBRUFBQUFBQUFBSUFBZ01EZkFBd0FBQUFBQUFBQUFBQUFBQUFBSHdBQUFBQUFBUDcvLy84QS9Q''@;'; put 'put ''Ly9BQUFBQUFBQUFBRDhBQUFBQUFBQXdQL2Yvd2NBQUFBQUFBQUFBQUFBZ0FZQS9BQUFHRDRBQUlDL0FNd0FBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUdELy8vOGZBQUQvQXdBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFHQUFBQUVBQUJnQUFBQUFBQUFBQUFBNEFBQUFBQkFBQUFCd0FBQUFBQUFBQUFBQUFBQUFBQUFBTUFBQS9uOHZBQUQvQS85L0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBNHhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF4UC8v''@;'; put 'put ''Ly84QUFBREFBQUFBQUFBQUFBQUJBT0NmQUFBQUFIOC9BQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFFQUFBL1AvLy94OEFBQUFBQUF3QUFBQUFBQUJBQUF6d0FBQUFBQUFBd1BnQUFBQUFBQUFBd0FBQUFBQUFBQUFBL3dELy8vOGhFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC8v''@;'; put 'put ''Ly8vZndBQThBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0FQZ0FPQUE0QUJnZ1BqLy8vLzgvLy8vLy85L0gvenhmLzkvQUFELy8vOERBQUQvLy8vL0FRQjdBOURCcjBJQURCKzgvLzhBQUFBQUFBTC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v''@;'; put 'put ''Ly8vLy8vLy8vLy93OEEvLy8vLzM4QUFBRC9Cd0FBLy8vLy8vLy8vLy8vL3o4QUFBQUFBQUQ4Ly8vKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8veC8vQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFPQ0hBLzRBQUFBQUFBQUFBQUFBQUFBQUFBR0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLy8vLy8vZi84UEFBQUFBQUFBQUFELy8vLzcvLy8vLy8vLy8vLy8vdzhBLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzgvQUFBQS93OGUvLy8vQWZ6QjRBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFIZ0VBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvL0FBQUFBUC8vLy84UEFBQUEvLy8vZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzM4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvLy8vLy8vLy8vd0FBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBUC8vLy8vLy8zOEFBQUFBQUFEQUFPQUFBQUFBQUFBQUFBQUFBSUFQY0FBQUFBQUFBQUFBQUFBQUFBQUEvd0QvLzM4QUF3QUFBQUFBQUFBQUFBQUFBQVlBQUFBQUFBQUFBQUFBQUFBQUFFUUlBQUFBRC84REFBQUFBQUFBOEFBQUFBQUFBQUFBQUJEQUFBRC8vd01IQUFBQUFB''@;'; put 'put ''RDRBQUFBQUFpQUFBQUFBQUFBQUFBQUFBZ0EvejhBd0FBQUFBQUFBQUFBQUFBQUFBQUFBUEFBQUlBTEFBQUFBQUFBQUlBQ0FBREFBQUJEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9BQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFEOC93TUFBQUFBQUFBQUFBQUFBQUFBQU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREQvLy84RGZ3RC8vLy8vOS85L0R3QUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQWdQNy9BUHdCQUFENEFRQUErRDhBQUFBQUFBQUFBQUFBQUFBQUFBQi9md0F3aC8vLy8vLy9qLzhBQUFBQUFBRGcvLzhIL3c4QUFBQUFBQUQvLy8vLy96OEFBQUFBRHdBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFDQS93QUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQURBandBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBaC84QS93RUFBQURnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRCtBQUFBL3dBQUFQOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvLy8vZndBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUEvL1A4L0FBQUFBd0FBQUFBQUFQNERBQUFBQUFBQUFBQUFBQUFBQUJnQUR3QUFBQUFBQUFBQUFBQUFBQUFBQU9FQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE4''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FjQUFBQUFBQUFBQUFBQUFBQUEvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vUHdELy8vLy9mLzcvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84L0FBQUFBUC8vLy8vLy8vLy9Qd0FB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vLy8vLy8vLy8vLy8zOEEvLzhEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFJQUFBQUNBQUFJQUFBQUNBQUFJQUFBQUNBQUFBQUFnQUFBQUlBQUFnQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3RC8vLy8vL3cvLy8vLy8vLy8vLy8vLy8vOFBBUDkvL24vKy8vNy9BQUFBQVA4SC8vLy9mLy8vLy8vLy8vOFAvLy8vLy84SEFBQUFBQUFBQUFEQS8vLy9Cd0QvLy8vLy93Zi9BUU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELy8v''@;'; put 'put ''Ly9BUUMvLy8vLy8vLy8vLzhmLy84UEFQLy8vLy9mQndBQS8vOEJBUC8vLy8vLy8vOS8vZi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84ZS8vLy8vLy8vL3o4UEFQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUGovLy8vLy8vLy8vK0gvQUFBQUFBQUEvLy8vLy8vLy8vOC9BQUFBQUFB''@;'; put 'put ''QUFQLy8vLy8vLy8vLy8vLy8vLy8vRHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93QUJBZ01FQlFZSENBbi8vLy8vLy8vL0Nnc01EUTRQRUJFU0V4UVZGaGNZR1JvYkhCMGVIeUFo''@;'; put 'put ''SWlQLy8vLy8vLzhLQ3d3TkRnOFFFUklURkJVV0Z4Z1pHaHNjSFI0ZklDRWlJLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v''@;'; put 'put ''Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOEFBUUlFQndNR0JRQVNFUk1VRlJZWEdCa2FHeHdkSGg4Z0lSRWlJeVFSSlNZbktDa3FLeXdSTFM0dkVCQXdFQkFRRUJBUUVERXlNeEEwTlJBUUVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVS''@;'; put 'put ''RVJFUkVSRVRZUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFM0VSRVJFVGdST1RvN1BEMCtFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJF''@;'; put 'put ''UkVSRVJFUkVSRVJFUkVSRVJFUkVSRVJFUkVUOFFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUlFFRVJRa05FUlVaSFNFa1FFQkJLUzB4TlRoQVFFRTlRRUJBUUVGRVFFQkFRRUJBUUVCQVJFUkZTVXhBUUVCQVFFQkFRRUJBUUVSRVJFVlFRRUJBUUVCQVFFQkFR''@;'; put 'put ''RUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVJFVlVRRUJBUVZoQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQlhFQkFRRUJBUUVCQVFF''@;'; put 'put ''QkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQllXVnBiRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVGd1FFQkFRRUJBUUVCQVFFQkFRRUJBUUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v''@;'; put 'put ''Ly8vLy8vLy8vLy8vOEFBQUFBQUFBQUFQNy8vd2YrLy84SEFBQUFBQUFFSUFULy8zLy8vLzkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOFAvQXdBZlVBQUFBQUFBQUFBQUFBQWdBQUFBQUFEZlBFRFgvLy83Ly8vLy8vLy8vLy8vdi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vQS96''@;'; put 'put ''Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL0FQNy8vLzkvQXY3Ly8vLy9BQUFBQUFEL3Y3WUEvLy8vQndjQUFBRC9CLy8vLy8vLy8vLysvOFAvLy8vLy8vLy8vLy8vLy8vdkgvN2gvNThBQVAvLy8vLy8vd0RnLy8vLy8vLy8vLy8vLy8vL0F3RC8vLy8vL3djd0JQLy8vL3ovSHdBQS8vLy9BUUFB''@;'; put 'put ''QUFBQUFBQUEvUjhBQUFBQUFBRHdBLzkvLy8vLy8vLy8vKy8vMytIL3ovLysvdTZmK2YvLy9jWGpuMW1Bc00vL0F3RHVoL24vLy8xdHc0Y1pBbDdBL3o4QTdyLzcvLy85N2VPL0d3RUF6LzhBQU82ZitmLy8vZTNqbnhuQXNNLy9BZ0RzeHozV0dNZi93OGNkZ1FEQS93QUE3dC85Ly8vOTcrUGZI''@;'; put 'put ''V0FEei84QUFPemYvZi8vL2UvajN4MWdRTS8vQmdEczMvMy8vLy8vNTk5ZGdBRFAvd0Q4N1A5Ly9QLy8reTkvZ0YvL0FBQU1BUDcvLy8vL2YvOEhQeUQvQXdBQUFBQ1dKZkQrcnV6L08xOGcvL01BQUFBQUFRQUFBUDhEQUFELy92Ly8veC8rL3dQLy8vNy8vLzhmQUFBQUFBQUFBQUQvLy8vLy8v''@;'; put 'put ''OS8rZjhELy8vbndmLy9mMEQvTS8vLy8vKy9JUC8vLy8vLzkvLy8vLy8vLy8vLy96MS9QZi8vLy8vL1BmLy8vLzg5ZnozL2YvLy8vLy8vLy84OS8vLy8vLy8vLy8rSEFBQUFBUC8vQUFELy8vLy8vLy8vLy8vL0h3RCsvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v''@;'; put 'put ''Ly8vLy8vLy8vLy8vLy8vK2YvLy8rLy84SC8vLy8vLy8vLy8vL3h3RUEvOThQQVAvL0R3RC8vdzhBLzk4TkFQLy8vLy8vLzgvLy93R0FFUDhEQUFBQUFQOEQvLy8vLy8vLy8vLy8vLzhBLy8vLy8vOEgvLy8vLy8vLy8vOC9BUC8vL3gvL0QvOEJ3UC8vLy84L0h3RC8vLy8vL3cvLy8vOEQvd01B''@;'; put 'put ''QUFBQS8vLy9ELy8vLy8vLy8vOS8vdjhmQVA4RC93T0FBQUFBQUFBQUFBQUFBQUQvLy8vLy8vL3YvKzhQL3dNQUFBQUEvLy8vLy8vei8vLy8vLy8vdi84REFQLy8vLy8vL3o4QS8rUC8vLy8vL3o4QUFBQUFBQUFBQUFBQUFBQUEzbThBLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9B''@;'; put 'put ''QUFBQUFBQUFBRC8vejgvLy8vLy96OC8vNnIvLy84Ly8vLy8vLy8vMzEvY0g4OFAveC9jSHdBQUFBQUFBQUFBQUFBQUFBQUFBb0FBQVA4ZkFBQUFBQUFBQUFBQUFBQUFoUHd2UGxDOS8vUGdRd0FBLy8vLy8vOEJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUF3UC8vLy8vLy93TUFBUC8vLy8vL2YvLy8vLy8vZi8vLy8vLy8vLy8vLy8vLy8vLy8vLzhmZUF3QS8vLy8vNzhnLy8vLy8vLy8vNEFBQVAvL2Z3Qi9mMzkvZjM5L2YvLy8vLzhBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQUFBQUQrQXo0Zi92Ly8vLy8vLy8v''@;'; put 'put ''Ly8zL2cvdi8vLy8vLy8vLy8vLy8zNFAvLy8vOC8vdi8vLy8vLy8vLy8vLzkvQUFELy8vOEhBQUFBQUFBQS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vUHdBQUFBQUFBQUFBQVAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzhmQUFBQUFBQUEvLy8vLy8vLy8vLy8vLy8v''@;'; put 'put ''Ly8vLy8vOGZBQUFBQUFBQUFBRC8vLy8vL3ovL0gvLy8vdzhBQVAvLy8vLy9mL0NQLy8vL2dQLy8vLy8vLy8vLy8vOEFBQUFBZ1AvOC8vLy8vLy8vLy8vLy8vLy9lUThBL3djQUFBQUFBQUFBQUFEL3UvZi8vLzhBQUFELy8vLy8vLzhQQVAvLy8vLy8vLy8vRHdEL0F3QUEvQWovLy8vLy93Zi8v''@;'; put 'put ''Ly8vQndELy8vOGYvLy8vLy8vLzkvOEFnUDhEQUFBQUFQLy8vLy8vLzM4QS96Ly9BLy8vZndULy8vLy8vLy8vZndVQUFEai8vendBZm41K0FIOS9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvLy8vLy84SC93UC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vdzhBLy85LytQLy8vLy8vRC8vLy8v''@;'; put 'put ''Ly8vLy8vLy8vLy8vOC8vLy8vLy8vLy8vLy8vLy8vL3dNQUFBQUFmd0Q0NFAvOWYxL2IvLy8vLy8vLy8vLy8vLy8vL3dNQUFBRDQvLy8vLy8vLy8vLy8vLy8vUHdBQS8vLy8vLy8vLy8vOC8vLy8vLy8vQUFBQUFBRC9Ed0FBQUFBQUFBQUFBQUFBQUFBQTMvLy8vLy8vLy8vLy8vLy8vLy8vLy84''@;'; put 'put ''ZkFBRC9BLzcvL3dmKy8vOEh3UC8vLy8vLy8vLy8vLzkvL1B6OEhBQUFBQUQvNy8vL2YvLy90LzgvL3o4QUFBQUEvLy8vLy8vLy8vLy8vLy8vLy8vL0J3QUFBQUFBQUFBQS8vLy8vLy8vSHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC8vL3gvLy8vLy8vLzhC''@;'; put 'put ''QUFBQUFBRC8vLzkvQUFELy8vOEhBQUFBQUFBQS8vLy9QLy8vLy84UC96NEFBQUFBQVAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84Ly93TUFBQUFBQUFBQUFBQUFQLzMvLy8vL3Y1SC8vejhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELy96OEEvLy8vQXdBQUFBQUFBQUFBLy8vLy8vLy8v''@;'; put 'put ''OEFBQUFBQUFBQUFBRy93Ny83Ly93OEFBQUFBQVAvLy94OEFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vLy8vLy8vUHdELy96OEEvLzhIQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvLy8vLy8vLy8vLzhCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLy8vLy8vLy8vL1B3QUFBTUQvQUFEOC8v''@;'; put 'put ''Ly8vLy8vQVFBQS8vLy9BZjhELy8vLy8vLy94LzhBQUFBQUFBQUFBUC8vLy8vLy8vLy9IZ0QvQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vLy8vLy8vUHdEL0F3QUFBQUFBQVAvLy8vLy8vLy8vLy8vLy8vOS9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvLy8vLy8vLy8vLy8vLy8vQndB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELy8vLy8vMzhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC8vLy8vLy8vOEJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vLy8vLy8vLy84ZkFQLy8vLy8vZndBQStQOEFBQUFBQUFBQUFBQUFBQUFEQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLy8vLy8vLy8vLy8vL2YvLy8vLy8vLy8vL2ZaTjcvNisvLy8vLy8vLy8vditmZjMvLy8vM3RmL1AzLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vei8vLy8vOS8vLzMvLy8vOS8vLzMvLy8v''@;'; put 'put ''OS8vLzMvLy8vOS8vLy8vL2YvLy8vMy8vL2ZQLy8vLy8vLy83Ly8vLzViKzl3cUU2cGFxbHZmM1h2Lzcvdy91Ky84UEFBQUFBQUFBQUFCTVExOUJURXdBVEVOZlExUlpVRVVBQUFBQVRFTmZUbFZOUlZKSlF3QUFURU5mVkVsTlJRQUFBQUFBVEVOZlEwOU1URUZVUlFBQVRFTmZUVTlPUlZSQlVs''@;'; put 'put ''a0FURU5mVFVWVFUwRkhSVk1BVEVGT1J3QkRMbFZVUmkwNEFGQlBVMGxZQUUxVlUweGZURTlEVUVGVVNBQVJBQW9BRVJFUkFBQUFBQVVBQUFBQUFBQUpBQUFBQUFzQUFBQUFBQUFBQUJFQUR3b1JFUkVEQ2djQUFSTUpDd3NBQUFrR0N3QUFDd0FHRVFBQUFCRVJFUUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUxBQUFBQUFBQUFBQVJBQW9LRVJFUkFBb0FBQUlBQ1FzQUFBQUpBQXNBQUFzQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREFBQUFBQUFBQUFBQUFBQURBQUFBQUFNQUFBQUFBa01BQUFBQUFBTUFBQU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBNEFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQTBBQUFBRURRQUFBQUFKRGdBQUFBQUFEZ0FBRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBUEFBQUFBQThBQUFBQUNSQUFBQUFBQUJBQUFCQUFBQklBQUFBU0VoSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnQUFB''@;'; put 'put ''QklTRWdBQUFBQUFBQWtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNBQUFBQUFBQUFBQUFBQUFvQUFBQUFDZ0FBQUFBSkN3QUFBQUFBQ3dBQUN3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFBQUFBQUFBQUFBQUFBQU1BQUFBQUF3QUFB''@;'; put 'put ''QUFDUXdBQUFBQUFBd0FBQXdBQUMwcklDQWdNRmd3ZUFBb2JuVnNiQ2tBTFRCWUt6QllJREJZTFRCNEt6QjRJREI0QUdsdVpnQkpUa1lBVGtGT0FEQXhNak0wTlRZM09EbEJRa05FUlVZdUFHRnNiblZ0QUdGc2NHaGhBR0pzWVc1ckFHTnVkSEpzQUdScFoybDBBR2R5WVhCb0FHeHZkMlZ5QUhC''@;'; put 'put ''eWFXNTBBSEIxYm1OMEFITndZV05sQUhWd2NHVnlBSGhrYVdkcGRBQkRMbFZVUmkwNEFBQUFBQUFBQUFBQVF3QXZjSEp2WXk5elpXeG1MMlprTHdCeWQyRUFhVzVtYVc1cGRIa0FibUZ1QUFrQUNnQU5BQXdBQndBYkFGdGJPbUZzYm5WdE9sMWZYUUJiWGxzNllXeHVkVzA2WFY5ZEFGdGJPbk53''@;'; put 'put ''WVdObE9sMWRBRnRlV3pwemNHRmpaVHBkWFFCYld6cGthV2RwZERwZFhRQmJYbHM2WkdsbmFYUTZYVjBBTDNSdGNDOTBiWEJtYVd4bFgxaFlXRmhZV0FCM0t3PT0iO3ZhciBNYT15dDtmdW5jdGlvbiBubChkdCxJdCxQdCxmZSl7ZjIoIkFzc2VydGlvbiBmYWlsZWQ6ICIrRihkdCkrIiwgYXQ6''@;'; put 'put ''ICIrW0l0P0YoSXQpOiJ1bmtub3duIGZpbGVuYW1lIixQdCxmZT9GKGZlKToidW5rbm93biBmdW5jdGlvbiJdKX1mdW5jdGlvbiBnbCgpe2YyKCl9ZnVuY3Rpb24gQWkoKXtyZXR1cm4gTnx8InVuZGVmaW5lZCIhPXR5cGVvZiBkYXRlTm93fHwoWXx8VykmJnNlbGYucGVyZm9ybWFuY2UmJnNl''@;'; put 'put ''bGYucGVyZm9ybWFuY2Uubm93fXl0Kz0xNjt2YXIgdmk9e0VQRVJNOjEsRU5PRU5UOjIsRVNSQ0g6MyxFSU5UUjo0LEVJTzo1LEVOWElPOjYsRTJCSUc6NyxFTk9FWEVDOjgsRUJBREY6OSxFQ0hJTEQ6MTAsRUFHQUlOOjExLEVXT1VMREJMT0NLOjExLEVOT01FTToxMixFQUNDRVM6MTMsRUZB''@;'; put 'put ''VUxUOjE0LEVOT1RCTEs6MTUsRUJVU1k6MTYsRUVYSVNUOjE3LEVYREVWOjE4LEVOT0RFVjoxOSxFTk9URElSOjIwLEVJU0RJUjoyMSxFSU5WQUw6MjIsRU5GSUxFOjIzLEVNRklMRToyNCxFTk9UVFk6MjUsRVRYVEJTWToyNixFRkJJRzoyNyxFTk9TUEM6MjgsRVNQSVBFOjI5LEVST0ZTOjMw''@;'; put 'put ''LEVNTElOSzozMSxFUElQRTozMixFRE9NOjMzLEVSQU5HRTozNCxFTk9NU0c6NDIsRUlEUk06NDMsRUNIUk5HOjQ0LEVMMk5TWU5DOjQ1LEVMM0hMVDo0NixFTDNSU1Q6NDcsRUxOUk5HOjQ4LEVVTkFUQ0g6NDksRU5PQ1NJOjUwLEVMMkhMVDo1MSxFREVBRExLOjM1LEVOT0xDSzozNyxFQkFE''@;'; put 'put ''RTo1MixFQkFEUjo1MyxFWEZVTEw6NTQsRU5PQU5POjU1LEVCQURSUUM6NTYsRUJBRFNMVDo1NyxFREVBRExPQ0s6MzUsRUJGT05UOjU5LEVOT1NUUjo2MCxFTk9EQVRBOjYxLEVUSU1FOjYyLEVOT1NSOjYzLEVOT05FVDo2NCxFTk9QS0c6NjUsRVJFTU9URTo2NixFTk9MSU5LOjY3LEVBRFY6''@;'; put 'put ''NjgsRVNSTU5UOjY5LEVDT01NOjcwLEVQUk9UTzo3MSxFTVVMVElIT1A6NzIsRURPVERPVDo3MyxFQkFETVNHOjc0LEVOT1RVTklROjc2LEVCQURGRDo3NyxFUkVNQ0hHOjc4LEVMSUJBQ0M6NzksRUxJQkJBRDo4MCxFTElCU0NOOjgxLEVMSUJNQVg6ODIsRUxJQkVYRUM6ODMsRU5PU1lTOjM4''@;'; put 'put ''LEVOT1RFTVBUWTozOSxFTkFNRVRPT0xPTkc6MzYsRUxPT1A6NDAsRU9QTk9UU1VQUDo5NSxFUEZOT1NVUFBPUlQ6OTYsRUNPTk5SRVNFVDoxMDQsRU5PQlVGUzoxMDUsRUFGTk9TVVBQT1JUOjk3LEVQUk9UT1RZUEU6OTEsRU5PVFNPQ0s6ODgsRU5PUFJPVE9PUFQ6OTIsRVNIVVRET1dOOjEw''@;'; put 'put ''OCxFQ09OTlJFRlVTRUQ6MTExLEVBRERSSU5VU0U6OTgsRUNPTk5BQk9SVEVEOjEwMyxFTkVUVU5SRUFDSDoxMDEsRU5FVERPV046MTAwLEVUSU1FRE9VVDoxMTAsRUhPU1RET1dOOjExMixFSE9TVFVOUkVBQ0g6MTEzLEVJTlBST0dSRVNTOjExNSxFQUxSRUFEWToxMTQsRURFU1RBRERSUkVR''@;'; put 'put ''Ojg5LEVNU0dTSVpFOjkwLEVQUk9UT05PU1VQUE9SVDo5MyxFU09DS1ROT1NVUFBPUlQ6OTQsRUFERFJOT1RBVkFJTDo5OSxFTkVUUkVTRVQ6MTAyLEVJU0NPTk46MTA2LEVOT1RDT05OOjEwNyxFVE9PTUFOWVJFRlM6MTA5LEVVU0VSUzo4NyxFRFFVT1Q6MTIyLEVTVEFMRToxMTYsRU5PVFNV''@;'; put 'put ''UDo5NSxFTk9NRURJVU06MTIzLEVJTFNFUTo4NCxFT1ZFUkZMT1c6NzUsRUNBTkNFTEVEOjEyNSxFTk9UUkVDT1ZFUkFCTEU6MTMxLEVPV05FUkRFQUQ6MTMwLEVTVFJQSVBFOjg2fTtmdW5jdGlvbiBiMChkdCl7cmV0dXJuIGouX19fZXJybm9fbG9jYXRpb24mJihMdFtqLl9fX2Vycm5vX2xv''@;'; put 'put ''Y2F0aW9uKCk+PjJdPWR0KSxkdH1mdW5jdGlvbiBzYShkdCxJdCl7dmFyIFB0O2lmKDA9PT1kdClQdD1EYXRlLm5vdygpO2Vsc2V7aWYoMSE9PWR0fHwhQWkoKSlyZXR1cm4gYjAodmkuRUlOVkFMKSwtMTtQdD1nbCgpfXJldHVybiBMdFtJdD4+Ml09UHQvMWUzfDAsTHRbSXQrND4+Ml09UHQl''@;'; put 'put ''MWUzKjFlMyoxZTN8MCwwfWZ1bmN0aW9uIHJsKCl7cmV0dXJuIHNhLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBfaSgpe31mdW5jdGlvbiBvdShkdCxJdCl7cmV0dXJuIGIwKHZpLkVQRVJNKSwtMX12YXIgSGM9ezA6IlN1Y2Nlc3MiLDE6Ik5vdCBzdXBlci11c2VyIiwyOiJObyBz''@;'; put 'put ''dWNoIGZpbGUgb3IgZGlyZWN0b3J5IiwzOiJObyBzdWNoIHByb2Nlc3MiLDQ6IkludGVycnVwdGVkIHN5c3RlbSBjYWxsIiw1OiJJL08gZXJyb3IiLDY6Ik5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MiLDc6IkFyZyBsaXN0IHRvbyBsb25nIiw4OiJFeGVjIGZvcm1hdCBlcnJvciIsOToiQmFk''@;'; put 'put ''IGZpbGUgbnVtYmVyIiwxMDoiTm8gY2hpbGRyZW4iLDExOiJObyBtb3JlIHByb2Nlc3NlcyIsMTI6Ik5vdCBlbm91Z2ggY29yZSIsMTM6IlBlcm1pc3Npb24gZGVuaWVkIiwxNDoiQmFkIGFkZHJlc3MiLDE1OiJCbG9jayBkZXZpY2UgcmVxdWlyZWQiLDE2OiJNb3VudCBkZXZpY2UgYnVzeSIs''@;'; put 'put ''MTc6IkZpbGUgZXhpc3RzIiwxODoiQ3Jvc3MtZGV2aWNlIGxpbmsiLDE5OiJObyBzdWNoIGRldmljZSIsMjA6Ik5vdCBhIGRpcmVjdG9yeSIsMjE6IklzIGEgZGlyZWN0b3J5IiwyMjoiSW52YWxpZCBhcmd1bWVudCIsMjM6IlRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtIiwyNDoiVG9v''@;'; put 'put ''IG1hbnkgb3BlbiBmaWxlcyIsMjU6Ik5vdCBhIHR5cGV3cml0ZXIiLDI2OiJUZXh0IGZpbGUgYnVzeSIsMjc6IkZpbGUgdG9vIGxhcmdlIiwyODoiTm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UiLDI5OiJJbGxlZ2FsIHNlZWsiLDMwOiJSZWFkIG9ubHkgZmlsZSBzeXN0ZW0iLDMxOiJUb28gbWFu''@;'; put 'put ''eSBsaW5rcyIsMzI6IkJyb2tlbiBwaXBlIiwzMzoiTWF0aCBhcmcgb3V0IG9mIGRvbWFpbiBvZiBmdW5jIiwzNDoiTWF0aCByZXN1bHQgbm90IHJlcHJlc2VudGFibGUiLDM1OiJGaWxlIGxvY2tpbmcgZGVhZGxvY2sgZXJyb3IiLDM2OiJGaWxlIG9yIHBhdGggbmFtZSB0b28gbG9uZyIsMzc6''@;'; put 'put ''Ik5vIHJlY29yZCBsb2NrcyBhdmFpbGFibGUiLDM4OiJGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQiLDM5OiJEaXJlY3Rvcnkgbm90IGVtcHR5Iiw0MDoiVG9vIG1hbnkgc3ltYm9saWMgbGlua3MiLDQyOiJObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZSIsNDM6IklkZW50aWZpZXIgcmVtb3Zl''@;'; put 'put ''ZCIsNDQ6IkNoYW5uZWwgbnVtYmVyIG91dCBvZiByYW5nZSIsNDU6IkxldmVsIDIgbm90IHN5bmNocm9uaXplZCIsNDY6IkxldmVsIDMgaGFsdGVkIiw0NzoiTGV2ZWwgMyByZXNldCIsNDg6IkxpbmsgbnVtYmVyIG91dCBvZiByYW5nZSIsNDk6IlByb3RvY29sIGRyaXZlciBub3QgYXR0YWNo''@;'; put 'put ''ZWQiLDUwOiJObyBDU0kgc3RydWN0dXJlIGF2YWlsYWJsZSIsNTE6IkxldmVsIDIgaGFsdGVkIiw1MjoiSW52YWxpZCBleGNoYW5nZSIsNTM6IkludmFsaWQgcmVxdWVzdCBkZXNjcmlwdG9yIiw1NDoiRXhjaGFuZ2UgZnVsbCIsNTU6Ik5vIGFub2RlIiw1NjoiSW52YWxpZCByZXF1ZXN0IGNv''@;'; put 'put ''ZGUiLDU3OiJJbnZhbGlkIHNsb3QiLDU5OiJCYWQgZm9udCBmaWxlIGZtdCIsNjA6IkRldmljZSBub3QgYSBzdHJlYW0iLDYxOiJObyBkYXRhIChmb3Igbm8gZGVsYXkgaW8pIiw2MjoiVGltZXIgZXhwaXJlZCIsNjM6Ik91dCBvZiBzdHJlYW1zIHJlc291cmNlcyIsNjQ6Ik1hY2hpbmUgaXMg''@;'; put 'put ''bm90IG9uIHRoZSBuZXR3b3JrIiw2NToiUGFja2FnZSBub3QgaW5zdGFsbGVkIiw2NjoiVGhlIG9iamVjdCBpcyByZW1vdGUiLDY3OiJUaGUgbGluayBoYXMgYmVlbiBzZXZlcmVkIiw2ODoiQWR2ZXJ0aXNlIGVycm9yIiw2OToiU3Jtb3VudCBlcnJvciIsNzA6IkNvbW11bmljYXRpb24gZXJy''@;'; put 'put ''b3Igb24gc2VuZCIsNzE6IlByb3RvY29sIGVycm9yIiw3MjoiTXVsdGlob3AgYXR0ZW1wdGVkIiw3MzoiQ3Jvc3MgbW91bnQgcG9pbnQgKG5vdCByZWFsbHkgZXJyb3IpIiw3NDoiVHJ5aW5nIHRvIHJlYWQgdW5yZWFkYWJsZSBtZXNzYWdlIiw3NToiVmFsdWUgdG9vIGxhcmdlIGZvciBkZWZp''@;'; put 'put ''bmVkIGRhdGEgdHlwZSIsNzY6IkdpdmVuIGxvZy4gbmFtZSBub3QgdW5pcXVlIiw3NzoiZi5kLiBpbnZhbGlkIGZvciB0aGlzIG9wZXJhdGlvbiIsNzg6IlJlbW90ZSBhZGRyZXNzIGNoYW5nZWQiLDc5OiJDYW4gICBhY2Nlc3MgYSBuZWVkZWQgc2hhcmVkIGxpYiIsODA6IkFjY2Vzc2luZyBh''@;'; put 'put ''IGNvcnJ1cHRlZCBzaGFyZWQgbGliIiw4MToiLmxpYiBzZWN0aW9uIGluIGEub3V0IGNvcnJ1cHRlZCIsODI6IkF0dGVtcHRpbmcgdG8gbGluayBpbiB0b28gbWFueSBsaWJzIiw4MzoiQXR0ZW1wdGluZyB0byBleGVjIGEgc2hhcmVkIGxpYnJhcnkiLDg0OiJJbGxlZ2FsIGJ5dGUgc2VxdWVu''@;'; put 'put ''Y2UiLDg2OiJTdHJlYW1zIHBpcGUgZXJyb3IiLDg3OiJUb28gbWFueSB1c2VycyIsODg6IlNvY2tldCBvcGVyYXRpb24gb24gbm9uLXNvY2tldCIsODk6IkRlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQiLDkwOiJNZXNzYWdlIHRvbyBsb25nIiw5MToiUHJvdG9jb2wgd3JvbmcgdHlwZSBm''@;'; put 'put ''b3Igc29ja2V0Iiw5MjoiUHJvdG9jb2wgbm90IGF2YWlsYWJsZSIsOTM6IlVua25vd24gcHJvdG9jb2wiLDk0OiJTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkIiw5NToiTm90IHN1cHBvcnRlZCIsOTY6IlByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkIiw5NzoiQWRkcmVzcyBmYW1pbHkg''@;'; put 'put ''bm90IHN1cHBvcnRlZCBieSBwcm90b2NvbCBmYW1pbHkiLDk4OiJBZGRyZXNzIGFscmVhZHkgaW4gdXNlIiw5OToiQWRkcmVzcyBub3QgYXZhaWxhYmxlIiwxMDA6Ik5ldHdvcmsgaW50ZXJmYWNlIGlzIG5vdCBjb25maWd1cmVkIiwxMDE6Ik5ldHdvcmsgaXMgdW5yZWFjaGFibGUiLDEwMjoi''@;'; put 'put ''Q29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrIiwxMDM6IkNvbm5lY3Rpb24gYWJvcnRlZCIsMTA0OiJDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIiLDEwNToiTm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZSIsMTA2OiJTb2NrZXQgaXMgYWxyZWFkeSBjb25uZWN0ZWQiLDEwNzoiU29ja2V0IGlz''@;'; put 'put ''IG5vdCBjb25uZWN0ZWQiLDEwODoiQ2FuJ3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24iLDEwOToiVG9vIG1hbnkgcmVmZXJlbmNlcyIsMTEwOiJDb25uZWN0aW9uIHRpbWVkIG91dCIsMTExOiJDb25uZWN0aW9uIHJlZnVzZWQiLDExMjoiSG9zdCBpcyBkb3duIiwxMTM6Ikhvc3QgaXMg''@;'; put 'put ''dW5yZWFjaGFibGUiLDExNDoiU29ja2V0IGFscmVhZHkgY29ubmVjdGVkIiwxMTU6IkNvbm5lY3Rpb24gYWxyZWFkeSBpbiBwcm9ncmVzcyIsMTE2OiJTdGFsZSBmaWxlIGhhbmRsZSIsMTIyOiJRdW90YSBleGNlZWRlZCIsMTIzOiJObyBtZWRpdW0gKGluIHRhcGUgZHJpdmUpIiwxMjU6Ik9w''@;'; put 'put ''ZXJhdGlvbiBjYW5jZWxlZCIsMTMwOiJQcmV2aW91cyBvd25lciBkaWVkIiwxMzE6IlN0YXRlIG5vdCByZWNvdmVyYWJsZSJ9LFUwPXtzcGxpdFBhdGg6ZnVuY3Rpb24oZHQpe3JldHVybi9eKFwvP3wpKFtcc1xTXSo/KSgoPzpcLnsxLDJ9fFteXC9dKz98KShcLlteLlwvXSp8KSkoPzpbXC9d''@;'; put 'put ''KikkLy5leGVjKGR0KS5zbGljZSgxKX0sbm9ybWFsaXplQXJyYXk6ZnVuY3Rpb24oZHQsSXQpe2Zvcih2YXIgUHQ9MCxmZT1kdC5sZW5ndGgtMTtmZT49MDtmZS0tKXt2YXIgaXQ9ZHRbZmVdOyIuIj09PWl0P2R0LnNwbGljZShmZSwxKToiLi4iPT09aXQ/KGR0LnNwbGljZShmZSwxKSxQdCsr''@;'; put 'put ''KTpQdCYmKGR0LnNwbGljZShmZSwxKSxQdC0tKX1pZihJdClmb3IoO1B0O1B0LS0pZHQudW5zaGlmdCgiLi4iKTtyZXR1cm4gZHR9LG5vcm1hbGl6ZTpmdW5jdGlvbihkdCl7dmFyIEl0PSIvIj09PWR0LmNoYXJBdCgwKSxQdD0iLyI9PT1kdC5zdWJzdHIoLTEpO3JldHVybiEoZHQ9VTAubm9y''@;'; put 'put ''bWFsaXplQXJyYXkoZHQuc3BsaXQoIi8iKS5maWx0ZXIoZnVuY3Rpb24oZmUpe3JldHVybiEhZmV9KSwhSXQpLmpvaW4oIi8iKSkmJiFJdCYmKGR0PSIuIiksZHQmJlB0JiYoZHQrPSIvIiksKEl0PyIvIjoiIikrZHR9LGRpcm5hbWU6ZnVuY3Rpb24oZHQpe3ZhciBJdD1VMC5zcGxpdFBhdGgo''@;'; put 'put ''ZHQpLFB0PUl0WzBdLGZlPUl0WzFdO3JldHVybiBQdHx8ZmU/KGZlJiYoZmU9ZmUuc3Vic3RyKDAsZmUubGVuZ3RoLTEpKSxQdCtmZSk6Ii4ifSxiYXNlbmFtZTpmdW5jdGlvbihkdCl7aWYoIi8iPT09ZHQpcmV0dXJuIi8iO3ZhciBJdD1kdC5sYXN0SW5kZXhPZigiLyIpO3JldHVybi0xPT09''@;'; put 'put ''SXQ/ZHQ6ZHQuc3Vic3RyKEl0KzEpfSxleHRuYW1lOmZ1bmN0aW9uKGR0KXtyZXR1cm4gVTAuc3BsaXRQYXRoKGR0KVszXX0sam9pbjpmdW5jdGlvbigpe3ZhciBkdD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIFUwLm5vcm1hbGl6ZShkdC5qb2luKCIv''@;'; put 'put ''IikpfSxqb2luMjpmdW5jdGlvbihkdCxJdCl7cmV0dXJuIFUwLm5vcm1hbGl6ZShkdCsiLyIrSXQpfSxyZXNvbHZlOmZ1bmN0aW9uKCl7Zm9yKHZhciBkdD0iIixJdD0hMSxQdD1hcmd1bWVudHMubGVuZ3RoLTE7UHQ+PS0xJiYhSXQ7UHQtLSl7dmFyIGZlPVB0Pj0wP2FyZ3VtZW50c1tQdF06''@;'; put 'put ''dm4uY3dkKCk7aWYoInN0cmluZyIhPXR5cGVvZiBmZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5ncyIpO2lmKCFmZSlyZXR1cm4iIjtkdD1mZSsiLyIrZHQsSXQ9Ii8iPT09ZmUuY2hhckF0KDApfXJldHVybihJdD8iLyI6IiIp''@;'; put 'put ''KyhkdD1VMC5ub3JtYWxpemVBcnJheShkdC5zcGxpdCgiLyIpLmZpbHRlcihmdW5jdGlvbihpdCl7cmV0dXJuISFpdH0pLCFJdCkuam9pbigiLyIpKXx8Ii4ifSxyZWxhdGl2ZTpmdW5jdGlvbihkdCxJdCl7ZnVuY3Rpb24gUHQoam4pe2Zvcih2YXIgXz0wO188am4ubGVuZ3RoJiYiIj09PWpu''@;'; put 'put ''W19dO18rKyk7Zm9yKHZhciBBbz1qbi5sZW5ndGgtMTtBbz49MCYmIiI9PT1qbltBb107QW8tLSk7cmV0dXJuIF8+QW8/W106am4uc2xpY2UoXyxBby1fKzEpfWR0PVUwLnJlc29sdmUoZHQpLnN1YnN0cigxKSxJdD1VMC5yZXNvbHZlKEl0KS5zdWJzdHIoMSk7Zm9yKHZhciBmZT1QdChkdC5z''@;'; put 'put ''cGxpdCgiLyIpKSxpdD1QdChJdC5zcGxpdCgiLyIpKSxhPU1hdGgubWluKGZlLmxlbmd0aCxpdC5sZW5ndGgpLFh0PWEsaHI9MDtocjxhO2hyKyspaWYoZmVbaHJdIT09aXRbaHJdKXtYdD1ocjticmVha312YXIgUGk9W107Zm9yKGhyPVh0O2hyPGZlLmxlbmd0aDtocisrKVBpLnB1c2goIi4u''@;'; put 'put ''Iik7cmV0dXJuKFBpPVBpLmNvbmNhdChpdC5zbGljZShYdCkpKS5qb2luKCIvIil9fSxCcz17dHR5czpbXSxpbml0OmZ1bmN0aW9uKCl7fSxzaHV0ZG93bjpmdW5jdGlvbigpe30scmVnaXN0ZXI6ZnVuY3Rpb24oZHQsSXQpe0JzLnR0eXNbZHRdPXtpbnB1dDpbXSxvdXRwdXQ6W10sb3BzOkl0''@;'; put 'put ''fSx2bi5yZWdpc3RlckRldmljZShkdCxCcy5zdHJlYW1fb3BzKX0sc3RyZWFtX29wczp7b3BlbjpmdW5jdGlvbihkdCl7dmFyIEl0PUJzLnR0eXNbZHQubm9kZS5yZGV2XTtpZighSXQpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRU5PREVWKTtkdC50dHk9SXQsZHQuc2Vla2FibGU9ITF9''@;'; put 'put ''LGNsb3NlOmZ1bmN0aW9uKGR0KXtkdC50dHkub3BzLmZsdXNoKGR0LnR0eSl9LGZsdXNoOmZ1bmN0aW9uKGR0KXtkdC50dHkub3BzLmZsdXNoKGR0LnR0eSl9LHJlYWQ6ZnVuY3Rpb24oZHQsSXQsUHQsZmUsaXQpe2lmKCFkdC50dHl8fCFkdC50dHkub3BzLmdldF9jaGFyKXRocm93IG5ldyB2''@;'; put 'put ''bi5FcnJub0Vycm9yKHZpLkVOWElPKTtmb3IodmFyIGE9MCxYdD0wO1h0PGZlO1h0Kyspe3ZhciBocjt0cnl7aHI9ZHQudHR5Lm9wcy5nZXRfY2hhcihkdC50dHkpfWNhdGNoKFBpKXt0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FSU8pfWlmKHZvaWQgMD09PWhyJiYwPT09YSl0aHJvdyBu''@;'; put 'put ''ZXcgdm4uRXJybm9FcnJvcih2aS5FQUdBSU4pO2lmKG51bGw9PWhyKWJyZWFrO2ErKyxJdFtQdCtYdF09aHJ9cmV0dXJuIGEmJihkdC5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpKSxhfSx3cml0ZTpmdW5jdGlvbihkdCxJdCxQdCxmZSxpdCl7aWYoIWR0LnR0eXx8IWR0LnR0eS5vcHMucHV0''@;'; put 'put ''X2NoYXIpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRU5YSU8pO2Zvcih2YXIgYT0wO2E8ZmU7YSsrKXRyeXtkdC50dHkub3BzLnB1dF9jaGFyKGR0LnR0eSxJdFtQdCthXSl9Y2F0Y2goWHQpe3Rocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVJTyl9cmV0dXJuIGZlJiYoZHQubm9kZS50''@;'; put 'put ''aW1lc3RhbXA9RGF0ZS5ub3coKSksYX19LGRlZmF1bHRfdHR5X29wczp7Z2V0X2NoYXI6ZnVuY3Rpb24oZHQpe2lmKCFkdC5pbnB1dC5sZW5ndGgpe3ZhciBJdD1udWxsO2lmKE4pe3ZhciBmZT1uZXcgQnVmZmVyKDI1NiksaXQ9MCxhPSJ3aW4zMiIhPXByb2Nlc3MucGxhdGZvcm0sWHQ9cHJv''@;'; put 'put ''Y2Vzcy5zdGRpbi5mZDtpZihhKXt2YXIgaHI9ITE7dHJ5e1h0PW1sLm9wZW5TeW5jKCIvZGV2L3N0ZGluIiwiciIpLGhyPSEwfWNhdGNoKFBpKXt9fXRyeXtpdD1tbC5yZWFkU3luYyhYdCxmZSwwLDI1NixudWxsKX1jYXRjaChQaSl7aWYoLTE9PVBpLnRvU3RyaW5nKCkuaW5kZXhPZigiRU9G''@;'; put 'put ''IikpdGhyb3cgUGk7aXQ9MH1ociYmbWwuY2xvc2VTeW5jKFh0KSxJdD1pdD4wP2ZlLnNsaWNlKDAsaXQpLnRvU3RyaW5nKCJ1dGYtOCIpOm51bGx9ZWxzZSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYiZnVuY3Rpb24iPT10eXBlb2Ygd2luZG93LnByb21wdD9udWxsIT09KEl0PXdpbmRv''@;'; put 'put ''dy5wcm9tcHQoIklucHV0OiAiKSkmJihJdCs9IlxuIik6ImZ1bmN0aW9uIj09dHlwZW9mIHJlYWRsaW5lJiZudWxsIT09KEl0PXJlYWRsaW5lKCkpJiYoSXQrPSJcbiIpO2lmKCFJdClyZXR1cm4gbnVsbDtkdC5pbnB1dD1zbyhJdCwhMCl9cmV0dXJuIGR0LmlucHV0LnNoaWZ0KCl9LHB1dF9j''@;'; put 'put ''aGFyOmZ1bmN0aW9uKGR0LEl0KXtudWxsPT09SXR8fDEwPT09SXQ/KGoucHJpbnQoQ2UoZHQub3V0cHV0LDApKSxkdC5vdXRwdXQ9W10pOjAhPUl0JiZkdC5vdXRwdXQucHVzaChJdCl9LGZsdXNoOmZ1bmN0aW9uKGR0KXtkdC5vdXRwdXQmJmR0Lm91dHB1dC5sZW5ndGg+MCYmKGoucHJpbnQo''@;'; put 'put ''Q2UoZHQub3V0cHV0LDApKSxkdC5vdXRwdXQ9W10pfX0sZGVmYXVsdF90dHkxX29wczp7cHV0X2NoYXI6ZnVuY3Rpb24oZHQsSXQpe251bGw9PT1JdHx8MTA9PT1JdD8oai5wcmludEVycihDZShkdC5vdXRwdXQsMCkpLGR0Lm91dHB1dD1bXSk6MCE9SXQmJmR0Lm91dHB1dC5wdXNoKEl0KX0s''@;'; put 'put ''Zmx1c2g6ZnVuY3Rpb24oZHQpe2R0Lm91dHB1dCYmZHQub3V0cHV0Lmxlbmd0aD4wJiYoai5wcmludEVycihDZShkdC5vdXRwdXQsMCkpLGR0Lm91dHB1dD1bXSl9fX0sWDA9e29wc190YWJsZTpudWxsLG1vdW50OmZ1bmN0aW9uKGR0KXtyZXR1cm4gWDAuY3JlYXRlTm9kZShudWxsLCIvIiwx''@;'; put 'put ''Njg5NSwwKX0sY3JlYXRlTm9kZTpmdW5jdGlvbihkdCxJdCxQdCxmZSl7aWYodm4uaXNCbGtkZXYoUHQpfHx2bi5pc0ZJRk8oUHQpKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVQRVJNKTtYMC5vcHNfdGFibGV8fChYMC5vcHNfdGFibGU9e2Rpcjp7bm9kZTp7Z2V0YXR0cjpYMC5ub2Rl''@;'; put 'put ''X29wcy5nZXRhdHRyLHNldGF0dHI6WDAubm9kZV9vcHMuc2V0YXR0cixsb29rdXA6WDAubm9kZV9vcHMubG9va3VwLG1rbm9kOlgwLm5vZGVfb3BzLm1rbm9kLHJlbmFtZTpYMC5ub2RlX29wcy5yZW5hbWUsdW5saW5rOlgwLm5vZGVfb3BzLnVubGluayxybWRpcjpYMC5ub2RlX29wcy5ybWRp''@;'; put 'put ''cixyZWFkZGlyOlgwLm5vZGVfb3BzLnJlYWRkaXIsc3ltbGluazpYMC5ub2RlX29wcy5zeW1saW5rfSxzdHJlYW06e2xsc2VlazpYMC5zdHJlYW1fb3BzLmxsc2Vla319LGZpbGU6e25vZGU6e2dldGF0dHI6WDAubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRyOlgwLm5vZGVfb3BzLnNldGF0dHJ9''@;'; put 'put ''LHN0cmVhbTp7bGxzZWVrOlgwLnN0cmVhbV9vcHMubGxzZWVrLHJlYWQ6WDAuc3RyZWFtX29wcy5yZWFkLHdyaXRlOlgwLnN0cmVhbV9vcHMud3JpdGUsYWxsb2NhdGU6WDAuc3RyZWFtX29wcy5hbGxvY2F0ZSxtbWFwOlgwLnN0cmVhbV9vcHMubW1hcCxtc3luYzpYMC5zdHJlYW1fb3BzLm1z''@;'; put 'put ''eW5jfX0sbGluazp7bm9kZTp7Z2V0YXR0cjpYMC5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6WDAubm9kZV9vcHMuc2V0YXR0cixyZWFkbGluazpYMC5ub2RlX29wcy5yZWFkbGlua30sc3RyZWFtOnt9fSxjaHJkZXY6e25vZGU6e2dldGF0dHI6WDAubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRy''@;'; put 'put ''OlgwLm5vZGVfb3BzLnNldGF0dHJ9LHN0cmVhbTp2bi5jaHJkZXZfc3RyZWFtX29wc319KTt2YXIgaXQ9dm4uY3JlYXRlTm9kZShkdCxJdCxQdCxmZSk7cmV0dXJuIHZuLmlzRGlyKGl0Lm1vZGUpPyhpdC5ub2RlX29wcz1YMC5vcHNfdGFibGUuZGlyLm5vZGUsaXQuc3RyZWFtX29wcz1YMC5v''@;'; put 'put ''cHNfdGFibGUuZGlyLnN0cmVhbSxpdC5jb250ZW50cz17fSk6dm4uaXNGaWxlKGl0Lm1vZGUpPyhpdC5ub2RlX29wcz1YMC5vcHNfdGFibGUuZmlsZS5ub2RlLGl0LnN0cmVhbV9vcHM9WDAub3BzX3RhYmxlLmZpbGUuc3RyZWFtLGl0LnVzZWRCeXRlcz0wLGl0LmNvbnRlbnRzPW51bGwpOnZu''@;'; put 'put ''LmlzTGluayhpdC5tb2RlKT8oaXQubm9kZV9vcHM9WDAub3BzX3RhYmxlLmxpbmsubm9kZSxpdC5zdHJlYW1fb3BzPVgwLm9wc190YWJsZS5saW5rLnN0cmVhbSk6dm4uaXNDaHJkZXYoaXQubW9kZSkmJihpdC5ub2RlX29wcz1YMC5vcHNfdGFibGUuY2hyZGV2Lm5vZGUsaXQuc3RyZWFtX29w''@;'; put 'put ''cz1YMC5vcHNfdGFibGUuY2hyZGV2LnN0cmVhbSksaXQudGltZXN0YW1wPURhdGUubm93KCksZHQmJihkdC5jb250ZW50c1tJdF09aXQpLGl0fSxnZXRGaWxlRGF0YUFzUmVndWxhckFycmF5OmZ1bmN0aW9uKGR0KXtpZihkdC5jb250ZW50cyYmZHQuY29udGVudHMuc3ViYXJyYXkpe2Zvcih2''@;'; put 'put ''YXIgSXQ9W10sUHQ9MDtQdDxkdC51c2VkQnl0ZXM7KytQdClJdC5wdXNoKGR0LmNvbnRlbnRzW1B0XSk7cmV0dXJuIEl0fXJldHVybiBkdC5jb250ZW50c30sZ2V0RmlsZURhdGFBc1R5cGVkQXJyYXk6ZnVuY3Rpb24oZHQpe3JldHVybiBkdC5jb250ZW50cz9kdC5jb250ZW50cy5zdWJhcnJh''@;'; put 'put ''eT9kdC5jb250ZW50cy5zdWJhcnJheSgwLGR0LnVzZWRCeXRlcyk6bmV3IFVpbnQ4QXJyYXkoZHQuY29udGVudHMpOm5ldyBVaW50OEFycmF5fSxleHBhbmRGaWxlU3RvcmFnZTpmdW5jdGlvbihkdCxJdCl7aWYoZHQuY29udGVudHMmJmR0LmNvbnRlbnRzLnN1YmFycmF5JiZJdD5kdC5jb250''@;'; put 'put ''ZW50cy5sZW5ndGgmJihkdC5jb250ZW50cz1YMC5nZXRGaWxlRGF0YUFzUmVndWxhckFycmF5KGR0KSxkdC51c2VkQnl0ZXM9ZHQuY29udGVudHMubGVuZ3RoKSwhZHQuY29udGVudHN8fGR0LmNvbnRlbnRzLnN1YmFycmF5KXt2YXIgUHQ9ZHQuY29udGVudHM/ZHQuY29udGVudHMubGVuZ3Ro''@;'; put 'put ''OjA7aWYoUHQ+PUl0KXJldHVybjtJdD1NYXRoLm1heChJdCxQdCooUHQ8MTA0ODU3Nj8yOjEuMTI1KXwwKSwwIT1QdCYmKEl0PU1hdGgubWF4KEl0LDI1NikpO3ZhciBpdD1kdC5jb250ZW50cztyZXR1cm4gZHQuY29udGVudHM9bmV3IFVpbnQ4QXJyYXkoSXQpLHZvaWQoZHQudXNlZEJ5dGVz''@;'; put 'put ''PjAmJmR0LmNvbnRlbnRzLnNldChpdC5zdWJhcnJheSgwLGR0LnVzZWRCeXRlcyksMCkpfWZvcighZHQuY29udGVudHMmJkl0PjAmJihkdC5jb250ZW50cz1bXSk7ZHQuY29udGVudHMubGVuZ3RoPEl0OylkdC5jb250ZW50cy5wdXNoKDApfSxyZXNpemVGaWxlU3RvcmFnZTpmdW5jdGlvbihk''@;'; put 'put ''dCxJdCl7aWYoZHQudXNlZEJ5dGVzIT1JdCl7aWYoMD09SXQpcmV0dXJuIGR0LmNvbnRlbnRzPW51bGwsdm9pZChkdC51c2VkQnl0ZXM9MCk7aWYoIWR0LmNvbnRlbnRzfHxkdC5jb250ZW50cy5zdWJhcnJheSl7dmFyIFB0PWR0LmNvbnRlbnRzO3JldHVybiBkdC5jb250ZW50cz1uZXcgVWlu''@;'; put 'put ''dDhBcnJheShuZXcgQXJyYXlCdWZmZXIoSXQpKSxQdCYmZHQuY29udGVudHMuc2V0KFB0LnN1YmFycmF5KDAsTWF0aC5taW4oSXQsZHQudXNlZEJ5dGVzKSkpLHZvaWQoZHQudXNlZEJ5dGVzPUl0KX1pZihkdC5jb250ZW50c3x8KGR0LmNvbnRlbnRzPVtdKSxkdC5jb250ZW50cy5sZW5ndGg+''@;'; put 'put ''SXQpZHQuY29udGVudHMubGVuZ3RoPUl0O2Vsc2UgZm9yKDtkdC5jb250ZW50cy5sZW5ndGg8SXQ7KWR0LmNvbnRlbnRzLnB1c2goMCk7ZHQudXNlZEJ5dGVzPUl0fX0sbm9kZV9vcHM6e2dldGF0dHI6ZnVuY3Rpb24oZHQpe3ZhciBJdD17fTtyZXR1cm4gSXQuZGV2PXZuLmlzQ2hyZGV2KGR0''@;'; put 'put ''Lm1vZGUpP2R0LmlkOjEsSXQuaW5vPWR0LmlkLEl0Lm1vZGU9ZHQubW9kZSxJdC5ubGluaz0xLEl0LnVpZD0wLEl0LmdpZD0wLEl0LnJkZXY9ZHQucmRldixJdC5zaXplPXZuLmlzRGlyKGR0Lm1vZGUpPzQwOTY6dm4uaXNGaWxlKGR0Lm1vZGUpP2R0LnVzZWRCeXRlczp2bi5pc0xpbmsoZHQu''@;'; put 'put ''bW9kZSk/ZHQubGluay5sZW5ndGg6MCxJdC5hdGltZT1uZXcgRGF0ZShkdC50aW1lc3RhbXApLEl0Lm10aW1lPW5ldyBEYXRlKGR0LnRpbWVzdGFtcCksSXQuY3RpbWU9bmV3IERhdGUoZHQudGltZXN0YW1wKSxJdC5ibGtzaXplPTQwOTYsSXQuYmxvY2tzPU1hdGguY2VpbChJdC5zaXplL0l0''@;'; put 'put ''LmJsa3NpemUpLEl0fSxzZXRhdHRyOmZ1bmN0aW9uKGR0LEl0KXt2b2lkIDAhPT1JdC5tb2RlJiYoZHQubW9kZT1JdC5tb2RlKSx2b2lkIDAhPT1JdC50aW1lc3RhbXAmJihkdC50aW1lc3RhbXA9SXQudGltZXN0YW1wKSx2b2lkIDAhPT1JdC5zaXplJiZYMC5yZXNpemVGaWxlU3RvcmFnZShk''@;'; put 'put ''dCxJdC5zaXplKX0sbG9va3VwOmZ1bmN0aW9uKGR0LEl0KXt0aHJvdyB2bi5nZW5lcmljRXJyb3JzW3ZpLkVOT0VOVF19LG1rbm9kOmZ1bmN0aW9uKGR0LEl0LFB0LGZlKXtyZXR1cm4gWDAuY3JlYXRlTm9kZShkdCxJdCxQdCxmZSl9LHJlbmFtZTpmdW5jdGlvbihkdCxJdCxQdCl7aWYodm4u''@;'; put 'put ''aXNEaXIoZHQubW9kZSkpe3ZhciBmZTt0cnl7ZmU9dm4ubG9va3VwTm9kZShJdCxQdCl9Y2F0Y2goYSl7fWlmKGZlKWZvcih2YXIgaXQgaW4gZmUuY29udGVudHMpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRU5PVEVNUFRZKX1kZWxldGUgZHQucGFyZW50LmNvbnRlbnRzW2R0Lm5hbWVd''@;'; put 'put ''LGR0Lm5hbWU9UHQsSXQuY29udGVudHNbUHRdPWR0LGR0LnBhcmVudD1JdH0sdW5saW5rOmZ1bmN0aW9uKGR0LEl0KXtkZWxldGUgZHQuY29udGVudHNbSXRdfSxybWRpcjpmdW5jdGlvbihkdCxJdCl7dmFyIFB0PXZuLmxvb2t1cE5vZGUoZHQsSXQpO2Zvcih2YXIgZmUgaW4gUHQuY29udGVu''@;'; put 'put ''dHMpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRU5PVEVNUFRZKTtkZWxldGUgZHQuY29udGVudHNbSXRdfSxyZWFkZGlyOmZ1bmN0aW9uKGR0KXt2YXIgSXQ9WyIuIiwiLi4iXTtmb3IodmFyIFB0IGluIGR0LmNvbnRlbnRzKSFkdC5jb250ZW50cy5oYXNPd25Qcm9wZXJ0eShQdCl8fEl0''@;'; put 'put ''LnB1c2goUHQpO3JldHVybiBJdH0sc3ltbGluazpmdW5jdGlvbihkdCxJdCxQdCl7dmFyIGZlPVgwLmNyZWF0ZU5vZGUoZHQsSXQsNDE0NzEsMCk7cmV0dXJuIGZlLmxpbms9UHQsZmV9LHJlYWRsaW5rOmZ1bmN0aW9uKGR0KXtpZighdm4uaXNMaW5rKGR0Lm1vZGUpKXRocm93IG5ldyB2bi5F''@;'; put 'put ''cnJub0Vycm9yKHZpLkVJTlZBTCk7cmV0dXJuIGR0Lmxpbmt9fSxzdHJlYW1fb3BzOntyZWFkOmZ1bmN0aW9uKGR0LEl0LFB0LGZlLGl0KXt2YXIgYT1kdC5ub2RlLmNvbnRlbnRzO2lmKGl0Pj1kdC5ub2RlLnVzZWRCeXRlcylyZXR1cm4gMDt2YXIgWHQ9TWF0aC5taW4oZHQubm9kZS51c2Vk''@;'; put 'put ''Qnl0ZXMtaXQsZmUpO2lmKE8oWHQ+PTApLFh0PjgmJmEuc3ViYXJyYXkpSXQuc2V0KGEuc3ViYXJyYXkoaXQsaXQrWHQpLFB0KTtlbHNlIGZvcih2YXIgaHI9MDtocjxYdDtocisrKUl0W1B0K2hyXT1hW2l0K2hyXTtyZXR1cm4gWHR9LHdyaXRlOmZ1bmN0aW9uKGR0LEl0LFB0LGZlLGl0LGEp''@;'; put 'put ''e2lmKCFmZSlyZXR1cm4gMDt2YXIgWHQ9ZHQubm9kZTtpZihYdC50aW1lc3RhbXA9RGF0ZS5ub3coKSxJdC5zdWJhcnJheSYmKCFYdC5jb250ZW50c3x8WHQuY29udGVudHMuc3ViYXJyYXkpKXtpZihhKXJldHVybiBYdC5jb250ZW50cz1JdC5zdWJhcnJheShQdCxQdCtmZSksWHQudXNlZEJ5''@;'; put 'put ''dGVzPWZlLGZlO2lmKDA9PT1YdC51c2VkQnl0ZXMmJjA9PT1pdClyZXR1cm4gWHQuY29udGVudHM9bmV3IFVpbnQ4QXJyYXkoSXQuc3ViYXJyYXkoUHQsUHQrZmUpKSxYdC51c2VkQnl0ZXM9ZmUsZmU7aWYoaXQrZmU8PVh0LnVzZWRCeXRlcylyZXR1cm4gWHQuY29udGVudHMuc2V0KEl0LnN1''@;'; put 'put ''YmFycmF5KFB0LFB0K2ZlKSxpdCksZmV9aWYoWDAuZXhwYW5kRmlsZVN0b3JhZ2UoWHQsaXQrZmUpLFh0LmNvbnRlbnRzLnN1YmFycmF5JiZJdC5zdWJhcnJheSlYdC5jb250ZW50cy5zZXQoSXQuc3ViYXJyYXkoUHQsUHQrZmUpLGl0KTtlbHNlIGZvcih2YXIgaHI9MDtocjxmZTtocisrKVh0''@;'; put 'put ''LmNvbnRlbnRzW2l0K2hyXT1JdFtQdCtocl07cmV0dXJuIFh0LnVzZWRCeXRlcz1NYXRoLm1heChYdC51c2VkQnl0ZXMsaXQrZmUpLGZlfSxsbHNlZWs6ZnVuY3Rpb24oZHQsSXQsUHQpe3ZhciBmZT1JdDtpZigxPT09UHQ/ZmUrPWR0LnBvc2l0aW9uOjI9PT1QdCYmdm4uaXNGaWxlKGR0Lm5v''@;'; put 'put ''ZGUubW9kZSkmJihmZSs9ZHQubm9kZS51c2VkQnl0ZXMpLGZlPDApdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRUlOVkFMKTtyZXR1cm4gZmV9LGFsbG9jYXRlOmZ1bmN0aW9uKGR0LEl0LFB0KXtYMC5leHBhbmRGaWxlU3RvcmFnZShkdC5ub2RlLEl0K1B0KSxkdC5ub2RlLnVzZWRCeXRl''@;'; put 'put ''cz1NYXRoLm1heChkdC5ub2RlLnVzZWRCeXRlcyxJdCtQdCl9LG1tYXA6ZnVuY3Rpb24oZHQsSXQsUHQsZmUsaXQsYSxYdCl7aWYoIXZuLmlzRmlsZShkdC5ub2RlLm1vZGUpKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVOT0RFVik7dmFyIGhyLFBpLGpuPWR0Lm5vZGUuY29udGVudHM7''@;'; put 'put ''aWYoMiZYdHx8am4uYnVmZmVyIT09SXQmJmpuLmJ1ZmZlciE9PUl0LmJ1ZmZlcil7aWYoKGl0PjB8fGl0K2ZlPGR0Lm5vZGUudXNlZEJ5dGVzKSYmKGpuPWpuLnN1YmFycmF5P2puLnN1YmFycmF5KGl0LGl0K2ZlKTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChqbixpdCxpdCtmZSkpLFBp''@;'; put 'put ''PSEwLCEoaHI9enAoZmUpKSl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FTk9NRU0pO0l0LnNldChqbixocil9ZWxzZSBQaT0hMSxocj1qbi5ieXRlT2Zmc2V0O3JldHVybntwdHI6aHIsYWxsb2NhdGVkOlBpfX0sbXN5bmM6ZnVuY3Rpb24oZHQsSXQsUHQsZmUsaXQpe2lmKCF2bi5pc0Zp''@;'; put 'put ''bGUoZHQubm9kZS5tb2RlKSl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FTk9ERVYpO3JldHVybiAyJml0fHxYMC5zdHJlYW1fb3BzLndyaXRlKGR0LEl0LDAsZmUsUHQsITEpLDB9fX0sdWE9e2Riczp7fSxpbmRleGVkREI6ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGlu''@;'; put 'put ''ZGV4ZWREQilyZXR1cm4gaW5kZXhlZERCO3ZhciBkdD1udWxsO3JldHVybiJvYmplY3QiPT10eXBlb2Ygd2luZG93JiYoZHQ9d2luZG93LmluZGV4ZWREQnx8d2luZG93Lm1vekluZGV4ZWREQnx8d2luZG93LndlYmtpdEluZGV4ZWREQnx8d2luZG93Lm1zSW5kZXhlZERCKSxPKGR0LCJJREJG''@;'; put 'put ''UyB1c2VkLCBidXQgaW5kZXhlZERCIG5vdCBzdXBwb3J0ZWQiKSxkdH0sREJfVkVSU0lPTjoyMSxEQl9TVE9SRV9OQU1FOiJGSUxFX0RBVEEiLG1vdW50OmZ1bmN0aW9uKGR0KXtyZXR1cm4gWDAubW91bnQuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxzeW5jZnM6ZnVuY3Rpb24oZHQsSXQsUHQp''@;'; put 'put ''e3VhLmdldExvY2FsU2V0KGR0LGZ1bmN0aW9uKGZlLGl0KXtpZihmZSlyZXR1cm4gUHQoZmUpO3VhLmdldFJlbW90ZVNldChkdCxmdW5jdGlvbihhLFh0KXtpZihhKXJldHVybiBQdChhKTt1YS5yZWNvbmNpbGUoSXQ/WHQ6aXQsSXQ/aXQ6WHQsUHQpfSl9KX0sZ2V0REI6ZnVuY3Rpb24oZHQs''@;'; put 'put ''SXQpe3ZhciBmZSxQdD11YS5kYnNbZHRdO2lmKFB0KXJldHVybiBJdChudWxsLFB0KTt0cnl7ZmU9dWEuaW5kZXhlZERCKCkub3BlbihkdCx1YS5EQl9WRVJTSU9OKX1jYXRjaChpdCl7cmV0dXJuIEl0KGl0KX1pZighZmUpcmV0dXJuIEl0KCJVbmFibGUgdG8gY29ubmVjdCB0byBJbmRleGVk''@;'; put 'put ''REIiKTtmZS5vbnVwZ3JhZGVuZWVkZWQ9ZnVuY3Rpb24oaXQpe3ZhciBocixhPWl0LnRhcmdldC5yZXN1bHQsWHQ9aXQudGFyZ2V0LnRyYW5zYWN0aW9uOyhocj1hLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnModWEuREJfU1RPUkVfTkFNRSk/WHQub2JqZWN0U3RvcmUodWEuREJfU1RPUkVf''@;'; put 'put ''TkFNRSk6YS5jcmVhdGVPYmplY3RTdG9yZSh1YS5EQl9TVE9SRV9OQU1FKSkuaW5kZXhOYW1lcy5jb250YWlucygidGltZXN0YW1wIil8fGhyLmNyZWF0ZUluZGV4KCJ0aW1lc3RhbXAiLCJ0aW1lc3RhbXAiLHt1bmlxdWU6ITF9KX0sZmUub25zdWNjZXNzPWZ1bmN0aW9uKCl7dWEuZGJzW2R0''@;'; put 'put ''XT1QdD1mZS5yZXN1bHQsSXQobnVsbCxQdCl9LGZlLm9uZXJyb3I9ZnVuY3Rpb24oaXQpe0l0KHRoaXMuZXJyb3IpLGl0LnByZXZlbnREZWZhdWx0KCl9fSxnZXRMb2NhbFNldDpmdW5jdGlvbihkdCxJdCl7dmFyIFB0PXt9O2Z1bmN0aW9uIGZlKFBpKXtyZXR1cm4iLiIhPT1QaSYmIi4uIiE9''@;'; put 'put ''PVBpfWZ1bmN0aW9uIGl0KFBpKXtyZXR1cm4gZnVuY3Rpb24oam4pe3JldHVybiBVMC5qb2luMihQaSxqbil9fWZvcih2YXIgYT12bi5yZWFkZGlyKGR0Lm1vdW50cG9pbnQpLmZpbHRlcihmZSkubWFwKGl0KGR0Lm1vdW50cG9pbnQpKTthLmxlbmd0aDspe3ZhciBocixYdD1hLnBvcCgpO3Ry''@;'; put 'put ''eXtocj12bi5zdGF0KFh0KX1jYXRjaChQaSl7cmV0dXJuIEl0KFBpKX12bi5pc0Rpcihoci5tb2RlKSYmYS5wdXNoLmFwcGx5KGEsdm4ucmVhZGRpcihYdCkuZmlsdGVyKGZlKS5tYXAoaXQoWHQpKSksUHRbWHRdPXt0aW1lc3RhbXA6aHIubXRpbWV9fXJldHVybiBJdChudWxsLHt0eXBlOiJs''@;'; put 'put ''b2NhbCIsZW50cmllczpQdH0pfSxnZXRSZW1vdGVTZXQ6ZnVuY3Rpb24oZHQsSXQpe3ZhciBQdD17fTt1YS5nZXREQihkdC5tb3VudHBvaW50LGZ1bmN0aW9uKGZlLGl0KXtpZihmZSlyZXR1cm4gSXQoZmUpO3RyeXt2YXIgYT1pdC50cmFuc2FjdGlvbihbdWEuREJfU1RPUkVfTkFNRV0sInJl''@;'; put 'put ''YWRvbmx5Iik7YS5vbmVycm9yPWZ1bmN0aW9uKFBpKXtJdCh0aGlzLmVycm9yKSxQaS5wcmV2ZW50RGVmYXVsdCgpfSxhLm9iamVjdFN0b3JlKHVhLkRCX1NUT1JFX05BTUUpLmluZGV4KCJ0aW1lc3RhbXAiKS5vcGVuS2V5Q3Vyc29yKCkub25zdWNjZXNzPWZ1bmN0aW9uKFBpKXt2YXIgam49''@;'; put 'put ''UGkudGFyZ2V0LnJlc3VsdDtpZigham4pcmV0dXJuIEl0KG51bGwse3R5cGU6InJlbW90ZSIsZGI6aXQsZW50cmllczpQdH0pO1B0W2puLnByaW1hcnlLZXldPXt0aW1lc3RhbXA6am4ua2V5fSxqbi5jb250aW51ZSgpfX1jYXRjaChQaSl7cmV0dXJuIEl0KFBpKX19KX0sbG9hZExvY2FsRW50''@;'; put 'put ''cnk6ZnVuY3Rpb24oZHQsSXQpe3ZhciBQdCxmZTt0cnl7ZmU9dm4ubG9va3VwUGF0aChkdCkubm9kZSxQdD12bi5zdGF0KGR0KX1jYXRjaChhKXtyZXR1cm4gSXQoYSl9cmV0dXJuIHZuLmlzRGlyKFB0Lm1vZGUpP0l0KG51bGwse3RpbWVzdGFtcDpQdC5tdGltZSxtb2RlOlB0Lm1vZGV9KTp2''@;'; put 'put ''bi5pc0ZpbGUoUHQubW9kZSk/KGZlLmNvbnRlbnRzPVgwLmdldEZpbGVEYXRhQXNUeXBlZEFycmF5KGZlKSxJdChudWxsLHt0aW1lc3RhbXA6UHQubXRpbWUsbW9kZTpQdC5tb2RlLGNvbnRlbnRzOmZlLmNvbnRlbnRzfSkpOkl0KG5ldyBFcnJvcigibm9kZSB0eXBlIG5vdCBzdXBwb3J0ZWQi''@;'; put 'put ''KSl9LHN0b3JlTG9jYWxFbnRyeTpmdW5jdGlvbihkdCxJdCxQdCl7dHJ5e2lmKHZuLmlzRGlyKEl0Lm1vZGUpKXZuLm1rZGlyKGR0LEl0Lm1vZGUpO2Vsc2V7aWYoIXZuLmlzRmlsZShJdC5tb2RlKSlyZXR1cm4gUHQobmV3IEVycm9yKCJub2RlIHR5cGUgbm90IHN1cHBvcnRlZCIpKTt2bi53''@;'; put 'put ''cml0ZUZpbGUoZHQsSXQuY29udGVudHMse2Nhbk93bjohMH0pfXZuLmNobW9kKGR0LEl0Lm1vZGUpLHZuLnV0aW1lKGR0LEl0LnRpbWVzdGFtcCxJdC50aW1lc3RhbXApfWNhdGNoKGZlKXtyZXR1cm4gUHQoZmUpfVB0KG51bGwpfSxyZW1vdmVMb2NhbEVudHJ5OmZ1bmN0aW9uKGR0LEl0KXt0''@;'; put 'put ''cnl7dm4ubG9va3VwUGF0aChkdCk7dmFyIGZlPXZuLnN0YXQoZHQpO3ZuLmlzRGlyKGZlLm1vZGUpP3ZuLnJtZGlyKGR0KTp2bi5pc0ZpbGUoZmUubW9kZSkmJnZuLnVubGluayhkdCl9Y2F0Y2goaXQpe3JldHVybiBJdChpdCl9SXQobnVsbCl9LGxvYWRSZW1vdGVFbnRyeTpmdW5jdGlvbihk''@;'; put 'put ''dCxJdCxQdCl7dmFyIGZlPWR0LmdldChJdCk7ZmUub25zdWNjZXNzPWZ1bmN0aW9uKGl0KXtQdChudWxsLGl0LnRhcmdldC5yZXN1bHQpfSxmZS5vbmVycm9yPWZ1bmN0aW9uKGl0KXtQdCh0aGlzLmVycm9yKSxpdC5wcmV2ZW50RGVmYXVsdCgpfX0sc3RvcmVSZW1vdGVFbnRyeTpmdW5jdGlv''@;'; put 'put ''bihkdCxJdCxQdCxmZSl7dmFyIGl0PWR0LnB1dChQdCxJdCk7aXQub25zdWNjZXNzPWZ1bmN0aW9uKCl7ZmUobnVsbCl9LGl0Lm9uZXJyb3I9ZnVuY3Rpb24oYSl7ZmUodGhpcy5lcnJvciksYS5wcmV2ZW50RGVmYXVsdCgpfX0scmVtb3ZlUmVtb3RlRW50cnk6ZnVuY3Rpb24oZHQsSXQsUHQp''@;'; put 'put ''e3ZhciBmZT1kdC5kZWxldGUoSXQpO2ZlLm9uc3VjY2Vzcz1mdW5jdGlvbigpe1B0KG51bGwpfSxmZS5vbmVycm9yPWZ1bmN0aW9uKGl0KXtQdCh0aGlzLmVycm9yKSxpdC5wcmV2ZW50RGVmYXVsdCgpfX0scmVjb25jaWxlOmZ1bmN0aW9uKGR0LEl0LFB0KXt2YXIgZmU9MCxpdD1bXTtPYmpl''@;'; put 'put ''Y3Qua2V5cyhkdC5lbnRyaWVzKS5mb3JFYWNoKGZ1bmN0aW9uKEFvKXt2YXIgJG89SXQuZW50cmllc1tBb107KCEkb3x8ZHQuZW50cmllc1tBb10udGltZXN0YW1wPiRvLnRpbWVzdGFtcCkmJihpdC5wdXNoKEFvKSxmZSsrKX0pO3ZhciBhPVtdO2lmKE9iamVjdC5rZXlzKEl0LmVudHJpZXMp''@;'; put 'put ''LmZvckVhY2goZnVuY3Rpb24oQW8pe2R0LmVudHJpZXNbQW9dfHwoYS5wdXNoKEFvKSxmZSsrKX0pLCFmZSlyZXR1cm4gUHQobnVsbCk7dmFyIFh0PTAsUGk9KCJyZW1vdGUiPT09ZHQudHlwZT9kdC5kYjpJdC5kYikudHJhbnNhY3Rpb24oW3VhLkRCX1NUT1JFX05BTUVdLCJyZWFkd3JpdGUi''@;'; put 'put ''KSxqbj1QaS5vYmplY3RTdG9yZSh1YS5EQl9TVE9SRV9OQU1FKTtmdW5jdGlvbiBfKEFvKXtyZXR1cm4gQW8/Xy5lcnJvcmVkP3ZvaWQgMDooXy5lcnJvcmVkPSEwLFB0KEFvKSk6KytYdD49ZmU/UHQobnVsbCk6dm9pZCAwfVBpLm9uZXJyb3I9ZnVuY3Rpb24oQW8pe18odGhpcy5lcnJvciks''@;'; put 'put ''QW8ucHJldmVudERlZmF1bHQoKX0saXQuc29ydCgpLmZvckVhY2goZnVuY3Rpb24oQW8peyJsb2NhbCI9PT1JdC50eXBlP3VhLmxvYWRSZW1vdGVFbnRyeShqbixBbyxmdW5jdGlvbihTaSwkbyl7aWYoU2kpcmV0dXJuIF8oU2kpO3VhLnN0b3JlTG9jYWxFbnRyeShBbywkbyxfKX0pOnVhLmxv''@;'; put 'put ''YWRMb2NhbEVudHJ5KEFvLGZ1bmN0aW9uKFNpLCRvKXtpZihTaSlyZXR1cm4gXyhTaSk7dWEuc3RvcmVSZW1vdGVFbnRyeShqbixBbywkbyxfKX0pfSksYS5zb3J0KCkucmV2ZXJzZSgpLmZvckVhY2goZnVuY3Rpb24oQW8peyJsb2NhbCI9PT1JdC50eXBlP3VhLnJlbW92ZUxvY2FsRW50cnko''@;'; put 'put ''QW8sXyk6dWEucmVtb3ZlUmVtb3RlRW50cnkoam4sQW8sXyl9KX19LGowPXtpc1dpbmRvd3M6ITEsc3RhdGljSW5pdDpmdW5jdGlvbigpe2owLmlzV2luZG93cz0hIXByb2Nlc3MucGxhdGZvcm0ubWF0Y2goL153aW4vKTt2YXIgZHQ9cHJvY2Vzcy5iaW5kaW5nKCJjb25zdGFudHMiKTtkdC5m''@;'; put 'put ''cyYmKGR0PWR0LmZzKSxqMC5mbGFnc0Zvck5vZGVNYXA9ezEwMjQ6ZHQuT19BUFBFTkQsNjQ6ZHQuT19DUkVBVCwxMjg6ZHQuT19FWENMLDA6ZHQuT19SRE9OTFksMjpkdC5PX1JEV1IsNDA5NjpkdC5PX1NZTkMsNTEyOmR0Lk9fVFJVTkMsMTpkdC5PX1dST05MWX19LGJ1ZmZlckZyb206ZnVu''@;'; put 'put ''Y3Rpb24oZHQpe3JldHVybiBCdWZmZXIuYWxsb2M/QnVmZmVyLmZyb20oZHQpOm5ldyBCdWZmZXIoZHQpfSxtb3VudDpmdW5jdGlvbihkdCl7cmV0dXJuIE8oTiksajAuY3JlYXRlTm9kZShudWxsLCIvIixqMC5nZXRNb2RlKGR0Lm9wdHMucm9vdCksMCl9LGNyZWF0ZU5vZGU6ZnVuY3Rpb24o''@;'; put 'put ''ZHQsSXQsUHQsZmUpe2lmKCF2bi5pc0RpcihQdCkmJiF2bi5pc0ZpbGUoUHQpJiYhdm4uaXNMaW5rKFB0KSl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FSU5WQUwpO3ZhciBpdD12bi5jcmVhdGVOb2RlKGR0LEl0LFB0KTtyZXR1cm4gaXQubm9kZV9vcHM9ajAubm9kZV9vcHMsaXQuc3Ry''@;'; put 'put ''ZWFtX29wcz1qMC5zdHJlYW1fb3BzLGl0fSxnZXRNb2RlOmZ1bmN0aW9uKGR0KXt2YXIgSXQ7dHJ5e0l0PW1sLmxzdGF0U3luYyhkdCksajAuaXNXaW5kb3dzJiYoSXQubW9kZT1JdC5tb2RlfCgyOTImSXQubW9kZSk+PjIpfWNhdGNoKFB0KXt0aHJvdyBQdC5jb2RlP25ldyB2bi5FcnJub0Vy''@;'; put 'put ''cm9yKHZpW1B0LmNvZGVdKTpQdH1yZXR1cm4gSXQubW9kZX0scmVhbFBhdGg6ZnVuY3Rpb24oZHQpe2Zvcih2YXIgSXQ9W107ZHQucGFyZW50IT09ZHQ7KUl0LnB1c2goZHQubmFtZSksZHQ9ZHQucGFyZW50O3JldHVybiBJdC5wdXNoKGR0Lm1vdW50Lm9wdHMucm9vdCksSXQucmV2ZXJzZSgp''@;'; put 'put ''LFUwLmpvaW4uYXBwbHkobnVsbCxJdCl9LGZsYWdzRm9yTm9kZTpmdW5jdGlvbihkdCl7ZHQmPS0yMDk3MTUzLGR0Jj0tMjA0OSxkdCY9LTMyNzY5LGR0Jj0tNTI0Mjg5O3ZhciBJdD0wO2Zvcih2YXIgUHQgaW4gajAuZmxhZ3NGb3JOb2RlTWFwKWR0JlB0JiYoSXR8PWowLmZsYWdzRm9yTm9k''@;'; put 'put ''ZU1hcFtQdF0sZHRePVB0KTtpZihkdCl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FSU5WQUwpO3JldHVybiBJdH0sbm9kZV9vcHM6e2dldGF0dHI6ZnVuY3Rpb24oZHQpe3ZhciBQdCxJdD1qMC5yZWFsUGF0aChkdCk7dHJ5e1B0PW1sLmxzdGF0U3luYyhJdCl9Y2F0Y2goZmUpe3Rocm93''@;'; put 'put ''IGZlLmNvZGU/bmV3IHZuLkVycm5vRXJyb3IodmlbZmUuY29kZV0pOmZlfXJldHVybiBqMC5pc1dpbmRvd3MmJiFQdC5ibGtzaXplJiYoUHQuYmxrc2l6ZT00MDk2KSxqMC5pc1dpbmRvd3MmJiFQdC5ibG9ja3MmJihQdC5ibG9ja3M9KFB0LnNpemUrUHQuYmxrc2l6ZS0xKS9QdC5ibGtzaXpl''@;'; put 'put ''fDApLHtkZXY6UHQuZGV2LGlubzpQdC5pbm8sbW9kZTpQdC5tb2RlLG5saW5rOlB0Lm5saW5rLHVpZDpQdC51aWQsZ2lkOlB0LmdpZCxyZGV2OlB0LnJkZXYsc2l6ZTpQdC5zaXplLGF0aW1lOlB0LmF0aW1lLG10aW1lOlB0Lm10aW1lLGN0aW1lOlB0LmN0aW1lLGJsa3NpemU6UHQuYmxrc2l6''@;'; put 'put ''ZSxibG9ja3M6UHQuYmxvY2tzfX0sc2V0YXR0cjpmdW5jdGlvbihkdCxJdCl7dmFyIFB0PWowLnJlYWxQYXRoKGR0KTt0cnl7aWYodm9pZCAwIT09SXQubW9kZSYmKG1sLmNobW9kU3luYyhQdCxJdC5tb2RlKSxkdC5tb2RlPUl0Lm1vZGUpLHZvaWQgMCE9PUl0LnRpbWVzdGFtcCl7dmFyIGZl''@;'; put 'put ''PW5ldyBEYXRlKEl0LnRpbWVzdGFtcCk7bWwudXRpbWVzU3luYyhQdCxmZSxmZSl9dm9pZCAwIT09SXQuc2l6ZSYmbWwudHJ1bmNhdGVTeW5jKFB0LEl0LnNpemUpfWNhdGNoKGl0KXt0aHJvdyBpdC5jb2RlP25ldyB2bi5FcnJub0Vycm9yKHZpW2l0LmNvZGVdKTppdH19LGxvb2t1cDpmdW5j''@;'; put 'put ''dGlvbihkdCxJdCl7dmFyIFB0PVUwLmpvaW4yKGowLnJlYWxQYXRoKGR0KSxJdCksZmU9ajAuZ2V0TW9kZShQdCk7cmV0dXJuIGowLmNyZWF0ZU5vZGUoZHQsSXQsZmUpfSxta25vZDpmdW5jdGlvbihkdCxJdCxQdCxmZSl7dmFyIGl0PWowLmNyZWF0ZU5vZGUoZHQsSXQsUHQsZmUpLGE9ajAu''@;'; put 'put ''cmVhbFBhdGgoaXQpO3RyeXt2bi5pc0RpcihpdC5tb2RlKT9tbC5ta2RpclN5bmMoYSxpdC5tb2RlKTptbC53cml0ZUZpbGVTeW5jKGEsIiIse21vZGU6aXQubW9kZX0pfWNhdGNoKFh0KXt0aHJvdyBYdC5jb2RlP25ldyB2bi5FcnJub0Vycm9yKHZpW1h0LmNvZGVdKTpYdH1yZXR1cm4gaXR9''@;'; put 'put ''LHJlbmFtZTpmdW5jdGlvbihkdCxJdCxQdCl7dmFyIGZlPWowLnJlYWxQYXRoKGR0KSxpdD1VMC5qb2luMihqMC5yZWFsUGF0aChJdCksUHQpO3RyeXttbC5yZW5hbWVTeW5jKGZlLGl0KX1jYXRjaChhKXt0aHJvdyBhLmNvZGU/bmV3IHZuLkVycm5vRXJyb3IodmlbYS5jb2RlXSk6YX19LHVu''@;'; put 'put ''bGluazpmdW5jdGlvbihkdCxJdCl7dmFyIFB0PVUwLmpvaW4yKGowLnJlYWxQYXRoKGR0KSxJdCk7dHJ5e21sLnVubGlua1N5bmMoUHQpfWNhdGNoKGZlKXt0aHJvdyBmZS5jb2RlP25ldyB2bi5FcnJub0Vycm9yKHZpW2ZlLmNvZGVdKTpmZX19LHJtZGlyOmZ1bmN0aW9uKGR0LEl0KXt2YXIg''@;'; put 'put ''UHQ9VTAuam9pbjIoajAucmVhbFBhdGgoZHQpLEl0KTt0cnl7bWwucm1kaXJTeW5jKFB0KX1jYXRjaChmZSl7dGhyb3cgZmUuY29kZT9uZXcgdm4uRXJybm9FcnJvcih2aVtmZS5jb2RlXSk6ZmV9fSxyZWFkZGlyOmZ1bmN0aW9uKGR0KXt2YXIgSXQ9ajAucmVhbFBhdGgoZHQpO3RyeXtyZXR1''@;'; put 'put ''cm4gbWwucmVhZGRpclN5bmMoSXQpfWNhdGNoKFB0KXt0aHJvdyBQdC5jb2RlP25ldyB2bi5FcnJub0Vycm9yKHZpW1B0LmNvZGVdKTpQdH19LHN5bWxpbms6ZnVuY3Rpb24oZHQsSXQsUHQpe3ZhciBmZT1VMC5qb2luMihqMC5yZWFsUGF0aChkdCksSXQpO3RyeXttbC5zeW1saW5rU3luYyhQ''@;'; put 'put ''dCxmZSl9Y2F0Y2goaXQpe3Rocm93IGl0LmNvZGU/bmV3IHZuLkVycm5vRXJyb3IodmlbaXQuY29kZV0pOml0fX0scmVhZGxpbms6ZnVuY3Rpb24oZHQpe3ZhciBJdD1qMC5yZWFsUGF0aChkdCk7dHJ5e3JldHVybiBJdD1tbC5yZWFkbGlua1N5bmMoSXQpLEl0PXAzLnJlbGF0aXZlKHAzLnJl''@;'; put 'put ''c29sdmUoZHQubW91bnQub3B0cy5yb290KSxJdCl9Y2F0Y2goUHQpe3Rocm93IFB0LmNvZGU/bmV3IHZuLkVycm5vRXJyb3IodmlbUHQuY29kZV0pOlB0fX19LHN0cmVhbV9vcHM6e29wZW46ZnVuY3Rpb24oZHQpe3ZhciBJdD1qMC5yZWFsUGF0aChkdC5ub2RlKTt0cnl7dm4uaXNGaWxlKGR0''@;'; put 'put ''Lm5vZGUubW9kZSkmJihkdC5uZmQ9bWwub3BlblN5bmMoSXQsajAuZmxhZ3NGb3JOb2RlKGR0LmZsYWdzKSkpfWNhdGNoKFB0KXt0aHJvdyBQdC5jb2RlP25ldyB2bi5FcnJub0Vycm9yKHZpW1B0LmNvZGVdKTpQdH19LGNsb3NlOmZ1bmN0aW9uKGR0KXt0cnl7dm4uaXNGaWxlKGR0Lm5vZGUu''@;'; put 'put ''bW9kZSkmJmR0Lm5mZCYmbWwuY2xvc2VTeW5jKGR0Lm5mZCl9Y2F0Y2goSXQpe3Rocm93IEl0LmNvZGU/bmV3IHZuLkVycm5vRXJyb3IodmlbSXQuY29kZV0pOkl0fX0scmVhZDpmdW5jdGlvbihkdCxJdCxQdCxmZSxpdCl7aWYoMD09PWZlKXJldHVybiAwO3RyeXtyZXR1cm4gbWwucmVhZFN5''@;'; put 'put ''bmMoZHQubmZkLGowLmJ1ZmZlckZyb20oSXQuYnVmZmVyKSxQdCxmZSxpdCl9Y2F0Y2goYSl7dGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmlbYS5jb2RlXSl9fSx3cml0ZTpmdW5jdGlvbihkdCxJdCxQdCxmZSxpdCl7dHJ5e3JldHVybiBtbC53cml0ZVN5bmMoZHQubmZkLGowLmJ1ZmZlckZy''@;'; put 'put ''b20oSXQuYnVmZmVyKSxQdCxmZSxpdCl9Y2F0Y2goYSl7dGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmlbYS5jb2RlXSl9fSxsbHNlZWs6ZnVuY3Rpb24oZHQsSXQsUHQpe3ZhciBmZT1JdDtpZigxPT09UHQpZmUrPWR0LnBvc2l0aW9uO2Vsc2UgaWYoMj09PVB0JiZ2bi5pc0ZpbGUoZHQubm9k''@;'; put 'put ''ZS5tb2RlKSl0cnl7ZmUrPW1sLmZzdGF0U3luYyhkdC5uZmQpLnNpemV9Y2F0Y2goYSl7dGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmlbYS5jb2RlXSl9aWYoZmU8MCl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FSU5WQUwpO3JldHVybiBmZX19fSxCbD17RElSX01PREU6MTY4OTUsRklM''@;'; put 'put ''RV9NT0RFOjMzMjc5LHJlYWRlcjpudWxsLG1vdW50OmZ1bmN0aW9uKGR0KXtPKFcpLEJsLnJlYWRlcnx8KEJsLnJlYWRlcj1uZXcgRmlsZVJlYWRlclN5bmMpO3ZhciBJdD1CbC5jcmVhdGVOb2RlKG51bGwsIi8iLEJsLkRJUl9NT0RFLDApLFB0PXt9O2Z1bmN0aW9uIGZlKGEpe2Zvcih2YXIg''@;'; put 'put ''WHQ9YS5zcGxpdCgiLyIpLGhyPUl0LFBpPTA7UGk8WHQubGVuZ3RoLTE7UGkrKyl7dmFyIGpuPVh0LnNsaWNlKDAsUGkrMSkuam9pbigiLyIpO1B0W2puXXx8KFB0W2puXT1CbC5jcmVhdGVOb2RlKGhyLFh0W1BpXSxCbC5ESVJfTU9ERSwwKSksaHI9UHRbam5dfXJldHVybiBocn1mdW5jdGlv''@;'; put 'put ''biBpdChhKXt2YXIgWHQ9YS5zcGxpdCgiLyIpO3JldHVybiBYdFtYdC5sZW5ndGgtMV19cmV0dXJuIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZHQub3B0cy5maWxlc3x8W10sZnVuY3Rpb24oYSl7QmwuY3JlYXRlTm9kZShmZShhLm5hbWUpLGl0KGEubmFtZSksQmwuRklMRV9NT0RF''@;'; put 'put ''LDAsYSxhLmxhc3RNb2RpZmllZERhdGUpfSksKGR0Lm9wdHMuYmxvYnN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0JsLmNyZWF0ZU5vZGUoZmUoYS5uYW1lKSxpdChhLm5hbWUpLEJsLkZJTEVfTU9ERSwwLGEuZGF0YSl9KSwoZHQub3B0cy5wYWNrYWdlc3x8W10pLmZvckVhY2goZnVuY3Rp''@;'; put 'put ''b24oYSl7YS5tZXRhZGF0YS5maWxlcy5mb3JFYWNoKGZ1bmN0aW9uKFh0KXt2YXIgaHI9WHQuZmlsZW5hbWUuc3Vic3RyKDEpO0JsLmNyZWF0ZU5vZGUoZmUoaHIpLGl0KGhyKSxCbC5GSUxFX01PREUsMCxhLmJsb2Iuc2xpY2UoWHQuc3RhcnQsWHQuZW5kKSl9KX0pLEl0fSxjcmVhdGVOb2Rl''@;'; put 'put ''OmZ1bmN0aW9uKGR0LEl0LFB0LGZlLGl0LGEpe3ZhciBYdD12bi5jcmVhdGVOb2RlKGR0LEl0LFB0KTtyZXR1cm4gWHQubW9kZT1QdCxYdC5ub2RlX29wcz1CbC5ub2RlX29wcyxYdC5zdHJlYW1fb3BzPUJsLnN0cmVhbV9vcHMsWHQudGltZXN0YW1wPShhfHxuZXcgRGF0ZSkuZ2V0VGltZSgp''@;'; put 'put ''LE8oQmwuRklMRV9NT0RFIT09QmwuRElSX01PREUpLFB0PT09QmwuRklMRV9NT0RFPyhYdC5zaXplPWl0LnNpemUsWHQuY29udGVudHM9aXQpOihYdC5zaXplPTQwOTYsWHQuY29udGVudHM9e30pLGR0JiYoZHQuY29udGVudHNbSXRdPVh0KSxYdH0sbm9kZV9vcHM6e2dldGF0dHI6ZnVuY3Rp''@;'; put 'put ''b24oZHQpe3JldHVybntkZXY6MSxpbm86dm9pZCAwLG1vZGU6ZHQubW9kZSxubGluazoxLHVpZDowLGdpZDowLHJkZXY6dm9pZCAwLHNpemU6ZHQuc2l6ZSxhdGltZTpuZXcgRGF0ZShkdC50aW1lc3RhbXApLG10aW1lOm5ldyBEYXRlKGR0LnRpbWVzdGFtcCksY3RpbWU6bmV3IERhdGUoZHQu''@;'; put 'put ''dGltZXN0YW1wKSxibGtzaXplOjQwOTYsYmxvY2tzOk1hdGguY2VpbChkdC5zaXplLzQwOTYpfX0sc2V0YXR0cjpmdW5jdGlvbihkdCxJdCl7dm9pZCAwIT09SXQubW9kZSYmKGR0Lm1vZGU9SXQubW9kZSksdm9pZCAwIT09SXQudGltZXN0YW1wJiYoZHQudGltZXN0YW1wPUl0LnRpbWVzdGFt''@;'; put 'put ''cCl9LGxvb2t1cDpmdW5jdGlvbihkdCxJdCl7dGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRU5PRU5UKX0sbWtub2Q6ZnVuY3Rpb24oZHQsSXQsUHQsZmUpe3Rocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVQRVJNKX0scmVuYW1lOmZ1bmN0aW9uKGR0LEl0LFB0KXt0aHJvdyBuZXcgdm4u''@;'; put 'put ''RXJybm9FcnJvcih2aS5FUEVSTSl9LHVubGluazpmdW5jdGlvbihkdCxJdCl7dGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRVBFUk0pfSxybWRpcjpmdW5jdGlvbihkdCxJdCl7dGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRVBFUk0pfSxyZWFkZGlyOmZ1bmN0aW9uKGR0KXt2YXIgSXQ9''@;'; put 'put ''WyIuIiwiLi4iXTtmb3IodmFyIFB0IGluIGR0LmNvbnRlbnRzKSFkdC5jb250ZW50cy5oYXNPd25Qcm9wZXJ0eShQdCl8fEl0LnB1c2goUHQpO3JldHVybiBJdH0sc3ltbGluazpmdW5jdGlvbihkdCxJdCxQdCl7dGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRVBFUk0pfSxyZWFkbGluazpm''@;'; put 'put ''dW5jdGlvbihkdCl7dGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRVBFUk0pfX0sc3RyZWFtX29wczp7cmVhZDpmdW5jdGlvbihkdCxJdCxQdCxmZSxpdCl7aWYoaXQ+PWR0Lm5vZGUuc2l6ZSlyZXR1cm4gMDt2YXIgYT1kdC5ub2RlLmNvbnRlbnRzLnNsaWNlKGl0LGl0K2ZlKSxYdD1CbC5y''@;'; put 'put ''ZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYSk7cmV0dXJuIEl0LnNldChuZXcgVWludDhBcnJheShYdCksUHQpLGEuc2l6ZX0sd3JpdGU6ZnVuY3Rpb24oZHQsSXQsUHQsZmUsaXQpe3Rocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVJTyl9LGxsc2VlazpmdW5jdGlvbihkdCxJdCxQdCl7dmFy''@;'; put 'put ''IGZlPUl0O2lmKDE9PT1QdD9mZSs9ZHQucG9zaXRpb246Mj09PVB0JiZ2bi5pc0ZpbGUoZHQubm9kZS5tb2RlKSYmKGZlKz1kdC5ub2RlLnNpemUpLGZlPDApdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRUlOVkFMKTtyZXR1cm4gZmV9fX07eXQrPTE2LHl0Kz0xNix5dCs9MTY7dmFyIHZu''@;'; put 'put ''PXtyb290Om51bGwsbW91bnRzOltdLGRldmljZXM6e30sc3RyZWFtczpbXSxuZXh0SW5vZGU6MSxuYW1lVGFibGU6bnVsbCxjdXJyZW50UGF0aDoiLyIsaW5pdGlhbGl6ZWQ6ITEsaWdub3JlUGVybWlzc2lvbnM6ITAsdHJhY2tpbmdEZWxlZ2F0ZTp7fSx0cmFja2luZzp7b3BlbkZsYWdzOntS''@;'; put 'put ''RUFEOjEsV1JJVEU6Mn19LEVycm5vRXJyb3I6bnVsbCxnZW5lcmljRXJyb3JzOnt9LGZpbGVzeXN0ZW1zOm51bGwsc3luY0ZTUmVxdWVzdHM6MCxoYW5kbGVGU0Vycm9yOmZ1bmN0aW9uKGR0KXtpZighKGR0IGluc3RhbmNlb2Ygdm4uRXJybm9FcnJvcikpdGhyb3cgZHQrIiA6ICIraHQoKTty''@;'; put 'put ''ZXR1cm4gYjAoZHQuZXJybm8pfSxsb29rdXBQYXRoOmZ1bmN0aW9uKGR0LEl0KXtpZihJdD1JdHx8e30sIShkdD1VMC5yZXNvbHZlKHZuLmN3ZCgpLGR0KSkpcmV0dXJue3BhdGg6IiIsbm9kZTpudWxsfTt2YXIgUHQ9e2ZvbGxvd19tb3VudDohMCxyZWN1cnNlX2NvdW50OjB9O2Zvcih2YXIg''@;'; put 'put ''ZmUgaW4gUHQpdm9pZCAwPT09SXRbZmVdJiYoSXRbZmVdPVB0W2ZlXSk7aWYoSXQucmVjdXJzZV9jb3VudD44KXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVMT09QKTtmb3IodmFyIGl0PVUwLm5vcm1hbGl6ZUFycmF5KGR0LnNwbGl0KCIvIikuZmlsdGVyKGZ1bmN0aW9uKFNpKXtyZXR1''@;'; put 'put ''cm4hIVNpfSksITEpLGE9dm4ucm9vdCxYdD0iLyIsaHI9MDtocjxpdC5sZW5ndGg7aHIrKyl7dmFyIFBpPWhyPT09aXQubGVuZ3RoLTE7aWYoUGkmJkl0LnBhcmVudClicmVhaztpZihhPXZuLmxvb2t1cE5vZGUoYSxpdFtocl0pLFh0PVUwLmpvaW4yKFh0LGl0W2hyXSksdm4uaXNNb3VudHBv''@;'; put 'put ''aW50KGEpJiYoIVBpfHxQaSYmSXQuZm9sbG93X21vdW50KSYmKGE9YS5tb3VudGVkLnJvb3QpLCFQaXx8SXQuZm9sbG93KWZvcih2YXIgam49MDt2bi5pc0xpbmsoYS5tb2RlKTspe3ZhciBfPXZuLnJlYWRsaW5rKFh0KTtpZihYdD1VMC5yZXNvbHZlKFUwLmRpcm5hbWUoWHQpLF8pLGE9dm4u''@;'; put 'put ''bG9va3VwUGF0aChYdCx7cmVjdXJzZV9jb3VudDpJdC5yZWN1cnNlX2NvdW50fSkubm9kZSxqbisrPjQwKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVMT09QKX19cmV0dXJue3BhdGg6WHQsbm9kZTphfX0sZ2V0UGF0aDpmdW5jdGlvbihkdCl7Zm9yKHZhciBJdDs7KXtpZih2bi5pc1Jv''@;'; put 'put ''b3QoZHQpKXt2YXIgUHQ9ZHQubW91bnQubW91bnRwb2ludDtyZXR1cm4gSXQ/Ii8iIT09UHRbUHQubGVuZ3RoLTFdP1B0KyIvIitJdDpQdCtJdDpQdH1JdD1JdD9kdC5uYW1lKyIvIitJdDpkdC5uYW1lLGR0PWR0LnBhcmVudH19LGhhc2hOYW1lOmZ1bmN0aW9uKGR0LEl0KXtmb3IodmFyIFB0''@;'; put 'put ''PTAsZmU9MDtmZTxJdC5sZW5ndGg7ZmUrKylQdD0oUHQ8PDUpLVB0K0l0LmNoYXJDb2RlQXQoZmUpfDA7cmV0dXJuKGR0K1B0Pj4+MCkldm4ubmFtZVRhYmxlLmxlbmd0aH0saGFzaEFkZE5vZGU6ZnVuY3Rpb24oZHQpe3ZhciBJdD12bi5oYXNoTmFtZShkdC5wYXJlbnQuaWQsZHQubmFtZSk7''@;'; put 'put ''ZHQubmFtZV9uZXh0PXZuLm5hbWVUYWJsZVtJdF0sdm4ubmFtZVRhYmxlW0l0XT1kdH0saGFzaFJlbW92ZU5vZGU6ZnVuY3Rpb24oZHQpe3ZhciBJdD12bi5oYXNoTmFtZShkdC5wYXJlbnQuaWQsZHQubmFtZSk7aWYodm4ubmFtZVRhYmxlW0l0XT09PWR0KXZuLm5hbWVUYWJsZVtJdF09ZHQu''@;'; put 'put ''bmFtZV9uZXh0O2Vsc2UgZm9yKHZhciBQdD12bi5uYW1lVGFibGVbSXRdO1B0Oyl7aWYoUHQubmFtZV9uZXh0PT09ZHQpe1B0Lm5hbWVfbmV4dD1kdC5uYW1lX25leHQ7YnJlYWt9UHQ9UHQubmFtZV9uZXh0fX0sbG9va3VwTm9kZTpmdW5jdGlvbihkdCxJdCl7dmFyIFB0PXZuLm1heUxvb2t1''@;'; put 'put ''cChkdCk7aWYoUHQpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IoUHQsZHQpO2Zvcih2YXIgZmU9dm4uaGFzaE5hbWUoZHQuaWQsSXQpLGl0PXZuLm5hbWVUYWJsZVtmZV07aXQ7aXQ9aXQubmFtZV9uZXh0KWlmKGl0LnBhcmVudC5pZD09PWR0LmlkJiZpdC5uYW1lPT09SXQpcmV0dXJuIGl0O3Jl''@;'; put 'put ''dHVybiB2bi5sb29rdXAoZHQsSXQpfSxjcmVhdGVOb2RlOmZ1bmN0aW9uKGR0LEl0LFB0LGZlKXtpZighdm4uRlNOb2RlKXt2bi5GU05vZGU9ZnVuY3Rpb24oaHIsUGksam4sXyl7aHJ8fChocj10aGlzKSx0aGlzLnBhcmVudD1ocix0aGlzLm1vdW50PWhyLm1vdW50LHRoaXMubW91bnRlZD1u''@;'; put 'put ''dWxsLHRoaXMuaWQ9dm4ubmV4dElub2RlKyssdGhpcy5uYW1lPVBpLHRoaXMubW9kZT1qbix0aGlzLm5vZGVfb3BzPXt9LHRoaXMuc3RyZWFtX29wcz17fSx0aGlzLnJkZXY9X30sdm4uRlNOb2RlLnByb3RvdHlwZT17fTt2YXIgYT0xNDY7T2JqZWN0LmRlZmluZVByb3BlcnRpZXModm4uRlNO''@;'; put 'put ''b2RlLnByb3RvdHlwZSx7cmVhZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDM2NT09KDM2NSZ0aGlzLm1vZGUpfSxzZXQ6ZnVuY3Rpb24oaHIpe2hyP3RoaXMubW9kZXw9MzY1OnRoaXMubW9kZSY9LTM2Nn19LHdyaXRlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5tb2RlJmEpPT09YX0s''@;'; put 'put ''c2V0OmZ1bmN0aW9uKGhyKXtocj90aGlzLm1vZGV8PWE6dGhpcy5tb2RlJj1+YX19LGlzRm9sZGVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm4uaXNEaXIodGhpcy5tb2RlKX19LGlzRGV2aWNlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm4uaXNDaHJkZXYodGhpcy5tb2RlKX19fSl9dmFy''@;'; put 'put ''IFh0PW5ldyB2bi5GU05vZGUoZHQsSXQsUHQsZmUpO3JldHVybiB2bi5oYXNoQWRkTm9kZShYdCksWHR9LGRlc3Ryb3lOb2RlOmZ1bmN0aW9uKGR0KXt2bi5oYXNoUmVtb3ZlTm9kZShkdCl9LGlzUm9vdDpmdW5jdGlvbihkdCl7cmV0dXJuIGR0PT09ZHQucGFyZW50fSxpc01vdW50cG9pbnQ6''@;'; put 'put ''ZnVuY3Rpb24oZHQpe3JldHVybiEhZHQubW91bnRlZH0saXNGaWxlOmZ1bmN0aW9uKGR0KXtyZXR1cm4gMzI3Njg9PSg2MTQ0MCZkdCl9LGlzRGlyOmZ1bmN0aW9uKGR0KXtyZXR1cm4gMTYzODQ9PSg2MTQ0MCZkdCl9LGlzTGluazpmdW5jdGlvbihkdCl7cmV0dXJuIDQwOTYwPT0oNjE0NDAm''@;'; put 'put ''ZHQpfSxpc0NocmRldjpmdW5jdGlvbihkdCl7cmV0dXJuIDgxOTI9PSg2MTQ0MCZkdCl9LGlzQmxrZGV2OmZ1bmN0aW9uKGR0KXtyZXR1cm4gMjQ1NzY9PSg2MTQ0MCZkdCl9LGlzRklGTzpmdW5jdGlvbihkdCl7cmV0dXJuIDQwOTY9PSg2MTQ0MCZkdCl9LGlzU29ja2V0OmZ1bmN0aW9uKGR0''@;'; put 'put ''KXtyZXR1cm4gNDkxNTI9PSg0OTE1MiZkdCl9LGZsYWdNb2Rlczp7cjowLHJzOjEwNTI2NzIsInIrIjoyLHc6NTc3LHd4OjcwNSx4dzo3MDUsIncrIjo1NzgsInd4KyI6NzA2LCJ4dysiOjcwNixhOjEwODksYXg6MTIxNyx4YToxMjE3LCJhKyI6MTA5MCwiYXgrIjoxMjE4LCJ4YSsiOjEyMTh9''@;'; put 'put ''LG1vZGVTdHJpbmdUb0ZsYWdzOmZ1bmN0aW9uKGR0KXt2YXIgSXQ9dm4uZmxhZ01vZGVzW2R0XTtpZih2b2lkIDA9PT1JdCl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZmlsZSBvcGVuIG1vZGU6ICIrZHQpO3JldHVybiBJdH0sZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmc6ZnVuY3Rpb24oZHQp''@;'; put 'put ''e3ZhciBJdD1bInIiLCJ3IiwicnciXVszJmR0XTtyZXR1cm4gNTEyJmR0JiYoSXQrPSJ3IiksSXR9LG5vZGVQZXJtaXNzaW9uczpmdW5jdGlvbihkdCxJdCl7cmV0dXJuIHZuLmlnbm9yZVBlcm1pc3Npb25zfHwoLTE9PT1JdC5pbmRleE9mKCJyIil8fDI5MiZkdC5tb2RlKSYmKC0xPT09SXQu''@;'; put 'put ''aW5kZXhPZigidyIpfHwxNDYmZHQubW9kZSkmJigtMT09PUl0LmluZGV4T2YoIngiKXx8NzMmZHQubW9kZSk/MDp2aS5FQUNDRVN9LG1heUxvb2t1cDpmdW5jdGlvbihkdCl7cmV0dXJuIHZuLm5vZGVQZXJtaXNzaW9ucyhkdCwieCIpfHwoZHQubm9kZV9vcHMubG9va3VwPzA6dmkuRUFDQ0VT''@;'; put 'put ''KX0sbWF5Q3JlYXRlOmZ1bmN0aW9uKGR0LEl0KXt0cnl7cmV0dXJuIHZuLmxvb2t1cE5vZGUoZHQsSXQpLHZpLkVFWElTVH1jYXRjaChmZSl7fXJldHVybiB2bi5ub2RlUGVybWlzc2lvbnMoZHQsInd4Iil9LG1heURlbGV0ZTpmdW5jdGlvbihkdCxJdCxQdCl7dmFyIGZlO3RyeXtmZT12bi5s''@;'; put 'put ''b29rdXBOb2RlKGR0LEl0KX1jYXRjaChhKXtyZXR1cm4gYS5lcnJub312YXIgaXQ9dm4ubm9kZVBlcm1pc3Npb25zKGR0LCJ3eCIpO2lmKGl0KXJldHVybiBpdDtpZihQdCl7aWYoIXZuLmlzRGlyKGZlLm1vZGUpKXJldHVybiB2aS5FTk9URElSO2lmKHZuLmlzUm9vdChmZSl8fHZuLmdldFBh''@;'; put 'put ''dGgoZmUpPT09dm4uY3dkKCkpcmV0dXJuIHZpLkVCVVNZfWVsc2UgaWYodm4uaXNEaXIoZmUubW9kZSkpcmV0dXJuIHZpLkVJU0RJUjtyZXR1cm4gMH0sbWF5T3BlbjpmdW5jdGlvbihkdCxJdCl7cmV0dXJuIGR0P3ZuLmlzTGluayhkdC5tb2RlKT92aS5FTE9PUDp2bi5pc0RpcihkdC5tb2Rl''@;'; put 'put ''KSYmKCJyIiE9PXZuLmZsYWdzVG9QZXJtaXNzaW9uU3RyaW5nKEl0KXx8NTEyJkl0KT92aS5FSVNESVI6dm4ubm9kZVBlcm1pc3Npb25zKGR0LHZuLmZsYWdzVG9QZXJtaXNzaW9uU3RyaW5nKEl0KSk6dmkuRU5PRU5UfSxNQVhfT1BFTl9GRFM6NDA5NixuZXh0ZmQ6ZnVuY3Rpb24oZHQsSXQp''@;'; put 'put ''e0l0PUl0fHx2bi5NQVhfT1BFTl9GRFM7Zm9yKHZhciBQdD1kdD1kdHx8MDtQdDw9SXQ7UHQrKylpZighdm4uc3RyZWFtc1tQdF0pcmV0dXJuIFB0O3Rocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVNRklMRSl9LGdldFN0cmVhbTpmdW5jdGlvbihkdCl7cmV0dXJuIHZuLnN0cmVhbXNbZHRd''@;'; put 'put ''fSxjcmVhdGVTdHJlYW06ZnVuY3Rpb24oZHQsSXQsUHQpe3ZuLkZTU3RyZWFtfHwodm4uRlNTdHJlYW09ZnVuY3Rpb24oKXt9LHZuLkZTU3RyZWFtLnByb3RvdHlwZT17fSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh2bi5GU1N0cmVhbS5wcm90b3R5cGUse29iamVjdDp7Z2V0OmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMubm9kZX0sc2V0OmZ1bmN0aW9uKFh0KXt0aGlzLm5vZGU9WHR9fSxpc1JlYWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiAxIT0oMjA5NzE1NSZ0aGlzLmZsYWdzKX19LGlzV3JpdGU6e2dldDpmdW5jdGlvbigpe3JldHVybiAwIT0oMjA5NzE1NSZ0aGlzLmZsYWdzKX19''@;'; put 'put ''LGlzQXBwZW5kOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMTAyNCZ0aGlzLmZsYWdzfX19KSk7dmFyIGZlPW5ldyB2bi5GU1N0cmVhbTtmb3IodmFyIGl0IGluIGR0KWZlW2l0XT1kdFtpdF07ZHQ9ZmU7dmFyIGE9dm4ubmV4dGZkKEl0LFB0KTtyZXR1cm4gZHQuZmQ9YSx2bi5zdHJlYW1zW2Fd''@;'; put 'put ''PWR0LGR0fSxjbG9zZVN0cmVhbTpmdW5jdGlvbihkdCl7dm4uc3RyZWFtc1tkdF09bnVsbH0sY2hyZGV2X3N0cmVhbV9vcHM6e29wZW46ZnVuY3Rpb24oZHQpe3ZhciBJdD12bi5nZXREZXZpY2UoZHQubm9kZS5yZGV2KTtkdC5zdHJlYW1fb3BzPUl0LnN0cmVhbV9vcHMsZHQuc3RyZWFtX29w''@;'; put 'put ''cy5vcGVuJiZkdC5zdHJlYW1fb3BzLm9wZW4oZHQpfSxsbHNlZWs6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FU1BJUEUpfX0sbWFqb3I6ZnVuY3Rpb24oZHQpe3JldHVybiBkdD4+OH0sbWlub3I6ZnVuY3Rpb24oZHQpe3JldHVybiAyNTUmZHR9LG1ha2VkZXY6ZnVu''@;'; put 'put ''Y3Rpb24oZHQsSXQpe3JldHVybiBkdDw8OHxJdH0scmVnaXN0ZXJEZXZpY2U6ZnVuY3Rpb24oZHQsSXQpe3ZuLmRldmljZXNbZHRdPXtzdHJlYW1fb3BzOkl0fX0sZ2V0RGV2aWNlOmZ1bmN0aW9uKGR0KXtyZXR1cm4gdm4uZGV2aWNlc1tkdF19LGdldE1vdW50czpmdW5jdGlvbihkdCl7Zm9y''@;'; put 'put ''KHZhciBJdD1bXSxQdD1bZHRdO1B0Lmxlbmd0aDspe3ZhciBmZT1QdC5wb3AoKTtJdC5wdXNoKGZlKSxQdC5wdXNoLmFwcGx5KFB0LGZlLm1vdW50cyl9cmV0dXJuIEl0fSxzeW5jZnM6ZnVuY3Rpb24oZHQsSXQpeyJmdW5jdGlvbiI9PXR5cGVvZiBkdCYmKEl0PWR0LGR0PSExKSx2bi5zeW5j''@;'; put 'put ''RlNSZXF1ZXN0cysrLHZuLnN5bmNGU1JlcXVlc3RzPjEmJmNvbnNvbGUubG9nKCJ3YXJuaW5nOiAiK3ZuLnN5bmNGU1JlcXVlc3RzKyIgRlMuc3luY2ZzIG9wZXJhdGlvbnMgaW4gZmxpZ2h0IGF0IG9uY2UsIHByb2JhYmx5IGp1c3QgZG9pbmcgZXh0cmEgd29yayIpO3ZhciBQdD12bi5nZXRN''@;'; put 'put ''b3VudHModm4ucm9vdC5tb3VudCksZmU9MDtmdW5jdGlvbiBpdChYdCl7cmV0dXJuIE8odm4uc3luY0ZTUmVxdWVzdHM+MCksdm4uc3luY0ZTUmVxdWVzdHMtLSxJdChYdCl9ZnVuY3Rpb24gYShYdCl7aWYoWHQpcmV0dXJuIGEuZXJyb3JlZD92b2lkIDA6KGEuZXJyb3JlZD0hMCxpdChYdCkp''@;'; put 'put ''OysrZmU+PVB0Lmxlbmd0aCYmaXQobnVsbCl9UHQuZm9yRWFjaChmdW5jdGlvbihYdCl7aWYoIVh0LnR5cGUuc3luY2ZzKXJldHVybiBhKG51bGwpO1h0LnR5cGUuc3luY2ZzKFh0LGR0LGEpfSl9LG1vdW50OmZ1bmN0aW9uKGR0LEl0LFB0KXt2YXIgYSxmZT0iLyI9PT1QdCxpdD0hUHQ7aWYo''@;'; put 'put ''ZmUmJnZuLnJvb3QpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRUJVU1kpO2lmKCFmZSYmIWl0KXt2YXIgWHQ9dm4ubG9va3VwUGF0aChQdCx7Zm9sbG93X21vdW50OiExfSk7aWYoUHQ9WHQucGF0aCx2bi5pc01vdW50cG9pbnQoYT1YdC5ub2RlKSl0aHJvdyBuZXcgdm4uRXJybm9FcnJv''@;'; put 'put ''cih2aS5FQlVTWSk7aWYoIXZuLmlzRGlyKGEubW9kZSkpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRU5PVERJUil9dmFyIGhyPXt0eXBlOmR0LG9wdHM6SXQsbW91bnRwb2ludDpQdCxtb3VudHM6W119LFBpPWR0Lm1vdW50KGhyKTtyZXR1cm4gUGkubW91bnQ9aHIsaHIucm9vdD1QaSxm''@;'; put 'put ''ZT92bi5yb290PVBpOmEmJihhLm1vdW50ZWQ9aHIsYS5tb3VudCYmYS5tb3VudC5tb3VudHMucHVzaChocikpLFBpfSx1bm1vdW50OmZ1bmN0aW9uKGR0KXt2YXIgSXQ9dm4ubG9va3VwUGF0aChkdCx7Zm9sbG93X21vdW50OiExfSk7aWYoIXZuLmlzTW91bnRwb2ludChJdC5ub2RlKSl0aHJv''@;'; put 'put ''dyBuZXcgdm4uRXJybm9FcnJvcih2aS5FSU5WQUwpO3ZhciBQdD1JdC5ub2RlLGZlPVB0Lm1vdW50ZWQsaXQ9dm4uZ2V0TW91bnRzKGZlKTtPYmplY3Qua2V5cyh2bi5uYW1lVGFibGUpLmZvckVhY2goZnVuY3Rpb24oWHQpe2Zvcih2YXIgaHI9dm4ubmFtZVRhYmxlW1h0XTtocjspe3ZhciBQ''@;'; put 'put ''aT1oci5uYW1lX25leHQ7LTEhPT1pdC5pbmRleE9mKGhyLm1vdW50KSYmdm4uZGVzdHJveU5vZGUoaHIpLGhyPVBpfX0pLFB0Lm1vdW50ZWQ9bnVsbDt2YXIgYT1QdC5tb3VudC5tb3VudHMuaW5kZXhPZihmZSk7TygtMSE9PWEpLFB0Lm1vdW50Lm1vdW50cy5zcGxpY2UoYSwxKX0sbG9va3Vw''@;'; put 'put ''OmZ1bmN0aW9uKGR0LEl0KXtyZXR1cm4gZHQubm9kZV9vcHMubG9va3VwKGR0LEl0KX0sbWtub2Q6ZnVuY3Rpb24oZHQsSXQsUHQpe3ZhciBpdD12bi5sb29rdXBQYXRoKGR0LHtwYXJlbnQ6ITB9KS5ub2RlLGE9VTAuYmFzZW5hbWUoZHQpO2lmKCFhfHwiLiI9PT1hfHwiLi4iPT09YSl0aHJv''@;'; put 'put ''dyBuZXcgdm4uRXJybm9FcnJvcih2aS5FSU5WQUwpO3ZhciBYdD12bi5tYXlDcmVhdGUoaXQsYSk7aWYoWHQpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IoWHQpO2lmKCFpdC5ub2RlX29wcy5ta25vZCl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FUEVSTSk7cmV0dXJuIGl0Lm5vZGVfb3Bz''@;'; put 'put ''Lm1rbm9kKGl0LGEsSXQsUHQpfSxjcmVhdGU6ZnVuY3Rpb24oZHQsSXQpe3JldHVybiBJdD12b2lkIDAhPT1JdD9JdDo0MzgsSXQmPTQwOTUsdm4ubWtub2QoZHQsSXR8PTMyNzY4LDApfSxta2RpcjpmdW5jdGlvbihkdCxJdCl7cmV0dXJuIEl0PXZvaWQgMCE9PUl0P0l0OjUxMSxJdCY9MTAy''@;'; put 'put ''Myx2bi5ta25vZChkdCxJdHw9MTYzODQsMCl9LG1rZGlyVHJlZTpmdW5jdGlvbihkdCxJdCl7Zm9yKHZhciBQdD1kdC5zcGxpdCgiLyIpLGZlPSIiLGl0PTA7aXQ8UHQubGVuZ3RoOysraXQpaWYoUHRbaXRdKXtmZSs9Ii8iK1B0W2l0XTt0cnl7dm4ubWtkaXIoZmUsSXQpfWNhdGNoKGEpe2lm''@;'; put 'put ''KGEuZXJybm8hPXZpLkVFWElTVCl0aHJvdyBhfX19LG1rZGV2OmZ1bmN0aW9uKGR0LEl0LFB0KXtyZXR1cm4gdm9pZCAwPT09UHQmJihQdD1JdCxJdD00MzgpLHZuLm1rbm9kKGR0LEl0fD04MTkyLFB0KX0sc3ltbGluazpmdW5jdGlvbihkdCxJdCl7aWYoIVUwLnJlc29sdmUoZHQpKXRocm93''@;'; put 'put ''IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVOT0VOVCk7dmFyIGZlPXZuLmxvb2t1cFBhdGgoSXQse3BhcmVudDohMH0pLm5vZGU7aWYoIWZlKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVOT0VOVCk7dmFyIGl0PVUwLmJhc2VuYW1lKEl0KSxhPXZuLm1heUNyZWF0ZShmZSxpdCk7aWYoYSl0''@;'; put 'put ''aHJvdyBuZXcgdm4uRXJybm9FcnJvcihhKTtpZighZmUubm9kZV9vcHMuc3ltbGluayl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FUEVSTSk7cmV0dXJuIGZlLm5vZGVfb3BzLnN5bWxpbmsoZmUsaXQsZHQpfSxyZW5hbWU6ZnVuY3Rpb24oZHQsSXQpe3ZhciBocixQaSxQdD1VMC5kaXJu''@;'; put 'put ''YW1lKGR0KSxmZT1VMC5kaXJuYW1lKEl0KSxpdD1VMC5iYXNlbmFtZShkdCksYT1VMC5iYXNlbmFtZShJdCk7dHJ5e2hyPXZuLmxvb2t1cFBhdGgoZHQse3BhcmVudDohMH0pLm5vZGUsUGk9dm4ubG9va3VwUGF0aChJdCx7cGFyZW50OiEwfSkubm9kZX1jYXRjaChsZSl7dGhyb3cgbmV3IHZu''@;'; put 'put ''LkVycm5vRXJyb3IodmkuRUJVU1kpfWlmKCFocnx8IVBpKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVOT0VOVCk7aWYoaHIubW91bnQhPT1QaS5tb3VudCl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FWERFVik7dmFyIEFvLGpuPXZuLmxvb2t1cE5vZGUoaHIsaXQpLF89VTAucmVs''@;'; put 'put ''YXRpdmUoZHQsZmUpO2lmKCIuIiE9PV8uY2hhckF0KDApKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVJTlZBTCk7aWYoIi4iIT09KF89VTAucmVsYXRpdmUoSXQsUHQpKS5jaGFyQXQoMCkpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRU5PVEVNUFRZKTt0cnl7QW89dm4ubG9va3Vw''@;'; put 'put ''Tm9kZShQaSxhKX1jYXRjaChsZSl7fWlmKGpuIT09QW8pe3ZhciBTaT12bi5pc0Rpcihqbi5tb2RlKSwkbz12bi5tYXlEZWxldGUoaHIsaXQsU2kpO2lmKCRvKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKCRvKTtpZigkbz1Bbz92bi5tYXlEZWxldGUoUGksYSxTaSk6dm4ubWF5Q3JlYXRlKFBp''@;'; put 'put ''LGEpKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKCRvKTtpZighaHIubm9kZV9vcHMucmVuYW1lKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVQRVJNKTtpZih2bi5pc01vdW50cG9pbnQoam4pfHxBbyYmdm4uaXNNb3VudHBvaW50KEFvKSl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5F''@;'; put 'put ''QlVTWSk7aWYoUGkhPT1ociYmKCRvPXZuLm5vZGVQZXJtaXNzaW9ucyhociwidyIpKSl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcigkbyk7dHJ5e3ZuLnRyYWNraW5nRGVsZWdhdGUud2lsbE1vdmVQYXRoJiZ2bi50cmFja2luZ0RlbGVnYXRlLndpbGxNb3ZlUGF0aChkdCxJdCl9Y2F0Y2gobGUp''@;'; put 'put ''e2NvbnNvbGUubG9nKCJGUy50cmFja2luZ0RlbGVnYXRlWyd3aWxsTW92ZVBhdGgnXSgnIitkdCsiJywgJyIrSXQrIicpIHRocmV3IGFuIGV4Y2VwdGlvbjogIitsZS5tZXNzYWdlKX12bi5oYXNoUmVtb3ZlTm9kZShqbik7dHJ5e2hyLm5vZGVfb3BzLnJlbmFtZShqbixQaSxhKX1jYXRjaChs''@;'; put 'put ''ZSl7dGhyb3cgbGV9ZmluYWxseXt2bi5oYXNoQWRkTm9kZShqbil9dHJ5e3ZuLnRyYWNraW5nRGVsZWdhdGUub25Nb3ZlUGF0aCYmdm4udHJhY2tpbmdEZWxlZ2F0ZS5vbk1vdmVQYXRoKGR0LEl0KX1jYXRjaChsZSl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uTW92ZVBh''@;'; put 'put ''dGgnXSgnIitkdCsiJywgJyIrSXQrIicpIHRocmV3IGFuIGV4Y2VwdGlvbjogIitsZS5tZXNzYWdlKX19fSxybWRpcjpmdW5jdGlvbihkdCl7dmFyIFB0PXZuLmxvb2t1cFBhdGgoZHQse3BhcmVudDohMH0pLm5vZGUsZmU9VTAuYmFzZW5hbWUoZHQpLGl0PXZuLmxvb2t1cE5vZGUoUHQsZmUp''@;'; put 'put ''LGE9dm4ubWF5RGVsZXRlKFB0LGZlLCEwKTtpZihhKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKGEpO2lmKCFQdC5ub2RlX29wcy5ybWRpcil0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FUEVSTSk7aWYodm4uaXNNb3VudHBvaW50KGl0KSl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5F''@;'; put 'put ''QlVTWSk7dHJ5e3ZuLnRyYWNraW5nRGVsZWdhdGUud2lsbERlbGV0ZVBhdGgmJnZuLnRyYWNraW5nRGVsZWdhdGUud2lsbERlbGV0ZVBhdGgoZHQpfWNhdGNoKFh0KXtjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnd2lsbERlbGV0ZVBhdGgnXSgnIitkdCsiJykgdGhyZXcgYW4g''@;'; put 'put ''ZXhjZXB0aW9uOiAiK1h0Lm1lc3NhZ2UpfVB0Lm5vZGVfb3BzLnJtZGlyKFB0LGZlKSx2bi5kZXN0cm95Tm9kZShpdCk7dHJ5e3ZuLnRyYWNraW5nRGVsZWdhdGUub25EZWxldGVQYXRoJiZ2bi50cmFja2luZ0RlbGVnYXRlLm9uRGVsZXRlUGF0aChkdCl9Y2F0Y2goWHQpe2NvbnNvbGUubG9n''@;'; put 'put ''KCJGUy50cmFja2luZ0RlbGVnYXRlWydvbkRlbGV0ZVBhdGgnXSgnIitkdCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK1h0Lm1lc3NhZ2UpfX0scmVhZGRpcjpmdW5jdGlvbihkdCl7dmFyIFB0PXZuLmxvb2t1cFBhdGgoZHQse2ZvbGxvdzohMH0pLm5vZGU7aWYoIVB0Lm5vZGVfb3BzLnJl''@;'; put 'put ''YWRkaXIpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRU5PVERJUik7cmV0dXJuIFB0Lm5vZGVfb3BzLnJlYWRkaXIoUHQpfSx1bmxpbms6ZnVuY3Rpb24oZHQpe3ZhciBQdD12bi5sb29rdXBQYXRoKGR0LHtwYXJlbnQ6ITB9KS5ub2RlLGZlPVUwLmJhc2VuYW1lKGR0KSxpdD12bi5sb29r''@;'; put 'put ''dXBOb2RlKFB0LGZlKSxhPXZuLm1heURlbGV0ZShQdCxmZSwhMSk7aWYoYSl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcihhKTtpZighUHQubm9kZV9vcHMudW5saW5rKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVQRVJNKTtpZih2bi5pc01vdW50cG9pbnQoaXQpKXRocm93IG5ldyB2bi5F''@;'; put 'put ''cnJub0Vycm9yKHZpLkVCVVNZKTt0cnl7dm4udHJhY2tpbmdEZWxlZ2F0ZS53aWxsRGVsZXRlUGF0aCYmdm4udHJhY2tpbmdEZWxlZ2F0ZS53aWxsRGVsZXRlUGF0aChkdCl9Y2F0Y2goWHQpe2NvbnNvbGUubG9nKCJGUy50cmFja2luZ0RlbGVnYXRlWyd3aWxsRGVsZXRlUGF0aCddKCciK2R0''@;'; put 'put ''KyInKSB0aHJldyBhbiBleGNlcHRpb246ICIrWHQubWVzc2FnZSl9UHQubm9kZV9vcHMudW5saW5rKFB0LGZlKSx2bi5kZXN0cm95Tm9kZShpdCk7dHJ5e3ZuLnRyYWNraW5nRGVsZWdhdGUub25EZWxldGVQYXRoJiZ2bi50cmFja2luZ0RlbGVnYXRlLm9uRGVsZXRlUGF0aChkdCl9Y2F0Y2go''@;'; put 'put ''WHQpe2NvbnNvbGUubG9nKCJGUy50cmFja2luZ0RlbGVnYXRlWydvbkRlbGV0ZVBhdGgnXSgnIitkdCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK1h0Lm1lc3NhZ2UpfX0scmVhZGxpbms6ZnVuY3Rpb24oZHQpe3ZhciBQdD12bi5sb29rdXBQYXRoKGR0KS5ub2RlO2lmKCFQdCl0aHJvdyBu''@;'; put 'put ''ZXcgdm4uRXJybm9FcnJvcih2aS5FTk9FTlQpO2lmKCFQdC5ub2RlX29wcy5yZWFkbGluayl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FSU5WQUwpO3JldHVybiBVMC5yZXNvbHZlKHZuLmdldFBhdGgoUHQucGFyZW50KSxQdC5ub2RlX29wcy5yZWFkbGluayhQdCkpfSxzdGF0OmZ1bmN0''@;'; put 'put ''aW9uKGR0LEl0KXt2YXIgZmU9dm4ubG9va3VwUGF0aChkdCx7Zm9sbG93OiFJdH0pLm5vZGU7aWYoIWZlKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVOT0VOVCk7aWYoIWZlLm5vZGVfb3BzLmdldGF0dHIpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRVBFUk0pO3JldHVybiBmZS5u''@;'; put 'put ''b2RlX29wcy5nZXRhdHRyKGZlKX0sbHN0YXQ6ZnVuY3Rpb24oZHQpe3JldHVybiB2bi5zdGF0KGR0LCEwKX0sY2htb2Q6ZnVuY3Rpb24oZHQsSXQsUHQpe3ZhciBmZTtpZighKGZlPSJzdHJpbmciPT10eXBlb2YgZHQ/dm4ubG9va3VwUGF0aChkdCx7Zm9sbG93OiFQdH0pLm5vZGU6ZHQpLm5v''@;'; put 'put ''ZGVfb3BzLnNldGF0dHIpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRVBFUk0pO2ZlLm5vZGVfb3BzLnNldGF0dHIoZmUse21vZGU6NDA5NSZJdHwtNDA5NiZmZS5tb2RlLHRpbWVzdGFtcDpEYXRlLm5vdygpfSl9LGxjaG1vZDpmdW5jdGlvbihkdCxJdCl7dm4uY2htb2QoZHQsSXQsITAp''@;'; put 'put ''fSxmY2htb2Q6ZnVuY3Rpb24oZHQsSXQpe3ZhciBQdD12bi5nZXRTdHJlYW0oZHQpO2lmKCFQdCl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FQkFERik7dm4uY2htb2QoUHQubm9kZSxJdCl9LGNob3duOmZ1bmN0aW9uKGR0LEl0LFB0LGZlKXt2YXIgaXQ7aWYoIShpdD0ic3RyaW5nIj09''@;'; put 'put ''dHlwZW9mIGR0P3ZuLmxvb2t1cFBhdGgoZHQse2ZvbGxvdzohZmV9KS5ub2RlOmR0KS5ub2RlX29wcy5zZXRhdHRyKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVQRVJNKTtpdC5ub2RlX29wcy5zZXRhdHRyKGl0LHt0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSxsY2hvd246ZnVuY3Rpb24o''@;'; put 'put ''ZHQsSXQsUHQpe3ZuLmNob3duKGR0LEl0LFB0LCEwKX0sZmNob3duOmZ1bmN0aW9uKGR0LEl0LFB0KXt2YXIgZmU9dm4uZ2V0U3RyZWFtKGR0KTtpZighZmUpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRUJBREYpO3ZuLmNob3duKGZlLm5vZGUsSXQsUHQpfSx0cnVuY2F0ZTpmdW5jdGlv''@;'; put 'put ''bihkdCxJdCl7aWYoSXQ8MCl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FSU5WQUwpO3ZhciBQdDtpZighKFB0PSJzdHJpbmciPT10eXBlb2YgZHQ/dm4ubG9va3VwUGF0aChkdCx7Zm9sbG93OiEwfSkubm9kZTpkdCkubm9kZV9vcHMuc2V0YXR0cil0aHJvdyBuZXcgdm4uRXJybm9FcnJv''@;'; put 'put ''cih2aS5FUEVSTSk7aWYodm4uaXNEaXIoUHQubW9kZSkpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRUlTRElSKTtpZighdm4uaXNGaWxlKFB0Lm1vZGUpKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVJTlZBTCk7dmFyIGl0PXZuLm5vZGVQZXJtaXNzaW9ucyhQdCwidyIpO2lmKGl0''@;'; put 'put ''KXRocm93IG5ldyB2bi5FcnJub0Vycm9yKGl0KTtQdC5ub2RlX29wcy5zZXRhdHRyKFB0LHtzaXplOkl0LHRpbWVzdGFtcDpEYXRlLm5vdygpfSl9LGZ0cnVuY2F0ZTpmdW5jdGlvbihkdCxJdCl7dmFyIFB0PXZuLmdldFN0cmVhbShkdCk7aWYoIVB0KXRocm93IG5ldyB2bi5FcnJub0Vycm9y''@;'; put 'put ''KHZpLkVCQURGKTtpZigwPT0oMjA5NzE1NSZQdC5mbGFncykpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRUlOVkFMKTt2bi50cnVuY2F0ZShQdC5ub2RlLEl0KX0sdXRpbWU6ZnVuY3Rpb24oZHQsSXQsUHQpe3ZhciBpdD12bi5sb29rdXBQYXRoKGR0LHtmb2xsb3c6ITB9KS5ub2RlO2l0''@;'; put 'put ''Lm5vZGVfb3BzLnNldGF0dHIoaXQse3RpbWVzdGFtcDpNYXRoLm1heChJdCxQdCl9KX0sb3BlbjpmdW5jdGlvbihkdCxJdCxQdCxmZSxpdCl7aWYoIiI9PT1kdCl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FTk9FTlQpO3ZhciBhO2lmKFB0PXZvaWQgMD09PVB0PzQzODpQdCxQdD02NCYo''@;'; put 'put ''SXQ9InN0cmluZyI9PXR5cGVvZiBJdD92bi5tb2RlU3RyaW5nVG9GbGFncyhJdCk6SXQpPzQwOTUmUHR8MzI3Njg6MCwib2JqZWN0Ij09dHlwZW9mIGR0KWE9ZHQ7ZWxzZXtkdD1VMC5ub3JtYWxpemUoZHQpO3RyeXthPXZuLmxvb2t1cFBhdGgoZHQse2ZvbGxvdzohKDEzMTA3MiZJdCl9KS5u''@;'; put 'put ''b2RlfWNhdGNoKEFvKXt9fXZhciBocj0hMTtpZig2NCZJdClpZihhKXtpZigxMjgmSXQpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRUVYSVNUKX1lbHNlIGE9dm4ubWtub2QoZHQsUHQsMCksaHI9ITA7aWYoIWEpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRU5PRU5UKTtpZih2bi5p''@;'; put 'put ''c0NocmRldihhLm1vZGUpJiYoSXQmPS01MTMpLDY1NTM2Jkl0JiYhdm4uaXNEaXIoYS5tb2RlKSl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FTk9URElSKTtpZighaHIpe3ZhciBQaT12bi5tYXlPcGVuKGEsSXQpO2lmKFBpKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKFBpKX01MTImSXQm''@;'; put 'put ''JnZuLnRydW5jYXRlKGEsMCksSXQmPS02NDE7dmFyIGpuPXZuLmNyZWF0ZVN0cmVhbSh7bm9kZTphLHBhdGg6dm4uZ2V0UGF0aChhKSxmbGFnczpJdCxzZWVrYWJsZTohMCxwb3NpdGlvbjowLHN0cmVhbV9vcHM6YS5zdHJlYW1fb3BzLHVuZ290dGVuOltdLGVycm9yOiExfSxmZSxpdCk7am4u''@;'; put 'put ''c3RyZWFtX29wcy5vcGVuJiZqbi5zdHJlYW1fb3BzLm9wZW4oam4pLGoubG9nUmVhZEZpbGVzJiYhKDEmSXQpJiYodm4ucmVhZEZpbGVzfHwodm4ucmVhZEZpbGVzPXt9KSxkdCBpbiB2bi5yZWFkRmlsZXN8fCh2bi5yZWFkRmlsZXNbZHRdPTEsai5wcmludEVycigicmVhZCBmaWxlOiAiK2R0''@;'; put 'put ''KSkpO3RyeXtpZih2bi50cmFja2luZ0RlbGVnYXRlLm9uT3BlbkZpbGUpe3ZhciBfPTA7MSE9KDIwOTcxNTUmSXQpJiYoX3w9dm4udHJhY2tpbmcub3BlbkZsYWdzLlJFQUQpLDAhPSgyMDk3MTU1Jkl0KSYmKF98PXZuLnRyYWNraW5nLm9wZW5GbGFncy5XUklURSksdm4udHJhY2tpbmdEZWxl''@;'; put 'put ''Z2F0ZS5vbk9wZW5GaWxlKGR0LF8pfX1jYXRjaChBbyl7Y29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uT3BlbkZpbGUnXSgnIitkdCsiJywgZmxhZ3MpIHRocmV3IGFuIGV4Y2VwdGlvbjogIitBby5tZXNzYWdlKX1yZXR1cm4gam59LGNsb3NlOmZ1bmN0aW9uKGR0KXtkdC5n''@;'; put 'put ''ZXRkZW50cyYmKGR0LmdldGRlbnRzPW51bGwpO3RyeXtkdC5zdHJlYW1fb3BzLmNsb3NlJiZkdC5zdHJlYW1fb3BzLmNsb3NlKGR0KX1jYXRjaChJdCl7dGhyb3cgSXR9ZmluYWxseXt2bi5jbG9zZVN0cmVhbShkdC5mZCl9fSxsbHNlZWs6ZnVuY3Rpb24oZHQsSXQsUHQpe2lmKCFkdC5zZWVr''@;'; put 'put ''YWJsZXx8IWR0LnN0cmVhbV9vcHMubGxzZWVrKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVTUElQRSk7cmV0dXJuIGR0LnBvc2l0aW9uPWR0LnN0cmVhbV9vcHMubGxzZWVrKGR0LEl0LFB0KSxkdC51bmdvdHRlbj1bXSxkdC5wb3NpdGlvbn0scmVhZDpmdW5jdGlvbihkdCxJdCxQdCxm''@;'; put 'put ''ZSxpdCl7aWYoZmU8MHx8aXQ8MCl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FSU5WQUwpO2lmKDE9PSgyMDk3MTU1JmR0LmZsYWdzKSl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FQkFERik7aWYodm4uaXNEaXIoZHQubm9kZS5tb2RlKSl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2''@;'; put 'put ''aS5FSVNESVIpO2lmKCFkdC5zdHJlYW1fb3BzLnJlYWQpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRUlOVkFMKTt2YXIgYT12b2lkIDAhPT1pdDtpZihhKXtpZighZHQuc2Vla2FibGUpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRVNQSVBFKX1lbHNlIGl0PWR0LnBvc2l0aW9uO3Zh''@;'; put 'put ''ciBYdD1kdC5zdHJlYW1fb3BzLnJlYWQoZHQsSXQsUHQsZmUsaXQpO3JldHVybiBhfHwoZHQucG9zaXRpb24rPVh0KSxYdH0sd3JpdGU6ZnVuY3Rpb24oZHQsSXQsUHQsZmUsaXQsYSl7aWYoZmU8MHx8aXQ8MCl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FSU5WQUwpO2lmKDA9PSgyMDk3''@;'; put 'put ''MTU1JmR0LmZsYWdzKSl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FQkFERik7aWYodm4uaXNEaXIoZHQubm9kZS5tb2RlKSl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FSVNESVIpO2lmKCFkdC5zdHJlYW1fb3BzLndyaXRlKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVJTlZB''@;'; put 'put ''TCk7MTAyNCZkdC5mbGFncyYmdm4ubGxzZWVrKGR0LDAsMik7dmFyIFh0PXZvaWQgMCE9PWl0O2lmKFh0KXtpZighZHQuc2Vla2FibGUpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRVNQSVBFKX1lbHNlIGl0PWR0LnBvc2l0aW9uO3ZhciBocj1kdC5zdHJlYW1fb3BzLndyaXRlKGR0LEl0''@;'; put 'put ''LFB0LGZlLGl0LGEpO1h0fHwoZHQucG9zaXRpb24rPWhyKTt0cnl7ZHQucGF0aCYmdm4udHJhY2tpbmdEZWxlZ2F0ZS5vbldyaXRlVG9GaWxlJiZ2bi50cmFja2luZ0RlbGVnYXRlLm9uV3JpdGVUb0ZpbGUoZHQucGF0aCl9Y2F0Y2goUGkpe2NvbnNvbGUubG9nKCJGUy50cmFja2luZ0RlbGVn''@;'; put 'put ''YXRlWydvbldyaXRlVG9GaWxlJ10oJyIrcGF0aCsiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiK1BpLm1lc3NhZ2UpfXJldHVybiBocn0sYWxsb2NhdGU6ZnVuY3Rpb24oZHQsSXQsUHQpe2lmKEl0PDB8fFB0PD0wKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVJTlZBTCk7aWYoMD09KDIw''@;'; put 'put ''OTcxNTUmZHQuZmxhZ3MpKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVCQURGKTtpZighdm4uaXNGaWxlKGR0Lm5vZGUubW9kZSkmJiF2bi5pc0RpcihkdC5ub2RlLm1vZGUpKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVOT0RFVik7aWYoIWR0LnN0cmVhbV9vcHMuYWxsb2NhdGUp''@;'; put 'put ''dGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRU9QTk9UU1VQUCk7ZHQuc3RyZWFtX29wcy5hbGxvY2F0ZShkdCxJdCxQdCl9LG1tYXA6ZnVuY3Rpb24oZHQsSXQsUHQsZmUsaXQsYSxYdCl7aWYoMT09KDIwOTcxNTUmZHQuZmxhZ3MpKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVBQ0NF''@;'; put 'put ''Uyk7aWYoIWR0LnN0cmVhbV9vcHMubW1hcCl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FTk9ERVYpO3JldHVybiBkdC5zdHJlYW1fb3BzLm1tYXAoZHQsSXQsUHQsZmUsaXQsYSxYdCl9LG1zeW5jOmZ1bmN0aW9uKGR0LEl0LFB0LGZlLGl0KXtyZXR1cm4gZHQmJmR0LnN0cmVhbV9vcHMu''@;'; put 'put ''bXN5bmM/ZHQuc3RyZWFtX29wcy5tc3luYyhkdCxJdCxQdCxmZSxpdCk6MH0sbXVubWFwOmZ1bmN0aW9uKGR0KXtyZXR1cm4gMH0saW9jdGw6ZnVuY3Rpb24oZHQsSXQsUHQpe2lmKCFkdC5zdHJlYW1fb3BzLmlvY3RsKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVOT1RUWSk7cmV0dXJu''@;'; put 'put ''IGR0LnN0cmVhbV9vcHMuaW9jdGwoZHQsSXQsUHQpfSxyZWFkRmlsZTpmdW5jdGlvbihkdCxJdCl7aWYoKEl0PUl0fHx7fSkuZmxhZ3M9SXQuZmxhZ3N8fCJyIixJdC5lbmNvZGluZz1JdC5lbmNvZGluZ3x8ImJpbmFyeSIsInV0ZjgiIT09SXQuZW5jb2RpbmcmJiJiaW5hcnkiIT09SXQuZW5j''@;'; put 'put ''b2RpbmcpdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVuY29kaW5nIHR5cGUgIicrSXQuZW5jb2RpbmcrJyInKTt2YXIgUHQsZmU9dm4ub3BlbihkdCxJdC5mbGFncyksYT12bi5zdGF0KGR0KS5zaXplLFh0PW5ldyBVaW50OEFycmF5KGEpO3JldHVybiB2bi5yZWFkKGZlLFh0LDAsYSwwKSwi''@;'; put 'put ''dXRmOCI9PT1JdC5lbmNvZGluZz9QdD1DZShYdCwwKToiYmluYXJ5Ij09PUl0LmVuY29kaW5nJiYoUHQ9WHQpLHZuLmNsb3NlKGZlKSxQdH0sd3JpdGVGaWxlOmZ1bmN0aW9uKGR0LEl0LFB0KXsoUHQ9UHR8fHt9KS5mbGFncz1QdC5mbGFnc3x8InciO3ZhciBmZT12bi5vcGVuKGR0LFB0LmZs''@;'; put 'put ''YWdzLFB0Lm1vZGUpO2lmKCJzdHJpbmciPT10eXBlb2YgSXQpe3ZhciBpdD1uZXcgVWludDhBcnJheSgkZShJdCkrMSksYT1QZShJdCxpdCwwLGl0Lmxlbmd0aCk7dm4ud3JpdGUoZmUsaXQsMCxhLHZvaWQgMCxQdC5jYW5Pd24pfWVsc2V7aWYoIUFycmF5QnVmZmVyLmlzVmlldyhJdCkpdGhy''@;'; put 'put ''b3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBkYXRhIHR5cGUiKTt2bi53cml0ZShmZSxJdCwwLEl0LmJ5dGVMZW5ndGgsdm9pZCAwLFB0LmNhbk93bil9dm4uY2xvc2UoZmUpfSxjd2Q6ZnVuY3Rpb24oKXtyZXR1cm4gdm4uY3VycmVudFBhdGh9LGNoZGlyOmZ1bmN0aW9uKGR0KXt2YXIgSXQ9''@;'; put 'put ''dm4ubG9va3VwUGF0aChkdCx7Zm9sbG93OiEwfSk7aWYobnVsbD09PUl0Lm5vZGUpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRU5PRU5UKTtpZighdm4uaXNEaXIoSXQubm9kZS5tb2RlKSl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FTk9URElSKTt2YXIgUHQ9dm4ubm9kZVBlcm1p''@;'; put 'put ''c3Npb25zKEl0Lm5vZGUsIngiKTtpZihQdCl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcihQdCk7dm4uY3VycmVudFBhdGg9SXQucGF0aH0sY3JlYXRlRGVmYXVsdERpcmVjdG9yaWVzOmZ1bmN0aW9uKCl7dm4ubWtkaXIoIi90bXAiKSx2bi5ta2RpcigiL2hvbWUiKSx2bi5ta2RpcigiL2hvbWUv''@;'; put 'put ''d2ViX3VzZXIiKX0sY3JlYXRlRGVmYXVsdERldmljZXM6ZnVuY3Rpb24oKXt2YXIgZHQ7aWYodm4ubWtkaXIoIi9kZXYiKSx2bi5yZWdpc3RlckRldmljZSh2bi5tYWtlZGV2KDEsMykse3JlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sd3JpdGU6ZnVuY3Rpb24oUHQsZmUsaXQsYSxYdCl7cmV0''@;'; put 'put ''dXJuIGF9fSksdm4ubWtkZXYoIi9kZXYvbnVsbCIsdm4ubWFrZWRldigxLDMpKSxCcy5yZWdpc3Rlcih2bi5tYWtlZGV2KDUsMCksQnMuZGVmYXVsdF90dHlfb3BzKSxCcy5yZWdpc3Rlcih2bi5tYWtlZGV2KDYsMCksQnMuZGVmYXVsdF90dHkxX29wcyksdm4ubWtkZXYoIi9kZXYvdHR5Iix2''@;'; put 'put ''bi5tYWtlZGV2KDUsMCkpLHZuLm1rZGV2KCIvZGV2L3R0eTEiLHZuLm1ha2VkZXYoNiwwKSksInVuZGVmaW5lZCIhPXR5cGVvZiBjcnlwdG8pe3ZhciBJdD1uZXcgVWludDhBcnJheSgxKTtkdD1mdW5jdGlvbigpe3JldHVybiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKEl0KSxJdFswXX19ZWxz''@;'; put 'put ''ZSBkdD1OP2Z1bmN0aW9uKCl7cmV0dXJuIEwoNDEzNDgpLnJhbmRvbUJ5dGVzKDEpWzBdfTpmdW5jdGlvbigpe3JldHVybiAyNTYqTWF0aC5yYW5kb20oKXwwfTt2bi5jcmVhdGVEZXZpY2UoIi9kZXYiLCJyYW5kb20iLGR0KSx2bi5jcmVhdGVEZXZpY2UoIi9kZXYiLCJ1cmFuZG9tIixkdCks''@;'; put 'put ''dm4ubWtkaXIoIi9kZXYvc2htIiksdm4ubWtkaXIoIi9kZXYvc2htL3RtcCIpfSxjcmVhdGVTcGVjaWFsRGlyZWN0b3JpZXM6ZnVuY3Rpb24oKXt2bi5ta2RpcigiL3Byb2MiKSx2bi5ta2RpcigiL3Byb2Mvc2VsZiIpLHZuLm1rZGlyKCIvcHJvYy9zZWxmL2ZkIiksdm4ubW91bnQoe21vdW50''@;'; put 'put ''OmZ1bmN0aW9uKCl7dmFyIGR0PXZuLmNyZWF0ZU5vZGUoIi9wcm9jL3NlbGYiLCJmZCIsMTY4OTUsNzMpO3JldHVybiBkdC5ub2RlX29wcz17bG9va3VwOmZ1bmN0aW9uKEl0LFB0KXt2YXIgaXQ9dm4uZ2V0U3RyZWFtKCtQdCk7aWYoIWl0KXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVC''@;'; put 'put ''QURGKTt2YXIgYT17cGFyZW50Om51bGwsbW91bnQ6e21vdW50cG9pbnQ6ImZha2UifSxub2RlX29wczp7cmVhZGxpbms6ZnVuY3Rpb24oKXtyZXR1cm4gaXQucGF0aH19fTtyZXR1cm4gYS5wYXJlbnQ9YSxhfX0sZHR9fSx7fSwiL3Byb2Mvc2VsZi9mZCIpfSxjcmVhdGVTdGFuZGFyZFN0cmVh''@;'; put 'put ''bXM6ZnVuY3Rpb24oKXtqLnN0ZGluP3ZuLmNyZWF0ZURldmljZSgiL2RldiIsInN0ZGluIixqLnN0ZGluKTp2bi5zeW1saW5rKCIvZGV2L3R0eSIsIi9kZXYvc3RkaW4iKSxqLnN0ZG91dD92bi5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRvdXQiLG51bGwsai5zdGRvdXQpOnZuLnN5bWxpbmso''@;'; put 'put ''Ii9kZXYvdHR5IiwiL2Rldi9zdGRvdXQiKSxqLnN0ZGVycj92bi5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRlcnIiLG51bGwsai5zdGRlcnIpOnZuLnN5bWxpbmsoIi9kZXYvdHR5MSIsIi9kZXYvc3RkZXJyIik7dmFyIGR0PXZuLm9wZW4oIi9kZXYvc3RkaW4iLCJyIik7TygwPT09ZHQuZmQs''@;'; put 'put ''ImludmFsaWQgaGFuZGxlIGZvciBzdGRpbiAoIitkdC5mZCsiKSIpO3ZhciBJdD12bi5vcGVuKCIvZGV2L3N0ZG91dCIsInciKTtPKDE9PT1JdC5mZCwiaW52YWxpZCBoYW5kbGUgZm9yIHN0ZG91dCAoIitJdC5mZCsiKSIpO3ZhciBQdD12bi5vcGVuKCIvZGV2L3N0ZGVyciIsInciKTtPKDI9''@;'; put 'put ''PT1QdC5mZCwiaW52YWxpZCBoYW5kbGUgZm9yIHN0ZGVyciAoIitQdC5mZCsiKSIpfSxlbnN1cmVFcnJub0Vycm9yOmZ1bmN0aW9uKCl7dm4uRXJybm9FcnJvcnx8KHZuLkVycm5vRXJyb3I9ZnVuY3Rpb24oSXQsUHQpe3RoaXMubm9kZT1QdCx0aGlzLnNldEVycm5vPWZ1bmN0aW9uKGZlKXtm''@;'; put 'put ''b3IodmFyIGl0IGluIHRoaXMuZXJybm89ZmUsdmkpaWYodmlbaXRdPT09ZmUpe3RoaXMuY29kZT1pdDticmVha319LHRoaXMuc2V0RXJybm8oSXQpLHRoaXMubWVzc2FnZT1IY1tJdF0sdGhpcy5zdGFjayYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInN0YWNrIix7dmFsdWU6KG5ldyBF''@;'; put 'put ''cnJvcikuc3RhY2ssd3JpdGFibGU6ITB9KX0sdm4uRXJybm9FcnJvci5wcm90b3R5cGU9bmV3IEVycm9yLHZuLkVycm5vRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yPXZuLkVycm5vRXJyb3IsW3ZpLkVOT0VOVF0uZm9yRWFjaChmdW5jdGlvbihkdCl7dm4uZ2VuZXJpY0Vycm9yc1tkdF09''@;'; put 'put ''bmV3IHZuLkVycm5vRXJyb3IoZHQpLHZuLmdlbmVyaWNFcnJvcnNbZHRdLnN0YWNrPSI8Z2VuZXJpYyBlcnJvciwgbm8gc3RhY2s+In0pKX0sc3RhdGljSW5pdDpmdW5jdGlvbigpe3ZuLmVuc3VyZUVycm5vRXJyb3IoKSx2bi5uYW1lVGFibGU9bmV3IEFycmF5KDQwOTYpLHZuLm1vdW50KFgw''@;'; put 'put ''LHt9LCIvIiksdm4uY3JlYXRlRGVmYXVsdERpcmVjdG9yaWVzKCksdm4uY3JlYXRlRGVmYXVsdERldmljZXMoKSx2bi5jcmVhdGVTcGVjaWFsRGlyZWN0b3JpZXMoKSx2bi5maWxlc3lzdGVtcz17TUVNRlM6WDAsSURCRlM6dWEsTk9ERUZTOmowLFdPUktFUkZTOkJsfX0saW5pdDpmdW5jdGlv''@;'; put 'put ''bihkdCxJdCxQdCl7Tyghdm4uaW5pdC5pbml0aWFsaXplZCwiRlMuaW5pdCB3YXMgcHJldmlvdXNseSBjYWxsZWQuIElmIHlvdSB3YW50IHRvIGluaXRpYWxpemUgbGF0ZXIgd2l0aCBjdXN0b20gcGFyYW1ldGVycywgcmVtb3ZlIGFueSBlYXJsaWVyIGNhbGxzIChub3RlIHRoYXQgb25lIGlz''@;'; put 'put ''IGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIGdlbmVyYXRlZCBjb2RlKSIpLHZuLmluaXQuaW5pdGlhbGl6ZWQ9ITAsdm4uZW5zdXJlRXJybm9FcnJvcigpLGouc3RkaW49ZHR8fGouc3RkaW4sai5zdGRvdXQ9SXR8fGouc3Rkb3V0LGouc3RkZXJyPVB0fHxqLnN0ZGVycix2bi5jcmVhdGVT''@;'; put 'put ''dGFuZGFyZFN0cmVhbXMoKX0scXVpdDpmdW5jdGlvbigpe3ZuLmluaXQuaW5pdGlhbGl6ZWQ9ITE7dmFyIGR0PWouX2ZmbHVzaDtkdCYmZHQoMCk7Zm9yKHZhciBJdD0wO0l0PHZuLnN0cmVhbXMubGVuZ3RoO0l0Kyspe3ZhciBQdD12bi5zdHJlYW1zW0l0XTshUHR8fHZuLmNsb3NlKFB0KX19''@;'; put 'put ''LGdldE1vZGU6ZnVuY3Rpb24oZHQsSXQpe3ZhciBQdD0wO3JldHVybiBkdCYmKFB0fD0zNjUpLEl0JiYoUHR8PTE0NiksUHR9LGpvaW5QYXRoOmZ1bmN0aW9uKGR0LEl0KXt2YXIgUHQ9VTAuam9pbi5hcHBseShudWxsLGR0KTtyZXR1cm4gSXQmJiIvIj09UHRbMF0mJihQdD1QdC5zdWJzdHIo''@;'; put 'put ''MSkpLFB0fSxhYnNvbHV0ZVBhdGg6ZnVuY3Rpb24oZHQsSXQpe3JldHVybiBVMC5yZXNvbHZlKEl0LGR0KX0sc3RhbmRhcmRpemVQYXRoOmZ1bmN0aW9uKGR0KXtyZXR1cm4gVTAubm9ybWFsaXplKGR0KX0sZmluZE9iamVjdDpmdW5jdGlvbihkdCxJdCl7dmFyIFB0PXZuLmFuYWx5emVQYXRo''@;'; put 'put ''KGR0LEl0KTtyZXR1cm4gUHQuZXhpc3RzP1B0Lm9iamVjdDooYjAoUHQuZXJyb3IpLG51bGwpfSxhbmFseXplUGF0aDpmdW5jdGlvbihkdCxJdCl7dHJ5e2R0PShQdD12bi5sb29rdXBQYXRoKGR0LHtmb2xsb3c6IUl0fSkpLnBhdGh9Y2F0Y2goaXQpe312YXIgZmU9e2lzUm9vdDohMSxleGlz''@;'; put 'put ''dHM6ITEsZXJyb3I6MCxuYW1lOm51bGwscGF0aDpudWxsLG9iamVjdDpudWxsLHBhcmVudEV4aXN0czohMSxwYXJlbnRQYXRoOm51bGwscGFyZW50T2JqZWN0Om51bGx9O3RyeXt2YXIgUHQ9dm4ubG9va3VwUGF0aChkdCx7cGFyZW50OiEwfSk7ZmUucGFyZW50RXhpc3RzPSEwLGZlLnBhcmVu''@;'; put 'put ''dFBhdGg9UHQucGF0aCxmZS5wYXJlbnRPYmplY3Q9UHQubm9kZSxmZS5uYW1lPVUwLmJhc2VuYW1lKGR0KSxQdD12bi5sb29rdXBQYXRoKGR0LHtmb2xsb3c6IUl0fSksZmUuZXhpc3RzPSEwLGZlLnBhdGg9UHQucGF0aCxmZS5vYmplY3Q9UHQubm9kZSxmZS5uYW1lPVB0Lm5vZGUubmFtZSxm''@;'; put 'put ''ZS5pc1Jvb3Q9Ii8iPT09UHQucGF0aH1jYXRjaChpdCl7ZmUuZXJyb3I9aXQuZXJybm99cmV0dXJuIGZlfSxjcmVhdGVGb2xkZXI6ZnVuY3Rpb24oZHQsSXQsUHQsZmUpe3ZhciBpdD1VMC5qb2luMigic3RyaW5nIj09dHlwZW9mIGR0P2R0OnZuLmdldFBhdGgoZHQpLEl0KSxhPXZuLmdldE1v''@;'; put 'put ''ZGUoUHQsZmUpO3JldHVybiB2bi5ta2RpcihpdCxhKX0sY3JlYXRlUGF0aDpmdW5jdGlvbihkdCxJdCxQdCxmZSl7ZHQ9InN0cmluZyI9PXR5cGVvZiBkdD9kdDp2bi5nZXRQYXRoKGR0KTtmb3IodmFyIGl0PUl0LnNwbGl0KCIvIikucmV2ZXJzZSgpO2l0Lmxlbmd0aDspe3ZhciBhPWl0LnBv''@;'; put 'put ''cCgpO2lmKGEpe3ZhciBYdD1VMC5qb2luMihkdCxhKTt0cnl7dm4ubWtkaXIoWHQpfWNhdGNoKGhyKXt9ZHQ9WHR9fXJldHVybiBYdH0sY3JlYXRlRmlsZTpmdW5jdGlvbihkdCxJdCxQdCxmZSxpdCl7dmFyIGE9VTAuam9pbjIoInN0cmluZyI9PXR5cGVvZiBkdD9kdDp2bi5nZXRQYXRoKGR0''@;'; put 'put ''KSxJdCksWHQ9dm4uZ2V0TW9kZShmZSxpdCk7cmV0dXJuIHZuLmNyZWF0ZShhLFh0KX0sY3JlYXRlRGF0YUZpbGU6ZnVuY3Rpb24oZHQsSXQsUHQsZmUsaXQsYSl7dmFyIFh0PUl0P1UwLmpvaW4yKCJzdHJpbmciPT10eXBlb2YgZHQ/ZHQ6dm4uZ2V0UGF0aChkdCksSXQpOmR0LGhyPXZuLmdl''@;'; put 'put ''dE1vZGUoZmUsaXQpLFBpPXZuLmNyZWF0ZShYdCxocik7aWYoUHQpe2lmKCJzdHJpbmciPT10eXBlb2YgUHQpe2Zvcih2YXIgam49bmV3IEFycmF5KFB0Lmxlbmd0aCksXz0wLEFvPVB0Lmxlbmd0aDtfPEFvOysrXylqbltfXT1QdC5jaGFyQ29kZUF0KF8pO1B0PWpufXZuLmNobW9kKFBpLDE0''@;'; put 'put ''Nnxocik7dmFyIFNpPXZuLm9wZW4oUGksInciKTt2bi53cml0ZShTaSxQdCwwLFB0Lmxlbmd0aCwwLGEpLHZuLmNsb3NlKFNpKSx2bi5jaG1vZChQaSxocil9cmV0dXJuIFBpfSxjcmVhdGVEZXZpY2U6ZnVuY3Rpb24oZHQsSXQsUHQsZmUpe3ZhciBpdD1VMC5qb2luMigic3RyaW5nIj09dHlw''@;'; put 'put ''ZW9mIGR0P2R0OnZuLmdldFBhdGgoZHQpLEl0KSxhPXZuLmdldE1vZGUoISFQdCwhIWZlKTt2bi5jcmVhdGVEZXZpY2UubWFqb3J8fCh2bi5jcmVhdGVEZXZpY2UubWFqb3I9NjQpO3ZhciBYdD12bi5tYWtlZGV2KHZuLmNyZWF0ZURldmljZS5tYWpvcisrLDApO3JldHVybiB2bi5yZWdpc3Rl''@;'; put 'put ''ckRldmljZShYdCx7b3BlbjpmdW5jdGlvbihocil7aHIuc2Vla2FibGU9ITF9LGNsb3NlOmZ1bmN0aW9uKGhyKXtmZSYmZmUuYnVmZmVyJiZmZS5idWZmZXIubGVuZ3RoJiZmZSgxMCl9LHJlYWQ6ZnVuY3Rpb24oaHIsUGksam4sXyxBbyl7Zm9yKHZhciBTaT0wLCRvPTA7JG88XzskbysrKXt2''@;'; put 'put ''YXIgbGU7dHJ5e2xlPVB0KCl9Y2F0Y2goVjEpe3Rocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVJTyl9aWYodm9pZCAwPT09bGUmJjA9PT1TaSl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FQUdBSU4pO2lmKG51bGw9PWxlKWJyZWFrO1NpKyssUGlbam4rJG9dPWxlfXJldHVybiBTaSYm''@;'; put 'put ''KGhyLm5vZGUudGltZXN0YW1wPURhdGUubm93KCkpLFNpfSx3cml0ZTpmdW5jdGlvbihocixQaSxqbixfLEFvKXtmb3IodmFyIFNpPTA7U2k8XztTaSsrKXRyeXtmZShQaVtqbitTaV0pfWNhdGNoKCRvKXt0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FSU8pfXJldHVybiBfJiYoaHIubm9k''@;'; put 'put ''ZS50aW1lc3RhbXA9RGF0ZS5ub3coKSksU2l9fSksdm4ubWtkZXYoaXQsYSxYdCl9LGNyZWF0ZUxpbms6ZnVuY3Rpb24oZHQsSXQsUHQsZmUsaXQpe3ZhciBhPVUwLmpvaW4yKCJzdHJpbmciPT10eXBlb2YgZHQ/ZHQ6dm4uZ2V0UGF0aChkdCksSXQpO3JldHVybiB2bi5zeW1saW5rKFB0LGEp''@;'; put 'put ''fSxmb3JjZUxvYWRGaWxlOmZ1bmN0aW9uKGR0KXtpZihkdC5pc0RldmljZXx8ZHQuaXNGb2xkZXJ8fGR0Lmxpbmt8fGR0LmNvbnRlbnRzKXJldHVybiEwO3ZhciBJdD0hMDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0KXRocm93IG5ldyBFcnJvcigiTGF6eSBsb2FkaW5n''@;'; put 'put ''IHNob3VsZCBoYXZlIGJlZW4gcGVyZm9ybWVkIChjb250ZW50cyBzZXQpIGluIGNyZWF0ZUxhenlGaWxlLCBidXQgaXQgd2FzIG5vdC4gTGF6eSBsb2FkaW5nIG9ubHkgd29ya3MgaW4gd2ViIHdvcmtlcnMuIFVzZSAtLWVtYmVkLWZpbGUgb3IgLS1wcmVsb2FkLWZpbGUgaW4gZW1jYyBvbiB0''@;'; put 'put ''aGUgbWFpbiB0aHJlYWQuIik7aWYoIWoucmVhZCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBsb2FkIHdpdGhvdXQgcmVhZCgpIG9yIFhNTEh0dHBSZXF1ZXN0LiIpO3RyeXtkdC5jb250ZW50cz1zbyhqLnJlYWQoZHQudXJsKSwhMCksZHQudXNlZEJ5dGVzPWR0LmNvbnRlbnRzLmxlbmd0aH1j''@;'; put 'put ''YXRjaChQdCl7SXQ9ITF9cmV0dXJuIEl0fHxiMCh2aS5FSU8pLEl0fSxjcmVhdGVMYXp5RmlsZTpmdW5jdGlvbihkdCxJdCxQdCxmZSxpdCl7ZnVuY3Rpb24gYSgpe3RoaXMubGVuZ3RoS25vd249ITEsdGhpcy5jaHVua3M9W119aWYoYS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKFNpKXtpZigh''@;'; put 'put ''KFNpPnRoaXMubGVuZ3RoLTF8fFNpPDApKXt2YXIgJG89U2kldGhpcy5jaHVua1NpemU7cmV0dXJuIHRoaXMuZ2V0dGVyKFNpL3RoaXMuY2h1bmtTaXplfDApWyRvXX19LGEucHJvdG90eXBlLnNldERhdGFHZXR0ZXI9ZnVuY3Rpb24oU2kpe3RoaXMuZ2V0dGVyPVNpfSxhLnByb3RvdHlwZS5j''@;'; put 'put ''YWNoZUxlbmd0aD1mdW5jdGlvbigpe3ZhciBTaT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoU2kub3BlbigiSEVBRCIsUHQsITEpLFNpLnNlbmQobnVsbCksIShTaS5zdGF0dXM+PTIwMCYmU2kuc3RhdHVzPDMwMHx8MzA0PT09U2kuc3RhdHVzKSl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkbid0IGxv''@;'; put 'put ''YWQgIitQdCsiLiBTdGF0dXM6ICIrU2kuc3RhdHVzKTt2YXIgbGUsJG89TnVtYmVyKFNpLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LWxlbmd0aCIpKSxWMT0obGU9U2kuZ2V0UmVzcG9uc2VIZWFkZXIoIkFjY2VwdC1SYW5nZXMiKSkmJiJieXRlcyI9PT1sZSxscz0obGU9U2kuZ2V0UmVz''@;'; put 'put ''cG9uc2VIZWFkZXIoIkNvbnRlbnQtRW5jb2RpbmciKSkmJiJnemlwIj09PWxlLE1uPTEwNDg1NzY7VjF8fChNbj0kbyk7dmFyIGkyPXRoaXM7aTIuc2V0RGF0YUdldHRlcihmdW5jdGlvbihvMil7dmFyIGpjPW8yKk1uLHlzPShvMisxKSpNbi0xO2lmKHlzPU1hdGgubWluKHlzLCRvLTEpLHZv''@;'; put 'put ''aWQgMD09PWkyLmNodW5rc1tvMl0mJihpMi5jaHVua3NbbzJdPWZ1bmN0aW9uKG8yLGpjKXtpZihvMj5qYyl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcmFuZ2UgKCIrbzIrIiwgIitqYysiKSBvciBubyBieXRlcyByZXF1ZXN0ZWQhIik7aWYoamM+JG8tMSl0aHJvdyBuZXcgRXJyb3IoIm9u''@;'; put 'put ''bHkgIiskbysiIGJ5dGVzIGF2YWlsYWJsZSEgcHJvZ3JhbW1lciBlcnJvciEiKTt2YXIgeXM9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKHlzLm9wZW4oIkdFVCIsUHQsITEpLCRvIT09TW4mJnlzLnNldFJlcXVlc3RIZWFkZXIoIlJhbmdlIiwiYnl0ZXM9IitvMisiLSIramMpLCJ1bmRlZmluZWQi''@;'; put 'put ''IT10eXBlb2YgVWludDhBcnJheSYmKHlzLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiKSx5cy5vdmVycmlkZU1pbWVUeXBlJiZ5cy5vdmVycmlkZU1pbWVUeXBlKCJ0ZXh0L3BsYWluOyBjaGFyc2V0PXgtdXNlci1kZWZpbmVkIikseXMuc2VuZChudWxsKSwhKHlzLnN0YXR1cz49MjAwJiZ5''@;'; put 'put ''cy5zdGF0dXM8MzAwfHwzMDQ9PT15cy5zdGF0dXMpKXRocm93IG5ldyBFcnJvcigiQ291bGRuJ3QgbG9hZCAiK1B0KyIuIFN0YXR1czogIit5cy5zdGF0dXMpO3JldHVybiB2b2lkIDAhPT15cy5yZXNwb25zZT9uZXcgVWludDhBcnJheSh5cy5yZXNwb25zZXx8W10pOnNvKHlzLnJlc3BvbnNl''@;'; put 'put ''VGV4dHx8IiIsITApfShqYyx5cykpLHZvaWQgMD09PWkyLmNodW5rc1tvMl0pdGhyb3cgbmV3IEVycm9yKCJkb1hIUiBmYWlsZWQhIik7cmV0dXJuIGkyLmNodW5rc1tvMl19KSwobHN8fCEkbykmJihNbj0kbz0xLCRvPXRoaXMuZ2V0dGVyKDApLmxlbmd0aCxNbj0kbyxjb25zb2xlLmxvZygi''@;'; put 'put ''TGF6eUZpbGVzIG9uIGd6aXAgZm9yY2VzIGRvd25sb2FkIG9mIHRoZSB3aG9sZSBmaWxlIHdoZW4gbGVuZ3RoIGlzIGFjY2Vzc2VkIikpLHRoaXMuX2xlbmd0aD0kbyx0aGlzLl9jaHVua1NpemU9TW4sdGhpcy5sZW5ndGhLbm93bj0hMH0sInVuZGVmaW5lZCIhPXR5cGVvZiBYTUxIdHRwUmVx''@;'; put 'put ''dWVzdCl7aWYoIVcpdGhyb3ciQ2Fubm90IGRvIHN5bmNocm9ub3VzIGJpbmFyeSBYSFJzIG91dHNpZGUgd2Vid29ya2VycyBpbiBtb2Rlcm4gYnJvd3NlcnMuIFVzZSAtLWVtYmVkLWZpbGUgb3IgLS1wcmVsb2FkLWZpbGUgaW4gZW1jYyI7dmFyIFh0PW5ldyBhO09iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0aWVzKFh0LHtsZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aEtub3dufHx0aGlzLmNhY2hlTGVuZ3RoKCksdGhpcy5fbGVuZ3RofX0sY2h1bmtTaXplOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGhLbm93bnx8dGhpcy5jYWNoZUxlbmd0aCgpLHRo''@;'; put 'put ''aXMuX2NodW5rU2l6ZX19fSk7dmFyIGhyPXtpc0RldmljZTohMSxjb250ZW50czpYdH19ZWxzZSBocj17aXNEZXZpY2U6ITEsdXJsOlB0fTt2YXIgUGk9dm4uY3JlYXRlRmlsZShkdCxJdCxocixmZSxpdCk7aHIuY29udGVudHM/UGkuY29udGVudHM9aHIuY29udGVudHM6aHIudXJsJiYoUGku''@;'; put 'put ''Y29udGVudHM9bnVsbCxQaS51cmw9aHIudXJsKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhQaSx7dXNlZEJ5dGVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZW50cy5sZW5ndGh9fX0pO3ZhciBqbj17fTtyZXR1cm4gT2JqZWN0LmtleXMoUGkuc3RyZWFtX29wcykuZm9yRWFj''@;'; put 'put ''aChmdW5jdGlvbihBbyl7dmFyIFNpPVBpLnN0cmVhbV9vcHNbQW9dO2puW0FvXT1mdW5jdGlvbigpe2lmKCF2bi5mb3JjZUxvYWRGaWxlKFBpKSl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FSU8pO3JldHVybiBTaS5hcHBseShudWxsLGFyZ3VtZW50cyl9fSksam4ucmVhZD1mdW5jdGlv''@;'; put 'put ''bihTaSwkbyxsZSxWMSxscyl7aWYoIXZuLmZvcmNlTG9hZEZpbGUoUGkpKXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVJTyk7dmFyIE1uPVNpLm5vZGUuY29udGVudHM7aWYobHM+PU1uLmxlbmd0aClyZXR1cm4gMDt2YXIgeG49TWF0aC5taW4oTW4ubGVuZ3RoLWxzLFYxKTtpZihPKHhu''@;'; put 'put ''Pj0wKSxNbi5zbGljZSlmb3IodmFyIGkyPTA7aTI8eG47aTIrKykkb1tsZStpMl09TW5bbHMraTJdO2Vsc2UgZm9yKGkyPTA7aTI8eG47aTIrKykkb1tsZStpMl09TW4uZ2V0KGxzK2kyKTtyZXR1cm4geG59LFBpLnN0cmVhbV9vcHM9am4sUGl9LGNyZWF0ZVByZWxvYWRlZEZpbGU6ZnVuY3Rp''@;'; put 'put ''b24oZHQsSXQsUHQsZmUsaXQsYSxYdCxocixQaSxqbil7QnJvd3Nlci5pbml0KCk7dmFyIF89SXQ/VTAucmVzb2x2ZShVMC5qb2luMihkdCxJdCkpOmR0O2Z1bmN0aW9uIFNpKCRvKXtmdW5jdGlvbiBsZShscyl7am4mJmpuKCksaHJ8fHZuLmNyZWF0ZURhdGFGaWxlKGR0LEl0LGxzLGZlLGl0''@;'; put 'put ''LFBpKSxhJiZhKCksVzAoKX12YXIgVjE9ITE7ai5wcmVsb2FkUGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uKGxzKXtWMXx8bHMuY2FuSGFuZGxlKF8pJiYobHMuaGFuZGxlKCRvLF8sbGUsZnVuY3Rpb24oKXtYdCYmWHQoKSxXMCgpfSksVjE9ITApfSksVjF8fGxlKCRvKX1EaSgpLCJzdHJpbmci''@;'; put 'put ''PT10eXBlb2YgUHQ/QnJvd3Nlci5hc3luY0xvYWQoUHQsZnVuY3Rpb24oJG8pe1NpKCRvKX0sWHQpOlNpKFB0KX0saW5kZXhlZERCOmZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5pbmRleGVkREJ8fHdpbmRvdy5tb3pJbmRleGVkREJ8fHdpbmRvdy53ZWJraXRJbmRleGVkREJ8fHdpbmRvdy5t''@;'; put 'put ''c0luZGV4ZWREQn0sREJfTkFNRTpmdW5jdGlvbigpe3JldHVybiJFTV9GU18iK3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX0sREJfVkVSU0lPTjoyMCxEQl9TVE9SRV9OQU1FOiJGSUxFX0RBVEEiLHNhdmVGaWxlc1RvREI6ZnVuY3Rpb24oZHQsSXQsUHQpe0l0PUl0fHxmdW5jdGlvbigpe30s''@;'; put 'put ''UHQ9UHR8fGZ1bmN0aW9uKCl7fTt2YXIgZmU9dm4uaW5kZXhlZERCKCk7dHJ5e3ZhciBpdD1mZS5vcGVuKHZuLkRCX05BTUUoKSx2bi5EQl9WRVJTSU9OKX1jYXRjaChhKXtyZXR1cm4gUHQoYSl9aXQub251cGdyYWRlbmVlZGVkPWZ1bmN0aW9uKCl7Y29uc29sZS5sb2coImNyZWF0aW5nIGRi''@;'; put 'put ''IiksaXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKHZuLkRCX1NUT1JFX05BTUUpfSxpdC5vbnN1Y2Nlc3M9ZnVuY3Rpb24oKXt2YXIgaHI9aXQucmVzdWx0LnRyYW5zYWN0aW9uKFt2bi5EQl9TVE9SRV9OQU1FXSwicmVhZHdyaXRlIiksUGk9aHIub2JqZWN0U3RvcmUodm4uREJfU1RPUkVf''@;'; put 'put ''TkFNRSksam49MCxfPTAsQW89ZHQubGVuZ3RoO2Z1bmN0aW9uIFNpKCl7MD09Xz9JdCgpOlB0KCl9ZHQuZm9yRWFjaChmdW5jdGlvbigkbyl7dmFyIGxlPVBpLnB1dCh2bi5hbmFseXplUGF0aCgkbykub2JqZWN0LmNvbnRlbnRzLCRvKTtsZS5vbnN1Y2Nlc3M9ZnVuY3Rpb24oKXsrK2puK189''@;'; put 'put ''PUFvJiZTaSgpfSxsZS5vbmVycm9yPWZ1bmN0aW9uKCl7XysrLGpuK189PUFvJiZTaSgpfX0pLGhyLm9uZXJyb3I9UHR9LGl0Lm9uZXJyb3I9UHR9LGxvYWRGaWxlc0Zyb21EQjpmdW5jdGlvbihkdCxJdCxQdCl7SXQ9SXR8fGZ1bmN0aW9uKCl7fSxQdD1QdHx8ZnVuY3Rpb24oKXt9O3ZhciBm''@;'; put 'put ''ZT12bi5pbmRleGVkREIoKTt0cnl7dmFyIGl0PWZlLm9wZW4odm4uREJfTkFNRSgpLHZuLkRCX1ZFUlNJT04pfWNhdGNoKGEpe3JldHVybiBQdChhKX1pdC5vbnVwZ3JhZGVuZWVkZWQ9UHQsaXQub25zdWNjZXNzPWZ1bmN0aW9uKCl7dmFyIFh0PWl0LnJlc3VsdDt0cnl7dmFyIGhyPVh0LnRy''@;'; put 'put ''YW5zYWN0aW9uKFt2bi5EQl9TVE9SRV9OQU1FXSwicmVhZG9ubHkiKX1jYXRjaCgkbyl7cmV0dXJuIHZvaWQgUHQoJG8pfXZhciBQaT1oci5vYmplY3RTdG9yZSh2bi5EQl9TVE9SRV9OQU1FKSxqbj0wLF89MCxBbz1kdC5sZW5ndGg7ZnVuY3Rpb24gU2koKXswPT1fP0l0KCk6UHQoKX1kdC5m''@;'; put 'put ''b3JFYWNoKGZ1bmN0aW9uKCRvKXt2YXIgbGU9UGkuZ2V0KCRvKTtsZS5vbnN1Y2Nlc3M9ZnVuY3Rpb24oKXt2bi5hbmFseXplUGF0aCgkbykuZXhpc3RzJiZ2bi51bmxpbmsoJG8pLHZuLmNyZWF0ZURhdGFGaWxlKFUwLmRpcm5hbWUoJG8pLFUwLmJhc2VuYW1lKCRvKSxsZS5yZXN1bHQsITAs''@;'; put 'put ''ITAsITApLCsram4rXz09QW8mJlNpKCl9LGxlLm9uZXJyb3I9ZnVuY3Rpb24oKXtfKyssam4rXz09QW8mJlNpKCl9fSksaHIub25lcnJvcj1QdH0saXQub25lcnJvcj1QdH19LF8wPXtERUZBVUxUX1BPTExNQVNLOjUsbWFwcGluZ3M6e30sdW1hc2s6NTExLGNhbGN1bGF0ZUF0OmZ1bmN0aW9u''@;'; put 'put ''KGR0LEl0KXtpZigiLyIhPT1JdFswXSl7dmFyIFB0O2lmKC0xMDA9PT1kdClQdD12bi5jd2QoKTtlbHNle3ZhciBmZT12bi5nZXRTdHJlYW0oZHQpO2lmKCFmZSl0aHJvdyBuZXcgdm4uRXJybm9FcnJvcih2aS5FQkFERik7UHQ9ZmUucGF0aH1JdD1VMC5qb2luMihQdCxJdCl9cmV0dXJuIEl0''@;'; put 'put ''fSxkb1N0YXQ6ZnVuY3Rpb24oZHQsSXQsUHQpe3RyeXt2YXIgZmU9ZHQoSXQpfWNhdGNoKGl0KXtpZihpdCYmaXQubm9kZSYmVTAubm9ybWFsaXplKEl0KSE9PVUwLm5vcm1hbGl6ZSh2bi5nZXRQYXRoKGl0Lm5vZGUpKSlyZXR1cm4tdmkuRU5PVERJUjt0aHJvdyBpdH1yZXR1cm4gTHRbUHQ+''@;'; put 'put ''PjJdPWZlLmRldixMdFtQdCs0Pj4yXT0wLEx0W1B0Kzg+PjJdPWZlLmlubyxMdFtQdCsxMj4+Ml09ZmUubW9kZSxMdFtQdCsxNj4+Ml09ZmUubmxpbmssTHRbUHQrMjA+PjJdPWZlLnVpZCxMdFtQdCsyND4+Ml09ZmUuZ2lkLEx0W1B0KzI4Pj4yXT1mZS5yZGV2LEx0W1B0KzMyPj4yXT0wLEx0''@;'; put 'put ''W1B0KzM2Pj4yXT1mZS5zaXplLEx0W1B0KzQwPj4yXT00MDk2LEx0W1B0KzQ0Pj4yXT1mZS5ibG9ja3MsTHRbUHQrNDg+PjJdPWZlLmF0aW1lLmdldFRpbWUoKS8xZTN8MCxMdFtQdCs1Mj4+Ml09MCxMdFtQdCs1Nj4+Ml09ZmUubXRpbWUuZ2V0VGltZSgpLzFlM3wwLEx0W1B0KzYwPj4yXT0w''@;'; put 'put ''LEx0W1B0KzY0Pj4yXT1mZS5jdGltZS5nZXRUaW1lKCkvMWUzfDAsTHRbUHQrNjg+PjJdPTAsTHRbUHQrNzI+PjJdPWZlLmlubywwfSxkb01zeW5jOmZ1bmN0aW9uKGR0LEl0LFB0LGZlKXt2YXIgaXQ9bmV3IFVpbnQ4QXJyYXkodHQuc3ViYXJyYXkoZHQsZHQrUHQpKTt2bi5tc3luYyhJdCxp''@;'; put 'put ''dCwwLFB0LGZlKX0sZG9Na2RpcjpmdW5jdGlvbihkdCxJdCl7cmV0dXJuIi8iPT09KGR0PVUwLm5vcm1hbGl6ZShkdCkpW2R0Lmxlbmd0aC0xXSYmKGR0PWR0LnN1YnN0cigwLGR0Lmxlbmd0aC0xKSksdm4ubWtkaXIoZHQsSXQsMCksMH0sZG9Na25vZDpmdW5jdGlvbihkdCxJdCxQdCl7c3dp''@;'; put 'put ''dGNoKDYxNDQwJkl0KXtjYXNlIDMyNzY4OmNhc2UgODE5MjpjYXNlIDI0NTc2OmNhc2UgNDA5NjpjYXNlIDQ5MTUyOmJyZWFrO2RlZmF1bHQ6cmV0dXJuLXZpLkVJTlZBTH1yZXR1cm4gdm4ubWtub2QoZHQsSXQsUHQpLDB9LGRvUmVhZGxpbms6ZnVuY3Rpb24oZHQsSXQsUHQpe2lmKFB0PD0w''@;'; put 'put ''KXJldHVybi12aS5FSU5WQUw7dmFyIGZlPXZuLnJlYWRsaW5rKGR0KSxpdD1NYXRoLm1pbihQdCwkZShmZSkpLGE9X3RbSXQraXRdO3JldHVybiBRZShmZSxJdCxQdCsxKSxfdFtJdCtpdF09YSxpdH0sZG9BY2Nlc3M6ZnVuY3Rpb24oZHQsSXQpe2lmKC04Jkl0KXJldHVybi12aS5FSU5WQUw7''@;'; put 'put ''dmFyIGZlPXZuLmxvb2t1cFBhdGgoZHQse2ZvbGxvdzohMH0pLGl0PSIiO3JldHVybiA0Jkl0JiYoaXQrPSJyIiksMiZJdCYmKGl0Kz0idyIpLDEmSXQmJihpdCs9IngiKSxpdCYmdm4ubm9kZVBlcm1pc3Npb25zKGZlLm5vZGUsaXQpPy12aS5FQUNDRVM6MH0sZG9EdXA6ZnVuY3Rpb24oZHQs''@;'; put 'put ''SXQsUHQpe3ZhciBmZT12bi5nZXRTdHJlYW0oUHQpO3JldHVybiBmZSYmdm4uY2xvc2UoZmUpLHZuLm9wZW4oZHQsSXQsMCxQdCxQdCkuZmR9LGRvUmVhZHY6ZnVuY3Rpb24oZHQsSXQsUHQsZmUpe2Zvcih2YXIgaXQ9MCxhPTA7YTxQdDthKyspe3ZhciBocj1MdFtJdCsoOCphKzQpPj4yXSxQ''@;'; put 'put ''aT12bi5yZWFkKGR0LF90LEx0W0l0KzgqYT4+Ml0saHIsZmUpO2lmKFBpPDApcmV0dXJuLTE7aWYoaXQrPVBpLFBpPGhyKWJyZWFrfXJldHVybiBpdH0sZG9Xcml0ZXY6ZnVuY3Rpb24oZHQsSXQsUHQsZmUpe2Zvcih2YXIgaXQ9MCxhPTA7YTxQdDthKyspe3ZhciBQaT12bi53cml0ZShkdCxf''@;'; put 'put ''dCxMdFtJdCs4KmE+PjJdLEx0W0l0Kyg4KmErNCk+PjJdLGZlKTtpZihQaTwwKXJldHVybi0xO2l0Kz1QaX1yZXR1cm4gaXR9LHZhcmFyZ3M6MCxnZXQ6ZnVuY3Rpb24oZHQpe3JldHVybiBfMC52YXJhcmdzKz00LEx0W18wLnZhcmFyZ3MtND4+Ml19LGdldFN0cjpmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBGKF8wLmdldCgpKX0sZ2V0U3RyZWFtRnJvbUZEOmZ1bmN0aW9uKCl7dmFyIGR0PXZuLmdldFN0cmVhbShfMC5nZXQoKSk7aWYoIWR0KXRocm93IG5ldyB2bi5FcnJub0Vycm9yKHZpLkVCQURGKTtyZXR1cm4gZHR9LGdldFNvY2tldEZyb21GRDpmdW5jdGlvbigpe3ZhciBkdD1TT0NLRlMu''@;'; put 'put ''Z2V0U29ja2V0KF8wLmdldCgpKTtpZighZHQpdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IodmkuRUJBREYpO3JldHVybiBkdH0sZ2V0U29ja2V0QWRkcmVzczpmdW5jdGlvbihkdCl7dmFyIEl0PV8wLmdldCgpLFB0PV8wLmdldCgpO2lmKGR0JiYwPT09SXQpcmV0dXJuIG51bGw7dmFyIGZlPV9f''@;'; put 'put ''cmVhZF9zb2NrYWRkcihJdCxQdCk7aWYoZmUuZXJybm8pdGhyb3cgbmV3IHZuLkVycm5vRXJyb3IoZmUuZXJybm8pO3JldHVybiBmZS5hZGRyPUROUy5sb29rdXBfYWRkcihmZS5hZGRyKXx8ZmUuYWRkcixmZX0sZ2V0NjQ6ZnVuY3Rpb24oKXt2YXIgZHQ9XzAuZ2V0KCksSXQ9XzAuZ2V0KCk7''@;'; put 'put ''cmV0dXJuIE8oZHQ+PTA/MD09PUl0Oi0xPT09SXQpLGR0fSxnZXRaZXJvOmZ1bmN0aW9uKCl7TygwPT09XzAuZ2V0KCkpfX07ZnVuY3Rpb24gZ2MoZHQsSXQpe18wLnZhcmFyZ3M9SXQ7dHJ5e3ZhciBQdD1fMC5nZXRTdHIoKTtyZXR1cm4gdm4udW5saW5rKFB0KSwwfWNhdGNoKGZlKXtyZXR1''@;'; put 'put ''cm4odm9pZCAwPT09dm58fCEoZmUgaW5zdGFuY2VvZiB2bi5FcnJub0Vycm9yKSkmJmYyKGZlKSwtZmUuZXJybm99fWZ1bmN0aW9uIHBkKGR0LEl0KXtfMC52YXJhcmdzPUl0O3RyeXt2YXIgUHQ9XzAuZ2V0U3RyZWFtRnJvbUZEKCksaXQ9KF8wLmdldCgpLF8wLmdldCgpKSxhPV8wLmdldCgp''@;'; put 'put ''LFh0PV8wLmdldCgpLGhyPWl0O3JldHVybiB2bi5sbHNlZWsoUHQsaHIsWHQpLEx0W2E+PjJdPVB0LnBvc2l0aW9uLFB0LmdldGRlbnRzJiYwPT09aHImJjA9PT1YdCYmKFB0LmdldGRlbnRzPW51bGwpLDB9Y2F0Y2goUGkpe3JldHVybih2b2lkIDA9PT12bnx8IShQaSBpbnN0YW5jZW9mIHZu''@;'; put 'put ''LkVycm5vRXJyb3IpKSYmZjIoUGkpLC1QaS5lcnJub319ZnVuY3Rpb24gQjEoZHQsSXQpe18wLnZhcmFyZ3M9SXQ7dHJ5e3ZhciBQdD1fMC5nZXRTdHJlYW1Gcm9tRkQoKSxmZT1fMC5nZXQoKSxpdD1fMC5nZXQoKTtyZXR1cm4gXzAuZG9SZWFkdihQdCxmZSxpdCl9Y2F0Y2goYSl7cmV0dXJu''@;'; put 'put ''KHZvaWQgMD09PXZufHwhKGEgaW5zdGFuY2VvZiB2bi5FcnJub0Vycm9yKSkmJmYyKGEpLC1hLmVycm5vfX1mdW5jdGlvbiBhdShkdCxJdCl7XzAudmFyYXJncz1JdDt0cnl7dmFyIFB0PV8wLmdldFN0cmVhbUZyb21GRCgpLGZlPV8wLmdldCgpLGl0PV8wLmdldCgpO3JldHVybiBfMC5kb1dy''@;'; put 'put ''aXRldihQdCxmZSxpdCl9Y2F0Y2goYSl7cmV0dXJuKHZvaWQgMD09PXZufHwhKGEgaW5zdGFuY2VvZiB2bi5FcnJub0Vycm9yKSkmJmYyKGEpLC1hLmVycm5vfX1mdW5jdGlvbiBQMShkdCxJdCl7XzAudmFyYXJncz1JdDt0cnl7dmFyIFB0PV8wLmdldCgpLGZlPV8wLmdldCgpLGl0PV8wLmdl''@;'; put 'put ''dCgpLGE9XzAuZ2V0KCksWHQ9XzAuZ2V0KCksaHI9XzAuZ2V0KCk7aHI8PD0xMjt2YXIgUGksam49ITE7aWYoLTE9PT1YdCl7aWYoIShQaT1XZyhCdCxmZSkpKXJldHVybi12aS5FTk9NRU07WWcoUGksMCxmZSksam49ITB9ZWxzZXt2YXIgXz12bi5nZXRTdHJlYW0oWHQpO2lmKCFfKXJldHVy''@;'; put 'put ''bi12aS5FQkFERjt2YXIgQW89dm4ubW1hcChfLHR0LFB0LGZlLGhyLGl0LGEpO1BpPUFvLnB0cixqbj1Bby5hbGxvY2F0ZWR9cmV0dXJuIF8wLm1hcHBpbmdzW1BpXT17bWFsbG9jOlBpLGxlbjpmZSxhbGxvY2F0ZWQ6am4sZmQ6WHQsZmxhZ3M6YX0sUGl9Y2F0Y2goU2kpe3JldHVybih2b2lk''@;'; put 'put ''IDA9PT12bnx8IShTaSBpbnN0YW5jZW9mIHZuLkVycm5vRXJyb3IpKSYmZjIoU2kpLC1TaS5lcnJub319ZnVuY3Rpb24gbWMoZHQsSXQpe18wLnZhcmFyZ3M9SXQ7dHJ5e3ZhciBQdD1fMC5nZXRTdHIoKSxmZT1fMC5nZXQoKTtyZXR1cm4gXzAuZG9TdGF0KHZuLnN0YXQsUHQsZmUpfWNhdGNo''@;'; put 'put ''KGl0KXtyZXR1cm4odm9pZCAwPT09dm58fCEoaXQgaW5zdGFuY2VvZiB2bi5FcnJub0Vycm9yKSkmJmYyKGl0KSwtaXQuZXJybm99fWZ1bmN0aW9uIHgyKGR0LEl0KXtfMC52YXJhcmdzPUl0O3RyeXt2YXIgUHQ9XzAuZ2V0U3RyZWFtRnJvbUZEKCksZmU9XzAuZ2V0KCk7cmV0dXJuIF8wLmRv''@;'; put 'put ''U3RhdCh2bi5zdGF0LFB0LnBhdGgsZmUpfWNhdGNoKGl0KXtyZXR1cm4odm9pZCAwPT09dm58fCEoaXQgaW5zdGFuY2VvZiB2bi5FcnJub0Vycm9yKSkmJmYyKGl0KSwtaXQuZXJybm99fXZhciBQbD17cHBpZDoxLHBpZDo0MixzaWQ6NDIscGdpZDo0Mn07ZnVuY3Rpb24gZDMoZHQsSXQpe18w''@;'; put 'put ''LnZhcmFyZ3M9SXQ7dHJ5e3JldHVybiBQbC5waWR9Y2F0Y2goUHQpe3JldHVybih2b2lkIDA9PT12bnx8IShQdCBpbnN0YW5jZW9mIHZuLkVycm5vRXJyb3IpKSYmZjIoUHQpLC1QdC5lcnJub319ZnVuY3Rpb24gUTIoZHQsSXQpe18wLnZhcmFyZ3M9SXQ7dHJ5e3ZhciBQdD1fMC5nZXRTdHJl''@;'; put 'put ''YW1Gcm9tRkQoKTtzd2l0Y2goXzAuZ2V0KCkpe2Nhc2UgMDpyZXR1cm4oaXQ9XzAuZ2V0KCkpPDA/LXZpLkVJTlZBTDp2bi5vcGVuKFB0LnBhdGgsUHQuZmxhZ3MsMCxpdCkuZmQ7Y2FzZSAxOmNhc2UgMjpjYXNlIDEzOmNhc2UgMTQ6Y2FzZSAxMzpjYXNlIDE0OnJldHVybiAwO2Nhc2UgMzpy''@;'; put 'put ''ZXR1cm4gUHQuZmxhZ3M7Y2FzZSA0OnZhciBpdD1fMC5nZXQoKTtyZXR1cm4gUHQuZmxhZ3N8PWl0LDA7Y2FzZSAxMjpjYXNlIDEyOnJldHVybiBpdD1fMC5nZXQoKSxldFtpdCswPj4xXT0yLDA7Y2FzZSAxNjpjYXNlIDg6ZGVmYXVsdDpyZXR1cm4tdmkuRUlOVkFMO2Nhc2UgOTpyZXR1cm4g''@;'; put 'put ''YjAodmkuRUlOVkFMKSwtMX19Y2F0Y2goaHIpe3JldHVybih2b2lkIDA9PT12bnx8IShociBpbnN0YW5jZW9mIHZuLkVycm5vRXJyb3IpKSYmZjIoaHIpLC1oci5lcnJub319ZnVuY3Rpb24gczEoZHQsSXQpe18wLnZhcmFyZ3M9SXQ7dHJ5e3ZhciBQdD1fMC5nZXRTdHJlYW1Gcm9tRkQoKSxm''@;'; put 'put ''ZT1fMC5nZXQoKSxpdD1fMC5nZXQoKTtyZXR1cm4gdm4ucmVhZChQdCxfdCxmZSxpdCl9Y2F0Y2goYSl7cmV0dXJuKHZvaWQgMD09PXZufHwhKGEgaW5zdGFuY2VvZiB2bi5FcnJub0Vycm9yKSkmJmYyKGEpLC1hLmVycm5vfX1mdW5jdGlvbiBaMChkdCxJdCl7XzAudmFyYXJncz1JdDt0cnl7''@;'; put 'put ''dmFyIFB0PV8wLmdldFN0cigpLGZlPV8wLmdldCgpO3JldHVybiBfMC5kb0FjY2VzcyhQdCxmZSl9Y2F0Y2goaXQpe3JldHVybih2b2lkIDA9PT12bnx8IShpdCBpbnN0YW5jZW9mIHZuLkVycm5vRXJyb3IpKSYmZjIoaXQpLC1pdC5lcnJub319ZnVuY3Rpb24gZmkoZHQsSXQpe18wLnZhcmFy''@;'; put 'put ''Z3M9SXQ7dHJ5e3ZhciBQdD1fMC5nZXRTdHIoKSxmZT1fMC5nZXQoKSxpdD1fMC5nZXQoKTtyZXR1cm4gdm4ub3BlbihQdCxmZSxpdCkuZmR9Y2F0Y2goWHQpe3JldHVybih2b2lkIDA9PT12bnx8IShYdCBpbnN0YW5jZW9mIHZuLkVycm5vRXJyb3IpKSYmZjIoWHQpLC1YdC5lcnJub319ZnVu''@;'; put 'put ''Y3Rpb24gUjAoZHQsSXQpe18wLnZhcmFyZ3M9SXQ7dHJ5e3ZhciBQdD1fMC5nZXRTdHJlYW1Gcm9tRkQoKSxmZT1fMC5nZXQoKTtzd2l0Y2goZmUpe2Nhc2UgMjE1MDk6Y2FzZSAyMTUwNTpjYXNlIDIxNTEwOmNhc2UgMjE1MTE6Y2FzZSAyMTUxMjpjYXNlIDIxNTA2OmNhc2UgMjE1MDc6Y2Fz''@;'; put 'put ''ZSAyMTUwODpjYXNlIDIxNTIzOnJldHVybiBQdC50dHk/MDotdmkuRU5PVFRZO2Nhc2UgMjE1MTk6aWYoIVB0LnR0eSlyZXR1cm4tdmkuRU5PVFRZO3ZhciBpdD1fMC5nZXQoKTtyZXR1cm4gTHRbaXQ+PjJdPTAsMDtjYXNlIDIxNTIwOnJldHVybiBQdC50dHk/LXZpLkVJTlZBTDotdmkuRU5P''@;'; put 'put ''VFRZO2Nhc2UgMjE1MzE6cmV0dXJuIGl0PV8wLmdldCgpLHZuLmlvY3RsKFB0LGZlLGl0KTtkZWZhdWx0OmYyKCJiYWQgaW9jdGwgc3lzY2FsbCAiK2ZlKX19Y2F0Y2goYSl7cmV0dXJuKHZvaWQgMD09PXZufHwhKGEgaW5zdGFuY2VvZiB2bi5FcnJub0Vycm9yKSkmJmYyKGEpLC1hLmVycm5v''@;'; put 'put ''fX1mdW5jdGlvbiBtbyhkdCxJdCl7XzAudmFyYXJncz1JdDt0cnl7dmFyIFB0PV8wLmdldFN0cmVhbUZyb21GRCgpO3JldHVybiB2bi5jbG9zZShQdCksMH1jYXRjaChmZSl7cmV0dXJuKHZvaWQgMD09PXZufHwhKGZlIGluc3RhbmNlb2Ygdm4uRXJybm9FcnJvcikpJiZmMihmZSksLWZlLmVy''@;'; put 'put ''cm5vfX1mdW5jdGlvbiBycyhkdCxJdCl7XzAudmFyYXJncz1JdDt0cnl7dmFyIFB0PV8wLmdldCgpLGZlPV8wLmdldCgpLGl0PV8wLm1hcHBpbmdzW1B0XTtpZighaXQpcmV0dXJuIDA7aWYoZmU9PT1pdC5sZW4pe3ZhciBhPXZuLmdldFN0cmVhbShpdC5mZCk7XzAuZG9Nc3luYyhQdCxhLGZl''@;'; put 'put ''LGl0LmZsYWdzKSx2bi5tdW5tYXAoYSksXzAubWFwcGluZ3NbUHRdPW51bGwsaXQuYWxsb2NhdGVkJiZlYihpdC5tYWxsb2MpfXJldHVybiAwfWNhdGNoKFh0KXtyZXR1cm4odm9pZCAwPT09dm58fCEoWHQgaW5zdGFuY2VvZiB2bi5FcnJub0Vycm9yKSkmJmYyKFh0KSwtWHQuZXJybm99fXZh''@;'; put 'put ''ciBkcz1TKFs4LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNSwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDYsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwx''@;'; put 'put ''LDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw1LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNywwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDUs''@;'; put 'put ''MCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw2LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNSwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSww''@;'; put 'put ''LDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwXSwiaTgiLFYpO2Z1bmN0aW9uIG4yKCl7fWZ1bmN0aW9uIFQyKGR0KXtqLmV4aXQoZHQpfWZ1bmN0aW9uIFRpKGR0KXtUMihkdCl9dmFyIFBzPXl0O2Z1bmN0aW9uIE5mKGR0KXt2YXIgZmUsaXQ7TmYuY2FsbGVkP2ZlPUx0WyhpdD1MdFtQcz4+Ml0p''@;'; put 'put ''Pj4yXTooTmYuY2FsbGVkPSEwLFlsLlVTRVI9WWwuTE9HTkFNRT0id2ViX3VzZXIiLFlsLlBBVEg9Ii8iLFlsLlBXRD0iLyIsWWwuSE9NRT0iL2hvbWUvd2ViX3VzZXIiLFlsLkxBTkc9IkMuVVRGLTgiLFlsLl89ai50aGlzUHJvZ3JhbSxmZT1vZSgxMDI0KSxpdD1vZSgyNTYpLEx0W2l0Pj4y''@;'; put 'put ''XT1mZSxMdFtQcz4+Ml09aXQpO3ZhciBhPVtdLFh0PTA7Zm9yKHZhciBociBpbiBkdCkic3RyaW5nIj09dHlwZW9mIGR0W2hyXSYmKGEucHVzaChQaT1ocisiPSIrZHRbaHJdKSxYdCs9UGkubGVuZ3RoKTtpZihYdD4xMDI0KXRocm93IG5ldyBFcnJvcigiRW52aXJvbm1lbnQgc2l6ZSBleGNl''@;'; put 'put ''ZWRlZCBUT1RBTF9FTlZfU0laRSEiKTtmb3IodmFyIF89MDtfPGEubGVuZ3RoO18rKyl7dmFyIFBpO1RyKFBpPWFbX10sZmUpLEx0W2l0KzQqXz4+Ml09ZmUsZmUrPVBpLmxlbmd0aCsxfUx0W2l0KzQqYS5sZW5ndGg+PjJdPTB9eXQrPTE2O3ZhciBZbD17fTtmdW5jdGlvbiBOYyhkdCl7cmV0''@;'; put 'put ''dXJuIDAhPT1kdCYmKGR0PUYoZHQpLFlsLmhhc093blByb3BlcnR5KGR0KSk/KE5jLnJldCYmZWIoTmMucmV0KSxOYy5yZXQ9d3QoWWxbZHRdKSk6MH1mdW5jdGlvbiBjbyhkdCl7dmFyIEl0PURhdGUubm93KCk7cmV0dXJuIEx0W2R0Pj4yXT1JdC8xZTN8MCxMdFtkdCs0Pj4yXT1JdCUxZTMq''@;'; put 'put ''MWUzfDAsMH12YXIgQzQ9Sm4scjI9Qm4sV2k9Qm4sVXM9b3IsdnM9Z3IsRjE9SW4sS2w9SW47ZnVuY3Rpb24gQ3MoKXtmMigidHJhcCEiKX1mdW5jdGlvbiBSaShkdCxJdCl7dGhyb3cgai5zZXRUaHJldyhkdCxJdHx8MSksImxvbmdqbXAifWZ1bmN0aW9uIEgxKGR0LEl0LFB0KXtyZXR1cm4g''@;'; put 'put ''dHQuc2V0KHR0LnN1YmFycmF5KEl0LEl0K1B0KSxkdCksZHR9ZnVuY3Rpb24gSjIoZHQsSXQsUHQpe2lmKDA9PT1kdClyZXR1cm4gYjAodmkuRUlOVkFMKSwtMTt2YXIgZmU9RihkdCksaXQ9RihJdCk7cmV0dXJuIiI9PT1mZXx8LTEhPT1mZS5pbmRleE9mKCI9Iik/KGIwKHZpLkVJTlZBTCks''@;'; put 'put ''LTEpOihZbC5oYXNPd25Qcm9wZXJ0eShmZSkmJiFQdHx8KFlsW2ZlXT1pdCxOZihZbCkpLDApfWZ1bmN0aW9uIEMwKGR0KXt2YXIgSXQ9RGF0ZS5ub3coKS8xZTN8MDtyZXR1cm4gZHQmJihMdFtkdD4+Ml09SXQpLEl0fWZ1bmN0aW9uIHUxKGR0KXtyZXR1cm4gMCE9PWR0JiZZZyhkdCwwLDE2''@;'; put 'put ''KSwwfWlmKGdsPU4/ZnVuY3Rpb24oKXt2YXIgSXQ9cHJvY2Vzcy5ocnRpbWUoKTtyZXR1cm4gMWUzKkl0WzBdK0l0WzFdLzFlNn06InVuZGVmaW5lZCIhPXR5cGVvZiBkYXRlTm93P2RhdGVOb3c6Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmLnBlcmZvcm1hbmNlJiYiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2Ygc2VsZi5wZXJmb3JtYW5jZS5ub3c/ZnVuY3Rpb24oKXtyZXR1cm4gc2VsZi5wZXJmb3JtYW5jZS5ub3coKX06Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmImZ1bmN0aW9uIj09dHlwZW9mIHBlcmZvcm1hbmNlLm5vdz9mdW5jdGlvbigpe3JldHVybiBwZXJmb3JtYW5jZS5u''@;'; put 'put ''b3coKX06RGF0ZS5ub3csdm4uc3RhdGljSW5pdCgpLHF0LnVuc2hpZnQoZnVuY3Rpb24oKXshai5ub0ZTSW5pdCYmIXZuLmluaXQuaW5pdGlhbGl6ZWQmJnZuLmluaXQoKX0pLHByLnB1c2goZnVuY3Rpb24oKXt2bi5pZ25vcmVQZXJtaXNzaW9ucz0hMX0pLG5yLnB1c2goZnVuY3Rpb24oKXt2''@;'; put 'put ''bi5xdWl0KCl9KSxxdC51bnNoaWZ0KGZ1bmN0aW9uKCl7QnMuaW5pdCgpfSksbnIucHVzaChmdW5jdGlvbigpe0JzLnNodXRkb3duKCl9KSxOKXt2YXIgbWw9TCgzNTE1OSkscDM9TCg3NTcwMSk7ajAuc3RhdGljSW5pdCgpfU5mKFlsKSxsbj1vZSg0KSxKdD1nbj1kZSh5dCkseW49ZGUoZG49''@;'; put 'put ''SnQrZXIpLEx0W2xuPj4yXT15bixqdD0hMDt2YXIgWXU9ITE7ZnVuY3Rpb24gc28oZHQsSXQsUHQpe3ZhciBmZT1QdD4wP1B0OiRlKGR0KSsxLGl0PW5ldyBBcnJheShmZSksYT1QZShkdCxpdCwwLGl0Lmxlbmd0aCk7cmV0dXJuIEl0JiYoaXQubGVuZ3RoPWEpLGl0fWZ1bmN0aW9uIFlhKGR0''@;'; put 'put ''KXtmb3IodmFyIEl0PVtdLFB0PTA7UHQ8ZHQubGVuZ3RoO1B0Kyspe3ZhciBmZT1kdFtQdF07ZmU+MjU1JiYoWXUmJk8oITEsIkNoYXJhY3RlciBjb2RlICIrZmUrIiAoIitTdHJpbmcuZnJvbUNoYXJDb2RlKGZlKSsiKSAgYXQgb2Zmc2V0ICIrUHQrIiBub3QgaW4gMHgwMC0weEZGLiIpLGZl''@;'; put 'put ''Jj0yNTUpLEl0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShmZSkpfXJldHVybiBJdC5qb2luKCIiKX12YXIgYXM9ImZ1bmN0aW9uIj09dHlwZW9mIGF0b2I/YXRvYjpmdW5jdGlvbihkdCl7dmFyIGl0LGEsWHQsaHIsUGksam4sSXQ9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVm''@;'; put 'put ''Z2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89IixQdD0iIixfPTA7ZHQ9ZHQucmVwbGFjZSgvW15BLVphLXowLTlcK1wvXD1dL2csIiIpO2Rve1h0PUl0LmluZGV4T2YoZHQuY2hhckF0KF8rKykpLGl0PSgxNSYoaHI9SXQuaW5kZXhPZihkdC5jaGFyQXQoXysrKSkpKTw8NHwoUGk9''@;'; put 'put ''SXQuaW5kZXhPZihkdC5jaGFyQXQoXysrKSkpPj4yLGE9KDMmUGkpPDw2fChqbj1JdC5pbmRleE9mKGR0LmNoYXJBdChfKyspKSksUHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoWHQ8PDJ8aHI+PjQpLDY0IT09UGkmJihQdCs9U3RyaW5nLmZyb21DaGFyQ29kZShpdCkpLDY0IT09am4mJihQdCs9''@;'; put 'put ''U3RyaW5nLmZyb21DaGFyQ29kZShhKSl9d2hpbGUoXzxkdC5sZW5ndGgpO3JldHVybiBQdH07ZnVuY3Rpb24gWGEoZHQpe2lmKCJib29sZWFuIj09dHlwZW9mIE4mJk4pe3ZhciBJdDt0cnl7SXQ9QnVmZmVyLmZyb20oZHQsImJhc2U2NCIpfWNhdGNoKGEpe0l0PW5ldyBCdWZmZXIoZHQsImJh''@;'; put 'put ''c2U2NCIpfXJldHVybiBuZXcgVWludDhBcnJheShJdC5idWZmZXIsSXQuYnl0ZU9mZnNldCxJdC5ieXRlTGVuZ3RoKX10cnl7Zm9yKHZhciBQdD1hcyhkdCksZmU9bmV3IFVpbnQ4QXJyYXkoUHQubGVuZ3RoKSxpdD0wO2l0PFB0Lmxlbmd0aDsrK2l0KWZlW2l0XT1QdC5jaGFyQ29kZUF0KGl0''@;'; put 'put ''KTtyZXR1cm4gZmV9Y2F0Y2goYSl7dGhyb3cgbmV3IEVycm9yKCJDb252ZXJ0aW5nIGJhc2U2NCBzdHJpbmcgdG8gYnl0ZXMgZmFpbGVkLiIpfX1mdW5jdGlvbiBVdShkdCl7aWYoY2EoZHQpKXJldHVybiBYYShkdC5zbGljZShxby5sZW5ndGgpKX1mdW5jdGlvbiBBMShkdCl7dHJ5e3JldHVy''@;'; put 'put ''biBqLmR5bkNhbGxfZChkdCl9Y2F0Y2goSXQpe2lmKCJudW1iZXIiIT10eXBlb2YgSXQmJiJsb25nam1wIiE9PUl0KXRocm93IEl0O2ouc2V0VGhyZXcoMSwwKX19ZnVuY3Rpb24gbWgoZHQsSXQsUHQsZmUpe3RyeXtyZXR1cm4gai5keW5DYWxsX2RkZGQoZHQsSXQsUHQsZmUpfWNhdGNoKGl0''@;'; put 'put ''KXtpZigibnVtYmVyIiE9dHlwZW9mIGl0JiYibG9uZ2ptcCIhPT1pdCl0aHJvdyBpdDtqLnNldFRocmV3KDEsMCl9fWZ1bmN0aW9uIF9hKGR0LEl0KXt0cnl7cmV0dXJuIGouZHluQ2FsbF9kaShkdCxJdCl9Y2F0Y2goUHQpe2lmKCJudW1iZXIiIT10eXBlb2YgUHQmJiJsb25nam1wIiE9PVB0''@;'; put 'put ''KXRocm93IFB0O2ouc2V0VGhyZXcoMSwwKX19ZnVuY3Rpb24ganAoZHQpe3RyeXtyZXR1cm4gai5keW5DYWxsX2koZHQpfWNhdGNoKEl0KXtpZigibnVtYmVyIiE9dHlwZW9mIEl0JiYibG9uZ2ptcCIhPT1JdCl0aHJvdyBJdDtqLnNldFRocmV3KDEsMCl9fWZ1bmN0aW9uIGs0KGR0LEl0KXt0''@;'; put 'put ''cnl7cmV0dXJuIGouZHluQ2FsbF9paShkdCxJdCl9Y2F0Y2goUHQpe2lmKCJudW1iZXIiIT10eXBlb2YgUHQmJiJsb25nam1wIiE9PVB0KXRocm93IFB0O2ouc2V0VGhyZXcoMSwwKX19ZnVuY3Rpb24gc2woZHQsSXQsUHQpe3RyeXtyZXR1cm4gai5keW5DYWxsX2lpaShkdCxJdCxQdCl9Y2F0''@;'; put 'put ''Y2goZmUpe2lmKCJudW1iZXIiIT10eXBlb2YgZmUmJiJsb25nam1wIiE9PWZlKXRocm93IGZlO2ouc2V0VGhyZXcoMSwwKX19ZnVuY3Rpb24gdWwoZHQsSXQsUHQsZmUsaXQpe3RyeXtyZXR1cm4gai5keW5DYWxsX2lpaWRkKGR0LEl0LFB0LGZlLGl0KX1jYXRjaChhKXtpZigibnVtYmVyIiE9''@;'; put 'put ''dHlwZW9mIGEmJiJsb25nam1wIiE9PWEpdGhyb3cgYTtqLnNldFRocmV3KDEsMCl9fWZ1bmN0aW9uIFkwKGR0LEl0LFB0LGZlKXt0cnl7cmV0dXJuIGouZHluQ2FsbF9paWlpKGR0LEl0LFB0LGZlKX1jYXRjaChpdCl7aWYoIm51bWJlciIhPXR5cGVvZiBpdCYmImxvbmdqbXAiIT09aXQpdGhy''@;'; put 'put ''b3cgaXQ7ai5zZXRUaHJldygxLDApfX1mdW5jdGlvbiBBcyhkdCxJdCxQdCxmZSxpdCl7dHJ5e3JldHVybiBqLmR5bkNhbGxfaWlpaWkoZHQsSXQsUHQsZmUsaXQpfWNhdGNoKGEpe2lmKCJudW1iZXIiIT10eXBlb2YgYSYmImxvbmdqbXAiIT09YSl0aHJvdyBhO2ouc2V0VGhyZXcoMSwwKX19''@;'; put 'put ''ZnVuY3Rpb24gZmEoZHQsSXQsUHQsZmUsaXQsYSl7dHJ5e3JldHVybiBqLmR5bkNhbGxfaWlpaWlpKGR0LEl0LFB0LGZlLGl0LGEpfWNhdGNoKFh0KXtpZigibnVtYmVyIiE9dHlwZW9mIFh0JiYibG9uZ2ptcCIhPT1YdCl0aHJvdyBYdDtqLnNldFRocmV3KDEsMCl9fWZ1bmN0aW9uIEZvKGR0''@;'; put 'put ''LEl0LFB0LGZlLGl0LGEsWHQpe3RyeXtyZXR1cm4gai5keW5DYWxsX2lpaWlpaWkoZHQsSXQsUHQsZmUsaXQsYSxYdCl9Y2F0Y2goaHIpe2lmKCJudW1iZXIiIT10eXBlb2YgaHImJiJsb25nam1wIiE9PWhyKXRocm93IGhyO2ouc2V0VGhyZXcoMSwwKX19ZnVuY3Rpb24gZ2QoZHQsSXQsUHQs''@;'; put 'put ''ZmUsaXQsYSxYdCxocixQaSxqbixfKXt0cnl7cmV0dXJuIGouZHluQ2FsbF9paWlpaWlpaWlpaShkdCxJdCxQdCxmZSxpdCxhLFh0LGhyLFBpLGpuLF8pfWNhdGNoKEFvKXtpZigibnVtYmVyIiE9dHlwZW9mIEFvJiYibG9uZ2ptcCIhPT1Bbyl0aHJvdyBBbztqLnNldFRocmV3KDEsMCl9fWZ1''@;'; put 'put ''bmN0aW9uIHkxKGR0KXt0cnl7ai5keW5DYWxsX3YoZHQpfWNhdGNoKEl0KXtpZigibnVtYmVyIiE9dHlwZW9mIEl0JiYibG9uZ2ptcCIhPT1JdCl0aHJvdyBJdDtqLnNldFRocmV3KDEsMCl9fWZ1bmN0aW9uIHcxKGR0LEl0KXt0cnl7ai5keW5DYWxsX3ZpKGR0LEl0KX1jYXRjaChQdCl7aWYo''@;'; put 'put ''Im51bWJlciIhPXR5cGVvZiBQdCYmImxvbmdqbXAiIT09UHQpdGhyb3cgUHQ7ai5zZXRUaHJldygxLDApfX1mdW5jdGlvbiBsZihkdCxJdCxQdCl7dHJ5e2ouZHluQ2FsbF92aWkoZHQsSXQsUHQpfWNhdGNoKGZlKXtpZigibnVtYmVyIiE9dHlwZW9mIGZlJiYibG9uZ2ptcCIhPT1mZSl0aHJv''@;'; put 'put ''dyBmZTtqLnNldFRocmV3KDEsMCl9fWZ1bmN0aW9uIG1kKGR0LEl0LFB0LGZlKXt0cnl7ai5keW5DYWxsX3ZpaWkoZHQsSXQsUHQsZmUpfWNhdGNoKGl0KXtpZigibnVtYmVyIiE9dHlwZW9mIGl0JiYibG9uZ2ptcCIhPT1pdCl0aHJvdyBpdDtqLnNldFRocmV3KDEsMCl9fWZ1bmN0aW9uICRs''@;'; put 'put ''KGR0LEl0LFB0LGZlLGl0LGEsWHQpe3RyeXtqLmR5bkNhbGxfdmlpaWRkaShkdCxJdCxQdCxmZSxpdCxhLFh0KX1jYXRjaChocil7aWYoIm51bWJlciIhPXR5cGVvZiBociYmImxvbmdqbXAiIT09aHIpdGhyb3cgaHI7ai5zZXRUaHJldygxLDApfX1mdW5jdGlvbiB4dShkdCxJdCxQdCxmZSxp''@;'; put 'put ''dCl7dHJ5e2ouZHluQ2FsbF92aWlpaShkdCxJdCxQdCxmZSxpdCl9Y2F0Y2goYSl7aWYoIm51bWJlciIhPXR5cGVvZiBhJiYibG9uZ2ptcCIhPT1hKXRocm93IGE7ai5zZXRUaHJldygxLDApfX1mdW5jdGlvbiBsdShkdCxJdCxQdCxmZSxpdCxhKXt0cnl7ai5keW5DYWxsX3ZpaWlpaShkdCxJ''@;'; put 'put ''dCxQdCxmZSxpdCxhKX1jYXRjaChYdCl7aWYoIm51bWJlciIhPXR5cGVvZiBYdCYmImxvbmdqbXAiIT09WHQpdGhyb3cgWHQ7ai5zZXRUaHJldygxLDApfX1mdW5jdGlvbiBUdShkdCxJdCxQdCxmZSxpdCxhLFh0KXt0cnl7ai5keW5DYWxsX3ZpaWlpaWkoZHQsSXQsUHQsZmUsaXQsYSxYdCl9''@;'; put 'put ''Y2F0Y2goaHIpe2lmKCJudW1iZXIiIT10eXBlb2YgaHImJiJsb25nam1wIiE9PWhyKXRocm93IGhyO2ouc2V0VGhyZXcoMSwwKX19ZnVuY3Rpb24gc2YoZHQsSXQsUHQsZmUsaXQsYSxYdCxocixQaSxqbil7dHJ5e2ouZHluQ2FsbF92aWlpaWlpaWlpKGR0LEl0LFB0LGZlLGl0LGEsWHQsaHIs''@;'; put 'put ''UGksam4pfWNhdGNoKF8pe2lmKCJudW1iZXIiIT10eXBlb2YgXyYmImxvbmdqbXAiIT09Xyl0aHJvdyBfO2ouc2V0VGhyZXcoMSwwKX19ai5hc21HbG9iYWxBcmc9e01hdGgsSW50OEFycmF5LEludDE2QXJyYXksSW50MzJBcnJheSxVaW50OEFycmF5LFVpbnQxNkFycmF5LFVpbnQzMkFycmF5''@;'; put 'put ''LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXksTmFOOk5hTixJbmZpbml0eToxLzB9LGouYXNtTGlicmFyeUFyZz17YWJvcnQ6ZjIsYXNzZXJ0Ok8sZW5sYXJnZU1lbW9yeTpibixnZXRUb3RhbE1lbW9yeTpYbixhYm9ydE9uQ2Fubm90R3Jvd01lbW9yeTpObixpbnZva2VfZDpBMSxpbnZva2Vf''@;'; put 'put ''ZGRkZDptaCxpbnZva2VfZGk6X2EsaW52b2tlX2k6anAsaW52b2tlX2lpOms0LGludm9rZV9paWk6c2wsaW52b2tlX2lpaWRkOnVsLGludm9rZV9paWlpOlkwLGludm9rZV9paWlpaTpBcyxpbnZva2VfaWlpaWlpOmZhLGludm9rZV9paWlpaWlpOkZvLGludm9rZV9paWlpaWlpaWlpaTpnZCxp''@;'; put 'put ''bnZva2Vfdjp5MSxpbnZva2Vfdmk6dzEsaW52b2tlX3ZpaTpsZixpbnZva2VfdmlpaTptZCxpbnZva2VfdmlpaWRkaTokbCxpbnZva2VfdmlpaWk6eHUsaW52b2tlX3ZpaWlpaTpsdSxpbnZva2VfdmlpaWlpaTpUdSxpbnZva2VfdmlpaWlpaWlpaTpzZixfX19hc3NlcnRfZmFpbDpubCxfX19i''@;'; put 'put ''dWlsZEVudmlyb25tZW50Ok5mLF9fX2Nsb2NrX2dldHRpbWU6cmwsX19fbG9jazpfaSxfX19tYXBfZmlsZTpvdSxfX19zZXRFcnJObzpiMCxfX19zeXNjYWxsMTA6Z2MsX19fc3lzY2FsbDE0MDpwZCxfX19zeXNjYWxsMTQ1OkIxLF9fX3N5c2NhbGwxNDY6YXUsX19fc3lzY2FsbDE5MjpQMSxf''@;'; put 'put ''X19zeXNjYWxsMTk1Om1jLF9fX3N5c2NhbGwxOTc6eDIsX19fc3lzY2FsbDIwOmQzLF9fX3N5c2NhbGwyMjE6UTIsX19fc3lzY2FsbDM6czEsX19fc3lzY2FsbDMzOlowLF9fX3N5c2NhbGw1OmZpLF9fX3N5c2NhbGw1NDpSMCxfX19zeXNjYWxsNjptbyxfX19zeXNjYWxsOTE6cnMsX19fdW5s''@;'; put 'put ''b2NrOm4yLF9fZXhpdDpUMixfY2xvY2tfZ2V0dGltZTpzYSxfZW1zY3JpcHRlbl9hc21fY29uc3RfaWlpOlFpLF9lbXNjcmlwdGVuX2dldF9ub3c6Z2wsX2Vtc2NyaXB0ZW5fZ2V0X25vd19pc19tb25vdG9uaWM6QWksX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZzpIMSxfZXhpdDpUaSxfZ2V0ZW52''@;'; put 'put ''Ok5jLF9nZXR0aW1lb2ZkYXk6Y28sX2xsdm1fY2VpbF9mNjQ6QzQsX2xsdm1fZmFic19mMzI6cjIsX2xsdm1fZmFic19mNjQ6V2ksX2xsdm1fZmxvb3JfZjY0OlVzLF9sbHZtX3Bvd19mNjQ6dnMsX2xsdm1fc3FydF9mMzI6RjEsX2xsdm1fc3FydF9mNjQ6S2wsX2xsdm1fdHJhcDpDcyxfbG9u''@;'; put 'put ''Z2ptcDpSaSxfc2V0ZW52OkoyLF90aW1lOkMwLF90aW1lczp1MSxEWU5BTUlDVE9QX1BUUjpsbix0ZW1wRG91YmxlUHRyOk1hLEFCT1JUOk1lLFNUQUNLVE9QOmduLFNUQUNLX01BWDpkbixjdHR6X2k4OmRzfTt2YXIgJGcsS289ZnVuY3Rpb24oZHQsSXQsUHQpe3ZhciBmZT1uZXcgZHQuSW50''@;'; put 'put ''OEFycmF5KFB0KSxpdD1uZXcgZHQuSW50MTZBcnJheShQdCksYT1uZXcgZHQuSW50MzJBcnJheShQdCksWHQ9bmV3IGR0LlVpbnQ4QXJyYXkoUHQpLGhyPW5ldyBkdC5VaW50MTZBcnJheShQdCksam49KG5ldyBkdC5VaW50MzJBcnJheShQdCksbmV3IGR0LkZsb2F0MzJBcnJheShQdCkpLF89''@;'; put 'put ''bmV3IGR0LkZsb2F0NjRBcnJheShQdCksQW89MHxJdC5EWU5BTUlDVE9QX1BUUixTaT0wfEl0LnRlbXBEb3VibGVQdHIsbGU9MHxJdC5TVEFDS1RPUCxscz0wfEl0LmN0dHpfaTgsTW49MCx4bj0wLGkyPTAsamM9ZHQuTmFOLHlzPWR0LkluZmluaXR5LERuPTAsY2Y9ZHQuTWF0aC5mbG9vcixl''@;'; put 'put ''bz1kdC5NYXRoLmFicyxEMD1kdC5NYXRoLnNxcnQscWw9ZHQuTWF0aC5wb3csaGE9ZHQuTWF0aC5jb3MsRGE9ZHQuTWF0aC5zaW4sVDg9ZHQuTWF0aC50YW4sSnA9ZHQuTWF0aC5hY29zLFhwPWR0Lk1hdGguYXNpbixaZj1kdC5NYXRoLmF0YW4sVWw9ZHQuTWF0aC5hdGFuMix6Zj1kdC5NYXRo''@;'; put 'put ''LmV4cCxJdT1kdC5NYXRoLmNlaWwsQXI9ZHQuTWF0aC5pbXVsLEFkPWR0Lk1hdGguY2x6MzIsdzI9SXQuYWJvcnQseWQ9SXQuZW5sYXJnZU1lbW9yeSxLcD1JdC5nZXRUb3RhbE1lbW9yeSxmZj1JdC5hYm9ydE9uQ2Fubm90R3Jvd01lbW9yeSxDaD1JdC5pbnZva2VfZGksd2Q9SXQuaW52b2tl''@;'; put 'put ''X2ksYTA9SXQuaW52b2tlX2lpLEZsPUl0Lmludm9rZV9paWksSnM9SXQuaW52b2tlX2lpaWksdGE9SXQuaW52b2tlX2lpaWlpLGMxPUl0Lmludm9rZV9paWlpaWlpLFpjPUl0Lmludm9rZV92LHNzPUl0Lmludm9rZV92aSxaMT1JdC5pbnZva2VfdmlpLHpjPUl0Lmludm9rZV92aWlpLEdjPUl0''@;'; put 'put ''Lmludm9rZV92aWlpaSxjdT1JdC5pbnZva2VfdmlpaWlpLHg0PUl0Lmludm9rZV92aWlpaWlpLFByPUl0Ll9fX2Fzc2VydF9mYWlsLE5NPUl0Ll9fX2Nsb2NrX2dldHRpbWUsJHA9SXQuX19fbG9jayxPOD1JdC5fX19tYXBfZmlsZSxxcD1JdC5fX19zZXRFcnJObyxwZj1JdC5fX19zeXNjYWxs''@;'; put 'put ''MTAsa2g9SXQuX19fc3lzY2FsbDE0MCxlNj1JdC5fX19zeXNjYWxsMTQ1LHQ2PUl0Ll9fX3N5c2NhbGwxNDYsUjg9SXQuX19fc3lzY2FsbDE5MixBYz1JdC5fX19zeXNjYWxsMTk1LEdmPUl0Ll9fX3N5c2NhbGwxOTcsc2I9SXQuX19fc3lzY2FsbDIwLGJkPUl0Ll9fX3N5c2NhbGwyMjEsdjk9''@;'; put 'put ''SXQuX19fc3lzY2FsbDMsdG09SXQuX19fc3lzY2FsbDMzLEI4PUl0Ll9fX3N5c2NhbGw1LG42PUl0Ll9fX3N5c2NhbGw1NCxKdT1JdC5fX19zeXNjYWxsNixUND1JdC5fX19zeXNjYWxsOTEscjY9SXQuX19fdW5sb2NrLEk0PUl0Ll9lbXNjcmlwdGVuX2FzbV9jb25zdF9paWksbm09SXQuX2Vt''@;'; put 'put ''c2NyaXB0ZW5fbWVtY3B5X2JpZyxYdT1JdC5fZXhpdCxEdT1JdC5fZ2V0ZW52LGczPUl0Ll9nZXR0aW1lb2ZkYXksYmw9SXQuX2xsdm1fdHJhcCx6ZT1JdC5fbG9uZ2ptcCxWdD1JdC5fc2V0ZW52LGhuPUl0Ll90aW1lLFJuPUl0Ll90aW1lcztmdW5jdGlvbiBlaShsLGMpe2x8PTAsY3w9MDt2''@;'; put 'put ''YXIgUmUsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxMZT0wO1JlPWxlLGxlPWxlKzE2fDAsYj1SZSs4fDAsTGU9NCxPZT0wfEYwKDQwKSxhW09lPj4yXT0wLHE9UmUsTW49MCxmPTB8YTAoMjksMHxsKSxwPU1uLE1u''@;'; put 'put ''PTAsMCE9KDB8cCkmMCE9KDB8eG4pPygobT0wfGdpKDB8YVtwPj4yXSwwfE9lLDB8TGUpKXx8emUoMHxwLDB8eG4pLERuPXhuKTptPS0xO2U6ZG97aWYoMSE9KDB8bSkpaWYoTW49MCxiZT0wfGEwKDIzLGY8PDN8MCkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oZj0wfGdpKDB8YVtw''@;'; put 'put ''Pj4yXSwwfE9lLDB8TGUpLGZ8fHplKDB8cCwwfHhuKSxEbj14bik6Zj0tMSwxIT0oMHxmKSl7aWYoMHxmZVsxOTQ5NTRdKXtpZihNbj0wLGY9MHx3ZCgzKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygobT0wfGdpKDB8YVtwPj4yXSwwfE9lLDB8TGUpKXx8emUoMHxwLDB8eG4pLERu''@;'; put 'put ''PXhuKTptPS0xLDE9PSgwfG0pKXtEPTAsaz0wLE09MCxiPTAsdz0wLGM9YmUsQT1iZSxmPURuLG09MCxnZT03NDticmVha31wZT1mfWVsc2UgcGU9MDtpZihNbj0wLGY9MHxGbCg5NywwfGwsMTEwMDY0KSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygobT0wfGdpKDB8YVtwPj4yXSww''@;'; put 'put ''fE9lLDB8TGUpKXx8emUoMHxwLDB8eG4pLERuPXhuKTptPS0xLDEhPSgwfG0pKXthWzQ3MzIzXT0wO3Q6ZG97aWYoMHxmJiYodz0wfGZlW2Y+PjBdLHc8PDI0Pj4yNCkpZm9yKEE9ZixwPXcsbT0wOzspe2lmKHc9QSsxfDAsIShwPDwyND4+MjQpKWJyZWFrIHQ7c3dpdGNoKHA8PDI0Pj4yNHww''@;'; put 'put ''KXtjYXNlIDk5OmY9OCxnZT0xNjticmVhaztjYXNlIDEwNTpmPTE4LGdlPTE2O2JyZWFrO2Nhc2UgMTA5OmY9MSxnZT0xNjticmVhaztjYXNlIDExNDpmPTQsZ2U9MTY7YnJlYWs7Y2FzZSAxMTU6Zj0yLGdlPTE2O2JyZWFrO2RlZmF1bHQ6Zj1tfTE2PT0oMHxnZSkmJihnZT0wLGFbNDczMjNd''@;'; put 'put ''PWZ8PW0pLEE9dyxwPTB8ZmVbdz4+MF0sbT1mfX13aGlsZSgwKTtpZigwfGMmJihNbj0wLEpzKDIwLDAsMTEwMDY4LDB8YiksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxnaSgwfGFbZj4+Ml0sMHxPZSwwfExlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6cD0tMSwxPT0oMHxw''@;'; put 'put ''KSkpe0Q9MCxrPXBlLE09MCxiPTAsdz0wLGM9YmUsQT1iZSxmPURuLG09MCxnZT03NDticmVha31pZihNbj0wLEc9MHxGbCg5OCwwfGwsMCksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxnaSgwfGFbZj4+Ml0sMHxPZSwwfExlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6cD0t''@;'; put 'put ''MSwxIT0oMHxwKSl7aWYoTT0wfGFbRysxNj4+Ml0sMiZhWzQ3MzIzXXwwJiYoTW49MCxaMSgyNiwwfGFbMTU3MTJdLDB8TSksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxnaSgwfGFbZj4+Ml0sMHxPZSwwfExlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6cD0tMSwxPT0oMHxw''@;'; put 'put ''KSkpe0Q9MCxrPXBlLE09MCxiPTAsdz1HLGM9YmUsQT1iZSxmPURuLG09MCxnZT03NDticmVha31pZihNbj0wLG09MHxhMCgyNSwwfGwpLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8Z2koMHxhW2Y+PjJdLDB8T2UsMHxMZSkpfHx6ZSgwfGYsMHx4biksRG49eG4pOnA9LTEs''@;'; put 'put ''MSE9KDB8cCkpe2ZvcihEPTA7bTspe2lmKE1uPTAsZj0wfEZsKDk5LDB8bCwwfG0pLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW3A+PjJdLDB8T2UsMHxMZSkpfHx6ZSgwfHAsMHx4biksRG49eG4pOkE9LTEsMT09KDB8QSkpe2s9cGUsTT0wLGI9MCx3PUcsYz1i''@;'; put 'put ''ZSxBPWJlLGY9RG4sbT0wLGdlPTc0O2JyZWFrIGV9Zm9yKHc9RDtmOyl7Mj09KDB8YVs0NzEzNF0pJiYwIT0oMHxhWzgrKDB8YVtmKzE2Pj4yXSk+PjJdKXx8KGdlPTMyKTt0OmRve2lmKDMyPT0oMHxnZSkpe2dlPTA7ZG97aWYoMHxmZVsxOTQ5NTRdKXtpZigoYj0oMHxhW2FbKDM9PSgwfChr''@;'; put 'put ''PTMmYVtmPj4yXSkpP2Y6Zis0OHwwKSs0MD4+Ml0+PjJdKT4+PjQpPj4+MD4oaz0oMHxhW2FbKDI9PSgwfGspP2Y6ZistNDh8MCkrNDA+PjJdPj4yXSk+Pj40KT4+PjApe2lmKE1uPTAscD0wfEpzKDM0LDB8cGUsMHxrLDB8YiksQT1NbixNbj0wLDAhPSgwfEEpJjAhPSgwfHhuKT8oKGM9MHxn''@;'; put 'put ''aSgwfGFbQT4+Ml0sMHxPZSwwfExlKSl8fHplKDB8QSwwfHhuKSxEbj14bik6Yz0tMSwxPT0oMHxjKSl7az1wZSxNPTAsYj0wLHc9RyxjPWJlLEE9YmUsZj1EbixtPTAsZ2U9NzQ7YnJlYWsgZX1pZigwfHApYnJlYWsgdDtpZihNbj0wLHpjKDY0LDB8cGUsMHxrLDB8YikscD1NbixNbj0wLDAh''@;'; put 'put ''PSgwfHApJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbcD4+Ml0sMHxPZSwwfExlKSl8fHplKDB8cCwwfHhuKSxEbj14bik6QT0tMSwxPT0oMHxBKSl7az1wZSxNPTAsYj0wLHc9RyxjPWJlLEE9YmUsZj1EbixtPTAsZ2U9NzQ7YnJlYWsgZX1icmVha31pZihNbj0wLHA9MHxKcygzNCwwfHBlLDB8''@;'; put 'put ''YiwwfGspLEE9TW4sTW49MCwwIT0oMHxBKSYwIT0oMHx4bik/KChjPTB8Z2koMHxhW0E+PjJdLDB8T2UsMHxMZSkpfHx6ZSgwfEEsMHx4biksRG49eG4pOmM9LTEsMT09KDB8Yykpe2s9cGUsTT0wLGI9MCx3PUcsYz1iZSxBPWJlLGY9RG4sbT0wLGdlPTc0O2JyZWFrIGV9aWYoMHxwKWJyZWFr''@;'; put 'put ''IHQ7aWYoTW49MCx6Yyg2NCwwfHBlLDB8YiwwfGspLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW3A+PjJdLDB8T2UsMHxMZSkpfHx6ZSgwfHAsMHx4biksRG49eG4pOkE9LTEsMT09KDB8QSkpe2s9cGUsTT0wLGI9MCx3PUcsYz1iZSxBPWJlLGY9RG4sbT0wLGdl''@;'; put 'put ''PTc0O2JyZWFrIGV9YnJlYWt9fXdoaWxlKDApO2lmKGFbYmUrKHc8PDMpKzQ+PjJdPWYsTW49MCxjPTB8YTAoMzAsMHxmKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygoQT0wfGdpKDB8YVtwPj4yXSwwfE9lLDB8TGUpKXx8emUoMHxwLDB8eG4pLERuPXhuKTpBPS0xLDE9PSgwfEEp''@;'; put 'put ''KXtrPXBlLE09MCxiPTAsdz1HLGM9YmUsQT1iZSxmPURuLG09MCxnZT03NDticmVhayBlfWFbYmUrKHc8PDMpPj4yXT1jLHc9dysxfDB9fXdoaWxlKDApO2lmKE1uPTAsZj0wfEZsKDEwMCwwfGwsMHxmKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygoQT0wfGdpKDB8YVtwPj4yXSww''@;'; put 'put ''fE9lLDB8TGUpKXx8emUoMHxwLDB8eG4pLERuPXhuKTpBPS0xLDE9PSgwfEEpKXtrPXBlLE09MCxiPTAsdz1HLGM9YmUsQT1iZSxmPURuLG09MCxnZT03NDticmVhayBlfX1pZihNbj0wLG09MHxGbCg4NiwwfGwsMHxtKSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygocD0wfGdpKDB8''@;'; put 'put ''YVtmPj4yXSwwfE9lLDB8TGUpKXx8emUoMHxmLDB8eG4pLERuPXhuKTpwPS0xLDE9PSgwfHApKXtrPXBlLE09MCxiPTAsdz1HLGM9YmUsQT1iZSxmPURuLG09MCxnZT03NDticmVhayBlfUQ9d31pZihNbj0wLGI9MHxhMCgzMSxEPDwzfDApLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/''@;'; put 'put ''KChwPTB8Z2koMHxhW2Y+PjJdLDB8T2UsMHxMZSkpfHx6ZSgwfGYsMHx4biksRG49eG4pOnA9LTEsMSE9KDB8cCkpaWYoTW49MCxHYygyOCwwfGJlLDB8RCw4LDEwMSksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxnaSgwfGFbZj4+Ml0sMHxPZSwwfExlKSl8fHplKDB8Ziww''@;'; put 'put ''fHhuKSxEbj14bik6cD0tMSwxIT0oMHxwKSlpZihNbj0wLHNzKDExMCwyKyhtPTB8YVtNPj4yXSl8MCksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxnaSgwfGFbZj4+Ml0sMHxPZSwwfExlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6cD0tMSwxIT0oMHxwKSl7Zm9yKGM9KHc9''@;'; put 'put ''MHxhW00rMTY+PjJdKSsoNDAqbXwwKXwwLHc9dysoNDAqKG0rMXwwKXwwKXwwLFI9MHxhWzE1NzEyXSxBPTA7ISgoMHxBKT49KDB8RCkpOyl7aWYoKDB8QSk+MCYmMTYmYVs0NzMyM118MCYmKE1uPTAsWjEoMjYsMHxSLDB8TSksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxn''@;'; put 'put ''aSgwfGFbZj4+Ml0sMHxPZSwwfExlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6cD0tMSwxPT0oMHxwKSkpe2s9cGUsTT1iLHc9RyxjPWJlLEE9YmUsZj1EbixtPVIsZ2U9NzQ7YnJlYWsgZX1pZigoMHwobT0wfGFbMTEyKygwfGFbMTYrKDB8YVsoMz09KDB8KGs9MyZhWyhmPTB8YVtiZSsoQTw8''@;'; put 'put ''MykrND4+Ml0pPj4yXSkpP2Y6Zis0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSk9PSgwfChmPTB8YVsxMTIrKDB8YVsxNisoMHxhWygyPT0oMHxrKT9mOmYrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pKSl7aWYoTW49MCxHYygyOSwwfE0sMHxtLDB8dywwfGMpLGY9TW4sTW49MCwwIT0oMHxmKSYw''@;'; put 'put ''IT0oMHx4bik/KChwPTB8Z2koMHxhW2Y+PjJdLDB8T2UsMHxMZSkpfHx6ZSgwfGYsMHx4biksRG49eG4pOnA9LTEsMT09KDB8cCkpe2s9cGUsTT1iLHc9RyxjPWJlLEE9YmUsZj1EbixtPVIsZ2U9NzQ7YnJlYWsgZX19ZWxzZXtpZihNbj0wLHpjKDY1LDB8TSwwfGYsMHx3KSxmPU1uLE1uPTAs''@;'; put 'put ''MCE9KDB8ZikmMCE9KDB8eG4pPygocD0wfGdpKDB8YVtmPj4yXSwwfE9lLDB8TGUpKXx8emUoMHxmLDB8eG4pLERuPXhuKTpwPS0xLDE9PSgwfHApKXtrPXBlLE09Yix3PUcsYz1iZSxBPWJlLGY9RG4sbT1SLGdlPTc0O2JyZWFrIGV9aWYoTW49MCx6Yyg2NSwwfE0sMHxtLDB8YyksZj1NbixN''@;'; put 'put ''bj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxnaSgwfGFbZj4+Ml0sMHxPZSwwfExlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6cD0tMSwxPT0oMHxwKSl7az1wZSxNPWIsdz1HLGM9YmUsQT1iZSxmPURuLG09UixnZT03NDticmVhayBlfX1pZihNbj0wLGY9MHxKcygzNSwwfE0sMHx3LDB8''@;'; put 'put ''YykscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxnaSgwfGFbcD4+Ml0sMHxPZSwwfExlKSl8fHplKDB8cCwwfHhuKSxEbj14bik6bT0tMSwxPT0oMHxtKSl7az1wZSxNPWIsdz1HLGM9YmUsQT1iZSxmPURuLG09UixnZT03NDticmVhayBlfWlmKDB8Zil7az1wZSxNPWIsdz1H''@;'; put 'put ''LGM9YmUsQT1iZTticmVhayBlfWlmKGY9YisoQTw8Myl8MCxNbj0wLEdjKDMwLDB8cSwwfE0sMHxjLDB8dykscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxnaSgwfGFbcD4+Ml0sMHxPZSwwfExlKSl8fHplKDB8cCwwfHhuKSxEbj14bik6bT0tMSwxPT0oMHxtKSl7az1wZSxN''@;'; put 'put ''PWIsdz1HLGM9YmUsQT1iZSxmPURuLG09UixnZT03NDticmVhayBlfWlmKGs9MHxhWyhtPXEpKzQ+PjJdLGFbZj4+Ml09YVttPj4yXSxhW2YrND4+Ml09ayxNbj0wLHNzKDExMSwwfE0pLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8Z2koMHxhW2Y+PjJdLDB8T2UsMHxMZSkp''@;'; put 'put ''fHx6ZSgwfGYsMHx4biksRG49eG4pOnA9LTEsMT09KDB8cCkpe2s9cGUsTT1iLHc9RyxjPWJlLEE9YmUsZj1EbixtPVIsZ2U9NzQ7YnJlYWsgZX1BPUErMXwwfU1uPTAsWmMoOCksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxnaSgwfGFbZj4+Ml0sMHxPZSwwfExlKSl8fHpl''@;'; put 'put ''KDB8ZiwwfHhuKSxEbj14bik6cD0tMSwxIT0oMHxwKT8oTW49MCxmPTB8YTAoMzIsMHxHKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygobT0wfGdpKDB8YVtwPj4yXSwwfE9lLDB8TGUpKXx8emUoMHxwLDB8eG4pLERuPXhuKTptPS0xLDEhPSgwfG0pPyhhW0crMjA+PjJdPWYsTW49''@;'; put 'put ''MCxmPTB8YTAoMzMsMHxHKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygobT0wfGdpKDB8YVtwPj4yXSwwfE9lLDB8TGUpKXx8emUoMHxwLDB8eG4pLERuPXhuKTptPS0xLDEhPSgwfG0pPyhhW0crMjQ+PjJdPWYsTW49MCx6Yyg2NiwwfEQsMHxiLDB8RyksZj1NbixNbj0wLDAhPSgw''@;'; put 'put ''fGYpJjAhPSgwfHhuKT8oKHA9MHxnaSgwfGFbZj4+Ml0sMHxPZSwwfExlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6cD0tMSwxIT0oMHxwKT8oT2U9MHxQZigxODkyOTYsMSwwfE9lLDB8TGUpLExlPURuLGY9TW49MCxNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxnaSgwfGFbZj4+Ml0s''@;'; put 'put ''MHxPZSwwfExlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6cD0tMSwxIT0oMHxwKT8oaz1wZSxNPWIsdz1HLGM9YmUsQT1iZSxmPTAsbT1SLGdlPTc0KTooaz1wZSxNPWIsdz1HLGM9YmUsQT1iZSxmPURuLG09UixnZT03NCkpOihrPXBlLE09Yix3PUcsYz1iZSxBPWJlLGY9RG4sbT1SLGdlPTc0''@;'; put 'put ''KSk6KGs9cGUsTT1iLHc9RyxjPWJlLEE9YmUsZj1EbixtPVIsZ2U9NzQpKTooaz1wZSxNPWIsdz1HLGM9YmUsQT1iZSxmPURuLG09UixnZT03NCkpOihrPXBlLE09Yix3PUcsYz1iZSxBPWJlLGY9RG4sbT1SLGdlPTc0KX1lbHNlIGs9cGUsTT1iLHc9RyxjPWJlLEE9YmUsZj1EbixtPTAsZ2U9''@;'; put 'put ''NzQ7ZWxzZSBrPXBlLE09Yix3PUcsYz1iZSxBPWJlLGY9RG4sbT0wLGdlPTc0O2Vsc2Ugaz1wZSxNPTAsdz1HLGM9YmUsQT1iZSxmPURuLG09MCxnZT03NH1lbHNlIEQ9MCxrPXBlLE09MCxiPTAsdz1HLGM9YmUsQT1iZSxmPURuLG09MCxnZT03NH1lbHNlIEQ9MCxrPXBlLE09MCxiPTAsdz1H''@;'; put 'put ''LGM9YmUsQT1iZSxmPURuLG09MCxnZT03NH1lbHNlIEQ9MCxrPXBlLE09MCxiPTAsdz0wLGM9YmUsQT1iZSxmPURuLG09MCxnZT03NH1lbHNlIEQ9MCxrPTAsTT0wLGI9MCx3PTAsYz0wLEE9YmUsZj1EbixtPTAsZ2U9NzQ7ZWxzZSBEPTAsaz0wLE09MCxiPTAsdz0wLGM9MCxBPTAsZj1Ebixt''@;'; put 'put ''PTAsZ2U9NzR9d2hpbGUoMCk7ZTpmb3IoOzspe2lmKDc0PT0oMHxnZSkpe2lmKGdlPTAsMHxmKXtSPW07Y29udGludWV9aWYoTW49MCxzcygxMTIsMHx3KSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygocD0wfGdpKDB8YVtmPj4yXSwwfE9lLDB8TGUpKXx8emUoMHxmLDB8eG4pLERu''@;'; put 'put ''PXhuKTpwPS0xLDE9PSgwfHApKXtmPURuLEE9cD1BLGM9Uj1jLHc9Rz13LGI9cT1iLE09cGU9TSxrPWJlPWssRD1nZT1ELGdlPTc0O2NvbnRpbnVlfWlmKDQmYVs0NzMyM118MCYmKE1uPTAsY3UoOCwwfG0sMHx3LDB8RCwwfE0sMHxjKSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygo''@;'; put 'put ''cD0wfGdpKDB8YVtmPj4yXSwwfE9lLDB8TGUpKXx8emUoMHxmLDB8eG4pLERuPXhuKTpwPS0xLDE9PSgwfHApKSl7Zj1EbixtPXA9bSxBPVI9QSxjPUc9Yyx3PXE9dyxiPXBlPWIsTT1iZT1NLEQ9Z2U9RCxnZT03NDtjb250aW51ZX1pZihNbj0wLHg0KDEwLDB8bCwwfHcsMHxELDB8TSwwfGMs''@;'; put 'put ''MCksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxnaSgwfGFbZj4+Ml0sMHxPZSwwfExlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6cD0tMSwxPT0oMHxwKSl7Zj1EbixtPXA9bSxBPVI9QSxjPUc9Yyx3PXE9dyxiPXBlPWIsTT1iZT1NLEQ9Z2U9RCxnZT03NDtjb250aW51ZX1S''@;'; put 'put ''PW19aWYoMHxmZVsxOTQ5NTRdKXtpZihNbj0wLHNzKDExMywwfGspLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8Z2koMHxhW2Y+PjJdLDB8T2UsMHxMZSkpfHx6ZSgwfGYsMHx4biksRG49eG4pOnA9LTEsMT09KDB8cCkpe2Y9RG4sbT1SLGdlPTc0O2NvbnRpbnVlfWY9MH1l''@;'; put 'put ''bHNlIGY9MDtmb3IoOyEoKDB8Zik+PSgwfEQpKTspe2lmKE1uPTAsc3MoMTA1LDB8YVtNKyhmPDwzKSs0Pj4yXSkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxnaSgwfGFbcD4+Ml0sMHxPZSwwfExlKSl8fHplKDB8cCwwfHhuKSxEbj14bik6bT0tMSwxPT0oMHxtKSl7Zj1E''@;'; put 'put ''bixtPVIsZ2U9NzQ7Y29udGludWUgZX1mPWYrMXwwfWlmKE1uPTAsc3MoMTA1LDB8YiksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxnaSgwfGFbZj4+Ml0sMHxPZSwwfExlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6cD0tMSwxIT0oMHxwKSlpZihNbj0wLHNzKDExNCwwfHcp''@;'; put 'put ''LGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8Z2koMHxhW2Y+PjJdLDB8T2UsMHxMZSkpfHx6ZSgwfGYsMHx4biksRG49eG4pOnA9LTEsMSE9KDB8cCkpe2lmKE1uPTAsc3MoMTA1LDB8QSksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxnaSgwfGFbZj4+Ml0s''@;'; put 'put ''MHxPZSwwfExlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6cD0tMSwxIT0oMHxwKSlicmVhaztmPURuLG09UixnZT03NH1lbHNlIGY9RG4sbT1SLGdlPTc0O2Vsc2UgZj1EbixtPVIsZ2U9NzR9RnQoMHxPZSksbGU9UmV9ZnVuY3Rpb24gZmIobCxjLGYpe3ZhciBwO2x8PTAsX1soY3w9MCk+PjNd''@;'; put 'put ''PStfW2M+PjNdKyArX1soZnw9MCk+PjNdLF9bKHA9Yys4fDApPj4zXT0rX1twPj4zXSsgK19bZis4Pj4zXSxhW2w+PjJdPWFbYz4+Ml0sYVtsKzQ+PjJdPWFbYys0Pj4yXSxhW2wrOD4+Ml09YVtjKzg+PjJdLGFbbCsxMj4+Ml09YVtjKzEyPj4yXX1mdW5jdGlvbiBDZChsLGMpe3ZhciBmLHA7''@;'; put 'put ''cmV0dXJuIGM9MHxsNigwfGFbMjQrKGN8PTApPj4yXSxsfD0wKSwrKCsoMHxhW2wrNDQ+PjJdKS8rKDErKDB8YVtjKzI0Pj4yXSl8MCkqKCtfWzU2KyhwPTB8YVtjKzM2Pj4yXSk+PjNdLShmPStfW3ArNDA+PjNdKSkrZil9ZnVuY3Rpb24gbTMobCxjKXt2YXIgZixwO3JldHVybiBwPTB8bDYo''@;'; put 'put ''MHxhWzIwKyhjfD0wKT4+Ml0sbHw9MCksMHx+figoMS0rKDB8YVtsKzQ0Pj4yXSkvKygxKygwfGFbcCsyND4+Ml0pfDApKSooK19bNjQrKGM9MHxhW3ArMzY+PjJdKT4+M10tKGY9K19bYys0OD4+M10pKStmKX1mdW5jdGlvbiBsNihsLGMpe3JldHVybihsPTB8bWlbNjMmYVsobHw9MCk+PjJd''@;'; put 'put ''XShsLDgrKGN8PTApfDAsNTEyKSl8fFByKDExMDE1NSwxMTAxNjEsNDIzLDExMDE2OSksKGw9MHxtaVs2MyZhWyhsPTB8YVtsKzE2Pj4yXSk+PjJdXShsLGMrMTZ8MCw1MTIpKT8wfGw6KFByKDExMDE4MCwxMTAxNjEsNDI1LDExMDE2OSksMCl9ZnVuY3Rpb24gWXoobCxjLGYscCxtLEEpe2x8''@;'; put 'put ''PTAsY3w9MCxtfD0wLEF8PTA7dmFyIEQsZ2UsYmUsT2UsTGUsUmUsSGUsVmUsdz0wLGI9MCxrPTAsTT0wLFI9MCxHPTAscT0wLHBlPTAscWU9MCxydD0wLFdlPTAsYXQ9MDtmb3IoVmU9bGUsbGU9bGUrMzJ8MCxIZT1WZSsxNnwwLGJlPVZlKzh8MCxrPVZlLHc9MHxhWzExMisoMHxhWzE2Kygw''@;'; put 'put ''fGFbKDM9PSgzJmFbKGZ8PTApPj4yXXwwKT9mOmYrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSwwfGZlWyhnZT0wfGFbNCsocHw9MCk+PjJdKT4+MF0/KHc9fn4oLjUqKChwZT0rX1t3KzQ4Pj4zXSkrKGI9K19bdys2ND4+M10pKSksYj0rQ2QoZ2UsbSkpOihiPStfW3crNTY+PjNdLHBlPStfW3cr''@;'; put 'put ''NDA+PjNdLHc9MHxtMyhnZSxtKSxiPS41KihwZStiKSksX1tBPj4zXT1SPShSPStfW0E+PjNdKTwocT0rKDB8KHFlPX5+YikpKT9SOnEsX1soT2U9QSs4fDApPj4zXT1HPShHPStfW09lPj4zXSk8KHBlPSsoMHx3KSk/RzpwZSxfWyhMZT1BKzE2fDApPj4zXT1xPShiPStfW0xlPj4zXSk+cT9i''@;'; put 'put ''OnEsX1soUmU9QSsyNHwwKT4+M109cGU9KGI9K19bUmU+PjNdKT5wZT9iOnBlLGFbaz4+Ml09cWUsYVtrKzQ+PjJdPXcsVDAoYywxMTA2ODIsayksRD0wfGFbcD4+Ml0saz1nZSxNPTEscD1xZTshKCgwfE0pPj0oMHxEKSk7KTB8ZmVbKGs9Z2UrKDU2Kk18MCl8MCk+PjBdP3A9fn4rQ2Qoayxt''@;'; put 'put ''KTp3PTB8bTMoayxtKSxfW0E+PjNdPWF0PVI8KHJ0PSsoMHxwKSk/UjpydCxfW09lPj4zXT1XZT1HPChiPSsoMHx3KSk/RzpiLF9bTGU+PjNdPXJ0PXE+cnQ/cTpydCxfW1JlPj4zXT1iPXBlPmI/cGU6YixhW2JlPj4yXT1wLGFbYmUrND4+Ml09dyxUMChjLDExMDcwNCxiZSksTT1NKzF8MCxS''@;'; put 'put ''PWF0LEc9V2UscT1ydCxwZT1iO3c9MHxhWzExMisoMHxhWzE2KygwfGFbKDI9PSgzJmFbZj4+Ml18MCk/ZjpmKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdLDB8ZmVbaz4+MF0/KHc9fn4oLjUqKChhdD0rX1t3KzQ4Pj4zXSkrKGI9K19bdys2ND4+M10pKSksYj0rQ2QoayxtKSk6KGI9K19bdys1''@;'; put 'put ''Nj4+M10sYXQ9K19bdys0MD4+M10sdz0wfG0zKGssbSksYj0uNSooYXQrYikpLF9bQT4+M109UjwoV2U9KygwfChxZT1+fmIpKSk/UjpXZSxfW09lPj4zXT1HPChhdD0rKDB8dykpP0c6YXQsX1tMZT4+M109cT5XZT9xOldlLF9bUmU+PjNdPXBlPmF0P3BlOmF0LGFbSGU+PjJdPXFlLGFbSGUr''@;'; put 'put ''ND4+Ml09dyxUMChjLDExMDcxOCxIZSksYVtsPj4yXT1hW0E+PjJdLGFbbCs0Pj4yXT1hW0ErND4+Ml0sYVtsKzg+PjJdPWFbQSs4Pj4yXSxhW2wrMTI+PjJdPWFbQSsxMj4+Ml0sYVtsKzE2Pj4yXT1hW0ErMTY+PjJdLGFbbCsyMD4+Ml09YVtBKzIwPj4yXSxhW2wrMjQ+PjJdPWFbQSsyND4+''@;'; put 'put ''Ml0sYVtsKzI4Pj4yXT1hW0ErMjg+PjJdLGxlPVZlfWZ1bmN0aW9uIHZSKGwpe3ZhciBjPTA7Zm9yKGw9MHxzMChsfD0wKTtsOyl7Zm9yKGM9MHxzMCgwfGFbbCsxNj4+Ml0pO2M7KWFbYyszMj4+Ml09MHxDUigwfGFbYysyND4+Ml0pLGM9MHxhW2M+PjJdO2w9MHxhW2w+PjJdfX1mdW5jdGlv''@;'; put 'put ''biBoYihsKXt2YXIgYz0wO2ZvcihsPTB8czAobHw9MCk7bDspe2ZvcihjPTB8czAoMHxhW2wrMTY+PjJdKTtjOykwfGFbYysyND4+Ml0mJmJSKGMpLGM9MHxhW2M+PjJdO2w9MHxhW2w+PjJdfX1mdW5jdGlvbiBZYyhsLGMpe2N8PTA7dmFyIGY9MDtmb3IoZj0wfHMwKGx8PTApO2Y7KXtmb3Io''@;'; put 'put ''bD0wfHMwKDB8YVtmKzE2Pj4yXSk7bDspeVIobCxjKSxsPTB8YVtsPj4yXTtmPTB8YVtmPj4yXX19ZnVuY3Rpb24gaW0obCl7dmFyIGM9MCxmPTAscD0wLG09MCxBPTAsdz0wO2ZvcihwPTB8czAobHw9MCk7cDspe2Zvcih3PXArOHwwLG09MHxzMCgwfGFbcCsxNj4+Ml0pO207KXtsPW0rMjR8''@;'; put 'put ''MDtlOmRve2lmKDB8YVtsPj4yXSlmb3IoOCZhWzQ3MzIzXXwwJiZGOChtLH5+K19bdz4+M10pLEE9bSszMnwwLFlNKDB8YVtBPj4yXSksYz0wfGFbbD4+Ml0sZj1tKzI4fDAsbD0wOzspe2lmKCgwfGwpPj0oMHxjKSlicmVhayBlO2FbNDQrKDB8YVsoMHxhW2Y+PjJdKSsobDw8Mik+PjJdKT4+''@;'; put 'put ''Ml09MSsoMHxhWygwfGFbNCsoMHxhW0E+PjJdKT4+Ml0pKygxMipsfDApKzQ+PjJdKSxsPWwrMXwwfX13aGlsZSgwKTttPTB8YVttPj4yXX1wPTB8YVtwPj4yXX19ZnVuY3Rpb24gRjgobCxjKXtjfD0wO3ZhciBBLGIsZj0wLHA9MCxtPTAsdz0wLGs9MCxNPTA7Yj1sZSxsZT1sZSszMnwwLGY9''@;'; put 'put ''YixBPTI0KyhsfD0wKXwwO2U6ZG97aWYoKDB8YVtBPj4yXSk+PTIpZm9yKHc9MHxhWzE1NzEyXSxNPStfW2wrOD4+M10saz0rX1tsKzE2Pj4zXSxhW2Y+PjJdPWMsX1tmKzg+PjNdPU0sX1tmKzE2Pj4zXT1rLFQwKHcsMTEwNzM5LGYpLG09bCszMnwwLGw9bCsyOHwwLGM9MDs7KXtpZigoMHxj''@;'; put 'put ''KT49KDB8YVtBPj4yXSkpYnJlYWsgZTtwPTB8YVsoMHxhWzQrKDB8YVttPj4yXSk+PjJdKSsoMTIqY3wwKSs4Pj4yXTt0OmRve2lmKDB8cHUocCkpZm9yKEFSKHcsMHxhWygwfGFbbD4+Ml0pKyhjPDwyKT4+Ml0pLF91KDExMDc1OSx3KSxmPTB8bWlbNjMmYVtwPj4yXV0ocCwwLDEyOCk7Oyl7''@;'; put 'put ''aWYoIWYpYnJlYWsgdDtfdSgxMTA3NjQsdyksQVIodywwfGFbKDB8YVtsPj4yXSkrKGFbZj4+Ml08PDIpPj4yXSksX3UoMTUzNTk5LHcpLGY9MHxtaVs2MyZhW3A+PjJdXShwLGYsOCl9fXdoaWxlKDApO2M9YysxfDB9fXdoaWxlKDApO2xlPWJ9ZnVuY3Rpb24gQVIobCxjKXtsfD0wO3ZhciBt''@;'; put 'put ''LGY9MCxwPTAsQT0wLHc9MCxiPTAsaz0wO209bGUsbGU9bGUrODB8MCxwPW0rNDB8MCxmPW0sMHxmZVsoY3w9MCk+PjBdPyhiPStfW2MrOD4+M10sdz0rX1tjKzE2Pj4zXSxrPStfW2MrMjQ+PjNdLHA9MHxvbSgwfGFbYyszMj4+Ml0pLEE9MHxvbSgwfGFbYyszNj4+Ml0pLF9bZj4+M109Yixf''@;'; put 'put ''W2YrOD4+M109dyxfW2YrMTY+PjNdPWIsX1tmKzI0Pj4zXT1rLGFbZiszMj4+Ml09cCxhW2YrMzY+PjJdPUEsVDAobCwxMTA3NzAsZikpOihrPStfW2MrMTY+PjNdLHc9K19bYys4Pj4zXSxiPStfW2MrMjQ+PjNdLEE9MHxvbSgwfGFbYyszMj4+Ml0pLGY9MHxvbSgwfGFbYyszNj4+Ml0pLF9b''@;'; put 'put ''cD4+M109ayxfW3ArOD4+M109dyxfW3ArMTY+PjNdPWIsX1twKzI0Pj4zXT13LGFbcCszMj4+Ml09QSxhW3ArMzY+PjJdPWYsVDAobCwxMTA3NzAscCkpLGxlPW19ZnVuY3Rpb24gb20obCl7c3dpdGNoKDB8KGx8PTApKXtjYXNlIDA6bD0xMTA4MjE7YnJlYWs7Y2FzZSAxOmw9MTEwODE2O2Jy''@;'; put 'put ''ZWFrO2Nhc2UgMjpsPTExMDgwOTticmVhaztjYXNlIDM6bD0xMTA4MDI7YnJlYWs7Y2FzZSA0Omw9MTEwNzk0O2JyZWFrO2RlZmF1bHQ6bD0wfXJldHVybiAwfGx9ZnVuY3Rpb24geVIobCxjKXtjfD0wO3ZhciBNLEQsRyxwZSxiZSxPZSxMZSxSZSxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxr''@;'; put 'put ''PTAsUj0wLHE9MCxnZT0wO1JlPWxlLGxlPWxlKzE2fDAsT2U9MHxhWzMyKyhsfD0wKT4+Ml0sTGU9MHxhW2wrMjg+PjJdLE09NCsocGU9UmUrOHwwKXwwLEQ9KGJlPVJlKSs0fDAsYj0wLGw9MHxhWyhHPWwrMjR8MCk+PjJdO2U6Zm9yKDtxPWIrMXwwLCEoKDB8cSk+PSgwfGwpKTspZm9yKFI9''@;'; put 'put ''TGUrKGI8PDIpfDAsaz1xOzspe2lmKCgwfGspPj0oMHxsKSl7Yj1xO2NvbnRpbnVlIGV9dDpkb3tpZigwPT0oMHxtZihPZSxiLGspKSYmMD09KDB8bWYoT2UsayxiKSkmJihnZT1MZSsoazw8Mil8MCwwfGRiKDB8YVtSPj4yXSwwfGFbZ2U+PjJdKSkpc3dpdGNoKG09MHxhW1I+PjJdLGw9MHxh''@;'; put 'put ''W20rNDg+PjJdLHc9MHxhW2dlPj4yXSxmPTB8YVt3KzQ4Pj4yXSxwPTA9PSgwfGYpLGw9bD9wPzE6K19bbCs4Pj4zXSE9K19bZis4Pj4zXToxXnAsQT0xJmwsWk0ocGUsbSx3LDAsQSksbD0wfGFbcGU+PjJdLHc9MHxhW00+PjJdLG09MV5BLFpNKGJlLDB8YVtSPj4yXSwwfGFbZ2U+PjJdLDEs''@;'; put 'put ''bSksZj0wfGFbYmU+PjJdLHA9MHxhW0Q+PjJdLDB8dyl7Y2FzZS0xOmlmKFNoKDB8YVtnZT4+Ml0sMHxhW1I+PjJdLEEsMCxsLGMpLFNoKDB8YVtnZT4+Ml0sMHxhW1I+PjJdLG0sMSxmLGMpLDEhPSgwfHApKWJyZWFrIHQ7ek0oMHxhW1I+PjJdLDB8YVtnZT4+Ml0sbSxjKTticmVhayB0O2Nh''@;'; put 'put ''c2UgMDpzd2l0Y2goMHxwKXtjYXNlLTE6U2goMHxhW2dlPj4yXSwwfGFbUj4+Ml0sQSwwLGwsYyksU2goMHxhW2dlPj4yXSwwfGFbUj4+Ml0sbSwxLGYsYyk7YnJlYWsgdDtjYXNlIDA6Y2FzZSAxOlNoKDB8YVtSPj4yXSwwfGFbZ2U+PjJdLDAsQSxsLGMpLFNoKDB8YVtSPj4yXSwwfGFbZ2U+''@;'; put 'put ''PjJdLDEsbSxmLGMpO2JyZWFrIHQ7ZGVmYXVsdDpicmVhayB0fWNhc2UgMTppZihTaCgwfGFbUj4+Ml0sMHxhW2dlPj4yXSwwLEEsbCxjKSxTaCgwfGFbUj4+Ml0sMHxhW2dlPj4yXSwxLG0sZixjKSwtMSE9KDB8cCkpYnJlYWsgdDt6TSgwfGFbUj4+Ml0sMHxhW2dlPj4yXSxtLGMpO2JyZWFr''@;'; put 'put ''IHQ7ZGVmYXVsdDpicmVhayB0fX13aGlsZSgwKTtrPWsrMXwwLGw9MHxhW0c+PjJdfWxlPVJlfWZ1bmN0aW9uIGRiKGwsYyl7cmV0dXJuK19bOCsobHw9MCk+PjNdIT0rX1s4KyhjfD0wKT4+M10mJlByKDExMDg5MiwxMTAxNjEsODQzLDExMDkyMyksMHwoK19bbCsxNj4+M109PStfW2MrMTY+''@;'; put 'put ''PjNdJiYrX1tsKzI0Pj4zXT09K19bYysyND4+M10mJigwfGFbbCszMj4+Ml0pPT0oMHxhW2MrMzI+PjJdKT8oMHxhW2wrMzY+PjJdKT09KDB8YVtjKzM2Pj4yXSkmMTowKX1mdW5jdGlvbiBaTShsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgQT0wLHc9MCxiPTA7Zm9y''@;'; put 'put ''KEE9MDs7KXtpZighKGM9MHxzNihjLHApKSl7dz0wO2JyZWFrfWlmKCEoZj0wfHM2KGYsbSkpKXtiPTY7YnJlYWt9aWYoISgwfGRiKGMsZikpKXtiPTc7YnJlYWt9QT1BKzF8MH02PT0oMHxiKT9QcigxMzgzOTQsMTEwMTYxLDg3MSwxMTA4NDEpOjc9PSgwfGIpJiYodz0wfGZ1bmN0aW9uIGFt''@;'; put 'put ''KGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wO2Zvcih3PTE7ISgoMHx3KT4oMHxmKSk7KXtBPTB8czYobCxwKSxtPStfW0ErOD4+M109PStfW2wrMTY+PjNdO2Rve2lmKDB8ZmVbbD4+MF0pe2lmKG0pe209ND09KDB8YVtsKzMyPj4yXSk7YnJlYWt9bT0yPT0o''@;'; put 'put ''MHxhW2wrMzY+PjJdKTticmVha31pZihtKXttPTE9PSgwfGFbbCszMj4+Ml0pO2JyZWFrfW09Mz09KDB8YVtsKzM2Pj4yXSk7YnJlYWt9d2hpbGUoMCk7bD1BLHc9dysxfDAsYz1tPzAtY3wwOmN9cmV0dXJuIDB8Y30oYywwfHc5KGMsZiksQSsxfDAsMS1wfDApKSxhW2w+PjJdPUEsYVtsKzQ+''@;'; put 'put ''PjJdPXd9ZnVuY3Rpb24gU2gobCxjLGYscCxtLEEpe2N8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEQsUix3PTAsYj0wLGs9MCxNPTAsRz0wO2ZvcihSPTIwKyhBfD0wKXwwLEQ9QSsyNHwwLEE9MHxsNigwfGFbKDA9PSgwfGZlWyhsfD0wKT4+MF0pP1I6RCk+PjJdLGwpLHoxKDB8YVtBKzMyPj4y''@;'; put 'put ''XSwwfGFbbCs0MD4+Ml0sMHxhW2MrNDA+PjJdKSxiPTE7ISgoMHxiKT4oMHxtKSk7KXtrPTB8czYobCxmKSxNPTB8czYoYyxwKTtkb3tpZigwfGZlW2w+PjBdKXtpZih3PTB8bDYoMHxhW1I+PjJdLGspLCtfW2srOD4+M109PStfW2wrMTY+PjNdKXtpZihHPTI9PSgwfGFbbCszMj4+Ml0pLEE9''@;'; put 'put ''MCE9KDB8bWYoMHxhW0ErMzI+PjJdLDB8YVtsKzQwPj4yXSwwfGFbYys0MD4+Ml0pKSxsPTB8YVt3KzMyPj4yXSxHKXtpZihBKXt6MShsLDB8YVtrKzQwPj4yXSwwfGFbTSs0MD4+Ml0pLEE9dzticmVha316MShsLDB8YVtNKzQwPj4yXSwwfGFbays0MD4+Ml0pLEE9dzticmVha31pZihBKXt6''@;'; put 'put ''MShsLDB8YVtNKzQwPj4yXSwwfGFbays0MD4+Ml0pLEE9dzticmVha316MShsLDB8YVtrKzQwPj4yXSwwfGFbTSs0MD4+Ml0pLEE9dzticmVha31pZihHPTI9PSgwfGFbbCszNj4+Ml0pLEE9MCE9KDB8bWYoMHxhW0ErMzI+PjJdLDB8YVtsKzQwPj4yXSwwfGFbYys0MD4+Ml0pKSxsPTB8YVt3''@;'; put 'put ''KzMyPj4yXSxHKXtpZihBKXt6MShsLDB8YVtNKzQwPj4yXSwwfGFbays0MD4+Ml0pLEE9dzticmVha316MShsLDB8YVtrKzQwPj4yXSwwfGFbTSs0MD4+Ml0pLEE9dzticmVha31pZihBKXt6MShsLDB8YVtrKzQwPj4yXSwwfGFbTSs0MD4+Ml0pLEE9dzticmVha316MShsLDB8YVtNKzQwPj4y''@;'; put 'put ''XSwwfGFbays0MD4+Ml0pLEE9dzticmVha31pZih3PTB8bDYoMHxhW0Q+PjJdLGspLCtfW2srOD4+M109PStfW2wrMTY+PjNdKXtpZihHPTE9PSgwfGFbbCszMj4+Ml0pLEE9MCE9KDB8bWYoMHxhW0ErMzI+PjJdLDB8YVtsKzQwPj4yXSwwfGFbYys0MD4+Ml0pKSxsPTB8YVt3KzMyPj4yXSxH''@;'; put 'put ''KXtpZihBKXt6MShsLDB8YVtNKzQwPj4yXSwwfGFbays0MD4+Ml0pLEE9dzticmVha316MShsLDB8YVtrKzQwPj4yXSwwfGFbTSs0MD4+Ml0pLEE9dzticmVha31pZihBKXt6MShsLDB8YVtrKzQwPj4yXSwwfGFbTSs0MD4+Ml0pLEE9dzticmVha316MShsLDB8YVtNKzQwPj4yXSwwfGFbays0''@;'; put 'put ''MD4+Ml0pLEE9dzticmVha31pZihHPTE9PSgwfGFbbCszNj4+Ml0pLEE9MCE9KDB8bWYoMHxhW0ErMzI+PjJdLDB8YVtsKzQwPj4yXSwwfGFbYys0MD4+Ml0pKSxsPTB8YVt3KzMyPj4yXSxHKXtpZihBKXt6MShsLDB8YVtrKzQwPj4yXSwwfGFbTSs0MD4+Ml0pLEE9dzticmVha316MShsLDB8''@;'; put 'put ''YVtNKzQwPj4yXSwwfGFbays0MD4+Ml0pLEE9dzticmVha31pZihBKXt6MShsLDB8YVtNKzQwPj4yXSwwfGFbays0MD4+Ml0pLEE9dzticmVha316MShsLDB8YVtrKzQwPj4yXSwwfGFbTSs0MD4+Ml0pLEE9dzticmVha313aGlsZSgwKTtsPWssYz1NLGI9YisxfDB9fWZ1bmN0aW9uIHpNKGws''@;'; put 'put ''YyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7Zm9yKHZhciBtPTA7MHxkYihsLGMpOyltPTB8czYobCwxKSxjPTB8czYoYyxmKSxsPW07IWZ1bmN0aW9uIF85KGwsYyxmKXtsfD0wLGN8PTA7dmFyIHAsbSxBO3A9bGUsbGU9bGUrMTZ8MCxhWyhtPXApPj4yXT1mfD0wLG1pWzYzJmFbKEE9MHxh''@;'; put 'put ''WygwfGFbKGw9bCs0fDApPj4yXSkrKDEyKmN8MCkrOD4+Ml0pPj4yXV0oQSxtLDIpLGFbbT4+Ml09YyxtaVs2MyZhWyhmPTB8YVsoMHxhW2w+PjJdKSsoMTIqZnwwKSs4Pj4yXSk+PjJdXShmLG0sMiksbGU9cH0obT0wfGFbMzIrKDB8bDYoMHxhWygwPT0oMHxmZVtsPj4wXSk/cCsyMHwwOnAr''@;'; put 'put ''MjR8MCk+PjJdLGwpKT4+Ml0sMHxhW2wrNDA+PjJdLDB8YVtjKzQwPj4yXSl9ZnVuY3Rpb24gczYobCxjKXtyZXR1cm4obHw9MCk/MHxhWygwPT0oMHwoY3w9MCkpP2wrNDh8MDpsKzUyfDApPj4yXTooUHIoMTEwODI4LDExMDE2MSw3OTgsMTEwODMyKSwwKX1mdW5jdGlvbiB3OShsLGMpe3Zh''@;'; put 'put ''ciBmLHAsbTtyZXR1cm4gbT1sZSxsZT1sZSsxNnwwLHA9bSwoZj0wfGZlWyhsfD0wKT4+MF0pPDwyND4+MjQ9PSgwfGZlWyhjfD0wKT4+MF0pJiYrX1tsKzg+PjNdPT0rX1tjKzg+PjNdPyhsPWY8PDI0Pj4yND8wfHdSKGwsYyw0LDIpOjB8d1IobCxjLDMsMSksbGU9bSwwfGwpOigkcigxLDEx''@;'; put 'put ''MDg1NCxwKSx6ZSgxODkyOTYsMSksMCl9ZnVuY3Rpb24gd1IobCxjLGYscCl7Znw9MCxwfD0wO3ZhciBiLGssbT0wLEE9MCx3PTAsTT0wLEQ9MCxSPTAsRz0wO2I9K19bMjQrKGx8PTApPj4zXSxrPStfWzE2KyhjfD0wKT4+M107ZG97aWYoIShiPGt8fChBPStfW2wrMTY+PjNdLHc9K19bYysy''@;'; put 'put ''ND4+M10sQT53KSkpe2lmKGs8YiZBPGspe2M9MHxIOChsLGMsZixwKTticmVha31pZihrPEEmQTx3KXtjPTAtKDB8SDgoYyxsLGYscCkpfDA7YnJlYWt9aWYoQSE9ayl7aWYoYj09aylyZXR1cm4gMHwoKDB8KGY9MHxhW2wrMzY+PjJdKSk9PSgwfGFbYyszMj4+Ml0pPzA6KDB8Zik9PSgwfHAp''@;'; put 'put ''PzE6LTEpO2M9KDB8KGY9MHxhW2wrMzI+PjJdKSk9PSgwfGFbYyszNj4+Ml0pPzA6KDB8Zik9PSgwfHApPzE6LTE7YnJlYWt9aWYoYiE9dyl7aWYoYjx3KXJldHVybiBHPSgwfGFbbCszNj4+Ml0pPT0oMHxmKSxmPTB8RDQoMHxhW2MrMzI+PjJdLDB8YVtsKzMyPj4yXSxmLHApLDB8KEc/Zjow''@;'; put 'put ''LWZ8MCk7Rz0oMHxhW2MrMzY+PjJdKT09KDB8cCksYz0wfEQ0KDB8YVtsKzMyPj4yXSwwfGFbYyszMj4+Ml0sZixwKSxjPUc/YzowLWN8MDticmVha31pZigoMHwoRz0wfGFbbCszMj4+Ml0pKT09KDB8KFI9MHxhW2MrMzI+PjJdKSkpe2lmKCgwfGFbbCszNj4+Ml0pPT0oMHwoYz0wfGFbYysz''@;'; put 'put ''Nj4+Ml0pKSl7Yz0wO2JyZWFrfX1lbHNlIGM9MHxhW2MrMzY+PjJdO2lmKEQ9KDB8Uik9PSgwfGYpLCgwfFIpPT0oMHxjKSl7aWYoRCl7Yz0xO2JyZWFrfWlmKCgwfFIpPT0oMHxwKSl7Yz0tMTticmVha31pZigoMHxHKSE9KDB8ZikmJigwfGFbbCszNj4+Ml0pIT0oMHxmKSl7Yz0xO2JyZWFr''@;'; put 'put ''fWlmKCgwfEcpIT0oMHxwKSYmKDB8YVtsKzM2Pj4yXSkhPSgwfHApKXtjPS0xO2JyZWFrfWM9MDticmVha31pZihEJihtPSgwfGMpPT0oMHxwKSkpe2lmKGM9KDB8YVtsKzM2Pj4yXSk9PSgwfHApLCgwfEcpPT0oMHxmKSl7aWYoIWMpe2M9LTE7YnJlYWt9fWVsc2UgaWYoYyl7Yz0xO2JyZWFr''@;'; put 'put ''fWM9MDticmVha31pZigoMHxSKT09KDB8cCkmKE09KDB8Yyk9PSgwfGYpKSl7aWYoYz0oMHxHKT09KDB8cCksKDB8YVtsKzM2Pj4yXSk9PSgwfGYpKXtpZighYyl7Yz0tMTticmVha319ZWxzZSBpZihjKXtjPTE7YnJlYWt9Yz0wO2JyZWFrfWlmKCFSKXtpZihNKXtjPTB8TjgoRywwfGFbbCsz''@;'; put 'put ''Nj4+Ml0sZik7YnJlYWt9aWYobSl7Yz0wLSgwfE44KEcsMHxhW2wrMzY+PjJdLHApKXwwO2JyZWFrfX1pZihtPTB8YVtsKzM2Pj4yXSxEJjA9PSgwfGMpKXtjPTB8TjgobSxHLGYpO2JyZWFrfWM9MC0oMHxOOChtLEcscCkpfDA7YnJlYWt9Yz0wfXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rp''@;'; put 'put ''b24gSDgobCxjLGYscCl7Znw9MCxwfD0wO3ZhciB3LGIsbT0wLEE9MDt3PStfWzI0KyhsfD0wKT4+M10sYj0rX1syNCsoY3w9MCk+PjNdO2Rve2lmKHc8Yil7aWYoKDB8KGw9MHxhW2wrMzY+PjJdKSk9PSgwfGYpJiYoMHxhW2MrMzI+PjJdKT09KDB8cCkpe2w9LTE7YnJlYWt9aWYoKDB8bCk9''@;'; put 'put ''PSgwfHApJiYoMHxhW2MrMzI+PjJdKT09KDB8Zikpe2w9MTticmVha31sPTB9ZWxzZXtpZihBPSgwfChtPTB8YVtjKzMyPj4yXSkpPT0oMHxwKSx3PT1iKXtpZihBKXtsPTB8RDQoMHxhW2wrMzY+PjJdLDB8YVtjKzM2Pj4yXSxmLHApO2JyZWFrfWw9MC0oMHxENCgwfGFbYyszNj4+Ml0sMHxh''@;'; put 'put ''W2wrMzY+PjJdLGYscCkpfDA7YnJlYWt9aWYoQSYmKDB8YVtjKzM2Pj4yXSk9PSgwfHApKXtsPS0xO2JyZWFrfWlmKCgwfG0pPT0oMHxmKSYmKDB8YVtjKzM2Pj4yXSk9PSgwfGYpKXtsPTE7YnJlYWt9bD0wfX13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIE44KGwsYyxmKXtyZXR1cm4g''@;'; put 'put ''MHwoKDB8KGx8PTApKT09KDB8KGZ8PTApKT8oKDB8KGN8PTApKT09KDB8ZikpPDwzMT4+MzE6MSl9ZnVuY3Rpb24gRDQobCxjLGYscCl7aWYoY3w9MCwoMHwobHw9MCkpPT0oMHwocHw9MCkpKXtpZihjPTA9PSgwfGwpKXJldHVybiAwO2MmPTF9cmV0dXJuKDAhPSgwfGwpfCgwfGMpIT0oMHwo''@;'; put 'put ''Znw9MCkpKTw8MzE+PjMxfDB9ZnVuY3Rpb24gYlIobCl7dmFyIGYsQSx3LGM9MCxwPTAsbT0wO0E9MHxhWzI4KyhsfD0wKT4+Ml0sdz0wfGFbbCsyND4+Ml0sZj0wfGFbbCszMj4+Ml0sbD0wO2U6Zm9yKDtwPWwrMXwwLCEoKDB8cCk+PSgwfHcpKTspZm9yKG09QSsobDw8Mil8MCxjPXA7Oyl7''@;'; put 'put ''aWYoKDB8Yyk9PSgwfHcpKXtsPXA7Y29udGludWUgZX1zd2l0Y2goMHx3OSgwfGFbbT4+Ml0sMHxhW0ErKGM8PDIpPj4yXSkpe2Nhc2UgMTp6MShmLGwsYyk7YnJlYWs7Y2FzZS0xOnoxKGYsYyxsKX1jPWMrMXwwfX1mdW5jdGlvbiBHTShsLGMpe2N8PTA7dmFyIGYsbSxwPTA7YVsobT0yNCso''@;'; put 'put ''bHw9MCl8MCk+PjJdPWY9MSsocD0wfGFbbT4+Ml0pfDAsYVtjKzQwPj4yXT1wLGw9KGw9MHxhWyhwPWwrMjh8MCk+PjJdKT8wfFYwKGwsZjw8Mik6MHxRbihmPDwyKSxhW3A+PjJdPWwsYVtsKygoMHxhW20+PjJdKS0xPDwyKT4+Ml09Y31mdW5jdGlvbiBXTShsLGMsZil7bHw9MCxjfD0wO3Zh''@;'; put 'put ''ciBBLHA9MCxtPTA7QT1sZSxsZT1sZSsxNnwwLF9bKG09QSk+PjNdPWY9K2YsKHA9MHxtaVs2MyZhW2w+PjJdXShsLG0sNTEyKSl8fChwPTB8dnIoMjQpLF9bcCs4Pj4zXT0rX1ttPj4zXSxhW3ArMTY+PjJdPTB8aXMoMjU3MjgsMHxhWzQ1ODFdKSxtaVs2MyZhW2w+PjJdXShsLHAsMSkpLG1p''@;'; put 'put ''WzYzJmFbKG09MHxhW3ArMTY+PjJdKT4+Ml1dKG0sYywxKSxsZT1BfWZ1bmN0aW9uIENpKGwsYyxmKXtsfD0wO3ZhciBBLHcscD0wLG09MDtBPTAhPSgwfGZlWzM2KyhjfD0wKT4+MF0pLHc9NDArKGZ8PTApfDA7ZG97aWYoKDB8YVtjKzI0Pj4yXSk9PSgwfGYpKXtpZihwPStfW3c+PjNdLEEp''@;'; put 'put ''e209LjUqKCtfW2YrNjQ+PjNdKyArX1tmKzQ4Pj4zXSk7YnJlYWt9bT0rX1tmKzQ4Pj4zXSxwPS41KigrX1tmKzU2Pj4zXStwKTticmVha31pZihBKXttPS41KigrX1tmKzY0Pj4zXSsgK19bZis0OD4+M10pLHA9K19bZis1Nj4+M107YnJlYWt9bT0rX1tmKzY0Pj4zXSxwPS41KigrX1tmKzU2''@;'; put 'put ''Pj4zXSsgK19bdz4+M10pO2JyZWFrfXdoaWxlKDApO19bbD4+M109cCxfW2wrOD4+M109bX1mdW5jdGlvbiBnYihsLGMpe3ZhciBmPTA7cmV0dXJuKDB8KGY9MHxhWzIwKyhsfD0wKT4+Ml0pKSE9KDB8YVsyMCsoY3w9MCk+PjJdKSYmKDB8ZikhPSgwfGFbYysyND4+Ml0pJiYoZj0wfGFbbCsy''@;'; put 'put ''ND4+Ml0pLDB8Zn1mdW5jdGlvbiBoMihsLGMpe3ZhciBmO2Y9LjUqKCtfWzY0KyhjfD0wKT4+M10rICtfW2MrNDg+PjNdKSxfWyhsfD0wKT4+M109LjUqKCtfW2MrNTY+PjNdKyArX1tjKzQwPj4zXSksX1tsKzg+PjNdPWZ9ZnVuY3Rpb24gYjkobCxjLGYscCxtLEEsdyl7Zj0rZixwPStwLG09''@;'; put 'put ''K20sQXw9MCx3fD0wO3ZhciBiPTAsaz0wO2ZlWyhsfD0wKT4+MF09Y3w9MCxfW2wrOD4+M109ZixwPG0/KGI9MCxrPUEsYz13LGY9cCxwPW0pOihiPTEsaz13LGM9QSxmPW0pLF9bbCsyND4+M109cCxfW2wrMTY+PjNdPWYsYVtsKzM2Pj4yXT1jLGFbbCszMj4+Ml09ayxmZVtsKzE+PjBdPWJ9''@;'; put 'put ''ZnVuY3Rpb24gbG0obCxjLGYpe2x8PTAsZnw9MDt2YXIgcD0wO3A9MHxhWzM2KyhjfD0wKT4+Ml07ZG97aWYoKDB8YVtwKzQ+PjJdKSE9KDB8Zikpe2lmKCgwfGFbcCsxMj4+Ml0pPT0oMHxmKSl7cD1+figuNSooK19bYys1Nj4+M10rICtfW2MrNDA+PjNdKSksZj1+fitfW2MrNDg+PjNdO2Jy''@;'; put 'put ''ZWFrfWlmKCgwfGFbcCs4Pj4yXSk9PSgwfGYpKXtwPX5+K19bYys0MD4+M10sZj1+figuNSooK19bYys2ND4+M10rICtfW2MrNDg+PjNdKSk7YnJlYWt9KDB8YVtwPj4yXSk9PSgwfGYpPyhwPX5+K19bYys1Nj4+M10sZj1+figuNSooK19bYys2ND4+M10rICtfW2MrNDg+PjNdKSkpOihwPTAs''@;'; put 'put ''Zj0wKX1lbHNlIHA9fn4oLjUqKCtfW2MrNTY+PjNdKyArX1tjKzQwPj4zXSkpLGY9fn4rX1tjKzY0Pj4zXX13aGlsZSgwKTthW2w+PjJdPXAsYVtsKzQ+PjJdPWZ9ZnVuY3Rpb24gQ1IobCl7bHw9MDt2YXIgZixwLGM9MCxtPTAsQT0wO2ZvcihmPTB8dnIoOCksYVtmPj4yXT1sLGFbKHA9Zis0''@;'; put 'put ''fDApPj4yXT0wfHZyKDEyKmx8MCksYz0wOyEoKDB8Yyk+PSgwfGwpKTspQT0wfE1FKCksYVsobT0wfGFbcD4+Ml0pKygxMipjfDApKzg+PjJdPUEsYVttKygxMipjfDApPj4yXT0wLGM9YysxfDA7cmV0dXJuIDB8Zn1mdW5jdGlvbiB6MShsLGMsZil7dmFyIHAsbTtsfD0wLGN8PTAscD1sZSxs''@;'; put 'put ''ZT1sZSsxNnwwLGFbKG09cCk+PjJdPWZ8PTAsbWlbNjMmYVsoZj0wfGFbKDB8YVtsKzQ+PjJdKSsoMTIqY3wwKSs4Pj4yXSk+PjJdXShmLG0sMSksbGU9cH1mdW5jdGlvbiBtZihsLGMsZil7dmFyIHAsbTtyZXR1cm4gbHw9MCxjfD0wLHA9bGUsbGU9bGUrMTZ8MCxhWyhtPXApPj4yXT1mfD0w''@;'; put 'put ''LGY9MCE9KDB8bWlbNjMmYVsoZj0wfGFbKDB8YVtsKzQ+PjJdKSsoMTIqY3wwKSs4Pj4yXSk+PjJdXShmLG0sNTEyKSkmMSxsZT1wLDB8Zn1mdW5jdGlvbiBZTShsKXt2YXIgYz0wLGY9MCxwPTAsbT0wO3N3aXRjaCgwfChjPTB8YVsobHw9MCk+PjJdKSl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTph''@;'; put 'put ''WzQrKDB8YVtsKzQ+PjJdKT4+Ml09MDticmVhaztkZWZhdWx0OmZvcihwPTB8ZnVuY3Rpb24gTDQobCl7bHw9MDt2YXIgYztyZXR1cm4gYz0wfHZyKDgpLGFbYys0Pj4yXT0wfHZyKGw8PDIpLGFbYz4+Ml09LTEsMHxjfShjKSxtPWwrNHwwLGY9MCxjPTA7Oyl7aWYoKDB8Zik+PSgwfGFbbD4+''@;'; put 'put ''Ml0pKXtjPTA7YnJlYWt9MHxhWygwfGFbbT4+Ml0pKygxMipmfDApPj4yXXx8KGM9MHxVTShsLGYsYyxwKSksZj1mKzF8MH1mb3IoOyEoKDB8KGY9MHxRTShwKSkpPD0tMSk7KWFbKDB8YVttPj4yXSkrKDEyKmZ8MCkrND4+Ml09YyxjPWMrMXwwOyFmdW5jdGlvbiBzbShsKXtGdCgwfGFbNCso''@;'; put 'put ''bHw9MCk+PjJdKSxGdChsKX0ocCl9fWZ1bmN0aW9uIFVNKGwsYyxmLHApe2Z8PTAscHw9MDt2YXIgdyxiLGssbT0wLEE9MDtmb3IoYVsoaz0oQT0wfGFbKGI9NCsobHw9MCl8MCk+PjJdKSsoMTIqKGN8PTApfDApfDApPj4yXT0xLHc9NCsoQT0wfGFbQSsoMTIqY3wwKSs4Pj4yXSl8MCxmPWYr''@;'; put 'put ''MXwwLEE9MHxzMChBKTtBOykwfGFbKDB8YVtiPj4yXSkrKDEyKihtPTB8YVsobT0oMHwobT0wfGFbOCsoMHxhW3c+PjJdKT4+Ml0pKTwwPzB8YVtBKzg+PjJdOkErKDAtbSl8MCk+PjJdKXwwKT4+Ml18fChmPTB8VU0obCxtLGYscCkpLEE9MHxhW0E+PjJdO3JldHVybiBhW2s+PjJdPTIsZnVu''@;'; put 'put ''Y3Rpb24gQzkobCxjKXtjfD0wO3ZhciBmO2FbKGx8PTApPj4yXT1mPTErKDB8YVtsPj4yXSl8MCxhWygwfGFbbCs0Pj4yXSkrKGY8PDIpPj4yXT1jfShwLGMpLGYrMXwwfWZ1bmN0aW9uIFFNKGwpe3ZhciBjLGY9MDtyZXR1cm4tMT09KDB8KGM9MHxhWyhsfD0wKT4+Ml0pKT9sPS0xOihmPTB8''@;'; put 'put ''YVsoMHxhW2wrND4+Ml0pKyhjPDwyKT4+Ml0sYVtsPj4yXT1jKy0xLGw9ZiksMHxsfWZ1bmN0aW9uIHVtKGwpe3ZhciBjLGY7cmV0dXJuIGFbKGY9MHxhWzE2KyhsfD0wKT4+Ml0pKyg0MCooYz0wfGFbbD4+Ml0pfDApKzMyPj4yXT1jLGFbbD4+Ml09YysxLGYrKDQwKmN8MCl8MH1mdW5jdGlv''@;'; put 'put ''biB2MyhsLGMsZixwKXtjfD0wLGZ8PTAscD0rcDt2YXIgbSxBPTA7cmV0dXJuIGFbKEE9NCsobHw9MCl8MCk+PjJdPTErKG09MHxhW0E+PjJdKSxsPShBPTB8YVtsKzIwPj4yXSkrKDI0Km18MCl8MCxhW0ErKDI0Km18MCkrMTI+PjJdPWFbYyszMj4+Ml0sYVtBKygyNCptfDApKzE2Pj4yXT1h''@;'; put 'put ''W2YrMzI+PjJdLF9bbD4+M109cCxhW0ErKDI0Km18MCkrOD4+Ml09MCxFUihjLG0pLEVSKGYsbSksMHxsfWZ1bmN0aW9uIEVSKGwsYyl7dmFyIGYscDthWygwfGFbMjgrKGx8PTApPj4yXSkrKChwPTB8aXRbKGY9bCsxNnwwKT4+MV0pPDwxNj4+MTY8PDIpPj4yXT1jfD0wLGl0W2Y+PjFdPXAr''@;'; put 'put ''MTw8MTY+PjE2fWZ1bmN0aW9uIFV6KGwsYyxmKXt2YXIgcD0wO3JldHVybigwfChwPTB8YVsxMisoY3w9MCk+PjJdKSk9PSgwfGFbMzIrKGZ8PTApPj4yXSkmJihwPTB8YVtjKzE2Pj4yXSksKDB8YVsxNisobHw9MCk+PjJdKSsoNDAqcHwwKXwwfWZ1bmN0aW9uIGs5KGwsYyl7dmFyIGY9MCxw''@;'; put 'put ''PTAsbT0wLEE9MCx3PTAsYj0wO0JBKEE9MHxhWyhsfD0wKT4+Ml0sMyxjfD0wKSxjPTB8YVtBKzkyPj4yXTtkb3tpZihjKXtpZihhW2wrNzY+PjJdPXc9MHxhWzEyKyhmPTB8YVtjKzE2Pj4yXSk+PjJdLGFbbCs4ND4+Ml09cD0wfGFbZisxNj4+Ml0sYVsobT1sKzgwfDApPj4yXT1hW2Y+PjJd''@;'; put 'put ''LGFbbCs4OD4+Ml09YVtjKzQ+PjJdLGFbKGY9bCsxNTJ8MCk+PjJdPXA9YVtmPj4yXXxhW3A+PjJdLGM9MHxhW0ErODA+PjJdKXthW2wrNjA+PjJdPWFbMTIrKEE9MHxhW2MrMTY+PjJdKT4+Ml0sYVtsKzY4Pj4yXT1iPTB8YVtBKzE2Pj4yXSxhW2wrNzI+PjJdPWFbYys0Pj4yXSxhW2Y+PjJd''@;'; put 'put ''PXB8YVtiPj4yXSxhW2wrNjQ+PjJdPWFbKDA9PSgwfHcpP206QSk+PjJdLGM9MzAwO2JyZWFrfWFbbCs2MD4+Ml09MCxjPTk5OTticmVha31jPTk5OX13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1bmN0aW9uIFRSKGwpe3ZhciBjLGY9MDtyZXR1cm4gYz0wfGFbNjArKGx8PTApPj4yXSwwfGZ1bmN0''@;'; put 'put ''aW9uIE5HKGwpe3ZhciB3LGssYz0wLGY9MCxwPTAsbT0wLEE9MCxiPTA7az1sZSxsZT1sZSsxNnwwLGI9ays4fDAsdz1rLHA9MHxhWyhsfD0wKT4+Ml0sMCE9KDB8KGM9MHxhW2wrNzY+PjJdKSkmJjAhPSgwfChmPTB8YVtjPj4yXSkpPyhDb1sxMjcmZl0obCksbT0xMik6bT00O2Rve2lmKDQ9''@;'; put 'put ''PSgwfG0pKWlmKDA9PSgwfGFbbCs0MD4+Ml0pJiYwPT0oMHxhWyhBPWwrMzZ8MCk+PjJdKSl7aWYoMHxmZVtwKzEzPj4wXSYmY3JlKGwpLCEoZj0wfGFbKGM9bCszMnwwKT4+Ml0pKXthW0E+PjJdPWFbMTU2NzldLG09MTI7YnJlYWt9cD0wfG5TKGYsMTA2NTEyKSxhW0E+PjJdPXAscD9tPTEy''@;'; put 'put ''OihiPTB8YVsxNisoMHxhW2wrMTI+PjJdKT4+Ml0sQT0wfGFbYz4+Ml0sYz0wfCRrKDB8YVs0NzY0M10pLGFbdz4+Ml09QSxhW3crND4+Ml09YyxHc1s2MyZiXSg5ODE2OSx3KSxjPTEpfWVsc2UgbT0xMn13aGlsZSgwKTtyZXR1cm4gMTI9PSgwfG0pJiYoMTAyNCZhW2wrMTUyPj4yXT8oR3Nb''@;'; put 'put ''NjMmYVsxNisoMHxhW2wrMTI+PjJdKT4+Ml1dKDk4MjA3LGIpLGM9MSk6Yz0wKSxsZT1rLDB8Y30obCk/bD0xOigwIT0oMHxjKSYmMCE9KDB8KGY9MHxhW2M+PjJdKSkmJkNvWzEyNyZmXShsKSxsPTApLDB8bH1mdW5jdGlvbiBTOShsKXt2YXIgYyxmPTA7MHwoYz0wfGFbNjArKGx8PTApPj4y''@;'; put 'put ''XSkmJjB8KGY9MHxhW2MrND4+Ml0pJiZDb1sxMjcmZl0obCksYVsyNCsoMHxhW2w+PjJdKT4+Ml09MCxmcmUobCl9ZnVuY3Rpb24gejgobCxjLGYpe2Z8PTA7dmFyIHcscD0wLG09MCxBPTA7cD0rX1s1MDQrKGN8PTApPj4zXSxtPStfW2MrNTEyPj4zXSwwfGFbYyszNjA+PjJdP0E9LShtKyAr''@;'; put 'put ''X1tmKzg+PjNdKTooQT0rX1tmPj4zXStwLGY9Zis4fDAscD1tKSxtPStfW2MrNTI4Pj4zXSoodz0rX1tjKzM1Mj4+M10pKigrX1tmPj4zXStwKSxfWyhsfD0wKT4+M109K19bYys1MjA+PjNdKncqQSxfW2wrOD4+M109bX1mdW5jdGlvbiBNaChsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIg''@;'; put 'put ''bSxBLGIsdz0wLGs9MDttPStfWzUwNCsobHw9MCk+PjNdLEE9K19bbCs1MTI+PjNdLGI9K19bbCs1MjA+PjNdKih3PStfW2wrMzUyPj4zXSksdyo9K19bbCs1Mjg+PjNdO2U6ZG97aWYoMHxhW2wrMzYwPj4yXSlmb3IobD0wOzspe2lmKCgwfGwpPj0oMHxwKSlicmVhayBlO2s9LWIqKCtfW2Mr''@;'; put 'put ''KGw8PDQpKzg+PjNdK0EpLF9bZisobDw8NCkrOD4+M109KCtfW2MrKGw8PDQpPj4zXSttKSp3LF9bZisobDw8NCk+PjNdPWssbD1sKzF8MH1lbHNlIGZvcihsPTA7Oyl7aWYoKDB8bCk+PSgwfHApKWJyZWFrIGU7X1tmKyhsPDw0KT4+M109KCtfW2MrKGw8PDQpPj4zXSttKSpiLF9bZisobDw8''@;'; put 'put ''NCkrOD4+M109KCtfW2MrKGw8PDQpKzg+PjNdK0EpKncsbD1sKzF8MH19d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBKeihsKXt2YXIgYz0wLGY9MDswfChjPTB8YVs2MCsobHw9MCk+PjJdKSYmMHwoZj0wfGFbYysxNj4+Ml0pJiZSY1szMSZmXShsLDB8YVsoMHxhWzMwOCsoMHxhW2w+''@;'; put 'put ''PjJdKT4+Ml0pKygoYz0wfGFbbCsxNjA+PjJdKTw8Mik+PjJdLGMsMHxhW2wrMTU2Pj4yXSl9ZnVuY3Rpb24gbWIobCl7dmFyIGMsZj0wOzB8KGM9MHxhWzYwKyhsfD0wKT4+Ml0pJiYwfChmPTB8YVtjKzIwPj4yXSkmJkNvWzEyNyZmXShsKX1mdW5jdGlvbiBHOChsKXt2YXIgYyxmPTA7MHwo''@;'; put 'put ''Yz0wfGFbNjArKGx8PTApPj4yXSkmJjB8KGY9MHxhW2MrNDA+PjJdKSYmQ29bMTI3JmZdKGwpfWZ1bmN0aW9uIGNtKGwpe3ZhciBjLGY9MDswfChjPTB8YVs2MCsobHw9MCk+PjJdKSYmMHwoZj0wfGFbYys0ND4+Ml0pJiZDb1sxMjcmZl0obCl9ZnVuY3Rpb24gWWYobCl7dmFyIGMsZj0wOzB8''@;'; put 'put ''KGM9MHxhWzYwKyhsfD0wKT4+Ml0pJiYwfChmPTB8YVtjKzQ4Pj4yXSkmJkNvWzEyNyZmXShsKX1mdW5jdGlvbiBmbShsKXt2YXIgYyxmPTA7MHwoYz0wfGFbNjArKGx8PTApPj4yXSkmJjB8KGY9MHxhW2MrNTI+PjJdKSYmQ29bMTI3JmZdKGwpfWZ1bmN0aW9uIEcxKGwsYyxmLHAsbSl7dmFy''@;'; put 'put ''IEEsdz0wOzB8KEE9MHxhWzYwKyhsfD0wKT4+Ml0pJiYwfCh3PTB8YVtBKzcyPj4yXSkmJnA4WzE1JnddKGwsY3w9MCxmfD0wLHB8PTAsbXw9MCl9ZnVuY3Rpb24gRWgobCl7dmFyIGMsZj0wOzB8KGM9MHxhWzYwKyhsfD0wKT4+Ml0pJiYwfChmPTB8YVtjKzc2Pj4yXSkmJkNvWzEyNyZmXShs''@;'; put 'put ''KX1mdW5jdGlvbiBXOChsLGMpe3ZhciBmLHA9MDswfChmPTB8YVs2MCsobHw9MCk+PjJdKSYmMHwocD0wfGFbZis4MD4+Ml0pJiZHc1s2MyZwXShsLGN8PTApfWZ1bmN0aW9uIE80KGwpe3ZhciBjLGY9MDswfChjPTB8YVs2MCsobHw9MCk+PjJdKSYmMHwoZj0wfGFbYys4ND4+Ml0pJiZDb1sx''@;'; put 'put ''MjcmZl0obCl9ZnVuY3Rpb24gaG0obCxjLGYpe2N8PTA7dmFyIHAsQSx3LGIsayxtPTAsTT0wO2s9bGUsbGU9bGUrNDh8MCxwPWsrMzJ8MCxBPWssdz1rKzE2fDAsYj0wfGFbNjArKGx8PTApPj4yXSxNPTB8YVsoZnw9MCk+PjJdO2Rve2lmKDB8TSYmMHxmZVtNPj4wXSl7aWYoMHwoTT0wfGFb''@;'; put 'put ''bCsxNj4+Ml0pJiYwPT0oMHxhW00rMTQ0Pj4yXSkpYnJlYWs7ODE5MiZhW2wrMTUyPj4yXT8oYVtBPj4yXT1hW2M+PjJdLGFbQSs0Pj4yXT1hW2MrND4+Ml0sYVtBKzg+PjJdPWFbYys4Pj4yXSxhW0ErMTI+PjJdPWFbYysxMj4+Ml0pOihhW3A+PjJdPWFbYz4+Ml0sYVtwKzQ+PjJdPWFbYys0''@;'; put 'put ''Pj4yXSxhW3ArOD4+Ml09YVtjKzg+PjJdLGFbcCsxMj4+Ml09YVtjKzEyPj4yXSx6OCh3LGwscCksYVtBPj4yXT1hW3c+PjJdLGFbQSs0Pj4yXT1hW3crND4+Ml0sYVtBKzg+PjJdPWFbdys4Pj4yXSxhW0ErMTI+PjJdPWFbdysxMj4+Ml0pLDB8YiYmMHwobT0wfGFbYis4OD4+Ml0pJiYoYVtw''@;'; put 'put ''Pj4yXT1hW0E+PjJdLGFbcCs0Pj4yXT1hW0ErND4+Ml0sYVtwKzg+PjJdPWFbQSs4Pj4yXSxhW3ArMTI+PjJdPWFbQSsxMj4+Ml0sZGxbMTI3Jm1dKGwscCxmKSl9fXdoaWxlKDApO2xlPWt9ZnVuY3Rpb24gbWEobCxjKXt2YXIgcCxtLEEsdyxmPTA7cD0wfGFbNjArKGx8PTApPj4yXSxtPTE2''@;'; put 'put ''KygwfGFbbCsxNj4+Ml0pfDAsKEE9MCE9KDB8KHc9MHwkcyhjfD0wLDU4KSkpKSYmKGZlW3c+PjBdPTApLDB8cCYmKHU2KDB8YVtsKzY4Pj4yXSxjLG0pLDB8KGY9MHxhW3ArOTI+PjJdKSkmJkdzWzYzJmZdKGwsbSksQSYmKGZlW3c+PjBdPTU4KX1mdW5jdGlvbiB1NihsLGMsZil7bHw9MDt2''@;'; put 'put ''YXIgcCxtLEEsYixrLE0sdz0wO009bGUsbGU9bGUrMzJ8MCxBPU0rMTZ8MCxrPU0rOHwwLGI9TSxhWyhmfD0wKT4+Ml09Y3w9MCxhW2YrMzI+PjJdPTUscD0wfHZtKGMpLDAhPSgwfChtPTB8YVtsKzE2Pj4yXSkpJiYwIT0oMHxudyhwLG0sMHxhW2wrMjA+PjJdLDQsMTAyKSl8fCh3PTMpO2U6''@;'; put 'put ''ZG97aWYoMz09KDB8dykpe3N3aXRjaCgwfFMzKGMsZiwwfGFbbCsyND4+Ml0pKXtjYXNlIDA6YnJlYWsgZTtjYXNlIDE6YnJlYWs7ZGVmYXVsdDokcigxLDExMTA0NixBKTticmVhayBlfWw9MHxRbigxNisoMHxVbyhjKSl8MCksYVtiPj4yXT1jLG9vKGwsMTExMDExLGIpLDB8Z3ZlKGwpJiYo''@;'; put 'put ''YVtrPj4yXT1jLCRyKDAsMTExMDIwLGspKSxGdChsKX19d2hpbGUoMCk7bGU9TX1mdW5jdGlvbiBobChsLGMpe3ZhciBwLG0sQSx3LGY9MDtwPTB8YVs2MCsobHw9MCk+PjJdLG09NTYrKDB8YVtsKzE2Pj4yXSl8MCwoQT0wIT0oMHwodz0wfCRzKGN8PTAsNTgpKSkpJiYoZmVbdz4+MF09MCks''@;'; put 'put ''MHxwJiYodTYoMHxhW2wrNjg+PjJdLGMsbSksMHwoZj0wfGFbcCs5Mj4+Ml0pKSYmR3NbNjMmZl0obCxtKSxBJiYoZmVbdz4+MF09NTgpfWZ1bmN0aW9uIFVmKGwsYyxmLHApe2Z8PTAscD0rcDt2YXIgQSx3LG09MCxiPTA7Yj05NisoMHxhWyh3PTE2KyhsfD0wKXwwKT4+Ml0pfDAsMHwoQT0w''@;'; put 'put ''fGFbbCs2MD4+Ml0pJiYodTYoMHxhW2wrNjg+PjJdLGN8PTAsYiksMHwobT0wfGFbQSs5Mj4+Ml0pKSYmR3NbNjMmbV0obCxiKSxhWzEzNisoYj0wfGFbdz4+Ml0pPj4yXT1mLGpuW2IrMTQwPj4yXT1wfWZ1bmN0aW9uIGQyKGwsYyl7dmFyIGIsayxmPTAscD0wLG09MCxBPTAsdz0wO2s9bGUs''@;'; put 'put ''bGU9bGUrMTZ8MCxiPWssdz0wfGFbNjArKGx8PTApPj4yXSxhWzE2MCsobD0wfGFbbCsxNj4+Ml0pPj4yXT1jfD0wO2U6ZG97aWYoMCE9KDB8YykmMCE9KDB8dykpe3c9bCsxNDR8MCxBPWwrMTUyfDAsbT1sKzE0OHwwLGw9Yzt0OmZvcig7Oyl7aWYocD1sKzR8MCwhKGw9MHxhW2w+PjJdKSli''@;'; put 'put ''cmVhayBlO246ZG97c3dpdGNoKDB8ZmVbbD4+MF0pe2Nhc2UgMTE1OmlmKCEoMHxaaShsLDExMTA2NykpKXthW3c+PjJdPTMsbD1wO2NvbnRpbnVlIHR9aWYoISgwfFppKGwsMTExMDg4KSkpe2ZvcihmPTExNTtjPWwrMXwwLGY8PDI0Pj4yNDspbD1jLGY9MHxmZVtjPj4wXTtfW0E+PjNdPStr''@;'; put 'put ''cChjKSxsPXA7Y29udGludWUgdH1icmVhaztjYXNlIDEwMDppZighKDB8WmkobCwxMzczMjcpKSl7YVt3Pj4yXT0xLGw9cDtjb250aW51ZSB0fWlmKCEoMHxaaShsLDEzNzMyMCkpKXthW3c+PjJdPTIsbD1wO2NvbnRpbnVlIHR9YnJlYWs7Y2FzZSAxMDU6aWYoMHxaaShsLDEzNDMzNSkmJjB8''@;'; put 'put ''WmkobCwxMTEwNzMpKWJyZWFrIG47YVt3Pj4yXT0wLGw9cDtjb250aW51ZSB0O2Nhc2UgOTg6aWYoISgwfFppKGwsMTExMDgzKSkpe19bQT4+M109MixsPXA7Y29udGludWUgdH1icmVhaztjYXNlIDEwMjppZighKDB8WmkobCwxMTExMDEpKSl7YVttPj4yXT0xLGw9cDtjb250aW51ZSB0fWJy''@;'; put 'put ''ZWFrO2Nhc2UgMTE3OmlmKCEoMHxaaShsLDExMTEwOCkpKXthW20+PjJdPTAsbD1wO2NvbnRpbnVlIHR9YnJlYWs7Y2FzZSAxMTY6aWYoISgwfFppKGwsMTExMTE3KSkpe2w9cDtjb250aW51ZSB0fX19d2hpbGUoMCk7YVtiPj4yXT1sLCRyKDAsMTExMTI1LGIpLGw9cH19fXdoaWxlKDApO2xl''@;'; put 'put ''PWt9ZnVuY3Rpb24gJHUobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIEEsYixtPTAsdz0wO2I9bGUsbGU9bGUrMzJ8MCxBPWIsMHwoZj0wfGFbNjArKGx8PTApPj4yXSkmJjB8KG09MHxhWyh3PWYrOTZ8MCk+PjJdKSYmMHxhWzE0NCsoMHxhW2wrMTY+PjJdKT4+Ml0mJihfW0E+PjNdPS41''@;'; put 'put ''KigrX1soZj1jKzE2fDApPj4zXSsgK19bYz4+M10pLF9bQSs4Pj4zXT0uNSooK19bYysyND4+M10rICtfW2MrOD4+M10pLGFbKGM9QSsxNnwwKT4+Ml09YVtmPj4yXSxhW2MrND4+Ml09YVtmKzQ+PjJdLGFbYys4Pj4yXT1hW2YrOD4+Ml0sYVtjKzEyPj4yXT1hW2YrMTI+PjJdLDgxOTImYVts''@;'; put 'put ''KzE1Mj4+Ml18fChNaChsLEEsQSwyKSxtPTB8YVt3Pj4yXSksZGxbMTI3Jm1dKGwsQSxwKSksbGU9Yn1mdW5jdGlvbiBrYShsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgRCxHLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLFI9MDtpZihHPWxlLGxlPWxlKzQ4fDAsRD1HLDB8KG09MHxhWzYw''@;'; put 'put ''KyhsfD0wKT4+Ml0pJiYwfGFbKFI9bSsxMDB8MCk+PjJdJiYwfGFbMTQ0KyhrPTB8YVsoTT1sKzE2fDApPj4yXSk+PjJdKXtpZig0JnApe209LTUmcCx3PXA9aysxNnwwLGI9KEE9RCkrNDB8MDtkb3thW0E+PjJdPWFbdz4+Ml0sQT1BKzR8MCx3PXcrNHwwfXdoaWxlKCgwfEEpPCgwfGIpKTt3''@;'; put 'put ''PWsrNTZ8MCxiPShBPXApKzQwfDA7ZG97YVtBPj4yXT1hW3c+PjJdLEE9QSs0fDAsdz13KzR8MH13aGlsZSgoMHxBKTwoMHxiKSk7QT0xfWVsc2UgbT1wLEE9MDtpZig4MTkyJmFbbCsxNTI+PjJdP1JjWzMxJmFbUj4+Ml1dKGwsYyxmLG0pOihwPWYrMTB8MCwoMHxhWzQ3MzYzXSk8KDB8Zik/''@;'; put 'put ''KGFbNDczNjNdPXAscD0wfFYwKDB8YVs0NzM2NF0scDw8NCksYVs0NzM2NF09cCk6cD0wfGFbNDczNjRdLE1oKGwsYyxwLGYpLFJjWzMxJmFbUj4+Ml1dKGwscCxmLG0pKSwwfEEpe3c9RCxiPTQwKyhBPTE2KygwfGFbTT4+Ml0pfDApfDA7ZG97YVtBPj4yXT1hW3c+PjJdLEE9QSs0fDAsdz13''@;'; put 'put ''KzR8MH13aGlsZSgoMHxBKTwoMHxiKSl9fWxlPUd9ZnVuY3Rpb24geTMobCxjLGYpe3ZhciBwLG0sQTtsfD0wLGZ8PTAscD1sZSxsZT1sZSs2NHwwLGFbKG09cCk+PjJdPWFbKGN8PTApPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEyPj4yXT1hW2Mr''@;'; put 'put ''MTI+PjJdLGFbKEE9bSszMnwwKT4+Ml09YVsoYz1jKzE2fDApPj4yXSxhW0ErND4+Ml09YVtjKzQ+PjJdLGFbQSs4Pj4yXT1hW2MrOD4+Ml0sYVtBKzEyPj4yXT1hW2MrMTI+PjJdLF9bbSsxNj4+M109K19bbT4+M10sX1ttKzI0Pj4zXT0rX1ttKzQwPj4zXSxfW20rNDg+PjNdPStfW0E+PjNd''@;'; put 'put ''LF9bbSs1Nj4+M109K19bbSs4Pj4zXSxrYShsLG0sNCxmKSxsZT1wfWZ1bmN0aW9uIFFmKGwsYyxmLHAsbSxBKXtjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTA7dmFyIGIsdz0wLGs9MDtiPTB8YVs2MCsobHw9MCk+PjJdO2Rve2lmKDB8YiYmMHwodz0wfGFbKGs9YisxMDR8MCk+PjJdKSYmMHxh''@;'; put 'put ''WzE0NCsoMHxhW2wrMTY+PjJdKT4+Ml0pe2lmKDgxOTImYVtsKzE1Mj4+Ml18MCl7aHZbMTUmd10obCxjLGYscCxtLDI1NSZBKTticmVha313PWYrMTB8MCwoMHxhWzQ3MzYzXSk8KDB8Zik/KGFbNDczNjNdPXcsdz0wfFYwKDB8YVs0NzM2NF0sdzw8NCksYVs0NzM2NF09dyk6dz0wfGFbNDcz''@;'; put 'put ''NjRdLE1oKGwsYyx3LGYpLGh2WzE1JmFbaz4+Ml1dKGwsdyxmLHAsbSwyNTUmQSl9fXdoaWxlKDApfWZ1bmN0aW9uIFdvKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wO3A9MHxhWzYwKyhsfD0wKT4+Ml07ZG97aWYoMHxwJiYwfChtPTB8YVsoQT1wKzEwOHwwKT4+Ml0pJiYwfGFb''@;'; put 'put ''MTQ0KygwfGFbbCsxNj4+Ml0pPj4yXSl7aWYoODE5MiZhW2wrMTUyPj4yXXwwKXtkbFsxMjcmbV0obCxjLGYpO2JyZWFrfXA9ZisxMHwwLCgwfGFbNDczNjNdKTwoMHxmKT8oYVs0NzM2M109cCxwPTB8VjAoMHxhWzQ3MzY0XSxwPDw0KSxhWzQ3MzY0XT1wKTpwPTB8YVs0NzM2NF0sTWgobCxj''@;'; put 'put ''LHAsZiksZGxbMTI3JmFbQT4+Ml1dKGwscCxmKX19d2hpbGUoMCl9ZnVuY3Rpb24gZG0obCxjKXt2YXIgZixwPTA7Zj0wfGFbNjArKGx8PTApPj4yXSwwfChjfD0wKSYmISgwPT0oMHxmKXwwPT0oMHxmZVtjPj4wXSkpJiYwfChwPTB8YVtmKzExMj4+Ml0pJiZHc1s2MyZwXShsLGMpfWZ1bmN0''@;'; put 'put ''aW9uIHRFKGwsYyxmLHAsbSxBKXtjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTA7dmFyIFJlLEhlLHJ0LFdlLGF0LFN0LGt0LHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxMZT0wLFZlPTAscWU9MCxzdD0wO2lmKGt0PWxlLGxlPWxlKzExMnwwLHJ0''@;'; put 'put ''PWt0KzY0fDAsU3Q9a3QsTT1rdCs5NnwwLFJlPWt0KzQ4fDAsSGU9a3QrMzJ8MCxXZT0wfGFbNjArKGx8PTApPj4yXSxsfHxQcigxMTEyODIsMTExMTc4LDY5MSwxMTExODkpLGN8fFByKDExMTIwOCwxMTExNzgsNjkyLDExMTE4OSksMHxmZVtjPj4wXXx8UHIoMTExMjEzLDExMTE3OCw2OTMs''@;'; put 'put ''MTExMTg5KSxhdD0wfHByZShjKSl7aWYoYVtydD4+Ml09YVsocGU9bCs0MzJ8MCk+PjJdLGFbcnQrND4+Ml09YVtwZSs0Pj4yXSxhW3J0Kzg+PjJdPWFbcGUrOD4+Ml0sYVtydCsxMj4+Ml09YVtwZSsxMj4+Ml0sbXJlKE0sYXQscnQpLCEoKDB8KHBlPTB8YVtNPj4yXSkpPDEmKDB8KGs9MHxh''@;'; put 'put ''W00rND4+Ml0pKTwxKSl7Zm9yKGFbKE09U3QrMTZ8MCk+PjJdPWFbZj4+Ml0sYVtNKzQ+PjJdPWFbZis0Pj4yXSxhW00rOD4+Ml09YVtmKzg+PjJdLGFbTSsxMj4+Ml09YVtmKzEyPj4yXSxhW1N0Pj4yXT1hW2Y+PjJdLGFbU3QrND4+Ml09YVtmKzQ+PjJdLGFbU3QrOD4+Ml09YVtmKzg+PjJd''@;'; put 'put ''LGFbU3QrMTI+PjJdPWFbZisxMj4+Ml0sVmU9U3QrOHwwLHFlPVN0KzI0fDAsYz0xOyEoKDB8Yyk+PSgwfHApKTspX1tTdD4+M109K19bKCtfW1N0Pj4zXTwoT2U9K19bKHN0PWYrKGM8PDQpfDApPj4zXSk/U3Q6c3QpPj4zXSxfW1ZlPj4zXT0rX1soK19bVmU+PjNdPChMZT0rX1tmKyhjPDw0''@;'; put 'put ''KSs4Pj4zXSk/U3Q6c3QpKzg+PjNdLF9bTT4+M109K19bKCtfW00+PjNdPk9lP006c3QpPj4zXSxfW3FlPj4zXT0rX1soK19bcWU+PjNdPkxlP006c3QpKzg+PjNdLGM9YysxfDA7Rz0oZ2U9KGI9K19bTT4+M10pLSh3PStfW1N0Pj4zXSkpLyhSPSsoMHxwZSkpLHE9KExlPShiZT0rX1txZT4+''@;'; put 'put ''M10pLShPZT0rX1tWZT4+M10pKS8oRD0rKDB8aykpO2U6ZG97c3dpdGNoKDB8bkUoQSkpe2Nhc2UgMTppZihHPHEpe1IqPUcsRCo9RzticmVhayBlfVIqPXEsRCo9cTticmVhayBlO2Nhc2UgMjpSKj1HO2JyZWFrO2Nhc2UgMzpEKj1xO2JyZWFrO2Nhc2UgNDpSKj1HLEQqPXF9fXdoaWxlKDAp''@;'; put 'put ''O1I8Z2UmJihfW1N0Pj4zXT13Kz1nZT0uNSooZ2UtUiksX1tNPj4zXT1iLT1nZSksRDxMZSYmKF9bVmU+PjNdPU9lKyhMZT0uNSooTGUtRCkpLF9bcWU+PjNdPWJlLUxlKSw4MTkyJmFbbCsxNTI+PjJdfHwoYVtydD4+Ml09YVtTdD4+Ml0sYVtydCs0Pj4yXT1hW1N0KzQ+PjJdLGFbcnQrOD4+''@;'; put 'put ''Ml09YVtTdCs4Pj4yXSxhW3J0KzEyPj4yXT1hW1N0KzEyPj4yXSx6OChSZSxsLHJ0KSxhW1N0Pj4yXT1hW1JlPj4yXSxhW1N0KzQ+PjJdPWFbUmUrND4+Ml0sYVtTdCs4Pj4yXT1hW1JlKzg+PjJdLGFbU3QrMTI+PjJdPWFbUmUrMTI+PjJdLGFbcnQ+PjJdPWFbTT4+Ml0sYVtydCs0Pj4yXT1h''@;'; put 'put ''W00rND4+Ml0sYVtydCs4Pj4yXT1hW00rOD4+Ml0sYVtydCsxMj4+Ml09YVtNKzEyPj4yXSx6OChIZSxsLHJ0KSxhW00+PjJdPWFbSGU+PjJdLGFbTSs0Pj4yXT1hW0hlKzQ+PjJdLGFbTSs4Pj4yXT1hW0hlKzg+PjJdLGFbTSsxMj4+Ml09YVtIZSsxMj4+Ml0sYj0rX1tNPj4zXSx3PStfW1N0''@;'; put 'put ''Pj4zXSksdz5iJiYoX1tTdD4+M109YixfW00+PjNdPXcpLCh3PStfW1ZlPj4zXSk+KGI9K19bcWU+PjNdKSYmKF9bVmU+PjNdPWIsX1txZT4+M109dyksMHxXZSYmKHN0PTB8YVtsKzcyPj4yXSxhW3J0Pj4yXT1hW1N0Pj4yXSxhW3J0KzQ+PjJdPWFbU3QrND4+Ml0sYVtydCs4Pj4yXT1hW1N0''@;'; put 'put ''Kzg+PjJdLGFbcnQrMTI+PjJdPWFbU3QrMTI+PjJdLGFbcnQrMTY+PjJdPWFbU3QrMTY+PjJdLGFbcnQrMjA+PjJdPWFbU3QrMjA+PjJdLGFbcnQrMjQ+PjJdPWFbU3QrMjQ+PjJdLGFbcnQrMjg+PjJdPWFbU3QrMjg+PjJdLGZ1bmN0aW9uIE9SKGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAs''@;'; put 'put ''bXw9MDt2YXIgQSxiLGssRCx3PTAsTT0wO0Q9bGUsbGU9bGUrMTc2fDAsaz1EKzh8MCxiPUQsQT1EKzQwfDAsKGx8PTApfHxQcigxMTEyODIsMTExMjg2LDUyLDExMTMwMCksY3x8UHIoMTExMzEyLDExMTI4Niw1MywxMTEzMDApLCh3PTB8YVtjKzg+PjJdKXx8UHIoMTExMzE1LDExMTI4Niw1''@;'; put 'put ''NCwxMTEzMDApLDB8ZmVbdz4+MF18fFByKDExMTMyNCwxMTEyODYsNTUsMTExMzAwKSxyZChBLDB8YVtjKzI4Pj4yXSksdz1BKygwfFVvKEEpKXwwLGZlW3c+PjBdPTU4LGZlW3crMT4+MF09MCxzdihBLG0pLDk5OT09KDB8ZnVuY3Rpb24gWHoobCxjKXtyZXR1cm4oYz0wfEJBKDB8YVsobHw9''@;'; put 'put ''MCk+PjJdLDQsY3w9MCkpPyhhW2wrOTI+PjJdPWFbMTIrKGM9MHxhW2MrMTY+PjJdKT4+Ml0sYVtsKzk2Pj4yXT1hW2M+PjJdLGM9MzAwKTpjPTk5OSwwfGN9KGwsQSkpJiYoYVtiPj4yXT1BLCRyKDAsMTExMzM2LGIpKSwwfChtPTB8YVtsKzkyPj4yXSkmJjB8KE09MHxhW20+PjJdKSYmKGFb''@;'; put 'put ''az4+Ml09YVtmPj4yXSxhW2srND4+Ml09YVtmKzQ+PjJdLGFbays4Pj4yXT1hW2YrOD4+Ml0sYVtrKzEyPj4yXT1hW2YrMTI+PjJdLGFbaysxNj4+Ml09YVtmKzE2Pj4yXSxhW2srMjA+PjJdPWFbZisyMD4+Ml0sYVtrKzI0Pj4yXT1hW2YrMjQ+PjJdLGFbaysyOD4+Ml09YVtmKzI4Pj4yXSxS''@;'; put 'put ''Y1szMSZNXShsLGMsayxwKSksbGU9RH0obCxhdCxydCxtLHN0KSl9fWVsc2UgMCE9KDB8V2UpJjAhPSgwfGxOKGMpKSYmMHwoaz0wfGFbV2UrMTE2Pj4yXSkmJnA4WzE1JmtdKGwsYyxmLHAsMjU1Jm0pO2xlPWt0fWZ1bmN0aW9uIG5FKGwpe3JldHVybiAwfCgwfGZlWyhsfD0wKT4+MF0/MHx5''@;'; put 'put ''MChsLDE0MTExNik/MHx5MChsLDE0MTA0OCk/MHx5MChsLDExMTIyMSk/KDB8dDEobCkpPDwyND4+MjQhPTAmMTo0OjM6MjowKX1mdW5jdGlvbiB4aChsLGMpe2M9K2MsMHxhWzYwKyhsfD0wKT4+Ml0mJihfWzE1MisoMHxhW2wrMTY+PjJdKT4+M109Yyl9ZnVuY3Rpb24gckUobCxjKXtyZXR1''@;'; put 'put ''cm4oYz0wfEJBKGx8PTAsMSxjfD0wKSk/KGFbbCsxODQ+PjJdPWFbNCsoYz0wfGFbYysxNj4+Ml0pPj4yXSxhW2wrMTcyPj4yXT1hW2MrMTI+PjJdLGFbbCsxNzY+PjJdPWFbYz4+Ml0sYVtsKzE4MD4+Ml09YVtjKzE2Pj4yXSxjPTMwMCk6Yz05OTksMHxjfWZ1bmN0aW9uIEU5KGwsYyl7bHw9''@;'; put 'put ''MDt2YXIgcCxtLEEsdyxiLGssZj0wO3A9bGUsbGU9bGUrODB8MCxtPXAsaz1wKzMyfDAsYVsoZj1wKzQ4fDApPj4yXT1hWyhjfD0wKT4+Ml0sYVtmKzQ+PjJdPWFbYys0Pj4yXSxhW2YrOD4+Ml09YVtjKzg+PjJdLGFbZisxMj4+Ml09YVtjKzEyPj4yXSxmdW5jdGlvbiBQUihsLGMsZil7Znw9''@;'; put 'put ''MDt2YXIgcD0wLG09MCxBPTAsdz0wOzB8YVszNjArKGN8PTApPj4yXT8obT0tK19bZj4+M10sQT1wPStfW2MrMzUyPj4zXSx3PWMrNTIwfDAscD0rX1tmKzg+PjNdLygrX1tjKzUyOD4+M10qcCktK19bYys1MDQ+PjNdKToobT0rX1tmKzg+PjNdLEE9cD0rX1tjKzM1Mj4+M10sdz1jKzUyOHww''@;'; put 'put ''LHA9K19bZj4+M10vKCtfW2MrNTIwPj4zXSpwKS0rX1tjKzUwND4+M10pLEE9bS8oK19bdz4+M10qQSktK19bYys1MTI+PjNdLF9bKGx8PTApPj4zXT1wLF9bbCs4Pj4zXT1BfShrLGwsZiksdz0rX1trKzg+PjNdLF9bbSsxNj4+M109KEE9MS8rX1tsKzM1Mj4+M10pKyhiPStfW2s+PjNdKSxf''@;'; put 'put ''W20rMjQ+PjNdPUErdyxfW20+PjNdPWItQSxfW20rOD4+M109dy1BLGM9MHxhWzE2OCsoMHxhW2w+PjJdKT4+Ml0sYVtmPj4yXT1hW20+PjJdLGFbZis0Pj4yXT1hW20rND4+Ml0sYVtmKzg+PjJdPWFbbSs4Pj4yXSxhW2YrMTI+PjJdPWFbbSsxMj4+Ml0sYVtmKzE2Pj4yXT1hW20rMTY+PjJd''@;'; put 'put ''LGFbZisyMD4+Ml09YVttKzIwPj4yXSxhW2YrMjQ+PjJdPWFbbSsyND4+Ml0sYVtmKzI4Pj4yXT1hW20rMjg+PjJdLGM9MHxmdW5jdGlvbiBGUihsLGMpe2N8PTA7dmFyIG0sQSxmPTAscD0wO0E9bGUsbGU9bGUrMzJ8MCxtPUEscD0wfER0KGx8PTApO2U6Zm9yKDs7KXtpZighcCl7cD05O2Jy''@;'; put 'put ''ZWFrfWZvcihmPTB8dzAobCxwKTtmOyl7aWYoYVttPj4yXT1hW2M+PjJdLGFbbSs0Pj4yXT1hW2MrND4+Ml0sYVttKzg+PjJdPWFbYys4Pj4yXSxhW20rMTI+PjJdPWFbYysxMj4+Ml0sYVttKzE2Pj4yXT1hW2MrMTY+PjJdLGFbbSsyMD4+Ml09YVtjKzIwPj4yXSxhW20rMjQ+PjJdPWFbYysy''@;'; put 'put ''ND4+Ml0sYVttKzI4Pj4yXT1hW2MrMjg+PjJdLCgwfGtKKGYsbSkpPDwyND4+MjQpe3A9NjticmVhayBlfWY9MHxTMChsLGYpfXA9MHx6dChsLHApfWRve2lmKDYhPSgwfHApJiY5PT0oMHxwKSl7Zm9yKGY9MHxQbihsKTtmOyl7aWYoYVttPj4yXT1hW2M+PjJdLGFbbSs0Pj4yXT1hW2MrND4+''@;'; put 'put ''Ml0sYVttKzg+PjJdPWFbYys4Pj4yXSxhW20rMTI+PjJdPWFbYysxMj4+Ml0sYVttKzE2Pj4yXT1hW2MrMTY+PjJdLGFbbSsyMD4+Ml09YVtjKzIwPj4yXSxhW20rMjQ+PjJdPWFbYysyND4+Ml0sYVttKzI4Pj4yXT1hW2MrMjg+PjJdLCgwfEJsZShmLG0pKTw8MjQ+PjI0KXtwPTEyO2JyZWFr''@;'; put 'put ''fWY9MHxUbihsLGYpfWlmKDEyPT0oMHxwKXx8KGFbbT4+Ml09YVtjPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLGFbbSsxNj4+Ml09YVtjKzE2Pj4yXSxhW20rMjA+PjJdPWFbYysyMD4+Ml0sYVttKzI0Pj4yXT1hW2Mr''@;'; put 'put ''MjQ+PjJdLGFbbSsyOD4+Ml09YVtjKzI4Pj4yXSxmPTB8Z20obCxtKSkpYnJlYWs7Zj1sO2JyZWFrfX13aGlsZSgwKTtyZXR1cm4gbGU9QSwwfGZ9KGMsZiksKDB8YykhPSgwfGFbKGY9bCs1NzZ8MCk+PjJdKSYmKGZ1bmN0aW9uIEhSKGwpe3ZhciBjPTA7Yz0wfGFbNTc2KyhsfD0wKT4+Ml07''@;'; put 'put ''ZTpkb3tpZigwfGMpc3dpdGNoKDB8a2koYykpe2Nhc2UgMDpmZVsoYz0xMTIrKDB8YVtjKzE2Pj4yXSl8MCk+PjBdPS0yJmZlW2M+PjBdO2JyZWFrIGU7Y2FzZSAxOmZlWyhjPTExNysoMHxhW2MrMTY+PjJdKXwwKT4+MF09LTImZmVbYz4+MF07YnJlYWsgZTtjYXNlIDI6ZmVbKGM9MTE1Kygw''@;'; put 'put ''fGFbYysxNj4+Ml0pfDApPj4wXT0tMiZmZVtjPj4wXTticmVhayBlO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoMCk7YVtsKzU4ND4+Ml09MH0obCksYVtmPj4yXT1jLGZ1bmN0aW9uIHVFKGwpe3ZhciBmLGM9MDswfChjPTB8YVsoZj01ODQrKGx8PTApfDApPj4yXSkmJihGdChjKSxhW2Y+PjJd''@;'; put 'put ''PTApLGM9MHxhW2wrNTc2Pj4yXTtlOmRve2lmKDB8Yylzd2l0Y2goMHxraShjKSl7Y2FzZSAwOmlmKGZlWyhsPTExMisoMHxhW2MrMTY+PjJdKXwwKT4+MF09MXxmZVtsPj4wXSwhKGw9MHxzaShjLDAsMTQxMTAxLDApKSlicmVhayBlO2FbZj4+Ml09MHxtMigwfEhvKGMsbCksYyk7YnJlYWsg''@;'; put 'put ''ZTtjYXNlIDE6aWYoZmVbKGw9MTE3KygwfGFbYysxNj4+Ml0pfDApPj4wXT0xfGZlW2w+PjBdLCEobD0wfHNpKDB8Y3IoYyksMSwxNDExMDEsMCkpKWJyZWFrIGU7YVtmPj4yXT0wfG0yKDB8SG8oYyxsKSxjKTticmVhayBlO2Nhc2UgMjppZihmZVsobD0xMTUrKDB8YVtjKzE2Pj4yXSl8MCk+''@;'; put 'put ''PjBdPTF8ZmVbbD4+MF0sIShsPTB8c2koMHxjcigwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpjKy00OHwwKSs0MD4+Ml0pLDIsMTQxMTAxLDApKSlicmVhayBlO2FbZj4+Ml09MHxtMigwfEhvKGMsbCksYyk7YnJlYWsgZTtkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKDApfShsKSxmZVtsKzUzNz4+''@;'; put 'put ''MF09MSksbGU9cH1mdW5jdGlvbiBnbShsLGMpe2N8PTA7dmFyIHAsQSx3LGIsTSxmPTAsbT0wLGs9MDtmb3IoTT1sZSxsZT1sZSszMnwwLHA9TSx3PTB8YVsxODArKEE9MHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSxiPUErMTg0fDAsZj0xOzspe2lmKCgwfGYpPigwfHcpKXtrPTQ7YnJlYWt9aWYo''@;'; put 'put ''bT0wfGFbKDB8YVtiPj4yXSkrKGY8PDIpPj4yXSxhW3A+PjJdPWFbYz4+Ml0sYVtwKzQ+PjJdPWFbYys0Pj4yXSxhW3ArOD4+Ml09YVtjKzg+PjJdLGFbcCsxMj4+Ml09YVtjKzEyPj4yXSxhW3ArMTY+PjJdPWFbYysxNj4+Ml0sYVtwKzIwPj4yXT1hW2MrMjA+PjJdLGFbcCsyND4+Ml09YVtj''@;'; put 'put ''KzI0Pj4yXSxhW3ArMjg+PjJdPWFbYysyOD4+Ml0sbT0wfGdtKG0scCkpe2w9bTticmVha31mPWYrMXwwfWRve2lmKDQ9PSgwfGspKXtpZigrX1tjKzE2Pj4zXT49K19bQSsxNj4+M10mJitfW0ErMzI+PjNdPj0rX1tjPj4zXSYmK19bYysyND4+M10+PStfW0ErMjQ+PjNdJiYrX1tBKzQwPj4z''@;'; put 'put ''XT49K19bYys4Pj4zXSlicmVhaztsPTB9fXdoaWxlKDApO3JldHVybiBsZT1NLDB8bH1mdW5jdGlvbiBZOChsLGMpe2N8PTA7dmFyIG0sZj0wLHA9MCxBPTA7Zj01OTIrKGx8PTApfDA7ZG97aWYoKDB8ZGkoYykpPT0oMHxjKSl7aWYoMHxTYyhjKSl7Z3UoZiwwLDExMTQ4Nik7YnJlYWt9Z3Uo''@;'; put 'put ''ZiwwLDExMTQ5NCk7YnJlYWt9Z3UoZiwwLDExMTUwMCl9d2hpbGUoMCk7Zm9yKGd1KGYsMSwwfHRpKGMpKSxhW2wrNTk2Pj4yXT0yLG09bCs2MDR8MCxmPTAscD0yO2Y9MHxOcyhjLDAsZik7KWd1KG0scCwwfGFbZis4Pj4yXSksZ3UobSxwKzF8MCwwfEhvKGMsZikpLGd1KG0scCsyfDAsMCks''@;'; put 'put ''cD1wKzN8MDthW2wrNjA4Pj4yXT1wLCgoZj0wfHNpKGMsMCwxNDEwNTUsMCkpfHwwfChmPTB8c2koYywwLDExMTQ3NywwKSkpJiYoQT0xMSksMTE9PSgwfEEpJiYoYVtsKzU4OD4+Ml09MHxtMigwfEhvKGMsZiksYykpfWZ1bmN0aW9uIGIzKGwsYyl7Y3w9MDt2YXIgQSxmPTAscD0wLG09MCx3''@;'; put 'put ''PTA7Zm9yKGd1KG09NTkyKyhsfD0wKXwwLDAsMTExNDgxKSxndShtLDEsMHx0aShjKSksYVtsKzU5Nj4+Ml09MixtPWwrNjA0fDAsQT0wfGRpKDB8Y3IoYykpLHA9MixmPTA7Zj0wfE5zKEEsMSxmKTspZ3UobSxwLDB8YVtmKzg+PjJdKSxndShtLDF8cCwwfEhvKGMsZikpLHA9cCsyfDA7YVts''@;'; put 'put ''KzYwOD4+Ml09cCwoKGY9MHxzaSgwfGNyKGMpLDEsMTQxMDU1LDApKXx8MHwoZj0wfHNpKDB8Y3IoYyksMSwxMTE0NzcsMCkpKSYmKHc9NiksNj09KDB8dykmJihhW2wrNTg4Pj4yXT0wfG0yKDB8SG8oYyxmKSxjKSl9ZnVuY3Rpb24gYTIobCxjKXtjfD0wO3ZhciB3LGIsayxmPTAscD0wLG09''@;'; put 'put ''MCxBPTAsTT0wLEQ9MDtndSh3PTU5MisobHw9MCl8MCwwLDExMTQ1MCksTT1jKzQ4fDAsZ3UodywxLDB8dGkoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6TSkrNDA+PjJdKSksZ3UodywzLChNPTAhPSgwfFNjKDB8Y3IoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6TSkrNDA+PjJdKSkpKT8xMzc3''@;'; put 'put ''Mzg6MTQxNzQ3KSxNPWMrLTQ4fDAsZ3Uodyw0LDB8dGkoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6TSkrNDA+PjJdKSksYVtsKzU5Nj4+Ml09NyxiPWwrNjA0fDAsaz0wfGRpKDB8Y3IoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6TSkrNDA+PjJdKSksQT03LGY9MDtlOmZvcig7Oyl7Zm9yKDs7''@;'; put 'put ''KXtpZighKGY9MHxOcyhrLDIsZikpKWJyZWFrIGU7aWYoISgwfFppKG09MHxhWyhwPWYrOHwwKT4+Ml0sMTExNDU1KSkpe0Q9NTticmVha31pZighKDB8WmkobSwxMTE0NjQpKSl7RD03O2JyZWFrfWlmKDB8WmkobSwxMTE0NzMpKWJyZWFrO2d1KHcsNiwwfEhvKGMsZikpfTU9PSgwfEQpPyhE''@;'; put 'put ''PTAsZ3UodywyLDB8SG8oYyxmKSkpOjc9PSgwfEQpJiYoRD0wLGd1KHcsNSwwfEhvKGMsZikpKSxndShiLEEsMHxhW3A+PjJdKSxndShiLEErMXwwLDB8SG8oYyxmKSksQT1BKzJ8MH1hW2wrNjA4Pj4yXT1BLCgoZj0wfHNpKDB8Y3IoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6TSkrNDA+PjJd''@;'; put 'put ''KSwyLDE0MTA1NSwwKSl8fDB8KGY9MHxzaSgwfGNyKDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOk0pKzQwPj4yXSksMiwxMTE0NzcsMCkpKSYmKEQ9MTMpLDEzPT0oMHxEKSYmKGFbbCs1ODg+PjJdPTB8bTIoMHxIbyhjLGYpLGMpKX1mdW5jdGlvbiBVOChsLGMsZil7dmFyIEEscD0wLG09MDtm''@;'; put 'put ''b3IoQT0wfGZ1bmN0aW9uIF8zKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcDtyZXR1cm4gcD0wfFFuKDEyKSxjPWM/MHxyYShjKTowLGFbcCs0Pj4yXT1jLGFbcCs4Pj4yXT0wfHJhKGYpLGFbcD4+Ml09YVsoZj1sKzEwMHwwKT4+Ml0sYVtmPj4yXT1wLDB8cH0obHw9MCxjfD0wLDB8YVso''@;'; put 'put ''Znw9MCk+PjJdKSxmPTB8YVtmKzQ+PjJdO209MHxhW2YrND4+Ml07KXtmb3IoYz0wO3A9MHxhW20rKDIwKmN8MCkrND4+Ml07KUdHKGwsMHxhW2Y+PjJdLHAsMHxhW20rKDIwKmN8MCkrOD4+Ml0sQSxtKygyMCpjfDApfDApLGM9YysxfDA7Zj1mKzh8MH19ZnVuY3Rpb24gZkUobCxjLGYpe2x8''@;'; put 'put ''PTAsY3w9MDt2YXIgTGUsSGUsVmUscWUscnQsV2UsYXQsU3Qsa3Qsc3QsRXQsWnQsY3QsYnQsYW4sU24sSG4scD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLFJlPTA7SG49bGUsbGU9bGUrNDY0fDAsYnQ9SG4rNDE2fDAsU249''@;'; put 'put ''SG4rNDAwfDAsRXQ9SG4rMzg0fDAsTT1IbiszNTJ8MCxEPUhuKzMyMHwwLFI9SG4rMjg4fDAsRz1IbisyNTZ8MCxwZT1IbisyMjR8MCxnZT1IbisxOTJ8MCxiZT1IbisxNjB8MCxPZT1IbisxMjh8MCxMZT1Ibis5NnwwLEhlPUhuKzY0fDAsVmU9SG4rMzJ8MCxadD1IbixydD0uMTI1KigyKihw''@;'; put 'put ''PStfWyhxZT0wfGFbMzIrKGZ8PTApPj4yXSk+PjNdKSsgK19bKGF0PWYrMTZ8MCk+PjNdKSxhbj0uNSooMiorX1soU3Q9cWUrOHwwKT4+M10rKHc9K19bKGN0PWYrMjR8MCk+PjNdKSkscWV8fFByKDExMTUzMywxMTE1NDMsNDQ1LDExMTU1MyksQT0obT1idCkrMzZ8MDtkb3thW20+PjJdPTAs''@;'; put 'put ''bT1tKzR8MH13aGlsZSgoMHxtKTwoMHxBKSk7X1soV2U9cWUrMTZ8MCk+PjNdPStfW2Y+PjNdLXAsX1soc3Q9cWUrMjR8MCk+PjNdPXcrICtfWyhrdD1mKzh8MCk+PjNdLHdjKE0sYyxmLGJ0KSxiPTB8YVtNPj4yXSxtPTB8YVtNKzQ+PjJdLHA9K19bTSs4Pj4zXSxhW1NuPj4yXT1hWyhNPU0r''@;'; put 'put ''MTZ8MCk+PjJdLGFbU24rND4+Ml09YVtNKzQ+PjJdLGFbU24rOD4+Ml09YVtNKzg+PjJdLGFbU24rMTI+PjJdPWFbTSsxMj4+Ml07ZTpkb3tpZihiKXtpZihfW3N0Pj4zXT0rX1trdD4+M10sd2MoRCxjLGYsYnQpLEE9MHxhW0Q+PjJdLE09MHxhW0QrND4+Ml0sdz0rX1tEKzg+PjNdLGFbRXQ+''@;'; put 'put ''PjJdPWFbKEQ9RCsxNnwwKT4+Ml0sYVtFdCs0Pj4yXT1hW0QrND4+Ml0sYVtFdCs4Pj4yXT1hW0QrOD4+Ml0sYVtFdCsxMj4+Ml09YVtEKzEyPj4yXSwhQSl7YVtsPj4yXT0wLGFbbCs0Pj4yXT1NLF9bbCs4Pj4zXT13LGFbKGw9bCsxNnwwKT4+Ml09YVtFdD4+Ml0sYVtsKzQ+PjJdPWFbRXQr''@;'; put 'put ''ND4+Ml0sYVtsKzg+PjJdPWFbRXQrOD4+Ml0sYVtsKzEyPj4yXT1hW0V0KzEyPj4yXTticmVha31pZih3PHA/KGFbU24+PjJdPWFbRXQ+PjJdLGFbU24rND4+Ml09YVtFdCs0Pj4yXSxhW1NuKzg+PjJdPWFbRXQrOD4+Ml0sYVtTbisxMj4+Ml09YVtFdCsxMj4+Ml0sbT1NLHA9dyk6QT1iLF9b''@;'; put 'put ''c3Q+PjNdPStfW2t0Pj4zXS0rX1tTdD4+M10sd2MoUixjLGYsYnQpLE09MHxhW1I+PjJdLGI9MHxhW1IrND4+Ml0sdz0rX1tSKzg+PjNdLGFbRXQ+PjJdPWFbKFI9UisxNnwwKT4+Ml0sYVtFdCs0Pj4yXT1hW1IrND4+Ml0sYVtFdCs4Pj4yXT1hW1IrOD4+Ml0sYVtFdCsxMj4+Ml09YVtSKzEy''@;'; put 'put ''Pj4yXSwhTSl7YVtsPj4yXT0wLGFbbCs0Pj4yXT1iLF9bbCs4Pj4zXT13LGFbKGw9bCsxNnwwKT4+Ml09YVtFdD4+Ml0sYVtsKzQ+PjJdPWFbRXQrND4+Ml0sYVtsKzg+PjJdPWFbRXQrOD4+Ml0sYVtsKzEyPj4yXT1hW0V0KzEyPj4yXTticmVha31pZih3PHA/KGFbU24+PjJdPWFbRXQ+PjJd''@;'; put 'put ''LGFbU24rND4+Ml09YVtFdCs0Pj4yXSxhW1NuKzg+PjJdPWFbRXQrOD4+Ml0sYVtTbisxMj4+Ml09YVtFdCsxMj4+Ml0sbT1iLHA9dyk6TT1BLF9bV2U+PjNdPStfW2Y+PjNdLF9bc3Q+PjNdPStfW2N0Pj4zXSsgK19ba3Q+PjNdLHdjKEcsYyxmLGJ0KSxBPTB8YVtHPj4yXSxiPTB8YVtHKzQ+''@;'; put 'put ''PjJdLHc9K19bRys4Pj4zXSxhW0V0Pj4yXT1hWyhHPUcrMTZ8MCk+PjJdLGFbRXQrND4+Ml09YVtHKzQ+PjJdLGFbRXQrOD4+Ml09YVtHKzg+PjJdLGFbRXQrMTI+PjJdPWFbRysxMj4+Ml0sIUEpe2FbbD4+Ml09MCxhW2wrND4+Ml09YixfW2wrOD4+M109dyxhWyhsPWwrMTZ8MCk+PjJdPWFb''@;'; put 'put ''RXQ+PjJdLGFbbCs0Pj4yXT1hW0V0KzQ+PjJdLGFbbCs4Pj4yXT1hW0V0Kzg+PjJdLGFbbCsxMj4+Ml09YVtFdCsxMj4+Ml07YnJlYWt9aWYodzxwJiYoYVtTbj4+Ml09YVtFdD4+Ml0sYVtTbis0Pj4yXT1hW0V0KzQ+PjJdLGFbU24rOD4+Ml09YVtFdCs4Pj4yXSxhW1NuKzEyPj4yXT1hW0V0''@;'; put 'put ''KzEyPj4yXSxNPUEsbT1iLHA9dyksX1tzdD4+M109K19ba3Q+PjNdLStfW1N0Pj4zXSx3YyhwZSxjLGYsYnQpLEE9MHxhW3BlPj4yXSxiPTB8YVtwZSs0Pj4yXSx3PStfW3BlKzg+PjNdLGFbRXQ+PjJdPWFbKHBlPXBlKzE2fDApPj4yXSxhW0V0KzQ+PjJdPWFbcGUrND4+Ml0sYVtFdCs4Pj4y''@;'; put 'put ''XT1hW3BlKzg+PjJdLGFbRXQrMTI+PjJdPWFbcGUrMTI+PjJdLCFBKXthW2w+PjJdPTAsYVtsKzQ+PjJdPWIsX1tsKzg+PjNdPXcsYVsobD1sKzE2fDApPj4yXT1hW0V0Pj4yXSxhW2wrND4+Ml09YVtFdCs0Pj4yXSxhW2wrOD4+Ml09YVtFdCs4Pj4yXSxhW2wrMTI+PjJdPWFbRXQrMTI+PjJd''@;'; put 'put ''O2JyZWFrfWlmKHc8cCYmKGFbU24+PjJdPWFbRXQ+PjJdLGFbU24rND4+Ml09YVtFdCs0Pj4yXSxhW1NuKzg+PjJdPWFbRXQrOD4+Ml0sYVtTbisxMj4+Ml09YVtFdCsxMj4+Ml0sTT1BLG09YixwPXcpLF9bV2U+PjNdPStfW2F0Pj4zXSsgK19bZj4+M10sX1tzdD4+M109K19bY3Q+PjNdKyAr''@;'; put 'put ''X1trdD4+M10sd2MoZ2UsYyxmLGJ0KSxBPTB8YVtnZT4+Ml0sYj0wfGFbZ2UrND4+Ml0sdz0rX1tnZSs4Pj4zXSxhW0V0Pj4yXT1hWyhnZT1nZSsxNnwwKT4+Ml0sYVtFdCs0Pj4yXT1hW2dlKzQ+PjJdLGFbRXQrOD4+Ml09YVtnZSs4Pj4yXSxhW0V0KzEyPj4yXT1hW2dlKzEyPj4yXSwhQSl7''@;'; put 'put ''YVtsPj4yXT0wLGFbbCs0Pj4yXT1iLF9bbCs4Pj4zXT13LGFbKGw9bCsxNnwwKT4+Ml09YVtFdD4+Ml0sYVtsKzQ+PjJdPWFbRXQrND4+Ml0sYVtsKzg+PjJdPWFbRXQrOD4+Ml0sYVtsKzEyPj4yXT1hW0V0KzEyPj4yXTticmVha31pZih3PHAmJihhW1NuPj4yXT1hW0V0Pj4yXSxhW1NuKzQ+''@;'; put 'put ''PjJdPWFbRXQrND4+Ml0sYVtTbis4Pj4yXT1hW0V0Kzg+PjJdLGFbU24rMTI+PjJdPWFbRXQrMTI+PjJdLE09QSxtPWIscD13KSxfW3N0Pj4zXT0rX1trdD4+M10sd2MoYmUsYyxmLGJ0KSxBPTB8YVtiZT4+Ml0sYj0wfGFbYmUrND4+Ml0sdz0rX1tiZSs4Pj4zXSxhW0V0Pj4yXT1hWyhiZT1i''@;'; put 'put ''ZSsxNnwwKT4+Ml0sYVtFdCs0Pj4yXT1hW2JlKzQ+PjJdLGFbRXQrOD4+Ml09YVtiZSs4Pj4yXSxhW0V0KzEyPj4yXT1hW2JlKzEyPj4yXSwhQSl7YVtsPj4yXT0wLGFbbCs0Pj4yXT1iLF9bbCs4Pj4zXT13LGFbKGw9bCsxNnwwKT4+Ml09YVtFdD4+Ml0sYVtsKzQ+PjJdPWFbRXQrND4+Ml0s''@;'; put 'put ''YVtsKzg+PjJdPWFbRXQrOD4+Ml0sYVtsKzEyPj4yXT1hW0V0KzEyPj4yXTticmVha31pZih3PHAmJihhW1NuPj4yXT1hW0V0Pj4yXSxhW1NuKzQ+PjJdPWFbRXQrND4+Ml0sYVtTbis4Pj4yXT1hW0V0Kzg+PjJdLGFbU24rMTI+PjJdPWFbRXQrMTI+PjJdLE09QSxtPWIscD13KSxfW3N0Pj4z''@;'; put 'put ''XT0rX1trdD4+M10tK19bU3Q+PjNdLHdjKE9lLGMsZixidCksQT0wfGFbT2U+PjJdLGI9MHxhW09lKzQ+PjJdLHc9K19bT2UrOD4+M10sYVtFdD4+Ml09YVsoT2U9T2UrMTZ8MCk+PjJdLGFbRXQrND4+Ml09YVtPZSs0Pj4yXSxhW0V0Kzg+PjJdPWFbT2UrOD4+Ml0sYVtFdCsxMj4+Ml09YVtP''@;'; put 'put ''ZSsxMj4+Ml0sIUEpe2FbbD4+Ml09MCxhW2wrND4+Ml09YixfW2wrOD4+M109dyxhWyhsPWwrMTZ8MCk+PjJdPWFbRXQ+PjJdLGFbbCs0Pj4yXT1hW0V0KzQ+PjJdLGFbbCs4Pj4yXT1hW0V0Kzg+PjJdLGFbbCsxMj4+Ml09YVtFdCsxMj4+Ml07YnJlYWt9dzxwPyhhW1NuPj4yXT1hW0V0Pj4y''@;'; put 'put ''XSxhW1NuKzQ+PjJdPWFbRXQrND4+Ml0sYVtTbis4Pj4yXT1hW0V0Kzg+PjJdLGFbU24rMTI+PjJdPWFbRXQrMTI+PjJdLG09YixwPXcpOkE9TSxiPTA9PSgwfGFbYnQrMjg+PjJdKTtkb3tpZigwfGFbYnQrMjQ+PjJdKVJlPWI/Mzg6NDY7ZWxzZSBpZihiKXtpZigwfGFbYnQrMzI+PjJdKXtS''@;'; put 'put ''ZT0zODticmVha30wPT0oMHxhW2J0KzEyPj4yXSkmMD09KDB8YVtidD4+Ml0pfHwoUmU9MzgpfWVsc2UgUmU9NDZ9d2hpbGUoMCk7dDpkb3tpZigzOD09KDB8UmUpKXtpZighKDB8YVtidCszMj4+Ml0pKXtfW1dlPj4zXT0rX1tmPj4zXS0rX1txZT4+M10sRz1MZSs0fDAscGU9TGUrOHwwLGdl''@;'; put 'put ''PUxlKzE2fDAsTT1zdCxiPWt0LHc9K19bY3Q+PjNdO246Zm9yKDs7KXtmb3IoOzspe2lmKF9bTT4+M109K19bYj4+M10rdywhKCtfW1dlPj4zXTw9K19bYXQ+PjNdKyArX1tmPj4zXSkpe1JlPTQ2O2JyZWFrIHR9aWYod2MoTGUsYyxmLGJ0KSxEPTB8YVtMZT4+Ml0sUj0wfGFbRz4+Ml0saz0r''@;'; put 'put ''X1twZT4+M10sYVtFdD4+Ml09YVtnZT4+Ml0sYVtFdCs0Pj4yXT1hW2dlKzQ+PjJdLGFbRXQrOD4+Ml09YVtnZSs4Pj4yXSxhW0V0KzEyPj4yXT1hW2dlKzEyPj4yXSwhRClicmVhayBuO2lmKGs8cClicmVhaztNPVdlLGI9V2Usdz1ydH1hW1NuPj4yXT1hW0V0Pj4yXSxhW1NuKzQ+PjJdPWFb''@;'; put 'put ''RXQrND4+Ml0sYVtTbis4Pj4yXT1hW0V0Kzg+PjJdLGFbU24rMTI+PjJdPWFbRXQrMTI+PjJdLE09V2UsYj1XZSx3PXJ0LEE9RCxtPVIscD1rfWFbbD4+Ml09MCxhW2wrND4+Ml09UixfW2wrOD4+M109ayxhWyhsPWwrMTZ8MCk+PjJdPWFbRXQ+PjJdLGFbbCs0Pj4yXT1hW0V0KzQ+PjJdLGFb''@;'; put 'put ''bCs4Pj4yXT1hW0V0Kzg+PjJdLGFbbCsxMj4+Ml09YVtFdCsxMj4+Ml07YnJlYWsgZX1SZT00Nn19d2hpbGUoMCk7dDpkb3tpZig0Nj09KDB8UmUpJiYwPT0oMHxhW2J0KzEyPj4yXSkmMD09KDB8YVtidD4+Ml0pKXtmb3IoX1tXZT4+M109K19bZj4+M10tK19bcWU+PjNdLEQ9SGUrNHwwLFI9''@;'; put 'put ''SGUrOHwwLEc9SGUrMTZ8MCx3PWs9K19ba3Q+PjNdLGs9K19bY3Q+PjNdK2s7Oyl7aWYoX1tzdD4+M109aywhKGs+PXctK19bU3Q+PjNdKSlicmVhayB0O2lmKHdjKEhlLGMsZixidCksYj0wfGFbSGU+PjJdLE09MHxhW0Q+PjJdLHc9K19bUj4+M10sYVtFdD4+Ml09YVtHPj4yXSxhW0V0KzQ+''@;'; put 'put ''PjJdPWFbRys0Pj4yXSxhW0V0Kzg+PjJdPWFbRys4Pj4yXSxhW0V0KzEyPj4yXT1hW0crMTI+PjJdLCFiKWJyZWFrO3c8cCYmKGFbU24+PjJdPWFbRXQ+PjJdLGFbU24rND4+Ml09YVtFdCs0Pj4yXSxhW1NuKzg+PjJdPWFbRXQrOD4+Ml0sYVtTbisxMj4+Ml09YVtFdCsxMj4+Ml0sQT1iLG09''@;'; put 'put ''TSxwPXcpLHc9K19ba3Q+PjNdLGs9K19bc3Q+PjNdLWFufWFbbD4+Ml09MCxhW2wrND4+Ml09TSxfW2wrOD4+M109dyxhWyhsPWwrMTZ8MCk+PjJdPWFbRXQ+PjJdLGFbbCs0Pj4yXT1hW0V0KzQ+PjJdLGFbbCs4Pj4yXT1hW0V0Kzg+PjJdLGFbbCsxMj4+Ml09YVtFdCsxMj4+Ml07YnJlYWsg''@;'; put 'put ''ZX19d2hpbGUoMCk7X1tXZT4+M109az0rX1thdD4+M10rKHc9K19bZj4+M10pLF9bc3Q+PjNdPStfW2t0Pj4zXS0ocT0rX1tTdD4+M10pLGI9MHxhW2J0KzQ+PjJdO2Rve2lmKDB8YVtidCs4Pj4yXSlNPTB8YVtidD4+Ml0sUmU9NTk7ZWxzZXtpZighKDA9PSgwfGIpJjA9PSgwfChNPTB8YVti''@;'; put 'put ''dD4+Ml0pKSkpe1JlPTU5O2JyZWFrfWlmKDB8YVtidCsyMD4+Ml0pe2I9MCxNPTAsUmU9NTk7YnJlYWt9MHxhW2J0KzMyPj4yXSYmKGI9MCxNPTAsUmU9NTkpfX13aGlsZSgwKTt0OmRve2lmKDU5PT0oMHxSZSkpe246ZG97aWYoMD09KDB8YikmMD09KDB8TSkpe19bV2U+PjNdPWssRz1WZSs0''@;'; put 'put ''fDAscGU9VmUrOHwwLGdlPVZlKzE2fDAsTT1zdCxiPWt0LHc9cTtyOmZvcig7Oyl7Zm9yKDs7KXtpZihfW00+PjNdPStfW2I+PjNdLXcsISgrX1tXZT4+M10+PSh3PStfW2Y+PjNdKS0rX1txZT4+M10pKWJyZWFrIG47aWYod2MoVmUsYyxmLGJ0KSxEPTB8YVtWZT4+Ml0sUj0wfGFbRz4+Ml0s''@;'; put 'put ''az0rX1twZT4+M10sYVtFdD4+Ml09YVtnZT4+Ml0sYVtFdCs0Pj4yXT1hW2dlKzQ+PjJdLGFbRXQrOD4+Ml09YVtnZSs4Pj4yXSxhW0V0KzEyPj4yXT1hW2dlKzEyPj4yXSwhRClicmVhayByO2lmKGs8cClicmVhaztNPVdlLGI9V2Usdz1ydH1hW1NuPj4yXT1hW0V0Pj4yXSxhW1NuKzQ+PjJd''@;'; put 'put ''PWFbRXQrND4+Ml0sYVtTbis4Pj4yXT1hW0V0Kzg+PjJdLGFbU24rMTI+PjJdPWFbRXQrMTI+PjJdLE09V2UsYj1XZSx3PXJ0LEE9RCxtPVIscD1rfWFbbD4+Ml09MCxhW2wrND4+Ml09UixfW2wrOD4+M109ayxhWyhsPWwrMTZ8MCk+PjJdPWFbRXQ+PjJdLGFbbCs0Pj4yXT1hW0V0KzQ+PjJd''@;'; put 'put ''LGFbbCs4Pj4yXT1hW0V0Kzg+PjJdLGFbbCsxMj4+Ml09YVtFdCsxMj4+Ml07YnJlYWsgZX19d2hpbGUoMCk7aWYoMHxhW2J0KzIwPj4yXXx8MHxhW2J0KzMyPj4yXSlicmVhaztmb3IoX1tXZT4+M109K19bYXQ+PjNdK3csRD1adCs0fDAsUj1adCs4fDAsRz1adCsxNnwwLGs9dz0rX1trdD4+''@;'; put 'put ''M10sdy09K19bU3Q+PjNdOzspe2lmKF9bc3Q+PjNdPXcsISh3PD0rX1tjdD4+M10raykpYnJlYWsgdDtpZih3YyhadCxjLGYsYnQpLGI9MHxhW1p0Pj4yXSxNPTB8YVtEPj4yXSx3PStfW1I+PjNdLGFbRXQ+PjJdPWFbRz4+Ml0sYVtFdCs0Pj4yXT1hW0crND4+Ml0sYVtFdCs4Pj4yXT1hW0cr''@;'; put 'put ''OD4+Ml0sYVtFdCsxMj4+Ml09YVtHKzEyPj4yXSwhYilicmVhazt3PHAmJihhW1NuPj4yXT1hW0V0Pj4yXSxhW1NuKzQ+PjJdPWFbRXQrND4+Ml0sYVtTbis4Pj4yXT1hW0V0Kzg+PjJdLGFbU24rMTI+PjJdPWFbRXQrMTI+PjJdLEE9YixtPU0scD13KSxrPStfW2t0Pj4zXSx3PStfW3N0Pj4z''@;'; put 'put ''XSthbn1hW2w+PjJdPTAsYVtsKzQ+PjJdPU0sX1tsKzg+PjNdPXcsYVsobD1sKzE2fDApPj4yXT1hW0V0Pj4yXSxhW2wrND4+Ml09YVtFdCs0Pj4yXSxhW2wrOD4+Ml09YVtFdCs4Pj4yXSxhW2wrMTI+PjJdPWFbRXQrMTI+PjJdO2JyZWFrIGV9fXdoaWxlKDApO2FbbD4+Ml09QSxhW2wrND4+''@;'; put 'put ''Ml09bSxfW2wrOD4+M109cCxhWyhsPWwrMTZ8MCk+PjJdPWFbU24+PjJdLGFbbCs0Pj4yXT1hW1NuKzQ+PjJdLGFbbCs4Pj4yXT1hW1NuKzg+PjJdLGFbbCsxMj4+Ml09YVtTbisxMj4+Ml19ZWxzZSBhW2w+PjJdPTAsYVtsKzQ+PjJdPW0sX1tsKzg+PjNdPXAsbD1sKzE2fDAsYVtsPj4yXT1h''@;'; put 'put ''W1NuPj4yXSxhW2wrND4+Ml09YVtTbis0Pj4yXSxhW2wrOD4+Ml09YVtTbis4Pj4yXSxhW2wrMTI+PjJdPWFbU24rMTI+PjJdfXdoaWxlKDApO2xlPUhufWZ1bmN0aW9uIHdjKGwsYyxmLHApe2x8PTAsY3w9MCxwfD0wO3ZhciBSLEcsZ2UsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLHE9''@;'; put 'put ''MCxwZT0wO2ZvcihnZT1sZSxsZT1sZSs0OHwwLEc9Z2UrMzJ8MCxwZT1nZSsxNnwwLFI9Z2UsKG09MHxhWzMyKyhmfD0wKT4+Ml0pfHxQcigxMTE1MzMsMTExNTQzLDM4MiwxMTE1NjIpLGFbUj4+Ml09YVsoRD1tKzE2fDApPj4yXSxhW1IrND4+Ml09YVtEKzQ+PjJdLGFbUis4Pj4yXT1hW0Qr''@;'; put 'put ''OD4+Ml0sYVtSKzEyPj4yXT1hW0QrMTI+PjJdLEQ9Yys0fDAsaz0wLG09MDshKCgwfGspPj0oMHxhW0Q+PjJdKSk7KXtiPSh3PTB8YVtjPj4yXSkrKDQwKmt8MCl8MDtkb3tpZigoMHxiKSE9KDB8Zikpe2lmKCtfW3crKDQwKmt8MCkrMTY+PjNdPjAmJitfW3crKDQwKmt8MCkrMjQ+PjNdPjAp''@;'; put 'put ''YnJlYWs7bT1tKygwIT0oMHxSNChmLGIpKSYxKXwwfX13aGlsZSgwKTtrPWsrMXwwfWlmKFRoKGYsRyksaz0wfE40KGs9MHxhW2MrMjQ+PjJdLDB8YVtrPj4yXSxHKSl7Zm9yKGI9ayxBPTA7YjspKDB8KHc9MHxhWzE2KygwfGFbYis0Pj4yXSk+PjJdKSkhPSgwfGYpJiYoQWYodyxwZSksKE09''@;'; put 'put ''K0MzKEcscGUpKT4wJiYobT1tKzF8MCxBPStKOChmLHcsRyxNLHApK0EpLDAhPSgwfChjPTB8YVt3KzMyPj4yXSkpJiYwIT0oMHxmZVtjKzM2Pj4wXSkmJihUaCh3LHBlKSwocT0rQzMoRyxwZSkpPjApJiYobT1tKzF8MCxBPStqUihmLHcsRyxxLHApK0EpKSxiPTB8YVtiPj4yXTsoZnVuY3Rp''@;'; put 'put ''b24gejkobCl7bHw9MDt2YXIgYz0wO2Rve2M9bCxsPTB8YVtsPj4yXSxGdChjKX13aGlsZSgwIT0oMHxsKSl9KShrKSxhW2w+PjJdPW0sX1tsKzg+PjNdPUEsYVsocGU9bCsxNnwwKT4+Ml09YVtSPj4yXSxhW3BlKzQ+PjJdPWFbUis0Pj4yXSxhW3BlKzg+PjJdPWFbUis4Pj4yXSxhW3BlKzEy''@;'; put 'put ''Pj4yXT1hW1IrMTI+PjJdfWVsc2UgYVtsPj4yXT1tLF9bbCs4Pj4zXT0wLGFbKHBlPWwrMTZ8MCk+PjJdPWFbUj4+Ml0sYVtwZSs0Pj4yXT1hW1IrND4+Ml0sYVtwZSs4Pj4yXT1hW1IrOD4+Ml0sYVtwZSsxMj4+Ml09YVtSKzEyPj4yXTtsZT1nZX1mdW5jdGlvbiBSNChsLGMpe3ZhciBmPTAs''@;'; put 'put ''cD0wLG09MCxBPTA7cmV0dXJuIGw9MHxhWzMyKyhsfD0wKT4+Ml0sMD09K19bMTYrKGN8PTApPj4zXSYmMD09K19bYysyND4+M10/MHwobD0wIT0oMHxsKSYmKGY9K19bYz4+M10pPihwPStfW2wrMTY+PjNdKSYmZjwrX1tsPj4zXStwJiYobT0rX1tjKzg+PjNdKT4oQT0rX1tsKzI0Pj4zXSk/''@;'; put 'put ''bTwrX1tsKzg+PjNdK0EmMTowKTooUHIoMTExNTk5LDExMTU0MywyMTksMTExNjM2KSwwKX1mdW5jdGlvbiBUaChsLGMpe3ZhciBmLHA7YVsoY3w9MCk+PjJdPX5+KHA9K19bMTYrKGw9MHxhWzMyKyhsfD0wKT4+Ml0pPj4zXSksYVtjKzQ+PjJdPX5+KGY9K19bbCsyND4+M10pLGFbYys4Pj4y''@;'; put 'put ''XT1+figrX1tsPj4zXStwKSxhW2MrMTI+PjJdPX5+KCtfW2wrOD4+M10rZil9ZnVuY3Rpb24gQWYobCxjKXt2YXIgZixwO2FbKGN8PTApPj4yXT1+fihwPStfWyhsfD0wKT4+M10pLGFbYys0Pj4yXT1+fihmPStfW2wrOD4+M10pLGFbYys4Pj4yXT1+figrX1tsKzE2Pj4zXStwKSxhW2MrMTI+''@;'; put 'put ''PjJdPX5+KCtfW2wrMjQ+PjNdK2YpfWZ1bmN0aW9uIEMzKGwsYyl7dmFyIGIsayxwPTAsbT0wLEE9MCx3PTAsTT0wLEQ9MDtyZXR1cm4rKCgwfChiPTB8YVs4KyhsfD0wKT4+Ml0pKT49KDB8KGs9MHxhWyhjfD0wKT4+Ml0pKSYmKDB8KE09MHxhW2w+PjJdKSk8PSgwfChEPTB8YVtjKzg+PjJd''@;'; put 'put ''KSkmJigwfChwPTB8YVtsKzEyPj4yXSkpPj0oMHwobT0wfGFbYys0Pj4yXSkpJiYoMHwoQT0wfGFbbCs0Pj4yXSkpPD0oMHwodz0wfGFbYysxMj4+Ml0pKT8oKygwfGFbKCgwfHApPCgwfHcpP2w6YykrMTI+PjJdKS0rKDB8YVsoKDB8QSk+KDB8bSk/bDpjKSs0Pj4yXSkpKigrKDB8YVsoKDB8''@;'; put 'put ''Yik8KDB8RCk/bDpjKSs4Pj4yXSktKygwfGFbKCgwfE0pPigwfGspP2w6Yyk+PjJdKSk6MCl9ZnVuY3Rpb24gSjgobCxjLGYscCxtKXtmfD0wLHA9K3AsbXw9MDt2YXIgYixrLEE9MCx3PTA7cmV0dXJuIGs9bGUsbGU9bGUrMTZ8MCxiPWssbD0wfGhFKGx8PTAsY3w9MCksKGw9MHxhWyhtPW0r''@;'; put 'put ''KCgoMHxsKTwwPzU6bCk8PDIpfDApPj4yXSk/KEFmKGwsYiksQT0oQT0rQzMoZixiKSk+cD9BOjAsMCE9KDB8YVszMisobD0wfGFbbT4+Ml0pPj4yXSkmJihUaChsLGIpLCh3PStDMyhmLGIpKT5wKSYmKEE9dz5BP3c6QSksQT4wfHwoYVttPj4yXT1jLEE9cCkpOihhW20+PjJdPWMsQT1wKSxs''@;'; put 'put ''ZT1rLCtBfWZ1bmN0aW9uIGpSKGwsYyxmLHAsbSl7Znw9MCxwPStwLG18PTA7dmFyIGIsayxBPTAsdz0wO3JldHVybiBrPWxlLGxlPWxlKzE2fDAsYj1rLGw9MHxoRShsfD0wLGN8PTApLChsPTB8YVsobT1tKygoKDB8bCk8MD81OmwpPDwyKXwwKT4+Ml0pPyhBZihsLGIpLEE9KEE9K0MzKGYs''@;'; put 'put ''YikpPnA/QTowLDAhPSgwfGFbMzIrKGw9MHxhW20+PjJdKT4+Ml0pJiYoVGgobCxiKSwodz0rQzMoZixiKSk+cCkmJihBPXc+QT93OkEpLEE+MHx8KGFbbT4+Ml09YyxBPXApKTooYVttPj4yXT1jLEE9cCksbGU9aywrQX1mdW5jdGlvbiBoRShsLGMpe3ZhciBwLGY9MCxtPTAsQT0wLHc9MCxi''@;'; put 'put ''PTA7KDB8KGY9MHxhWzMyKyhsfD0wKT4+Ml0pKT09KDB8KHA9MHxhWzMyKyhjfD0wKT4+Ml0pKSYmUHIoMTExNTc4LDExMTU0MywyNzYsMTExNTg4KTtkb3tpZigwIT0oMHxmZVtmKzM2Pj4wXSkmJjAhPSgwfGZlW3ArMzY+PjBdKSl7aWYoMD09KHc9K19bbD4+M10pJiYwPT0rX1tsKzg+PjNd''@;'; put 'put ''KXtmPS0xO2JyZWFrfWlmKDA9PShiPStfW2M+PjNdKSYwPT0oQT0rX1tjKzg+PjNdKSlmPS0xO2Vsc2V7aWYoQTwobT0rX1tsKzg+PjNdKSl7aWYoYjx3KXtmPTA7YnJlYWt9Zj1iPnc/MjoxO2JyZWFrfWlmKGY9Yjx3LEE+bSl7aWYoZil7Zj02O2JyZWFrfWY9Yj53Pzg6NzticmVha31mPWY/''@;'; put 'put ''MzpiPnc/NTotMX19ZWxzZSBmPS0xfXdoaWxlKDApO3JldHVybiAwfGZ9ZnVuY3Rpb24gazMobCxjKXtsfD0wO3ZhciBBLHcsYixrLE0sZj0wLHA9MCxtPTA7aWYoKGY9MHxhWzMyKyhjfD0wKT4+Ml0pPyhwPStfW2Y+PjNdLG09K19bZis4Pj4zXSk6KHA9MCxtPTApLGs9fn4rY2YoKygoTT0r''@;'; put 'put ''X1tjPj4zXSktcCkpLGI9fn4rY2YoKygoQT0rX1tjKzg+PjNdKS1tKSksMjE0NzQ4MzY0Nz09KDB8KHc9fn4rSXUoKyhNK3ArICtfW2MrMTY+PjNdKSkpKSYmUHIoMTExNjc2LDExMTU0MywyNjQsMTExNzAzKSwyMTQ3NDgzNjQ3IT0oMHwoZj1+fitJdSgrKEErbSsgK19bYysyND4+M10pKSkp''@;'; put 'put ''KXJldHVybiBhW2w+PjJdPWssYVtsKzQ+PjJdPWIsYVtsKzg+PjJdPXcsdm9pZChhW2wrMTI+PjJdPWYpO1ByKDExMTcxMywxMTE1NDMsMjY2LDExMTcwMyl9ZnVuY3Rpb24gQ2IobCxjKXtjfD0wO3ZhciBmPTAscD0wLG09MCxBPTAsdz0wLGI9MDtmb3IobT0wLHA9MHxhWyhsfD0wKT4+Ml0s''@;'; put 'put ''Zj0wfGFbbCs0Pj4yXTtsPWMrLTF8MCwhKCgwfGMpPD0wKTspQT0oYz1mPj4+bCYxKS0xfDAsbT0oYj1wPj4+bCYxKTw8MXxtPDwyfGJeYyxjPWwscD0odz1BJihwXmYpKV5wXihBJj0wLWIpLGY9d15mXkE7cmV0dXJuIDB8bX1mdW5jdGlvbiB2bShsKXt2YXIgYz0wLGY9MCxwPTAsbT0wO2lm''@;'; put 'put ''KChjPTB8VW8obHw9MCkpPj4+MD49KDB8YVs0NzM2NV0pPj4+MD8oYVs0NzM2NV09Yz1jKzExfDAsYz0wfFYwKDB8YVs0NzM2Nl0sYyksYVs0NzM2Nl09YyxjP2Y9NDpjPTApOihjPTB8YVs0NzM2Nl0sZj00KSw0PT0oMHxmKSl7Zm9yKG09YzsoZj0wfGZlW2w+PjBdKTw8MjQ+PjI0OykwfFF1''@;'; put 'put ''ZShwPTI1NSZmKSYmKGY9MjU1JigwfENwKHApKSksZmVbbT4+MF09ZixtPW0rMXwwLGw9bCsxfDA7ZmVbbT4+MF09MH1yZXR1cm4gMHxjfWZ1bmN0aW9uIFMzKGwsYyxmKXtsfD0wO3ZhciBNLEQscSxwZSxiZSxPZSxMZSxSZSxIZSxWZSxxZSxydCxXZSxhdCxTdCxwPTAsbT0wLEE9MCx3PTAs''@;'; put 'put ''Yj0wLGs9MCxSPTAsRz0wLGdlPTAsa3Q9MDtmb3IoU3Q9bGUsbGU9bGUrMTQ0fDAscT1TdCs5NnwwLEQ9U3QrODB8MCxiZT1TdCsxMjR8MCxwZT1TdCs3MnwwLE9lPVN0KzY0fDAsTGU9U3QrNTZ8MCxydD1TdCs0OHwwLFdlPVN0KzQwfDAsYXQ9U3QrMzJ8MCxSZT1TdCsyNHwwLEhlPVN0KzE2''@;'; put 'put ''fDAsVmU9U3QrOHwwLHFlPVN0LG09U3QrMTIwfDAsYj1TdCsxMTZ8MCxrPVN0KzExMnwwLE09U3QrMTA4fDAsYVszMisoY3w9MCk+PjJdPWZ8PTAsRz1sOzMyPT0oMHxmZVtHPj4wXSk7KUc9RysxfDA7YVtNPj4yXT0yNTUsbD0wfGZlW0c+PjBdO2U6ZG97aWYobDw8MjQ+PjI0PT0zNSl7aWYo''@;'; put 'put ''YVtEPj4yXT1tLGFbRCs0Pj4yXT1iLGFbRCs4Pj4yXT1rLGFbRCsxMj4+Ml09TSwoMHxpbChHLDExMTc1NSxEKSk8PTIpe2w9MHxmZVtHPj4wXSxSPTEyO2JyZWFrfXN3aXRjaCgwfGYpe2Nhc2UgMDpfW3J0Pj4zXT1rdD0uMDAzOTIxNTY4NjI3NDUwOTgqKygoMHxhW20+PjJdKT4+PjApLF9b''@;'; put 'put ''V2U+PjNdPXA9LjAwMzkyMTU2ODYyNzQ1MDk4KisoKDB8YVtiPj4yXSk+Pj4wKSxfW2F0Pj4zXT1BPS4wMDM5MjE1Njg2Mjc0NTA5OCorKCgwfGFbaz4+Ml0pPj4+MCksdz0uMDAzOTIxNTY4NjI3NDUwOTgqKygoMHxhW00+PjJdKT4+PjApLFpSKGt0LHAsQSxwZSxPZSxMZSksX1tjPj4zXT0r''@;'; put 'put ''X1twZT4+M10sX1tjKzg+PjNdPStfW09lPj4zXSxfW2MrMTY+PjNdPStfW0xlPj4zXSxfW2MrMjQ+PjNdPXcsbD0wO2JyZWFrIGU7Y2FzZSAxOmZlW2M+PjBdPWFbbT4+Ml0sZmVbYysxPj4wXT1hW2I+PjJdLGZlW2MrMj4+MF09YVtrPj4yXSxmZVtjKzM+PjBdPWFbTT4+Ml0sbD0wO2JyZWFr''@;'; put 'put ''IGU7Y2FzZSAzOl9bcnQ+PjNdPUE9LjAwMzkyMTU2ODYyNzQ1MDk4KisoKDB8YVttPj4yXSk+Pj4wKSxfW1dlPj4zXT13PS4wMDM5MjE1Njg2Mjc0NTA5OCorKCgwfGFbYj4+Ml0pPj4+MCksX1thdD4+M109a3Q9LjAwMzkyMTU2ODYyNzQ1MDk4KisoKDB8YVtrPj4yXSk+Pj4wKSxoNihBLHcs''@;'; put 'put ''a3QsUmUsSGUsVmUscWUpLGZlW2M+PjBdPTI1NSp+fitfW1JlPj4zXSxmZVtjKzE+PjBdPTI1NSp+fitfW0hlPj4zXSxmZVtjKzI+PjBdPTI1NSp+fitfW1ZlPj4zXSxmZVtjKzM+PjBdPTI1NSp+fitfW3FlPj4zXSxsPTA7YnJlYWsgZTtjYXNlIDI6YVtjPj4yXT0oKDY1NTM1KigwfGFbbT4+''@;'; put 'put ''Ml0pfDApPj4+MCkvMjU1fDAsYVtjKzQ+PjJdPSgoNjU1MzUqKDB8YVtiPj4yXSl8MCk+Pj4wKS8yNTV8MCxhW2MrOD4+Ml09KCg2NTUzNSooMHxhW2s+PjJdKXwwKT4+PjApLzI1NXwwLGFbYysxMj4+Ml09KCg2NTUzNSooMHxhW00+PjJdKXwwKT4+PjApLzI1NXwwLGw9MDticmVhayBlO2Nh''@;'; put 'put ''c2UgNDpfW2M+PjNdPS4wMDM5MjE1Njg2Mjc0NTA5OCorKCgwfGFbbT4+Ml0pPj4+MCksX1tjKzg+PjNdPS4wMDM5MjE1Njg2Mjc0NTA5OCorKCgwfGFbYj4+Ml0pPj4+MCksX1tjKzE2Pj4zXT0uMDAzOTIxNTY4NjI3NDUwOTgqKygoMHxhW2s+PjJdKT4+PjApLF9bYysyND4+M109LjAwMzky''@;'; put 'put ''MTU2ODYyNzQ1MDk4KisoKDB8YVtNPj4yXSk+Pj4wKSxsPTA7YnJlYWsgZTtkZWZhdWx0Omw9MDticmVhayBlfX1lbHNlIFI9MTJ9d2hpbGUoMCk7ZTpkb3tpZigxMj09KDB8Uikpe2lmKCEobDw8MjQ+PjI0IT00NiYmKCgyNTUmbCktNDh8MCk+Pj4wPj0xMCkpe2lmKChsPTB8VW8oRykpPj4+''@;'; put 'put ''MD49KDB8YVs0NzM2N10pPj4+MCl7aWYoYVs0NzM2N109bD1sKzExfDAsbD0wfFYwKDB8YVs0NzM2OF0sbCksYVs0NzM2OF09bCwhbCl7bD0tMTticmVha319ZWxzZSBsPTB8YVs0NzM2OF07Yj1sLG09Rzt0OmZvcig7Oyl7c3dpdGNoKGs9bSsxfDAsKG09MHxmZVttPj4wXSk8PDI0Pj4yNCl7''@;'; put 'put ''Y2FzZSAwOmJyZWFrIHQ7Y2FzZSA0NDptPTMyfWZlW2I+PjBdPW0sYj1iKzF8MCxtPWt9aWYoZmVbYj4+MF09MCxhW3E+PjJdPXBlLGFbcSs0Pj4yXT1PZSxhW3ErOD4+Ml09TGUsMz09KDB8aWwobCwxMTE3NjkscSkpKXN3aXRjaCh3PStfW3BlPj4zXSx3PXc8MT93OjEsdz13PjA/dzowLF9b''@;'; put 'put ''cGU+PjNdPXcsQT0rX1tPZT4+M10sQT1BPDE/QToxLEE9QT4wP0E6MCxfW09lPj4zXT1BLHA9K19bTGU+PjNdLHA9cDwxP3A6MSxwPXA+MD9wOjAsX1tMZT4+M109cCwwfGYpe2Nhc2UgMDpfW2M+PjNdPXcsX1tjKzg+PjNdPUEsX1tjKzE2Pj4zXT1wLF9bYysyND4+M109MSxsPTA7YnJlYWsg''@;'; put 'put ''ZTtjYXNlIDE6TTModyxBLHAscnQsV2UsYXQpLGZlW2M+PjBdPX5+KDI1NSorX1tydD4+M10pLGZlW2MrMT4+MF09fn4oMjU1KitfW1dlPj4zXSksZmVbYysyPj4wXT1+figyNTUqK19bYXQ+PjNdKSxmZVtjKzM+PjBdPS0xLGw9MDticmVhayBlO2Nhc2UgMzpNMyh3LEEscCxydCxXZSxhdCks''@;'; put 'put ''aDYoK19bcnQ+PjNdLCtfW1dlPj4zXSwrX1thdD4+M10sUmUsSGUsVmUscWUpLGZlW2M+PjBdPTI1NSp+fitfW1JlPj4zXSxmZVtjKzE+PjBdPTI1NSp+fitfW0hlPj4zXSxmZVtjKzI+PjBdPTI1NSp+fitfW1ZlPj4zXSxmZVtjKzM+PjBdPTI1NSp+fitfW3FlPj4zXSxsPTA7YnJlYWsgZTtj''@;'; put 'put ''YXNlIDI6TTModyxBLHAscnQsV2UsYXQpLGFbYz4+Ml09fn4oNjU1MzUqK19bcnQ+PjNdKSxhW2MrND4+Ml09fn4oNjU1MzUqK19bV2U+PjNdKSxhW2MrOD4+Ml09fn4oNjU1MzUqK19bYXQ+PjNdKSxhW2MrMTI+PjJdPTY1NTM1LGw9MDticmVhayBlO2Nhc2UgNDpNMyh3LEEscCxydCxXZSxh''@;'; put 'put ''dCksX1tjPj4zXT0rX1tydD4+M10sX1tjKzg+PjNdPStfW1dlPj4zXSxfW2MrMTY+PjNdPStfW2F0Pj4zXSxfW2MrMjQ+PjNdPTEsbD0wO2JyZWFrIGU7ZGVmYXVsdDpsPTA7YnJlYWsgZX19aWYobT0wfEUzKEcpLGFbYmU+PjJdPW0sbSl7aWYoKDA9PSgwfChsPTB8YVs0NzM2OV0pKXx8KDB8''@;'; put 'put ''ZmVbKGdlPTB8YVtsPj4yXSk+PjBdKSE9KDB8ZmVbbT4+MF0pfHwwIT0oMHxaaShnZSxtKSkpJiYobD0wfG53KGJlLDI1OTQ4LDI0OTEsMTIsMTAzKSxhWzQ3MzY5XT1sLCFsKSlzd2l0Y2goMHxmKXtjYXNlIDA6Y2FzZSA0OmFbYz4+Ml09MCxhW2MrND4+Ml09MCxhW2MrOD4+Ml09MCxhW2Mr''@;'; put 'put ''MTI+PjJdPTAsYVtjKzE2Pj4yXT0wLGFbYysyMD4+Ml09MCxfW2MrMjQ+PjNdPTEsbD0xO2JyZWFrIGU7Y2FzZSAxOmZlW2MrMj4+MF09MCxmZVtjKzE+PjBdPTAsZmVbYz4+MF09MCxmZVtjKzM+PjBdPS0xLGw9MTticmVhayBlO2Nhc2UgMzphW2M+PjJdPTAsbD0xO2JyZWFrIGU7Y2FzZSAy''@;'; put 'put ''OmFbYys4Pj4yXT0wLGFbYys0Pj4yXT0wLGFbYz4+Ml09MCxhW2MrMTI+PjJdPTY1NTM1LGw9MTticmVhayBlO2RlZmF1bHQ6bD0xO2JyZWFrIGV9c3dpdGNoKDB8Zil7Y2FzZSAwOl9bYz4+M109LjAwMzkyMTU2ODYyNzQ1MDk4KisoMHxYdFtsKzQ+PjBdKSxfW2MrOD4+M109LjAwMzkyMTU2''@;'; put 'put ''ODYyNzQ1MDk4KisoMHxYdFtsKzU+PjBdKSxfW2MrMTY+PjNdPS4wMDM5MjE1Njg2Mjc0NTA5OCorKDB8WHRbbCs2Pj4wXSksX1tjKzI0Pj4zXT0uMDAzOTIxNTY4NjI3NDUwOTgqKygwfFh0W2wrMTA+PjBdKSxsPTA7YnJlYWsgZTtjYXNlIDE6ZmVbYz4+MF09MHxmZVtsKzc+PjBdLGZlW2Mr''@;'; put 'put ''MT4+MF09MHxmZVtsKzg+PjBdLGZlW2MrMj4+MF09MHxmZVtsKzk+PjBdLGZlW2MrMz4+MF09MHxmZVtsKzEwPj4wXSxsPTA7YnJlYWsgZTtjYXNlIDM6X1tydD4+M109QT0uMDAzOTIxNTY4NjI3NDUwOTgqKygwfFh0W2wrNz4+MF0pLF9bV2U+PjNdPXc9LjAwMzkyMTU2ODYyNzQ1MDk4Kiso''@;'; put 'put ''MHxYdFtsKzg+PjBdKSxfW2F0Pj4zXT1rdD0uMDAzOTIxNTY4NjI3NDUwOTgqKygwfFh0W2wrOT4+MF0pLGg2KEEsdyxrdCxSZSxIZSxWZSxxZSksZmVbYz4+MF09MjU1Kn5+K19bUmU+PjNdLGZlW2MrMT4+MF09MjU1Kn5+K19bSGU+PjNdLGZlW2MrMj4+MF09MjU1Kn5+K19bVmU+PjNdLGZl''@;'; put 'put ''W2MrMz4+MF09MjU1Kn5+K19bcWU+PjNdLGw9MDticmVhayBlO2Nhc2UgMjphW2M+PjJdPTI1NyooMHxYdFtsKzc+PjBdKSxhW2MrND4+Ml09MjU3KigwfFh0W2wrOD4+MF0pLGFbYys4Pj4yXT0yNTcqKDB8WHRbbCs5Pj4wXSksYVtjKzEyPj4yXT0yNTcqKDB8WHRbbCsxMD4+MF0pLGw9MDti''@;'; put 'put ''cmVhayBlO2Nhc2UgNDpfW2M+PjNdPS4wMDM5MjE1Njg2Mjc0NTA5OCorKDB8WHRbbCs3Pj4wXSksX1tjKzg+PjNdPS4wMDM5MjE1Njg2Mjc0NTA5OCorKDB8WHRbbCs4Pj4wXSksX1tjKzE2Pj4zXT0uMDAzOTIxNTY4NjI3NDUwOTgqKygwfFh0W2wrOT4+MF0pLF9bYysyND4+M109LjAwMzky''@;'; put 'put ''MTU2ODYyNzQ1MDk4KisoMHxYdFtsKzEwPj4wXSksbD0wO2JyZWFrIGU7ZGVmYXVsdDpsPTA7YnJlYWsgZX19ZWxzZSBsPS0xfX13aGlsZSgwKTtyZXR1cm4gbGU9U3QsMHxsfWZ1bmN0aW9uIFpSKGwsYyxmLHAsbSxBKXtwfD0wLG18PTAsQXw9MDt2YXIgdz0wLGI9MCxrPTAsTT0wLEQ9MCxS''@;'; put 'put ''PTA7aWYodz0oYj0oUj0oUj0oYz0rYyk+KGY9K2YpP2M6Zik8KGw9K2wpP2w6UiktKChiPWM8Zj9jOmYpPmw/bDpiKSkvUixSPjApaWYodz4wKXtrPShSLWwpL2IsTT0oUi1jKS9iLEQ9KFItZikvYjtkb3tpZihSIT1sKXtpZihSPT1jKXtsPWsrMi1EO2JyZWFrfWw9Uj09Zj9NKzQtazowfWVs''@;'; put 'put ''c2UgbD0oYy1mKS9ifXdoaWxlKDApOyhsKj02MCk8MCYmKGwrPTM2MCl9ZWxzZSBsPTA7ZWxzZSB3PTAsbD0wO19bcD4+M109LjAwMjc3Nzc3Nzc3Nzc3Nzc3OCpsLF9bQT4+M109UixfW20+PjNdPXd9ZnVuY3Rpb24gaDYobCxjLGYscCxtLEEsdyl7Yz0rYyxmPStmLG18PTAsQXw9MCx3fD0w''@;'; put 'put ''LF9bKHB8PTApPj4zXT0xLShsPStsKSxfW20+PjNdPTEtYyxfW0E+PjNdPTEtZixfW3c+PjNdPWY9KGM9K19bcD4+M10pPChmPStfW20+PjNdKT9jOmYsX1t3Pj4zXT1mPShjPStfW0E+PjNdKTxmP2M6ZixfW3A+PjNdPStfW3A+PjNdLWYsX1ttPj4zXT0rX1ttPj4zXS0rX1t3Pj4zXSxfW0E+''@;'; put 'put ''PjNdPStfW0E+PjNdLStfW3c+PjNdfWZ1bmN0aW9uIE0zKGwsYyxmLHAsbSxBKXtsPStsLGM9K2MsZj0rZixwfD0wLG18PTAsQXw9MDt2YXIgdz0wLGI9MCxrPTAsTT0wLEQ9MDtlOmRve2lmKGM8PTApdz1mLGI9ZixsPWYsTT04O2Vsc2Ugc3dpdGNoKGI9bD49MT8wOjYqbCxEPX5+YixiLT0r''@;'; put 'put ''KDB8RCksbD0oMS1jKSpmLGs9KDEtYipjKSpmLGM9KDEtKDEtYikqYykqZiwwfEQpe2Nhc2UgMDp3PWwsYj1jLGw9ZixNPTg7YnJlYWsgZTtjYXNlIDE6dz1sLGI9ZixsPWssTT04O2JyZWFrIGU7Y2FzZSAyOnc9YyxiPWYsTT04O2JyZWFrIGU7Y2FzZSAzOnc9ZixiPWssTT04O2JyZWFrIGU7''@;'; put 'put ''Y2FzZSA0Onc9ZixiPWwsbD1jLE09ODticmVhayBlO2Nhc2UgNTp3PWssYj1sLGw9ZixNPTg7YnJlYWsgZTtkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKDApOzg9PSgwfE0pJiYoX1twPj4zXT1sLF9bbT4+M109YixfW0E+PjNdPXcpfWZ1bmN0aW9uIEUzKGwpe3ZhciBjPTAsZj0wO2lmKCEoKGM9''@;'; put 'put ''MHxmZVsobHw9MCk+PjBdKTw8MjQ+PjI0PT05OHx8KGY9bCsxfDAsYzw8MjQ+PjI0PT0xMTl8MD09KDB8czIoZiwxMzcyNjYsNCkpKXx8Yzw8MjQ+PjI0PT0xMDh8MD09KDB8czIoZiwxMzcyNzEsNCkpfHwwPT0oMHxzMihmLDEzNzI3Niw4KSkpKXtkb3tpZihjPDwyND4+MjQ9PTQ3KWlmKGM9''@;'; put 'put ''MHwkcyhmLDQ3KSl7aWYoNDchPSgwfGZlW2Y+PjBdKSl7bD0oZj0wPT0oMHxsNCgxMzcyODUsZiw0KSkpP2MrMXwwOmw7YnJlYWt9aWYoMHwoYz0wfGFbNDczNzBdKSYmMHxmZVtjPj4wXSYmMHxsNCgxMzcyODUsYywzKSl7bD0wfGtkKGMsbCsyfDApO2JyZWFrfWw9bCsyfDB9ZWxzZSBsPWY7''@;'; put 'put ''ZWxzZSAwIT0oMHwoYz0wfGFbNDczNzBdKSkmJjAhPSgwfGZlW2M+PjBdKSYmMCE9KDB8bDQoMTM3Mjg1LGMsMykpJiYobD0wfGtkKGMsbCkpfXdoaWxlKDApO2w9MHx2bShsKX1yZXR1cm4gMHxsfWZ1bmN0aW9uIGtkKGwsYyl7Y3w9MDt2YXIgcCxtLGY9MCxBPTA7cmV0dXJuIG09bGUsbGU9''@;'; put 'put ''bGUrMTZ8MCxwPW0sQT0wfFVvKGx8PTApLGY9MTMrKEE9KDB8VW8oYykpK0F8MCl8MCwoQSszfDApPj4+MDwoMHxhWzQ3MzcxXSk+Pj4wP2Y9MHxhWzQ3MzcyXTooYVs0NzM3MV09ZixmPTB8VjAoMHxhWzQ3MzcyXSxmKSxhWzQ3MzcyXT1mKSxhW3A+PjJdPWwsYVtwKzQ+PjJdPWMsb28oZiwx''@;'; put 'put ''MzcyOTAscCksbGU9bSwwfGFbNDczNzJdfWZ1bmN0aW9uIEw5KGwpe2FbNDczNzBdPWx8PTB9ZnVuY3Rpb24gZEUobCxjLGYscCxtKXt2YXIgQSx3O3JldHVybiBBPWxlLGxlPWxlKzIwOHwwLGZ1bmN0aW9uIHBFKGwsYyxmLHAsbSxBLHcpe2Y9K2YscD0rcCxtPSttLEE9K0Esdz0rdzt2YXIg''@;'; put 'put ''YixrO19bKGx8PTApPj4zXT1jPStjLF9bbCs4Pj4zXT1mLF9bKGs9bCsxNnwwKT4+M109cCxfWyhiPWwrMjR8MCk+PjNdPW0sX1tsKzMyPj4zXT0wLGY9K1VsKCsgK0RhKCtBKS9tLCsgK2hhKCtBKS9wKSxfW2wrNTY+PjNdPWYsbT0rVWwoKyArRGEoK3cpL20sKyAraGEoK3cpL3ApLF9bbCs0''@;'; put 'put ''MD4+M109MSxfW2wrNDg+PjNdPTAsbS09Ni4yODMxODUzMDcxNzk1ODYqK2NmKC4xNTkxNTQ5NDMwOTE4OTUzNSoobS1mKSksX1tsKzY0Pj4zXT13LUE+My4xNDE1OTI2NTM1ODk3OTMmbS1mPDMuMTQxNTkyNjUzNTg5NzkzP20rNi4yODMxODUzMDcxNzk1ODY6bSxmdW5jdGlvbiBCNChsKXt2''@;'; put 'put ''YXIgZixtLGM9MCxwPTA7Yz0rRDAoKygocD0rX1sxNisobHw9MCk+PjNdKSpwLShjPStfW2wrMjQ+PjNdKSpjKSkscD1jKitfW2wrNDA+PjNdLGMqPStfW2wrNDg+PjNdLF9bbCsxMDQ+PjNdPShtPStfW2w+PjNdKS1wLF9bbCsxMTI+PjNdPShmPStfW2wrOD4+M10pLWMsX1tsKzEyMD4+M109''@;'; put 'put ''bStwLF9bbCsxMjg+PjNdPWYrY30obCksZnVuY3Rpb24gdkUobCl7dmFyIGYsbSxBLGssYz0wLHA9MCx3PTAsYj0wO3A9K19bMTYrKGx8PTApPj4zXSxrPStoYSgrKGI9K19bbCs1Nj4+M10pKSpwLGM9K19bbCsyND4+M10sYj0rRGEoK2IpKmMscD0raGEoKyh3PStfW2wrNjQ+PjNdKSkqcCxj''@;'; put 'put ''PStEYSgrdykqYyxfW2wrNzI+PjNdPShmPStfW2wrNDA+PjNdKSprKyh3PStfW2w+PjNdKS0obT0rX1tsKzQ4Pj4zXSkqYixfW2wrODA+PjNdPW0qaysoQT0rX1tsKzg+PjNdKStmKmIsX1tsKzg4Pj4zXT13K2YqcC1tKmMsX1tsKzk2Pj4zXT1BK20qcCtmKmN9KGwpLGZ1bmN0aW9uIEdSKGwp''@;'; put 'put ''e3ZhciBiLGssTSxELEcsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsUj0wO209KE09K19bMjQrKGx8PTApPj4zXSkvKEQ9K19bbCsxNj4+M10pLEc9K2VvKCsoUj0rX1tsKzQ4Pj4zXSkpPC4xLGs9K19bbCs0MD4+M107ZG97aWYoRyl7aWYocD0tKGY9K1pmKCsoYz1SL2spKm0pKSxrPDApe2M9''@;'; put 'put ''K1pmKCtjL20pLG09cCxwPTMuMTQxNTkyNjUzNTg5NzkzLWYsZj00LjcxMjM4ODk4MDM4NDY5LWMsYz0xLjU3MDc5NjMyNjc5NDg5NjYtYzticmVha31jPStaZigrYy9tKSxtPS0zLjE0MTU5MjY1MzU4OTc5My1mLGY9MS41NzA3OTYzMjY3OTQ4OTY2LWMsYz0tMS41NzA3OTYzMjY3OTQ4OTY2''@;'; put 'put ''LWM7YnJlYWt9aWYocD0xLjU3MDc5NjMyNjc5NDg5NjYrKGY9K1pmKCsoYz1rL1IpL20pKSxSPDApe2M9K1pmKCtjKm0pLG09ZistMS41NzA3OTYzMjY3OTQ4OTY2LGY9YyszLjE0MTU5MjY1MzU4OTc5MzticmVha31jPStaZigrYyptKSxtPXAscD1mKzQuNzEyMzg4OTgwMzg0NjksZj1jLGMr''@;'; put 'put ''PS0zLjE0MTU5MjY1MzU4OTc5MzticmVha313aGlsZSgwKTttLT02LjI4MzE4NTMwNzE3OTU4NiorY2YoLjE1OTE1NDk0MzA5MTg5NTM1KihtLSh3PStfW2wrNTY+PjNdKSkpLGMtPTYuMjgzMTg1MzA3MTc5NTg2KitjZiguMTU5MTU0OTQzMDkxODk1MzUqKGMtdykpLEE9cC02LjI4MzE4NTMw''@;'; put 'put ''NzE3OTU4NiorY2YoLjE1OTE1NDk0MzA5MTg5NTM1KihwLXcpKSx3PWYtNi4yODMxODUzMDcxNzk1ODYqK2NmKC4xNTkxNTQ5NDMwOTE4OTUzNSooZi13KSksZj1tPD0oYj0rX1tsKzY0Pj4zXSk/K2hhKCttKSpEKmsrICtfW2w+PjNdLU0qK0RhKCttKSpSOihtPStfW2wrNzI+PjNdKTwoZj0r''@;'; put 'put ''X1tsKzg4Pj4zXSk/bTpmLF9bbCsxMzY+PjNdPWYscD1jPD1iPytoYSgrYykqRCpSKyArX1tsKzg+PjNdKyArRGEoK2MpKk0qazoobT0rX1tsKzgwPj4zXSk8KHA9K19bbCs5Nj4+M10pP206cCxfW2wrMTQ0Pj4zXT1wLGM9QTw9Yj8raGEoK0EpKkQqaysgK19bbD4+M10tTSorRGEoK0EpKlI6''@;'; put 'put ''KEE9K19bbCs3Mj4+M10pPihjPStfW2wrODg+PjNdKT9BOmMsX1tsKzE1Mj4+M109Yy1mLGM9dzw9Yj8raGEoK3cpKkQqUisgK19bbCs4Pj4zXSsgK0RhKCt3KSpNKms6KFI9K19bbCs4MD4+M10pPihjPStfW2wrOTY+PjNdKT9SOmMsX1tsKzE2MD4+M109Yy1wfShsKSxfW2wrMTY4Pj4zXT13''@;'; put 'put ''PSgodz0rX1trPj4zXSktK19bYj4+M10pL3csX1tsKzE3Nj4+M109KDItdykqdyxfW2wrMTg0Pj4zXT13PTEtdyxfW2wrMTkyPj4zXT13Knd9KHc9QSwrX1sobHw9MCk+PjNdLCtfW2wrOD4+M10sYz0rYyxmPStmLHA9K3AsbT0rbSksbD0wfGZ1bmN0aW9uIGQ2KGwpe2x8PTA7dmFyIGssTSxE''@;'; put 'put ''LFIsZ2UsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLEc9MCxxPTAscGU9MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTAsV2U9MDtmb3IoZ2U9MHx2cig4KSxtPStfW2wrNjQ+PjNdLShBPStfW2wrNTY+PjNdKSxwZT0xLGM9MDtxPW0vKygwfHBlKSxjPDwyND4+''@;'; put 'put ''MjQ9PTAmKDB8cGUpPDEwMjQ7KXtlOmRve2lmKHE8PTEuNTcwNzk2MzI2Nzk0ODk2Nilmb3IoZj1BLHA9MCxjPTE7Oyl7aWYoIShjPDwyND4+MjQhPTAmKDB8cCk8KDB8cGUpKSlicmVhayBlO2M9K085KGwsZixHPWYrcSk8PTFlLTUmMSxmPUcscD1wKzF8MH1lbHNlIGM9MH13aGlsZSgwKTtw''@;'; put 'put ''ZTw8PTF9Zm9yKGI9K2hhKCtBKSxSZT0rRGEoK0EpLEhlPShPZT0rX1socD1sKzE2fDApPj4zXSkqYix3PShmPStfWyhrPWwrMjR8MCk+PjNdKSpSZSxiKj1mLG09KExlPStfWyhNPWwrNDB8MCk+PjNdKSpIZSsoZj0rX1tsPj4zXSktKGJlPStfWyhEPWwrNDh8MCk+PjNdKSp3LHc9YmUqSGUr''@;'; put 'put ''TGUqdysoRz0rX1soUj1sKzh8MCk+PjNdKSxPZSo9LVJlLGZ1bmN0aW9uIHpSKGwsYyxmKXtsfD0wLGM9K2MsZj0rZjt2YXIgcDthWzQ3MzczXT0xMDAscD0wfHZyKDE2MDApLGFbbD4+Ml09cCxfW3A+PjNdPWMsX1twKzg+PjNdPWYsYVtsKzQ+PjJdPTF9KGdlLGYsRyksZ0UoZ2UsbSx3KSxH''@;'; put 'put ''PStUOCguNSpxKSxHPS4zMzMzMzMzMzMzMzMzMzMzKitEYSgrcSkqKCtEMCgrKEcqRyozKzQpKS0xKSxmPUEsQT13LHc9YmUqT2UrTGUqYixiPUxlKk9lLWJlKmIsYz0wOyEoKDB8Yyk+PSgwfHBlKSk7KVJlPStoYSgrKGJlPWYrcSkpLEhlPStEYSgrYmUpLFdlPShxZT0rX1twPj4zXSkqUmUs''@;'; put 'put ''TGU9KFZlPStfW2s+PjNdKSpIZSxSZSo9VmUsbUUoZ2UsbStiKkcsQSt3KkcsKE9lPShWZT0rX1tNPj4zXSkqV2UrICtfW2w+PjNdLShydD0rX1tEPj4zXSkqTGUpLShIZT1WZSoocWUqPS1IZSktcnQqUmUpKkcsKExlPXJ0KldlK1ZlKkxlKyArX1tSPj4zXSktKFJlPXJ0KnFlK1ZlKlJlKSpH''@;'; put 'put ''LE9lLExlKSxmPWJlLG09T2UsQT1MZSx3PVJlLGI9SGUsYz1jKzF8MDtyZXR1cm4gZnVuY3Rpb24geDMobCl7dmFyIGM7Z0UobHw9MCwrX1soYz0wfGFbbD4+Ml0pPj4zXSwrX1tjKzg+PjNdKSxhW2w+PjJdPTB8VWEoMHxhW2w+PjJdLGFbbCs0Pj4yXTw8NCksYVs0NzM3M109MH0oZ2UpLDB8''@;'; put 'put ''Z2V9KHcpLGxlPUEsMHxsfWZ1bmN0aW9uIE85KGwsYyxmKXt2YXIgbSxBLHcsYixwPTA7cmV0dXJuIG09K19bMjQrKGx8PTApPj4zXS8oYj0rX1tsKzE2Pj4zXSksdz0raGEoKyhwPShmPStmKSsoYz0rYykpKSxBPStoYSgyKnApLHA9K2hhKDMqcCksKygoLjAwMSptKzQuOTgpKm0rLjIwNykv''@;'; put 'put ''KG0rLjAwNjcpKmIqK3pmKCsoKCgrX1szMisobD1tPC4yNT8xMDM5MjoxMDY0OCk+PjNdKm0rICtfW2wrNDA+PjNdKSptKyArX1tsKzQ4Pj4zXSkvKCtfW2wrNTY+PjNdK20pKncrKCgrX1tsPj4zXSptKyArX1tsKzg+PjNdKSptKyArX1tsKzE2Pj4zXSkvKCtfW2wrMjQ+PjNdK20pKygoK19b''@;'; put 'put ''bCs2ND4+M10qbSsgK19bbCs3Mj4+M10pKm0rICtfW2wrODA+PjNdKS8oK19bbCs4OD4+M10rbSkqQSsoKCtfW2wrOTY+PjNdKm0rICtfW2wrMTA0Pj4zXSkqbSsgK19bbCsxMTI+PjNdKS8oK19bbCsxMjA+PjNdK20pKnArKCgoK19bbCsxNjA+PjNdKm0rICtfW2wrMTY4Pj4zXSkqbSsgK19b''@;'; put 'put ''bCsxNzY+PjNdKS8oK19bbCsxODQ+PjNdK20pKncrKCgrX1tsKzEyOD4+M10qbSsgK19bbCsxMzY+PjNdKSptKyArX1tsKzE0ND4+M10pLygrX1tsKzE1Mj4+M10rbSkrKCgrX1tsKzE5Mj4+M10qbSsgK19bbCsyMDA+PjNdKSptKyArX1tsKzIwOD4+M10pLygrX1tsKzIxNj4+M10rbSkqQSso''@;'; put 'put ''KCtfW2wrMjI0Pj4zXSptKyArX1tsKzIzMj4+M10pKm0rICtfW2wrMjQwPj4zXSkvKCtfW2wrMjQ4Pj4zXSttKSpwKSooZi1jKSkpfWZ1bmN0aW9uIGdFKGwsYyxmKXt2YXIgcCxtO21FKGx8PTAsK19bKG09MHxhW2w+PjJdKSsoKHA9KDB8YVtsKzQ+PjJdKS0xfDApPDw0KT4+M10sK19bbSso''@;'; put 'put ''cDw8NCkrOD4+M10sYz0rYyxmPStmLGMsZil9ZnVuY3Rpb24gbUUobCxjLGYscCxtLEEsdyl7Yz0rYyxmPStmLHA9K3AsbT0rbSxBPStBLHc9K3c7dmFyIE0sRCxiPTAsaz0wOygzKyhiPTB8YVsoTT00KyhsfD0wKXwwKT4+Ml0pfDApPCgwfChrPTB8YVs0NzM3M10pKT9sPTB8YVtsPj4yXToo''@;'; put 'put ''YVs0NzM3M109azw8MSxiPTB8VWEoMHxhW2w+PjJdLGs8PDUpLGFbbD4+Ml09YixsPWIsYj0wfGFbTT4+Ml0pLF9bbCsoYjw8NCk+PjNdPWMsRD1iKzF8MCxfW2wrKGI8PDQpKzg+PjNdPWYsX1tsKyhEPDw0KT4+M109cCxrPWIrMnwwLF9bbCsoRDw8NCkrOD4+M109bSxfW2wrKGs8PDQpPj4z''@;'; put 'put ''XT1BLGFbTT4+Ml09YiszLF9bbCsoazw8NCkrOD4+M109d31mdW5jdGlvbiB5RShsKXt2YXIgYz0wLGY9MCxwPTA7c3dpdGNoKDB8ZmVbNCsobHw9MCk+PjBdKXtjYXNlIDE6bD03MisoZj0wfGFbbD4+Ml0pfDAsZj1mKzU2fDAscD01O2JyZWFrO2Nhc2UgMzpsPTI0KyhmPTB8YVtsPj4yXSl8''@;'; put 'put ''MCxmPWYrOHwwLHA9NTticmVhaztjYXNlIDI6bD0zMisoZj0wfGFbbD4+Ml0pfDAsZj1mKzE2fDAscD01O2JyZWFrO2RlZmF1bHQ6Yz0wfXJldHVybiA1PT0oMHxwKSYmKGM9K19bbD4+M10tK19bZj4+M10pLCtjfWZ1bmN0aW9uIFNkKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHAsbSxBLHcsYixr''@;'; put 'put ''LE09MCxEPTAsUj0wLEc9MCxxPTA7az1sZSxsZT1sZSs5NnwwLEE9ays2NHwwLG09ayszMnwwLHA9aysxNnwwLHc9aywoYj0wfGl0WzQrKGN8PTApPj4xXSk8PDE2Pj4xNj49MSYmKF9bdz4+M109LjUqKChNPStfWyhHPWMrOHwwKT4+M10pKyhEPStfW2MrMjQ+PjNdKSkrICtfW2Y+PjNdLF9b''@;'; put 'put ''dys4Pj4zXT0uNSooK19bYysxNj4+M10rICtfW2MrMzI+PjNdKSsgK19bZis4Pj4zXSxSPTB8YVtjPj4yXSxxPWYrMTZ8MCxmPTB8ZmVbYys2Pj4wXSxhW3A+PjJdPWFbdz4+Ml0sYVtwKzQ+PjJdPWFbdys0Pj4yXSxhW3ArOD4+Ml09YVt3Kzg+PjJdLGFbcCsxMj4+Ml09YVt3KzEyPj4yXSxh''@;'; put 'put ''W20+PjJdPWFbcT4+Ml0sYVttKzQ+PjJdPWFbcSs0Pj4yXSxhW20rOD4+Ml09YVtxKzg+PjJdLGFbbSsxMj4+Ml09YVtxKzEyPj4yXSxhW20rMTY+PjJdPWFbcSsxNj4+Ml0sYVttKzIwPj4yXT1hW3ErMjA+PjJdLGFbbSsyND4+Ml09YVtxKzI0Pj4yXSxhW20rMjg+PjJdPWFbcSsyOD4+Ml0s''@;'; put 'put ''YVtBPj4yXT1hW0c+PjJdLGFbQSs0Pj4yXT1hW0crND4+Ml0sYVtBKzg+PjJdPWFbRys4Pj4yXSxhW0ErMTI+PjJdPWFbRysxMj4+Ml0sYVtBKzE2Pj4yXT1hW0crMTY+PjJdLGFbQSsyMD4+Ml09YVtHKzIwPj4yXSxhW0ErMjQ+PjJdPWFbRysyND4+Ml0sYVtBKzI4Pj4yXT1hW0crMjg+PjJd''@;'; put 'put ''LGZ1bmN0aW9uIFFSKGwsYyxmLHAsbSxBLHcsYil7bHw9MCxjfD0wLGZ8PTAscHw9MCxtPSttLEF8PTAsd3w9MCxifD0wO3ZhciBxLHBlLGdlLGJlLE9lLExlLFJlLEhlLFZlLFdlLGF0LFN0LGt0LHN0LEV0LGN0LGJ0LGFuLFNuLEhuLHVyLEVyLGs9MCxNPTAsRD0wLFI9MCxHPTAscWU9MCxy''@;'; put 'put ''dD0wLFp0PTAsSHI9MDtmb3IoRXI9bGUsbGU9bGUrMTI4fDAsY3Q9RXIrMTA0fDAsSG49RXIrNDh8MCx1cj1FcisxNnwwLGFbKFp0PWJ0PUVyKT4+Ml09MCxhW1p0KzQ+PjJdPTAsU249KGFuPStfW3A+PjNdKS1tLEV0PWFuK20sX1soWnQ9YnQrOHwwKT4+M109LjUqKCtfW3crMjQ+PjNdLStf''@;'; put 'put ''W3crOD4+M10pKyArX1twKzg+PjNdLFc4KGwsMSksV2U9dXIrMTZ8MCxhdD11cis0fDAsU3Q9dXIrMjR8MCxrdD1Ibis0fDAsc3Q9SG4rMTZ8MCxxPTA9PSgwfGIpLHBlPUhuKzI0fDAsZ2U9SG4rOHwwLGJlPUhuKzMyfDAsT2U9SG4rNDB8MCxMZT1Ibis0OHwwLFJlPUErMTZ8MCxIZT1BKzR8''@;'; put 'put ''MCxWZT11cis4fDAsUj0wOyEoKDB8Uik+PSgwfGMpKTspe3N3aXRjaCgwfGZlW2YrKDI0KlJ8MCkrNj4+MF0pe2Nhc2UgMTA4Om09U247YnJlYWs7Y2FzZSAxMTQ6bT1FdC0rX1tmKygyNCpSfDApKzg+PjNdO2JyZWFrO2RlZmF1bHQ6bT1hbi0uNSorX1tmKygyNCpSfDApKzg+PjNdfWZvcihf''@;'; put 'put ''W3A+PjNdPW0sX1tadD4+M109K19bWnQ+PjNdLStfWyhxZT1mKygyNCpSfDApKzE2fDApPj4zXSxydD1mKygyNCpSfDApKzR8MCxEPTB8YVtmKygyNCpSfDApPj4yXSxHPTA7ISgoMHxHKT49KDB8aXRbcnQ+PjFdKSk7KShiPTB8YVsoTT1EKzR8MCk+PjJdKT8oX1tXZT4+M109K19bKCtfW2Ir''@;'; put 'put ''MTY+PjNdPjA/YjpBKSsxNj4+M10sYVt1cj4+Ml09YVsoMD09KDB8YVtiPj4yXSk/QTpiKT4+Ml0sYVthdD4+Ml09dz0wfGFbKDA9PSgwfGFbYis0Pj4yXSk/QTpiKSs0Pj4yXSwoYj0xMjcmYVtiKzI0Pj4yXSk/Ynw9LTEyOCZhW1N0Pj4yXTpIcj0xMik6KF9bV2U+PjNdPStfW1JlPj4zXSxh''@;'; put 'put ''W3VyPj4yXT1hW0E+PjJdLGFbYXQ+PjJdPXc9MHxhW0hlPj4yXSxIcj0xMiksMTI9PSgwfEhyKSYmKEhyPTAsYj0tMTI4JmFbU3Q+PjJdKSxhW1N0Pj4yXT1iLG1hKGwsdyksYVtIbj4+Ml09YVtEPj4yXSxhW2t0Pj4yXT11cixfW3N0Pj4zXT0rX1tEKzE2Pj4zXSxfW3BlPj4zXT1rPXE/MTor''@;'; put 'put ''X1tEKzI0Pj4zXSxhW1ZlPj4yXT1hWzgrKDB8YVtNPj4yXSk+PjJdLGFbZ2U+PjJdPWFbRCs4Pj4yXSxfW2JlPj4zXT0rX1soTT1EKzMyfDApPj4zXSxfW09lPj4zXT0rX1txZT4+M10sZmVbTGU+PjBdPTEwOCxfW2J0Pj4zXT1tLGFbY3Q+PjJdPWFbYnQ+PjJdLGFbY3QrND4+Ml09YVtidCs0''@;'; put 'put ''Pj4yXSxhW2N0Kzg+PjJdPWFbYnQrOD4+Ml0sYVtjdCsxMj4+Ml09YVtidCsxMj4+Ml0saG0obCxjdCxIbiksX1twPj4zXT1rPStfW00+PjNdK20sRD1EKzU2fDAsRz1HKzF8MCxtPWs7Uj1SKzF8MH1PNChsKSxsZT1Fcn0obCxiPDwxNj4+MTYsUixwLC41KihELU0pLG0sQSxmKSksbGU9a31m''@;'; put 'put ''dW5jdGlvbiB3RShsLGMsZil7bHw9MCxmfD0wO3ZhciB3LGIsTSxELHEscGUsZ2UsYmUsTGUsT2UscD0wLG09MCxBPTAsaz0wLFI9MCxHPTA7aWYoTGU9bGUsbGU9bGUrMTc2fDAscT1MZSs5NnwwLGJlPUxlKzEzNnwwLE09TGUsRD1MZSsxMjh8MCxhWyhnZT1MZSs2NHwwKT4+Ml09YVsoUj00''@;'; put 'put ''OCsoY3w9MCl8MCk+PjJdLGFbZ2UrND4+Ml09YVtSKzQ+PjJdLGFbZ2UrOD4+Ml09YVtSKzg+PjJdLGFbZ2UrMTI+PjJdPWFbUisxMj4+Ml0sYVtnZSsxNj4+Ml09YVtSKzE2Pj4yXSxhW2dlKzIwPj4yXT1hW1IrMjA+PjJdLGFbZ2UrMjQ+PjJdPWFbUisyND4+Ml0sYVtnZSsyOD4+Ml09YVtS''@;'; put 'put ''KzI4Pj4yXSx3PStfW2Y+PjNdLGI9K19bZis4Pj4zXSxwPTB8YVsoUj1jKzg0fDApPj4yXSxPZT0wfGFbYz4+Ml0/MTowIT0oMHxhW2MrOD4+Ml0pLDB8KG09MHxhWyhwZT1jKzEwOHwwKT4+Ml0pJiZibyhmLG0sMTg2NTQ0KSxfW2dlPj4zXT0rX1tnZT4+M10rdyxfWyhHPWdlKzE2fDApPj4z''@;'; put 'put ''XT0rX1tHPj4zXSt3LF9bKEc9Z2UrOHwwKT4+M109K19bRz4+M10rYixfWyhHPWdlKzI0fDApPj4zXT0rX1tHPj4zXStiLE9lJiYwPT0oNCZhW2wrMTUyPj4yXXwwKT8oYVtxPj4yXT1hW2dlPj4yXSxhW3ErND4+Ml09YVtnZSs0Pj4yXSxhW3ErOD4+Ml09YVtnZSs4Pj4yXSxhW3ErMTI+PjJd''@;'; put 'put ''PWFbZ2UrMTI+PjJdLGFbcSsxNj4+Ml09YVtnZSsxNj4+Ml0sYVtxKzIwPj4yXT1hW2dlKzIwPj4yXSxhW3ErMjQ+PjJdPWFbZ2UrMjQ+PjJdLGFbcSsyOD4+Ml09YVtnZSsyOD4+Ml0sRz0wfFI5KGwsZixjLHEsYmUpKTpHPTAsISgzMiYobT0wfGl0WyhrPWMrNDJ8MCk+PjFdKSkpe2Zvcigo''@;'; put 'put ''QT0wfGFbYysyMD4+Ml0pJiYobT0wfFdSKGwsQSwwfGFbYysyOD4+Ml0sNjU1MzUmbSxEKSw0Jml0W2s+PjFdPyhrPTB8WHRbYyszMz4+MF0sYVtxPj4yXT1hW2dlPj4yXSxhW3ErND4+Ml09YVtnZSs0Pj4yXSxhW3ErOD4+Ml09YVtnZSs4Pj4yXSxhW3ErMTI+PjJdPWFbZ2UrMTI+PjJdLGFb''@;'; put 'put ''cSsxNj4+Ml09YVtnZSsxNj4+Ml0sYVtxKzIwPj4yXT1hW2dlKzIwPj4yXSxhW3ErMjQ+PjJdPWFbZ2UrMjQ+PjJdLGFbcSsyOD4+Ml09YVtnZSsyOD4+Ml0sSzUobCwwfE1kKE0scSxrKSw0LDQsbSkpOihhW3E+PjJdPWFbZ2U+PjJdLGFbcSs0Pj4yXT1hW2dlKzQ+PjJdLGFbcSs4Pj4yXT1h''@;'; put 'put ''W2dlKzg+PjJdLGFbcSsxMj4+Ml09YVtnZSsxMj4+Ml0sYVtxKzE2Pj4yXT1hW2dlKzE2Pj4yXSxhW3ErMjA+PjJdPWFbZ2UrMjA+PjJdLGFbcSsyND4+Ml09YVtnZSsyND4+Ml0sYVtxKzI4Pj4yXT1hW2dlKzI4Pj4yXSx5MyhsLHEsbSkpLEZ0KDB8YVtEPj4yXSkpO209MHxhW3A+PjJdOylH''@;'; put 'put ''YShsLG0sZikscD1wKzR8MDtmb3IocD0wfGFbUj4+Ml0seGgobCwxKSxtPWMrMjR8MDtBPXArNHwwLHA9MHxhW3A+PjJdOykwfGZlW3ArMTAwPj4wXT8oWVIobCxwLGYsMHxhW20+PjJdLDB8YVtBPj4yXSkscD1BKTpwPUE7MHxmZVtjKzMzPj4wXSYmKGFbcT4+Ml09YVtnZT4+Ml0sYVtxKzQ+''@;'; put 'put ''PjJdPWFbZ2UrND4+Ml0sYVtxKzg+PjJdPWFbZ2UrOD4+Ml0sYVtxKzEyPj4yXT1hW2dlKzEyPj4yXSxhW3ErMTY+PjJdPWFbZ2UrMTY+PjJdLGFbcSsyMD4+Ml09YVtnZSsyMD4+Ml0sYVtxKzI0Pj4yXT1hW2dlKzI0Pj4yXSxhW3ErMjg+PjJdPWFbZ2UrMjg+PjJdLGJFKGwsYyxxKSl9MHxH''@;'; put 'put ''JiZQNChsLGJlKSxPZSYmNCZhW2wrMTUyPj4yXXwwJiYoYVtxPj4yXT1hW2dlPj4yXSxhW3ErND4+Ml09YVtnZSs0Pj4yXSxhW3ErOD4+Ml09YVtnZSs4Pj4yXSxhW3ErMTI+PjJdPWFbZ2UrMTI+PjJdLGFbcSsxNj4+Ml09YVtnZSsxNj4+Ml0sYVtxKzIwPj4yXT1hW2dlKzIwPj4yXSxhW3Er''@;'; put 'put ''MjQ+PjJdPWFbZ2UrMjQ+PjJdLGFbcSsyOD4+Ml09YVtnZSsyOD4+Ml0sMHxSOShsLGYsYyxxLGJlKSkmJlA0KGwsYmUpLDB8YVtwZT4+Ml0mJl9FKGYsMTg2NTQ0KSxsZT1MZX1mdW5jdGlvbiBibyhsLGMsZil7Y3w9MCxmfD0wO3ZhciB3LHA9MCxtPTAsQT0wOzB8KG09MHxhWyh3PTE2Kyhs''@;'; put 'put ''fD0wKXwwKT4+Ml0pJiYoMHxhW2M+PjJdPyhhW2Y+PjJdPW0sbT0wfGFbYz4+Ml0sQT13KToobT0wLEE9ZiksYVtBPj4yXT1tKSwwfChtPTB8YVtsKzIwPj4yXSkmJigwfGFbKEE9Yys0fDApPj4yXT8oYVtmKzQ+PjJdPW0sbT0wfGFbQT4+Ml0sQT13KToobT0wLEE9ZiksYVtBKzQ+PjJdPW0p''@;'; put 'put ''LChwPStfW2wrMzI+PjNdKT49MCYmKCtfWyhtPWMrMTZ8MCk+PjNdPj0wPyhfW2YrMTY+PjNdPXAscD0rX1ttPj4zXSxmPXcpOnA9LTEsX1tmKzE2Pj4zXT1wKX1mdW5jdGlvbiBSOShsLGMsZixwLG0pe2N8PTAsZnw9MCxwfD0wO3ZhciB3LGIsayxNLEQsUixHLHEscGUsZ2UsYmUsQT0wO2Jl''@;'; put 'put ''PWxlLGxlPWxlKzIyNHwwLE09YmUrOHwwLGI9YmUsZ2U9YmUrNDB8MCx3PWJlKzE4NHwwLEE9YmUrNTZ8MCxhWyhtfD0wKT4+Ml09YVsoRD0yMDgrKGs9MHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4yXSxhW20rND4+Ml09YVsoUj1rKzIyOHwwKT4+Ml0sYVttKzg+PjJdPWFbKEc9aysyNDR8MCk+''@;'; put 'put ''PjJdLGFbbSsxMj4+Ml09YVsocT1rKzIxMnwwKT4+Ml0sZmVbbSsxNj4+MF09KGl0WyhwZT1rKzI2MHwwKT4+MV08PDE1JjY1NTM1KTw8MTY+PjE2Pj4xNSwwIT0oMHwobT0wfGFbZisxNj4+Ml0pKSYmMCE9KDB8ZmVbbT4+MF0pP0E9MDoodXMoZ2UsMTI4LEEpLChtPTB8YVsoQT1jKzYwfDAp''@;'; put 'put ''Pj4yXSl8fChtPTB8cmEoMHx3RihsLDB8YVtrKzg+PjJdLGdlKSksYVtBPj4yXT1tLGZlW2MrNjQ+PjBdPTEpLHVvKGdlLG0pLGFbNDczNzRdPTErKEE9MHxhWzQ3Mzc0XSksYVtiPj4yXT1BLG9vKHcsMTM3MzkxLGIpLHVvKGdlLHcpLChtPTB8YVsoQT1nZSs0fDApPj4yXSk+Pj4wPj0oMHxh''@;'; put 'put ''W2dlKzg+PjJdKT4+PjAmJihRMChnZSwxKSxtPTB8YVtBPj4yXSksZmVbbT4+MF09MCxhW0E+PjJdPW09MHxhW2dlPj4yXSxBPTEpLG09MHxRMShsLDAsMHxhW2Y+PjJdLDB8YVtmKzEyPj4yXSwwfGFbZis4Pj4yXSxtLDB8YVtrKzg+PjJdKSxBJiZDMihnZSk7ZG97aWYoMHxtKXtpZigwPT0o''@;'; put 'put ''MHxhW0Q+PjJdKSYmMD09KDEmaXRbcGU+PjFdKSlicmVhazthW00+PjJdPWFbcD4+Ml0sYVtNKzQ+PjJdPWFbcCs0Pj4yXSxhW00rOD4+Ml09YVtwKzg+PjJdLGFbTSsxMj4+Ml09YVtwKzEyPj4yXSxhW00rMTY+PjJdPWFbcCsxNj4+Ml0sYVtNKzIwPj4yXT1hW3ArMjA+PjJdLGFbTSsyND4+''@;'; put 'put ''Ml09YVtwKzI0Pj4yXSxhW00rMjg+PjJdPWFbcCsyOD4+Ml0sUkMobCxNKSxHMShsLDB8YVtEPj4yXSwwfGFbUj4+Ml0sMHxhW0c+PjJdLDB8YVtxPj4yXSl9fXdoaWxlKDApO3JldHVybiBsZT1iZSwwfG19ZnVuY3Rpb24gV1IobCxjLGYscCxtKXt2YXIgdyxiO3JldHVybiBsfD0wLGZ8PTAs''@;'; put 'put ''cHw9MCxiPWxlLGxlPWxlKzE2fDAsKDB8dWsoY3w9MCxtfD0wLHc9YikpPDwyND4+MjQ/KGhsKGwsMHxhW20+PjJdKSxVZihsLChjPTB8YVttKzQ+PjJdKXx8MTM3MzE0LGYsK2puW3c+PjJdKSxjPXA+Pj4xJjF8Mik6KGhsKGwsYyksYz0xKSxtYShsLDEzNzM3OSksbGU9YiwwfGN9ZnVuY3Rp''@;'; put 'put ''b24gTWQobCxjLGYpe2Z8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTA7cmV0dXJuIGFbKGx8PTApPj4yXT1hWyhjfD0wKT4+Ml0sYVtsKzQ+PjJdPWFbYys0Pj4yXSxhW2wrOD4+Ml09YVtjKzg+PjJdLGFbbCsxMj4+Ml09YVtjKzEyPj4yXSxhWyhwPWwrMzJ8MCk+PjJdPWFbKGM9YysxNnww''@;'; put 'put ''KT4+Ml0sYVtwKzQ+PjJdPWFbYys0Pj4yXSxhW3ArOD4+Ml09YVtjKzg+PjJdLGFbcCsxMj4+Ml09YVtjKzEyPj4yXSwoMHxmKT4xPyhfW2w+PjNdPXc9K19bbD4+M10rKGI9LjUqKygwfGYpKSxfWyhmPWwrOHwwKT4+M109QT0rX1tmPj4zXStiLF9bcD4+M109bT0rX1twPj4zXS1iLF9bKHA9''@;'; put 'put ''bCs0MHwwKT4+M109Yj0rX1twPj4zXS1iKToobT0rX1twPj4zXSxBPStfW2wrOD4+M10sdz0rX1tsPj4zXSxiPStfW2wrNDA+PjNdKSxfW2wrMTY+PjNdPW0sX1tsKzI0Pj4zXT1BLF9bbCs0OD4+M109dyxfW2wrNTY+PjNdPWIsMHxsfWZ1bmN0aW9uIEdhKGwsYyxmKXtsfD0wLGZ8PTA7dmFy''@;'; put 'put ''IG0sQSxNLEQsUixHLHEsZ2UscD0wLHc9MCxiPTAsaz0wLHBlPTA7Z2U9bGUsbGU9bGUrMTc2fDAsUj1nZSs5NnwwLEc9Z2UrMTM2fDAsTT1nZSxEPWdlKzEyOHwwLGFbKHE9Z2UrNjR8MCk+PjJdPWFbKHBlPTQ4KyhjfD0wKXwwKT4+Ml0sYVtxKzQ+PjJdPWFbcGUrND4+Ml0sYVtxKzg+PjJd''@;'; put 'put ''PWFbcGUrOD4+Ml0sYVtxKzEyPj4yXT1hW3BlKzEyPj4yXSxhW3ErMTY+PjJdPWFbcGUrMTY+PjJdLGFbcSsyMD4+Ml09YVtwZSsyMD4+Ml0sYVtxKzI0Pj4yXT1hW3BlKzI0Pj4yXSxhW3ErMjg+PjJdPWFbcGUrMjg+PjJdLEE9K19bZis4Pj4zXSxwZT0wfGFbYz4+Ml0/MTowIT0oMHxhW2Mr''@;'; put 'put ''OD4+Ml0pLF9bcT4+M109K19bcT4+M10rKG09K19bZj4+M10pLF9bKGs9cSsxNnwwKT4+M109K19baz4+M10rbSxfWyhrPXErOHwwKT4+M109K19baz4+M10rQSxfWyhrPXErMjR8MCk+PjNdPStfW2s+PjNdK0EscGUmJjA9PSg0JmFbbCsxNTI+PjJdfDApPyhhW1I+PjJdPWFbcT4+Ml0sYVtS''@;'; put 'put ''KzQ+PjJdPWFbcSs0Pj4yXSxhW1IrOD4+Ml09YVtxKzg+PjJdLGFbUisxMj4+Ml09YVtxKzEyPj4yXSxhW1IrMTY+PjJdPWFbcSsxNj4+Ml0sYVtSKzIwPj4yXT1hW3ErMjA+PjJdLGFbUisyND4+Ml09YVtxKzI0Pj4yXSxhW1IrMjg+PjJdPWFbcSsyOD4+Ml0saz0wfFI5KGwsZixjLFIsRykp''@;'; put 'put ''Oms9MCxwPTB8aXRbKGI9Yys0MnwwKT4+MV07ZTpkb3tpZighKDMyJnApKXN3aXRjaCh3PTB8YVtjKzIwPj4yXSwwfHcmJihwPTB8V1IobCx3LDB8YVtjKzI4Pj4yXSw2NTUzNSZwLEQpLDQmaXRbYj4+MV0/KGI9MHxYdFtjKzMzPj4wXSxhW1I+PjJdPWFbcT4+Ml0sYVtSKzQ+PjJdPWFbcSs0''@;'; put 'put ''Pj4yXSxhW1IrOD4+Ml09YVtxKzg+PjJdLGFbUisxMj4+Ml09YVtxKzEyPj4yXSxhW1IrMTY+PjJdPWFbcSsxNj4+Ml0sYVtSKzIwPj4yXT1hW3ErMjA+PjJdLGFbUisyND4+Ml09YVtxKzI0Pj4yXSxhW1IrMjg+PjJdPWFbcSsyOD4+Ml0sSzUobCwwfE1kKE0sUixiKSw0LDQscCkpOihhW1I+''@;'; put 'put ''PjJdPWFbcT4+Ml0sYVtSKzQ+PjJdPWFbcSs0Pj4yXSxhW1IrOD4+Ml09YVtxKzg+PjJdLGFbUisxMj4+Ml09YVtxKzEyPj4yXSxhW1IrMTY+PjJdPWFbcSsxNj4+Ml0sYVtSKzIwPj4yXT1hW3ErMjA+PjJdLGFbUisyND4+Ml09YVtxKzI0Pj4yXSxhW1IrMjg+PjJdPWFbcSsyOD4+Ml0seTMo''@;'; put 'put ''bCxSLHApKSxGdCgwfGFbRD4+Ml0pKSwwfGZlW2MrMzM+PjBdJiYoYVtSPj4yXT1hW3E+PjJdLGFbUis0Pj4yXT1hW3ErND4+Ml0sYVtSKzg+PjJdPWFbcSs4Pj4yXSxhW1IrMTI+PjJdPWFbcSsxMj4+Ml0sYVtSKzE2Pj4yXT1hW3ErMTY+PjJdLGFbUisyMD4+Ml09YVtxKzIwPj4yXSxhW1Ir''@;'; put 'put ''MjQ+PjJdPWFbcSsyND4+Ml0sYVtSKzI4Pj4yXT1hW3ErMjg+PjJdLGJFKGwsYyxSKSkscD1jKzg4fDAsMHxmZVtjKzkyPj4wXSl7Y2FzZSAxOndFKGwsMHxhW3A+PjJdLGYpO2JyZWFrIGU7Y2FzZSAzOlVSKGwsMHxhW3A+PjJdLGYpO2JyZWFrIGU7ZGVmYXVsdDpTZChsLDB8YVtwPj4yXSxm''@;'; put 'put ''KTticmVhayBlfX13aGlsZSgwKTswfGsmJlA0KGwsRykscGUmJjQmYVtsKzE1Mj4+Ml18MCYmKGFbUj4+Ml09YVtxPj4yXSxhW1IrND4+Ml09YVtxKzQ+PjJdLGFbUis4Pj4yXT1hW3ErOD4+Ml0sYVtSKzEyPj4yXT1hW3ErMTI+PjJdLGFbUisxNj4+Ml09YVtxKzE2Pj4yXSxhW1IrMjA+PjJd''@;'; put 'put ''PWFbcSsyMD4+Ml0sYVtSKzI0Pj4yXT1hW3ErMjQ+PjJdLGFbUisyOD4+Ml09YVtxKzI4Pj4yXSwwfFI5KGwsZixjLFIsRykpJiZQNChsLEcpLGxlPWdlfWZ1bmN0aW9uIFlSKGwsYyxmLHAsbSl7Y3w9MCxtfD0wO3ZhciBiLGssUixHLHEsT2UsTGUsUmUsQT0wLHc9MCxNPTAsRD0wLHBlPTAs''@;'; put 'put ''Z2U9MCxiZT0wLEhlPTAsVmU9MDtpZihSZT1sZSxsZT1sZSszMnwwLE9lPVJlKzE2fDAsTGU9UmUsRD0rX1soZnw9MCk+PjNdLGJlPStfW2YrOD4+M10saGwobHw9MCxNPTA9PSgwfChwfD0wKSk/MTM3MzE0OnApLG1hKGwsTSksaz0rX1tjKzcyPj4zXSxSPShHPStfW2MrNDg+PjNdKStELEQ9''@;'; put 'put ''KHE9K19bYys2ND4+M10pK0QsYmU9KGI9K19bYys1Nj4+M10pK2JlLDAhPSgxJihmPTB8ZmVbKE09YysxMDB8MCk+PjBdKSkmJigoMHxocltjKzgwPj4xXSkrKDB8aHJbYys4ND4+MV0pfDApPCgwfGFbMTA0Kyh3PTB8YVtjKzk2Pj4yXSk+PjJdKSl7Zj0wfGl0W2MrODY+PjFdO2Rve2lmKGY8''@;'; put 'put ''PDE2Pj4xNil7aWYoKCgwfGhyW2MrODI+PjFdKSsoNjU1MzUmZil8MCk9PSgwfGFbdysxMDA+PjJdKSl7Zj1wPSgoVmU9KChIZT0wfGZlW3crMzI+PjBdKTw8MjQ+PjI0KS8yfDApPDwyND4+MjQpKygwfFh0W3crMzM+PjBdKXwwLHAmPTI1NSxBPWJlLSsoVmU8PDI0Pj4yNCksdz1IZTticmVh''@;'; put 'put ''a31mPTAscD0oKCh3PTB8ZmVbdyszMj4+MF0pPDwyND4+MjQpLzJ8MCk8PDI0Pj4yNCxBPWJlO2JyZWFrfWY9KHA9KCgoVmU9MHxmZVt3KzMyPj4wXSk8PDI0Pj4yNCkvMnwwKTw8MjQ+PjI0KSsoMHxYdFt3KzMzPj4wXSl8MCxBPWJlLHc9VmV9d2hpbGUoMCk7X1tMZSs4Pj4zXT1BLSsoMHxw''@;'; put 'put ''KSxfW0xlPj4zXT1EKyArKCgodzw8MjQ+PjI0KS8yfDApPDwyND4+MjQpLGFbT2U+PjJdPWFbTGU+PjJdLGFbT2UrND4+Ml09YVtMZSs0Pj4yXSxhW09lKzg+PjJdPWFbTGUrOD4+Ml0sYVtPZSsxMj4+Ml09YVtMZSsxMj4+Ml0sQjkobCxPZSwwLGstYisgKygyNTUmZnwwKSsgKyh3PDwyND4+''@;'; put 'put ''MjQpKSxmPTB8ZmVbTT4+MF19aWYoMiZmJiYoKDB8aHJbYys4Mj4+MV0pKyg2NTUzNSYocGU9MHxpdFtjKzg2Pj4xXSkpfDApPCgwfGFbMTAwKyhnZT0wfGFbYys5Nj4+Ml0pPj4yXSkpe2Y9MHxpdFtjKzg0Pj4xXTtkb3tpZihmPDwxNj4+MTYpe2lmKCgoMHxocltjKzgwPj4xXSkrKDY1NTM1''@;'; put 'put ''JmYpfDApPT0oMHxhW2dlKzEwND4+Ml0pKXtwPSgyNTUmKFZlPSgoZj0wfGZlW2dlKzMyPj4wXSk8PDI0Pj4yNCkvMnwwKSkrKDB8WHRbZ2UrMzM+PjBdKSYyNTUsX1tMZT4+M109Ui0rKFZlPDwyND4+MjQpO2JyZWFrfV9bTGU+PjNdPVItKEE9KygoKChmPTB8ZmVbZ2UrMzI+PjBdKTw8MjQ+''@;'; put 'put ''PjI0KS8yfDApPDwyND4+MjQpKSxwPTAhPSgwfG0pJiYoMHxpdFttKzg2Pj4xXSkhPXBlPDwxNj4+MTY/MjU1Jn5+KCtfW2dlKzY0Pj4zXS1xLUEpOjB9ZWxzZXtpZihwPTI1NSYodz0oKFZlPSgoZj0wfGZlW2dlKzMyPj4wXSk8PDI0Pj4yNCkvMnwwKTw8MjQ+PjI0KSsoMHxYdFtnZSszMz4+''@;'; put 'put ''MF0pfDApLF9bTGU+PjNdPVItKEE9KyhWZTw8MjQ+PjI0KSktKygwfCh3Jj0yNTUpKSwoMHxhW2dlKzEwND4+Ml0pPT0oMHxocltjKzgwPj4xXSkpe3A9dzw8MSYyNTU7YnJlYWt9MCE9KDB8bSkmJigwfGl0W20rODY+PjFdKSE9cGU8PDE2Pj4xNiYmKHA9MjU1Jn5+KCsoMjU1JnApLXErICtf''@;'; put 'put ''W2dlKzY0Pj4zXS1BKSl9fXdoaWxlKDApO19bTGUrOD4+M109YmUtKygoKGY8PDI0Pj4yNCkvMnwwKTw8MjQ+PjI0KSxhW09lPj4yXT1hW0xlPj4yXSxhW09lKzQ+PjJdPWFbTGUrND4+Ml0sYVtPZSs4Pj4yXT1hW0xlKzg+PjJdLGFbT2UrMTI+PjJdPWFbTGUrMTI+PjJdLEI5KGwsT2UscS1H''@;'; put 'put ''KyArKDI1NSZwKSsgKyhmPDwyND4+MjQpLDApfWxlPVJlfWZ1bmN0aW9uIGJFKGwsYyxmKXtmfD0wO3ZhciBNLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLEQ9MDtNPWxlLGxlPWxlKzE2MHwwLGs9TSsxMTJ8MCxiPU0sbT1NKzE0NHwwLG1hKGx8PTAsMD09KDB8KHc9MHxhWzI0KyhjfD0wKT4+''@;'; put 'put ''Ml0pKT8xMzczMTQ6dyksMzg0JihwPTB8aXRbKHc9Yys0MnwwKT4+MV0pPyhhW20rND4+Ml09MCxhW20+PjJdPTAsMjU2JihwJj02NTUzNSk/KHA9MTM3MzI3LEE9NCk6MTI4JnB8MCYmKHA9MTM3MzIwLEE9NCksND09KDB8QSkmJihhW20+PjJdPXApLGQyKGwsbSkpOmQyKGwsMHxhWzMzNiso''@;'; put 'put ''MHxhW2w+PjJdKT4+Ml0pLHhoKGwsKygwfFh0WyhBPWMrMzN8MCk+PjBdKSk7ZTpkb3tpZig0Jml0W3c+PjFdKXc9MHxYdFtBPj4wXSxhW2s+PjJdPWFbZj4+Ml0sYVtrKzQ+PjJdPWFbZis0Pj4yXSxhW2srOD4+Ml09YVtmKzg+PjJdLGFbaysxMj4+Ml09YVtmKzEyPj4yXSxhW2srMTY+PjJd''@;'; put 'put ''PWFbZisxNj4+Ml0sYVtrKzIwPj4yXT1hW2YrMjA+PjJdLGFbaysyND4+Ml09YVtmKzI0Pj4yXSxhW2srMjg+PjJdPWFbZisyOD4+Ml0sSzUobCwwfE1kKGIsayx3KSw0LDQsMCk7ZWxzZXtpZighKChwPTE1MzYwJml0W2MrMzY+PjFdKTw8MTY+PjE2KSl7KDI1NSYocD0wfGZlW0E+PjBdKSk+''@;'; put 'put ''MSYmKF9bZj4+M109K19bZj4+M10rKEQ9LjUqKygyNTUmcCkpLF9bKGI9Zis4fDApPj4zXT0rX1tiPj4zXStELF9bKGI9ZisxNnwwKT4+M109K19bYj4+M10tRCxfWyhiPWYrMjR8MCk+PjNdPStfW2I+PjNdLUQpLGFbaz4+Ml09YVtmPj4yXSxhW2srND4+Ml09YVtmKzQ+PjJdLGFbays4Pj4y''@;'; put 'put ''XT1hW2YrOD4+Ml0sYVtrKzEyPj4yXT1hW2YrMTI+PjJdLGFbaysxNj4+Ml09YVtmKzE2Pj4yXSxhW2srMjA+PjJdPWFbZisyMD4+Ml0sYVtrKzI0Pj4yXT1hW2YrMjQ+PjJdLGFbaysyOD4+Ml09YVtmKzI4Pj4yXSx5MyhsLGssMCk7YnJlYWt9c3dpdGNoKG09YisxNnwwLHc9MHxYdFtBPj4w''@;'; put 'put ''XSxhW2s+PjJdPWFbZj4+Ml0sYVtrKzQ+PjJdPWFbZis0Pj4yXSxhW2srOD4+Ml09YVtmKzg+PjJdLGFbaysxMj4+Ml09YVtmKzEyPj4yXSxhW2srMTY+PjJdPWFbZisxNj4+Ml0sYVtrKzIwPj4yXT1hW2YrMjA+PjJdLGFbaysyND4+Ml09YVtmKzI0Pj4yXSxhW2srMjg+PjJdPWFbZisyOD4+''@;'; put 'put ''Ml0sTWQobSxrLHcpLCgoNjU1MzUmcCktMTAyNHwwKT4+PjEwJjQxOTQzMDN8MCl7Y2FzZSA3OldvKGwsbSwyKTticmVhayBlO2Nhc2UgMzpXbyhsLGIrMzJ8MCwyKTticmVhayBlO2Nhc2UgMTpXbyhsLGIrNDh8MCwyKTticmVhayBlO2Nhc2UgMDphW2I+PjJdPWFbKGY9Yis2NHwwKT4+Ml0s''@;'; put 'put ''YVtiKzQ+PjJdPWFbZis0Pj4yXSxhW2IrOD4+Ml09YVtmKzg+PjJdLGFbYisxMj4+Ml09YVtmKzEyPj4yXSxXbyhsLGIsMik7YnJlYWsgZTtjYXNlIDExOldvKGwsbSwzKTticmVhayBlO2Nhc2UgNTpXbyhsLGIrMzJ8MCwzKTticmVhayBlO2Nhc2UgMjphWyhmPWIrODB8MCk+PjJdPWFbbT4+''@;'; put 'put ''Ml0sYVtmKzQ+PjJdPWFbbSs0Pj4yXSxhW2YrOD4+Ml09YVttKzg+PjJdLGFbZisxMj4+Ml09YVttKzEyPj4yXSxXbyhsLGIrNDh8MCwzKTticmVhayBlO2Nhc2UgODphW2I+PjJdPWFbKGY9Yis2NHwwKT4+Ml0sYVtiKzQ+PjJdPWFbZis0Pj4yXSxhW2IrOD4+Ml09YVtmKzg+PjJdLGFbYisx''@;'; put 'put ''Mj4+Ml09YVtmKzEyPj4yXSxXbyhsLGIsMyk7YnJlYWsgZTtjYXNlIDEzOldvKGwsbSw0KTticmVhayBlO2Nhc2UgNjphWyhmPWIrODB8MCk+PjJdPWFbbT4+Ml0sYVtmKzQ+PjJdPWFbbSs0Pj4yXSxhW2YrOD4+Ml09YVttKzg+PjJdLGFbZisxMj4+Ml09YVttKzEyPj4yXSxXbyhsLGIrMzJ8''@;'; put 'put ''MCw0KTticmVhayBlO2Nhc2UgMTA6YVsoZj1iKzgwfDApPj4yXT1hW20+PjJdLGFbZis0Pj4yXT1hW20rND4+Ml0sYVtmKzg+PjJdPWFbbSs4Pj4yXSxhW2YrMTI+PjJdPWFbbSsxMj4+Ml0sYVsoZj1iKzk2fDApPj4yXT1hWyhrPWIrMzJ8MCk+PjJdLGFbZis0Pj4yXT1hW2srND4+Ml0sYVtm''@;'; put 'put ''Kzg+PjJdPWFbays4Pj4yXSxhW2YrMTI+PjJdPWFbaysxMj4+Ml0sV28obCxiKzQ4fDAsNCk7YnJlYWsgZTtjYXNlIDEyOmFbYj4+Ml09YVsoZj1iKzY0fDApPj4yXSxhW2IrND4+Ml09YVtmKzQ+PjJdLGFbYis4Pj4yXT1hW2YrOD4+Ml0sYVtiKzEyPj4yXT1hW2YrMTI+PjJdLFdvKGwsYiw0''@;'; put 'put ''KTticmVhayBlO2Nhc2UgOTpXbyhsLG0sMiksV28obCxiKzQ4fDAsMik7YnJlYWsgZTtjYXNlIDQ6YVtiPj4yXT1hWyhmPWIrNjR8MCk+PjJdLGFbYis0Pj4yXT1hW2YrND4+Ml0sYVtiKzg+PjJdPWFbZis4Pj4yXSxhW2IrMTI+PjJdPWFbZisxMj4+Ml0sV28obCxiLDIpLFdvKGwsYiszMnww''@;'; put 'put ''LDIpO2JyZWFrIGU7ZGVmYXVsdDpicmVhayBlfX19d2hpbGUoMCk7bGU9TX1mdW5jdGlvbiBQNChsLGMpe2N8PTA7dmFyIGY9MCxwPTAsbT0wOzA9PSgwfGFbKGY9MjA4KyhtPTB8YVsxNisobHw9MCk+PjJdKXwwKT4+Ml0pJiYwPT0oMSZpdFttKzI2MD4+MV0pP2w9MDooRWgobCksbD0wfGFb''@;'; put 'put ''Zj4+Ml0pLCgwfGwpIT0oMHxhW2M+PjJdKSYmKEZ0KGwpLGFbZj4+Ml09YVtjPj4yXSksKDB8KGY9MHxhWyhsPW0rMjI4fDApPj4yXSkpIT0oMHxhWyhwPWMrNHwwKT4+Ml0pJiYoRnQoZiksYVtsPj4yXT1hW3A+PjJdKSwoMHwoZj0wfGFbKGw9bSsyNDR8MCk+PjJdKSkhPSgwfGFbKHA9Yys4''@;'; put 'put ''fDApPj4yXSkmJihGdChmKSxhW2w+PjJdPWFbcD4+Ml0pLCgwfChmPTB8YVsobD1tKzIxMnwwKT4+Ml0pKSE9KDB8YVsocD1jKzEyfDApPj4yXSkmJihGdChmKSxhW2w+PjJdPWFbcD4+Ml0pLGl0WyhtPW0rMjYwfDApPj4xXT0tMiZpdFttPj4xXXwxJmZlW2MrMTY+PjBdfWZ1bmN0aW9uIF9F''@;'; put 'put ''KGwsYyl7bHw9MDt2YXIgZixwPTA7MHwocD0wfGFbKGN8PTApPj4yXSkmJihhW2wrMTY+PjJdPXApLDB8KHA9MHxhW2MrND4+Ml0pJiYoYVtsKzIwPj4yXT1wKSwoZj0rX1tjKzE2Pj4zXSk+PTAmJihfW2wrMzI+PjNdPWYpfWZ1bmN0aW9uIEI5KGwsYyxmLHApe3ZhciBtLEEsdztsfD0wLGY9''@;'; put 'put ''K2YscD0rcCxtPWxlLGxlPWxlKzY0fDAsQT1tKzMyfDAsYVsodz1tKT4+Ml09YVsoY3w9MCk+PjJdLGFbdys0Pj4yXT1hW2MrND4+Ml0sYVt3Kzg+PjJdPWFbYys4Pj4yXSxhW3crMTI+PjJdPWFbYysxMj4+Ml0sX1t3KzE2Pj4zXT0rX1tjPj4zXStmLF9bdysyND4+M109K19bYys4Pj4zXStw''@;'; put 'put ''LGFbQT4+Ml09YVt3Pj4yXSxhW0ErND4+Ml09YVt3KzQ+PjJdLGFbQSs4Pj4yXT1hW3crOD4+Ml0sYVtBKzEyPj4yXT1hW3crMTI+PjJdLGFbQSsxNj4+Ml09YVt3KzE2Pj4yXSxhW0ErMjA+PjJdPWFbdysyMD4+Ml0sYVtBKzI0Pj4yXT1hW3crMjQ+PjJdLGFbQSsyOD4+Ml09YVt3KzI4Pj4y''@;'; put 'put ''XSx5MyhsLEEsMSksbGU9bX1mdW5jdGlvbiBVUihsLGMsZil7bHw9MDt2YXIgbSxBLHcsTSxwPTAsYj0wLGs9MDtpZihBPWxlLGxlPWxlKzY0fDAsTT0oYj0rX1soZnw9MCk+PjNdKSsgK19bKGN8PTApPj4zXSx3PShrPStfW2YrOD4+M10pKyArX1tjKzg+PjNdLGsrPStfW2MrMjQ+PjNdLF9b''@;'; put 'put ''KG09QSk+PjNdPWIrPStfW2MrMTY+PjNdLF9bbSs4Pj4zXT1rLF9bbSszMj4+M109TSxfW20rNDA+PjNdPXcsX1ttKzE2Pj4zXT1NLF9bbSsyND4+M109ayxfW20rNDg+PjNdPWIsX1ttKzU2Pj4zXT13LChwPTB8YVtjKzM2Pj4yXSl8fChwPTB8YVtmKzU2Pj4yXSksKGY9MHxhW2MrMzI+PjJd''@;'; put 'put ''KXx8UHIoMTM3MzM0LDEzNzM0Miw2MjMsMTM3MzU0KSwwfGZlW2Y+PjBdKXJldHVybiB0RShsLGYsbSw0LDEscCksdm9pZChsZT1BKTtQcigxMzczNjgsMTM3MzQyLDYyNCwxMzczNTQpfWZ1bmN0aW9uIEs4KGwpe0Z0KDB8YVsobHw9MCk+PjJdKSxGdCgwfGFbbCs0Pj4yXSksRnQoMHxhW2wr''@;'; put 'put ''OD4+Ml0pLEZ0KDB8YVtsKzE2Pj4yXSksRnQoMHxhW2wrMTI+PjJdKSxGdCgwfGFbbCsyMD4+Ml0pLEZ0KDB8YVtsKzI0Pj4yXSl9ZnVuY3Rpb24gSlIobCl7dmFyIGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTA7aWYoMHwobHw9MCkpe2ZvcihiPWwrNHwwLGY9MCxtPTB8YVtsPj4y''@;'; put 'put ''XTshKCgwfGYpPj0oMHxpdFtiPj4xXSkpOyl7Zm9yKGs9bSs0fDAsYz0wLHA9MHxhW20+PjJdOyEoKDB8Yyk+PSgwfGl0W2s+PjFdKSk7KUZ0KDB8YVtwPj4yXSksMHwoQT0wfGFbcCs4Pj4yXSkmJjB8KHc9MHxhW3ArMTI+PjJdKSYmQ29bMTI3JnddKEEpLGM9YysxfDAscD1wKzU2fDA7Zj1m''@;'; put 'put ''KzF8MCxtPW0rMjR8MH0wfChjPTB8YVtsPj4yXSkmJkZ0KGMpLEZ0KGwpfX1mdW5jdGlvbiBBbShsLGMpe3N3aXRjaChjfD0wLDB8ZmVbNCsobHw9MCk+PjBdKXtjYXNlIDE6IWZ1bmN0aW9uIG5HKGwpe3ZhciBwLGM9MCxmPTA7aWYocD04NCsobHw9MCl8MCwtMT09KDB8YVtsKzEwMD4+Ml0p''@;'; put 'put ''KU5sKDB8YVtwPj4yXSk7ZWxzZXtmb3IoYz0wfGFbcD4+Ml0sRnQoMHxhW2wrOTI+PjJdKSxGdCgwfGFbbCs5Nj4+Ml0pO2Y9MHxhW2M+PjJdOylYUihmKSxjPWMrNHwwO0Z0KDB8YVtwPj4yXSl9SzgobCksRnQobCl9KDB8YVtsPj4yXSk7YnJlYWs7Y2FzZSAzOiFmdW5jdGlvbiB0RyhsKXtG''@;'; put 'put ''dCgwfGFbMzIrKGx8PTApPj4yXSksRnQobCl9KDB8YVtsPj4yXSk7YnJlYWs7ZGVmYXVsdDpKUigwfGFbbD4+Ml0pfTB8YyYmRnQobCl9ZnVuY3Rpb24gWFIobCl7QW0oODgrKGx8PTApfDAsMCksSzgobCksRnQobCl9ZnVuY3Rpb24gckcobCxjLGYpe2Z8PTA7dmFyIHA9MDtyZXR1cm4gMiE9''@;'; put 'put ''KDB8ZmVbNCsobD0wfGFbNzIrKDB8YVsxMDQrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0pPj4yXSk+PjBdKSYmMCE9KDB8KHA9MHxLUigwfGFbbD4+Ml0sY3w9MCkpKT8oYVtmPj4yXT1YdFtwKzM1Pj4wXSxsPXArNDh8MCk6bD0wLDB8bH1mdW5jdGlvbiBLUihsLGMpe2N8PTA7dmFyIGY9MCxw''@;'; put 'put ''PTA7MCE9KDB8KGY9MHxhWzQrKGx8PTApPj4yXSkpJiYwPT0oMHx5MChmLGMpKXx8KHA9Myk7ZTpkb3tpZigzPT0oMHxwKSlmb3IoZj0wfGFbbCs4ND4+Ml07Oyl7aWYoIShsPTB8YVtmPj4yXSkpe2w9MDticmVhayBlfWlmKGw9MHxpRyhsLGMpKWJyZWFrO2Y9Zis0fDB9fXdoaWxlKDApO3Jl''@;'; put 'put ''dHVybiAwfGx9ZnVuY3Rpb24gaUcobCxjKXt2YXIgZjtyZXR1cm4gY3w9MCwwIT0oMHwoZj0wfGFbNCsobHw9MCk+PjJdKSkmJjA9PSgwfHkwKGYsYykpfHwobD0xPT0oMHxmZVtsKzkyPj4wXSk/MHxLUigwfGFbbCs4OD4+Ml0sYyk6MCksMHxsfWZ1bmN0aW9uIEY0KGwpe3ZhciBjLGY7cmV0''@;'; put 'put ''dXJuIGY9bGUsbGU9bGUrMTZ8MCxjPWYsKGx8PTApPj4+MDwyMT9sPTB8YVs1NTg0MCsobDw8Mik+PjJdOihhW2M+PjJdPWwsb28oMTk0OTU5LDEzNzM5NSxjKSxsPTE5NDk1OSksbGU9ZiwwfGx9ZnVuY3Rpb24gVDMobCxjLGYscCl7cHw9MDt2YXIgbT0wLEE9MDsobT0wfEthKGx8PTAsY3w9''@;'; put 'put ''MCxmfD0wLDAsMCkpP2l0WyhBPTE3MCsoMHxhW20rMTY+PjJdKXwwKT4+MV09KDB8KGY9MHxocltBPj4xXSkpPigwfHApP2Y6cDooaDAoQT0wfEthKGwsYyxmLDAsMSksMTM3NDYwLDE3NiwxKSxpdFsxNzArKDB8YVtBKzE2Pj4yXSk+PjFdPXAsbD0obT0wfGFbMTgwKyhsPTB8YVsoYz1jKzE2''@;'; put 'put ''fDApPj4yXSk+PjJdKT8wfFYwKG0sOCsoYVtsKzE4ND4+Ml08PDIpfDApOjB8UW4oOCsoYVtsKzE4ND4+Ml08PDIpfDApLGFbMTgwKyhwPTB8YVtjPj4yXSk+PjJdPWwsYVsocD1wKzE4NHwwKT4+Ml09MSsobT0wfGFbcD4+Ml0pLGFbbCsobTw8Mik+PjJdPUEsYVsoMHxhWzE4MCsoYz0wfGFb''@;'; put 'put ''Yz4+Ml0pPj4yXSkrKGFbYysxODQ+PjJdPDwyKT4+Ml09MCxsPShtPTB8YVsxNzIrKGw9MHxhWyhjPWYrMTZ8MCk+PjJdKT4+Ml0pPzB8VjAobSw4KyhhW2wrMTc2Pj4yXTw8Mil8MCk6MHxRbig4KyhhW2wrMTc2Pj4yXTw8Mil8MCksYVsxNzIrKHA9MHxhW2M+PjJdKT4+Ml09bCxhWyhwPXAr''@;'; put 'put ''MTc2fDApPj4yXT0xKyhmPTB8YVtwPj4yXSksYVtsKyhmPDwyKT4+Ml09QSxhWygwfGFbMTcyKyhBPTB8YVtjPj4yXSk+PjJdKSsoYVtBKzE3Nj4+Ml08PDIpPj4yXT0wKX1mdW5jdGlvbiBnNihsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTA7Zm9yKGM9MHxhWzE5MisoMHxhWzE2Kyhs''@;'; put 'put ''fD0wKT4+Ml0pPj4yXTtBPTB8YVsxNjQrKDB8YVsocD1jKzE2fDApPj4yXSk+PjJdOykwfEthKGwsYyxBLDAsMCl8fChoMChtPTB8S2EobCxjLEEsMCwxKSwxMzc0NjAsMTc2LDEpLGl0WzE3MCsoMHxhW20rMTY+PjJdKT4+MV09MCxjPShmPTB8YVsxODArKGM9MHxhW3A+PjJdKT4+Ml0pPzB8''@;'; put 'put ''VjAoZiw4KyhhW2MrMTg0Pj4yXTw8Mil8MCk6MHxRbig4KyhhW2MrMTg0Pj4yXTw8Mil8MCksYVsxODArKHc9MHxhW3A+PjJdKT4+Ml09YyxhWyh3PXcrMTg0fDApPj4yXT0xKyhmPTB8YVt3Pj4yXSksYVtjKyhmPDwyKT4+Ml09bSxhWygwfGFbMTgwKyhwPTB8YVtwPj4yXSk+PjJdKSsoYVtw''@;'; put 'put ''KzE4ND4+Ml08PDIpPj4yXT0wLGM9KGY9MHxhWzE3MisoYz0wfGFbKHA9QSsxNnwwKT4+Ml0pPj4yXSk/MHxWMChmLDgrKGFbYysxNzY+PjJdPDwyKXwwKTowfFFuKDgrKGFbYysxNzY+PjJdPDwyKXwwKSxhWzE3MisoZj0wfGFbcD4+Ml0pPj4yXT1jLGFbKGY9ZisxNzZ8MCk+PjJdPTErKHc9''@;'; put 'put ''MHxhW2Y+PjJdKSxhW2MrKHc8PDIpPj4yXT1tLGFbKDB8YVsxNzIrKGM9MHxhW3A+PjJdKT4+Ml0pKyhhW2MrMTc2Pj4yXTw8Mik+PjJdPTApLGM9QX1mdW5jdGlvbiB2NihsLGMpe2N8PTA7dmFyIHAsbSx3LGIsRCxSLGY9MCxBPTAsaz0wLE09MCxHPTAscT0wO3N3aXRjaChSPWxlLGxlPWxl''@;'; put 'put ''KzI3MnwwLE09UisxMDR8MCxEPVIrMTM2fDAsdz1SKzcyfDAsbT1SKzE0NHwwLGFbKGI9UikrNDg+PjJdPWx8PTAsMHxraShsKSl7Y2FzZSAwOmY9MHxhW2wrNjA+PjJdO2JyZWFrO2Nhc2UgMTpmPTB8Y3IobCk7YnJlYWs7Y2FzZSAyOmY9MHxjcigwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDps''@;'; put 'put ''Ky00OHwwKSs0MD4+Ml0pfXJldHVybiBhWyhBPWIrNTJ8MCk+PjJdPWYsaz0wfGFbZis2MD4+Ml0sX1tiKzMyPj4zXT0rX1tjKzE2Pj4zXSxhW2IrMTY+PjJdPWFbYys0Pj4yXSxhW2IrMjA+PjJdPWFbYys4Pj4yXSxhW2IrNDA+PjJdPTAscD0wfGZ1bmN0aW9uIF9CKGwsYyxmKXtsfD0wLGN8''@;'; put 'put ''PTAsZnw9MDt2YXIgcCxtLEE7cmV0dXJuIG09bGUsbGU9bGUrMTYwfDAscD1tKzh8MCxhWyhBPW0pPj4yXT0wLGFbQSs0Pj4yXT0wLGFbNDc0MDNdPUEsYVs0NzQwMl09MCxhWzQ3NDAwXT0wLGFbNDc0MDRdPWFbMTQ0KygwfGFbMTYrKDB8YVtmKzUyPj4yXSk+PjJdKT4+Ml0sYVs0NzQwNV09''@;'; put 'put ''MHxpcyg1NjEwNCwwfGFbNDU4MF0pLGFbNDc0MDZdPTB8aXMoNTYxNDAsMHxhWzQ1ODBdKSx1cyhwLDEyOCxtKzI0fDApLGFbNDc0MDFdPXAsMHxmdW5jdGlvbiBHRShsLGMsZil7cmV0dXJuIGx8PTAsZnw9MCxhWzQ3NDEwXT1jfD0wLHVzKDE4OTY0NCwxMjgsMCksYVs0NzQwOF09bCxmZVsx''@;'; put 'put ''ODk2NjNdPTAsZmVbMTg5NjYwXT0wLGZlWzE4OTY2MV09MCxhWzQ3NDE4XT0wLGFbNDc0MTldPTAsZmVbMTg5NjYyXT0xLGM9MHxmdW5jdGlvbiBzeChsKXtyZXR1cm4gMHxmdW5jdGlvbiBtXyhsLGMsZil7cmV0dXJuIDB8ZnVuY3Rpb24gR0IobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFy''@;'; put 'put ''IG09MCxBPTAsdz0wLGI9MDsoY3w9MCk/KG09MHxfb1s2MyZhW2M+PjJdXSg0OTYpKT8oYVttKzEyPj4yXT1BPTB8YVtjPj4yXSxhW20rMTY+PjJdPWFbYys0Pj4yXSxhW20rMjA+PjJdPWFbYys4Pj4yXSxjPUEsQT02KTptPTA6KG09MHxGMCg0OTYpKT8oYVttKzEyPj4yXT0zNSxhW20rMTY+''@;'; put 'put ''PjJdPTEwNyxhW20rMjA+PjJdPTEwNSxjPTM1LEE9Nik6bT0wO2Rve2lmKDY9PSgwfEEpKXtpZihhW20rOD4+Ml09MCxhW20rMzI+PjJdPTAsYVttKzM3Nj4+Ml09MTYsYj1tKzEyfDAsdz0wfF9vWzYzJmNdKDI1NiksYVsoYz1tKzM4OHwwKT4+Ml09dywhdyl7Q29bMTI3JmFbbSsyMD4+Ml1d''@;'; put 'put ''KG0pLG09MDticmVha31pZihBPTB8X29bNjMmYVtiPj4yXV0oMTAyNCksYVsodz1tKzQ0fDApPj4yXT1BLCFBKXtDb1sxMjcmYVsoZj1tKzIwfDApPj4yXV0oMHxhW2M+PjJdKSxDb1sxMjcmYVtmPj4yXV0obSksbT0wO2JyZWFrfWlmKGFbbSs0OD4+Ml09QSsxMDI0LHApYVttKzM1Mj4+Ml09''@;'; put 'put ''cDtlbHNlIGlmKHA9MHx2RyhiKSxhW20rMzUyPj4yXT1wLCFwKXtDb1sxMjcmYVsoZj1tKzIwfDApPj4yXV0oMHxhW3c+PjJdKSxDb1sxMjcmYVtmPj4yXV0oMHxhW2M+PjJdKSxDb1sxMjcmYVtmPj4yXV0obSksbT0wO2JyZWFrfWlmKGFbbSszNzI+PjJdPTAsYVttKzM2ND4+Ml09MCxhW20r''@;'; put 'put ''MzAwPj4yXT0wLGFbbSs0NjQ+PjJdPTAsYVttKzQ2MD4+Ml09MCxhW20rMTI0Pj4yXT0wLGFbbSsyNDQ+PjJdPTAsZmVbKGM9bSs0Njh8MCk+PjBdPTMzLGZlWyhBPW0rMjMyfDApPj4wXT0wLGZlW20rMjMzPj4wXT0wLGFbbSszOTI+PjJdPTAsYVttKzM5Nj4+Ml09MCxmZVttKzQwMD4+MF09''@;'; put 'put ''MCxhWyhwPW0rMjI4fDApPj4yXT0wLGFBKG0rNDEyfDAsYiksYUEobSs0MzZ8MCxiKSx2XyhtLGwpLDB8bCYmMD09KDB8YVtwPj4yXSkpe0FfKG0pLG09MDticmVha31pZihmKXtmZVtBPj4wXT0xLGFbbSsyMjQ+PjJdPTYwMDkyLGZlW2M+PjBdPTB8ZmVbZj4+MF07YnJlYWt9YVttKzIyND4+''@;'; put 'put ''Ml09NTgyMjA7YnJlYWt9fXdoaWxlKDApO3JldHVybiAwfG19KGx8PTAsY3w9MCxmfD0wLDApfShsfD0wLDAsMCl9KDB8ZnVuY3Rpb24gVW9lKGwpe3ZhciBjLGY7c3dpdGNoKGY9bGUsbGU9bGUrMTZ8MCxjPWYsMHwobHw9MCkpe2Nhc2UgMDpsPTEwMTk3MTticmVhaztjYXNlIDE6bD0xMDE4''@;'; put 'put ''Mzk7YnJlYWs7Y2FzZSAyOmw9MTAxOTc3O2JyZWFrO2RlZmF1bHQ6YVtjPj4yXT1sLCRyKDEsMTAxOTQxLGMpLGw9MTAxOTcxfXJldHVybiBsZT1mLDB8bH0oMHxYdFsxMTUrKDB8YVsxNisoMHxhWyhmPWYrNTJ8MCk+PjJdKT4+Ml0pPj4wXSkpLGFbNDc0MDddPWMsZnVuY3Rpb24gd0cobCxj''@;'; put 'put ''KXtjfD0wO3ZhciBmPTAscD0wOzB8KGx8PTApJiYocD0oMHxhWyhmPWwrNHwwKT4+Ml0pPT0oMHxhW2w+PjJdKSxhW2w+PjJdPWMscCkmJihhW2Y+PjJdPWMpfShjLDB8YVsxNDQrKDB8YVsxNisoMHxhW2Y+PjJdKT4+Ml0pPj4yXSksZnVuY3Rpb24gZ3gobCxjLGYpe2Z8PTAsMHwobHw9MCkm''@;'; put 'put ''JihhW2wrNTI+PjJdPWN8PTAsYVtsKzU2Pj4yXT1mKX0oMHxhWzQ3NDA3XSw3MCwyNyksZnVuY3Rpb24gSkIobCxjKXswfChsfD0wKSYmKGFbbCs2MD4+Ml09Y3w9MCl9KDB8YVs0NzQwN10sNzEpLDB9KGwscCxmKT8oYVtjPj4yXT0yLGw9MCk6KGZ1bmN0aW9uIHZCKCl7dmFyIEcscGUsbD0w''@;'; put 'put ''LGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAscT0wO3BlPWxlLGxlPWxlKzEyMDB8MCxHPXBlKzgwMHwwLGY9cGUsYVs0NzM5N109MCxhWzQ3Mzk4XT0tMixjPUcsbT0yMDAsaz1mLEQ9MCxSPTAsTT1HO2U6Zm9yKDs7KXtpZihpdFtNPj4xXT1ELChjKyhtPDwx''@;'; put 'put ''KSstMnwwKT4+PjA+TT4+PjApdz1tO2Vsc2V7aWYobD0xKyhiPU0tYz4+MSl8MCxtPj4+MD45OTk5KXtxPTk1O2JyZWFrfXN3aXRjaCgocD0wfEYwKDYqKHc9KHc9bTw8MSk+Pj4wPDFlND93OjFlNCl8MykpPyhnbygwfHAsMHxjLGw8PDF8MCksZ28oMHwobT1wKyh3Pj4+MTw8Mil8MCksMHxr''@;'; put 'put ''LGw8PDJ8MCksKDB8Yyk9PSgwfEcpPyhsPTAsYz1wKTooRnQoYyksbD0wLGM9cCkpOihsPTQsbT1rKSxwPWMrKGI8PDEpfDAsMTUmKChBPTA9PSgwfGwpKT8oYysodzw8MSkrLTJ8MCk+Pj4wPnA+Pj4wPzA6OTpsKSl7Y2FzZSA5Omw9MSxxPTk2O2JyZWFrIGU7Y2FzZSA0OnE9OTU7YnJlYWsg''@;'; put 'put ''ZTtjYXNlIDA6Zj1BP20rKGI8PDIpfDA6ZixrPW0sTT1BP3A6TTticmVhaztkZWZhdWx0Omw9MDticmVhayBlfX1pZigzMT09KDB8RCkpe2w9MCxxPTk2O2JyZWFrfUE9KGw9MHxpdFs2NTUzNCsoRDw8MSk+PjFdKTw8MTY+PjE2O2Rve2lmKGw8PDE2Pj4xNiE9LTgyKXtpZigtMj09KDB8KHA9''@;'; put 'put ''MHxhWzQ3Mzk4XSkpJiYocD0wfHFFKCksYVs0NzM5OF09cCksKDB8cCk+PTE/bT1wPj4+MDwyOTY/MHxYdFsxMzkzMjErcD4+MF06MjooYVs0NzM5OF09MCxtPTApLChwPW0rQXwwKT4+PjA8PTI3MSYmKDB8bSk9PSgwfGZlWzEzOTYxNytwPj4wXSkpe2lmKGw9KEQ9MHxmZVsxMzk4ODkrcD4+''@;'; put 'put ''MF0pPDwyND4+MjQsRDw8MjQ+PjI0PDEpe3A9MC1sfDAscT0yMzticmVha31hWzQ3Mzk4XT0tMixhWyhmPWYrNHwwKT4+Ml09YVs0NzM5OV0sQT0wPT0oMHxSKT8wOlIrLTF8MCxwPU07YnJlYWt9cT0yMn1lbHNlIHE9MjJ9d2hpbGUoMCk7aWYoMjI9PSgwfHEpKWlmKHE9MCxwPTI1NSYoRD0w''@;'; put 'put ''fGZlWzE0MDE2MStEPj4wXSksRDw8MjQ+PjI0KXE9MjM7ZWxzZXtwPTB8YVs0NzM5OF07dDpkb3tzd2l0Y2goMHxSKXtjYXNlIDA6YVs0NzM5N109MSsoMHxhWzQ3Mzk3XSksTmEoMTQzNzYxKSxwPU07YnJlYWs7Y2FzZSAzOmlmKCgwfHApPDEpe2lmKHApe3A9TTticmVhayB0fWw9MSxxPTk2''@;'; put 'put ''O2JyZWFrIGV9YVs0NzM5OF09LTIscD1NO2JyZWFrIHQ7ZGVmYXVsdDpwPU19fXdoaWxlKDApO2Zvcig7bDw8MTY+PjE2IT04Oyl7aWYoKDB8cCk9PSgwfGMpKXtsPTEscT05NjticmVhayBlfWY9ZistNHwwLHA9bD1wKy0yfDAsbD0wfGl0WzY1NTM0KyhpdFtsPj4xXTw8MSk+PjFdfWFbKGY9''@;'; put 'put ''Zis0fDApPj4yXT1hWzQ3Mzk5XSxsPTEsQT0zfWRve2lmKDIzPT0oMHxxKSl7c3dpdGNoKHE9MCxsPTB8YVtmKygxLShBPTB8WHRbMTQwMjc3K3A+PjBdKTw8Mik+PjJdLDB8cCl7Y2FzZSA0OnE9MjY7YnJlYWsgZTtjYXNlIDI6YVs0NzQwMF09MHxKYigwfGFbZistND4+Ml0sMik7YnJlYWs7''@;'; put 'put ''Y2FzZSAzOmFbNDc0MDBdPTB8SmIoMHxhW2YrLTQ+PjJdLDEpO2JyZWFrO2Nhc2UgNTpsPTB8U20oKTticmVhaztjYXNlIDg6VkUoMHxhWzQ3NDAxXSk7YnJlYWs7Y2FzZSA5OlE5KDB8YVtmPj4yXSk7YnJlYWs7Y2FzZSAxODpjYXNlIDIwOmNhc2UgMjI6Y2FzZSAyNDpjYXNlIDI2OmNhc2Ug''@;'; put 'put ''Mjg6Y2FzZSAzMDpjYXNlIDMyOlY0KDB8YVtmPj4yXSk7YnJlYWs7Y2FzZSAxOTpjYXNlIDIxOmNhc2UgMjM6Y2FzZSAyNTpjYXNlIDI3OmNhc2UgMjk6Y2FzZSAzMTpjYXNlIDMzOnhkKCk7YnJlYWs7Y2FzZSAzNDpjYXNlIDQxOmNhc2UgNDI6Y2FzZSA0MzpjYXNlIDQ0OmNhc2UgNDU6Y2Fz''@;'; put 'put ''ZSA2NDpsPTB8YVtmKy00Pj4yXTticmVhaztjYXNlIDM1OmNhc2UgNDA6Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDY1Omw9MHxhW2Y+PjJdO2JyZWFrO2Nhc2UgMzg6aWYoKG09MHxhWzQrKGw9MHxhWzQ3NDAxXSk+PjJdKT4+PjA+PSgwfGFbbCs4Pj4yXSk+Pj4wJiYo''@;'; put 'put ''UTAobCwxKSxsPW09MHxhWzQ3NDAxXSxtPTB8YVttKzQ+PjJdKSxmZVttPj4wXT0wLGFbbCs0Pj4yXT1EPTB8YVtsPj4yXSwwfFhiKEQpKXtxPTUxO2JyZWFrIGV9YVs4MCsoMHxhW2Y+PjJdKT4+Ml09YVs0NzQwMl0sbD0wfGlzKDU2MDMyLDB8YVs0NTgwXSksYVs4NCsoMHxhW2Y+PjJdKT4+''@;'; put 'put ''Ml09bCxhWzQ3NDAyXT1hW2Y+PjJdLGFbMTA4KygwfGFbZj4+Ml0pPj4yXT1hW2FbNDc0MDNdPj4yXSxsPTB8YVtmPj4yXTticmVhaztjYXNlIDM5OmlmKChtPTB8YVs0KyhsPTB8YVs0NzQwMV0pPj4yXSk+Pj4wPj0oMHxhW2wrOD4+Ml0pPj4+MCYmKFEwKGwsMSksbD1tPTB8YVs0NzQwMV0s''@;'; put 'put ''bT0wfGFbbSs0Pj4yXSksZmVbbT4+MF09MCxhW2wrND4+Ml09RD0wfGFbbD4+Ml0sMHxYYihEKSl7cT01NjticmVhayBlfWFbNDc0MDJdPWFbODArKGw9MHxhWzQ3NDAyXSk+PjJdO2JyZWFrO2Nhc2UgNTA6ZmVbMTIrKDB8YVtmKy04Pj4yXSk+PjBdPTEsbD0wfGFbZj4+Ml07YnJlYWs7Y2Fz''@;'; put 'put ''ZSA1MTpiMSgpO2JyZWFrO2Nhc2UgNTI6bD0wfGh1KCk7YnJlYWs7Y2FzZSA1NTpmZVsobD0xMDArKDB8YVtmKy04Pj4yXSl8MCk+PjBdPTF8ZmVbbD4+MF0sbD0wfGFbZj4+Ml07YnJlYWs7Y2FzZSA1NjpNbSgwfGFbZistND4+Ml0sMHxhW2Y+PjJdLDEpO2JyZWFrO2Nhc2UgNTc6Y2FzZSA1''@;'; put 'put ''OTpjYXNlIDYxOmw9MHxhW2YrLTEyPj4yXTticmVhaztjYXNlIDU4Ok1tKDB8YVtmKy00Pj4yXSwwfGFbZj4+Ml0sMik7YnJlYWs7Y2FzZSA2MDpNbSgwfGFbZistND4+Ml0sMHxhW2Y+PjJdLDMpO2JyZWFrO2Nhc2UgNjI6TW0oMHxhW2Y+PjJdLDB8U20oKSwyKTticmVhaztjYXNlIDYzOmw9''@;'; put 'put ''MHxhW2YrLTg+PjJdfWlmKEQ9ZisoKG09MC1BfDApPDwyKXwwLG09TSsobTw8MSl8MCxmPUQrNHwwLGFbRCs0Pj4yXT1sLChwPShEPTB8aXRbbT4+MV0pKygwfGl0WzY1NzY2KygobD0oMHxYdFsxNDA0NDkrcD4+MF0pLTQxfDApPDwxKT4+MV0pfDApPj4+MDwyNzImJigwfGZlWzEzOTYxNytw''@;'; put 'put ''Pj4wXSk9PSgwfEQpKXtsPTB8ZmVbMTM5ODg5K3A+PjBdLEE9UixwPW07YnJlYWt9bD0wfGZlWzE0MDUxOStsPj4wXSxBPVIscD1tfX13aGlsZSgwKTttPXcsRD1sLFI9QSxNPXArMnwwfTI2PT0oMHxxKT8oRDMoKSxsPTEscT05Nik6NTE9PSgwfHEpPyhOYSgxNDAzNDcpLEQzKCksbD0xLHE9''@;'; put 'put ''OTYpOjU2PT0oMHxxKT8oTmEoMTQwMzk4KSxEMygpLGw9MSxxPTk2KTo5NT09KDB8cSkmJihOYSgxNDA1NTgpLGw9MixxPTk2KSw5Nj09KDB8cSkmJigwfGMpIT0oMHxHKSYmRnQoYyksbGU9cGV9KCksYVtjPj4yXT0wfGZ1bmN0aW9uIEs5KCl7dmFyIGw7cmV0dXJuIGw9KGZlWzE4OTY2MV18''@;'; put 'put ''ZmVbMTg5NjYwXSk8PDI0Pj4yNCxBXygwfGFbNDc0MDddKSxDMigxODk2NDQpLDB8bH0oKSxsPTB8YVs0NzQwMF0pLE5sKDB8YVs0NzQwNV0pLE5sKDB8YVs0NzQwNl0pLGFbNDc0MDVdPTAsYVs0NzQwNl09MCxhWzQ3NDAzXT0wLEMyKHApLGxlPW0sMHxsfSgwfGFbYz4+Ml0sRCxiKSxwPygx''@;'; put 'put ''PT0oMHxmZVsoZj1wKzR8MCk+PjBdKT8oMD09KDB8YVsyNCsoMHxhW3A+PjJdKT4+Ml0pJiYwfHdtKGwpJiYoQT0wfHJhKDB8d20obCkpLGFbMjQrKDB8YVtwPj4yXSk+PjJdPUEpLGs9MHxDRShrLDB8YVtwPj4yXSwwLGIpLGFbRD4+Ml09YVtEPj4yXXxrLE1iKHcsLShxPS41KitfWzY0Kyhr''@;'; put 'put ''PTB8YVtwPj4yXSk+PjNdKSwtKEc9LjUqK19bays3Mj4+M10pLHEsRyksaz0wfGFbcD4+Ml0sYVtNPj4yXT1hW3c+PjJdLGFbTSs0Pj4yXT1hW3crND4+Ml0sYVtNKzg+PjJdPWFbdys4Pj4yXSxhW00rMTI+PjJdPWFbdysxMj4+Ml0sYVtNKzE2Pj4yXT1hW3crMTY+PjJdLGFbTSsyMD4+Ml09''@;'; put 'put ''YVt3KzIwPj4yXSxhW00rMjQ+PjJdPWFbdysyND4+Ml0sYVtNKzI4Pj4yXT1hW3crMjg+PjJdLGtFKGssTSwxNSkpOihTRSgwfGFbMTQ0KygwfGFbaysxNj4+Ml0pPj4yXSwwfGFbcD4+Ml0sYiksTWIodywtKEc9LjUqK19bMjQrKE09MHxhW3A+PjJdKT4+M10pLC0ocT0uNSorX1tNKzMyPj4z''@;'; put 'put ''XSksRyxxKSxhWyhNPTgrKDB8YVtwPj4yXSl8MCk+PjJdPWFbdz4+Ml0sYVtNKzQ+PjJdPWFbdys0Pj4yXSxhW00rOD4+Ml09YVt3Kzg+PjJdLGFbTSsxMj4+Ml09YVt3KzEyPj4yXSxhW00rMTY+PjJdPWFbdysxNj4+Ml0sYVtNKzIwPj4yXT1hW3crMjA+PjJdLGFbTSsyND4+Ml09YVt3KzI0''@;'; put 'put ''Pj4yXSxhW00rMjg+PjJdPWFbdysyOD4+Ml0pLF9bYysyND4+M109K19bdysxNj4+M10tK19bdz4+M10sX1tjKzMyPj4zXT0rX1t3KzI0Pj4zXS0rX1t3Kzg+PjNdLGFbYys3Mj4+Ml09cCwxPT0oMHxmZVtmPj4wXSkmJihGdCgwfGFbYz4+Ml0pLGFbYz4+Ml09MHxyYSgxNDE2MTEpKSxmPTB8''@;'; put 'put ''YVtEPj4yXSk6KHVzKE0sMTI4LG0pLGZlW2MrODI+PjBdPTAsZj0wfHJhKDB8ZnVuY3Rpb24gcVIobCxjKXtsfD0wLGN8PTA7dmFyIGY9MDtlOmRve3N3aXRjaCgwfGtpKGwpKXtjYXNlIDA6Y2FzZSAxOnVvKGMsMHx0aShsKSk7YnJlYWs7Y2FzZSAyOmlmKHVvKGMsMHx0aSgwfGFbKDM9PSgz''@;'; put 'put ''JmFbbD4+Ml18MCk/bDpsKzQ4fDApKzQwPj4yXSkpLGY9bCstNDh8MCx1byhjLDB8dGkoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6ZikrNDA+PjJdKSksMHxTYygwfGNyKDB8YVsoMj09KDMmYVtsPj4yXXwwKT9sOmYpKzQwPj4yXSkpKXt1byhjLDEzNzczOCk7YnJlYWsgZX11byhjLDE0MTc0''@;'; put 'put ''Nyk7YnJlYWsgZX19d2hpbGUoMCk7cmV0dXJuKGw9MHxhWyhmPWMrNHwwKT4+Ml0pPj4+MD49KDB8YVtjKzg+PjJdKT4+PjAmJihRMChjLDEpLGw9MHxhW2Y+PjJdKSxmZVtsPj4wXT0wLGFbZj4+Ml09Yz0wfGFbYz4+Ml0sMHxjfShsLE0pKSxhW2M+PjJdPWYsZj0xPT0oMHxhW2MrMTI+PjJd''@;'; put 'put ''KT8wfHlrKGYpOjB8Uk4oZiwwfGFbQT4+Ml0pLEZ0KDB8YVtjPj4yXSksYVtjPj4yXT1mLHc3KDB8YVsxNDQrKDB8YVtrKzE2Pj4yXSk+PjJdLGMpLEMyKE0pLGY9MHxhW0Q+PjJdKSxsZT1SLDB8Zn1mdW5jdGlvbiB3bShsKXt2YXIgYz0wLGY9MDswIT0oMHwoYz0wfExpKGx8PTAsMTM3NzI5''@;'; put 'put ''KSkpJiYwIT0oMHxmZVtjPj4wXSl8fChmPTMpO2Rve2lmKDM9PSgwfGYpKXtpZigwfChjPTB8TGkobCwxNDA4MjMpKSYmMHxmZVtjPj4wXSlicmVhaztjPTB9fXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gQ0UobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIGIsTSxHLHBlLGdlLG09''@;'; put 'put ''MCxBPTAsdz0wLGs9MCxEPTAsUj0wLHE9MDtmb3IoZ2U9bGUsbGU9bGUrMTZ8MCxxPWdlKzh8MCxHPWdlLDB8KG09MHxhWyhwZT0xMDgrKGN8PTApfDApPj4yXSkmJmJvKHAsbSwxODY1NzYpLGFbYys4MD4+Ml09ZixtPTB8ZnVuY3Rpb24gbkIobCxjLGYpe2x8PTAsZnw9MDt2YXIgZ2UsYmUs''@;'; put 'put ''T2UscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wO2ZvcihnZT0wfGFbKGI9ODQrKGN8PTApfDApPj4yXSxiZT0wfHg3KCksT2U9MHxNRSgpLG09MCxwPTAsdz0wfHMwKGdlKTt3Oyl7Zm9yKEE9MHxzMCgwfGFbdys4Pj4yXSk7QTspQT0wfGFbQT4+Ml0s''@;'; put 'put ''bT1tKzF8MDtwPXArMXwwLDB8ZmVbdysxMj4+MF0mJkVFKE9lLHApLHc9MHxhW3c+PjJdfWZvcihwPTB8dnIoNCsobTw8Mil8MCksYVtiPj4yXT1wLG09MCxBPTAsdz0wLEc9MCxxPTB8czAoZ2UpO3E7KXtmb3IocGU9NjU1MzUmRyxSPTAsRD0wfHMwKDB8YVtxKzg+PjJdKTtEOylhW3A+PjJd''@;'; put 'put ''PU09MHxhW0QrOD4+Ml0sdz0wfHJCKGwsTSxjLGYpfHcsYj0wfGlCKGJlLEcsUixNKSxpdFtNKzg2Pj4xXT1wZSxpdFtNKzg0Pj4xXT1iLGI9YisoMHxocltNKzgwPj4xXSl8MCwwfFRiKE9lLGs9RysoMHxocltNKzgyPj4xXSl8MCkmJihmZVsoUj1NKzEwMHwwKT4+MF09MnxmZVtSPj4wXSks''@;'; put 'put ''Uj1iLHA9cCs0fDAsRD0wfGFbRD4+Ml0sbT0oMHxiKT4oMHxtKT9iOm0sQT0oMHxrKT4oMHxBKT9rOkE7Rz1HKzF8MCxxPTB8YVtxPj4yXX1yZXR1cm4gYVtjKzEwMD4+Ml09QSxhW2MrMTA0Pj4yXT1tLE5sKGdlKSxObChPZSkseXkoYmUpLDB8d30obCxjLHApLDEyOCYobD0wfGl0WyhEPWMr''@;'; put 'put ''MzZ8MCk+PjFdKXx8KGZlW2MrMzI+PjBdPTIpLGY9YyszM3wwLDMyJmx8fChmZVtmPj4wXT0xKSxmdW5jdGlvbiAkUihsKXtsfD0wO3ZhciBjLGYsQSxwPTAsbT0wO0E9bGUsbGU9bGUrMTZ8MCxtPUErNHwwLGFbKGM9QSk+PjJdPWFbNDY0N10sMSE9KDB8KGY9MHxhW2wrMTAwPj4yXSkpJiYx''@;'; put 'put ''IT0oMHxhWyhwPWwrMTA0fDApPj4yXSk/KGFbbCs5Mj4+Ml09MHx2cig0KyhmPDwyKXwwKSxhW2wrOTY+PjJdPTB8dnIoNCsoYVtwPj4yXTw8Mil8MCksZmVbbT4+MF09MHxmZVtjPj4wXSxmZVttKzE+PjBdPTB8ZmVbYysxPj4wXSxmZVttKzI+PjBdPTB8ZmVbYysyPj4wXSxmZVttKzM+PjBd''@;'; put 'put ''PTB8ZmVbYyszPj4wXSxwPTB8b2MoMTM3NDczLG0sMCksZmVbbT4+MF09MHxmZVtjPj4wXSxmZVttKzE+PjBdPTB8ZmVbYysxPj4wXSxmZVttKzI+PjBdPTB8ZmVbYysyPj4wXSxmZVttKzM+PjBdPTB8ZmVbYyszPj4wXSxtPTB8b2MoMTM3NDc4LG0sMCksaDAocCwxMzc0ODMsMjgwLDEpLGgw''@;'; put 'put ''KG0sMTM3NDgzLDI4MCwxKSxmdW5jdGlvbiBGOShsLGMsZil7Y3w9MDt2YXIgYixrLHA9MCxtPTAsQT0wLHc9MCxNPTAsRD0wLFI9MDtmb3IoYj0xMDQrKGx8PTApfDAsaz1sKzEwMHwwLHc9MTYrKGZ8PTApfDAscD0wLG09MDshKCgwfHApPigwfGFbYj4+Ml0pKTspaDAoQT0wfEdyKGYsMHxG''@;'; put 'put ''NChwKSwxKSwxMzc0NDcsMzA0LDEpLGFbMTc2KygwfGFbKE09QSsxNnwwKT4+Ml0pPj4yXT0wLFI9MHx2cig0KyhhW2s+PjJdPDwyKXwwKSxhWzE3MisoRD0wfGFbTT4+Ml0pPj4yXT1SLGFbRCsxODQ+PjJdPTAsRD0wfHZyKDQrKGFbaz4+Ml08PDIpfDApLGFbMTgwKygwfGFbTT4+Ml0pPj4y''@;'; put 'put ''XT1ELG0/YVsxNjQrKDB8YVttKzE2Pj4yXSk+PjJdPUE6YVsxOTIrKDB8YVt3Pj4yXSk+PjJdPUEscD1wKzF8MCxtPUE7Zm9yKHc9YysxNnwwLHA9MCxtPTA7ISgoMHxwKT4oMHxhW2s+PjJdKSk7KWgwKEE9MHxHcihjLDB8RjQocCksMSksMTM3NDQ3LDMwNCwxKSxhWzE3NisoMHxhWyhSPUEr''@;'; put 'put ''MTZ8MCk+PjJdKT4+Ml09MCxNPTB8dnIoNCsoYVtiPj4yXTw8Mil8MCksYVsxNzIrKEQ9MHxhW1I+PjJdKT4+Ml09TSxhW0QrMTg0Pj4yXT0wLEQ9MHx2cig0KyhhW2I+PjJdPDwyKXwwKSxhWzE4MCsoMHxhW1I+PjJdKT4+Ml09RCxtP2FbMTY0KygwfGFbbSsxNj4+Ml0pPj4yXT1BOmFbMTky''@;'; put 'put ''KygwfGFbdz4+Ml0pPj4yXT1BLHA9cCsxfDAsbT1BO2ZvcihwPTB8YVtsKzg0Pj4yXTttPTB8YVtwPj4yXTspVDMoZixEPTB8R3IoZiwwfEY0KDB8aHJbKFI9bSs4NHwwKT4+MV0pLDApLFI9MHxHcihmLDB8RjQoKDB8aHJbbSs4MD4+MV0pKygwfGhyW1I+PjFdKXwwKSwwKSx+fitfW20rNjQ+''@;'; put 'put ''PjNdKSxUMyhjLEQ9MHxHcihjLDB8RjQoMHxoclsoUj1tKzg2fDApPj4xXSksMCksUj0wfEdyKGMsMHxGNCgoMHxoclttKzgyPj4xXSkrKDB8aHJbUj4+MV0pfDApLDApLH5+K19bbSs3Mj4+M10pLHA9cCs0fDA7ZzYoZiksZzYoYyl9KGwscCxtKSxrNyhwLDIsMjE0NzQ4MzY0NyksazcobSwy''@;'; put 'put ''LDIxNDc0ODM2NDcpLGZ1bmN0aW9uIG02KGwsYyxmKXtmfD0wO3ZhciBBLHA9MCxtPTAsdz0wO2ZvcihBPTkyKyhsfD0wKXwwLHA9MCxtPTAsYz0wfGFbMTYrKDB8YVsxOTIrKDB8YVsxNisoY3w9MCk+PjJdKT4+Ml0pPj4yXTtjPTB8YVtjKzE2ND4+Ml07KWFbKDB8YVtBPj4yXSkrKG08PDIp''@;'; put 'put ''Pj4yXT0oMHxhWyh3PTIzMisoYz0wfGFbYysxNj4+Ml0pfDApPj4yXSktcCxwPTB8YVt3Pj4yXSxtPW0rMXwwO2ZvcihsPWwrOTZ8MCxwPTAsbT0wLGM9MHxhWzE2KygwfGFbMTkyKygwfGFbZisxNj4+Ml0pPj4yXSk+PjJdO2M9MHxhW2MrMTY0Pj4yXTspYVsoMHxhW2w+PjJdKSsobTw8Mik+''@;'; put 'put ''PjJdPSgwfGFbKHc9MjMyKyhjPTB8YVtjKzE2Pj4yXSl8MCk+PjJdKS1wLHA9MHxhW3c+PjJdLG09bSsxfDB9KGwscCxtKSxmdW5jdGlvbiBTYihsLGMpe2x8PTA7dmFyIGY9MCxwPTAsbT0wO2ZvcihmPTE5MisoMHxhWzE2KyhjfD0wKT4+Ml0pfDA7Zj0wfGFbZj4+Ml07KShwPTB8YVsxNzIr''@;'; put 'put ''KGY9MHxhWyhtPWYrMTZ8MCk+PjJdKT4+Ml0pJiYoRnQocCksZj0wfGFbbT4+Ml0pLChwPTB8YVtmKzE4MD4+Ml0pJiYoRnQocCksZj0wfGFbbT4+Ml0pLGY9ZisxNjR8MDtDMShsKSxDMShjKX0ocCxtKSk6ZnVuY3Rpb24geW0obCl7dmFyIGssTSxELGM9MCxmPTAscD0wLG09MCxBPTAsdz0w''@;'; put 'put ''LGI9MCxSPTAsRz0wO2ZvcihhWyhEPTkyKyhsfD0wKXwwKT4+Ml09MHx2cig0KyhhW2wrMTAwPj4yXTw8Mil8MCksaz0wfHZyKDQrKGFbbCsxMDQ+PjJdPDwyKXwwKSxhW2wrOTY+PjJdPWssTT1sKzMyfDAsYj0wfGFbbCs4ND4+Ml07dz0wfGFbYj4+Ml07KXtmb3IoYz0rX1t3KzcyPj4zXSxw''@;'; put 'put ''PShsPTB8aXRbdys4Mj4+MV0pPDwxNj4+MTY9PTE/fn5jOigwfChwPX5+KChjLSsoMHxBcigoMHxmZVtNPj4wXSktMXwwLCg2NTUzNSZsKS0xfDApKSkvKyg2NTUzNSZsKSkpKT4xP3A6MSxjPStfW3crNjQ+PjNdLEE9KG09MHxpdFt3KzgwPj4xXSk8PDE2Pj4xNj09MT9+fmM6KDB8KEE9fn4o''@;'; put 'put ''KGMtKygwfEFyKCgwfGZlW00+PjBdKS0xfDAsKDY1NTM1Jm0pLTF8MCkpKS8rKDY1NTM1Jm0pKSkpPjE/QToxLGY9KDY1NTM1JmwpKyhSPTB8aHJbdys4Nj4+MV0pfDAsbD1SOyEoKDB8bCk+PSgwfGYpKTspYVsoUj0oMHxhW0Q+PjJdKSsobDw8Mil8MCk+PjJdPSgwfChHPTB8YVtSPj4yXSkp''@;'; put 'put ''PigwfHApP0c6cCxsPWwrMXwwO2ZvcihmPSg2NTUzNSZtKSsobD0wfGhyW3crODQ+PjFdKXwwOyEoKDB8bCk+PSgwfGYpKTspYVsoRz1rKyhsPDwyKXwwKT4+Ml09KDB8KFI9MHxhW0c+PjJdKSk+KDB8QSk/UjpBLGw9bCsxfDA7Yj1iKzR8MH19KGwpLGxlPUF9KGMpLGw9MHxBcigxKyh3PTB8''@;'; put 'put ''YVtjKzEwND4+Ml0pfDAsaz0wfGZlW2MrMzI+PjBdKSxiPVh0W2Y+PjBdPDwxLGs9MHxBcigxKyhNPTB8YVtjKzEwMD4+Ml0pfDAsayksQT1jKzk2fDAsbD1iK2x8MCxmPTA7ISgoMHxmKT49KDB8dykpOylsPSgwfGFbKDB8YVtBPj4yXSkrKGY8PDIpPj4yXSkrbHwwLGY9ZisxfDA7Zm9yKHc9''@;'; put 'put ''Yys5MnwwLGY9aytifDAsQT0wOyEoKDB8QSk+PSgwfE0pKTspZj0oMHxhWygwfGFbdz4+Ml0pKyhBPDwyKT4+Ml0pK2Z8MCxBPUErMXwwO3c9YyszOHwwO2Rve2lmKDEmaXRbRD4+MV0pe2lmKEE9NjU1MzUmKEQ9MHxpdFt3Pj4xXSksRDw8MTY+PjE2JiYoUj0wfGl0W2MrNDA+PjFdKTw8MTY+''@;'; put 'put ''PjE2KXtpZighKCgwfGwpPigwfEEpfCgwfGYpPig2NTUzNSZSfDApKSl7Zj0wLGw9MDticmVha30kcigwLDEzNzUyOSxHKSxtPTEsZj0wLGw9MDticmVha30kcigwLDEzNzU2MyxxKSxtPTF9fXdoaWxlKDApO3JldHVybiBfW2MrNjQ+PjNdPSsoMHwoKDB8bCk+KDB8KHE9MHxoclt3Pj4xXSkp''@;'; put 'put ''P2w6cSkpLF9bYys3Mj4+M109KygwfCgoMHxmKT4oMHwocT0wfGhyW2MrNDA+PjFdKSk/ZjpxKSksMHxhW3BlPj4yXSYmX0UocCwxODY1NzYpLGxlPWdlLDB8bX1mdW5jdGlvbiBNYihsLGMsZixwLG0pe2Y9K2YscD0rcCxtPSttLF9bKGx8PTApPj4zXT1jPStjLF9bbCs4Pj4zXT1mLF9bbCsx''@;'; put 'put ''Nj4+M109cCxfW2wrMjQ+PjNdPW19ZnVuY3Rpb24ga0UobCxjLGYpe2N8PTAsZnw9MDt2YXIgUixnZSxiZSxSZSxWZSxxZSxydCxhdCxTdCxrdCxzdCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLEc9MCxxPTAscGU9MCxPZT0wLExlPTAsSGU9MCxXZT0wLEV0PTAsWnQ9MDtzdD1s''@;'; put 'put ''ZSxsZT1sZSs2NHwwLFN0PXN0KzMyfDAsa3Q9c3QsV2U9MHxhWzg0KyhsfD0wKT4+Ml0sMHwoQT0wfGFbbCs4MD4+Ml0pJiYwfChwPTB8YVtBKzI0Pj4yXSkmJjA9PSgwfGFbKG09bCsyNHwwKT4+Ml0pJiYoYVttPj4yXT0wfHJhKHApKSxhdD1sKzQ4fDAsKDB8KEE9fn4oKGI9K19bKHA9Yysx''@;'; put 'put ''NnwwKT4+M10pLSh3PStfW2M+PjNdKS0rKDB8fn4rX1tsKzY0Pj4zXSkpKSk8PS0xJiZQcigxMzc0OTYsMTM3MzQyLDE3NjEsMTM3NTA2KSwoMHwoRz1+figoTGU9K19bKGs9YysyNHwwKT4+M10pLShEPStfWyhNPWMrOHwwKT4+M10pLShSPSsoMHx+fitfW2wrNzI+PjNdKSkpKSk8PS0xJiZQ''@;'; put 'put ''cigxMzc1MTksMTM3MzQyLDE3NjQsMTM3NTA2KSxtPTY1NTM1JihxPTB8aXRbbCszNj4+MV0pO2U6ZG97aWYoMSZtKXt0OmRve2lmKCgwfEEpPjApc3dpdGNoKDYmbSl7Y2FzZSA0Ol9bcD4+M109dytSO2JyZWFrIHQ7Y2FzZSAyOl9bcD4+M109YisoRXQ9KygwfEEpKSxfW2M+PjNdPXcrPUV0''@;'; put 'put ''O2JyZWFrIHQ7ZGVmYXVsdDpfW2M+PjNdPXcrPUV0PSsoQT4+PjF8MCksX1twPj4zXT1iLUV0O2JyZWFrIHR9fXdoaWxlKDApO2lmKCgwfEcpPjApc3dpdGNoKDI0JnEpe2Nhc2UgMTY6X1trPj4zXT1MZT1EK1IsRz0wLHA9MDticmVhayBlO2Nhc2UgODpfW2s+PjNdPUxlKz1FdD0rKDB8Ryks''@;'; put 'put ''X1tNPj4zXT1EK0V0LEc9MCxwPTA7YnJlYWsgZTtkZWZhdWx0Ol9bTT4+M109RCsoRXQ9KyhHPj4+MXwwKSksX1trPj4zXT1MZS09RXQsRz0wLHA9MDticmVhayBlfWVsc2UgRz0wLHA9MH1lbHNlIHA9QX13aGlsZSgwKTtmb3IoYj0rKDB8WHRbbCszMz4+MF0pLEQ9KygocGU9MHxmZVsocWU9''@;'; put 'put ''bCszMnwwKT4+MF0pPDwyND4+MjQpLGs9fn4oKygwfChrPXAtKDB8QXIocT0oMHxwKS8oMHwoQT0wfGFbKHJ0PWwrMTA0fDApPj4yXSkpfDAsQSkpfDApKSsoKDB8ayk+LTE/LjU6LS41KSksVmU9bCs5NnwwLE09cGU8PDI0Pj4yNCxwPX5+KHcrYitEKSxtPTA7ISgoMHxtKT4oMHxBKSk7KUE9''@;'; put 'put ''MHxhWyhIZT0oMHxhW1ZlPj4yXSkrKG08PDIpfDApPj4yXSxhW0hlPj4yXT1wLHA9cCtxKygoMHxtKTwoMHxrKSYxKStBK018MCxtPW0rMXwwLEE9MHxhW3J0Pj4yXTtmb3IoTT1+figrKDB8KE09Ry0oMHxBcihxPSgwfEcpLygwfChBPTB8YVsoSGU9bCsxMDB8MCk+PjJdKSl8MCxBKSl8MCkp''@;'; put 'put ''KygoMHxNKT4tMT8uNTotLjUpKSxSZT1sKzkyfDAsaz1wZTw8MjQ+PjI0LHA9fn4oTGUtYi1EKSxtPTA7ISgoMHxtKT4oMHxBKSk7KUE9MHxhWyhPZT0oMHxhW1JlPj4yXSkrKG08PDIpfDApPj4yXSxhW09lPj4yXT1wLHA9cC1xKygoKDB8bSk8KDB8TSkpPDwzMT4+MzEpLUEta3wwLG09bSsx''@;'; put 'put ''fDAsQT0wfGFbSGU+PjJdO2ZvcihwZT0wPT0oMHxmKSxnZT1rdCsxNnwwLGJlPWt0KzI0fDAsT2U9a3QrOHwwLHA9V2U7az0wfGFbcD4+Ml07KUE9MHxpdFtrKzg0Pj4xXSxwZT8obT0wLE09MHxpdFtrKzgwPj4xXSxHPTB8aXRbays4Nj4+MV0scT0wfGl0W2srODI+PjFdKToobT1BPDwxNj4+''@;'; put 'put ''MTY9PTA/ODowLG09KEc9MHxpdFtrKzg2Pj4xXSk8PDE2Pj4xNj09MD80fG06bSxtPSgoKDY1NTM1JihNPTB8aXRbays4MD4+MV0pKSsoNjU1MzUmQSl8MCk9PSgwfGFbcnQ+PjJdKT8yfG06bSl8KCg2NTUzNSYocT0wfGl0W2srODI+PjFdKSkrKDY1NTM1JkcpfDApPT0oMHxhW0hlPj4yXSkp''@;'; put 'put ''LF9ba3Q+PjNdPSsoMHxhWyhadD0wfGFbVmU+PjJdKSsoKEEmPTY1NTM1KTw8Mik+PjJdKSxfW2dlPj4zXT0rKCgwfGFbWnQrKCg2NTUzNSZNKStBPDwyKT4+Ml0pLShXZT0wfGZlW3FlPj4wXSl8MCksX1tiZT4+M109KygwfGFbKE09MHxhW1JlPj4yXSkrKCg2NTUzNSZHKTw8Mik+PjJdKSxf''@;'; put 'put ''W09lPj4zXT0rKCgwfGFbTSsoKDY1NTM1JnEpKyg2NTUzNSZHKTw8Mik+PjJdKStXZXwwKSxhW1N0Pj4yXT1hW2t0Pj4yXSxhW1N0KzQ+PjJdPWFba3QrND4+Ml0sYVtTdCs4Pj4yXT1hW2t0Kzg+PjJdLGFbU3QrMTI+PjJdPWFba3QrMTI+PjJdLGFbU3QrMTY+PjJdPWFba3QrMTY+PjJdLGFb''@;'; put 'put ''U3QrMjA+PjJdPWFba3QrMjA+PjJdLGFbU3QrMjQ+PjJdPWFba3QrMjQ+PjJdLGFbU3QrMjg+PjJdPWFba3QrMjg+PjJdLGVCKGssU3QsbSZmKSxwPXArNHwwO2ZlW2wrMzU+PjBdPWYsYVthdD4+Ml09YVtjPj4yXSxhW2F0KzQ+PjJdPWFbYys0Pj4yXSxhW2F0Kzg+PjJdPWFbYys4Pj4yXSxh''@;'; put 'put ''W2F0KzEyPj4yXT1hW2MrMTI+PjJdLGFbYXQrMTY+PjJdPWFbYysxNj4+Ml0sYVthdCsyMD4+Ml09YVtjKzIwPj4yXSxhW2F0KzI0Pj4yXT1hW2MrMjQ+PjJdLGFbYXQrMjg+PjJdPWFbYysyOD4+Ml0sbGU9c3R9ZnVuY3Rpb24gU0UobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBiZSxPZSxM''@;'; put 'put ''ZSxSZSxIZSxWZSxxZSxydCxXZSxhdCxTdCxrdCxzdCxFdCxadCxjdCxidCxhbixTbixIbixwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCx1cj0wLEhyPTAsRXI9MDtmb3IoSG49bGUsbGU9bGUrMTEyfDAsc3Q9SG4rNDh8MCxadD1IbixhWyhF''@;'; put 'put ''dD1IbisxNnwwKT4+Ml09MCxhW0V0KzQ+PjJdPTAsYVtFdCs4Pj4yXT0wLGFbRXQrMTI+PjJdPTAsYVtFdCsxNj4+Ml09MCxhW0V0KzIwPj4yXT0wLGFbRXQrMjQ+PjJdPTAsYVtFdCsyOD4+Ml09MCxidD1mKzE2fDAsYW49ZiszMnwwLFNuPUV0KzE2fDAsaz0oRz0wfGl0WyhjdD1jKzR8MCk+''@;'; put 'put ''PjFdKTw8MTY+PjE2LHA9MCxBPS0xLGI9MDs7KXtpZigoMHxiKT49KDB8aykpe3A9MTticmVha31pZigoMHxpdFsobT0wfGFbYz4+Ml0pKygyNCpifDApKzQ+PjFdKT4xKXtwPTA7YnJlYWt9aWYobT0wfGFbNCsoMHxhW20rKDI0KmJ8MCk+PjJdKT4+Ml0pe2lmKDEyNyZhW20rMjQ+PjJdfDAp''@;'; put 'put ''e3A9MDticmVha31fW1NuPj4zXT13PStfWygrX1ttKzE2Pj4zXT4wP206YnQpKzE2Pj4zXSxtPTA9PSgwfGFbbT4+Ml0pP2J0Om19ZWxzZSBfW1NuPj4zXT13PStfW2FuPj4zXSxtPWJ0O2lmKGFbRXQ+PjJdPW09MHxhW20+PjJdLC0xIT1BKXtpZih3IT1BKXtwPTA7YnJlYWt9fWVsc2UgQT13''@;'; put 'put ''O2lmKHApe2lmKDB8WmkobSxwKSl7cD0wO2JyZWFrfX1lbHNlIHA9bTtiPWIrMXwwfWZvcihmZVtjKzY+PjBdPXAsYXQ9Zis0OHwwLFN0PWYrMjB8MCxrdD1FdCs0fDAsT2U9Zis0MHwwLExlPUV0KzI0fDAsUmU9bCsxNDR8MCxIZT1zdCs0fDAsYmU9WnQrOHwwLFZlPXN0KzE2fDAscWU9c3Qr''@;'; put 'put ''MjR8MCxydD1zdCs4fDAsV2U9c3QrMTJ8MCxmPTA9PSgwfHApLEE9MCxxPTAscGU9MCxnZT0wLGs9MCxwPUc7ISgoMHxrKT49KHA8PDE2Pj4xNnwwKSk7KXtmb3Iodz0wLFI9MCxiPTAsRD0wLEE9MCxtPTB8YVtjPj4yXTshKCgwfGIpPj0oMHxpdFttKygyNCprfDApKzQ+PjFdKSk7KWFbc3Q+''@;'; put 'put ''PjJdPTB8bTIoMHxhWygwfGFbbSsoMjQqa3wwKT4+Ml0pKyg1NipifDApPj4yXSwwfGFbYXQ+PjJdKSwocD0wfGFbKDB8YVsobT0oMHxhW2M+PjJdKSsoMjQqa3wwKXwwKT4+Ml0pKyg1NipifDApKzQ+PjJdKT8oKHA9MTI3JmFbcCsyND4+Ml0pfHwocD0xMjcmYVtPZT4+Ml0pLGFbTGU+PjJd''@;'; put 'put ''PS0xMjgmYVtMZT4+Ml18cCxfW1NuPj4zXT0rX1soK19bMTYrKEc9MHxhWygwfGFbbT4+Ml0pKyg1NipifDApKzQ+PjJdKT4+M10+MD9HOmJ0KSsxNj4+M10sYVtFdD4+Ml09YVsoMD09KDB8YVtHPj4yXSk/YnQ6Ryk+PjJdLGFba3Q+PjJdPWFbKDA9PSgwfGFbRys0Pj4yXSk/YnQ6RykrND4+''@;'; put 'put ''Ml0pOihfW1NuPj4zXT0rX1thbj4+M10sYVtFdD4+Ml09YVtidD4+Ml0sYVtrdD4+Ml09YVtTdD4+Ml0sYVtMZT4+Ml09LTEyOCZhW0xlPj4yXXwxMjcmYVtPZT4+Ml0pLGFbSGU+PjJdPTB8bWlbNjMmYVsobT0wfGFbUmU+PjJdKT4+Ml1dKG0sRXQsMSksbEQoWnQsbCxzdCksSHI9K19bWnQ+''@;'; put 'put ''PjNdLE09K19bYmU+PjNdLEZ0KDB8YVsoMHxhWygwfGFbYz4+Ml0pKygyNCprfDApPj4yXSkrKDU2KmJ8MCk+PjJdKSxhWyhHPTB8YVsobT0wfGFbYz4+Ml0pKygyNCprfDApPj4yXSkrKDU2KmJ8MCk+PjJdPWFbc3Q+PjJdLF9bRysoNTYqYnwwKSszMj4+M109SHIsX1tHKyg1NipifDApKzE2''@;'; put 'put ''Pj4zXT0rX1tWZT4+M10sX1tHKyg1NipifDApKzI0Pj4zXT0rX1txZT4+M10sYVtHKyg1NipifDApKzQ+PjJdPWFbSGU+PjJdLGFbRysoNTYqYnwwKSs4Pj4yXT1hW3J0Pj4yXSxhW0crKDU2KmJ8MCkrMTI+PjJdPWFbV2U+PjJdLHc9KEVyPStfW3FlPj4zXSk+dz9Fcjp3LFI9SHIrUixiPWIr''@;'; put 'put ''MXwwLEQ9KHVyPStfW1NuPj4zXSk+RD91cjpELEE9TT5BP006QTtfW20rKDI0Kmt8MCkrOD4+M109UixwPTA9PSgwfGspO2Rve2lmKGYpe2lmKHApe009RCx3PUQtdyxwPW07YnJlYWt9TT1ELHc9cGUtZ2UrRC13LHA9bSsoMjQqa3wwKXwwO2JyZWFrfU09QSx3PXA/RDpBLHA9bSsoMjQqa3ww''@;'; put 'put ''KXwwfXdoaWxlKDApO19bcCsxNj4+M109dyxxPVI+cT9SOnEscGU9TStwZSxnZT0rX1ttKygyNCprfDApKzE2Pj4zXStnZSxrPWsrMXwwLHA9MHxpdFtjdD4+MV19X1tjKzI0Pj4zXT1xLF9bYyszMj4+M109cDw8MTY+PjE2PT0xP0E6cGUsbGU9SG59ZnVuY3Rpb24gZUIobCxjLGYpe2N8PTAs''@;'; put 'put ''Znw9MDt2YXIgUixxLGdlLExlLFJlLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsRz0wLHBlPTAsYmU9MCxPZT0wLEhlPTA7TGU9bGUsbGU9bGUrNjR8MCxnZT1MZSszMnwwLE9lPUxlLDA9PSgwfGFbKG09MjQrKGx8PTApfDApPj4yXSkmJjB8KHA9MHxhWzI0KygwfGFbbCs5Nj4+''@;'; put 'put ''Ml0pPj4yXSkmJihhW20+PjJdPTB8cmEocCkpLHA9NjU1MzUmKGJlPTB8aXRbKHE9bCszNnwwKT4+MV0pO2U6ZG97aWYoMSZwKXtEPStfW2wrNzI+PjNdLGI9KHc9K19bKG09YysxNnwwKT4+M10pLShrPStfW2M+PjNdKS0oQT0rX1tsKzY0Pj4zXSk7dDpkb3tpZihiPjApc3dpdGNoKDYmcCl7''@;'; put 'put ''Y2FzZSA0Ol9bbT4+M109dz1rK0EsQT1rO2JyZWFrIHQ7Y2FzZSAyOl9bbT4+M109dz1iK3csX1tjPj4zXT1BPWsrYjticmVhayB0O2RlZmF1bHQ6X1tjPj4zXT1BPShNPS41KmIpK2ssX1ttPj4zXT13LT1NO2JyZWFrIHR9ZWxzZSBBPWt9d2hpbGUoMCk7aWYoKGs9KE09K19bKHA9YysyNHww''@;'; put 'put ''KT4+M10pLShiPStfWyhtPWMrOHwwKT4+M10pLUQpPjApc3dpdGNoKDI0JmJlKXtjYXNlIDE2Ol9bcD4+M109az1iK0Q7YnJlYWsgZTtjYXNlIDg6X1twPj4zXT1EPWsrTSxfW20+PjNdPWIrPWssaz1EO2JyZWFrIGU7ZGVmYXVsdDpfW20+PjNdPWI9KGsqPS41KStiLF9bcD4+M109az1NLWs7''@;'; put 'put ''YnJlYWsgZX1lbHNlIGs9TX1lbHNlIEE9K19bYz4+M10sYj0rX1tjKzg+PjNdLHc9K19bYysxNj4+M10saz0rX1tjKzI0Pj4zXX13aGlsZSgwKTtzd2l0Y2goYVsoRz1sKzQ4fDApPj4yXT1hW2M+PjJdLGFbRys0Pj4yXT1hW2MrND4+Ml0sYVtHKzg+PjJdPWFbYys4Pj4yXSxhW0crMTI+PjJd''@;'; put 'put ''PWFbYysxMj4+Ml0sYVtHKzE2Pj4yXT1hW2MrMTY+PjJdLGFbRysyMD4+Ml09YVtjKzIwPj4yXSxhW0crMjQ+PjJdPWFbYysyND4+Ml0sYVtHKzI4Pj4yXT1hW2MrMjg+PjJdLGZlW2wrMzU+PjBdPWYsX1tPZT4+M109TT1BKyhIZT0rKDB8WHRbbCszMz4+MF0pKSsoUmU9KygwfFh0W2wrMzQ+''@;'; put 'put ''PjBdKSksX1soRz1PZSs4fDApPj4zXT1EPWIrSGUrUmUsX1soYz1PZSsxNnwwKT4+M109Yj13LUhlLVJlLF9bKFI9T2UrMjR8MCk+PjNdPWs9ay1IZS1SZSxtPWwrODh8MCwwfGZlW2wrOTI+PjBdKXtjYXNlIDE6YmU9MHxhW20+PjJdLGFbZ2U+PjJdPWFbT2U+PjJdLGFbZ2UrND4+Ml09YVtP''@;'; put 'put ''ZSs0Pj4yXSxhW2dlKzg+PjJdPWFbT2UrOD4+Ml0sYVtnZSsxMj4+Ml09YVtPZSsxMj4+Ml0sYVtnZSsxNj4+Ml09YVtPZSsxNj4+Ml0sYVtnZSsyMD4+Ml09YVtPZSsyMD4+Ml0sYVtnZSsyND4+Ml09YVtPZSsyND4+Ml0sYVtnZSsyOD4+Ml09YVtPZSsyOD4+Ml0sa0UoYmUsZ2UsZik7YnJl''@;'; put 'put ''YWs7Y2FzZSAzOkE9K19bMjQrKHA9MHxhW20+PjJdKT4+M10sdz1iLU0tK19bcCsxNj4+M107ZTpkb3tpZih3PjApc3dpdGNoKDYmYmUpe2Nhc2UgNDpfW2M+PjNdPWItdzticmVhayBlO2Nhc2UgMjpfW09lPj4zXT13K007YnJlYWsgZTtkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKDApO0E9ay1E''@;'; put 'put ''LUE7ZTpkb3tpZihBPjApc3dpdGNoKDI0JmJlKXtjYXNlIDE2Ol9bUj4+M109ay1BO2JyZWFrIGU7Y2FzZSA4Ol9bRz4+M109QStEO2JyZWFrIGU7ZGVmYXVsdDpicmVhayBlfX13aGlsZSgwKTthW2dlPj4yXT1hW09lPj4yXSxhW2dlKzQ+PjJdPWFbT2UrND4+Ml0sYVtnZSs4Pj4yXT1hW09l''@;'; put 'put ''Kzg+PjJdLGFbZ2UrMTI+PjJdPWFbT2UrMTI+PjJdLGFbZ2UrMTY+PjJdPWFbT2UrMTY+PjJdLGFbZ2UrMjA+PjJdPWFbT2UrMjA+PjJdLGFbZ2UrMjQ+PjJdPWFbT2UrMjQ+PjJdLGFbZ2UrMjg+PjJdPWFbT2UrMjg+PjJdLGZ1bmN0aW9uIHRCKGwsYyl7YVsobHw9MCk+PjJdPWFbKGN8PTAp''@;'; put 'put ''Pj4yXSxhW2wrND4+Ml09YVtjKzQ+PjJdLGFbbCs4Pj4yXT1hW2MrOD4+Ml0sYVtsKzEyPj4yXT1hW2MrMTI+PjJdLGFbbCsxNj4+Ml09YVtjKzE2Pj4yXSxhW2wrMjA+PjJdPWFbYysyMD4+Ml0sYVtsKzI0Pj4yXT1hW2MrMjQ+PjJdLGFbbCsyOD4+Ml09YVtjKzI4Pj4yXX0ocCxnZSk7YnJl''@;'; put 'put ''YWs7ZGVmYXVsdDpBPStfWzMyKyhwPTB8YVttPj4yXSk+PjNdLHc9Yi1NLStfW3ArMjQ+PjNdO2U6ZG97aWYodz4wJiYocGU9NiZiZSxwZTw8MTY+PjE2IT02KSlzd2l0Y2goNyZwZSl7Y2FzZSA0Ol9bYz4+M109Yi13O2JyZWFrIGU7Y2FzZSAyOl9bT2U+PjNdPXcrTTticmVhayBlO2RlZmF1''@;'; put 'put ''bHQ6X1tPZT4+M109KEhlPS41KncpK00sX1tjPj4zXT1iLUhlO2JyZWFrIGV9fXdoaWxlKDApO0E9ay1ELUE7ZTpkb3tpZihBPjApc3dpdGNoKDI0JmJlKXtjYXNlIDE2Ol9bUj4+M109ay1BO2JyZWFrIGU7Y2FzZSA4Ol9bRz4+M109QStEO2JyZWFrIGU7ZGVmYXVsdDpfW0c+PjNdPShIZT0u''@;'; put 'put ''NSpBKStELF9bUj4+M109ay1IZTticmVhayBlfX13aGlsZSgwKTthWyhiZT1wKzh8MCk+PjJdPWFbT2U+PjJdLGFbYmUrND4+Ml09YVtPZSs0Pj4yXSxhW2JlKzg+PjJdPWFbT2UrOD4+Ml0sYVtiZSsxMj4+Ml09YVtPZSsxMj4+Ml0sYVtiZSsxNj4+Ml09YVtPZSsxNj4+Ml0sYVtiZSsyMD4+''@;'; put 'put ''Ml09YVtPZSsyMD4+Ml0sYVtiZSsyND4+Ml09YVtPZSsyND4+Ml0sYVtiZSsyOD4+Ml09YVtPZSsyOD4+Ml0sZnVuY3Rpb24gRWIobCxjKXtjfD0wO3ZhciBwLGY9MCxtPTA7Zm9yKHA9MHxpdFs0KyhsfD0wKT4+MV0sZj0wOyEoKDB8Zik+PSgwfHApKTspMHxmZVsobT0oMHxhW2w+PjJdKSso''@;'; put 'put ''MjQqZnwwKSs2fDApPj4wXXx8KGZlW20+PjBdPWMpLGY9ZisxfDB9KDB8YVttPj4yXSw1MTI9PSgxMDIzJihPZT03NjgmaXRbcT4+MV0pKT8xMDg6MjU2PT0oMTAyMyZPZSk/MTE0OjExMCl9bGU9TGV9ZnVuY3Rpb24gckIobCxjLGYscCl7bHw9MCxwfD0wO3ZhciBrLE0sUixHLHEscGUsbT0w''@;'; put 'put ''LEE9MCx3PTAsYj0wLEQ9MDtzd2l0Y2gocT1sZSxsZT1sZSsxNnwwLEc9cSs4fDAsUj1xLGFbOTYrKGN8PTApPj4yXT1mfD0wLDY0JihiPTB8aXRbKE09YyszNnwwKT4+MV0pfHwoZmVbYyszND4+MF09dz02NCZpdFtmKzM2Pj4xXT8wfGZlW2YrMzQ+PjBdOjIpLDMyJmJ8fCgodz0wfGZlW2Yr''@;'; put 'put ''ODg+PjBdKTw8MjQ+PjI0PD0tMSYmKHc9MzImaXRbZiszNj4+MV0/MHxmZVtmKzMzPj4wXToxKSxmZVtjKzMzPj4wXT13KSx3PWMrODh8MCwwfGZlWyhrPWMrOTJ8MCk+PjBdKXtjYXNlIDE6Yj0wfENFKGwsMHxhW3c+PjJdLGMscCksZj0wfGFbdz4+Ml0sdz1iLGI9Zis2NHwwLGY9Zis3Mnww''@;'; put 'put ''O2JyZWFrO2Nhc2UgMzpiPTB8ZnVuY3Rpb24gb0IobCxjKXt2YXIgbSx3LGIsayxmPTAscD0wLEE9MDtyZXR1cm4gaz1sZSxsZT1sZSsxNnwwLHc9ayxVRyhBPWsrOHwwLDB8YVsoYz01MisoY3w9MCl8MCk+PjJdLDB8YVsobT0zMisobHw9MCl8MCk+PjJdKSxiPTB8YVtBPj4yXSwtMT09KChB''@;'; put 'put ''PTB8YVtBKzQ+PjJdKSZifDApPyhhW3c+PjJdPWFbbT4+Ml0sJHIoMSwxMzc2OTcsdyksYz0xLHA9MCxmPTApOihmZVsxMTQrKDB8YVsxNisoMHxhW2M+PjJdKT4+Ml0pPj4wXT0xLGM9MCxwPSsoMHxBKSxmPSsoMHxiKSksYVtsPj4yXT0wLGFbbCs0Pj4yXT0wLGFbbCs4Pj4yXT0wLGFbbCsx''@;'; put 'put ''Mj4+Ml09MCxfW2wrMTY+PjNdPWYsX1tsKzI0Pj4zXT1wLGxlPWssMHxjfSgwfGFbdz4+Ml0scCksZj0wfGFbdz4+Ml0sdz1iLGI9ZisxNnwwLGY9ZisyNHwwO2JyZWFrO2RlZmF1bHQ6U0UoMHxhWzE0NCsoMHxhW2wrMTY+PjJdKT4+Ml0sMHxhW3c+PjJdLHApLGY9MHxhW3c+PjJdLHc9MCxi''@;'; put 'put ''PWYrMjR8MCxmPWYrMzJ8MH1BPStfW2I+PjNdKyhtPSsoKDB8WHRbYyszMz4+MF0pKygwfFh0W2MrMzQ+PjBdKTw8MXwwKSksbT0rX1tmPj4zXSttLGY9YyszOHwwO2Rve2lmKDEmaXRbTT4+MV0pe2lmKChiPTB8aXRbZj4+MV0pPDwxNj4+MTYmJihEPTB8aXRbYys0MD4+MV0pPDwxNj4+MTYp''@;'; put 'put ''e2lmKCEoQT4rKDY1NTM1JmIpfG0+Kyg2NTUzNSZEKSkpe0E9MCxtPTA7YnJlYWt9aWYoMz09KDB8ZmVbaz4+MF0pKXtBPTAsbT0wO2JyZWFrfSRyKDAsMTM3NjE0LFIpLHc9MSxBPTAsbT0wO2JyZWFrfSRyKDAsMTM3NjQ3LEcpLHc9MX19d2hpbGUoMCk7cmV0dXJuIF9bYys2ND4+M109QT4o''@;'; put 'put ''cGU9KygwfGhyW2Y+PjFdKSk/QTpwZSxfW2MrNzI+PjNdPW0+KEE9KygwfGhyW2MrNDA+PjFdKSk/bTpBLGxlPXEsMHx3fWZ1bmN0aW9uIGlCKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wO3ZhciBiLGssbT0wLEE9MCx3PTA7Yj0oMHxoclsoaz04MCsocHw9MCl8MCk+PjFdKS0xfDAsdz0wO2U6''@;'; put 'put ''Zm9yKDs7KWZvcihtPWY7Oyl7aWYodylicmVhayBlO2ZvcihBPWIrbXwwOzspe2lmKCgwfEEpPCgwfG0pKXtmPW0sdz0xO2NvbnRpbnVlIGV9aWYoMHx4UShsLEEsYykpYnJlYWs7QT1BKy0xfDB9bT1BKzF8MH1mb3Iodz1wKzgyfDAsbT1mOygwfG0pPChmKygwfGhyW2s+PjFdKXwwKTspe2Zv''@;'; put 'put ''cihBPWM7ISgoMHxBKT49KCgwfGhyW3c+PjFdKStjfDApKTspZTQobCxtLEEpLEE9QSsxfDA7bT1tKzF8MH1yZXR1cm4gMHxmfWZ1bmN0aW9uIE1FKCl7cmV0dXJuIDB8aXMoNTU5MjQsMHxhWzQ1ODFdKX1mdW5jdGlvbiBFRShsLGMpe3ZhciBmLHA7bHw9MCxmPWxlLGxlPWxlKzE2fDAsYVso''@;'; put 'put ''cD1mKT4+Ml09Y3w9MCxtaVs2MyZhW2w+PjJdXShsLHAsMSksbGU9Zn1mdW5jdGlvbiBUYihsLGMpe3ZhciBmLHA7cmV0dXJuIGx8PTAsZj1sZSxsZT1sZSsxNnwwLGFbKHA9Zik+PjJdPWN8PTAsYz0wIT0oMHxtaVs2MyZhW2w+PjJdXShsLHAsNTEyKSkmMSxsZT1mLDB8Y31mdW5jdGlvbiBE''@;'; put 'put ''Yigpe3ZhciBjLGYsbD0wO2ZvcihjPTB8YVs0NzM4N10sZj0wfGFbNDczNzVdLGw9MTs7KXtpZigoMHxsKT4oMHxjKSl7bD01O2JyZWFrfWlmKCgwfGFbNCsoMHxhW2YrKGw8PDIpPj4yXSk+PjJdKSE9KDB8bCkpe2w9NDticmVha31sPWwrMXwwfWlmKDQ9PSgwfGwpKVByKDEzODM5NCwxMzc3''@;'; put 'put ''NDEsNTksMTM3NzQ3KTtlbHNlIGlmKDU9PSgwfGwpKXJldHVybn1mdW5jdGlvbiBIOShsKXt2YXIgbSxBLHcsYz0wLGY9MCxwPTA7Zm9yKHc9MHxhWyhBPTB8YVsobT0wfGFbNDczNzVdKSsoKGx8PTApPDwyKT4+Ml0pPj4yXTtwPW0rKGw8PDIpfDAsISgoMHxhWyhmPTB8YVttKygoYz0oMHxs''@;'; put 'put ''KS8yfDApPDwyKT4+Ml0pPj4yXSk+PSgwfHcpKTspYVtwPj4yXT1mLGFbZis0Pj4yXT1sLGw9YzthW3A+PjJdPUEsYVtBKzQ+PjJdPWx9ZnVuY3Rpb24gTjkobCl7bHw9MDt2YXIgZixjPTA7cmV0dXJuIGY9bGUsbGU9bGUrMTZ8MCwoMHwoYz0wfGFbNDczODddKSk9PSgwfGFbNDczODZdKT8o''@;'; put 'put ''JHIoMSwxMzc3NTUsZiksbD0xKTooYVs0NzM4N109Yz1jKzF8MCxhWygwfGFbNDczNzVdKSsoYzw8Mik+PjJdPWwsSDkoYyksRGIoKSxsPTApLGxlPWYsMHxsfWZ1bmN0aW9uIHhFKCl7dmFyIGw9MCxjPTAsZj0wLHA9MDtyZXR1cm4oYz0wfGFbNDczODddKT8obD0wfGFbKGY9NCsocD0wfGFb''@;'; put 'put ''NDczNzVdKXwwKT4+Ml0sYVtmPj4yXT1hW3ArKGM8PDIpPj4yXSxhWzQ3Mzg3XT1jPWMrLTF8MCwwfGMmJmZ1bmN0aW9uIGxCKGwpe3ZhciBwLG0sQSx3LGIsYz0wLGY9MCxrPTAsTT0wLEQ9MDtmb3IoQT0wfGFbKG09MHxhWyhwPTB8YVs0NzM3NV0pKygobHw9MCk8PDIpPj4yXSk+PjJdLGI9''@;'; put 'put ''KDB8KHc9MHxhWzQ3Mzg3XSkpLzJ8MDshKCgwfGwpPigwfGIpfHwoZj1sPDwxLGM9MHxhW3ArKGY8PDIpPj4yXSwoMHxmKTwoMHx3KSYmKEQ9MXxmLGs9MHxhW3ArKEQ8PDIpPj4yXSxNPSgwfGFbYz4+Ml0pPCgwfGFbaz4+Ml0pLGY9TT9EOmYsYz1NP2s6YyksKDB8QSk+PSgwfGFbYz4+Ml0p''@;'; put 'put ''KSk7KWFbcCsobDw8Mik+PjJdPWMsYVtjKzQ+PjJdPWwsbD1mO2FbcCsobDw8Mik+PjJdPW0sYVttKzQ+PjJdPWx9KDEpLERiKCkpOmw9MCwwfGx9ZnVuY3Rpb24gc0IobCxjKXthWyhsfD0wKT4+Ml09Y3w9MCxIOSgwfGFbbCs0Pj4yXSksRGIoKX1mdW5jdGlvbiBURShsLGMsZil7dmFyIGIs''@;'; put 'put ''ayxNLEQscD0wLG09MCxBPTAsdz0wLFI9MDtmb3Iodz0oMHxmZVsodz0wfGFbKE09MTYrKGx8PTApfDApPj4yXSkrKDQwKigwfGFbMTIrKGZ8PTApPj4yXSl8MCkrMzY+PjBdKSE9KDB8ZmVbdysoNDAqKDB8YVtmKzE2Pj4yXSl8MCkrMzY+PjBdKSxtPSgwfChiPX5+KC41KigrX1s2NCsoY3w9''@;'; put 'put ''MCk+PjNdLTMtK19bYys0OD4+M10pKSkpPCgwfChrPX5+KC41KigrX1tjKzU2Pj4zXS0zLStfW2MrNDA+PjNdKSkpKT9iOmssRD1jKzR8MCxwPTA7Oyl7aWYoKDB8cCk+PSgwfChsPTB8YVtEPj4yXSkpKXttPXA7YnJlYWt9aWYoKDB8ZmVbKFI9MHxhW00+PjJdKSsoNDAqKDB8YVsxMisoQT0w''@;'; put 'put ''fGFbYys4KyhwPDwyKT4+Ml0pPj4yXSl8MCkrMzY+PjBdKT09KDB8ZmVbUisoNDAqKDB8YVtBKzE2Pj4yXSl8MCkrMzY+PjBdKSl7bT1wO2JyZWFrfUlFKEEsbSkscD1wKzF8MH1mb3IoOyEoKDB8bSk+PSgwfGwpKTspd3woMHwocD0wfGFbYys4KyhtPDwyKT4+Ml0pKT09KDB8ZikmJihJRShw''@;'; put 'put ''LDB8ZmVbKDB8YVtNPj4yXSkrKDQwKigwfGFbcCsxMj4+Ml0pfDApKzM2Pj4wXT9iOmspLGw9MHxhW0Q+PjJdKSxtPW0rMXwwfWZ1bmN0aW9uIElFKGwsYyl7dmFyIGYscDtjfD0wLGFbKGY9OCsobHw9MCl8MCk+PjJdPTErKHA9MHxhW2Y+PjJdKSwoMHxwKT49KDB8YykmJihhW2Y+PjJdPTAs''@;'; put 'put ''X1tsPj4zXT0rX1tsPj4zXSsxNjM4NCl9ZnVuY3Rpb24gSGwobCxjLGYscCxtKXtsfD0wLHB8PTAsbXw9MDt2YXIgQT0wLHc9MDtBPTB8bWlbNjMmYVsoY3w9MCk+PjJdXShjLGZ8PTAsNTEyKTtkb3tpZihBKXc9QTtlbHNle2lmKGw9MHx1bShsKSxwKXt3PXArKChBPTB8YVtsKzMyPj4yXSk8''@;'; put 'put ''PDUpfDAsYVsocD1wKyhBPDw1KSs4fDApPj4yXT1hW2Y+PjJdLGFbcCs0Pj4yXT1hW2YrND4+Ml0sYVtwKzg+PjJdPWFbZis4Pj4yXSxhW3ArMTI+PjJdPWFbZisxMj4+Ml0sYVt3Pj4yXT1sLGZlW2wrMzY+PjBdPW0sbWlbNjMmYVtjPj4yXV0oYyx3LDEpO2JyZWFrfVByKDEzODE4MywxMzgx''@;'; put 'put ''MzEsMjkxLDEzODE5MCl9fXdoaWxlKDApO3JldHVybiAwfGFbdz4+Ml19ZnVuY3Rpb24gZkIobCl7bHw9MDt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTA7ZTpkb3tpZiguNSooK19bbCs2ND4+M10tMy0rX1tsKzQ4Pj4zXSk8Milmb3IoQT0wfGFbbCszMj4+Ml0sdz1sKzM2fDAsbT0wOzsp''@;'; put 'put ''e2lmKCgwfG0pPj0oMHxBKSlicmVhayBlO2M9MHxhWygwfGFbdz4+Ml0pKyhtPDwyKT4+Ml07dDpkb3tpZigwfGZlW2MrMzY+PjBdKWlmKHA9MHxhW2MrMjA+PjJdLCgwfHApPT0oMHxsKSl7Yz1mPTB8YVtjKzI0Pj4yXSxmPTB8YVtmPj4yXTtkb3tpZihhW2M+PjJdPTh8ZiwhKGM9MHxhW2Fb''@;'; put 'put ''YyszNj4+Ml0+PjJdKSlicmVhayB0O2Y9MHxhWyhjPTB8YVtjKzI0Pj4yXSk+PjJdfXdoaWxlKCEoMSZmfDApKX1lbHNle2Y9cCxjPTB8YVtwPj4yXTtkb3tpZihhW2Y+PjJdPTh8YywhKGM9MHxhWzgrKDB8YVtmKzM2Pj4yXSk+PjJdKSlicmVhayB0O2M9MHxhWyhmPTB8YVtjKzIwPj4yXSk+''@;'; put 'put ''PjJdfXdoaWxlKCEoMSZjfDApKX19d2hpbGUoMCk7bT1tKzF8MH19d2hpbGUoMCk7ZTpkb3tpZiguNSooK19bbCs1Nj4+M10tMy0rX1tsKzQwPj4zXSk8Milmb3IoQT0wfGFbbCszMj4+Ml0sdz1sKzM2fDAsbT0wOzspe2lmKCgwfG0pPj0oMHxBKSlicmVhayBlO2M9MHxhWygwfGFbdz4+Ml0p''@;'; put 'put ''KyhtPDwyKT4+Ml07dDpkb3tpZighKDB8ZmVbYyszNj4+MF0pKWlmKHA9MHxhW2MrMjA+PjJdLCgwfHApPT0oMHxsKSl7Yz1mPTB8YVtjKzI0Pj4yXSxmPTB8YVtmPj4yXTtkb3tpZihhW2M+PjJdPTE2fGYsIShjPTB8YVs0KygwfGFbYyszNj4+Ml0pPj4yXSkpYnJlYWsgdDtmPTB8YVsoYz0w''@;'; put 'put ''fGFbYysyND4+Ml0pPj4yXX13aGlsZSghKDEmZnwwKSl9ZWxzZXtmPXAsYz0wfGFbcD4+Ml07ZG97aWYoYVtmPj4yXT0xNnxjLCEoYz0wfGFbMTIrKDB8YVtmKzM2Pj4yXSk+PjJdKSlicmVhayB0O2M9MHxhWyhmPTB8YVtjKzIwPj4yXSk+PjJdfXdoaWxlKCEoMSZjfDApKX19d2hpbGUoMCk7''@;'; put 'put ''bT1tKzF8MH19d2hpbGUoMCl9ZnVuY3Rpb24gJDgobCxjKXtjfD0wO3ZhciBBLGY9MCxwPTAsbT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MDttPS41Kigodz0rX1s2NCsobHw9MCk+PjNdLStfW2wrNDg+PjNdKSsoQT0rX1tsKzU2Pj4zXS0rX1tsKzQwPj4zXSkpKzUw''@;'; put 'put ''MCwuNSoodystMyk8Mj8obT0oTT0wPT0oOCZhW2w+PjJdfDApKT8xNjM4NDptLHE9TT8xNjM4NDpBKTpxPUEsLjUqKEErLTMpPDImJih3PShNPTA9PSgxNiZhW2w+PjJdfDApKT8xNjM4NDp3LG09TT8xNjM4NDptKSwwIT0oMHwocD0wfGFbOCsoZj0wfGFbKE09bCszNnwwKT4+Ml0pPj4yXSkp''@;'; put 'put ''JiYwIT0oMHwoYj0wfGFbZis0Pj4yXSkpJiYoYj0wfHYzKGMscCxiLG0pLGFbKHA9bCs0fDApPj4yXT0xKyhmPTB8YVtwPj4yXSksYVtsKzgrKGY8PDIpPj4yXT1iLGY9MHxhW00+PjJdKSwwIT0oMHwocD0wfGFbZis0Pj4yXSkpJiYwIT0oMHwoaz0wfGFbZj4+Ml0pKSYmKGs9MHx2MyhjLHAs''@;'; put 'put ''ayxtKSxhWyhiPWwrNHwwKT4+Ml09MSsoZj0wfGFbYj4+Ml0pLGFbbCs4KyhmPDwyKT4+Ml09ayxmPTB8YVtNPj4yXSksMCE9KDB8KHA9MHxhW2YrOD4+Ml0pKSYmMCE9KDB8KEQ9MHxhW2YrMTI+PjJdKSkmJihEPTB8djMoYyxwLEQsbSksYVsoaz1sKzR8MCk+PjJdPTErKGY9MHxhW2s+PjJd''@;'; put 'put ''KSxhW2wrOCsoZjw8Mik+PjJdPUQsZj0wfGFbTT4+Ml0pLDAhPSgwfChwPTB8YVtmKzEyPj4yXSkpJiYwIT0oMHwoUj0wfGFbZj4+Ml0pKSYmKFI9MHx2MyhjLHAsUixtKSxhWyhEPWwrNHwwKT4+Ml09MSsoZj0wfGFbRD4+Ml0pLGFbbCs4KyhmPDwyKT4+Ml09UixmPTB8YVtNPj4yXSksMCE9''@;'; put 'put ''KDB8KHA9MHxhW2YrND4+Ml0pKSYmMCE9KDB8KEc9MHxhW2YrMTI+PjJdKSkmJihHPTB8djMoYyxwLEcsdyksYVsoUj1sKzR8MCk+PjJdPTErKGY9MHxhW1I+PjJdKSxhW2wrOCsoZjw8Mik+PjJdPUcsZj0wfGFbTT4+Ml0pLDB8KHA9MHxhW2YrOD4+Ml0pJiYwfChwZT0wfGFbZj4+Ml0pJiYo''@;'; put 'put ''Yz0wfHYzKGMscCxwZSxxKSxhWyhHPWwrNHwwKT4+Ml09MSsocGU9MHxhW0c+PjJdKSxhW2wrOCsocGU8PDIpPj4yXT1jKX1mdW5jdGlvbiBxOChsLGMsZixwLG0pe2x8PTAsY3w9MCxwfD0wLG18PTA7dmFyIHcsYixrLEE9MCxNPTA7Zm9yKGs9bGUsbGU9bGUrOTZ8MCxiPWssYVsodz1rKzY0''@;'; put 'put ''fDApPj4yXT1hWyhmfD0wKT4+Ml0sYVt3KzQ+PjJdPWFbZis0Pj4yXSxhW3crOD4+Ml09YVtmKzg+PjJdLGFbdysxMj4+Ml09YVtmKzEyPj4yXSxhW3crMTY+PjJdPWFbZisxNj4+Ml0sYVt3KzIwPj4yXT1hW2YrMjA+PjJdLGFbdysyND4+Ml09YVtmKzI0Pj4yXSxhW3crMjg+PjJdPWFbZisy''@;'; put 'put ''OD4+Ml0sSTModyxtLDEsYiksZj0wfEJiKHAsMSxiKSxBPTA7ISgoMHxBKT49KDB8YykpOylhW3c+PjJdPWFbKE09bCsoNzIqQXwwKSs0MHwwKT4+Ml0sYVt3KzQ+PjJdPWFbTSs0Pj4yXSxhW3crOD4+Ml09YVtNKzg+PjJdLGFbdysxMj4+Ml09YVtNKzEyPj4yXSxhW3crMTY+PjJdPWFbTSsx''@;'; put 'put ''Nj4+Ml0sYVt3KzIwPj4yXT1hW00rMjA+PjJdLGFbdysyND4+Ml09YVtNKzI0Pj4yXSxhW3crMjg+PjJdPWFbTSsyOD4+Ml0sSTModyxtLDAsYiksZj0wfEJiKHAsZixiKSxBPUErMXwwO2xlPWt9ZnVuY3Rpb24gVjkobCxjKXtsfD0wLGN8PTA7dmFyIEEsZj0wLHA9MCxtPTAsdz0wO2Zvcihm''@;'; put 'put ''PTA7ISgoMHxmKT4oMHxsKSk7KWFbYysoZjw8Mik+PjJdPWYsZj1mKzF8MDtmb3IoQT1sKzF8MCxmPTE7ISgoMHxmKT4oMHxsKSk7KXA9YysoZjw8Mil8MCxtPWMrKCh3PX5+KCtxYygpKisoQS1mfDApKyArKDB8ZikpKTw8Mil8MCwoMHxmKSE9KDB8dykmJih3PTB8YVtwPj4yXSxhW3A+PjJd''@;'; put 'put ''PWFbbT4+Ml0sYVttPj4yXT13KSxmPWYrMXwwfWZ1bmN0aW9uIGZ1KGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgdyxiLEQsQT0wLGs9MCxNPTAsUj0wLEc9MCxxPTA7Zm9yKEQ9MHx2cigoaz0xKyhBPTUqKGx8PTApfDApfDApPDwyKSxhWzQ3Mzg4XT0wfHZyKGs8PDQpLGFb''@;'; put 'put ''NDczODldPTB8dnIoNTYrKDU2Kmx8MCl8MCksaz0wfHZyKGw8PDIpLGFbNDczOTBdPWssTT0wOyEoKDB8TSk+KDB8QSl8fDB8X20oZisoNzIqTXwwKXwwLGMpKTspTT1NKzF8MDtmb3Iodz0wfGFbNDczODhdLGI9MHxhWzQ3Mzg5XSxBPTE7ISgoMHxBKT4oMHxsKSk7KWFbdysoQTw8NCkrOD4+''@;'; put 'put ''Ml09YVtjKyg1NipBfDApKzQ4Pj4yXSxhW3crKEE8PDQpKzQ+PjJdPWFbKFI9YysoNTYqQXwwKSs0NHwwKT4+Ml0sYVt3KyhBPDw0KT4+Ml09QSxhWyhHPWIrKDU2KkF8MCl8MCk+PjJdPWFbKHE9YysoNTYqQXwwKXwwKT4+Ml0sYVtHKzQ+PjJdPWFbcSs0Pj4yXSxhW0crOD4+Ml09YVtxKzg+''@;'; put 'put ''PjJdLGFbRysxMj4+Ml09YVtxKzEyPj4yXSxhW2IrKDU2KkF8MCkrMTY+PjJdPWFbUj4+Ml0sYVtiKyg1NipBfDApKzMyPj4yXT1BLGFbYisoNTYqQXwwKSs0OD4+Ml09MSxBPUErMXwwO3JldHVybiBhWzQ3MzkxXT1sLGFbNDczOTJdPTAsYVtrPj4yXT0xLEE9KDB8KEE9MHxhW2YrKDcyKk18''@;'; put 'put ''MCkrNDA+PjJdKSk8PTA/KDB8KEE9MHxhW2YrKDcyKk18MCkrNDg+PjJdKSk+MD8wfExvKEQsbSwwLGMsZiwwLE0sQSxwLDIpOjA6MHxMbyhELG0sMCxjLGYsMCxNLEEscCwxKSxGdChEKSxGdCgwfGFbNDczODhdKSxGdCgwfGFbNDczODldKSxGdCgwfGFbNDczOTBdKSwwfEF9ZnVuY3Rpb24g''@;'; put 'put ''RWQobCxjLGYpe3ZhciBwLG0sQSx3O3JldHVybiB3PStfWygrX1soY3w9MCk+PjNdPitfWyhmfD0wKT4+M10/YzpmKT4+M10sX1sxNisobHw9MCk+PjNdPUE9K19bKCtfW2MrMTY+PjNdPCtfW2YrMTY+PjNdP2M6ZikrMTY+PjNdLF9bbD4+M109dyxtPStfWygrX1tjKzg+PjNdPitfW2YrOD4+''@;'; put 'put ''M10/YzpmKSs4Pj4zXSxfW2wrMjQ+PjNdPXA9K19bKCtfW2MrMjQ+PjNdPCtfW2YrMjQ+PjNdP2M6ZikrMjQ+PjNdLF9bbCs4Pj4zXT1tLCEodz49QSkmIShtPj1wKSYxfDB9ZnVuY3Rpb24gX20obCxjKXtjfD0wO3ZhciBtLGY9MCxwPTA7bT0wfGFbNCsobHw9MCk+PjJdO2Rve2lmKDI9PSgw''@;'; put 'put ''fGFbbCs2OD4+Ml0pfHwoMHxtKTwxfCgwfGFbbD4+Ml0pPDEpbD0wO2Vsc2V7aWYoISgoMHxhW2wrNDA+PjJdKTwxJiYoMHxhW2wrNDQ+PjJdKTwxKSl7aWYoKDB8YVtsKzQ4Pj4yXSk+PTEpe2w9MDticmVha31pZigoMHxhW2wrNTI+PjJdKT49MSl7bD0wO2JyZWFrfX1sPShmPStfW2MrKDU2''@;'; put 'put ''Km18MCkrMjQ+PjNdKT4xZS03KyhwPStfW2MrKDU2Km18MCkrOD4+M10pPzE6ZjxwKy0xZS03PzA6K19bYysoNTYqbXwwKSsxNj4+M10+K19bYysoNTYqbXwwKT4+M10mMX19d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBMbyhsLGMsZixwLG0sQSx3LGIsayxNKXtsfD0wLGN8PTAsZnw9''@;'; put 'put ''MCxwfD0wLG18PTAsQXw9MCxifD0wLE18PTA7dmFyIFN0LEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wLFZlPTAscWU9MCxydD0wLFdlPTAsYXQ9MCxrdD0wLHN0PTAsRXQ9MCxadD0wLGN0PTAsYnQ9MCxhbj0wLFNuPTAsSG49MCx1cj0wLEhyPTAs''@;'; put 'put ''RXI9MDtTdD0wPT0oMHwoa3w9MCkpLGF0PXd8PTA7ZTpmb3IoO3FlPW0rKDcyKmF0fDApfDAsISgoMHxhdCk8MXx8KHc9bCsoYXQ8PDIpfDAsMHxhW3c+PjJdKSk7KXthW3c+PjJdPTEsUmU9bSsoNzIqYXR8MCkrOHwwLEhlPW0rKDcyKmF0fDApKzI0fDAsKHE9K19bKE9lPW0rKDcyKmF0fDAp''@;'; put 'put ''KzE2fDApPj4zXSk+KEc9K19bKFZlPW0rKDcyKmF0fDApKzMyfDApPj4zXSkmJihjdD0rX1twKyg1NiooV2U9MHxhW3FlPj4yXSl8MCk+PjNdKT09K19bcCsoNTYqV2V8MCkrMTY+PjNdJiYoYW49K19bcCsoNTYqKFdlPTB8YVttKyg3MiphdHwwKSs0Pj4yXSl8MCk+PjNdKT09K19bcCsoNTYq''@;'; put 'put ''V2V8MCkrMTY+PjNdJiYodz1jKyhmPDw1KXwwLFN0PyhfW3c+PjNdPWN0LHBlPXEscT1hbik6KF9bdz4+M109RyxwZT0tY3QsRz0tYW4pLF9bYysoZjw8NSkrOD4+M109RyxfW2MrKGY8PDUpKzE2Pj4zXT1xLF9bYysoZjw8NSkrMjQ+PjNdPXBlLGY9ZisxfDApLHJ0PTB8YVsodz1tKyg3Miph''@;'; put 'put ''dHwwKSs0MHwwKT4+Ml07ZG97aWYoKDB8cnQpPDEmJigwfGFbKFNuPW0rKDcyKmF0fDApKzQ0fDApPj4yXSk8MSl7aWYoUj1tKyg3MiphdHwwKSs1MnwwLCgwfGFbKHc9bSsoNzIqYXR8MCkrNDh8MCk+PjJdKT4wJiYoMHwoSG49MHxhW1I+PjJdKSk+MCl7aWYoRD0wfGFbbSsoNzIqSG58MCk+''@;'; put 'put ''PjJdLE09MHxhW3FlPj4yXSwoMHxIbik9PSgwfGIpKXtNPTB8WHMoQSxNLEQpLGY9MHxMbyhsLGMsZixwLG0sQSwwfGFbUj4+Ml0sYXQsaywxKSxBPU0sTT0xO2JyZWFrfU09MHxYcyhBLEQsTSksZj0wfExvKGwsYyxmLHAsbSxBLDB8YVt3Pj4yXSxhdCxrLDEpLEE9TSx3PVIsTT0xO2JyZWFr''@;'; put 'put ''fWY9MHxMbyhsLGMsZixwLG0sQSxydCxhdCxrLDIpLGY9MHxMbyhsLGMsZixwLG0sQSwwfGFbU24+PjJdLGF0LGssMiksZj0wfExvKGwsYyxmLHAsbSxBLDB8YVt3Pj4yXSxhdCxrLDEpLHc9UixNPTF9ZWxzZSBFcj0xOX13aGlsZSgwKTtkb3tpZigxOT09KDB8RXIpKXtpZihFcj0wLCgwfChn''@;'; put 'put ''ZT0wfGFbKFdlPW0rKDcyKmF0fDApKzQ4fDApPj4yXSkpPDEmJigwfGFbKHVyPW0rKDcyKmF0fDApKzUyfDApPj4yXSk8MSl7aWYoUj1tKyg3MiphdHwwKSs0NHwwLCgwfHJ0KT4wJiYoMHwoSHI9MHxhW1I+PjJdKSk+MCl7aWYoRD0wfGFbbSsoNzIqYXR8MCkrND4+Ml0sTT0wfGFbbSsoNzIq''@;'; put 'put ''cnR8MCkrND4+Ml0sKDB8SHIpPT0oMHxiKSl7TT0wfFhzKEEsTSxEKSxmPTB8TG8obCxjLGYscCxtLEEsMHxhW1I+PjJdLGF0LGssMiksQT1NLE09MjticmVha31NPTB8WHMoQSxELE0pLGY9MHxMbyhsLGMsZixwLG0sQSwwfGFbdz4+Ml0sYXQsaywyKSxBPU0sdz1SLE09MjticmVha31mPTB8''@;'; put 'put ''TG8obCxjLGYscCxtLEEscnQsYXQsaywyKSxmPTB8TG8obCxjLGYscCxtLEEsMHxhW1I+PjJdLGF0LGssMiksZj0wfExvKGwsYyxmLHAsbSxBLDB8YVtXZT4+Ml0sYXQsaywxKSx3PXVyLE09MTticmVha31pZihEPSgwfChiZT0wfGFbKExlPW0rKDcyKmF0fDApKzQ0fDApPj4yXSkpPjAsKDB8''@;'; put 'put ''cnQpPjApe2lmKEQpe2lmKCgwfGdlKT4wJiYoMHwoc3Q9MHxhWyhrdD1tKyg3MiphdHwwKSs1MnwwKT4+Ml0pKT4wKXtpZihSPTB8YVttKyg3MipzdHwwKT4+Ml0sRD0wfGFbbSsoNzIqcnR8MCkrND4+Ml0sISgyPT0oMHxNKSYoMHxzdCk9PSgwfGIpfHwxPT0oMHxNKSYoMHxiZSk9PSgwfGIp''@;'; put 'put ''KSl7TT0wfFhzKEEsUixEKSxmPTB8TG8obCxjLGYscCxtLEEsMHxhW3c+PjJdLGF0LGssMiksZj0wfExvKGwsYyxmLHAsbSxBLDB8YVtXZT4+Ml0sYXQsaywxKSxmPTB8TG8obCxjLGYscCxtLE0sMHxhW0xlPj4yXSxhdCxrLDIpLEE9TSx3PWt0LE09MTticmVha31NPTB8WHMoQSxELFIpLGY9''@;'; put 'put ''MHxMbyhsLGMsZixwLG0sQSwwfGFbTGU+PjJdLGF0LGssMiksZj0wfExvKGwsYyxmLHAsbSxBLDB8YVtrdD4+Ml0sYXQsaywxKSxmPTB8TG8obCxjLGYscCxtLE0sMHxhW3c+PjJdLGF0LGssMiksQT1NLHc9V2UsTT0xO2JyZWFrfWlmKCtlbygrKCtfW1ZlPj4zXS0rX1twKyg1NiooRD0wfGFb''@;'; put 'put ''cWU+PjJdKXwwKSsyND4+M10pKTw9MWUtNyYmK2VvKCsoK19bSGU+PjNdLStfW3ArKDU2KkR8MCkrMTY+PjNdKSk8PTFlLTcpe2lmKFI9MHxhW20rKDcyKnJ0fDApKzQ+PjJdLEQ9MHxhW3ArKDU2KkR8MCkrNDQ+PjJdLDE9PSgwfE0pJigwfHJ0KT09KDB8Yikpe009MHxYcyhBLEQsUiksZj0w''@;'; put 'put ''fExvKGwsYyxmLHAsbSxBLDB8YVt3Pj4yXSxhdCxrLDIpLGY9MHxMbyhsLGMsZixwLG0sTSwwfGFbV2U+PjJdLGF0LGssMSksZj0wfExvKGwsYyxmLHAsbSxNLDB8YVtMZT4+Ml0sYXQsaywyKSxBPU0sdz1tKyg3MiphdHwwKSs1MnwwLE09MTticmVha31NPTB8WHMoQSxSLEQpLGY9MHxMbyhs''@;'; put 'put ''LGMsZixwLG0sQSwwfGFbTGU+PjJdLGF0LGssMiksZj0wfExvKGwsYyxmLHAsbSxBLDB8YVtXZT4+Ml0sYXQsaywxKSxmPTB8TG8obCxjLGYscCxtLEEsMHxhW20rKDcyKmF0fDApKzUyPj4yXSxhdCxrLDEpLEE9TSxNPTI7YnJlYWt9aWYoUj0wfGFbbSsoNzIqYXR8MCkrND4+Ml0sRD0wfGFb''@;'; put 'put ''bSsoNzIqcnR8MCkrND4+Ml0sMT09KDB8TSkmKDB8YmUpPT0oMHxiKSl7TT0wfFhzKEEsRCxSKSxmPTB8TG8obCxjLGYscCxtLEEsMHxhW0xlPj4yXSxhdCxrLDIpLGY9MHxMbyhsLGMsZixwLG0sTSwwfGFbbSsoNzIqYXR8MCkrNTI+PjJdLGF0LGssMSksZj0wfExvKGwsYyxmLHAsbSxNLDB8''@;'; put 'put ''YVtXZT4+Ml0sYXQsaywxKSxBPU0sTT0yO2JyZWFrfU09MHxYcyhBLFIsRCksZj0wfExvKGwsYyxmLHAsbSxBLDB8YVt3Pj4yXSxhdCxrLDIpLGY9MHxMbyhsLGMsZixwLG0sQSwwfGFbV2U+PjJdLGF0LGssMSksZj0wfExvKGwsYyxmLHAsbSxBLDB8YVttKyg3MiphdHwwKSs1Mj4+Ml0sYXQs''@;'; put 'put ''aywxKSxBPU0sdz1MZSxNPTI7YnJlYWt9fWVsc2UgaWYoIUQpYnJlYWsgZTtpZigoMHxnZSk+MCYmKDB8KFp0PTB8YVsoRXQ9bSsoNzIqYXR8MCkrNTJ8MCk+PjJdKSk+MCl7aWYoK2VvKCsoK19bT2U+PjNdLStfW3ArKDU2KihSPTB8YVtxZT4+Ml0pfDApKzg+PjNdKSk8PTFlLTcmJitlbygr''@;'; put 'put ''KCtfW1JlPj4zXS0rX1twKyg1NipSfDApPj4zXSkpPD0xZS03KXtpZihEPTB8YVttKyg3MipadHwwKT4+Ml0sMj09KDB8TSkmKDB8Z2UpPT0oMHxiKSl7TT0wfFhzKEEsRCxSKSxmPTB8TG8obCxjLGYscCxtLEEsMHxhW1dlPj4yXSxhdCxrLDEpLGY9MHxMbyhsLGMsZixwLG0sTSwwfGFbdz4+''@;'; put 'put ''Ml0sYXQsaywyKSxmPTB8TG8obCxjLGYscCxtLE0sMHxhW20rKDcyKmF0fDApKzQ0Pj4yXSxhdCxrLDIpLEE9TSx3PUV0LE09MTticmVha31NPTB8WHMoQSxSLEQpLGY9MHxMbyhsLGMsZixwLG0sQSwwfGFbbSsoNzIqYXR8MCkrNDQ+PjJdLGF0LGssMiksZj0wfExvKGwsYyxmLHAsbSxBLDB8''@;'; put 'put ''YVtFdD4+Ml0sYXQsaywxKSxmPTB8TG8obCxjLGYscCxtLEEsMHxhW3c+PjJdLGF0LGssMiksQT1NLHc9V2UsTT0xO2JyZWFrfWlmKEQ9MHxhW20rKDcyKlp0fDApPj4yXSxSPTB8YVtwKyg1NiooMHxhW20rKDcyKmF0fDApKzQ+PjJdKXwwKSs0ND4+Ml0sMj09KDB8TSkmKDB8WnQpPT0oMHxi''@;'; put 'put ''KSl7TT0wfFhzKEEsUixEKSxmPTB8TG8obCxjLGYscCxtLEEsMHxhW0V0Pj4yXSxhdCxrLDEpLGY9MHxMbyhsLGMsZixwLG0sTSwwfGFbbSsoNzIqYXR8MCkrNDQ+PjJdLGF0LGssMiksZj0wfExvKGwsYyxmLHAsbSxNLDB8YVt3Pj4yXSxhdCxrLDIpLEE9TSx3PVdlLE09MTticmVha31NPTB8''@;'; put 'put ''WHMoQSxELFIpLGY9MHxMbyhsLGMsZixwLG0sQSwwfGFbdz4+Ml0sYXQsaywyKSxmPTB8TG8obCxjLGYscCxtLEEsMHxhW1dlPj4yXSxhdCxrLDEpLGY9MHxMbyhsLGMsZixwLG0sQSwwfGFbbSsoNzIqYXR8MCkrNDQ+PjJdLGF0LGssMiksQT1NLHc9RXQsTT0xO2JyZWFrfWlmKCtlbygrKChH''@;'; put 'put ''PStfW09lPj4zXSktK19bcCsoNTYqKFI9MHxhW3FlPj4yXSl8MCkrOD4+M10pKTw9MWUtNyYmK2VvKCsoK19bUmU+PjNdLStfW3ArKDU2KlJ8MCk+PjNdKSk8PTFlLTcmJitlbygrKCtfW1ZlPj4zXS0rX1twKyg1NiooYnQ9MHxhW20rKDcyKmF0fDApKzQ+PjJdKXwwKSs4Pj4zXSkpPD0xZS03''@;'; put 'put ''JiYrZW8oKygrX1tIZT4+M10tK19bcCsoNTYqYnR8MCk+PjNdKSk8PTFlLTcpe2lmKDE9PSgwfE0pKXtNPTB8WHMoQSxSLGJ0KSxmPTB8TG8obCxjLGYscCxtLEEsMHxhW3c+PjJdLGF0LGssMiksZj0wfExvKGwsYyxmLHAsbSxBLDB8YVttKyg3MiphdHwwKSs0ND4+Ml0sYXQsaywyKSxmPTB8''@;'; put 'put ''TG8obCxjLGYscCxtLE0sMHxhW20rKDcyKmF0fDApKzUyPj4yXSxhdCxrLDEpLEE9TSx3PVdlLE09MTticmVha31NPTB8WHMoQSxidCxSKSxmPTB8TG8obCxjLGYscCxtLEEsMHxhW20rKDcyKmF0fDApKzUyPj4yXSxhdCxrLDEpLGY9MHxMbyhsLGMsZixwLG0sQSwwfGFbV2U+PjJdLGF0LGss''@;'; put 'put ''MSksZj0wfExvKGwsYyxmLHAsbSxNLDB8YVt3Pj4yXSxhdCxrLDIpLEE9TSx3PW0rKDcyKmF0fDApKzQ0fDAsTT0yO2JyZWFrfWlmKCtlbygrKEctK19bcCsoNTYqKGI9MHxhW20rKDcyKmF0fDApKzQ+PjJdKXwwKSsyND4+M10pKTw9MWUtNyYmK2VvKCsoK19bUmU+PjNdLStfW3ArKDU2KmJ8''@;'; put 'put ''MCkrMTY+PjNdKSk8PTFlLTcmJitlbygrKCtfW1ZlPj4zXS0rX1twKyg1NipSfDApKzI0Pj4zXSkpPD0xZS03JiYrZW8oKygrX1tIZT4+M10tK19bcCsoNTYqUnwwKSsxNj4+M10pKTw9MWUtNyl7aWYoRD0wfGFbcCsoNTYqYnwwKSs0ND4+Ml0sYj0wfGFbcCsoNTYqUnwwKSs0ND4+Ml0sMT09''@;'; put 'put ''KDB8TSkpe009MHxYcyhBLGIsRCksZj0wfExvKGwsYyxmLHAsbSxBLDB8YVt3Pj4yXSxhdCxrLDIpLGY9MHxMbyhsLGMsZixwLG0sQSwwfGFbbSsoNzIqYXR8MCkrNDQ+PjJdLGF0LGssMiksZj0wfExvKGwsYyxmLHAsbSxNLDB8YVttKyg3MiphdHwwKSs1Mj4+Ml0sYXQsaywxKSxBPU0sdz1X''@;'; put 'put ''ZSxNPTE7YnJlYWt9TT0wfFhzKEEsRCxiKSxmPTB8TG8obCxjLGYscCxtLEEsMHxhW20rKDcyKmF0fDApKzUyPj4yXSxhdCxrLDEpLGY9MHxMbyhsLGMsZixwLG0sQSwwfGFbV2U+PjJdLGF0LGssMSksZj0wfExvKGwsYyxmLHAsbSxNLDB8YVt3Pj4yXSxhdCxrLDIpLEE9TSx3PW0rKDcyKmF0''@;'; put 'put ''fDApKzQ0fDAsTT0yO2JyZWFrfWY9MHxMbyhsLGMsZixwLG0sQSxydCxhdCxrLDIpLGY9MHxMbyhsLGMsZixwLG0sQSwwfGFbV2U+PjJdLGF0LGssMSksZj0wfExvKGwsYyxmLHAsbSxBLDB8YVttKyg3MiphdHwwKSs0ND4+Ml0sYXQsaywyKSx3PW0rKDcyKmF0fDApKzUyfDAsTT0xfX13aGls''@;'; put 'put ''ZSgwKTtiPWF0LGF0PTB8YVt3Pj4yXX1yZXR1cm4gMHxmfWZ1bmN0aW9uIFhzKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcCxtLEEsdyxNLEQscSxwZSxiPTAsaz0wLFI9MCxHPTAsZ2U9MDtyZXR1cm4gbT1sZSxsZT1sZSsxNnwwLGdlPW0rNHwwLGI9bSxhWzQ3MzkyXT1wPTErKDB8YVs0''@;'; put 'put ''NzM5Ml0pfDAsRD0wfGFbNDczODldLGZ1bmN0aW9uIFJiKGwsYyxmLHApe2Z8PTAscHw9MDt2YXIgRCxSLEcsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTA7Zm9yKFI9KEQ9MHxhWzQ3Mzg5XSkrKDU2KihsfD0wKXwwKXwwLEc9RCsoNTYqKGN8PTApfDApfDAsbT0wLEE9LTQsYj0wOzQhPSgwfGIp''@;'; put 'put ''OykoMHwodz0wfGFbRCsoNTYqbHwwKSsxNisoYjw8Mik+PjJdKSk+PTEmJihrPStlNShSLEQrKDU2Knd8MCl8MCxHKSk+QSYmKG09YixBPWspLGI9YisxfDA7Zm9yKGFbZj4+Ml09bSxtPTAsYj0wLEE9LTQ7NCE9KDB8Yik7KSgwfCh3PTB8YVtEKyg1NipjfDApKzE2KyhiPDwyKT4+Ml0pKT49''@;'; put 'put ''MSYmKE09K2U1KEcsRCsoNTYqd3wwKXwwLFIpKT5BJiYobT1iLEE9TSksYj1iKzF8MDthW3A+PjJdPW19KGMsZixnZSxiKSx3PTB8YVtEKyg1NipjfDApKzMyKygoZ2U9MHxhW2dlPj4yXSk8PDIpPj4yXSxiPTB8YVtEKyg1NipmfDApKzMyKyhhW2I+PjJdPDwyKT4+Ml0sQT0xKyhSPTB8YVs0''@;'; put 'put ''NzM5MV0pfDAsYVs0NzM5MV09Uj1SKzJ8MCxhWyhwZT0wfGFbNDczODhdKSsoQTw8NCk+PjJdPWMsYVtwZSsoUjw8NCk+PjJdPWYsYVsocT1wZSsoQTw8NCkrNHwwKT4+Ml09YVsoRz1wZSsodzw8NCkrNHwwKT4+Ml0sYVtwZSsoYVtHPj4yXTw8NCkrOD4+Ml09QSxhW3BlKyhBPDw0KSs4Pj4y''@;'; put 'put ''XT1SLGFbcGUrKFI8PDQpKzQ+PjJdPUEsYVtwZSsoUjw8NCkrOD4+Ml09YVsoaz1wZSsoYjw8NCkrOHwwKT4+Ml0sYVtwZSsoYVtrPj4yXTw8NCkrND4+Ml09UixhW0c+PjJdPWIsYVtrPj4yXT13LEc9MHxhWyhrPUQrKDU2KmN8MCkrNDh8MCk+PjJdLE09MHxhWyhiPUQrKDU2KmZ8MCkrNDh8''@;'; put 'put ''MCk+PjJdLGFbRCsoNTYqY3wwKSsxNisoZ2U8PDIpPj4yXT1mLGFbRCsoNTYqY3wwKSszMisoRzw8Mik+PjJdPUEsYVtEKyg1NipjfDApKzE2KyhHPDwyKT4+Ml09YVtwZSsoYVtxPj4yXTw8NCk+PjJdLGFbRCsoNTYqZnwwKSszMisoTTw8Mik+PjJdPVIsYVtEKyg1NipmfDApKzE2KyhNPDwy''@;'; put 'put ''KT4+Ml09YyxhW2s+PjJdPTErKDB8YVtrPj4yXSksYVtiPj4yXT0xKygwfGFbYj4+Ml0pLGFbKGY9MHxhWzQ3MzkwXSkrKGw8PDIpPj4yXT13LGFbZisocDw8Mik+PjJdPUEsbGU9bSwwfHB9ZnVuY3Rpb24gZTUobCxjLGYpe3ZhciBtLEEsYixwPTAsdz0wO3JldHVybiBiPStfWyhjfD0wKT4+''@;'; put 'put ''M10tKHc9K19bKGx8PTApPj4zXSksQT0rX1tjKzg+PjNdLShwPStfW2wrOD4+M10pLG09KHA9K19bOCsoZnw9MCk+PjNdLXApKkErKHc9K19bZj4+M10tdykqYiwrKHA9cCpiLXcqQT49MD9tLygrRDAoKyhwKnArdyp3KSkqK0QwKCsoQSpBK2IqYikpKTotbS8oK0QwKCsocCpwK3cqdykpKitE''@;'; put 'put ''MCgrKEEqQStiKmIpKSktMil9ZnVuY3Rpb24gSTMobCxjLGYscCl7Y3w9MCxmfD0wO3ZhciBrLG09MCxBPTAsdz0wLGI9MCxNPTA7YVsocHw9MCk+PjJdPWFbKGx8PTApPj4yXSxhW3ArND4+Ml09YVtsKzQ+PjJdLGFbcCs4Pj4yXT1hW2wrOD4+Ml0sYVtwKzEyPj4yXT1hW2wrMTI+PjJdLGFb''@;'; put 'put ''KHc9cCszMnwwKT4+Ml09YVsoYj1sKzE2fDApPj4yXSxhW3crND4+Ml09YVtiKzQ+PjJdLGFbdys4Pj4yXT1hW2IrOD4+Ml0sYVt3KzEyPj4yXT1hW2IrMTI+PjJdLGY/KG09bCsyNHwwLEE9bCx3PWwrOHwwLGY9Yik6KG09bCs4fDAsQT1iLHc9bCsyNHwwLGY9bCksaz0rX1tBPj4zXSxNPStf''@;'; put 'put ''W3c+PjNdLF9bcCsxNj4+M109K19bZj4+M10sX1twKzI0Pj4zXT1NLF9bcCs0OD4+M109ayxfW3ArNTY+PjNdPStfW20+PjNdO2U6ZG97aWYoMHxjKWZvcihmPTA7Oyl7aWYoND09KDB8ZikpYnJlYWsgZTtNPStfWyhiPXArKGY8PDQpKzh8MCk+PjNdLF9bYj4+M109K19bKGM9cCsoZjw8NCl8''@;'; put 'put ''MCk+PjNdLF9bYz4+M109LU0sZj1mKzF8MH19d2hpbGUoMCl9ZnVuY3Rpb24gQmIobCxjLGYpe2Z8PTA7dmFyIHcsYixrLE0sRCxwPTAsbT0wLEE9MCxSPTAsRz0wO2ZvcihiPTErKGN8PTApfDAsaz1jKzJ8MCxNPShsfD0wKSsoNTYqY3wwKSs0NHwwLEQ9bCsoNTYqKHc9YyszfDApfDApKzQ0''@;'; put 'put ''fDAscD0wLG09YzshKCgwfG0pPigwfHcpKTspe2Rve2lmKCgwfG0pIT0oMHxjKSl7aWYoKDB8bSk9PSgwfHcpKXthW0Q+PjJdPWMsQT1rO2JyZWFrfWFbbCsoNTYqbXwwKSs0ND4+Ml09bSsxLEE9bSstMXwwO2JyZWFrfWFbTT4+Ml09YixBPXd9d2hpbGUoMCk7YVtsKyg1NiptfDApKzQ4Pj4y''@;'; put 'put ''XT1BLGFbbCsoNTYqbXwwKSszMj4+Ml09MCxhWyhHPWwrKDU2Km18MCl8MCk+PjJdPWFbKFI9ZisocDw8NCl8MCk+PjJdLGFbRys0Pj4yXT1hW1IrND4+Ml0sYVtHKzg+PjJdPWFbUis4Pj4yXSxhW0crMTI+PjJdPWFbUisxMj4+Ml0scjEobCsoNTYqQXwwKSsxNnwwLDB8UiwxNikscD1wKzF8''@;'; put 'put ''MCxtPW0rMXwwfXJldHVybiBjKzR8MH1mdW5jdGlvbiBqOShsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLG18PTA7dmFyIGssTSxBPTAsdz0wLGI9MDtmb3IoYVs0NzM5M109KHB8PTApPDwxLGFbNDczOTRdPXAsTT0wfHZyKDgwKnB8MCksYVs0NzM5NV09MSxhWzQ3Mzk2XT0xLHUyKDB8bSww''@;'; put 'put ''LDcyKnB8MCksQT0wfGZ1bmN0aW9uIFo5KGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG0sQSx3LEQsUixHLGdlLE9lLGI9MCxrPTAsTT0wLHE9MCxwZT0wLGJlPTA7cmV0dXJuIG09MHx3ZigpLGFbcCsoNDAqbXwwKT4+Ml09MixmdW5jdGlvbiBhRyhsLGMsZil7bHw9MDt2YXIg''@;'; put 'put ''cCxtO3A9K19bOCsoY3w9MCk+PjNdLG09K19bOCsoZnw9MCk+PjNdO2Rve2lmKCEocD5tKzFlLTcpKXtpZighKCtlbygrKHAtbSkpPD0xZS03KSl7YVtsPj4yXT1hW2Y+PjJdLGFbbCs0Pj4yXT1hW2YrND4+Ml0sYVtsKzg+PjJdPWFbZis4Pj4yXSxhW2wrMTI+PjJdPWFbZisxMj4+Ml07YnJl''@;'; put 'put ''YWt9aWYoK19bYz4+M10+K19bZj4+M10rMWUtNyl7YVtsPj4yXT1hW2M+PjJdLGFbbCs0Pj4yXT1hW2MrND4+Ml0sYVtsKzg+PjJdPWFbYys4Pj4yXSxhW2wrMTI+PjJdPWFbYysxMj4+Ml07YnJlYWt9YVtsPj4yXT1hW2Y+PjJdLGFbbCs0Pj4yXT1hW2YrND4+Ml0sYVtsKzg+PjJdPWFbZis4''@;'; put 'put ''Pj4yXSxhW2wrMTI+PjJdPWFbZisxMj4+Ml07YnJlYWt9YVtsPj4yXT1hW2M+PjJdLGFbbCs0Pj4yXT1hW2MrND4+Ml0sYVtsKzg+PjJdPWFbYys4Pj4yXSxhW2wrMTI+PjJdPWFbYysxMj4+Ml19d2hpbGUoMCl9KGJlPXArKDQwKm18MCkrOHwwLGs9YysoNTYqbHwwKXwwLE09YysoNTYqbHww''@;'; put 'put ''KSsxNnwwKSxSPTB8d2YoKSxhW3ArKDQwKm18MCkrMzY+PjJdPVIsYVtwKyg0MCpSfDApPj4yXT0zLGFbcCsoNDAqUnwwKSsyOD4+Ml09bSxiPTB8d2YoKSxhW3ArKDQwKm18MCkrMzI+PjJdPWIsYVtwKyg0MCpifDApPj4yXT0yLGZ1bmN0aW9uIFJFKGwsYyxmKXtsfD0wO3ZhciBwLG07cD0r''@;'; put 'put ''X1s4KyhjfD0wKT4+M10sbT0rX1s4KyhmfD0wKT4+M107ZG97aWYoIShwPG0rLTFlLTcpKXtpZighKCtlbygrKHAtbSkpPD0xZS03KSl7YVtsPj4yXT1hW2Y+PjJdLGFbbCs0Pj4yXT1hW2YrND4+Ml0sYVtsKzg+PjJdPWFbZis4Pj4yXSxhW2wrMTI+PjJdPWFbZisxMj4+Ml07YnJlYWt9aWYo''@;'; put 'put ''K19bYz4+M108K19bZj4+M10pe2FbbD4+Ml09YVtjPj4yXSxhW2wrND4+Ml09YVtjKzQ+PjJdLGFbbCs4Pj4yXT1hW2MrOD4+Ml0sYVtsKzEyPj4yXT1hW2MrMTI+PjJdO2JyZWFrfWFbbD4+Ml09YVtmPj4yXSxhW2wrND4+Ml09YVtmKzQ+PjJdLGFbbCs4Pj4yXT1hW2YrOD4+Ml0sYVtsKzEy''@;'; put 'put ''Pj4yXT1hW2YrMTI+PjJdO2JyZWFrfWFbbD4+Ml09YVtjPj4yXSxhW2wrND4+Ml09YVtjKzQ+PjJdLGFbbCs4Pj4yXT1hW2MrOD4+Ml0sYVtsKzEyPj4yXT1hW2MrMTI+PjJdfXdoaWxlKDApfShnZT1wKyg0MCpifDApKzh8MCxrLE0pLGFbcCsoNDAqYnwwKSsyOD4+Ml09bSxNPTB8d2YoKSxh''@;'; put 'put ''W3ArKDQwKmJ8MCkrMzI+PjJdPU0sYVtwKyg0MCpNfDApPj4yXT0zLGFbcCsoNDAqTXwwKSsyOD4+Ml09YixrPTB8d2YoKSxhW3ArKDQwKmJ8MCkrMzY+PjJdPWssYVtwKyg0MCprfDApPj4yXT0xLGFbcCsoNDAqa3wwKSs0Pj4yXT1sLGFbcCsoNDAqa3wwKSsyOD4+Ml09YixiPTB8d2YoKSxh''@;'; put 'put ''W3ArKDQwKmt8MCkrMzI+PjJdPWIsYVtwKyg0MCpifDApPj4yXT0zLGFbcCsoNDAqYnwwKSsyOD4+Ml09ayxBPTB8d2YoKSxhW3ArKDQwKmt8MCkrMzY+PjJdPUEsYVtwKyg0MCpBfDApPj4yXT0zLGFbcCsoNDAqQXwwKSsyOD4+Ml09ayxrPTB8dzYoZiksdz0wfHc2KGYpLEQ9MHx3NihmKSxH''@;'; put 'put ''PTB8dzYoZikscT1mKyg3MiprfDApKzh8MCxwZT1mKyg3Mip3fDApKzh8MCxhWyhPZT1mKyg3MipHfDApKzI0fDApPj4yXT1hW2JlPj4yXSxhW09lKzQ+PjJdPWFbYmUrND4+Ml0sYVtPZSs4Pj4yXT1hW2JlKzg+PjJdLGFbT2UrMTI+PjJdPWFbYmUrMTI+PjJdLHIxKDB8cGUsMHxiZSwxNiks''@;'; put 'put ''YVtxPj4yXT1hW3BlPj4yXSxhW3ErND4+Ml09YVtwZSs0Pj4yXSxhW3ErOD4+Ml09YVtwZSs4Pj4yXSxhW3ErMTI+PjJdPWFbcGUrMTI+PjJdLHE9ZisoNzIqa3wwKSsyNHwwLHBlPWYrKDcyKnd8MCkrMjR8MCxhWyhiZT1mKyg3MipEfDApKzh8MCk+PjJdPWFbZ2U+PjJdLGFbYmUrND4+Ml09''@;'; put 'put ''YVtnZSs0Pj4yXSxhW2JlKzg+PjJdPWFbZ2UrOD4+Ml0sYVtiZSsxMj4+Ml09YVtnZSsxMj4+Ml0scjEoMHxwZSwwfGdlLDE2KSxhW3E+PjJdPWFbcGU+PjJdLGFbcSs0Pj4yXT1hW3BlKzQ+PjJdLGFbcSs4Pj4yXT1hW3BlKzg+PjJdLGFbcSsxMj4+Ml09YVtwZSsxMj4+Ml0sX1tmKyg3MipH''@;'; put 'put ''fDApKzE2Pj4zXT0xMDczNzQxODI0LF9bZisoNzIqR3wwKSs4Pj4zXT0xMDczNzQxODI0LF9bZisoNzIqRHwwKSszMj4+M109LTEwNzM3NDE4MjQsX1tmKyg3MipEfDApKzI0Pj4zXT0tMTA3Mzc0MTgyNCxhW2YrKDcyKnd8MCk+PjJdPWwsYVtmKyg3MiprfDApKzQ+PjJdPWwsYVtmKyg3Mip3''@;'; put 'put ''fDApKzQwPj4yXT1HLGFbZisoNzIqa3wwKSs0MD4+Ml09RyxhW2YrKDcyKnd8MCkrNDg+PjJdPUQsYVtmKyg3MiprfDApKzQ4Pj4yXT1ELGFbZisoNzIqRHwwKSs0MD4+Ml09ayxhW2YrKDcyKkd8MCkrNDg+PjJdPWssYVtmKyg3MipEfDApKzQ0Pj4yXT13LGFbZisoNzIqR3wwKSs1Mj4+Ml09''@;'; put 'put ''dyxhW2YrKDcyKmt8MCkrNTY+PjJdPWIsYVtmKyg3Mip3fDApKzU2Pj4yXT1BLGFbZisoNzIqRHwwKSs1Nj4+Ml09TSxhW2YrKDcyKkd8MCkrNTY+PjJdPVIsYVtmKyg3Mip3fDApKzY4Pj4yXT0xLGFbZisoNzIqa3wwKSs2OD4+Ml09MSxhW2YrKDcyKkd8MCkrNjg+PjJdPTEsYVtmKyg3MipE''@;'; put 'put ''fDApKzY4Pj4yXT0xLGFbcCsoNDAqUnwwKSsyND4+Ml09RyxhW3ArKDQwKk18MCkrMjQ+PjJdPUQsYVtwKyg0MCpifDApKzI0Pj4yXT1rLGFbcCsoNDAqQXwwKSsyND4+Ml09dyxhW2MrKDU2Kmx8MCkrMzI+PjJdPTEsMHxtfSgwfGFbZis0Pj4yXSxjLG0sTSkscD0xOyEoKDB8cCk+KDB8bCkp''@;'; put 'put ''OylhW2MrKDU2KnB8MCkrNDA+PjJdPUEsYVtjKyg1NipwfDApKzM2Pj4yXT1BLHA9cCsxfDA7Zm9yKGs9MHxmdW5jdGlvbiBQYihsKXt2YXIgYz0wO2ZvcihjPSsoMHwobHw9MCkpLGw9MDtjPj0xOyljPStvJChjKSxsPWwrMXwwO3JldHVybiBsKy0xfDB9KGwpLEE9MixiPTE7ISgoMHxiKT4o''@;'; put 'put ''MHxrKSk7KXtmb3IocD0wfExFKGwsYistMXwwKSx3PTB8TEUobCxiKTs7KXtpZigoMHxwKT49KDB8dykpe3A9MTticmVha31BNigwfGFbZisoQTw8Mik+PjJdLGMsbSxNKSxwPXArMXwwLEE9QSsxfDB9Zm9yKDshKCgwfHApPigwfGwpKTspRmIocCxjLG0sTSkscD1wKzF8MDtiPWIrMXwwfWZv''@;'; put 'put ''cihwPTB8TEUobCxrKTshKCgwfHApPj0oMHxsKSk7KUE2KDB8YVtmKyhBPDwyKT4+Ml0sYyxtLE0pLEE9QSsxfDAscD1wKzF8MDtyZXR1cm4gRnQoTSksMHxhWzQ3Mzk1XX1mdW5jdGlvbiBMRShsLGMpe2N8PTA7dmFyIHAsZj0wO2ZvcihmPXA9KygwfChsfD0wKSksbD0wOyEoKDB8bCk+PSgw''@;'; put 'put ''fGMpKTspZj0rbyQoZiksbD1sKzF8MDtyZXR1cm4gMHx+fitJdSgrcC9mKX1mdW5jdGlvbiBBNihsLGMsZixwKXtmfD0wLHB8PTA7dmFyIEV0LERyLEpyLExyLGwwLFZpLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9''@;'; put 'put ''MCxIZT0wLFZlPTAscWU9MCxydD0wLFdlPTAsYXQ9MCxTdD0wLGt0PTAsc3Q9MCxadD0wLGN0PTAsYnQ9MCxhbj0wLFNuPTAsSG49MCx1cj0wLEhyPTAsRXI9MCxmcj0wLE9pPTA7Vmk9bGUsbGU9bGUrOTZ8MCxtPVZpKzE2fDAsSnI9Vmksaz0oY3w9MCkrKDU2KihsfD0wKXwwKXwwLHBlPTU2''@;'; put 'put ''KyhnZT1Ecj1WaSszMnwwKXwwO2Rve2FbZ2U+PjJdPWFbaz4+Ml0sZ2U9Z2UrNHwwLGs9ays0fDB9d2hpbGUoKDB8Z2UpPCgwfHBlKSk7THI9RHIrMTZ8MCx3PStfWyhsMD1EcisyNHwwKT4+M10sYj0rX1soRXQ9RHIrOHwwKT4+M107ZG97aWYodz5iKzFlLTcpc3Q9NDtlbHNle2lmKCEodzxi''@;'; put 'put ''Ky0xZS03KSYmK19bTHI+PjNdPitfW0RyPj4zXSl7c3Q9NDticmVha31zdD0wPT0oMHx0NShsLGMsMSkpLG09MHxhW0RyKzM2Pj4yXSxzdD8oRD0wLHN0PTcpOihtPTB8SDQoRHIsTHIsbSxjLHApLHN0PTIwKX19d2hpbGUoMCk7aWYoND09KDB8c3QpJiYoYVttPj4yXT1hW0RyPj4yXSxhW20r''@;'; put 'put ''ND4+Ml09YVtEcis0Pj4yXSxhW20rOD4+Ml09YVtEcis4Pj4yXSxhW20rMTI+PjJdPWFbRHIrMTI+PjJdLGFbRHI+PjJdPWFbTHI+PjJdLGFbRHIrND4+Ml09YVtMcis0Pj4yXSxhW0RyKzg+PjJdPWFbTHIrOD4+Ml0sYVtEcisxMj4+Ml09YVtMcisxMj4+Ml0sYVtMcj4+Ml09YVttPj4yXSxh''@;'; put 'put ''W0xyKzQ+PjJdPWFbbSs0Pj4yXSxhW0xyKzg+PjJdPWFbbSs4Pj4yXSxhW0xyKzEyPj4yXT1hW20rMTI+PjJdLGt0PTB8YVsoU3Q9RHIrMzZ8MCk+PjJdLGFbU3Q+PjJdPW09MHxhWyhzdD1Ecis0MHwwKT4+Ml0sYVtzdD4+Ml09a3QsMHx0NShsLGMsMik/KG09MHxINChEcixMcixtLGMscCks''@;'; put 'put ''c3Q9MTkpOihEPTEsc3Q9NykpLDc9PSgwfHN0KSl7TT0wfEg0KERyLExyLG0sYyxwKSxtPTB8dzYoZiksYVtmKyg3MiptfDApKzY4Pj4yXT0xLGs9ZisoNzIqTXwwKXwwLHBlPTcyKyhnZT1mKyg3MiptfDApfDApfDA7ZG97YVtnZT4+Ml09YVtrPj4yXSxnZT1nZSs0fDAsaz1rKzR8MH13aGls''@;'; put 'put ''ZSgoMHxnZSk8KDB8cGUpKTtfW2YrKDcyKm18MCkrMTY+PjNdPXE9K19bRXQ+PjNdLF9bZisoNzIqTXwwKSszMj4+M109cSxfW2YrKDcyKm18MCkrOD4+M109cT0rX1tEcj4+M10sX1tmKyg3MipNfDApKzI0Pj4zXT1xLGFbZisoNzIqTXwwKSs0OD4+Ml09bSxhW2YrKDcyKk18MCkrNTI+PjJd''@;'; put 'put ''PTAsYVtmKyg3MiptfDApKzQwPj4yXT1NLGFbZisoNzIqbXwwKSs0ND4+Ml09MCwoMHwoQT0wfGFbZisoNzIqbXwwKSs0OD4+Ml0pKT4wJiYoKDB8YVsoaz1mKyg3MipBfDApKzQwfDApPj4yXSk9PSgwfE0pJiYoYVtrPj4yXT1tKSwoMHxhWyhBPWYrKDcyKkF8MCkrNDR8MCk+PjJdKT09KDB8''@;'; put 'put ''TSkmJihhW0E+PjJdPW0pKSwoMHwoQT0wfGFbZisoNzIqbXwwKSs1Mj4+Ml0pKT4wJiYoKDB8YVsoaz1mKyg3MipBfDApKzQwfDApPj4yXSk9PSgwfE0pJiYoYVtrPj4yXT1tKSwoMHxhWyhBPWYrKDcyKkF8MCkrNDR8MCk+PjJdKT09KDB8TSkmJihhW0E+PjJdPW0pKSxTdD0wfHdmKCksc3Q9''@;'; put 'put ''MHx3ZigpLGFbcCsoNDAqKGF0PTB8YVsoa3Q9ZisoNzIqTXwwKSs1NnwwKT4+Ml0pfDApPj4yXT0yLGFbKFdlPXArKDQwKmF0fDApKzh8MCk+PjJdPWFbRHI+PjJdLGFbV2UrND4+Ml09YVtEcis0Pj4yXSxhW1dlKzg+PjJdPWFbRHIrOD4+Ml0sYVtXZSsxMj4+Ml09YVtEcisxMj4+Ml0sYVtw''@;'; put 'put ''Kyg0MCphdHwwKSs0Pj4yXT1sLGFbcCsoNDAqYXR8MCkrMzI+PjJdPXN0LGFbcCsoNDAqYXR8MCkrMzY+PjJdPVN0LGFbcCsoNDAqU3R8MCk+PjJdPTMsYVtwKyg0MCpTdHwwKSsyND4+Ml09TSxhW3ArKDQwKlN0fDApKzI4Pj4yXT1hdCxhW3ArKDQwKnN0fDApPj4yXT0zLGFbcCsoNDAqc3R8''@;'; put 'put ''MCkrMjQ+PjJdPW0sYVtwKyg0MCpzdHwwKSsyOD4+Ml09YXQsYVtrdD4+Ml09U3QsYVtmKyg3MiptfDApKzU2Pj4yXT1zdCxzdD1EPzE5OjIwfWlmKDE5PT0oMHxzdCk/MHx0NShsLGMsMSk/KEE9MSxzdD0zMik6KEE9MSxzdD0yMSk6MjA9PSgwfHN0KSYmKDB8dDUobCxjLDIpPyhBPTAsc3Q9''@;'; put 'put ''MzIpOihBPTAsc3Q9MjEpKSwyMT09KDB8c3QpKXtSPTB8SDQoTHIsRHIsMHxhW0RyKzQwPj4yXSxjLHApLEQ9MHx3NihmKSxhW2YrKDcyKkR8MCkrNjg+PjJdPTEsaz1mKyg3MipSfDApfDAscGU9NzIrKGdlPWYrKDcyKkR8MCl8MCl8MDtkb3thW2dlPj4yXT1hW2s+PjJdLGdlPWdlKzR8MCxr''@;'; put 'put ''PWsrNHwwfXdoaWxlKCgwfGdlKTwoMHxwZSkpO19bZisoNzIqRHwwKSsxNj4+M109cT0rX1tsMD4+M10sX1tmKyg3MipSfDApKzMyPj4zXT1xLF9bZisoNzIqRHwwKSs4Pj4zXT1xPStfW0xyPj4zXSxfW2YrKDcyKlJ8MCkrMjQ+PjNdPXEsYVtmKyg3MipSfDApKzQ4Pj4yXT1ELGFbZisoNzIq''@;'; put 'put ''UnwwKSs1Mj4+Ml09MCxhW2YrKDcyKkR8MCkrNDA+PjJdPVIsYVtmKyg3MipEfDApKzQ0Pj4yXT0wLCgwfChrPTB8YVtmKyg3MipEfDApKzQ4Pj4yXSkpPjAmJigoMHxhWyhNPWYrKDcyKmt8MCkrNDB8MCk+PjJdKT09KDB8UikmJihhW00+PjJdPUQpLCgwfGFbKGs9ZisoNzIqa3wwKSs0NHww''@;'; put 'put ''KT4+Ml0pPT0oMHxSKSYmKGFbaz4+Ml09RCkpLCgwfChrPTB8YVtmKyg3MipEfDApKzUyPj4yXSkpPjAmJigoMHxhWyhNPWYrKDcyKmt8MCkrNDB8MCk+PjJdKT09KDB8UikmJihhW00+PjJdPUQpLCgwfGFbKGs9ZisoNzIqa3wwKSs0NHwwKT4+Ml0pPT0oMHxSKSYmKGFbaz4+Ml09RCkpLGF0''@;'; put 'put ''PTB8d2YoKSxrdD0wfHdmKCksYVtwKyg0MCooV2U9MHxhWyhTdD1mKyg3MipSfDApKzU2fDApPj4yXSl8MCk+PjJdPTIsYVsocnQ9cCsoNDAqV2V8MCkrOHwwKT4+Ml09YVtMcj4+Ml0sYVtydCs0Pj4yXT1hW0xyKzQ+PjJdLGFbcnQrOD4+Ml09YVtMcis4Pj4yXSxhW3J0KzEyPj4yXT1hW0xy''@;'; put 'put ''KzEyPj4yXSxhW3ArKDQwKldlfDApKzQ+PjJdPWwsYVtwKyg0MCpXZXwwKSszMj4+Ml09a3QsYVtwKyg0MCpXZXwwKSszNj4+Ml09YXQsYVtwKyg0MCphdHwwKT4+Ml09MyxhW3ArKDQwKmF0fDApKzI0Pj4yXT1SLGFbcCsoNDAqYXR8MCkrMjg+PjJdPVdlLGFbcCsoNDAqa3R8MCk+PjJdPTMs''@;'; put 'put ''YVtwKyg0MCprdHwwKSsyND4+Ml09RCxhW3ArKDQwKmt0fDApKzI4Pj4yXT1XZSxhW1N0Pj4yXT1hdCxhW2YrKDcyKkR8MCkrNTY+PjJdPWt0LGt0PW0sbT0wfWVsc2UgMzI9PSgwfHN0KSYmKGt0PW0sUj0wfEg0KExyLERyLDB8YVtEcis0MD4+Ml0sYyxwKSxtPTEpO2U6ZG97aWYoKDB8a3Qp''@;'; put 'put ''PjApe2F0PWYrKDcyKlJ8MCkrMjR8MCxTdD1mKyg3MipSfDApKzMyfDAsV2U9MCE9KDB8bSksVmU9QT9jKyg1NipsfDApKzQ4fDA6YysoNTYqbHwwKSs0NHwwLHFlPUpyKzh8MCxBPTAsbT0wLEhlPWt0O3Q6Zm9yKDs7KXtpZihrPWYrKDcyKkhlfDApfDAsISgwfE9FKExlPWYrKDcyKkhlfDAp''@;'; put 'put ''KzI0fDAsYXQpKSlicmVhayBlO09lPTB8YVsoTT1mKyg3MipIZXwwKSs1NnwwKT4+Ml0sRD0wfHdmKCksRz0wfHdmKCksYVtwKyg0MCpPZXwwKT4+Ml09MSxhW3ArKDQwKk9lfDApKzQ+PjJdPWwsYVtwKyg0MCpPZXwwKSszMj4+Ml09RCxhW3ArKDQwKk9lfDApKzM2Pj4yXT1HLGFbcCsoNDAq''@;'; put 'put ''RHwwKT4+Ml09MyxhW3ArKDQwKkR8MCkrMjQ+PjJdPUhlLGFbcCsoNDAqRHwwKSsyOD4+Ml09T2UsYVtwKyg0MCpHfDApPj4yXT0zLFJlPTB8dzYoZiksYVtwKyg0MCpHfDApKzI0Pj4yXT1SZSxydD1mKyg3MipSZXwwKXwwLGFbZisoNzIqUmV8MCkrNjg+PjJdPTEsYVtwKyg0MCpHfDApKzI4''@;'; put 'put ''Pj4yXT1PZSxBPSgwfEhlKT09KDB8a3QpP1JlOkEsK2VvKCsoK19bKE9lPWYrKDcyKkhlfDApKzMyfDApPj4zXS0rX1tTdD4+M10pKTw9MWUtNyYmK2VvKCsoK19bTGU+PjNdLStfW2F0Pj4zXSkpPD0xZS03JiYobT1SZSkscGU9KGdlPXJ0KSs3MnwwO2Rve2FbZ2U+PjJdPWFbaz4+Ml0sZ2U9''@;'; put 'put ''Z2UrNHwwLGs9ays0fDB9d2hpbGUoKDB8Z2UpPCgwfHBlKSk7YVtNPj4yXT1ELGFbZisoNzIqUmV8MCkrNTY+PjJdPUcsYmU9ZisoNzIqSGV8MCkrNDh8MCxrPSgwfGFbKE09ZisoNzIqSGV8MCkrNTJ8MCk+PjJdKTwxO2Rve2lmKCgwfGFbYmU+PjJdKTwxKXtpZihrKWJyZWFrIHQ7az0wfGFb''@;'; put 'put ''KGdlPWYrKDcyKkhlfDApKzQwfDApPj4yXTtkb3tpZigoMHxrKT4wJiYoMHwoSG49MHxhWyhTbj1mKyg3MipIZXwwKSs0NHwwKT4+Ml0pKT4wKXtpZigoMHwoaz0wfGFbKHBlPWYrKDcyKkhlfDApKzYwfDApPj4yXSkpPD0wKXthW2YrKDcyKlJlfDApKzQwPj4yXT1IbixhW2YrKDcyKlJlfDAp''@;'; put 'put ''KzQ0Pj4yXT0tMSxhW1NuPj4yXT0tMSxhW2YrKDcyKkhufDApKzQ4Pj4yXT1SZTticmVha30xPT0oMHxhW2YrKDcyKkhlfDApKzY0Pj4yXSk/KGFbZisoNzIqUmV8MCkrNDA+PjJdPUhuLGFbU24+PjJdPS0xLGFbZisoNzIqUmV8MCkrNDQ+PjJdPWssYVtmKyg3MiooMHxhW2dlPj4yXSl8MCkr''@;'; put 'put ''NDg+PjJdPUhlLEc9UmUsRD1Ibik6KGFbZisoNzIqUmV8MCkrNDQ+PjJdPS0xLGFbKGJlPWYrKDcyKlJlfDApKzQwfDApPj4yXT1hW1NuPj4yXSxhW1NuPj4yXT1EPTB8YVtnZT4+Ml0sYVtnZT4+Ml09ayxhW2YrKDcyKmt8MCkrNDg+PjJdPUhlLEc9SGUsaz0wfGFbYmU+PjJdKSxhW2YrKDcy''@;'; put 'put ''KkR8MCkrNDg+PjJdPUcsYVtmKyg3MiprfDApKzQ4Pj4yXT1SZSxhW2YrKDcyKlJlfDApKzYwPj4yXT0wLGFbcGU+PjJdPTB9ZWxzZSBzdD03N313aGlsZSgwKTtkb3tpZig3Nz09KDB8c3QpKXtpZihzdD0wLEQ9ZisoNzIqa3wwKSs0OHwwLGs9ZisoNzIqa3wwKSs1MnwwLCgwfChHPTB8YVtE''@;'; put 'put ''Pj4yXSkpPjAmJigwfGFbaz4+Ml0pPjApe2lmKCgwfChrPTB8YVtmKyg3MipHfDApKzQ+PjJdKSk+MCYmMD09KDB8eTYoayxjLExyKSkpe2FbZisoNzIqUmV8MCkrNDQ+PjJdPS0xLGFbZisoNzIqSGV8MCkrNDQ+PjJdPS0xLGFbZ2U+PjJdPS0xLGFbZisoNzIqKDB8YVtmKyg3MipSZXwwKSs0''@;'; put 'put ''MD4+Ml0pfDApKzUyPj4yXT1SZTticmVha31hW2YrKDcyKkhlfDApKzQ0Pj4yXT0tMSxhW2YrKDcyKlJlfDApKzQ0Pj4yXT0tMSxhW2YrKDcyKlJlfDApKzQwPj4yXT0tMSxhW2YrKDcyKigwfGFbZ2U+PjJdKXwwKSs0OD4+Ml09SGU7YnJlYWt9YVtEPj4yXT1IZSxhW2s+PjJdPVJlfX13aGls''@;'; put 'put ''ZSgwKTtpZigrZW8oKygrX1tPZT4+M10tK19bU3Q+PjNdKSk8PTFlLTcmJldlJitlbygrKCtfW0xlPj4zXS0rX1thdD4+M10pKTw9MWUtNyl7KDB8KGs9MHxhW1ZlPj4yXSkpPjAmJjAhPSgwfHk2KGssYyxEcikpPyhhW2YrKDcyKigwfGFbTT4+Ml0pfDApKzQwPj4yXT1IZSxEPWYrKDcyKlJl''@;'; put 'put ''fDApKzUyfDAsaz1SZSk6KGFbZisoNzIqKDB8YVtmKyg3MipSZXwwKSs1Mj4+Ml0pfDApKzQ0Pj4yXT1SZSxEPU0saz1IZSksYVtEPj4yXT0tMSxhW2YrKDcyKmt8MCkrNDg+PjJdPS0xLGs9MHxhW00+PjJdO2JyZWFrfUc9ZisoNzIqKGs9MHxhW00+PjJdKXwwKSs0NHwwLCgwfChEPTB8YVso''@;'; put 'put ''TT1mKyg3MiprfDApKzQwfDApPj4yXSkpPjAmJihIcj0oMHxEKT09KDB8SGUpLCgwfCh1cj0wfGFbRz4+Ml0pKT4wKSYmKGFbZisoNzIqa3wwKSs2MD4+Ml09SHI/dXI6RCxhW2YrKDcyKmt8MCkrNjQ+PjJdPUhyPzE6MiksYVtNPj4yXT1IZSxhW0c+PjJdPVJlfWVsc2V7aWYoIWspeytlbygr''@;'; put 'put ''KHE9KHc9K19bT2U+PjNdKS0oYj0rX1tFdD4+M10pKSk8PTFlLTc/Z2U9K19bTGU+PjNdPitfW0RyPj4zXTooX1txZT4+M109dyxfW0pyPj4zXT1xLygrX1tsMD4+M10tYikqKCtfW0xyPj4zXS0odz0rX1tEcj4+M10pKSt3LGdlPTAhPSgwfG9HKEpyLExlKSkpLGs9MHxhWyhwZT1mKyg3MipI''@;'; put 'put ''ZXwwKSs0MHwwKT4+Ml07ZG97aWYoKDB8ayk+MCYmKDB8KGZyPTB8YVsoRXI9ZisoNzIqSGV8MCkrNDR8MCk+PjJdKSk+MCl7aWYoKDB8KGs9MHxhWyhHPWYrKDcyKkhlfDApKzYwfDApPj4yXSkpPD0wKXthW2YrKDcyKlJlfDApKzQwPj4yXT1mcixhW2YrKDcyKlJlfDApKzQ0Pj4yXT0tMSxh''@;'; put 'put ''W0VyPj4yXT0tMSxhW2YrKDcyKmZyfDApKzQ4Pj4yXT1SZTticmVha30xPT0oMHxhW2YrKDcyKkhlfDApKzY0Pj4yXSk/KGFbZisoNzIqUmV8MCkrNDA+PjJdPWZyLGFbRXI+PjJdPS0xLGFbZisoNzIqUmV8MCkrNDQ+PjJdPWssYVtmKyg3MiooMHxhW3BlPj4yXSl8MCkrNDg+PjJdPUhlLEQ9''@;'; put 'put ''UmUsTT1mcik6KGFbZisoNzIqUmV8MCkrNDQ+PjJdPS0xLGFbKE9pPWYrKDcyKlJlfDApKzQwfDApPj4yXT1hW0VyPj4yXSxhW0VyPj4yXT1NPTB8YVtwZT4+Ml0sYVtwZT4+Ml09ayxhW2YrKDcyKmt8MCkrNDg+PjJdPUhlLEQ9SGUsaz0wfGFbT2k+PjJdKSxhW2YrKDcyKk18MCkrNDg+PjJd''@;'; put 'put ''PUQsYVtmKyg3MiprfDApKzQ4Pj4yXT1SZSxhW2YrKDcyKlJlfDApKzYwPj4yXT0wLGFbRz4+Ml09MH1lbHNlIHN0PTEwNn13aGlsZSgwKTtkb3tpZigxMDY9PSgwfHN0KSl7aWYoc3Q9MCxNPWYrKDcyKmt8MCkrNDh8MCxrPWYrKDcyKmt8MCkrNTJ8MCwoMHwoRD0wfGFbTT4+Ml0pKT4wJiYo''@;'; put 'put ''MHxhW2s+PjJdKT4wKXtpZigoMHwoaz0wfGFbZisoNzIqRHwwKSs0Pj4yXSkpPjAmJjA9PSgwfHk2KGssYyxMcikpKXthW2YrKDcyKlJlfDApKzQ0Pj4yXT0tMSxhW2YrKDcyKkhlfDApKzQ0Pj4yXT0tMSxhW3BlPj4yXT0tMSxhW2YrKDcyKigwfGFbZisoNzIqUmV8MCkrNDA+PjJdKXwwKSs1''@;'; put 'put ''Mj4+Ml09UmU7YnJlYWt9YVtmKyg3MipIZXwwKSs0ND4+Ml09LTEsYVtmKyg3MipSZXwwKSs0ND4+Ml09LTEsYVtmKyg3MipSZXwwKSs0MD4+Ml09LTEsYVtmKyg3MiooMHxhW3BlPj4yXSl8MCkrNDg+PjJdPUhlO2JyZWFrfWFbTT4+Ml09SGUsYVtrPj4yXT1SZX19d2hpbGUoMCk7K2VvKCso''@;'; put 'put ''K19bT2U+PjNdLStfW1N0Pj4zXSkpPD0xZS03JiZXZSYrZW8oKygrX1tMZT4+M10tK19bYXQ+PjNdKSk8PTFlLTc/KGFbZisoNzIqKGs9MHxhW2JlPj4yXSl8MCkrNDA+PjJdPUhlLGFbZisoNzIqa3wwKSs0ND4+Ml09LTEsYVtmKyg3MiooT2k9MHxhWyhrPWYrKDcyKkhlfDApKzUyfDApPj4y''@;'; put 'put ''XSl8MCkrNDA+PjJdPVJlLGFbZisoNzIqT2l8MCkrNDQ+PjJdPS0xLGFbZisoNzIqUmV8MCkrNDg+PjJdPU9pLGFbZisoNzIqUmV8MCkrNTI+PjJdPS0xLGFbaz4+Ml09LTEsaz0tMSk6c3Q9MTE2O2Rve2lmKDExNj09KDB8c3QpKXtpZihzdD0wLGFbZisoNzIqKGs9MHxhW2JlPj4yXSl8MCkr''@;'; put 'put ''NDA+PjJdPUhlLE09ZisoNzIqa3wwKSs0NHwwLGdlKXthW00+PjJdPVJlLGFbZisoNzIqKExlPTB8YVsoT2k9ZisoNzIqSGV8MCkrNTJ8MCk+PjJdKXwwKSs0MD4+Ml09UmUsYVtmKyg3MipMZXwwKSs0ND4+Ml09LTEsYVtPaT4+Ml09LTE7YnJlYWt9YVtNPj4yXT0tMSxhW2YrKDcyKihPaT0w''@;'; put 'put ''fGFbKGs9ZisoNzIqSGV8MCkrNTJ8MCk+PjJdKXwwKSs0MD4+Ml09SGUsYVtmKyg3MipPaXwwKSs0ND4+Ml09UmUsYVtmKyg3MipSZXwwKSs0OD4+Ml09T2ksYVtmKyg3MipSZXwwKSs1Mj4+Ml09LTEsaz0wfGFbaz4+Ml07YnJlYWt9fXdoaWxlKDApO2JyZWFrfWs9MHxhWyhnZT1mKyg3MipI''@;'; put 'put ''ZXwwKSs0MHwwKT4+Ml07ZG97aWYoKDB8ayk+MCYmKDB8KGN0PTB8YVsoWnQ9ZisoNzIqSGV8MCkrNDR8MCk+PjJdKSk+MCl7aWYoKDB8KGs9MHxhWyhwZT1mKyg3MipIZXwwKSs2MHwwKT4+Ml0pKTw9MCl7YVtmKyg3MipSZXwwKSs0MD4+Ml09Y3QsYVtmKyg3MipSZXwwKSs0ND4+Ml09LTEs''@;'; put 'put ''YVtadD4+Ml09LTEsYVtmKyg3MipjdHwwKSs0OD4+Ml09UmU7YnJlYWt9MT09KDB8YVtmKyg3MipIZXwwKSs2ND4+Ml0pPyhhW2YrKDcyKlJlfDApKzQwPj4yXT1jdCxhW1p0Pj4yXT0tMSxhW2YrKDcyKlJlfDApKzQ0Pj4yXT1rLGFbZisoNzIqKDB8YVtnZT4+Ml0pfDApKzQ4Pj4yXT1IZSxH''@;'; put 'put ''PVJlLEQ9Y3QpOihhW2YrKDcyKlJlfDApKzQ0Pj4yXT0tMSxhWyhPaT1mKyg3MipSZXwwKSs0MHwwKT4+Ml09YVtadD4+Ml0sYVtadD4+Ml09RD0wfGFbZ2U+PjJdLGFbZ2U+PjJdPWssYVtmKyg3MiprfDApKzQ4Pj4yXT1IZSxHPUhlLGs9MHxhW09pPj4yXSksYVtmKyg3MipEfDApKzQ4Pj4y''@;'; put 'put ''XT1HLGFbZisoNzIqa3wwKSs0OD4+Ml09UmUsYVtmKyg3MipSZXwwKSs2MD4+Ml09MCxhW3BlPj4yXT0wfWVsc2Ugc3Q9NTF9d2hpbGUoMCk7ZG97aWYoNTE9PSgwfHN0KSl7aWYoc3Q9MCxEPWYrKDcyKmt8MCkrNDh8MCxrPWYrKDcyKmt8MCkrNTJ8MCwoMHwoRz0wfGFbRD4+Ml0pKT4wJiYo''@;'; put 'put ''MHxhW2s+PjJdKT4wKXtpZigoMHwoaz0wfGFbZisoNzIqR3wwKSs0Pj4yXSkpPjAmJjA9PSgwfHk2KGssYyxMcikpKXthW2YrKDcyKlJlfDApKzQ0Pj4yXT0tMSxhW2YrKDcyKkhlfDApKzQ0Pj4yXT0tMSxhW2dlPj4yXT0tMSxhW2YrKDcyKigwfGFbZisoNzIqUmV8MCkrNDA+PjJdKXwwKSs1''@;'; put 'put ''Mj4+Ml09UmU7YnJlYWt9YVtmKyg3MipIZXwwKSs0ND4+Ml09LTEsYVtmKyg3MipSZXwwKSs0ND4+Ml09LTEsYVtmKyg3MipSZXwwKSs0MD4+Ml09LTEsYVtmKyg3MiooMHxhW2dlPj4yXSl8MCkrNDg+PjJdPUhlO2JyZWFrfWFbRD4+Ml09SGUsYVtrPj4yXT1SZX19d2hpbGUoMCk7aWYoK2Vv''@;'; put 'put ''KCsoK19bT2U+PjNdLStfW1N0Pj4zXSkpPD0xZS03JiZXZSYrZW8oKygrX1tMZT4+M10tK19bYXQ+PjNdKSk8PTFlLTcpeygwfChrPTB8YVtWZT4+Ml0pKT4wJiYwIT0oMHx5NihrLGMsRHIpKT8oYVtmKyg3MiooMHxhW2JlPj4yXSl8MCkrNDA+PjJdPUhlLE09ZisoNzIqUmV8MCkrNTJ8MCxr''@;'; put 'put ''PVJlKTooYVtmKyg3MiooMHxhW2YrKDcyKlJlfDApKzQ4Pj4yXSl8MCkrNDQ+PjJdPVJlLGs9SGUpLGFbTT4+Ml09LTEsYVtmKyg3MiprfDApKzQ4Pj4yXT0tMSxrPTB8YVtiZT4+Ml07YnJlYWt9Rz1mKyg3Miooaz0wfGFbYmU+PjJdKXwwKSs0NHwwLCgwfChEPTB8YVsoTT1mKyg3MiprfDAp''@;'; put 'put ''KzQwfDApPj4yXSkpPjAmJihhbj0oMHxEKT09KDB8SGUpLCgwfChidD0wfGFbRz4+Ml0pKT4wKSYmKGFbZisoNzIqa3wwKSs2MD4+Ml09YW4/YnQ6RCxhW2YrKDcyKmt8MCkrNjQ+PjJdPWFuPzE6MiksYVtNPj4yXT1IZSxhW0c+PjJdPVJlfX13aGlsZSgwKTtpZihhW3J0Pj4yXT1sLGFbZiso''@;'; put 'put ''NzIqSGV8MCkrND4+Ml09bCwhKCgwfGspPjApKWJyZWFrIGU7SGU9a31DdSgxMzg0MjQsMTksMSwwfGFbMTU3MTJdKX1lbHNlIEE9MCxtPTB9d2hpbGUoMCk7SGIobCxrdCxSLDEsZixwKSxIYihsLEEsbSwyLGYscCksYVtjKyg1NipsfDApKzMyPj4yXT0xLGxlPVZpfWZ1bmN0aW9uIEZiKGws''@;'; put 'put ''YyxmLHApe2Z8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTA7MHxhWyhjfD0wKSsoNTYqKGx8PTApfDApKzMyPj4yXXx8KGFbKHc9YysoNTYqbHwwKSszNnwwKT4+Ml09YVtmKyg3MiooMHxINChtPWMrKDU2Kmx8MCl8MCxBPWMrKDU2Kmx8MCkrMTZ8MCwwfGFbdz4+Ml0sYyxwKSl8MCkrNTY+PjJd''@;'; put 'put ''LGFbKGw9YysoNTYqbHwwKSs0MHwwKT4+Ml09YVtmKyg3MiooMHxINChBLG0sMHxhW2w+PjJdLGMscCkpfDApKzU2Pj4yXSl9ZnVuY3Rpb24gSDQobCxjLGYscCxtKXtmfD0wLHB8PTAsbXw9MDt2YXIgRyxwZSxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAscT0wLGdlPTA7Rz04KyhsfD0w''@;'; put 'put ''KXwwLHBlPTgrKGN8PTApfDA7ZTpmb3IoOzspe3Q6ZG97c3dpdGNoKDB8YVttKyg0MCpmfDApPj4yXSl7Y2FzZSAzOmdlPTM7YnJlYWsgZTtjYXNlIDI6QT0rX1tHPj4zXSx3PW0rKDQwKmZ8MCkrOHwwLGs9MWUtNysoYj0rX1ttKyg0MCpmfDApKzE2Pj4zXSk7ZG97aWYoIShBPmspKXtpZigh''@;'; put 'put ''KEE8KE09YistMWUtNykpJiYrX1tsPj4zXT4rX1t3Pj4zXSlicmVhaztpZigrZW8oKyhBLWIpKTw9MWUtNyYmK2VvKCsoK19bbD4+M10tKEQ9K19bdz4+M10pKSk8PTFlLTcpe0E9K19bcGU+PjNdO2Rve2lmKCEoQT5rKSl7aWYoIShBPE0pJiYrX1tjPj4zXT5EKWJyZWFrO2Y9bSsoNDAqZnww''@;'; put 'put ''KSszMnwwO2JyZWFrIHR9fXdoaWxlKDApO2Y9bSsoNDAqZnwwKSszNnwwO2JyZWFrIHR9Zj1tKyg0MCpmfDApKzMyfDA7YnJlYWsgdH19d2hpbGUoMCk7Zj1tKyg0MCpmfDApKzM2fDA7YnJlYWs7Y2FzZSAxOitlbygrKChBPStfW0c+PjNdKS0rX1twKyg1Nioodz0wfGFbbSsoNDAqZnwwKSs0''@;'; put 'put ''Pj4yXSl8MCkrOD4+M10pKTw9MWUtNyYmK2VvKCsoKFI9K19bbD4+M10pLStfW3ArKDU2Knd8MCk+PjNdKSk8PTFlLTc/Yj1SOmdlPTE5O2Rve2lmKDE5PT0oMHxnZSkpe2lmKGdlPTAsK2VvKCsoQS0rX1twKyg1Nip3fDApKzI0Pj4zXSkpPD0xZS03JiYrZW8oKygocT0rX1tsPj4zXSktK19b''@;'; put 'put ''cCsoNTYqd3wwKSsxNj4+M10pKTw9MWUtNyl7Yj1xO2JyZWFrfWlmKDB8eTYodyxwLGwpKXtmPW0rKDQwKmZ8MCkrMzJ8MDticmVhayB0fWY9bSsoNDAqZnwwKSszNnwwO2JyZWFrIHR9fXdoaWxlKDApO2lmKCtlbygrKEEtK19bcGU+PjNdKSk8PTFlLTcpe2lmKCtfW2M+PjNdPGIpe2Y9bSso''@;'; put 'put ''NDAqZnwwKSszMnwwO2JyZWFrIHR9Zj1tKyg0MCpmfDApKzM2fDA7YnJlYWsgdH1pZigwfHk2KHcscCxjKSl7Zj1tKyg0MCpmfDApKzMyfDA7YnJlYWsgdH1mPW0rKDQwKmZ8MCkrMzZ8MDticmVhayB0O2RlZmF1bHQ6Z2U9MzE7YnJlYWsgZX19d2hpbGUoMCk7Zj0wfGFbZj4+Ml19cmV0dXJu''@;'; put 'put ''IDM9PSgwfGdlKT8wfGFbbSsoNDAqZnwwKSsyND4+Ml06KDMxPT0oMHxnZSkmJihDdSgxMzgzNTgsMzUsMSwwfGFbMTU3MTJdKSxQcigxMzgzOTQsMTM4Mzk2LDM0OSwxMzg0MDgpKSwwKX1mdW5jdGlvbiB5NihsLGMsZil7Znw9MDt2YXIgbSxBLHcsYixwPTAsaz0wLE09MDtBPShjfD0wKSso''@;'; put 'put ''NTYqKGx8PTApfDApKzE2fDAsdz0rX1tjKyg1NipsfDApKzI0Pj4zXSxiPWMrKDU2Kmx8MCl8MCxtPStfW2MrKDU2Kmx8MCkrOD4+M107ZG97aWYoISh3Pm0rMWUtNykpe2lmKCEodzxtKy0xZS03KSYmK19bQT4+M10+K19bYj4+M10pe2s9NDticmVha31pZigrZW8oKyh3LShwPStfW2YrOD4+''@;'; put 'put ''M10pKSk8PTFlLTcpe3A9K19bZj4+M108K19bQT4+M10/MTotMTticmVha31pZigrZW8oKyhtLXApKTw9MWUtNyl7cD0rX1tmPj4zXTwrX1tiPj4zXT8xOi0xO2JyZWFrfXA9KCtfW2I+PjNdLShNPStfW0E+PjNdKSkqKHAtdyktKCtfW2Y+PjNdLU0pKihtLXcpO2JyZWFrfWs9NH13aGlsZSgw''@;'; put 'put ''KTtkb3tpZig0PT0oMHxrKSl7aWYoK2VvKCsody0ocD0rX1tmKzg+PjNdKSkpPD0xZS03KXtwPStfW2Y+PjNdPCtfW0E+PjNdPzE6LTE7YnJlYWt9aWYoK2VvKCsobS1wKSk8PTFlLTcpe3A9K19bZj4+M108K19bYj4+M10/MTotMTticmVha31wPSgrX1tBPj4zXS0oTT0rX1tiPj4zXSkpKihw''@;'; put 'put ''LW0pLSgrX1tmPj4zXS1NKSoody1tKTticmVha319d2hpbGUoMCk7cmV0dXJuIHA+MHwwfWZ1bmN0aW9uIHQ1KGwsYyxmKXtyZXR1cm4gbHw9MCwwfGFbKGN8PTApKyg1NiooMHxhWygxPT0oMHwoZnw9MCkpP2MrKDU2Kmx8MCkrNDh8MDpjKyg1NipsfDApKzQ0fDApPj4yXSl8MCkrMzI+PjJd''@;'; put 'put ''fWZ1bmN0aW9uIHc2KGwpe2x8PTA7dmFyIGMsZixwPTA7cmV0dXJuIHA9bGUsbGU9bGUrMTZ8MCxmPXAsKDB8KGM9MHxhWzQ3Mzk1XSkpPCgwfGFbNDczOTRdKT8oYVtsKyg3MipjfDApPj4yXT0tMSxhW2wrKDcyKmN8MCkrND4+Ml09LTEsYVtsKyg3MipjfDApKzY4Pj4yXT0xLGFbNDczOTVd''@;'; put 'put ''PWMrMSxsZT1wLDB8Yyk6KHA9MHxhWzE1NzEyXSxhW2Y+PjJdPWMsVDAocCwxMzg0ODMsZiksUHIoMTM4Mzk0LDEzODM5Niw4OCwxMzg1MjEpLDApfWZ1bmN0aW9uIHdmKCl7dmFyIGw7cmV0dXJuKDB8KGw9MHxhWzQ3Mzk2XSkpPCgwfGFbNDczOTNdKT8oYVs0NzM5Nl09bCsxLDB8bCk6KEN1''@;'; put 'put ''KDEzODQ0NCwzMCwxLDB8YVsxNTcxMl0pLFByKDEzODM5NCwxMzgzOTYsNzIsMTM4NDc1KSwwKX1mdW5jdGlvbiBPRShsLGMpe3ZhciBmLHA7cmV0dXJuIDB8KChmPStfWzgrKGx8PTApPj4zXSk+MWUtNysocD0rX1s4KyhjfD0wKT4+M10pPzE6ZjxwKy0xZS03PzA6K19bbD4+M10+PStfW2M+''@;'; put 'put ''PjNdJjEpfWZ1bmN0aW9uIG9HKGwsYyl7dmFyIGYscDtyZXR1cm4gMHwoKGY9K19bOCsobHw9MCk+PjNdKTwocD0rX1s4KyhjfD0wKT4+M10pLTFlLTc/MTpmPnArMWUtNz8wOitfW2w+PjNdPCtfW2M+PjNdJjEpfWZ1bmN0aW9uIEhiKGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAsQXw9MDt2YXIg''@;'; put 'put ''cGUsZ2Usdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxiZT0wO2dlPShtfD0wKSsoNzIqKGZ8PTApfDApKzI0fDAscGU9MT09KDB8KHB8PTApKTtlOmZvcig7cT1tKyg3MipjfDApKzI0fDAsaz1tKyg3MipjfDApKzQ4fDAsTT1tKyg3MipjfDApKzUyfDAsRD1tKyg3MipjfDApfDAs''@;'; put 'put ''Uj1tKyg3MipjfDApKzR8MCxHPW0rKDcyKmN8MCkrNTZ8MCwhKCgwfGMpPD0wKTspZm9yKDs7KXtpZighKDB8T0UocSxnZSkpKWJyZWFrIGU7cD0oMHwoZj0wfGFbaz4+Ml0pKT4wO2Rve2lmKHBlKXtpZihwJiYoMHxhW20rKDcyKmZ8MCkrND4+Ml0pPT0oMHxsKSlicmVhaztpZigoMHwoZj0w''@;'; put 'put ''fGFbTT4+Ml0pKTw9MCl7Yz1mO2NvbnRpbnVlIGV9aWYoKDB8YVttKyg3MipmfDApKzQ+PjJdKSE9KDB8bCkpe2M9Zjtjb250aW51ZSBlfX1lbHNle2lmKHAmJigwfGFbbSsoNzIqZnwwKT4+Ml0pPT0oMHxsKSlicmVhaztpZigoMHwoZj0wfGFbTT4+Ml0pKTw9MCl7Yz1mO2NvbnRpbnVlIGV9''@;'; put 'put ''aWYoKDB8YVttKyg3MipmfDApPj4yXSkhPSgwfGwpKXtjPWY7Y29udGludWUgZX19fXdoaWxlKDApO2lmKCgwfGFbRD4+Ml0pIT0oMHxhW20rKDcyKmZ8MCk+PjJdKSl7Yz1mO2NvbnRpbnVlIGV9aWYoKDB8YVtSPj4yXSkhPSgwfGFbbSsoNzIqZnwwKSs0Pj4yXSkpe2M9Zjtjb250aW51ZSBl''@;'; put 'put ''fWI9MHxhW0c+PjJdLCgwfGFbKHc9QSsoNDAqKHA9MHxhW0ErKDQwKihiZT0wfGFbbSsoNzIqZnwwKSs1Nj4+Ml0pfDApKzI4Pj4yXSl8MCkrMzJ8MCk+PjJdKT09KDB8YmUpP2Fbdz4+Ml09YjphW0ErKDQwKnB8MCkrMzY+PjJdPWIsYVtrPj4yXT1wPTB8YVttKyg3MipmfDApKzQ4Pj4yXTtk''@;'; put 'put ''b3tpZigoMHxwKT4wKXtpZigoMHxhWyh3PW0rKDcyKnB8MCkrNDB8MCk+PjJdKT09KDB8Zikpe2Fbdz4+Ml09YzticmVha30oMHxhWyhwPW0rKDcyKnB8MCkrNDR8MCk+PjJdKT09KDB8ZikmJihhW3A+PjJdPWMpfX13aGlsZSgwKTthW00+PjJdPXA9MHxhW20rKDcyKmZ8MCkrNTI+PjJdO2Rv''@;'; put 'put ''e2lmKCgwfHApPjApe2lmKCgwfGFbKHc9bSsoNzIqcHwwKSs0MHwwKT4+Ml0pPT0oMHxmKSl7YVt3Pj4yXT1jO2JyZWFrfSgwfGFbKHA9bSsoNzIqcHwwKSs0NHwwKT4+Ml0pPT0oMHxmKSYmKGFbcD4+Ml09Yyl9fXdoaWxlKDApO2FbcT4+Ml09YVsoYmU9bSsoNzIqZnwwKSsyNHwwKT4+Ml0s''@;'; put 'put ''YVtxKzQ+PjJdPWFbYmUrND4+Ml0sYVtxKzg+PjJdPWFbYmUrOD4+Ml0sYVtxKzEyPj4yXT1hW2JlKzEyPj4yXSxhW20rKDcyKmZ8MCkrNjg+PjJdPTJ9fWZ1bmN0aW9uIEJFKGwsYyl7cmV0dXJuIGx8PTAsKGN8PTApJiYoYz0wfGZ1bmN0aW9uIE5iKGwpe3ZhciBjO3JldHVybiBsfD0wLDB8''@;'; put 'put ''KGM9MHx2cig4KSkmJihhW2MrND4+Ml09bCxhW2M+PjJdPTApLDB8Y30oYyksYVtjPj4yXT1sLGw9YyksMHxsfWZ1bmN0aW9uIFZiKCl7dmFyIGw7cmV0dXJuIDB8KGw9MHx2cigxOTkyKSkmJihhW2w+PjJdPTB8ZnVuY3Rpb24gcEIobCl7dmFyIGM7cmV0dXJuIGM9MHxHOShsfD0wKSxhW2Mr''@;'; put 'put ''ND4+Ml09MCxhWyhsPWwrMTk3MnwwKT4+Ml09MSsoMHxhW2w+PjJdKSwwfGN9KGwpKSwwfGx9ZnVuY3Rpb24gamIobCl7cmV0dXJuIFpiKGx8PTAsMHxhW2w+PjJdKSxGdCgwfGFbbD4+Ml0pLEZ0KGwpLDB9ZnVuY3Rpb24gWmIobCxjKXtjfD0wO3ZhciBBLHcsYixmPTAscD0wLG09MDtBPTE5''@;'; put 'put ''ODArKGx8PTApfDAsdz1sKzE5MTJ8MCxiPWwrMTkzNnwwO2U6ZG97aWYoKDB8YVtjKzQ+PjJdKT4wKWZvcihmPTA7Oyl7aWYoNjQ9PSgwfGYpKWJyZWFrIGU7MHwobT0wfGFbKHA9Yys4KygyMCpmfDApKzE2fDApPj4yXSkmJihaYihsLG0pLEZ0KDB8YVtwPj4yXSksV2IoYyxmKSxhW0E+PjJd''@;'; put 'put ''PSgwfGFbQT4+Ml0pLTEsMHxhW3c+PjJdKSYmKGFbYj4+Ml09MSsoMHxhW2I+PjJdKSksZj1mKzF8MH1lbHNlIGZvcihmPTA7Oyl7aWYoNjQ9PSgwfGYpKWJyZWFrIGU7MHxhW2MrOCsoMjAqZnwwKSsxNj4+Ml0mJihXYihjLGYpLGFbQT4+Ml09KDB8YVtBPj4yXSktMSwwfGFbdz4+Ml0pJiYo''@;'; put 'put ''YVtiPj4yXT0xKygwfGFbYj4+Ml0pKSxmPWYrMXwwfX13aGlsZSgwKX1mdW5jdGlvbiBONChsLGMsZil7bHw9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTAsYj0wOyhjfD0wKXx8UHIoMTM4ODc5LDEzODUyOSwxOTQsMTM4NTM3KSwoMHwocD0wfGFbYys0Pj4yXSkpPD0tMSYmUHIoMTM4NTQ5''@;'; put 'put ''LDEzODUyOSwxOTUsMTM4NTM3KSxmfHxQcigxMzg4MjEsMTM4NTI5LDE5NiwxMzg1MzcpLGFbKGI9bCsxOTUyfDApPj4yXT0xKygwfGFbYj4+Ml0pO2U6ZG97aWYoKDB8cCk+MClmb3IoYj0wLHA9MDs7KXtpZig2ND09KDB8YikpYnJlYWsgZTtpZigwIT0oMHxhWyhtPWMrOCsoMjAqYnwwKSsx''@;'; put 'put ''NnwwKT4+Ml0pJiYwIT0oMHxZYihmLGMrOCsoMjAqYnwwKXwwKSkpaWYoQT0wfE40KGwsMHxhW20+PjJdLGYpLHApe2ZvcihtPXA7dz0wfGFbbT4+Ml07KW09dzthW20+PjJdPUF9ZWxzZSBwPUE7Yj1iKzF8MH1lbHNlIGZvcihBPTAscD0wOzspe2lmKDY0PT0oMHxBKSlicmVhayBlO209Yys4''@;'; put 'put ''KygyMCpBfDApfDAsMCE9KDB8YVtjKzgrKDIwKkF8MCkrMTY+PjJdKSYmMCE9KDB8WWIoZixtKSkmJihwPTB8QkUocCxtKSksQT1BKzF8MH19d2hpbGUoMCk7cmV0dXJuIDB8cH1mdW5jdGlvbiB6YihsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgTSxELFIsRyxxLEE9''@;'; put 'put ''MCx3PTAsYj0wLGs9MCxwZT0wO2lmKHE9bGUsbGU9bGUrNjR8MCxEPXErMzJ8MCxSPXErMTZ8MCxHPXEsYVsoTT1xKzUyfDApPj4yXT0wLDAhPSgwfGMpJjAhPSgwfHApfHxQcigxMzg3MzUsMTM4NTI5LDI0NywxMzg1NjMpLCgwfG0pPi0xJiYoMHxhWzQrKGs9MHxhW3A+PjJdKT4+Ml0pPj0o''@;'; put 'put ''MHxtKSl7Zm9yKEE9MDshKCgwfEEpPj0yKTspe2lmKCgwfGFbYysoQTw8Mik+PjJdKT4oMHxhW2MrKEErMjw8Mik+PjJdKSl7dz04O2JyZWFrfUE9QSsxfDB9cmV0dXJuIDg9PSgwfHcpJiZQcigxMzg2MTAsMTM4NTI5LDI1MCwxMzg1NjMpLHc9MHxhWyhBPWwrMTkwOHwwKT4+Ml0sMHxhWyhi''@;'; put 'put ''PWwrMTkxMnwwKT4+Ml0mJihhWyhwZT0wfHc/bCsxOTI0fDA6bCsxOTE2fDApPj4yXT0xKygwfGFbcGU+PjJdKSksd3x8KGFbKHBlPWwrMTk2NHwwKT4+Ml09MSsoMHxhW3BlPj4yXSkpLDB8R2IobCxjLGYsayxNLG0pPygwfGFbYj4+Ml0mJihhWyhwZT0wfGFbQT4+Ml0/bCsxOTQ4fDA6bCsx''@;'; put 'put ''OTQ0fDApPj4yXT0xKygwfGFbcGU+PjJdKSksQT0wfEc5KGwpLGFbKHBlPWwrMTk3NnwwKT4+Ml09MSsoMHxhW3BlPj4yXSksYVtBKzQ+PjJdPTErKDB8YVs0KyhwZT0wfGFbcD4+Ml0pPj4yXSksVzkoUixwZSksYVtEPj4yXT1hW1I+PjJdLGFbRCs0Pj4yXT1hW1IrND4+Ml0sYVtEKzg+PjJd''@;'; put 'put ''PWFbUis4Pj4yXSxhW0QrMTI+PjJdPWFbUisxMj4+Ml0sYVsocGU9RCsxNnwwKT4+Ml09YVtwPj4yXSxiNihsLEQsQSwwKSxXOShHLDB8YVtNPj4yXSksYVtEPj4yXT1hW0c+PjJdLGFbRCs0Pj4yXT1hW0crND4+Ml0sYVtEKzg+PjJdPWFbRys4Pj4yXSxhW0QrMTI+PjJdPWFbRysxMj4+Ml0s''@;'; put 'put ''YVtwZT4+Ml09YVtNPj4yXSxiNihsLEQsQSwwKSxhW3A+PjJdPUEsYVsoQT1sKzE5ODB8MCk+PjJdPTIrKDB8YVtBPj4yXSksQT0xKTpBPTAsbGU9cSwwfEF9cmV0dXJuIFByKDEzODU3NSwxMzg1MjksMjQ4LDEzODU2MyksMH1mdW5jdGlvbiBHYihsLGMsZixwLG0sQSl7bHw9MCxjfD0wLGZ8''@;'; put 'put ''PTAscHw9MCxtfD0wLEF8PTA7dmFyIE0sRCxSLEcscSxwZSx3PTAsYj0wLGs9MDtpZihwZT1sZSxsZT1sZSs4MHwwLEQ9cGUrNTJ8MCxHPXBlKzMyfDAscT1wZSsxNnwwLE09cGUsYVsoUj1wZSs0OHwwKT4+Ml09MCwwIT0oMHxjKSYwIT0oMHxwKSYwIT0oMHxtKXx8UHIoMTM4NjUzLDEzODUy''@;'; put 'put ''OSwzMTEsMTM4NjY3KSwoMHxBKT4tMSYmKDB8KHc9MHxhWyhiPXArNHwwKT4+Ml0pKT49KDB8QSkpezB8YVtsKzE5MTI+PjJdJiYoYVsodz0wfGFbbCsxOTA4Pj4yXT9sKzE5NDh8MDpsKzE5NDR8MCk+PjJdPTErKDB8YVt3Pj4yXSksdz0wfGFbYj4+Ml0pO2Rve2lmKCgwfHcpPigwfEEpKXtp''@;'; put 'put ''Zih3PXArOCsoMjAqKGI9MHxQRShjLHApKXwwKSsxNnwwLGI9cCs4KygyMCpifDApfDAsMHxHYihsLGMsZiwwfGFbdz4+Ml0sUixBKSl7VzkocSwwfGFbdz4+Ml0pLGFbYj4+Ml09YVtxPj4yXSxhW2IrND4+Ml09YVtxKzQ+PjJdLGFbYis4Pj4yXT1hW3ErOD4+Ml0sYVtiKzEyPj4yXT1hW3Er''@;'; put 'put ''MTI+PjJdLGFbRCsxNj4+Ml09az0wfGFbUj4+Ml0sVzkoTSxrKSxhW0Q+PjJdPWFbTT4+Ml0sYVtEKzQ+PjJdPWFbTSs0Pj4yXSxhW0QrOD4+Ml09YVtNKzg+PjJdLGFbRCsxMj4+Ml09YVtNKzEyPj4yXSxhWyhrPWwrMTk4MHwwKT4+Ml09MSsoMHxhW2s+PjJdKSxrPTB8YjYobCxELHAsbSk7''@;'; put 'put ''YnJlYWt9SWgoRyxjLGIpLGFbYj4+Ml09YVtHPj4yXSxhW2IrND4+Ml09YVtHKzQ+PjJdLGFbYis4Pj4yXT1hW0crOD4+Ml0sYVtiKzEyPj4yXT1hW0crMTI+PjJdLGs9MDticmVha31pZigoMHx3KT09KDB8QSkpe2FbRD4+Ml09YVtjPj4yXSxhW0QrND4+Ml09YVtjKzQ+PjJdLGFbRCs4Pj4y''@;'; put 'put ''XT1hW2MrOD4+Ml0sYVtEKzEyPj4yXT1hW2MrMTI+PjJdLGFbRCsxNj4+Ml09ZixhWyhrPWwrMTk4MHwwKT4+Ml09MSsoMHxhW2s+PjJdKSxrPTB8YjYobCxELHAsbSk7YnJlYWt9UHIoMTM4NzEyLDEzODUyOSwzNDEsMTM4NjY3KX13aGlsZSgwKTtyZXR1cm4gbGU9cGUsMHxrfXJldHVybiBQ''@;'; put 'put ''cigxMzg2ODAsMTM4NTI5LDMxMiwxMzg2NjcpLDB9ZnVuY3Rpb24gRzkobCl7cmV0dXJuIGFbKGw9MTk2OCsobHw9MCl8MCk+PjJdPTErKDB8YVtsPj4yXSksZ0IobD0wfEYwKDEyODgpKSwwfGx9ZnVuY3Rpb24gZ0IobCl7dmFyIGM9MDtmb3IoYVsobHw9MCk+PjJdPTAsYVtsKzQ+PjJdPS0x''@;'; put 'put ''LGM9MDs2NCE9KDB8Yyk7KUNtKGwrOCsoMjAqY3wwKXwwKSxjPWMrMXwwfWZ1bmN0aW9uIENtKGwpe1k5KGx8PTApLGFbbCsxNj4+Ml09MH1mdW5jdGlvbiBXOShsLGMpe2x8PTA7dmFyIEEsdyxiLGY9MCxwPTAsbT0wO2ZvcihiPWxlLGxlPWxlKzMyfDAsQT1iKzE2fDAsdz1iLChjfD0wKXx8''@;'; put 'put ''UHIoMTM4ODc5LDEzODcxOCw5OSwxMzg3MjUpLFk5KEEpLGY9MSxtPTA7NjQhPSgwfG0pOyl7ZG97aWYoMHxhW2MrOCsoMjAqbXwwKSsxNj4+Ml0pe2lmKHA9Yys4KygyMCptfDApfDAsZil7YVtBPj4yXT1hW3A+PjJdLGFbQSs0Pj4yXT1hW3ArND4+Ml0sYVtBKzg+PjJdPWFbcCs4Pj4yXSxh''@;'; put 'put ''W0ErMTI+PjJdPWFbcCsxMj4+Ml0sZj0wO2JyZWFrfUloKHcsQSxwKSxhW0E+PjJdPWFbdz4+Ml0sYVtBKzQ+PjJdPWFbdys0Pj4yXSxhW0ErOD4+Ml09YVt3Kzg+PjJdLGFbQSsxMj4+Ml09YVt3KzEyPj4yXSxmPTA7YnJlYWt9fXdoaWxlKDApO209bSsxfDB9YVtsPj4yXT1hW0E+PjJdLGFb''@;'; put 'put ''bCs0Pj4yXT1hW0ErND4+Ml0sYVtsKzg+PjJdPWFbQSs4Pj4yXSxhW2wrMTI+PjJdPWFbQSsxMj4+Ml0sbGU9Yn1mdW5jdGlvbiBQRShsLGMpe3ZhciBiLGssTSxmPTAscD0wLG09MCxBPTAsdz0wLEQ9MCxSPTAsRz0wLHE9MDtmb3IoTT1sZSxsZT1sZSszMnwwLGI9TSsxNnwwLGs9TSwwIT0o''@;'; put 'put ''MHwobHw9MCkpJjAhPSgwfChjfD0wKSl8fFByKDEzODczNSwxMzg3MTgsMTI1LDEzODc0MiksZj0wLHA9MCxtPTAsQT0xLHc9MDs2NCE9KDB8dyk7KTB8YVtjKzgrKDIwKnd8MCkrMTY+PjJdJiYocT0wfGJmKFI9Yys4KygyMCp3fDApfDApLEloKGssbCxSKSxhW2I+PjJdPWFbaz4+Ml0sYVti''@;'; put 'put ''KzQ+PjJdPWFbays0Pj4yXSxhW2IrOD4+Ml09YVtrKzg+PjJdLGFbYisxMj4+Ml09YVtrKzEyPj4yXSxmPShHPShEPTAhPSgwfEEpfCgwfChSPSgwfGJmKGIpKS1xfDApKTwoMHxtKSl8KDB8cSk8KDB8cCkmKDB8Uik9PSgwfG0pKT93OmYscD1HP3E6cCxtPUc/UjptLEE9RD8wOkEpLHc9dysx''@;'; put 'put ''fDA7cmV0dXJuIGxlPU0sMHxmfWZ1bmN0aW9uIGI2KGwsYyxmLHApe2x8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MDsoY3w9MCl8fFByKDEzODkwMSwxMzg3MTgsMTY3LDEzODc1MyksZnx8UHIoMTM4ODc5LDEzODcxOCwxNjgsMTM4NzUzKTtkb3tpZigoMHxhW2Y+PjJdKTw2NCl7Zm9y''@;'; put 'put ''KGw9MDs7KXtpZigoMHxsKT49NjQpe3A9MTA7YnJlYWt9aWYoISgwfGFbZis4KygyMCpsfDApKzE2Pj4yXSkpe3A9ODticmVha31sPWwrMXwwfWlmKDg9PSgwfHApKXthWyhtPWYrOCsoMjAqbHwwKXwwKT4+Ml09YVtjPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+''@;'; put 'put ''Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLGFbbSsxNj4+Ml09YVtjKzE2Pj4yXSxtPTAsQT1mO2JyZWFrfTEwPT0oMHxwKSYmUHIoMTM4NzYzLDEzODcxOCwxNzgsMTM4NzUzKX1lbHNle2lmKDB8YVtsKzE5MTI+PjJdJiYoYVsodz0wfGFbbCsxOTA4Pj4yXT9sKzE5NDh8MDpsKzE5NDR8MCk+''@;'; put 'put ''PjJdPTErKDB8YVt3Pj4yXSkpLHApe1ViKGwsZixjLHApLG09MSxBPTA9PSgwfGFbZis0Pj4yXSk/bCsxOTcyfDA6bCsxOTc2fDA7YnJlYWt9UHIoMTM4Nzc2LDEzODcxOCwxODcsMTM4NzUzKX19d2hpbGUoMCk7cmV0dXJuIGFbQT4+Ml09MSsoMHxhW0E+PjJdKSwwfG19ZnVuY3Rpb24gV2Io''@;'; put 'put ''bCxjKXtpZigwIT0oMHwobHw9MCkpJihjfD0wKT4+PjA8NjR8fFByKDEzODc4MCwxMzg3MTgsMjAxLDEzODgwOCksMHxhW2wrOCsoMjAqY3wwKSsxNj4+Ml0pcmV0dXJuIENtKGwrOCsoMjAqY3wwKXwwKSx2b2lkKGFbbD4+Ml09KDB8YVtsPj4yXSktMSk7UHIoMTM5MzAyLDEzODcxOCwyMDIs''@;'; put 'put ''MTM4ODA4KX1mdW5jdGlvbiBZOShsKXtsfD0wO3ZhciBjPTA7Zm9yKGM9MDs0IT0oMHxjKTspYVtsKyhjPDwyKT4+Ml09MCxjPWMrMXwwfWZ1bmN0aW9uIGJmKGwpe3ZhciBjPTAsZj0wOyhsfD0wKXx8UHIoMTM4ODIxLDEzODgyMywxMjgsMTM4ODM1KTtlOmRve2lmKCgwfGFbbD4+Ml0pPigw''@;'; put 'put ''fGFbbCs4Pj4yXSkpYz0wO2Vsc2UgZm9yKGM9MSxmPTA7Oyl7aWYoMj09KDB8ZikpYnJlYWsgZTtjPSgwfEFyKDB8YVtsKyhmKzI8PDIpPj4yXSxjKSktKDB8YVtsKyhmPDwyKT4+Ml0pfDAsZj1mKzF8MH19d2hpbGUoMCk7cmV0dXJuIDB8Y31mdW5jdGlvbiBJaChsLGMsZil7bHw9MDt2YXIg''@;'; put 'put ''bSxBLHA9MCx3PTAsYj0wLGs9MDtBPWxlLGxlPWxlKzE2fDAsbT1BLDAhPSgwfChjfD0wKSkmMCE9KDB8KGZ8PTApKXx8UHIoMTM4ODQ0LDEzODgyMywxOTUsMTM4ODUyKTtkb3tpZigoMHxhW2M+PjJdKT4oMHxhW2MrOD4+Ml0pKWFbbD4+Ml09YVtmPj4yXSxhW2wrND4+Ml09YVtmKzQ+PjJd''@;'; put 'put ''LGFbbCs4Pj4yXT1hW2YrOD4+Ml0sYVtsKzEyPj4yXT1hW2YrMTI+PjJdO2Vsc2V7aWYoKDB8YVtmPj4yXSk+KDB8YVtmKzg+PjJdKSl7YVtsPj4yXT1hW2M+PjJdLGFbbCs0Pj4yXT1hW2MrND4+Ml0sYVtsKzg+PjJdPWFbYys4Pj4yXSxhW2wrMTI+PjJdPWFbYysxMj4+Ml07YnJlYWt9Zm9y''@;'; put 'put ''KHA9MDsyIT0oMHxwKTspYVttKyhwPDwyKT4+Ml09KDB8KGs9MHxhW2MrKHA8PDIpPj4yXSkpPCgwfCh3PTB8YVtmKyhwPDwyKT4+Ml0pKT9rOncsYVttKygodz1wKzJ8MCk8PDIpPj4yXT0oMHwoaz0wfGFbYysodzw8Mik+PjJdKSk+KDB8KGI9MHxhW2YrKHc8PDIpPj4yXSkpP2s6YixwPXAr''@;'; put 'put ''MXwwO2FbbD4+Ml09YVttPj4yXSxhW2wrND4+Ml09YVttKzQ+PjJdLGFbbCs4Pj4yXT1hW20rOD4+Ml0sYVtsKzEyPj4yXT1hW20rMTI+PjJdfX13aGlsZSgwKTtsZT1BfWZ1bmN0aW9uIFliKGwsYyl7dmFyIGY9MCxwPTA7Zm9yKDAhPSgwfChsfD0wKSkmMCE9KDB8KGN8PTApKT9mPTA6UHIo''@;'; put 'put ''MTM4ODY0LDEzODgyMywyMTYsMTM4ODcxKTs7KXtpZigoMHxmKT49Mil7Zj0xO2JyZWFrfWlmKCgwfGFbbCsoZjw8Mik+PjJdKT4oMHxhW2MrKChwPWYrMnwwKTw8Mik+PjJdKSl7Zj0wO2JyZWFrfWlmKCgwfGFbYysoZjw8Mik+PjJdKT4oMHxhW2wrKHA8PDIpPj4yXSkpe2Y9MDticmVha31m''@;'; put 'put ''PWYrMXwwfXJldHVybiAwfGZ9ZnVuY3Rpb24gVWIobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIEEsbT0wLHc9MCxiPTA7KGN8PTApfHxQcigxMzg4NzksMTM4ODgxLDQwLDEzODg5MSksZnx8UHIoMTM4OTAxLDEzODg4MSw0MSwxMzg4OTEpLDB8YVsoYj1sKzE5MTJ8MCk+PjJdJiYoYVso''@;'; put 'put ''dz0wfGFbbCsxOTA4Pj4yXT9sKzE5MzJ8MDpsKzE5Mjh8MCk+PjJdPTErKDB8YVt3Pj4yXSkpLHc9MHxhWyhBPWMrNHwwKT4+Ml0sZnVuY3Rpb24gSEUobCxjLGYpe2x8PTAsZnw9MDt2YXIgQSx3LHA9MCxtPTAsYj0wLGs9MDtmb3Iodz1sZSxsZT1sZSsxNnwwLEE9dywoY3w9MCl8fFByKDEz''@;'; put 'put ''ODg3OSwxMzg4ODEsMTA2LDEzOTI5MCksZj9wPTA6UHIoMTM4OTAxLDEzODg4MSwxMDcsMTM5MjkwKTshKCgwfHApPj02NCk7KXtpZighKDB8YVtjKzgrKDIwKnB8MCkrMTY+PjJdKSl7bT03O2JyZWFrfWFbKGI9bCs0KygyMCpwfDApfDApPj4yXT1hWyhrPWMrOCsoMjAqcHwwKXwwKT4+Ml0s''@;'; put 'put ''YVtiKzQ+PjJdPWFbays0Pj4yXSxhW2IrOD4+Ml09YVtrKzg+PjJdLGFbYisxMj4+Ml09YVtrKzEyPj4yXSxhW2IrMTY+PjJdPWFbaysxNj4+Ml0scD1wKzF8MH1mb3IoNz09KDB8bSkmJlByKDEzOTMwMiwxMzg4ODEsMTExLDEzOTI5MCkscD1sKzR8MCxhWyhrPWwrMTI4NHwwKT4+Ml09YVtm''@;'; put 'put ''Pj4yXSxhW2srND4+Ml09YVtmKzQ+PjJdLGFbays4Pj4yXT1hW2YrOD4+Ml0sYVtrKzEyPj4yXT1hW2YrMTI+PjJdLGFbaysxNj4+Ml09YVtmKzE2Pj4yXSxhWyhmPWwrMTMwNHwwKT4+Ml09YVtwPj4yXSxhW2YrND4+Ml09YVtwKzQ+PjJdLGFbZis4Pj4yXT1hW3ArOD4+Ml0sYVtmKzEyPj4y''@;'; put 'put ''XT1hW3ArMTI+PjJdLHA9MTs2NSE9KDB8cCk7KUloKEEsZixsKzQrKDIwKnB8MCl8MCksYVtmPj4yXT1hW0E+PjJdLGFbZis0Pj4yXT1hW0ErND4+Ml0sYVtmKzg+PjJdPWFbQSs4Pj4yXSxhW2YrMTI+PjJdPWFbQSsxMj4+Ml0scD1wKzF8MDthW2wrMTMyMD4+Ml09MHxiZihmKSxnQihjKSxs''@;'; put 'put ''ZT13fShsLGMsZiksZj1sKzEzMjR8MCxmdW5jdGlvbiBRYihsKXt2YXIgYixrLE0sRCxSLEcscSxwZSxiZSxPZSxMZSxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxnZT0wLFJlPTA7Zm9yKExlPWxlLGxlPWxlKzQ4fDAsYj1MZSszMnwwLE09TGUrMTZ8MCxEPUxlLGZ1bmN0aW9uIG1CKGwpe3Zh''@;'; put 'put ''ciBmLHAsbSxjPTA7Zm9yKGY9bGUsbGU9bGUrMTZ8MCxwPWYsYVsxODQ4KyhsfD0wKT4+Ml09MCxhW2wrMTg0ND4+Ml09MCxjPWwrMTg1MnwwLG09bCsxODY4fDAsZnVuY3Rpb24gRkUobCl7bHw9MDt2YXIgZixwLGM9MDtmb3IocD1sZSxsZT1sZSsxNnwwLGFbKGY9cCk+PjJdPTEsYVtmKzg+''@;'; put 'put ''PjJdPS0xLGM9MTsyIT0oMHxjKTspYVtmKyhjKzI8PDIpPj4yXT0wLGFbZisoYzw8Mik+PjJdPTAsYz1jKzF8MDthW2w+PjJdPWFbZj4+Ml0sYVtsKzQ+PjJdPWFbZis0Pj4yXSxhW2wrOD4+Ml09YVtmKzg+PjJdLGFbbCsxMj4+Ml09YVtmKzEyPj4yXSxsZT1wfShwKSxhW20+PjJdPWFbcD4+''@;'; put 'put ''Ml0sYVttKzQ+PjJdPWFbcCs0Pj4yXSxhW20rOD4+Ml09YVtwKzg+PjJdLGFbbSsxMj4+Ml09YVtwKzEyPj4yXSxhW2M+PjJdPWFbcD4+Ml0sYVtjKzQ+PjJdPWFbcCs0Pj4yXSxhW2MrOD4+Ml09YVtwKzg+PjJdLGFbYysxMj4+Ml09YVtwKzEyPj4yXSxhW2wrMTg4OD4+Ml09MCxhW2wrMTg4''@;'; put 'put ''ND4+Ml09MCxjPTA7NjUhPSgwfGMpOylhW2wrMTU4NCsoYzw8Mik+PjJdPTAsYVtsKzEzMjQrKGM8PDIpPj4yXT0tMSxjPWMrMXwwO2xlPWZ9KGx8PTApLGZ1bmN0aW9uIE5FKGwpe2x8PTA7dmFyIE0sRCxSLEcsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxxPTAscGU9MCxnZT0w''@;'; put 'put ''O2ZvcihHPWxlLGxlPWxlKzMwNHwwLE09RyszMnwwLEQ9RysxNnwwLFI9RyxjPTA7NjUhPSgwfGMpOylhW00rKGM8PDIpPj4yXT0wfGJmKGwrNCsoMjAqY3wwKXwwKSxjPWMrMXwwO2M9MCxmPTAscD0wLEE9MDtlOmZvcig7NjQhPSgwfEEpOylmb3IoYj1BKzF8MCxrPWwrNCsoMjAqQXwwKXww''@;'; put 'put ''LHc9TSsoQTw8Mil8MCxtPWI7Oyl7aWYoNjU9PSgwfG0pKXtBPWI7Y29udGludWUgZX1JaChSLGssbCs0KygyMCptfDApfDApLGFbRD4+Ml09YVtSPj4yXSxhW0QrND4+Ml09YVtSKzQ+PjJdLGFbRCs4Pj4yXT1hW1IrOD4+Ml0sYVtEKzEyPj4yXT1hW1IrMTI+PjJdLGdlPShwZT0ocT0ocT0w''@;'; put 'put ''fGJmKEQpKS0oMHxhW3c+PjJdKS0oMHxhW00rKG08PDIpPj4yXSl8MCk+Pj4wPnA+Pj4wKT9tOmMsbT1tKzF8MCxjPWdlLGY9cGU/QTpmLHA9cGU/cTpwfVU5KGwsZiwwKSxVOShsLGMsMSksbGU9R30obCkscGU9bCsxODQ0fDAsYmU9bCsxODQ4fDAsT2U9bCsxODkyfDAsUj1sKzE4NTJ8MCxH''@;'; put 'put ''PWwrMTg4NHwwLHE9bCsxODY4fDAsaz1sKzE4ODh8MCxtPTAscD0wOyEoKChjPTB8YVtiZT4+Ml0pKyhmPTB8YVtwZT4+Ml0pfDApPj02NSk7KXtpZighKCgwfGYpPCgwfCh3PTY1LSgwfGFbT2U+PjJdKXwwKSkmKDB8Yyk8KDB8dykpKXtnZT0xMjticmVha31mb3IoQT0tMSx3PTA7NjUhPSgw''@;'; put 'put ''fHcpOykwfGFbbCsxNTg0Kyh3PDwyKT4+Ml0/KGM9QSxmPW0pOihJaChNLFJlPWwrNCsoMjAqd3wwKXwwLFIpLGFbYj4+Ml09YVtNPj4yXSxhW2IrND4+Ml09YVtNKzQ+PjJdLGFbYis4Pj4yXT1hW00rOD4+Ml0sYVtiKzEyPj4yXT1hW00rMTI+PjJdLGM9MHxiZihiKSxmPTB8YVtHPj4yXSxJ''@;'; put 'put ''aChELFJlLHEpLGFbYj4+Ml09YVtEPj4yXSxhW2IrND4+Ml09YVtEKzQ+PjJdLGFbYis4Pj4yXT1hW0QrOD4+Ml0sYVtiKzEyPj4yXT1hW0QrMTI+PjJdLGM9KGY9KDB8KGM9KFJlPTB8YmYoYikpLSgwfGFbaz4+Ml0pKyhmLWMpfDApKT4tMSk/YzowLWN8MCxmPTEmKDFeZiksKDB8Yyk8PSgw''@;'; put 'put ''fEEpPygwfGMpPT0oMHxBKT8oYz1BLGY9KFJlPSgwfGFbbCsxODQ0KyhmPDwyKT4+Ml0pPCgwfGFbbCsxODQ0KyhtPDwyKT4+Ml0pKT9mOm0scD1SZT93OnApOihjPUEsZj1tKTpwPXcpLEE9Yyx3PXcrMXwwLG09ZjtVOShsLHAsbSl9aWYoMTI9PSgwfGdlKSl7Zm9yKGM9KDB8Zik+PSg2NS0o''@;'; put 'put ''MHxhW09lPj4yXSl8MCkmMSxmPTA7NjUhPSgwfGYpOykwfGFbbCsxNTg0KyhmPDwyKT4+Ml18fFU5KGwsZixjKSxmPWYrMXwwO2Y9MHxhW3BlPj4yXSxjPTB8YVtiZT4+Ml19NjUhPShjK2Z8MCkmJlByKDEzOTA0NiwxMzg4ODEsMjEwLDEzOTEzMiksKDB8Zik8KDB8KFJlPTB8YVtPZT4+Ml0p''@;'; put 'put ''KXwoMHxjKTwoMHxSZSk/UHIoMTM5MTQzLDEzODg4MSwyMTIsMTM5MTMyKTpsZT1MZX0obCksbT0wfGJmKGwrMTg1MnwwKSxtPSgwfGJmKGwrMTg2OHwwKSkrbXwwLDB8YVtiPj4yXSYmMCE9KDB8bSkmMD09KDB8YVtsKzE5MDg+PjJdKSYmKGpuWyhiPWwrMTk2MHwwKT4+Ml09KygoMHxhW2wr''@;'; put 'put ''MTMyMD4+Ml0pPj4+MCkvKygwfG0pKyAram5bYj4+Ml0pLGI9MHxHOShsKSxhW3A+PjJdPWIsYVtBPj4yXT13LGFbYis0Pj4yXT13LGZ1bmN0aW9uIGttKGwsYyxmLHApe2x8PTAsZnw9MCxwfD0wO3ZhciBtPTA7Zm9yKChjfD0wKXx8UHIoMTM4ODc5LDEzODg4MSwyOTcsMTM4OTQzKSxmfHxQ''@;'; put 'put ''cigxMzg5NTMsMTM4ODgxLDI5OCwxMzg5NDMpLHA/bT0wOlByKDEzODk1NSwxMzg4ODEsMjk5LDEzODk0Myk7Oyl7aWYoKDB8bSk+PTY1KXtwPTE0O2JyZWFrfWlmKChwPTB8YVtsKzEzMjQrKG08PDIpPj4yXSk+Pj4wPj0yKXtwPTk7YnJlYWt9c3dpdGNoKDB8cCl7Y2FzZSAwOmI2KGwsbCs0''@;'; put 'put ''KygyMCptfDApfDAsYywwKTticmVhaztjYXNlIDE6YjYobCxsKzQrKDIwKm18MCl8MCxmLDApfW09bSsxfDB9aWYoOT09KDB8cCkpUHIoMTM4OTU3LDEzODg4MSwzMDMsMTM4OTQzKTtlbHNlIGlmKDE0PT0oMHxwKSk7fShsLGMsYixmKSw2NSE9KCgwfGFbYVtwPj4yXT4+Ml0pKygwfGFbYz4+''@;'; put 'put ''Ml0pfDApJiZQcigxMzg5MDMsMTM4ODgxLDg2LDEzODg5MSl9ZnVuY3Rpb24gVTkobCxjLGYpe2Z8PTA7dmFyIG0sQSx3LGIscD0wO2I9bGUsbGU9bGUrMTZ8MCx3PWIsMHxhWyhwPTE1ODQrKGx8PTApKygoY3w9MCk8PDIpfDApPj4yXSYmUHIoMTM5MjQ2LDEzODg4MSwyNTcsMTM5MjgxKSxh''@;'; put 'put ''W2wrMTMyNCsoYzw8Mik+PjJdPWYsYVtwPj4yXT0xLG09bCsxODUyKyhmPDw0KXwwLHA9bCs0KygyMCpjfDApfDAsMHxhWyhBPWwrMTg0NCsoZjw8Mil8MCk+PjJdPyhJaCh3LHAsbSksYVttPj4yXT1hW3c+PjJdLGFbbSs0Pj4yXT1hW3crND4+Ml0sYVttKzg+PjJdPWFbdys4Pj4yXSxhW20r''@;'; put 'put ''MTI+PjJdPWFbdysxMj4+Ml0pOihhW20+PjJdPWFbcD4+Ml0sYVttKzQ+PjJdPWFbcCs0Pj4yXSxhW20rOD4+Ml09YVtwKzg+PjJdLGFbbSsxMj4+Ml09YVtwKzEyPj4yXSksYVtsKzE4ODQrKGY8PDIpPj4yXT0wfGJmKG0pLGFbQT4+Ml09MSsoMHxhW0E+PjJdKSxsZT1ifWZ1bmN0aW9uIEpi''@;'; put 'put ''KGwsYyl7dmFyIGY7cmV0dXJuIGx8PTAsY3w9MCxmPTB8dnIoOCksZmVbZis0Pj4wXT1jLGFbZj4+Ml09bCwwfGZ9ZnVuY3Rpb24gRDMoKXt2YXIgbD0wLGM9MDtmb3IobD0wfGFbNDc0MDJdLDB8KGM9MHxhWzQ3NDAwXSkmJihBbShjLDEpLGFbNDc0MDBdPTApLGFbMTQwMjFdPTY3O2w7KWM9''@;'; put 'put ''MHxhW2wrODA+PjJdLFpFKGwpLGw9YzthWzE0MDIxXT01NixhWzE0MDMwXT02OCxtaVs2MyZhWyhjPTB8YVs0NzQwNV0pPj4yXV0oYywwLDY0KSxhWzE0MDMwXT01NixhWzE0MDM5XT02OSxtaVs2MyZhWyhjPTB8YVs0NzQwNl0pPj4yXV0oYywwLDY0KSxhWzE0MDM5XT01NixmdW5jdGlvbiB3''@;'; put 'put ''Qigpe3ZhciBsPTAsYz0wO2ZvcihsPTB8YVs0NzQwM107Yz0wfGFbbCs0Pj4yXTspRnQobCksbD1jfSgpfWZ1bmN0aW9uIFNtKCl7dmFyIGYscCxsPTAsYz0wLG09MCxBPTA7Zj0wfGFbNDc0MDZdLHA9MHx2cig0MCksMHxwdSgwfGFbNDc0MDVdKSYmUTkoMCksbD0wfHB1KGYpLGl0W3ArND4+''@;'; put 'put ''MV09bDtlOmRve2lmKGwpZm9yKGFbcD4+Ml09MHx2cigyNCpsfDApLGw9MCxjPTB8bWlbNjMmYVtmPj4yXV0oZiwwLDEyOCk7Oyl7aWYoIWMpe2w9ZjticmVhayBlfWFbKG09KDB8YVtwPj4yXSkrKDI0Kmx8MCl8MCk+PjJdPWFbKEE9Yys4fDApPj4yXSxhW20rND4+Ml09YVtBKzQ+PjJdLGFb''@;'; put 'put ''bSs4Pj4yXT1hW0ErOD4+Ml0sYVttKzEyPj4yXT1hW0ErMTI+PjJdLGFbbSsxNj4+Ml09YVtBKzE2Pj4yXSxhW20rMjA+PjJdPWFbQSsyMD4+Ml0sbD1sKzF8MCxjPTB8bWlbNjMmYVtmPj4yXV0oZixjLDgpfWVsc2UgbD1mfXdoaWxlKDApO3JldHVybiBtaVs2MyZhW2w+PjJdXShmLDAsNjQp''@;'; put 'put ''LDB8cH1mdW5jdGlvbiBWRShsKXtsfD0wO3ZhciBmLGM9MCxwPTA7Zj0wfHZyKDY0KSwoYz0wfGFbKHA9bCs0fDApPj4yXSk+Pj4wPj0oMHxhW2wrOD4+Ml0pPj4+MCYmKFEwKGwsMSksYz0wfGFbcD4+Ml0pLGZlW2M+PjBdPTAsYVtwPj4yXT1sPTB8YVtsPj4yXSxhW2YrOD4+Ml09MHxyYShs''@;'; put 'put ''KSxhW2YrMTI+PjJdPWFbYVs0NzQwM10+PjJdLG1pWzYzJmFbKHA9MHxhWzQ3NDA1XSk+PjJdXShwLGYsMSl9ZnVuY3Rpb24gUTkobCl7bHw9MDt2YXIgQSx3LGM9MCxmPTAscD0wLG09MCxiPTA7QT0wfHZyKDMyKSxjPTB8cHUodz0wfGFbNDc0MDVdKSxiPUErOHwwLGZlW0ErMTQ+PjBdPWw7''@;'; put 'put ''ZTpkb3tpZihjKWZvcihpdFtBKzEyPj4xXT1jLGFbYj4+Ml09MHx2cig1NipjfDApLGw9MCxjPTB8czAodyk7Oyl7aWYoIWMpYnJlYWsgZTtwPWMrOHwwLG09NTYrKGY9KDB8YVtiPj4yXSkrKDU2Kmx8MCl8MCl8MDtkb3thW2Y+PjJdPWFbcD4+Ml0sZj1mKzR8MCxwPXArNHwwfXdoaWxlKCgw''@;'; put 'put ''fGYpPCgwfG0pKTtsPWwrMXwwLGM9MHxhW2M+PjJdfWVsc2UgYVtiPj4yXT0wfHZyKDU2KSxpdFtBKzEyPj4xXT0xLG09MHxyYSgxOTUwNTkpLGI9MHxhW2I+PjJdLGFbYj4+Ml09bSxhW2IrND4+Ml09YVthWzQ3NDAzXT4+Ml19d2hpbGUoMCk7bWlbNjMmYVt3Pj4yXV0odywwLDY0KSxtaVs2''@;'; put 'put ''MyZhWyhiPTB8YVs0NzQwNl0pPj4yXV0oYixBLDEpfWZ1bmN0aW9uIFY0KGwpe2x8PTA7dmFyIEEsdyxiLGM9MCxmPTAscD0wLG09MDtiPWxlLGxlPWxlKzMyfDAsQT1iLHc9MHx2cig4KSxtPTB8YVthWzQ3NDAzXT4+Ml0sYVtBPj4yXT1hW2w+PjJdLGFbQSs0Pj4yXT1hW2wrND4+Ml0sYVtB''@;'; put 'put ''Kzg+PjJdPWFbbCs4Pj4yXSxhW0ErMTI+PjJdPWFbbCsxMj4+Ml0sYVtBKzE2Pj4yXT1hW2wrMTY+PjJdLGFbQSsyMD4+Ml09YVtsKzIwPj4yXSxhW0ErMjQ+PjJdPWFbbCsyND4+Ml0sYVtBKzI4Pj4yXT1hW2wrMjg+PjJdLDB8bSYmKDA9PSgwfGFbKGw9QSs0fDApPj4yXSkmJjB8KGM9MHxh''@;'; put 'put ''W20rND4+Ml0pJiYoYVtsPj4yXT1jKSwrX1sobD1BKzE2fDApPj4zXTwwJiYoZj0rX1ttKzE2Pj4zXSk+PTAmJihfW2w+PjNdPWYpLDA9PSgwfGFbQT4+Ml0pJiYwfChwPTB8YVttPj4yXSkmJihhW0E+PjJdPXApLDB8KGw9MTI3JmFbbSsyND4+Ml0pJiYoYVsobT1BKzI0fDApPj4yXT0xMjcm''@;'; put 'put ''KHA9MHxhW20+PjJdKXxsfC0xMjgmcCkpLGFbdz4+Ml09MHxtaVs2MyZhWyhtPTB8YVsxNDQrKDB8YVs0NzQwNF0pPj4yXSk+PjJdXShtLEEsMSksYVt3KzQ+PjJdPWFbNDc0MDNdLGFbNDc0MDNdPXcsbGU9Yn1mdW5jdGlvbiB4ZCgpe3ZhciBsLGM7bD0wfGFbNCsoYz0wfGFbNDc0MDNdKT4+''@;'; put 'put ''Ml0sRnQoYyksYVs0NzQwM109bH1mdW5jdGlvbiBYYihsKXtsfD0wO2Zvcih2YXIgYz0wOzspe2lmKCEoKGM9MHxmZVtsPj4wXSk8PDI0Pj4yNCkpe2w9MDticmVha31pZihjPDwyND4+MjQhPTMyKXtsPTE7YnJlYWt9bD1sKzF8MH1yZXR1cm4gMHxsfWZ1bmN0aW9uIGIxKCl7dmFyIGwsYyxm''@;'; put 'put ''PTA7Zj0wfGlzKDU2MDY4LDB8YVs0NTgwXSksbD0wfGFbNDc0MDJdLGM9MHx2cigxNiksYVtjKzg+PjJdPWYsMiZmZVtsKzExMj4+MF0mJihmZVtjKzEyPj4wXT0xKSxtaVs2MyZhWyhmPTB8YVtsKzg0Pj4yXSk+PjJdXShmLGMsMSl9ZnVuY3Rpb24gaHUoKXt2YXIgbDtyZXR1cm4gMHxtaVs2''@;'; put 'put ''MyZhWyhsPTB8YVs4NCsoMHxhWzQ3NDAyXSk+PjJdKT4+Ml1dKGwsMCwyNTYpfWZ1bmN0aW9uIE1tKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcCxtLEE9MDttPTB8dnIoMTYpLEE9MHxhWzgrKDB8bWlbNjMmYVsoQT0wfGFbODQrKHA9MHxhWzQ3NDAyXSk+PjJdKT4+Ml1dKEEsMCwyNTYp''@;'; put 'put ''KT4+Ml0sYVttKzg+PjJdPWwsbWlbNjMmYVtBPj4yXV0oQSxtLDEpLGZlW2wrOTI+PjBdPWYsMSZmZVtwKzExMj4+MF0mJihmZVtsKzEwMD4+MF09MSksYVtsKzg4Pj4yXT1jfWZ1bmN0aW9uIFpFKGwpe05sKDB8YVs4NCsobHw9MCk+PjJdKSxLOChsKSxGdChsKX1mdW5jdGlvbiBOYShsKXts''@;'; put 'put ''fD0wO3ZhciBjLGYscD0wO2Y9bGUsbGU9bGUrMTZ8MCxjPWYsMHxmZVsxODk2NjFdfHwoZmVbMTg5NjYxXT0xLHA9MHx1dCgpLGFbYz4+Ml09bCxhW2MrND4+Ml09cCwkcigxLDE0MDU3NSxjKSwkYigpKSxsZT1mfWZ1bmN0aW9uIHV0KCl7cmV0dXJuIDB8ZnVuY3Rpb24gcUIobCl7dmFyIGM9''@;'; put 'put ''MCxmPTAscD0wLG09MCxBPTA7cmV0dXJuKGx8PTApPygwfChmPTB8YVsoYz1sKzI4NHwwKT4+Ml0pJiZmPj4+MD49KG09MHxhWyhwPWwrMjkyfDApPj4yXSk+Pj4wJiYoUmNbMzEmYVs0OCsoQT0wfGFbbCsxNDQ+PjJdKT4+Ml1dKEEsbSxmLGwrNDA0fDApLGFbcD4+Ml09YVtjPj4yXSksbD0x''@;'; put 'put ''KygwfGFbbCs0MDQ+PjJdKXwwKTpsPTAsMHxsfSgwfGFbNDc0MDddKX1mdW5jdGlvbiAkYigpe3ZhciBmLHAsbD0wLGM9MDtwPWxlLGxlPWxlKzE2fDAsZj1wLGFbNCsobD0wfGFbNDc0MTBdKT4+Ml09YVtsPj4yXSwoMHwoYz0wfGFbNDc0MTldKSk+MCYmKGRUKGwsMHxhWzQ3NDE3XSxjKSxs''@;'; put 'put ''PTB8YVs0NzQxMF0pLGRUKGwsMHxhWzQ3NDE2XSwwfGFbNDc0MThdKSwobD0wfGFbNCsoYz0wfGFbNDc0MTBdKT4+Ml0pPj4+MD49KDB8YVtjKzg+PjJdKT4+PjAmJihRMChjLDEpLGM9bD0wfGFbNDc0MTBdLGw9MHxhW2wrND4+Ml0pLGFbYys0Pj4yXT1sKzEsZmVbbD4+MF09MCxhWzQrKGw9''@;'; put 'put ''MHxhWzQ3NDEwXSk+PjJdPWM9MHxhW2w+PjJdLGFbZj4+Ml09YywkcigzLDE0MDU5MSxmKSxsZT1wfWZ1bmN0aW9uIFlFKGwpe3ZhciBjLGYscDtsfD0wLGM9bGUsbGU9bGUrMTZ8MCxmPWMsYVs0NzQwOV09MjY4LGZlWzE4OTY2MV09MSxwPTB8dXQoKSxhW2Y+PjJdPWwsYVtmKzQ+PjJdPXAs''@;'; put 'put ''JHIoMSwxNDA2NTksZiksbGU9Y31mdW5jdGlvbiBVRShsKXt2YXIgYztyZXR1cm4gbHw9MCxjPTB8dnIoMTIwKSxhW2MrMTAwPj4yXT0tMSxmZVtjKzg4Pj4wXT0tMSxuNShjLDU2NDAwLDIyLGwsMTQxNjExKSwwfGN9ZnVuY3Rpb24gU0IobCl7dmFyIGM7cmV0dXJuIGx8PTAsYz0wfHZyKDEw''@;'; put 'put ''NCksaXRbYys4MD4+MV09MSxpdFtjKzgyPj4xXT0xLG41KGMsNTYyMjQsMjIsbCwxNDA5NjUpLDB8Y31mdW5jdGlvbiBUZChsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIG0scD0wO3JldHVybiBtPWxlLGxlPWxlKzMyfDAsYVsocD1tKT4+Ml09MCxhW3ArND4+Ml09MCxhW3ArOD4+Ml09MCxh''@;'; put 'put ''W3ArMTI+PjJdPTAsYVtwKzE2Pj4yXT0wLGFbcCsyMD4+Ml09MCxhW3ArMjQ+PjJdPTAsYVtwKzI4Pj4yXT0wLF9bcCsxNj4+M109LTEsYVtwKzI0Pj4yXT0xMjcmZiwwfGMmJm41KHAsNTYyMDAsMyxjLDE0MDgxNikscD0wfG1pWzYzJmFbKGY9MHxhW2wrMTQ0Pj4yXSk+PjJdXShmLHAsMSks''@;'; put 'put ''bGU9bSwwfHB9ZnVuY3Rpb24gbEcobCl7bHw9MCxhWzQ3Mzk5XT0wLG41KDE4OTU5Niw1NjE5MiwxLGwsMTQwNzUyKX1mdW5jdGlvbiBRRShsKXt2YXIgYztyZXR1cm4gbHw9MCxuNShjPTB8dnIoNDApLDU2MTc2LDIsbCwxNDA2OTgpLDB8Y31mdW5jdGlvbiBuNShsLGMsZixwLG0pe2x8PTAs''@;'; put 'put ''Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgayxNLEQsQT0wLHc9MCxiPTA7Zm9yKEQ9bGUsbGU9bGUrMTZ8MCxNPUQsaz1EKzh8MDtiPTB8YVtwPj4yXTspQT0wfGFbcCs0Pj4yXSxhW2s+PjJdPWIsKHc9MHxudyhrLGMsZiw4LDEwNCkpP0E9MjU1JigwfChBPTB8QmlbMTI3JmFbdys0Pj4yXV0o''@;'; put 'put ''bCxBKSl8WHRbMTg5NjYwXSk6KGFbTT4+Ml09YixhW00rND4+Ml09bSwkcigwLDE0MDcwNCxNKSxBPTEpLGZlWzE4OTY2MF09QSxwPXArOHwwO2xlPUR9ZnVuY3Rpb24gSWQobCxjLGYscCxtKXt2YXIgQSx3LGIsayxNLEQ7Y3w9MCxmfD0wLHB8PTAsbXw9MCxNPWxlLGxlPWxlKzQ4fDAsaz1N''@;'; put 'put ''KzI0fDAsYj1NKzh8MCx3PU0sQT0wfGtMKGx8PTAsRD1NKzM2fDAsMTApO2Rve2lmKCgwfGFbRD4+Ml0pIT0oMHxsKSl7aWYoKDB8QSk+KDB8cCkpe2FbYj4+Ml09YyxhW2IrND4+Ml09bCxhW2IrOD4+Ml09cCwkcigwLDE0MDg4NyxiKSxsPTE7YnJlYWt9aWYoKDB8QSk8KDB8Zikpe2Fbaz4+''@;'; put 'put ''Ml09YyxhW2srND4+Ml09bCxhW2srOD4+Ml09ZiwkcigwLDE0MDkyNixrKSxsPTE7YnJlYWt9YVttPj4yXT1BLGw9MDticmVha31hW3c+PjJdPWMsYVt3KzQ+PjJdPWwsJHIoMCwxNDA4NTYsdyksbD0xfXdoaWxlKDApO3JldHVybiBsZT1NLDB8bH1mdW5jdGlvbiBxRSgpe3ZhciB3LGIsbD0w''@;'; put 'put ''LGM9MCxmPTAscD0wLG09MCxBPTA7Yj1sZSxsZT1sZSsxNnwwLHc9YixhWzQ3NDA5XT0wLGM9MDtlOmRve3Q6ZG97c3dpdGNoKDB8ZmVbMTg5NjYzXSl7Y2FzZSAyOmw9LTE7YnJlYWsgZTtjYXNlIDA6ZmVbMTg5NjYzXT0xLEE9NixsPTE0MTczMixjPTA7YnJlYWs7ZGVmYXVsdDppZigwfGZl''@;'; put 'put ''WyhsPTB8YVs0NzQwOF0pPj4wXSl7QT0oYz0wfCQ5KGwpKS1sfDA7YnJlYWsgdH1mZVsxODk2NjNdPTIsQT03LGw9MTQxNzM5O2JyZWFrIHR9fXdoaWxlKDApO2FbNDc0MTddPWFbNDc0MTZdLGFbNDc0MTldPWFbNDc0MThdLGFbNDc0MTZdPWwsYVs0NzQxOF09QSxtPTB8YVs0NzQwN10sKHA9''@;'; put 'put ''KGY9MHxhWzQ3NDEyXSktKDB8YVs0NzQxMV0pfDApPyhmPj4+MDwoMHxhWzQ3NDEzXSk+Pj4wP2w9ZjooUTAoMTg5NjQ0LDEpLGw9MHxhWzQ3NDEyXSksZmVbbD4+MF09MCxhWzQ3NDEyXT1sPTB8YVs0NzQxMV0sbD0wfG14KG0sbCxwLDApKTpsPTB8bXgobSxsLEEsMD09KDB8QSkmMSksMCE9''@;'; put 'put ''KDB8bCl8MCE9KDB8ZmVbMTg5NjYxXSl8fChtPTB8ZVAoMHwkQigwfGFbNDc0MDddKSksQT0wfHV0KCksYVt3Pj4yXT1tLGFbdys0Pj4yXT1BLCRyKDEsMTQwNTc1LHcpLCRiKCksZmVbMTg5NjYxXT0xLGFbNDc0MDldPTI2OCksMHxjJiYoYVs0NzQwOF09YyksbD0wfGFbNDc0MDldfXdoaWxl''@;'; put 'put ''KDA9PSgwfGwpKTtyZXR1cm4gbGU9YiwwfGx9ZnVuY3Rpb24gJDkobCl7dmFyIHAsQSxjPTAsZj0wLG09MDtBPWxlLGxlPWxlKzE2fDAscD1BLGM9MSsobHw9MCl8MCxmPTB8ZmVbbD4+MF07ZTpkb3tpZihmPDwyND4+MjQ9PTYwKXsoZj0wfGZlW2M+PjBdKTw8MjQ+PjI0PT0zMz8wfHMyKGwr''@;'; put 'put ''MnwwLDE0MTc0NywyKT8oZj1jLG09NSk6KGM9Zj0wfERoKGwrNHwwKSxmPTB8ZmVbZj4+MF0sbT04KTptPTY7dDpmb3IoOzspaWYoNSE9KDB8bSkpaWYoNiE9KDB8bSkpe2lmKDg9PSgwfG0pKXtpZihmPDwyND4+MjQ9PTYyKXttPTEwO2JyZWFrfW09OTticmVha319ZWxzZXtzd2l0Y2goZjw8''@;'; put 'put ''MjQ+PjI0KXtjYXNlIDYyOmNhc2UgMDptPTg7Y29udGludWUgdH1mPWMrMXwwLG09NX1lbHNlIGM9ZixmPTB8ZmVbZj4+MF0sbT02O2lmKDk9PSgwfG0pKXskcigwLDE0MTc1MCxwKSxmZVsxODk2NjBdPTE7YnJlYWt9aWYoMTA9PSgwfG0pKXtjPWMrMXwwO2JyZWFrfX1lbHNlIGZvcihjPWws''@;'; put 'put ''bD1mOzspe3N3aXRjaChsPDwyND4+MjQpe2Nhc2UgNjA6Y2FzZSAwOmJyZWFrIGU7Y2FzZSAzODozNT09KDB8ZmVbKGY9YysxfDApPj4wXSk/bT0xNTpmPTB8T2xlKGYsMTg5NjQ0KTticmVhaztkZWZhdWx0Om09MTV9MTU9PSgwfG0pJiYobT0wLChmPTB8YVs0NzQxMl0pPj4+MD49KDB8YVs0''@;'; put 'put ''NzQxM10pPj4+MCYmKFEwKDE4OTY0NCwxKSxmPTB8YVs0NzQxMl0pLGFbNDc0MTJdPWYrMSxmZVtmPj4wXT1sLGY9YysxfDApLGM9ZixsPTB8ZmVbZj4+MF19fXdoaWxlKDApO3JldHVybiBsZT1BLDB8Y31mdW5jdGlvbiBEaChsKXt2YXIgYixrLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wO2s9''@;'; put 'put ''bGUsbGU9bGUrMTZ8MCxiPWssbT0xLGM9bHw9MDtlOmZvcig7Oyl7cD0wPT0oMHxtKSxmPWM7dDpmb3IoOzspe2lmKHApYnJlYWsgZTtzd2l0Y2goQT1mKzF8MCwwfGZlW2Y+PjBdKXtjYXNlIDA6Yz1BO2JyZWFrIGU7Y2FzZSA2MDp3PTU7YnJlYWsgdDtjYXNlIDYyOmM9LTE7YnJlYWsgdDtk''@;'; put 'put ''ZWZhdWx0OmY9QX19NT09KDB8dykmJih3PTAsYz0xKSxtPW0rY3wwLGM9QX1mPWMrLTF8MDtkb3tpZigwfGZlW2Y+PjBdKXtpZigoYz1jKy0zfDApPj4+MD49bD4+PjAmJjA9PSgwfHMyKGMsMTQxNzQ3LDIpKSlicmVhazskcigwLDE0MTc5MSxiKSxmZVsxODk2NjBdPTF9fXdoaWxlKDApO3Jl''@;'; put 'put ''dHVybiBsZT1rLDB8Zn1mdW5jdGlvbiByXyhsLGMpe2x8PTAsY3w9MDt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MDtpZihmPTB8RjAoMjgpKXtmb3IocD0wLG09MDshKCgwfHApPj0oMHxjKSk7KWJlPSgwfGFb''@;'; put 'put ''NCsoMHxhW2wrKHA8PDIpPj4yXSk+PjJdKSttfDAscD1wKzF8MCxtPWJlO2ZvcihhWyhxPWYrOHwwKT4+Ml09MHxxOShtPDw0KSxhWyhwZT1mKzEyfDApPj4yXT0wfHE5KDQrKGM8PDIpfDApLGFbKGdlPWYrMTZ8MCk+PjJdPTB8cTkocD1tPDwyKSxwPTB8cTkocCksYVsoYmU9ZisyMHwwKT4+''@;'; put 'put ''Ml09cCxhW2YrND4+Ml09bSxhW2Y+PjJdPWMsbT0wLHc9MDthWygwfGFbcGU+PjJdKSsodzw8Mik+PjJdPW0sISgoMHx3KT49KDB8YykpOyl7Zm9yKEQ9bSstMXwwLEE9MCxiPW0sUj1NPTB8YVs0KyhHPTB8YVsoaz1sKyh3PDwyKXwwKT4+Ml0pPj4yXTshKCgwfEEpPj0oMHxSKSk7KWFbKFI9''@;'; put 'put ''KDB8YVtxPj4yXSkrKGI8PDQpfDApPj4yXT1hWyhwPSgwfGFbRz4+Ml0pKyhBPDw0KXwwKT4+Ml0sYVtSKzQ+PjJdPWFbcCs0Pj4yXSxhW1IrOD4+Ml09YVtwKzg+PjJdLGFbUisxMj4+Ml09YVtwKzEyPj4yXSxhWygwfGFbZ2U+PjJdKSsoYjw8Mik+PjJdPVI9YisxfDAsYVsocD0wfGFbYmU+''@;'; put 'put ''PjJdKSsoYjw8Mik+PjJdPWIrLTEsQT1BKzF8MCxiPVIsUj0wfGFbNCsoT2U9MHxhW2s+PjJdKT4+Ml0sRz1PZTthWygwfGFbZ2U+PjJdKSsoKE9lPUQrTXwwKTw8Mik+PjJdPW0sYVtwKyhtPDwyKT4+Ml09T2UsbT1iLHc9dysxfDB9IWZ1bmN0aW9uIFM2KGwpe2FbMjQrKGx8PTApPj4yXT0w''@;'; put 'put ''fGZ1bmN0aW9uIFJkKGwpe3ZhciBwLG0sYz0wLGY9MDtmb3IobT0wfEYwKChwPTIrKGx8PTApfDApPDwyKSxjPTB8c2goMHxBcihsLGwpLDgpLGY9MDshKCgwfGYpPj0oMHxsKSk7KWFbbSsoZjw8Mik+PjJdPWMsYz1jKyhsPDwzKXwwLGY9ZisxfDA7Zm9yKDshKCgwfGwpPj0oMHxwKSk7KWFb''@;'; put 'put ''bSsobDw8Mik+PjJdPTAsbD1sKzF8MDtyZXR1cm4gMHxtfSgwfGFbbCs0Pj4yXSksZnVuY3Rpb24gaDUobCl7dmFyIGYsQSx3LGIsTSxELFIsRyxjPTAscD0wLG09MCxrPTAscT0wLHBlPTA7Zm9yKEc9bGUsbGU9bGUrMzJ8MCx3PUcrMTZ8MCxBPUcsYj0wfGFbNCsobHw9MCk+PjJdLE09MHxh''@;'; put 'put ''W2wrOD4+Ml0sRD0wfGFbbCsxNj4+Ml0sUj0wfGFbbCsyMD4+Ml0sZj0wfGFbbCsyND4+Ml0sYz0wOyEoKDB8Yyk+PSgwfGIpKTspe2ZvcihtPU0rKChxPTB8YVtSKyhjPDwyKT4+Ml0pPDw0KXwwLGFbQT4+Ml09YVsocD1NKyhjPDw0KXwwKT4+Ml0sYVtBKzQ+PjJdPWFbcCs0Pj4yXSxhW0Er''@;'; put 'put ''OD4+Ml09YVtwKzg+PjJdLGFbQSsxMj4+Ml09YVtwKzEyPj4yXSxhW3c+PjJdPWFbbT4+Ml0sYVt3KzQ+PjJdPWFbbSs0Pj4yXSxhW3crOD4+Ml09YVttKzg+PjJdLGFbdysxMj4+Ml09YVttKzEyPj4yXSxwZT0rejQoQSx3KSxfWyhtPTB8YVtmKyhjPDwyKT4+Ml0pKyhxPDwzKT4+M109cGUs''@;'; put 'put ''X1soMHxhW2YrKHE8PDIpPj4yXSkrKGM8PDMpPj4zXT1wZSxsPSgwfHEpPT0oMHwobD1jKy0xfDApKT9jKy0yfDA6bDshKCgwfGwpPD0tMSk7KTB8WTEoYyxsLE0sRCxSKSYmMHxZMShsLGMsTSxELFIpJiYoaz1NKyhsPDw0KXwwLGFbQT4+Ml09YVtwPj4yXSxhW0ErND4+Ml09YVtwKzQ+PjJd''@;'; put 'put ''LGFbQSs4Pj4yXT1hW3ArOD4+Ml0sYVtBKzEyPj4yXT1hW3ArMTI+PjJdLGFbdz4+Ml09YVtrPj4yXSxhW3crND4+Ml09YVtrKzQ+PjJdLGFbdys4Pj4yXT1hW2srOD4+Ml0sYVt3KzEyPj4yXT1hW2srMTI+PjJdLDB8ZDUoQSx3LGIsYixiLE0sRCkpJiYoYVtBPj4yXT1hW3A+PjJdLGFbQSs0''@;'; put 'put ''Pj4yXT1hW3ArND4+Ml0sYVtBKzg+PjJdPWFbcCs4Pj4yXSxhW0ErMTI+PjJdPWFbcCsxMj4+Ml0sYVt3Pj4yXT1hW2s+PjJdLGFbdys0Pj4yXT1hW2srND4+Ml0sYVt3Kzg+PjJdPWFbays4Pj4yXSxhW3crMTI+PjJdPWFbaysxMj4+Ml0scGU9K3o0KEEsdyksX1ttKyhsPDwzKT4+M109cGUs''@;'; put 'put ''X1soMHxhW2YrKGw8PDIpPj4yXSkrKGM8PDMpPj4zXT1wZSksbD1sKy0xfDA7Yz1jKzF8MH1sZT1HfShsKX0oZil9ZWxzZSBmPTA7cmV0dXJuIDB8Zn1mdW5jdGlvbiBxOShsKXtyZXR1cm4gMHwoKGx8PTApPzB8RjAobCk6MCl9ZnVuY3Rpb24gXzYobCxjKXtjfD0wO3ZhciBmLHAsbSxBLHcs''@;'; put 'put ''YixrLE09MCxEPTA7Zm9yKGs9bGUsbGU9bGUrNDh8MCx3PWsrMzJ8MCxBPWsrMTZ8MCxtPWssYj0wfGFbKGx8PTApPj4yXSxwPShmPTB8YVtsKzQ+PjJdKS0xfDAsbD0wOzspe2lmKCgwfGwpPj0oMHxmKSl7bD0xO2JyZWFrfWlmKE09YisobDw8NCl8MCxhW20+PjJdPWFbKEQ9YisoKChwK2x8''@;'; put 'put ''MCklKDB8Zil8MCk8PDQpfDApPj4yXSxhW20rND4+Ml09YVtEKzQ+PjJdLGFbbSs4Pj4yXT1hW0QrOD4+Ml0sYVttKzEyPj4yXT1hW0QrMTI+PjJdLGFbQT4+Ml09YVtNPj4yXSxhW0ErND4+Ml09YVtNKzQ+PjJdLGFbQSs4Pj4yXT1hW00rOD4+Ml0sYVtBKzEyPj4yXT1hW00rMTI+PjJdLGFb''@;'; put 'put ''dz4+Ml09YVtjPj4yXSxhW3crND4+Ml09YVtjKzQ+PjJdLGFbdys4Pj4yXT1hW2MrOD4+Ml0sYVt3KzEyPj4yXT1hW2MrMTI+PjJdLDE9PSgwfFVjKG0sQSx3KSkpe2w9MDticmVha31sPWwrMXwwfXJldHVybiBsZT1rLDB8bH1mdW5jdGlvbiBlQShsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0w''@;'; put 'put ''LHB8PTAsbXw9MDt2YXIgYixNLEQsUixHLHEsYmUsQT0wLHc9MCxrPTAscGU9MCxnZT0wO2ZvcihiZT1sZSxsZT1sZSs2NHwwLEQ9YmUrNDh8MCxNPWJlKzMyfDAscGU9NCxrPTB8RjAoNDApLGFbaz4+Ml09MCxSPWJlKzE2fDAsRz1iZSxxPTB8YVtmPj4yXSxiPTB8YVtmKzQ+PjJdLHBlPTB8''@;'; put 'put ''UGYoMTg5NjgwLDEsMHxrLDB8cGUpLGs9RG4sZj1Nbj0wLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygoQT0wfGdpKDB8YVtmPj4yXSwwfHBlLDB8aykpfHx6ZSgwfGYsMHx4biksRG49eG4pOkE9LTEsZj0xPT0oMHxBKT9EbjowOzspe2lmKDB8Zil7Zj0tMTticmVha31pZihNbj0wLGFbRD4+''@;'; put 'put ''Ml09YVtwPj4yXSxhW0QrND4+Ml09YVtwKzQ+PjJdLGFbRCs4Pj4yXT1hW3ArOD4+Ml0sYVtEKzEyPj4yXT1hW3ArMTI+PjJdLFoxKDI4LDB8UiwwfEQpLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW2Y+PjJdLDB8cGUsMHxrKSl8fHplKDB8ZiwwfHhuKSxEbj14''@;'; put 'put ''bik6QT0tMSwxIT0oMHxBKSlpZihhW3A+PjJdPWFbUj4+Ml0sYVtwKzQ+PjJdPWFbUis0Pj4yXSxhW3ArOD4+Ml09YVtSKzg+PjJdLGFbcCsxMj4+Ml09YVtSKzEyPj4yXSxNbj0wLGFbRD4+Ml09YVsodz1wKzE2fDApPj4yXSxhW0QrND4+Ml09YVt3KzQ+PjJdLGFbRCs4Pj4yXT1hW3crOD4+''@;'; put 'put ''Ml0sYVtEKzEyPj4yXT1hW3crMTI+PjJdLFoxKDI4LDB8RywwfEQpLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW2Y+PjJdLDB8cGUsMHxrKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6QT0tMSwxIT0oMHxBKSlpZihhW3c+PjJdPWFbRz4+Ml0sYVt3KzQ+PjJdPWFb''@;'; put 'put ''Rys0Pj4yXSxhW3crOD4+Ml09YVtHKzg+PjJdLGFbdysxMj4+Ml09YVtHKzEyPj4yXSxhWzQ3NDU5XT0wLE1uPTAsc3MoMTE1LDQpLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW2Y+PjJdLDB8cGUsMHxrKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6QT0tMSwxIT0o''@;'; put 'put ''MHxBKSl7aWYoQT0wfGFbNDc0NjBdLGFbNDc0NTldPTErKGY9MHxhWzQ3NDU5XSksYVsoZj1BKyhmPDw0KXwwKT4+Ml09YVtxPj4yXSxhW2YrND4+Ml09YVtxKzQ+PjJdLGFbZis4Pj4yXT1hW3ErOD4+Ml0sYVtmKzEyPj4yXT1hW3ErMTI+PjJdLE1uPTAsYVtNPj4yXT1hW3A+PjJdLGFbTSs0''@;'; put 'put ''Pj4yXT1hW3ArND4+Ml0sYVtNKzg+PjJdPWFbcCs4Pj4yXSxhW00rMTI+PjJdPWFbcCsxMj4+Ml0sYVtEPj4yXT1hW3c+PjJdLGFbRCs0Pj4yXT1hW3crND4+Ml0sYVtEKzg+PjJdPWFbdys4Pj4yXSxhW0QrMTI+PjJdPWFbdysxMj4+Ml0sZj0wfGMxKDEsMHxsLDB8YywwfHEsMHxiLDB8TSww''@;'; put 'put ''fEQpLEE9TW4sTW49MCwwIT0oMHxBKSYwIT0oMHx4bik/KCh3PTB8Z2koMHxhW0E+PjJdLDB8cGUsMHxrKSl8fHplKDB8QSwwfHhuKSxEbj14bik6dz0tMSwxIT0oMHx3KSl7Z2U9ODticmVha31mPURufWVsc2UgZj1EbjtlbHNlIGY9RG47ZWxzZSBmPURufXJldHVybiA4PT0oMHxnZSkmJigt''@;'; put 'put ''MT09KDB8Zik/Zj0tMTooYVttKzQ+PjJdPWFbNDc0NTldLGFbbT4+Ml09YVs0NzQ2MF0sZj0wKSksRnQoMHxwZSksbGU9YmUsMHxmfWZ1bmN0aW9uIGE1KGwsYyl7dmFyIGYscCxtLEEsdztsfD0wLEE9K0QwKCsodz0obT0rX1socD04KyhjfD0wKXwwKT4+M10pKm0rKGY9K19bYz4+M10pKmYp''@;'; put 'put ''KSx3PjFlLTYmJihfW2M+PjNdPWYvQSxfW3A+PjNdPW0vQSksYVtsPj4yXT1hW2M+PjJdLGFbbCs0Pj4yXT1hW2MrND4+Ml0sYVtsKzg+PjJdPWFbYys4Pj4yXSxhW2wrMTI+PjJdPWFbYysxMj4+Ml19ZnVuY3Rpb24gZXgobCl7dmFyIG0sYz0wLGY9MCxwPTA7bT1sZSxsZT1sZSszMnwwLHA9''@;'; put 'put ''bSsxNnwwLGY9bSwoMHxhWzQ3NDYzXSk8KDB8KGx8PTApKSYmKChjPTB8YVs0NzQ2MF0pPyhmPTB8VWEoYyxsPDw0KSxhWzQ3NDYwXT1mLGZ8fChmPTB8YVsxNTcxMl0sYVtwPj4yXT0xNDE4MzEsYVtwKzQ+PjJdPTUzNyxhW3ArOD4+Ml09MTQxOTg0LFQwKGYsMTQxODM5LHApLHplKDE4OTY4''@;'; put 'put ''MCwxKSkpOihwPTB8RjAobDw8NCksYVs0NzQ2MF09cCxwfHwocD0wfGFbMTU3MTJdLGFbZj4+Ml09MTQxODMxLGFbZis0Pj4yXT01MzEsYVtmKzg+PjJdPTE0MTk2NixUMChwLDE0MTgzOSxmKSx6ZSgxODk2ODAsMSkpKSxhWzQ3NDYzXT1sKSxsZT1tfWZ1bmN0aW9uIG9fKGwsYyl7dmFyIGYs''@;'; put 'put ''cDtyZXR1cm4rICtEMCgrKChwPStfWzgrKGN8PTApPj4zXS0rX1s4KyhsfD0wKT4+M10pKnArKGY9K19bYz4+M10tK19bbD4+M10pKmYpKX1mdW5jdGlvbiBFbShsKXt2YXIgYztyZXR1cm4rKGM9MS0obD0rbCkpKmMqKDMqbCl9ZnVuY3Rpb24gX2YobCxjLGYpe3ZhciBwO2x8PTAsX1soY3w9''@;'; put 'put ''MCk+PjNdPStfW2M+PjNdKihmPStmKSxfWyhwPWMrOHwwKT4+M109K19bcD4+M10qZixhW2w+PjJdPWFbYz4+Ml0sYVtsKzQ+PjJdPWFbYys0Pj4yXSxhW2wrOD4+Ml09YVtjKzg+PjJdLGFbbCsxMj4+Ml09YVtjKzEyPj4yXX1mdW5jdGlvbiBMZChsKXtyZXR1cm4rKGw9K2wpKmwqMyooMS1s''@;'; put 'put ''KX1mdW5jdGlvbiB0eChsLGMsZil7dmFyIHA7bHw9MCxfWyhjfD0wKT4+M109K19bYz4+M10rICtfWyhmfD0wKT4+M10sX1socD1jKzh8MCk+PjNdPStfW3A+PjNdKyArX1tmKzg+PjNdLGFbbD4+Ml09YVtjPj4yXSxhW2wrND4+Ml09YVtjKzQ+PjJdLGFbbCs4Pj4yXT1hW2MrOD4+Ml0sYVts''@;'; put 'put ''KzEyPj4yXT1hW2MrMTI+PjJdfWZ1bmN0aW9uIHRBKGwsYyxmKXt2YXIgcDtsfD0wLF9bKGN8PTApPj4zXT0rX1tjPj4zXS0rX1soZnw9MCk+PjNdLF9bKHA9Yys4fDApPj4zXT0rX1twPj4zXS0rX1tmKzg+PjNdLGFbbD4+Ml09YVtjPj4yXSxhW2wrND4+Ml09YVtjKzQ+PjJdLGFbbCs4Pj4y''@;'; put 'put ''XT1hW2MrOD4+Ml0sYVtsKzEyPj4yXT1hW2MrMTI+PjJdfWZ1bmN0aW9uIFZCKGwpe3JldHVybisobD0xLShsPStsKSkqbCpsfWZ1bmN0aW9uIG54KGwpe3JldHVybisobD0rbCkqbCpsfWZ1bmN0aW9uIGxfKGwsYyl7bHw9MCxjfD0wO3ZhciBmPTAscD0wLG09MCxBPTAsdz0wO2ZvcihmPTAs''@;'; put 'put ''cD0xOyEoKDB8cCk+PSgwfGMpKTspZj0rRDAoKygoQT0rX1tsKyhwPDw0KSs4Pj4zXS0rX1tsKygodz1wKy0xfDApPDw0KSs4Pj4zXSkqQSsobT0rX1tsKyhwPDw0KT4+M10tK19bbCsodzw8NCk+PjNdKSptKSkrZixwPXArMXwwO3JldHVybitmfWZ1bmN0aW9uIFcxKGwsYyxmKXtsfD0wLGN8''@;'; put 'put ''PTA7dmFyIEEsdyxiLGssTSxiZSxPZSxSZSxWZSxxZSxydCxXZSxhdCxwPTAsbT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsTGU9MCxIZT0wLFN0PTAsa3Q9MDthdD1sZSxsZT1sZSs2NHwwLGJlPWF0KzMyfDAsUmU9KE9lPWF0KSsxNnwwLFZlPTE2KyhmfD0wKXwwLHFlPWYrMzJ8MCxy''@;'; put 'put ''dD1mKzQ4fDAsV2U9Zis4fDAsQT1mKzI0fDAsdz1mKzQwfDAsYj1mKzU2fDAsaz1PZSs4fDAsTT1PZSsyNHwwLG09MDtlOmZvcig7Oyl7aWYoKDB8bSk+PSgwfGMpKXtwPTE7YnJlYWt9YVtPZT4+Ml09YVsoRD1sKyhtPDw1KXwwKT4+Ml0sYVtPZSs0Pj4yXT1hW0QrND4+Ml0sYVtPZSs4Pj4y''@;'; put 'put ''XT1hW0QrOD4+Ml0sYVtPZSsxMj4+Ml09YVtEKzEyPj4yXSxhW1JlPj4yXT1hWyhEPWwrKG08PDUpKzE2fDApPj4yXSxhW1JlKzQ+PjJdPWFbRCs0Pj4yXSxhW1JlKzg+PjJdPWFbRCs4Pj4yXSxhW1JlKzEyPj4yXT1hW0QrMTI+PjJdLEQ9MHxoRyhmLE9lLGJlKTt0OmRve2lmKDQhPSgwfEQp''@;'; put 'put ''KWZvcihSPStfW09lPj4zXSxHPStfW2s+PjNdLHE9K19bUmU+PjNdLHBlPStfW00+PjNdLHA9MDs7KXtpZigoMHxwKT49KDB8RCkpYnJlYWsgdDtpZighKChnZT0rX1tiZSsocDw8Myk+PjNdKTwxZS02fGdlPi45OTk5OTl8fChIZT1nZSpnZSpnZSxrdD0zKmdlLFN0PTEtZ2UsZ2U9a3QqZ2Uq''@;'; put 'put ''U3QsTGU9U3QqU3Qsa3QqPUxlLFN0Kj1MZSxMZT0rX1tWZT4+M10qa3QrICtfW2Y+PjNdKlN0KyArX1txZT4+M10qZ2UrICtfW3J0Pj4zXSpIZSxIZT0rX1tBPj4zXSprdCsgK19bV2U+PjNdKlN0KyArX1t3Pj4zXSpnZSsgK19bYj4+M10qSGUsZ2U9TGUtUixTdD1IZS1HLFN0KlN0K2dlKmdl''@;'; put 'put ''PC4wMDEpfHwoa3Q9TGUtcSxTdD1IZS1wZSxTdCpTdCtrdCprdDwuMDAxKSkpe3A9MDticmVhayBlfXA9cCsxfDB9fXdoaWxlKDApO209bSsxfDB9cmV0dXJuIGxlPWF0LDB8cH1mdW5jdGlvbiBoRyhsLGMsZil7bHw9MCxmfD0wO3ZhciBnZSxiZSxPZSxMZSxwPTAsbT0wLEE9MCx3PTAsYj0w''@;'; put 'put ''LGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTA7TGU9bGUsbGU9bGUrOTZ8MCxnZT1MZSs0OHwwLGJlPUxlKzI0fDAsaz1MZSxBPStfWzE2KyhjfD0wKT4+M10tKEc9K19bYz4+M10pLGI9K19bYysyND4+M10tKHE9K19bYys4Pj4zXSksYVsoT2U9TGUrODB8MCk+PjJdPTA7ZTpkb3tpZigw''@;'; put 'put ''IT1BKWlmKGIvPUEsTT1sKzE2fDAsRD1sKzMyfDAsUj1sKzQ4fDAseG0oK19bbCs4Pj4zXS0rX1tsPj4zXSpiLCtfW2wrMjQ+PjNdLStfW00+PjNdKmIsK19bbCs0MD4+M10tK19bRD4+M10qYiwrX1tsKzU2Pj4zXS0rX1tSPj4zXSpiLGdlKSxfW2dlPj4zXT1iKkctcSsgK19bZ2U+PjNdLHA9''@;'; put 'put ''MHxMaChnZSxiZSksND09KDB8cCkpYz00O2Vsc2V7Zm9yKG09Z2UrOHwwLHc9Z2UrMTZ8MCxrPWdlKzI0fDAsQT0xL0EsYz0wOyEoKDB8Yyk+PSgwfHApKTspKGI9K19bYmUrKGM8PDMpPj4zXSk+PTAmYjw9MSYmKHhtKCtfW2w+PjNdLCtfW00+PjNdLCtfW0Q+PjNdLCtfW1I+PjNdLGdlKSwo''@;'; put 'put ''cT0oK19bZ2U+PjNdLUcrKCgrX1trPj4zXSpiKyArX1t3Pj4zXSkqYisgK19bbT4+M10pKmIpKkEpPj0wJnE8PTEpJiZuQShiLGYsT2UpLGM9YysxfDA7Yz0wfGFbT2U+PjJdfWVsc2V7aWYoeG0oK19bbD4+M10sK19bbCsxNj4+M10sK19bbCszMj4+M10sK19bbCs0OD4+M10sZ2UpLF9bZ2U+''@;'; put 'put ''PjNdPStfW2dlPj4zXS1HLHBlPTB8TGgoZ2UsYmUpLDAhPWIpe2lmKDQ9PSgwfHBlKSl7Yz00O2JyZWFrfWZvcihNPWwrOHwwLEQ9bCsyNHwwLFI9bCs0MHwwLHA9bCs1NnwwLG09Z2UrOHwwLHc9Z2UrMTZ8MCxrPWdlKzI0fDAsQT0xL2IsYz0wOyEoKDB8Yyk+PSgwfHBlKSk7KShiPStfW2Jl''@;'; put 'put ''KyhjPDwzKT4+M10pPj0wJmI8PTEmJih4bSgrX1tNPj4zXSwrX1tEPj4zXSwrX1tSPj4zXSwrX1twPj4zXSxnZSksKEc9KCtfW2dlPj4zXS1xKygoK19baz4+M10qYisgK19bdz4+M10pKmIrICtfW20+PjNdKSpiKSpBKT49MCZHPD0xKSYmbkEoYixmLE9lKSxjPWMrMXwwO2M9MHxhW09lPj4y''@;'; put 'put ''XTticmVha314bSgrX1tsKzg+PjNdLCtfW2wrMjQ+PjNdLCtfW2wrNDA+PjNdLCtfW2wrNTY+PjNdLGdlKSxfW2dlPj4zXT0rX1tnZT4+M10tcSxjPTQ9PSgwfCh3PTB8TGgoZ2UsaykpKTt0OmRve2lmKDQ9PSgwfHBlKSl7aWYoYyl7Yz00O2JyZWFrIGV9Zm9yKGM9MDs7KXtpZigoMHxjKT49''@;'; put 'put ''KDB8dykpYnJlYWsgdDtuQSgrX1trKyhjPDwzKT4+M10sZixPZSksYz1jKzF8MH19ZWxzZXtpZihjKWZvcihjPTA7Oyl7aWYoKDB8Yyk+PSgwfHBlKSlicmVhayB0O25BKCtfW2JlKyhjPDwzKT4+M10sZixPZSksYz1jKzF8MH1lbHNlIHA9MDtmb3IoOzspe2lmKCgwfHApPj0oMHxwZSkpYnJl''@;'; put 'put ''YWsgdDtmb3IobT1iZSsocDw8Myl8MCxjPTA7ISgoMHxjKT49KDB8dykpOykoQT0rX1ttPj4zXSk9PStfW2srKGM8PDMpPj4zXSYmbkEoQSxmLE9lKSxjPWMrMXwwO3A9cCsxfDB9fX13aGlsZSgwKTtjPTB8YVtPZT4+Ml19fXdoaWxlKDApO3JldHVybiBsZT1MZSwwfGN9ZnVuY3Rpb24geG0o''@;'; put 'put ''bCxjLGYscCxtKXtfWzI0KyhtfD0wKT4+M109KHA9K3ApLShsPStsKSszKigoYz0rYyktKGY9K2YpKSxfW20rMTY+PjNdPTMqKGYrbCktNipjLF9bbSs4Pj4zXT0zKihjLWwpLF9bbT4+M109bH1mdW5jdGlvbiBuQShsLGMsZil7Znw9MDt2YXIgcD0wOyhsPStsKT49MCZsPD0xJiYoX1soY3w9''@;'; put 'put ''MCkrKChwPTB8YVtmPj4yXSk8PDMpPj4zXT1sLGFbZj4+Ml09cCsxKX1mdW5jdGlvbiBzNShsLGMpe3JldHVybisoK19bOCsoY3w9MCk+PjNdKitfWzgrKGx8PTApPj4zXSsgK19bYz4+M10qK19bbD4+M10pfWZ1bmN0aW9uIHJ4KGwpe3ZhciBjO3JldHVybisoYz0xLShsPStsKSkqYyooYysz''@;'; put 'put ''KmwpfWZ1bmN0aW9uIGpCKGwpe3JldHVybisobD0rbCkqbCooMyooMS1sKStsKX1mdW5jdGlvbiB1NShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIGJlLE9lLExlLFJlLFZlLHFlLFN0LHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLEhlPTAs''@;'; put 'put ''cnQ9MCxXZT0wLGF0PTAsa3Q9MDtTdD1sZSxsZT1sZSsxMTJ8MCxydD1TdCs4MHwwLHFlPVN0KzY0fDAsVmU9U3QrNDh8MCxhdD00LFdlPTB8RjAoNDApLGFbV2U+PjJdPTAsYmU9U3QrMzJ8MCxPZT1TdCsxNnwwLExlPVN0LFJlPVN0Kzk2fDAsYXQ9MHxQZigxODk4NTYsMSwwfFdlLDB8YXQp''@;'; put 'put ''LFdlPURuLHA9TW49MCxNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxnaSgwfGFbcD4+Ml0sMHxhdCwwfFdlKSl8fHplKDB8cCwwfHhuKSxEbj14bik6bT0tMSxwPTE9PSgwfG0pP0RuOjA7ZTpmb3IoOzspe2lmKDB8cCl7cD0tMjticmVha31pZihNbj0wLHNzKDExNiwwfGFbKEE9bCs0''@;'; put 'put ''fDApPj4yXSkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxnaSgwfGFbcD4+Ml0sMHxhdCwwfFdlKSl8fHplKDB8cCwwfHhuKSxEbj14bik6bT0tMSwxIT0oMHxtKSlpZihhWzQ3NTAzXT0wLGFbNDc1MDRdPTAsTW49MCxzcygxMTcsYVtBPj4yXTw8MXwwKSxwPU1uLE1uPTAs''@;'; put 'put ''MCE9KDB8cCkmMCE9KDB8eG4pPygobT0wfGdpKDB8YVtwPj4yXSwwfGF0LDB8V2UpKXx8emUoMHxwLDB8eG4pLERuPXhuKTptPS0xLDEhPSgwfG0pKXtmb3IoYVs0NzUwN109TT0oMHxhWzQ3NTA2XSkvMnwwLGFbNDc1MDhdPU0rLTEsTT0wfGFbQT4+Ml0sQT0wfGFbbD4+Ml0scD0wLG09LTEs''@;'; put 'put ''dz15czshKCgwfHApPj0oMHxNKSk7KXBlPShnZT13PihrdD0rX1tBKyhwPDw0KT4+M10pKT9wOm0scD1wKzF8MCxtPXBlLHc9Z2U/a3Q6dzthW09lPj4yXT1hWyhnZT1BKyhtPDw0KXwwKT4+Ml0sYVtPZSs0Pj4yXT1hW2dlKzQ+PjJdLGFbT2UrOD4+Ml09YVtnZSs4Pj4yXSxhW09lKzEyPj4y''@;'; put 'put ''XT1hW2dlKzEyPj4yXSxhW2JlPj4yXT1hWyhnZT1BKygoMD09KDB8bSk/TTptKSstMTw8NCl8MCk+PjJdLGFbYmUrND4+Ml09YVtnZSs0Pj4yXSxhW2JlKzg+PjJdPWFbZ2UrOD4+Ml0sYVtiZSsxMj4+Ml09YVtnZSsxMj4+Ml0sYVtMZT4+Ml09YVsoZ2U9QSsoKCgwfG0pPT0oTSstMXwwKT8w''@;'; put 'put ''Om0rMXwwKTw8NCl8MCk+PjJdLGFbTGUrND4+Ml09YVtnZSs0Pj4yXSxhW0xlKzg+PjJdPWFbZ2UrOD4+Ml0sYVtMZSsxMj4+Ml09YVtnZSsxMj4+Ml0sZ2U9K19bYmU+PjNdPT0oa3Q9K19bT2U+PjNdKSYma3Q9PStfW0xlPj4zXSYmK19bTGUrOD4+M10+K19bT2UrOD4+M10/MTU6MTI7dDpk''@;'; put 'put ''b3tpZigxMj09KDB8Z2UpKXtpZihnZT0wLE1uPTAscD0wfEpzKDM2LDB8YmUsMHxPZSwwfExlKSxtPU1uLE1uPTAsMCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfGdpKDB8YVttPj4yXSwwfGF0LDB8V2UpKXx8emUoMHxtLDB8eG4pLERuPXhuKTpBPS0xLDE9PSgwfEEpKXtwPURuO2NvbnRpbnVl''@;'; put 'put ''IGV9aWYoMT09KDB8cCkpZm9yKEE9MHxhWzQ3NTEwXSxwPTB8YVs0NzUxMV0sbT0wOzspe2lmKCgwfG0pPj0oMHxNKSlicmVhayB0O2I9MHxhW2w+PjJdLCgwfG0pPjAmJitfW2IrKG08PDQpPj4zXT09K19bYisoKEhlPW0rLTF8MCk8PDQpPj4zXSYmK19bYisobTw8NCkrOD4+M109PStfW2Ir''@;'; put 'put ''KEhlPDw0KSs4Pj4zXXx8KGFbQSsoKHBlPTB8YVs0NzUwM10pPDwzKT4+Ml09YisobTw8NCksYVtBKyhwZTw8MykrND4+Ml09QSsoKCgwfHBlKSUoMHxNKXwwKTw8MyksYVtwKyhwZTw8Mik+PjJdPUErKHBlPDwzKSxhWzQ3NTAzXT1wZSsxKSxtPW0rMXwwfWVsc2UgZ2U9MTV9fXdoaWxlKDAp''@;'; put 'put ''O3Q6ZG97aWYoMTU9PSgwfGdlKSlmb3IoZ2U9MCxiPTB8YVs0NzUxMF0scD0wfGFbNDc1MTFdLEE9TTs7KXtpZihtPUErLTF8MCwoMHxBKTw9MClicmVhayB0O2s9MHxhW2w+PjJdLCgwfEEpPCgwfE0pJiYrX1trKyhtPDw0KT4+M109PStfW2srKEE8PDQpPj4zXSYmK19baysobTw8NCkrOD4+''@;'; put 'put ''M109PStfW2srKEE8PDQpKzg+PjNdfHwoYVtiKygoQT0wfGFbNDc1MDNdKTw8Myk+PjJdPWsrKG08PDQpLGFbYisoQTw8MykrND4+Ml09YisoKCgwfEEpJSgwfE0pfDApPDwzKSxhW3ArKEE8PDIpPj4yXT1iKyhBPDwzKSxhWzQ3NTAzXT1BKzEpLEE9bX19d2hpbGUoMCk7aWYoTW49MCxaMSgy''@;'; put 'put ''OSwwfHAsMHxhWzQ3NTAzXSkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxnaSgwfGFbcD4+Ml0sMHxhdCwwfFdlKSl8fHplKDB8cCwwfHhuKSxEbj14bik6bT0tMSwxIT0oMHxtKSl7Yj0wLHA9MHxhWzQ3NTA0XTt0OmZvcig7Oyl7aWYoKDB8Yik+PSgwfHApKXtxPTA7YnJl''@;'; put 'put ''YWt9Zm9yKEE9az1iKzF8MDs7KXtpZigoMHxBKT49KDB8cCkpe2I9aztjb250aW51ZSB0fWlmKE1uPTAsWjEoMzAsMHxiLDB8QSkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxnaSgwfGFbcD4+Ml0sMHxhdCwwfFdlKSl8fHplKDB8cCwwfHhuKSxEbj14bik6bT0tMSwxPT0o''@;'; put 'put ''MHxtKSl7cD1Ebjtjb250aW51ZSBlfUE9QSsxfDAscD0wfGFbNDc1MDRdfX1mb3IoOyEoKDB8cSk+PSgwfHApKTspe2lmKE1uPTAsbT0wfEZsKDEwNSwwfHEsMHxjKSxBPU1uLE1uPTAsMCE9KDB8QSkmMCE9KDB8eG4pPygoYj0wfGdpKDB8YVtBPj4yXSwwfGF0LDB8V2UpKXx8emUoMHxBLDB8''@;'; put 'put ''eG4pLERuPXhuKTpiPS0xLDE9PSgwfGIpKXtwPURuO2NvbnRpbnVlIGV9aWYoMHxtKWJyZWFrO3E9cSsxfDB9aWYoKDB8cSk9PSgwfHApKXtpZihwPTB8YVsxNTcxMl0sTW49MCxhW1ZlPj4yXT0xNDE4NTgsYVtWZSs0Pj4yXT0xOTIsYVtWZSs4Pj4yXT0xNDE4NjksSnMoMzIsMHxwLDE0MTgz''@;'; put 'put ''OSwwfFZlKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygobT0wfGdpKDB8YVtwPj4yXSwwfGF0LDB8V2UpKXx8emUoMHxwLDB8eG4pLERuPXhuKTptPS0xLDE9PSgwfG0pKXtwPURuO2NvbnRpbnVlfWdlPTQxO2JyZWFrfWZvcihwZT1jKzE2fDAsaz0wOyEoKDB8ayk+PSgwfHApKTsp''@;'; put 'put ''e2lmKE1uPTAsbT0wfEZsKDEwNSwwfGssMHxwZSksQT1NbixNbj0wLDAhPSgwfEEpJjAhPSgwfHhuKT8oKGI9MHxnaSgwfGFbQT4+Ml0sMHxhdCwwfFdlKSl8fHplKDB8QSwwfHhuKSxEbj14bik6Yj0tMSwxPT0oMHxiKSl7cD1Ebjtjb250aW51ZSBlfWlmKDB8bSlicmVhaztrPWsrMXwwfWlm''@;'; put 'put ''KCgwfGspPT0oMHxwKSl7aWYocD0wfGFbMTU3MTJdLE1uPTAsYVtxZT4+Ml09MTQxODU4LGFbcWUrND4+Ml09MjAwLGFbcWUrOD4+Ml09MTQxOTAyLEpzKDMyLDB8cCwxNDE4MzksMHxxZSkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxnaSgwfGFbcD4+Ml0sMHxhdCwwfFdl''@;'; put 'put ''KSl8fHplKDB8cCwwfHhuKSxEbj14bik6bT0tMSwxPT0oMHxtKSl7cD1Ebjtjb250aW51ZX1nZT00ODticmVha31pZihNbj0wLHA9MHxGbCgxMDYsMHxxLDB8ayksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbbT4+Ml0sMHxhdCwwfFdlKSl8fHplKDB8bSwwfHhu''@;'; put 'put ''KSxEbj14bik6QT0tMSwxIT0oMHxBKSl7aWYoIXApe2lmKHA9MHxhWzE1NzEyXSxNbj0wLGFbcnQ+PjJdPTE0MTg1OCxhW3J0KzQ+PjJdPTIwNyxhW3J0Kzg+PjJdPTE0MTk0MCxKcygzMiwwfHAsMTQxODM5LDB8cnQpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChtPTB8Z2koMHxh''@;'; put 'put ''W3A+PjJdLDB8YXQsMHxXZSkpfHx6ZSgwfHAsMHx4biksRG49eG4pOm09LTEsMT09KDB8bSkpe3A9RG47Y29udGludWV9aWYoTW49MCxzcygxMTgsMikscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxnaSgwfGFbcD4+Ml0sMHxhdCwwfFdlKSl8fHplKDB8cCwwfHhuKSxEbj14''@;'; put 'put ''bik6bT0tMSwxPT0oMHxtKSl7cD1Ebjtjb250aW51ZX1nZT01MzticmVha31pZigoMHxxKT09KDB8aykpe2lmKE1uPTAsc3MoMTE4LDIpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChtPTB8Z2koMHxhW3A+PjJdLDB8YXQsMHxXZSkpfHx6ZSgwfHAsMHx4biksRG49eG4pOm09LTEs''@;'; put 'put ''MT09KDB8bSkpe3A9RG47Y29udGludWV9Z2U9NTY7YnJlYWt9aWYoYVtSZT4+Ml09YyxhW1JlKzQ+PjJdPTAsYVsobT1SZSs4fDApPj4yXT1wZSxhW1JlKzEyPj4yXT0wLE1uPTAsWjEoMzEsMSwwfFJlKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygoQT0wfGdpKDB8YVtwPj4yXSww''@;'; put 'put ''fGF0LDB8V2UpKXx8emUoMHxwLDB8eG4pLERuPXhuKTpBPS0xLDEhPSgwfEEpKXthWzQ3NTA5XT1hWzQ3NTA3XSxSPXE7dDpmb3IoOzspe2lmKC0xPT0oMHxSKSl7QT1tLHA9MDticmVha31mb3IoYVsoRz0wfGFbNDc1MTNdKSsoNTIqUnwwKT4+Ml09MixwPTA7Oyl7aWYoKDB8cCk+PTMpe2dl''@;'; put 'put ''PTY1O2JyZWFrfWlmKDB8KGdlPTB8YVtHKyg1MipSfDApKzQrKHA8PDQpKzEyPj4yXSkmJjE9PSgwfGFbZ2U+PjJdKSl7Z2U9Njg7YnJlYWt9cD1wKzF8MH1pZig2NT09KDB8Z2UpKWlmKGdlPTAsMz09KDB8cCkpe2lmKE1uPTAscD0wfEpzKDM2LDB8cGUsMHxhW2FbKHA9MHxhWzQ3NTA1XSkr''@;'; put 'put ''KGFbNDc1MDddPDwyKT4+Ml0+PjJdLDB8YVsoaz0wfGFbcCsoYVs0NzUwOF08PDIpPj4yXSk+PjJdKSxBPU1uLE1uPTAsMCE9KDB8QSkmMCE9KDB8eG4pPygoYj0wfGdpKDB8YVtBPj4yXSwwfGF0LDB8V2UpKXx8emUoMHxBLDB8eG4pLERuPXhuKTpiPS0xLDE9PSgwfGIpKXtwPURuO2NvbnRp''@;'; put 'put ''bnVlIGV9RD0oYj0xPT0oMHxwKSk/bTprLGI9Yj9rOm19ZWxzZSBnZT02ODtpZig2OD09KDB8Z2UpKXtpZihnZT0wLE1uPTAscD0wfEpzKDM2LDB8YVsoaz0wfGFbRysoNTIqUnwwKSs0KyhwPDw0KT4+Ml0pPj4yXSwwfGFbYVtHKyg1MipSfDApKzQrKCgocCsxfDApJTN8MCk8PDQpKzQ+PjJd''@;'; put 'put ''Pj4yXSwwfGFbKE09MHxhW0crKDUyKlJ8MCkrNCsocDw8NCkrND4+Ml0pPj4yXSksQT1NbixNbj0wLDAhPSgwfEEpJjAhPSgwfHhuKT8oKGI9MHxnaSgwfGFbQT4+Ml0sMHxhdCwwfFdlKSl8fHplKDB8QSwwfHhuKSxEbj14bik6Yj0tMSwxPT0oMHxiKSl7cD1Ebjtjb250aW51ZSBlfUQ9KGI9''@;'; put 'put ''MT09KDB8cCkpP2s6TSxiPWI/TTprfWRve2lmKCgwfFIpPT0oMHxxKSl7aWYoTW49MCxaMSgzMSwyLDB8YikscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbcD4+Ml0sMHxhdCwwfFdlKSl8fHplKDB8cCwwfHhuKSxEbj14bik6QT0tMSwxPT0oMHxBKSl7cD1Ebjtj''@;'; put 'put ''b250aW51ZSBlfWlmKE1uPTAsWjEoMzEsMSwwfEQpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW3A+PjJdLDB8YXQsMHxXZSkpfHx6ZSgwfHAsMHx4biksRG49eG4pOkE9LTEsMT09KDB8QSkpe3A9RG47Y29udGludWUgZX1wPTB9ZWxzZXtpZigoMHxhWyhNPTB8''@;'; put 'put ''YVs0NzUwNV0pKyhhWzQ3NTA3XTw8Mik+PjJdKSE9KDB8RCkmJigwfGFbTSsoYVs0NzUwOF08PDIpPj4yXSkhPSgwfEQpKXtpZihNbj0wLGI9MHxhMCgzNCwwfEQpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW3A+PjJdLDB8YXQsMHxXZSkpfHx6ZSgwfHAsMHx4''@;'; put 'put ''biksRG49eG4pOkE9LTEsMT09KDB8QSkpe3A9RG47Y29udGludWUgZX1pZihNbj0wLFoxKDMyLDIsMHxiKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygoQT0wfGdpKDB8YVtwPj4yXSwwfGF0LDB8V2UpKXx8emUoMHxwLDB8eG4pLERuPXhuKTpBPS0xLDE9PSgwfEEpKXtwPURuO2Nv''@;'; put 'put ''bnRpbnVlIGV9aWYoTW49MCxaMSgzMSwxLDB8RCkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbcD4+Ml0sMHxhdCwwfFdlKSl8fHplKDB8cCwwfHhuKSxEbj14bik6QT0tMSwxPT0oMHxBKSl7cD1Ebjtjb250aW51ZSBlfWlmKCgwfGIpPD0oMHxhWzQ3NTA5XSkp''@;'; put 'put ''e3A9MDticmVha31hWzQ3NTA5XT1iLHA9MDticmVha31pZihNbj0wLGs9MHxhMCgzNCwwfGIpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW3A+PjJdLDB8YXQsMHxXZSkpfHx6ZSgwfHAsMHx4biksRG49eG4pOkE9LTEsMT09KDB8QSkpe3A9RG47Y29udGludWUg''@;'; put 'put ''ZX1pZihNbj0wLFoxKDMyLDEsMHxrKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygoQT0wfGdpKDB8YVtwPj4yXSwwfGF0LDB8V2UpKXx8emUoMHxwLDB8eG4pLERuPXhuKTpBPS0xLDE9PSgwfEEpKXtwPURuO2NvbnRpbnVlIGV9aWYoTW49MCxaMSgzMSwyLDB8YikscD1NbixNbj0w''@;'; put 'put ''LDAhPSgwfHApJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbcD4+Ml0sMHxhdCwwfFdlKSl8fHplKDB8cCwwfHhuKSxEbj14bik6QT0tMSwxPT0oMHxBKSl7cD1Ebjtjb250aW51ZSBlfWlmKCgwfGspPj0oMHxhWzQ3NTA5XSkpe3A9MDticmVha31hWzQ3NTA5XT1rLHA9MH19d2hpbGUoMCk7Zm9y''@;'; put 'put ''KDs7KXtpZigoMHxwKT49Myl7Uj0tMTtjb250aW51ZSB0fWlmKDB8KEE9MHxhW0crKDUyKlJ8MCkrNCsocDw8NCkrMTI+PjJdKSYmMT09KDB8YVtBPj4yXSkpYnJlYWs7cD1wKzF8MH1SPShBLSgwfGFbNDc1MTNdKXwwKS81MnwwfWZvcig7QTspQT0wfGFbQSs0Pj4yXSxwPXArMXwwO2lmKE1u''@;'; put 'put ''PTAsc3MoMTE4LDB8cCksQT1NbixNbj0wLDAhPSgwfEEpJjAhPSgwfHhuKT8oKGI9MHxnaSgwfGFbQT4+Ml0sMHxhdCwwfFdlKSl8fHplKDB8QSwwfHhuKSxEbj14bik6Yj0tMSwxIT0oMHxiKSl7Z2U9OTQ7YnJlYWt9cD1Ebn1lbHNlIHA9RG59ZWxzZSBwPURufWVsc2UgcD1Ebn1lbHNlIHA9''@;'; put 'put ''RG47ZWxzZSBwPURufWlmKDQxPT0oMHxnZSkpcD0tMTtlbHNlIGlmKDQ4PT0oMHxnZSkpcD0tMTtlbHNlIGlmKDUzPT0oMHxnZSkpYVtmKzQ+PjJdPTIsYVsocD0wfGFbNDc1MTJdKT4+Ml09YVtjPj4yXSxhW3ArND4+Ml09YVtjKzQ+PjJdLGFbcCs4Pj4yXT1hW2MrOD4+Ml0sYVtwKzEyPj4y''@;'; put 'put ''XT1hW2MrMTI+PjJdLGFbKFdlPXArMTZ8MCk+PjJdPWFbcGU+PjJdLGFbV2UrND4+Ml09YVtwZSs0Pj4yXSxhW1dlKzg+PjJdPWFbcGUrOD4+Ml0sYVtXZSsxMj4+Ml09YVtwZSsxMj4+Ml0sYVtmPj4yXT1wLHA9MDtlbHNlIGlmKDU2PT0oMHxnZSkpYVtmKzQ+PjJdPTIsYVsocD0wfGFbNDc1''@;'; put 'put ''MTJdKT4+Ml09YVtjPj4yXSxhW3ArND4+Ml09YVtjKzQ+PjJdLGFbcCs4Pj4yXT1hW2MrOD4+Ml0sYVtwKzEyPj4yXT1hW2MrMTI+PjJdLGFbKFdlPXArMTZ8MCk+PjJdPWFbcGU+PjJdLGFbV2UrND4+Ml09YVtwZSs0Pj4yXSxhW1dlKzg+PjJdPWFbcGUrOD4+Ml0sYVtXZSsxMj4+Ml09YVtw''@;'; put 'put ''ZSsxMj4+Ml0sYVtmPj4yXT1wLHA9MDtlbHNlIGlmKDk0PT0oMHxnZSkpe2ZvcihhW2YrND4+Ml09cCxBPTB8YVs0NzUxMl07cD1wKy0xfDAsbTspYVsoV2U9QSsocDw8NCl8MCk+PjJdPWFbKHJ0PTB8YVttPj4yXSk+PjJdLGFbV2UrND4+Ml09YVtydCs0Pj4yXSxhW1dlKzg+PjJdPWFbcnQr''@;'; put 'put ''OD4+Ml0sYVtXZSsxMj4+Ml09YVtydCsxMj4+Ml0sbT0wfGFbbSs0Pj4yXTthW2Y+PjJdPUEscD0wfXJldHVybiBGdCgwfGF0KSxsZT1TdCwwfHB9ZnVuY3Rpb24gSmYobCxjLGYpe3ZhciBtLHA9MDtyZXR1cm4gMHwoKHA9KCtfWyhmfD0wKT4+M10tKG09K19bKGN8PTApPj4zXSkpKigrX1s4''@;'; put 'put ''KyhsfD0wKT4+M10tKHA9K19bYys4Pj4zXSkpLSgrX1tsPj4zXS1tKSooK19bZis4Pj4zXS1wKSk+MD8xOnA8MD8yOjMpfWZ1bmN0aW9uIGlBKGwsYyxmLHApe2N8PTA7dmFyIGIsayxNLG09MCxBPTAsdz0wO009MT09KDB8SmYobT0wfGFbYVsoZnw9MCkrKCgoKGx8PTApLTErKHB8PTApfDAp''@;'; put 'put ''JSgwfHApfDApPDwyKT4+Ml0+PjJdLGI9MHxhW2FbZisobDw8Mik+PjJdPj4yXSxBPTB8YVthW2YrKCgobCsxfDApJSgwfHApfDApPDwyKT4+Ml0+PjJdKSksaz0wfGFbYVtmKyhjPDwyKT4+Ml0+PjJdLE0/MT09KDB8SmYoYixrLG0pKT8obT0wfEpmKGssYixBKSxBPTEsdz01KTptPTA6KG09''@;'; put 'put ''MHxKZihiLGssQSksQT0yLHc9NSk7ZTpkb3tpZig1PT0oMHx3KSlpZigoMHxtKT09KDB8QSkpZm9yKG09MDs7KXtpZigoMHxtKT49KDB8cCkpe209MTticmVhayBlfWlmKEE9bSwhKCgwfCh3PSgwfChtPW0rMXwwKSklKDB8cCl8MCkpPT0oMHxjKXwoMHxBKT09KDB8Yyl8KDB8QSk9PSgwfGwp''@;'; put 'put ''fCgwfHcpPT0oMHxsKSkmJjB8dV8oYixrLDB8YVthW2YrKEE8PDIpPj4yXT4+Ml0sMHxhW2FbZisodzw8Mik+PjJdPj4yXSkpe209MDticmVha319ZWxzZSBtPTB9d2hpbGUoMCk7cmV0dXJuIDB8bX1mdW5jdGlvbiBveChsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIEEscD0wLG09MCx3PTA7''@;'; put 'put ''Zm9yKCgwfChwPTB8YVs0NzUwNF0pKTwoMHwobT0wfGFbNDc1MTVdKSk/dz1wOihmdW5jdGlvbiBUbShsKXt2YXIgbSxjPTAsZj0wLHA9MDttPWxlLGxlPWxlKzMyfDAscD1tKzE2fDAsZj1tLCgwfGFbNDc1MTVdKTwoMHwobHw9MCkpJiYoKGM9MHxhWzQ3NTEzXSk/KGY9MHxVYShjLDUyKmx8''@;'; put 'put ''MCksYVs0NzUxM109ZixmfHwoZj0wfGFbMTU3MTJdLGFbcD4+Ml09MTQxODU4LGFbcCs0Pj4yXT01NTgsYVtwKzg+PjJdPTE0MjA0MyxUMChmLDE0MTgzOSxwKSx6ZSgxODk4NTYsMSkpKToocD0wfEYwKDUyKmx8MCksYVs0NzUxM109cCxwfHwocD0wfGFbMTU3MTJdLGFbZj4+Ml09MTQxODU4''@;'; put 'put ''LGFbZis0Pj4yXT01NTIsYVtmKzg+PjJdPTE0MjAyNCxUMChwLDE0MTgzOSxmKSx6ZSgxODk4NTYsMSkpKSxhWzQ3NTE1XT1sKSxsZT1tfShtKzIwfDApLHc9MHxhWzQ3NTA0XSksQT0wfGFbNDc1MTNdLGFbNDc1MDRdPXcrMSxhWyhtPUErKDUyKnd8MCl8MCk+PjJdPTAsYVtBKyg1Mip3fDAp''@;'; put 'put ''KzQ+PjJdPWwsYVtBKyg1Mip3fDApKzg+PjJdPWMsYVtBKyg1Mip3fDApKzE2Pj4yXT0wLGFbQSsoNTIqd3wwKSsyMD4+Ml09YyxhW0ErKDUyKnd8MCkrMjQ+PjJdPWYsYVtBKyg1Mip3fDApKzMyPj4yXT0wLGFbQSsoNTIqd3wwKSszNj4+Ml09ZixhW0ErKDUyKnd8MCkrNDA+PjJdPWwsYVtB''@;'; put 'put ''Kyg1Mip3fDApKzQ4Pj4yXT0wLHA9MDszIT0oMHxwKTspYVtBKyg1Mip3fDApKzQrKHA8PDQpKzg+PjJdPW0scD1wKzF8MH1mdW5jdGlvbiB1XyhsLGMsZixwKXtwfD0wO3ZhciBBLG09MCx3PTAsYj0wO3JldHVybiAzIT0oMHwoQT0wfEpmKGx8PTAsY3w9MCxmfD0wKSkpJiYzIT0oMHwodz0w''@;'; put 'put ''fEpmKGwsYyxwKSkpJiYzIT0oMHwoYj0wfEpmKGYscCxsKSkpJiYzIT0oMHwobT0wfEpmKGYscCxjKSkpPygxPT0oMHxBKV4xPT0oMHx3KSkmKDE9PSgwfGIpXjE9PSgwfG0pKSYxfDA6MD09KDB8YzUobCxjLGYpKSYmMD09KDB8YzUobCxjLHApKSYmMD09KDB8YzUoZixwLGwpKT8wIT0oMHxj''@;'; put 'put ''NShmLHAsYykpfDA6MX1mdW5jdGlvbiBjNShsLGMsZil7dmFyIHAsdyxtPTAsQT0wO3JldHVybiB3PStfWyhjfD0wKT4+M10tKG09K19bKGx8PTApPj4zXSkscD0rX1tjKzg+PjNdLShBPStfW2wrOD4+M10pLG09K19bKGZ8PTApPj4zXS1tLEE9K19bZis4Pj4zXS1BLDB8KDM9PSgwfEpmKGws''@;'; put 'put ''YyxmKSkmJkEqcCttKnc+PTA/QSpBK20qbTw9cCpwK3cqdyYxOjApfWZ1bmN0aW9uIExoKGwsYyl7Y3w9MDt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wO3A9K19bMjQrKGx8PTApPj4zXTtlOmRve2lmKHA8MWUtNyZwPi0xZS03KWw9MHxseChsLGMpO2Vsc2UgZm9yKHc9K19bbCsx''@;'; put 'put ''Nj4+M10vKDMqcCksQT0rX1tsKzg+PjNdL3AsbT13KncscD0yKncqbS13KkErICtfW2w+PjNdL3AsbT0uMzMzMzMzMzMzMzMzMzMzMypBLW0sbSo9bSptKjQsQT1wKnArbSxBPDA/KGI9K1VsKCsgK0QwKCstQSksKy1wKSxwPTIqK1NqKC41KitEMCgrLW0pKSxfW2M+PjNdPXAqK2hhKC4zMzMz''@;'; put 'put ''MzMzMzMzMzMzMzMzKmIpLF9bYys4Pj4zXT0raGEoLjMzMzMzMzMzMzMzMzMzMzMqKGIrNi4yODMxODUzMDcxNzk1ODYpKSpwLHA9K2hhKC4zMzMzMzMzMzMzMzMzMzMzKihiKy02LjI4MzE4NTMwNzE3OTU4NikpKnAsbD0yLGY9Nyk6KGI9LjUqKCtEMCgrQSktcCksbT0rU2ooYikscD0rU2oo''@;'; put 'put ''LXAtYikrbSxfW2M+PjNdPXAsQT4wP2w9MToocCo9LS41LF9bYysxNj4+M109cCxsPTEsZj03KSksNz09KDB8ZikmJihfW2MrKGw8PDMpPj4zXT1wLGw9MyksZj0wOzspe2lmKCgwfGYpPj0oMHxsKSlicmVhayBlO19bKGs9YysoZjw8Myl8MCk+PjNdPStfW2s+PjNdLXcsZj1mKzF8MH19d2hp''@;'; put 'put ''bGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBseChsLGMpe2N8PTA7dmFyIGY9MCxwPTA7Zj0rX1sxNisobHw9MCk+PjNdO2Rve2lmKGY8MWUtNyZmPi0xZS03KWw9MHxmXyhsLGMpO2Vsc2V7aWYoISgoZj0ocD0rX1tsKzg+PjNdLygyKmYpKSpwLStfW2w+PjNdL2YpPDApKXtpZigwPT1mKXtf''@;'; put 'put ''W2M+PjNdPS1wLGw9MTticmVha31mPStEMCgrZiktcCxfW2M+PjNdPWYsX1tjKzg+PjNdPS0yKnAtZixsPTI7YnJlYWt9bD0wfX13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIGZfKGwsYyl7dmFyIGYscDtyZXR1cm4gZj0rX1sobHw9MCk+PjNdLChwPStfW2wrOD4+M10pPDFlLTcmcD4t''@;'; put 'put ''MWUtNz9sPWY8MWUtNyZmPi0xZS03PzQ6MDooX1soY3w9MCk+PjNdPS1mL3AsbD0xKSwwfGx9ZnVuY3Rpb24gaF8obCl7RnQoMHxhWyhsfD0wKT4+Ml0pLEZ0KGwpfWZ1bmN0aW9uIE9kKGwsYyl7Y3w9MDt2YXIgbSxiLGY9MCxwPTAsQT0wLHc9MCxrPTAsTT0wLEQ9MCxSPTA7Zm9yKGY9MHxh''@;'; put 'put ''WzQ3NTE4XSwoMHwoYj0oMyoocD0wfGFbNCsobHw9MCk+PjJdKXwwKS0yfDApKT4oMHxhWzQ3NTE3XSk/KGY9Zj8wfFVhKGYsYjw8NCk6MHxGMChiPDw0KSxhWzQ3NTE4XT1mLGFbNDc1MTddPWIsdz1mLEE9Zik6KHc9ZixBPWYpLGFbdz4+Ml09YVsobT0wfGFbbD4+Ml0pPj4yXSxhW3crND4+''@;'; put 'put ''Ml09YVttKzQ+PjJdLGFbdys4Pj4yXT1hW20rOD4+Ml0sYVt3KzEyPj4yXT1hW20rMTI+PjJdLHIxKHcrMTZ8MCwwfG0sMTYpLHA9cCstMXwwLGY9MSxsPTI7ISgoMHxmKT49KDB8cCkpOylrPXcrKGwrMjw8NCl8MCxNPXcrKGwrMTw8NCl8MCxhWyhSPXcrKGw8PDQpfDApPj4yXT1hWyhEPW0r''@;'; put 'put ''KGY8PDQpfDApPj4yXSxhW1IrND4+Ml09YVtEKzQ+PjJdLGFbUis4Pj4yXT1hW0QrOD4+Ml0sYVtSKzEyPj4yXT1hW0QrMTI+PjJdLHIxKDB8TSwwfEQsMTYpLGFbaz4+Ml09YVtNPj4yXSxhW2srND4+Ml09YVtNKzQ+PjJdLGFbays4Pj4yXT1hW00rOD4+Ml0sYVtrKzEyPj4yXT1hW00rMTI+''@;'; put 'put ''PjJdLGY9ZisxfDAsbD1sKzN8MDthWyhEPXcrKGw8PDQpfDApPj4yXT1hWyhSPW0rKGY8PDQpfDApPj4yXSxhW0QrND4+Ml09YVtSKzQ+PjJdLGFbRCs4Pj4yXT1hW1IrOD4+Ml0sYVtEKzEyPj4yXT1hW1IrMTI+PjJdLHIxKHcrKGwrMTw8NCl8MCwwfFIsMTYpLGFbYys0Pj4yXT1iLGFbYz4+''@;'; put 'put ''Ml09QX1mdW5jdGlvbiBVYyhsLGMsZil7dmFyIG0scD0wO3JldHVybiAwfCgocD0oK19bKGZ8PTApPj4zXS0obT0rX1soY3w9MCk+PjNdKSkqKCtfWzgrKGx8PTApPj4zXS0ocD0rX1tjKzg+PjNdKSktKCtfW2w+PjNdLW0pKigrX1tmKzg+PjNdLXApKT4xZS00PzE6KHA8LTFlLTQpPDwzMT4+''@;'; put 'put ''MzEpfWZ1bmN0aW9uIGY1KGwsYyxmKXtmfD0wO3ZhciBwPTAsbT0wLEE9MDtyZXR1cm4gMSYobD0obT0rX1sobHw9MCk+PjNdKSE9KEE9K19bKGN8PTApPj4zXSk/bTwocD0rX1tmPj4zXSkmcDxBPzE6QTxwP3A8bTowOihBPStfW2wrOD4+M10pPChtPStfW2YrOD4+M10pJm08KHA9K19bYys4''@;'; put 'put ''Pj4zXSk/MTpwPG0/bTxBOjApfDB9ZnVuY3Rpb24gQzYobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIEEsdyxiLGssRCxtPTAsTT0wO0Q9bGUsbGU9bGUrNDh8MCxiPUQrMzJ8MCx3PUQrMTZ8MCxhWyhBPUQpPj4yXT1hWyhsfD0wKT4+Ml0sYVtBKzQ+PjJdPWFbbCs0Pj4yXSxhW0ErOD4+''@;'; put 'put ''Ml09YVtsKzg+PjJdLGFbQSsxMj4+Ml09YVtsKzEyPj4yXSxhW3c+PjJdPWFbYz4+Ml0sYVt3KzQ+PjJdPWFbYys0Pj4yXSxhW3crOD4+Ml09YVtjKzg+PjJdLGFbdysxMj4+Ml09YVtjKzEyPj4yXSxhW2I+PjJdPWFbZj4+Ml0sYVtiKzQ+PjJdPWFbZis0Pj4yXSxhW2IrOD4+Ml09YVtmKzg+''@;'; put 'put ''PjJdLGFbYisxMj4+Ml09YVtmKzEyPj4yXSwwPT0oMHwoaz0wfFVjKEEsdyxiKSkpJiYoYVtBPj4yXT1hW2w+PjJdLGFbQSs0Pj4yXT1hW2wrND4+Ml0sYVtBKzg+PjJdPWFbbCs4Pj4yXSxhW0ErMTI+PjJdPWFbbCsxMj4+Ml0sYVt3Pj4yXT1hW2M+PjJdLGFbdys0Pj4yXT1hW2MrND4+Ml0s''@;'; put 'put ''YVt3Kzg+PjJdPWFbYys4Pj4yXSxhW3crMTI+PjJdPWFbYysxMj4+Ml0sYVtiPj4yXT1hW2Y+PjJdLGFbYis0Pj4yXT1hW2YrND4+Ml0sYVtiKzg+PjJdPWFbZis4Pj4yXSxhW2IrMTI+PjJdPWFbZisxMj4+Ml0sMCE9KDB8ZjUoQSx3LGIpKSk/bT0xOk09Mztkb3tpZigzPT0oMHxNKSl7aWYo''@;'; put 'put ''YVtBPj4yXT1hW2w+PjJdLGFbQSs0Pj4yXT1hW2wrND4+Ml0sYVtBKzg+PjJdPWFbbCs4Pj4yXSxhW0ErMTI+PjJdPWFbbCsxMj4+Ml0sYVt3Pj4yXT1hW2M+PjJdLGFbdys0Pj4yXT1hW2MrND4+Ml0sYVt3Kzg+PjJdPWFbYys4Pj4yXSxhW3crMTI+PjJdPWFbYysxMj4+Ml0sYVtiPj4yXT1h''@;'; put 'put ''W3A+PjJdLGFbYis0Pj4yXT1hW3ArND4+Ml0sYVtiKzg+PjJdPWFbcCs4Pj4yXSxhW2IrMTI+PjJdPWFbcCsxMj4+Ml0sMD09KDB8KG09MHxVYyhBLHcsYikpKSYmKGFbQT4+Ml09YVtsPj4yXSxhW0ErND4+Ml09YVtsKzQ+PjJdLGFbQSs4Pj4yXT1hW2wrOD4+Ml0sYVtBKzEyPj4yXT1hW2wr''@;'; put 'put ''MTI+PjJdLGFbdz4+Ml09YVtjPj4yXSxhW3crND4+Ml09YVtjKzQ+PjJdLGFbdys4Pj4yXT1hW2MrOD4+Ml0sYVt3KzEyPj4yXT1hW2MrMTI+PjJdLGFbYj4+Ml09YVtwPj4yXSxhW2IrND4+Ml09YVtwKzQ+PjJdLGFbYis4Pj4yXT1hW3ArOD4+Ml0sYVtiKzEyPj4yXT1hW3ArMTI+PjJdLDB8''@;'; put 'put ''ZjUoQSx3LGIpKSl7bT0xO2JyZWFrfWFbQT4+Ml09YVtmPj4yXSxhW0ErND4+Ml09YVtmKzQ+PjJdLGFbQSs4Pj4yXT1hW2YrOD4+Ml0sYVtBKzEyPj4yXT1hW2YrMTI+PjJdLGFbdz4+Ml09YVtwPj4yXSxhW3crND4+Ml09YVtwKzQ+PjJdLGFbdys4Pj4yXT1hW3ArOD4+Ml0sYVt3KzEyPj4y''@;'; put 'put ''XT1hW3ArMTI+PjJdLGFbYj4+Ml09YVtsPj4yXSxhW2IrND4+Ml09YVtsKzQ+PjJdLGFbYis4Pj4yXT1hW2wrOD4+Ml0sYVtiKzEyPj4yXT1hW2wrMTI+PjJdLGw9MHxVYyhBLHcsYiksYVtBPj4yXT1hW2Y+PjJdLGFbQSs0Pj4yXT1hW2YrND4+Ml0sYVtBKzg+PjJdPWFbZis4Pj4yXSxhW0Er''@;'; put 'put ''MTI+PjJdPWFbZisxMj4+Ml0sYVt3Pj4yXT1hW3A+PjJdLGFbdys0Pj4yXT1hW3ArND4+Ml0sYVt3Kzg+PjJdPWFbcCs4Pj4yXSxhW3crMTI+PjJdPWFbcCsxMj4+Ml0sYVtiPj4yXT1hW2M+PjJdLGFbYis0Pj4yXT1hW2MrND4+Ml0sYVtiKzg+PjJdPWFbYys4Pj4yXSxhW2IrMTI+PjJdPWFb''@;'; put 'put ''YysxMj4+Ml0sTT0oMHxBcihtLGspKTwwLG09KDB8QXIoMHxVYyhBLHcsYiksbCkpPj4+MzEsbT1NP206MH19d2hpbGUoMCk7cmV0dXJuIGxlPUQsMHxtfWZ1bmN0aW9uIHo0KGwsYyl7dmFyIGYscCxtLEE7cmV0dXJuIGN8PTAscD1sZSxsZT1sZSszMnwwLG09cCsxNnwwLGFbKEE9cCk+PjJd''@;'; put 'put ''PWFbKGx8PTApPj4yXSxhW0ErND4+Ml09YVtsKzQ+PjJdLGFbQSs4Pj4yXT1hW2wrOD4+Ml0sYVtBKzEyPj4yXT1hW2wrMTI+PjJdLGFbbT4+Ml09YVtjPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLGY9K0QwKCsgK2Z1''@;'; put 'put ''bmN0aW9uIGs2KGwsYyl7dmFyIGYscDtyZXR1cm4rKChwPStfWzgrKGx8PTApPj4zXS0rX1s4KyhjfD0wKT4+M10pKnArKGY9K19bbD4+M10tK19bYz4+M10pKmYpfShBLG0pKSxsZT1wLCtmfWZ1bmN0aW9uIFkxKGwsYyxmLHAsbSl7dmFyIEEsdyxiLGssTSxELFI7cmV0dXJuIEE9bGUsbGU9''@;'; put 'put ''bGUrNjR8MCx3PUErNDh8MCxiPUErMzJ8MCxrPUErMTZ8MCxSPShmfD0wKSsoYVsobXw9MCkrKChsfD0wKTw8Mik+PjJdPDw0KXwwLEQ9ZisobDw8NCl8MCxwPWYrKGFbKHB8PTApKyhsPDwyKT4+Ml08PDQpfDAsbT1mKygoY3w9MCk8PDQpfDAsYVsoTT1BKT4+Ml09YVtSPj4yXSxhW00rND4+''@;'; put 'put ''Ml09YVtSKzQ+PjJdLGFbTSs4Pj4yXT1hW1IrOD4+Ml0sYVtNKzEyPj4yXT1hW1IrMTI+PjJdLGFbaz4+Ml09YVtEPj4yXSxhW2srND4+Ml09YVtEKzQ+PjJdLGFbays4Pj4yXT1hW0QrOD4+Ml0sYVtrKzEyPj4yXT1hW0QrMTI+PjJdLGFbYj4+Ml09YVtwPj4yXSxhW2IrND4+Ml09YVtwKzQ+''@;'; put 'put ''PjJdLGFbYis4Pj4yXT1hW3ArOD4+Ml0sYVtiKzEyPj4yXT1hW3ArMTI+PjJdLGFbdz4+Ml09YVttPj4yXSxhW3crND4+Ml09YVttKzQ+PjJdLGFbdys4Pj4yXT1hW20rOD4+Ml0sYVt3KzEyPj4yXT1hW20rMTI+PjJdLG09MHxvQShNLGssYix3KSxsZT1BLDB8bX1mdW5jdGlvbiBkNShsLGMs''@;'; put 'put ''ZixwLG0sQSx3KXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTAsQXw9MCx3fD0wO3ZhciBrLE0sRCxSLHEsYj0wLEc9MCxwZT0wLGdlPTA7Zm9yKHE9bGUsbGU9bGUrNjR8MCxSPXErNDh8MCxEPXErMzJ8MCxNPXErMTZ8MCxrPXEsYj0wOzspe2lmKCgwfGIpPj0oMHxmKSl7Rz00O2JyZWFrfWlm''@;'; put 'put ''KGdlPUErKGI8PDQpfDAscGU9QSsoYVt3KyhiPDwyKT4+Ml08PDQpfDAsYVtrPj4yXT1hW2w+PjJdLGFbays0Pj4yXT1hW2wrND4+Ml0sYVtrKzg+PjJdPWFbbCs4Pj4yXSxhW2srMTI+PjJdPWFbbCsxMj4+Ml0sYVtNPj4yXT1hW2M+PjJdLGFbTSs0Pj4yXT1hW2MrND4+Ml0sYVtNKzg+PjJd''@;'; put 'put ''PWFbYys4Pj4yXSxhW00rMTI+PjJdPWFbYysxMj4+Ml0sYVtEPj4yXT1hW2dlPj4yXSxhW0QrND4+Ml09YVtnZSs0Pj4yXSxhW0QrOD4+Ml09YVtnZSs4Pj4yXSxhW0QrMTI+PjJdPWFbZ2UrMTI+PjJdLGFbUj4+Ml09YVtwZT4+Ml0sYVtSKzQ+PjJdPWFbcGUrND4+Ml0sYVtSKzg+PjJdPWFb''@;'; put 'put ''cGUrOD4+Ml0sYVtSKzEyPj4yXT1hW3BlKzEyPj4yXSwwfEM2KGssTSxELFIpKXtwPTA7YnJlYWt9Yj1iKzF8MH1lOmRve2lmKDQ9PSgwfEcpKWZvcig7Oyl7aWYoKDB8cCk+PSgwfG0pKXtwPTE7YnJlYWsgZX1pZihwZT1BKyhwPDw0KXwwLGdlPUErKGFbdysocDw8Mik+PjJdPDw0KXwwLGFb''@;'; put 'put ''az4+Ml09YVtsPj4yXSxhW2srND4+Ml09YVtsKzQ+PjJdLGFbays4Pj4yXT1hW2wrOD4+Ml0sYVtrKzEyPj4yXT1hW2wrMTI+PjJdLGFbTT4+Ml09YVtjPj4yXSxhW00rND4+Ml09YVtjKzQ+PjJdLGFbTSs4Pj4yXT1hW2MrOD4+Ml0sYVtNKzEyPj4yXT1hW2MrMTI+PjJdLGFbRD4+Ml09YVtw''@;'; put 'put ''ZT4+Ml0sYVtEKzQ+PjJdPWFbcGUrND4+Ml0sYVtEKzg+PjJdPWFbcGUrOD4+Ml0sYVtEKzEyPj4yXT1hW3BlKzEyPj4yXSxhW1I+PjJdPWFbZ2U+PjJdLGFbUis0Pj4yXT1hW2dlKzQ+PjJdLGFbUis4Pj4yXT1hW2dlKzg+PjJdLGFbUisxMj4+Ml09YVtnZSsxMj4+Ml0sMHxDNihrLE0sRCxS''@;'; put 'put ''KSl7cD0wO2JyZWFrfXA9cCsxfDAsRz00fX13aGlsZSgwKTtyZXR1cm4gbGU9cSwwfHB9ZnVuY3Rpb24gb0EobCxjLGYscCl7dmFyIG0sQSx3LGIsaztyZXR1cm4gbHw9MCxjfD0wLGZ8PTAsQT1sZSxsZT1sZSs0OHwwLHc9QSszMnwwLGI9QSsxNnwwLGFbKGs9QSk+PjJdPWFbKHB8PTApPj4y''@;'; put 'put ''XSxhW2srND4+Ml09YVtwKzQ+PjJdLGFbays4Pj4yXT1hW3ArOD4+Ml0sYVtrKzEyPj4yXT1hW3ArMTI+PjJdLGFbYj4+Ml09YVtsPj4yXSxhW2IrND4+Ml09YVtsKzQ+PjJdLGFbYis4Pj4yXT1hW2wrOD4+Ml0sYVtiKzEyPj4yXT1hW2wrMTI+PjJdLGFbdz4+Ml09YVtjPj4yXSxhW3crND4+''@;'; put 'put ''Ml09YVtjKzQ+PjJdLGFbdys4Pj4yXT1hW2MrOD4+Ml0sYVt3KzEyPj4yXT1hW2MrMTI+PjJdLG09MHxVYyhrLGIsdyksYVtrPj4yXT1hW3A+PjJdLGFbays0Pj4yXT1hW3ArND4+Ml0sYVtrKzg+PjJdPWFbcCs4Pj4yXSxhW2srMTI+PjJdPWFbcCsxMj4+Ml0sYVtiPj4yXT1hW2M+PjJdLGFb''@;'; put 'put ''Yis0Pj4yXT1hW2MrND4+Ml0sYVtiKzg+PjJdPWFbYys4Pj4yXSxhW2IrMTI+PjJdPWFbYysxMj4+Ml0sYVt3Pj4yXT1hW2Y+PjJdLGFbdys0Pj4yXT1hW2YrND4+Ml0sYVt3Kzg+PjJdPWFbZis4Pj4yXSxhW3crMTI+PjJdPWFbZisxMj4+Ml0scD0wfFVjKGssYix3KSxhW2s+PjJdPWFbbD4+''@;'; put 'put ''Ml0sYVtrKzQ+PjJdPWFbbCs0Pj4yXSxhW2srOD4+Ml09YVtsKzg+PjJdLGFbaysxMj4+Ml09YVtsKzEyPj4yXSxhW2I+PjJdPWFbYz4+Ml0sYVtiKzQ+PjJdPWFbYys0Pj4yXSxhW2IrOD4+Ml09YVtjKzg+PjJdLGFbYisxMj4+Ml09YVtjKzEyPj4yXSxhW3c+PjJdPWFbZj4+Ml0sYVt3KzQ+''@;'; put 'put ''PjJdPWFbZis0Pj4yXSxhW3crOD4+Ml09YVtmKzg+PjJdLGFbdysxMj4+Ml09YVtmKzEyPj4yXSxmPSgwfFVjKGssYix3KSk+MCxsZT1BLChmP3B8bTpwJm0pPj4+MzFeMXwwfWZ1bmN0aW9uIGRfKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIEEsdyxiLGssTSxELFIsRyxxLHBlLGdlLHA9MCxtPTAs''@;'; put 'put ''YmU9MCxPZT0wO2ZvcihnZT1sZSxsZT1sZSs4MHwwLGI9Z2UrNjR8MCx3PWdlKzQ4fDAsQT1nZSszMnwwLGs9Z2UrMTZ8MCxSPWdlLHE9MHxhWzgrKGx8PTApPj4yXSxwZT0wfGFbbCsxNj4+Ml0sTT0wfGFbbCsyMD4+Ml0sRD0wfEYwKDE2KygoRz0wfGFbbCs0Pj4yXSk8PDMpfDApLC0yMjIy''@;'; put 'put ''PT0oMHxjKSYmKGFbYj4+Ml09YVtmPj4yXSxhW2IrND4+Ml09YVtmKzQ+PjJdLGFbYis4Pj4yXT1hW2YrOD4+Ml0sYVtiKzEyPj4yXT1hW2YrMTI+PjJdLGM9MHxmdW5jdGlvbiBwXyhsLGMpe2N8PTA7dmFyIHAsbSx3LGIsayxNLEQsZj0wLEE9MCxSPTAsRz0wO2ZvcihEPWxlLGxlPWxlKzMy''@;'; put 'put ''fDAsbT1EKzh8MCxwPUQsYj04KyhsfD0wKXwwLGs9bCsxMnwwLE09NCsodz1EKzI0fDApfDAsZj0wOzspe2lmKCgwfGYpPj0oMHxhW2w+PjJdKSl7Zj0tMTExMTticmVha31pZihhW3c+PjJdPSgwfGFbYj4+Ml0pKygoUj0wfGFbKEc9MHxhW2s+PjJdKSsoZjw8Mik+PjJdKTw8NCksYVtNPj4y''@;'; put 'put ''XT0oMHxhW0crKChBPWYrMXwwKTw8Mik+PjJdKS1SLGFbcD4+Ml09YVt3Pj4yXSxhW3ArND4+Ml09YVt3KzQ+PjJdLGFbbT4+Ml09YVtjPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLDB8XzYocCxtKSlicmVhaztmPUF9''@;'; put 'put ''cmV0dXJuIGxlPUQsMHxmfShsLGIpKSwoMHxjKT4tMT8obT0wfGFbKGw9MHxhW2wrMTI+PjJdKSsoYysxPDwyKT4+Ml0sbD0wfGFbbCsoYzw8Mik+PjJdKToobT1HLGw9RyksYz0wOzspe2lmKCgwfGMpPj0oMHxsKSl7Yz1sO2JyZWFrfWFbUj4+Ml09YVsoT2U9cSsoYzw8NCl8MCk+PjJdLGFb''@;'; put 'put ''Uis0Pj4yXT1hW09lKzQ+PjJdLGFbUis4Pj4yXT1hW09lKzg+PjJdLGFbUisxMj4+Ml09YVtPZSsxMj4+Ml0sYmU9cSsoYVtwZSsoYzw8Mik+PjJdPDw0KXwwLGFbaz4+Ml09YVsoT2U9cSsoYVtNKyhjPDwyKT4+Ml08PDQpfDApPj4yXSxhW2srND4+Ml09YVtPZSs0Pj4yXSxhW2srOD4+Ml09''@;'; put 'put ''YVtPZSs4Pj4yXSxhW2srMTI+PjJdPWFbT2UrMTI+PjJdLGFbQT4+Ml09YVtSPj4yXSxhW0ErND4+Ml09YVtSKzQ+PjJdLGFbQSs4Pj4yXT1hW1IrOD4+Ml0sYVtBKzEyPj4yXT1hW1IrMTI+PjJdLGFbdz4+Ml09YVtiZT4+Ml0sYVt3KzQ+PjJdPWFbYmUrND4+Ml0sYVt3Kzg+PjJdPWFbYmUr''@;'; put 'put ''OD4+Ml0sYVt3KzEyPj4yXT1hW2JlKzEyPj4yXSxhW2I+PjJdPWFbZj4+Ml0sYVtiKzQ+PjJdPWFbZis0Pj4yXSxhW2IrOD4+Ml09YVtmKzg+PjJdLGFbYisxMj4+Ml09YVtmKzEyPj4yXSwwIT0oMHxvQShrLEEsdyxiKSkmJihhW3c+PjJdPWFbZj4+Ml0sYVt3KzQ+PjJdPWFbZis0Pj4yXSxh''@;'; put 'put ''W3crOD4+Ml09YVtmKzg+PjJdLGFbdysxMj4+Ml09YVtmKzEyPj4yXSxhW2I+PjJdPWFbUj4+Ml0sYVtiKzQ+PjJdPWFbUis0Pj4yXSxhW2IrOD4+Ml09YVtSKzg+PjJdLGFbYisxMj4+Ml09YVtSKzEyPj4yXSwwIT0oMHxkNSh3LGIsbCxtLEcscSxwZSkpKT8oYVt3Pj4yXT1hW2Y+PjJdLGFb''@;'; put 'put ''dys0Pj4yXT1hW2YrND4+Ml0sYVt3Kzg+PjJdPWFbZis4Pj4yXSxhW3crMTI+PjJdPWFbZisxMj4+Ml0sYVtiPj4yXT1hW1I+PjJdLGFbYis0Pj4yXT1hW1IrND4+Ml0sYVtiKzg+PjJdPWFbUis4Pj4yXSxhW2IrMTI+PjJdPWFbUisxMj4+Ml0scD0rejQodyxiKSk6cD0wLF9bRCsoYzw8Myk+''@;'; put 'put ''PjNdPXAsYz1jKzF8MH1mb3IoOzspe2lmKCgwfGMpPj0oMHxtKSl7Yz1tO2JyZWFrfV9bRCsoYzw8Myk+PjNdPTAsYz1jKzF8MH1mb3IoOyEoKDB8Yyk+PSgwfEcpKTspYVtSPj4yXT1hWyhiZT1xKyhjPDw0KXwwKT4+Ml0sYVtSKzQ+PjJdPWFbYmUrND4+Ml0sYVtSKzg+PjJdPWFbYmUrOD4+''@;'; put 'put ''Ml0sYVtSKzEyPj4yXT1hW2JlKzEyPj4yXSxPZT1xKyhhW3BlKyhjPDwyKT4+Ml08PDQpfDAsYVtrPj4yXT1hWyhiZT1xKyhhW00rKGM8PDIpPj4yXTw8NCl8MCk+PjJdLGFbays0Pj4yXT1hW2JlKzQ+PjJdLGFbays4Pj4yXT1hW2JlKzg+PjJdLGFbaysxMj4+Ml09YVtiZSsxMj4+Ml0sYVtB''@;'; put 'put ''Pj4yXT1hW1I+PjJdLGFbQSs0Pj4yXT1hW1IrND4+Ml0sYVtBKzg+PjJdPWFbUis4Pj4yXSxhW0ErMTI+PjJdPWFbUisxMj4+Ml0sYVt3Pj4yXT1hW09lPj4yXSxhW3crND4+Ml09YVtPZSs0Pj4yXSxhW3crOD4+Ml09YVtPZSs4Pj4yXSxhW3crMTI+PjJdPWFbT2UrMTI+PjJdLGFbYj4+Ml09''@;'; put 'put ''YVtmPj4yXSxhW2IrND4+Ml09YVtmKzQ+PjJdLGFbYis4Pj4yXT1hW2YrOD4+Ml0sYVtiKzEyPj4yXT1hW2YrMTI+PjJdLDAhPSgwfG9BKGssQSx3LGIpKSYmKGFbdz4+Ml09YVtmPj4yXSxhW3crND4+Ml09YVtmKzQ+PjJdLGFbdys4Pj4yXT1hW2YrOD4+Ml0sYVt3KzEyPj4yXT1hW2YrMTI+''@;'; put 'put ''PjJdLGFbYj4+Ml09YVtSPj4yXSxhW2IrND4+Ml09YVtSKzQ+PjJdLGFbYis4Pj4yXT1hW1IrOD4+Ml0sYVtiKzEyPj4yXT1hW1IrMTI+PjJdLDAhPSgwfGQ1KHcsYixsLG0sRyxxLHBlKSkpPyhhW3c+PjJdPWFbZj4+Ml0sYVt3KzQ+PjJdPWFbZis0Pj4yXSxhW3crOD4+Ml09YVtmKzg+PjJd''@;'; put 'put ''LGFbdysxMj4+Ml09YVtmKzEyPj4yXSxhW2I+PjJdPWFbUj4+Ml0sYVtiKzQ+PjJdPWFbUis0Pj4yXSxhW2IrOD4+Ml09YVtSKzg+PjJdLGFbYisxMj4+Ml09YVtSKzEyPj4yXSxwPSt6NCh3LGIpKTpwPTAsX1tEKyhjPDwzKT4+M109cCxjPWMrMXwwO3JldHVybiBfW0QrKEc8PDMpPj4zXT0w''@;'; put 'put ''LF9bRCsoRysxPDwzKT4+M109MCxsZT1nZSwwfER9ZnVuY3Rpb24gdkcobCl7dmFyIGM7cmV0dXJuIDB8KGM9MHxfb1s2MyZhWyhsfD0wKT4+Ml1dKDE4OCkpJiYoYUEoYys4MHwwLGwpLGFBKGMrMTA0fDAsbCksQmQoYyxsKSxCZChjKzIwfDAsbCksQmQoYys0MHwwLGwpLEJkKGMrNjB8MCxs''@;'; put 'put ''KSxmZVtjKzEzMT4+MF09MCxCZChjKzEzMnwwLGwpLGFbYysxNTI+PjJdPTAsYVtjKzE1Nj4+Ml09MCxmZVtjKzE2MD4+MF09MCxhWyhsPWMrMTY0fDApPj4yXT0wLGFbbCs0Pj4yXT0wLGFbbCs4Pj4yXT0wLGFbbCsxMj4+Ml09MCxhW2wrMTY+PjJdPTAsYVtsKzIwPj4yXT0wLGZlW2MrMTI4''@;'; put 'put ''Pj4wXT0xLGZlW2MrMTI5Pj4wXT0wLGZlW2MrMTMwPj4wXT0wKSwwfGN9ZnVuY3Rpb24gYUEobCxjKXtjfD0wLGFbKGx8PTApPj4yXT0wLGFbbCs0Pj4yXT0wLGFbbCs4Pj4yXT0wLGFbbCsxMj4+Ml09MCxhW2wrMTY+PjJdPTAsYVtsKzIwPj4yXT1jfWZ1bmN0aW9uIHZfKGwsYyl7Y3w9MDt2''@;'; put 'put ''YXIgZixwPTAsbT0wO2FbMjc2KyhsfD0wKT4+Ml09NTYsZnVuY3Rpb24gcUsobCl7YVsobHw9MCk+PjJdPTE1LGFbbCsxNj4+Ml09MSxhW2wrMTI+PjJdPTAsYVtsKzIwPj4yXT0wfShsKzI1MnwwKSwwfGMmJihhW2wrMjI4Pj4yXT0wfGZ1bmN0aW9uIFlCKGwsYyl7bHw9MCxjfD0wO3ZhciBm''@;'; put 'put ''PTAscD0wO2Y9MDtkb3twPWYsZj1mKzF8MH13aGlsZSgwIT0oMHxmZVtsK3A+PjBdKSk7cmV0dXJuKGM9MHxfb1s2MyZhW2M+PjJdXShmKSk/Z28oMHxjLDB8bCwwfGYpOmM9MCwwfGN9KGMsbCsxMnwwKSksYVtsKzM1Nj4+Ml09MCxVSyhsKzE0OHwwLGwrMTQ0fDAsMCksYVtsPj4yXT0wLGFb''@;'; put 'put ''bCs0Pj4yXT0wLGM9bCsxMTZ8MCxtPTY0KyhwPWwrNTJ8MCl8MDtkb3thW3A+PjJdPTAscD1wKzR8MH13aGlsZSgoMHxwKTwoMHxtKSk7YVtjPj4yXT1sLGFbbCsxMjA+PjJdPTAsYVsoYz1sKzEyOHwwKT4+Ml09MCxhW2MrND4+Ml09MCxhW2MrOD4+Ml09MCxhW2MrMTI+PjJdPTAsYVtsKzI0''@;'; put 'put ''Pj4yXT1jPTB8YVtsKzg+PjJdLGFbbCsyOD4+Ml09YyxhW2wrMzY+PjJdPTAsYVtsKzQwPj4yXT0wLGM9bCszMTJ8MCxhWyhwPWwrNDA0fDApPj4yXT0wLGFbcCs0Pj4yXT0wLGY9bCszMDR8MCxhWyhwPWwrMjgwfDApPj4yXT0wLGFbcCs0Pj4yXT0wLGFbcCs4Pj4yXT0wLGFbcCsxMj4+Ml09''@;'; put 'put ''MCxhW3ArMTY+PjJdPTAsbT0ocD1jKSszNnwwO2Rve2FbcD4+Ml09MCxwPXArNHwwfXdoaWxlKCgwfHApPCgwfG0pKTtpdFtjKzM2Pj4xXT0wLGZlW2Y+PjBdPTEsYVtsKzMwOD4+Ml09MCxhW2wrMzYwPj4yXT0wLGFbbCszNjg+PjJdPTAsYVtsKzM4MD4+Ml09MCxhW2wrMjM2Pj4yXT0wLGFb''@;'; put 'put ''bCsyNDg+PjJdPTAsYVtsKzI0MD4+Ml09MCxhW2wrNDcyPj4yXT0wLGFbbCs0NzY+PjJdPTAsZmVbbCs0ODQ+PjBdPTAsZmVbbCs0ODU+PjBdPTAsYVtsKzQ4OD4+Ml09MCxhW2wrNDkyPj4yXT0wfWZ1bmN0aW9uIEFfKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wO2lmKDB8KGx8PTApKXtm''@;'; put 'put ''b3IoZj1sKzM2NHwwLG09bCsyMHwwLGM9MHxhW2wrMzYwPj4yXTs7KXtpZighYyl7aWYoIShjPTB8YVtmPj4yXSkpYnJlYWs7YVtmPj4yXT0wfUE9MHxhW2M+PjJdLENvWzEyNyZhW20+PjJdXSgwfGFbYyszNj4+Ml0pLGxBKDB8YVtjKzQ0Pj4yXSxsKSxDb1sxMjcmYVttPj4yXV0oYyksYz1B''@;'; put 'put ''fWZvcihmPWwrMzAwfDAsYz0wfGFbbCsyOTY+PjJdOzspe2lmKCFjKXtpZighKGM9MHxhW2Y+PjJdKSlicmVhazthW2Y+PjJdPTB9QT0wfGFbYys4Pj4yXSxDb1sxMjcmYVttPj4yXV0oYyksYz1BfWxBKDB8YVtsKzM3Mj4+Ml0sbCksbEEoMHxhW2wrMzY4Pj4yXSxsKSxJbShsKzQxMnwwKSxJ''@;'; put 'put ''bShsKzQzNnwwKSxjPWwrMTJ8MCxDb1sxMjcmYVttPj4yXV0oMHxhW2wrMjI4Pj4yXSksMD09KDB8ZmVbbCs0ODQ+PjBdKSYmMHwocD0wfGFbbCszNTI+PjJdKSYmZnVuY3Rpb24gV0IobCxjLGYpe2N8PTAsZnw9MDt2YXIgbSxBLHcscD0wO2Zvcih3PWxlLGxlPWxlKzE2fDAsZWMobT13LEE9''@;'; put 'put ''MjArKGx8PTApfDApLGY9Zis4fDA7cD0wfERtKG0pOykhKDB8YVtwKzE2Pj4yXSl8fENvWzEyNyZhW2Y+PjJdXSgwfGFbcCsyMD4+Ml0pO0xtKGwpLExtKGwrMTMyfDApLExtKEEpLExtKGwrNDB8MCksTG0obCs2MHwwKSxJbShsKzgwfDApLEltKGwrMTA0fDApLGM8PDI0Pj4yNCYmKENvWzEy''@;'; put 'put ''NyZhW2Y+PjJdXSgwfGFbbCsxODQ+PjJdKSxDb1sxMjcmYVtmPj4yXV0oMHxhW2wrMTY0Pj4yXSkpLENvWzEyNyZhW2Y+PjJdXShsKSxsZT13fShwLDA9PSgwfGFbbCs0NzI+PjJdKSYxLGMpLENvWzEyNyZhW20+PjJdXSgwfGFbbCszODg+PjJdKSxDb1sxMjcmYVttPj4yXV0oMHxhW2wrNDYw''@;'; put 'put ''Pj4yXSksQ29bMTI3JmFbbT4+Ml1dKDB8YVtsKzg+PjJdKSxDb1sxMjcmYVttPj4yXV0oMHxhW2wrNDQ+PjJdKSxDb1sxMjcmYVttPj4yXV0oMHxhW2wrMzkyPj4yXSksQ29bMTI3JmFbbT4+Ml1dKDB8YVtsKzIzNj4+Ml0pLDB8KGM9MHxhW2wrMjQ4Pj4yXSkmJkNvWzEyNyZjXSgwfGFbbCsy''@;'; put 'put ''NDA+PjJdKSxDb1sxMjcmYVttPj4yXV0obCl9fWZ1bmN0aW9uIGxBKGwsYyl7bHw9MDt2YXIgZj0wO2ZvcihjPTIwKyhjfD0wKXwwO2w7KWY9MHxhW2wrND4+Ml0sQ29bMTI3JmFbYz4+Ml1dKDB8YVtsKzE2Pj4yXSksQ29bMTI3JmFbYz4+Ml1dKGwpLGw9Zn1mdW5jdGlvbiBJbShsKXt2YXIg''@;'; put 'put ''ZixjPTAscD0wO2ZvcihmPTIwKyhsfD0wKXwwLGM9MHxhW2w+PjJdO2M7KXA9MHxhW2M+PjJdLENvWzEyNyZhWzgrKDB8YVtmPj4yXSk+PjJdXShjKSxjPXA7Zm9yKGM9MHxhW2wrND4+Ml07YzspcD0wfGFbYz4+Ml0sQ29bMTI3JmFbOCsoMHxhW2Y+PjJdKT4+Ml1dKGMpLGM9cH1mdW5jdGlv''@;'; put 'put ''biBlYyhsLGMpe3ZhciBmO2FbKGx8PTApPj4yXT1mPTB8YVsoY3w9MCk+PjJdLGFbbCs0Pj4yXT1mKyhhW2MrOD4+Ml08PDIpfWZ1bmN0aW9uIERtKGwpe3ZhciBmLGM9MCxwPTA7Zj0wfGFbNCsobHw9MCk+PjJdLHA9MHxhW2w+PjJdO2Rve2lmKCgwfHApPT0oMHxmKSl7Yz0wO2JyZWFrfWM9''@;'; put 'put ''cCxhW2w+PjJdPXA9cCs0fDAsYz0wfGFbYz4+Ml19d2hpbGUoISgwfGMpKTtyZXR1cm4gMHxjfWZ1bmN0aW9uIExtKGwpe3ZhciBmLHAsYz0wLG09MCxBPTA7Zm9yKGY9OCsobHw9MCl8MCxwPWwrMTZ8MCxjPTA7bT0wfGFbOCsoMHxhW3A+PjJdKT4+Ml0sQT0wfGFbbD4+Ml0sIShjPj4+MD49''@;'; put 'put ''KDB8YVtmPj4yXSk+Pj4wKTspQ29bMTI3Jm1dKDB8YVtBKyhjPDwyKT4+Ml0pLGM9YysxfDA7Q29bMTI3Jm1dKEEpfWZ1bmN0aW9uIHNBKGwsYyxmLHApe2x8PTAsZnw9MCxwfD0wO3ZhciBtLEEsYix3PTA7cmV0dXJuIG09bGUsbGU9bGUrMTZ8MCxhWyhBPW0pPj4yXT1jfD0wLHc9MHxxMFsx''@;'; put 'put ''MjcmYVsodz0wfGFbKGI9bCsxNDR8MCk+PjJdKT4+Ml1dKHcsYyxmLEEpLHA9MHx1QShsLDB8YVtiPj4yXSxjLGYsdywwfGFbQT4+Ml0scCwwPT0oMHxmZVtsKzQ4MD4+MF0pJjEpLGxlPW0sMHxwfWZ1bmN0aW9uIHVBKGwsYyxmLHAsbSxBLHcsYil7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0w''@;'; put 'put ''LHd8PTAsYnw9MDt2YXIgcSxwZSxnZSxiZSxPZSxMZSxSZSxIZSxWZSxxZSxydCxXZSxhdCxTdCxrdCxzdCxFdCxadCxjdCxidCxhbixTbixIbix1cixIcixFcixmcixEcixKcixMcixsMCxWaSxPaSxSbyxsbyxUYSxaYSxnYSx4aSxEbCxvcyxvbCxMMCx4YSx6MixHMixGZixQYSxXMixxYSxF''@;'; put 'put ''cCxoYyx0ZixxMSx4cCxCTCxnOCxkdixtOCxhcSxrPTAsTT0wLEQ9MCxSPTAsRz0wLHYxPTAsX3M9MCwkaj0wLGZ3PTAsc1M9MCx1Uz0wLGNTPTAsTGw9MCxDZmU9MCxvcT0wO2FxPWxlLGxlPWxlKzE2fDAsYVsoTGw9YXEpPj4yXT1BfD0wLCgwfGFbKHBlPWwrMTQ0fDApPj4yXSk9PSgwfGMp''@;'; put 'put ''PyhSPWwrMjg0fDAsRz1sKzI4OHwwLHYxPWwrMjk2fDApOihSPUc9MHxhWyh2MT1sKzI5NnwwKT4+Ml0sRz1HKzR8MCksZ2U9Yjw8MjQ+PjI0IT0wLEVwPWwrMjUyfDAsYmU9bCs4MHwwLE9lPWwrNDc2fDAsTGU9bCs4NHwwLFJlPWwrMzIwfDAsSGU9bCs0MTJ8MCxWZT1sKzMxNnwwLHFlPWwr''@;'; put 'put ''NDI0fDAscnQ9bCs0Mjh8MCxXZT1sKzMyNHwwLGhjPWwrNHwwLGF0PWwrNDg1fDAsU3Q9MTMyKyhxPTB8YVtsKzM1Mj4+Ml0pfDAsa3Q9bCszMTJ8MCx0Zj1xKzEyOXwwLHN0PXErMTI4fDAsRXQ9cSs4MHwwLFp0PXErOTJ8MCxjdD1xKzk2fDAsYnQ9bCsxMzZ8MCxhbj1sKzg4fDAsU249bCs0''@;'; put 'put ''ODh8MCxxMT1sKzExMnwwLHhwPXErMTMxfDAsQkw9bCsxMTZ8MCxnOD1xKzEzMHwwLGR2PWwrMTA4fDAsbTg9bCszNTZ8MCxIbj1sKzM0MHwwLHVyPWwrMTMyfDAsSHI9bCszNDR8MCxFcj1sKzM0OHwwLGZyPWwrMzI4fDAsRHI9bCszNDl8MCxKcj1sKzQyMHwwLExyPXErMTIwfDAsbDA9cSsx''@;'; put 'put ''MTZ8MCxWaT1sKzkyfDAsT2k9bCs0NzJ8MCxSbz1sKzMzNnwwLGxvPWwrMzMyfDAsVGE9bCs5NnwwLFphPWwrMjU2fDAsZ2E9bCs0NjR8MCx4aT1sKzQ2MHwwLERsPXErMTYwfDAsb3M9cSsxODR8MCxvbD1xKzE4MHwwLEwwPXErMTY0fDAseGE9bCsxMjh8MCx6Mj1sKzEyfDAsRzI9bCsxNnww''@;'; put 'put ''LEZmPWwrMjY4fDAsUGE9bCsxMjB8MCxXMj1xKzE3NnwwLHFhPXErMTY4fDAsRD1jLE09ZixjPW07ZTpmb3IoOzspe2FbUj4+Ml09TSxhW0c+PjJdPWY9MHxhW0xsPj4yXSxBPWY7dDpkb3tpZigoMHxjKTwxKXtpZihnZSYwIT0oMHxjKSl7az03O2JyZWFrIGV9c3dpdGNoKDB8Yyl7Y2FzZS0x''@;'; put 'put ''OkE9NSxrPTI4MDticmVhayBlO2Nhc2UgMDprPTk7YnJlYWsgZTtjYXNlLTI6QT02O2JyZWFrIGU7Y2FzZS00Oms9MTA7YnJlYWsgZTtjYXNlLTE1OmM9MTU7YnJlYWsgdH1hW0xsPj4yXT1wLGM9MC1jfDAsQT1wfX13aGlsZSgwKTttPTB8UjJbMTI3JmFbRXA+PjJdXShFcCxjLE0sQSxEKTt0''@;'; put 'put ''OmRve3N3aXRjaCgwfG0pe2Nhc2UgMjprPTU4O2JyZWFrIGU7Y2FzZS0xOms9MTg0O2JyZWFrIGU7Y2FzZSAxOmlmKDB8KEE9MHx1eChsLDAsTSwwfGFbTGw+PjJdKSkpe2s9MjgwO2JyZWFrIGV9QT0wfGFbcGU+PjJdO2JyZWFrO2Nhc2UgNDppZigwfGFbTGU+PjJdKXtpZihrPTB8YjIoSGUs''@;'; put 'put ''RCxNLDB8YVtMbD4+Ml0pLGFbVmU+PjJdPWssIWspe0E9MSxrPTI4MDticmVhayBlfWFbcnQ+PjJdPWFbcWU+PjJdLGFbV2U+PjJdPTAsQT0wfWVsc2UgQT0xO2FbUmU+PjJdPTAsaz0yNzQ7YnJlYWs7Y2FzZSA3OihBPTB8YVtMZT4+Ml0pPyhwOFsxNSZBXSgwfGFbaGM+PjJdLDB8YVtWZT4+''@;'; put 'put ''Ml0sMHxhW1JlPj4yXSwwfGFbV2U+PjJdLDEpLGFbVmU+PjJdPTAsQ2YoSGUpLEE9RCk6az0yNzU7YnJlYWs7Y2FzZSA1NzppZigwfChBPTB8dXgobCwxLE0sMHxhW0xsPj4yXSkpKXtrPTI4MDticmVhayBlfUE9MHxhW3BlPj4yXTticmVhaztjYXNlIDY6aWYoZmVbYXQ+PjBdPTAsaz0wfF8x''@;'; put 'put ''KGwsU3QsNzUzOTUsMzYpLGFba3Q+PjJdPWssIWspe0E9MSxrPTI4MDticmVhayBlfWlmKGZlW3RmPj4wXT0xLDB8YVtMZT4+Ml0pe2lmKCEoMHxxMFsxMjcmYVtEKzUyPj4yXV0oRCxNLDB8YVtMbD4+Ml0sUikpKXtBPTMyLGs9MjgwO2JyZWFrIGV9aWYoIShBPTB8YjIoSGUsRCxNKyhBPTB8''@;'; put 'put ''YVtEKzY0Pj4yXSl8MCwwLUErKDB8YVtMbD4+Ml0pfDApKSl7QT0xLGs9MjgwO2JyZWFrIGV9Y0EoQSksYVtydD4+Ml09YVtxZT4+Ml0sYVtXZT4+Ml09QSxBPTAsaz0zNH1lbHNlIGs9MzM7YnJlYWs7Y2FzZSAxNDprPTMzO2JyZWFrO2Nhc2UgODppZigoQT0wfGFbVmU+PjJdKT8ocDhbMTUm''@;'; put 'put ''YVtMZT4+Ml1dKDB8YVtoYz4+Ml0sQSwwfGFbUmU+PjJdLDB8YVtXZT4+Ml0sMCksQ2YoSGUpLEE9MCk6QT0xLDAhPSgwfGFbUmU+PjJdKXx8MHxmZVthdD4+MF0pe2Y9MHxmZVt0Zj4+MF0sZmVbdGY+PjBdPTE7ZG97aWYoMHxhW1NuPj4yXSYmMHxhW3ExPj4yXSl7aWYoIShtPTB8XzEobCxT''@;'; put 'put ''dCw3NTM5NSwzNikpKXtBPTEsaz0yODA7YnJlYWsgZX1pZigwfGZlW2F0Pj4wXT9hWyhjPW0rMjB8MCk+PjJdPWFbbTg+PjJdOmM9bSsyMHwwLGZlW3hwPj4wXT0wLCEoMHxSMlsxMjcmYVtxMT4+Ml1dKDB8YVtCTD4+Ml0sMCwwfGFbYz4+Ml0sMHxhW20rMTY+PjJdLDB8YVttKzI0Pj4yXSkp''@;'; put 'put ''KXtBPTIxLGs9MjgwO2JyZWFrIGV9aWYoISgwfGZlW3hwPj4wXSkpe2lmKDB8YVtSZT4+Ml0pYnJlYWs7ZmVbdGY+PjBdPWY7YnJlYWt9aWYoMD09KDB8ZmVbZzg+PjBdKSYmMHwoX3M9MHxhW2R2Pj4yXSkmJjA9PSgwfF9vWzYzJl9zXSgwfGFbaGM+PjJdKSkpe0E9MjIsaz0yODA7YnJlYWsg''@;'; put 'put ''ZX19fXdoaWxlKDApO2ZlW2F0Pj4wXT0wfShjPTB8YVthbj4+Ml0pPyhDb1sxMjcmY10oMHxhW2hjPj4yXSksQT1EKTprPTI3NDticmVhaztjYXNlIDM0OmlmKGs9MHxPbShsLEQsTSwwfGFbTGw+PjJdKSxhW0huPj4yXT1rLCFrKXtBPTEsaz0yODA7YnJlYWsgZX1rPTgwO2JyZWFrO2Nhc2Ug''@;'; put 'put ''MjI6aWYoaz0wfGJfKGwsRCxNLDB8YVtMbD4+Ml0pLGFbSHI+PjJdPWssIWspe0E9MSxrPTI4MDticmVhayBlfWZlW0VyPj4wXT0wLGFbZnI+PjJdPTAsZmVbRHI+PjBdPTAsaz04MDticmVhaztjYXNlIDIzOmZlW0VyPj4wXT0xLGFbZnI+PjJdPTE0MjE4OCxrPTgwO2JyZWFrO2Nhc2UgMjQ6''@;'; put 'put ''ZmVbRHI+PjBdPTEsYVtmcj4+Ml09MTQyMTk0LGs9ODA7YnJlYWs7Y2FzZSAyNTphW2ZyPj4yXT0xNDIxOTcsaz04MDticmVhaztjYXNlIDI2OmFbZnI+PjJdPTE0MjIwMyxrPTgwO2JyZWFrO2Nhc2UgMjc6YVtmcj4+Ml09MTQyMjEwLGs9ODA7YnJlYWs7Y2FzZSAyODphW2ZyPj4yXT0xNDIy''@;'; put 'put ''MTcsaz04MDticmVhaztjYXNlIDI5OmFbZnI+PjJdPTE0MjIyNixrPTgwO2JyZWFrO2Nhc2UgMzA6YVtmcj4+Ml09MTQyMjM0LGs9ODA7YnJlYWs7Y2FzZSAzMjpjYXNlIDMxOmlmKDAhPSgwfGZlW3N0Pj4wXSkmJjAhPSgwfGFbdXI+PjJdKSl7aWYoISgwfGN4KEhlLDA9PSgwfGFbZnI+PjJd''@;'; put 'put ''KT8zMj09KDB8bSk/MTQyMjQzOjE0MjI1MzoxNDIyNTUpKSl7QT0xLGs9MjgwO2JyZWFrIGV9aWYoISgwfGZBKEhlLEQsTSwwfGFbTGw+PjJdKSkpe0E9MSxrPTI4MDticmVhayBlfWFbZnI+PjJdPWFbcnQ+PjJdLEE9RH1lbHNlIGs9Mjc1O2JyZWFrO2Nhc2UgMzY6Y2FzZSAzNTppZigwfGZl''@;'; put 'put ''W3N0Pj4wXSl7aWYoISgwfE9oKDB8YVtIbj4+Ml0sMHxhW0hyPj4yXSwwfGZlW0VyPj4wXSwwfGZlW0RyPj4wXSwwLGwpKSl7QT0xLGs9MjgwO2JyZWFrIGV9aWYoMCE9KDB8YVt1cj4+Ml0pJiYwIT0oMHwoJGo9MHxhW2ZyPj4yXSkpKXtzd2l0Y2goMHxmZVskaj4+MF0pe2Nhc2UgNDA6az05''@;'; put 'put ''MzticmVhaztjYXNlIDc4Ojc5PT0oMHxmZVskaisxPj4wXSkmJihrPTkzKX1pZig5Mz09KDB8aykpe2lmKGs9MCwoMHwoQT0wfGFbcWU+PjJdKSk9PSgwfGFbSnI+PjJdKSl7aWYoISgoMHx2bChIZSkpPDwyND4+MjQpKXtBPTEsaz0yODA7YnJlYWsgZX1BPTB8YVtxZT4+Ml19aWYoYVtxZT4+''@;'; put 'put ''Ml09QSsxLGZlW0E+PjBdPTQxLCgwfChBPTB8YVtxZT4+Ml0pKT09KDB8YVtKcj4+Ml0pKXtpZighKCgwfHZsKEhlKSk8PDI0Pj4yNCkpe0E9MSxrPTI4MDticmVhayBlfUE9MHxhW3FlPj4yXX1hW3FlPj4yXT1BKzEsZmVbQT4+MF09MCxhW2ZyPj4yXT1hW3J0Pj4yXSxhW3J0Pj4yXT1hW3Fl''@;'; put 'put ''Pj4yXX1hW0c+PjJdPU0saHZbMTUmYVt1cj4+Ml1dKDB8YVtoYz4+Ml0sMHxhW2FbSG4+PjJdPj4yXSwwfGFbYVtIcj4+Ml0+PjJdLDB8YVtmcj4+Ml0sMCwzNj09KDB8bSkmMSksQ2YoSGUpLEE9RH1lbHNlIGs9Mjc1fWVsc2Ugaz0yNzU7YnJlYWs7Y2FzZSAzODpjYXNlIDM3OmlmKDB8ZmVb''@;'; put 'put ''c3Q+PjBdKXtpZigwfChBPTB8X18obCxELDB8ZmVbRXI+PjBdLE0rKEE9MHxhW0QrNjQ+PjJdKXwwLDAtQSsoMHxhW0xsPj4yXSl8MCxFdCkpKXtrPTI4MDticmVhayBlfWlmKGM9MHxhW2N0Pj4yXSxhW2N0Pj4yXT1hW1p0Pj4yXSwhKDB8T2goMHxhW0huPj4yXSwwfGFbSHI+PjJdLDB8ZmVb''@;'; put 'put ''RXI+PjBdLDAsYyxsKSkpe0E9MSxrPTI4MDticmVhayBlfWlmKDAhPSgwfGFbdXI+PjJdKSYmMCE9KDB8KGZ3PTB8YVtmcj4+Ml0pKSl7c3dpdGNoKDB8ZmVbZnc+PjBdKXtjYXNlIDQwOms9MTA4O2JyZWFrO2Nhc2UgNzg6Nzk9PSgwfGZlW2Z3KzE+PjBdKSYmKGs9MTA4KX1pZigxMDg9PSgw''@;'; put 'put ''fGspKXtpZihrPTAsKDB8KEE9MHxhW3FlPj4yXSkpPT0oMHxhW0pyPj4yXSkpe2lmKCEoKDB8dmwoSGUpKTw8MjQ+PjI0KSl7QT0xLGs9MjgwO2JyZWFrIGV9QT0wfGFbcWU+PjJdfWlmKGFbcWU+PjJdPUErMSxmZVtBPj4wXT00MSwoMHwoQT0wfGFbcWU+PjJdKSk9PSgwfGFbSnI+PjJdKSl7''@;'; put 'put ''aWYoISgoMHx2bChIZSkpPDwyND4+MjQpKXtBPTEsaz0yODA7YnJlYWsgZX1BPTB8YVtxZT4+Ml19YVtxZT4+Ml09QSsxLGZlW0E+PjBdPTAsYVtmcj4+Ml09YVtydD4+Ml0sYVtydD4+Ml09YVtxZT4+Ml19YVtHPj4yXT1NLGh2WzE1JmFbdXI+PjJdXSgwfGFbaGM+PjJdLDB8YVthW0huPj4y''@;'; put 'put ''XT4+Ml0sMHxhW2FbSHI+PjJdPj4yXSwwfGFbZnI+PjJdLGMsMzg9PSgwfG0pJjEpLENmKEhlKSxBPUR9ZWxzZSBrPTI3NX1lbHNlIGs9Mjc1O2JyZWFrO2Nhc2UgMTI6aWYoMHxmZVtzdD4+MF0pe2lmKEE9MHxDXyhsLEQsTSsoQT0wfGFbRCs2ND4+Ml0pfDAsMC1BKygwfGFbTGw+PjJdKXww''@;'; put 'put ''KSxmPTB8YVtMcj4+Ml0sKGM9MHxhW2t0Pj4yXSk/KGFbYys0Pj4yXT1mLGFbOCsoMHxhW2t0Pj4yXSk+PjJdPSgwfGFbbDA+PjJdKS0oMHxhW0xyPj4yXSksYVtMcj4+Ml09YVtsMD4+Ml0sMHxhW2J0Pj4yXT8oYVtHPj4yXT1NLGxTWzAmYVtidD4+Ml1dKDB8YVtoYz4+Ml0sMHxhWyhjPTB8''@;'; put 'put ''YVtrdD4+Ml0pPj4yXSwwfFh0W2MrMzM+PjBdLDB8YVtjKzQ+PjJdLDB8YVtjKzg+PjJdLDB8YVttOD4+Ml0sMCwwLDApLGM9MCk6Yz0xKTooYVtsMD4+Ml09ZixjPTEpLEEpe2s9MjgwO2JyZWFrIGV9QT1jLGs9Mjc0fWVsc2Ugaz0yNzU7YnJlYWs7Y2FzZSA1OmlmKGZlW2F0Pj4wXT0wLGZl''@;'; put 'put ''W3RmPj4wXT0xLDB8YVtMZT4+Ml0pe2lmKGs9MHxiMihIZSxELE0rKGs9MHxhW0QrNjQ+PjJdKXwwLDAtaysoMHxhW0xsPj4yXSl8MCksYVtSZT4+Ml09aywhayl7QT0xLGs9MjgwO2JyZWFrIGV9YVtydD4+Ml09YVtxZT4+Ml0sQT0wfWVsc2UgYVtSZT4+Ml09NzUzOTUsQT0xO2lmKDA9PSgw''@;'; put 'put ''fGZlW2c4Pj4wXSkmJjA9PSgwfGFbU24+PjJdKSYmMHwoc1M9MHxhW2R2Pj4yXSkmJjA9PSgwfF9vWzYzJnNTXSgwfGFbaGM+PjJdKSkpe0E9MjIsaz0yODA7YnJlYWsgZX1pZigwfGFba3Q+PjJdKWs9MTMzO2Vsc2V7aWYoYz0wfF8xKGwsU3QsNzUzOTUsMzYpLGFba3Q+PjJdPWMsIWMpe0E9''@;'; put 'put ''MSxrPTI4MDticmVhayBlfWFbYysyND4+Ml09MCxrPTEzM31icmVhaztjYXNlIDEzOkE9MSxrPTEzMzticmVhaztjYXNlIDE1OjAhPSgwfGZlW3N0Pj4wXSkmJjAhPSgwfGFba3Q+PjJdKSYmMCE9KDB8YVtidD4+Ml0pPyhhW0c+PjJdPU0sbFNbMCZhW2J0Pj4yXV0oMHxhW2hjPj4yXSwwfGFb''@;'; put 'put ''KEE9MHxhW2t0Pj4yXSk+PjJdLDB8WHRbQSszMz4+MF0sMCwwLDB8YVtBKzIwPj4yXSwwfGFbQSsxNj4+Ml0sMHxhW0ErMjQ+PjJdLDApLEE9RCk6az0yNzU7YnJlYWs7Y2FzZSAxNjppZigwIT0oMHxmZVtzdD4+MF0pJiYwIT0oMHxhW2t0Pj4yXSkpe2lmKG09MHxiMihFdCxELE0sMHxhW0xs''@;'; put 'put ''Pj4yXSksYVsyOCsoMHxhW2t0Pj4yXSk+PjJdPW0sISgwfGFbMjgrKDB8YVtrdD4+Ml0pPj4yXSkpe0E9MSxrPTI4MDticmVhayBlfWlmKGFbY3Q+PjJdPWFbWnQ+PjJdLDB8YVtWaT4+Ml0pe2FbRz4+Ml09TSxodlsxNSZhW1ZpPj4yXV0oMHxhW2hjPj4yXSwwfGFbKEE9MHxhW2t0Pj4yXSk+''@;'; put 'put ''PjJdLDB8YVtBKzIwPj4yXSwwfGFbQSsxNj4+Ml0sMHxhW0ErMjQ+PjJdLDB8YVtBKzI4Pj4yXSksQT1EO2JyZWFrIHR9MHxhW2J0Pj4yXT8oYVtHPj4yXT1NLGxTWzAmYVtidD4+Ml1dKDB8YVtoYz4+Ml0sMHxhWyhBPTB8YVtrdD4+Ml0pPj4yXSwwLDAsMCwwfGFbQSsyMD4+Ml0sMHxhW0Er''@;'; put 'put ''MTY+PjJdLDB8YVtBKzI0Pj4yXSwwfGFbQSsyOD4+Ml0pLEE9RCk6az0yNzV9ZWxzZSBrPTI3NTticmVhaztjYXNlIDk6aWYoMHxtaVs2MyZhW0QrNDQ+PjJdXShELE0sMHxhW0xsPj4yXSkpe2Fba3Q+PjJdPTAsaz0yNzU7YnJlYWsgdH1pZighKDB8ZmVbc3Q+PjBdKSl7YVtadD4+Ml09YVtj''@;'; put 'put ''dD4+Ml0sYVtrdD4+Ml09MCxrPTI3NTticmVhayB0fWlmKCEoQT0wfGIyKEV0LEQsTSwwfGFbTGw+PjJdKSkpe0E9MSxrPTI4MDticmVhayBlfWlmKGM9MHxfMShsLHEsQSwzNiksYVtrdD4+Ml09YywhYyl7QT0xLGs9MjgwO2JyZWFrIGV9aWYoKDB8YVtjPj4yXSkhPSgwfEEpKXthW1p0Pj4y''@;'; put 'put ''XT1hW2N0Pj4yXSxhW2t0Pj4yXT0wLGs9Mjc1O2JyZWFrIHR9YVtjdD4+Ml09YVtadD4+Ml0sYVsyNCsoMHxhW2t0Pj4yXSk+PjJdPTAsZmVbMzMrKDB8YVtrdD4+Ml0pPj4wXT0wLGZlWzM0KygwfGFba3Q+PjJdKT4+MF09MSYoMV4oQT0wfGFbT2k+PjJdPzE6MCE9KDB8YVt2MT4+Ml0pKSks''@;'; put 'put ''MHxhW2J0Pj4yXT9BPUQ6az0yNzU7YnJlYWs7Y2FzZSAxMDppZighKDB8ZmVbc3Q+PjBdKSl7YVtadD4+Ml09YVtjdD4+Ml0sYVtrdD4+Ml09MCxrPTI3NTticmVhayB0fWlmKCEoQT0wfGIyKEV0LEQsTSwwfGFbTGw+PjJdKSkpe0E9MSxrPTI4MDticmVhayBlfWlmKGM9MHxfMShsLFN0LEEs''@;'; put 'put ''MzYpLGFba3Q+PjJdPWMsIWMpe0E9MSxrPTI4MDticmVhayBlfWlmKCgwfGFbYz4+Ml0pIT0oMHxBKSl7YVtadD4+Ml09YVtjdD4+Ml0sYVtrdD4+Ml09MCxrPTI3NTticmVhayB0fWFbY3Q+PjJdPWFbWnQ+PjJdLGFbMjQrKDB8YVtrdD4+Ml0pPj4yXT0wLGZlWzMzKygwfGFba3Q+PjJdKT4+''@;'; put 'put ''MF09MSxmZVszNCsoMHxhW2t0Pj4yXSk+PjBdPTEmKDFeKEE9MHxhW09pPj4yXT8xOjAhPSgwfGFbdjE+PjJdKSkpLDB8YVtidD4+Ml0/QT1EOms9Mjc1O2JyZWFrO2Nhc2UgMTg6aWYoYVtSbz4+Ml09MCxhW2xvPj4yXT0wLDB8YVtUYT4+Ml0pe2lmKE09MHxiMihIZSxELE0sMHxhW0xsPj4y''@;'; put 'put ''XSksYVtsbz4+Ml09TSwhTSl7QT0xLGs9MjgwO2JyZWFrIGV9YVtydD4+Ml09YVtxZT4+Ml0sQT1EfWVsc2Ugaz0yNzU7YnJlYWs7Y2FzZSAyMTppZighKDB8cTBbMTI3JmFbRCs1Mj4+Ml1dKEQsTSwwfGFbTGw+PjJdLFIpKSl7QT0zMixrPTI4MDticmVhayBlfWlmKDB8YVtsbz4+Ml0pe2lm''@;'; put 'put ''KCEoQT0wfGIyKEhlLEQsTSsoQT0wfGFbRCs2ND4+Ml0pfDAsMC1BKygwfGFbTGw+PjJdKXwwKSkpe0E9MSxrPTI4MDticmVhayBlfWNBKEEpLGFbUm8+PjJdPUEsYVtydD4+Ml09YVtxZT4+Ml0sQT1EfWVsc2Ugaz0yNzU7YnJlYWs7Y2FzZSAxOTppZigwIT0oMHxhW2xvPj4yXSkmJjAhPSgw''@;'; put 'put ''fGFbVGE+PjJdKSl7aWYoIShBPTB8YjIoSGUsRCxNKyhBPTB8YVtEKzY0Pj4yXSl8MCwwLUErKDB8YVtMbD4+Ml0pfDApKSl7QT0xLGs9MjgwO2JyZWFrIGV9YVtHPj4yXT1NLHA4WzE1JmFbVGE+PjJdXSgwfGFbaGM+PjJdLDB8YVtsbz4+Ml0sMHxhW204Pj4yXSxBLDB8YVtSbz4+Ml0pLEE9''@;'; put 'put ''MH1lbHNlIEE9MTtDZihIZSksaz0yNzQ7YnJlYWs7Y2FzZSAyMDowIT0oMHxhW1JvPj4yXSkmJjAhPSgwfGFbVGE+PjJdKT8oYVtHPj4yXT1NLHA4WzE1JmFbVGE+PjJdXSgwfGFbaGM+PjJdLDB8YVtsbz4+Ml0sMHxhW204Pj4yXSwwLDB8YVtSbz4+Ml0pLEE9MCk6QT0xLENmKEhlKSxrPTI3''@;'; put 'put ''NDticmVhaztjYXNlIDU4OmlmKDB8YVtiZT4+Ml0mJl8yKGwsRCxNLDB8YVtMbD4+Ml0pLDB8KEE9MHxoQShsLEQsTGwscCx3LGIpKSl7az0yODA7YnJlYWsgZX1pZighKDB8YVtMbD4+Ml0pKXtrPTE4OTticmVhayBlfUE9RDticmVhaztjYXNlIDQ0OkE9MHxhW2dhPj4yXTtkb3tpZigoMHxh''@;'; put 'put ''W1phPj4yXSk+Pj4wPj1BPj4+MCl7aWYoIUEpe2lmKG09MHxhW3oyPj4yXSxhW2dhPj4yXT0zMixtPTB8X29bNjMmbV0oMzIpLGFbeGk+PjJdPW0sbSlicmVhaztrPTE5ODticmVhayBlfWlmKGY9MHxhW0cyPj4yXSxtPTB8YVt4aT4+Ml0sYVtnYT4+Ml09QTw8PTEsIShBPTB8QmlbMTI3JmZd''@;'; put 'put ''KG0sQSkpKXtrPTE5MzticmVhayBlfWlmKGFbeGk+PjJdPUEsMHwoQT0wfGFbb3M+PjJdKSl7aWYoIShBPTB8QmlbMTI3JmFbRzI+PjJdXShBLGFbZ2E+PjJdPDwyKSkpe0E9MSxrPTI4MDticmVhayBlfWFbb3M+PjJdPUF9fX13aGlsZSgwKTtpZihmZVsoMHxhW3hpPj4yXSkrKDB8YVtaYT4+''@;'; put 'put ''Ml0pPj4wXT0wLDB8ZmVbRGw+PjBdKXtpZigoMHwoQT0wfGZ4KGwpKSk8MCl7QT0xLGs9MjgwO2JyZWFrIGV9YVsoMHxhW29zPj4yXSkrKGFbb2w+PjJdPDwyKT4+Ml09QSxhW29sPj4yXT0xKygwfGFbb2w+PjJdKSxhWygwfGFbTDA+PjJdKSsoMjgqQXwwKT4+Ml09NiwwfGFbeGE+PjJdP0E9''@;'; put 'put ''RDprPTI3NX1lbHNlIGs9Mjc1O2JyZWFrO2Nhc2UgNTA6aWYoMTI0PT0oMHxmZVsoQT0oMHxhW3hpPj4yXSkrKDB8YVtaYT4+Ml0pfDApPj4wXSkpe0E9MixrPTI4MDticmVhayBlfWZlW0E+PjBdPTQ0LDAhPSgwfGZlW0RsPj4wXSkmJjAhPSgwfGFbeGE+PjJdKT9BPUQ6az0yNzU7YnJlYWs7''@;'; put 'put ''Y2FzZSA0OTppZigoQT0wfGZlWyhmPTB8YVt4aT4+Ml0pKyhjPTB8YVtaYT4+Ml0pPj4wXSk8PDI0Pj4yND09NDQpe0E9MixrPTI4MDticmVhayBlfUE8PDI0Pj4yND09MCYwIT0oMHxmZVtEbD4+MF0pJiYzIT0oMHxhWyh1Uz0oMHxhW0wwPj4yXSkrKDI4KigwfGFbKDB8YVtvcz4+Ml0pKygo''@;'; put 'put ''MHxhW29sPj4yXSktMTw8Mik+PjJdKXwwKXwwKT4+Ml0pPyhhW3VTPj4yXT01LEE9MD09KDB8YVt4YT4+Ml0pJjEsZj0wfGFbeGk+PjJdLGM9MHxhW1phPj4yXSk6QT0xLGZlW2YrYz4+MF09MTI0LGs9Mjc0O2JyZWFrO2Nhc2UgNTk6Y2FzZSA2MDppZihmZVt0Zj4+MF09MSwwfGFbU24+PjJd''@;'; put 'put ''KXtpZighKGM9MHxiMihFdCxELE0rKGM9MHxhW0QrNjQ+PjJdKXwwLDAtYysoMHxhW0xsPj4yXSl8MCkpKXtBPTEsaz0yODA7YnJlYWsgZX1mPTB8XzEobCxTdCxjLDApLGFbWnQ+PjJdPWFbY3Q+PjJdO2Rve2lmKDB8YVtGZj4+Ml0pe2lmKDB8ZmVbZzg+PjBdKXtpZigwfGFbdjE+PjJdKXtr''@;'; put 'put ''PTIxOTticmVha319ZWxzZSBpZigwfGZlW3RmPj4wXSl7az0yMTk7YnJlYWt9aWYoIWYpe0E9MTEsaz0yODA7YnJlYWsgZX1pZighKDB8ZmVbZiszND4+MF0pKXtBPTI0LGs9MjgwO2JyZWFrIGV9fWVsc2Ugaz0yMTl9d2hpbGUoMCk7aWYoMjE5PT0oMHxrKSYmKGs9MCwwPT0oMHxmKSkpe2lm''@;'; put 'put ''KGZlW3N0Pj4wXT0wfGZlW2c4Pj4wXSw2MCE9KDB8bSkpe2s9Mjc1O2JyZWFrIHR9aWYoIShBPTB8YVtQYT4+Ml0pKXtrPTI3NTticmVhayB0fWRsWzEyNyZBXSgwfGFbaGM+PjJdLGMsMSksQT1EO2JyZWFrIHR9aWYoMHxmZVsoQT1mKzMyfDApPj4wXSl7QT0xMixrPTI4MDticmVhayBlfWlm''@;'; put 'put ''KDB8YVtmKzQ+PjJdKXtpZihjPTA9PSgwfChBPTB8aHgobCxmLDYwPT0oMHxtKSYxKSkpKXtBPTEmKDFeYyksaz0yNzQ7YnJlYWsgdH1rPTI4MDticmVhayBlfWlmKCEoMHxhW3ExPj4yXSkpe2ZlW3N0Pj4wXT0wfGZlW2c4Pj4wXSxrPTI3NTticmVhayB0fWlmKGZlW3hwPj4wXT0wLGZlW0E+''@;'; put 'put ''PjBdPTEsbT0wPT0oMHxSMlsxMjcmYVtxMT4+Ml1dKDB8YVtCTD4+Ml0sMCwwfGFbZisyMD4+Ml0sMHxhW2YrMTY+PjJdLDB8YVtmKzI0Pj4yXSkpLGZlW0E+PjBdPTAsbSl7QT0yMSxrPTI4MDticmVhayBlfWlmKGM9MHxmZVtnOD4+MF0sISgwfGZlW3hwPj4wXSkpe2ZlW3N0Pj4wXT1jLEE9''@;'; put 'put ''RDticmVhayB0fUE9MH1lbHNlIGZlW3N0Pj4wXT1jPTB8ZmVbZzg+PjBdLEE9MTtpZihjPDwyND4+MjQ9PTAmJjAhPSgwfChjUz0wfGFbZHY+PjJdKSkmJjA9PSgwfF9vWzYzJmNTXSgwfGFbaGM+PjJdKSkpe0E9MjIsaz0yODA7YnJlYWsgZX1rPTI3NDticmVhaztjYXNlIDQwOmlmKDB8YVt4''@;'; put 'put ''YT4+Ml0pe2lmKE09MHxPbShsLEQsTSwwfGFbTGw+PjJdKSxhW0huPj4yXT1NLCFNKXtBPTEsaz0yODA7YnJlYWsgZX1hW29sPj4yXT0wLGFbVzI+PjJdPTAsZmVbRGw+PjBdPTEsQT1EfWVsc2Ugaz0yNzU7YnJlYWs7Y2FzZSA0MjpjYXNlIDQxOmlmKDB8ZmVbRGw+PjBdKXtpZigwfGFbeGE+''@;'; put 'put ''PjJdKXtpZighKEE9MHxfb1s2MyZhW3oyPj4yXV0oMjApKSl7QT0xLGs9MjgwO2JyZWFrIGV9YVsoaz1BKzR8MCk+PjJdPTAsYVtrKzQ+PjJdPTAsYVtrKzg+PjJdPTAsYVtrKzEyPj4yXT0wLGFbQT4+Ml09NDE9PSgwfG0pPzI6MSxhW0c+PjJdPU0sZGxbMTI3JmFbeGE+PjJdXSgwfGFbaGM+''@;'; put 'put ''PjJdLDB8YVthW0huPj4yXT4+Ml0sQSksQT0wfWVsc2UgQT0xO2ZlW0RsPj4wXT0wLGs9Mjc0fWVsc2Ugaz0yNzU7YnJlYWs7Y2FzZSA0MzowIT0oMHxmZVtEbD4+MF0pJiYoYVsoMHxhW0wwPj4yXSkrKDI4KigwfGFbKDB8YVtvcz4+Ml0pKygoMHxhW29sPj4yXSktMTw8Mik+PjJdKXwwKT4+''@;'; put 'put ''Ml09MywwIT0oMHxhW3hhPj4yXSkpP0E9RDprPTI3NTticmVhaztjYXNlIDUxOmM9MCxrPTI0NzticmVhaztjYXNlIDUzOmM9MSxrPTI0NzticmVhaztjYXNlIDUyOmM9MixrPTI0NzticmVhaztjYXNlIDU0OmM9MyxrPTI0NzticmVhaztjYXNlIDQ1OmY9MCxrPTI1ODticmVhaztjYXNlIDQ3''@;'; put 'put ''OmY9MSxrPTI1ODticmVhaztjYXNlIDQ2OmY9MixrPTI1ODticmVhaztjYXNlIDQ4OmY9MyxrPTI1ODticmVhaztjYXNlIDU1OmlmKCEoMHxkQShsLEQsTSwwfGFbTGw+PjJdKSkpe0E9MSxrPTI4MDticmVhayBlfUE9RDticmVhaztjYXNlIDU2OmlmKCEoMHxTXyhsLEQsTSwwfGFbTGw+PjJd''@;'; put 'put ''KSkpe0E9MSxrPTI4MDticmVhayBlfUE9RDticmVhaztjYXNlIDA6MTQ9PSgwfGMpP0E9RDprPTI3NTticmVhaztjYXNlIDM6MHxhW0xlPj4yXT9BPUQ6az0yNzU7YnJlYWs7Y2FzZSAxMTowIT0oMHxmZVtzdD4+MF0pJiYwIT0oMHxhW2J0Pj4yXSk/QT1EOms9Mjc1O2JyZWFrO2Nhc2UgMTc6''@;'; put 'put ''MHxhW1RhPj4yXT9BPUQ6az0yNzU7YnJlYWs7Y2FzZSAzMzowIT0oMHxmZVtzdD4+MF0pJiYwIT0oMHxhW3VyPj4yXSk/QT1EOms9Mjc1O2JyZWFrO2Nhc2UgMzk6MHxhW3hhPj4yXT9BPUQ6az0yNzU7YnJlYWs7ZGVmYXVsdDprPTI3NX19d2hpbGUoMCk7aWYoMzM9PSgwfGspKXtpZighKDB8''@;'; put 'put ''cTBbMTI3JmFbRCs1Mj4+Ml1dKEQsTSwwfGFbTGw+PjJdLFIpKSl7QT0zMixrPTI4MDticmVha31BPTEsaz0zNH1lbHNlIGlmKDgwPT0oMHxrKSlrPTAsMCE9KDB8ZmVbc3Q+PjBdKSYmMCE9KDB8YVt1cj4+Ml0pP0E9RDprPTI3NTtlbHNlIGlmKDEzMz09KDB8aykpaWYoaz0wLDAhPSgwfGZl''@;'; put 'put ''W3N0Pj4wXSkmJjAhPSgwfGFba3Q+PjJdKSl7aWYoYz0wfGIyKEV0LEQsTSsoYz0wfGFbRCs2ND4+Ml0pfDAsMC1jKygwfGFbTGw+PjJdKXwwKSxhWzE2KygwfGFba3Q+PjJdKT4+Ml09YywhKDB8YVsxNisoYz0wfGFba3Q+PjJdKT4+Ml0pKXtBPTEsaz0yODA7YnJlYWt9YVtjKzIwPj4yXT1h''@;'; put 'put ''W204Pj4yXSxhW2N0Pj4yXT1hW1p0Pj4yXSwxMz09KDB8bSkmMCE9KDB8YVtidD4+Ml0pP0E9RDprPTI3NH1lbHNlIGs9Mjc0O2Vsc2UgaWYoMjQ3PT0oMHxrKSlpZihrPTAsMHxmZVtEbD4+MF0pe2lmKEE9MHxhW0xsPj4yXSxjJiYoQT1BKygwLSgwfGFbRCs2ND4+Ml0pKXwwKSwoMHwoZj0w''@;'; put 'put ''fGZ4KGwpKSk8MCl7QT0xLGs9MjgwO2JyZWFrfWlmKGFbKDB8YVtMMD4+Ml0pKygyOCpmfDApPj4yXT00LGFbKDB8YVtMMD4+Ml0pKygyOCpmfDApKzQ+PjJdPWMsIShBPTB8T20obCxELE0sQSkpKXtBPTEsaz0yODA7YnJlYWt9YVsoMHxhW0wwPj4yXSkrKDI4KmZ8MCkrOD4+Ml09Yz0wfGFb''@;'; put 'put ''QT4+Ml0sQT0wO2Rve209QSxBPUErMXwwfXdoaWxlKDAhPSgwfGZlW2MrbT4+MF0pKTthW3FhPj4yXT0oMHxhW3FhPj4yXSkrQSwwfGFbeGE+PjJdP0E9RDprPTI3NX1lbHNlIGs9Mjc1O2Vsc2UgaWYoMjU4PT0oMHxrKSlpZigwfGZlW0RsPj4wXSlpZihBPTEmKGM9MD09KDB8YVt4YT4+Ml0p''@;'; put 'put ''KSxhW29sPj4yXT1rPSgwfGFbb2w+PjJdKS0xfDAsYVsoMHxhW0wwPj4yXSkrKDI4KigwfGFbKDB8YVtvcz4+Ml0pKyhrPDwyKT4+Ml0pfDApKzQ+PjJdPWYsMHxhW29sPj4yXSlrPTI3NDtlbHNle2lmKCFjKXtpZighKGM9MHxrXyhsKSkpe0E9MSxrPTI4MDticmVha31hW0c+PjJdPU0sZGxb''@;'; put 'put ''MTI3JmFbeGE+PjJdXSgwfGFbaGM+PjJdLDB8YVthW0huPj4yXT4+Ml0sYyl9ZmVbRGw+PjBdPTAsYVtxYT4+Ml09MCxrPTI3NH1lbHNlIGs9Mjc1O2lmKDM0PT0oMHxrKSlpZihrPTAsMCE9KDB8ZmVbc3Q+PjBdKSYmMCE9KDB8YVtrdD4+Ml0pKXtpZighKGM9MHxiMihFdCxELE0rKGM9MHxh''@;'; put 'put ''W0QrNjQ+PjJdKXwwLDAtYysoMHxhW0xsPj4yXSl8MCkpKXtBPTEsaz0yODA7YnJlYWt9Y0EoYyksYVsyNCsoMHxhW2t0Pj4yXSk+PjJdPWMsYVtjdD4+Ml09YVtadD4+Ml0sMTQ9PSgwfG0pJjAhPSgwfGFbYnQ+PjJdKT9BPUQ6az0yNzR9ZWxzZSBrPTI3NDtzd2l0Y2goMjc0PT0oMHxrKSYm''@;'; put 'put ''KGs9MCxBPDwyND4+MjQ/az0yNzU6QT1EKSwyNzU9PSgwfGspJiYoaz0wLDB8YVtiZT4+Ml0mJl8yKGwsRCxNLDB8YVtMbD4+Ml0pLEE9RCksMHxhW09lPj4yXSl7Y2FzZSAzOms9Mjc4O2JyZWFrIGU7Y2FzZSAyOkE9MzUsaz0yODA7YnJlYWsgZX1EPUEsTT1jPTB8YVtMbD4+Ml0sYz0wfHEw''@;'; put 'put ''WzEyNyZhW0E+PjJdXShBLGMscCxMbCl9ZTpzd2l0Y2goMHxrKXtjYXNlIDc6YVt3Pj4yXT1NLEE9MDticmVhaztjYXNlIDk6YVtSPj4yXT1mLEE9NDticmVhaztjYXNlIDEwOmlmKCEoQT0oMHxEKT09KDB8YVtwZT4+Ml0pKSYmMD09KDB8ZmVbMjArKDB8YVt2MT4+Ml0pPj4wXSkpe2Fbdz4+''@;'; put 'put ''Ml09TSxBPTA7YnJlYWt9MCE9KDB8ZmVbbCs0ODQ+PjBdKXwxXkE/LTE9PSgwfFIyWzEyNyZhW0VwPj4yXV0oRXAsLTQscCxwLEQpKT9BPTI5OihhW3c+PjJdPU0sQT0wKTpBPTM7YnJlYWs7Y2FzZSA1ODpkb3tpZigwfGZlW2F0Pj4wXSYmKENmZT0wfGZlW3RmPj4wXSxmZVt0Zj4+MF09MSww''@;'; put 'put ''fGFbU24+PjJdKSYmMHxhW3ExPj4yXSl7aWYoIShBPTB8XzEobCxTdCw3NTM5NSwzNikpKXtBPTE7YnJlYWsgZX1pZihhWyhMbD1BKzIwfDApPj4yXT1hW204Pj4yXSxmZVt4cD4+MF09MCwhKDB8UjJbMTI3JmFbcTE+PjJdXSgwfGFbQkw+PjJdLDAsMHxhW0xsPj4yXSwwfGFbQSsxNj4+Ml0s''@;'; put 'put ''MHxhW0ErMjQ+PjJdKSkpe0E9MjE7YnJlYWsgZX1pZighKDB8ZmVbeHA+PjBdKSl7ZmVbdGY+PjBdPUNmZTticmVha31pZigwPT0oMHxmZVtnOD4+MF0pJiYwfChvcT0wfGFbZHY+PjJdKSYmMD09KDB8X29bNjMmb3FdKDB8YVtoYz4+Ml0pKSl7QT0yMjticmVhayBlfX19d2hpbGUoMCk7YVts''@;'; put 'put ''KzI3Nj4+Ml09NTgsQT0wfHdfKGwsTSxwLHcpO2JyZWFrO2Nhc2UgMTg0OkE9Mjg9PSgwfGMpPzEwOjEyPT0oMHxjKT8xNzoyO2JyZWFrO2Nhc2UgMTg5OmFbbCsyNzY+PjJdPTU5LEE9MDticmVhaztjYXNlIDE5MzphW2dhPj4yXT0oMHxhW2dhPj4yXSk+Pj4xLEE9MTticmVhaztjYXNlIDE5''@;'; put 'put ''ODphW2dhPj4yXT0wLEE9MTticmVhaztjYXNlIDI3ODphW3c+PjJdPWFbTGw+PjJdLEE9MH1yZXR1cm4gbGU9YXEsMHxBfWZ1bmN0aW9uIHV4KGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIGIsRCxSLEcscSxtPTAsQT0wLHc9MCxrPTAsTT0wO3E9bGUsbGU9bGUrMzJ8MCxNPXEr''@;'; put 'put ''MTJ8MCx3PXErOHwwLGI9cSs0fDAsaz1xLGFbKEc9cSsxNnwwKT4+Ml09MCxhW00+PjJdPTAsYVt3Pj4yXT0wLGFbaz4+Ml09LTEsRD1sKzE0NHwwLFI9bCsyODR8MCxtPTAhPSgwfGMpO2U6ZG97aWYoMHxLalszJihmZVtsKzIzMj4+MF08PDI0Pj4yND8yOjEpXShjLDB8YVtEPj4yXSxmLHAs''@;'; put 'put ''Uix3LGIsRyxNLGspKXtpZigxPT0oMHxhW2s+PjJdKSYoMV5tKSYmKGZlWzEzMCsoMHxhW2wrMzUyPj4yXSk+PjBdPTEsMT09KDB8YVsoQT1sKzQ4OHwwKT4+Ml0pKSYmKGFbQT4+Ml09MCksMHxhWyhBPWwrMTQwfDApPj4yXSl7aWYoYz0wfGFbRz4+Ml0pe2lmKCEoYz0wfGIyKGwrNDM2fDAs''@;'; put 'put ''cD0wfGFbRD4+Ml0sYyxjKygwfEJpWzEyNyZhW3ArMjg+PjJdXShwLGMpKXwwKSkpe2M9MTticmVha31hW2wrNDUyPj4yXT1hW2wrNDQ4Pj4yXX1lbHNlIGM9MDtpZihtPTB8YVt3Pj4yXSl7aWYoIShtPTB8YjIobCs0MzZ8MCx3PTB8YVtEPj4yXSxtLDAtKDB8YVt3KzY0Pj4yXSkrKDB8YVti''@;'; put 'put ''Pj4yXSl8MCkpKXtjPTE7YnJlYWt9fWVsc2UgbT0wO1JjWzMxJmFbQT4+Ml1dKDB8YVtsKzQ+PjJdLG0sYywwfGFbaz4+Ml0pLGY9bX1lbHNlIDB8YVtsKzgwPj4yXT8oXzIobCwwfGFbRD4+Ml0sZixwKSxmPTAsYz0wKTooZj0wLGM9MCk7ZG97aWYoISgwfGFbbCsyMjg+PjJdKSl7aWYoQT1t''@;'; put 'put ''PTB8YVtNPj4yXSwwfG0pe2lmKCgwfChrPTB8YVttKzY0Pj4yXSkpPT0oMHxhWzY0KyhNPTB8YVtEPj4yXSk+PjJdKSYmMiE9KDB8ayl8KDB8bSk9PSgwfE0pKXthW0Q+PjJdPUE7YnJlYWt9YVtSPj4yXT1hW0c+PjJdLGM9MTk7YnJlYWsgZX1pZigwfChtPTB8YVtHPj4yXSkpe2lmKEE9bCs0''@;'; put 'put ''MzZ8MCwhYyYmIShjPTB8YjIoQSxjPTB8YVtEPj4yXSxtLG0rKDB8QmlbMTI3JmFbYysyOD4+Ml1dKGMsbSkpfDApKSl7Yz0xO2JyZWFrIGV9aWYoYz0wfEhtKGwsYyksQ2YoQSksMTghPSgwfGMpKWJyZWFrIGU7YVtSPj4yXT1hW0c+PjJdLGM9MTg7YnJlYWsgZX19fXdoaWxlKDApOzAhPSgw''@;'; put 'put ''fGMpfDAhPSgwfGYpJiZDZihsKzQzNnwwKSxjPTB9ZWxzZSBjPW0/MzE6MzB9d2hpbGUoMCk7cmV0dXJuIGxlPXEsMHxjfWZ1bmN0aW9uIGIyKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7ZG97aWYoMHxmQShsLGMsZixwKSl7aWYoKDB8KGM9MHxhWyhmPWwrMTJ8MCk+PjJdKSk9PSgw''@;'; put 'put ''fGFbbCs4Pj4yXSkpe2lmKCEoKDB8dmwobCkpPDwyND4+MjQpKXtjPTA7YnJlYWt9Yz0wfGFbZj4+Ml19YVtmPj4yXT1jKzEsZmVbYz4+MF09MCxjPTB8YVtsKzE2Pj4yXX1lbHNlIGM9MH13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1bmN0aW9uIENmKGwpe3ZhciBwLGM9MCxmPTAsbT0wLEE9MDtj''@;'; put 'put ''PTB8YVsocD00KyhsfD0wKXwwKT4+Ml07ZTpkb3tpZihjKWZvcihmPTB8YVtsPj4yXTs7KXtpZighZil7Yz1sO2JyZWFrIGV9QT0wfGFbZj4+Ml0sYVtmPj4yXT1jLGFbcD4+Ml09ZixtPWYsZj1BLGM9bX1lbHNlIGFbcD4+Ml09YVtsPj4yXSxjPWx9d2hpbGUoMCk7YVtjPj4yXT0wLGFbbCsx''@;'; put 'put ''Nj4+Ml09MCxhW2wrMTI+PjJdPTAsYVtsKzg+PjJdPTB9ZnVuY3Rpb24gXzEobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wO1JlPTgrKGN8PTApfDA7ZTpk''@;'; put 'put ''b3tpZigwfGFbUmU+PjJdKXtmb3IoTGU9MHx3QShsLGYpLGs9MHxhW2M+PjJdLE09TGUmMC0oYj0wfGFbUmU+PjJdKSxPZT1jKzR8MCxEPSh3PWIrLTF8MCk+Pj4yLEE9MCx3Jj1MZTttPTB8YVtrKyh3PDwyKT4+Ml07KXtpZigoMHxGbShmLDB8YVttPj4yXSkpPDwyND4+MjQpYnJlYWsgZTtB''@;'; put 'put ''PW09QTw8MjQ+PjI0P0E6MjU1JihNPj4+KCgwfFh0W09lPj4wXSktMXwwKSZEfDEpLHc9dy0oYmU9MjU1Jm0pKyh3Pj4+MDxiZT4+PjA/YjowKXwwfWlmKHApe2lmKCEoKDB8YVtjKzEyPj4yXSk+Pj4oKG09MjU1JihBPTB8ZmVbT2U+PjBdKSktMXwwKSkpe209YysxNnwwLEE9YyxSPTI3O2Jy''@;'; put 'put ''ZWFrfWlmKHE9bSsxJjI1NSxwZT0oZ2U9MTw8KHc9QSsxJjI1NSkpLTF8MCxiZT0wfF9vWzYzJmFbYVsobT1jKzE2fDApPj4yXT4+Ml1dKEE9Z2U8PDIpKXtmb3IodTIoMHxiZSwwLDB8QSksRz0wLWdlfDAsRD13Ky0xfDAsUj1wZT4+PjIsTT0wOyEoTT4+PjA+PSgwfGFbUmU+PjJdKT4+PjAp''@;'; put 'put ''Oyl7aWYoMHwoQT0wfGFbKDB8YVtjPj4yXSkrKE08PDIpPj4yXSkpe2ZvcihiPTI1NSYoKChBPTB8d0EobCwwfGFbQT4+Ml0pKSZHKT4+PkQmUnwxKSxBJj1wZSx3PTA7MHxhWyhrPWJlKyhBPDwyKXwwKT4+Ml07KUE9QSsoQT4+PjA8KEhlPTI1NSYoaz13PDwyND4+MjQ9PTA/Yjp3KSk+Pj4w''@;'; put 'put ''P2dlOjApLUhlfDAsdz1rO2Fbaz4+Ml09YVsoMHxhW2M+PjJdKSsoTTw8Mik+PjJdfU09TSsxfDB9Zm9yKENvWzEyNyZhWzgrKDB8YVttPj4yXSk+PjJdXSgwfGFbYz4+Ml0pLGFbYz4+Ml09YmUsZmVbT2U+PjBdPXEsYVtSZT4+Ml09Z2UsYj0yNTUmKChMZSZHKT4+PkQmUnwxKSxBPXBlJkxl''@;'; put 'put ''LHc9MDs7KXtpZighKDB8YVtiZSsoQTw8Mik+PjJdKSl7dz1BLEE9YyxSPTI3O2JyZWFrIGV9QT1BKyhBPj4+MDwoUmU9MjU1JihIZT13PDwyND4+MjQ9PTA/Yjp3KSk+Pj4wP2dlOjApLVJlfDAsdz1IZX19ZWxzZSBtPTB9ZWxzZSBtPTB9ZWxzZXtpZihwKXtpZihmZVtjKzQ+PjBdPTYsYVtS''@;'; put 'put ''ZT4+Ml09NjQsQT0wfF9vWzYzJmFbYVsobT1jKzE2fDApPj4yXT4+Ml1dKDI1NiksYVtjPj4yXT1BLEEpe3UyKDB8QSwwLDI1Niksdz0wfHdBKGwsZiksdyY9KDB8YVtSZT4+Ml0pLTEsQT1jLFI9Mjc7YnJlYWt9YVtSZT4+Ml09MCxtPTA7YnJlYWt9bT0wfX13aGlsZSgwKTtyZXR1cm4gMjc9''@;'; put 'put ''PSgwfFIpJiYobT0wfF9vWzYzJmFbYVttPj4yXT4+Ml1dKHApLGFbKDB8YVtBPj4yXSkrKHc8PDIpPj4yXT1tLChtPTB8YVsoMHxhW0E+PjJdKSsodzw8Mik+PjJdKT8odTIoMHxtLDAsMHxwKSxhW2FbKDB8YVtBPj4yXSkrKHc8PDIpPj4yXT4+Ml09ZixhWyhtPWMrMTJ8MCk+PjJdPTErKDB8''@;'; put 'put ''YVttPj4yXSksbT0wfGFbKDB8YVtBPj4yXSkrKHc8PDIpPj4yXSk6bT0wKSwwfG19ZnVuY3Rpb24gY0EobCl7dmFyIGM9MCxmPTAscD0wO2ZvcihwPWx8PTAsYz1sOyhmPTB8ZmVbcD4+MF0pPDwyND4+MjQ7KXtzd2l0Y2goZjw8MjQ+PjI0fDApe2Nhc2UgMTA6Y2FzZSAxMzpjYXNlIDMyOigw''@;'; put 'put ''fGMpIT0oMHxsKT8zMiE9KDB8ZmVbYystMT4+MF0pJiYoZmVbYz4+MF09MzIsYz1jKzF8MCk6Yz1sO2JyZWFrO2RlZmF1bHQ6ZmVbYz4+MF09ZixjPWMrMXwwfXA9cCsxfDB9KDB8YykhPSgwfGwpJiYobD0zMj09KDB8ZmVbKGw9YystMXwwKT4+MF0pP2w6YyksZmVbbD4+MF09MH1mdW5jdGlv''@;'; put 'put ''biB3XyhsLGMsZixwKXtyZXR1cm4gMD09KDB8KGM9MHxCbShsfD0wLDAsMHxhW2wrMTQ0Pj4yXSxjfD0wLGZ8PTAscHw9MCwwPT0oMHxmZVtsKzQ4MD4+MF0pJjEpKSkmJigwfHhfKGwpKTw8MjQ+PjI0PT0wJiYoYz0xKSwwfGN9ZnVuY3Rpb24gT20obCxjLGYscCl7dmFyIEEsbT0wO2M9MHxi''@;'; put 'put ''Mig4MCsoQT0wfGFbMzUyKyhsfD0wKT4+Ml0pfDAsY3w9MCxmfD0wLHB8PTApO2Rve2lmKDAhPSgwfGMpJiYwIT0oMHwobT0wfF8xKGwsQSsyMHwwLGMsMjQpKSkpaWYoKDB8YVttPj4yXSk9PSgwfGMpKXtpZihhW0ErOTY+PjJdPWFbQSs5Mj4+Ml0sISgwfElfKGwsbSkpKXttPTA7YnJlYWt9''@;'; put 'put ''fWVsc2UgYVtBKzkyPj4yXT1hW0ErOTY+PjJdO2Vsc2UgbT0wfXdoaWxlKDApO3JldHVybiAwfG19ZnVuY3Rpb24gYl8obCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIGssTSxELFIsbT0wLEE9MCx3PTAsYj0wO2s9ODArKEQ9MHxhWzM1MisobHw9MCk+PjJdKXwwLCgwfChBPTB8YVsoUj1E''@;'; put 'put ''KzkyfDApPj4yXSkpPT0oMHxhWyhNPUQrODh8MCk+PjJdKT8oMHx2bChrKSk8PDI0Pj4yND8oQT0wfGFbUj4+Ml0sdz00KTptPTA6dz00O2U6ZG97aWYoND09KDB8dykpaWYoYVtSPj4yXT1BKzEsZmVbQT4+MF09MCxjPTB8YjIoayxjLGYscCksMCE9KDB8YykmJihiPWMrMXwwLG09MHxfMShs''@;'; put 'put ''LEQrNDB8MCxiLDEyKSwwIT0oMHxtKSkpe2lmKCgwfGFbbT4+Ml0pIT0oMHxiKSl7YVtSPj4yXT1hW0QrOTY+PjJdO2JyZWFrfWlmKGFbKHc9RCs5NnwwKT4+Ml09QT0wfGFbUj4+Ml0sMHxmZVtsKzIzMj4+MF0pe2Y9MHxmZVtiPj4wXTt0OmRve2lmKGY8PDI0Pj4yND09MTIwKXtpZigxMDk9''@;'; put 'put ''PSgwfGZlW2MrMj4+MF0pJiYxMDg9PSgwfGZlW2MrMz4+MF0pJiYxMTA9PSgwfGZlW2MrND4+MF0pJiYxMTU9PSgwfGZlW2MrNT4+MF0pKXtzd2l0Y2goMHxmZVtjKzY+PjBdKXtjYXNlIDA6QT1EKzE1MnwwO2JyZWFrO2Nhc2UgNTg6QT0wfF8xKGwsRCs2MHwwLGMrN3wwLDgpO2JyZWFrO2Rl''@;'; put 'put ''ZmF1bHQ6cD0wLGM9MTIwO2JyZWFrIHR9YVttKzQ+PjJdPUEsZmVbbSs5Pj4wXT0xO2JyZWFrIGV9cD0wLGM9MTIwfWVsc2UgcD0wLGM9Zn13aGlsZSgwKTt0OmZvcig7Oyl7c3dpdGNoKGM8PDI0Pj4yNCl7Y2FzZSAwOmJyZWFrIGU7Y2FzZSA1ODpmPTA7YnJlYWsgdH1wPWM9cCsxfDAsYz0w''@;'; put 'put ''fGZlW2IrYz4+MF19Zm9yKDtjPSgwfEEpPT0oMHxhW00+PjJdKSwhKCgwfGYpPj0oMHxwKSk7KXtpZihjKXtpZighKCgwfHZsKGspKTw8MjQ+PjI0KSl7bT0wO2JyZWFrIGV9QT0wfGFbUj4+Ml19Yz0wfGZlW2IrZj4+MF0sYVtSPj4yXT1BKzEsZmVbQT4+MF09YyxmPWYrMXwwLEE9MHxhW1I+''@;'; put 'put ''PjJdfWlmKGMpe2lmKCEoKDB8dmwoaykpPDwyND4+MjQpKXttPTA7YnJlYWt9QT0wfGFbUj4+Ml19aWYoYVtSPj4yXT1BKzEsZmVbQT4+MF09MCxBPTB8XzEobCxEKzYwfDAsMHxhW3c+PjJdLDgpLGFbbSs0Pj4yXT1BLEEpe2lmKCgwfGFbQT4+Ml0pPT0oMHwoYz0wfGFbdz4+Ml0pKSl7YVt3''@;'; put 'put ''Pj4yXT1hW1I+PjJdO2JyZWFrfWFbUj4+Ml09YzticmVha31tPTB9fWVsc2UgbT0wfXdoaWxlKDApO3JldHVybiAwfG19ZnVuY3Rpb24gY3gobCxjKXtjfD0wO3ZhciBtLEEsZj0wLHA9MCx3PTA7Zm9yKG09MTIrKGx8PTApfDAsQT1sKzh8MDs7KXtpZighKChmPTB8ZmVbYz4+MF0pPDwyND4+''@;'; put 'put ''MjQpKXt3PTc7YnJlYWt9aWYoKDB8KHA9MHxhW20+PjJdKSk9PSgwfGFbQT4+Ml0pKXtpZighKCgwfHZsKGwpKTw8MjQ+PjI0KSl7Yz0wO2JyZWFrfXA9MHxhW20+PjJdLGY9MHxmZVtjPj4wXX1hW20+PjJdPXArMSxmZVtwPj4wXT1mLGM9YysxfDB9cmV0dXJuIDc9PSgwfHcpJiYoYz0wfGFb''@;'; put 'put ''bCsxNj4+Ml0pLDB8Y31mdW5jdGlvbiBmQShsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgQSx3LGIsbT0wO2I9bGUsbGU9bGUrMTZ8MCxhWyh3PWIpPj4yXT1mfD0wLDA9PSgwfGFbKEE9bCsxMnwwKT4+Ml0pJiYoMHx2bChsKSk8PDI0Pj4yND09MD9mPTA6bT0zO2U6ZG97aWYoMz09KDB8''@;'; put 'put ''bSkpe2ZvcihmPWMrNTZ8MCxtPWwrOHwwOyEoKDB8UjJbMTI3JmFbZj4+Ml1dKGMsdyxwLEEsMHxhW20+PjJdKSk+Pj4wPDIpOylpZighKCgwfHZsKGwpKTw8MjQ+PjI0KSl7Zj0wO2JyZWFrIGV9Zj0wfGFbbCsxNj4+Ml19fXdoaWxlKDApO3JldHVybiBsZT1iLDB8Zn1mdW5jdGlvbiBPaChs''@;'; put 'put ''LGMsZixwLG0sQSl7Y3w9MCxmfD0wLG18PTAsQXw9MDt2YXIgRCxSLHc9MCxiPTAsaz0wLE09MDt3PShwfD0wKTw8MjQ+PjI0PT0wLEQ9MHxhWyhSPTEyKyhsfD0wKXwwKT4+Ml07ZTpkb3tpZih3JjA9PSgwfG0pKU09OTtlbHNle2ZvcihiPWwrMjB8MCxwPTA7ISgoMHxwKT49KDB8RCkpOyl7''@;'; put 'put ''aWYoKDB8YVsoMHxhW2I+PjJdKSsoMTIqcHwwKT4+Ml0pPT0oMHxjKSl7cD0xO2JyZWFrIGV9cD1wKzF8MH0hdyYmMD09KDB8YVsoaz1sKzh8MCk+PjJdKSYmMD09KDB8ZmVbYys5Pj4wXSkmJihhW2s+PjJdPWMpLE09OX19d2hpbGUoMCk7ZTpkb3tpZig5PT0oMHxNKSl7Yj1sKzE2fDA7ZG97''@;'; put 'put ''aWYoKDB8RCk9PSgwfGFbYj4+Ml0pKXtpZihEKXtpZighKHA9MHxCaVsxMjcmYVtBKzE2Pj4yXV0oMHxhWyh3PWwrMjB8MCk+PjJdLDI0KkR8MCkpKXtwPTA7YnJlYWsgZX1hW2I+PjJdPUQ8PDEsYVt3Pj4yXT1wO2JyZWFrfWlmKGFbYj4+Ml09OCxwPTB8X29bNjMmYVtBKzEyPj4yXV0oOTYp''@;'; put 'put ''LGFbbCsyMD4+Ml09cCwwfHApYnJlYWs7YVtiPj4yXT0wLHA9MDticmVhayBlfXA9MHxhW2wrMjA+PjJdfXdoaWxlKDApO2FbcCsoMTIqKEE9MHxhW1I+PjJdKXwwKT4+Ml09YyxhW3ArKDEyKkF8MCkrOD4+Ml09bSxmZVtwKygxMipBfDApKzQ+PjBdPWYsZjw8MjQ+PjI0fHwoZmVbYys4Pj4w''@;'; put 'put ''XT0xKSxhW1I+PjJdPTErKDB8YVtSPj4yXSkscD0xfX13aGlsZSgwKTtyZXR1cm4gMHxwfWZ1bmN0aW9uIHZsKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTA7cD0wfGFbKGM9NCsobHw9MCl8MCk+PjJdO2Rve2lmKHApe2lmKCEoQT0wfGFbKG09bCsxNnww''@;'; put 'put ''KT4+Ml0pKXthW2w+PjJdPXAsYVtjPj4yXT1hW3A+PjJdLGFbcD4+Ml09MCxhW20+PjJdPWM9OCsoRD0wfGFbbD4+Ml0pfDAsYVtsKzg+PjJdPSgwfGFbRCs0Pj4yXSkrKEQrOCksYVtsKzEyPj4yXT1jLGM9MTticmVha30oKDB8YVsoZj1sKzh8MCk+PjJdKS1BfDApPCgwfGFbcCs0Pj4yXSk/''@;'; put 'put ''KE09MHxhW3A+PjJdLGFbcD4+Ml09YVtsPj4yXSxhW2w+PjJdPUQ9MHxhW2M+PjJdLGFbYz4+Ml09TSxnbyhEKzh8MCwwfChjPTB8YVttPj4yXSksKDB8YVtmPj4yXSktY3wwKSxhWyhEPWwrMTJ8MCk+PjJdPSgwfGFbRD4+Ml0pLSgwfGFbbT4+Ml0pKyg4KyhjPTB8YVtsPj4yXSkpLGFbbT4+''@;'; put 'put ''Ml09Yys4LGFbZj4+Ml09KDB8YVtjKzQ+PjJdKSsoYys4KSxjPTEpOnc9Nn1lbHNlIHc9Nn13aGlsZSgwKTtlOmRve2lmKDY9PSgwfHcpKXtwPTB8YVtsPj4yXSxNPWwrMTZ8MDtkb3tpZihwKXtpZihjPWs9MHxhW00+PjJdLCgwfGspIT0ocCs4fDApKXtiPU07YnJlYWt9aWYoZj0oMHxhWyh3''@;'; put 'put ''PWwrMTJ8MCk+PjJdKS1jfDAsKDB8KEE9KDB8YVsobT1sKzh8MCk+PjJdKS1jPDwxKSk8MCl7Yz0wO2JyZWFrIGV9aWYoIShjPTB8TF8oQSkpKXtjPTA7YnJlYWsgZX1pZighKGM9MHxCaVsxMjcmYVs0KygwfGFbbCsyMD4+Ml0pPj4yXV0ocCxjKSkpe2M9MDticmVhayBlfWFbbD4+Ml09Yyxh''@;'; put 'put ''W2MrND4+Ml09QSxhW3c+PjJdPTgrKGM9MHxhW2w+PjJdKStmLGFbTT4+Ml09Yys4LGFbbT4+Ml09Yys4K0EsYz0xO2JyZWFrIGV9Yj1NLGM9MHxhW00+PjJdfXdoaWxlKDApO2lmKCgwfChjPSgwfGFbKGs9bCs4fDApPj4yXSktY3wwKSk+PTApe2lmKCgwfGMpPj0xMDI0KXtpZigoMHwoYzw8''@;'; put 'put ''PTEpKTwwKXtjPTA7YnJlYWt9fWVsc2UgYz0xMDI0OzAhPSgwfChmPTB8TF8oYykpKSYmMCE9KDB8KEQ9MHxfb1s2MyZhW2FbbCsyMD4+Ml0+PjJdXShmKSkpPyhhW0QrND4+Ml09YyxhW0Q+PjJdPWFbbD4+Ml0sYVtsPj4yXT1ELGY9bD0wfGFbKHc9bCsxMnwwKT4+Ml0sbT1wPTB8YVtNPj4y''@;'; put 'put ''XSwoMHxsKT09KDB8cCk/KEE9RCs4fDAscD1tKTooZ28oMHwoQT1EKzh8MCksMHxwLGYtbXwwKSxwPTB8YVtiPj4yXSxmPTB8YVt3Pj4yXSksYVt3Pj4yXT1EKzgrKGYtcCksYVtNPj4yXT1BLGFbaz4+Ml09RCs4K2MsYz0xKTpjPTB9ZWxzZSBjPTB9fXdoaWxlKDApO3JldHVybiAwfGN9ZnVu''@;'; put 'put ''Y3Rpb24gX18obCxjLGYscCxtLEEpe3ZhciB3PTA7bD0wfHlBKGx8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCxBfD0wKTtkb3tpZighbCl7aWYobD0wfGFbKGM9QSsxMnwwKT4+Ml0sZjw8MjQ+PjI0PT0wJiYoMHxhW0ErMTY+PjJdKSE9KDB8bCkmJjMyPT0oMHxmZVsodz1sKy0xfDApPj4wXSkm''@;'; put 'put ''JihhW2M+PjJdPXcsbD13KSwoMHxsKT09KDB8YVtBKzg+PjJdKSl7aWYoISgoMHx2bChBKSk8PDI0Pj4yNCkpe2w9MTticmVha31sPTB8YVtjPj4yXX1hW2M+PjJdPWwrMSxmZVtsPj4wXT0wLGw9MH19d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBDXyhsLGMsZixwKXtjfD0wLGZ8PTAs''@;'; put 'put ''cHw9MDt2YXIgV2UsYXQsU3Qsa3Qsc3QsWnQsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTAsRXQ9MDtpZihadD1sZSxsZT1sZSsxNnwwLFdlPVp0LGF0PVp0KzR8MCxTdD0xMDQr''@;'; put 'put ''KG09MHxhWzM1MisobHw9MCk+PjJdKXwwLGt0PTB8YVsoc3Q9bCsyNzJ8MCk+PjJdLGFbc3Q+PjJdPTEsMD09KDB8YVtTdD4+Ml0pJiYoMHx2bChTdCkpPDwyND4+MjQ9PTApbT0xO2Vsc2V7RD1jKzIwfDAsUj1sKzQ4NHwwLEc9bCsxNDR8MCxxPWwrNDEyfDAscGU9Yys2NHwwLGdlPW0rMTMy''@;'; put 'put ''fDAsYmU9bCs0Mjh8MCxPZT1sKzQyNHwwLExlPWwrMjI0fDAsUmU9bCsxMTJ8MCxNPW0rMTMwfDAsSGU9bSsxMjh8MCxWZT1tKzEzMXwwLHFlPWwrMTE2fDAscnQ9bSsxMTJ8MCxiPW0rMTE2fDAsaz1jKzQwfDA7ZTpmb3IoOzspe3Q6ZG97c3dpdGNoKDB8cTBbMTI3JmFbRD4+Ml1dKGMsZixw''@;'; put 'put ''LFdlKSl7Y2FzZS00Om09MDticmVhayBlO2Nhc2UtMTpFdD0zNzticmVhayBlO2Nhc2UgMDpFdD0zOTticmVhayBlO2Nhc2UgMjg6aWYoMD09KDB8ZmVbUj4+MF0pJiYoMHxhW0c+PjJdKT09KDB8Yykpe0V0PTE5O2JyZWFrIGV9aWYoIShtPTB8YjIocSxjLGYrKG09MHxhW3BlPj4yXSl8MCww''@;'; put 'put ''LW0rKDB8YVtXZT4+Ml0pfDApKSl7bT0xO2JyZWFrIGV9aWYoQT0wfF8xKGwsZ2UsbSwwKSxhW09lPj4yXT1hW2JlPj4yXSwhQSl7RXQ9OTticmVhayBlfWlmKDB8ZmVbKHc9QSszMnwwKT4+MF0pe0V0PTExO2JyZWFrIGV9aWYoISgwfGFbKG09QSsxNnwwKT4+Ml0pKXtpZihmZVt3Pj4wXT0x''@;'; put 'put ''LG09MHxDXyhsLDB8YVtMZT4+Ml0sbT0wfGFbQSs0Pj4yXSxtKygwfGFbQSs4Pj4yXSl8MCksZmVbdz4+MF09MCxtKWJyZWFrIGU7YnJlYWsgdH1pZigwfGFbUmU+PjJdKXtpZihmZVtWZT4+MF09MCxmZVt3Pj4wXT0xLEE9MD09KDB8UjJbMTI3JmFbUmU+PjJdXSgwfGFbcWU+PjJdLDAsMHxh''@;'; put 'put ''W0ErMjA+PjJdLDB8YVttPj4yXSwwfGFbQSsyND4+Ml0pKSxmZVt3Pj4wXT0wLEEpe209MjE7YnJlYWsgZX1pZigwfGZlW1ZlPj4wXSlicmVhayB0fWZlW0hlPj4wXT0wfGZlW00+PjBdO2JyZWFrO2Nhc2UgNjpjYXNlIDk6aWYoISgwfGZBKFN0LGMsZiwwfGFbV2U+PjJdKSkpe209MTticmVh''@;'; put 'put ''ayBlfWJyZWFrO2Nhc2UtMzphW1dlPj4yXT1mKygwfGFbcGU+PjJdKSxFdD0yMjticmVhaztjYXNlIDc6RXQ9MjI7YnJlYWs7Y2FzZSAxMDppZigoMHwobT0wfEJpWzEyNyZhW2s+PjJdXShjLGYpKSk8MCl7RXQ9Mjc7YnJlYWsgZX1mb3IoQT0wfFc0KG0sYXQpLGY9MDshKCgwfGYpPj0oMHxB''@;'; put 'put ''KSk7KXtpZigoMHxhW3J0Pj4yXSk9PSgwfChtPTB8YVtiPj4yXSkpKXtpZighKCgwfHZsKFN0KSk8PDI0Pj4yNCkpe209MSxFdD0zNTticmVhayBlfW09MHxhW2I+PjJdfXc9MHxmZVthdCtmPj4wXSxhW2I+PjJdPW0rMSxmZVttPj4wXT13LGY9ZisxfDB9YnJlYWs7ZGVmYXVsdDpFdD00MTti''@;'; put 'put ''cmVhayBlfX13aGlsZSgwKTtpZigyMj09KDB8RXQpKXtpZihFdD0wLCgwfGFbcnQ+PjJdKT09KDB8KG09MHxhW2I+PjJdKSkpe2lmKCEoKDB8dmwoU3QpKTw8MjQ+PjI0KSl7bT0xO2JyZWFrfW09MHxhW2I+PjJdfWFbYj4+Ml09bSsxLGZlW20+PjBdPTEwfWY9MHxhW1dlPj4yXX05PT0oMHxF''@;'; put 'put ''dCk/KGZlW0hlPj4wXT0wfGZlW00+PjBdLG09MCk6MTE9PSgwfEV0KT8oKDB8YVtHPj4yXSk9PSgwfGMpJiYoYVtsKzI4ND4+Ml09ZiksbT0xMik6MTk9PSgwfEV0KT8oYVtsKzI4ND4+Ml09ZixtPTEwKToyNz09KDB8RXQpPygwfGFbRz4+Ml0pPT0oMHxjKT8oYVtsKzI4ND4+Ml09ZixtPTE0''@;'; put 'put ''LEV0PTM1KToobT0xNCxFdD0zNSk6Mzc9PSgwfEV0KT8oKDB8YVtHPj4yXSk9PSgwfGMpJiYoYVtsKzI4ND4+Ml09ZiksbT00KTozOT09KDB8RXQpPygoMHxhW0c+PjJdKT09KDB8YykmJihhW2wrMjg0Pj4yXT1hW1dlPj4yXSksbT00KTo0MT09KDB8RXQpJiYoKDB8YVtHPj4yXSk9PSgwfGMp''@;'; put 'put ''JiYoYVtsKzI4ND4+Ml09ZiksbT0yMyksYVtzdD4+Ml09a3R9cmV0dXJuIGxlPVp0LDB8bX1mdW5jdGlvbiBfMihsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgRCxSLEcsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAscT0wO2lmKEc9bGUsbGU9bGUrMTZ8MCxSPUcrNHwwLGFbKEQ9Ryk+PjJd''@;'; put 'put ''PWZ8PTAsMHxmZVtjKzY4Pj4wXSlkbFsxMjcmYVtsKzgwPj4yXV0oMHxhW2wrND4+Ml0sZixwLWZ8MCk7ZWxzZXsoMHxhW2wrMTQ0Pj4yXSk9PSgwfGMpPyhtPWwrMjg4fDAsQT1sKzI4NHwwKTptPTQrKEE9MHxhW2wrMjk2Pj4yXSl8MCx3PWwrNDR8MCxiPWMrNTZ8MCxrPWwrNDh8MCxNPWwr''@;'; put 'put ''ODB8MCxmPWwrNHwwO2Rve2FbUj4+Ml09YVt3Pj4yXSxsPTB8UjJbMTI3JmFbYj4+Ml1dKGMsRCxwLFIsMHxhW2s+PjJdKSxhW20+PjJdPWFbRD4+Ml0sZGxbMTI3JmFbTT4+Ml1dKDB8YVtmPj4yXSxxPTB8YVt3Pj4yXSwoMHxhW1I+PjJdKS1xfDApLGFbQT4+Ml09YVtEPj4yXX13aGlsZShs''@;'; put 'put ''Pj4+MD4xKX1sZT1HfWZ1bmN0aW9uIGhBKGwsYyxmLHAsbSxBKXtwfD0wLG18PTAsQXw9MDt2YXIgayxNLEQsUix3PTAsYj0wO3N3aXRjaChEPWxlLGxlPWxlKzE2fDAsaz1ELE09MHxhWyhmfD0wKT4+Ml0sKDB8YVsxNDQrKGx8PTApPj4yXSk9PSgwfChjfD0wKSk/KGFbKGI9bCsyODR8MCk+''@;'; put 'put ''PjJdPU0sdz1sKzI4OHwwKTp3PTQrKGI9MHxhW2wrMjk2Pj4yXSl8MCxhW2I+PjJdPU0sYVtmPj4yXT0wLFI9MHxxMFsxMjcmYVtjKzEyPj4yXV0oYyxNLHAsayksYVt3Pj4yXT1wPTB8YVtrPj4yXSwwfFIpe2Nhc2UgNDI6MHxhW2wrODA+PjJdJiYoXzIobCxjLE0scCkscD0wfGFbaz4+Ml0p''@;'; put 'put ''LGFbZj4+Ml09cCxhW20+PjJdPXAscD0yPT0oMHxhW2wrNDc2Pj4yXSk/MzU6MDticmVhaztjYXNlIDA6YVtiPj4yXT1wLHA9NDticmVhaztjYXNlLTI6QTw8MjQ+PjI0PyhhW20+PjJdPU0scD0wKTpwPTY7YnJlYWs7Y2FzZS00OmNhc2UtMTpBPDwyND4+MjQ/KGFbbT4+Ml09TSxwPTApOnA9''@;'; put 'put ''MjticmVhaztkZWZhdWx0OmFbYj4+Ml09cCxwPTIzfXJldHVybiBsZT1ELDB8cH1mdW5jdGlvbiBmeChsKXt2YXIgYixjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxrPTA7MHxhWyhrPTE4NCsoYj0wfGFbMzUyKyhsfD0wKT4+Ml0pfDApPj4yXT9mPTQ6KGM9MHxfb1s2MyZhW2wrMTI+PjJdXShh''@;'; put 'put ''W2wrNDY0Pj4yXTw8MiksYVtrPj4yXT1jLGM/KGFbYz4+Ml09MCxmPTQpOmM9LTEpO2Rve2lmKDQ9PSgwfGYpKXtpZihwPTB8YVsobT1iKzE2NHwwKT4+Ml0sKGM9MHxhWyh3PWIrMTc2fDApPj4yXSk+Pj4wPChmPTB8YVsoQT1iKzE3MnwwKT4+Ml0pPj4+MClBPXA7ZWxzZXtpZihwKXtpZigh''@;'; put 'put ''KGM9MHxCaVsxMjcmYVtsKzE2Pj4yXV0ocCw1NipmfDApKSl7Yz0tMTticmVha31mPWMsYz1hW0E+PjJdPDwxfWVsc2V7aWYoIShjPTB8X29bNjMmYVtsKzEyPj4yXV0oODk2KSkpe2M9LTE7YnJlYWt9Zj1jLGM9MzJ9YVtBPj4yXT1jLGFbbT4+Ml09ZixjPTB8YVt3Pj4yXSxBPWZ9YVt3Pj4y''@;'; put 'put ''XT1jKzEsMHwoZj0wfGFbYisxODA+PjJdKSYmKDB8KGY9MHxhWyhtPUErKDI4KihsPTB8YVsoMHxhW2s+PjJdKSsoZistMTw8Mik+PjJdKXwwKSsxNnwwKT4+Ml0pJiYoYVtBKygyOCpmfDApKzI0Pj4yXT1jKSwocD0wfGFbKGY9QSsoMjgqbHwwKSsyMHwwKT4+Ml0pfHwoYVtBKygyOCpsfDAp''@;'; put 'put ''KzEyPj4yXT1jKSxhW20+PjJdPWMsYVtmPj4yXT1wKzEpLGFbKGs9QSsoMjgqY3wwKSsxMnwwKT4+Ml09MCxhW2srND4+Ml09MCxhW2srOD4+Ml09MCxhW2srMTI+PjJdPTB9fXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gaHgobCxjLGYpe2N8PTAsZnw9MDt2YXIgRCxSLEcscD0wLG09''@;'; put 'put ''MCxBPTAsdz0wLGI9MCxrPTAsTT0wO0c9bGUsbGU9bGUrMTZ8MCxEPUcsKHA9MHxhWyhSPTMwMCsobHw9MCl8MCk+PjJdKT8oYVtSPj4yXT1hW3ArOD4+Ml0sTT1wLG09NCk6KHA9MHxfb1s2MyZhW2wrMTI+PjJdXSgyNCkpPyhNPXAsbT00KTpwPTE7ZG97aWYoND09KDB8bSkmJihmZVsoQT1j''@;'; put 'put ''KzMyfDApPj4wXT0xLGFbKHc9YysxMnwwKT4+Ml09MCxhWyhrPU0rOHwwKT4+Ml09YVsoYj1sKzI5NnwwKT4+Ml0sYVtiPj4yXT1NLGFbTSsxMj4+Ml09YyxhW00rMTY+PjJdPWFbKHA9bCszMDh8MCk+PjJdLGZlW00rMjA+PjBdPWYsYVtNPj4yXT0wLGFbTSs0Pj4yXT0wLGY9KG09MHxhW2Mr''@;'; put 'put ''ND4+Ml0pKygwfGFbYys4Pj4yXSl8MCxhW0Q+PjJdPW0sMHxmZVtjKzMzPj4wXT8ocD0wfHEwWzEyNyZhWyhwPTB8YVsoYz1sKzIyNHwwKT4+Ml0pPj4yXV0ocCxtLGYsRCkscD0wfHVBKGwsMHxhW2M+PjJdLG0sZixwLDB8YVtEPj4yXSxELDApKTpwPTB8Qm0obCwwfGFbcD4+Ml0sMHxhW2wr''@;'; put 'put ''MjI0Pj4yXSxtLGYsRCwwKSwhcCkpe2lmKCgwfGYpIT0oMHwocD0wfGFbRD4+Ml0pKSYmMz09KDB8YVtsKzQ3Nj4+Ml0pKXthW3c+PjJdPXAtbSxhW2wrMjc2Pj4yXT02MCxwPTA7YnJlYWt9ZmVbQT4+MF09MCxhW2I+PjJdPWFbaz4+Ml0sYVtrPj4yXT1hW1I+PjJdLGFbUj4+Ml09TSxwPTB9''@;'; put 'put ''fXdoaWxlKDApO3JldHVybiBsZT1HLDB8cH1mdW5jdGlvbiBrXyhsKXt2YXIgZixwLG0sQSxjPTA7cmV0dXJuIEE9bGUsbGU9bGUrMTZ8MCxmPUErNHwwLHA9QSwoYz0wfF9vWzYzJmFbMTIrKGx8PTApPj4yXV0oKDIwKigwfGFbKG09MTc2KyhjPTB8YVtsKzM1Mj4+Ml0pfDApPj4yXSl8MCkr''@;'; put 'put ''KDB8YVtjKzE2OD4+Ml0pfDApKT8oYVtwPj4yXT1jKygyMCooMHxhW20+PjJdKXwwKSxhW2Y+PjJdPWMrMjAscEEobCwwLGMsZixwKSk6Yz0wLGxlPUEsMHxjfWZ1bmN0aW9uIGRBKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBrLG09MCxBPTAsdz0wLGI9MDtyZXR1cm4gMHxhWyhrPTY0''@;'; put 'put ''KyhsfD0wKXwwKT4+Ml0/MCE9KDB8KEE9MHxiMihtPWwrNDEyfDAsYyxBPWYrKGFbKHc9Yys2NHwwKT4+Ml08PDEpfDAsZj1BKygwfEJpWzEyNyZhW2MrMjg+PjJdXShjLEEpKXwwKSkpJiYoYVtsKzQyOD4+Ml09YVtsKzQyND4+Ml0sMCE9KDB8KGI9MHxiMihtLGMsYj0wfEJpWzEyNyZhW2Mr''@;'; put 'put ''MzI+PjJdXShjLGYpLHArKDAtKGFbdz4+Ml08PDEpKXwwKSkpKT8oUm0oYiksZGxbMTI3JmFbaz4+Ml1dKDB8YVtsKzQ+PjJdLEEsYiksQ2YobSksZj0xKTpmPTA6KDB8YVtsKzgwPj4yXSYmXzIobCxjLGYscCksZj0xKSwwfGZ9ZnVuY3Rpb24gU18obCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7''@;'; put 'put ''dmFyIEEsbT0wLHc9MDtyZXR1cm4gMHxhWyhBPTY4KyhsfD0wKXwwKT4+Ml0/KGM9MHxiMihtPWwrNDEyfDAsYyxmKygodz0wfGFbYys2ND4+Ml0pPDwyKXwwLHArKDB8QXIodywtMykpfDApKT8oUm0oYyksR3NbNjMmYVtBPj4yXV0oMHxhW2wrND4+Ml0sYyksQ2YobSksYz0xKTpjPTA6KDB8''@;'; put 'put ''YVtsKzgwPj4yXSYmXzIobCxjLGYscCksYz0xKSwwfGN9ZnVuY3Rpb24gUm0obCl7bHw9MDt2YXIgYz0wLGY9MCxwPTA7ZTpmb3IoOzspe3N3aXRjaCgwfGZlW2w+PjBdKXtjYXNlIDA6YnJlYWsgZTtjYXNlIDEzOmY9bCxjPTEzLHA9NDticmVhayBlfWw9bCsxfDB9aWYoND09KDB8cCkpe2Zv''@;'; put 'put ''cig7Yzw8MjQ+PjI0PT0xMz8oZmVbZj4+MF09MTAsbD0xMD09KDB8ZmVbKHA9bCsxfDApPj4wXSk/bCsyfDA6cCk6KGZlW2Y+PjBdPWMsbD1sKzF8MCksZj1mKzF8MCwoYz0wfGZlW2w+PjBdKTw8MjQ+PjI0OylwPTQ7ZmVbZj4+MF09MH19ZnVuY3Rpb24gcEEobCxjLGYscCxtKXtwfD0wLG18''@;'; put 'put ''PTA7dmFyIEE9MCx3PTAsYj0wLGs9MDtpZihhWyhmfD0wKT4+Ml09Yj0wfGFbKDB8YVsoaz0xNjQrKDB8YVszNTIrKGx8PTApPj4yXSl8MCk+PjJdKSsoMjgqKGN8PTApfDApPj4yXSxhW2YrND4+Ml09YVsoMHxhW2s+PjJdKSsoMjgqY3wwKSs0Pj4yXSw0PT0oMHxiKSl7Zm9yKGFbZis4Pj4y''@;'; put 'put ''XT1hW20+PjJdLGM9MHxhWygwfGFbaz4+Ml0pKygyOCpjfDApKzg+PjJdO2I9MHxmZVtjPj4wXSxhW20+PjJdPTErKGs9MHxhW20+PjJdKSxmZVtrPj4wXT1iLDB8ZmVbYz4+MF07KWM9YysxfDA7YVtmKzEyPj4yXT0wLGFbZisxNj4+Ml09MH1lbHNle2ZvcihhWyh3PWYrMTJ8MCk+PjJdPUE9''@;'; put 'put ''MHxhWygwfGFbaz4+Ml0pKygyOCpjfDApKzIwPj4yXSxhWyhiPWYrMTZ8MCk+PjJdPWFbcD4+Ml0sYVtwPj4yXT0oMHxhW3A+PjJdKSsoMjAqQXwwKSxjPSgwfGFbaz4+Ml0pKygyOCpjfDApKzEyfDAsQT0wO2M9MHxhW2M+PjJdLCEoQT4+PjA+PSgwfGFbdz4+Ml0pPj4+MCk7KXBBKGwsYywo''@;'; put 'put ''MHxhW2I+PjJdKSsoMjAqQXwwKXwwLHAsbSksYz0oMHxhW2s+PjJdKSsoMjgqY3wwKSsyNHwwLEE9QSsxfDA7YVtmKzg+PjJdPTB9fWZ1bmN0aW9uIEJtKGwsYyxmLHAsbSxBLHcpe2x8PTAsY3w9MCxmfD0wLG18PTAsQXw9MCx3fD0wO3ZhciBiZSxPZSxMZSxSZSxIZSxWZSxxZSxydCxXZSxh''@;'; put 'put ''dCxTdCxrdCxzdCxFdCxadCxjdCxidCxhbixTbixIbix1cixIcixFcixmcixEcixKcixMcixsMCxWaSxPaSxSbyxUYSxaYSxnYSx4aSxEbCxvcyxvbCxMMCx6MixHMixGZixQYSxXMix2MSxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGxvPTAseGE9MCxxYT0wLF9zPTA7''@;'; put 'put ''djE9bGUsbGU9bGUrNDh8MCxMMD12MSszMnwwLFcyPXYxKzI0fDAsVGE9djEsYVsoUGE9djErMjh8MCk+PjJdPXB8PTAsWmE9MHxhW2wrMzUyPj4yXSwoMHxhW2wrMTQ0Pj4yXSk9PSgwfGYpPyh4YT1sKzI4NHwwLGxvPWwrMjg4fDApOih4YT1sbz0wfGFbbCsyOTY+PjJdLGxvPWxvKzR8MCks''@;'; put 'put ''YVt4YT4+Ml09cCxiZT1mKzR8MCx6Mj1sKzgwfDAsT2U9bCs0NzZ8MCxMZT1mKzQ0fDAsUmU9Zis2NHwwLEhlPVphKzgwfDAsVmU9WmErOTZ8MCxxZT1aYSs5MnwwLHJ0PVphKzEyOXwwLFdlPWwrMTEyfDAsYXQ9bCsxMTZ8MCxTdD1sKzQyOHwwLGt0PWwrNDI0fDAsc3Q9bCszMDR8MCxFdD1s''@;'; put 'put ''KzEyMHwwLEcyPWwrNHwwLFp0PVphKzEzMHwwLGdhPWwrNjB8MCxjdD1sKzM2NHwwLGJ0PWwrMTJ8MCxhbj1sKzM2MHwwLFNuPWYrMjh8MCxGZj1sKzMwOHwwLHhpPWYrNTZ8MCxIbj1sKzE2fDAsdXI9bCs1MnwwLEhyPWwrNDEyfDAsRXI9bCszODh8MCxmcj1sKzU2fDAsRHI9bCsyMzJ8MCxK''@;'; put 'put ''cj1sKzIzM3wwLExyPWwrNDY4fDAsbDA9bCsxMDR8MCxWaT1sKzM3MnwwLE9pPWYrNDB8MCxSbz1sKzcyfDAsRGw9Zis2OHwwLG9zPWwrNDR8MCxvbD1sKzQ4fDA7ZTpmb3IoOzspe2FbTDA+PjJdPWdlPTB8YVtQYT4+Ml0sZ2U9MHxxMFsxMjcmYVtiZT4+Ml1dKGYsZ2UsbSxMMCksYVtsbz4+''@;'; put 'put ''Ml09cD0wfGFbTDA+PjJdLGs9cDt0OmRve3N3aXRjaCgwfGdlKXtjYXNlLTM6cWE9NjticmVhayBlO2Nhc2UtNDpxYT0xNTticmVhayBlO2Nhc2UgMDpxYT0yMDticmVhayBlO2Nhc2UtMTpxYT0yMTticmVhayBlO2Nhc2UtMjpxYT0yMzticmVhayBlO2Nhc2UgMTI6cD0xNzticmVhayBlO2Nh''@;'; put 'put ''c2UtNTpxYT0xMzQ7YnJlYWsgZTtjYXNlIDk6Z2U9MjU1JigwfG1pWzYzJmFbTGU+PjJdXShmLCgwfGFbUGE+PjJdKSsoZ2U9MHxhW1JlPj4yXSl8MCxrKygwLWdlKXwwKSksZmVbVzI+PjBdPWdlO2Rve2lmKCEoZ2U8PDI0Pj4yNCkpe2lmKCEoYj0wfGIyKEhlLGYsKDB8YVtQYT4+Ml0pKyhi''@;'; put 'put ''PTB8YVtSZT4+Ml0pfDAsMC1iKygwfGFbTDA+PjJdKXwwKSkpe3A9MSxxYT01NjticmVhayBlfWlmKGs9MHxfMShsLFphLGIsMCksYVtxZT4+Ml09YVtWZT4+Ml0sMCE9KDB8ZmVbcnQ+PjBdKSYmMD09KDB8ZmVbWnQ+PjBdKSl7aWYoIWspe2lmKDB8KHA9MHxhW0V0Pj4yXSkpe2RsWzEyNyZw''@;'; put 'put ''XSgwfGFbRzI+PjJdLGIsMCk7YnJlYWt9aWYoISgwfGFbejI+PjJdKSlicmVhaztfMihsLGYsMHxhW1BhPj4yXSwwfGFbTDA+PjJdKTticmVha319ZWxzZXtpZighayl7cD0xMSxxYT01NjticmVhayBlfWlmKCEoMHxmZVtrKzM0Pj4wXSkpe3A9MjQscWE9NTY7YnJlYWsgZX19aWYoMHxmZVso''@;'; put 'put ''cD1rKzMyfDApPj4wXSl7cD0xMixxYT01NjticmVhayBlfWlmKDB8YVtrKzI4Pj4yXSl7cD0xNSxxYT01NjticmVhayBlfWlmKCEoMHxhW2srND4+Ml0pKXtpZighKDB8YVtXZT4+Ml0pKXtpZighKDB8YVt6Mj4+Ml0pKWJyZWFrO18yKGwsZiwwfGFbUGE+PjJdLDB8YVtMMD4+Ml0pO2JyZWFr''@;'; put 'put ''fWlmKGZlW3A+PjBdPTEsYj0wfGdBKGwpLGZlW3A+PjBdPTAsIWIpe3A9MSxxYT01NjticmVhayBlfWlmKCEoMHxSMlsxMjcmYVtXZT4+Ml1dKDB8YVthdD4+Ml0sYiwwfGFbaysyMD4+Ml0sMHxhW2srMTY+PjJdLDB8YVtrKzI0Pj4yXSkpKXtwPTIxLHFhPTU2O2JyZWFrIGV9YVtrdD4+Ml09''@;'; put 'put ''YVtTdD4+Ml07YnJlYWt9aWYoMHxmZVtzdD4+MF0pe2lmKHA9MHxoeChsLGssMCkpe3FhPTU4O2JyZWFrIGV9YnJlYWt9KHA9MHxhW0V0Pj4yXSk/ZGxbMTI3JnBdKDB8YVtHMj4+Ml0sMHxhW2s+PjJdLDApOjB8YVt6Mj4+Ml0mJl8yKGwsZiwwfGFbUGE+PjJdLDB8YVtMMD4+Ml0pO2JyZWFr''@;'; put 'put ''IHR9aWYoMHwocD0wfGFbZ2E+PjJdKSl7ZGxbMTI3JnBdKDB8YVtHMj4+Ml0sVzIsMSk7YnJlYWt9MHxhW3oyPj4yXSYmXzIobCxmLDB8YVtQYT4+Ml0sMHxhW0wwPj4yXSl9d2hpbGUoMCk7YnJlYWs7Y2FzZSAxOmNhc2UgMjppZihwPTB8YVtjdD4+Ml0pYVtjdD4+Ml09YVtwPj4yXTtlbHNl''@;'; put 'put ''e2lmKCEocD0wfF9vWzYzJmFbYnQ+PjJdXSg0OCkpKXtwPTEscWE9NzU7YnJlYWsgZX1pZihiPTB8X29bNjMmYVtidD4+Ml1dKDMyKSxhW3ArMzY+PjJdPWIsIWIpe3FhPTYzO2JyZWFrIGV9YVtwKzQwPj4yXT1iKzMyfWZvcihhWyhSPXArNDR8MCk+PjJdPTAsYVtwPj4yXT1hW2FuPj4yXSxh''@;'; put 'put ''W2FuPj4yXT1wLGdlPXArMTJ8MCxhW3ArMTY+PjJdPTAsYVtwKzIwPj4yXT0wLGFbKHE9cCs0fDApPj4yXT1wZT0oMHxhW1BhPj4yXSkrKDB8YVtSZT4+Ml0pfDAsYVsoRz1wKzh8MCk+PjJdPTB8QmlbMTI3JmFbU24+PjJdXShmLHBlKSxhW0ZmPj4yXT0xKygwfGFbRmY+PjJdKSxHPShxPTB8''@;'; put 'put ''YVtxPj4yXSkrKDB8YVtHPj4yXSl8MCxhW1RhPj4yXT1xLGFbVzI+PjJdPWFbKHE9cCszNnwwKT4+Ml0sYj0wfGFbKHBlPXArNDB8MCk+PjJdO19zPTB8UjJbMTI3JmFbeGk+PjJdXShmLFRhLEcsVzIsYistMXwwKSxEPShiPTB8YVtXMj4+Ml0pLShrPU09MHxhW3E+PjJdKXwwLCEoMT09KDB8''@;'; put 'put ''X3MpfHwoMHxhW1RhPj4yXSk+Pj4wPj1HPj4+MCk7KXtpZighKGI9MHxCaVsxMjcmYVtIbj4+Ml1dKE0saz0oMHxhW3BlPj4yXSktazw8MSkpKXtxYT02OTticmVhayBlfWFbcT4+Ml09YixhW3BlPj4yXT1fcz1iK2t8MCxhW1cyPj4yXT1iK0QsYj1fc31pZihhW3ArMjQ+PjJdPUQsYVtnZT4+''@;'; put 'put ''Ml09ayxmZVtiPj4wXT0wLDB8KHA9MHxFXyhsLGYsMHxhW1BhPj4yXSxnZSxSKSkpe3FhPTc1O2JyZWFrIGV9KHA9MHxhW3VyPj4yXSk/ZGxbMTI3JnBdKDB8YVtHMj4+Ml0sMHxhW2dlPj4yXSwwfGFbRXI+PjJdKTowfGFbejI+PjJdJiZfMihsLGYsMHxhW1BhPj4yXSwwfGFbTDA+PjJdKSxD''@;'; put 'put ''ZihIcik7YnJlYWs7Y2FzZSAzOmNhc2UgNDppZihfcz0oMHxhW1BhPj4yXSkrKDB8YVtSZT4+Ml0pfDAsYVtXMj4+Ml09MCxfcz0wfGIyKEhyLGYsX3MsX3MrKDB8QmlbMTI3JmFbU24+PjJdXShmLF9zKSl8MCksYVtUYT4+Ml09X3MsIV9zKXtwPTEscWE9ODk7YnJlYWsgZX1pZihhW1N0Pj4y''@;'; put 'put ''XT1hW2t0Pj4yXSwwfChwPTB8RV8obCxmLDB8YVtQYT4+Ml0sVGEsVzIpKSl7cWE9Nzk7YnJlYWsgZX1pZihhW1N0Pj4yXT1hW2t0Pj4yXSwocD0wfGFbdXI+PjJdKT8oZGxbMTI3JnBdKDB8YVtHMj4+Ml0sMHxhW1RhPj4yXSwwfGFbRXI+PjJdKSxiPTApOmI9MSwocD0wfGFbZnI+PjJdKT8o''@;'; put 'put ''MHxhW3VyPj4yXSYmKGFbeGE+PjJdPWFbbG8+PjJdLHA9MHxhW2ZyPj4yXSksR3NbNjMmcF0oMHxhW0cyPj4yXSwwfGFbVGE+PjJdKSk6MHxiJiYwfGFbejI+PjJdJiZfMihsLGYsMHxhW1BhPj4yXSwwfGFbTDA+PjJdKSxDZihIciksUUIobCwwfGFbVzI+PjJdKSwwPT0oMHxhW0ZmPj4yXSkm''@;'; put 'put ''JjIhPSgtMiZhW09lPj4yXXwwKSl7cWE9OTI7YnJlYWsgZX1icmVhaztjYXNlIDU6aWYoKDB8YVtGZj4+Ml0pPT0oMHxjKSl7cD0xMzticmVhayBlfWlmKGFbYW4+PjJdPWFbKEQ9MHxhW2FuPj4yXSk+PjJdLGFbRD4+Ml09YVtjdD4+Ml0sYVtjdD4+Ml09RCwoMHwoYj0wfEJpWzEyNyZhW1Nu''@;'; put 'put ''Pj4yXV0oZixwPSgwfGFbUGE+PjJdKSsoYVtSZT4+Ml08PDEpfDApKSkhPSgwfGFbRCs4Pj4yXSkpe3FhPTk2O2JyZWFrIGV9aWYoMHx0MygwfGFbRCs0Pj4yXSxwLGIpKXtxYT05NjticmVhayBlfWlmKGFbRmY+PjJdPSgwfGFbRmY+PjJdKS0xLHA9MHxhW2ZyPj4yXSl7aWYoTT1EKzEyfDAs''@;'; put 'put ''MCE9KDB8KGI9MHxhW0QrMTY+PjJdKSkmMCE9KDB8ZmVbRHI+PjBdKSl7Zm9yKHA9KDB8YVtNPj4yXSkrKDB8YVtEKzI4Pj4yXSl8MDsoaz0wfGZlW2I+PjBdKTw8MjQ+PjI0OylmZVtwPj4wXT1rLHA9cCsxfDAsYj1iKzF8MDtiPTB8YVtEKzIwPj4yXTtuOmRve2lmKDAhPSgwfGIpJjAhPSgw''@;'; put 'put ''fGZlW0pyPj4wXSkpZm9yKGZlW3A+PjBdPTB8ZmVbTHI+PjBdOzspe2lmKHA9cCsxfDAsISgoaz0wfGZlW2I+PjBdKTw8MjQ+PjI0KSlicmVhayBuO2ZlW3A+PjBdPWssYj1iKzF8MH19d2hpbGUoMCk7ZmVbcD4+MF09MCxwPTB8YVtmcj4+Ml19R3NbNjMmcF0oMHxhW0cyPj4yXSwwfGFbTT4+''@;'; put 'put ''Ml0pfWVsc2UgMHxhW3oyPj4yXSYmXzIobCxmLDB8YVtQYT4+Ml0sMHxhW0wwPj4yXSk7Zm9yKGs9RCs0NHwwO009MHxhW2s+PjJdOykocD0wfGFbbDA+PjJdKT8oR3NbNjMmcF0oMHxhW0cyPj4yXSwwfGFbYVtNPj4yXT4+Ml0pLHA9TSxiPTB8YVtrPj4yXSk6KHA9TSxiPU0pLGFbaz4+Ml09''@;'; put 'put ''YVtiKzQ+PjJdLGFbTSs0Pj4yXT1hW1ZpPj4yXSxhW1ZpPj4yXT1NLGFbNCsoMHxhW3A+PjJdKT4+Ml09YVtNKzg+PjJdO2lmKCEoMHxhW0ZmPj4yXSkpe3FhPTExNzticmVhayBlfWJyZWFrO2Nhc2UgMTA6aWYoKDB8KHA9MHxCaVsxMjcmYVtPaT4+Ml1dKGYsMHxhW1BhPj4yXSkpKTwwKXtw''@;'; put 'put ''PTE0O2JyZWFrIGV9aWYoMHwoYj0wfGFbZ2E+PjJdKSl7Z2U9MHxhW0cyPj4yXSxfcz0wfFc0KHAsVzIpLGRsWzEyNyZiXShnZSxXMixfcyk7YnJlYWsgdH0wfGFbejI+PjJdJiZfMihsLGYsMHxhW1BhPj4yXSwwfGFbTDA+PjJdKTticmVhaztjYXNlIDc6aWYoMHwocD0wfGFbZ2E+PjJdKSl7''@;'; put 'put ''ZmVbVzI+PjBdPTEwLGRsWzEyNyZwXSgwfGFbRzI+PjJdLFcyLDEpO2JyZWFrIHR9MHxhW3oyPj4yXSYmXzIobCxmLDB8YVtQYT4+Ml0sayk7YnJlYWs7Y2FzZSA4OmlmKChwPTB8YVtSbz4+Ml0pP0NvWzEyNyZwXSgwfGFbRzI+PjJdKTowfGFbejI+PjJdJiZfMihsLGYsMHxhW1BhPj4yXSxr''@;'; put 'put ''KSwwfChwPTB8UG0obCxmLEwwLG0sQSx3KSkpYnJlYWsgZTtpZighKDB8YVtMMD4+Ml0pKXtxYT0xMzM7YnJlYWsgZX1icmVhaztjYXNlIDY6aWYoIShiPTB8YVtnYT4+Ml0pKXtpZighKDB8YVt6Mj4+Ml0pKWJyZWFrIHQ7XzIobCxmLDB8YVtQYT4+Ml0sayk7YnJlYWsgdH1pZigwfGZlW0Rs''@;'; put 'put ''Pj4wXSl7ZGxbMTI3JmJdKDB8YVtHMj4+Ml0sX3M9MHxhW1BhPj4yXSxwLV9zfDApO2JyZWFrIHR9Zm9yKHA9azthW1cyPj4yXT1hW29zPj4yXSxfcz0wfFIyWzEyNyZhW3hpPj4yXV0oZixQYSxwLFcyLDB8YVtvbD4+Ml0pLGFbbG8+PjJdPWFbUGE+PjJdLGRsWzEyNyZiXSgwfGFbRzI+PjJd''@;'; put 'put ''LGdlPTB8YVtvcz4+Ml0sKDB8YVtXMj4+Ml0pLWdlfDApLCEoX3M+Pj4wPDIpOylhW3hhPj4yXT1hW1BhPj4yXSxwPTB8YVtMMD4+Ml07YnJlYWs7Y2FzZSAxMTppZighKDB8ZEEobCxmLDB8YVtQYT4+Ml0saykpKXtwPTE7YnJlYWsgZX1icmVhaztjYXNlIDEzOmlmKCEoMHxTXyhsLGYsMHxh''@;'; put 'put ''W1BhPj4yXSxrKSkpe3A9MTticmVhayBlfWJyZWFrO2RlZmF1bHQ6MHxhW3oyPj4yXSYmXzIobCxmLDB8YVtQYT4+Ml0sayl9fXdoaWxlKDApO3N3aXRjaChhW1BhPj4yXT1fcz0wfGFbTDA+PjJdLGFbeGE+PjJdPV9zLDB8YVtPZT4+Ml0pe2Nhc2UgMjpwPTM1O2JyZWFrIGU7Y2FzZSAzOnFh''@;'; put 'put ''PTE2MDticmVhayBlfX1zd2l0Y2goMHxxYSl7Y2FzZSA2OmlmKHc8PDI0Pj4yNCl7YVtBPj4yXT1hW1BhPj4yXSxwPTA7YnJlYWt9YVtsbz4+Ml09bSwocD0wfGFbZ2E+PjJdKT8oZmVbVzI+PjBdPTEwLGRsWzEyNyZwXSgwfGFbRzI+PjJdLFcyLDEpKTowfGFbejI+PjJdJiZfMihsLGYsMHxh''@;'; put 'put ''W1BhPj4yXSxtKSxjPygwfGFbRmY+PjJdKT09KDB8Yyk/KGFbQT4+Ml09bSxwPTApOnA9MTM6cD0zO2JyZWFrO2Nhc2UgMTU6aWYodzw8MjQ+PjI0KXthW0E+PjJdPWFbUGE+PjJdLHA9MDticmVha30oMHxjKT4wPygwfGFbRmY+PjJdKT09KDB8Yyk/KGFbQT4+Ml09YVtQYT4+Ml0scD0wKTpw''@;'; put 'put ''PTEzOnA9MzticmVhaztjYXNlIDIwOmFbeGE+PjJdPXAscD00O2JyZWFrO2Nhc2UgMjE6dzw8MjQ+PjI0PyhhW0E+PjJdPWFbUGE+PjJdLHA9MCk6cD01O2JyZWFrO2Nhc2UgMjM6dzw8MjQ+PjI0PyhhW0E+PjJdPWFbUGE+PjJdLHA9MCk6cD02O2JyZWFrO2Nhc2UgNTY6Y2FzZSA1ODpicmVh''@;'; put 'put ''aztjYXNlIDYzOkNvWzEyNyZhW2wrMjA+PjJdXShwKSxwPTEscWE9NzU7YnJlYWs7Y2FzZSA2OTpwPTEscWE9NzU7YnJlYWs7Y2FzZSA3OTpRQihsLDB8YVtXMj4+Ml0pLHFhPTg5O2JyZWFrO2Nhc2UgOTI6Y2FzZSAxMTc6cD0wfGR4KGwsMHxhW0wwPj4yXSxtLEEpO2JyZWFrO2Nhc2UgOTY6''@;'; put 'put ''YVt4YT4+Ml09cCxwPTc7YnJlYWs7Y2FzZSAxMzM6YVtsKzI3Nj4+Ml09NjEscD0wO2JyZWFrO2Nhc2UgMTM0OmlmKHc8PDI0Pj4yNCl7YVtBPj4yXT1hW1BhPj4yXSxwPTA7YnJlYWt9cD0wfGFbZ2E+PjJdO2Rve2lmKHApe2lmKDB8ZmVbRGw+PjBdKXtkbFsxMjcmcF0oMHxhW0cyPj4yXSxf''@;'; put 'put ''cz0wfGFbUGE+PjJdLG0tX3N8MCk7YnJlYWt9YVtXMj4+Ml09YVtvcz4+Ml0sUjJbMTI3JmFbeGk+PjJdXShmLFBhLG0sVzIsMHxhW29sPj4yXSksZGxbMTI3JmFbZ2E+PjJdXSgwfGFbRzI+PjJdLF9zPTB8YVtvcz4+Ml0sKDB8YVtXMj4+Ml0pLV9zfDApO2JyZWFrfTB8YVt6Mj4+Ml0mJl8y''@;'; put 'put ''KGwsZiwwfGFbUGE+PjJdLG0pfXdoaWxlKDApO2lmKCFjKXthW3hhPj4yXT1tLHA9MzticmVha31pZigoMHxhW0ZmPj4yXSk9PSgwfGMpKXthW0E+PjJdPW0scD0wO2JyZWFrfWFbeGE+PjJdPW0scD0xMzticmVhaztjYXNlIDE2MDphW0E+PjJdPWFbTDA+PjJdLHA9MH1yZXR1cm4gbGU9djEs''@;'; put 'put ''MHxwfWZ1bmN0aW9uIGdBKGwpe3ZhciBNLEQsUixHLHEsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDtxPWxlLGxlPWxlKzE2fDAsRD1xLEE9MTU2KyhNPTB8YVszNTIrKGx8PTApPj4yXSl8MCxSPWwrNDEyfDAsRz1sKzQyNHwwO2U6ZG97aWYoMHxhW0E+PjJdKXtpZigoMHwoYz0w''@;'; put 'put ''fGFbRz4+Ml0pKT09KDB8YVsodz1sKzQyMHwwKT4+Ml0pKXtpZighKCgwfHZsKFIpKTw8MjQ+PjI0KSl7Yz0wO2JyZWFrfWM9MHxhW0c+PjJdfWZvcihhW0c+PjJdPWMrMSxmZVtjPj4wXT02MSxmPSgwfGFbMjArKDB8YVtBPj4yXSk+PjJdKSsoKDAhPSgwfGZlWyhtPWwrNDY4fDApPj4wXSkp''@;'; put 'put ''PDwzMT4+MzEpfDAscD0wOzspe2lmKCgwfHApPj0oMHxmKSl7Yz0xLGs9bSxiPTEyO2JyZWFrIGV9aWYoKDB8KGM9MHxhW0c+PjJdKSk9PSgwfGFbdz4+Ml0pKXtpZighKCgwfHZsKFIpKTw8MjQ+PjI0KSl7Yz0wO2JyZWFrIGV9Yz0wfGFbRz4+Ml19az0wfGZlWygwfGFbMTYrKDB8YVtBPj4y''@;'; put 'put ''XSk+PjJdKStwPj4wXSxhW0c+PjJdPWMrMSxmZVtjPj4wXT1rLHA9cCsxfDB9fWVsc2UgYz0wLHc9bCs0MjB8MCxrPWwrNDY4fDAsYj0xMn13aGlsZSgwKTtlOmRve2lmKDEyPT0oMHxiKSl7ZWMoRCxNKzYwfDApO3Q6Zm9yKDs7KXtkb3tpZighKGY9MHxEbShEKSkpYnJlYWsgdDtBPWYrNHww''@;'; put 'put ''fXdoaWxlKCEoMHxhW0E+PjJdKSk7aWYoYzw8MjQ+PjI0KXtpZigoMHwoYz0wfGFbRz4+Ml0pKT09KDB8YVt3Pj4yXSkpe2lmKCEoKDB8dmwoUikpPDwyND4+MjQpKXtjPTA7YnJlYWsgZX1jPTB8YVtHPj4yXX1hW0c+PjJdPWMrMSxmZVtjPj4wXT0xMn1mb3IobT0wfGFbZj4+Ml07cD0oMHwo''@;'; put 'put ''Yz0wfGFbRz4+Ml0pKT09KDB8YVt3Pj4yXSksKGY9MHxmZVttPj4wXSk8PDI0Pj4yNDspe2lmKHApe2lmKCEoKDB8dmwoUikpPDwyND4+MjQpKXtjPTA7YnJlYWsgZX1jPTB8YVtHPj4yXSxmPTB8ZmVbbT4+MF19YVtHPj4yXT1jKzEsZmVbYz4+MF09ZixtPW0rMXwwfWlmKHApe2lmKCEoKDB8''@;'; put 'put ''dmwoUikpPDwyND4+MjQpKXtjPTA7YnJlYWsgZX1jPTB8YVtHPj4yXX1mb3IoYVtHPj4yXT1jKzEsZmVbYz4+MF09NjEscD0oMHxhWzIwKygwfGFbQT4+Ml0pPj4yXSkrKCgwIT0oMHxmZVtrPj4wXSkpPDwzMT4+MzEpfDAsZj0wOzspe2lmKCgwfGYpPj0oMHxwKSl7Yz0xO2NvbnRpbnVlIHR9''@;'; put 'put ''aWYoKDB8KGM9MHxhW0c+PjJdKSk9PSgwfGFbdz4+Ml0pKXtpZighKCgwfHZsKFIpKTw8MjQ+PjI0KSl7Yz0wO2JyZWFrIGV9Yz0wfGFbRz4+Ml19Yj0wfGZlWygwfGFbMTYrKDB8YVtBPj4yXSk+PjJdKStmPj4wXSxhW0c+PjJdPWMrMSxmZVtjPj4wXT1iLGY9ZisxfDB9fWVjKEQsTSk7dDpm''@;'; put 'put ''b3IoOzspe2Rve2lmKCEoZj0wfERtKEQpKSlicmVhayB0fXdoaWxlKCEoMHxmZVtmKzMyPj4wXSkpO2lmKGM8PDI0Pj4yNCl7aWYoKDB8KGM9MHxhW0c+PjJdKSk9PSgwfGFbdz4+Ml0pKXtpZighKCgwfHZsKFIpKTw8MjQ+PjI0KSl7Yz0wO2JyZWFrIGV9Yz0wfGFbRz4+Ml19YVtHPj4yXT1j''@;'; put 'put ''KzEsZmVbYz4+MF09MTJ9Zm9yKHA9MHxhW2Y+PjJdOzspe2lmKCEoKGY9MHxmZVtwPj4wXSk8PDI0Pj4yNCkpe2M9MTtjb250aW51ZSB0fWlmKCgwfChjPTB8YVtHPj4yXSkpPT0oMHxhW3c+PjJdKSl7aWYoISgoMHx2bChSKSk8PDI0Pj4yNCkpe2M9MDticmVhayBlfWM9MHxhW0c+PjJdLGY9''@;'; put 'put ''MHxmZVtwPj4wXX1hW0c+PjJdPWMrMSxmZVtjPj4wXT1mLHA9cCsxfDB9fWlmKCgwfChjPTB8YVtHPj4yXSkpPT0oMHxhW3c+PjJdKSl7aWYoISgoMHx2bChSKSk8PDI0Pj4yNCkpe2M9MDticmVha31jPTB8YVtHPj4yXX1hW0c+PjJdPWMrMSxmZVtjPj4wXT0wLGM9MHxhW2wrNDI4Pj4yXX19''@;'; put 'put ''d2hpbGUoMCk7cmV0dXJuIGxlPXEsMHxjfWZ1bmN0aW9uIEVfKGwsYyxmLHAsbSl7Y3w9MCxmfD0wLG18PTA7dmFyIGJ0LGFuLFNuLHVyLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTAs''@;'; put 'put ''V2U9MCxhdD0wLFN0PTAsa3Q9MCxzdD0wLEV0PTAsWnQ9MCxjdD0wLEhuPTAsSHI9MDt1cj1sZSxsZT1sZSs4MHwwLGJ0PXVyKzE2fDAsYW49dXIsKEE9MHxfMShsfD0wLGI9MjArKFNuPTB8YVtsKzM1Mj4+Ml0pfDAsMHxhWyhwfD0wKT4+Ml0sMCkpPyh3PUEscWU9Nik6MCE9KDB8KEE9MHxU''@;'; put 'put ''XyhTbis4MHwwLDB8YVtwPj4yXSkpKSYmMCE9KDB8KHc9MHxfMShsLGIsQSwyNCkpKT8wIT0oMHxmZVtsKzIzMj4+MF0pJiYwPT0oMHxJXyhsLHcpKT9BPTE6cWU9NjpBPTE7ZTpkb3tpZig2PT0oMHxxZSkpe2lmKFJlPTB8YVt3KzEyPj4yXSwoMHwoQT0oYmU9MHxxMFsxMjcmYVsoYj1jKzM2''@;'; put 'put ''fDApPj4yXV0oYyxmLDB8YVsoaz1sKzM3NnwwKT4+Ml0sMHxhWyhnZT1sKzM4OHwwKT4+Ml0pKStSZXwwKSk+KDB8KE09MHxhW2s+PjJdKSkpe2lmKGFbaz4+Ml09QT1BKzE2fDAsIShBPTB8QmlbMTI3JmFbbCsxNj4+Ml1dKDB8YVtnZT4+Ml0sQTw8NCkpKXthW2s+PjJdPU0sQT0xO2JyZWFr''@;'; put 'put ''fWFbZ2U+PjJdPUEsKDB8YmUpPigwfE0pJiZxMFsxMjcmYVtiPj4yXV0oYyxmLGJlLEEpfWZvcihjdD0wfGFbZ2U+PjJdLHE9YysyOHwwLEV0PWwrNDEyfDAsWnQ9bCs0Mjh8MCxMZT13KzIwfDAsRz1sKzQyNHwwLHBlPTAsUj0wLGI9MDshKCgwfFIpPj0oMHxiZSkpOyl7aWYoIShEPTB8Yl8o''@;'; put 'put ''bCxjLEQ9MHxhWygwfGFbZ2U+PjJdKSsoUjw8NCk+PjJdLEQrKDB8QmlbMTI3JmFbcT4+Ml1dKGMsRCkpfDApKSl7QT0xO2JyZWFrIGV9aWYoMHxmZVsoQT0oMHxhW0Q+PjJdKS0xfDApPj4wXSl7cWU9MTU7YnJlYWt9aWYoZmVbQT4+MF09MSxmPXBlKzF8MCxhW2N0KyhwZTw8Mik+PjJdPWFb''@;'; put 'put ''RD4+Ml0sMHxmZVsoTT0wfGFbZ2U+PjJdKSsoUjw8NCkrMTI+PjBdKXtpZihzdD0wfGIyKEV0LGMsMHxhW00rKFI8PDQpKzQ+PjJdLDB8YVtNKyhSPDw0KSs4Pj4yXSksYVtjdCsoZjw8Mik+PjJdPXN0LCFzdCl7QT0xO2JyZWFrIGV9fWVsc2V7dDpkb3tpZigwfGZlW0QrOD4+MF0pe2ZvcihB''@;'; put 'put ''PTA7Oyl7aWYoKDB8QSk+PSgwfFJlKSl7QT0xO2JyZWFrIHR9aWYoKDB8RCk9PSgwfGFbKGs9MHxhW0xlPj4yXSkrKDEyKkF8MCk+PjJdKSlicmVhaztBPUErMXwwfUE9MHxmZVtrKygxMipBfDApKzQ+PjBdfWVsc2UgQT0xfXdoaWxlKDApO2lmKDB8KEE9MHxfXyhsLGMsQSwwfGFbTSsoUjw8''@;'; put 'put ''NCkrND4+Ml0sMHxhW00rKFI8PDQpKzg+PjJdLEV0KSkpYnJlYWsgZTthW2N0KyhmPDwyKT4+Ml09YVtadD4+Ml19YVtadD4+Ml09YVtHPj4yXSxBPTB8YVtEKzQ+PjJdO2Rve2lmKEEpe2lmKDB8ZmVbRCs5Pj4wXSl7aWYoQT0wfG1BKGwsQSxELDB8YVtjdCsoZjw8Mik+PjJdLG0pKWJyZWFr''@;'; put 'put ''IGU7QT1wZTticmVha31mZVsoMHxhW0Q+PjJdKS0xPj4wXT0yLGI9YisxfDAsQT1wZSsyfDA7YnJlYWt9QT1wZSsyfDB9d2hpbGUoMCk7cGU9QSxSPVIrMXwwfWlmKDE1PT0oMHxxZSkpe2lmKCgwfGFbbCsxNDQ+PjJdKSE9KDB8Yykpe0E9ODticmVha31hW2wrMjg0Pj4yXT1hWygwfGFbZ2U+''@;'; put 'put ''PjJdKSsoUjw8NCk+PjJdLEE9ODticmVha31hW2wrMzgwPj4yXT1wZSxBPTB8YVt3Kzg+PjJdO3Q6ZG97aWYoMCE9KDB8QSkmJihPZT0wfGFbQT4+Ml0sMCE9KDB8ZmVbT2UrLTE+PjBdKSkpZm9yKEE9MDs7KXtpZigoMHxBKT49KDB8cGUpKXtmPTAsUj1iLHN0PXBlO2JyZWFrIHR9aWYoKDB8''@;'; put 'put ''YVtjdCsoQTw8Mik+PjJdKT09KDB8T2UpKXtxZT0zNzticmVhayB0fUE9QSsyfDB9ZWxzZSBBPS0xLHFlPTM3fXdoaWxlKDApO2ZvcigzNz09KDB8cWUpJiYoYVtsKzM4ND4+Ml09QSxmPTAsUj1iLHN0PXBlKTshKCgwfGYpPj0oMHxSZSkpOyl7az0oMHxhWyhiPTB8YVsoTT0oQT0wfGFbTGU+''@;'; put 'put ''PjJdKSsoMTIqZnwwKXwwKT4+Ml0pPj4yXSktMXwwO3Q6ZG97aWYoMD09KDB8ZmVbaz4+MF0pJiYoSGU9QSsoMTIqZnwwKSs4fDAsVmU9MHxhW0hlPj4yXSwwIT0oMHxWZSkpKXtBPTB8YVtiKzQ+PjJdO2Rve2lmKEEpe2lmKDB8ZmVbYis5Pj4wXSl7aWYoQT0wfG1BKGwsQSxiLFZlLG0pKWJy''@;'; put 'put ''ZWFrIGU7QT1SLGI9c3Q7YnJlYWsgdH1mZVtrPj4wXT0yLEE9UisxfDA7YnJlYWt9ZmVbaz4+MF09MSxBPVJ9d2hpbGUoMCk7YVtjdCsoc3Q8PDIpPj4yXT1hW2FbTT4+Ml0+PjJdLGFbY3QrKHN0KzE8PDIpPj4yXT1hW0hlPj4yXSxiPXN0KzJ8MH1lbHNlIEE9UixiPXN0fXdoaWxlKDApO2Y9''@;'; put 'put ''ZisxfDAsUj1BLHN0PWJ9YVtjdCsoc3Q8PDIpPj4yXT0wO3Q6ZG97aWYoUil7TT0wfGFbKEQ9bCszOTZ8MCk+PjJdLEE9MjU1JihmPTB8ZmVbKGt0PWwrNDAwfDApPj4wXSk7ZG97aWYoUjw8MT4+QSl7QT1mO2Rve1N0PUEsQT1BKzE8PDI0Pj4yNH13aGlsZSgwIT0oUj4+KDI1NSZTdCl8MCkp''@;'; put 'put ''O2lmKGZlW2t0Pj4wXT1BPSgyNTUmQSk+Mz9BOjMsYj0wfEJpWzEyNyZhW2wrMTY+PjJdXSgwfGFbKGs9bCszOTJ8MCk+PjJdLDEyPDwoQSY9MjU1KSkpe2Fbaz4+Ml09YixiPTE8PEEscWU9NTU7YnJlYWt9ZmVba3Q+PjBdPWYsQT0xO2JyZWFrIGV9QT0xPDxBLGs9bCszOTJ8MCxNPyhiPUEs''@;'; put 'put ''QT1NKTooYj1BLHFlPTU1KX13aGlsZSgwKTtuOmRve2lmKDU1PT0oMHxxZSkpZm9yKEE9Yjs7KXtpZighQSl7QT0tMTticmVhayBufWFbKDB8YVtrPj4yXSkrKDEyKihTdD1BKy0xfDApfDApPj4yXT0tMSxBPVN0fX13aGlsZSgwKTthW0Q+PjJdPVN0PUErLTF8MCxMZT1Tbis0MHwwLFJlPWwr''@;'; put 'put ''NDI0fDAsSGU9bCs0MjB8MCxxZT0wLWJ8MCxydD0oVmU9YistMXwwKT4+PjIsV2U9bCsyMzN8MCxhdD1sKzQ2OHwwLEE9MCxPZT1SO246Zm9yKDs7KXtmb3IoOzspe2lmKCgwfEEpPj0oMHxzdCkpYnJlYWsgdDtpZigyPT0oMHxmZVsoZj0oTT0wfGFbKGM9Y3QrKEE8PDIpfDApPj4yXSktMXww''@;'; put 'put ''KT4+MF0pKWJyZWFrO2ZlW2Y+PjBdPTAsQT1BKzJ8MH1pZih2QShsLGFuKSxSaChidCxhbiksZmVbZj4+MF09MCwhKGY9MHxfMShsLExlLE0sMCkpKXtBPTE7YnJlYWt9aWYoIShmPTB8YVtmKzQ+PjJdKSl7QT0xO2JyZWFrfWlmKCEoYmU9MHxhW2YrND4+Ml0pKXtBPTI3O2JyZWFrfWZvcihH''@;'; put 'put ''PWJlKzIwfDAscT1iZSsxNnwwLFI9MDtEPTB8YVtxPj4yXSwhKCgwfFIpPj0oMHwoZj0wfGFbRz4+Ml0pKSk7KXtpZihEPTB8ZmVbRCtSPj4wXSwoMHwoZj0wfGFbUmU+PjJdKSk9PSgwfGFbSGU+PjJdKSl7aWYoISgoMHx2bChFdCkpPDwyND4+MjQpKXtBPTE7YnJlYWsgbn1mPTB8YVtSZT4+''@;'; put 'put ''Ml19YVtSZT4+Ml09ZisxLGZlW2Y+PjBdPUQsUj1SKzF8MH1wNShidCxELGYpO2Rve2dlPU0sTT1NKzF8MH13aGlsZSg1OCE9KDB8ZmVbZ2U+PjBdKSk7Zm9yKHA1KGJ0LE0sMHxHNChNKSk7Oyl7aWYoKDB8KGY9MHxhW1JlPj4yXSkpPT0oMHxhW0hlPj4yXSkpe2lmKCEoKDB8dmwoRXQpKTw8''@;'; put 'put ''MjQ+PjI0KSl7QT0xO2JyZWFrIG59Zj0wfGFbUmU+PjJdfWlmKGdlPTB8ZmVbTT4+MF0sYVtSZT4+Ml09ZisxLGZlW2Y+PjBdPWdlLCEoMHxmZVtNPj4wXSkpYnJlYWs7TT1NKzF8MH1mb3IoZ2U9MHxNNihidCksRz0wfGFbaz4+Ml0scT1nZSZxZSxNPTAscGU9VmUmZ2U7KDB8YVtHKygxMipw''@;'; put 'put ''ZXwwKT4+Ml0pPT0oMHxTdCk7KXtpZigoMHxhW0crKDEyKnBlfDApKzQ+PjJdKT09KDB8Z2UpKXtmb3IoZj0wfGFbRysoMTIqcGV8MCkrOD4+Ml0sRD0wfGFbWnQ+PjJdOyEoKFI9KEhyPTB8ZmVbRD4+MF0pPDwyND4+MjQ9PTApfEhyPDwyND4+MjQhPSgwfGZlW2Y+PjBdKSk7KWY9ZisxfDAs''@;'; put 'put ''RD1EKzF8MDtpZihSKXtBPTg7YnJlYWsgbn19TTw8MjQ+PjI0fHwoTT0yNTUmKHE+Pj4oKDB8WHRba3Q+PjBdKS0xfDApJnJ0fDEpKSxwZT1wZSsoKDB8cGUpPCgwfChIcj0yNTUmTSkpP2I6MCktSHJ8MH1pZigwfGZlW1dlPj4wXSlmb3IoZmVbKDB8YVtSZT4+Ml0pLTE+PjBdPTB8ZmVbYXQ+''@;'; put 'put ''PjBdLGY9MHxhW2FbYmU+PjJdPj4yXTs7KXtpZigoMHwoTT0wfGFbUmU+PjJdKSk9PSgwfGFbSGU+PjJdKSl7aWYoISgoMHx2bChFdCkpPDwyND4+MjQpKXtBPTE7YnJlYWsgbn1NPTB8YVtSZT4+Ml19aWYoSHI9MHxmZVtmPj4wXSxhW1JlPj4yXT1NKzEsZmVbTT4+MF09SHIsISgwfGZlW2Y+''@;'; put 'put ''PjBdKSlicmVhaztmPWYrMXwwfWlmKEhyPTB8YVtadD4+Ml0sYVtadD4+Ml09YVtSZT4+Ml0sYVtjPj4yXT1IcixhWygwfGFbaz4+Ml0pKygxMipwZXwwKT4+Ml09U3QsYVsoMHxhW2s+PjJdKSsoMTIqcGV8MCkrND4+Ml09Z2UsYVsoMHxhW2s+PjJdKSsoMTIqcGV8MCkrOD4+Ml09SHIsQT1B''@;'; put 'put ''KzJ8MCwhKE9lPU9lKy0xfDApKWJyZWFrIHR9YnJlYWsgZX1BPTB9d2hpbGUoMCk7Zm9yKDs7KXtpZigoMHxBKT49KDB8c3QpKXtBPW07YnJlYWt9ZmVbKDB8YVtjdCsoQTw8Mik+PjJdKS0xPj4wXT0wLEE9QSsyfDB9Zm9yKDtBPTB8YVtBPj4yXTspZmVbKDB8YVthW0ErMTI+PjJdPj4yXSkt''@;'; put 'put ''MT4+MF09MCxBPUErNHwwO2lmKDB8ZmVbbCsyMzI+PjBdKXtpZihBPTB8YVt3KzQ+PjJdKXtpZighKEE9MHxhW0ErND4+Ml0pKXtBPTI3O2JyZWFrfWZvcih3PTB8YVtwPj4yXTtiPXcrMXwwLDU4IT0oMHxmZVt3Pj4wXSk7KXc9Yn1lbHNle2lmKCEoQT0wfGFbU24rMTU2Pj4yXSkpe0E9MDti''@;'; put 'put ''cmVha31iPTB8YVtwPj4yXX1pZigwIT0oMHxmZVtsKzIzMz4+MF0pJiYwIT0oMHwoSG49MHxhW2FbQT4+Ml0+PjJdKSkpZm9yKHc9MDtrPXcrMXwwLDB8ZmVbSG4rdz4+MF07KXc9aztlbHNlIGs9MDtmb3IoYVtwKzQ+PjJdPWIsYVtwKzE2Pj4yXT1hWyhSPUErMjB8MCk+PjJdLGFbcCs4Pj4y''@;'; put 'put ''XT1hW2FbQT4+Ml0+PjJdLGFbcCsyMD4+Ml09ayxHPTA7cT1HKzF8MCwwfGZlW2IrRz4+MF07KUc9cTtpZigoMHwoTT1xK2srKHc9MHxhW1I+PjJdKXwwKSk+KDB8YVsoZj1BKzI0fDApPj4yXSkpe2lmKCEoRD0wfF9vWzYzJmFbbCsxMj4+Ml1dKHc9TSsyNHwwKSkpe0E9MTticmVha31mb3Io''@;'; put 'put ''YVtmPj4yXT13LGdvKDB8RCwwfGFbKGY9QSsxNnwwKT4+Ml0sMHxhW1I+PjJdKSx3PWwrMzYwfDA7dz0wfGFbdz4+Ml07KSgwfGFbKE09dysxMnwwKT4+Ml0pPT0oMHxhW2Y+PjJdKSYmKGFbTT4+Ml09RCk7Q29bMTI3JmFbbCsyMD4+Ml1dKDB8YVtmPj4yXSksYVtmPj4yXT1ELE09RCx3PTB8''@;'; put 'put ''YVtSPj4yXX1lbHNlIGY9TT1BKzE2fDAsTT0wfGFbTT4+Ml07Z28oMHwodz1NK3d8MCksMHxiLDB8cSksMHxrJiYoZmVbKEhyPXcrR3wwKT4+MF09MHxmZVtsKzQ2OD4+MF0sZ28oSHIrMXwwLDB8YVthW0E+PjJdPj4yXSwwfGspKSxhW3A+PjJdPWFbZj4+Ml0sQT0wfWVsc2UgQT0wfX13aGls''@;'; put 'put ''ZSgwKTtyZXR1cm4gbGU9dXIsMHxBfWZ1bmN0aW9uIFFCKGwsYyl7Y3w9MDt2YXIgZixwLG0sQT0wLHc9MDtmb3IocD0xMDQrKGx8PTApfDAsbT1sKzM3MnwwLGY9bCs0fDA7YzspKGw9MHxhW3A+PjJdKSYmR3NbNjMmbF0oMHxhW2Y+PjJdLDB8YVthW2M+PjJdPj4yXSksbD1jLEE9MHxhWyh3''@;'; put 'put ''PWMrNHwwKT4+Ml0sYVt3Pj4yXT1hW20+PjJdLGFbbT4+Ml09YyxhWzQrKDB8YVtsPj4yXSk+PjJdPWFbYys4Pj4yXSxjPUF9ZnVuY3Rpb24gZHgobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIHcsYixrLE0sRCxSLHEsbT0wLEE9MCxHPTAscGU9MDtxPWxlLGxlPWxlKzE2fDAsYj1xLGFb''@;'; put 'put ''Mjc2KyhsfD0wKT4+Ml09NjIsYVsoaz1sKzI4NHwwKT4+Ml09YyxNPWwrMTQ0fDAsRD1sKzI4OHwwLFI9bCs4MHwwLHc9bCs0NzZ8MCxtPWM7ZTpmb3IoOzspe3N3aXRjaChhW2I+PjJdPTAscGU9MHxxMFsxMjcmYVsocGU9MHxhW00+PjJdKT4+Ml1dKHBlLG0sZixiKSxhW0Q+PjJdPWM9MHxh''@;'; put 'put ''W2I+PjJdLEE9YywwfHBlKXtjYXNlLTE1Okc9MzticmVhayBlO2Nhc2UtNDpHPTc7YnJlYWsgZTtjYXNlIDA6Rz0xMjticmVhayBlO2Nhc2UtMTpHPTEzO2JyZWFrIGU7Y2FzZS0yOkc9MTU7YnJlYWsgZTtjYXNlIDE1OjB8YVtSPj4yXSYmXzIobCwwfGFbTT4+Ml0sbSxBKTticmVhaztjYXNl''@;'; put 'put ''IDExOmlmKCEoMHxkQShsLDB8YVtNPj4yXSxtLEEpKSl7Yz0xO2JyZWFrIGV9YnJlYWs7Y2FzZSAxMzppZighKDB8U18obCwwfGFbTT4+Ml0sbSxBKSkpe2M9MTticmVhayBlfWJyZWFrO2RlZmF1bHQ6Yz05O2JyZWFrIGV9c3dpdGNoKGFbaz4+Ml09Yz0wfGFbYj4+Ml0sMHxhW3c+PjJdKXtj''@;'; put 'put ''YXNlIDI6Yz0zNTticmVhayBlO2Nhc2UgMzpHPTE4O2JyZWFrIGV9bT1jfWRve2lmKDM9PSgwfEcpKXtpZigwfGFbUj4+Ml0pe2lmKF8yKGwsMHxhW00+PjJdLG0sQSksMj09KDB8YVt3Pj4yXSkpe2M9MzU7YnJlYWt9Yz0wfGFbYj4+Ml19YVtwPj4yXT1jLGM9MH1lbHNlIDc9PSgwfEcpPyhh''@;'; put 'put ''W3A+PjJdPW0sYz0wKToxMj09KDB8Ryk/KGFbaz4+Ml09YyxjPTQpOjEzPT0oMHxHKT8wfGZlW2wrNDgwPj4wXT9jPTU6KGFbcD4+Ml09bSxjPTApOjE1PT0oMHxHKT8wfGZlW2wrNDgwPj4wXT9jPTY6KGFbcD4+Ml09bSxjPTApOjE4PT0oMHxHKSYmKGFbcD4+Ml09YyxjPTApfXdoaWxlKDAp''@;'; put 'put ''O3JldHVybiBsZT1xLDB8Y31mdW5jdGlvbiBQbShsLGMsZixwLG0sQSl7bHw9MCxjfD0wLHB8PTAsbXw9MCxBfD0wO3ZhciBrLE0sRCxSLEcscSxPZSxMZSxSZSxIZSxWZSxxZSxXZSx3PTAsYj0wLHBlPTAsZ2U9MCxiZT0wLHJ0PTA7V2U9bGUsbGU9bGUrMTZ8MCxxZT1XZSs0fDAsSGU9V2Us''@;'; put 'put ''YVsoVmU9V2UrOHwwKT4+Ml09dz0wfGFbKGZ8PTApPj4yXSwoMHxhW2wrMTQ0Pj4yXSk9PSgwfGMpPyhhWyhnZT1sKzI4NHwwKT4+Ml09dyxiZT1sKzI4OHwwKTooZ2U9YmU9MHxhW2wrMjk2Pj4yXSxiZT1iZSs0fDApLGFbZ2U+PjJdPXcsYVtmPj4yXT0wLGs9Yys4fDAsTT1sKzYwfDAsT2U9''@;'; put 'put ''bCs4MHwwLExlPWwrNHwwLFJlPWwrNDc2fDAsRD1jKzY4fDAsUj1sKzQ0fDAsRz1jKzU2fDAscT1sKzQ4fDA7ZTpmb3IoOzspe2I9MHxxMFsxMjcmYVtrPj4yXV0oYywwfGFbVmU+PjJdLHAscWUpLGFbYmU+PjJdPXc9MHxhW3FlPj4yXSxwZT13O3Q6ZG97c3dpdGNoKDB8Yil7Y2FzZSA0MDpy''@;'; put 'put ''dD02O2JyZWFrIGU7Y2FzZSAwOnJ0PTIzO2JyZWFrIGU7Y2FzZS0yOnJ0PTI0O2JyZWFrIGU7Y2FzZS00OmNhc2UtMTpydD0yNjticmVhayBlO2Nhc2UgNzppZigwfCh3PTB8YVtNPj4yXSkpe2ZlW0hlPj4wXT0xMCxkbFsxMjcmd10oMHxhW0xlPj4yXSxIZSwxKTticmVhayB0fTB8YVtPZT4+''@;'; put 'put ''Ml0mJl8yKGwsYywwfGFbVmU+PjJdLHBlKTticmVhaztjYXNlIDY6aWYoIShiPTB8YVtNPj4yXSkpe2lmKCEoMHxhW09lPj4yXSkpYnJlYWsgdDtfMihsLGMsMHxhW1ZlPj4yXSxwZSk7YnJlYWsgdH1pZigwfGZlW0Q+PjBdKXtkbFsxMjcmYl0oMHxhW0xlPj4yXSxwZT0wfGFbVmU+PjJdLHct''@;'; put 'put ''cGV8MCk7YnJlYWsgdH1mb3Iodz1wZTthW0hlPj4yXT1hW1I+PjJdLHBlPTB8UjJbMTI3JmFbRz4+Ml1dKGMsVmUsdyxIZSwwfGFbcT4+Ml0pLGFbYmU+PjJdPWFbcWU+PjJdLGRsWzEyNyZiXSgwfGFbTGU+PjJdLHc9MHxhW1I+PjJdLCgwfGFbSGU+PjJdKS13fDApLCEocGU+Pj4wPDIpOylh''@;'; put 'put ''W2dlPj4yXT1hW1ZlPj4yXSx3PTB8YVtxZT4+Ml07YnJlYWs7ZGVmYXVsdDpydD0yODticmVhayBlfX13aGlsZSgwKTtzd2l0Y2goYVtWZT4+Ml09cGU9MHxhW3FlPj4yXSxhW2dlPj4yXT1wZSwwfGFbUmU+PjJdKXtjYXNlIDM6cnQ9MzA7YnJlYWsgZTtjYXNlIDI6dz0zNTticmVhayBlfX1y''@;'; put 'put ''ZXR1cm4gNj09KDB8cnQpPygodz0wfGFbbCs3Nj4+Ml0pP0NvWzEyNyZ3XSgwfGFbTGU+PjJdKTowfGFbT2U+PjJdJiZfMihsLGMsMHxhW1ZlPj4yXSxwZSksYVtmPj4yXT13PTB8YVtxZT4+Ml0sYVttPj4yXT13LHc9Mj09KDB8YVtSZT4+Ml0pPzM1OjApOjIzPT0oMHxydCk/KGFbZ2U+PjJd''@;'; put 'put ''PXcsdz00KToyND09KDB8cnQpP0E8PDI0Pj4yND8oYVttPj4yXT1hW1ZlPj4yXSx3PTApOnc9NjoyNj09KDB8cnQpP0E8PDI0Pj4yND8oYVttPj4yXT1hW1ZlPj4yXSx3PTApOnc9MjA6Mjg9PSgwfHJ0KT8oYVtnZT4+Ml09dyx3PTIzKTozMD09KDB8cnQpJiYoYVttPj4yXT1hW3FlPj4yXSx3''@;'; put 'put ''PTApLGxlPVdlLDB8d31mdW5jdGlvbiBweChsLGMsZixwKXtyZXR1cm4gMD09KDB8KGM9MHxCbShsfD0wLDEsMHxhW2wrMTQ0Pj4yXSxjfD0wLGZ8PTAscHw9MCwwPT0oMHxmZVtsKzQ4MD4+MF0pJjEpKSkmJigwfHhfKGwpKTw8MjQ+PjI0PT0wJiYoYz0xKSwwfGN9ZnVuY3Rpb24geF8obCl7''@;'; put 'put ''dmFyIFIsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wO2ZvcihSPTE2KyhsfD0wKXwwLGw9bCszNjB8MDs7KXtpZighKGw9MHxhW2w+PjJdKSl7bD0xO2JyZWFrfWlmKCgwfChmPTB8YVsoRD1sKzR8MCk+PjJdKSk9PSgwfChwPShtPTB8YVsoaz1sKzM2fDApPj4yXSkr''@;'; put 'put ''KGI9MSsoMHxhW2wrMjQ+PjJdKXwwKXwwKSkpe2w9MTticmVha31pZigoMHwoQT0oYz0wfGFbKE09bCs4fDApPj4yXSkrYnwwKSk+KCgwfGFbKHc9bCs0MHwwKT4+Ml0pLW18MCkpe2lmKCEocD0wfEJpWzEyNyZhW1I+PjJdXShtLEEpKSl7bD0wO2JyZWFrfSgwfGFbKGM9bCsxMnwwKT4+Ml0p''@;'; put 'put ''PT0oMHwobT0wfGFbaz4+Ml0pKSYmKGFbYz4+Ml09cCksMHwoZj0wfGFbKGM9bCsxNnwwKT4+Ml0pJiYoYVtjPj4yXT1wKyhmLW0pKSxhW2s+PjJdPXAsYVt3Pj4yXT1wK0EscD1wK2J8MCxmPTB8YVtEPj4yXSxjPTB8YVtNPj4yXX1nbygwfHAsMHxmLDB8YyksYVtEPj4yXT1wfXJldHVybiAw''@;'; put 'put ''fGx9ZnVuY3Rpb24gVF8obCxjKXtjfD0wO3ZhciBwLG0sZj0wLEE9MCx3PTA7Zm9yKHA9MTIrKGx8PTApfDAsbT1sKzh8MDs7KXtpZigoMHwoZj0wfGFbcD4+Ml0pKT09KDB8YVttPj4yXSkpe2lmKCEoKDB8dmwobCkpPDwyND4+MjQpKXtjPTA7YnJlYWt9Zj0wfGFbcD4+Ml19aWYodz0wfGZl''@;'; put 'put ''W2M+PjBdLGFbcD4+Ml09ZisxLGZlW2Y+PjBdPXcsISgwfGZlW2M+PjBdKSl7QT02O2JyZWFrfWM9YysxfDB9cmV0dXJuIDY9PSgwfEEpJiYoYz0wfGFbKHc9bCsxNnwwKT4+Ml0sYVt3Pj4yXT1hW3A+PjJdKSwwfGN9ZnVuY3Rpb24gSV8obCxjKXt2YXIgdyxiLGssTSxELGY9MCxwPTAsbT0w''@;'; put 'put ''LEE9MCxSPTA7Yj04MCsoUj0wfGFbMzUyKyhsfD0wKT4+Ml0pfDAsaz1SKzkyfDAsTT1SKzg4fDAsRD1SKzYwfDAsUj1SKzk2fDAsdz00KyhjfD0wKXwwLEE9MHxhW2M+PjJdO2U6Zm9yKDs7KXtzd2l0Y2goMHxmZVtBPj4wXSl7Y2FzZSAwOmY9MTticmVhayBlO2Nhc2UgNTg6Zm9yKG09MHxh''@;'; put 'put ''W2M+PjJdO3A9KDB8KGY9MHxhW2s+PjJdKSk9PSgwfGFbTT4+Ml0pLCgwfG0pIT0oMHxBKTspe2lmKHApe2lmKCEoKDB8dmwoYikpPDwyND4+MjQpKXtmPTA7YnJlYWsgZX1mPTB8YVtrPj4yXX1wPTB8ZmVbbT4+MF0sYVtrPj4yXT1mKzEsZmVbZj4+MF09cCxtPW0rMXwwfWlmKHApe2lmKCEo''@;'; put 'put ''KDB8dmwoYikpPDwyND4+MjQpKXtmPTA7YnJlYWsgZX1mPTB8YVtrPj4yXX1pZihhW2s+PjJdPWYrMSxmZVtmPj4wXT0wLCEoZj0wfF8xKGwsRCwwfGFbUj4+Ml0sOCkpKXtmPTA7YnJlYWsgZX0oMHxhW2Y+PjJdKT09KDB8KHA9MHxhW1I+PjJdKSk/YVtSPj4yXT1hW2s+PjJdOmFbaz4+Ml09''@;'; put 'put ''cCxhW3c+PjJdPWZ9QT1BKzF8MH1yZXR1cm4gMHxmfWZ1bmN0aW9uIG1BKGwsYyxmLHAsbSl7bHw9MCxmfD0wLG18PTA7dmFyIEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wO2s9MHxmZVsocHw9MCk+PjBdLEE9MD09KDB8KHc9MHxhWyhjfD0wKT4+Ml0pKTtkb3tpZihrPDwy''@;'; put 'put ''ND4+MjQpaWYoQXx8MTIwIT0oMHxmZVt3Pj4wXSl8fDEwOSE9KDB8ZmVbdysxPj4wXSl8fDEwOCE9KDB8ZmVbdysyPj4wXSkpRD0wLGI9MTE7ZWxzZXtpZigoQT0wfGZlW3crMz4+MF0pPDwyND4+MjQ9PTExMCYmMTE1PT0oMHxmZVt3KzQ+PjBdKSYmMD09KDB8ZmVbdys1Pj4wXSkpe0E9Mzk7''@;'; put 'put ''YnJlYWt9RD1BPDwyND4+MjQ9PTAmMSxiPTExfWVsc2UgQT8oRD0wLGI9MTEpOkE9Mjh9d2hpbGUoMCk7ZTpkb3tpZigxMT09KDB8Yikpe2ZvcihNPUQ8PDI0Pj4yNCE9MCxBPTEsdz0xLFI9MDtiPXc8PDI0Pj4yNCE9MCxrPDwyND4+MjQ7KXtkb3tpZihiKXtpZigoMHxSKTw9MzYmJms8PDI0''@;'; put 'put ''Pj4yND09KDB8ZmVbMTQyMjU3K1I+PjBdKSlicmVhazt3PTB9ZWxzZSB3PTB9d2hpbGUoMCk7ZG97aWYoIShNfEE8PDI0Pj4yND09MCkpe2lmKCgwfFIpPD0yOSYmazw8MjQ+PjI0PT0oMHxmZVsxNDIyOTQrUj4+MF0pKWJyZWFrO0E9MH19d2hpbGUoMCk7Uj1rPVIrMXwwLGs9MHxmZVtwK2s+''@;'; put 'put ''PjBdfWlmKCgyNTUmRHwwKSE9KGImMzY9PSgwfFIpJjF8MCkpe0E9TT8zODo0MDticmVha31pZihBPDwyND4+MjQhPTAmMjk9PSgwfFIpKUE9NDA7ZWxzZXtSPVIrKDAhPSgwfGZlWyhHPWwrNDY4fDApPj4wXSkmMSl8MCxiPTB8YVsoQT1sKzM3MnwwKT4+Ml07ZG97aWYoIWIpe2lmKCEodz0w''@;'; put 'put ''fF9vWzYzJmFbKEE9bCsxMnwwKT4+Ml1dKDI4KSkpe0E9MTticmVhayBlfWlmKEQ9MHxfb1s2MyZhW0E+PjJdXShiPVIrMjR8MCksYVt3KzE2Pj4yXT1ELEQpe2FbdysyND4+Ml09YixiPXc7YnJlYWt9Q29bMTI3JmFbbCsyMD4+Ml1dKHcpLEE9MTticmVhayBlfWlmKCgwfFIpPigwfGFbKHc9''@;'; put 'put ''YisyNHwwKT4+Ml0pKXtpZighKEQ9MHxCaVsxMjcmYVtsKzE2Pj4yXV0oMHxhWyhrPWIrMTZ8MCk+PjJdLE09UisyNHwwKSkpe0E9MTticmVhayBlfWFbaz4+Ml09RCxhW3c+PjJdPU19YVtBPj4yXT1hW2IrND4+Ml19d2hpbGUoMCk7YVtiKzIwPj4yXT1SLGdvKDB8YVsodz1iKzE2fDApPj4y''@;'; put 'put ''XSwwfHAsMHxSKSwoQT0wfGZlW0c+PjBdKTw8MjQ+PjI0JiYoZmVbKDB8YVt3Pj4yXSkrKFIrLTEpPj4wXT1BKSxhW2I+PjJdPWMsYVtiKzEyPj4yXT1mLGFbYis4Pj4yXT1hWyh3PWMrNHwwKT4+Ml0sYVt3Pj4yXT1BPTA9PSgwfGZlW3A+PjBdKSYmKDE1MisoMHxhW2wrMzUyPj4yXSl8MCk9''@;'; put 'put ''PSgwfGMpPzA6YixhW2IrND4+Ml09YVttPj4yXSxhW20+PjJdPWIsMCE9KDB8ZikmJjAhPSgwfChxPTB8YVtsKzEwMD4+Ml0pKSYmZGxbMTI3JnFdKDB8YVtsKzQ+PjJdLDB8YVtjPj4yXSwwfGFbdz4+Ml0/cDowKSxBPTB9fX13aGlsZSgwKTtyZXR1cm4gMHxBfWZ1bmN0aW9uIHZBKGwsYyl7''@;'; put 'put ''dmFyIGY7bHw9MCxhWyhmPWN8PTApPj4yXT0wLGFbZis0Pj4yXT0wLGFbKGM9Yys4fDApPj4yXT0wfGZ1bmN0aW9uIERfKGwpe2x8PTA7Zm9yKHZhciBjPTA7Yz0wfGFbbCs0NzI+PjJdOylsPWM7cmV0dXJuIDB8YVtsKzQ5Mj4+Ml19KGwpLGFbYys0Pj4yXT0wfWZ1bmN0aW9uIFJoKGwsYyl7''@;'; put 'put ''dmFyIGY9MCxwPTAsbT0wLEE9MDtBPTE5MzY2ODIzNDFeYVs0KyhmPWN8PTApPj4yXSxhWyhwPWx8PTApPj4yXT0xODg2NjEwODA1XmFbZj4+Ml0sYVtwKzQ+PjJdPUEsZj0xNjg1MDI1Mzc3XmFbNCsoQT1wPWMrOHwwKT4+Ml0sYVsobT1sKzh8MCk+PjJdPTE4NTIwNzU4ODVeYVtBPj4yXSxh''@;'; put 'put ''W20rND4+Ml09ZixjPTE4MTk4OTU2NTNeYVsobT1jKSs0Pj4yXSxhWyhmPWwrMTZ8MCk+PjJdPTE4NTIxNDIxNzdeYVttPj4yXSxhW2YrND4+Ml09YyxmPTE5NTI4MDE4OTBeYVtwKzQ+PjJdLGFbKGM9bCsyNHwwKT4+Ml09MjAzNzY3MTI4M15hW3A+PjJdLGFbYys0Pj4yXT1mLGFbbCs0MD4+''@;'; put 'put ''Ml09bCszMixhWyhjPWwrNDh8MCk+PjJdPTAsYVtjKzQ+PjJdPTB9ZnVuY3Rpb24gcDUobCxjLGYpe3ZhciBtLEEsdyxiLGssTSxELFIsRyxxLHBlLGdlLGJlLHA9MCxPZT0wLExlPTAsUmU9MCxIZT0wLFZlPTAscWU9MCxydD0wO0Q9KGN8PTApKyhmfD0wKXwwLFI9NDArKGx8PTApfDAsRz1s''@;'; put 'put ''KzQwfDAscT1sKzMyfDAscGU9bCszM3wwLGdlPWwrMzR8MCxiZT1sKzM1fDAsbT1sKzM2fDAsQT1sKzM3fDAsdz1sKzM4fDAsYj1sKzM5fDAsaz1sKzI0fDAsTT1sKzQ4fDAsZj1jO2Rve2Zvcig7Oyl7aWYocD0wfGFbUj4+Ml0sZj4+PjA+PUQ+Pj4wKXtjPTA7YnJlYWt9aWYocD4+PjA+PUc+''@;'; put 'put ''Pj4wKXtjPTE7YnJlYWt9Yz0wfGZlW2Y+PjBdLGFbUj4+Ml09cCsxLGZlW3A+PjBdPWMsZj1mKzF8MH1pZihwPj4+MDxHPj4+MClicmVhaztxZT0wfFh0W3E+PjBdLHJ0PTB8Wm8oMHxYdFtwZT4+MF0sMCw4KSxwPURuLFZlPTB8Wm8oMHxYdFtnZT4+MF0sMCwxNikscHw9RG4sUmU9MHxabygw''@;'; put 'put ''fFh0W2JlPj4wXSwwLDI0KSxwPXB8RG58MHxYdFttPj4wXSxPZT0wfFpvKDB8WHRbQT4+MF0sMCw0MCkscHw9RG4sSGU9MHxabygwfFh0W3c+PjBdLDAsNDgpLHB8PURuLExlPTB8Wm8oMHxYdFtiPj4wXSwwLDU2KSxMZXw9cnR8cWV8VmV8UmV8T2V8SGUsT2U9KHB8PURuKV5hWyhIZT1rKSs0''@;'; put 'put ''Pj4yXSxhWyhSZT1rKT4+Ml09TGVeYVtIZT4+Ml0sYVtSZSs0Pj4yXT1PZSxBQShsLDIpLHBePWFbKFJlPWwpKzQ+PjJdLGFbKE9lPWwpPj4yXT1hW1JlPj4yXV5MZSxhW09lKzQ+PjJdPXAsYVtSPj4yXT1xLE9lPTB8emwoMHxhWyhPZT1NKT4+Ml0sMHxhW09lKzQ+PjJdLDgsMCksYVsocD1N''@;'; put 'put ''KT4+Ml09T2UsYVtwKzQ+PjJdPURufXdoaWxlKGMpfWZ1bmN0aW9uIEc0KGwpe2x8PTA7dmFyIGM9MDtmb3IoYz0wOzB8ZmVbbD4+MF07KWM9YysxfDAsbD1sKzF8MDtyZXR1cm4gMHxjfWZ1bmN0aW9uIE02KGwpe3ZhciB3LGM9MCxmPTAscD0wLG09MCxBPTA7c3dpdGNoKGY9MHxabygwfChm''@;'; put 'put ''PTB8emwoMHxhWyhmPTQ4KyhsfD0wKXwwKT4+Ml0sMHxhW2YrND4+Ml0sMHwoQT0oMHxhW2wrNDA+PjJdKS0ocD1sKzMyfDApfDApLDApKSwwfERuLDU2KSxjPURuLEE8PDI0Pj4yNHwwKXtjYXNlIDc6Zj0wfFpvKDB8WHRbbCszOD4+MF0sMCw0OCl8ZixjfD1EbixtPTM7YnJlYWs7Y2FzZSA2''@;'; put 'put ''Om09MzticmVhaztjYXNlIDU6bT00O2JyZWFrO2Nhc2UgNDptPTU7YnJlYWs7Y2FzZSAzOm09NjticmVhaztjYXNlIDI6bT03O2JyZWFrO2Nhc2UgMTptPTh9cmV0dXJuIDM9PSgwfG0pJiYoZnw9QT0wfFpvKDB8WHRbbCszNz4+MF0sMCw0MCksY3w9RG4sbT00KSw0PT0oMHxtKSYmKGN8PTB8''@;'; put 'put ''WHRbbCszNj4+MF0sbT01KSw1PT0oMHxtKSYmKGZ8PUE9MHxabygwfFh0W2wrMzU+PjBdLDAsMjQpLGN8PURuLG09NiksNj09KDB8bSkmJihmfD1BPTB8Wm8oMHxYdFtsKzM0Pj4wXSwwLDE2KSxjfD1EbixtPTcpLDc9PSgwfG0pJiYoQT0wfFpvKDB8WHRbbCszMz4+MF0sMCw4KSxjfD1Ebixm''@;'; put 'put ''fD1BLG09OCksOD09KDB8bSkmJihmPTB8ZnxYdFtwPj4wXSksbT1hWzQrKHc9QT1sKzI0fDApPj4yXV5jLGFbKHA9QSk+PjJdPWFbdz4+Ml1eZixhW3ArND4+Ml09bSxBQShsLDIpLGNePWFbKHA9bCkrND4+Ml0sYVsobT1sKT4+Ml09YVtwPj4yXV5mLGFbbSs0Pj4yXT1jLGY9MHxhWzQrKGM9''@;'; put 'put ''bT1sKzE2fDApPj4yXSxhWyhwPW0pPj4yXT0yNTVeYVtjPj4yXSxhW3ArND4+Ml09ZixBQShsLDQpLHA9bCxEbj1hWzQrKGw9bCs4fDApPj4yXV5hW3ArND4+Ml1eYVttKzQ+PjJdXmFbQSs0Pj4yXSxhW2w+PjJdXmFbcD4+Ml1eYVttPj4yXV5hW0E+PjJdfDB9ZnVuY3Rpb24gQUEobCxjKXtj''@;'; put 'put ''fD0wO3ZhciBwLG0sQSxmPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTA7Zm9yKHA9OCsobHw9MCl8MCxtPWwrMjR8MCxBPWwrMTZ8MCxmPTA7ISgoMHxmKT49KDB8YykpOylxPTB8emwoMHxhWyhxPWwpPj4yXSwwfGFbcSs0Pj4yXSwwfChHPTB8YVsodz1wKT4+''@;'; put 'put ''Ml0pLDB8KHc9MHxhW3crND4+Ml0pKSxNPURuLFI9MHxabygwfEcsMHx3LDEzKSxEPURuLHc9KFJ8KHc9MHx3bCgwfEcsMHx3LDUxKSkpXnEsRD0oRHxEbileTSxrPTB8emwoMHxhWyhrPUEpPj4yXSwwfGFbays0Pj4yXSwwfChHPTB8YVsoUj1tKT4+Ml0pLDB8KFI9MHxhW1IrND4+Ml0pKSxi''@;'; put 'put ''PURuLGdlPTB8Wm8oMHxHLDB8UiwxNikscGU9RG4scT0wfHpsKDB8TSwwfHEsMHwoUj0oZ2V8KFI9MHx3bCgwfEcsMHxSLDQ4KSkpXmspLDB8KHBlPShwZXxEbileYikpLE09RG4sYVsoZ2U9bCk+PjJdPXEsYVtnZSs0Pj4yXT1NLGdlPTB8Wm8oMHxSLDB8cGUsMjEpLEc9RG4scGU9MHx3bCgw''@;'; put 'put ''fFIsMHxwZSw0MyksYVsoUj1tKT4+Ml09KGdlfHBlKV5xLGFbUis0Pj4yXT0oR3xEbileTSxiPTB8emwoMHxrLDB8YiwwfHcsMHxEKSxrPURuLFI9MHxabygwfHcsMHxELDE3KSxNPURuLEQ9MHx3bCgwfHcsMHxELDQ3KSxhWyh3PXApPj4yXT0oUnxEKV5iLGFbdys0Pj4yXT0oTXxEbileayxh''@;'; put 'put ''Wyh3PUEpPj4yXT1rLGFbdys0Pj4yXT1iLGY9ZisxfDB9ZnVuY3Rpb24geUEobCxjLGYscCxtLEEpe3B8PTAsbXw9MDt2YXIgUixHLHEscGUsZ2UsYmUsTGUsUmUsSGUsVmUscWUscnQsV2UsYXQsU3Qsa3Qsc3QsRXQsWnQsY3QsYnQsYW4sU24sdz0wLGI9MCxrPTAsTT0wLEQ9MCxPZT0wLEhu''@;'; put 'put ''PTA7U249bGUsbGU9bGUrMTZ8MCxjdD1TbixidD1Tbis0fDAsUj0xNisoY3w9MCl8MCxHPWMrNDB8MCxxPTE0NCsobHw9MCl8MCxwZT1sKzI4NHwwLGdlPShmfD0wKTw8MjQ+PjI0PT0wLGJlPTEyKyhBfD0wKXwwLExlPUErMTZ8MCxSZT1BKzh8MCxIZT1jKzQ0fDAsVmU9Yys2NHwwLHFlPWwr''@;'; put 'put ''NDM2fDAscnQ9bCs0NTJ8MCxXZT1sKzQ0OHwwLGF0PSg4MCsoYW49MHxhW2wrMzUyPj4yXSl8MCk9PSgwfEEpLFN0PWwrMjY4fDAsa3Q9YW4rMTMwfDAsc3Q9YW4rMTI5fDAsRXQ9bCsyOTZ8MCxadD1sKzIyNHwwLHc9MDtlOmZvcig7Oyl7dDpmb3IoOzspe3N3aXRjaCgwfHEwWzEyNyZhW1I+''@;'; put 'put ''PjJdXShjLHAsbSxjdCkpe2Nhc2UtNDp3PTAsRD02MTticmVhayBlO2Nhc2UgMDpEPTQ7YnJlYWsgZTtjYXNlLTE6RD02O2JyZWFrIGU7Y2FzZSA2OkQ9MjE7YnJlYWsgdDtjYXNlLTM6RD0yMjticmVhayB0O2Nhc2UgNzpjYXNlIDM5OkQ9MjM7YnJlYWsgdDtjYXNlIDEwOmI9MHxCaVsxMjcm''@;'; put 'put ''YVtHPj4yXV0oYyxwKTtuOmRve2lmKCgwfGIpPDApKDB8YVtxPj4yXSk9PSgwfGMpPyhhW3BlPj4yXT1wLGI9MSx3PTE0KTooYj0xLHc9MTQpO2Vsc2V7aWYoZ2UmMzI9PSgwfGIpKXtpZigoMHxhW0xlPj4yXSk9PSgwfChrPTB8YVtiZT4+Ml0pKSl7Yj00O2JyZWFrfWlmKDMyPT0oMHxmZVtr''@;'; put 'put ''Ky0xPj4wXSkpe2I9NDticmVha319Zm9yKE09MHxXNChiLGJ0KSxrPTA7Oyl7aWYoKDB8ayk+PSgwfE0pKXtiPTA7YnJlYWsgbn1pZigoMHwoYj0wfGFbYmU+PjJdKSk9PSgwfGFbUmU+PjJdKSl7aWYoISgoMHx2bChBKSk8PDI0Pj4yNCkpe2I9MSx3PTE7YnJlYWsgbn1iPTB8YVtiZT4+Ml19''@;'; put 'put ''SG49MHxmZVtidCtrPj4wXSxhW2JlPj4yXT1iKzEsZmVbYj4+MF09SG4saz1rKzF8MH19fXdoaWxlKDApO3N3aXRjaCg3JmIpe2Nhc2UgNDpjYXNlIDA6YnJlYWsgdH1icmVhaztjYXNlIDk6aWYoKGI9MjU1JigwfG1pWzYzJmFbSGU+PjJdXShjLHArKGI9MHxhW1ZlPj4yXSl8MCwwLWIrKDB8''@;'; put 'put ''YVtjdD4+Ml0pfDApKSk8PDI0Pj4yNCl7RD0zMTticmVhayB0fWlmKCEoYj0wfGIyKHFlLGMscCsoYj0wfGFbVmU+PjJdKXwwLDAtYisoMHxhW2N0Pj4yXSl8MCkpKXt3PTEsRD02MTticmVhayBlfU09MHxfMShsLGFuLGIsMCksYVtXZT4+Ml09YVtydD4+Ml07ZG97aWYoYXQpe2lmKCEoMHxh''@;'; put 'put ''W1N0Pj4yXSkpe2lmKE0pYnJlYWs7YnJlYWsgdH1pZigwfGZlW2t0Pj4wXSl7aWYoYj0wIT0oMHxNKSwwfGFbRXQ+PjJdKXtPZT1iLEQ9NDc7YnJlYWt9RD00NTticmVha31pZihiPTAhPSgwfE0pLDB8ZmVbc3Q+PjBdKXtPZT1iLEQ9NDc7YnJlYWt9RD00NTticmVha31pZigwfGZlW3N0Pj4w''@;'; put 'put ''XSl7aWYoYj0wIT0oMHxNKSwwfGZlW2t0Pj4wXSl7RD00NTticmVha31PZT1iLEQ9NDc7YnJlYWt9aWYoTSl7RD00NjticmVha313PTExLEQ9NjE7YnJlYWsgZX13aGlsZSgwKTtpZig0NT09KDB8RCkpe2lmKCFiKXt3PTExLEQ9NjE7YnJlYWsgZX1EPTQ2fWVsc2UgaWYoNDc9PSgwfEQpJiYo''@;'; put 'put ''RD0wLCFPZSkpYnJlYWsgdDtpZig0Nj09KDB8RCkmJihEPTAsMD09KDB8ZmVbTSszND4+MF0pKSl7dz0yNCxEPTYxO2JyZWFrIGV9aWYoMHxmZVsoaz1NKzMyfDApPj4wXSl7RD00OTticmVhayBlfWlmKDB8YVtNKzI4Pj4yXSl7RD01MjticmVhayBlfWlmKCEoYj0wfGFbTSs0Pj4yXSkpe0Q9''@;'; put 'put ''NTU7YnJlYWsgZX1pZihNPWIrKDB8YVtNKzg+PjJdKXwwLGZlW2s+PjBdPTEsTT0wfHlBKGwsMHxhW1p0Pj4yXSxmLGIsTSxBKSxmZVtrPj4wXT0wLGI9MD09KDB8TSkpYnJlYWsgdDtiPTEmKDFeYiksdz1NO2JyZWFrO2RlZmF1bHQ6RD01ODticmVhayBlfWlmKGIpYnJlYWsgZX1pZigyMT09''@;'; put 'put ''KDB8RCkpe2lmKEQ9MCwhKDB8ZkEoQSxjLHAsMHxhW2N0Pj4yXSkpKXt3PTEsRD02MTticmVha319ZWxzZSBpZigyMj09KDB8RCkpYVtjdD4+Ml09cCsoMHxhW1ZlPj4yXSksRD0yMztlbHNlIGlmKDMxPT0oMHxEKSl7aWYoRD0wLCgwfChwPTB8YVtiZT4+Ml0pKT09KDB8YVtSZT4+Ml0pKXtp''@;'; put 'put ''ZighKCgwfHZsKEEpKTw8MjQ+PjI0KSl7dz0xLEQ9NjE7YnJlYWt9cD0wfGFbYmU+PjJdfWFbYmU+PjJdPXArMSxmZVtwPj4wXT1ifWRve2lmKDIzPT0oMHxEKSl7aWYoRD0wLHA9MHxhW2JlPj4yXSxnZSYmKCgwfGFbTGU+PjJdKT09KDB8cCl8fDMyPT0oMHxmZVtwKy0xPj4wXSkpKWJyZWFr''@;'; put 'put ''O2lmKCgwfHApPT0oMHxhW1JlPj4yXSkpe2lmKCEoKDB8dmwoQSkpPDwyND4+MjQpKXt3PTEsRD02MTticmVhayBlfXA9MHxhW2JlPj4yXX1hW2JlPj4yXT1wKzEsZmVbcD4+MF09MzJ9fXdoaWxlKDApO3A9MHxhW2N0Pj4yXX1yZXR1cm4gND09KDB8RCk/KDB8YVtxPj4yXSk9PSgwfGMpPyhh''@;'; put 'put ''W3BlPj4yXT1hW2N0Pj4yXSx3PTQsRD02MSk6KHc9NCxEPTYxKTo2PT0oMHxEKT8oMHxhW3E+PjJdKT09KDB8Yyk/KGFbcGU+PjJdPXAsdz00LEQ9NjEpOih3PTQsRD02MSk6NDk9PSgwfEQpPygwfGFbcT4+Ml0pPT0oMHxjKT8oYVtwZT4+Ml09cCx3PTEyLEQ9NjEpOih3PTEyLEQ9NjEpOjUy''@;'; put 'put ''PT0oMHxEKT8oMHxhW3E+PjJdKT09KDB8Yyk/KGFbcGU+PjJdPXAsdz0xNSxEPTYxKToodz0xNSxEPTYxKTo1NT09KDB8RCk/KDB8YVtxPj4yXSk9PSgwfGMpPyhhW3BlPj4yXT1wLHc9MTYsRD02MSk6KHc9MTYsRD02MSk6NTg9PSgwfEQpJiYoKDB8YVtxPj4yXSk9PSgwfGMpPyhhW3BlPj4y''@;'; put 'put ''XT1wLHc9MjMsRD02MSk6KHc9MjMsRD02MSkpLGxlPVNuLDB8d31mdW5jdGlvbiBMXyhsKXt2YXIgYztyZXR1cm4gYz04KyhsfD0wKXwwLDB8KCgwfGwpPDE/MDooMHxjKT4wP2M6MCl9ZnVuY3Rpb24gd0EobCxjKXt2YXIgZixwLG07cmV0dXJuIGN8PTAsZj1sZSxsZT1sZSs4MHwwLHA9Zisx''@;'; put 'put ''NnwwLHZBKGx8PTAsbT1mKSxSaChwLG0pLHA1KHAsYywwfEc0KGMpKSxjPTB8TTYocCksbGU9ZiwwfGN9ZnVuY3Rpb24gRm0obCxjKXtsfD0wLGN8PTA7Zm9yKHZhciBmPTA7Oyl7aWYoKGY9MHxmZVtsPj4wXSk8PDI0Pj4yNCE9KDB8ZmVbYz4+MF0pKXtjPTA7YnJlYWt9aWYoIShmPDwyND4+''@;'; put 'put ''MjQpKXtjPTE7YnJlYWt9Yz1jKzF8MCxsPWwrMXwwfXJldHVybiAwfGN9ZnVuY3Rpb24gSG0obCxjKXtjfD0wO3ZhciB3LGssZj0wLHA9MCxtPTAsQT0wLGI9MDtrPWxlLGxlPWxlKzEwNDB8MCx3PWsscD0wfGFbMTI0KyhsfD0wKT4+Ml07ZTpkb3tpZihwKXtmb3IoZj0wOzI1NiE9KDB8Zik7''@;'; put 'put ''KWFbdysoZjw8Mik+PjJdPS0xLGY9ZisxfDA7YVsobT13KzEwMjh8MCk+PjJdPTAsYVsoYj13KzEwMjR8MCk+PjJdPTAsYVsoQT13KzEwMzJ8MCk+PjJdPTA7ZG97aWYoMHxtaVs2MyZwXSgwfGFbbCsyNDQ+PjJdLGMsdykpe2lmKGY9MHxfb1s2MyYocD0wfGFbbCsxMj4+Ml0pXShmPTE5MDgp''@;'; put 'put ''LGFbbCsyMzY+PjJdPWYsZil7aWYoIShmPTB8cTBbMTI3JihmZVtsKzIzMj4+MF08PDI0Pj4yND82NTo2NCldKGYsdywwfGFbbT4+Ml0sMHxhW2I+PjJdKSkpYnJlYWs7YVtsKzI0MD4+Ml09YVtiPj4yXSxhW2wrMjQ4Pj4yXT1hW0E+PjJdLGFbbCsxNDQ+PjJdPWYsZj0wfWVsc2UoZj0wfGFb''@;'; put 'put ''QT4+Ml0pJiZDb1sxMjcmZl0oMHxhW2I+PjJdKSxmPTE7YnJlYWsgZX19d2hpbGUoMCk7MHwoZj0wfGFbQT4+Ml0pJiZDb1sxMjcmZl0oMHxhW2I+PjJdKSxmPTE4fWVsc2UgZj0xOH13aGlsZSgwKTtyZXR1cm4gbGU9aywwfGZ9ZnVuY3Rpb24gQmQobCxjKXtjfD0wLGZlWzQrKGx8PTApPj4w''@;'; put 'put ''XT0wLGFbbCs4Pj4yXT0wLGFbbCsxMj4+Ml09MCxhW2w+PjJdPTAsYVtsKzE2Pj4yXT1jfWZ1bmN0aW9uIG14KGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTA7bT0wPT0oMHwobHw9MCkpO2U6ZG97aWYobXwoMHxmKTwwfHwwPT0oMHxjKSYwIT0oMHxmKSl3PTM7''@;'; put 'put ''ZWxzZXtzd2l0Y2goMHxhWyhBPWwrNDc2fDApPj4yXSl7Y2FzZSAzOmFbbCsyODA+PjJdPTMzLG09MDticmVhayBlO2Nhc2UgMjphW2wrMjgwPj4yXT0zNixtPTA7YnJlYWsgZTtjYXNlIDA6aWYoMD09KDB8YVtsKzQ3Mj4+Ml0pJiYoMHx2eChsKSk8PDI0Pj4yND09MCl7YVtsKzI4MD4+Ml09''@;'; put 'put ''MSxtPTA7YnJlYWsgZX19aWYoYVtBPj4yXT0xLDB8Zil7aWYoIShtPTB8QXgobCxmKSkpe209MDticmVha31nbygwfG0sMHxjLDB8ZiksbT0wfERvKGwsZixwKTticmVha31pZihmZVtsKzQ4MD4+MF09cCxwKXtpZihhWyhjPWwrMjkyfDApPj4yXT1iPTB8YVsobT1sKzI0fDApPj4yXSxhW2wr''@;'; put 'put ''NDA+PjJdPXA9MHxhW2wrMjg+PjJdLHA9MHxxMFsxMjcmYVsoZj1sKzI3NnwwKT4+Ml1dKGwsYixwLG0pLGFbbCsyODA+PjJdPXAsMHxwKXthW2wrMjg4Pj4yXT1hW2wrMjg0Pj4yXSxhW2Y+PjJdPTY2LG09MDticmVha31zd2l0Y2goMHxhW0E+PjJdKXtjYXNlIDM6UmNbMzEmYVs0OCsoYj0w''@;'; put 'put ''fGFbbCsxNDQ+PjJdKT4+Ml1dKGIsMHxhW2M+PjJdLDB8YVttPj4yXSxsKzQwNHwwKSxhW2M+PjJdPWFbbT4+Ml0sbT0yO2JyZWFrIGU7Y2FzZSAxOmNhc2UgMDphW0E+PjJdPTIsbT0xO2JyZWFrIGU7ZGVmYXVsdDptPTE7YnJlYWsgZX19ZWxzZSBtPTF9fXdoaWxlKDApO3JldHVybiAzPT0o''@;'; put 'put ''MHx3KSYmKG18fChhW2wrMjgwPj4yXT00MSksbT0wKSwwfG19ZnVuY3Rpb24gdngobCl7dmFyIGM7cmV0dXJuIDB8YVsoYz00OTIrKGx8PTApfDApPj4yXXx8KGFbYz4+Ml09MHxmdW5jdGlvbiBYQigpe3ZhciBjLGw9MCxmPTA7cmV0dXJuIGM9bGUsbGU9bGUrMTZ8MCwwfGZ1bmN0aW9uIFJf''@;'; put 'put ''KGwpe2x8PTA7dmFyIHAsbSxjPTAsZj0wLEE9MDtpZihtPWxlLGxlPWxlKzE2fDAsKDB8KHA9MHxmdW5jdGlvbiBrQWUobCxjLGYpe2x8PTAsZnw9MDt2YXIgbSxBLHcscD0wLGI9MDtyZXR1cm4gdz1sZSxsZT1sZSs0OHwwLEE9dysxNnwwLG09dyxwPXcrMzJ8MCw0MTk0MzY4JihjfD0wKT8o''@;'; put 'put ''YVtwPj4yXT1mLGY9MHxhWyhiPTMrKDB8YVtwPj4yXSkmLTQpPj4yXSxhW3A+PjJdPWIrNCxwPWYpOnA9MCxhW20+PjJdPWwsYVttKzQ+PjJdPTMyNzY4fGMsYVttKzg+PjJdPXAsMD09KDUyNDI4OCZjfDApfCgwfChwPTB8QjgoNSwwfG0pKSk8MHx8KGFbQT4+Ml09cCxhW0ErND4+Ml09Mixh''@;'; put 'put ''W0ErOD4+Ml09MSxiZCgyMjEsMHxBKSksYj0wfHVoKHApLGxlPXcsMHxifSgxNDIzNjUsMCxtKSkpPDApYz0wO2Vsc2V7Zm9yKGM9MDs7KXtpZihmPShBPTB8SWNlKHAsbCtjfDAsNC1jfDApKStjfDAsKDB8QSk+MCl7aWYoIShmPj4+MDw0KSl7Yz0xO2JyZWFrfWM9Zn1pZig0IT0oMHxhWzQ3''@;'; put 'put ''NjQzXSkpe2M9MDticmVha319IWZ1bmN0aW9uIF9jZShsKXt2YXIgYyxmO2M9bGUsbGU9bGUrMTZ8MCxhWyhmPWMpPj4yXT0wfHQkKGx8PTApLGw9MHx1aCgtND09KDB8KGw9MHxKdSg2LDB8ZikpKT8wOmwpLGxlPWN9KHApfXJldHVybiBsZT1tLDB8Y30obD1jKT9sPTB8eXgoMTQyMzY1LDB8''@;'; put 'put ''YVtsPj4yXSk6KGY9MHxmdW5jdGlvbiBLQigpe3ZhciBsLGM7cmV0dXJuIGM9bGUsbGU9bGUrMTZ8MCwwfGczKDB8KGw9YyksMCk/KFByKDE0MjM5MCwxNDI0MTIsODE5LDE0MjQyMyksMCk6KGxlPWMsMHxhW2wrND4+Ml0pfSgpLGY9KDB8SGooKSleZixhW2w+PjJdPWYsbD0wfHl4KDE0MjM3''@;'; put 'put ''OCwwfEFyKGYsMjE0NzQ4MzY0NykpKSxsZT1jLDB8bH0oKSksbD0wfGZlW2wrMjMyPj4wXT8wfGZ1bmN0aW9uIE9fKGwsYyl7Y3w9MDt2YXIgYixrLE0sRCxSLEcscSxwZSxnZSxmPTAscD0wLG09MCxBPTAsdz0wLGJlPTA7RD00MjQrKGx8PTApfDAsUj1sKzQyMHwwLEc9bCs0MTJ8MCxxPWwr''@;'; put 'put ''NDI4fDAscGU9MTUyKyhNPTB8YVtsKzM1Mj4+Ml0pfDAsZ2U9bCszNjh8MCxiPU0rNjB8MCxrPU0rODB8MDtlOmZvcig7Oyl7QT1jO3Q6Zm9yKDs7KXtpZighKDB8ZmVbYz4+MF0pKXtjPTE7YnJlYWsgZX1zd2l0Y2goKHA9MHxmZVtBPj4wXSk8PDI0Pj4yNCl7Y2FzZSAwOmNhc2UgMTI6YmU9''@;'; put 'put ''NTticmVhayB0O2Nhc2UgNjE6YnJlYWsgdH1pZigoMHwoZj0wfGFbRD4+Ml0pKT09KDB8YVtSPj4yXSkpe2lmKCEoKDB8dmwoRykpPDwyND4+MjQpKXtjPTA7YnJlYWsgZX1mPTB8YVtEPj4yXSxwPTB8ZmVbQT4+MF19YVtEPj4yXT1mKzEsZmVbZj4+MF09cCxBPUErMXwwfWlmKDUhPSgwfGJl''@;'; put 'put ''KSl7aWYoKDB8YVtxPj4yXSk9PSgwfChjPTB8YVtEPj4yXSkpKXA9cGU7ZWxzZXtpZigoMHxjKT09KDB8YVtSPj4yXSkpe2lmKCEoKDB8dmwoRykpPDwyND4+MjQpKXtjPTA7YnJlYWt9Yz0wfGFbRD4+Ml19aWYoYVtEPj4yXT1jKzEsZmVbYz4+MF09MCwhKHA9MHxfMShsLGIsMHxhW3E+PjJd''@;'; put 'put ''LDgpKSl7Yz0wO2JyZWFrfWlmKGM9dz0wfGFbcT4+Ml0sKDB8KGY9MHxhW3A+PjJdKSk9PSgwfHcpKXtpZih3PTB8VF8oayxmKSxhW3A+PjJdPXcsIXcpe2M9MDticmVha31jPTB8YVtxPj4yXX1hW0Q+PjJdPWN9dDpmb3IoOzspe3N3aXRjaChtPSgwfGMpPT0oMHxhW1I+PjJdKSwoZj0wfGZl''@;'; put 'put ''Wyh3PUErMXwwKT4+MF0pPDwyND4+MjQpe2Nhc2UgMDpjYXNlIDEyOmJyZWFrIHR9aWYobSl7aWYoISgoMHx2bChHKSk8PDI0Pj4yNCkpe2M9MDticmVhayBlfWM9MHxhW0Q+PjJdLGY9MHxmZVt3Pj4wXX1hW0Q+PjJdPWMrMSxmZVtjPj4wXT1mLEE9dyxjPTB8YVtEPj4yXX1pZihtKXtpZigh''@;'; put 'put ''KCgwfHZsKEcpKTw8MjQ+PjI0KSl7Yz0wO2JyZWFrfWM9MHxhW0Q+PjJdfWlmKGFbRD4+Ml09YysxLGZlW2M+PjBdPTAsMHxtQShsLHAsMCwwfGFbcT4+Ml0sZ2UpKXtjPTA7YnJlYWt9YVtEPj4yXT1hW3E+PjJdLGM9MD09KDB8ZmVbdz4+MF0pP3c6QSsyfDB9ZWxzZXtpZihiZT0wLCgwfChj''@;'; put 'put ''PTB8YVtEPj4yXSkpPT0oMHxhW1I+PjJdKSl7aWYoISgoMHx2bChHKSk8PDI0Pj4yNCkpe2M9MDticmVha31jPTB8YVtEPj4yXX1hW0Q+PjJdPWMrMSxmZVtjPj4wXT0wLDB8KGM9MHxfMShsLE0sMHxhW3E+PjJdLDApKSYmKGZlW2MrMzI+PjBdPTEpLGM9MD09KDB8ZmVbQT4+MF0pP0E6QSsx''@;'; put 'put ''fDAsYVtEPj4yXT1hW3E+PjJdfX1yZXR1cm4gMHxjfShsLDE0MjMyNCk6MSwwfGx9ZnVuY3Rpb24gQXgobCxjKXtsfD0wLGN8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MDtlOmRve2lmKGwpe2lmKCgwfGMpPDApe2FbbCsy''@;'; put 'put ''ODA+PjJdPTEsZj0wO2JyZWFrfXN3aXRjaCgwfGFbbCs0NzY+PjJdKXtjYXNlIDM6YVtsKzI4MD4+Ml09MzMsZj0wO2JyZWFrIGU7Y2FzZSAyOmFbbCsyODA+PjJdPTM2LGY9MDticmVhayBlO2RlZmF1bHQ6aWYoZj1wPTB8YVsoRz1sKzI4fDApPj4yXSwoKGs9MHxhWyhSPWwrMzJ8MCk+PjJd''@;'; put 'put ''KS1wfDApPj0oMHxjKSlicmVhayBlO2lmKCgwfChwPShiPXAtKE09MHxhWyhwZT1sKzI0fDApPj4yXSl8MCkrY3wwKSk8MCl7YVtsKzI4MD4+Ml09MSxmPTA7YnJlYWsgZX1wPShjPSh3PSgwfChBPU0tKGdlPW09MHxhWyhEPWwrOHwwKT4+Ml0pfDApKT4xMDI0KT8xMDI0OkEpK3B8MDtkb3tp''@;'; put 'put ''ZigoMHxwKT4oay1nZXwwKSl7Zj0wPT0oMHwoZj1rLU18MCkpPzEwMjQ6Zjtkb3tmPDw9MX13aGlsZSgoMHxmKTwoMHxwKSYoMHxmKT4wKTtpZigoMHxmKTwxKXthW2wrMjgwPj4yXT0xLGY9MDticmVhayBlfWlmKCEocD0wfF9vWzYzJmFbbCsxMj4+Ml1dKGYpKSl7YVtsKzI4MD4+Ml09MSxm''@;'; put 'put ''PTA7YnJlYWsgZX1pZihhW1I+PjJdPXArZixmPTB8YVtwZT4+Ml0pe2dvKDB8cCxmKygwLShxPSgwfChxPShnZT1mKS0oMHxhW0Q+PjJdKXwwKSk8MTAyND9xOjEwMjQpKXwwLCgwfGFbRz4+Ml0pLWdlK3F8MCksQ29bMTI3JmFbbCsyMD4+Ml1dKDB8YVtEPj4yXSksYVtEPj4yXT1wLGFbRz4+''@;'; put 'put ''Ml09Zj1wKygoMHxhW0c+PjJdKS0oMHxhW3BlPj4yXSkpK3F8MCxwPXArcXwwLHE9MjI7YnJlYWt9YVtHPj4yXT1mPXArKDB8YVtHPj4yXSl8MCxhW0Q+PjJdPXAscT0yMjticmVha313JiYocjEoMHxtLG0rKHA9QS1jfDApfDAsYytifDApLGFbRz4+Ml09Zj0oMHxhW0c+PjJdKSsocD0wLXB8''@;'; put 'put ''MCl8MCxwPSgwfGFbcGU+PjJdKStwfDAscT0yMil9d2hpbGUoMCk7MjI9PSgwfHEpJiYoYVtwZT4+Ml09cCksYVtsKzI4OD4+Ml09MCxhW2wrMjg0Pj4yXT0wLGFbbCsyOTI+PjJdPTA7YnJlYWsgZX19ZWxzZSBmPTB9d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBEbyhsLGMsZil7bHw9''@;'; put 'put ''MCxjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wO2U6ZG97aWYobCl7c3dpdGNoKDB8YVsocD1sKzQ3NnwwKT4+Ml0pe2Nhc2UgMzphW2wrMjgwPj4yXT0zMyxjPTA7YnJlYWsgZTtjYXNlIDI6YVtsKzI4MD4+Ml09MzYsYz0wO2JyZWFrIGU7Y2FzZSAwOmlmKDA9PSgwfGFb''@;'; put 'put ''bCs0NzI+PjJdKSYmKDB8dngobCkpPDwyND4+MjQ9PTApe2FbbCsyODA+PjJdPTEsYz0wO2JyZWFrIGV9fWlmKGFbcD4+Ml09MSxhWyhBPWwrMjkyfDApPj4yXT1iPTB8YVsobT1sKzI0fDApPj4yXSxhWyhrPWwrMjh8MCk+PjJdPXc9KDB8YVtrPj4yXSkrY3wwLGFbbCs0MD4+Ml09dyxhWyhr''@;'; put 'put ''PWwrMzZ8MCk+PjJdPSgwfGFbaz4+Ml0pK2MsZmVbbCs0ODA+PjBdPWYsdz0wfHEwWzEyNyZhWyhjPWwrMjc2fDApPj4yXV0obCxiLHcsbSksYVtsKzI4MD4+Ml09dywwfHcpe2FbbCsyODg+PjJdPWFbbCsyODQ+PjJdLGFbYz4+Ml09NjYsYz0wO2JyZWFrfXN3aXRjaCgwfGFbcD4+Ml0pe2Nh''@;'; put 'put ''c2UgMzpjPTI7YnJlYWs7Y2FzZSAxOmNhc2UgMDppZihmKXthW3A+PjJdPTIsYz0xO2JyZWFrIGV9Yz0xO2JyZWFrO2RlZmF1bHQ6Yz0xfVJjWzMxJmFbNDgrKGs9MHxhW2wrMTQ0Pj4yXSk+PjJdXShrLDB8YVtBPj4yXSwwfGFbbT4+Ml0sbCs0MDR8MCksYVtBPj4yXT1hW20+PjJdfWVsc2Ug''@;'; put 'put ''Yz0wfXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24geXgobCxjKXtsfD0wLGN8PTA7dmFyIHAsbSxmPTA7cmV0dXJuIG09bGUsbGU9bGUrMTZ8MCxwPW0sMHwoZj0wfER1KDE0MjQ0MykpJiYwPT0oMHxaaShmLDE0MjQ2MykpJiYoZj0wfGFbMTU3MTJdLGFbcD4+Ml09bCxhW3ArND4+Ml09''@;'; put 'put ''OCxhW3ArOD4+Ml09YyxhW3ArMTI+PjJdPTQsVDAoZiwxNDI0NjUscCkpLGxlPW0sMHxjfWZ1bmN0aW9uICRCKGwpe3JldHVybiAwfCgobHw9MCk/MHxhW2wrMjgwPj4yXTo0MSl9ZnVuY3Rpb24gZVAobCl7c3dpdGNoKDB8KGx8PTApKXtjYXNlIDQxOmw9MTQyNTAyO2JyZWFrO2Nhc2UgMTps''@;'; put 'put ''PTE0Mzc3NDticmVhaztjYXNlIDI6bD0xNDM3NjE7YnJlYWs7Y2FzZSAzOmw9MTQzNzQ0O2JyZWFrO2Nhc2UgNDpsPTE0MzcxMjticmVhaztjYXNlIDU6bD0xNDM2OTc7YnJlYWs7Y2FzZSA2Omw9MTQzNjc5O2JyZWFrO2Nhc2UgNzpsPTE0MzY2NDticmVhaztjYXNlIDg6bD0xNDM2NDQ7YnJl''@;'; put 'put ''YWs7Y2FzZSA5Omw9MTQzNjE2O2JyZWFrO2Nhc2UgMTA6bD0xNDM1ODE7YnJlYWs7Y2FzZSAxMTpsPTE0MzU2NDticmVhaztjYXNlIDEyOmw9MTQzNTM3O2JyZWFrO2Nhc2UgMTM6bD0xNDM1MTc7YnJlYWs7Y2FzZSAxNDpsPTE0MzQ3OTticmVhaztjYXNlIDE1Omw9MTQzNDUyO2JyZWFrO2Nh''@;'; put 'put ''c2UgMTY6bD0xNDM0MTA7YnJlYWs7Y2FzZSAxNzpsPTE0MzM2MzticmVhaztjYXNlIDE4Omw9MTQzMzQ2O2JyZWFrO2Nhc2UgMTk6bD0xNDMyOTU7YnJlYWs7Y2FzZSAyMDpsPTE0MzI3MjticmVhaztjYXNlIDIxOmw9MTQzMjI2O2JyZWFrO2Nhc2UgMjI6bD0xNDMxOTk7YnJlYWs7Y2FzZSAy''@;'; put 'put ''MzpsPTE0MzE0ODticmVhaztjYXNlIDI0Omw9MTQzMTEyO2JyZWFrO2Nhc2UgMjU6bD0xNDMwNjA7YnJlYWs7Y2FzZSAyNjpsPTE0MzAxNTticmVhaztjYXNlIDI3Omw9MTQzZTM7YnJlYWs7Y2FzZSAyODpsPTE0Mjk3NDticmVhaztjYXNlIDI5Omw9MTQyOTM2O2JyZWFrO2Nhc2UgMzA6bD0x''@;'; put 'put ''NDI5MDQ7YnJlYWs7Y2FzZSAzMTpsPTE0Mjg3MTticmVhaztjYXNlIDMyOmw9MTQyODM3O2JyZWFrO2Nhc2UgMzM6bD0xNDI4MjA7YnJlYWs7Y2FzZSAzNDpsPTE0Mjc5OTticmVhaztjYXNlIDM1Omw9MTQyNzgzO2JyZWFrO2Nhc2UgMzY6bD0xNDI3NjY7YnJlYWs7Y2FzZSAzNzpsPTE0Mjcy''@;'; put 'put ''MjticmVhaztjYXNlIDM4Omw9MTQyNjQyO2JyZWFrO2Nhc2UgMzk6bD0xNDI1ODM7YnJlYWs7Y2FzZSA0MDpsPTE0MjUxOTticmVhaztkZWZhdWx0Omw9MH1yZXR1cm4gMHxsfWZ1bmN0aW9uIFc0KGwsYyl7bHw9MCxjfD0wO2Rve2lmKCgwfGwpPj0wKXtpZigoMHxsKTwxMjgpe2ZlW2M+PjBd''@;'; put 'put ''PWwsbD0xO2JyZWFrfWlmKCgwfGwpPDIwNDgpe2ZlW2M+PjBdPWw+Pj42fDE5MixmZVtjKzE+PjBdPTYzJmx8MTI4LGw9MjticmVha31pZigoMHxsKTw2NTUzNil7ZmVbYz4+MF09bD4+PjEyfDIyNCxmZVtjKzE+PjBdPWw+Pj42JjYzfDEyOCxmZVtjKzI+PjBdPTYzJmx8MTI4LGw9MzticmVh''@;'; put 'put ''a30oMHxsKTwxMTE0MTEyPyhmZVtjPj4wXT1sPj4+MTh8MjQwLGZlW2MrMT4+MF09bD4+PjEyJjYzfDEyOCxmZVtjKzI+PjBdPWw+Pj42JjYzfDEyOCxmZVtjKzM+PjBdPTYzJmx8MTI4LGw9NCk6bD0wfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gblAobCxjLGYscCl7''@;'; put 'put ''bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTA7Zm9yKG09MDs7KXtpZigzNjQ9PSgwfG0pKXttPTA7YnJlYWt9ZmVbbCttPj4wXT0wfGZlWzU2NTc2K20+PjBdLG09bSsxfDB9ZTpmb3IoOzspe2lmKCgwfG0pPj0xMjgpe0E9NTticmVh''@;'; put 'put ''a31zd2l0Y2goMHxmZVs1NjY0OCttPj4wXSl7Y2FzZSAwOmNhc2UgMjg6YnJlYWs7ZGVmYXVsdDppZigoMHxhW2MrKG08PDIpPj4yXSkhPSgwfG0pKXtsPTA7YnJlYWsgZX19bT1tKzF8MH1lOmRve2lmKDU9PSgwfEEpKXtmb3IoRz1sKzcyfDAsaz1sKzM3MnwwLE09bCs4ODR8MCxEPTA9PSgw''@;'; put 'put ''fGYpLGI9MDshKCgwfGIpPj0yNTYpOyl7Uj0wfGFbYysoYjw8Mik+PjJdO2Rve2lmKC0xPT0oMHxSKSlmZVtHK2I+PjBdPTEsaXRbaysoYjw8MSk+PjFdPS0xLGZlW00rKGI8PDIpPj4wXT0xLGZlW00rKGI8PDIpKzE+PjBdPTA7ZWxzZXtpZigoMHxSKTwwKXtpZihEfCgwfFIpPC00KXtsPTA7''@;'; put 'put ''YnJlYWsgZX1mZVtHK2I+PjBdPTMtUixmZVtNKyhiPDwyKT4+MF09MCxpdFtrKyhiPDwxKT4+MV09MDticmVha31pZigoMHxSKTwxMjgpe3N3aXRjaCgobT0wfGZlWzU2NjQ4K1I+PjBdKTw8MjQ+PjI0KXtjYXNlIDA6Y2FzZSAyODpicmVhaztkZWZhdWx0OmlmKCgwfFIpIT0oMHxiKSl7bD0w''@;'; put 'put ''O2JyZWFrIGV9fWZlW0crYj4+MF09bSxmZVtNKyhiPDwyKT4+MF09MSxmZVtNKyhiPDwyKSsxPj4wXT1SLGl0W2srKGI8PDEpPj4xXT0wPT0oMHxSKT8tMTo2NTUzNSZSO2JyZWFrfWlmKCgwfFBkKFIpKTwwKXtmZVtHK2I+PjBdPTAsaXRbaysoYjw8MSk+PjFdPS0xLGZlW00rKGI8PDIpPj4w''@;'; put 'put ''XT0xLGZlW00rKGI8PDIpKzE+PjBdPTA7YnJlYWt9aWYoKDB8Uik+NjU1MzUpe2w9MDticmVhayBlfWZlW0crYj4+MF09YVs1Njk0MCsoKFh0WzE0Mzc4OCsobT1SPj4+OCk+PjBdPDwzfChBPVI+Pj41JjcpKTw8Mik+PjJdJih3PTE8PCgzMSZSKSk/MjI6YVs1Njk0MCsoKFh0WzE0NDA0NCtt''@;'; put 'put ''Pj4wXTw8M3xBKTw8Mik+PjJdJnd8MD8yNjoyOCxmZVtNKyhiPDwyKT4+MF09MHxXNChSLE0rKGI8PDIpKzF8MCksaXRbaysoYjw8MSk+PjFdPVJ9fXdoaWxlKDApO2I9YisxfDB9YVtsKzM2OD4+Ml09cCxhW2wrMzY0Pj4yXT1mLER8fChhW2wrMzI4Pj4yXT0xMDgsYVtsKzMzMj4+Ml09MTA4''@;'; put 'put ''LGFbbCszMzY+PjJdPTEwOCxhW2wrMzQwPj4yXT0xMDksYVtsKzM0ND4+Ml09MTA5LGFbbCszNDg+PjJdPTEwOSxhW2wrMzUyPj4yXT0xMTAsYVtsKzM1Nj4+Ml09MTEwLGFbbCszNjA+PjJdPTExMCksYVtsKzU2Pj4yXT0xMyxhW2wrNjA+PjJdPTE0fX13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1''@;'; put 'put ''bmN0aW9uIFBkKGwpe3N3aXRjaCgobHw9MCk+Pjh8MCl7Y2FzZSAyMjM6Y2FzZSAyMjI6Y2FzZSAyMjE6Y2FzZSAyMjA6Y2FzZSAyMTk6Y2FzZSAyMTg6Y2FzZSAyMTc6Y2FzZSAyMTY6bD0tMTticmVhaztjYXNlIDA6MHxmZVs1NjY0OCtsPj4wXXx8KGw9LTEpO2JyZWFrO2Nhc2UgMjU1OjY1''@;'; put 'put ''NTM1IT0oMXxsKXx8KGw9LTEpfXJldHVybiAwfGx9ZnVuY3Rpb24gR2kobCxjLGYscCxtLEEsdyl7bHw9MCxjfD0wLGZ8PTAsbXw9MCxBfD0wLHd8PTAsKHB8PTApP2Z1bmN0aW9uIG01KGwsYyxmLHAsbSxBKXtjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTA7dmFyIGssTSxELFIsdz0wLGI9MDtp''@;'; put 'put ''ZihSPWxlLGxlPWxlKzE2fDAsRD1SLDEhPSgwfGFbMzIrKGx8PTApPj4yXSkmJlByKDk0OTE5LDk0OTQzLDExNjMsOTUzMzUpLDEhPSgwfGFbbCsxNj4+Ml0pJiZQcig5NTM2NCw5NDk0MywxMTY0LDk1MzM1KSxrPTB8YVtsPj4yXSxNPTB8YVtsKzQ+PjJdLGI9MCE9KDB8KHc9MHxhW2Y+PjJd''@;'; put 'put ''KSksbSl7Zm9yKGJ8fCh3PTB8UW4oMHxBcihwPDwzLE0pKSksYj0wOyEoKDB8Yik+PSgwfHApKTspYVtEPj4yXT13KygoMHxBcihiLE0pKTw8MyksS2YobCxjKygoMHxBcihiLGspKTw8Myl8MCxELG0pLGI9YisxfDA7QXx8RmQodyxwLE0pfWVsc2V7Zm9yKGJ8fCh3PTB8UW4oMHxBcihwPDwz''@;'; put 'put ''LGspKSksYj0wOyEoKDB8Yik+PSgwfHApKTspYVtEPj4yXT13KygoMHxBcihiLGspKTw8MyksS2YobCxjKygoMHxBcihiLE0pKTw8Myl8MCxELDApLGI9YisxfDA7QXx8RmQodyxwLGspfWFbZj4+Ml09dyxsZT1SfShsLGYsbSx3LGMsQSk6ZnVuY3Rpb24gZzUobCxjLGYscCxtLEEpe2N8PTAs''@;'; put 'put ''Znw9MCxwfD0wLG18PTAsQXw9MDt2YXIgcSxwZSxnZSxiZSx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsT2U9MCxMZT0wO2lmKDEhPSgwfGFbMzIrKGx8PTApPj4yXSkmJlByKDk0OTE5LDk0OTQzLDExMjEsOTU0ODMpLDEhPSgwfGFbbCsxNj4+Ml0pJiZQcig5NTM2NCw5NDk0MywxMTIy''@;'; put 'put ''LDk1NDgzKSxxPTB8YVtsKzI4Pj4yXSxwZT0wfGFbbCsyMD4+Ml0sZ2U9MHxhW2wrMjQ+PjJdLGJlPTB8YVtsPj4yXSxHPTB8YVtsKzQ+PjJdLHc9MCE9KDB8KGw9MHxhW2Y+PjJdKSksbSl7Zm9yKHd8fChsPTB8UW4oMHxBcihwPDwzLEcpKSksbT0wfEFyKEcscCksdz0wOzspe2lmKCgwfHcp''@;'; put 'put ''Pj0oMHxtKSl7dz0wO2JyZWFrfV9bbCsodzw8Myk+PjNdPTAsdz13KzF8MH1lOmZvcig7ISgoMHx3KT49KDB8YmUpKTspZm9yKE09dysxfDAsRD0wfGFbcGUrKE08PDIpPj4yXSxSPTB8QXIodyxwKSx3PTB8YVtwZSsodzw8Mik+PjJdOzspe2lmKCgwfHcpPj0oMHxEKSl7dz1NO2NvbnRpbnVl''@;'; put 'put ''IGV9Zm9yKGI9cSsodzw8Myl8MCxrPWdlKyh3PDwyKXwwLG09MDshKCgwfG0pPj0oMHxwKSk7KUxlPWwrKCgwfEFyKDB8YVtrPj4yXSxwKSkrbTw8Myl8MCxfW0xlPj4zXT0rX1tMZT4+M10rICtfW2MrKG0rUjw8Myk+PjNdKitfW2I+PjNdLG09bSsxfDA7dz13KzF8MH1BJiZGZChsLEcscCl9''@;'; put 'put ''ZWxzZXt3fHwobD0wfFFuKDB8QXIocDw8MyxiZSkpKSxtPTA7ZTpmb3IoOyEoKDB8bSk+PSgwfGJlKSk7KXtmb3IoUj0wfEFyKG0scCksdz0wOyEoKDB8dyk+PSgwfHApKTspX1tsKyh3K1I8PDMpPj4zXT0wLHc9dysxfDA7Zm9yKEQ9MHxhW3BlKygoTT1tKzF8MCk8PDIpPj4yXSx3PTB8YVtw''@;'; put 'put ''ZSsobTw8Mik+PjJdOzspe2lmKCgwfHcpPj0oMHxEKSl7bT1NO2NvbnRpbnVlIGV9Zm9yKGI9cSsodzw8Myl8MCxrPWdlKyh3PDwyKXwwLG09MDshKCgwfG0pPj0oMHxwKSk7KU9lPStfW2MrKCgwfEFyKDB8YVtrPj4yXSxwKSkrbTw8Myk+PjNdKitfW2I+PjNdLF9bKEc9bCsobStSPDwzKXww''@;'; put 'put ''KT4+M109K19bRz4+M10rT2UsbT1tKzF8MDt3PXcrMXwwfX1BJiZGZChsLGJlLHApfWFbZj4+Ml09bH0obCxmLG0sdyxjLEEpfWZ1bmN0aW9uIEtmKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBELFIsRyxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxxPTA7c3dpdGNoKDEhPSgwfGFbMzIr''@;'; put 'put ''KGx8PTApPj4yXSkmJlByKDk0OTE5LDk0OTQzLDEyMjIsOTUzOTIpLDB8KHc9MHxhW2wrMTY+PjJdKSl7Y2FzZSA0OmNhc2UgMTpicmVhaztkZWZhdWx0OlByKDk1NDIxLDk0OTQzLDEyMjMsOTUzOTIpfVI9MHxhW2wrMjA+PjJdLEQ9MHxhW2wrMjQ+PjJdLEc9MHxhW2w+PjJdLGs9MHxhW2wr''@;'; put 'put ''ND4+Ml0sYj0wfGFbZj4+Ml07ZTpkb3tzd2l0Y2goMHx3KXtjYXNlIDE6aWYoTT0wfGFbbCsyOD4+Ml0sbD0wIT0oMHxwKSxtPTAhPSgwfGIpLGMpe2lmKCFsKXttPW0/YjowfFFuKEc8PDMpLGw9MDt0OmZvcig7Oyl7aWYoKDB8bCk+PSgwfEcpKWJyZWFrIGU7Zm9yKF9bKHc9bSsobDw8Myl8''@;'; put 'put ''MCk+PjNdPTAscD0wfGFbUisoKGI9bCsxfDApPDwyKT4+Ml0sbD0wfGFbUisobDw8Mik+PjJdLEE9MDs7KXtpZigoMHxsKT49KDB8cCkpe2w9Yjtjb250aW51ZSB0fV9bdz4+M109cT1BKyArX1tjKyhhW0QrKGw8PDIpPj4yXTw8Myk+PjNdKitfW00rKGw8PDMpPj4zXSxsPWwrMXwwLEE9cX19''@;'; put 'put ''fWZvcihtPW0/YjowfFFuKGs8PDMpLGw9MDs7KXtpZigoMHxsKT49KDB8aykpe2w9MDticmVha31fW20rKGw8PDMpPj4zXT0wLGw9bCsxfDB9dDpmb3IoOzspe2lmKCgwfGwpPj0oMHxHKSlicmVhayBlO2ZvcihiPTB8YVtSKygodz1sKzF8MCk8PDIpPj4yXSxwPWMrKGw8PDMpfDAsbD0wfGFb''@;'; put 'put ''UisobDw8Mik+PjJdOzspe2lmKCgwfGwpPj0oMHxiKSl7bD13O2NvbnRpbnVlIHR9X1soaz1tKyhhW0QrKGw8PDIpPj4yXTw8Myl8MCk+PjNdPStfW2s+PjNdKyArX1twPj4zXSorX1tNKyhsPDwzKT4+M10sbD1sKzF8MH19fWVsc2V7aWYoIWwpe209bT9iOjB8UW4oRzw8MyksbD0wO3Q6Zm9y''@;'; put 'put ''KDs7KXtpZigoMHxsKT49KDB8RykpYnJlYWsgZTtmb3IoX1sodz1tKyhsPDwzKXwwKT4+M109MCxwPTB8YVtSKygoYj1sKzF8MCk8PDIpPj4yXSxsPTB8YVtSKyhsPDwyKT4+Ml0sQT0wOzspe2lmKCgwfGwpPj0oMHxwKSl7bD1iO2NvbnRpbnVlIHR9X1t3Pj4zXT1xPUErICtfW00rKGw8PDMp''@;'; put 'put ''Pj4zXSxsPWwrMXwwLEE9cX19fWZvcihtfHwoYj0wfFFuKGs8PDMpKSxsPTA7Oyl7aWYoKDB8bCk+PSgwfGspKXtsPTA7YnJlYWt9X1tiKyhsPDwzKT4+M109MCxsPWwrMXwwfXQ6Zm9yKDs7KXtpZigoMHxsKT49KDB8Rykpe209YjticmVhayBlfWZvcih3PTB8YVtSKygobT1sKzF8MCk8PDIp''@;'; put 'put ''Pj4yXSxsPTB8YVtSKyhsPDwyKT4+Ml07Oyl7aWYoKDB8bCk+PSgwfHcpKXtsPW07Y29udGludWUgdH1fWyhjPWIrKGFbRCsobDw8Mik+PjJdPDwzKXwwKT4+M109K19bYz4+M10rICtfW00rKGw8PDMpPj4zXSxsPWwrMXwwfX19Y2FzZSA0OmlmKE09MHxhW2wrMjg+PjJdLGw9MCE9KDB8cCks''@;'; put 'put ''bT0wIT0oMHxiKSxjKXtpZighbCl7bT1tP2I6MHxRbihHPDwzKSxsPTA7dDpmb3IoOzspe2lmKCgwfGwpPj0oMHxHKSlicmVhayBlO2ZvcihfWyh3PW0rKGw8PDMpfDApPj4zXT0wLHA9MHxhW1IrKChiPWwrMXwwKTw8Mik+PjJdLGw9MHxhW1IrKGw8PDIpPj4yXSxBPTA7Oyl7aWYoKDB8bCk+''@;'; put 'put ''PSgwfHApKXtsPWI7Y29udGludWUgdH1fW3c+PjNdPXE9QSsgK19bYysoYVtEKyhsPDwyKT4+Ml08PDMpPj4zXSorKDB8YVtNKyhsPDwyKT4+Ml0pLGw9bCsxfDAsQT1xfX19Zm9yKG09bT9iOjB8UW4oazw8MyksbD0wOzspe2lmKCgwfGwpPj0oMHxrKSl7bD0wO2JyZWFrfV9bbSsobDw8Myk+''@;'; put 'put ''PjNdPTAsbD1sKzF8MH10OmZvcig7Oyl7aWYoKDB8bCk+PSgwfEcpKWJyZWFrIGU7Zm9yKGI9MHxhW1IrKCh3PWwrMXwwKTw8Mik+PjJdLHA9YysobDw8Myl8MCxsPTB8YVtSKyhsPDwyKT4+Ml07Oyl7aWYoKDB8bCk+PSgwfGIpKXtsPXc7Y29udGludWUgdH1fWyhrPW0rKGFbRCsobDw8Mik+''@;'; put 'put ''PjJdPDwzKXwwKT4+M109K19baz4+M10rICtfW3A+PjNdKisoMHxhW00rKGw8PDIpPj4yXSksbD1sKzF8MH19fWVsc2V7aWYoIWwpe209bT9iOjB8UW4oRzw8MyksbD0wO3Q6Zm9yKDs7KXtpZigoMHxsKT49KDB8RykpYnJlYWsgZTtmb3IoX1sodz1tKyhsPDwzKXwwKT4+M109MCxwPTB8YVtS''@;'; put 'put ''KygoYj1sKzF8MCk8PDIpPj4yXSxsPTB8YVtSKyhsPDwyKT4+Ml0sQT0wOzspe2lmKCgwfGwpPj0oMHxwKSl7bD1iO2NvbnRpbnVlIHR9X1t3Pj4zXT1xPUErICsoMHxhW00rKGw8PDIpPj4yXSksbD1sKzF8MCxBPXF9fX1mb3IobXx8KGI9MHxRbihrPDwzKSksbD0wOzspe2lmKCgwfGwpPj0o''@;'; put 'put ''MHxrKSl7bD0wO2JyZWFrfV9bYisobDw8Myk+PjNdPTAsbD1sKzF8MH10OmZvcig7Oyl7aWYoKDB8bCk+PSgwfEcpKXttPWI7YnJlYWsgZX1mb3Iodz0wfGFbUisoKG09bCsxfDApPDwyKT4+Ml0sbD0wfGFbUisobDw8Mik+PjJdOzspe2lmKCgwfGwpPj0oMHx3KSl7bD1tO2NvbnRpbnVlIHR9''@;'; put 'put ''X1soYz1iKyhhW0QrKGw8PDIpPj4yXTw8Myl8MCk+PjNdPStfW2M+PjNdKyArKDB8YVtNKyhsPDwyKT4+Ml0pLGw9bCsxfDB9fX1kZWZhdWx0OlByKDEzODM5NCw5NDk0MywxMzE1LDk1MzkyKX19d2hpbGUoMCk7YVtmPj4yXT1tfWZ1bmN0aW9uIEZkKGwsYyxmKXtsfD0wO3ZhciBBLHA9MCxt''@;'; put 'put ''PTAsdz0wO2ZvcihnbygwfChBPTB8UW4ocD0wfEFyKChjfD0wKTw8MyxmfD0wKSkpLDB8bCwwfHApLHA9MDshKCgwfHApPj0oMHxjKSk7KXtmb3Iodz0wfEFyKHAsZiksbT0wOyEoKDB8bSk+PSgwfGYpKTspX1tsKygoMHxBcihtLGMpKStwPDwzKT4+M109K19bQSsobSt3PDwzKT4+M10sbT1t''@;'; put 'put ''KzF8MDtwPXArMXwwfUZ0KEEpfWZ1bmN0aW9uIFQ2KGwsYyl7dmFyIFZlLHFlLHJ0LFdlLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsYXQ9MDtpZihWZT0wfGFbMjArKGx8PTApPj4yXSxx''@;'; put 'put ''ZT0wfGFbbCsyND4+Ml0scnQ9MHxhWzIwKyhjfD0wKT4+Ml0sV2U9MHxhW2MrMjQ+PjJdLDE9PSgwfChIZT0wfGFbbCszMj4+Ml0pKSYmKDB8SGUpPT0oMHxhW2MrMzI+PjJdKXx8UHIoOTUwMDUsOTQ5NDMsMTQwOCw5NTUxMiksSGU9MHxhW2w+PjJdLCgwfGFbbCs0Pj4yXSk9PSgwfGFbYz4+''@;'; put 'put ''Ml0pJiYoMHwoUj0wfGFbbCsxNj4+Ml0pKT09KDB8YVtjKzE2Pj4yXSkmJjAhPSgwfChhdD0wfFFuKGFbKEQ9Yys0fDApPj4yXTw8MikpKSl7Zm9yKGY9MDs7KXtpZigoMHxmKT49KDB8YVtEPj4yXSkpe3A9MCxmPTA7YnJlYWt9YVthdCsoZjw8Mik+PjJdPS0xLGY9ZisxfDB9ZTpmb3IoOyEo''@;'; put 'put ''KDB8Zik+PSgwfEhlKSk7KWZvcihiPWYrMXwwLGs9VmUrKGI8PDIpfDAsTT0tMi1mfDAsdz0wfGFbVmUrKGY8PDIpPj4yXTs7KXtpZigoMHx3KT49KDB8YVtrPj4yXSkpe2Y9Yjtjb250aW51ZSBlfWZvcihBPXJ0KygxKyhtPTB8YVtxZSsodzw8Mik+PjJdKTw8Mil8MCxtPTB8YVtydCsobTw8''@;'; put 'put ''Mik+PjJdOyEoKDB8bSk+PSgwfGFbQT4+Ml0pKTspKDB8YVsoZj1hdCsoYVtXZSsobTw8Mik+PjJdPDwyKXwwKT4+Ml0pIT0oMHxNKSYmKGFbZj4+Ml09TSxwPXArMXwwKSxtPW0rMXwwO3c9dysxfDB9Zj0wfHVjKEhlLDB8YVtEPj4yXSxwLFIsMSk7ZTpkb3tpZihmKXtPZT0wfGFbZisyMD4+''@;'; put 'put ''Ml0sTGU9MHxhW2YrMjQ+PjJdO3Q6ZG97c3dpdGNoKDB8Uil7Y2FzZSAxOmdlPTB8YVtsKzI4Pj4yXSxSPTB8YVtjKzI4Pj4yXSxjPTB8YVtmKzI4Pj4yXSxhW09lPj4yXT0wLHA9MCxtPTA7bjpmb3IoOzspe2lmKCgwfHApPj0oMHxIZSkpe1JlPW07YnJlYWsgdH1mb3IocT1WZSsoKEc9cCsx''@;'; put 'put ''fDApPDwyKXwwLHBlPU9lKyhwPDwyKXwwLGw9MHxhW1ZlKyhwPDwyKT4+Ml07ISgoMHxsKT49KDB8YVtxPj4yXSkpOyl7Zm9yKE09cnQrKDErKGs9MHxhW3FlKyhsPDwyKT4+Ml0pPDwyKXwwLEQ9Z2UrKGw8PDMpfDAsaz0wfGFbcnQrKGs8PDIpPj4yXTshKCgwfGspPj0oMHxhW00+PjJdKSk7''@;'; put 'put ''KXtpZigoMHwoYj0wfGFbKHc9YXQrKChBPTB8YVsocD1XZSsoazw8Mil8MCk+PjJdKTw8Mil8MCk+PjJdKSk8KDB8YVtwZT4+Ml0pKWFbdz4+Ml09bSxhW0xlKyhtPDwyKT4+Ml09YVtwPj4yXSxfW2MrKG08PDMpPj4zXT0rX1tSKyhrPDwzKT4+M10qK19bRD4+M10sbT1tKzF8MDtlbHNle2lm''@;'; put 'put ''KCgwfGFbTGUrKGI8PDIpPj4yXSkhPSgwfEEpKWJyZWFrIG47X1soYmU9YysoYjw8Myl8MCk+PjNdPStfW2JlPj4zXSsgK19bUisoazw8Myk+PjNdKitfW0Q+PjNdfWs9aysxfDB9bD1sKzF8MH1hW09lKyhHPDwyKT4+Ml09bSxwPUd9UHIoOTU1MzQsOTQ5NDMsMTQ2OCw5NTUxMik7YnJlYWs7''@;'; put 'put ''Y2FzZSAyOmJlPTB8YVtsKzI4Pj4yXSxjPTB8YVtjKzI4Pj4yXSxHPTB8YVtmKzI4Pj4yXSxhW09lPj4yXT0wLHA9MCxtPTA7bjpmb3IoOzspe2lmKCgwfHApPj0oMHxIZSkpe1JlPW07YnJlYWsgdH1mb3IocGU9VmUrKChxPXArMXwwKTw8Mil8MCxnZT1PZSsocDw8Mil8MCxSPTB8YVtWZSso''@;'; put 'put ''cDw8Mik+PjJdOyEoKDB8Uik+PSgwfGFbcGU+PjJdKSk7KXtmb3IoTT1ydCsoMSsoaz0wfGFbcWUrKFI8PDIpPj4yXSk8PDIpfDAsRD1iZSsoKGw9Ujw8MSk8PDMpfDAsbD1iZSsoKDF8bCk8PDMpfDAsaz0wfGFbcnQrKGs8PDIpPj4yXTshKCgwfGspPj0oMHxhW00+PjJdKSk7KXtpZigoMHwo''@;'; put 'put ''Yj0wfGFbKHc9YXQrKChBPTB8YVsocD1XZSsoazw8Mil8MCk+PjJdKTw8Mil8MCk+PjJdKSk8KDB8YVtnZT4+Ml0pKWFbdz4+Ml09bSxhW0xlKyhtPDwyKT4+Ml09YVtwPj4yXSxfW0crKChiPW08PDEpPDwzKT4+M109K19bKEE9YysoKHc9azw8MSk8PDMpfDApPj4zXSorX1tEPj4zXS0rX1so''@;'; put 'put ''dz1jKygoMXx3KTw8Myl8MCk+PjNdKitfW2w+PjNdLF9bRysoKDF8Yik8PDMpPj4zXT0rX1tBPj4zXSorX1tsPj4zXSsgK19bdz4+M10qK19bRD4+M10sbT1tKzF8MDtlbHNle2lmKCgwfGFbTGUrKGI8PDIpPj4yXSkhPSgwfEEpKWJyZWFrIG47X1socD1HKygoYjw8PTEpPDwzKXwwKT4+M109''@;'; put 'put ''K19bcD4+M10rICtfWyhBPWMrKCh3PWs8PDEpPDwzKXwwKT4+M10qK19bRD4+M10tK19bKHc9YysoKDF8dyk8PDMpfDApPj4zXSorX1tsPj4zXSxfWyhiPUcrKCgxfGIpPDwzKXwwKT4+M109K19bQT4+M10qK19bbD4+M10rICtfW3c+PjNdKitfW0Q+PjNdKyArX1tiPj4zXX1rPWsrMXwwfVI9''@;'; put 'put ''UisxfDB9YVtPZSsocTw8Mik+PjJdPW0scD1xfVByKDk1NTM0LDk0OTQzLDE0OTcsOTU1MTIpO2JyZWFrO2Nhc2UgNDpnZT0wfGFbbCsyOD4+Ml0sUj0wfGFbYysyOD4+Ml0sYz0wfGFbZisyOD4+Ml0sYVtPZT4+Ml09MCxwPTAsbT0wO246Zm9yKDs7KXtpZigoMHxtKT49KDB8SGUpKXtSZT1w''@;'; put 'put ''O2JyZWFrIHR9Zm9yKHE9VmUrKChHPW0rMXwwKTw8Mil8MCxwZT1PZSsobTw8Mil8MCxNPTB8YVtWZSsobTw8Mik+PjJdOyEoKDB8TSk+PSgwfGFbcT4+Ml0pKTspe2ZvcihEPXJ0KygxKyhrPTB8YVtxZSsoTTw8Mik+PjJdKTw8Mil8MCxsPWdlKyhNPDwyKXwwLGs9MHxhW3J0KyhrPDwyKT4+''@;'; put 'put ''Ml07ISgoMHxrKT49KDB8YVtEPj4yXSkpOyl7aWYoKDB8KGI9MHxhWyh3PWF0KygoQT0wfGFbKG09V2UrKGs8PDIpfDApPj4yXSk8PDIpfDApPj4yXSkpPCgwfGFbcGU+PjJdKSlhW3c+PjJdPXAsYVtMZSsocDw8Mik+PjJdPWFbbT4+Ml0sYVtjKyhwPDwyKT4+Ml09MHxBcigwfGFbUisoazw8''@;'; put 'put ''Mik+PjJdLDB8YVtsPj4yXSkscD1wKzF8MDtlbHNle2lmKCgwfGFbTGUrKGI8PDIpPj4yXSkhPSgwfEEpKWJyZWFrIG47dz0wfEFyKDB8YVtSKyhrPDwyKT4+Ml0sMHxhW2w+PjJdKSxhWyhiZT1jKyhiPDwyKXwwKT4+Ml09KDB8YVtiZT4+Ml0pK3d9az1rKzF8MH1NPU0rMXwwfWFbT2UrKEc8''@;'; put 'put ''PDIpPj4yXT1wLG09R31Qcig5NTUzNCw5NDk0MywxNTIzLDk1NTEyKTticmVhaztjYXNlIDg6YVtPZT4+Ml09MCxwPTAsbT0wO246Zm9yKDs7KXtpZigoMHxtKT49KDB8SGUpKXtSZT1wO2JyZWFrIHR9Zm9yKFI9VmUrKChsPW0rMXwwKTw8Mil8MCxjPU9lKyhtPDwyKXwwLE09MHxhW1ZlKyht''@;'; put 'put ''PDwyKT4+Ml07ISgoMHxNKT49KDB8YVtSPj4yXSkpOyl7Zm9yKEQ9cnQrKDErKGs9MHxhW3FlKyhNPDwyKT4+Ml0pPDwyKXwwLGs9MHxhW3J0KyhrPDwyKT4+Ml07ISgoMHxrKT49KDB8YVtEPj4yXSkpOyl7aWYoKDB8KGI9MHxhWyh3PWF0KygoQT0wfGFbKG09V2UrKGs8PDIpfDApPj4yXSk8''@;'; put 'put ''PDIpfDApPj4yXSkpPj0oMHxhW2M+PjJdKSl7aWYoKDB8YVtMZSsoYjw8Mik+PjJdKSE9KDB8QSkpYnJlYWsgbn1lbHNlIGFbdz4+Ml09cCxhW0xlKyhwPDwyKT4+Ml09YVttPj4yXSxwPXArMXwwO2s9aysxfDB9TT1NKzF8MH1hW09lKyhsPDwyKT4+Ml09cCxtPWx9UHIoOTU1MzQsOTQ5NDMs''@;'; put 'put ''MTU0Myw5NTUxMik7YnJlYWs7ZGVmYXVsdDpSYShmKSxmPTA7YnJlYWsgZX19d2hpbGUoMCk7YVtmKzg+PjJdPVJlfWVsc2UgZj0wfXdoaWxlKDApO0Z0KGF0KX1lbHNlIGY9MDtyZXR1cm4gMHxmfWZ1bmN0aW9uIFk0KGwsYyxmKXt2YXIgYXQsU3Qsa3QsRXQsWnQsY3QscD0wLG09MCxBPTAs''@;'; put 'put ''dz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wLFZlPTAscWU9MCxydD0wLFdlPTAsc3Q9MCxidD0wLGFuPTAsU249MCxIbj0wLHVyPTA7aWYoRXQ9MHxhWzIwKyhsfD0wKT4+Ml0sWnQ9MHxhW2wrMjQ+PjJdLGN0PTB8YVsy''@;'; put 'put ''MCsoY3w9MCk+PjJdLGF0PTB8YVtjKzI0Pj4yXSxTdD0wfGFbMjArKGZ8PTApPj4yXSxrdD0wfGFbZisyND4+Ml0sMT09KDB8KHN0PTB8YVtsKzMyPj4yXSkpJiYoMHxzdCk9PSgwfGFbYyszMj4+Ml0pfHxQcig5NTAwNSw5NDk0MywxNTc0LDk1NTU5KSxzdD0wfGFbbD4+Ml0sKDB8YVtsKzQ+''@;'; put 'put ''PjJdKT09KDB8YVtjPj4yXSkmJigwfGFbYys0Pj4yXSk9PSgwfGFbZj4+Ml0pJiYoMHwocGU9MHxhW2wrMTY+PjJdKSk9PSgwfGFbYysxNj4+Ml0pJiYoMHxwZSk9PSgwfGFbZisxNj4+Ml0pJiYwIT0oMHwoYnQ9MHxRbihhWyhxPWYrNHwwKT4+Ml08PDIpKSkpe2ZvcihwPTA7Oyl7aWYoKDB8''@;'; put 'put ''cCk+PSgwfGFbcT4+Ml0pKXttPTAscD0wO2JyZWFrfWFbYnQrKHA8PDIpPj4yXT0tMSxwPXArMXwwfWU6Zm9yKDshKCgwfHApPj0oMHxzdCkpOylmb3IoRD1wKzF8MCxSPUV0KyhEPDwyKXwwLEc9LTItcHwwLE09MHxhW0V0KyhwPDwyKT4+Ml07Oyl7aWYoKDB8TSk+PSgwfGFbUj4+Ml0pKXtw''@;'; put 'put ''PUQ7Y29udGludWUgZX1mb3Ioaz1jdCsoMSsoYj0wfGFbWnQrKE08PDIpPj4yXSk8PDIpfDAsYj0wfGFbY3QrKGI8PDIpPj4yXTshKCgwfGIpPj0oMHxhW2s+PjJdKSk7KXtmb3Iodz1TdCsoMSsoQT0wfGFbYXQrKGI8PDIpPj4yXSk8PDIpfDAsQT0wfGFbU3QrKEE8PDIpPj4yXTshKCgwfEEp''@;'; put 'put ''Pj0oMHxhW3c+PjJdKSk7KSgwfGFbKHA9YnQrKGFba3QrKEE8PDIpPj4yXTw8Mil8MCk+PjJdKSE9KDB8RykmJihhW3A+PjJdPUcsbT1tKzF8MCksQT1BKzF8MDtiPWIrMXwwfU09TSsxfDB9cD0wfHVjKHN0LDB8YVtxPj4yXSxtLHBlLDEpO2U6ZG97aWYocCl7cWU9MHxhW3ArMjA+PjJdLHJ0''@;'; put 'put ''PTB8YVtwKzI0Pj4yXTt0OmRve3N3aXRjaCgwfHBlKXtjYXNlIDE6UmU9MHxhW2wrMjg+PjJdLExlPTB8YVtjKzI4Pj4yXSxmPTB8YVtmKzI4Pj4yXSxnZT0wfGFbcCsyOD4+Ml0sYVtxZT4+Ml09MCxtPTAsQT0wO246Zm9yKDs7KXtpZigoMHxtKT49KDB8c3QpKXtXZT1BO2JyZWFrIHR9Zm9y''@;'; put 'put ''KE9lPUV0KygoYmU9bSsxfDApPDwyKXwwLGM9cWUrKG08PDIpfDAscGU9MHxhW0V0KyhtPDwyKT4+Ml07ISgoMHxwZSk+PSgwfGFbT2U+PjJdKSk7KXtmb3IocT1jdCsoMSsoRz0wfGFbWnQrKHBlPDwyKT4+Ml0pPDwyKXwwLGw9UmUrKHBlPDwzKXwwLEc9MHxhW2N0KyhHPDwyKT4+Ml07ISgo''@;'; put 'put ''MHxHKT49KDB8YVtxPj4yXSkpOyl7Zm9yKEQ9U3QrKDErKE09MHxhW2F0KyhHPDwyKT4+Ml0pPDwyKXwwLFI9TGUrKEc8PDMpfDAsTT0wfGFbU3QrKE08PDIpPj4yXTshKCgwfE0pPj0oMHxhW0Q+PjJdKSk7KXtpZigoMHwoaz0wfGFbKGI9YnQrKCh3PTB8YVsobT1rdCsoTTw8Mil8MCk+PjJd''@;'; put 'put ''KTw8Mil8MCk+PjJdKSk8KDB8YVtjPj4yXSkpYVtiPj4yXT1BLGFbcnQrKEE8PDIpPj4yXT1hW20+PjJdLF9bZ2UrKEE8PDMpPj4zXT0rX1tSPj4zXSorX1tsPj4zXSorX1tmKyhNPDwzKT4+M10sQT1BKzF8MDtlbHNle2lmKCgwfGFbcnQrKGs8PDIpPj4yXSkhPSgwfHcpKWJyZWFrIG47X1so''@;'; put 'put ''VmU9Z2UrKGs8PDMpfDApPj4zXT0rX1tWZT4+M10rICtfW1I+PjNdKitfW2w+PjNdKitfW2YrKE08PDMpPj4zXX1NPU0rMXwwfUc9RysxfDB9cGU9cGUrMXwwfWFbcWUrKGJlPDwyKT4+Ml09QSxtPWJlfVByKDk1NTgyLDk0OTQzLDE2NDIsOTU1NTkpO2JyZWFrO2Nhc2UgMjpWZT0wfGFbbCsy''@;'; put 'put ''OD4+Ml0sSGU9MHxhW2MrMjg+PjJdLGdlPTB8YVtmKzI4Pj4yXSxiZT0wfGFbcCsyOD4+Ml0sYVtxZT4+Ml09MCxtPTAsQT0wO246Zm9yKDs7KXtpZigoMHxBKT49KDB8c3QpKXtXZT1tO2JyZWFrIHR9Zm9yKExlPUV0KygoT2U9QSsxfDApPDwyKXwwLFJlPXFlKyhBPDwyKXwwLGw9MHxhW0V0''@;'; put 'put ''KyhBPDwyKT4+Ml07ISgoMHxsKT49KDB8YVtMZT4+Ml0pKTspe2ZvcihwZT1jdCsoMSsoRD0wfGFbWnQrKGw8PDIpPj4yXSk8PDIpfDAsYz1WZSsoKGY9bDw8MSk8PDMpfDAsZj1WZSsoKDF8Zik8PDMpfDAsRD0wfGFbY3QrKEQ8PDIpPj4yXTshKCgwfEQpPj0oMHxhW3BlPj4yXSkpOyl7Zm9y''@;'; put 'put ''KFI9U3QrKDErKE09MHxhW2F0KyhEPDwyKT4+Ml0pPDwyKXwwLEc9SGUrKChxPUQ8PDEpPDwzKXwwLHE9SGUrKCgxfHEpPDwzKXwwLE09MHxhW1N0KyhNPDwyKT4+Ml07ISgoMHxNKT49KDB8YVtSPj4yXSkpOyl7aWYoKDB8KGs9MHxhWyhiPWJ0Kygodz0wfGFbKEE9a3QrKE08PDIpfDApPj4y''@;'; put 'put ''XSk8PDIpfDApPj4yXSkpPCgwfGFbUmU+PjJdKSlhW2I+PjJdPW0sYVtydCsobTw8Mik+PjJdPWFbQT4+Ml0sX1tiZSsoKGs9bTw8MSk8PDMpPj4zXT0oKEhuPStfW0c+PjNdKSooU249K19bYz4+M10pLSh1cj0rX1txPj4zXSkqKGFuPStfW2Y+PjNdKSkqK19bKHc9Z2UrKChiPU08PDEpPDwz''@;'; put 'put ''KXwwKT4+M10tKHVyKlNuK2FuKkhuKSorX1soYj1nZSsoKDF8Yik8PDMpfDApPj4zXSxfW2JlKygoMXxrKTw8Myk+PjNdPSgodXI9K19bRz4+M10pKihTbj0rX1tmPj4zXSkrKGFuPStfW3E+PjNdKSooSG49K19bYz4+M10pKSorX1t3Pj4zXSsodXIqSG4tU24qYW4pKitfW2I+PjNdLG09bSsx''@;'; put 'put ''fDA7ZWxzZXtpZigoMHxhW3J0KyhrPDwyKT4+Ml0pIT0oMHx3KSlicmVhayBuO19bKEE9YmUrKChrPDw9MSk8PDMpfDApPj4zXT0rX1tBPj4zXSsoKFNuPStfW0c+PjNdKSooSG49K19bYz4+M10pLShhbj0rX1txPj4zXSkqKHVyPStfW2Y+PjNdKSkqK19bKHc9Z2UrKChiPU08PDEpPDwzKXww''@;'; put 'put ''KT4+M10tKGFuKkhuK3VyKlNuKSorX1soYj1nZSsoKDF8Yik8PDMpfDApPj4zXSxfWyhrPWJlKygoMXxrKTw8Myl8MCk+PjNdPSgoYW49K19bRz4+M10pKihIbj0rX1tmPj4zXSkrKHVyPStfW3E+PjNdKSooU249K19bYz4+M10pKSorX1t3Pj4zXSsoYW4qU24tSG4qdXIpKitfW2I+PjNdKyAr''@;'; put 'put ''X1trPj4zXX1NPU0rMXwwfUQ9RCsxfDB9bD1sKzF8MH1hW3FlKyhPZTw8Mik+PjJdPW0sQT1PZX1Qcig5NTU4Miw5NDk0MywxNjc0LDk1NTU5KTticmVhaztjYXNlIDQ6UmU9MHxhW2wrMjg+PjJdLExlPTB8YVtjKzI4Pj4yXSxjPTB8YVtmKzI4Pj4yXSxmPTB8YVtwKzI4Pj4yXSxhW3FlPj4y''@;'; put 'put ''XT0wLG09MCxBPTA7bjpmb3IoOzspe2lmKCgwfEEpPj0oMHxzdCkpe1dlPW07YnJlYWsgdH1mb3IoYmU9RXQrKChnZT1BKzF8MCk8PDIpfDAsT2U9cWUrKEE8PDIpfDAscT0wfGFbRXQrKEE8PDIpPj4yXTshKCgwfHEpPj0oMHxhW2JlPj4yXSkpOyl7Zm9yKGw9Y3QrKDErKEQ9MHxhW1p0Kyhx''@;'; put 'put ''PDwyKT4+Ml0pPDwyKXwwLHBlPVJlKyhxPDwyKXwwLEQ9MHxhW2N0KyhEPDwyKT4+Ml07ISgoMHxEKT49KDB8YVtsPj4yXSkpOyl7Zm9yKFI9U3QrKDErKE09MHxhW2F0KyhEPDwyKT4+Ml0pPDwyKXwwLEc9TGUrKEQ8PDIpfDAsTT0wfGFbU3QrKE08PDIpPj4yXTshKCgwfE0pPj0oMHxhW1I+''@;'; put 'put ''PjJdKSk7KXtpZigoMHwoaz0wfGFbKGI9YnQrKCh3PTB8YVsoQT1rdCsoTTw8Mil8MCk+PjJdKTw8Mil8MCk+PjJdKSk8KDB8YVtPZT4+Ml0pKWFbYj4+Ml09bSxhW3J0KyhtPDwyKT4+Ml09YVtBPj4yXSxIZT0wfEFyKDB8YVtHPj4yXSwwfGFbcGU+PjJdKSxIZT0wfEFyKEhlLDB8YVtjKyhN''@;'; put 'put ''PDwyKT4+Ml0pLGFbKFZlPWYrKG08PDIpfDApPj4yXT0oMHxhW1ZlPj4yXSkrSGUsbT1tKzF8MDtlbHNle2lmKCgwfGFbcnQrKGs8PDIpPj4yXSkhPSgwfHcpKWJyZWFrIG47SGU9MHxBcigwfGFbRz4+Ml0sMHxhW3BlPj4yXSksSGU9MHxBcihIZSwwfGFbYysoTTw8Mik+PjJdKSxhWyhWZT1m''@;'; put 'put ''KyhrPDwyKXwwKT4+Ml09KDB8YVtWZT4+Ml0pK0hlfU09TSsxfDB9RD1EKzF8MH1xPXErMXwwfWFbcWUrKGdlPDwyKT4+Ml09bSxBPWdlfVByKDk1NTgyLDk0OTQzLDE3MDYsOTU1NTkpO2JyZWFrO2Nhc2UgODphW3FlPj4yXT0wLG09MCxBPTA7bjpmb3IoOzspe2lmKCgwfEEpPj0oMHxzdCkp''@;'; put 'put ''e1dlPW07YnJlYWsgdH1mb3IocGU9RXQrKChsPUErMXwwKTw8Mil8MCxjPXFlKyhBPDwyKXwwLEc9MHxhW0V0KyhBPDwyKT4+Ml07ISgoMHxHKT49KDB8YVtwZT4+Ml0pKTspe2ZvcihxPWN0KygxKyhEPTB8YVtadCsoRzw8Mik+PjJdKTw8Mil8MCxEPTB8YVtjdCsoRDw8Mik+PjJdOyEoKDB8''@;'; put 'put ''RCk+PSgwfGFbcT4+Ml0pKTspe2ZvcihSPVN0KygxKyhNPTB8YVthdCsoRDw8Mik+PjJdKTw8Mil8MCxNPTB8YVtTdCsoTTw8Mik+PjJdOyEoKDB8TSk+PSgwfGFbUj4+Ml0pKTspe2lmKCgwfChrPTB8YVsoYj1idCsoKHc9MHxhWyhBPWt0KyhNPDwyKXwwKT4+Ml0pPDwyKXwwKT4+Ml0pKT49''@;'; put 'put ''KDB8YVtjPj4yXSkpe2lmKCgwfGFbcnQrKGs8PDIpPj4yXSkhPSgwfHcpKWJyZWFrIG59ZWxzZSBhW2I+PjJdPW0sYVtydCsobTw8Mik+PjJdPWFbQT4+Ml0sbT1tKzF8MDtNPU0rMXwwfUQ9RCsxfDB9Rz1HKzF8MH1hW3FlKyhsPDwyKT4+Ml09bSxBPWx9UHIoOTU1ODIsOTQ5NDMsMTcyOSw5''@;'; put 'put ''NTU1OSk7YnJlYWs7ZGVmYXVsdDpSYShwKSxwPTA7YnJlYWsgZX19d2hpbGUoMCk7YVtwKzg+PjJdPVdlfWVsc2UgcD0wfXdoaWxlKDApO0Z0KGJ0KX1lbHNlIHA9MDtyZXR1cm4gMHxwfWZ1bmN0aW9uIE8zKGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgQT0wLHc9MCxiPTA7''@;'; put 'put ''aWYoMiE9KDB8YVszMisobHw9MCk+PjJdKSYmUHIoOTUxMDAsOTQ5NDMsMTk3MSw5NTYwNyksKDB8Yyk+PTEpe2ZvcigoMHwoQT0odz0wfGFbbCs4Pj4yXSkrY3wwKSk+PSgwfGFbbCsxMj4+Ml0pJiZmdW5jdGlvbiB2NShsLGMpe2N8PTA7dmFyIGY9MCxwPTAsbT0wOzI9PSgwfGFbMzIrKGx8''@;'; put 'put ''PTApPj4yXSk/KGFbKGY9bCsyMHwwKT4+Ml09MHxWMCgwfGFbZj4+Ml0sbT1jPDwyKSxhWyhmPWwrMjR8MCk+PjJdPTB8VjAoMHxhW2Y+PjJdLG0pLCgwfChmPTB8YVtsKzQwPj4yXSkpPjAmJihwPTB8YVsobT1sKzI4fDApPj4yXSxmPTB8QXIoZixjKSxmPXA/MHxWMChwLGYpOjB8UW4oZiks''@;'; put 'put ''YVttPj4yXT1mKSk6KGFbKGY9bCsyNHwwKT4+Ml09MHxWMCgwfGFbZj4+Ml0sYzw8MiksKDB8KGY9MHxhW2wrNDA+PjJdKSk+MCYmKHA9MHxhWyhtPWwrMjh8MCk+PjJdLGY9MHxBcihmLGMpLGY9cD8wfFYwKHAsZik6MHxRbihmKSxhW20+PjJdPWYpKSxhW2wrMTI+PjJdPWN9KGwsQSsxMHww''@;'; put 'put ''KSxnbygoMHxhW2wrMjA+PjJdKSsoYj13PDwyKXwwLDB8ZiwwfChBPWM8PDIpKSxnbygoMHxhW2wrMjQ+PjJdKStifDAsMHxwLDB8QSksMHwoQT0wfGFbbCs0MD4+Ml0pJiYoYj0wfEFyKEEsYyksdz0wfEFyKEEsdyksZ28oKDB8YVtsKzI4Pj4yXSkrd3wwLDB8bSwwfGIpKSxtPWwrNHwwLHc9''@;'; put 'put ''MDshKCgwfHcpPj0oMHxjKSk7KSgwfChBPTB8YVtmKyh3PDwyKT4+Ml0pKT49KDB8YVtsPj4yXSkmJihhW2w+PjJdPUErMSksKDB8KEE9MHxhW3ArKHc8PDIpPj4yXSkpPj0oMHxhW20+PjJdKSYmKGFbbT4+Ml09QSsxKSx3PXcrMXwwO2FbKGI9bCs4fDApPj4yXT0oMHxhW2I+PjJdKStjfXJl''@;'; put 'put ''dHVybiAwfGx9ZnVuY3Rpb24gVTQobCl7bHw9MDt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MDtlOmRve2lmKGwpe009MHxhW2wrMjA+PjJdLGs9MHxhW2wrMjQ+PjJdO3Q6ZG97c3dpdGNoKDB8YVtsKzE2Pj4yXSl7Y2FzZSAxOnc9MHxhW2wrMjg+PjJd''@;'; put 'put ''LHA9MHxhW2w+PjJdLGM9MDtuOmZvcig7Oyl7aWYoKDB8Yyk+PSgwfHApKWJyZWFrIHQ7Zm9yKGY9MS8rKChBPTB8YVtNKygobT1jKzF8MCk8PDIpPj4yXSktKGM9MHxhW00rKGM8PDIpPj4yXSl8MCk7Oyl7aWYoKDB8Yyk+PSgwfEEpKXtjPW07Y29udGludWUgbn1fWyhrPXcrKGM8PDMpfDAp''@;'; put 'put ''Pj4zXT0rX1trPj4zXSpmLGM9YysxfDB9fWNhc2UgMjptPTB8YVtsKzI4Pj4yXSxBPTB8YVtsPj4yXSxjPTA7bjpmb3IoOzspe2lmKCgwfGMpPj0oMHxBKSlicmVhayB0O2ZvcihmPTEvKygoYj0wfGFbTSsoKHc9YysxfDApPDwyKT4+Ml0pLShwPTB8YVtNKyhjPDwyKT4+Ml0pfDApOzspe2lm''@;'; put 'put ''KCgwfHApPj0oMHxiKSl7Yz13O2NvbnRpbnVlIG59KDB8YVtrKyhwPDwyKT4+Ml0pIT0oMHxjKSYmKF9bKFI9bSsoKEQ9cDw8MSk8PDMpfDApPj4zXT0rX1tSPj4zXSpmLF9bKEQ9bSsoKDF8RCk8PDMpfDApPj4zXT0rX1tEPj4zXSpmKSxwPXArMXwwfX1jYXNlIDQ6UHIoMTM4Mzk0LDk0OTQz''@;'; put 'put ''LDIxOTIsOTU2NDgpO2JyZWFrO2Nhc2UgODpicmVhaztkZWZhdWx0Omw9MDticmVhayBlfX13aGlsZSgwKX1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIEE1KGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wO2lmKDAhPSgwfChsfD0wKSkmJihmPTB8YVsoYz1sKzh8MCk+''@;'; put 'put ''PjJdLCgwfChwPTB8YVtsKzQ+PjJdKSk9PSgwfGFbbD4+Ml0pKSl7Zm9yKEE9MHxhW2wrMjQ+PjJdLGw9MHxhW2wrMjA+PjJdLG09MHx1YyhwLHAsZiw4LDEpLGdvKDB8YVttKzIwPj4yXSwwfGwsNCsocDw8Mil8MCksZ28oMHxhW20rMjQ+PjJdLDB8QSxmPDwyfDApLGFbbSs4Pj4yXT1hW2M+''@;'; put 'put ''PjJdLGw9MHxhaChtLDEpLFJhKG0pLGw9MHx3cChsKSxmPTB8UW4oYVsocD1sKzh8MCk+PjJdPDwzKSxhW2wrMjg+PjJdPWYscD0wfGFbcD4+Ml0sYz0wOyEoKDB8Yyk+PSgwfHApKTspX1tmKyhjPDwzKT4+M109MSxjPWMrMXwwO2FbbCsxNj4+Ml09MSxhW2wrNDA+PjJdPTh9ZWxzZSBsPTA7''@;'; put 'put ''cmV0dXJuIDB8bH1mdW5jdGlvbiBCaCgpe3JldHVybiA0LjY1NjYxMjg3NTI0NTc5N2UtMTAqKygwfFQxKCkpfWZ1bmN0aW9uIGJ4KGwpe3JldHVybigwfChsfD0wKSk+MT8wfCgwfFQxKCkpJSgwfGwpOihQcig5NTY4Miw5NTY4OCw1OCw5NTY5OCksMCl9ZnVuY3Rpb24gSGQobCl7bHw9MDt2''@;'; put 'put ''YXIgYz0wLGY9MCxwPTAsbT0wLEE9MDtlOmRve2lmKCgwfGwpPDEpYz0wO2Vsc2V7Zm9yKGM9MHxRbihsPDwyKSxmPTA7KDB8ZikhPSgwfGwpOylhW2MrKGY8PDIpPj4yXT1mLGY9ZisxfDA7Zm9yKDs7KXtpZigoMHxsKTw9MSlicmVhayBlO3A9MHxieChsKSxtPTB8YVsoQT1jKygoZj1sKy0x''@;'; put 'put ''fDApPDwyKXwwKT4+Ml0sYVtBPj4yXT1hWyhwPWMrKHA8PDIpfDApPj4yXSxhW3A+PjJdPW0sbD1mfX19d2hpbGUoMCk7cmV0dXJuIDB8Y31mdW5jdGlvbiB5NShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wO2ZvcihwPTAsbT0wOyEoKDB8cCk+PSgwfGwpKTspQT0rX1tm''@;'; put 'put ''KyhwPDwzKT4+M10qK19bYysocDw8Myk+PjNdK20scD1wKzF8MCxtPUE7cmV0dXJuK219ZnVuY3Rpb24gQ3gobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscD0rcDt2YXIgbT0wLEE9MDtmb3IobT0wOyEoKDB8bSk+PSgwfGwpKTspX1soQT1mKyhtPDwzKXwwKT4+M109K19bQT4+M10qcCsgK19b''@;'; put 'put ''YysobTw8Myk+PjNdLG09bSsxfDA7cmV0dXJuIDB8Zn1mdW5jdGlvbiBQXyhsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwPStwO3ZhciBtPTAsQT0wO2ZvcihtPTA7ISgoMHxtKT49KDB8bCkpOylfWyhBPWMrKG08PDMpfDApPj4zXT0rX1tmKyhtPDwzKT4+M10qcCsgK19bQT4+M10sbT1tKzF8''@;'; put 'put ''MDtyZXR1cm4gMHxjfWZ1bmN0aW9uIGR1KGwsYyxmLHApe2x8PTAscHw9MDt2YXIgQSxtPTAsdz0wO2ZvcihBPTB8QXIoZnw9MCxjfD0wKSxwPTB8QXIocCxjKSxtPTAsZj0wOyEoKDB8Zik+PSgwfGMpKTspbT0odz0rX1tsKyhmK0E8PDMpPj4zXS0rX1tsKyhmK3A8PDMpPj4zXSkqdyttLGY9''@;'; put 'put ''ZisxfDA7cmV0dXJuKygodz0rRDAoK20pKT4xZS0xNT93OjFlLTE1KX1mdW5jdGlvbiBfYyhsLGMsZixwKXtsfD0wLHB8PTA7dmFyIEEsbT0wLHc9MDtmb3IoQT0wfEFyKGZ8PTAsY3w9MCkscD0wfEFyKHAsYyksbT0wLGY9MDshKCgwfGYpPj0oMHxjKSk7KW09KHc9K19bbCsoZitBPDwzKT4+''@;'; put 'put ''M10tK19bbCsoZitwPDwzKT4+M10pKncrbSxmPWYrMXwwO3JldHVybisgK0QwKCttKX1mdW5jdGlvbiBfQShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wO2ZvcihwPTAsbT0wOyEoKDB8bSk+PSgwfGYpKTspcD0oQT0rX1tsKyhtPDwzKT4+M10tK19bYysobTw8Myk+PjNd''@;'; put 'put ''KSpBK3AsbT1tKzF8MDtyZXR1cm4rICtEMCgrcCl9ZnVuY3Rpb24ga3gobCxjKXtjfD0wLDE9PSgwfEdvKGx8PTApKT8obD0wfGFbMTMyKygwfGFbMTYrKDB8RHQobCkpPj4yXSk+PjJdLGFbbD4+Ml09MCxhW2wrND4+Ml09MCxhW2wrOD4+Ml09MCxhW2wrMTI+PjJdPTApOihmdW5jdGlvbiB2''@;'; put 'put ''YShsKXt2YXIgYzsoMHwoYz0wfGNyKDB8YVthWzExMisoMHxhWzE2KygwfER0KGx8PTApKT4+Ml0pPj4yXT4+Ml0pKSkhPSgwfChsPTB8YVs0NjkyNV0pKSYmKGFbNDY1NTVdPTAsYVs0NjkyNV09YyxhWzQ2OTI2XT0wfHNpKGMsMCw5NTcxMywwKSxhWzQ2OTI3XT0wfHNpKDB8YVs0NjkyNV0s''@;'; put 'put ''MSw5NTcyMSwwKSxhWzQ2OTI4XT0wfHNpKDB8YVs0NjkyNV0sMSw5NTczOCwwKSxsPTB8YVs0NjkyNV0pLGFbNDY5MjldPTB8TGkobCw5NTczOCksU0EoMTg2MjA4KSxhWzQ2NTU0XT0xLF9bMjMyODBdPStNbCgwfGFbNDY5MjVdLDB8YVs0NjkyNl0sMSwwKSxhWzQ2NTU2XT1hWzQ2OTI3XSxh''@;'; put 'put ''WzQ2NTU3XT1hWzQ2OTI4XSxhWzQ2NTU4XT1hWzQ2OTI5XX0obCksYz0oMHx0MSgwfExpKGMsOTU3MDQpKSk8PDI0Pj4yND8wfGZ1bmN0aW9uIFR0KGwpe2x8PTA7dmFyIG0sYz0wLGY9MCxwPTA7Zm9yKG09bGUsbGU9bGUrMTQ0fDAscD1tLGY9bSs4fDAsYVs0NjU1NV09MSsoYz0wfGFbNDY1''@;'; put 'put ''NTVdKSxhW3A+PjJdPWMsb28oZiw5NjIzNCxwKSxwPShmPTB8WV8oMHxwcyhsLGYsMSkpKSs4fDAsYz0wfER0KGwpO2M7KVluKDB8YVtwPj4yXSxjLDEpLGFbMTIrKDB8YVsxMTIrKDB8YVtjKzE2Pj4yXSk+PjJdKT4+Ml09ZixjPTB8enQobCxjKTtyZXR1cm4gbGU9bSwwfGZ9KGwpOjB8ZnVu''@;'; put 'put ''Y3Rpb24gYlAobCxjKXt2YXIgayxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxNPTA7Zm9yKGZ1bmN0aW9uIF9QKGwsYyl7bHw9MDt2YXIgQSxiLGY9MCxwPTAsbT0wO2I9bGUsbGU9bGUrMTZ8MCxBPWIrOHwwLDAhPSgwfChwPTB8YVsyNCsoY3w9MCk+PjJdKSkmJjAhPSgwfChmPTB8R3IobCxw''@;'; put 'put ''LDApKSl8fChtPTMpO2U6ZG97aWYoMz09KDB8bSkpe3A9YysyMHwwO3Q6ZG97aWYoMHxhW3A+PjJdKWZvcihmPTB8RHQobCk7Oyl7aWYoIWYpYnJlYWsgdDtpZigoMHxwSigwfGFbYVsxMTIrKDB8YVtmKzE2Pj4yXSk+PjJdPj4yXSwwfGFbcD4+Ml0sMCkpPDwyND4+MjQpYnJlYWsgZTtmPTB8''@;'; put 'put ''enQobCxmKX19d2hpbGUoMCk7Zj0wfER0KGwpfX13aGlsZSgwKTthW0ErND4+Ml09MCxhW0E+PjJdPTAsUXgobCxmLGMsMSxBKSxsZT1ifShsfD0wLGN8PTApLHc9MHxhWzQrKGs9MHxhW2M+PjJdKT4+Ml07dzspe2ZvcihiPTB8RHQoTT0wfGFbdys4Pj4yXSksbD0wfGFbMTYrKGY9MHxhWzEx''@;'; put 'put ''MisoMHxhW2IrMTY+PjJdKT4+Ml0pKzQ+PjJdLGY9MHxhW2YrOD4+Ml0sbT1iLGI9MHx6dChNLGIpO2I7KSgwfChBPTB8YVsxNisocD0wfGFbMTEyKygwfGFbYisxNj4+Ml0pPj4yXSkrND4+Ml0pKTwoMHxsKSYmKG09YixmPTB8YVtwKzg+PjJdLGw9QSksYj0wfHp0KE0sYik7YVsoTT00Kyhi''@;'; put 'put ''PTB8YVsxMTIrKDB8YVtmKzE2Pj4yXSk+PjJdKXwwKT4+Ml09OHxhW00+PjJdLGFbdz4+Ml09bSxNPTB8YVt3KzQ+PjJdLFVfKDM2KygwfGFbYisxMj4+Ml0pfDAsdyksdz1NfXJldHVybiBTQShjKSwwfGt9KGwsMTg2MjA4KSxmdW5jdGlvbiBNUChsLGMsZil7S3gobHw9MCxjfD0wLCtfWzMy''@;'; put 'put ''KyhmfD0wKT4+M10pfShsLGMsMTg2MjA4KSxmdW5jdGlvbiBGXyhsKXtYeChsfD0wKX0oYykpfWZ1bmN0aW9uIGFQKGwsYyl7dmFyIGY7cmV0dXJuIGx8PTAsY3w9MCxmPTB8UW4oMzIpLGFbZj4+Ml09NCxfW2YrOD4+M109Ljc1LGFbZisxNj4+Ml09MTA3Mzc0MTgyNCxhW2YrMjA+PjJdPTEs''@;'; put 'put ''YVtmKzI0Pj4yXT1sLGFbZisyOD4+Ml09YywwfGZ9ZnVuY3Rpb24gbnQobCl7RnQobHw9MCl9ZnVuY3Rpb24gb3QobCl7dmFyIGM9MCxmPTA7aWYobHw9MCl7Zj0wfGFbbCs4Pj4yXTtkb3tpZigwfGYpe2lmKDB8YVtsPj4yXSl7aWYoUmEoZiksIShjPTB8YVtsKzEyPj4yXSkpYnJlYWs7UmEo''@;'; put 'put ''Yyk7YnJlYWt9MHxhW2wrMzY+PjJdJiYoUmEoZiksMHwoYz0wfGFbbCsxMj4+Ml0pKSYmUmEoYyl9fXdoaWxlKDApO1JhKDB8YVtsKzE2Pj4yXSksUmEoMHxhW2wrMjA+PjJdKSwwfChjPTB8YVtsKzI0Pj4yXSkmJigwfGFbbD4+Ml0pPjAmJkZ0KGMpLG90KDB8YVtsKzI4Pj4yXSksRnQobCl9''@;'; put 'put ''fWZ1bmN0aW9uIHc1KGwsYyxmLHAsbSxBLHcsYixrLE0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCxBfD0wLHd8PTAsYnw9MCxrfD0wLE18PTA7dmFyIFdlLFN0LGt0LHN0LEV0LFp0LEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wLFZlPTAscWU9''@;'; put 'put ''MCxydD0wLGF0PTA7WnQ9bGUsbGU9bGUrMzJ8MCxxPVp0KzI0fDAsV2U9WnQrMjB8MCxrdD1adCsxNnwwLFI9WnQrMTJ8MCxzdD1adCs4fDAsRXQ9WnQrNHwwLExlPVp0LGFbKFN0PVp0KzI4fDApPj4yXT0wLGFbcT4+Ml09MCxhW2t0Pj4yXT0wLGFbc3Q+PjJdPTAsYVtFdD4+Ml09MCxhW2M+''@;'; put 'put ''PjJdPTAsYVtwPj4yXT0wLGFbdz4+Ml09MCxhW2I+PjJdPTAsYXQ9MHxhW2w+PjJdLGFbTT4+Ml09YVsoRz1rKzI0fDApPj4yXSxEPTB8YVtHPj4yXTtlOmRve3N3aXRjaCgwfEQpe2Nhc2UgMTI6YVtHPj4yXT0zLGFbTT4+Ml09Myx3NShsLGMsZixwLG0sQSx3LGIsayxNKSwwPT0oMHxhW2M+''@;'; put 'put ''PjJdKSYmKGFbRz4+Ml09NCxhW00+PjJdPTQsdzUobCxjLGYscCxtLEEsdyxiLGssTSksMD09KDB8YVtjPj4yXSkpJiYoYVtHPj4yXT02LGFbTT4+Ml09Nix3NShsLGMsZixwLG0sQSx3LGIsayxNKSwwPT0oMHxhW2M+PjJdKSkmJihhW0c+PjJdPTksYVtNPj4yXT05LHc1KGwsYyxmLHAsbSxB''@;'; put 'put ''LHcsYixrLE0pLDA9PSgwfGFbYz4+Ml0pKSYmKGFbRz4+Ml09MixhW00+PjJdPTIsdzUobCxjLGYscCxtLEEsdyxiLGssTSkpLGFbRz4+Ml09MTIsRz0wLHE9MCxrPTAsUj0wLEQ9MCxNPTA7YnJlYWs7Y2FzZSA5OmNhc2UgMTA6aWYoZj0wfGFbaysyMD4+Ml0sOT09KDB8RCk/SF8obCxmLGt0''@;'; put 'put ''LFIsV2UpOkduKGwsZixrdCxSLFdlKSxPZT0wfGFbbCsyMD4+Ml0sTGU9MHxhW2wrMjQ+PjJdLGJlPTB8YVtSPj4yXSwwfGFbaysyOD4+Ml0pe2lmKCgwfGJlKT09KDB8YXQpKXtHPTAscT0wLGs9MCxSPTAsRD0wLE09MDticmVhayBlfX1lbHNlIGlmKCgwfGJlKT09KDB8YXQpfHwrX1trKzg+''@;'; put 'put ''PjNdKisoMHxhdCk8KygwfGJlKSl7Rz0wLHE9MCxrPTAsUj0wLEQ9MCxNPTA7YnJlYWsgZX1pZigoMHxiZSk+PSgwfGFbaz4+Ml0pKXtIZT0wfFFuKFZlPShxZT0wfGFbV2U+PjJdKTw8MiksVmU9MHxRbihWZSkscWU9MHxRbihxZTw8MyksYVtXZT4+Ml09MCxnZT0wfGFba3Q+PjJdLHBlPTAs''@;'; put 'put ''Uj0wO3Q6Zm9yKDshKCgwfHBlKT49KDB8YXQpKTspaWYoLTE9PSgwfGFbKGY9Z2UrKHBlPDwyKXwwKT4+Ml0pKXtmb3IoRz0wfGFbKGs9T2UrKChxPXBlKzF8MCk8PDIpfDApPj4yXSxmPTAsTT1EPTB8YVtPZSsocGU8PDIpPj4yXTshKCgwfE0pPj0oMHxHKSk7KWY9KCgwfGFbZ2UrKGFbTGUr''@;'; put 'put ''KE08PDIpPj4yXTw8Mik+PjJdKT4+PjMxXjEpK2Z8MCxNPU0rMXwwO2ZvcihSZT0xLysoMHxmKSxmPUc7Oyl7aWYoKDB8RCk+PSgwfGYpKXtwZT1xO2NvbnRpbnVlIHR9KDB8YVtnZSsoYVsoTT1MZSsoRDw8Mil8MCk+PjJdPDwyKT4+Ml0pPi0xPyhhW0hlKyhSPDwyKT4+Ml09cGUsYVtWZSso''@;'; put 'put ''YVtXZT4+Ml08PDIpPj4yXT1hW2dlKyhhW00+PjJdPDwyKT4+Ml0sYVtXZT4+Ml09TT0xKyhmPTB8YVtXZT4+Ml0pfDAsX1txZSsoZjw8Myk+PjNdPVJlLGY9MHxhW2s+PjJdKTpNPVIsRD1EKzF8MCxSPU19fWVsc2UgYVtIZSsoUjw8Mik+PjJdPXBlLGFbVmUrKGFbV2U+PjJdPDwyKT4+Ml09''@;'; put 'put ''YVtmPj4yXSxhW1dlPj4yXT1rPTErKHE9MHxhW1dlPj4yXSl8MCxfW3FlKyhxPDwzKT4+M109MSxwZT1wZSsxfDAsUj1rO2F0PTB8bzQoUixhdCxiZSxIZSxWZSxxZSwxLDgpLGFbdz4+Ml09YXQsYXQ9MHxZeShhdCksYVtiPj4yXT1hdCx3PTB8WTQoYXQsbCwwfGFbdz4+Ml0pLGFbYz4+Ml09''@;'; put 'put ''dyx3PyhLZigwfGFbYj4+Ml0sbSxBLDApLGFbKHE9MzYrKEc9MHxhW2M+PjJdKXwwKT4+Ml09M3xhW3E+PjJdLGFbYz4+Ml09MHx3cChHKSxhW3A+PjJdPTAsRz1xZSxxPVZlLGs9SGUsUj1IZSxEPVZlLE09cWUpOihHPXFlLHE9VmUsaz1IZSxSPUhlLEQ9VmUsTT1xZSl9ZWxzZSBHPTAscT0w''@;'; put 'put ''LGs9MCxSPTAsRD0wLE09MDticmVhaztjYXNlIDU6cnQ9MjY7YnJlYWs7Y2FzZSAxOndpKGwsMHxhWyhNPWsrMjB8MCk+PjJdLFN0LHEpLDI9PSgwfChmPTB8YVtHPj4yXSkpPyhmPU0scnQ9MjQpOnJ0PTI1O2JyZWFrO2Nhc2UgMjpmPWsrMjB8MCxydD0yNDticmVhaztjYXNlIDM6QjAobCww''@;'; put 'put ''fGFbaysyMD4+Ml0sc3QsRXQsTGUpLHJ0PTEyO2JyZWFrO2Nhc2UgNDpQMChsLDB8YVtrKzIwPj4yXSxzdCxFdCxMZSkscnQ9MTI7YnJlYWs7Y2FzZSA2OmYxKGwsc3QsRXQsTGUpLHJ0PTEyO2JyZWFrO2RlZmF1bHQ6Rz0wLHE9MCxrPTAsUj0wLEQ9MCxNPTB9fXdoaWxlKDApO2Rve2lmKDEy''@;'; put 'put ''PT0oMHxydCkpe2lmKHBlPTB8YVtMZT4+Ml0sMHxhW2srMjg+PjJdKXtpZigoMHxwZSk9PSgwfGF0KSl7Rz0wLHE9MCxrPTAsUj0wLEQ9MCxNPTA7YnJlYWt9fWVsc2UgaWYoKDB8cGUpPT0oMHxhdCl8fCtfW2srOD4+M10qKygwfGF0KTwrKDB8cGUpKXtHPTAscT0wLGs9MCxSPTAsRD0wLE09''@;'; put 'put ''MDticmVha31pZigoMHxwZSk+PSgwfGFbaz4+Ml0pKXtnZT0wfFFuKGJlPWF0PDwyKSxiZT0wfFFuKGJlKSxPZT0wfFFuKGF0PDwzKSxhW1dlPj4yXT0wLFI9MHxhW0V0Pj4yXSxHPTB8YVtzdD4+Ml0sRD0wLGY9MDtlOmZvcig7ISgoMHxEKT49KDB8YVtMZT4+Ml0pKTspZm9yKHE9RCsxfDAs''@;'; put 'put ''az1SKyhxPDwyKXwwLE09MHxhW1IrKEQ8PDIpPj4yXTs7KXtpZigoMHxNKT49KDB8YVtrPj4yXSkpe0Q9cTtjb250aW51ZSBlfWFbZ2UrKGY8PDIpPj4yXT1hW0crKE08PDIpPj4yXSxhW2JlKyhhW1dlPj4yXTw8Mik+PjJdPUQsYVtXZT4+Ml09cWU9MSsoVmU9MHxhW1dlPj4yXSl8MCxfW09l''@;'; put 'put ''KyhWZTw8Myk+PjNdPTEsTT1NKzF8MCxmPXFlfWF0PTB8bzQoZixhdCxwZSxnZSxiZSxPZSwxLDgpLGFbdz4+Ml09YXQsYVtiPj4yXT0wfFl5KGF0KSxhW3A+PjJdPTAsdz0wfFk0KDB8YVtiPj4yXSxsLDB8YVt3Pj4yXSksYVtjPj4yXT13LHc/KEtmKDB8YVtiPj4yXSxtLEEsMCksYVtiPj4y''@;'; put 'put ''XT0wfFU0KDB8YVtiPj4yXSksYVsocT0zNisoRz0wfGFbYz4+Ml0pfDApPj4yXT0zfGFbcT4+Ml0sYVtjPj4yXT0wfHdwKEcpLEc9T2UscT1iZSxrPWdlLFI9Z2UsRD1iZSxNPU9lKTooRz1PZSxxPWJlLGs9Z2UsUj1nZSxEPWJlLE09T2UpfWVsc2UgRz0wLHE9MCxrPTAsUj0wLEQ9MCxNPTB9''@;'; put 'put ''ZWxzZSAyND09KDB8cnQpJiYoVm0obCwwfGFbZj4+Ml0sU3QscSksZj0wfGFbRz4+Ml0scnQ9MjUpfXdoaWxlKDApOzI1PT0oMHxydCkmJihydD01PT0oMHxmKT8yNjoyNyksMjY9PSgwfHJ0KSYmKGZ1bmN0aW9uIFN4KGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBnZSxiZSxPZSxMZSxt''@;'; put 'put ''PTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MDtmb3IoYmU9MHxhWzIwKyhsfD0wKT4+Ml0sT2U9MHxhW2wrMjQ+PjJdLEE9MHxhW2wrND4+Ml0scT0wfFFuKChMZT0wfGFbbD4+Ml0pPDwyKSxhW2Y+PjJdPXEsbT0wOyEoKDB8bSk+PSgwfExlKSk7KWFbcSsobTw8''@;'; put 'put ''Mik+PjJdPW0sbT1tKzF8MDthW3A+PjJdPUEsZ2U9MHxhW2wrMjg+PjJdO2U6ZG97aWYoYyl7Zm9yKHBlPTB8SGQoTGUpLHE9MCxtPTAsdz0wOyEoKDB8cSk+PSgwfExlKSk7KXtpZigoMHxhWyhEPShNPTB8YVtmPj4yXSkrKChrPTB8YVtwZSsocTw8Mik+PjJdKTw8Mil8MCk+PjJdKT09KDB8''@;'; put 'put ''aykpe2ZvcihHPSsoKFI9MHxhW2JlKyhrKzE8PDIpPj4yXSktKGM9MHxhW2JlKyhrPDwyKT4+Ml0pfDApLEE9MTshKCgwfGMpPj0oMHxSKSk7KSgwfGspIT0oMHwobD0wfGFbT2UrKGM8PDIpPj4yXSkpJiYoMHxhW00rKGw8PDIpPj4yXSk9PSgwfGwpJiYoYj0rX1tnZSsoYzw8Myk+PjNdLygr''@;'; put 'put ''KCgwfGFbYmUrKGwrMTw8Mik+PjJdKS0oMHxhW2JlKyhsPDwyKT4+Ml0pfDApKkcpLDAhPSgwfEEpfHxiPnc/KEE9MCxtPWwsdz1iKTpBPTApLGM9YysxfDA7QXx8KGFbTSsobTw8Mik+PjJdPWssYVtEPj4yXT1tLGFbcD4+Ml09KDB8YVtwPj4yXSktMSl9cT1xKzF8MH1GdChwZSl9ZWxzZSBm''@;'; put 'put ''b3IobT0wLHc9MCxrPTA7Oyl7aWYoKDB8ayk+PSgwfExlKSlicmVhayBlO2ZvcihSPXErKGs8PDIpfDAsRz0rKChEPTB8YVtiZSsoKE09aysxfDApPDwyKT4+Ml0pLShjPTB8YVtiZSsoazw8Mik+PjJdKXwwKSxBPTE7ISgoMHxjKT49KDB8RCkpOykoMHxrKSE9KDB8KGw9MHxhW09lKyhjPDwy''@;'; put 'put ''KT4+Ml0pKSYmKDB8YVtxKyhsPDwyKT4+Ml0pPT0oMHxsKSYmKDB8YVtSPj4yXSk9PSgwfGspJiYoYj0rX1tnZSsoYzw8Myk+PjNdLygrKCgwfGFbYmUrKGwrMTw8Mik+PjJdKS0oMHxhW2JlKyhsPDwyKT4+Ml0pfDApKkcpLDAhPSgwfEEpfHxiPnc/KEE9MCxtPWwsdz1iKTpBPTApLGM9Yysx''@;'; put 'put ''fDA7MHxBfHwoYVtxKyhtPDwyKT4+Ml09ayxhW3ErKGs8PDIpPj4yXT1tLGFbcD4+Ml09KDB8YVtwPj4yXSktMSksaz1NfX13aGlsZSgwKX0obCwwfGFbaysyMD4+Ml0sU3QscSkscnQ9MjcpO2Rve2lmKDI3PT0oMHxydCkpe2lmKGY9MHxhW3E+PjJdLDB8YVtrKzI4Pj4yXSl7aWYoKDB8Zik9''@;'; put 'put ''PSgwfGF0KSl7Rz0wLHE9MCxrPTAsUj0wLEQ9MCxNPTA7YnJlYWt9fWVsc2UgaWYoKDB8Zik9PSgwfGF0KXx8K19bays4Pj4zXSorKDB8YXQpPCsoMHxmKSl7Rz0wLHE9MCxrPTAsUj0wLEQ9MCxNPTA7YnJlYWt9aWYoKDB8Zik+PSgwfGFbaz4+Ml0pKXtmb3IocGU9MHxRbihnZT1hdDw8Miks''@;'; put 'put ''Z2U9MHxRbihnZSksYmU9MHxRbihhdDw8MyksYVtXZT4+Ml09MCxxPTB8YVtTdD4+Ml0sZj0wLEc9MDshKCgwfEcpPj0oMHxhdCkpOykoMHwoRD0wfGFbKE09cSsoRzw8Mil8MCk+PjJdKSk+LTEmJihhW3BlKyhhW1dlPj4yXTw8Mik+PjJdPUcsYVtnZSsoYVtXZT4+Ml08PDIpPj4yXT1mLGFb''@;'; put 'put ''V2U+PjJdPVI9MSsocnQ9MHxhW1dlPj4yXSl8MCxfW2JlKyhydDw8Myk+PjNdPTEsKDB8RCkhPSgwfEcpJiYoYVtwZSsoUjw8Mik+PjJdPWFbTT4+Ml0sYVtnZSsoYVtXZT4+Ml08PDIpPj4yXT1mLGFbV2U+PjJdPTErKHJ0PTB8YVtXZT4+Ml0pLF9bYmUrKHJ0PDwzKT4+M109MSxhW3ErKGFb''@;'; put 'put ''TT4+Ml08PDIpPj4yXT0tMSksYVtNPj4yXT0tMSxmPWYrMXwwKSxHPUcrMXwwO2F0PTB8bzQoMHxhW1dlPj4yXSxhdCxmLHBlLGdlLGJlLDEsOCksYVt3Pj4yXT1hdCxhdD0wfFl5KGF0KSxhW2I+PjJdPWF0LHc9MHxZNChhdCxsLDB8YVt3Pj4yXSksYVtjPj4yXT13LHc/KEtmKDB8YVtiPj4y''@;'; put 'put ''XSxtLEEsMCksYVtiPj4yXT0wfFU0KDB8YVtiPj4yXSksYVsocT0zNisoRz0wfGFbYz4+Ml0pfDApPj4yXT0zfGFbcT4+Ml0sYVtjPj4yXT0wfHdwKEcpLGFbcD4+Ml09MCxHPWJlLHE9Z2Usaz1wZSxSPXBlLEQ9Z2UsTT1iZSk6KEc9YmUscT1nZSxrPXBlLFI9cGUsRD1nZSxNPWJlKX1lbHNl''@;'; put 'put ''IEc9MCxxPTAsaz0wLFI9MCxEPTAsTT0wfX13aGlsZSgwKTswfChmPTB8YVtTdD4+Ml0pJiZGdChmKSwwfChmPTB8YVtrdD4+Ml0pJiZGdChmKSwwfGsmJkZ0KFIpLDB8cSYmRnQoRCksMHxHJiZGdChNKSwwfChmPTB8YVtzdD4+Ml0pJiZGdChmKSwwfChmPTB8YVtFdD4+Ml0pJiZGdChmKSxs''@;'; put 'put ''ZT1adH1mdW5jdGlvbiBCMChsLGMsZixwLG0pe2N8PTAscHw9MCxtfD0wO3ZhciBiZSxIZSxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsT2U9MCxMZT0wLFJlPTA7Zm9yKE9lPTB8YVsyMCsobHw9MCk+PjJdLExlPTB8YVtsKzI0Pj4yXSxhWyhmfD0wKT4+''@;'; put 'put ''Ml09MHxRbihSZT0oSGU9MHxhW2w+PjJdKTw8MiksYVtwPj4yXT0wfFFuKFJlKzR8MCksUmU9MHxRbihSZSksQT0wOyEoKDB8QSk+PSgwfEhlKSk7KWFbUmUrKEE8PDIpPj4yXT1BLEE9QSsxfDA7YVttPj4yXT0wLGFbKGdlPTB8YVtwPj4yXSk+PjJdPTAsYmU9MHxhW2wrMjg+PjJdO2U6ZG97''@;'; put 'put ''aWYoYyl7Zm9yKGdlPTB8SGQoSGUpLFI9MCxBPTA7Oyl7aWYoKDB8Uik+PSgwfEhlKSl7cGU9MCxsPTAsYj0wO2JyZWFrfWw9MHxhW2dlKyhSPDwyKT4+Ml07dDpkb3tpZigtMSE9KDB8YVtSZSsobDw8Mik+PjJdKSYmKHE9MHxhW09lKyhsPDwyKT4+Ml0sMT09KCgwfGFbT2UrKGwrMTw8Mik+''@;'; put 'put ''PjJdKS1xfDApKSl7Zm9yKGFbUmUrKChrPTB8YVtMZSsocTw8Mik+PjJdKTw8Mik+PjJdPS0xLGFbKE09MHxhW2Y+PjJdKSsoQTw8Mik+PjJdPWssRD1PZSsoaysxPDwyKXwwLHc9MHxhW09lKyhrPDwyKT4+Ml0sQT1BKzF8MDshKCgwfHcpPj0oMHxhW0Q+PjJdKSk7KSgwfGspIT0oMHwoYz0w''@;'; put 'put ''fGFbKGw9TGUrKHc8PDIpfDApPj4yXSkpJiYxPT0oKDB8YVtPZSsoYysxPDwyKT4+Ml0pLSgwfGFbT2UrKGM8PDIpPj4yXSl8MCkmJihhW1JlKyhjPDwyKT4+Ml09LTEsYVtNKyhBPDwyKT4+Ml09YVtsPj4yXSxBPUErMXwwKSx3PXcrMXwwO2lmKChBLShjPTB8YVsodz0wfGFbcD4+Ml0pKygo''@;'; put 'put ''bD0wfGFbbT4+Ml0pPDwyKT4+Ml0pfDApPDUpe2FbbT4+Ml09cGU9bCsxfDAsYVt3KyhwZTw8Mik+PjJdPUE7YnJlYWt9Zm9yKGM9YysxfDAsYVttPj4yXT1sPWwrMXwwLGFbdysobDw8Mik+PjJdPWMsbD1jOzspe2lmKCEoKDB8Yyk8KDB8QSkmKDB8bCk8KDB8QSkpKWJyZWFrIHQ7cGU9KDB8''@;'; put 'put ''QSk8KDB8KHBlPWMrM3wwKSk/QTpwZSxhW20+PjJdPUQ9MSsoMHxhW20+PjJdKXwwLGFbdysoRDw8Mik+PjJdPXBlLGw9bCsxfDAsYz1wZX19fXdoaWxlKDApO1I9UisxfDB9Zm9yKDs7KXtpZigoMHxwZSk+PSgwfEhlKSl7bD0wO2JyZWFrfWlmKC0xIT0oMHwoYz0wfGFbKFI9UmUrKChEPTB8''@;'; put 'put ''YVtnZSsocGU8PDIpPj4yXSk8PDIpfDApPj4yXSkpKXtmb3IocT0wfGFbT2UrKEQrMTw8Mik+PjJdLGs9MSxNPTB8YVtPZSsoRDw8Mik+PjJdOyEoKDB8TSk+PSgwfHEpKTspKDB8RCkhPSgwfCh3PTB8YVtMZSsoTTw8Mik+PjJdKSkmJi0xIT0oMHxhW1JlKyh3PDwyKT4+Ml0pJiYoLTEhPSgw''@;'; put 'put ''fGMpPyhHPStfW2JlKyhNPDwzKT4+M10sMCE9KDB8ayl8fEc+Yj8oaz0wLGw9dyxiPUcpOms9MCk6Yz0tMSksTT1NKzF8MDtrfHwoYVtSZSsobDw8Mik+PjJdPS0xLGFbUj4+Ml09LTEsYVsoUj0wfGFbZj4+Ml0pKyhBPDwyKT4+Ml09RCxxPUErMnwwLGFbUisoQSsxPDwyKT4+Ml09bCxSPTB8''@;'; put 'put ''YVtwPj4yXSxhW20+PjJdPUE9MSsoMHxhW20+PjJdKXwwLGFbUisoQTw8Mik+PjJdPXEsQT1xKX1wZT1wZSsxfDB9Zm9yKDshKCgwfGwpPj0oMHxIZSkpOykoMHxhW1JlKyhsPDwyKT4+Ml0pPT0oMHxsKSYmKExlPUErMXwwLGFbKDB8YVtmPj4yXSkrKEE8PDIpPj4yXT1sLE9lPTB8YVtwPj4y''@;'; put 'put ''XSxhW20+PjJdPUE9MSsoMHxhW20+PjJdKXwwLGFbT2UrKEE8PDIpPj4yXT1MZSxBPUxlKSxsPWwrMXwwO0Z0KGdlKX1lbHNle0E9MCxsPTA7dDpmb3IoOzspe2Zvcig7Oyl7aWYoKDB8bCk+PSgwfEhlKSl7bD0wLGI9MCxjPTA7YnJlYWsgdH1pZihjPWwsbD1sKzF8MCwtMSE9KDB8YVtSZSso''@;'; put 'put ''Yzw8Mik+PjJdKSYmMT09KCgwfGFbT2UrKGw8PDIpPj4yXSktKGM9MHxhW09lKyhjPDwyKT4+Ml0pfDApKWJyZWFrfWZvcihhW1JlKygoTT0wfGFbTGUrKGM8PDIpPj4yXSk8PDIpPj4yXT0tMSxhWyhEPTB8YVtmPj4yXSkrKEE8PDIpPj4yXT1NLFI9T2UrKE0rMTw8Mil8MCxrPTB8YVtPZSso''@;'; put 'put ''TTw8Mik+PjJdLEE9QSsxfDA7ISgoMHxrKT49KDB8YVtSPj4yXSkpOykoMHxNKSE9KDB8KHc9MHxhWyhjPUxlKyhrPDwyKXwwKT4+Ml0pKSYmMT09KCgwfGFbT2UrKHcrMTw8Mik+PjJdKS0oMHxhW09lKyh3PDwyKT4+Ml0pfDApJiYoYVtSZSsodzw8Mik+PjJdPS0xLGFbRCsoQTw8Mik+PjJd''@;'; put 'put ''PWFbYz4+Ml0sQT1BKzF8MCksaz1rKzF8MDtpZigoQS0odz0wfGFbZ2UrKChjPTB8YVttPj4yXSk8PDIpPj4yXSl8MCk8NSlhW20+PjJdPXA9YysxfDAsYVtnZSsocDw8Mik+PjJdPUE7ZWxzZSBmb3Iodz13KzF8MCxhW20+PjJdPWM9YysxfDAsYVtnZSsoYzw8Mik+PjJdPXcsYz13Ozspe2lm''@;'; put 'put ''KCEoKDB8dyk8KDB8QSkmKDB8Yyk8KDB8QSkpKWNvbnRpbnVlIHQ7cD0oMHxBKTwoMHwocD13KzN8MCkpP0E6cCxhW20+PjJdPXBlPTErKDB8YVttPj4yXSl8MCxhW2dlKyhwZTw8Mik+PjJdPXAsYz1jKzF8MCx3PXB9fXQ6Zm9yKDs7KXtkb3tmb3IoUj1jOzspe2lmKCgwfFIpPj0oMHxIZSkp''@;'; put 'put ''e2w9MDticmVhayB0fWlmKC0xIT0oMHwodz0wfGFbKHE9UmUrKFI8PDIpfDApPj4yXSkpKWJyZWFrO1I9UisxfDB9Zm9yKHBlPTB8YVtPZSsoKGM9UisxfDApPDwyKT4+Ml0sTT0xLEQ9MHxhW09lKyhSPDwyKT4+Ml07ISgoMHxEKT49KDB8cGUpKTspKDB8UikhPSgwfChrPTB8YVtMZSsoRDw8''@;'; put 'put ''Mik+PjJdKSkmJi0xIT0oMHxhW1JlKyhrPDwyKT4+Ml0pJiYoLTEhPSgwfHcpPyhHPStfW2JlKyhEPDwzKT4+M10sMCE9KDB8TSl8fEc+Yj8oTT0wLGw9ayxiPUcpOk09MCk6dz0tMSksRD1EKzF8MH13aGlsZSgwIT0oMHxNKSk7YVtSZSsobDw8Mik+PjJdPS0xLGFbcT4+Ml09LTEsYVsocGU9''@;'; put 'put ''MHxhW2Y+PjJdKSsoQTw8Mik+PjJdPVIscD1BKzJ8MCxhW3BlKyhBKzE8PDIpPj4yXT1sLGFbbT4+Ml09cGU9MSsoMHxhW20+PjJdKXwwLGFbZ2UrKHBlPDwyKT4+Ml09cCxBPXB9Zm9yKDs7KXtpZigoMHxsKT49KDB8SGUpKWJyZWFrIGU7KDB8YVtSZSsobDw8Mik+PjJdKT09KDB8bCkmJihM''@;'; put 'put ''ZT1BKzF8MCxhWygwfGFbZj4+Ml0pKyhBPDwyKT4+Ml09bCxhW20+PjJdPUE9MSsoMHxhW20+PjJdKXwwLGFbZ2UrKEE8PDIpPj4yXT1MZSxBPUxlKSxsPWwrMXwwfX19d2hpbGUoMCk7RnQoUmUpfWZ1bmN0aW9uIFAwKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBi''@;'; put 'put ''ZSxSZSxWZSxxZSxydCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsT2U9MCxMZT0wLEhlPTA7Zm9yKHJ0PWxlLGxlPWxlKzE2fDAscT1ydCs4fDAscWU9cnQsYVsoVmU9cnQrNHwwKT4+Ml09MCxhW3FlPj4yXT0wLExlPTB8YVtsKzIwPj4yXSxPZT0wfGFb''@;'; put 'put ''bCsyND4+Ml0sYVtmPj4yXT0wfFFuKEhlPShSZT0wfGFbbD4+Ml0pPDwyKSxhW3A+PjJdPTB8UW4oSGUrNHwwKSxIZT0wfFFuKEhlKSxBPTA7ISgoMHxBKT49KDB8UmUpKTspYVtIZSsoQTw8Mik+PjJdPUEsQT1BKzF8MDsoZnVuY3Rpb24gd3gobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFy''@;'; put 'put ''IEcsT2UsTGUsUmUsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxxPTAscGU9MCxnZT0wLGJlPTAsSGU9MDtmb3IocGU9MHxhWzIwKyhsfD0wKT4+Ml0sZ2U9MHxhW2wrMjQ+PjJdLEc9MHxhW2w+PjJdLE9lPTB8UW4oYmU9KEhlPTB8YVtsKzQ+PjJdKTw8MiksTGU9MHxRbihiZSs0''@;'; put 'put ''fDApLFJlPTB8UW4oYmUpLGJlPTB8UW4oYmUpLHE9TGUrNHwwLGw9MDshKCgwfGwpPj0oMHxIZSkpOylhW09lKyhsPDwyKT4+Ml09MCxsPWwrMXwwO2ZvcihhW3E+PjJdPUhlLGw9MDs7KXtpZigoMHxsKT49KDB8SGUpKXt3PTEsTT0wO2JyZWFrfWFbUmUrKGw8PDIpPj4yXT0tMSxsPWwrMXww''@;'; put 'put ''fWU6Zm9yKDshKCgwfE0pPj0oMHxHKSk7KXtmb3IoUj1wZSsoKEQ9TSsxfDApPDwyKXwwLGw9MHxhWyhBPXBlKyhNPDwyKXwwKT4+Ml07ISgoMHxsKT49KDB8KG09MHxhW1I+PjJdKSkpOylhWyhrPXErKGFbT2UrKGFbZ2UrKGw8PDIpPj4yXTw8Mik+PjJdPDwyKXwwKT4+Ml09KDB8YVtrPj4y''@;'; put 'put ''XSktMSxsPWwrMXwwO2ZvcihsPXcsaz0wfGFbQT4+Ml07Oyl7aWYoKDB8ayk+PSgwfG0pKXt3PWwsTT1EO2NvbnRpbnVlIGV9KDB8YVsoQT1SZSsoKGI9MHxhWyhtPU9lKyhhWyh3PWdlKyhrPDwyKXwwKT4+Ml08PDIpfDApPj4yXSk8PDIpfDApPj4yXSk8KDB8TSk/KGFbQT4+Ml09TSwwfGFb''@;'; put 'put ''KG09cSsoYjw8Mil8MCk+PjJdPyhhW2JlKyhiPDwyKT4+Ml09bCxhW3ErKGw8PDIpPj4yXT0xLEE9bCsxfDAsbT1PZSsoYVt3Pj4yXTw8Mil8MCk6KGFbbT4+Ml09MSxBPWwsbD1iLG09YmUrKGI8PDIpfDApLGFbbT4+Ml09bCxsPUEpOihhW20+PjJdPWFbKGI9YmUrKGI8PDIpfDApPj4yXSxh''@;'; put 'put ''WyhiPXErKGFbYj4+Ml08PDIpfDApPj4yXT0xKygwfGFbYj4+Ml0pKSxrPWsrMXwwLG09MHxhW1I+PjJdfX1mb3IoYVtMZT4+Ml09MCxsPTAsbT0wOyEoKDB8bCk+PSgwfHcpKTspYVsocT1MZSsoKHBlPWwrMXwwKTw8Mil8MCk+PjJdPWdlPSgwfGFbcT4+Ml0pK218MCxsPXBlLG09Z2U7Zm9y''@;'; put 'put ''KGFbZj4+Ml09YmUsbD0wOzspe2lmKCgwfGwpPj0oMHxIZSkpe2w9dzticmVha31hWyhnZT1MZSsoYVtPZSsobDw8Mik+PjJdPDwyKXwwKT4+Ml09MSsoZj0wfGFbZ2U+PjJdKSxhW2JlKyhmPDwyKT4+Ml09bCxsPWwrMXwwfWZvcig7ISgoMHxsKTw9MCk7KWFbTGUrKGw8PDIpPj4yXT1hW0xl''@;'; put 'put ''KygoSGU9bCstMXwwKTw8Mik+PjJdLGw9SGU7YVtMZT4+Ml09MCxhW3A+PjJdPUxlLGFbYz4+Ml09dyxGdChSZSksRnQoT2UpfSkobCxxLFZlLHFlKSxhW20+PjJdPTAsYVsoZ2U9MHxhW3A+PjJdKT4+Ml09MCxiZT0wfGFbbCsyOD4+Ml0sQT0wLGw9MDtlOmZvcig7Oyl7az0wfGFbcT4+Ml0s''@;'; put 'put ''TT0wfGFbcWU+PjJdO2Rve2lmKCgwfGwpPj0oMHxrKSlicmVhayBlO0Q9bCxiPTB8YVsoRz1NKygobD1sKzF8MCk8PDIpfDApPj4yXSxEPTB8YVtNKyhEPDwyKT4+Ml19d2hpbGUoKGItRHwwKTwyKTtmb3IoTT0wfGFbVmU+PjJdLGs9MHxhW2dlKyhhW20+PjJdPDwyKT4+Ml07ISgoMHxEKT49''@;'; put 'put ''KDB8YikpOylhW0hlKyhhWyhwZT1NKyhEPDwyKXwwKT4+Ml08PDIpPj4yXT0tMSxiPUErMXwwLGFbKDB8YVtmPj4yXSkrKEE8PDIpPj4yXT1hW3BlPj4yXSwoYi1rfDApPjM/KGFbbT4+Ml09QT0xKygwfGFbbT4+Ml0pfDAsYVtnZSsoQTw8Mik+PjJdPWIsQT1iKTpBPWssaz1BLEQ9RCsxfDAs''@;'; put 'put ''QT1iLGI9MHxhW0c+PjJdOygwfEEpPD0oMHxrKXx8KGFbbT4+Ml09cGU9MSsoMHxhW20+PjJdKXwwLGFbZ2UrKHBlPDwyKT4+Ml09QSl9ZTpkb3tpZihjKXtmb3IoZ2U9MHxIZChSZSkscGU9MCxsPTAsdz0wOzspe2lmKCgwfHBlKT49KDB8UmUpKXtsPTA7YnJlYWt9aWYoLTEhPSgwfChiPTB8''@;'; put 'put ''YVsoYz1IZSsoKEc9MHxhW2dlKyhwZTw8Mik+PjJdKTw8Mil8MCk+PjJdKSkpe2ZvcihxPTB8YVtMZSsoRysxPDwyKT4+Ml0sTT0xLEQ9MHxhW0xlKyhHPDwyKT4+Ml07ISgoMHxEKT49KDB8cSkpOykoMHxHKSE9KDB8KGs9MHxhW09lKyhEPDwyKT4+Ml0pKSYmLTEhPSgwfGFbSGUrKGs8PDIp''@;'; put 'put ''Pj4yXSkmJigtMSE9KDB8Yik/KFI9K19bYmUrKEQ8PDMpPj4zXSwwIT0oMHxNKXx8Uj53PyhNPTAsbD1rLHc9Uik6TT0wKTpiPS0xKSxEPUQrMXwwO018fChhW0hlKyhsPDwyKT4+Ml09LTEsYVtjPj4yXT0tMSxhWyhjPTB8YVtmPj4yXSkrKEE8PDIpPj4yXT1HLHE9QSsyfDAsYVtjKyhBKzE8''@;'; put 'put ''PDIpPj4yXT1sLGM9MHxhW3A+PjJdLGFbbT4+Ml09QT0xKygwfGFbbT4+Ml0pfDAsYVtjKyhBPDwyKT4+Ml09cSxBPXEpfXBlPXBlKzF8MH1mb3IoOyEoKDB8bCk+PSgwfFJlKSk7KSgwfGFbSGUrKGw8PDIpPj4yXSk9PSgwfGwpJiYoTGU9QSsxfDAsYVsoMHxhW2Y+PjJdKSsoQTw8Mik+PjJd''@;'; put 'put ''PWwsT2U9MHxhW3A+PjJdLGFbbT4+Ml09QT0xKygwfGFbbT4+Ml0pfDAsYVtPZSsoQTw8Mik+PjJdPUxlLEE9TGUpLGw9bCsxfDA7RnQoZ2UpfWVsc2V7bD0wLHc9MCxiPTA7dDpmb3IoOzspe2Rve2ZvcihjPWI7Oyl7aWYoKDB8Yyk+PSgwfFJlKSl7bD0wO2JyZWFrIHR9aWYoLTEhPSgwfChr''@;'; put 'put ''PTB8YVsocT1IZSsoYzw8Mil8MCk+PjJdKSkpYnJlYWs7Yz1jKzF8MH1mb3IocGU9MHxhW0xlKygoYj1jKzF8MCk8PDIpPj4yXSxEPTEsRz0wfGFbTGUrKGM8PDIpPj4yXTshKCgwfEcpPj0oMHxwZSkpOykoMHxjKSE9KDB8KE09MHxhW09lKyhHPDwyKT4+Ml0pKSYmLTEhPSgwfGFbSGUrKE08''@;'; put 'put ''PDIpPj4yXSkmJigtMSE9KDB8ayk/KFI9K19bYmUrKEc8PDMpPj4zXSwwIT0oMHxEKXx8Uj53PyhEPTAsbD1NLHc9Uik6RD0wKTprPS0xKSxHPUcrMXwwfXdoaWxlKDAhPSgwfEQpKTthW0hlKyhsPDwyKT4+Ml09LTEsYVtxPj4yXT0tMSxhWyhwZT0wfGFbZj4+Ml0pKyhBPDwyKT4+Ml09Yyxw''@;'; put 'put ''PUErMnwwLGFbcGUrKEErMTw8Mik+PjJdPWwsYVttPj4yXT1wZT0xKygwfGFbbT4+Ml0pfDAsYVtnZSsocGU8PDIpPj4yXT1wLEE9cH1mb3IoOzspe2lmKCgwfGwpPj0oMHxSZSkpYnJlYWsgZTsoMHxhW0hlKyhsPDwyKT4+Ml0pPT0oMHxsKSYmKExlPUErMXwwLGFbKDB8YVtmPj4yXSkrKEE8''@;'; put 'put ''PDIpPj4yXT1sLGFbbT4+Ml09QT0xKygwfGFbbT4+Ml0pfDAsYVtnZSsoQTw8Mik+PjJdPUxlLEE9TGUpLGw9bCsxfDB9fX13aGlsZSgwKTtGdCgwfGFbVmU+PjJdKSxGdCgwfGFbcWU+PjJdKSxGdChIZSksbGU9cnR9ZnVuY3Rpb24gZjEobCxjLGYscCl7Znw9MCxwfD0wO3ZhciBxLHBlLE9l''@;'; put 'put ''LFJlLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLGdlPTAsYmU9MCxMZT0wO2ZvcihnZT0wfGFbMjArKGx8PTApPj4yXSxiZT0wfGFbbCsyND4+Ml0sYVsoY3w9MCk+PjJdPTB8UW4oTGU9KFJlPTB8YVtsPj4yXSk8PDIpLGFbZj4+Ml09MHxRbihMZSs0fDApLExlPTB8UW4o''@;'; put 'put ''TGUpLHBlPTB8UW4oUmU8PDQpLG09MDshKCgwfG0pPj0oMHxSZSkpOylhW0xlKyhtPDwyKT4+Ml09bSxtPW0rMXwwO2ZvcihhW3A+PjJdPTAsYVthW2Y+PjJdPj4yXT0wLHE9MHxhW2wrMjg+PjJdLE9lPTB8SGQoUmUpLG09MCxEPTA7Oyl7aWYoKDB8RCk+PSgwfFJlKSl7Rz0wO2JyZWFrfWw9''@;'; put 'put ''MHxhW09lKyhEPDwyKT4+Ml07ZTpkb3tpZigtMSE9KDB8YVtMZSsobDw8Mik+PjJdKSYmKFI9MHxhW2dlKyhsPDwyKT4+Ml0sMT09KCgwfGFbZ2UrKGwrMTw8Mik+PjJdKS1SfDApKSl7Zm9yKGFbTGUrKChiPTB8YVtiZSsoUjw8Mik+PjJdKTw8Mik+PjJdPS0xLGFbKGs9MHxhW2M+PjJdKSso''@;'; put 'put ''bTw8Mik+PjJdPWIsTT1nZSsoYisxPDwyKXwwLHc9MHxhW2dlKyhiPDwyKT4+Ml0sbT1tKzF8MDshKCgwfHcpPj0oMHxhW00+PjJdKSk7KSgwfGIpIT0oMHwoQT0wfGFbKGw9YmUrKHc8PDIpfDApPj4yXSkpJiYxPT0oKDB8YVtnZSsoQSsxPDwyKT4+Ml0pLSgwfGFbZ2UrKEE8PDIpPj4yXSl8''@;'; put 'put ''MCkmJihhW0xlKyhBPDwyKT4+Ml09LTEsYVtrKyhtPDwyKT4+Ml09YVtsPj4yXSxtPW0rMXwwKSx3PXcrMXwwO2lmKChtLShBPTB8YVsodz0wfGFbZj4+Ml0pKygobD0wfGFbcD4+Ml0pPDwyKT4+Ml0pfDApPDUpe2FbcD4+Ml09Rz1sKzF8MCxhW3crKEc8PDIpPj4yXT1tO2JyZWFrfWZvcihB''@;'; put 'put ''PUErMXwwLGFbcD4+Ml09bD1sKzF8MCxhW3crKGw8PDIpPj4yXT1BLGw9QTs7KXtpZighKCgwfEEpPCgwfG0pJigwfGwpPCgwfG0pKSlicmVhayBlO0c9KDB8bSk8KDB8KEc9QSszfDApKT9tOkcsYVtwPj4yXT1NPTErKDB8YVtwPj4yXSl8MCxhW3crKE08PDIpPj4yXT1HLGw9bCsxfDAsQT1H''@;'; put 'put ''fX19d2hpbGUoMCk7RD1EKzF8MH1mb3IoOzspe2lmKCgwfEcpPj0oMHxSZSkpe2w9MDticmVha31pZigtMSE9KDB8KGw9MHxhWyhSPUxlKygoRD0wfGFbT2UrKEc8PDIpPj4yXSk8PDIpfDApPj4yXSkpKXtmb3IoTT0wfGFbZ2UrKEQrMTw8Mik+PjJdLEE9MCxrPTB8YVtnZSsoRDw8Mik+PjJd''@;'; put 'put ''OyEoKDB8ayk+PSgwfE0pKTspKDB8RCkhPSgwfChiPTB8YVtiZSsoazw8Mik+PjJdKSkmJi0xIT0oMHxhW0xlKyhiPDwyKT4+Ml0pJiYodz1BPDwxLC0xPT0oMHxsKT9sPS0xOihfW3BlKyh3PDwzKT4+M109KygwfGIpLF9bcGUrKCgxfHcpPDwzKT4+M109K19bcSsoazw8Myk+PjNdLEE9QSsx''@;'; put 'put ''fDApKSxrPWsrMXwwO2lmKCgwfEEpPjApe2Zvcih4MShwZSxBLDE2LDgxKSxBPSgwfEEpPDM/QTozLGw9MDshKCgwfGwpPj0oMHxBKSk7KWFbTGUrKChNPX5+K19bcGUrKGw8PDE8PDMpPj4zXSk8PDIpPj4yXT0tMSxhWygwfGFbYz4+Ml0pKyhtPDwyKT4+Ml09TSxsPWwrMXwwLG09bSsxfDA7''@;'; put 'put ''YVtSPj4yXT0tMSxSPW0rMXwwLGFbKDB8YVtjPj4yXSkrKG08PDIpPj4yXT1ELEQ9MHxhW2Y+PjJdLGFbcD4+Ml09bT0xKygwfGFbcD4+Ml0pfDAsYVtEKyhtPDwyKT4+Ml09UixtPVJ9fUc9RysxfDB9Zm9yKDshKCgwfGwpPj0oMHxSZSkpOykoMHxhW0xlKyhsPDwyKT4+Ml0pPT0oMHxsKSYm''@;'; put 'put ''KGJlPW0rMXwwLGFbKDB8YVtjPj4yXSkrKG08PDIpPj4yXT1sLGdlPTB8YVtmPj4yXSxhW3A+PjJdPW09MSsoMHxhW3A+PjJdKXwwLGFbZ2UrKG08PDIpPj4yXT1iZSxtPWJlKSxsPWwrMXwwO0Z0KE9lKSxGdChMZSl9ZnVuY3Rpb24gd2kobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIE0s''@;'; put 'put ''cGUsZ2UsYmUsbT0wLEE9MCx3PTAsYj0wLGs9MCxEPTAsUj0wLEc9MCxxPTA7Zm9yKHBlPTB8YVsyMCsobHw9MCk+PjJdLGdlPTB8YVtsKzI0Pj4yXSxtPTB8YVtsKzQ+PjJdLE09MHxRbigoYmU9MHxhW2w+PjJdKTw8MiksYVtmPj4yXT1NLGw9MDshKCgwfGwpPj0oMHxiZSkpOylhW00rKGw8''@;'; put 'put ''PDIpPj4yXT1sLGw9bCsxfDA7YVtwPj4yXT1tO2U6ZG97aWYoYyl7Zm9yKGM9MHxIZChiZSksbD0wOyEoKDB8bCk+PSgwfGJlKSk7KXtmb3Iodz1wZSsoMSsoQT0wfGFbYysobDw8Mik+PjJdKTw8Mil8MCxtPTB8YVtwZSsoQTw8Mik+PjJdOyEoKDB8bSk+PSgwfGFbdz4+Ml0pKTspKDB8QSkh''@;'; put 'put ''PSgwfChrPTB8YVsoYj1nZSsobTw8Mil8MCk+PjJdKSkmJigwfGFbKFI9KEQ9MHxhW2Y+PjJdKSsoazw8Mil8MCk+PjJdKT09KDB8aykmJigwfGFbKEc9RCsoQTw8Mil8MCk+PjJdKT09KDB8QSkmJihhW1I+PjJdPUEsYVtHPj4yXT1hW2I+PjJdLGFbcD4+Ml09KDB8YVtwPj4yXSktMSksbT1t''@;'; put 'put ''KzF8MDtsPWwrMXwwfUZ0KGMpfWVsc2V7bT0wO3Q6Zm9yKDs7KXtpZigoMHxtKT49KDB8YmUpKWJyZWFrIGU7Zm9yKEE9cGUrKChjPW0rMXwwKTw8Mil8MCx3PU0rKG08PDIpfDAsYj1NKyhtPDwyKXwwLGw9MHxhW3BlKyhtPDwyKT4+Ml07Oyl7aWYoKDB8bCk+PSgwfGFbQT4+Ml0pKXttPWM7''@;'; put 'put ''Y29udGludWUgdH0oMHxtKSE9KDB8KGY9MHxhWyhrPWdlKyhsPDwyKXwwKT4+Ml0pKSYmKDB8YVsocT1NKyhmPDwyKXwwKT4+Ml0pPT0oMHxmKSYmKDB8YVt3Pj4yXSk9PSgwfG0pJiYoYVtxPj4yXT1tLGFbYj4+Ml09YVtrPj4yXSxhW3A+PjJdPSgwfGFbcD4+Ml0pLTEpLGw9bCsxfDB9fX19''@;'; put 'put ''d2hpbGUoMCl9ZnVuY3Rpb24gVm0obCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIHBlLGdlLGJlLE9lLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MDtmb3IoZ2U9MHxhWzIwKyhsfD0wKT4+Ml0sYmU9MHxhW2wrMjQ+PjJdLEE9MHxhW2wrND4+Ml0sRz0wfFFuKChP''@;'; put 'put ''ZT0wfGFbbD4+Ml0pPDwyKSxhW2Y+PjJdPUcsbT0wOyEoKDB8bSk+PSgwfE9lKSk7KWFbRysobTw8Mik+PjJdPW0sbT1tKzF8MDthW3A+PjJdPUEscGU9MHxhW2wrMjg+PjJdO2U6ZG97aWYoYyl7Zm9yKHE9MHxIZChPZSksRz0wLG09MCx3PTA7ISgoMHxHKT49KDB8T2UpKTspe2lmKCgwfGFb''@;'; put 'put ''KEQ9KE09MHxhW2Y+PjJdKSsoKGs9MHxhW3ErKEc8PDIpPj4yXSk8PDIpfDApPj4yXSk9PSgwfGspKXtmb3IoUj0wfGFbZ2UrKGsrMTw8Mik+PjJdLGM9MHxhW2dlKyhrPDwyKT4+Ml0sQT0xOyEoKDB8Yyk+PSgwfFIpKTspKDB8aykhPSgwfChsPTB8YVtiZSsoYzw8Mik+PjJdKSkmJigwfGFb''@;'; put 'put ''TSsobDw8Mik+PjJdKT09KDB8bCkmJihiPStfW3BlKyhjPDwzKT4+M10sMCE9KDB8QSl8fGI+dz8oQT0wLG09bCx3PWIpOkE9MCksYz1jKzF8MDtBfHwoYVtNKyhtPDwyKT4+Ml09ayxhW0Q+PjJdPW0sYVtwPj4yXT0oMHxhW3A+PjJdKS0xKX1HPUcrMXwwfUZ0KHEpfWVsc2UgZm9yKG09MCx3''@;'; put 'put ''PTAsaz0wOzspe2lmKCgwfGspPj0oMHxPZSkpYnJlYWsgZTtmb3IoRD0wfGFbZ2UrKChNPWsrMXwwKTw8Mik+PjJdLFI9Rysoazw8Mil8MCxBPTEsYz0wfGFbZ2UrKGs8PDIpPj4yXTshKCgwfGMpPj0oMHxEKSk7KSgwfGspIT0oMHwobD0wfGFbYmUrKGM8PDIpPj4yXSkpJiYoMHxhW0crKGw8''@;'; put 'put ''PDIpPj4yXSk9PSgwfGwpJiYoMHxhW1I+PjJdKT09KDB8aykmJihiPStfW3BlKyhjPDwzKT4+M10sMCE9KDB8QSl8fGI+dz8oQT0wLG09bCx3PWIpOkE9MCksYz1jKzF8MDswfEF8fChhW0crKG08PDIpPj4yXT1rLGFbRysoazw8Mik+PjJdPW0sYVtwPj4yXT0oMHxhW3A+PjJdKS0xKSxrPU19''@;'; put 'put ''fXdoaWxlKDApfWZ1bmN0aW9uIEhfKGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgRCxSLEcsQT0wLHc9MCxiPTAsaz0wLE09MDtmb3IoUj0wfGFbMjArKGx8PTApPj4yXSxHPTB8YVtsKzI0Pj4yXSxrPTB8UW4oKEQ9MHxhW2w+PjJdKTw8MiksYVtmPj4yXT1rLGw9MDshKCgw''@;'; put 'put ''fGwpPj0oMHxEKSk7KWFbaysobDw8Mik+PjJdPS0xMDAsbD1sKzF8MDthW3A+PjJdPTAsYVttPj4yXT0wO2U6ZG97aWYoYyl7Zm9yKGI9MHxIZChEKSx3PTA7ISgoMHx3KT49KDB8RCkpOyl7bD0oTT0wfGFbZj4+Ml0pKygoaz0wfGFbYisodzw8Mik+PjJdKTw8Mil8MDt0OmRve2lmKC0xMDA9''@;'; put 'put ''PSgwfGFbbD4+Ml0pKWZvcihjPTB8YVtwPj4yXSxhW3A+PjJdPWMrMSxhW2w+PjJdPWMsYz1SKyhrKzE8PDIpfDAsbD0wfGFbUisoazw8Mik+PjJdOzspe2lmKCgwfGwpPj0oMHxhW2M+PjJdKSlicmVhayB0OygwfGspIT0oMHwoQT0wfGFbRysobDw8Mik+PjJdKSkmJihhW00rKEE8PDIpPj4y''@;'; put 'put ''XT0tMSxhW20+PjJdPTErKDB8YVttPj4yXSkpLGw9bCsxfDB9fXdoaWxlKDApO3c9dysxfDB9RnQoYil9ZWxzZXtjPTA7dDpmb3IoOzspe2lmKCgwfGMpPj0oMHxEKSlicmVhayBlO2lmKC0xMDA9PSgwfGFbaysoYzw8Mik+PjJdKSlmb3IoYVtwPj4yXT0xKyhBPTB8YVtwPj4yXSksYVtrKyhj''@;'; put 'put ''PDwyKT4+Ml09QSx3PVIrKChBPWMrMXwwKTw8Mil8MCxsPTB8YVtSKyhjPDwyKT4+Ml07Oyl7aWYoKDB8bCk+PSgwfGFbdz4+Ml0pKXtjPUE7Y29udGludWUgdH0oMHxjKSE9KDB8KGI9MHxhW0crKGw8PDIpPj4yXSkpJiYoYVtrKyhiPDwyKT4+Ml09LTEsYVttPj4yXT0xKygwfGFbbT4+Ml0p''@;'; put 'put ''KSxsPWwrMXwwfWVsc2UgYz1jKzF8MH19fXdoaWxlKDApO2FbbT4+Ml09KDB8YVttPj4yXSkrKDB8YVtwPj4yXSl9ZnVuY3Rpb24gR24obCxjLGYscCxtKXtjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBNLEQsUixHLHEscGUsQT0wLHc9MCxiPTAsaz0wO2ZvcihwZT1sZSxsZT1sZSsxNnwwLFI9''@;'; put 'put ''cGUrNHwwLEc9cGUscT0wfGFbMjArKGx8PTApPj4yXSxEPTB8YVtsKzI0Pj4yXSxsPTB8UW4oKHc9MHxhW2w+PjJdKTw8MiksYVtmPj4yXT1sLEE9MDthW1I+PjJdPUEsISgoMHxBKT49KDB8dykpOylhW2wrKEE8PDIpPj4yXT0tMTAwLEE9MSsoMHxhW1I+PjJdKXwwO2FbcD4+Ml09MCxhW20+''@;'; put 'put ''PjJdPTAsTT0wfGZ1bmN0aW9uIFF0KGwsYyl7bHw9MCxjfD0wO3ZhciBtLGY9MCxwPTA7Zm9yKG09MHxRbigyOCksYVttPj4yXT0wLGFbbSs0Pj4yXT1sLGFbbSs4Pj4yXT1jLGFbbSsxMj4+Ml09LTEsYVsocD1tKzE2fDApPj4yXT0wfFFuKDQrKGM8PDIpfDApLGY9MDshKCgwfGYpPigwfGMp''@;'; put 'put ''KTspYVsoMHxhW3A+PjJdKSsoZjw8Mik+PjJdPTAsZj1mKzF8MDtmb3IoYVsocD1tKzIwfDApPj4yXT0wfFFuKGM9NCsobDw8Mil8MCksZj0wOyEoKDB8Zik+KDB8bCkpOylhWygwfGFbcD4+Ml0pKyhmPDwyKT4+Ml09MCxmPWYrMXwwO2ZvcihjPTB8UW4oYyksYVttKzI0Pj4yXT1jLGY9MDsh''@;'; put 'put ''KCgwfGYpPigwfGwpKTspYVtjKyhmPDwyKT4+Ml09LTk5OSxmPWYrMXwwO3JldHVybiAwfG19KHcsKHc8PDEpLTJ8MCk7ZTpkb3tpZihjKXtmb3IoQT0wfEhkKHcpLGw9MDshKCgwfGwpPj0oMHx3KSk7KWFbUj4+Ml09az0wfGFbQSsobDw8Mik+PjJdLEswKE0saywoMHxhW3ErKGsrMTw8Mik+''@;'; put 'put ''PjJdKS0oMHxhW3ErKGs8PDIpPj4yXSl8MCksbD1sKzF8MDtGdChBKX1lbHNlIGZvcihsPTA7Oyl7aWYoYVtSPj4yXT1sLCgwfGwpPj0oMHx3KSlicmVhayBlO0swKE0sbCwoMHxhW3ErKChrPWwrMXwwKTw8Mik+PjJdKS0oMHxhW3ErKGw8PDIpPj4yXSl8MCksbD1rfX13aGlsZSgwKTtlOmZv''@;'; put 'put ''cig7az0wPT0oMHxOaShNLFIsRykpLGw9MHxhW3A+PjJdLCFrOylmb3IoYVtwPj4yXT1sKzEsYVsoMHxhW2Y+PjJdKSsoYVtSPj4yXTw8Mik+PjJdPWwsbD0wfGFbUj4+Ml0saz0wfGFbcSsobDw8Mik+PjJdOzspe2lmKCgwfGspPj0oMHxhW3ErKGwrMTw8Mik+PjJdKSljb250aW51ZSBlO2lm''@;'; put 'put ''KCgwfGwpIT0oMHwoYj0wfGFbRCsoazw8Mik+PjJdKSkpe3Q6ZG97aWYoLTEwMD09KDB8YVsoMHxhW2Y+PjJdKSsoYjw8Mik+PjJdKSlmb3IoWm0oTSxiKSxhWygwfGFbZj4+Ml0pKyhiPDwyKT4+Ml09LTEsQT1xKyhiKzE8PDIpfDAsbD0wfGFbcSsoYjw8Mik+PjJdOzspe2lmKCgwfGwpPj0o''@;'; put 'put ''MHxhW0E+PjJdKSlicmVhayB0OygwfGIpIT0oMHwodz0wfGFbKGM9RCsobDw8Mil8MCk+PjJdKSkmJi0xMDA9PSgwfGFbKDB8YVtmPj4yXSkrKHc8PDIpPj4yXSkmJih3PTB8STYoTSx3KSxhW0c+PjJdPXcsSzAoTSwwfGFbYz4+Ml0sdysxfDApKSxsPWwrMXwwfX13aGlsZSgwKTthW20+PjJd''@;'; put 'put ''PTErKDB8YVttPj4yXSksbD0wfGFbUj4+Ml19az1rKzF8MH1hW20+PjJdPSgwfGFbbT4+Ml0pK2wsZnVuY3Rpb24gc1AobCl7dmFyIGM9MCxmPTAscD0wLG09MDtpZigwfChsfD0wKSl7aWYoMHwoYz0wfGFbKHA9bCsxNnwwKT4+Ml0pKXtmb3IobT1sKzh8MCxmPTA7ISgoMHxmKT4oMHxhW20+''@;'; put 'put ''PjJdKSk7KWppKDB8YVtjKyhmPDwyKT4+Ml0sMTA1KSxmPWYrMXwwLGM9MHxhW3A+PjJdO0Z0KGMpfTB8KGM9MHxhW2wrMjA+PjJdKSYmRnQoYyksRnQoMHxhW2wrMjQ+PjJdKSxGdChsKX19KE0pLGxlPXBlfWZ1bmN0aW9uIGxQKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBtO209MCE9''@;'; put 'put ''KDB8bGgobHw9MCwwKSkmJjE9PSgwfGFbbCsxNj4+Ml0pP2w6MHxBNShsKTtkb3tpZihjKXtpZigwfGxoKGMsMCkmJjE9PSgwfGFbYysxNj4+Ml0pKWJyZWFrO2M9MHxKayhjLDApfWVsc2UgYz0wfXdoaWxlKDApO3JldHVybiBjPTB8am0oZj0wfFZfKG0sYyxmKSxwKSwoMHxtKSE9KDB8bCkm''@;'; put 'put ''JihhW2YrMzY+PjJdPTEpLDB8Y31mdW5jdGlvbiBWXyhsLGMsZil7Y3w9MCxmfD0wO3ZhciBwPTA7cmV0dXJuKGx8PTApPyhwPTB8UW4oNDQpLGFbcD4+Ml09MCxhW3ArND4+Ml09YVtsKzQ+PjJdLGFbcCs4Pj4yXT1sLGFbcCsxMj4+Ml09YyxhW3ArMTY+PjJdPTAsYVtwKzIwPj4yXT0wLGFb''@;'; put 'put ''cCsyND4+Ml09ZixhW3ArMjg+PjJdPTAsYVtwKzMyPj4yXT0wLGFbcCszNj4+Ml09MCxsPXApOmw9MCwwfGx9ZnVuY3Rpb24gam0obCxjKXtsfD0wLGN8PTA7dmFyIHAsbSxBLHcsTSxmPTAsYj0wLGs9MDtyZXR1cm4gTT1sZSxsZT1sZSszMnwwLHA9TSsyMHwwLEE9TSsxMnwwLHc9TSs4fDAs''@;'; put 'put ''Yj1NKzR8MCxrPU0sYVsobT1NKzE2fDApPj4yXT0wLCgwfGFbbD4+Ml0pPCgoMHxhW2MrMTY+PjJdKS0xfDApJiYoZnVuY3Rpb24gQ3IobCxjLGYscCxtLEEsdyxiLGssTSl7dmFyIEQsUixHLHEscGUsZ2UsYmUsT2UsTGU7Y3w9MCxmfD0wLHB8PTAsbXw9MCxBfD0wLHd8PTAsYnw9MCxrfD0w''@;'; put 'put ''LE18PTAsTGU9bGUsbGU9bGUrMzJ8MCxSPUxlKzEyfDAsRz1MZSs4fDAscT1MZSs0fDAscGU9TGUsYVsoRD1MZSsxNnwwKT4+Ml09bHw9MCxhW1I+PjJdPTAsYVtHPj4yXT0wLGFbcT4+Ml09MCxhW3BlPj4yXT0wLGFbdz4+Ml09MCxhW2I+PjJdPTAsYVtjPj4yXT0wLGFbQT4+Ml09MCxhW3A+''@;'; put 'put ''PjJdPTAsZ2U9aysyOHwwLGJlPWsrOHwwLE9lPSsoMHxhW2wrND4+Ml0pLG09Zjtkb3tpZih3NShsLEQsbSxSLDAscGUsRyxxLGssTSksISgobT0wfGFbRD4+Ml0pJiYoZj0wfGFbbSs0Pj4yXSxtPTB8YVt3Pj4yXSxtPyhsPTB8VDYobSwwfGFbRz4+Ml0pLFJhKDB8YVt3Pj4yXSksUmEoMHxh''@;'; put 'put ''W0c+PjJdKSxhW3c+PjJdPWwsbD0wfFQ2KDB8YVtxPj4yXSwwfGFbYj4+Ml0pLFJhKDB8YVtiPj4yXSksUmEoMHxhW3E+PjJdKSxhW2I+PjJdPWwpOihhW3c+PjJdPWFbRz4+Ml0sYVtiPj4yXT1hW3E+PjJdKSxtPTB8YVtjPj4yXSwwfG0mJlJhKG0pLGFbYz4+Ml09YVtEPj4yXSxtPTB8YVtw''@;'; put 'put ''Pj4yXSwwfG0mJlJhKG0pLG09MHxhW1I+PjJdLGFbcD4+Ml09bSxsPTB8YVtBPj4yXSxsJiYoRnQobCksbT0wfGFbUj4+Ml0pLGFbQT4+Ml09YVtwZT4+Ml0sbD0wfGFbRD4+Ml0sYVtwZT4+Ml09MCwrX1tiZT4+M10qT2U8KygwfGYpKSkpYnJlYWt9d2hpbGUoMT09KDB8YVtnZT4+Ml0pKTts''@;'; put 'put ''ZT1MZX0oMHxhW2wrOD4+Ml0sYiwwfGFbbCsxMj4+Ml0saywwLG0sQSx3LGMscCksMHwoZj0wfGFbYj4+Ml0pKSYmKGs9MHxWXyhmLGI9MHxhW2s+PjJdLDB8YVttPj4yXSksYVtsKzI4Pj4yXT1rLGFbays0MD4+Ml09YVtwPj4yXSxhW2s+PjJdPTErKDB8YVtsPj4yXSksYVtrKzQ+PjJdPWFb''@;'; put 'put ''Zj4+Ml0sYVtrKzg+PjJdPWYsYVtrKzEyPj4yXT1iLGFbaysxNj4+Ml09YVtBPj4yXSxhW2wrMjA+PjJdPWFbdz4+Ml0sYVtrKzMyPj4yXT1sLGptKGssYykpLGxlPU0sMHxsfWZ1bmN0aW9uIENBKGwpe2x8PTA7Zm9yKHZhciBjPTA7Yz0wfGFbbCsyOD4+Ml07KWw9YztyZXR1cm4gMHxsfWZ1''@;'; put 'put ''bmN0aW9uIEswKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIEEsYixrLE0scD0wLG09MCx3PTAsRD0wO2ZvcihBPTgrKGx8PTApfDAsaz1sKzIwfDAsYj1sKzI0fDAsTT1sKzE2fDAsbHx8UHIoMTM4OTUzLDk1NzQzLDY5LDk1NzU5KTs7KXtpZigoMHxhW0E+PjJdKTwoMHxmKSl7dz00O2JyZWFrfWlm''@;'; put 'put ''KCEobT0wfGFbKHA9KDB8YVtrPj4yXSkrKGM8PDIpfDApPj4yXSkpYnJlYWs7RD0wfGFbKDB8YVtiPj4yXSkrKGM8PDIpPj4yXSxhW3A+PjJdPTAsYVtsPj4yXT0oMHxhW2w+PjJdKS0xLGtmKG0sMTA1LCgwfGFbTT4+Ml0pKyhEPDwyKXwwKX1yZXR1cm4gND09KDB8dykmJlByKDk1Nzc4LDk1''@;'; put 'put ''NzQzLDcwLDk1NzU5KSxhW2w+PjJdPTErKDB8YVtsPj4yXSksKDB8YVsocD1sKzEyfDApPj4yXSk8KDB8ZikmJihhW3A+PjJdPWYpLGFbKDB8YVtiPj4yXSkrKGM8PDIpPj4yXT1mLHA9MHxRbig0KSxhW3A+PjJdPWMscD0obT0wfGFbKDB8YVtNPj4yXSkrKGY8PDIpPj4yXSk/MHxmdW5jdGlv''@;'; put 'put ''biBKaShsLGMpe3JldHVybiBsfD0wLGM9MHxZdChjfD0wKSwwfGwmJihhW2MrND4+Ml09bCxhW2wrOD4+Ml09YyksMHxjfShtLHApOjB8WXQocCksYVsoMHxhW2s+PjJdKSsoYzw8Mik+PjJdPXAsYVsoMHxhW00+PjJdKSsoZjw8Mik+PjJdPXAsMHxsfWZ1bmN0aW9uIE5pKGwsYyxmKXtjfD0w''@;'; put 'put ''LGZ8PTA7dmFyIHA9MCxtPTAsQT0wO2lmKDAhPSgwfChsfD0wKSkmJigwfGFbbD4+Ml0pPj0xKXtpZihhW2Y+PjJdPXA9MHxhWyhtPWwrMTJ8MCk+PjJdLGFbbD4+Ml09KDB8YVtsPj4yXSktMSxhW2M+PjJdPWFbKDB8ZnVuY3Rpb24gRmgobCl7cmV0dXJuIDB8YVsobHw9MCk+PjJdfShBPTB8''@;'; put 'put ''YVsoMHxhWyhmPWwrMTZ8MCk+PjJdKSsocDw8Mik+PjJdKSk+PjJdLGtmKEEsMTA1LCgwfGFbZj4+Ml0pKyhwPDwyKXwwKSwhKDB8YVsoZj0wfGFbZj4+Ml0pKyhwPDwyKT4+Ml0pKXtmb3IoOyEoKDB8cCk8PS0xfHwwfGFbZisocDw8Mik+PjJdKTspcD1wKy0xfDA7YVttPj4yXT1wfWFbKDB8''@;'; put 'put ''YVtsKzIwPj4yXSkrKChwPTB8YVtjPj4yXSk8PDIpPj4yXT0wLGFbKDB8YVtsKzI0Pj4yXSkrKHA8PDIpPj4yXT0tOTk5LHA9MX1lbHNlIHA9MDtyZXR1cm4gMHxwfWZ1bmN0aW9uIEk2KGwsYyl7cmV0dXJuIDB8YVsoMHxhWzI0KyhsfD0wKT4+Ml0pKygoY3w9MCk8PDIpPj4yXX1mdW5jdGlv''@;'; put 'put ''biBabShsLGMpe2N8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTA7aWYoMCE9KDB8KGx8PTApKSYmKDB8KHA9MHxhW2w+PjJdKSk+PTEpe2lmKGY9MHxhWygwfGFbKHc9bCsyNHwwKT4+Ml0pKyhjPDwyKT4+Ml0sYVtsPj4yXT1wKy0xLGtmKDB8YVsoMHxhWyhtPWwrMjB8MCk+PjJdKSsoYzw8''@;'; put 'put ''Mik+PjJdLDEwNSwoMHxhWyhwPWwrMTZ8MCk+PjJdKSsoZjw8Mil8MCksKDB8Zik9PSgwfGFbKGw9bCsxMnwwKT4+Ml0pJiYwPT0oMHxhWyhBPTB8YVtwPj4yXSkrKGY8PDIpPj4yXSkpe2Zvcig7ISgoMHxmKTw9LTF8fDB8YVtBKyhmPDwyKT4+Ml0pOylmPWYrLTF8MDthW2w+PjJdPWZ9YVso''@;'; put 'put ''MHxhW20+PjJdKSsoYzw8Mik+PjJdPTAsYVsoMHxhW3c+PjJdKSsoYzw8Mik+PjJdPS05OTksZj0xfWVsc2UgZj0wO3JldHVybiAwfGZ9ZnVuY3Rpb24gal8obCxjLGYpe2N8PTAsZnw9MDt2YXIgZ2UsSGUsVmUscWUscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9''@;'; put 'put ''MCxwZT0wLGJlPTAsT2U9MCxMZT0wLFJlPTA7Zm9yKDB8bGgobHw9MCwwKXx8UHIoOTU3OTUsOTU4MzEsMjYwLDk1ODQ2KSxIZT0wfHR2KGwpLFZlPTB8YVtIZSsyMD4+Ml0scWU9MHxhW0hlKzI0Pj4yXSxsPUhlKzI4fDAsMT09KDB8YVsocD1IZSsxNnwwKT4+Ml0pP1JlPTB8YVtsPj4yXToo''@;'; put 'put ''RnQoMHxhW2w+PjJdKSxhW3A+PjJdPTEsUmU9MHxRbihhW0hlKzg+PjJdPDwzKSxhW2w+PjJdPVJlKSxnZT0wfFFuKGFbSGU+PjJdPDwyKSxsPTA7Oyl7aWYoKDB8bCk+PSgwfChwPTB8YVtIZT4+Ml0pKSl7cGU9MCxsPXA7YnJlYWt9YVtnZSsobDw8Mik+PjJdPS0xLGw9bCsxfDB9ZTpmb3Io''@;'; put 'put ''Ozspe2lmKCgwfHBlKT49KDB8bCkpe0E9MCxrPTAsbT0wLExlPTAsT2U9bDticmVha31mb3IoYj0oMHxhWyh3PVZlKygocT1wZSsxfDApPDwyKXwwKT4+Ml0pLSgwfGFbKEQ9VmUrKHBlPDwyKXwwKT4+Ml0pfDAsYVtnZSsocGU8PDIpPj4yXT1wZSxwPTB8YVtEPj4yXTshKCgwfHApPj0oMHwo''@;'; put 'put ''Rz0wfGFbdz4+Ml0pKSk7KSgwfHBlKSE9KDB8KGw9MHxhW3FlKyhwPDwyKT4+Ml0pKSYmKGFbZ2UrKGw8PDIpPj4yXT1wZSkscD1wKzF8MDtmb3IoUj0rKDB8YikscD0wfGFbRD4+Ml07ISgoMHxwKT49KDB8RykpOyl7aWYoKDB8cGUpIT0oMHwobD0wfGFbcWUrKHA8PDIpPj4yXSkpKXtmb3Io''@;'; put 'put ''TT0rKCh3PTB8YVtWZSsobCsxPDwyKT4+Ml0pLShsPTB8YVtWZSsobDw8Mik+PjJdKXwwKStSOyEoKDB8bCk+PSgwfHcpKTspTT0oMHxhW2dlKyhhW3FlKyhsPDwyKT4+Ml08PDIpPj4yXSk9PSgwfHBlKT9NKy0xOk0sbD1sKzF8MDtpZihfW1JlKyhwPDwzKT4+M109TSwhKE0+MCkpe2JlPTIz''@;'; put 'put ''O2JyZWFrIGV9fXA9cCsxfDB9cGU9cSxsPTB8YVtIZT4+Ml19Zm9yKDIzPT0oMHxiZSkmJlByKDk1ODY4LDk1ODMxLDI5MCw5NTg0Nik7ISgoMHxMZSk+PSgwfE9lKSk7KXtmb3IoYj1WZSsoKHc9TGUrMXwwKTw8Mil8MCxwPTB8YVtWZSsoTGU8PDIpPj4yXTshKCgwfHApPj0oMHxhW2I+PjJd''@;'; put 'put ''KSk7KSgwfExlKT09KDB8KGw9MHxhW3FlKyhwPDwyKT4+Ml0pKT9sPW06KGs9K19jKGYsYyxMZSxsKStrLEE9K19bUmUrKHA8PDMpPj4zXStBLGw9bSsxfDApLG09bCxwPXArMXwwO0xlPXcsT2U9MHxhW0hlPj4yXX1BPWsvKEEvKFI9KygwfG0pKSpSKSxsPTA7ZTpmb3IoOyEoKDB8bCk+PSgw''@;'; put 'put ''fE9lKSk7KWZvcih3PWwrMXwwLGI9MHxhW1ZlKyh3PDwyKT4+Ml0scD0wfGFbVmUrKGw8PDIpPj4yXTs7KXtpZigoMHxwKT49KDB8Yikpe2w9dztjb250aW51ZSBlfW09UmUrKHA8PDMpfDAsKDB8bCkhPSgwfGFbcWUrKHA8PDIpPj4yXSkmJihfW20+PjNdPStfW20+PjNdKkEpLHA9cCsxfDB9''@;'; put 'put ''cmV0dXJuIDB8SGV9ZnVuY3Rpb24gTXgobCxjLGYscCxtKXtjfD0wLGY9K2YscHw9MCxtfD0wO3ZhciBrdCxzdCxFdCxadCxjdCxhbixTbix1cixIcixFcixBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wLFZlPTAs''@;'; put 'put ''cWU9MCxydD0wLFdlPTAsYXQ9MCxTdD0wLGJ0PTAsSG49MCxmcj0wLERyPTA7Zm9yKGFuPTB8YVsobHw9MCk+PjJdLFNuPTB8YVtsKzIwPj4yXSxIbj0wfGFbbCsyND4+Ml0sMHxsaChsLDApfHxQcig5NTc5NSw5NTgzMSwzMzMsOTU4NzYpLHVyPTB8al8obCxjLHApLEhyPTB8UW4oNTYpLF9b''@;'; put 'put ''KEVyPUhyKzMyfDApPj4zXT0xLGFbSHIrMjA+PjJdPTAsYVtIcisyND4+Ml09MCxfW0hyKzQwPj4zXT0uMDEsYVtIcis0OD4+Ml09fn4rRDAoKyArKDB8YVtsPj4yXSkpLFp0PTB8UW4oQT1hbjw8MyksYVtIcisxMj4+Ml09WnQsbD0wOyEoKDB8bCk+PSgwfGFuKSk7KV9bWnQrKGw8PDMpPj4z''@;'; put 'put ''XT1mLGw9bCsxfDA7Zm9yKGN0PTB8UW4oYW48PDIpLEV0PTB8UW4oQSksYj0wOzspe2lmKCgwfGIpPj0oMHxhbikpe1I9MDticmVha31mb3IoX1soaz1FdCsoYjw8Myl8MCk+PjNdPTAsRD1TbisoKE09YisxfDApPDwyKXwwLHc9MHxhW1NuKyhiPDwyKT4+Ml0sbD0wLGY9MDshKCgwfHcpPj0o''@;'; put 'put ''MHxhW0Q+PjJdKSk7KSgwfGIpIT0oMHwoQT0wfGFbSG4rKHc8PDIpPj4yXSkpJiYoZj0rX2MocCxjLGIsQSksX1trPj4zXT1mPStfW2s+PjNdK2YsbD1sKzF8MCksdz13KzF8MDtpZigoMHxsKTw9MCl7cT0xNDticmVha31fW2s+PjNdPWYvKygwfGwpLGI9TX1mb3IoMTQ9PSgwfHEpJiZQcig5''@;'; put 'put ''NTkwOCw5NTgzMSwzNTgsOTU4NzYpOzspe2lmKCgwfFIpPj0oMHxhbikpe2w9MCxNPTA7YnJlYWt9YVtjdCsoUjw8Mik+PjJdPS0xLFI9UisxfDB9ZTpmb3IoOyEoKDB8TSk+PSgwfGFuKSk7KXtmb3IoYVtjdCsoTTw8Mik+PjJdPU0sUj1TbisoKEQ9TSsxfDApPDwyKXwwLHc9MHxhWyhiPVNu''@;'; put 'put ''KyhNPDwyKXwwKT4+Ml07ISgoMHx3KT49KDB8KEE9MHxhW1I+PjJdKSkpOykoMHxhWyhBPWN0KyhhW0huKyh3PDwyKT4+Ml08PDIpfDApPj4yXSkhPSgwfE0pJiYoYVtBPj4yXT1NLGw9bCsxfDApLHc9dysxfDA7Zm9yKGs9MHxhW2I+PjJdOzspe2lmKCgwfGspPj0oMHxBKSl7TT1EO2NvbnRp''@;'; put 'put ''bnVlIGV9Zm9yKGI9U24rKDErKHc9MHxhW0huKyhrPDwyKT4+Ml0pPDwyKXwwLHc9MHxhW1NuKyh3PDwyKT4+Ml07ISgoMHx3KT49KDB8YVtiPj4yXSkpOykoMHxhWyhBPWN0KyhhW0huKyh3PDwyKT4+Ml08PDIpfDApPj4yXSkhPSgwfE0pJiYoYVtBPj4yXT1NLGw9bCsxfDApLHc9dysxfDA7''@;'; put 'put ''az1rKzF8MCxBPTB8YVtSPj4yXX19YVsoa3Q9SHIrNHwwKT4+Ml09MHx1YyhhbixhbixBPWwrYW58MCwxLDEpLEE9MHx1YyhhbixhbixBLDEsMSksYVsoc3Q9SHIrOHwwKT4+Ml09QSxsPTB8YVtrdD4+Ml07ZG97aWYoMD09KDB8QSl8MD09KDB8bCkpUTQoSHIpLGJ0PTA7ZWxzZXthdD0wfGFb''@;'; put 'put ''bCsyMD4+Ml0sV2U9MHxhW2wrMjQ+PjJdLHFlPTB8YVtsKzI4Pj4yXSxTdD0wfGFbQSsyOD4+Ml0sT2U9MHxhW0ErMjQ+PjJdLGFbKHJ0PTB8YVtBKzIwPj4yXSk+PjJdPTAsYVthdD4+Ml09MCxmPTAsRz0wLHE9MCx3PTA7ZTpmb3IoOzspe2lmKCgwfHEpPj0oMHxhbikpe3E9NTg7YnJlYWt9''@;'; put 'put ''Zm9yKGFbY3QrKHE8PDIpPj4yXT1MZT1xK2FufDAsSGU9U24rKChSZT1xKzF8MCk8PDIpfDAsVmU9RXQrKHE8PDMpfDAscGU9MCxnZT0wLGI9MHxhWyhrPVNuKyhxPDwyKXwwKT4+Ml07ISgoMHxiKT49KDB8KGw9MHxhW0hlPj4yXSkpKTspe2lmKCgwfGFbKGw9Y3QrKChBPTB8YVtIbisoYjw8''@;'; put 'put ''Mik+PjJdKTw8Mil8MCk+PjJdKSE9KDB8TGUpKXtzd2l0Y2goYVtsPj4yXT1MZSxhW1dlKyh3PDwyKT4+Ml09QSwwfG0pe2Nhc2UgMDpiZT0xO2JyZWFrO2Nhc2UgMTpiZT0uNSooK19bRXQrKEE8PDMpPj4zXSsgK19bVmU+PjNdKTticmVhaztjYXNlIDI6YmU9K3FsKCsgK2R1KHAsYyxxLEEp''@;'; put 'put ''LC40KTticmVhaztkZWZhdWx0OnE9NDI7YnJlYWsgZX1fW3FlKyh3PDwzKT4+M109RHI9LTEvKGJlKmJlKSxhW09lKyh3PDwyKT4+Ml09QSxfWyhSPVN0Kyh3PDwzKXwwKT4+M109ZnI9RHIqYmUsRz0rX2MocCxjLHEsQSkqZnIrRyx3PXcrMXwwLHBlPURyK3BlLGdlPShmcj0rX1tSPj4zXSkr''@;'; put 'put ''Z2UsZj1mcipiZStmfWI9YisxfDB9Zm9yKFI9MHxhW2s+PjJdOyEoKDB8Uik+PSgwfGwpKTspe2ZvcihNPVNuKygxKyhrPTB8YVtIbisoUjw8Mik+PjJdKTw8Mil8MCxEPUV0KyhrPDwzKXwwLGI9MHxhW1NuKyhrPDwyKT4+Ml07ISgoMHxiKT49KDB8YVtNPj4yXSkpOyl7aWYoKDB8YVsobD1j''@;'; put 'put ''dCsoYVsoQT1IbisoYjw8Mil8MCk+PjJdPDwyKXwwKT4+Ml0pIT0oMHxMZSkpe3N3aXRjaChhW2w+PjJdPUxlLDB8bSl7Y2FzZSAwOmJlPTI7YnJlYWs7Y2FzZSAxOmJlPS41KigyKitfW0Q+PjNdKyArX1tWZT4+M10rICtfW0V0KyhhW0E+PjJdPDwzKT4+M10pO2JyZWFrO2Nhc2UgMjpiZT0r''@;'; put 'put ''cWwoKyArZHUocCxjLHEsMHxhW0E+PjJdKSwuNCk7YnJlYWs7ZGVmYXVsdDpxPTUzO2JyZWFrIGV9YVtXZSsodzw8Mik+PjJdPWFbQT4+Ml0sX1txZSsodzw8Myk+PjNdPWZyPS0xLyhiZSpiZSksYVtPZSsodzw8Mik+PjJdPWFbQT4+Ml0sX1sobD1TdCsodzw8Myl8MCk+PjNdPURyPWZyKmJl''@;'; put 'put ''LEc9K19jKHAsYywwfGFbQT4+Ml0saykqRHIrRyx3PXcrMXwwLHBlPWZyK3BlLGdlPShEcj0rX1tsPj4zXSkrZ2UsZj1EcipiZStmfWI9YisxfDB9Uj1SKzF8MCxsPTB8YVtIZT4+Ml19YVtXZSsodzw8Mik+PjJdPXEsX1soVmU9WnQrKHE8PDMpfDApPj4zXT1Ecj0tcGUqK19bVmU+PjNdLF9b''@;'; put 'put ''cWUrKHc8PDMpPj4zXT1Eci1wZSxhW09lKyh3PDwyKT4+Ml09cSxfW1N0Kyh3PDwzKT4+M109LWdlLGFbYXQrKFJlPDwyKT4+Ml09dz13KzF8MCxhW3J0KyhSZTw8Mik+PjJdPXcscT1SZX1pZig0Mj09KDB8cSkpQ3UoOTU5MTUsMjksMSwwfGFbMTU3MTJdKSxQcigxMzgzOTQsOTU4MzEsNDE4''@;'; put 'put ''LDk1ODc2KTtlbHNlIGlmKDUzPT0oMHxxKSlDdSg5NTkxNSwyOSwxLDB8YVsxNTcxMl0pLFByKDEzODM5NCw5NTgzMSw0NjAsOTU4NzYpO2Vsc2UgaWYoNTg9PSgwfHEpKXtmb3IoZj1HL2YsbD0wOyEoKDB8bCk+PSgwfHcpKTspX1soSG49U3QrKGw8PDMpfDApPj4zXT0rX1tIbj4+M10qZixs''@;'; put 'put ''PWwrMXwwO19bRXI+PjNdPWYsYVs4KygwfGFba3Q+PjJdKT4+Ml09dyxhWzgrKDB8YVtzdD4+Ml0pPj4yXT13LEZ0KGN0KSxGdChFdCksUmEodXIpLGJ0PUhyO2JyZWFrfX19d2hpbGUoMCk7cmV0dXJuIDB8YnR9ZnVuY3Rpb24gUTQobCl7dmFyIGM9MDswfChsfD0wKSYmKDB8KGM9MHxhW2wr''@;'; put 'put ''ND4+Ml0pJiZSYShjKSwwfChjPTB8YVtsKzg+PjJdKSYmUmEoYyksMHwoYz0wfGFbbCsxMj4+Ml0pJiZGdChjKSwwfChjPTB8YVtsKzIwPj4yXSkmJkNvWzEyNyZhW2wrMTY+PjJdXShjKSxGdChsKSl9ZnVuY3Rpb24gem0obCxjLGYscCxtKXtjfD0wLGZ8PTAscHw9MCxtPSttO3ZhciBidCxh''@;'; put 'put ''bixTbixIbixIcixFcixmcixEcixBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wLFZlPTAscWU9MCxydD0wLFdlPTAsYXQ9MCxTdD0wLGt0PTAsc3Q9MCxFdD0wLFp0PTAsY3Q9MCx1cj0wLEpyPTA7aWYoRHI9bGUs''@;'; put 'put ''bGU9bGUrMTZ8MCxmcj1Ecis4fDAsRD1Ecis0fDAsaz1EcixNPTB8YVs0KyhsfD0wKT4+Ml0sdz0wfGFbbCs4Pj4yXSxhWyhIcj1EcisxMnwwKT4+Ml09MCxhW2ZyPj4yXT0wLGFbRD4+Ml09MCxidD0wfGFbbCsxMj4+Ml0sYVtrPj4yXT0wLGFuPTB8dHYodyksMCE9KDB8KEVyPTB8UW4oQT0o''@;'; put 'put ''SG49MHxBcihTbj0wfGFbTT4+Ml0sYykpPDwzKSkpJiYoZ28oMHxFciwwfGYsMHwodXI9MHxBcihjPDwzLFNuKSkpLGN0PTB8UW4oQSksYVtmcj4+Ml09Y3QsMCE9KDB8Y3QpKSl7c3dpdGNoKFp0PTB8YVt3KzIwPj4yXSxjdD0wfGFbdysyND4+Ml0sU3Q9MHxhW3crMjg+PjJdLGt0PTB8YVth''@;'; put 'put ''bisyOD4+Ml0sc3Q9MHxhW00rMjg+PjJdLDB8YVsoRXQ9bCsyNHwwKT4+Ml0pe2Nhc2UgMTooZnVuY3Rpb24gSXgobCxjLGYscCxtLEEpe2N8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgSGUsVmUscWUsV2Usdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9''@;'; put 'put ''MCxPZT0wLExlPTAsUmU9MCxydD0wLGF0PTA7cT0wfGFbOCsobHw9MCk+PjJdLFdlPTB8YVtsKzEyPj4yXSxWZT0wfGFbbCsxNj4+Ml0scWU9MHxhWzIwKyhydD0wfGFbbCszMj4+Ml0pPj4yXSxydD0wfGFbcnQrMjQ+PjJdLGdlPTB8YVsoTT1sKzIwfDApPj4yXSxwZT0wfGFbKEQ9bCsyNHww''@;'; put 'put ''KT4+Ml0sRz0wfGFbKFI9bCsyOHwwKT4+Ml0sSGU9K19bbD4+M107ZTpkb3tpZigzPT0oMnxxKSl7aWYoIWdlKXtmb3IoMCE9KDB8cGUpfDAhPSgwfEcpP1ByKDk2MDk0LDk1ODMxLDY5Miw5NjExMSk6KHc9MCxiPTApOyEoKDB8dyk+PSgwfFdlKSk7KVJlPTB8YVtWZSsodzw8Mik+PjJdLHc9''@;'; put 'put ''dysxfDAsYj1iK35+KChiZT0rKCgwfGFbcWUrKFJlKzE8PDIpPj4yXSktKDB8YVtxZSsoUmU8PDIpPj4yXSl8MCkrMSkqYmUpfDA7Z2U9MHxRbihwZT1iPDwyKSxhW00+PjJdPWdlLHBlPTB8UW4ocGUpLGFbRD4+Ml09cGUsRz0wfFFuKGI8PDMpLGFbUj4+Ml09R31mb3IoTGU9MCxsPTA7ISgo''@;'; put 'put ''MHxMZSk+PSgwfFdlKSk7KXt3PTB8YVtydCsoKGI9MHxhWyhPZT1xZSsoKHE9MHxhW1ZlKyhMZTw8Mik+PjJdKTw8Mil8MCk+PjJdKTw8Mik+PjJdLGI9MHxhW3J0KyhiKzE8PDIpPj4yXTt0OmRve2lmKCgwfHcpIT0oMHxiKSl7Zm9yKGF0PStkdShwLGYsdyxiKSxhdCo9YXQsYmU9KygoMHxh''@;'; put 'put ''WyhSPXFlKyhxKzE8PDIpfDApPj4yXSktKDB8YVtPZT4+Ml0pfDApLGFbZ2UrKGw8PDIpPj4yXT1xLGFbcGUrKGw8PDIpPj4yXT1xLF9bRysobDw8Myk+PjNdPUhlL2F0LGs9YmUqYmUqYXQsYmU9LUhlLyhhdCpiZSksYj0wfGFbT2U+PjJdO2w9bCsxfDAsISgoMHxiKT49KDB8KHc9MHxhW1I+''@;'; put 'put ''PjJdKSkpOylhW2dlKyhsPDwyKT4+Ml09cSxhW3BlKyhsPDwyKT4+Ml09YVtydCsoYjw8Mik+PjJdLF9bRysobDw8Myk+PjNdPWJlLGI9YisxfDA7Zm9yKGs9SGUvayxEPTB8YVtPZT4+Ml07Oyl7aWYoKDB8RCk+PSgwfHcpKWJyZWFrIHQ7Zm9yKGFbZ2UrKGw8PDIpPj4yXT1NPTB8YVtydCso''@;'; put 'put ''RDw8Mik+PjJdLGFbcGUrKGw8PDIpPj4yXT1xLF9bRysobDw8Myk+PjNdPWJlLGI9MHxhW09lPj4yXTtsPWwrMXwwLCEoKDB8Yik+PSgwfCh3PTB8YVtSPj4yXSkpKTspUmU9MHxhW3J0KyhiPDwyKT4+Ml0sYVtnZSsobDw8Mik+PjJdPU0sYVtwZSsobDw8Mik+PjJdPVJlLF9bRysobDw8Myk+''@;'; put 'put ''PjNdPWssYj1iKzF8MDtEPUQrMXwwfX19d2hpbGUoMCk7TGU9TGUrMXwwfXc9MHxvNChsLGMsYyxnZSxwZSxHLDEsOCksbD0wfWVsc2V7c3dpdGNoKDB8cSl7Y2FzZSAyOmNhc2UgNDpicmVhaztkZWZhdWx0Onc9MCxsPTA7YnJlYWsgZX1kb3tpZihnZSlPZT1HLExlPXBlLFJlPWdlO2Vsc2V7''@;'; put 'put ''aWYoISgwIT0oMHxwZSl8MCE9KDB8RykpKXtSZT0wfFFuKExlPVdlPDwyKSxhW00+PjJdPVJlLExlPTB8UW4oTGUpLGFbRD4+Ml09TGUsT2U9MHxRbihXZTw8MyksYVtSPj4yXT1PZTticmVha31Qcig5NjA5NCw5NTgzMSw3MzQsOTYxMTEpfX13aGlsZSgwKTtmb3IobD0wfFFuKDB8QXIoYzw8''@;'; put 'put ''MyxmKSksYj0wfEFyKGYsYyksdz0wOzspe2lmKCgwfHcpPj0oMHxiKSl7Rz0wO2JyZWFrfV9bbCsodzw8Myk+PjNdPTAsdz13KzF8MH1mb3IoOyEoKDB8Ryk+PSgwfFdlKSk7KXtmb3Ioaz0rZHUocCxmLDB8YVtydCsoKEQ9MHxhWyhNPXFlKygocT0wfGFbVmUrKEc8PDIpPj4yXSk8PDIpfDAp''@;'; put 'put ''Pj4yXSk8PDIpPj4yXSwwfGFbcnQrKEQrMTw8Mik+PjJdKSxhW1JlKyhHPDwyKT4+Ml09cSxhW0xlKyhHPDwyKT4+Ml09cSxfW09lKyhHPDwzKT4+M109az1IZS9rLE09MHxhW00+PjJdLEQ9MHxhW3FlKyhxKzE8PDIpPj4yXSxxPTB8QXIocSxmKSxiPU07ISgoMHxiKT49KDB8RCkpOyl7Zm9y''@;'; put 'put ''KFI9MHxBcigwfGFbcnQrKGI8PDIpPj4yXSxmKSx3PTA7ISgoMHx3KT49KDB8ZikpOylfWyhnZT1sKyh3K3E8PDMpfDApPj4zXT0rX1tnZT4+M10rICtfW3ArKHcrUjw8Myk+PjNdLHc9dysxfDA7Yj1iKzF8MH1mb3Ioayo9MS8rKEQtTXwwKSx3PTA7ISgoMHx3KT49KDB8ZikpOylfWyhnZT1s''@;'; put 'put ''Kyh3K3E8PDMpfDApPj4zXT1rKitfW2dlPj4zXSx3PXcrMXwwO0c9RysxfDB9dz0wfG80KEcsYyxjLFJlLExlLE9lLDEsOCl9fXdoaWxlKDApO2FbbT4+Ml09dyxhW0E+PjJdPWx9KSgwfGFbbCsyMD4+Ml0sU24sYyxmLGssRCksKEE9MHxhW2s+PjJdKT8oTT0wfHlwKE0sQSkscnQ9MCxXZT0w''@;'; put 'put ''KToocnQ9MCxXZT0wLEE9MCk7YnJlYWs7Y2FzZSAyOnJ0PStfWzgrKEE9MHxhW2wrMjA+PjJdKT4+M10sV2U9K19bQT4+M10sQT0wO2JyZWFrO2RlZmF1bHQ6cnQ9MCxXZT0wLEE9MH1WZT0wPT0oMHxidCkscWU9bCs0MHwwLEhlPWwrNDh8MCx3PTB8YVtEPj4yXSxiPTEsaz0wO2U6Zm9yKDtS''@;'; put 'put ''ZT1rKzF8MCwoMHxrKTwoMHxwKSZiPm07KXt0OmRve2lmKDQ9PSgwfGFbRXQ+PjJdKSlmb3IoRD0wfGFbZnI+PjJdLGs9MDs7KXtpZigoMHxrKT49KDB8U24pKWJyZWFrIHQ7Zm9yKFI9MHxBcihrLGMpLGw9MDshKCgwfGwpPj0oMHxjKSk7KV9bRCsobCtSPDwzKT4+M109MCxsPWwrMXwwO2s9''@;'; put 'put ''aysxfDB9ZWxzZXtmb3IocT0wOyEoKDB8cSk+PSgwfFNuKSk7KXtmb3IoTGU9WnQrKChPZT1xKzF8MCk8PDIpfDAsRz0wLGJlPTB8YVtadCsocTw8Mik+PjJdLGs9LTE7ISgoMHxiZSk+PSgwfGFbTGU+PjJdKSk7KXtpZigoMHxxKT09KDB8KGw9MHxhWyhEPWN0KyhiZTw8Mil8MCk+PjJdKSkp''@;'; put 'put ''az1iZTtlbHNle2lmKGdlPStfYyhmLGMscSxsKSwwPT0ocGU9K19bKFI9U3QrKGJlPDwzKXwwKT4+M10pKXBlPTA7ZWxzZXtpZigwPT1nZSl7Zm9yKHBlPXBlLytfW3N0KyhiZTw8Myk+PjNdKjFlLTQsbD0wOyEoKDB8bCk+PSgwfGMpKTspZ2U9cGUqKCtCaCgpKzFlLTQpLEpyPWYrKCgwfEFy''@;'; put 'put ''KDB8YVtEPj4yXSxjKSkrbDw8Myl8MCxfW0pyPj4zXT1nZSsgK19bSnI+PjNdLGw9bCsxfDA7Z2U9K19jKGYsYyxxLDB8YVtEPj4yXSkscGU9K19bUj4+M119cGUvPWdlfV9ba3QrKGJlPDwzKT4+M109cGUsRz1wZStHfWJlPWJlKzF8MH1pZigoMHxrKTw9LTEpe2F0PTI1O2JyZWFrIGV9X1tr''@;'; put 'put ''dCsoazw8Myk+PjNdPS1HLHE9T2V9R2koYW4sMCxmLDAsZnIsMCxjKX19d2hpbGUoMCk7dDpkb3tpZighVmUpZm9yKEQ9MHxhW2ZyPj4yXSxrPTA7Oyl7aWYoKDB8ayk+PSgwfFNuKSlicmVhayB0O2ZvcihSPWJ0KyhrPDwzKXwwLHE9MHxBcihrLGMpLGw9MDshKCgwfGwpPj0oMHxjKSk7KV9b''@;'; put 'put ''KEpyPUQrKChMZT1sK3F8MCk8PDMpfDApPj4zXT0rX1tKcj4+M10rICtfW0VyKyhMZTw8Myk+PjNdKitfW1I+PjNdLGw9bCsxfDA7az1rKzF8MH19d2hpbGUoMCk7dDpkb3tzd2l0Y2goMHxhW0V0Pj4yXSl7Y2FzZSAxOmZvcihrPTB8YVtmcj4+Ml0sbD0wOzspe2lmKCgwfGwpPj0oMHxTbikp''@;'; put 'put ''e2F0PTUwO2JyZWFrIHR9Zm9yKFI9MHxBcihsLGMpLEQ9MDshKCgwfEQpPj0oMHxjKSk7KV9bKEpyPWsrKChhdD1EK1J8MCk8PDMpfDApPj4zXT0rX1tKcj4+M10rICtfW3crKGF0PDwzKT4+M10sRD1EKzF8MDtsPWwrMXwwfWNhc2UgMjpZbmUoU24sYyxmLDB8YVtmcj4+Ml0sV2UscnQpLGs9''@;'; put 'put ''MHxhW2ZyPj4yXSxHPStfW3FlPj4zXSxsPTB8YVtIZT4+Ml0sMj09KDB8YVtFdD4+Ml0pP3VQKE0sV2UsYyxmLGssRyxsLEhyKTphdD01MTticmVhaztkZWZhdWx0Oms9MHxhW2ZyPj4yXSxhdD01MH19d2hpbGUoMCk7aWYoNTA9PSgwfGF0KSYmKEc9K19bcWU+PjNdLGw9MHxhW0hlPj4yXSxh''@;'; put 'put ''dD01MSksNTE9PSgwfGF0KSYmKGF0PTAsUjMoTSxjLGYsayxHLGwsMCxIcikpLDB8YVtIcj4+Ml0pYnJlYWs7Yj0rY1AoU24sYyxmLDB8YVtmcj4+Ml0pLGIvPStEMCgrICt5NShIbixmLGYpKSxnbygwfGYsMHxhW2ZyPj4yXSwwfHVyKSxrPVJlfTI1PT0oMHxhdCkmJlByKDk2MDQ5LDk1ODMx''@;'; put 'put ''LDg5NSw5NjA2MCksUmEoYW4pLEEmJihSYShBKSxSYShNKSl9ZWxzZSBSYShhbiksYj0xLHc9MDtyZXR1cm4gRnQoRXIpLDB8KEE9MHxhW2ZyPj4yXSkmJkZ0KEEpLDB8dyYmRnQodyksbGU9RHIsK2J9ZnVuY3Rpb24gWW5lKGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAsZnw9MCxwfD0wLEE9K0E7''@;'; put 'put ''dmFyIHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MDtBKj1tPSttLHc9MDtlOmZvcig7ISgoMHx3KT49KDB8bCkpOylmb3IoRD13KzF8MCxSPTB8QXIodyxjKSxiPUQ7Oyl7aWYoKDB8Yik9PSgwfGwpKXt3PUQ7Y29udGludWUgZX1mb3IoTT0wfEFyKGIsYyksbT0xLytkdShm''@;'; put 'put ''LGMsdyxiKSxrPTA7ISgoMHxrKT49KDB8YykpOylxPUEqKCgrX1tmKygocGU9aytSfDApPDwzKT4+M10tK19bZisoKEc9aytNfDApPDwzKT4+M10pKm0pLF9bKHBlPXArKHBlPDwzKXwwKT4+M109cSsgK19bcGU+PjNdLF9bKEc9cCsoRzw8Myl8MCk+PjNdPStfW0c+PjNdLXEsaz1rKzF8MDti''@;'; put 'put ''PWIrMXwwfX1mdW5jdGlvbiB1UChsLGMsZixwLG0sQSx3LGIpe3ZhciBrLE07Znw9MCxwfD0wLG18PTAsQT0rQSx3fD0wLGJ8PTAsTT0wfGZ1bmN0aW9uIEJ4KGwsYyl7bHw9MCxjPStjO3ZhciBmLHA7cmV0dXJuIGY9MHxRbig4KSxwPTB8UW4oMTYpLGFbZj4+Ml09cCxfW3A+PjNdPWMsYVtw''@;'; put 'put ''Kzg+PjJdPWwsYVtmKzQ+PjJdPTI1LDB8Zn0obHw9MCxjPStjKSxrPTB8ZnVuY3Rpb24gRngobCxjKXtjPStjO3ZhciBiLGssTSxELEcscSxwZSxmPTAscD0wLG09MCxBPTAsdz0wLFI9MDtEPTB8YVsobHw9MCk+PjJdLEc9MHxhW2wrMjA+PjJdLHE9MHxhW2wrMjQ+PjJdLGs9MHxhW2wrMjg+''@;'; put 'put ''PjJdLE09MHxRbig4KSx3PTB8UW4oOCsoRDw8Myl8MCksYVtNPj4yXT13LF9bdz4+M109KygwfEQpLHc9dys4fDAsYj0xLyhwZT0rKEQrLTF8MCkpLGMqPXBlLGw9MDtlOmZvcig7ISgoMHxsKT49KDB8RCkpOylmb3IocD13KyhsPDwzKXwwLF9bcD4+M109YixtPWwrMXwwLEE9MHxhW0crKG08''@;'; put 'put ''PDIpPj4yXSxmPTB8YVtHKyhsPDwyKT4+Ml07Oyl7aWYoKDB8Zik+PSgwfEEpKXtsPW07Y29udGludWUgZX0oMHxsKT09KDB8YVtxKyhmPDwyKT4+Ml0pJiYoKFI9K19baysoZjw8Myk+PjNdKT49MD9SOi1SKT4wJiYoX1twPj4zXT0xLyhSK2MpKSxmPWYrMXwwfXJldHVybiBhW00rND4+Ml09''@;'; put 'put ''MjcsMHxNfShsLGMpLG1QKE0saywwfGFbbD4+Ml0sZixwLG0sQSx3LGIpfWZ1bmN0aW9uIGNQKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MDtmb3IoQT0wLGI9MDshKCgwfEEpPj0oMHxsKSk7KXtmb3Ioaz0wfEFyKEEsYyksbT0w''@;'; put 'put ''LHc9MDshKCgwfG0pPj0oMHxjKSk7KUQ9bStrfDAsbT1tKzF8MCx3PShNPStfW3ArKEQ8PDMpPj4zXS0rX1tmKyhEPDwzKT4+M10pKk0rdztBPUErMXwwLGI9K0QwKCt3KStifXJldHVybitifWZ1bmN0aW9uIER4KGwsYyxmLHAsbSl7Y3w9MCxmPStmLHB8PTAsbXw9MDt2YXIgVmUscWUsYXQs''@;'; put 'put ''QT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxMZT0wLFJlPTAsSGU9MCxydD0wLFdlPTAsU3Q9MCxrdD0wO2ZvcihXZT0wfGFbKGx8PTApPj4yXSxxPTB8YVtsKzIwPj4yXSxwZT0wfGFbbCsyND4+Ml0sMHxsaChsLDApfHxQcig5NTc5NSw5''@;'; put 'put ''NTgzMSwxMDM0LDk2MTMzKSxhdD0wfFFuKGdlPVdlPDwzKSxiPTA7ISgoMHxiKT49KDB8V2UpKTspe2ZvcihfWyhEPWF0KyhiPDwzKXwwKT4+M109MCxHPXErKChSPWIrMXwwKTw8Mil8MCxNPTB8YVtxKyhiPDwyKT4+Ml0sQT0wLGs9MDshKCgwfE0pPj0oMHxhW0c+PjJdKSk7KSgwfGIpIT0o''@;'; put 'put ''MHwodz0wfGFbcGUrKE08PDIpPj4yXSkpJiYoaz0rX2MocCxjLGIsdyksX1tEPj4zXT1rPStfW0Q+PjNdK2ssQT1BKzF8MCksTT1NKzF8MDtpZigoMHxBKTw9MCl7cnQ9MTE7YnJlYWt9X1tEPj4zXT1rLysoMHxBKSxiPVJ9Zm9yKDExPT0oMHxydCkmJlByKDk1OTA4LDk1ODMxLDEwNDYsOTYx''@;'; put 'put ''MzMpLEE9MHxRbig1NiksX1socWU9QSszMnwwKT4+M109MSxhW0ErMjA+PjJdPTAsYVtBKzI0Pj4yXT0wLF9bQSs0MD4+M109LjAxLGFbQSs0OD4+Ml09fn4rRDAoKyArKDB8YVtsPj4yXSkpLFZlPTB8UW4oZ2UpLGFbQSsxMj4+Ml09VmUsdz0wOyEoKDB8dyk+PSgwfFdlKSk7KV9bVmUrKHc8''@;'; put 'put ''PDMpPj4zXT1mLHc9dysxfDA7ZG97aWYoKDB8V2UpPjIpe2lmKG0pe3c9MHx2UChXZSxjLHApO2JyZWFrfXc9MHxOeChXZSxjLHApO2JyZWFrfXc9MHx0dihsKX13aGlsZSgwKTtpZihhWyhtPUErNHwwKT4+Ml09MHx5cChsLHcpLFJhKHcpLGI9MHx0digwfGFbbT4+Ml0pLGFbQSs4Pj4yXT1i''@;'; put 'put ''LDA9PSgwfGIpfDA9PSgwfCh3PTB8YVttPj4yXSkpKVpfKEEpLEE9MDtlbHNle2ZvcihnZT0wfGFbdysyMD4+Ml0scGU9MHxhW3crMjQ+PjJdLHE9MHxhW3crMjg+PjJdLG09MHxhW2IrMjg+PjJdLFJlPTAsSGU9MCxEPTA7ISgoMHxEKT49KDB8V2UpKTspe2ZvcihSPWdlKygoRz1EKzF8MCk8''@;'; put 'put ''PDIpfDAsTGU9MCxmPTAsYj0tMSxiZT1SZSxPZT1IZSxNPTB8YVtnZSsoRDw8Mik+PjJdOyEoKDB8TSk+PSgwfGFbUj4+Ml0pKTspKDB8KHc9MHxhW3BlKyhNPDwyKT4+Ml0pKT09KDB8RCk/KGs9TGUsdz1NKTooU3Q9K3FsKCsgK2R1KHAsYyxELHcpLC42KSxfW3ErKE08PDMpPj4zXT1rPTEv''@;'; put 'put ''KFN0KlN0KSxfWyhsPW0rKE08PDMpfDApPj4zXT1rdD1rKlN0LE9lPWt0KitfYyhwLGMsRCx3KStPZSxrKz1MZSxmPShrdD0rX1tsPj4zXSkrZix3PWIsYmU9a3QqU3QrYmUpLExlPWssYj13LE09TSsxfDA7aWYoX1sobD1WZSsoRDw8Myl8MCk+PjNdPWs9LUxlKitfW2w+PjNdLCgwfGIpPD0t''@;'; put 'put ''MSl7cnQ9MzE7YnJlYWt9X1txKyhiPDwzKT4+M109ay1MZSxfW20rKGI8PDMpPj4zXT0tZixSZT1iZSxIZT1PZSxEPUd9Zm9yKDMxPT0oMHxydCkmJlByKDk2MTU0LDk1ODMxLDExMTIsOTYxMzMpLGs9SGUvUmUsYj0wfGFbZ2UrKFdlPDwyKT4+Ml0sdz0wOyEoKDB8dyk+PSgwfGIpKTspX1so''@;'; put 'put ''V2U9bSsodzw8Myl8MCk+PjNdPStfW1dlPj4zXSprLHc9dysxfDA7X1txZT4+M109ayxGdChhdCl9cmV0dXJuIDB8QX1mdW5jdGlvbiBaXyhsKXtRNChsfD0wKX1mdW5jdGlvbiBVMShsLGMsZil7em0obHw9MCxjfD0wLGZ8PTAsNTAsLjAwMSl9ZnVuY3Rpb24gTHgobCxjLGYscCl7Y3w9MCxm''@;'; put 'put ''fD0wLHB8PTA7dmFyIFJlLEhlLFZlLHFlLHJ0LG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsV2U9MCxhdD0wO2ZvcihydD0wfGFbKGx8PTApPj4yXSxXZT0wfGFbbCsyMD4+Ml0sYXQ9MHxhW2wrMjQ+PjJdLDB8bGgobCww''@;'; put 'put ''KXx8UHIoOTU3OTUsOTU4MzEsMTE0OSw5NjE2NSksUmU9MHxqXyhsLGMscCksSGU9MHxhW1JlKzI4Pj4yXSxsPTB8UW4oOCksVmU9MHxRbihydDw8MikscWU9MHxRbihydDw8Myksdz0wOzspe2lmKCgwfHcpPj0oMHxydCkpe0c9MDticmVha31mb3IoX1soTT1xZSsodzw8Myl8MCk+PjNdPTAs''@;'; put 'put ''Uj1XZSsoKEQ9dysxfDApPDwyKXwwLGI9MHxhW1dlKyh3PDwyKT4+Ml0sbT0wLGs9MDshKCgwfGIpPj0oMHxhW1I+PjJdKSk7KSgwfHcpIT0oMHwoQT0wfGFbYXQrKGI8PDIpPj4yXSkpJiYoaz0rX2MocCxjLHcsQSksX1tNPj4zXT1rPStfW00+PjNdK2ssbT1tKzF8MCksYj1iKzF8MDtpZigo''@;'; put 'put ''MHxtKTw9MCl7cT0xMTticmVha31fW00+PjNdPWsvKygwfG0pLHc9RH1mb3IoMTE9PSgwfHEpJiZQcig5NTkwOCw5NTgzMSwxMTY3LDk2MTY1KTs7KXtpZigoMHxHKT49KDB8cnQpKXtEPTAsbT0wO2JyZWFrfWFbVmUrKEc8PDIpPj4yXT0tMSxHPUcrMXwwfWU6Zm9yKDshKCgwfEQpPj0oMHxy''@;'; put 'put ''dCkpOyl7Zm9yKGFbVmUrKEQ8PDIpPj4yXT1ELEc9V2UrKChSPUQrMXwwKTw8Mil8MCx3PTB8YVsoYj1XZSsoRDw8Mil8MCk+PjJdOyEoKDB8dyk+PSgwfChBPTB8YVtHPj4yXSkpKTspKDB8YVsoQT1WZSsoYVthdCsodzw8Mik+PjJdPDwyKXwwKT4+Ml0pIT0oMHxEKSYmKGFbQT4+Ml09RCxt''@;'; put 'put ''PW0rMXwwKSx3PXcrMXwwO2ZvcihNPTB8YVtiPj4yXTs7KXtpZigoMHxNKT49KDB8QSkpe0Q9Ujtjb250aW51ZSBlfWZvcihiPVdlKygxKyh3PTB8YVthdCsoTTw8Mik+PjJdKTw8Mil8MCx3PTB8YVtXZSsodzw8Mik+PjJdOyEoKDB8dyk+PSgwfGFbYj4+Ml0pKTspKDB8YVsoQT1WZSsoYVth''@;'; put 'put ''dCsodzw8Mik+PjJdPDwyKXwwKT4+Ml0pIT0oMHxEKSYmKGFbQT4+Ml09RCxtPW0rMXwwKSx3PXcrMXwwO009TSsxfDAsQT0wfGFbRz4+Ml19fWlmKHA9MHx1YyhydCxydCxtLDEsMSksYVtsPj4yXT1wLHApe2ZvcihwZT0wfGFbcCsyND4+Ml0sZ2U9MHxhW3ArMjg+PjJdLGFbKHE9MHxhW3Ar''@;'; put 'put ''MjA+PjJdKT4+Ml09MCxBPTAsbT0wOyEoKDB8QSk+PSgwfHJ0KSk7KXtmb3IoYVtWZSsoQTw8Mik+PjJdPWJlPUErcnR8MCxMZT1XZSsoKE9lPUErMXwwKTw8Mil8MCxjPXFlKyhBPDwzKXwwLGI9MHxhWyhNPVdlKyhBPDwyKXwwKT4+Ml07ISgoMHxiKT49KDB8KEE9MHxhW0xlPj4yXSkpKTsp''@;'; put 'put ''KDB8YVsodz1WZSsoKEE9MHxhW2F0KyhiPDwyKT4+Ml0pPDwyKXwwKT4+Ml0pIT0oMHxiZSkmJihhW3c+PjJdPWJlLGFbcGUrKG08PDIpPj4yXT1BLF9bKEc9Z2UrKG08PDMpfDApPj4zXT0uNSooK19bcWUrKEE8PDMpPj4zXSsgK19bYz4+M10pLF9bRz4+M109K19bSGUrKGI8PDMpPj4zXSxt''@;'; put 'put ''PW0rMXwwKSxiPWIrMXwwO2ZvcihHPTB8YVtNPj4yXTshKCgwfEcpPj0oMHxBKSk7KXtmb3IoTT1XZSsoMSsoYj0wfGFbYXQrKEc8PDIpPj4yXSk8PDIpfDAsRD1xZSsoYjw8Myl8MCxSPUhlKyhHPDwzKXwwLGI9MHxhW1dlKyhiPDwyKT4+Ml07ISgoMHxiKT49KDB8YVtNPj4yXSkpOykoMHxh''@;'; put 'put ''Wyh3PVZlKyhhWyhBPWF0KyhiPDwyKXwwKT4+Ml08PDIpfDApPj4yXSkhPSgwfGJlKSYmKGFbdz4+Ml09YmUsYVtwZSsobTw8Mik+PjJdPWFbQT4+Ml0sX1sodz1nZSsobTw8Myl8MCk+PjNdPS41KigyKitfW0Q+PjNdKyArX1tjPj4zXSsgK19bcWUrKGFbQT4+Ml08PDMpPj4zXSksX1t3Pj4z''@;'; put 'put ''XT0rX1tIZSsoYjw8Myk+PjNdKyArX1tSPj4zXSxtPW0rMXwwKSxiPWIrMXwwO0c9RysxfDAsQT0wfGFbTGU+PjJdfWFbcSsoT2U8PDIpPj4yXT1tLEE9T2V9YVtwKzg+PjJdPW0sV2U9MHxLc2UoKSxhWyhhdD1sKzR8MCk+PjJdPVdlLGdvKDB8V2UsMHxmLDE2OCksYVsxNisoYXQ9MHxhW2F0''@;'; put 'put ''Pj4yXSk+PjJdPTAsYVthdCs0MD4+Ml09MSxfWyhXZT1hdCs5NnwwKT4+M109LjUqK19bV2U+PjNdLGFbYXQrODA+PjJdPTIwLEZ0KFZlKSxGdChxZSksUmEoUmUpfWVsc2UgT3gobCksbD0wO3JldHVybiAwfGx9ZnVuY3Rpb24gT3gobCl7dmFyIGM9MDswfChsfD0wKSYmKDB8KGM9MHxhW2w+''@;'; put 'put ''PjJdKSYmUmEoYyksMHwobD0wfGFbbCs0Pj4yXSkmJnBWKGwpKX1mdW5jdGlvbiBmUChsLGMsZixwLG0pe3ZhciBBLHc7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wLEE9bGUsbGU9bGUrMTZ8MCxhWyh3PUEpPj4yXT0wLGZ1bmN0aW9uICR2ZShsLGMsZixwLG0sQSx3KXtsfD0wLGN8PTAsZnw9''@;'; put 'put ''MCxtfD0wLEF8PTAsd3w9MDt2YXIgSnIsTHIsbDAsVmksT2ksbG8sVGEsWmEseGksRGwsb3MsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTAsV2U9MCxhdD0wLFN0PTAsa3Q9MCxzdD0wLEV0PTAsWnQ9''@;'; put 'put ''MCxjdD0wLGJ0PTAsYW49MCxTbj0wLEhuPTAsdXI9MCxIcj0wLEVyPTAsZnI9MCxEcj0wLFJvPTAsZ2E9MCxvbD0wLEwwPTAseGE9MDtpZihvcz1sZSxsZT1sZSszMnwwLFRhPW9zKzIwfDAsWmE9b3MrMTZ8MCx4aT1vcysxMnwwLERsPW9zKzh8MCxKcj1vcyxwZT0rX1socHw9MCk+PjNdLFI9''@;'; put 'put ''K19bKEc9cCsyNHwwKT4+M10sRD0rX1socT1wKzMyfDApPj4zXSxMcj0rX1twKzcyPj4zXSxsMD0wfGFbcCs4MD4+Ml0sVmk9K19bcCs4OD4+M10sTGU9K19bcCs5Nj4+M10sT2k9MHxhW3ArMTA0Pj4yXSxhWyhsbz1vcysyNHwwKT4+Ml09MCxhW1RhPj4yXT0xMCxhW1phPj4yXT0wLGFbeGk+''@;'; put 'put ''PjJdPTAsYVtEbD4+Ml09MCxfW0pyPj4zXT0wLCEoMD09KDB8Yyl8KDB8bDApPDF8fChSbz0wfGFbYz4+Ml0sKDB8bCk8MXwoMHwoTT0wfGFbYys0Pj4yXSkpPDEpKSl7aWYoKDB8TSk8KDB8YVtwKzUyPj4yXSk/KGdlPTAsYj0wLGs9MCk6KGs9MHxRbig4MCpsfDApLGFbWmE+PjJdPWssYVt4''@;'; put 'put ''aT4+Ml09MHxRbig4MCksYVtEbD4+Ml09MHxRbig4MCksZ2U9MSxiPWspLGFbdz4+Ml09MCwoMHxSbyk9PSgwfE0pKXt1cj0wfGFoKGMsMSksSHI9MHxhW3VyKzIwPj4yXSxFcj0wfGFbdXIrMjQ+PjJdLGZyPTB8YVtmKzIwPj4yXSxEcj0wfGFbZisyND4+Ml0sSG49MHxhW2YrMjg+PjJdO2U6''@;'; put 'put ''ZG97aWYoMHxhW3ArMTY+PjJdKWZvcihydygwfGFbcCsxMDg+PjJdKSxrPTB8QXIoUm8sbCksYj0wOzspe2lmKCgwfGIpPj0oMHxrKSlicmVhayBlO19bQSsoYjw8Myk+PjNdPStCaCgpLGI9YisxfDB9fXdoaWxlKDApO1I8MCYmKFI9K0xEKHVyLGwsQSksX1tHPj4zXT1SKSxEPDAmJihfW3E+''@;'; put 'put ''PjNdPS4yLEQ9LjIpLHBlPj0wJiYoX1twPj4zXT0tMSxwZT0tMSksU249K3FsKCtSLCsoYW49MS1wZSkpLEV0PStxbCgrRCwuMzMzMzMzMzMzMzMzMzMzMyooMi1wZSkpL1IsWnQ9MHxRbihjdD1sPDwzKSxidD0wfFFuKGN0PTB8QXIoUm8sY3QpKSxhdD0wIT0oMHxnZSksU3Q9cCsxMTZ8MCxr''@;'; put 'put ''dD0uMipFdCxzdD1wKzY0fDAscnQ9LTE9PXBlLFdlPTAhPSgwfG0pLGI9MCxWZT0wLHFlPTA7ZTpmb3IoOzspe1ZlPVZlKzF8MCxnbygwfGJ0LDB8QSwwfGN0KSxhdCYmKGI9MHxZayhsLFJvLDEwLEEsMD09KDB8YVtTdD4+Ml0pPzA6bSkpLGdlPTAsUj0wO3Q6Zm9yKDsoMHxnZSk8KDB8Um8p''@;'; put 'put ''Oyl7Zm9yKGs9MDshKCgwfGspPj0oMHxsKSk7KV9bWnQrKGs8PDMpPj4zXT0wLGs9aysxfDA7Zm9yKGY9SHIrKChSZT1nZSsxfDApPDwyKXwwLEhlPTB8QXIoZ2UsbCksTT0wfGFbSHIrKGdlPDwyKT4+Ml07ISgoMHxNKT49KDB8YVtmPj4yXSkpOyl7az0wfGFbKEc9RXIrKE08PDIpfDApPj4y''@;'; put 'put ''XTtuOmRve2lmKCgwfGspIT0oMHxnZSkpZm9yKEQ9K19jKEEsbCxnZSxrKSpFdCxrPTA7Oyl7aWYoKDB8ayk+PSgwfGwpKWJyZWFrIG47cGU9RCooK19bQSsoaytIZTw8Myk+PjNdLStfW0ErKCgwfEFyKDB8YVtHPj4yXSxsKSkrazw8Myk+PjNdKSxfWyhPZT1adCsoazw8Myl8MCk+PjNdPStf''@;'; put 'put ''W09lPj4zXS1wZSxrPWsrMXwwfX13aGlsZSgwKTtNPU0rMXwwfWZvcihHPWZyKyhSZTw8Mil8MCxmPTB8YVtmcisoZ2U8PDIpPj4yXTshKCgwfGYpPj0oMHxhW0c+PjJdKSk7KXtrPTB8YVsocT1EcisoZjw8Mil8MCk+PjJdO246ZG97aWYoKDB8aykhPSgwfGdlKSlmb3IoRD0rZHUoQSxsLGdl''@;'; put 'put ''LGspLE09SG4rKGY8PDMpfDAscGU9MS9ELGs9MDs7KXtpZigoMHxrKT49KDB8bCkpYnJlYWsgbjtvbD0ob2w9RC0oTDA9K19bTT4+M10pKSpvbCprdCooK19bQSsoaytIZTw8Myk+PjNdLStfW0ErKCgwfEFyKDB8YVtxPj4yXSxsKSkrazw8Myk+PjNdKSpwZSxfWyhPZT1adCsoazw8Myl8MCk+''@;'; put 'put ''PjNdPShEPEwwP29sOi1vbCkrICtfW09lPj4zXSxrPWsrMXwwfX13aGlsZSgwKTtmPWYrMXwwfW46ZG97aWYoYXQpe2lmKG9MKGIsK19bc3Q+PjNdLEErKEhlPDwzKXwwLGdlLGxvLFRhLFphLHhpLERsLEpyLHcpLGY9MHxhW2xvPj4yXSwwfGFbdz4+Ml0pYnJlYWsgZTtmb3IoRz0wfGFbRGw+''@;'; put 'put ''PjJdLHE9MHxhW3hpPj4yXSxnZT0wfGFbWmE+PjJdLGs9MDs7KXtpZigoMHxrKT49KDB8Zikpe0Q9MCxrPTA7YnJlYWsgbn1mb3IoTDA9KEwwPStfW0crKGs8PDMpPj4zXSk+MWUtMTU/TDA6MWUtMTUsYmU9cSsoazw8Myl8MCxPZT0wfEFyKGssbCksRD0rcWwoK0wwLCthbiksRD0xLyhydD9M''@;'; put 'put ''MCpMMDpEKSxNPTA7ISgoMHxNKT49KDB8bCkpOylfWyh4YT1adCsoTTw8Myl8MCk+PjNdPStfW2JlPj4zXSpTbiooK19bQSsoTStIZTw8Myk+PjNdLStfW2dlKyhNK09lPDwzKT4+M10pKkQrICtfW3hhPj4zXSxNPU0rMXwwO2s9aysxfDB9fWVsc2UgaWYoV2UmMCE9KDB8YVtTdD4+Ml0pKWZv''@;'; put 'put ''cihrPTA7Oyl7aWYoKDB8ayk9PSgwfFJvKSl7RD0wLGs9MDticmVhayBufXI6ZG97aWYoKDB8aykhPSgwfGdlKSlmb3IoTDA9K2R1KEEsbCxnZSxrKSxmPW0rKGs8PDMpfDAsRz0wfEFyKGssbCksRD0rcWwoK0wwLCthbiksRD0xLyhydD9MMCpMMDpEKSxNPTA7Oyl7aWYoKDB8TSk+PSgwfGwp''@;'; put 'put ''KWJyZWFrIHI7X1soT2U9WnQrKE08PDMpfDApPj4zXT0rX1tmPj4zXSpTbiooK19bQSsoTStIZTw8Myk+PjNdLStfW0ErKE0rRzw8Myk+PjNdKSpEKyArX1tPZT4+M10sTT1NKzF8MH19d2hpbGUoMCk7az1rKzF8MH1lbHNlIGZvcihrPTA7Oyl7aWYoKDB8ayk9PSgwfFJvKSl7RD0wLGs9MDti''@;'; put 'put ''cmVhayBufXI6ZG97aWYoKDB8aykhPSgwfGdlKSlmb3IoTDA9K2R1KEEsbCxnZSxrKSxmPTB8QXIoayxsKSxEPStxbCgrTDAsK2FuKSxEPTEvKHJ0P0wwKkwwOkQpLE09MDs7KXtpZigoMHxNKT49KDB8bCkpYnJlYWsgcjtfWyhPZT1adCsoTTw8Myl8MCk+PjNdPSgrX1tBKyhNK0hlPDwzKT4+''@;'; put 'put ''M10tK19bQSsoTStmPDwzKT4+M10pKlNuKkQrICtfW09lPj4zXSxNPU0rMXwwfX13aGlsZSgwKTtrPWsrMXwwfX13aGlsZSgwKTtmb3IoOyEoKDB8ayk+PSgwfGwpKTspRD0oTDA9K19bWnQrKGs8PDMpPj4zXSkqTDArRCxrPWsrMXwwO1I9KEQ9K0QwKCtEKSkrUjtuOmRve2lmKEQ+MClmb3Io''@;'; put 'put ''RD0xL0Qsaz0wOzspe2lmKCgwfGspPj0oMHxsKSl7az0wO2JyZWFrIG59X1soeGE9WnQrKGs8PDMpfDApPj4zXT0rX1t4YT4+M10qRCxrPWsrMXwwfWVsc2Ugaz0wfXdoaWxlKDApO2Zvcig7Oyl7aWYoKDB8ayk+PSgwfGwpKXtnZT1SZTtjb250aW51ZSB0fV9bKHhhPUErKGsrSGU8PDMpfDAp''@;'; put 'put ''Pj4zXT0rX1t4YT4+M10rICtfW1p0KyhrPDwzKT4+M10qTGUsaz1rKzF8MH19aWYoMHxiJiZldihiKSwhKCgwfFZlKTwoMHxsMCkmKExlPStNayhPaSxMZSxSLHFlLFZpKSk+THIpKXtnYT03MDticmVha31xZT1SfTcwPT0oMHxnYSkmJjB8YVtwKzExMj4+Ml0mJkVrKGwsdXIsQSksRnQoYnQp''@;'; put 'put ''LCgwfHVyKSE9KDB8YykmJlJhKHVyKSxGdChadCksaz1iPTB8YVtaYT4+Ml19ZWxzZSBhW3c+PjJdPS0xMDA7MHxrJiZGdChiKSwwfChiPTB8YVt4aT4+Ml0pJiZGdChiKSwwfChiPTB8YVtEbD4+Ml0pJiZGdChiKX1sZT1vc30ocCxjLDB8YVtsPj4yXSwwfGFbbCs0Pj4yXSxmLG0sdyksMHxh''@;'; put 'put ''W3c+PjJdP1ByKDk2MTg0LDk1ODMxLDEyNjIsOTYxOTApOmxlPUF9ZnVuY3Rpb24gUngobCxjLGYscCxtLEEpe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgdz0wLGI9MDthWyhBfD0wKT4+Ml09MCxBPTB8YVtmKzEyMD4+Ml07ZTpkb3tzd2l0Y2goMHxBKXtjYXNlIDU6Y2FzZSA2Oigw''@;'; put 'put ''fGFbYz4+Ml0pPjImJihVMShjPTB8RHgoYyxsLDAsbSw2IT0oMHxBKSYxKSxsLG0pLFpfKGMpKTticmVhaztjYXNlIDQ6Zm9yKEE9MDs7KXtpZigxPT0oMHxBKSlicmVhayBlO2ZQKGI9MHxMeChjLGwsZixtKSxjLHAsbCxtKSxPeChiKSxBPUErMXwwfWNhc2UgMTpmPTAsdz02O2JyZWFrO2Nh''@;'; put 'put ''c2UgMjpmPTEsdz02O2JyZWFrO2Nhc2UgMzpmPTIsdz02fX13aGlsZSgwKTtlOmRve2lmKDY9PSgwfHcpKWZvcihBPTA7Oyl7aWYoMT09KDB8QSkpYnJlYWsgZTt6bShiPTB8TXgoYyxsLC4wNSxtLGYpLGwsbSw1MCwuMDAxKSxRNChiKSxBPUErMXwwfX13aGlsZSgwKX1mdW5jdGlvbiBtUChs''@;'; put 'put ''LGMsZixwLG0sQSx3LGIsayl7bHw9MCxjfD0wLHB8PTAsbXw9MCxBfD0wLHc9K3csYnw9MCxrfD0wO3ZhciBHLE09MCxEPTAsUj0wLHE9MCxwZT0wO2ZvcihHPTB8UW4ocT0oZnw9MCk8PDMpLHE9MHxRbihxKSxEPTAsUj0wOygwfEQpPCgwfHApOyl7Zm9yKGs9MDshKCgwfGspPj0oMHxmKSk7''@;'; put 'put ''KXBlPSgwfEFyKGsscCkpK0R8MCxfW0crKGs8PDMpPj4zXT0rX1ttKyhwZTw8Myk+PjNdLF9bcSsoazw8Myk+PjNdPStfW0ErKHBlPDwzKT4+M10saz1rKzF8MDtmb3IoTT0rTmQobCxjLGYsRyxxLHcsYiksaz0wOyEoKDB8ayk+PSgwfGYpKTspX1tBKygoMHxBcihrLHApKStEPDwzKT4+M109''@;'; put 'put ''K19bRysoazw8Myk+PjNdLGs9aysxfDA7RD1EKzF8MCxSPU0rUn1yZXR1cm4gRnQoRyksRnQocSksK1J9ZnVuY3Rpb24gTmQobCxjLGYscCxtLEEsdyl7cHw9MCxtfD0wLEE9K0Esd3w9MDt2YXIgRyxwZSxnZSxiZSxPZSxiPTAsaz0wLE09MCxEPTAsUj0wLHE9MCxMZT0wLFJlPTA7Zm9yKGJl''@;'; put 'put ''PTB8YVs0KyhsfD0wKT4+Ml0scGU9MHxhWzQrKGN8PTApPj4yXSxiPTB8UW4oZ2U9KGZ8PTApPDwzKSxNPTB8UW4oZ2UpLExlPTB8UW4oZ2UpLEQ9MHxRbihnZSksUj0wfGZ1bmN0aW9uIF94KGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wLG09MDtmb3IocD0wOyEoKDB8cCk+PSgwfGwp''@;'; put 'put ''KTspX1sobT1mKyhwPDwzKXwwKT4+M109K19bYysocDw8Myk+PjNdLStfW20+PjNdLHA9cCsxfDA7cmV0dXJuIDB8Zn0oZixtLE09MHxtaVs2MyZiZV0obCxwLE0pKSxxPSsoMHxmKSxHPShPZT0rRDAoKyAreTUoZixSLFIpKS9xKSpBLHE9MS9xLFI9MCxtPUxlLGs9MSxBPU9lO0E+RyYoMHxS''@;'; put 'put ''KTwoMHx3KTspQT0reTUoZixNLGI9MHxtaVs2MyZwZV0oYyxNLGIpKSwoMHxSKT4wP0N4KGYsYixtLEEvayk6Z28oMHxtLDB8YiwwfGdlKSxQXyhmLHAsbSxrPUEvK3k1KGYsbSxSZT0wfG1pWzYzJmJlXShsLG0sRCkpKSxMZT0wfFBfKGYsTSxSZSwtayksUj1SKzF8MCxrPUEsRD1SZSxBPStE''@;'; put 'put ''MCgrICt5NShmLExlLExlKSkqcTtyZXR1cm4gRnQoYiksRnQoTSksRnQobSksRnQoRCksK0F9ZnVuY3Rpb24gUjMobCxjLGYscCxtLEEsdyxiKXt2YXIgaztzd2l0Y2goY3w9MCxmfD0wLHB8PTAsbT0rbSxBfD0wLHd8PTAsaz0wfGFbKGx8PTApPj4yXSxhWyhifD0wKT4+Ml09MCwwfHcpe2Nh''@;'; put 'put ''c2UgMDp3PTB8ZnVuY3Rpb24gYjUobCl7dmFyIGM7cmV0dXJuIGx8PTAsYz0wfFFuKDgpLGFbYz4+Ml09bCxhW2MrND4+Ml09MjYsMHxjfShsKSxiPTB8ZnVuY3Rpb24gZ1AobCl7dmFyIHcsayxNLEQsUixjPTAsZj0wLHA9MCxtPTAsQT0wLGI9MDt3PTB8YVsobHw9MCk+PjJdLGs9MHxhW2wr''@;'; put 'put ''MjA+PjJdLE09MHxhW2wrMjQ+PjJdLEQ9MHxhW2wrMjg+PjJdLFI9MHxRbig4KSxmPTB8UW4oOCsoYVtsPj4yXTw8Myl8MCksYVtSPj4yXT1mLF9bZj4+M109KygwfHcpLGY9Zis4fDAsbD0wO2U6Zm9yKDshKCgwfGwpPj0oMHx3KSk7KWZvcihwPWYrKGw8PDMpfDAsX1twPj4zXT0xLG09bCsx''@;'; put 'put ''fDAsQT0wfGFbaysobTw8Mik+PjJdLGM9MHxhW2srKGw8PDIpPj4yXTs7KXtpZigoMHxjKT49KDB8QSkpe2w9bTtjb250aW51ZSBlfSgwfGwpPT0oMHxhW00rKGM8PDIpPj4yXSkmJigoYj0rX1tEKyhjPDwzKT4+M10pPj0wP2I6LWIpPjAmJihfW3A+PjNdPTEvYiksYz1jKzF8MH1yZXR1cm4g''@;'; put 'put ''YVtSKzQ+PjJdPTI3LDB8Un0obCksbT0rbVAodyxiLGssYyxmLHAsbSxBLDApLGZ1bmN0aW9uIGRQKGwpezB8KGx8PTApJiZGdChsKX0odyksZnVuY3Rpb24gSHgobCl7RnQoMHxhWyhsfD0wKT4+Ml0pLDB8bCYmRnQobCl9KGIpO2JyZWFrO2Nhc2UgMTooZnVuY3Rpb24gRmkobCxjLGYscCxt''@;'; put 'put ''LEEpe2N8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgZ2UsYmUsT2UsTGUsUmUsSGUsVmUscWUscnQsV2UsYXQsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wO2ZvcihhdD1sZSxsZT1sZSsxNnwwLFdlPWF0LHJ0PTB8UW4ocWU9KFZlPTB8YVs0KyhsfD0wKT4+Ml0pPDwz''@;'; put 'put ''KSxPZT0wfFFuKHFlKSxMZT0wfFFuKHFlKSxSZT0wfGFbbCsyMD4+Ml0sSGU9MHxhW2wrMjQ+PjJdLGdlPTB8YVtsKzI4Pj4yXSxiZT0wfGFbMTU3MTJdLHBlPTA7KDB8cGUpPCgwfGMpOyl7Zm9yKEE9MDs7KXtpZigoMHxBKT49KDB8VmUpKXtsPTA7YnJlYWt9cT0oMHxBcihBLGMpKStwZXww''@;'; put 'put ''LF9bcnQrKEE8PDMpPj4zXT0rX1tmKyhxPDwzKT4+M10sX1tMZSsoQTw8Myk+PjNdPStfW3ArKHE8PDMpPj4zXSxBPUErMXwwfWZvcig7Oyl7aWYoISgoMHxsKTwoMHxtKSkpe0E9MDticmVha31mb3IoRD0wOyEoKDB8RCk+PSgwfFZlKSk7KXtmb3IocT0wfGFbUmUrKChHPUQrMXwwKTw8Mik+''@;'; put 'put ''PjJdLE09Uj0wfGFbUmUrKEQ8PDIpPj4yXSxiPTAsdz0wOyEoKDB8TSk+PSgwfHEpKTspaz0rX1tnZSsoTTw8Myk+PjNdLCgwfChBPTB8YVtIZSsoTTw8Mik+PjJdKSk9PSgwfEQpP3c9azpiPStfW3J0KyhBPDwzKT4+M10qaytiLE09TSsxfDA7MD09YiYmKGFbV2U+PjJdPXEtUixUMChiZSw5''@;'; put 'put ''NjIxMixXZSkpLF9bT2UrKEQ8PDMpPj4zXT0oK19bTGUrKEQ8PDMpPj4zXS1iKS93LEQ9R31nbygwfHJ0LDB8T2UsMHxxZSksbD1sKzF8MH1mb3IoOyEoKDB8QSk+PSgwfFZlKSk7KV9bcCsoKDB8QXIoQSxjKSkrcGU8PDMpPj4zXT0rX1tydCsoQTw8Myk+PjNdLEE9QSsxfDA7cGU9cGUrMXww''@;'; put 'put ''fUZ0KHJ0KSxGdChPZSksRnQoTGUpLGxlPWF0fSkobCxjLGYscCxBLDApLG09MDticmVhaztkZWZhdWx0Om09MH1yZXR1cm4rbX1mdW5jdGlvbiB2UChsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIG0sQSx3LGssTSxELFIscD0wLGI9MCxHPTA7Zm9yKFI9bGUsbGU9bGUrMzJ8MCxNPVIrMjB8''@;'; put 'put ''MCxtPVIrMTZ8MCxBPVIrMTJ8MCx3PVIrOHwwLF9bKGs9Uik+PjNdPTEsRD0wfFFuKGI9bDw8MyksYj0wfFFuKGIpLGM9MDshKCgwfGMpPj0oMHxsKSk7KV9bRCsoYzw8Myk+PjNdPStfW2YrKChwPWM8PDEpPDwzKT4+M10sX1tiKyhjPDwzKT4+M109K19bZisoKDF8cCk8PDMpPj4zXSxjPWMr''@;'; put 'put ''MXwwO2ZvcihhW00+PjJdPWMsKDB8bCk+Mj9mPTB8ZnVuY3Rpb24gYTllKGwsYyxmLHApe3JldHVybiBmfD0wLHB8PTAscD1sZSxsZT1sZSsxNnwwLGFbKGY9cCk+PjJdPTkzNjMxLCRyKDEsOTM3MDksZiksbGU9cCwwfSgwLDAsbCx3KTooYVt3Pj4yXT0wLGY9MCkscD0wfHVjKGwsbCwxLDEs''@;'; put 'put ''MiksYz0wO2FbTT4+Ml09YywhKCgwfGMpPj0oMHxhW3c+PjJdKSk7KWFbbT4+Ml09YVtmKygoRz1jPDwxKTw8Mik+PjJdLGFbQT4+Ml09YVtmKygoMXxHKTw8Mik+PjJdLE8zKHAsMSxtLEEsayksYz0xKygwfGFbTT4+Ml0pfDA7Zm9yKDI9PSgwfGwpJiYoYVttPj4yXT0wLGFbQT4+Ml09MSxP''@;'; put 'put ''MyhwLDEsbSxBLGspKSxjPTA7YVtNPj4yXT1jLCEoKDB8Yyk+PSgwfGwpKTspTzMocCwxLE0sTSxrKSxjPTErKDB8YVtNPj4yXSl8MDtyZXR1cm4gbD0wfGZqKHApLFJhKHApLEc9MHxhaChsLDApLFJhKGwpLEZ0KGYpLEZ0KEQpLEZ0KGIpLGxlPVIsMHxHfWZ1bmN0aW9uIE54KGwsYyxmKXts''@;'; put 'put ''fD0wLGN8PTAsZnw9MDt2YXIgQSxiLE0scD0wLG09MCx3PTAsaz0wO2ZvcihNPWxlLGxlPWxlKzE2fDAsQT1NKzh8MCxfWyh3PU0pPj4zXT0xLGI9MHxRbihrPWw8PDMpLGs9MHxRbihrKSxwPTA7ISgoMHxwKT49KDB8bCkpOyltPTB8QXIocCxjKSxfW2IrKHA8PDMpPj4zXT0rX1tmKyhtPDwz''@;'; put 'put ''KT4+M10sX1trKyhwPDwzKT4+M109K19bZisobSsxPDwzKT4+M10scD1wKzF8MDtmb3IoYVtBPj4yXT1wLHA9MHxmdW5jdGlvbiBsOWUobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIG09MDtlOmRve3N3aXRjaCgwfGYpe2Nhc2UgMjpwPTB8UW4oMTYpLG09MHxRbigyNCksYVttKzg+PjJd''@;'; put 'put ''PTAsYVttKzQ+PjJdPXAsYVttPj4yXT0yLGFbcD4+Ml09MCxhW3ArND4+Ml09MSxhW20rMTY+PjJdPWY9cCs4fDAsYVttKzIwPj4yXT0wLGFbbSsxMj4+Ml09MixhW2Y+PjJdPTEsYVtwKzEyPj4yXT0wO2JyZWFrO2Nhc2UgMTpwPTB8UW4oNCksbT0wfFFuKDEyKSxhW20rOD4+Ml09MCxhW20r''@;'; put 'put ''ND4+Ml09cCxhW20+PjJdPTEsYVtwPj4yXT0wO2JyZWFrO2RlZmF1bHQ6aWYobzllKDAsMCwwKSxsPSgwfGYpPjAscCl7aWYoIWwpe209MDticmVhayBlfWJsKCl9ZWxzZXtpZighbCl7bT0wO2JyZWFrIGV9YmwoKX19fXdoaWxlKDApO3JldHVybiAwfG19KGIsMCxsLDApLG09MHx1YyhsLGws''@;'; put 'put ''MSwxLDIpLGM9MDs7KXtpZihhW0E+PjJdPWMsISgoMHxjKTwoMHxsKSkpe2M9MDticmVha31mb3IoZj0xOyEoKDB8Zik+PSgwfGFbcCsoMTIqY3wwKT4+Ml0pKTspTzMobSwxLEEsKDB8YVtwKygxMipjfDApKzQ+PjJdKSsoZjw8Mil8MCx3KSxmPWYrMXwwLGM9MHxhW0E+PjJdO2M9YysxfDB9''@;'; put 'put ''Zm9yKDthW0E+PjJdPWMsISgoMHxjKT49KDB8bCkpOylPMyhtLDEsQSxBLHcpLGM9MSsoMHxhW0E+PjJdKXwwO3JldHVybiB3PTB8YWgoMHxmaihtKSwwKSxSYShtKSxGdChiKSxGdChrKSxmdW5jdGlvbiBzOWUobCl7dmFyIGM9MDswfChsfD0wKSYmKDB8KGM9MHxhW2wrND4+Ml0pJiZGdChj''@;'; put 'put ''KSwwfChjPTB8YVtsKzg+PjJdKSYmRnQoYyksRnQobCkpfShwKSxsZT1NLDB8d31mdW5jdGlvbiBaeChsLGMsZil7Znw9MDt2YXIgbSxwPTAsQT0wLHc9MCxiPTA7Zm9yKEE9MHxhWyhtPShsfD0wKSsoMjAqKGN8PTApfDApfDApPj4yXSx3PTB8YVtsKygyMCpjfDApKzQ+PjJdLHA9MDs7KXtp''@;'; put 'put ''ZigoMHxwKT49KDB8QSkpe2I9NDticmVha31pZigoMHxhW3crKHA8PDIpPj4yXSk9PSgwfGYpKWJyZWFrO3A9cCsxfDB9ND09KDB8YikmJihhW20+PjJdPUErMSxhW3crKEE8PDIpPj4yXT1mLHc9MHxhW2wrKDIwKmZ8MCkrND4+Ml0sYVsoQT1sKygyMCpmfDApfDApPj4yXT0xKyhiPTB8YVtB''@;'; put 'put ''Pj4yXSksYVt3KyhiPDwyKT4+Ml09YywwfGFbbCs4Pj4yXSkmJihqblsoYj0wfGFbbCsoMjAqY3wwKSs4Pj4yXSk+PjJdPStqbltiPj4yXS0xLGpuWyhiPTB8YVtsKygyMCpmfDApKzg+PjJdKT4+Ml09K2puW2I+PjJdLTEpfWZ1bmN0aW9uIHlQKGwsYyl7Y3w9MDt2YXIgZixwPTA7cmV0dXJu''@;'; put 'put ''IDB8YVsoZj00KyhsfD0wKXwwKT4+Ml0/KGFbYz4+Ml09YVsocD0wfGFbbD4+Ml0pPj4yXSxhW2MrND4+Ml09YVtwKzQ+PjJdLGFbYys4Pj4yXT1hW3ArOD4+Ml0sYVtjKzEyPj4yXT1hW3ArMTI+PjJdLGFbKGM9MHxhW2w+PjJdKT4+Ml09YVsocD1jKygoMHxhW2Y+PjJdKS0xPDw0KXwwKT4+''@;'; put 'put ''Ml0sYVtjKzQ+PjJdPWFbcCs0Pj4yXSxhW2MrOD4+Ml09YVtwKzg+PjJdLGFbYysxMj4+Ml09YVtwKzEyPj4yXSxhW2Y+PjJdPSgwfGFbZj4+Ml0pLTEsXzUobCwwKSxsPTEpOmw9MCwwfGx9ZnVuY3Rpb24gengobCxjKXtjfD0wO3ZhciBNLEQsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0w''@;'; put 'put ''O2ZvcihEPWxlLGxlPWxlKzE2fDAsTT1ELCgwfChBPTB8YVsoYj00KyhsfD0wKXwwKT4+Ml0pKT09KDB8YVsoZj1sKzh8MCk+PjJdKT8oYVtmPj4yXT1BPDwxLGY9MHxVYSgwfGFbbD4+Ml0sQTw8NSksYVtsPj4yXT1mLGs9bCx3PTB8YVtiPj4yXSk6KGs9bCx3PUEsZj0wfGFbbD4+Ml0pLGFb''@;'; put 'put ''Yj4+Ml09dysxLGFbKGI9ZisoQTw8NCl8MCk+PjJdPWFbYz4+Ml0sYVtiKzQ+PjJdPWFbYys0Pj4yXSxhW2IrOD4+Ml09YVtjKzg+PjJdLGFbYisxMj4+Ml09YVtjKzEyPj4yXTshKCgwfEEpPD0wKTspe2lmKCEoKHA9K19bKGY9MHxhW2s+PjJdKSsoQTw8NCkrOD4+M10pPChtPStfW2YrKChs''@;'; put 'put ''PUE+Pj4xKTw8NCkrOD4+M10pKSl7aWYocCE9bXx8ISgxJigwfFQxKCkpKSlicmVhaztmPTB8YVtrPj4yXX1hW00+PjJdPWFbKGI9ZisoQTw8NCl8MCk+PjJdLGFbTSs0Pj4yXT1hW2IrND4+Ml0sYVtNKzg+PjJdPWFbYis4Pj4yXSxhW00rMTI+PjJdPWFbYisxMj4+Ml0sYVtiPj4yXT1hWyhj''@;'; put 'put ''PWYrKGw8PDQpfDApPj4yXSxhW2IrND4+Ml09YVtjKzQ+PjJdLGFbYis4Pj4yXT1hW2MrOD4+Ml0sYVtiKzEyPj4yXT1hW2MrMTI+PjJdLGFbKGI9KDB8YVtrPj4yXSkrKGw8PDQpfDApPj4yXT1hW00+PjJdLGFbYis0Pj4yXT1hW00rND4+Ml0sYVtiKzg+PjJdPWFbTSs4Pj4yXSxhW2IrMTI+''@;'; put 'put ''PjJdPWFbTSsxMj4+Ml0sQT1sfWxlPUR9ZnVuY3Rpb24gXzUobCxjKXtjfD0wO3ZhciB3LGIsTSxmPTAscD0wLG09MCxBPTAsaz0wLEQ9MDtmb3IoTT1sZSxsZT1sZSsxNnwwLHc9TSxiPTQrKGx8PTApfDA7Oyl7QT0xfChmPWM8PDEpLCgwfGYpPCgwfGFbYj4+Ml0pJiYoKHA9K19bKEQ9MHxh''@;'; put 'put ''W2w+PjJdKSsoZjw8NCkrOD4+M10pPChtPStfW0QrKGM8PDQpKzg+PjNdKXx8cD09bSYmMCE9KDEmKDB8VDEoKSl8MCkpfHwoaz02KSw2PT0oMHxrKSYmKGs9MCxmPWMpO2Rve2lmKCgwfEEpPCgwfGFbYj4+Ml0pKXtpZighKChwPStfWyhEPTB8YVtsPj4yXSkrKEE8PDQpKzg+PjNdKTwobT0r''@;'; put 'put ''X1tEKyhmPDw0KSs4Pj4zXSl8fHA9PW0mJjEmKDB8VDEoKSkpKWJyZWFrO2Y9QX19d2hpbGUoMCk7aWYoKDB8Zik9PSgwfGMpKWJyZWFrO2Fbdz4+Ml09YVsoRD0oQT0wfGFbbD4+Ml0pKyhmPDw0KXwwKT4+Ml0sYVt3KzQ+PjJdPWFbRCs0Pj4yXSxhW3crOD4+Ml09YVtEKzg+PjJdLGFbdysx''@;'; put 'put ''Mj4+Ml09YVtEKzEyPj4yXSxhW0Q+PjJdPWFbKEE9QSsoYzw8NCl8MCk+PjJdLGFbRCs0Pj4yXT1hW0ErND4+Ml0sYVtEKzg+PjJdPWFbQSs4Pj4yXSxhW0QrMTI+PjJdPWFbQSsxMj4+Ml0sYVsoRD0oMHxhW2w+PjJdKSsoYzw8NCl8MCk+PjJdPWFbdz4+Ml0sYVtEKzQ+PjJdPWFbdys0Pj4y''@;'; put 'put ''XSxhW0QrOD4+Ml09YVt3Kzg+PjJdLGFbRCsxMj4+Ml09YVt3KzEyPj4yXSxjPWZ9bGU9TX1mdW5jdGlvbiBHeChsLGMsZixwLG0sQSx3LGIpe2x8PTAsY3w9MCxmPStmLHA9K3AsQXw9MCx3fD0wLGJ8PTA7dmFyIE0saz0wLEQ9MCxSPTA7aWYoKE09MCE9KDB8KG18PTApKSk/RD0zOjB8QjJl''@;'; put 'put ''KGwsYyxtPTB8UW4oYzw8MyksYyk/KGw9MSxEPTE3KTpEPTMsMz09KDB8RCkpe2ZvcihrPTB8dnIoYzw8MiksYVtBPj4yXT1rLGw9MDshKCgwfGwpPj0oMHxjKSk7KWFbaysobDw8Mik+PjJdPWwsbD1sKzF8MDtmb3IoUTcobSxrLDAsbD1jKy0xfDApLHA9KHA9KCtfW20rKGFbaysobDw8Mik+''@;'; put 'put ''PjJdPDwzKT4+M10tKFI9K19bbSsoYVtrPj4yXTw8Myk+PjNdKSkqcC8rKDB8bCkpPGY/ZjpwLGw9MCxBPTEsZj1SOyEoKDB8QSk+PSgwfGMpKTspbD1sKygoUj0rX1ttKyhhW2srKEE8PDIpPj4yXTw8Myk+PjNdKS1mPnAmMSl8MCxBPUErMXwwLGY9UjthW2I+PjJdPWw7ZTpkb3tpZihsKWZv''@;'; put 'put ''cihiPTB8UW4obDw8MiksYVt3Pj4yXT1iLGw9MCxBPTE7Oyl7aWYoKDB8QSk+PSgwfGMpKWJyZWFrIGU7K19bbSsoYVtrKyhBPDwyKT4+Ml08PDMpPj4zXS0rX1ttKyhhW2srKEErLTE8PDIpPj4yXTw8Myk+PjNdPnAmJihhW2IrKGw8PDIpPj4yXT1BLGw9bCsxfDApLEE9QSsxfDB9ZWxzZSBr''@;'; put 'put ''PTB8UW4oNCksYVt3Pj4yXT1rLGFbaz4+Ml09Y313aGlsZSgwKTtNP2w9MDoobD0wLEQ9MTcpfXJldHVybiAxNz09KDB8RCkmJkZ0KG0pLDB8bH1mdW5jdGlvbiBXeChsLGMpe2x8PTAsY3w9MDt2YXIgUixHLHEsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAscGU9MDtmb3Io''@;'; put 'put ''MHwoZj0wfGFbNDY5MzBdKSYmQjcoZiksYVs0NjkzMF09MHxjZyhjLGMsMCksMHwoZj0wfGFbNDY5MzFdKSYmRnQoZiksYVs0NjkzMV09MHx2cihjPDwyKSwwfChmPTB8YVs0NjkzMl0pJiZGdChmKSxSPTB8dnIoYzw8MyksYVs0NjkzMl09UixHPTB8YVs0NjkzMF0scT0wfGFbNDY5MzFdLHc9''@;'; put 'put ''MDs7KXtpZigoMHx3KT49KDB8Yykpe3A9MTA7YnJlYWt9Zm9yKHA9bCsodzw8Mil8MCxBPUcrKHc8PDIpfDAsbT0wLGY9MDsoMHxmKSE9KDB8Yyk7KV9bKDB8YVtBPj4yXSkrKGY8PDMpPj4zXT1iPStfWygwfGFbcD4+Ml0pKyhmPDwzKT4+M10sbT1tPChiPStlbygrYikpP2I6bSxmPWYrMXww''@;'; put 'put ''O2lmKDA9PW0pe3A9MTU7YnJlYWt9X1tSKyh3PDwzKT4+M109MS9tLGFbcSsodzw8Mik+PjJdPXcsdz13KzF8MH1lOmRve2lmKDEwPT0oMHxwKSl7RD1jKy0xfDAsZj0wLE09MDt0OmZvcig7KDB8TSk8KDB8RCk7KXtmb3IocD1NLGs9ZixtPTA7ISgoMHxwKT49KDB8YykpOyliPStlbygrICtf''@;'; put 'put ''WygwfGFbRysoKGw9MHxhW3ErKHA8PDIpPj4yXSk8PDIpPj4yXSkrKE08PDMpPj4zXSksdz0obD1tPChiKj0rX1tSKyhsPDwzKT4+M10pKT9wOmsscD1wKzF8MCxrPXcsbT1sP2I6bTtpZigwPT1tKXtmPTA7YnJlYWsgZX1mb3IoZj1xKyhNPDwyKXwwLCgwfGspIT0oMHxNKSYmKHc9MHxhW2Y+''@;'; put 'put ''PjJdLGFbZj4+Ml09YVsobD1xKyhrPDwyKXwwKT4+Ml0sYVtsPj4yXT13KSxtPTEvK19bKEE9MHxhW0crKGFbZj4+Ml08PDIpPj4yXSkrKE08PDMpPj4zXSxwPWw9TSsxfDA7Oyl7aWYoKDB8cCk+PSgwfGMpKXtmPWssTT1sO2NvbnRpbnVlIHR9X1soZj0odz0wfGFbRysoYVtxKyhwPDwyKT4+''@;'; put 'put ''Ml08PDIpPj4yXSkrKE08PDMpfDApPj4zXT1iPStfW2Y+PjNdKm07bjpkb3tpZigwIT1iKWZvcihmPWw7Oyl7aWYoKDB8Zik+PSgwfGMpKWJyZWFrIG47X1socGU9dysoZjw8Myl8MCk+PjNdPStfW3BlPj4zXS0rX1tBKyhmPDwzKT4+M10qYixmPWYrMXwwfX13aGlsZSgwKTtwPXArMXwwfX1m''@;'; put 'put ''PTAhPStfWygwfGFbRysoYVtxKyhEPDwyKT4+Ml08PDIpPj4yXSkrKEQ8PDMpPj4zXSYxfWVsc2UgMTU9PSgwfHApJiYoX1tSKyh3PDwzKT4+M109MCxmPTApfXdoaWxlKDApO3JldHVybiAwfGZ9ZnVuY3Rpb24gd1AobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBrLE0scD0wLG09MCxBPTAs''@;'; put 'put ''dz0wLGI9MDtmb3Ioaz0wfGFbNDY5MzBdLE09MHxhWzQ2OTMxXSxiPTA7Oyl7aWYoKDB8Yik+PSgwfGYpKXtwPWY7YnJlYWt9Zm9yKHc9aysoKEE9MHxhW00rKGI8PDIpPj4yXSk8PDIpfDAsbT0wLHA9MDsoMHxwKSE9KDB8Yik7KW09K19bbCsocDw8Myk+PjNdKitfWygwfGFbdz4+Ml0pKyhw''@;'; put 'put ''PDwzKT4+M10rbSxwPXArMXwwO19bbCsoYjw8Myk+PjNdPStfW2MrKEE8PDMpPj4zXS1tLGI9YisxfDB9Zm9yKDtjPXArLTF8MCwhKCgwfHApPD0wKTspe2ZvcihBPU0rKGM8PDIpfDAsbT0wOyEoKDB8cCk+PSgwfGYpKTspbT0rX1tsKyhwPDwzKT4+M10qK19bKDB8YVtrKyhhW0E+PjJdPDwy''@;'; put 'put ''KT4+Ml0pKyhwPDwzKT4+M10rbSxwPXArMXwwO19bKHA9bCsoYzw8Myl8MCk+PjNdPSgrX1twPj4zXS1tKS8rX1soMHxhW2srKGFbQT4+Ml08PDIpPj4yXSkrKGM8PDMpPj4zXSxwPWN9fWZ1bmN0aW9uIEdfKGwpe3ZhciBjO3JldHVybiBsfD0wLGM9MHxRbig4KSxhW2M+PjJdPWwsYVtjKzQ+''@;'; put 'put ''PjJdPTAsMHxjfWZ1bmN0aW9uIFdfKGwsYyl7Y3w9MDt2YXIgZj0wLHA9MDtpZigwfChsfD0wKSlkb3tmPWwsbD0wfGFbbCs0Pj4yXSwwfChwPTB8YVtmPj4yXSkmJkNvWzEyNyZjXShwKSxGdChmKX13aGlsZSgwIT0oMHxsKSl9ZnVuY3Rpb24ga0EobCxjKXtyZXR1cm4gbHw9MCxjPTB8R18o''@;'; put 'put ''Y3w9MCksYVtjKzQ+PjJdPWwsMHxjfWZ1bmN0aW9uIEx1KGwpe3JldHVybiAwfGFbKGx8PTApPj4yXX1mdW5jdGlvbiBHbShsKXtyZXR1cm4gMHxhWzQrKGx8PTApPj4yXX1mdW5jdGlvbiBZdChsKXt2YXIgYztyZXR1cm4gbHw9MCxjPTB8UW4oMTIpLGFbYz4+Ml09bCxhW2MrND4+Ml09MCxh''@;'; put 'put ''W2MrOD4+Ml09MCwwfGN9ZnVuY3Rpb24gamkobCxjKXtjfD0wO3ZhciBmPTAscD0wO2lmKDB8KGx8PTApKWRve2Y9bCxsPTB8YVtsKzQ+PjJdLDB8KHA9MHxhW2Y+PjJdKSYmQ29bMTI3JmNdKHApLEZ0KGYpfXdoaWxlKDAhPSgwfGwpKX1mdW5jdGlvbiBrZihsLGMsZil7Znw9MDt2YXIgcD0w''@;'; put 'put ''LG09MCxBPTA7MHwobHw9MCkmJihwPTB8YVtsKzQ+PjJdLG09MHxhW2wrOD4+Ml0sMHwoQT0wfGFbbD4+Ml0pJiZDb1sxMjcmKGN8PTApXShBKSxGdChsKSwwfHAmJihhW3ArOD4+Ml09bSksYVsoMHxtP20rNHwwOmYpPj4yXT1wKX1mdW5jdGlvbiBTQShsKXthWyhsfD0wKT4+Ml09MCxhW2wr''@;'; put 'put ''ND4+Ml09MH1mdW5jdGlvbiBZXyhsKXt2YXIgYztyZXR1cm4gbHw9MCxTQSgzNisoYz0wfHZyKDY0KSl8MCksYVtjKzg+PjJdPWwsMHxjfWZ1bmN0aW9uIFV4KGwpe3JldHVybiAwfEdvKDB8YVs4KyhsfD0wKT4+Ml0pfWZ1bmN0aW9uIFVfKGwsYyl7dmFyIGYscDtsfD0wLGFbNCsoY3w9MCk+''@;'; put 'put ''PjJdPTAsYVsoMD09KDB8KHA9MHxhWyhmPWwrNHwwKT4+Ml0pKT9sOnArNHwwKT4+Ml09YyxhW2Y+PjJdPWN9ZnVuY3Rpb24gUV8obCxjKXt2YXIgZjtjfD0wLChmPTB8YVsobHw9MCk+PjJdKT9hW2MrND4+Ml09ZjooYVtsPj4yXT1jLGw9bCs0fDApLGFbbD4+Ml09Y31mdW5jdGlvbiBReChs''@;'; put 'put ''LGMsZixwLG0pe2x8PTAsY3w9MCxwfD0wLG18PTA7dmFyIEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wO2ZvcihhWyhEPTgrKGZ8PTApfDApPj4yXT0xKyhNPTB8YVtEPj4yXSksYVsxNisoMHxhWzExMisoMHxhWyhEPWMrMTZ8MCk+PjJdKT4+Ml0pKzQ+PjJdPU0sYVsyNCsoMHxhWzExMisoMHxh''@;'; put 'put ''W0Q+PjJdKT4+Ml0pPj4yXT1NLE09MD09KDB8cCksaz0wfE1zKGwsYyk7azspeygwfChBPTB8YVsoMj09KDB8KHA9MyZhW2s+PjJdKSk/azprKy00OHwwKSs0MD4+Ml0pKT09KDB8Yyk/KHA9MHxhWygzPT0oMHxwKT9rOmsrNDh8MCkrNDA+PjJdLDB8YVsoQT0wfGFbMTIwKygwfGFbaysxNj4+''@;'; put 'put ''Ml0pPj4yXSk+PjJdfHwoYVtBPj4yXT0tMSkpOigwfGFbKHA9MHxhWzEyMCsoMHxhW2srMTY+PjJdKT4+Ml0pPj4yXXx8KGFbcD4+Ml09MSkscD1BKSxiPTB8YVsxNisodz0wfGFbMTEyKygwfGFbKEE9cCsxNnwwKT4+Ml0pPj4yXSkrND4+Ml07ZG97aWYoYikoMHxhWzgrKEE9MHxhWzExMiso''@;'; put 'put ''MHxhW0Q+PjJdKT4+Ml0pPj4yXSkhPSgwfHApJiYoYVsodz1BKzI0fDApPj4yXT0oMHwoQT0wfGFbdz4+Ml0pKTwoMHxiKT9BOmIpO2Vsc2UgaWYoYVt3Kzg+PjJdPWMsQ1AobSxrKSxReChsLHAsZiwwLG0pLGFbKGI9MjQrKDB8YVsxMTIrKDB8YVtEPj4yXSk+PjJdKXwwKT4+Ml09YVsyNCso''@;'; put 'put ''MHxhWzExMisoMHxhWygoMHxhW2I+PjJdKTwoMHxhWzI0KygwfGFbMTEyKygwfGFbQT4+Ml0pPj4yXSk+PjJdKT9jOnApKzE2Pj4yXSk+PjJdKT4+Ml0sKDB8YVsyNCsoMHxhWzExMisoMHxhW0E+PjJdKT4+Ml0pPj4yXSk+PSgwfGFbMTYrKDB8YVsxMTIrKDB8YVtEPj4yXSk+PjJdKSs0Pj4y''@;'; put 'put ''XSkpe3A9MDtkb3t3PTB8a1AobSksMHxhWzEyKygwfGFbMTEyKygwfGFbMTYrKEE9MHxhWygoMyZhW3c+PjJdfDApPT0oMHwoKEE9MT09KDB8YVthWzEyMCsoMHxhW3crMTY+PjJdKT4+Ml0+PjJdKSk/MjozKSk/dzp3Kyg0OCooQT8tMToxKXwwKXwwKSs0MD4+Ml0pPj4yXSk+PjJdKT4+Ml18''@;'; put 'put ''fChwfHwocD0wfEp4KGwsZikpLEpfKHAsQSkpfXdoaWxlKCgwfHcpIT0oMHxrKSk7aWYoMHxwKXtpZigwPT0oMHxhWzEyKygwfGFbMTEyKygwfGFbRD4+Ml0pPj4yXSk+PjJdKSYmKDB8VXgocCkpPjEmJkpfKHAsYyksIU0mJigwfGFbMTIrKDB8YVsxMTIrKDB8YVtEPj4yXSk+PjJdKT4+Ml0p''@;'; put 'put ''PT0oMHxwKSl7UV8oZixwKTticmVha31VXyhmLHApfX19d2hpbGUoMCk7az0wfFZzKGwsayxjKX0hTSYmMD09KDB8YVsxMisoMHxhWzExMisoMHxhW0Q+PjJdKT4+Ml0pPj4yXSkmJihKXyhEPTB8SngobCxmKSxjKSxRXyhmLEQpKX1mdW5jdGlvbiBDUChsLGMpe2FbNCsoMHxhWzEyMCsoMHxh''@;'; put 'put ''WzE2KyhjfD0wKT4+Ml0pPj4yXSk+PjJdPWFbKGx8PTApPj4yXSxhW2w+PjJdPWMsYVsoYz1sKzR8MCk+PjJdPTErKDB8YVtjPj4yXSl9ZnVuY3Rpb24ga1AobCl7dmFyIGMsZixwO3JldHVybihjPTB8YVsobHw9MCk+PjJdKXx8UHIoMTM4Mzk0LDk2MjU0LDY1LDk2MjY2KSwoMHwocD0wfGFb''@;'; put 'put ''KGY9bCs0fDApPj4yXSkpPjA/KGFbbD4+Ml09YVs0KygwfGFbMTIwKygwfGFbYysxNj4+Ml0pPj4yXSk+PjJdLGFbZj4+Ml09cCstMSwwfGMpOihQcig5NjI0NCw5NjI1NCw2MSw5NjI2NiksMCl9ZnVuY3Rpb24gSngobCxjKXtyZXR1cm4gMHxZXygwfGZ1bmN0aW9uIFNQKGwsYyl7bHw9MDt2''@;'; put 'put ''YXIgZixwLG0sQTtyZXR1cm4gZj1sZSxsZT1sZSsxNDR8MCxtPWYscD1mKzh8MCxhWyhBPTEyKyhjfD0wKXwwKT4+Ml09MSsoYz0wfGFbQT4+Ml0pLGFbbT4+Ml09YyxvbyhwLDk2MjM0LG0pLGgwKGM9MHxwcyhsLHAsMSksMTM3NDgzLDI4MCwxKSxsZT1mLDB8Y30obHw9MCxjfD0wKSl9ZnVu''@;'; put 'put ''Y3Rpb24gSl8obCxjKXtZbigwfGFbOCsobHw9MCk+PjJdLGN8PTAsMSksYVsxMisoMHxhWzExMisoMHxhW2MrMTY+PjJdKT4+Ml0pPj4yXT1sfWZ1bmN0aW9uIFh4KGwpe3ZhciBjPTAsZj0wO2ZvcihjPTB8YVszNisobHw9MCk+PjJdO2M7KWY9MHxhW2MrND4+Ml0sWHgoYyksYz1mOyFmdW5j''@;'; put 'put ''dGlvbiBZeChsKXswfChsfD0wKSYmKFltKDB8YVtsKzMyPj4yXSksRnQobCkpfShsKX1mdW5jdGlvbiBLeChsLGMsZil7bHw9MCxmPStmO3ZhciBwPTAsbT0wLEE9MCx3PTA7Zm9yKHA9MzYrKGN8PTApfDAsbT0wO3A9MHxhW3A+PjJdOylLeChsLHAsZikscD1wKzR8MCxtPW0rMXwwO3A9MHxm''@;'; put 'put ''dW5jdGlvbiBDNShsLGMsZil7Zj0rZjt2YXIgQSx3LGIsayxNLHA9MCxtPTAsRD0wLFI9MCxHPTA7Zm9yKEQ9MHxhWzgrKGN8PTApPj4yXSxmdW5jdGlvbiBOaChsLGMpe2x8PTA7dmFyIG0sZj0wLHA9MDtmb3IoZj0wfER0KG09MHxhWzgrKGN8PTApPj4yXSk7Zjspe2ZvcihwPTB8dzAobCxm''@;'; put 'put ''KTtwOykoMHxhWzEyKygwfGFbMTEyKygwfGFbMTYrKDB8YVsoMj09KDMmYVtwPj4yXXwwKT9wOnArLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPj4yXSk9PSgwfGMpJiZaZChtLHAsMSkscD0wfFMwKGwscCk7Zj0wfHp0KG0sZil9fShsfD0wLGMpLE09MHxmdW5jdGlvbiBxXyhsKXt2YXIgbSx3''@;'; put 'put ''LE0sYz0wLGY9MCxwPTAsQT0wLGI9MCxrPTA7Zm9yKE09bGUsbGU9bGUrMTZ8MCxtPTB8ZnVuY3Rpb24gRFAobCxjKXtsfD0wLGN8PTA7dmFyIGssZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsTT0wLEQ9MDtmb3Ioaz1sZSxsZT1sZSsxNDR8MCxiPWsrOHwwLHc9ayxmPWsrMTZ8MCxhWzQ2OTM0''@;'; put 'put ''XT0xKyhBPTB8YVs0NjkzNF0pLGFbdz4+Ml09QSxvbyhmLDk2MzEyLHcpLGgwKHc9MHxwcyhsLGYsMSksMTM3NDgzLDI4MCwxKSxhWzQ2OTM0XT0xKyhBPTB8YVs0NjkzNF0pLGFbYj4+Ml09QSxvbyhmLDk2MzEyLGIpLGZlW2I+PjBdPTB8ZmVbKEE9bCsyNHwwKT4+MF0sZmVbYisxPj4wXT0w''@;'; put 'put ''fGZlW0ErMT4+MF0sZmVbYisyPj4wXT0wfGZlW0ErMj4+MF0sZmVbYiszPj4wXT0wfGZlW0ErMz4+MF0sYj0wfG9jKGYsYiwwKSxmPTB8RHQobCk7ZjspWW4odyxmLDEpLGgwKEE9MHxHcihiLDB8dGkoZiksMSksMTM3NDQ3LDMwNCwxKSxhWzE2KygwfGFbMTEyKygwfGFbZisxNj4+Ml0pPj4y''@;'; put 'put ''XSk+PjJdPUEsZj0wfHp0KGwsZik7Zm9yKHA9MHxEdChsKTtwOyl7Zm9yKEE9MTYrKG09MHxhWzE2KygwfGFbMTEyKygwfGFbcCsxNj4+Ml0pPj4yXSk+PjJdKXwwLGY9MHx3MChsLHApO2Y7KVpkKHcsZiwxKSxoMChEPTB8S2EoYixtLE09MHxhWzE2KygwfGFbMTEyKygwfGFbMTYrKDB8YVso''@;'; put 'put ''Mj09KDMmYVtmPj4yXXwwKT9mOmYrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPj4yXSwwLDEpLDEzNzQ2MCwxNzYsMSksYVsxMTYrKDB8YVtEKzE2Pj4yXSk+PjJdPWYsYVsoRD0yMzYrKDB8YVtBPj4yXSl8MCk+PjJdPTErKDB8YVtEPj4yXSksYVsoTT0yMzYrKDB8YVtNKzE2Pj4yXSl8MCk+''@;'; put 'put ''PjJdPTErKDB8YVtNPj4yXSksZj0wfFMwKGwsZik7cD0wfHp0KGwscCl9cmV0dXJuIGFbYz4+Ml09YixsZT1rLDB8d30obHw9MCxBPU0pLGI9MHxHbyhBPTB8YVtBPj4yXSksdz0wfGZ1bmN0aW9uIExQKGwpe2x8PTA7dmFyIGYsYz0wO2ZvcihmPTB8ZnVuY3Rpb24gT1AoKXtyZXR1cm4gMHxp''@;'; put 'put ''cygxODI0MCwwfGFbNDU4MV0pfSgpLGM9MHxEdChsKTtjOylNNShmLGMpLGM9MHx6dChsLGMpO3JldHVybiAwfGZ9KEEpLGI9YistM3wwLHA9MDshKCgwfHApPj0oMHxiKSk7KXtmb3IoZj0wfE1zKEEsaz0wfFJQKHcpKTtmOykoMHxrKT09KDB8KGw9MHxhWygyPT0oMHwoYz0zJmFbZj4+Ml0p''@;'; put 'put ''KT9mOmYrLTQ4fDApKzQwPj4yXSkpJiYobD0wfGFbKDM9PSgwfGMpP2Y6Zis0OHwwKSs0MD4+Ml0pLGFUKHcsbCksZj0wfFZzKEEsZixrKTtmb3IoUzUoQSxrLG0pLGY9MHxNcyhBLGspO2Y7KSgwfGspPT0oMHwobD0wfGFbKDI9PSgwfChjPTMmYVtmPj4yXSkpP2Y6ZistNDh8MCkrNDA+PjJd''@;'; put 'put ''KSkmJihsPTB8YVsoMz09KDB8Yyk/ZjpmKzQ4fDApKzQwPj4yXSksYVsoYz0yMzYrKDB8YVtsKzE2Pj4yXSl8MCk+PjJdPSgwfGFbYz4+Ml0pLTEsTTUodyxsKSxmPTB8VnMoQSxmLGspO29pKEEsaykscD1wKzF8MH1yZXR1cm4gQzEoQSksZnVuY3Rpb24gVmQobCl7TmwobHw9MCl9KHcpLGxl''@;'; put 'put ''PU0sMHxtfShEKSxsPTB8ZnVuY3Rpb24gazUobCl7dmFyIGM9MCxmPTAscD0wLG09MCxBPTA7aWYoMSE9KDB8R28obHw9MCkpKXtmb3IoZj0wfER0KGwpO2Y7KXtmb3IoYz0wLHA9MHxNcyhsLGYpO3A7KWM9YysxfDAscD0wfFZzKGwscCxmKTsxPT0oMHxjKSYmTW8oZixmLDAsMCksZj0wfHp0''@;'; put 'put ''KGwsZil9Zm9yKGM9MCxtPTAsZj0wfER0KGwpO2Y7KWM9KHA9KDB8KEE9KDB8YVszMisoQT0wfGFbMTEyKygwfGFbZisxNj4+Ml0pPj4yXSk+PjJdKSsoMHxhW0ErMTYrMTI+PjJdKXwwKSk+KDB8YykpP0E6YyxtPXA/ZjptLGY9MHx6dChsLGYpO2ZvcihjPTB8V20oKSxmPTE2KygwfGFbMTEy''@;'; put 'put ''KygwfGFbKHA9bSsxNnwwKT4+Ml0pPj4yXSkrNHwwOygwfChmPTB8YVtmPj4yXSkpIT0oMHxtKTspSGgoYywwLGYpLGFbKEE9NCsoZj0wfGFbMTEyKygwfGFbZisxNj4+Ml0pPj4yXSl8MCk+PjJdPTE2fGFbQT4+Ml0sZj1mKzE2fDA7aWYoSGgoYywwLG0pLGFbKGw9NCsoQT0wfGFbMTEyKygw''@;'; put 'put ''fGFbcD4+Ml0pPj4yXSl8MCk+PjJdPTE2fGFbbD4+Ml0sMHxhW0ErMzI+PjJdKXtmb3IobD0wfFdtKCksZj0yNCsoMHxhWzExMisoMHxhW3A+PjJdKT4+Ml0pfDA7KDB8KGY9MHxhW2Y+PjJdKSkhPSgwfG0pOylIaChsLDAsZiksYVsoQT00KyhmPTB8YVsxMTIrKDB8YVtmKzE2Pj4yXSk+PjJd''@;'; put 'put ''KXwwKT4+Ml09MTZ8YVtBPj4yXSxmPWYrMTZ8MDshZnVuY3Rpb24gJF8obCxjKXsoZnVuY3Rpb24gQjMobCxjKXtsfD0wO3ZhciBmPTAscD0wLG09MDswfChmPTB8YVsoY3w9MCk+PjJdKSYmKGFbNCsobT0wfGFbKHA9bCs0fDApPj4yXSk+PjJdPWYsYVtmKzg+PjJdPW0sYVtwPj4yXT1hW2Mr''@;'; put 'put ''ND4+Ml0sYVsoZj1sKzh8MCk+PjJdPSgwfGFbZj4+Ml0pKygwfGFbYys4Pj4yXSkpfSkobHw9MCwwfGZ1bmN0aW9uIEtfKGwpe3ZhciBmLGM9MCxwPTAsbT0wLEE9MDtmb3IoZj1jPTB8YVsobHw9MCk+PjJdO2M7KXA9MHxhWyhBPWMrNHwwKT4+Ml0sYVtBPj4yXT1hWyhtPWMrOHwwKT4+Ml0s''@;'; put 'put ''YVttPj4yXT1wLGM9cDtyZXR1cm4gQT0wfGFbKG09bCs0fDApPj4yXSxhW20+PjJdPWYsYVtsPj4yXT1BLDB8bH0oY3w9MCkpLEZ0KGMpfShjLGwpfX1lbHNlIEhoKGM9MHxXbSgpLDAsQT0wfER0KGwpKSxhWyhBPTQrKDB8YVsxMTIrKDB8YVtBKzE2Pj4yXSk+PjJdKXwwKT4+Ml09MTZ8YVtB''@;'; put 'put ''Pj4yXTtyZXR1cm4gMHxjfSgwfGZ1bmN0aW9uIGVDKGwpe2x8PTA7dmFyIG0sYz0wLGY9MCxwPTA7Zm9yKG09bGUsbGU9bGUrMTQ0fDAsYz1tLHA9bSs4fDAsYVs0NjkzM109MSsoZj0wfGFbNDY5MzNdKSxhW2M+PjJdPWYsb28ocCw5NjMwMyxjKSxoMChwPTB8cHMobCxwLDEpLDEzNzQ4Mywy''@;'; put 'put ''ODAsMSksYz0wfER0KGwpO2M7KVluKHAsYywxKSxhWzE2KygwfGFbMTEyKygwfGFbKGY9YysxNnwwKT4+Ml0pPj4yXSkrMTI+PjJdPTAsYVszMisoMHxhWzExMisoMHxhW2Y+PjJdKT4+Ml0pPj4yXT0wLGFbKGY9NCsoMHxhWzExMisoMHxhW2Y+PjJdKT4+Ml0pfDApPj4yXT0tMiZhW2Y+PjJd''@;'; put 'put ''LGM9MHx6dChsLGMpO2ZvcihjPTB8RHQobCk7YzspMSZhWzQrKGY9MHxhWzExMisoMHxhW2MrMTY+PjJdKT4+Ml0pPj4yXXx8KGFbZisxNj4+Ml09MCxvVChsLGMscCkpLGM9MHx6dChsLGMpO3JldHVybiBsZT1tLDB8cH0oTSkpLGZ1bmN0aW9uIFRQKGwsYyl7Y3w9MDt2YXIgZj0wO2Zvcihm''@;'; put 'put ''PTB8RHQobHw9MCk7ZjspMTYmYVs0KygwfGFbMTEyKygwfGFbZisxNj4+Ml0pPj4yXSk+PjJdfHxfRyhsLGYsYyksZj0wfHp0KGwsZil9KEQsbCksRD0wfGZ1bmN0aW9uIHJjKGwsYyl7dmFyIG0sQSxmPTAscD0wO0E9bGUsbGU9bGUrMTZ8MCxtPUEsZj0wfHRDKGx8PTAsY3w9MCksYVttPj4y''@;'; put 'put ''XT1mO2U6ZG97aWYoZilmb3IocD0wOzspe2lmKCgwfHApPj0xMClicmVhayBlO2lmKGw9MHxpVChsLGMsbSksKDB8Zik9PSgwfChmPTB8YVttPj4yXSkpfDA9PSgwfGYpKWJyZWFrO3A9cCsxfDB9fXdoaWxlKDApO3JldHVybiBsZT1BLDB8bH0obCxEKSxsPTB8RDYoRCksYj0rZnVuY3Rpb24g''@;'; put 'put ''SVAobCl7bHw9MDt2YXIgYz0wLGY9MCxwPTAsbT0wO2ZvcihjPTA7bD0wfGFbbD4+Ml07KWM9KHA9K19bNDArKG09MHxhWzE2KygwfGFbYVsxMTIrKDB8YVsxNisoMHxhW2w+PjJdKT4+Ml0pPj4yXT4+Ml0pPj4yXSk+PjNdKT4oZj0oZj0rX1ttKzMyPj4zXSk+Yz9mOmMpP3A6ZixsPWwrNHww''@;'; put 'put ''O3JldHVybitjfShEKSx3PS4xNTkxNTQ5NDMwOTE4OTUzNSoobT0rKDB8bCkpKihiK2YpLEE9KGs9MT09KDB8bCkpPzA6dyxsPUQ7bD0wfGFbbD4+Ml07KXtpZig4JmFbNCsoMHxhWzExMisoMHxhWzE2KygwfGFbbD4+Ml0pPj4yXSk+PjJdKT4+Ml18MCl7cD00O2JyZWFrfWw9bCs0fDB9Zm9y''@;'; put 'put ''KDQ9PSgwfHApJiZmdW5jdGlvbiB0VChsLGMpe3ZhciBmLHA9MCxtPTA7KDB8KGY9MHxhWyhsfD0wKT4+Ml0pKSE9KDB8KGN8PTApKSYmKHA9MHxhWyhtPWMrOHwwKT4+Ml0sYVtsPj4yXT1jLGFbbT4+Ml09MCxhWzQrKGw9MHxhWyhjPWwrNHwwKT4+Ml0pPj4yXT1mLGFbZis4Pj4yXT1sLGFb''@;'; put 'put ''Yz4+Ml09cCxhW3ArND4+Ml09MCl9KEQsbCksZj0xL20scD0wLGw9RDtsPTB8YVtsPj4yXTspYVsxNisoMHxhWzExMisoMHxhWyhSPTE2KygwfGFbbD4+Ml0pfDApPj4yXSk+PjJdKT4+Ml09cCxfWzI0KygwfGFbMTEyKygwfGFbUj4+Ml0pPj4yXSk+PjNdPTAsRz0raGEoKyhtPTYuMjgzMTg1''@;'; put 'put ''MzA3MTc5NTg2KmYqKygwfHApKSkqQSxfWyhSPTB8YVsxMzIrKDB8YVtSPj4yXSk+PjJdKT4+M109RyxfW1IrOD4+M109K0RhKCttKSpBLHA9cCsxfDAsbD1sKzR8MDtyZXR1cm4gX1tjKzE2Pj4zXT1HPWs/LjUqYjp3LF9bYysyND4+M109RyxfW2MrNDg+PjNdPS0xLEMxKE0pLDB8RH0obCxj''@;'; put 'put ''LGYpLGFbYyszMj4+Ml09cCxsPTB8RDYocCksZj0oMHxtKT4wPytmdW5jdGlvbiBFUChsLGMsZixwLG0pe2N8PTAsZnw9MCxwfD0wLG09K207dmFyIEcscSxwZSxnZSxiZSxMZSxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsT2U9MDtmb3IoTGU9bGUsbGU9bGUrNDh8MCxiZT1MZSxPZT0w''@;'; put 'put ''fHZyKDU2KihsfD0wKXwwKSxhW2JlKzQwPj4yXT1hW3ArMzY+PjJdLF9bKHE9YmUrOHwwKT4+M109Yj0rX1soRz1wKzE2fDApPj4zXSxfW2JlPj4zXT1iLGFbYmUrNDQ+PjJdPWFbcD4+Ml0sX1tiZSsxNj4+M109Yj02LjI4MzE4NTMwNzE3OTU4Ni8rKDB8YyksX1socGU9YmUrMjR8MCk+PjNd''@;'; put 'put ''PS0xLF9bKGdlPWJlKzMyfDApPj4zXT0tMSxrPTAsUj0wLEE9MDt3PTB8YVtmPj4yXTspOCZhWzQrKDB8YVsxMTIrKDB8YVsxNisoZj0wfGFbdz4+Ml0pPj4yXSk+PjJdKT4+Ml0/KGFbKEQ9T2UrKDU2KlJ8MCl8MCk+PjJdPWYsX1tPZSsoNTYqUnwwKSs4Pj4zXT1iKisoMHxrKSxmPVIrMXww''@;'; put 'put ''LEE9K3hQKEQsYmUsbSkpOmY9UixrPWsrMXwwLFI9ZixmPXcrNHwwO2U6ZG97c3dpdGNoKDB8Uil7Y2FzZSAxOl9bT2UrNDA+PjNdPTEsZj0wO2JyZWFrO2Nhc2UgMjpYXyhPZSxPZSs1NnwwLChiPStfW09lKzY0Pj4zXS0rX1tPZSs4Pj4zXSk+My4xNDE1OTI2NTM1ODk3OTM/Ni4yODMxODUz''@;'; put 'put ''MDcxNzk1ODYtYjpiKSxmPTA7YnJlYWs7ZGVmYXVsdDpmb3IoRD1PZSs4fDAsTT1PZSxmPTA7Oyl7aWYoKDB8Zik+PSgwfFIpKXtmPTA7YnJlYWsgZX0oMHwoZj1mKzF8MCkpPT0oMHxSKT8odz1PZSxiPStfW0Q+PjNdKzYuMjgzMTg1MzA3MTc5NTg2LStfW00rOD4+M10saz1NKzU2fDApOih3''@;'; put 'put ''PWs9TSs1NnwwLGI9K19bTSs2ND4+M10tK19bTSs4Pj4zXSksWF8oTSx3LGIpLE09a319fXdoaWxlKDApO2Zvcig7ISgoMHxmKT49KDB8UikpOykkeChPZSsoNTYqZnwwKXwwLGJlLGMsbSksZj1mKzF8MDtyZXR1cm4gRnQoT2UpLDE9PSgwfGwpPyhuYyhwLC0obT1BKy41Km0pLDAsMCksX1tH''@;'; put 'put ''Pj4zXT0rX1tHPj4zXSttLGFbKE9lPXArNTZ8MCk+PjJdPTF8YVtPZT4+Ml0pOl9bRz4+M109K19bcT4+M10sbGU9TGUsKyguNSooK19bZ2U+PjNdKyArX1twZT4+M10pLTMuMTQxNTkyNjUzNTg5NzkzKX0obSxsLHAsYyxmKTozLjE0MTU5MjY1MzU4OTc5MywxPT0oMHxsKSYmMHwoQT0wfGFb''@;'; put 'put ''Yz4+Ml0pJiYwfGFbOCsoMHxhWzExMisoMHxhW0ErMTY+PjJdKT4+Ml0pPj4yXSYmKF9bKHc9Yys0OHwwKT4+M109ZixmPDApJiYoX1t3Pj4zXT1mKzYuMjgzMTg1MzA3MTc5NTg2KX1mdW5jdGlvbiB4UChsLGMsZil7bHw9MCxmPStmO3ZhciBwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDtmb3Io''@;'; put 'put ''dz0wLG09MCxBPTAscD00MCsoY3w9MCl8MDtiPTB8YVtwPj4yXTspKDB8KHA9KHA9MHxhW2I+PjJdKT8wfGFbOCsoMHxhWzExMisoMHxhW3ArMTY+PjJdKT4+Ml0pPj4yXTowKSk9PSgwfGFbbD4+Ml0pPyhwPXcrMXwwLG09bStmKzIqKGs9K19bYisxNj4+M10pLEE9QTxrP2s6QSk6cD13LHc9''@;'; put 'put ''cCxwPWIrNHwwO3JldHVybiBfW2wrMzI+PjNdPW0sYVtsKzQ4Pj4yXT13LF9bbCsxNj4+M109QStmKyArX1tjPj4zXSxfW2wrMjQ+PjNdPUEsK0F9ZnVuY3Rpb24gWF8obCxjLGYpe3ZhciBwLG07KGY9KGY9KChwPStfWzE2KyhsfD0wKT4+M10pKitfWzMyKyhjfD0wKT4+M10rKG09K19bYysx''@;'; put 'put ''Nj4+M10pKitfW2wrMzI+PjNdKS8oMiooZj0rZikqbSpwKSk8MT8xOmYpPitfWyhsPWwrNDB8MCk+PjNdJiYoX1tsPj4zXT1mKSxmPitfWyhsPWMrNDB8MCk+PjNdJiYoX1tsPj4zXT1mKX1mdW5jdGlvbiAkeChsLGMsZixwKXtwPStwO3ZhciBwZSxnZSxiZSxPZSxMZSxIZSxWZSxxZSxydCxX''@;'; put 'put ''ZSxhdCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAsUmU9MCxTdD0wLGt0PTAsc3Q9MDtmb3Ioaz0rX1soV2U9MjQrKGN8PTApfDApPj4zXSxiPStfWyhhdD1jKzMyfDApPj4zXSxtPStfWzE2KyhsfD0wKT4+M10qK19bbCs0MD4+M10sKFZlPTE9PSgwfChmfD0wKSkp''@;'; put 'put ''PyhtPTYuMjgzMTg1MzA3MTc5NTg2KihBPW0+KEE9LjE1OTE1NDk0MzA5MTg5NTM1KihSZT0rX1tsKzMyPj4zXSkpP206QSktUmUpPjA/KHA9bS8rKDB8YVtsKzQ4Pj4yXSkrcCxNPTAsbT1BKTooTT0wLG09QSk6TT0rX1tsKzg+PjNdLStfW2wrMzI+PjNdLygyKm0pLGdlPShwZT0rX1tsKzI0''@;'; put 'put ''Pj4zXSttKT4ocWU9K19bKHJ0PWMrOHwwKT4+M10pLE9lPSgxKygwfGFbKGJlPWwrNDh8MCk+PjJdKXwwKS8yfDAsTGU9MS9tLFJlPXAvbSouNSxIZT1sKzh8MCxSPWMrNDB8MCxHPTAscT0wLEE9TTtSPTB8YVtSPj4yXTspe2lmKCgwfCh3PSh3PTB8YVtSPj4yXSk/MHxhWzgrKDB8YVsxMTIr''@;'; put 'put ''KDB8YVt3KzE2Pj4yXSk+PjJdKT4+Ml06MCkpPT0oMHxhW2w+PjJdKSYmKDB8RDYoMHxhW1IrMzI+PjJdKSk+PTEpe0Q9KE09K19bUisxNj4+M10pKkxlO2Rve2lmKCFWZSl7aWYoMT09KDB8YVtiZT4+Ml0pKXtBPStfW0hlPj4zXTticmVha31BPUErUmUrRDticmVha30wIT1BJiYoQT0yPT0o''@;'; put 'put ''MHxhW2JlPj4yXSk/My4xNDE1OTI2NTM1ODk3OTM6RCtBKSxiPUEsaz1rPDA/QTprfXdoaWxlKDApO25jKFIsc3Q9K2hhKCtBKSptLGt0PStEYSgrQSkqbSwrcXgoUixzdCxrdCxBKSksQT0oVmU/KE0rcCkqTGU6RCtSZSkrQSx3PUc9RysxfDAsTT0oMHxHKT09KDB8T2UpP0E6cX1lbHNlIHc9''@;'; put 'put ''RyxNPXE7Uj1SKzR8MCxHPXcscT1NfW09Z2U/cGU6cWUsKDB8Zik+MSYmKDB8KFN0PTB8YVtsPj4yXSkpPT0oMHxhW2MrNDQ+PjJdKSYmKF9bMjQrKDB8YVsxMTIrKDB8YVtTdCsxNj4+Ml0pPj4yXSk+PjNdPXEpLF9bcnQ+PjNdPW0sX1tXZT4+M109ayxfW2F0Pj4zXT1ifWZ1bmN0aW9uIG5j''@;'; put 'put ''KGwsYyxmLHApe2M9K2MsZj0rZjt2YXIgRCxSLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEc9MCxxPTA7Zm9yKFI9MCE9KHA9K3ApLG09MHxEdChEPTB8YVs4KyhsfD0wKT4+Ml0pO207KXc9K19bKGs9MHxhWzEzMisoMHxhW20rMTY+PjJdKT4+Ml0pPj4zXSxBPStfWyhNPWsrOHwwKT4+M10s''@;'; put 'put ''Uj8oYj0oRz0raGEoK3ApKSp3LShxPStEYSgrcCkpKkEsQT1xKncrRypBKTpiPXcsX1trPj4zXT1iK2MsX1tNPj4zXT1BK2YsbT0wfHp0KEQsbSk7Zm9yKG09bCszNnwwO209MHxhW20+PjJdOyluYyhtLGMsZixwKSxtPW0rNHwwfWZ1bmN0aW9uIHF4KGwsYyxmLHApe2M9K2MsZj0rZixwPStw''@;'; put 'put ''O3ZhciBELG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLFI9MCxHPTA7RD0wfGFbOCsobHw9MCk+PjJdLG09K19bbCs0OD4+M107ZG97aWYobT49MCltPShtPTMuMTQxNTkyNjUzNTg5NzkzLW0rcCk8MD9tKzYuMjgzMTg1MzA3MTc5NTg2Om07ZWxzZXtpZigyPT0oMHxENigwfGFbbCszMj4+Ml0p''@;'; put 'put ''KSl7bT1wKy0xLjU3MDc5NjMyNjc5NDg5NjY7YnJlYWt9Zm9yKG09KGs9K19bOCsodz0wfGFbMTMyKygwfGFbKFI9MTYrKE09MHxhW2w+PjJdKXwwKT4+Ml0pPj4yXSk+PjNdK2YpKmsrKG09K19bdz4+M10rYykqbSx3PTB8RHQoRCksQT1NO3c7KSgwfHcpIT0oMHxNKSYmKGI9KGs9K19bOCso''@;'; put 'put ''Rz0wfGFbMTMyKygwfGFbdysxNj4+Ml0pPj4yXSk+PjNdK2YpKmsrKGI9K19bRz4+M10rYykqYik8bSYmKG09YixBPXcpLHc9MHx6dChELHcpO2lmKCgwfE0pIT0oMHxBKSl7aWYoKG09K19bKHc9MHxhWzEzMisoQT0wfGFbUj4+Ml0pPj4yXSk+PjNdKT4tKGs9K19bbCsxNj4+M10tKGI9K19b''@;'; put 'put ''bCsyND4+M10pKSYmMCE9KDEmYVtsKzU2Pj4yXXwwKSl7Zj0rRDAoKyhmKmYrYypjKSksYz0rVWwoKyArX1t3Kzg+PjNdLCsobStrKSksbT0raGEoK2MpLG09cCsxLjU3MDc5NjMyNjc5NDg5NjYtYy0rWHAoKyhrLWIvbSkvZiptKTticmVha31tPShtPXArMy4xNDE1OTI2NTM1ODk3OTMtKG09''@;'; put 'put ''K1VsKCsgK19bdys4Pj4zXSwrbSkpLStfWzI0KygwfGFbQSsxMTI+PjJdKT4+M10pPjYuMjgzMTg1MzA3MTc5NTg2P20rLTYuMjgzMTg1MzA3MTc5NTg2Om07YnJlYWt9bT0wfX13aGlsZSgwKTtyZXR1cm4rbX1mdW5jdGlvbiBXbSgpe3JldHVybiAwfHZyKDEyKX1mdW5jdGlvbiBZbShsKXt2''@;'; put 'put ''YXIgYz0wLGY9MDtpZigwfChsfD0wKSl7Zm9yKGM9MHxhW2w+PjJdO2M7KWY9MHxhW2MrND4+Ml0sRnQoYyksYz1mO0Z0KGwpfX1mdW5jdGlvbiBIaChsLGMsZil7bHw9MCxjfD0wO3ZhciBtLHA9MDttPTB8ZnVuY3Rpb24gZVQobCl7bHw9MDt2YXIgYztyZXR1cm4gYz0wfHZyKDEyKSxhW2M+''@;'; put 'put ''PjJdPWwsMHxjfShmfD0wKSxhWyhmPWwrOHwwKT4+Ml09MSsoMHxhW2Y+PjJdKSwwPT0oMHxjKXwoMHwocD0wfGFbKGY9bCs0fDApPj4yXSkpPT0oMHxjKT8oYVsoMHxwP3ArNHwwOmwpPj4yXT1tLGFbbSs4Pj4yXT1wLHA9MCk6KGY9MHxhWyhwPWMrNHwwKT4+Ml0sYVtwPj4yXT1tLGFbbSs4''@;'; put 'put ''Pj4yXT1jLHA9ZixmPWYrOHwwKSxhW2Y+PjJdPW0sYVttKzQ+PjJdPXB9ZnVuY3Rpb24gblQobCl7bHw9MDt2YXIgZixwLGM9MDtmb3IocD00KyhmPTB8V20oKSl8MCxjPTA7bD0wfGFbbD4+Ml07KUhoKGYsYywwfGFbbD4+Ml0pLGM9MHxhW3A+PjJdLGw9bCs0fDA7cmV0dXJuIDB8Zn1mdW5j''@;'; put 'put ''dGlvbiByVChsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgQSx3LGIsbT0wLGs9MCxNPTA7Zm9yKG09bHw9MDs7KXtpZighKGs9MHxhW20+PjJdKSl7TT02O2JyZWFrfWlmKCgwfGFbaz4+Ml0pPT0oMHxjKSlicmVhazttPWsrNHwwfWZvcig2PT0oMHxNKSYmUHIoOTYyNzAsOTYyNzcsMjE3''@;'; put 'put ''LDk2Mjg4KSxhWygwfChtPTB8YVsoYj1rKzh8MCk+PjJdKT9tKzR8MDpsKT4+Ml09Yz0wfGFbKEE9ays0fDApPj4yXSx3PWwrNHwwLGFbKDB8Yz9jKzh8MDp3KT4+Ml09bSxjPTAsbT1sO209MHxhW20+PjJdOyl7aWYoKDB8YVttPj4yXSk9PSgwfGYpKXtNPTk7YnJlYWt9Yz1tLG09bSs0fDB9''@;'; put 'put ''aWYoOT09KDB8TSkpe2Rve2lmKHApe2lmKCgwfG0pPT0oMHxhW3c+PjJdKSl7YVt3Pj4yXT1rLGFbQT4+Ml09MCxhW2I+PjJdPW0sbT1tKzR8MDticmVha31hW2I+PjJdPW0sYVtBPj4yXT1hWyhtPW0rNHwwKT4+Ml0sYVs4KygwfGFbbT4+Ml0pPj4yXT1rO2JyZWFrfWlmKCgwfG0pPT0oMHxh''@;'; put 'put ''W2w+PjJdKSl7YVtsPj4yXT1rLGFbQT4+Ml09bSxhW2I+PjJdPTAsbT1tKzh8MDticmVha31hW2MrND4+Ml09ayxhW2I+PjJdPWMsYVtBPj4yXT1tLG09bSs4fDA7YnJlYWt9d2hpbGUoMCk7YVttPj4yXT1rfX1mdW5jdGlvbiBENihsKXtyZXR1cm4gMHxhWzgrKGx8PTApPj4yXX1mdW5jdGlv''@;'; put 'put ''biB0QyhsLGMpe2x8PTAsY3w9MDt2YXIgTSxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsRD0wO2ZvcihNPTB8ZnVuY3Rpb24gRTUoKXtyZXR1cm4gMHxpcygxODI3NiwwfGFbNDU4MV0pfSgpLHA9MHxEdChjKTtwOyl7Zm9yKGY9MHx3MChjLHApO2Y7KWFbYVsxMjArKDB8YVtmKzE2Pj4y''@;'; put 'put ''XSk+PjJdPj4yXT0wLGY9MHxTMChjLGYpO3A9MHx6dChjLHApfWZvcihrPTEsZj0wO3c9MHxhW2w+PjJdOyl7Zm9yKEE9MHxNcyhjLGI9MHxhW3c+PjJdKTtBOyl7aWYoKDB8YVthWzEyMCsoMHxhWyhtPUErMTZ8MCk+PjJdKT4+Ml0+PjJdKT4wKXtmb3IobD0wfG1pWzYzJmFbTT4+Ml1dKE0s''@;'; put 'put ''MCwxMjgpO2w7KSgwfGFbYVsxMjArKDB8YVsxNisocD0wfGFbbCs4Pj4yXSk+PjJdKT4+Ml0+PjJdKT4oMHxhW2FbMTIwKygwfGFbbT4+Ml0pPj4yXT4+Ml0pJiYoMHxhWygyPT0oMHwoRD0zJmFbcD4+Ml0pKT9wOnArLTQ4fDApKzQwPj4yXSkhPSgwfGIpJiYoZj1mKygoMHxhWygzPT0oMHxE''@;'; put 'put ''KT9wOnArNDh8MCkrNDA+PjJdKSE9KDB8YikmMSl8MCksbD0wfG1pWzYzJmFbTT4+Ml1dKE0sbCw4KTt1VChNLEEpfUE9MHxWcyhjLEEsYil9Zm9yKHA9MHxNcyhjLGIpO3A7KTB8YVsobD0wfGFbMTIwKygwfGFbcCsxNj4+Ml0pPj4yXSk+PjJdfHwoYVtsPj4yXT1rLHg1KE0scCkpLHA9MHxW''@;'; put 'put ''cyhjLHAsYik7bD13KzR8MCxrPWsrMXwwfXJldHVybiBmdW5jdGlvbiBCUChsKXtObChsfD0wKX0oTSksMHxmfWZ1bmN0aW9uIGlUKGwsYyxmKXtsfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTA7cD0wfGFbKGZ8PTApPj4yXSxNPTB8RHQoY3w9MCk7ZTpmb3IoO007KXtmb3Io''@;'; put 'put ''az0wfE1zKGMsTSk7azspe2ZvcigoMHwobT0wfGFbKDM9PSgwfChBPTMmYVtrPj4yXSkpP2s6ays0OHwwKSs0MD4+Ml0pKT09KDB8TSkmJihtPTB8YVsoMj09KDB8QSk/azprKy00OHwwKSs0MD4+Ml0pLGI9MDshKCgwfGIpPj0yKTspe2lmKHc9MHxuVChsKSxyVChsLE0sbSxiKSwoMHwoQT0w''@;'; put 'put ''fHRDKGwsYykpKTwoMHxwKSl7aWYoWW0odyksIUEpe3A9MDticmVhayBlfXA9QX1lbHNlIFltKGwpLGw9dztiPWIrMXwwfWs9MHxWcyhjLGssTSl9TT0wfHp0KGMsTSl9cmV0dXJuIGFbZj4+Ml09cCwwfGx9ZnVuY3Rpb24gX0cobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciB3LHA9MCxtPTAs''@;'; put 'put ''QT0wO2Zvcih3PTB8V20oKSxwPTB8dzAobCxjKTtwOyltPXArLTQ4fDAsSGgodywwLDB8YVsoMj09KDMmYVtwPj4yXXwwKT9wOm0pKzQwPj4yXSksYVsobT00KygwfGFbMTEyKygwfGFbMTYrKDB8YVsoMj09KDMmYVtwPj4yXXwwKT9wOm0pKzQwPj4yXSk+PjJdKT4+Ml0pfDApPj4yXT0zMnxh''@;'; put 'put ''W20+PjJdLHA9MHxTMChsLHApO2ZvcihwPTB8TWYobCxjKTtwOyltPXArNDh8MCxIaCh3LDAsMHxhWygzPT0oMyZhW3A+PjJdfDApP3A6bSkrNDA+PjJdKSxhWyhtPTQrKDB8YVsxMTIrKDB8YVsxNisoMHxhWygzPT0oMyZhW3A+PjJdfDApP3A6bSkrNDA+PjJdKT4+Ml0pPj4yXSl8MCk+PjJd''@;'; put 'put ''PTMyfGFbbT4+Ml0scD0wfEYzKGwscCk7ZTpkb3tpZigoMHxENih3KSk+MSl7Zm9yKG09Zis0fDAsbD1mOzspe2lmKCEocD0wfGFbbD4+Ml0pKXtBPTEzO2JyZWFrIGV9aWYobD1wKzR8MCwzMiZhWzQrKDB8YVsxMTIrKDB8YVsxNisoMHxhW3A+PjJdKT4+Ml0pPj4yXSk+PjJdJiYzMiZhWzQr''@;'; put 'put ''KDB8YVsxMTIrKDB8YVsxNisoMHxhW2FbKCgwfHApPT0oMHxhW20+PjJdKT9mOmwpPj4yXT4+Ml0pPj4yXSk+PjJdKT4+Ml18MClicmVha31IaChmLHAsYyl9ZWxzZSBBPTEzfXdoaWxlKDApO2U6ZG97aWYoMTM9PSgwfEEpKXt0OmRve2lmKCgwfEQ2KHcpKT4wKXtmb3IocD1mOzspe2lmKCEo''@;'; put 'put ''cD0wfGFbcD4+Ml0pKWJyZWFrIHQ7aWYoMzImYVs0KygwfGFbMTEyKygwfGFbMTYrKDB8YVtwPj4yXSk+PjJdKT4+Ml0pPj4yXXwwKWJyZWFrO3A9cCs0fDB9SGgoZixwLGMpO2JyZWFrIGV9fXdoaWxlKDApO0hoKGYsMCxjKX19d2hpbGUoMCk7Zm9yKHA9dztwPTB8YVtwPj4yXTspYVsoZj00''@;'; put 'put ''KygwfGFbMTEyKygwfGFbMTYrKDB8YVtwPj4yXSk+PjJdKT4+Ml0pfDApPj4yXT0tMzMmYVtmPj4yXSxwPXArNHwwO1ltKHcpfWZ1bmN0aW9uIE1vKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7Zm9yKHZhciBtPTAsQT0wLHc9MCxiPTAsaz0wLE09MDtBPTB8YVsxNisoMHxhWzExMiso''@;'; put 'put ''MHxhW2MrMTY+PjJdKT4+Ml0pPj4yXTspe2lmKHc9ZisxfDAsbT0wfGFbMTIrKGM9MTYrKGs9MHxhWzExMisoMHxhWyhiPUErMTZ8MCk+PjJdKT4+Ml0pfDApPj4yXSl7aWYoKDB8bSk+KDB8Zikpe009MTE7YnJlYWt9bT1jPTB8YVtjKzQ+PjJdLCgwfGMpPT0oMHxwKT9jPWs6KGY9aysyNHww''@;'; put 'put ''LDAhPSgwfGFbayszMj4+Ml0pJiYoMHxhW2Y+PjJdKT09KDB8cCl8fChwPWMpLGFbZj4+Ml09bSxhWzMyKyhjPTB8YVsxMTIrKDB8YVtiPj4yXSk+PjJdKT4+Ml09YVtjKzE2KzEyPj4yXSxjPTB8YVsxMTIrKDB8YVtiPj4yXSk+PjJdKSxjPWMrMTZ8MH1hW2MrND4+Ml09bCxhWzE2KygwfGFb''@;'; put 'put ''MTEyKygwfGFbYj4+Ml0pPj4yXSkrMTI+PjJdPXcsYz1BLGY9d30xMT09KDB8TSkmJigwfGFbayszMj4+Ml0pPD0oMHxmKSYmKGFbaysyND4+Ml09bCxhWzMyKygwfGFbMTEyKygwfGFbYj4+Ml0pPj4yXSk+PjJdPXcpfWZ1bmN0aW9uIG9UKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHA9MCxtPTAs''@;'; put 'put ''QT0wO2ZvcihhWyhBPTQrKDB8YVsxMTIrKDB8YVsxNisoY3w9MCk+PjJdKT4+Ml0pfDApPj4yXT0xfGFbQT4+Ml0sQT0wfE1zKGwsYyk7QTspKDB8KHA9MHxhWygyPT0oMHwobT0zJmFbQT4+Ml0pKT9BOkErLTQ4fDApKzQwPj4yXSkpPT0oMHxjKSYmKHA9MHxhWygzPT0oMHxtKT9BOkErNDh8''@;'; put 'put ''MCkrNDA+PjJdKSwxJmFbNCsoMHxhWzExMisoMHxhWyhtPXArMTZ8MCk+PjJdKT4+Ml0pPj4yXXx8KFpkKGYsQSwxKSxhWzE2KygwfGFbMTEyKygwfGFbbT4+Ml0pPj4yXSk+PjJdPWMsb1QobCxwLGYpKSxBPTB8VnMobCxBLGMpfWZ1bmN0aW9uIFM1KGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHEs''@;'; put 'put ''cD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHBlPTA7Zm9yKHE9MHxRbihwZT0oUj0wfGFbMjM2KygwfGFbMTYrKGN8PTApPj4yXSk+PjJdKTw8MikscGU9MHxRbihwZSksYj0wLEQ9MHxNcyhsLGMpLEc9MCxtPTA7RDspe2ZvcigoMHwoQT0wfGFbKDI9PSgwfChwPTMm''@;'; put 'put ''YVtEPj4yXSkpP0Q6RCstNDh8MCkrNDA+PjJdKSk9PSgwfGMpJiYoQT0wfGFbKDM9PSgwfHApP0Q6RCs0OHwwKSs0MD4+Ml0pLHc9MCxNPTB8TXMobCxjKSxrPWI7TTspKDB8TSkhPSgwfEQpPygoMHwocD0wfGFbKDI9PSgwfChiPTMmYVtNPj4yXSkpP006TSstNDh8MCkrNDA+PjJdKSk9PSgw''@;'; put 'put ''fGMpJiYocD0wfGFbKDM9PSgwfGIpP006TSs0OHwwKSs0MD4+Ml0pLChiPTB8S2EobCxBLHAsMCwwKSk/QT4+PjA8cD4+PjA/KHA9aysxfDAsKGI9MHxhWzExNisoMHxhWyh3PWIrMTZ8MCk+PjJdKT4+Ml0pJiYob2koZixiKSxhWzExNisoMHxhW3c+PjJdKT4+Ml09MCksdz0xKToodz0xLHA9''@;'; put 'put ''ayk6cD1rKTpwPWssTT0wfFZzKGwsTSxjKSxrPXA7dz8oYVtxKyhtPDwyKT4+Ml09QSxwPUcsbT1tKzF8MCk6KGFbcGUrKEc8PDIpPj4yXT1BLHA9RysxfDApLGI9ayxEPTB8VnMobCxELGMpLEc9cH1wPVIrLTEtYnwwO2U6ZG97aWYoKDB8cCk+MCl7aWYoKDB8cCk8KDB8RykpQT0wO2Vsc2V7''@;'; put 'put ''aWYoKDB8cCkhPSgwfEcpKWJyZWFrO2ZvcihBPTE2KyhtPTB8YVtxPj4yXSl8MCxwPTA7Oyl7aWYoKDB8cCk+PSgwfEcpKWJyZWFrIGU7aDAoMHxLYShsLG0sUj0wfGFbcGUrKHA8PDIpPj4yXSwwLDEpLDEzNzQ2MCwxNzYsMSksYVsoZj0yMzYrKDB8YVtBPj4yXSl8MCk+PjJdPTErKDB8YVtm''@;'; put 'put ''Pj4yXSksYVsoUj0yMzYrKDB8YVtSKzE2Pj4yXSl8MCk+PjJdPTErKDB8YVtSPj4yXSkscD1wKzF8MH19Zm9yKDs7KXtpZigoMHxBKT49KDB8Rykpe209MjticmVha31pZigoMHwobT0xfEEpKT49KDB8Rykpe209MjticmVha31oMCgwfEthKGwsZj0wfGFbcGUrKEE8PDIpPj4yXSxSPTB8YVtw''@;'; put 'put ''ZSsobTw8Mik+PjJdLDAsMSksMTM3NDYwLDE3NiwxKSxhWyhmPTIzNisoMHxhW2YrMTY+PjJdKXwwKT4+Ml09MSsoMHxhW2Y+PjJdKSxhWyhSPTIzNisoMHxhW1IrMTY+PjJdKXwwKT4+Ml09MSsoMHxhW1I+PjJdKSxBPUErMnwwLHA9cCstMXwwfWZvcig7Oyl7aWYoKDB8cCk8PTApYnJlYWsg''@;'; put 'put ''ZTtoMCgwfEthKGwsUj0wfGFbcGU+PjJdLEc9MHxhW3BlKyhtPDwyKT4+Ml0sMCwxKSwxMzc0NjAsMTc2LDEpLGFbKFI9MjM2KygwfGFbUisxNj4+Ml0pfDApPj4yXT0xKygwfGFbUj4+Ml0pLGFbKEc9MjM2KygwfGFbRysxNj4+Ml0pfDApPj4yXT0xKygwfGFbRz4+Ml0pLG09bSsxfDAscD1w''@;'; put 'put ''Ky0xfDB9fX13aGlsZSgwKTtGdChwZSksRnQocSl9ZnVuY3Rpb24gTTUobCxjKXt2YXIgZixwLG07bHw9MCxmPWxlLGxlPWxlKzE2fDAsYVsobT1mKSs4Pj4yXT1hWzIzNisoMHxhWyhwPTE2KyhjfD0wKXwwKT4+Ml0pPj4yXSxsPTEyKygwfG1pWzYzJmFbbD4+Ml1dKGwsbSwxKSl8MCxhWzE2''@;'; put 'put ''NCsoMHxhW3A+PjJdKT4+Ml09YVtsPj4yXSxhW2w+PjJdPWMsbGU9Zn1mdW5jdGlvbiBhVChsLGMpe2x8PTA7dmFyIG0sdyxmPTAscD0wLEE9MDtpZih3PWxlLGxlPWxlKzE2fDAsYVsoQT13KSs4Pj4yXT1hWzIzNisoMHxhWyhtPTE2KyhjfD0wKXwwKT4+Ml0pPj4yXSwoQT0wfG1pWzYzJmFb''@;'; put 'put ''bD4+Ml1dKGwsQSw0KSl8fFByKDk2MzIyLDk2MzI1LDEwNyw5NjMzNSksKDB8KGY9MHxhWyhwPUErMTJ8MCk+PjJdKSk9PSgwfGMpKWFbcD4+Ml09Yz0wfGFbMTY0KygwfGFbbT4+Ml0pPj4yXSxjfHxtaVs2MyZhW2w+PjJdXShsLEEsMik7ZWxzZXtkb3twPTAhPSgwfChmPTB8YVsobD0xNjQr''@;'; put 'put ''KDB8YVtmKzE2Pj4yXSl8MCk+PjJdKSl9d2hpbGUocCYoMHxmKSE9KDB8YykpO3AmJihhW2w+PjJdPWFbMTY0KygwfGFbZisxNj4+Ml0pPj4yXSl9bGU9d31mdW5jdGlvbiBSUChsKXt2YXIgZixjPTAscD0wLG09MDtyZXR1cm4oZj0wfG1pWzYzJmFbKGx8PTApPj4yXV0obCwwLDEyOCkpPyhh''@;'; put 'put ''WyhtPWYrMTJ8MCk+PjJdPXA9MHxhWzE2NCsoMHxhWzE2KyhjPTB8YVttPj4yXSk+PjJdKT4+Ml0scHx8bWlbNjMmYVtsPj4yXV0obCxmLDIpKTpjPTAsMHxjfWZ1bmN0aW9uIHg1KGwsYyl7dmFyIGYscDtsfD0wLGY9bGUsbGU9bGUrMTZ8MCxhWyhwPWYpKzg+PjJdPWN8PTAsbWlbNjMmYVts''@;'; put 'put ''Pj4yXV0obCxwLDEpLGxlPWZ9ZnVuY3Rpb24gdVQobCxjKXt2YXIgZixwO2x8PTAsZj1sZSxsZT1sZSsxNnwwLGFbKHA9ZikrOD4+Ml09Y3w9MCxtaVs2MyZhW2w+PjJdXShsLHAsMiksbGU9Zn1mdW5jdGlvbiBObChsKXtsfD0wO3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MDtkb3tpZigw''@;'; put 'put ''IT0oMHxsKSYmKDB8YVtsKzI0Pj4yXSk8PTApe2lmKGM9MHxhWyhBPTMyKyh3PTB8YVtsKzQ+PjJdKXwwKT4+Ml0pe2lmKCgwfChjPTB8cTBbMTI3JmNdKGwsMiwwLHcpKSk8MCl7Yz0tMTticmVha319ZWxzZSBjPTA7aWYoMHxhW2wrMjg+PjJdJiZlaChsLDApLG09MD09KDB8Yykpe2lmKG1p''@;'; put 'put ''WzYzJmFbYVtsKzE2Pj4yXT4+Ml1dKGwsMCw2NCksKDB8cHUobCkpPjApe2M9LTE7YnJlYWt9KDB8YVsxMisoYz0wfGFbKGY9bCs4fDApPj4yXSk+PjJdKT4wPyhxMFsxMjcmYVsocD1sKzEyfDApPj4yXV0obCwwfGFbYys4Pj4yXSwwLHcpLGM9MHxhW2Y+PjJdKTpwPWwrMTJ8MCxxMFsxMjcm''@;'; put 'put ''YVtwPj4yXV0obCxjLDAsdyl9KGM9MHxhW2wrMjA+PjJdKT9tJjE9PSgwfGMpJiZxMFsxMjcmYVtsKzEyPj4yXV0obCxsLDAsdyk6RnQobCksKGM9MHxhW0E+PjJdKSYmcTBbMTI3JmNdKGwsNiwwLHcpLGM9MH1lbHNlIGM9LTF9d2hpbGUoMCk7cmV0dXJuIDB8Y31mdW5jdGlvbiBQMyhsKXt2''@;'; put 'put ''YXIgYz0wLGY9MCxwPTA7Zj0wfGFbKGM9MHxhWyhwPTgrKGx8PTApfDApPj4yXSk+PjJdO2U6ZG97aWYoMTImZilsPTB8YVtjKzQ+PjJdO2Vsc2V7aWYoISgzJmYpKXtsPTB8YVsoZj1jKzh8MCk+PjJdLGFbZj4+Ml09MDticmVha31mb3IobD0wfHMwKGwpLGY9KGM9MHxhWzgrKGY9MHxhW3A+''@;'; put 'put ''PjJdKT4+Ml0pKyhhW2YrMTI+PjJdPDwyKXwwOzspe2lmKGM+Pj4wPj1mPj4+MClicmVhayBlO2FbYz4+Ml09MCxjPWMrNHwwfX19d2hpbGUoMCk7cmV0dXJuIGFbKHA9MHxhW3A+PjJdKT4+Ml09LTQwOTcmYVtwPj4yXSxhW3ArMTY+PjJdPTAsYVtwKzQ+PjJdPTAsMHxsfWZ1bmN0aW9uIHMw''@;'; put 'put ''KGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wO2lmKDQwOTYmKGM9MHxhWyhsPTB8YVsoQT04KyhsfD0wKXwwKT4+Ml0pPj4yXSkpbD0wfGFbbCs0Pj4yXTtlbHNle2U6ZG97aWYoMyZjKWZvcihwPTB8YVtsKzg+PjJdLG09cCsoYVtsKzEyPj4yXTw8Mil8MCxjPTAsbD0wOzspe2lmKHA+Pj4w''@;'; put 'put ''Pj1tPj4+MClicmVhayBlO2lmKGY9MHxhW3A+PjJdKXtmb3IoYz9hW2M+PjJdPWY6KGM9ZixsPWYpO2Y9MHxhW2M+PjJdOyljPWY7YVtwPj4yXT1jfXA9cCs0fDB9ZWxzZXtpZigxMTImY3wwKXtsPTB8YVtsKzg+PjJdO2JyZWFrfWlmKGw9MHxhW2wrND4+Ml0pe2Zvcig7Oyl7aWYoIShmPTB8''@;'; put 'put ''YVsoYz1sKzR8MCk+PjJdKSl7cD1sO2JyZWFrfWFbYz4+Ml09YVtmPj4yXSxhW2Y+PjJdPWwsbD1mfWZvcig7Oyl7aWYoIShjPTB8YVtwPj4yXSkpYnJlYWsgZTtpZihmPTB8YVtjKzQ+PjJdKXtmb3IoO2FbYys0Pj4yXT1hW2Y+PjJdLGFbZj4+Ml09YyxjPTB8YVtmKzQ+PjJdOyltPWYsZj1j''@;'; put 'put ''LGM9bTthW3A+PjJdPWYscD1mfWVsc2UgcD1jfX1lbHNlIGw9MH19d2hpbGUoMCk7YVs0KyhBPTB8YVtBPj4yXSk+PjJdPWwsYVtBPj4yXT00MDk2fGFbQT4+Ml19cmV0dXJuIDB8bH1mdW5jdGlvbiBpcyhsLGMpe2x8PTAsY3w9MDt2YXIgayxmPTAscD0wLG09MCxBPTAsdz0wLGI9MDtrPWxl''@;'; put 'put ''LGxlPWxlKzE2fDAsQT1rO2U6ZG97aWYoMCE9KDB8bCkmMCE9KDB8YykmJihtPTB8RjAoNDApLDAhPSgwfG0pKSl7YVttPj4yXT0wLGFbbSsxNj4+Ml09MCxhW20rND4+Ml09MCxKbShtLGwsMCksYj1sKzMyfDAsYVsoZj1tKzIwfDApPj4yXT0wLGFbZis0Pj4yXT0wLGFbZis4Pj4yXT0wLGFb''@;'; put 'put ''ZisxMj4+Ml09MCxhW2YrMTY+PjJdPTAsZj0wfGFbYj4+Ml07ZG97aWYoZilpZihhW0E+PjJdPTAsKDB8KGY9MHxxMFsxMjcmZl0obSwxLEEsbCkpKT49MClpZihmKXtpZigwfChwPTB8YVtBPj4yXSkpe2lmKGFbYys0Pj4yXSZhW3A+PjJdKXtmPW07YnJlYWt9Zj1tLHc9MTI7YnJlYWt9aWYo''@;'; put 'put ''MHxhWyhmPWwrMjh8MCk+PjJdKXtpZihGdChtKSwhKHA9MHxxMFsxMjcmYVtmPj4yXV0oMCwwLDQwLGwpKSl7Zj0wO2JyZWFrIGV9YVtwPj4yXT0wLGFbcCsxNj4+Ml09MCxhW3ArND4+Ml09MCxKbShwLGwsMCksYVtwKzIwPj4yXT0xLGFbcCsyND4+Ml09MCxhW3ArMzI+PjJdPTAsYVtwKzI4''@;'; put 'put ''Pj4yXT0wLGY9cCxtPXAsdz0xMX1lbHNlIGY9bSx3PTEyfWVsc2UgZj1tLHc9MTE7ZWxzZSBmPW0sdz0xMjtlbHNlIGY9bSx3PTExfXdoaWxlKDApO2lmKDExPT0oMHx3KSYmKHA9MHxxMFsxMjcmYVtmKzEyPj4yXV0oZiwwLDI4LGwpLGFbQT4+Ml09cCxwPyhhW3A+PjJdPWFbYys0Pj4yXSxh''@;'; put 'put ''WyhBPXArNHwwKT4+Ml09MCxhW0ErND4+Ml09MCxhW0ErOD4+Ml09MCxhW0ErMTI+PjJdPTAsYVtBKzE2Pj4yXT0wLGFbQSsyMD4+Ml09MCk6KGY9bSx3PTEyKSksMTI9PSgwfHcpKXtGdChmKSxmPTA7YnJlYWt9YVtmKzg+PjJdPXAsYVtmPj4yXT1hW2M+PjJdLGFbZisxNj4+Ml09YywocD0w''@;'; put 'put ''fGFbYj4+Ml0pJiZxMFsxMjcmcF0oZiw1LG0sbCl9ZWxzZSBmPTB9d2hpbGUoMCk7cmV0dXJuIGxlPWssMHxmfWZ1bmN0aW9uIENjKGwsYyl7dmFyIG0sQSx3LGY9MCxwPTAsYj0wLGs9MDttPTB8YVthWzE2KyhsfD0wKT4+Ml0+PjJdLGY9NDA5NiYodz0wfGFbKEE9MHxhWyhrPWwrOHwwKT4+''@;'; put 'put ''Ml0pPj4yXSksKGN8PTApPzB8YVtBKzE2Pj4yXT9jPS0xOihwPTAsYj01KTpmPyhwPWYsYz0wfGFbQSs0Pj4yXSxiPTUpOmM9LTE7ZTpkb3tpZig1PT0oMHxiKSl7aWYoYVtBPj4yXT0tNDA5NyZ3LCEoMyZ3KSl7aWYoZj1BKzR8MCwxMiZ3fHwoYVtmPj4yXT0wLGY9QSs4fDApLGFbZj4+Ml09''@;'; put 'put ''YywwfHApe2M9MDticmVha31hWzE2KygwfGFbaz4+Ml0pPj4yXT0tMSxjPTA7YnJlYWt9aWYoYVtBKzQ+PjJdPTAsIXApZm9yKGFbQSsxNj4+Ml09MDs7KXtpZighYyl7Yz0wO2JyZWFrIGV9az0wfGFbYz4+Ml0sbWlbNjMmbV0obCxjLDMyKSxjPWt9Zm9yKGw9KHA9MHxhW0ErOD4+Ml0pKyhh''@;'; put 'put ''W0ErMTI+PjJdPDwyKXwwOzspe2lmKHA+Pj4wPj1sPj4+MCl7Yz0wO2JyZWFrIGV9KGY9MHxhW3A+PjJdKSYmKGFbcD4+Ml09YyxjPTB8YVtmPj4yXSxhW2Y+PjJdPTApLHA9cCs0fDB9fX13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1bmN0aW9uIHB1KGwpe3ZhciBwLGM9MCxmPTA7NDA5NiZhWyhm''@;'; put 'put ''PTB8YVsoYz04KyhsfD0wKXwwKT4+Ml0pPj4yXSYmKENjKGwsMCksZj0wfGFbYz4+Ml0pLGw9MHxhWyhwPWYrMTZ8MCk+PjJdO2Rve2lmKCgwfGwpPDApe2lmKDEyJihjPTB8YVtmPj4yXSl8MCl7bD0wfHhBKDB8YVtmKzQ+PjJdKSxhW3A+PjJdPWw7YnJlYWt9aWYoMTEyJmMpe2ZvcihsPTAs''@;'; put 'put ''Yz1mKzh8MDtjPTB8YVtjPj4yXTspbD1sKzF8MDthW3A+PjJdPWx9fX13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIHhBKGwpe3JldHVybihsfD0wKT8xKygwfHhBKDB8YVtsKzQ+PjJdKSkrKDB8eEEoMHxhW2w+PjJdKSl8MDowfWZ1bmN0aW9uIGVoKGwsYyl7Y3w9MDt2YXIgbSxmPTAs''@;'; put 'put ''cD0wLEE9MDs0MDk2JmFbYVs4KyhsfD0wKT4+Ml0+PjJdfDAmJkNjKGwsMCksKG09MCE9KDB8YykpPyg0MDk2JmFbYVtjKzg+PjJdPj4yXXwwJiZDYyhjLDApLCgwfGFbYysxNj4+Ml0pPT0oMHxhW2wrMTY+PjJdKT8oZj1jLHA9Nyk6Yz0wKTooZj0wLHA9Nyk7ZTpkb3tpZig3PT0oMHxwKSl7''@;'; put 'put ''Zm9yKDtmOyl7aWYoKDB8Zik9PSgwfGwpKXtjPTA7YnJlYWsgZX1mPTB8YVtmKzI4Pj4yXSxwPTd9aWYoMHwocD0wfGFbKGY9bCsyOHwwKT4+Ml0pJiYoYVsoQT1wKzI0fDApPj4yXT0oMHxhW0E+PjJdKS0xKSxhW2wrMzI+PjJdPTAsYVtmPj4yXT0wLG0pe2FbZj4+Ml09YyxhW2w+PjJdPTI4''@;'; put 'put ''LGFbKEE9YysyNHwwKT4+Ml09MSsoMHxhW0E+PjJdKTticmVha31hW2w+PjJdPWFbYVtsKzE2Pj4yXT4+Ml0sYz1wO2JyZWFrfX13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1bmN0aW9uIEptKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9''@;'; put 'put ''MDtHPTB8YVsobT00KyhsfD0wKXwwKT4+Ml07ZTpkb3tpZihHKWlmKGMpe2lmKFI9MHxhW2FbbCsxNj4+Ml0+PjJdLDQwOTYmYVthWyhBPWwrOHwwKT4+Ml0+PjJdfDAmJkNjKGwsMCksMHwocD0wfGFbRyszMj4+Ml0pJiYoMHxxMFsxMjcmcF0obCwzLGMsRykpPDApe2M9MDticmVha31pZihh''@;'; put 'put ''W20+PjJdPWMsYVtsKzEyPj4yXT0wPT0oMHwocD0wfGFbYysyOD4+Ml0pKT81MjpwLDExMiYocD0wfGFbYVtBPj4yXT4+Ml0pKWM9RztlbHNle2Rve2lmKCEoMiZwKSl7aWYoMyZwKXtpZigzPT0oMyZmfDApKXtjPUc7YnJlYWsgZX1icmVha31pZigxJmYpe2M9RzticmVhayBlfWJyZWFrfWlm''@;'; put 'put ''KDImZnwwKXtjPUc7YnJlYWsgZX19d2hpbGUoMCk7dz0wfHMwKGwpLGFbKHA9MHxhW0E+PjJdKT4+Ml09LTQwOTcmKEQ9MHxhW3A+PjJdKSxhW3ArND4+Ml09MCxhW3ArMTY+PjJdPTA7dDpkb3tpZigzJkR8MClmb3IoRD0wfGFbcCs4Pj4yXSxtPUQrKGFbcCsxMj4+Ml08PDIpfDAscD1EOzsp''@;'; put 'put ''e2lmKHA+Pj4wPj1tPj4+MClicmVhayB0O2FbcD4+Ml09MCxwPXArNHwwfX13aGlsZSgwKTtmb3IoYj0wPT0oMiZmfDApLGs9Yys4fDAsTT1jKzR8MCxEPWMrMjR8MDs7KXtpZighdyl7Yz1HO2JyZWFrIGV9Zj0wfGFbdz4+Ml0sYiYmKHA9KHA9KDB8KHA9MHxhW2s+PjJdKSk8MD8wfGFbdys4''@;'; put 'put ''Pj4yXTp3KygwLXApfDApKygwfGFbYz4+Ml0pfDAsKDB8KEE9MHxhW00+PjJdKSk8MCYmKHA9MHxhW3A+PjJdKSxwPShtPTB8YVtEPj4yXSk/MHxtaVs2MyZtXShsLHAsYyk6MHxjVCgwLHAsQSksYVt3KzQ+PjJdPXApLG1pWzYzJlJdKGwsdywzMiksdz1mfX19ZWxzZSBjPUc7ZWxzZSBhW20+''@;'; put 'put ''PjJdPWMsRz0wfGFbYysyOD4+Ml0sYVtsKzEyPj4yXT0wPT0oMHxHKT81MjpHfXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gY1QobCxjLGYpe2x8PTA7dmFyIHA9MCxtPTAsQT0wO2lmKG09Y3w9MCwoMHwoZnw9MCkpPj0xKXtmb3IobT0oKEE9YytmKy0xfDApPj4+MDxjPj4+MD9jOkEp''@;'; put 'put ''KygxLW0pJi0yLHA9YzshKHA+Pj4wPj1BPj4+MCk7KWw9MHxBcigoKDB8WHRbcD4+MF0pPDw4KStsKygwfFh0W3ArMT4+MF0pfDAsMTcxMDk4MTEpLHA9cCsyfDA7KHA9YyttfDApPj4+MD5BPj4+MD9jPWY6KGM9ZixsPTB8QXIoKCgwfFh0W3A+PjBdKTw8OCkrbHwwLDE3MTA5ODExKSl9ZWxz''@;'; put 'put ''ZXtmb3IoOyhwPTB8ZmVbYz4+MF0pPDwyND4+MjQ7KWw9Zj0wfEFyKCgoMjU1JnApPDw4KStsKygyNTUmKEE9MHxmZVtjKzE+PjBdKSl8MCwxNzEwOTgxMSksYz1jKyhBPDwyND4+MjQ/MjoxKXwwO2M9Yy1tfDB9cmV0dXJuIDB8QXIobCtjfDAsMTcxMDk4MTEpfWZ1bmN0aW9uICRyKGwsYyxm''@;'; put 'put ''KXt2YXIgcCxtO3JldHVybiBsfD0wLGN8PTAscD1sZSxsZT1sZSsxNnwwLGFbKG09cCk+PjJdPWZ8PTAsZj0wfG5DKGwsYyxtKSxsZT1wLDB8Zn1mdW5jdGlvbiBuQyhsLGMsZil7Y3w9MCxmfD0wO3ZhciBwLG0sQSx3LGI9MDtBPWxlLGxlPWxlKzE2fDAscD1BLGFbNDY5MzhdPXc9KG09Mz09''@;'; put 'put ''KDB8KGx8PTApKSk/MHxhWzQ2OTM4XToyPT0oMHxsKT8xOmwsYVs0NjkzOV09KGI9MHxhWzQ2OTM5XSk+Pj4wPnc+Pj4wP2I6dztkb3tpZih3Pj4+MDwoMHxhWzQ2OTM2XSk+Pj4wKXtpZighKGw9MHxhWzQ2OTM3XSkmJihsPTB8aGZlKCksYVs0NjkzN109bCwhbCkpe2w9MTticmVha31tfHwo''@;'; put 'put ''ZGZlKGwpLGw9MHxhWzQ2OTM3XSkseUwobCxjLGYpLGw9MH1lbHNle2lmKDB8YVs0NjkzNV0pe1ZQKGwsYyxmKSxsPTA7YnJlYWt9bT9sPTB8YVsxNTcxMl06KGI9MHxhWzE1NzEyXSxhW3A+PjJdPTE9PSgwfGwpPzk2MzQ5Ojk2MzU1LFQwKGIsOTYzNjMscCksbD1iKSx5TChsLGMsZiksbD0w''@;'; put 'put ''fX13aGlsZSgwKTtyZXR1cm4gbGU9QSwwfGx9ZnVuY3Rpb24gVlAobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwPTAsbT0wOzA9PSgwfGFbNDY5NDBdKSYmKG09MHxGMCgwfGFbNDU5MF0pLGFbNDY5NDBdPW0sMD09KDB8bSkpP191KDk2MzY4LDB8YVsxNTcxMl0pOnA9NDtkb3tpZig0PT0o''@;'; put 'put ''MHxwKSl7Zm9yKDMhPSgwfGwpJiYoX29bNjMmYVs0NjkzNV1dKDE9PSgwfGwpPzk2MzQ5Ojk2MzU1KSxfb1s2MyZhWzQ2OTM1XV0oOTcwMjcpKTs7KXtpZigoMHwobD0wfEFMKDB8YVs0Njk0MF0sMHxhWzQ1OTBdLGMsZikpKT4tMSYoMHxsKTwoMHwocD0wfGFbNDU5MF0pKSl7cD03O2JyZWFr''@;'; put 'put ''fWlmKGFbNDU5MF09bT0oMHwocDw8PTEpKT4oMHwobT1sKzF8MCkpP3A6bSwhKDB8VWEoMHxhWzQ2OTQwXSxtKSkpe3A9OTticmVha319aWYoNz09KDB8cCkpe19vWzYzJmFbNDY5MzVdXSgwfGFbNDY5NDBdKTticmVha31pZig5PT0oMHxwKSl7X3UoOTYzNjgsMHxhWzE1NzEyXSk7YnJlYWt9''@;'; put 'put ''fX13aGlsZSgwKX1mdW5jdGlvbiBYbShsLGMpe3ZhciBmLHA7bHw9MCxmPWxlLGxlPWxlKzE2fDAsYVsocD1mKT4+Ml09Y3w9MCxuQygxLGwscCksbGU9Zn1mdW5jdGlvbiB1cyhsLGMsZil7bHw9MCxjfD0wO3ZhciBwPTA7KGZ8PTApP3A9MDooYz1mPTA9PSgwfGMpPzEwMjQ6YyxmPTB8RjAo''@;'; put 'put ''ZikscD0xKSxhW2wrMTI+PjJdPXAsYVtsPj4yXT1mLGFbbCs4Pj4yXT1mK2MsYVtsKzQ+PjJdPWYsZmVbZj4+MF09MH1mdW5jdGlvbiBRMChsLGMpe3ZhciBmLHcscD0wLG09MCxBPTAsYj0wO3JldHVybiBwPShBPSgwfGFbKHc9OCsobHw9MCl8MCk+PjJdKS0obT0wfGFbbD4+Ml0pfDApPDwx''@;'; put 'put ''LHA9KEE9QSsoY3w9MCl8MCk+Pj4wPnA+Pj4wP0E6cCxjPW0sbT0oMHxhWyhBPWwrNHwwKT4+Ml0pLW18MCwwfGFbKGY9bCsxMnwwKT4+Ml0/Yz0wfFVhKGMscCk6KGdvKDB8KGI9MHxGMChwKSksMHxjLDB8bSksYVtmPj4yXT0xLGM9YiksYVtsPj4yXT1jLGFbQT4+Ml09YyttLGFbdz4+Ml09''@;'; put 'put ''YytwLDB9ZnVuY3Rpb24gZFQobCxjLGYpe2N8PTA7dmFyIG0scD0wO3JldHVybigocD0wfGFbKG09NCsobHw9MCl8MCk+PjJdKSsoZnw9MCl8MCk+Pj4wPigwfGFbbCs4Pj4yXSk+Pj4wJiYoUTAobCxmKSxwPTB8YVttPj4yXSksZ28oMHxwLDB8YywwfGYpLGFbbT4+Ml09KDB8YVttPj4yXSkr''@;'; put 'put ''ZiwwfGZ9ZnVuY3Rpb24gdW8obCxjKXtyZXR1cm4gMHxkVChsfD0wLGN8PTAsMHxVbyhjKSl9ZnVuY3Rpb24gQzIobCl7MHxhWzEyKyhsfD0wKT4+Ml0mJkZ0KDB8YVtsPj4yXSl9ZnVuY3Rpb24gTDYobCl7dmFyIGMsZjtyZXR1cm4oZj0wfGFbKGM9NCsobHw9MCl8MCk+PjJdKT4+PjA+KDB8''@;'; put 'put ''YVtsPj4yXSk+Pj4wPyhhW2M+PjJdPWYrLTEsbD0wfFh0W2Y+PjBdKTpsPS0xLDB8bH1mdW5jdGlvbiBWaChsLGMpe3ZhciBmPTA7cmV0dXJuIDAhPSgwfChjfD0wKSkmMD09KDB8KGY9MHxhbyhsfD0wLDk2NDE2LDApKSkmJihmdW5jdGlvbiByQyhsKXt2YXIgcCxjPTAsZj0wO2ZvcihiQyhw''@;'; put 'put ''PTB8ZGkobHw9MCkscCwxMDcsMCwxKSxmPTB8RHQocCk7Zjspe2ZvcihpQyhsLGYpLGM9MHx3MChwLGYpO2M7KW9DKGwsYyksYz0wfFMwKHAsYyk7Zj0wfHp0KHAsZil9fShsKSxmPTB8YW8obCw5NjQxNiwwKSksMHxmfWZ1bmN0aW9uIFQ1KGwpe3ZhciBjPTA7ZmVbKGM9MjQrKGx8PTApfDAp''@;'; put 'put ''Pj4wXT02NHxmZVtjPj4wXSxmdW5jdGlvbiBaUChsKXt2YXIgcCxtLGM9MCxmPTA7Zj0wfGgwKGx8PTAsOTY0MTYsMjAsMCksYVsocD1mKzh8MCk+PjJdPTB8WmgobCwxODM2NCwwfGFbNDU4OV0pLGFbKG09ZisxMnwwKT4+Ml09MHxaaChsLDE4MzY0LDB8YVs0NTg5XSksYVsoZj1mKzE2fDAp''@;'; put 'put ''Pj4yXT0wfFpoKGwsMTgzNjQsMHxhWzQ1ODldKSwoYz0wfGsxKGwpKT8obD0wfFZoKGMsMCksZWgoMHxhW3A+PjJdLDB8YVtsKzg+PjJdKSxlaCgwfGFbbT4+Ml0sMHxhW2wrMTI+PjJdKSxlaCgwfGFbZj4+Ml0sMHxhW2wrMTY+PjJdKSk6MD09KDB8KGM9MHxhWzQ2OTQxXSkpfCgwfGMpPT0o''@;'; put 'put ''MHxsKXx8KGM9MHxWaChjLDApLGpoKDB8YVtjKzg+PjJdLDB8YVtwPj4yXSxsLDEpLGpoKDB8YVtjKzEyPj4yXSwwfGFbbT4+Ml0sbCwyKSxqaCgwfGFbYysxNj4+Ml0sMHxhW2Y+PjJdLGwsMCkpfShsKSxhQygwPT0oMHwoYz0wfGsxKGwpKSk/bDpjLGwpfWZ1bmN0aW9uIGlDKGwsYyl7dmFy''@;'; put 'put ''IGY7bHw9MCwwIT0oMHwoZj0wfGljKGN8PTApKSkmJjAhPSgwfGFbZis4Pj4yXSl8fGFDKGwsYyl9ZnVuY3Rpb24gb0MobCxjKXt2YXIgZjtsfD0wLDAhPSgwfChmPTB8aWMoY3w9MCkpKSYmMCE9KDB8YVtmKzg+PjJdKXx8YUMobCxjKX1mdW5jdGlvbiBpYyhsKXtyZXR1cm4gMHxhbyhsfD0w''@;'; put 'put ''LDk2NDA0LDApfWZ1bmN0aW9uIGFDKGwsYyl7bHw9MDt2YXIgbSxmPTAscD0wO2Y9MHxoMChjfD0wLDk2NDA0LDE2LDApLG09MHxKNChsLDMmYVtjPj4yXSkscD1mKzh8MDtlOmRve2lmKCEoMHxhW3A+PjJdKSlmb3IobD0wfGRpKGwpLGFbcD4+Ml09MHxKNChsLDMmYVtjPj4yXSksbD0wfFRB''@;'; put 'put ''KGMpLGY9ZisxMnwwLGFbZj4+Ml09MHxNdCgwfGNyKGMpLCgoMHxsKT40P2w6NCk8PDIpLGw9MHxtaVs2MyZhW20+PjJdXShtLDAsMTI4KTs7KXtpZighbClicmVhayBlO3A9MHxyMChwPTB8Y3IoYyksMHxhW2wrMTI+PjJdKSxhWygwfGFbZj4+Ml0pKyhhW2wrMTY+PjJdPDwyKT4+Ml09cCxs''@;'; put 'put ''PTB8bWlbNjMmYVttPj4yXV0obSxsLDgpfX13aGlsZSgwKX1mdW5jdGlvbiBKNChsLGMpe3ZhciBmLHA7Y3w9MCxwPWxlLGxlPWxlKzE2fDAsZj1wLGw9MHxWaChsfD0wLDApO2U6ZG97aWYobClzd2l0Y2goMHxjKXtjYXNlIDA6bD0wfGFbbCsxNj4+Ml07YnJlYWsgZTtjYXNlIDE6bD0wfGFb''@;'; put 'put ''bCs4Pj4yXTticmVhayBlO2Nhc2UgMjpjYXNlIDM6bD0wfGFbbCsxMj4+Ml07YnJlYWsgZTtkZWZhdWx0OmFbZj4+Ml09YywkcigxLDk2NDI5LGYpLGw9MDticmVhayBlfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiBsZT1wLDB8bH1mdW5jdGlvbiBUQShsKXtyZXR1cm4gMHwoKGw9MHxKNCgw''@;'; put 'put ''fGRpKDB8Y3IobHw9MCkpLDMmYVtsPj4yXSkpPzB8cHUobCk6MCl9ZnVuY3Rpb24gamgobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTA7Zm9yKG09MHxtaVs2MyZhWyhsfD0wKT4+Ml1dKGwsMCwxMjgpO207KUE9MHxqZChmLDB8YVttKzg+PjJdLDB8YVttKzEyPj4yXSwwfGFb''@;'; put 'put ''bSsxNj4+Ml0scCksZmVbQSsyMj4+MF09MHxmZVttKzIyPj4wXSxmZVtBKzIxPj4wXT0wfGZlW20rMjE+PjBdLG1pWzYzJmFbYz4+Ml1dKGMsQSwxKSxtPTB8bWlbNjMmYVtsPj4yXV0obCxtLDgpfWZ1bmN0aW9uIGpkKGwsYyxmLHAsbSl7dmFyIEE7cmV0dXJuIGN8PTAsZnw9MCxwfD0wLG18''@;'; put 'put ''PTAsQT0wfE10KGx8PTAsMjQpLGZlW0ErMjA+PjBdPW0sYVtBKzg+PjJdPTB8cjAobCxjKSxhW0ErMTI+PjJdPTB8cjAobCxmKSxhW0ErMTY+PjJdPXAsMHxBfWZ1bmN0aW9uIElBKGwsYyl7dmFyIGYscDtyZXR1cm4gbHw9MCxmPWxlLGxlPWxlKzMyfDAsYVsocD1mKSs4Pj4yXT1jfD0wLGM9''@;'; put 'put ''MHxtaVs2MyZhW2w+PjJdXShsLHAsNCksbGU9ZiwwfGN9ZnVuY3Rpb24gbEMobCxjKXt2YXIgZjtyZXR1cm4gY3w9MCxmPTB8ZWgobHw9MCwwKSxjPTB8SUEobCxjKSxlaChsLGYpLDB8Y31mdW5jdGlvbiBzQyhsLGMpe3JldHVybiBjfD0wLDB8KChsPTB8aWMobHw9MCkpPzB8SUEoMHxhW2wr''@;'; put 'put ''OD4+Ml0sYyk6MCl9ZnVuY3Rpb24gc2kobCxjLGYscCl7dmFyIG0sQTtyZXR1cm4gY3w9MCxmfD0wLHB8PTAsQT1sZSxsZT1sZSsxNnwwLG09QSwobHw9MCl8fChsPTB8YVs0Njk0MV0pfHwoZmVbbT4+MF09MHxmZVsxODQwMF0sZmVbbSsxPj4wXT0wfGZlWzE4NDAxXSxmZVttKzI+PjBdPTB8''@;'; put 'put ''ZmVbMTg0MDJdLGZlW20rMz4+MF09MHxmZVsxODQwM10sbD0wfG9jKDAsbSwwKSxhWzQ2OTQxXT1sKSxsPXA/MHxmdW5jdGlvbiB6UChsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgYixtPTAsQT0wLHc9MDtiPTB8ZGkobHw9MCksVmgobCwxKSxtPTB8bEMoQT0wfEo0KGwsYyksZik7ZTpk''@;'; put 'put ''b3tpZihtKXc9bSsxMnwwLGUwKGwsMHxhW3c+PjJdKSxhW3c+PjJdPTB8cjAobCxwKSx3PTE2O2Vsc2V7aWYoMHwobT0wfElBKEEsZikpKXttPTB8amQobCxmLHAsMHxhW20rMTY+PjJdLGMpLG1pWzYzJmFbQT4+Ml1dKEEsbSwxKSx3PTE2O2JyZWFrfXN3aXRjaChtPTB8amQobCxmLHAsMHxw''@;'; put 'put ''dShBPTB8SjQoYixjKSksYyksbWlbNjMmYVtBPj4yXV0oQSxtLDEpLDB8Yyl7Y2FzZSAwOmJDKGIsYiw1NyxtLDEpLHc9MTY7YnJlYWsgZTtjYXNlIDE6Zm9yKGY9MHxEdChiKTs7KXtpZighZil7dz0xNjticmVhayBlfXVDKGwsZixtKSxmPTB8enQoYixmKX1jYXNlIDI6Y2FzZSAzOmZvcihB''@;'; put 'put ''PTB8RHQoYik7Oyl7aWYoIUEpe3c9MTY7YnJlYWsgZX1mb3IoZj0wfHcwKGIsQSk7ZjspdUMobCxmLG0pLGY9MHxTMChiLGYpO0E9MHx6dChiLEEpfWRlZmF1bHQ6YnJlYWsgZX19fXdoaWxlKDApO3JldHVybiAxNj09KDB8dykmJjA9PSgwfGMpJjAhPSgwfG0pJiZWbChsLG0scCksdG8obCxs''@;'; put 'put ''LG0pLDB8bX0obCxjLGYscCk6MHxmdW5jdGlvbiBwVChsLGMsZil7cmV0dXJuIGZ8PTAsMHwobD0obD0wfEo0KGx8PTAsY3w9MCkpPzB8SUEobCxmKTowKX0obCxjLGYpLGxlPUEsMHxsfWZ1bmN0aW9uIHVDKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIG0scD0wLEE9MDtjPTB8aWMoY3w9MCksKDB8''@;'; put 'put ''KHA9MHxhWyhtPWYrMTZ8MCk+PjJdKSk+Mz9hWyhjPWMrMTJ8MCk+PjJdPTB8cTBbMTI3JmFbOCsoMHxhWyhBPTB8YVtsKzY0Pj4yXSk+PjJdKT4+Ml1dKDB8YVtBKzEyPj4yXSwwfGFbYz4+Ml0scDw8PTIscCs0fDApOmM9YysxMnwwLEE9MHxyMChsLDB8YVtmKzEyPj4yXSksYVsoMHxhW2M+''@;'; put 'put ''PjJdKSsoYVttPj4yXTw8Mik+PjJdPUF9ZnVuY3Rpb24gVmwobCxjLGYpe2N8PTAsZnw9MDt2YXIgdyxwPTAsbT0wLEE9MCxiPTA7dz0wfGNyKGx8PTApLEE9MTIrKDB8aWMobCkpfDAsZTAodywwfGFbKDB8YVtBPj4yXSkrKGFbKGI9YysxNnwwKT4+Ml08PDIpPj4yXSksbT0wfHIwKHcsZiks''@;'; put 'put ''YVsoMHxhW0E+PjJdKSsoYVtiPj4yXTw8Mik+PjJdPW07ZG97aWYoISgzJmFbbD4+Ml0pKXtpZihBPTB8bEMocD0wfGFbMTYrKDB8VmgodywwKSk+PjJdLDB8YVsobT1jKzh8MCk+PjJdKSl7ZTAodywwfGFbKGI9QSsxMnwwKT4+Ml0pLGFbYj4+Ml09MHxyMCh3LGYpO2JyZWFrfWI9MHxqZCh3''@;'; put 'put ''LDB8YVttPj4yXSxmLDB8YVtiPj4yXSwzJmFbbD4+Ml0pLG1pWzYzJmFbcD4+Ml1dKHAsYiwxKTticmVha319d2hpbGUoMCk7cmV0dXJuIHRvKHcsbCxjKSwwfWZ1bmN0aW9uIE5zKGwsYyxmKXtmfD0wLGw9MHxKNChsfD0wLGN8PTApO2Rve2lmKGwpe2lmKGM9MHxhW2w+PjJdLGYpe2w9MHxt''@;'; put 'put ''aVs2MyZjXShsLGYsOCk7YnJlYWt9bD0wfG1pWzYzJmNdKGwsMCwxMjgpO2JyZWFrfWw9MH13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIGNDKGwpe3ZhciBjPTA7cmV0dXJuIGFbNDY5NDJdPWx8PTAsMHwoYz0wfGljKGwpKSYmKGsyKGwsYyksSGkobCwwfGFbYz4+Ml0pKSwoYz0wfFZo''@;'; put 'put ''KGwsMCkpPzA9PSgwfCQ0KGwsMHxhW2MrOD4+Ml0pKSYmMD09KDB8JDQobCwwfGFbYysxMj4+Ml0pKSYmMD09KDB8JDQobCwwfGFbYysxNj4+Ml0pKT8oSGkobCwwfGFbYz4+Ml0pLGM9MCk6Yz0xOmM9MCwwfGN9ZnVuY3Rpb24gazIobCxjKXtjfD0wO3ZhciBwLG0sZj0wO2ZvcihtPTB8Y3Io''@;'; put 'put ''bHw9MCkscD0wfFRBKGwpLGM9YysxMnwwLGw9MDtmPTB8YVtjPj4yXSwhKCgwfGwpPj0oMHxwKSk7KWUwKG0sMHxhW2YrKGw8PDIpPj4yXSksbD1sKzF8MDt4dChtLGYpfWZ1bmN0aW9uIExpKGwsYyl7cmV0dXJuKGM9MHxzQyhsfD0wLGN8PTApKT8obD0wfGFbMTIrKDB8aWMobCkpPj4yXSxj''@;'; put 'put ''PTB8YVtsKyhhW2MrMTY+PjJdPDwyKT4+Ml0pOmM9MCwwfGN9ZnVuY3Rpb24gSG8obCxjKXtyZXR1cm4gY3w9MCxsPTB8YVsxMisoMHxpYyhsfD0wKSk+PjJdLDB8YVtsKyhhW2MrMTY+PjJdPDwyKT4+Ml19ZnVuY3Rpb24ga2MobCxjLGYpe3JldHVybiBmfD0wLChjPTB8c0MobHw9MCxjfD0w''@;'; put 'put ''KSk/KFZsKGwsYyxmKSxjPTApOmM9LTEsMHxjfWZ1bmN0aW9uIEk1KGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBtPTA7cmV0dXJuKG09MHxzaShtPTB8Y3IobHw9MCksMyZhW2w+PjJdLGMsMCkpfHwobT0wfHNpKG09MHxjcihsKSwzJmFbbD4+Ml0sYyxwKSksVmwobCxtLGYpLDB9ZnVu''@;'; put 'put ''Y3Rpb24gUjYobCxjKXtjfD0wO3ZhciBBLGY9MCxwPTAsbT0wO0E9MHxjcihsfD0wKSxtPTB8YVtsPj4yXTtlOmRve2lmKDMmKGFbYz4+Ml1ebSkpZj0xO2Vsc2UgZm9yKGY9MSxwPTA7Oyl7aWYoIShwPTB8TnMoQSwzJm0scCkpKWJyZWFrIGU7aWYoIShmPTB8c0MoYywwfGFbcCs4Pj4yXSkp''@;'; put 'put ''KXtmPTE7YnJlYWsgZX1WbChjLGYsbT0wfEhvKGwscCkpLDB8T28obSkmJmswKDB8SG8oYyxmKSksZj0wLG09MHxhW2w+PjJdfX13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIHcwKGwsYyl7dmFyIGY9MDtyZXR1cm4oYz0wfFNmKGx8PTAsY3w9MCkpPyhDYygwfGFbKGY9bCs0NHwwKT4+''@;'; put 'put ''Ml0sMHxhWyhsPWMrMzJ8MCk+PjJdKSxjPTB8bWlbNjMmYVsoYz0wfGFbZj4+Ml0pPj4yXV0oYywwLDEyOCksYVtsPj4yXT0wfFAzKDB8YVtmPj4yXSkpOmM9MCwwfGN9ZnVuY3Rpb24gU2YobCxjKXt2YXIgZixwO3JldHVybiBwPWxlLGxlPWxlKzQ4fDAsZj1wLCgwfGFbMjQrKGN8PTApPj4y''@;'; put 'put ''XSk9PSgwfChsfD0wKSk/bD1jKzI4fDA6KGFbZisxNj4+Ml09YyxsPTB8bWlbNjMmYVsobD0wfGFbbCs0MD4+Ml0pPj4yXV0obCxmLDQpKSxsZT1wLDB8bH1mdW5jdGlvbiBTMChsLGMpe3ZhciBmPTAscD0wO3JldHVybihmPTB8U2YobHw9MCwwfGFbKDM9PSgzJmFbKGN8PTApPj4yXXwwKT9j''@;'; put 'put ''OmMrNDh8MCkrNDA+PjJdKSk/KENjKDB8YVsocD1sKzQ0fDApPj4yXSwwfGFbKGY9ZiszMnwwKT4+Ml0pLGw9MHxtaVs2MyZhWyhsPTB8YVtwPj4yXSk+PjJdXShsLGMsOCksYVtmPj4yXT0wfFAzKDB8YVtwPj4yXSkpOmw9MCwwfGx9ZnVuY3Rpb24gTWYobCxjKXt2YXIgZj0wO3JldHVybihj''@;'; put 'put ''PTB8U2YobHw9MCxjfD0wKSk/KENjKDB8YVsoZj1sKzQ0fDApPj4yXSwwfGFbKGw9YysyOHwwKT4+Ml0pLGM9MHxtaVs2MyZhWyhjPTB8YVtmPj4yXSk+PjJdXShjLDAsMTI4KSxhW2w+PjJdPTB8UDMoMHxhW2Y+PjJdKSk6Yz0wLDB8Y31mdW5jdGlvbiBGMyhsLGMpe3ZhciBmPTAscD0wO3Jl''@;'; put 'put ''dHVybihmPTB8U2YobHw9MCwwfGFbKDI9PSgzJmFbKGN8PTApPj4yXXwwKT9jOmMrLTQ4fDApKzQwPj4yXSkpPyhDYygwfGFbKHA9bCs0NHwwKT4+Ml0sMHxhWyhmPWYrMjh8MCk+PjJdKSxsPTB8bWlbNjMmYVsobD0wfGFbcD4+Ml0pPj4yXV0obCxjLDgpLGFbZj4+Ml09MHxQMygwfGFbcD4+''@;'; put 'put ''Ml0pKTpsPTAsMHxsfWZ1bmN0aW9uIE1zKGwsYyl7dmFyIGY9MDtyZXR1cm4oZj0wfHcwKGx8PTAsY3w9MCkpfHwoZj0wfE1mKGwsYykpLDB8Zn1mdW5jdGlvbiBWcyhsLGMsZil7bHw9MCxjfD0wLGZ8PTA7ZTpkb3tpZigyPT0oMyZhW2M+PjJdfDApKXtpZighKGM9MHxTMChsLGMpKSl7Yz0w''@;'; put 'put ''O2Rve2lmKCEoYz1jPzB8RjMobCxjKTowfE1mKGwsZikpKXtjPTA7YnJlYWsgZX19d2hpbGUoKDB8YVtjKzQwPj4yXSk9PSgwfGYpKX19ZWxzZSBkb3tpZihjPTB8RjMobCxjKSwhYyl7Yz0wO2JyZWFrIGV9fXdoaWxlKCgwfGFbYys0MD4+Ml0pPT0oMHxmKSl9d2hpbGUoMCk7cmV0dXJuIDB8''@;'; put 'put ''Y31mdW5jdGlvbiBZUChsLGMpe0Q1KGx8PTAsY3w9MCl9ZnVuY3Rpb24gRDUobCxjKXtsfD0wO3ZhciBmLHAsbSxBLGIsdz0wLGs9MCxNPTAsRD0wO2ZvcihiPWxlLGxlPWxlKzE2fDAsZj1iLEE9Mj09KDB8KHc9MyZhWyhjfD0wKT4+Ml0pKT9jOmMrLTQ4fDAscD0wfGFbKHc9Mz09KDB8dyk/''@;'; put 'put ''YzpjKzQ4fDApKzQwPj4yXSxtPTB8YVtBKzQwPj4yXTtsJiYoYVtmPj4yXT1hW2M+PjJdLGFbZis0Pj4yXT1hW2MrND4+Ml0sYVtmKzg+PjJdPWFbYys4Pj4yXSxhW2YrMTI+PjJdPWFbYysxMj4+Ml0sISgwfFg0KGwscCxtLGYpKSk7KWs9MHxTZihsLHApLGgxKDB8YVsoRD1sKzQ0fDApPj4y''@;'; put 'put ''XSxrKzMyfDAsQSksaDEoMHxhWyhNPWwrNDh8MCk+PjJdLGsrMjR8MCxBKSxrPTB8U2YobCxtKSxoMSgwfGFbRD4+Ml0saysyOHwwLHcpLGgxKDB8YVtNPj4yXSxrKzIwfDAsdyksbD0wfGsxKGwpO2xlPWJ9ZnVuY3Rpb24gWDQobCxjLGYscCl7bHw9MCxwfD0wO3ZhciBtLHcsQT0wO3JldHVy''@;'; put 'put ''biB3PWxlLGxlPWxlKzQ4fDAsbT13LDA9PSgwfChjfD0wKSl8MD09KDB8KGZ8PTApKXx8KGFbbT4+Ml09YVtwPj4yXSxhW20rND4+Ml09YVtwKzQ+PjJdLGFbbSs4Pj4yXT1hW3ArOD4+Ml0sYVttKzEyPj4yXT1hW3ArMTI+PjJdLGFbbSs0MD4+Ml09YywwPT0oMHwoQT0wfFNmKGwsZikpKSk/''@;'; put 'put ''bD0wOihDYygwfGFbKHA9bCs0OHwwKT4+Ml0sMHxhWyhBPUErMjB8MCk+PjJdKSxsPTB8bWlbNjMmYVsobD0wfGFbcD4+Ml0pPj4yXV0obCxtLDQpLGFbQT4+Ml09MHxQMygwfGFbcD4+Ml0pKSxsZT13LDB8bH1mdW5jdGlvbiBoMShsLGMsZil7Znw9MCxDYyhsfD0wLDB8YVsoY3w9MCk+PjJd''@;'; put 'put ''KSxtaVs2MyZhW2w+PjJdXShsLGYsMSksYVtjPj4yXT0wfFAzKGwpfWZ1bmN0aW9uIEthKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBiLGssTSxSLEE9MCx3PTAsRD0wLEc9MDtSPWxlLGxlPWxlKzQ4fDAsYj1SKzI0fDAsTT1SKzE2fDAsaz1SO2Rve2lmKDB8SzQo''@;'; put 'put ''bCwyLHAsTSwwKSlhWyhHPWspPj4yXT0wLGFbRys0Pj4yXT0wLEE9MHxhWyhHPU0pKzQ+PjJdLGFbKEQ9ays4fDApPj4yXT1hW0c+PjJdLGFbRCs0Pj4yXT1BLGFbaz4+Ml09MixEPTc7ZWxzZSBpZihwKUQ9MTc7ZWxzZXtpZigwfG0mJjA9PSgwfExBKGwpKSl7RD0xODticmVha31hW2s+PjJd''@;'; put 'put ''PTAsYVtrKzQ+PjJdPTAsYVtrKzg+PjJdPTAsYVtrKzEyPj4yXT0wLEQ9N319d2hpbGUoMCk7ZTpkb3tpZig3PT0oMHxEKSl7YVtiPj4yXT1hW2s+PjJdLGFbYis0Pj4yXT1hW2srND4+Ml0sYVtiKzg+PjJdPWFbays4Pj4yXSxhW2IrMTI+PjJdPWFbaysxMj4+Ml0sQT0wfFg0KGwsYyxmLGIp''@;'; put 'put ''O3Q6ZG97aWYoIUEpe2lmKDB8dDcobCkmJihhW2I+PjJdPWFbaz4+Ml0sYVtiKzQ+PjJdPWFbays0Pj4yXSxhW2IrOD4+Ml09YVtrKzg+PjJdLGFbYisxMj4+Ml09YVtrKzEyPj4yXSwwfCh3PTB8WDQobCxmLGMsYikpKSl7QT13O2JyZWFrfWRve2lmKDB8bSl7aWYoQT0wfGRpKGwpLGFbYj4+''@;'; put 'put ''Ml09YVtrPj4yXSxhW2IrND4+Ml09YVtrKzQ+PjJdLGFbYis4Pj4yXT1hW2srOD4+Ml0sYVtiKzEyPj4yXT1hW2srMTI+PjJdLCEoKEE9MHxYNChBLGMsZixiKSl8fDB8dDcobCkmJihBPTB8ZGkobCksYVtiPj4yXT1hW2s+PjJdLGFbYis0Pj4yXT1hW2srND4+Ml0sYVtiKzg+PjJdPWFbays4''@;'; put 'put ''Pj4yXSxhW2IrMTI+PjJdPWFbaysxMj4+Ml0sQT0wfFg0KEEsZixjLGIpLEEpKSlicmVhaztZUChsLEEpO2JyZWFrIHR9fXdoaWxlKDApO0Q9MTc7YnJlYWsgZX19d2hpbGUoMCl9fXdoaWxlKDApO3JldHVybiAxNz09KDB8RCkmJihtP0Q9MTg6QT0wKSwxOD09KDB8RCkmJigwIT0oMHxmdW5j''@;'; put 'put ''dGlvbiBXUChsLGMsZil7Y3w9MCxmfD0wO3ZhciBtLEEscD0wO3JldHVybiBBPWxlLGxlPWxlKzMyfDAscD1BKzE2fDAsbT1BLHA9MCE9KDB8TEEobHw9MCkpJiYoYVttPj4yXT0wLGFbbSs0Pj4yXT0wLGFbbSs4Pj4yXT0wLGFbbSsxMj4+Ml09MCxhW3A+PjJdPWFbbT4+Ml0sYVtwKzQ+PjJd''@;'; put 'put ''PWFbbSs0Pj4yXSxhW3ArOD4+Ml09YVttKzg+PjJdLGFbcCsxMj4+Ml09YVttKzEyPj4yXSwwIT0oMHxYNChsLGMsZixwKSkpPzA6MjU1JigoMHxYdFtsKzI0Pj4wXSk+Pj4yJjFeMSl8KDB8YykhPSgwfGYpLGxlPUEsMHxwfShsLGMsZikpJiYwIT0oMHxLNChsLDIscCxNLDEpKT8oQT0wfGZ1''@;'; put 'put ''bmN0aW9uIG1UKGwsYyxmLHAsbSl7Znw9MCxwfD0wLG18PTA7dmFyIEEsdyxiLGssTSxEPTA7cmV0dXJuIFluKGx8PTAsY3w9MCwxKSxZbihsLGYsMSksdz00OCsoQT0wfE10KGwsOTYpKXwwLE09MHxIMyhsLDIpLGI9MHxhW3c+PjJdLGs9MHxhW0E+PjJdLGFbKEQ9QSs4fDApPj4yXT1wLGFb''@;'; put 'put ''RCs0Pj4yXT1tLGFbKEQ9QSs1NnwwKT4+Ml09cCxhW0QrND4+Ml09bSxhW0E+PjJdPTEyJmt8KG09TTw8NCl8MixhW3c+PjJdPTEyJmJ8bXwzLGFbQSs4OD4+Ml09YyxhW0ErNDA+PjJdPWYsRDUobCxBKSw2NCZmZVtsKzI0Pj4wXSYmKGgwKEEsOTY0MDQsMTYsMCksb0MobCxBKSksdjAobCxB''@;'; put 'put ''KSwwfEF9KGwsYyxmLDB8YVsoQT1NKT4+Ml0sMHxhW0ErND4+Ml0pLEw1KGwsMixBKSk6QT0wKSxsZT1SLDB8QX1mdW5jdGlvbiBLbShsLGMsZil7dmFyIHAsbSxBLHc7Znw9MCxBPShmPTM9PSgzJmFbKGN8PTApPj4yXXwwKSk/YystNDh8MDpjLGY9Zj9jOmMrNDh8MCxjPTB8YVtBKzQwPj4y''@;'; put 'put ''XSx3PTB8U2YobHw9MCwwfGFbZis0MD4+Ml0pLCRtKDB8YVsobT1sKzQ0fDApPj4yXSx3KzMyfDAsQSksJG0oMHxhWyhwPWwrNDh8MCk+PjJdLHcrMjR8MCxBKSxjPTB8U2YobCxjKSwkbSgwfGFbbT4+Ml0sYysyOHwwLGYpLCRtKDB8YVtwPj4yXSxjKzIwfDAsZil9ZnVuY3Rpb24gJG0obCxj''@;'; put 'put ''LGYpe2Z8PTAsQ2MobHw9MCwwfGFbKGN8PTApPj4yXSksbWlbNjMmYVtsPj4yXV0obCxmLDIpLGFbYz4+Ml09MHxQMyhsKX1mdW5jdGlvbiBxbShsLGMpe2x8PTA7dmFyIGYscCxtPTAsQT0wO3JldHVybiBmPWxlLGxlPWxlKzE2fDAsQT0wfGFbKDM9PSgwfChtPTMmYVsoYz0yPT0oMyZhWyhj''@;'; put 'put ''fD0wKT4+Ml18MCk/YzpjKy00OHwwKT4+Ml0pKT9jOmMrNDh8MCkrNDA+PjJdLG09MHxhWygyPT0oMHxtKT9jOmMrLTQ4fDApKzQwPj4yXSxhWyhwPWYpPj4yXT1hW2M+PjJdLGFbcCs0Pj4yXT1hW2MrND4+Ml0sYVtwKzg+PjJdPWFbYys4Pj4yXSxhW3ArMTI+PjJdPWFbYysxMj4+Ml0sMHxY''@;'; put 'put ''NChsLEEsbSxwKT8oKDB8ZGkobCkpPT0oMHxsKSYmKDY0JmZlW2wrMjQ+PjBdJiZmdW5jdGlvbiBnVChsKXt2YXIgYzswfChjPTB8aWMobHw9MCkpJiYoazIobCxjKSxIaShsLDk2NDA0KSl9KGMpLGJpKGwsYykscDIoYyksQjYobCwyLDB8YVsoQT1jKzh8MCk+PjJdLDB8YVtBKzQ+PjJdKSks''@;'; put 'put ''MHxiQyhsLGMsNTgsMCwwKT9jPS0xOigoMHxkaShsKSk9PSgwfGwpJiZ4dChsLGMpLGM9MCkpOmM9LTEsbGU9ZiwwfGN9ZnVuY3Rpb24gWmQobCxjLGYpe3ZhciBBLHcscD0wLG09MDt3PWxlLGxlPWxlKzE2fDAscD13LG09MHxZbihsfD0wLDB8YVsoMz09KDMmYVsoY3w9MCk+PjJdfDApP2M6''@;'; put 'put ''Yys0OHwwKSs0MD4+Ml0sZnw9MCksQT0wfFluKGwsMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdLGYpO2Rve2lmKDAhPSgwfG0pJjAhPSgwfEEpKXtpZihhW3A+PjJdPWFbYz4+Ml0sYVtwKzQ+PjJdPWFbYys0Pj4yXSxhW3ArOD4+Ml09YVtjKzg+PjJdLGFbcCsxMj4+''@;'; put 'put ''Ml09YVtjKzEyPj4yXSwwIT0oMHxmKSYobT0wPT0oMHwocD0wfFg0KGwsbSxBLHApKSkpKUQ1KGwsYykscD1jO2Vsc2UgaWYobSlicmVhaztyZXR1cm4gbGU9dywwfCgoMHwoZj0zJmFbcD4+Ml0pKT09KDMmYVtjPj4yXXwwKT9wOnArKDQ4KigzPT0oMHxmKT8tMToxKXwwKXwwKX19d2hpbGUo''@;'; put 'put ''MCk7cmV0dXJuIGxlPXcsMH1mdW5jdGlvbiBvYyhsLGMsZil7bHw9MCxjfD0wO3ZhciBwLG0sQSx3PTAsYj0wLGs9MDtyZXR1cm4gQT1sZSxsZT1sZSsxNnwwLG09QSxiPTB8ZnVuY3Rpb24gVVAobCl7dmFyIGMscCxmPTAsbT0wO3JldHVybiBmPShjPTAhPSgwfChsfD0wKSkpPzA9PSgwfChm''@;'; put 'put ''PTB8YVtsPj4yXSkpPzE4NzM2OmY6MTg3MzYsbT0wfF9vWzYzJmFbZj4+Ml1dKGwpLHA9MHxCaVsxMjcmYVtmKzQ+PjJdXShtLDgwKSxhW3A+PjJdPWYsYVtwKzEyPj4yXT1tLGM/KGFbcCs0Pj4yXT0wPT0oMHwobT0wfGFbbCs0Pj4yXSkpPzE4NjEyOm0sbD0wPT0oMHwobD0wfGFbbCs4Pj4y''@;'; put 'put ''XSkpPzE4NzEyOmwpOihhW3ArND4+Ml09MTg2MTIsbD0xODcxMiksYVtwKzg+PjJdPWwsZmVbcCs1Mj4+MF09MSwwfHB9KGZ8PTApLHA9MHxCaVsxMjcmYVs0KygwfGFbYj4+Ml0pPj4yXV0oMHxhW2IrMTI+PjJdLDcyKSxhW3A+PjJdPS00JmFbcD4+Ml0sYVsodz1wKzY0fDApPj4yXT1iLGFb''@;'; put 'put ''KGs9cCsyNHwwKT4+Ml09Yz0wfGFbYz4+Ml0sZmVbaz4+MF09MjU1JmN8OCxhW3ArNjA+PjJdPXAsZj0wfEJpWzEyNyZhW2FbYis0Pj4yXT4+Ml1dKHAsZiksYVsxNisoMHxhW3c+PjJdKT4+Ml09ZiwwfEs0KHAsMCxsLG0sMSkmJihiPTB8YVsodz1tKSs0Pj4yXSxhWyhrPXArOHwwKT4+Ml09''@;'; put 'put ''YVt3Pj4yXSxhW2srND4+Ml09YiksTDUoaz0wfGhvKHApLDAscCksbGU9QSwwfGt9ZnVuY3Rpb24gaG8obCl7dmFyIGM9MCxmPTA7cmV0dXJuIGFbMzYrKGx8PTApPj4yXT0wfFpoKGwsMTg3OTIsMHxhWzQ1ODldKSxhW2wrNDA+PjJdPTB8WmgobCwxODc1NiwwfGFbNDU4OV0pLGM9KDB8ZGko''@;'; put 'put ''bCkpPT0oMHxsKSxhW2wrNDQ+PjJdPTB8WmgobCxjPzE4NDA0OjE4NDQwLDB8YVs0NTg5XSksYz0oMHxkaShsKSk9PSgwfGwpLGFbbCs0OD4+Ml09MHxaaChsLGM/MTg0NzY6MTg1MTIsMHxhWzQ1ODldKSxhW2wrNTI+PjJdPTB8WmgobCwxODU0OCwwfGFbNDU4OV0pLDAhPSgwfChjPTB8azEo''@;'; put 'put ''bCkpKSYmKGY9MHxIMyhjLDApLGFbbD4+Ml09MTUmYVtsPj4yXXxmPDw0LG1pWzYzJmFbKGY9MHxhW2MrNTI+PjJdKT4+Ml1dKGYsbCwxKSwhKDY0JmZlW2MrMjQ+PjBdKSl8fFQ1KGwpLHYwKGwsbCksMHxsfWZ1bmN0aW9uIEgzKGwsYyl7dmFyIGY7cmV0dXJuIGM9MHx6bCgwfGFbKGM9Zj0y''@;'; put 'put ''NCsoMHxhWzY0KyhsfD0wKT4+Ml0pKygoY3w9MCk8PDMpfDApPj4yXSwwfGFbYys0Pj4yXSwxLDApLGw9RG4sYVtmPj4yXT1jLGFbZis0Pj4yXT1sLERuPWwsMHxjfWZ1bmN0aW9uIEMxKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTA7KG09MD09KDB8KHA9MHxrMShsfD0wKSkpKSYmMCE9KDB8YVsx''@;'; put 'put ''NisoMHxhW2FbKGM9bCs2NHwwKT4+Ml0+PjJdKT4+Ml0pPyhiaShsLGwpLEI2KGwsMCwwfGFbKG09bCs4fDApPj4yXSwwfGFbbSs0Pj4yXSksQ29bMTI3JmFbMTYrKDB8YVsoYz0wfGFbYz4+Ml0pPj4yXSk+PjJdXSgwfGFbYysxMj4+Ml0pLGM9MCk6Zj00O2Rve2lmKDQ9PSgwfGYpKXtmb3Io''@;'; put 'put ''Yz0wfHdzKGwpO2M7KWY9MHxFcyhjKSxDMShjKSxjPWY7Zm9yKGM9MHxEdChsKTtjOylmPTB8enQobCxjKSxxcihsLGMpLGM9ZjtpZihHZChsKSxiaShsLGwpLDA9PSgwfCQ0KGwsMHxhW2wrNDA+PjJdKSkmJjA9PSgwfCQ0KGwsMHxhW2wrMzY+PjJdKSkmJjA9PSgwfCQ0KGwsMHxhW2wrNDg+''@;'; put 'put ''PjJdKSkmJjA9PSgwfCQ0KGwsMHxhW2wrNDQ+PjJdKSkmJjA9PSgwfCQ0KGwsMHxhW2wrNTI+PjJdKSkpe2lmKDY0JmZlW2wrMjQ+PjBdJiYwfGNDKGwpKXtjPS0xO2JyZWFrfWlmKHAyKGwpLEI2KGwsMCwwfGFbKGY9bCs4fDApPj4yXSwwfGFbZis0Pj4yXSksIW0pe3I3KHAsbCkseHQocCxs''@;'; put 'put ''KSxjPTA7YnJlYWt9Zm9yKGM9bCs2NHwwO3A9MHxhWzQ4KyhmPTB8YVtjPj4yXSk+PjJdOyloaShsLDB8YVtwPj4yXSk7Q29bMTI3JmFbMjArKDB8YVtmKzQ+PjJdKT4+Ml1dKDB8YVtmKzE2Pj4yXSksMHxycihsKT9jPS0xOihHc1s2MyZhWyhwPTEyKygwfGFbKGM9MHxhW2M+PjJdKT4+Ml0p''@;'; put 'put ''fDApPj4yXV0obT0wfGFbYysxMj4+Ml0sbCksR3NbNjMmYVtwPj4yXV0obSxjKSxjPTApfWVsc2UgYz0tMX19d2hpbGUoMCk7cmV0dXJuIDB8Y31mdW5jdGlvbiBHbyhsKXtyZXR1cm4gMHxwdSgwfGFbNDArKGx8PTApPj4yXSl9ZnVuY3Rpb24gTjMobCl7dmFyIGM9MCxmPTA7Zm9yKGM9MCxm''@;'; put 'put ''PTB8RHQobHw9MCk7ZjspYz0oMHx6ZChsLGYsMCwxKSkrY3wwLGY9MHx6dChsLGYpO3JldHVybiAwfGN9ZnVuY3Rpb24gemQobCxjLGYscCl7dmFyIG07cmV0dXJuIGZ8PTAscHw9MCwobT0wfFNmKGx8PTAsY3w9MCkpPyhjPXA/MHxlNygwfGFbbCs0ND4+Ml0sbSszMnwwKTowLGYmJihjPSgw''@;'; put 'put ''fGU3KDB8YVtsKzQ0Pj4yXSxtKzI4fDApKStjfDApKTpjPTAsMHxjfWZ1bmN0aW9uIGU3KGwsYyl7dmFyIGY7cmV0dXJuIENjKGx8PTAsMHxhWyhjfD0wKT4+Ml0pLGY9MHxwdShsKSxhW2M+PjJdPTB8UDMobCksMHxmfWZ1bmN0aW9uIFNjKGwpe3JldHVybiAxJmZlWzI0KyhsfD0wKT4+MF18''@;'; put 'put ''MH1mdW5jdGlvbiB0NyhsKXtyZXR1cm4gMD09KDB8U2MobHw9MCkpfDB9ZnVuY3Rpb24gTEEobCl7cmV0dXJuKDB8WHRbMjQrKGx8PTApPj4wXSk+Pj4xJjF8MH1mdW5jdGlvbiBLNChsLGMsZixwLG0pe2x8PTAsY3w9MCxwfD0wLG18PTA7dmFyIHcsQT0wLGI9MDt3PTAhPSgwfChmfD0wKSk7''@;'; put 'put ''ZG97aWYodyl7aWYoMzchPSgwfGZlW2Y+PjBdKSYmMHwoQT0wfFIyWzEyNyZhWzQrKDB8YVs0KyhBPTB8YVtsKzY0Pj4yXSk+PjJdKT4+Ml1dKDB8YVtBKzE2Pj4yXSxjLGYscCxtKSkpYnJlYWs7KEE9MHxtQyhsLGMsZixwKSl8fChiPTUpfWVsc2UgYj01fXdoaWxlKDApO3JldHVybiA1PT0o''@;'; put 'put ''MHxiKSYmKG0/dyYwIT0oMHwoQT0wfFIyWzEyNyZhWzQrKDB8YVs0KyhBPTB8YVtsKzY0Pj4yXSk+PjJdKT4+Ml1dKDB8YVtBKzE2Pj4yXSxjLDAscCxtKSkpJiZmdW5jdGlvbiB2QyhsLGMsZixwLG0pe2N8PTAsZnw9MCxwfD0wLG18PTA7dmFyIHcsQT0wO3c9MHxNdChsfD0wLDMyKSxhWyhB''@;'; put 'put ''PXcrMTZ8MCk+PjJdPXAsYVtBKzQ+PjJdPW0sYVt3KzI0Pj4yXT0wfHIwKGwsZiksKGM9MHxhWzU2KyhmPTB8YVsoQT1sKzY0fDApPj4yXSkrKChwPTM9PSgwfGMpPzI6Yyk8PDIpPj4yXSk/KG09YyxjPWYpOihtPTB8WmgobCwxODY0MCwwfGFbNDU4OV0pLGFbNTYrKDB8YVtBPj4yXSkrKHA8''@;'; put 'put ''PDIpPj4yXT1tLGM9MHxhW0E+PjJdKSwoYz0wfGFbYys2OCsocDw8Mik+PjJdKXx8KGM9MHxaaChsLDE4Njc2LDB8YVs0NTg5XSksYVs2OCsoMHxhW0E+PjJdKSsocDw8Mik+PjJdPWMpLG1pWzYzJmFbbT4+Ml1dKG0sdywxKSxtaVs2MyZhW2M+PjJdXShjLHcsMSl9KGwsYyxmLDB8YVsoYj1w''@;'; put 'put ''KT4+Ml0sMHxhW2IrND4+Ml0pOkE9MCksMHxBfWZ1bmN0aW9uIE9BKGwsYyxmLHApe3JldHVybiAwfHEwWzEyNyZhWzgrKDB8YVs0KyhsPTB8YVs2NCsobHw9MCk+PjJdKT4+Ml0pPj4yXV0oMHxhW2wrMTY+PjJdLGN8PTAsZnw9MCxwfD0wKX1mdW5jdGlvbiBCNihsLGMsZixwKXt5VChsfD0w''@;'; put 'put ''LGN8PTAsZnw9MCxwfD0wKSxSY1szMSZhWzEyKygwfGFbNCsobD0wfGFbbCs2ND4+Ml0pPj4yXSk+PjJdXSgwfGFbbCsxNj4+Ml0sYyxmLHApfWZ1bmN0aW9uIHRpKGwpe3ZhciBBLHcsYz0wLGY9MCxwPTAsbT0wO3c9bGUsbGU9bGUrMTZ8MCxBPXcsYz0wfGZ1bmN0aW9uIGFjKGwsYyxmLHAp''@;'; put 'put ''e3JldHVybiAwfChsPShsPTB8QVQobHw9MCxjfD0wLGZ8PTAscHw9MCkpPzB8YVtsKzI0Pj4yXTowKX0oZj0wfGNyKGx8PTApLDMmYVtsPj4yXSwwfGFbKGM9bT1sKzh8MCk+PjJdLDB8YVtjKzQ+PjJdKTtkb3tpZighYyl7aWYoMHwoZj0wfGFbMTYrKDB8YVs0KyhjPTB8YVtmKzY0Pj4yXSk+''@;'; put 'put ''PjJdKT4+Ml0pJiYwfChwPTB8cTBbMTI3JmZdKDB8YVtjKzE2Pj4yXSwzJmFbbD4+Ml0sMHxhWyhwPW0pPj4yXSwwfGFbcCs0Pj4yXSkpKXtjPXA7YnJlYWt9Mj09KDMmYVtsPj4yXXwwKT9jPTA6KHA9MHxhW20+PjJdLG09MHxhW20rND4+Ml0sYVtBPj4yXT0zNyxhWyhjPUErOHwwKT4+Ml09''@;'; put 'put ''cCxhW2MrND4+Ml09bSxvbygxOTQ3NzMsOTY0NTYsQSksYz0xOTQ3NzMpfX13aGlsZSgwKTtyZXR1cm4gbGU9dywwfGN9ZnVuY3Rpb24gTDUobCxjLGYpe2RsWzEyNyZhWzI0KygwfGFbNCsobD0wfGFbNjQrKGx8PTApPj4yXSk+PjJdKT4+Ml1dKDB8YVtsKzE2Pj4yXSxjfD0wLGZ8PTApfWZ1''@;'; put 'put ''bmN0aW9uIG1DKGwsYyxmLHApe2Z8PTAscHw9MDt2YXIgYixtPTAsQT0wLHc9MDtyZXR1cm4gYj1sZSxsZT1sZSszMnwwLHc9YiwwIT0oMHwoYz0wfGFbNTYrKDB8YVs2NCsobHw9MCk+PjJdKSsoKDM9PSgwfChjfD0wKSk/MjpjKTw8Mik+PjJdKSkmJjAhPSgwfChtPTB8WnIobCxmKSkpJiYo''@;'; put 'put ''YVt3KzI0Pj4yXT1tLDAhPSgwfChBPTB8bWlbNjMmYVtjPj4yXV0oYyx3LDQpKSkpPyh3PTB8YVs0KyhmPUErMTZ8MCk+PjJdLGFbKGM9cCk+PjJdPWFbZj4+Ml0sYVtjKzQ+PjJdPXcsYz0xKTpjPTAsbGU9YiwwfGN9ZnVuY3Rpb24gQVQobCxjLGYscCl7dmFyIG0sQTtyZXR1cm4gcHw9MCxB''@;'; put 'put ''PWxlLGxlPWxlKzMyfDAsbT1BLChsPTB8YVs2OCsoMHxhWzY0KyhsfD0wKT4+Ml0pKygoMz09KDB8KGN8PTApKT8yOmMpPDwyKT4+Ml0pPyhhWyhjPW0rMTZ8MCk+PjJdPWZ8PTAsYVtjKzQ+PjJdPXAsbD0wfG1pWzYzJmFbbD4+Ml1dKGwsbSw0KSk6bD0wLGxlPUEsMHxsfWZ1bmN0aW9uIHlU''@;'; put 'put ''KGwsYyxmLHApe3ZhciBtO3JldHVybihjPTB8QVQobHw9MCxtPTM9PSgwfChjfD0wKSk/MjpjLGZ8PTAscHw9MCkpPyhtaVs2MyZhWyhmPTB8YVs1NisoMHxhWyhwPWwrNjR8MCk+PjJdKSsobTw8Mik+PjJdKT4+Ml1dKGYsYywyKSxtaVs2MyZhWyhwPTB8YVs2OCsoMHxhW3A+PjJdKSsobTw8''@;'; put 'put ''Mik+PjJdKT4+Ml1dKHAsYywyKSxlMChsLDB8YVtjKzI0Pj4yXSkseHQobCxjKSxjPTEpOmM9MCwwfGN9ZnVuY3Rpb24gR2QobCl7YVs0Njk0Ml09bHw9MCxqMyg1NisoMHxhWyhsPWwrNjR8MCk+PjJdKXwwKSxqMyg2OCsoMHxhW2w+PjJdKXwwKX1mdW5jdGlvbiBqMyhsKXtsfD0wO3ZhciBj''@;'; put 'put ''PTAsZj0wLHA9MDtmb3IoYz0wOzMhPSgwfGMpOykwfChwPTB8YVsoZj1sKyhjPDwyKXwwKT4+Ml0pJiYoTmwocCksYVtmPj4yXT0wKSxjPWMrMXwwfWZ1bmN0aW9uIHdlKGwpe3ZhciBjLGYscDtyZXR1cm4gbHw9MCxjPWxlLGxlPWxlKzMyfDAscD1jKzEyfDAsZj1jLGFbNDY4Ml09YVs0Njc5''@;'; put 'put ''XSxhWzQ2ODNdPWFbNDY4MF0sYVtwPj4yXT1sLGFbcCs0Pj4yXT0wfFVvKGwpLGFbcCs4Pj4yXT0wLGFbZj4+Ml09MTg3MzYsYVtmKzQ+PjJdPTE4NjEyLGFbZis4Pj4yXT0xODcyNCxsPTB8ckYocCxmKSxmdW5jdGlvbiBwbyhsKXthWzQ2OTY2XT1sfD0wLGFbNDcyNV09MX0oMCksbGU9Yyww''@;'; put 'put ''fGx9ZnVuY3Rpb24gTXQobCxjKXt2YXIgZjtyZXR1cm4gZj1sZSxsZT1sZSsxNnwwLChsPTB8QmlbMTI3JmFbNCsoMHxhWyhsPTB8YVs2NCsobHw9MCk+PjJdKT4+Ml0pPj4yXV0oMHxhW2wrMTI+PjJdLGN8PTApKXx8JHIoMSw5NjQ2MixmKSxsZT1mLDB8bH1mdW5jdGlvbiB4dChsLGMpe2x8''@;'; put 'put ''PTAsMHwoY3w9MCkmJkdzWzYzJmFbMTIrKDB8YVsobD0wfGFbbCs2ND4+Ml0pPj4yXSk+PjJdXSgwfGFbbCsxMj4+Ml0sYyl9ZnVuY3Rpb24gQ24obCxjLGYpe3JldHVybiBsfD0wLGZ8PTAsYVs0NjU2NF09Y3w9MCxhWzQ2NTY1XT1mLGFbNDY5NDddPTE4NjI0OCwwfCgobD0wfG1pWzYzJmFb''@;'; put 'put ''KGw9MHxhW2wrNDA+PjJdKT4+Ml1dKGwsMTg3NzcyLDQpKT8wfGFbbCsxNj4+Ml06MCl9ZnVuY3Rpb24gRHQobCl7cmV0dXJuIDB8KChsPTB8bWlbNjMmYVsobD0wfGFbMzYrKGx8PTApPj4yXSk+PjJdXShsLDAsMTI4KSk/MHxhW2wrMTY+PjJdOjApfWZ1bmN0aW9uIHp0KGwsYyl7dmFyIGY9''@;'; put 'put ''MDtyZXR1cm4gMHwoMCE9KDB8KGM9MHxTZihsfD0wLGN8PTApKSkmJjAhPSgwfChmPTB8bWlbNjMmYVsoZj0wfGFbbCszNj4+Ml0pPj4yXV0oZixjLDgpKSk/MHxhW2YrMTY+PjJdOjApfWZ1bmN0aW9uIFBuKGwpe3JldHVybiAwfCgobD0wfG1pWzYzJmFbKGw9MHxhWzM2KyhsfD0wKT4+Ml0p''@;'; put 'put ''Pj4yXV0obCwwLDI1NikpPzB8YVtsKzE2Pj4yXTowKX1mdW5jdGlvbiBUbihsLGMpe3ZhciBmPTA7cmV0dXJuIDB8KDAhPSgwfChjPTB8U2YobHw9MCxjfD0wKSkpJiYwIT0oMHwoZj0wfG1pWzYzJmFbKGY9MHxhW2wrMzY+PjJdKT4+Ml1dKGYsYywxNikpKT8wfGFbZisxNj4+Ml06MCl9ZnVu''@;'; put 'put ''Y3Rpb24gT24obCxjLGYscCl7cHw9MDt2YXIgbT0wLEE9MDttPTB8Q24obHw9MCxjfD0wLGZ8PTApO2Rve2lmKDAhPSgwfHApJjA9PSgwfG0pKXtpZigoMHwobT0wfGRpKGwpKSkhPSgwfGwpJiYwfChBPTB8Q24obSxjLGYpKSl7WW4obCxBLDEpLG09QTticmVha30wfE9BKGwsMSxjLGYpPyhh''@;'; put 'put ''aShsLG09MHxNcihsLGMsZixtPTB8SDMobCwxKSxEbikpLHlyKGwsbSkpOm09MH19d2hpbGUoMCk7cmV0dXJuIDB8bX1mdW5jdGlvbiBZbihsLGMsZil7Y3w9MCxmfD0wO3ZhciBwPTA7aWYoKDB8KHA9MHxkaShsfD0wKSkpPT0oMHxhW2MrMjQ+PjJdKSl7aWYoMCE9KDB8ZikmMD09KDB8KHA9''@;'; put 'put ''MHxDbihsLDB8YVsocD1jKzh8MCk+PjJdLDB8YVtwKzQ+PjJdKSkpKXtpZihwPTB8azEobCkpcmV0dXJuIGFyKGwsZj0wfFluKHAsYyxmKSksMHxmO3A9MH19ZWxzZSBwPTA7cmV0dXJuIDB8cH1mdW5jdGlvbiBNcihsLGMsZixwLG0pe3ZhciBBLHc7cmV0dXJuIGN8PTAsZnw9MCxwfD0wLG18''@;'; put 'put ''PTAsbT0wfE10KGx8PTAsNjQpLEE9MHxhW20+PjJdLGFbKHc9bSs4fDApPj4yXT1jLGFbdys0Pj4yXT1mLGFbbT4+Ml09MTImQXxwPDw0fDEsYVttKzI0Pj4yXT0wfGRpKGwpLDY0JmZlWzI0KygwfGRpKGwpKT4+MF0mJmgwKG0sOTY0MDQsMTYsMCksMHxtfWZ1bmN0aW9uIGFpKGwsYyl7bHw9''@;'; put 'put ''MCxjfD0wO2Rve2FyKGwsYyksbD0wfGsxKGwpfXdoaWxlKDAhPSgwfGwpKX1mdW5jdGlvbiB5cihsLGMpe2N8PTAsNjQmZmVbMjQrKDB8ZGkobHw9MCkpPj4wXSYmaUMobCxjKSx2MChsLGMpfWZ1bmN0aW9uIGFyKGwsYyl7Y3w9MDt2YXIgZixwPTA7cHUoMHxhWyhwPTQwKyhsfD0wKXwwKT4+''@;'; put 'put ''Ml0pLGY9KDB8ZGkobCkpPT0oMHxsKT9jKzI4fDA6MHxNdChsLDM2KSxhW2YrMTY+PjJdPWMsbWlbNjMmYVsocD0wfGFbcD4+Ml0pPj4yXV0ocCxmLDEpLG1pWzYzJmFbKHA9MHxhW2wrMzY+PjJdKT4+Ml1dKHAsZiwxKX1mdW5jdGlvbiBHcihsLGMsZil7Y3w9MCxmfD0wO3ZhciBBLGsscD0w''@;'; put 'put ''LG09MCx3PTAsYj0wO3JldHVybiBrPWxlLGxlPWxlKzE2fDAsQT1rLHc9MHxkaShsfD0wKSwwfEs0KGwsMSxjLEEsMCk/KHA9MHxDbihsLDB8YVsocD1BKT4+Ml0sMHxhW3ArND4+Ml0pKXx8KDA9PSgwfGYpfCgwfHcpPT0oMHxsKXx8MD09KDB8KG09MHxDbih3LDB8YVsobT1BKT4+Ml0sMHxh''@;'; put 'put ''W20rND4+Ml0pKSk/Yj02OnA9MHxZbihsLG0sMSkpOmI9Niw2PT0oMHxiKSYmKDAhPSgwfGYpJiYwIT0oMHxLNChsLDEsYyxBLDEpKT8oYWkobCxwPTB8TXIobCx3PTB8YVsoYj1BKT4+Ml0sYj0wfGFbYis0Pj4yXSxwPTB8SDMobCwxKSxEbikpLHlyKGwscCksTDUobCwxLHApKTpwPTApLGxl''@;'; put 'put ''PWssMHxwfWZ1bmN0aW9uIHFyKGwsYyl7dmFyIHAsZj0wLG09MDtpZigwfENuKGx8PTAsMHxhWyhmPXA9OCsoY3w9MCl8MCk+PjJdLDB8YVtmKzQ+PjJdKSl7aWYoKDB8ZGkobCkpPT0oMHxsKSl7Zm9yKGY9MHxNcyhsLGMpO2Y7KW09MHxWcyhsLGYsYykscW0obCxmKSxmPW07NjQmZmVbbCsy''@;'; put 'put ''ND4+MF0mJmZ1bmN0aW9uIE82KGwpe3ZhciBjOzB8KGM9MHxpYyhsfD0wKSkmJihrMihsLGMpLEhpKGwsOTY0MDQpKX0oYyksYmkobCxjKSxwMihjKSxCNihsLDEsMHxhWyhtPXApPj4yXSwwfGFbbSs0Pj4yXSl9MHxiQyhsLGMsNTksMCwwKT9mPS0xOigoMHxkaShsKSk9PSgwfGwpJiZ4dChs''@;'; put 'put ''LGMpLGY9MCl9ZWxzZSBmPS0xO3JldHVybiAwfGZ9ZnVuY3Rpb24gb2kobCxjKXtsfD0wO3ZhciBwLHcsZj0wLG09MCxBPTA7dz1sZSxsZT1sZSsxNnwwLHA9dyxmPTB8YVsoY3w9MCk+PjJdO2Rve2lmKCEoMyZmKSl7aWYoKDB8azEoYykpPT0oMHxsKSl7Zj0wfGFbYz4+Ml0sQT01O2JyZWFr''@;'; put 'put ''fSRyKDEsOTY0ODgscCksbT0tMTticmVha31BPTV9d2hpbGUoMCk7ZTpkb3tpZig1PT0oMHxBKSlzd2l0Y2goMyZmKXtjYXNlIDE6bT0wfHFyKGwsYyk7YnJlYWsgZTtjYXNlIDI6Y2FzZSAzOm09MHxxbShsLGMpO2JyZWFrIGU7Y2FzZSAwOm09MHxDMShjKTticmVhayBlfX13aGlsZSgwKTty''@;'; put 'put ''ZXR1cm4gbGU9dywwfG19ZnVuY3Rpb24gY3IobCl7dmFyIGM9MDtzd2l0Y2goMyZhWyhsfD0wKT4+Ml0pe2Nhc2UgMjpjYXNlIDM6Yz0wfGFbMjQrKDB8YVtsKzQwPj4yXSk+PjJdO2JyZWFrO2Nhc2UgMTpjPTB8YVtsKzI0Pj4yXTticmVhaztjYXNlIDA6Yz1sfXJldHVybiAwfGN9ZnVuY3Rp''@;'; put 'put ''b24gZGkobCl7dmFyIGM9MDtzd2l0Y2goMyZhWyhsfD0wKT4+Ml0pe2Nhc2UgMjpjYXNlIDM6Yz0yNCsoMHxhW2wrNDA+PjJdKXwwO2JyZWFrO2Nhc2UgMTpjPWwrMjR8MDticmVhaztjYXNlIDA6Yz1sKzYwfDB9cmV0dXJuIDB8YVtjPj4yXX1mdW5jdGlvbiB2MChsLGMpe3ZhciBmO2N8PTAs''@;'; put 'put ''MHxmZVs1MisoZj0wfGFbNjQrKGx8PTApPj4yXSk+PjBdP1VpKGwsYywwfGFbZis0OD4+Ml0pOk4wKGwsYywxMDAsMCl9ZnVuY3Rpb24gVWkobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwPTA7ZTpkb3tpZigwfGYpe3N3aXRjaChVaShsLGMsMHxhW2YrOD4+Ml0pLDMmYVtjPj4yXSl7Y2Fz''@;'; put 'put ''ZSAwOnA9MHxhW2Y+PjJdO2JyZWFrO2Nhc2UgMTpwPTEyKygwfGFbZj4+Ml0pfDA7YnJlYWs7Y2FzZSAyOnA9MjQrKDB8YVtmPj4yXSl8MDticmVhaztkZWZhdWx0OmJyZWFrIGV9MHwocD0wfGFbcD4+Ml0pJiZkbFsxMjcmcF0obCxjLDB8YVtmKzQ+PjJdKX19d2hpbGUoMCl9ZnVuY3Rpb24g''@;'; put 'put ''dG8obCxjLGYpe3ZhciBwO2N8PTAsZnw9MCwwfGZlWzUyKyhwPTB8YVs2NCsobHw9MCk+PjJdKT4+MF0/QTAobCxjLGYsMHxhW3ArNDg+PjJdKTpOMChsLGMsMTAxLGYpfWZ1bmN0aW9uIEEwKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MDtlOmRve2lmKDB8cCl7c3dpdGNo''@;'; put 'put ''KEEwKGwsYyxmLDB8YVtwKzg+PjJdKSwzJmFbYz4+Ml0pe2Nhc2UgMDptPTQrKDB8YVtwPj4yXSl8MDticmVhaztjYXNlIDE6bT0xNisoMHxhW3A+PjJdKXwwO2JyZWFrO2Nhc2UgMjptPTI4KygwfGFbcD4+Ml0pfDA7YnJlYWs7ZGVmYXVsdDpicmVhayBlfTB8KG09MHxhW20+PjJdKSYmUmNb''@;'; put 'put ''MzEmbV0obCxjLDB8YVtwKzQ+PjJdLGYpfX13aGlsZSgwKX1mdW5jdGlvbiBiaShsLGMpe3ZhciBmO2N8PTAsMHxmZVs1MisoZj0wfGFbNjQrKGx8PTApPj4yXSk+PjBdP1lyKGwsYywwfGFbZis0OD4+Ml0pOk4wKGwsYywxMDIsMCl9ZnVuY3Rpb24gWXIobCxjLGYpe2x8PTAsY3w9MCxmfD0w''@;'; put 'put ''O3ZhciBwPTA7ZTpkb3tpZigwfGYpe3N3aXRjaChZcihsLGMsMHxhW2YrOD4+Ml0pLDMmYVtjPj4yXSl7Y2FzZSAwOnA9OCsoMHxhW2Y+PjJdKXwwO2JyZWFrO2Nhc2UgMTpwPTIwKygwfGFbZj4+Ml0pfDA7YnJlYWs7Y2FzZSAyOnA9MzIrKDB8YVtmPj4yXSl8MDticmVhaztkZWZhdWx0OmJy''@;'; put 'put ''ZWFrIGV9MHwocD0wfGFbcD4+Ml0pJiZkbFsxMjcmcF0obCxjLDB8YVtmKzQ+PjJdKX19d2hpbGUoMCl9ZnVuY3Rpb24gaGkobCxjKXtjfD0wO3ZhciBmPTAscD0wLG09MDtmPTB8YVsocD00OCsoMHxhWzY0KyhsfD0wKT4+Ml0pfDApPj4yXTtlOmRve2lmKGYpe2lmKCgwfGFbZj4+Ml0pIT0o''@;'; put 'put ''MHxjKSl7Zm9yKDs7KXtpZighZil7Zj0tMTticmVhayBlfWlmKCgwfGFbKG09MHxhWyhwPWYrOHwwKT4+Ml0pPj4yXSk9PSgwfGMpKWJyZWFrO2Y9bX1tJiYoYVtwPj4yXT1hW20rOD4+Ml0pfWVsc2UgYVtwPj4yXT1hW2YrOD4+Ml07eHQobCxmKSxmPTB9ZWxzZSBmPS0xfXdoaWxlKDApO3Jl''@;'; put 'put ''dHVybiAwfGZ9ZnVuY3Rpb24gTnIobCxjKXt2YXIgZjtjfD0wLGY9MHxkaShsfD0wKTtlOmRve2lmKCgwfGYpPT0oMHxkaShjKSkpc3dpdGNoKDMmYVtjPj4yXSl7Y2FzZSAwOmZvcig7Oyl7aWYoKDB8Yyk9PSgwfGwpKXtjPTE7YnJlYWsgZX1pZighKGM9MHxrMShjKSkpe2M9MDticmVha319''@;'; put 'put ''YnJlYWs7Y2FzZSAxOmM9MCE9KDB8T24obCwwfGFbKGM9Yys4fDApPj4yXSwwfGFbYys0Pj4yXSwwKSk7YnJlYWsgZTtkZWZhdWx0OmM9MCE9KDB8WmQobCxjLDApKTticmVhayBlfWVsc2UgYz0wfXdoaWxlKDApO3JldHVybiAxJmN8MH1mdW5jdGlvbiBraShsKXtyZXR1cm4gMyZhWyhsfD0w''@;'; put 'put ''KT4+Ml18MH1mdW5jdGlvbiBOMChsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgQSx3LGIsbT0wO3N3aXRjaChiPWxlLGxlPWxlKzE2fDAsdz1iLEE9MHxoMChsfD0wLDk2NTEyLDQ0LDApLDB8Zil7Y2FzZSAxMDA6MHxpbyhtPTB8dDAoQSxjLDEwMCksYyl8fG9hKG0sbCxjLHApO2JyZWFr''@;'; put 'put ''O2Nhc2UgMTAxOjA9PSgwfGlvKDB8dDAoQSxjLDEwMCksYykpJiYwPT0oMHxpbygwfHQwKEEsYywxMDIpLGMpKSYmMD09KDB8aW8obT0wfHQwKEEsYywxMDEpLGMpKSYmb2EobSxsLGMscCk7YnJlYWs7Y2FzZSAxMDI6JDAoMHx0MChBLGMsMTAwKSxjKSwkMCgwfHQwKEEsYywxMDEpLGMpLDB8''@;'; put 'put ''aW8obT0wfHQwKEEsYywxMDIpLGMpfHxvYShtLGwsYyxwKTticmVhaztkZWZhdWx0OiRyKDEsOTY1MjQsdyl9bGU9Yn1mdW5jdGlvbiB0MChsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHAsQSxtPTA7QT1sZSxsZT1sZSsxNnwwLHA9QTtlOmRve3N3aXRjaCgzJmFbYz4+Ml0pe2Nhc2UgMDpz''@;'; put 'put ''d2l0Y2goMHxmKXtjYXNlIDEwMDpmPWwrOHwwO2JyZWFrIGU7Y2FzZSAxMDE6Zj1sKzIwfDA7YnJlYWsgZTtjYXNlIDEwMjpmPWwrMzJ8MDticmVhayBlO2RlZmF1bHQ6bT0xNDticmVhayBlfWNhc2UgMTpzd2l0Y2goMHxmKXtjYXNlIDEwMDpmPWwrMTJ8MDticmVhayBlO2Nhc2UgMTAxOmY9''@;'; put 'put ''bCsyNHwwO2JyZWFrIGU7Y2FzZSAxMDI6Zj1sKzM2fDA7YnJlYWsgZTtkZWZhdWx0Om09MTQ7YnJlYWsgZX1jYXNlIDI6c3dpdGNoKDB8Zil7Y2FzZSAxMDA6Zj1sKzE2fDA7YnJlYWsgZTtjYXNlIDEwMTpmPWwrMjh8MDticmVhayBlO2Nhc2UgMTAyOmY9bCs0MHwwO2JyZWFrIGU7ZGVmYXVs''@;'; put 'put ''dDptPTE0O2JyZWFrIGV9ZGVmYXVsdDptPTE0fX13aGlsZSgwKTtyZXR1cm4gMTQ9PSgwfG0pJiYoJHIoMSw5NjU1OCxwKSxmPTApLChsPTB8YVtmPj4yXSl8fChsPTB8WmgobD0wfGNyKGMpLDE4ODI4LDB8YVs0NTg5XSksYVtmPj4yXT1sKSxsZT1BLDB8bH1mdW5jdGlvbiBpbyhsLGMpe3Zh''@;'; put 'put ''ciBmLHAsbTtyZXR1cm4gbHw9MCxmPWxlLGxlPWxlKzMyfDAscD1mLG09MHxWYShjfD0wKSxhWyhjPXArOHwwKT4+Ml09bSxhW2MrND4+Ml09RG4sYz0wfG1pWzYzJmFbbD4+Ml1dKGwscCw0KSxsZT1mLDB8Y31mdW5jdGlvbiBvYShsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgbSxBPTA7''@;'; put 'put ''cmV0dXJuIG09MHxNdCgwfGNyKGZ8PTApLDMyKSxhW20rMjA+PjJdPWYsQT0wfFZhKGYpLGFbKGY9bSs4fDApPj4yXT1BLGFbZis0Pj4yXT1EbixhW20rMTY+PjJdPWMsMHxwJiYoQT0wfE10KGMsOCksYVttKzI0Pj4yXT1BLGFbQT4+Ml09cCksbWlbNjMmYVtsPj4yXV0obCxtLDEpLDB8bX1m''@;'; put 'put ''dW5jdGlvbiAkMChsLGMpezB8KGM9MHxpbyhsfD0wLGN8PTApKSYmbWlbNjMmYVtsPj4yXV0obCxjLDIpfWZ1bmN0aW9uIFZhKGwpe3JldHVybiBEbj0wfGFbNCsobD04KyhsfD0wKXwwKT4+Ml0sMHxhW2w+PjJdfWZ1bmN0aW9uIGFvKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIEEsdyxrLHA9MCxt''@;'; put 'put ''PTAsYj0wO2ZvcihrPWxlLGxlPWxlKzE2fDAsdz1rLHA9QT0wfGFbMTYrKGx8PTApPj4yXTs7KXtpZighcCl7cD0wO2JyZWFrfWlmKCgwfChtPTB8YVtwPj4yXSkpPT0oMHxjKSl7Yj03O2JyZWFrfWlmKCgwfGZlW2M+PjBdKT09KDB8ZmVbbT4+MF0pJiYwPT0oMHxaaShjLG0pKSl7Yj03O2Jy''@;'; put 'put ''ZWFrfWlmKCgwfChwPTB8YVtwKzQ+PjJdKSk9PSgwfEEpKXtwPTA7YnJlYWt9fWRve2lmKDc9PSgwfGIpKXtpZighKDQmYVtsPj4yXSkpe2lmKCgwfHApPT0oMHxBKSYwPT0oMHxmKSl7cD1BO2JyZWFrfXgwKGwscCxmKTticmVha31mJiYoKDB8QSk9PSgwfHApP3A9QTokcigxLDk2NTgzLHcp''@;'; put 'put ''KX19d2hpbGUoMCk7cmV0dXJuIGxlPWssMHxwfWZ1bmN0aW9uIHgwKGwsYyxmKXtmfD0wO3ZhciBwPTA7YVsxNisobHw9MCk+PjJdPWN8PTAsYVtsPj4yXT0tNSYocD0wfGFbbD4+Ml0pfChmPWY8PDImNCksMiZwfDAmJihhW2wrKDQ4KihwPTM9PSgzJnB8MCk/LTE6MSl8MCkrMTY+PjJdPWMs''@;'; put 'put ''YVsocD1sKyg0OCpwfDApfDApPj4yXT0tNSZhW3A+PjJdfGYpfWZ1bmN0aW9uIGgwKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBtLHcsQT0wO3c9MHxjcihsfD0wKSxtPTB8YW8obCxjLDApO2U6ZG97aWYoMCE9KDB8ZikmMD09KDB8bSkpc3dpdGNoKGY9MHxNdCh3LGYpLGFbZj4+Ml09''@;'; put 'put ''MHxyMCh3LGMpLDMmYVtsPj4yXSl7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6Y2FzZSAzOmpyKGwsZiksQT1mO2JyZWFrIGV9ZWxzZSBBPW19d2hpbGUoMCk7cmV0dXJuIDB8cCYmYW8obCxjLDEpLDB8QX1mdW5jdGlvbiBqcihsLGMpe2N8PTA7dmFyIGY9MCxwPTAsbT0wO2Y9MHxhWzE2KyhsfD0w''@;'; put 'put ''KT4+Ml07ZG97aWYoZil7aWYoKDB8KG09MHxhWyhwPWYrNHwwKT4+Ml0pKT09KDB8Zikpe2FbcD4+Ml09YyxwPWYsZj1jO2JyZWFrfWFbYys0Pj4yXT1tLHA9YzticmVha31wPWMsZj1jfXdoaWxlKDApO2FbZis0Pj4yXT1wLDQmYVtsPj4yXXx8eDAobCxjLDApfWZ1bmN0aW9uIEhpKGwsYyl7''@;'; put 'put ''dmFyIGYscDtyZXR1cm4gY3w9MCxwPTB8Y3IobHw9MCksKGY9MHxhbyhsLGMsMCkpPyhmdW5jdGlvbiB2byhsLGMpe2N8PTA7dmFyIGY9MDtsPTB8YVsxNisobHw9MCk+PjJdO2Rve2w9MHxhWyhmPWwrNHwwKT4+Ml19d2hpbGUoKDB8bCkhPSgwfGMpKTthW2Y+PjJdPWFbYys0Pj4yXX0obCxm''@;'; put 'put ''KSwzJmFbbD4+Ml0/KGJDKDB8ZGkocCksbCw2MCxmLDApLGM9Zik6KHhvKHAsbCxmKSxjPWYpLGUwKHAsMHxhW2Y+PjJdKSx4dChwLGMpLGM9MCk6Yz0tMSwwfGN9ZnVuY3Rpb24geG8obCxjLGYpe2x8PTAsKDB8YVsxNisoY3w9MCk+PjJdKT09KDB8KGZ8PTApKSYmeDAoYywoMHwobD0wfGFb''@;'; put 'put ''Zis0Pj4yXSkpPT0oMHxmKT8wOmwsMCl9ZnVuY3Rpb24gJGkobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxtfD0wO3ZhciB3LEE9MDt3PShBPSgwfChwfD0wKSk+LTEpP3A6MC1wfDA7ZTpkb3tzd2l0Y2goMHxjKXtjYXNlIDA6aWYoaDAobCxmLHcsbSksIUEpZm9yKGM9MHx3cyhsKTs7KXtp''@;'; put 'put ''ZighYylicmVhayBlOyRpKGMsMCxmLHAsbSksYz0wfEVzKGMpfWJyZWFrO2Nhc2UgMzpjYXNlIDI6Y2FzZSAxOmZvcihwPTE9PSgwfGMpLGM9MHxEdChsKTs7KXtpZighYylicmVhayBlO3Q6ZG97aWYocCloMChjLGYsdyxtKTtlbHNlIGZvcihBPTB8dzAobCxjKTs7KXtpZighQSlicmVhayB0''@;'; put 'put ''O2gwKEEsZix3LG0pLEE9MHxTMChsLEEpfX13aGlsZSgwKTtjPTB8enQobCxjKX19fXdoaWxlKDApfWZ1bmN0aW9uIGwyKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wLG09MDtlOmRve3N3aXRjaCgwfGMpe2Nhc2UgMDpiQyhsLGwsNjEsZiwxKTticmVhaztjYXNlIDM6Y2FzZSAyOmNh''@;'; put 'put ''c2UgMTpmb3IobT0xPT0oMHxjKSxwPTB8RHQobCk7Oyl7aWYoIXApYnJlYWsgZTt0OmRve2lmKG0pSGkocCxmKTtlbHNlIGZvcihjPTB8dzAobCxwKTs7KXtpZighYylicmVhayB0O0hpKGMsZiksYz0wfFMwKGwsYyl9fXdoaWxlKDApO3A9MHx6dChsLHApfX19d2hpbGUoMCl9ZnVuY3Rpb24g''@;'; put 'put ''cDIobCl7dmFyIGMsZixwPTA7aWYoZj0wfGNyKGx8PTApLDB8KGw9MHxhWyhjPWwrMTZ8MCk+PjJdKSlkb3twPWwsbD0wfGFbbCs0Pj4yXSxlMChmLDB8YVtwPj4yXSkseHQoZixwKX13aGlsZSgoMHxsKSE9KDB8YVtjPj4yXSkpO2FbYz4+Ml09MH1mdW5jdGlvbiBycihsKXtyZXR1cm4gMHwk''@;'; put 'put ''NChsfD0wLDB8SXIobCkpfWZ1bmN0aW9uIElyKGwpe3ZhciBmLGM9MDtyZXR1cm4oYz0wfGFbKGY9KGx8PTApPzIwKygwfGFbbCs2ND4+Ml0pfDA6MTg3ODQ0KT4+Ml0pfHwoYz0wfFpoKGwsMTg4NjQsMHxhWzQ1ODldKSxhW2Y+PjJdPWMsYVsobD0xODYzMTIpPj4yXT0tMjE0NzQ4MzY0OCxh''@;'; put 'put ''W2wrND4+Ml09MCxhWyhsPTE4NjMyMCk+PjJdPTIxNDc0ODM2NDcsYVtsKzQ+PjJdPS0xKSwwfGN9ZnVuY3Rpb24gWnIobCxjKXtyZXR1cm4gY3w9MCwwfGZ1bmN0aW9uIHFpKGwsYyl7cmV0dXJuIDB8KGw9KGw9MHxyaShsfD0wLGN8PTApKT8wfGFbbCsxNj4+Ml06MCl9KDB8SXIobHw9MCks''@;'; put 'put ''Yyl9ZnVuY3Rpb24gcmkobCxjKXt2YXIgZixwO3JldHVybiBsfD0wLGY9bGUsbGU9bGUrMzJ8MCxhWyhwPWYpKzE2Pj4yXT1jfD0wLGM9MHxtaVs2MyZhW2w+PjJdXShsLHAsNCksbGU9ZiwwfGN9ZnVuY3Rpb24gcjAobCxjKXtsfD0wO3ZhciBmPTAscD0wO3JldHVybihjfD0wKT8oKGY9MHxy''@;'; put 'put ''aShwPTB8SXIobCksYykpPyhjPTB8emwoMHxhWyhjPXA9Zis4fDApPj4yXSwwfGFbYys0Pj4yXSwxLDApLGFbcD4+Ml09YyxhW3ArND4+Ml09RG4pOihmPTI0KygwfFVvKGMpKXwwLGY9bD8wfE10KGwsZik6MHxGMChmKSxhWyhsPWYrOHwwKT4+Ml09MSxhW2wrND4+Ml09MCxyZChsPWYrMjB8''@;'; put 'put ''MCxjKSxhW2YrMTY+PjJdPWwsbWlbNjMmYVtwPj4yXV0ocCxmLDEpKSxmPTB8YVtmKzE2Pj4yXSk6Zj0wLDB8Zn1mdW5jdGlvbiBlMChsLGMpe2x8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MDtyZXR1cm4gMCE9KDB8KGN8PTApKSYmMCE9KDB8KHA9MHxyaShmPTB8SXIobCksYykpKT8oKDB8YVtw''@;'; put 'put ''KzE2Pj4yXSk9PSgwfGMpJiYoQT0wfHpsKDB8YVsoQT1jPXArOHwwKT4+Ml0sMHxhW0ErND4+Ml0sLTEsLTEpLG09RG4sYVtjPj4yXT1BLGFbYys0Pj4yXT1tLDA9PSgwfEEpJjA9PSgwfG0pfDA9PSgwfGFbKGM9MTg2MzIwKT4+Ml0pJjA9PSgwfGFbYys0Pj4yXSkpJiZmdW5jdGlvbiBRbmUo''@;'; put 'put ''bCxjLGYpe2N8PTAsZnw9MCxhWzQ2OTg0XT1sfD0wLG1pWzYzJmFbYz4+Ml1dKGMsZiwyKX0obCxmLHApLGw9MCk6bD0tMSwwfGx9ZnVuY3Rpb24gT28obCl7cmV0dXJuIDB8KGw9KGx8PTApP2FbNDY1NzhdJmFbKGw9bCstMTJ8MCk+PjJdOjApfWZ1bmN0aW9uIGswKGwpe3ZhciBjPTAsZj0w''@;'; put 'put ''LHA9MDswfChsfD0wKSYmKGM9YVs0KyhwPWw9bCstMTJ8MCk+PjJdfGFbNCsoZj0xODYzMTIpPj4yXSxhW2w+PjJdPWFbcD4+Ml18YVtmPj4yXSxhW2wrND4+Ml09Yyl9ZnVuY3Rpb24gUWwoKXt2YXIgbD0wLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wOzB8YVs0Njk3MF18''@;'; put 'put ''fChhWzQ2OTcwXT0xLDB8YVs0Njk3MV18fChhWzQ2OTcxXT0xKSwwfGFbNDY5NjJdfHwoYVs0Njk2Ml09YVsxNTY0N10pLDB8YVs0Njk2M118fChhWzQ2OTYzXT1hWzE1Njc5XSksMCE9KDB8KHc9MHxhWzQ2OTcyXSkpJiYwIT0oMHxhW3c+PjJdKXx8KEFsKCksdz0wfHEyKDB8YVs0Njk2Ml0s''@;'; put 'put ''MTYzODQpLGFbYVs0Njk3Ml0+PjJdPXcpLGUxKCkpO2U6Zm9yKDs7KXtmZVsoQT0wfGFbNDY5NzNdKT4+MF09MHxmZVsxOTQ4MDVdLGw9KDB8YVsyOCsoMHxhW2FbNDY5NzJdPj4yXSk+PjJdKSsoMHxhWzQ2OTcxXSl8MCxjPUE7dDpmb3IoOzspe2ZvcihwPWM7Oyl7Yz0wfGFbMTg5MDQrKFh0''@;'; put 'put ''W3A+PjBdPDwyKT4+Ml0sMHxpdFs2Mzg1NisobDw8MSk+PjFdJiYoYVs0Njk3NF09bCxhWzQ2OTc1XT1wKTtuOmZvcig7Oyl7Zj0yNTUmYztkb3tpZigoMHxsKT09KDB8aXRbNjQyNTIrKChjPWYrKDB8aXRbNjQwNDIrKGw8PDEpPj4xXSl8MCk8PDEpPj4xXSkpYnJlYWsgbjtsPSh3PTB8aXRb''@;'; put 'put ''NjQ3ODgrKGw8PDEpPj4xXSk8PDE2Pj4xNn13aGlsZSh3PDwxNj4+MTY8PTkyKTtjPTB8YVsxOTkyOCsoZjw8Mik+PjJdfWlmKGw9MHxpdFs2NDk5OCsoYzw8MSk+PjFdLGM9cCsxfDAsMjE5PT0oMHxpdFs2NDA0MisobDw8MSk+PjFdKSlicmVhaztwPWN9bjpmb3IoOzspe3c9QTtyOmZvcig7''@;'; put 'put ''Oyl7KGw9MHxpdFs2Mzg1NisobDw8MSk+PjFdKTw8MTY+PjE2P2w9bDw8MTY+PjE2OihsPTB8aXRbNjM4NTYrKGFbNDY5NzRdPDwxKT4+MV0sYz0wfGFbNDY5NzVdKSxhWzQ2OTY0XT1BLGFbNDY5NjVdPShtPWMpLXcsZmVbMTk0ODA1XT0wfGZlW2M+PjBdLGZlW2M+PjBdPTAsYVs0Njk3M109''@;'; put 'put ''YztpOmZvcig7Oyl7c3dpdGNoKDB8bCl7Y2FzZSAxOms9Mjc7YnJlYWsgZTtjYXNlIDEyOms9NTM7YnJlYWsgZTtjYXNlIDEzOms9NTU7YnJlYWsgZTtjYXNlIDE0Oms9NTc7YnJlYWsgZTtjYXNlIDE1Oms9NjE7YnJlYWsgZTtjYXNlIDE2Oms9NjU7YnJlYWsgZTtjYXNlIDE3Oms9Njc7YnJl''@;'; put 'put ''YWsgZTtjYXNlIDE4Oms9Njk7YnJlYWsgZTtjYXNlIDE5Oms9NzI7YnJlYWsgZTtjYXNlIDIwOms9NzU7YnJlYWsgZTtjYXNlIDIxOms9Nzg7YnJlYWsgZTtjYXNlIDIzOms9ODY7YnJlYWsgZTtjYXNlIDMzOms9MTE4O2JyZWFrIGU7Y2FzZSAzOTpjYXNlIDM4OmNhc2UgMzc6Y2FzZSAzNjpi''@;'; put 'put ''PTA7YnJlYWsgZTtjYXNlIDI6az0yOTticmVhayB0O2Nhc2UgMzprPTMyO2JyZWFrIHQ7Y2FzZSA0Oms9MzU7YnJlYWsgdDtjYXNlIDU6az0zNzticmVhayB0O2Nhc2UgNjprPTM5O2JyZWFrIHQ7Y2FzZSA3Oms9NDI7YnJlYWsgdDtjYXNlIDg6az00NDticmVhayB0O2Nhc2UgOTprPTQ3O2Jy''@;'; put 'put ''ZWFrIHQ7Y2FzZSAxMDprPTQ5O2JyZWFrIHQ7Y2FzZSAxMTprPTUxO2JyZWFrIHQ7Y2FzZSAyMjprPTgzO2JyZWFrIHQ7Y2FzZSAyNDprPTg5O2JyZWFrIHQ7Y2FzZSAyNTprPTkyO2JyZWFrIHQ7Y2FzZSAyNjprPTk1O2JyZWFrIHQ7Y2FzZSAyNzprPTk4O2JyZWFrIHQ7Y2FzZSAyODprPTEw''@;'; put 'put ''MTticmVhayB0O2Nhc2UgMjk6az0xMDQ7YnJlYWsgdDtjYXNlIDMwOms9MTA5O2JyZWFrIHQ7Y2FzZSAzMTprPTExMjticmVhayB0O2Nhc2UgMzI6az0xMTU7YnJlYWsgdDtjYXNlIDM0Oms9MTIxO2JyZWFrIHQ7Y2FzZSAwOmJyZWFrIGk7Y2FzZSAzNTpicmVhaztkZWZhdWx0Oms9MTM0O2Jy''@;'; put 'put ''ZWFrIGV9aWYocD0wfGFbNDY5NjRdLGZlW2M+PjBdPTB8ZmVbMTk0ODA1XSwwfGFbNDQrKGY9MHxhWyhsPTB8YVs0Njk3Ml0pPj4yXSk+PjJdP2w9MHxhWzQ2OTc3XTooYVs0Njk3N109TT0wfGFbZisxNj4+Ml0sYVtmPj4yXT1hWzQ2OTYyXSxhWzQ0KyhmPTB8YVtsPj4yXSk+PjJdPTEsbD1N''@;'; put 'put ''KSwoMHxhWzQ2OTczXSk+Pj4wPD0oKDB8YVtmKzQ+PjJdKStsfDApPj4+MCl7az0xMjg7YnJlYWsgcn1zd2l0Y2goMHxicigpKXtjYXNlIDA6az0xMzI7YnJlYWsgbjtjYXNlIDI6az0xMzM7YnJlYWsgcjtjYXNlIDE6YnJlYWs7ZGVmYXVsdDpjb250aW51ZSBlfWFbNDY5NzNdPWFbNDY5NjRd''@;'; put 'put ''LGw9MzYrKCgoMHxhWzQ2OTcxXSktMXwwKS8yfDApfDB9ZmVbYz4+MF09MHxmZVsxOTQ4MDVdLGM9MHxhWzQ2OTc1XSxsPTB8YVs0Njk3NF19aWYoMTI4IT0oMHxrKSkxMzMhPSgwfGspfHwoaz0wLGFbNDY5NzNdPWM9KDB8YVs0KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml0pKygwfGFbNDY5Nzdd''@;'; put 'put ''KXwwLGw9MHxXbigpLEE9MHxhWzQ2OTY0XSk7ZWxzZSBpZihrPTAsZj1tLXB8MCxhWzQ2OTczXT1jPShwPTB8YVs0Njk2NF0pKyhmKy0xKXwwLG09MHwkbihsPTB8V24oKSksQT0wfGFbNDY5NjRdLG0pe2s9MTI5O2JyZWFrfX0xMjkhPSgwfGspPzEzMiE9KDB8ayl8fChrPTAsYVs0Njk3M109''@;'; put 'put ''Yz1tLXAtMSsoMHxhWzQ2OTY0XSl8MCxsPTB8V24oKSxBPTB8YVs0Njk2NF0pOihrPTAsYVs0Njk3M109Yz1wK2Z8MCxsPW0pfXN3aXRjaCgwfGspe2Nhc2UgMjk6Y2FzZSA5NTprPTAsMHwobD0wfGFbNDY5NjVdKSYmKGFbMjgrKDB8YVthWzQ2OTcyXT4+Ml0pPj4yXT0xMD09KDB8ZmVbKDB8''@;'; put 'put ''YVs0Njk2NF0pKyhsKy0xKT4+MF0pJjEpLGFbNDcyNV09MSsoMHxhWzQ3MjVdKTtjb250aW51ZSBlO2Nhc2UgMzI6az0wLDB8KGw9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfGZlWygwfGFbNDY5NjRdKSsobCstMSk+PjBdKSYxKSxhWzQ2OTcxXT0z''@;'; put 'put ''O2NvbnRpbnVlIGU7Y2FzZSAzNTpjYXNlIDM3OmNhc2UgNDI6Y2FzZSA0NzpjYXNlIDQ5OmNhc2UgNTE6aWYoaz0wLCEobD0wfGFbNDY5NjVdKSljb250aW51ZSBlO2FbMjgrKDB8YVthWzQ2OTcyXT4+Ml0pPj4yXT0xMD09KDB8ZmVbKDB8YVs0Njk2NF0pKyhsKy0xKT4+MF0pJjE7Y29udGlu''@;'; put 'put ''dWUgZTtjYXNlIDM5Oms9MCwwfChsPTB8YVs0Njk2NV0pJiYoYVsyOCsoMHxhW2FbNDY5NzJdPj4yXSk+PjJdPTEwPT0oMHxmZVsoMHxhWzQ2OTY0XSkrKGwrLTEpPj4wXSkmMSksYVs0Njk3MV09MTtjb250aW51ZSBlO2Nhc2UgNDQ6az0wLDB8KGw9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFb''@;'; put 'put ''YVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfGZlWygwfGFbNDY5NjRdKSsobCstMSk+PjBdKSYxKSxLcygpO2NvbnRpbnVlIGU7Y2FzZSA4MzprPTAsMHwobD0wfGFbNDY5NjVdKSYmKGFbMjgrKDB8YVthWzQ2OTcyXT4+Ml0pPj4yXT0xMD09KDB8ZmVbKDB8YVs0Njk2NF0pKyhsKy0xKT4+MF0p''@;'; put 'put ''JjEpLGFbNDY5NzFdPTUsdGgoKTtjb250aW51ZSBlO2Nhc2UgODk6az0wLDB8KGw9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfGZlWygwfGFbNDY5NjRdKSsobCstMSk+PjBdKSYxKSxCcig5ODc0NCk7Y29udGludWUgZTtjYXNlIDkyOms9MCwwfChs''@;'; put 'put ''PTB8YVs0Njk2NV0pJiYoYVsyOCsoMHxhW2FbNDY5NzJdPj4yXSk+PjJdPTEwPT0oMHxmZVsoMHxhWzQ2OTY0XSkrKGwrLTEpPj4wXSkmMSksQnIoOTY2MTYpO2NvbnRpbnVlIGU7Y2FzZSA5ODpjYXNlIDExNTprPTAsbD0wfGFbNDY5NjRdLDB8KGM9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFb''@;'; put 'put ''YVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfGZlW2wrKGMrLTEpPj4wXSkmMSksQnIobCk7Y29udGludWUgZTtjYXNlIDEwMTprPTAsMHwobD0wfGFbNDY5NjVdKSYmKGFbMjgrKDB8YVthWzQ2OTcyXT4+Ml0pPj4yXT0xMD09KDB8ZmVbKDB8YVs0Njk2NF0pKyhsKy0xKT4+MF0pJjEpLGFbNDY5''@;'; put 'put ''NzFdPTcsYVs0Njk3Nl09MSx0aCgpO2NvbnRpbnVlIGU7Y2FzZSAxMDQ6aWYoaz0wLDB8KGw9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfGZlWygwfGFbNDY5NjRdKSsobCstMSk+PjBdKSYxKSxhWzQ2OTc2XT1NPSgwfGFbNDY5NzZdKS0xfDAsIU0p''@;'; put 'put ''e2s9MTA4O2JyZWFrIGV9QnIoMHxhWzQ2OTY0XSk7Y29udGludWUgZTtjYXNlIDEwOTprPTAsbD0wfGFbNDY5NjRdLDB8KGM9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfGZlW2wrKGMrLTEpPj4wXSkmMSksYVs0Njk3Nl09MSsoMHxhWzQ2OTc2XSks''@;'; put 'put ''QnIobCk7Y29udGludWUgZTtjYXNlIDExMjprPTAsbD0wfGFbNDY5NjRdLDB8KGM9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfGZlW2wrKGMrLTEpPj4wXSkmMSksQnIobCksYVs0NzI1XT0xKygwfGFbNDcyNV0pO2NvbnRpbnVlIGU7Y2FzZSAxMjE6''@;'; put 'put ''az0wLGw9MHxhWzQ2OTY0XSwwfChjPTB8YVs0Njk2NV0pJiYoYVsyOCsoMHxhW2FbNDY5NzJdPj4yXSk+PjJdPTEwPT0oMHxmZVtsKyhjKy0xKT4+MF0pJjEpLEN1KGwsYywxLDB8YVs0Njk2M10pO2NvbnRpbnVlIGV9fXN3aXRjaCgwfGspe2Nhc2UgMjc6KGw9MHxhWzQ2OTY1XSkmJihhWzI4''@;'; put 'put ''KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfGZlWygwfGFbNDY5NjRdKSsobCstMSk+PjBdKSYxKSxiPS0xO2JyZWFrO2Nhc2UgNTM6KGw9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfGZlWygwfGFbNDY5NjRdKSsobCstMSk+PjBdKSYxKSxi''@;'; put 'put ''PTI1OTticmVhaztjYXNlIDU1OihsPTB8YVs0Njk2NV0pJiYoYVsyOCsoMHxhW2FbNDY5NzJdPj4yXSk+PjJdPTEwPT0oMHxmZVsoMHxhWzQ2OTY0XSkrKGwrLTEpPj4wXSkmMSksYj0yNjA7YnJlYWs7Y2FzZSA1NzowfChsPTB8YVs0Njk2NV0pJiYoYVsyOCsoMHxhW2FbNDY5NzJdPj4yXSk+''@;'; put 'put ''PjJdPTEwPT0oMHxmZVsoMHxhWzQ2OTY0XSkrKGwrLTEpPj4wXSkmMSksMHxhWzQ2OTY5XXx8KGFbNDY5NjldPTI1OCksYj0yNTg7YnJlYWs7Y2FzZSA2MTowfChsPTB8YVs0Njk2NV0pJiYoYVsyOCsoMHxhW2FbNDY5NzJdPj4yXSk+PjJdPTEwPT0oMHxmZVsoMHxhWzQ2OTY0XSkrKGwrLTEp''@;'; put 'put ''Pj4wXSkmMSksMHxhWzQ2OTY5XXx8KGFbNDY5NjldPTI2MSksYj0yNjE7YnJlYWs7Y2FzZSA2NToobD0wfGFbNDY5NjVdKSYmKGFbMjgrKDB8YVthWzQ2OTcyXT4+Ml0pPj4yXT0xMD09KDB8ZmVbKDB8YVs0Njk2NF0pKyhsKy0xKT4+MF0pJjEpLGI9MjYzO2JyZWFrO2Nhc2UgNjc6KGw9MHxh''@;'; put 'put ''WzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfGZlWygwfGFbNDY5NjRdKSsobCstMSk+PjBdKSYxKSxiPTI2MjticmVhaztjYXNlIDY5OjB8KGw9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfGZlWygwfGFbNDY5NjRd''@;'; put 'put ''KSsobCstMSk+PjBdKSYxKSxiPTI2MT09KDB8YVs0Njk2OV0pPzI2NDo0NTticmVhaztjYXNlIDcyOjB8KGw9MHxhWzQ2OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfGZlWygwfGFbNDY5NjRdKSsobCstMSk+PjBdKSYxKSxiPTI1OD09KDB8YVs0Njk2OV0pPzI2''@;'; put 'put ''NDo0NTticmVhaztjYXNlIDc1Omw9MHxhWzQ2OTY0XSwwfChjPTB8YVs0Njk2NV0pJiYoYVsyOCsoMHxhW2FbNDY5NzJdPj4yXSk+PjJdPTEwPT0oMHxmZVtsKyhjKy0xKT4+MF0pJjEpLGFbNDY5OTJdPTB8cjAoMHxhWzQ2OTQyXSxsKSxiPTI2NzticmVhaztjYXNlIDc4OjB8KGw9MHxhWzQ2''@;'; put 'put ''OTY1XSkmJihhWzI4KygwfGFbYVs0Njk3Ml0+PjJdKT4+Ml09MTA9PSgwfGZlWygwfGFbNDY5NjRdKSsobCstMSk+PjBdKSYxKSwwfGZ1bmN0aW9uIFA2KCl7dmFyIGYscCxBLHcsYixsPTAsYz0wLG09MCxrPTA7cmV0dXJuIGI9bGUsbGU9bGUrMjA4MHwwLHc9Yis4fDAscD1iLGw9YisxMDU2''@;'; put 'put ''fDAsYz1iKzMyfDAsQT1iKzE2fDAsKGY9KGs9MHxmZVsoMHxhWzQ2OTY1XSktMSsoMHxhWzQ2OTY0XSk+PjBdKTw8MjQ+PjI0PT00Nil8KCgyNTUmayktNDh8MCk+Pj4wPDEwP2YmJjAhPSgwfGZ1bmN0aW9uIEowKCl7dmFyIGMsbD0wO2ZvcihjPTB8YVs0Njk2NF0sbD0oMHxhWzQ2OTY1XSkt''@;'; put 'put ''MnwwOzspe2lmKCgwfGwpPD0tMSl7bD0wO2JyZWFrfWlmKDQ2PT0oMHxmZVtjK2w+PjBdKSl7bD0xO2JyZWFrfWw9bCstMXwwfXJldHVybiAwfGx9KCkpP209NDpsPTA6bT00LDQ9PSgwfG0pJiYoaz0wfGFbNDY5NjZdLHVzKEEsMTAyNCxsKSx1byhBLDk2ODI3KSx1byhBLDB8YVs0Njk2NF0p''@;'; put 'put ''LGFbcD4+Ml09YVs0NzI1XSxvbyhjLDk2ODcxLHApLHVvKEEsYyksdW8oQSwwPT0oMHxrKT85NjgyMTprKSx1byhBLDk2ODg4KSwobD0wfGFbKGM9QSs0fDApPj4yXSk+Pj4wPj0oMHxhW0ErOD4+Ml0pPj4+MCYmKFEwKEEsMSksbD0wfGFbYz4+Ml0pLGZlW2w+PjBdPTAsYVtjPj4yXT1sPTB8''@;'; put 'put ''YVtBPj4yXSxhW3c+PjJdPWwsJHIoMCw5NjkxMyx3KSxDMihBKSxsPTEpLGxlPWIsMHxsfSgpJiYoaz0oMHxhWzQ2OTY1XSktMXwwLGZlW2M+PjBdPTB8ZmVbMTk0ODA1XSxhWzQ2OTczXT1NPUEra3wwLGFbNDY5NjRdPUEsYVs0Njk2NV09ayxmZVsxOTQ4MDVdPTB8ZmVbTT4+MF0sZmVbTT4+''@;'; put 'put ''MF09MCxhWzQ2OTczXT1NKSxhWzQ2OTkyXT0wfHIwKDB8YVs0Njk0Ml0sMHxhWzQ2OTY0XSksYj0yNjc7YnJlYWs7Y2FzZSA4NjowfChsPTB8YVs0Njk2NV0pJiYoYVsyOCsoMHxhW2FbNDY5NzJdPj4yXSk+PjJdPTEwPT0oMHxmZVsoMHxhWzQ2OTY0XSkrKGwrLTEpPj4wXSkmMSksYVs0Njk3''@;'; put 'put ''MV09MSxmdW5jdGlvbiBscigpe2FbNDY5OTJdPTB8cjAoMHxhWzQ2OTQyXSwwfGFbNDY5NzhdKSxmZVthWzQ2OTc4XT4+MF09MH0oKSxiPTI2ODticmVhaztjYXNlIDEwODphWzQ2OTcxXT0xLGZ1bmN0aW9uIGRyKCl7YVs0Njk5Ml09MHxmdW5jdGlvbiBwaShsLGMpe2x8PTA7dmFyIGY9MCxw''@;'; put 'put ''PTAsbT0wLEE9MDtyZXR1cm4oY3w9MCk/KChmPTB8cmkocD0wfElyKGwpLGMpKT8obT0wfHpsKDB8YVsobT1BPWYrOHwwKT4+Ml0sMHxhW20rND4+Ml0sMSwwKSxhW0E+PjJdPW0sYVtBKzQ+PjJdPURuKTooZj0yNCsoMHxVbyhjKSl8MCxmPWw/MHxNdChsLGYpOjB8RjAoZiksbT0wfGFbNCso''@;'; put 'put ''QT0xODYzMTIpPj4yXSxhWyhsPWYrOHwwKT4+Ml09MXxhW0E+PjJdLGFbbCs0Pj4yXT1tLHJkKGw9ZisyMHwwLGMpLGFbZisxNj4+Ml09bCxtaVs2MyZhW3A+PjJdXShwLGYsMSkpLGY9MHxhW2YrMTY+PjJdKTpmPTAsMHxmfSgwfGFbNDY5NDJdLDB8YVs0Njk3OF0pLGZlW2FbNDY5NzhdPj4w''@;'; put 'put ''XT0wfSgpLGI9MjY4O2JyZWFrO2Nhc2UgMTE4Omw9MHxhWzQ2OTY0XSwwfChjPTB8YVs0Njk2NV0pJiYoYVsyOCsoMHxhW2FbNDY5NzJdPj4yXSk+PjJdPTEwPT0oMHxmZVtsKyhjKy0xKT4+MF0pJjEpLGI9MHxmZVtsPj4wXTticmVhaztjYXNlIDEzNDpXcig5NjYxOSl9cmV0dXJuIDB8Yn1m''@;'; put 'put ''dW5jdGlvbiBBbCgpe3ZhciBsPTAsYz0wLGY9MDtjPTB8YVs0Njk3Ml07ZG97aWYoYyl7aWYoMD49KChsPTB8YVs0Njk4M10pLTF8MCk+Pj4wKXtpZihjPTB8dWkoYywobD1sKzh8MCk8PDIpLGFbNDY5NzJdPWMsYyl7YVsoZj1jKyhhWzQ2OTgzXTw8Mil8MCk+PjJdPTAsYVtmKzQ+PjJdPTAs''@;'; put 'put ''YVtmKzg+PjJdPTAsYVtmKzEyPj4yXT0wLGFbZisxNj4+Ml09MCxhW2YrMjA+PjJdPTAsYVtmKzI0Pj4yXT0wLGFbZisyOD4+Ml09MCxmPTk7YnJlYWt9V3IoOTY5NzcpfX1lbHNle2lmKGw9MHxlYSg0KSxhWzQ2OTcyXT1sLGwpe2FbbD4+Ml09MCxsPTEsZj05O2JyZWFrfVdyKDk2OTc3KX19''@;'; put 'put ''d2hpbGUoMCk7OT09KDB8ZikmJihhWzQ2OTgzXT1sKX1mdW5jdGlvbiBxMihsLGMpe3ZhciBmO3JldHVybiBsfD0wLGN8PTAsKGY9MHxlYSg0OCkpfHxXcig5NjkzMiksYVtmKzEyPj4yXT1jLGM9MHxlYShjKzJ8MCksYVtmKzQ+PjJdPWMsYz8oYVtmKzIwPj4yXT0xLHUwKGYsbCksMHxmKToo''@;'; put 'put ''V3IoOTY5MzIpLDApfWZ1bmN0aW9uIGUxKCl7dmFyIGMsbD0wO2FbNDY5NzddPWFbMTYrKGw9MHxhWyhjPTB8YVs0Njk3Ml0pPj4yXSk+PjJdLGFbNDY5NzNdPWw9MHxhW2wrOD4+Ml0sYVs0Njk2NF09bCxhWzQ2OTYyXT1hW2FbYz4+Ml0+PjJdLGZlWzE5NDgwNV09MHxmZVtsPj4wXX1mdW5j''@;'; put 'put ''dGlvbiBLcygpe3ZhciBtLEEsbD0wLGM9MCxmPTAscD0wO2lmKG09bGUsbGU9bGUrMzJ8MCxwPW0sYz1tKzE2fDAsZj1tKzEyfDAsbD0wPT0oMHxzMihsPTErKEE9MHxhWzQ2OTY0XSl8MCw5NjkxNiw0KSk/QSs1fDA6bCxhW3A+PjJdPWYsYVtwKzQ+PjJdPW0rMjAsYVtwKzg+PjJdPWMsKDB8''@;'; put 'put ''KHA9MHxpbChsLDk2OTIxLHApKSk+MCYmKGFbNDcyNV09KDB8YVtmPj4yXSktMSwxIT0oMHxwKSkpe2w9Yz1sKygwfGFbYz4+Ml0pfDA7ZTpmb3IoOzspe3N3aXRjaCgoZj0wfGZlW2w+PjBdKTw8MjQ+PjI0KXtjYXNlIDA6Y2FzZSAzNDpicmVhayBlfWw9bCsxfDB9KDB8bCkhPSgwfGMpJmY8''@;'; put 'put ''PDI0Pj4yND09MzQmJihmZVtsPj4wXT0wLGZ1bmN0aW9uIEkwKGwsYyl7bHw9MDt2YXIgZj0wOygwfChmPTB8YVs0Njk4MV0pKTwoMHwoY3w9MCkpPyhmPWY/MHxVYSgwfGFbNDY5ODJdLGMrMXwwKTowfEYwKGMrMXwwKSxhWzQ2OTgyXT1mLGFbNDY5ODFdPWMpOmY9MHxhWzQ2OTgyXSxyZChm''@;'; put 'put ''LGwpLGFbNDY5NjZdPWFbNDY5ODJdfShjLGwtY3wwKSl9bGU9bX1mdW5jdGlvbiB0aCgpe3ZhciBsPTA7KGw9MHxhWzQ2OTc4XSl8fChsPTB8RjAoMTAyNCksYVs0Njk3OF09bCxhWzQ2OTgwXT1sKzEwMjQpLGFbNDY5NzldPWwsZmVbbD4+MF09MH1mdW5jdGlvbiBCcihsKXtsfD0wO3ZhciBj''@;'; put 'put ''PTAsZj0wLHA9MCxtPTAsQT0wLHc9MDsoZj0wfGFbNDY5NzldKT4+PjA+KGM9MHxhWzQ2OTc4XSk+Pj4wJiYoZj1mKy0xfDAscD0zKTtlOmZvcig7Oyl7Mz09KDB8cCkmJihhWzQ2OTc5XT1mKSxtPXA9MHxhWzQ2OTgwXTtkb3tpZihBPWwsbD1sKzF8MCx3PWYsZj1mKzF8MCxmZVt3Pj4wXT1B''@;'; put 'put ''PTB8ZmVbQT4+MF0sIShBPDwyND4+MjQpKWJyZWFrIGV9d2hpbGUoZj4+PjA8cD4+PjApO2FbNDY5NzldPWYsYz0wfFVhKGMsdz1tLShwPWMpPDwxKSxhWzQ2OTc4XT1jLGFbNDY5ODBdPWMrdyxmPWMrKGYtcCl8MCxwPTN9YVs0Njk3OV09Zn1mdW5jdGlvbiBXbigpe3ZhciBtLGw9MCxjPTAs''@;'; put 'put ''Zj0wLHA9MDtmb3IobT0wfGFbNDY5NzNdLHA9MHxhWzQ2OTY0XSxjPSgwfGFbMjgrKDB8YVthWzQ2OTcyXT4+Ml0pPj4yXSkrKDB8YVs0Njk3MV0pfDA7IShwPj4+MD49bT4+PjApOyl7bD0obD0wfGZlW3A+PjBdKTw8MjQ+PjI0PzB8YVsxODkwNCsoKDI1NSZsKTw8Mik+PjJdOjEsMHxpdFs2''@;'; put 'put ''Mzg1NisoYzw8MSk+PjFdJiYoYVs0Njk3NF09YyxhWzQ2OTc1XT1wKTtlOmZvcig7Oyl7Zj0yNTUmbDtkb3tpZigoMHxjKT09KDB8aXRbNjQyNTIrKChsPWYrKDB8aXRbNjQwNDIrKGM8PDEpPj4xXSl8MCk8PDEpPj4xXSkpYnJlYWsgZTtjPShsPTB8aXRbNjQ3ODgrKGM8PDEpPj4xXSk8PDE2''@;'; put 'put ''Pj4xNn13aGlsZShsPDwxNj4+MTY8PTkyKTtsPTB8YVsxOTkyOCsoZjw8Mik+PjJdfXA9cCsxfDAsYz0wfGl0WzY0OTk4KyhsPDwxKT4+MV19cmV0dXJuIDB8Y31mdW5jdGlvbiAkbihsKXt2YXIgYz0wO2ZvcigwfGl0WzYzODU2KygobHw9MCk8PDEpPj4xXSYmKGM9MHxhWzQ2OTczXSxhWzQ2''@;'; put 'put ''OTc0XT1sLGFbNDY5NzVdPWMpOygwfGwpIT0oMHxpdFs2NDI1MisoKGM9MSsoMHxpdFs2NDA0MisobDw8MSk+PjFdKXwwKTw8MSk+PjFdKTspbD0wfGl0WzY0Nzg4KyhsPDwxKT4+MV07cmV0dXJuIDB8KChjPTB8aXRbNjQ5OTgrKGM8PDEpPj4xXSk8PDE2Pj4xNj09OTI/MDpjPDwxNj4+MTYp''@;'; put 'put ''fWZ1bmN0aW9uIGJyKCl7dmFyIGw9MCxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MDtpZihwPTB8YVs0Njk2NF0saz1NPTB8YVs0Njk3M10sTT4+PjA+KCh3PTB8YVs0KyhtPTB8YVsoYj0wfGFbNDY5NzJdKT4+Ml0pPj4yXSkrKDErKDB8YVs0Njk3N10p''@;'; put 'put ''KXwwKT4+PjAmJldyKDk2Njc0KSxBPWstcHwwLDB8YVttKzQwPj4yXSl7Zm9yKE09QSstMXwwLEE9dyxtPTA7ISgoMHxtKT49KDB8TSkpOylmZVtBPj4wXT0wfGZlW3A+PjBdLEE9QSsxfDAscD1wKzF8MCxtPW0rMXwwO3A9MHxhW2I+PjJdO2Rve2lmKDI9PSgwfGFbcCs0ND4+Ml0pKWFbNDY5''@;'; put 'put ''NzddPTAsYVtwKzE2Pj4yXT0wLGY9cCxEPTE3O2Vsc2V7Zm9yKDs7KXtpZigwfChtPShBPTB8YVsodz1wKzEyfDApPj4yXSktTS0xfDApKXtEPTE2O2JyZWFrfWlmKGI9MHxhWyhtPXArNHwwKT4+Ml0sISgwfGFbcCsyMD4+Ml0pKXtEPTEyO2JyZWFrfWlmKGFbdz4+Ml09cD0wPT0oMHwocD1B''@;'; put 'put ''PDwxKSk/KEE+Pj4zKStBfDA6cCxwPTB8dWkoYixwKzJ8MCksYVttPj4yXT1wLCFwKWJyZWFrO2FbNDY5NzNdPWI9cCsoay1iKXwwLHA9MHxhW2FbNDY5NzJdPj4yXSxrPWJ9aWYoMTI9PSgwfEQpKWFbbT4+Ml09MDtlbHNlIGlmKDE2PT0oMHxEKSl7aWYoYz0wfG1pWzYzJmFbYVs4KygwfGFb''@;'; put 'put ''NDY5NjddKT4+Ml0+PjJdXSgwfGFbNDY5NjhdLCgwfGFbcCs0Pj4yXSkrTXwwLG0+Pj4wPDgxOTI/bTo4MTkyKSxmPTB8YVthWzQ2OTcyXT4+Ml0sYVs0Njk3N109YyxhW2YrMTY+PjJdPWMsYyl7bD0wO2JyZWFrfUQ9MTc7YnJlYWt9V3IoOTY3MzApfX13aGlsZSgwKTtkb3tpZigxNz09KDB8''@;'; put 'put ''RCkpe2lmKE0pe2FbZis0ND4+Ml09MixsPTIsYz0wO2JyZWFrfUlpKDB8YVs0Njk2Ml0pLGw9MSxjPTB8YVs0Njk3N10sZj0wfGFbYVs0Njk3Ml0+PjJdO2JyZWFrfX13aGlsZSgwKTtwPWMrTXwwO2Rve2lmKHA+Pj4wPigwfGFbZisxMj4+Ml0pPj4+MCl7aWYoRD0wfHVpKDB8YVtmKzQ+PjJd''@;'; put 'put ''LHArKGM+Pj4xKXwwKSxhWzQrKDB8YVsoYz0wfGFbNDY5NzJdKT4+Ml0pPj4yXT1ELGM9MHxhWzQrKDB8YVtjPj4yXSk+PjJdKXtSPTB8YVs0Njk3N10sRz1jO2JyZWFrfVdyKDk2Nzc0KX1lbHNlIFI9YyxHPTB8YVtmKzQ+PjJdfXdoaWxlKDApO2FbNDY5NzddPVI9UitNfDAsZmVbRytSPj4w''@;'; put 'put ''XT0wLGZlWzErKDB8YVs0Njk3N10pKygwfGFbNCsoMHxhWyhHPTB8YVs0Njk3Ml0pPj4yXSk+PjJdKT4+MF09MCxhWzQ2OTY0XT1hWzQrKDB8YVtHPj4yXSk+PjJdfWVsc2UgbD0xPT0oMHxBKT8xOjI7cmV0dXJuIDB8bH1mdW5jdGlvbiBXcihsKXt2YXIgYyxmO2M9bGUsbGU9bGUrMTZ8MCxm''@;'; put 'put ''PTB8YVsxNTcxMl0sYVtjPj4yXT1sfD0wLFQwKGYsOTY2NzAsYyksWHUoMil9ZnVuY3Rpb24gdWkobCxjKXtyZXR1cm4gMHxVYShsfD0wLGN8PTApfWZ1bmN0aW9uIElpKGwpe2x8PTA7dmFyIGM9MCxmPTA7MCE9KDB8KGY9MHxhWzQ2OTcyXSkpJiYwIT0oMHwoYz0wfGFbZj4+Ml0pKXx8KEFs''@;'; put 'put ''KCksYz0wfHEyKDB8YVs0Njk2Ml0sMTYzODQpLGFbKGY9MHxhWzQ2OTcyXSk+PjJdPWMsZnx8KGM9MCkpLHUwKGMsbCksZTEoKX1mdW5jdGlvbiB1MChsLGMpe3ZhciBmO2N8PTAsZj0wfGFbNDc2NDNdLHppKGx8PTApLGFbbD4+Ml09YyxhW2wrNDA+PjJdPTEsKDB8KGM9KGM9MHxhWzQ2OTcy''@;'; put 'put ''XSk/MHxhW2M+PjJdOjApKSE9KDB8bCkmJihhW2wrMzI+PjJdPTEsYVtsKzM2Pj4yXT0wKSxhW2wrMjQ+PjJdPTAsYVs0NzY0M109Zn1mdW5jdGlvbiB6aShsKXt2YXIgYz0wOzB8KGx8PTApJiYoYVtsKzE2Pj4yXT0wLGZlW2FbKGM9bCs0fDApPj4yXT4+MF09MCxmZVsxKygwfGFbYz4+Ml0p''@;'; put 'put ''Pj4wXT0wLGFbbCs4Pj4yXT1hW2M+PjJdLGFbbCsyOD4+Ml09MSxhW2wrNDQ+PjJdPTAsKDB8KGM9KGM9MHxhWzQ2OTcyXSk/MHxhW2M+PjJdOjApKT09KDB8bCkmJmUxKCkpfWZ1bmN0aW9uIGVhKGwpe3JldHVybiAwfEYwKGx8PTApfWZ1bmN0aW9uIFlvKGwpe2x8PTA7dmFyIHAsbSxBLGIs''@;'; put 'put ''ayxNLGM9MCxmPTAsdz0wO009bGUsbGU9bGUrMjExMnwwLGs9TSszMnwwLHc9TSsyNHwwLEE9TSsxNnwwLG09TSs4fDAscD1NLGM9TSs1NnwwLHVzKGI9TSs0MHwwLDEwMjQsTSsxMDgwfDApLDB8KGY9MHxhWzQ2OTY2XSkmJih1byhiLGYpLHVvKGIsOTcwMjcpKSx1byhiLGwpLGFbcD4+Ml09''@;'; put 'put ''YVs0NzI1XSxvbyhjLDk3MDMwLHApLHVvKGIsYyk7ZTpkb3tpZigwfGZlW2FbNDY5NjRdPj4wXSl1byhiLDk3MDQyKSx1byhiLDB8YVs0Njk2NF0pLGM9Yis0fDAsbD0wfGFbYz4+Ml0sbD4+PjA+PSgwfGFbYis4Pj4yXSk+Pj4wJiYoUTAoYiwxKSxsPTB8YVtjPj4yXSksYVtjPj4yXT1sKzEs''@;'; put 'put ''ZmVbbD4+MF09Mzk7ZWxzZSBzd2l0Y2goMHwoKDB8YVs0Njk3MV0pLTF8MCkvMil7Y2FzZSAyOmlmKGFbbT4+Ml09MTYzODQsb28oYyw5NzA1MCxtKSx1byhiLGMpLCEoMHxmZVsobD0wfGFbNDY5NzhdKT4+MF0pKWJyZWFrIGU7dz0wfFVvKGwpLHVvKGIsOTcxMTIpLGw9MHxhWzQ2OTc4XSwo''@;'; put 'put ''MHx3KT44MCYmKGZlW2wrODA+PjBdPTApLHVvKGIsbCk7YnJlYWsgZTtjYXNlIDM6aWYoYVtBPj4yXT0xNjM4NCxvbyhjLDk3MTMxLEEpLHVvKGIsYyksISgwfGZlWyhsPTB8YVs0Njk3OF0pPj4wXSkpYnJlYWsgZTt3PTB8VW8obCksdW8oYiw5NzE5OSksbD0wfGFbNDY5NzhdLCgwfHcpPjgw''@;'; put 'put ''JiYoZmVbbCs4MD4+MF09MCksdW8oYixsKTticmVhayBlO2Nhc2UgMTphW3c+PjJdPTE2Mzg0LG9vKGMsOTcyMTgsdyksdW8oYixjKTticmVhayBlO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoMCk7KGw9MHxhWyhmPWIrNHwwKT4+Ml0pPj4+MD49KDB8YVsoYz1iKzh8MCk+PjJdKT4+PjAmJihR''@;'; put 'put ''MChiLDEpLGw9MHxhW2Y+PjJdKSxhW2Y+PjJdPWwrMSxmZVtsPj4wXT0xMCwobD0wfGFbZj4+Ml0pPj4+MD49KDB8YVtjPj4yXSk+Pj4wJiYoUTAoYiwxKSxsPTB8YVtmPj4yXSksZmVbbD4+MF09MCxhW2Y+PjJdPXc9MHxhW2I+PjJdLGFbaz4+Ml09dywkcigxLDk2OTEzLGspLEMyKGIpLGxl''@;'; put 'put ''PU19ZnVuY3Rpb24gRWMobCxjLGYpe3ZhciBwLG0sQTtyZXR1cm4gY3w9MCxmfD0wLHA9bGUsbGU9bGUrODB8MCxtPXAsZnVuY3Rpb24ga0cobCxjLGYpe2N8PTAsMHwoZnw9MCkmJigwfEptKGMsMCwwKSkhPSgwfGYpJiZKbShjLGYsMCl9KDAsMHxhWyhBPTUyKyhsfD0wKXwwKT4+Ml0sMTg1''@;'; put 'put ''NDgpLGFbKGw9bSs4fDApPj4yXT1jLGFbbCs0Pj4yXT1mLGY9MHxtaVs2MyZhWyhmPTB8YVtBPj4yXSk+PjJdXShmLG0sNCksbGU9cCwwfGZ9ZnVuY3Rpb24gcHMobCxjLGYpe2x8PTAsZnw9MDt2YXIgbSxBLHA9MDtyZXR1cm4gQT1sZSxsZT1sZSsxNnwwLG09QSwwIT0oMHwoY3w9MCkpJiYw''@;'; put 'put ''IT0oMHxLNChsLDAsYyxtLDApKSYmMCE9KDB8KHA9MHxFYyhsLDB8YVsocD1tKT4+Ml0sMHxhW3ArND4+Ml0pKSl8fCgwIT0oMHxmKSYmMCE9KDB8SzQobCwwLGMsbSwxKSk/KHA9MHxmdW5jdGlvbiBPdShsLGMsZil7dmFyIHA9MCxtPTAsQT0wO3JldHVybihwPTB8RWMobHw9MCxjfD0wLGZ8''@;'; put 'put ''PTApKXx8KHA9MHxNdChsLDcyKSxhW3ArNjQ+PjJdPWFbbCs2ND4+Ml0sYVsobT1wKzI0fDApPj4yXT1BPTB8YVtsKzI0Pj4yXSxmZVttPj4wXT0yNTUmQSYtOSxhW3ArNTY+PjJdPWwsYVtwKzYwPj4yXT1hW2wrNjA+PjJdLGFbKGw9cCs4fDApPj4yXT1jLGFbbCs0Pj4yXT1mLGhvKHApKSww''@;'; put 'put ''fHB9KGwsMHxhWyhwPW0pPj4yXSwwfGFbcCs0Pj4yXSksTDUobCwwLHApKTpwPTApLGxlPUEsMHxwfWZ1bmN0aW9uIHdzKGwpe3JldHVybiAwfG1pWzYzJmFbKGw9MHxhWzUyKyhsfD0wKT4+Ml0pPj4yXV0obCwwLDEyOCl9ZnVuY3Rpb24gRXMobCl7dmFyIGM9MDtyZXR1cm4gMHwobD0oYz0w''@;'; put 'put ''fGsxKGx8PTApKT8wfG1pWzYzJmFbKGM9MHxhW2MrNTI+PjJdKT4+Ml1dKGMsbCw4KTowKX1mdW5jdGlvbiBrMShsKXtyZXR1cm4gMHxhWzU2KyhsfD0wKT4+Ml19ZnVuY3Rpb24gcjcobCxjKXtyZXR1cm4gMHxtaVs2MyZhWyhsPTB8YVs1MisobHw9MCk+PjJdKT4+Ml1dKGwsY3w9MCwyKX1m''@;'; put 'put ''dW5jdGlvbiBaaChsLGMsZil7dmFyIHAsbTtyZXR1cm4gbHw9MCxmfD0wLG09MHxhWyhwPTI4KyhjfD0wKXwwKT4+Ml0sYVtwPj4yXT03LGFbNDY5ODRdPWwsZj0wfGlzKGMsZiksYVtwPj4yXT1tLGFbNDY5ODRdPTAsMHxmfWZ1bmN0aW9uICQ0KGwsYyl7dmFyIGYscDtyZXR1cm4gbHw9MCxm''@;'; put 'put ''PTI4KygwfEptKGN8PTAsMCwwKSl8MCxwPTB8YVtmPj4yXSxhW2Y+PjJdPTcsYVs0Njk4NF09bCwwfE5sKGMpP2w9MTooYVtmPj4yXT1wLGFbNDY5ODRdPTAsbD0wKSwwfGx9ZnVuY3Rpb24gRUcobCxjKXtsfD0wLGN8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0w''@;'; put 'put ''LFI9MCxHPTAscT0wLHBlPTA7ZTpkb3tpZigwIT0oMHxsKSYmMCE9KDB8ZmVbbD4+MF0pKXtmZVtjPj4wXT0zNCxwZT0wLG09MSYoKChNPTB8ZmVbbD4+MF0pLTQ1JjI1NSk8MnwoKDI1NSZNKS00OHwwKT4+PjA8MTApLEE9MCx3PTAsYj0wLGY9YysxfDAscD1sKzF8MDt0OmZvcig7Oyl7Zm9y''@;'; put 'put ''KGs9Zjs7KXtpZighKE08PDI0Pj4yNCkpYnJlYWsgdDtmPTI1NSZNO246ZG97aWYoTTw8MjQ+PjI0PT0zNClmZVtrPj4wXT05MixEPW0sUj0xLGs9aysxfDA7ZWxzZXtpZighbSl7RD0wLFI9KFI9TTw8MjQ+PjI0Pi0xJk08PDI0Pj4yNCE9OTUmMD09KDB8aXYoZikpKT8xOkE7YnJlYWt9c3dp''@;'; put 'put ''dGNoKE08PDI0Pj4yNCl7Y2FzZSA0NTpEPShSPTA9PSgwfGIpKT9tOjAsUj1SP0E6MTticmVhayBuO2Nhc2UgNDY6RD0oUj0wPT0oMHx3KSk/bTowLFI9Uj9BOjEsdz13KzF8MDticmVhayBuO2RlZmF1bHQ6RD0oUj0oZistNDh8MCk+Pj4wPDEwKT9tOjAsUj1SP0E6MTticmVhayBufX19d2hp''@;'; put 'put ''bGUoMCk7aWYoZj1rKzF8MCxmZVtrPj4wXT1NLHE9cCsxfDAsRz0wfGZlW3A+PjBdLGI9YisxfDAscD0wfGFbNTAzMV0pe2lmKG09MjU1JkcscGUmKEE9Rzw8MjQ+PjI0IT0wKSYmIShNPDwyND4+MjQ9PTkyfE08PDI0Pj4yND4tMSYoTSstNDUmMjU1KT4xJjA9PSgwfGl2KE08PDI0Pj4yNCkp''@;'; put 'put ''XjEpJiYhKEc8PDI0Pj4yND4tMSYoRystNDUmMjU1KT4xJjA9PSgwfGl2KG0pKSkpYnJlYWs7aWYoKDB8Yik8KDB8cCl8MV5BKW09RCxBPVIsaz1mLHA9cSxNPUc7ZWxzZXtpZihNPDwyND4+MjQ9PTkyfE08PDI0Pj4yND4tMSYwPT0oMHxpdihNPDwyND4+MjQpKSYoTSstNDUmMjU1KT4xXjEp''@;'; put 'put ''e3BlPTEsbT1ELEE9UixNPUcscD1xO2NvbnRpbnVlIHR9aWYoRzw8MjQ+PjI0Pi0xJihHKy00NSYyNTUpPjEmMD09KDB8aXYobSkpKXtwZT0xLG09RCxBPVIsTT1HLHA9cTtjb250aW51ZSB0fWZlW2Y+PjBdPTkyLGZlW2srMj4+MF09MTAsbT1ELEE9MSxiPTAsaz1rKzN8MCxwPXEsTT1HfX1l''@;'; put 'put ''bHNlIG09RCxBPVIsaz1mLHA9cSxNPUd9ZmVbZj4+MF09OTIsZmVbaysyPj4wXT0xMCxwZT0wLG09RCxBPTEsYj0wLE09RyxmPWsrM3wwLHA9cX1pZihmZVtrPj4wXT0zNCxmZVtrKzE+PjBdPTAsQSlsPWM7ZWxzZXtpZigxPT0oMHxiKSYmKCgwfGZlW2w+PjBdKS00NSYyNTUpPDIpe2w9Yzti''@;'; put 'put ''cmVha31mb3IoZj0yMDEyODs7KXtpZighKHA9MHxhW2Y+PjJdKSlicmVhayBlO2lmKCEoMHx5MChwLGwpKSl7bD1jO2JyZWFrfWY9Zis0fDB9fX1lbHNlIGw9OTczMDl9d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBSQShsKXtyZXR1cm4gMHxmdW5jdGlvbiBTRyhsLGMpe3JldHVybiBj''@;'; put 'put ''fD0wLDB8T28obHw9MCk/ZnVuY3Rpb24gTUcobCxjKXtsfD0wO3ZhciBmPTAscD0wLG09MDtmb3IoZmVbKGN8PTApPj4wXT02MCxwPWM7Zj1wKzF8MCwobT0wfGZlW2w+PjBdKTw8MjQ+PjI0OylmZVtmPj4wXT1tLGw9bCsxfDAscD1mO2ZlW2Y+PjBdPTYyLGZlW3ArMj4+MF09MH0obCxjKTpj''@;'; put 'put ''PTB8RUcobCxjKSwwfGN9KGx8PTAsMHxKbmUobCkpfWZ1bmN0aW9uIEpuZShsKXt2YXIgYz0wO3JldHVybiBjPTIrKCgwfFVvKGx8PTApKTw8MSl8MCxsPTB8YVs0Njk4Nl0sKGM9Yz4+PjA+MTAyND9jOjEwMjQpPj4+MD4oMHxhWzQ2OTg1XSk+Pj4wJiYobD1sPzB8VWEobCxjKTowfEYwKGMp''@;'; put 'put ''LGFbNDY5ODZdPWwsYVs0Njk4NV09YyksMHxsfWZ1bmN0aW9uIFRHKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MDswIT0oMHwoQT0wfHRpKGx8PTApKSkmJjM3IT0oMHxmZVtBPj4wXSk/Yz0wOmY9MztlOmRve2lmKDM9PSgwfGYpKXtjPTB8aWMobCk7dDpkb3tpZigwfGMmJihwPTB8''@;'; put 'put ''aWMoMHxrMShsKSksMHxwKSlmb3IoQT0wfHB1KDB8YVs4KygwfGljKDB8ZGkobCkpKT4+Ml0pLG09YysxMnwwLGY9cCsxMnwwLGM9MDs7KXtpZigoMHxjKT49KDB8QSkpYnJlYWsgdDtpZigwfChwPTB8YVsoMHxhW20+PjJdKSsoYzw8Mik+PjJdKSYmMHwodz0wfGFbKDB8YVtmPj4yXSkrKGM8''@;'; put 'put ''PDIpPj4yXSkmJjB8WmkocCx3KSl7Yz0wO2JyZWFrIGV9Yz1jKzF8MH19d2hpbGUoMCk7aWYoYz0wfFZoKGwsMCkpe2lmKCEoKDB8cHUoMHxhW2MrOD4+Ml0pKT4wKSlyZXR1cm4oMHxwdSgwfGFbYysxMj4+Ml0pKTwxfDA7Yz0wfWVsc2UgYz0xfX13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1bmN0''@;'; put 'put ''aW9uIFhuZShsLGMpe2x8PTAsY3w9MDt2YXIgZixwPTA7cmV0dXJuIGFbNDY5ODddPTAsMHwoZj0wfExpKGwsOTczMTkpKSYmKCgwfGZlW2Y+PjBdKS00OHwwKT4+PjA8MTAmJjA9PSgwfChwPTB8a0woZiwwLDEwKSkpfCgwfHApPjU5JiYoYVs1MDMxXT1wKSxLbmUobCwxKSwtMSE9KDB8JG5l''@;'; put 'put ''KGwsYywxKSkmJi0xIT0oMHxxbmUobCxjKSkmJi0xIT0oMHxlcmUobCxjKSk/KGFbNTAzMV09MTI4LGw9MHxfb1s2MyZhWzgrKDB8YVs4KygwfGFbbCs2ND4+Ml0pPj4yXSk+PjJdXShjKSk6bD0tMSwwfGx9ZnVuY3Rpb24gS25lKGwsYyl7Y3w9MDt2YXIgZj0wO2ZvcihhWyhsfD0wKT4+Ml09''@;'; put 'put ''LTkmYVtsPj4yXSxmPTB8d3MobCk7ZjspS25lKGYsMCksZj0wfEVzKGYpO2U6ZG97aWYoMHxjKWZvcihjPTB8RHQobCk7Oyl7aWYoIWMpYnJlYWsgZTtmb3IoYVtjPj4yXT0tOSZhW2M+PjJdLGY9MHx3MChsLGMpO2Y7KWFbZj4+Ml09LTkmYVtmPj4yXSxmPTB8UzAobCxmKTtjPTB8enQobCxj''@;'; put 'put ''KX19d2hpbGUoMCl9ZnVuY3Rpb24gJG5lKGwsYyxmKXtsfD0wLGN8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wOzA9PSgwfChmfD0wKSkmJjAhPSgwfGsxKGwpKT8odz0wLG09MTk1MDU5LGs9MTA5NTE0KTooaz0wPT0oMSZmZVtsKzI0Pj4wXSk/MTk1MDU5Ojk3MzYzLG09MD09KDB8''@;'; put 'put ''TEEobCkpLGFbNDY5ODhdPTB8c2kobCwyLDExMTQ1NSwwKSxhWzQ2OTg5XT0wfHNpKGwsMiwxMTE0NjQsMCksdz0xLG09bT8xOTUwNTk6OTczNjYpLDAhPSgwfChwPTB8dGkobCkpKSYmMzchPSgwfGZlW3A+PjBdKT8oQT0xLGI9MTAyNjA0KTooQT0wLGI9MTk1MDU5LHA9MTk1MDU5KTtkb3tp''@;'; put 'put ''ZigtMSE9KDB8TzUobCxjKSkmJi0xIT0oMHxIMihsLGMsbSkpKXtpZihtPTA9PSgwfEEpLEF8d3wwKXtpZigtMT09KDB8SDIobCxjLGspKSl7cD0tMTticmVha31pZigtMT09KDB8SDIobCxjLDEwMjU5NykpKXtwPS0xO2JyZWFrfX1pZighbSYmLTE9PSgwfEY2KGwsYyxwKSkpe3A9LTE7YnJl''@;'; put 'put ''YWt9LTEhPSgwfEgyKGwsYyxiKSkmJi0xIT0oMHxIMihsLGMsOTczNzQpKSYmKGFbNDY5ODddPTErKDB8YVs0Njk4N10pLC0xIT0oMHxZZChsLGMsZikpKT8oYVtsPj4yXT04fGFbbD4+Ml0scD0wKTpwPS0xfWVsc2UgcD0tMX13aGlsZSgwKTtyZXR1cm4gMHxwfWZ1bmN0aW9uIHFuZShsLGMp''@;'; put 'put ''e2x8PTAsY3w9MDt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MDtlOmRve2lmKC0xPT0oMHxBQyhsLGMpKSlmPS0xO2Vsc2UgZm9yKE09MHxWaCgwfGRpKGwpLDApLGI9MD09KDB8TSksaz1NKzEyfDAsTT1NKzh8MCx3PTB8RHQobCk7Oyl7aWYoIXcpe2Y9MDticmVhayBlfWlm''@;'; put 'put ''KDB8dHJlKGwsdywoMHxhW3c+PjJdKT4+PjQsMCkmJi0xPT0oMHx5Qyh3LGMsZj1iPzA6MHxhW00+PjJdKSkpe2Y9LTE7YnJlYWsgZX1mb3IoQT0wfHcwKGwsdyksZj13O0E7KXtpZihtPUErLTQ4fDAsKDB8ZikhPSgwfChwPTB8YVsoMj09KDMmYVtBPj4yXXwwKT9BOm0pKzQwPj4yXSkpJiYw''@;'; put 'put ''IT0oMHx0cmUobCxwLCgwfGFbdz4+Ml0pPj4+NCwwKSkpe2lmKC0xPT0oMHx5QygwfGFbKDI9PSgzJmFbQT4+Ml18MCk/QTptKSs0MD4+Ml0sYyxmPWI/MDowfGFbTT4+Ml0pKSl7Zj0tMTticmVhayBlfWY9MHxhWygyPT0oMyZhW0E+PjJdfDApP0E6bSkrNDA+PjJdfWlmKDB8d1QobCxBKSYm''@;'; put 'put ''LTE9PSgwfHdDKEEsYyxwPWI/MDowfGFbaz4+Ml0pKSl7Zj0tMTticmVhayBlfUE9MHxTMChsLEEpfXc9MHx6dChsLHcpfX13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIGVyZShsLGMpe3JldHVybiBsfD0wLGN8PTAsYVs0Njk4N109KDB8YVs0Njk4N10pLTEsMHwoLTE9PSgwfE81KGws''@;'; put 'put ''YykpPy0xOigtMT09KDB8SDIobCxjLDExMTAwOCkpKTw8MzE+PjMxKX1mdW5jdGlvbiBPNShsLGMpe2x8PTAsY3w9MDt2YXIgZj0wO2ZvcihmPTB8YVs0Njk4N107Oyl7aWYoKDB8Zik8PTApe2Y9MDticmVha31pZigtMT09KDB8SDIobCxjLDE1MzU5NykpKXtmPS0xO2JyZWFrfWY9ZistMXww''@;'; put 'put ''fXJldHVybiAwfGZ9ZnVuY3Rpb24gSDIobCxjLGYpe3JldHVybiAwfEJpWzEyNyZhWzQrKDB8YVs4KygwfGFbNjQrKGx8PTApPj4yXSk+PjJdKT4+Ml1dKGN8PTAsZnw9MCl9ZnVuY3Rpb24gQUMobCxjKXtmb3IoY3w9MCxsPTB8d3MobHw9MCk7Oyl7aWYoIWwpe2w9MDticmVha31pZigwfFRH''@;'; put 'put ''KGwpKUFDKGwsYyk7ZWxzZXtpZigtMT09KDB8JG5lKGwsYywwKSkpe2w9LTE7YnJlYWt9aWYoLTE9PSgwfHFuZShsLGMpKSl7bD0tMTticmVha31pZigtMT09KDB8ZXJlKGwsYykpKXtsPS0xO2JyZWFrfX1sPTB8RXMobCl9cmV0dXJuIDB8bH1mdW5jdGlvbiB0cmUobCxjLGYscCl7Znw9MCxw''@;'; put 'put ''fD0wO3ZhciBtPTA7cmV0dXJuIDA9PSgwfGZ1bmN0aW9uIHhHKGwsYyl7Zm9yKGN8PTAsbD0wfHdzKGx8PTApOzspe2lmKCFsKXtsPTA7YnJlYWt9aWYoMD09KDB8VEcobCkpJiYwfFluKGwsYywwKSl7bD0xO2JyZWFrfWw9MHxFcyhsKX1yZXR1cm4gMHxsfShsfD0wLGN8PTApKSYmMCE9KDB8''@;'; put 'put ''ZnVuY3Rpb24gSUcobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDtlOmRve2lmKDA8cD4+PjB8KDA9PSgwfHApPygwfGFbYz4+Ml0pPj4+ND4+PjA8Zj4+PjA6MCkpYz0wO2Vsc2UgZm9yKGM9MHxNZihsLGMpOzspe2lmKCFjKXtjPTE7YnJlYWsgZX1pZigwPHA+Pj4wfCgwPT0oMHxwKT8o''@;'; put 'put ''MHxhW2FbYys0MD4+Ml0+PjJdKT4+PjQ+Pj4wPGY+Pj4wOjApKXtjPTA7YnJlYWsgZX1jPTB8RjMobCxjKX19d2hpbGUoMCk7cmV0dXJuIDB8Y30obCxjLGYscCkpPzA9PSgwfGZ1bmN0aW9uIHJyZShsLGMpe3JldHVybiAwfChsPTB8TWYobHw9MCxjfD0wKT8wOjA9PSgwfHcwKGwsYykpJjEp''@;'; put 'put ''fShsLGMpKSYmMD09KDB8ZnVuY3Rpb24gaXJlKGwpe3ZhciBjPTAsZj0wLHA9MDtsPTB8aWMobHw9MCk7ZTpkb3tpZihsKWZvcihmPWwrOHwwLHA9MHxhW2Y+PjJdLGM9bCsxMnwwLGw9MHxtaVs2MyZhW3A+PjJdXShwLDAsMTI4KTs7KXtpZighbCl7bD0wO2JyZWFrIGV9aWYoKDB8YVsoMHxh''@;'; put 'put ''W2M+PjJdKSsoYVtsKzE2Pj4yXTw8Mik+PjJdKSE9KDB8YVtsKzEyPj4yXSkpe2w9MTticmVhayBlfWw9MHxtaVs2MyZhWyhwPTB8YVtmPj4yXSk+PjJdXShwLGwsOCl9ZWxzZSBsPTB9d2hpbGUoMCk7cmV0dXJuIDB8bH0oYykpP209NTpsPTE6bT01LDU9PSgwfG0pJiYobD0wKSwwfGx9ZnVu''@;'; put 'put ''Y3Rpb24geUMobCxjLGYpe3ZhciBwO2N8PTAsZnw9MCxwPTB8Y3IobHw9MCk7ZG97aWYoLTEhPSgwfE81KHAsYykpJiYtMSE9KDB8YlQobCxjKSkpe2lmKDA9PSgwfF9UKGwpKSYmLTE9PSgwfEpQKGwsYyxmKSkpe2w9LTE7YnJlYWt9bD0wfEgyKHAsYyw5NzMzMCl9ZWxzZSBsPS0xfXdoaWxl''@;'; put 'put ''KDApO3JldHVybiAwfGx9ZnVuY3Rpb24gd1QobCxjKXtmb3IoY3w9MCxsPTB8d3MobHw9MCk7Oyl7aWYoIWwpe2w9MTticmVha31pZigwPT0oMHxURyhsKSkmJjB8WmQobCxjLDApKXtsPTA7YnJlYWt9bD0wfEVzKGwpfXJldHVybiAwfGx9ZnVuY3Rpb24gd0MobCxjLGYpe2N8PTAsZnw9MDt2''@;'; put 'put ''YXIgbSxwPTAsQT0wO0E9MHxhWygzPT0oMHwocD0zJmFbKGx8PTApPj4yXSkpP2w6bCs0OHwwKSs0MD4+Ml0scD0wfGFbKDI9PSgwfHApP2w6bCstNDh8MCkrNDA+PjJdLG09MHxjcihBKTtkb3tpZigtMSE9KDB8TzUobSxjKSkmJi0xIT0oMHxiVChBLGMpKSYmLTEhPSgwfG5yZShsLGMsMHxh''@;'; put 'put ''WzQ2OTg4XSkpJiYtMSE9KDB8SDIobSxjLChBPTAhPSgwfFNjKDB8Y3IoQSkpKSk/MTAwMDc5OjEwMDA4NCkpJiYtMSE9KDB8YlQocCxjKSkmJi0xIT0oMHxucmUobCxjLDB8YVs0Njk4OV0pKSl7aWYoMHxfVChsKSl7aWYoLTE9PSgwfEwyKGwsYywxKSkpe2w9LTE7YnJlYWt9fWVsc2UgaWYo''@;'; put 'put ''LTE9PSgwfEpQKGwsYyxmKSkpe2w9LTE7YnJlYWt9bD0wfEgyKG0sYyw5NzMzMCl9ZWxzZSBsPS0xfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gYlQobCxjKXtjfD0wO3ZhciBmLG0sQSxiLHA9MCx3PTAsaz0wO3JldHVybiBiPWxlLGxlPWxlKzMyfDAsQT1iLGY9Yis4fDAscD0wfHRp''@;'; put 'put ''KGx8PTApLG09MHxjcihsKSxwPy0xPT0oMHxGNihtLGMscCkpP2w9LTE6dz00OihsPTB8YVs0KyhrPWwrOHwwKT4+Ml0sYVsocD1BKT4+Ml09YVtrPj4yXSxhW3ArND4+Ml09bCxvbyhmLDk3MzUwLEEpLC0xPT0oMHxIMihtLGMsZikpP2w9LTE6dz00KSw0PT0oMHx3KSYmKGw9MCksbGU9Yiww''@;'; put 'put ''fGx9ZnVuY3Rpb24gbnJlKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wLG09MDtlOmRve2lmKDAhPSgwfGYpJiYocD0wfGNyKGwpLG09MHxIbyhsLGYpLDAhPSgwfGZlW20+PjBdKSkpaWYoLTE9PSgwfEgyKHAsYywxMDc5ODQpKSlsPS0xO2Vsc2V7ZG97aWYoMHxPbyhtKSl7aWYoLTE9''@;'; put 'put ''PSgwfEY2KHAsYyxtKSkpe2w9LTE7YnJlYWsgZX19ZWxzZXtpZighKGw9MHwkcyhtLDU4KSkpe2lmKC0xPT0oMHxYUChwLGMsbSwwKSkpe2w9LTE7YnJlYWsgZX1icmVha31pZihmZVtsPj4wXT0wLC0xPT0oMHxYUChwLGMsbSwwKSkpe2w9LTE7YnJlYWsgZX1pZigtMT09KDB8SDIocCxjLDEw''@;'; put 'put ''Nzk4NCkpKXtsPS0xO2JyZWFrIGV9aWYoLTE9PSgwfFhQKHAsYyxsKzF8MCwwKSkpe2w9LTE7YnJlYWsgZX1mZVtsPj4wXT01OH19d2hpbGUoMCk7bD0wfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gX1QobCl7cmV0dXJuKDB8YVsobHw9MCk+PjJdKT4+PjMmMXwwfWZ1''@;'; put 'put ''bmN0aW9uIEpQKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO2U6ZG97aWYoMiZhW2w+PjJdKXtzd2l0Y2goMHxMMihsLGMsMCkpe2Nhc2UtMTpwPS0xO2JyZWFrIGU7Y2FzZSAwOnA9MCxNPTQ7YnJlYWsgZX1wPTEsTT00fWVsc2UgcD0wLE09''@;'; put 'put ''NH13aGlsZSgwKTtlOmRve2lmKDQ9PSgwfE0pKXttPTB8aWMobCksaz0wfGNyKGwpO3Q6ZG97aWYobSlmb3IoYj1tKzEyfDAsdz0wfG1pWzYzJmFbZj4+Ml1dKGYsMCwxMjgpOzspe2lmKCF3KWJyZWFrIHQ7ZG97aWYoMiZhW2w+PjJdKXtpZigwfChBPTB8YVs0Njk4OF0pJiYoMHxhW3crMTY+''@;'; put 'put ''PjJdKT09KDB8YVtBKzE2Pj4yXSkpYnJlYWs7MCE9KDB8KEE9MHxhWzQ2OTg5XSkpJiYoMHxhW3crMTY+PjJdKT09KDB8YVtBKzE2Pj4yXSl8fChNPTEyKX1lbHNlIE09MTJ9d2hpbGUoMCk7aWYoMTI9PSgwfE0pJiYoTT0wLCgwfGFbKDB8YVtiPj4yXSkrKGFbKG09dysxNnwwKT4+Ml08PDIp''@;'; put 'put ''Pj4yXSkhPSgwfGFbdysxMj4+Ml0pKSl7aWYoQT1wKzF8MCxwKXtpZigtMT09KDB8SDIoayxjLDk3MzQ1KSkpe3A9LTE7YnJlYWsgZX1pZigtMT09KDB8TzUoayxjKSkpe3A9LTE7YnJlYWsgZX19ZWxzZXtpZigtMT09KDB8TzUoayxjKSkpe3A9LTE7YnJlYWsgZX1pZigtMT09KDB8SDIoayxj''@;'; put 'put ''LDk3MzQyKSkpe3A9LTE7YnJlYWsgZX1hWzQ2OTg3XT0xKygwfGFbNDY5ODddKX1pZigtMT09KDB8RjYoayxjLDB8YVt3Kzg+PjJdKSkpe3A9LTE7YnJlYWsgZX1pZigtMT09KDB8SDIoayxjLDk3MzQ4KSkpe3A9LTE7YnJlYWsgZX1pZigtMT09KDB8RjYoayxjLDB8YVsoMHxhW2I+PjJdKSso''@;'; put 'put ''YVttPj4yXTw8Mik+PjJdKSkpe3A9LTE7YnJlYWsgZX1wPUF9dz0wfG1pWzYzJmFbZj4+Ml1dKGYsdyw4KX19d2hpbGUoMCk7aWYoKDB8cCk+MCl7aWYoLTE9PSgwfEgyKGssYyw5NzM0MCkpKXtwPS0xO2JyZWFrfWFbNDY5ODddPSgwfGFbNDY5ODddKS0xfWFbbD4+Ml09OHxhW2w+PjJdLHA9''@;'; put 'put ''MH19d2hpbGUoMCk7cmV0dXJuIDB8cH1mdW5jdGlvbiBMMihsLGMsZil7dmFyIHA7cmV0dXJuIGN8PTAsZnw9MCxwPTB8dGkobHw9MCksbD0wfGNyKGwpLDB8KGw9MCE9KDB8cCkmJjAhPSgwfGZlW3A+PjBdKT8tMSE9KDB8SDIobCxjLDk3MzMzKSkmJi0xIT0oMHxGNihsLGMscCkpPzAhPSgw''@;'; put 'put ''fGYpJiYtMT09KDB8SDIobCxjLDk3MzQwKSk/LTE6MTotMTowKX1mdW5jdGlvbiBGNihsLGMsZil7cmV0dXJuIDB8WFAobHw9MCxjfD0wLGZ8PTAsMSl9ZnVuY3Rpb24gWFAobCxjLGYscCl7cmV0dXJuIGZ8PTAsMHxIMihsfD0wLGN8PTAsZj0ocHw9MCk/MHxSQShmKTowfEVHKGYsMHxKbmUo''@;'; put 'put ''ZikpKX1mdW5jdGlvbiBZZChsLGMsZil7Y3w9MCxmfD0wO3ZhciBwLG09MDtyZXR1cm4ocD0wfFZoKGx8PTAsMCkpPy0xIT0oMHxLUChsLGMsMTExNDk0LDB8YVtwKzE2Pj4yXSxmKSkmJi0xIT0oMHxLUChsLGMsMTExNDgxLDB8YVtwKzg+PjJdLGYpKSYmLTEhPSgwfEtQKGwsYywxMTE0NTAs''@;'; put 'put ''MHxhW3ArMTI+PjJdLGYpKT9tPTU6bD0tMTptPTUsNT09KDB8bSkmJihsPTApLDB8bH1mdW5jdGlvbiBLUChsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIGssRCxNLEE9MCx3PTAsYj0wLFI9MCxHPTA7Zm9yKGs9MD09KDB8KE09KEQ9MCE9KDB8KG18PTApKSk/MDowfGVoKHAs''@;'; put 'put ''MCkpKSxiPTB8bWlbNjMmYVtwPj4yXV0ocCwwLDEyOCksbT0wOzspe2lmKCFiKXtSPTIzO2JyZWFrfVI9MCE9KDB8KFI9MHxhWyh3PWIrMTJ8MCk+PjJdKSkmJjAhPSgwfGZlW1I+PjBdKT8xMjo3O2Rve2lmKDc9PSgwfFIpKWlmKFI9MCwwfGZlW2IrMjI+PjBdKVI9MTI7ZWxzZSBpZighayl7''@;'; put 'put ''aWYoQT0wfG1pWzYzJmFbTT4+Ml1dKE0sYiw0KSwwfChHPTB8YVtBKzEyPj4yXSkmJjB8ZmVbRz4+MF0pe1I9MTI7YnJlYWt9MHxmZVtBKzIyPj4wXXx8KFI9MTIpfX13aGlsZSgwKTtpZigxMj09KDB8Uikpe2lmKFI9MCxBPW0rMXwwLG0pe2lmKC0xPT0oMHxIMihsLGMsOTczNDUpKSl7bT0t''@;'; put 'put ''MTticmVha31pZigtMT09KDB8TzUobCxjKSkpe209LTE7YnJlYWt9fWVsc2V7aWYoLTE9PSgwfE81KGwsYykpKXttPS0xO2JyZWFrfWlmKC0xPT0oMHxIMihsLGMsZikpKXttPS0xO2JyZWFrfWlmKC0xPT0oMHxIMihsLGMsOTczNDIpKSl7bT0tMTticmVha31hWzQ2OTg3XT0xKygwfGFbNDY5''@;'; put 'put ''ODddKX1pZigtMT09KDB8RjYobCxjLDB8YVtiKzg+PjJdKSkpe209LTE7YnJlYWt9aWYoLTE9PSgwfEgyKGwsYyw5NzM0OCkpKXttPS0xO2JyZWFrfWlmKC0xPT0oMHxGNihsLGMsMHxhW3c+PjJdKSkpe209LTE7YnJlYWt9bT1BfWI9MHxtaVs2MyZhW3A+PjJdXShwLGIsOCl9ZG97aWYoMjM9''@;'; put 'put ''PSgwfFIpKXtpZigoMHxtKT4wKXtpZihhWzQ2OTg3XT0oMHxhWzQ2OTg3XSktMSwxIT0oMHxtKSl7aWYoLTE9PSgwfEgyKGwsYywxNTM1OTkpKSl7bT0tMTticmVha31pZigtMT09KDB8TzUobCxjKSkpe209LTE7YnJlYWt9fWlmKER8KG09LTE9PSgwfEgyKGwsYyw5NzM3NykpKSl7bT1tPDwz''@;'; put 'put ''MT4+MzE7YnJlYWt9fWVsc2UgaWYoRCl7bT0wO2JyZWFrfWVoKHAsTSksbT0wfX13aGlsZSgwKTtyZXR1cm4gMHxtfWZ1bmN0aW9uIGJDKGwsYyxmLHAsbSl7bHw9MCxmfD0wLHB8PTAsbXw9MDt2YXIgQT0wO3N3aXRjaCgzJmFbKGN8PTApPj4yXSl7Y2FzZSAwOkE9ODI7YnJlYWs7Y2FzZSAx''@;'; put 'put ''OkE9ODM7YnJlYWs7Y2FzZSAzOmNhc2UgMjpBPTg0fXJldHVybihjPTB8QmlbMTI3JkFdKGwsYykpPyhDVChsLGMsZixwLEEsbSksYz0wKTpjPS0xLDB8Y31mdW5jdGlvbiBDVChsLGMsZixwLG0sQSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBiLHc9MCxrPTA7Zm9yKChiPTAhPSgw''@;'; put 'put ''fChBfD0wKSkpJiZkbFsxMjcmZl0obCxjLHApLHc9MHx3cyhsKTt3OykwfChrPTB8QmlbMTI3Jm1dKHcsYykpJiZDVCh3LGssZixwLG0sQSksdz0wfEVzKHcpO2J8fGRsWzEyNyZmXShsLGMscCl9ZnVuY3Rpb24gbHJlKCl7dmFyIGw9MCxjPTA7Zm9yKGw9MHxhWzQ2OTk0XTtsOyl6aChsKzh8''@;'; put 'put ''MCksemgoMjQrKDB8YVs0Njk5NF0pfDApLHpoKDE2KygwfGFbNDY5OTRdKXwwKSxjPTB8QkcoMHxhWzQ2OTk0XSksYVs0Njk5NF09YyxsPWN9ZnVuY3Rpb24gREcoKXsoZnVuY3Rpb24geW8oKXshZnVuY3Rpb24gJGEobCl7bHw9MDt2YXIgdyxjPTAsZj0wLHA9MCxtPTAsQT0wLGI9MCxrPTAs''@;'; put 'put ''TT0wLEQ9MDtpZihmZVsoYj0wfGFbNDY5NzNdKT4+MF09MHxmZVsxOTQ4MDVdLGI+Pj4wPCgyKyhjPTB8YVs0KyhmPTB8YVsodz0wfGFbNDY5NzJdKT4+Ml0pPj4yXSl8MCk+Pj4wKXtmb3IocD1jKygyKygwfGFbNDY5NzddKSl8MCxtPWMrKDIrKDB8YVtmKzEyPj4yXSkpfDAsaz1jLEE9Zjsh''@;'; put 'put ''KHA+Pj4wPD1rPj4+MCk7KWZlWyhrPW0rLTF8MCk+PjBdPTB8ZmVbKGY9cCstMXwwKT4+MF0scD1mLG09ayxrPTB8YVs0KyhBPTB8YVt3Pj4yXSk+PjJdO2M9YisoZj1tLXB8MCl8MCxhWzQ2OTc3XT1iPTB8YVtBKzEyPj4yXSxhW0ErMTY+PjJdPWIsYz4+PjA8KGsrMnwwKT4+PjA/V3IoOTcy''@;'; put 'put ''NzcpOihNPWwrZnwwLEQ9Yyl9ZWxzZSBNPWwsRD1iO2ZlWyhsPUQrLTF8MCk+PjBdPTY0LGFbNDY5NjRdPU0sZmVbMTk0ODA1XT0wfGZlW2w+PjBdLGFbNDY5NzNdPWx9KDB8YVs0Njk2NF0pfSkoKSxmdW5jdGlvbiBjcyhsKXt2YXIgbSxjPTAsZj0wLHA9MCxBPTAsdz0wO2ZvcihhWzQ2OTQy''@;'; put 'put ''XT1sfD0wLG09MHxhW2wrNjQ+PjJdLHA9MDszIT0oMHxwKTspe2M9MHxhWyhBPW0rNTYrKHA8PDIpfDApPj4yXTtlOmRve2lmKDB8Yylmb3IoYz0wfG1pWzYzJmFbYz4+Ml1dKGMsMCwxMjgpOzspe2lmKCFjKWJyZWFrIGU7Zj0wfG1pWzYzJmFbKGY9MHxhW0E+PjJdKT4+Ml1dKGYsYyw4KSwz''@;'; put 'put ''Nz09KDB8ZmVbYVtjKzI0Pj4yXT4+MF0pPyh5VChsLHAsMHxhWyh3PWMrMTZ8MCk+PjJdLDB8YVt3KzQ+PjJdKSxjPWYpOmM9Zn19d2hpbGUoMCk7cD1wKzF8MH19KDB8YVs0Njk5M10pfWZ1bmN0aW9uIExHKGwsYyxmKXtsfD0wO3ZhciBtLEEscD0wO0E9bGUsbGU9bGUrMTZ8MCxtPUEsKHA9''@;'; put 'put ''MHxhWzQ2OTkzXSl8fChmZVsxODc5ODBdPTEmKGN8PTApfCgyNTUmKGZ8PTApKTw8MSYyfC0xMiZmZVsxODc5ODBdfDgscD0wfGFbNDY5OTZdLGZlW20+PjBdPTB8ZmVbMTg3OTgwXSxmZVttKzE+PjBdPTB8ZmVbMTg3OTgxXSxmZVttKzI+PjBdPTB8ZmVbMTg3OTgyXSxmZVttKzM+PjBdPTB8''@;'; put 'put ''ZmVbMTg3OTgzXSxwPTB8b2MobCxtLHApLGFbNDY5OTNdPXApLGFbNDY5NDJdPXAsYVs0Njk5NF09MHxQRygwfGFbNDY5OTRdLHApLGUwKDAsbCksbGU9QX1mdW5jdGlvbiBPRygpe3ZhciBwLGw9MCxjPTAsZj0wLG09MCxBPTA7Zm9yKE1UKDIpLHA9MHxmZVs5ODEyNl0sQT0wLGw9MjQrKGY9''@;'; put 'put ''MHxhWzQ2OTk0XSl8MDtjPTB8YVtsPj4yXTspQT1sPTI2Nz09KDB8YVtjPj4yXSkmJigwfGZlWyhtPTB8YVtjKzQ+PjJdKT4+MF0pPT1wPDwyND4+MjQmJjA9PSgwfFppKG0sOTgxMjYpKT8wfGFbYys4Pj4yXTpBLGw9YysxMnwwO2w9ZisxNnwwO2U6Zm9yKDtmPTB8YVtsPj4yXSxsPWYrMTJ8''@;'; put 'put ''MCwwfGFbbD4+Ml07KWlmKGM9Zis0fDAsMjYyPT0oMHxhW2Y+PjJdKSlmb3IoZj0wfGFbYz4+Ml0sYz0wfER0KGYpOzspe2lmKCFjKWNvbnRpbnVlIGU7eFQobT0wfFluKDB8YVthWzQ2OTk0XT4+Ml0sYywwKSwwLDB8YVtsPj4yXSxBKSxjPTB8enQoZixjKX1lbHNlIGZvcig7Oyl7aWYoIShj''@;'; put 'put ''PTB8YVtjPj4yXSkpY29udGludWUgZTt4VCgwfGFbYys0Pj4yXSwwfGFbYys4Pj4yXSwwfGFbbD4+Ml0sQSksYz1jKzEyfDB9emgoOCsoMHxhWzQ2OTk0XSl8MCksemgoMTYrKDB8YVs0Njk5NF0pfDApLHpoKDI0KygwfGFbNDY5OTRdKXwwKSxhWzQrKDB8YVs0Njk5NF0pPj4yXT0wfWZ1bmN0''@;'; put 'put ''aW9uIEhtZSgpe3ZhciBsPTA7Zm9yKE1UKDEpLGw9OCsoMHxhWzQ2OTk0XSl8MDtsPTB8YVtsPj4yXTspbkYoMHxhW2wrND4+Ml0pLGw9bCsxMnwwO3poKDgrKDB8YVs0Njk5NF0pfDApLHpoKDI0KygwfGFbNDY5OTRdKXwwKSx6aCgxNisoMHxhWzQ2OTk0XSl8MCksYVs0KygwfGFbNDY5OTRd''@;'; put 'put ''KT4+Ml09MH1mdW5jdGlvbiBaMygpe3ZhciBsPTAsYz0wOyhjPTB8YVs4KyhsPTB8YVs0Njk5NF0pPj4yXSk/KGM9MHxmdW5jdGlvbiBDQyhsKXtyZXR1cm4gMHxfQygyNjUsbHw9MCwwKX0oYyksYVsxMisobD0wfGFbNDY5OTRdKT4+Ml09MCxhW2wrOD4+Ml09MCk6KChjPTB8YVtsKzQ+PjJd''@;'; put 'put ''KT8oYz0wfGZ1bmN0aW9uIHE0KGwpe3JldHVybiAwfF9DKDI2MixsfD0wLDApfShjKSxsPTB8YVs0Njk5NF0pOmM9MCxhW2wrND4+Ml09MCksMHxjJiZTVChsKzE2fDAsYyl9ZnVuY3Rpb24gJFAobCxjLGYpe2x8PTAsY3w9MCwoZnw9MCkmJihjPTB8ZnVuY3Rpb24gdEYobCxjKXtjfD0wO3Zh''@;'; put 'put ''ciBwLG0sQSx3LGY9MDtyZXR1cm4gdz1sZSxsZT1sZSsxMDQwfDAsbT13LEE9dys4fDAscD0oZj0yKyhmPTB8VW8obHw9MCkpKygwfFVvKGMpKXwwKT4+PjA8MTAyNT9BOjB8RjAoZiksYVttPj4yXT1sLGFbbSs0Pj4yXT1jLG9vKHAsOTgxNjMsbSksZj0wfHIwKDB8YVs0Njk5M10scCksZTAo''@;'; put 'put ''MHxhWzQ2OTkzXSxsKSxlMCgwfGFbNDY5OTNdLGMpLCgwfHApIT0oMHxBKSYmRnQocCksbGU9dywwfGZ9KGMsZikpLGY9MHxmdW5jdGlvbiB1cmUobCxjKXtyZXR1cm4gMHxfQygyNTksbHw9MCxjfD0wKX0oMHxHcigwfGFbYVs0Njk5NF0+PjJdLGwsMSksYyksU1QoOCsoMHxhWzQ2OTk0XSl8''@;'; put 'put ''MCxmKSxlMCgwfGFbNDY5OTNdLGwpfWZ1bmN0aW9uIGtUKGwsYyl7bHw9MDt2YXIgbSxmPTAscD0wO2ZvcigwfChjfD0wKSYmRkcoKSxjPTI0KygwfGFbNDY5OTRdKXwwO2M9MHxhW2M+PjJdOykwfGFbYys4Pj4yXXx8RkcoKSxjPWMrMTJ8MDtmb3IoTVQobT0yNjA9PSgwfGwpPzI6MjU5PT0o''@;'; put 'put ''MHxsKSYxKSxjPTI0KyhsPTB8YVs0Njk5NF0pfDA7cD0wfGFbYz4+Ml07KXtkb3tpZigyNjchPSgwfGFbcD4+Ml0pKXtpZighKDAhPSgwfGZlWzIxKyhjPTB8YVtwKzQ+PjJdKT4+MF0pJigwfChmPTB8YVtsPj4yXSkpPT0oMHxhWzQ2OTkzXSkpJiYoYz0wfHNpKGYsbSwwfGFbYys4Pj4yXSww''@;'; put 'put ''fGFbcCs4Pj4yXSksKDB8YVsobD0wfGFbNDY5OTRdKT4+Ml0pIT0oMHxhWzQ2OTkzXSkpKWJyZWFrO2ZlW2MrMjI+PjBdPTF9fXdoaWxlKDApO2M9cCsxMnwwfXpoKGwrMjR8MCl9ZnVuY3Rpb24gUkcobCxjKXtjPTB8ZnVuY3Rpb24gZUYobCxjKXtyZXR1cm4gMHxfQygyNjcsbHw9MCxjfD0w''@;'; put 'put ''KX0obHw9MCxjfD0wKSxTVCgyNCsoMHxhWzQ2OTk0XSl8MCxjKX1mdW5jdGlvbiBfbChsKXt2YXIgYzthWzQ2OTk0XT0wfFBHKGM9MHxhWzQ2OTk0XSwwfHBzKDB8YVtjPj4yXSxsfD0wLDEpKSxlMCgwfGFbNDY5OTNdLGwpfWZ1bmN0aW9uIHNyZSgpe3ZhciBjLGw9MDtjPTB8YVsobD0wfGFb''@;'; put 'put ''NDY5OTRdKT4+Ml0sbD0wfEJHKGwpLGFbNDY5OTRdPWwsYVtsKzQ+PjJdPWN9ZnVuY3Rpb24gcVAobCxjKXtjfD0wO3ZhciBwLG0sQSxmPTA7cmV0dXJuIEE9bGUsbGU9bGUrMTAyNHwwLG09QSxyZChmPShmPTErKGY9MHxVbyhsfD0wKSkrKDB8VW8oYykpfDApPj4+MDwxMDI1P206MHxGMChm''@;'; put 'put ''KSxsKSxzdihmLGMpLHA9MHxyMCgwfGFbNDY5OTNdLGYpLGUwKDB8YVs0Njk5M10sbCksZTAoMHxhWzQ2OTkzXSxjKSwoMHxmKSE9KDB8bSkmJkZ0KGYpLGxlPUEsMHxwfWZ1bmN0aW9uIEJHKGwpe3ZhciBjO3JldHVybiBjPTB8YVszMisoMHxhWzQ2OTk0XSk+PjJdLHh0KDB8YVs0Njk5M10s''@;'; put 'put ''bHw9MCksMHxjfWZ1bmN0aW9uIFBHKGwsYyl7dmFyIGY7cmV0dXJuIGx8PTAsY3w9MCxmPTB8TXQoMHxhWzQ2OTkzXSwzNiksYVtmKzMyPj4yXT1sLGFbZj4+Ml09YywwfGZ9ZnVuY3Rpb24gU1QobCxjKXt2YXIgZixwO2N8PTAsMHwocD0wfGFbKGY9NCsobHw9MCl8MCk+PjJdKSYmKGFbcCsx''@;'; put 'put ''Mj4+Ml09YyksYVtmPj4yXT1jLDB8YVtsPj4yXXx8KGFbbD4+Ml09Yyl9ZnVuY3Rpb24gX0MobCxjLGYpe3ZhciBwO3JldHVybiBsfD0wLGN8PTAsZnw9MCxwPTB8TXQoMHxhWzQ2OTkzXSwxNiksYVtwPj4yXT1sLGFbcCs0Pj4yXT1jLGFbcCs4Pj4yXT1mLDB8cH1mdW5jdGlvbiBGRygpe3Zh''@;'; put 'put ''ciBsO2w9bGUsbGU9bGUrMTZ8MCwkcigwLDk4MTMwLGwpLGxlPWx9ZnVuY3Rpb24gTVQobCl7dmFyIG0sYz0wLGY9MCxwPTAsQT0wO2ZvcihtPTI9PSgwfChsfD0wKSksYz0yNCsoMHxhWzQ2OTk0XSl8MDtjPTB8YVtjPj4yXTspcD0wfGFbKGY9Yys0fDApPj4yXSxtJiYoMHxmZVtwPj4wXSk9''@;'; put 'put ''PSgwfGZlWzk4MTI2XSkmJiEoMHxaaShwLDk4MTI2KSl8fChBPTB8c2koMHxhW2FbNDY5OTRdPj4yXSxsLHAsMCksYVtmPj4yXT1BLEF8fChhW2Y+PjJdPTB8c2koMHxhW2FbNDY5OTRdPj4yXSxsLHAsMTk1MDU5KSksYVtjPj4yXT0yNjYsZTAoMHxhWzQ2OTkzXSxwKSksYz1jKzEyfDB9ZnVu''@;'; put 'put ''Y3Rpb24gemgobCl7RVQoMHxhWyhsfD0wKT4+Ml0pLGFbbCs0Pj4yXT0wLGFbbD4+Ml09MH1mdW5jdGlvbiBFVChsKXtsfD0wO2Zvcih2YXIgYz0wO2w7KXtzd2l0Y2goYz0wfGFbbCsxMj4+Ml0sMHxhW2w+PjJdKXtjYXNlIDI2NTpFVCgwfGFbbCs0Pj4yXSk7YnJlYWs7Y2FzZSAyNjY6Y2Fz''@;'; put 'put ''ZSAyNjc6ZTAoMHxhWzQ2OTkzXSwwfGFbbCs4Pj4yXSl9eHQoMHxhWzQ2OTkzXSxsKSxsPWN9fWZ1bmN0aW9uIG5GKGwpe2x8PTA7dmFyIGM9MCxmPTA7Zm9yKGM9MjQrKDB8YVs0Njk5NF0pfDA7Yz0wfGFbYz4+Ml07KTI2Nj09KDB8YVtjPj4yXSkmJjB8KGY9MHxhW2MrND4+Ml0pJiZWbChs''@;'; put 'put ''LGYsMHxhW2MrOD4+Ml0pLGM9YysxMnwwfWZ1bmN0aW9uIHhUKGwsYyxmLHApe2x8PTAsY3w9MCxwfD0wO3ZhciBtPTA7bT00KyhmfD0wKXwwO2U6ZG97aWYoMjYyPT0oMHxhW2Y+PjJdKSlmb3IoZj0wfGFbbT4+Ml0sbT0wfER0KGYpOzspe2lmKCFtKWJyZWFrIGU7ZXAobCxjLDB8WW4oMHxh''@;'; put 'put ''W2FbNDY5OTRdPj4yXSxtLDApLDAscCksbT0wfHp0KGYsbSl9ZWxzZSBmb3IoOzspe2lmKCEobT0wfGFbbT4+Ml0pKWJyZWFrIGU7ZXAobCxjLGY9MHxZbigwfGFbYVs0Njk5NF0+PjJdLDB8YVttKzQ+PjJdLDApLDB8YVttKzg+PjJdLHApLG09bSsxMnwwfX13aGlsZSgwKX1mdW5jdGlvbiBl''@;'; put 'put ''cChsLGMsZixwLG0pe2N8PTAscHw9MDt2YXIgQT0wOzB8KGY9MHxLYSgwfGFbYVs0Njk5NF0+PjJdLGx8PTAsZnw9MCxtfD0wLDEpKSYmKEhHKGYsMTExNDU1LChsPSgwfChtPTB8YVsoMj09KDB8KEE9MyZhW2Y+PjJdKSk/ZjpmKy00OHwwKSs0MD4+Ml0pKT09KDB8bCk/KDB8YVsoMz09KDB8''@;'; put 'put ''QSk/ZjpmKzQ4fDApKzQwPj4yXSkhPSgwfG0pOjApP3A6YyksSEcoZiwxMTE0NjQsbD9jOnApLG5GKGYpKX1mdW5jdGlvbiBIRyhsLGMsZil7bHw9MCxjfD0wO3ZhciBwPTA7MHwoZnw9MCkmJigocD0wfHNpKDB8YVthWzQ2OTk0XT4+Ml0sMixjLDApKXx8KHA9MHxzaSgwfGFbYVs0Njk5NF0+''@;'; put 'put ''PjJdLDIsYywxOTUwNTkpKSxWbChsLHAsZikpfWZ1bmN0aW9uIHJGKGwsYyl7cmV0dXJuIDB8ZnVuY3Rpb24gTm1lKGwsYyxmKXtyZXR1cm4gbHw9MCxmfD0wLGFbNDY5NjJdPWN8PTAsYVs0Njk5M109bCxhWzQ2OTQyXT0wLGFbNDY5OTZdPWw9MHxmP2Y6MTg2MDAsZnVuY3Rpb24gcDAobCxj''@;'; put 'put ''KXtjfD0wLGFbNDY5NjddPWx8PTAsYVs0Njk2OF09YyxhWzQ2OTY5XT0wfShsLGMpLGZ1bmN0aW9uIGFyZSgpe3ZhciBHLHBlLGw9MCxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLHE9MDtwZT1sZSxsZT1sZSsxMjAwfDAsRz1wZSs4MDB8MCxmPXBlLGFbNDY5''@;'; put 'put ''OTBdPTAsYVs0Njk5MV09LTIsYz1HLG09MjAwLGs9ZixEPTAsUj0wLE09RztlOmZvcig7Oyl7aWYoaXRbTT4+MV09RCwoYysobTw8MSkrLTJ8MCk+Pj4wPk0+Pj4wKXc9bTtlbHNle2lmKGw9MSsoYj1NLWM+PjEpfDAsbT4+PjA+OTk5OSl7cT03NTticmVha31zd2l0Y2goKHA9MHxGMCg2Kih3''@;'; put 'put ''PSh3PW08PDEpPj4+MDwxZTQ/dzoxZTQpfDMpKT8oZ28oMHxwLDB8YyxsPDwxfDApLGdvKDB8KG09cCsodz4+PjE8PDIpfDApLDB8ayxsPDwyfDApLCgwfGMpPT0oMHxHKT8obD0wLGM9cCk6KEZ0KGMpLGw9MCxjPXApKToobD00LG09aykscD1jKyhiPDwxKXwwLDE1JigoQT0wPT0oMHxsKSk/''@;'; put 'put ''KGMrKHc8PDEpKy0yfDApPj4+MD5wPj4+MD8wOjk6bCkpe2Nhc2UgOTpsPTEscT03NjticmVhayBlO2Nhc2UgNDpxPTc1O2JyZWFrIGU7Y2FzZSAwOmY9QT9tKyhiPDwyKXwwOmYsaz1tLE09QT9wOk07YnJlYWs7ZGVmYXVsdDpsPTA7YnJlYWsgZX19aWYoNj09KDB8RCkpe2w9MCxxPTc2O2Jy''@;'; put 'put ''ZWFrfUE9KGw9MHxmZVs5NzM4MStEPj4wXSk8PDI0Pj4yNDtkb3tpZihsPDwyND4+MjQhPS0xOCl7aWYoLTI9PSgwfChwPTB8YVs0Njk5MV0pKSYmKHA9MHxRbCgpLGFbNDY5OTFdPXApLCgwfHApPj0xP209cD4+PjA8MjY5PzB8WHRbOTc0NjErcD4+MF06MjooYVs0Njk5MV09MCxtPTApLChw''@;'; put 'put ''PW0rQXwwKT4+PjA8PTU5JiYoMHxtKT09KDB8WHRbOTc3MzArcD4+MF0pKXtpZihsPShEPTB8ZmVbOTc3OTArcD4+MF0pPDwyND4+MjQsRDw8MjQ+PjI0PDEpe3A9MC1sfDAscT0yMzticmVha31hWzQ2OTkxXT0tMixhWyhmPWYrNHwwKT4+Ml09YVs0Njk5Ml0sQT0wPT0oMHxSKT8wOlIrLTF8''@;'; put 'put ''MCxwPU07YnJlYWt9cT0yMn1lbHNlIHE9MjJ9d2hpbGUoMCk7aWYoMjI9PSgwfHEpKWlmKHE9MCxwPTI1NSYoRD0wfGZlWzk3ODUwK0Q+PjBdKSxEPDwyND4+MjQpcT0yMztlbHNle3A9MHxhWzQ2OTkxXTt0OmRve3N3aXRjaCgwfFIpe2Nhc2UgMDphWzQ2OTkwXT0xKygwfGFbNDY5OTBdKSxZ''@;'; put 'put ''bygxNDM3NjEpLHA9TTticmVhaztjYXNlIDM6aWYoKDB8cCk8MSl7aWYocCl7cD1NO2JyZWFrIHR9bD0xLHE9NzY7YnJlYWsgZX1hWzQ2OTkxXT0tMixwPU07YnJlYWsgdDtkZWZhdWx0OnA9TX19d2hpbGUoMCk7Zm9yKDtsPDwyND4+MjQhPTE4Oyl7aWYoKDB8cCk9PSgwfGMpKXtsPTEscT03''@;'; put 'put ''NjticmVhayBlfWY9ZistNHwwLHA9bD1wKy0yfDAsbD0wfGZlWzk3MzgxKygwfGl0W2w+PjFdKT4+MF19YVsoZj1mKzR8MCk+PjJdPWFbNDY5OTJdLGw9MSxBPTN9ZG97aWYoMjM9PSgwfHEpKXtxPTAsbD0wfGFbZisoMS0obT0wfFh0Wzk3OTMwK3A+PjBdKTw8Mik+PjJdO3Q6ZG97c3dpdGNo''@;'; put 'put ''KDB8cCl7Y2FzZSAyOmxyZSgpLERHKCk7YnJlYWs7Y2FzZSAzOjB8YVs0Njk5M10mJihscmUoKSxERygpLEMxKDB8YVs0Njk5M10pLGFbNDY5NDJdPTAsYVs0Njk5M109MCk7YnJlYWs7Y2FzZSA2OkxHKDB8YVtmPj4yXSwwfGFbZistND4+Ml0sMHxhW2YrLTg+PjJdKTticmVhaztjYXNlIDc6''@;'; put 'put ''Y2FzZSA1MzpjYXNlIDU5OmNhc2UgNjA6Y2FzZSA2MTpsPTB8YVtmPj4yXTticmVhaztjYXNlIDg6Y2FzZSAxMDpjYXNlIDExOmNhc2UgMjc6Y2FzZSAzOTpjYXNlIDU0OmNhc2UgNTU6bD0wO2JyZWFrO2Nhc2UgOTpjYXNlIDEyOmNhc2UgMjY6bD0xO2JyZWFrO2Nhc2UgMjE6aWYoMHxhW2Yr''@;'; put 'put ''LTQ+PjJdKXtPRygpO2JyZWFrIHR9SG1lKCk7YnJlYWsgdDtjYXNlIDI0OmNhc2UgMjU6WjMoKTticmVhaztjYXNlIDMwOiRQKDB8YVtmPj4yXSwwLDApO2JyZWFrO2Nhc2UgMzE6JFAoMHxhW2YrLTg+PjJdLDB8YVtmPj4yXSwwKTticmVhaztjYXNlIDMyOiRQKDB8YVtmKy0xNj4+Ml0sMHxh''@;'; put 'put ''W2YrLTg+PjJdLDB8YVtmPj4yXSk7YnJlYWs7Y2FzZSAzMzprVCgwfGFbZistOD4+Ml0sMHxhW2YrLTQ+PjJdKTticmVhaztjYXNlIDM0OmtUKDI1OCwwKTticmVhaztjYXNlIDM1Omw9MjU4O2JyZWFrO2Nhc2UgMzY6bD0yNTk7YnJlYWs7Y2FzZSAzNzpsPTI2MDticmVhaztjYXNlIDM4Omw9''@;'; put 'put ''MHxhW2YrLTQ+PjJdO2JyZWFrO2Nhc2UgNDg6UkcoMHxhW2YrLTg+PjJdLDB8YVtmPj4yXSk7YnJlYWs7Y2FzZSA0OTpSRygwfGFbZj4+Ml0sMCk7YnJlYWs7Y2FzZSA1MTpfbCgwfGFbZj4+Ml0pO2JyZWFrO2Nhc2UgNTI6c3JlKCk7YnJlYWs7Y2FzZSA2MjpsPTB8cVAoMHxhW2YrLTg+PjJd''@;'; put 'put ''LDB8YVtmPj4yXSl9fXdoaWxlKDApO2lmKEQ9ZisoKG09MC1tfDApPDwyKXwwLG09TSsobTw8MSl8MCxmPUQrNHwwLGFbRCs0Pj4yXT1sLChwPShEPTB8aXRbbT4+MV0pKygwfGZlWzk4MDU2KyhsPSgwfFh0Wzk3OTkzK3A+PjBdKS0yNHwwKT4+MF0pfDApPj4+MDw2MCYmKDB8WHRbOTc3MzAr''@;'; put 'put ''cD4+MF0pPT0oMHxEKSl7bD0wfGZlWzk3NzkwK3A+PjBdLEE9UixwPW07YnJlYWt9bD0wfGZlWzk4MDkxK2w+PjBdLEE9UixwPW19fXdoaWxlKDApO209dyxEPWwsUj1BLE09cCsyfDB9NzU9PSgwfHEpJiYoWW8oMTQwNTU4KSxsPTIscT03NiksNzY9PSgwfHEpJiYoMHxjKSE9KDB8RykmJkZ0''@;'; put 'put ''KGMpLGxlPXBlfSgpLChsPTB8YVs0Njk0Ml0pfHwoZnVuY3Rpb24ganMoKXt2YXIgbD0wO3ppKGw9KGw9MHxhWzQ2OTcyXSk/MHxhW2w+PjJdOjApfSgpLGw9MHxhWzQ2OTQyXSksMHxsfSgwLGx8PTAsY3w9MCl9ZnVuY3Rpb24gY3JlKGwpe3ZhciBBLGM9MCxmPTAscD0wLG09MCx3PTA7Zm9y''@;'; put 'put ''KEE9bGUsbGU9bGUrMTEyfDAsZj1BLG09QSs0fDAsKGM9MHxhWzI0KyhsfD0wKT4+Ml0pPyhhW2Y+PjJdPWMrMSxvbyhtLDk4MjI1LGYpKTpmZVttPj4wXT0wLGM9MTErKHc9MSsoYz0wfFVvKGY9MHwoZj0wfGFbbCsyMD4+Ml0pP2Y6OTgyMjkpKSsodz0wfFVvKG0pKSsoMHxVbygwfGFbKHA9''@;'; put 'put ''bCs1MnwwKT4+Ml0pKXwwKXwwLCgwfGFbNDY5OTddKT4+PjA8KHcrMXwwKT4+PjA/KGFbNDY5OTddPWMsYz0wfFVhKDB8YVs0Njk5OF0sYyksYVs0Njk5OF09Yyk6Yz0wfGFbNDY5OThdLHJkKGMsZiksc3YoMHxhWzQ2OTk4XSxtKSxjPShjPTB8YVs0Njk5OF0pKygwfFVvKGMpKXwwLGZlW2M+''@;'; put 'put ''PjBdPTQ2LGZlW2MrMT4+MF09MCxjPTB8cmEoMHxhW3A+PjJdKSxwPTB8YVs0Njk5OF07Zj0wfE0kKGMsNTgpOylzdihwLGYrMXwwKSxtPSh3PTB8YVs0Njk5OF0pKygwfFVvKHcpKXwwLGZlW20+PjBdPTQ2LGZlW20rMT4+MF09MCxmZVtmPj4wXT0wLHA9dztzdihwLGMpLEZ0KGMpLGFbbCsz''@;'; put 'put ''Mj4+Ml09YVs0Njk5OF0sbGU9QX1mdW5jdGlvbiBSNShsLGMsZil7bHw9MDt2YXIgQSx3LHA9MCxtPTA7cmV0dXJuIHc9bGUsbGU9bGUrMTZ8MCxBPXcrOHwwLG09dywwIT0oMHwoY3w9MCkpJjAhPSgwfChmfD0wKSk/KDEwMjQmYVtsKzE1Mj4+Ml18MCYmKEdzWzYzJmFbMTYrKDB8YVtsKzEy''@;'; put 'put ''Pj4yXSk+PjJdXSg5ODIwNyxtKSxYdSgxKSksKDB8ZnVuY3Rpb24gVkcobCxjLGYpe2N8PTAsZnw9MDt2YXIgUixwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wO1I9bGUsbGU9bGUrMTZ8MCxEPVIscD0wfGFbMTA0KygwfGFbKGx8PTApPj4yXSk+PjJdO2Rve2lmKHApZj0wfG1pWzYz''@;'; put 'put ''JnBdKGwsYyxmKTtlbHNle2lmKCEoQT0wfGFbKGI9bCs0MHwwKT4+Ml0pKXtmPTB8Q3UoYywxLGYsMHxhW2wrMzY+PjJdKTticmVha31wPWwrNDR8MCxtPTB8YVsodz1sKzQ4fDApPj4yXTtkb3tpZigoKDB8YVtwPj4yXSktMS1tfDApPj4+MDxmPj4+MCl7aWYoYVtwPj4yXT1tPWYrNDA5Nitt''@;'; put 'put ''Ji00MDk2LHA9MHxVYShBLG0pLGFbYj4+Ml09cCxwKXtrPXAsTT0wfGFbdz4+Ml07YnJlYWt9R3NbNjMmYVsxNisoMHxhW2wrMTI+PjJdKT4+Ml1dKDk4MjY0LEQpLFh1KDEpfWVsc2Ugaz1BLE09bX13aGlsZSgwKTtnbyhrK018MCwwfGMsMHxmKSxhW3c+PjJdPUQ9KDB8YVt3Pj4yXSkrZnww''@;'; put 'put ''LGZlWygwfGFbYj4+Ml0pK0Q+PjBdPTB9fXdoaWxlKDApO3JldHVybiBsZT1SLDB8Zn0obCxjLGYpKT09KDB8Zik/cD1mOihtPTB8YVsxNisoMHxhW2wrMTI+PjJdKT4+Ml0sYVtBPj4yXT1mLEdzWzYzJm1dKDk4MjM5LEEpLFh1KDEpKSk6cD0wLGxlPXcsMHxwfWZ1bmN0aW9uIEVuKGwsYyl7''@;'; put 'put ''dmFyIGY7cmV0dXJuIDB8KChjPSgwfFI1KGx8PTAsY3w9MCxmPTB8VW8oYykpKT09KDB8ZikpPzE6LTEpfWZ1bmN0aW9uIGlGKGwsYyl7dmFyIGYscDtyZXR1cm4gbHw9MCxmPWxlLGxlPWxlKzE2fDAsZmVbKHA9Zik+PjBdPWN8PTAsbD0xPT0oMHxSNShsLHAsMSkpLGxlPWYsMHwobD9jOi0x''@;'; put 'put ''KX1mdW5jdGlvbiBvRihsKXt2YXIgYztyZXR1cm4gMHwoMCE9KDB8KGM9MHxhWzM2KyhsfD0wKT4+Ml0pKSYmMD09KDB8ZmVbbCsxNDQ+PjBdKSYmMD09KDB8YVsxMDQrKDB8YVtsPj4yXSk+PjJdKT8wfFNMKGMpOjApfWZ1bmN0aW9uIGZyZShsKXt2YXIgZixwLGM9MDtwPWxlLGxlPWxlKzE2''@;'; put 'put ''fDAsZj0wfGFbNzYrKGx8PTApPj4yXSwxMDI0JmFbbCsxNTI+PjJdfDAmJihHc1s2MyZhWzE2KygwfGFbbCsxMj4+Ml0pPj4yXV0oOTgyOTEscCksWHUoMSkpLDAhPSgwfGYpJiYwIT0oMHwoYz0wfGFbZis4Pj4yXSkpP0NvWzEyNyZjXShsKToob0YobCksZnVuY3Rpb24gYUYobCl7dmFyIGMs''@;'; put 'put ''Zj0wLHA9MDswfGFbKGM9MzIrKGx8PTApfDApPj4yXSYmKDB8KHA9MHxhWyhmPWwrMzZ8MCk+PjJdKSkhPSgwfGFbMTU2NzldKSYmMD09KDB8ZmVbbCsxNDQ+PjBdKSYmKDB8cCYmKHR3KHApLGFbZj4+Ml09MCksYVtjPj4yXT0wKX0obCkpLGxlPXB9ZnVuY3Rpb24gT3IobCxjLGYpe2x8PTAs''@;'; put 'put ''Y3w9MDt2YXIgQSx3LGIscD0wLG09MDtiPWxlLGxlPWxlKzEwNTZ8MCxtPWIsdz1iKzI0fDAsYVsoQT1iKzh8MCk+PjJdPWZ8PTAsKDB8KHA9MHxBTCh3LDEwMjQsYyxBKSkpPj0wPygoMHxwKT4xMDIzPyhwPTB8UW4ocCsxfDApLGFbQT4+Ml09ZixtPXAscD0wfERqKHAsYyxBKSk6bT13LFI1''@;'; put 'put ''KGwsbSxwKSwoMHxtKSE9KDB8dykmJkZ0KG0pKTooYVttPj4yXT0wfCRrKDB8YVs0NzY0M10pLCRyKDEsOTgzMDgsbSkpLGxlPWJ9ZnVuY3Rpb24gWnMobCxjKXt2YXIgZixwO2Y9bGUsbGU9bGUrMTZ8MCxSNShsfD0wLDB8bEYocD1mLGM9K2MpLDB8YVtwPj4yXSksbGU9Zn1mdW5jdGlvbiBs''@;'; put 'put ''RihsLGMpe2x8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTA7aWYoKGM9K2MpPC0xZTE1KXA9OTgzMjIsZj0xOTtlbHNlIGlmKGM+MWUxNSlwPTk4MzIzLGY9MTg7ZWxzZSBpZihwPX5+KCgoYyo9MWU0KTwwPy0uNTouNSkrYykpe2ZvcihrPTQsdz0wLGY9MTk0ODI2LHA9''@;'; put 'put ''KE09KDB8cCk8MCk/MC1wfDA6cDswIT0oMHxwKXwoMHxrKT4wOyliPSgwfHApLzEwfDAsQT1mKy0xfDAsMD09KDB8KG09KDB8cCklMTB8MCkpJnc8PDI0Pj4yND09MD9wPTA6KGZlW0E+PjBdPTQ4fG0scD0xLGY9QSksMT09KDB8aykmJihwPDwyND4+MjQmJihmZVsoZj1mKy0xfDApPj4wXT00''@;'; put 'put ''NikscD0xKSxrPWsrLTF8MCx3PXAscD1iO00mJihmZVsoZj1mKy0xfDApPj4wXT00NSkscD1mLGY9MTk0ODI2LWZ8MH1lbHNlIHA9MTM4Mzk0LGY9MTtyZXR1cm4gYVtsPj4yXT1mLDB8cH1mdW5jdGlvbiBuaChsLGMpe3ZhciBmLHA7Zj1sZSxsZT1sZSsxNnwwLFI1KGx8PTAsMHxsRihwPWYs''@;'; put 'put ''K19bKGN8PTApPj4zXSksMHxhW3A+PjJdKSxSNShsLDEwMjYwNCwxKSxSNShsLGM9MHxsRihwLCtfW2MrOD4+M10pLDB8YVtwPj4yXSksbGU9Zn1mdW5jdGlvbiB6MyhsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIG0sQSxwPTAsdz0wO2ZvcihBPWxlLGxlPWxlKzE2fDAsbT1BLHA9MDthW20+''@;'; put 'put ''PjJdPWFbKHc9YysocDw8NCl8MCk+PjJdLGFbbSs0Pj4yXT1hW3crND4+Ml0sYVttKzg+PjJdPWFbdys4Pj4yXSxhW20rMTI+PjJdPWFbdysxMj4+Ml0sbmgobCxtKSwhKCgwfChwPXArMXwwKSk+PSgwfGYpKTspUjUobCwxMDI2MDQsMSk7bGU9QX1mdW5jdGlvbiBJVChsLGMpe2N8PTA7dmFy''@;'; put 'put ''IGY9MCxwPTA7cmV0dXJuKGY9MHxhWyhwPTE2MCsobHw9MCl8MCk+PjJdKT8ocD0wfGFbNDdlM10pJiYoKGY9MHxhW3ArND4+Ml0pfHwoZj0wfHZyKDYzMiksYVs0KygwfGFbNDdlM10pPj4yXT1mKSk6KGY9MHx2cig2MzIpLGFbcD4+Ml09ZixhW2wrMTY0Pj4yXT1mKSxhWzQ3ZTNdPWYsYVtm''@;'; put 'put ''KzUyPj4yXT1jLGFbZj4+Ml09bCwwIT0oMHxCQShsLDMsYykpfDB9ZnVuY3Rpb24gekcobCl7dmFyIGM7cmV0dXJuIGFbMTY0KyhsfD0wKT4+Ml09Yz0wfGFbbCsxNjA+PjJdLDB8Y31mdW5jdGlvbiBWbWUobCl7dmFyIGMsZixwPTA7cmV0dXJuIDB8KGY9MHxhWzQrKGM9MHxhWyhsPTE2NCso''@;'; put 'put ''bHw9MCl8MCk+PjJdKT4+Ml0pJiYwPT0oMHxhWyhwPWYrNTJ8MCk+PjJdKSYmKGFbcD4+Ml09YVtjKzUyPj4yXSksYVtsPj4yXT1mLDB8Zn1mdW5jdGlvbiBndShsLGMsZil7Znw9MDt2YXIgcCxtPTA7bT0xMCsoY3w9MCl8MCwoMHxhWyhwPTgrKGx8PTApfDApPj4yXSk+KDB8Yyk/bD0wfGFb''@;'; put 'put ''bD4+Ml06KGFbcD4+Ml09bSxtPTB8VjAoMHxhW2w+PjJdLG08PDIpLGFbbD4+Ml09bSxsPW0pLGFbbCsoYzw8Mik+PjJdPWZ9ZnVuY3Rpb24gZHJlKGwpe3ZhciBjOzB8KGM9MHxhWyhsfD0wKT4+Ml0pJiZGdChjKSxhW2w+PjJdPTAsYVtsKzg+PjJdPTAsYVtsKzQ+PjJdPTB9ZnVuY3Rpb24g''@;'; put 'put ''c0YobCl7dmFyIGYsYz0wLHA9MDtmb3IoYz0wfGFbKGY9MTYwKyhsfD0wKXwwKT4+Ml07YzspcD0wfGFbYys0Pj4yXSxkcmUoYys2MDR8MCksZHJlKGMrNTkyfDApLEZ0KDB8YVtjKzU4ND4+Ml0pLEZ0KDB8YVtjKzU4OD4+Ml0pLEZ0KGMpLGM9cDthWzQ3ZTNdPTAsYVs0Njk5OV09MCxhW2wr''@;'; put 'put ''MTkyPj4yXT0wLGFbbCsxNjQ+PjJdPTAsYVtmPj4yXT0wLGFbbCsyOD4+Ml09MH1mdW5jdGlvbiBHRyhsLGMsZixwLG0sQSl7bHw9MCxjfD0wLHB8PTAsbXw9MCxBfD0wO3ZhciB3LGssRCxiPTAsTT0wO2ZvcihEPWxlLGxlPWxlKzEyOHwwLE09RCxldyhrPUQrNjR8MCxmfD0wLDYzKSwwfCh3''@;'; put 'put ''PTB8JHMoayw1OCkpJiYoZmVbdz4+MF09MCksbD1sKzYwKyhjPDwyKXwwOzspe2lmKCEoYz0wfGFbbD4+Ml0pKXtjPWwsbD0wO2JyZWFrfWlmKGV3KE0sMHxhW2MrND4+Ml0sNjMpLDB8KGM9MHwkcyhNLDU4KSkmJihmZVtjPj4wXT0wKSwoMHxaaShrLE0pKTwxKXtiPTk7YnJlYWt9bD0wfGFb''@;'; put 'put ''bD4+Ml19Zm9yKDs5PT0oMHxiKSYmKGM9bCxsPTB8YVtsPj4yXSksISghbHx8KGV3KE0sMHxhW2wrND4+Ml0sNjMpLGw9MHwkcyhNLDU4KSwwfGwmJihmZVtsPj4wXT0wKSwwfFppKGssTSkpfHwobD0wfGFbYz4+Ml0sKDB8YVtsKzg+PjJdKTw9KDB8cCkpKTspYj05O3JldHVybiBNPTB8UW4o''@;'; put 'put ''MjApLGFbTT4+Ml09YVtjPj4yXSxhW2M+PjJdPU0sYVtNKzQ+PjJdPWYsYVtNKzg+PjJdPXAsYVtNKzEyPj4yXT1tLGFbTSsxNj4+Ml09QSxsZT1ELDF9ZnVuY3Rpb24gZDEobCxjKXtyZXR1cm4gY3w9MCxjPWxlLGxlPWxlKzE2fDAsJHIoMSw5ODM5NixjKSxsZT1jLDB9ZnVuY3Rpb24gQkEo''@;'; put 'put ''bCxjLGYpe2x8PTA7dmFyIHcsYixrLEQscGUsZ2UscD0wLG09MCxBPTAsTT0wLFI9MCxHPTAscT0wO2dlPWxlLGxlPWxlKzE0NHwwLHBlPWdlLEc9Z2UrMTZ8MCxEPSgoY3w9MCktM3wwKT4+PjA8Mj8wOmMsZXcoUj1nZSs4MHwwLGZ8PTAsNjMpLChmPTB8JHMoUiw1OCkpPyhwPWYrMXwwLGZl''@;'; put 'put ''W2Y+PjBdPTAsKGY9MHwkcyhwLDU4KSk/KGZlW2Y+PjBdPTAsTT1mKzF8MCk6TT0wKTooTT0wLHA9MCksdz0wIT0oMHxwKSxiPTA9PSgwfE0pLGs9KDB8RCk9PSgwfGMpLEE9bCs2MCsoYzw8Mil8MDtlOmZvcig7Oyl7aWYoIShmPTB8YVtBPj4yXSkpe2Y9MDticmVha31ldyhHLDB8YVtmKzQ+''@;'; put 'put ''PjJdLDYzKSwoZj0wfCRzKEcsNTgpKT8oZmVbZj4+MF09MCxmPWYrMXwwKTpmPTA7ZG97aWYoISgwfFppKEcsUikpKXtpZih3JihtPTAhPSgwfGYpKSYmMHxaaShmLHApfHwhYiYmMHxaaShNLDB8YVs4KygwfGFbMTIrKDB8YVtBPj4yXSk+PjJdKT4+Ml0pKWJyZWFrO2lmKGt8MV5tKXtxPTE2''@;'; put 'put ''O2JyZWFrIGV9aWYoMHxCQShsLEQsZikpe3E9MTY7YnJlYWsgZX19fXdoaWxlKDApO0E9MHxhW0E+PjJdfWRve2lmKDE2PT0oMHxxKSlpZihmPTB8YVtBPj4yXSl7aWYoMD09KDB8YVsocD1mKzE2fDApPj4yXSkmJihkMSgwLDApLDA9PSgwfGFbcD4+Ml0pKSl7Zj0wO2JyZWFrfSgwfGFbbCs4''@;'; put 'put ''Pj4yXSk+MCYmKHE9MHxhWzE1NzEyXSxSPTB8YVtmKzQ+PjJdLEc9MHxhWzgrKDB8YVtmKzEyPj4yXSk+PjJdLGFbcGU+PjJdPWFbMjAxNjgrKGM8PDIpPj4yXSxhW3BlKzQ+PjJdPVIsYVtwZSs4Pj4yXT1HLFQwKHEsOTg0MjcscGUpKX1lbHNlIGY9MH13aGlsZSgwKTtyZXR1cm4gYVtsKzgw''@;'; put 'put ''KyhjPDwyKT4+Ml09ZixsZT1nZSwwfGZ9ZnVuY3Rpb24gV0cobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTA7ZG97aWYoZil7aWYoMHxhWzUwNDddJiYodXMoMTg4MDA0LDAsMCksYVs1MDQ3XT0wKSxmPTB8JHMoQT0wfHJhKGYpLDU4KSl7Zm9yKGZlW2Y+PjBdPTAs''@;'; put 'put ''Zj0xLG09cD1sKzYwKyhjPDwyKXwwO2w9MHxhW20+PjJdOykwfChsPTB8JHMoYz0wfHJhKDB8YVtsKzQ+PjJdKSw1OCkpJiYoZmVbbD4+MF09MCksMCE9KDB8ZmVbQT4+MF0pJiYwIT0oMHx5MChBLGMpKXx8KChmPTB8YVs0NzAwMl0pPj4+MD49KDB8YVs0NzAwM10pPj4+MCYmKFEwKDE4ODAw''@;'; put 'put ''NCwxKSxmPTB8YVs0NzAwMl0pLGFbNDcwMDJdPWYrMSxmZVtmPj4wXT0zMix1bygxODgwMDQsMHxhWzQrKDB8YVttPj4yXSk+PjJdKSwoZj0wfGFbNDcwMDJdKT4+PjA+PSgwfGFbNDcwMDNdKT4+PjAmJihRMCgxODgwMDQsMSksZj0wfGFbNDcwMDJdKSxhWzQ3MDAyXT1mKzEsZmVbZj4+MF09''@;'; put 'put ''NTgsdW8oMTg4MDA0LDB8YVs4KygwfGFbMTIrKDB8YVttPj4yXSk+PjJdKT4+Ml0pLGY9MCksRnQoYyksbT0wfGFbbT4+Ml07RnQoQSksZjw8MjQ+PjI0JiYobT0wLHc9MTkpfWVsc2UgRnQoQSksbT0wLHA9bCs2MCsoYzw8Mil8MCxmPTEsdz0xOTtpZigxOT09KDB8dykpe2Zvcig7bD0wfGFb''@;'; put 'put ''cD4+Ml07KTB8KGw9MHwkcyhjPTB8cmEoMHxhW2wrND4+Ml0pLDU4KSkmJihmZVtsPj4wXT0wKSwwIT0oMHxtKSYmMD09KDB8eTAobSxjKSl8fCgoZj0wfGFbNDcwMDJdKT4+PjA+PSgwfGFbNDcwMDNdKT4+PjAmJihRMCgxODgwMDQsMSksZj0wfGFbNDcwMDJdKSxhWzQ3MDAyXT1mKzEsZmVb''@;'; put 'put ''Zj4+MF09MzIsdW8oMTg4MDA0LGMpLGY9MCksbT1jLHA9MHxhW3A+PjJdLHc9MTk7aWYoZjw8MjQ+PjI0KXtmPTE5NTA1OTticmVha319KGY9MHxhWzQ3MDAyXSk+Pj4wPj0oMHxhWzQ3MDAzXSk+Pj4wJiYoUTAoMTg4MDA0LDEpLGY9MHxhWzQ3MDAyXSksZmVbZj4+MF09MCxhWzQ3MDAyXT1m''@;'; put 'put ''PTB8YVs0NzAwMV19ZWxzZSBmPTB9d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBwcmUobCl7dmFyIGM7cmV0dXJuKGx8PTApfHxQcigxMTEyMDgsOTg0NDQsNTczLDk4NDU4KSwwfGZlW2w+PjBdfHxQcigxMTEyMTMsOTg0NDQsNTc0LDk4NDU4KSwwfCgoYz0wfGFbNDcwMDVdKT8wfG1p''@;'; put 'put ''WzYzJmFbYz4+Ml1dKGMsbCw1MTIpOjApfWZ1bmN0aW9uIGdyZShsKXt2YXIgZixwLG0sQSxiLGssYz0wLHc9MDtrPWxlLGxlPWxlKzE2fDAsYj1rKzh8MCx3PWssKGx8PTApfHxQcigxMTEzMTIsOTg0NDQsNTg5LDk4NDc1KSwoZj0wfGFbKG09bCs4fDApPj4yXSl8fFByKDExMTMxNSw5ODQ0''@;'; put 'put ''NCw1OTAsOTg0NzUpLDB8ZmVbZj4+MF18fFByKDExMTMyNCw5ODQ0NCw1OTEsOTg0NzUpLHA9MHxhWyhBPWwrMjB8MCk+PjJdO2Rve2lmKCFwKXtpZighKGM9MHxkRChmKSkpe2Fbdz4+Ml09YVttPj4yXSwkcigwLDk4NDk5LHcpLGM9MDticmVha31pZih3PTB8blMoYywxMzg4MjEpLGFbQT4+''@;'; put 'put ''Ml09dywhdyl7YVtiPj4yXT0wfCRrKDB8YVs0NzY0M10pLGFbYis0Pj4yXT1jLCRyKDAsOTg1MjQsYiksYz0wO2JyZWFrfWlmKCgwfChjPTB8YVs0NzAwNl0pKT40OSl7ZmVbbCsxNz4+MF09MSxjPTE7YnJlYWt9YVs0NzAwNl09YysxLGM9MTticmVha31uMyhwLDAsMCksMHxhW0E+PjJdP2M9''@;'; put 'put ''MTpQcig5ODU0NSw5ODQ0NCw2MTQsOTg0NzUpfXdoaWxlKDApO3JldHVybiBsZT1rLDB8Y31mdW5jdGlvbiBZRyhsKXt2YXIgYz0wLGY9MDswfGZlWzE3KyhsfD0wKT4+MF0mJjB8KGY9MHxhWyhjPWwrMjB8MCk+PjJdKSYmKHR3KGYpLGFbYz4+Ml09MCl9ZnVuY3Rpb24gbXJlKGwsYyxmKXts''@;'; put 'put ''fD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wOyhjfD0wKT8obT0rKDB8KHA9MHxhW2MrNDg+PjJdKSkscD8oX1tmKzg+PjNdPW0sX1tmPj4zXT1tLEE9bSk6KEE9K19bZj4+M10sbT0rX1tmKzg+PjNdKSxwPX5+KCsoNzIqKDB8YVtjKzQwPj4yXSl8MCkvQSksZj1+figrKDcyKigwfGFbYys0ND4+''@;'; put 'put ''Ml0pfDApL20pKToocD0tMSxmPS0xKSxhW2w+PjJdPXAsYVtsKzQ+PjJdPWZ9ZnVuY3Rpb24gVUcobCxjLGYpe2x8PTAsY3w9MDt2YXIgdyxiLGsscD0wLG09MCxBPTAsTT0wO2s9bGUsbGU9bGUrNDh8MCxwPWsrMTZ8MCx3PWssYj1rKzMyfDAsMCE9KDB8KGZ8PTApKSYmMCE9KDB8ZmVbZj4+''@;'; put 'put ''MF0pPygoMHxhWzQ3MDA3XSkhPSgwfChtPTB8YVs0NzEzM10pKSYmKGFbNDcwMDddPW0sMHwoQT0wfGFbNDcwMDVdKSkmJihObChBKSxhWzQ3MDA1XT0wKSxfW3crOD4+M109TT0oTT0rX1syNCsoMHxhWzgrKDB8YVtjKzE2Pj4yXSk+PjJdKT4+M10pPj0xP006OTYsX1t3Pj4zXT1NLGM9MHxm''@;'; put 'put ''dW5jdGlvbiB2cmUobCl7dmFyIG0sYz0wLGY9MCxwPTA7bT1sZSxsZT1sZSsxNnwwLHA9bSwobHw9MCl8fFByKDExMTIwOCw5ODQ0NCw2MzgsOTg1NTEpLDB8YVs0NzAwNV18fChhWzQ3MDA1XT0wfGlzKDIwMTkyLDB8YVs0NTg5XSkpLGM9MHxwcmUobCk7ZTpkb3tpZihjKVlHKGMpO2Vsc2Ug''@;'; put 'put ''aWYoYz0wfHZyKDY0KSxjKXtpZihhWyhmPWMrOHwwKT4+Ml09MHxyMCgwLGwpLCEoKDB8Z3JlKGMpKTw8MjQ+PjI0KSl7U0MoYyksYz0wO2JyZWFrfXN3aXRjaCgwfGFbYysyMD4+Ml18fFByKDk4NTQ1LDk4NDQ0LDY1Myw5ODU1MSksMHxBcmUoYykpe2Nhc2UgMDppZihsPTB8bE4oMHxhW2Y+''@;'; put 'put ''PjJdKSxhW2MrNTI+PjJdPWwsIWwpe2FbcD4+Ml09YVtmPj4yXSwkcigwLDk4NTY4LHApLFNDKGMpLGM9MDticmVhayBlfWJyZWFrO2Nhc2UgMjp5cmUoYyk7YnJlYWs7Y2FzZSAzOlFHKGMpO2JyZWFrO2Nhc2UgMTppNyhjKTticmVhaztjYXNlIDQ6SkcoYyk7YnJlYWs7Y2FzZSA2OnVGKGMp''@;'; put 'put ''O2JyZWFrO2Nhc2UgMTE6Y0YoYyk7YnJlYWs7Y2FzZSA4OndyZShjKTticmVhaztjYXNlIDU6ZkYoYyk7YnJlYWs7Y2FzZSAxMjpoRihjKX1ZRyhjKSxtaVs2MyZhWyhwPTB8YVs0NzAwNV0pPj4yXV0ocCxjLDEpfWVsc2UgYz0wfXdoaWxlKDApO3JldHVybiBsZT1tLDB8Y30oZiksYVtwPj4y''@;'; put 'put ''XT1hW3c+PjJdLGFbcCs0Pj4yXT1hW3crND4+Ml0sYVtwKzg+PjJdPWFbdys4Pj4yXSxhW3ArMTI+PjJdPWFbdysxMj4+Ml0sbXJlKGIsYyxwKSxjPTB8YVtiPj4yXSxwPTB8YVtiKzQ+PjJdKTooYz0tMSxwPS0xKSxhW2w+PjJdPWMsYVtsKzQ+PjJdPXAsbGU9a31mdW5jdGlvbiBTQyhsKXt2''@;'; put 'put ''YXIgYzswfChjPTB8YVs4KyhsfD0wKT4+Ml0pJiZlMCgwLGMpLEZ0KGwpfWZ1bmN0aW9uIEFyZShsKXt2YXIgbSxBLHcsayxjPTAsZj0wLHA9MCxiPTA7az1sZSxsZT1sZSsyMjR8MCxtPWsrMjAwfDAsQT1rLGM9MHxhWyh3PTIwKyhsfD0wKXwwKT4+Ml07ZTpkb3tpZigwIT0oMHxjKSYmMjA9''@;'; put 'put ''PSgwfEckKG0sMSwyMCxjKSkpe2ZvcihmPTA7Oyl7aWYoZj4+PjA+PTEwKXtiPTEzO2JyZWFrIGV9aWYoISgwfHQzKG0sMHxhWzIwMjI4KyhmPDw0KT4+Ml0sMHxhWzIwMjI4KyhmPDw0KSs0Pj4yXSkpKWJyZWFrO2Y9ZisxfDB9c3dpdGNoKGFbKHA9bCsyOHwwKT4+Ml09YVsyMDIyOCsoZjw8''@;'; put 'put ''NCkrMTI+PjJdLGFbKGw9bCsyNHwwKT4+Ml09Yz0wfGFbMjAyMjgrKGY8PDQpKzg+PjJdLDB8Zil7Y2FzZSA3OmJyZWFrO2Nhc2UgODppZigwfHQzKG0rOHwwLDk4Nzg0LDQpKWJyZWFrIGU7YVtwPj4yXT05ODc4OSxhW2w+PjJdPTExLGM9MTE7YnJlYWsgZTtkZWZhdWx0OmJyZWFrIGV9Zm9y''@;'; put 'put ''KDs7KXtpZighKDB8eWcoQSwyMDAsMHxhW3c+PjJdKSkpe2I9MTE7YnJlYWt9aWYoISgwfHQzKEEsOTg3NzksNCkpKXtiPTg7YnJlYWt9fWlmKDg9PSgwfGIpKXthW3A+PjJdPTEwMTgwMyxhW2w+PjJdPTgsYz04O2JyZWFrfWlmKDExPT0oMHxiKSl7Yz0wfGFbbD4+Ml07YnJlYWt9fWVsc2Ug''@;'; put 'put ''Yj0xM313aGlsZSgwKTtyZXR1cm4gMTM9PSgwfGIpJiYoYVtsKzI4Pj4yXT05ODc5NCxhW2wrMjQ+PjJdPTAsYz0wKSxsZT1rLDB8Y31mdW5jdGlvbiB5cmUobCl7dmFyIGMsZixwLG07bT1sZSxsZT1sZSsxNnwwLGM9bSs0fDAsZj1tLGFbNDgrKGx8PTApPj4yXT0wLG4zKDB8YVsocD1sKzIw''@;'; put 'put ''fDApPj4yXSw2LDApLCgwfHRwKDB8YVtwPj4yXSwyLGMpKTw8MjQ+PjI0JiYoMHx0cCgwfGFbcD4+Ml0sMixmKSk8PDI0Pj4yNCYmKGFbbCs0MD4+Ml09YVtjPj4yXSxhW2wrNDQ+PjJdPWFbZj4+Ml0pLGxlPW19ZnVuY3Rpb24gUUcobCl7dmFyIGMsZixwLG07bT1sZSxsZT1sZSsxNnwwLGM9''@;'; put 'put ''bSs0fDAsZj1tLGFbNDgrKGx8PTApPj4yXT0wLG4zKDB8YVsocD1sKzIwfDApPj4yXSwxNiwwKSwoMHxFZigwfGFbcD4+Ml0sNCxjKSk8PDI0Pj4yNCYmKDB8RWYoMHxhW3A+PjJdLDQsZikpPDwyND4+MjQmJihhW2wrNDA+PjJdPWFbYz4+Ml0sYVtsKzQ0Pj4yXT1hW2Y+PjJdKSxsZT1tfWZ1''@;'; put 'put ''bmN0aW9uIGk3KGwpe3ZhciBjLGYscCxtLEEsdzt3PWxlLGxlPWxlKzE2fDAsYz13KzEyfDAsZj13Kzh8MCxwPXcrNHwwLG09dyxhWzQ4KyhsfD0wKT4+Ml09MCxuMygwfGFbKEE9bCsyMHwwKT4+Ml0sMTYsMCksKDB8dHAoMHxhW0E+PjJdLDIsYykpPDwyND4+MjQmJigwfHRwKDB8YVtBPj4y''@;'; put 'put ''XSwyLGYpKTw8MjQ+PjI0JiYoMHx0cCgwfGFbQT4+Ml0sMixwKSk8PDI0Pj4yNCYmKDB8dHAoMHxhW0E+PjJdLDIsbSkpPDwyND4+MjQmJihhW2wrNDA+PjJdPWFbYz4+Ml08PDE2fGFbZj4+Ml0sYVtsKzQ0Pj4yXT1hW3A+PjJdPDwxNnxhW20+PjJdKSxsZT13fWZ1bmN0aW9uIEpHKGwpe3Zh''@;'; put 'put ''ciBjLHAsbSx3LGIsayxELGY9MCxBPTAsTT0wO2ZvcihEPWxlLGxlPWxlKzMyfDAsYz1EKzE2fDAscD1EKzEyfDAsbT1EKzh8MCx3PUQrNHwwLGI9RCxhWzQ4KyhsfD0wKT4+Ml09MCxrPWwrMjB8MDsoMHxFZigwfGFbaz4+Ml0sMSxjKSk8PDI0Pj4yNDspaWYoMjU1IT0oMHwoZj0wfGFbYz4+''@;'; put 'put ''Ml0pKSYmISgwfCRzKDk4NzY3LGYpKSl7aWYoMTkyPT0oMHxmKSl7TT02O2JyZWFrfWlmKEE9MHxhW2s+PjJdLDE5ND09KDB8Zikpe009MTE7YnJlYWt9aWYoISgoMHxFZihBLDIscCkpPDwyND4+MjQpKWJyZWFrO24zKDB8YVtrPj4yXSwoMHxhW3A+PjJdKS0yfDAsMSl9Nj09KDB8TSk/KDB8''@;'; put 'put ''RWYoMHxhW2s+PjJdLDMsYikpPDwyND4+MjQmJigwfEVmKDB8YVtrPj4yXSwyLG0pKTw8MjQ+PjI0JiYoMHxFZigwfGFbaz4+Ml0sMix3KSk8PDI0Pj4yNCYmKGFbbCs0ND4+Ml09YVttPj4yXSxhW2wrNDA+PjJdPWFbdz4+Ml0pOjExPT0oMHxNKSYmKDB8RWYoQSwzLGIpKTw8MjQ+PjI0JiYo''@;'; put 'put ''MHxFZigwfGFbaz4+Ml0sMixtKSk8PDI0Pj4yNCYmKDB8RWYoMHxhW2s+PjJdLDIsdykpPDwyND4+MjQmJihhW2wrNDQ+PjJdPWFbbT4+Ml0sYVtsKzQwPj4yXT1hW3c+PjJdKSxsZT1EfWZ1bmN0aW9uIHVGKGwpe3ZhciBjLHAsbSxBLHcsYixELGY9MCxrPTAsTT0wO2ZvcihEPWxlLGxlPWxl''@;'; put 'put ''KzEwNTZ8MCxrPUQsYz1EKzMyfDAscD1EKzI4fDAsbT1EKzI0fDAsQT1EKzIwfDAsdz1EKzE2fDAsYVs0OCsobHw9MCk+PjJdPTcyLG4zKDB8YVsoYj1sKzIwfDApPj4yXSwwLDApOzB8eWcoYywxMDI0LDB8YVtiPj4yXSk7KWlmKChmPTB8dFMoYyw5ODc1MikpJiYoYVtrPj4yXT1wLGFbays0''@;'; put 'put ''Pj4yXT1tLGFbays4Pj4yXT1BLGFbaysxMj4+Ml09dyw0PT0oMHxpbChmLDEwNDMxMSxrKSkpKXtNPTU7YnJlYWt9NT09KDB8TSkmJihhW2wrMzI+PjJdPWs9MHxhW3A+PjJdLGFbbCszNj4+Ml09TT0wfGFbbT4+Ml0sYVtsKzQwPj4yXT0oMHxhW0E+PjJdKS1rLGFbbCs0ND4+Ml09KDB8YVt3''@;'; put 'put ''Pj4yXSktTSksbGU9RH1mdW5jdGlvbiBjRihsKXt2YXIgYyxmLHAsbSxBLHc7QT1sZSxsZT1sZSsxNnwwLGM9QSs0fDAsZj1BLGFbNDgrKGx8PTApPj4yXT0wLG4zKDB8YVsocD1sKzIwfDApPj4yXSwxNSwwKSx3PTg4PT0oMHxXaigwfGFbcD4+Ml0pKSxtPTB8YVtwPj4yXSx3PyhuMyhtLDI0''@;'; put 'put ''LDApLCgwfHRwKDB8YVtwPj4yXSw0LGMpKTw8MjQ+PjI0JiYoMHx0cCgwfGFbcD4+Ml0sNCxmKSk8PDI0Pj4yNCYmKGFbbCs0MD4+Ml09YVtjPj4yXSxhW2wrNDQ+PjJdPWFbZj4+Ml0pKToobjMobSwyNiwwKSwoMHx0cCgwfGFbcD4+Ml0sMixjKSk8PDI0Pj4yNCYmKDB8dHAoMHxhW3A+PjJd''@;'; put 'put ''LDIsZikpPDwyND4+MjQmJihhW2wrNDA+PjJdPWFbYz4+Ml0sYVtsKzQ0Pj4yXT1hW2Y+PjJdKSksbGU9QX1mdW5jdGlvbiB3cmUobCl7bHw9MDt2YXIgayxNLEQsUixHLHEscGUsZ2UsYmUsT2UsTGUsUmUsSGUsVmUscWUscnQsV2UsYXQsU3Qsa3QsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAs''@;'; put 'put ''Yj0wO2t0PWxlLGxlPWxlKzM1MnwwLFdlPWt0KzgwfDAscnQ9a3QrNzJ8MCxTdD1rdCs2NHwwLGF0PWt0KzU2fDAscWU9a3QrNDh8MCxjPWt0KzQwfDAscGU9a3QrMzJ8MCxnZT1rdCsyNHwwLGJlPWt0KzE2fDAsT2U9a3QrOHwwLExlPWt0LFJlPWt0KzMyOHwwLEhlPWt0KzEyOHwwLFZlPWt0''@;'; put 'put ''Kzk2fDAsMHxhWzQ3MDA4XXx8KDB8ZnVuY3Rpb24gVWNlKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgT2UsUmUscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxMZT0wLEhlPTA7UmU9bGUsbGU9bGUrNDh8MCxiPVJlLE9lPTB8ZnVu''@;'; put 'put ''Y3Rpb24gUWNlKCl7dmFyIGw9MCxjPTA7bD0wfEYwKDIwKTtkb3tpZihsKXtpZihjPTB8RjAoMjA0OCksYVtsKzE2Pj4yXT1jLGMpe2FbbD4+Ml09NTEyLGFbbCs0Pj4yXT0xMDI0ZTMsYVtsKzg+PjJdPTEyOCxhW2wrMTI+PjJdPTA7YnJlYWt9RnQobCksbD0wO2JyZWFrfX13aGlsZSgwKTty''@;'; put 'put ''ZXR1cm4gMHxsfSgpO2U6ZG97aWYoT2Upe2lmKCEoTGU9MHxSJCgwLDApKSl7VmooT2UpLGM9MTI7YnJlYWt9YVsocD1iKzh8MCk+PjJdPTAsYVtwKzQ+PjJdPTAsYVtwKzg+PjJdPTAsYVtwKzEyPj4yXT0wLGFbcCsxNj4+Ml09MCxhW2I+PjJdPUxlLGFbYis0Pj4yXT1PZSxhW2IrMTY+PjJd''@;'; put 'put ''PWMsYVtiKzMyPj4yXT1mLGFbKHA9YisyOHwwKT4+Ml09LTEsYz0wfEpjZShiKTt0OmRve2lmKGMpQT0wLHc9MCxiPTAsbT0wLHA9MDtlbHNlIGlmKHc9YisyMHwwLG09MHxhW3c+PjJdLGFbbD4+Ml09bSstMSxrPTB8YVtiKzg+PjJdLGM9MHxhW3A+PjJdLCgwfGMpPCgwfG0pKWlmKEE9MHxz''@;'; put 'put ''aCgxLDY4KSxBKXtpZihhW0ErNjA+PjJdPWdlPWM+Pj4zMV4xLGFbQSsyOD4+Ml09bSwwPT0oOCZmfDApfDAhPSgwfGdlKSl7aWYoMHwoYz0wfEIkKDAsT2UsayxBKSkpe3c9MCxiPTAsbT0wLHA9MDticmVha31pZigoMHwobT0wfGFbQSs0MD4+Ml0pKT4wKXtpZighKHA9MHxGMChjPTQrKG08''@;'; put 'put ''PDIpfDApKSl7dz0wLGI9MCxjPTEyLG09MCxwPTA7YnJlYWt9YVtBKzMyPj4yXT1wLHUyKDB8cCwtMSwwfGMpfWVsc2UgcD0wO2lmKGdlPTB8c2gobTw8MXwxLDQpLGFbQSszNj4+Ml09Z2UsIWdlKXt3PTAsYj0wLGM9MTIsbT0wLHA9MDticmVha31pZighKGM9MHxzaCgwfGFbdz4+Ml0sMTIp''@;'; put 'put ''KSl7dz0wLGI9MCxjPTEyLG09MCxwPTA7YnJlYWt9aWYoYVtBKzE2Pj4yXT1jLGM9MHxCJChMZSxPZSxrLEEpKXt3PTAsYj0wLG09MCxwPTA7YnJlYWt9Yz1wfWVsc2UgYz0wO2lmKGM9MHxYY2UoTGUsT2UsayxnZT1iKzI0fDAsYykpdz0wLGI9MCxtPTAscD0wO2Vsc2UgaWYoYVtnZT4+Ml09''@;'; put 'put ''MSsoYz0wfGFbZ2U+PjJdKSwwIT0oMHwoYz0wfG4xKExlLDAsMCxjKSkpJiYwIT0oMHwoYmU9MHx1dihMZSxrLGMpKSkpaWYoYz0wfEtjZShMZSxPZSxiZSkpdz0wLGI9MCxtPTAscD0wO2Vsc2UgaWYocT0wfEYwKGM9KHA9MHxhW2dlPj4yXSk8PDIpKWlmKHBlPTB8RjAoYykpe2lmKCgwfHAp''@;'; put 'put ''PjAmJnUyKDB8cSwwLHA8PDJ8MCksTUwoYmUsMCxxLDApLCgwfChtPTB8YVtnZT4+Ml0pKT4wKXtjPTAscD0wO2Rve2FbcGUrKHA8PDIpPj4yXT1jLGM9YysxKygwfGFbKEc9cSsocDw8Mil8MCk+PjJdKXwwLGFbRz4+Ml09MCxwPXArMXwwfXdoaWxlKCgwfHApPCgwfG0pKTtEPWN9ZWxzZSBE''@;'; put 'put ''PTA7aWYoUj0wfHNoKEQrMXwwLDMyKSlpZihhW0E+PjJdPVIsYVsoRz1BKzR8MCk+PjJdPUQsYz0wfE1MKGJlLFIscSxwZSkpdz1xLGI9cGUsbT1xLHA9cGU7ZWxzZXtmb3IoYVtBKzIwPj4yXT0wLGM9MHxhWyhtPWJlKzI0fDApPj4yXSxwPTA7cD1wKzF8MCwhKCgwfGFbYz4+Ml0pPD0tMSk7''@;'; put 'put ''KWM9YyszMnwwO2lmKE09MHxzaChwLDMyKSl7aWYoYVtBKzg+PjJdPU0sKDB8KG09MHxhWyhwPTB8YVttPj4yXSk+PjJdKSk+LTEpe2M9MDtkb3tpZihhW00rKGM8PDUpKzg+PjJdPVIrKGFbcGUrKG08PDIpPj4yXTw8NSksYVtNKyhjPDw1KSsxMj4+Ml09bSxhWyhiPU0rKGM8PDUpKzE2fDAp''@;'; put 'put ''Pj4yXT0wLDB8KHc9MHxhWyhrPXArMTJ8MCk+PjJdKSl7bT0wO2Rve0hlPW0sbT1tKzF8MH13aGlsZSgoMHxhW3crKEhlPDwyKT4+Ml0pPi0xKTtpZih3PTB8RjAobTw8PTIpLGFbYj4+Ml09dywhdyl7dz1xLGI9cGUsYz0xMixtPXEscD1wZTticmVhayB0fWdvKDB8dywwfGFbaz4+Ml0sMHxt''@;'; put 'put ''KX1hW00rKGM8PDUpKzIwPj4yXT1hW3ArMTY+PjJdLGM9YysxfDAsbT0wfGFbKHA9cCszMnwwKT4+Ml19d2hpbGUoKDB8bSk+LTEpfWVsc2UgYz0wO2FbTSsoYzw8NSkrOD4+Ml09MCxhW0c+PjJdPUQsYVtBKzEyPj4yXT1SKyhhW3BlKyhhW2FbYmUrMjg+PjJdPj4yXTw8Mik+PjJdPDw1KSxh''@;'; put 'put ''W0ErNTI+PjJdPWFbZ2U+PjJdLGFbQSs1Nj4+Ml09Zix3ZyhMZSksVmooT2UpLEZ0KHEpLEZ0KHBlKSxhW2wrND4+Ml09QSxjPTA7YnJlYWsgZX13PXEsYj1wZSxjPTEyLG09cSxwPXBlfWVsc2Ugdz1xLGI9cGUsYz0xMixtPXEscD1wZX1lbHNlIHc9cSxiPXBlLGM9MTIsbT1xLHA9MDtlbHNl''@;'; put 'put ''IHc9cSxiPTAsYz0xMixtPTAscD0wO2Vsc2Ugdz0wLGI9MCxjPTEyLG09MCxwPTB9ZWxzZSB3PTAsYj0wLGM9MTIsbT0wLHA9MDtlbHNlIEE9MCx3PTAsYj0wLGM9NixtPTAscD0wfXdoaWxlKDApO3dnKExlKSxWaihPZSksMHx3JiZGdChtKSwwfGImJkZ0KHApLGFbbCs0Pj4yXT1BLCRjZShs''@;'; put 'put ''KX1lbHNlIGM9MTJ9d2hpbGUoMCk7cmV0dXJuIGxlPVJlLDB8Y30oMTg4MDM2LDk4NjM3LDEpJiYoYVtjPj4yXT05ODYzNywkcigxLDk4NjY0LGMpKSxhWzQ3MDA4XT0xODgwMzYpLG4zKDB8YVsoaz1sKzIwfDApPj4yXSwwLDApLE09VmUrMTJ8MCxEPVZlKzIwfDAsUj1WZSs4fDAsRz1WZSsx''@;'; put 'put ''NnwwLHE9VmUrNHwwLGM9MCxtPTAscD0wLGY9MDtlOmZvcig7MHx5ZyhIZSwyMDAsMHxhW2s+PjJdKSYmbTw8MjQ+PjI0PT0wfGM8PDI0Pj4yND09MDspe0E9SGUsYj1mO3Q6Zm9yKDs7KXt3PXA7bjpmb3IoOzspe2Zvcig7Oyl7aWYoMHxsZmUoMTg4MDM2LEEsNCxWZSwwKSl7cD13LGY9Yjtj''@;'; put 'put ''b250aW51ZSBlfWlmKGZlW0ErKDB8YVtNPj4yXSk+PjBdPTAsZmVbQSsoMHxhW0Q+PjJdKT4+MF09MCxmPUErKDB8YVtSPj4yXSl8MCxwPUErKDB8YVtHPj4yXSl8MCxBPUErKDErKDB8YVtxPj4yXSkpfDAsISgwfFppKGYsMTQxMTE2KSkpYnJlYWs7aWYoISgwfFppKGYsMTQxMDQ4KSkpYnJl''@;'; put 'put ''YWsgbjtpZighKDB8WmkoZiw5ODcxMSkpJiYoYVtXZT4+Ml09Z2UsYVtXZSs0Pj4yXT1iZSxhW1dlKzg+PjJdPU9lLGFbV2UrMTI+PjJdPUxlLDQ9PSgwfGlsKHAsOTg3MTksV2UpKSkpYnJlYWsgdH1pZihhW3FlPj4yXT1wZSxhW3FlKzQ+PjJdPVJlLDIhPSgwfGlsKHAsOTg3MDEscWUpKT8o''@;'; put 'put ''YVthdD4+Ml09cGUsMT09KDB8aWwocCwxMDEyMDksYXQpKT8oZj0xLHA9MHxMVCgrX1twZT4+M10sOTg3MDgpKTooZj1tLHA9dykpOihmPTEscD0wfExUKCtfW3BlPj4zXSxSZSkpLGM8PDI0Pj4yNCl7bT1mLGY9Yjtjb250aW51ZSBlfWM9MCxtPWYsdz1wfWlmKGFbU3Q+PjJdPXBlLGFbU3Qr''@;'; put 'put ''ND4+Ml09UmUsMiE9KDB8aWwocCw5ODcwMSxTdCkpPyhhW3J0Pj4yXT1wZSwxPT0oMHxpbChwLDEwMTIwOSxydCkpPyhjPTEsZj0wfExUKCtfW3BlPj4zXSw5ODcwOCkpOmY9Yik6KGM9MSxmPTB8TFQoK19bcGU+PjNdLFJlKSksbTw8MjQ+PjI0KXtwPXc7Y29udGludWUgZX1tPTAscD13LGI9''@;'; put 'put ''Zn1jPTEsbT0xLHA9fn4oK19bT2U+PjNdKzEtK19bZ2U+PjNdKT4+PjAsZj1+figrX1tMZT4+M10rMS0rX1tiZT4+M10pPj4+MH1hW2wrNDg+PjJdPTAsYVtsKzQwPj4yXT1wLGFbbCs0ND4+Ml09ZixsZT1rdH1mdW5jdGlvbiBmRihsKXt2YXIgYyxmLHAsbT0wLEE9MDtmPWxlLGxlPWxlKzMy''@;'; put 'put ''fDAsYz1mLGFbNDgrKGx8PTApPj4yXT0wLG4zKDB8YVsocD1sKzIwfDApPj4yXSwwLDApLDB8ZnVuY3Rpb24gam1lKGwsYyl7bHw9MCxjfD0wO3ZhciBmLHAsdyxtPTAsQT0wO2Zvcih3PWxlLGxlPWxlKzEwNDB8MCxmPXcscD13KzE2fDA7Oyl7aWYoISgwfHlnKHAsMTAyNCxsKSkpe2w9MTti''@;'; put 'put ''cmVha31pZigwfChtPTB8dFMocCw5ODYyNykpKXtBPTQ7YnJlYWt9fXJldHVybiA0PT0oMHxBKSYmKGFbZis0Pj4yXT1wLGFbZj4+Ml09bSs5LGFbZis4Pj4yXT1sLGw9MHxmdW5jdGlvbiBabWUobCxjKXtjfD0wO3ZhciBwLG0sZj0wO3JldHVybiBtPWxlLGxlPWxlKzEwMjR8MCxwPW0sYnJl''@;'; put 'put ''KGx8PTApLDkxPT0oMHwoZj0oZj0wfGZlW2FbbD4+Ml0+PjBdKTw8MjQ+PjI0P2Y8PDI0Pj4yNDoyNTUmKDB8WEcobCkpKSkmJihhW2w+PjJdPTErKDB8YVtsPj4yXSksTUMobCxwKSwwPT0oMHxEVChwLGMpKSkmJihNQyhsLHApLDA9PSgwfERUKHAsYys4fDApKSkmJihNQyhsLHApLDA9PSgw''@;'; put 'put ''fERUKHAsYysxNnwwKSkpPyhNQyhsLHApLGY9MCE9KDB8RFQocCxjKzI0fDApKSYxKTpmPTEsbGU9bSwwfGZ9KGYsYykpLGxlPXcsMHxsfSgwfGFbcD4+Ml0sYyl8fChhW2wrMzI+PjJdPX5+KEE9K19bYz4+M10pLGFbbCszNj4+Ml09fn4obT0rX1tjKzg+PjNdKSxhW2wrNDA+PjJdPX5+KCtf''@;'; put 'put ''W2MrMTY+PjNdLUEpLGFbbCs0ND4+Ml09fn4oK19bYysyND4+M10tbSkpLGxlPWZ9ZnVuY3Rpb24gaEYobCl7dmFyIGMsZixwLG07bT1sZSxsZT1sZSsxNnwwLGM9bSs0fDAsZj1tLGFbNDgrKGx8PTApPj4yXT0wLG4zKDB8YVsocD1sKzIwfDApPj4yXSw2LDApLCgwfEVmKDB8YVtwPj4yXSwx''@;'; put 'put ''LGMpKTw8MjQ+PjI0JiYoMHxFZigwfGFbcD4+Ml0sMSxmKSk8PDI0Pj4yNCYmKGFbbCs0MD4+Ml09YVtjPj4yXSxhW2wrNDQ+PjJdPWFbZj4+Ml0pLGxlPW19ZnVuY3Rpb24gRWYobCxjLGYpe2x8PTAsY3w9MDt2YXIgcD0wLG09MDtmb3IoYVsoZnw9MCk+PjJdPTAscD0wOzspe2lmKHA+Pj4w''@;'; put 'put ''Pj1jPj4+MCl7cD0xO2JyZWFrfWlmKG09MHxXaihsKSwwfEUkKGwpKXtwPTA7YnJlYWt9YVtmPj4yXT1hW2Y+PjJdPDw4fG0scD1wKzF8MH1yZXR1cm4gMHxwfWZ1bmN0aW9uIGJyZShsKXt2YXIgYz0wO2ZvcihjPTB8YVsobHw9MCk+PjJdOygyNTUmKGM9KGM9MHxmZVtjPj4wXSk8PDI0Pj4y''@;'; put 'put ''ND9jPDwyND4+MjQ6MjU1JigwfFhHKGwpKSkpPDwyND4+MjQmJjB8JGMoMjU1JmMpOylhW2w+PjJdPWM9MSsoMHxhW2w+PjJdKXwwfWZ1bmN0aW9uIFhHKGwpe3ZhciBjPTA7cmV0dXJuIDB8eWcoMHxhWyhjPTQrKGx8PTApfDApPj4yXSwxMDI0LDB8YVtsKzg+PjJdKT8oYVtsPj4yXT1jPTB8''@;'; put 'put ''YVtjPj4yXSxsPTB8ZmVbYz4+MF0pOmw9MCwwfGx9ZnVuY3Rpb24gTUMobCxjKXtjfD0wO3ZhciBmPTAscD0wLG09MDtmb3IoYnJlKGx8PTApLGY9MCxwPTB8YVtsPj4yXTsocD0obT0ocD0wfGZlW3A+PjBdKTw8MjQ+PjI0P3A8PDI0Pj4yNDoyNTUmKDB8WEcobCkpKTw8MjQ+PjI0KSYmNDY9''@;'; put 'put ''PSgwfHApfChwKy00OHwwKT4+PjA8MTA7KWlmKGZlW2MrZj4+MF09bSxmPWYrMXwwLGFbbD4+Ml09cD0xKygwfGFbbD4+Ml0pfDAsMTAyMz09KDB8Zikpe2Y9MTAyMzticmVha31mZVtjK2Y+PjBdPTB9ZnVuY3Rpb24gRFQobCxjKXt2YXIgZixwLG07cmV0dXJuIGN8PTAscD1sZSxsZT1sZSsx''@;'; put 'put ''NnwwLGY9K2kzKGx8PTAsbT1wKSwoMHxhW20+PjJdKT09KDB8bCk/bD0xOihfW2M+PjNdPWYsbD0wKSxsZT1wLDB8bH1mdW5jdGlvbiBMVChsLGMpe2w9K2wsY3w9MDt2YXIgZj0wO2Rve2lmKDB8WmkoYyw5ODczNSkpe2lmKCEoMHxaaShjLDk4NzM4KSkpe2Y9bCo9Ljc1LGw9bD49MD8uNTot''@;'; put 'put ''LjU7YnJlYWt9aWYoISgwfFppKGMsOTg3NDEpKSl7Zj1sKj0xMixsPWw+PTA/LjU6LS41O2JyZWFrfWlmKDB8WmkoYyw5ODcwOCkmJjB8WmkoYyw5ODc0NCkpe2lmKDB8WmkoYyw5ODc0NikpcmV0dXJuIGY9Mi44MzQ2NDU2NjYzOTk5OTk3KmwsMHwoKGM9MD09KDB8WmkoYyw5ODc0OSkpKT9+''@;'; put 'put ''fihmKyhmPj0wPy41Oi0uNSkpOjApO2Y9bCo9MjguMzQ2NDU2NjY0LGw9bD49MD8uNTotLjU7YnJlYWt9Zj1sPj0wPy41Oi0uNX1lbHNlIGY9bCo9NzIsbD1sPj0wPy41Oi0uNX13aGlsZSgwKTtyZXR1cm4gMHx+fihsK2YpfWZ1bmN0aW9uIHRwKGwsYyxmKXtsfD0wLGN8PTA7dmFyIHA9MCxt''@;'; put 'put ''PTA7Zm9yKGFbKGZ8PTApPj4yXT0wLHA9MDs7KXtpZihwPj4+MD49Yz4+PjApe3A9MTticmVha31pZihtPTB8V2oobCksMHxFJChsKSl7cD0wO2JyZWFrfWFbZj4+Ml09YVtmPj4yXXxtPDwocDw8MykscD1wKzF8MH1yZXR1cm4gMHxwfWZ1bmN0aW9uIEtHKCl7dmFyIGw7cmV0dXJuIHNpKDAs''@;'; put 'put ''MSwxMDgyMjQsMTA1NDkzKSxmdW5jdGlvbiBUOShsLGMpeyhmdW5jdGlvbiBROChsKXt2YXIgYz0wLGY9MDtjPTB8YVszMisobHw9MCk+PjJdO2U6ZG97aWYoMHxjKWZvcig7Oyl7aWYoIShmPTB8YVtjPj4yXSkpYnJlYWsgZTsxMDM9PSgwfGZlW2Y+PjBdKSYmMHx0UyhmLDExMTUwOSkmJlU4''@;'; put 'put ''KGwsMCwwfGFbYys0Pj4yXSksYz1jKzh8MH19d2hpbGUoMCl9KShsfD0wKSxmZVtsKzQ0Pj4wXT0wLGZ1bmN0aW9uIGNFKGwpe3ZhciBjOyhjPTB8QkEobHw9MCwyLDExMTUyMikpPyhhW2wrMTQ4Pj4yXT1hWzEyKygwfGFbYysxNj4+Ml0pPj4yXSxsPTMwMCk6bD05OTl9KGwpLGZ1bmN0aW9u''@;'; put 'put ''IHlsZShsKXt2YXIgYz0wO2FbKGM9MTA4KyhsfD0wKXwwKT4+Ml09MCxhW2wrMTEyPj4yXT0zMixhW2wrMTE2Pj4yXT0tMSxhW2wrMTIwPj4yXT0zMyxhW2wrMTI0Pj4yXT02MyxhW2wrMTI4Pj4yXT01NSxhW2wrMTMyPj4yXT0wLGFbbCsxMzY+PjJdPTAsYVtsKzE0MD4+Ml09MCxjPTB8aXMo''@;'; put 'put ''YywwfGFbNDU4MV0pLGFbbCsxNDQ+PjJdPWN9KGwpfShsPTB8ZnVuY3Rpb24ga0MobCxjKXt2YXIgZjtyZXR1cm4gbHw9MCxjfD0wLDB8KGY9MHx2cigzOTIpKSYmKGFbZj4+Ml09MjAxNTYsYVtmKzE2Pj4yXT0yMyxhW2YrMzI+PjJdPWwsYVtmKzM2Pj4yXT1jKSwwfGZ9KDAsMSkpLDB8bH1m''@;'; put 'put ''dW5jdGlvbiBPVChsLGMsZil7Y3w9MDt2YXIgcCxtLEEsdyxiLGs9MCxNPTAsRD0wLFI9MDtyZXR1cm4gYj1sZSxsZT1sZSszMDR8MCx3PWIrMjR8MCxBPWIrOHwwLHA9YixtPWIrNDB8MCw5OTkhPSgwfHJFKGx8PTAsZnw9MCkpPy0xPT0oMHxmdW5jdGlvbiBMUihsLGMpe2x8PTA7dmFyIG0s''@;'; put 'put ''QSxiLGY9MCxwPTAsdz0wO3JldHVybiBiPWxlLGxlPWxlKzE2fDAsbT1iLGgwKGN8PTAsMTM3NDgzLDI4MCwxKSxhWzE0NCsoMHxhWyhBPWMrMTZ8MCk+PjJdKT4+Ml09bCwoMHxkaShjKSkhPSgwfGMpJiYoYVsxNDQrKDB8YVsxNisoMHxkaShjKSk+PjJdKT4+Ml09bCksZj1sKzE3MnwwLDAh''@;'; put 'put ''PSgwfChwPTB8TGkoYywxMTEyMjYpKSkmJihhW2Y+PjJdPTAsOTk5PT0oMHxyRShsLHApKSk/KGY9MHxXRyhsLDEscCksYVttPj4yXT1wLGFbbSs0Pj4yXT1mLCRyKDEsMTExMjMzLG0pLGY9LTEpOihwPTB8YVtmPj4yXSk/KHNjKDEpLGZ1bmN0aW9uIFdvZShsLGMpe2x8PTAsY3w9MDt2YXIg''@;'; put 'put ''bSxrLE0sZj0wLHA9MCxBPTAsdz0wLGI9MDtNPWxlLGxlPWxlKzE2fDAsbT1NKzh8MCxBPU0sZj0wfHZyKDk2KSxhWzgrKDB8YVsoaz1sKzE2fDApPj4yXSk+PjJdPWYsKChmPTB8TGkobCwxMDEyMTMpKXx8MHwoZj0wfER1KDEwMTIyMikpKSYmKGI9MyksMz09KDB8YikmJlZ0KDEwMTIzNCww''@;'; put 'put ''fGYsMSksZj0yNTUmKDB8ZnVuY3Rpb24gWW9lKGwpe3ZhciBjLGY7cmV0dXJuIGY9bGUsbGU9bGUrMTZ8MCxjPWYsMCE9KDB8eTAobD0wfEJhKGx8PTAsMHxzaShsLDAsMTAxODA3LDApLDEwMTgxNSksMTAxODIxKSkmJjAhPSgwfHkwKGwsMTAxODI5KSkmJjAhPSgwfHkwKGwsMTAxODM2KSkm''@;'; put 'put ''JjAhPSgwfHkwKGwsMTAxODM5KSkmJjAhPSgwfHkwKGwsMTAxODUwKSkmJjAhPSgwfHkwKGwsMTAxODYxKSkmJjAhPSgwfHkwKGwsMTAxODcxKSk/MCE9KDB8eTAobCwxMDE4ODIpKSYmMCE9KDB8eTAobCwxMDE4ODgpKT8oMCE9KDB8eTAobCwxMDE4MTUpKSYmMCE9KDB8eTAobCwxMDE4OTMp''@;'; put 'put ''KSYmKGFbYz4+Ml09bCwkcigwLDEwMTg5OCxjKSksbD0wKTpsPTI6bD0xLGxlPWYsMHxsfShsKSksZmVbMTE1KygwfGFbaz4+Ml0pPj4wXT1mLGY9MHxMaShsLDEwMTI0NSksYVs0NzEzM109ZiwwPT0oMHxmKSYmKGFbNDcxMzNdPWFbNDcxMzJdKSxwPStNbChsLDB8c2kobCwwLDEwMTI1NSww''@;'; put 'put ''KSwwLDApLF9bYVs4KygwfGFbaz4+Ml0pPj4yXT4+M109cCxmPTB8TGkobCwxMDEyNjMpO2U6ZG97aWYoZil7c3dpdGNoKDB8ZmVbZj4+MF0pe2Nhc2UgNzY6aWYoISgwfFppKGYsMTAxMjcxKSkpe2Y9MTticmVhayBlfWJyZWFrO2Nhc2UgNjY6aWYoISgwfFppKGYsMTAxMjc0KSkpe2Y9Mjti''@;'; put 'put ''cmVhayBlfWJyZWFrO2Nhc2UgODI6Zj0oZj0wPT0oMHxaaShmLDEwMTI3NykpKT8zOjA7YnJlYWsgZTtkZWZhdWx0OmY9MDticmVhayBlfWY9MH1lbHNlIGY9MH13aGlsZSgwKTthWzExNisoMHxhW2s+PjJdKT4+Ml09Zjw8MnwoYzw8MjQ+PjI0PT0wPzA6ZikscD0rTWwobCwwfHNpKGwsMCwx''@;'; put 'put ''MDEyODAsMCksLjI1LC4wMiksX1tBPj4zXT1wLGFbMjQ4KygwfGFbaz4+Ml0pPj4yXT1+figocCo9NzIpKyhwPj0wPy41Oi0uNSkpLChmPTB8djIobCwwfHNpKGwsMCwxMDEyODgsMCksMCkpPyhhW20+PjJdPUEsMHxpbChmLDEwMTIwOSxtKT8ocD0rX1tBPj4zXSk8LjAyJiYoX1tBPj4zXT0u''@;'; put 'put ''MDIscD0uMDIpOihfW0E+PjNdPS41LHA9LjUpLDB8dFMoZiwxMDEyOTYpJiYoZmVbMjc2KygwfGFbaz4+Ml0pPj4wXT0xKSk6KF9bQT4+M109LjUscD0uNSksYVsyNTIrKDB8YVtrPj4yXSk+PjJdPX5+KChwKj03MikrKHA+PTA/LjU6LS41KSksQT0yNTUmKDB8ZXMobCwwfHNpKGwsMCwxMDEz''@;'; put 'put ''MDQsMCksMCwwKSksZmVbMjQzKygwfGFbaz4+Ml0pPj4wXT1BLEE9MHxTTigwfHYyKGwsMHxzaShsLDAsMTAxMzE0LDApLDApLDIwNjc2LDIwNjkyKSxhWzI0NCsoMHxhW2s+PjJdKT4+Ml09QSxmdW5jdGlvbiB1UShsKXt2YXIgZixjPTAscD0wO2Y9MHxMaShsfD0wLDEwMTc2NSk7ZTpkb3tp''@;'; put 'put ''ZigwfGYmJihwPTB8ZmVbZj4+MF0scDw8MjQ+PjI0KSlzd2l0Y2gocDw8MjQ+PjI0fDApe2Nhc2UgOTc6aWYocDw8MjQ+PjI0IT05N3x8MHxaaShmLDEwMTc3MSkpYnJlYWsgZTthWzg0KygwfGFbOCsoMHxhW2wrMTY+PjJdKT4+Ml0pPj4yXT00O2JyZWFrIGU7Y2FzZSA5OTppZihwPDwyND4+''@;'; put 'put ''MjQhPTk5fHwwfFppKGYsMTAxNzc2KSlicmVhayBlO2FbODQrKDB8YVs4KygwfGFbbCsxNj4+Ml0pPj4yXSk+PjJdPTM7YnJlYWsgZTtjYXNlIDEwMTppZihwPDwyND4+MjQhPTEwMXx8MHxaaShmLDEwMTc4NSkpYnJlYWsgZTthWzg0KygwfGFbOCsoMHxhW2wrMTY+PjJdKT4+Ml0pPj4yXT01''@;'; put 'put ''O2JyZWFrIGU7Y2FzZSAxMDI6aWYocDw8MjQ+PjI0IT0xMDJ8fDB8WmkoZiwxMDE3OTIpKWJyZWFrIGU7YVs4NCsoMHxhWzgrKDB8YVtsKzE2Pj4yXSk+PjJdKT4+Ml09MjticmVhayBlO2RlZmF1bHQ6aWYoISgoYz0ra3AoZikpPjApKWJyZWFrIGU7YVs4NCsobD0wfGFbOCsoMHxhW2wrMTY+''@;'; put 'put ''PjJdKT4+Ml0pPj4yXT0xLF9bbCsxNj4+M109YzticmVhayBlfX13aGlsZSgwKX0obCksQT0wfGNRKGwsMTAxMzI0LDY0KygwfGFbOCsoMHxhW2s+PjJdKT4+Ml0pfDApLGZlWzgwKyhmPTB8YVs4KygwfGFbaz4+Ml0pPj4yXSk+PjBdPUEsY1EobCwxMDEzMjksZis0OHwwKSxmPTB8dDEoMHxM''@;'; put 'put ''aShsLDEwMTMzNCkpLGZlWzgyKygwfGFbOCsoMHxhW2s+PjJdKT4+Ml0pPj4wXT1mLGY9MHxMaShsLDEwMTM0MSk7ZG97aWYoZilmPTkwPT0oMHxyMyhmKSkmMSxiPTI3O2Vsc2V7aWYoMHwoZj0wfExpKGwsMTAxMzQ4KSkpe2Y9KDMyfGZlW2Y+PjBdKTw8MjQ+PjI0PT0xMDgmMSxiPTI3O2Jy''@;'; put 'put ''ZWFrfTB8KGY9MHxMaShsLDEwMTM2MCkpJiYoZj0wfHQxKGYpLGI9MjcpfX13aGlsZSgwKTsyNz09KDB8YikmJihmZVs4MSsoMHxhWzgrKDB8YVtrPj4yXSk+PjJdKT4+MF09ZiksYVs0NzEzNV09MHxTTigwfExpKGwsMTAxMzcwKSwyMDcwOCwyMDcyNCksZmVbMTk0OTU0XT0wfHQxKDB8TGko''@;'; put 'put ''bCwxMDEzODIpKSxhWzQ3MTM4XT0wLGFbNDcxMzldPTAsX1syNCsoMHxhWzgrKDB8YVtrPj4yXSk+PjJdKT4+M109MCwzMD09KDB8KGI9MCE9KDB8KGY9MHxMaShsLDEwMTM5NCkpKSYmMCE9KDB8ZmVbZj4+MF0pPzMyOjMwKSkmJjB8KHc9MHxMaShsLDEwMTM5OCkpJiYwfGZlW3c+PjBdJiYo''@;'; put 'put ''Zj13LGI9MzIpLDMyPT0oMHxiKSYmKHA9K2twKGYpLF9bMjQrKDB8YVs4KygwfGFbaz4+Ml0pPj4yXSk+PjNdPXApLGZrKGwpLF9bMjMyOTVdPTFlMzcsYVs0NzE0MF09MHxzaShsLDAsMTAxNDA5LDApLGFbNDcxNDNdPTB8c2kobCwwLDE0MTAzNCwwKSxhWzQ3MTQ0XT0wfHNpKGwsMCwxMDU0''@;'; put 'put ''OTYsMCksYVs0NzE0NV09MHxzaShsLDEsMTQxMDQ4LDApLGFbNDcxNDZdPTB8c2kobCwxLDE0MTExNiwwKSxhWzQ3MTQ3XT0wfHNpKGwsMSwxMDgyMzAsMCksYVs0NzE0OF09MHxzaShsLDEsMTQwODIzLDApLGFbNDcxNDldPTB8c2kobCwxLDEwMTQxOCwwKSxhWzQ3MTU3XT0wfHNpKGwsMSwx''@;'; put 'put ''NDEwODIsMCksYVs0NzE1MF09MHxzaShsLDEsMTAxNDI4LDApLGFbNDcxNTFdPTB8c2kobCwxLDEwMTQzNywwKSxhWzQ3MTUyXT0wfHNpKGwsMSwxMDE0NDYsMCksYj0wfHNpKGwsMSwxMDgyMjQsMCksYVs0NzE1NF09YixifHwoYVs0NzE1NF09MHxzaShsLDEsMTA4MjI0LDEwNTQ5MykpLGFb''@;'; put 'put ''NDcxNTVdPTB8c2kobCwxLDEwMTQ1NiwwKSxhWzQ3MTU4XT0wfHNpKGwsMSwxMDEzMDQsMCksYVs0NzE3Ml09MHxzaShsLDEsMTAxNDYzLDApLGFbNDcxNjFdPTB8c2kobCwxLDEwMTQwOSwwKSxhWzQ3MTUzXT0wfHNpKGwsMSwxMDU0OTYsMCksYVs0NzE1OV09MHxzaShsLDEsMTQxMDc2LDAp''@;'; put 'put ''LGFbNDcxNjBdPTB8c2kobCwxLDEwMTQ3MiwwKSxhWzQ3MTYzXT0wfHNpKGwsMSwxMDE0ODQsMCksYVs0NzE2Ml09MHxzaShsLDEsMTAxMzQ4LDApLGFbNDcxNjRdPTB8c2kobCwxLDEwMTQ4OSwwKSxhWzQ3MTY1XT0wfHNpKGwsMSwxNDEwMjQsMCksYVs0NzE2Nl09MHxzaShsLDEsMTM3Mjk3''@;'; put 'put ''LDApLGFbNDcxNTZdPTB8c2kobCwxLDEwMTUwMCwwKSxhWzQ3MTY3XT0wfHNpKGwsMSwxMDE1MTAsMCksYVs0NzE2OF09MHxzaShsLDEsMTAxNTE2LDApLGFbNDcxNjldPTB8c2kobCwxLDEwMTUyMiwwKSxhWzQ3MTcwXT0wfHNpKGwsMSwxMDE1MzAsMCksYVs0NzE3MV09MHxzaShsLDEsMTAx''@;'; put 'put ''NTM5LDApLGFbNDcxNzNdPTB8c2kobCwxLDE0MTAzNCwwKSxhWzQ3MTc0XT0wfHNpKGwsMiwxMDE1NDEsMCksYVs0NzE3Nl09MHxzaShsLDIsMTQwODIzLDApLGFbNDcxNzddPTB8c2kobCwyLDEwMTQxOCwwKSxhWzQ3MTc5XT0wfHNpKGwsMiwxMDE0MjgsMCksYVs0NzE4MF09MHxzaShsLDIs''@;'; put 'put ''MTAxNDM3LDApLGFbNDcxODFdPTB8c2kobCwyLDEwMTQ0NiwwKSxhWzQ3MTgyXT0wfHNpKGwsMiwxMDgyMjQsMCksYVs0NzE4M109MHxzaShsLDIsMTAxNDU2LDApLGFbNDcxOTJdPTB8c2kobCwyLDEwMTU0OCwwKSxhWzQ3MTg0XT0wfHNpKGwsMiwxMDE1NTksMCksYVs0NzE5NV09MHxzaShs''@;'; put 'put ''LDIsMTAxNTYzLDApLGFbNDcxOTZdPTB8c2kobCwyLDEwMTU3MywwKSxhWzQ3MTk3XT0wfHNpKGwsMiwxMDE1ODMsMCksYVs0NzE5OF09MHxzaShsLDIsMTAxNTkzLDApLGFbNDcxOTldPTB8c2kobCwyLDEwMTYwMywwKSxhWzQ3MjAwXT0wfHNpKGwsMiwxMDE2MTcsMCksYVs0NzIwMV09MHxz''@;'; put 'put ''aShsLDIsMTAxNjMxLDApLGFbNDcyMDJdPTB8c2kobCwyLDEwMTY0NiwwKSxhWzQ3MjAzXT0wfHNpKGwsMiwxMDE2NjAsMCksYVs0NzE3NV09MHxzaShsLDIsMTAxNjcxLDApLGFbNDcxODddPTB8c2kobCwyLDEwMTMwNCwwKSxhWzQ3MTg1XT0wfHNpKGwsMiwxNDEwODIsMCksYVs0NzE4Nl09''@;'; put 'put ''MHxzaShsLDIsMTAxNjc4LDApLGFbNDcxODhdPTB8c2kobCwyLDEwMTY4NywwKSxhWzQ3MTg5XT0wfHNpKGwsMiwxMDE2OTcsMCksYVs0NzE5MF09MHxzaShsLDIsMTAxNTEwLDApLGFbNDcxOTFdPTB8c2kobCwyLDEwMTUyMiwwKSxhWzQ3MjA0XT0wfHNpKGwsMiwxMDE3MDgsMCksYVs0NzIw''@;'; put 'put ''NV09MHxzaShsLDIsMTAxNzE3LDApLGFbNDcyMDZdPTB8c2kobCwyLDEwMTQ2MywwKSxmPTB8ZnVuY3Rpb24gTlQobCl7dmFyIHAsbSx3LGM9MCxmPTAsQT0wO3JldHVybiB3PWxlLGxlPWxlKzE2fDAsbT13Kzh8MCxwPXcsMCE9KDB8KGM9MHxMaShsfD0wLDk5Nzk2KSkpJiYwIT0oMHxmZVtj''@;'; put 'put ''Pj4wXSl8fDAhPSgwfChjPTB8TGkobCw5OTgwOCkpKSYmMCE9KDB8ZmVbYz4+MF0pPyhmPWMsQT01KTpjPTAsNT09KDB8QSkmJigoYz0wfEdoKGYsMCwxMjApKXx8KGFbcD4+Ml09MHx0aShsKSwkcigwLDk5ODE1LHApLGFbbT4+Ml09ZiwkcigzLDk5ODY4LG0pKSksbGU9dywwfGN9KGwpLGFb''@;'; put 'put ''ODgrKDB8YVs4KygwfGFbaz4+Ml0pPj4yXSk+PjJdPWYsMHwoZj0wfExpKGwsMTQxMDYwKSkmJjB8ZmVbZj4+MF0mJihsPTB8bTIoZixsKSxhWzkyKygwfGFbOCsoMHxhW2s+PjJdKT4+Ml0pPj4yXT1sKSxsZT1NfShjLDEmYVthW2wrMTgwPj4yXT4+Ml0pLGY9MHxhWzgrKDB8YVtBPj4yXSk+''@;'; put 'put ''PjJdLGFbOCsoMHxhWzE2KygwfGRpKGMpKT4+Ml0pPj4yXT1mLGZ1bmN0aW9uIG9sZSgpe3ZhciBsLGMsZjtsPWxlLGxlPWxlKzMyfDAsYz1sKzE2fDAsYVsoZj1sKT4+Ml09MCxhW2YrND4+Ml09MCxhW2YrOD4+Ml09MCxhW2YrMTI+PjJdPTAsYVtjPj4yXT1hW2Y+PjJdLGFbYys0Pj4yXT1h''@;'; put 'put ''W2YrND4+Ml0sYVtjKzg+PjJdPWFbZis4Pj4yXSxhW2MrMTI+PjJdPWFbZisxMj4+Ml0sb0ooMCxjKSxhW2M+PjJdPWFbZj4+Ml0sYVtjKzQ+PjJdPWFbZis0Pj4yXSxhW2MrOD4+Ml09YVtmKzg+PjJdLGFbYysxMj4+Ml09YVtmKzEyPj4yXSxmTigwLGMpLGFbYz4+Ml09YVtmPj4yXSxhW2Mr''@;'; put 'put ''ND4+Ml09YVtmKzQ+PjJdLGFbYys4Pj4yXT1hW2YrOD4+Ml0sYVtjKzEyPj4yXT1hW2YrMTI+PjJdLEtRKDAsYyksbGU9bH0oKSwwfChmPTB8YVtwPj4yXSkmJihDb1sxMjcmZl0oYyksMHwodz0wfGFbcCs0Pj4yXSkpJiYoYVsxNDgrKDB8YVtBPj4yXSk+PjJdPXcpLHNjKDApLGY9MCk6Zj0t''@;'; put 'put ''MSxsZT1iLDB8Zn0obCxjKSk/bD0tMTooZj0xNisobD0wfGFbYysxNj4+Ml0pfDAsMHxmZVs4MSsoMHxhW2wrOD4+Ml0pPj4wXT8oTT0rX1tmPj4zXSxEPStfW2wrNDA+PjNdLFI9K19bbCszMj4+M10sYVtBPj4yXT1+figoaz0rX1tsKzI0Pj4zXSkrKGs+PTA/LjU6LS41KSksYVtBKzQ+PjJd''@;'; put 'put ''PX5+KE0rKE0+PTA/LjU6LS41KSksYVtBKzg+PjJdPX5+KEQrKEQ+PTA/LjU6LS41KSksYVtBKzEyPj4yXT1+fihSKyhSPj0wPy41Oi0uNSkpLG9vKG0sOTg4OTksQSkpOihEPStfW2wrMjQ+PjNdLE09K19bbCszMj4+M10saz0rX1tsKzQwPj4zXSxhW3c+PjJdPX5+KChSPStfW2Y+PjNdKSso''@;'; put 'put ''Uj49MD8uNTotLjUpKSxhW3crND4+Ml09fn4oRCsoRD49MD8uNTotLjUpKSxhW3crOD4+Ml09fn4oTSsoTT49MD8uNTotLjUpKSxhW3crMTI+PjJdPX5+KGsrKGs+PTA/LjU6LS41KSksb28obSw5ODg5OSx3KSksSTUoYywxMDI2NzEsbSwxOTUwNTkpLGw9MCk6KGw9MHxXRyhsLDEsZiksYVtw''@;'; put 'put ''Pj4yXT1mLGFbcCs0Pj4yXT1sLCRyKDEsMTExMjMzLHApLGw9LTEpLGxlPWIsMHxsfWZ1bmN0aW9uIGtyZShsLGMsZixwLG0pe3B8PTAsbXw9MDt2YXIgdyxrLEQsQT0wLGI9MCxNPTA7RD1sZSxsZT1sZSsxNnwwLHc9RCs4fDAsQT1ELGM9MHxhWzYwKyhjfD0wKT4+Ml0sSVQobHw9MCxmfD0w''@;'; put 'put ''KSxhWzU2KyhrPTB8YVtsKzE2ND4+Ml0pPj4yXT0wfGs5KGssMHxhW2srNTI+PjJdKSwwIT0oMHxoMChjLDEzNzQ4MywwLDEpKSYmMCE9KDB8YVs4KygwfGFbYysxNj4+Ml0pPj4yXSl8fDY3MTA4ODY0JmFbaysxNTI+PjJdP009NTooWG0oOTg5MTEsQSksYz0tMSk7ZG97aWYoNT09KDB8TSkp''@;'; put 'put ''e2lmKDB8cCYmKGI9MHxGMCg0MDk2KSxhW3A+PjJdPWIsMHxiKSl7YVsoQT1rKzQwfDApPj4yXT1iLGFbays0ND4+Ml09NDA5NixhWyhmPWsrNDh8MCk+PjJdPTAsYz0wfGcyKGwsYyksUzkoayksY3x8KGFbcD4+Ml09YVtBPj4yXSxhW20+PjJdPWFbZj4+Ml0pLHNGKGwpO2JyZWFrfSRyKDEs''@;'; put 'put ''OTg5MzIsdyksYz0tMX19d2hpbGUoMCk7cmV0dXJuIGxlPUQsMHxjfWZ1bmN0aW9uIFJUKGwsYyl7VTgobHw9MCwwLGN8PTApfWZ1bmN0aW9uIFBBKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIEhlLFZlLHFlLHJ0LFdlLGt0LG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxS''@;'; put 'put ''PTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxhdD0wLFN0PTA7a3Q9bGUsbGU9bGUrNDI4OHwwLFdlPWt0Kzh8MCxydD1rdCxhdD00LFN0PTB8RjAoNDApLGFbU3Q+PjJdPTAsSGU9a3QrNDE1MnwwLFZlPWt0KzQxNDh8MCxxZT1rdCs0MTI4fDAsYj1rdCs0MTEyfDAs''@;'; put 'put ''az1rdCsxNnwwLE1uPTAsdz0wfGEwKDI0LDB8bCksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbbT4+Ml0sMHxTdCwwfGF0KSl8fHplKDB8bSwwfHhuKSxEbj14bik6QT0tMTtlOmRve2lmKDEhPSgwfEEpKXtpZighdyl7YVtjPj4yXT0wLG09MDticmVha31pZihN''@;'; put 'put ''bj0wLEQ9MHxKcygyOSwwfGYsMHxWZSwwfEhlKSxtPU1uLE1uPTAsMCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfGdpKDB8YVttPj4yXSwwfFN0LDB8YXQpKXx8emUoMHxtLDB8eG4pLERuPXhuKTpBPS0xLDEhPSgwfEEpKWlmKE1uPTAsTT0wfGEwKDIzLDQwKSxtPU1uLE1uPTAsMCE9KDB8bSkm''@;'; put 'put ''MCE9KDB8eG4pPygoQT0wfGdpKDB8YVttPj4yXSwwfFN0LDB8YXQpKXx8emUoMHxtLDB8eG4pLERuPXhuKTpBPS0xLDEhPSgwfEEpKWlmKE1uPTAsY3UoNywwfHFlLDB8YiwwfGssMjQsODUpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW20+PjJdLDB8U3QsMHxh''@;'; put 'put ''dCkpfHx6ZSgwfG0sMHx4biksRG49eG4pOkE9LTEsMSE9KDB8QSkpaWYoTW49MCxmPTB8YTAoMjUsMHxsKSxtPU1uLE1uPTAsMCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfGdpKDB8YVttPj4yXSwwfFN0LDB8YXQpKXx8emUoMHxtLDB8eG4pLERuPXhuKTpBPS0xLDEhPSgwfEEpKXtmb3Iodz0w''@;'; put 'put ''fGFbKGI9cWUrMTZ8MCk+PjJdLG09ZjttOyl7aWYoTW49MCxGbCgwfHcsMHxtLDApLEE9TW4sTW49MCwwIT0oMHxBKSYwIT0oMHx4bik/KChmPTB8Z2koMHxhW0E+PjJdLDB8U3QsMHxhdCkpfHx6ZSgwfEEsMHx4biksRG49eG4pOmY9LTEsMT09KDB8Zikpe1JlPTAsTGU9YixPZT1NLGJlPUQs''@;'; put 'put ''bT1EbixNPTE1O2JyZWFrIGV9aWYoTW49MCxtPTB8RmwoODYsMHxsLDB8bSksQT1NbixNbj0wLDAhPSgwfEEpJjAhPSgwfHhuKT8oKGY9MHxnaSgwfGFbQT4+Ml0sMHxTdCwwfGF0KSl8fHplKDB8QSwwfHhuKSxEbj14bik6Zj0tMSwxPT0oMHxmKSl7UmU9MCxMZT1iLE9lPU0sYmU9RCxtPURu''@;'; put 'put ''LE09MTU7YnJlYWsgZX19U3Q9MHxQZigxODgwNjgsMSwwfFN0LDB8YXQpLGF0PURuLG09TW49MCxNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbbT4+Ml0sMHxTdCwwfGF0KSl8fHplKDB8bSwwfHhuKSxEbj14bik6QT0tMSwxPT0oMHxBKT8oUmU9TSxMZT1iLE9lPU0sYmU9''@;'; put 'put ''RCxtPURuLE09MTUpOihSZT1NLExlPWIsT2U9TSxiZT1ELG09MCxNPTE1KX1lbHNlIFJlPTAsTGU9MCxPZT1NLGJlPUQsbT1EbixNPTE1O2Vsc2UgUmU9MCxMZT0wLE9lPU0sYmU9RCxtPURuLE09MTU7ZWxzZSBSZT0wLExlPTAsT2U9TSxiZT1ELG09RG4sTT0xNTtlbHNlIFJlPTAsTGU9MCxP''@;'; put 'put ''ZT0wLGJlPUQsbT1EbixNPTE1fWVsc2UgUmU9MCxMZT0wLE9lPTAsYmU9MCxtPURuLE09MTV9d2hpbGUoMCk7ZG97aWYoMTU9PSgwfE0pKXtlOmZvcig7Oyl7dDpkb3tpZihtKU09MSxrPTAsRD1SZSxiPTAsdz1PZSxmPU9lO2Vsc2V7aWYoTW49MCxmPTB8YTAoMjUsMHxsKSxtPU1uLE1uPTAs''@;'; put 'put ''MCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfGdpKDB8YVttPj4yXSwwfFN0LDB8YXQpKXx8emUoMHxtLDB8eG4pLERuPXhuKTpBPS0xLDE9PSgwfEEpKXttPURuLGJlPXE9YmUsT2U9cGU9T2UsTGU9Z2U9TGUsUmU9TT1SZSxNPTE1O2NvbnRpbnVlIGV9Zm9yKGdlPWJlKygwfGFbVmU+PjJdKXww''@;'; put 'put ''LGs9MCxNPTAsYj0wO2Y7KXtpZihNbj0wLG09MHxGbCgwfGFbTGU+PjJdLDB8ZiwtMSksQT1NbixNbj0wLDAhPSgwfEEpJjAhPSgwfHhuKT8oKHc9MHxnaSgwfGFbQT4+Ml0sMHxTdCwwfGF0KSl8fHplKDB8QSwwfHhuKSxEbj14bik6dz0tMSwxPT0oMHx3KSl7bT1EbixiZT1xPWJlLE9lPXBl''@;'; put 'put ''PU9lLExlPWdlPUxlLFJlPU09UmUsTT0xNTtjb250aW51ZSBlfWlmKDA9PSgwfG0pJiYzPT0oMHxmZVsxMTkrKDB8YVtmKzE2Pj4yXSk+PjBdKSl7aWYoTSl3PU07ZWxzZXtpZihNbj0wLGFbcnQ+PjJdPWIsSnMoMzAsMHxnZSwxMzczOTUsMHxydCksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgw''@;'; put 'put ''fHhuKT8oKEE9MHxnaSgwfGFbbT4+Ml0sMHxTdCwwfGF0KSl8fHplKDB8bSwwfHhuKSxEbj14bik6QT0tMSwxPT0oMHxBKSl7bT1EbixiZT1xPWJlLE9lPXBlPU9lLExlPWdlPUxlLFJlPU09UmUsTT0xNTtjb250aW51ZSBlfWlmKE1uPTAsdz0wfEpzKDMxLDB8bCwwfGJlLDEpLG09TW4sTW49''@;'; put 'put ''MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW20+PjJdLDB8U3QsMHxhdCkpfHx6ZSgwfG0sMHx4biksRG49eG4pOkE9LTEsMT09KDB8QSkpe209RG4sYmU9cT1iZSxPZT1wZT1PZSxMZT1nZT1MZSxSZT1NPVJlLE09MTU7Y29udGludWUgZX1pZihNbj0wLHRhKDUzLDB8dywxMzc0''@;'; put 'put ''ODMsMjgwLDEpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW20+PjJdLDB8U3QsMHxhdCkpfHx6ZSgwfG0sMHx4biksRG49eG4pOkE9LTEsMT09KDB8QSkpe209RG4sYmU9cT1iZSxPZT1wZT1PZSxMZT1nZT1MZSxSZT1NPVJlLE09MTU7Y29udGludWUgZX1hW1Jl''@;'; put 'put ''KyhiPDwyKT4+Ml09dyxrPTEsYj1iKzF8MH1pZihNbj0wLHRhKDU0LDB8bCwwfGYsMHx3LDB8cWUpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW20+PjJdLDB8U3QsMHxhdCkpfHx6ZSgwfG0sMHx4biksRG49eG4pOkE9LTEsMT09KDB8QSkpe209RG4sYmU9cT1i''@;'; put 'put ''ZSxPZT1wZT1PZSxMZT1nZT1MZSxSZT1NPVJlLE09MTU7Y29udGludWUgZX19ZWxzZSB3PU07aWYoTW49MCxmPTB8RmwoODYsMHxsLDB8ZiksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbbT4+Ml0sMHxTdCwwfGF0KSl8fHplKDB8bSwwfHhuKSxEbj14bik6QT0t''@;'; put 'put ''MSwxPT0oMHxBKSl7bT1EbixiZT1xPWJlLE9lPXBlPU9lLExlPWdlPUxlLFJlPU09UmUsTT0xNTtjb250aW51ZSBlfU09d31pZihNbj0wLGY9MHxhMCgyNSwwfGwpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW20+PjJdLDB8U3QsMHxhdCkpfHx6ZSgwfG0sMHx4''@;'; put 'put ''biksRG49eG4pOkE9LTEsMT09KDB8QSkpe209RG4sYmU9cT1iZSxPZT1wZT1PZSxMZT1nZT1MZSxSZT1NPVJlLE09MTU7Y29udGludWUgZX1mb3Iodz0xMCxEPVJlLFI9T2UsRz1PZSxwZT1PZTs7KXtpZighZil7TT0wLHc9RyxmPXBlO2JyZWFrIHR9aWYoTW49MCxtPTB8RmwoMHxhW0xlPj4y''@;'; put 'put ''XSwwfGYsLTEpLEE9TW4sTW49MCwwIT0oMHxBKSYwIT0oMHx4bik/KChNPTB8Z2koMHxhW0E+PjJdLDB8U3QsMHxhdCkpfHx6ZSgwfEEsMHx4biksRG49eG4pOk09LTEsMT09KDB8TSkpe209RG4sYmU9cT1iZSxPZT1wZT1PZSxMZT1nZT1MZSxSZT1NPVJlLE09MTU7Y29udGludWUgZX1pZiht''@;'; put 'put ''KU09cGU7ZWxzZXtpZihNbj0wLGFbV2U+PjJdPWIsSnMoMzAsMHxnZSwxMzczOTUsMHxXZSksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbbT4+Ml0sMHxTdCwwfGF0KSl8fHplKDB8bSwwfHhuKSxEbj14bik6QT0tMSwxPT0oMHxBKSl7bT1EbixiZT1xPWJlLE9l''@;'; put 'put ''PXBlPU9lLExlPWdlPUxlLFJlPU09UmUsTT0xNTtjb250aW51ZSBlfWlmKE1uPTAscT0wfEpzKDMxLDB8bCwwfGJlLDEpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW20+PjJdLDB8U3QsMHxhdCkpfHx6ZSgwfG0sMHx4biksRG49eG4pOkE9LTEsMT09KDB8QSkp''@;'; put 'put ''e209RG4sYmU9cT1iZSxPZT1wZT1PZSxMZT1nZT1MZSxSZT1NPVJlLE09MTU7Y29udGludWUgZX1pZihNbj0wLHRhKDUzLDB8cSwxMzc0ODMsMjgwLDEpLEE9TW4sTW49MCwwIT0oMHxBKSYwIT0oMHx4bik/KChtPTB8Z2koMHxhW0E+PjJdLDB8U3QsMHxhdCkpfHx6ZSgwfEEsMHx4biksRG49''@;'; put 'put ''eG4pOm09LTEsMT09KDB8bSkpe209RG4sYmU9cT1iZSxPZT1wZT1PZSxMZT1nZT1MZSxSZT1NPVJlLE09MTU7Y29udGludWUgZX1pZihNbj0wLHRhKDU0LDB8bCwwfGYsMHxxLDB8cWUpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW20+PjJdLDB8U3QsMHxhdCkp''@;'; put 'put ''fHx6ZSgwfG0sMHx4biksRG49eG4pOkE9LTEsMT09KDB8QSkpe209RG4sYmU9cT1iZSxPZT1wZT1PZSxMZT1nZT1MZSxSZT1NPVJlLE09MTU7Y29udGludWUgZX1pZigoMHxiKT09KDB8dykpe2lmKHc9Yjw8MSxNbj0wLE09MHxGbCg4NywwfFIsYjw8M3wwKSxtPU1uLE1uPTAsMCE9KDB8bSkm''@;'; put 'put ''MCE9KDB8eG4pPygoQT0wfGdpKDB8YVttPj4yXSwwfFN0LDB8YXQpKXx8emUoMHxtLDB8eG4pLERuPXhuKTpBPS0xLDE9PSgwfEEpKXttPURuLGJlPXE9YmUsT2U9cGU9T2UsTGU9Z2U9TGUsUmU9TT1SZSxNPTE1O2NvbnRpbnVlIGV9bT1NLFI9TSxHPU0sQT1NfWVsc2UgbT1ELEE9cGU7YVtt''@;'; put 'put ''KyhiPDwyKT4+Ml09cSxEPW0sYj1iKzF8MCxNPUF9aWYoTW49MCxmPTB8RmwoODYsMHxsLDB8ZiksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbbT4+Ml0sMHxTdCwwfGF0KSl8fHplKDB8bSwwfHhuKSxEbj14bik6QT0tMSwxPT0oMHxBKSl7bT1EbixiZT1xPWJl''@;'; put 'put ''LE9lPXBlPU9lLExlPWdlPUxlLFJlPU09UmUsTT0xNTtjb250aW51ZSBlfXBlPU19fX13aGlsZSgwKTtpZihNbj0wLHNzKDEwOCwwfHFlKSxtPU1uLE1uPTAsMCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfGdpKDB8YVttPj4yXSwwfFN0LDB8YXQpKXx8emUoMHxtLDB8eG4pLERuPXhuKTpBPS0x''@;'; put 'put ''LDEhPSgwfEEpKWlmKCgwfGJlKT09KDB8SGUpfHwoTW49MCxzcygxMDUsMHxiZSksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbbT4+Ml0sMHxTdCwwfGF0KSl8fHplKDB8bSwwfHhuKSxEbj14bik6QT0tMSwxIT0oMHxBKSkpe2lmKCFNKXtpZihNbj0wLG09MHxG''@;'; put 'put ''bCg4NywwfGYsYjw8MnwwKSxBPU1uLE1uPTAsMCE9KDB8QSkmMCE9KDB8eG4pPygoZj0wfGdpKDB8YVtBPj4yXSwwfFN0LDB8YXQpKXx8emUoMHxBLDB8eG4pLERuPXhuKTpmPS0xLDE9PSgwfGYpKXttPURuLGJlPXE9YmUsT2U9cGU9T2UsTGU9Z2U9TGUsUmU9TT1SZSxNPTE1O2NvbnRpbnVl''@;'; put 'put ''fU09NTg7YnJlYWt9Zm9yKGFbYz4+Ml09MCxtPTA7ISgoMHxtKT49KDB8YikpOyl7aWYoTW49MCxhMCgyNiwwfGFbRCsobTw8Mik+PjJdKSxBPU1uLE1uPTAsMCE9KDB8QSkmMCE9KDB8eG4pPygoZj0wfGdpKDB8YVtBPj4yXSwwfFN0LDB8YXQpKXx8emUoMHxBLDB8eG4pLERuPXhuKTpmPS0x''@;'; put 'put ''LDE9PSgwfGYpKXttPURuLGJlPXE9YmUsT2U9cGU9T2UsTGU9Z2U9TGUsUmU9TT1SZSxNPTE1O2NvbnRpbnVlIGV9bT1tKzF8MH1pZihNbj0wLHNzKDEwNSwwfHcpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW20+PjJdLDB8U3QsMHxhdCkpfHx6ZSgwfG0sMHx4''@;'; put 'put ''biksRG49eG4pOkE9LTEsMSE9KDB8QSkpe009NTY7YnJlYWt9bT1EbixiZT1xPWJlLE9lPXBlPU9lLExlPWdlPUxlLFJlPU09UmUsTT0xNX1lbHNlIG09RG4sYmU9cT1iZSxPZT1wZT1PZSxMZT1nZT1MZSxSZT1NPVJlLE09MTU7ZWxzZSBtPURuLGJlPXE9YmUsT2U9cGU9T2UsTGU9Z2U9TGUs''@;'; put 'put ''UmU9TT1SZSxNPTE1fWlmKDU2PT0oMHxNKSl7bT0wO2JyZWFrfWlmKDU4PT0oMHxNKSl7YVtjPj4yXT1iLGZlW3A+PjBdPWs7YnJlYWt9fX13aGlsZSgwKTtyZXR1cm4gRnQoMHxTdCksbGU9a3QsMHxtfWZ1bmN0aW9uIFNyZShsLGMsZil7Y3w9MCxmfD0wO3ZhciBwLG09MDtyZXR1cm4gMCE9''@;'; put 'put ''KDB8KGx8PTApKSYmMCE9KDB8ZnVuY3Rpb24gSDYobCl7bHw9MDt2YXIgYz0wO2U6Zm9yKDs7KXtzd2l0Y2goYz1sLGw9bCsxfDAsKGM9MHxmZVtjPj4wXSk8PDI0Pj4yNCl7Y2FzZSA5NTpjb250aW51ZSBlO2Nhc2UgMDpsPTE7YnJlYWsgZX1pZighKDB8aXYoMjU1JmMpKSl7bD0wO2JyZWFr''@;'; put 'put ''fX1yZXR1cm4gMHxsfShsKSl8fChsPTk4OTg4KSwoMHwocD0wfFVvKGwpKSk+PTEwND8oZj0wfFFuKHArMjV8MCkpP209NjpmPTA6bT02LDY9PSgwfG0pJiYocmQoZixsKSxhW2M+PjJdPXApLDB8Zn1mdW5jdGlvbiBlVyhsLGMsZixwLG0pe2x8PTAscHw9MCxtfD0wLGFbKGN8PTApPj4yXT1m''@;'; put 'put ''fD0wLGFbYys0Pj4yXT1mKzQwOTYsYVtjKzEyPj4yXT0wLGFbYys4Pj4yXT0wLGFbbD4+Ml09YyxhW2wrND4+Ml09YyxhW2wrOD4+Ml09ZixhW2wrMTI+PjJdPXAsYVtsKzE2Pj4yXT1tfWZ1bmN0aW9uIHRXKGwsYyxmLHApe2x8PTAsZnw9MDt2YXIgYixrLG09MCxBPTAsdz0wLE09MDtuVyhw''@;'; put 'put ''fD0wLGN8PTApLGI9cCsxMnwwLGs9cCsxNnwwLGM9MDtlOmZvcig7TT0wfEVyZShwKSxNOylmb3IoYz1jKzF8MCxtPTB8YVtiPj4yXSwwfG0mJkdzWzYzJm1dKE0sZiksdz0wfE1zKGwsTSk7Oyl7aWYoIXcpY29udGludWUgZTsoMHwobT0wfGFbKDM9PSgwfChBPTMmYVt3Pj4yXSkpP3c6dys0''@;'; put 'put ''OHwwKSs0MD4+Ml0pKT09KDB8TSkmJihtPTB8YVsoMj09KDB8QSk/dzp3Ky00OHwwKSs0MD4+Ml0pLDB8QmlbMTI3JmFbaz4+Ml1dKG0sLTEpfHxuVyhwLG0pLHc9MHxWcyhsLHcsTSl9cmV0dXJuIDB8Y31mdW5jdGlvbiBNcmUobCl7dmFyIGM9MDtmb3IobD0wfGFbMTIrKDB8YVsobHw9MCk+''@;'; put 'put ''PjJdKT4+Ml07bDspYz0wfGFbbCsxMj4+Ml0sem1lKGwpLGw9Y31mdW5jdGlvbiB6bWUobCl7RnQoMHxhWyhsfD0wKT4+Ml0pLEZ0KGwpfWZ1bmN0aW9uIG5XKGwsYyl7Y3w9MDt2YXIgbSxBLGIsTSxmPTAscD0wLHc9MCxrPTA7aWYoTT1sZSxsZT1sZSsxNnwwLGs9TSs4fDAsbT1NLCgwfGFb''@;'; put 'put ''KEE9OCsobHw9MCl8MCk+PjJdKT09KDB8YVs0KyhmPTB8YVsoYj1sKzR8MCk+PjJdKT4+Ml0pKXtmPTB8YVtmKzEyPj4yXTtkb3tpZihmKXc9ZjtlbHNle2lmKChwPTB8UW4oMTYpKXx8KCRyKDEsOTg5NjksbSksemUoMTg4MDY4LDEpKSxhW3ArOD4+Ml09YVtiPj4yXSxhW3ArMTI+PjJdPTAs''@;'; put 'put ''Zj0wfFFuKDRlNiksYVtwPj4yXT1mLGYpe2FbcCs0Pj4yXT1mKzRlNixhWzEyKygwfGFbYj4+Ml0pPj4yXT1wLHc9cDticmVha30kcigxLDk4OTY5LGspLHplKDE4ODA2OCwxKX19d2hpbGUoMCk7YVtiPj4yXT13LGFbQT4+Ml09YVt3Pj4yXX1CaVsxMjcmYVtsKzE2Pj4yXV0oYywxKSxhW0E+''@;'; put 'put ''PjJdPTQrKGs9MHxhW0E+PjJdKSxhW2s+PjJdPWMsbGU9TX1mdW5jdGlvbiBFcmUobCl7dmFyIGYscCxtLGM9MCxBPTA7cmV0dXJuKDB8KGM9MHxhWyhtPTgrKGx8PTApfDApPj4yXSkpPT0oMHxhWyhwPTB8YVsoZj1sKzR8MCk+PjJdKT4+Ml0pPygwfHApPT0oMHxhW2w+PjJdKT9jPTA6KGFb''@;'; put 'put ''Zj4+Ml09Yz0wfGFbcCs4Pj4yXSxhW20+PjJdPWM9MHxhW2MrND4+Ml0sQT00KTpBPTQsND09KDB8QSkmJihhW20+PjJdPWM9YystNHwwLGM9MHxhW2M+PjJdKSwwfGN9ZnVuY3Rpb24gclcobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBiZSxPZSxMZSxSZSxxZSxwPTAsbT0wLEE9MCx3PTAs''@;'; put 'put ''Yj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxIZT0wLFZlPTA7cWU9bGUsbGU9bGUrNDI3MnwwLFJlPXFlLEhlPTQsVmU9MHxGMCg0MCksYVtWZT4+Ml09MCxiZT1xZSs0MTQ0fDAsT2U9cWUrNDE0MHwwLExlPXFlKzQxMjB8MCx3PXFlKzQxMDR8MCxiPXFlKzh8MCxNbj0w''@;'; put 'put ''LG09MHxhMCgyNCwwfGwpLEE9TW4sTW49MCwwIT0oMHxBKSYwIT0oMHx4bik/KChwPTB8Z2koMHxhW0E+PjJdLDB8VmUsMHxIZSkpfHx6ZSgwfEEsMHx4biksRG49eG4pOnA9LTE7ZTpkb3tpZigxIT0oMHxwKSlpZihtKWlmKE1uPTAsTT0wfEpzKDI5LDB8ZiwwfE9lLDB8YmUpLHA9TW4sTW49''@;'; put 'put ''MCwwIT0oMHxwKSYwIT0oMHx4bik/KGY9MHxnaSgwfGFbcD4+Ml0sMHxWZSwwfEhlKSxmfHx6ZSgwfHAsMHx4biksRG49eG4pOmY9LTEsMSE9KDB8ZikpaWYoTW49MCxrPTB8YTAoMjMsNDApLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KGY9MHxnaSgwfGFbcD4+Ml0sMHxWZSwwfEhl''@;'; put 'put ''KSxmfHx6ZSgwfHAsMHx4biksRG49eG4pOmY9LTEsMSE9KDB8ZikpaWYoTW49MCxjdSg3LDB8TGUsMHx3LDB8YiwyNCw4NSkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oZj0wfGdpKDB8YVtwPj4yXSwwfFZlLDB8SGUpLGZ8fHplKDB8cCwwfHhuKSxEbj14bik6Zj0tMSwxIT0oMHxm''@;'; put 'put ''KSlpZihNbj0wLG09MHxhMCgyNSwwfGwpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KGY9MHxnaSgwfGFbcD4+Ml0sMHxWZSwwfEhlKSxmfHx6ZSgwfHAsMHx4biksRG49eG4pOmY9LTEsMSE9KDB8Zikpe2ZvcihBPTB8YVsodz1MZSsxNnwwKT4+Ml0scD1tO3A7KXtpZihNbj0wLEZs''@;'; put 'put ''KDB8QSwwfHAsMCksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKG09MHxnaSgwfGFbZj4+Ml0sMHxWZSwwfEhlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6bT0tMSwxPT0oMHxtKSl7Z2U9dyxwZT1rLHE9TSxwPURuLGs9MTQ7YnJlYWsgZX1pZihNbj0wLHA9MHxGbCg4NiwwfGwsMHxw''@;'; put 'put ''KSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygobT0wfGdpKDB8YVtmPj4yXSwwfFZlLDB8SGUpKXx8emUoMHxmLDB8eG4pLERuPXhuKTptPS0xLDE9PSgwfG0pKXtnZT13LHBlPWsscT1NLHA9RG4saz0xNDticmVhayBlfX1WZT0wfFBmKDE4ODA2OCwxLDB8VmUsMHxIZSksSGU9RG4s''@;'; put 'put ''cD1Nbj0wLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygoZj0wfGdpKDB8YVtwPj4yXSwwfFZlLDB8SGUpKXx8emUoMHxwLDB8eG4pLERuPXhuKTpmPS0xLDE9PSgwfGYpPyhnZT13LHBlPWsscT1NLHA9RG4saz0xNCk6KGdlPXcscGU9ayxxPU0scD0wLGs9MTQpfWVsc2UgZ2U9MCxwZT1rLHE9''@;'; put 'put ''TSxwPURuLGs9MTQ7ZWxzZSBnZT0wLHBlPWsscT1NLHA9RG4saz0xNDtlbHNlIGdlPTAscGU9ayxxPU0scD1EbixrPTE0O2Vsc2UgZ2U9MCxwZT0wLHE9TSxwPURuLGs9MTQ7ZWxzZSBmPTAscD0wO2Vsc2UgZ2U9MCxwZT0wLHE9MCxwPURuLGs9MTR9d2hpbGUoMCk7ZTpkb3tpZigxND09KDB8''@;'; put 'put ''aykpe3Q6Zm9yKDs7KXtpZigwfHApe2lmKE1uPTAsc3MoMTA4LDB8TGUpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChmPTB8Z2koMHxhW3A+PjJdLDB8VmUsMHxIZSkpfHx6ZSgwfHAsMHx4biksRG49eG4pOmY9LTEsMT09KDB8Zikpe3A9RG4scT1SPXEscGU9Rz1wZSxnZT1rPWdl''@;'; put 'put ''LGs9MTQ7Y29udGludWV9aWYoTW49MCxzcygxMDUsMHxwZSkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKGY9MHxnaSgwfGFbcD4+Ml0sMHxWZSwwfEhlKSl8fHplKDB8cCwwfHhuKSxEbj14bik6Zj0tMSwxPT0oMHxmKSl7cD1EbixxPVI9cSxwZT1HPXBlLGdlPWs9Z2Usaz0xNDtj''@;'; put 'put ''b250aW51ZX1pZigoMHxxKT09KDB8YmUpKXtmPTAscD0wO2JyZWFrIGV9aWYoTW49MCxzcygxMDUsMHxxKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygoZj0wfGdpKDB8YVtwPj4yXSwwfFZlLDB8SGUpKXx8emUoMHxwLDB8eG4pLERuPXhuKTpmPS0xLDE9PSgwfGYpKXtwPURuLHE9''@;'; put 'put ''Uj1xLHBlPUc9cGUsZ2U9az1nZSxrPTE0O2NvbnRpbnVlfWs9MTk7YnJlYWt9aWYoTW49MCxtPTB8YTAoMjUsMHxsKSxwPU1uLE1uPTAsMCE9KDB8cCkmMCE9KDB8eG4pPygoZj0wfGdpKDB8YVtwPj4yXSwwfFZlLDB8SGUpKXx8emUoMHxwLDB8eG4pLERuPXhuKTpmPS0xLDEhPSgwfGYpKXtm''@;'; put 'put ''b3IoRz1xKygwfGFbT2U+PjJdKXwwLHc9MTAsTT1wZSxwPTAsaz1wZSxSPXBlO207KXtpZihNbj0wLGY9MHxGbCgwfGFbZ2U+PjJdLDB8bSwtMSksQT1NbixNbj0wLDAhPSgwfEEpJjAhPSgwfHhuKT8oKGI9MHxnaSgwfGFbQT4+Ml0sMHxWZSwwfEhlKSl8fHplKDB8QSwwfHhuKSxEbj14bik6''@;'; put 'put ''Yj0tMSwxPT0oMHxiKSl7cD1EbixxPVI9cSxwZT1HPXBlLGdlPWs9Z2Usaz0xNDtjb250aW51ZSB0fWlmKGYpYj1SO2Vsc2V7aWYoTW49MCxhW1JlPj4yXT1wLEpzKDMwLDB8RywxMzczOTUsMHxSZSksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbZj4+Ml0sMHxW''@;'; put 'put ''ZSwwfEhlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6QT0tMSwxPT0oMHxBKSl7cD1EbixxPVI9cSxwZT1HPXBlLGdlPWs9Z2Usaz0xNDtjb250aW51ZSB0fWlmKE1uPTAsRD0wfEpzKDMxLDB8bCwwfHEsMSksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbZj4+Ml0s''@;'; put 'put ''MHxWZSwwfEhlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6QT0tMSwxPT0oMHxBKSl7cD1EbixxPVI9cSxwZT1HPXBlLGdlPWs9Z2Usaz0xNDtjb250aW51ZSB0fWlmKE1uPTAsdGEoNTMsMHxELDEzNzQ4MywyODAsMSksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFb''@;'; put 'put ''Zj4+Ml0sMHxWZSwwfEhlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6QT0tMSwxPT0oMHxBKSl7cD1EbixxPVI9cSxwZT1HPXBlLGdlPWs9Z2Usaz0xNDtjb250aW51ZSB0fWlmKE1uPTAsdGEoNTQsMHxsLDB8bSwwfEQsMHxMZSksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKEE9MHxn''@;'; put 'put ''aSgwfGFbZj4+Ml0sMHxWZSwwfEhlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6QT0tMSwxPT0oMHxBKSl7cD1EbixxPVI9cSxwZT1HPXBlLGdlPWs9Z2Usaz0xNDtjb250aW51ZSB0fWlmKCgwfHApPT0oMHx3KSl7aWYodz1wPDwxLE1uPTAsYj0wfEZsKDg3LDB8ayxwPDwzfDApLGY9TW4sTW49''@;'; put 'put ''MCwwIT0oMHxmKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW2Y+PjJdLDB8VmUsMHxIZSkpfHx6ZSgwfGYsMHx4biksRG49eG4pOkE9LTEsMT09KDB8QSkpe3A9RG4scT1SPXEscGU9Rz1wZSxnZT1rPWdlLGs9MTQ7Y29udGludWUgdH1BPWIsaz1iLGY9Yn1lbHNlIEE9TSxmPVI7YVtBKyhwPDwy''@;'; put 'put ''KT4+Ml09RCxwPXArMXwwLE09QSxiPWZ9aWYoTW49MCxtPTB8RmwoODYsMHxsLDB8bSksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbZj4+Ml0sMHxWZSwwfEhlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6QT0tMSwxPT0oMHxBKSl7cD1EbixxPVI9cSxwZT1HPXBl''@;'; put 'put ''LGdlPWs9Z2Usaz0xNDtjb250aW51ZSB0fVI9Yn1pZihNbj0wLHNzKDEwOCwwfExlKSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygobT0wfGdpKDB8YVtmPj4yXSwwfFZlLDB8SGUpKXx8emUoMHxmLDB8eG4pLERuPXhuKTptPS0xLDEhPSgwfG0pKWlmKE1uPTAsZj0wfEZsKDg3LDB8''@;'; put 'put ''UixwPDwyfDApLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW20+PjJdLDB8VmUsMHxIZSkpfHx6ZSgwfG0sMHx4biksRG49eG4pOkE9LTEsMSE9KDB8QSkpe2lmKCgwfHEpPT0oMHxiZSkpYnJlYWsgZTtpZihNbj0wLHNzKDEwNSwwfHEpLG09TW4sTW49MCwwIT0o''@;'; put 'put ''MHxtKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW20+PjJdLDB8VmUsMHxIZSkpfHx6ZSgwfG0sMHx4biksRG49eG4pOkE9LTEsMSE9KDB8QSkpe2s9Mzk7YnJlYWt9cD1EbixxPVI9cSxwZT1HPXBlLGdlPWs9Z2Usaz0xNH1lbHNlIHA9RG4scT1SPXEscGU9Rz1wZSxnZT1rPWdlLGs9MTQ7ZWxz''@;'; put 'put ''ZSBwPURuLHE9Uj1xLHBlPUc9cGUsZ2U9az1nZSxrPTE0fWVsc2UgcD1EbixxPVI9cSxwZT1HPXBlLGdlPWs9Z2Usaz0xNH1pZigxOT09KDB8aykpe2Y9MCxwPTA7YnJlYWt9aWYoMzk9PSgwfGspKWJyZWFrfX13aGlsZSgwKTtyZXR1cm4gYVtjPj4yXT1wLEZ0KDB8VmUpLGxlPXFlLDB8Zn1m''@;'; put 'put ''dW5jdGlvbiB4cmUobCxjKXtjfD0wO3ZhciBmPTAscD0wLG09MDtmb3IoZj0wLG09MHxEdChsfD0wKTttOyl7Zm9yKHA9MHx3MChjLG0pO3A7KTB8WW4obCwwfGFbKDI9PSgzJmFbcD4+Ml18MCk/cDpwKy00OHwwKSs0MD4+Ml0sMCkmJihaZChsLHAsMSksZj1mKzF8MCkscD0wfFMwKGMscCk7''@;'; put 'put ''bT0wfHp0KGwsbSl9cmV0dXJuIDB8Zn1mdW5jdGlvbiBUcmUobCl7cmV0dXJuKGw9MHxhbyhsfD0wLDk4OTkzLDApKT8wfGFbbCs4Pj4yXTooUHIoOTg5OTgsOTkwMDEsNTI5LDk5MDEwKSwwKX1mdW5jdGlvbiBHbWUobCxjLGYpe2N8PTAsZnw9MDt2YXIgRyxxLGJlLE9lLHA9MCxBPTAsdz0w''@;'; put 'put ''LGs9MCxNPTAsRD0wLFI9MCxMZT0wLFJlPTA7aWYoT2U9bGUsbGU9bGUrNDMyMHwwLHE9T2UsYmU9T2UrNDE4NHwwLEc9T2UrNDE2MHwwLHA9T2UrNDB8MCwwfEdvKGx8PTApKXtmb3IoJGkobCwwLDk5MDE5LC0xMiwwKSwkaShsLDEsOTkwMzEsMTYsMCksUj0wfFNyZShmLHAsYmUpLGs9MHxm''@;'; put 'put ''dW5jdGlvbiBXbWUobCl7bHw9MDt2YXIgdyxjPTAsZj0wLHA9MCxtPTAsQT0wO2Zvcih3PWxlLGxlPWxlKzE2fDAsZmVbKEE9dyk+PjBdPTB8ZmVbMTg1OTZdLGZlW0ErMT4+MF09MHxmZVsxODU5N10sZmVbQSsyPj4wXT0wfGZlWzE4NTk4XSxmZVtBKzM+PjBdPTB8ZmVbMTg1OTldLExyZShB''@;'; put 'put ''PTB8b2MoOTkxMjAsQSwwKSxsKSxjPTB8RHQobCk7YzspMHxhWzEyKygwfGFvKGMsOTkwMzEsMCkpPj4yXXx8KGgwKG09MHxHcihBLDB8dGkoYyksMSksOTkwMzEsMTYsMSksYVsxMisoMHxhW20rMTY+PjJdKT4+Ml09YyxhWzEyKygwfGFvKGMsOTkwMzEsMCkpPj4yXT1tKSxjPTB8enQobCxj''@;'; put 'put ''KTtmb3IoZj0wfER0KGwpO2Y7KXtmb3IocD0wfGFbMTIrKDB8YW8oZiw5OTAzMSwwKSk+PjJdLGM9MHx3MChsLGYpO2M7KXttPTB8YVsxMisoMHxhbygwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpjKy00OHwwKSs0MD4+Ml0sOTkwMzEsMCkpPj4yXTtkb3tpZigoMHxtKSE9KDB8cCkpe2lmKG0+''@;'; put 'put ''Pj4wPnA+Pj4wKXtLYShBLHAsbSwwLDEpO2JyZWFrfUthKEEsbSxwLDAsMSk7YnJlYWt9fXdoaWxlKDApO2M9MHxTMChsLGMpfWY9MHx6dChsLGYpfXJldHVybiBsZT13LDB8QX0obCksTT0wfFFuKCgwfEdvKGspKTw8MiksZVcoRyxPZSs0MTQ0fDAsT2UrNDh8MCwyNCw4OCksQT0wfER0KGsp''@;'; put 'put ''LEQ9RysxNnwwLHc9UisoMHxhW3A+PjJdKXwwLGY9MDtBOykwfEJpWzEyNyZhW0Q+PjJdXShBLC0xKXx8KGFbcT4+Ml09Zixvbyh3LDk5OTMzLHEpLExlPTB8cHMoayxSLDEpLGgwKFJlPTB8cHMobCxSLDEpLDk5MDE5LDEyLDApLGZlWzgrKDB8YW8oUmUsOTkwMTksMCkpPj4wXT0xLHA9MHx0''@;'; put 'put ''VyhrLEEsTGUsRyksWW1lKExlLFJlKSx4QyhSZSksVW1lKGwsUmUpLGFbTSsoZjw8Mik+PjJdPVJlLG9pKGssTGUpLGY9ZisxfDApLEE9MHx6dChrLEEpO0MxKGspLGwyKGwsMCw5OTAxOSksbDIobCwxLDk5MDMxKSxNcmUoRykscD0wfFYwKE0sZjw8MiksKDB8UikhPSgwfGJlKSYmRnQoUil9''@;'; put 'put ''ZWxzZSBwPTAsZj0wO3JldHVybiBhW2M+PjJdPWYsbGU9T2UsMHxwfWZ1bmN0aW9uIFltZShsLGMpe2N8PTA7dmFyIGY9MCxwPTAsbT0wO2ZvcihwPTB8RHQobHw9MCk7cDspe209MHxhWzEyKygwfGFbcCsxNj4+Ml0pPj4yXTtlOmRve2lmKDE9PSgzJmFbbT4+Ml18MCkpWW4oYyxtLDEpO2Vs''@;'; put 'put ''c2UgZm9yKGY9MHxEdChtKTs7KXtpZighZilicmVhayBlO1luKGMsZiwxKSxmPTB8enQobSxmKX19d2hpbGUoMCk7cD0wfHp0KGwscCl9fWZ1bmN0aW9uIHhDKGwpe3JldHVybiAwfHhyZShsfD0wLDB8YVtsKzYwPj4yXSl9ZnVuY3Rpb24gVW1lKGwsYyl7RHJlKGx8PTAsY3w9MCwwKX1mdW5j''@;'; put 'put ''dGlvbiBEcmUobCxjLGYpe2N8PTA7dmFyIEEsbT0wO2ZvcihBPTA9PSgwfChmfD0wKSksbD0wfHdzKGx8PTApO2w7KTA9PSgwfGZlWzgrKDB8YW8obCw5OTAxOSwwKSk+PjBdKSYmMHwobT0wfFFtZShsLGMsZikpJiZEcmUobCxtLDEmKEE/MD09KDB8czIoMHx0aShsKSwxMDgwMDYsNykpOjEp''@;'; put 'put ''KSxsPTB8RXMobCl9ZnVuY3Rpb24gUW1lKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wO2ZvcihwPTAsQT0wfER0KGx8PTApO0E7KShtPTB8R3IoYywwfHRpKEEpLDApKSYmKHB8fChwPTB8cHMoYywwfHRpKGwpLDEpKSxZbihwLG0sMSkpLEE9MHx6dChsLEEpO3JldHVybiAwIT0o''@;'; put 'put ''MHxmKSYwPT0oMHxwKSYmKHA9MHxwcyhjLDB8dGkobCksMSkpLDB8cCYmKHhyZShwLGwpLFI2KGwscCksMD09KDB8czIoMHx0aShwKSwxMDgwMDYsNykpKSYmKGFbOCsoMHxoMChwLDk4OTkzLDEyLDApKT4+Ml09bCksMHxwfWZ1bmN0aW9uIExyZShsLGMpe2x8PTA7dmFyIHAsQSx3LGY9MCxt''@;'; put 'put ''PTAsYj0wLGs9MCxNPTA7Zm9yKHc9bGUsbGU9bGUrMTZ8MCxBPXcsZj0wfHdzKGN8PTApLHA9MHxhWzE1NzEyXTtmOyl7ZTpkb3tpZigwfHMyKDB8dGkoZiksMTA4MDA2LDcpKUxyZShsLGYpO2Vsc2UgZm9yKG09MHxHcihsLDB8dGkoZiksMSksaDAobSw5OTAzMSwxNiwxKSxhWzEyKygwfGFb''@;'; put 'put ''bSsxNj4+Ml0pPj4yXT1mLGM9MHxEdChmKTs7KXtpZighYylicmVhayBlOzB8YVsxMisoMHxhbyhjLDk5MDMxLDApKT4+Ml0mJihNPTB8dGkoYyksaz0wfHRpKGYpLGI9MHx0aSgwfGFbMTIrKDB8YW8oYyw5OTAzMSwwKSk+PjJdKSxhW0E+PjJdPU0sYVtBKzQ+PjJdPWssYVtBKzg+PjJdPWIs''@;'; put 'put ''VDAocCw5OTEyMyxBKSksYVsxMisoMHxhbyhjLDk5MDMxLDApKT4+Ml09bSxjPTB8enQoZixjKX19d2hpbGUoMCk7Zj0wfEVzKGYpfWxlPXd9ZnVuY3Rpb24gbzcobCxjLGYpe2Z8PTA7dmFyIEEsdyxiLHA9MCxtPTAsaz0wLE09MCxEPTAsUj0wLEc9MDtrPX5+KChHPStfWyhsfD0wKT4+M10p''@;'; put 'put ''KyhHPj0wPy41Oi0uNSkpLGw9fn4oKEc9K19bbCs4Pj4zXSkrKEc+PTA/LjU6LS41KSksYj0oKDB8KEQ9KHc9fn4oKEc9K19bKGN8PTApPj4zXSkrKEc+PTA/LjU6LS41KSkpLWt8MCkpPi0xP0Q6MC1EfDApPDwxLEQ9RD4+MzF8MSxNPSgoMHwoUj0oQT1+figoRz0rX1tjKzg+PjNdKSsoRz49''@;'; put 'put ''MD8uNTotLjUpKSktbHwwKSk+LTE/UjowLVJ8MCk8PDEsUj1SPj4zMXwxO2U6ZG97aWYoKDB8Yik+KDB8TSkpZm9yKG09MC1ifDAscD1NLShiPj4xKXwwLGM9azs7KXtpZihlNChmLGMsbCksKDB8Yyk9PSgwfHcpKWJyZWFrIGU7cD1wK00rKChrPSgwfHApPi0xKT9tOjApfDAsYz1jK0R8MCxs''@;'; put 'put ''PShrP1I6MCkrbHwwfWVsc2UgZm9yKG09MC1NfDAscD1rLGM9Yi0oTT4+MSl8MDs7KXtpZihlNChmLHAsbCksKDB8bCk9PSgwfEEpKWJyZWFrIGU7cD0oKE09KDB8Yyk+LTEpP0Q6MCkrcHwwLGM9YytiKyhNP206MCl8MCxsPWwrUnwwfX13aGlsZSgwKX1mdW5jdGlvbiBVZChsLGMsZixwKXts''@;'; put 'put ''fD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBrLE0sUixtPTAsQT0wLHc9MCxiPTAsRD0wO1I9bGUsbGU9bGUrMTZ8MCxNPVIsaz1SKzR8MDtkb3tpZigoMHxsKTwxKWY9MDtlbHNle2lmKCgwfGFbKG09cCsxNnwwKT4+Ml0pPj4+MDw0KXtmPTB8Sm1lKGwsYyxmLHApO2JyZWFrfWZvcihEPTB8UW4o''@;'; put 'put ''bDw8NSksZj0wOygwfGYpIT0oMHxsKTspaWcoQT0wfGFbYysoZjw8Mik+PjJdKSxhWyh3PUQrKGY8PDUpfDApPj4yXT1hWyhBPTE2KygwfGFbQSsxNj4+Ml0pfDApPj4yXSxhW3crND4+Ml09YVtBKzQ+PjJdLGFbdys4Pj4yXT1hW0ErOD4+Ml0sYVt3KzEyPj4yXT1hW0ErMTI+PjJdLGFbdysx''@;'; put 'put ''Nj4+Ml09YVtBKzE2Pj4yXSxhW3crMjA+PjJdPWFbQSsyMD4+Ml0sYVt3KzI0Pj4yXT1hW0ErMjQ+PjJdLGFbdysyOD4+Ml09YVtBKzI4Pj4yXSxmPWYrMXwwO2lmKDQ9PSgwfGFbbT4+Ml0pKXt3PXArMjh8MDtlOmRve2lmKDImYVt3Pj4yXXwwKWZvcihtPXArMjR8MCxhW20+PjJdPTB8dnIo''@;'; put 'put ''bDw8MiksZj0wOzspe2lmKCgwfGYpPT0oMHxsKSlicmVhayBlOzB8KEE9MHxMaSgwfGFbYysoZjw8Mik+PjJdLDk5MTkwKSkmJihhW00+PjJdPWssKEE9KDB8aWwoQSwxMzczOTUsTSkpPjApJigwfChiPTB8YVtrPj4yXSkpPi0xKSYmKGFbKDB8YVttPj4yXSkrKGY8PDIpPj4yXT1iKSxmPWYr''@;'; put 'put ''MXwwfX13aGlsZSgwKTtmPTB8aVcobCxELHApLDImYVt3Pj4yXSYmRnQoMHxhW3ArMjQ+PjJdKX1lbHNlIGY9MDtGdChEKX19d2hpbGUoMCk7cmV0dXJuIGxlPVIsMHxmfWZ1bmN0aW9uIEptZShsLGMsZixwKXtsfD0wLGN8PTAsZnw9MDt2YXIgcWUscnQsc3QsbT0wLEE9MCx3PTAsYj0wLGs9''@;'; put 'put ''MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLExlPTAsUmU9MCxIZT0wLFZlPTAsV2U9MCxhdD0wLEV0PTA7aWYoc3Q9bGUsbGU9bGUrMTQ0fDAscnQ9c3QrMTM2fDAscWU9c3QrNjR8MCxiZT1zdCxnZT1zdCsxMjB8MCxXZT1zdCs5NnwwLGF0PTB8YVsyMCsocHw9MCk+PjJd''@;'; put 'put ''LGFbKFJlPXN0KzEwNHwwKT4+Ml09MCxhW1JlKzQ+PjJdPTAsYVtSZSs4Pj4yXT0wLGFbUmUrMTI+PjJdPTAsKDB8bCk+PTEpe2ZvcihEPTA9PSgwfGF0KSxSPWdlKzR8MCxHPWdlKzh8MCxxPWdlKzEyfDAsSGU9UmUrNHwwLExlPVJlKzh8MCxWZT1SZSsxMnwwLE09MCxtPTA7KDB8TSkhPSgw''@;'; put 'put ''fGwpOylpZyhwZT0wfGFbYysoTTw8Mik+PjJdKSwhRCYmMCE9KDB8ZmVbYXQrTT4+MF0pJiYoYVtnZT4+Ml09QT1+figoRXQ9K19bMTYrKGs9MHxhW3BlKzE2Pj4yXSk+PjNdKSsoRXQ+PTA/LjU6LS41KSksYVtSPj4yXT13PX5+KChFdD0rX1trKzI0Pj4zXSkrKEV0Pj0wPy41Oi0uNSkpLGFb''@;'; put 'put ''Rz4+Ml09Yj1+figoRXQ9K19bayszMj4+M10pKyhFdD49MD8uNTotLjUpKSxhW3E+PjJdPWs9fn4oKEV0PStfW2srNDA+PjNdKSsoRXQ+PTA/LjU6LS41KSksbT8oYVtSZT4+Ml09YVsoKDB8YVtSZT4+Ml0pPigwfEEpP2dlOlJlKT4+Ml0sYVtIZT4+Ml09YVsoKDB8YVtIZT4+Ml0pPigwfHcp''@;'; put 'put ''P2dlOlJlKSs0Pj4yXSxhW0xlPj4yXT1hWygoMHxhW0xlPj4yXSk8KDB8Yik/Z2U6UmUpKzg+PjJdLGFbVmU+PjJdPWFbKCgwfGFbVmU+PjJdKTwoMHxrKT9nZTpSZSkrMTI+PjJdKTooYVtSZT4+Ml09YVtnZT4+Ml0sYVtSZSs0Pj4yXT1hW2dlKzQ+PjJdLGFbUmUrOD4+Ml09YVtnZSs4Pj4y''@;'; put 'put ''XSxhW1JlKzEyPj4yXT1hW2dlKzEyPj4yXSksbT1tKzF8MCksTT1NKzF8MDtmb3IoRz0wfFFuKGw8PDUpLG09MDsoMHxtKSE9KDB8bCk7KWFbKGJlPUcrKG08PDUpfDApPj4yXT1hWyhnZT0xNisoMHxhWzE2KygwfGFbYysobTw8Mik+PjJdKT4+Ml0pfDApPj4yXSxhW2JlKzQ+PjJdPWFbZ2Ur''@;'; put 'put ''ND4+Ml0sYVtiZSs4Pj4yXT1hW2dlKzg+PjJdLGFbYmUrMTI+PjJdPWFbZ2UrMTI+PjJdLGFbYmUrMTY+PjJdPWFbZ2UrMTY+PjJdLGFbYmUrMjA+PjJdPWFbZ2UrMjA+PjJdLGFbYmUrMjQ+PjJdPWFbZ2UrMjQ+PjJdLGFbYmUrMjg+PjJdPWFbZ2UrMjg+PjJdLG09bSsxfDA7aWYoKDB8KFI9''@;'; put 'put ''MHxCVChsLEcsMHxhWyhEPXArOHwwKT4+Ml0pKSk+PTEpe2ZvcigoTT0wIT0oMHxhdCkpPyhBPSgoMHxhW0xlPj4yXSkrKDB8YVtSZT4+Ml0pfDApLzJ8MCxtPSgoMHxhW1ZlPj4yXSkrKDB8YVtIZT4+Ml0pfDApLzJ8MCk6KEE9MCxtPTApLGFbV2UrND4+Ml09bSxhW1dlPj4yXT1BLGs9MHx2''@;'; put 'put ''cihsPDw0KSxiPXArMTZ8MCxtPTA7ISgoMHxtKT49KDB8bCkpOylBPTB8YVtjKyhtPDwyKT4+Ml0sdz1rKyhtPDw0KXwwLGFbaysobTw8NCkrMTI+PjJdPW0sMz09KDB8YVtiPj4yXSk/KFJlPTE2KygwfGFbQSsxNj4+Ml0pfDAsSGU9MHxhW0Q+PjJdLFZlPTB8dGkoQSksYVtxZT4+Ml09YVtS''@;'; put 'put ''ZT4+Ml0sYVtxZSs0Pj4yXT1hW1JlKzQ+PjJdLGFbcWUrOD4+Ml09YVtSZSs4Pj4yXSxhW3FlKzEyPj4yXT1hW1JlKzEyPj4yXSxhW3FlKzE2Pj4yXT1hW1JlKzE2Pj4yXSxhW3FlKzIwPj4yXT1hW1JlKzIwPj4yXSxhW3FlKzI0Pj4yXT1hW1JlKzI0Pj4yXSxhW3FlKzI4Pj4yXT1hW1JlKzI4''@;'; put 'put ''Pj4yXSxhW3J0Pj4yXT1hW1dlPj4yXSxhW3J0KzQ+PjJdPWFbV2UrND4+Ml0sb1cocWUsdyxSLEhlLHJ0KSk6KGFbcnQ+PjJdPWFbV2U+PjJdLGFbcnQrND4+Ml09YVtXZSs0Pj4yXSxScmUoZixBLHcsUixwLHJ0KSksbT1tKzF8MDtmb3Iodz0wfHZyKGw8PDIpLG09MDshKCgwfG0pPj0oMHxs''@;'; put 'put ''KSk7KWFbdysobTw8Mik+PjJdPWsrKG08PDQpLG09bSsxfDA7eDEodyxsLDQsODkpLGI9MHx4NygpLG09MHx2cihsPDwzKTt0OmRve2lmKE0pe2ZvcihBPTA7Oyl7aWYoKDB8QSk+PSgwfGwpKXtBPTA7YnJlYWt9MHxmZVthdCtBPj4wXSYmKHA9bSsoYVsxMisoZj0wfGFbdysoQTw8Mik+PjJd''@;'; put 'put ''KT4+Ml08PDMpfDAsYVtydD4+Ml09YVtXZT4+Ml0sYVtydCs0Pj4yXT1hW1dlKzQ+PjJdLGxXKGYsYixwLHJ0KSksQT1BKzF8MH1mb3IoOzspe2lmKCgwfEEpPj0oMHxsKSlicmVhayB0OzB8ZmVbYXQrQT4+MF18fGRGKEEsV2U9MHxhW3crKEE8PDIpPj4yXSxiLG0rKGFbV2UrMTI+PjJdPDwz''@;'; put 'put ''KXwwLFIsMHxhW0Q+PjJdLEcpLEE9QSsxfDB9fWVsc2UgZm9yKEE9MDs7KXtpZigoMHxBKT49KDB8bCkpYnJlYWsgdDtkRihBLGF0PTB8YVt3KyhBPDwyKT4+Ml0sYixtKyhhW2F0KzEyPj4yXTw8Myl8MCxSLDB8YVtEPj4yXSxHKSxBPUErMXwwfX13aGlsZSgwKTtmb3IoRnQodyksQT0wOyEo''@;'; put 'put ''KDB8QSk+PSgwfGwpKTspRnQoMHxhW2srKEE8PDQpKzQ+PjJdKSxBPUErMXwwO0Z0KGspLHl5KGIpLEZ0KEcpfWVsc2UgbT0wfWVsc2UgbT0wO3JldHVybiBsZT1zdCwwfG19ZnVuY3Rpb24gaVcobCxjLGYpe2N8PTAsZnw9MDt2YXIgcGUsZ2UsYmUsT2UsTGUsSGUsVmUscWUscD0wLG09MCxB''@;'; put 'put ''PTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxSZT0wO3FlPWxlLGxlPWxlKzE2fDAsQT1xZSxIZT0wfHZyKChsfD0wKTw8MyksVmU9ZisyOHwwLHA9KDB8KG09MHxhW2YrND4+Ml0pKT4wO2Rve2lmKDEmYVtWZT4+Ml0pe2lmKHApe2s9MCxSZT1tLG09KGwrLTErbXwwKS8oMHxt''@;'; put 'put ''KXwwO2JyZWFrfWs9MCxSZT1tPX5+K0l1KCsgK0QwKCsgKygwfGwpKSksbT0obCstMSttfDApLygwfG0pfDA7YnJlYWt9aWYocCl7az0xLFJlPShsKy0xK218MCkvKDB8bSl8MDticmVha31rPTEsUmU9KGwrLTErKG09fn4rSXUoKyArRDAoKyArKDB8bCkpKSl8MCkvKDB8bSl8MDticmVha313''@;'; put 'put ''aGlsZSgwKTtmb3IoYmU9MHx2cig4KyhtPDwzKXwwKSxPZT0wfHZyKDgrKFJlPDwzKXwwKSxiPWYrOHwwLHA9MCxBPUxlPTB8dnIoMjQqbHwwKTshKCgwfHApPj0oMHxsKSk7KUc9K19bYysocDw8NSkrOD4+M10sUj0rX1tjKyhwPDw1KSsyND4+M10sX1tBPj4zXT0rX1tjKyhwPDw1KSsxNj4+''@;'; put 'put ''M10tK19bYysocDw8NSk+PjNdKyhxPSsoKDB8YVtiPj4yXSk+Pj4wKSksX1tBKzg+PjNdPVItRytxLGFbQSsxNj4+Ml09cCxwPXArMXwwLEE9QSsyNHwwO2ZvcihnZT0wfHZyKGw8PDIpLHA9MDshKCgwfHApPj0oMHxsKSk7KWFbZ2UrKHA8PDIpPj4yXT1MZSsoMjQqcHwwKSxwPXArMXwwO2Zv''@;'; put 'put ''cigocD0wfGFbZisyND4+Ml0pPyhhWzQ3MDU2XT1wLHgxKGdlLGwsNCw5MCkpOjY0JmFbVmU+PjJdfHx4MShnZSxsLDQsOTEpLHBlPTA9PSgwfGspLHA9MCxBPTAsYj0wOzspe2lmKCgwfGIpPj0oMHxsKSl7dz0wLHA9MDticmVha31fWyhmPWJlKyhBPDwzKXwwKT4+M109KHE9K19bZj4+M10p''@;'; put 'put ''PihHPStfWyhrPTB8YVtnZSsoYjw8Mik+PjJdKT4+M10pP3E6RyxfWyhmPU9lKyhwPDwzKXwwKT4+M109KEc9K19bZj4+M10pPihxPStfW2srOD4+M10pP0c6cSxwZT8ocD0oZj0oMHwocD1wKzF8MCkpPT0oMHxSZSkpPzA6cCxBPUErKDEmZil8MCk6KHA9cCsoMSYoZj0oMHwoQT1BKzF8MCkp''@;'; put 'put ''PT0oMHxtKSkpfDAsQT1mPzA6QSksYj1iKzF8MH1mb3IoOzspe2lmKCgwfHApPigwfG0pKXt3PTAscD1SZTticmVha31xPStfWyhmPWJlKyhwPDwzKXwwKT4+M10sX1tmPj4zXT13LHc9cSt3LHA9cCsxfDB9Zm9yKDshKCgwfHApPD0wKTspcT0rX1tPZSsoKGY9cCstMXwwKTw8Myk+PjNdLF9b''@;'; put 'put ''T2UrKHA8PDMpPj4zXT13LHc9cSt3LHA9Zjtmb3IoX1tPZT4+M109dyxwPTAsQT0wLGY9MDshKCgwfGYpPj0oMHxsKSk7KXtNPS0odz0rX1tjKygoaz0wfGFbMTYrKDB8YVtnZSsoZjw8Mik+PjJdKT4+Ml0pPDw1KT4+M10pLHE9LShHPStfW2MrKGs8PDUpKzg+PjNdKSxEPStfW2MrKGs8PDUp''@;'; put 'put ''KzE2Pj4zXSxSPStfW2MrKGs8PDUpKzI0Pj4zXSxiPTB8YVtWZT4+Ml07ZG97aWYoISg0JmIpKXtpZig4JmIpe3c9dy1EKyArX1tiZSsoQSsxPDwzKT4+M107YnJlYWt9dz0uNSooTS1EKyArX1tiZSsoQTw8Myk+PjNdKyArX1tiZSsoQSsxPDwzKT4+M10pO2JyZWFrfXc9K19bYmUrKEE8PDMp''@;'; put 'put ''Pj4zXX13aGlsZSgwKTthW0hlKyhrPDwzKT4+Ml09fn53O2Rve2lmKCEoMTYmYikpe2lmKDMyJmIpe3c9K19bT2UrKHArMTw8Myk+PjNdO2JyZWFrfXc9LjUqKHEtUisgK19bT2UrKHA8PDMpPj4zXSsgK19bT2UrKHArMTw8Myk+PjNdKTticmVha313PUctUisgK19bT2UrKHA8PDMpPj4zXX13''@;'; put 'put ''aGlsZSgwKTthW0hlKyhrPDwzKSs0Pj4yXT1+fncscGU/KHA9KGs9KDB8KHA9cCsxfDApKT09KDB8UmUpKT8wOnAsQT1BKygxJmspfDApOihwPXArKDEmKGs9KDB8KEE9QSsxfDApKT09KDB8bSkpKXwwLEE9az8wOkEpLGY9ZisxfDB9cmV0dXJuIEZ0KExlKSxGdChnZSksRnQoYmUpLEZ0KE9l''@;'; put 'put ''KSxsZT1xZSwwfEhlfWZ1bmN0aW9uIEJUKGwsYyxmKXtjfD0wO3ZhciBrLGdlLE0scD0wLG09MCxBPTAsdz0wLGI9MCxEPTAsUj0wO2ZvcihnZT1sZSxsZT1sZSs5NnwwLE09Z2Usaz0oMTAwKihsfD0wKXwwKS0xfDAscD0rKChmfD0wKTw8MXwwKSxEPTAsUj0wLGY9MDshKCgwfGYpPj0oMHxs''@;'; put 'put ''KSk7KUQ9RC0oYj0rX1tjKyhmPDw1KSsxNj4+M10tK19bYysoZjw8NSk+PjNdK3ApLSh3PStfW2MrKGY8PDUpKzI0Pj4zXS0rX1tjKyhmPDw1KSs4Pj4zXStwKSxSLT13KmIsZj1mKzF8MDtyZXR1cm4oYj1EKkQtNCoodz0rKDB8aykpKlIpPDA/KF9bTT4+M109YiwkcigxLDk5NDE3LE0pLGY9''@;'; put 'put ''LTEpOihtPSgocD0rRDAoK2IpKS1EKS8oQT0yKncpLEE9KC1ELXApL0EsZj0wPT0oMHwoZj1+fm0pKT8xOmYpLGxlPWdlLDB8Zn1mdW5jdGlvbiBvVyhsLGMsZixwLG0sQSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgRCxSLEcscSxwZSxPZSxMZSxSZSx3PTAsYj0wLGs9MCxNPTA7Zm9yKE9l''@;'; put 'put ''PWxlLGxlPWxlKzMyfDAsRz0rX1sobHw9MCk+PjNdLHE9K19bbCs4Pj4zXSxEPStfW2wrMTY+PjNdLFI9K19bbCsyND4+M10scGU9MHx4NygpLGs9MHxhW20rND4+Ml0sbT0oMHwobD0oYj0wfGFbbT4+Ml0pLXB8MCkpPi0xPygwfGwpLygwfGYpfDA6KChsKzF8MCkvKDB8Zil8MCktMXwwLE09''@;'; put 'put ''KDB8KHc9ay1wfDApKT4tMT8oMHx3KS8oMHxmKXwwOigodysxfDApLygwfGYpfDApLTF8MCxiPSgwfChiPXAtfn4oRysoRz49MD8uNTotLjUpKStiK35+KEQrKEQ+PTA/LjU6LS41KSl8MCkpPi0xPygwfGIpLygwfGYpfDA6KChiKzF8MCkvKDB8Zil8MCktMXwwLHc9KDB8KGs9cC1+fihxKyhx''@;'; put 'put ''Pj0wPy41Oi0uNSkpK2srfn4oUisoUj49MD8uNTotLjUpKXwwKSk+LTE/KDB8aykvKDB8Zil8MDooKGsrMXwwKS8oMHxmKXwwKS0xfDA7ISgoMHxtKT4oMHxiKSk7KXtmb3IobD1NOyEoKDB8bCk+KDB8dykpOyllNChwZSxtLGwpLGw9bCsxfDA7bT1tKzF8MH1hWyhrPWMrNHwwKT4+Ml09MHxJ''@;'; put 'put ''UShwZSksYj0wfFRRKHBlKSxhWyhNPWMrOHwwKT4+Ml09Yix3PX5+K0l1KCsoRCsoUmU9KyhwPDwxfDApKS1HKS8oTGU9KygwfGYpKSksbD1+fitJdSgrKFIrUmUtcSkvTGUpLGFbYz4+Ml09bCt3LHl5KHBlKSxsZT1PZX1mdW5jdGlvbiBScmUobCxjLGYscCxtLEEpe2N8PTAsZnw9MCxwfD0w''@;'; put 'put ''LEF8PTA7dmFyIFJlLFZlLHFlLHJ0LGF0LFN0LGt0LHN0LEV0LFp0LGN0LGJ0LGFuLFNuLEhyLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxMZT0wLEhlPTAsV2U9MCxFcj0wLGZyPTA7SHI9bGUsbGU9bGUrMTI4fDAsc3Q9SHIrMTEyfDAsa3Q9''@;'; put 'put ''SHIrMTA0fDAsWnQ9SHIrNjR8MCxjdD1Icis1NnwwLHFlPUhyKzQwfDAscnQ9SHIrOTZ8MCxWZT1Icis4OHwwLExlPUhyKzI0fDAsUmU9SHIrODB8MCxIZT1Icis3MnwwLGFuPTB8YVs4KyhtfD0wKT4+Ml0sRXQ9MHxhW20rMTI+PjJdLGF0PTA9PSgwfChsfD0wKSk/YzpsLFNuPTB8eDcoKSxT''@;'; put 'put ''dD0oMHxhW0E+PjJdKS1+figoYmU9K19bMTYrKFdlPTB8YVsoYnQ9YysxNnwwKT4+Ml0pPj4zXSkrKGJlPj0wPy41Oi0uNSkpfDAsV2U9KDB8YVtBKzQ+PjJdKS1+figoYmU9K19bV2UrMjQ+PjNdKSsoYmU+PTA/LjU6LS41KSl8MDtlOmRve2lmKDE9PSgwfGFbbSsxNj4+Ml0pKXtmb3IoTGU9''@;'; put 'put ''MHxRbigoMHxHbyhjKSk8PDIpLGw9MCxBPTB8RHQoYyk7QTspYVtMZSsobDw8Mik+PjJdPWFbMTEyKygwfGFbKEhlPUErMTZ8MCk+PjJdKT4+Ml0sYVsxMTIrKDB8YVtIZT4+Ml0pPj4yXT0wLGw9bCsxfDAsQT0wfHp0KGMsQSk7Zm9yKFI9U3QtYW58MCxHPVdlLWFufDAscT1TdCthbnwwLHBl''@;'; put 'put ''PVdlK2FufDAsRD0xOyEoKDB8RCk+KDB8YVsxODArKGw9MHxhW2J0Pj4yXSk+PjJdKSk7KXtsPX5+KChiZT0rX1sxNisodz0wfGFbMTYrKE09MHxhWygwfGFbbCsxODQ+PjJdKSsoRDw8Mik+PjJdKT4+Ml0pPj4zXSkrKGJlPj0wPy41Oi0uNSkpLEE9fn4oKGJlPStfW3crMjQ+PjNdKSsoYmU+''@;'; put 'put ''PTA/LjU6LS41KSksbT1+figoYmU9K19bdyszMj4+M10pKyhiZT49MD8uNTotLjUpKSx3PX5+KChiZT0rX1t3KzQwPj4zXSkrKGJlPj0wPy41Oi0uNSkpO3Q6ZG97aWYoKDB8bSk+KDB8bCkmKDB8dyk+KDB8QSkpe2ZvcihiPUcrQXwwLGs9cGUrd3wwLEE9KDB8KGw9UitsfDApKT4tMT8oMHxs''@;'; put 'put ''KS8oMHxwKXwwOigobCsxfDApLygwfHApfDApLTF8MCxiPSgwfGIpPi0xPygwfGIpLygwfHApfDA6KChiKzF8MCkvKDB8cCl8MCktMXwwLHc9KDB8KG09cSttfDApKT4tMT8oMHxtKS8oMHxwKXwwOigobSsxfDApLygwfHApfDApLTF8MCxtPSgwfGspPi0xPygwfGspLygwfHApfDA6KChrKzF8''@;'; put 'put ''MCkvKDB8cCl8MCktMXwwOyEoKDB8QSk+KDB8dykpOyl7Zm9yKGw9YjshKCgwfGwpPigwfG0pKTspZTQoU24sQSxsKSxsPWwrMXwwO0E9QSsxfDB9Zm9yKGw9MHxEdChNKTs7KXtpZighbClicmVhayB0O2FbMjEyKygwfGFbbCsxNj4+Ml0pPj4yXT1NLGw9MHx6dChNLGwpfX19d2hpbGUoMCk7''@;'; put 'put ''RD1EKzF8MH1mb3IocGU9cWUrOHwwLGdlPVp0KzR8MCxiZT0rKDB8YW4pLE9lPWN0KzR8MCxxPXJ0KzR8MCxHPVZlKzR8MCxSPTB8RHQoYyk7Ujspe2hEKHFlLFIpLEVyPStfW3BlPj4zXSxhW1p0Pj4yXT1NPVN0K35+KChmcj0rX1txZT4+M10pKyhmcj49MD8uNTotLjUpKXwwLGFbZ2U+PjJd''@;'; put 'put ''PUQ9V2Urfn4oRXIrKEVyPj0wPy41Oi0uNSkpfDAsbD0wfGFbKEE9UisxNnwwKT4+Ml07dDpkb3tpZigwfGFbbCsyMTI+PjJdKWZvcihsPSgwfE0pPi0xPygwfE0pLygwfHApfDA6KChNKzF8MCkvKDB8cCl8MCktMXwwLGFbWnQ+PjJdPWwsbD0oMHxEKT4tMT8oMHxEKS8oMHxwKXwwOigoRCsx''@;'; put 'put ''fDApLygwfHApfDApLTF8MCxhW2dlPj4yXT1sLGw9MHx3MChhdCxSKTs7KXtpZighbClicmVhayB0OygwfGFbMjEyKygwfGFbQT4+Ml0pPj4yXSkhPSgwfGFbMjEyKygwfGFbMTYrKDB8YVsoMj09KDMmYVtsPj4yXXwwKT9sOmwrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pJiYoYVtzdD4+Ml09''@;'; put 'put ''YVtadD4+Ml0sYVtzdCs0Pj4yXT1hW1p0KzQ+PjJdLE42KGwsc3QsU24sU3QsV2UscCxFdCkpLGw9MHxTMChhdCxsKX1lbHNle2ZvcihhW2N0Pj4yXT1+figuNSooK19bbCs5Nj4+M10rICtfW2wrODg+PjNdKStiZSksYVtPZT4+Ml09fn4oLjUqK19bbCs4MD4+M10rYmUpLGFba3Q+PjJdPWFb''@;'; put 'put ''WnQ+PjJdLGFba3QrND4+Ml09YVtadCs0Pj4yXSxhW3N0Pj4yXT1hW2N0Pj4yXSxhW3N0KzQ+PjJdPWFbY3QrND4+Ml0scEYocnQsa3Qsc3QpLGw9MHxhW3J0Pj4yXSxtPTB8YVtxPj4yXSxhW2t0Pj4yXT1hW1p0Pj4yXSxhW2t0KzQ+PjJdPWFbWnQrND4+Ml0sYVtzdD4+Ml09YVtjdD4+Ml0s''@;'; put 'put ''YVtzdCs0Pj4yXT1hW2N0KzQ+PjJdLG5wKFZlLGt0LHN0KSxBPSgwfGwpPi0xPygwfGwpLygwfHApfDA6KChsKzF8MCkvKDB8cCl8MCktMXwwLGs9KDB8bSk+LTE/KDB8bSkvKDB8cCl8MDooKG0rMXwwKS8oMHxwKXwwKS0xfDAsdz0oMHwodz0wfGFbVmU+PjJdKSk+LTE/KDB8dykvKDB8cCl8''@;'; put 'put ''MDooKHcrMXwwKS8oMHxwKXwwKS0xfDAsbT0oMHwoYj0wfGFbRz4+Ml0pKT4tMT8oMHxiKS8oMHxwKXwwOigoYisxfDApLygwfHApfDApLTF8MDshKCgwfEEpPigwfHcpKTspe2ZvcihsPWs7ISgoMHxsKT4oMHxtKSk7KWU0KFNuLEEsbCksbD1sKzF8MDtBPUErMXwwfWZvcihhW1p0Pj4yXT1s''@;'; put 'put ''PSgwfE0pPi0xPygwfE0pLygwfHApfDA6KChNKzF8MCkvKDB8cCl8MCktMXwwLGFbZ2U+PjJdPWw9KDB8RCk+LTE/KDB8RCkvKDB8cCl8MDooKEQrMXwwKS8oMHxwKXwwKS0xfDAsbD0wfHcwKGF0LFIpOzspe2lmKCFsKWJyZWFrIHQ7YVtzdD4+Ml09YVtadD4+Ml0sYVtzdCs0Pj4yXT1hW1p0''@;'; put 'put ''KzQ+PjJdLE42KGwsc3QsU24sU3QsV2UscCxFdCksbD0wfFMwKGF0LGwpfX19d2hpbGUoMCk7Uj0wfHp0KGMsUil9Zm9yKGw9MCxBPTB8RHQoYyk7QTspYVsxMTIrKDB8YVtBKzE2Pj4yXSk+PjJdPWFbTGUrKGw8PDIpPj4yXSxsPWwrMXwwLEE9MHx6dChjLEEpO0Z0KExlKX1lbHNlIGZvcihw''@;'; put 'put ''ZT1MZSs4fDAsZ2U9WnQrNHwwLGJlPSsoMHxhbiksT2U9Y3QrNHwwLHE9UmUrNHwwLEc9SGUrNHwwLFI9MHxEdChjKTs7KXtpZighUilicmVhayBlO2ZvcihoRChMZSxSKSxmcj0rX1twZT4+M10sYVtadD4+Ml09TT1TdCt+figoRXI9K19bTGU+PjNdKSsoRXI+PTA/LjU6LS41KSl8MCxhW2dl''@;'; put 'put ''Pj4yXT1EPVdlK35+KGZyKyhmcj49MD8uNTotLjUpKXwwLGFbY3Q+PjJdPX5+KC41KigrX1s5NisobD0wfGFbUisxNj4+Ml0pPj4zXSsgK19bbCs4OD4+M10pK2JlKSxhW09lPj4yXT1+figuNSorX1tsKzgwPj4zXStiZSksYVtrdD4+Ml09YVtadD4+Ml0sYVtrdCs0Pj4yXT1hW1p0KzQ+PjJd''@;'; put 'put ''LGFbc3Q+PjJdPWFbY3Q+PjJdLGFbc3QrND4+Ml09YVtjdCs0Pj4yXSxwRihSZSxrdCxzdCksbD0wfGFbUmU+PjJdLG09MHxhW3E+PjJdLGFba3Q+PjJdPWFbWnQ+PjJdLGFba3QrND4+Ml09YVtadCs0Pj4yXSxhW3N0Pj4yXT1hW2N0Pj4yXSxhW3N0KzQ+PjJdPWFbY3QrND4+Ml0sbnAoSGUs''@;'; put 'put ''a3Qsc3QpLEE9KDB8bCk+LTE/KDB8bCkvKDB8cCl8MDooKGwrMXwwKS8oMHxwKXwwKS0xfDAsaz0oMHxtKT4tMT8oMHxtKS8oMHxwKXwwOigobSsxfDApLygwfHApfDApLTF8MCx3PSgwfCh3PTB8YVtIZT4+Ml0pKT4tMT8oMHx3KS8oMHxwKXwwOigodysxfDApLygwfHApfDApLTF8MCxtPSgw''@;'; put 'put ''fChiPTB8YVtHPj4yXSkpPi0xPygwfGIpLygwfHApfDA6KChiKzF8MCkvKDB8cCl8MCktMXwwOyEoKDB8QSk+KDB8dykpOyl7Zm9yKGw9azshKCgwfGwpPigwfG0pKTspZTQoU24sQSxsKSxsPWwrMXwwO0E9QSsxfDB9Zm9yKGFbWnQ+PjJdPWw9KDB8TSk+LTE/KDB8TSkvKDB8cCl8MDooKE0r''@;'; put 'put ''MXwwKS8oMHxwKXwwKS0xfDAsYVtnZT4+Ml09bD0oMHxEKT4tMT8oMHxEKS8oMHxwKXwwOigoRCsxfDApLygwfHApfDApLTF8MCxsPTB8dzAoYXQsUik7bDspYVtzdD4+Ml09YVtadD4+Ml0sYVtzdCs0Pj4yXT1hW1p0KzQ+PjJdLE42KGwsc3QsU24sU3QsV2UscCxFdCksbD0wfFMwKGF0LGwp''@;'; put 'put ''O1I9MHx6dChjLFIpfX13aGlsZSgwKTthWyh3PWYrNHwwKT4+Ml09MHxJUShTbiksYVsoYj1mKzh8MCk+PjJdPTB8VFEoU24pLGw9fn4rSXUoKygrX1szMisoQT0wfGFbYnQ+PjJdKT4+M10rKEVyPSsoYW48PDF8MCkpLStfW0ErMTY+PjNdKS8oZnI9KygwfHApKSksQT1+fitJdSgrKCtfW0Er''@;'; put 'put ''NDA+PjNdK0VyLStfW0ErMjQ+PjNdKS9mciksYVtmPj4yXT1BK2wseXkoU24pLGxlPUhyfWZ1bmN0aW9uIGxXKGwsYyxmLHApe2N8PTA7dmFyIEEsdyxrLE07Zm9yKGs9bGUsbGU9bGUrMzJ8MCx3PWsrMTZ8MCxNPTB8YVs0KyhsfD0wKT4+Ml0sQT0wfGFbbCs4Pj4yXSxhWyhmfD0wKT4+Ml09''@;'; put 'put ''MC0oMHxhWyhwfD0wKT4+Ml0pLGFbKGYrNHwwKT4+Ml09MC0oMHxhW3ArND4+Ml0pLGw9MCxwPU07ISgoMHxsKT49KDB8QSkpOylhW3c+PjJdPWFbcD4+Ml0sYVt3KzQ+PjJdPWFbcCs0Pj4yXSxNUShjLHcpLGw9bCsxfDAscD1wKzh8MDtsZT1rfWZ1bmN0aW9uIGRGKGwsYyxmLHAsbSxBLHcp''@;'; put 'put ''e2Z8PTAscHw9MCxtfD0wLEF8PTA7dmFyIE0sRCxSLEcsYj0wLGs9MCxxPTAscGU9MDtNPStfWyh3fD0wKSsoKGs9MHxhWzEyKyhjfD0wKT4+Ml0pPDw1KT4+M10sRD0rX1t3KyhrPDw1KSs4Pj4zXSxSPStfW3crKGs8PDUpKzE2Pj4zXSxHPStfW3crKGs8PDUpKzI0Pj4zXSwwPT0oMHwobHw9''@;'; put 'put ''MCkpJiYwIT0oMHxyaCgoMHx+fitJdSgrKChwZT0rKEE8PDF8MCkpLU0rUikvKHE9KygwfG0pKSkpLy0yfDAsKDB8fn4rSXUoKyhwZS1EK0cpL3EpKS8tMnwwLGMsZixwLG0sdykpfHwoYj0zKTtlOmRve2lmKDM9PSgwfGIpJiYwPT0oMHxyaCgwLDAsYyxmLHAsbSx3KSkpaWYoKDB8fn4rSXUo''@;'; put 'put ''KyhSLU0pKSk8KDB8fn4rSXUoKyhHLUQpKSkpZm9yKGs9MTs7KXtmb3IoYj0wLWt8MCxsPTA7Oyl7aWYoKDB8bCk8PSgwfGIpKXtBPWI7YnJlYWt9aWYoMHxyaChiLGwsYyxmLHAsbSx3KSlicmVhayBlO2w9bCstMXwwfWZvcig7ISgoMHxBKT49KDB8aykpOyl7aWYoMHxyaChBLGwsYyxmLHAs''@;'; put 'put ''bSx3KSlicmVhayBlO0E9QSsxfDB9Zm9yKDshKCgwfGwpPj0oMHxrKSk7KXtpZigwfHJoKEEsbCxjLGYscCxtLHcpKWJyZWFrIGU7bD1sKzF8MH1mb3IoOyEoKDB8QSk8PSgwfGIpKTspe2lmKDB8cmgoQSxsLGMsZixwLG0sdykpYnJlYWsgZTtBPUErLTF8MH1mb3IoOyEoKDB8bCk8PTApOyl7''@;'; put 'put ''aWYoMHxyaChBLGwsYyxmLHAsbSx3KSlicmVhayBlO2w9bCstMXwwfWs9aysxfDB9ZWxzZSBmb3Ioaz0xOzspe2ZvcihiPTAta3wwLGw9MDs7KXtpZigoMHxsKT49KDB8aykpe0E9YjticmVha31pZigwfHJoKGwsYixjLGYscCxtLHcpKWJyZWFrIGU7bD1sKzF8MH1mb3IoOyEoKDB8QSk+PSgw''@;'; put 'put ''fGspKTspe2lmKDB8cmgobCxBLGMsZixwLG0sdykpYnJlYWsgZTtBPUErMXwwfWZvcig7ISgoMHxsKTw9KDB8YikpOyl7aWYoMHxyaChsLEEsYyxmLHAsbSx3KSlicmVhayBlO2w9bCstMXwwfWZvcig7ISgoMHxBKTw9KDB8YikpOyl7aWYoMHxyaChsLEEsYyxmLHAsbSx3KSlicmVhayBlO0E9''@;'; put 'put ''QSstMXwwfWZvcig7ISgoMHxsKT49MCk7KXtpZigwfHJoKGwsQSxjLGYscCxtLHcpKWJyZWFrIGU7bD1sKzF8MH1rPWsrMXwwfX13aGlsZSgwKX1mdW5jdGlvbiByaChsLGMsZixwLG0sQSx3KXtsfD0wLGN8PTAscHw9MCxtfD0wLEF8PTAsd3w9MDt2YXIgTSxSLEcscSxwZSxiZSxiPTAsaz0w''@;'; put 'put ''LEQ9MCxPZT0wLExlPTAsUmU9MCxIZT0wO2ZvcihiZT1sZSxsZT1sZSs0OHwwLHBlPWJlKzMyfDAsUj0wfGFbOCsoZnw9MCk+PjJdLEc9KHE9YmUpKzR8MCxiPTB8YVsoTT1mKzR8MCk+PjJdLGs9MDs7KXtpZigoMHxrKT49KDB8Uikpe0Q9NTticmVha31pZihPZT0wfGFbKExlPWIpKzQ+PjJd''@;'; put 'put ''LGFbcT4+Ml09KDB8YVtMZT4+Ml0pK2wsYVtHPj4yXT1PZStjLGFbcGU+PjJdPWFbcT4+Ml0sYVtwZSs0Pj4yXT1hW3ErND4+Ml0sMHxkYWUocCxwZSkpe2I9MDticmVha31iPWIrOHwwLGs9aysxfDB9aWYoNT09KDB8RCkpe2ZvcihIZT0rX1t3KygoZj0wfGFbZisxMj4+Ml0pPDw1KT4+M10s''@;'; put 'put ''UmU9K19bdysoZjw8NSkrOD4+M10sYVttPj4yXT0oMHxBcihBLGwpKS1+fihIZSsoSGU+PTA/LjU6LS41KSksYVsoZj1tKzR8MCk+PjJdPSgwfEFyKEEsYykpLX5+KFJlKyhSZT49MD8uNTotLjUpKSxiPTB8YVtNPj4yXSxrPTA7ISgoMHxrKT49KDB8UikpOylMZT0wfGFbKE9lPWIpKzQ+PjJd''@;'; put 'put ''LGFbcT4+Ml09KDB8YVtPZT4+Ml0pK2wsYVtHPj4yXT1MZStjLGFbcGU+PjJdPWFbcT4+Ml0sYVtwZSs0Pj4yXT1hW3ErND4+Ml0sTVEocCxwZSksYj1iKzh8MCxrPWsrMXwwO2I9MX1yZXR1cm4gbGU9YmUsMHxifWZ1bmN0aW9uIHBGKGwsYyxmKXt2YXIgcDtwPSgwfGFbNCsoY3w9MCk+PjJd''@;'; put 'put ''KS0oMHxhWzQrKGZ8PTApPj4yXSl8MCxhWyhsfD0wKT4+Ml09KDB8YVtjPj4yXSktKDB8YVtmPj4yXSksYVtsKzQ+PjJdPXB9ZnVuY3Rpb24gbnAobCxjLGYpe3ZhciBwO3A9KDB8YVs0KyhmfD0wKT4+Ml0pKygwfGFbNCsoY3w9MCk+PjJdKXwwLGFbKGx8PTApPj4yXT0oMHxhW2Y+PjJdKSso''@;'; put 'put ''MHxhW2M+PjJdKSxhW2wrND4+Ml09cH1mdW5jdGlvbiBONihsLGMsZixwLG0sQSx3KXtsfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTAsd3w9MDt2YXIgcGUsZ2UsYmUsUmUsSGUsVmUscWUscnQsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLE9lPTAsTGU9MDtydD1sZSxsZT1sZSsxMTJ8MCxI''@;'; put 'put ''ZT1ydCs5NnwwLFJlPXJ0KzgwfDAscGU9cnQrNDh8MCxnZT1ydCszMnwwLHFlPXJ0LEQ9cnQrNjR8MCxfWyhWZT1ydCsxNnwwKT4+M109KygwfGFbKGN8PTApPj4yXSksX1soYmU9VmUrOHwwKT4+M109KygwfGFbYys0Pj4yXSk7ZTpkb3tpZigwIT0oMHx3KSYmKE9lPWwrMTZ8MCxNPTB8YVs4''@;'; put 'put ''KygwfGFbT2U+PjJdKT4+Ml0sMCE9KDB8TSkpKWZvcihxPSsoMHxwKSxHPSsoMHxtKSxSPTEvKygwfEEpLEQ9cWUrOHwwLHc9MDs7KXtpZigoMHx3KT49KDB8YVtNKzQ+PjJdKSlicmVhayBlO2ZvcihsPTB8YVsobT0wfGFbTT4+Ml0pKyg0OCp3fDApPj4yXSxjPTB8YVttKyg0OCp3fDApKzQ+''@;'; put 'put ''PjJdLEE9MHxhW20rKDQ4Knd8MCkrOD4+Ml0scD0wfGFbbSsoNDgqd3wwKSsxMj4+Ml0sYVtwZT4+Ml09YVsoTT1tKyg0OCp3fDApKzE2fDApPj4yXSxhW3BlKzQ+PjJdPWFbTSs0Pj4yXSxhW3BlKzg+PjJdPWFbTSs4Pj4yXSxhW3BlKzEyPj4yXT1hW00rMTI+PjJdLGFbZ2U+PjJdPWFbKG09''@;'; put 'put ''bSsoNDgqd3wwKSszMnwwKT4+Ml0sYVtnZSs0Pj4yXT1hW20rND4+Ml0sYVtnZSs4Pj4yXT1hW20rOD4+Ml0sYVtnZSsxMj4+Ml09YVttKzEyPj4yXSxBPyhhW1ZlPj4yXT1hW3BlPj4yXSxhW1ZlKzQ+PjJdPWFbcGUrND4+Ml0sYVtWZSs4Pj4yXT1hW3BlKzg+PjJdLGFbVmUrMTI+PjJdPWFb''@;'; put 'put ''cGUrMTI+PjJdLGFbcWU+PjJdPWFbbD4+Ml0sYVtxZSs0Pj4yXT1hW2wrND4+Ml0sYVtxZSs4Pj4yXT1hW2wrOD4+Ml0sYVtxZSsxMj4+Ml09YVtsKzEyPj4yXSxNPTEpOihhW1ZlPj4yXT1hW2w+PjJdLGFbVmUrND4+Ml09YVtsKzQ+PjJdLGFbVmUrOD4+Ml09YVtsKzg+PjJdLGFbVmUrMTI+''@;'; put 'put ''PjJdPWFbbCsxMj4+Ml0sYVtxZT4+Ml09YVsoTT1sKzE2fDApPj4yXSxhW3FlKzQ+PjJdPWFbTSs0Pj4yXSxhW3FlKzg+PjJdPWFbTSs4Pj4yXSxhW3FlKzEyPj4yXT1hW00rMTI+PjJdLE09MiksX1tWZT4+M109Yj0rX1tWZT4+M10rcSxfW2JlPj4zXT1rPStfW2JlPj4zXStHLGI+PTA/Yio9''@;'; put 'put ''UjpiPShiKzEpKlItMSxfW1ZlPj4zXT1iLF9bYmU+PjNdPWI9az49MD9rKlI6KGsrMSkqUi0xLF9bcWU+PjNdPWI9K19bcWU+PjNdK3EsX1tEPj4zXT1rPStfW0Q+PjNdK0csYj49MD9iKj1SOmI9KGIrMSkqUi0xLF9bcWU+PjNdPWIsX1tEPj4zXT1iPWs+PTA/aypSOihrKzEpKlItMSxhW1Jl''@;'; put 'put ''Pj4yXT1hW1ZlPj4yXSxhW1JlKzQ+PjJdPWFbVmUrND4+Ml0sYVtSZSs4Pj4yXT1hW1ZlKzg+PjJdLGFbUmUrMTI+PjJdPWFbVmUrMTI+PjJdLGFbSGU+PjJdPWFbcWU+PjJdLGFbSGUrND4+Ml09YVtxZSs0Pj4yXSxhW0hlKzg+PjJdPWFbcWUrOD4+Ml0sYVtIZSsxMj4+Ml09YVtxZSsxMj4+''@;'; put 'put ''Ml0sbzcoUmUsSGUsZik7ISgoMHxNKT49KDB8YykpOylhW1ZlPj4yXT1hW3FlPj4yXSxhW1ZlKzQ+PjJdPWFbcWUrND4+Ml0sYVtWZSs4Pj4yXT1hW3FlKzg+PjJdLGFbVmUrMTI+PjJdPWFbcWUrMTI+PjJdLGFbcWU+PjJdPWFbKEE9bCsoTTw8NCl8MCk+PjJdLGFbcWUrND4+Ml09YVtBKzQ+''@;'; put 'put ''PjJdLGFbcWUrOD4+Ml09YVtBKzg+PjJdLGFbcWUrMTI+PjJdPWFbQSsxMj4+Ml0sX1txZT4+M109Yj0rX1txZT4+M10rcSxfW0Q+PjNdPWs9K19bRD4+M10rRyxiPj0wP2IqPVI6Yj0oYisxKSpSLTEsX1txZT4+M109YixfW0Q+PjNdPWI9az49MD9rKlI6KGsrMSkqUi0xLGFbUmU+PjJdPWFb''@;'; put 'put ''VmU+PjJdLGFbUmUrND4+Ml09YVtWZSs0Pj4yXSxhW1JlKzg+PjJdPWFbVmUrOD4+Ml0sYVtSZSsxMj4+Ml09YVtWZSsxMj4+Ml0sYVtIZT4+Ml09YVtxZT4+Ml0sYVtIZSs0Pj4yXT1hW3FlKzQ+PjJdLGFbSGUrOD4+Ml09YVtxZSs4Pj4yXSxhW0hlKzEyPj4yXT1hW3FlKzEyPj4yXSxvNyhS''@;'; put 'put ''ZSxIZSxmKSxNPU0rMXwwOzB8cCYmKGFbVmU+PjJdPWFbcWU+PjJdLGFbVmUrND4+Ml09YVtxZSs0Pj4yXSxhW1ZlKzg+PjJdPWFbcWUrOD4+Ml0sYVtWZSsxMj4+Ml09YVtxZSsxMj4+Ml0sYVtxZT4+Ml09YVtnZT4+Ml0sYVtxZSs0Pj4yXT1hW2dlKzQ+PjJdLGFbcWUrOD4+Ml09YVtnZSs4''@;'; put 'put ''Pj4yXSxhW3FlKzEyPj4yXT1hW2dlKzEyPj4yXSxfW3FlPj4zXT1iPStfW3FlPj4zXStxLF9bRD4+M109az0rX1tEPj4zXStHLGI+PTA/Yio9UjpiPShiKzEpKlItMSxfW3FlPj4zXT1iLF9bRD4+M109Yj1rPj0wP2sqUjooaysxKSpSLTEsYVtSZT4+Ml09YVtWZT4+Ml0sYVtSZSs0Pj4yXT1h''@;'; put 'put ''W1ZlKzQ+PjJdLGFbUmUrOD4+Ml09YVtWZSs4Pj4yXSxhW1JlKzEyPj4yXT1hW1ZlKzEyPj4yXSxhW0hlPj4yXT1hW3FlPj4yXSxhW0hlKzQ+PjJdPWFbcWUrND4+Ml0sYVtIZSs4Pj4yXT1hW3FlKzg+PjJdLGFbSGUrMTI+PjJdPWFbcWUrMTI+PjJdLG83KFJlLEhlLGYpKSx3PXcrMXwwLE09''@;'; put 'put ''MHxhWzgrKDB8YVtPZT4+Ml0pPj4yXX1lbHNlIExlPTR9d2hpbGUoMCk7ND09KDB8TGUpJiYoaEQoRCwwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHwwKSs0MD4+Ml0pLGFbcWU+PjJdPWFbRD4+Ml0sYVtxZSs0Pj4yXT1hW0QrND4+Ml0sYVtxZSs4Pj4yXT1hW0QrOD4+Ml0sYVtxZSsx''@;'; put 'put ''Mj4+Ml09YVtEKzEyPj4yXSxfW3FlPj4zXT1iPStfW3FlPj4zXSsgKygwfHApLF9bKE09cWUrOHwwKT4+M109az0rX1tNPj4zXSsgKygwfG0pLGI+PTA/Yi89KygwfEEpOmI9KGIrMSkvKygwfEEpLTEsX1txZT4+M109YixfW00+PjNdPWI9az49MD9rLysoMHxBKTooaysxKS8rKDB8QSktMSxh''@;'; put 'put ''W1JlPj4yXT1hW1ZlPj4yXSxhW1JlKzQ+PjJdPWFbVmUrND4+Ml0sYVtSZSs4Pj4yXT1hW1ZlKzg+PjJdLGFbUmUrMTI+PjJdPWFbVmUrMTI+PjJdLGFbSGU+PjJdPWFbcWU+PjJdLGFbSGUrND4+Ml09YVtxZSs0Pj4yXSxhW0hlKzg+PjJdPWFbcWUrOD4+Ml0sYVtIZSsxMj4+Ml09YVtxZSsx''@;'; put 'put ''Mj4+Ml0sbzcoUmUsSGUsZikpLGxlPXJ0fWZ1bmN0aW9uIHVXKGwsYyxmKXt2YXIgdyxrLE0sUixwPTAsbT0wLEE9MCxiPTAsRz0wO2lmKFI9bGUsbGU9bGUrODB8MCxBPVIrNjR8MCxtPVIrMjR8MCxwPVIsdz1SKzU2fDAsKDB8KE09MHxCVChsfD0wLGN8PTAsMHxhWyhrPTgrKGZ8PTApfDAp''@;'; put 'put ''Pj4yXSkpKT49MSl7Zm9yKGFbdys0Pj4yXT0wLGFbdz4+Ml09MCxiPTB8dnIobDw8NCksZj0wOyEoKDB8Zik+PSgwfGwpKTspYVtiKyhmPDw0KSsxMj4+Ml09ZixwPTB8YVtrPj4yXSxhW20+PjJdPWFbKEc9YysoZjw8NSl8MCk+PjJdLGFbbSs0Pj4yXT1hW0crND4+Ml0sYVttKzg+PjJdPWFb''@;'; put 'put ''Rys4Pj4yXSxhW20rMTI+PjJdPWFbRysxMj4+Ml0sYVttKzE2Pj4yXT1hW0crMTY+PjJdLGFbbSsyMD4+Ml09YVtHKzIwPj4yXSxhW20rMjQ+PjJdPWFbRysyND4+Ml0sYVttKzI4Pj4yXT1hW0crMjg+PjJdLGFbQT4+Ml09YVt3Pj4yXSxhW0ErND4+Ml09YVt3KzQ+PjJdLG9XKG0sYisoZjw8''@;'; put 'put ''NCl8MCxNLHAsQSksZj1mKzF8MDtmb3IobT0wfHZyKGw8PDIpLGY9MDshKCgwfGYpPj0oMHxsKSk7KWFbbSsoZjw8Mik+PjJdPWIrKGY8PDQpLGY9ZisxfDA7Zm9yKHgxKG0sbCw0LDg5KSxBPTB8eDcoKSxmPTB8dnIobDw8MykscD0wOyEoKDB8cCk+PSgwfGwpKTspZEYocCxHPTB8YVttKyhw''@;'; put 'put ''PDwyKT4+Ml0sQSxmKyhhW0crMTI+PjJdPDwzKXwwLE0sMHxhW2s+PjJdLGMpLHA9cCsxfDA7Zm9yKEZ0KG0pLHA9MDshKCgwfHApPj0oMHxsKSk7KUZ0KDB8YVtiKyhwPDw0KSs0Pj4yXSkscD1wKzF8MDtGdChiKSx5eShBKX1lbHNlIGY9MDtyZXR1cm4gbGU9UiwwfGZ9ZnVuY3Rpb24gVjYo''@;'; put 'put ''bCxjLGYpe2N8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTA7MHwobD0wfGFbOTYrKHA9MHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSkmJihfWyhEPWwrNTZ8MCk+PjNdPStfW0Q+PjNdKyArKDB8YyksX1soRD1sKzY0fDApPj4zXT0rX1tEPj4zXSsgKygwfGYp''@;'; put 'put ''KSwwfChsPTB8YVtwKzEwOD4+Ml0pJiYoX1soRD1sKzU2fDApPj4zXT0rX1tEPj4zXSsgKygwfGMpLF9bKEQ9bCs2NHwwKT4+M109K19bRD4+M10rICsoMHxmKSksMHwobD0wfGFbcCsxMDA+PjJdKSYmKF9bKEQ9bCs1NnwwKT4+M109K19bRD4+M10rICsoMHxjKSxfWyhEPWwrNjR8MCk+PjNd''@;'; put 'put ''PStfW0Q+PjNdKyArKDB8ZikpLDB8KGw9MHxhW3ArMTA0Pj4yXSkmJihfWyhEPWwrNTZ8MCk+PjNdPStfW0Q+PjNdKyArKDB8YyksX1soRD1sKzY0fDApPj4zXT0rX1tEPj4zXSsgKygwfGYpKSxEPTB8YVtwKzg+PjJdO2U6ZG97aWYoMHxEKWZvcihNPSsoMHxjKSxiPSsoMHxmKSxjPTB8YVtE''@;'; put 'put ''KzQ+PjJdLGw9MDs7KXtpZigoMHxsKT49KDB8YykpYnJlYWsgZTtmb3IoZj0wfGFbKGs9MHxhW0Q+PjJdKSsoNDgqbHwwKT4+Ml0sbT0wfGFbaysoNDgqbHwwKSs0Pj4yXSxBPTB8YVtrKyg0OCpsfDApKzg+PjJdLHc9MHxhW2srKDQ4Kmx8MCkrMTI+PjJdLHA9MDshKCgwfHApPj0oMHxtKSk7''@;'; put 'put ''KV9bKFI9ZisocDw8NCl8MCk+PjNdPStfW1I+PjNdK00sX1soUj1mKyhwPDw0KSs4fDApPj4zXT0rX1tSPj4zXStiLHA9cCsxfDA7MHxBJiYoX1soUj1rKyg0OCpsfDApKzE2fDApPj4zXT0rX1tSPj4zXStNLF9bKFI9aysoNDgqbHwwKSsyNHwwKT4+M109K19bUj4+M10rYiksMHx3JiYoX1so''@;'; put 'put ''Uj1rKyg0OCpsfDApKzMyfDApPj4zXT0rX1tSPj4zXStNLF9bKFI9aysoNDgqbHwwKSs0MHwwKT4+M109K19bUj4+M10rYiksbD1sKzF8MH19d2hpbGUoMCl9ZnVuY3Rpb24gY1cobCxjLGYpe3ZhciBtLEEsdyxiLGssTSxELHA9MCxSPTA7Zm9yKFI9MTYrKGw9MHxhWyh3PTE2KyhsfD0wKXww''@;'; put 'put ''KT4+Ml0pfDAsaz0rX1socD1sKzMyfDApPj4zXSsobT0rKDB8KGN8PTApKSksRD0rX1soTT1sKzI0fDApPj4zXSsoQT0rKDB8KGZ8PTApKSksYj0rX1sobD1sKzQwfDApPj4zXStBLF9bUj4+M109K19bUj4+M10rbSxfW00+PjNdPUQsX1twPj4zXT1rLF9bbD4+M109YiwwIT0oMHwocD0wfGFb''@;'; put 'put ''MTIrKGw9MHxhW3c+PjJdKT4+Ml0pKSYmMCE9KDB8ZmVbcCs4MT4+MF0pJiYoX1soUj1wKzU2fDApPj4zXT0rX1tSPj4zXSttLF9bKHA9cCs2NHwwKT4+M109K19bcD4+M10rQSkscD0xOyEoKDB8cCk+KDB8YVtsKzE4MD4+Ml0pKTspY1coMHxhWygwfGFbbCsxODQ+PjJdKSsocDw8Mik+PjJd''@;'; put 'put ''LGMsZikscD1wKzF8MCxsPTB8YVt3Pj4yXX1mdW5jdGlvbiBmVyhsLGMsZixwKXt2YXIgbTtyZXR1cm4obT0wfFVkKGx8PTAsY3w9MCxmfD0wLHB8PTApKT8obD0wfGZ1bmN0aW9uIEJyZShsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgQT0wLHc9MCxiPTAsaz0wLE09''@;'; put 'put ''MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MDtlOmRve2lmKCgwfGwpPDEpbT0wLWx8MDtlbHNlIGZvcihiZT0wPT0oMHxwKSxwZT0wPT0oMHxtKSxiPTA7Oyl7aWYoKDB8Yik9PSgwfGwpKXttPTA7YnJlYWsgZX1mb3IoZ2U9MHxhW2MrKGI8PDIpPj4yXSxBPWJlP2dlOnAs''@;'; put 'put ''Uj0uMDEzODg4ODg4ODg4ODg4ODg4KihEPSsoMHwoaz0wfGFbZisoYjw8Myk+PjJdKSkpLHE9LjAxMzg4ODg4ODg4ODg4ODg4OCooRz0rKDB8KE09MHxhW2YrKGI8PDMpKzQ+PjJdKSkpLHc9MHxEdChnZSk7dzspe19bKE9lPTB8YVsxMzIrKG09MHxhW3crMTY+PjJdKT4+Ml0pPj4zXT0rX1tP''@;'; put 'put ''ZT4+M10rUixfWyhPZT1PZSs4fDApPj4zXT0rX1tPZT4+M10rcSxfWyhPZT1tKzE2fDApPj4zXT0rX1tPZT4+M10rRCxfWyhPZT1tKzI0fDApPj4zXT0rX1tPZT4+M10rRywwfChtPTB8YVttKzEwOD4+Ml0pJiYoX1soT2U9bSs1NnwwKT4+M109K19bT2U+PjNdK0QsX1soT2U9bSs2NHwwKT4+''@;'; put 'put ''M109K19bT2U+PjNdK0cpO3Q6ZG97aWYoIXBlKWZvcihtPTB8dzAoQSx3KTs7KXtpZighbSlicmVhayB0O1Y2KG0sayxNKSxtPTB8UzAoQSxtKX19d2hpbGUoMCk7dz0wfHp0KGdlLHcpfWNXKGdlLGssTSksYj1iKzF8MH19d2hpbGUoMCk7cmV0dXJuIDB8bX0obCxjLG0sZiwwfGFbcCsxMj4+''@;'; put 'put ''Ml0pLEZ0KG0pKTpsPTEsMHxsfWZ1bmN0aW9uIFRDKGwsYyxmLHApe3ZhciBELFIsRyxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxxPTAscGU9MDtpZihHPWxlLGxlPWxlKzMyfDAsUj1HLCEoRD0wfGZXKGx8PTAsY3w9MCxmfD0wLHB8PTApKSl7Zm9yKGlnKGYpLGFbUj4+Ml09YVsoTT0xNiso''@;'; put 'put ''MHxhW2YrMTY+PjJdKXwwKT4+Ml0sYVtSKzQ+PjJdPWFbTSs0Pj4yXSxhW1IrOD4+Ml09YVtNKzg+PjJdLGFbUisxMj4+Ml09YVtNKzEyPj4yXSxhW1IrMTY+PjJdPWFbTSsxNj4+Ml0sYVtSKzIwPj4yXT1hW00rMjA+PjJdLGFbUisyND4+Ml09YVtNKzI0Pj4yXSxhW1IrMjg+PjJdPWFbTSsy''@;'; put 'put ''OD4+Ml0sbT1SKzh8MCxBPVIrMTZ8MCx3PVIrMjR8MCxwPTA7ISgoMHxwKT49KDB8bCkpOyl7Zm9yKGI9MHxhWzE4MCsoaz0wfGFbMTYrKDB8YVtjKyhwPDwyKT4+Ml0pPj4yXSk+PjJdLGs9aysxODR8MCxmPTE7ISgoMHxmKT4oMHxiKSk7KV9bUj4+M109K19bKCtfW1I+PjNdPCtfWyhwZT0x''@;'; put 'put ''NisoMHxhWzE2KygwfGFbKDB8YVtrPj4yXSkrKGY8PDIpPj4yXSk+PjJdKXwwKT4+M10/UjpwZSk+PjNdLHE9MTYrKHBlPTB8YVsxNisoMHxhWygwfGFbaz4+Ml0pKyhmPDwyKT4+Ml0pPj4yXSl8MCxfW20+PjNdPStfWygrX1ttPj4zXTwrX1twZSsyND4+M10/UjpxKSs4Pj4zXSxfW0E+PjNd''@;'; put 'put ''PStfWygrX1tBPj4zXT4rX1twZSszMj4+M10/UjpxKSsxNj4+M10sX1t3Pj4zXT0rX1soK19bdz4+M10+K19bcGUrNDA+PjNdP1I6cSkrMjQ+PjNdLGY9ZisxfDA7cD1wKzF8MH1hW00+PjJdPWFbUj4+Ml0sYVtNKzQ+PjJdPWFbUis0Pj4yXSxhW00rOD4+Ml09YVtSKzg+PjJdLGFbTSsxMj4+''@;'; put 'put ''Ml09YVtSKzEyPj4yXSxhW00rMTY+PjJdPWFbUisxNj4+Ml0sYVtNKzIwPj4yXT1hW1IrMjA+PjJdLGFbTSsyND4+Ml09YVtSKzI0Pj4yXSxhW00rMjg+PjJdPWFbUisyOD4+Ml19cmV0dXJuIGxlPUcsMHxEfWZ1bmN0aW9uIGE3KGwsYyxmLHApe3ZhciBBO3JldHVybiBsfD0wLGN8PTAsZnw9''@;'; put 'put ''MCxBPWxlLGxlPWxlKzE2fDAsKHB8PTApfHxQcig5OTUzNCw5OTU0MCwxNDAwLDk5NTQ3KSxmPTB8eGMobCxmLGYpLGFbcCs4Pj4yXT1mLGFbcCsxMj4+Ml09MCxhW3ArMjA+PjJdPTAsUzEobCxjLHApLGxlPUEsMHxhW3ArMTY+PjJdfWZ1bmN0aW9uIHhjKGwsYyxmKXtjfD0wLGZ8PTA7dmFy''@;'; put 'put ''IHAsbSx3LEE9MDt3PWxlLGxlPWxlKzE2fDAsQT13LHA9dys0fDAsbT0wfExpKGx8PTAsOTk2ODkpO2U6ZG97aWYobSlpZihhW0E+PjJdPXAsQT0xPT0oMHxpbChtLDEzNzM5NSxBKSksbD0wfGFbcD4+Ml0sQSYoMHxsKT4tMSljPWw7ZWxzZXtzd2l0Y2goMHxmZVttPj4wXSl7Y2FzZSA4NDpj''@;'; put 'put ''YXNlIDExNjpicmVhaztkZWZhdWx0OmJyZWFrIGV9Yz1mfX13aGlsZSgwKTtyZXR1cm4gbGU9dywwfGN9ZnVuY3Rpb24gUzEobCxjLGYpe3JldHVybiBjfD0wLGZ8PTAsMHxmdW5jdGlvbiBOMihsLGMsZil7bHw9MCxjfD0wO3ZhciBtLEEsdyxrLEQsZ2UscD0wLGI9MCxiZT0wO2dlPWxlLGxl''@;'; put 'put ''PWxlKzY0fDAsYj1nZSs4fDAsdz1nZSxtPWdlKzQ4fDAsQT1nZSs0NHwwLChmfD0wKXx8UHIoOTk1MzQsOTk1NDAsMTI5Miw5OTU4MSksYVsoZisyOHwwKT4+Ml09MCxhWyhEPWYrMTZ8MCk+PjJdPWMsYVsoaz1mKzR8MCk+PjJdPTAsYVtmKzI0Pj4yXT0wO2U6ZG97aWYoMHxsJiYocD0wfGZl''@;'; put 'put ''W2w+PjBdLHA8PDI0Pj4yNCkpc3dpdGNoKHA8PDI0Pj4yNHwwKXtjYXNlIDk3OmlmKDB8czIobCw5OTU5OSw1KSl7aWYoMHxzMihsLDk5NjA1LDYpKWJyZWFrIGU7YVtEPj4yXT01LGFbYj4+Ml09bSxiPSgwfGlsKGwrNXwwLDk5NjEyLGIpKT4wLGpuW2Y+PjJdPWImKGJlPStqblttPj4yXSk+''@;'; put 'put ''MD9iZToxO2JyZWFrIGV9aWYoYVtEPj4yXT00LGI9MHxDbChsKzV8MCxmKSxhW3c+PjJdPUEsISgoYj0oMHxpbChiLDEzNzM5NSx3KSk+MCkmKDB8KGM9MHxhW0E+PjJdKSk+MCkpYnJlYWsgZTthW2s+PjJdPWM7YnJlYWsgZTtjYXNlIDk5OmlmKHA8PDI0Pj4yNCE9OTl8fDB8WmkobCwxMDgw''@;'; put 'put ''MDYpKWJyZWFrIGU7YVtEPj4yXT0xO2JyZWFrIGU7Y2FzZSAxMDM6aWYocDw8MjQ+PjI0IT0xMDN8fDB8WmkobCwxMTE0OTQpKWJyZWFrIGU7YVtEPj4yXT0zO2JyZWFrIGU7Y2FzZSAxMTA6aWYocDw8MjQ+PjI0IT0xMTB8fDB8WmkobCwxMTE0ODEpKWJyZWFrIGU7YVtEPj4yXT0yO2JyZWFr''@;'; put 'put ''IGU7ZGVmYXVsdDpicmVhayBlfX13aGlsZSgwKTtyZXR1cm4gbGU9Z2UsMHxhW0Q+PjJdfSgwfExpKGx8PTAsOTk1NzIpLGMsZil9ZnVuY3Rpb24gQ2wobCxjKXtsfD0wLGN8PTA7dmFyIGY9MCxwPTAsbT0wO2U6ZG97aWYoOTU9PSgwfGZlW2w+PjBdKSlmb3IocD1jKzI4fDAsZj0xOzspe2w9''@;'; put 'put ''bCsxfDA7dDpmb3IoOzspe2lmKCEoZiYmKGM9MHxmZVtsPj4wXSxjPDwyND4+MjQpKSlicmVhayBlO3N3aXRjaChjPDwyND4+MjR8MCl7Y2FzZSA5OTptPTEwO2JyZWFrIHQ7Y2FzZSAxMDU6bT05O2JyZWFrIHQ7Y2FzZSAxMTc6bT0xMTticmVhayB0O2Nhc2UgMTE2Om09MTI7YnJlYWsgdDtj''@;'; put 'put ''YXNlIDk4OmM9MzI7YnJlYWsgdDtjYXNlIDEwODptPTc7YnJlYWsgdDtjYXNlIDExNDptPTg7YnJlYWsgdDtkZWZhdWx0OmY9MH19Nz09KDB8bSk/KG09MCxjPTQpOjg9PSgwfG0pPyhtPTAsYz04KTo5PT0oMHxtKT8obT0wLGM9NjQpOjEwPT0oMHxtKT8obT0wLGM9MSk6MTE9PSgwfG0pPyht''@;'; put 'put ''PTAsYz0yKToxMj09KDB8bSkmJihtPTAsYz0xNiksYVtwPj4yXT1hW3A+PjJdfGN9fXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gWG1lKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wO3ZhciB3LGIsbT0wLEE9MDtiPWxlLGxlPWxlKzgwfDAsQT1iKzY0fDAsdz1iLGFbKHB8PTApPj4yXT0w''@;'; put 'put ''O2Rve209MHxmZVtjPj4wXSxjPWMrMXwwfXdoaWxlKDAhPSgwfCRjKG0pKSk7ZTpkb3tzd2l0Y2goMHxtKXtjYXNlIDY5OmlmKGFbbD4+Ml09MCwhKGM9MHxnRihjLGwrOHwwKSkpe2FbcD4+Ml09MSxjPTA7YnJlYWsgZX1mJiYoYVtsKzcyPj4yXT1hW2Y+PjJdKTticmVhaztjYXNlIDEwMTpp''@;'; put 'put ''ZihhW2w+PjJdPTEsIShjPTB8Z0YoYyxsKzh8MCkpKXthW3A+PjJdPTEsYz0wO2JyZWFrIGV9ZiYmKGFbbCs3Mj4+Ml09YVtmPj4yXSk7YnJlYWs7Y2FzZSA4MDppZihhW2w+PjJdPTIsIShjPTB8SUMoYyxsKzh8MCkpKXthW3A+PjJdPTEsYz0wO2JyZWFrIGV9ZiYmKGFbbCs3Mj4+Ml09YVtm''@;'; put 'put ''KzQ+PjJdKTticmVhaztjYXNlIDExMjppZihhW2w+PjJdPTMsIShjPTB8SUMoYyxsKzh8MCkpKXthW3A+PjJdPTEsYz0wO2JyZWFrIGV9ZiYmKGFbbCs3Mj4+Ml09YVtmKzQ+PjJdKTticmVhaztjYXNlIDk4OmlmKGFbbD4+Ml09NCwhKGM9MHxJQyhjLGwrOHwwKSkpe2FbcD4+Ml09MSxjPTA7''@;'; put 'put ''YnJlYWsgZX1mJiYoYVtsKzcyPj4yXT1hW2YrOD4+Ml0pO2JyZWFrO2Nhc2UgNjY6aWYoYVtsPj4yXT01LCEoYz0wfElDKGMsbCs4fDApKSl7YVtwPj4yXT0xLGM9MDticmVhayBlfWYmJihhW2wrNzI+PjJdPWFbZis4Pj4yXSk7YnJlYWs7Y2FzZSA5OTppZighKGM9MHxycChjLEEpKSl7YVtw''@;'; put 'put ''Pj4yXT0xLGM9MDticmVhayBlfWlmKG09MHxQVCgwfGFbQT4+Ml0sdyksYVtBPj4yXT1tLCFtKXthW3A+PjJdPTEsYz0wO2JyZWFrIGV9aWYoMHxhW3c+PjJdKXthW2w+PjJdPTE0LG09dyxBPTY0KyhwPWwrOHwwKXwwO2Rve2FbcD4+Ml09YVttPj4yXSxwPXArNHwwLG09bSs0fDB9d2hpbGUo''@;'; put 'put ''KDB8cCk8KDB8QSkpO2lmKCFmKWJyZWFrIGU7YVtsKzcyPj4yXT1hW2YrNDA+PjJdO2JyZWFrIGV9aWYoYVtsPj4yXT05LGFbbCs4Pj4yXT1hW3crOD4+Ml0sIWYpYnJlYWsgZTthW2wrNzI+PjJdPWFbZisyND4+Ml07YnJlYWsgZTtjYXNlIDY3OmlmKCEoYz0wfHJwKGMsQSkpKXthW3A+PjJd''@;'; put 'put ''PTEsYz0wO2JyZWFrIGV9aWYobT0wfFBUKDB8YVtBPj4yXSx3KSxhW0E+PjJdPW0sIW0pe2FbcD4+Ml09MSxjPTA7YnJlYWsgZX1pZigwfGFbdz4+Ml0pe2FbbD4+Ml09MTMsbT13LEE9NjQrKHA9bCs4fDApfDA7ZG97YVtwPj4yXT1hW20+PjJdLHA9cCs0fDAsbT1tKzR8MH13aGlsZSgoMHxw''@;'; put 'put ''KTwoMHxBKSk7aWYoIWYpYnJlYWsgZTthW2wrNzI+PjJdPWFbZis0MD4+Ml07YnJlYWsgZX1pZihhW2w+PjJdPTgsYVtsKzg+PjJdPWFbdys4Pj4yXSwhZilicmVhayBlO2FbbCs3Mj4+Ml09YVtmKzIwPj4yXTticmVhayBlO2Nhc2UgNzY6aWYoYVtsPj4yXT02LCEoYz0wfElDKGMsbCs4fDAp''@;'; put 'put ''KSl7YVtwPj4yXT0xLGM9MDticmVhayBlfWYmJihhW2wrNzI+PjJdPWFbZisxMj4+Ml0pO2JyZWFrO2Nhc2UgODQ6aWYoYVtsPj4yXT03LCEoYz0wfFFjKGMsbCs4fDApKSl7YVtwPj4yXT0xLGM9MDticmVhayBlfWlmKCEoYz0wfFFjKGMsbCsxNnwwKSkpe2FbcD4+Ml09MSxjPTA7YnJlYWsg''@;'; put 'put ''ZX1pZighKGM9MHxQcmUoYyxsKzI0fDApKSl7YVtwPj4yXT0xLGM9MDticmVhayBlfWlmKCEoYz0wfFFjKGMsbCszMnwwKSkpe2FbcD4+Ml09MSxjPTA7YnJlYWsgZX1pZighKGM9MHxycChjLGwrNDB8MCkpKXthW3A+PjJdPTEsYz0wO2JyZWFrIGV9ZiYmKGFbbCs3Mj4+Ml09YVtmKzE2Pj4y''@;'; put 'put ''XSk7YnJlYWs7Y2FzZSA3MDppZihhW2w+PjJdPTEwLCEoYz0wfFFjKGMsbCs4fDApKSl7YVtwPj4yXT0xLGM9MDticmVhayBlfWlmKCEoYz0wfHJwKGMsbCsxNnwwKSkpe2FbcD4+Ml09MSxjPTA7YnJlYWsgZX1mJiYoYVtsKzcyPj4yXT1hW2YrMjg+PjJdKTticmVhaztjYXNlIDgzOmlmKGFb''@;'; put 'put ''bD4+Ml09MTEsIShjPTB8cnAoYyxsKzh8MCkpKXthW3A+PjJdPTEsYz0wO2JyZWFrIGV9ZiYmKGFbbCs3Mj4+Ml09YVtmKzMyPj4yXSk7YnJlYWs7Y2FzZSA3MzppZihhW2w+PjJdPTEyLCEoYz0wfGdGKGMsbCs4fDApKSl7YVtwPj4yXT0xLGM9MDticmVhayBlfWlmKCEoYz0wfHJwKGMsbCs0''@;'; put 'put ''MHwwKSkpe2FbcD4+Ml09MSxjPTA7YnJlYWsgZX1mJiYoYVtsKzcyPj4yXT1hW2YrMzY+PjJdKTticmVhaztjYXNlIDExNjppZihhW2w+PjJdPTE1LCEoYz0wfEttZShjLGwrOHwwKSkpe2FbcD4+Ml09MSxjPTA7YnJlYWsgZX1mJiYoYVtsKzcyPj4yXT1hW2YrNDQ+PjJdKTticmVhaztjYXNl''@;'; put 'put ''IDA6Yz0wO2JyZWFrO2RlZmF1bHQ6YVtwPj4yXT0xLGM9MH19d2hpbGUoMCk7cmV0dXJuIGxlPWIsMHxjfWZ1bmN0aW9uIGdGKGwsYyl7dmFyIHAsbSx3LGY9MCxBPTA7cmV0dXJuIHc9bGUsbGU9bGUrMTZ8MCxfWyhjfD0wKT4+M109K2kzKGx8PTAscD13KSwoMHwobT0wfGFbcD4+Ml0pKSE9''@;'; put 'put ''KDB8bCkmJihfW2MrOD4+M109K2kzKG0scCksKDB8bSkhPSgwfChBPTB8YVtwPj4yXSkpKSYmKF9bYysxNj4+M109K2kzKEEscCksKDB8QSkhPSgwfChmPTB8YVtwPj4yXSkpKT8oX1tjKzI0Pj4zXT0raTMoZixwKSxsPSgwfGYpPT0oMHwobD0wfGFbcD4+Ml0pKT8wOmwpOmw9MCxsZT13LDB8''@;'; put 'put ''bH1mdW5jdGlvbiBJQyhsLGMpe2N8PTA7dmFyIEEsYixrLGY9MCxwPTAsbT0wLHc9MDtrPWxlLGxlPWxlKzE2fDAsQT1rLGw9MHxqNihsfD0wLGI9ays0fDApO2Rve2lmKGwpe2Zvcih3PTB8c2goZj0wfGFbYj4+Ml0sMjQpLGFbYz4+Ml09ZixwPXcsbT0wOzspe2lmKCgwfG0pPj0oMHxmKSl7''@;'; put 'put ''Zj05O2JyZWFrfWlmKF9bcD4+M109K2kzKGwsQSksKDB8bCk9PSgwfChmPTB8YVtBPj4yXSkpKXtmPTU7YnJlYWt9aWYoX1twKzg+PjNdPStpMyhmLEEpLCgwfGYpPT0oMHwobD0wfGFbQT4+Ml0pKSl7Zj03O2JyZWFrfV9bcCsxNj4+M109MCxwPXArMjR8MCxmPTB8YVtjPj4yXSxtPW0rMXww''@;'; put 'put ''fWlmKDU9PSgwfGYpKXthW2I+PjJdPW0sRnQodyksbD0wO2JyZWFrfWlmKDc9PSgwfGYpKXthW2I+PjJdPW0sRnQodyksbD0wO2JyZWFrfWlmKDk9PSgwfGYpKXthW2I+PjJdPW0sYVtjKzQ+PjJdPXc7YnJlYWt9fWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiBsZT1rLDB8bH1mdW5jdGlvbiBy''@;'; put 'put ''cChsLGMpe2N8PTA7dmFyIHAsdyxiLGY9MCxtPTAsQT0wO2I9bGUsbGU9bGUrMTZ8MCxsPTB8ajYobHw9MCx3PWIpLHA9MHxhW3c+PjJdO2Rve2lmKDA9PSgwfGwpfCgwfHApPDEpbD0wO2Vsc2V7Zm9yKDsoZj0oQT0wfGZlW2w+PjBdKTw8MjQ+PjI0PT0wKV5BPDwyND4+MjQhPTQ1OylsPWwr''@;'; put 'put ''MXwwO2lmKGYpbD0wO2Vsc2V7Zm9yKG09QT0wfHNoKHArMXwwLDEpLGY9cDs7KXtpZihsPWwrMXwwLCgwfGYpPD0wKXtmPTk7YnJlYWt9aWYoISgoZj0wfGZlW2w+PjBdKTw8MjQ+PjI0KSl7Zj04O2JyZWFrfWZlW20+PjBdPWYsYVt3Pj4yXT1mPSgwfGFbdz4+Ml0pLTF8MCxtPW0rMXwwfWlm''@;'; put 'put ''KDg9PSgwfGYpKXtGdChBKSxsPTA7YnJlYWt9aWYoOT09KDB8Zikpe2ZlW20+PjBdPTAsYVtjPj4yXT1BO2JyZWFrfX19fXdoaWxlKDApO3JldHVybiBsZT1iLDB8bH1mdW5jdGlvbiBQVChsLGMpe3ZhciBmO3N3aXRjaChjfD0wLDB8KGY9MHxmZVsobHw9MCk+PjBdKSl7Y2FzZSA5MTpsPTB8''@;'; put 'put ''ZnVuY3Rpb24gRlQobCxjKXtsfD0wO3ZhciBBLGssTSxELGY9MCxwPTAsbT0wLHc9MCxiPTA7RD1sZSxsZT1sZSsxNnwwLGs9RCxhWyhjfD0wKT4+Ml09MSxBPTB8UWMobCxNPWMrOHwwKTtkb3tpZigwIT0oMHxBKSYmMCE9KDB8KHc9MHxRYyhBLGMrMTZ8MCkpKSYmMCE9KDB8KHA9MHxRYyh3''@;'; put 'put ''LGMrMjR8MCkpKSYmMCE9KDB8KG09MHxRYyhwLGMrMzJ8MCkpKSYmMCE9KDB8KGY9MHxqNihtLGI9Yys0MHwwKSkpKXtmb3IobT0wfHNoKGM9MHxhW2I+PjJdLDgpLHA9MDs7KXtpZigoMHxwKT49KDB8Yykpe2Y9MTM7YnJlYWt9aWYoIShmPTB8UWMoZixrKSkpe2Y9OTticmVha31pZihqbltt''@;'; put 'put ''KyhwPDwzKT4+Ml09K19baz4+M10sIShmPTB8cnAoZixtKyhwPDwzKSs0fDApKSl7Zj0xMjticmVha31wPXArMXwwLGM9MHxhW2I+PjJdfWlmKDk9PSgwfGYpKXtGdChtKSxsPTA7YnJlYWt9aWYoMTI9PSgwfGYpKXtGdChtKSxsPTA7YnJlYWt9aWYoMTM9PSgwfGYpKXthW00rMzY+PjJdPW07''@;'; put 'put ''YnJlYWt9fWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiBsZT1ELDB8bH0obCsxfDAsYyk7YnJlYWs7Y2FzZSA0MDpsPTB8ZnVuY3Rpb24gSFQobCxjKXtsfD0wO3ZhciBiLE0sUixmPTAscD0wLG09MCxBPTAsdz0wLGs9MCxEPTA7Uj1sZSxsZT1sZSsxNnwwLE09UixhWyhjfD0wKT4+Ml09Mixi''@;'; put 'put ''PTB8UWMobCxjKzh8MCk7ZG97aWYoMCE9KDB8YikmJjAhPSgwfChrPTB8UWMoYixjKzE2fDApKSkmJjAhPSgwfChwPTB8UWMoayxjKzI0fDApKSkmJjAhPSgwfChtPTB8UWMocCxjKzMyfDApKSkmJjAhPSgwfChBPTB8UWMobSxjKzQwfDApKSkmJjAhPSgwfCh3PTB8UWMoQSxjKzQ4fDApKSkm''@;'; put 'put ''JjAhPSgwfChmPTB8ajYodyxEPWMrNTZ8MCkpKSl7Zm9yKEE9MHxzaChwPTB8YVtEPj4yXSw4KSxtPTA7Oyl7aWYoKDB8bSk+PSgwfHApKXtmPTE1O2JyZWFrfWlmKCEoZj0wfFFjKGYsTSkpKXtmPTExO2JyZWFrfWlmKGpuW0ErKG08PDMpPj4yXT0rX1tNPj4zXSwhKGY9MHxycChmLEErKG08''@;'; put 'put ''PDMpKzR8MCkpKXtmPTE0O2JyZWFrfW09bSsxfDAscD0wfGFbRD4+Ml19aWYoMTE9PSgwfGYpKXtGdChBKSxsPTA7YnJlYWt9aWYoMTQ9PSgwfGYpKXtGdChBKSxsPTA7YnJlYWt9aWYoMTU9PSgwfGYpKXthW2MrNjA+PjJdPUE7YnJlYWt9fWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiBsZT1S''@;'; put 'put ''LDB8bH0obCsxfDAsYyk7YnJlYWs7Y2FzZSA0NzpjYXNlIDM1OmFbYz4+Ml09MCxhW2MrOD4+Ml09bDticmVhaztkZWZhdWx0OjB8aXYoZik/KGFbYz4+Ml09MCxhW2MrOD4+Ml09bCk6bD0wfXJldHVybiAwfGx9ZnVuY3Rpb24gUWMobCxjKXtjfD0wO3ZhciBwLG0sZj0wO3JldHVybiBtPWxl''@;'; put 'put ''LGxlPWxlKzE2fDAscD0raTMobHw9MCxmPW0pLCgwfChmPTB8YVtmPj4yXSkpPT0oMHxsKT9mPTA6X1tjPj4zXT1wLGxlPW0sMHxmfWZ1bmN0aW9uIFByZShsLGMpe2N8PTA7dmFyIGYscD0wO3JldHVybiBmPWxlLGxlPWxlKzE2fDAsbD0wfGo2KGx8PTAscD1mKSxhW2M+PjJdPSgwfChwPTB8''@;'; put 'put ''YVtwPj4yXSkpPDA/MDowfHA/MjoxLGxlPWYsMHxsfWZ1bmN0aW9uIEttZShsLGMpe3ZhciBmLHA7cmV0dXJuIGY9bGUsbGU9bGUrMTZ8MCxhWyhjfD0wKT4+Ml09MHxmdW5jdGlvbiBEQWUobCxjLGYpe3JldHVybiAwfGYkKGx8PTAsY3w9MCxmfD0wLC0xLDApfShsfD0wLHA9ZiwxMCksbGU9''@;'; put 'put ''ZiwwfCgoMHwoYz0wfGFbcD4+Ml0pKT09KDB8bCk/MDpjKX1mdW5jdGlvbiBqNihsLGMpe3ZhciBmLHA7cmV0dXJuIGY9bGUsbGU9bGUrMTZ8MCxhWyhjfD0wKT4+Ml09MHxrTChsfD0wLHA9ZiwxMCksbGU9ZiwwfCgoMHwoYz0wfGFbcD4+Ml0pKT09KDB8bCk/MDpjKX1mdW5jdGlvbiBHaChs''@;'; put 'put ''LGMsZil7cmV0dXJuIDB8ZnVuY3Rpb24gTGEobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgTSxSLG09MCxBPTAsdz0wLGI9MCxrPTAsRD0wO1I9bGUsbGU9bGUrOTZ8MCxNPVIsRD1SKzgwfDA7ZG97aWYobCl7Zm9yKHB8fChwPTB8c2goMSwyMCksYVtwKzQ+PjJdPWY+Pj4wPjgw''@;'; put 'put ''P2Y6ODApLGs9MHxhW3ArND4+Ml0sKGY9MHxhW3A+PjJdKT8odTIoKGI9MHxVYSgwfGFbcCs4Pj4yXSwwfEFyKHc9ZisxMDB8MCxrKSkpKygwfEFyKGssZikpfDAsMCwxMDAqa3wwKSxmPWwpOih3PTEwMCxmPWwsYj0wfHNoKDEwMCxrKSk7Zj0wfFhtZShNLGYsYyxEKTspe2w9MHxhW3A+PjJd''@;'; put 'put ''LG09dzw8MSxBPTB8QXIodyxrKSwoMHxsKT09KDB8dyk/KHUyKChiPTB8VWEoYiwwfEFyKG0saykpKStBfDAsMCwwfEEpLGw9MHxhW3A+PjJdKTptPXcsQT1NLHc9ODArKGw9YisoMHxBcihsLGspKXwwKXwwO2Rve2FbbD4+Ml09YVtBPj4yXSxsPWwrNHwwLEE9QSs0fDB9d2hpbGUoKDB8bCk8''@;'; put 'put ''KDB8dykpO2FbcD4+Ml09MSsoMHxhW3A+PjJdKSx3PW19aWYoMHxhW0Q+PjJdJiYoYVsoRD1wKzE2fDApPj4yXT0xfGFbRD4+Ml0pLGY9MHxhW3A+PjJdKXthW3ArOD4+Ml09MHxVYShiLDB8QXIoZixrKSk7YnJlYWt9RnQoYiksRnQocCkscD0wO2JyZWFrfX13aGlsZSgwKTtyZXR1cm4gbGU9''@;'; put 'put ''UiwwfHB9KGx8PTAsY3w9MCxmfD0wLDApfWZ1bmN0aW9uIG1GKGwpe3JldHVybiAwfEdoKGx8PTAsMCwwKX1mdW5jdGlvbiBGcmUobCl7dmFyIHAsYz0wLGY9MCxtPTAsQT0wLHc9MDtpZihwPTB8YVsxMisobHw9MCk+PjJdLDB8bCl7Zm9yKG09MHxhW2wrOD4+Ml0sQT1sKzR8MCx3PTA9PSgw''@;'; put 'put ''fHApLGM9MDshKCgwfGMpPj0oMHxhW2w+PjJdKSk7KWY9bSsoMHxBcigwfGFbQT4+Ml0sYykpfDAsd3x8Q29bMTI3JnBdKGYpLCRtZShmKSxjPWMrMXwwO0Z0KG0pLEZ0KGwpfX1mdW5jdGlvbiAkbWUobCl7c3dpdGNoKDB8YVsobHw9MCk+PjJdKXtjYXNlIDM6Y2FzZSAyOmNhc2UgNTpjYXNl''@;'; put 'put ''IDQ6Y2FzZSA2OkZ0KDB8YVtsKzgrND4+Ml0pO2JyZWFrO2Nhc2UgNzpjYXNlIDEyOkZ0KDB8YVtsKzQwPj4yXSk7YnJlYWs7Y2FzZSA5OmNhc2UgODpjYXNlIDExOkZ0KDB8YVtsKzg+PjJdKTticmVhaztjYXNlIDE0OmNhc2UgMTM6IWZ1bmN0aW9uIHFtZShsKXt2YXIgYz0wLGY9MCxwPTA7''@;'; put 'put ''c3dpdGNoKDB8YVsobHw9MCk+PjJdKXtjYXNlIDE6Zm9yKHA9bCs0MHwwLGM9bCs4KzM2fDAsbD0wO2Y9MHxhW2M+PjJdLCEoKDB8bCk+PSgwfGFbcD4+Ml0pKTspRnQoMHxhW2YrKGw8PDMpKzQ+PjJdKSxsPWwrMXwwO0Z0KGYpO2JyZWFrO2Nhc2UgMjpmb3IocD1sKzU2fDAsZj1sKzYwfDAs''@;'; put 'put ''bD0wO2M9MHxhW2Y+PjJdLCEoKDB8bCk+PSgwfGFbcD4+Ml0pKTspRnQoMHxhW2MrKGw8PDMpKzQ+PjJdKSxsPWwrMXwwO0Z0KGMpfX0obCs4fDApO2JyZWFrO2Nhc2UgMTA6RnQoMHxhW2wrMTY+PjJdKX19ZnVuY3Rpb24gREMobCxjLGYpe2x8PTAsZnw9MDt2YXIgayxELFIscD0wLG09MCxB''@;'; put 'put ''PTAsdz0wLGI9MCxNPTA7Uj1sZSxsZT1sZSsxNnwwLGs9Uis0fDAsRD1SLGFbKGN8PTApPj4yXT0wLGFbZj4+Ml09MCE9KDB8U2MoMHxjcihsKSkpJjEscD0wfGFbNDcxODRdO2U6ZG97aWYoMHxwJiYoQT0wfEhvKGwscCksdz0wfGZlW0E+PjBdLHc8PDI0Pj4yNCkpe2ZvcihwPTIwMzg4Ozsp''@;'; put 'put ''e2lmKCEobT0wfGFbcD4+Ml0pKWJyZWFrIGU7aWYodzw8MjQ+PjI0PT0oMHxmZVttPj4wXSkmJjA9PSgwfFppKEEsbSkpKWJyZWFrO3A9cCsxMnwwfWFbYz4+Ml09YVtwKzQ+PjJdLGFbZj4+Ml09YVtwKzg+PjJdfX13aGlsZSgwKTswfChwPTB8YVs0NzE5NV0pJiYxPT0oMHxhW2Y+PjJdKSYm''@;'; put 'put ''KGI9MHxIbyhsLHApLDB8ZmVbYj4+MF0pJiZoVyhiLGYpLDB8KHA9MHxhWzQ3MTk2XSkmJjE9PSgwfGFbYz4+Ml0pJiYoTT0wfEhvKGwscCksMHxmZVtNPj4wXSkmJmhXKE0sYyksMHxmZVsxNTMrKDB8YVtsKzE2Pj4yXSk+PjBdJiYoYj1sKy00OHwwLERDKDB8S2Eodz0wfGNyKDB8YVsoMj09''@;'; put 'put ''KDMmYVtsPj4yXXwwKT9sOmIpKzQwPj4yXSksMHxhWygyPT0oMHwoTT0zJmFbbD4+Ml0pKT9sOmIpKzQwPj4yXSwwfGFbKDM9PSgwfE0pP2w6bCs0OHwwKSs0MD4+Ml0sMCwwKSxrLEQpLGFbZj4+Ml09YVtrPj4yXXxhW2Y+PjJdLGFbYz4+Ml09YVtEPj4yXXxhW2M+PjJdKSxsZT1SfWZ1bmN0''@;'; put 'put ''aW9uIGhXKGwsYyl7bHw9MCxjfD0wO3ZhciBrLE0sUixmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxEPTA7Uj1sZSxsZT1sZSsxNnwwLE09UixrPVIrNHwwLGI9MCxmPTA7ZTpmb3IoOzspe2ZvcihhW2M+PjJdPWYsbT0oMHxiKTw0LEE9Mz09KDB8Yiksdz0wPT0oMHxiKTs7KXtpZighKG0mMCE9''@;'; put 'put ''KDB8ZmVbbD4+MF0pKSlicmVhayBlO2lmKGFbaz4+Ml09MCxwPTB8ZFcobCxrKSwhKGY9MHxhW2s+PjJdKSl7RD01O2JyZWFrIGV9aWYoIShBJihsPTg9PSgwfGYpKSkmJighKHcmbCl8fDB8ZmVbcD4+MF0pKWJyZWFrO2Fbaz4+Ml09MCxsPXB9Zj1hW2M+PjJdfGY8PChiPDwzKSxiPWIrMXww''@;'; put 'put ''LGw9cH01PT0oMHxEKSYmKGFbTT4+Ml09bCwkcigwLDk5Njk0LE0pKSxsZT1SfWZ1bmN0aW9uIGRXKGwsYyl7bHw9MCxjfD0wO3ZhciBwLG0sZj0wO2lmKG09bGUsbGU9bGUrMTZ8MCxhWyhwPW0pPj4yXT0wLCgwfChmPTB8dkYobCwyMDQ0OCxwKSkpPT0oMHxsKSl7Zm9yKDsoMHxsKSE9KDB8''@;'; put 'put ''KGY9MHx2RihsLDIwNDY0LHApKSk7KWw9ZjtmPTB8dkYobCwyMDUxMixwKX1yZXR1cm4gMCE9KDB8KGw9MHxhW3A+PjJdKSkmMD09KDE1Jmx8MCkmJihhW3A+PjJdPWx8PTEpLGFbYz4+Ml09YVtjPj4yXXxsLGxlPW0sMHxmfWZ1bmN0aW9uIHZGKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDtmb3Io''@;'; put 'put ''dmFyIHA9MCxtPTAsQT0wO3A9MHxhW2M+PjJdOyl7aWYoISgwfHMyKGwscCxtPTB8VW8ocCkpKSl7QT00O2JyZWFrfWM9Yys4fDB9cmV0dXJuIDQ9PSgwfEEpJiYoYVtmPj4yXT1hW2Y+PjJdfGFbYys0Pj4yXSxsPWwrbXwwKSwwfGx9ZnVuY3Rpb24gbDcobCxjKXtsfD0wLGN8PTA7dmFyIGY9''@;'; put 'put ''MCxwPTAsbT0wLEE9MCx3PTA7Zm9yKEE9MCxmPTA7NCE9KDB8QSk7KXtmb3IobT1jPj4oQTw8MykmMTUscD0xNDAwOzB8YVtwKzE2Pj4yXTspe2lmKCgwfG0pPT0oMHxhW3A+PjJdKSl7dz02O2JyZWFrfXA9cCsyNHwwfTY9PSgwfHcpJiYodz0wLGY9K19bcCs4Pj4zXStmKSxBPUErMXwwfXJl''@;'; put 'put ''dHVybiAxMCpmKitNbChsLDB8YVs0NzE4OF0sMSwwKX1mdW5jdGlvbiB5RihsLGMsZixwLG0sQSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgYixrLEQscSxwZSxnZSx3PTAsTT0wLFI9MCxHPTA7cmV0dXJuIEQ9bGUsbGU9bGUrODB8MCxiPUQrNzJ8MCxrPUQrOHwwLE09RCx3PStsNyhsfD0w''@;'; put 'put ''LEF8PTApLF9bTT4+M109dyo9dyxhW20rMTI+PjJdPUEsYVsoQT1tKzMyfDApPj4yXT1hWyhtPWMrKChsPXArM3wwKTw8NCl8MCk+PjJdLGFbQSs0Pj4yXT1hW20rND4+Ml0sYVtBKzg+PjJdPWFbbSs4Pj4yXSxhW0ErMTI+PjJdPWFbbSsxMj4+Ml0sKDB8cCk+KDB8ZikmJihHPStfW2MrKHA8''@;'; put 'put ''PDQpKzg+PjNdLStfW2MrKGw8PDQpKzg+PjNdKSpHKyhSPStfW2MrKHA8PDQpPj4zXS0rX1ttPj4zXSkqUjx3JiYocD1wKy0zfDApLGFbKGdlPWsrNDh8MCk+PjJdPWFbKHBlPWMrKHA8PDQpfDApPj4yXSxhW2dlKzQ+PjJdPWFbcGUrND4+Ml0sYVtnZSs4Pj4yXT1hW3BlKzg+PjJdLGFbZ2Ur''@;'; put 'put ''MTI+PjJdPWFbcGUrMTI+PjJdLGFbKHE9ayszMnwwKT4+Ml09YVsobD1jKyhwKzE8PDQpfDApPj4yXSxhW3ErND4+Ml09YVtsKzQ+PjJdLGFbcSs4Pj4yXT1hW2wrOD4+Ml0sYVtxKzEyPj4yXT1hW2wrMTI+PjJdLGFbKG09aysxNnwwKT4+Ml09YVsoZj1jKyhwKzI8PDQpfDApPj4yXSxhW20r''@;'; put 'put ''ND4+Ml09YVtmKzQ+PjJdLGFbbSs4Pj4yXT1hW2YrOD4+Ml0sYVttKzEyPj4yXT1hW2YrMTI+PjJdLGFbaz4+Ml09YVtBPj4yXSxhW2srND4+Ml09YVtBKzQ+PjJdLGFbays4Pj4yXT1hW0ErOD4+Ml0sYVtrKzEyPj4yXT1hW0ErMTI+PjJdLGFbYj4+Ml09ayxhW2IrND4+Ml09TSx0RChiLDky''@;'; put 'put ''LGssMSksYVtwZT4+Ml09YVtnZT4+Ml0sYVtwZSs0Pj4yXT1hW2dlKzQ+PjJdLGFbcGUrOD4+Ml09YVtnZSs4Pj4yXSxhW3BlKzEyPj4yXT1hW2dlKzEyPj4yXSxhW2w+PjJdPWFbcT4+Ml0sYVtsKzQ+PjJdPWFbcSs0Pj4yXSxhW2wrOD4+Ml09YVtxKzg+PjJdLGFbbCsxMj4+Ml09YVtxKzEy''@;'; put 'put ''Pj4yXSxhW2Y+PjJdPWFbbT4+Ml0sYVtmKzQ+PjJdPWFbbSs0Pj4yXSxhW2YrOD4+Ml09YVttKzg+PjJdLGFbZisxMj4+Ml09YVttKzEyPj4yXSxhWyhNPWMrKHArMzw8NCl8MCk+PjJdPWFbaz4+Ml0sYVtNKzQ+PjJdPWFbays0Pj4yXSxhW00rOD4+Ml09YVtrKzg+PjJdLGFbTSsxMj4+Ml09''@;'; put 'put ''YVtrKzEyPj4yXSxsZT1ELDB8cH1mdW5jdGlvbiBPYShsLGMsZixwLG0sQSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgayxNLFIscGUsZ2Usdz0wLGI9MCxEPTAsRz0wLHE9MDtyZXR1cm4gUj1sZSxsZT1sZSs4MHwwLGs9Uis3MnwwLE09Uis4fDAsRD1SLGI9K2w3KGx8PTAsQXw9MCksX1tE''@;'; put 'put ''Pj4zXT1iKj1iLGFbbSs4Pj4yXT1BLGFbKG09bSsxNnwwKT4+Ml09YVsobD1jKyhmPDw0KXwwKT4+Ml0sYVttKzQ+PjJdPWFbbCs0Pj4yXSxhW20rOD4+Ml09YVtsKzg+PjJdLGFbbSsxMj4+Ml09YVtsKzEyPj4yXSwoMHxwKT4oMHxmKSYmKHE9K19bYysoZjw8NCkrOD4+M10tK19bYysoKHc9''@;'; put 'put ''ZiszfDApPDw0KSs4Pj4zXSkqcSsoRz0rX1tsPj4zXS0rX1tjKyh3PDw0KT4+M10pKkc8Ynx8KHc9ZiksYVtNPj4yXT1hWyhwPWMrKHcrMzw8NCl8MCk+PjJdLGFbTSs0Pj4yXT1hW3ArND4+Ml0sYVtNKzg+PjJdPWFbcCs4Pj4yXSxhW00rMTI+PjJdPWFbcCsxMj4+Ml0sYVsoQT1NKzE2fDAp''@;'; put 'put ''Pj4yXT1hWyhmPWMrKHcrMjw8NCl8MCk+PjJdLGFbQSs0Pj4yXT1hW2YrND4+Ml0sYVtBKzg+PjJdPWFbZis4Pj4yXSxhW0ErMTI+PjJdPWFbZisxMj4+Ml0sYVsocGU9TSszMnwwKT4+Ml09YVsobD1jKyh3KzE8PDQpfDApPj4yXSxhW3BlKzQ+PjJdPWFbbCs0Pj4yXSxhW3BlKzg+PjJdPWFb''@;'; put 'put ''bCs4Pj4yXSxhW3BlKzEyPj4yXT1hW2wrMTI+PjJdLGFbKGdlPU0rNDh8MCk+PjJdPWFbbT4+Ml0sYVtnZSs0Pj4yXT1hW20rND4+Ml0sYVtnZSs4Pj4yXT1hW20rOD4+Ml0sYVtnZSsxMj4+Ml09YVttKzEyPj4yXSxhW2s+PjJdPWdlLGFbays0Pj4yXT1ELHREKGssOTIsTSwwKSxhWyhEPWMr''@;'; put 'put ''KHc8PDQpfDApPj4yXT1hW2dlPj4yXSxhW0QrND4+Ml09YVtnZSs0Pj4yXSxhW0QrOD4+Ml09YVtnZSs4Pj4yXSxhW0QrMTI+PjJdPWFbZ2UrMTI+PjJdLGFbbD4+Ml09YVtwZT4+Ml0sYVtsKzQ+PjJdPWFbcGUrND4+Ml0sYVtsKzg+PjJdPWFbcGUrOD4+Ml0sYVtsKzEyPj4yXT1hW3BlKzEy''@;'; put 'put ''Pj4yXSxhW2Y+PjJdPWFbQT4+Ml0sYVtmKzQ+PjJdPWFbQSs0Pj4yXSxhW2YrOD4+Ml09YVtBKzg+PjJdLGFbZisxMj4+Ml09YVtBKzEyPj4yXSxhW3A+PjJdPWFbTT4+Ml0sYVtwKzQ+PjJdPWFbTSs0Pj4yXSxhW3ArOD4+Ml09YVtNKzg+PjJdLGFbcCsxMj4+Ml09YVtNKzEyPj4yXSxsZT1S''@;'; put 'put ''LDB8d31mdW5jdGlvbiBGQShsLGMsZixwLG0pe2x8PTA7dmFyIEEsYix3PTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTA7TT0oaz0xMCoocD0rcCkvKCtEMCgrKChNPStfWyhmfD0wKT4+M10tKEc9K19bKGN8PTApPj4zXSkpKk0rKEQ9K19bZis4Pj4zXS0ocT0rX1tjKzg+PjNdKSkqRCkpKzFl''@;'; put 'put ''LTQpKSooKE0+PTA/MWUtNDotMWUtNCkrTSksYj1HLShSPS41KihrKj0oRD49MD8xZS00Oi0xZS00KStEKSksQT1xLShEPS41Kk0pLEQ9cStELHc9KEc9UitHKT4odz0ocT1iK00pPihNPUcrTSk/cTpNKT9HOncscD1EPihwPShSPUErayk+KGs9RCtrKT9SOmspP0Q6cCxrPUQ8KGs9UjxrP1I6''@;'; put 'put ''ayk/RDprLF9bbD4+M109YjwoTT1HPChNPXE8TT9xOk0pP0c6TSk/YjpNLF9bbCs4Pj4zXT1BPGs/QTprLF9bbCsxNj4+M109Yj53P2I6dyxfW2wrMjQ+PjNdPUE+cD9BOnB9ZnVuY3Rpb24gUWQobCxjLGYscCxtLEEsdyl7Znw9MCxwfD0wLG09K20sQT0rQSx3fD0wO3ZhciBrLE0sRCxSLEcs''@;'; put 'put ''cSxwZSxnZSxiZSxiPTA7Zm9yKHE9bGUsbGU9bGUrNDh8MCxNPXErMzJ8MCxrPXErMTZ8MCxHPXEsUj0wfGFbKEQ9MTIrKDB8YVsxNisobHw9MCk+PjJdKXwwKT4+Ml0sYVtEPj4yXT1jfD0wLGQyKGwsMHxhWzMzNisoMHxhW2w+PjJdKT4+Ml0pLHhoKGwsQSkscGU9MTAvKCtEMCgrKChiZT0r''@;'; put 'put ''X1twPj4zXS0rX1tmPj4zXSkqYmUrKGdlPStfWyhjPXArOHwwKT4+M10tK19bZis4Pj4zXSkqZ2UpKSsxZS00KSxfW3A+PjNdPXBlKigoYmU+PTA/MWUtNDotMWUtNCkrYmUpLF9bYz4+M109KChnZT49MD8xZS00Oi0xZS00KStnZSkqcGUsYz0wOyEoKDB8Yyk+PTQpJiYoYj13Pj4oYzw8Mykm''@;'; put 'put ''MjU1KTspYVtrPj4yXT1hW2Y+PjJdLGFbays0Pj4yXT1hW2YrND4+Ml0sYVtrKzg+PjJdPWFbZis4Pj4yXSxhW2srMTI+PjJdPWFbZisxMj4+Ml0sYVtNPj4yXT1hW3A+PjJdLGFbTSs0Pj4yXT1hW3ArND4+Ml0sYVtNKzg+PjJdPWFbcCs4Pj4yXSxhW00rMTI+PjJdPWFbcCsxMj4+Ml0sWjYo''@;'; put 'put ''RyxsLGssTSxtLEEsYiksYVtmPj4yXT1hW0c+PjJdLGFbZis0Pj4yXT1hW0crND4+Ml0sYVtmKzg+PjJdPWFbRys4Pj4yXSxhW2YrMTI+PjJdPWFbRysxMj4+Ml0sYz1jKzF8MDthW0Q+PjJdPVIsbGU9cX1mdW5jdGlvbiBaNihsLGMsZixwLG0sQSx3KXtsfD0wLGN8PTAsZnw9MCxwfD0wLG09''@;'; put 'put ''K20sQT0rQTt2YXIgayxNLEQscSxiPTAsUj0wLEc9MCxwZT0wO2ZvcihxPWxlLGxlPWxlKzMyfDAsTT1xKzE2fDAsaz1xLEQ9MTUmKHd8PTApLGI9MTQwMDtSPTB8YVtiPj4yXTspe2lmKCgwfEQpPT0oMHxSKSl7Rz00O2JyZWFrfWI9YisyNHwwfTQ9PSgwfEcpJiYoX1twPj4zXT0ocGU9K19b''@;'; put 'put ''Yis4Pj4zXSptKSorX1twPj4zXSxfWyhSPXArOHwwKT4+M109cGUqK19bUj4+M10sRz0wfGFbYisxNj4+Ml0sYVtrPj4yXT1hW2Y+PjJdLGFbays0Pj4yXT1hW2YrND4+Ml0sYVtrKzg+PjJdPWFbZis4Pj4yXSxhW2srMTI+PjJdPWFbZisxMj4+Ml0sYVtNPj4yXT1hW3A+PjJdLGFbTSs0Pj4y''@;'; put 'put ''XT1hW3ArND4+Ml0sYVtNKzg+PjJdPWFbcCs4Pj4yXSxhW00rMTI+PjJdPWFbcCsxMj4+Ml0sY3dbMTUmR10oYyxrLE0sbSxBLHcpLF9bZj4+M109K19bcD4+M10rICtfW2Y+PjNdLF9bKEc9Zis4fDApPj4zXT0rX1tSPj4zXSsgK19bRz4+M10pLGFbbD4+Ml09YVtmPj4yXSxhW2wrND4+Ml09''@;'; put 'put ''YVtmKzQ+PjJdLGFbbCs4Pj4yXT1hW2YrOD4+Ml0sYVtsKzEyPj4yXT1hW2YrMTI+PjJdLGxlPXF9ZnVuY3Rpb24geGYobCl7bHw9MDt2YXIgbSxBLGM9MCxmPTAscD0wO2lmKEE9bGUsbGU9bGUrMTZ8MCwobT0wfHZyKDMwNCkpfHwkcigxLDk5ODc2LEEpLGFbbT4+Ml09bD0wfGFbKHA9bCsx''@;'; put 'put ''NnwwKT4+Ml0sYVtwPj4yXT1tLGwpe2Y9bCsxNnwwLHA9NDArKGM9bSsxNnwwKXwwO2Rve2FbYz4+Ml09YVtmPj4yXSxjPWMrNHwwLGY9Zis0fDB9d2hpbGUoKDB8Yyk8KDB8cCkpO2Y9bCs1NnwwLHA9NDArKGM9bSs1NnwwKXwwO2Rve2FbYz4+Ml09YVtmPj4yXSxjPWMrNHwwLGY9Zis0fDB9''@;'; put 'put ''d2hpbGUoKDB8Yyk8KDB8cCkpO2FbbSsxNDQ+PjJdPWFbbCsxNDQ+PjJdLGFbbSsxNDg+PjJdPWFbbCsxNDg+PjJdLF9bbSsxNTI+PjNdPStfW2wrMTUyPj4zXSxhW20rMTM2Pj4yXT1hW2wrMTM2Pj4yXSxmPWwrOTZ8MCxwPTQwKyhjPW0rOTZ8MCl8MDtkb3thW2M+PjJdPWFbZj4+Ml0sYz1j''@;'; put 'put ''KzR8MCxmPWYrNHwwfXdoaWxlKCgwfGMpPCgwfHApKX1lbHNlIGFbbSsxNDQ+PjJdPTMsYVttKzE0OD4+Ml09MCxfW20rMTUyPj4zXT0xO3JldHVybiBsZT1BLDB8bX1mdW5jdGlvbiBPQyhsKXt2YXIgYztpZihjPTB8YVsobD0xNisobHw9MCl8MCk+PjJdKXJldHVybiBGdCgwfGFbYysyMTI+''@;'; put 'put ''PjJdKSxGdCgwfGFbYysyMDg+PjJdKSxGdCgwfGFbYysyMTY+PjJdKSxGdCgwfGFbYysyMjA+PjJdKSxGdCgwfGFbYysyMjQ+PjJdKSxGdCgwfGFbYysyMjg+PjJdKSxGdCgwfGFbYysyMzI+PjJdKSxGdCgwfGFbYysyMzY+PjJdKSxGdCgwfGFbYysyNDA+PjJdKSxGdCgwfGFbYysyNDQ+PjJd''@;'; put 'put ''KSxGdCgwfGFbYysyNDg+PjJdKSxGdCgwfGFbYysyNTI+PjJdKSxGdCgwfGFbYysyNTY+PjJdKSxGdCgwfGFbYysyNzI+PjJdKSxGdCgwfGFbYysyODQ+PjJdKSxGdCgwfGFbYysyODA+PjJdKSxhW2w+PjJdPWFbYz4+Ml0sdm9pZCBGdChjKTtQcig5OTkwMiw5OTkwNiwxMTcsOTk5MTMpfWZ1''@;'; put 'put ''bmN0aW9uIFExKGwsYyxmLHAsbSxBLHcpe3ZhciBiLGs7Znw9MCxwfD0wLG18PTAsQXw9MCx3fD0wLGs9MHxhWzE2KyhsfD0wKT4+Ml0sMCE9KDB8KGN8PTApKSYwIT0oMzI3NjgmKGI9MHxhW2wrMTUyPj4yXSl8MCkmJihhW2srMTkyPj4yXT1jKSwwIT0oNjU1MzYmYnwwKSYmKGFbaysyMTI+''@;'; put 'put ''PjJdPTB8bTIoQSx3KSwwIT0oMHxmKSkmJjAhPSgwfGZlW2Y+PjBdKT8oYVtrKzIwOD4+Ml09MHxtMihmLHcpLGw9MSk6bD0wO2Rve2lmKDQxOTQzMDQmYil7aWYoMHxwJiYwfGZlW3A+PjBdKXthW2srMjI4Pj4yXT0wfG0yKHAsdyksaXRbKGw9aysyNjB8MCk+PjFdPTF8aXRbbD4+MV0sbD0x''@;'; put 'put ''O2JyZWFrfShjPTB8YVtrKzE5Mj4+Ml0pJiYoYVtrKzIyOD4+Ml09MHxyYShjKSxsPTEpfX13aGlsZSgwKTtyZXR1cm4gMCE9KDB8bSkmMCE9KDgzODg2MDgmYnwwKSYmMCE9KDB8ZmVbbT4+MF0pJiYoYVtrKzI0ND4+Ml09MHxtMihtLHcpLGw9MSksMHxsfWZ1bmN0aW9uIHdGKGwsYyxmKXtj''@;'; put 'put ''fD0wO3ZhciBtLEEsdyxiLHA9MDtpZihiPWxlLGxlPWxlKzgwfDAsdz1iLEE9Yis4fDAscD0wfGFbOTIrKDB8YVs4KygwfGFbMTYrKG09MHxhWzE2OCsoMHxhWyhsfD0wKT4+Ml0pPj4yXSk+PjJdKT4+Ml0pPj4yXSxTMihsLGZ8PTApLDAhPSgwfChsPTB8TGkoYywxNDEwNjApKSkmJjAhPSgw''@;'; put 'put ''fGZlW2w+PjBdKSl1byhmLGwpLChsPTB8YVsocD1mKzR8MCk+PjJdKT4+PjA+PSgwfGFbZis4Pj4yXSk+Pj4wJiYoUTAoZiwxKSxsPTB8YVtwPj4yXSksZmVbbD4+MF09MCxhW3A+PjJdPWw9MHxhW2Y+PjJdO2Vsc2V7c3dpdGNoKCgwfG0pIT0oMHxjKSYwIT0oMHxwKSYmKHVvKGYscCksKGw9''@;'; put 'put ''MHxhWyhwPWYrNHwwKT4+Ml0pPj4+MD49KDB8YVtmKzg+PjJdKT4+PjAmJihRMChmLDEpLGw9MHxhW3A+PjJdKSxhW3A+PjJdPWwrMSxmZVtsPj4wXT05NSksMHxraShjKSl7Y2FzZSAwOnA9KDB8bSk9PSgwfGMpPzExMTQ5NDo5OTkyNyxsPSgwfGFbYz4+Ml0pPj4+NDticmVhaztjYXNlIDE6''@;'; put 'put ''cD0xMTE0ODEsbD0oMHxhW2M+PjJdKT4+PjQ7YnJlYWs7Y2FzZSAyOnA9MTExNDUwLGw9KDB8YVtjPj4yXSk+Pj40O2JyZWFrO2RlZmF1bHQ6cD0wLGw9MH11byhmLHApLGFbdz4+Ml09bCxvbyhBLDk5OTMzLHcpLHVvKGYsQSksKGw9MHxhWyhwPWYrNHwwKT4+Ml0pPj4+MD49KDB8YVtmKzg+''@;'; put 'put ''PjJdKT4+PjAmJihRMChmLDEpLGw9MHxhW3A+PjJdKSxmZVtsPj4wXT0wLGFbcD4+Ml09bD0wfGFbZj4+Ml19cmV0dXJuIGxlPWIsMHxsfWZ1bmN0aW9uIFMyKGwsYyl7Y3w9MDt2YXIgbSxBLHcsZj0wLHA9MDt3PWxlLGxlPWxlKzE0NHwwLEE9dyxtPXcrOHwwLCgwfChmPTB8YVsxNjArKGx8''@;'; put 'put ''PTApPj4yXSkpPjEmJjY0JmFbbCsxNTI+PjJdfDAmJih1byhjLDB8YVsoMHxhWzMwOCsoMHxhW2w+PjJdKT4+Ml0pKyhmPDwyKT4+Ml0pLChmPTB8YVsocD1jKzR8MCk+PjJdKT4+PjA+PSgwfGFbYys4Pj4yXSk+Pj4wJiYoUTAoYywxKSxmPTB8YVtwPj4yXSksYVtwPj4yXT1mKzEsZmVbZj4+''@;'; put 'put ''MF09OTUpLCgwfChwPTB8YVtsKzE5Nj4+Ml0pKT4wfCgwfChmPTB8YVtsKzIwMD4+Ml0pKT4wJiYoYVtBPj4yXT1wLGFbQSs0Pj4yXT1mLG9vKG0sOTk5MzcsQSksdW8oYyxtKSksbGU9d31mdW5jdGlvbiBwVyhsLGMsZil7Y3w9MDt2YXIgRCxSLEcscSxwZSxwPTAsbT0wLEE9MCx3PTAsYj0w''@;'; put 'put ''LGs9MCxNPTA7aWYocGU9bGUsbGU9bGUrNDh8MCxSPXBlKzE2fDAsRz1wZSxxPStfWzE1MisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4zXSwoKEQ9MHxzNyhmfD0wLDAsbT1wZSszMnwwKSktMXwwKT4+PjA+PTIpe2ZvcihfW0c+PjNdPWI9LjUqKChwPStfW2MrMTY+PjNdKSsgK19bYz4+M10pLF9b''@;'; put 'put ''Rys4Pj4zXT1rPS41KigoQT0rX1tjKzI0Pj4zXSkrICtfW2MrOD4+M10pLGI9cC1iLGs9QS1rLChNPXE+LjUpJiZ4aChsLC41KSxBPTAsbT0wfGFbOCsodz0wfGFbbT4+Ml0pPj4yXTtmPTB8YVttPj4yXTspMD09K2puWyhjPW0rNHwwKT4+Ml0/cD1BOihobChsLGYpLHA9MHxhW20rMTI+PjJd''@;'; put 'put ''PzYuMjgzMTg1MzA3MTc5NTg2KitqbltjPj4yXStBOjYuMjgzMTg1MzA3MTc5NTg2LGFbUj4+Ml09YVtHPj4yXSxhW1IrND4+Ml09YVtHKzQ+PjJdLGFbUis4Pj4yXT1hW0crOD4+Ml0sYVtSKzEyPj4yXT1hW0crMTI+PjJdLGM9MHxkRShSLGIsayxBLHApLFFmKGwsMHxhW2M+PjJdLDB8YVtj''@;'; put 'put ''KzQ+PjJdLDAsMCwxKSxoXyhjKSksQT1wLG09bSsxMnwwO00mJnhoKGwscSksSEEodyl9cmV0dXJuIGxlPXBlLDB8RH1mdW5jdGlvbiBzNyhsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIE0sUixHLHEscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsRD0wO3E9bGUsbGU9bGUrMTZ8MCxEPXErOHww''@;'; put 'put ''LE09cSxHPTB8dnIoMTIpLEE9MHxyYShsKTtlOmRve2lmKCFjKWZvcihjPTEscD1BOzspe3N3aXRjaCgwfGZlW3A+PjBdKXtjYXNlIDA6YnJlYWsgZTtjYXNlIDU4OmM9YysxfDB9cD1wKzF8MH19d2hpbGUoMCk7Zm9yKGFbRys0Pj4yXT1BLFI9MHx2cigxMisoMTIqY3wwKXwwKSxhW0crOD4+''@;'; put 'put ''Ml09UixrPTEsbT0wLGM9MCxwPUE7Oyl7aWYoIShwPTB8bHYocCwxMDc5ODQpKSl7cD0yMDticmVha31pZighKCh3PStWVChwKSk+PTApKXtwPTE3O2JyZWFrfWlmKChiPXctayk+MCYmKDA9PSgwfGFbNTE1Nl0pfHxiPDFlLTUmYj4tMWUtNT93PWs6KGFbTT4+Ml09bCwkcigwLDk5OTQ4LE0p''@;'; put 'put ''LGFbNTE1Nl09MCx3PWssYz0zKSksYj1rLXcsdz4wJiYoZmVbUisoMTIqbXwwKSs4Pj4wXT0xKSwwfGZlW3A+PjBdJiYoYVtSKygxMiptfDApPj4yXT1wKSxwPW0rMXwwLGpuW1IrKDEyKm18MCkrND4+Ml09dyxiPDFlLTUmYj4tMWUtNSl7bT1wLHA9MzA7YnJlYWt9az1iLG09cCxwPTB9ZTpk''@;'; put 'put ''b3tpZigxNz09KDB8cCkpMHxhWzUxNTZdPyhhW0Q+PjJdPWwsJHIoMSw5OTk4MyxEKSxhWzUxNTZdPTAsYz0yKTpjPTEsSEEoRyk7ZWxzZSBpZigyMD09KDB8cCkpaWYoaz4wKXtmb3IocD0wLEE9MDshKCgwfHApPj0oMHxtKSk7KUQ9QSsoMD09K2puW1IrKDEyKnB8MCkrND4+Ml0mMSl8MCxw''@;'; put 'put ''PXArMXwwLEE9RDtpZigoMHxBKTw9MCl7am5bKHA9UisoMTIqKG0rLTF8MCl8MCkrNHwwKT4+Ml09aysgK2puW3A+PjJdLHA9MzA7YnJlYWt9Zm9yKHc9ay8rKDB8QSkscD0wOzspe2lmKCgwfHApPj0oMHxtKSl7cD0zMDticmVhayBlfTA9PStqblsoQT1SKygxMipwfDApKzR8MCk+PjJdJiYo''@;'; put 'put ''am5bQT4+Ml09dykscD1wKzF8MH19ZWxzZSBwPTMwfXdoaWxlKDApO2lmKDMwPT0oMHxwKSl7Zm9yKDtwPW0rLTF8MCwhKCgwfG0pPD0wfHwram5bUisoMTIqcHwwKSs0Pj4yXT4wKTspbT1wO2FbUisoMTIqbXwwKT4+Ml09MCxhW0c+PjJdPW0sYVtmPj4yXT1HfXJldHVybiBsZT1xLDB8Y31m''@;'; put 'put ''dW5jdGlvbiBIQShsKXtGdCgwfGFbNCsobHw9MCk+PjJdKSxGdCgwfGFbbCs4Pj4yXSksRnQobCl9ZnVuY3Rpb24gVlQobCl7dmFyIGYscCxjPTAsbT0wO3JldHVybiBwPWxlLGxlPWxlKzE2fDAsZj1wLChsPTB8JHMobHw9MCw1OSkpPyhtPWwrMXwwLGZlW2w+PjBdPTAsYz0oYz0raTMobSxm''@;'; put 'put ''KSk+PTAmJigwfGFbZj4+Ml0pIT0oMHxtKT9jOi0xKTpjPTAsbGU9cCwrY31mdW5jdGlvbiBiRihsLGMsZixwKXtjfD0wLHB8PTA7dmFyIEcscSxwZSxnZSxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wO2lmKGdlPWxlLGxlPWxlKzgwfDAscT1nZSxwZT0rX1sxNTIrKDB8YVsxNiso''@;'; put 'put ''bHw9MCk+PjJdKT4+M10sKChHPTB8czcoZnw9MCwwLEE9Z2UrNjR8MCkpLTF8MCk+Pj4wPj0yKXtmb3IocD8oYVtxPj4yXT1hWyhSPWMrMzJ8MCk+PjJdLGFbcSs0Pj4yXT1hW1IrND4+Ml0sYVtxKzg+PjJdPWFbUis4Pj4yXSxhW3ErMTI+PjJdPWFbUisxMj4+Ml0sYVsoUj1xKzE2fDApPj4y''@;'; put 'put ''XT1hWyhEPWMrNDh8MCk+PjJdLGFbUis0Pj4yXT1hW0QrND4+Ml0sYVtSKzg+PjJdPWFbRCs4Pj4yXSxhW1IrMTI+PjJdPWFbRCsxMj4+Ml0sYVsoUj1xKzMyfDApPj4yXT1hW2M+PjJdLGFbUis0Pj4yXT1hW2MrND4+Ml0sYVtSKzg+PjJdPWFbYys4Pj4yXSxhW1IrMTI+PjJdPWFbYysxMj4+''@;'; put 'put ''Ml0sYVsoUj1xKzQ4fDApPj4yXT1hWyhEPWMrMTZ8MCk+PjJdLGFbUis0Pj4yXT1hW0QrND4+Ml0sYVtSKzg+PjJdPWFbRCs4Pj4yXSxhW1IrMTI+PjJdPWFbRCsxMj4+Ml0pOihhW3E+PjJdPWFbYz4+Ml0sYVtxKzQ+PjJdPWFbYys0Pj4yXSxhW3ErOD4+Ml09YVtjKzg+PjJdLGFbcSsxMj4+''@;'; put 'put ''Ml09YVtjKzEyPj4yXSxhWyhSPXErMTZ8MCk+PjJdPWFbKEQ9YysxNnwwKT4+Ml0sYVtSKzQ+PjJdPWFbRCs0Pj4yXSxhW1IrOD4+Ml09YVtEKzg+PjJdLGFbUisxMj4+Ml09YVtEKzEyPj4yXSxhWyhSPXErMzJ8MCk+PjJdPWFbKEQ9YyszMnwwKT4+Ml0sYVtSKzQ+PjJdPWFbRCs0Pj4yXSxh''@;'; put 'put ''W1IrOD4+Ml09YVtEKzg+PjJdLGFbUisxMj4+Ml09YVtEKzEyPj4yXSxhWyhSPXErNDh8MCk+PjJdPWFbKEQ9Yys0OHwwKT4+Ml0sYVtSKzQ+PjJdPWFbRCs0Pj4yXSxhW1IrOD4+Ml09YVtEKzg+PjJdLGFbUisxMj4+Ml09YVtEKzEyPj4yXSksTT0oaz0rX1soYj1xKzE2fDApPj4zXSktKG09''@;'; put 'put ''K19bcT4+M10pLF9bKEQ9cSszMnwwKT4+M109bSxfW2I+PjNdPW0sKFI9cGU+LjUpJiZ4aChsLC41KSx3PXErNDh8MCxwPTB8YVs4KyhBPTB8YVtBPj4yXSk+PjJdO2Y9MHxhW3A+PjJdOykwIT0ram5bKGM9cCs0fDApPj4yXSYmKGhsKGwsZiksX1tEPj4zXT1tPTB8YVtwKzEyPj4yXT9NKitq''@;'; put 'put ''bltjPj4yXSsgK19bcT4+M106ayxfW2I+PjNdPW0sa2EobCxxLDQsMSksX1t3Pj4zXT1tPStfW2I+PjNdLF9bcT4+M109bSkscD1wKzEyfDA7UiYmeGgobCxwZSksSEEoQSl9cmV0dXJuIGxlPWdlLDB8R31mdW5jdGlvbiBSQyhsLGMpe2N8PTA7dmFyIHAsZj0wLG09MCxBPTAsdz0wO2Y9MHxh''@;'; put 'put ''WzE2KyhsfD0wKT4+Ml0sNDI1OTg0MCYocD0wfGFbbCsxNTI+PjJdKXwwJiYoYVtmKzI2ND4+Ml09QT0obT0xMzEwNzImcCk+Pj4xNl4yLGFbKHc9ZisyNjh8MCk+PjJdPUErMixGdCgwfGFbKEE9ZisyNzJ8MCk+PjJdKSxmPTB8dnIoYVt3Pj4yXTw8NCksYVtBPj4yXT1mLGFbZj4+Ml09YVtj''@;'; put 'put ''Pj4yXSxhW2YrND4+Ml09YVtjKzQ+PjJdLGFbZis4Pj4yXT1hW2MrOD4+Ml0sYVtmKzEyPj4yXT1hW2MrMTI+PjJdLGFbKEE9ZisxNnwwKT4+Ml09YVsoYz1jKzE2fDApPj4yXSxhW0ErND4+Ml09YVtjKzQ+PjJdLGFbQSs4Pj4yXT1hW2MrOD4+Ml0sYVtBKzEyPj4yXT1hW2MrMTI+PjJdLDgx''@;'; put 'put ''OTImcHx8TWgobCxmLGYsMiksbXx8VUkoZikpfWZ1bmN0aW9uIE5BKGwsYyl7dmFyIEQsRyxwZSxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLFI9MCxxPTA7cGU9bGUsbGU9bGUrMTQ0fDAsZj1wZSs4MHwwLG09cGUrMTZ8MCxBPXBlLCEoKE09K19bKGN8PTApPj4zXSk+KEQ9K19b''@;'; put 'put ''KEc9MTYrKGx8PTApfDApPj4zXSkpJiYhKE08KFI9K19bbD4+M10pKSYmISgocD0rX1tjKzg+PjNdKT4oYj0rX1tsKzI0Pj4zXSkpJiYhKHA8KGs9K19bbCs4Pj4zXSkpJiYhKChNPStfW2MrMTY+PjNdKT5EfE08UikmJiEoKE09K19bYysyND4+M10pPmJ8TTxrKSYmISgoTT0rX1tjKzMyPj4z''@;'; put 'put ''XSk+RHxNPFIpJiYhKChNPStfW2MrNDA+PjNdKT5ifE08aykmJiEoKE09K19bYys0OD4+M10pPkR8TTxSKSYmISgoUj0rX1tjKzU2Pj4zXSk+YnxSPGspfHwocT0xMSk7ZTpkb3tpZigxMT09KDB8cSkpe2lmKCEoMHxCQyhjKSkpe3d1KEEsYywzLC41LGYsbSksTkEobCxmKSxOQShsLG0pO2Jy''@;'; put 'put ''ZWFrfWZvcihBPWwrMjR8MCx3PWwrOHwwLG09MDs7KXtpZig0PT0oMHxtKSlicmVhayBlOyhwPStfW2MrKG08PDQpPj4zXSk+K19bRz4+M10/KGY9RyxxPTE2KTpwPCtfW2w+PjNdJiYoZj1sLHE9MTYpLDE2PT0oMHxxKSYmKHE9MCxfW2Y+PjNdPXApLChwPStfW2MrKG08PDQpKzg+PjNdKT4r''@;'; put 'put ''X1tBPj4zXT8oZj1HLHE9MTkpOnA8K19bdz4+M10mJihmPWwscT0xOSksMTk9PSgwfHEpJiYocT0wLF9bZis4Pj4zXT1wKSxtPW0rMXwwfX19d2hpbGUoMCk7bGU9cGV9ZnVuY3Rpb24gQkMobCl7dmFyIGMsZixwLG0sQSxiLHc9MDtyZXR1cm4gYz1sZSxsZT1sZSs0OHwwLGY9YyszMnwwLHA9''@;'; put 'put ''YysxNnwwLGI9NDgrKGx8PTApfDAsdz1sKzE2fDAsYVsobT1jKT4+Ml09YVtsPj4yXSxhW20rND4+Ml09YVtsKzQ+PjJdLGFbbSs4Pj4yXT1hW2wrOD4+Ml0sYVttKzEyPj4yXT1hW2wrMTI+PjJdLGFbcD4+Ml09YVtiPj4yXSxhW3ArND4+Ml09YVtiKzQ+PjJdLGFbcCs4Pj4yXT1hW2IrOD4+''@;'; put 'put ''Ml0sYVtwKzEyPj4yXT1hW2IrMTI+PjJdLGFbZj4+Ml09YVt3Pj4yXSxhW2YrND4+Ml09YVt3KzQ+PjJdLGFbZis4Pj4yXT1hW3crOD4+Ml0sYVtmKzEyPj4yXT1hW3crMTI+PjJdLEE9K2xRKG0scCxmKSx3PWwrMzJ8MCxhW20+PjJdPWFbbD4+Ml0sYVttKzQ+PjJdPWFbbCs0Pj4yXSxhW20r''@;'; put 'put ''OD4+Ml09YVtsKzg+PjJdLGFbbSsxMj4+Ml09YVtsKzEyPj4yXSxhW3A+PjJdPWFbYj4+Ml0sYVtwKzQ+PjJdPWFbYis0Pj4yXSxhW3ArOD4+Ml09YVtiKzg+PjJdLGFbcCsxMj4+Ml09YVtiKzEyPj4yXSxhW2Y+PjJdPWFbdz4+Ml0sYVtmKzQ+PjJdPWFbdys0Pj4yXSxhW2YrOD4+Ml09YVt3''@;'; put 'put ''Kzg+PjJdLGFbZisxMj4+Ml09YVt3KzEyPj4yXSxsPUE8NCYrbFEobSxwLGYpPDQmMSxsZT1jLDB8bH1mdW5jdGlvbiBfRihsLGMpe2x8PTA7dmFyIHBlLGJlLE9lLExlLFJlLEhlLFZlLHFlLHJ0LFdlLGF0LGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0w''@;'; put 'put ''LGdlPTAsU3Q9MCxrdD0wLHN0PTAsRXQ9MCxadD0wLGN0PTAsYnQ9MDtpZihhdD1sZSxsZT1sZSsyNzJ8MCxiZT1hdCsyNTZ8MCxPZT1hdCsyMjR8MCxMZT1hdCsxOTJ8MCxIZT1hdCs2NHwwLFZlPWF0LHFlPWF0KzE2MHwwLHJ0PWF0Kzk2fDAsV2U9YXQrMzJ8MCxwZT0wfGFbMTQ0KyhnZT0w''@;'; put 'put ''fGFbMTYrKGN8PTApPj4yXSk+PjJdLGFbKFJlPWF0KzEyOHwwKT4+Ml09YVsocT1nZSsxNnwwKT4+Ml0sYVtSZSs0Pj4yXT1hW3ErND4+Ml0sYVtSZSs4Pj4yXT1hW3ErOD4+Ml0sYVtSZSsxMj4+Ml09YVtxKzEyPj4yXSxhW1JlKzE2Pj4yXT1hW3ErMTY+PjJdLGFbUmUrMjA+PjJdPWFbcSsy''@;'; put 'put ''MD4+Ml0sYVtSZSsyND4+Ml09YVtxKzI0Pj4yXSxhW1JlKzI4Pj4yXT1hW3ErMjg+PjJdLGdlPTB8YVs4OCsoMHxhW2dlKzg+PjJdKT4+Ml0sYVtWZT4+Ml09MCxhW1ZlKzQ+PjJdPTAsYVtWZSs4Pj4yXT0wLGFbVmUrMTI+PjJdPTAsYVtWZSsxNj4+Ml09MCxhW1ZlKzIwPj4yXT0wLGFbVmUr''@;'; put 'put ''MjQ+PjJdPTAsYVtWZSsyOD4+Ml09MCxnZSl7Zm9yKCtfW1JlPj4zXT09K19bKGM9UmUrMTZ8MCk+PjNdJiYrX1soZj1SZSs4fDApPj4zXT09K19bKHA9UmUrMjR8MCk+PjNdJiYoX1tmPj4zXT0xNzk3NjkzMTM0ODYyMzE1N2UyOTIsX1tSZT4+M109MTc5NzY5MzEzNDg2MjMxNTdlMjkyLF9b''@;'; put 'put ''cD4+M109LTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MixfW2M+PjNdPS0xNzk3NjkzMTM0ODYyMzE1N2UyOTIpLHc9T2UrOHwwLGI9T2UrMTZ8MCxrPU9lKzI0fDAsTT1IZSsxNnwwLEQ9SGUrMjR8MCxSPXBlKzE0NHwwLEc9TGUrMTZ8MCxxPWdlKzEyfDAsYz0wLHA9MHxhW2dlKzg+PjJdLGY9MCxt''@;'; put 'put ''PTAsQT0wOyEoKDB8QSk+PSgwfGFbZ2U+PjJdKSk7KXtzd2l0Y2goYVtIZT4+Ml09YVtWZT4+Ml0sYVtIZSs0Pj4yXT1hW1ZlKzQ+PjJdLGFbSGUrOD4+Ml09YVtWZSs4Pj4yXSxhW0hlKzEyPj4yXT1hW1ZlKzEyPj4yXSxhW0hlKzE2Pj4yXT1hW1ZlKzE2Pj4yXSxhW0hlKzIwPj4yXT1hW1Zl''@;'; put 'put ''KzIwPj4yXSxhW0hlKzI0Pj4yXT1hW1ZlKzI0Pj4yXSxhW0hlKzI4Pj4yXT1hW1ZlKzI4Pj4yXSwwfGFbcD4+Ml0pe2Nhc2UgMTpjYXNlIDA6X1tPZT4+M109KEV0PStfW3ArOD4+M10pLShadD0rX1twKzI0Pj4zXSksX1t3Pj4zXT0oa3Q9K19bcCsxNj4+M10pLShzdD0rX1twKzMyPj4zXSks''@;'; put 'put ''X1tiPj4zXT1adCtFdCxfW2s+PjNdPXN0K2t0LGFbKFN0PXArODB8MCk+PjJdPWFbT2U+PjJdLGFbU3QrND4+Ml09YVtPZSs0Pj4yXSxhW1N0Kzg+PjJdPWFbT2UrOD4+Ml0sYVtTdCsxMj4+Ml09YVtPZSsxMj4+Ml0sYVsoU3Q9cCs5NnwwKT4+Ml09YVtiPj4yXSxhW1N0KzQ+PjJdPWFbYis0''@;'; put 'put ''Pj4yXSxhW1N0Kzg+PjJdPWFbYis4Pj4yXSxhW1N0KzEyPj4yXT1hW2IrMTI+PjJdLGFbYmU+PjJdPWFbT2U+PjJdLGFbYmUrND4+Ml09YVtPZSs0Pj4yXSxhW2JlKzg+PjJdPWFbT2UrOD4+Ml0sYVtiZSsxMj4+Ml09YVtPZSsxMj4+Ml0sVkEoUmUsYmUpLGFbYmU+PjJdPWFbYj4+Ml0sYVti''@;'; put 'put ''ZSs0Pj4yXT1hW2IrND4+Ml0sYVtiZSs4Pj4yXT1hW2IrOD4+Ml0sYVtiZSsxMj4+Ml09YVtiKzEyPj4yXSxWQShSZSxiZSk7YnJlYWs7Y2FzZSAzOmNhc2UgMjpTdD1wKzgwfDAsalQocWUsMHxhWzQrKGN0PXArOHwwKT4+Ml0sMHxhW2N0Pj4yXSxSZSksYVtTdD4+Ml09YVtxZT4+Ml0sYVtT''@;'; put 'put ''dCs0Pj4yXT1hW3FlKzQ+PjJdLGFbU3QrOD4+Ml09YVtxZSs4Pj4yXSxhW1N0KzEyPj4yXT1hW3FlKzEyPj4yXSxhW1N0KzE2Pj4yXT1hW3FlKzE2Pj4yXSxhW1N0KzIwPj4yXT1hW3FlKzIwPj4yXSxhW1N0KzI0Pj4yXT1hW3FlKzI0Pj4yXSxhW1N0KzI4Pj4yXT1hW3FlKzI4Pj4yXTticmVh''@;'; put 'put ''aztjYXNlIDU6Y2FzZSA0OmN0PXArODB8MCxqVChydCwwfGFbNCsoU3Q9cCs4fDApPj4yXSwwfGFbU3Q+PjJdLFJlKSxhW2N0Pj4yXT1hW3J0Pj4yXSxhW2N0KzQ+PjJdPWFbcnQrND4+Ml0sYVtjdCs4Pj4yXT1hW3J0Kzg+PjJdLGFbY3QrMTI+PjJdPWFbcnQrMTI+PjJdLGFbY3QrMTY+PjJd''@;'; put 'put ''PWFbcnQrMTY+PjJdLGFbY3QrMjA+PjJdPWFbcnQrMjA+PjJdLGFbY3QrMjQ+PjJdPWFbcnQrMjQ+PjJdLGFbY3QrMjg+PjJdPWFbcnQrMjg+PjJdO2JyZWFrO2Nhc2UgNjpjdD1wKzgwfDAsalQoV2UsMHxhWzQrKFN0PXArOHwwKT4+Ml0sMHxhW1N0Pj4yXSxSZSksYVtjdD4+Ml09YVtXZT4+''@;'; put 'put ''Ml0sYVtjdCs0Pj4yXT1hW1dlKzQ+PjJdLGFbY3QrOD4+Ml09YVtXZSs4Pj4yXSxhW2N0KzEyPj4yXT1hW1dlKzEyPj4yXSxhW2N0KzE2Pj4yXT1hW1dlKzE2Pj4yXSxhW2N0KzIwPj4yXT1hW1dlKzIwPj4yXSxhW2N0KzI0Pj4yXT1hW1dlKzI0Pj4yXSxhW2N0KzI4Pj4yXT1hW1dlKzI4Pj4y''@;'; put 'put ''XTticmVhaztjYXNlIDc6YVsoY3Q9cCsxMTJ8MCk+PjJdPTB8dnIoNTYpLFN0PTB8cmEoMHxhW3ArNDA+PjJdKSxhWyhidD0wfGFbY3Q+PjJdKT4+Ml09U3QsZmVbYnQrNDg+PjBdPTB8ZmVbMTAwMDI5KygwfGFbcCsyND4+Ml0pPj4wXSxhW0hlPj4yXT1mLF9bTT4+M109bSxhW0Q+PjJdPS0x''@;'; put 'put ''MjgmYVtEPj4yXXwxMjcmYyxidD0wfG1pWzYzJmFbKGJ0PTB8YVtSPj4yXSk+PjJdXShidCxIZSwxKSxhWzQrKFN0PTB8YVtjdD4+Ml0pPj4yXT1idCxsRChiZSxwZSxTdCksWnJlKExlLCtfW3ArOD4+M10sK19bcCsxNj4+M10sMHxhW2N0Pj4yXSksYVsoY3Q9cCs4MHwwKT4+Ml09YVtMZT4+''@;'; put 'put ''Ml0sYVtjdCs0Pj4yXT1hW0xlKzQ+PjJdLGFbY3QrOD4+Ml09YVtMZSs4Pj4yXSxhW2N0KzEyPj4yXT1hW0xlKzEyPj4yXSxhW2N0KzE2Pj4yXT1hW0xlKzE2Pj4yXSxhW2N0KzIwPj4yXT1hW0xlKzIwPj4yXSxhW2N0KzI0Pj4yXT1hW0xlKzI0Pj4yXSxhW2N0KzI4Pj4yXT1hW0xlKzI4Pj4y''@;'; put 'put ''XSxhW2JlPj4yXT1hW0xlPj4yXSxhW2JlKzQ+PjJdPWFbTGUrND4+Ml0sYVtiZSs4Pj4yXT1hW0xlKzg+PjJdLGFbYmUrMTI+PjJdPWFbTGUrMTI+PjJdLFZBKFJlLGJlKSxhW2JlPj4yXT1hW0c+PjJdLGFbYmUrND4+Ml09YVtHKzQ+PjJdLGFbYmUrOD4+Ml09YVtHKzg+PjJdLGFbYmUrMTI+''@;'; put 'put ''PjJdPWFbRysxMj4+Ml0sVkEoUmUsYmUpLDB8YVtxPj4yXXx8KGFbcT4+Ml09MTA5KTticmVhaztjYXNlIDEwOmY9MHxhW3ArMTY+PjJdLG09K19bcCs4Pj4zXTticmVhaztjYXNlIDE1OmM9MHxhW3ArOD4+Ml19cD1wKzEyMHwwLEE9QSsxfDB9YVtsPj4yXT1hW1JlPj4yXSxhW2wrND4+Ml09''@;'; put 'put ''YVtSZSs0Pj4yXSxhW2wrOD4+Ml09YVtSZSs4Pj4yXSxhW2wrMTI+PjJdPWFbUmUrMTI+PjJdLGFbbCsxNj4+Ml09YVtSZSsxNj4+Ml0sYVtsKzIwPj4yXT1hW1JlKzIwPj4yXSxhW2wrMjQ+PjJdPWFbUmUrMjQ+PjJdLGFbbCsyOD4+Ml09YVtSZSsyOD4+Ml19ZWxzZSBhW2w+PjJdPWFbUmU+''@;'; put 'put ''PjJdLGFbbCs0Pj4yXT1hW1JlKzQ+PjJdLGFbbCs4Pj4yXT1hW1JlKzg+PjJdLGFbbCsxMj4+Ml09YVtSZSsxMj4+Ml0sYVtsKzE2Pj4yXT1hW1JlKzE2Pj4yXSxhW2wrMjA+PjJdPWFbUmUrMjA+PjJdLGFbbCsyND4+Ml09YVtSZSsyND4+Ml0sYVtsKzI4Pj4yXT1hW1JlKzI4Pj4yXTtsZT1h''@;'; put 'put ''dH1mdW5jdGlvbiBWQShsLGMpe3ZhciBwLGY9MDsoZj0rX1soY3w9MCk+PjNdKT4rX1socD0xNisobHw9MCl8MCk+PjNdJiYoX1twPj4zXT1mKSxmPCtfW2w+PjNdJiYoX1tsPj4zXT1mKSwoZj0rX1tjKzg+PjNdKT4rX1soYz1sKzI0fDApPj4zXSYmKF9bYz4+M109ZiksZjwrX1soYz1sKzh8''@;'; put 'put ''MCk+PjNdJiYoX1tjPj4zXT1mKX1mdW5jdGlvbiBqVChsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgayxNLEQsUixHLHBlLG09MCxBPTAsdz0wLGI9MCxxPTA7Zm9yKHBlPWxlLGxlPWxlKzQ4fDAsaz1wZSszMnwwLF9bKFI9KEQ9cGUpKzE2fDApPj4zXT1tPStfWyhjfD0wKT4+M10sX1tE''@;'; put 'put ''Pj4zXT1tLF9bKEc9RCsyNHwwKT4+M109bT0rX1tjKzg+PjNdLF9bKE09RCs4fDApPj4zXT1tLGI9MTshKCgwfGIpPj0oMHxmKSk7KShtPStfWyh3PWMrMjR8MCk+PjNdKTwrX1tEPj4zXT8oQT1ELHE9NSk6bT4rX1tSPj4zXSYmKEE9UixxPTUpLDU9PSgwfHEpJiYocT0wLF9bQT4+M109bSks''@;'; put 'put ''KG09K19bYyszMj4+M10pPCtfW00+PjNdPyhjPUQscT04KTptPitfW0c+PjNdJiYoYz1SLHE9OCksOD09KDB8cSkmJihxPTAsX1tjKzg+PjNdPW0pLGI9YisxfDAsYz13O2Fbaz4+Ml09YVtEPj4yXSxhW2srND4+Ml09YVtEKzQ+PjJdLGFbays4Pj4yXT1hW0QrOD4+Ml0sYVtrKzEyPj4yXT1h''@;'; put 'put ''W0QrMTI+PjJdLFZBKHAsayksYVtrPj4yXT1hW1I+PjJdLGFbays0Pj4yXT1hW1IrND4+Ml0sYVtrKzg+PjJdPWFbUis4Pj4yXSxhW2srMTI+PjJdPWFbUisxMj4+Ml0sVkEocCxrKSxhW2w+PjJdPWFbRD4+Ml0sYVtsKzQ+PjJdPWFbRCs0Pj4yXSxhW2wrOD4+Ml09YVtEKzg+PjJdLGFbbCsx''@;'; put 'put ''Mj4+Ml09YVtEKzEyPj4yXSxhW2wrMTY+PjJdPWFbRCsxNj4+Ml0sYVtsKzIwPj4yXT1hW0QrMjA+PjJdLGFbbCsyND4+Ml09YVtEKzI0Pj4yXSxhW2wrMjg+PjJdPWFbRCsyOD4+Ml0sbGU9cGV9ZnVuY3Rpb24gWnJlKGwsYyxmLHApe2x8PTAsYz0rYyxmPStmO3ZhciB3LGIsayxELG09MCxB''@;'; put 'put ''PTAsTT0wO3N3aXRjaChEPWxlLGxlPWxlKzE2fDAsdz1EKzh8MCxiPUQsbT0rX1szMisocHw9MCk+PjNdLGs9K19bcCs0MD4+M10sMHxmZVtwKzQ4Pj4wXSl7Y2FzZSAxMDg6X1t3Pj4zXT1jLG0rPWMsQT1iLE09NTticmVhaztjYXNlIDExMDpfW3c+PjNdPWMtKG0qPS41KSxtKz1jLEE9YixN''@;'; put 'put ''PTU7YnJlYWs7Y2FzZSAxMTQ6X1tiPj4zXT1jLG09Yy1tLEE9dyxNPTU7YnJlYWs7ZGVmYXVsdDpjPTAsbT0wfTU9PSgwfE0pJiYoX1tBPj4zXT1tLGM9K19bdz4+M10sbT0rX1tiPj4zXSksZj0rX1twKzE2Pj4zXStmLF9bbD4+M109YyxfW2wrOD4+M109Zi1rLF9bbCsxNj4+M109bSxfW2wr''@;'; put 'put ''MjQ+PjNdPWYsbGU9RH1mdW5jdGlvbiBnVyhsLGMpe2N8PTA7dmFyIHAsdyxiLGssZj0wLG09MCxBPTAsTT0wO2ZvcihrPWxlLGxlPWxlKzE2fDAsYj1rLHc9MHxhWzE1MisobHw9MCk+PjJdLF9bbCs0ODg+PjNdPXA9KEE9LjAxMzg4ODg4ODg4ODg4ODg4OCorX1tsKzM1Mj4+M10pKihNPStf''@;'; put 'put ''W2wrNDMyPj4zXSksX1tsKzQ5Nj4+M109QSo9bT0rX1tsKzQ0MD4+M10sX1tsKzUyMD4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCpNLF9bKGY9bCs1Mjh8MCk+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqbSw0MDk2Jnd8MCYmKF9bZj4+M109LS4wMTM4ODg4ODg4ODg4ODg4ODgqbSksTT0rKCgw''@;'; put 'put ''fGFbbCs0NDg+PjJdKT4+PjApLG09KygoMHxhW2wrNDUyPj4yXSk+Pj4wKSxfW2wrMzY4Pj4zXT0oKGY9MD09KDB8YVtsKzM2MD4+Ml0pKT9NOm0pL3AsX1tsKzM3Nj4+M109KGY/bTpNKS9BLGRtKGwsMHx2MihjLDB8c2koYywwLDEwMTUyMiwwKSwxOTUwNTkpKSxhW2wrMTYwPj4yXT0wLGZ1''@;'; put 'put ''bmN0aW9uIEdyZShsLGMpe2N8PTA7dmFyIGY7Zj0wfHhmKGx8PTApLGFbZis0Pj4yXT0wLGFbZis4Pj4yXT1jLGFbZisxMj4+Ml09MCxOSChsLDB8YVsxMisoMHxhW2MrMTY+PjJdKT4+Ml0sYyksZnVuY3Rpb24gSVIobCxjKXtjfD0wO3ZhciBmPTA7MHwoYz0wfGFbNjArKGx8PTApPj4yXSkm''@;'; put 'put ''JjB8KGY9MHxhW2MrOD4+Ml0pJiZDb1sxMjcmZl0obCl9KGwsYyl9KGwsYyksMiZ3fDAmJmZ1bmN0aW9uIG1XKGwsYyl7Y3w9MDt2YXIgZj0wLHA9MCxtPTAsQT0wO2ZvcihobChsfD0wLDEzNDgwMCksMHwoZj0wfExpKGMsMTQwOTc3KSkmJjB8ZmVbZj4+MF0mJmhsKGwsZiksMHwoZj0wfExp''@;'; put 'put ''KGMsMTAxNDQ2KSkmJjB8ZmVbZj4+MF0mJm1hKGwsZiksRG9lKGwsYyksQT0wfER0KGMpO0E7KXswfChmPTB8TGkoQSwxNDA4MjMpKSYmMHxmZVtmPj4wXSYmbWEobCxmKSwwfChmPTB8TGkoQSwxMzc3MjkpKSYmMHxmZVtmPj4wXSYmaGwobCxmKSxmPTB8TGkoQSwxMDE0MTgpO2Rve2lmKDB8''@;'; put 'put ''ZiYmMHxmZVtmPj4wXSl7aWYoISgwfCRzKGYsNTgpKSl7bWEobCxmKTticmVha31mb3IoZj1wPTB8cmEoZik7Zj0wfGx2KGYsMTA3OTg0KTspMHxmZVtmPj4wXT8obWEobCxmKSxmPTApOmY9MDtGdChwKX19d2hpbGUoMCk7Zm9yKDB8KGY9MHxMaShBLDEwMTQ0NikpJiYwfGZlW2Y+PjBdJiZt''@;'; put 'put ''YShsLGYpLG09MHx3MChjLEEpO207KXtmPTB8TGkobSwxNDA4MjMpO2Rve2lmKDB8ZiYmMHxmZVtmPj4wXSl7aWYoISgwfCRzKGYsNTgpKSl7bWEobCxmKTticmVha31mb3IoZj1wPTB8cmEoZik7Zj0wfGx2KGYsMTA3OTg0KTspMHxmZVtmPj4wXT8obWEobCxmKSxmPTApOmY9MDtGdChwKX19''@;'; put 'put ''d2hpbGUoMCk7MHwoZj0wfExpKG0sMTAxNDQ2KSkmJjB8ZmVbZj4+MF0mJm1hKGwsZiksbT0wfFMwKGMsbSl9QT0wfHp0KGMsQSl9fShsLGMpLGY9MHxEdChjKTtmOylmZVsxMTYrKDB8YVtmKzE2Pj4yXSk+PjBdPTAsZj0wfHp0KGMsZik7Zm9yKGZ1bmN0aW9uIFdyZShsLGMpe2N8PTA7dmFy''@;'; put 'put ''IG0sQSxiLGY9MCxwPTAsdz0wO2I9bGUsbGU9bGUrMTZ8MCxwPWIrOHwwLEE9YixhWyhtPTE1NisobHw9MCl8MCk+PjJdPWY9MHxhWzMxMisodz0wfGFbbD4+Ml0pPj4yXSwodz0wfGFbdyszMTY+PjJdKT8oZj13KzR8MCwoMHxhW3c+PjJdKT4xJiYwPT0oNjQmYVtsKzE1Mj4+Ml18MCkmJihh''@;'; put 'put ''W0E+PjJdPWFbbCs1Mj4+Ml0sJHIoMCwxMDA1NjcsQSksYVt3Kzg+PjJdPTErKDB8YVttPj4yXSkpLHA9MHxhW2Y+PjJdLGY9dys4fDApOigwfGYpPjEmJjA9PSg2NCZhW2wrMTUyPj4yXXwwKT8oYVtwPj4yXT1hW2wrNTI+PjJdLCRyKDAsMTAwNTY3LHApLGFbbT4+Ml09MSxwPTEsZj0wKToo''@;'; put 'put ''cD0xLGY9MCksYVtsKzE2MD4+Ml09cCxhW2M+PjJdPWYsbGU9Yn0obCxiKTsoMHx2VyhsKSk8PDI0Pj4yNDspe2ZvcigoMHxQQyhsKSk+MSYmSnoobCksRkMobCk7KDB8QVcobCkpPDwyND4+MjQ7KVlyZShsLGMpLENGKGwpOygwfFBDKGwpKT4xJiZtYihsKSx5VyhsLGIpfShmdW5jdGlvbiBV''@;'; put 'put ''cmUobCl7KGZ1bmN0aW9uIEtNKGwpe3ZhciBjLGY9MDswfChjPTB8YVs2MCsobHw9MCk+PjJdKSYmMHwoZj0wfGFbYysxMj4+Ml0pJiZDb1sxMjcmZl0obCksZnVuY3Rpb24gakcobCl7dmFyIGMsZj0wOzB8KGM9MHxhWzc2KyhsfD0wKT4+Ml0pJiYwfChmPTB8YVtjKzQ+PjJdKSYmQ29bMTI3''@;'; put 'put ''JmZdKGwpLG9GKGwpfShsKX0pKGx8PTApLE9DKGwpfSkobCksbGU9a31mdW5jdGlvbiB2VyhsKXtyZXR1cm4oMHxhWzE2MCsobHw9MCk+PjJdKTw9KDB8YVtsKzE1Nj4+Ml0pfDB9ZnVuY3Rpb24gUEMobCl7dmFyIGM7cmV0dXJuIDB8YVsoMD09KDB8KGM9MHxhWzMxNisoMHxhWyhsfD0wKT4+''@;'; put 'put ''Ml0pPj4yXSkpP2wrMTU2fDA6Yyk+PjJdfWZ1bmN0aW9uIEZDKGwpe3ZhciBjLGY7Yz0wfGFbNCsoZj0xNzIrKGx8PTApfDApPj4yXSxhWyhsPWwrMTk2fDApPj4yXT1hW2Y+PjJdLGFbbCs0Pj4yXT1jfWZ1bmN0aW9uIEFXKGwpe3ZhciBmLGM9MDtyZXR1cm4gMHwoKDB8KGY9MHxhWzE5Niso''@;'; put 'put ''bHw9MCk+PjJdKSk+LTEmJigwfGYpPCgwfGFbbCsxNjQ+PjJdKSYmKDB8KGM9MHxhW2wrMjAwPj4yXSkpPi0xPygwfGMpPCgwfGFbbCsxNjg+PjJdKSYxOjApfWZ1bmN0aW9uIFlyZShsLGMpe2N8PTA7dmFyIGIsayxNLEQsUixmPTAscD0wLG09MCxBPTAsdz0wLEc9MDtSPWxlLGxlPWxlKzE3''@;'; put 'put ''NnwwLGI9UixmPVIrNDh8MCxrPVIrMzJ8MCxNPTB8YVsxNisobHw9MCk+PjJdLEQ9MHxhW2wrMTUyPj4yXSwoMHxhW2wrMTYwPj4yXSk8PTEmJigwfGFbbCsxOTY+PjJdKTw9MD9tPTA6KHVzKGssMTI4LGYpLG09MHxhWyhwPU0rMjEyfDApPj4yXSxTMihsLGspLHVvKGssbSksKGY9MHxhWyhB''@;'; put 'put ''PWsrNHwwKT4+Ml0pPj4+MD49KDB8YVtrKzg+PjJdKT4+PjAmJihRMChrLDEpLGY9MHxhW0E+PjJdKSxmZVtmPj4wXT0wLGFbQT4+Ml09Zj0wfGFbaz4+Ml0sYVtwPj4yXT1mKSxMOSgwfExpKGMsMTAwMDMyKSksZnVuY3Rpb24gUXJlKGwpe3ZhciBELGJlLGM9MCxmPTAscD0wLG09MCxBPTAs''@;'; put 'put ''dz0wLGI9MCxrPTAsTT0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxPZT0wO2JlPWxlLGxlPWxlKzQ4fDAsRD1iZSszMnwwLGI9YmUrOHwwLGs9YmUrMTZ8MCxNPWJlLHE9MHxhWyhwZT0xOTYrKGx8PTApfDApPj4yXSxwZT0wfGFbcGUrND4+Ml0sYVsoRz1tPWJlKzI0fDApPj4yXT1xLGFbRys0''@;'; put 'put ''Pj4yXT1wZSx3PTB8YVsoRz1sKzE2NHwwKT4+Ml0sRz0wfGFbRys0Pj4yXSxhWyhnZT1iKT4+Ml09dyxhW2dlKzQ+PjJdPUcsMHxhWyhnZT1sKzM2MHwwKT4+Ml0/KGFbRD4+Ml09YVttPj4yXSxhW0QrND4+Ml09YVttKzQ+PjJdLHpJKGssRCksaz0wfGFbKHBlPWspPj4yXSxwZT0wfGFbcGUr''@;'; put 'put ''ND4+Ml0sYVsoRz1tKT4+Ml09ayxhW0crND4+Ml09cGUsYVtEPj4yXT1hW2I+PjJdLGFbRCs0Pj4yXT1hW2IrND4+Ml0sekkoTSxEKSx3PTB8YVsoRz1NKT4+Ml0sRz0wfGFbRys0Pj4yXSxhW2I+PjJdPXcsYVtiKzQ+PjJdPUcsYj1wZSk6KGs9cSxiPXBlKSxfW2wrMjg4Pj4zXT1BPShmPStf''@;'; put 'put ''W2wrMzIwPj4zXSkqKygwfGspLStfW2wrMjQwPj4zXSxfW2wrMjk2Pj4zXT1SPShwPStfW2wrMzI4Pj4zXSkqKygwfGIpLStfW2wrMjQ4Pj4zXSxfW2wrMzA0Pj4zXT1mK0EsX1tsKzMxMj4+M109cCtSLG09bCs0NzJ8MCwwfGFbMjgrKDB8YVtsKzEyPj4yXSk+PjJdPyhhW20+PjJdPWFbKCgw''@;'; put 'put ''fGFbbT4+Ml0pPCgwfGFbKHE9bCs0NTZ8MCk+PjJdKT9tOnEpPj4yXSxhWyhwZT1sKzQ3NnwwKT4+Ml09YVsoKDB8YVtwZT4+Ml0pPCgwfGFbbCs0NjA+PjJdKT9tOnEpKzQ+PjJdLGFbKHBlPWwrNDgwfDApPj4yXT1hWygoMHxhW3BlPj4yXSk+KDB8YVtsKzQ2ND4+Ml0pP206cSkrOD4+Ml0s''@;'; put 'put ''YVsocGU9bCs0ODR8MCk+PjJdPWFbKCgwfGFbcGU+PjJdKT4oMHxhW2wrNDY4Pj4yXSk/bTpxKSsxMj4+Ml0pOihhW20+PjJdPWFbKHBlPWwrNDU2fDApPj4yXSxhW20rND4+Ml09YVtwZSs0Pj4yXSxhW20rOD4+Ml09YVtwZSs4Pj4yXSxhW20rMTI+PjJdPWFbcGUrMTI+PjJdKSxjPStfW2wr''@;'; put 'put ''MzM2Pj4zXSwxMjgmKE09MHxhW2wrMTUyPj4yXSk/KF9bbCsyNTY+PjNdPXA9Yy0oZj0uNSorX1tsKzM2OD4+M10pLFI9KEE9K19bbCszNDQ+PjNdKS0oT2U9LjUqK19bbCszNzY+PjNdKSxmKz1jLEE9T2UrQSxjPXApOihfW2wrMjU2Pj4zXT1jPSgrKDB8ayktLjUqKygwfHcpKSpmK2MsUj1B''@;'; put 'put ''PSgrKDB8YiktLjUqKygwfEcpKSpwKyArX1tsKzM0ND4+M10sZis9YyxBKz1wKSxfW2wrMjY0Pj4zXT1SLF9bbCsyNzI+PjNdPWYsX1tsKzI4MD4+M109QSwwfGFbZ2U+PjJdPyhtPWwrMzg0fDAsX1tsKzUxMj4+M109LUEtK19bbCszOTI+PjNdLyhwPStfW2wrMzUyPj4zXSksNDA5NiZNPyhm''@;'; put 'put ''PS1mLGM9K19bbT4+M10vcCk6Zj0rX1ttPj4zXS9wLF9bbCs1MDQ+PjNdPWYtYyk6KF9bbCs1MDQ+PjNdPStfW2wrMzg0Pj4zXS8ocD0rX1tsKzM1Mj4+M10pLWMsNDA5NiZNPyhmPS1BLGM9K19bbCszOTI+PjNdL3ApOihmPStfW2wrMzkyPj4zXS9wLGM9UiksX1tsKzUxMj4+M109Zi1jKSxs''@;'; put 'put ''ZT1iZX0obCksZnVuY3Rpb24gUXoobCl7dmFyIGMsZj0wOzB8KGM9MHxhWzYwKyhsfD0wKT4+Ml0pJiYwfChmPTB8YVtjKzI0Pj4yXSkmJkNvWzEyNyZmXShsKX0obCksbWEobCwxMzczMTQpLGhsKGwsMTM0ODAwKTtkb3tpZig0MjU5ODQwJkR8MCl7aWYoMD09KDB8YVtNKzIwOD4+Ml0pJiYw''@;'; put 'put ''PT0oMSZpdFtNKzI2MD4+MV0pKWJyZWFrOzY1NTM2MCZEPyhhW00rMjY0Pj4yXT0oQT0xMzEwNzImRCk+Pj4xNl4yLGY9MHx2cigzMisoQT4+PjEyXjMyKXwwKSxhW2Y+PjJdPWFbKHA9bCsyODh8MCk+PjJdLGFbZis0Pj4yXT1hW3ArND4+Ml0sYVtmKzg+PjJdPWFbcCs4Pj4yXSxhW2YrMTI+''@;'; put 'put ''PjJdPWFbcCsxMj4+Ml0sYVsocD1mKzE2fDApPj4yXT1hWyhHPWwrMzA0fDApPj4yXSxhW3ArND4+Ml09YVtHKzQ+PjJdLGFbcCs4Pj4yXT1hW0crOD4+Ml0sYVtwKzEyPj4yXT1hW0crMTI+PjJdLEE/cD0yOihVSShmKSxwPTQpKTooZj0wLHA9MCksODE5MiZEfHxNaChsLGYsZixwKSxhW00r''@;'; put 'put ''MjcyPj4yXT1mLGFbTSsyNjg+PjJdPXB9fXdoaWxlKDApOzMyNzY4JkR8MCYmMHwodz0wfGFbMTIrKDB8YVtjKzE2Pj4yXSk+PjJdKSYmKGFbTSsxOTI+PjJdPWFbdz4+Ml0pLHA9MCE9KDQmRHwwKTtkb3tpZighcCl7aWYoMD09KDB8YVsoZj1NKzIwOHwwKT4+Ml0pJiYwPT0oMSZpdFtNKzI2''@;'; put 'put ''MD4+MV0pKWJyZWFrO2FbYj4+Ml09YVsoRz1sKzI1NnwwKT4+Ml0sYVtiKzQ+PjJdPWFbRys0Pj4yXSxhW2IrOD4+Ml09YVtHKzg+PjJdLGFbYisxMj4+Ml09YVtHKzEyPj4yXSxhW2IrMTY+PjJdPWFbRysxNj4+Ml0sYVtiKzIwPj4yXT1hW0crMjA+PjJdLGFbYisyND4+Ml09YVtHKzI0Pj4y''@;'; put 'put ''XSxhW2IrMjg+PjJdPWFbRysyOD4+Ml0sUkMobCxiKSxHMShsLDB8YVtmPj4yXSwwfGFbTSsyMjg+PjJdLDB8YVtNKzI0ND4+Ml0sMHxhW00rMjEyPj4yXSl9fXdoaWxlKDApOyhmdW5jdGlvbiBKcmUobCxjKXtsfD0wO3ZhciBELEcscGUsZj0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLFI9''@;'; put 'put ''MCxxPTA7cGU9bGUsbGU9bGUrNDh8MCxHPXBlLEQ9cGUrNDB8MCxSPXBlKzM2fDAscT1wZSszMnwwLChmPTB8TGkoY3w9MCwxNDA5NzcpKT8odz0xJihBPTA9PSgwfGZlW2Y+PjBdKSksZj1BPzEzNzE5ODpmKToodz0xLGY9MTM3MTk4KSxBPTExNj09KDB8ZmVbZj4+MF0pLDI1NiYobT0wfGFb''@;'; put 'put ''bCsxNTI+PjJdKT9BJiYhKDB8WmkoZiwxMzczNzkpKXx8KGI9ZixrPXcsTT04KTpBPyhiPShrPTA9PSgwfFppKGYsMTM3Mzc5KSkpPzEzNzE5ODpmLGs9az8xOncsTT04KTooYj1mLGs9dyxNPTgpLDg9PSgwfE0pJiYhKDAhPSgwfGspJjAhPSgzMzU1NDQzMiZtfDApKSYmKCgwfHVrKGIsRCxS''@;'; put 'put ''KSk8PDI0Pj4yND8oYVtxPj4yXT0wLGhsKGwsQT0wfGFbRD4+Ml0pLG1hKGwsMTM3Mzc5KSxaSShjLHEpLFVmKGwsKGY9MHxhW0QrND4+Ml0pfHwxMzczMTQsbT0wfGVzKGMsMHxhWzQ3MTQzXSwwLDApLCtqbltSPj4yXSkscT0oMHxhW3E+PjJdKT4+PjEmMXwyLGFbRz4+Ml09YVsoUj1sKzI1''@;'; put 'put ''NnwwKT4+Ml0sYVtHKzQ+PjJdPWFbUis0Pj4yXSxhW0crOD4+Ml09YVtSKzg+PjJdLGFbRysxMj4+Ml09YVtSKzEyPj4yXSxhW0crMTY+PjJdPWFbUisxNj4+Ml0sYVtHKzIwPj4yXT1hW1IrMjA+PjJdLGFbRysyND4+Ml09YVtSKzI0Pj4yXSxhW0crMjg+PjJdPWFbUisyOD4+Ml0seTMobCxH''@;'; put 'put ''LHEpLEZ0KEEpKTooaGwobCxiKSxtYShsLDEzNzM3OSksYVtHPj4yXT1hWyhxPWwrMjU2fDApPj4yXSxhW0crND4+Ml09YVtxKzQ+PjJdLGFbRys4Pj4yXT1hW3ErOD4+Ml0sYVtHKzEyPj4yXT1hW3ErMTI+PjJdLGFbRysxNj4+Ml09YVtxKzE2Pj4yXSxhW0crMjA+PjJdPWFbcSsyMD4+Ml0s''@;'; put 'put ''YVtHKzI0Pj4yXT1hW3ErMjQ+PjJdLGFbRysyOD4+Ml09YVtxKzI4Pj4yXSx5MyhsLEcsMSkpKSwwfChmPTB8YVs4OCsoMHxhWzgrKDB8YVtjKzE2Pj4yXSk+PjJdKT4+Ml0pJiZmdW5jdGlvbiBwdmUobCxjKXtsfD0wLGN8PTA7dmFyIFIscGUsZ2UsYmUsT2UsTGUsUmUsZj0wLHA9MCxtPTAs''@;'; put 'put ''QT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsRz0wLHE9MCxIZT0wLFZlPTAscWU9MDtmb3IoUmU9bGUsbGU9bGUrOTZ8MCxSPVJlKzQ4fDAscGU9UmUrMTZ8MCxMZT1SZSs4fDAsT2U9UmUsYVsoZ2U9UmUrODB8MCk+PjJdPTFlMyxtPTB8UW4oMTZlMyksYmU9bCsyNTZ8MCxwPTEsdz0xLEE9MCxH''@;'; put 'put ''PTAscT0wfGFbYys4Pj4yXTshKCgwfEcpPj0oMHxhW2M+PjJdKSk7KXtmPTB8YVtxPj4yXTtlOmRve3N3aXRjaCgwfGYpe2Nhc2UgMTpjYXNlIDA6YVtwZT4+Ml09YVsoTT1xKzgwfDApPj4yXSxhW3BlKzQ+PjJdPWFbTSs0Pj4yXSxhW3BlKzg+PjJdPWFbTSs4Pj4yXSxhW3BlKzEyPj4yXT1h''@;'; put 'put ''W00rMTI+PjJdLGFbcGUrMTY+PjJdPWFbTSsxNj4+Ml0sYVtwZSsyMD4+Ml09YVtNKzIwPj4yXSxhW3BlKzI0Pj4yXT1hW00rMjQ+PjJdLGFbcGUrMjg+PjJdPWFbTSsyOD4+Ml0sYVtSPj4yXT1hW2JlPj4yXSxhW1IrND4+Ml09YVtiZSs0Pj4yXSxhW1IrOD4+Ml09YVtiZSs4Pj4yXSxhW1Ir''@;'; put 'put ''MTI+PjJdPWFbYmUrMTI+PjJdLGFbUisxNj4+Ml09YVtiZSsxNj4+Ml0sYVtSKzIwPj4yXT1hW2JlKzIwPj4yXSxhW1IrMjQ+PjJdPWFbYmUrMjQ+PjJdLGFbUisyOD4+Ml09YVtiZSsyOD4+Ml0sMHx2eShwZSxSKSYmKF9bbT4+M109K19bKFZlPXErOHwwKT4+M10tK19bKHFlPXErMjR8MCk+''@;'; put 'put ''PjNdLF9bbSs4Pj4zXT0rX1soTT1xKzE2fDApPj4zXS0rX1soSGU9cSszMnwwKT4+M10sX1ttKzE2Pj4zXT0rX1txZT4+M10rICtfW1ZlPj4zXSxfW20rMjQ+PjNdPStfW0hlPj4zXSsgK19bTT4+M10sJHUobCxtLDIsMD09KDB8Zik/dzowKSksZj13O2JyZWFrO2Nhc2UgMzpjYXNlIDI6YVtw''@;'; put 'put ''ZT4+Ml09YVsocWU9cSs4MHwwKT4+Ml0sYVtwZSs0Pj4yXT1hW3FlKzQ+PjJdLGFbcGUrOD4+Ml09YVtxZSs4Pj4yXSxhW3BlKzEyPj4yXT1hW3FlKzEyPj4yXSxhW3BlKzE2Pj4yXT1hW3FlKzE2Pj4yXSxhW3BlKzIwPj4yXT1hW3FlKzIwPj4yXSxhW3BlKzI0Pj4yXT1hW3FlKzI0Pj4yXSxh''@;'; put 'put ''W3BlKzI4Pj4yXT1hW3FlKzI4Pj4yXSxhW1I+PjJdPWFbYmU+PjJdLGFbUis0Pj4yXT1hW2JlKzQ+PjJdLGFbUis4Pj4yXT1hW2JlKzg+PjJdLGFbUisxMj4+Ml09YVtiZSsxMj4+Ml0sYVtSKzE2Pj4yXT1hW2JlKzE2Pj4yXSxhW1IrMjA+PjJdPWFbYmUrMjA+PjJdLGFbUisyND4+Ml09YVti''@;'; put 'put ''ZSsyND4+Ml0sYVtSKzI4Pj4yXT1hW2JlKzI4Pj4yXSwwfHZ5KHBlLFIpJiZrYShsLG09MHxaSChtLGdlLDB8YVs0KyhmPXErOHwwKT4+Ml0sMHxhW2Y+PjJdKSwwfGFbZj4+Ml0sMj09KDB8YVtxPj4yXSk/dzowKSxmPXc7YnJlYWs7Y2FzZSA1OmNhc2UgNDphW3BlPj4yXT1hWyhxZT1xKzgw''@;'; put 'put ''fDApPj4yXSxhW3BlKzQ+PjJdPWFbcWUrND4+Ml0sYVtwZSs4Pj4yXT1hW3FlKzg+PjJdLGFbcGUrMTI+PjJdPWFbcWUrMTI+PjJdLGFbcGUrMTY+PjJdPWFbcWUrMTY+PjJdLGFbcGUrMjA+PjJdPWFbcWUrMjA+PjJdLGFbcGUrMjQ+PjJdPWFbcWUrMjQ+PjJdLGFbcGUrMjg+PjJdPWFbcWUr''@;'; put 'put ''Mjg+PjJdLGFbUj4+Ml09YVtiZT4+Ml0sYVtSKzQ+PjJdPWFbYmUrND4+Ml0sYVtSKzg+PjJdPWFbYmUrOD4+Ml0sYVtSKzEyPj4yXT1hW2JlKzEyPj4yXSxhW1IrMTY+PjJdPWFbYmUrMTY+PjJdLGFbUisyMD4+Ml09YVtiZSsyMD4+Ml0sYVtSKzI0Pj4yXT1hW2JlKzI0Pj4yXSxhW1IrMjg+''@;'; put 'put ''PjJdPWFbYmUrMjg+PjJdLDB8dnkocGUsUikmJlFmKGwsbT0wfFpIKG0sZ2UsMHxhWzQrKGY9cSs4fDApPj4yXSwwfGFbZj4+Ml0pLDB8YVtmPj4yXSwwLDAsND09KDB8YVtxPj4yXSk/MjU1Jnc6MCksZj13O2JyZWFrO2Nhc2UgNjphW3BlPj4yXT1hWyhxZT1xKzgwfDApPj4yXSxhW3BlKzQ+''@;'; put 'put ''PjJdPWFbcWUrND4+Ml0sYVtwZSs4Pj4yXT1hW3FlKzg+PjJdLGFbcGUrMTI+PjJdPWFbcWUrMTI+PjJdLGFbcGUrMTY+PjJdPWFbcWUrMTY+PjJdLGFbcGUrMjA+PjJdPWFbcWUrMjA+PjJdLGFbcGUrMjQ+PjJdPWFbcWUrMjQ+PjJdLGFbcGUrMjg+PjJdPWFbcWUrMjg+PjJdLGFbUj4+Ml09''@;'; put 'put ''YVtiZT4+Ml0sYVtSKzQ+PjJdPWFbYmUrND4+Ml0sYVtSKzg+PjJdPWFbYmUrOD4+Ml0sYVtSKzEyPj4yXT1hW2JlKzEyPj4yXSxhW1IrMTY+PjJdPWFbYmUrMTY+PjJdLGFbUisyMD4+Ml09YVtiZSsyMD4+Ml0sYVtSKzI0Pj4yXT1hW2JlKzI0Pj4yXSxhW1IrMjg+PjJdPWFbYmUrMjg+PjJd''@;'; put 'put ''LDB8dnkocGUsUikmJldvKGwsbT0wfFpIKG0sZ2UsMHxhWzQrKGY9cSs4fDApPj4yXSwwfGFbZj4+Ml0pLDB8YVtmPj4yXSksZj13O2JyZWFrO2Nhc2UgNzphW3BlPj4yXT1hWyhxZT1xKzgwfDApPj4yXSxhW3BlKzQ+PjJdPWFbcWUrND4+Ml0sYVtwZSs4Pj4yXT1hW3FlKzg+PjJdLGFbcGUr''@;'; put 'put ''MTI+PjJdPWFbcWUrMTI+PjJdLGFbcGUrMTY+PjJdPWFbcWUrMTY+PjJdLGFbcGUrMjA+PjJdPWFbcWUrMjA+PjJdLGFbcGUrMjQ+PjJdPWFbcWUrMjQ+PjJdLGFbcGUrMjg+PjJdPWFbcWUrMjg+PjJdLGFbUj4+Ml09YVtiZT4+Ml0sYVtSKzQ+PjJdPWFbYmUrND4+Ml0sYVtSKzg+PjJdPWFb''@;'; put 'put ''YmUrOD4+Ml0sYVtSKzEyPj4yXT1hW2JlKzEyPj4yXSxhW1IrMTY+PjJdPWFbYmUrMTY+PjJdLGFbUisyMD4+Ml09YVtiZSsyMD4+Ml0sYVtSKzI0Pj4yXT1hW2JlKzI0Pj4yXSxhW1IrMjg+PjJdPWFbYmUrMjg+PjJdLDB8dnkocGUsUikmJihfW20+PjNdPStfW3ErOD4+M10sX1ttKzg+PjNd''@;'; put 'put ''PStfW3ErMTY+PjNdLGY9MHxhW3ErMTEyPj4yXSxhW1I+PjJdPWFbbT4+Ml0sYVtSKzQ+PjJdPWFbbSs0Pj4yXSxhW1IrOD4+Ml09YVttKzg+PjJdLGFbUisxMj4+Ml09YVttKzEyPj4yXSxobShsLFIsZikpLGY9dzticmVhaztjYXNlIDg6aGwobCwwfGFbcSs4Pj4yXSksZj0xO2JyZWFrO2Nh''@;'; put 'put ''c2UgOTptYShsLDB8YVtxKzg+PjJdKSxmPTE7YnJlYWs7Y2FzZSAxMzppZigyIT0oMHxhW3ErOD4+Ml0pKXtxZT0wfGFbMTIrKFZlPTB8YVszNisoZj1xKzE2fDApPj4yXSk+PjJdLEQ9K2puW1ZlKzg+PjJdLGY9fn4oNTcuMjk1Nzc5NTEzMDgyMzIqK1VsKCsoK19bcSs0MD4+M10tK19bcSsy''@;'; put 'put ''ND4+M10pLCsoK19bcSszMj4+M10tK19bZj4+M10pKSksaGwobCwwfGFbVmUrND4+Ml0pLFVmKGwscWUsZixEKSxmPTI7YnJlYWsgZX13PTB8YVs0KyhxZT0wfGFbcSs2OD4+Ml0pPj4yXSxNPTB8YVtxZSsxMj4+Ml0sRD0ram5bcWUrOD4+Ml0sZj0oYj0rX1txKzQwPj4zXSk9PShrPStfW3Er''@;'; put 'put ''MTY+PjNdKSYmK19bcSs0OD4+M109PStfW3ErMjQ+PjNdPzA6fn4oNTcuMjk1Nzc5NTEzMDgyMzIqK0pwKCsoay1iKS8rX1txKzMyPj4zXSkpLGhsKGwsdyksVWYobCxNLGYsRCksZj0zO2JyZWFrO2Nhc2UgMTQ6JHIoMCwxMDA0ODEsT2UpLGY9dzticmVhaztjYXNlIDEyOnA/KCRyKDAsMTAw''@;'; put 'put ''NTIxLExlKSxwPTAsZj13KToocD0wLGY9dyk7YnJlYWs7Y2FzZSAxMTp6QSgwfGFbcSs4Pj4yXSksZDIobCwxODgyMjgpLEE9MTg4MjI4LGY9dzticmVhaztkZWZhdWx0OmY9d319d2hpbGUoMCk7dz1mLEc9RysxfDAscT1xKzEyMHwwfTB8QSYmZDIobCwwfGFbMzM2KygwfGFbbD4+Ml0pPj4y''@;'; put 'put ''XSksRnQobSksbGU9UmV9KGwsZiksbGU9cGV9KShsLGMpLDB8KGY9MHxhWzEyKygwfGFbYysxNj4+Ml0pPj4yXSkmJmI3KGwsNCxmKTtkb3tpZighcCl7aWYoMD09KDB8YVtNKzIwOD4+Ml0pJiYwPT0oMSZpdFtNKzI2MD4+MV0pKWJyZWFrO0VoKGwpfX13aGlsZSgwKTsoZnVuY3Rpb24gWHJl''@;'; put 'put ''KGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wO2FbKEE9MjgrKDB8YVsobHw9MCk+PjJdKXwwKT4+Ml09MSsoMHxhW0E+PjJdKSwoQT0wIT0oNCZmfDApKXx8akEobCxjLGYpO2U6ZG97aWYoMSZmKXtmb3IoRzgobCkscD0wfER0KGMpO3A7KVpBKGwscCkscD0wfHp0KGMscCk7Zm9y''@;'; put 'put ''KGNtKGwpLFlmKGwpLG09MHxEdChjKTttOyl7Zm9yKHA9MHx3MChjLG0pO3A7KUhDKGwscCkscD0wfFMwKGMscCk7bT0wfHp0KGMsbSl9Zm0obCl9ZWxzZXtpZigxNiZmfDApe2ZvcihZZihsKSxtPTB8RHQoYyk7bTspe2ZvcihwPTB8dzAoYyxtKTtwOylIQyhsLHApLHA9MHxTMChjLHApO209''@;'; put 'put ''MHx6dChjLG0pfWZvcihmbShsKSxHOChsKSxwPTB8RHQoYyk7cDspWkEobCxwKSxwPTB8enQoYyxwKTtjbShsKTticmVha31pZighKDgmZikpZm9yKG09MHxEdChjKTs7KXtpZighbSlicmVhayBlO2ZvcihaQShsLG0pLHA9MHx3MChjLG0pO3A7KVpBKGwsMHxhWygyPT0oMyZhW3A+PjJdfDAp''@;'; put 'put ''P3A6cCstNDh8MCkrNDA+PjJdKSxIQyhsLHApLHA9MHxTMChjLHApO209MHx6dChjLG0pfWZvcihHOChsKSxwPTB8RHQoYyk7cDspKDB8S3JlKGMscCkpPDwyND4+MjQmJlpBKGwscCkscD0wfHp0KGMscCk7Zm9yKGNtKGwpLFlmKGwpLG09MHxEdChjKTttOyl7Zm9yKHA9MHx3MChjLG0pO3A7''@;'; put 'put ''KSgwfGtGKGMscCkpPDwyND4+MjQmJkhDKGwscCkscD0wfFMwKGMscCk7bT0wfHp0KGMsbSl9Zm0obCl9fXdoaWxlKDApO0EmJmpBKGwsYyxmKX0pKGwsYyxEKSxmdW5jdGlvbiAkTShsKXt2YXIgYyxmPTA7MHwoYz0wfGFbNjArKGx8PTApPj4yXSkmJjB8KGY9MHxhW2MrMjg+PjJdKSYmQ29b''@;'; put 'put ''MTI3JmZdKGwpfShsKSwwfG0mJihDMihrKSxhW00rMjEyPj4yXT1tKSxsZT1SfWZ1bmN0aW9uIENGKGwpe3ZhciBjLGYsbSxBLHcscD0wLGI9MCxrPTA7dz1sZSxsZT1sZSszMnwwLGY9dysyNHwwLGs9dys4fDAsbT13LGI9MTg4KyhsfD0wKXwwLGFbKGM9dysxNnwwKT4+Ml09YVsoQT1sKzE5''@;'; put 'put ''NnwwKT4+Ml0sYVtjKzQ+PjJdPWFbQSs0Pj4yXSxhW2Y+PjJdPWFbYj4+Ml0sYVtmKzQ+PjJdPWFbYis0Pj4yXSxaVChrLGMsZiksYj0wfGFbays0Pj4yXSxhWyhwPUEpPj4yXT1hW2s+PjJdLGFbcCs0Pj4yXT1iLCgwfEFXKGwpKTw8MjQ+PjI0fHwocD1sKzE4MHwwLDB8YVtsKzE4ND4+Ml0/''@;'; put 'put ''YVtBPj4yXT1hW2wrMTcyPj4yXTphW2wrMjAwPj4yXT1hW2wrMTc2Pj4yXSxhW2M+PjJdPWFbQT4+Ml0sYVtjKzQ+PjJdPWFbQSs0Pj4yXSxhW2Y+PjJdPWFbcD4+Ml0sYVtmKzQ+PjJdPWFbcCs0Pj4yXSxaVChtLGMsZiksYj0wfGFbbSs0Pj4yXSxhWyhrPUEpPj4yXT1hW20+PjJdLGFbays0''@;'; put 'put ''Pj4yXT1iKSxsZT13fWZ1bmN0aW9uIHlXKGwsYyl7bHw9MDt2YXIgZj0wOyhmPTB8YVsoY3w9MCk+PjJdKT8oYVtsKzE2MD4+Ml09YVtmPj4yXSxhW2M+PjJdPWYrNCk6YVsoZj1sKzE2MHwwKT4+Ml09MSsoMHxhW2Y+PjJdKX1mdW5jdGlvbiBaVChsLGMsZil7dmFyIHA7cD0oMHxhWzQrKGZ8''@;'; put 'put ''PTApPj4yXSkrKDB8YVs0KyhjfD0wKT4+Ml0pfDAsYVsobHw9MCk+PjJdPSgwfGFbZj4+Ml0pKygwfGFbYz4+Ml0pLGFbbCs0Pj4yXT1wfWZ1bmN0aW9uIGpBKGwsYyxmKXt2YXIgZ2UsYmUsT2UsUmUsSGUsVmUscWUscnQsV2UsYXQsU3Qsa3Qsc3QsRXQsWnQsY3QsYnQsU24scD0wLG09MCxB''@;'; put 'put ''PTAsdz0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsTGU9MCxhbj0wLEhuPTA7Zm9yKFNuPWxlLGxlPWxlKzEyOHwwLGdlPVNuKzcyfDAsYnQ9U24rNjR8MCxTdD1TbisxMTJ8MCxFdD0xNisoY3w9MCl8MCxadD0wIT0oNCYoZnw9MCl8MCksY3Q9MTYrKGx8PTApfDAsYmU9KGt0PVNu''@;'; put 'put ''KSszMnwwLE9lPWt0KzE2fDAsUmU9a3QrOHwwLEhlPWt0KzI0fDAsVmU9a3QrNDh8MCxxZT1rdCs0MHwwLHJ0PWt0KzU2fDAsV2U9MD09KDgmZnwwKSxhdD00KyhzdD1TbisxMDR8MCl8MCxwZT0xOyEoKDB8cGUpPigwfGFbMTgwKyhwPTB8YVtFdD4+Ml0pPj4yXSkpOyl7aWYoKDB8clEobCxx''@;'; put 'put ''PTB8YVsoMHxhW3ArMTg0Pj4yXSkrKHBlPDwyKT4+Ml0pKTw8MjQ+PjI0KXtadCYmakEobCxxLGYpLElvZShsLHEpLEc9MHxhWyhSPTIwOCsoRD0wfGFbY3Q+PjJdKXwwKT4+Ml0/MTowIT0oMSZpdFtEKzI2MD4+MV0pLEw5KDB8TGkocSwxMDAwMzIpKSxadHwxXkd8fChhW2dlPj4yXT1hWyhN''@;'; put 'put ''PTE2KygwfGFbcSsxNj4+Ml0pfDApPj4yXSxhW2dlKzQ+PjJdPWFbTSs0Pj4yXSxhW2dlKzg+PjJdPWFbTSs4Pj4yXSxhW2dlKzEyPj4yXT1hW00rMTI+PjJdLGFbZ2UrMTY+PjJdPWFbTSsxNj4+Ml0sYVtnZSsyMD4+Ml09YVtNKzIwPj4yXSxhW2dlKzI0Pj4yXT1hW00rMjQ+PjJdLGFbZ2Ur''@;'; put 'put ''Mjg+PjJdPWFbTSsyOD4+Ml0sUkMobCxnZSksRzEobCwwfGFbUj4+Ml0sMHxhW0QrMjI4Pj4yXSwwfGFbRCsyNDQ+PjJdLDB8YVtEKzIxMj4+Ml0pKSxhW1N0Pj4yXT0wLChwPTB8WkkocSxTdCkpPyhkMihsLHApLGs9MSZhW1N0Pj4yXSk6az0wLHA9MHxYdFsxMTIrKDB8YVsoTT1xKzE2fDAp''@;'; put 'put ''Pj4yXSk+PjBdO2Rve2lmKDEmcClwPTB8QmEocSwwLDEwNjI0MCksbT0wfEJhKHEsMCwxMDYyNDgpLGFuPTI5O2Vsc2V7aWYoMiZwfDApe3A9MHxCYShxLDAsMTA2MjU2KSxtPTB8QmEocSwwLDEwNjI2NCksYW49Mjk7YnJlYWt9aWYoOCZwfDApe3A9MHxCYShxLDAsMTA2MjcyKSxtPTB8QmEo''@;'; put 'put ''cSwwLDEwNjI4MCksYW49Mjk7YnJlYWt9aWYoNCZwfDApe3A9MHxCYShxLDAsMTA2Mjg4KSxtPTB8QmEocSwwLDEwNjI5NiksYW49Mjk7YnJlYWt9aWYobT0ocD0wfExpKHEsMTQwODIzKSk/MD09KDB8ZmVbcD4+MF0pPzA6cDowLHA9KHA9MHxMaShxLDEzNzcyOSkpPzA9PSgwfGZlW3A+PjBd''@;'; put 'put ''KT9tOnA6bSwoQT0wfExpKHEsMTAxNDE4KSkmJihtPTA9PSgwfGZlW0E+PjBdKT9tOkEpLDAhPSgwfGspJjAhPSgwfG0pKWFuPTI5O2Vsc2V7aWYoMHwoQT0wfExpKHEsMTQwOTc3KSkmJjB8ZmVbQT4+MF0pe209QSxhbj0yOTticmVha31wPTA9PSgwfHApPzEzNzMxNDpwLHc9MD09KDB8bSk/''@;'; put 'put ''MTM0ODAwOm0sYVtzdD4+Ml09MCxrP2FuPTMxOm09MH19fXdoaWxlKDApOzI5PT0oMHxhbikmJihhW3N0Pj4yXT0wLHA9MD09KDB8cCk/MTM3MzE0OnAsdz0wPT0oMHxtKT8xMzQ4MDA6bSxhbj0zMSksMzE9PSgwfGFuKSYmKGFuPTAsKDB8dWsodyxzdCxnZSkpPDwyND4+MjQ/KGhsKGwsMHxh''@;'; put 'put ''W3N0Pj4yXSksVWYobCwobT0wfGFbYXQ+PjJdKXx8MTM3MzE0LEE9MHxlcyhxLDB8YVs0NzE0M10sMCwwKSwram5bZ2U+PjJdKSxtPSgwfGFbU3Q+PjJdKT4+PjEmMXwyKTooaGwobCx3KSxtPTEpKSwwfChBPTB8YVs0NzE0Ml0pJiYwfChMZT0wfEhvKHEsQSkpJiYwfGZlW0xlPj4wXSYmeGgo''@;'; put 'put ''bCwrTWwocSwwfGFbNDcxNDJdLDEsMCkpLGs9MHxhW1N0Pj4yXTtkb3tpZig0JmspKEE9MHxlcyhxLDB8YVs0NzE0MV0sMSwwKSl8bXwwJiYoYVtrdD4+Ml09YVsoSG49MTYrKHc9MHxhW00+PjJdKXwwKT4+Ml0sYVtrdCs0Pj4yXT1hW0huKzQ+PjJdLGFba3QrOD4+Ml09YVtIbis4Pj4yXSxh''@;'; put 'put ''W2t0KzEyPj4yXT1hW0huKzEyPj4yXSxhW2JlPj4yXT1hWyh3PXcrMzJ8MCk+PjJdLGFbYmUrND4+Ml09YVt3KzQ+PjJdLGFbYmUrOD4+Ml09YVt3Kzg+PjJdLGFbYmUrMTI+PjJdPWFbdysxMj4+Ml0sX1tPZT4+M109K19bYmU+PjNdLF9bSGU+PjNdPStfW1JlPj4zXSxfW1ZlPj4zXT0rX1tr''@;'; put 'put ''dD4+M10sX1tydD4+M109K19bcWU+PjNdLG1hKGwsQT9wOjEzNzM3OSksSzUobCxrdCw0LGssbSkpO2Vsc2V7aWYoISg2NCZrKSl7aWYoMHxlcyhxLDB8YVs0NzE0MV0sMSwwKSl7bWEobCxwKSxhW2dlPj4yXT1hWyhIbj0xNisoMHxhW00+PjJdKXwwKT4+Ml0sYVtnZSs0Pj4yXT1hW0huKzQ+''@;'; put 'put ''PjJdLGFbZ2UrOD4+Ml09YVtIbis4Pj4yXSxhW2dlKzEyPj4yXT1hW0huKzEyPj4yXSxhW2dlKzE2Pj4yXT1hW0huKzE2Pj4yXSxhW2dlKzIwPj4yXT1hW0huKzIwPj4yXSxhW2dlKzI0Pj4yXT1hW0huKzI0Pj4yXSxhW2dlKzI4Pj4yXT1hW0huKzI4Pj4yXSx5MyhsLGdlLG0pO2JyZWFrfWlm''@;'; put 'put ''KCFtKWJyZWFrO21hKGwsMTM3Mzc5KSxhW2dlPj4yXT1hWyhIbj0xNisoMHxhW00+PjJdKXwwKT4+Ml0sYVtnZSs0Pj4yXT1hW0huKzQ+PjJdLGFbZ2UrOD4+Ml09YVtIbis4Pj4yXSxhW2dlKzEyPj4yXT1hW0huKzEyPj4yXSxhW2dlKzE2Pj4yXT1hW0huKzE2Pj4yXSxhW2dlKzIwPj4yXT1h''@;'; put 'put ''W0huKzIwPj4yXSxhW2dlKzI0Pj4yXT1hW0huKzI0Pj4yXSxhW2dlKzI4Pj4yXT1hW0huKzI4Pj4yXSx5MyhsLGdlLG0pO2JyZWFrfWFba3Q+PjJdPWFbKGs9MTYrKEhuPTB8YVtNPj4yXSl8MCk+PjJdLGFba3QrND4+Ml09YVtrKzQ+PjJdLGFba3QrOD4+Ml09YVtrKzg+PjJdLGFba3QrMTI+''@;'; put 'put ''PjJdPWFbaysxMj4+Ml0sYVtiZT4+Ml09YVsoSG49SG4rMzJ8MCk+PjJdLGFbYmUrND4+Ml09YVtIbis0Pj4yXSxhW2JlKzg+PjJdPWFbSG4rOD4+Ml0sYVtiZSsxMj4+Ml09YVtIbisxMj4+Ml0sX1tPZT4+M109K19bYmU+PjNdLF9bSGU+PjNdPStfW1JlPj4zXSxfW1ZlPj4zXT0rX1trdD4+''@;'; put 'put ''M10sX1tydD4+M109K19bcWU+PjNdLDB8ZXMocSwwfGFbNDcxNDFdLDEsMCk/bWEobCxwKTptYShsLDEzNzM3OSksKDB8YkYobCxrdCx3LDApKT4xJiYoYVtidD4+Ml09MHx0aShxKSwkcigzLDEwMDQwMCxidCkpLGFbZ2U+PjJdPWFbKEhuPTE2KygwfGFbTT4+Ml0pfDApPj4yXSxhW2dlKzQ+''@;'; put 'put ''PjJdPWFbSG4rND4+Ml0sYVtnZSs4Pj4yXT1hW0huKzg+PjJdLGFbZ2UrMTI+PjJdPWFbSG4rMTI+PjJdLGFbZ2UrMTY+PjJdPWFbSG4rMTY+PjJdLGFbZ2UrMjA+PjJdPWFbSG4rMjA+PjJdLGFbZ2UrMjQ+PjJdPWFbSG4rMjQ+PjJdLGFbZ2UrMjg+PjJdPWFbSG4rMjg+PjJdLHkzKGwsZ2Us''@;'; put 'put ''MCl9fXdoaWxlKDApO0Z0KDB8YVtzdD4+Ml0pLDB8KHA9MHxhWzEyKygwfGFbTT4+Ml0pPj4yXSkmJmI3KGwsNSxwKSxHJiYoWnQmJihhW2dlPj4yXT1hWyhIbj0xNisoMHxhW00+PjJdKXwwKT4+Ml0sYVtnZSs0Pj4yXT1hW0huKzQ+PjJdLGFbZ2UrOD4+Ml09YVtIbis4Pj4yXSxhW2dlKzEy''@;'; put 'put ''Pj4yXT1hW0huKzEyPj4yXSxhW2dlKzE2Pj4yXT1hW0huKzE2Pj4yXSxhW2dlKzIwPj4yXT1hW0huKzIwPj4yXSxhW2dlKzI0Pj4yXT1hW0huKzI0Pj4yXSxhW2dlKzI4Pj4yXT1hW0huKzI4Pj4yXSxSQyhsLGdlKSxHMShsLDB8YVtSPj4yXSwwfGFbRCsyMjg+PjJdLDB8YVtEKzI0ND4+Ml0s''@;'; put 'put ''MHxhW0QrMjEyPj4yXSkpLEVoKGwpKTtlOmRve2lmKCFXZSlmb3IobT0wfER0KHEpOzspe2lmKCFtKWJyZWFrIGU7Zm9yKFpBKGwsbSkscD0wfHcwKHEsbSk7cDspSEMobCxwKSxwPTB8UzAocSxwKTttPTB8enQocSxtKX19d2hpbGUoMCk7ZHZlKGwsYyksWnR8fGpBKGwscSxmKX1wZT1wZSsx''@;'; put 'put ''fDB9bGU9U259ZnVuY3Rpb24gWkEobCxjKXt2YXIgQSx3LGIsZj0wLHA9MCxtPTAsaz0wO2I9bGUsbGU9bGUrMzJ8MCxmPWIsQT0wfGFbKGx8PTApPj4yXSx3PTE2KyhjfD0wKXwwO2U6ZG97aWYoMHxhWzgrKDB8YVt3Pj4yXSk+PjJdJiYoMHx4b2UobCwwfGNyKGMpLGMpKTw8MjQ+PjI0JiYo''@;'; put 'put ''az1sKzI1NnwwLGFbZj4+Ml09YVtrPj4yXSxhW2YrND4+Ml09YVtrKzQ+PjJdLGFbZis4Pj4yXT1hW2srOD4+Ml0sYVtmKzEyPj4yXT1hW2srMTI+PjJdLGFbZisxNj4+Ml09YVtrKzE2Pj4yXSxhW2YrMjA+PjJdPWFbaysyMD4+Ml0sYVtmKzI0Pj4yXT1hW2srMjQ+PjJdLGFbZisyOD4+Ml09''@;'; put 'put ''YVtrKzI4Pj4yXSwoMHxmdmUoYyxmKSk8PDI0Pj4yNCkmJihwPTExNisoMHxhW3c+PjJdKXwwLG09MHxhW0ErMjg+PjJdLCgwfG0pIT0oMHxmZVtwPj4wXSkpKXtmZVtwPj4wXT1tLGRtKGwsMHx0aShjKSksZj0wfHYyKGMsMHxhWzQ3MTY5XSwxOTUwNTkpLDB8ZmVbZj4+MF0mJmRtKGwsZiks''@;'; put 'put ''Zj0wfHYyKGMsMHxhWzQ3MTU3XSwxOTUwNTkpO3Q6ZG97aWYoMHxmZVtmPj4wXSlmb3IoekEoZiksZj0xODgyMjg7Oyl7aWYocD1mLGY9Zis0fDAsIShwPTB8YVtwPj4yXSkpYnJlYWsgdDtpZigxMDU9PSgwfGZlW3A+PjBdKSYmISgwfFppKHAsMTM0MzM1KSkpYnJlYWsgZX19d2hpbGUoMCk7''@;'; put 'put ''aHZlKGwsYyksR3NbNjMmYVsyMCsoMHxhWzQrKDB8YVs4KygwfGFbdz4+Ml0pPj4yXSk+PjJdKT4+Ml1dKGwsYyksMHwoZj0wfGFbMTA4KygwfGFbdz4+Ml0pPj4yXSkmJjB8ZmVbZis4MT4+MF0mJmI3KGwsMTAsZiksVG9lKGwpfX13aGlsZSgwKTtsZT1ifWZ1bmN0aW9uIEhDKGwsYyl7Y3w9''@;'; put 'put ''MDt2YXIgQSxmPTAscD0wLG09MCx3PTA7QT1sZSxsZT1sZSszMnwwLGFbKG09QSk+PjJdPWFbKGY9MjU2KyhsfD0wKXwwKT4+Ml0sYVttKzQ+PjJdPWFbZis0Pj4yXSxhW20rOD4+Ml09YVtmKzg+PjJdLGFbbSsxMj4+Ml09YVtmKzEyPj4yXSxhW20rMTY+PjJdPWFbZisxNj4+Ml0sYVttKzIw''@;'; put 'put ''Pj4yXT1hW2YrMjA+PjJdLGFbbSsyND4+Ml09YVtmKzI0Pj4yXSxhW20rMjg+PjJdPWFbZisyOD4+Ml07ZTpkb3tpZigoMHxTRihjLG0pKTw8MjQ+PjI0JiYocD1jKy00OHwwLCgwfHdXKGwsYykpPDwyND4+MjQpKXt3PWMrNDh8MCxyZChmPTB8RjAoMysoZj0wfFVvKDB8dGkoMHxhWygzPT0o''@;'; put 'put ''MyZhW2M+PjJdfDApP2M6dykrNDA+PjJdKSkpKygwfFVvKDB8dGkoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6cCkrNDA+PjJdKSkpfDApLDB8dGkoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6dykrNDA+PjJdKSksdz0wPT0oMHxTYygwfGNyKDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOnApKzQw''@;'; put 'put ''Pj4yXSkpKSxtPWYrKDB8VW8oZikpfDAsdz8oZmVbbT4+MF09MHxmZVsxNDE3NDddLGZlW20rMT4+MF09MHxmZVsxNDE3NDhdLGZlW20rMj4+MF09MHxmZVsxNDE3NDldKTooZmVbbT4+MF09MHxmZVsxMzc3MzhdLGZlW20rMT4+MF09MHxmZVsxMzc3MzldLGZlW20rMj4+MF09MHxmZVsxMzc3''@;'; put 'put ''NDBdKSxzdihmLDB8dGkoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6cCkrNDA+PjJdKSksZG0obCxmKSxGdChmKSxmPTB8djIoYywwfGFbNDcxOTFdLDE5NTA1OSksMHxmZVtmPj4wXSYmZG0obCxmKSxmPTB8djIoYywwfGFbNDcxODVdLDE5NTA1OSk7dDpkb3tpZigwfGZlW2Y+PjBdKWZvcih6''@;'; put 'put ''QShmKSxmPTE4ODIyODs7KXtpZihwPWYsZj1mKzR8MCwhKHA9MHxhW3A+PjJdKSl7Zj0xODgyMjg7YnJlYWsgdH1pZigxMDU9PSgwfGZlW3A+PjBdKSYmISgwfFppKHAsMTM0MzM1KSkpYnJlYWsgZX1lbHNlIGY9MH13aGlsZSgwKTtPSChsLGMsZiksR1UobCxjLGYpLFdVKGwpfX13aGlsZSgw''@;'; put 'put ''KTtsZT1BfWZ1bmN0aW9uIEtyZShsLGMpe2N8PTA7dmFyIGYscD0wO2ZvcihmPTE2KyhsfD0wKXwwLGw9MTs7KXtpZigoMHxsKT4oMHxhWzE4MCsocD0wfGFbZj4+Ml0pPj4yXSkpe2w9MTticmVha31pZigwfE5yKDB8YVsoMHxhW3ArMTg0Pj4yXSkrKGw8PDIpPj4yXSxjKSl7bD0wO2JyZWFr''@;'; put 'put ''fWw9bCsxfDB9cmV0dXJuIDB8bH1mdW5jdGlvbiBrRihsLGMpe2N8PTA7dmFyIGYscD0wO2ZvcihmPTE2KyhsfD0wKXwwLGw9MTs7KXtpZigoMHxsKT4oMHxhWzE4MCsocD0wfGFbZj4+Ml0pPj4yXSkpe2w9MTticmVha31pZigwfE5yKDB8YVsoMHxhW3ArMTg0Pj4yXSkrKGw8PDIpPj4yXSxj''@;'; put 'put ''KSl7bD0wO2JyZWFrfWw9bCsxfDB9cmV0dXJuIDB8bH1mdW5jdGlvbiBTRihsLGMpe2N8PTA7dmFyIHAsbSx3LGIsZj0wLEE9MDtiPWxlLGxlPWxlKzY0fDAsdz1iKzMyfDAscD1iLDAhPSgwfChmPTB8YVs4KyhsPTB8YVsobT0xNisobHw9MCl8MCk+PjJdKT4+Ml0pKSYmKGFbcD4+Ml09YVso''@;'; put 'put ''Zj1mKzh8MCk+PjJdLGFbcCs0Pj4yXT1hW2YrND4+Ml0sYVtwKzg+PjJdPWFbZis4Pj4yXSxhW3ArMTI+PjJdPWFbZisxMj4+Ml0sYVtwKzE2Pj4yXT1hW2YrMTY+PjJdLGFbcCsyMD4+Ml09YVtmKzIwPj4yXSxhW3ArMjQ+PjJdPWFbZisyND4+Ml0sYVtwKzI4Pj4yXT1hW2YrMjg+PjJdLGFb''@;'; put 'put ''dz4+Ml09YVtjPj4yXSxhW3crND4+Ml09YVtjKzQ+PjJdLGFbdys4Pj4yXT1hW2MrOD4+Ml0sYVt3KzEyPj4yXT1hW2MrMTI+PjJdLGFbdysxNj4+Ml09YVtjKzE2Pj4yXSxhW3crMjA+PjJdPWFbYysyMD4+Ml0sYVt3KzI0Pj4yXT1hW2MrMjQ+PjJdLGFbdysyOD4+Ml09YVtjKzI4Pj4yXSww''@;'; put 'put ''IT0oMHx2eShwLHcpKSk/bD0xOkE9Mztkb3tpZigzPT0oMHxBKSl7aWYoZj0wfGFbbCs5Nj4+Ml0pe2lmKGFbdz4+Ml09YVtjPj4yXSxhW3crND4+Ml09YVtjKzQ+PjJdLGFbdys4Pj4yXT1hW2MrOD4+Ml0sYVt3KzEyPj4yXT1hW2MrMTI+PjJdLGFbdysxNj4+Ml09YVtjKzE2Pj4yXSxhW3cr''@;'; put 'put ''MjA+PjJdPWFbYysyMD4+Ml0sYVt3KzI0Pj4yXT1hW2MrMjQ+PjJdLGFbdysyOD4+Ml09YVtjKzI4Pj4yXSwoMHxQTihmLHcpKTw8MjQ+PjI0KXtsPTE7YnJlYWt9bD0wfGFbbT4+Ml19aWYoMHwobD0wfGFbbCsxMDg+PjJdKSYmMHxmZVtsKzgxPj4wXSYmKGFbdz4+Ml09YVtjPj4yXSxhW3cr''@;'; put 'put ''ND4+Ml09YVtjKzQ+PjJdLGFbdys4Pj4yXT1hW2MrOD4+Ml0sYVt3KzEyPj4yXT1hW2MrMTI+PjJdLGFbdysxNj4+Ml09YVtjKzE2Pj4yXSxhW3crMjA+PjJdPWFbYysyMD4+Ml0sYVt3KzI0Pj4yXT1hW2MrMjQ+PjJdLGFbdysyOD4+Ml09YVtjKzI4Pj4yXSwoMHxQTihsLHcpKTw8MjQ+PjI0''@;'; put 'put ''KSl7bD0xO2JyZWFrfWw9MH19d2hpbGUoMCk7cmV0dXJuIGxlPWIsMHxsfWZ1bmN0aW9uIHdXKGwsYyl7bHw9MCxjfD0wO3ZhciBmPTAscD0wO2U6ZG97aWYoKDB8YVtsKzE1Nj4+Ml0pPj0yJiYoZj0wfHYyKGMsMHxhWzQ3MTkwXSwxOTUwNTkpLCgwfGpJKGwsZikpPDwyND4+MjQ9PTApKWlm''@;'; put 'put ''KDB8ZmVbZj4+MF0pZj0wO2Vsc2UgZm9yKGY9MDs7KXtpZigoMHxmKT49Mil7Zj0wO2JyZWFrIGV9aWYocD0wfHYyKDB8YVsoKDMmYVtjPj4yXXwwKT09KDB8KChwPTE9PSgwfGYpKT8yOjMpKT9jOmMrKDQ4KihwPy0xOjEpfDApfDApKzQwPj4yXSwwfGFbNDcxNjddLDE5NTA1OSksISgwfGZl''@;'; put 'put ''W3A+PjBdKSl7Zj0xO2JyZWFrIGV9aWYoKDB8akkobCxwKSk8PDI0Pj4yNCl7Zj0xO2JyZWFrfWY9ZisxfDB9ZWxzZSBmPTF9d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiB6QShsKXtsfD0wO3ZhciBtLEEsdyxiLGssTSxELFIsRyxjPTAsZj0wLHA9MDtHPWxlLGxlPWxlKzE5MnwwLFI9''@;'; put 'put ''RysyNHwwLEQ9RysxNnwwLE09Rys4fDAsaz1HLG09Rys0OHwwLGI9RyszMnwwLDB8ZmVbMTAwMjgyXSYmKHVzKDE4ODQ5MiwxMjgsMTk0ODI2KSxmZVsxMDAyODJdPTApLHVzKGIsMTI4LEcrNTZ8MCksYVttPj4yXT1sLEE9Yis0fDAsdz1iKzh8MCxjPTAsZj0wO2U6Zm9yKDs7KXtwPWM7dDpm''@;'; put 'put ''b3IoOzspc3dpdGNoKDB8TW9lKG0sYikpe2Nhc2UgMDpjPTIxO2JyZWFrIGU7Y2FzZSA0MDppZihwPDwyND4+MjQpe2M9NzticmVhayBlfXA9MTtjb250aW51ZSB0O2Nhc2UgNDE6aWYocDw8MjQ+PjI0KXtwPTA7Y29udGludWUgdH1jPTk7YnJlYWsgZTtkZWZhdWx0OmJyZWFrIHR9aWYoIShw''@;'; put 'put ''PDwyND4+MjQpKXtpZig2Mz09KDB8Zikpe2M9MTI7YnJlYWt9KGM9MHxhWzQ3MTI0XSk+Pj4wPj0oMHxhWzQ3MTI1XSk+Pj4wJiYoUTAoMTg4NDkyLDEpLGM9MHxhWzQ3MTI0XSksYVs0NzEyNF09YysxLGZlW2M+PjBdPTAsYVsxODgyMjgrKGY8PDIpPj4yXT1hWzQ3MTI0XSxmPWYrMXwwfShj''@;'; put 'put ''PTB8YVtBPj4yXSk+Pj4wPj0oMHxhW3c+PjJdKT4+PjAmJihRMChiLDEpLGM9MHxhW0E+PjJdKSxmZVtjPj4wXT0wLGFbQT4+Ml09Yz0wfGFbYj4+Ml0sdW8oMTg4NDkyLGMpLChjPTB8YVs0NzEyNF0pPj4+MD49KDB8YVs0NzEyNV0pPj4+MCYmKFEwKDE4ODQ5MiwxKSxjPTB8YVs0NzEyNF0p''@;'; put 'put ''LGFbNDcxMjRdPWMrMSxmZVtjPj4wXT0wLGM9cH1kb3tpZig3PT0oMHxjKSlhW2s+PjJdPWwsJHIoMSwxMDAyODMsayksYVs0NzA1N109MCxDMihiKTtlbHNlIGlmKDk9PSgwfGMpKWFbTT4+Ml09bCwkcigxLDEwMDMxNyxNKSxhWzQ3MDU3XT0wLEMyKGIpO2Vsc2UgaWYoMTI9PSgwfGMpKWFb''@;'; put 'put ''RD4+Ml09bCwkcigwLDEwMDM0NSxEKSxhWzQ3MTIwXT0wLEMyKGIpO2Vsc2UgaWYoMjE9PSgwfGMpKXtpZihwPDwyND4+MjQpe2FbUj4+Ml09bCwkcigxLDEwMDM2OCxSKSxhWzQ3MDU3XT0wLEMyKGIpO2JyZWFrfWFbMTg4MjI4KyhmPDwyKT4+Ml09MCxDMihiKSwoYz0wfGFbNDcxMjRdKT4+''@;'; put 'put ''PjA+PSgwfGFbNDcxMjVdKT4+PjAmJihRMCgxODg0OTIsMSksYz0wfGFbNDcxMjRdKSxmZVtjPj4wXT0wLGFbNDcxMjRdPWFbNDcxMjNdfX13aGlsZSgwKTtyZXR1cm4gbGU9RywxODgyMjh9ZnVuY3Rpb24gaXAobCl7dmFyIG0sQSxiLGM9MCxmPTAscD0wLHc9MDtiPWxlLGxlPWxlKzEwNDB8''@;'; put 'put ''MCxBPWIsbT1iKzh8MCxwPTAsYz1sfD0wO2U6Zm9yKDs7KXtkb3tpZihmPWMsYz1jKzF8MCwhKChmPTB8ZmVbZj4+MF0pPDwyND4+MjQpKWJyZWFrIGV9d2hpbGUoKChmPDwyND4+MjQpLTQ4fDApPj4+MD49MTApO2lmKCgwfHApPj0xMDIzKXt3PTc7YnJlYWt9ZmVbbStwPj4wXT1mLHA9cCsx''@;'; put 'put ''fDB9cmV0dXJuIDc9PSgwfHcpJiYoYVtBPj4yXT1sLCRyKDAsNjY4MTksQSkpLGZlW20rcD4+MF09MCx3PTY1NTM1JigwfHIzKG0pKSxsZT1iLDB8d31mdW5jdGlvbiB6VChsKXtsfD0wO3ZhciBtLGssTSxjPTAsZj0wLHA9MCxBPTAsdz0wLGI9MDtpZihNPWxlLGxlPWxlKzExODR8MCxBPU0s''@;'; put 'put ''cD1NKzI0fDAsdXMoaz1NKzh8MCwxMDI0LE0rMTUyfDApLChtPStfWzE1MisoYz0wfGFbKHc9bCsxNnwwKT4+Ml0pPj4zXSkhPStfWyhmPTgrKGFbYysxMj4+Ml08PDMpfDApPj4zXSYmKF9bZj4+M109bSx1byhrLDY2ODgyKSxfW0E+PjNdPStfWzE1MisoMHxhW3c+PjJdKT4+M10sb28ocCw2''@;'; put 'put ''Njg5NixBKSxFRihwLDApLHVvKGsscCksKGM9MHxhWyhwPWsrNHwwKT4+Ml0pPj4+MD49KDB8YVsoZj1rKzh8MCk+PjJdKT4+PjAmJihRMChrLDEpLGM9MHxhW3A+PjJdKSxhW3A+PjJdPWMrMSxmZVtjPj4wXT00MSwoYz0wfGFbcD4+Ml0pPj4+MD49KDB8YVtmPj4yXSk+Pj4wJiYoUTAoaywx''@;'; put 'put ''KSxjPTB8YVtwPj4yXSksZmVbYz4+MF09MCxhW3A+PjJdPWM9MHxhW2s+PjJdLFA1KGwsNjY5MDEsYyksYz0wfGFbdz4+Ml0pLDB8KGM9MHxhW2MrMTYwPj4yXSkpe3c9ays0fDAsYj1rKzh8MDtlOmZvcig7QT1jKzR8MCxjPTB8YVtjPj4yXSxjOyl7c3dpdGNoKDB8ZmVbYz4+MF0pe2Nhc2Ug''@;'; put 'put ''MTAyOmlmKCEoMHxaaShjLDExMTEwMSkpKXtjPUE7Y29udGludWUgZX1icmVhaztjYXNlIDk4OmlmKCEoMHxaaShjLDExMTA4MykpKXtjPUE7Y29udGludWUgZX1icmVhaztjYXNlIDExNTppZighKDB8WmkoYywxMTEwODgpKSl7Yz1BO2NvbnRpbnVlIGV9fXVvKGssYyk7ZG97cD1jLGM9Yysx''@;'; put 'put ''fDB9d2hpbGUoMCE9KDB8ZmVbcD4+MF0pKTtpZigwfGZlW2M+PjBdKXtmb3IoKGY9MHxhW3c+PjJdKT4+PjA+PSgwfGFbYj4+Ml0pPj4+MCYmKFEwKGssMSksZj0wfGFbdz4+Ml0pLGFbdz4+Ml09ZisxLGZlW2Y+PjBdPTQwLHA9MDswfGZlW2M+PjBdOyl7MHxwJiYoKGY9MHxhW3c+PjJdKT4+''@;'; put 'put ''PjA+PSgwfGFbYj4+Ml0pPj4+MCYmKFEwKGssMSksZj0wfGFbdz4+Ml0pLGFbdz4+Ml09ZisxLGZlW2Y+PjBdPTQ0KSx1byhrLGMpO2Rve2Y9YyxjPWMrMXwwfXdoaWxlKDAhPSgwfGZlW2Y+PjBdKSk7cD1wKzF8MH0oYz0wfGFbdz4+Ml0pPj4+MD49KDB8YVtiPj4yXSk+Pj4wJiYoUTAoaywx''@;'; put 'put ''KSxjPTB8YVt3Pj4yXSksYVt3Pj4yXT1jKzEsZmVbYz4+MF09NDF9KGM9MHxhW3c+PjJdKT4+PjA+PSgwfGFbYj4+Ml0pPj4+MCYmKFEwKGssMSksYz0wfGFbdz4+Ml0pLGZlW2M+PjBdPTAsYVt3Pj4yXT1jPTB8YVtrPj4yXSxQNShsLDY2OTAxLGMpLGM9QX1DMihrKX1sZT1NfWZ1bmN0aW9u''@;'; put 'put ''IE5DKGwpe3hGKDE2KygwfGFbMTYrKGx8PTApPj4yXSl8MCksUDUobCw3NTgzNCwxOTM3NTgpfWZ1bmN0aW9uIFZDKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBtLEEsYixrLHc9MDtmb3Ioaz1sZSxsZT1sZSsxMDQwfDAsYj1rLHc9aysxNnwwLChsPTB8YVsobT00KyhBPTB8YVsxMTQx''@;'; put 'put ''NisoYVsxMisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXTw8Mik+PjJdKXwwKT4+Ml0pPj4+MD49KDB8YVtBKzg+PjJdKT4+PjAmJihRMChBLDEpLGw9MHxhW20+PjJdKSxhW20+PjJdPWwrMSxmZVtsPj4wXT1jLGFbYj4+Ml09cCxvbyh3LDY2ODQ2LGIpLHVvKEEsdyksbD0wOyEoKDB8bCk+PSgw''@;'; put 'put ''fHApKTspYVtiPj4yXT1hWyh3PWYrKGw8PDQpfDApPj4yXSxhW2IrND4+Ml09YVt3KzQ+PjJdLGFbYis4Pj4yXT1hW3crOD4+Ml0sYVtiKzEyPj4yXT1hW3crMTI+PjJdLEI1KEEsYiksbD1sKzF8MDtsZT1rfWZ1bmN0aW9uIEI1KGwsYyl7dmFyIGYscDtsfD0wLGY9bGUsbGU9bGUrMTAyNHww''@;'; put 'put ''LFdoKHA9ZiwrX1soY3w9MCk+PjNdKSx1byhsLHApLFdoKHAsK2Z1bmN0aW9uIHVhZShsKXtyZXR1cm4rKGw9K2wpfSgrX1tjKzg+PjNdKSksdW8obCxwKSxsZT1mfWZ1bmN0aW9uIFdoKGwsYyl7dmFyIGYscDtsfD0wLGY9bGUsbGU9bGUrMTZ8MCxfWyhwPWYpPj4zXT0oYz0rYyk+LTFlLTgm''@;'; put 'put ''YzwxZS04PzA6YyxvbyhsLDY2ODUxLHApLEVGKGwsMSksbGU9Zn1mdW5jdGlvbiBFRihsLGMpe2N8PTA7dmFyIGY9MCxwPTA7aWYoZj0wfCRzKGx8PTAsNDYpKXtmb3IoOzB8ZmVbKGw9ZisxfDApPj4wXTspZj1sO2U6Zm9yKDs7KXtzd2l0Y2goMHxmZVtmPj4wXSl7Y2FzZSA0NjpwPTU7YnJl''@;'; put 'put ''YWsgZTtjYXNlIDQ4OmJyZWFrO2RlZmF1bHQ6cD02O2JyZWFrIGV9ZmVbZj4+MF09MCxmPWYrLTF8MH01PT0oMHxwKT9mZVtmPj4wXT0wOjY9PSgwfHApJiYoZj1mKzF8MCksMHxjJiYocD0xMCl9ZWxzZSAwfGMmJihmPWwrKDB8VW8obCkpfDAscD0xMCk7MTA9PSgwfHApJiYoZmVbZj4+MF09''@;'; put 'put ''MzIsZmVbZisxPj4wXT0wKX1mdW5jdGlvbiB4RihsKXt2YXIgYyxmLHAsbSxBLHc7dz1sZSxsZT1sZSszMnwwLEE9dysxNnwwLG09dyxjPTB8ZmVbMysobHw9MCk+PjBdLGY9MHxYdFtsPj4wXSxwPTB8WHRbbCsxPj4wXSxsPTB8WHRbbCsyPj4wXSxjPDwyND4+MjQ9PS0xPyhhW20+PjJdPWYs''@;'; put 'put ''YVttKzQ+PjJdPXAsYVttKzg+PjJdPWwsb28oMTkzNzU4LDc1NzE0LG0pKTooYVtBPj4yXT1mLGFbQSs0Pj4yXT1wLGFbQSs4Pj4yXT1sLGFbQSsxMj4+Ml09MjU1JmMsb28oMTkzNzU4LDY2ODY0LEEpKSxsZT13fWZ1bmN0aW9uIFA1KGwsYyxmKXt4VygwfGFbMTE0MTYrKGFbMTIrKDB8YVsx''@;'; put 'put ''NisobHw9MCk+PjJdKT4+Ml08PDIpPj4yXSxjfD0wLGZ8PTApfWZ1bmN0aW9uIHhXKGwsYyxmKXt2YXIgcCxtLEEsdztsfD0wLGN8PTAscD1sZSxsZT1sZSsxMDQwfDAsQT1wLG09cCs4fDAsdz0wfFVvKGZ8PTApLGFbQT4+Ml09YyxhW0ErND4+Ml09dyxvbyhtLDY2ODU3LEEpLHVvKGwsbSks''@;'; put 'put ''dW8obCxmKSwoYz0wfGFbKGY9bCs0fDApPj4yXSk+Pj4wPj0oMHxhW2wrOD4+Ml0pPj4+MCYmKFEwKGwsMSksYz0wfGFbZj4+Ml0pLGFbZj4+Ml09YysxLGZlW2M+PjBdPTMyLGxlPXB9ZnVuY3Rpb24gVEYobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIFIscSxwZSxiZSxPZSxtPTAsQT0w''@;'; put 'put ''LHc9MCxiPTAsaz0wLE09MCxEPTAsRz0wLGdlPTAsTGU9MDtPZT1sZSxsZT1sZSsxMTIwfDAscT1PZSs2NHwwLGJlPU9lKzgwfDAsQT1PZSszMnwwLFI9T2UrMTZ8MCxHPU9lLG09LjAxNzQ1MzI5MjUxOTk0MzI5NSorKDB8YVsxMzYrKHBlPTB8YVsxNisobHw9MCk+PjJdKT4+Ml0pLCgwfGhy''@;'; put 'put ''WzgyMzIrKDB8YVs0NjY5MF0pPj4xXSk8MTQ/R1QobCk6KHVzKGJlLDEwMjQsT2UrOTZ8MCksKGdlPTI9PSgwfGMpKT8od0QoZixBLHAsbSwyKSwoYz0wfGFbKGY9YmUrNHwwKT4+Ml0pPj4+MD49KDB8YVtiZSs4Pj4yXSk+Pj4wJiYoUTAoYmUsMSksYz0wfGFbZj4+Ml0pLGFbZj4+Ml09Yysx''@;'; put 'put ''LGZlW2M+PjBdPTkxLGFbcT4+Ml09YVtBPj4yXSxhW3ErND4+Ml09YVtBKzQ+PjJdLGFbcSs4Pj4yXT1hW0ErOD4+Ml0sYVtxKzEyPj4yXT1hW0ErMTI+PjJdLEI1KGJlLHEpLGFbcT4+Ml09YVsoRz1BKzE2fDApPj4yXSxhW3ErND4+Ml09YVtHKzQ+PjJdLGFbcSs4Pj4yXT1hW0crOD4+Ml0s''@;'; put 'put ''YVtxKzEyPj4yXT1hW0crMTI+PjJdLEI1KGJlLHEpKTood0QoZixBLHAsMCwzKSxEPStfW0ErMjQ+PjNdLGs9K19bQT4+M10sMD09bT8oTT0uMjUqRCxtPWI9K19bQSs4Pj4zXSx3PWspOihMZT1NPS4yNSpELHc9K2hhKCttKSpMZStrLGI9K19bQSs4Pj4zXSxtPStEYSgrbSkqTGUrYiksX1tS''@;'; put 'put ''Pj4zXT13LF9bUis4Pj4zXT1tLF9bRz4+M109ayxfW0crOD4+M109YiwoYz0wfGFbKGY9YmUrNHwwKT4+Ml0pPj4+MD49KDB8YVtiZSs4Pj4yXSk+Pj4wJiYoUTAoYmUsMSksYz0wfGFbZj4+Ml0pLGFbZj4+Ml09YysxLGZlW2M+PjBdPTQwLGFbcT4+Ml09YVtSPj4yXSxhW3ErND4+Ml09YVtS''@;'; put 'put ''KzQ+PjJdLGFbcSs4Pj4yXT1hW1IrOD4+Ml0sYVtxKzEyPj4yXT1hW1IrMTI+PjJdLEI1KGJlLHEpLFRXKGJlLE0pLGFbcT4+Ml09YVtHPj4yXSxhW3ErND4+Ml09YVtHKzQ+PjJdLGFbcSs4Pj4yXT1hW0crOD4+Ml0sYVtxKzEyPj4yXT1hW0crMTI+PjJdLEI1KGJlLHEpLFRXKGJlLEQpKSx1''@;'; put 'put ''byhiZSw2NjkwNyksZj1wZSs1NnwwLChtPStqblsoYz1wZSsxNDB8MCk+PjJdKT4wPyhXVChiZSxtLGYpLFdUKGJlLCtqbltjPj4yXSxwZSs5NnwwKSk6KFdUKGJlLDAsZiksV1QoYmUsMSxwZSs5NnwwKSksTDYoYmUpLGY9KGM9MHxhWyhBPWJlKzR8MCk+PjJdKT4+PjA+PSgwfGFbKHA9YmUr''@;'; put 'put ''OHwwKT4+Ml0pPj4+MCxnZT8oZiYmKFEwKGJlLDEpLGM9MHxhW0E+PjJdKSxhW0E+PjJdPWMrMSxmZVtjPj4wXT05Myk6KGYmJihRMChiZSwxKSxjPTB8YVtBPj4yXSksYVtBPj4yXT1jKzEsZmVbYz4+MF09NDEpLChjPTB8YVtBPj4yXSk+Pj4wPj0oMHxhW3A+PjJdKT4+PjAmJihRMChiZSwx''@;'; put 'put ''KSxjPTB8YVtBPj4yXSksZmVbYz4+MF09MCxhW0E+PjJdPWdlPTB8YVtiZT4+Ml0sUDUobCw2NjkwNCxnZSksQzIoYmUpKSxsZT1PZX1mdW5jdGlvbiBHVChsKXt4Rig1NisoMHxhWzE2KyhsfD0wKT4+Ml0pfDApLFA1KGwsNjY5MDQsMTkzNzU4KX1mdW5jdGlvbiBUVyhsLGMpe3ZhciBmLHA7''@;'; put 'put ''bHw9MCxmPWxlLGxlPWxlKzEwMjR8MCxXaChwPWYsYz0rYyksdW8obCxwKSxsZT1mfWZ1bmN0aW9uIFdUKGwsYyxmKXt2YXIgcCxtLEE7bHw9MCxmfD0wLHA9bGUsbGU9bGUrMTA0MHwwLG09cCs4fDAsX1soQT1wKT4+M109Yz0rYyxvbyhtLDk0MTY4LEEpLEVGKG0sMSkseEYoZikseFcobCxt''@;'; put 'put ''LDE5Mzc1OCksbGU9cH1mdW5jdGlvbiBZVChsLGMpe2N8PTA7dmFyIGY9MDtmb3IoYVsobHw9MCk+PjJdPS05JmFbbD4+Ml0sZj0wfHdzKGwpO2Y7KVlUKGYsMCksZj0wfEVzKGYpO2U6ZG97aWYoMHxjKWZvcihjPTB8RHQobCk7Oyl7aWYoIWMpYnJlYWsgZTtmb3IoYVtjPj4yXT0tOSZhW2M+''@;'; put 'put ''PjJdLGY9MHx3MChsLGMpO2Y7KWFbZj4+Ml09LTkmYVtmPj4yXSxmPTB8UzAobCxmKTtjPTB8enQobCxjKX19d2hpbGUoMCl9ZnVuY3Rpb24gSUYobCxjLGYscCl7bHw9MCxjfD0wLHB8PTA7dmFyIFIsRyxwZSxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAscT0wO2lmKHBlPWxlLGxlPWxl''@;'; put 'put ''KzE2fDAscT1wZSs4fDAsRz1wZSxSPTAhPSgwfChmfD0wKSkpe2ZvcihEPTB8aXMoMTE4MzYsMHxhWzQ1ODFdKSwkaShsLDEsMTQxMDYwLDEyLDApLCRpKGwsMiwxNDEwNjAsMTIsMCksJGkobCwwLDE0MTA2MCwtMTIsMCksbT0wfERXKGwsMCxEKSxrPTB8RHQobCksYj0wLEE9MDtrOyl7Zm9y''@;'; put 'put ''KDB8czIoMHx0aShrKSwxMDgwMDYsNyk/KE09QSsxfDAsQT1BK218MCk6KE09QSxBPTB8bGllKEQsMHx0aShrKSkpLGFbOCsoMHxhbyhrLDE0MTA2MCwwKSk+PjJdPUEsdz0wfHcwKGwsayksQT1iO3c7KWFbOCsoMHxhbyh3LDE0MTA2MCwwKSk+PjJdPUEsdz0wfFMwKGwsdyksQT1BKzF8MDtr''@;'; put 'put ''PTB8enQobCxrKSxiPUEsQT1NfU5sKEQpfWVsc2UgbT0wO2FbcD4+Ml09MSsoRD0wfGFbcD4+Ml0pLEFhKGMsRCksRW4oYyw5NzM3NCksZnVuY3Rpb24gREYobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIG0sQSx3LGIsaz0wO3c9bGUsbGU9bGUrMzJ8MCxBPXcrMTZ8MCxtPXcrOHwwLGI9''@;'; put 'put ''dyxrPTB8dGkobHw9MCksQWEoYywwfGFbcD4+Ml0pLGFbYj4+Ml09MHxvcChrLHApLE9yKGMsNjcxMjQsYiksMHxmJiYoRW4oYyw5NzM0NSksQWEoYywwfGFbcD4+Ml0pLGs9MCE9KDB8U2MobCkpLGFbbT4+Ml09az8xMDc2NTI6MTM3MzA4LE9yKGMsNjc3MzgsbSksQWEoYywwfGFbcD4+Ml0p''@;'; put 'put ''LGs9MCE9KDB8TEEobCkpLGFbQT4+Ml09az8xMDc2NTI6MTM3MzA4LE9yKGMsNjc3NTUsQSkpLGxlPXd9KGwsYyxmLHApLGpDKGwsYyxwKSxFbihjLDk3MzQ1KSxBYShjLDB8YVtwPj4yXSksUj8oYVtHPj4yXT1tLE9yKGMsNjcwMTYsRykpOihhW3E+PjJdPWFbOCsoMHxhbyhsLDE0MTA2MCww''@;'; put 'put ''KSk+PjJdLE9yKGMsNjcwMzYscSkpLGZ1bmN0aW9uIHI3ZShsLGMsZixwLG0pe2N8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MCx3PTA7aWYoQT0wfER0KGx8PTApKXtmb3IoRW4oYyw5NzM0NSksKHc9MCE9KDB8ZikpPyhwfHwoYVttPj4yXT0xKyhwPTB8YVttPj4yXSksQWEoYyxwKSxFbihj''@;'; put 'put ''LDY3MDk4KSkscD0wKTooYVttPj4yXT0xKyhwPTB8YVttPj4yXSksQWEoYyxwKSxFbihjLDY3MTEyKSxBYShjLDB8YVttPj4yXSkscD0wKTtBOyl7aWYoMHxzMigwfHRpKEEpLDEwODAwNiw3KSl7ZG97aWYocCl7aWYodyl7RW4oYyw5NzM0NSk7YnJlYWt9RW4oYywxMDA5OTkpO2JyZWFrfXA9''@;'; put 'put ''MX13aGlsZSgwKTt1aWUoQSxjLGYsbSl9QT0wfHp0KGwsQSl9YVttPj4yXT0oMHxhW20+PjJdKS0xLEVuKGMsMTUzNTk5KSxBYShjLDB8YVttPj4yXSksRW4oYyw5NzM0MCl9ZWxzZSAwIT0oMHxmKSYwIT0oMHxwKSYmKGFbbT4+Ml09KDB8YVttPj4yXSktMSxFbihjLDE1MzU5OSksQWEoYyww''@;'; put 'put ''fGFbbT4+Ml0pLEVuKGMsOTczNDApKX0obCxjLGYsMHxmdW5jdGlvbiBzaWUobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIG0sdyxiLEE9MDtpZihiPWxlLGxlPWxlKzE2fDAsdz1iLG09MHx3cyhsfD0wKSl7Zm9yKEVuKGMsOTczNDUpLGFbcD4+Ml09MSsoQT0wfGFbcD4+Ml0pLEFhKGMs''@;'; put 'put ''QSksKEE9MCE9KDB8ZikpPyhFbihjLDY3MDk4KSxsPTAsZj1tKTooRW4oYyw2NzE1OCksQWEoYywwfGFbcD4+Ml0pLGw9MCxmPW0pO2Y7KWw/RW4oYyw5NzM0NSk6bD0xLEE/T1coZixjLHApOihhW3c+PjJdPWFbOCsoMHxhbyhmLDE0MTA2MCwwKSk+PjJdLE9yKGMsMTM3Mzk1LHcpKSxmPTB8''@;'; put 'put ''RXMoZik7QXx8KGFbcD4+Ml09KDB8YVtwPj4yXSktMSxFbihjLDE1MzU5OSksQWEoYywwfGFbcD4+Ml0pLEVuKGMsOTczNDApKSxsPTF9ZWxzZSBsPTA7cmV0dXJuIGxlPWIsMHxsfShsLGMsZixwKSxwKSxmdW5jdGlvbiBiYShsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3''@;'; put 'put ''PTAsYj0wO209MHxEdChsfD0wKTtlOmRve2lmKDB8bSl7Zm9yKDs7KXtpZighbSlicmVhayBlO2lmKDB8dzAobCxtKSlicmVhazttPTB8enQobCxtKX1mb3IoRW4oYyw5NzM0NSksYVtwPj4yXT0xKyhiPTB8YVtwPj4yXSksQWEoYyxiKSxFbihjLDY3MDQ4KSwoYj0wIT0oMHxmKSl8fEFhKGMs''@;'; put 'put ''MHxhW3A+PjJdKSxBPTA7bTspe2Zvcih3PTB8dzAobCxtKTt3Oyl7ZG97aWYoQSl7aWYoYil7RW4oYyw5NzM0NSk7YnJlYWt9RW4oYywxMDA5OTkpO2JyZWFrfUE9MX13aGlsZSgwKTtMVyh3LGMsZixwKSx3PTB8UzAobCx3KX1tPTB8enQobCxtKX1hW3A+PjJdPSgwfGFbcD4+Ml0pLTEsRW4o''@;'; put 'put ''YywxNTM1OTkpLEFhKGMsMHxhW3A+PjJdKSxFbihjLDk3MzQwKX19d2hpbGUoMCl9KGwsYyxmLHApLEVuKGMsMTUzNTk5KSxhW3A+PjJdPXE9KDB8YVtwPj4yXSktMXwwLEFhKGMscSksRW4oYyxSPzExMTAwODo3NTM1NyksbGU9cGV9ZnVuY3Rpb24gRFcobCxjLGYpe2N8PTAsZnw9MDt2YXIg''@;'; put 'put ''cD0wO2ZvcigoMHxkaShsfD0wKSkhPSgwfGwpJiYocD1jKzF8MCxhWzgrKDB8YW8obCwxNDEwNjAsMCkpPj4yXT1jLDB8czIoMHx0aShsKSwxMDgwMDYsNyl8fGZ1bmN0aW9uIFBXKGwsYyxmKXtmfD0wO3ZhciBwLEEsbT0wO0E9bGUsbGU9bGUrMTZ8MCxtPUEsKHA9MHxtaVs2MyZhWyhsfD0w''@;'; put 'put ''KT4+Ml1dKGwsY3w9MCw1MTIpKT8oMHxhW3ArMTI+PjJdKSE9KDB8ZikmJihhW20+PjJdPWMsJHIoMCw2Nzc2OCxtKSk6KG09MHxzaCgxLDE2KSxhW20rOD4+Ml09MHxyYShjKSxhW20rMTI+PjJdPWYsbWlbNjMmYVtsPj4yXV0obCxtLDEpKSxsZT1BfShmLGM9MHx0aShsKSwwfGFbOCsoMHxh''@;'; put 'put ''byhsLDE0MTA2MCwwKSk+PjJdKSxjPXApLHA9MHx3cyhsKTtwOylsPTB8RFcocCxjLGYpLHA9MHxFcyhwKSxjPWw7cmV0dXJuIDB8Y31mdW5jdGlvbiBsaWUobCxjKXtyZXR1cm4gMHwoKGw9MHxtaVs2MyZhWyhsfD0wKT4+Ml1dKGwsY3w9MCw1MTIpKT8wfGFbbCsxMj4+Ml06LTEpfWZ1bmN0''@;'; put 'put ''aW9uIEFhKGwsYyl7Zm9yKGx8PTAsY3w9MDshKCgwfGMpPD0wKTspRW4obCw5MDU3NCksYz1jKy0xfDB9ZnVuY3Rpb24gakMobCxjLGYpe2N8PTAsZnw9MDt2YXIgdyxiLE0sRCxSLHA9MCxtPTAsQT0wLGs9MDtSPWxlLGxlPWxlKzE2fDAsRD1SKzh8MCxNPVIscD0wfE5zKHc9MHxkaShsfD0w''@;'; put 'put ''KSxiPTMmYVtsPj4yXSwwKTtlOmRve2lmKDB8cClmb3Ioaz1mKzV8MDs7KXtpZighcClicmVhayBlO209MHxIbyhsLHApO2Rve2lmKDB8bSl7aWYoQT1wKzh8MCwhKDB8ZmVbbT4+MF0pJiYoMTA4IT0oMHxmZVsobT0wfGFbQT4+Ml0pPj4wXSl8fDB8WmkobSwxMDgyMjQpKSlicmVhaztpZihF''@;'; put 'put ''bihjLDk3MzQ1KSxBYShjLDB8YVtmPj4yXSksYVtNPj4yXT0wfG9wKDB8YVtBPj4yXSxmKSxPcihjLDY3MTc0LE0pLDB8ZmVbaz4+MF0mJjB8U2woMHxhW0E+PjJdKSl7aTdlKDB8SG8obCxwKSxjLGYpO2JyZWFrfWFbRD4+Ml09MHxvcCgwfEhvKGwscCksZiksT3IoYyw2NzE4MSxEKX19d2hp''@;'; put 'put ''bGUoMCk7cD0wfE5zKHcsYixwKX19d2hpbGUoMCk7bGU9Un1mdW5jdGlvbiBMVyhsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgbSxBLHcsayxiPTA7az1sZSxsZT1sZSszMnwwLGI9aysyNHwwLHc9aysxNnwwLEE9ays4fDAsbT1rLChmfD0wKT8oYVtwPj4yXT0xKyhiPTB8YVtwPj4yXSks''@;'; put 'put ''QWEoYyxiKSxFbihjLDk3Mzc0KSxBYShjLDB8YVtwPj4yXSksYVttPj4yXT1hWzgrKDB8YW8obCwxNDEwNjAsMCkpPj4yXSxPcihjLDY3MDYwLG0pLEFhKGMsMHxhW3A+PjJdKSxhW0E+PjJdPWFbOCsoMHxhbygwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpsKzQ4fDApKzQwPj4yXSwxNDEwNjAs''@;'; put 'put ''MCkpPj4yXSxPcihjLDY3MDc0LEEpLEFhKGMsMHxhW3A+PjJdKSxhW3c+PjJdPWFbOCsoMHxhbygwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHwwKSs0MD4+Ml0sMTQxMDYwLDApKT4+Ml0sT3IoYyw2NzA4Nyx3KSxqQyhsLGMscCksRW4oYywxNTM1OTkpLGFbcD4+Ml09Yj0oMHxhW3A+''@;'; put 'put ''PjJdKS0xfDAsQWEoYyxiKSxFbihjLDc1MzU3KSk6KGFbYj4+Ml09YVs4KygwfGFvKGwsMTQxMDYwLDApKT4+Ml0sT3IoYywxMzczOTUsYikpLGxlPWt9ZnVuY3Rpb24gdWllKGwsYyxmLHApe2x8PTAsY3w9MCxwfD0wO3ZhciBtLEEsYix3PTA7Yj1sZSxsZT1sZSszMnwwLHc9YisxNnwwLEE9''@;'; put 'put ''Yis4fDAsbT1iLChmfD0wKT8oYVtwPj4yXT0xKyh3PTB8YVtwPj4yXSksQWEoYyx3KSxFbihjLDk3Mzc0KSxBYShjLDB8YVtwPj4yXSksYVttPj4yXT1hWzgrKDB8YW8obCwxNDEwNjAsMCkpPj4yXSxPcihjLDY3MDYwLG0pLEFhKGMsMHxhW3A+PjJdKSxhW0E+PjJdPTB8b3AoMHx0aShsKSxw''@;'; put 'put ''KSxPcihjLDY3MTI0LEEpLGpDKGwsYyxwKSxFbihjLDE1MzU5OSksYVtwPj4yXT13PSgwfGFbcD4+Ml0pLTF8MCxBYShjLHcpLEVuKGMsNzUzNTcpKTooYVt3Pj4yXT1hWzgrKDB8YW8obCwxNDEwNjAsMCkpPj4yXSxPcihjLDEzNzM5NSx3KSksbGU9Yn1mdW5jdGlvbiBvcChsLGMpe2x8PTA7''@;'; put 'put ''dmFyIG0sZj0wLHA9MDswfGZlWyhtPTQrKGN8PTApfDApPj4wXSYmKGw9MHx5ayhsKSksMHxhWzQ2NzA2XXx8dXMoMTg2ODI0LDEwMjQsMCksZj1sO2U6Zm9yKDs7KXtzd2l0Y2goKHA9MHxmZVtmPj4wXSk8PDI0Pj4yNCl7Y2FzZSAwOmJyZWFrIGU7Y2FzZSAzNDp1bygxODY4MjQsNjcxMzcp''@;'; put 'put ''O2JyZWFrO2Nhc2UgOTI6dW8oMTg2ODI0LDk2NjE2KTticmVhaztjYXNlIDQ3OnVvKDE4NjgyNCw2NzE0MCk7YnJlYWs7Y2FzZSA4OnVvKDE4NjgyNCw2NzE0Myk7YnJlYWs7Y2FzZSAxMjp1bygxODY4MjQsNjcxNDYpO2JyZWFrO2Nhc2UgMTA6dW8oMTg2ODI0LDY3MTQ5KTticmVhaztjYXNl''@;'; put 'put ''IDEzOnVvKDE4NjgyNCw2NzE1Mik7YnJlYWs7Y2FzZSA5OnVvKDE4NjgyNCw2NzE1NSk7YnJlYWs7ZGVmYXVsdDooYz0wfGFbNDY3MDddKT4+PjA+PSgwfGFbNDY3MDhdKT4+PjAmJihRMCgxODY4MjQsMSksYz0wfGFbNDY3MDddKSxhWzQ2NzA3XT1jKzEsZmVbYz4+MF09cH1mPWYrMXwwfXJl''@;'; put 'put ''dHVybihjPTB8YVs0NjcwN10pPj4+MD49KDB8YVs0NjcwOF0pPj4+MCYmKFEwKDE4NjgyNCwxKSxjPTB8YVs0NjcwN10pLGZlW2M+PjBdPTAsYVs0NjcwN109Yz0wfGFbNDY3MDZdLDB8ZmVbbT4+MF0mJkZ0KGwpLDB8Y31mdW5jdGlvbiBPVyhsLGMsZil7Zm9yKElGKGx8PTAsY3w9MCwwLGZ8''@;'; put 'put ''PTApLGw9MHx3cyhsKTtsOylFbihjLDk3MzQ1KSxPVyhsLGMsZiksbD0wfEVzKGwpfWZ1bmN0aW9uIFNsKGwpe3ZhciBjO2M9MSsobHw9MCl8MDtlOmRve2lmKDk1PT0oMHxmZVtsPj4wXSkpe3N3aXRjaCgoKDI1NSYobD0oMHxmZVtjPj4wXSktMTAwPDwyND4+MjQpKT4+PjJ8bDw8NiYyNTUp''@;'; put 'put ''PDwyND4+MjQpe2Nhc2UgMDppZighKDB8WmkoYyw2NzY5NSkpKXtsPTE7YnJlYWsgZX1icmVhaztjYXNlIDI6aWYoISgwfFppKGMsNjc3MDEpKSl7bD0xO2JyZWFrIGV9YnJlYWs7Y2FzZSAxOmlmKCEoMHxaaShjLDY3NzA4KSkpe2w9MTticmVhayBlfXJldHVybiAwPT0oMHxaaShjLDY3NzIy''@;'; put 'put ''KSl8MDtjYXNlIDQ6aWYoISgwfFppKGMsNjc3MTUpKSl7bD0xO2JyZWFrIGV9bD0wPT0oMHxaaShjLDY3NzMwKSkmMTticmVhayBlO2RlZmF1bHQ6bD0wO2JyZWFrIGV9bD0wfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gaTdlKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2''@;'; put 'put ''YXIgdyxwPTAsbT0wLEE9MDt3PWxlLGxlPWxlKzE2fDAscD13O2Rve2lmKDB8bCYmMHxmZVtsPj4wXSl7aWYoIShBPTB8bUYobCkpKXthW3A+PjJdPWwsJHIoMCw2NzE4NixwKTticmVha31mb3IoRW4oYywxNTM1OTkpLGFbZj4+Ml09MSsobT0wfGFbZj4+Ml0pLEFhKGMsbSksRW4oYyw2NzIx''@;'; put 'put ''MyksbT1BKzh8MCxsPTAscD0wOyEoKDB8cCk+PSgwfGFbQT4+Ml0pKTspbD9FbihjLDk3MzQ1KTpsPTEsbzdlKCgwfGFbbT4+Ml0pKyg4MCpwfDApfDAsYyxmKSxwPXArMXwwO2FbZj4+Ml09KDB8YVtmPj4yXSktMSxFbihjLDE1MzU5OSksQWEoYywwfGFbZj4+Ml0pLEVuKGMsOTczNDApLEZy''@;'; put 'put ''ZShBKX19d2hpbGUoMCk7bGU9d31mdW5jdGlvbiBvN2UobCxjLGYpe2x8PTAsY3w9MDt2YXIgbSxBLHcsYixrLE0sRCxSLEcscSxwZSxnZSxiZSxPZSxMZSxSZSxIZSxWZSxydCxwPTAscWU9MCxXZT0wLGF0PTAsU3Q9MDtydD1sZSxsZT1sZSsyNDB8MCxWZT1ydCsyMjR8MCxIZT1ydCsyMTZ8''@;'; put 'put ''MCxSZT1ydCsyMDh8MCxMZT1ydCsyMDB8MCxPZT1ydCsxOTJ8MCxiZT1ydCsxODR8MCxnZT1ydCsxNzZ8MCxwZT1ydCsxNTJ8MCxxPXJ0KzEzNnwwLEc9cnQrMTI4fDAsUj1ydCsxMTJ8MCxEPXJ0KzEwNHwwLE09cnQrOTZ8MCxrPXJ0Kzg4fDAsYj1ydCs3MnwwLHc9cnQrNDh8MCxxZT1ydCs0''@;'; put 'put ''MHwwLEE9cnQrOHwwLG09cnQsYVsoZnw9MCk+PjJdPTErKHA9MHxhW2Y+PjJdKSxBYShjLHApLEVuKGMsOTczNzQpLEFhKGMsMHxhW2Y+PjJdKSxwPTB8YVtsPj4yXTtlOmRve3N3aXRjaCgwfHApe2Nhc2UgMTpjYXNlIDA6YVttPj4yXT0wPT0oMHxwKT82OToxMDEsT3IoYyw2NzIxNixtKSxB''@;'; put 'put ''YShjLDB8YVtmPj4yXSksU3Q9K19bbCsxNj4+M10sYXQ9K19bbCsyND4+M10sV2U9K19bbCszMj4+M10sX1tBPj4zXT0rX1tsKzg+PjNdLF9bQSs4Pj4zXT1TdCxfW0ErMTY+PjNdPWF0LF9bQSsyND4+M109V2UsT3IoYyw2NzIyOSxBKTticmVhaztjYXNlIDM6Y2FzZSAyOmFbcWU+PjJdPTI9''@;'; put 'put ''PSgwfHApPzgwOjExMixPcihjLDY3MjE2LHFlKSxBYShjLDB8YVtmPj4yXSksUlcoYyxsKzh8MCk7YnJlYWs7Y2FzZSA1OmNhc2UgNDphW3c+PjJdPTQ9PSgwfHApPzY2Ojk4LE9yKGMsNjcyMTYsdyksQWEoYywwfGFbZj4+Ml0pLFJXKGMsbCs4fDApO2JyZWFrO2Nhc2UgNjpPcihjLDY3MjY0''@;'; put 'put ''LHJ0KzU2fDApLEFhKGMsMHxhW2Y+PjJdKSxSVyhjLGwrOHwwKTticmVhaztjYXNlIDc6T3IoYyw2NzI3NixydCs2NHwwKSxBYShjLDB8YVtmPj4yXSksU3Q9K19bbCsxNj4+M10sX1tiPj4zXT0rX1tsKzg+PjNdLF9bYis4Pj4zXT1TdCxPcihjLDY3Mjg4LGIpLEFhKGMsMHxhW2Y+PjJdKSxh''@;'; put 'put ''W2s+PjJdPTA9PSgwfChxZT0wfGFbbCsyND4+Ml0pKT8xMDg6MT09KDB8cWUpPzk5OjExNCxPcihjLDY3MzEwLGspLEFhKGMsMHxhW2Y+PjJdKSxfW00+PjNdPStfW2wrMzI+PjNdLE9yKGMsNjczMjYsTSksQWEoYywwfGFbZj4+Ml0pLGFbRD4+Ml09MHxvcCgwfGFbbCs0MD4+Ml0sZiksT3Io''@;'; put 'put ''Yyw2NzM0MyxEKTticmVhaztjYXNlIDk6Y2FzZSA4OmFbUj4+Ml09OD09KDB8cCk/Njc6OTksT3IoYyw2NzIxNixSKSxBYShjLDB8YVtmPj4yXSksT3IoYyw2NzM1NyxydCsxMjB8MCksQWEoYywwfGFbZj4+Ml0pLGFbRz4+Ml09MHxvcCgwfGFbbCs4Pj4yXSxmKSxPcihjLDY3Mzc0LEcpO2Jy''@;'; put 'put ''ZWFrO2Nhc2UgMTM6Y2FzZSAxNDpzd2l0Y2goYVtxPj4yXT0xMz09KDB8cCk/Njc6OTksT3IoYyw2NzIxNixxKSxBYShjLDB8YVtmPj4yXSksMHxhW2wrOD4+Ml0pe2Nhc2UgMDpPcihjLDY3MzU3LHJ0KzE0NHwwKSxBYShjLDB8YVtmPj4yXSksYVtwZT4+Ml09MHxvcCgwfGFbbCsxNj4+Ml0s''@;'; put 'put ''ZiksT3IoYyw2NzM3NCxwZSk7YnJlYWsgZTtjYXNlIDE6T3IoYyw2NzM4OSxydCsxNjB8MCksQWEoYywwfGFbZj4+Ml0pLGE3ZShjLGwrMTZ8MCxmKTticmVhayBlO2RlZmF1bHQ6T3IoYyw2NzQwOCxydCsxNjh8MCksQWEoYywwfGFbZj4+Ml0pLGNpZShjLGwrMTZ8MCxmKTticmVhayBlfWNh''@;'; put 'put ''c2UgMTA6T3IoYyw2NzQyNyxnZSksQWEoYywwfGFbZj4+Ml0pLF9bYmU+PjNdPStfW2wrOD4+M10sT3IoYyw2NzQzOSxiZSksQWEoYywwfGFbZj4+Ml0pLGFbT2U+PjJdPTB8b3AoMHxhW2wrMTY+PjJdLGYpLE9yKGMsNjc0NTUsT2UpO2JyZWFrO2Nhc2UgMTE6T3IoYyw2NzQ2OSxMZSksQWEo''@;'; put 'put ''YywwfGFbZj4+Ml0pLGFbUmU+PjJdPTB8b3AoMHxhW2wrOD4+Ml0sZiksT3IoYyw2NzQ4MSxSZSk7YnJlYWs7Y2FzZSAxNTpPcihjLDY3NDk2LEhlKSxBYShjLDB8YVtmPj4yXSksYVtWZT4+Ml09YVtsKzg+PjJdLE9yKGMsNjc1MDgsVmUpfX13aGlsZSgwKTthW2Y+PjJdPXFlPSgwfGFbZj4+''@;'; put 'put ''Ml0pLTF8MCxBYShjLHFlKSxFbihjLDc1MzU3KSxsZT1ydH1mdW5jdGlvbiBSVyhsLGMpe3ZhciBmLHAsbSxBLHcsYixrPTA7Zm9yKGI9bGUsbGU9bGUrNDh8MCx3PWIrMzJ8MCxBPWIrMTZ8MCxtPWIrOHwwLHA9MHxhWyhjfD0wKT4+Ml0sZj0wfGFbYys0Pj4yXSxPcihsfD0wLDY3NjY5LGIp''@;'; put 'put ''LGM9MDshKCgwfGMpPj0oMHxwKSk7KSgwfGMpPjAmJk9yKGwsMTAwOTk5LG0pLGs9K19bZisoMjQqY3wwKSs4Pj4zXSxfW0E+PjNdPStfW2YrKDI0KmN8MCk+PjNdLF9bQSs4Pj4zXT1rLE9yKGwsNjc2ODEsQSksYz1jKzF8MDtPcihsLDY3NjIyLHcpLGxlPWJ9ZnVuY3Rpb24gYTdlKGwsYyxm''@;'; put 'put ''KXtjfD0wO3ZhciBwLG0sdyxBPTA7cD1sZSxsZT1sZSszMnwwLG09cCsxNnwwLHc9cCxBYShsfD0wLDB8YVsoZnw9MCk+PjJdKSxBPStfW2MrOD4+M10sX1t3Pj4zXT0rX1tjPj4zXSxfW3crOD4+M109QSxPcihsLDY3NjI1LHcpLEFhKGwsMHxhW2Y+PjJdKSxBPStfW2MrMjQ+PjNdLF9bbT4+''@;'; put 'put ''M109K19bYysxNj4+M10sX1ttKzg+PjNdPUEsT3IobCw2NzY0NyxtKSxBYShsLDB8YVtmPj4yXSksQlcobCwwfGFbYyszMj4+Ml0sMHxhW2MrMzY+PjJdLGYpLGxlPXB9ZnVuY3Rpb24gY2llKGwsYyxmKXtjfD0wO3ZhciBwLG0sYixBPTAsdz0wO3A9bGUsbGU9bGUrNDh8MCxtPXArMjR8MCxi''@;'; put 'put ''PXAsQWEobHw9MCwwfGFbKGZ8PTApPj4yXSksQT0rX1tjKzg+PjNdLHc9K19bYysxNj4+M10sX1tiPj4zXT0rX1tjPj4zXSxfW2IrOD4+M109QSxfW2IrMTY+PjNdPXcsT3IobCw2NzUyNCxiKSxBYShsLDB8YVtmPj4yXSksdz0rX1tjKzMyPj4zXSxBPStfW2MrNDA+PjNdLF9bbT4+M109K19b''@;'; put 'put ''YysyND4+M10sX1ttKzg+PjNdPXcsX1ttKzE2Pj4zXT1BLE9yKGwsNjc1NTIsbSksQWEobCwwfGFbZj4+Ml0pLEJXKGwsMHxhW2MrNDg+PjJdLDB8YVtjKzUyPj4yXSxmKSxsZT1wfWZ1bmN0aW9uIEJXKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBBLHcsYixrLG09MCxNPTAsRD0wO2Zv''@;'; put 'put ''cihrPWxlLGxlPWxlKzQ4fDAsYj1rKzMyfDAsdz1rKzE2fDAsQT1rKzh8MCxPcihsfD0wLDY3NTgwLGspLG09MDshKCgwfG0pPj0oMHxjKSk7KSgwfG0pPjAmJk9yKGwsMTAwOTk5LEEpLEQ9K2puW2YrKG08PDMpPj4yXSxNPTB8b3AoMHxhW2YrKG08PDMpKzQ+PjJdLHApLF9bdz4+M109RCxh''@;'; put 'put ''W3crOD4+Ml09TSxPcihsLDY3NTkxLHcpLG09bSsxfDA7T3IobCw2NzYyMixiKSxsZT1rfWZ1bmN0aW9uIHU3KGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MDtzd2l0Y2goMHxhWzE0NCsobHw9MCk+PjJdKXtjYXNlIDE6cD0xMCxsPTE7YnJlYWs7Y2FzZSAyOnA9MTAsbD0yO2JyZWFrO2RlZmF1''@;'; put 'put ''bHQ6cD0wLGw9MH1hW2M+PjJdPWwsX1tmPj4zXT1wfWZ1bmN0aW9uIE9GKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIEEsdyxiLG09MCxrPTAsTT0wO2ZvcihiPWxlLGxlPWxlKzE2fDAsdz1iKzh8MCxBPWIsbT0wOyEoKDB8bSk+PSgwfGYpKTspaz0rX1tjKyhtPDw0KSs4Pj4z''@;'; put 'put ''XSxhW0E+PjJdPX5+KChNPStfW2MrKG08PDQpPj4zXSkrKE0+PTA/LjU6LS41KSksYVtBKzQ+PjJdPX5+KGsrKGs+PTA/LjU6LS41KSksT3IobCw4MTA5OSxBKSxtPW0rMXwwOzB8cCYmKE09K19bYys4Pj4zXSxhW3c+PjJdPX5+KChrPStfW2M+PjNdKSsoaz49MD8uNTotLjUpKSxhW3crND4+''@;'; put 'put ''Ml09fn4oTSsoTT49MD8uNTotLjUpKSxPcihsLDgxMDk5LHcpKSxFbihsLDE1MzU5OSksbGU9Yn1mdW5jdGlvbiBOVyhsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgayxtPTAsQT0wLHc9MCxiPTAsTT0wLEQ9MCxSPTA7Zm9yKGFbKGx8PTApPj4yXT0wLGs9MHxhWzQ2NzExXSxBPTE5NTA3''@;'; put 'put ''NSxtPTAsdz0tMTs7KXtpZigoMHxtKT49KDB8aykpe009NjticmVha31pZihEPSgwfGl0WzE5MDY4MCsobTw8MSk+PjFdKS1jfDAsYj0oMHxpdFsxOTE3MDQrKG08PDEpPj4xXSktcHwwLCgwfChiPSgwfEFyKFI9KDB8aXRbMTkxMTkyKyhtPDwxKT4+MV0pLWZ8MCxSKSkrKDB8QXIoRCxEKSkr''@;'; put 'put ''KDB8QXIoYixiKSl8MCkpPCgwfEEpKXtpZighYilicmVhaztBPWIsdz1tfW09bSsxfDB9cmV0dXJuIDY9PSgwfE0pJiYoYVs0NjcxMV09aysxLDI1Nj09KDB8ayk/bT13OihpdFsxOTA2ODArKG08PDEpPj4xXT1jLGl0WzE5MTE5MisobTw8MSk+PjFdPWYsaXRbMTkxNzA0KyhtPDwxKT4+MV09''@;'; put 'put ''cCxhW2w+PjJdPTEpKSwwfG19ZnVuY3Rpb24gSlQobCxjLGYscCxtLEEsdyxiKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTAsQXw9MCx3fD0wLGJ8PTA7dmFyIFIsRyxxLHBlLGdlLGJlLEhlLGs9MCxNPTAsRD0wLE9lPTAsTGU9MCxSZT0wLFZlPTA7SGU9bGUsbGU9bGUrMTI4fDAsUmU9SGUr''@;'; put 'put ''MTIwfDAsYmU9SGUrMTEyfDAsZ2U9SGUrOTZ8MCxwZT1IZSs4MHwwLHE9SGUrNTZ8MCxMZT1IZSs0OHwwLEc9SGUrNDB8MCxPZT1IZSsyNHwwLFI9SGU7ZTpkb3tpZigwIT0oMHxmKSYwIT0oMHxwKSl7Zm9yKGs9cCsxMHwwLCgwfGFbNDY3MTRdKTwoMHxwKT8oYVs0NjcxNF09ayxEPTB8VWEo''@;'; put 'put ''MHxhWzQ2NzE1XSxrPDwzKSxhWzQ2NzE1XT1EKTpEPTB8YVs0NjcxNV0saz0wOyEoKDB8ayk+PSgwfHApKTspYVtEKyhrPDwzKT4+Ml09fn4oKFZlPStfW2YrKGs8PDQpPj4zXSkrKFZlPj0wPy41Oi0uNSkpLGFbRCsoazw8MykrND4+Ml09fn4oKFZlPStfW2YrKGs8PDQpKzg+PjNdKSsoVmU+''@;'; put 'put ''PTA/LjU6LS41KSksaz1rKzF8MDtpZigoZj0wIT0oMHxtKSkmMD09KDB8KGs9MHxhWyhNPWwrNjR8MCk+PjJdKSkpe2lmKCEoMHxmZVttPj4wXSkpYnJlYWs7c3dpdGNoKDB8Yyl7Y2FzZSAwOk9lPTB8YVtEPj4yXSxMZT0wfGFbRCsxMj4+Ml0sUmU9MHxhW0QrOD4+Ml0scD0wfGFbRCs0Pj4y''@;'; put 'put ''XSxhW1I+PjJdPW0sYVtSKzQ+PjJdPU9lLGFbUis4Pj4yXT1MZSxhW1IrMTI+PjJdPVJlLGFbUisxNj4+Ml09cCxPcihsLDY3OTU0LFIpO2JyZWFrIGU7Y2FzZSAxOlJlPTB8YVtEKzQ+PjJdLHA9KDB8YVtEKzg+PjJdKS0oTGU9MHxhW0Q+PjJdKXwwLGFbT2U+PjJdPW0sYVtPZSs0Pj4yXT1M''@;'; put 'put ''ZSxhW09lKzg+PjJdPVJlLGFbT2UrMTI+PjJdPXAsT3IobCw2Nzk3NSxPZSk7YnJlYWsgZTtjYXNlIDI6Zm9yKGFbRz4+Ml09bSxPcihsLDY3OTk1LEcpLGs9MDshKCgwfGspPj0oMHxwKSk7KVJlPTB8YVsoT2U9MHxhWzQ2NzE1XSkrKGs8PDMpKzQ+PjJdLGFbTGU+PjJdPWFbT2UrKGs8PDMp''@;'; put 'put ''Pj4yXSxhW0xlKzQ+PjJdPVJlLE9yKGwsNjgwMDMsTGUpLGs9aysxfDA7RW4obCwxNTM1OTkpO2JyZWFrIGU7ZGVmYXVsdDpQcigxMzgzOTQsNjgwMTAsNjMsNjgwMzApfX1pZihmJjE9PSgwfGspKXtpZighKDB8ZmVbbT4+MF0pKWJyZWFrO2lmKCFjKXtMZT0wfGFbRCsxMj4+Ml0sUmU9MHxh''@;'; put 'put ''W0QrOD4+Ml0scD0wfGFbRCs0Pj4yXSxhW3E+PjJdPWFbRD4+Ml0sYVtxKzQ+PjJdPUxlLGFbcSs4Pj4yXT1SZSxhW3ErMTI+PjJdPXAsYVtxKzE2Pj4yXT1tLGFbcSsyMD4+Ml09QSxPcihsLDY4MDQ3LHEpO2JyZWFrfVByKDEzODM5NCw2ODAxMCw3NSw2ODAzMCl9aWYoMj09KC0yJmt8MCkp''@;'; put 'put ''e3N3aXRjaCgwfGMpe2Nhc2UgMTpFbihsLDY4MDgwKTticmVhaztjYXNlIDA6RW4obCw2ODEwMSk7YnJlYWs7Y2FzZSAyOkVuKGwsNjgxMjApO2JyZWFrO2RlZmF1bHQ6UHIoMTM4Mzk0LDY4MDEwLDkxLDY4MDMwKX0wfGImJjB8ZmVbYj4+MF0mJihFbihsLDczNjAwKSxFbihsLDB8ZFEoYikp''@;'; put 'put ''LEVuKGwsOTg3NDQpKSxmJiYwfGZlW20+PjBdJiYoRW4obCw2ODEzOSksRW4obCwwfGRRKG0pKSxFbihsLDk4NzQ0KSksMHx3JiYwfGZlW3c+PjBdJiYoRW4obCw3NDU1OSksRW4obCwwfE0xKHcpKSxFbihsLDk4NzQ0KSksMHxBJiYwfGZlW0E+PjBdJiYoRW4obCw2ODE0NyksRW4obCwwfE0x''@;'; put 'put ''KEEpKSxFbihsLDk4NzQ0KSksRW4obCw2ODE1NiksRW4obCw2ODE2NCk7dDpkb3tzd2l0Y2goMHxjKXtjYXNlIDE6UmU9MHxhWzQrKHA9MHxhWzQ2NzE1XSk+PjJdLHA9KDB8YVtwKzg+PjJdKS0oTGU9MHxhW3A+PjJdKXwwLGFbcGU+PjJdPUxlLGFbcGUrND4+Ml09UmUsYVtwZSs4Pj4yXT1w''@;'; put 'put ''LE9yKGwsNjgxNzQscGUpO2JyZWFrO2Nhc2UgMDpMZT0wfGFbMTIrKE9lPTB8YVs0NjcxNV0pPj4yXSxSZT0wfGFbT2UrOD4+Ml0scD0wfGFbT2UrND4+Ml0sYVtnZT4+Ml09YVtPZT4+Ml0sYVtnZSs0Pj4yXT1MZSxhW2dlKzg+PjJdPVJlLGFbZ2UrMTI+PjJdPXAsT3IobCw2ODE4MyxnZSk7''@;'; put 'put ''YnJlYWs7Y2FzZSAyOmZvcihrPTB8YVs0KyhMZT0wfGFbNDY3MTVdKT4+Ml0sYVtiZT4+Ml09YVtMZT4+Ml0sYVtiZSs0Pj4yXT1rLE9yKGwsNjgxOTUsYmUpLGs9MTs7KXtpZigoMHxrKT49KDB8cCkpYnJlYWsgdDtMZT0wfGFbKE9lPTB8YVs0NjcxNV0pKyhrPDwzKSs0Pj4yXSxhW1JlPj4y''@;'; put 'put ''XT1hW09lKyhrPDwzKT4+Ml0sYVtSZSs0Pj4yXT1MZSxPcihsLDY4MjAxLFJlKSxrPWsrMXwwfX19d2hpbGUoMCk7aWYoMz09KDB8YVtNPj4yXSkpe0VuKGwsNzM0MjQpO2JyZWFrfUVuKGwsNjgyMDgpO2JyZWFrfX19d2hpbGUoMCk7bGU9SGV9ZnVuY3Rpb24gJFQobCxjLGYpe2N8PTAsZnw9''@;'; put 'put ''MDt2YXIgcD0wO3N3aXRjaCgwfGFbMTQ0KyhsfD0wKT4+Ml0pe2Nhc2UgMTpwPTEwLGw9MTticmVhaztjYXNlIDI6cD0xMCxsPTI7YnJlYWs7ZGVmYXVsdDpwPTAsbD0wfWFbYz4+Ml09bCxfW2Y+PjNdPXB9ZnVuY3Rpb24gV1cobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgQSx3''@;'; put 'put ''LGIsbT0wLGs9MCxNPTA7Zm9yKGI9bGUsbGU9bGUrMTZ8MCx3PWIrOHwwLEE9YixtPTA7ISgoMHxtKT49KDB8ZikpOylrPStfW2MrKG08PDQpKzg+PjNdLGFbQT4+Ml09fn4oKE09K19bYysobTw8NCk+PjNdKSsoTT49MD8uNTotLjUpKSxhW0ErND4+Ml09fn4oaysoaz49MD8uNTotLjUpKSxP''@;'; put 'put ''cihsLDgxMDk5LEEpLG09bSsxfDA7MHxwJiYoTT0rX1tjKzg+PjNdLGFbdz4+Ml09fn4oKGs9K19bYz4+M10pKyhrPj0wPy41Oi0uNSkpLGFbdys0Pj4yXT1+fihNKyhNPj0wPy41Oi0uNSkpLE9yKGwsODEwOTksdykpLEVuKGwsMTUzNTk5KSxsZT1ifWZ1bmN0aW9uIFlXKGwsYyxmLHApe2N8''@;'; put 'put ''PTAsZnw9MCxwfD0wO3ZhciBrLG09MCxBPTAsdz0wLGI9MCxNPTAsRD0wLFI9MDtmb3IoYVsobHw9MCk+PjJdPTAsaz0wfGFbNDY3MTddLEE9MTk1MDc1LG09MCx3PS0xOzspe2lmKCgwfG0pPj0oMHxrKSl7TT02O2JyZWFrfWlmKEQ9KDB8aXRbMTkyMjE2KyhtPDwxKT4+MV0pLWN8MCxiPSgw''@;'; put 'put ''fGl0WzE5MzI0MCsobTw8MSk+PjFdKS1wfDAsKDB8KGI9KDB8QXIoUj0oMHxpdFsxOTI3MjgrKG08PDEpPj4xXSktZnwwLFIpKSsoMHxBcihELEQpKSsoMHxBcihiLGIpKXwwKSk8KDB8QSkpe2lmKCFiKWJyZWFrO0E9Yix3PW19bT1tKzF8MH1yZXR1cm4gNj09KDB8TSkmJihhWzQ2NzE3XT1r''@;'; put 'put ''KzEsMjU2PT0oMHxrKT9tPXc6KGl0WzE5MjIxNisobTw8MSk+PjFdPWMsaXRbMTkyNzI4KyhtPDwxKT4+MV09ZixpdFsxOTMyNDArKG08PDEpPj4xXT1wLGFbbD4+Ml09MSkpLDB8bX1mdW5jdGlvbiBhcChsLGMpe2x8PTA7dmFyIHAsbSxmPTAsQT0wLHc9MDtpZihtPWxlLGxlPWxlKzMyfDAs''@;'; put 'put ''cD1tLDB8KGN8PTApKXtzd2l0Y2goMHxhWzQrKDB8YVtsKzE2Pj4yXSk+PjJdKXtjYXNlIDE6Y2FzZSAwOmY9MTExNDk0O2JyZWFrO2Nhc2UgMjpmPTExMTQ4MTticmVhaztjYXNlIDM6Zj0xMTE0NTA7YnJlYWs7ZGVmYXVsdDpmPTY4ODE4fXc9K19bYys4Pj4zXSxBPStfW2MrMTY+PjNdLF9b''@;'; put 'put ''cD4+M109K19bYz4+M10sX1twKzg+PjNdPXcsX1twKzE2Pj4zXT1BLGFbcCsyND4+Ml09ZixPcihsLDY4ODI1LHApfWxlPW19ZnVuY3Rpb24gR0EobCl7dmFyIG0sdyxiLGssYz0wLGY9MCxwPTAsQT0wO2ZvcihrPWxlLGxlPWxlKzE2fDAsYj1rKzh8MCx3PWssYz0wfGFbMTYwKyhBPTB8YVso''@;'; put 'put ''bT0xNisobHw9MCl8MCk+PjJdKT4+Ml0sWnMobCwrX1tBKzE1Mj4+M10pLEVuKGwsNjg3OTkpO2MmJihBPWMrNHwwLHA9MHxhW2M+PjJdKTspaWYoMHxaaShwLDExMTA4OCkpe2ZvcihmPXA7Yz1mKzF8MCwwfGZlW2Y+PjBdOylmPWM7ZTpmb3IoOzB8ZmVbYz4+MF07KWZvcihhW3c+PjJdPWMs''@;'; put 'put ''T3IobCw2ODgxNCx3KTs7KXtpZihmPWMrMXwwLCEoMHxmZVtjPj4wXSkpe2M9Zjtjb250aW51ZSBlfWM9Zn0wfFppKHAsMTM0MzM1KXx8KF9bMTUyKygwfGFbbT4+Ml0pPj4zXT0wKSxhW2I+PjJdPXAsT3IobCw5NjY3MCxiKSxjPUF9ZWxzZSBjPUE7bGU9a31mdW5jdGlvbiBORihsLGMsZil7''@;'; put 'put ''Y3w9MCxmfD0wO3ZhciB3LGIsayxNLEQsUixHLHA9MCxtPTAsQT0wO0c9bGUsbGU9bGUrOTZ8MCxiPUcrNDh8MCxSPUcrNDB8MCxNPUcrMzJ8MCxEPUcrMjR8MCx3PUcrMTZ8MCxtPUcrOHwwLHA9RyxrPTB8YVsxNisobHw9MCk+PjJdLEVuKGwsNzM0MjkpO2U6ZG97c3dpdGNoKDB8Yyl7Y2Fz''@;'; put 'put ''ZSAyOmFbcD4+Ml09ZixPcihsLDczNDM3LHApO2JyZWFrO2Nhc2UgMzphW20+PjJdPWYsT3IobCw3MzQ0OCxtKTticmVhaztjYXNlIDA6RW4obCwxMzU3MDkpO2JyZWFrO2RlZmF1bHQ6bT1jPWsrNTZ8MCxBPShwPWIpKzQwfDA7ZG97YVtwPj4yXT1hW20+PjJdLHA9cCs0fDAsbT1tKzR8MH13''@;'; put 'put ''aGlsZSgoMHxwKTwoMHxBKSk7aWYoR0MobCxiKSwxPT0oMHxhW2srODg+PjJdKSl7c3dpdGNoKChjPTB8ZmVbYyszPj4wXSk8PDI0Pj4yNCl7Y2FzZS0xOmNhc2UgMDpicmVhayBlfV9bdz4+M109LjAwMzkyMTU2ODYyNzQ1MDk4KisoMjU1JmMpLE9yKGwsNzM0NTksdyl9fX13aGlsZSgwKTtF''@;'; put 'put ''bihsLDczNDc4KSxtPWY9aysxNnwwLEE9KHA9YikrNDB8MDtkb3thW3A+PjJdPWFbbT4+Ml0scD1wKzR8MCxtPW0rNHwwfXdoaWxlKCgwfHApPCgwfEEpKTtzd2l0Y2goR0MobCxiKSwxIT0rX1soYz1rKzE1MnwwKT4+M10mJihFbihsLDczNDg5KSxacyhsLCtfW2M+PjNdKSksMHxhW2srMTQ0''@;'; put 'put ''Pj4yXSl7Y2FzZSAxOmFbRD4+Ml09NzM1MjksT3IobCw3MzUwNixEKTticmVhaztjYXNlIDI6YVtNPj4yXT03MzUzMyxPcihsLDczNTA2LE0pfWU6ZG97aWYoMT09KDB8YVtrKzQ4Pj4yXSkpe3N3aXRjaCgoYz0wfGZlW2YrMz4+MF0pPDwyND4+MjQpe2Nhc2UtMTpjYXNlIDA6YnJlYWsgZX1f''@;'; put 'put ''W1I+PjNdPS4wMDM5MjE1Njg2Mjc0NTA5OCorKDI1NSZjKSxPcihsLDczNTM3LFIpfX13aGlsZSgwKTtFbihsLDk4NzQ0KSxsZT1HfWZ1bmN0aW9uIEdDKGwsYyl7bHw9MCxjfD0wO3ZhciBmLHAsbT0wLEE9MDtwPWxlLGxlPWxlKzE2fDAsZj1wO2U6ZG97c3dpdGNoKDB8YVtjKzMyPj4yXSl7''@;'; put 'put ''Y2FzZSA1OkVuKGwsMHxhW2M+PjJdKTticmVhaztjYXNlIDE6aWYoMHxmZVtjKzM+PjBdKXtBPTB8WHRbYysxPj4wXSxtPTB8WHRbYysyPj4wXSxhW2Y+PjJdPVh0W2M+PjBdLGFbZis0Pj4yXT1BLGFbZis4Pj4yXT1tLE9yKGwsNzU3MTQsZik7YnJlYWsgZX1FbihsLDEzNzM3OSk7YnJlYWsg''@;'; put 'put ''ZTtkZWZhdWx0OlByKDEzODM5NCw3MzU1OCwxMTcsNzM1NzgpfX13aGlsZSgwKTtsZT1wfWZ1bmN0aW9uIHRZKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgYixrLE0sRCxSLEcscGUscD0wLG09MCxBPTAsdz0wLHE9MDtwZT1sZSxsZT1sZSsxMTJ8MCxNPXBlKzY0fDAsRz1wZSs1NnwwLGs9''@;'; put 'put ''cGUrNDh8MCxiPXBlKzQwfDAsbT1wZSszMnwwLHc9cGUsYVs0NjcyMl09MSsoUj0wfGFbNDY3MjJdKSxwPS4wMTc0NTMyOTI1MTk5NDMyOTUqKygwfGFbMTM2KyhEPTB8YVtsKzE2Pj4yXSk+PjJdKSxhW3c+PjJdPTAsYVt3KzQ+PjJdPTAsYVt3Kzg+PjJdPTAsYVt3KzEyPj4yXT0wLGFbdysx''@;'; put 'put ''Nj4+Ml09MCxhW3crMjA+PjJdPTAsYVt3KzI0Pj4yXT0wLGFbdysyOD4+Ml09MCx3RChjLHcsZixwLDApLGFbTT4+Ml09UixPcihsLDczODMxLE0pLEVuKGwsNzM4OTYpLFpzKGwsK19bdz4+M10pLEVuKGwsNzM5MDEpLFpzKGwsK19bdys4Pj4zXSksRW4obCw3MzkwOCksWnMobCwrX1t3KzE2''@;'; put 'put ''Pj4zXSksRW4obCw3MzkxNSksWnMobCwrX1t3KzI0Pj4zXSksRW4obCw3MzkyMiksKHA9K2puWyh3PUQrMTQwfDApPj4yXSk+MD8oX1ttPj4zXT1wKy0uMDAxLE9yKGwsNzM5MjcsbSkpOkVuKGwsNzM3MDMpLG09Yz1EKzU2fDAsQT0oZj1NKSs0MHwwO2Rve2FbZj4+Ml09YVttPj4yXSxmPWYr''@;'; put 'put ''NHwwLG09bSs0fDB9d2hpbGUoKDB8Zik8KDB8QSkpO0dDKGwsTSksRW4obCw3MzczOSk7ZTpkb3tpZigxPT0oMHxhW0QrODg+PjJdKSl7c3dpdGNoKChjPTB8ZmVbYyszPj4wXSk8PDI0Pj4yNCl7Y2FzZS0xOmNhc2UgMDpxPTc7YnJlYWsgZX1fW2I+PjNdPS4wMDM5MjE1Njg2Mjc0NTA5OCor''@;'; put 'put ''KDI1NSZjKSxPcihsLDk5NjEyLGIpfWVsc2UgcT03fXdoaWxlKDApOzc9PSgwfHEpJiZFbihsLDczNzU0KSxFbihsLDczNzU3KSwocD0ram5bdz4+Ml0pPjA/KF9baz4+M109cCxPcihsLDczOTI3LGspKTpFbihsLDczNzYzKSxtPWM9RCs5NnwwLEE9KGY9TSkrNDB8MDtkb3thW2Y+PjJdPWFb''@;'; put 'put ''bT4+Ml0sZj1mKzR8MCxtPW0rNHwwfXdoaWxlKCgwfGYpPCgwfEEpKTtHQyhsLE0pLEVuKGwsNzM3MzkpO2U6ZG97aWYoMT09KDB8YVtEKzEyOD4+Ml0pKXtzd2l0Y2goKGM9MHxmZVtjKzM+PjBdKTw8MjQ+PjI0KXtjYXNlLTE6Y2FzZSAwOnE9MTQ7YnJlYWsgZX1fW0c+PjNdPS4wMDM5MjE1''@;'; put 'put ''Njg2Mjc0NTA5OCorKDI1NSZjKSxPcihsLDk5NjEyLEcpfWVsc2UgcT0xNH13aGlsZSgwKTtyZXR1cm4gMTQ9PSgwfHEpJiZFbihsLDczNzU0KSxFbihsLDczOTY3KSxsZT1wZSwwfFJ9ZnVuY3Rpb24gblkobCl7bHw9MDt2YXIgZix3LGIsayxNLEQsRyxxLGM9MCxwPTAsbT0wLEE9MCxSPTA7''@;'; put 'put ''Rz1sZSxsZT1sZSs2NHwwLGI9RysxNnwwLEQ9Rys4fDAsdz1HLGFbNDY3MjFdPTErKE09MHxhWzQ2NzIxXSksZj1xPS4wMTc0NTMyOTI1MTk5NDMyOTUqKygwfGFbMTM2KyhrPTB8YVtsKzE2Pj4yXSk+PjJdKSwwPT1xPyhwPTUwLGM9NTApOihwPX5+KDUwKigraGEoK2YpKzEpKSxjPX5+KDUw''@;'; put 'put ''KigxLStEYSgrZikpKSksYVtiPj4yXT1NLGFbYis0Pj4yXT1wLGFbYis4Pj4yXT1jLE9yKGwsNzM2MTksYiksRW4obCw3MzcwMyksbT1jPWsrNTZ8MCxBPShwPWIpKzQwfDA7ZG97YVtwPj4yXT1hW20+PjJdLHA9cCs0fDAsbT1tKzR8MH13aGlsZSgoMHxwKTwoMHxBKSk7R0MobCxiKSxFbihs''@;'; put 'put ''LDczNzM5KTtlOmRve2lmKDE9PSgwfGFbays4OD4+Ml0pKXtzd2l0Y2goKGM9MHxmZVtjKzM+PjBdKTw8MjQ+PjI0KXtjYXNlLTE6Y2FzZSAwOlI9NjticmVhayBlfV9bdz4+M109LjAwMzkyMTU2ODYyNzQ1MDk4KisoMjU1JmMpLE9yKGwsOTk2MTIsdyl9ZWxzZSBSPTZ9d2hpbGUoMCk7Nj09''@;'; put 'put ''KDB8UikmJkVuKGwsNzM3NTQpLEVuKGwsNzM3NTcpLEVuKGwsNzM3NjMpLG09Yz1rKzk2fDAsQT0ocD1iKSs0MHwwO2Rve2FbcD4+Ml09YVttPj4yXSxwPXArNHwwLG09bSs0fDB9d2hpbGUoKDB8cCk8KDB8QSkpO0dDKGwsYiksRW4obCw3MzczOSk7ZTpkb3tpZigxPT0oMHxhW2srMTI4Pj4y''@;'; put 'put ''XSkpe3N3aXRjaCgoYz0wfGZlW2MrMz4+MF0pPDwyND4+MjQpe2Nhc2UtMTpjYXNlIDA6Uj0xMDticmVhayBlfV9bRD4+M109LjAwMzkyMTU2ODYyNzQ1MDk4KisoMjU1JmMpLE9yKGwsOTk2MTIsRCl9ZWxzZSBSPTEwfXdoaWxlKDApO3JldHVybiAxMD09KDB8UikmJkVuKGwsNzM3NTQpLEVu''@;'; put 'put ''KGwsNzM3OTkpLGxlPUcsMHxNfWZ1bmN0aW9uIGM3KGwsYyxmLHAsbSl7dmFyIEEsdyxiO2N8PTAsZnw9MCxwfD0wLG18PTAsYj1sZSxsZT1sZSsxNnwwLHc9Yis4fDAsQT1iLEVuKGx8PTAsNzQ1ODcpLEVuKGwsMHxNMShjKSksMHxmJiYoYVtBPj4yXT0wfE0xKGYpLE9yKGwsNzQ1OTUsQSkp''@;'; put 'put ''LGFbdz4+Ml09cCxPcihsLDc0NTk5LHcpLDB8KGM9MHxMaShtLDc0NjExKSkmJjB8ZmVbYz4+MF0mJihFbihsLDEwMjYwNCksRW4obCwwfE0xKGMpKSksRW4obCw5ODc0NCksbGU9Yn1mdW5jdGlvbiBxVChsKXtyZXR1cm4gMHxsfWZ1bmN0aW9uIGVJKGwpe0VuKGx8PTAsMHxmZVtsKzE0ND4+''@;'; put 'put ''MF0/MHxhW2wrMTQ4Pj4yXTo3NTI2Myl9ZnVuY3Rpb24gV0EobCxjKXtsfD0wLGN8PTA7dmFyIGYscCxtPTAsQT0wO3A9bGUsbGU9bGUrMTZ8MCxmPXA7ZTpkb3tzd2l0Y2goMHxhW2MrMzI+PjJdKXtjYXNlIDU6RW4obCwwfGFbYz4+Ml0pO2JyZWFrO2Nhc2UgMTppZigwfGZlW2MrMz4+MF0p''@;'; put 'put ''e0E9MHxYdFtjKzE+PjBdLG09MHxYdFtjKzI+PjBdLGFbZj4+Ml09WHRbYz4+MF0sYVtmKzQ+PjJdPUEsYVtmKzg+PjJdPW0sT3IobCw3NTcxNCxmKTticmVhayBlfUVuKGwsOTczMDkpO2JyZWFrIGU7ZGVmYXVsdDpQcigxMzgzOTQsNzUxODEsNDksNzUyNDUpfX13aGlsZSgwKTtsZT1wfWZ1''@;'; put 'put ''bmN0aW9uIHRJKGwpe3ZhciBBLHcsYz0wLGY9MCxwPTAsbT0wO3N3aXRjaCh3PWxlLGxlPWxlKzE2fDAsQT13LDB8YVsxMisobT0wfGFbMTYrKGx8PTApPj4yXSk+PjJdKXtjYXNlIDg6Yz0xLGY9MTExNDgxLHA9bSs4fDA7YnJlYWs7Y2FzZSAxMDpjPTAsZj0xMTE0ODEscD1tKzh8MDticmVh''@;'; put 'put ''aztjYXNlIDM6Y2FzZSAyOmNhc2UgOTpjPTEsZj0xMTE0NTAscD1tKzh8MDticmVhaztjYXNlIDc6Y2FzZSA2OmNhc2UgMTE6Yz0wLGY9MTExNDUwLHA9bSs4fDA7YnJlYWs7Y2FzZSAwOmNhc2UgMTpjPTEsZj0xMTE0OTQscD1tKzh8MDticmVhaztjYXNlIDQ6Yz0wLGY9NzUyMTcscD1tKzh8''@;'; put 'put ''MDticmVhaztjYXNlIDU6Yz0wLGY9MTExNDk0LHA9bSs4fDA7YnJlYWs7ZGVmYXVsdDpQcigxMzgzOTQsNzUxODEsMTA2LDc1MjAwKX1tPTB8YVs4KygwfGFbcD4+Ml0pPj4yXSxhW0E+PjJdPWMsYVtBKzQ+PjJdPWYsYVtBKzg+PjJdPW0sT3IobCw3NTIyOSxBKSxsZT13fWZ1bmN0aW9uIG5p''@;'; put 'put ''KGwpe2x8PTA7dmFyIHBlLGdlLE9lLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxiZT0wO09lPWxlLGxlPWxlKzE2fDAsZj1PZSwoYz0wfGFbNDY3MjRdKXx8KGFbNDY3MjVdPTY0LGM9MHxRbig2NCksYVs0NjcyNF09YyksZ2U9ZisxNXwwLHBl''@;'; put 'put ''PWYrMTR8MCxtPTAscT0wLFI9MCxmPTAscD0wO2U6Zm9yKDs7KXtEPTAhPSgwfFIpLGs9bSxHPWwsYj1mO3Q6Zm9yKDs7KXtpZighRyl7YmU9MzI7YnJlYWsgZX1pZighKChmPTB8ZmVbRz4+MF0pPDwyND4+MjQpKXtiZT0zMjticmVhayBlfXN3aXRjaCgoMHxxKT4oKGw9MHxhWzQ2NzI1XSkt''@;'; put 'put ''OHwwKSYmKGFbNDY3MjVdPWM9bDw8MSxjPTB8VjAoMHxhWzQ2NzI0XSxjKSxhWzQ2NzI0XT1jLGM9YytxfDAsZj0wfGZlW0c+PjBdKSxmPDwyND4+MjQpe2Nhc2UgNjA6Zj00LGw9MTAyMTUzLGJlPTI2O2JyZWFrIHQ7Y2FzZSA2MjpmPTQsbD0xMDIxMzYsYmU9Mjc7YnJlYWsgdDtjYXNlIDM4''@;'; put 'put ''OmJlPTEwO2JyZWFrIHQ7Y2FzZSA0NTpmPTUsbD0xMDIxNDcsdz1iO2JyZWFrIHR9aWYoRCZmPDwyND4+MjQ9PTMyKXtiZT0xMjticmVha31zd2l0Y2goZjw8MjQ+PjI0KXtjYXNlIDM0OmY9NixsPTEwMjExNixiZT0yNjticmVhayB0O2Nhc2UgMzk6Zj01LGw9MTAyMTQxLGJlPTI3O2JyZWFr''@;'; put 'put ''IHR9aWYoIShmPDwyND4+MjQ8MCkpe2Y9MSxsPUcsYmU9MjY7YnJlYWt9Zm9yKHc9MTI3LGw9MDshKChtPTI1NSZ3KT4+PjA+PShBPTI1NSZmKT4+PjApOylmPXcmQSYyNTUsdz1tPj4+MSxsPWwrMXwwO2lmKCgwfGwpPD0xKXtpZihtPTB8emwoMHwobT0wfFpvKDB8YiwwfHAsNikpLDB8RG4s''@;'; put 'put ''MjU1JmZ8MCwwKSxwPURuLE09aystMXwwLCEoKDB8ayk+MSkpe2JlPTIxO2JyZWFrfWw9TSxmPW19ZWxzZSBsPWwrLTF8MCxmJj0yNTUscD0wO2s9bCxHPUcrMXwwLGI9Zn1pZigxMD09KDB8YmUpKWJlPTAsZj0obD0wPT0oMHxUbChHKSkpPzU6MSxsPWw/MTAyMTMwOkcsdz1iO2Vsc2UgaWYo''@;'; put 'put ''MTI9PSgwfGJlKSliZT0wLGY9KGw9MzI9PSgwfGZlW1I+PjBdKSk/NjoxLGw9bD8xMDIxMjM6Ryx3PWI7ZWxzZSBpZigyMT09KDB8YmUpKXtmb3IoYmU9MCxmZVtnZT4+MF09NTksZj0zLEE9cGUsdz1tLGI9cDs7KXtpZihsPTB8aVMoMHx3LDB8YiwxMCwwKSxtPUErLTF8MCxmZVtBPj4wXT00''@;'; put 'put ''OHxsLGw9dyx3PTB8b3coMHx3LDB8YiwxMCwwKSxwPWIsYj1EbixSPWYsZj1mKzF8MCwoMHxSKT4xMSl7YmU9MjM7YnJlYWsgZX1pZighKHA+Pj4wPjB8MD09KDB8cCkmbD4+PjA+OSkpYnJlYWs7QT1tfWw9QSstMnwwLGZlW20+PjBdPTM1LGZlW2w+PjBdPTM4LGs9TSxwPWJ9ZWxzZSgyNj09''@;'; put 'put ''KDB8YmUpfHwyNz09KDB8YmUpKSYmKGJlPTAsdz1iKTtmb3IoQT1jK2Z8MCxtPWY7bTspZmVbYz4+MF09MHxmZVtsPj4wXSxtPW0rLTF8MCxsPWwrMXwwLGM9YysxfDA7bT1rLGw9RysxfDAscT1mK3F8MCxSPUcsYz1BLGY9d31pZigyMz09KDB8YmUpKUN1KDc1NDY0LDQ2LDEsMHxhWzE1NzEy''@;'; put 'put ''XSksWHUoMSk7ZWxzZSBpZigzMj09KDB8YmUpKXJldHVybiBmZVtjPj4wXT0wLGxlPU9lLDB8YVs0NjcyNF07cmV0dXJuIDB9ZnVuY3Rpb24gVGwobCl7dmFyIGM9MCxmPTA7Yz0wfGZlWyhmPTErKGx8PTApfDApPj4wXTtlOmRve2lmKGM8PDI0Pj4yND09MzUpe3N3aXRjaCgoYz0wfGZlWyhm''@;'; put 'put ''PWwrMnwwKT4+MF0pPDwyND4+MjQpe2Nhc2UgODg6Y2FzZSAxMjA6YnJlYWs7ZGVmYXVsdDpmb3IobD1mOzspe2lmKGY9bCsxfDAsKGMrLTQ4JjI1NSk+PTEwKWJyZWFrIGU7bD1mLGM9MHxmZVtmPj4wXX19Zm9yKGY9bCszfDA7Oyl7aWYoKChjPTB8ZmVbZj4+MF0pLTQ4JjI1NSk+PTEwKXN3''@;'; put 'put ''aXRjaChjPDwyND4+MjQpe2Nhc2UgNjU6Y2FzZSA2NjpjYXNlIDY3OmNhc2UgNjg6Y2FzZSA2OTpjYXNlIDcwOmNhc2UgOTc6Y2FzZSA5ODpjYXNlIDk5OmNhc2UgMTAwOmNhc2UgMTAxOmNhc2UgMTAyOmJyZWFrO2RlZmF1bHQ6YnJlYWsgZX1mPWYrMXwwfX1lbHNlIGZvcig7Oyl7aWYobD1m''@;'; put 'put ''KzF8MCwoKC0zMyZjKS02NSYyNTUpPj0yNilicmVhayBlO2Y9bCxjPTB8ZmVbbD4+MF19fXdoaWxlKDApO3JldHVybiBjPDwyND4+MjQ9PTU5fDB9ZnVuY3Rpb24gbkkobCl7dmFyIGMsZixBLHcsYixrLHA9MCxtPTA7az1sZSxsZT1sZSs0OHwwLGY9ays4fDAsYj1rLHc9MHxhWzE2KyhsfD0w''@;'; put 'put ''KT4+Ml0sRW4obCw3NTYzOSksbT13KzE2fDAsQT0ocD1mKSs0MHwwO2Rve2FbcD4+Ml09YVttPj4yXSxwPXArNHwwLG09bSs0fDB9d2hpbGUoKDB8cCk8KDB8QSkpO3N3aXRjaChySShsLGYpLDEhPShjPStfW3crMTUyPj4zXSkmJihfW2I+PjNdPWMsT3IobCw3NTY1NyxiKSksMHxhW3crMTQ0''@;'; put 'put ''Pj4yXSl7Y2FzZSAxOkVuKGwsNzU2NzQpO2JyZWFrO2Nhc2UgMjpFbihsLDc1NjkyKX1FbihsLDc1NzA5KSxsZT1rfWZ1bmN0aW9uIHJJKGwsYyl7bHw9MCxjfD0wO3ZhciBmLHAsbT0wLEE9MDtwPWxlLGxlPWxlKzE2fDAsZj1wO2U6ZG97c3dpdGNoKDB8YVtjKzMyPj4yXSl7Y2FzZSA1OkVu''@;'; put 'put ''KGwsMHxhW2M+PjJdKTticmVhaztjYXNlIDE6aWYoMHxmZVtjKzM+PjBdKXtBPTB8WHRbYysxPj4wXSxtPTB8WHRbYysyPj4wXSxhW2Y+PjJdPVh0W2M+PjBdLGFbZis0Pj4yXT1BLGFbZis4Pj4yXT1tLE9yKGwsNzU3MTQsZik7YnJlYWsgZX1FbihsLDEzNTcwOSk7YnJlYWsgZTtkZWZhdWx0''@;'; put 'put ''OlByKDEzODM5NCw3NTcyOCw5NCw3NTc0OCl9fXdoaWxlKDApO2xlPXB9ZnVuY3Rpb24gaVkobCxjKXtsfD0wO3ZhciBtLEEsZj0wLHA9MDtpZihBPWxlLGxlPWxlKzQ4fDAsbT1BLGN8PTApe2Y9MHxhW2wrMTY+PjJdLEVuKGwsNzU4MzcpLGY9Zis1NnwwLHA9KGM9bSkrNDB8MDtkb3thW2M+''@;'; put 'put ''PjJdPWFbZj4+Ml0sYz1jKzR8MCxmPWYrNHwwfXdoaWxlKCgwfGMpPCgwfHApKTtySShsLG0pLEVuKGwsNzU4NjQpfWVsc2UgRW4obCw3NTg2Nyk7bGU9QX1mdW5jdGlvbiBFYShsLGMsZil7dmFyIHAsbSxBLHcsYjtsfD0wLGN8PTAsYj1sZSxsZT1sZSsxMDU2fDAsdz1iLHA9YisyNHwwLGFb''@;'; put 'put ''KG09Yis4fDApPj4yXT1mfD0wLEE9MHxBTChwLDEwMjQsYyxtKTtkb3tpZigoMHxBKT49MCl7aWYoKDB8QSk+MTAyMyl7bD0wfEYwKEErMXwwKSxhW20+PjJdPWYsRGoobCxjLG0pO2JyZWFrfWw9MHxyYShwKTticmVha31sPTB8YVsxNisoMHxhW2wrMTI+PjJdKT4+Ml0sYVt3Pj4yXT0wfCRr''@;'; put 'put ''KDB8YVs0NzY0M10pLEdzWzYzJmxdKDc4Njg3LHcpLGw9MHxyYSgxOTUwNTkpfXdoaWxlKDApO3JldHVybiBsZT1iLDB8bH1mdW5jdGlvbiBZQShsLGMsZil7bHw9MCxmPStmO3ZhciBtLEEsdyxiLGssRCxHLHA9MCxNPTAsUj0wLHE9MCxwZT0wO0c9bGUsbGU9bGUrMTEyfDAsRD1HKzEwNHww''@;'; put 'put ''LHc9Rys5NnwwLEE9Rys2NHwwLE09Rys0OHwwLFI9RyszMnwwLGs9RysxNnwwLGI9RyxtPTB8YVszMisoY3w9MCk+PjJdO2U6ZG97c3dpdGNoKDB8bSl7Y2FzZSA1OmlmKCEoMHxaaShwPTB8YVtjPj4yXSwxMzYzMDIpKSl7YVtiPj4yXT03ODUyNCxfW2IrOD4+M109ZixwPTB8RWEobCw3ODUw''@;'; put 'put ''NyxiKTticmVhayBlfWlmKCEoMHxaaShwLDEzMzQzMikpKXthW2s+PjJdPTc4NTI4LF9bays4Pj4zXT1mLHA9MHxFYShsLDc4NTA3LGspO2JyZWFrIGV9aWYoMHxaaShwLDEzMTQzMSkpe2FbTT4+Ml09cCxfW00rOD4+M109ZixwPTB8RWEobCw3ODUwNyxNKTticmVhayBlfWFbUj4+Ml09Nzg1''@;'; put 'put ''MzQsX1tSKzg+PjNdPWYscD0wfEVhKGwsNzg1MDcsUik7YnJlYWsgZTtjYXNlIDE6cGU9LjAwMzkwNjI1KisoMHxYdFtjKzE+PjBdKSxxPS4wMDM5MDYyNSorKDB8WHRbYysyPj4wXSksX1tBPj4zXT0uMDAzOTA2MjUqKygwfFh0W2M+PjBdKSxfW0ErOD4+M109cGUsX1tBKzE2Pj4zXT1xLF9b''@;'; put 'put ''QSsyND4+M109ZixwPTB8RWEobCw3ODUzOSxBKTticmVhaztkZWZhdWx0OlI9MHxhWzE1NzEyXSxNPTB8YVtjPj4yXSxhW3c+PjJdPW0sYVt3KzQ+PjJdPU0sVDAoUiw3ODU3OCx3KSxQcigxMzgzOTQsNzg2MjgsNDM2LDc4NjQ4KX19d2hpbGUoMCk7cmV0dXJuIGFbRD4+Ml09cCxSPTB8RWEo''@;'; put 'put ''bCw3ODY2NSxEKSxGdChwKSxsZT1HLDB8Un1mdW5jdGlvbiBWRihsLGMsZil7Y3w9MCxmfD0wO3ZhciBwPTA7c3dpdGNoKDB8YVsxNDQrKGx8PTApPj4yXSl7Y2FzZSAxOnA9MTAsbD0xO2JyZWFrO2Nhc2UgMjpwPTEwLGw9MjticmVhaztkZWZhdWx0OnA9MCxsPTB9YVtjPj4yXT1sLF9bZj4+''@;'; put 'put ''M109cH1mdW5jdGlvbiB1WShsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBBLHcsYixtPTAsaz0wLE09MDtmb3IoYj1sZSxsZT1sZSsxNnwwLHc9Yis4fDAsQT1iLG09MDshKCgwfG0pPj0oMHxmKSk7KWs9K19bYysobTw8NCkrOD4+M10sYVtBPj4yXT1+figoTT0rX1tjKyhtPDw0''@;'; put 'put ''KT4+M10pKyhNPj0wPy41Oi0uNSkpLGFbQSs0Pj4yXT1+fihrKyhrPj0wPy41Oi0uNSkpLE9yKGwsODEwOTksQSksbT1tKzF8MDswfHAmJihNPStfW2MrOD4+M10sYVt3Pj4yXT1+figoaz0rX1tjPj4zXSkrKGs+PTA/LjU6LS41KSksYVt3KzQ+PjJdPX5+KE0rKE0+PTA/LjU6LS41KSksT3Io''@;'; put 'put ''bCw4MTA5OSx3KSksRW4obCwxNTM1OTkpLGxlPWJ9ZnVuY3Rpb24gSmllKGwpe2x8PTA7dmFyIHAsQSxjPTAsZj0wO0E9bGUsbGU9bGUrMTZ8MCxwPUE7ZTpmb3IoOzspe2ZvcihjPTE1ODI4O2Y9MHxhW2MrND4+Ml07KXtpZighKDB8WmkoZixsKSkpYnJlYWsgZTtjPWMrOHwwfWlmKGFbcD4+''@;'; put 'put ''Ml09ODEyNTUsYVtwKzQ+PjJdPWwsJHIoMSw4MTIyOSxwKSwhKGM9MHxNJChsLDQ1KSkpe2M9ODEyNzI7YnJlYWt9ZmVbYz4+MF09MH1yZXR1cm4gbGU9QSwwfGN9ZnVuY3Rpb24gVUEoKXt2YXIgbCxjO2w9bGUsbGU9bGUrMTZ8MCxhWyhjPWwpPj4yXT04MTI1NSxhW2MrND4+Ml09OTEyNjks''@;'; put 'put ''JHIoMCw4MzYzNCxjKSxsZT1sfWZ1bmN0aW9uIGZZKGwpe3ZhciBjPTAsZj0wO2ZvcihjPTB8RHQobHw9MCk7YzspcnZlKGMpLGM9MHx6dChsLGMpO2ZvcihmPTB8RHQobCk7Zjspe2ZvcihjPTB8dzAobCxmKTtjOyloWShjKSxjPTB8UzAobCxjKTtmPTB8enQobCxmKX19ZnVuY3Rpb24gcnZl''@;'; put 'put ''KGwpe3ZhciBjPTAsZj0wO2gwKGx8PTAsMTM3NDQ3LDMwNCwxKSxnRChsKSxUeShsLDEmYVsxMTYrKDB8YVsxNisoMHxjcihsKSk+PjJdKT4+Ml0pLGFbMTc2KygwfGFbKGw9bCsxNnwwKT4+Ml0pPj4yXT0wLGM9MHx2cigyMCksYVsxNzIrKGY9MHxhW2w+PjJdKT4+Ml09YyxhW2YrMTg0Pj4y''@;'; put 'put ''XT0wLGY9MHx2cigyMCksYVsxODArKGM9MHxhW2w+PjJdKT4+Ml09ZixhW2MrMjAwPj4yXT0wLGM9MHx2cigxMiksYVsxOTYrKGY9MHxhW2w+PjJdKT4+Ml09YyxhW2YrMTkyPj4yXT0wLGY9MHx2cigxMiksYVsxODgrKGM9MHxhW2w+PjJdKT4+Ml09ZixhW2MrMjA4Pj4yXT0wLGM9MHx2cigx''@;'; put 'put ''MiksYVsyMDQrKGw9MHxhW2w+PjJdKT4+Ml09YyxhW2wrMjE2Pj4yXT0xfWZ1bmN0aW9uIGhZKGwpe3ZhciBjLGYscCxtPTAsQT0wO2gwKGx8PTAsMTM3NDYwLDE3NiwxKSxMNyhsKSxtPTB8ZXMobCwwfGFbNDcxNzRdLDEsMCksYVsxNTYrKDB8YVsocD1sKzE2fDApPj4yXSk+PjJdPW0sbT0w''@;'; put 'put ''fHYyKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOmwrNDh8MCkrNDA+PjJdLDB8YVs0NzE2OF0sMTk1MDU5KSxBPTB8djIoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6bCstNDh8MCkrNDA+PjJdLDB8YVs0NzE2OF0sMTk1MDU5KSxpdFsoZj0xNTQrKGM9MHxhW3A+PjJdKXwwKT4+MV09MSxpdFtj''@;'; put 'put ''KzE2OD4+MV09MSwoMHxtKT09KDB8QSkmMCE9KDB8ZmVbbT4+MF0pJiYoaXRbZj4+MV09MWUzLGFbKEE9YysxNTZ8MCk+PjJdPTEwMCooMHxhW0E+PjJdKSksMHxTSChsKSYmKGl0WzE1NCsoQT0wfGFbcD4+Ml0pPj4xXT0wLGFbQSsxNTY+PjJdPTApLEE9MjU1JigwfGVzKGwsMHxhWzQ3MTg3''@;'; put 'put ''XSwwLDApKSxmZVsxNTIrKDB8YVtwPj4yXSk+PjBdPUEsQT02NTUzNSYoMHxlcyhsLDB8YVs0NzE3NV0sMSwwKSksaXRbMTcwKygwfGFbcD4+Ml0pPj4xXT1BfWZ1bmN0aW9uIEg1KGwpe3ZhciBjPTAsZj0wO2ZvcihmdW5jdGlvbiBxaWUobCl7bHw9MDtmb3IodmFyIGM9MCxmPTAscD0wLG09''@;'; put 'put ''MDtsOyltPTB8YVsxNjQrKDB8YVsocD1sKzE2fDApPj4yXSk+PjJdLE8yKGwpLDE9PSgwfGZlWzE1NisoYz0wfGFbcD4+Ml0pPj4wXSk/KChmPTB8YVtjKzE4MD4+Ml0pJiYoRnQoZiksYz0wfGFbcD4+Ml0pLChmPTB8YVtjKzE3Mj4+Ml0pJiYoRnQoZiksYz0wfGFbcD4+Ml0pLEZ0KGMpLEZ0''@;'; put 'put ''KGwpLGw9bSk6bD1tfSgwfGFbMTkyKygwfGFbMTYrKGx8PTApPj4yXSk+PjJdKSxmPTB8RHQobCk7Zjspe2ZvcihjPTB8dzAobCxmKTtjOylhZyhjKSxjPTB8UzAobCxjKTtkWShmKSxmPTB8enQobCxmKX1ONShsKX1mdW5jdGlvbiBkWShsKXt2YXIgcCxjPTAsZj0wOyhmPTB8YVsxNzIrKGM9''@;'; put 'put ''MHxhWyhwPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSkmJihGdChmKSxjPTB8YVtwPj4yXSksKGY9MHxhW2MrMTgwPj4yXSkmJihGdChmKSxjPTB8YVtwPj4yXSksKGY9MHxhW2MrMTg4Pj4yXSkmJihGdChmKSxjPTB8YVtwPj4yXSksKGY9MHxhW2MrMTk2Pj4yXSkmJihGdChmKSxjPTB8YVtwPj4y''@;'; put 'put ''XSksKGY9MHxhW2MrMjA0Pj4yXSkmJihGdChmKSxjPTB8YVtwPj4yXSksSWMoMHxhW2MrMTA0Pj4yXSksSWMoMHxhWzEwOCsoMHxhW3A+PjJdKT4+Ml0pLDB8KGM9MHxhWzgrKDB8YVtwPj4yXSk+PjJdKSYmQ29bMTI3JmFbNCsoMHxhW2MrND4+Ml0pPj4yXV0obCksSGkobCwxMzc0NDcpfWZ1''@;'; put 'put ''bmN0aW9uIE41KGwpe3ZhciBjPTAsZj0wLHA9MDtmb3IoYz0wfHdzKGx8PTApO2M7KU41KGMpLGM9MHxFcyhjKTtpZigwfGgwKGwsMTM3NDgzLDAsMSkpeyhmPTB8YVsxODQrKGM9MHxhWyhwPWwrMTZ8MCk+PjJdKT4+Ml0pJiYoRnQoZiksYz0wfGFbcD4+Ml0pLChmPTB8YVtjKzI2OD4+Ml0p''@;'; put 'put ''JiYoRnQoZiksYz0wfGFbcD4+Ml0pLChmPTB8YVtjKzIxNj4+Ml0pJiYoRnQoZiksYz0wfGFbcD4+Ml0pO2Rve2lmKDB8YVtjKzE5Nj4+Ml0pe2ZvcihmPTB8aXRbYysyMzY+PjFdOyEoKDB8Zik+KDB8aXRbYysyMzg+PjFdKSk7KUZ0KDB8YVsoMHxhW2MrMTk2Pj4yXSkrKGY8PDYpKzEyPj4y''@;'; put 'put ''XSksZj1mKzF8MCxjPTB8YVtwPj4yXTtpZihmPTB8YVtjKzE5Nj4+Ml0sLTE9PSgwfGl0W2MrMjM2Pj4xXSkpe0Z0KGYrLTY0fDApO2JyZWFrfUZ0KGYpO2JyZWFrfX13aGlsZSgwKTsoMHxkaShsKSkhPSgwfGwpJiYoSWMoMHxhWzEyKygwfGFbcD4+Ml0pPj4yXSksSGkobCwxMzc0ODMpKX19''@;'; put 'put ''ZnVuY3Rpb24gTzIobCl7dmFyIHAsYz0wLGY9MDtmb3IoYz0wfGFbMTc2KyhmPTB8YVsocD0xNisobHw9MCl8MCk+PjJdKT4+Ml07bD1jKy0xfDAsISgoMHxjKTw9MCk7KVkzKGM9MHxhWygwfGFbZisxNzI+PjJdKSsobDw8Mik+PjJdKSxGdCgwfGFbYysxNj4+Ml0pLEZ0KGMpLGM9bCxmPTB8''@;'; put 'put ''YVtwPj4yXTtmb3IoYz0wfGFbZisxODQ+PjJdO2w9YystMXwwLCEoKDB8Yyk8PTApOylZMyhjPTB8YVsoMHxhWzE4MCsoMHxhW3A+PjJdKT4+Ml0pKyhsPDwyKT4+Ml0pLEZ0KDB8YVtjKzE2Pj4yXSksRnQoYyksYz1sfWZ1bmN0aW9uIGg3KGwpe3ZhciBwLG0sQSxiLGssTSxjPTAsZj0wLHc9''@;'; put 'put ''MCxEPTA7Zm9yKE09bGUsbGU9bGUrNDh8MCxrPU0rNDB8MCxmPU0sdz0wfGVzKGx8PTAsMHxzaShsLDAsODUxMDIsMCksLTEsMSkscjQobCwxMCksYz0wfGZ1bmN0aW9uIGtIKGwsYyl7bHw9MCxjfD0wO3ZhciBmLHAsbSxBO3JldHVybiBBPWxlLGxlPWxlKzMyfDAsbT1BKzE2fDAscD1BKzh8''@;'; put 'put ''MCxhWyhmPUErMjB8MCk+PjJdPTUsMHwobD0wfExpKGwsOTk2MDUpKSYmKGFbcD4+Ml09QSxhW3ArND4+Ml09ZiwoMHxpbChsLDg3NDk3LHApKT49MSkmJiRyKDAsODc1MDQsbSksYVtjKzI0Pj4yXT0wLGFbYyszMj4+Ml09MCxsZT1BLDB9KGwsZiksbVkobCxsKSxmWShsKSxwPTE9PSgwfHcp''@;'; put 'put ''LG09ZiszMnwwLEE9Mj09KDB8dyksdz0zPT0oMHx3KSxiPWYrMjh8MCxmPWYrMjR8MDs7KXtpZihlVShsLGMpLHApe2M9MzticmVha31pZigwfGFbbT4+Ml0mJigkcigwLDg1MTA4LGspLGFbZj4+Ml09MCxjPTApLHFBKGwsMCE9KDB8YykmMSksQSl7Yz03O2JyZWFrfWlmKGtJKGwsYyksdyl7''@;'; put 'put ''Yz05O2JyZWFrfWlmKGFbYj4+Ml09RD0oMHxhW2I+PjJdKS0xfDAsISgwIT0oMHxEKSYwIT0oMHxhW2Y+PjJdKSkpe2M9MTE7YnJlYWt9fTM9PSgwfGMpP1czKGwsMSk6Nz09KDB8Yyl8fDk9PSgwfGMpP1czKGwsMik6MTE9PSgwfGMpJiYoMTYmaXRbMTM2KygwfGFbbCsxNj4+Ml0pPj4xXSYm''@;'; put 'put ''ZnVuY3Rpb24gVjUobCl7dmFyIGYsYz0wLHA9MDtpZigwfChmPTB8cHMobHw9MCw4NjY3NSwwKSkpe2ZvcihjPTB8RHQoZik7YzspcD0wfHp0KGYsYyksZkkobCxjKSxqNShsLGMpLGRZKGMpLHFyKGwsYyksYz1wO3I3KGwsZil9fShsKSx3SChsKSxmdW5jdGlvbiBvMGUobCl7WjUobHw9MCwx''@;'; put 'put ''KX0obCksKDB8dDEoMHxMaShsLDg1MTk5KSkpPDwyND4+MjQmJmZ1bmN0aW9uIHhVKGwpe3ZhciBwLGM9MCxmPTA7Zm9yKHA9MHx5SihsfD0wKSxmPTB8RHQobCk7Zjspe2ZvcihjPTB8dzAobCxmKTtjOylUVShjLHApLGM9MHxTMChsLGMpO2Y9MHx6dChsLGYpfU5sKHApfShsKSksbGU9TX1m''@;'; put 'put ''dW5jdGlvbiBuMGUobCxjKXt2YXIgZixwO2N8PTAsaDAobHw9MCwxMzc0ODMsMjgwLDEpLGY9MHx2cig5NiksYVs4KyhsPTB8YVtsKzE2Pj4yXSk+PjJdPWYsX1tmPj4zXT0rX1socD0wfGFbOCsoYz0wfGFbYysxNj4+Ml0pPj4yXSk+PjNdLF9bZisyND4+M109K19bcCsyND4+M10sYVtsKzE0''@;'; put 'put ''ND4+Ml09YVtjKzE0ND4+Ml0sZmVbbCsxMTU+PjBdPTB8ZmVbYysxMTU+PjBdLGFbbCsxMTY+PjJdPWFbYysxMTY+PjJdLGFbbCsyNDg+PjJdPWFbYysyNDg+PjJdLGFbbCsyNTI+PjJdPWFbYysyNTI+PjJdLGFbbCsyNDQ+PjJdPWFbYysyNDQ+PjJdfWZ1bmN0aW9uIHIwZShsKXt2YXIgYz0w''@;'; put 'put ''LGY9MCxwPTA7Zm9yKGM9MHx2cigoMHxHbyhsfD0wKSk8PDQpLGY9MHxEdChsKTtmOylhWzEzMisocD0wfGFbZisxNj4+Ml0pPj4yXT1jLF9bYz4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCorX1twKzE2Pj4zXSxfW2MrOD4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCorX1twKzI0Pj4zXSxjPWMr''@;'; put 'put ''MTZ8MCxmPTB8enQobCxmKX1mdW5jdGlvbiBwWShsKXt2YXIgcCxjPTAsZj0wLG09MDtmb3IoYz1wPTB8YVsxMzIrKDB8YVsxNisoMHxEdChsfD0wKSk+PjJdKT4+Ml0sZj0wfER0KGwpO2Y7KWFbMTMyKyhtPTB8YVtmKzE2Pj4yXSk+PjJdPTAsX1ttKzE2Pj4zXT03MiorX1tjPj4zXSxfW20r''@;'; put 'put ''MjQ+PjNdPTcyKitfW2MrOD4+M10sYz1jKzE2fDAsZj0wfHp0KGwsZik7RnQocCl9ZnVuY3Rpb24gaTBlKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MDtmb3IocD0wLG09MDshKCgwfHApPj0oMHxsKSk7KWI9KDB8YVsxODArKDB8YVsxNisoMHxhW2MrKHA8''@;'; put 'put ''PDIpPj4yXSk+PjJdKT4+Ml0pK218MCxwPXArMXwwLG09Yjtmb3IoYVsxODArKDB8YVsoYj1mKzE2fDApPj4yXSk+PjJdPW0sQT0wfHZyKDQrKG08PDIpfDApLGFbMTg0KygwfGFbYj4+Ml0pPj4yXT1BLEE9MCxwPTE7ISgoMHxBKT49KDB8bCkpOyl7Zm9yKHc9MTYrKDB8YVtjKyhBPDwyKT4+''@;'; put 'put ''Ml0pfDAsbT0xOyEoKDB8bSk+KDB8YVsxODArKGY9MHxhW3c+PjJdKT4+Ml0pKTspZj0wfFRyZSgwfGFbKDB8YVtmKzE4ND4+Ml0pKyhtPDwyKT4+Ml0pLGFbKDB8YVsxODQrKDB8YVtiPj4yXSk+PjJdKSsocDw8Mik+PjJdPWYsZ1koMHxhWygwfGFbMTg0KygwfGFbdz4+Ml0pPj4yXSkrKG08''@;'; put 'put ''PDIpPj4yXSxmKSxtPW0rMXwwLHA9cCsxfDA7QT1BKzF8MH19ZnVuY3Rpb24gZ1kobCxjKXtsfD0wO3ZhciBtLGY9MCxwPTA7aDAoY3w9MCwxMzc0ODMsMjgwLDEpLGFbKGM9MTYrKDB8YVsobT1jKzE2fDApPj4yXSl8MCk+PjJdPWFbKGw9MTYrKDB8YVsocD1sKzE2fDApPj4yXSl8MCk+PjJd''@;'; put 'put ''LGFbYys0Pj4yXT1hW2wrND4+Ml0sYVtjKzg+PjJdPWFbbCs4Pj4yXSxhW2MrMTI+PjJdPWFbbCsxMj4+Ml0sYVtjKzE2Pj4yXT1hW2wrMTY+PjJdLGFbYysyMD4+Ml09YVtsKzIwPj4yXSxhW2MrMjQ+PjJdPWFbbCsyND4+Ml0sYVtjKzI4Pj4yXT1hW2wrMjg+PjJdLGZlWzI3NSsoYz0wfGFb''@;'; put 'put ''bT4+Ml0pPj4wXT0wfGZlWzI3NSsobD0wfGFbcD4+Ml0pPj4wXSxsPWwrNDh8MCxmPTY0KyhjPWMrNDh8MCl8MDtkb3thW2M+PjJdPWFbbD4+Ml0sYz1jKzR8MCxsPWwrNHwwfXdoaWxlKCgwfGMpPCgwfGYpKTtmb3IoYVsxODArKDB8YVttPj4yXSk+PjJdPWw9MHxhWzE4MCsoMHxhW3A+PjJd''@;'; put 'put ''KT4+Ml0sYz0wfHZyKDQrKGw8PDIpfDApLGFbMTg0KygwfGFbbT4+Ml0pPj4yXT1jLGM9MTtmPTB8YVtwPj4yXSwhKCgwfGMpPigwfGwpKTspZj0wfFRyZSgwfGFbKDB8YVtmKzE4ND4+Ml0pKyhjPDwyKT4+Ml0pLGFbKDB8YVsxODQrKDB8YVttPj4yXSk+PjJdKSsoYzw8Mik+PjJdPWYsZ1ko''@;'; put 'put ''MHxhWygwfGFbMTg0KygwfGFbcD4+Ml0pPj4yXSkrKGM8PDIpPj4yXSxmKSxjPWMrMXwwO2FbMTIrKDB8YVttPj4yXSk+PjJdPWFbKHA9ZisxMnwwKT4+Ml0sYVtwPj4yXT0wfWZ1bmN0aW9uIG1ZKGwsYyl7Zm9yKGN8PTAsKDB8ZGkobHw9MCkpIT0oMHxsKSYmaDAobCwxMzc0ODMsMjgwLDEp''@;'; put 'put ''LCgwfGwpPT0oMHxjKSYmKGFbMTg4KygwfGFbMTYrKDB8ZGkobCkpPj4yXSk+PjJdPWwpLGw9MHx3cyhsKTtsOyltWShsLGMpLGw9MHxFcyhsKX1mdW5jdGlvbiBXMyhsLGMpe2N8PTA7dmFyIGYscCxtLEEsdyxrLE0sRCxiPTA7Zm9yKEQ9bGUsbGU9bGUrMTA0MHwwLE09RCs4fDAsaz1ELHA9''@;'; put 'put ''RCsxNnwwLG09MHxzaShsfD0wLDEsODcxNzEsMTk1MDU5KSxBPTB8c2kobCwxLDg1MjQyLDE5NTA1OSksdz0oMHxjKT4wLGY9MT09KDB8YyksYz0wfER0KGwpO2M7KXcmJihhW2s+PjJdPWFbMjMyKygwfGFbKGI9YysxNnwwKT4+Ml0pPj4yXSxvbyhwLDEzNzM5NSxrKSxWbChjLG0scCksIWYp''@;'; put 'put ''JiYoYVtNPj4yXT1hWzIzNisoMHxhW2I+PjJdKT4+Ml0sb28ocCwxMzczOTUsTSksVmwoYyxBLHApKSxjPTB8enQobCxjKTtsZT1EfWZ1bmN0aW9uIGo1KGwsYyl7dmFyIHcsYixrLGY9MCxwPTAsbT0wLEE9MDtmb3IoZj0wfGFbKGw9MHxhWzE5NisoMHxhWyhiPTE2KyhsfD0wKXwwKT4+Ml0p''@;'; put 'put ''Pj4yXSkrKChrPTB8YVsyMzIrKDB8YVsxNisoY3w9MCk+PjJdKT4+Ml0pPDw2KT4+Ml0sdz1sKyhrPDw2KSs0fDAsQT0wLHA9MDs7KXtpZigoMHxwKT49KDB8Zikpe209NzticmVha31pZihtPTB8YVsoMHxhW3c+PjJdKSsocDw8Mik+PjJdLHA9cCsxfDAsKDB8bSk9PSgwfGMpKXttPTQ7YnJl''@;'; put 'put ''YWt9QT1tfWlmKDQ9PSgwfG0pKXtmb3IoOyEoKDB8cCk+PSgwfGYpKTspYVsobT0wfGFbbCsoazw8NikrND4+Ml0pKyhwKy0xPDwyKT4+Ml09YVttKyhwPDwyKT4+Ml0scD1wKzF8MCxmPTB8YVsobT0wfGFbMTk2KygwfGFbYj4+Ml0pPj4yXSkrKGs8PDYpPj4yXSxsPW0sbT00O2FbbCsoazw8''@;'; put 'put ''Nik+PjJdPWYrLTF9ZWxzZSA3PT0oMHxtKSYmKDB8QSkhPSgwfGMpJiZQcig4NTIwOCw4NTIxNSwyNDgsODUyMjUpfWZ1bmN0aW9uIHlhKGwpe3JldHVybiAwfGFbMTg4KygwfGFbMTYrKDB8ZGkobHw9MCkpPj4yXSk+PjJdfWZ1bmN0aW9uIFhBKGwsYyl7dmFyIGY9MDtyZXR1cm4gZj0wfGZl''@;'; put 'put ''WzI4KyhsfD0wKT4+MF0sMHxmZVsyOCsoY3w9MCk+PjBdP2Y8PDI0Pj4yND8oZj1+figrX1tsPj4zXS0rX1tjPj4zXSkpfHwoZj1+figrX1tsKzg+PjNdLStfW2MrOD4+M10pKTpmPS0xOmY9Zjw8MjQ+PjI0IT0wJjEsMHxmfWZ1bmN0aW9uIFo1KGwsYyl7Y3w9MDt2YXIgU24sSG4sdXIsSHIs''@;'; put 'put ''RXIsRHIsSnIsTHIsVmksT2ksUm8sZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxMZT0wLFJlPTAsSGU9MCxWZT0wLHFlPTAscnQ9MCxXZT0wLGF0PTAsU3Q9MCxrdD0wLHN0PTAsRXQ9MCxadD0wLGN0PTAsYnQ9MCxh''@;'; put 'put ''bj0wLGZyPTAsbDA9MCxsbz0wO1JvPWxlLGxlPWxlKzY1NnwwLEhuPVJvKzU5MnwwLFNuPVJvKzU1MnwwLGY9Um8rNTQ0fDAsSnI9Um8sT2k9Um8rNjMyfDAsdXI9NjU1MzUmKFZpPTE0Jml0WzEzNisoMHxhWyhMcj0xNisobHw9MCl8MCk+PjJdKT4+MV0pLGFbKEhyPTE2KyhEcj1Sbys5Nnww''@;'; put 'put ''KXwwKT4+Ml09Um8rMzY4LGFbKEVyPUpyKzE2fDApPj4yXT1SbysxOTI7ZG97aWYoVmk8PDE2Pj4xNil7ZnI9Vmk8PDE2Pj4xNj09NDtkb3tpZihmcil2WShsKSwxJmZlWzExMysoMHxhWzE2KygwfGFbbCs2MD4+Ml0pPj4yXSk+PjBdJiYkcigwLDg1MjQ4LGYpLFZlPTk7ZWxzZXtpZihWaTw8''@;'; put 'put ''MTY+PjE2PT04KXtpZih2WShsKSwxJmZlWzExMysoMHxhWzE2KygwfGFbbCs2MD4+Ml0pPj4yXSk+PjBdKXthMGUobCksZWkobCwxKSxrPTAsYj0wLHc9MDticmVha31laShsLDApLGs9MCxiPTAsdz0wO2JyZWFrfVZlPTl9fXdoaWxlKDApO2lmKDk9PSgwfFZlKSl7aWYoZnAobCksMHxUYWUo''@;'; put 'put ''KSlicmVhaztsMD0wfHZyKDk2KSxhW09pKzg+PjJdPSgwfChjdD0wfGFbMjQ4KygwfGFbTHI+PjJdKT4+Ml0pKS80fDAsYVtPaSsxMj4+Ml09Y3Qsdz0wfHZyKDUxMiksYVsoU3Q9T2krNHwwKT4+Ml09MCxhW09pPj4yXT0wLHJ0PTB8aXRbMjM2KyhBPTB8YVtMcj4+Ml0pPj4xXSxXZT0wLGJ0''@;'; put 'put ''PTAsYW49dyxhdD13LGI9dyxrPXcsTT13LHN0PTAsRXQ9MDtlOmZvcig7ISgoMHxydCk+KDB8aXRbQSsyMzg+PjFdKSk7KXtmb3Ioa3Q9KG09MHxhWyhEPTB8YVtBKzE5Nj4+Ml0pKyhydDw8Nik+PjJdKStXZXwwLHFlPShmPShmPTB8YVsocD0wfGFbRCsocnQ8PDYpKzQ+PjJdKT4+Ml0pP35+''@;'; put 'put ''KChSZT0rX1sxNisoZj0wfGFbZisxNj4+Ml0pPj4zXS0rX1tmKzg4Pj4zXSk+KGxvPSsoMHxzdCkpP2xvOlJlKTpzdCkrLTE2fDAsSGU9KHA9MCE9KDB8bSkmJjAhPSgwfChadD0wfGFbcCsobSstMTw8Mik+PjJdKSk/fn4oKGxvPStfWzk2KyhwPTB8YVtadCsxNj4+Ml0pPj4zXSsgK19bcCsx''@;'; put 'put ''Nj4+M10pPChSZT0rKDB8RXQpKT9SZTpsbyk6RXQpKzE2fDAsTGU9MCxwZT1idCxHPWFuLFI9QSxnZT1hdCxiZT1iLHA9dyxmPUQ7ISgoMHxMZSk+PSgwfG0pKTspe2lmKG09MHxhWzExMisoZj0wfGFbKE9lPTE2Kyh3PTB8YVsoMHxhW2YrKHJ0PDw2KSs0Pj4yXSkrKExlPDwyKT4+Ml0pfDAp''@;'; put 'put ''Pj4yXSk+PjJdKXtpZighKEE9MHxhWzk2KygwfGFbKG09bSsxNnwwKT4+Ml0pPj4yXSkpe1ZlPTIxO2JyZWFrIGV9YVsocT1BKzU2fDApPj4yXT1hWyhmPWYrMTZ8MCk+PjJdLGFbcSs0Pj4yXT1hW2YrND4+Ml0sYVtxKzg+PjJdPWFbZis4Pj4yXSxhW3ErMTI+PjJdPWFbZisxMj4+Ml0sZmVb''@;'; put 'put ''ODErKDB8YVs5NisoMHxhW20+PjJdKT4+Ml0pPj4wXT0xLGY9MHxhW09lPj4yXX0wIT0oMHxmZVtmKzE1Nj4+MF0pJiYoMHxfb1s2MyZhWzQzMjVdXSh3KSk8PDI0Pj4yND09MD8oUj1wZSxmPUcsQT1nZSx3PWJlLG09TSk6KHE9MCxSPXBlLEE9Z2Usdz1iZSxWZT0yNSk7dDpkb3tpZigyNT09''@;'; put 'put ''KDB8VmUpKXtmb3IoO1ZlPTAsbT0wfGFbKDB8YVsxODArKEQ9MHxhW09lPj4yXSk+PjJdKSsocTw8Mik+PjJdOyl7c3dpdGNoKDB8ZmVbMTEyKygwfGFbbSsxNj4+Ml0pPj4wXSl7Y2FzZSA2OmNhc2UgNDpmPVIsbT1HO2JyZWFrO2RlZmF1bHQ6bEkobSwxLDE2LDY0KSxmPVIrMXwwLGFbRyso''@;'; put 'put ''Ujw8Mik+PjJdPW0sMTI3JmY/bT1HOihtPXA9MHxWMChwLDUxNisoUjw8Mil8MCksQT1wLHc9cCxrPXAsTT1wKX1xPXErMXwwLFI9ZixHPW0sVmU9MjV9Zj0wfGFbRCsxODg+PjJdO246ZG97aWYoZilmb3IocT0wLG09TTs7KXtpZighKGY9MHxhW2YrKHE8PDIpPj4yXSkpYnJlYWsgbjtsSShm''@;'; put 'put ''LDIsMCwxMjgpLE09UisxfDAsYVtHKyhSPDwyKT4+Ml09ZiwxMjcmTT9mPUc6KGY9cD0wfFYwKG0sNTE2KyhSPDwyKXwwKSxBPXAsdz1wLGs9cCxtPXApLHE9cSsxfDAsUj1NLEc9ZixmPTB8YVsxODgrKEQ9MHxhW09lPj4yXSk+PjJdfWVsc2UgbT1NfXdoaWxlKDApO2lmKGY9MHxhW0QrMjA0''@;'; put 'put ''Pj4yXSlmb3IoMHxmZVtEKzE1Nj4+MF0/KHE9MCxEPUcpOihsbz0rX1soYmU9RCs5NnwwKT4+M10sX1tiZT4+M109K19bKHE9RCsyNDB8MCk+PjNdLF9bcT4+M109bG8scT0wLEQ9Ryk7Oyl7aWYoIShmPTB8YVtmKyhxPDwyKT4+Ml0pKXtmPUQ7YnJlYWsgdH1sSShmLDAsMCwxMjgpLE09Uisx''@;'; put 'put ''fDAsYVtEKyhSPDwyKT4+Ml09ZiwxMjcmTT9mPUQ6KGY9cD0wfFYwKGssNTE2KyhSPDwyKXwwKSxBPXAsdz1wLGs9cCxtPXApLHE9cSsxfDAsUj1NLEQ9ZixmPTB8YVsyMDQrKDB8YVtPZT4+Ml0pPj4yXX1lbHNlIGY9R319d2hpbGUoMCk7T2U9MHxhWzE5NisoZ2U9MHxhW0xyPj4yXSk+PjJd''@;'; put 'put ''LExlPUxlKzF8MCxwZT1SLEc9ZixSPWdlLGdlPUEsYmU9dyxNPW0sbT0wfGFbT2UrKHJ0PDw2KT4+Ml0sZj1PZX1ydD1ydCsxfDAsV2U9a3QsYnQ9cGUsYW49RyxhdD1nZSxBPVIsYj1iZSx3PXAsc3Q9cWUsRXQ9SGV9MjE9PSgwfFZlKSYmUHIoODUzMTYsODUzMjksMzEzLDg1MzQyKSxhW09p''@;'; put 'put ''Pj4yXT1zdCxhW1N0Pj4yXT1FdCx4MShhdCxidCw0LDU4KSxhW2wwKzg0Pj4yXT0wfHZyKDExNTIwKyhXZTw8NSl8MCksYVtPaSsxNj4+Ml09MHx2cihydDw8NSk7ZTpkb3tpZihWaTw8MTY+PjE2PT0yKWZvcihmPTE5MisoMHxhW0xyPj4yXSl8MDs7KXtpZighKHA9MHxhW2Y+PjJdKSlicmVh''@;'; put 'put ''ayBlOzE9PSgwfGZlWzE1NisoZj0wfGFbKG09cCsxNnwwKT4+Ml0pPj4wXSkmJjAhPSgwfGFbZisxMDQ+PjJdKSYmKFpGKHApLGY9MHxhW20+PjJdKSxmPWYrMTY0fDB9fXdoaWxlKDApO0hlPUpyKzQ4fDAsVmU9SnIrLTQ4fDAscWU9RHIrNDh8MCxydD1EcistNDh8MCxSZT0rKDB8Y3QpLExl''@;'; put 'put ''PTA7ZTpmb3IoOyEoKDB8TGUpPj0oMHxidCkpOyl7aWYocT0wfHo1KEc9MHxhWyhiZT1hbisoTGU8PDIpfDApPj4yXSksMHxmZVs0NCsocD0wfGFbKHBlPUcrMTZ8MCk+PjJdKT4+MF0/Zj1HOihmPXA9MD09KDB8ZmVbcCs4ND4+MF0pP3E6RyxwPTB8YVtwKzE2Pj4yXSksbT1mKzE2fDAsMzIm''@;'; put 'put ''YVtwKzE2ND4+Ml0pe2dvKDB8KHA9MHxhW0hyPj4yXSksMHxhW20+PjJdLDE3NiksTT1mLEQ9KGs9RHIpKzQ4fDA7ZG97YVtrPj4yXT1hW00+PjJdLGs9ays0fDAsTT1NKzR8MH13aGlsZSgoMHxrKTwoMHxEKSk7YVtIcj4+Ml09cCxhWygzPT0oMHwoaz0zJmFbRHI+PjJdKSk/RHI6cWUpKzQw''@;'; put 'put ''Pj4yXT1hWygyPT0oMHwoTT0zJmFbZj4+Ml0pKT9mOmYrLTQ4fDApKzQwPj4yXSxhWygyPT0oMHxrKT9EcjpydCkrNDA+PjJdPWFbKDM9PSgwfE0pP2Y6Zis0OHwwKSs0MD4+Ml0sTT01NisoMHxhW20+PjJdKXwwLEQ9NDArKGs9cCsxNnwwKXwwO2Rve2Fbaz4+Ml09YVtNPj4yXSxrPWsrNHww''@;'; put 'put ''LE09TSs0fDB9d2hpbGUoKDB8ayk8KDB8RCkpO009MTYrKDB8YVttPj4yXSl8MCxEPTQwKyhrPXArNTZ8MCl8MDtkb3thW2s+PjJdPWFbTT4+Ml0saz1rKzR8MCxNPU0rNHwwfXdoaWxlKCgwfGspPCgwfEQpKTtmZVtwKzExMj4+MF09MSxhW3ArMTE2Pj4yXT1mLGY9RHJ9Zm9yKFI9ZisxNnww''@;'; put 'put ''LE9lPTEsZj1MZTshKCgwfChnZT1mKzF8MCkpPj0oMHxidCl8fChBPWFuKyhnZTw8Mil8MCxmPTB8YVtBPj4yXSwoMHxxKSE9KDB8ejUoZikpKSk7KXtpZighKDB8ZmVbMTEzKygwfGFbcGU+PjJdKT4+MF0pKXtpZigwfGZlWzQ0KyhwPTB8YVsodz1mKzE2fDApPj4yXSk+PjBdfHwoZj1wPTA9''@;'; put 'put ''PSgwfGZlW3ArODQ+PjBdKT9xOmYscD0wfGFbcCsxNj4+Ml0pLG09ZisxNnwwLDMyJmFbcCsxNjQ+PjJdKXtnbygwfChwPTB8YVtFcj4+Ml0pLDB8YVttPj4yXSwxNzYpLE09ZixEPShrPUpyKSs0OHwwO2Rve2Fbaz4+Ml09YVtNPj4yXSxrPWsrNHwwLE09TSs0fDB9d2hpbGUoKDB8ayk8KDB8''@;'; put 'put ''RCkpO2FbRXI+PjJdPXAsYVsoMz09KDB8KGs9MyZhW0pyPj4yXSkpP0pyOkhlKSs0MD4+Ml09YVsoMj09KDB8KE09MyZhW2Y+PjJdKSk/ZjpmKy00OHwwKSs0MD4+Ml0sYVsoMj09KDB8ayk/SnI6VmUpKzQwPj4yXT1hWygzPT0oMHxNKT9mOmYrNDh8MCkrNDA+PjJdLE09NTYrKDB8YVttPj4y''@;'; put 'put ''XSl8MCxEPTQwKyhrPXArMTZ8MCl8MDtkb3thW2s+PjJdPWFbTT4+Ml0saz1rKzR8MCxNPU0rNHwwfXdoaWxlKCgwfGspPCgwfEQpKTtNPTE2KygwfGFbbT4+Ml0pfDAsRD00MCsoaz1wKzU2fDApfDA7ZG97YVtrPj4yXT1hW00+PjJdLGs9ays0fDAsTT1NKzR8MH13aGlsZSgoMHxrKTwoMHxE''@;'; put 'put ''KSk7ZmVbcCsxMTI+PjBdPTEsYVtwKzExNj4+Ml09Zn1mPXArMTZ8MCxNPTE2KyhtPTB8YVtSPj4yXSl8MCxEPShrPVNuKSs0MHwwO2Rve2Fbaz4+Ml09YVtNPj4yXSxrPWsrNHwwLE09TSs0fDB9d2hpbGUoKDB8ayk8KDB8RCkpO009ZixEPShrPUhuKSs0MHwwO2Rve2Fbaz4+Ml09YVtNPj4y''@;'; put 'put ''XSxrPWsrNHwwLE09TSs0fDB9d2hpbGUoKDB8ayk8KDB8RCkpO2lmKDB8WEEoU24sSG4pKWJyZWFrO2Y9cCs1NnwwLE09bSs1NnwwLEQ9KGs9U24pKzQwfDA7ZG97YVtrPj4yXT1hW00+PjJdLGs9ays0fDAsTT1NKzR8MH13aGlsZSgoMHxrKTwoMHxEKSk7TT1mLEQ9KGs9SG4pKzQwfDA7ZG97''@;'; put 'put ''YVtrPj4yXT1hW00+PjJdLGs9ays0fDAsTT1NKzR8MH13aGlsZSgoMHxrKTwoMHxEKSk7aWYoMHxYQShTbixIbil8fDI9PSgxNSZhWzE2NCsoY3Q9MHxhW3BlPj4yXSk+PjJdfDApJiYoMHxhW2N0Kzk2Pj4yXSkhPSgwfGFbOTYrKDB8YVt3Pj4yXSk+PjJdKXx8NjQmYVsxNjQrKDB8YVsxNiso''@;'; put 'put ''MHxhW0E+PjJdKT4+Ml0pPj4yXXwwKWJyZWFrfU9lPU9lKzF8MCxmPWdlfWlmKGZyKXtmb3IoZj0xPT0oMHxPZSk/SG46MHx2cihPZTw8MiksYVtmPj4yXT0wfHo1KDB8YVtiZT4+Ml0pLHA9MTshKCgwfHApPj0oMHxPZSkpOylhW2YrKHA8PDIpPj4yXT1hW2JlKyhwPDwyKT4+Ml0scD1wKzF8''@;'; put 'put ''MDtXUShsLGYsT2UsdXIsMTcyOTYpLCgwfE9lKT4xJiZGdChmKSxMZT1nZX1lbHNlIGlmKG09MHxhWzIzMisocD0wfGFbMTYrKGN0PTB8YVsoMz09KDB8KGY9MyZhW0c+PjJdKSk/RzpHKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0sKDB8Y3QpPT0oMHwoZj0wfGFbKDI9PSgwfGYpP0c6RystNDh8''@;'; put 'put ''MCkrNDA+PjJdKSkpe2Y9MHxhW0xyPj4yXTtkb3tpZigoMHxtKT09KDB8aXRbZisyMzg+PjFdKSl7aWYoKDB8bSk+MCl7Zj1+figrX1syNCsoMHxhWzE2KygwfGFbYVsoMHxhW2YrMTk2Pj4yXSkrKG0rLTE8PDYpKzQ+PjJdPj4yXSk+PjJdKT4+M10tK19bcCsyND4+M10pO2JyZWFrfWY9fn4r''@;'; put 'put ''X1twKzgwPj4zXTticmVha31pZigoMHxtKT09KDB8aXRbZisyMzY+PjFdKSl7Zj1+figrX1twKzI0Pj4zXS0rX1syNCsoMHxhWzE2KygwfGFbYVsoMHxhW2YrMTk2Pj4yXSkrKG0rMTw8NikrND4+Ml0+PjJdKT4+Ml0pPj4zXSk7YnJlYWt9Zj0oMHwoY3Q9fn4oK19bMjQrKDB8YVsxNisoMHxh''@;'; put 'put ''W2FbKGY9MHxhW2YrMTk2Pj4yXSkrKG0rLTE8PDYpKzQ+PjJdPj4yXSk+PjJdKT4+M10tKGxvPStfW3ArMjQ+PjNdKSkpKTwoMHwoZj1+fihsby0rX1syNCsoMHxhWzE2KygwfGFbYVtmKyhtKzE8PDYpKzQ+PjJdPj4yXSk+PjJdKT4+M10pKSk/Y3Q6ZjticmVha313aGlsZSgwKTtmb3IoaUQo''@;'; put 'put ''bDAsYW4sTGUsT2UsUmUsKygwfCgwfGYpLzIpLDE3Mjk2KSxmPTA7Oyl7aWYoKDB8Zik+PSgwfE9lKSl7TGU9Z2U7Y29udGludWUgZX0wfChwPTB8YVs5NisoMHxhWzE2KygwfGFbYW4rKGYrTGU8PDIpPj4yXSk+PjJdKT4+Ml0pJiZuNChsLHApLGY9ZisxfDB9fWVsc2V7aWYoKDB8bSk9PSgw''@;'; put 'put ''fGFbMjMyKygwfGFbZisxNj4+Ml0pPj4yXSkpe3MwZShsLE9pLGwwLGFuLExlLE9lLHVyKSxMZT1nZTtjb250aW51ZX11MGUobCxPaSxsMCxhbixMZSxPZSx1ciksTGU9Z2V9fWZvcihmPTE5MisoMHxhW0xyPj4yXSl8MDtwPTB8YVtmPj4yXTspMT09KDB8ZmVbMTU2KyhmPTB8YVsobT1wKzE2''@;'; put 'put ''fDApPj4yXSk+PjBdKSYmMCE9KDB8YVtmKzEwND4+Ml0pJiYoWkYocCksbjQobCwwfGFbMTA0KygwfGFbbT4+Ml0pPj4yXSksZj0wfGFbbT4+Ml0pLGY9ZisxNjR8MDtjPyhBWShsKSxrPWwwLHc9bDApOihrPWwwLHc9bDApfWU6ZG97aWYoMCE9KDB8YVs0NzE5N10pfDAhPSgwfGFbNDcxOThd''@;'; put 'put ''KSYmMCE9KDB8YVs0NzIwM10pfDAhPSgwfGFbNDcyMDJdKSlmb3IoQT0wfER0KGwpOzspe2lmKCFBKWJyZWFrIGU7dDpkb3tpZigwfGFbNDcxOTddKWZvcihmPTB8TWYobCxBKTs7KXtpZighZilicmVhayB0O3A9ZistNDh8MCwwfGFbMTAwKygwfGFbKG09Mj09KDMmYVtmPj4yXXwwKT9mOnAp''@;'; put 'put ''KzE2Pj4yXSk+PjJdJiYodmsobSwxKSxuNChsLDB8YVsxMDArKDB8YVsoMj09KDMmYVtmPj4yXXwwKT9mOnApKzE2Pj4yXSk+PjJdKSksZj0wfEYzKGwsZil9fXdoaWxlKDApO3Q6ZG97aWYoMHxhWzQ3MTk4XSlmb3IoZj0wfHcwKGwsQSk7Oyl7aWYoIWYpYnJlYWsgdDswfGFbMTA0KygwfGFb''@;'; put 'put ''KHA9ZisxNnwwKT4+Ml0pPj4yXSYmMHx2ayhmLDApJiZuNChsLDB8YVsxMDQrKDB8YVtwPj4yXSk+PjJdKSxmPTB8UzAobCxmKX19d2hpbGUoMCk7QT0wfHp0KGwsQSl9fXdoaWxlKDApO3N3aXRjaCgxNSZWaSl7Y2FzZSA0OmNhc2UgODpicmVhaztkZWZhdWx0OkZ0KGIpLEZ0KDB8YVtrKzg0''@;'; put 'put ''Pj4yXSksRnQodyksRnQoMHxhW09pKzE2Pj4yXSksalEoKX1hWzQ3MTM4XT0xLGFbNDcxMzldPTF9fXdoaWxlKDApO2xlPVJvfWZ1bmN0aW9uIHZZKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTA7Zm9yKGM9MHxEdChsfD0wKTtjOykwfGFbMjA0KyhmPTB8YVtjKzE2Pj4yXSk+PjJdJiYocD0rX1so''@;'; put 'put ''bT1mKzk2fDApPj4zXSxfW20+PjNdPStfWyhmPWYrMjQwfDApPj4zXSxfW2Y+PjNdPXApLGM9MHx6dChsLGMpfWZ1bmN0aW9uIGEwZShsKXt2YXIgYz0wLGY9MCxwPTAsbT0wO2M9MTkyKygwfGFbMTYrKGx8PTApPj4yXSl8MDtlOmZvcig7Oyl7aWYoIShwPTB8YVtjPj4yXSkpe2M9MTI7YnJl''@;'; put 'put ''YWt9Yz0wfGFbKG09cCsxNnwwKT4+Ml07ZG97aWYoMT09KDB8ZmVbYysxNTY+PjBdKSl7aWYoZj0wfGFbYysxMTI+PjJdKXtpZighKGY9MHxhWzk2KygwfGFbZisxNj4+Ml0pPj4yXSkpe2M9NjticmVhayBlfWFbKHA9Zis1NnwwKT4+Ml09YVsoYz1jKzE2fDApPj4yXSxhW3ArND4+Ml09YVtj''@;'; put 'put ''KzQ+PjJdLGFbcCs4Pj4yXT1hW2MrOD4+Ml0sYVtwKzEyPj4yXT1hW2MrMTI+PjJdLGZlW2YrODE+PjBdPTEsYz1mfWVsc2V7aWYoIShmPTB8YVtjKzEwND4+Ml0pKWJyZWFrO1pGKHApLGM9Zn1uNChsLGMpLGM9MHxhW20+PjJdfX13aGlsZSgwKTtjPWMrMTY0fDB9aWYoNj09KDB8YykpUHIo''@;'; put 'put ''ODU1MTYsODUzMjksMjM0LDg1NTM1KTtlbHNlIGlmKDEyPT0oMHxjKSlyZXR1cm59ZnVuY3Rpb24gbEkobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wO2Rve2lmKCFjKXtpZigoMHwoYz0wfGFbKDM9PSgwfChtPTMmYVtsPj4yXSkpP2w6bCs0OHwwKSs0MD4+Ml0pKSE9KDB8''@;'; put 'put ''KG09MHxhWygyPT0oMHxtKT9sOmwrLTQ4fDApKzQwPj4yXSkpKXtjPSgwfGFbMjMyKygwfGFbYysxNj4+Ml0pPj4yXSk9PSgwfGFbMjMyKygwfGFbbSsxNj4+Ml0pPj4yXSk/MjoxO2JyZWFrfWM9MHxmZVs0NCsoYz0wfGFbbCsxNj4+Ml0pPj4wXT80OjA9PSgwfGZlW2MrODQ+PjBdKT84OjR9''@;'; put 'put ''fXdoaWxlKDApO2U6ZG97aWYoIWYpc3dpdGNoKDB8Yyl7Y2FzZSAxOmY9KDB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMHwoZj0zJmFbbD4+Ml0pKT9sOmwrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk8KDB8YVsyMzIrKDB8YVsxNisoMHxhWygyPT0oMHxmKT9sOmwrLTQ4fDApKzQwPj4yXSk+''@;'; put 'put ''PjJdKT4+Ml0pPzE2OjMyO2JyZWFrIGU7Y2FzZSAyOmY9KDB8YVsyMzYrKDB8YVsxNisoMHxhWygzPT0oMHwoZj0zJmFbbD4+Ml0pKT9sOmwrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk8KDB8YVsyMzYrKDB8YVsxNisoMHxhWygyPT0oMHxmKT9sOmwrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0p''@;'; put 'put ''PzE2OjMyO2JyZWFrIGU7ZGVmYXVsdDpmPTE2O2JyZWFrIGV9fXdoaWxlKDApO2FbMTY0KygwfGFbbCsxNj4+Ml0pPj4yXT1jfHB8Zn1mdW5jdGlvbiBaRihsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MDtpZigwfGFbMTc2KyhjPTB8YVsocD0xNisobHw9MCl8MCk+PjJdKT4+Ml0pe2Zvcihj''@;'; put 'put ''PTB8YVtjKzE4MD4+Ml07MHxmZVsxMTIrKGY9MHxhWyhjPTE2KygwfGFbYz4+Ml0pfDApPj4yXSk+PjBdOyljPWYrMTE2fDA7bT0rX1syNCsoZj0wfGFbZis5Nj4+Ml0pPj4zXSxBPStfW2YrMzI+PjNdLGY9MCE9KDEmYVsxMTYrKDB8YVsxNisoMHxjcihsKSk+PjJdKT4+Ml18MCksbD0wfGFb''@;'; put 'put ''cD4+Ml0sX1s1NisocD0wfGFbOTYrKDB8YVtjPj4yXSk+PjJdKT4+M109LjUqKGY/QTptKSsgK19bbCsxNj4+M10sX1twKzY0Pj4zXT0rX1tsKzI0Pj4zXSxmZVtwKzgxPj4wXT0xfX1mdW5jdGlvbiB6NShsKXtsfD0wO2Zvcih2YXIgYz0wLGY9MDtmPTB8YVsxNzIrKGM9MHxhW2wrMTY+PjJd''@;'; put 'put ''KT4+Ml07KWw9Zjtmb3IoO2M9MHxhW2MrMTE2Pj4yXTspbD1jLGM9MHxhW2MrMTY+PjJdO3JldHVybiAwfGx9ZnVuY3Rpb24gczBlKGwsYyxmLHAsbSxBLHcpe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCxBfD0wLHd8PTA7dmFyIFJlLEhlLFZlLHJ0LGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0w''@;'; put 'put ''LHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAscWU9MCxXZT0wLGF0PTAsU3Q9MCxrdD0wLHN0PTA7aWYocnQ9bGUsbGU9bGUrMTcxMnwwLFJlPXJ0KzE2NjR8MCxxZT1ydCsxNjk2fDAsSGU9cnQrNjk2fDAsVmU9cnQsYVsoUj0xNisoZ2U9cnQrMTM5MnwwKXwwKT4+Ml09cGU9cnQrMTQ4''@;'; put 'put ''OHwwLGJlPTB8ZmVbMTEzKyhiPTB8YVsocT0xNisoRz0wfGFbcCsobTw8Mik+PjJdKXwwKT4+Ml0pPj4wXSwzMiZhW2IrMTY0Pj4yXSl7Z28oMHxwZSwwfGIsMTc2KSxNPUcsRD0oYj1nZSkrNDh8MDtkb3thW2I+PjJdPWFbTT4+Ml0sYj1iKzR8MCxNPU0rNHwwfXdoaWxlKCgwfGIpPCgwfEQp''@;'; put 'put ''KTthW1I+PjJdPXBlLGFbKDM9PSgwfChiPTMmYVtnZT4+Ml0pKT9nZTpnZSs0OHwwKSs0MD4+Ml09YVsoMj09KDMmYVtHPj4yXXwwKT9HOkcrLTQ4fDApKzQwPj4yXSxhWygyPT0oMHxiKT9nZTpnZSstNDh8MCkrNDA+PjJdPWFbKDM9PSgzJmFbRz4+Ml18MCk/RzpHKzQ4fDApKzQwPj4yXSxN''@;'; put 'put ''PTU2KygwfGFbcT4+Ml0pfDAsRD00MCsoYj1wZSsxNnwwKXwwO2Rve2FbYj4+Ml09YVtNPj4yXSxiPWIrNHwwLE09TSs0fDB9d2hpbGUoKDB8Yik8KDB8RCkpO009MTYrKDB8YVtxPj4yXSl8MCxEPTQwKyhiPXBlKzU2fDApfDA7ZG97YVtiPj4yXT1hW00+PjJdLGI9Yis0fDAsTT1NKzR8MH13''@;'; put 'put ''aGlsZSgoMHxiKTwoMHxEKSk7ZmVbcGUrMTEyPj4wXT0xLGFbcGUrMTE2Pj4yXT1HLEc9Z2V9Zm9yKGI9MTs7KXtpZigoMHxiKT49KDB8QSkpe0xlPTY7YnJlYWt9aWYoMHxmZVsxMTMrKDB8YVsxNisoMHxhW3ArKGIrbTw8Mik+PjJdKT4+Ml0pPj4wXSl7TGU9NzticmVha31iPWIrMXwwfWU6''@;'; put 'put ''ZG97aWYoNj09KDB8TGUpKWlmKGJlPDwyND4+MjQpTGU9NztlbHNle2lmKDB8YVs5NisoYj0wfGFbRysxNj4+Ml0pPj4yXSl7bTBlKGwsYyxmLEcsdyk7YnJlYWt9aWYoMj09KDB8dykpe1VGKDB8YVsoMz09KDB8KHFlPTMmYVtHPj4yXSkpP0c6Rys0OHwwKSs0MD4+Ml0sMHxhWygyPT0oMHxx''@;'; put 'put ''ZSk/RzpHKy00OHwwKSs0MD4+Ml0scCxtLEEsMik7YnJlYWt9aWYoISgoZ2U9MHxmZVtiKzQ5Pj4wXSk8PDI0Pj4yND09MSYoYmU9MHxmZVtiKzg5Pj4wXSk8PDI0Pj4yNCE9NHx8Z2U8PDI0Pj4yNCE9NCZiZTw8MjQ+PjI0PT0xKSlmb3IoRD0wfGFbKDM9PSgwfChSPTMmYVtHPj4yXSkpP0c6''@;'; put 'put ''Rys0OHwwKSs0MD4+Ml0sUj0wfGFbKDI9PSgwfFIpP0c6RystNDh8MCkrNDA+PjJdLGs9KDB8KE09MHxhWzIzMisoYj0wfGFbRCsxNj4+Ml0pPj4yXSkpPjA/K19bMjQrKDB8YVsxNisoMHxhW2FbKGJlPTB8YVsxOTYrKDB8YVtsKzE2Pj4yXSk+PjJdKSsoKGdlPU0rfigxJmZlWzExMysoMHxh''@;'; put 'put ''WzE2KygwfGFbbCs2MD4+Ml0pPj4yXSk+PjBdKXwwKTw8NikrND4+Ml0+PjJdKT4+Ml0pPj4zXS0rX1tiZSsoZ2U8PDYpKzE2Pj4zXS0rX1tiKzI0Pj4zXS0rX1tiZSsoTTw8NikrMjQ+PjNdOisoMHxhWzI1MisoMHxhW2wrMTY+PjJdKT4+Ml0pLE9lPSsoMHxhW2MrMTI+PjJdKS8oV2U9KyhB''@;'; put 'put ''KzF8MCkpLGsvPVdlLHVJKGwsYyxmLEQsRyxIZSwxKSx1SShsLGMsZixSLEcsVmUsMCkscGU9SGUrNTJ8MCxnZT1WZSs1MnwwLFI9MTA9PSgwfHcpLEc9Zis4MHwwLGI9MDs7KXtpZigoMHxiKT49KDB8QSkpYnJlYWsgZTtmb3IocT0wfGFbcCsoYittPDwyKT4+Ml0sa3Q9K19bSGUrNTYrKChN''@;'; put 'put ''PShEPTB8YVtwZT4+Ml0pLTF8MCk8PDUpKzE2Pj4zXSxTdD0rX1tIZSs1NisoTTw8NSkrMjQ+PjNdLF9bMTkyMTVdPXN0PStfW0hlKzU2KyhNPDw1KT4+M10sX1sxOTIxNl09U3QsX1sxOTIxN109a3QrKGF0PU9lKihXZT0rKDB8KGI9YisxfDApKSkpLF9bMTkyMThdPVdlPVN0K2sqV2UsX1sx''@;'; put 'put ''OTIxOV09c3QsX1sxOTIyMF09V2UsX1sxOTIyMV09c3Q9K19bVmUrNTYrKChNPSgwfGFbZ2U+PjJdKS0xfDApPDw1KSsxNj4+M10sX1sxOTIyMl09V2UrayxTdD0rX1tWZSs1NisoTTw8NSk+PjNdLGt0PStfW1ZlKzU2KyhNPDw1KSsyND4+M10sX1sxOTIyNV09c3QsX1sxOTIyNF09a3QsX1sx''@;'; put 'put ''OTIyM109U3QtYXQsX1sxOTIyNl09V2UsTT0wOzspe2lmKCgwfE0pPj0oMHxEKSl7TT0wO2JyZWFrfWFbUmU+PjJdPWFbKEQ9SGUrNTYrKE08PDUpfDApPj4yXSxhW1JlKzQ+PjJdPWFbRCs0Pj4yXSxhW1JlKzg+PjJdPWFbRCs4Pj4yXSxhW1JlKzEyPj4yXT1hW0QrMTI+PjJdLGFbUmUrMTY+''@;'; put 'put ''PjJdPWFbRCsxNj4+Ml0sYVtSZSsyMD4+Ml09YVtEKzIwPj4yXSxhW1JlKzI0Pj4yXT1hW0QrMjQ+PjJdLGFbUmUrMjg+PjJdPWFbRCsyOD4+Ml0sSjMoZixSZSksTT1NKzF8MCxEPTB8YVtwZT4+Ml19Zm9yKDszIT0oMHxNKTspYVtSZT4+Ml09YVsodz0xNTM3MjArKE08PDUpfDApPj4yXSxh''@;'; put 'put ''W1JlKzQ+PjJdPWFbdys0Pj4yXSxhW1JlKzg+PjJdPWFbdys4Pj4yXSxhW1JlKzEyPj4yXT1hW3crMTI+PjJdLGFbUmUrMTY+PjJdPWFbdysxNj4+Ml0sYVtSZSsyMD4+Ml09YVt3KzIwPj4yXSxhW1JlKzI0Pj4yXT1hW3crMjQ+PjJdLGFbUmUrMjg+PjJdPWFbdysyOD4+Ml0sSjMoZixSZSks''@;'; put 'put ''TT1NKzF8MDtmb3IoRD0wfGFbZ2U+PjJdO009RCstMXwwLCEoKDB8RCk8PTApOylhW1JlPj4yXT1hWyhEPVZlKzU2KyhNPDw1KXwwKT4+Ml0sYVtSZSs0Pj4yXT1hW0QrND4+Ml0sYVtSZSs4Pj4yXT1hW0QrOD4+Ml0sYVtSZSsxMj4+Ml09YVtEKzEyPj4yXSxhW1JlKzE2Pj4yXT1hW0QrMTY+''@;'; put 'put ''PjJdLGFbUmUrMjA+PjJdPWFbRCsyMD4+Ml0sYVtSZSsyND4+Ml09YVtEKzI0Pj4yXSxhW1JlKzI4Pj4yXT1hW0QrMjg+PjJdLEozKGYsUmUpLEQ9TTtpZihNPVI/MHxfeShmLHFlKTowfGdrKGYscWUpLCEoRD0wfGFbcWU+PjJdKSlicmVhayBlO0F1KHEsMHxhWygyPT0oMyZhW3E+PjJdfDAp''@;'; put 'put ''P3E6cSstNDh8MCkrNDA+PjJdLE0sRCwxNzI5NiksYVtHPj4yXT0wfUNZKGwsYyxmLHAsbSxBLEcsMTA9PSgwfHcpJjEpfX13aGlsZSgwKTs3PT0oMHxMZSkmJmZ1bmN0aW9uIGcwZShsLGMsZixwLG0sQSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxBfD0wO3ZhciBXZSxhdCxTdCxrdCxzdCxFdCxa''@;'; put 'put ''dCxjdCxidCxhbixTbixIbix1cixIcixmcix3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTAsRXI9MCxEcj0wLEpyPTA7ZnI9bGUsbGU9bGUrMjU2fDAsYXQ9ZnIrMjMyfDAsV2U9ZnIrMjE2fDAs''@;'; put 'put ''SHI9ZnIrODh8MCx1cj1mcis4MHwwLGJ0PWZyKzY0fDAsYW49ZnIrMjAwfDAsU249ZnIrMTg0fDAsSG49ZnIsU3Q9ZnIrMTY4fDAsa3Q9ZnIrMTUyfDAsc3Q9ZnIrMTM2fDAsRXQ9ZnIrMTIwfDAsWnQ9ZnIrMTA0fDAsY3Q9MHxhWygzPT0oMHwocnQ9MyZhWyhtfD0wKT4+Ml0pKT9tOm0rNDh8''@;'; put 'put ''MCkrNDA+PjJdLHJ0PTB8YVsoMj09KDB8cnQpP206bSstNDh8MCkrNDA+PjJdO2Rve2lmKDIhPSgwfCQ1KGN0KSkmJjIhPSgwfCQ1KHJ0KSkpe2ZvcihtPTAsdz0wLGI9MDshKCgwfGIpPj0oMHxwKSk7KW09bSsoMCE9KDB8YVs5NisocWU9MHxhWzE2KygwfGFbYysoYitmPDwyKT4+Ml0pPj4y''@;'; put 'put ''XSk+PjJdKSYxKXwwLDA9PSgwfGZlW3FlKzQ0Pj4wXSkmJjA9PSgwfGZlW3FlKzg0Pj4wXSl8fCh3PTEpLGI9YisxfDA7aWYoIXcpe2lmKG0pe2tZKGN0LHJ0LGMsZixwLEEsbSk7YnJlYWt9VUYoY3QscnQsYyxmLHAsQSk7YnJlYWt9Zm9yKGgwKGdlPTB8cHMoVmU9MHxTWShsLEhlPTB8dnIo''@;'; put 'put ''MTU2KSksODU0NzgsMSksMTM3NDgzLDI4MCwxKSxrYyhnZSw4NzE3MSw4NzE4NSksaz0rX1sxNisoMHxhW3J0KzE2Pj4yXSk+PjNdLHBlPStfWzE2KygwfGFbY3QrMTY+PjJdKT4+M10scT0oRz0wPT0oMSZhWzExNisoMHxhWyhxZT1sKzE2fDApPj4yXSk+PjJdfDApKT9ydDpjdCxnZT0wfFlD''@;'; put 'put ''KGdlLEc9Rz9jdDpydCksYmU9MHxZQyhWZSxxKSxtPTAsUj0wOyEoKDB8Uik+PSgwfHApKTspe2Zvcih3PWMrKFIrZjw8Mil8MDswfGZlWzExMisodz0wfGFbKE09MTYrKEQ9MHxhW3c+PjJdKXwwKT4+Ml0pPj4wXTspdz13KzExNnwwO2I9KDB8YVsoMz09KDMmYVtEPj4yXXwwKT9EOkQrNDh8''@;'; put 'put ''MCkrNDA+PjJdKT09KDB8Ryk/MHxZNShWZSxnZSxiZSxEKTowfFk1KFZlLGJlLGdlLEQpLGFbMTIwKyh3PTB8YVtNPj4yXSk+PjJdPWIsbXx8KDA9PSgwfGZlW3crNDQ+PjBdKSYmMD09KDB8ZmVbdys4ND4+MF0pPyhhWzEyMCsoMHxhW2IrMTY+PjJdKT4+Ml09RCxtPWIpOm09MCksUj1SKzF8''@;'; put 'put ''MH1mb3IoVmwoUmU9bXx8MHxLYShWZSxnZSxiZSwwLDEpLDB8YVs0NzE3NF0sODU0ODIpLGFbMTQ0KyhNPTB8YVsobT1WZSsxNnwwKT4+Ml0pPj4yXT1hWzE0NCsoMHxhW3FlPj4yXSk+PjJdLGFbTSsxODg+PjJdPVZlLHI0KFZlLEEpLGZZKFZlKSxlVShWZSwwKSxxQShWZSwwKSxrSShWZSww''@;'; put 'put ''KSxNPTB8YVtxKzE2Pj4yXSxPZT0rKDB8fn5rKSxMZT0rKDB8fn4oLjUqKCtfWzE2KygwfGFbYmUrMTY+PjJdKT4+M10rICtfWyhSPTE2KyhEPTB8YVsocT1nZSsxNnwwKT4+Ml0pfDApPj4zXSkpKSxrPSsoMHx+fnBlKSxwZT0rKDB8fn4oLjUqKCtfWzE2KyhBPTB8YVsoRz1HKzE2fDApPj4y''@;'; put 'put ''XSk+PjNdLStfW0ErOTY+PjNdKyArX1tNKzE2Pj4zXSsgK19bTSs4OD4+M10pKSksTT1EKzI0fDAsbT0xOTIrKDB8YVttPj4yXSl8MDt3PTB8YVttPj4yXTspe2Rve2lmKCgwfHcpIT0oMHxnZSkpe2lmKGI9MjQrKG09MHxhW3crMTY+PjJdKXwwLCgwfHcpPT0oMHxiZSkpe19bYj4+M109ayxf''@;'; put 'put ''W20rMTY+PjNdPUxlO2JyZWFrfV9bYj4+M109cGU7YnJlYWt9X1tNPj4zXT1PZSxfW1I+PjNdPUxlLG09RH13aGlsZSgwKTttPW0rMTY0fDB9Zm9yKHdIKFZlKSxaNShWZSwwKSx0NChWZSksYj0wfGFbRz4+Ml0sbT0wfGFbcT4+Ml0sMSZhWzExNisoMHxhW3FlPj4yXSk+PjJdPyh3PW0rMjR8''@;'; put 'put ''MCxrPStfW20rMTY+PjNdKyArX1tiKzI0Pj4zXSk6KHc9bSsxNnwwLGs9K19bYisyND4+M10tK19bbSsyND4+M10pLF9bYnQ+PjNdPStfW2IrMTY+PjNdLStfW3c+PjNdLF9bYnQrOD4+M109ayxBPUhuKzE2fDAsZ2U9SG4rMzJ8MCxiZT1Ibis0OHwwLHE9MDshKCgwfHEpPj0oMHxwKSk7KXtm''@;'; put 'put ''b3IobT1jKyhxK2Y8PDIpfDA7MHxmZVsxMTIrKG09MHxhWyhHPTE2Kyh3PTB8YVttPj4yXSl8MCk+PjJdKT4+MF07KW09bSsxMTZ8MDtpZighKCgwfChEPTB8YVttKzEyMD4+Ml0pKT09KDB8UmUpJjA9PSgwfGFbMTIwKyhtPTB8YVsoUj1EKzE2fDApPj4yXSk+PjJdKSkpe2Zvcih3PTB8ZE4o''@;'; put 'put ''dywwfGFbKEQ9NCsoTT0wfGFbYVttKzg+PjJdPj4yXSl8MCk+PjJdKSxhW3crOD4+Ml09YVtNKzg+PjJdLG09dysxNnwwLERyPTEmYVsxMTYrKDB8YVtxZT4+Ml0pPj4yXSxhW1dlPj4yXT1hWyhiPU0rMTZ8MCk+PjJdLGFbV2UrND4+Ml09YVtiKzQ+PjJdLGFbV2UrOD4+Ml09YVtiKzg+PjJd''@;'; put 'put ''LGFbV2UrMTI+PjJdPWFbYisxMj4+Ml0sYVthdD4+Ml09YVtidD4+Ml0sYVthdCs0Pj4yXT1hW2J0KzQ+PjJdLGFbYXQrOD4+Ml09YVtidCs4Pj4yXSxhW2F0KzEyPj4yXT1hW2J0KzEyPj4yXSxjbChhbixXZSxhdCxEciksYVttPj4yXT1hW2FuPj4yXSxhW20rND4+Ml09YVthbis0Pj4yXSxh''@;'; put 'put ''W20rOD4+Ml09YVthbis4Pj4yXSxhW20rMTI+PjJdPWFbYW4rMTI+PjJdLGFbdysxMj4+Ml09YVtNKzEyPj4yXSxtPXcrMzJ8MCxiPTEmYVsxMTYrKDB8YVtxZT4+Ml0pPj4yXSxhW1dlPj4yXT1hWyhEcj1NKzMyfDApPj4yXSxhW1dlKzQ+PjJdPWFbRHIrND4+Ml0sYVtXZSs4Pj4yXT1hW0Ry''@;'; put 'put ''Kzg+PjJdLGFbV2UrMTI+PjJdPWFbRHIrMTI+PjJdLGFbYXQ+PjJdPWFbYnQ+PjJdLGFbYXQrND4+Ml09YVtidCs0Pj4yXSxhW2F0Kzg+PjJdPWFbYnQrOD4+Ml0sYVthdCsxMj4+Ml09YVtidCsxMj4+Ml0sY2woU24sV2UsYXQsYiksYVttPj4yXT1hW1NuPj4yXSxhW20rND4+Ml09YVtTbis0''@;'; put 'put ''Pj4yXSxhW20rOD4+Ml09YVtTbis4Pj4yXSxhW20rMTI+PjJdPWFbU24rMTI+PjJdLG09MDshKCgwfG0pPj0oMHxhW0Q+PjJdKSk7KXtpZihiPSgwfGFbdz4+Ml0pKyhtPDw0KXwwLERyPTEmYVsxMTYrKDB8YVtxZT4+Ml0pPj4yXSxhW1dlPj4yXT1hWyhKcj0oMHxhW00+PjJdKSsobTw8NCl8''@;'; put 'put ''MCk+PjJdLGFbV2UrND4+Ml09YVtKcis0Pj4yXSxhW1dlKzg+PjJdPWFbSnIrOD4+Ml0sYVtXZSsxMj4+Ml09YVtKcisxMj4+Ml0sYVthdD4+Ml09YVtidD4+Ml0sYVthdCs0Pj4yXT1hW2J0KzQ+PjJdLGFbYXQrOD4+Ml09YVtidCs4Pj4yXSxhW2F0KzEyPj4yXT1hW2J0KzEyPj4yXSxjbChT''@;'; put 'put ''dCxXZSxhdCxEciksYVtiPj4yXT1hW1N0Pj4yXSxhW2IrND4+Ml09YVtTdCs0Pj4yXSxhW2IrOD4+Ml09YVtTdCs4Pj4yXSxhW2IrMTI+PjJdPWFbU3QrMTI+PjJdLGFbSG4+PjJdPWFbU3Q+PjJdLGFbSG4rND4+Ml09YVtTdCs0Pj4yXSxhW0huKzg+PjJdPWFbU3QrOD4+Ml0sYVtIbisxMj4+''@;'; put 'put ''Ml09YVtTdCsxMj4+Ml0sKDB8KGI9bSsxfDApKT49KDB8YVtEPj4yXSkpe0VyPTQ4O2JyZWFrfURyPSgwfGFbdz4+Ml0pKyhiPDw0KXwwLEpyPTEmYVsxMTYrKDB8YVtxZT4+Ml0pPj4yXSxhW1dlPj4yXT1hWyhiPSgwfGFbTT4+Ml0pKyhiPDw0KXwwKT4+Ml0sYVtXZSs0Pj4yXT1hW2IrND4+''@;'; put 'put ''Ml0sYVtXZSs4Pj4yXT1hW2IrOD4+Ml0sYVtXZSsxMj4+Ml09YVtiKzEyPj4yXSxhW2F0Pj4yXT1hW2J0Pj4yXSxhW2F0KzQ+PjJdPWFbYnQrND4+Ml0sYVthdCs4Pj4yXT1hW2J0Kzg+PjJdLGFbYXQrMTI+PjJdPWFbYnQrMTI+PjJdLGNsKGt0LFdlLGF0LEpyKSxhW0RyPj4yXT1hW2t0Pj4y''@;'; put 'put ''XSxhW0RyKzQ+PjJdPWFba3QrND4+Ml0sYVtEcis4Pj4yXT1hW2t0Kzg+PjJdLGFbRHIrMTI+PjJdPWFba3QrMTI+PjJdLGFbQT4+Ml09YVtrdD4+Ml0sYVtBKzQ+PjJdPWFba3QrND4+Ml0sYVtBKzg+PjJdPWFba3QrOD4+Ml0sYVtBKzEyPj4yXT1hW2t0KzEyPj4yXSxKcj0oMHxhW3c+PjJd''@;'; put 'put ''KSsoKERyPW0rMnwwKTw8NCl8MCxiPTEmYVsxMTYrKDB8YVtxZT4+Ml0pPj4yXSxhW1dlPj4yXT1hWyhEcj0oMHxhW00+PjJdKSsoRHI8PDQpfDApPj4yXSxhW1dlKzQ+PjJdPWFbRHIrND4+Ml0sYVtXZSs4Pj4yXT1hW0RyKzg+PjJdLGFbV2UrMTI+PjJdPWFbRHIrMTI+PjJdLGFbYXQ+PjJd''@;'; put 'put ''PWFbYnQ+PjJdLGFbYXQrND4+Ml09YVtidCs0Pj4yXSxhW2F0Kzg+PjJdPWFbYnQrOD4+Ml0sYVthdCsxMj4+Ml09YVtidCsxMj4+Ml0sY2woc3QsV2UsYXQsYiksYVtKcj4+Ml09YVtzdD4+Ml0sYVtKcis0Pj4yXT1hW3N0KzQ+PjJdLGFbSnIrOD4+Ml09YVtzdCs4Pj4yXSxhW0pyKzEyPj4y''@;'; put 'put ''XT1hW3N0KzEyPj4yXSxhW2dlPj4yXT1hW3N0Pj4yXSxhW2dlKzQ+PjJdPWFbc3QrND4+Ml0sYVtnZSs4Pj4yXT1hW3N0Kzg+PjJdLGFbZ2UrMTI+PjJdPWFbc3QrMTI+PjJdLERyPTEmYVsxMTYrKDB8YVtxZT4+Ml0pPj4yXSxhW1dlPj4yXT1hWyhiPSgwfGFbTT4+Ml0pKygoSnI9bSszfDAp''@;'; put 'put ''PDw0KXwwKT4+Ml0sYVtXZSs0Pj4yXT1hW2IrND4+Ml0sYVtXZSs4Pj4yXT1hW2IrOD4+Ml0sYVtXZSsxMj4+Ml09YVtiKzEyPj4yXSxhW2F0Pj4yXT1hW2J0Pj4yXSxhW2F0KzQ+PjJdPWFbYnQrND4+Ml0sYVthdCs4Pj4yXT1hW2J0Kzg+PjJdLGFbYXQrMTI+PjJdPWFbYnQrMTI+PjJdLGNs''@;'; put 'put ''KEV0LFdlLGF0LERyKSxhW2JlPj4yXT1hW0V0Pj4yXSxhW2JlKzQ+PjJdPWFbRXQrND4+Ml0sYVtiZSs4Pj4yXT1hW0V0Kzg+PjJdLGFbYmUrMTI+PjJdPWFbRXQrMTI+PjJdLE5BKDE2KygwfGFbcWU+PjJdKXwwLEhuKSxtPUpyfTQ4PT0oMHxFcikmJihFcj0wKSwwfChtPTB8YVs5NisoMHxh''@;'; put 'put ''W0c+PjJdKT4+Ml0pJiYoSnI9bSs1NnwwLERyPTEmYVsxMTYrKDB8YVtxZT4+Ml0pPj4yXSxhW1dlPj4yXT1hWyhSPTU2KygwfGFbOTYrKDB8YVtSPj4yXSk+PjJdKXwwKT4+Ml0sYVtXZSs0Pj4yXT1hW1IrND4+Ml0sYVtXZSs4Pj4yXT1hW1IrOD4+Ml0sYVtXZSsxMj4+Ml09YVtSKzEyPj4y''@;'; put 'put ''XSxhW2F0Pj4yXT1hW2J0Pj4yXSxhW2F0KzQ+PjJdPWFbYnQrND4+Ml0sYVthdCs4Pj4yXT1hW2J0Kzg+PjJdLGFbYXQrMTI+PjJdPWFbYnQrMTI+PjJdLGNsKFp0LFdlLGF0LERyKSxhW0pyPj4yXT1hW1p0Pj4yXSxhW0pyKzQ+PjJdPWFbWnQrND4+Ml0sYVtKcis4Pj4yXT1hW1p0Kzg+PjJd''@;'; put 'put ''LGFbSnIrMTI+PjJdPWFbWnQrMTI+PjJdLGZlWzgxKyhKcj0wfGFbOTYrKDB8YVtHPj4yXSk+PjJdKT4+MF09MSxuNChsLEpyKSl9cT1xKzF8MH1VQyhWZSxIZSl9ZWxzZSBFcj0zfXdoaWxlKDApOzM9PSgwfEVyKSYmMD09KDB8YVs0NjczOF0pJiYoYVs0NjczOF09MSwkcigwLDg1MzU1LHVy''@;'; put 'put ''KSxFcj0wfHRpKGN0KSxEcj0wIT0oMHxTYyhsKSksSnI9MHx0aShydCksYVtIcj4+Ml09RXIsYVtIcis0Pj4yXT1Ecj8xMzc3Mzg6MTQxNzQ3LGFbSHIrOD4+Ml09SnIsJHIoMyw4NTQ2MSxIcikpLGxlPWZyfShsLHAsbSxBLEcsdyksbGU9cnR9ZnVuY3Rpb24gdTBlKGwsYyxmLHAsbSxBLHcp''@;'; put 'put ''e2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCxBfD0wLHd8PTA7dmFyIEV0LGFuLFNuLEhuLHVyLEhyLEVyLGZyLERyLEpyLExyLGwwLE9pLFJvLFRhLFphLGdhLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wLFZlPTAscWU9MCxy''@;'; put 'put ''dD0wLFdlPTAsYXQ9MCxTdD0wLGt0PTAsc3Q9MCxadD0wLGN0PTAsYnQ9MCxWaT0wLGxvPTAseGk9MDtpZihnYT1sZSxsZT1sZSsyNTc2fDAsZnI9Z2ErMjUyOHwwLGxvPWdhKzI1Njh8MCxNPWdhKzIxNzZ8MCxPaT1nYSsxODA4fDAsVGE9Z2ErMTcxMnwwLERyPWdhKzEwMTZ8MCxKcj1nYSsz''@;'; put 'put ''MjB8MCxMcj1nYSsyNTZ8MCxWaT1nYSsyNTY0fDAsUm89Z2ErMjU2MHwwLFZlPWdhKzI4OHwwLHFlPWdhKzIyNHwwLGFuPWdhKzE5MnwwLFNuPWdhKzE2MHwwLEhuPWdhKzEyOHwwLHVyPWdhKzk2fDAsSHI9Z2ErNjR8MCxFcj1nYSszMnwwLGwwPWdhLGFbKHBlPTE2KyhnZT1nYSsxOTA0fDAp''@;'; put 'put ''fDApPj4yXT1iPWdhKzIzNTJ8MCxhWyhEPU9pKzE2fDApPj4yXT1NLGFbKFphPVRhKzE2fDApPj4yXT1nYSsyZTMsMHxhWzQ2NzM0XXx8KGFbNDY3MzRdPTB8UW4oMzJlMyksYVs0NjczNV09MHxRbigzMmUzKSxhWzQ2NzM2XT0yZTMsYVs0NjczN109MmUzKSxSPTQ4KyhiZT0wfGFbcCsobTw8''@;'; put 'put ''Mik+PjJdKXwwLEc9YmUrLTQ4fDAscT1iZSsxNnwwLCgwfCgoMHwoYnQ9KDB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMHwoYnQ9MyZhW2JlPj4yXSkpP2JlOlIpKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDB8YnQpP2JlOkcpKzQwPj4yXSk+PjJdKT4+''@;'; put 'put ''Ml0pfDApKT4tMT9idDowLWJ0fDApKTw9MSlpZigzMiZhWzE2NCsoYj0wfGFbcT4+Ml0pPj4yXSl7Z28oMHwoTT0wfGFbcGU+PjJdKSwwfGIsMTc2KSxSZT1iZSxIZT0oTGU9Z2UpKzQ4fDA7ZG97YVtMZT4+Ml09YVtSZT4+Ml0sTGU9TGUrNHwwLFJlPVJlKzR8MH13aGlsZSgoMHxMZSk8KDB8''@;'; put 'put ''SGUpKTthW3BlPj4yXT1NLGFbKDM9PSgwfChMZT0zJmFbZ2U+PjJdKSk/Z2U6Z2UrNDh8MCkrNDA+PjJdPWFbKDI9PSgzJmFbYmU+PjJdfDApP2JlOkcpKzQwPj4yXSxhWygyPT0oMHxMZSk/Z2U6Z2UrLTQ4fDApKzQwPj4yXT1hWygzPT0oMyZhW2JlPj4yXXwwKT9iZTpSKSs0MD4+Ml0sUmU9''@;'; put 'put ''NTYrKDB8YVtxPj4yXSl8MCxIZT00MCsoTGU9TSsxNnwwKXwwO2Rve2FbTGU+PjJdPWFbUmU+PjJdLExlPUxlKzR8MCxSZT1SZSs0fDB9d2hpbGUoKDB8TGUpPCgwfEhlKSk7UmU9MTYrKDB8YVtxPj4yXSl8MCxIZT00MCsoTGU9NTYrKGI9MHxhW3BlPj4yXSl8MCl8MDtkb3thW0xlPj4yXT1h''@;'; put 'put ''W1JlPj4yXSxMZT1MZSs0fDAsUmU9UmUrNHwwfXdoaWxlKCgwfExlKTwoMHxIZSkpO2ZlW2IrMTEyPj4wXT0xLE09MCxjdD0xMn1lbHNlIGJ0PWJlLE09MDtlbHNle2dvKDB8YiwwfGFbcT4+Ml0sMTc2KSxSZT1iZSxIZT0oTGU9Z2UpKzQ4fDA7ZG97YVtMZT4+Ml09YVtSZT4+Ml0sTGU9TGUr''@;'; put 'put ''NHwwLFJlPVJlKzR8MH13aGlsZSgoMHxMZSk8KDB8SGUpKTtSZT1SLEhlPTQ4KyhMZT1nZSs0OHwwKXwwO2Rve2FbTGU+PjJdPWFbUmU+PjJdLExlPUxlKzR8MCxSZT1SZSs0fDB9d2hpbGUoKDB8TGUpPCgwfEhlKSk7aWYoYVtwZT4+Ml09YiwzMiZhWzE2NCsoYj0wfGFbcT4+Ml0pPj4yXSl7''@;'; put 'put ''Z28oMHwoTT0wfGFbRD4+Ml0pLDB8YiwxNzYpLFJlPWJlLEhlPShMZT1PaSkrNDh8MDtkb3thW0xlPj4yXT1hW1JlPj4yXSxMZT1MZSs0fDAsUmU9UmUrNHwwfXdoaWxlKCgwfExlKTwoMHxIZSkpO2FbRD4+Ml09TSxhWygzPT0oMHwoTGU9MyZhW09pPj4yXSkpP09pOk9pKzQ4fDApKzQwPj4y''@;'; put 'put ''XT1hWygyPT0oMyZhW2JlPj4yXXwwKT9iZTpHKSs0MD4+Ml0sYVsoMj09KDB8TGUpP09pOk9pKy00OHwwKSs0MD4+Ml09YVsoMz09KDMmYVtiZT4+Ml18MCk/YmU6UikrNDA+PjJdLFJlPTU2KygwfGFbcT4+Ml0pfDAsSGU9NDArKExlPU0rMTZ8MCl8MDtkb3thW0xlPj4yXT1hW1JlPj4yXSxM''@;'; put 'put ''ZT1MZSs0fDAsUmU9UmUrNHwwfXdoaWxlKCgwfExlKTwoMHxIZSkpO1JlPTE2KygwfGFbcT4+Ml0pfDAsSGU9NDArKExlPTU2KyhiPTB8YVtEPj4yXSl8MCl8MDtkb3thW0xlPj4yXT1hW1JlPj4yXSxMZT1MZSs0fDAsUmU9UmUrNHwwfXdoaWxlKCgwfExlKTwoMHxIZSkpO2ZlW2IrMTEyPj4w''@;'; put 'put ''XT0xLGFbYisxMTY+PjJdPWJlLGFbKDM9PSgzJihEPTB8YVtnZT4+Ml0pfDApP2dlOmdlKzQ4fDApKzQwPj4yXT1hWygyPT0oMyZhW2JlPj4yXXwwKT9iZTpHKSs0MD4+Ml0sUmU9NTYrKDB8YVtxPj4yXSl8MCxIZT00MCsoTGU9MTYrKDB8YVtwZT4+Ml0pfDApfDA7ZG97YVtMZT4+Ml09YVtS''@;'; put 'put ''ZT4+Ml0sTGU9TGUrNHwwLFJlPVJlKzR8MH13aGlsZSgoMHxMZSk8KDB8SGUpKX1lbHNle2dvKDB8TSwwfGIsMTc2KSxSZT1iZSxIZT0oTGU9T2kpKzQ4fDA7ZG97YVtMZT4+Ml09YVtSZT4+Ml0sTGU9TGUrNHwwLFJlPVJlKzR8MH13aGlsZSgoMHxMZSk8KDB8SGUpKTthW0Q+PjJdPU0sYVso''@;'; put 'put ''Mz09KDMmKEQ9MHxhW2dlPj4yXSl8MCk/Z2U6Z2UrNDh8MCkrNDA+PjJdPWFbKDM9PSgzJmFbYmU+PjJdfDApP2JlOlIpKzQwPj4yXSxSZT1SLEhlPTQ4KyhMZT1PaSs0OHwwKXwwO2Rve2FbTGU+PjJdPWFbUmU+PjJdLExlPUxlKzR8MCxSZT1SZSs0fDB9d2hpbGUoKDB8TGUpPCgwfEhlKSl9''@;'; put 'put ''Zm9yKGI9MHx6NShiZSk7TT0wfGFbMTcyKygwfGFbYisxNj4+Ml0pPj4yXTspYj1NO2FbKDI9PSgzJkR8MCk/Z2U6Z2UrLTQ4fDApKzQwPj4yXT1hWygyPT0oMyZhW2I+PjJdfDApP2I6YistNDh8MCkrNDA+PjJdLGZlWzg0KyhiPTB8YVtwZT4+Ml0pPj4wXT0wLGZlW2IrMTEyPj4wXT0xLGFb''@;'; put 'put ''KE09Yis1NnwwKT4+Ml09MCxhW00rND4+Ml09MCxhW00rOD4+Ml09MCxhW00rMTI+PjJdPTAsTT0xLGN0PTEyfTEyPT0oMHxjdCkmJihhW2IrMTE2Pj4yXT1iZSxidD1nZSksY3Q9KEV0PTI9PSgwfHcpKSYmKE9lPTB8ZnVuY3Rpb24gaDBlKGwsYyxmLHApe2x8PTAsZnw9MCxwfD0wO3ZhciBN''@;'; put 'put ''LEQsRyxxLHBlLE9lLExlLFJlLG09MCxBPTAsdz0wLGI9MCxrPTAsUj0wLGdlPTAsYmU9MCxIZT0wO2ZvcihSZT1sZSxsZT1sZSs5NnwwLEc9UmUrODB8MCxwZT1SZSs2NHwwLHE9UmUrNDh8MCxiZT1SZSszMnwwLE9lPVJlKzE2fDAsTGU9UmUsaz1jfD0wOzB8ZmVbMTEyKyhtPTB8YVsoZ2U9''@;'; put 'put ''aysxNnwwKT4+Ml0pPj4wXTspaz0wfGFbbSsxMTY+PjJdO3N3aXRjaChEPTB8YVsoMj09KDB8KG09MyZhW2s+PjJdKSk/azprKy00OHwwKSs0MD4+Ml0sbT0wfGFbKDM9PSgwfG0pP2s6ays0OHwwKSs0MD4+Ml0sMHwoKDB8KEhlPSgwfGFbMjMyKygwfGFbKGs9RCsxNnwwKT4+Ml0pPj4yXSkt''@;'; put 'put ''KDB8YVsyMzIrKDB8YVsoTT1tKzE2fDApPj4yXSk+PjJdKXwwKSk+LTE/SGU6MC1IZXwwKSl7Y2FzZSAxOm09MDticmVhaztjYXNlIDI6MSZmZVsxMTMrKDB8YVsxNisoMHxhW2wrNjA+PjJdKT4+Ml0pPj4wXT9tPTA6Uj02O2JyZWFrO2RlZmF1bHQ6Uj02fWRve2lmKDY9PSgwfFIpKXtpZigo''@;'; put 'put ''MHxhWygzPT0oMyZhW2M+PjJdfDApP2M6Yys0OHwwKSs0MD4+Ml0pPT0oMHxtKT8oYVtwPj4yXT1ELFI9MTYrKDB8YVtnZT4+Ml0pfDAsYVtwZT4+Ml09YVsoSGU9MTYrKDB8YVtNPj4yXSl8MCk+PjJdLGFbcGUrND4+Ml09YVtIZSs0Pj4yXSxhW3BlKzg+PjJdPWFbSGUrOD4+Ml0sYVtwZSsx''@;'; put 'put ''Mj4+Ml09YVtIZSsxMj4+Ml0sYVtHPj4yXT1hW1I+PjJdLGFbRys0Pj4yXT1hW1IrND4+Ml0sYVtHKzg+PjJdPWFbUis4Pj4yXSxhW0crMTI+PjJdPWFbUisxMj4+Ml0sQnUoYmUscGUsRyksSGU9NTYrKDB8YVtnZT4+Ml0pfDAsYVtwZT4+Ml09YVsoUj0xNisoMHxhW2s+PjJdKXwwKT4+Ml0s''@;'; put 'put ''YVtwZSs0Pj4yXT1hW1IrND4+Ml0sYVtwZSs4Pj4yXT1hW1IrOD4+Ml0sYVtwZSsxMj4+Ml09YVtSKzEyPj4yXSxhW0c+PjJdPWFbSGU+PjJdLGFbRys0Pj4yXT1hW0hlKzQ+PjJdLGFbRys4Pj4yXT1hW0hlKzg+PjJdLGFbRysxMj4+Ml09YVtIZSsxMj4+Ml0sQnUoT2UscGUsRykpOihhW3A+''@;'; put 'put ''PjJdPW0sUj01NisoMHxhW2dlPj4yXSl8MCxhW3BlPj4yXT1hWyhIZT0xNisoMHxhW2s+PjJdKXwwKT4+Ml0sYVtwZSs0Pj4yXT1hW0hlKzQ+PjJdLGFbcGUrOD4+Ml09YVtIZSs4Pj4yXSxhW3BlKzEyPj4yXT1hW0hlKzEyPj4yXSxhW0c+PjJdPWFbUj4+Ml0sYVtHKzQ+PjJdPWFbUis0Pj4y''@;'; put 'put ''XSxhW0crOD4+Ml09YVtSKzg+PjJdLGFbRysxMj4+Ml09YVtSKzEyPj4yXSxCdShiZSxwZSxHKSxIZT0xNisoMHxhW2dlPj4yXSl8MCxhW3BlPj4yXT1hWyhSPTE2KygwfGFbTT4+Ml0pfDApPj4yXSxhW3BlKzQ+PjJdPWFbUis0Pj4yXSxhW3BlKzg+PjJdPWFbUis4Pj4yXSxhW3BlKzEyPj4y''@;'; put 'put ''XT1hW1IrMTI+PjJdLGFbRz4+Ml09YVtIZT4+Ml0sYVtHKzQ+PjJdPWFbSGUrND4+Ml0sYVtHKzg+PjJdPWFbSGUrOD4+Ml0sYVtHKzEyPj4yXT1hW0hlKzEyPj4yXSxCdShPZSxwZSxHKSksIShtPTB8YVs5NisoMHxhW2dlPj4yXSk+PjJdKSl7bT1mKzE2fDAsYVtmPj4yXT1hW2JlPj4yXSxh''@;'; put 'put ''W2YrND4+Ml09YVtiZSs0Pj4yXSxhW2YrOD4+Ml09YVtiZSs4Pj4yXSxhW2YrMTI+PjJdPWFbYmUrMTI+PjJdLGFbbT4+Ml09YVtiZT4+Ml0sYVttKzQ+PjJdPWFbYmUrND4+Ml0sYVttKzg+PjJdPWFbYmUrOD4+Ml0sYVttKzEyPj4yXT1hW2JlKzEyPj4yXSxtPWYrNDh8MCxhWyhIZT1mKzMy''@;'; put 'put ''fDApPj4yXT1hW09lPj4yXSxhW0hlKzQ+PjJdPWFbT2UrND4+Ml0sYVtIZSs4Pj4yXT1hW09lKzg+PjJdLGFbSGUrMTI+PjJdPWFbT2UrMTI+PjJdLGFbbT4+Ml09YVtPZT4+Ml0sYVttKzQ+PjJdPWFbT2UrND4+Ml0sYVttKzg+PjJdPWFbT2UrOD4+Ml0sYVttKzEyPj4yXT1hW09lKzEyPj4y''@;'; put 'put ''XSxtPTQ7YnJlYWt9dz0rX1ttKzI0Pj4zXSxBPStfW20rMzI+PjNdLGI9KFI9MD09KDEmYVsxMTYrKDB8YVsxNisoMHxjcihEKSk+PjJdKT4+Ml18MCkpP0E6dyxhW0xlPj4yXT1hWyhIZT01NisoMHxhWzk2KygwfGFbZ2U+PjJdKT4+Ml0pfDApPj4yXSxhW0xlKzQ+PjJdPWFbSGUrND4+Ml0s''@;'; put 'put ''YVtMZSs4Pj4yXT1hW0hlKzg+PjJdLGFbTGUrMTI+PjJdPWFbSGUrMTI+PjJdLGFbcT4+Ml09YVtPZT4+Ml0sYVtxKzQ+PjJdPWFbT2UrND4+Ml0sYVtxKzg+PjJdPWFbT2UrOD4+Ml0sYVtxKzEyPj4yXT1hW09lKzEyPj4yXSxhW3BlPj4yXT1hW2JlPj4yXSxhW3BlKzQ+PjJdPWFbYmUrND4+''@;'; put 'put ''Ml0sYVtwZSs4Pj4yXT1hW2JlKzg+PjJdLGFbcGUrMTI+PjJdPWFbYmUrMTI+PjJdLGFbRz4+Ml09YVtIZT4+Ml0sYVtHKzQ+PjJdPWFbSGUrND4+Ml0sYVtHKzg+PjJdPWFbSGUrOD4+Ml0sYVtHKzEyPj4yXT1hW0hlKzEyPj4yXSxIZT0wPT0oMHxZRihxLHBlLEcpKSxBPS41KihSP3c6QSks''@;'; put 'put ''dz0rX1tMZT4+M10sSGU/KF9bTGU+PjNdPXctQSxfWyhIZT1MZSs4fDApPj4zXT0rX1tIZT4+M10rLjUqYik6KF9bTGU+PjNdPXcrQSxfWyhIZT1MZSs4fDApPj4zXT0rX1tIZT4+M10tLjUqYiksbT1mKzE2fDAsYVtmPj4yXT1hW2JlPj4yXSxhW2YrND4+Ml09YVtiZSs0Pj4yXSxhW2YrOD4+''@;'; put 'put ''Ml09YVtiZSs4Pj4yXSxhW2YrMTI+PjJdPWFbYmUrMTI+PjJdLGFbbT4+Ml09YVtiZT4+Ml0sYVttKzQ+PjJdPWFbYmUrND4+Ml0sYVttKzg+PjJdPWFbYmUrOD4+Ml0sYVttKzEyPj4yXT1hW2JlKzEyPj4yXSxtPWYrMzJ8MCxIZT1mKzQ4fDAsYVsoYmU9Zis2NHwwKT4+Ml09YVtMZT4+Ml0s''@;'; put 'put ''YVtiZSs0Pj4yXT1hW0xlKzQ+PjJdLGFbYmUrOD4+Ml09YVtMZSs4Pj4yXSxhW2JlKzEyPj4yXT1hW0xlKzEyPj4yXSxhW0hlPj4yXT1hW0xlPj4yXSxhW0hlKzQ+PjJdPWFbTGUrND4+Ml0sYVtIZSs4Pj4yXT1hW0xlKzg+PjJdLGFbSGUrMTI+PjJdPWFbTGUrMTI+PjJdLGFbbT4+Ml09YVtM''@;'; put 'put ''ZT4+Ml0sYVttKzQ+PjJdPWFbTGUrND4+Ml0sYVttKzg+PjJdPWFbTGUrOD4+Ml0sYVttKzEyPj4yXT1hW0xlKzEyPj4yXSxtPWYrODB8MCxhWyhIZT1mKzk2fDApPj4yXT1hW09lPj4yXSxhW0hlKzQ+PjJdPWFbT2UrND4+Ml0sYVtIZSs4Pj4yXT1hW09lKzg+PjJdLGFbSGUrMTI+PjJdPWFb''@;'; put 'put ''T2UrMTI+PjJdLGFbbT4+Ml09YVtPZT4+Ml0sYVttKzQ+PjJdPWFbT2UrND4+Ml0sYVttKzg+PjJdPWFbT2UrOD4+Ml0sYVttKzEyPj4yXT1hW09lKzEyPj4yXSxtPTd9fXdoaWxlKDApO3JldHVybiBsZT1SZSwwfG19KGwsYnQsMHxhWzQ2NzM0XSxsbyksYVtSbz4+Ml09T2UsMCE9KDB8T2Up''@;'; put 'put ''KT82MzoxNTtlOmRve2lmKDE1PT0oMHxjdCkpe3N0PTEwPT0oMHx3KSxhW1JvPj4yXT0wLGI9MHxhWygzPT0oMHwoRD0zJmFbYnQ+PjJdKSk/YnQ6YnQrNDh8MCkrNDA+PjJdLGFbbG8+PjJdPUQ9MHxhWygyPT0oMHxEKT9idDpidCstNDh8MCkrNDA+PjJdLEc1KFZlLGwsYyxiLDAsYnQpLGFb''@;'; put 'put ''RHI+PjJdPWFbVmU+PjJdLGFbRHIrND4+Ml09YVtWZSs0Pj4yXSxhW0RyKzg+PjJdPWFbVmUrOD4+Ml0sYVtEcisxMj4+Ml09YVtWZSsxMj4+Ml0sYVtEcisxNj4+Ml09YVtWZSsxNj4+Ml0sYVtEcisyMD4+Ml09YVtWZSsyMD4+Ml0sYVtEcisyND4+Ml09YVtWZSsyND4+Ml0sYVtEcisyOD4+''@;'; put 'put ''Ml09YVtWZSsyOD4+Ml0sYVtMcj4+Ml09YVtWZT4+Ml0sYVtMcis0Pj4yXT1hW1ZlKzQ+PjJdLGFbTHIrOD4+Ml09YVtWZSs4Pj4yXSxhW0xyKzEyPj4yXT1hW1ZlKzEyPj4yXSxhW0xyKzE2Pj4yXT1hW1ZlKzE2Pj4yXSxhW0xyKzIwPj4yXT1hW1ZlKzIwPj4yXSxuRChmLGJ0LDEsRHIsMHxX''@;'; put 'put ''QyhiKSksX1soYXQ9THIrMjR8MCk+PjNdPStfW0RyKzU2KygoWnQ9KDB8YVsocnQ9RHIrNTJ8MCk+PjJdKS0xfDApPDw1KSsyND4+M10sX1soU3Q9THIrOHwwKT4+M109K19bRHIrNTYrKFp0PDw1KSs4Pj4zXSxrPStfWzI0KyhadD0wfGFbYisxNj4+Ml0pPj4zXS0rX1soMHxhWzE5NisoMHxh''@;'; put 'put ''WyhrdD1sKzE2fDApPj4yXSk+PjJdKSsoYVtadCsyMzI+PjJdPDw2KSsxNj4+M10sYVtmcj4+Ml09YVtMcj4+Ml0sYVtmcis0Pj4yXT1hW0xyKzQ+PjJdLGFbZnIrOD4+Ml09YVtMcis4Pj4yXSxhW2ZyKzEyPj4yXT1hW0xyKzEyPj4yXSxhW2ZyKzE2Pj4yXT1hW0xyKzE2Pj4yXSxhW2ZyKzIw''@;'; put 'put ''Pj4yXT1hW0xyKzIwPj4yXSxhW2ZyKzI0Pj4yXT1hW0xyKzI0Pj4yXSxhW2ZyKzI4Pj4yXT1hW0xyKzI4Pj4yXSxLQShxZSxmciwxLGspLGFbTHI+PjJdPWFbcWU+PjJdLGFbTHIrND4+Ml09YVtxZSs0Pj4yXSxhW0xyKzg+PjJdPWFbcWUrOD4+Ml0sYVtMcisxMj4+Ml09YVtxZSsxMj4+Ml0s''@;'; put 'put ''YVtMcisxNj4+Ml09YVtxZSsxNj4+Ml0sYVtMcisyMD4+Ml09YVtxZSsyMD4+Ml0sYVtMcisyND4+Ml09YVtxZSsyND4+Ml0sYVtMcisyOD4+Ml09YVtxZSsyOD4+Ml0sK19bTHI+PjNdPCtfWyhxZT1McisxNnwwKT4+M10mJitfW1N0Pj4zXTwrX1thdD4+M10mJihhW3J0Pj4yXT0xKyhadD0w''@;'; put 'put ''fGFbcnQ+PjJdKSxhWyhadD1Ecis1NisoWnQ8PDUpfDApPj4yXT1hW0xyPj4yXSxhW1p0KzQ+PjJdPWFbTHIrND4+Ml0sYVtadCs4Pj4yXT1hW0xyKzg+PjJdLGFbWnQrMTI+PjJdPWFbTHIrMTI+PjJdLGFbWnQrMTY+PjJdPWFbTHIrMTY+PjJdLGFbWnQrMjA+PjJdPWFbTHIrMjA+PjJdLGFb''@;'; put 'put ''WnQrMjQ+PjJdPWFbTHIrMjQ+PjJdLGFbWnQrMjg+PjJdPWFbTHIrMjg+PjJdKSxMZT1sKzYwfDAsV2U9SnIrNTJ8MCxSZT1mKzU2fDAsSGU9Zis2OXwwLHc9ZisxNnwwLFZlPWYrMjl8MCxadD1idCxHPTAscT0tMTt0OmZvcig7Oyl7Zm9yKHBlPWIsZ2U9MCxiPTAsYmU9WnQ7Oyl7aWYoT2U9''@;'; put 'put ''RCwxIT0oMHxmZVsxNTYrKDB8YVsoUj1EKSsxNj4+Ml0pPj4wXSl8fCgwfF9vWzYzJmFbNDMyNV1dKFIpKTw8MjQ+PjI0KWJyZWFrIHQ7aWYoRD0xfGdlLHhpPTE1MzcyMCsoZ2U8PDUpfDAsc0koYW4sYyxsLDB8YVsyMzIrKDB8YVtwZSsxNj4+Ml0pPj4yXSksYVt4aT4+Ml09YVthbj4+Ml0s''@;'; put 'put ''YVt4aSs0Pj4yXT1hW2FuKzQ+PjJdLGFbeGkrOD4+Ml09YVthbis4Pj4yXSxhW3hpKzEyPj4yXT1hW2FuKzEyPj4yXSxhW3hpKzE2Pj4yXT1hW2FuKzE2Pj4yXSxhW3hpKzIwPj4yXT1hW2FuKzIwPj4yXSxhW3hpKzI0Pj4yXT1hW2FuKzI0Pj4yXSxhW3hpKzI4Pj4yXT1hW2FuKzI4Pj4yXSxi''@;'; put 'put ''fHwoRz0oYj0oMHwoRz0wfGQwZShSKSkpPCgzKyhmZVsxMTMrKDB8YVsxNisoMHxhW0xlPj4yXSk+PjJdKT4+MF08PDEmMikmMjU1fDApKT9HOkcrLTJ8MCxxPWI/cToxLGI9MSYoMV5iKSksISgwPT0oMHxiKXwoMHxxKT4wKSlicmVhazt4aT0xNTM3MjArKEQ8PDUpfDAsRzUoU24sbCxjLFIs''@;'; put 'put ''YmUsMHxhW2FbMTgwKygwfGFbUisxNj4+Ml0pPj4yXT4+Ml0pLGFbeGk+PjJdPWFbU24+PjJdLGFbeGkrND4+Ml09YVtTbis0Pj4yXSxhW3hpKzg+PjJdPWFbU24rOD4+Ml0sYVt4aSsxMj4+Ml09YVtTbisxMj4+Ml0sYVt4aSsxNj4+Ml09YVtTbisxNj4+Ml0sYVt4aSsyMD4+Ml09YVtTbisy''@;'; put 'put ''MD4+Ml0sYVt4aSsyND4+Ml09YVtTbisyND4+Ml0sYVt4aSsyOD4+Ml09YVtTbisyOD4+Ml0scGU9MHxhWygzPT0oMHwoRD0zJmFbKHhpPTB8YVthWzE4MCsoMHxhW09lKzE2Pj4yXSk+PjJdPj4yXSk+PjJdKSk/eGk6eGkrNDh8MCkrNDA+PjJdLGFbbG8+PjJdPUQ9MHxhWygyPT0oMHxEKT94''@;'; put 'put ''aTp4aSstNDh8MCkrNDA+PjJdLGdlPWdlKzJ8MCxxPXErLTF8MCxiZT14aX1pZihHNShIbixsLGMsUixiZSwwfGFbYVsxODArKDB8YVtSKzE2Pj4yXSk+PjJdPj4yXSksYVtKcj4+Ml09YVtIbj4+Ml0sYVtKcis0Pj4yXT1hW0huKzQ+PjJdLGFbSnIrOD4+Ml09YVtIbis4Pj4yXSxhW0pyKzEy''@;'; put 'put ''Pj4yXT1hW0huKzEyPj4yXSxhW0pyKzE2Pj4yXT1hW0huKzE2Pj4yXSxhW0pyKzIwPj4yXT1hW0huKzIwPj4yXSxhW0pyKzI0Pj4yXT1hW0huKzI0Pj4yXSxhW0pyKzI4Pj4yXT1hW0huKzI4Pj4yXSxyRChmLGJlLDEsSnIsMHxXQygwfGFbKDI9PSgzJmFbYmU+PjJdfDApP2JlOmJlKy00OHww''@;'; put 'put ''KSs0MD4+Ml0pKSxrPStfWygwfGFbMTk2KygwfGFba3Q+PjJdKT4+Ml0pKyhhWzIzMisoZ2U9MHxhW09lKzE2Pj4yXSk+PjJdPDw2KSsyND4+M10rICtfW2dlKzI0Pj4zXSxhW2ZyPj4yXT1hWyh4aT1Kcis1NisoKDB8YVtXZT4+Ml0pLTE8PDUpfDApPj4yXSxhW2ZyKzQ+PjJdPWFbeGkrND4+''@;'; put 'put ''Ml0sYVtmcis4Pj4yXT1hW3hpKzg+PjJdLGFbZnIrMTI+PjJdPWFbeGkrMTI+PjJdLGFbZnIrMTY+PjJdPWFbeGkrMTY+PjJdLGFbZnIrMjA+PjJdPWFbeGkrMjA+PjJdLGFbZnIrMjQ+PjJdPWFbeGkrMjQ+PjJdLGFbZnIrMjg+PjJdPWFbeGkrMjg+PjJdLEtBKExyLGZyLDQsayksK19bTHI+''@;'; put 'put ''PjNdPCtfW3FlPj4zXSYmK19bU3Q+PjNdPCtfW2F0Pj4zXSYmKGFbV2U+PjJdPTErKHhpPTB8YVtXZT4+Ml0pLGFbKHhpPUpyKzU2Kyh4aTw8NSl8MCk+PjJdPWFbTHI+PjJdLGFbeGkrND4+Ml09YVtMcis0Pj4yXSxhW3hpKzg+PjJdPWFbTHIrOD4+Ml0sYVt4aSsxMj4+Ml09YVtMcisxMj4+''@;'; put 'put ''Ml0sYVt4aSsxNj4+Ml09YVtMcisxNj4+Ml0sYVt4aSsyMD4+Ml09YVtMcisyMD4+Ml0sYVt4aSsyND4+Ml09YVtMcisyND4+Ml0sYVt4aSsyOD4+Ml09YVtMcisyOD4+Ml0pLF9bUmU+PjNdPTEuNTcwNzk2MzI2Nzk0ODk2NixmZVtIZT4+MF09MSx5WShmLFp0LGJlLERyLEpyLEQpLHN0Pyhi''@;'; put 'put ''PTB8X3koZixWaSksRD0wfGFbVmk+PjJdLGN0PTMzKTooYj0wfGdrKGYsVmkpLEV0JigwfChEPTB8YVtWaT4+Ml0pKT40PyhhWyh4aT1iKzE2fDApPj4yXT1hW2I+PjJdLGFbeGkrND4+Ml09YVtiKzQ+PjJdLGFbeGkrOD4+Ml09YVtiKzg+PjJdLGFbeGkrMTI+PjJdPWFbYisxMj4+Ml0sYVso''@;'; put 'put ''eGk9YiszMnwwKT4+Ml09YVsoRD1iKyhEKy0xPDw0KXwwKT4+Ml0sYVt4aSs0Pj4yXT1hW0QrND4+Ml0sYVt4aSs4Pj4yXT1hW0QrOD4+Ml0sYVt4aSsxMj4+Ml09YVtEKzEyPj4yXSxyMShiKzQ4fDAsMHxELDE2KSxhW1ZpPj4yXT00LEQ9NCk6Y3Q9MzMpLDMzPT0oMHxjdCkmJihjdD0wLCFE''@;'; put 'put ''KSlicmVhayBlO2ZvcigoMHwoUj0oYmU9MHxhW1JvPj4yXSkrRHwwKSk+KDB8YVs0NjczNl0pPyhhWzQ2NzM2XT1SPDwxLGdlPTB8VjAoMHxhWzQ2NzM0XSxSPDw1KSxhWzQ2NzM0XT1nZSxEPTB8YVtWaT4+Ml0pOmdlPTB8YVs0NjczNF0scGU9MCxSPWJlOyEoKDB8cGUpPj0oMHxEKSk7KWFb''@;'; put 'put ''KHhpPWdlKyhSPDw0KXwwKT4+Ml09YVsoYmU9YisocGU8PDQpfDApPj4yXSxhW3hpKzQ+PjJdPWFbYmUrND4+Ml0sYVt4aSs4Pj4yXT1hW2JlKzg+PjJdLGFbeGkrMTI+PjJdPWFbYmUrMTI+PjJdLHBlPXBlKzF8MCxSPVIrMXwwO2FbUm8+PjJdPVIsRD0wfGpsKDB8YVthWzE4MCsoMHxhW09l''@;'; put 'put ''KzE2Pj4yXSk+PjJdPj4yXSxHLGdlLFJvKSx3WShadCxmKSxiPTB8YVsoMz09KDB8KFI9MyZhW0Q+PjJdKSk/RDpEKzQ4fDApKzQwPj4yXSxhW2xvPj4yXT1SPTB8YVsoMj09KDB8Uik/RDpEKy00OHwwKSs0MD4+Ml0sRzUodXIsbCxjLGIsMHxhW2FbMTcyKygwfGFbKFp0PWIrMTZ8MCk+PjJd''@;'; put 'put ''KT4+Ml0+PjJdLEQpLGFbRHI+PjJdPWFbdXI+PjJdLGFbRHIrND4+Ml09YVt1cis0Pj4yXSxhW0RyKzg+PjJdPWFbdXIrOD4+Ml0sYVtEcisxMj4+Ml09YVt1cisxMj4+Ml0sYVtEcisxNj4+Ml09YVt1cisxNj4+Ml0sYVtEcisyMD4+Ml09YVt1cisyMD4+Ml0sYVtEcisyND4+Ml09YVt1cisy''@;'; put 'put ''ND4+Ml0sYVtEcisyOD4+Ml09YVt1cisyOD4+Ml0sbkQoZixELDEsRHIsMHxXQyhiKSksaz0rX1syNCsoWnQ9MHxhW1p0Pj4yXSk+PjNdLStfWygwfGFbMTk2KygwfGFba3Q+PjJdKT4+Ml0pKyhhW1p0KzIzMj4+Ml08PDYpKzE2Pj4zXSxhW2ZyPj4yXT1hWyh4aT1Ecis1NisoKDB8YVtydD4+''@;'; put 'put ''Ml0pLTE8PDUpfDApPj4yXSxhW2ZyKzQ+PjJdPWFbeGkrND4+Ml0sYVtmcis4Pj4yXT1hW3hpKzg+PjJdLGFbZnIrMTI+PjJdPWFbeGkrMTI+PjJdLGFbZnIrMTY+PjJdPWFbeGkrMTY+PjJdLGFbZnIrMjA+PjJdPWFbeGkrMjA+PjJdLGFbZnIrMjQ+PjJdPWFbeGkrMjQ+PjJdLGFbZnIrMjg+''@;'; put 'put ''PjJdPWFbeGkrMjg+PjJdLEtBKExyLGZyLDEsayksK19bTHI+PjNdPCtfW3FlPj4zXSYmK19bU3Q+PjNdPCtfW2F0Pj4zXSYmKGFbcnQ+PjJdPTErKHhpPTB8YVtydD4+Ml0pLGFbKHhpPURyKzU2Kyh4aTw8NSl8MCk+PjJdPWFbTHI+PjJdLGFbeGkrND4+Ml09YVtMcis0Pj4yXSxhW3hpKzg+''@;'; put 'put ''PjJdPWFbTHIrOD4+Ml0sYVt4aSsxMj4+Ml09YVtMcisxMj4+Ml0sYVt4aSsxNj4+Ml09YVtMcisxNj4+Ml0sYVt4aSsyMD4+Ml09YVtMcisyMD4+Ml0sYVt4aSsyND4+Ml09YVtMcisyND4+Ml0sYVt4aSsyOD4+Ml09YVtMcisyOD4+Ml0pLF9bdz4+M109LTEuNTcwNzk2MzI2Nzk0ODk2Nixm''@;'; put 'put ''ZVtWZT4+MF09MSxadD1ELEQ9Un1pZihiPTF8Z2UscT0xNTM3MjArKGdlPDw1KXwwLHNJKEhyLGMsbCwwfGFbMjMyKygwfGFbcGUrMTY+PjJdKT4+Ml0pLGFbcT4+Ml09YVtIcj4+Ml0sYVtxKzQ+PjJdPWFbSHIrND4+Ml0sYVtxKzg+PjJdPWFbSHIrOD4+Ml0sYVtxKzEyPj4yXT1hW0hyKzEy''@;'; put 'put ''Pj4yXSxhW3ErMTY+PjJdPWFbSHIrMTY+PjJdLGFbcSsyMD4+Ml09YVtIcisyMD4+Ml0sYVtxKzI0Pj4yXT1hW0hyKzI0Pj4yXSxhW3ErMjg+PjJdPWFbSHIrMjg+PjJdLEc1KEVyLGwsYyxSLGJlLDApLGFbSnI+PjJdPWFbRXI+PjJdLGFbSnIrND4+Ml09YVtFcis0Pj4yXSxhW0pyKzg+PjJd''@;'; put 'put ''PWFbRXIrOD4+Ml0sYVtKcisxMj4+Ml09YVtFcisxMj4+Ml0sYVtKcisxNj4+Ml09YVtFcisxNj4+Ml0sYVtKcisyMD4+Ml09YVtFcisyMD4+Ml0sYVtKcisyND4+Ml09YVtFcisyND4+Ml0sYVtKcisyOD4+Ml09YVtFcisyOD4+Ml0sYVtMcj4+Ml09YVtFcj4+Ml0sYVtMcis0Pj4yXT1hW0Vy''@;'; put 'put ''KzQ+PjJdLGFbTHIrOD4+Ml09YVtFcis4Pj4yXSxhW0xyKzEyPj4yXT1hW0VyKzEyPj4yXSxhW0xyKzE2Pj4yXT1hW0VyKzE2Pj4yXSxhW0xyKzIwPj4yXT1hW0VyKzIwPj4yXSxhW0xyKzI0Pj4yXT1hW0VyKzI0Pj4yXSxhW0xyKzI4Pj4yXT1hW0VyKzI4Pj4yXSxwZT1iZSstNDh8MCxyRChm''@;'; put 'put ''LChxPTAhPSgwfE0pKT9PaTpiZSwxLEpyLDB8V0MoMHxhWygyPT0oMyZhW2JlPj4yXXwwKT9iZTpwZSkrNDA+PjJdKSksX1thdD4+M109K19bSnIrNTYrKCh4aT0oMHxhW1dlPj4yXSktMXwwKTw8NSkrMjQ+PjNdLF9bU3Q+PjNdPStfW0pyKzU2Kyh4aTw8NSkrOD4+M10saz0rX1soMHxhWzE5''@;'; put 'put ''NisoMHxhW2t0Pj4yXSk+PjJdKSsoYVsyMzIrKHhpPTB8YVtPZSsxNj4+Ml0pPj4yXTw8NikrMjQ+PjNdKyArX1t4aSsyND4+M10sYVtmcj4+Ml09YVtMcj4+Ml0sYVtmcis0Pj4yXT1hW0xyKzQ+PjJdLGFbZnIrOD4+Ml09YVtMcis4Pj4yXSxhW2ZyKzEyPj4yXT1hW0xyKzEyPj4yXSxhW2Zy''@;'; put 'put ''KzE2Pj4yXT1hW0xyKzE2Pj4yXSxhW2ZyKzIwPj4yXT1hW0xyKzIwPj4yXSxhW2ZyKzI0Pj4yXT1hW0xyKzI0Pj4yXSxhW2ZyKzI4Pj4yXT1hW0xyKzI4Pj4yXSxLQShsMCxmciw0LGspLGFbTHI+PjJdPWFbbDA+PjJdLGFbTHIrND4+Ml09YVtsMCs0Pj4yXSxhW0xyKzg+PjJdPWFbbDArOD4+''@;'; put 'put ''Ml0sYVtMcisxMj4+Ml09YVtsMCsxMj4+Ml0sYVtMcisxNj4+Ml09YVtsMCsxNj4+Ml0sYVtMcisyMD4+Ml09YVtsMCsyMD4+Ml0sYVtMcisyND4+Ml09YVtsMCsyND4+Ml0sYVtMcisyOD4+Ml09YVtsMCsyOD4+Ml0sK19bTHI+PjNdPCtfW3FlPj4zXSYmK19bU3Q+PjNdPCtfW2F0Pj4zXSYm''@;'; put 'put ''KGFbV2U+PjJdPTErKHhpPTB8YVtXZT4+Ml0pLGFbKHhpPUpyKzU2Kyh4aTw8NSl8MCk+PjJdPWFbTHI+PjJdLGFbeGkrND4+Ml09YVtMcis0Pj4yXSxhW3hpKzg+PjJdPWFbTHIrOD4+Ml0sYVt4aSsxMj4+Ml09YVtMcisxMj4+Ml0sYVt4aSsxNj4+Ml09YVtMcisxNj4+Ml0sYVt4aSsyMD4+''@;'; put 'put ''Ml09YVtMcisyMD4+Ml0sYVt4aSsyND4+Ml09YVtMcisyND4+Ml0sYVt4aSsyOD4+Ml09YVtMcisyOD4+Ml0pLHlZKGYsWnQsYmUsRHIsSnIsYiksRz1zdD8wfF95KGYsVmkpOjB8Z2soZixWaSksRXQmKDB8KGI9MHxhW1ZpPj4yXSkpPjQpYVsoeGk9RysxNnwwKT4+Ml09YVtHPj4yXSxhW3hp''@;'; put 'put ''KzQ+PjJdPWFbRys0Pj4yXSxhW3hpKzg+PjJdPWFbRys4Pj4yXSxhW3hpKzEyPj4yXT1hW0crMTI+PjJdLGFbKHhpPUcrMzJ8MCk+PjJdPWFbKGI9RysoYistMTw8NCl8MCk+PjJdLGFbeGkrND4+Ml09YVtiKzQ+PjJdLGFbeGkrOD4+Ml09YVtiKzg+PjJdLGFbeGkrMTI+PjJdPWFbYisxMj4+''@;'; put 'put ''Ml0scjEoRys0OHwwLDB8YiwxNiksYVtWaT4+Ml09NCxiPTQ7ZWxzZSBpZighYilicmVhaztmb3IoKDB8KE09KEQ9MHxhW1JvPj4yXSkrYnwwKSk+KDB8YVs0NjczNl0pPyhhWzQ2NzM2XT1NPDwxLFI9MHxWMCgwfGFbNDY3MzRdLE08PDUpLGFbNDY3MzRdPVIsYj0wfGFbVmk+PjJdKTpSPTB8''@;'; put 'put ''YVs0NjczNF0sTT0wOyEoKDB8TSk+PSgwfGIpKTspYVsoeGk9UisoRDw8NCl8MCk+PjJdPWFbKFZpPUcrKE08PDQpfDApPj4yXSxhW3hpKzQ+PjJdPWFbVmkrND4+Ml0sYVt4aSs4Pj4yXT1hW1ZpKzg+PjJdLGFbeGkrMTI+PjJdPWFbVmkrMTI+PjJdLE09TSsxfDAsRD1EKzF8MDthW1JvPj4y''@;'; put 'put ''XT1ELHdZKFp0LGYpLGFbbG8+PjJdPWFbKGI9cT8yPT0oMyZhW09pPj4yXXwwKT9PaTpPaSstNDh8MDoyPT0oMyZhW2JlPj4yXXwwKT9iZTpwZSkrNDA+PjJdLE9lPUQsY3Q9NjN9fXdoaWxlKDApO2U6ZG97aWYoNjM9PSgwfGN0KSl7aWYoMT09KDB8QSkpe0F1KGJ0LDB8YVtsbz4+Ml0sMHxh''@;'; put 'put ''WzQ2NzM0XSxPZSwxNzI5Nik7YnJlYWt9Zm9yKGJlPU9lKy0xfDAsaz0rKDB8KDB8QXIoMHxhWyhnZT1jKzEyfDApPj4yXSxBKy0xfDApKS8yKSxNPTB8YVs0NjczNF0sYj0xOyEoKDB8Yik+PSgwfGJlKSk7KV9bKHhpPU0rKGI8PDQpfDApPj4zXT0rX1t4aT4+M10tayxiPWIrMXwwO2Zvcigo''@;'; put 'put ''MHwoYj0wfGFbNDY3MzZdKSk+KDB8YVs0NjczN10pPyhhWzQ2NzM3XT1iLEQ9MHxWMCgwfGFbNDY3MzVdLGI8PDQpLGFbNDY3MzVdPUQsTT0wfGFbNDY3MzRdKTpEPTB8YVs0NjczNV0sYj0wOyEoKDB8Yik+PSgwfE9lKSk7KWFbKHhpPUQrKGI8PDQpfDApPj4yXT1hWyhjPU0rKGI8PDQpfDAp''@;'; put 'put ''Pj4yXSxhW3hpKzQ+PjJdPWFbYys0Pj4yXSxhW3hpKzg+PjJdPWFbYys4Pj4yXSxhW3hpKzEyPj4yXT1hW2MrMTI+PjJdLGI9YisxfDA7Zm9yKEF1KGJ0LDB8YVtsbz4+Ml0sRCxPZSwxNzI5NikscT1UYSs0OHwwLHBlPVRhKy00OHwwLEc9MTs7KXtpZigoMHxHKT49KDB8QSkpYnJlYWsgZTtp''@;'; put 'put ''ZigzMiZhWzE2NCsoYj0wfGFbKFI9MTYrKEQ9MHxhW3ArKEcrbTw8Mik+PjJdKXwwKT4+Ml0pPj4yXSl7Z28oMHwoTT0wfGFbWmE+PjJdKSwwfGIsMTc2KSxSZT1ELEhlPShMZT1UYSkrNDh8MDtkb3thW0xlPj4yXT1hW1JlPj4yXSxMZT1MZSs0fDAsUmU9UmUrNHwwfXdoaWxlKCgwfExlKTwo''@;'; put 'put ''MHxIZSkpO2FbWmE+PjJdPU0sYVsoMz09KDB8KExlPTMmYVtUYT4+Ml0pKT9UYTpxKSs0MD4+Ml09YVsoMj09KDMmYVtEPj4yXXwwKT9EOkQrLTQ4fDApKzQwPj4yXSxhWygyPT0oMHxMZSk/VGE6cGUpKzQwPj4yXT1hWygzPT0oMyZhW0Q+PjJdfDApP0Q6RCs0OHwwKSs0MD4+Ml0sUmU9NTYr''@;'; put 'put ''KDB8YVtSPj4yXSl8MCxIZT00MCsoTGU9TSsxNnwwKXwwO2Rve2FbTGU+PjJdPWFbUmU+PjJdLExlPUxlKzR8MCxSZT1SZSs0fDB9d2hpbGUoKDB8TGUpPCgwfEhlKSk7UmU9MTYrKDB8YVtSPj4yXSl8MCxIZT00MCsoTGU9NTYrKGI9MHxhW1phPj4yXSl8MCl8MDtkb3thW0xlPj4yXT1hW1Jl''@;'; put 'put ''Pj4yXSxMZT1MZSs0fDAsUmU9UmUrNHwwfXdoaWxlKCgwfExlKTwoMHxIZSkpO2ZlW2IrMTEyPj4wXT0xLGFbYisxMTY+PjJdPUQsRD1UYX1mb3IoUj0wfGFbNDY3MzRdLGI9MTshKCgwfGIpPj0oMHxiZSkpOylfWyh4aT1SKyhiPDw0KXwwKT4+M109K19beGk+PjNdKyArKDB8YVtnZT4+Ml0p''@;'; put 'put ''LGI9YisxfDA7Zm9yKE09MHxhWzQ2NzM1XSxiPTA7ISgoMHxiKT49KDB8T2UpKTspYVsoeGk9TSsoYjw8NCl8MCk+PjJdPWFbKGxvPVIrKGI8PDQpfDApPj4yXSxhW3hpKzQ+PjJdPWFbbG8rND4+Ml0sYVt4aSs4Pj4yXT1hW2xvKzg+PjJdLGFbeGkrMTI+PjJdPWFbbG8rMTI+PjJdLGI9Yisx''@;'; put 'put ''fDA7QXUoRCwwfGFbKDI9PSgzJmFbRD4+Ml18MCk/RDpEKy00OHwwKSs0MD4+Ml0sTSxPZSwxNzI5NiksRz1HKzF8MH19fXdoaWxlKDApO2xlPWdhfWZ1bmN0aW9uIEFZKGwpe3ZhciBjPTAsZj0wLHA9MDtmb3IoYz0wfER0KGx8PTApO2M7KXtmb3IoZj0wfHcwKGwsYyk7ZjspKDB8X29bNjMm''@;'; put 'put ''YVs0MzI0XV0oZikpPDwyND4+MjQmJjB8KHA9MHxhWzgrKDB8YVtmKzE2Pj4yXSk+PjJdKSYmYzBlKHApLGY9MHxTMChsLGYpO2M9MHx6dChsLGMpfX1mdW5jdGlvbiBjMGUobCl7dmFyIG0sQSxjPTAsZj0wLHA9MDtmb3IoYz1BPTB8UW4oNDgqKG09MHxhWzQrKGx8PTApPj4yXSl8MCksZj0w''@;'; put 'put ''LHA9KDB8YVtsPj4yXSkrKDQ4KihtKy0xfDApfDApfDA7Oyl7aWYoKDB8Zik+PSgwfG0pKXtjPTA7YnJlYWt9ZjBlKHAsYyksYz1jKzQ4fDAsZj1mKzF8MCxwPXArLTQ4fDB9Zm9yKDtmPTB8YVtsPj4yXSwhKCgwfGMpPj0oMHxtKSk7KUZ0KDB8YVtmKyg0OCpjfDApPj4yXSksYz1jKzF8MDtG''@;'; put 'put ''dChmKSxhW2w+PjJdPUF9ZnVuY3Rpb24gZjBlKGwsYyl7Y3w9MDt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MDtmb3IoZj13PTB8UW4oKEE9MHxhWzQrKGx8PTApPj4yXSk8PDQpLHA9MCxtPSgwfGFbbD4+Ml0pKyhBKy0xPDw0KXwwOyEoKDB8cCk+PSgwfEEpKTspYVtmPj4yXT1hW20+PjJdLGFb''@;'; put 'put ''Zis0Pj4yXT1hW20rND4+Ml0sYVtmKzg+PjJdPWFbbSs4Pj4yXSxhW2YrMTI+PjJdPWFbbSsxMj4+Ml0sZj1mKzE2fDAscD1wKzF8MCxtPW0rLTE2fDA7YVtjPj4yXT13LGFbYys0Pj4yXT1BLGFbYys4Pj4yXT1hW2wrMTI+PjJdLGFbYysxMj4+Ml09YVtsKzg+PjJdLGFbKHc9YysxNnwwKT4+''@;'; put 'put ''Ml09YVsoQT1sKzMyfDApPj4yXSxhW3crND4+Ml09YVtBKzQ+PjJdLGFbdys4Pj4yXT1hW0ErOD4+Ml0sYVt3KzEyPj4yXT1hW0ErMTI+PjJdLGFbKHc9YyszMnwwKT4+Ml09YVsoQT1sKzE2fDApPj4yXSxhW3crND4+Ml09YVtBKzQ+PjJdLGFbdys4Pj4yXT1hW0ErOD4+Ml0sYVt3KzEyPj4y''@;'; put 'put ''XT1hW0ErMTI+PjJdfWZ1bmN0aW9uIEc1KGwsYyxmLHAsbSxBKXtsfD0wLGZ8PTA7dmFyIHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTA7aWYoTT0odz0oRz0rX1sxNisocT0wfGFbMTYrKHB8PTApPj4yXSk+PjNdKS0rX1txKzg4Pj4zXSktNCxrPTB8R0YoY3w9MCxwLG18PTAsQXw9''@;'; put 'put ''MCwtMSkpe2I9MHxXRihjLHAsayk7ZG97aWYoIWIpe2lmKHc9K19bMjQwKyhEPTB8YVtrKzE2Pj4yXSk+PjNdKyArX1tEKzE2Pj4zXSwwfGZlW0QrMTU2Pj4wXSl7dys9KygwfGFbZis4Pj4yXSk7YnJlYWt9dz0uNSorKDB8YVsyNDgrKDB8YVtjKzE2Pj4yXSk+PjJdKSt3O2JyZWFrfXc9K19b''@;'; put 'put ''MzIrKDB8YVtiKzE2Pj4yXSk+PjNdKyArKDB8YVtmKzg+PjJdKX13aGlsZSgwKTtiPX5+KChSPXc8TT93Ok0pKyhSPj0wPy41Oi0uNSkpfWVsc2UgYj0oMHwoYj0wfGFbZj4+Ml0pKT4oMHwoRD1+fih3KyhNPj0wPy0zLjU6LTQuNSkpKSk/RDpiO2lmKFI9KygwfGIpLE09KEQ9MT09KDB8ZmVb''@;'; put 'put ''cSsxNTY+PjBdKSkmJjAhPSgwfGFbcSsxMDQ+PjJdKT9HKzEwOkcrNCsgK19bcSs5Nj4+M10saz0wfEdGKGMscCxtLEEsMSkpe2I9MHxXRihjLHAsayk7ZG97aWYoIWIpe2lmKHc9K19bMTYrKHA9MHxhW2srMTY+PjJdKT4+M10tK19bcCs4OD4+M10sMHxmZVtwKzE1Nj4+MF0pe3ctPSsoMHxh''@;'; put 'put ''W2YrOD4+Ml0pO2JyZWFrfXctPS41KisoMHxhWzI0OCsoMHxhW2MrMTY+PjJdKT4+Ml0pO2JyZWFrfXc9K19bMTYrKDB8YVtiKzE2Pj4yXSk+PjNdLSsoMHxhW2YrOD4+Ml0pfXdoaWxlKDApO2I9fn4oKE09dz5NP3c6TSkrKE0+PTA/LjU6LS41KSl9ZWxzZSBiPSgwfChiPTB8YVtmKzQ+PjJd''@;'; put 'put ''KSk8KDB8KHA9fn4oTSsoTT49MD8uNTotLjUpKSkpP3A6Yjt3PSsoMHxiKSxEJiYwIT0oMHxhW3ErMTA0Pj4yXSkmJih3LT0rX1txKzk2Pj4zXSk8UiYmKHc9RyksTT0oRz0rX1txKzI0Pj4zXSktK19bKGM9MHxhWzE5NisoMHxhW2MrMTY+PjJdKT4+Ml0pKygocT0wfGFbcSsyMzI+PjJdKTw8''@;'; put 'put ''NikrMTY+PjNdLEc9K19bYysocTw8NikrMjQ+PjNdK0csX1tsPj4zXT1SLF9bbCs4Pj4zXT1NLF9bbCsxNj4+M109dyxfW2wrMjQ+PjNdPUd9ZnVuY3Rpb24gV0MobCl7cmV0dXJuIDB8KDE9PSgwfGZlWzE1NisobD0wfGFbMTYrKGx8PTApPj4yXSk+PjBdKT8oMHxhW2wrMTc2Pj4yXSk+MT8x''@;'; put 'put ''OigwfGFbbCsxODQ+PjJdKT4xJjE6MCl9ZnVuY3Rpb24gS0EobCxjLGYscCl7dmFyIG0sQTtzd2l0Y2gobHw9MCxjfD0wLHA9K3AsQT1sZSxsZT1sZSszMnwwLG09QSwwfChmfD0wKSl7Y2FzZSAxOnpGKG0sK19bYz4+M10scCwrX1tjKzE2Pj4zXSwrX1tjKzg+PjNdKTticmVhaztjYXNlIDQ6''@;'; put 'put ''ekYobSwrX1tjPj4zXSwrX1tjKzI0Pj4zXSwrX1tjKzE2Pj4zXSxwKX1hW2w+PjJdPWFbbT4+Ml0sYVtsKzQ+PjJdPWFbbSs0Pj4yXSxhW2wrOD4+Ml09YVttKzg+PjJdLGFbbCsxMj4+Ml09YVttKzEyPj4yXSxhW2wrMTY+PjJdPWFbbSsxNj4+Ml0sYVtsKzIwPj4yXT1hW20rMjA+PjJdLGFb''@;'; put 'put ''bCsyND4+Ml09YVttKzI0Pj4yXSxhW2wrMjg+PjJdPWFbbSsyOD4+Ml0sbGU9QX1mdW5jdGlvbiBzSShsLGMsZixwKXtsfD0wLGZ8PTA7dmFyIGssRCxSLG09MCxBPTAsdz0wLGI9MCxNPTAsRz0wO2s9KE09MHxhWzE2KyhjfD0wKT4+Ml0pKygocHw9MCk8PDUpfDAsQT0rX1soRD1NKyhwPDw1''@;'; put 'put ''KSs4fDApPj4zXSxSPU0rKHA8PDUpKzE2fDAsdz0rX1soTT1NKyhwPDw1KSsyNHwwKT4+M10sKGI9K19baz4+M10pPT0obT0rX1tSPj4zXSkmJihBPStfWyhmPTB8YVsxOTYrKDB8YVtmKzE2Pj4yXSk+PjJdKSsoKEc9cCsxfDApPDw2KSsyND4+M10rICtfWzI0KygwfGFbMTYrKDB8YVthW2Yr''@;'; put 'put ''KEc8PDYpKzQ+PjJdPj4yXSk+PjJdKT4+M10sbT0rKDB8YVtjKzQ+PjJdKSx3PStfWzI0KygwfGFbMTYrKDB8YVthW2YrKHA8PDYpKzQ+PjJdPj4yXSk+PjJdKT4+M10tK19bZisocDw8NikrMTY+PjNdLF9baz4+M109Yj0rKDB8YVtjPj4yXSksX1tEPj4zXT1BLF9bUj4+M109bSxfW00+PjNd''@;'; put 'put ''PXcpLF9bbD4+M109YixfW2wrOD4+M109QSxfW2wrMTY+PjNdPW0sX1tsKzI0Pj4zXT13fWZ1bmN0aW9uIGQwZShsKXt2YXIgZixjPTA7Zm9yKGY9MTYrKGw9MHxhWzE2KyhsfD0wKT4+Ml0pfDAsYz0wOzE9PSgwfGZlWzE1NisobD0wfGFbMTYrKDB8YVsoMj09KDMmYVsobD0wfGFbYVtsKzE4''@;'; put 'put ''MD4+Ml0+PjJdKT4+Ml18MCk/bDpsKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjBdKSYmMT09KDB8YVtsKzE4ND4+Ml0pJiYxPT0oMHxhW2wrMTc2Pj4yXSkmJitfW2wrMTY+PjNdPT0rX1tmPj4zXTspYz1jKzF8MDtyZXR1cm4gMHxjfWZ1bmN0aW9uIHlZKGwsYyxmLHAsbSxBKXtsfD0wLGZ8PTAs''@;'; put 'put ''cHw9MCxtfD0wLEF8PTA7dmFyIGssTSx3PTAsYj0wO009bGUsbGU9bGUrMzJ8MCxrPU0sdz0wfGJZKGN8PTAsLTEpLGM9MHxiWShjLDEpLDAhPSgwfHcpJiYhKDB8VDcodykpfHwoYj0zKTtkb3tpZigzPT0oMHxiKSl7aWYoMHxjJiYwPT0oMHxUNyhjKSl8fCh3PTB8X1koZiwtMSksYz0wfF9Z''@;'; put 'put ''KGYsMSksMHx3JiYwPT0oMHxUNyh3KSkpfHwwfGMmJjA9PSgwfFQ3KGMpKSlicmVhaztmb3Iodz1wKzUyfDAsYz0wOyEoKDB8Yyk+PSgwfGFbdz4+Ml0pKTspYVtrPj4yXT1hWyhmPXArNTYrKGM8PDUpfDApPj4yXSxhW2srND4+Ml09YVtmKzQ+PjJdLGFbays4Pj4yXT1hW2YrOD4+Ml0sYVtr''@;'; put 'put ''KzEyPj4yXT1hW2YrMTI+PjJdLGFbaysxNj4+Ml09YVtmKzE2Pj4yXSxhW2srMjA+PjJdPWFbZisyMD4+Ml0sYVtrKzI0Pj4yXT1hW2YrMjQ+PjJdLGFbaysyOD4+Ml09YVtmKzI4Pj4yXSxKMyhsLGspLGM9YysxfDA7Zm9yKHc9MHxhW2wrODA+PjJdLGI9QSstM3wwLGM9MDshKCgwfGMpPj0o''@;'; put 'put ''MHxBKSk7KWFbaz4+Ml09YVsocD0xNTM3MjArKGM8PDUpfDApPj4yXSxhW2srND4+Ml09YVtwKzQ+PjJdLGFbays4Pj4yXT1hW3ArOD4+Ml0sYVtrKzEyPj4yXT1hW3ArMTI+PjJdLGFbaysxNj4+Ml09YVtwKzE2Pj4yXSxhW2srMjA+PjJdPWFbcCsyMD4+Ml0sYVtrKzI0Pj4yXT1hW3ArMjQ+''@;'; put 'put ''PjJdLGFbaysyOD4+Ml09YVtwKzI4Pj4yXSxKMyhsLGspLGM9YysxfDA7Zm9yKGI9YisoZj13KzF8MCl8MCx3PTB8YVttKzUyPj4yXTtjPXcrLTF8MCwhKCgwfHcpPD0wKTspYVtrPj4yXT1hWyh3PW0rNTYrKGM8PDUpfDApPj4yXSxhW2srND4+Ml09YVt3KzQ+PjJdLGFbays4Pj4yXT1hW3cr''@;'; put 'put ''OD4+Ml0sYVtrKzEyPj4yXT1hW3crMTI+PjJdLGFbaysxNj4+Ml09YVt3KzE2Pj4yXSxhW2srMjA+PjJdPWFbdysyMD4+Ml0sYVtrKzI0Pj4yXT1hW3crMjQ+PjJdLGFbaysyOD4+Ml09YVt3KzI4Pj4yXSxKMyhsLGspLHc9YztscChsLGYsYil9fXdoaWxlKDApO2xlPU19ZnVuY3Rpb24gamwo''@;'; put 'put ''bCxjLGYscCl7bHw9MCxjfD0wLGZ8PTA7dmFyIEEsbT0wO2ZvcihtPTB8YVsocHw9MCk+PjJdO2M7KWw9MHxhW2FbMTgwKygwfGFbMTYrKDB8YVsoMj09KDMmYVtsPj4yXXwwKT9sOmwrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0+PjJdLGM9YystMXwwO3JldHVybiBhW3A+PjJdPW0rMSxhWyhB''@;'; put 'put ''PWYrKG08PDQpfDApPj4yXT1hWyhjPWYrKG0rLTE8PDQpfDApPj4yXSxhW0ErND4+Ml09YVtjKzQ+PjJdLGFbQSs4Pj4yXT1hW2MrOD4+Ml0sYVtBKzEyPj4yXT1hW2MrMTI+PjJdLGFbcD4+Ml09MSsobT0wfGFbcD4+Ml0pLGFbKG09ZisobTw8NCl8MCk+PjJdPWFbYz4+Ml0sYVttKzQ+PjJd''@;'; put 'put ''PWFbYys0Pj4yXSxhW20rOD4+Ml09YVtjKzg+PjJdLGFbbSsxMj4+Ml09YVtjKzEyPj4yXSxhWyhtPWYrKGFbcD4+Ml08PDQpfDApPj4yXT1hWyhwPTE2KygwfGFbMTYrKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOmwrNDh8MCkrNDA+PjJdKT4+Ml0pfDApPj4yXSxhW20rND4+Ml09YVtwKzQ+''@;'; put 'put ''PjJdLGFbbSs4Pj4yXT1hW3ArOD4+Ml0sYVttKzEyPj4yXT1hW3ArMTI+PjJdLDB8bH1mdW5jdGlvbiB3WShsLGMpe3ZhciBrLE0sZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTA7TT04NCsoY3w9MCl8MCxrPWMrODB8MCxmPTAsYz1sfD0wO2U6Zm9yKDt3PTB8YVsoMj09KDMmYVtjPj4yXXwwKT9j''@;'; put 'put ''OmMrLTQ4fDApKzQwPj4yXSxiPXcrMTZ8MCwhKDEhPSgwfGZlWzE1NisoMHxhW2I+PjJdKT4+MF0pfHwoMHxfb1s2MyZhWzQzMjVdXSh3KSk8PDI0Pj4yNCk7KXtmb3IoYz0wfGFbaz4+Ml07Oyl7aWYoKDB8Zik+PSgwfGMpKWJyZWFrIGU7aWYoISgrX1soMHxhW00+PjJdKSsoZjw8NSkrOD4+''@;'; put 'put ''M10+K19bMjQrKDB8YVtiPj4yXSk+PjNdKSlicmVhaztmPWYrMXwwfWM9MHxhW00+PjJdLGw9MHxhW2I+PjJdO2Rve2lmKCEoK19bYysoZjw8NSkrMjQ+PjNdPCtfW2wrMjQ+PjNdKSl7aWYoQT1+fihtPStfW2MrKGY8PDUpPj4zXSkscD0rX1tjKyhmPDw1KSsxNj4+M10sMHxhW2wrMTA0Pj4y''@;'; put 'put ''XSl7ZDcodyxBLH5+cCx+figrX1tsKzk2Pj4zXStwKSk7YnJlYWt9ZDcodyxBLH5+KC41KihwK20pKSx+fnApO2JyZWFrfX13aGlsZSgwKTtjPTB8YVthWzE4MCsoMHxhW2I+PjJdKT4+Ml0+PjJdfX1mdW5jdGlvbiBkNyhsLGMsZixwKXtjfD0wLHB8PTAsX1sxNisobD0wfGFbMTYrKGx8PTAp''@;'; put 'put ''Pj4yXSk+PjNdPSsoMHwoZnw9MCkpLF9bbCs4OD4+M109KyhmLWN8MCksX1tsKzk2Pj4zXT0rKHAtZnwwKX1mdW5jdGlvbiBiWShsLGMpe2N8PTA7dmFyIGIsZj0wLHA9MCxtPTAsQT0wLHc9MDtmb3IoYj0wfGFbMTgwKygwfGFbMTYrKDB8YVsoMz09KDB8KHc9MyZhWyhsfD0wKT4+Ml0pKT9s''@;'; put 'put ''OmwrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSx3PSgyPT0oMHx3KT9sOmwrLTQ4fDApKzQwfDAsQT0wLGw9MDtwPTB8YVtiKyhBPDwyKT4+Ml07KXttPTB8YVsyMzYrKDB8YVsxNisoMHxhWygyPT0oMyZhW3A+PjJdfDApP3A6cCstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXTtkb3tpZigoMHxBciht''@;'; put 'put ''LSgwfGFbMjM2KygwfGFbMTYrKDB8YVt3Pj4yXSk+PjJdKT4+Ml0pfDAsYykpPj0xKXtpZighKDB8YVs4KyhmPTB8YVtwKzE2Pj4yXSk+PjJdKSYmISgoZj0wfGFbZisxMTY+PjJdKSYmMHxhWzgrKDB8YVtmKzE2Pj4yXSk+PjJdKXx8MHxsJiYoMHxBcigoMHxhWzIzNisoMHxhWzE2KygwfGFb''@;'; put 'put ''KDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKS1tfDAsYykpPD0wKWJyZWFrO2w9cH19d2hpbGUoMCk7QT1BKzF8MH1yZXR1cm4gMHxsfWZ1bmN0aW9uIF9ZKGwsYyl7Y3w9MDt2YXIgYixmPTAscD0wLG09MCxBPTAsdz0wO2ZvcihiPTB8YVsxNzIrKDB8YVsx''@;'; put 'put ''NisoMHxhWygyPT0oMHwodz0zJmFbKGx8PTApPj4yXSkpP2w6bCstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSx3PSgzPT0oMHx3KT9sOmwrNDh8MCkrNDB8MCxBPTAsbD0wO3A9MHxhW2IrKEE8PDIpPj4yXTspe209MHxhWzIzNisoMHxhWzE2KygwfGFbKDM9PSgzJmFbcD4+Ml18MCk/cDpwKzQ4''@;'; put 'put ''fDApKzQwPj4yXSk+PjJdKT4+Ml07ZG97aWYoKDB8QXIobS0oMHxhWzIzNisoMHxhWzE2KygwfGFbdz4+Ml0pPj4yXSk+PjJdKXwwLGMpKT49MSl7aWYoISgwfGFbOCsoZj0wfGFbcCsxNj4+Ml0pPj4yXSkmJiEoKGY9MHxhW2YrMTE2Pj4yXSkmJjB8YVs4KygwfGFbZisxNj4+Ml0pPj4yXSl8''@;'; put 'put ''fDB8bCYmKDB8QXIoKDB8YVsyMzYrKDB8YVsxNisoMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6bCs0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKS1tfDAsYykpPD0wKWJyZWFrO2w9cH19d2hpbGUoMCk7QT1BKzF8MH1yZXR1cm4gMHxsfWZ1bmN0aW9uIGxwKGwsYyxmKXtmfD0wO3ZhciBrLE0scD0w''@;'; put 'put ''LG09MCxBPTAsdz0wLGI9MCxEPTA7Zm9yKE09ODQrKGx8PTApfDAsdz0oY3w9MCktMXwwOyEoKDB8dyk+KDB8ZikpOylwPStfWyhiPShtPTB8YVtNPj4yXSkrKHc8PDUpfDApPj4zXSx3LWMmMT8oQT1+figuNSooKEQ9K19bKG09bSsodzw8NSkrMTZ8MCk+PjNdKStwKSkscCsxNj5EJiYoX1ti''@;'; put 'put ''Pj4zXT0rKEErLTh8MCksX1ttPj4zXT0rKEErOHwwKSkpOihBPX5+KC41KigoRD0rX1sobT1tKyh3PDw1KSsxNnwwKT4+M10pK3ApKSxwPj1EJiYoX1tiPj4zXT0rKEErLTh8MCksX1ttPj4zXT0rKEErOHwwKSkpLHc9dysxfDA7Zm9yKGs9KDB8YVtsKzgwPj4yXSktMXwwLEE9MDshKCgwfEEp''@;'; put 'put ''Pj0oMHxrKSk7KWlmKG09KHc9MHxhW00+PjJdKSsoQTw8NSl8MCxsPXcrKChiPUErMXwwKTw8NSl8MCwoMHxBKTwoMHxjKXwoMHxBKT4oMHxmKXx8MCE9KEEtYyYxfDApKSgwfEEpPCgwfGYpJigwfGIpPj0oMHxjKT9iLWMmMXwwP0E9YjooK19bbT4+M10rMTY+KHA9K19bdysoYjw8NSkrMTY+''@;'; put 'put ''PjNdKSYmKF9bbT4+M109cCstMTYpLCtfWyhtPXcrKEE8PDUpKzE2fDApPj4zXS0xNjwocD0rX1tsPj4zXSk/KF9bbT4+M109cCsxNixBPWIpOkE9Yik6QT1iO2Vsc2V7aWYoKHA9K19bbT4+M10rMTYpPitfWyhtPXcrKGI8PDUpKzE2fDApPj4zXSYmKF9bbT4+M109cCksISgocD0rX1t3KyhB''@;'; put 'put ''PDw1KSsxNj4+M10tMTYpPCtfW2w+PjNdKSl7QT1iO2NvbnRpbnVlfV9bbD4+M109cCxBPWJ9fWZ1bmN0aW9uIHpGKGwsYyxmLHAsbSl7Zj0rZixwPStwLG09K20sX1sobHw9MCk+PjNdPWM9K2MsX1tsKzg+PjNdPWYsX1tsKzE2Pj4zXT1wLF9bbCsyND4+M109bX1mdW5jdGlvbiBHRihsLGMs''@;'; put 'put ''ZixwLG0pe2Z8PTAscHw9MCxtfD0wO3ZhciB3LEE9MCxiPTAsaz0wO3c9KGs9MHxhWzE5NisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSkrKChiPTB8YVsyMzIrKEE9MHxhWzE2KyhjfD0wKT4+Ml0pPj4yXSk8PDYpfDAsYj1rKyhiPDw2KSs0fDAsQT0wfGFbQSsyMzY+PjJdO2U6ZG97aWYoKDB8''@;'; put 'put ''KEE9QSttfDApKTw9LTEpe2w9MDticmVha31pZigoMHxBKT49KDB8YVt3Pj4yXSkpe2w9MDticmVha31zd2l0Y2goMHxmZVsxNTYrKGs9MHxhWzE2KyhsPTB8YVsoMHxhW2I+PjJdKSsoQTw8Mik+PjJdKT4+Ml0pPj4wXSl7Y2FzZSAwOmJyZWFrIGU7Y2FzZSAxOmlmKDB8YVtrKzEwND4+Ml0p''@;'; put 'put ''YnJlYWsgZX19d2hpbGUoKDB8VGMobCxjLGYscCkpPDwyND4+MjQhPTApO3JldHVybiAwfGx9ZnVuY3Rpb24gV0YobCxjLGYpe2x8PTA7dmFyIHAsbT0wLEE9MCx3PTA7aWYoMHxmZVsxNTYrKGM9MHxhWzE2KyhjfD0wKT4+Ml0pPj4wXT8oQT0wfGFbMjEyKygwfGFbMTYrKDB8YVsoMj09KDB8''@;'; put 'put ''KG09MyZhWyh3PTB8YVsxMTYrKDB8YVsxNisoMHxhW2FbYysxODA+PjJdPj4yXSk+PjJdKT4+Ml0pPj4yXSkpP3c6dystNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSx3PTB8YVsyMTIrKDB8YVsxNisoMHxhWygzPT0oMHxtKT93OncrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk6QT13PTB8YVtjKzIx''@;'; put 'put ''Mj4+Ml0sISgwfGZlWzE1NisoYz0wfGFbMTYrKGZ8PTApPj4yXSk+PjBdKSlyZXR1cm4gMHwoKDB8KGY9KDB8KGY9MHxhW2MrMjEyPj4yXSkpPT0oMHxsKT8wOmYpKT09KDB8QSl8MD09KDB8Zil8KDB8Zik9PSgwfHcpPzA6Zik7aWYoKDB8KGM9KDB8KGM9MHxhWzIxMisoMHxhWzE2KygwfGFb''@;'; put 'put ''KDM9PSgwfChtPTMmYVsocD0wfGFbMTE2KygwfGFbMTYrKDB8YVthW2MrMTgwPj4yXT4+Ml0pPj4yXSk+PjJdKT4+Ml0pKT9wOnArNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpPT0oMHxsKT8wOmMpKT09KDB8QSl8MD09KDB8Yyl8KDB8Yyk9PSgwfHcpfHwwPT0oMHxwMGUoYyxmKSkpe2lmKCEo''@;'; put 'put ''KDB8KGM9KDB8KGM9MHxhWzIxMisoMHxhWzE2KygwfGFbKDI9PSgwfG0pP3A6cCstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpPT0oMHxsKT8wOmMpKT09KDB8QSl8MD09KDB8Yyl8KDB8Yyk9PSgwfHcpKSlyZXR1cm4gMHwoKGY9MD09KDB8cDBlKGMsZikpKT8wOmMpO2M9MH1yZXR1cm4gMHxj''@;'; put 'put ''fWZ1bmN0aW9uIHAwZShsLGMpe3ZhciBmLG0scD0wO3JldHVybiAwfCgrX1sxNisoZj0wfGFbMTYrKGx8PTApPj4yXSk+PjNdPD0obT0rX1sxNisobD0wfGFbMTYrKGN8PTApPj4yXSk+PjNdKSYmbTw9K19bZiszMj4+M10mJitfW2YrMjQ+PjNdPD0ocD0rX1tsKzI0Pj4zXSk/cDw9K19bZis0''@;'; put 'put ''MD4+M10mMTowKX1mdW5jdGlvbiBUYyhsLGMsZixwKXtmfD0wLHB8PTA7dmFyIHcsYixtPTAsQT0wO2I9KDB8YVsyMzYrKHc9MHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSk+KDB8YVsyMzYrKDB8YVsxNisoY3w9MCk+PjJdKT4+Ml0pO2U6ZG97aWYoMT09KDB8YVt3KzE4ND4+Ml0pKXt0OmRve2lm''@;'; put 'put ''KDB8cClmb3IoQT0wLGw9MHxhW2FbdysxODA+PjJdPj4yXTs7KXtpZigoMHxBKT49Mnx8KDB8KGw9MHxhWygyPT0oMyZhW2w+PjJdfDApP2w6bCstNDh8MCkrNDA+PjJdKSk9PSgwfChjPTB8YVsoMj09KDMmYVtwPj4yXXwwKT9wOnArLTQ4fDApKzQwPj4yXSkpKWJyZWFrIHQ7aWYoYl4oMHxh''@;'; put 'put ''WzIzNisobT0wfGFbbCsxNj4+Ml0pPj4yXSk+KDB8YVsyMzYrKGw9MHxhW2MrMTY+PjJdKT4+Ml0pKXtsPTE7YnJlYWsgZX1pZighKDE9PSgwfGFbbSsxODQ+PjJdKSYmMHxmZVttKzE1Nj4+MF0mJjE9PSgwfGFbbCsxODQ+PjJdKSYmMHxmZVtsKzE1Nj4+MF0pKWJyZWFrIHQ7QT1BKzF8MCxw''@;'; put 'put ''PTB8YVthW2wrMTgwPj4yXT4+Ml0sbD0wfGFbYVttKzE4MD4+Ml0+PjJdfX13aGlsZSgwKTtpZigwfGYmJjE9PSgwfGFbdysxNzY+PjJdKSlmb3IobT0wLGM9ZixsPTB8YVthW3crMTcyPj4yXT4+Ml07Oyl7aWYoKDB8bSk+PTIpe2w9MDticmVhayBlfWlmKCgwfChsPTB8YVsoMz09KDMmYVts''@;'; put 'put ''Pj4yXXwwKT9sOmwrNDh8MCkrNDA+PjJdKSk9PSgwfChjPTB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOmMrNDh8MCkrNDA+PjJdKSkpe2w9MDticmVhayBlfWlmKGJeKDB8YVsyMzYrKHA9MHxhW2wrMTY+PjJdKT4+Ml0pPigwfGFbMjM2KyhsPTB8YVtjKzE2Pj4yXSk+PjJdKSl7bD0xO2JyZWFr''@;'; put 'put ''IGV9aWYoMSE9KDB8YVtwKzE3Nj4+Ml0pKXtsPTA7YnJlYWsgZX1pZighKDB8ZmVbcCsxNTY+PjBdKSl7bD0wO2JyZWFrIGV9aWYoMSE9KDB8YVtsKzE3Nj4+Ml0pKXtsPTA7YnJlYWsgZX1pZighKDB8ZmVbbCsxNTY+PjBdKSl7bD0wO2JyZWFrIGV9bT1tKzF8MCxjPTB8YVthW2wrMTcyPj4y''@;'; put 'put ''XT4+Ml0sbD0wfGFbYVtwKzE3Mj4+Ml0+PjJdfWVsc2UgbD0wfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gQnUobCxjLGYpe3ZhciBwO3A9K19bOCsoZnw9MCk+PjNdKyArX1s4KyhjfD0wKT4+M10sX1sobHw9MCk+PjNdPStfW2Y+PjNdKyArX1tjPj4zXSxfW2wrOD4+''@;'; put 'put ''M109cH1mdW5jdGlvbiBZRihsLGMsZil7dmFyIHAsbTtyZXR1cm4oMHx+figoK19bKGZ8PTApPj4zXS0obT0rX1soY3w9MCk+PjNdKSkqKCtfWzgrKGx8PTApPj4zXS0ocD0rX1tjKzg+PjNdKSktKCtfW2w+PjNdLW0pKigrX1tmKzg+PjNdLXApKSk+MHwwfWZ1bmN0aW9uIG0wZShsLGMsZixw''@;'; put 'put ''LG0pe2x8PTAsY3w9MCxmfD0wLG18PTA7dmFyIE0sRCxSLHEscGUsYmUsTGUsUmUsVmUsQT0wLHc9MCxiPTAsaz0wLEc9MCxnZT0wLE9lPTAsSGU9MCxxZT0wLHJ0PTAsV2U9MCxhdD0wLFN0PTA7Zm9yKFZlPWxlLGxlPWxlKzE2MDB8MCxiZT1WZSsxNTUyfDAsTT1WZSsxNTM2fDAsZ2U9VmUr''@;'; put 'put ''ODQwfDAsT2U9VmUrMTQ0fDAsTGU9VmUrMTU4NHwwLHc9VmUrMzJ8MCxwZT1WZSsxNnwwLEQ9VmUsUj0wfGFbKDM9PSgwfChHPTMmYVsocHw9MCk+PjJdKSk/cDpwKzQ4fDApKzQwPj4yXSxSZT1wKy00OHwwLEc9MHxhWygyPT0oMHxHKT9wOlJlKSs0MD4+Ml0sQT0wfGFbMTcyKyhiPTB8YVso''@;'; put 'put ''cT1wKzE2fDApPj4yXSk+PjJdO2s9MHxhWzE3MisoMHxhW0ErMTY+PjJdKT4+Ml07KUE9aztpZihhWyhiPTU2KygwfGFbYis5Nj4+Ml0pfDApPj4yXT1hWyhrPTE2KygwfGFbKEE9MTYrKDB8YVsoMz09KDMmYVtBPj4yXXwwKT9BOkErNDh8MCkrNDA+PjJdKXwwKT4+Ml0pfDApPj4yXSxhW2Ir''@;'; put 'put ''ND4+Ml09YVtrKzQ+PjJdLGFbYis4Pj4yXT1hW2srOD4+Ml0sYVtiKzEyPj4yXT1hW2srMTI+PjJdLGZlWzgxKygwfGFbOTYrKGI9MHxhW3E+PjJdKT4+Ml0pPj4wXT0xLDIhPSgwfG0pKXtmb3IoU3Q9KFdlPStfWzE2KyhiPTB8YVtBPj4yXSk+PjNdKS0rX1tiKzg4Pj4zXSxXZT0rX1tiKzk2''@;'; put 'put ''Pj4zXStXZSxydD0oYXQ9LjUqK19bYis4MD4+M10rKHJ0PStfW2IrMjQ+PjNdKSktKChydD0rKDB8fn4oLjE2NjY2NjY2NjY2NjY2NjY2KisoMHx+fihydC0rX1soYj0wfGFbMTk2KygwfGFbbCsxNj4+Ml0pPj4yXSkrKCh3PTB8YVsyMzIrKGs9MHxhW1IrMTY+PjJdKT4+Ml0pPDw2KSsxNj4+''@;'; put 'put ''M10tK19baysyND4+M10rICtfW2IrKHc8PDYpKzI0Pj4zXSkpKSkpPDU/NTpydCksdUkobCxjLGYsUixwLGdlLDEpLHVJKGwsYyxmLEcscCxPZSwwKSxfWzE5MjE1XT1xZT0rX1tnZSs1NisoKGs9KGI9MHxhWyh3PWdlKzUyfDApPj4yXSktMXwwKTw8NSk+PjNdLF9bMTkyMTZdPStfW2dlKzU2''@;'; put 'put ''KyhrPDw1KSsyND4+M10sX1sxOTIxN109U3QsX1sxOTIxOF09cnQsX1sxOTIxOV09cWUsX1sxOTIyMF09cnQsX1sxOTIyMV09cWU9K19bT2UrNTYrKChBPSgwfGFbKGs9T2UrNTJ8MCk+PjJdKS0xfDApPDw1KSsxNj4+M10sX1sxOTIyMl09YXQsX1sxOTIyM109V2UsX1sxOTIyNl09cnQsX1sx''@;'; put 'put ''OTIyNF09K19bT2UrNTYrKEE8PDUpKzI0Pj4zXSxfWzE5MjI1XT1xZSxBPTA7Oyl7aWYoKDB8QSk+PSgwfGIpKXtBPTA7YnJlYWt9YVtiZT4+Ml09YVsoYj1nZSs1NisoQTw8NSl8MCk+PjJdLGFbYmUrND4+Ml09YVtiKzQ+PjJdLGFbYmUrOD4+Ml09YVtiKzg+PjJdLGFbYmUrMTI+PjJdPWFb''@;'; put 'put ''YisxMj4+Ml0sYVtiZSsxNj4+Ml09YVtiKzE2Pj4yXSxhW2JlKzIwPj4yXT1hW2IrMjA+PjJdLGFbYmUrMjQ+PjJdPWFbYisyND4+Ml0sYVtiZSsyOD4+Ml09YVtiKzI4Pj4yXSxKMyhmLGJlKSxBPUErMXwwLGI9MHxhW3c+PjJdfWZvcig7MyE9KDB8QSk7KWFbYmU+PjJdPWFbKGdlPTE1Mzcy''@;'; put 'put ''MCsoQTw8NSl8MCk+PjJdLGFbYmUrND4+Ml09YVtnZSs0Pj4yXSxhW2JlKzg+PjJdPWFbZ2UrOD4+Ml0sYVtiZSsxMj4+Ml09YVtnZSsxMj4+Ml0sYVtiZSsxNj4+Ml09YVtnZSsxNj4+Ml0sYVtiZSsyMD4+Ml09YVtnZSsyMD4+Ml0sYVtiZSsyND4+Ml09YVtnZSsyND4+Ml0sYVtiZSsyOD4+''@;'; put 'put ''Ml09YVtnZSsyOD4+Ml0sSjMoZixiZSksQT1BKzF8MDtmb3Iodz0wfGFbaz4+Ml07QT13Ky0xfDAsISgoMHx3KTw9MCk7KWFbYmU+PjJdPWFbKHc9T2UrNTYrKEE8PDUpfDApPj4yXSxhW2JlKzQ+PjJdPWFbdys0Pj4yXSxhW2JlKzg+PjJdPWFbdys4Pj4yXSxhW2JlKzEyPj4yXT1hW3crMTI+''@;'; put 'put ''PjJdLGFbYmUrMTY+PjJdPWFbdysxNj4+Ml0sYVtiZSsyMD4+Ml09YVt3KzIwPj4yXSxhW2JlKzI0Pj4yXT1hW3crMjQ+PjJdLGFbYmUrMjg+PjJdPWFbdysyOD4+Ml0sSjMoZixiZSksdz1BO3c9MTA9PSgwfG0pPzB8X3koZixMZSk6MHxnayhmLExlKSwwfChBPTB8YVtMZT4+Ml0pJiYoSGU9''@;'; put 'put ''MTcpfWVsc2UgT2U9YisxNnwwLGFbTT4+Ml09YVsoQT0xNisoMHxhW1IrMTY+PjJdKXwwKT4+Ml0sYVtNKzQ+PjJdPWFbQSs0Pj4yXSxhW00rOD4+Ml09YVtBKzg+PjJdLGFbTSsxMj4+Ml09YVtBKzEyPj4yXSxhW2JlPj4yXT1hW09lPj4yXSxhW2JlKzQ+PjJdPWFbT2UrND4+Ml0sYVtiZSs4''@;'; put 'put ''Pj4yXT1hW09lKzg+PjJdLGFbYmUrMTI+PjJdPWFbT2UrMTI+PjJdLEJ1KHBlLE0sYmUpLEE9NTYrKDB8YVtxPj4yXSl8MCxhW00+PjJdPWFbKE9lPTE2KygwfGFbRysxNj4+Ml0pfDApPj4yXSxhW00rND4+Ml09YVtPZSs0Pj4yXSxhW00rOD4+Ml09YVtPZSs4Pj4yXSxhW00rMTI+PjJdPWFb''@;'; put 'put ''T2UrMTI+PjJdLGFbYmU+PjJdPWFbQT4+Ml0sYVtiZSs0Pj4yXT1hW0ErND4+Ml0sYVtiZSs4Pj4yXT1hW0ErOD4+Ml0sYVtiZSsxMj4+Ml09YVtBKzEyPj4yXSxCdShELE0sYmUpLGF0PStfWzU2KyhBPTB8YVs5NisoMHxhW3E+PjJdKT4+Ml0pPj4zXSxTdD0rX1tBKzY0Pj4zXS0uNSorX1tB''@;'; put 'put ''KzMyPj4zXSxBPXcrMTZ8MCxhW3c+PjJdPWFbcGU+PjJdLGFbdys0Pj4yXT1hW3BlKzQ+PjJdLGFbdys4Pj4yXT1hW3BlKzg+PjJdLGFbdysxMj4+Ml09YVtwZSsxMj4+Ml0sYVtBPj4yXT1hW3BlPj4yXSxhW0ErND4+Ml09YVtwZSs0Pj4yXSxhW0ErOD4+Ml09YVtwZSs4Pj4yXSxhW0ErMTI+''@;'; put 'put ''PjJdPWFbcGUrMTI+PjJdLEE9dyszMnwwLE9lPXcrNDh8MCxIZT13KzY0fDAsX1t3KzY0Pj4zXT1hdCxfW3crNzI+PjNdPVN0LGFbT2U+PjJdPWFbSGU+PjJdLGFbT2UrND4+Ml09YVtIZSs0Pj4yXSxhW09lKzg+PjJdPWFbSGUrOD4+Ml0sYVtPZSsxMj4+Ml09YVtIZSsxMj4+Ml0sYVtBPj4y''@;'; put 'put ''XT1hW0hlPj4yXSxhW0ErND4+Ml09YVtIZSs0Pj4yXSxhW0ErOD4+Ml09YVtIZSs4Pj4yXSxhW0ErMTI+PjJdPWFbSGUrMTI+PjJdLEE9dys4MHwwLGFbKEhlPXcrOTZ8MCk+PjJdPWFbRD4+Ml0sYVtIZSs0Pj4yXT1hW0QrND4+Ml0sYVtIZSs4Pj4yXT1hW0QrOD4+Ml0sYVtIZSsxMj4+Ml09''@;'; put 'put ''YVtEKzEyPj4yXSxhW0E+PjJdPWFbRD4+Ml0sYVtBKzQ+PjJdPWFbRCs0Pj4yXSxhW0ErOD4+Ml09YVtEKzg+PjJdLGFbQSsxMj4+Ml09YVtEKzEyPj4yXSxhW0xlPj4yXT03LEE9NyxIZT0xNzsxNz09KDB8SGUpJiZBdShwLDB8YVsoMj09KDMmYVtwPj4yXXwwKT9wOlJlKSs0MD4+Ml0sdyxB''@;'; put 'put ''LDE3Mjk2KSxsZT1WZX1mdW5jdGlvbiBVRihsLGMsZixwLG0sQSl7Y3w9MCxtfD0wLEF8PTA7dmFyIGssTSxELFIsRyxwZSxiZSxydCxXZSxhdCxTdCxrdCxzdCxFdCxadCxjdCxidCxhbixTbixIbix1cix3PTAsYj0wLHE9MCxnZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wO2Zv''@;'; put 'put ''cih1cj1sZSxsZT1sZSszNTJ8MCxIZT11ciszMzZ8MCxTbj11cisxMjh8MCxPZT11ciszMDR8MCxWZT11cisyODh8MCxIbj11cisxMTJ8MCxrdD11cis5NnwwLHN0PXVyKzgwfDAsRXQ9dXIrNjR8MCxadD11cis0OHwwLGN0PXVyKzMyfDAsYnQ9dXIrMTZ8MCxhbj11cixnZT0xNisoMHxhWyhM''@;'; put 'put ''ZT0xNisoMHxhWyhmfD0wKSsoKHB8PTApPDwyKT4+Ml0pfDApPj4yXSl8MCxhWyhSZT11ciszMjB8MCk+PjJdPWFbKHE9MTYrKDB8YVsobD0xNisobHw9MCl8MCk+PjJdKXwwKT4+Ml0sYVtSZSs0Pj4yXT1hW3ErND4+Ml0sYVtSZSs4Pj4yXT1hW3ErOD4+Ml0sYVtSZSsxMj4+Ml09YVtxKzEy''@;'; put 'put ''Pj4yXSxhW0hlPj4yXT1hW2dlPj4yXSxhW0hlKzQ+PjJdPWFbZ2UrND4+Ml0sYVtIZSs4Pj4yXT1hW2dlKzg+PjJdLGFbSGUrMTI+PjJdPWFbZ2UrMTI+PjJdLEJ1KE9lLFJlLEhlKSxhdD0rX1tPZT4+M10sU3Q9K19bT2UrOD4+M10sTGU9NTYrKDB8YVtMZT4+Ml0pfDAsYVtSZT4+Ml09YVso''@;'; put 'put ''T2U9MTYrKDB8YVtjKzE2Pj4yXSl8MCk+PjJdLGFbUmUrND4+Ml09YVtPZSs0Pj4yXSxhW1JlKzg+PjJdPWFbT2UrOD4+Ml0sYVtSZSsxMj4+Ml09YVtPZSsxMj4+Ml0sYVtIZT4+Ml09YVtMZT4+Ml0sYVtIZSs0Pj4yXT1hW0xlKzQ+PjJdLGFbSGUrOD4+Ml09YVtMZSs4Pj4yXSxhW0hlKzEy''@;'; put 'put ''Pj4yXT1hW0xlKzEyPj4yXSxCdShWZSxSZSxIZSksV2U9K19bVmUrOD4+M10sKDB8bSk+MT8odz0uNSoocWU9K19bODArKDB8YVtsPj4yXSk+PjNdKSxxZS89KyhtKy0xfDApKToodz0wLHFlPTApLEc9MTA9PSg4fEEpLE09U24rOHwwLHE9U24rMTZ8MCxwZT0uMzMzMzMzMzMzMzMzMzMzMyoo''@;'; put 'put ''KHJ0PStfW1ZlPj4zXSkrMiphdCksZ2U9U24rMzJ8MCxiZT0uMzMzMzMzMzMzMzMzMzMzMyooMipydCthdCksRD1TbisyNHwwLE9lPVNuKzQ4fDAsTGU9U24rNjR8MCxSZT1Tbis4MHwwLEhlPVNuKzk2fDAsVmU9U24rMTEyfDAsaz1TbisxMjh8MCxSPVNuKzEzNnwwLHc9U3QtdyxjPTA7ISgo''@;'; put 'put ''MHxjKT49KDB8bSkpOyliPTB8YVtmKyhjK3A8PDIpPj4yXSxfW1NuPj4zXT1hdCxfW00+PjNdPVN0LEc/KFc1KEhuLHBlLHcpLGFbcT4+Ml09YVtIbj4+Ml0sYVtxKzQ+PjJdPWFbSG4rND4+Ml0sYVtxKzg+PjJdPWFbSG4rOD4+Ml0sYVtxKzEyPj4yXT1hW0huKzEyPj4yXSxXNShrdCxiZSx3''@;'; put 'put ''KSxhW2dlPj4yXT1hW2t0Pj4yXSxhW2dlKzQ+PjJdPWFba3QrND4+Ml0sYVtnZSs4Pj4yXT1hW2t0Kzg+PjJdLGFbZ2UrMTI+PjJdPWFba3QrMTI+PjJdLGw9NCxBPTMpOihfW3E+PjNdPWF0LF9bRD4+M109U3QsVzUoc3QscGUsdyksYVtnZT4+Ml09YVtzdD4+Ml0sYVtnZSs0Pj4yXT1hW3N0''@;'; put 'put ''KzQ+PjJdLGFbZ2UrOD4+Ml09YVtzdCs4Pj4yXSxhW2dlKzEyPj4yXT1hW3N0KzEyPj4yXSxXNShFdCxwZSx3KSxhW09lPj4yXT1hW0V0Pj4yXSxhW09lKzQ+PjJdPWFbRXQrND4+Ml0sYVtPZSs4Pj4yXT1hW0V0Kzg+PjJdLGFbT2UrMTI+PjJdPWFbRXQrMTI+PjJdLFc1KFp0LHBlLHcpLGFb''@;'; put 'put ''TGU+PjJdPWFbWnQ+PjJdLGFbTGUrND4+Ml09YVtadCs0Pj4yXSxhW0xlKzg+PjJdPWFbWnQrOD4+Ml0sYVtMZSsxMj4+Ml09YVtadCsxMj4+Ml0sVzUoY3QsYmUsdyksYVtSZT4+Ml09YVtjdD4+Ml0sYVtSZSs0Pj4yXT1hW2N0KzQ+PjJdLGFbUmUrOD4+Ml09YVtjdCs4Pj4yXSxhW1JlKzEy''@;'; put 'put ''Pj4yXT1hW2N0KzEyPj4yXSxXNShidCxiZSx3KSxhW0hlPj4yXT1hW2J0Pj4yXSxhW0hlKzQ+PjJdPWFbYnQrND4+Ml0sYVtIZSs4Pj4yXT1hW2J0Kzg+PjJdLGFbSGUrMTI+PjJdPWFbYnQrMTI+PjJdLFc1KGFuLGJlLHcpLGFbVmU+PjJdPWFbYW4+PjJdLGFbVmUrND4+Ml09YVthbis0Pj4y''@;'; put 'put ''XSxhW1ZlKzg+PjJdPWFbYW4rOD4+Ml0sYVtWZSsxMj4+Ml09YVthbisxMj4+Ml0sX1trPj4zXT1ydCxfW1I+PjNdPVdlLGw9MTAsQT05KSxfW1NuKyhBPDw0KT4+M109cnQsX1tTbisoQTw8NCkrOD4+M109V2UsQXUoYiwwfGFbKDI9PSgzJmFbYj4+Ml18MCk/YjpiKy00OHwwKSs0MD4+Ml0s''@;'; put 'put ''U24sbCwxNzI5Niksdys9cWUsYz1jKzF8MDtsZT11cn1mdW5jdGlvbiBDWShsLGMsZixwLG0sQSx3LGIpe3B8PTAsbXw9MCxifD0wO3ZhciBwZSxnZSxiZSxPZSxMZSxSZSxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxIZT0wLFZlPTAscWU9MCxydD0wLFdlPTAsYXQ9MDtmb3IoUmU9bGUsbGU9''@;'; put 'put ''bGUrMTQ0MHwwLGdlPVJlKzEzOTJ8MCxPZT1SZSsxNDI0fDAsYmU9UmUsRz0wfGFbKDM9PSgwfChxPTMmYVsod3w9MCk+PjJdKSk/dzp3KzQ4fDApKzQwPj4yXSxxPTB8YVsoMj09KDB8cSk/dzp3Ky00OHwwKSs0MD4+Ml0sTT0oMHwoRD0wfGFbMjMyKyhrPTB8YVtHKzE2Pj4yXSk+PjJdKSk8''@;'; put 'put ''KDB8aXRbMjM4KyhSPTB8YVsxNisobHw9MCk+PjJdKT4+MV0pPytfW2srMjQ+PjNdLStfWyhIZT0wfGFbUisxOTY+PjJdKSsoRDw8NikrMzI+PjNdLStfWzI0KygwfGFbMTYrKDB8YVthW0hlKygoUj1EKzF8MCk8PDYpKzQ+PjJdPj4yXSk+PjJdKT4+M10tK19bSGUrKFI8PDYpKzQwPj4zXTor''@;'; put 'put ''KDB8YVtSKzI1Mj4+Ml0pLHBlPSsoMHxhWzEyKyhjfD0wKT4+Ml0pLyhWZT0rKDErKEF8PTApfDApKSxNLz1WZSxRRihsLGMsZnw9MCxHLHcsTGU9UmUrNjk2fDAsMSksUUYobCxjLGYscSx3LGJlLDApLHE9TGUrNTJ8MCx3PWJlKzUyfDAsbD0wPT0oMHxiKSxjPWYrODB8MCxrPTA7ISgoMHxr''@;'; put 'put ''KT49KDB8QSkpOyl7Zm9yKEc9MHxhW3ArKGsrbTw8Mik+PjJdLHJ0PStfW0xlKzU2KygoRD0oUj0wfGFbcT4+Ml0pLTF8MCk8PDUpKzg+PjNdLFdlPStfW0xlKzU2KyhEPDw1KSsxNj4+M10sX1sxOTIxNV09YXQ9K19bTGUrNTYrKEQ8PDUpPj4zXSxfWzE5MjE4XT1ydCxfWzE5MjE3XT1XZSso''@;'; put 'put ''cWU9cGUqKFZlPSsoMHwoaz1rKzF8MCkpKSksX1sxOTIxNl09VmU9cnQtTSpWZSxfWzE5MjE5XT1hdCxfWzE5MjIyXT1WZSxfWzE5MjIxXT1hdD0rX1tiZSs1NisoKEQ9KDB8YVt3Pj4yXSktMXwwKTw8NSkrMTY+PjNdLF9bMTkyMjBdPVZlLU0scnQ9K19bYmUrNTYrKEQ8PDUpPj4zXSxXZT0r''@;'; put 'put ''X1tiZSs1NisoRDw8NSkrOD4+M10sX1sxOTIyNV09YXQsX1sxOTIyNl09V2UsX1sxOTIyM109cnQtcWUsX1sxOTIyNF09VmUsRD0wOzspe2lmKCgwfEQpPj0oMHxSKSl7RD0wO2JyZWFrfWFbZ2U+PjJdPWFbKFI9TGUrNTYrKEQ8PDUpfDApPj4yXSxhW2dlKzQ+PjJdPWFbUis0Pj4yXSxhW2dl''@;'; put 'put ''Kzg+PjJdPWFbUis4Pj4yXSxhW2dlKzEyPj4yXT1hW1IrMTI+PjJdLGFbZ2UrMTY+PjJdPWFbUisxNj4+Ml0sYVtnZSsyMD4+Ml09YVtSKzIwPj4yXSxhW2dlKzI0Pj4yXT1hW1IrMjQ+PjJdLGFbZ2UrMjg+PjJdPWFbUisyOD4+Ml0sSjMoZixnZSksRD1EKzF8MCxSPTB8YVtxPj4yXX1mb3Io''@;'; put 'put ''OzMhPSgwfEQpOylhW2dlPj4yXT1hWyhIZT0xNTM3MjArKEQ8PDUpfDApPj4yXSxhW2dlKzQ+PjJdPWFbSGUrND4+Ml0sYVtnZSs4Pj4yXT1hW0hlKzg+PjJdLGFbZ2UrMTI+PjJdPWFbSGUrMTI+PjJdLGFbZ2UrMTY+PjJdPWFbSGUrMTY+PjJdLGFbZ2UrMjA+PjJdPWFbSGUrMjA+PjJdLGFb''@;'; put 'put ''Z2UrMjQ+PjJdPWFbSGUrMjQ+PjJdLGFbZ2UrMjg+PjJdPWFbSGUrMjg+PjJdLEozKGYsZ2UpLEQ9RCsxfDA7Zm9yKFI9MHxhW3c+PjJdO0Q9UistMXwwLCEoKDB8Uik8PTApOylhW2dlPj4yXT1hWyhSPWJlKzU2KyhEPDw1KXwwKT4+Ml0sYVtnZSs0Pj4yXT1hW1IrND4+Ml0sYVtnZSs4Pj4y''@;'; put 'put ''XT1hW1IrOD4+Ml0sYVtnZSsxMj4+Ml09YVtSKzEyPj4yXSxhW2dlKzE2Pj4yXT1hW1IrMTY+PjJdLGFbZ2UrMjA+PjJdPWFbUisyMD4+Ml0sYVtnZSsyND4+Ml09YVtSKzI0Pj4yXSxhW2dlKzI4Pj4yXT1hW1IrMjg+PjJdLEozKGYsZ2UpLFI9RDtpZihEPWw/MHxnayhmLE9lKTowfF95KGYs''@;'; put 'put ''T2UpLCEoUj0wfGFbT2U+PjJdKSlicmVhaztBdShHLDB8YVsoMj09KDMmYVtHPj4yXXwwKT9HOkcrLTQ4fDApKzQwPj4yXSxELFIsMTcyOTYpLGFbYz4+Ml09MH1sZT1SZX1mdW5jdGlvbiB1SShsLGMsZixwLG0sQSx3KXtmfD0wLEF8PTAsd3w9MDt2YXIgYixrLE0sRCxHLFI9MDtEPWxlLGxl''@;'; put 'put ''PWxlKzEyOHwwLGI9RCs5NnwwLGs9RCs2NHwwLE09RCxHNShSPUQrMzJ8MCxsfD0wLGN8PTAscHw9MCwwLG18PTApLGFbQT4+Ml09YVtSPj4yXSxhW0ErND4+Ml09YVtSKzQ+PjJdLGFbQSs4Pj4yXT1hW1IrOD4+Ml0sYVtBKzEyPj4yXT1hW1IrMTI+PjJdLGFbQSsxNj4+Ml09YVtSKzE2Pj4y''@;'; put 'put ''XSxhW0ErMjA+PjJdPWFbUisyMD4+Ml0sYVtBKzI0Pj4yXT1hW1IrMjQ+PjJdLGFbQSsyOD4+Ml09YVtSKzI4Pj4yXSxhW2s+PjJdPWFbUj4+Ml0sYVtrKzQ+PjJdPWFbUis0Pj4yXSxhW2srOD4+Ml09YVtSKzg+PjJdLGFbaysxMj4+Ml09YVtSKzEyPj4yXSxhW2srMTY+PjJdPWFbUisxNj4+''@;'; put 'put ''Ml0sYVtrKzIwPj4yXT1hW1IrMjA+PjJdLGFbaysyND4+Ml09YVtSKzI0Pj4yXSxhW2srMjg+PjJdPWFbUisyOD4+Ml0sYVtBKzQ4Pj4yXT00LHc8PDI0Pj4yND9uRChmLG0sMixBLDApOnJEKGYsbSwyLEEsMCksX1soUj1rKzI0fDApPj4zXT0rX1tBKzU2KygobT0oMHxhWyhjPUErNTJ8MCk+''@;'; put 'put ''PjJdKS0xfDApPDw1KSsyND4+M10sX1sodz1rKzh8MCk+PjNdPStfW0ErNTYrKG08PDUpKzg+PjNdLEc9K19bKDB8YVsxOTYrKDB8YVtsKzE2Pj4yXSk+PjJdKSsoYVsyMzIrKHA9MHxhW3ArMTY+PjJdKT4+Ml08PDYpKzI0Pj4zXSsgK19bcCsyND4+M10sYVtiPj4yXT1hW2s+PjJdLGFbYis0''@;'; put 'put ''Pj4yXT1hW2srND4+Ml0sYVtiKzg+PjJdPWFbays4Pj4yXSxhW2IrMTI+PjJdPWFbaysxMj4+Ml0sYVtiKzE2Pj4yXT1hW2srMTY+PjJdLGFbYisyMD4+Ml09YVtrKzIwPj4yXSxhW2IrMjQ+PjJdPWFbaysyND4+Ml0sYVtiKzI4Pj4yXT1hW2srMjg+PjJdLEtBKE0sYiw0LEcpLGFbaz4+Ml09''@;'; put 'put ''YVtNPj4yXSxhW2srND4+Ml09YVtNKzQ+PjJdLGFbays4Pj4yXT1hW00rOD4+Ml0sYVtrKzEyPj4yXT1hW00rMTI+PjJdLGFbaysxNj4+Ml09YVtNKzE2Pj4yXSxhW2srMjA+PjJdPWFbTSsyMD4+Ml0sYVtrKzI0Pj4yXT1hW00rMjQ+PjJdLGFbaysyOD4+Ml09YVtNKzI4Pj4yXSwrX1trPj4z''@;'; put 'put ''XTwrX1trKzE2Pj4zXSYmK19bdz4+M108K19bUj4+M10mJihhW2M+PjJdPTErKFI9MHxhW2M+PjJdKSxhWyhSPUErNTYrKFI8PDUpfDApPj4yXT1hW2s+PjJdLGFbUis0Pj4yXT1hW2srND4+Ml0sYVtSKzg+PjJdPWFbays4Pj4yXSxhW1IrMTI+PjJdPWFbaysxMj4+Ml0sYVtSKzE2Pj4yXT1h''@;'; put 'put ''W2srMTY+PjJdLGFbUisyMD4+Ml09YVtrKzIwPj4yXSxhW1IrMjQ+PjJdPWFbaysyND4+Ml0sYVtSKzI4Pj4yXT1hW2srMjg+PjJdKSxsZT1EfWZ1bmN0aW9uIFFGKGwsYyxmLHAsbSxBLHcpe2Z8PTAsQXw9MCx3fD0wO3ZhciBiLGssTSxELEcsUj0wO0Q9bGUsbGU9bGUrMTI4fDAsYj1EKzk2''@;'; put 'put ''fDAsaz1EKzY0fDAsTT1ELEc1KFI9RCszMnwwLGx8PTAsY3w9MCxwfD0wLDAsbXw9MCksYVtBPj4yXT1hW1I+PjJdLGFbQSs0Pj4yXT1hW1IrND4+Ml0sYVtBKzg+PjJdPWFbUis4Pj4yXSxhW0ErMTI+PjJdPWFbUisxMj4+Ml0sYVtBKzE2Pj4yXT1hW1IrMTY+PjJdLGFbQSsyMD4+Ml09YVtS''@;'; put 'put ''KzIwPj4yXSxhW0ErMjQ+PjJdPWFbUisyND4+Ml0sYVtBKzI4Pj4yXT1hW1IrMjg+PjJdLGFbaz4+Ml09YVtSPj4yXSxhW2srND4+Ml09YVtSKzQ+PjJdLGFbays4Pj4yXT1hW1IrOD4+Ml0sYVtrKzEyPj4yXT1hW1IrMTI+PjJdLGFbaysxNj4+Ml09YVtSKzE2Pj4yXSxhW2srMjA+PjJdPWFb''@;'; put 'put ''UisyMD4+Ml0sYVtrKzI0Pj4yXT1hW1IrMjQ+PjJdLGFbaysyOD4+Ml09YVtSKzI4Pj4yXSxhW0ErNDg+PjJdPTEsdzw8MjQ+PjI0P25EKGYsbSwyLEEsMCk6ckQoZixtLDIsQSwwKSxfWyhSPWsrMjR8MCk+PjNdPStfW0ErNTYrKChtPSgwfGFbKGM9QSs1MnwwKT4+Ml0pLTF8MCk8PDUpKzI0''@;'; put 'put ''Pj4zXSxfWyh3PWsrOHwwKT4+M109K19bQSs1NisobTw8NSkrOD4+M10sRz0rX1syNCsocD0wfGFbcCsxNj4+Ml0pPj4zXS0rX1soMHxhWzE5NisoMHxhW2wrMTY+PjJdKT4+Ml0pKyhhW3ArMjMyPj4yXTw8NikrMjQ+PjNdLGFbYj4+Ml09YVtrPj4yXSxhW2IrND4+Ml09YVtrKzQ+PjJdLGFb''@;'; put 'put ''Yis4Pj4yXT1hW2srOD4+Ml0sYVtiKzEyPj4yXT1hW2srMTI+PjJdLGFbYisxNj4+Ml09YVtrKzE2Pj4yXSxhW2IrMjA+PjJdPWFbaysyMD4+Ml0sYVtiKzI0Pj4yXT1hW2srMjQ+PjJdLGFbYisyOD4+Ml09YVtrKzI4Pj4yXSxLQShNLGIsMSxHKSxhW2s+PjJdPWFbTT4+Ml0sYVtrKzQ+PjJd''@;'; put 'put ''PWFbTSs0Pj4yXSxhW2srOD4+Ml09YVtNKzg+PjJdLGFbaysxMj4+Ml09YVtNKzEyPj4yXSxhW2srMTY+PjJdPWFbTSsxNj4+Ml0sYVtrKzIwPj4yXT1hW00rMjA+PjJdLGFbaysyND4+Ml09YVtNKzI0Pj4yXSxhW2srMjg+PjJdPWFbTSsyOD4+Ml0sK19baz4+M108K19baysxNj4+M10mJitf''@;'; put 'put ''W3c+PjNdPCtfW1I+PjNdJiYoYVtjPj4yXT0xKyhSPTB8YVtjPj4yXSksYVsoUj1BKzU2KyhSPDw1KXwwKT4+Ml09YVtrPj4yXSxhW1IrND4+Ml09YVtrKzQ+PjJdLGFbUis4Pj4yXT1hW2srOD4+Ml0sYVtSKzEyPj4yXT1hW2srMTI+PjJdLGFbUisxNj4+Ml09YVtrKzE2Pj4yXSxhW1IrMjA+''@;'; put 'put ''PjJdPWFbaysyMD4+Ml0sYVtSKzI0Pj4yXT1hW2srMjQ+PjJdLGFbUisyOD4+Ml09YVtrKzI4Pj4yXSksbGU9RH1mdW5jdGlvbiBXNShsLGMsZil7Zj0rZixfWyhsfD0wKT4+M109Yz0rYyxfW2wrOD4+M109Zn1mdW5jdGlvbiBrWShsLGMsZixwLG0sQSx3KXtsfD0wLGN8PTAsQXw9MCx3fD0w''@;'; put 'put ''O3ZhciBMZSxSZSxWZSxxZSxhdCxTdCxrdCxzdCxFdCxadCxjdCxidCxhbixTbixIbix1cixIcixFcixmcixEcixKcixMcixsMCxWaSxPaSxSbyxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxIZT0wLHJ0PTAsV2U9MCxsbz0wO2ZvcihSbz1sZSxsZT1s''@;'; put 'put ''ZSsyODh8MCxmcj1SbysyNTZ8MCxFcj1SbysyNDB8MCxIcj1SbysyMjR8MCxsMD1SbysyODB8MCxWaT1SbysyNzJ8MCxPaT1SbyszMnwwLERyPVJvKzE2fDAsSnI9Um8saz1SbysyMDh8MCxNPVJvKzE5MnwwLEQ9MHxhWyhmfD0wKSsoKHB8PTApPDwyKT4+Ml0sTHI9MHx2cigobXw9MCk8PDIp''@;'; put 'put ''LGI9MDshKCgwfGIpPj0oMHxtKSk7KWFbTHIrKGI8PDIpPj4yXT1hW2YrKGIrcDw8Mik+PjJdLGI9YisxfDA7Zm9yKHgxKExyLG0sNCw1OSksV2U9MTYrKDB8YVsoRD1EKzE2fDApPj4yXSl8MCxhW0VyPj4yXT1hWyhwPTE2KygwfGFbKGY9bCsxNnwwKT4+Ml0pfDApPj4yXSxhW0VyKzQ+PjJd''@;'; put 'put ''PWFbcCs0Pj4yXSxhW0VyKzg+PjJdPWFbcCs4Pj4yXSxhW0VyKzEyPj4yXT1hW3ArMTI+PjJdLGFbZnI+PjJdPWFbV2U+PjJdLGFbZnIrND4+Ml09YVtXZSs0Pj4yXSxhW2ZyKzg+PjJdPWFbV2UrOD4+Ml0sYVtmcisxMj4+Ml09YVtXZSsxMj4+Ml0sQnUoayxFcixmciksYVtEcj4+Ml09YVtr''@;'; put 'put ''Pj4yXSxhW0RyKzQ+PjJdPWFbays0Pj4yXSxhW0RyKzg+PjJdPWFbays4Pj4yXSxhW0RyKzEyPj4yXT1hW2srMTI+PjJdLEQ9NTYrKDB8YVtEPj4yXSl8MCxhW0VyPj4yXT1hWyhwPTE2KygwfGFbKFdlPWMrMTZ8MCk+PjJdKXwwKT4+Ml0sYVtFcis0Pj4yXT1hW3ArND4+Ml0sYVtFcis4Pj4y''@;'; put 'put ''XT1hW3ArOD4+Ml0sYVtFcisxMj4+Ml09YVtwKzEyPj4yXSxhW2ZyPj4yXT1hW0Q+PjJdLGFbZnIrND4+Ml09YVtEKzQ+PjJdLGFbZnIrOD4+Ml09YVtEKzg+PjJdLGFbZnIrMTI+PjJdPWFbRCsxMj4+Ml0sQnUoTSxFcixmciksYVtKcj4+Ml09YVtNPj4yXSxhW0pyKzQ+PjJdPWFbTSs0Pj4y''@;'; put 'put ''XSxhW0pyKzg+PjJdPWFbTSs4Pj4yXSxhW0pyKzEyPj4yXT1hW00rMTI+PjJdLE9lPS41KihiZT0oUmU9K19bSnI+PjNdLStfWzg4KygwfGFbV2U+PjJdKT4+M10pKyhMZT0rX1s5NisoMHxhW2Y+PjJdKT4+M10rICtfW0RyPj4zXSkpLFdlPTB8YVtMcj4+Ml0sYVtPaT4+Ml09YVtEcj4+Ml0s''@;'; put 'put ''YVtPaSs0Pj4yXT1hW0RyKzQ+PjJdLGFbT2krOD4+Ml09YVtEcis4Pj4yXSxhW09pKzEyPj4yXT1hW0RyKzEyPj4yXSxhWyhEPU9pKzE2fDApPj4yXT1hW0RyPj4yXSxhW0QrND4+Ml09YVtEcis0Pj4yXSxhW0QrOD4+Ml09YVtEcis4Pj4yXSxhW0QrMTI+PjJdPWFbRHIrMTI+PjJdLGFbKGY9''@;'; put 'put ''T2krMzJ8MCk+PjJdPWFbSnI+PjJdLGFbZis0Pj4yXT1hW0pyKzQ+PjJdLGFbZis4Pj4yXT1hW0pyKzg+PjJdLGFbZisxMj4+Ml09YVtKcisxMj4+Ml0sYVsocD1PaSs0OHwwKT4+Ml09YVtKcj4+Ml0sYVtwKzQ+PjJdPWFbSnIrND4+Ml0sYVtwKzg+PjJdPWFbSnIrOD4+Ml0sYVtwKzEyPj4y''@;'; put 'put ''XT1hW0pyKzEyPj4yXSxBdShXZSwwfGFbKDI9PSgzJmFbV2U+PjJdfDApP1dlOldlKy00OHwwKSs0MD4+Ml0sT2ksNCwxNzI5NiksX1s1NisoV2U9MHxhWzk2KygwfGFbV2UrMTY+PjJdKT4+Ml0pPj4zXT1PZSxfW1dlKzY0Pj4zXT0uNSooNisocGU9K19bV2UrMzI+PjNdKSkrKHE9K19bKFZl''@;'; put 'put ''PURyKzh8MCk+PjNdKSxmZVtXZSs4MT4+MF09MSxxZT0uNSooYmUtKHJ0PStfW1dlKzI0Pj4zXSkpLHJ0PS41KihydCtiZSksV2U9T2krMjR8MCxhdD1PaSs0MHwwLFN0PU9pKzU2fDAsa3Q9T2krNjR8MCxzdD1Kcis4fDAsRXQ9T2krNzJ8MCxadD1PaSs4MHwwLGN0PU9pKzg4fDAsYnQ9T2kr''@;'; put 'put ''OTZ8MCxhbj1PaSsxMDR8MCxTbj1PaSsxMTJ8MCxIbj1PaSsxMjB8MCx1cj1sMCs0fDAsTT02PT0oMHxBKSYxLEc9MCxSPTAscGUrPXErPTMsaz0xOzspe2lmKCgwfGspPj0oMHx3KSl7SGU9NjticmVha31pZihjPTB8YVtMcisoazw8Mik+PjJdLDEmaz8obD0wfGFbOTYrKDB8YVsoYj1jKzE2''@;'; put 'put ''fDApPj4yXSk+PjJdLDE9PSgwfGspJiYoRz0uNSooKFI9K19bbCsyND4+M10pK2JlKSxSPS41KihiZS1SKSkscT1xKy02LStfW2wrMzI+PjNdLGFbT2k+PjJdPWFbRHI+PjJdLGFbT2krND4+Ml09YVtEcis0Pj4yXSxhW09pKzg+PjJdPWFbRHIrOD4+Ml0sYVtPaSsxMj4+Ml09YVtEcisxMj4+''@;'; put 'put ''Ml0sX1tEPj4zXT0rX1tEcj4+M10sX1tXZT4+M109Z2U9cSstNixfW2Y+PjNdPStfW0pyPj4zXSxfW2F0Pj4zXT1nZSxhW3A+PjJdPWFbSnI+PjJdLGFbcCs0Pj4yXT1hW0pyKzQ+PjJdLGFbcCs4Pj4yXT1hW0pyKzg+PjJdLGFbcCsxMj4+Ml09YVtKcisxMj4+Ml0sX1trdD4+M109RyxfW0V0''@;'; put 'put ''Pj4zXT0rX1tzdD4+M10sX1tadD4+M109RyxfW2N0Pj4zXT1xLF9bYnQ+PjNdPVIsX1thbj4+M109cSxfW1NuPj4zXT1SLF9bSG4+PjNdPStfW1ZlPj4zXSxnZT0uNSorX1szMisoMHxhWzk2KygwfGFbYj4+Ml0pPj4yXSk+PjNdK3EpOihhW09pPj4yXT1hW0RyPj4yXSxhW09pKzQ+PjJdPWFb''@;'; put 'put ''RHIrND4+Ml0sYVtPaSs4Pj4yXT1hW0RyKzg+PjJdLGFbT2krMTI+PjJdPWFbRHIrMTI+PjJdLF9bRD4+M109cWUsX1tXZT4+M109K19bVmU+PjNdLF9bZj4+M109cWUsX1thdD4+M109cGUsX1twPj4zXT1ydCxfW1N0Pj4zXT1wZSxfW2t0Pj4zXT1ydCxfW0V0Pj4zXT1nZT0rX1tzdD4+M10s''@;'; put 'put ''X1tadD4+M109bG89K19bSnI+PjNdLF9bY3Q+PjNdPWdlLF9bYnQ+PjNdPWxvLF9bYW4+PjNdPWxvPXBlKzYsX1tTbj4+M109K19bRHI+PjNdLF9bSG4+PjNdPWxvLGdlPWxvKy41KihwZT0rX1szMisoMHxhWzk2KygwfGFbYysxNj4+Ml0pPj4yXSk+PjNdKSxwZT1sbytwZSksYVt1cj4+Ml09''@;'; put 'put ''OCxhW2wwPj4yXT1PaSxhW0hyPj4yXT1hW0RyPj4yXSxhW0hyKzQ+PjJdPWFbRHIrND4+Ml0sYVtIcis4Pj4yXT1hW0RyKzg+PjJdLGFbSHIrMTI+PjJdPWFbRHIrMTI+PjJdLGFbRXI+PjJdPWFbSnI+PjJdLGFbRXIrND4+Ml09YVtKcis0Pj4yXSxhW0VyKzg+PjJdPWFbSnIrOD4+Ml0sYVtF''@;'; put 'put ''cisxMj4+Ml09YVtKcisxMj4+Ml0sYVtmcj4+Ml09YVtsMD4+Ml0sYVtmcis0Pj4yXT1hW2wwKzQ+PjJdLGI9MHwkSShIcixFcixmcixWaSxNKSwhKGw9MHxhW1ZpPj4yXSkpYnJlYWs7X1s1NisoQT0wfGFbOTYrKDB8YVtjKzE2Pj4yXSk+PjJdKT4+M109T2UsX1tBKzY0Pj4zXT1nZSxmZVtB''@;'; put 'put ''KzgxPj4wXT0xLEF1KGMsMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdLGIsbCwxNzI5Niksaz1rKzF8MH1lOmRve2lmKDY9PSgwfEhlKSl7Zm9yKE9lPS4zMzMzMzMzMzMzMzMzMzMzKihSZSsyKkxlKSxiZT0uMzMzMzMzMzMzMzMzMzMzMyooMipSZStMZSk7ISgoMHxr''@;'; put 'put ''KT49KDB8bSkpOyl7aWYoYz0wfGFbTHIrKGs8PDIpPj4yXSwxJms/KGdlPShIZT0xPT0oMHxrKSk/T2U6UixHPUhlP2JlOkcsUj1xKy02LGFbT2k+PjJdPWFbRHI+PjJdLGFbT2krND4+Ml09YVtEcis0Pj4yXSxhW09pKzg+PjJdPWFbRHIrOD4+Ml0sYVtPaSsxMj4+Ml09YVtEcisxMj4+Ml0s''@;'; put 'put ''X1tEPj4zXT0rX1tEcj4+M10sX1tXZT4+M109cSs9LTEyLF9bZj4+M109K19bSnI+PjNdLF9bYXQ+PjNdPXEsYVtwPj4yXT1hW0pyPj4yXSxhW3ArND4+Ml09YVtKcis0Pj4yXSxhW3ArOD4+Ml09YVtKcis4Pj4yXSxhW3ArMTI+PjJdPWFbSnIrMTI+PjJdLF9ba3Q+PjNdPUcsX1tFdD4+M109''@;'; put 'put ''K19bc3Q+PjNdLF9bWnQ+PjNdPUcsX1tjdD4+M109UixfW2J0Pj4zXT1nZSxfW2FuPj4zXT1SLF9bU24+PjNdPWdlLHE9UixSPStfW1ZlPj4zXSk6KGFbT2k+PjJdPWFbRHI+PjJdLGFbT2krND4+Ml09YVtEcis0Pj4yXSxhW09pKzg+PjJdPWFbRHIrOD4+Ml0sYVtPaSsxMj4+Ml09YVtEcisx''@;'; put 'put ''Mj4+Ml0sX1tEPj4zXT1xZSxfW1dlPj4zXT0rX1tWZT4+M10sX1tmPj4zXT1xZSxfW2F0Pj4zXT1wZSxfW3A+PjNdPXJ0LF9bU3Q+PjNdPXBlLF9ba3Q+PjNdPXJ0LF9bRXQ+PjNdPWdlPStfW3N0Pj4zXSxfW1p0Pj4zXT1sbz0rX1tKcj4+M10sX1tjdD4+M109Z2UsX1tidD4+M109bG8sX1th''@;'; put 'put ''bj4+M109bG89cGUrNixfW1NuPj4zXT0rX1tEcj4+M10scGU9bG8sZ2U9UixSPWxvKSxfW0huPj4zXT1SLGFbdXI+PjJdPTgsYVtsMD4+Ml09T2ksYVtIcj4+Ml09YVtEcj4+Ml0sYVtIcis0Pj4yXT1hW0RyKzQ+PjJdLGFbSHIrOD4+Ml09YVtEcis4Pj4yXSxhW0hyKzEyPj4yXT1hW0RyKzEy''@;'; put 'put ''Pj4yXSxhW0VyPj4yXT1hW0pyPj4yXSxhW0VyKzQ+PjJdPWFbSnIrND4+Ml0sYVtFcis4Pj4yXT1hW0pyKzg+PjJdLGFbRXIrMTI+PjJdPWFbSnIrMTI+PjJdLGFbZnI+PjJdPWFbbDA+PjJdLGFbZnIrND4+Ml09YVtsMCs0Pj4yXSxiPTB8JEkoSHIsRXIsZnIsVmksTSksIShsPTB8YVtWaT4+''@;'; put 'put ''Ml0pKWJyZWFrIGU7QXUoYywwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpjKy00OHwwKSs0MD4+Ml0sYixsLDE3Mjk2KSxrPWsrMXwwLFI9Z2V9RnQoTHIpfX13aGlsZSgwKTtsZT1Sb31mdW5jdGlvbiBTWShsLGMpe2N8PTA7dmFyIG0sQSxiLGY9MCxwPTAsdz0wO2ZvcihtPWxlLGxlPWxlKzE2''@;'; put 'put ''fDAscD1tLHc9MD09KDB8U2MobHw9MCkpLGZlW3A+PjBdPTB8ZmVbKHc9dz8xODU5MjoxODU4NCk+PjBdLGZlW3ArMT4+MF09MHxmZVt3KzE+PjBdLGZlW3ArMj4+MF09MHxmZVt3KzI+PjBdLGZlW3ArMz4+MF09MHxmZVt3KzM+PjBdLGgwKHA9MHxvYyg4NTQ5MyxwLDApLDEzNzQ4MywyODAs''@;'; put 'put ''MSksc2kocCwwLDg3MTcxLDE5NTA1OSksdz0wfHZyKDk2KSxhWzgrKGY9MHxhW3ArMTY+PjJdKT4+Ml09dyxfW3c+PjNdPStfWyhiPTB8YVs4KyhBPTB8YVtsKzE2Pj4yXSk+PjJdKT4+M10sX1t3KzI0Pj4zXT0rX1tiKzI0Pj4zXSxmZVtmKzExNT4+MF09MHxmZVtBKzExNT4+MF0sYVtmKzEx''@;'; put 'put ''Nj4+Ml09MSZhW0ErMTE2Pj4yXV4xLGFbZisyNDg+PjJdPWFbQSsyNDg+PjJdLGFbZisyNTI+PjJdPWFbQSsyNTI+PjJdLGY9MHxOcygwfGRpKGwpLDEsMCk7Zjspc2kocCwxLDB8YVtmKzg+PjJdLDB8YVtmKzEyPj4yXSksZj0wfE5zKDB8ZGkobCksMSxmKTtmb3IoZj0wfE5zKDB8ZGkobCks''@;'; put 'put ''MiwwKTtmOylzaShwLDIsMHxhW2YrOD4+Ml0sMHxhW2YrMTI+PjJdKSxmPTB8TnMoMHxkaShsKSwyLGYpO3JldHVybiAwfHNpKHAsMiwxMTE0NjQsMCl8fHNpKHAsMiwxMTE0NjQsMTk1MDU5KSwwfHNpKHAsMiwxMTE0NTUsMCl8fHNpKHAsMiwxMTE0NTUsMTk1MDU5KSxmdW5jdGlvbiB2MGUo''@;'; put 'put ''bCxjKXtsfD0wLGFbKGN8PTApPj4yXT1hWzQ3MTg5XSxhW2MrND4+Ml09YVs0NzE5M10sYVtjKzg+PjJdPWFbNDcxOTRdLGFbYysxMj4+Ml09YVs0NzE3NF0sYVtjKzE2Pj4yXT1hWzQ3MTc1XSxhW2MrMjA+PjJdPWFbNDcxODFdLGFbYysyND4+Ml09YVs0NzE4MF0sYVtjKzI4Pj4yXT1hWzQ3''@;'; put 'put ''MTc5XSxhW2MrMzI+PjJdPWFbNDcyMDVdLGFbYyszNj4+Ml09YVs0NzE5N10sYVtjKzQwPj4yXT1hWzQ3MTgyXSxhW2MrNDQ+PjJdPWFbNDcxOTJdLGFbYys0OD4+Ml09YVs0NzIwMV0sYVtjKzUyPj4yXT1hWzQ3MjAwXSxhW2MrNTY+PjJdPWFbNDcxOTldLGFbYys2MD4+Ml09YVs0NzIwNF0s''@;'; put 'put ''YVtjKzY0Pj4yXT1hWzQ3MTk4XSxhW2MrNjg+PjJdPWFbNDcxODNdLGFbYys3Mj4+Ml09YVs0NzE0NV0sYVtjKzc2Pj4yXT1hWzQ3MTQ2XSxhW2MrODA+PjJdPWFbNDcxNDddLGFbYys4ND4+Ml09YVs0NzE1N10sYVtjKzg4Pj4yXT1hWzQ3MTUwXSxhW2MrOTI+PjJdPWFbNDcxNTFdLGFbYys5''@;'; put 'put ''Nj4+Ml09YVs0NzE1Ml0sYVtjKzEwMD4+Ml09YVs0NzE1NF0sYVtjKzEwND4+Ml09YVs0NzE1NV0sYVtjKzEwOD4+Ml09YVs0NzE1OF0sYVtjKzExMj4+Ml09YVs0NzE2MV0sYVtjKzExNj4+Ml09YVs0NzE1OV0sYVtjKzEyMD4+Ml09YVs0NzE2MF0sYVtjKzEyND4+Ml09YVs0NzE2M10sYVtj''@;'; put 'put ''KzEyOD4+Ml09YVs0NzE2Ml0sYVtjKzEzMj4+Ml09YVs0NzE2NF0sYVtjKzEzNj4+Ml09YVs0NzE2NV0sYVtjKzE0MD4+Ml09YVs0NzE1Nl0sYVtjKzE0ND4+Ml09YVs0NzE2OF0sYVtjKzE1Mj4+Ml09YVs0NzEzOF0sYVtjKzE0OD4+Ml09YVs0NzE0MF0sYVs0NzE4OV09MCxhWzQ3MTkzXT0w''@;'; put 'put ''fHNpKGwsMiw4NzQxMiwwKSxhWzQ3MTk0XT0wfHNpKGwsMiw4NzQyMSwwKSxjPTB8c2kobCwyLDEwMTU0MSwwKSxhWzQ3MTc0XT1jLGN8fChhWzQ3MTc0XT0wfHNpKGwsMiwxMDE1NDEsMTk1MDU5KSksYVs0NzE3NV09MCxhWzQ3MTgxXT0wLGFbNDcxODBdPTB8c2kobCwyLDEwMTQzNywwKSxh''@;'; put 'put ''WzQ3MTc5XT0wfHNpKGwsMiwxMDE0MjgsMCksYVs0NzIwNV09MHxzaShsLDIsMTAxNzE3LDApLGFbNDcxOTddPTAsYVs0NzE4Ml09MHxzaShsLDIsMTA4MjI0LDApLGFbNDcxOTJdPTB8c2kobCwyLDg1NDk4LDApLGFbNDcyMDFdPTAsYVs0NzIwMF09MHxzaShsLDIsMTAxNjE3LDApLGFbNDcx''@;'; put 'put ''OTldPTB8c2kobCwyLDEwMTYwMywwKSxhWzQ3MjA0XT0wfHNpKGwsMiwxMDE3MDgsMCksYVs0NzE5OF09MCxhWzQ3MTgzXT0wLGFbNDcxNDVdPTB8c2kobCwxLDE0MTA0OCwwKSxhWzQ3MTQ2XT0wfHNpKGwsMSwxNDExMTYsMCksYVs0NzE0N109MHxzaShsLDEsMTA4MjMwLDApLGFbNDcxNTdd''@;'; put 'put ''PTAsYVs0NzE1MF09MHxzaShsLDEsMTAxNDI4LDApLGFbNDcxNTFdPTB8c2kobCwxLDEwMTQzNywwKSxhWzQ3MTUyXT0wLGFbNDcxNTRdPTB8c2kobCwxLDEwODIyNCwwKSxhWzQ3MTU1XT0wLGFbNDcxNThdPTAsYVs0NzE2MV09MHxzaShsLDEsMTAxNDA5LDApLGFbNDcxNTldPTB8c2kobCwx''@;'; put 'put ''LDE0MTA3NiwwKSxhWzQ3MTYwXT0wfHNpKGwsMSwxMDE0NzIsMCksYVs0NzE2M109MHxzaShsLDEsMTAxNDg0LDApLGFbNDcxNjJdPTB8c2kobCwxLDEwMTM0OCwwKSxhWzQ3MTY0XT0wfHNpKGwsMSwxMDE0ODksMCksYVs0NzE2NV09MHxzaShsLDEsODU1MTAsMCksYVs0NzE1Nl09MCxhWzQ3''@;'; put 'put ''MTY4XT0wLGFbNDcxNDBdPTB8c2kobCwwLDEwMTQwOSwwKX0ocCxjKSxsZT1tLDB8cH1mdW5jdGlvbiBZQyhsLGMpe3ZhciBmLHAsbT0wO3JldHVybiBwPWxlLGxlPWxlKzE2fDAsZj1wLGgwKGw9MHxHcihsfD0wLDB8dGkoY3w9MCksMSksMTM3NDQ3LDMwNCwxKSxSNihjLGwpLDI9PSgwfCQ1''@;'; put 'put ''KGMpKSYmKGM9MHxRbigzKygwfFVvKDB8YVthWzEwNCsoMHxhWyhtPWMrMTZ8MCk+PjJdKT4+Ml0+PjJdKSl8MCksYVtmPj4yXT1hW2FbMTA0KygwfGFbbT4+Ml0pPj4yXT4+Ml0sb28oYyw4NTQ4OCxmKSxrYyhsLDEwODIyNCxjKSksbGU9cCwwfGx9ZnVuY3Rpb24gWTUobCxjLGYscCl7cmV0''@;'; put 'put ''dXJuIHB8PTAsaDAoZj0wfEthKGx8PTAsY3w9MCxmfD0wLDAsMSksMTM3NDYwLDE3NiwxKSxSNihwLGYpLDB8Zn1mdW5jdGlvbiBjbChsLGMsZixwKXtsfD0wLGN8PTAsZnw9MDt2YXIgbSxBLHcsYj0wO3c9bGUsbGU9bGUrMzJ8MCxBPXcrMTZ8MCxtPXcsMHwocHw9MCkmJihiPStfW2M+PjNd''@;'; put 'put ''LF9bYz4+M109K19bKHA9Yys4fDApPj4zXSxfW3A+PjNdPS1iKSxhW20+PjJdPWFbYz4+Ml0sYVttKzQ+PjJdPWFbYys0Pj4yXSxhW20rOD4+Ml09YVtjKzg+PjJdLGFbbSsxMj4+Ml09YVtjKzEyPj4yXSxhW0E+PjJdPWFbZj4+Ml0sYVtBKzQ+PjJdPWFbZis0Pj4yXSxhW0ErOD4+Ml09YVtm''@;'; put 'put ''Kzg+PjJdLGFbQSsxMj4+Ml09YVtmKzEyPj4yXSxCdShsLG0sQSksbGU9d31mdW5jdGlvbiBVQyhsLGMpe2x8PTAsYVs0NzE4OV09YVsoY3w9MCk+PjJdLGFbNDcxOTNdPWFbYys0Pj4yXSxhWzQ3MTk0XT1hW2MrOD4+Ml0sYVs0NzE3NF09YVtjKzEyPj4yXSxhWzQ3MTc1XT1hW2MrMTY+PjJd''@;'; put 'put ''LGFbNDcxODFdPWFbYysyMD4+Ml0sYVs0NzE4MF09YVtjKzI0Pj4yXSxhWzQ3MTc5XT1hW2MrMjg+PjJdLGFbNDcyMDVdPWFbYyszMj4+Ml0sYVs0NzE5N109YVtjKzM2Pj4yXSxhWzQ3MTgyXT1hW2MrNDA+PjJdLGFbNDcxOTJdPWFbYys0ND4+Ml0sYVs0NzIwMV09YVtjKzQ4Pj4yXSxhWzQ3''@;'; put 'put ''MjAwXT1hW2MrNTI+PjJdLGFbNDcxOTldPWFbYys1Nj4+Ml0sYVs0NzIwNF09YVtjKzYwPj4yXSxhWzQ3MTk4XT1hW2MrNjQ+PjJdLGFbNDcxODNdPWFbYys2OD4+Ml0sYVs0NzE0NV09YVtjKzcyPj4yXSxhWzQ3MTQ2XT1hW2MrNzY+PjJdLGFbNDcxNDddPWFbYys4MD4+Ml0sYVs0NzE1N109''@;'; put 'put ''YVtjKzg0Pj4yXSxhWzQ3MTUwXT1hW2MrODg+PjJdLGFbNDcxNTFdPWFbYys5Mj4+Ml0sYVs0NzE1Ml09YVtjKzk2Pj4yXSxhWzQ3MTU0XT1hW2MrMTAwPj4yXSxhWzQ3MTU1XT1hW2MrMTA0Pj4yXSxhWzQ3MTU4XT1hW2MrMTA4Pj4yXSxhWzQ3MTYxXT1hW2MrMTEyPj4yXSxhWzQ3MTU5XT1h''@;'; put 'put ''W2MrMTE2Pj4yXSxhWzQ3MTYwXT1hW2MrMTIwPj4yXSxhWzQ3MTYzXT1hW2MrMTI0Pj4yXSxhWzQ3MTYyXT1hW2MrMTI4Pj4yXSxhWzQ3MTY0XT1hW2MrMTMyPj4yXSxhWzQ3MTY1XT1hW2MrMTM2Pj4yXSxhWzQ3MTU2XT1hW2MrMTQwPj4yXSxhWzQ3MTY4XT1hW2MrMTQ0Pj4yXSxhWzQ3MTQw''@;'; put 'put ''XT1hW2MrMTQ4Pj4yXSxhWzQ3MTM4XT1hW2MrMTUyPj4yXSxGdChjKSxINShsKSxDMShsKX1mdW5jdGlvbiBVNShsLGMpe3ZhciBmLHAsbSxBLHc7cmV0dXJuIGY9bGUsbGU9bGUrMTZ8MCxwPWYrOHwwLEE9MTcyKygwfGFbMTYrKGN8PTApPj4yXSl8MCxhWyhtPWYpPj4yXT1hWyh3PTE4MCso''@;'; put 'put ''MHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4yXSxhW20rND4+Ml09YVt3KzQ+PjJdLGFbcD4+Ml09YVtBPj4yXSxhW3ArND4+Ml09YVtBKzQ+PjJdLGM9MHxKRihsLG0sYyxwKSxsZT1mLDB8Y31mdW5jdGlvbiBKRihsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MDttPTB8YVs0Kyhj''@;'; put 'put ''fD0wKT4+Ml07ZTpkb3tpZigoMHxtKT4wJiYoQT0wfGFbcCs0Pj4yXSwoMHxBKT4wKSlpZigoMHxtKTwoMHxBKSlmb3IobT0wfGFbYz4+Ml0scD0wOzspe2lmKCEoYz0wfGFbbSsocDw8Mik+PjJdKSl7Yz0wO2JyZWFrIGV9aWYoKDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOmMrLTQ4fDApKzQw''@;'; put 'put ''Pj4yXSk9PSgwfGYpKWJyZWFrO3A9cCsxfDB9ZWxzZSBmb3IobT0wfGFbcD4+Ml0scD0wOzspe2lmKCEoYz0wfGFbbSsocDw8Mik+PjJdKSl7Yz0wO2JyZWFrIGV9aWYoKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOmMrNDh8MCkrNDA+PjJdKT09KDB8bCkpYnJlYWs7cD1wKzF8MH1lbHNlIGM9''@;'; put 'put ''MH13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1bmN0aW9uIE1ZKGwsYyl7dmFyIGYscCxtLEEsdztyZXR1cm4gZj1sZSxsZT1sZSsxNnwwLHA9Zis4fDAsQT0xOTYrKDB8YVsxNisoY3w9MCk+PjJdKXwwLGFbKG09Zik+PjJdPWFbKHc9MTg4KygwfGFbMTYrKGx8PTApPj4yXSl8MCk+PjJdLGFbbSs0''@;'; put 'put ''Pj4yXT1hW3crND4+Ml0sYVtwPj4yXT1hW0E+PjJdLGFbcCs0Pj4yXT1hW0ErND4+Ml0sYz0wfEpGKGwsbSxjLHApLGxlPWYsMHxjfWZ1bmN0aW9uIFFDKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTA7cmV0dXJuIHA9NDgrKGx8PTApfDAsYz0oYz0wfGFbMTgwKyhmPTB8YVsxNisoMHxhWygzPT0o''@;'; put 'put ''MyZhW2w+PjJdfDApP2w6cCkrNDA+PjJdKT4+Ml0pPj4yXSk/MHxWMChjLDgrKGFbZisxODQ+PjJdPDwyKXwwKTowfFFuKDgrKGFbZisxODQ+PjJdPDwyKXwwKSxhWzE4MCsoMHxhWzE2KygwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpwKSs0MD4+Ml0pPj4yXSk+PjJdPWMsZj0wfGFbMTgwKyht''@;'; put 'put ''PTB8YVsxNisoMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6cCkrNDA+PjJdKT4+Ml0pPj4yXSxhWyhtPW0rMTg0fDApPj4yXT0xKyhjPTB8YVttPj4yXSksYVtmKyhjPDwyKT4+Ml09bCxhWygwfGFbMTgwKyhwPTB8YVsxNisoMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6cCkrNDA+PjJdKT4+Ml0p''@;'; put 'put ''Pj4yXSkrKGFbcCsxODQ+PjJdPDwyKT4+Ml09MCxwPWwrLTQ4fDAsYz0oZj0wfGFbMTcyKyhjPTB8YVsxNisoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6cCkrNDA+PjJdKT4+Ml0pPj4yXSk/MHxWMChmLDgrKGFbYysxNzY+PjJdPDwyKXwwKTowfFFuKDgrKGFbYysxNzY+PjJdPDwyKXwwKSxh''@;'; put 'put ''WzE3MisoMHxhWzE2KygwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpwKSs0MD4+Ml0pPj4yXSk+PjJdPWMsZj0wfGFbMTcyKyhjPTB8YVsxNisoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6cCkrNDA+PjJdKT4+Ml0pPj4yXSxhWyhjPWMrMTc2fDApPj4yXT0xKyhtPTB8YVtjPj4yXSksYVtmKyht''@;'; put 'put ''PDwyKT4+Ml09bCxhWygwfGFbMTcyKyhtPTB8YVsxNisoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6cCkrNDA+PjJdKT4+Ml0pPj4yXSkrKGFbbSsxNzY+PjJdPDwyKT4+Ml09MCwwfGx9ZnVuY3Rpb24gc3AobCxjKXtjfD0wO3ZhciBwLG0sZj0wLEE9MCx3PTAsYj0wO2ZvcihtPTB8YVsocD00''@;'; put 'put ''KyhsfD0wKXwwKT4+Ml0sZj0wOyEoKDB8Zik+PSgwfG0pKTspe2lmKCgwfGFbKHc9KEE9MHxhW2w+PjJdKSsoZjw8Mil8MCk+PjJdKT09KDB8Yykpe2I9NDticmVha31mPWYrMXwwfTQ9PSgwfGIpJiYoYVtwPj4yXT1iPW0rLTF8MCxhW3c+PjJdPWFbQSsoYjw8Mik+PjJdLGFbKDB8YVtsPj4y''@;'; put 'put ''XSkrKGI8PDIpPj4yXT0wKX1mdW5jdGlvbiBZMyhsKXtpZihsfD0wKXJldHVybiBzcCgxODArKDB8YVsxNisoMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6bCs0OHwwKSs0MD4+Ml0pPj4yXSl8MCxsKSx2b2lkIHNwKDE3MisoMHxhWzE2KygwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHww''@;'; put 'put ''KSs0MD4+Ml0pPj4yXSl8MCxsKTtQcig4NTU1MSw4NTU2MSwxMTcsODU1NzApfWZ1bmN0aW9uICRkKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTA7cD00OCsobHw9MCl8MCxjPShjPTB8YVsyMDQrKGY9MHxhWzE2KygwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpwKSs0MD4+Ml0pPj4yXSk+PjJdKT8w''@;'; put 'put ''fFYwKGMsOCsoYVtmKzIwOD4+Ml08PDIpfDApOjB8UW4oOCsoYVtmKzIwOD4+Ml08PDIpfDApLGFbMjA0KygwfGFbMTYrKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOnApKzQwPj4yXSk+PjJdKT4+Ml09YyxjPTB8YVsyMDQrKG09MHxhWzE2KygwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpwKSs0''@;'; put 'put ''MD4+Ml0pPj4yXSk+PjJdLGFbKG09bSsyMDh8MCk+PjJdPTErKGY9MHxhW20+PjJdKSxhW2MrKGY8PDIpPj4yXT1sLGFbKDB8YVsyMDQrKHA9MHxhWzE2KygwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpwKSs0MD4+Ml0pPj4yXSk+PjJdKSsoYVtwKzIwOD4+Ml08PDIpPj4yXT0wfWZ1bmN0aW9u''@;'; put 'put ''IEVZKGwpeyFmdW5jdGlvbiBYRihsLGMpe2x8PTA7dmFyIHAsdyxmPTAsbT0wLEE9MDtmb3IocD0wfGFbKHc9NCsoY3w9MCl8MCk+PjJdLG09MHxhW2M+PjJdLGY9MDs7KXtpZigoMHxmKT49KDB8cCkpe0E9NDticmVha31pZigoMHxhW20rKGY8PDIpPj4yXSk9PSgwfGwpKWJyZWFrO2Y9Zisx''@;'; put 'put ''fDB9ND09KDB8QSkmJihmPW0/MHxWMChtLDgrKHA8PDIpfDApOjB8UW4oOCsocDw8Mil8MCksYVtjPj4yXT1mLGFbdz4+Ml09QT0xKyhtPTB8YVt3Pj4yXSl8MCxhW2YrKG08PDIpPj4yXT1sLGFbKDB8YVtjPj4yXSkrKEE8PDIpPj4yXT0wKX0obHw9MCwyMDQrKDB8YVsxNisoMHxhWygzPT0o''@;'; put 'put ''MyZhW2w+PjJdfDApP2w6bCs0OHwwKSs0MD4+Ml0pPj4yXSl8MCl9ZnVuY3Rpb24gJEEobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciB3LE0sRCxwPTAsbT0wLEE9MCxiPTAsaz0wO2lmKEQ9MHx2cig5NiksYVsocD1EKzQ4fDApPj4yXT0zfGFbcD4+Ml0sYVtEPj4yXT0tNCZhW0Q+PjJdfDIs''@;'; put 'put ''bT0wfHZyKDE3NiksYVsoTT1EKzE2fDApPj4yXT1tLGFbKDM9PSgzJmFbRD4+Ml18MCk/RDpwKSs0MD4+Ml09bCx3PUQrLTQ4fDAsYVsoMj09KDMmYVtEPj4yXXwwKT9EOncpKzQwPj4yXT1jLGZlW20rMTEyPj4wXT0xLGYpe2lmKGFbRD4+Ml09MTUmYVtEPj4yXXwtMTYmYVtmPj4yXSxhW3A+''@;'; put 'put ''PjJdPTE1JmFbcD4+Ml18LTE2JmFbZj4+Ml0saXRbbSsxNjg+PjFdPTB8aXRbMTY4KyhBPTB8YVsoaz1mKzE2fDApPj4yXSk+PjFdLGl0W20rMTU0Pj4xXT0wfGl0W0ErMTU0Pj4xXSxhW20rMTU2Pj4yXT1hW0ErMTU2Pj4yXSxpdFttKzE3MD4+MV09MHxpdFtBKzE3MD4+MV0sYj1mKzQ4fDAs''@;'; put 'put ''KDB8KGw9MHxhWygzPT0oMyZhW0Q+PjJdfDApP0Q6cCkrNDA+PjJdKSkhPSgwfGFbKDM9PSgwfChjPTMmYVtmPj4yXSkpP2Y6YikrNDA+PjJdKSl7aWYocD1mKy00OHwwLCgwfGwpPT0oMHxhWygyPT0oMHxjKT9mOnApKzQwPj4yXSkpe2w9QSs1NnwwLGM9NDArKG09bSsxNnwwKXwwO2Rve2Fb''@;'; put 'put ''bT4+Ml09YVtsPj4yXSxtPW0rNHwwLGw9bCs0fDB9d2hpbGUoKDB8bSk8KDB8YykpfX1lbHNle2w9QSsxNnwwLGM9NDArKG09bSsxNnwwKXwwO2Rve2FbbT4+Ml09YVtsPj4yXSxtPW0rNHwwLGw9bCs0fDB9d2hpbGUoKDB8bSk8KDB8YykpO3A9ZistNDh8MH1pZigoMHwobD0wfGFbKDI9PSgz''@;'; put 'put ''JmFbRD4+Ml18MCk/RDp3KSs0MD4+Ml0pKSE9KDB8YVsoMj09KDB8KGM9MyZhW2Y+PjJdKSk/ZjpwKSs0MD4+Ml0pKXtpZigoMHxsKT09KDB8YVsoMz09KDB8Yyk/ZjpiKSs0MD4+Ml0pKXtsPTE2KygwfGFbaz4+Ml0pfDAsYz00MCsobT01NisoMHxhW00+PjJdKXwwKXwwO2Rve2FbbT4+Ml09''@;'; put 'put ''YVtsPj4yXSxtPW0rNHwwLGw9bCs0fDB9d2hpbGUoKDB8bSk8KDB8YykpfX1lbHNle2w9NTYrKDB8YVtrPj4yXSl8MCxjPTQwKyhtPTU2KygwfGFbTT4+Ml0pfDApfDA7ZG97YVttPj4yXT1hW2w+PjJdLG09bSs0fDAsbD1sKzR8MH13aGlsZSgoMHxtKTwoMHxjKSl9MHxhWyhsPTE3MisoMHxh''@;'; put 'put ''W2s+PjJdKXwwKT4+Ml18fChhW2w+PjJdPUQpLGFbMTE2KygwfGFbTT4+Ml0pPj4yXT1mfWVsc2UgYVttKzE1Nj4+Ml09MSxpdFttKzE1ND4+MV09MSxpdFttKzE2OD4+MV09MSxpdFttKzE3MD4+MV09MTtyZXR1cm4gMHxEfWZ1bmN0aW9uIEpjKGwsYyxmKXtyZXR1cm4gMHxRQygwfCRBKGx8''@;'; put 'put ''PTAsY3w9MCxmfD0wKSl9ZnVuY3Rpb24gY0kobCxjKXt2YXIgZixwLG07YVsxNjQrKGY9MHxhWzE2KyhjfD0wKT4+Ml0pPj4yXT1tPTB8YVsobD0xOTIrKDB8YVsxNisobHw9MCk+PjJdKXwwKT4+Ml0scD1tLDB8bSYmKGFbMTY4KygwfGFbcCsxNj4+Ml0pPj4yXT1jKSxhW2w+PjJdPWMsYVtm''@;'; put 'put ''KzE2OD4+Ml09MCwoMHxwKT09KDB8YykmJlByKDg1NTg3LDg1NTYxLDIxNSw4NTYwMyl9ZnVuY3Rpb24gZkkobCxjKXt2YXIgZixwOzB8ZnVuY3Rpb24gdzBlKGwsYyl7Zm9yKGN8PTAsbD0xOTIrKDB8YVsxNisobHw9MCk+PjJdKXwwOyEoMD09KDB8KGw9MHxhW2w+PjJdKSl8KDB8bCk9PSgw''@;'; put 'put ''fGMpKTspbD0xNjQrKDB8YVtsKzE2Pj4yXSl8MDtyZXR1cm4gMHxsfShsfD0wLGN8PTApfHxQcig4NTY1Miw4NTU2MSwyMzEsODU2NzMpLHA9Zj0wfGFbMTY0KyhjPTB8YVtjKzE2Pj4yXSk+PjJdLGM9YysxNjh8MCwwfGYmJihhWzE2OCsoMHxhW2YrMTY+PjJdKT4+Ml09YVtjPj4yXSksKGM9''@;'; put 'put ''MHxhW2M+PjJdKT9hWzE2NCsoMHxhW2MrMTY+PjJdKT4+Ml09cDphWzE5MisoMHxhW2wrMTY+PjJdKT4+Ml09cH1mdW5jdGlvbiBVaChsKXtsfD0wO3ZhciBjLGYscD0wLG09MDtyZXR1cm4gYz0wfHZyKDY0KSxhW2M+PjJdPS00JmFbYz4+Ml18MSxhWyhmPWMrMTZ8MCk+PjJdPTB8dnIoMzA0''@;'; put 'put ''KSxhW2MrMjQ+PjJdPTB8ZGkobCksZmVbMTU2KyhtPTB8YVtmPj4yXSk+PjBdPTEsX1ttKzk2Pj4zXT0xLF9bbSs4OD4+M109MSxfW20rODA+PjNdPTEsYVttKzIxNj4+Ml09MSxhW20rMTc2Pj4yXT0wLG09MHx2cigyMCksYVsxNzIrKHA9MHxhW2Y+PjJdKT4+Ml09bSxhW3ArMTg0Pj4yXT0w''@;'; put 'put ''LHA9MHx2cigyMCksYVsxODArKDB8YVtmPj4yXSk+PjJdPXAsY0kobCxjKSxhWyhsPTIzMisoMHxhW2wrMTY+PjJdKXwwKT4+Ml09MSsoMHxhW2w+PjJdKSwwfGN9ZnVuY3Rpb24gaEkobCxjKXtsfD0wO3ZhciBmPTAscD0wLG09MCxBPTA7bT00OCsoY3w9MCl8MCxmPShwPTB8YVsxODgrKGY9''@;'; put 'put ''MHxhWzE2KygwfGFbKDM9PSgzJmFbYz4+Ml18MCk/YzptKSs0MD4+Ml0pPj4yXSk+PjJdKT8wfFYwKHAsOCsoYVtmKzE5Mj4+Ml08PDIpfDApOjB8UW4oOCsoYVtmKzE5Mj4+Ml08PDIpfDApLGFbMTg4KygwfGFbMTYrKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOm0pKzQwPj4yXSk+PjJdKT4+''@;'; put 'put ''Ml09ZixwPTB8YVsxODgrKEE9MHxhWzE2KygwfGFbKDM9PSgzJmFbYz4+Ml18MCk/YzptKSs0MD4+Ml0pPj4yXSk+PjJdLGFbKEE9QSsxOTJ8MCk+PjJdPTErKGY9MHxhW0E+PjJdKSxhW3ArKGY8PDIpPj4yXT1jLGFbKDB8YVsxODgrKG09MHxhWzE2KygwfGFbKDM9PSgzJmFbYz4+Ml18MCk/''@;'; put 'put ''YzptKSs0MD4+Ml0pPj4yXSk+PjJdKSsoYVttKzE5Mj4+Ml08PDIpPj4yXT0wLG09YystNDh8MCxmPShwPTB8YVsxOTYrKGY9MHxhWzE2KygwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzptKSs0MD4+Ml0pPj4yXSk+PjJdKT8wfFYwKHAsOCsoYVtmKzIwMD4+Ml08PDIpfDApOjB8UW4oOCsoYVtm''@;'; put 'put ''KzIwMD4+Ml08PDIpfDApLGFbMTk2KygwfGFbMTYrKDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOm0pKzQwPj4yXSk+PjJdKT4+Ml09ZixwPTB8YVsxOTYrKGY9MHxhWzE2KygwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzptKSs0MD4+Ml0pPj4yXSk+PjJdLGFbKGY9ZisyMDB8MCk+PjJdPTErKEE9''@;'; put 'put ''MHxhW2Y+PjJdKSxhW3ArKEE8PDIpPj4yXT1jLGFbKDB8YVsxOTYrKEE9MHxhWzE2KygwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzptKSs0MD4+Ml0pPj4yXSk+PjJdKSsoYVtBKzIwMD4+Ml08PDIpPj4yXT0wLGZlWzI0MCsoMHxhW2wrMTY+PjJdKT4+MF09MSxmZVsyNDArKDB8YVsxNisoMHx5''@;'; put 'put ''YShsKSk+PjJdKT4+MF09MX1mdW5jdGlvbiBLRihsKXt2YXIgYyxmPTA7KGx8PTApfHxQcig4NTU1MSw4NTU2MSwyNjksODU2OTApLDB8KGM9MHxhWzExNisoMHxhW2wrMTY+PjJdKT4+Ml0pJiYoMHxhWyhmPTE3MisoMHxhW2MrMTY+PjJdKXwwKT4+Ml0pPT0oMHxsKSYmKGFbZj4+Ml09MCks''@;'; put 'put ''c3AoMTg4KygwfGFbMTYrKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOmwrNDh8MCkrNDA+PjJdKT4+Ml0pfDAsbCksc3AoMTk2KygwfGFbMTYrKDB8YVsoMj09KDMmYVtsPj4yXXwwKT9sOmwrLTQ4fDApKzQwPj4yXSk+PjJdKXwwLGwpfWZ1bmN0aW9uIHo2KGwsYyl7dmFyIGYscCxtO2N8PTAs''@;'; put 'put ''bT1sZSxsZT1sZSsxNnwwLHA9MHxhWyhmPTE3MisoMHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4yXTtkb3tpZigoMHxwKSE9KDB8Yykpe2lmKCFwKXthW2Y+PjJdPWMsYjBlKGwsYyk7YnJlYWt9UHIoODc1OTMsODU1NjEsMzQwLDg1NzI4KX1lbHNlICRyKDAsODU3MDcsbSl9d2hpbGUoMCk7bGU9''@;'; put 'put ''bX1mdW5jdGlvbiBiMGUobCxjKXt2YXIgcCxtLGY9MCxBPTA7Zm9yKCgwfGhyWyhmPTE3MCsoMHxhWzE2KyhjfD0wKT4+Ml0pfDApPj4xXSk8KDY1NTM1JihsPTB8aXRbMTcwKyhBPTB8YVsxNisobHw9MCk+PjJdKT4+MV0pKSYmKGl0W2Y+PjFdPWwpLHA9QSsxNjh8MCxtPUErMTU0fDAsZj1B''@;'; put 'put ''KzE1NnwwLGw9YztsOylpdFsoQT0xNjgrKGM9MHxhW2wrMTY+PjJdKXwwKT4+MV09KDB8aHJbQT4+MV0pKygwfGhyW3A+PjFdKSxpdFsoQT1jKzE1NHwwKT4+MV09KDB8aHJbQT4+MV0pKygwfGhyW20+PjFdKSxhWyhBPWMrMTU2fDApPj4yXT0oMHxhW0E+PjJdKSsoMHxhW2Y+PjJdKSxsPTB8''@;'; put 'put ''YVtjKzE3Mj4+Ml19ZnVuY3Rpb24geFkobCl7dmFyIGYsYz0wLHA9MCxtPTA7Yz0wfGFbMTcyKygwfGFbKGY9MTYrKGx8PTApfDApPj4yXSk+PjJdO2U6Zm9yKDtjOylmb3IoZEkoYyxsKSxtPTB8YVtjKzE2Pj4yXSxwPTB8YVttKzE3Mj4+Ml0sMHxpdFttKzE2OD4+MV18fHBJKGMpOzspe2lm''@;'; put 'put ''KDEhPSgwfGZlWzExMisoMHxhW2MrMTY+PjJdKT4+MF0pKXtjPXA7Y29udGludWUgZX1pZigxIT0oMHxmZVsxNTYrKGM9MHxhWzE2KygwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpjKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjBdKSl7Yz1wO2NvbnRpbnVlIGV9aWYoMSE9KDB8YVtjKzE4ND4+Ml0p''@;'; put 'put ''KXtjPXA7Y29udGludWUgZX1kSShjPTB8YVthW2MrMTgwPj4yXT4+Ml0sbCl9YVsxNzIrKDB8YVtmPj4yXSk+PjJdPTB9ZnVuY3Rpb24gZEkobCxjKXt2YXIgZjtmPTB8YVsxNisoY3w9MCk+PjJdLGl0WyhsPTE2OCsoYz0wfGFbMTYrKGx8PTApPj4yXSl8MCk+PjFdPSgwfGhyW2w+PjFdKS0o''@;'; put 'put ''MHxocltmKzE2OD4+MV0pLGl0WyhsPWMrMTU0fDApPj4xXT0oMHxocltsPj4xXSktKDB8aHJbZisxNTQ+PjFdKSxhWyhjPWMrMTU2fDApPj4yXT0oMHxhW2M+PjJdKS0oMHxhW2YrMTU2Pj4yXSl9ZnVuY3Rpb24gcEkobCl7dmFyIGM9MCxmPTAscD0wLG09MCxBPTA7Zm9yKChsfD0wKXx8UHIo''@;'; put 'put ''ODU1NTEsODU1NjEsMTI4LDg1NzQxKSxBPWwrNDh8MCxmPTA7bT0wfGFbKDB8YVsocD0xODArKDB8YVsxNisoMHxhWygzPT0oMyYoYz0wfGFbbD4+Ml0pfDApP2w6QSkrNDA+PjJdKT4+Ml0pfDApPj4yXSkrKGY8PDIpPj4yXTspKDB8bSk9PSgwfGwpJiZzcChwLGwpLGY9ZisxfDA7Zm9yKEE9''@;'; put 'put ''bCstNDh8MCxtPTA7cD0wfGFbKDB8YVsoZj0xNzIrKDB8YVsxNisoMHxhWygyPT0oMyZjfDApP2w6QSkrNDA+PjJdKT4+Ml0pfDApPj4yXSkrKG08PDIpPj4yXTspKDB8cCk9PSgwfGwpJiYoc3AoZixsKSxjPTB8YVtsPj4yXSksbT1tKzF8MH1mdW5jdGlvbiBnNyhsLGMpe2N8PTA7dmFyIGY9''@;'; put 'put ''MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTA7Zj0wLHc9MHxEdChsfD0wKTtlOmZvcig7dzspZm9yKGI9MHx6dChsLHcpLGs9dysxNnwwLEE9Yjs7KXtpZighQSl7dz1iO2NvbnRpbnVlIGV9KDB8YVsxNisobT0wfGFbQSsxNj4+Ml0pPj4yXSk+KDB8YVsxMisocD0wfGFbaz4+Ml0pPj4y''@;'; put 'put ''XSk/KDB8YVtwKzE2Pj4yXSk8PSgwfGFbbSsxMj4+Ml0pJiZLYShsLHcsQSwwLDEpOihLYShsLEEsdywwLDEpLGY9MSksQT0wfHp0KGwsQSl9ZG97aWYoMHxmKXt3PTB8cHMobCw4NTc2NiwxKSxrPTB8dnIoKDB8R28obCkpPDwyKSxiPTB8dnIoKDB8R28obCkpPDwyKSxtPWMrNHwwLHA9MHxE''@;'; put 'put ''dChsKTtlOmZvcig7Oyl7aWYoIXApe2Y9MjM7YnJlYWt9aWYoMD09KDB8YVs4KygwfGFbcCsxNj4+Ml0pPj4yXSkmJjB8emQobCxwLDEsMSkpe3Q6ZG97aWYoMHxKQyhsLHAsdyxiKSl7aWYoQT0wfEdvKHcpLCgwfGl2ZShsLHcsaykpIT0oMHxBKSl7Zj0xNzticmVhayBlfWZvcih4MShiLEEs''@;'; put 'put ''NCw2MCksZj0wOzspe2lmKCgwfGYpPj0oMHxBKSlicmVhayB0O2FbMjM2KygwfGFbMTYrKE09MHxhW2srKGY8PDIpPj4yXSk+PjJdKT4+Ml09YVsoYz1iKyhmPDwyKXwwKT4+Ml0sYVsoMHxhW20+PjJdKSsoYVtjPj4yXTw8Mik+PjJdPU0sZj1mKzF8MH19fXdoaWxlKDApO2swZSh3KX1wPTB8''@;'; put 'put ''enQobCxwKX1pZigxNz09KDB8ZikpUHIoODU3NzEsODU3ODEsMjY1LDg1NzkyKTtlbHNlIGlmKDIzPT0oMHxmKSl7RnQoayk7YnJlYWt9fX13aGlsZSgwKX1mdW5jdGlvbiBKQyhsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MDtmb3IoYVs4Kyh3PTB8YVsx''@;'; put 'put ''NisoY3w9MCk+PjJdKT4+Ml09MSx3PTB8YVsyMzYrKDB8YVsxNisoMHxhW3crMjA+PjJdKT4+Ml0pPj4yXSxhW3ArKCgwfEdvKGYpKTw8Mik+PjJdPXcsWW4oZixjLDEpLHc9MHx3MChsLGMpLG09MDt3OyltPW0rKCgwfGFbMjM2KygwfGFbMTYrKDB8YVsyMCsoYj0wfGFbMTYrKEE9MHxhWygy''@;'; put 'put ''PT0oMHwoaz0zJmFbdz4+Ml0pKT93OncrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPj4yXSk+PjJdKT4oMHxhWzIzNisoMHxhWzE2KygwfGFbMjArKDB8YVsxNisoMHxhWygzPT0oMHxrKT93OncrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk+PjJdKT4+Ml0pJjEpfDAsMHxhW2IrOD4+Ml18fCht''@;'; put 'put ''PSgwfEpDKGwsQSxmLHApKSttfDApLHc9MHxTMChsLHcpO2Zvcih3PTB8TWYobCxjKTt3OyltPW0rKCgwfGFbMjM2KygwfGFbMTYrKDB8YVsyMCsoMHxhWzE2KygwfGFbKDI9PSgwfChiPTMmYVt3Pj4yXSkpP3c6dystNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk+PjJdKT4+Ml0pPigwfGFbMjM2''@;'; put 'put ''KygwfGFbMTYrKDB8YVsyMCsoaz0wfGFbMTYrKEE9MHxhWygzPT0oMHxiKT93OncrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk+PjJdKT4+Ml0pJjEpfDAsMHxhW2srOD4+Ml18fChtPSgwfEpDKGwsQSxmLHApKSttfDApLHc9MHxGMyhsLHcpO3JldHVybiAwfG19ZnVuY3Rpb24gaXZlKGwsYyxm''@;'; put 'put ''KXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTA7Zm9yKG09MDtwPTB8UzBlKGwsYyk7KXtmb3IoYVtmKyhtPDwyKT4+Ml09YVsyMCsoMHxhW3ArMTY+PjJdKT4+Ml0scXIoYyxwKSxwPTB8dzAobCxwKTtwOylBPTB8UzAobCxwKSxxbShsLHApLHA9QTttPW0rMXwwfXJldHVybiAwfG19''@;'; put 'put ''ZnVuY3Rpb24gazBlKGwpe3ZhciBjPTAsZj0wO2ZvcihjPTB8RHQobHw9MCk7YzspZj0wfHp0KGwsYykscXIobCxjKSxjPWZ9ZnVuY3Rpb24gUzBlKGwsYyl7bHw9MDt2YXIgZj0wO2ZvcihmPTB8RHQoY3w9MCk7Oyl7aWYoIWYpe2Y9MDticmVha31pZighKDB8emQobCxmLDEsMCkpKWJyZWFr''@;'; put 'put ''O2Y9MHx6dChjLGYpfXJldHVybiAwfGZ9ZnVuY3Rpb24gcUEobCxjKXtjfD0wO3ZhciB3LGY9MCxwPTAsbT0wLEE9MDtmb3IoZnVuY3Rpb24gWEMobCl7bHw9MDt2YXIgYz0wO2ZlWzE5Mzc2OV09MCxhWzQ2NzQxXT1sLGM9NCsoKDB8TjMoMHx5YShsKSkpPDwyKXwwLGFbNDY3NDBdPTB8dnIo''@;'; put 'put ''YyksYVs0NjczOV09MHx2cihjKSxmdW5jdGlvbiBWWShsKXtsfD0wO3ZhciBjPTAsZj0wO2FbNDY3NDRdPTgsYVs0NzEzNl09MjQsX1syMzIxNV09Ljk5NSwwfChsPTB8TGkobCw4NjY4NSkpJiYoYz0ra3AobCkpPjAmJihhWzQ2NzQ0XT1+figoZj1jKisoMHxhWzQ2NzQ0XSkpPjE/ZjoxKSxh''@;'; put 'put ''WzQ3MTM2XT1+figoYyo9KygwfGFbNDcxMzZdKSk+MT9jOjEpKX0obCksMTYmaXRbMTM2KygwfGFbKGM9bCsxNnwwKT4+Ml0pPj4xXSYmZnVuY3Rpb24gYUgobCl7dmFyIGMsZjtjPTB8dnIoKGY9MisoMHxpdFsyMzgrKDB8YVsxNisobHw9MCk+PjJdKT4+MV0pfDApPDwyKSxqWShsLGMsZiww''@;'; put 'put ''KSxGdChjKX0obCksQ1UobCksSUgobCwxKSxDSShsKSx0SChsKSxhWzQ2NzQyXT1pdFsyMzYrKGM9MHxhW2M+PjJdKT4+MV0sYVs0Njc0M109aXRbYysyMzg+PjFdfShsfD0wKSx3PWwrMTZ8MCxwPTAsZj0wOyEoKDB8cCk+PSgwfGFbMjIwKygwfGFbdz4+Ml0pPj4yXSkpOylleShsLHApLHA9''@;'; put 'put ''cCsxfDAsZj0oMHxnSShsLDAsYykpK2Z8MDtmb3IoZnVuY3Rpb24gVFkobCl7dmFyIGMsRyxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxSPTA7Zm9yKEc9bGUsbGU9bGUrMTZ8MCxmdW5jdGlvbiBJMGUobCl7dmFyIHAsbSxBLGM9MCxmPTAsdz0wLGI9MDtpZigoMHwoQT0wfGFbKG09MjIwKyhw''@;'; put 'put ''PTB8YVsxNisobHw9MCk+PjJdKXwwKT4+Ml0pKT49Mil7Zm9yKHc9cCsyMTZ8MCxsPTAsZj0wOyEoKDB8Zik+PSgwfEEpKTspe2ZvcihjPTB8YVsoMHxhW3c+PjJdKSsoZjw8Mik+PjJdLDB8bCYmKGFbMTY0KygwfGFbbCsxNj4+Ml0pPj4yXT1jKSxhWzE2OCsoYj0wfGFbYysxNj4+Ml0pPj4y''@;'; put 'put ''XT1sLGw9YyxjPWI7Yz0wfGFbYysxNjQ+PjJdOylsPWMsYz0wfGFbYysxNj4+Ml07Zj1mKzF8MH1hW20+PjJdPTEsYVtwKzE5Mj4+Ml09YVthW3ArMjE2Pj4yXT4+Ml0saXRbcCsyMzY+PjFdPWFbNDY3NDJdLGl0W3ArMjM4Pj4xXT1hWzQ2NzQzXX19KGx8PTApLGI9MHxpdFsyMzYrKGM9MHxh''@;'; put 'put ''WyhsKzE2fDApPj4yXSk+PjFdOyEoKDB8Yik+KDB8aXRbYysyMzg+PjFdKSk7KXtmb3IoYVsoZj0wfGFbYysxOTY+PjJdKSsoYjw8Nik+PjJdPXA9MHxhW2YrKGI8PDYpKzg+PjJdLGFbZisoYjw8NikrND4+Ml09bT0wfGFbZisoYjw8NikrMTI+PjJdLHc9MDshKCgwfHcpPj0oMHxwKSk7KXtp''@;'; put 'put ''ZighKEE9MHxhW20rKHc8PDIpPj4yXSkpe1I9NjticmVha31hWzIzNisoMHxhW0ErMTY+PjJdKT4+Ml09dyx3PXcrMXwwfTY9PSgwfFIpJiYoUj0wLGFbZisoYjw8Nik+PjJdPXcpLGI9YisxfDB9bGU9R30obCksQT0xOyEoKDB8QSk+KDB8KG09MHxhWzE4MCsocD0wfGFbdz4+Ml0pPj4yXSkp''@;'; put 'put ''KTspbT0oMHwkRigwfGFbKDB8YVtwKzE4ND4+Ml0pKyhBPDwyKT4+Ml0sYykpK2Z8MCxBPUErMXwwLGY9bTtkb3tpZigoMHxtKT4wKXtpZigwfChwPTB8TGkobCw4NTgwNikpJiYoMHx0MShwKSk8PDI0Pj4yND09MClicmVhaztmcChsKSxmZVsxOTM3NjldPTEsZj0wfGdJKGwsMixjKX19d2hp''@;'; put 'put ''bGUoMCk7IWZ1bmN0aW9uIHR5KGwsYyl7bHw9MDt2YXIgTSxSLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDtmb3IoUj1sZSxsZT1sZSsxNnwwLDB8KGY9MHxhWzQ2NzM5XSkmJihGdChmKSxhWzQ2NzM5XT0wKSwwfChmPTB8YVs0Njc0MF0pJiYoRnQoZiksYVs0Njc0MF09MCksTT1sKzE2''@;'; put 'put ''fDAsZj0xOyEoKDB8Zik+KDB8YVsxODArKHA9MHxhW00+PjJdKT4+Ml0pKTspcUYoMHxhWygwfGFbcCsxODQ+PjJdKSsoZjw8Mik+PjJdKSxmPWYrMXwwO2ZvcihrPTB8aXRbcCsyMzY+PjFdLGY9cDshKCgwfGspPigwfGl0W2YrMjM4Pj4xXSkpOyl7Zm9yKGI9MDshKCgwfGIpPj0oMHxhWyhm''@;'; put 'put ''PTB8YVtmKzE5Nj4+Ml0pKyhrPDw2KT4+Ml0pKTspe2FbMjM2KyhmPTB8YVsodz0xNisoMHxhWygwfGFbZisoazw8NikrND4+Ml0pKyhiPDwyKT4+Ml0pfDApPj4yXSk+PjJdPWIsZj0wfGFbZisxODg+PjJdO2U6ZG97aWYoMHxmKWZvcihwPTA7Oyl7aWYoIShtPTB8YVtmKyhwPDwyKT4+Ml0p''@;'; put 'put ''KWJyZWFrIGU7ND09KDB8ZmVbMTEyKygwfGFbKEE9bSsxNnwwKT4+Ml0pPj4wXSkmJihLRihtKSxGdCgwfGFbQT4+Ml0pLEZ0KG0pLHA9cCstMXwwLGY9MHxhWzE4OCsoMHxhW3c+PjJdKT4+Ml0pLHA9cCsxfDB9fXdoaWxlKDApO2I9YisxfDAsZj0wfGFbTT4+Ml19TTBlKDB8YVtmKyhrPDw2''@;'; put 'put ''KSs1Nj4+Ml0pLGs9aysxfDAsZj0wfGFbTT4+Ml19bGU9Un0obCl9ZnVuY3Rpb24gZXkobCxjKXt2YXIgZj0wLHA9MCxtPTA7YVsxOTIrKGw9MHxhWzE2KyhsfD0wKT4+Ml0pPj4yXT1hWygwfGFbbCsyMTY+PjJdKSsoKGN8PTApPDwyKT4+Ml07ZTpkb3tpZigoMHxjKT4wKWZvcihjPTB8aXRb''@;'; put 'put ''bCsyMzg+PjFdLGY9bCsxOTZ8MCxsPTB8aXRbbCsyMzY+PjFdOzspe2lmKCgwfGwpPigwfGMpKWJyZWFrIGU7YVsobT0ocD0wfGFbZj4+Ml0pKyhsPDw2KSs0fDApPj4yXT0oMHxhW20+PjJdKSsoYVsocD1wKyhsPDw2KXwwKT4+Ml08PDIpLGFbcD4+Ml09MCxsPWwrMXwwfX13aGlsZSgwKX1m''@;'; put 'put ''dW5jdGlvbiBnSShsLGMsZil7bHw9MCxmfD0wO3ZhciBSLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wO2ZvcihSPWxlLGxlPWxlKzMyfDAsKDB8KGN8PTApKT4xPyhwPTB8JEMoMCksb0gobCkpOnA9MjE0NzQ4MzY0NyxrPWMsbT0wLGM9cDshKCgwfGspPj0zKTspe2ZvcihtPTB8YVs0NzEzNl0s''@;'; put 'put ''Mj09KDB8ayk/KCgwfHApPigwfGMpJiZSWShsKSxwPWMpOihwPSgwfG0pPDQ/bTo0LCgwfHlhKGwpKT09KDB8bCkmJk9ZKGwsayksa3x8dkkobCksSVkobCksKDB8KEE9MHwkQygwKSkpPigwfGMpPyhtPXAscD1BKToob0gobCksbT1wLHA9QSxjPUEpKSxBPTAsYj0wOyEoKDB8Yik+PSgwfG0p''@;'; put 'put ''fHwodz1BKzF8MCwwPT0oMHxwKXwoMHxBKT49KDB8YVs0Njc0NF0pKSk7KUQwZShsLGIpLCgwfChwPTB8JEMoMCkpKT4oMHxjKT9BPXc6KG9IKGwpLEE9K19bMjMyMTVdKisoMHxjKT4rKDB8cCk/MDp3LGM9cCksYj1iKzF8MDtpZighcCl7cD0wO2JyZWFrfWs9aysxfDB9KDB8cCk+KDB8Yykm''@;'; put 'put ''JlJZKGwpLCgwfGMpPjA/KHdJKGwsMCkscD0wfCRDKDApKTpwPWM7ZTpkb3tpZigwfGYpZm9yKGM9MDs7KXtpZigoMHxjKT49KDB8bSkpYnJlYWsgZTtMMGUobCksYz1jKzF8MH19d2hpbGUoMCk7cmV0dXJuIGxlPVIsMHxwfWZ1bmN0aW9uICRGKGwsYyl7Y3w9MDt2YXIgbSxmPTAscD0wLEE9''@;'; put 'put ''MDtmb3IoZnVuY3Rpb24gTVUobCl7dmFyIGM7Q1UobHw9MCksYVsyMjArKGM9MHxhW2wrMTY+PjJdKT4+Ml09MSxhW2FbYysyMTY+PjJdPj4yXT1hW2MrMTkyPj4yXSxDSShsKSxPWShsLDApLGZ1bmN0aW9uIGF2ZShsKXt2YXIgYixrLE0sYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTA7Zm9yKGI9''@;'; put 'put ''MHx5YShsfD0wKSxjPSh3PTB8aXRbMjM2KyhmPTB8YVsoaz1sKzE2fDApPj4yXSk+PjFdKTw8MTY+PjE2LE09YisxNnwwLHc8PDE2Pj4xNj4wJiYoZmVbKDB8YVsxOTYrKDB8YVtNPj4yXSk+PjJdKSsoYystMTw8NikrNDk+PjBdPTApLHc9YzshKCgwfHcpPigwfGl0W2YrMjM4Pj4xXSkpOyl7''@;'; put 'put ''Zm9yKFNVKGIsdyxBPTB8YVsyMzYrKDB8YVsxNisoMHxhWygwfGFbZisyNjg+PjJdKSsodzw8Mik+PjJdKT4+Ml0pPj4yXSwwfGFbKDB8YVtmKzE5Nj4+Ml0pKyh3PDw2KT4+Ml0pLHA9MCxtPUE7ISgoMHxwKT49KDB8YVsoYz0wfGFbMTk2KyhmPTB8YVtrPj4yXSk+PjJdKSsodzw8Nik+PjJd''@;'; put 'put ''KSk7KWFbKDB8YVsoMHxhWzE5NisoMHxhW00+PjJdKT4+Ml0pKyh3PDw2KSs0Pj4yXSkrKG08PDIpPj4yXT1jPTB8YVsoMHxhW2MrKHc8PDYpKzQ+PjJdKSsocDw8Mik+PjJdLGFbMjM2KyhmPTB8YVtjKzE2Pj4yXSk+PjJdPW0sMT09KDB8ZmVbZisxNTY+PjBdKSYmKGFbYysyND4+Ml09MHxk''@;'; put 'put ''aShiKSksZkkobCxjKSxjSShiLGMpLGFbKGY9MjMyKygwfGFbTT4+Ml0pfDApPj4yXT0xKygwfGFbZj4+Ml0pLHA9cCsxfDAsbT1tKzF8MDthW2MrKHc8PDYpKzQ+PjJdPSgwfGFbKG09MHxhWzE5NisoMHxhW00+PjJdKT4+Ml0pKyh3PDw2KSs0Pj4yXSkrKEE8PDIpLGZlW20rKHc8PDYpKzQ5''@;'; put 'put ''Pj4wXT0wLHc9dysxfDB9KDB8dyk8KDB8aXRbMjM4KyhjPTB8YVtNPj4yXSk+PjFdKSYmKGZlWygwfGFbYysxOTY+PjJdKSsodzw8NikrNDk+PjBdPTApLGZlW2YrMjcyPj4wXT0xfShsKSxmdW5jdGlvbiBnb2UobCl7dmFyIGssYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLE09MCxEPTAs''@;'; put 'put ''Uj0wO2ZvcihrPTB8eWEobHw9MCksdz0wfER0KGwpO3c7KXtmb3IoYz0wfE1zKGssdyksYj0wO2M7KWlmKEQ9MHxWcyhrLGMsdyksMHxOcihsLGMpKWM9RCxiPU09YjtlbHNlIGlmKFI9MD09KDB8YWsoYixNPTI9PSgzJmFbYz4+Ml18MCk/YzpjKy00OHwwKSksQT0oMHwoZj0wfGFbMjMyKygw''@;'; put 'put ''fGFbMTYrKGM9MHxhWygzPT0oMHwocD0zJmFbTT4+Ml0pKT9NOk0rNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpPT0oMHwobT0wfGFbMjMyKygwfGFbMTYrKHA9MHxhWygyPT0oMHxwKT9NOk0rLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pKSxSKWlmKEEpKGM9MHxNWShjLHApKT8oMHxNKSE9KDB8''@;'; put 'put ''Yyk/KEVZKE0pLDB8YVsxNzIrKDB8YVtNKzE2Pj4yXSk+PjJdPyhjPUQsYj1SPWIpOih6NihNLGMpLGM9RCxiPVI9YikpOihjPUQsYj1SPWIpOihoSShrLE0pLGM9RCxiPU0pO2Vsc2V7aWYoKDB8bSk+KDB8Zikpe0VIKGMscCxNKSxjPUQsYj1NO2NvbnRpbnVlfUVIKHAsYyxNKSxjPUQsYj1N''@;'; put 'put ''fWVsc2V7aWYoYVsxNzIrKDB8YVtNKzE2Pj4yXSk+PjJdPUE/YjowLCEoYz0wfGFbMTcyKygwfGFbYisxNj4+Ml0pPj4yXSkpe2M9RCxiPVI9Yjtjb250aW51ZX1vayhsLE0sYywwKSxFWShNKSxjPUQsYj1SPWJ9dz0wfHp0KGwsdyl9fShsKSxmdW5jdGlvbiBsdmUobCl7dmFyIHcsYz0wLGY9''@;'; put 'put ''MCxwPTAsbT0wLEE9MDtmb3IoQT0wfGl0WzIzNisoYz0wfGFbKHc9MTYrKGx8PTApfDApPj4yXSk+PjFdOyEoKDB8QSk+KDB8aXRbYysyMzg+PjFdKSk7KXtmb3IobT0xNisocD0wfGFbKDB8YVtjKzI2OD4+Ml0pKyhBPDwyKT4+Ml0pfDA7Zj0wfGFbYVsxODArKGM9MHxhW20+PjJdKT4+Ml0+''@;'; put 'put ''PjJdOylZMyhmKTtmb3IoO2M9MHxhW2FbYysxNzI+PjJdPj4yXTspWTMoYyksYz0wfGFbbT4+Ml07ZkkoMHx5YShsKSxwKSxhWygwfGFbMjY4KygwfGFbdz4+Ml0pPj4yXSkrKEE8PDIpPj4yXT0wLEE9QSsxfDAsYz0wfGFbdz4+Ml19fShsKX0obHw9MCksdEgobCksdkkobCksSVkobCksbT1s''@;'; put 'put ''KzE2fDAsZj0wfGdJKGwsMixjKSxwPTE7ISgoMHxwKT4oMHxhWzE4MCsoQT0wfGFbbT4+Ml0pPj4yXSkpOylmPSgwfCRGKDB8YVsoMHxhW0ErMTg0Pj4yXSkrKHA8PDIpPj4yXSxjKSkrZnwwLHA9cCsxfDA7cmV0dXJuIG5IKGwpLDB8Zn1mdW5jdGlvbiBxRihsKXt2YXIgbSxjPTAsZj0wLHA9''@;'; put 'put ''MCxBPTAsdz0wLGI9MCxrPTA7Zm9yKG09MTYrKGx8PTApfDAsYz0xOyEoKDB8Yyk+KDB8YVsxODArKHA9MHxhW20+PjJdKT4+Ml0pKTspcUYoMHxhWygwfGFbcCsxODQ+PjJdKSsoYzw8Mik+PjJdKSxjPWMrMXwwO2U6ZG97aWYoMHxhW3ArMjY4Pj4yXSlmb3IoZj0wfGl0W3ArMjM2Pj4xXSxj''@;'; put 'put ''PXA7Oyl7aWYoKDB8Zik+KDB8aXRbYysyMzg+PjFdKSlicmVhayBlO3c9MHxlSChsLGI9MHxhWygwfGFbYysyNjg+PjJdKSsoZjw8Mik+PjJdLC0xKSxiPTB8ZUgobCxiLDEpLGFbKDB8YVsyNjgrKDB8YVttPj4yXSk+PjJdKSsoZjw8Mik+PjJdPXcsaz0wfGFbKDB8YVsxOTYrKDB8YVsxNiso''@;'; put 'put ''MHx5YShsKSk+PjJdKT4+Ml0pKyhmPDw2KSs0Pj4yXSxhWyhBPTB8YVsxOTYrKHA9MHxhW20+PjJdKT4+Ml0pKyhmPDw2KSs0Pj4yXT1rKygodz0wfGFbMjM2KygwfGFbdysxNj4+Ml0pPj4yXSk8PDIpLGFbQSsoZjw8Nik+PjJdPTErKDB8YVsyMzYrKDB8YVtiKzE2Pj4yXSk+PjJdKS13LGY9''@;'; put 'put ''ZisxfDAsYz1wfX13aGlsZSgwKX1mdW5jdGlvbiBNMGUobCl7MHwobHw9MCkmJihGdCgwfGFbbCs4Pj4yXSksRnQobCkpfWZ1bmN0aW9uIGVIKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHA9MDtmb3IocD1jfD0wO2M9MHxFMGUoYyxmKTspcD0wfG1JKGwsYyk/YzowPT0oMHxueShsLGMpKT9wOmM7''@;'; put 'put ''cmV0dXJuIDB8cH1mdW5jdGlvbiBFMGUobCxjKXtjfD0wO3ZhciBmPTAscD0wLG09MCxBPTA7cmV0dXJuKGx8PTApfHxQcig4NTg1Niw4NTc4MSwxMDIzLDg1ODU4KSwoMHxjKTwwPygwfChwPTB8YVsyMzYrKGw9MHxhW2wrMTY+PjJdKT4+Ml0pKT4wPyhsPSgwfGFbMTk2KygwfGFbMTYrKDB8''@;'; put 'put ''YVs0Njc0MV0pPj4yXSk+PjJdKSsoYVtsKzIzMj4+Ml08PDYpKzR8MCxmPXArLTF8MCxtPTcpOkE9MDoocD0wfGFbMjM2KyhsPTB8YVtsKzE2Pj4yXSk+PjJdLGw9KDB8YVsxOTYrKDB8YVsxNisoMHxhWzQ2NzQxXSk+PjJdKT4+Ml0pKyhhW2wrMjMyPj4yXTw8NikrNHwwLGY9cCsxfDAsbT03''@;'; put 'put ''KSw3PT0oMHxtKSYmKChsPTB8YVsoMHxhW2w+PjJdKSsoZjw8Mik+PjJdKT8oMHxBcigoMHxhWzIzNisoMHxhW2wrMTY+PjJdKT4+Ml0pLXB8MCxjKSk+MD9BPWw6UHIoODU4NjcsODU3ODEsMTAyOSw4NTg1OCk6QT0wKSwwfEF9ZnVuY3Rpb24gbUkobCxjKXtyZXR1cm4gbHw9MCwwfCgwfGZl''@;'; put 'put ''WzE1NisoMHxhWzE2KyhjfD0wKT4+Ml0pPj4wXT8wOjAhPSgwfE5yKGwsYykpJjEpfWZ1bmN0aW9uIG55KGwsYyl7bHw9MDt2YXIgZj0wLHA9MDtpZigxPT0oMHxmZVsxNTYrKGM9MHxhWzE2KyhjfD0wKT4+Ml0pPj4wXSkmJjE9PSgwfGFbYysxNzY+PjJdKSYmMT09KDB8YVtjKzE4ND4+Ml0p''@;'; put 'put ''KXtmb3IoYz0wfGFbYysxODA+PjJdOzB8ZmVbMTEyKyhmPTB8YVsxNisoYz0wfGFbYz4+Ml0pPj4yXSk+PjBdOyljPWYrMTE2fDA7MHxOcihsLGMpP2M9MTpwPTd9ZWxzZSBwPTc7cmV0dXJuIDc9PSgwfHApJiYoYz0wKSwwfGN9ZnVuY3Rpb24gdEgobCl7bHw9MDt2YXIgZixwLGM9MDtwPWxl''@;'; put 'put ''LGxlPWxlKzE2fDAsZj1wLGM9MHxhWzQ3MTQwXTtlOmRve2lmKDAhPSgwfGMpfDAhPSgwfGFbNDcxNjFdKSl7aWYoMHwoYz0wfHYyKGwsYywwKSkpe3N3aXRjaCgwfGZlW2M+PjBdKXtjYXNlIDA6YnJlYWsgZTtjYXNlIDExMTppZighKDB8WmkoYyw4NjA2OSkpKXtEWShsLDEpO2JyZWFrIGV9''@;'; put 'put ''YnJlYWs7Y2FzZSAxMDU6aWYoISgwfFppKGMsOTg3MzUpKSl7RFkobCwwKTticmVhayBlfX1hW2Y+PjJdPWMsJHIoMSw4NjA3MyxmKTticmVha31mb3IoYz0wfHdzKGwpO2M7KTB8bUgoYyl8fHRIKGMpLGM9MHxFcyhjKTswfGFbNDcxNjFdJiZ4MGUobCl9fXdoaWxlKDApO2xlPXB9ZnVuY3Rp''@;'; put 'put ''b24gdkkobCl7dmFyIGIsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTA7Zm9yKHc9MHxpdFsyMzYrKGM9MHxhWyhiPTE2KyhsfD0wKXwwKT4+Ml0pPj4xXTshKCgwfHcpPigwfGl0W2MrMjM4Pj4xXSkpOyl7Zm9yKGY9MCxBPTA7ISgoMHxBKT49KDB8KG09MHxhWyhwPTB8YVtjKzE5Nj4+Ml0pKyh3''@;'; put 'put ''PDw2KT4+Ml0pKSk7KWZlWzE1OCsocD0wfGFbMTYrKDB8YVsoMHxhW3ArKHc8PDYpKzQ+PjJdKSsoQTw8Mik+PjJdKT4+Ml0pPj4wXT0wLGZlW3ArMTU3Pj4wXT0wLGFbcCsyODQ+PjJdPUEsMD09KDB8ZikmKDB8YVtwKzE5Mj4+Ml0pPjAmJihmPTB8eUkobSxtKSxhWygwfGFbMTk2KyhjPTB8''@;'; put 'put ''YVtiPj4yXSk+PjJdKSsodzw8NikrNTY+PjJdPWYsZj0xKSxBPUErMXwwO2U6ZG97aWYoZilmb3IoQT0wLGY9bTs7KXtpZigoMHxBKT49KDB8ZikpYnJlYWsgZTswfGZlWzE1NysoMHxhWzE2KyhtPTB8YVsoMHxhW3ArKHc8PDYpKzQ+PjJdKSsoQTw8Mik+PjJdKT4+Ml0pPj4wXXx8KHJIKGws''@;'; put 'put ''bSkscD1mPTB8YVsxOTYrKGM9MHxhW2I+PjJdKT4+Ml0sZj0wfGFbZisodzw8Nik+PjJdKSxBPUErMXwwfX13aGlsZSgwKTt3PXcrMXwwfX1mdW5jdGlvbiBJWShsKXt2YXIgZ2UsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsYmU9MDtp''@;'; put 'put ''ZigwfGZlWzI0MCsoYz0wfGFbKGdlPTE2KyhsfD0wKXwwKT4+Ml0pPj4wXSl7bT0wLHBlPTB8aXRbYysyMzY+PjFdLHE9MCxBPTA7ZTpmb3IoOyEoKDB8cGUpPigwfGl0W2MrMjM4Pj4xXSkpOyl7aWYocD0wfGFbKGY9MHxhW2MrMTk2Pj4yXSkrKHBlPDw2KT4+Ml0pe2ZvcihSPTB8YVsyMzYr''@;'; put 'put ''KDB8YVsxNisoMHxhWyhmPTB8YVtmKyhwZTw8NikrND4+Ml0pPj4yXSk+PjJdKT4+Ml0sYz0wOyEoKDB8Yyk+PSgwfHApKTspZmVbMTU3KygwfGFbMTYrKDB8YVtmKyhjPDwyKT4+Ml0pPj4yXSk+PjBdPTAsYz1jKzF8MDtmb3IoYz00KyhjPDwyKXwwLEc9bT8wfFYwKEEsYyk6MHxRbihjKSxN''@;'; put 'put ''PTAsRD0wOyEoKDB8KHA9MHxhWyhmPTB8YVsxOTYrKGM9MHxhW2dlPj4yXSk+PjJdKSsocGU8PDYpPj4yXSkpPD0oMHxEKSk7KXtmb3Ioaz0xNisodz0wfGFbKDB8YVtmKyhwZTw8NikrND4+Ml0pKygoMD09KDEmYVtjKzExNj4+Ml18MCk/cCt+RHwwOkQpPDwyKT4+Ml0pfDAsYz0wLGI9MDs7''@;'; put 'put ''KXtpZigoMHxjKT49KDB8YVsyMDArKEE9MHxhW2s+PjJdKT4+Ml0pKXtmPTAscD0wLGM9QTticmVha31BPWIrKDAhPSgwfEtDKGwsMHxhWygwfGFbQSsxOTY+PjJdKSsoYzw8Mik+PjJdKSkmMSl8MCxjPWMrMXwwLGI9QX1mb3IoOyEoKDB8cCk+PSgwfGFbYysxOTI+PjJdKSk7KWY9QT1mKygw''@;'; put 'put ''IT0oMHxLQyhsLDB8YVsoMHxhW2MrMTg4Pj4yXSkrKHA8PDIpPj4yXSkpJjEpfDAscD1wKzF8MCxjPTB8YVtrPj4yXTtmfGI/Yz0wPT0oMHxiKSYwPT0oMHxmZVtjKzE1Nz4+MF0pPygwfHVwKGwsdyxHKyhNPDwyKXwwLHBlKSkrTXwwOk06KGFbRysoTTw8Mik+PjJdPXcsYz1NKzF8MCksTT1j''@;'; put 'put ''LEQ9RCsxfDB9dDpkb3tpZihNKXtuOmRve2lmKDEmYVtjKzExNj4+Ml0pcD0wO2Vsc2UgZm9yKGY9RyxjPUcrKE08PDIpfDA7Oyl7aWYoZj4+PjA+PShjPWMrLTR8MCk+Pj4wKXtwPTA7YnJlYWsgbn1EPTB8YVtmPj4yXSxhW2Y+PjJdPWFbYz4+Ml0sYVtjPj4yXT1ELGY9Zis0fDB9fXdoaWxl''@;'; put 'put ''KDApO2Zvcig7Oyl7aWYoKDB8cCk+PSgwfChmPTB8YVsoQT0wfGFbMTk2KyhjPTB8YVtnZT4+Ml0pPj4yXSkrKHBlPDw2KT4+Ml0pKSl7TT0wLHA9QTticmVha31hWygwfGFbQSsocGU8PDYpKzQ+PjJdKSsocDw8Mik+PjJdPUQ9MHxhW0crKHA8PDIpPj4yXSxhWzIzNisoMHxhW0QrMTY+PjJd''@;'; put 'put ''KT4+Ml09cCtSLHA9cCsxfDB9Zm9yKDs7KXtpZigoMHxNKT49KDB8ZikpYnJlYWsgdDtpZihBPTB8YVsxODgrKDB8YVsoaz0xNisoMHxhWygwfGFbcCsocGU8PDYpKzQ+PjJdKSsoTTw8Mik+PjJdKXwwKT4+Ml0pPj4yXSl7Zm9yKGI9MCxmPUE7Yz0wfGFbZ2U+PjJdLHA9MHxhW2YrKGI8PDIp''@;'; put 'put ''Pj4yXTspe2lmKEE9MHxhWzIzNisoMHxhWzE2KygwfGFbKDI9PSgwfCh3PTMmYVtwPj4yXSkpP3A6cCstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSx3PTB8YVsyMzYrKDB8YVsxNisoMHxhWygzPT0oMHx3KT9wOnArNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSwxJmFbYysxMTY+PjJdPygwfEEpPigw''@;'; put 'put ''fHcpP2JlPTM2OmM9YjooMHxBKTwoMHx3KT9iZT0zNjpjPWIsMzY9PSgwfGJlKSl7aWYoYmU9MCwwfEtDKGwscCkpe2JlPTM3O2JyZWFrIGV9S0YocCksQUkobCxwKSxjPWIrLTF8MCxmPTB8YVsxODgrKDB8YVtrPj4yXSk+PjJdfWI9YysxfDB9cD1mPTB8YVtjKzE5Nj4+Ml0sZj0wfGFbZiso''@;'; put 'put ''cGU8PDYpPj4yXX1NPU0rMXwwfX19d2hpbGUoMCk7ZmVbKDB8YVsxOTYrKDB8YVsxNisoMHxhWzQ2NzQxXSk+PjJdKT4+Ml0pKyhwZTw8NikrNDk+PjBdPTAsbT1HLHA9RyxmPUd9ZWxzZSBwPXEsZj1BO3BlPXBlKzF8MCxxPXAsQT1mfTM3PT0oMHxiZSkmJlByKDg1OTE1LDg1NzgxLDE1NjEs''@;'; put 'put ''ODU5NTQpLDB8bSYmRnQocSl9fWZ1bmN0aW9uIG5IKGwpe3ZhciBmLGM9MDtsPTB8YVsoZj0xNisobHw9MCl8MCk+PjJdO2U6ZG97aWYoMHxhW2wrMjY4Pj4yXSlmb3IoYz0wfGl0W2wrMjM2Pj4xXTs7KXtpZigoMHxjKT4oMHxpdFtsKzIzOD4+MV0pKWJyZWFrIGU7YVsoMHxhW2wrMjY4Pj4y''@;'; put 'put ''XSkrKGM8PDIpPj4yXT1hW2FbKDB8YVtsKzE5Nj4+Ml0pKyhjPDw2KSs0Pj4yXT4+Ml0sYz1jKzF8MCxsPTB8YVtmPj4yXX19d2hpbGUoMCl9ZnVuY3Rpb24gS0MobCxjKXtyZXR1cm4gbHw9MCwwfCgwIT0oMHxhWzE1NisoMHxhWzE2KyhjfD0wKT4+Ml0pPj4yXSkmJjAhPSgwfEc2KGwsMHxh''@;'; put 'put ''WygzPT0oMyZhW2M+PjJdfDApP2M6Yys0OHwwKSs0MD4+Ml0pKT8wIT0oMHxHNihsLDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOmMrLTQ4fDApKzQwPj4yXSkpJjE6MCl9ZnVuY3Rpb24gdXAobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIE0sbT0wLEE9MCx3PTAsYj0wLGs9MDtmZVsxNTcr''@;'; put 'put ''KG09MHxhWyhNPTE2KyhjfD0wKXwwKT4+Ml0pPj4wXT0xO2U6ZG97aWYoKDB8YVttKzE5Mj4+Ml0pPjApZm9yKEE9MCxiPTA7Oyl7aWYoISh3PTB8YVsoMHxhW20rMTg4Pj4yXSkrKGI8PDIpPj4yXSkpYnJlYWsgZTswIT0oMHxLQyhsLHcpKSYmMD09KDB8ZmVbMTU3KygwfGFbMTYrKGs9MHxh''@;'; put 'put ''WygyPT0oMyZhW3c+PjJdfDApP3c6dystNDh8MCkrNDA+PjJdKT4+Ml0pPj4wXSkmJihBPSgwfHVwKGwsayxmKyhBPDwyKXwwLHApKStBfDApLGI9YisxfDAsbT0wfGFbTT4+Ml19ZWxzZSBBPTB9d2hpbGUoMCk7cmV0dXJuKDB8YVttKzIzMj4+Ml0pPT0oMHxwKT8oYVtmKyhBPDwyKT4+Ml09''@;'; put 'put ''YyxBKzF8MCk6KFByKDg1OTY3LDg1NzgxLDE0OTAsODU5ODMpLDApfWZ1bmN0aW9uIEFJKGwsYyl7bHw9MDt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTA7cD0wfGFbMTg4KygwfGFbMTYrKGI9MHxhWygyPT0oMHwodz0zJmFbKGN8PTApPj4yXSkpP2M6YystNDh8MCkr''@;'; put 'put ''NDA+PjJdKT4+Ml0pPj4yXTtlOmRve2lmKHApe2ZvcihNPWMrNDh8MCxtPSgzPT0oMHx3KT9jOk0pKzQwfDAsZj0wOzspe2lmKCEoQT0wfGFbcCsoZjw8Mik+PjJdKSl7Zj1NLEQ9MTU7YnJlYWsgZX1pZigoMHxhWygyPT0oMyZhW0E+PjJdfDApP0E6QSstNDh8MCkrNDA+PjJdKT09KDB8YVtt''@;'; put 'put ''Pj4yXSkpYnJlYWs7Zj1mKzF8MH16NihjLEEpLDB8YVsoZj0xNzIrKDB8YVtjKzE2Pj4yXSl8MCk+PjJdfHwoYVtmPj4yXT1BKSw0PT0oMHxmZVsxMTIrKGY9MHxhW0ErMTY+PjJdKT4+MF0pJiYwPT0oMHxhWyhrPWYrMTE2fDApPj4yXSkmJihhW2s+PjJdPWMpLGY9KHA9MHxhWzIwNCsoZj0w''@;'; put 'put ''fGFbMTYrKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOk0pKzQwPj4yXSk+PjJdKT4+Ml0pPzB8VjAocCw4KyhhW2YrMjA4Pj4yXTw8Mil8MCk6MHxRbig4KyhhW2YrMjA4Pj4yXTw8Mil8MCksYVsyMDQrKDB8YVsxNisoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6TSkrNDA+PjJdKT4+Ml0pPj4y''@;'; put 'put ''XT1mLGI9MHxhWzIwNCsodz0wfGFbMTYrKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOk0pKzQwPj4yXSk+PjJdKT4+Ml0sYVsodz13KzIwOHwwKT4+Ml09MSsoaz0wfGFbdz4+Ml0pLGFbYisoazw8Mik+PjJdPWMsYVsoMHxhWzIwNCsoYz0wfGFbMTYrKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9j''@;'; put 'put ''Ok0pKzQwPj4yXSk+PjJdKT4+Ml0pKyhhW2MrMjA4Pj4yXTw8Mik+PjJdPTB9ZWxzZSBmPWMrNDh8MCxEPTE1fXdoaWxlKDApOzE1PT0oMHxEKSYmKEQ9MHwkQShiLDB8YVsoMz09KDB8dyk/YzpmKSs0MD4+Ml0sYyksTT0wfGFbYysxNj4+Ml0sZmVbMTEyKyhjPTB8YVtEKzE2Pj4yXSk+PjBd''@;'; put 'put ''PTQ9PSgwfGZlW00rMTEyPj4wXSk/NDozLGFbYys5Nj4+Ml09YVtNKzk2Pj4yXSxoSShsLEQpKX1mdW5jdGlvbiBHNihsLGMpe3ZhciBmO3JldHVybiBmPTB8bUkobHw9MCxjfD0wKSwwfG55KGwsYyl8ZnwwfWZ1bmN0aW9uIHlJKGwsYyl7dmFyIGY7cmV0dXJuIGx8PTAsY3w9MCxmPTB8dnIo''@;'; put 'put ''MTIpLGFbZj4+Ml09bCxhW2YrND4+Ml09YyxhW2YrOD4+Ml09MHx2cigwfEFyKGMsbCkpLDB8Zn1mdW5jdGlvbiBySChsLGMpe3ZhciBrLEcsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsTT0wLEQ9MCxSPTAscT0wLHBlPTAsZ2U9MDtrPTB8YVsoMHxhWzE5NisoMHxhWzE2KyhsfD0wKT4+Ml0p''@;'; put 'put ''Pj4yXSkrKGFbMjMyKyhNPTB8YVsoRz0xNisoY3w9MCl8MCk+PjJdKT4+Ml08PDYpKzU2Pj4yXSxmZVtNKzE1Nz4+MF09MSxmZVtNKzE1OD4+MF09MSxNPSgwfGFbMTgwKygwfGFbMTYrKDB8eWEobCkpPj4yXSk+PjJdKT4wLHA9MHxhWzE4OCsoZj0wfGFbRz4+Ml0pPj4yXTtlOmRve2lmKHAp''@;'; put 'put ''e0Q9ays0fDAsUj1rKzh8MCxjPTA7dDpmb3IoOzspe2lmKCEoYj0wfGFbcCsoYzw8Mik+PjJdKSl7cT1mO2JyZWFrIGV9TT8wIT0oMHxOcihsLDB8YVsoMz09KDMmYVtiPj4yXXwwKT9iOmIrNDh8MCkrNDA+PjJdKSkmJjAhPSgwfE5yKGwsMHxhWygyPT0oMyZhW2I+PjJdfDApP2I6YistNDh8''@;'; put 'put ''MCkrNDA+PjJdKSkmJihwZT03KTpwZT03O2Rve2lmKDc9PSgwfHBlKSYmKHBlPTAsMHxhWzE1NisoMHxhWyhBPWIrMTZ8MCk+PjJdKT4+Ml0pKXtpZihtPWIrLTQ4fDAscD0oMHwodz0wfGFbMjg0KyhnZT0wfGFbMTYrKDB8YVsoMj09KDB8KGY9MyZhW2I+PjJdKSk/YjptKSs0MD4+Ml0pPj4y''@;'; put 'put ''XSk+PjJdKSk8KDB8YVtrPj4yXSksMT09KDB8ZmVbZ2UrMTU4Pj4wXSkpe2lmKCFwKXtwZT0xMDticmVhayB0fWlmKCgwfChmPTB8YVsyODQrKDB8YVsxNisoMHxhWygzPT0oMHxmKT9iOmIrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpPj0oMHwocD0wfGFbRD4+Ml0pKSl7cGU9MTI7YnJlYWsg''@;'; put 'put ''dH1pZihmZVsoMHxhW1I+PjJdKSsoKDB8QXIocCx3KSkrZik+PjBdPTEsS0YoYiksYz1jKy0xfDAsND09KDB8ZmVbMTEyKygwfGFbQT4+Ml0pPj4wXSkpYnJlYWs7QUkobCxiKTticmVha31pZighcCl7cGU9MTY7YnJlYWsgdH1pZigoMHwoZj0wfGFbMjg0KygwfGFbMTYrKDB8YVsoMz09KDB8''@;'; put 'put ''Zik/YjpiKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pKT49KDB8KHA9MHxhW0Q+PjJdKSkpe3BlPTE4O2JyZWFrIHR9aWYoZmVbKDB8YVtSPj4yXSkrKCgwfEFyKHAsZikpK3cpPj4wXT0xLDB8ZmVbMTU3KygwfGFbMTYrKGY9MHxhWygyPT0oMyZhW2I+PjJdfDApP2I6bSkrNDA+PjJdKT4+Ml0p''@;'; put 'put ''Pj4wXSlicmVhaztySChsLGYpO2JyZWFrfX13aGlsZSgwKTtjPWMrMXwwLGY9cD0wfGFbRz4+Ml0scD0wfGFbcCsxODg+PjJdfTEwPT0oMHxwZSk/UHIoODU5OTMsODU3ODEsMTI1MSw4NjAyNSk6MTI9PSgwfHBlKT9Qcig4NjAzNyw4NTc4MSwxMjUyLDg2MDI1KToxNj09KDB8cGUpP1ByKDg1''@;'; put 'put ''OTkzLDg1NzgxLDEyNjAsODYwMjUpOjE4PT0oMHxwZSkmJlByKDg2MDM3LDg1NzgxLDEyNjEsODYwMjUpfWVsc2UgcT1mfXdoaWxlKDApO2ZlW3ErMTU4Pj4wXT0wfWZ1bmN0aW9uIERZKGwsYyl7Y3w9MDt2YXIgZj0wO2ZvcihmPTB8RHQobHw9MCk7ZjspaUgobCxmLGMpLGY9MHx6dChsLGYp''@;'; put 'put ''fWZ1bmN0aW9uIHgwZShsKXt2YXIgcCxtLGM9MCxmPTAsQT0wO2ZvcihtPWxlLGxlPWxlKzE2fDAscD1tLGM9MHxEdChsfD0wKTtjOyl7Zj0wfHYyKGMsMHxhWzQ3MTYxXSwwKTtlOmRve2lmKDB8Zil7c3dpdGNoKDB8ZmVbZj4+MF0pe2Nhc2UgMDpicmVhayBlO2Nhc2UgMTExOmlmKCEoMHxa''@;'; put 'put ''aShmLDg2MDY5KSkpe2lIKGwsYywxKTticmVhayBlfWJyZWFrO2Nhc2UgMTA1OmlmKCEoMHxaaShmLDk4NzM1KSkpe2lIKGwsYywwKTticmVhayBlfX1BPTB8dGkoYyksYVtwPj4yXT1mLGFbcCs0Pj4yXT1BLCRyKDEsODYxMDQscCl9fXdoaWxlKDApO2M9MHx6dChsLGMpfWxlPW19ZnVuY3Rp''@;'; put 'put ''b24gaUgobCxjLGYpe2x8PTAsZnw9MDt2YXIgYixwPTAsbT0wLEE9MCx3PTA7Yj0wfGFbNDY3NDBdLHA9MHxhWyhBPTE2KyhjfD0wKXwwKT4+Ml07ZTpkb3tpZighKDB8YVtwKzIxMj4+Ml0pKXt3PTAhPSgwfGYpO3Q6ZG97aWYodylmb3IobT0wLGM9MCxmPXA7Oyl7aWYoIShwPTB8YVsoMHxh''@;'; put 'put ''W2YrMTgwPj4yXSkrKG08PDIpPj4yXSkpYnJlYWsgdDswfExZKHApfHwoYVtiKyhjPDwyKT4+Ml09cCxjPWMrMXwwLGY9MHxhW0E+PjJdKSxtPW0rMXwwfWVsc2UgZm9yKG09MCxjPTAsZj1wOzspe2lmKCEocD0wfGFbKDB8YVtmKzE3Mj4+Ml0pKyhtPDwyKT4+Ml0pKWJyZWFrIHQ7MHxMWShw''@;'; put 'put ''KXx8KGFbYisoYzw8Mik+PjJdPXAsYz1jKzF8MCxmPTB8YVtBPj4yXSksbT1tKzF8MH19d2hpbGUoMCk7aWYoKDB8Yyk+PTIpZm9yKGFbYisoYzw8Mik+PjJdPTAseDEoYixjLDQsNjEpLEE9dz8yOjMsbT13Py0xOjEscD0xOzspe2lmKCEoYz0wfGFbYisocDw8Mik+PjJdKXx8MHxNWShmPTB8''@;'; put 'put ''YVsoKDMmYVsoZj0wfGFbYisocCstMTw8Mik+PjJdKT4+Ml18MCk9PSgwfEEpP2Y6ZisoNDgqbXwwKXwwKSs0MD4+Ml0sYz0wfGFbKCgzJmFbYz4+Ml18MCk9PSgwfEEpP2M6YysoNDgqbXwwKXwwKSs0MD4+Ml0pKWJyZWFrIGU7dz0wfCRBKGYsYywwKSxmZVsxMTIrKDB8YVt3KzE2Pj4yXSk+''@;'; put 'put ''PjBdPTQsaEkobCx3KSxwPXArMXwwfX19d2hpbGUoMCl9ZnVuY3Rpb24gTFkobCl7bHw9MDtmb3IodmFyIGM9MDtjPTB8YVsxMTYrKDB8YVtsKzE2Pj4yXSk+PjJdOylsPWM7cmV0dXJuKDB8YVsyMTIrKDB8YVsxNisoMHxhWygzPT0oMHwoYz0zJmFbbD4+Ml0pKT9sOmwrNDh8MCkrNDA+PjJd''@;'; put 'put ''KT4+Ml0pPj4yXSkhPSgwfGFbMjEyKygwfGFbMTYrKDB8YVsoMj09KDB8Yyk/bDpsKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKXwwfWZ1bmN0aW9uICRDKGwpe2x8PTA7dmFyIEEsdyxjPTAsZj0wLHA9MCxtPTA7Zm9yKHA9MCxtPTB8aXRbMjM2KyhmPTB8YVsodz0xNisoQT0wfGFbNDY3NDFd''@;'; put 'put ''KXwwKT4+Ml0pPj4xXTshKCgwfG0pPj0oMHxpdFtmKzIzOD4+MV0pKTspMHxmZVsobD0wfGFbZisxOTY+PjJdKSsobTw8NikrNDk+PjBdPyhjPTB8YVtsKyhtPDw2KSs1Mj4+Ml0sbD1mKTooYz0wfE5ZKEEsbSksYVsoZj0wfGFbMTk2KyhsPTB8YVt3Pj4yXSk+PjJdKSsobTw8NikrNTI+PjJd''@;'; put 'put ''PWMsZmVbZisobTw8NikrNDk+PjBdPTEpLHA9YytwfDAsbT1tKzF8MCxmPWw7cmV0dXJuIDB8cH1mdW5jdGlvbiBvSChsKXt2YXIgbSxBLGM9MCxmPTAscD0wLHc9MDtmb3IobT0wfGl0WzIzOCsobD0wfGFbMTYrKGx8PTApPj4yXSk+PjFdLEE9bCsxOTZ8MCxsPTB8aXRbbCsyMzY+PjFdOyEo''@;'; put 'put ''KDB8bCk+KDB8bSkpOyl7Zm9yKGY9MHxhWyhwPTB8YVtBPj4yXSkrKGw8PDYpPj4yXSxwPXArKGw8PDYpKzR8MCxjPTA7ISgoMHxjKT49KDB8ZikpOylfWzE2Kyh3PTB8YVsxNisoMHxhWygwfGFbcD4+Ml0pKyhjPDwyKT4+Ml0pPj4yXSk+PjNdPSsoMHxhW3crMjM2Pj4yXSksYz1jKzF8MDts''@;'; put 'put ''PWwrMXwwfX1mdW5jdGlvbiBPWShsLGMpe2N8PTA7dmFyIGssTSxELHEsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsUj0wLEc9MDtmb3IocT1sZSxsZT1sZSsxNnwwLGs9cSxEPTB8dUQoMHxhWzIzMisoMHxhWyhNPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSkscD1mPTE5Misodz0wfGFbTT4+Ml0p''@;'; put 'put ''fDA7cD0wfGFbcD4+Ml07KWZlWzE1NysocD0wfGFbcCsxNj4+Ml0pPj4wXT0wLHA9cCsxNjR8MDtmb3IobT0wfGl0W3crMjM4Pj4xXSxBPXcrMTk2fDAscD0wfGl0W3crMjM2Pj4xXTshKCgwfHApPigwfG0pKTspYVsoMHxhW0E+PjJdKSsocDw8Nik+PjJdPTAscD1wKzF8MDtmb3IoQT0wPT0o''@;'; put 'put ''MHxjKTtwPTB8YVtmPj4yXTspe2lmKGY9MHxhWyhtPXArMTZ8MCk+PjJdLDA9PSgwfGFbYVsoQT9mKzE3MnwwOmYrMTgwfDApPj4yXT4+Ml0pJiYwPT0oMHxmZVsoYj1mKzE1N3wwKT4+MF0pKXtmb3IoZmVbYj4+MF09MSxENyhELHApO2Y9MHxjRChEKTspNyE9KDB8ZmVbMTU5KygwfGFbZisx''@;'; put 'put ''Nj4+Ml0pPj4wXSk/KEhZKGwsZikscUMoRCxmLGMpKTptb2UobCxmLGMsRCk7Zj0wfGFbbT4+Ml19Zj1mKzE2NHwwfWZvcigwfGNEKEQpJiYkcigxLDg2MzEyLGspLHc9MHxpdFsyMzYrKGY9MHxhW00+PjJdKT4+MV07ISgoMHx3KT4oMHxpdFtmKzIzOD4+MV0pKTspe2lmKGZlWygwfGFbMTk2''@;'; put 'put ''KygwfGFbMTYrKDB8YVs0Njc0MV0pPj4yXSk+PjJdKSsodzw8NikrNDk+PjBdPTAsMCE9KDEmYVtmKzExNj4+Ml18MCkmJigwfChHPTB8YVsoUj0wfGFbZisxOTY+PjJdKSsodzw8Nik+PjJdKSk+MCl7Zm9yKHA9MHxhW1IrKHc8PDYpKzQ+PjJdLEE9KDB8KG09RystMXwwKSkvMnwwLGY9MDsh''@;'; put 'put ''KCgwfGYpPigwfEEpKTspY3AoMHxhW3ArKGY8PDIpPj4yXSwwfGFbcCsobS1mPDwyKT4+Ml0pLGY9ZisxfDA7Zj0wfGFbTT4+Ml19dz13KzF8MH0oMHx5YShsKSk9PSgwfGwpJiYoMHwkQygwKSk+MCYmd0kobCwwKSxkSihEKSxsZT1xfWZ1bmN0aW9uIFJZKGwpe3ZhciBiLGssTSxjPTAsZj0w''@;'; put 'put ''LHA9MCxtPTAsQT0wLHc9MCxEPTA7Zm9yKGI9KGM9MHxpdFsyMzgrKGw9MHxhWyhNPTE2KyhsfD0wKXwwKT4+Ml0pPj4xXSk8PDE2Pj4xNixrPWwrMTk2fDAscD1mPTB8aXRbbCsyMzY+PjFdOyEoKDB8cCk+KDB8YikpOyl7Zm9yKEE9MHxhWyh3PTB8YVtrPj4yXSkrKHA8PDYpPj4yXSx3PXcr''@;'; put 'put ''KHA8PDYpKzR8MCxtPTA7ISgoMHxtKT49KDB8QSkpOylhWzIzNisoRD0wfGFbMTYrKDB8YVsoMHxhW3c+PjJdKSsobTw8Mik+PjJdKT4+Ml0pPj4yXT1+fitfW0QrMTY+PjNdLG09bSsxfDA7cD1wKzF8MH1mb3IoOyEoKDB8Zik+KGM8PDE2Pj4xNnwwKSk7KWZlWygwfGFbMTk2KygwfGFbMTYr''@;'; put 'put ''KDB8YVs0Njc0MV0pPj4yXSk+PjJdKSsoZjw8NikrNDk+PjBdPTAseDEoMHxhWyhEPTB8YVtsKzE5Nj4+Ml0pKyhmPDw2KSs0Pj4yXSwwfGFbRCsoZjw8Nik+PjJdLDQsNjIpLGY9ZisxfDAsYz0wfGl0WzIzOCsoRD0wfGFbTT4+Ml0pPj4xXSxsPUR9ZnVuY3Rpb24gRDBlKGwsYyl7dmFyIG0s''@;'; put 'put ''Zj0wLHA9MDtmb3IobT0oMHwoMHwoY3w9MCkpJTQpPDImMSxmPTB8YVsxNisobHw9MCk+PjJdLDEmYz8oYz0wfGl0W2YrMjM4Pj4xXSxwPS0xLGY9MHxpdFtmKzIzNj4+MV0sYz0oKGM8PDE2Pj4xNj49KDB8aXRbMjM4KygwfGFbMTYrKDB8YVs0Njc0MV0pPj4yXSk+PjFdKSk8PDMxPj4zMSkr''@;'; put 'put ''KGM8PDE2Pj4xNil8MCk6KGM9MHxpdFtmKzIzNj4+MV0scD0xLGY9MHxpdFtmKzIzOD4+MV0sYz0oYzw8MTY+PjE2PD0oMHxpdFsyMzYrKDB8YVsxNisoMHxhWzQ2NzQxXSk+PjJdKT4+MV0pJjEpKyhjPDwxNj4+MTYpfDApLGY9cCtmfDA7KDB8YykhPSgwfGYpOylPMGUobCxjLG0sMjU1Jigw''@;'; put 'put ''fFBZKGwsYyxjLXB8MCkpKSxjPWMrcHwwO3dJKGwsMV5tKX1mdW5jdGlvbiB3SShsLGMpe2N8PTA7dmFyIEEsdyxiLGY9MCxwPTAsbT0wO2Zvcih3PTB8aXRbMjM4KyhwPTB8YVsoYj0xNisobHw9MCl8MCk+PjJdKT4+MV0sbT1wKzE5NnwwLGY9KEE9MHxpdFtwKzIzNj4+MV0pPDwxNj4+MTY7''@;'; put 'put ''Oyl7aWYoKDB8Zik+KDB8dykpe209QTticmVha31mZVsoMHxhW20+PjJdKSsoZjw8NikrNDg+PjBdPTEsZj1mKzF8MH1mb3IoOzspe2ZvcihmPTAsbT1tPDwxNj4+MTY7ISgoMHxtKT4oMHxpdFtwKzIzOD4+MV0pKTspMHxmZVsoMHxhW3ArMTk2Pj4yXSkrKG08PDYpKzQ4Pj4wXSYmKGY9KDB8''@;'; put 'put ''QlkobCxtLGMpKStmfDAscD0wfGFbYj4+Ml0pLG09bSsxfDA7aWYoKDB8Zik8PTApYnJlYWs7bT0wfGl0W3ArMjM2Pj4xXX19ZnVuY3Rpb24gTDBlKGwpe3ZhciBSLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxHPTAscT0wO0Q9MHxpdFsyMzgrKGM9MHxhWyhSPTE2''@;'; put 'put ''KyhsfD0wKXwwKT4+Ml0pPj4xXTtlOmZvcig7Oyl7aWYoKDB8RCk8KDB8aXRbYysyMzY+PjFdKSl7Yz0xNjticmVha31mZVsoZj0wfGFbYysxOTY+PjJdKSsoRDw8NikrNDg+PjBdPTAsRz0oMHxEKT4wLHE9RCsxfDAscD0wO3Q6Zm9yKDs7KXtmb3Ioaz0oMHxhW2YrKEQ8PDYpPj4yXSktMXww''@;'; put 'put ''LE09ZisoRDw8NikrNHwwLGI9ZisocTw8Nil8MDs7KXtpZigoMHxwKT49KDB8aykpYnJlYWsgdDtpZigoMHxhWzIzNisoMHxhWzE2KyhBPTB8YVsodz0wfGFbTT4+Ml0pKyhwPDwyKT4+Ml0pPj4yXSk+PjJdKT49KDB8YVsyMzYrKDB8YVsxNisodz0wfGFbdysoKHA9cCsxfDApPDwyKT4+Ml0p''@;'; put 'put ''Pj4yXSk+PjJdKSl7Yz03O2JyZWFrIGV9aWYoISgwfGJJKGwsQSx3KSkmJihHPyhmPTB8cnkoQSx3KSxtPTB8cnkodyxBKSk6KGY9MCxtPTApLCgwfGFbYj4+Ml0pPjAmJihmPSgwfGl5KEEsdykpK2Z8MCxtPSgwfGl5KHcsQSkpK218MCksKDB8bSk8PSgwfGYpKSlicmVha31XNihsLEQsQSx3''@;'; put 'put ''KSxmPTB8YVsxOTYrKGM9MHxhW1I+PjJdKT4+Ml19RD1EKy0xfDB9aWYoNz09KDB8YykpUHIoODYyNjMsODU3ODEsNzIxLDg2Mjg5KTtlbHNlIGlmKDE2PT0oMHxjKSlyZXR1cm59ZnVuY3Rpb24gYkkobCxjLGYpe2x8PTA7dmFyIG0sQSx3LHA9MCxiPTAsaz0wO0E9KDB8KHc9MHxhWzIxMiso''@;'; put 'put ''Yj0wfGFbMTYrKGN8PTApPj4yXSk+PjJdKSkhPSgwfChtPTB8YVsyMTIrKHA9MHxhWzE2KyhmfD0wKT4+Ml0pPj4yXSkpO2Rve2lmKDB8ZmVbMTkzNzY5XSlBP2w9MTprPTk7ZWxzZSBpZigwPT0oMHxtKXwwPT0oMHx3KXwxXkEpaz05O2Vsc2V7aWYoNz09KDB8ZmVbYisxNTk+PjBdKSYmMT09''@;'; put 'put ''KDB8ZmVbYisxNTY+PjBdKSl7bD0wO2JyZWFrfWlmKDc9PSgwfGZlW3ArMTU5Pj4wXSkmJjE9PSgwfGZlW3ArMTU2Pj4wXSkpe2w9MDticmVha31sPTF9fXdoaWxlKDApO3JldHVybiA5PT0oMHxrKSYmKChsPTB8YVsoMHxhWzE5NisocD0wfGFbbCsxNj4+Ml0pPj4yXSkrKGFbYisyMzI+PjJd''@;'; put 'put ''PDw2KSs1Nj4+Ml0pPyhrPTB8QXIoMHxhW2wrND4+Ml0sMHxhWzI4NCsoMHxhWygoYj0wPT0oMSZhW3ArMTE2Pj4yXXwwKSk/YzpmKSsxNj4+Ml0pPj4yXSksbD0wfGZlWygwfGFbbCs4Pj4yXSkrKCgwfGFbMjg0KygwfGFbKGI/ZjpjKSsxNj4+Ml0pPj4yXSkrayk+PjBdKTpsPTApLDB8bH1m''@;'; put 'put ''dW5jdGlvbiByeShsLGMpe3ZhciBrLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLE09MCxEPTA7Zm9yKGs9MTYrKGx8PTApfDAsdz0wfGFbMTcyKygwfGFbMTYrKGN8PTApPj4yXSk+PjJdLGM9MDtsPTB8YVt3Pj4yXTspe2ZvcihiPTB8aXRbMTU0KyhBPTB8YVtsKzE2Pj4yXSk+PjFdLG09MHxh''@;'; put 'put ''WzIzNisoMHxhWzE2KygwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpsKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0sQT1BKzE2fDAscD0wfGFbMTcyKygwfGFbaz4+Ml0pPj4yXSxsPWM7Yz0wfGFbcD4+Ml07KSgwfChmPSgwfGFbMjM2KygwfGFbMTYrKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOmMr''@;'; put 'put ''NDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSktbXwwKSk8PTA/MD09KDB8ZikmJitfWzE2KyhNPTB8YVtjKzE2Pj4yXSk+PjNdPitfW0E+PjNdJiYoYz1NLEQ9OSk6KGM9MHxhW2MrMTY+PjJdLEQ9OSksOT09KDB8RCkmJihEPTAsbD0oMHxBcigwfGl0W2MrMTU0Pj4xXSxiKSkrbHwwKSxwPXArNHww''@;'; put 'put ''O3c9dys0fDAsYz1sfXJldHVybiAwfGN9ZnVuY3Rpb24gaXkobCxjKXt2YXIgayxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxNPTAsRD0wO2ZvcihrPTE2KyhsfD0wKXwwLHc9MHxhWzE4MCsoMHxhWzE2KyhjfD0wKT4+Ml0pPj4yXSxjPTA7bD0wfGFbdz4+Ml07KXtmb3IoYj0wfGl0WzE1NCso''@;'; put 'put ''QT0wfGFbbCsxNj4+Ml0pPj4xXSxtPTB8YVsyMzYrKDB8YVsxNisoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6bCstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSxBPUErNTZ8MCxwPTB8YVsxODArKDB8YVtrPj4yXSk+PjJdLGw9YztjPTB8YVtwPj4yXTspKDB8KGY9KDB8YVsyMzYrKDB8YVsxNiso''@;'; put 'put ''MHxhWygyPT0oMyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSktbXwwKSk8PTA/MD09KDB8ZikmJitfWzU2KyhNPTB8YVtjKzE2Pj4yXSk+PjNdPitfW0E+PjNdJiYoYz1NLEQ9OSk6KGM9MHxhW2MrMTY+PjJdLEQ9OSksOT09KDB8RCkmJihEPTAsbD0oMHxBcigwfGl0''@;'; put 'put ''W2MrMTU0Pj4xXSxiKSkrbHwwKSxwPXArNHwwO3c9dys0fDAsYz1sfXJldHVybiAwfGN9ZnVuY3Rpb24gVzYobCxjLGYscCl7bHw9MCxjfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MDtpZigodz0wfGZlWzE1NisoMHxhWzE2KyhmfD0wKT4+Ml0pPj4wXSk8PDI0''@;'; put 'put ''Pj4yNCE9KDB8ZmVbMTU2KygwfGFbMTYrKHB8PTApPj4yXSk+PjBdKSl7Zm9yKGs9MHxhWyhNPTB8YVsxOTYrKDB8YVsoYj1sKzE2fDApPj4yXSk+PjJdKSsoYzw8Nik+PjJdLE09TSsoYzw8NikrNHwwLGw9MCxtPTAsQT0wOyEoKDB8bCk+PSgwfGspKTspRz0wPT0oMHxmZVsxNTYrKDB8YVsx''@;'; put 'put ''NisoMHxhWygwfGFbTT4+Ml0pKyhsPDwyKT4+Ml0pPj4yXSk+PjBdKSxsPWwrMXwwLG09bSsoMSZHKXwwLEE9QSsoMSYoMV5HKSl8MDtmb3Iodz13PDwyND4+MjQ9PTAsQT0oMHxtKTwoMHxBKT93P2Y6cDp3P3A6Zix3PTAsbD0wOyEoKDB8bCk+PSgwfGspKTspdz0oMHxhWygwfGFbTT4+Ml0p''@;'; put 'put ''KyhsPDwyKT4+Ml0pPT0oMHxBKT9sOncsbD1sKzF8MDtmb3IoRz0wPT0oMHxmZVsxNTYrKDB8YVtBKzE2Pj4yXSk+PjBdKSYxLFI9MCxtPXc7Oyl7aWYobD1tKy0xfDAsKDB8bSk8PTApe0Q9MCxsPXc7YnJlYWt9aWYoKDB8ZmVbMTU2KygwfGFbMTYrKDB8YVsoMHxhW00+PjJdKSsobDw8Mik+''@;'; put 'put ''PjJdKT4+Ml0pPj4wXSkhPSgwfEcpKXtEPTAsbD13O2JyZWFrfVI9UisxfDAsbT1sfWZvcig7ISgoMHwobD1sKzF8MCkpPj0oMHxrKXx8KDB8ZmVbMTU2KygwfGFbMTYrKDB8YVsoMHxhW00+PjJdKSsobDw8Mik+PjJdKT4+Ml0pPj4wXSkhPSgwfEcpKTspRD1EKzF8MDtmb3IoY3AoZixwKSxr''@;'; put 'put ''PTB8YVsoYj0wfGFbMTk2KygwfGFbYj4+Ml0pPj4yXSkrKGM8PDYpPj4yXSxiPWIrKGM8PDYpKzR8MCxsPTA7Oyl7aWYoKDB8bCk+PSgwfGspKXtBPTAsbT13O2JyZWFrfXc9KDB8YVsoMHxhW2I+PjJdKSsobDw8Mik+PjJdKT09KDB8QSk/bDp3LGw9bCsxfDB9Zm9yKDs7KXtpZihsPW0rLTF8''@;'; put 'put ''MCwoMHxtKTw9MCl7bT0wLGw9dzticmVha31pZigoMHxmZVsxNTYrKDB8YVsxNisoMHxhWygwfGFbYj4+Ml0pKyhsPDwyKT4+Ml0pPj4yXSk+PjBdKSE9KDB8Rykpe209MCxsPXc7YnJlYWt9QT1BKzF8MCxtPWx9Zm9yKDshKCgwfChsPWwrMXwwKSk+PSgwfGspfHwoMHxmZVsxNTYrKDB8YVsx''@;'; put 'put ''NisoMHxhWygwfGFbYj4+Ml0pKyhsPDwyKT4+Ml0pPj4yXSk+PjBdKSE9KDB8RykpOyltPW0rMXwwOygwfCgoMHwoYz1BLW18MCkpPi0xP2M6MC1jfDApKT4oMHwoKDB8KEc9Ui1EfDApKT4tMT9HOjAtR3wwKSkmJmNwKGYscCl9fWZ1bmN0aW9uIGNwKGwsYyl7dmFyIGYscCxBLHcsbT0wO3A9''@;'; put 'put ''MHxhWzIzMisobT0wfGFbMTYrKGx8PTApPj4yXSk+PjJdLGY9MHxhWyhtPW0rMjM2fDApPj4yXSxhW20+PjJdPXc9MHxhWzIzNisoMHxhWyhBPTE2KyhjfD0wKXwwKT4+Ml0pPj4yXSxhWygwfGFbKDB8YVsxOTYrKDB8YVsobT0xNisoMHxhWzQ2NzQxXSl8MCk+PjJdKT4+Ml0pKyhwPDw2KSs0''@;'; put 'put ''Pj4yXSkrKHc8PDIpPj4yXT1sLGFbMjM2KygwfGFbQT4+Ml0pPj4yXT1mLGFbKDB8YVsoMHxhWzE5NisoMHxhW20+PjJdKT4+Ml0pKyhwPDw2KSs0Pj4yXSkrKGY8PDIpPj4yXT1jfWZ1bmN0aW9uIEJZKGwsYyxmKXtmfD0wO3ZhciBSLEcscSxwZSxnZSxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9''@;'; put 'put ''MCxNPTAsRD0wO2ZlWyhEPTB8YVsxOTYrKDB8YVsocT0xNisobHw9MCl8MCk+PjJdKT4+Ml0pKygoY3w9MCk8PDYpKzQ4Pj4wXT0wLHBlPSgwfGMpPjAsZ2U9YysxfDAsUj0wIT0oMHxmKSxHPWMrLTF8MCxwPTAsQT0wLGY9RDtlOmZvcig7Oyl7Zm9yKGs9KDB8YVtmKyhjPDw2KT4+Ml0pLTF8''@;'; put 'put ''MCxNPWYrKGM8PDYpKzR8MCxtPWYrKGdlPDw2KXwwLEQ9cDs7KXtpZigoMHxEKT49KDB8aykpe2Y9MTc7YnJlYWsgZX1pZigoMHxhWzIzNisoMHxhWzE2Kyh3PTB8YVsoYj0wfGFbTT4+Ml0pKyhEPDwyKT4+Ml0pPj4yXSk+PjJdKT49KDB8YVsyMzYrKDB8YVsxNisoYj0wfGFbYisoKEQ9RCsx''@;'; put 'put ''fDApPDwyKT4+Ml0pPj4yXSk+PjJdKSl7Zj01O2JyZWFrIGV9aWYoISgwfGJJKGwsdyxiKSkpe2lmKHBlPyhmPTB8cnkodyxiKSxwPTB8cnkoYix3KSk6KGY9MCxwPTApLCgwfGFbbT4+Ml0pPjAmJihmPSgwfGl5KHcsYikpK2Z8MCxwPSgwfGl5KGIsdykpK3B8MCksKDB8Zik+KDB8cCkpYnJl''@;'; put 'put ''YWs7aWYoKDB8Zik9PSgwfHApJlImKDB8Zik+MCl7Zj1wO2JyZWFrfX19Y3AodyxiKSxBPWYtcCtBfDAsZmVbKHA9MHxhWzE5NisoMHxhWzE2KygwfGFbNDY3NDFdKT4+Ml0pPj4yXSkrKGM8PDYpKzQ5Pj4wXT0wLGZlWyhmPTB8YVsxOTYrKG09MHxhW3E+PjJdKT4+Ml0pKyhjPDw2KSs0OD4+''@;'; put 'put ''MF09MSwoMHxpdFttKzIzNj4+MV0pPCgwfGMpJiYoZmVbcCsoRzw8NikrNDk+PjBdPTAsZmVbZisoRzw8NikrNDg+PjBdPTEpLCgwfGl0W20rMjM4Pj4xXSk8PSgwfGMpfHwoZmVbcCsoZ2U8PDYpKzQ5Pj4wXT0wLGZlW2YrKGdlPDw2KSs0OD4+MF09MSkscD1EfWlmKDU9PSgwfGYpKVByKDg2''@;'; put 'put ''MjYzLDg1NzgxLDc3MCw4NjI5Nyk7ZWxzZSBpZigxNz09KDB8ZikpcmV0dXJuIDB8QTtyZXR1cm4gMH1mdW5jdGlvbiBQWShsLGMsZil7dmFyIE0sRCxHLHEscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsUj0wO2ZvcihxPTB8YVsobD0wfGFbMTk2KygwfGFbKEc9MTYrKGx8PTApfDApPj4yXSk+''@;'; put 'put ''PjJdKSsoKGN8PTApPDw2KSs0Pj4yXSxNPSgwfChmfD0wKSk+KDB8YyksRD00KyhSPTB8YVs0NjczOV0pfDAsaz0wOzspe2lmKCgwfGspPj0oMHwoZj0wfGFbbCsoYzw8Nik+PjJdKSkpe2w9MCxBPTA7YnJlYWt9bD0wfGFbKGI9MTYrKDB8YVtxKyhrPDwyKT4+Ml0pfDApPj4yXTtlOmRve2lm''@;'; put 'put ''KE0pZm9yKHc9MHxhW2wrMTgwPj4yXSxsPTAsQT0wOzspe2lmKCEoZj0wfGFbdysoQTw8Mik+PjJdKSlicmVhayBlOygwfGl0WzE1NCsocD0wfGFbZisxNj4+Ml0pPj4xXSk+MCYmKGFbUisobDw8Mik+PjJdPWFbMjM2KygwfGFbMTYrKDB8YVsoMj09KDMmYVtmPj4yXXwwKT9mOmYrLTQ4fDAp''@;'; put 'put ''KzQwPj4yXSk+PjJdKT4+Ml08PDh8WHRbcCs4OD4+MF0sbD1sKzF8MCksQT1BKzF8MH1lbHNlIGZvcih3PTB8YVtsKzE3Mj4+Ml0sQT0wLGw9MDs7KXtpZighKGY9MHxhW3crKEE8PDIpPj4yXSkpYnJlYWsgZTsoMHxpdFsxNTQrKHA9MHxhW2YrMTY+PjJdKT4+MV0pPjAmJihhW1IrKGw8PDIp''@;'; put 'put ''Pj4yXT1hWzIzNisoMHxhWzE2KygwfGFbKDM9PSgzJmFbZj4+Ml18MCk/ZjpmKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml08PDh8WHRbcCs0OD4+MF0sbD1sKzF8MCksQT1BKzF8MH19d2hpbGUoMCk7ZTpkb3tzd2l0Y2goMHxsKXtjYXNlIDA6bT0tMTticmVhaztjYXNlIDE6bT0rKDB8YVtSPj4y''@;'; put 'put ''XSk7YnJlYWs7Y2FzZSAyOm09KygwfCgoMHxhW0Q+PjJdKSsoMHxhW1I+PjJdKXwwKS8yKTticmVhaztkZWZhdWx0OmlmKHgxKFIsbCw0LDYwKSxmPSgwfGwpLzJ8MCwxJmx8MCl7bT0rKDB8YVtSKyhmPDwyKT4+Ml0pO2JyZWFrIGV9aWYocD0oMHxhW1IrKGwrLTE8PDIpPj4yXSktKEE9MHxh''@;'; put 'put ''W1IrKGY8PDIpPj4yXSl8MCwoMHwoZj0obD0wfGFbUisoZistMTw8Mik+PjJdKS0oMHxhW1I+PjJdKXwwKSk9PSgwfHApKXttPSsoMHwobCtBfDApLzIpO2JyZWFrIGV9bT0rKDB8KCgwfEFyKGYsQSkpKygwfEFyKGwscCkpfDApLyhmK3B8MCkpO2JyZWFrIGV9fXdoaWxlKDApO19bMjQwKygw''@;'; put 'put ''fGFbYj4+Ml0pPj4zXT1tLGs9aysxfDAsbD0wfGFbMTk2KygwfGFbRz4+Ml0pPj4yXX1mb3IoOyEoKDB8QSk+PSgwfGYpKTspMD09KDB8YVsxODQrKFI9MHxhWzE2KyhwPTB8YVtxKyhBPDwyKT4+Ml0pPj4yXSk+PjJdKSYmMD09KDB8YVtSKzE3Nj4+Ml0pJiYobD0yNTUmKDB8UHUocCl8MjU1''@;'; put 'put ''JmwpLGY9MHxhWygwfGFbMTk2KygwfGFbRz4+Ml0pPj4yXSkrKGM8PDYpPj4yXSksQT1BKzF8MDtyZXR1cm4gMHxsfWZ1bmN0aW9uIE8wZShsLGMsZixwKXt2YXIgRyxxLGdlLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAscGU9MDtmb3IoZ2U9MHxhWyhSPTB8YVsxOTYrKDB8YVsx''@;'; put 'put ''NisobHw9MCk+PjJdKT4+Ml0pKygoY3w9MCk8PDYpKzQ+PjJdLHE9MCE9KDB8KGZ8PTApKSxHPTA9PSgocHw9MCl8ZnwwKSxwPTAsZj1SPTB8YVtSKyhjPDw2KT4+Ml0sUj1nZSsoUjw8Mil8MDtEPWYrLTF8MCwoMHxmKT4wOyl7Zj1nZTtlOmZvcig7Oyl7dDpmb3IoOzspe2lmKGY+Pj4wPj1S''@;'; put 'put ''Pj4+MClicmVhayBlO2Zvcig7Oyl7aWYoZj4+PjA+PVI+Pj4wKWJyZWFrIGU7aWYoISgoTT0rX1syNDArKDB8YVsxNisoaz0wfGFbZj4+Ml0pPj4yXSk+PjNdKTwwKSlicmVhaztmPWYrNHwwfWZvcihiPTA7Oyl7Zm9yKG09Yjw8MjQ+PjI0PT0wOzspe2lmKChmPWYrNHwwKT4+PjA+PVI+Pj4w''@;'; put 'put ''KWJyZWFrIGU7aWYobSl7bT0xMTticmVha31pZighKDB8YVsyMTIrKDB8YVsxNisoQT0wfGFbZj4+Ml0pPj4yXSk+PjJdKSl7bT0xMzticmVha319aWYoMTE9PSgwfG0pP3c9QT0wfGFbZj4+Ml06MTM9PSgwfG0pJiYodz1BKSwwfGJJKGwsayx3KSljb250aW51ZSB0O2lmKCtfWzI0MCsobT0w''@;'; put 'put ''fGFbQSsxNj4+Ml0pPj4zXT49MClicmVhaztiPTA9PSgwfGFbbSsyMTI+PjJdKT9iOjF9aWYoKDB8KG09fn5NKSk+KDB8KGI9fn4rX1syNDArKDB8YVtBKzE2Pj4yXSk+PjNdKSl8cSYoMHxtKT09KDB8YikpYnJlYWt9Y3Aoayx3KSxwPXArMXwwfWY9RCxSPUc/UistNHwwOlJ9MHxwJiYoZmVb''@;'; put 'put ''KHBlPTB8YVsxOTYrKDB8YVsxNisoMHxhWzQ2NzQxXSk+PjJdKT4+Ml0pKyhjPDw2KSs0OT4+MF09MCwoMHxjKT4wKSYmKGZlW3BlKyhjKy0xPDw2KSs0OT4+MF09MCl9ZnVuY3Rpb24gUHUobCl7dmFyIEEsYz0wLGY9MCxwPTAsbT0wO2lmKCgwfGFbMjAwKyhBPTB8YVsxNisobHw9MCk+PjJd''@;'; put 'put ''KT4+Ml0pPjApe2ZvcihsPTB8YVsoMz09KDMmYVsobD0wfGFbKG09MHxhW0ErMTk2Pj4yXSk+PjJdKT4+Ml18MCk/bDpsKzQ4fDApKzQwPj4yXSxmPTE7cD0wfGFbbSsoZjw8Mik+PjJdOylsPSgwfGFbMjM2KygwfGFbMTYrKHA9MHxhWygzPT0oMyZhW3A+PjJdfDApP3A6cCs0OHwwKSs0MD4+''@;'; put 'put ''Ml0pPj4yXSk+PjJdKT4oMHxhWzIzNisoMHxhW2wrMTY+PjJdKT4+Ml0pP3A6bCxmPWYrMXwwOyhjPStfWzI0MCsoMHxhW2wrMTY+PjJdKT4+M10pPj0wPyhfW0ErMjQwPj4zXT1jKzEsbD0wKTpsPTF9ZWxzZSBpZigoMHxhW0ErMTkyPj4yXSk+MCl7Zm9yKGw9MSxmPTB8YVsoMj09KDMmYVso''@;'; put 'put ''Zj0wfGFbKHA9MHxhW0ErMTg4Pj4yXSk+PjJdKT4+Ml18MCk/ZjpmKy00OHwwKSs0MD4+Ml07bT0wfGFbcCsobDw8Mik+PjJdOylsPWwrMXwwLGY9KDB8YVsyMzYrKDB8YVsxNisobT0wfGFbKDI9PSgzJmFbbT4+Ml18MCk/bTptKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKTwoMHxhWzIzNiso''@;'; put 'put ''MHxhW2YrMTY+PjJdKT4+Ml0pP206ZjsoYz0rX1syNDArKDB8YVtmKzE2Pj4yXSk+PjNdKT4wPyhfW0ErMjQwPj4zXT1jKy0xLGw9MCk6bD0xfWVsc2UgbD0xO3JldHVybiAwfGx9ZnVuY3Rpb24gSFkobCxjKXt2YXIgQSxiLGssRyxmPTAscD0wLG09MCx3PTAsTT0wLEQ9MCxSPTA7Rz1sZSxs''@;'; put 'put ''ZT1sZSs5NnwwLFI9Rys2NHwwLEQ9Rys0OHwwLEE9RysyNHwwLHA9Ryx3PTB8YVsoZj0wfGFbMTk2KygwfGFbKE09MTYrKGx8PTApfDApPj4yXSk+PjJdKSsoKGs9MHxhWzIzMisoMHxhWyhiPTE2KyhjfD0wKXwwKT4+Ml0pPj4yXSk8PDYpPj4yXTtkb3tpZigoMHxhW2YrKGs8PDYpKzg+PjJd''@;'; put 'put ''KT49MSl7aWYoYVsoMHxhW2YrKGs8PDYpKzQ+PjJdKSsodzw8Mik+PjJdPWMsYVsyMzYrKDB8YVtiPj4yXSk+PjJdPXcsYVsoZj0ocD0wfGFbMTk2KyhsPTB8YVtNPj4yXSk+PjJdKSsoazw8Nil8MCk+PjJdPTErKG09MHxhW2Y+PjJdKSwoMHxtKT49KDB8YVtwKyhrPDw2KSs4Pj4yXSkmJlBy''@;'; put 'put ''KDg2Mzc3LDg1NzgxLDEzNDYsODY0MTMpLCgwfHcpPigwfChtPTB8YVsoMHxhWzE5NisoMHxhWzE2KygwfGFbNDY3NDFdKT4+Ml0pPj4yXSkrKGs8PDYpKzg+PjJdKSkpe009MHx0aShjKSxEPTB8YVsyMzYrKDB8YVtiPj4yXSk+PjJdLFI9MHxhWygwfGFbMTk2KygwfGFbMTYrKDB8YVs0Njc0''@;'; put 'put ''MV0pPj4yXSk+PjJdKSsoazw8NikrOD4+Ml0sYVtBPj4yXT0xMzU5LGFbQSs0Pj4yXT1NLGFbQSs4Pj4yXT1ELGFbQSsxMj4+Ml09ayxhW0ErMTY+PjJdPVIsJHIoMSw4NjQyOSxBKTticmVha31pZigoMHxrKTwoMHwoZj0wfGl0W2wrMjM2Pj4xXSkpfCgwfGspPigobD0wfGl0W2wrMjM4Pj4x''@;'; put 'put ''XSk8PDE2Pj4xNnwwKSl7YVtEPj4yXT0xMzY0LGFbRCs0Pj4yXT1rLGFbRCs4Pj4yXT1mLGFbRCsxMj4+Ml09bDw8MTY+PjE2LCRyKDEsODY1MDIsRCk7YnJlYWt9KCgwfGFbcCsoazw8NikrND4+Ml0pKyh3PDwyKXwwKT4+PjA+KCgwfGFbcCsoazw8NikrMTI+PjJdKSsobTw8Mil8MCk+Pj4w''@;'; put 'put ''JiYodz0wfHRpKGMpLE09KDB8YVsoRD0wfGFbMTk2KygwfGFbTT4+Ml0pPj4yXSkrKGs8PDYpKzQ+PjJdKSsoYVsyMzYrKDB8YVtiPj4yXSk+PjJdPDwyKXwwLEQ9KDB8YVtEKyhrPDw2KSsxMj4+Ml0pKyhhWygwfGFbMTk2KygwfGFbMTYrKDB8YVs0Njc0MV0pPj4yXSk+PjJdKSsoazw8Nikr''@;'; put 'put ''OD4+Ml08PDIpfDAsYVtSPj4yXT0xMzcwLGFbUis0Pj4yXT1rLGFbUis4Pj4yXT13LGFbUisxMj4+Ml09TSxhW1IrMTY+PjJdPWssYVtSKzIwPj4yXT1rLGFbUisyND4+Ml09RCwkcigxLDg2NTYzLFIpKX1lbHNlIEQ9MHx0aShsKSxSPTB8dGkoYyksYVtwPj4yXT0xMzM5LGFbcCs0Pj4yXT1E''@;'; put 'put ''LGFbcCs4Pj4yXT1SLGFbcCsxMj4+Ml09ayxhW3ArMTY+PjJdPXcsJHIoMSw4NjMyMixwKX13aGlsZSgwKTtsZT1HfWZ1bmN0aW9uIHFDKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIEEscD0wLG09MDtBPTE2KyhjfD0wKXwwO2U6ZG97aWYoZilmb3IobT0wOzspe2lmKCgwfG0pPj0oMHxhWzE3Niso''@;'; put 'put ''Yz0wfGFbQT4+Ml0pPj4yXSkpYnJlYWsgZTtmPTQ4KyhjPTB8YVsoMHxhW2MrMTcyPj4yXSkrKG08PDIpPj4yXSl8MCwwfGZlWyhwPTE1NysoMHxhWzE2KygwfGFbKDM9PSgzJmFbYz4+Ml18MCk/YzpmKSs0MD4+Ml0pPj4yXSl8MCk+PjBdfHwoZmVbcD4+MF09MSxENyhsLDB8YVsoMz09KDMm''@;'; put 'put ''YVtjPj4yXXwwKT9jOmYpKzQwPj4yXSkpLG09bSsxfDB9ZWxzZSBmb3IobT0wOzspe2lmKCgwfG0pPj0oMHxhWzE4NCsoYz0wfGFbQT4+Ml0pPj4yXSkpYnJlYWsgZTtmPShjPTB8YVsoMHxhW2MrMTgwPj4yXSkrKG08PDIpPj4yXSktNDh8MCwwfGZlWyhwPTE1NysoMHxhWzE2KygwfGFbKDI9''@;'; put 'put ''PSgzJmFbYz4+Ml18MCk/YzpmKSs0MD4+Ml0pPj4yXSl8MCk+PjBdfHwoZmVbcD4+MF09MSxENyhsLDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOmYpKzQwPj4yXSkpLG09bSsxfDB9fXdoaWxlKDApfWZ1bmN0aW9uIE5ZKGwsYyl7dmFyIFIscSxwZSxiZSxPZSxmPTAscD0wLG09MCxBPTAsdz0w''@;'; put 'put ''LGI9MCxrPTAsTT0wLEQ9MCxHPTAsZ2U9MDtmb3IoT2U9bGUsbGU9bGUrMTZ8MCxiZT1PZSxwZT0wfGFbKGY9MHxhWzE5NisoMHxhWyhwPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSkrKChjfD0wKTw8NikrND4+Ml0sKDB8YVs0Njc0NV0pPigwfChsPTB8YVsoMHxhWzE5NisoMHxhWzE2KygwfGFb''@;'; put 'put ''NDY3NDFdKT4+Ml0pPj4yXSkrKChnZT1jKzF8MCk8PDYpPj4yXSkpP0c9MHxhWzQ2NzQ2XTooYVs0Njc0NV09bD1sKzF8MCxsPShmPTB8YVs0Njc0Nl0pPzB8VjAoZixsPDwyKTowfFFuKGw8PDIpLGFbNDY3NDZdPWwsZj0wfGFbMTk2KygwfGFbcD4+Ml0pPj4yXSxHPWwpLHE9ZisoZ2U8PDYp''@;'; put 'put ''fDAsbD0wOyEoKDB8bCk+PSgwfGFbcT4+Ml0pKTspYVtHKyhsPDwyKT4+Ml09MCxsPWwrMXwwO2ZvcihSPWYrKGM8PDYpfDAsRD0wLG09MCxsPTAsdz1HOyEoKDB8RCk+PSgwfChiPTB8YVtSPj4yXSkpKTspe009MHxhWzE4MCsoMHxhWzE2KygwfGFbcGUrKEQ8PDIpPj4yXSk+PjJdKT4+Ml07''@;'; put 'put ''ZTpkb3tpZigoMHxtKT4wKWZvcihrPTA7Oyl7aWYoIShwPTB8YVtNKyhrPDwyKT4+Ml0pKWJyZWFrIGU7Zm9yKGI9cCsxNnwwLEE9MHxhWzIzNisoMHxhWzE2KygwfGFbKDI9PSgzJmFbcD4+Ml18MCk/cDpwKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdO3A9QSsxfDAsISgoMHxBKT49KDB8bSkp''@;'; put 'put ''OylBPXAsbD0oMHxBcigwfGFbdysocDw8Mik+PjJdLDB8aXRbMTU0KygwfGFbYj4+Ml0pPj4xXSkpK2x8MDtrPWsrMXwwfX13aGlsZSgwKTtmb3IoQT0wO3A9MHxhW00rKEE8PDIpPj4yXTspYVsoaz1HKygodz0wfGFbMjM2KygwfGFbMTYrKDB8YVsoMj09KDMmYVtwPj4yXXwwKT9wOnArLTQ4''@;'; put 'put ''fDApKzQwPj4yXSk+PjJdKT4+Ml0pPDwyKXwwKT4+Ml09KDB8YVtrPj4yXSkrKDB8aXRbMTU0KygwfGFbcCsxNj4+Ml0pPj4xXSksbT0oMHx3KT4oMHxtKT93Om0sQT1BKzF8MCx3PUc7RD1EKzF8MH1mb3IoQT1mKyhjPDw2KSs0fDAsbT0wOyEoKDB8bSk+PSgwfGIpKTspMHxmZVsxNDUrKHA9''@;'; put 'put ''MHxhWzE2KygwfGFbKDB8YVtBPj4yXSkrKG08PDIpPj4yXSk+PjJdKT4+MF0mJihhW2JlPj4yXT1hWyhjPXArMTgwfDApPj4yXSxhW2JlKzQ+PjJdPWFbYys0Pj4yXSxsPSgwfF9JKGJlLDEpKStsfDApLG09bSsxfDA7Zm9yKEE9MHxhW3E+PjJdLG09ZisoZ2U8PDYpKzR8MCxwPTA7ISgoMHxw''@;'; put 'put ''KT49KDB8QSkpOykwfGZlWzE0NSsoZj0wfGFbMTYrKDB8YVsoMHxhW20+PjJdKSsocDw8Mik+PjJdKT4+Ml0pPj4wXSYmKGFbYmU+PjJdPWFbKGdlPWYrMTcyfDApPj4yXSxhW2JlKzQ+PjJdPWFbZ2UrND4+Ml0sbD0oMHxfSShiZSwtMSkpK2x8MCkscD1wKzF8MDtyZXR1cm4gbGU9T2UsMHxs''@;'; put 'put ''fWZ1bmN0aW9uIF9JKGwsYyl7dmFyIGssRCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxNPTA7RD0oMHwoY3w9MCkpPDEsaz0wfGFbKGx8PTApPj4yXSxjPTAsbD0wO2U6Zm9yKDtNPTB8YVtrKyhjPDwyKT4+Ml0sTTspaWYoYz1jKzF8MCxEKWZvcih3PU0rNDh8MCxiPU0rMTZ8MCxBPWM7Oyl7''@;'; put 'put ''aWYoIShmPTB8YVtrKyhBPDwyKT4+Ml0pKWNvbnRpbnVlIGU7KCtfWzU2KyhwPTB8YVtmKzE2Pj4yXSk+PjNdLStfWzU2KyhtPTB8YVtiPj4yXSk+PjNdKSorKCgwfGFbMjM2KygwfGFbMTYrKDB8YVsoMz09KDMmYVtmPj4yXXwwKT9mOmYrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSktKDB8YVsy''@;'; put 'put ''MzYrKDB8YVsxNisoMHxhWygzPT0oMyZhW00+PjJdfDApP006dykrNDA+PjJdKT4+Ml0pPj4yXSl8MCk8MCYmKGw9KDB8QXIoMHxpdFtwKzE1ND4+MV0sMHxpdFttKzE1ND4+MV0pKStsfDApLEE9QSsxfDB9ZWxzZSBmb3Iodz1NKy00OHwwLGI9TSsxNnwwLEE9Yzs7KXtpZighKGY9MHxhW2sr''@;'; put 'put ''KEE8PDIpPj4yXSkpY29udGludWUgZTsoK19bMTYrKHA9MHxhW2YrMTY+PjJdKT4+M10tK19bMTYrKG09MHxhW2I+PjJdKT4+M10pKisoKDB8YVsyMzYrKDB8YVsxNisoMHxhWygyPT0oMyZhW2Y+PjJdfDApP2Y6ZistNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSktKDB8YVsyMzYrKDB8YVsxNiso''@;'; put 'put ''MHxhWygyPT0oMyZhW00+PjJdfDApP006dykrNDA+PjJdKT4+Ml0pPj4yXSl8MCk8MCYmKGw9KDB8QXIoMHxpdFtwKzE1ND4+MV0sMHxpdFttKzE1ND4+MV0pKStsfDApLEE9QSsxfDB9cmV0dXJuIDB8bH1mdW5jdGlvbiBDSShsKXt2YXIgQSx3LGM9MCxmPTAscD0wLG09MCxiPTAsaz0wO2Zv''@;'; put 'put ''cih3PTB8dnIoOCsoaXRbMjM4KygwfGFbKEE9MTYrKGx8PTApfDApPj4yXSk+PjFdPDwyKXwwKSxtPTB8RHQobCk7bTspe2ZvcihhWyhwPXcrKGFbMjMyKygwfGFbbSsxNj4+Ml0pPj4yXTw8Mil8MCk+PjJdPTErKDB8YVtwPj4yXSkscD0wfHcwKGwsbSk7cDspe2ZvcihmPShrPSgwfChjPTB8''@;'; put 'put ''YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMHwoYj0zJmFbcD4+Ml0pKT9wOnArNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpPigwfChiPTB8YVsyMzIrKDB8YVsxNisoMHxhWygyPT0oMHxiKT9wOnArLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pKSk/YzpiLGM9az9iOmM7ISgoMHwoYz1jKzF8MCkp''@;'; put 'put ''Pj0oMHxmKSk7KWFbKGs9dysoYzw8Mil8MCk+PjJdPTErKDB8YVtrPj4yXSk7cD0wfFMwKGwscCl9bT0wfHp0KGwsbSl9Zm9yKHA9MHx2cigxMjgrKGl0WzIzOCsoMHxhW0E+PjJdKT4+MV08PDYpfDApLGFbMTk2KyhmPTB8YVtBPj4yXSk+PjJdPXAsYz0wfGl0W2YrMjM2Pj4xXTshKCgwfGMp''@;'; put 'put ''PigwfGl0W2YrMjM4Pj4xXSkpOylhW3ArKGM8PDYpPj4yXT1mPTB8YVsoYj13KyhjPDwyKXwwKT4+Ml0sYVtwKyhjPDw2KSs4Pj4yXT1mLGI9MHx2cig0KyhhW2I+PjJdPDwyKXwwKSxhWyhrPTB8YVsxOTYrKGY9MHxhW0E+PjJdKT4+Ml0pKyhjPDw2KSs0Pj4yXT1iLGFbaysoYzw8NikrMTI+''@;'; put 'put ''PjJdPWIsYz1jKzF8MCxwPWs7RnQodyl9ZnVuY3Rpb24galkobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIE0sbT0wLEE9MCx3PTAsYj0wLGs9MDtmb3IoTT0xNisobHw9MCl8MCxBPTE7ISgoMHxBKT4oMHxhWzE4MCsobT0wfGFbTT4+Ml0pPj4yXSkpOylrPTB8alkoMHxhWygwfGFbbSsx''@;'; put 'put ''ODQ+PjJdKSsoQTw8Mik+PjJdLGMsZixwKSxBPUErMXwwLHA9aztlOmRve2lmKCgwfHlhKGwpKSE9KDB8bCkpe2Zvcih1MigwfGMsMCxmPDwyfDApLG09MHxEdChsKTttOyl7Zm9yKGFbYysoYVsyMzIrKDB8YVsoYj1tKzE2fDApPj4yXSk+PjJdPDwyKT4+Ml09MSxBPTB8dzAobCxtKTtBOyl7''@;'; put 'put ''Zm9yKGs9QSstNDh8MCx3PTB8YVsyMzIrKDB8YVtiPj4yXSk+PjJdO2Y9dysxfDAsISgoMHx3KT49KDB8YVsyMzIrKDB8YVsxNisoMHxhWygyPT0oMyZhW0E+PjJdfDApP0E6aykrNDA+PjJdKT4+Ml0pPj4yXSkpOylhW2MrKGY8PDIpPj4yXT0xLHc9ZjtBPTB8UzAobCxBKX1tPTB8enQobCxt''@;'; put 'put ''KX1mb3IoQT0wfGl0WzIzNisobT0wfGFbTT4+Ml0pPj4xXTs7KXtpZigoMHxBKT4oMHxpdFttKzIzOD4+MV0pKWJyZWFrIGU7MHxhW2MrKEE8PDIpPj4yXXx8KHB8fChwPTB8cHMoMHx5YShsKSw4NjY3NSwxKSksaDAobT0wfEdyKHAsMCwxKSwxMzc0NDcsMzA0LDEpLGFbMjMyKyh3PTB8YVso''@;'; put 'put ''az1tKzE2fDApPj4yXSk+PjJdPUEsX1t3Kzk2Pj4zXT0uNSxfW3crODg+PjNdPS41LF9bdys4MD4+M109MSxhW3crMjE2Pj4yXT0xLGFbdysxNzY+PjJdPTAsdz0wfHZyKDIwKSxhWzE3MisoYj0wfGFbaz4+Ml0pPj4yXT13LGFbYisxODQ+PjJdPTAsYj0wfHZyKDIwKSxhWzE4MCsoMHxhW2s+''@;'; put 'put ''PjJdKT4+Ml09YixZbihsLG0sMSksbT0wfGFbTT4+Ml0pLEE9QSsxfDB9fX13aGlsZSgwKTtyZXR1cm4gMHxwfWZ1bmN0aW9uIG95KGwpe3ZhciBjLGY9MDtmb3IobkgobHw9MCksYz1sKzE2fDAsbD0xOyEoKDB8bCk+KDB8YVsxODArKGY9MHxhW2M+PjJdKT4+Ml0pKTspb3koMHxhWygwfGFb''@;'; put 'put ''ZisxODQ+PjJdKSsobDw8Mik+PjJdKSxsPWwrMXwwfWZ1bmN0aW9uIFIwZShsKXt2YXIgZixjPTA7Zj0wfFpZKDB8YVsoMz09KDB8KGM9MyZhWyhsfD0wKT4+Ml0pKT9sOmwrNDh8MCkrNDA+PjJdKSxjPTB8YVsxNzMwOCsoMTIqZnwwKSsoKDB8WlkoMHxhWygyPT0oMHxjKT9sOmwrLTQ4fDAp''@;'; put 'put ''KzQwPj4yXSkpPDwyKT4+Ml0sYVsobD0xNTYrKDB8YVtsKzE2Pj4yXSl8MCk+PjJdPTB8QXIoMHxhW2w+PjJdLGMpfWZ1bmN0aW9uIFpZKGwpe3JldHVybiAwfCgxPT0oMHxmZVsxNTYrKGw9MHxhWzE2KyhsfD0wKT4+Ml0pPj4wXSk/MjooMHxmZVtsKzE2MD4+MF0pPDImMSl9ZnVuY3Rpb24g''@;'; put 'put ''a0kobCxjKXtjfD0wLDB8YVsxOTIrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0mJihmcChsKSxsSChsKSwwfGZlWzE5NDk1NF0mJmZ1bmN0aW9uIE9VKGwpe2x8PTA7dmFyIEcscSxiZSxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLHBlPTAsZ2U9MDtiZT1sZSxs''@;'; put 'put ''ZT1sZSsxNnwwLHE9YmUsZ2U9NCxwZT0wfEYwKDQwKSxhW3BlPj4yXT0wLGY9MHxhWyhHPWwrMTZ8MCk+PjJdO2U6ZG97aWYoKCgwfGl0W2YrMjM4Pj4xXSktKDB8aXRbZisyMzY+PjFdKXwwKT49Mil7TT0xLGM9ZixmPTB8YVtmKzE5Nj4+Ml07dDpmb3IoOzspe2lmKCEoMHxhW2YrKChEPU0r''@;'; put 'put ''MXwwKTw8Nik+PjJdKSl7Uj0xNTticmVha31mb3Ioaz0wOzspe2lmKCgwfGspPj0oMHwoQT0wfGFbZisoTTw8Nik+PjJdKSkpe009RDtjb250aW51ZSB0fWlmKE1uPTAsYz0wfGEwKDIwLDB8KGI9MHxhWygwfGFbZisoTTw8NikrND4+Ml0pKyhrPDwyKT4+Ml0pKSxwPU1uLE1uPTAsMCE9KDB8''@;'; put 'put ''cCkmMCE9KDB8eG4pPygobT0wfGdpKDB8YVtwPj4yXSwwfHBlLDB8Z2UpKXx8emUoMHxwLDB8eG4pLERuPXhuKTptPS0xLDE9PSgwfG0pKXtjPURuO2JyZWFrIHR9aWYoYzw8MjQ+PjI0KXtmb3Iodz1rLGM9QTshKCgwfChtPXcrMXwwKSk+PSgwfGMpKTspe2lmKE1uPTAsYz0wfEZsKDY1LDB8''@;'; put 'put ''YiwwfGFbKDB8YVtmKyhNPDw2KSs0Pj4yXSkrKG08PDIpPj4yXSksZj1NbixNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxnaSgwfGFbZj4+Ml0sMHxwZSwwfGdlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6cD0tMSwxPT0oMHxwKSl7Yz1EbjticmVhayB0fWlmKCEoYzw8MjQ+PjI0KSli''@;'; put 'put ''cmVhazt3PW0sZj1jPTB8YVsxOTYrKDB8YVtHPj4yXSk+PjJdLGM9MHxhW2MrKE08PDYpPj4yXX1pZigobS1rfDApPjEmJihNbj0wLGN1KDYsMHxsLDB8TSwwfGssMHx3LDEpLGM9TW4sTW49MCwwIT0oMHxjKSYwIT0oMHx4bik/KChmPTB8Z2koMHxhW2M+PjJdLDB8cGUsMHxnZSkpfHx6ZSgw''@;'; put 'put ''fGMsMHx4biksRG49eG4pOmY9LTEsMT09KDB8ZikpKXtjPURuO2JyZWFrIHR9fWs9aysxfDAsYz1mPTB8YVtHPj4yXSxmPTB8YVtmKzE5Nj4+Ml19fXQ6ZG97aWYoMTU9PSgwfFIpKXtmb3IoOygwfE0pPjA7KXtmb3Ioaz0wOyEoKDB8ayk+PSgwfChBPTB8YVsoZj0wfGFbYysxOTY+PjJdKSso''@;'; put 'put ''TTw8Nik+PjJdKSkpOyl7aWYoTW49MCxjPTB8YTAoMjEsMHwoYj0wfGFbKDB8YVtmKyhNPDw2KSs0Pj4yXSkrKGs8PDIpPj4yXSkpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChtPTB8Z2koMHxhW3A+PjJdLDB8cGUsMHxnZSkpfHx6ZSgwfHAsMHx4biksRG49eG4pOm09LTEsMT09''@;'; put 'put ''KDB8bSkpe2M9RG47YnJlYWsgdH1pZihjPDwyND4+MjQpe2Zvcih3PWssYz1BOyEoKDB8KG09dysxfDApKT49KDB8YykpOyl7aWYoTW49MCxjPTB8RmwoNjYsMHxiLDB8YVsoMHxhW2YrKE08PDYpKzQ+PjJdKSsobTw8Mik+PjJdKSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygocD0w''@;'; put 'put ''fGdpKDB8YVtmPj4yXSwwfHBlLDB8Z2UpKXx8emUoMHxmLDB8eG4pLERuPXhuKTpwPS0xLDE9PSgwfHApKXtjPURuO2JyZWFrIHR9aWYoIShjPDwyND4+MjQpKWJyZWFrO3c9bSxmPWM9MHxhWzE5NisoMHxhW0c+PjJdKT4+Ml0sYz0wfGFbYysoTTw8Nik+PjJdfWlmKChtLWt8MCk+MSYmKE1u''@;'; put 'put ''PTAsY3UoNiwwfGwsMHxNLDB8aywwfHcsMCksYz1NbixNbj0wLDAhPSgwfGMpJjAhPSgwfHhuKT8oKGY9MHxnaSgwfGFbYz4+Ml0sMHxwZSwwfGdlKSl8fHplKDB8YywwfHhuKSxEbj14bik6Zj0tMSwxPT0oMHxmKSkpe2M9RG47YnJlYWsgdH19az1rKzF8MCxjPTB8YVtHPj4yXX1NPU0rLTF8''@;'; put 'put ''MCxSPTE1fXBlPTB8UGYoMTg3MDE2LDEsMHxwZSwwfGdlKSxnZT1EbixjPU1uPTAsTW49MCwwIT0oMHxjKSYwIT0oMHx4bik/KChmPTB8Z2koMHxhW2M+PjJdLDB8cGUsMHxnZSkpfHx6ZSgwfGMsMHx4biksRG49eG4pOmY9LTEsYz0xPT0oMHxmKT9EbjowfX13aGlsZSgwKTt0OmZvcig7Oyl7''@;'; put 'put ''aWYoYyl7aWYoTW49MCxKcygyMCwzLDg4MTc3LDB8cSksYz1NbixNbj0wLDAhPSgwfGMpJjAhPSgwfHhuKT8oKGY9MHxnaSgwfGFbYz4+Ml0sMHxwZSwwfGdlKSl8fHplKDB8YywwfHhuKSxEbj14bik6Zj0tMSwxPT0oMHxmKSl7Yz1Ebjtjb250aW51ZX1icmVha31mb3IocD0xOzspe2lmKCgw''@;'; put 'put ''fHApPigwfGFbMTgwKyhjPTB8YVtHPj4yXSk+PjJdKSlicmVhayBlO2lmKE1uPTAsc3MoMTAxLDB8YVsoMHxhW2MrMTg0Pj4yXSkrKHA8PDIpPj4yXSksYz1NbixNbj0wLDAhPSgwfGMpJjAhPSgwfHhuKT8oKGY9MHxnaSgwfGFbYz4+Ml0sMHxwZSwwfGdlKSl8fHplKDB8YywwfHhuKSxEbj14''@;'; put 'put ''bik6Zj0tMSwxPT0oMHxmKSl7Yz1Ebjtjb250aW51ZSB0fXA9cCsxfDB9fX19d2hpbGUoMCk7RnQoMHxwZSksbGU9YmV9KGwpLGZ1bmN0aW9uIHpZKGwpe3ZhciBjPTAsZj0wLHA9MDtmb3IoZnVuY3Rpb24gTUkobCl7dmFyIGIsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTA7Zm9yKHc9MHxpdFsy''@;'; put 'put ''MzYrKGw9MHxhWyhiPTE2KyhsfD0wKXwwKT4+Ml0pPj4xXTshKCgwfHcpPigwfGl0W2wrMjM4Pj4xXSkpOyl7Zm9yKHA9MHxhWyhtPTB8YVtsKzE5Nj4+Ml0pKyh3PDw2KT4+Ml0sbT1tKyh3PDw2KSs0fDAsQT0wLGY9MDshKCgwfGYpPj0oMHxwKSk7KWFbMjM2KyhjPTB8YVsxNisoMHxhWygw''@;'; put 'put ''fGFbbT4+Ml0pKyhmPDwyKT4+Ml0pPj4yXSk+PjJdPUEsQT0oYz02PT0oMHxmZVtjKzE1OT4+MF0pPzB8YVtjKzIxNj4+Ml06MSkrQXwwLGY9ZisxfDA7aWYoKDB8QSk+KDB8cCkpe2ZvcihsPShsPTB8YVttPj4yXSk/MHxWMChsLDQrKEE8PDIpfDApOjB8UW4oNCsoQTw8Mil8MCksYVsoZj0w''@;'; put 'put ''fGFbMTk2KygwfGFbYj4+Ml0pPj4yXSkrKHc8PDYpKzQ+PjJdPWwsYz0wfGFbZisodzw8Nik+PjJdO2w9YystMXwwLCEoKDB8Yyk8PTApOylhWyhtPTB8YVtmKyh3PDw2KSs0Pj4yXSkrKGFbMjM2KygwfGFbMTYrKGM9MHxhW20rKGw8PDIpPj4yXSk+PjJdKT4+Ml08PDIpPj4yXT1jLGM9bCxm''@;'; put 'put ''PTB8YVsxOTYrKDB8YVtiPj4yXSk+PjJdO2FbZisodzw8Nik+PjJdPUEsYVsoMHxhW2YrKHc8PDYpKzQ+PjJdKSsoQTw8Mik+PjJdPTAsbD0wfGFbYj4+Ml19dz13KzF8MH19KGx8PTApLGM9MTkyKygwfGFbbCsxNj4+Ml0pfDA7Yz0wfGFbYz4+Ml07KXtpZigoZj0wfGFbMjI0KyhjPTB8YVso''@;'; put 'put ''cD1jKzE2fDApPj4yXSk+PjJdKSYmKGx5KGwsZiksYz0wfGFbcD4+Ml0pLChmPTB8YVtjKzIyOD4+Ml0pPyhseShsLGYpLGY9MHxhW3A+PjJdKTpmPWMsMHwocD0wfGFbZisyMDQ+PjJdKSlmb3IoYz0wOzB8YVtwKyhjPDwyKT4+Ml07KWM9YysxfDA7Yz1mKzE2NHwwfX0obCksMHxmdW5jdGlv''@;'; put 'put ''biBtdShsKXt2YXIgTSxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLEQ9MCxSPTA7Zm9yKGM9MTkyKygwfGFbKE09MTYrKGx8PTApfDApPj4yXSl8MDtjPTB8YVtjPj4yXTspe2Y9MHxhWzE4OCsoYz0wfGFbKG09YysxNnwwKT4+Ml0pPj4yXTtlOmRve2lmKGYpZm9yKHA9MDs7KXtp''@;'; put 'put ''ZighKGY9MHxhW2YrKHA8PDIpPj4yXSkpe3A9MDticmVhayBlfVUzKGYpLHA9cCsxfDAsZj0wfGFbMTg4KyhjPTB8YVttPj4yXSk+PjJdfWVsc2UgcD0wfXdoaWxlKDApO2Zvcig7ISgoMHxwKT49KDB8YVtjKzIwOD4+Ml0pKTspKDB8YVsyMzIrKDB8YVsxNisoMHxhWygyPT0oMHwoaz0zJmFb''@;'; put 'put ''KGY9MHxhWygwfGFbYysyMDQ+PjJdKSsocDw8Mik+PjJdKT4+Ml0pKT9mOmYrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPT0oMHxhWzIzMisoMHxhWzE2KygwfGFbKDM9PSgwfGspP2Y6Zis0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSYmKFUzKGYpLGM9MHxhW20+PjJdKSxwPXArMXwwO2M9Yysx''@;'; put 'put ''NjR8MH0wPT0oMHxhWzU2KyhjPTB8YVsxOTYrKGs9MHxhW00+PjJdKT4+Ml0pPj4yXSkmJigwfGFbaysxODA+PjJdKTw9MHx8KEE9MTMpO2U6ZG97aWYoMTM9PSgwfEEpKXtBPTB8YVtjKzQ+PjJdLG09MDt0OmZvcig7Oyl7aWYoIShjPTB8YVtBKyhtPDwyKT4+Ml0pKWJyZWFrIGU7Zm9yKGY9''@;'; put 'put ''MHxhWzE5NisoMHxhW2MrMTY+PjJdKT4+Ml0sYz0wO3A9MHxhW2YrKGM8PDIpPj4yXTspe2lmKDB8YVs5Nisoaz0wfGFbcCsxNj4+Ml0pPj4yXSYmMD09KDB8ZmVbaysxMTM+PjBdKSlicmVhayB0O2M9YysxfDB9bT1tKzF8MH16VShsKX19d2hpbGUoMCk7Zm9yKG95KGwpLGY9MCxjPTE5Miso''@;'; put 'put ''MHxhW00+PjJdKXwwO2M9MHxhW2M+PjJdOyl7cD0wfGFbMTg4KyhjPTB8YVsoaz1jKzE2fDApPj4yXSk+PjJdO2U6ZG97aWYocCl7Zm9yKGI9MDs7KXtpZighKG09MHxhW3ArKGI8PDIpPj4yXSkpe2I9MDticmVha313PTB8YVs5NisoQT0wfGFbbSsxNj4+Ml0pPj4yXTtkb3tpZih3KXtpZigw''@;'; put 'put ''fGZlW0ErMTEzPj4wXSl7X1tBKzEzNj4+M109K19bKDA9PSgxJmFbMTE2KygwfGFbTT4+Ml0pPj4yXXwwKT93KzI0fDA6dyszMnwwKT4+M107YnJlYWt9SHUobSksZj0xLGM9cD0wfGFbaz4+Ml0scD0wfGFbcCsxODg+PjJdO2JyZWFrfX13aGlsZSgwKTtiPWIrMXwwfWZvcig7Oyl7aWYoKDB8''@;'; put 'put ''Yik+PSgwfGFbYysyMDg+PjJdKSlicmVhayBlO209MHxhWygzPT0oMHwodz0zJmFbKEE9MHxhWygwfGFbYysyMDQ+PjJdKSsoYjw8Mik+PjJdKT4+Ml0pKT9BOkErNDh8MCkrNDA+PjJdLHc9MHxhWygyPT0oMHx3KT9BOkErLTQ4fDApKzQwPj4yXTtkb3tpZigoMHxtKSE9KDB8dykmJigwfGFb''@;'; put 'put ''MjMyKygwfGFbbSsxNj4+Ml0pPj4yXSk9PSgwfGFbMjMyKygwfGFbdysxNj4+Ml0pPj4yXSkpe3A9QTtkb3twPTB8YVsxNzIrKHc9MHxhW3ArMTY+PjJdKT4+Ml19d2hpbGUoMCE9KDB8cCkpO2lmKGZlWzExMysobT0wfGFbQSsxNj4+Ml0pPj4wXT1wPTB8ZmVbdysxMTM+PjBdLG09MHxhW20r''@;'; put 'put ''OTY+PjJdKXtpZihwPDwyND4+MjQpe19bKHc9dysxMzZ8MCk+PjNdPShSPStfWygwPT0oMSZhWzExNisoMHxhW00+PjJdKT4+Ml18MCk/bSsyNHwwOm0rMzJ8MCk+PjNdKT4oRD0rX1t3Pj4zXSk/UjpEO2JyZWFrfUh1KEEpLGY9MSxjPTB8YVtrPj4yXTticmVha319fXdoaWxlKDApO2I9Yisx''@;'; put 'put ''fDB9fX13aGlsZSgwKTtjPWMrMTY0fDB9cmV0dXJuIDB8ZiYmKGZ1bmN0aW9uIF8wZShsKXt2YXIgYixrLE0sRCxSLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLEc9MCxxPTAscGU9MCxnZT0wO2ZvcihSPWxlLGxlPWxlKzEwNDB8MCxNPVIrMTAzMnwwLEQ9UixrPVIrOHwwLHc9MHxpdFsyMzYr''@;'; put 'put ''KGw9MHxhWyhiPTE2KyhsfD0wKXwwKT4+Ml0pPj4xXTshKCgwfHcpPigwfGl0W2wrMjM4Pj4xXSkpOyl7Zm9yKG09KEE9MHxhW2wrMTk2Pj4yXSkrKHc8PDYpfDAsQT1BKyh3PDw2KSs0fDAscD0wLGw9MDshKCgwfHApPj0oMHxhW20+PjJdKSk7KTB8YVsxMTIrKDB8YVsoZj0xNisoYz0wfGFb''@;'; put 'put ''KDB8YVtBPj4yXSkrKHA8PDIpPj4yXSl8MCk+PjJdKT4+Ml0mJihsfHwoZmVbTT4+MF09MHxmZVsxODU4OF0sZmVbTSsxPj4wXT0wfGZlWzE4NTg5XSxmZVtNKzI+PjBdPTB8ZmVbMTg1OTBdLGZlW00rMz4+MF09MHxmZVsxODU5MV0sbD0wfG9jKDg1NzYzLE0sMCkpLGFbRD4+Ml09cCxvbyhr''@;'; put 'put ''LDEzNzM5NSxEKSxoMChnZT0wfEdyKGwsaywxKSw5MTE2NCwyNCwxKSxHPTB8YVsxODArKDB8YVtmPj4yXSk+PjJdLGFbMTIrKGY9MHxhW2dlKzE2Pj4yXSk+PjJdPShwZT0oMHwocT0wfGFbMjM2KygwfGFbMTYrKDB8YVsoMj09KDMmYVsocT0wfGFbRz4+Ml0pPj4yXXwwKT9xOnErLTQ4fDAp''@;'; put 'put ''KzQwPj4yXSk+PjJdKT4+Ml0pKT4oMHwoRz0wfGFbMjM2KygwfGFbMTYrKDB8YVsoMj09KDMmYVsoRz0wfGFbRys0Pj4yXSk+PjJdfDApP0c6RystNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpKT9HOnEsYVtmKzE2Pj4yXT1wZT9xOkcsYVtmKzIwPj4yXT1jKSxwPXArMXwwOzB8bCYmKCgwfEdv''@;'; put 'put ''KGwpKT4xJiZnNyhsLG0pLEMxKGwpKSx3PXcrMXwwLGw9MHxhW2I+PjJdfWxlPVJ9KGwpLHFGKGwpKSwwfGZ9KGwpJiZsSChsKSxmdW5jdGlvbiBHWShsKXsoZnVuY3Rpb24gY0gobCl7dmFyIGM9MCxmPTAscD0wLG09MDtmb3IobD0xOTIrKDB8YVsxNisobHw9MCk+PjJdKXwwO2w9MHxhW2w+''@;'; put 'put ''PjJdOyl7Zm9yKGY9MHxhWzQrKGw9MTcyKyhwPTB8YVsobT1sKzE2fDApPj4yXSl8MCk+PjJdLGFbKHA9cCsyNDh8MCk+PjJdPWFbbD4+Ml0sYVtwKzQ+PjJdPWYsbD0wfGFbNCsoZj0xODArKHA9MHxhW20+PjJdKXwwKT4+Ml0sYVsocD1wKzI1NnwwKT4+Ml09YVtmPj4yXSxhW3ArND4+Ml09''@;'; put 'put ''bCxsPTB8YVsxODArKHA9MHxhW20+PjJdKT4+Ml0sZj0wOzB8YVtsKyhmPDwyKT4+Ml07KWY9ZisxfDA7Zm9yKGM9MHxhW3ArMTcyPj4yXSxsPTA7MHxhW2MrKGw8PDIpPj4yXTspbD1sKzF8MDthW3ArMTc2Pj4yXT0wLGw9MHx2cigxNisobCtmPDwyKXwwKSxhWzE3MisocD0wfGFbbT4+Ml0p''@;'; put 'put ''Pj4yXT1sLGFbcCsxODQ+PjJdPTAscD0wfHZyKDE2KSxhWzE4MCsobD0wfGFbbT4+Ml0pPj4yXT1wLGw9bCsxNjR8MH19KShsfD0wKSxmdW5jdGlvbiBOMGUobCl7dmFyIGJlLE9lLExlLFJlLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0w''@;'; put 'put ''LGdlPTAsSGU9MCxWZT0wO2ZvcihSZT1sZSxsZT1sZSsxNnwwLExlPTB8YVsxOTYrKHBlPTB8YVsoT2U9MTYrKGx8PTApfDApPj4yXSk+PjJdLGw9MCE9KDEmZmVbMTEzKygwfGFbMTYrKDB8YVtsKzYwPj4yXSk+PjJdKT4+MF0pLGFbKGJlPVJlKT4+Ml09Z2U9MHxhW3BlKzI0OD4+Ml0sYVti''@;'; put 'put ''ZSs0Pj4yXT1sPzU6Z2UsZ2U9MHxpdFtwZSsyMzY+PjFdLGw9cGU7ISgoMHxnZSk+KDB8aXRbbCsyMzg+PjFdKSk7KXthWzIzMisoMHxhWzE2KygwfGFbYVsoUj1MZSsoZ2U8PDYpKzR8MCk+PjJdPj4yXSk+PjJdKT4+Ml09MCxHPUxlKyhnZTw8Nil8MCxxPSsoMHxhW2JlKygoMSZnZSk8PDIp''@;'; put 'put ''Pj4yXSksTT0wLEE9MDtlOmZvcig7ISgoMHxBKT49KDB8YVtHPj4yXSkpOyl7aWYoX1syNDArKGw9MHxhWyhwZT0xNisodz0wfGFbKGM9MHxhW1I+PjJdKSsoQTw8Mik+PjJdKXwwKT4+Ml0pPj4zXT1wPStfW2wrOTY+PjNdLCgwfGFbbCsyMDg+PjJdKT4wKXtmb3IobT0wLGM9MDtmPTB8YVso''@;'; put 'put ''MHxhW2wrMjA0Pj4yXSkrKG08PDIpPj4yXTspKDB8YVsoMz09KDB8KEQ9MyZhW2Y+PjJdKSk/ZjpmKzQ4fDApKzQwPj4yXSk9PSgwfGFbKDI9PSgwfEQpP2Y6ZistNDh8MCkrNDA+PjJdKSYmKGM9KDB8bEooZikpK2N8MCxsPTB8YVtwZT4+Ml0pLG09bSsxfDA7X1soRD1sKzk2fDApPj4zXT1w''@;'; put 'put ''PStfW0Q+PjNdKyArKDB8YyksYz0wfGFbUj4+Ml19Zm9yKChjPTB8YVtjKygoRD1BKzF8MCk8PDIpPj4yXSkmJihGdSh3LGMscD1wK3ErICtfWzg4KygwfGFbKGs9YysxNnwwKT4+Ml0pPj4zXSwwKSxhWzIzMisoMHxhW2s+PjJdKT4+Ml09bD1+fihwK00pLE09KygwfGwpLGw9MHxhW3BlPj4y''@;'; put 'put ''XSksKGM9MHxhW2wrMTEyPj4yXSk/KGY9KGw9KDB8YVsyMzYrKDB8YVsxNisoMHxhWygyPT0oMyZhWyhBPTB8YVsobT0wfGFbbCsyNTY+PjJdKT4+Ml0pPj4yXXwwKT9BOkErLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPigwfGFbMjM2KygwfGFbMTYrKDB8YVsoMj09KDMmYVsobT0wfGFbbSs0''@;'; put 'put ''Pj4yXSk+PjJdfDApP206bSstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpP206QSxtPWw/QTptLHA9KygwfCgwfEFyKDB8YVsyNDgrKDB8YVtPZT4+Ml0pPj4yXSwwfGhyWzE3MCsobD0wfGFbKEE9YysxNnwwKT4+Ml0pPj4xXSkpLzIpLGM9MHxhWygyPT0oMHwoaz0zJmFbZj4+Ml0pKT9mOmYr''@;'; put 'put ''LTQ4fDApKzQwPj4yXSwwfEpZKGY9MHxhWygzPT0oMHxrKT9mOmYrNDh8MCkrNDA+PjJdLGMpfHxGdShjLGYsKygwfH5+KCtfWzk2KygwfGFbYysxNj4+Ml0pPj4zXStwKyArX1s4OCsoMHxhW2YrMTY+PjJdKT4+M10pKSwwfGFbbCsxNTY+PjJdKSxjPTB8YVsoMz09KDB8KGw9MyZhW20+PjJd''@;'; put 'put ''KSk/bTptKzQ4fDApKzQwPj4yXSwwfEpZKGw9MHxhWygyPT0oMHxsKT9tOm0rLTQ4fDApKzQwPj4yXSxjKXx8RnUoYyxsLCsoMHx+figrX1s5NisoMHxhW2MrMTY+PjJdKT4+M10rcCsgK19bODgrKDB8YVtsKzE2Pj4yXSk+PjNdKSksMHxhWzE1NisoMHxhW0E+PjJdKT4+Ml0pLGs9MCk6az0w''@;'; put 'put ''Ozspe2lmKCgwfGspPj0oMHxhWzE5MisobD0wfGFbcGU+PjJdKT4+Ml0pKXtBPUQ7Y29udGludWUgZX1jPShtPSgwfGFbMjM2KygwfGFbMTYrKGY9MHxhWygzPT0oMHwoQT0zJmFbKHc9MHxhWygwfGFbbCsxODg+PjJdKSsoazw8Mik+PjJdKT4+Ml0pKT93OncrNDh8MCkrNDA+PjJdKT4+Ml0p''@;'; put 'put ''Pj4yXSk8KDB8YVsyMzYrKDB8YVsxNisoQT0wfGFbKDI9PSgwfEEpP3c6dystNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpP2Y6QSxtPX5+KChwPStfWzg4KygwfGFbKGY9bT9BOmYpKzE2Pj4yXSk+PjNdKyArX1s5NisoMHxhW2MrMTY+PjJdKT4+M10pKyArKDB8QXIoMHxhWzI0OCsoMHxhW09l''@;'; put 'put ''Pj4yXSk+PjJdLDB8aHJbMTcwKygwfGFbKEE9dysxNnwwKT4+Ml0pPj4xXSkpKSwoYj0wfFU1KGMsZikpPygoMHwoYz1+figocD1wKyArKDB8YVsyNDgrKDB8YVtPZT4+Ml0pPj4yXSkrICsoMHx+figoVmU9K19bMTM2KyhsPTB8YVtBPj4yXSk+PjNdKSsoVmU+PTA/LjU6LS41KSkpKTwoSGU9''@;'; put 'put ''KygwfG0pKT9IZTpwKSkpPjY1NTM1JiYoSDBlKCsoMHxjKSksYz02NTUzNSxsPTB8YVtBPj4yXSksaXRbKG09MTcwKyhBPTB8YVtiKzE2Pj4yXSl8MCk+PjFdPSgwfGMpPCgwfChmPTB8aHJbbT4+MV0pKT9mOmMsYVsoQT1BKzE1NnwwKT4+Ml09YVsxNTYrKDB8YVsoKDB8YVtBPj4yXSk+KDB8''@;'; put 'put ''YVtsKzE1Nj4+Ml0pP2I6dykrMTY+PjJdKT4+Ml0pOjB8YVs5NisobD0wfGFbQT4+Ml0pPj4yXXx8RnUoYyxmLCsoMHxtKSwwfGFbbCsxNTY+PjJdKSxrPWsrMXwwfX1nZT1nZSsxfDAsbD0wfGFbT2U+PjJdfWxlPVJlfShsKSxmdW5jdGlvbiBWMGUobCl7dmFyIGM9MCxmPTAscD0wLG09MCxB''@;'; put 'put ''PTAsdz0wLGI9MCxrPTAsTT0wLEQ9MDtmb3IoYz0xOTIrKDB8YVsxNisobHw9MCk+PjJdKXwwO2M9MHxhW2M+PjJdOyl7Zj0wfGFbMjU2KyhjPTB8YVsobT1jKzE2fDApPj4yXSk+PjJdO2U6ZG97aWYoZilmb3IocD0wOzspe2lmKCEoZj0wfGFbZisocDw8Mik+PjJdKSlicmVhayBlO0Q9MHxV''@;'; put 'put ''aChsKSxmZVsxNTYrKDB8YVsoYz1EKzE2fDApPj4yXSk+PjBdPTIsdz0oTT0oMHwoQT1+figrX1s1NisoYj0wfGFbKGs9ZisxNnwwKT4+Ml0pPj4zXS0rX1tiKzE2Pj4zXSkpKT4wKT8wOjAtQXwwLEE9TT9BOjAsTT1mKzQ4fDAsRnUoRCwwfGFbKDM9PSgzJmFbZj4+Ml18MCk/ZjpNKSs0MD4+''@;'; put 'put ''Ml0sKyhBKzF8MCksMHxhW2IrMTU2Pj4yXSksYj1mKy00OHwwLEZ1KEQsMHxhWygyPT0oMyZhW2Y+PjJdfDApP2Y6YikrNDA+PjJdLCsodysxfDApLDB8YVsxNTYrKDB8YVtrPj4yXSk+PjJdKSxhWzIzMisoMHxhW2M+PjJdKT4+Ml09KCgwfChBPSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMz09''@;'; put 'put ''KDB8KGs9MyZhW2Y+PjJdKSk/ZjpNKSs0MD4+Ml0pPj4yXSk+PjJdKS1BfDApKTwoMHwoZj0oMHxhWzIzMisoMHxhWzE2KygwfGFbKDI9PSgwfGspP2Y6YikrNDA+PjJdKT4+Ml0pPj4yXSktd3wwKSk/QTpmKSstMSxwPXArMXwwLGY9MHxhWzI1NisoYz0wfGFbbT4+Ml0pPj4yXX19d2hpbGUo''@;'; put 'put ''MCk7Yz1jKzE2NHwwfX0obCksZnVuY3Rpb24gajBlKGwpeygwfGFbMTgwKygwfGFbMTYrKGx8PTApPj4yXSk+PjJdKT4wJiYoaEgobCksVVkobCksUVkobCksZEgobCkpfShsKSxmdW5jdGlvbiBmSChsKXt2YXIgcCxjPTAsZj0wLG09MDszPT0oMHxhWzg0KyhtPTB8YVs4KygwfGFbKHA9MTYr''@;'; put 'put ''KGx8PTApfDApPj4yXSk+PjJdKT4+Ml0pJiYhKChmPStfW20rNzI+PjNdKSooYz0rX1ttKzY0Pj4zXSk8PTEpJiYoUWgobCksRnUoMHxhWzI1NisobT0wfGFbcD4+Ml0pPj4yXSwwfGFbbSsyNjA+PjJdLChmPTA9PSgxJmFbbSsxMTY+PjJdfDApP2M6Zik8NjU1MzU/Zjo2NTUzNSwxZTMpKX0o''@;'; put 'put ''bCl9KGwpLDB8azcobCwyLDB8c0gobCkpJiYoZnVuY3Rpb24gQjBlKGwpe3ZhciBwZSxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAsZ2U9MDtmb3IocT0wfGl0WzIzNisoYz0wfGFbKHBlPTE2KyhsfD0wKXwwKT4+Ml0pPj4xXTs7KXtpZigoMHxx''@;'; put 'put ''KT4oMHwoRz0wfGl0W2MrMjM4Pj4xXSkpKXtnZT0xOTticmVha31NPTB8YVsoUj0oRD0wfGFbYysxOTY+PjJdKSsocTw8Nil8MCk+PjJdLEQ9RCsocTw8NikrNHwwLGs9MCxmPTA7ZTpmb3IoOzspe2lmKCgwfGspPj0oMHxNKSl7Z2U9MTQ7YnJlYWt9QT0wfGFbMjU2KyhtPTB8YVsxNisoZj0w''@;'; put 'put ''fGFbKDB8YVtEPj4yXSkrKGs8PDIpPj4yXSk+PjJdKT4+Ml07dDpkb3tpZigwfEEpZm9yKHA9MDs7KXtpZighKHc9MHxhW0ErKHA8PDIpPj4yXSkpYnJlYWsgdDtpZigoMHxhWzIzMisoMHxhWzE2KygwfGFbKDI9PSgwfChiPTMmYVt3Pj4yXSkpP3c6dystNDh8MCkrNDA+PjJdKT4+Ml0pPj4y''@;'; put 'put ''XSk+KDB8cSl8fCgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMz09KDB8Yik/dzp3KzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPigwfHEpKWJyZWFrIGU7cD1wKzF8MH19d2hpbGUoMCk7bT0wfGFbbSsyNDg+PjJdO3Q6ZG97aWYoMHxtKWZvcihwPTA7Oyl7aWYoIShBPTB8YVttKyhwPDwyKT4+Ml0p''@;'; put 'put ''KWJyZWFrIHQ7aWYoKDB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMHwodz0zJmFbQT4+Ml0pKT9BOkErNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk+KDB8cSl8fCgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDB8dyk/QTpBKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKT4oMHxxKSlicmVhayBl''@;'; put 'put ''O3A9cCsxfDB9fXdoaWxlKDApO2s9aysxfDB9aWYoMTQ9PSgwfGdlKSYmKGdlPTAsZikpe2lmKGY9MHxhW2FbRD4+Ml0+PjJdLCEoYz0wfGFbYVtSKygoKDB8cSk8KDB8Ryk/MTotMSk8PDYpKzQ+PjJdPj4yXSkpe2dlPTE2O2JyZWFrfVI9MHxVaChsKSxmZVsxNTYrKDB8YVsoRz1SKzE2fDAp''@;'; put 'put ''Pj4yXSk+PjBdPTIsRnUoUixmLDAsMCksRnUoUixjLDAsMCksYVsyMzIrKDB8YVtHPj4yXSk+PjJdPWFbMjMyKygwfGFbKCgwfGFbMjMyKygwfGFbZisxNj4+Ml0pPj4yXSk8KDB8YVsyMzIrKDB8YVtjKzE2Pj4yXSk+PjJdKT9mOmMpKzE2Pj4yXSk+PjJdLGM9MHxhW3BlPj4yXX1xPXErMXww''@;'; put 'put ''fWlmKDE2PT0oMHxnZSkpUHIoODY4MjksODY3MjEsMTExLDg2ODMyKTtlbHNlIGlmKDE5PT0oMHxnZSkpO30obCksMHxrNyhsLDIsMHxzSChsKSkpJiZQcig4NjY5Myw4NjcyMSwxMzQsODY3MzIpLGZ1bmN0aW9uIGVrKGwpe3ZhciBmLEEsYz0wLHA9MCxtPTAsdz0wLGI9MDtmb3IoQT0wfGFb''@;'; put 'put ''MTk2KyhsPTB8YVsxNisobHw9MCk+PjJdKT4+Ml0sZj0wfGl0W2wrMjM4Pj4xXSxsPTB8aXRbbCsyMzY+PjFdOyEoKDB8bCk+KDB8ZikpOyl7Zm9yKHA9MHxhW0ErKGw8PDYpPj4yXSxtPUErKGw8PDYpKzR8MCxjPTA7ISgoMHxjKT49KDB8cCkpOylfWzE2KyhiPTB8YVsxNisoMHxhWygwfGFb''@;'; put 'put ''bT4+Ml0pKyhjPDwyKT4+Ml0pPj4yXSk+PjNdPSsoMHxhWyh3PWIrMjMyfDApPj4yXSksYVt3Pj4yXT1sLGM9YysxfDA7bD1sKzF8MH19KGwpLGZ1bmN0aW9uIFNJKGwsYyl7Y3w9MDt2YXIgbSxmPTAscD0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTA7V1kobHw9MCxsKSxiPTB8''@;'; put 'put ''YVsobT1sKzE2fDApPj4yXTtlOmRve2lmKCgwfGl0W2IrMjM4Pj4xXSk+MCYmKHc9MHxhW2IrOD4+Ml0sZj0wfGFbdys4ND4+Ml0sMHxmKSl7Uj1+figrX1tiKzMyPj4zXS0rX1tiKzE2Pj4zXSksTT1+figrX1tiKzQwPj4zXS0rX1tiKzI0Pj4zXSksRD0oRz0wPT0oMSZhW2IrMTE2Pj4yXXww''@;'; put 'put ''KSk/TTpSLE09Rz9SOk0sND09KDB8Zik/KGY9MHxQMGUobCksdz0wfGFbOCsoYj0wfGFbbT4+Ml0pPj4yXSk6Zj0yPT0oMHxmKSYxO3Q6ZG97aWYoIShmPDwyND4+MjQpKXtzd2l0Y2goMHxhW3crODQ+PjJdKXtjYXNlIDU6aWYoKHA9K19bdys2ND4+M10pPD0wKWJyZWFrIGU7aWYocD0oQT1w''@;'; put 'put ''LytfW2IrMzI+PjNdKTwoaz0rX1t3KzcyPj4zXS8rX1tiKzQwPj4zXSk/QTprLEE+MSZrPjEpe2s9cDticmVhayB0fWJyZWFrIGU7Y2FzZSAxOmJyZWFrO2RlZmF1bHQ6YnJlYWsgZX1pZigocD0rKDB8RCkvKygwfE0pKTwoQT0rX1t3KzE2Pj4zXSkpe2s9MSxwPUEvcDticmVha31rPXAvQSxw''@;'; put 'put ''PTE7YnJlYWt9aWYoKHA9K19bdys2ND4+M10pPD0wKWJyZWFrIGU7aWYoKEE9cC8rKDB8TSkpPDF8KHA9K19bdys3Mj4+M10vKygwfEQpKTwxKXtpZihBPHApe2s9MSxwLz1BO2JyZWFrfWs9QS9wLHA9MTticmVha31rPUF9d2hpbGUoMCk7Zm9yKEE9KGY9MD09KDEmYVtiKzExNj4+Ml18MCkp''@;'; put 'put ''P3A6ayxwPWY/azpwLGY9YisxOTJ8MDtmPTB8YVtmPj4yXTspX1soRz0xNisoZj0wfGFbZisxNj4+Ml0pfDApPj4zXT0rKDB8fn4oKGs9K19bRz4+M10qcCkrKGs+PTA/LjU6LS41KSkpLF9bKEc9ZisyNHwwKT4+M109KygwfH5+KChrPStfW0c+PjNdKkEpKyhrPj0wPy41Oi0uNSkpKSxmPWYr''@;'; put 'put ''MTY0fDA7dUgobCxwLEEpfX13aGlsZSgwKTswfGMmJmZ1bmN0aW9uIFlZKGwsYyl7dmFyIGYsdyxNLEQ7TT1sZSxsZT1sZSszMnwwLHc9KCtfWzMyKyhEPTB8YVsxNisobHw9MCk+PjJdKT4+M10tK19bRCsxNj4+M10pLygrX1tEKzQwPj4zXS0rX1tEKzI0Pj4zXSksZj0rX1soY3w9MCk+PjNd''@;'; put 'put ''O2Rve2lmKHc+MS4xKmYpYVtjKzI0Pj4yXT1+fihmKisoKDB8YVtjKzIwPj4yXSktKDB8YVtjKzE2Pj4yXSl8MCkvdyk7ZWxzZXtpZihsPWMrMjR8MCwhKHc8PS44KmYpKXthW2w+PjJdPTA7YnJlYWt9YVtsPj4yXT0tMX19d2hpbGUoMCk7bGU9TX0obCxjKX0obCxjKSxmdW5jdGlvbiBheShs''@;'; put 'put ''KXt2YXIgQSxjPTAsZj0wLHA9MCxtPTA7Zm9yKGw9MTkyKygwfGFbKEE9MTYrKGx8PTApfDApPj4yXSl8MDtsPTB8YVtsPj4yXTspe2ZvcihtPWwrMTZ8MCxjPTA7Zj0wfGFbKHA9MHxhWzE4MCsobD0wfGFbbT4+Ml0pPj4yXSkrKGM8PDIpPj4yXTspRnQoMHxhW2YrMTY+PjJdKSxGdChmKSxj''@;'; put 'put ''PWMrMXwwO3AmJihGdChwKSxsPTB8YVttPj4yXSksKGM9MHxhW2wrMTcyPj4yXSkmJihGdChjKSxsPTB8YVttPj4yXSksZj0wfGFbNCsocD1sKzI1NnwwKT4+Ml0sYVsobD1sKzE4MHwwKT4+Ml09YVtwPj4yXSxhW2wrND4+Ml09ZixwPTB8YVs0KyhmPTI0OCsobD0wfGFbbT4+Ml0pfDApPj4y''@;'; put 'put ''XSxhWyhsPWwrMTcyfDApPj4yXT1hW2Y+PjJdLGFbbCs0Pj4yXT1wLGw9MTY0KygwfGFbbT4+Ml0pfDB9bD0wLGM9MHxhWzE5MisoMHxhW0E+PjJdKT4+Ml07ZTpmb3IoOzspZm9yKG09MD09KDB8bCkscD1sKzE2fDAsbD1jOzspe2lmKCFsKWJyZWFrIGU7aWYoYz0wfGFbMTY0KyhmPTB8YVts''@;'; put 'put ''KzE2Pj4yXSk+PjJdLDIhPSgwfGZlW2YrMTU2Pj4wXSkpY29udGludWUgZTttP2FbMTkyKygwfGFbQT4+Ml0pPj4yXT1jOmFbMTY0KygwfGFbcD4+Ml0pPj4yXT1jLEZ0KGYpLEZ0KGwpLGw9Y31hWzE2OCsoMHxhWzE2KygwfGFbMTkyKygwfGFbQT4+Ml0pPj4yXSk+PjJdKT4+Ml09MH0obCkp''@;'; put 'put ''fWZ1bmN0aW9uIGxIKGwpe3ZhciBPZSxMZSxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsUmU9MCxIZT0wLFZlPTA7Zm9yKExlPTB8YVsxOTYrKGM9MHxhWyhPZT0xNisobHw9MCl8MCk+PjJdKT4+Ml0sZ2U9MHxpdFtj''@;'; put 'put ''KzIzNj4+MV07ISgoMHxnZSk+KDB8aXRbYysyMzg+PjFdKSk7KXtmb3IoTT1MZSsoZ2U8PDYpfDAsRD1MZSsoZ2U8PDYpKzR8MCxSPUxlKyhnZTw8NikrNDB8MCxHPUxlKyhnZTw8NikrMjR8MCxxPUxlKyhnZTw8NikrMzJ8MCxwZT1MZSsoZ2U8PDYpKzE2fDAsaz0wOyEoKDB8ayk+PSgwfGFb''@;'; put 'put ''TT4+Ml0pKTspe0E9LjUqK19bODArKGM9MHxhWyhiPTE2KygwfGFbKDB8YVtEPj4yXSkrKGs8PDIpPj4yXSl8MCk+PjJdKT4+M10sbT0wfGFbYysyMDQ+PjJdO2U6ZG97aWYobSlmb3IocD0wOzspe2lmKCEoZj0wfGFbbSsocDw8Mik+PjJdKSlicmVhayBlOygwfGFbKDM9PSgwfChSZT0zJmFb''@;'; put 'put ''Zj4+Ml0pKT9mOmYrNDh8MCkrNDA+PjJdKT09KDB8YVsoMj09KDB8UmUpP2Y6ZistNDh8MCkrNDA+PjJdKSYmMCE9KDB8KGJlPTB8YVs5NisoMHxhW2YrMTY+PjJdKT4+Ml0pKSYmKEE9QT4odz0uNSorX1tiZSszMj4+M10pP0E6dykscD1wKzF8MH19d2hpbGUoMCk7K19bUj4+M108QSYmKF9b''@;'; put 'put ''Rz4+M109QSxfW1I+PjNdPUEpLCtfW3E+PjNdPEEmJihfW3BlPj4zXT1BLF9bcT4+M109QSksMHwoZj0wfGFbYysyMTI+PjJdKSYmKCgwfGYpPT0oMHxsKT9wPTA6KHA9MHxlcyhmLDB8YVs0NzE0NF0sOCwwKSxjPTB8YVtiPj4yXSksbT0wfGFbYysyMzI+PjJdLGM9MTI4KyhmPTB8YVtmKzE2''@;'; put 'put ''Pj4yXSl8MCxBKz0rKDB8cCksKDB8bSk9PSgwfGl0W2YrMjM2Pj4xXSkmJihfW2M+PjNdPSh3PStfW2M+PjNdKT5BP3c6QSksYz1mKzEyMHwwLCgwfG0pPT0oMHxpdFtmKzIzOD4+MV0pJiYoX1tjPj4zXT0odz0rX1tjPj4zXSk+QT93OkEpKSxrPWsrMXwwfWdlPWdlKzF8MCxjPTB8YVtPZT4+''@;'; put 'put ''Ml19Zm9yKGs9MHxzeShsKSxfWzI0KygwfGFbMTYrKDB8YVthW0xlKygoYz0wfGl0WzIzOCsocD0wfGFbT2U+PjJdKT4+MV0pPDw2KSs0Pj4yXT4+Ml0pPj4yXSk+PjNdPStfW0xlKyhjPDw2KSsxNj4+M10sZj0wfGl0W3ArMjM2Pj4xXSxtPXArMjUyfDAsdz0wO2I9YystMXwwLCEoKDB8Yyk8''@;'; put 'put ''PSgwfGYpKTspQT0oSGU9K19bTGUrKGI8PDYpKzMyPj4zXSsgK19bTGUrKGM8PDYpKzQwPj4zXSsgKygwfGFbbT4+Ml0pKT4oQT0rX1tMZSsoYzw8NikrMjQ+PjNdKzgrICtfW0xlKyhiPDw2KSsxNj4+M10pP0hlOkEsKDB8YVtMZSsoYjw8Nik+PjJdKT4wJiYoX1syNCsoMHxhWzE2KygwfGFb''@;'; put 'put ''YVtMZSsoYjw8NikrND4+Ml0+PjJdKT4+Ml0pPj4zXT0rX1syNCsoMHxhWzE2KygwfGFbYVtMZSsoYzw8NikrND4+Ml0+PjJdKT4+Ml0pPj4zXStBKSx3PXc+QT93OkEsYz1iO2U6ZG97aWYoMCE9KDB8aykmJjAhPSgxJmFbcCsxMTY+PjJdfDApJiYodXkobCwwKSxwPTB8YVtPZT4+Ml0sMHxm''@;'; put 'put ''ZVtwKzI3Nj4+MF0pKWZvcihjPTB8aXRbcCsyMzg+PjFdLGY9MHxpdFtwKzIzNj4+MV0sQT0rX1syNCsoMHxhWzE2KygwfGFbYVtMZSsoYzw8NikrND4+Ml0+PjJdKT4+Ml0pPj4zXSx3PTA7Oyl7aWYobT1jKy0xfDAsKDB8Yyk8PSgwfGYpKWJyZWFrIGU7SGU9KFZlPStfWzI0KygwfGFbMTYr''@;'; put 'put ''KDB8YVthW0xlKyhtPDw2KSs0Pj4yXT4+Ml0pPj4yXSk+PjNdKS1BLEE9VmUsdz13PkhlP3c6SGUsYz1tfX13aGlsZSgwKTtlOmRve2lmKDB8ZmVbcCsyNzY+PjBdKWZvcihtPTB8aXRbcCsyMzY+PjFdLGY9MHxpdFtwKzIzOD4+MV07Oyl7aWYoYz1mKy0xfDAsKDB8Zik8PSgwfG0pKWJyZWFr''@;'; put 'put ''IGU7KDB8YVtMZSsoYzw8Nik+PjJdKTw9MHx8KF9bMjQrKDB8YVsxNisoMHxhW2FbTGUrKGM8PDYpKzQ+PjJdPj4yXSk+PjJdKT4+M109K19bMjQrKDB8YVsxNisoMHxhW2FbTGUrKGY8PDYpKzQ+PjJdPj4yXSk+PjJdKT4+M10rdyksZj1jfX13aGlsZSgwKTtmb3IoYz1wKzE5MnwwO2M9MHxh''@;'; put 'put ''W2M+PjJdOylfWzI0KyhjPTB8YVtjKzE2Pj4yXSk+PjNdPStfWzI0KygwfGFbMTYrKDB8YVthW0xlKyhhW2MrMjMyPj4yXTw8NikrND4+Ml0+PjJdKT4+Ml0pPj4zXSxjPWMrMTY0fDB9ZnVuY3Rpb24gc0gobCl7dmFyIGM7cmV0dXJuIDB8KGw9KGM9MHxMaShsfD0wLDg2OTIxKSk/fn4oK2tw''@;'; put 'put ''KGMpKisoMHxHbyhsKSkpOjIxNDc0ODM2NDcpfWZ1bmN0aW9uIFdZKGwsYyl7Y3w9MDt2YXIgcCxmPTAsbT0wO2ZvcihwPTE2KyhsfD0wKXwwLGY9MTshKCgwfGYpPigwfGFbMTgwKyhtPTB8YVtwPj4yXSk+PjJdKSk7KVdZKDB8YVsoMHxhW20rMTg0Pj4yXSkrKGY8PDIpPj4yXSxjKSxmPWYr''@;'; put 'put ''MXwwOyFmdW5jdGlvbiBvdmUobCxjKXtjfD0wO3ZhciBPZSxMZSxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxSZT0wO3BlPSgwfHlhKGx8PTApKT09KDB8bCksTGU9MHxhWyhPZT1sKzE2fDApPj4yXTtlOmRve2lmKHBlKXtm''@;'; put 'put ''b3IoRz0obD0wfGl0W0xlKzIzOD4+MV0pPDwxNj4+MTYscT1MZSsxOTZ8MCxwZT1MZSsxOTZ8MCxSPShmPTB8aXRbTGUrMjM2Pj4xXSk8PDE2Pj4xNixtPS0yMTQ3NDgzNjQ3LHA9MjE0NzQ4MzY0NzshKCgwfFIpPigwfEcpKTspe2lmKDAhPSgwfChEPTB8YVsoQT0wfGFbcT4+Ml0pKyhSPDw2''@;'; put 'put ''KT4+Ml0pKSYmMCE9KDB8KGJlPTB8YVsoZ2U9MHxhW0ErKFI8PDYpKzQ+PjJdKT4+Ml0pKSl7Zm9yKGI9MSxBPWJlOygwfGIpPCgwfEQpJih3PTB8ZmVbMTU2KyhBPTB8YVtBKzE2Pj4yXSk+PjBdKTw8MjQ+PjI0IT0wOylBPTB8YVtnZSsoYjw8Mik+PjJdLGI9YisxfDA7aWYoISh3PDwyND4+''@;'; put 'put ''MjQpKXtmb3IoTT1wPChrPStfW0ErMTY+PjNdLStfW0ErODg+PjNdKSxiPTB8YVsoMHxhW3BlPj4yXSkrKFI8PDYpKzQ+PjJdLHc9RCstMnwwLEE9RCstMXwwOzB8ZmVbMTU2KyhBPTB8YVsxNisoMHxhW2IrKEE8PDIpPj4yXSk+PjJdKT4+MF07KUE9dyx3PXcrLTF8MDttPW0+KFJlPStfW0Er''@;'; put 'put ''OTY+PjNdKyArX1tBKzE2Pj4zXSk/bTpSZSxwPU0/cDprfX1SPVIrMXwwfWZvcih3PTB8YVtMZSsxODA+PjJdLGI9TGUrMTg0fDAsQT0xOzspe2lmKCgwfEEpPigwfHcpKWJyZWFrIGU7YmU9MHxhWzE2KygwfGFbKDB8YVtiPj4yXSkrKEE8PDIpPj4yXSk+PjJdLEE9QSsxfDAsbT1tPihrPStf''@;'; put 'put ''W2JlKzMyPj4zXSs4KT9tOmsscD1wPChSZT0rX1tiZSsxNj4+M10tOCk/cDpSZX19ZWxzZSBtPSsoMHxhWzIzMisoMHxhWzE2KygwfGFbTGUrMjYwPj4yXSk+PjJdKT4+Ml0pLHA9KygwfGFbMjMyKygwfGFbMTYrKDB8YVtMZSsyNTY+PjJdKT4+Ml0pPj4yXSksZj0wfGl0W0xlKzIzNj4+MV0s''@;'; put 'put ''bD0wfGl0W0xlKzIzOD4+MV19d2hpbGUoMCk7az0rX1syNCsoMHxhWzE2KygwfGFbYVsoYz0wfGFbMTk2KygwfGFbYysxNj4+Ml0pPj4yXSkrKGw8PDE2Pj4xNjw8NikrND4+Ml0+PjJdKT4+Ml0pPj4zXS0rX1tMZSsxMjA+PjNdLFJlPStfW0xlKzEyOD4+M10rICtfWzI0KygwfGFbMTYrKDB8''@;'; put 'put ''YVthW2MrKGY8PDE2Pj4xNjw8NikrND4+Ml0+PjJdKT4+Ml0pPj4zXSxfW0xlKzE2Pj4zXT1wLF9bTGUrMjQ+PjNdPWssX1szMisoYz0wfGFbT2U+PjJdKT4+M109bSxfW2MrNDA+PjNdPVJlfShsLGMpfWZ1bmN0aW9uIFAwZShsKXt2YXIgYyxmLHAsbSxNLHBlLGdlLGJlLEE9MCx3PTAsYj0w''@;'; put 'put ''LGs9MCxEPTAsUj0wLEc9MCxxPTA7cmV0dXJuIGdlPWxlLGxlPWxlKzgwfDAscD1nZSs2NHwwLGY9Z2UrNDh8MCxNPWdlLHBlPWdlKzMyfDAsYVsobT1nZSsxNnwwKT4+Ml09YVsoYmU9NDgrKGM9MHxhWzgrKDB8YVsobD0xNisobHw9MCl8MCk+PjJdKT4+Ml0pfDApPj4yXSxhW20rND4+Ml09''@;'; put 'put ''YVtiZSs0Pj4yXSxhW20rOD4+Ml09YVtiZSs4Pj4yXSxhW20rMTI+PjJdPWFbYmUrMTI+PjJdLCtfW20+PjNdPC4wMDF8fCtfWyhBPW0rOHwwKT4+M108LjAwMXx8KGFbTT4+Ml09YVsodz1jKzMyfDApPj4yXSxhW00rND4+Ml09YVt3KzQ+PjJdLGFbTSs4Pj4yXT1hW3crOD4+Ml0sYVtNKzEy''@;'; put 'put ''Pj4yXT1hW3crMTI+PjJdLGFbZj4+Ml09YVttPj4yXSxhW2YrND4+Ml09YVttKzQ+PjJdLGFbZis4Pj4yXT1hW20rOD4+Ml0sYVtmKzEyPj4yXT1hW20rMTI+PjJdLGFbcD4+Ml09YVt3Pj4yXSxhW3ArND4+Ml09YVt3KzQ+PjJdLGFbcCs4Pj4yXT1hW3crOD4+Ml0sYVtwKzEyPj4yXT1hW3cr''@;'; put 'put ''MTI+PjJdLEYwZShwZSxmLHApLGFbbT4+Ml09YVtwZT4+Ml0sYVttKzQ+PjJdPWFbcGUrND4+Ml0sYVttKzg+PjJdPWFbcGUrOD4+Ml0sYVttKzEyPj4yXT1hW3BlKzEyPj4yXSxhW2Y+PjJdPWFbcGU+PjJdLGFbZis0Pj4yXT1hW3BlKzQ+PjJdLGFbZis4Pj4yXT1hW3BlKzg+PjJdLGFbZisx''@;'; put 'put ''Mj4+Ml09YVtwZSsxMj4+Ml0sYVtwPj4yXT1hW00+PjJdLGFbcCs0Pj4yXT1hW00rND4+Ml0sYVtwKzg+PjJdPWFbTSs4Pj4yXSxhW3ArMTI+PjJdPWFbTSsxMj4+Ml0sRjBlKG0sZixwKSwoUj0oRD0rX1ttPj4zXSkvKGI9K19bMzIrKHc9MHxhW2w+PjJdKT4+M10pKT49MSYocT0oRz0rX1tB''@;'; put 'put ''Pj4zXSkvKGs9K19bdys0MD4+M10pKT49MSk/bD0wOihxPStJdSgrKFI9KFI9UjxxP1I6cSk+LjU/UjouNSkqay9HKSpHL2ssRz0rSXUoK1IqYi9EKSpEL2IqYixfWzY0KyhsPTB8YVt3Kzg+PjJdKT4+M109RyxfW2wrNzI+PjNdPXEqayxsPTEpLGxlPWdlLDB8bH1mdW5jdGlvbiB1SChsLGMs''@;'; put 'put ''Zil7Yz0rYyxmPStmO3ZhciBwPTAsbT0wO2ZvcihwPTE2KyhsfD0wKXwwLGw9MTshKCgwfGwpPigwfGFbMTgwKyhtPTB8YVtwPj4yXSk+PjJdKSk7KXVIKDB8YVsoMHxhW20rMTg0Pj4yXSkrKGw8PDIpPj4yXSxjLGYpLGw9bCsxfDA7X1socD1tKzE2fDApPj4zXT0rX1twPj4zXSpjLF9bKHA9''@;'; put 'put ''bSsyNHwwKT4+M109K19bcD4+M10qZixfWyhwPW0rMzJ8MCk+PjNdPStfW3A+PjNdKmMsX1sobT1tKzQwfDApPj4zXT0rX1ttPj4zXSpmfWZ1bmN0aW9uIEYwZShsLGMsZil7dmFyIHA7cD0rX1s4KyhjfD0wKT4+M10tK19bOCsoZnw9MCk+PjNdLF9bKGx8PTApPj4zXT0rX1tjPj4zXS0rX1tm''@;'; put 'put ''Pj4zXSxfW2wrOD4+M109cH1mdW5jdGlvbiBGdShsLGMsZixwKXtsfD0wLGN8PTAsZj0rZixwfD0wO3ZhciBBLHcsYixtPTA7cmV0dXJuIHc9MHx2cig5NiksYVsoYj13KzQ4fDApPj4yXT0zfGFbYj4+Ml0sYVt3Pj4yXT0tNCZhW3c+PjJdfDIsbT0wfHZyKDE3NiksYVsoQT13KzE2fDApPj4y''@;'; put 'put ''XT1tLGFbKDM9PSgzJmFbdz4+Ml18MCk/dzpiKSs0MD4+Ml09bCxhWygyPT0oMyZhW3c+PjJdfDApP3c6dystNDh8MCkrNDA+PjJdPWMsZj42NTUzNSYmKEgwZShmKSxmPTY1NTM1LG09MHxhW0E+PjJdKSxpdFttKzE3MD4+MV09fn4oZisoZj49MD8uNTotLjUpKSxhW20rMTU2Pj4yXT1wLFFD''@;'; put 'put ''KHcpLDB8d31mdW5jdGlvbiBIMGUobCl7dmFyIGMsZjtjPWxlLGxlPWxlKzE2fDAsX1soZj1jKT4+M109bD0rbCxhW2YrOD4+Ml09NjU1MzUsJHIoMSw4Njg0NSxmKSxsZT1jfWZ1bmN0aW9uIFFoKGwpe3ZhciBwLEEsdyxiLGssTSxjPTAsZj0wLG09MDtmb3IoTT1sZSxsZT1sZSsxNnwwLGs9''@;'; put 'put ''TSxmPTB8ZXMobHw9MCwwfGFbNDcxNDRdLDgsMCksdGsobCksdz0wfGFbMjU2KyhtPTB8YVsoQT1sKzE2fDApPj4yXSk+PjJdLGI9MHxhW20rMjYwPj4yXSxwPSsoMHxmKSxmPTB8aXRbbSsyMzY+PjFdOyEoKDB8Zik+KDB8aXRbbSsyMzg+PjFdKSk7KXtjPTB8YVttKzE5Nj4+Ml07ZG97aWYo''@;'; put 'put ''MHxhW2MrKGY8PDYpPj4yXSl7aWYoYz0wfGFbYVtjKyhmPDw2KSs0Pj4yXT4+Ml0pe0Z1KHcsYywrX1s4OCsoMHxhW2MrMTY+PjJdKT4+M10rcCsgK19bbSs5Nj4+M10sMCksRnUoYz0wfGFbKDB8YVsoYz0wfGFbMTk2KyhtPTB8YVtBPj4yXSk+PjJdKSsoZjw8NikrND4+Ml0pKygoMHxhW2Mr''@;'; put 'put ''KGY8PDYpPj4yXSktMTw8Mik+PjJdLGIsK19bOTYrKDB8YVtjKzE2Pj4yXSk+PjNdK3ArICtfW20rNjQ+PjNdLDApO2JyZWFrfWFbaz4+Ml09MHx0aShsKSxhW2srND4+Ml09ZiwkcigxLDg2OTI5LGspO2JyZWFrfX13aGlsZSgwKTtmPWYrMXwwLG09MHxhW0E+PjJdfWxlPU19ZnVuY3Rpb24g''@;'; put 'put ''dGsobCl7dmFyIGM9MCxmPTAscD0wOzB8YVsyNTYrKDB8YVsoYz0xNisobHw9MCl8MCk+PjJdKT4+Ml18fChwPTB8VWgoMHx5YShsKSksZmVbMTU2KygwfGFbcCsxNj4+Ml0pPj4wXT0yLGY9MHxVaCgwfHlhKGwpKSxmZVsxNTYrKDB8YVtmKzE2Pj4yXSk+PjBdPTIsMHxhWzEyKygwfGFbYz4+''@;'; put 'put ''Ml0pPj4yXSYmKDB8eWEobCkpIT0oMHxsKSYmMD09KDEmYVsxMTYrKDB8YVsxNisoMHxkaShsKSk+PjJdKT4+Ml18MCkmJkZ1KHAsZiwrKDB8fn4rX1s0OCsobD0wfGFbYz4+Ml0pKygoK19bbCs0OD4+M10+K19bbCs4MD4+M10/MDoyKTw8NCk+PjNdKSwwKSxhWzI1NisoYz0wfGFbYz4+Ml0p''@;'; put 'put ''Pj4yXT1wLGFbYysyNjA+PjJdPWYpfWZ1bmN0aW9uIGhIKGwpe2x8PTA7dmFyIGM9MCxmPTA7ZG97aWYoKDB8eWEobCkpIT0oMHxsKSl7aWYoUWgobCksYz0wfFU1KDB8YVsyNTYrKGM9MHxhWyhsPWwrMTZ8MCk+PjJdKT4+Ml0sMHxhW2MrMjYwPj4yXSkpe2FbKGY9MTU2KygwfGFbYysxNj4+''@;'; put 'put ''Ml0pfDApPj4yXT0xMjgrKDB8YVtmPj4yXSk7YnJlYWt9RnUoMHxhWzI1NisoZj0wfGFbbD4+Ml0pPj4yXSwwfGFbZisyNjA+PjJdLDEsMTI4KTticmVha31sPWwrMTZ8MH13aGlsZSgwKTtmb3IoYz0xOyEoKDB8Yyk+KDB8YVsxODArKGY9MHxhW2w+PjJdKT4+Ml0pKTspaEgoMHxhWygwfGFb''@;'; put 'put ''ZisxODQ+PjJdKSsoYzw8Mik+PjJdKSxjPWMrMXwwfWZ1bmN0aW9uIFVZKGwpe3ZhciBrLEQsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLE09MDtmb3Ioaz0rKDB8KHc9MHxlcyhsfD0wLDB8YVs0NzE0NF0sOCwwKSkpLHc9MHxpdFsyMzYrKGM9MHxhWyhEPWwrMTZ8MCk+PjJdKT4+MV07''@;'; put 'put ''Oyl7aWYoKDB8dyk+KDB8aXRbYysyMzg+PjFdKSl7Zj0xO2JyZWFrfWM9MHxhW2MrMTk2Pj4yXTtlOmRve2lmKDB8YVtjKyh3PDw2KT4+Ml0mJihiPTB8YVthW2MrKHc8PDYpKzQ+PjJdPj4yXSwwfGIpKXtmb3IoZj0wfGFbMjM2KygwfGFbKG09YisxNnwwKT4+Ml0pPj4yXTshKCgwfGYpPD0w''@;'; put 'put ''KTspe2lmKGY9ZistMXwwLEE9MHxhWygwfGFbKDB8YVsxOTYrKDB8YVsxNisoMHx5YShsKSk+PjJdKT4+Ml0pKyh3PDw2KSs0Pj4yXSkrKGY8PDIpPj4yXSwhKDB8ZmVbMTU2KyhjPTB8YVsocD1BKzE2fDApPj4yXSk+PjBdKSl7TT0xMDticmVha31pZigwfG5rKGwsQSkpe009OTticmVha319''@;'; put 'put ''Zm9yKDk9PSgwfE0pJiYoYz0wfGFbcD4+Ml0sTT0xMCksMTA9PSgwfE0pJiYoTT0wLEZ1KEEsMHxhWzI1NisoMHxhW0Q+PjJdKT4+Ml0sK19bYys5Nj4+M10raywwKSksZj0oMHxhWygwfGFbMTk2KygwfGFbRD4+Ml0pPj4yXSkrKHc8PDYpPj4yXSkrKDB8YVsyMzYrKDB8YVttPj4yXSk+PjJd''@;'; put 'put ''KXwwOzspe2lmKCgwfGYpPj0oMHxhWygwfGFbMTk2KygwfGFbMTYrKDB8eWEobCkpPj4yXSk+PjJdKSsodzw8Nik+PjJdKSlicmVhayBlO2lmKG09MHxhWygwfGFbKDB8YVsxOTYrKDB8YVsxNisoMHx5YShsKSk+PjJdKT4+Ml0pKyh3PDw2KSs0Pj4yXSkrKGY8PDIpPj4yXSwhKDB8ZmVbMTU2''@;'; put 'put ''KyhjPTB8YVsocD1tKzE2fDApPj4yXSk+PjBdKSlicmVhaztpZigwfG5rKGwsbSkpe009MTU7YnJlYWt9Zj1mKzF8MH0xNT09KDB8TSkmJihNPTAsYz0wfGFbcD4+Ml0pLEZ1KDB8YVsyNjArKDB8YVtEPj4yXSk+PjJdLG0sK19bYys4OD4+M10raywwKX19d2hpbGUoMCk7dz13KzF8MCxjPTB8''@;'; put 'put ''YVtEPj4yXX1mb3IoOyEoKDB8Zik+KDB8YVtjKzE4MD4+Ml0pKTspVVkoMHxhWygwfGFbYysxODQ+PjJdKSsoZjw8Mik+PjJdKSxmPWYrMXwwLGM9MHxhW0Q+PjJdfWZ1bmN0aW9uIFFZKGwpe3ZhciBjLGYscD0wLG09MCxBPTA7Zm9yKHA9MHxlcyhsfD0wLDB8YVs0NzE0NF0sOCwwKSx0ayhs''@;'; put 'put ''KSxjPWwrMTZ8MCxmPSsoMHxwKSxsPTE7ISgoMHxsKT4oMHxhWzE4MCsocD0wfGFbYz4+Ml0pPj4yXSkpOyl0ayhwPTB8YVsoMHxhW3ArMTg0Pj4yXSkrKGw8PDIpPj4yXSksRnUoMHxhWzI1NisobT0wfGFbYz4+Ml0pPj4yXSwwfGFbMjU2KygwfGFbKEE9cCsxNnwwKT4+Ml0pPj4yXSwrX1tt''@;'; put 'put ''Kzk2Pj4zXStmLDApLEZ1KDB8YVsyNjArKDB8YVtBPj4yXSk+PjJdLDB8YVsyNjArKG09MHxhW2M+PjJdKT4+Ml0sK19bbSs2ND4+M10rZiwwKSxRWShwKSxsPWwrMXwwfWZ1bmN0aW9uIGRIKGwpe3ZhciBELFIsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRz0wO2Zvcihj''@;'; put 'put ''PTB8ZXMobHw9MCwwfGFbNDcxNDRdLDgsMCksUj1sKzE2fDAsbD0xOyEoKDB8bCk+KDB8KGY9MHxhWzE4MCsocD0wfGFbUj4+Ml0pPj4yXSkpKTspdGsoMHxhWygwfGFbcCsxODQ+PjJdKSsobDw8Mik+PjJdKSxsPWwrMXwwO2ZvcihEPSsoMHxjKSxNPTEsbD1mLGM9cDshKCgwfE0pPigwfGwp''@;'; put 'put ''KTspe2ZvcihiPWs9TSsxfDA7cD0wfGFbKGY9MHxhW2MrMTg0Pj4yXSkrKE08PDIpPj4yXSwhKCgwfGIpPigwfGwpKTspdz0obT0oMHxpdFsyMzYrKDB8YVtwKzE2Pj4yXSk+PjFdKT4oMHxpdFsyMzYrKDB8YVsxNisoZj0wfGFbZisoYjw8Mik+PjJdKT4+Ml0pPj4xXSkpP2Y6cCxBPShHPTB8''@;'; put 'put ''aXRbMjM2KyhtPTB8YVsoZj1tP3A6ZikrMTY+PjJdKT4+MV0pPDwxNj4+MTYsKDB8aXRbMjM4KyhwPTB8YVt3KzE2Pj4yXSk+PjFdKT49Rzw8MTY+PjE2JiYoRnUoMHxhWzI2MCsoMHxhWygobD0oMHxhWzIzNisoMHxhWzE2KygwfGFbYVsoMHxhW3ArMTk2Pj4yXSkrKEE8PDYpKzQ+PjJdPj4y''@;'; put 'put ''XSk+PjJdKT4+Ml0pPCgwfGFbMjM2KygwfGFbMTYrKDB8YVthWygwfGFbbSsxOTY+PjJdKSsoQTw8NikrND4+Ml0+PjJdKT4+Ml0pPj4yXSkpP3c6ZikrMTY+PjJdKT4+Ml0sMHxhWzI1NisoMHxhWyhsP2Y6dykrMTY+PjJdKT4+Ml0sRCwwKSxjPWw9MHxhW1I+PjJdLGw9MHxhW2wrMTgwPj4y''@;'; put 'put ''XSksYj1iKzF8MDtkSChwKSxNPWssbD0wfGFbMTgwKyhjPTB8YVtSPj4yXSk+PjJdfX1mdW5jdGlvbiBuayhsLGMpe2x8PTA7dmFyIGY9MDtpZigxPT0oMHxmZVsxNTYrKGM9MHxhWzE2KyhjfD0wKT4+Ml0pPj4wXSkpe2ZvcihjPTB8YVthW2MrMjU2Pj4yXT4+Ml07Zj0wfGFbMTE2KygwfGFb''@;'; put 'put ''YysxNj4+Ml0pPj4yXTspYz1mO2M9MHxOcihsLDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOmMrNDh8MCkrNDA+PjJdKT8wOjA9PSgwfE5yKGwsMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdKSkmMX1lbHNlIGM9MDtyZXR1cm4gMHxjfWZ1bmN0aW9uIEpZKGwsYyl7cmV0''@;'; put 'put ''dXJuIDB8WFkobHw9MCxjfD0wKX1mdW5jdGlvbiBYWShsLGMpe2x8PTAsY3w9MDt2YXIgZj0wLHA9MDtlOmRve2lmKCgwfGwpPT0oMHxjKSlsPTE7ZWxzZSBmb3IoZj0wfGFbMTgwKygwfGFbbCsxNj4+Ml0pPj4yXSxsPTA7Oyl7aWYoIShwPTB8YVtmKyhsPDwyKT4+Ml0pKXtsPTA7YnJlYWsg''@;'; put 'put ''ZX1pZigwfFhZKDB8YVsoMj09KDMmYVtwPj4yXXwwKT9wOnArLTQ4fDApKzQwPj4yXSxjKSl7bD0xO2JyZWFrfWw9bCsxfDB9fXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gbHkobCxjKXtsfD0wO3ZhciBNLEQsUixmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsRz0wO1I9bGUsbGU9''@;'; put 'put ''bGUrNDh8MCxEPVIrMzJ8MCxNPVIrOHwwLGY9UisyNHwwLGs9UisxNnwwLGI9UixtPTB8YVsocD0xNisoY3w9MCl8MCk+PjJdO2U6ZG97aWYoKDB8YVttKzIxNj4+Ml0pPj0yKWlmKGFbTT4+Ml09fn4oK19bbSsxNj4+M10tK19bbSs4OD4+M10pLGFbTSs0Pj4yXT1+fitfW20rMjQ+PjNdLGFb''@;'; put 'put ''RD4+Ml09YVtNPj4yXSxhW0QrND4+Ml09YVtNKzQ+PjJdLEtZKGYsYyxEKSxBPWYsdz0wfGFbQSs0Pj4yXSxmPU0sYVtmPj4yXT1hW0E+PjJdLGFbZis0Pj4yXT13LGY9MHxhW3A+PjJdLCgwfGFbZisxODQ+PjJdKT4wKWZvcihiPTB8YVthW2YrMTgwPj4yXT4+Ml0sZj0xKygwfGFbZisyMzY+''@;'; put 'put ''PjJdKXwwLGI9MHxNZihsLDB8YVsoMj09KDMmYVtiPj4yXXwwKT9iOmIrLTQ4fDApKzQwPj4yXSk7Oyl7aWYoIWIpYnJlYWsgZTtwPSh3PTI9PSgzJmFbYj4+Ml18MCk/YjpiKy00OHwwKSs0OHwwLCgwfChtPTB8YVsoMz09KDMmYVt3Pj4yXXwwKT93OnApKzQwPj4yXSkpIT0oMHxjKSYmKDB8''@;'; put 'put ''ZzEobSkpPT0oMHxjKSYmKG09MHxhWygzPT0oMyZhW3c+PjJdfDApP3c6cCkrNDA+PjJdLGFbRD4+Ml09YVtNPj4yXSxhW0QrND4+Ml09YVtNKzQ+PjJdLCRZKGssbCxtLEQsZikscD0wfGFbKG09aykrND4+Ml0sYVsoQT1NKT4+Ml09YVttPj4yXSxhW0ErND4+Ml09cCx4WSh3KSxBPXcrLTQ4''@;'; put 'put ''fDAscD0obT0wfGFbMTcyKyhwPTB8YVsxNisoMHxhWygyPT0oMyZhW3c+PjJdfDApP3c6QSkrNDA+PjJdKT4+Ml0pPj4yXSk/MHxWMChtLDgrKGFbcCsxNzY+PjJdPDwyKXwwKTowfFFuKDgrKGFbcCsxNzY+PjJdPDwyKXwwKSxhWzE3MisoMHxhWzE2KygwfGFbKDI9PSgzJmFbdz4+Ml18MCk/''@;'; put 'put ''dzpBKSs0MD4+Ml0pPj4yXSk+PjJdPXAscD0wfGFbMTcyKyhHPTB8YVsxNisoMHxhWygyPT0oMyZhW3c+PjJdfDApP3c6QSkrNDA+PjJdKT4+Ml0pPj4yXSxhWyhHPUcrMTc2fDApPj4yXT0xKyhtPTB8YVtHPj4yXSksYVtwKyhtPDwyKT4+Ml09dyxhWygwfGFbMTcyKyh3PTB8YVsxNisoMHxh''@;'; put 'put ''WygyPT0oMyZhW3c+PjJdfDApP3c6QSkrNDA+PjJdKT4+Ml0pPj4yXSkrKGFbdysxNzY+PjJdPDwyKT4+Ml09MCxmPWYrMXwwKSxiPTB8RjMobCxiKX1lbHNlIGZvcih3PTB8YVthW2YrMTcyPj4yXT4+Ml0sZj0xKygwfGFbZisyMzY+PjJdKXwwLHc9MHx3MChsLDB8YVsoMz09KDMmYVt3Pj4y''@;'; put 'put ''XXwwKT93OncrNDh8MCkrNDA+PjJdKTs7KXtpZighdylicmVhayBlO3A9dystNDh8MCwoMHwobT0wfGFbKDI9PSgzJmFbdz4+Ml18MCk/dzpwKSs0MD4+Ml0pKSE9KDB8YykmJigwfGcxKG0pKT09KDB8YykmJihtPTB8YVsoMj09KDMmYVt3Pj4yXXwwKT93OnApKzQwPj4yXSxhW0Q+PjJdPWFb''@;'; put 'put ''TT4+Ml0sYVtEKzQ+PjJdPWFbTSs0Pj4yXSwkWShiLGwsbSxELGYpLHA9MHxhWyhtPWIpKzQ+PjJdLGFbKEE9TSk+PjJdPWFbbT4+Ml0sYVtBKzQ+PjJdPXAseFkodyksQT13KzQ4fDAscD0obT0wfGFbMTgwKyhwPTB8YVsxNisoMHxhWygzPT0oMyZhW3c+PjJdfDApP3c6QSkrNDA+PjJdKT4+''@;'; put 'put ''Ml0pPj4yXSk/MHxWMChtLDgrKGFbcCsxODQ+PjJdPDwyKXwwKTowfFFuKDgrKGFbcCsxODQ+PjJdPDwyKXwwKSxhWzE4MCsoMHxhWzE2KygwfGFbKDM9PSgzJmFbdz4+Ml18MCk/dzpBKSs0MD4+Ml0pPj4yXSk+PjJdPXAsaz0wfGFbMTgwKyhtPTB8YVsxNisoMHxhWygzPT0oMyZhW3c+PjJd''@;'; put 'put ''fDApP3c6QSkrNDA+PjJdKT4+Ml0pPj4yXSxhWyhtPW0rMTg0fDApPj4yXT0xKyhHPTB8YVttPj4yXSksYVtrKyhHPDwyKT4+Ml09dyxhWygwfGFbMTgwKyhHPTB8YVsxNisoMHxhWygzPT0oMyZhW3c+PjJdfDApP3c6QSkrNDA+PjJdKT4+Ml0pPj4yXSkrKGFbRysxODQ+PjJdPDwyKT4+Ml09''@;'; put 'put ''MCxmPWYrMXwwKSx3PTB8UzAobCx3KX19d2hpbGUoMCk7bGU9Un1mdW5jdGlvbiBLWShsLGMsZil7bHw9MCxmfD0wO3ZhciBwPTAsbT0wO1R5KGN8PTAsMSZhWzExNisoMHxhWzE2KygwfGNyKGMpKT4+Ml0pPj4yXSksX1syNCsocD0wfGFbYysxNj4+Ml0pPj4zXT0rKDB8YVtmKzQ+PjJdKSxf''@;'; put 'put ''W3ArMTY+PjNdPW09K19bcCs4OD4+M10rICsoMHxhW2Y+PjJdKSxhW2Y+PjJdPX5+KChtKz0rX1twKzk2Pj4zXSkrICsoMHxhWzI0OCsoMHxhWzE2KygwfGNyKGMpKT4+Ml0pPj4yXSkpLGM9MHxhWyhwPWYpKzQ+PjJdLGFbKGY9bCk+PjJdPWFbcD4+Ml0sYVtmKzQ+PjJdPWN9ZnVuY3Rpb24g''@;'; put 'put ''JFkobCxjLGYscCxtKXtsfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciB3LGIsayxBPTA7Yj1sZSxsZT1sZSsxNnwwLHc9YixjPTB8eWEoY3w9MCksKDB8KEE9MHxnMShmKSkpIT0oMHxmKSYmZnVuY3Rpb24geTBlKGwsYyl7dmFyIHAsbSxmPTA7KDB8KGx8PTApKT09KDB8KGN8PTApKSYmUHIoODU2''@;'; put 'put ''MTMsODU1NjEsMjIwLDg1NjIwKSwwfGFbKGY9MTY0KyhtPTB8YVtjKzE2Pj4yXSl8MCk+PjJdJiZQcig4NTYzMyw4NTU2MSwyMjEsODU2MjApLGFbZj4+Ml09YVsocD0xNjQrKDB8YVtsKzE2Pj4yXSl8MCk+PjJdLDB8KGY9MHxhW3A+PjJdKSYmKGFbMTY4KygwfGFbZisxNj4+Ml0pPj4yXT1j''@;'; put 'put ''KSxhW20rMTY4Pj4yXT1sLGFbcD4+Ml09Y30oQSxmKSxhWzIzNisoaz0wfGFbZisxNj4+Ml0pPj4yXT1tLGFbaysyMzI+PjJdPUE9MHxhWzIzMisoMHxhW0ErMTY+PjJdKT4+Ml0sYVsoMHxhWygwfGFbMTk2KygwfGFbYysxNj4+Ml0pPj4yXSkrKEE8PDYpKzQ+PjJdKSsobTw8Mik+PjJdPWYs''@;'; put 'put ''YVt3Pj4yXT1hW3A+PjJdLGFbdys0Pj4yXT1hW3ArND4+Ml0sS1kobCxmLHcpLGxlPWJ9ZnVuY3Rpb24gc3kobCl7dmFyIHcsYz0wLGY9MCxwPTAsbT0wLEE9MCxiPTAsaz0wLE09MCxEPTA7Zm9yKE09MHxhWzE5NisoMHxhWzE2KygwfHlhKGx8PTApKT4+Ml0pPj4yXSx3PSgwfHlhKGwpKT09''@;'; put 'put ''KDB8bCk/ODorKDB8ZXMobCwwfGFbNDcxNDRdLDgsMCkpLHA9MCxiPTEsZj0rX1sxMjArKG09MHxhWyhrPWwrMTZ8MCk+PjJdKT4+M10sYz0rX1ttKzEyOD4+M107ISgoMHxiKT4oMHxhW20rMTgwPj4yXSkpOylwPTB8c3koQT0wfGFbKDB8YVttKzE4ND4+Ml0pKyhiPDwyKT4+Ml0pfHAsKDB8''@;'; put 'put ''aXRbMjM4KyhBPTB8YVtBKzE2Pj4yXSk+PjFdKT09KDB8aXRbMjM4KyhtPTB8YVtrPj4yXSk+PjFdKSYmKGY9Zj4oRD0rX1tBKzEyMD4+M10rdyk/ZjpEKSwoMHxpdFtBKzIzNj4+MV0pPT0oMHxpdFttKzIzNj4+MV0pJiYoYz1jPihEPStfW0ErMTI4Pj4zXSt3KT9jOkQpLGI9YisxfDA7cmV0''@;'; put 'put ''dXJuKDB8eWEobCkpIT0oMHxsKSYmMCE9KDB8YVsxMisoMHxhW2s+PjJdKT4+Ml0pJiYoMSZhWzExNisoMHxhWzE2KygwfGRpKGwpKT4+Ml0pPj4yXT9wPTE6KHA9MSxmPStfWzU2KyhiPTB8YVtrPj4yXSk+PjNdK2YsYz0rX1tiKzg4Pj4zXStjKSksX1sxMjArKGI9MHxhW2s+PjJdKT4+M109''@;'; put 'put ''ZixfW2IrMTI4Pj4zXT1jLCgwfHlhKGwpKSE9KDB8bCkmJihfWyhsPU0rKGl0WzIzNisoaz0wfGFbaz4+Ml0pPj4xXTw8NikrMjR8MCk+PjNdPShEPStfW2w+PjNdKT5jP0Q6YyxfWyhNPU0rKGl0W2srMjM4Pj4xXTw8NikrMTZ8MCk+PjNdPShEPStfW00+PjNdKT5mP0Q6ZiksMHxwfWZ1bmN0''@;'; put 'put ''aW9uIHV5KGwsYyl7Y3w9MDt2YXIgYixrLGY9MCxwPTAsbT0wLEE9MCx3PTAsTT0wLEQ9MCxSPTAsRz0wLHE9MDtmb3IoUj0wfGFbMTk2KygwfGFbMTYrKDB8eWEobHw9MCkpPj4yXSk+PjJdLE09KGY9KDB8eWEobCkpPT0oMHxsKT8wOjB8ZXMobCwwfGFbNDcxNDRdLDgsMCkpK2N8MCxiPSso''@;'; put 'put ''MHxmKSx3PTEscD0rX1sxMjgrKEE9MHxhWyhrPWwrMTZ8MCk+PjJdKT4+M10sbT0rX1tBKzEyMD4+M10sZj1BOyEoKDB8dyk+KDB8YVtmKzE4MD4+Ml0pKTspdXkoQT0wfGFbKDB8YVtmKzE4ND4+Ml0pKyh3PDwyKT4+Ml0sTSksKDB8aXRbMjM4KyhBPTB8YVtBKzE2Pj4yXSk+PjFdKT09KDB8''@;'; put 'put ''aXRbMjM4KyhmPTB8YVtrPj4yXSk+PjFdKSYmKG09bT4ocT0rX1tBKzEyMD4+M10rYik/bTpxKSwoMHxpdFtBKzIzNj4+MV0pPT0oMHxpdFtmKzIzNj4+MV0pJiYocD1wPihxPStfW0ErMTI4Pj4zXStiKT9wOnEpLHc9dysxfDA7X1tmKzEyMD4+M109bSxfW2YrMTI4Pj4zXT1wLCgwfHlhKGwp''@;'; put 'put ''KSE9KDB8bCkmJjB8YVsxMisoRD0wfGFbaz4+Ml0pPj4yXSYmKEc9LW0tcCsgK19bRCs0OCsoKCtfW0QrMTA0Pj4zXT4rX1tEKzcyPj4zXT8zOjEpPDw0KSs4Pj4zXS0rX1syNCsoMHxhWzE2KygwfGFbYVtSKyhpdFtEKzIzNj4+MV08PDYpKzQ+PjJdPj4yXSk+PjJdKT4+M10rICtfWzI0Kygw''@;'; put 'put ''fGFbMTYrKDB8YVthW1IrKGl0W0QrMjM4Pj4xXTw8NikrND4+Ml0+PjJdKT4+Ml0pPj4zXSk+MCYmZnVuY3Rpb24gWjBlKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIEEsYixrLE0sRCxSLEcscSxwPTAsbT0wLHc9MCxwZT0wO2lmKGI9MHxhWzE2KygwfHlhKGx8PTApKT4+Ml0scD0wfGl0WzIzNiso''@;'; put 'put ''Rz0wfGFbbCsxNj4+Ml0pPj4xXSwoMHwoZj1+figoUj0rKDB8KGs9KGMrMXwwKS8yfDApKSkrKEE9KygwfGYpKSsoRD0rX1soTT1HKzEyMHwwKT4+M10pLStfWyhxPTB8YVtiKzE5Nj4+Ml0pKygobD0wfGl0W0crMjM4Pj4xXSk8PDYpKzE2Pj4zXSkpKT4wKXtmb3IobT0rKDB8Zik7ISgoMHxs''@;'; put 'put ''KTwoMHxwKSk7KSgwfGFbcSsobDw8Nik+PjJdKT4wJiYoX1socGU9MjQrKDB8YVsxNisoMHxhW2FbcSsobDw8NikrND4+Ml0+PjJdKT4+Ml0pfDApPj4zXT0rX1twZT4+M10rbSksbD1sKy0xfDA7bD1mLG09KHc9K19bRysxMjg+PjNdKSsgKyhjLWt8MCl9ZWxzZSBsPWMta3wwLG09dz0rX1tH''@;'; put 'put ''KzEyOD4+M107bD1+figrKDB8bCkrQSttLStfW3ErKHA8PDYpKzI0Pj4zXSk7ZTpkb3tpZigoMHxsKT4wKWZvcihmPTB8aXRbYisyMzY+PjFdLG09KygwfGwpOzspe2lmKGw9cCstMXwwLCgwfHApPD0oMHxmKSlicmVhayBlOygwfGFbcSsobDw8Nik+PjJdKTw9MHx8KF9bKHA9MjQrKDB8YVsx''@;'; put 'put ''NisoMHxhW2FbcSsobDw8NikrND4+Ml0+PjJdKT4+Ml0pfDApPj4zXT0rX1twPj4zXSttKSxwPWx9fXdoaWxlKDApO19bRysxMjg+PjNdPXcrICsoYy1rfDApLF9bTT4+M109RCtSfShsLH5+RyxjKSwoMHx5YShsKSkhPSgwfGwpJiYoX1soTT1SKyhpdFsyMzYrKEQ9MHxhW2s+PjJdKT4+MV08''@;'; put 'put ''PDYpKzI0fDApPj4zXT0ocT0rX1tNPj4zXSk+KEc9K19bRCsxMjg+PjNdKT9xOkcsX1soUj1SKyhpdFtEKzIzOD4+MV08PDYpKzE2fDApPj4zXT0oRz0rX1tSPj4zXSk+KHE9K19bRCsxMjA+PjNdKT9HOnEpfWZ1bmN0aW9uIHJrKGwsYyl7dmFyIGYscDtwPTB8ZmVbODQrKGY9MHxhWzE2Kyhs''@;'; put 'put ''fD0wKT4+Ml0pPj4wXSxsPTB8YVsxNisoY3w9MCk+PjJdO2Rve2lmKHA8PDI0Pj4yND09KDB8ZmVbbCs4ND4+MF0pKXtpZigrX1tmKzU2Pj4zXT09K19bbCs1Nj4+M10pe2lmKHA8PDI0Pj4yNCE9MCYmK19bZis2ND4+M10hPStfW2wrNjQ+PjNdKXtsPTA7YnJlYWt9fWVsc2UgaWYocDw8MjQ+''@;'; put 'put ''PjI0KXtsPTA7YnJlYWt9aWYoK19bZisxNj4+M109PStfW2wrMTY+PjNdJiYrX1tmKzI0Pj4zXT09K19bbCsyND4+M10pe2w9MTticmVha31sPTA9PSgwfGZlW2YrNDQ+PjBdKSYxfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gcVkobCl7dmFyIHcsYz0wLGY9MCxwPTAs''@;'; put 'put ''bT0wLEE9MDtmb3IoaXRbMjM2KyhjPTB8YVsodz0xNisobHw9MCl8MCk+PjJdKT4+MV09MzI3NjcsaXRbYysyMzg+PjFdPS0xLGM9MCxBPTB8RHQobCk7Zj0wfGFbdz4+Ml0sQTspKDB8KG09MHxhWzIzMisoMHxhW0ErMTY+PjJdKT4+Ml0pKT4oMHxpdFsocD1mKzIzOHwwKT4+MV0pJiYoaXRb''@;'; put 'put ''cD4+MV09bSksKDB8bSk8KDB8aXRbKGY9ZisyMzZ8MCk+PjFdKSYmKGl0W2Y+PjFdPW0pLGM9Yz8oMHxtKTwoMHxhWzIzMisoMHxhW2MrMTY+PjJdKT4+Ml0pP0E6YzpBLEE9MHx6dChsLEEpO2FbZisyNjQ+PjJdPWN9ZnVuY3Rpb24gcEgobCl7dmFyIHAsYz0wLGY9MCxtPTA7Zm9yKGM9KGM9''@;'; put 'put ''MHxMaShsfD0wLDg2OTc0KSk/fn4oK2twKGMpKisoMHxHbyhsKSkpOjIxNDc0ODM2NDcscD1sKzE2fDAsZj0wOyEoKDB8Zik+PSgwfGFbMjIwKyhtPTB8YVtwPj4yXSk+PjJdKSk7KWFbbSsxOTI+PjJdPWFbKDB8YVttKzIxNj4+Ml0pKyhmPDwyKT4+Ml0sazcobCwwPT0oMHxhW20rMTgwPj4y''@;'; put 'put ''XSkmMSxjKSxmPWYrMXwwfWZ1bmN0aW9uIGVVKGwsYyl7Y3w9MDt2YXIgcCxtPTA7cD1sZSxsZT1sZSsxNnwwLDB8TGkobHw9MCw4Njk4Myk/KGl0WyhtPTEzNisoMHxhW2wrMTY+PjJdKXwwKT4+MV09MTZ8aXRbbT4+MV0sZnVuY3Rpb24gejBlKGwsYyl7bHw9MCxjfD0wO3ZhciBtLHcsZj0w''@;'; put 'put ''LHA9MCxBPTA7dz1sZSxsZT1sZSsxNnwwLEE9dyxhWzQ2NzQ3XT0wLGZlW0E+PjBdPTB8ZmVbMTg1ODhdLGZlW0ErMT4+MF09MHxmZVsxODU4OV0sZmVbQSsyPj4wXT0wfGZlWzE4NTkwXSxmZVtBKzM+PjBdPTB8ZmVbMTg1OTFdLGgwKEE9MHxvYyg4NzIwMSxBLDApLDg3MjMwLDI4MCwxKSxm''@;'; put 'put ''dW5jdGlvbiBFaShsLGMsZil7dmFyIHA7Y3w9MCxmfD0wLHA9MHxNdChsfD0wLDEyKSxhW3A+PjJdPWMsYVtwKzQ+PjJdPWYsYVtwKzg+PjJdPWFbKGY9NDgrKDB8YVtsKzY0Pj4yXSl8MCk+PjJdLGFbZj4+Ml09cH0oQSwxNzQwNCwxNzM0NCksdFUobCksKGY9MHxMaShsLDg2OTc0KSk/cD1+''@;'; put 'put ''figra3AoZikqKygwfEdvKGwpKSk6cD0yMTQ3NDgzNjQ3LEVJKGwsMCksZnVuY3Rpb24geEkobCxjKXtsfD0wLGN8PTA7dmFyIGY9MCxwPTA7Zm9yKGFbNDY3NDddPTAsZj0wfER0KGwpO2Y7KSgwfEpoKGYpKT09KDB8ZikmJihwPTB8aHkoYywwfHRpKGYpKSxhWzE0OCsoMHxhW2YrMTY+PjJd''@;'; put 'put ''KT4+Ml09cCksZj0wfHp0KGwsZik7Zm9yKGY9MHxEdChsKTtmOykwfGFbMTQ4KygwfGFbKGM9ZisxNnwwKT4+Ml0pPj4yXXx8KHA9MHxhWzE0OCsoMHxhWzE2KygwfEpoKGYpKT4+Ml0pPj4yXSxhWzE0OCsoMHxhW2M+PjJdKT4+Ml09cCksZj0wfHp0KGwsZil9KGwsQSksZnVuY3Rpb24gWDBl''@;'; put 'put ''KGwsYyl7Y3w9MDt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MDtmb3Iodz0wfER0KGx8PTApO3c7KXtmb3IoZj0wfGFbMTQ4KygwfGFbdysxNj4+Ml0pPj4yXSxiPTB8dzAobCx3KTtiOyl7ZG97aWYoMD09KDB8cTBlKGIpKSYmKGs9YistNDh8MCwoMHxmKSE9KDB8KE09MHxh''@;'; put 'put ''WzE0OCsoMHxhWzE2KygwfEpoKDB8YVsoMj09KDMmYVtiPj4yXXwwKT9iOmspKzQwPj4yXSkpPj4yXSk+PjJdKSkpKXtpZihBPWIrNDh8MCxwPSgzPT0oMHwobT0zJmFbYj4+Ml0pKT9iOkEpKzQwfDAsbT0wfGFbMjEyKygwfGFbMTYrKDB8YVsoMj09KDB8bSk/YjprKSs0MD4+Ml0pPj4yXSk+''@;'; put 'put ''PjJdLDB8ZW9lKGIpKXsoMHwobT0wfEpoKDB8YVtwPj4yXSkpKSE9KDB8YVsyMTIrKDB8YVsxNisoMHxhWzIxMisoMHxhWzE2KygwfGFbKDM9PSgwfChwPTMmYVtiPj4yXSkpP2I6QSkrNDA+PjJdKT4+Ml0pPj4yXSk+PjJdKT4+Ml0pJiYoMHwoQT0wfEpoKDB8YVsoMj09KDB8cCk/YjprKSs0''@;'; put 'put ''MD4+Ml0pKSkhPSgwfGFbMjA4KygwfGFbMTYrKDB8YVsyMTIrKDB8YVsxNisoMHxhWygyPT0oMyZhW2I+PjJdfDApP2I6aykrNDA+PjJdKT4+Ml0pPj4yXSk+PjJdKT4+Ml0pP3A9TToocD1mLGY9TSksZlUoYyxmLHAsYik7YnJlYWt9aWYoMD09KDB8QUgoMHxhWzIxMisoMHxhWzE2KygwfGFb''@;'; put 'put ''cD4+Ml0pPj4yXSk+PjJdKSkmJjA9PSgwfEFIKG0pKSl7ZlUoYyxmLE0sYik7YnJlYWt9SUkoYyxmLE0sYik7YnJlYWt9fXdoaWxlKDApO2I9MHxTMChsLGIpfXc9MHx6dChsLHcpfX0obCxBKSxzVShsLEEsMCwwKSxmdW5jdGlvbiBLMGUobCl7dmFyIGM9MCxmPTA7Zm9yKGM9MHxEdChsfD0w''@;'; put 'put ''KTtjOylmZVsxNTgrKGY9MHxhW2MrMTY+PjJdKT4+MF09MCxmZVtmKzE1Nz4+MF09MCxjPTB8enQobCxjKTtmb3IoYz0wfER0KGwpO2M7KWR5KGwsYyksYz0wfHp0KGwsYyl9KEEpLG09MHxmdW5jdGlvbiAkMGUobCl7dmFyIGM9MCxmPTAscD0wLG09MDtmb3IoYz0wfER0KGx8PTApO2M7KWFb''@;'; put 'put ''MTI4KygwfGFbYysxNj4+Ml0pPj4yXT0wLGM9MHx6dChsLGMpO2ZvcihjPTAscD0wfER0KGwpO3A7KWY9YysxfDAsMHxhWzEyOCsoMHxhW3ArMTY+PjJdKT4+Ml18fChmeShsLHAsZiksYz1mKSxwPTB8enQobCxwKTtlOmRve2lmKCgwfGMpPjEpZm9yKG09MHxoeShsLDg3MjQ2KSxmPTEscD0w''@;'; put 'put ''fER0KGwpOzspe2lmKCFwKWJyZWFrIGU7KDB8YVsxMjgrKDB8YVtwKzE2Pj4yXSk+PjJdKT09KDB8ZikmJihLYShsLG0scCwwLDEpLGY9ZisxfDApLHA9MHx6dChsLHApfX13aGlsZSgwKTtyZXR1cm4gMHxjfShBKSxmdW5jdGlvbiBUSShsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAs''@;'; put 'put ''Yj0wO2ZvcihBPTB8RHQobHw9MCk7QTspe2Zvcih3PUErMTZ8MCxtPTB8dzAobCxBKTttOyljPShmPTB8YVsxODArKGM9MHxhW3c+PjJdKT4+Ml0pPzB8VjAoZiw4KyhhW2MrMTg0Pj4yXTw8Mil8MCk6MHxRbig4KyhhW2MrMTg0Pj4yXTw8Mil8MCksYVsxODArKGY9MHxhW3c+PjJdKT4+Ml09''@;'; put 'put ''YyxhWyhmPWYrMTg0fDApPj4yXT0xKyhwPTB8YVtmPj4yXSksYVtjKyhwPDwyKT4+Ml09bSxhWygwfGFbMTgwKyhwPTB8YVt3Pj4yXSk+PjJdKSsoYVtwKzE4ND4+Ml08PDIpPj4yXT0wLHA9bSstNDh8MCxjPShmPTB8YVsxNzIrKGM9MHxhWzE2KygwfGFbKDI9PSgzJmFbbT4+Ml18MCk/bTpw''@;'; put 'put ''KSs0MD4+Ml0pPj4yXSk+PjJdKT8wfFYwKGYsOCsoYVtjKzE3Nj4+Ml08PDIpfDApOjB8UW4oOCsoYVtjKzE3Nj4+Ml08PDIpfDApLGFbMTcyKygwfGFbMTYrKDB8YVsoMj09KDMmYVttPj4yXXwwKT9tOnApKzQwPj4yXSk+PjJdKT4+Ml09YyxjPTB8YVsxNzIrKGI9MHxhWzE2KygwfGFbKDI9''@;'; put 'put ''PSgzJmFbbT4+Ml18MCk/bTpwKSs0MD4+Ml0pPj4yXSk+PjJdLGFbKGI9YisxNzZ8MCk+PjJdPTErKGY9MHxhW2I+PjJdKSxhW2MrKGY8PDIpPj4yXT1tLGFbKDB8YVsxNzIrKHA9MHxhWzE2KygwfGFbKDI9PSgzJmFbbT4+Ml18MCk/bTpwKSs0MD4+Ml0pPj4yXSk+PjJdKSsoYVtwKzE3Nj4+''@;'; put 'put ''Ml08PDIpPj4yXT0wLG09MHxTMChsLG0pO0E9MHx6dChsLEEpfX0oQSksMHxjJiYoYlUoQSksbVUoQSkpLHBRKEEsMSxwLGY9KGY9MHxMaShsLDEwMjU4NikpPzB8cjMoZik6LTEpLGZ1bmN0aW9uIHVVKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxE''@;'; put 'put ''PTAsUj0wO2l0WzIzNisoUj0wfGFbKEQ9MTYrKGx8PTApfDApPj4yXSk+PjFdPTMyNzY3LGl0W1IrMjM4Pj4xXT0tMTtlOmRve2lmKCgwfGYpPjEpZm9yKG09MHx2cig0KyhmPDwyKXwwKSxwPWYrMXwwLGY9MTs7KXtpZigoMHxmKT09KDB8cCkpe009bSxSPW07YnJlYWsgZX1hW20rKGY8PDIp''@;'; put 'put ''Pj4yXT0zMjc2NyxmPWYrMXwwfWVsc2UgTT0wLFI9MH13aGlsZSgwKTtmb3IoQT0wPT0oMHxNKSxtPTB8RHQobCk7bTspdz0wfGFbMTYrKDB8YVsxNDgrKDB8YVsxNisoMHxKaChtKSk+PjJdKT4+Ml0pPj4yXSxhWzIzMisoaz0wfGFbbSsxNj4+Ml0pPj4yXT1iPTB8YVt3KzIzMj4+Ml0sKDB8''@;'; put 'put ''Yik+KDB8aXRbKHA9MjM4KyhmPTB8YVtEPj4yXSl8MCk+PjFdKSYmKGl0W3A+PjFdPWIpLCgwfGIpPCgwfGl0WyhmPWYrMjM2fDApPj4xXSkmJihpdFtmPj4xXT1iKSxBfHwoYVtrKzEyOD4+Ml09dz0wfGFbdysxMjg+PjJdLGFbKGs9TSsodzw8Mil8MCk+PjJdPSgwfCh3PTB8YVtrPj4yXSkp''@;'; put 'put ''PCgwfGIpP3c6YiksbT0wfHp0KGwsbSk7dz0wIT0oMHxNKTtlOmRve2lmKHcpZm9yKGY9MHxEdChsKTs7KXtpZighZil7Zj0xO2JyZWFrIGV9YVsoRD0yMzIrKGs9MHxhW2YrMTY+PjJdKXwwKT4+Ml09KDB8YVtEPj4yXSktKDB8YVtNKyhhW2srMTI4Pj4yXTw8Mik+PjJdKSxmPTB8enQobCxm''@;'; put 'put ''KX1lbHNlIGlmKE09MHxpdFsyMzYrKDB8YVtEPj4yXSk+PjFdLHA9TTw8MTY+PjE2LE08PDE2Pj4xNj4wKXtmb3IoZj0wfER0KGwpO2Y7KWFbKE09MjMyKygwfGFbZisxNj4+Ml0pfDApPj4yXT0oMHxhW00+PjJdKS1wLGY9MHx6dChsLGYpO2l0WyhEPTIzNisoZj0wfGFbRD4+Ml0pfDApPj4x''@;'; put 'put ''XT0oMHxocltEPj4xXSktcCxpdFsoZj1mKzIzOHwwKT4+MV09KDB8aHJbZj4+MV0pLXAsZj0wfWVsc2UgZj0wfXdoaWxlKDApO2ZvcihpayhsLGYpLEE9MHxEdChjKTtBOykobT0wfGFbMTcyKyhmPTB8YVsocD1BKzE2fDApPj4yXSk+PjJdKSYmKEZ0KG0pLGY9MHxhW3A+PjJdKSwwfChmPTB8''@;'; put 'put ''YVtmKzE4MD4+Ml0pJiZGdChmKSxBPTB8enQoYyxBKTtmb3IoRnQoMHxhWzExMisoMHxhWzE2KygwfER0KGwpKT4+Ml0pPj4yXSksZj0wfER0KGwpO2Y7KWFbMTEyKygwfGFbZisxNj4+Ml0pPj4yXT0wLGY9MHx6dChsLGYpO3cmJkZ0KFIpfShsLEEsbSksQzEoQSksbGU9d30obCxjKSk6RzBl''@;'; put 'put ''KGwsYyksbGU9cH1mdW5jdGlvbiBHMGUobCxjKXtjfD0wO3ZhciBwLG0sQSxmPTAsdz0wLGI9MDtBPWxlLGxlPWxlKzMyfDAsbT1BKzE2fDAscD1BKzh8MCxmPUEsdFUobHw9MCk7ZG97aWYoYyl7aWYoYlUobCksbVUobCksY3kobCxsKSxSSShsKSxtNyhmLGwpLGY9MHxhWyhiPWYpKzQ+PjJd''@;'; put 'put ''LGFbKHc9cCk+PjJdPWFbYj4+Ml0sYVt3KzQ+PjJdPWYsSUgobCwwKSwoMHxhWzIyMCsodz0wfGFbbCsxNj4+Ml0pPj4yXSk8PTEmJigwfGFbdysxODA+PjJdKTw9MClicmVhazthW2MrMzI+PjJdPTEsYz0wfWVsc2UgY3kobCxsKSxSSShsKSxtNyhmLGwpLGY9MHxhWyh3PWYpKzQ+PjJdLGFb''@;'; put 'put ''KGM9cCk+PjJdPWFbdz4+Ml0sYVtjKzQ+PjJdPWYsSUgobCwwKSxjPTB9d2hpbGUoMCk7KGZ1bmN0aW9uIGRVKGwpe3ZhciBwLGM9MCxmPTAsbT0wO2ZvcihwPTE2KyhsfD0wKXwwLGY9MDshKCgwfGYpPj0oMHxhWzIyMCsobD0wfGFbcD4+Ml0pPj4yXSkpOyl7Zm9yKGFbbCsxOTI+PjJdPWM9''@;'; put 'put ''MHxhWygwfGFbbCsyMTY+PjJdKSsoZjw8Mik+PjJdLGM9bD1jO2M7KWZlWzE1NysobT0wfGFbYysxNj4+Ml0pPj4wXT0wLGM9MHxhW20rMTY0Pj4yXTtmb3IoO2w7KXBVKGwpLGw9MHxhWzE2NCsoMHxhW2wrMTY+PjJdKT4+Ml07Zj1mKzF8MH19KShsKSxhW20+PjJdPWFbcD4+Ml0sYVttKzQ+''@;'; put 'put ''PjJdPWFbcCs0Pj4yXSwwfGZ1bmN0aW9uIFcwZShsLGMpe2N8PTA7dmFyIGIsZj0wLHA9MCxtPTAsQT0wLHc9MCxrPTAsTT0wOzA9PSgwfGFbMjI4Kyh3PTB8YVsoYj0xNisobHw9MCl8MCk+PjJdKT4+Ml0pJiYwPT0oMHxhW3crMjI0Pj4yXSk/Yz0wOmY9MztlOmRve2lmKDM9PSgwfGYpKWZv''@;'; put 'put ''cihtPTB8RHQobCksdz1jKzR8MCxBPTY1NTM1JmFbYz4+Ml0sYz0wOzspe2lmKCFtKWJyZWFrIGU7KDB8bSk9PSgwfGcxKG0pKSYmKDA9PSgwfGFbMTg0KyhmPTB8YVsocD1tKzE2fDApPj4yXSk+PjJdKSYmISgwPT0oMHwoaz0wfGFbMjI4KygwfGFbYj4+Ml0pPj4yXSkpfCgwfG0pPT0oMHxr''@;'; put 'put ''KSkmJihjPTB8SmMobSxrLDApLGl0WzE3MCsoZj0wfGFbYysxNj4+Ml0pPj4xXT1hW3c+PjJdLGFbZisxNTY+PjJdPTAsZj0wfGFbcD4+Ml0pLDA9PSgwfGFbZisxNzY+PjJdKSYmISgwPT0oMHwoTT0wfGFbMjI0KygwfGFbYj4+Ml0pPj4yXSkpfCgwfG0pPT0oMHxNKSkmJihjPTB8SmMoTSxt''@;'; put 'put ''LDApLGl0WzE3MCsocD0wfGFbYysxNj4+Ml0pPj4xXT1BLGFbcCsxNTY+PjJdPTApKSxtPTB8enQobCxtKX19d2hpbGUoMCk7cmV0dXJuIDAhPSgwfGMpfDB9KGwsbSkmJklIKGwsMCksYz9mdW5jdGlvbiBsb2UobCxjKXt2YXIgdyxiLGssTSxxLGY9MCxwPTAsbT0wLEE9MCxHPTA7Zm9yKHE9''@;'; put 'put ''bGUsbGU9bGUrMTZ8MCxiPTB8YVsyNCsoY3w9MCk+PjJdLGZ1bmN0aW9uIHNvZShsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MDtmb3IoYVs0Njc1Ml09MHxRbigyNCooMHxHbyhsfD0wKSl8MCksYVs0Njc1MV09MCxjPTB8RHQobCk7YzspYVsxMjAr''@;'; put 'put ''KDB8YVtjKzE2Pj4yXSk+PjJdPS0xLGM9MHx6dChsLGMpO2Zvcih3PTB8RHQobCk7dzspe2I9dysxNnwwO2Rve2lmKDB8YVsyMTYrKDB8YVtiPj4yXSk+PjJdKXtpZihBPTB8ZzEodyksKDB8KGY9MHxhWzEyMCsoYz0wfGFbKGs9QSsxNnwwKT4+Ml0pPj4yXSkpPi0xKXttPTB8YVsoQT0wfGFb''@;'; put 'put ''NDY3NTJdKSsoMjQqZnwwKT4+Ml0sYVsocD1BKygyNCpmfDApKzR8MCk+PjJdPTErKGs9MHxhW3A+PjJdKSxhW20rKGs8PDIpPj4yXT13LGs9MHxhW2I+PjJdLF9bKGI9QSsoMjQqZnwwKSs4fDApPj4zXT0rX1tiPj4zXSsgK19bayszMj4+M10sX1soYj1BKygyNCpmfDApKzE2fDApPj4zXT0o''@;'; put 'put ''TT0rX1tiPj4zXSk8KEQ9K19bays0MD4+M10pP0Q6TSxhW2srMTIwPj4yXT1mO2JyZWFrfWY9MHx2cihhW2MrMjE2Pj4yXTw8MiksYVsoYz0ocD0wfGFbNDY3NTJdKSsoMjQqKG09MHxhWzQ2NzUxXSl8MCl8MCk+PjJdPWYsYVtmPj4yXT1BLCgwfEEpPT0oMHx3KT8oX1twKygyNCptfDApKzg+''@;'; put 'put ''PjNdPStfWzMyKygwfGFbaz4+Ml0pPj4zXSxmPTEsYz13KTooYVs0KygwfGFbYz4+Ml0pPj4yXT13LF9bcCsoMjQqbXwwKSs4Pj4zXT0rX1szMisoYz0wfGFbYj4+Ml0pPj4zXSsgK19bMzIrKFI9MHxhW2s+PjJdKT4+M10sZj0yLGM9K19bUis0MD4+M108K19bYys0MD4+M10/dzpBKSxhW3Ar''@;'; put 'put ''KDI0Km18MCkrND4+Ml09ZixfW3ArKDI0Km18MCkrMTY+PjNdPStfWzQwKygwfGFbYysxNj4+Ml0pPj4zXSxhWzEyMCsoMHxhW2s+PjJdKT4+Ml09bSxhWzEyMCsoMHxhW2I+PjJdKT4+Ml09bSxhWzQ2NzUxXT1tKzF9ZWxzZSBtPTB8dnIoNCksYVsoQT0wfGFbNDY3NTJdKSsoMjQqKGs9MHxh''@;'; put 'put ''WzQ2NzUxXSl8MCk+PjJdPW0sYVttPj4yXT13LGFbQSsoMjQqa3wwKSs0Pj4yXT0xLF9bQSsoMjQqa3wwKSs4Pj4zXT0rX1szMisoYj0wfGFbYj4+Ml0pPj4zXSxfW0ErKDI0Kmt8MCkrMTY+PjNdPStfW2IrNDA+PjNdLGFbYisxMjA+PjJdPWssYVs0Njc1MV09aysxfXdoaWxlKDApO3c9MHx6''@;'; put 'put ''dChsLHcpfX0obHw9MCksTT1jKzh8MCx3PTFeKGs9LTE9PSgwfGIpKSxtPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MixBPTA7a3woMHxBKTwoMHxiKTspe2ZvcihmPTB8RHQobCk7ZjspYVsyMzIrKDB8YVtmKzE2Pj4yXSk+PjJdPTAsZj0wfHp0KGwsZik7aWYocEgobCkscD0rdlUobCksX1tNPj4z''@;'; put 'put ''XT1wLCEoIShwPD0rX1tjPj4zXSkmKCEobTw9cCl8dykpKXtHPTk7YnJlYWt9dW9lKGwpLG09cCxBPUErMXwwfTk9PSgwfEcpJiYoYVtjKzE2Pj4yXT1hWyhHPWMrMjB8MCk+PjJdLGFbRz4+Ml09QSkscEgobCksT0kobCksZnVuY3Rpb24gQ0goKXt2YXIgTSxELGw9MCxjPTAsZj0wLHA9MCxt''@;'; put 'put ''PTAsQT0wLHc9MCxiPTAsaz0wLFI9MDtmb3IoTT0wfGFbNDY3NDldLEQ9MHxhWzQ2NzUwXSxrPTAsYz0wLGw9MDshKCgwfGspPj0oMHxNKSk7KXtmPUQrKDQwKmt8MCl8MCxiPTB8YVtEKyg0MCprfDApKzEyPj4yXSxwPTA9PSgwfGMpO2U6ZG97aWYoYil7aWYocCljPTA7ZWxzZSBpZigoMHxh''@;'; put 'put ''W2Y+PjJdKT4oMHxsKSlmb3IobT1EKyg0MCprfDApKzR8MCxmPTA7Oyl7aWYoKDB8Zik+PSgwfGIpKWJyZWFrIGU7Zm9yKHc9MHxhWzQrKEE9MHxhWygwfGFbbT4+Ml0pKyhmPDwyKT4+Ml0pPj4yXSxwPTA7ISgoMHxwKT49KDB8dykpOylhWyhSPTIzMisoMHxhWzE2KygwfGFbKDB8YVtBPj4y''@;'; put 'put ''XSkrKHA8PDIpPj4yXSk+PjJdKXwwKT4+Ml09KDB8YVtSPj4yXSktYyxwPXArMXwwO2Y9ZisxfDB9fWVsc2UgcCYmKGw9MHxhW2Y+PjJdKSxjPWMrMXwwfXdoaWxlKDApO2s9aysxfDB9fSgpLF9bTT4+M109K3ZVKGwpLGxlPXF9KGwsYyk6cEgobCksZnVuY3Rpb24gWTBlKGwsYyl7Y3w9MDt2''@;'; put 'put ''YXIgYixmPTAscD0wLG09MCxBPTAsdz0wO3A9MHxEdChsfD0wKSxmPTB8YVsoYj1sKzE2fDApPj4yXTtlOmRve2lmKHApe2ZvcihpdFtmKzIzNj4+MV09MzI3NjcsaXRbZisyMzg+PjFdPS0xLHc9MD09KDB8Yyk7cDspe2Y9MHxnMShwKSxjPTB8YVsyMzIrKEE9MHxhW3ArMTY+PjJdKT4+Ml07''@;'; put 'put ''ZG97aWYoKDB8ZikhPSgwfHApKXtpZighdyl7aWYoYylicmVhaztjPTB9YVtBKzIzMj4+Ml09Yz1jKygwfGFbMjMyKygwfGFbZisxNj4+Ml0pPj4yXSl8MH19d2hpbGUoMCk7c3dpdGNoKCgwfGMpPigwfGl0WyhtPTIzOCsoZj0wfGFbYj4+Ml0pfDApPj4xXSkmJihpdFttPj4xXT1jKSwoMHxj''@;'; put 'put ''KTwoMHxpdFsoZj1mKzIzNnwwKT4+MV0pJiYoaXRbZj4+MV09YyksMHxmZVtBKzE1OT4+MF0pe2Nhc2UgNjpjYXNlIDA6YnJlYWs7ZGVmYXVsdDpyZyhwKX1wPTB8enQobCxwKX1pZigoMHx5YShsKSk9PSgwfGwpKXtpZigxMDAhPSgwfGFbNDcxMzVdKSl7UTBlKGwpO2JyZWFrfWZvcihjPTE7''@;'; put 'put ''Oyl7aWYoKDB8Yyk+KDB8YVsxODArKGY9MHxhW2I+PjJdKT4+Ml0pKWJyZWFrIGU7clUoMHxhWygwfGFbZisxODQ+PjJdKSsoYzw8Mik+PjJdKSxjPWMrMXwwfX19ZWxzZSBpdFtmKzIzOD4+MV09MCxpdFtmKzIzNj4+MV09MH13aGlsZSgwKX0obCxjKSxmdW5jdGlvbiBVMGUobCl7dmFyIGIs''@;'; put 'put ''Yz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsaz0wLE09MCxEPTA7Zm9yKGI9MTYrKGx8PTApfDAsZj0wOyEoKDB8Zik+PSgwfGFbMjIwKyhjPTB8YVtiPj4yXSk+PjJdKSk7KXtmb3IoYVtjKzE5Mj4+Ml09dz0wfGFbKDB8YVtjKzIxNj4+Ml0pKyhmPDwyKT4+Ml0sYz13O2M7KW5VKDE3MisoMHxh''@;'; put 'put ''Wyh3PWMrMTZ8MCk+PjJdKXwwKSxuVSgxODArKDB8YVt3Pj4yXSl8MCksZmVbMTU3Kyh3PTB8YVt3Pj4yXSk+PjBdPTAsYz0wfGFbdysxNjQ+PjJdO2Y9ZisxfDB9Zm9yKHc9MHxEdChsKTt3Oyl7Zm9yKEE9MHx3MChsLHcpO0E7KXtpZigwIT0oMHwobT0wfGFbMTcyKyhjPTB8YVsocD1BKzE2''@;'; put 'put ''fDApPj4yXSk+PjJdKSkmJigwfEEpPT0oMHxhWzExNisoMHxhWyhrPW0rMTZ8MCk+PjJdKT4+Ml0pKXtmb3IoYz0wfER0KGwpO2M7KXtmb3IoZj0wfHcwKGwsYyk7ZjspKDB8QSkhPSgwfGYpJiYwIT0oMHwoRD0wfGFbKE09MTcyKygwfGFbZisxNj4+Ml0pfDApPj4yXSkpJigwfG0pPT0oMHxE''@;'; put 'put ''KSYmKGFbTT4+Ml09MCksZj0wfFMwKGwsZik7Yz0wfHp0KGwsYyl9RnQoMHxhW2s+PjJdKSxGdChtKSxjPTB8YVtwPj4yXX1hW2MrMTcyPj4yXT0wLEE9MHxTMChsLEEpfXc9MHx6dChsLHcpfUZ0KDB8YVsyMTYrKDB8YVtiPj4yXSk+PjJdKSxhWzIxNisoRD0wfGFbYj4+Ml0pPj4yXT0wLGFb''@;'; put 'put ''RCsyMjA+PjJdPTB9KGwpLGxlPUF9ZnVuY3Rpb24gdFUobCl7dmFyIGM9MCxmPTAscD0wO2lmKDEmZmVbMTEzKygwfGFbMTYrKDB8YVs2MCsobHw9MCk+PjJdKT4+Ml0pPj4wXSl7Zm9yKGY9MHxEdChsKTtmOyl7Zm9yKGM9MHx3MChsLGYpO2M7KWl0WyhwPTE3MCsoMHxhW2MrMTY+PjJdKXww''@;'; put 'put ''KT4+MV09KDB8aHJbcD4+MV0pPDwxLGM9MHxTMChsLGMpO2Y9MHx6dChsLGYpfWFbKHA9MjUyKygwfGFbbCsxNj4+Ml0pfDApPj4yXT0oMSsoMHxhW3A+PjJdKXwwKS8yfDB9fWZ1bmN0aW9uIGN5KGwsYyl7bHw9MDt2YXIgZj0wO2ZvcihjPTB8d3MoY3w9MCk7Yzspe2Y9MHxKMGUoYyk7ZG97''@;'; put 'put ''aWYoZil7aWYoNz09KDB8ZikmMTAwPT0oMHxhWzQ3MTM1XSkpe2lVKGwsYyk7YnJlYWt9Z0gobCxjLGYpO2JyZWFrfWN5KGwsYyl9d2hpbGUoMCk7Yz0wfEVzKGMpfX1mdW5jdGlvbiBtNyhsLGMpe2x8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDtjPTB8YVsyMjgrKGY9MHxh''@;'; put 'put ''Wyh3PTE2KyhjfD0wKXwwKT4+Ml0pPj4yXSxwPTA9PSgwfChmPTB8YVtmKzIyND4+Ml0pKSxjP209cD81OjQ6cD8oYj0wLGs9MCk6bT00LDQ9PSgwfG0pJiYoYz0wfGcxKGYpLGFbMjI0KyhmPTB8YVt3Pj4yXSk+PjJdPWMsKGM9MHxhW2YrMjI4Pj4yXSk/bT01OihBPTAsYz1mLG09MTIpKTtk''@;'; put 'put ''b3tpZig1PT0oMHxtKSlpZihjPTB8ZzEoYyksYVsyMjgrKGY9MHxhW3c+PjJdKT4+Ml09YyxjKXtmb3IocD01PT0oMHxmZVsxNTkrKGM9MHxhWyhmPWMrMTZ8MCk+PjJdKT4+MF0pJjE7Oyl7aWYoIShjPTB8YVthW2MrMTgwPj4yXT4+Ml0pKXttPTExO2JyZWFrfWlmKCgwfChBPTB8YVsoMj09''@;'; put 'put ''KDMmYVtjPj4yXXwwKT9jOmMrLTQ4fDApKzQwPj4yXSkpIT0oMHxnMShBKSkpe209OTticmVha31MSShjKSxjPTB8YVtmPj4yXX1pZig5PT0oMHxtKSlQcig4NzA5NCw4NzAzNCwzNDYsODcxMjYpO2Vsc2UgaWYoMTE9PSgwfG0pKXtBPXAsYz0wfGFbdz4+Ml0sbT0xMjticmVha319ZWxzZSBB''@;'; put 'put ''PTAsYz1mLG09MTJ9d2hpbGUoMCk7ZTpkb3tpZigxMj09KDB8bSkpaWYoYz0wfGFbYysyMjQ+PjJdLGMpe2ZvcihwPTM9PSgwfGZlWzE1OSsoYz0wfGFbKGY9YysxNnwwKT4+Ml0pPj4wXSkmMTs7KXtpZighKGM9MHxhW2FbYysxNzI+PjJdPj4yXSkpe2I9cCxrPUE7YnJlYWsgZX1pZigoMHwo''@;'; put 'put ''dz0wfGFbKDM9PSgzJmFbYz4+Ml18MCk/YzpjKzQ4fDApKzQwPj4yXSkpIT0oMHxnMSh3KSkpYnJlYWs7TEkoYyksYz0wfGFbZj4+Ml19UHIoODcxMzksODcwMzQsMzUzLDg3MTI2KX1lbHNlIGI9MCxrPUF9d2hpbGUoMCk7YVtsPj4yXT1iLGFbbCs0Pj4yXT1rfWZ1bmN0aW9uIG5VKGwpe3Zh''@;'; put 'put ''ciBmLGM9MDtmb3IoYz0wfGFbKGY9NCsobHw9MCl8MCk+PjJdOyEoKDB8Yyk8PS0xKTspYVsoMHxhW2w+PjJdKSsoYzw8Mik+PjJdPTAsYz1jKy0xfDA7YVtmPj4yXT0wfWZ1bmN0aW9uIHJVKGwpe3ZhciBjLHAsZj0wO2ZvcihpdFsobD0yMzYrKGY9MHxhWyhjPTE2KyhsfD0wKXwwKT4+Ml0p''@;'; put 'put ''fDApPj4xXT0ocD0wfGFbMjMyKygwfGFbMTYrKDB8YVtmKzI2ND4+Ml0pPj4yXSk+PjJdKSsoMHxocltsPj4xXSksaXRbKGw9ZisyMzh8MCk+PjFdPXArKDB8aHJbbD4+MV0pLGw9MTshKCgwfGwpPigwfGFbZisxODA+PjJdKSk7KXJVKDB8YVsoMHxhW2YrMTg0Pj4yXSkrKGw8PDIpPj4yXSks''@;'; put 'put ''bD1sKzF8MCxmPTB8YVtjPj4yXX1mdW5jdGlvbiBRMGUobCl7dmFyIGM9MDtmb3IoYz0wfHdzKDB8eWEobHw9MCkpO2M7KTc9PSgwfGZlWzI3NCsoMHxhW2MrMTY+PjJdKT4+MF0pJiZpVShsLGMpLGM9MHxFcyhjKX1mdW5jdGlvbiBpVShsLGMpe3ZhciBmO2x8PTAsZj0yMDArKDB8YVsxNiso''@;'; put 'put ''Y3w9MCk+PjJdKXwwO2Rve2lmKDA9PSgwfGFbZj4+Ml0pJiYoYVtmPj4yXT1sLG9VKGwsYyksMHxEdChjKSkpe2lmKGFVKGwsYyksMTAwPT0oMHxhWzQ3MTM1XSkpe0cwZShjLDApLGxVKGMpO2JyZWFrfXFZKGMpO2JyZWFrfX13aGlsZSgwKX1mdW5jdGlvbiBvVShsLGMpe3ZhciBBLGY9MCxw''@;'; put 'put ''PTAsbT0wLHc9MCxiPTAsaz0wO2ZvcihBPTE2KyhsfD0wKXwwLG09MHxEdChjfD0wKTttOylpZih3PTB8enQoYyxtKSwwfGZlWzE1OSsoMHxhWyhiPW0rMTZ8MCk+PjJdKT4+MF0pb2koYyxtKSxtPXc7ZWxzZXtmb3IocD0xOyEoKDB8cCk+PSgwfChsPTB8YVsxODArKGY9MHxhW0E+PjJdKT4+''@;'; put 'put ''Ml0pKSk7KXtpZigwfE5yKDB8YVsoMHxhW2YrMTg0Pj4yXSkrKHA8PDIpPj4yXSxtKSl7az03O2JyZWFrfXA9cCsxfDB9Nz09KDB8aykmJihrPTAsbD0wfGFbMTgwKygwfGFbQT4+Ml0pPj4yXSksKDB8cCk8KDB8bCkmJm9pKGMsbSksYVsyMTIrKDB8YVtiPj4yXSk+PjJdPTAsbT13fWZvcihm''@;'; put 'put ''PTB8RHQoYyk7Zjspe2ZvcihsPTB8dzAoMHx5YShjKSxmKTtsOykwfE5yKGMsMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6bCstNDh8MCkrNDA+PjJdKSYmWmQoYyxsLDEpLGw9MHxTMCgwfHlhKGMpLGwpO2Y9MHx6dChjLGYpfX1mdW5jdGlvbiBhVShsLGMpe2N8PTA7dmFyIHAsbSxBLGY9MDth''@;'; put 'put ''WyhBPTE4MCsoZj0wfGFbKHA9MTYrKGx8PTApfDApPj4yXSl8MCk+PjJdPW09MSsobD0wfGFbQT4+Ml0pfDAsbD0oZj0wfGFbZisxODQ+PjJdKT8wfEdIKGYsbCsyfDAsNCxtKTowfHZyKDgrKGw8PDIpfDApLGFbMTg0KygwfGFbcD4+Ml0pPj4yXT1sLGFbbCsobTw8Mik+PjJdPWMsZmsoYyl9''@;'; put 'put ''ZnVuY3Rpb24gbFUobCl7dmFyIG0sYz0wLGY9MCxwPTAsQT0wO2ZvcihjPTE5MisobT0wfGFbMTYrKGx8PTApPj4yXSl8MCxBPTA7Yz0wfGFbYz4+Ml07KWY9MHxhWzIzMisocD0wfGFbYysxNj4+Ml0pPj4yXT9BOjA9PSgwfGZlW3ArMTU2Pj4wXSk/YzpBLGM9cCsxNjR8MCxBPWY7Zm9yKEF8''@;'; put 'put ''fFByKDg3MDE5LDg3MDM0LDIzOCw4NzA0MSksYVttKzI2ND4+Ml09QSxjPTB8RHQobCk7Oyl7aWYoIWMpe2M9MTM7YnJlYWt9aWYoZj1jKzE2fDAsISgoMHxjKT09KDB8QSl8fCgwfGFbMjE2KygwfGFbZj4+Ml0pPj4yXSk8Mikpe2M9MTE7YnJlYWt9ZkQoYyxBKSxmZVsxNTkrKDB8YVtmPj4y''@;'; put 'put ''XSk+PjBdPTcsYz0wfHp0KGwsYyl9aWYoMTE9PSgwfGMpKVByKDg3MDU2LDg3MDM0LDI0Miw4NzA0MSk7ZWxzZSBpZigxMz09KDB8YykpcmV0dXJufWZ1bmN0aW9uIEowZShsKXt2YXIgYz0wO3JldHVybiAwfG1IKGx8PTApP2w9NzooYz0wfFNOKDB8TGkobCw4NzE3MSksMTczNTYsMTczODAp''@;'; put 'put ''LGZlWzI3NCsoMHxhW2wrMTY+PjJdKT4+MF09YyxsPWMpLDB8bH1mdW5jdGlvbiBnSChsLGMsZil7bHw9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTAsYj0wO209MHxEdChjfD0wKTtlOmRve2lmKDB8bSl7Zm9yKHc9bSsxNnwwLHA9bSxBPWI9MjU1JmY7ZmVbMTU5KygwfGFbcCsxNj4+Ml0p''@;'; put 'put ''Pj4wXT1BLHA9MHx6dChjLHApOylmRChtLHApLEE9MHxmZVsxNTkrKDB8YVt3Pj4yXSk+PjBdO3N3aXRjaCgwfGYpe2Nhc2UgMzpjYXNlIDI6KEE9MHxhWzIyNCsocD0wfGFbKGw9bCsxNnwwKT4+Ml0pPj4yXSkmJihtPTB8ZkQoQSxtKSxwPTB8YVtsPj4yXSksYVtwKzIyND4+Ml09bTticmVh''@;'; put 'put ''aztjYXNlIDU6Y2FzZSA0OihBPTB8YVsyMjgrKHA9MHxhWyhsPWwrMTZ8MCk+PjJdKT4+Ml0pJiYobT0wfGZEKEEsbSkscD0wfGFbbD4+Ml0pLGFbcCsyMjg+PjJdPW07YnJlYWs7ZGVmYXVsdDpicmVhayBlfXN3aXRjaCgwfGYpe2Nhc2UgMzpwPXArMjI0fDA7YnJlYWs7Y2FzZSA1OnA9cCsy''@;'; put 'put ''Mjh8MDticmVhaztkZWZhdWx0OmJyZWFrIGV9ZmVbMTU5KygwfGFbMTYrKDB8YVtwPj4yXSk+PjJdKT4+MF09Yn19d2hpbGUoMCl9ZnVuY3Rpb24gbUgobCl7cmV0dXJuIDA9PSgwfHMyKDB8dGkobHw9MCksMTA4MDA2LDcpKXwwfWZ1bmN0aW9uIEVJKGwsYyl7Y3w9MDt2YXIgbSxNLGY9MCxw''@;'; put 'put ''PTAsQT0wLHc9MCxiPTAsaz0wO2lmKE09bGUsbGU9bGUrMTZ8MCxtPU0sISgwfGZ1bmN0aW9uIG5vZShsKXtyZXR1cm4gMD09KDB8RHQobHw9MCkpfDB9KGx8PTApKSl7ZG97aWYoMHx2RChsKSl7aWYoYyl7YVsyMDQrKDB8YVtsKzE2Pj4yXSk+PjJdPTErKDB8YVsyMDQrKDB8YVtjKzE2Pj4y''@;'; put 'put ''XSk+PjJdKSxyb2UobCxjKSxjPWw7YnJlYWt9YVsyMDQrKDB8YVtsKzE2Pj4yXSk+PjJdPTAsYz1sO2JyZWFrfX13aGlsZSgwKTtmb3IoZj0wfHdzKGwpO2Y7KUVJKGYsYyksZj0wfEVzKGYpO2U6ZG97aWYoMHx2RChsKSlmb3IoZj0wfER0KGwpOzspe2lmKCFmKWJyZWFrIGU7MHxhWyhwPTIx''@;'; put 'put ''MisoMHxhW2YrMTY+PjJdKXwwKT4+Ml18fChhW3A+PjJdPWwpLGY9MHx6dChsLGYpfX13aGlsZSgwKTtzd2l0Y2goMHxmdW5jdGlvbiBpb2UobCl7dmFyIGM9MDtyZXR1cm4gMCE9KDB8KGw9MHxMaShsfD0wLDg3MTcxKSkpJiYwIT0oMHxmZVtsPj4wXSk/MHxaaShsLDg3MTgxKT8wfFppKGws''@;'; put 'put ''ODcxODUpPzB8WmkobCw4NzE5Mik/MHxaaShsLDg3MTk2KT8wfFppKGwsODcxNzYpP2M9ODpsPTE6bD01Omw9NDpsPTM6bD0yOmM9OCw4PT0oMHxjKSYmKGw9NiksMHxsfShsKSl7Y2FzZSAzOmZlWzI0MSsoMHxhWyhjPWMrMTZ8MCk+PjJdKT4+MF09MSxrPTE5O2JyZWFrO2Nhc2UgMjpjPWMr''@;'; put 'put ''MTZ8MCxrPTE5O2JyZWFrO2Nhc2UgNTpmZVsyNDIrKDB8YVsoYz1jKzE2fDApPj4yXSk+PjBdPTEsaz0yMTticmVhaztjYXNlIDQ6Yz1jKzE2fDAsaz0yMTticmVhaztjYXNlIDE6REkobCk7YnJlYWs7Y2FzZSA2OmJyZWFrO2RlZmF1bHQ6Zj0wfHRpKGwpLHA9MHxMaShsLDg3MTcxKSxhW20+''@;'; put 'put ''PjJdPWYsYVttKzQ+PjJdPXAsJHIoMCw4NzM1NCxtKX0xOT09KDB8ayk/KGs9MHx5SChrPTB8REkobCksMHxhWzIwOCsoMHxhW2M+PjJdKT4+Ml0pLGFbMjA4KygwfGFbYz4+Ml0pPj4yXT1rKToyMT09KDB8aykmJihrPTB8eUgoaz0wfERJKGwpLDB8YVsyMTIrKDB8YVtjPj4yXSk+PjJdKSxh''@;'; put 'put ''WzIxMisoMHxhW2M+PjJdKT4+Ml09ayksMHx2RChsKSYmMHwoYj0wfGFbMjA4Kyh3PTB8YVsoQT1sKzE2fDApPj4yXSk+PjJdKSYmKDB8Yik9PSgwfGFbdysyMTI+PjJdKSYmKGI9MHxESShsKSxhWzIwOCsoaz0wfGFbQT4+Ml0pPj4yXT1iLGFbaysyMTI+PjJdPWIpfWxlPU19ZnVuY3Rpb24g''@;'; put 'put ''c1UobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTA7aWYoMCE9KDB8dkQobHw9MCkpJiYwIT0oMHxBSChsKSkpe2ZvcihBPTB8RHQobCk7QTspMHxNZihsLEEpfHwobT0wfGFbMTQ4KygwfGFbMTYrKDB8SmgoQSkpPj4yXSk+PjJdLGZ8fChmPTB8aHkoYyw4NzI1MikpLEthKGMs''@;'; put 'put ''ZixtLDAsMSkpLDB8dzAobCxBKXx8KG09MHxhWzE0OCsoMHxhWzE2KygwfEpoKEEpKT4+Ml0pPj4yXSxwfHwocD0wfGh5KGMsODcyNTcpKSxLYShjLG0scCwwLDEpKSxBPTB8enQobCxBKTswIT0oMHxwKSYwIT0oMHxmKSYmdkgoMHxLYShjLGYscCwwLDEpLDAsMWUzKSxtPWZ9ZWxzZSBtPWY7''@;'; put 'put ''Zm9yKGY9MHx3cyhsKTtmOylzVShmLGMsbSxwKSxmPTB8RXMoZil9ZnVuY3Rpb24gSmgobCl7dmFyIGMsZixwPTA7aWYocD0wfGFbKGY9MTUyKygwfGFbKGM9MTYrKGx8PTApfDApPj4yXSl8MCk+PjJdKXtpZigoMHxwKSE9KDB8bCkpcmV0dXJuIHA9MHxKaChwKSxhWzE1MisoMHxhW2M+PjJd''@;'; put 'put ''KT4+Ml09cCwwfHB9ZWxzZSBhW2Y+PjJdPWw7cmV0dXJuIDB8bH1mdW5jdGlvbiBpayhsLGMpe2N8PTA7dmFyIHcsZj0wLHA9MCxtPTAsQT0wO2Zvcih3PTE2KyhsfD0wKXwwLGY9MTshKCgwfGYpPigwfGFbMTgwKyhwPTB8YVt3Pj4yXSk+PjJdKSk7KWlrKDB8YVsoMHxhW3ArMTg0Pj4yXSkr''@;'; put 'put ''KGY8PDIpPj4yXSwwKSxmPWYrMXwwO2lmKDAhPSgwfGMpfDAhPSgwfGFbcCsyMDA+PjJdKSl7Zm9yKGl0W3ArMjM2Pj4xXT0zMjc2NyxpdFtwKzIzOD4+MV09LTEsZj0wLEE9MHxEdChsKTtBOykoMHwobT0wfGFbMjMyKygwfGFbQSsxNj4+Ml0pPj4yXSkpPigwfGl0WyhwPTIzOCsoYz0wfGFb''@;'; put 'put ''dz4+Ml0pfDApPj4xXSkmJihpdFtwPj4xXT1tKSwoMHxtKTwoMHxpdFsoYz1jKzIzNnwwKT4+MV0pJiYoaXRbYz4+MV09bSxmPUEpLEE9MHx6dChsLEEpO2FbMjY0KygwfGFbdz4+Ml0pPj4yXT1mfX1mdW5jdGlvbiBmeShsLGMsZil7bHw9MCxmfD0wO3ZhciBwPTA7cD0xMjgrKDB8YVsxNiso''@;'; put 'put ''Y3w9MCk+PjJdKXwwO2U6ZG97aWYoISgwfGFbcD4+Ml0pKXtmb3IoYVtwPj4yXT1mLHA9MHx3MChsLGMpO3A7KWZ5KGwsMHxhWygyPT0oMyZhW3A+PjJdfDApP3A6cCstNDh8MCkrNDA+PjJdLGYpLHA9MHxTMChsLHApO2ZvcihwPTB8TWYobCxjKTs7KXtpZighcClicmVhayBlO2Z5KGwsMHxh''@;'; put 'put ''WygzPT0oMyZhW3A+PjJdfDApP3A6cCs0OHwwKSs0MD4+Ml0sZikscD0wfEYzKGwscCl9fX13aGlsZSgwKX1mdW5jdGlvbiBoeShsLGMpe3ZhciBtLGY9MCxwPTA7cmV0dXJuIG09MHxHcihsfD0wLGN8PTAsMSksYVsxNzYrKDB8YVsoYz1tKzE2fDApPj4yXSk+PjJdPTAscD0wfHZyKDIwKSxh''@;'; put 'put ''WzE3MisoZj0wfGFbYz4+Ml0pPj4yXT1wLGFbZisxODQ+PjJdPTAsZj0wfHZyKDIwKSxhWzE4MCsoYz0wfGFbYz4+Ml0pPj4yXT1mLHA9YysxNjh8MCwoZj0wfGFbNDY3NDddKT8oYVtwPj4yXT1mLGFbMTY0KygwfGFbZisxNj4+Ml0pPj4yXT1tKTooYVtwPj4yXT0wLGFbMTkyKygwfGFbbCsx''@;'; put 'put ''Nj4+Ml0pPj4yXT1tKSxhWzQ2NzQ3XT1tLGFbYysxNjQ+PjJdPTAsMHxtfWZ1bmN0aW9uIGR5KGwsYyl7bHw9MDt2YXIgQSxmPTAscD0wLG09MDtpZighKDB8ZmVbKHA9MTU3KyhmPTB8YVsoQT0xNisoY3w9MCl8MCk+PjJdKXwwKT4+MF0pKXtmb3IoZmVbcD4+MF09MSxmZVtmKzE1OD4+MF09''@;'; put 'put ''MSxjPTB8dzAobCxjKTtjOylmPTB8UzAobCxjKSwwfGZlWzE1OCsobT0wfGFbMTYrKHA9MHxhWygyPT0oMyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdKT4+Ml0pPj4wXT8oY1UobCxjKSxjPWYpOigwfGZlW20rMTU3Pj4wXXx8ZHkobCxwKSxjPWYpO2ZlWzE1OCsoMHxhW0E+PjJdKT4+''@;'; put 'put ''MF09MH19ZnVuY3Rpb24gY1UobCxjKXt2YXIgcCxmPTAsbT0wO209KGN8PTApLTQ4fDAscD1jKzQ4fDAsKGY9MHxLYShsfD0wLDB8YVsoMj09KDB8KGY9MyZhW2M+PjJdKSk/YzptKSs0MD4+Ml0sMHxhWygzPT0oMHxmKT9jOnApKzQwPj4yXSwwLDApKXx8KGY9MHxLYShsLDB8YVsoMj09KDB8''@;'; put 'put ''KGY9MyZhW2M+PjJdKSk/YzptKSs0MD4+Ml0sMHxhWygzPT0oMHxmKT9jOnApKzQwPj4yXSwwLDEpKSx2SChmLDB8aHJbMTcwKyhtPTB8YVtjKzE2Pj4yXSk+PjFdLDB8YVttKzE1Nj4+Ml0pLG9pKGwsYyl9ZnVuY3Rpb24gdkgobCxjLGYpe3ZhciBwLG07Znw9MCxpdFsocD0xNzArKGw9MHxh''@;'; put 'put ''WzE2KyhsfD0wKT4+Ml0pfDApPj4xXT0oMHwobT0wfGhyW3A+PjFdKSk+KDB8KGN8PTApKT9tOmMsYVsoYz1sKzE1NnwwKT4+Ml09KDB8YVtjPj4yXSkrZn1mdW5jdGlvbiBBSChsKXtyZXR1cm4gMjU1JigwfG5nKDB8TGkobHw9MCw4NzI2MiksMCkpfDB9ZnVuY3Rpb24gcTBlKGwpe2x8PTA7''@;'; put 'put ''dmFyIGMsZj0wO3JldHVybiAwfCgwIT0oMHwoYz0wfGFbNDcxODldKSkmJjAhPSgwfChmPTB8SG8obCxjKSkpJiYwIT0oMHxmZVtmPj4wXSkmJigwfHQxKGYpKTw8MjQ+PjI0PT0wPzE6MCl9ZnVuY3Rpb24gZW9lKGwpe3ZhciBjLGY9MDtyZXR1cm4oMHwoYz0wfGFbMjEyKygwfGFbMTYrKDB8''@;'; put 'put ''YVsoMz09KDB8KGY9MyZhWyhsfD0wKT4+Ml0pKT9sOmwrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpPT0oMHwobD0wfGFbMjEyKygwfGFbMTYrKDB8YVsoMj09KDB8Zik/bDpsKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSk/MTooZj0wfGZ1bmN0aW9uIHRvZShsLGMpe2x8PTAsY3w9MDt2YXIg''@;'; put 'put ''Zj0wLHA9MCxtPTA7ZTpmb3IoOzspe2ZvcihwPWwrMTZ8MDs7KXtpZigoMHxsKT09KDB8YykpYnJlYWsgZTtpZigoMHxhWzIwNCsobT0wfGFbcD4+Ml0pPj4yXSk+PSgwfGFbMjA0KyhmPTB8YVtjKzE2Pj4yXSk+PjJdKSlicmVhaztjPTB8YVtmKzIwMD4+Ml19bD0wfGFbbSsyMDA+PjJdfXJl''@;'; put 'put ''dHVybiAwfGx9KGMsbCksMSYoKDB8Zik9PSgwfGMpfCgwfGYpPT0oMHxsKSl8MCl9ZnVuY3Rpb24gZlUobCxjLGYscCl7cHw9MDt2YXIgQSxiLG09MCx3PTA7Yj1sZSxsZT1sZSsxNnwwLEE9YiwobT0wfEthKGx8PTAsY3w9MCxmfD0wLDAsMCkpfHwobT0wfEthKGwsZixjLDAsMCkpfHwobT0w''@;'; put 'put ''fEthKGwsYyxmLDAsMSkpP3c9NDooYz0wfHRpKGMpLHA9MHx0aShmKSxhW0E+PjJdPWMsYVtBKzQ+PjJdPXAsJHIoMSw4NzI3OSxBKSksND09KDB8dykmJnZIKG0sMHxoclsxNzArKHc9MHxhW3ArMTY+PjJdKT4+MV0sMHxhW3crMTU2Pj4yXSksbGU9Yn1mdW5jdGlvbiBJSShsLGMsZixwKXtm''@;'; put 'put ''fD0wLHB8PTA7dmFyIGssbT0wLEE9MCx3PTAsYj0wLE09MDtmb3Ioaz1sZSxsZT1sZSsxMTJ8MCx3PWssQT1rKzR8MCxtPTB8TWYobHw9MCxjfD0wKTs7KXtpZighbSl7Yj02O2JyZWFrfWlmKDB8KE09MHx3MChsLDB8YVsoMz09KDMmYVttPj4yXXwwKT9tOm0rNDh8MCkrNDA+PjJdKSkmJigw''@;'; put 'put ''fGFbKDI9PSgzJmFbTT4+Ml18MCk/TTpNKy00OHwwKSs0MD4+Ml0pPT0oMHxmKSlicmVhazttPTB8RjMobCxtKX02PT0oMHxiKSYmKGFbNDY3NDhdPTErKE09MHxhWzQ2NzQ4XSksYVt3Pj4yXT1NLG9vKEEsODcyNzAsdyksTT0wfEthKGwsQT0wfGh5KGwsQSksYywwLDEpLEE9MHxLYShsLEEs''@;'; put 'put ''ZiwwLDEpLGFbKE09MTU2KygwfGFbTSsxNj4+Ml0pfDApPj4yXT0oMHxhW00+PjJdKSsoMWUzKigwfGFbKGI9MTU2KyhmPTB8YVtwKzE2Pj4yXSl8MCk+PjJdKXwwKSxpdFsodz0xNzArKE09MHxhW0ErMTY+PjJdKXwwKT4+MV09MHxpdFsxNzArKDB8YVsoKDB8aHJbdz4+MV0pPigwfGhyW2Yr''@;'; put 'put ''MTcwPj4xXSk/QTpwKSsxNj4+Ml0pPj4xXSxhWyhNPU0rMTU2fDApPj4yXT0oMHxhW00+PjJdKSsoMHxhW2I+PjJdKSksbGU9a31mdW5jdGlvbiByb2UobCxjKXthWzIwMCsoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXT1jfD0wLGFVKGMsbCksb1UoYyxsKX1mdW5jdGlvbiBESShsKXt2YXIgYz0w''@;'; put 'put ''LGY9MDtmPTB8RHQobHw9MCk7ZTpkb3tpZihmKWZvcihjPTB8SmgoZik7Oyl7aWYoIShmPTB8enQobCxmKSkpYnJlYWsgZTt5SChjLGYpfWVsc2UgYz0wfXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24geUgobCxjKXtyZXR1cm4gbHw9MCwoY3w9MCkmJihsPTB8SmgobCksYVsxNTIrKDB8''@;'; put 'put ''YVsxNisoMHxKaChjKSk+PjJdKT4+Ml09bCksMHxsfWZ1bmN0aW9uIHdIKGwpe3ZhciBNLEQsRyxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLFI9MDtHPWxlLGxlPWxlKzI0MHwwLE09RysxMjB8MCxEPUcsYVs0NzE5M109MHxzaShsfD0wLDIsODc0MTIsMCksaz0wfHNpKGwsMiw4''@;'; put 'put ''NzQyMSwwKSxhWzQ3MTk0XT1rO2U6ZG97aWYoMCE9KDB8ayl8MCE9KDB8YVs0NzE5M10pKWZvcihrPTB8RHQobCk7Oyl7aWYoIWspYnJlYWsgZTtmb3IoYj0wLGM9MCx3PTB8TXMobCxrKTs7KXtpZighdyl7cD0wO2JyZWFrfXA9MHxhWygyPT0oMHwobT0zJihmPTB8YVt3Pj4yXSkpKT93Oncr''@;'; put 'put ''LTQ4fDApKzQwPj4yXSxBPXcrNDh8MDt0OmRve2lmKCgwfHApIT0oMHxhWygzPT0oMHxtKT93OkEpKzQwPj4yXSkpe209MHxhWzQ3MTkzXTtkb3tpZigoMHxwKT09KDB8aykmMCE9KDB8bSkpe2lmKHA9MHxIbyh3LG0pLDB8ZmVbcD4+MF0pe2Y9YixjPTB8YkgoTSxjLGssdyxwKTticmVhayB0''@;'; put 'put ''fWY9MHxhW3c+PjJdO2JyZWFrfX13aGlsZSgwKTtmPTB8KHA9MHxhWzQ3MTk0XSkmJigwfGFbKDM9PSgzJmZ8MCk/dzpBKSs0MD4+Ml0pPT0oMHxrKSYmKFI9MHxIbyh3LHApLDAhPSgwfGZlW1I+PjBdKSk/MHxiSChELGIsayx3LFIpOmJ9ZWxzZSBmPWJ9d2hpbGUoMCk7Yj1mLHc9MHxWcyhs''@;'; put 'put ''LHcsayl9Zm9yKDs7KXtpZigoMHxwKT49KDB8Yykpe2Y9MDticmVha31mPU0rKDI0KnB8MCkrNHwwLCgwfGFbTSsoMjQqcHwwKSs4Pj4yXSk+MSYmX0goayxmKSwwfChmPTB8YVtmPj4yXSkmJkZ0KGYpLHA9cCsxfDB9Zm9yKDshKCgwfGYpPj0oMHxiKSk7KWM9RCsoMjQqZnwwKSs0fDAsKDB8''@;'; put 'put ''YVtEKygyNCpmfDApKzg+PjJdKT4xJiZfSChrLGMpLDB8KGM9MHxhW2M+PjJdKSYmRnQoYyksZj1mKzF8MDtrPTB8enQobCxrKX19d2hpbGUoMCk7bGU9R31mdW5jdGlvbiBiSChsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgayxNLFIsQT0wLHc9MCxiPTAsRD0wLEc9''@;'; put 'put ''MCxxPTAscGU9MDtmb3IoUj1sZSxsZT1sZSsxNnwwLGI9UixrPVIrMTJ8MCxNPVIrOHwwLEQ9MDs7KXtpZigoMHxEKT49KDB8Yykpe3c9MTA7YnJlYWt9aWYoKDB8ZmVbKHc9MHxhW2wrKDI0KkR8MCk+PjJdKT4+MF0pPT0oMHxmZVttPj4wXSkmJjA9PSgwfFppKHcsbSkpKXt3PTU7YnJlYWt9''@;'; put 'put ''RD1EKzF8MH1kb3tpZig1PT0oMHx3KSkodz0wfGFbKGI9bCsoMjQqRHwwKSs0fDApPj4yXSk/KG09Rz1sKygyNCpEfDApKzh8MCx3PTB8VjAodyw4KyhhW0c+PjJdPDwyKXwwKSk6KG09dz1sKygyNCpEfDApKzh8MCx3PTB8UW4oOCsoYVt3Pj4yXTw8Mil8MCkpLGFbYj4+Ml09dyxhW20+PjJd''@;'; put 'put ''PUc9MSsocT0wfGFbbT4+Ml0pfDAsYVt3KyhxPDwyKT4+Ml09cCxhWygwfGFbYj4+Ml0pKyhHPDwyKT4+Ml09MCx3PTEzO2Vsc2UgaWYoMTA9PSgwfHcpKXtpZigoMHxjKT40KXtxPTB8dGkoZiksYVtiPj4yXT01LGFbYis0Pj4yXT1xLCRyKDEsODc0MzAsYik7YnJlYWt9YVsocGU9bCsoMjQq''@;'; put 'put ''RHwwKSs4fDApPj4yXT0wLGI9MHx2cig4KSxhWyhxPWwrKDI0KkR8MCkrNHwwKT4+Ml09YixhW3BlPj4yXT13PTErKEc9MHxhW3BlPj4yXSl8MCxhW2IrKEc8PDIpPj4yXT1wLGFbKDB8YVtxPj4yXSkrKHc8PDIpPj4yXT0wLGFbbCsoMjQqRHwwKT4+Ml09bSxhW2wrKDI0KkR8MCkrMTI+PjJd''@;'; put 'put ''PTAsX1tsKygyNCpEfDApKzE2Pj4zXT0wLGM9YysxfDAsdz0xMzticmVha319d2hpbGUoMCk7cmV0dXJuIDEzPT0oMHx3KSYmKERDKHAsayxNKSwodz0oMHxhWygyPT0oMyZhW3A+PjJdfDApP3A6cCstNDh8MCkrNDA+PjJdKT09KDB8Zik/MHxhW00+PjJdOjB8YVtrPj4yXSkmJihhWyhxPWwr''@;'; put 'put ''KDI0KkR8MCkrMTJ8MCk+PjJdPTErKHBlPTB8YVtxPj4yXSksQT1wZT8wOitsNyhwLHcpLF9bbCsoMjQqRHwwKSsxNj4+M109QSkpLGxlPVIsMHxjfWZ1bmN0aW9uIF9IKGwsYyl7dmFyIGdlLGJlLE9lLExlLFJlLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAs''@;'; put 'put ''cT0wLHBlPTAsSGU9MDtmb3IoUmU9bGUsbGU9bGUrODB8MCxnZT1SZSs2OHwwLGJlPVJlKzY0fDAscT1SZSxNPTB8YVsoT2U9NCsoY3w9MCl8MCk+PjJdLExlPTE2KyhsfD0wKXwwLEE9MCxSPTAsRz0wOyEoKDB8QSk+PSgwfE0pKTspKDB8KGY9MHxhWygyPT0oMHwobT0zJmFbKHA9MHxhWygw''@;'; put 'put ''fGFbYz4+Ml0pKyhBPDwyKT4+Ml0pPj4yXSkpP3A6cCstNDh8MCkrNDA+PjJdKSk9PSgwfGwpJiYoZj0wfGFbKDM9PSgwfG0pP3A6cCs0OHwwKSs0MD4+Ml0pLEE9QSsxfDAsUj0oYj0rX1sxNisobT0wfGFbZisxNj4+Ml0pPj4zXS0rX1sxNisocGU9MHxhW0xlPj4yXSk+PjNdKS8oRD0rJHko''@;'; put 'put ''YixrPStfW20rMjQ+PjNdLStfW3BlKzI0Pj4zXSkpK1IsRz1rL0QrRztmb3Iodz0rJHkoUixHKSxiPStfWzE2KyhwZT0wfGFbTGU+PjJdKT4+M10saz0rX1twZSsyND4+M10scGU9KEhlPStfW3BlKzk2Pj4zXSsgK19bcGUrODg+PjNdKT4oRD0rX1twZSs4MD4+M10pKyArKDB8YVsyNTIrKDB8''@;'; put 'put ''YVsxNisoMHxjcihsKSk+PjJdKT4+Ml0pLGY9MHxhW0xlPj4yXSxwZT9EPStfW2YrOTY+PjNdKyArX1tmKzg4Pj4zXTooRD0rX1tmKzgwPj4zXSxEKz0rKDB8YVsyNTIrKDB8YVsxNisoMHxjcihsKSk+PjJdKT4+Ml0pLGY9MHxhW0xlPj4yXSksSGU9K19bZisxNj4+M10rRCooUi93KSx3PStf''@;'; put 'put ''W2YrMjQ+PjNdK0QqKEcvdyksX1txPj4zXT1iLF9bKE09cSs4fDApPj4zXT1rLF9bcSsxNj4+M109LjMzMzMzMzMzMzMzMzMzMzMqKEhlKzIqYiksX1txKzI0Pj4zXT0uMzMzMzMzMzMzMzMzMzMzMyoodysyKmspLF9bcSszMj4+M109LjMzMzMzMzMzMzMzMzMzMzMqKDIqSGUrYiksX1txKzQw''@;'; put 'put ''Pj4zXT0uMzMzMzMzMzMzMzMzMzMzMyooMip3K2spLF9bcSs0OD4+M109SGUsX1txKzU2Pj4zXT13LGZ1bmN0aW9uIGFsZShsLGMpe2N8PTA7dmFyIGYscCxtLEEsdyxiLE0saz0wLEQ9MDtNPWxlLGxlPWxlKzQ4fDAsZj1NKzE2fDAscD1NLG09TSszMnwwLDB8KGI9MHxhWzgrKHc9MHxhWyhB''@;'; put 'put ''PTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSkmJjB8YVsxMisoMHxhWyhrPWIrNHwwKT4+Ml0pPj4yXSYmKGFbbT4+Ml09bCxhW20rND4+Ml09MCxEPStfW3crOTY+PjNdLF9bcD4+M109K19bYz4+M10tK19bdysxNj4+M10sX1twKzg+PjNdPStfW2MrOD4+M10tK19bdysyND4+M10saz0wfGFbMTIr''@;'; put 'put ''KDB8YVtrPj4yXSk+PjJdLGFbZj4+Ml09YVtwPj4yXSxhW2YrND4+Ml09YVtwKzQ+PjJdLGFbZis4Pj4yXT1hW3ArOD4+Ml0sYVtmKzEyPj4yXT1hW3ArMTI+PjJdLGs9MHxCaVsxMjcma10obSxmKSxfWzk2KygwfGFbQT4+Ml0pPj4zXT1ELGhOKG0sbCxjLGspKSxsZT1NfShsLHEpLGI9Kygw''@;'; put 'put ''fH5+KChiPStfW00+PjNdLStfWzI0KyhwZT0wfGFbTGU+PjJdKT4+M10pKyhiPj0wPy41Oi0uNSkpKSxwZT0yNTUmfn4oMjU2KigoSGU9K19bcGUrODg+PjNdKSsodz0rKDB8fn4oKHc9K19bcT4+M10tK19bcGUrMTY+PjNdKSsodz49MD8uNTotLjUpKSkpKS8oK19bcGUrOTY+PjNdK0hlKSks''@;'; put 'put ''cT0wOyEoKDB8cSk+PSgwfGFbT2U+PjJdKSk7KXtmb3IoREMoTT0wfGFbKDB8YVtjPj4yXSkrKHE8PDIpPj4yXSxnZSxiZSk7TTspe2ZvcihtPU07Oyl7aWYoIW0pe0E9TTticmVha31BPW0rLTQ4fDAsKDB8YVsoMj09KDMmKGY9MHxhW20+PjJdKXwwKT9tOkEpKzQwPj4yXSk9PSgwfGwpJiYo''@;'; put 'put ''X1s1NisoZj0wfGFbbSsxNj4+Ml0pPj4zXT13LF9bZis2ND4+M109YixfW2YrNzI+PjNdPTAsYVtmKzgwPj4yXT0wLGZlW2YrODQ+PjBdPTEsZmVbZis4NT4+MF09MCxmZVtmKzg2Pj4wXT0wLGZlW2YrODc+PjBdPTAsZmVbZis4OD4+MF09cGUsZmVbZis4OT4+MF09MCxhW2YrOTI+PjJdPTAs''@;'; put 'put ''Zj0wfGFbbT4+Ml0pLHA9bSsxNnwwLCgwfGFbKDM9PSgzJmZ8MCk/bTptKzQ4fDApKzQwPj4yXSk9PSgwfGwpJiYoX1sxNisoZj0wfGFbcD4+Ml0pPj4zXT13LF9bZisyND4+M109YixfW2YrMzI+PjNdPTAsYVtmKzQwPj4yXT0wLGZlW2YrNDQ+PjBdPTEsZmVbZis0NT4+MF09MCxmZVtmKzQ2''@;'; put 'put ''Pj4wXT0wLGZlW2YrNDc+PjBdPTAsZmVbZis0OD4+MF09cGUsZmVbZis0OT4+MF09MCxhW2YrNTI+PjJdPTApLG09MT09KDB8ZmVbMTEyKygwfGFbcD4+Ml0pPj4wXSkmJjE9PSgwfGZlWzE1NisoZj0wfGFbMTYrKDB8YVsoMj09KDMmYVttPj4yXXwwKT9tOkEpKzQwPj4yXSk+PjJdKT4+MF0p''@;'; put 'put ''JiYxPT0oMHxhW2YrMTg0Pj4yXSk/MHxhW2FbZisxODA+PjJdPj4yXTowfWZvcig7QTspKDB8YVsoMj09KDMmKGY9MHxhW0E+PjJdKXwwKT9BOkErLTQ4fDApKzQwPj4yXSk9PSgwfGwpJiYoX1s1NisoZj0wfGFbQSsxNj4+Ml0pPj4zXT13LF9bZis2ND4+M109YixfW2YrNzI+PjNdPTAsYVtm''@;'; put 'put ''KzgwPj4yXT0wLGZlW2YrODQ+PjBdPTEsZmVbZis4NT4+MF09MCxmZVtmKzg2Pj4wXT0wLGZlW2YrODc+PjBdPTAsZmVbZis4OD4+MF09cGUsZmVbZis4OT4+MF09MCxhW2YrOTI+PjJdPTAsZj0wfGFbQT4+Ml0pLHA9QSs0OHwwLG09QSsxNnwwLCgwfGFbKDM9PSgzJmZ8MCk/QTpwKSs0MD4+''@;'; put 'put ''Ml0pPT0oMHxsKSYmKF9bMTYrKGY9MHxhW20+PjJdKT4+M109dyxfW2YrMjQ+PjNdPWIsX1tmKzMyPj4zXT0wLGFbZis0MD4+Ml09MCxmZVtmKzQ0Pj4wXT0xLGZlW2YrNDU+PjBdPTAsZmVbZis0Nj4+MF09MCxmZVtmKzQ3Pj4wXT0wLGZlW2YrNDg+PjBdPXBlLGZlW2YrNDk+PjBdPTAsYVtm''@;'; put 'put ''KzUyPj4yXT0wKSxBPTE9PSgwfGZlWzExMisoMHxhW20+PjJdKT4+MF0pJiYxPT0oMHxmZVsxNTYrKGY9MHxhWzE2KygwfGFbKDM9PSgzJmFbQT4+Ml18MCk/QTpwKSs0MD4+Ml0pPj4yXSk+PjBdKSYmMT09KDB8YVtmKzE3Nj4+Ml0pPzB8YVthW2YrMTcyPj4yXT4+Ml06MDtNPTB8YVsxNzIr''@;'; put 'put ''KDB8YVtNKzE2Pj4yXSk+PjJdfXE9cSsxfDB9ZmVbMTQ1KygwfGFbTGU+PjJdKT4+MF09MSxsZT1SZX1mdW5jdGlvbiBMSShsKXt2YXIgZixwLGM9MDtZMyhsfD0wKSxmPWwrLTQ4fDAscD1sKzQ4fDAsKGM9MHxVNSgwfGFbKDI9PSgwfChjPTMmYVtsPj4yXSkpP2w6ZikrNDA+PjJdLDB8YVso''@;'; put 'put ''Mz09KDB8Yyk/bDpwKSs0MD4+Ml0pKT96NihsLGMpOkpjKDB8YVsoMj09KDB8KGM9MyZhW2w+PjJdKSk/bDpmKSs0MD4+Ml0sMHxhWygzPT0oMHxjKT9sOnApKzQwPj4yXSxsKX1mdW5jdGlvbiBwVShsKXt2YXIgbSxjPTAsZj0wLHA9MDtpZighKDB8ZmVbKGw9MTU3KyhjPTB8YVsobT0xNiso''@;'; put 'put ''bHw9MCl8MCk+PjJdKXwwKT4+MF0pKXtmb3IoZmVbbD4+MF09MSxmZVtjKzE1OD4+MF09MSxsPTA7cD0wfGFbKDB8YVtjKzE4MD4+Ml0pKyhsPDwyKT4+Ml07KTB8ZmVbMTU4KyhmPTB8YVsxNisoYz0wfGFbKDI9PSgzJmFbcD4+Ml18MCk/cDpwKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjBdPyhM''@;'; put 'put ''SShwKSxsPWwrLTF8MCk6MHxmZVtmKzE1Nz4+MF18fHBVKGMpLGw9bCsxfDAsYz0wfGFbbT4+Ml07ZmVbYysxNTg+PjBdPTB9fWZ1bmN0aW9uIG1VKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTA7Zm9yKGY9MHxEdChsfD0wKTtmOyl7Zm9yKHA9MHxhWzE3NisobT0wfGFbZisxNj4+Ml0pPj4yXSxt''@;'; put 'put ''PW0rMTcyfDAsYz0wOyEoKDB8Yyk+PSgwfHApKTspZmVbMTEyKygwfGFbMTYrKDB8YVsoMHxhW20+PjJdKSsoYzw8Mik+PjJdKT4+Ml0pPj4wXT0wLGM9YysxfDA7Zj0wfHp0KGwsZil9fWZ1bmN0aW9uIHZVKGwpe3ZhciBtLEEsYz0wLGY9MCxwPTAsdz0wLGI9MDtmb3IoT0kobHw9MCksYz0r''@;'; put 'put ''KDB8QXIoMHxhWzI1MisocD0wfGFbbCsxNj4+Ml0pPj4yXSwoQT0wfGFbNDY3NDldKS0xfDApKSxtPTB8YVs0Njc1MF0scD1wKzI0OHwwLGw9MCxmPTA7ISgoMHxsKT49KDB8QSkpOyl3PStfW20rKDQwKmx8MCkrMjQ+PjNdKyArKDB8QXIoMHxhW3A+PjJdLDB8YVttKyg0MCpsfDApKzE2Pj4y''@;'; put 'put ''XSkpLGI9K19bbSsoNDAqbHwwKSszMj4+M10rYyxsPWwrMXwwLGM9YixmPWY8dz93OmY7cmV0dXJuK2YvY31mdW5jdGlvbiB1b2UobCl7dmFyIGM9MDtmb3IoYVs0Njc1M109MHx2cigoMHxHbyhsfD0wKSk8PDIpLGM9MDshKCgwfGMpPj0oMHxHbyhsKSkpOylhWygwfGFbNDY3NTNdKSsoYzw8''@;'; put 'put ''Mik+PjJdPWMsYz1jKzF8MDtPSShsKSxmdW5jdGlvbiBBVShsKXt4MSgwfGFbNDY3NTNdLDB8R28obHw9MCksNCw2Myl9KGwpLGZ1bmN0aW9uIHlVKGwpe2x8PTA7dmFyIGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTA7Zm9yKHc9''@;'; put 'put ''MHxhWzQ2NzQ5XSxiPTB8YVs0Njc1MF0sbT0wfGFbNDY3NTNdLEE9MDs7KXtpZigoMHxBKT49KDB8dykpe2Y9MCxjPTA7YnJlYWt9aWYocD1BKzF8MCwhKCgwfGFbYisoNDAqKGY9MHxhW20rKEE8PDIpPj4yXSl8MCkrMTI+PjJdKTwyKSl7az00O2JyZWFrfUE9cH00PT0oMHxrKSYmKGM9KDB8''@;'; put 'put ''dyk+KDB8cCk/K19bYisoNDAqKDB8YVttKyhwPDwyKT4+Ml0pfDApKzI0Pj4zXTowKTtlOmRve2lmKCgwfEEpIT0oMHx3KSlmb3IoeDEoMHxhW2IrKDQwKmZ8MCkrND4+Ml0sMHxhW2IrKDQwKmZ8MCkrMTI+PjJdLDQsNjQpLG09MHxhWzQ2NzUwXSxwZT0rX1ttKyg0MCpmfDApKzI0Pj4zXSxw''@;'; put 'put ''ZT0hKGM8PS4yNSpwZSkmIShjPj0uNzUqcGUpP2M6LjUqcGUsZ2U9MHxhW20rKDQwKmZ8MCkrMTI+PjJdLHE9bCsxNnwwLEQ9MCxSPTAsYz0wLHA9MCxHPTA7Oyl7aWYoKDB8Ryk+PShwK2dlfDApKWJyZWFrIGU7ZG97aWYoMHxhWygwfGFbbSsoNDAqZnwwKSs4Pj4yXSkrKEc8PDIpPj4yXSl3''@;'; put 'put ''PUQsQT1SLHA9cCsxfDA7ZWxzZXtpZighKChBPTAhPSgwfFIpKSYhKChNPTcyKitfWyhsPTgrKGs9MHxhWygwfGFbbSsoNDAqZnwwKSs0Pj4yXSkrKEc8PDIpPj4yXSl8MCk+PjNdK2MrKGM+MD8rKDB8YVsyNDgrKDB8YVtxPj4yXSk+PjJdKTowKSk8PXBlKSkpe3c9QT9EOmssQT1BP1I6MSxj''@;'; put 'put ''PU07YnJlYWt9Zm9yKHc9RCs0fDAsYj1rKzR8MCxBPTA7KDB8QSk8KDB8YVt3Pj4yXSk7KXtmb3IobT0wOyEoKDB8bSk+PSgwfGFbYj4+Ml0pKTspZmVbMTEyKygwfGFbMTYrKDB8SmMoMHxhWygwfGFbRD4+Ml0pKyhBPDwyKT4+Ml0sMHxhWygwfGFbaz4+Ml0pKyhtPDwyKT4+Ml0sMCkpPj4y''@;'; put 'put ''XSk+PjBdPTEsbT1tKzF8MDtBPUErMXwwfWFbKDB8YVsobT0wfGFbNDY3NTBdKSsoNDAqZnwwKSs4Pj4yXSkrKEc8PDIpPj4yXT0xLGFbKHc9bSsoNDAqZnwwKSsxMnwwKT4+Ml09KDB8YVt3Pj4yXSktMSxhWyh3PW0rKDQwKmZ8MCkrMTZ8MCk+PjJdPTErKDB8YVt3Pj4yXSksX1sodz1tKyg0''@;'; put 'put ''MCpmfDApKzI0fDApPj4zXT0tNzIqK19bbD4+M10tKygwfGFbMjQ4KygwfGFbcT4+Ml0pPj4yXSkrICtfW3c+PjNdLHc9RCxBPVJ9fXdoaWxlKDApO0Q9dyxSPUEsRz1HKzF8MH19d2hpbGUoMCl9KGwpfWZ1bmN0aW9uIE9JKGwpe2x8PTA7dmFyIGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9''@;'; put 'put ''MCxrPTAsTT0wO2lmKGFbNDY3NDldPTAsMHwoYz0wfGFbNDY3NTBdKSl7Zm9yKHA9MDshKCgwfHApPj0oMHxhWzQ2NzUxXSkpOykoZj0wfGFbYysoNDAqcHwwKSs0Pj4yXSkmJihGdChmKSxjPTB8YVs0Njc1MF0pLChmPTB8YVtjKyg0MCpwfDApKzg+PjJdKSYmKEZ0KGYpLGM9MHxhWzQ2NzUw''@;'; put 'put ''XSkscD1wKzF8MDtGdChjKX1mb3IoYVs0Njc1MF09MHx2cig0MCooMHxhWzQ2NzUxXSl8MCksYz0wOyEoKDB8Yyk+PSgwfChmPTB8YVs0Njc1MV0pKSk7KWs9MHx2cihmPDwyKSxhWygwfGFbNDY3NTBdKSsoNDAqY3wwKSs0Pj4yXT1rLGs9MHx2cihhWzQ2NzUxXTw8MiksYVsoTT0wfGFbNDY3''@;'; put 'put ''NTBdKSsoNDAqY3wwKSs4Pj4yXT1rLGFbTSsoNDAqY3wwKT4+Ml09YyxhW00rKDQwKmN8MCkrMTI+PjJdPTAsYVtNKyg0MCpjfDApKzE2Pj4yXT0wLGFbKE09TSsoNDAqY3wwKSsyNHwwKT4+Ml09MCxhW00rND4+Ml09MCxhW00rOD4+Ml09MCxhW00rMTI+PjJdPTAsYz1jKzF8MDtmb3IocD0w''@;'; put 'put ''fER0KGwpO3A7KXtmb3IoZj0wfHcwKGwscCk7Zjspe2ZvcihtPWYrLTQ4fDAsQT0wfGFbNDY3NTBdLGM9MHxhWzIzMisoMHxhWzE2KygwfGFbKDM9PSgzJih3PTB8YVtmPj4yXSl8MCk/ZjpmKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml07ISgoMHwoYz1jKzF8MCkpPj0oMHxhWzIzMisoMHxhWzE2''@;'; put 'put ''KygwfGFbKDI9PSgzJnd8MCk/ZjptKSs0MD4+Ml0pPj4yXSk+PjJdKSk7KWFbKHc9QSsoNDAqY3wwKSsxNnwwKT4+Ml09MSsoMHxhW3c+PjJdKSx3PTB8YVtmPj4yXTtmPTB8UzAobCxmKX1wPTB8enQobCxwKX1mb3Iodz0wfGFbNDY3NTFdLGs9MHxhWzQ2NzUyXSxNPTB8YVs0Njc1MF0sZj1s''@;'; put 'put ''KzE2fDAsYz0wOyEoKDB8Yyk+PSgwfHcpKTspKDB8KG09MHxhWzIzMisoMHxhWyhwPTE2KygwfGFbYVtrKygyNCpjfDApPj4yXT4+Ml0pfDApPj4yXSk+PjJdKSk+PSgwfGFbNDY3NDldKSYmKGFbNDY3NDldPW0rMSksX1soQT1NKyg0MCptfDApKzI0fDApPj4zXT0oYj0rX1tBPj4zXSkrNzIq''@;'; put 'put ''K19baysoMjQqY3wwKSs4Pj4zXSsoYj4wPysoMHxhWzI0OCsoMHxhW2Y+PjJdKT4+Ml0pOjApLCtfWyhBPU0rKDQwKm18MCkrMzJ8MCk+PjNdPChiPTcyKitfW2srKDI0KmN8MCkrMTY+PjNdKSYmKF9bQT4+M109YiksYVsoMHxhW00rKDQwKm18MCkrND4+Ml0pKyhhW00rKDQwKm18MCkrMTI+''@;'; put 'put ''PjJdPDwyKT4+Ml09aysoMjQqY3wwKSxhWyhsPU0rKDQwKigwfGFbMjMyKygwfGFbcD4+Ml0pPj4yXSl8MCkrMTJ8MCk+PjJdPTErKDB8YVtsPj4yXSksYz1jKzF8MH1mdW5jdGlvbiB3VShsKXt2YXIgbSxjPTAsZj0wLHA9MCxBPTA7Zm9yKG09NCsobHw9MCl8MCxmPTAsYz0wOyEoKDB8Zik+''@;'; put 'put ''PSgwfGFbbT4+Ml0pKTspe2ZvcihwPTB8dzAoQT0wfGNyKHA9MHxhWygwfGFbbD4+Ml0pKyhmPDwyKT4+Ml0pLHApO3A7KXA9MHxTMChBLHApLGM9YysxfDA7Zj1mKzF8MH1yZXR1cm4gMHxjfWZ1bmN0aW9uIGJVKGwpe3ZhciBjPTA7Zm9yKGM9MHxEdChsfD0wKTtjOylhWzIxNisoMHxhW2Mr''@;'; put 'put ''MTY+PjJdKT4+Ml09MCxjPTB8enQobCxjKX1mdW5jdGlvbiBTSChsKXtsfD0wO3ZhciBjLGY9MDtyZXR1cm4gMHwoMCE9KDB8KGM9MHxhWzQ3MTg5XSkpJiYwIT0oMHwoZj0wfEhvKGwsYykpKSYmMCE9KDB8ZmVbZj4+MF0pJiYoMHx0MShmKSk8PDI0Pj4yND09MD8xOjApfWZ1bmN0aW9uIFJJ''@;'; put 'put ''KGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTA7Zm9yKHhIKGx8PTApLGM9MHxEdChsKTtjOyl7Zm9yKGY9MHx3MChsLGMpO2Y7KXtkb3tpZigwPT0oMHxhWzE3MisoMHxhW2YrMTY+PjJdKT4+Ml0pJiYwPT0oMHxTSChmKSkmJihwPWYrNDh8MCxBPWYrLTQ4fDAsKDB8KG09MHxn''@;'; put 'put ''MSgwfGFbKDM9PSgzJmFbZj4+Ml18MCk/ZjpwKSs0MD4+Ml0pKSkhPSgwfCh3PTB8ZzEoMHxhWygyPT0oMyZhW2Y+PjJdfDApP2Y6QSkrNDA+PjJdKSkpKSl7aWYoMD09KDB8YVsyMTIrKDB8YVttKzE2Pj4yXSk+PjJdKSYmMD09KDB8YVsyMTIrKDB8YVt3KzE2Pj4yXSk+PjJdKSl7aWYoYj0w''@;'; put 'put ''fFU1KG0sdykpe3o2KGYsYik7YnJlYWt9SmMobSx3LGYpO2JyZWFrfU1IKGwsMHxhWygzPT0oMHwoYj0zJmFbZj4+Ml0pKT9mOnApKzQwPj4yXSwwfGFbKDI9PSgwfGIpP2Y6QSkrNDA+PjJdLGYpfX13aGlsZSgwKTtmPTB8UzAobCxmKX1jPTB8enQobCxjKX19ZnVuY3Rpb24gTUgobCxjLGYs''@;'; put 'put ''cCl7Y3w9MCxmfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTA7Yj0oQT0wfGFbMjEyKyhtPTB8YVsxNisoMHxhWygzPT0oMHwodz0zJmFbKHB8PTApPj4yXSkpP3A6cCs0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKT8oMHxhW20rMjMyPj4yXSktKDB8YVsyMzIrKDB8YVsxNisoMHxhWzI2NCsoMHxhW0Er''@;'; put 'put ''MTY+PjJdKT4+Ml0pPj4yXSk+PjJdKXwwOjAsYj0obT0oQT0wfGFbMjEyKyhtPTB8YVsxNisoMHxhWygyPT0oMHx3KT9wOnArLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPygwfGFbMjMyKygwfGFbMTYrKDB8YVsyNjQrKDB8YVtBKzE2Pj4yXSk+PjJdKT4+Ml0pPj4yXSktKDB8YVttKzIzMj4+''@;'; put 'put ''Ml0pfDA6MCkrYisoMHxoclsxNzArKDB8YVsodz1wKzE2fDApPj4yXSk+PjFdKXwwLGw9MHxVaChsfD0wKSxmZVsxNTYrKDB8YVtsKzE2Pj4yXSk+PjBdPTIsQT0wfGcxKGMpLGM9MHxnMShmKSxmPTB8RnUobCxBLCgwfGIpPjA/MDorKDAtYnwwKSwxMCooMHxhWzE1NisoMHxhW3c+PjJdKT4+''@;'; put 'put ''Ml0pfDApLGFbMTE2KygwfGFbMTYrKDB8RnUobCxjLCsoMHwoKDB8Yik+MD9iOjApKSwwfGFbMTU2KygwfGFbdz4+Ml0pPj4yXSkpPj4yXSk+PjJdPXAsYVsxMTYrKDB8YVtmKzE2Pj4yXSk+PjJdPXB9ZnVuY3Rpb24gb2sobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIG0sQT0wLHc9MCxi''@;'; put 'put ''PTA7dz0wfGFbMjMyKygwfGFbMTYrKDB8YVsoKDB8YVsyMzIrKDB8YVsxNisoMHxhWyhBPTM9PSgwfCh3PTMmYVsoY3w9MCk+PjJdKSk/YzpjKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPigwfGFbMjMyKygwfGFbMTYrKDB8YVsodz0yPT0oMHx3KT9jOmMrLTQ4fDApKzQwPj4yXSk+PjJdKT4+''@;'; put 'put ''Ml0pP0E6dykrNDA+PjJdKT4+Ml0pPj4yXSwwfGFbKGM9MTcyKygwfGFbKEE9YysxNnwwKT4+Ml0pfDApPj4yXSYmUHIoODc1OTMsODc2MTUsMTQ4LDg3NjI0KSxhW2M+PjJdPWYsbT0wPT0oMHxwKTtkb3tpZihjPTB8YVtBPj4yXSxtP3A9MHxhW2YrMTY+PjJdOml0WyhiPTE2OCsocD0wfGFb''@;'; put 'put ''ZisxNj4+Ml0pfDApPj4xXT0oMHxocltiPj4xXSkrKDB8aHJbYysxNjg+PjFdKSxpdFsoYj1wKzE1NHwwKT4+MV09KDB8aHJbYj4+MV0pKygwfGhyW2MrMTU0Pj4xXSksYVsocD1wKzE1NnwwKT4+Ml09KDB8YVtwPj4yXSkrKDB8YVtjKzE1Nj4+Ml0pLGM9ZistNDh8MCwoMHxhWzIzMisoMHxh''@;'; put 'put ''WzE2KyhwPTB8YVsoMj09KDMmYVtmPj4yXXwwKT9mOmMpKzQwPj4yXSk+PjJdKT4+Ml0pPT0oMHx3KSlicmVhaztfVShsLHApLGY9MHxhW2FbMTgwKygwfGFbMTYrKDB8YVsoMj09KDMmYVtmPj4yXXwwKT9mOmMpKzQwPj4yXSk+PjJdKT4+Ml0+PjJdfXdoaWxlKDAhPSgwfGYpKX1mdW5jdGlv''@;'; put 'put ''biBfVShsLGMpe3ZhciBmO2Y9KygwfCgwfGFbMjQ4KygwfGFbMTYrKGx8PTApPj4yXSk+PjJdKS8yKSxfWyhsPTg4KyhjPTB8YVsxNisoY3w9MCk+PjJdKXwwKT4+M109K19bbD4+M10rZixfWyhjPWMrOTZ8MCk+PjNdPStfW2M+PjNdK2Z9ZnVuY3Rpb24gYWsobCxjKXt2YXIgZj0wLHA9MDty''@;'; put 'put ''ZXR1cm4gMHwoMCE9KDB8KGx8PTApKSYwIT0oMHwoY3w9MCkpJiYoMHxhWygzPT0oMHwocD0zJmFbbD4+Ml0pKT9sOmwrNDh8MCkrNDA+PjJdKT09KDB8YVsoMz09KDB8KGY9MyZhW2M+PjJdKSk/YzpjKzQ4fDApKzQwPj4yXSkmJigwfGFbKDI9PSgwfHApP2w6bCstNDh8MCkrNDA+PjJdKT09''@;'; put 'put ''KDB8YVsoMj09KDB8Zik/YzpjKy00OHwwKSs0MD4+Ml0pJiYoMHxhWzk2KygwfGFbbCsxNj4+Ml0pPj4yXSk9PSgwfGFbOTYrKDB8YVtjKzE2Pj4yXSk+PjJdKSYmMCE9KDB8cmsobCxjKSk/MTowKX1mdW5jdGlvbiBDVShsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxN''@;'; put 'put ''PTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MDtmb3IoYVsxOTIrKGM9MHxhWyhnZT0xNisobHw9MCl8MCk+PjJdKT4+Ml09MCxhW2MrMjMyPj4yXT0wLHhIKGwpLGM9MTshKCgwfGMpPigwfGFbMTgwKyhmPTB8YVtnZT4+Ml0pPj4yXSkpOylFVShsLDB8YVsoMHxhW2YrMTg0Pj4yXSkrKGM8''@;'; put 'put ''PDIpPj4yXSksYz1jKzF8MDtmb3IoQT0wfER0KGwpO0E7KXtmb3IobT0wfHcwKGwsQSk7bTspKHA9MHxmZVsoZj0xNjArKDB8YVsxNisoMHxhWygyPT0oMyYoYz0wfGFbbT4+Ml0pfDApP206bSstNDh8MCkrNDA+PjJdKT4+Ml0pfDApPj4wXSk8PDI0Pj4yNDwzJiYoZmVbZj4+MF09cCsxPDwy''@;'; put 'put ''ND4+MjQsYz0wfGFbbT4+Ml0pLChmPTB8ZmVbKGM9MTYwKygwfGFbMTYrKDB8YVsoMz09KDMmY3wwKT9tOm0rNDh8MCkrNDA+PjJdKT4+Ml0pfDApPj4wXSk8PDI0Pj4yNDwzJiYoZmVbYz4+MF09ZisxPDwyND4+MjQpLG09MHxTMChsLG0pO0E9MHx6dChsLEEpfWZvcihEPTB8RHQobCk7RDsp''@;'; put 'put ''e2ZvcigwPT0oMHxhWzIxMisoMHxhW0QrMTY+PjJdKT4+Ml0pJiYoMHxEKT09KDB8ZzEoRCkpJiYoY0kobCxEKSxhWyhNPTIzMisoMHxhW2dlPj4yXSl8MCk+PjJdPTErKDB8YVtNPj4yXSkpLGM9MCxNPTB8dzAobCxEKTtNOyl7QT0wfGFbKGs9TSsxNnwwKT4+Ml07ZTpkb3tpZigwfGFbQSsx''@;'; put 'put ''NzI+PjJdKWM9TTtlbHNle2lmKDB8aG9lKE0pKXtpZighKDB8YWsoYyxNKSkpe2RvZShsLE0pLGM9TTticmVha31pZigwfChmPTB8YVsxNzIrKDB8YVtjKzE2Pj4yXSk+PjJdKSl7b2sobCxNLGYsMCksJGQoTSk7YnJlYWt9aWYoKDB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMHwoaz0zJmFb''@;'; put 'put ''TT4+Ml0pKT9NOk0rNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkhPSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDB8ayk/TTpNKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSlicmVhazt6NihNLGMpLCRkKE0pO2JyZWFrfWlmKGMpaWYoZj1NKzQ4fDAsKDB8KHA9MHxhWygzPT0oMHwodz0zJmFb''@;'; put 'put ''TT4+Ml0pKT9NOmYpKzQwPj4yXSkpPT0oMHxhWygzPT0oMHwobT0zJmFbYz4+Ml0pKT9jOmMrNDh8MCkrNDA+PjJdKSYmKDB8KFI9MHxhWygyPT0oMHx3KT9NOk0rLTQ4fDApKzQwPj4yXSkpPT0oMHxhWygyPT0oMHxtKT9jOmMrLTQ4fDApKzQwPj4yXSkpe2lmKCgwfGFbMjMyKygwfGFbcCsx''@;'; put 'put ''Nj4+Ml0pPj4yXSk9PSgwfGFbMjMyKygwfGFbUisxNj4+Ml0pPj4yXSkpe3o2KE0sYyksJGQoTSk7YnJlYWt9aWYoMD09KDB8YVtBKzk2Pj4yXSkmJjA9PSgwfGFbOTYrKDB8YVsoRz1jKzE2fDApPj4yXSk+PjJdKSYmMCE9KDB8cmsoTSxjKSkpe2lmKDB8ZmVbMTk0OTU0XSl7ZmVbMTEyKygw''@;'; put 'put ''fGFbaz4+Ml0pPj4wXT02O2JyZWFrfW9rKGwsTSwwfGFbMTcyKygwfGFbRz4+Ml0pPj4yXSwxKSwkZChNKTticmVha313PWZ9ZWxzZSB3PWY7ZWxzZSB3PU0rNDh8MDtpZihiPU0rLTQ4fDAsKDB8KGY9MHxhWygzPT0oMHwoQT0zJmFbTT4+Ml0pKT9NOncpKzQwPj4yXSkpPT0oMHxhWygyPT0o''@;'; put 'put ''MHxBKT9NOmIpKzQwPj4yXSkpeyRkKE0pLGM9TTticmVha31pZihmPTB8ZzEoZikscD0wfGcxKDB8YVsoMj09KDMmYVtNPj4yXXwwKT9NOmIpKzQwPj4yXSksKDB8YVsoMz09KDB8KEE9MyZhW00+PjJdKSk/TTp3KSs0MD4+Ml0pPT0oMHxmKSYmKDB8YVsoMj09KDB8QSk/TTpiKSs0MD4+Ml0p''@;'; put 'put ''PT0oMHxwKSl7aWYoKDB8KG09MHxhWzIzMisoMHxhW2YrMTY+PjJdKT4+Ml0pKT09KDB8KEE9MHxhWzIzMisoMHxhW3ArMTY+PjJdKT4+Ml0pKSl7aEkobCxNKSxjPU07YnJlYWt9aWYoKDB8QSk+KDB8bSkpe0JJKGwsZixwLE0pLGM9TTticmVha31mPTB8S2EobCxwLGYsMCwwKTtkb3tpZigw''@;'; put 'put ''fGYmJigwfChwZT0wfGFbKDI9PSgwfChxPTMmYVtmPj4yXSkpP2Y6ZistNDh8MCkrNDA+PjJdKSkhPSgwfGFbKDI9PSgzJmFbTT4+Ml18MCk/TTpiKSs0MD4+Ml0pJiYoMHxhWzE3MisoMHxhWyhwPWYrMTZ8MCk+PjJdKT4+Ml18fEJJKGwsMHxhWygzPT0oMHxxKT9mOmYrNDh8MCkrNDA+PjJd''@;'; put 'put ''LHBlLGYpLDA9PSgwfGFbOTYrKDB8YVtrPj4yXSk+PjJdKSYmMD09KDB8YVs5NisoMHxhW3A+PjJdKT4+Ml0pKSl7aWYoISgwfHJrKE0sZikpKWJyZWFrO2lmKDB8ZmVbMTk0OTU0XSl7ZmVbMTEyKygwfGFbaz4+Ml0pPj4wXT02LGZlWzE1MysoMHxhW3A+PjJdKT4+MF09MTticmVhayBlfSRk''@;'; put 'put ''KE0pLG9rKGwsTSwwfGFbMTcyKygwfGFbcD4+Ml0pPj4yXSwxKTticmVhayBlfX13aGlsZSgwKTtCSShsLDB8YVsoMj09KDB8KGM9MyZhW00+PjJdKSk/TTpiKSs0MD4+Ml0sMHxhWygzPT0oMHxjKT9NOncpKzQwPj4yXSxNKSxjPU19fX13aGlsZSgwKTtNPTB8UzAobCxNKX1EPTB8enQobCxE''@;'; put 'put ''KX0oMHx5YShsKSkhPSgwfGwpJiYoYz0oYz0wfGFbMjE2KygwfGFbZ2U+PjJdKT4+Ml0pPzB8VjAoYyw0KTowfFFuKDQpLGFbMjE2KyhnZT0wfGFbZ2U+PjJdKT4+Ml09YyxhW2M+PjJdPWFbZ2UrMTkyPj4yXSl9ZnVuY3Rpb24gaG9lKGwpe3ZhciBjO3JldHVybiAwfCg3PT0oMHxmZVsxNTkr''@;'; put 'put ''KDB8YVsxNisoMHxhWygzPT0oMHwoYz0zJmFbKGx8PTApPj4yXSkpP2w6bCs0OHwwKSs0MD4+Ml0pPj4yXSk+PjBdKT8xOjc9PSgwfGZlWzE1OSsoMHxhWzE2KygwfGFbKDI9PSgwfGMpP2w6bCstNDh8MCkrNDA+PjJdKT4+Ml0pPj4wXSkmMSl9ZnVuY3Rpb24gZG9lKGwsYyl7bHw9MDt2YXIg''@;'; put 'put ''Zj0wLHA9MCxtPTAsQT0wLHc9MDtwPTB8WmwoMHxhWygzPT0oMyZhWyhjfD0wKT4+Ml18MCk/YzpjKzQ4fDApKzQwPj4yXSksbT0wfFpsKDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOmMrLTQ4fDApKzQwPj4yXSksZj0odz0oMHxhWzIzMisoMHxhW3ArMTY+PjJdKT4+Ml0pPigwfGFbMjMyKygw''@;'; put 'put ''fGFbbSsxNj4+Ml0pPj4yXSkpP3A6bSxtPShwPXc/bTpwKSsxNnwwLHc9ZisxNnwwO2U6ZG97aWYoKDB8YVsyMTIrKDB8YVttPj4yXSk+PjJdKSE9KDB8YVsyMTIrKDB8YVt3Pj4yXSk+PjJdKSl7aWYoMHwoQT0wfFU1KHAsZikpKXtvayhsLGMsQSwxKTticmVha31pZigoMHxhWzIzMisoMHxh''@;'; put 'put ''W20+PjJdKT4+Ml0pIT0oMHxhWzIzMisoMHxhW3c+PjJdKT4+Ml0pKWZvcihCSShsLHAsZixjKSxmPTE3MisoMHxhW2MrMTY+PjJdKXwwOzspe2lmKCEoZj0wfGFbZj4+Ml0pfHwocD1mKy00OHwwLCgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDMmYVtmPj4yXXwwKT9mOnApKzQwPj4yXSk+''@;'; put 'put ''PjJdKT4+Ml0pPigwfGFbMjMyKygwfGFbdz4+Ml0pPj4yXSkpKWJyZWFrIGU7ZmVbMTEyKygwfGFbZisxNj4+Ml0pPj4wXT01LGY9MHxhWzE4MCsoMHxhWzE2KygwfGFbKDI9PSgzJmFbZj4+Ml18MCk/ZjpwKSs0MD4+Ml0pPj4yXSk+PjJdfX19d2hpbGUoMCl9ZnVuY3Rpb24gQkkobCxjLGYs''@;'; put 'put ''cCl7bHw9MCxjfD0wLGZ8PTA7dmFyIGIsTSxrLG09MCxBPTAsdz0wO2ZvcihrPTB8YVs5NisobT0wfGFbKE09MTYrKHB8PTApfDApPj4yXSk+PjJdPygoMHxhWzIzMisoMHxhW2YrMTY+PjJdKT4+Ml0pKygwfGFbMjMyKygwfGFbYysxNj4+Ml0pPj4yXSl8MCkvMnwwOi0xLDB8YVttKzE3Mj4+''@;'; put 'put ''Ml0mJlByKDg3NjM2LDg3NjE1LDg5LDg3NjYxKSxiPWYrMTZ8MCx3PTB8YVsyMzIrKDB8YVtjKzE2Pj4yXSk+PjJdO0E9dysxfDAsISgoMHx3KT49KDB8KG09MHxhWzIzMisoMHxhW2I+PjJdKT4+Ml0pKSk7KSgwfEEpPCgwfG0pPyhtPSgwfEEpPT0oMHxrKT8wfHBvZShsLHApOjB8a1UobCks''@;'; put 'put ''YVsyMzIrKDB8YVttKzE2Pj4yXSk+PjJdPUEpOm09ZixSMGUoMHxKYyhjLG0scCkpLHc9QSxjPW07MHxhWzE3MisoMHxhW00+PjJdKT4+Ml18fFByKDg3NjcyLDg3NjE1LDEwMyw4NzY2MSl9ZnVuY3Rpb24gcG9lKGwsYyl7dmFyIGYscCx3LG09MCxBPTA7cmV0dXJuIGY9K19bMjQrKG09MHxh''@;'; put 'put ''Wzk2KygwfGFbKEE9MTYrKGN8PTApfDApPj4yXSk+PjJdKT4+M10scD0rX1ttKzMyPj4zXSxtPTB8VWgobHw9MCksYVsxMDQrKDB8YVsoYz1tKzE2fDApPj4yXSk+PjJdPWFbOTYrKDB8YVtBPj4yXSk+PjJdLHc9KygwfGFbMjQ4KygwfGFbMTYrKDB8ZGkobSkpPj4yXSk+PjJdKSxfWzg4Kygw''@;'; put 'put ''fGFbYz4+Ml0pPj4zXT13LDB8ZmVbMTE0KygwfGFbQT4+Ml0pPj4wXXx8KGw9MD09KDEmYVsxMTYrKDB8YVsxNisoMHxkaShsKSk+PjJdKT4+Ml18MCksX1s4MCsoQT0wfGFbYz4+Ml0pPj4zXT1sP3A6ZixfW0ErOTY+PjNdPWw/ZjpwKSwwfG19ZnVuY3Rpb24ga1UobCl7dmFyIGM7cmV0dXJu''@;'; put 'put ''IF9VKGx8PTAsYz0wfFVoKGwpKSwwfGN9ZnVuY3Rpb24gWmwobCl7dmFyIGM7cmV0dXJuIDB8KDc9PSgwfGZlWzE1OSsoYz0wfGFbMTYrKGx8PTApPj4yXSk+PjBdKT8wfGFbKDB8YVsyNjgrKDB8YVsxNisoMHxhW2MrMjEyPj4yXSk+PjJdKT4+Ml0pKyhhW2MrMjMyPj4yXTw8Mik+PjJdOjB8''@;'; put 'put ''ZzEobCkpfWZ1bmN0aW9uIEVIKGwsYyxmKXt2YXIgcCxtO2N8PTAsZnw9MCxmdW5jdGlvbiB2NyhsLGMsZixwLG0pe2Z8PTAscHw9MCxtfD0wO3ZhciBSLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wOygwfChBPTB8YVsyMzIrKDB8YVsoUj0xNisoY3w9MCl8MCk+PjJdKT4+Ml0pKTw9KDB8KGI9''@;'; put 'put ''MHxhWzIzMisoMHxhWyhEPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSkpJiZQcig4NzY5Nyw4NzcyNSw4MSw4NzczNSksKDB8YVsoMz09KDB8KE09MyZhW3A+PjJdKSk/cDpwKzQ4fDApKzQwPj4yXSk9PSgwfGwpJiYoMHxhWygyPT0oMHxNKT9wOnArLTQ4fDApKzQwPj4yXSk9PSgwfGMpfHwoaz01''@;'; put 'put ''KTtlOmRve2lmKDU9PSgwfGspKXtpZigoMHxpdFsxNjgrKDB8YVtwKzE2Pj4yXSk+PjFdKT4xKXtpZihhWzE3MisoMHxhW2YrMTY+PjJdKT4+Ml09MCwxPT0oQS1ifDApJiYwfCh3PTB8VTUobCxjKSkmJjB8cmsoZix3KSl7aWYoejYoZix3KSwwfGZlWzE1NisoMHxhW0Q+PjJdKT4+MF18fDB8''@;'; put 'put ''ZmVbMTU2KygwfGFbUj4+Ml0pPj4wXSlicmVhazskZChmKTticmVha31mb3IoTT0yNTUmbSxtPWwsaz0wfGFbMjMyKygwfGFbRD4+Ml0pPj4yXTs7KXtpZigoMHxrKT49KDB8KEE9MHxhWzIzMisoMHxhW1I+PjJdKT4+Ml0pKSlicmVhayBlOygwfGspPChBKy0xfDApPyh3PXArLTQ4fDAsQT0w''@;'; put 'put ''fGxrKEE9MHx5YShsKSwwfGFbKDI9PSgzJmFbcD4+Ml18MCk/cDp3KSs0MD4+Ml0pLGI9cCk6KEE9Yyx3PXArLTQ4fDAsYj1wKSxmZVsxMTIrKDB8YVsxNisoMHxKYyhtLEEsZikpPj4yXSk+PjBdPU0saXRbKEQ9MTY4KygwfGFbcCsxNj4+Ml0pfDApPj4xXT0oMHxpdFtEPj4xXSktMTw8MTY+''@;'; put 'put ''PjE2LG09QSxrPWsrMXwwLHA9MHxhW2FbMTgwKygwfGFbMTYrKDB8YVsoMj09KDMmYVtiPj4yXXwwKT9wOncpKzQwPj4yXSk+PjJdKT4+Ml0+PjJdfX1kb3tpZigxPT0oQS1ifDApKXtpZigwfChwPTB8VTUobCxjKSkmJjB8cmsoZixwKSl7aWYoYVsxNzIrKDB8YVtmKzE2Pj4yXSk+PjJdPXAs''@;'; put 'put ''ZmVbMTEyKyhNPTB8YVtwKzE2Pj4yXSk+PjBdPW0saXRbKE09TSsxNjh8MCk+PjFdPTErKDB8aXRbTT4+MV0pPDwxNj4+MTYsMHxmZVsxNTYrKDB8YVtEPj4yXSk+PjBdfHwwfGZlWzE1NisoMHxhW1I+PjJdKT4+MF0pYnJlYWs7JGQoZik7YnJlYWt9YVsxNzIrKDB8YVtmKzE2Pj4yXSk+PjJd''@;'; put 'put ''PTAscD0wfEpjKGwsYyxmKSxmZVsxMTIrKDB8YVtwKzE2Pj4yXSk+PjBdPW19fXdoaWxlKDApO2lmKCgoQT0wfGFbMjMyKygwfGFbUj4+Ml0pPj4yXSktKDB8YVsyMzIrKDB8YVtEPj4yXSk+PjJdKXwwKT4xKXtmb3IoKDB8YVsoMz09KDMmYVtwPj4yXXwwKT9wOnArNDh8MCkrNDA+PjJdKT09''@;'; put 'put ''KDB8bCk/az1BOihhWzE3MisoMHxhWyhEPWYrMTZ8MCk+PjJdKT4+Ml09MCxrPTB8SmMobCwwfGFbKDI9PSgzJmFbcD4+Ml18MCk/cDpwKy00OHwwKSs0MD4+Ml0sZiksYVsxNzIrKDB8YVtEPj4yXSk+PjJdPWssWTMocCkscD1rLGs9MHxhWzIzMisoMHxhW1I+PjJdKT4+Ml0pOygwfGFbMjMy''@;'; put 'put ''KyhiPTB8YVsxNisodz0wfGFbKDI9PSgwfChBPTMmYVtwPj4yXSkpP3A6cCstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkhPSgwfGspOylwPTB8YVthW2IrMTgwPj4yXT4+Ml07KDB8dykhPSgwfGMpJiYoZmVbMTEyKygwfGFbMTYrKDB8SmMoMHxhWygzPT0oMHxBKT9wOnArNDh8MCkrNDA+PjJd''@;'; put 'put ''LGMsZikpPj4yXSk+PjBdPW0sWTMocCkpfX19d2hpbGUoMCl9KG09MHxZNihsfD0wKSxwPTB8WTYoYyksZiwwfGFbMTcyKygwfGFbZisxNj4+Ml0pPj4yXSwoMHxtKT09KDB8bCkmKDB8cCk9PSgwfGMpPzE6NSl9ZnVuY3Rpb24gWTYobCl7dmFyIGMsZixwPTA7cmV0dXJuIDAhPSgwfChmPTB8''@;'; put 'put ''YVsyMTIrKGM9MHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSkpJiYwPT0oMHxmZVsyNzIrKHA9MHxhW2YrMTY+PjJdKT4+MF0pJiYobD0wfGFbKDB8YVtwKzI2OD4+Ml0pKyhhW2MrMjMyPj4yXTw8Mik+PjJdKSwwfGx9ZnVuY3Rpb24gbGsobCxjKXt2YXIgcCxtLGY9MDtyZXR1cm4gU1UobHw9MCxw''@;'; put 'put ''PTB8YVsyMzIrKGM9MHxhWyhmPTE2KyhjfD0wKXwwKT4+Ml0pPj4yXSwwfGFbYysyMzY+PjJdLDIpLGM9MHxVaChsKSxfWzg4KyhtPTB8YVtjKzE2Pj4yXSk+PjNdPStfWzg4KyhmPTB8YVtmPj4yXSk+PjNdLF9bbSs5Nj4+M109K19bZis5Nj4+M10sYVttKzIzMj4+Ml09YVtmKzIzMj4+Ml0s''@;'; put 'put ''YVttKzIzNj4+Ml09Zj0xKygwfGFbZisyMzY+PjJdKXwwLGFbKDB8YVsoMHxhWzE5NisoMHxhW2wrMTY+PjJdKT4+Ml0pKyhwPDw2KSs0Pj4yXSkrKGY8PDIpPj4yXT1jLDB8Y31mdW5jdGlvbiBTVShsLGMsZixwKXtmfD0wLHB8PTA7dmFyIHcsYixtPTAsQT0wLGs9MDtiPTB8YVsobT0wfGFb''@;'; put 'put ''MTk2KygwfGFbKHc9MTYrKGx8PTApfDApPj4yXSk+PjJdKSsoKGN8PTApPDw2KSs0Pj4yXTtlOmRve2lmKCgwfHApPDEpe2ZvcihmPWYtcHwwOyEoKDB8KEE9ZisxfDApKT49KDB8KGw9MHxhW20rKGM8PDYpPj4yXSkpKTspYVsyMzYrKDB8YVsxNisobD0wfGFbYisoQTw8Mik+PjJdKT4+Ml0p''@;'; put 'put ''Pj4yXT1tPWYrcHwwLGFbYisobTw8Mik+PjJdPWwsZj1BLG09MHxhWzE5NisoMHxhW3c+PjJdKT4+Ml07Zm9yKGY9KEE9cCstMXwwKStsfDA7Oyl7aWYoKDB8Zik+PSgwfGwpKWJyZWFrIGU7YVtiKyhmPDwyKT4+Ml09MCxmPWYrMXwwLGw9MHxhWyhtPTB8YVsxOTYrKDB8YVt3Pj4yXSk+PjJd''@;'; put 'put ''KSsoYzw8Nik+PjJdfX1lbHNle2ZvcihBPXArLTF8MCxsPTB8YVttKyhjPDw2KT4+Ml07ISgoMHwobD1sKy0xfDApKTw9KDB8ZikpOylhWzIzNisoMHxhWzE2KyhrPTB8YVtiKyhsPDwyKT4+Ml0pPj4yXSk+PjJdPW09QStsfDAsYVtiKyhtPDwyKT4+Ml09aztmb3IobT1wK2Z8MCxsPWY7ISgo''@;'; put 'put ''MHwobD1sKzF8MCkpPj0oMHxtKSk7KWFbYisobDw8Mik+PjJdPTA7bT1sPTB8YVsxOTYrKDB8YVt3Pj4yXSk+PjJdLGw9MHxhW2wrKGM8PDYpPj4yXX19d2hpbGUoMCk7YVttKyhjPDw2KT4+Ml09QStsfWZ1bmN0aW9uIHhIKGwpe3ZhciBNLEQsUixjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxi''@;'; put 'put ''PTAsaz0wO2ZvcihSPWxlLGxlPWxlKzE2fDAsRD1SLHA9MHxEdChsfD0wKTtwOyk3PT0oMHxmZVsxNTkrKGM9MHxhWyhmPXArMTZ8MCk+PjJdKT4+MF0pJiYocmcocCksYz0wfGFbZj4+Ml0pLGFbYysyMTI+PjJdPTAscD0wfHp0KGwscCk7Zm9yKE09bCsxNnwwLGs9MTshKCgwfGspPigwfGFb''@;'; put 'put ''MTgwKyhjPTB8YVtNPj4yXSk+PjJdKSk7KXt3PTE2KyhBPTB8YVsoMHxhW2MrMTg0Pj4yXSkrKGs8PDIpPj4yXSl8MCxjPTB8RHQoQSk7ZTpmb3IoO2M7KWlmKGI9MHx6dChBLGMpLDB8ZmVbMTU5KygwfGFbKGY9YysxNnwwKT4+Ml0pPj4wXSlwPTB8dGkoYyksbT0wfHRpKGwpLGFbRD4+Ml09''@;'; put 'put ''cCxhW0QrND4+Ml09bSwkcigwLDg3NzQ0LEQpLG9pKEEsYyksYz1iO2Vsc2UgZm9yKGtOKGMsMHxhWzI2NCsoMHxhW3c+PjJdKT4+Ml0pLGFbMjEyKyhtPTB8YVtmPj4yXSk+PjJdPUEsZmVbbSsxNTk+PjBdPTcsbT0wfHcwKEEsYyk7Oyl7aWYoIW0pe2M9Yjtjb250aW51ZSBlfWM9MHxhWzE3''@;'; put 'put ''MisoMHxhW20rMTY+PjJdKT4+Ml07dDpkb3tpZigwfGMpZG97aWYoZj1jKy00OHwwLDEhPSgwfGZlWzE1NisocD0wfGFbMTYrKDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOmYpKzQwPj4yXSk+PjJdKT4+MF0pKWJyZWFrIHQ7YVtwKzIxMj4+Ml09QSxjPTB8YVthWzE4MCsoMHxhWzE2KygwfGFb''@;'; put 'put ''KDI9PSgzJmFbYz4+Ml18MCk/YzpmKSs0MD4+Ml0pPj4yXSk+PjJdPj4yXX13aGlsZSgwIT0oMHxjKSl9d2hpbGUoMCk7bT0wfFMwKEEsbSl9az1rKzF8MH1sZT1SfWZ1bmN0aW9uIEVVKGwsYyl7bHw9MDt2YXIgYixmPTAscD0wLG09MCxBPTAsdz0wO2ZvcihwPTB8dnIoOCsoaXRbMjM4Kygw''@;'; put 'put ''fGFbKGI9MTYrKGN8PTApfDApPj4yXSk+PjFdPDwyKXwwKSxhWzI2OCsoZj0wfGFbYj4+Ml0pPj4yXT1wLHA9MCxtPTB8aXRbZisyMzY+PjFdOyEoKDB8bSk+KDB8aXRbZisyMzg+PjFdKSk7KWY9MHxVaChsKSxhWygwfGFbMjY4KygwfGFbYj4+Ml0pPj4yXSkrKG08PDIpPj4yXT1mLGFbMjMy''@;'; put 'put ''Kyh3PTB8YVtmKzE2Pj4yXSk+PjJdPW0sZmVbdysxNTk+PjBdPTcsYVt3KzIxMj4+Ml09YywwfHAmJih3PTE1NCsoMHxhWzE2KygwfEpjKHAsZiwwKSk+PjJdKXwwLGl0W3c+PjFdPTFlMyooMHxpdFt3Pj4xXSkpLHA9ZixtPW0rMXwwLGY9MHxhW2I+PjJdO2Zvcih3PTB8RHQoYyk7Zj0wfGFb''@;'; put 'put ''Yj4+Ml0sdzspe2ZvcihhWyhmPTIxNisoMHxhWyhtPTE2KygwfGFbKDB8YVtmKzI2OD4+Ml0pKyhhWzIzMisoMHxhW3crMTY+PjJdKT4+Ml08PDIpPj4yXSl8MCk+PjJdKXwwKT4+Ml09MSsoMHxhW2Y+PjJdKSxmPTB8dzAoYyx3KTtmOyl7Zm9yKGw9ZistNDh8MCxwPTB8YVsyMzIrKDB8YVsx''@;'; put 'put ''NisoMHxhWygzPT0oMyYoQT0wfGFbZj4+Ml0pfDApP2Y6Zis0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdOyEoKDB8cCk+PSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDMmQXwwKT9mOmwpKzQwPj4yXSk+PjJdKT4+Ml0pKTspaXRbKEE9MTY4KygwfGFbMTYrKDB8YVthWzE4MCsoMHxhW20+PjJd''@;'; put 'put ''KT4+Ml0+PjJdKT4+Ml0pfDApPj4xXT0xKygwfGl0W0E+PjFdKTw8MTY+PjE2LHA9cCsxfDAsQT0wfGFbZj4+Ml07Zj0wfFMwKGMsZil9dz0wfHp0KGMsdyl9Zm9yKGw9MHxpdFtmKzIzOD4+MV0sQT1mKzI2OHwwLGY9MHxpdFtmKzIzNj4+MV07ISgoMHxmKT4oMHxsKSk7KSgwfChtPTB8YVso''@;'; put 'put ''cD0yMTYrKDB8YVsxNisoMHxhWygwfGFbQT4+Ml0pKyhmPDwyKT4+Ml0pPj4yXSl8MCk+PjJdKSk+MSYmKGFbcD4+Ml09bSstMSksZj1mKzF8MH1mdW5jdGlvbiBtb2UobCxjLGYscCl7bHw9MCxwfD0wO3ZhciB3LGIsbT0wLEE9MDtpZigoMHwodz0xKyhmfD0wKXwwKSkhPSgwfGZlWzI3Myso''@;'; put 'put ''Yz0wfGFbKGI9MTYrKDB8YVsyMTIrKDB8YVsxNisoY3w9MCk+PjJdKT4+Ml0pfDApPj4yXSk+PjBdKSl7Zm9yKEE9MHxpdFtjKzIzNj4+MV07ISgoMHxBKT4oKG09MHxpdFtjKzIzOD4+MV0pPDwxNj4+MTZ8MCkpOylIWShsLDB8YVsoMHxhW2MrMjY4Pj4yXSkrKEE8PDIpPj4yXSksQT1BKzF8''@;'; put 'put ''MCxjPTB8YVtiPj4yXTtmb3IoQT0wfGl0W2MrMjM2Pj4xXTshKCgwfEEpPihtPDwxNj4+MTZ8MCkpOylxQyhwLDB8YVsoMHxhW2MrMjY4Pj4yXSkrKEE8PDIpPj4yXSxmKSxBPUErMXwwLG09MHxpdFsyMzgrKGw9MHxhW2I+PjJdKT4+MV0sYz1sO2ZlW2MrMjczPj4wXT13fX1mdW5jdGlvbiBm''@;'; put 'put ''cChsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MDtmb3IoQT0wfER0KGx8PTApO0E7KXtmb3IoYVsyMTIrKDB8YVtBKzE2Pj4yXSk+PjJdPTAsbT0wfHcwKGwsQSk7bTspe2M9MHxhWzE3MisoMHxhW20rMTY+PjJdKT4+Ml07ZTpkb3tpZigwfGMpZG97aWYoZj1jKy00OHwwLDEhPSgwfGZlWzE1''@;'; put 'put ''NisocD0wfGFbMTYrKDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOmYpKzQwPj4yXSk+PjJdKT4+MF0pKWJyZWFrIGU7YVtwKzIxMj4+Ml09MCxjPTB8YVthWzE4MCsoMHxhWzE2KygwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpmKSs0MD4+Ml0pPj4yXSk+PjJdPj4yXX13aGlsZSgwIT0oMHxjKSl9''@;'; put 'put ''d2hpbGUoMCk7bT0wfFMwKGwsbSl9QT0wfHp0KGwsQSl9dm9lKGwpfWZ1bmN0aW9uIHZvZShsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTA7Zm9yKGY9MTYrKGx8PTApfDAsYz0xOyEoKDB8Yyk+KDB8YVsxODArKHA9MHxhW2Y+PjJdKT4+Ml0pKTspdm9lKDB8YVsoMHxhW3ArMTg0Pj4y''@;'; put 'put ''XSkrKGM8PDIpPj4yXSksYz1jKzF8MDtmb3Iodz0wfER0KGwpO3c7KXtmb3IoMHxhWyhjPTIxMisoMHxhW3crMTY+PjJdKXwwKT4+Ml18fChhW2M+PjJdPWwpLEE9MHx3MChsLHcpO0E7KXtjPTB8YVsxNzIrKDB8YVtBKzE2Pj4yXSk+PjJdO2U6ZG97aWYoMHxjKWRve2lmKG09YystNDh8MCwx''@;'; put 'put ''IT0oMHxmZVsxNTYrKHA9MHxhWzE2KygwfGFbKDI9PSgzJihmPTB8YVtjPj4yXSl8MCk/YzptKSs0MD4+Ml0pPj4yXSk+PjBdKSlicmVhayBlOzB8YVsocD1wKzIxMnwwKT4+Ml18fChhW3A+PjJdPWwsZj0wfGFbYz4+Ml0pLGM9MHxhW2FbMTgwKygwfGFbMTYrKDB8YVsoMj09KDMmZnwwKT9j''@;'; put 'put ''Om0pKzQwPj4yXSk+PjJdKT4+Ml0+PjJdfXdoaWxlKDAhPSgwfGMpKX13aGlsZSgwKTtBPTB8UzAobCxBKX13PTB8enQobCx3KX19ZnVuY3Rpb24gVFUobCxjKXtjfD0wO3ZhciBiLGssTSxwZSxIZSxxZSxydCx1cixmPTAscD0wLG09MCxBPTAsdz0wLEQ9MCxSPTAsRz0wLHE9MCxnZT0wLGJl''@;'; put 'put ''PTAsT2U9MCxMZT0wLFJlPTAsVmU9MCxXZT0wLGF0PTAsU3Q9MCxrdD0wLHN0PTAsRXQ9MCxadD0wLGN0PTAsYnQ9MCxhbj0wLFNuPTAsSG49MDt1cj1sZSxsZT1sZSszMjB8MCxjdD11cisyOTZ8MCxadD11cisyODB8MCxWZT11cisxMzZ8MCxIZT11cisxMjB8MCxSPXVyKzEwNHwwLGI9dXIr''@;'; put 'put ''ODh8MCxtPXVyKzgwfDAsc3Q9dXIrMTZ8MCxydD11cixrPXVyKzI2NHwwLE09dXIrMjQ4fDAsRD11cisyMzJ8MCxHPXVyKzIxNnwwLFdlPXVyKzIwMHwwLGF0PXVyKzE4NHwwLHFlPXVyKzE2OHwwLGt0PXVyKzE1MnwwLEE9MHxJVSgwfExpKGx8PTAsODc3OTgpLGMpLGdlPTAhPSgwfChwZT0w''@;'; put 'put ''fElVKDB8TGkobCw4NzgwNCksYykpKSxjPTAhPSgwfEEpO2Rve2lmKGN8Z2UmJjB8KHA9MHxhWzgrKDB8YVsoSG49bCsxNnwwKT4+Ml0pPj4yXSkpe2lmKCgwfGFbcCs0Pj4yXSk+MSl7U249MHx0aSgwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpsKzQ4fDApKzQwPj4yXSksSG49MHx0aSgwfGFb''@;'; put 'put ''KDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHwwKSs0MD4+Ml0pLGFbbT4+Ml09U24sYVttKzQ+PjJdPUhuLCRyKDAsODc4MTAsbSk7YnJlYWt9cD0wfGFbNCsoYnQ9MHxhW3A+PjJdKT4+Ml0sYmU9bCstNDh8MCxPZT0wfGFbKDI9PSgwfChxPTMmYVtsPj4yXSkpP2w6YmUpKzQwPj4yXSxMZT1s''@;'; put 'put ''KzQ4fDAscT0wfGFbKDM9PSgwfHEpP2w6TGUpKzQwPj4yXSxhbj0wfFFuKDQ4KSxhW2FuKzEyPj4yXT1hWyhSZT1idCsxMnwwKT4+Ml0sYVthbis4Pj4yXT1hWyhTdD1idCs4fDApPj4yXTtkb3tpZihjKXtpZih3PTE2KygwfGFbQSsxNj4+Ml0pfDAsYVtjdD4+Ml09YVsoQT0xNisoMHxhW09l''@;'; put 'put ''KzE2Pj4yXSl8MCk+PjJdLGFbY3QrND4+Ml09YVtBKzQ+PjJdLGFbY3QrOD4+Ml09YVtBKzg+PjJdLGFbY3QrMTI+PjJdPWFbQSsxMj4+Ml0sISgwfHB5KGN0LHcpKSl7Rz0wfHRpKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOkxlKSs0MD4+Ml0pLEV0PTB8dGkoMHxhWygyPT0oMyZhW2w+PjJd''@;'; put 'put ''fDApP2w6YmUpKzQwPj4yXSksU249MHxMaShsLDg3Nzk4KSxhW2I+PjJdPUcsYVtiKzQ+PjJdPUV0LGFbYis4Pj4yXT1TbiwkcigwLDg3ODUxLGIpLFNuPTI2O2JyZWFrfWlmKGFbY3Q+PjJdPWFbKGM9MHxhW2J0Pj4yXSk+PjJdLGFbY3QrND4+Ml09YVtjKzQ+PjJdLGFbY3QrOD4+Ml09YVtj''@;'; put 'put ''Kzg+PjJdLGFbY3QrMTI+PjJdPWFbYysxMj4+Ml0sMHxweShjdCx3KSl7aWYoYVtjdD4+Ml09YVsoRXQ9MTYrKDB8YVtxKzE2Pj4yXSl8MCk+PjJdLGFbY3QrND4+Ml09YVtFdCs0Pj4yXSxhW2N0Kzg+PjJdPWFbRXQrOD4+Ml0sYVtjdCsxMj4+Ml09YVtFdCsxMj4+Ml0sMHxweShjdCx3KSl7''@;'; put 'put ''Rz0wfHRpKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOkxlKSs0MD4+Ml0pLEV0PTB8dGkoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6YmUpKzQwPj4yXSksU249MHxMaShsLDg3Nzk4KSxhW1I+PjJdPUcsYVtSKzQ+PjJdPUV0LGFbUis4Pj4yXT1TbiwkcigwLDg3ODk0LFIpLFNuPTI2O2JyZWFr''@;'; put 'put ''fWlmKDB8YVtTdD4+Ml18fFByKDg3OTM2LDg3OTQ3LDM2OSw4Nzk1OCksRz1idCsxNnwwLGFbWnQ+PjJdPWFbYz4+Ml0sYVtadCs0Pj4yXT1hW2MrND4+Ml0sYVtadCs4Pj4yXT1hW2MrOD4+Ml0sYVtadCsxMj4+Ml09YVtjKzEyPj4yXSxhW2N0Pj4yXT1hW0c+PjJdLGFbY3QrND4+Ml09YVtH''@;'; put 'put ''KzQ+PjJdLGFbY3QrOD4+Ml09YVtHKzg+PjJdLGFbY3QrMTI+PjJdPWFbRysxMj4+Ml0sUEkocnQsWnQsY3QsdyksYVsoRXQ9NDgrKDB8YVtidD4+Ml0pfDApPj4yXT1hW3J0Pj4yXSxhW0V0KzQ+PjJdPWFbcnQrND4+Ml0sYVtFdCs4Pj4yXT1hW3J0Kzg+PjJdLGFbRXQrMTI+PjJdPWFbcnQr''@;'; put 'put ''MTI+PjJdLEV0PTE2KygwfGFbYnQ+PjJdKXwwLGFbWnQ+PjJdPWFbcnQ+PjJdLGFbWnQrND4+Ml09YVtydCs0Pj4yXSxhW1p0Kzg+PjJdPWFbcnQrOD4+Ml0sYVtadCsxMj4+Ml09YVtydCsxMj4+Ml0sYVtjdD4+Ml09YVtHPj4yXSxhW2N0KzQ+PjJdPWFbRys0Pj4yXSxhW2N0Kzg+PjJdPWFb''@;'; put 'put ''Rys4Pj4yXSxhW2N0KzEyPj4yXT1hW0crMTI+PjJdLFhoKGssWnQsY3QpLGFbRXQ+PjJdPWFbaz4+Ml0sYVtFdCs0Pj4yXT1hW2srND4+Ml0sYVtFdCs4Pj4yXT1hW2srOD4+Ml0sYVtFdCsxMj4+Ml09YVtrKzEyPj4yXSxhW1p0Pj4yXT1hWyhjPTE2KyhFdD0wfGFbYnQ+PjJdKXwwKT4+Ml0s''@;'; put 'put ''YVtadCs0Pj4yXT1hW2MrND4+Ml0sYVtadCs4Pj4yXT1hW2MrOD4+Ml0sYVtadCsxMj4+Ml09YVtjKzEyPj4yXSxhW2N0Pj4yXT1hW0c+PjJdLGFbY3QrND4+Ml09YVtHKzQ+PjJdLGFbY3QrOD4+Ml09YVtHKzg+PjJdLGFbY3QrMTI+PjJdPWFbRysxMj4+Ml0sWGgoTSxadCxjdCksYVtFdD4+''@;'; put 'put ''Ml09YVtNPj4yXSxhW0V0KzQ+PjJdPWFbTSs0Pj4yXSxhW0V0Kzg+PjJdPWFbTSs4Pj4yXSxhW0V0KzEyPj4yXT1hW00rMTI+PjJdLGM9MzIrKEV0PTB8YVtidD4+Ml0pfDAsYVtadD4+Ml09YVsoRXQ9RXQrMTZ8MCk+PjJdLGFbWnQrND4+Ml09YVtFdCs0Pj4yXSxhW1p0Kzg+PjJdPWFbRXQr''@;'; put 'put ''OD4+Ml0sYVtadCsxMj4+Ml09YVtFdCsxMj4+Ml0sYVtjdD4+Ml09YVtydD4+Ml0sYVtjdCs0Pj4yXT1hW3J0KzQ+PjJdLGFbY3QrOD4+Ml09YVtydCs4Pj4yXSxhW2N0KzEyPj4yXT1hW3J0KzEyPj4yXSxYaChELFp0LGN0KSxhW2M+PjJdPWFbRD4+Ml0sYVtjKzQ+PjJdPWFbRCs0Pj4yXSxh''@;'; put 'put ''W2MrOD4+Ml09YVtEKzg+PjJdLGFbYysxMj4+Ml09YVtEKzEyPj4yXSwhKGM9MHxhW1JlPj4yXSkpe0V0PTM7YnJlYWt9RXQ9MysoMHx5RihsLDB8YVtidD4+Ml0sMCwwLGFuLGMpKXwwO2JyZWFrfWZvcihBPXArLTF8MCxjPTA7ISgoMHxjKT49KDB8QSl8fDB8RFUoKDB8YVtidD4+Ml0pKyhj''@;'; put 'put ''PDw0KXwwLHcpKTspYz1jKzN8MDtpZihtPTAhPSgwfChwPTB8YVtSZT4+Ml0pKSwoMHxjKSE9KDB8QSkpe20mJihjPTB8eUYobCwwfGFbYnQ+PjJdLDAsYyxhbixwKSksRXQ9YyszfDA7YnJlYWt9aWYobSl7RXQ9YW4rMzJ8MCxSPSgwfGFbYnQ+PjJdKSsoQTw8NCl8MCxhW1p0Pj4yXT1hWyhE''@;'; put 'put ''PWJ0KzMyfDApPj4yXSxhW1p0KzQ+PjJdPWFbRCs0Pj4yXSxhW1p0Kzg+PjJdPWFbRCs4Pj4yXSxhW1p0KzEyPj4yXT1hW0QrMTI+PjJdLGFbY3Q+PjJdPWFbUj4+Ml0sYVtjdCs0Pj4yXT1hW1IrND4+Ml0sYVtjdCs4Pj4yXT1hW1IrOD4+Ml0sYVtjdCsxMj4+Ml09YVtSKzEyPj4yXSxQSShH''@;'; put 'put ''LFp0LGN0LHcpLGFbRXQ+PjJdPWFbRz4+Ml0sYVtFdCs0Pj4yXT1hW0crND4+Ml0sYVtFdCs4Pj4yXT1hW0crOD4+Ml0sYVtFdCsxMj4+Ml09YVtHKzEyPj4yXSxFdD1BO2JyZWFrfVByKDg3OTc1LDg3OTQ3LDM4Nyw4Nzk1OCl9ZWxzZSBTbj0yNn13aGlsZSgwKTsyNj09KDB8U24pJiYoYz1w''@;'; put 'put ''Ky0xfDAsMHxhW1JlPj4yXSYmKGFbKEV0PWFuKzMyfDApPj4yXT1hWyhHPWJ0KzMyfDApPj4yXSxhW0V0KzQ+PjJdPWFbRys0Pj4yXSxhW0V0Kzg+PjJdPWFbRys4Pj4yXSxhW0V0KzEyPj4yXT1hW0crMTI+PjJdKSxFdD1jKTtkb3tpZihnZSl7aWYobT0xNisoMHxhW3BlKzE2Pj4yXSl8MCxh''@;'; put 'put ''W2N0Pj4yXT1hWyhnZT0xNisoMHxhW3ErMTY+PjJdKXwwKT4+Ml0sYVtjdCs0Pj4yXT1hW2dlKzQ+PjJdLGFbY3QrOD4+Ml09YVtnZSs4Pj4yXSxhW2N0KzEyPj4yXT1hW2dlKzEyPj4yXSwhKDB8cHkoY3QsbSkpKXtadD0wfHRpKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOkxlKSs0MD4+Ml0p''@;'; put 'put ''LGN0PTB8dGkoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6YmUpKzQwPj4yXSksU249MHxMaShsLDg3ODA0KSxhW0hlPj4yXT1adCxhW0hlKzQ+PjJdPWN0LGFbSGUrOD4+Ml09U24sJHIoMCw4Nzk4NixIZSksU249NTI7YnJlYWt9aWYoYVtjdD4+Ml09YVsoYz0oMHxhW2J0Pj4yXSkrKEV0PDw0''@;'; put 'put ''KXwwKT4+Ml0sYVtjdCs0Pj4yXT1hW2MrND4+Ml0sYVtjdCs4Pj4yXT1hW2MrOD4+Ml0sYVtjdCsxMj4+Ml09YVtjKzEyPj4yXSwwfHB5KGN0LG0pKXtpZihhW2N0Pj4yXT1hWyhzdD0xNisoMHxhW09lKzE2Pj4yXSl8MCk+PjJdLGFbY3QrND4+Ml09YVtzdCs0Pj4yXSxhW2N0Kzg+PjJdPWFb''@;'; put 'put ''c3QrOD4+Ml0sYVtjdCsxMj4+Ml09YVtzdCsxMj4+Ml0sMHxweShjdCxtKSl7WnQ9MHx0aSgwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpMZSkrNDA+PjJdKSxjdD0wfHRpKDB8YVsoMj09KDMmYVtsPj4yXXwwKT9sOmJlKSs0MD4+Ml0pLFNuPTB8TGkobCw4NzgwNCksYVtWZT4+Ml09WnQsYVtW''@;'; put 'put ''ZSs0Pj4yXT1jdCxhW1ZlKzg+PjJdPVNuLCRyKDAsODgwMjksVmUpLFNuPTUyO2JyZWFrfWlmKDB8YVtSZT4+Ml18fFByKDg3OTc1LDg3OTQ3LDQyOSw4Nzk1OCksVmU9YW4rMzJ8MCxhW1p0Pj4yXT1hW2M+PjJdLGFbWnQrND4+Ml09YVtjKzQ+PjJdLGFbWnQrOD4+Ml09YVtjKzg+PjJdLGFb''@;'; put 'put ''WnQrMTI+PjJdPWFbYysxMj4+Ml0sYVtjdD4+Ml09YVtWZT4+Ml0sYVtjdCs0Pj4yXT1hW1ZlKzQ+PjJdLGFbY3QrOD4+Ml09YVtWZSs4Pj4yXSxhW2N0KzEyPj4yXT1hW1ZlKzEyPj4yXSxQSShydCxadCxjdCxtKSxhWyhzdD0oMHxhW2J0Pj4yXSkrKChmPUV0Ky0zfDApPDw0KXwwKT4+Ml09''@;'; put 'put ''YVtydD4+Ml0sYVtzdCs0Pj4yXT1hW3J0KzQ+PjJdLGFbc3QrOD4+Ml09YVtydCs4Pj4yXSxhW3N0KzEyPj4yXT1hW3J0KzEyPj4yXSxjPSgwfGFbYnQ+PjJdKSsoKHN0PUV0Ky0xfDApPDw0KXwwLGFbWnQ+PjJdPWFbcnQ+PjJdLGFbWnQrND4+Ml09YVtydCs0Pj4yXSxhW1p0Kzg+PjJdPWFb''@;'; put 'put ''cnQrOD4+Ml0sYVtadCsxMj4+Ml09YVtydCsxMj4+Ml0sYVtjdD4+Ml09YVtWZT4+Ml0sYVtjdCs0Pj4yXT1hW1ZlKzQ+PjJdLGFbY3QrOD4+Ml09YVtWZSs4Pj4yXSxhW2N0KzEyPj4yXT1hW1ZlKzEyPj4yXSxYaChXZSxadCxjdCksYVtjPj4yXT1hW1dlPj4yXSxhW2MrND4+Ml09YVtXZSs0''@;'; put 'put ''Pj4yXSxhW2MrOD4+Ml09YVtXZSs4Pj4yXSxhW2MrMTI+PjJdPWFbV2UrMTI+PjJdLGt0PShjPTB8YVtidD4+Ml0pKyhFdDw8NCl8MCxhW1p0Pj4yXT1hWyhjPWMrKHN0PDw0KXwwKT4+Ml0sYVtadCs0Pj4yXT1hW2MrND4+Ml0sYVtadCs4Pj4yXT1hW2MrOD4+Ml0sYVtadCsxMj4+Ml09YVtj''@;'; put 'put ''KzEyPj4yXSxhW2N0Pj4yXT1hW1ZlPj4yXSxhW2N0KzQ+PjJdPWFbVmUrND4+Ml0sYVtjdCs4Pj4yXT1hW1ZlKzg+PjJdLGFbY3QrMTI+PjJdPWFbVmUrMTI+PjJdLFhoKGF0LFp0LGN0KSxhW2t0Pj4yXT1hW2F0Pj4yXSxhW2t0KzQ+PjJdPWFbYXQrND4+Ml0sYVtrdCs4Pj4yXT1hW2F0Kzg+''@;'; put 'put ''PjJdLGFba3QrMTI+PjJdPWFbYXQrMTI+PjJdLGM9KGt0PTB8YVtidD4+Ml0pKyhFdCstMjw8NCl8MCxhW1p0Pj4yXT1hWyhzdD1rdCsoc3Q8PDQpfDApPj4yXSxhW1p0KzQ+PjJdPWFbc3QrND4+Ml0sYVtadCs4Pj4yXT1hW3N0Kzg+PjJdLGFbWnQrMTI+PjJdPWFbc3QrMTI+PjJdLGFbY3Q+''@;'; put 'put ''PjJdPWFbcnQ+PjJdLGFbY3QrND4+Ml09YVtydCs0Pj4yXSxhW2N0Kzg+PjJdPWFbcnQrOD4+Ml0sYVtjdCsxMj4+Ml09YVtydCsxMj4+Ml0sWGgocWUsWnQsY3QpLGFbYz4+Ml09YVtxZT4+Ml0sYVtjKzQ+PjJdPWFbcWUrND4+Ml0sYVtjKzg+PjJdPWFbcWUrOD4+Ml0sYVtjKzEyPj4yXT1h''@;'; put 'put ''W3FlKzEyPj4yXSwhKGM9MHxhW1N0Pj4yXSkpYnJlYWs7Zj0wfE9hKGwsMHxhW2J0Pj4yXSxmLGYsYW4sYyk7YnJlYWt9Zm9yKHA9RXQ7KDB8cCk+MDspe2ZvcihjPTA7NCE9KDB8Yyk7KWFbKGF0PXN0KyhjPDw0KXwwKT4+Ml09YVsoV2U9KDB8YVtidD4+Ml0pKyhwLWM8PDQpfDApPj4yXSxh''@;'; put 'put ''W2F0KzQ+PjJdPWFbV2UrND4+Ml0sYVthdCs4Pj4yXT1hW1dlKzg+PjJdLGFbYXQrMTI+PjJdPWFbV2UrMTI+PjJdLGM9YysxfDA7aWYoMHxEVShzdCxtKSl7Yz0wLFNuPTQzO2JyZWFrfXA9cCstM3wwfWU6ZG97aWYoNDM9PSgwfFNuKSlmb3IoOzspe2lmKFNuPTAsND09KDB8YykpYnJlYWsg''@;'; put 'put ''ZTthWyhTbj0oMHxhW2J0Pj4yXSkrKHAtYzw8NCl8MCk+PjJdPWFbKGF0PXN0KyhjPDw0KXwwKT4+Ml0sYVtTbis0Pj4yXT1hW2F0KzQ+PjJdLGFbU24rOD4+Ml09YVthdCs4Pj4yXSxhW1NuKzEyPj4yXT1hW2F0KzEyPj4yXSxjPWMrMXwwLFNuPTQzfX13aGlsZSgwKTtpZigwfHApe2lmKGY9''@;'; put 'put ''cCstM3wwLCEoYz0wfGFbU3Q+PjJdKSlicmVhaztmPTB8T2EobCwwfGFbYnQ+PjJdLGYsRXQrLTN8MCxhbixjKTticmVha31pZigwfGFbU3Q+PjJdKXtmPWFuKzE2fDAsbD0wfGFbYnQ+PjJdLGFbWnQ+PjJdPWFbKHN0PWJ0KzE2fDApPj4yXSxhW1p0KzQ+PjJdPWFbc3QrND4+Ml0sYVtadCs4''@;'; put 'put ''Pj4yXT1hW3N0Kzg+PjJdLGFbWnQrMTI+PjJdPWFbc3QrMTI+PjJdLGFbY3Q+PjJdPWFbbD4+Ml0sYVtjdCs0Pj4yXT1hW2wrND4+Ml0sYVtjdCs4Pj4yXT1hW2wrOD4+Ml0sYVtjdCsxMj4+Ml09YVtsKzEyPj4yXSxQSShrdCxadCxjdCxtKSxhW2Y+PjJdPWFba3Q+PjJdLGFbZis0Pj4yXT1h''@;'; put 'put ''W2t0KzQ+PjJdLGFbZis4Pj4yXT1hW2t0Kzg+PjJdLGFbZisxMj4+Ml09YVtrdCsxMj4+Ml0sZj0wO2JyZWFrfVByKDg3OTM2LDg3OTQ3LDQ1Miw4Nzk1OCl9ZWxzZSBTbj01Mn13aGlsZSgwKTtmb3IoNTI9PSgwfFNuKSYmKDB8YVtTdD4+Ml0mJihhWyhmPWFuKzE2fDApPj4yXT1hWyhTbj1i''@;'; put 'put ''dCsxNnwwKT4+Ml0sYVtmKzQ+PjJdPWFbU24rND4+Ml0sYVtmKzg+PjJdPWFbU24rOD4+Ml0sYVtmKzEyPj4yXT1hW1NuKzEyPj4yXSksZj0wKSxhWyhwPWFuKzR8MCk+PjJdPWM9RXQtZisxfDAsYVthbj4+Ml09MHxRbihjPDw0KSxjPTA7ISgoMHxjKT49KDB8YVtwPj4yXSkpOylhWyhTbj0o''@;'; put 'put ''MHxhW2FuPj4yXSkrKGM8PDQpfDApPj4yXT1hWyhsPSgwfGFbYnQ+PjJdKSsoZjw8NCl8MCk+PjJdLGFbU24rND4+Ml09YVtsKzQ+PjJdLGFbU24rOD4+Ml09YVtsKzg+PjJdLGFbU24rMTI+PjJdPWFbbCsxMj4+Ml0sZj1mKzF8MCxjPWMrMXwwO0Z0KDB8YVtidD4+Ml0pLEZ0KGJ0KSxhW2Fb''@;'; put 'put ''OCsoMHxhW0huPj4yXSk+PjJdPj4yXT1hbn19d2hpbGUoMCk7bGU9dXJ9ZnVuY3Rpb24gSVUobCxjKXt2YXIgZixwO3JldHVybiBjfD0wLHA9bGUsbGU9bGUrMTZ8MCxmPXAsMCE9KDB8KGx8PTApKSYmMCE9KDB8ZmVbbD4+MF0pPyhjPTB8RE4oYyxsKSl8fChhW2Y+PjJdPWwsJHIoMCw4ODE0''@;'; put 'put ''OSxmKSxjPTApOmM9MCxsZT1wLDB8Y31mdW5jdGlvbiBweShsLGMpe3ZhciBwLGY9MDtyZXR1cm4gMHwoK19bKGN8PTApPj4zXTw9KHA9K19bKGx8PTApPj4zXSkmJnA8PStfW2MrMTY+PjNdJiYrX1tjKzg+PjNdPD0oZj0rX1tsKzg+PjNdKT9mPD0rX1tjKzI0Pj4zXSYxOjApfWZ1bmN0aW9u''@;'; put 'put ''IFBJKGwsYyxmLHApe2x8PTA7dmFyIGssRCxxLHBlLGdlLGJlLE9lLExlLFdlLGF0LG09MCxBPTAsdz0wLGI9MCxNPTAsUj0wLEc9MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTA7YXQ9bGUsbGU9bGUrNDY0fDAsRD1hdCs0OHwwLFdlPWF0KzMyfDAsTGU9YXQsUmU9YXQrMzY0fDAsSGU9YXQr''@;'; put 'put ''MjY0fDAscWU9YXQrMTY0fDAscnQ9YXQrNjR8MCxxPStfWyhjfD0wKT4+M10scGU9K19bYys4Pj4zXSxnZT0rX1soZnw9MCk+PjNdLGJlPStfW2YrOD4+M10sYVsoT2U9YXQrMTZ8MCk+PjJdPWFbKHB8PTApPj4yXSxhW09lKzQ+PjJdPWFbcCs0Pj4yXSxhW09lKzg+PjJdPWFbcCs4Pj4yXSxh''@;'; put 'put ''W09lKzEyPj4yXT1hW3ArMTI+PjJdLGFbTGU+PjJdPWFbKHA9cCsxNnwwKT4+Ml0sYVtMZSs0Pj4yXT1hW3ArND4+Ml0sYVtMZSs4Pj4yXT1hW3ArOD4+Ml0sYVtMZSsxMj4+Ml09YVtwKzEyPj4yXSxnZTwoaz0rX1tPZT4+M10pJiYobT1wZSsgKygwfH5+KChrLXEpKihwZS1iZSkvKHEtZ2Up''@;'; put 'put ''KSkpPj0rX1tPZSs4Pj4zXSYmbTw9K19bTGUrOD4+M10/KFI9bSxHPWspOnc9NDtkb3tpZig0PT0oMHx3KSl7aWYoZ2U+KGI9K19bTGU+PjNdKSl7aWYoKEE9cGUrICsoMHx+figoYi1xKSoocGUtYmUpLyhxLWdlKSkpKT49KG09K19bT2UrOD4+M10pJiZBPD0rX1tMZSs4Pj4zXSl7Uj1BLEc9''@;'; put 'put ''YjticmVha319ZWxzZSBtPStfW09lKzg+PjNdO2lmKGJlPG0mJiEoISgoTT1xKyArKDB8fn4oKG0tcGUpKihxLWdlKS8ocGUtYmUpKSkpPj1rKXwhKE08PWIpKSl7Uj1tLEc9TTticmVha31pZihiZT4obT0rX1tMZSs4Pj4zXSkmJiEoISgoVmU9cSsgKygwfH5+KChtLXBlKSoocS1nZSkvKHBl''@;'; put 'put ''LWJlKSkpKT49ayl8IShWZTw9YikpKXtSPW0sRz1WZTticmVha31hW0Q+PjJdPWFbYz4+Ml0sYVtEKzQ+PjJdPWFbYys0Pj4yXSxhW0QrOD4+Ml09YVtjKzg+PjJdLGFbRCsxMj4+Ml09YVtjKzEyPj4yXSxSZT0wfE5JKEQsUmUpLGFbRD4+Ml09YVtmPj4yXSxhW0QrND4+Ml09YVtmKzQ+PjJd''@;'; put 'put ''LGFbRCs4Pj4yXT1hW2YrOD4+Ml0sYVtEKzEyPj4yXT1hW2YrMTI+PjJdLEhlPTB8TkkoRCxIZSksYVtEPj4yXT1hW09lPj4yXSxhW0QrND4+Ml09YVtPZSs0Pj4yXSxhW0QrOD4+Ml09YVtPZSs4Pj4yXSxhW0QrMTI+PjJdPWFbT2UrMTI+PjJdLHFlPTB8TkkoRCxxZSksYVtEPj4yXT1hW0xl''@;'; put 'put ''Pj4yXSxhW0QrND4+Ml09YVtMZSs0Pj4yXSxhW0QrOD4+Ml09YVtMZSs4Pj4yXSxhW0QrMTI+PjJdPWFbTGUrMTI+PjJdLHJ0PTB8TkkoRCxydCksYVtXZT4+Ml09UmUsYVtXZSs0Pj4yXT1IZSxhW1dlKzg+PjJdPXFlLGFbV2UrMTI+PjJdPXJ0LCRyKDEsODgwNzEsV2UpLFByKDEzODM5NCw4''@;'; put 'put ''Nzk0Nyw3OCw4ODEyMyl9fXdoaWxlKDApO19bbD4+M109RyxfW2wrOD4+M109UixsZT1hdH1mdW5jdGlvbiBYaChsLGMsZil7dmFyIHA7cD0uNSooK19bOCsoZnw9MCk+PjNdKyArX1s4KyhjfD0wKT4+M10pLF9bKGx8PTApPj4zXT0uNSooK19bZj4+M10rICtfW2M+PjNdKSxfW2wrOD4+M109''@;'; put 'put ''cH1mdW5jdGlvbiBEVShsLGMpe2x8PTAsY3w9MDt2YXIgYixrLE0sZj0wLHA9MCxtPTAsQT0wLHc9MDtmb3IoTT1sZSxsZT1sZSs4MHwwLGI9TSsxNnwwLGs9TSxwPTA7NCE9KDB8cCk7KWFbKHc9YisocDw8NCl8MCk+PjJdPWFbKEE9bCsocDw8NCl8MCk+PjJdLGFbdys0Pj4yXT1hW0ErND4+''@;'; put 'put ''Ml0sYVt3Kzg+PjJdPWFbQSs4Pj4yXSxhW3crMTI+PjJdPWFbQSsxMj4+Ml0scD1wKzF8MDtyZXR1cm4oZj0rRkkobCwwLDEsK19bYz4+M10sK19bKHA9Yys4fDApPj4zXSwrX1sodz1jKzI0fDApPj4zXSkpPj0wJmY8Mj93dShrLGIsMyxmLGwsMCk6Zj0yLChtPStGSShsLDAsZj4xPzE6Ziwr''@;'; put 'put ''X1soQT1jKzE2fDApPj4zXSwrX1twPj4zXSwrX1t3Pj4zXSkpPj0wJm08ZiYmKHd1KGssYiwzLG0sbCwwKSxmPW0pLChtPStISShsLDAsZj4xPzE6ZiwrX1twPj4zXSwrX1tjPj4zXSwrX1tBPj4zXSkpPj0wJm08ZiYmKHd1KGssYiwzLG0sbCwwKSxmPW0pLChtPStISShsLDAsZj4xPzE6Ziwr''@;'; put 'put ''X1t3Pj4zXSwrX1tjPj4zXSwrX1tBPj4zXSkpPj0wJm08ZiYmKHd1KGssYiwzLG0sbCwwKSxmPW0pLGxlPU0sZjwyfDB9ZnVuY3Rpb24gRkkobCxjLGYscCxtLEEpe2x8PTAsYz0rYyxmPStmLHA9K3AsbT0rbSxBPStBO3ZhciBiLGssTSxELHc9MDtEPWxlLGxlPWxlKzE0NHwwLGs9RCs4MHww''@;'; put 'put ''LE09RCsxNnwwLGI9RDtlOmRve2lmKGMhPWYpe3N3aXRjaCgwfExVKGwscCkpe2Nhc2UgMDpjPS0xO2JyZWFrIGU7Y2FzZSAxOmlmKCtlbygrKCtfW2wrNDg+PjNdLXApKTw9LjAwNSl7Yz0hKChjPStfW2wrNTY+PjNdKT49bSl8IShjPD1BKT8tMTpmO2JyZWFrIGV9fXd1KGIsbCwzLC41LGss''@;'; put 'put ''TSksKGM9K0ZJKGssYyx3PS41KihmK2MpLHAsbSxBKSk+PTB8fChjPStGSShNLHcsZixwLG0sQSkpfX13aGlsZSgwKTtyZXR1cm4gbGU9RCwrY31mdW5jdGlvbiBISShsLGMsZixwLG0sQSl7bHw9MCxjPStjLGY9K2YscD0rcCxtPSttLEE9K0E7dmFyIGIsayxNLEQsdz0wO0Q9bGUsbGU9bGUr''@;'; put 'put ''MTQ0fDAsaz1EKzgwfDAsTT1EKzE2fDAsYj1EO2U6ZG97aWYoYyE9Zil7c3dpdGNoKDB8QW9lKGwscCkpe2Nhc2UgMDpjPS0xO2JyZWFrIGU7Y2FzZSAxOmlmKCtlbygrKCtfW2wrNTY+PjNdLXApKTw9LjAwNSl7Yz0hKChjPStfW2wrNDg+PjNdKT49bSl8IShjPD1BKT8tMTpmO2JyZWFrIGV9''@;'; put 'put ''fXd1KGIsbCwzLC41LGssTSksKGM9K0hJKGssYyx3PS41KihmK2MpLHAsbSxBKSk+PTB8fChjPStISShNLHcsZixwLG0sQSkpfX13aGlsZSgwKTtyZXR1cm4gbGU9RCwrY31mdW5jdGlvbiBBb2UobCxjKXt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTA7Zm9yKGY9MSxwPW09KEE9K19bOCso''@;'; put 'put ''bHw9MCk+PjNdKTwoYz0rYyk/LTE6QT5jJjEsbT0wPT0oMHxtKSYxOzQhPSgwfGYpOyl3PW0rKDAhPSgwfHApJigwfChiPShBPStfW2wrKGY8PDQpKzg+PjNdKTxjPy0xOkE+YyYxKSkhPSgwfHApJjEpfDAsZj1mKzF8MCxwPWIsbT13O3JldHVybiAwfG19ZnVuY3Rpb24gTFUobCxjKXt2YXIg''@;'; put 'put ''Zj0wLHA9MCxtPTAsQT0wLHc9MCxiPTA7Zm9yKGY9MSxwPW09KEE9K19bKGx8PTApPj4zXSk8KGM9K2MpPy0xOkE+YyYxLG09MD09KDB8bSkmMTs0IT0oMHxmKTspdz1tKygwIT0oMHxwKSYoMHwoYj0oQT0rX1tsKyhmPDw0KT4+M10pPGM/LTE6QT5jJjEpKSE9KDB8cCkmMSl8MCxmPWYrMXww''@;'; put 'put ''LHA9YixtPXc7cmV0dXJuIDB8bX1mdW5jdGlvbiBOSShsLGMpe3ZhciBmLHAsbTtyZXR1cm4gY3w9MCxmPWxlLGxlPWxlKzE2fDAsbT0rX1s4KyhsfD0wKT4+M10sX1socD1mKT4+M109K19bbD4+M10sX1twKzg+PjNdPW0sb28oYyw4ODEzNyxwKSxsZT1mLDB8Y31mdW5jdGlvbiBSVShsKXty''@;'; put 'put ''ZXR1cm4gMHwoMT09KDB8ZmVbMTU2KyhsPTB8YVsxNisobHw9MCk+PjJdKT4+MF0pJiYxPT0oMHxhW2wrMTc2Pj4yXSkmJjE9PSgwfGFbbCsxODQ+PjJdKT8wPT0oMHxhW2wrMTA0Pj4yXSkmMTowKX1mdW5jdGlvbiBQVShsKXtyZXR1cm4gMHwoMT09KDB8ZmVbMTU2KyhsPTB8YVsxNisobHw9''@;'; put 'put ''MCk+PjJdKT4+MF0pJiYxPT0oMHxhW2wrMTg0Pj4yXSkmJjE9PSgwfGFbbCsxNzY+PjJdKT8wPT0oMHxhW2wrMTA0Pj4yXSkmMTowKX1mdW5jdGlvbiBIVShsLGMpe3ZhciBmLHA7MCE9KDB8KHA9MHxhWyhsPSgwfGFbMjY4KygwfGFbMTYrKGx8PTApPj4yXSk+PjJdKSsoYVsyMzIrKGY9MHxh''@;'; put 'put ''WzE2KyhjfD0wKT4+Ml0pPj4yXTw8Mil8MCk+PjJdKSkmJigwfGFbMjM2KygwfGFbcCsxNj4+Ml0pPj4yXSk8PSgwfGFbZisyMzY+PjJdKXx8KGFbbD4+Ml09Yyl9ZnVuY3Rpb24gTlUobCxjKXtsfD0wLGN8PTA7Zm9yKHZhciBmPTAscD0wOzB8ZmVbMTEyKyhwPTB8YVtsKzE2Pj4yXSk+PjBd''@;'; put 'put ''OylsPTB8YVtwKzExNj4+Ml07Zm9yKDswfGZlWzExMisoZj0wfGFbYysxNj4+Ml0pPj4wXTspYz0wfGFbZisxMTY+PjJdO3JldHVybiAwfChsPTA9PSgwfGZlW3ArMTUzPj4wXSkmJjA9PSgwfGZlW2YrMTUzPj4wXSk/KDB8QXIoKDB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMHwoZj0zJmFb''@;'; put 'put ''bD4+Ml0pKT9sOmwrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSktKDB8YVsyMzIrKDB8YVsxNisoMHxhWygyPT0oMHxmKT9sOmwrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pfDAsKDB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMHwocD0zJmFbYz4+Ml0pKT9jOmMrNDh8MCkrNDA+PjJdKT4+Ml0p''@;'; put 'put ''Pj4yXSktKDB8YVsyMzIrKDB8YVsxNisoMHxhWygyPT0oMHxwKT9jOmMrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pfDApKT4wJjE6MCl9ZnVuY3Rpb24gSUgobCxjKXtsfD0wLGN8PTA7dmFyIGIsayxmPTAscD0wLG09MCxBPTAsdz0wO2ZvcihrPWxlLGxlPWxlKzU0NHwwLGZ1bmN0aW9uIFZV''@;'; put 'put ''KGwsYyxmKXtsfD0wLGFbKGN8PTApPj4yXT1mfD0wLGFbYys0Pj4yXT1mKzUxMixhW2MrMTI+PjJdPTAsYVtjKzg+PjJdPTAsYVtsPj4yXT1jLGFbbCs0Pj4yXT1jLGFbbCs4Pj4yXT1mfShiPWsrNTI4fDAsays1MTJ8MCxrKSxmZVsxOTM3NzBdPShmPTErKDB8ZmVbMTkzNzcwXSk8PDI0Pj4y''@;'; put 'put ''NCk8PDI0Pj4yND09MD8xOmYsYVsyMjArKGY9MHxhW2wrMTY+PjJdKT4+Ml09MCxhW2YrMjMyPj4yXT0wLGY9KDB8Yyk+MCxjPTB8RHQobCk7YzspZiYmMCE9KDB8KHc9MHxhWzIxMisoQT0wfGFbYysxNj4+Ml0pPj4yXSkpPyhtPTB8YVsoMHxhWzI2OCsoMHxhW3crMTY+PjJdKT4+Ml0pKyhh''@;'; put 'put ''W0ErMjMyPj4yXTw8Mik+PjJdLHA9Nyk6cD02LDY9PSgwfHApJiYocD0wLCgwfGMpPT0oMHxnMShjKSkpJiYobT1jLHA9NyksNz09KDB8cCkmJigwfGZlWzE1NysoMHxhW20rMTY+PjJdKT4+MF0pIT0oMHxmZVsxOTM3NzBdKSYmKHdvZShsKSxqVShiLGwsbSksYm9lKGwpKSxjPTB8enQobCxj''@;'; put 'put ''KTsoZnVuY3Rpb24gc2sobCl7dmFyIGM9MDtmb3IobD0wfGFbMTIrKDB8YVsobHw9MCk+PjJdKT4+Ml07bDspYz0wfGFbbCsxMj4+Ml0sRnQoMHxhW2w+PjJdKSxGdChsKSxsPWN9KShiKSxsZT1rfWZ1bmN0aW9uIHdvZShsKXthWzE5MisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXT0wLGFbNDY3''@;'; put 'put ''OTNdPTB9ZnVuY3Rpb24galUobCxjLGYpe2N8PTA7dmFyIGssTSxELEcscSxwPTAsbT0wLEE9MCx3PTAsYj0wLFI9MDtxPWxlLGxlPWxlKzMyfDAsRz1xLFpVKGx8PTAsZnw9MCksaz1HKzh8MCxNPUcrMTZ8MCxEPUcrMjR8MDtlOmZvcig7Uj0wfERIKGwpLFI7KWlmKGY9UisxNnwwLCgwfGZl''@;'; put 'put ''WzE1NysoMHxhW2Y+PjJdKT4+MF0pIT0oMHxmZVsxOTM3NzBdKSlmb3IoTEgoYyxSKSxBPTB8YVtmPj4yXSxtPUErMTgwfDAsYj0wfGFbbSs0Pj4yXSx3PUcsYVt3Pj4yXT1hW20+PjJdLGFbdys0Pj4yXT1iLHc9QSsxNzJ8MCxiPTB8YVt3KzQ+PjJdLG09ayxhW20+PjJdPWFbdz4+Ml0sYVtt''@;'; put 'put ''KzQ+PjJdPWIsbT1BKzE4OHwwLGI9MHxhW20rND4+Ml0sdz1NLGFbdz4+Ml09YVttPj4yXSxhW3crND4+Ml09YixBPUErMTk2fDAsdz0wfGFbQSs0Pj4yXSxiPUQsYVtiPj4yXT1hW0E+PjJdLGFbYis0Pj4yXT13LGI9Mzs7KXtpZigoMHxiKTw9LTEpY29udGludWUgZTtmPTB8YVtHKyhiPDwz''@;'; put 'put ''KT4+Ml07dDpkb3tpZigwfGYpZm9yKHc9KDB8YVtHKyhiPDwzKSs0Pj4yXSktMXwwLEE9Zisodzw8Mil8MDs7KXtpZigoMHx3KTw9LTEpYnJlYWsgdDsoMHwoZj0wfGFbKDI9PSgwfChtPTMmYVsocD0wfGFbQT4+Ml0pPj4yXSkpP3A6cCstNDh8MCkrNDA+PjJdKSk9PSgwfFIpJiYoZj0wfGFb''@;'; put 'put ''KDM9PSgwfG0pP3A6cCs0OHwwKSs0MD4+Ml0pLCgwfGZlWzE1NysoMHxhW2YrMTY+PjJdKT4+MF0pIT0oMHxmZVsxOTM3NzBdKSYmKDB8Zik9PSgwfGcxKGYpKSYmWlUobCxmKSxBPUErLTR8MCx3PXcrLTF8MH19d2hpbGUoMCk7Yj1iKy0xfDB9bGU9cX1mdW5jdGlvbiBib2UobCl7dmFyIGYs''@;'; put 'put ''cCxjPTAsbT0wO2FbKG09MjIwKyhjPTB8YVsoZj0xNisobHw9MCl8MCk+PjJdKXwwKT4+Ml09bD0xKyhwPTB8YVttPj4yXSl8MCxsPShjPTB8YVtjKzIxNj4+Ml0pPzB8VjAoYyxsPDwyKTowfFFuKGw8PDIpLGFbMjE2KyhtPTB8YVtmPj4yXSk+PjJdPWwsYVtsKyhwPDwyKT4+Ml09YVttKzE5''@;'; put 'put ''Mj4+Ml19ZnVuY3Rpb24gWlUobCxjKXtjfD0wO3ZhciBwLG0sQSx3LGIsZj0wO2I9bGUsbGU9bGUrMTZ8MCxtPWIrOHwwLHA9YiwoMHwoZj0wfGFbKHc9OCsobHw9MCl8MCk+PjJdKSk9PSgwfGFbNCsobD0wfGFbKEE9bCs0fDApPj4yXSk+PjJdKSYmKChmPTB8YVtsKzEyPj4yXSl8fCgoZj0w''@;'; put 'put ''fHZyKDE2KSl8fCRyKDEsOTg5NjkscCksYVtmKzg+PjJdPWFbQT4+Ml0sYVtmKzEyPj4yXT0wLGw9MHx2cig0ZTYpLGFbZj4+Ml09bCxsfHwoJHIoMSw4ODM3NyxtKSxsPTB8YVtmPj4yXSksYVtmKzQ+PjJdPWwrNGU2LGFbMTIrKDB8YVtBPj4yXSk+PjJdPWYpLGFbQT4+Ml09ZixhW3c+PjJd''@;'; put 'put ''PWY9MHxhW2Y+PjJdKSxmZVsxNTcrKDB8YVtjKzE2Pj4yXSk+PjBdPTErKDB8WHRbMTkzNzcwXSksYVt3Pj4yXT1mKzQsYVtmPj4yXT1jLGxlPWJ9ZnVuY3Rpb24gREgobCl7dmFyIGYscCxtLGM9MCxBPTA7cmV0dXJuKDB8KGM9MHxhWyhtPTgrKGx8PTApfDApPj4yXSkpPT0oMHxhWyhwPTB8''@;'; put 'put ''YVsoZj1sKzR8MCk+PjJdKT4+Ml0pPygwfHApPT0oMHxhW2w+PjJdKT9jPTA6KGFbZj4+Ml09Yz0wfGFbcCs4Pj4yXSxhW20+PjJdPWM9MHxhW2MrND4+Ml0sQT00KTpBPTQsND09KDB8QSkmJihhW20+PjJdPWM9YystNHwwLGM9MHxhW2M+PjJdKSwwfGN9ZnVuY3Rpb24gTEgobCxjKXtjfD0w''@;'; put 'put ''O3ZhciBmLHAsbT0wO2FbKG09MjMyKyhwPTB8YVsxNisobHw9MCk+PjJdKXwwKT4+Ml09MSsoMHxhW20+PjJdKSxmZVsxNTcrKG09MHxhW2MrMTY+PjJdKT4+MF09MHxmZVsxOTM3NzBdLGY9bSsxNjh8MCwobD0wfGFbNDY3OTNdKT8oYVtmPj4yXT1sLGFbMTY0KygwfGFbbCsxNj4+Ml0pPj4y''@;'; put 'put ''XT1jKTooYVtmPj4yXT0wLGFbcCsxOTI+PjJdPWMpLGFbNDY3OTNdPWMsYVttKzE2ND4+Ml09MH1mdW5jdGlvbiBVMyhsKXt2YXIgZixBLGM9MCxwPTAsbT0wLHc9MDtmPShBPSgwfChtPTB8YVsyMzYrKDB8YVsocD0xNisodz0wfGFbKDM9PSgwfChjPTMmYVsobHw9MCk+PjJdKSk/bDpsKzQ4''@;'; put 'put ''fDApKzQwPj4yXSl8MCk+PjJdKT4+Ml0pKTwoMHwoYz0wfGFbMjM2KygwfGFbMTYrKDB8YVsoMj09KDB8Yyk/bDpsKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSkpP2M6bSxwPSh3PTB8YVsxOTYrKDB8YVsxNisoMHx5YSh3KSk+PjJdKT4+Ml0pKyhhWzIzMisoMHxhW3A+PjJdKT4+Ml08PDYp''@;'; put 'put ''KzR8MCxjPUE/bTpjO2U6Zm9yKDtjPWMrMXwwLCEoKDB8Yyk+PSgwfGYpKTspe3N3aXRjaCgwfGZlWzE1NisobT0wfGFbMTYrKDB8YVsoMHxhW3A+PjJdKSsoYzw8Mik+PjJdKT4+Ml0pPj4wXSl7Y2FzZSAwOmJyZWFrIGU7Y2FzZSAxOmJyZWFrO2RlZmF1bHQ6Y29udGludWUgZX1pZigwfGFb''@;'; put 'put ''bSsxMDQ+PjJdKWJyZWFrfWlmKCgwfGMpPT0oMHxmKSlkb3tmZVsxMTMrKHc9MHxhW2wrMTY+PjJdKT4+MF09MSxsPTB8YVt3KzE3Mj4+Ml19d2hpbGUoMCE9KDB8bCkpfWZ1bmN0aW9uIHpVKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTA7Zm9yKDB8aXRbMjM2KyhsPTB8YVsobT0xNisobHw9MCl8''@;'; put 'put ''MCk+PjJdKT4+MV0mJlByKDg4NDM0LDg4NDE3LDE5MCw4ODQ1MyksYz0zKygwfGl0W2wrMjM4Pj4xXSl8MCxjPTY0KyhsPShsPTB8YVtsKzE5Nj4+Ml0pPzB8VjAobCxjPDw2KTowfFFuKGM8PDYpKXwwLGFbMTk2KyhsPTB8YVttPj4yXSk+PjJdPWMsbD0wfGl0W2wrMjM4Pj4xXTshKCgwfGwp''@;'; put 'put ''PD0tMSk7KXtmPWMrKGw8PDYpfDAsbD1jKygocD1sKy0xfDApPDw2KXwwLGM9Zis2NHwwO2Rve2FbZj4+Ml09YVtsPj4yXSxmPWYrNHwwLGw9bCs0fDB9d2hpbGUoKDB8Zik8KDB8YykpO2w9cCxjPTB8YVsxOTYrKDB8YVttPj4yXSk+PjJdfWFbYysobDw8NikrOD4+Ml09MCxhW2MrKGw8PDYp''@;'; put 'put ''Pj4yXT0wLGY9MHx2cig4KSxhWyhwPTB8YVsxOTYrKG09MHxhW20+PjJdKT4+Ml0pKyhsPDw2KSsxMj4+Ml09ZixhW3ArKGw8PDYpKzQ+PjJdPWYsYVtwKyhsPDw2KSs1Nj4+Ml09MCxfW3ArKGw8PDYpKzI0Pj4zXT0xLF9bcCsobDw8NikrMTY+PjNdPTEsX1twKyhsPDw2KSs0MD4+M109MSxf''@;'; put 'put ''W3ArKGw8PDYpKzMyPj4zXT0xLGl0WyhtPW0rMjM2fDApPj4xXT0oMHxpdFttPj4xXSktMTw8MTY+PjE2fWZ1bmN0aW9uIEh1KGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MDswfGFbOTYrKDB8YVsodz0xNisobHw9MCl8MCk+''@;'; put 'put ''PjJdKT4+Ml0mJihNPWwrNDh8MCxiPTB8eWEoMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6TSkrNDA+PjJdKSxjPTB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6TSkrNDA+PjJdKT4+Ml0pPj4yXSxrPTB8ZnVuY3Rpb24gVmxlKGwsYyl7dmFyIHcsYixrLEQsUixmPTAs''@;'; put 'put ''cD0wLG09MCxBPTAsTT0wO2ZvcihSPWxlLGxlPWxlKzMyfDAsbT1SKzR8MCxBPVIsdz0wfGFbKGw9MHxhWzE5NisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSkrKChNPSgwfGFbMjMyKygwfGFbMTYrKHA9MHxhWygzPT0oMHwoZj0zJmFbKGN8PTApPj4yXSkpP2M6Yys0OHwwKSs0MD4+Ml0pPj4y''@;'; put 'put ''XSk+PjJdKS0xfDApPDw2KSs0Pj4yXSxsPTB8YVtsKyhNPDw2KT4+Ml0sYVsoTT04KyhrPVIrOHwwKXwwKT4+Ml09LTEsYVtrPj4yXT0tMSxhWyhEPWsrMTJ8MCk+PjJdPWwsYVsoYj1rKzR8MCk+PjJdPWwsTUoocCwwfGFbKDI9PSgwfGYpP2M6YystNDh8MCkrNDA+PjJdLG0sQSksbT0wfGFb''@;'; put 'put ''bT4+Ml0sQT0wfGFbQT4+Ml0sZj0wLHA9bCxjPS0xOyEoKDB8Zik+PSgwfHApfHwocD1wKy0xfDAsRk4oMHxhW3crKGY8PDIpPj4yXSxrLG0sQSksKDB8ZikhPSgwfHApJiZGTigwfGFbdysocDw8Mik+PjJdLGssbSxBKSxsPTB8YVtiPj4yXSxjPTB8YVtrPj4yXSwobC1jfDApPDIpKTspZj1m''@;'; put 'put ''KzF8MDtyZXR1cm4gbGU9UiwwfCgobD0oMHxjKT4oMHxsKT8oMHxhW0Q+PjJdKSsoMHxhW00+PjJdKXwwOmwrY3wwKSsxfDApLzJ9KGIsbCkscD0oQT0wfGFbYVsobT0wfGFbMTk2KyhmPTB8YVsoRD1iKzE2fDApPj4yXSk+PjJdKSsoKFI9YystMXwwKTw8NikrND4+Ml0+PjJdKT8rX1syNCso''@;'; put 'put ''MHxhW0ErMTY+PjJdKT4+M10tK19bbSsoUjw8NikrMTY+PjNdOitfW20rKGM8PDYpKzI0Pj4zXSsgK19bMjQrKDB8YVsxNisoMHxhW2FbbSsoYzw8NikrND4+Ml0+PjJdKT4+Ml0pPj4zXSsgKygwfGFbZisyNTI+PjJdKSxjPTB8ZnVuY3Rpb24gamxlKGwsYyxmKXtmfD0wO3ZhciBwPTAsbT0w''@;'; put 'put ''LEE9MCx3PTAsYj0wO2ZvcihwPShtPTB8YVsxOTYrKDB8YVsoQT0xNisobHw9MCl8MCk+PjJdKT4+Ml0pKygoY3w9MCk8PDYpfDAsbT0obT0wfGFbbSsoYzw8NikrND4+Ml0pPzB8VjAobSw4KyhhW3A+PjJdPDwyKXwwKTowfFFuKDgrKGFbcD4+Ml08PDIpfDApLGFbKHA9MHxhWzE5NisoMHxh''@;'; put 'put ''W0E+PjJdKT4+Ml0pKyhjPDw2KSs0Pj4yXT1tLHA9MHxhW3ArKGM8PDYpPj4yXTshKCgwfHApPD0oMHxmKSk7KWFbbSsocDw8Mik+PjJdPWI9MHxhW20rKCh3PXArLTF8MCk8PDIpPj4yXSxhWyhiPTIzNisoMHxhW2IrMTY+PjJdKXwwKT4+Ml09MSsoMHxhW2I+PjJdKSxwPXc7cmV0dXJuIHc9''@;'; put 'put ''MHxVaChsKSxhWyhiPW0rKGY8PDIpfDApPj4yXT13LGFbMjM2Kyh3PTB8YVt3KzE2Pj4yXSk+PjJdPWYsYVt3KzIzMj4+Ml09YyxhWyhBPSgwfGFbMTk2KygwfGFbQT4+Ml0pPj4yXSkrKGM8PDYpfDApPj4yXT13PTErKDB8YVtBPj4yXSl8MCxhW20rKHc8PDIpPj4yXT0wLDB8YVtiPj4yXX0o''@;'; put 'put ''YixSLGspLHE9K19bMjQrKGI9MHxhWzk2KygwfGFbdz4+Ml0pPj4yXSk+PjNdLEc9K19bYiszMj4+M10sX1s4MCsoZj0wfGFbKG09YysxNnwwKT4+Ml0pPj4zXT1wZT0odz0wPT0oMSZhWzExNisoMHxhW0Q+PjJdKT4+Ml18MCkpP0c6cSxrPX5+KC41KnBlKSxfW2YrOTY+PjNdPUc9LjUqKHc/''@;'; put 'put ''cTpHKSxfW2YrODg+PjNdPUcsYVtmKzEwND4+Ml09YixfW2YrMjQ+PjNdPSsoayt+fnB8MCksZj0wfEpjKGMsMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6TSkrNDA+PjJdLGwpLF9bMTYrKGY9MHxhW2YrMTY+PjJdKT4+M109LStfWzg4KygwfGFbbT4+Ml0pPj4zXSxfW2YrNTY+PjNdPStfWzk2''@;'; put 'put ''KygwfGFbMTYrKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOk0pKzQwPj4yXSk+PjJdKT4+M10sZmVbZisxMTI+PjBdPTQsZj1sKy00OHwwLGM9MHxKYyhjLDB8YVsoMj09KDMmYVtsPj4yXXwwKT9sOmYpKzQwPj4yXSxsKSxfWzE2KyhjPTB8YVtjKzE2Pj4yXSk+PjNdPStfWzk2KyhtPTB8YVtt''@;'; put 'put ''Pj4yXSk+PjNdLF9bYys1Nj4+M109K19bODgrKDB8YVsxNisoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6ZikrNDA+PjJdKT4+Ml0pPj4zXSxmZVtjKzExMj4+MF09NCwrX1soZj0oYz0wfGFbMTk2KygwfGFbRD4+Ml0pPj4yXSkrKFI8PDYpKzE2fDApPj4zXTwocD0rKDB8aykpJiYoX1tmPj4z''@;'; put 'put ''XT1wKSwrX1soYz1jKyhSPDw2KSsyNHwwKT4+M108cCYmKF9bYz4+M109cCksYVttKzExMj4+Ml09bCl9ZnVuY3Rpb24gT0gobCxjLGYpe2N8PTAsZnw9MDt2YXIgayxxLGdlLGJlLE9lLFJlLEhlLHA9MCxtPTAsQT0wLHc9MCxiPTAsTT0wLEQ9MCxSPTAsRz0wLHBlPTAsTGU9MDtIZT1sZSxs''@;'; put 'put ''ZT1sZSsxNjB8MCxiZT1IZSsyMHwwLGdlPUhlKzE2fDAsaz1IZSxNPUhlKzMyfDAsT2U9MHxhWzE1MisobHw9MCk+PjJdLGFbKExlPUhlKzI0fDApPj4yXT0wLGFbYmU+PjJdPTAsYVtnZT4+Ml09MCxSZT0wfHhmKGwpLGFbUmUrND4+Ml09MyxhW1JlKzg+PjJdPWMsYVtSZSsxMj4+Ml09OSww''@;'; put 'put ''fChiPTB8YVs5NisoMHxhWyhxPWMrMTZ8MCk+PjJdKT4+Ml0pJiYwPT0oMHxmZVtiKzgyPj4wXSkmJigwfG5nKDB8TGkoYywxMDAxMDUpLDApKTw8MjQ+PjI0JiYoaXRbKGI9UmUrMjYwfDApPj4xXT01MTJ8aXRbYj4+MV0pLDB8ZiYmMHxhWzgrKDB8YVtxPj4yXSk+PjJdJiZkMihsLGYpLDB8''@;'; put 'put ''KGY9MHxhWzQ3MjA2XSkmJjB8KHA9MHxIbyhjLGYpKSYmMHxmZVtwPj4wXSYmeGgobCwrTWwoYywwfGFbNDcyMDZdLDEsMCkpO2Rve2lmKDE2Nzc3MjE2Jk9lfDApe2lmKGY9Yys0OHwwLCgwfGhyWzE3OCsoMHxhWzE2KygwfGNyKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOmYpKzQwPj4yXSkp''@;'; put 'put ''Pj4yXSk+PjFdKT4yKXtfW1JlKzE3Nj4+M109KygwfH5+KCh3PTcyKitfWzE2KygwfGFbMTMyKygwfGFbMTYrKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOmYpKzQwPj4yXSk+PjJdKT4+Ml0pPj4zXSkrKHc+PTA/LjU6LS41KSkpLF9bUmUrMTg0Pj4zXT0rKDB8fn4oKHc9NzIqK19bMTYrKDB8''@;'; put 'put ''YVsxMzIrKDB8YVsxNisoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk+PjNdKSsodz49MD8uNTotLjUpKSk7YnJlYWt9YVsoYj1SZSsxNzZ8MCk+PjJdPTAsYVtiKzQ+PjJdPTAsYVtiKzg+PjJdPTAsYVtiKzEyPj4yXT0wO2JyZWFrfX13aGlsZSgw''@;'; put 'put ''KTtpZigzMjc2OCZPZXwwJiYoKGY9MHxhWzk2KyhiPTB8YVtxPj4yXSk+PjJdKT9hW1JlKzE5Mj4+Ml09Zj0wfGFbZj4+Ml06Zj0wfGFbUmUrMTkyPj4yXSxhWyhwPVJlKzE5NnwwKT4+Ml09ZixhWyhBPVJlKzIwNHwwKT4+Ml09ZixhWyhtPVJlKzIwMHwwKT4+Ml09ZiwwfChmPTB8YVtiKzEw''@;'; put 'put ''OD4+Ml0pJiYoYVtwPj4yXT1hW2Y+PjJdKSwwfChmPTB8YVtiKzEwND4+Ml0pJiYoYVttPj4yXT1hW2Y+PjJdKSwwfChmPTB8YVtiKzEwMD4+Ml0pJiYoYVtBPj4yXT1hW2Y+PjJdKSksNjU1MzYmT2Upe3VzKGssMTI4LE0pLGFbUmUrMjEyPj4yXT0wfG0yKDB8d0YobCxjLGspLGMpLEMyKGsp''@;'; put 'put ''LDAhPSgwfChmPTB8TGkoYywxNDEwNTUpKSkmJjAhPSgwfGZlW2Y+PjBdKXx8MCE9KDB8KGY9MHxMaShjLDExMTQ3NykpKSYmMCE9KDB8ZmVbZj4+MF0pP0Q9MzE6cD0wLDMxPT0oMHxEKSYmKHA9MHxtMihmLGMpKSxEPTAhPSgwfChmPTB8TGkoYywxMDAxMTgpKSkmJjAhPSgwfGZlW2Y+PjBd''@;'; put 'put ''KT8zNjozNDtkb3tpZigzND09KDB8RCkpe2lmKDB8KGY9MHxMaShjLDEwMDEyNykpJiYwfGZlW2Y+PjBdKXtEPTM2O2JyZWFrfTB8cCYmKGY9MHxyYShwKSxEPTM5KX19d2hpbGUoMCk7MzY9PSgwfEQpJiYoZj0wfG0yKGYsYyksRD0zOSksMzk9PSgwfEQpJiYoYVtSZSsyMDg+PjJdPWYpLEQ9''@;'; put 'put ''MCE9KDB8KGY9MHxMaShjLDEwMDEzNSkpKSYmMCE9KDB8ZmVbZj4+MF0pPzQ0OjQyO2Rve2lmKDQyPT0oMHxEKSl7aWYoMHwoZj0wfExpKGMsMTAwMTQ1KSkmJjB8ZmVbZj4+MF0pe0Q9NDQ7YnJlYWt9MHxwJiYoZj0wfHJhKHApLEQ9NDcpfX13aGlsZSgwKTs0ND09KDB8RCkmJihmPTB8bTIo''@;'; put 'put ''ZixjKSxEPTQ3KSw0Nz09KDB8RCkmJihhW1JlKzIxNj4+Ml09ZiksRD0wIT0oMHwoZj0wfExpKGMsMTAwMTU0KSkpJiYwIT0oMHxmZVtmPj4wXSk/NTI6NTA7ZG97aWYoNTA9PSgwfEQpKXtpZigwfChmPTB8TGkoYywxMDAxNjMpKSYmMHxmZVtmPj4wXSl7RD01MjticmVha30wfHAmJihhW1Jl''@;'; put 'put ''KzIyMD4+Ml09MHxyYShwKSl9fXdoaWxlKDApOzUyPT0oMHxEKSYmKGFbUmUrMjIwPj4yXT0wfG0yKGYsYyksaXRbKEQ9UmUrMjYwfDApPj4xXT0xMjh8aXRbRD4+MV0pLEQ9MCE9KDB8KGY9MHxMaShjLDEwMDE3MSkpKSYmMCE9KDB8ZmVbZj4+MF0pPzU5OjU3O2Rve2lmKDU3PT0oMHxEKSl7''@;'; put 'put ''aWYoMHwoZj0wfExpKGMsMTAwMTgwKSkmJjB8ZmVbZj4+MF0pe0Q9NTk7YnJlYWt9MHxwJiYoYVtSZSsyMjQ+PjJdPTB8cmEocCkpfX13aGlsZSgwKTs1OT09KDB8RCkmJihhW1JlKzIyND4+Ml09MHxtMihmLGMpLGl0WyhEPVJlKzI2MHwwKT4+MV09MjU2fGl0W0Q+PjFdKSxtPXB9ZWxzZSBt''@;'; put 'put ''PTA7ZG97aWYoODM4ODYwOCZPZSl7aWYocD0wIT0oMHwoZj0wfExpKGMsMTQxMDg4KSkpJiYwIT0oMHxmZVtmPj4wXSk/MHxtMihmLGMpOjAsMCE9KDB8KGY9MHxMaShjLDEwMDE4OCkpKSYmMCE9KDB8ZmVbZj4+MF0pPyhpdFsoRD1SZSsyNjB8MCk+PjFdPTY0fGl0W0Q+PjFdLGY9MHxtMihm''@;'; put 'put ''LGMpLEQ9NzIpOkQ9NzAsNzA9PSgwfEQpJiYwfHAmJihmPTB8cmEocCksRD03MiksNzI9PSgwfEQpJiYoYVtSZSsyNDQ+PjJdPWYpLDAhPSgwfChmPTB8TGkoYywxMDAxOTkpKSkmJjAhPSgwfGZlW2Y+PjBdKT8oZj0wfG0yKGYsYyksRD03OCk6RD03Niw3Nj09KDB8RCkmJjB8cCYmKGY9MHxy''@;'; put 'put ''YShwKSxEPTc4KSw3OD09KDB8RCkmJihhW1JlKzI0OD4+Ml09ZiksMCE9KDB8KGY9MHxMaShjLDEwMDIxMSkpKSYmMCE9KDB8ZmVbZj4+MF0pPyhhW1JlKzI1Mj4+Ml09MHxtMihmLGMpLGl0WyhNPVJlKzI2MHwwKT4+MV09MTZ8aXRbTT4+MV0pOkQ9ODIsODI9PSgwfEQpJiYwfHAmJihhW1Jl''@;'; put 'put ''KzI1Mj4+Ml09MHxyYShwKSksMHwoZj0wfExpKGMsMTAwMjIyKSkmJjB8ZmVbZj4+MF0pe2l0WyhEPVJlKzI2MHwwKT4+MV09MzJ8aXRbRD4+MV0sYVtSZSsyNTY+PjJdPTB8bTIoZixjKTticmVha31wP2FbUmUrMjU2Pj4yXT0wfHJhKHApOnA9MH1lbHNlIHA9MH13aGlsZSgwKTtkb3tpZig0''@;'; put 'put ''MTk0MzA0Jk9lfDApe0Q9MCE9KDB8KGY9MHxMaShjLDE0MTEwMSkpKSYmMCE9KDB8ZmVbZj4+MF0pPzk0OjkyO2Rve2lmKDkyPT0oMHxEKSl7aWYoMHwoZj0wfExpKGMsMTAwMjMzKSkmJjB8ZmVbZj4+MF0pe0Q9OTQ7YnJlYWt9MHwoZj0wfGFbUmUrMTkyPj4yXSkmJihhW1JlKzIyOD4+Ml09''@;'; put 'put ''MHxyYShmKSl9fXdoaWxlKDApO2lmKDk0PT0oMHxEKSYmKE09MHxBNyhmLGMpLGFbUmUrMjI4Pj4yXT0wfG0yKE0sYyksRnQoTSksaXRbKE09UmUrMjYwfDApPj4xXT0xfGl0W00+PjFdKSwwIT0oMHwoZj0wfExpKGMsMTAwMjQ1KSkpJiYwIT0oMHxmZVtmPj4wXSk/KE09MHxBNyhmLGMpLGFb''@;'; put 'put ''UmUrMjMyPj4yXT0wfG0yKE0sYyksRnQoTSksaXRbKE09UmUrMjYwfDApPj4xXT04fGl0W00+PjFdKTpEPTEwMCwxMDA9PSgwfEQpJiYwfChSPTB8YVtSZSsxOTI+PjJdKSYmKGFbUmUrMjMyPj4yXT0wfHJhKFIpKSwwIT0oMHwoZj0wfExpKGMsMTAwMjU4KSkpJiYwIT0oMHxmZVtmPj4wXSk/''@;'; put 'put ''KFI9MHxBNyhmLGMpLGFbUmUrMjM2Pj4yXT0wfG0yKFIsYyksRnQoUiksaXRbKFI9UmUrMjYwfDApPj4xXT0yfGl0W1I+PjFdKTpEPTEwNSwxMDU9PSgwfEQpJiYwfChHPTB8YVtSZSsyMDA+PjJdKSYmKGFbUmUrMjM2Pj4yXT0wfHJhKEcpKSwwfChmPTB8TGkoYywxMDAyNzApKSYmMHxmZVtm''@;'; put 'put ''Pj4wXSl7Rz0wfEE3KGYsYyksYVtSZSsyNDA+PjJdPTB8bTIoRyxjKSxGdChHKSxpdFsoRz1SZSsyNjB8MCk+PjFdPTR8aXRbRz4+MV07YnJlYWt9MHwoZj0wfGFbUmUrMjA0Pj4yXSkmJihhW1JlKzI0MD4+Ml09MHxyYShmKSl9fXdoaWxlKDApO0Z0KG0pLEZ0KHApO2Rve2lmKDQyNTk4NDAm''@;'; put 'put ''T2V8MCYmMHwocGU9MHxhWzgrKDB8YVtxPj4yXSk+PjJdKSl7aWYoMHxhW1JlKzIwOD4+Ml0pe2lmKCEoNTI0Mjg4Jk9lKSlicmVha31lbHNlIGlmKDA9PSg1MjQyODgmT2V8MCl8MD09KDB8YVtSZSsyMjg+PjJdKSlicmVhaztmb3Iodz0odz0uNSorX1sxNTIrKDB8YVtsKzE2Pj4yXSk+PjNd''@;'; put 'put ''KT4yP3c6MixwPTB8YVtwZSs0Pj4yXSxmPTA7ISgoMHxmKT49KDB8cCkpOylQSChMZSxiZSxnZSwoMHxhW3BlPj4yXSkrKDQ4KmZ8MCl8MCx3KSxmPWYrMXwwO2lmKGFbUmUrMjc2Pj4yXT1tPTB8YVtnZT4+Ml0sYVtSZSsyODA+PjJdPUE9MHxhW2JlPj4yXSw4MTkyJk9lKWY9MHxhW0xlPj4y''@;'; put 'put ''XTtlbHNle2ZvcihmPTAscD0wOyEoKDB8cCk+PSgwfG0pKTspZj0oMHxhW0ErKHA8PDIpPj4yXSkrZnwwLHA9cCsxfDA7TWgobCxMZT0wfGFbTGU+PjJdLExlLGYpLGY9TGV9YVtSZSsyODQ+PjJdPWYsYVtSZSsyNjQ+PjJdPTIsYVtSZSsyNzI+PjJdPWYsYVtSZSsyNjg+PjJdPWFbQT4+Ml19''@;'; put 'put ''fXdoaWxlKDApOyhmdW5jdGlvbiBBMyhsLGMpe2N8PTA7dmFyIGY9MDswfChjPTB8YVs2MCsobHw9MCk+PjJdKSYmMHwoZj0wfGFbYys2ND4+Ml0pJiZDb1sxMjcmZl0obCl9KShsLGMpLDA9PSgwfChmPTB8YVtSZSsyMDg+PjJdKSkmJiEoMSZpdFtSZSsyNjA+PjFdKXx8RzEobCxmLDB8YVtS''@;'; put 'put ''ZSsyMjg+PjJdLDB8YVtSZSsyNDQ+PjJdLDB8YVtSZSsyMTI+PjJdKSxsZT1IZX1mdW5jdGlvbiBHVShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIE9lLExlLFJlLHFlLHJ0LFdlLGF0LFN0LGt0LHN0LGN0LGJ0LGFuLHVyLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9''@;'; put 'put ''MCxxPTAscGU9MCxnZT0wLGJlPTAsSGU9MCxWZT0wLEV0PTAsWnQ9MCxTbj0wLEhuPTAsSHI9MCxFcj0wLGZyPTA7dXI9bGUsbGU9bGUrMjQwfDAsYnQ9dXIrMjI0fDAsY3Q9dXIrMjA4fDAsTGU9dXIrMTI4fDAsT2U9dXIrMTEyfDAsSG49dXIrNjR8MCxydD11cis0OHwwLFdlPXVyKzMyfDAs''@;'; put 'put ''U3Q9dXIsa3Q9dXIrMTkyfDAsc3Q9dXIrMTc2fDAsUmU9dXIrMTYwfDAscWU9dXIrMTQ0fDAsYVsoYXQ9dXIrMTZ8MCk+PjJdPTAsYVthdCs0Pj4yXT0wLGFbYXQrOD4+Ml09MCxhW2F0KzEyPj4yXT0wLGFuPStfWzE1MisoMHxhW2wrMTY+PjJdKT4+M10sTDkoMHxMaShjLDEwMDAzMikpLFp0''@;'; put 'put ''PWMrMTZ8MDtlOmRve2lmKDB8YVs4KygwfGFbWnQ+PjJdKT4+Ml0pe1NuPStNbChjLDB8YVs0NzE4OF0sMSwwKSx3PTB8djIoYywwfGFbNDcxNzZdLDE5NTA1OSksYmU9MCE9KDB8Zik7dDpkb3tpZihiZSlmb3IocD1mOzspe2lmKG09cCxwPXArNHwwLCEobT0wfGFbbT4+Ml0pKXtNPTA7YnJl''@;'; put 'put ''YWsgdH1pZigxMTY9PSgwfGZlW20+PjBdKSYmISgwfFppKG0sMTExMTE3KSkpe009MTticmVha319ZWxzZSBNPTB9d2hpbGUoMCk7QT13LFI9MCxtPTA7dDpmb3IoOzspe3N3aXRjaCgwfGZlW0E+PjBdKXtjYXNlIDA6YnJlYWsgdDtjYXNlIDU4OnA9UisxfDA7YnJlYWs7Y2FzZSA1OTpwPVIs''@;'; put 'put ''bT1tKzF8MDticmVhaztkZWZhdWx0OnA9Un1BPUErMXwwLFI9cH1pZigwIT0oMHxtKSYoaz0wIT0oMHxSKSkpe2lmKCEoMHxRVShsLGMsZix3LFIrMXwwLFNuLGFuKSkpYnJlYWs7Yj0xMzczMTR9ZWxzZSBiPXc7aWYoMSYocD0wfFh0WzExNSsoMHxhW1p0Pj4yXSk+PjBdKT8oQT0xMDYyNDgs''@;'; put 'put ''cD0xMDYyNDAsdz0xODg3MTIsbT0xODg3MTIsRD0xOCk6MiZwPyhBPTEwNjI2NCxwPTEwNjI1Nix3PTE4ODcxMixtPTE4ODcxMixEPTE4KTo4JnA/KEE9MTA2MjgwLHA9MTA2MjcyLHc9MTg4NzEyLG09MTg4NzEyLEQ9MTgpOjQmcD8oQT0xMDYyOTYscD0xMDYyODgsdz0xODg3MTIsbT0xODg3''@;'; put 'put ''MTIsRD0xOCk6KG09YixBPTB8QmEoYywwfGFbNDcxNzddLGIpKSwxOD09KDB8RCkmJihtPTB8QmEoYyxtPTB8YVttPj4yXSwwfFZJKGIscCkpLHA9MHxCYShjLDB8YVt3Pj4yXSxBKSwoMHxtKT09KDB8Yik/KG09YixBPXApOihtYShsLG0pLEE9cCkpLCgwfEEpIT0oMHxiKSYmaGwobCxBKSxN''@;'; put 'put ''PDwyND4+MjQpe209MD09KDB8ZmVbbT4+MF0pPzEzNzMxNDptLHA9MD09KDB8ZmVbQT4+MF0pPzEzNzMxNDpBLG1hKGwsMTM3Mzc5KSxobChsLG0pLEc9MHxhW2FbOCsoMHxhW1p0Pj4yXSk+PjJdPj4yXSxxPShnZT1IbikrNDh8MDtkb3thW2dlPj4yXT1hW0c+PjJdLGdlPWdlKzR8MCxHPUcr''@;'; put 'put ''NHwwfXdoaWxlKCgwfGdlKTwoMHxxKSk7aWYoWnQ9MHxmbGUoSG4sMHxRNShjKSxhbiwwLDApLGthKGwsMHxhW1p0Kzg+PjJdLDB8YVtadD4+Ml0sMSksc3ZlKFp0KSxtYShsLG0pLCgwfHApIT0oMHxtKSYmaGwobCxwKSwwfChwPTB8YVtIbis4Pj4yXSkmJihadD0wfGFbSG4+PjJdLGFbY3Q+''@;'; put 'put ''PjJdPWFbKEV0PUhuKzE2fDApPj4yXSxhW2N0KzQ+PjJdPWFbRXQrND4+Ml0sYVtjdCs4Pj4yXT1hW0V0Kzg+PjJdLGFbY3QrMTI+PjJdPWFbRXQrMTI+PjJdLGFbYnQ+PjJdPWFbWnQ+PjJdLGFbYnQrND4+Ml09YVtadCs0Pj4yXSxhW2J0Kzg+PjJdPWFbWnQrOD4+Ml0sYVtidCsxMj4+Ml09''@;'; put 'put ''YVtadCsxMj4+Ml0sUWQobCwyLGN0LGJ0LFNuLGFuLHApKSwhKHA9MHxhW0huKzEyPj4yXSkpYnJlYWs7WnQ9SG4rMzJ8MCxIbj0oMHxhW0huPj4yXSkrKCgwfGFbSG4rND4+Ml0pLTE8PDQpfDAsYVtjdD4+Ml09YVtadD4+Ml0sYVtjdCs0Pj4yXT1hW1p0KzQ+PjJdLGFbY3QrOD4+Ml09YVta''@;'; put 'put ''dCs4Pj4yXSxhW2N0KzEyPj4yXT1hW1p0KzEyPj4yXSxhW2J0Pj4yXT1hW0huPj4yXSxhW2J0KzQ+PjJdPWFbSG4rND4+Ml0sYVtidCs4Pj4yXT1hW0huKzg+PjJdLGFbYnQrMTI+PjJdPWFbSG4rMTI+PjJdLFFkKGwsMyxjdCxidCxTbixhbixwKTticmVha31pZihwPTB8YVtadD4+Ml0sIWsp''@;'; put 'put ''e2Rve2lmKCEoMyZmZVtwKzExNT4+MF0pKXtpZigwfGZlW20+PjBdKXttYShsLG0pLGhsKGwsQSk7YnJlYWt9aWYobWEobCwxMzczMTQpLDB8ZmVbQT4+MF0pe2hsKGwsQSk7YnJlYWt9aGwobCwxMzczMTQpO2JyZWFrfX13aGlsZSgwKTtmb3Iodz1sKzE1MnwwLGI9SG4rNHwwLGs9SG4rOHww''@;'; put 'put ''LE09SG4rMTJ8MCxEPUhuKzMyfDAsUj1IbisxNnwwLEE9MDs7KXtpZigoMHxBKT49KDB8YVs0KyhwPTB8YVs4KygwfGFbWnQ+PjJdKT4+Ml0pPj4yXSkpYnJlYWsgZTtHPSgwfGFbcD4+Ml0pKyg0OCpBfDApfDAscT0oZ2U9SG4pKzQ4fDA7ZG97YVtnZT4+Ml09YVtHPj4yXSxnZT1nZSs0fDAs''@;'; put 'put ''Rz1HKzR8MH13aGlsZSgoMHxnZSk8KDB8cSkpO3A9MHxhW0huPj4yXSxtPTB8YVtiPj4yXTtkb3tpZigxNjM4NCZhW3c+PjJdKVFmKGwscCxtLDB8YVtrPj4yXSwwfGFbTT4+Ml0sMCk7ZWxzZSBpZihRZihsLHAsbSwwLDAsMCksMHwocD0wfGFbaz4+Ml0pJiYoRXQ9MHxhW0huPj4yXSxhW2N0''@;'; put 'put ''Pj4yXT1hW1I+PjJdLGFbY3QrND4+Ml09YVtSKzQ+PjJdLGFbY3QrOD4+Ml09YVtSKzg+PjJdLGFbY3QrMTI+PjJdPWFbUisxMj4+Ml0sYVtidD4+Ml09YVtFdD4+Ml0sYVtidCs0Pj4yXT1hW0V0KzQ+PjJdLGFbYnQrOD4+Ml09YVtFdCs4Pj4yXSxhW2J0KzEyPj4yXT1hW0V0KzEyPj4yXSxR''@;'; put 'put ''ZChsLDIsY3QsYnQsU24sYW4scCkpLDB8KHA9MHxhW00+PjJdKSYmKEV0PSgwfGFbSG4+PjJdKSsoKDB8YVtiPj4yXSktMTw8NCl8MCxhW2N0Pj4yXT1hW0Q+PjJdLGFbY3QrND4+Ml09YVtEKzQ+PjJdLGFbY3QrOD4+Ml09YVtEKzg+PjJdLGFbY3QrMTI+PjJdPWFbRCsxMj4+Ml0sYVtidD4+''@;'; put 'put ''Ml09YVtFdD4+Ml0sYVtidCs0Pj4yXT1hW0V0KzQ+PjJdLGFbYnQrOD4+Ml09YVtFdCs4Pj4yXSxhW2J0KzEyPj4yXT1hW0V0KzEyPj4yXSxRZChsLDMsY3QsYnQsU24sYW4scCkpLCgwfGFbNCsoMHxhWzgrKDB8YVtadD4+Ml0pPj4yXSk+PjJdKT4xKXtpZigwfGFbaz4+Ml0pe2lmKCFiZSli''@;'; put 'put ''cmVha31lbHNlIGlmKCEoYmUmMCE9KDB8YVtNPj4yXSkpKWJyZWFrO2QyKGwsZil9fXdoaWxlKDApO0E9QSsxfDB9fWZvcihIZT0wfEYwKFZlPTQ4KihFdD0wfGFbNCsoMHxhW3ArOD4+Ml0pPj4yXSl8MCksVmU9MHxGMChWZSkscGU9LjUqKyhSKzJ8MCksYmU9SG4rNHwwLEQ9cnQrOHwwLFI9''@;'; put 'put ''V2UrOHwwLGM9YXQrOHwwLGY9U3QrOHwwLE09MDshKCgwfE0pPj0oMHxFdCkpOyl7Rz0oMHxhW2FbOCsoMHxhW1p0Pj4yXSk+PjJdPj4yXSkrKDQ4Kk18MCl8MCxxPShnZT1IbikrNDh8MDtkb3thW2dlPj4yXT1hW0c+PjJdLGdlPWdlKzR8MCxHPUcrNHwwfXdoaWxlKCgwfGdlKTwoMHxxKSk7''@;'; put 'put ''Zm9yKGFbSGUrKDQ4Kk18MCkrND4+Ml09cD0wfGFbYmU+PjJdLGFbVmUrKDQ4Kk18MCkrND4+Ml09cCxiPTB8RjAoaz1wPDw0KSxhW0hlKyg0OCpNfDApPj4yXT1iLGs9MHxGMChrKSxhW1ZlKyg0OCpNfDApPj4yXT1rLGFbU3Q+PjJdPWFbKHc9MHxhW0huPj4yXSk+PjJdLGFbU3QrND4+Ml09''@;'; put 'put ''YVt3KzQ+PjJdLGFbU3QrOD4+Ml09YVt3Kzg+PjJdLGFbU3QrMTI+PjJdPWFbdysxMj4+Ml0sdz0wOyEoKDB8dyk+PShwKy0xfDApKTspYVtydD4+Ml09YVtTdD4+Ml0sYVtydCs0Pj4yXT1hW1N0KzQ+PjJdLGFbcnQrOD4+Ml09YVtTdCs4Pj4yXSxhW3J0KzEyPj4yXT1hW1N0KzEyPj4yXSxh''@;'; put 'put ''W1dlPj4yXT1hWyhBPSgwfGFbSG4+PjJdKSsoKHA9dysxfDApPDw0KXwwKT4+Ml0sYVtXZSs0Pj4yXT1hW0ErND4+Ml0sYVtXZSs4Pj4yXT1hW0ErOD4+Ml0sYVtXZSsxMj4+Ml09YVtBKzEyPj4yXSxBPWIrKHc8PDQpfDAsdz8oYVtjdD4+Ml09YVthdD4+Ml0sYVtjdCs0Pj4yXT1hW2F0KzQ+''@;'; put 'put ''PjJdLGFbY3QrOD4+Ml09YVthdCs4Pj4yXSxhW2N0KzEyPj4yXT1hW2F0KzEyPj4yXSxhW2J0Pj4yXT1hW1dlPj4yXSxhW2J0KzQ+PjJdPWFbV2UrND4+Ml0sYVtidCs4Pj4yXT1hW1dlKzg+PjJdLGFbYnQrMTI+PjJdPWFbV2UrMTI+PjJdLEJIKHN0LGN0LGJ0KSxhW0E+PjJdPWFbc3Q+PjJd''@;'; put 'put ''LGFbQSs0Pj4yXT1hW3N0KzQ+PjJdLGFbQSs4Pj4yXT1hW3N0Kzg+PjJdLGFbQSsxMj4+Ml09YVtzdCsxMj4+Ml0pOihhW2N0Pj4yXT1hW3J0Pj4yXSxhW2N0KzQ+PjJdPWFbcnQrND4+Ml0sYVtjdCs4Pj4yXT1hW3J0Kzg+PjJdLGFbY3QrMTI+PjJdPWFbcnQrMTI+PjJdLGFbYnQ+PjJdPWFb''@;'; put 'put ''V2U+PjJdLGFbYnQrND4+Ml09YVtXZSs0Pj4yXSxhW2J0Kzg+PjJdPWFbV2UrOD4+Ml0sYVtidCsxMj4+Ml09YVtXZSsxMj4+Ml0sQkgoa3QsY3QsYnQpLGFbQT4+Ml09YVtrdD4+Ml0sYVtBKzQ+PjJdPWFba3QrND4+Ml0sYVtBKzg+PjJdPWFba3QrOD4+Ml0sYVtBKzEyPj4yXT1hW2t0KzEy''@;'; put 'put ''Pj4yXSksYVthdD4+Ml09YVsoZnI9KEVyPTB8YVtIbj4+Ml0pKygocT13KzJ8MCk8PDQpfDApPj4yXSxhW2F0KzQ+PjJdPWFbZnIrND4+Ml0sYVthdCs4Pj4yXT1hW2ZyKzg+PjJdLGFbYXQrMTI+PjJdPWFbZnIrMTI+PjJdLGFbU3Q+PjJdPWFbKEVyPUVyKygoZ2U9dyszfDApPDw0KXwwKT4+''@;'; put 'put ''Ml0sYVtTdCs0Pj4yXT1hW0VyKzQ+PjJdLGFbU3QrOD4+Ml09YVtFcis4Pj4yXSxhW1N0KzEyPj4yXT1hW0VyKzEyPj4yXSxIcj1iKyhwPDw0KXwwLEc9YisocTw8NCl8MCxhW09lPj4yXT1hW3J0Pj4yXSxhW09lKzQ+PjJdPWFbcnQrND4+Ml0sYVtPZSs4Pj4yXT1hW3J0Kzg+PjJdLGFbT2Ur''@;'; put 'put ''MTI+PjJdPWFbcnQrMTI+PjJdLGFbTGU+PjJdPWFbV2U+PjJdLGFbTGUrND4+Ml09YVtXZSs0Pj4yXSxhW0xlKzg+PjJdPWFbV2UrOD4+Ml0sYVtMZSsxMj4+Ml09YVtXZSsxMj4+Ml0sYVtjdD4+Ml09YVtmcj4+Ml0sYVtjdCs0Pj4yXT1hW2ZyKzQ+PjJdLGFbY3QrOD4+Ml09YVtmcis4Pj4y''@;'; put 'put ''XSxhW2N0KzEyPj4yXT1hW2ZyKzEyPj4yXSxhW2J0Pj4yXT1hW0VyPj4yXSxhW2J0KzQ+PjJdPWFbRXIrND4+Ml0sYVtidCs4Pj4yXT1hW0VyKzg+PjJdLGFbYnQrMTI+PjJdPWFbRXIrMTI+PjJdLGtvZShSZSxPZSxMZSxjdCxidCksYVtHPj4yXT1hW1JlPj4yXSxhW0crND4+Ml09YVtSZSs0''@;'; put 'put ''Pj4yXSxhW0crOD4+Ml09YVtSZSs4Pj4yXSxhW0crMTI+PjJdPWFbUmUrMTI+PjJdLGFbSHI+PjJdPWFbUmU+PjJdLGFbSHIrND4+Ml09YVtSZSs0Pj4yXSxhW0hyKzg+PjJdPWFbUmUrOD4+Ml0sYVtIcisxMj4+Ml09YVtSZSsxMj4+Ml0sX1trKyh3PDw0KT4+M109K19bcnQ+PjNdLStfW0E+''@;'; put 'put ''PjNdKnBlLF9baysodzw8NCkrOD4+M109K19bRD4+M10tK19bYisodzw8NCkrOD4+M10qcGUsX1trKyhwPDw0KT4+M109K19bV2U+PjNdLStfW0hyPj4zXSpwZSxfW2srKHA8PDQpKzg+PjNdPStfW1I+PjNdLStfW2IrKHA8PDQpKzg+PjNdKnBlLF9baysocTw8NCk+PjNdPStfW2F0Pj4zXS0r''@;'; put 'put ''X1tHPj4zXSpwZSxfW2srKHE8PDQpKzg+PjNdPStfW2M+PjNdLStfW2IrKHE8PDQpKzg+PjNdKnBlLHc9Z2UscD0wfGFbYmU+PjJdO2ZyPWIrKHc8PDQpfDAsYVtjdD4+Ml09YVthdD4+Ml0sYVtjdCs0Pj4yXT1hW2F0KzQ+PjJdLGFbY3QrOD4+Ml09YVthdCs4Pj4yXSxhW2N0KzEyPj4yXT1h''@;'; put 'put ''W2F0KzEyPj4yXSxhW2J0Pj4yXT1hW1N0Pj4yXSxhW2J0KzQ+PjJdPWFbU3QrND4+Ml0sYVtidCs4Pj4yXT1hW1N0Kzg+PjJdLGFbYnQrMTI+PjJdPWFbU3QrMTI+PjJdLEJIKHFlLGN0LGJ0KSxhW2ZyPj4yXT1hW3FlPj4yXSxhW2ZyKzQ+PjJdPWFbcWUrND4+Ml0sYVtmcis4Pj4yXT1hW3Fl''@;'; put 'put ''Kzg+PjJdLGFbZnIrMTI+PjJdPWFbcWUrMTI+PjJdLF9baysodzw8NCk+PjNdPStfW1N0Pj4zXS0rX1tmcj4+M10qcGUsX1trKyh3PDw0KSs4Pj4zXT0rX1tmPj4zXS0rX1tiKyh3PDw0KSs4Pj4zXSpwZSxNPU0rMXwwfWZvcihmPTAsRz1tLHA9bSxBPW0sbT1xPTB8cmEobSk7bT0wfGx2KG0s''@;'; put 'put ''MTA3OTg0KTspe2ZvcigoMHwoYz0wPT0oMHxmZVttPj4wXSk/MTM3MzE0Om0pKSE9KDB8QSkmJigzJmZlWzExNSsoMHxhW1p0Pj4yXSk+PjBdfHwobWEobCxjKSxobChsLGMpKSxBPWMpLGI9MD09KDB8Ziksaz1mPj4+MDwyLG09MDshKCgwfG0pPj0oMHxFdCkpOyl7Zm9yKE09MHxhW1ZlKyg0''@;'; put 'put ''OCptfDApPj4yXSxEPTB8YVtIZSsoNDgqbXwwKT4+Ml0sUj0wfGFbVmUrKDQ4Km18MCkrND4+Ml0sdz0wOyEoKDB8dyk+PSgwfFIpKTspX1soZnI9TSsodzw8NCl8MCk+PjNdPStfW2ZyPj4zXSsgK19bRCsodzw8NCk+PjNdLF9bKGZyPU0rKHc8PDQpKzh8MCk+PjNdPStfW2ZyPj4zXSsgK19b''@;'; put 'put ''RCsodzw8NCkrOD4+M10sdz13KzF8MDtRZihsLE0sUiwwLDAsMCksbT1tKzF8MH1mPWYrMXwwLEc9Yj9jOkcscD1rP2M6cCxtPTB9Zm9yKChtPTB8YVtIbis4Pj4yXSk/KHA/MyZmZVsxMTUrKDB8YVtadD4+Ml0pPj4wXXx8KG1hKGwscCksaGwobCxwKSk6cD0wLGZyPTB8YVtIbj4+Ml0sYVtj''@;'; put 'put ''dD4+Ml09YVsoRXI9SG4rMTZ8MCk+PjJdLGFbY3QrND4+Ml09YVtFcis0Pj4yXSxhW2N0Kzg+PjJdPWFbRXIrOD4+Ml0sYVtjdCsxMj4+Ml09YVtFcisxMj4+Ml0sYVtidD4+Ml09YVtmcj4+Ml0sYVtidCs0Pj4yXT1hW2ZyKzQ+PjJdLGFbYnQrOD4+Ml09YVtmcis4Pj4yXSxhW2J0KzEyPj4y''@;'; put 'put ''XT1hW2ZyKzEyPj4yXSxRZChsLDIsY3QsYnQsU24sYW4sbSksbT1wKTptPTAsMHwocD0wfGFbKEE9SG4rMTJ8MCk+PjJdKSYmKCgwfG0pIT0oMHxHKSYmMD09KDMmZmVbMTE1KygwfGFbWnQ+PjJdKT4+MF0pJiYobWEobCxHKSxobChsLEcpLHA9MHxhW0E+PjJdKSxmcj0oMHxhW0huPj4yXSkr''@;'; put 'put ''KCgwfGFbYmU+PjJdKS0xPDw0KXwwLGFbY3Q+PjJdPWFbKEVyPUhuKzMyfDApPj4yXSxhW2N0KzQ+PjJdPWFbRXIrND4+Ml0sYVtjdCs4Pj4yXT1hW0VyKzg+PjJdLGFbY3QrMTI+PjJdPWFbRXIrMTI+PjJdLGFbYnQ+PjJdPWFbZnI+PjJdLGFbYnQrND4+Ml09YVtmcis0Pj4yXSxhW2J0Kzg+''@;'; put 'put ''PjJdPWFbZnIrOD4+Ml0sYVtidCsxMj4+Ml09YVtmcisxMj4+Ml0sUWQobCwzLGN0LGJ0LFNuLGFuLHApKSxGdChxKSxwPTA7ISgoMHxwKT49KDB8RXQpKTspRnQoMHxhW0hlKyg0OCpwfDApPj4yXSksRnQoMHxhW1ZlKyg0OCpwfDApPj4yXSkscD1wKzF8MDtGdChIZSksRnQoVmUpfX13aGls''@;'; put 'put ''ZSgwKTtsZT11cn1mdW5jdGlvbiBXVShsKXt2YXIgcGUsZ2UsT2UsTGUsUmUsSGUsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLGJlPTAsVmU9MDtIZT1sZSxsZT1sZSs2NHwwLHBlPUhlKzQ4fDAsT2U9SGUrMzJ8MCxiZT1IZSsxNnwwLGdlPUhl''@;'; put 'put ''LExlPTB8YVs4KyhSZT0wfGFbMTYrKGx8PTApPj4yXSk+PjJdLDA9PSgwfGFbKHE9UmUrMjA4fDApPj4yXSkmJiEoMSZpdFtSZSsyNjA+PjFdKXx8KGM9Myk7ZTpkb3tpZigzPT0oMHxjKSYmKEVoKGwpLEc9UmUrMjc2fDAsZj0wfGFbRz4+Ml0sMHxmKSlmb3IoQT1SZSsyODB8MCxjPTB8YVtB''@;'; put 'put ''Pj4yXSx3PVJlKzI2OHwwLGI9UmUrMjg0fDAsaz1SZSsyNzJ8MCxNPVJlKzIyOHwwLEQ9UmUrMjQ0fDAsUj1SZSsyMTJ8MCxwPTB8YVtjPj4yXSxtPTE7Oyl7aWYoKDB8bSk+PSgwfGYpKWJyZWFrIGU7YVt3Pj4yXT1hW2MrKG08PDIpPj4yXSxhW2s+PjJdPSgwfGFbYj4+Ml0pKyhwPDw0KSxH''@;'; put 'put ''MShsLDB8YVtxPj4yXSwwfGFbTT4+Ml0sMHxhW0Q+PjJdLDB8YVtSPj4yXSksRWgobCkscD0oMHxhWyhWZT0wfGFbQT4+Ml0pKyhtPDwyKT4+Ml0pK3B8MCxtPW0rMXwwLGY9MHxhW0c+PjJdLGM9VmV9fXdoaWxlKDApO2FbUmUrMjY4Pj4yXT0wLGFbUmUrMjcyPj4yXT0wLChmPTB8YVs4Kyhj''@;'; put 'put ''PTB8YVsocT1MZSsxNnwwKT4+Ml0pPj4yXSk/KGM9MHxhWyhHPTB8YVtmPj4yXSk+PjJdLFZlPTB8YVtHKzg+PjJdLGFbYmU+PjJdPWFbKFI9RysxNnwwKT4+Ml0sYVtiZSs0Pj4yXT1hW1IrND4+Ml0sYVtiZSs4Pj4yXT1hW1IrOD4+Ml0sYVtiZSsxMj4+Ml09YVtSKzEyPj4yXSxhW2dlPj4y''@;'; put 'put ''XT1hWyhHPUcrMzJ8MCk+PjJdLGFbZ2UrND4+Ml09YVtHKzQ+PjJdLGFbZ2UrOD4+Ml09YVtHKzg+PjJdLGFbZ2UrMTI+PjJdPWFbRysxMj4+Ml0sVmU/KGFbT2U+PjJdPWFbYmU+PjJdLGFbT2UrND4+Ml09YVtiZSs0Pj4yXSxhW09lKzg+PjJdPWFbYmUrOD4+Ml0sYVtPZSsxMj4+Ml09YVti''@;'; put 'put ''ZSsxMj4+Ml0pOihhW09lPj4yXT1hW2M+PjJdLGFbT2UrND4+Ml09YVtjKzQ+PjJdLGFbT2UrOD4+Ml09YVtjKzg+PjJdLGFbT2UrMTI+PjJdPWFbYysxMj4+Ml0pLEc9MHxpdFsocD1SZSsyNjB8MCk+PjFdLFI9MHxhW1JlKzIyMD4+Ml0sYVtwZT4+Ml09YVtPZT4+Ml0sYVtwZSs0Pj4yXT1h''@;'; put 'put ''W09lKzQ+PjJdLGFbcGUrOD4+Ml09YVtPZSs4Pj4yXSxhW3BlKzEyPj4yXT1hW09lKzEyPj4yXSxocChsLHBlLChHPDw4JjY1NTM1KTw8MTY+PjE2Pj4xNSYyNTUsUiwoRzw8MTQmNjU1MzUpPDwxNj4+MTY+PjE1JjI1NSksYz0wfGFbKFI9MHxhWyhHPTB8YVs4KygwfGFbcT4+Ml0pPj4yXSk+''@;'; put 'put ''PjJdKSsoNDgqKEc9KDB8YVtHKzQ+PjJdKS0xfDApfDApPj4yXSxmPTB8YVtSKyg0OCpHfDApKzQ+PjJdLFZlPTB8YVtSKyg0OCpHfDApKzEyPj4yXSxhW2JlPj4yXT1hWyhEPVIrKDQ4Kkd8MCkrMTZ8MCk+PjJdLGFbYmUrND4+Ml09YVtEKzQ+PjJdLGFbYmUrOD4+Ml09YVtEKzg+PjJdLGFb''@;'; put 'put ''YmUrMTI+PjJdPWFbRCsxMj4+Ml0sYVtnZT4+Ml09YVsoYmU9UisoNDgqR3wwKSszMnwwKT4+Ml0sYVtnZSs0Pj4yXT1hW2JlKzQ+PjJdLGFbZ2UrOD4+Ml09YVtiZSs4Pj4yXSxhW2dlKzEyPj4yXT1hW2JlKzEyPj4yXSxWZT8oYVtPZT4+Ml09YVtnZT4+Ml0sYVtPZSs0Pj4yXT1hW2dlKzQ+''@;'; put 'put ''PjJdLGFbT2UrOD4+Ml09YVtnZSs4Pj4yXSxhW09lKzEyPj4yXT1hW2dlKzEyPj4yXSk6KGFbT2U+PjJdPWFbKFZlPWMrKGYrLTE8PDQpfDApPj4yXSxhW09lKzQ+PjJdPWFbVmUrND4+Ml0sYVtPZSs4Pj4yXT1hW1ZlKzg+PjJdLGFbT2UrMTI+PjJdPWFbVmUrMTI+PjJdKSxjPTB8aXRbcD4+''@;'; put 'put ''MV0sVmU9MHxhW1JlKzIyND4+Ml0sYVtwZT4+Ml09YVtPZT4+Ml0sYVtwZSs0Pj4yXT1hW09lKzQ+PjJdLGFbcGUrOD4+Ml09YVtPZSs4Pj4yXSxhW3BlKzEyPj4yXT1hW09lKzEyPj4yXSxocChsLHBlLChjPDw3JjY1NTM1KTw8MTY+PjE2Pj4xNSYyNTUsVmUsKGM8PDEzJjY1NTM1KTw8MTY+''@;'; put 'put ''PjE2Pj4xNSYyNTUpLGM9MHxhW3E+PjJdKTpwPVJlKzI2MHwwLFJIKGwsZj0wfGFbYys5Nj4+Ml0sMTEsbT0oaXRbcD4+MV08PDEyJjY1NTM1KTw8MTY+PjE2Pj4xNTw8MTY+PjE2LEE9MHxhWyhNPVJlKzIxNnwwKT4+Ml0sdz0wfGFbKEQ9UmUrMjMyfDApPj4yXSxiPTB8YVsoUj1SZSsyNDh8''@;'; put 'put ''MCk+PjJdLGs9MHxhWyhHPVJlKzIxMnwwKT4+Ml0sYz0oMHx0MSgwfHYyKExlLDB8YVs0NzE4Nl0sMTM3MzA4KSkpPDwyND4+MjQ/MHxhWzgrKDB8YVtxPj4yXSk+PjJdOjApLFJIKGwsYj0wfGFbMTA4KygwfGFbcT4+Ml0pPj4yXSwxMSxrPShpdFtwPj4xXTw8MTImNjU1MzUpPDwxNj4+MTY+''@;'; put 'put ''PjE1PDwxNj4+MTYsdz0wfGFbTT4+Ml0sQT0wfGFbRD4+Ml0sZj0wfGFbUj4+Ml0sbT0wfGFbRz4+Ml0sYz0oMHx0MSgwfHYyKExlLDB8YVs0NzE4Nl0sMTM3MzA4KSkpPDwyND4+MjQ/MHxhWzgrKDB8YVtxPj4yXSk+PjJdOjApLFJIKGwsMHxhWzEwMCsoMHxhW3E+PjJdKT4+Ml0sNywoaXRb''@;'; put 'put ''cD4+MV08PDEzJjY1NTM1KTw8MTY+PjE2Pj4xNTw8MTY+PjE2LDB8YVtSZSsyMjQ+PjJdLDB8YVtSZSsyNDA+PjJdLDB8YVtSZSsyNTY+PjJdLDB8YVtHPj4yXSwwKSxSSChsLDB8YVsxMDQrKDB8YVtxPj4yXSk+PjJdLDYsKGl0W3A+PjFdPDwxNCY2NTUzNSk8PDE2Pj4xNj4+MTU8PDE2Pj4x''@;'; put 'put ''NiwwfGFbUmUrMjIwPj4yXSwwfGFbUmUrMjM2Pj4yXSwwfGFbUmUrMjUyPj4yXSwwfGFbRz4+Ml0sMCksZnVuY3Rpb24gQWIobCl7dmFyIGMsZj0wOzB8KGM9MHxhWzYwKyhsfD0wKT4+Ml0pJiYwfChmPTB8YVtjKzY4Pj4yXSkmJkNvWzEyNyZmXShsKX0obCksT0MobCksbGU9SGV9ZnVuY3Rp''@;'; put 'put ''b24gaHAobCxjLGYscCxtKXt2YXIgQSx3LGI7Y3w9MCxwfD0wLGI9bGUsbGU9bGUrMTZ8MCxBPWIsdz0wfGFbMTYrKGx8PTApPj4yXSwoZnw9MCk8PDI0Pj4yNHx8KHA9MHxhW3crMjA4Pj4yXSksKG18PTApPDwyND4+MjQ9PTAmJjA9PSgwfHApJiYwPT0oMSZpdFt3KzI2MD4+MV0pfHwoYVtB''@;'; put 'put ''Pj4yXT1hW2M+PjJdLGFbQSs0Pj4yXT1hW2MrND4+Ml0sYVtBKzg+PjJdPWFbYys4Pj4yXSxhW0ErMTI+PjJdPWFbYysxMj4+Ml0sZnVuY3Rpb24gQ29lKGwsYyl7Y3w9MDt2YXIgcCxmPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDtmPTB8YVsxNisobHw9MCk+PjJdLDQyNTk4NDAmKHA9MHxhW2wr''@;'; put 'put ''MTUyPj4yXSl8MCYmKGFbZisyNjQ+PjJdPWI9KG09MTMxMDcyJnApPj4+MTZeMixhWyhrPWYrMjY4fDApPj4yXT1iKzIsRnQoMHxhWyhiPWYrMjcyfDApPj4yXSksZj0wfHZyKGFbaz4+Ml08PDQpLGFbYj4+Ml09ZixfW2Y+PjNdPSh3PStfW2M+PjNdKS0zLF9bZis4Pj4zXT0oQT0rX1tjKzg+''@;'; put 'put ''PjNdKS0zLF9bZisxNj4+M109dyszLF9bZisyND4+M109QSszLDgxOTImcHx8TWgobCxmLGYsMiksbXx8VUkoZikpfShsLEEpKSxsZT1ifWZ1bmN0aW9uIFJIKGwsYyxmLHAsbSxBLHcsYixrKXtmfD0wLHB8PTAsbXw9MCxBfD0wLHd8PTAsYnw9MCxrfD0wO3ZhciBxLHBlLE09MCxEPTAsUj0w''@;'; put 'put ''LEc9MDtpZihwZT1sZSxsZT1sZSsxNnwwLFI9cGUscT0wfGFbMTUyKyhsfD0wKT4+Ml0sMHwoY3w9MCkmJjB8ZmVbYys4MT4+MF0pe2lmKGIpe3N3aXRjaChEPTB8dnIoMTErKDB8VW8oYikpfDApLDB8Zil7Y2FzZSAxMTpNPTEwODIyNDticmVhaztjYXNlIDc6TT0xMDE1ODM7YnJlYWs7Y2Fz''@;'; put 'put ''ZSA2Ok09MTAxNTkzO2JyZWFrO2RlZmF1bHQ6UHIoMTM4Mzk0LDk5OTA2LDI3MzAsMTAwMDQ0KX1hW1I+PjJdPWIsYVtSKzQ+PjJdPU0sb28oRCwxMDAwNjAsUil9ZWxzZSBEPTA7Rz0wfGFbKGI9MTIrKDB8YVsoUj1sKzE2fDApPj4yXSl8MCk+PjJdLGFbYj4+Ml09ZiwoYj0wIT0oMHxwKXww''@;'; put 'put ''IT0oMHxtKSkmKE09MD09KDQmcXwwKSkmJihZVShsLGMpLEcxKGwsbSxBLHcsRCkpLGI3KGwsZixjKSwwfGsmJmZ1bmN0aW9uIF9vZShsLGMsZil7bHw9MCxmfD0wO3ZhciBtLEEsdyxiLEQscD0wLGs9MCxNPTAsUj0wO2ZvcihEPWxlLGxlPWxlKzk2fDAsbT1EKzgwfDAsQT1EKzMyfDAsdz1E''@;'; put 'put ''KzE2fDAsYj1ELHA9MHxhWyhjfD0wKT4+Ml07KGs9MHxmZVtwPj4wXSk8PDI0Pj4yNDspe2lmKCEoMHwkYygyNTUmaykpKXtNPTQ7YnJlYWt9cD1wKzF8MH00PT0oMHxNKSYmKFVVKEEsK19bKGs9Yys1NnwwKT4+M10rLjUqKFI9K19bYysyND4+M10pLCtfW2MrNjQ+PjNdLS41KitfW2MrMzI+''@;'; put 'put ''PjNdKSxNPUErMTZ8MCxVVSh3LCtfW0E+PjNdLVIsK19bQSs4Pj4zXSksYVtNPj4yXT1hW3c+PjJdLGFbTSs0Pj4yXT1hW3crND4+Ml0sYVtNKzg+PjJdPWFbdys4Pj4yXSxhW00rMTI+PjJdPWFbdysxMj4+Ml0sTT1BKzMyfDAsYVttPj4yXT1hW2s+PjJdLGFbbSs0Pj4yXT1hW2srND4+Ml0s''@;'; put 'put ''YVttKzg+PjJdPWFbays4Pj4yXSxhW20rMTI+PjJdPWFbaysxMj4+Ml0scEQoYixmLG0pLGFbTT4+Ml09YVtiPj4yXSxhW00rND4+Ml09YVtiKzQ+PjJdLGFbTSs4Pj4yXT1hW2IrOD4+Ml0sYVtNKzEyPj4yXT1hW2IrMTI+PjJdLGQyKGwsMHxhWzMzNisoMHxhW2w+PjJdKT4+Ml0pLG1hKGws''@;'; put 'put ''MHxhW2MrOD4+Ml0pLFdvKGwsQSwzKSksbGU9RH0obCxjLGspLGImJihNfHwoWVUobCxjKSxHMShsLG0sQSx3LEQpKSxFaChsKSksRnQoRCksYVsxMisoMHxhW1I+PjJdKT4+Ml09R31sZT1wZX1mdW5jdGlvbiBZVShsLGMpe2N8PTA7dmFyIHAsZj0wLG09MCxBPTAsdz0wLGI9MDtmPTB8YVsx''@;'; put 'put ''NisobHw9MCk+PjJdLDQyNTk4NDAmKHA9MHxhW2wrMTUyPj4yXSl8MCYmKGFbZisyNjQ+PjJdPXc9KG09MTMxMDcyJnApPj4+MTZeMixhWyhiPWYrMjY4fDApPj4yXT13KzIsRnQoMHxhWyh3PWYrMjcyfDApPj4yXSksZj0wfHZyKGFbYj4+Ml08PDQpLGFbdz4+Ml09ZixfW2Y+PjNdPStfWyh3''@;'; put 'put ''PWMrNTZ8MCk+PjNdLS41KitfWyhiPWMrMjR8MCk+PjNdLF9bZis4Pj4zXT0rX1soQT1jKzY0fDApPj4zXS0uNSorX1soYz1jKzMyfDApPj4zXSxfW2YrMTY+PjNdPS41KitfW2I+PjNdKyArX1t3Pj4zXSxfW2YrMjQ+PjNdPS41KitfW2M+PjNdKyArX1tBPj4zXSw4MTkyJnB8fE1oKGwsZixm''@;'; put 'put ''LDIpLG18fFVJKGYpKX1mdW5jdGlvbiBVVShsLGMsZil7Zj0rZixfWyhsfD0wKT4+M109Yz0rYyxfW2wrOD4+M109Zn1mdW5jdGlvbiBRVShsLGMsZixwLG0sQSx3KXtsfD0wLGN8PTAsZnw9MCxBPStBLHc9K3c7dmFyIGF0LFN0LGt0LHN0LEV0LFp0LGJ0LGI9MCxrPTAsTT0wLEQ9MCxSPTAs''@;'; put 'put ''Rz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wLFZlPTAscWU9MCxydD0wLFdlPTAsY3Q9MDtpZihidD1sZSxsZT1sZSsyNTZ8MCxTdD1idCsyMjR8MCxhdD1idCsyMDh8MCxiPWJ0KzE5MnwwLHN0PWJ0KzE0NHwwLEV0PWJ0Kzk2fDAsWnQ9YnQrNDh8MCxrdD1idCwo''@;'; put 'put ''MHwocD0wfHM3KHB8PTAsbXw9MCxrPWJ0KzI0MHwwKSkpPjE/KHFlPWMrNDh8MCxydD0wfGNyKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOnFlKSs0MD4+Ml0pLHFlPTB8dGkoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6cWUpKzQwPj4yXSkscnQ9MCE9KDB8U2MocnQpKSxXZT0wfHRpKDB8YVso''@;'; put 'put ''Mj09KDMmYVtjPj4yXXwwKT9jOmMrLTQ4fDApKzQwPj4yXSksYVtiPj4yXT1xZSxhW2IrND4+Ml09cnQ/MTAwMDc5OjEwMDA4NCxhW2IrOD4+Ml09V2UsJHIoMywxMDAwODksYiksMj09KDB8cCk/cD0xOmN0PTQpOjE9PSgwfHApP3A9MTpjdD00LDQ9PSgwfGN0KSl7Zm9yKFdlPWMrMTZ8MCxn''@;'; put 'put ''ZT04KyhwZT0wfGFbaz4+Ml0pfDAsYmU9WnQrNHwwLE9lPXN0Kzh8MCxMZT1zdCsxMnwwLFJlPTAhPSgwfGYpLHE9MD09KDB8ZiksSGU9c3QrMzJ8MCxWZT1zdCs0fDAscWU9c3QrMTZ8MCxydD1rdCs0fDAscD0wLEc9MDshKCgwfEcpPj0oMHxhWzQrKG09MHxhWzgrKDB8YVtXZT4+Ml0pPj4y''@;'; put 'put ''XSk+PjJdKSk7KXttPSgwfGFbbT4+Ml0pKyg0OCpHfDApfDAsYz0oYj1zdCkrNDh8MDtkb3thW2I+PjJdPWFbbT4+Ml0sYj1iKzR8MCxtPW0rNHwwfXdoaWxlKCgwfGIpPCgwfGMpKTtjPTEsTT0xLFI9MHxhW2dlPj4yXTtlOmZvcig7bT0wfGFbUj4+Ml0sbTspe0Q9K2puWyhrPVIrNHwwKT4+''@;'; put 'put ''Ml07ZG97aWYoRDwxZS01JkQ+LTFlLTUpbT1jO2Vsc2V7aWYobWEobCxtKSxNLT1EPStqbltrPj4yXSxwPTB8YVtSPj4yXSwwfGMpe2lmKGd5KHN0LEQsWnQsa3QpLFFmKGwsaz0wfGFbWnQ+PjJdLDB8YVtiZT4+Ml0sMCwwLDApLEZ0KGspLE08MWUtNSZNPi0xZS01KXtjdD0xMTticmVhayBl''@;'; put 'put ''fW09MDticmVha31pZihNPDFlLTUmTT4tMWUtNSl7Y3Q9MTM7YnJlYWsgZX1tPWt0LGM9KGI9RXQpKzQ4fDA7ZG97YVtiPj4yXT1hW20+PjJdLGI9Yis0fDAsbT1tKzR8MH13aGlsZSgoMHxiKTwoMHxjKSk7Z3koRXQsKEQ9K2puW2s+PjJdKS8oTStEKSxadCxrdCksRnQoMHxhW0V0Pj4yXSks''@;'; put 'put ''UWYobCxtPTB8YVtadD4+Ml0sMHxhW2JlPj4yXSwwLDAsMCksRnQobSksbT0wfX13aGlsZSgwKTtjPW0sUj1SKzEyfDB9MTE9PSgwfGN0KT8oY3Q9MCxGdCgwfGFba3Q+PjJdKSk6MTM9PSgwfGN0KSYmKGN0PTAsUWYobCxSPTB8YVtrdD4+Ml0sMHxhW3J0Pj4yXSwwLDAsMCksRnQoUikpLDB8''@;'; put 'put ''YVtPZT4+Ml0mJihtYShsLDB8YVthW2dlPj4yXT4+Ml0pLGhsKGwsMHxhW2FbZ2U+PjJdPj4yXSksaz0wfGFbc3Q+PjJdLFI9MHxhW09lPj4yXSxhW2F0Pj4yXT1hW3FlPj4yXSxhW2F0KzQ+PjJdPWFbcWUrND4+Ml0sYVthdCs4Pj4yXT1hW3FlKzg+PjJdLGFbYXQrMTI+PjJdPWFbcWUrMTI+''@;'; put 'put ''PjJdLGFbU3Q+PjJdPWFbaz4+Ml0sYVtTdCs0Pj4yXT1hW2srND4+Ml0sYVtTdCs4Pj4yXT1hW2srOD4+Ml0sYVtTdCsxMj4+Ml09YVtrKzEyPj4yXSxRZChsLDIsYXQsU3QsQSx3LFIpKSwwfGFbTGU+PjJdJiYobWEobCxwKSxobChsLHApLGs9KDB8YVtzdD4+Ml0pKygoMHxhW1ZlPj4yXSkt''@;'; put 'put ''MTw8NCl8MCxSPTB8YVtMZT4+Ml0sYVthdD4+Ml09YVtIZT4+Ml0sYVthdCs0Pj4yXT1hW0hlKzQ+PjJdLGFbYXQrOD4+Ml09YVtIZSs4Pj4yXSxhW2F0KzEyPj4yXT1hW0hlKzEyPj4yXSxhW1N0Pj4yXT1hW2s+PjJdLGFbU3QrND4+Ml09YVtrKzQ+PjJdLGFbU3QrOD4+Ml09YVtrKzg+PjJd''@;'; put 'put ''LGFbU3QrMTI+PjJdPWFbaysxMj4+Ml0sUWQobCwzLGF0LFN0LEEsdyxSKSk7ZG97aWYoKDB8YVs0KygwfGFbOCsoMHxhW1dlPj4yXSk+PjJdKT4+Ml0pPjEpe2lmKDB8YVtPZT4+Ml0pe2lmKHEpYnJlYWt9ZWxzZSBpZighKFJlJjAhPSgwfGFbTGU+PjJdKSkpYnJlYWs7ZDIobCxmKX19d2hp''@;'; put 'put ''bGUoMCk7Rz1HKzF8MH1IQShwZSkscD0wfXJldHVybiBsZT1idCwwfHB9ZnVuY3Rpb24gVkkobCxjKXtsfD0wLGN8PTA7dmFyIGY9MCxwPTA7Zj0xO2U6Zm9yKDs7KXtzd2l0Y2goMHxmZVtsPj4wXSl7Y2FzZSAwOmJyZWFrIGU7Y2FzZSA1ODpmPWYrMXwwfWw9bCsxfDB9Zm9yKGw9MTArKHA9''@;'; put 'put ''MHxBcigxKygwfFVvKGMpKXwwLGYpKXwwLCgwfGFbNDcxMjFdKTwoMHxwKT8oYVs0NzEyMV09bCxsPTB8VWEoMHxhWzQ3MTIyXSxsKSxhWzQ3MTIyXT1sKTpsPTB8YVs0NzEyMl0scmQobCxjKTtsPTB8YVs0NzEyMl0sZj1mKy0xfDA7KXA9bCsoMHxVbyhsKSl8MCxmZVtwPj4wXT01OCxmZVtw''@;'; put 'put ''KzE+PjBdPTAsc3YobCxjKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIFE1KGwpe2x8PTA7dmFyIGM9MCxmPTA7Yz0wfGFbNDcxODRdO2U6ZG97aWYoYylzd2l0Y2goYz0wfEhvKGwsYyksMHxmZVtjPj4wXSl7Y2FzZSAxMTA6aWYoMHxaaShjLDEzNTcwOSkpe2Y9NzticmVhayBlfWM9MTticmVhayBl''@;'; put 'put ''O2Nhc2UgMTAyOmlmKDB8WmkoYywxMDAwNjYpKXtmPTc7YnJlYWsgZX1jPTI7YnJlYWsgZTtjYXNlIDk4OmlmKCEoMHxaaShjLDEwMDA3NCkpKXtjPTM7YnJlYWsgZX1pZigwfFppKGMsMTExMjIxKSl7Zj03O2JyZWFrIGV9Yz00O2JyZWFrIGU7ZGVmYXVsdDpmPTc7YnJlYWsgZX1lbHNlIGY9''@;'; put 'put ''N313aGlsZSgwKTtyZXR1cm4gNz09KDB8ZikmJihjPShjPTAhPSgwfFNjKDB8Y3IoMHxhWygyPT0oMyZhW2w+PjJdfDApP2w6bCstNDh8MCkrNDA+PjJdKSkpKT8yOjEpLDB8Y31mdW5jdGlvbiBzdmUobCl7MHwobHw9MCkmJihGdCgwfGFbbCs4Pj4yXSksRnQobCkpfWZ1bmN0aW9uIEJIKGws''@;'; put 'put ''YyxmKXt2YXIgcCxtLEE7bHw9MCxwPTIvK0QwKCsoKG09K19bKGN8PTApPj4zXS0rX1soZnw9MCk+PjNdKSptKzFlLTQrKEE9K19bYys4Pj4zXS0rX1tmKzg+PjNdKSpBKSksX1tsPj4zXT1wKkEsX1tsKzg+PjNdPS1tKnB9ZnVuY3Rpb24ga29lKGwsYyxmLHAsbSl7bHw9MCxjfD0wLG18PTA7''@;'; put 'put ''dmFyIEE9MCx3PTAsYj0wLGs9MDsoQT0rRDAoKygoYj0rX1s4KyhmfD0wKT4+M10tK19bOCsocHw9MCk+PjNdKSpiKyh3PStfW2Y+PjNdLStfW3A+PjNdKSp3KSkpPDFlLTQmJihiPUE9K19bYys4Pj4zXS0rX1ttKzg+PjNdLHc9az0rX1tjPj4zXS0rX1ttPj4zXSxBPStEMCgrKGsqaysxZS00''@;'; put 'put ''K0EqQSkpKSxfW2w+PjNdPWIqKGs9Mi9BKSxfW2wrOD4+M109LWsqd31mdW5jdGlvbiBneShsLGMsZixwKXtjPStjLGZ8PTAscHw9MDt2YXIgUixHLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxxPTAscGU9MCxnZT0wO2lmKEc9bGUsbGU9bGUrMTZ8MCxSPUcsYj0oKEQ9MHxhWzQrKGx8''@;'; put 'put ''PTApPj4yXSktMXwwKS8zfDAsKEQrLTR8MCk+Pj4wPDMpYVtmKzQ+PjJdPTQsYVtmPj4yXT0wfHZyKDY0KSxhW3ArND4+Ml09NCxEPTB8dnIoNjQpLGFbcD4+Ml09RCx3dShSLDB8YVtsPj4yXSwzLGMsMHxhW2Y+PjJdLEQpO2Vsc2V7Zm9yKEQ9MHx2cihiPDwzKSxBPTAsdz0wfGFbbD4+Ml0s''@;'; put 'put ''bT0wOyEoKDB8QSk+PSgwfGIpKTspcT0rdnUodyksX1tEKyhBPDwzKT4+M109cSxBPUErMXwwLHc9dys0OHwwLG09cSttO2ZvcihjKj1tLE09MCxtPTA7ISgoMHxiKTw9KDB8TSl8fChtPStfW0QrKE08PDMpPj4zXSttLG0+PWMpKTspTT1NKzF8MDtmb3IoYVsodz1mKzR8MCk+PjJdPUE9NCso''@;'; put 'put ''az0zKk18MCl8MCxhW2Y+PjJdPTB8dnIoQTw8NCksQT0xKygzKihiLU18MCl8MCl8MCxhWyhiPXArNHwwKT4+Ml09QSxhW3A+PjJdPTB8dnIoQTw8NCksQT0wOyEoKDB8QSk+PSgwfGFbdz4+Ml0pKTspYVsocGU9KDB8YVtmPj4yXSkrKEE8PDQpfDApPj4yXT1hWyhnZT0oMHxhW2w+PjJdKSso''@;'; put 'put ''QTw8NCl8MCk+PjJdLGFbcGUrND4+Ml09YVtnZSs0Pj4yXSxhW3BlKzg+PjJdPWFbZ2UrOD4+Ml0sYVtwZSsxMj4+Ml09YVtnZSsxMj4+Ml0sQT1BKzF8MDtmb3IoQT1BKy00fDAsdz0wOyEoKDB8dyk+PSgwfGFbYj4+Ml0pKTspYVsoZ2U9KDB8YVtwPj4yXSkrKHc8PDQpfDApPj4yXT1hWyhw''@;'; put 'put ''ZT0oMHxhW2w+PjJdKSsoQTw8NCl8MCk+PjJdLGFbZ2UrND4+Ml09YVtwZSs0Pj4yXSxhW2dlKzg+PjJdPWFbcGUrOD4+Ml0sYVtnZSsxMj4+Ml09YVtwZSsxMj4+Ml0sQT1BKzF8MCx3PXcrMXwwO3d1KFIsKDB8YVtsPj4yXSkrKGs8PDQpfDAsMywoYy1tKyhxPStfW0QrKE08PDMpPj4zXSkp''@;'; put 'put ''L3EsKDB8YVtmPj4yXSkrKGs8PDQpfDAsMHxhW3A+PjJdKSxGdChEKX1sZT1HfWZ1bmN0aW9uIHZ1KGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wO3JldHVybiBwPStEMCgrKChjPStfWzgrKGx8PTApPj4zXS0oQT0rX1tsKzI0Pj4zXSkpKmMrKHA9K19bbD4+M10tKG09K19bbCsxNj4+M10p''@;'; put 'put ''KSpwKSksKygocD0rRDAoKygoQS09Zj0rX1tsKzQwPj4zXSkqQSsobS09Yz0rX1tsKzMyPj4zXSkqbSkpK3ApKyArRDAoKygoZi09K19bbCs1Nj4+M10pKmYrKGMtPStfW2wrNDg+PjNdKSpjKSkpfWZ1bmN0aW9uIEE3KGwsYyl7cmV0dXJuIGx8PTAsYz0wfGRpKGN8PTApLDB8ZnVuY3Rpb24g''@;'; put 'put ''ZVEobCl7dmFyIGM9MCxmPTAscD0wLG09MCxBPTA7Yz1sfD0wLG09bDtlOmZvcig7Oyl7Zm9yKHA9MDs7KXtpZihmPWMsYz1jKzF8MCwhKChmPTB8ZmVbZj4+MF0pPDwyND4+MjQpKWJyZWFrIGU7aWYocDw8MjQ+PjI0KXtBPTU7YnJlYWt9aWYoZjw8MjQ+PjI0IT05MilicmVhaztwPTF9dDpk''@;'; put 'put ''b3tpZig1PT0oMHxBKSlzd2l0Y2goQT0wLGY8PDI0Pj4yNHwwKXtjYXNlIDExNDpmPTEzO2JyZWFrIHQ7Y2FzZSAxMDg6Y2FzZSAxMTA6Zj0xMDticmVhayB0O2RlZmF1bHQ6YnJlYWsgdH19d2hpbGUoMCk7ZmVbbT4+MF09ZixtPW0rMXwwfXJldHVybiBmZVttPj4wXT0wLDB8bH0oYz0xPT0o''@;'; put 'put ''MHxmZVsxMTUrKDB8YVtjKzE2Pj4yXSk+PjBdKT8wfHlrKGwpOjB8Uk4obCxjKSl9ZnVuY3Rpb24gUEgobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG09K207dmFyIEQsUixHLHEscGUsQT0wLHc9MCxiPTAsaz0wLE09MCxnZT0wLGJlPTA7Zm9yKHBlPWxlLGxlPWxlKzE2NjR8MCxE''@;'; put 'put ''PXBlKzE2MDB8MCxSPXBlKzgwMHwwLEc9cGUscT0wfFFuKDI0KSxhW3ErMTY+PjJdPTEsaz0oKDB8YVtwKzQ+PjJdKS0xfDApLzN8MCx3PTAsYj1xOyEoKDB8dyk+PSgwfGspKTspe2ZvcihNPTMqd3wwLEE9MDs0IT0oMHxBKTspYVsoZ2U9RCsoQTw8NCl8MCk+PjJdPWFbKGJlPSgwfGFbcD4+''@;'; put 'put ''Ml0pKyhBK008PDQpfDApPj4yXSxhW2dlKzQ+PjJdPWFbYmUrND4+Ml0sYVtnZSs4Pj4yXT1hW2JlKzg+PjJdLGFbZ2UrMTI+PjJdPWFbYmUrMTI+PjJdLEE9QSsxfDA7dz13KzF8MCxiPTB8bXkoRCxiKX1mb3IoQT0wLHc9MCxiPXE7Oyl7aWYoIWIpe3c9cSxBPXE7YnJlYWt9JFUodyxiLGs9''@;'; put 'put ''MHxhW2IrMTY+PjJdLE09UisoQTw8NCl8MCxwPUcrKEE8PDQpfDAsbSksNTA9PSgwfChBPUErMXwwKSl8MD09KDB8ayk/KEZIKGwsYyxmLEEsUixHKSxhW1I+PjJdPWFbTT4+Ml0sYVtSKzQ+PjJdPWFbTSs0Pj4yXSxhW1IrOD4+Ml09YVtNKzg+PjJdLGFbUisxMj4+Ml09YVtNKzEyPj4yXSxh''@;'; put 'put ''W0c+PjJdPWFbcD4+Ml0sYVtHKzQ+PjJdPWFbcCs0Pj4yXSxhW0crOD4+Ml09YVtwKzg+PjJdLGFbRysxMj4+Ml09YVtwKzEyPj4yXSx3PWIsQT0xLGI9ayk6KHc9YixiPWspfWZvcig7dzspYmU9MHxhW3crMTY+PjJdLEZ0KEEpLHc9YmUsQT1iZTtsZT1wZX1mdW5jdGlvbiBteShsLGMpe2N8''@;'; put 'put ''PTA7dmFyIHAsbSxBLGY9MDtyZXR1cm4gQT1sZSxsZT1sZSsxNDR8MCxtPUErMTI4fDAsZj1BKzY0fDAscD1BLDB8QkMobHw9MCk/KDE9PSgwfGFbKGY9YysxNnwwKT4+Ml0pJiYoYVtmPj4yXT0wLGFbYz4+Ml09YVtsPj4yXSxhW2MrND4+Ml09YVtsKzQ+PjJdLGFbYys4Pj4yXT1hW2wrOD4+''@;'; put 'put ''Ml0sYVtjKzEyPj4yXT1hW2wrMTI+PjJdKSxhW20+PjJdPWFbKGY9bCs0OHwwKT4+Ml0sYVttKzQ+PjJdPWFbZis0Pj4yXSxhW20rOD4+Ml09YVtmKzg+PjJdLGFbbSsxMj4+Ml09YVtmKzEyPj4yXSxmPTB8ZnVuY3Rpb24gcVUobCxjKXtsfD0wLGN8PTA7dmFyIGY7cmV0dXJuIGY9MHxRbigy''@;'; put 'put ''NCksYVtmKzE2Pj4yXT0wLGFbZj4+Ml09YVtsPj4yXSxhW2YrND4+Ml09YVtsKzQ+PjJdLGFbZis4Pj4yXT1hW2wrOD4+Ml0sYVtmKzEyPj4yXT1hW2wrMTI+PjJdLGFbYysxNj4+Ml09ZiwwfGZ9KG0sYykpOih3dShtLGwsMywuNSxmLHApLGY9MHxteShwLDB8bXkoZixjKSkpLGxlPUEsMHxm''@;'; put 'put ''fWZ1bmN0aW9uICRVKGwsYyxmLHAsbSxBKXtsfD0wLGZ8PTAscHw9MCxtfD0wLEE9K0E7dmFyIGssTSxELFIsRyxxLHBlLGdlLGJlLHc9MCxiPTA7cGU9bGUsbGU9bGUrOTZ8MCxEPXBlKzgwfDAsTT1wZSs2NHwwLGs9cGUrNDh8MCxHPXBlKzE2fDAscT1wZSxhWyhSPXBlKzMyfDApPj4yXT1h''@;'; put 'put ''WyhjfD0wKT4+Ml0sYVtSKzQ+PjJdPWFbYys0Pj4yXSxhW1IrOD4+Ml09YVtjKzg+PjJdLGFbUisxMj4+Ml09YVtjKzEyPj4yXTtkb3tpZihsKXtpZihhW0c+PjJdPWFbbD4+Ml0sYVtHKzQ+PjJdPWFbbCs0Pj4yXSxhW0crOD4+Ml09YVtsKzg+PjJdLGFbRysxMj4+Ml09YVtsKzEyPj4yXSxm''@;'; put 'put ''KXthW3E+PjJdPWFbZj4+Ml0sYVtxKzQ+PjJdPWFbZis0Pj4yXSxhW3ErOD4+Ml09YVtmKzg+PjJdLGFbcSsxMj4+Ml09YVtmKzEyPj4yXSx3PStfW1I+PjNdLGI9K19bUis4Pj4zXTticmVha31fW3E+PjNdPTIqKHc9K19bUj4+M10pLStfW0c+PjNdLF9bcSs4Pj4zXT0yKihiPStfW1IrOD4+''@;'; put 'put ''M10pLStfW0crOD4+M107YnJlYWt9YVtxPj4yXT1hW2Y+PjJdLGFbcSs0Pj4yXT1hW2YrND4+Ml0sYVtxKzg+PjJdPWFbZis4Pj4yXSxhW3ErMTI+PjJdPWFbZisxMj4+Ml0sX1tHPj4zXT0yKih3PStfW1I+PjNdKS0rX1txPj4zXSxfW0crOD4+M109MiooYj0rX1tSKzg+PjNdKS0rX1txKzg+''@;'; put 'put ''PjNdfXdoaWxlKDApO2Fbaz4+Ml09YVtHPj4yXSxhW2srND4+Ml09YVtHKzQ+PjJdLGFbays4Pj4yXT1hW0crOD4+Ml0sYVtrKzEyPj4yXT1hW0crMTI+PjJdLGFbTT4+Ml09YVtSPj4yXSxhW00rND4+Ml09YVtSKzQ+PjJdLGFbTSs4Pj4yXT1hW1IrOD4+Ml0sYVtNKzEyPj4yXT1hW1IrMTI+''@;'; put 'put ''PjJdLGFbRD4+Ml09YVtxPj4yXSxhW0QrND4+Ml09YVtxKzQ+PjJdLGFbRCs4Pj4yXT1hW3ErOD4+Ml0sYVtEKzEyPj4yXT1hW3ErMTI+PjJdLGJlPStmdW5jdGlvbiBISChsLGMsZil7bHw9MDt2YXIgQSxwPTAsbT0wO3JldHVybiBtPStVbCgrKCtfWzgrKGZ8PTApPj4zXS0oQT0rX1s4Kyhj''@;'; put 'put ''fD0wKT4+M10pKSwrKCtfW2Y+PjNdLShwPStfW2M+PjNdKSkpLCsoLjUqKChtLT1wPStVbCgrKCtfW2wrOD4+M10tQSksKygrX1tsPj4zXS1wKSkpPjA/bSstNi4yODMxODUzMDcxNzk1ODY6bSkrcCl9KGssTSxEKSxnZT0raGEoK2JlKSpBLEE9K0RhKCtiZSkqQSxfW3A+PjNdPXcrZ2UsX1tw''@;'; put 'put ''Kzg+PjNdPWIrQSxfW20+PjNdPXctZ2UsX1ttKzg+PjNdPWItQSxsZT1wZX1mdW5jdGlvbiBGSChsLGMsZixwLG0sQSl7bHw9MCxjfD0wLG18PTAsQXw9MDt2YXIgYix3PTAsaz0wLE09MCxEPTA7Zm9yKGI9KHB8PTApPDwxLGs9MHxhWyhmfD0wKT4+Ml0sdz0wLE09MDshKCgwfHcpPj0oMHxr''@;'; put 'put ''KSk7KUQ9KDB8YVsoMHxhW2M+PjJdKSsodzw8Mik+PjJdKStNfDAsdz13KzF8MCxNPUQ7Zm9yKGFbZj4+Ml09RD1rKzF8MCxEPTB8VjAoMHxhW2M+PjJdLEQ8PDIpLGFbYz4+Ml09RCxhW0QrKHc8PDIpPj4yXT1iLGFbbD4+Ml09MHxWMCgwfGFbbD4+Ml0sTStiPDw0KSxjPWIrLTErTXwwLHc9''@;'; put 'put ''MDshKCgwfHcpPj0oMHxwKSk7KWFbKEQ9KDB8YVtsPj4yXSkrKHcrTTw8NCl8MCk+PjJdPWFbKGs9bSsodzw8NCl8MCk+PjJdLGFbRCs0Pj4yXT1hW2srND4+Ml0sYVtEKzg+PjJdPWFbays4Pj4yXSxhW0QrMTI+PjJdPWFbaysxMj4+Ml0sYVsoRD0oMHxhW2w+PjJdKSsoYy13PDw0KXwwKT4+''@;'; put 'put ''Ml09YVsoaz1BKyh3PDw0KXwwKT4+Ml0sYVtEKzQ+PjJdPWFbays0Pj4yXSxhW0QrOD4+Ml09YVtrKzg+PjJdLGFbRCsxMj4+Ml09YVtrKzEyPj4yXSx3PXcrMXwwfWZ1bmN0aW9uIE1vZShsLGMpe2N8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTA7Zm9yKGY9MHxhWyhsfD0wKT4+Ml07Oyl7''@;'; put 'put ''aWYoISgobT0wfGZlW2Y+PjBdKTw8MjQ+PjI0KSl7cD0wO2JyZWFrfWlmKCEobTw8MjQ+PjI0PT00NHwwIT0oMHwkYyhwPW08PDI0Pj4yNCkpKSl7QT01O2JyZWFrfWY9ZisxfDB9ZTpkb3tpZig1PT0oMHxBKSl7c3dpdGNoKDB8cCl7Y2FzZSAwOnA9MDticmVhayBlO2Nhc2UgNDE6Y2FzZSA0''@;'; put 'put ''MDpmPWYrMXwwO2JyZWFrIGV9Zm9yKEE9Yys0fDAsdz1jKzh8MDs7KXtpZigoMHx1dmUobTw8MjQ+PjI0KSk8PDI0Pj4yNCl7cD0xO2JyZWFrIGV9KHA9MHxhW0E+PjJdKT4+PjA+PSgwfGFbdz4+Ml0pPj4+MCYmKFEwKGMsMSkscD0wfGFbQT4+Ml0pLGFbQT4+Ml09cCsxLGZlW3A+PjBdPW0s''@;'; put 'put ''Zj1wPWYrMXwwLG09MHxmZVtwPj4wXX19fXdoaWxlKDApO3JldHVybiBhW2w+PjJdPWYsMHxwfWZ1bmN0aW9uIHV2ZShsKXtzd2l0Y2goMHwobHw9MCkpe2Nhc2UgMDpjYXNlIDQ0OmNhc2UgNDE6Y2FzZSA0MDpsPTE7YnJlYWs7ZGVmYXVsdDpsPTB9cmV0dXJuIDB8bH1mdW5jdGlvbiBqSShs''@;'; put 'put ''LGMpe3JldHVybiAwfEVvZSgwfGFbKGx8PTApPj4yXSwwfGFbbCsxNjA+PjJdLDB8YVtsKzE1Nj4+Ml0sY3w9MCl9ZnVuY3Rpb24gRW9lKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIHcsYixrLE0sRCxSLG09MCxBPTA7Uj1sZSxsZT1sZSsxNjB8MCxNPVIrMTZ8MCxEPVIsYVso''@;'; put 'put ''az1SKzIwfDApPj4yXT0wLGFbTT4+Ml09MCx1cyhELDEyOCxSKzI0fDApLHVvKEQscCksKHA9MHxhWyhtPUQrNHwwKT4+Ml0pPj4+MD49KDB8YVtEKzg+PjJdKT4+PjAmJihRMChELDEpLHA9MHxhW20+PjJdKSxmZVtwPj4wXT0wLGFbbT4+Ml09QT0wfGFbRD4+Ml0sdz1sKzMwMHwwLGI9bCsy''@;'; put 'put ''OTZ8MCxwPTAsbT1BO2U6Zm9yKDs7KXtpZihwKXtwPTE7YnJlYWt9aWYoIShwPTB8T2oobSwwfGFbdz4+Ml0saykpKXtwPTA7YnJlYWt9c3dpdGNoKCgwIT0oMHwocD0oQT0wIT0oMHwobT0wfE9qKHAsMHxhW2I+PjJdLE0pKSkpPzB8T2ooMCwwfGFbYj4+Ml0sTSk6MCkpJjEpKygxJkEpJjMp''@;'; put 'put ''e2Nhc2UgMjptPTB8dFEobCxtLDApLHA9KChwPTB8dFEobCxwLGYpKSZtfDApPi0xJigwfCgoQT0oMHxtKT4oMHxwKSk/bTpwKSk+PSgwfGMpJigwfChBP3A6bSkpPD0oMHxjKSxtPTA7Y29udGludWUgZTtjYXNlIDE6cD0oMHx0UShsLG0sYykpPT0oMHxjKSxtPTA7Y29udGludWUgZTtkZWZh''@;'; put 'put ''dWx0OnA9MCxtPTA7Y29udGludWUgZX19cmV0dXJuIEMyKEQpLGxlPVIsMHxwfWZ1bmN0aW9uIHRRKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIEEscD0wLG09MDsoQT0wfGZlWyhjfD0wKT4+MF0pPDwyND4+MjQ9PTk3JiYwPT0oMHxaaShjLDEwMDM5NikpfHwocD0zKTtlOmRve2lmKDM9PSgwfHAp''@;'; put 'put ''KXtpZigoMHxjdmUoYykpPDwyND4+MjQpe2Y9MHxyMyhjKTticmVha31pZihtPTB8YVtsKzMwOD4+Ml0pZm9yKGw9MHxhW2wrMzEyPj4yXSxmPTE7Oyl7aWYoKDB8Zik+KDB8bCkpe2Y9LTE7YnJlYWsgZX1pZihBPDwyND4+MjQ9PSgwfGZlWyhwPTB8YVttKyhmPDwyKT4+Ml0pPj4wXSkmJjA9''@;'; put 'put ''PSgwfFppKGMscCkpKWJyZWFrIGU7Zj1mKzF8MH1lbHNlIGY9LTF9fXdoaWxlKDApO3JldHVybiAwfGZ9ZnVuY3Rpb24gY3ZlKGwpe2x8PTA7Zm9yKHZhciBjPTA7Oyl7aWYoISgoYz0wfGZlW2w+PjBdKTw8MjQ+PjI0KSl7bD0xO2JyZWFrfWlmKCEoKCgyNTUmYyktNDh8MCk+Pj4wPDEwKSl7''@;'; put 'put ''bD0wO2JyZWFrfWw9bCsxfDB9cmV0dXJuIDB8bH1mdW5jdGlvbiB2eShsLGMpe3JldHVybiAwfCgrX1sxNisobHw9MCk+PjNdPj0rX1soY3w9MCk+PjNdJiYrX1tjKzE2Pj4zXT49K19bbD4+M10mJitfW2wrMjQ+PjNdPj0rX1tjKzg+PjNdPytfW2MrMjQ+PjNdPj0rX1tsKzg+PjNdJjE6MCl9''@;'; put 'put ''ZnVuY3Rpb24geG9lKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wLG09MDtlOmRve2lmKCgwfGFbbCsxNTY+PjJdKT49MiYmKHA9MHx2MihmLDB8YVs0NzE2N10sMTk1MDU5KSwoMHxqSShsLHApKTw8MjQ+PjI0PT0wKSlpZigwfGZlW3A+PjBdKXA9MDtlbHNlIGlmKDB8TXMoYyxmKSlm''@;'; put 'put ''b3IocD0wfE1zKGMsZik7Oyl7aWYoIXApe3A9MDticmVhayBlfWlmKG09MHx2MihwLDB8YVs0NzE5MF0sMTk1MDU5KSwhKDB8ZmVbbT4+MF0pKXtwPTE7YnJlYWsgZX1pZigoMHxqSShsLG0pKTw8MjQ+PjI0KXtwPTE7YnJlYWsgZX1wPTB8VnMoYyxwLGYpfWVsc2UgcD0xO2Vsc2UgcD0xfXdo''@;'; put 'put ''aWxlKDApO3JldHVybiAwfHB9ZnVuY3Rpb24gZnZlKGwsYyl7dmFyIGYscCxtO3JldHVybiBjfD0wLGY9bGUsbGU9bGUrNjR8MCxwPWYrMzJ8MCxhWyhtPWYpPj4yXT1hWyhsPTQ4KygwfGFbMTYrKGx8PTApPj4yXSl8MCk+PjJdLGFbbSs0Pj4yXT1hW2wrND4+Ml0sYVttKzg+PjJdPWFbbCs4''@;'; put 'put ''Pj4yXSxhW20rMTI+PjJdPWFbbCsxMj4+Ml0sYVttKzE2Pj4yXT1hW2wrMTY+PjJdLGFbbSsyMD4+Ml09YVtsKzIwPj4yXSxhW20rMjQ+PjJdPWFbbCsyND4+Ml0sYVttKzI4Pj4yXT1hW2wrMjg+PjJdLGFbcD4+Ml09YVtjPj4yXSxhW3ArND4+Ml09YVtjKzQ+PjJdLGFbcCs4Pj4yXT1hW2Mr''@;'; put 'put ''OD4+Ml0sYVtwKzEyPj4yXT1hW2MrMTI+PjJdLGFbcCsxNj4+Ml09YVtjKzE2Pj4yXSxhW3ArMjA+PjJdPWFbYysyMD4+Ml0sYVtwKzI0Pj4yXT1hW2MrMjQ+PjJdLGFbcCsyOD4+Ml09YVtjKzI4Pj4yXSxjPTI1NSYoMHx2eShtLHApKSxsZT1mLDB8Y31mdW5jdGlvbiBodmUobCxjKXtjfD0w''@;'; put 'put ''O3ZhciBxLHBlLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsZ2U9MCxiZT0wLE9lPTA7cT0wfGFbMTUyKyhsfD0wKT4+Ml0scGU9MHx4ZihsKSxhW3BlKzQ+PjJdPTIsYVtwZSs4Pj4yXT1jLGFbcGUrMTI+PjJdPTgsMTY3NzcyMTYmcXwwJiYoZj0oMHxoclsx''@;'; put 'put ''NzgrKDB8YVsxNisoMHxjcihjKSk+PjJdKT4+MV0pPjI/KygwfH5+KChmPTcyKitfWzE2KygwfGFbMTMyKygwfGFbYysxNj4+Ml0pPj4yXSk+PjNdKSsoZj49MD8uNTotLjUpKSk6MCxfW3BlKzE2OD4+M109ZiksTkgobCwwfGFbMTA0KygwfGFbKHc9YysxNnwwKT4+Ml0pPj4yXSxjKTtkb3tp''@;'; put 'put ''Zig0MjU5ODQwJnF8MCl7aWYoMD09KDB8YVtwZSsyMDg+PjJdKSYmMD09KDEmaXRbcGUrMjYwPj4xXSkpYnJlYWs7Uj0wfCQ1KGMpLGY9K19bMTYrKGI9MHxhW3c+PjJdKT4+M10sRz0rX1tiKzI0Pj4zXSxiPTB8blEoYyk7ZTpkb3tpZigzPT0oMnxSKSlpZihNPTB8YVsxMisoMHxhW3c+PjJd''@;'; put 'put ''KT4+Ml0scD0oMHxWSChNKSk8PDI0Pj4yND8wIT0oYVtNKzQ+PjJdfGJ8MCk6MCwwPT0oNTI0Mjg4JnF8MCl8MD09KDB8TSl8cClnZT0zMTtlbHNle2lmKEQ9KDB8KEQ9MHxhWyhtPU0rOHwwKT4+Ml0pKTwzPzE6RCxrPSgwfChrPTB8YVsoQT1NKzR8MCk+PjJdKSk+MT9rOjEsUj0wfGFbTSs0''@;'; put 'put ''ND4+Ml0scD0oKHA9KHA9MHxMaShjLDEwMjcwNSkpPzB8cjMocCk6MCktNHwwKT4+PjA+NTY/MjA6cCwhKGFbQT4+Ml18Yikpe2FbcGUrMjY0Pj4yXT0wLG09MHx2cigzMiksX1ttPj4zXT1mLShPZT0rX1s4OCsocD0wfGFbdz4+Ml0pPj4zXSksX1ttKzg+PjNdPUctKGJlPS41KitfW3ArODA+''@;'; put 'put ''PjNdKSxfW20rMTY+PjNdPU9lK2YsX1ttKzI0Pj4zXT1iZStHLHA9MjticmVha31pZigoMHwobT0wfGFbbT4+Ml0pKTwzJiYwPT0rX1tNKzMyPj4zXSYmMD09K19bTSsyND4+M10pe2lmKG09cGUrMjY0fDAsMHxhW00+PjJdKXthW20+PjJdPTEsbT0wfHZyKDMyKSxfW20+PjNdPWYsX1ttKzg+''@;'; put 'put ''PjNdPUcsX1ttKzE2Pj4zXT0rX1tSKygocD0oazw8MSktMXwwKTw8NCk+PjNdK2YsX1ttKzI0Pj4zXT0rX1tSKyhwPDw0KSs4Pj4zXStHLHA9MjticmVha31mb3IoYVttPj4yXT0yLG09MHxqSCgrX1tSKygobT0oazw8MSktMXwwKTw8NCk+PjNdLCtfW1IrKG08PDQpKzg+PjNdLHApLEE9MDs7''@;'; put 'put ''KXtpZigoMHxBKT49KDB8cCkpYnJlYWsgZTtfWyhSPW0rKEE8PDQpfDApPj4zXT0rX1tSPj4zXStmLF9bKFI9bSsoQTw8NCkrOHwwKT4+M109K19bUj4+M10rRyxBPUErMXwwfX1pZihrPTB8QXIobSxrKy0xfDApLGFbcGUrMjY0Pj4yXT0yLCgwfG0pPCgwfHApKWZvcihtPTB8dnIoRDw8NCks''@;'; put 'put ''cD0wOzspe2lmKCgwfHApPj0oMHxEKSl7cD1EO2JyZWFrIGV9X1ttKyhwPDw0KT4+M109K19bUisoKE09cCtrfDApPDw0KT4+M10rZixfW20rKHA8PDQpKzg+PjNdPStfW1IrKE08PDQpKzg+PjNdK0cscD1wKzF8MH1lbHNlIGZvcihiPSgwfG0pLygwfHApfDAsbT0wfHZyKHA8PDQpLEE9MCx3''@;'; put 'put ''PTA7Oyl7aWYoKDB8QSk+PSgwfHApKWJyZWFrIGU7X1ttKyhBPDw0KT4+M109K19bUisoKEQ9dytrfDApPDw0KT4+M10rZixfW20rKEE8PDQpKzg+PjNdPStfW1IrKEQ8PDQpKzg+PjNdK0csQT1BKzF8MCx3PXcrYnwwfX1lbHNlIGdlPTMxfXdoaWxlKDApOzMxPT0oMHxnZSkmJihhW3BlKzI2''@;'; put 'put ''ND4+Ml09MCxtPTB8dnIoMzIpLF9bbT4+M109Zi0rX1s4OCsocD0wfGFbdz4+Ml0pPj4zXSxfW20rOD4+M109Ry0oT2U9LjUqK19bcCs4MD4+M10pLF9bbSsxNj4+M109K19bcCs5Nj4+M10rZixfW20rMjQ+PjNdPU9lK0cscD0yKSw4MTkyJnF8fE1oKGwsbSxtLHApLGFbcGUrMjcyPj4yXT1t''@;'; put 'put ''LGFbcGUrMjY4Pj4yXT1wfX13aGlsZSgwKTtMOSgwfExpKGMsMTAwMDMyKSksZnVuY3Rpb24gdmIobCxjKXtjfD0wO3ZhciBmPTA7MHwoYz0wfGFbNjArKGx8PTApPj4yXSkmJjB8KGY9MHxhW2MrNTY+PjJdKSYmQ29bMTI3JmZdKGwpfShsLGMpfWZ1bmN0aW9uIFRvZShsKXsoZnVuY3Rpb24g''@;'; put 'put ''ZUUobCl7dmFyIGMsZj0wOzB8KGM9MHxhWzYwKyhsfD0wKT4+Ml0pJiYwfChmPTB8YVtjKzYwPj4yXSkmJkNvWzEyNyZmXShsKX0pKGx8PTApLE9DKGwpfWZ1bmN0aW9uIE5IKGwsYyxmKXtsfD0wLGN8PTA7dmFyIG0sdyxiLGssTSxBLHA9MDtNPWxlLGxlPWxlKzE0NHwwLGI9TSxwPTB8TGko''@;'; put 'put ''Znw9MCwxNDEwNTUpLHc9MHxMaShmLDE0MTEwMSksaz0wfExpKGYsMTQxMDg4KSx1cyhiLDEyOCxNKzE2fDApLEE9Yz8wfGFbYz4+Ml06MCwwIT0oMHxwKSYmMCE9KDB8ZmVbcD4+MF0pfHwocD0wfExpKGYsMTExNDc3KSksbT0wfHdGKGwsZixiKSxRMShsLEEscCxjPXc/MHxBNyh3LGYpOjAs''@;'; put 'put ''ayxtLGYpLEZ0KGMpLEMyKGIpLGxlPU19ZnVuY3Rpb24gblEobCl7dmFyIGM9MCxmPTA7bD0wfEJhKGx8PTAsMHxhWzQ3MTU3XSwxOTUwNTkpO2U6ZG97aWYoMHxmZVtsPj4wXSlmb3IoekEobCksbD0wLGM9MTg4MjI4Ozspe2lmKCEoZj0wfGFbYz4+Ml0pKWJyZWFrIGU7bD0oZj0wPT0oMHxa''@;'; put 'put ''aShmLDExMTEwMSkpKT8xOmwsYz1jKzR8MH1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIFZIKGwpe3ZhciBjPTA7cmV0dXJuIDB8KDQ9PSgwfGFbOCsobHw9MCk+PjJdKSYmMD09KDB8KDB8fn4oKGM9K19bbCsxNj4+M10pKyhjPj0wPy41Oi0uNSkpKSU5MCkmJjA9PStf''@;'; put 'put ''W2wrMjQ+PjNdPzA9PStfW2wrMzI+PjNdJjE6MCl9ZnVuY3Rpb24gakgobCxjLGYpe2w9K2wsYz0rYzt2YXIgQSx3LHA9MCxtPTA7Zm9yKEE9Ni4yODMxODUzMDcxNzk1ODYvKygwfChmfD0wKSksdz0wfHZyKGY8PDQpLHA9MCxtPTA7ISgoMHxtKT49KDB8ZikpOylfW3crKG08PDQpPj4zXT0r''@;'; put 'put ''aGEoK3ApKmwsX1t3KyhtPDw0KSs4Pj4zXT0rRGEoK3ApKmMscCs9QSxtPW0rMXwwO3JldHVybiAwfHd9ZnVuY3Rpb24gclEobCxjKXtsfD0wLGN8PTA7dmFyIGY9MDtlOmRve2lmKCgwfGFbbCsxNTY+PjJdKT49MiYmKGY9MHx2MihjLDB8c2koYywwLDEwMTUxMCwwKSwxOTUwNTkpLCgwfGpJ''@;'; put 'put ''KGwsZikpPDwyND4+MjQ9PTApKWlmKDB8ZmVbZj4+MF0pZj0wO2Vsc2UgZm9yKGY9MHxEdChjKTs7KXtpZighZil7Zj0wO2JyZWFrIGV9aWYoKDB8eG9lKGwsYyxmKSk8PDI0Pj4yNCl7Zj0xO2JyZWFrIGV9Zj0wfHp0KGMsZil9ZWxzZSBmPTF9d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlv''@;'; put 'put ''biBJb2UobCxjKXt2YXIgZjtjfD0wLGY9MHx4ZihsfD0wKSxhW2YrND4+Ml09MSxhW2YrOD4+Ml09YyxhW2YrMTI+PjJdPTEsTkgobCwwfGFbMTIrKDB8YVtjKzE2Pj4yXSk+PjJdLGMpLGZ1bmN0aW9uIERSKGwsYyl7Y3w9MDt2YXIgZj0wOzB8KGM9MHxhWzYwKyhsfD0wKT4+Ml0pJiYwfChm''@;'; put 'put ''PTB8YVtjKzMyPj4yXSkmJkNvWzEyNyZmXShsKX0obCxjKX1mdW5jdGlvbiBaSShsLGMpe2N8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MDtsPTB8TGkobHw9MCwxNDEwODIpO2U6ZG97aWYoMCE9KDB8bCkmJjAhPSgwfGZlW2w+PjBdKSlmb3IoekEobCksZj0xODgyMjgsbD0wOzspe2Zvcig7Oyl7''@;'; put 'put ''aWYoIShwPTB8YVtmPj4yXSkpe2Y9MTg4MjI4O2JyZWFrIGV9aWYoISgwfFppKHAsMTExMTAxKSkpe209MTA7YnJlYWt9aWYoISgwfFppKHAsMTA2MzM0KSkpe3A9ZixtPTEyO2JyZWFrfWlmKCEoMHxaaShwLDEwNjM0MSkpKXtwPWYsbT0xNDticmVha31pZighKDB8WmkocCwxMDYzMTYpKSl7''@;'; put 'put ''cD1mLG09MTY7YnJlYWt9Zj1mKzR8MH1pZigxMCE9KDB8bSkpaWYoMTIhPSgwfG0pKWlmKDE0IT0oMHxtKSlpZigxNiE9KDB8bSkpO2Vsc2V7Zm9yKDthWyhtPXApPj4yXT1BPTB8YVsocD1wKzR8MCk+PjJdLEE7KW09MTY7bHw9NH1lbHNle2Zvcig7YVsobT1wKT4+Ml09QT0wfGFbKHA9cCs0''@;'; put 'put ''fDApPj4yXSxBOyltPTE0O2x8PTY0fWVsc2V7Zm9yKDthWyhBPXApPj4yXT1tPTB8YVsocD1wKzR8MCk+PjJdLG07KW09MTI7bHw9M31lbHNlIGY9Zis0fDAsbHw9MX1lbHNlIGY9MCxsPTB9d2hpbGUoMCk7cmV0dXJuIGFbYz4+Ml09bCwwfGZ9ZnVuY3Rpb24gdWsobCxjLGYpe2x8PTAsY3w9''@;'; put 'put ''MCxmfD0wO3ZhciBBLGIscD0wLG09MCx3PTAsaz0wO2lmKGI9bGUsbGU9bGUrMTZ8MCxBPWIsYVsodz1iKzR8MCk+PjJdPTAsaz0wPT0oMHxzNyhsLDAsdykpLHc9MHxhW3c+PjJdLGsmJigwfChwPTB8YVt3Pj4yXSkpPj0yJiYwIT0oMHxhW2FbKG09dys4fDApPj4yXT4+Ml0pKXsoMHxwKT4y''@;'; put 'put ''JiYkcigwLDEwMDQxNSxBKSxrPTB8UW4oMSsoMHxVbyhsKSl8MCksYVtjPj4yXT1rLHJkKGssMHxhW2FbbT4+Ml0+PjJdKSwwfGFbMTIrKDB8YVttPj4yXSk+PjJdPyhrPShrPTB8YVtjPj4yXSkrKDErKDB8VW8oaykpKXwwLGFbYys0Pj4yXT1rLHJkKGssMHxhWzEyKygwfGFbbT4+Ml0pPj4y''@;'; put 'put ''XSkpOmFbYys0Pj4yXT0wLGw9MHxhW20+PjJdO2Rve2lmKCEoMHxmZVtsKzg+PjBdKSl7aWYoMHxmZVtsKzIwPj4wXSl7am5bZj4+Ml09MS0ram5bbCsxNj4+Ml07YnJlYWt9am5bZj4+Ml09MDticmVha31hW2Y+PjJdPWFbbCs0Pj4yXX13aGlsZSgwKTtIQSh3KSxsPTF9ZWxzZSBhW2M+PjJd''@;'; put 'put ''PTAsSEEodyksbD0wO3JldHVybiBsZT1iLDB8bH1mdW5jdGlvbiBkdmUobCxjKXsoZnVuY3Rpb24gcU0obCxjKXtjfD0wO3ZhciBmPTA7MHwoYz0wfGFbNjArKGx8PTApPj4yXSkmJjB8KGY9MHxhW2MrMzY+PjJdKSYmQ29bMTI3JmZdKGwpfSkobHw9MCxjfD0wKSxPQyhsKX1mdW5jdGlvbiBa''@;'; put 'put ''SChsLGMsZixwKXtsfD0wLGZ8PTA7dmFyIEEsbT0wO2ZvcihtPSgwfChtPShBPTB8YVsoY3w9MCk+PjJdKTw8MSkpPigwfChwfD0wKSk/bTpwLCgwfEEpPCgwfHApJiYobD0wfFYwKGwsbTw8NCksYVtjPj4yXT1tKSxjPTA7ISgoMHxjKT49KDB8cCkpOylfW2wrKGM8PDQpPj4zXT0rX1tmKygy''@;'; put 'put ''NCpjfDApPj4zXSxfW2wrKGM8PDQpKzg+PjNdPStfW2YrKDI0KmN8MCkrOD4+M10sYz1jKzF8MDtyZXR1cm4gMHxsfWZ1bmN0aW9uIHpJKGwsYyl7dmFyIGY7Zj0wfGFbKGN8PTApPj4yXSxhWyhsfD0wKT4+Ml09YVtjKzQ+PjJdLGFbbCs0Pj4yXT1mfWZ1bmN0aW9uIERvZShsLGMpe2x8PTA7''@;'; put 'put ''dmFyIG0sZj0wLHA9MDtmb3IobT0xNisoY3w9MCl8MCxwPTE7ISgoMHxwKT4oMHxhWzE4MCsoYz0wfGFbbT4+Ml0pPj4yXSkpOylEb2UobCxmPTB8YVsoMHxhW2MrMTg0Pj4yXSkrKHA8PDIpPj4yXSksMHwoYz0wfExpKGYsMTQwODIzKSkmJjB8ZmVbYz4+MF0mJm1hKGwsYyksMHwoYz0wfExp''@;'; put 'put ''KGYsMTM3NzI5KSkmJjB8ZmVbYz4+MF0mJm1hKGwsYyksMHwoYz0wfExpKGYsMTQwOTc3KSkmJjB8ZmVbYz4+MF0mJm1hKGwsYyksMHwoYz0wfExpKGYsMTAxNDE4KSkmJjB8ZmVbYz4+MF0mJmhsKGwsYyksMHwoYz0wfExpKGYsMTAxNDQ2KSkmJjB8ZmVbYz4+MF0mJm1hKGwsYykscD1wKzF8''@;'; put 'put ''MH1mdW5jdGlvbiBndmUobCl7bHw9MDt2YXIgYz0wLGY9MCxwPTA7cmV0dXJuKGM9MHxhWzQ3MTI3XSl8fChjPTB8aXMoMjA2MjgsMHxhWzQ1ODFdKSxhWzQ3MTI3XT1jKSwwfG1pWzYzJmFbYz4+Ml1dKGMsbCw0KT9jPTA6KHA9MHxhWyhmPTB8YVs0NzEyN10pPj4yXSxjPTB8cmEobCksbWlb''@;'; put 'put ''NjMmcF0oZixjLDEpLGM9MSksMHxjfWZ1bmN0aW9uIHNjKGwpe3ZhciBjPTA7Yz0wfGFbNDcxMjhdLChsfD0wKT8oYVs0NzEyOF09YysxLGN8fChhWzQ3MTI5XT0wfHJhKDB8SWooMSwwKSksSWooMSwxNTM1NjMpKSk6KDB8Yyk+MCYmKGFbNDcxMjhdPWM9YystMXwwLDA9PSgwfGMpKSYmKElq''@;'; put 'put ''KDEsMHxhWzQ3MTI5XSksRnQoMHxhWzQ3MTI5XSkpfWZ1bmN0aW9uIGcyKGwsYyl7bHw9MCxjfD0wO3ZhciBHLGdlLE9lLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MDtPZT1sZSxsZT1sZSs5NnwwLEc9T2UrNDh8MCxnZT1PZSsyNHwwLHA9T2UrOHwwLGY9T2U7ZG97''@;'; put 'put ''aWYoMCE9KDB8aDAoYywxMzc0ODMsMCwxKSkmJjAhPSgwfGFbOCsoMHxhWyhSPWMrMTZ8MCk+PjJdKT4+Ml0pKXtMb2UoYyksT29lKGwsYyksUm9lKGwsYyksc2MoMSksYj1sKzU2fDAsaz1sKzE4NHwwLE09bCsxOTJ8MCxEPWwrMjh8MCx3PTB8ekcobCk7ZTpmb3IoOzspe2lmKCF3KXtBPTMz''@;'; put 'put ''O2JyZWFrfWlmKChmPTB8YVtiPj4yXSk/KGFbdysyMD4+Ml09YVtmKzg+PjJdLGY9MHxhW2YrMTI+PjJdKTooYVt3KzIwPj4yXT0wLGY9MCksYVt3KzI0Pj4yXT1mLGFbdysxMj4+Ml09bCxhW3crMjg+PjJdPWFbaz4+Ml0sYVt3KzYyMD4+Ml09MjU3NjQsYVt3KzYyND4+Ml09MTQsISgwfGFb''@;'; put 'put ''OCsoMHxhW1I+PjJdKT4+Ml0pKXtBPTEzO2JyZWFrfXN3aXRjaChBPTB8azkodywwfGFbKHA9dys1MnwwKT4+Ml0pLGFbdys1Nj4+Ml09QSwwfEEpe2Nhc2UgOTk5OkE9MTY7YnJlYWsgZTtjYXNlIDIxOmY9MTticmVhaztjYXNlIDI0OmY9NTIwO2JyZWFrO2RlZmF1bHQ6Zj0wfG9RKGMpfWFb''@;'; put 'put ''KG09dysxNTJ8MCk+PjJdPWFbbT4+Ml18ZixmPTB8YVtNPj4yXTtkb3tpZihmKXtpZigzMiZhW2YrMTUyPj4yXXwwJiYwPT0oMHxaaSgwfGFbcD4+Ml0sMHxhW2YrNTI+PjJdKSkpe2lmKCEoZj0wfGFbNDcxMzBdKSl7QT0yNzticmVha31hW2YrOD4+Ml09dyxhW3crMzY+PjJdPWFbZiszNj4+''@;'; put 'put ''Ml0sQT0yOTticmVha31TOShmKSxhW00+PjJdPTAsYVtEPj4yXT0wLEE9MjR9ZWxzZSBBPTI0fXdoaWxlKDApOzI0PT0oMHxBKSYmKGFbNDcxMzBdPTAsQT0yNyksMjc9PSgwfEEpJiYoQT0wLDA9PSgwfFRSKHcpKSkmJihhW00+PjJdPXcsQT0yOSksMjk9PSgwfEEpJiYoYVt3Kzg+PjJdPTAs''@;'; put 'put ''YVt3KzEwND4+Ml09MjU4NzYsQm9lKHcpLEdJKHcpLFBvZSh3LGMpLEZvZSh3LGMpLEhvZSh3LGMpLDEyOCZhW20+PjJdfHxnVyh3LGMpLGFbNDcxMzBdPXcpLHc9MHxWbWUobCl9aWYoMTM9PSgwfEEpKXskcigxLDEwMDY3OSxnZSksc2MoMCksZj0tMTticmVha31pZigxNj09KDB8QSkpe2Fb''@;'; put 'put ''Rz4+Ml09YVtwPj4yXSwkcigxLDEwMDcwMCxHKSxzYygwKSxmPS0xO2JyZWFrfWlmKDMzPT0oMHxBKSl7c2MoMCksZj0wO2JyZWFrfX1lbHNlIEE9NX13aGlsZSgwKTtyZXR1cm4gNT09KDB8QSkmJigkcigxLDEwMDYwMixmKSxmPS0xKSxsZT1PZSwwfGZ9ZnVuY3Rpb24gTG9lKGwpe3ZhciBj''@;'; put 'put ''PTA7Zm9yKGM9MHxEdChsfD0wKTtjOylqb2UobCxjKSxjPTB8enQobCxjKX1mdW5jdGlvbiBPb2UobCxjKXt2YXIgdyxiLEQsZj0wLHA9MCxtPTAsQT0wLGs9MCxNPTAsUj0wO0Q9bGUsbGU9bGUrMzJ8MCxiPUQrMjR8MCxwPUQrMTZ8MCx3PUQrOHwwLE09RCxhWzE2OCsobHw9MCk+PjJdPWN8''@;'; put 'put ''PTAsZmVbKG09bCsyOTN8MCk+PjBdPTAsMHwoZj0wfExpKGMsMTA1NDk2KSkmJihhW3A+PjJdPXcsYVtwKzQ+PjJdPU0sKDB8KEE9MHxpbChmLDEwNTUwMyxwKSkpPjApJiYoX1soZj1sKzIwOHwwKT4+M109Uj03MiorX1t3Pj4zXSxfW2wrMjAwPj4zXT1SLDEhPSgwfEEpJiYoX1tmPj4zXT03''@;'; put 'put ''MiorX1tNPj4zXSksZmVbbT4+MF09MSksZmVbKHA9bCsyOTJ8MCk+PjBdPTAsMHwoZj0wfExpKGMsMTAxMTAyKSkmJihhW2I+PjJdPXcsYVtiKzQ+PjJdPU0sKDB8KGs9MHxpbChmLDEwNTUwMyxiKSkpPjApJiYoX1soZj1sKzIyNHwwKT4+M109Uj03MiorX1t3Pj4zXSxfW2wrMjE2Pj4zXT1S''@;'; put 'put ''LDEhPSgwfGspJiYoX1tmPj4zXT03MiorX1tNPj4zXSksZmVbcD4+MF09MSksZmVbKGY9bCsyOTR8MCk+PjBdPTAsYVsocD1sKzIzMnwwKT4+Ml09YVsoTT00OCsoMHxhWzgrKDB8YVsobT1jKzE2fDApPj4yXSk+PjJdKXwwKT4+Ml0sYVtwKzQ+PjJdPWFbTSs0Pj4yXSxhW3ArOD4+Ml09YVtN''@;'; put 'put ''Kzg+PjJdLGFbcCsxMj4+Ml09YVtNKzEyPj4yXSwrX1s0OCsocD0wfGFbOCsoMHxhW20+PjJdKT4+Ml0pPj4zXT4uMDAxJiYrX1twKzU2Pj4zXT4uMDAxJiYoZmVbZj4+MF09MSksYVtsKzI4OD4+Ml09MHxmZVtwKzgxPj4wXT85MDowLGFbKGY9bCsxOTZ8MCk+PjJdPTEwMTEwNiwwfChwPTB8''@;'; put 'put ''TGkoYywxMDExMDkpKSYmMHxmZVtwPj4wXSYmKGFbZj4+Ml09cCksYVsoTT1sKzI1NnwwKT4+Ml09YVsoaz0xNisoMHxhW20+PjJdKXwwKT4+Ml0sYVtNKzQ+PjJdPWFbays0Pj4yXSxhW00rOD4+Ml09YVtrKzg+PjJdLGFbTSsxMj4+Ml09YVtrKzEyPj4yXSxhW00rMTY+PjJdPWFbaysxNj4+''@;'; put 'put ''Ml0sYVtNKzIwPj4yXT1hW2srMjA+PjJdLGFbTSsyND4+Ml09YVtrKzI0Pj4yXSxhW00rMjg+PjJdPWFbaysyOD4+Ml0sYVs0NzE0MV09MHxzaShjLDAsMTAxNDcyLDApLGFbNDcxNDJdPTB8c2koYywwLDEwMTQ2MywwKSxhW2wrMzIwPj4yXT0wfEJhKDAsMHxhWzQ3MTUxXSwxMDc5OTQpLF9b''@;'; put 'put ''bCszMjg+PjNdPStNbCgwLDB8YVs0NzE1MF0sMTQsMSksYVtsKzMzNj4+Ml09MjA2NjQsYVtsKzE4OD4+Ml09MHx0aShjKSxsZT1EfWZ1bmN0aW9uIFJvZShsLGMpe2N8PTA7dmFyIG0sZj0wLHA9MDswfChwPTB8YVsoZj0zMDQrKGx8PTApfDApPj4yXSkmJihGdChwKSxhW2Y+PjJdPTApLDB8''@;'; put 'put ''KGY9MHxhWyhwPWwrMzA4fDApPj4yXSkmJihGdChmKSxhW3A+PjJdPTApLDB8KGY9MHxhWyhtPWwrMzE2fDApPj4yXSkmJihGdChmKSxhW20+PjJdPTApLChmPTB8TGkoYywxMDA4NTMpKT8oYVtsKzMxMj4+Ml09MHxmdW5jdGlvbiBOb2UobCxjLGYpe2x8PTAsZnw9MDt2YXIgQSxiLHA9MCxt''@;'; put 'put ''PTAsdz0wO2ZvcihiPWxlLGxlPWxlKzE2fDAsbT1iLHA9MHxMaShjfD0wLDEwMDk3MyksYVsodz1sKzI5NnwwKT4+Ml09MD09KDB8cCk/MTAwOTgyOnAsYz0wfExpKGMsMTAwOTg2KSxhWyhwPWwrMzAwfDApPj4yXT1jPTA9PSgwfGMpPzEwMDk5OTpjLDB8KGM9MHxmdW5jdGlvbiBTY2UobCxj''@;'; put 'put ''KXtyZXR1cm4gYz0obHw9MCkrKDB8TGoobCxjfD0wKSl8MCwwfCgwfGZlW2M+PjBdP2M6MCl9KDB8YVt3Pj4yXSxjKSkmJihhW20+PjJdPWZlW2M+PjBdLCRyKDAsMTAxMDAxLG0pLGFbcD4+Ml09MTk1MDU5KSxjPTB8cmEoZiksYVtsKzMwND4+Ml09YyxBPWwrMzA4fDAscD0wLGw9MDtmPTB8''@;'; put 'put ''bHYoYywwfGFbdz4+Ml0pOyltPWwrMXwwLCgwfGwpPCgwfHApP2M9MHxhW0E+PjJdOihwPXArMTI4fDAsYz0oYz0wfGFbQT4+Ml0pPzB8VjAoYyxwPDwyKTowfFFuKHA8PDIpLGFbQT4+Ml09YyksYVtjKyhtPDwyKT4+Ml09ZixsPW0sYz0wO3JldHVybiAwfGwmJih3PTB8VjAoMHxhW0E+PjJd''@;'; put 'put ''LDgrKGw8PDIpfDApLGFbQT4+Ml09dyxhW3c+PjJdPTAsYVsoMHxhW0E+PjJdKSsobCsxPDwyKT4+Ml09MCksbGU9YiwwfGx9KGwsYyxmKSwwfChmPTB8TGkoYywxMDA4NjApKSYmMHxmZVtmPj4wXSYmKGFbbT4+Ml09MHxmdW5jdGlvbiBWb2UobCxjKXtjfD0wO3ZhciBiLGssTSxmPTAscD0w''@;'; put 'put ''LG09MCxBPTAsdz0wO2ZvcihNPWxlLGxlPWxlKzE2fDAsaz1NLGY9MHxRbig4KyhhWyhiPTMxMisobHw9MCl8MCk+PjJdPDwyKXwwKSxwPTAsdz0xOyEoKDB8dyk+KDB8KEE9MHxhW2I+PjJdKSkpOyltPXArMXwwLCgwfEVvZShsLHcsQSxjKSk8PDI0Pj4yNCYmKGFbZisobTw8Mik+PjJdPXcs''@;'; put 'put ''cD1tKSx3PXcrMXwwO3JldHVybiBwPyhhW2Y+PjJdPXAsYVtmKyhwKzE8PDIpPj4yXT0xKygwfGFbYj4+Ml0pKTooYVtrPj4yXT1jLCRyKDAsMTAwODcyLGspLEZ0KGYpLGY9MCksbGU9TSwwfGZ9KGwsZikpKTooYVtwPj4yXT0wLGFbbCszMTI+PjJdPTEpfWZ1bmN0aW9uIG9RKGwpe2w9MHxM''@;'; put 'put ''aShsfD0wLDEwMDgyMSk7ZTpkb3tpZihsKXN3aXRjaCgwfGZlW2w+PjBdKXtjYXNlIDExMDppZigwfFppKGwrMXwwLDEwMDgzMykpe2w9MDticmVhayBlfWw9MTticmVhaztjYXNlIDEwMTppZigwfFppKGwrMXwwLDEwMDg0Mykpe2w9MDticmVhayBlfWw9MTY7YnJlYWs7ZGVmYXVsdDpsPTA7''@;'; put 'put ''YnJlYWsgZX1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIEJvZShsKXt2YXIgYz0wLGY9MDswfGZlWzI5MisoZj0wfGFbKGx8PTApPj4yXSk+PjBdPyhhWyhsPWwrMjQwfDApPj4yXT1hWyhmPWYrMjE2fDApPj4yXSxhW2wrND4+Ml09YVtmKzQ+PjJdLGFbbCs4Pj4yXT1h''@;'; put 'put ''W2YrOD4+Ml0sYVtsKzEyPj4yXT1hW2YrMTI+PjJdKTooX1tsKzI0OD4+M109Yz0zMDA9PSgwfGFbbCs1Nj4+Ml0pPytfWzgrKDB8YVtsKzY4Pj4yXSk+PjNdOjQsX1tsKzI0MD4+M109Yyl9ZnVuY3Rpb24gR0kobCl7dmFyIGM9MDtjPTB8YVsobHw9MCk+PjJdO2U6ZG97aWYoMHxmZVtjKzI5''@;'; put 'put ''Mz4+MF0pbD1sKzQxNnwwLGM9YysyMDB8MCxhW2w+PjJdPWFbYz4+Ml0sYVtsKzQ+PjJdPWFbYys0Pj4yXSxhW2wrOD4+Ml09YVtjKzg+PjJdLGFbbCsxMj4+Ml09YVtjKzEyPj4yXTtlbHNlIHN3aXRjaCgwfGFbbCs1Nj4+Ml0pe2Nhc2UgMzAwOmFbKGM9bCs0MTZ8MCk+PjJdPWFbKGw9OCso''@;'; put 'put ''MHxhW2wrODQ+PjJdKXwwKT4+Ml0sYVtjKzQ+PjJdPWFbbCs0Pj4yXSxhW2MrOD4+Ml09YVtsKzg+PjJdLGFbYysxMj4+Ml09YVtsKzEyPj4yXTticmVhayBlO2Nhc2UgMzA6Y2FzZSAyMTpjYXNlIDIyOmNhc2UgNDpjYXNlIDM6Y2FzZSAyOl9bbCs0MjQ+PjNdPTM2LF9bbCs0MTY+PjNdPTM2''@;'; put 'put ''O2JyZWFrIGU7ZGVmYXVsdDphWyhjPWwrNDE2fDApPj4yXT0wLGFbYys0Pj4yXT0wLGFbYys4Pj4yXT0wLGFbYysxMj4+Ml09MDticmVhayBlfX13aGlsZSgwKX1mdW5jdGlvbiBQb2UobCxjKXt2YXIgZixwPTA7cD0wfGFbMTkyKygwfGFbKGx8PTApPj4yXSk+PjJdLGY9K19bMjQrKDB8YVs4''@;'; put 'put ''KygwfGFbMTYrKGN8PTApPj4yXSk+PjJdKT4+M107ZG97aWYoMD09Zil7aWYoMHxwJiYwfGZlW3ArMTI4Pj4wXSl7YVsobD1sKzQzMnwwKT4+Ml09YVsocD1wKzExMnwwKT4+Ml0sYVtsKzQ+PjJdPWFbcCs0Pj4yXSxhW2wrOD4+Ml09YVtwKzg+PjJdLGFbbCsxMj4+Ml09YVtwKzEyPj4yXTti''@;'; put 'put ''cmVha31pZihjPWwrNDMyfDAsMzAwPT0oMHxhW2wrNTY+PjJdKSl7YVtjPj4yXT1hWyhsPTQwKygwfGFbbCs4ND4+Ml0pfDApPj4yXSxhW2MrND4+Ml09YVtsKzQ+PjJdLGFbYys4Pj4yXT1hW2wrOD4+Ml0sYVtjKzEyPj4yXT1hW2wrMTI+PjJdO2JyZWFrfV9bbCs0NDA+PjNdPTk2LF9bYz4+''@;'; put 'put ''M109OTY7YnJlYWt9X1tsKzQ0MD4+M109ZixfW2wrNDMyPj4zXT1mfXdoaWxlKDApfWZ1bmN0aW9uIEZvZShsLGMpe2N8PTA7dmFyIEQsUixHLHEscGUsZ2UsT2UsTGUsUmUsSGUsVmUscWUsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxiZT0wO3FlPWxlLGxlPWxlKzExMnwwLGdl''@;'; put 'put ''PXFlKzgwfDAsYmU9cWUrNTZ8MCxwZT1xZSs0MHwwLE9lPXFlKzMyfDAsTGU9cWUrMjR8MCxSZT1xZSsxNnwwLEhlPXFlKzh8MCxWZT1xZSxEPStfWzI3Misoaz0wfGFbKGx8PTApPj4yXSk+PjNdLEc9K19baysyODA+PjNdLHE9K19baysyNjQ+PjNdLF9bbCsyMDg+PjNdPWY9KFI9K19baysy''@;'; put 'put ''NTY+PjNdKS0ocD0rX1tsKzI0MD4+M10pLF9bbCsyMTY+PjNdPXc9cS0oQT0rX1tsKzI0OD4+M10pLF9bbCsyMjQ+PjNdPXArPUQsX1tsKzIzMj4+M109QSs9RyxmPXAtZix3PUEtdyxfW1JlPj4zXT0xLEE9K19bNjQrKG09MHxhWzgrKDB8YVtjKzE2Pj4yXSk+PjJdKT4+M107ZG97aWYoQT4u''@;'; put 'put ''MDAxJiYoYj0rX1ttKzcyPj4zXSk+LjAwMSl7aWYoIShBPChmPTA9PWY/QTpmKXxiPChwPTA9PXc/Yjp3KXx8Yj5wJkE+ZiYwIT0oMHxmZVttKzgwPj4wXSkpKXtiPWYsdz1wLEE9MTticmVha31fW1JlPj4zXT1BPSgoTT1BL2Y8Yi9wKT9BOmIpLyhNP2Y6cCksYj1mLHc9cH1lbHNlIGI9ZixB''@;'; put 'put ''PTF9d2hpbGUoMCk7aWYoX1tIZT4+M109cD0uNSooUitEKSxfW1ZlPj4zXT1mPS41KihxK0cpLGFbbCszNjA+PjJdPWFbaysyODg+PjJdLF9bT2U+PjNdPWIqPUEsX1tMZT4+M109dyo9QSxtPTB8TGkoYywxMDA3NTIpKXtrPTB8RjAoMSsoMHxVbyhtKSl8MCksTT0wfEYwKDErKDB8VW8obSkp''@;'; put 'put ''fDApLGFbcGU+PjJdPU9lLGFbcGUrND4+Ml09TGUsYVtwZSs4Pj4yXT1SZSxhW3BlKzEyPj4yXT1rO2Rve2lmKDQ9PSgwfGlsKG0sMTAwNzYxLHBlKSkpMHwobT0wfEdyKDB8YVtjKzYwPj4yXSxrLDApKSYmKF9bSGU+PjNdPStfWzE2KyhiZT0wfGFbbSsxNj4+Ml0pPj4zXSxfW1ZlPj4zXT0r''@;'; put 'put ''X1tiZSsyND4+M10pO2Vsc2V7aWYoYVtiZT4+Ml09T2UsYVtiZSs0Pj4yXT1MZSxhW2JlKzg+PjJdPVJlLGFbYmUrMTI+PjJdPWssYVtiZSsxNj4+Ml09TSw0IT0oMHxpbChtLDEwMDc4MSxiZSkpKXthW2dlPj4yXT1PZSxhW2dlKzQ+PjJdPUxlLGFbZ2UrOD4+Ml09UmUsYVtnZSsxMj4+Ml09''@;'; put 'put ''SGUsYVtnZSsxNj4+Ml09VmUsaWwobSwxMDA4MDEsZ2UpO2JyZWFrfTB8KG09MHxHcigwfGFbYys2MD4+Ml0saywwKSkmJihfW0hlPj4zXT0rX1sxNisoYmU9MHxhW20rMTY+PjJdKT4+M10sX1tWZT4+M109K19bYmUrMjQ+PjNdKX19d2hpbGUoMCk7RnQoayksRnQoTSksYj0rX1tPZT4+M10s''@;'; put 'put ''dz0rX1tMZT4+M10sQT0rX1tSZT4+M10scD0rX1tIZT4+M10sZj0rX1tWZT4+M119X1tsKzM2OD4+M109YixfW2wrMzc2Pj4zXT13LF9bbCszNTI+PjNdPUEsX1tsKzMzNj4+M109cCxfW2wrMzQ0Pj4zXT1mLGxlPXFlfWZ1bmN0aW9uIEhvZShsLGMpe2N8PTA7dmFyIEcscGUsVmUscWUscnQs''@;'; put 'put ''V2UsYXQsU3Qsa3Qsc3QsY3QsU24sSG4sdXIsSHIsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLHE9MCxnZT0wLGJlPTAsT2U9MCxMZT0wLFJlPTAsSGU9MCxFdD0wLFp0PTAsYnQ9MCxhbj0wO1NuPWxlLGxlPWxlKzIyNHwwLGN0PVNuKzIwMHwwLFZlPVNuKzE2OHww''@;'; put 'put ''LFN0PVNuKzE0NHwwLFp0PVNuKzEyMHwwLGt0PVNuKzk2fDAsZj1TbisxODR8MCxPZT1TbisxNzZ8MCxMZT1TbisxNjB8MCxIZT1TbisxMzZ8MCxSZT1TbisxMTJ8MCxxZT1Tbis4MHwwLHJ0PVNuKzQ4fDAsV2U9U24rMzJ8MCxhdD1TbisxNnwwLGJ0PVNuKzh8MCxhbj1TbixiZT0wfGFbKGx8''@;'; put 'put ''PTApPj4yXSxhWyhzdD1Tbis2NHwwKT4+Ml09MCxhW3N0KzQ+PjJdPTAsYVtzdCs4Pj4yXT0wLGFbc3QrMTI+PjJdPTAsYVtadD4+Ml09YVsoRXQ9bCszNjh8MCk+PjJdLGFbWnQrND4+Ml09YVtFdCs0Pj4yXSxhW1p0Kzg+PjJdPWFbRXQrOD4+Ml0sYVtadCsxMj4+Ml09YVtFdCsxMj4+Ml0s''@;'; put 'put ''MHxhWyhFdD1sKzM2MHwwKT4+Ml0mJihhW2N0Pj4yXT1hW1p0Pj4yXSxhW2N0KzQ+PjJdPWFbWnQrND4+Ml0sYVtjdCs4Pj4yXT1hW1p0Kzg+PjJdLGFbY3QrMTI+PjJdPWFbWnQrMTI+PjJdLGNrKGYsY3QpLGFbWnQ+PjJdPWFbZj4+Ml0sYVtadCs0Pj4yXT1hW2YrND4+Ml0sYVtadCs4Pj4y''@;'; put 'put ''XT1hW2YrOD4+Ml0sYVtadCsxMj4+Ml09YVtmKzEyPj4yXSksYVtrdD4+Ml09YVsoZ2U9bCs0MTZ8MCk+PjJdLGFba3QrND4+Ml09YVtnZSs0Pj4yXSxhW2t0Kzg+PjJdPWFbZ2UrOD4+Ml0sYVtrdCsxMj4+Ml09YVtnZSsxMj4+Ml0sMCE9KDB8ZmVbYmUrMjk0Pj4wXSkmJjAhPSgzMiZhW2wr''@;'; put 'put ''MTUyPj4yXXwwKT8oX1tTdD4+M109QT0rX1tiZSsyMzI+PjNdLTIqK19ba3Q+PjNdLF9bKFI9U3QrOHwwKT4+M109Yj0rX1tiZSsyNDA+PjNdLTIqK19ba3QrOD4+M10sQTwxZS00PyhhW2wrMTY0Pj4yXT0xLGY9MSk6KGFbKHA9bCsxNjR8MCk+PjJdPWY9fn4oKEQ9K19bWnQ+PjNdKS9BKSxE''@;'; put 'put ''LUEqKygwfGYpPjFlLTQmJihhW3A+PjJdPWY9ZisxfDApKSxiPDFlLTQ/KGFbbCsxNjg+PjJdPTEscD0xLG09K19bWnQrOD4+M10pOihhWyh3PWwrMTY4fDApPj4yXT1wPX5+KChtPStfW1p0Kzg+PjNdKS9iKSxtLWIqKygwfHApPjFlLTQmJihhW3c+PjJdPXA9cCsxfDApKSxhW2wrMjA0Pj4y''@;'; put 'put ''XT0wfEFyKHAsZiksX1tadD4+M109RD0rX1soK19bWnQ+PjNdPEE/WnQ6U3QpPj4zXSxmPVIscD1adCxrPStfWyhtPGI/WnQ6U3QpKzg+PjNdLG09RCx3PTIxKTooMHxhW2wrNjg+PjJdPyhfW1N0Pj4zXT1BPShBPStfWzI0KyhmPTB8YVtsKzg0Pj4yXSk+PjNdLTIqK19ba3Q+PjNdKTwwPzA6''@;'; put 'put ''QSxEPStfW2YrMzI+PjNdLTIqK19ba3QrOD4+M10sX1soZj1TdCs4fDApPj4zXT1ELEQ8MD8ocD1TdCx3PTE3KTpmPVN0KTooX1tTdCs4Pj4zXT0wLHA9U3QsZj1TdCx3PTE3KSwxNz09KDB8dykmJihfW2Y+PjNdPTAsZj1wLEE9K19bcD4+M10pLGFbbCsyMDQ+PjJdPTEsYVtsKzE2OD4+Ml09''@;'; put 'put ''MSxhW2wrMTY0Pj4yXT0xLEE8KG09K19bWnQ+PjNdKSYmKF9bZj4+M109bSxBPW0pLChiPStfWyhmPVN0Kzh8MCk+PjNdKTwoaz0rX1tadCs4Pj4zXSk/KHA9U3Qsdz0yMSk6KHE9ZixrPWIpKSwyMT09KDB8dykmJihfW3ArOD4+M109ayxxPWYsaz0rX1tmPj4zXSksYVtsKzQ0OD4+Ml09fn4o''@;'; put 'put ''KGI9LjAxMzg4ODg4ODg4ODg4ODg4OCorX1socGU9bCs0MzJ8MCk+PjNdKigyKihNPStfW2t0Pj4zXSkrQSkpKyhiPj0wPy41Oi0uNSkpLGFbbCs0NTI+PjJdPX5+KChEPS4wMTM4ODg4ODg4ODg4ODg4ODgqK19bKGdlPWwrNDQwfDApPj4zXSooMiooYj0rX1soRz1rdCs4fDApPj4zXSkraykp''@;'; put 'put ''KyhEPj0wPy41Oi0uNSkpLHc9bCsxODh8MCxSPWwrMTgwfDAscD1iZSsxOTZ8MCxhWyhmPWwrMTcyfDApPj4yXT0wLGFbZis0Pj4yXT0wLGFbZis4Pj4yXT0wLGFbZisxMj4+Ml09MCxhW2YrMTY+PjJdPTAsYVtmKzIwPj4yXT0wLFdJKE9lLGwsMHxmZVthW3A+PjJdPj4wXSksT2U9MHxhWyhi''@;'; put 'put ''ZT1PZSkrND4+Ml0sYVsoZj1SKT4+Ml09YVtiZT4+Ml0sYVtmKzQ+PjJdPU9lLFdJKExlLGwsMHxmZVsxKygwfGFbcD4+Ml0pPj4wXSksTGU9MHxhWyhmPUxlKT4+Ml0sZj0wfGFbZis0Pj4yXSxhWyhPZT13KT4+Ml09TGUsYVtPZSs0Pj4yXT1mLDE9PSgwfCgoMHwoTGU9KDB8YVtSPj4yXSkr''@;'; put 'put ''TGV8MCkpPi0xP0xlOjAtTGV8MCkpJiYxPT0oMHwoKDB8KExlPSgwfGFbbCsxODQ+PjJdKStmfDApKT4tMT9MZTowLUxlfDApKXx8KFdJKEhlLGwsNjYpLEhlPTB8YVsoT2U9SGUpKzQ+PjJdLGFbKExlPVIpPj4yXT1hW09lPj4yXSxhW0xlKzQ+PjJdPUhlLFdJKFJlLGwsNzYpLFJlPTB8YVso''@;'; put 'put ''TGU9UmUpKzQ+PjJdLGFbKEhlPXcpPj4yXT1hW0xlPj4yXSxhW0hlKzQ+PjJdPVJlLGFbVmU+PjJdPWFbcD4+Ml0sJHIoMCwxMDA3MzIsVmUpKSwwfGZlWzgyKygwfGFbOCsoMHxhW2MrMTY+PjJdKT4+Ml0pPj4wXT8oQT5tP19bc3Q+PjNdPWs9LjUqKEEtbSk6az0wLChBPStfW3E+PjNdKT4o''@;'; put 'put ''RD0rX1tadCs4Pj4zXSk/X1tzdCs4Pj4zXT1BPS41KihBLUQpOkE9MCk6KEE9MCxrPTApLDB8YVtFdD4+Ml0/KGFbY3Q+PjJdPWFbWnQ+PjJdLGFbY3QrND4+Ml09YVtadCs0Pj4yXSxhW2N0Kzg+PjJdPWFbWnQrOD4+Ml0sYVtjdCsxMj4+Ml09YVtadCsxMj4+Ml0sY2socWUsY3QpLGFbWnQ+''@;'; put 'put ''PjJdPWFbcWU+PjJdLGFbWnQrND4+Ml09YVtxZSs0Pj4yXSxhW1p0Kzg+PjJdPWFbcWUrOD4+Ml0sYVtadCsxMj4+Ml09YVtxZSsxMj4+Ml0sYVtjdD4+Ml09YVtTdD4+Ml0sYVtjdCs0Pj4yXT1hW1N0KzQ+PjJdLGFbY3QrOD4+Ml09YVtTdCs4Pj4yXSxhW2N0KzEyPj4yXT1hW1N0KzEyPj4y''@;'; put 'put ''XSxjayhydCxjdCksYVtTdD4+Ml09YVtydD4+Ml0sYVtTdCs0Pj4yXT1hW3J0KzQ+PjJdLGFbU3QrOD4+Ml09YVtydCs4Pj4yXSxhW1N0KzEyPj4yXT1hW3J0KzEyPj4yXSxhW2N0Pj4yXT1hW2t0Pj4yXSxhW2N0KzQ+PjJdPWFba3QrND4+Ml0sYVtjdCs4Pj4yXT1hW2t0Kzg+PjJdLGFbY3Qr''@;'; put 'put ''MTI+PjJdPWFba3QrMTI+PjJdLGNrKFdlLGN0KSxhW2t0Pj4yXT1hW1dlPj4yXSxhW2t0KzQ+PjJdPWFbV2UrND4+Ml0sYVtrdCs4Pj4yXT1hW1dlKzg+PjJdLGFba3QrMTI+PjJdPWFbV2UrMTI+PjJdLGFbY3Q+PjJdPWFbc3Q+PjJdLGFbY3QrND4+Ml09YVtzdCs0Pj4yXSxhW2N0Kzg+PjJd''@;'; put 'put ''PWFbc3QrOD4+Ml0sYVtjdCsxMj4+Ml09YVtzdCsxMj4+Ml0sY2soYXQsY3QpLGFbc3Q+PjJdPWFbYXQ+PjJdLGFbc3QrND4+Ml09YVthdCs0Pj4yXSxhW3N0Kzg+PjJdPWFbYXQrOD4+Ml0sYVtzdCsxMj4+Ml09YVthdCsxMj4+Ml0sTT0rX1trdD4+M10saz0rX1tzdD4+M10sYj0rX1tHPj4z''@;'; put 'put ''XSxBPStfW3N0Kzg+PjNdLG09K19bWnQ+PjNdLHc9MD09KDB8YVtFdD4+Ml0pKTp3PTEsX1tsKzM4ND4+M109RD1rK00sX1tsKzM5Mj4+M109dXI9QStiLF9bbCs0MDA+PjNdPUhuPWsrTSttLF9bbCs0MDg+PjNdPU09QStiKyhIcj0rX1tadCs4Pj4zXSksX1tsKzMyMD4+M109bS8oaz0rX1ts''@;'; put 'put ''KzM1Mj4+M10pLF9bbCszMjg+PjNdPUhyL2ssYVsocD1sKzQ1NnwwKT4+Ml09fn4oKEQ9LjAxMzg4ODg4ODg4ODg4ODg4OCpEKihrPStfW3BlPj4zXSkpKyhEPj0wPy41Oi0uNSkpLGFbbCs0NjA+PjJdPX5+KChiPS4wMTM4ODg4ODg4ODg4ODg4ODgqdXIqKEQ9K19bZ2U+PjNdKSkrKGI+PTA/''@;'; put 'put ''LjU6LS41KSksYVsoZj1sKzQ2NHwwKT4+Ml09fn4oKGsqPS4wMTM4ODg4ODg4ODg4ODg4ODgqSG4pKyhrPj0wPy41Oi0uNSkpLGFbbCs0Njg+PjJdPX5+KChEKj0uMDEzODg4ODg4ODg4ODg4ODg4Kk0pKyhEPj0wPy41Oi0uNSkpLHd8fChhW2N0Pj4yXT1hW3A+PjJdLGFbY3QrND4+Ml09YVtw''@;'; put 'put ''KzQ+PjJdLHpJKGJ0LGN0KSxidD0wfGFbKFp0PWJ0KSs0Pj4yXSxhWyhsPXApPj4yXT1hW1p0Pj4yXSxhW2wrND4+Ml09YnQsYVtjdD4+Ml09YVtmPj4yXSxhW2N0KzQ+PjJdPWFbZis0Pj4yXSx6SShhbixjdCksYnQ9MHxhWyhsPWFuKSs0Pj4yXSxhWyhhbj1mKT4+Ml09YVtsPj4yXSxhW2Fu''@;'; put 'put ''KzQ+PjJdPWJ0KSxsZT1Tbn1mdW5jdGlvbiBjayhsLGMpe3ZhciBmO2Y9K19bKGN8PTApPj4zXSxfWyhsfD0wKT4+M109K19bYys4Pj4zXSxfW2wrOD4+M109Zn1mdW5jdGlvbiBXSShsLGMsZil7c3dpdGNoKGx8PTAsY3w9MCwoZj0oKGZ8PTApPDwyND4+MjQpLTY2fDApPj4+MXxmPDwzMXww''@;'; put 'put ''KXtjYXNlIDk6YVtjKzE3Nj4+Ml09KDB8YVtjKzE2OD4+Ml0pLTEsYz0wLGY9LTE7YnJlYWs7Y2FzZSAwOmM9MCxmPTE7YnJlYWs7Y2FzZSA1OmM9MSxmPTA7YnJlYWs7Y2FzZSA4OmFbYysxNzI+PjJdPSgwfGFbYysxNjQ+PjJdKS0xLGM9LTEsZj0wO2JyZWFrO2RlZmF1bHQ6Yz0wLGY9MH1h''@;'; put 'put ''W2w+PjJdPWMsYVtsKzQ+PjJdPWZ9ZnVuY3Rpb24gam9lKGwsYyl7dmFyIGYscCxtLEE7Zm9yKGx8PTAsX1s0OCsoZj0wfGFbMTYrKGN8PTApPj4yXSk+PjNdPShBPStfW2YrMTY+PjNdKS0rX1tmKzg4Pj4zXSxfW2YrNTY+PjNdPShwPStfW2YrMjQ+PjNdKS0obT0uNSorX1tmKzgwPj4zXSks''@;'; put 'put ''X1tmKzY0Pj4zXT0rX1tmKzk2Pj4zXStBLF9bZis3Mj4+M109bStwLGM9MHx3MChsLGMpO2M7KVpvZShjKSxjPTB8UzAobCxjKX1mdW5jdGlvbiBab2UobCl7MHwobD0wfGFbOCsoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSkmJmZ1bmN0aW9uIHpvZShsKXt2YXIgdyxiLGssTSxELFIsRyxxLHBl''@;'; put 'put ''LGdlLGJlLE9lLExlLFJlLEhlLFZlLHFlLHJ0LGF0LGM9MCxmPTAscD0wLG09MCxBPTAsV2U9MDthdD1sZSxsZT1sZSsyNDB8MCxMZT1hdCsxOTJ8MCxPZT1hdCsxNzZ8MCxSZT1hdCs2NHwwLEhlPWF0KzMyfDAsVmU9YXQscWU9YXQrMTQ0fDAscnQ9YXQrMTEyfDAsKDB8YVsoV2U9NCsobHw9''@;'; put 'put ''MCl8MCk+PjJdKTw9MCYmUHIoMTAxMTQwLDk5OTA2LDM5OTQsMTAxMTU0KSxwPWM9MHxhW2w+PjJdLG09KGY9UmUpKzQ4fDA7ZG97YVtmPj4yXT1hW3A+PjJdLGY9Zis0fDAscD1wKzR8MH13aGlsZSgoMHxmKTwoMHxtKSk7cD1jLG09KGY9TGUpKzQ4fDA7ZG97YVtmPj4yXT1hW3A+PjJdLGY9''@;'; put 'put ''Zis0fDAscD1wKzR8MH13aGlsZSgoMHxmKTwoMHxtKSk7Zm9yKHk3KEhlLExlKSx3PUhlKzh8MCxiPVZlKzh8MCxrPUhlKzE2fDAsTT1WZSsxNnwwLEQ9SGUrMjR8MCxSPVZlKzI0fDAsRz1SZSs4fDAscT1SZSsxMnwwLHBlPVJlKzMyfDAsZ2U9UmUrNHwwLGJlPVJlKzE2fDAsQT0wOyEoKDB8''@;'; put 'put ''QSk+PSgwfGFbV2U+PjJdKSk7KXtpZigoMHxBKT4wKXtwPWM9KDB8YVtsPj4yXSkrKDQ4KkF8MCl8MCxtPShmPVJlKSs0OHwwO2Rve2FbZj4+Ml09YVtwPj4yXSxmPWYrNHwwLHA9cCs0fDB9d2hpbGUoKDB8Zik8KDB8bSkpO3A9YyxtPShmPUxlKSs0OHwwO2Rve2FbZj4+Ml09YVtwPj4yXSxm''@;'; put 'put ''PWYrNHwwLHA9cCs0fDB9d2hpbGUoKDB8Zik8KDB8bSkpO3k3KFZlLExlKSxfW0hlPj4zXT0rX1soK19bSGU+PjNdPCtfW1ZlPj4zXT9IZTpWZSk+PjNdLF9bdz4+M109K19bKCtfW3c+PjNdPCtfW2I+PjNdP0hlOlZlKSs4Pj4zXSxfW2s+PjNdPStfWygrX1trPj4zXT4rX1tNPj4zXT9IZTpW''@;'; put 'put ''ZSkrMTY+PjNdLF9bRD4+M109K19bKCtfW0Q+PjNdPitfW1I+PjNdP0hlOlZlKSsyND4+M119MHwoYz0wfGFbRz4+Ml0pJiYobT0wfGFbUmU+PjJdLGFbT2U+PjJdPWFbYmU+PjJdLGFbT2UrND4+Ml09YVtiZSs0Pj4yXSxhW09lKzg+PjJdPWFbYmUrOD4+Ml0sYVtPZSsxMj4+Ml09YVtiZSsx''@;'; put 'put ''Mj4+Ml0sYVtMZT4+Ml09YVttPj4yXSxhW0xlKzQ+PjJdPWFbbSs0Pj4yXSxhW0xlKzg+PjJdPWFbbSs4Pj4yXSxhW0xlKzEyPj4yXT1hW20rMTI+PjJdLEZBKHFlLE9lLExlLDEpLGFbVmU+PjJdPWFbcWU+PjJdLGFbVmUrND4+Ml09YVtxZSs0Pj4yXSxhW1ZlKzg+PjJdPWFbcWUrOD4+Ml0s''@;'; put 'put ''YVtWZSsxMj4+Ml09YVtxZSsxMj4+Ml0sYVtWZSsxNj4+Ml09YVtxZSsxNj4+Ml0sYVtWZSsyMD4+Ml09YVtxZSsyMD4+Ml0sYVtWZSsyND4+Ml09YVtxZSsyND4+Ml0sYVtWZSsyOD4+Ml09YVtxZSsyOD4+Ml0sX1tIZT4+M109K19bKCtfW0hlPj4zXTwrX1tWZT4+M10/SGU6VmUpPj4zXSxf''@;'; put 'put ''W3c+PjNdPStfWygrX1t3Pj4zXTwrX1tiPj4zXT9IZTpWZSkrOD4+M10sX1trPj4zXT0rX1soK19baz4+M10+K19bTT4+M10/SGU6VmUpKzE2Pj4zXSxfW0Q+PjNdPStfWygrX1tEPj4zXT4rX1tSPj4zXT9IZTpWZSkrMjQ+PjNdKSwwfChjPTB8YVtxPj4yXSkmJihtPSgwfGFbUmU+PjJdKSso''@;'; put 'put ''KDB8YVtnZT4+Ml0pLTE8PDQpfDAsYVtPZT4+Ml09YVtwZT4+Ml0sYVtPZSs0Pj4yXT1hW3BlKzQ+PjJdLGFbT2UrOD4+Ml09YVtwZSs4Pj4yXSxhW09lKzEyPj4yXT1hW3BlKzEyPj4yXSxhW0xlPj4yXT1hW20+PjJdLGFbTGUrND4+Ml09YVttKzQ+PjJdLGFbTGUrOD4+Ml09YVttKzg+PjJd''@;'; put 'put ''LGFbTGUrMTI+PjJdPWFbbSsxMj4+Ml0sRkEocnQsT2UsTGUsMSksYVtWZT4+Ml09YVtydD4+Ml0sYVtWZSs0Pj4yXT1hW3J0KzQ+PjJdLGFbVmUrOD4+Ml09YVtydCs4Pj4yXSxhW1ZlKzEyPj4yXT1hW3J0KzEyPj4yXSxhW1ZlKzE2Pj4yXT1hW3J0KzE2Pj4yXSxhW1ZlKzIwPj4yXT1hW3J0''@;'; put 'put ''KzIwPj4yXSxhW1ZlKzI0Pj4yXT1hW3J0KzI0Pj4yXSxhW1ZlKzI4Pj4yXT1hW3J0KzI4Pj4yXSxfW0hlPj4zXT0rX1soK19bSGU+PjNdPCtfW1ZlPj4zXT9IZTpWZSk+PjNdLF9bdz4+M109K19bKCtfW3c+PjNdPCtfW2I+PjNdP0hlOlZlKSs4Pj4zXSxfW2s+PjNdPStfWygrX1trPj4zXT4r''@;'; put 'put ''X1tNPj4zXT9IZTpWZSkrMTY+PjNdLF9bRD4+M109K19bKCtfW0Q+PjNdPitfW1I+PjNdP0hlOlZlKSsyND4+M10pLEE9QSsxfDB9YVsoV2U9bCs4fDApPj4yXT1hW0hlPj4yXSxhW1dlKzQ+PjJdPWFbSGUrND4+Ml0sYVtXZSs4Pj4yXT1hW0hlKzg+PjJdLGFbV2UrMTI+PjJdPWFbSGUrMTI+''@;'; put 'put ''PjJdLGFbV2UrMTY+PjJdPWFbSGUrMTY+PjJdLGFbV2UrMjA+PjJdPWFbSGUrMjA+PjJdLGFbV2UrMjQ+PjJdPWFbSGUrMjQ+PjJdLGFbV2UrMjg+PjJdPWFbSGUrMjg+PjJdLGxlPWF0fShsKX1mdW5jdGlvbiB5NyhsLGMpe2x8PTA7dmFyIGYscCxtLEEsdyxiLGssTSxELFI9MCxHPTAscT0w''@;'; put 'put ''LHBlPTAsZ2U9MCxiZT0wO2ZvcihEPWxlLGxlPWxlKzQ4fDAsdz1EKzMyfDAsYj1ELCgwfChrPTB8YVs0KyhjfD0wKT4+Ml0pKTw9MCYmUHIoMTAxMTcwLDk5OTA2LDM5NjgsMTAxMTgyKSwxIT0oMHwoaz4+PjApJTMpJiZQcigxMDExOTIsOTk5MDYsMzk2OSwxMDExODIpLGFbKE09YisxNnww''@;'; put 'put ''KT4+Ml09YVsoZj0wfGFbYz4+Ml0pPj4yXSxhW00rND4+Ml09YVtmKzQ+PjJdLGFbTSs4Pj4yXT1hW2YrOD4+Ml0sYVtNKzEyPj4yXT1hW2YrMTI+PjJdLGFbYj4+Ml09YVtmPj4yXSxhW2IrND4+Ml09YVtmKzQ+PjJdLGFbYis4Pj4yXT1hW2YrOD4+Ml0sYVtiKzEyPj4yXT1hW2YrMTI+PjJd''@;'; put 'put ''LHA9dys4fDAsbT1iKzh8MCxBPWIrMjR8MCxjPTE7ISgoMHxjKT49KDB8aykpOylHPStfW2YrKGM8PDQpKzg+PjNdLFI9K19bZisoKGJlPWMrMXwwKTw8NCkrOD4+M10sX1t3Pj4zXT1wZT0uNSooK19bZisoYmU8PDQpPj4zXSsgK19bZisoYzw8NCk+PjNdKSxfW3A+PjNdPUc9LjUqKFIrRyks''@;'; put 'put ''X1tiPj4zXT1SPStfWygrX1tiPj4zXTxwZT9iOncpPj4zXSxfW20+PjNdPWdlPStfWygrX1ttPj4zXTxHP2I6dykrOD4+M10sX1tNPj4zXT1wZT0rX1soK19bTT4+M10+cGU/TTp3KT4+M10sX1tBPj4zXT1HPStfWygrX1tBPj4zXT5HP006dykrOD4+M10sYVt3Pj4yXT1hWyhiZT1mKyhjKzI8''@;'; put 'put ''PDQpfDApPj4yXSxhW3crND4+Ml09YVtiZSs0Pj4yXSxhW3crOD4+Ml09YVtiZSs4Pj4yXSxhW3crMTI+PjJdPWFbYmUrMTI+PjJdLF9bYj4+M109K19bKFI8KHE9K19bdz4+M10pP2I6dyk+PjNdLF9bbT4+M109K19bKGdlPChSPStfW3A+PjNdKT9iOncpKzg+PjNdLF9bTT4+M109K19bKHBl''@;'; put 'put ''PnE/TTp3KT4+M10sX1tBPj4zXT0rX1soRz5SP006dykrOD4+M10sYz1jKzN8MDthW2w+PjJdPWFbYj4+Ml0sYVtsKzQ+PjJdPWFbYis0Pj4yXSxhW2wrOD4+Ml09YVtiKzg+PjJdLGFbbCsxMj4+Ml09YVtiKzEyPj4yXSxhW2wrMTY+PjJdPWFbYisxNj4+Ml0sYVtsKzIwPj4yXT1hW2IrMjA+''@;'; put 'put ''PjJdLGFbbCsyND4+Ml09YVtiKzI0Pj4yXSxhW2wrMjg+PjJdPWFbYisyOD4+Ml0sbGU9RH1mdW5jdGlvbiBZSShsLGMsZil7dmFyIE0sYixwPTAsbT0wLEE9MCx3PTAsaz0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MDtiPSEoTT0hKChnZT0rX1sobHw9MCk+PjNdKT49KGJlPStf''@;'; put 'put ''WyhmfD0wKT4+M10pKSkmJmdlPD0rX1tmKzE2Pj4zXSYmKG09K19bbCs4Pj4zXSk+PStfW2YrOD4+M10/bTw9K19bZisyND4+M106MCwobT0rX1soY3w9MCk+PjNdKT49YmUmJm08PStfW2YrMTY+PjNdJiYoQT0rX1tjKzg+PjNdKT49K19bZis4Pj4zXT9iXihwPUE8PStfW2YrMjQ+PjNdKT9w''@;'; put 'put ''PTA6YiZwP3A9MTpEPTExOmI/cD0wOkQ9MTE7ZTpkb3tpZigxMT09KDB8RCkpe3BlPStfW2wrOD4+M107ZG97aWYoZ2U9PW0pe2lmKCEoTXxwZT49KGJlPStfW2YrOD4+M10pXitfW2MrOD4+M10+PWJlXjEpJiZnZTw9K19bZisxNj4+M10pe3A9MDticmVhayBlfX1lbHNle2lmKHBlPT0oaz0r''@;'; put 'put ''X1tjKzg+PjNdKSl7aWYoIShnZT49YmVebT49YmUmJnBlPj0rX1tmKzg+PjNdKSlicmVhaztpZihwZTw9K19bZisyND4+M10pe3A9MDticmVhayBlfWJyZWFrfWlmKHE9KGstcGUpLyhtLWdlKSwhKCEoYmU+PSh3PShEPWdlPG0pP2dlOm0pKXwhKGJlPD0obT1EP206Z2UpKXwhKChBPShiZS1n''@;'; put 'put ''ZSkqcStwZSk+PShSPStfW2YrOD4+M10pKSkmJkE8PStfW2YrMjQ+PjNdKXtwPTA7YnJlYWsgZX1pZigoQT0oKEc9K19bZisxNj4+M10pLWJlKSpxK0EpPj1SJiYhKCEoRzw9bSl8KEc+PXc/IShBPD0rX1tmKzI0Pj4zXSk6MSkpKXtwPTA7YnJlYWsgZX1pZih3PShEPXBlPGspP3BlOmssQT1E''@;'; put 'put ''P2s6cGUsKG09KFItcGUpL3ErZ2UpPj1iZSYmISghKFI8PUEpfCEoUj49dyl8IShtPD1HKSkpe3A9MDticmVhayBlfWlmKChnZT0oKHBlPStfW2YrMjQ+PjNdKS1SKS9xK20pPj1iZSYmISghKHBlPD1BKXwhKHBlPj13KXwhKGdlPD1HKSkpe3A9MDticmVhayBlfX19d2hpbGUoMCk7cD0tMX19''@;'; put 'put ''d2hpbGUoMCk7cmV0dXJuIDB8cH1mdW5jdGlvbiBVSShsKXt2YXIgYyxmO19bMzIrKGx8PTApPj4zXT1mPStfWyhjPWwrMTZ8MCk+PjNdLF9bbCs0OD4+M109ZixfW2wrNDA+PjNdPStfW2wrMjQ+PjNdLF9bbCs1Nj4+M109K19bbCs4Pj4zXSxfW2M+PjNdPStfW2w+PjNdfWZ1bmN0aW9uIGFR''@;'; put 'put ''KGwsYyxmKXt2YXIgcCxtLEEsdztsfD0wLGN8PTAsKDB8YVs0NzEzMV0pIT0oMHwoZnw9MCkpJiYoZ0woLjE1OTE1NDk0MzA5MTg5NTM1KisoMHxmKSwxODYzMjgsMTg2MzM2KSxhWzQ3MTMxXT1mKSxfW2w+PjNdPShwPStfWzIzMjkyXSkqKEE9K19bYz4+M10pLSh3PStfWzIzMjkxXSkqKG09''@;'; put 'put ''K19bYys4Pj4zXSksX1tsKzg+PjNdPXcqQSttKnB9ZnVuY3Rpb24gUUkobCxjLGYpe2x8PTAsZnw9MDt2YXIgbSxBLHcsayxwPTAsYj0wO2s9bGUsbGU9bGUrMTZ8MCxtPWsscD0rX1soY3w9MCk+PjNdLEE9K19bKHc9Yys4fDApPj4zXTtlOmRve3N3aXRjaCgwfGYpe2Nhc2UgMDpiPTExO2Jy''@;'; put 'put ''ZWFrO2Nhc2UgOTA6X1tjPj4zXT1BLHA9LXAsYj0xMDticmVhaztjYXNlIDE4MDpwPS1BLGI9MTA7YnJlYWs7Y2FzZSAyNzA6X1tjPj4zXT1BLGI9MTA7YnJlYWs7ZGVmYXVsdDppZigoMHxmKTwwKXthW20+PjJdPWFbYz4+Ml0sYVttKzQ+PjJdPWFbYys0Pj4yXSxhW20rOD4+Ml09YVtjKzg+''@;'; put 'put ''PjJdLGFbbSsxMj4+Ml09YVtjKzEyPj4yXSxVNihsLG0sMC1mfDApO2JyZWFrIGV9aWYoKDB8Zik+MzYwKXthW20+PjJdPWFbYz4+Ml0sYVttKzQ+PjJdPWFbYys0Pj4yXSxhW20rOD4+Ml09YVtjKzg+PjJdLGFbbSsxMj4+Ml09YVtjKzEyPj4yXSxRSShsLG0sKGY+Pj4wKSUzNjB8MCk7YnJl''@;'; put 'put ''YWsgZX1hW20+PjJdPWFbYz4+Ml0sYVttKzQ+PjJdPWFbYys0Pj4yXSxhW20rOD4+Ml09YVtjKzg+PjJdLGFbbSsxMj4+Ml09YVtjKzEyPj4yXSxhUShsLG0sZik7YnJlYWsgZX19d2hpbGUoMCk7MTA9PSgwfGIpJiYoX1t3Pj4zXT1wLGI9MTEpLDExPT0oMHxiKSYmKGFbbD4+Ml09YVtjPj4y''@;'; put 'put ''XSxhW2wrND4+Ml09YVtjKzQ+PjJdLGFbbCs4Pj4yXT1hW2MrOD4+Ml0sYVtsKzEyPj4yXT1hW2MrMTI+PjJdKSxsZT1rfWZ1bmN0aW9uIFU2KGwsYyxmKXtsfD0wLGZ8PTA7dmFyIG0sQSx3LGsscD0wLGI9MDtrPWxlLGxlPWxlKzE2fDAsbT1rLHA9K19bKGN8PTApPj4zXSxBPStfWyh3PWMr''@;'; put 'put ''OHwwKT4+M107ZTpkb3tzd2l0Y2goMHxmKXtjYXNlIDA6Yj0xMTticmVhaztjYXNlIDkwOl9bYz4+M109LUEsYj0xMDticmVhaztjYXNlIDE4MDpwPS1BLGI9MTA7YnJlYWs7Y2FzZSAyNzA6X1tjPj4zXT1BLGI9MTA7YnJlYWs7ZGVmYXVsdDppZigoMHxmKTwwKXthW20+PjJdPWFbYz4+Ml0s''@;'; put 'put ''YVttKzQ+PjJdPWFbYys0Pj4yXSxhW20rOD4+Ml09YVtjKzg+PjJdLGFbbSsxMj4+Ml09YVtjKzEyPj4yXSxRSShsLG0sMC1mfDApO2JyZWFrIGV9aWYoKDB8Zik+MzYwKXthW20+PjJdPWFbYz4+Ml0sYVttKzQ+PjJdPWFbYys0Pj4yXSxhW20rOD4+Ml09YVtjKzg+PjJdLGFbbSsxMj4+Ml09''@;'; put 'put ''YVtjKzEyPj4yXSxVNihsLG0sKGY+Pj4wKSUzNjB8MCk7YnJlYWsgZX1hW20+PjJdPWFbYz4+Ml0sYVttKzQ+PjJdPWFbYys0Pj4yXSxhW20rOD4+Ml09YVtjKzg+PjJdLGFbbSsxMj4+Ml09YVtjKzEyPj4yXSxhUShsLG0sMzYwLWZ8MCk7YnJlYWsgZX19d2hpbGUoMCk7MTA9PSgwfGIpJiYo''@;'; put 'put ''X1t3Pj4zXT1wLGI9MTEpLDExPT0oMHxiKSYmKGFbbD4+Ml09YVtjPj4yXSxhW2wrND4+Ml09YVtjKzQ+PjJdLGFbbCs4Pj4yXT1hW2MrOD4+Ml0sYVtsKzEyPj4yXT1hW2MrMTI+PjJdKSxsZT1rfWZ1bmN0aW9uIEdvZShsLGMsZil7dmFyIG0sQSx3LHA9MDtBPShwPStfWzgrKGZ8PTApPj4z''@;'; put 'put ''XSkrICtfWyhjfD0wKT4+M10sbT0odz0rX1tmPj4zXSkrICtfW2MrMjQ+PjNdLHArPStfW2MrMTY+PjNdLF9bKGx8PTApPj4zXT13KyArX1tjKzg+PjNdLF9bbCs4Pj4zXT1BLF9bbCsxNj4+M109bSxfW2wrMjQ+PjNdPXB9ZnVuY3Rpb24gbFEobCxjLGYpe3ZhciBwLG0sdyxBPTA7cmV0dXJu''@;'; put 'put ''IEE9KCtfWzgrKGZ8PTApPj4zXS0odz0rX1s4KyhsfD0wKT4+M10pKSoocD0rX1soY3w9MCk+PjNdLShBPStfW2w+PjNdKSktKCtfW2Y+PjNdLUEpKihtPStfW2MrOD4+M10tdyksKygoQSo9QSk8MWUtMTA/MDpBLyhtKm0rcCpwKSl9ZnVuY3Rpb24gc1EobCxjLGYpe3ZhciBwLG0sQTtmfD0w''@;'; put 'put ''LEE9bGUsbGU9bGUrMTZ8MCxtPUErOHwwLHA9QSwwfChsPTB8TGkobHw9MCxjfD0wKSkmJihhW20+PjJdPXAsKDB8aWwobCwxMDEyMDksbSkpPjApJiYoX1tmPj4zXT0rX1twPj4zXSksbGU9QX1mdW5jdGlvbiBjUShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHcsYixNLEQscD0wLG09MCxB''@;'; put 'put ''PTAsaz0wO0Q9bGUsbGU9bGUrNDh8MCxrPUQrMzJ8MCxBPUQrMTZ8MCxiPUQrOHwwLHc9RCxmZVsoTT1EKzQwfDApPj4wXT0wLGw9MHxMaShsLGMpO2Rve2lmKGwpe2lmKGFbQT4+Ml09YixhW0ErND4+Ml09dyxhW0ErOD4+Ml09TSwoQT0oMHxpbChsLDEwMTc0OSxBKSk+MSkmKG09K19bYj4+''@;'; put 'put ''M10pPjAmKHA9K19bdz4+M10pPjApe19bZj4+M109KygwfH5+KChtKj03MikrKG0+PTA/LjU6LS41KSkpLF9bZis4Pj4zXT0rKDB8fn4oKG09NzIqcCkrKG0+PTA/LjU6LS41KSkpLGw9MzM9PSgwfGZlW00+PjBdKTticmVha31mZVtNPj4wXT0wLGFbaz4+Ml09YixhW2srND4+Ml09TSwoaz0o''@;'; put 'put ''MHxpbChsLDEwMTc1OSxrKSk+MCkmKHA9K19bYj4+M10pPjA/KF9bZj4+M109bT0rKDB8fn4oKG09NzIqcCkrKG0+PTA/LjU6LS41KSkpLF9bZis4Pj4zXT1tLGw9MzM9PSgwfGZlW00+PjBdKSk6bD0wfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiBsZT1ELDEmbHwwfWZ1bmN0aW9uIGZrKGwp''@;'; put 'put ''e3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wO2M9MHxMaShsfD0wLDEwODIyNCk7ZG97aWYoMHxjJiYwfGZlW2M+PjBdKXtmZVsoZj0xMTMrKDB8YVsxNisoMHxhW2wrNjA+PjJdKT4+Ml0pfDApPj4wXT04fGZlW2Y+PjBdLGM9MHxKNShsLGMsKGY9MCE9KDB8T28oYykpKT8yOjAsbT0rTWwobCww''@;'; put 'put ''fHNpKGwsMCwxMDE0MjgsMCksMTQsMSksQT0wfEJhKGwsMHxzaShsLDAsMTAxNDM3LDApLDEwNzk5NCksMHxCYShsLDB8c2kobCwwLDEwMTQ0NiwwKSwxMzczMTQpKSxhWzEyKygwfGFbKEE9bCsxNnwwKT4+Ml0pPj4yXT1jLGY9MCE9KDB8KGM9MHxMaShsLDEwNTYyOCkpKTtkb3tpZigoMHxk''@;'; put 'put ''aShsKSk9PSgwfGwpKXtpZihmJiYxMTY9PSgwfGZlW2M+PjBdKSl7Yz0xO2JyZWFrfWM9MH1lbHNle2lmKGYmJjk4PT0oMHxmZVtjPj4wXSkpe2M9MDticmVha31jPTF9fXdoaWxlKDApO2Y9MHxMaShsLDEwMTcyNik7ZTpkb3tpZihmKXN3aXRjaCgwfGZlW2Y+PjBdKXtjYXNlIDEwODpjfD0y''@;'; put 'put ''O2JyZWFrIGU7Y2FzZSAxMTQ6Y3w9NDticmVhayBlO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoMCk7aWYoZmVbMjc1KygwfGFbQT4+Ml0pPj4wXT1jLCgwfGRpKGwpKSE9KDB8bCkpe2lmKHA9K19bMjQrKGM9MHxhWzEyKygwfGFbQT4+Ml0pPj4yXSk+PjNdKzE2LG09K19bYyszMj4+M10rOCxs''@;'; put 'put ''PTA9PSgxJmFbMTE2KygwfGFbMTYrKDB8ZGkobCkpPj4yXSk+PjJdfDApLGY9ZmVbMjc1KyhjPTB8YVtBPj4yXSk+PjBdPDwxJjIsbCl7X1tjKzQ4KygobD0yNTUmZik8PDQpPj4zXT1wLF9bYys0OCsobDw8NCkrOD4+M109bTticmVha31fW2MrNDgrKChsPTI1NSYoM15mKSk8PDQpPj4zXT1t''@;'; put 'put ''LF9bYys0OCsobDw8NCkrOD4+M109cDticmVha319fXdoaWxlKDApfWZ1bmN0aW9uIHc3KGwsYyl7bHw9MDt2YXIgTSxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTA7aWYocD0wfGFbKGN8PTApPj4yXSxhWyhNPWMrMjR8MCk+PjJdPTAsYVtNKzQ+PjJdPTAsYVtNKzg+PjJdPTAsYVtNKzEy''@;'; put 'put ''Pj4yXT0wLDB8ZmVbcD4+MF0pe3c9MHxRbigxKygwfFVvKHApKXwwKSxmZVt3Pj4wXT0wLGI9YysxMnwwLGY9dztlOmZvcig7Oyl7dDpmb3IoOzspe2lmKEE9cCsxfDAsISgobT0wfGZlW3A+PjBdKTw8MjQ+PjI0KSlicmVhayBlO2lmKCEobTw8MjQ+PjI0PT0tMXwoMjU1Jm0pPDE2MXwyIT0o''@;'; put 'put ''MHxhW2I+PjJdKSkpe2lmKGZlW2Y+PjBdPW0sbT1mKzJ8MCxmZVtmKzE+PjBdPUE9MHxmZVtBPj4wXSxBPDwyND4+MjQpe2Y9bSxwPXArMnwwO2NvbnRpbnVlfWY9bTticmVhayBlfXN3aXRjaChtPDwyND4+MjQpe2Nhc2UgOTI6YnJlYWsgdDtjYXNlIDEwOms9MTI7YnJlYWsgdH1mZVtmPj4w''@;'; put 'put ''XT1tLGY9ZisxfDAscD1BfWlmKDEyIT0oMHxrKSl7c3dpdGNoKChtPTB8ZmVbQT4+MF0pPDwyND4+MjR8MCl7Y2FzZSAxMTQ6Y2FzZSAxMDg6Y2FzZSAxMTA6bT1mKzF8MCxmZVtmPj4wXT0wLEpJKGwsYyx3LDB8ZmVbQT4+MF0pLGY9bTticmVhaztkZWZhdWx0OmZlW2Y+PjBdPW0sZj1mKzF8''@;'; put 'put ''MCxtPXd9dz1tLHA9MD09KDB8ZmVbQT4+MF0pP0E6cCsyfDB9ZWxzZSBrPTAscD1mKzF8MCxmZVtmPj4wXT0wLEpJKGwsYyx3LDExMCksZj1wLHc9cCxwPUF9KDB8dykhPSgwfGYpJiYoZmVbZj4+MF09MCxKSShsLGMsdywxMTApKSxhWyhjPWMrNDB8MCk+PjJdPWFbTT4+Ml0sYVtjKzQ+PjJd''@;'; put 'put ''PWFbTSs0Pj4yXSxhW2MrOD4+Ml09YVtNKzg+PjJdLGFbYysxMj4+Ml09YVtNKzEyPj4yXX19ZnVuY3Rpb24gSkkobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIE0sRCxSLHEsayxtPTAsQT0wLHc9MCxiPTAsRz0wO3E9bGUsbGU9bGUrMzJ8MCxSPXErMTZ8MCxEPXEsdz0wfGl0WyhHPTc2''@;'; put 'put ''KyhjfD0wKXwwKT4+MV0saz0oYj0wfGFbKE09Yys3MnwwKT4+Ml0pPzB8R0goYix3KzJ8MCw1Nix3KzF8MCk6MHx2cigxMTIrKDU2Knd8MCl8MCksYVtNPj4yXT1rLGFbKGI9aysoNTYqKHc9MHxpdFtHPj4xXSl8MCl8MCk+PjJdPWYsZmVbaysoNTYqd3wwKSs0OD4+MF09cCwwIT0oMHxmKSYm''@;'; put 'put ''MCE9KDB8ZmVbZj4+MF0pPyhhWzQ2NTk0XT1hW2MrND4+Ml0sX1syMzI5OV09K19bYysxNj4+M10sYVtrKyg1Nip3fDApKzQ+PjJdPTB8bWlbNjMmYVsocD0wfGFbbCsxNDQ+PjJdKT4+Ml1dKHAsMTg2Mzc2LDEpLGxEKEQsbCxiKSxfW1I+PjNdPUE9K19bRD4+M10sbT0rX1tEKzg+PjNdKToo''@;'; put 'put ''X1tSPj4zXT0wLF9baysoNTYqd3wwKSs0MD4+M109bT0rKDB8fn4oMS4yKitfW2MrMTY+PjNdKSksQT0wKSxpdFtHPj4xXT0xKygwfGl0W0c+PjFdKTw8MTY+PjE2LF9bKEc9YysyNHwwKT4+M109K19bKCtfW0c+PjNdPkE/RzpSKT4+M10sX1soRz1jKzMyfDApPj4zXT0rX1tHPj4zXSttLGxl''@;'; put 'put ''PXF9ZnVuY3Rpb24gSjUobCxjLGYscCxtLEEpe2x8PTAsY3w9MCxmfD0wLHA9K3AsbXw9MCxBfD0wO3ZhciB3LEcscGUsZ2UsYj0wLGs9MCxNPTAsRD0wLFI9MCxxPTA7c3dpdGNoKGdlPWxlLGxlPWxlKzMyfDAsRz1nZSsxNnwwLFI9Z2UrOHwwLEQ9Z2UscGU9MHx2cig4OCksMHxraShsKSl7''@;'; put 'put ''Y2FzZSAwOmI9MCxxPTB8YVtsKzYwPj4yXSxrPWwsTT0wO2JyZWFrO2Nhc2UgMTpiPTAscT0wfGRpKDB8Y3IobCkpLGs9MCxNPWw7YnJlYWs7Y2FzZSAyOmI9bCxxPTB8ZGkoMHxjcigwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHwwKSs0MD4+Ml0pKSxrPTAsTT0wO2JyZWFrO2RlZmF1''@;'; put 'put ''bHQ6Yj0wLHE9MCxrPTAsTT0wfWFbcGUrND4+Ml09bSxhW3BlKzg+PjJdPUEsX1twZSsxNj4+M109cCxhWyhBPXBlKzEyfDApPj4yXT1YdFsxMTUrKDB8YVsodz1xKzE2fDApPj4yXSk+PjBdO2U6ZG97aWYoNCZmKWFbcGU+PjJdPTB8cmEoYyksMiZmfDAmJihmZVtwZSs4Mj4+MF09MSk7ZWxz''@;'; put 'put ''ZSBzd2l0Y2goMHxmKXtjYXNlIDI6aWYoYVtwZT4+Ml09MHxyYShjKSxmZVtwZSs4Mj4+MF09MSwhKDB8djYobCxwZSkpKWJyZWFrIGU7c3dpdGNoKDB8a2kobCkpe2Nhc2UgMDphW0Q+PjJdPTB8dGkoayksJHIoMywxMDE5ODMsRCk7YnJlYWsgZTtjYXNlIDE6YVtSPj4yXT0wfHRpKE0pLCRy''@;'; put 'put ''KDMsMTAyMDA1LFIpO2JyZWFrIGU7Y2FzZSAyOkQ9MHx0aSgwfGFbKDM9PSgzJmFbYj4+Ml18MCk/YjpiKzQ4fDApKzQwPj4yXSksUj0wIT0oMHxTYyhxKSkscT0wfHRpKDB8YVsoMj09KDMmYVtiPj4yXXwwKT9iOmIrLTQ4fDApKzQwPj4yXSksYVtHPj4yXT1ELGFbRys0Pj4yXT1SPzEzNzcz''@;'; put 'put ''ODoxNDE3NDcsYVtHKzg+PjJdPXEsJHIoMywxMDIwMjYsRyk7YnJlYWsgZTtkZWZhdWx0OmJyZWFrIGV9Y2FzZSAwOm09MHxmUShjLGwsMCksYVtwZT4+Ml09bSxtPTE9PSgwfGFbQT4+Ml0pPzB8eWsobSk6MHxSTihtLHEpLEZ0KDB8YVtwZT4+Ml0pLGFbcGU+PjJdPW0sdzcoMHxhWzE0NCso''@;'; put 'put ''MHxhW3c+PjJdKT4+Ml0scGUpO2JyZWFrIGU7ZGVmYXVsdDpQcigxMDIwNTMsMTAyMDY5LDE2NiwxMDIwNzgpfX13aGlsZSgwKTtyZXR1cm4gbGU9Z2UsMHxwZX1mdW5jdGlvbiBmUShsLGMsZil7bHw9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAs''@;'; put 'put ''cT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wO3N3aXRjaCgwfGtpKGN8PTApKXtjYXNlIDA6bT0wfFVvKHc9MHx0aShjKSksKHA9MHxhWzEyKygwfGFbYysxNj4+Ml0pPj4yXSk/KHA9MHxhW3A+PjJdLGw/KFJlPTAsT2U9MixMZT0yLGJlPTIsQT0yLHFl''@;'; put 'put ''PTEwMjEwMSxEPTEwMjA5OCxiPTEwNTQ5MyxHPTE5NTA1OSxwZT0xOTUwNTkscT0wLGdlPTAsUj0wfFVvKHApLEhlPXAsVmU9MTAyMDk1KTooUmU9MCxPZT0yLExlPTIsYmU9MixBPTIscWU9MTAyMTAxLEQ9MTAyMDk4LGI9MTA1NDkzLEc9MTk1MDU5LHBlPTE5NTA1OSxxPTAsZ2U9MCxSPTIs''@;'; put 'put ''SGU9cCxWZT0xMDIwOTUpKTooUmU9MCxPZT0yLExlPTIsYmU9MixBPTIscWU9MTAyMTAxLEQ9MTAyMDk4LGI9MTA1NDkzLEc9MTk1MDU5LHBlPTE5NTA1OSxxPTAsZ2U9MCxSPTIsSGU9MTAyMDg5LFZlPTEwMjA5NSk7YnJlYWs7Y2FzZSAxOm09MHxVbyh3PTB8dGkoMHxjcihjKSkpLEE9MHxV''@;'; put 'put ''byhiPTB8dGkoYykpLChwPTB8YVsxMDQrKDB8YVtjKzE2Pj4yXSk+PjJdKT8ocD0wfGFbcD4+Ml0sbD8oUmU9MCxPZT0yLExlPTIsYmU9MixxZT0xMDIxMDEsRD0xMDIwOTgsRz0xOTUwNTkscGU9MTk1MDU5LHE9MCxnZT0wLFI9MHxVbyhwKSxIZT1wLFZlPTEwMjA5NSk6KFJlPTAsT2U9MixM''@;'; put 'put ''ZT0yLGJlPTIscWU9MTAyMTAxLEQ9MTAyMDk4LEc9MTk1MDU5LHBlPTE5NTA1OSxxPTAsZ2U9MCxSPTIsSGU9cCxWZT0xMDIwOTUpKTooUmU9MCxPZT0yLExlPTIsYmU9MixxZT0xMDIxMDEsRD0xMDIwOTgsRz0xOTUwNTkscGU9MTk1MDU5LHE9MCxnZT0wLFI9MixIZT0xMDIwODksVmU9MTAy''@;'; put 'put ''MDk1KTticmVhaztjYXNlIDI6QT1jKzQ4fDAsbT0wfFVvKHc9MHx0aSgwfGRpKDB8Y3IoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6QSkrNDA+PjJdKSkpKSxrPTB8VW8oTT0wfHRpKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOkEpKzQwPj4yXSkpLGdlPShwZT0wfGFbNTIrKDB8YVsocD1jKzE2''@;'; put 'put ''fDApPj4yXSk+PjJdKT8wfFVvKHBlKTowLEQ9MHx0aSgwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpjKy00OHwwKSs0MD4+Ml0pLHE9KEc9MHxhWzkyKyhwPTB8YVtwPj4yXSk+PjJdKT8wfFVvKEcpOjAsYj0wfFVvKEQpLChwPTB8YVtwKzk2Pj4yXSk/KHA9MHxhW3A+PjJdLFI9bD8wfFVvKHAp''@;'; put 'put ''OjIpOihSPTIscD0xMDIwODkpLFZlPTA9PSgwfFNjKDB8ZGkoMHxjcigwfGFbKDM9PSgzJmFbYz4+Ml18MCk/YzpBKSs0MD4+Ml0pKSkpLFJlPTEsT2U9ayxMZT1iLGJlPWsrMisoMHxnZT9nZSsxfDA6MCkrYisoMHxxP3ErMXwwOjApfDAsQT0yLHFlPU0sYj0xMDU0OTMsSGU9cCxWZT1WZT8x''@;'; put 'put ''NDE3NDc6MTM3NzM4O2JyZWFrO2RlZmF1bHQ6UmU9MCxPZT0yLExlPTIsYmU9MixBPTIsbT0yLHFlPTEwMjEwMSxEPTEwMjA5OCxiPTEwNTQ5Myx3PTEwMjA5MixHPTE5NTA1OSxwZT0xOTUwNTkscT0wLGdlPTAsUj0yLEhlPTEwMjA4OSxWZT0xMDIwOTV9Zj0wPT0oMHxmKSxNPTAscD1sO2U6''@;'; put 'put ''Zm9yKDs7KXtjPXArMXwwO3Q6ZG97c3dpdGNoKDB8ZmVbcD4+MF0pe2Nhc2UgMDpicmVhayBlO2Nhc2UgOTI6c3dpdGNoKHA9cCsyfDAsMHxmZVtjPj4wXSl7Y2FzZSA3ODprPUE7YnJlYWsgdDtjYXNlIDcxOms9bTticmVhayB0O2Nhc2UgNjk6az1iZTticmVhayB0O2Nhc2UgNzI6az1MZTti''@;'; put 'put ''cmVhayB0O2Nhc2UgODQ6az1PZTticmVhayB0O2Nhc2UgNzY6az1SO2JyZWFrIHQ7Y2FzZSA5MjppZighZil7az0xO2JyZWFrIHR9fWs9MjticmVhaztkZWZhdWx0Oms9MSxwPWN9fXdoaWxlKDApO009TStrfDB9YmU9MHxRbihNKzF8MCksUj0wPT0oMHxSZSksTT0wPT0oMHxnZSksYz0wPT0o''@;'; put 'put ''MHxxKSxwPWJlLG09bDtlOmZvcig7Oyl7c3dpdGNoKGs9bSsxfDAsKEE9MHxmZVttPj4wXSk8PDI0Pj4yNCl7Y2FzZSAwOmJyZWFrIGU7Y2FzZSA5MjpicmVhaztkZWZhdWx0OmZlW3A+PjBdPUEscD1wKzF8MCxtPWs7Y29udGludWUgZX1zd2l0Y2goQT1tKzJ8MCwobT0wfGZlW2s+PjBdKTw8''@;'; put 'put ''MjQ+PjI0fDApe2Nhc2UgNzE6Zm9yKG09dzs7KXtpZihmZVtwPj4wXT1sPTB8ZmVbbT4+MF0sIShsPDwyND4+MjQpKXttPUE7Y29udGludWUgZX1tPW0rMXwwLHA9cCsxfDB9Y2FzZSA3ODpmb3IobT1iOzspe2lmKGZlW3A+PjBdPWw9MHxmZVttPj4wXSwhKGw8PDI0Pj4yNCkpe209QTtjb250''@;'; put 'put ''aW51ZSBlfW09bSsxfDAscD1wKzF8MH1jYXNlIDY5OmlmKFIpe209QTtjb250aW51ZSBlfWZvcihtPXFlO2ZlW3A+PjBdPWw9MHxmZVttPj4wXSxsPDwyND4+MjQ7KW09bSsxfDAscD1wKzF8MDtpZihNKW09VmU7ZWxzZSBmb3IoZmVbcD4+MF09NTgsbT1wZTs7KXtpZihmZVsocD1wKzF8MCk+''@;'; put 'put ''PjBdPWw9MHxmZVttPj4wXSwhKGw8PDI0Pj4yNCkpe209VmU7YnJlYWt9bT1tKzF8MH1mb3IoOzspe2lmKGZlW3A+PjBdPWw9MHxmZVttPj4wXSwhKGw8PDI0Pj4yNCkpe209RDticmVha31tPW0rMXwwLHA9cCsxfDB9Zm9yKDtmZVtwPj4wXT1sPTB8ZmVbbT4+MF0sbDw8MjQ+PjI0OyltPW0r''@;'; put 'put ''MXwwLHA9cCsxfDA7aWYoYyl7bT1BO2NvbnRpbnVlIGV9Zm9yKGZlW3A+PjBdPTU4LG09Rzs7KXtpZihmZVsocD1wKzF8MCk+PjBdPWw9MHxmZVttPj4wXSwhKGw8PDI0Pj4yNCkpe209QTtjb250aW51ZSBlfW09bSsxfDB9Y2FzZSA4NDpmb3IobT1xZTs7KXtpZihmZVtwPj4wXT1sPTB8ZmVb''@;'; put 'put ''bT4+MF0sIShsPDwyND4+MjQpKXttPUE7Y29udGludWUgZX1tPW0rMXwwLHA9cCsxfDB9Y2FzZSA3Mjpmb3IobT1EOzspe2lmKGZlW3A+PjBdPWw9MHxmZVttPj4wXSwhKGw8PDI0Pj4yNCkpe209QTtjb250aW51ZSBlfXA9cCsxfDAsbT1tKzF8MH1jYXNlIDc2OmZvcihtPUhlOzspe2lmKGZl''@;'; put 'put ''W3A+PjBdPWw9MHxmZVttPj4wXSwhKGw8PDI0Pj4yNCkpe209QTtjb250aW51ZSBlfXA9cCsxfDAsbT1tKzF8MH1jYXNlIDkyOmlmKCFmKXtmZVtwPj4wXT05MixwPXArMXwwLG09QTtjb250aW51ZSBlfX1mZVtwPj4wXT05MixmZVtwKzE+PjBdPW0scD1wKzJ8MCxtPUF9cmV0dXJuIGZlW3A+''@;'; put 'put ''PjBdPTAsMHxiZX1mdW5jdGlvbiBBeShsLGMpe2N8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MDtpZigwfChsfD0wKSl7Zm9yKGY9bCxwPTA7ISgoMHxwKT49KDB8YykpOylwfHxGdCgwfGFbZj4+Ml0pLDB8KEE9MHxhW2YrOD4+Ml0pJiYwfChtPTB8YVtmKzEyPj4yXSkmJkNvWzEyNyZtXShBKSxm''@;'; put 'put ''PWYrNTZ8MCxwPXArMXwwO0Z0KGwpfX1mdW5jdGlvbiBJYyhsKXt2YXIgYz0wOzB8KGx8PTApJiYoRnQoMHxhW2w+PjJdKSxjPWwrNzJ8MCwwfGZlW2wrODI+PjBdPzB8KGM9MHxhW2M+PjJdKSYmQW0oYywxKTpBeSgwfGFbYz4+Ml0sMHxpdFtsKzc2Pj4xXSksRnQobCkpfWZ1bmN0aW9uIGI3''@;'; put 'put ''KGwsYyxmKXtmfD0wO3ZhciBSLEcscSxwZSxnZSxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wO2lmKGdlPWxlLGxlPWxlKzMyfDAsUj1nZSsxNnwwLEc9Z2UscGU9MHxhWyhxPTEyKyh3PTB8YVsxNisobHw9MCk+PjJdKXwwKT4+Ml0sYVtxPj4yXT1jfD0wLDB8ZmVbZis4Mj4+MF0p''@;'; put 'put ''KGZ1bmN0aW9uIEFFKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIEEsYixrLE0scD0wLG09MCx3PTA7c3dpdGNoKE09bGUsbGU9bGUrODB8MCxrPU0sZnVuY3Rpb24gZUcobCl7dmFyIGMsZixwPTA7c3dpdGNoKGM9MHx4ZihsfD0wKSxhW2MrND4+Ml09bD0wfGFbNCsoZj0wfGFbYz4+Ml0pPj4yXSxh''@;'; put 'put ''W2MrMTI+PjJdPWFbZisxMj4+Ml0sMHxsKXtjYXNlIDI6Y2FzZSAwOmNhc2UgMTpjYXNlIDM6bD1mKzh8MCxwPTZ9Nj09KDB8cCkmJihhW2MrOD4+Ml09YVtsPj4yXSksYVtjKzIwOD4+Ml09YVtmKzIwOD4+Ml0sYVtjKzIyOD4+Ml09YVtmKzIyOD4+Ml0sYVtjKzI0ND4+Ml09YVtmKzI0ND4+''@;'; put 'put ''Ml0saXRbKHA9YysyNjB8MCk+PjFdPS0yJml0W3A+PjFdfDEmaXRbZisyNjA+PjFdfShsfD0wKSxiPStfW2YrNTY+PjNdLG09K19bZis2ND4+M10sMHxmZVtmKzgwPj4wXSl7Y2FzZSAxMTY6bT0uNSooK19bZis0OD4+M10tK3lFKGMpKSttLHA9NDticmVhaztjYXNlIDk4Om0tPS41KigrX1tm''@;'; put 'put ''KzQ4Pj4zXS0reUUoYykpLHA9NH00PT0oMHxwKSYmKG0rPS0xKSxfW2s+PjNdPWIsX1trKzg+PjNdPW0sYVtrKzIwPj4yXT1hW2YrOD4+Ml0sYVtrKzE2Pj4yXT1hW2YrND4+Ml0sX1trKzMyPj4zXT0rX1tmKzE2Pj4zXSxwPTB8TGkoMHxhWzgrKDB8YVsodz1sKzE2fDApPj4yXSk+PjJdLDEz''@;'; put 'put ''NzI5NyksYVsoZj1rKzU2fDApPj4yXT1wLGFbKEE9ays2MHwwKT4+Ml09YVsyMTIrKDB8YVt3Pj4yXSk+PjJdLGZlWyh3PWsrNjR8MCk+PjBdPTAsMCE9KDB8cCkmJjAhPSgwfGZlW3A+PjBdKXx8KGFbZj4+Ml09MTM3MzA4KSwxPT0oMHxmZVtjKzQ+PjBdKT8oZj0wfGFbYz4+Ml0sZDIobCww''@;'; put 'put ''fGFbMzM2KygwfGFbbD4+Ml0pPj4yXSksbWEobCwocD0wfGFbZisyND4+Ml0pfHwxMzczMTQpLHdFKGwsZixrKSwwfGZlW3c+PjBdJiZGdCgwfGFbQT4+Ml0pKTpTZChsLDB8YVtjPj4yXSxrKSxmdW5jdGlvbiBwNihsKXt2YXIgYzthWzIwOCsoYz0wfGFbMTYrKGx8PTApPj4yXSk+PjJdPTAs''@;'; put 'put ''YVtjKzIyOD4+Ml09MCxhW2MrMjQ0Pj4yXT0wLGFbYysyMTI+PjJdPTAsT0MobCl9KGwpLGxlPU19KShsLDB8YVtmKzcyPj4yXSxmKSxtPTE4O2Vsc2UgaWYoKDB8aXRbKEQ9Zis3NnwwKT4+MV0pPj0xKXtzd2l0Y2goVzgobCwwKSxtYShsLDB8YVtmKzg+PjJdKSwwfGZlW2YrODA+PjBdKXtj''@;'; put 'put ''YXNlIDExNjpwPS41KitfW2YrNDg+PjNdKyhBPStfW2YrNjQ+PjNdKTticmVhaztjYXNlIDk4OnA9LS41KitfW2YrNDg+PjNdKyhBPStfW2YrNjQ+PjNdKSsgK19bZiszMj4+M107YnJlYWs7ZGVmYXVsdDpwPS41KitfW2YrMzI+PjNdKyhBPStfW2YrNjQ+PjNdKX1mb3IoX1soTT1HKzh8MCk+''@;'; put 'put ''PjNdPXAtPStfW2YrMTY+PjNdLDUxMiZpdFt3KzI2MD4+MV0mJihfW00+PjNdPXAtQSksYj1mKzcyfDAsaz1mKzU2fDAsbT1mKzQwfDAsYz0wOyEoKDB8Yyk+PSgwfGl0W0Q+PjFdKSk7KXtzd2l0Y2goMHxmZVsodz0wfGFbYj4+Ml0pKyg1NipjfDApKzQ4Pj4wXSl7Y2FzZSAxMDg6cD0rX1tr''@;'; put 'put ''Pj4zXS0uNSorX1ttPj4zXTticmVhaztjYXNlIDExNDpwPS41KitfW20+PjNdKyArX1trPj4zXTticmVhaztkZWZhdWx0OnA9K19baz4+M119X1tHPj4zXT1wLGFbUj4+Ml09YVtHPj4yXSxhW1IrND4+Ml09YVtHKzQ+PjJdLGFbUis4Pj4yXT1hW0crOD4+Ml0sYVtSKzEyPj4yXT1hW0crMTI+''@;'; put 'put ''PjJdLGhtKGwsUix3Kyg1NipjfDApfDApLF9bTT4+M109K19bTT4+M10tK19bKDB8YVtiPj4yXSkrKDU2KmN8MCkrNDA+PjNdLGM9YysxfDB9TzQobCksbT0xOH0xOD09KDB8bSkmJihhW3E+PjJdPXBlKSxsZT1nZX1mdW5jdGlvbiBtMihsLGMpe3JldHVybiAwfGZRKGx8PTAsY3w9MCwxKX1m''@;'; put 'put ''dW5jdGlvbiBNMShsKXtyZXR1cm4gMHx6SChsfD0wLDApfWZ1bmN0aW9uIHpIKGwsYyl7bHw9MCxjfD0wO3ZhciBiLGY9MCxwPTAsbT0wLEE9MCx3PTAsaz0wO2ZvcigoZj0wfGFbNDcyMDddKXx8KGFbNDcyMDhdPTY0LGY9MHxRbig2NCksYVs0NzIwN109ZiksYj1jPDwyND4+MjQ9PTAsdz0w''@;'; put 'put ''LHA9MCxBPWw7QSYmKGM9MHxmZVtBPj4wXSk8PDI0Pj4yNDspeygwfHcpPigobD0wfGFbNDcyMDhdKS04fDApJiYoYVs0NzIwOF09Zj1sPDwxLGY9MHxWMCgwfGFbNDcyMDddLGYpLGFbNDcyMDddPWYsZj1mK3d8MCxjPTB8ZmVbQT4+MF0pO2U6ZG97c3dpdGNoKGM8PDI0Pj4yNCl7Y2FzZSAz''@;'; put 'put ''ODpiJiYwIT0oMHxoUShBKSk/az0xODoocD01LGM9MTAyMTMwKTticmVhaztjYXNlIDYwOnA9NCxjPTEwMjE1MzticmVhaztjYXNlIDYyOnA9NCxjPTEwMjEzNjticmVhaztjYXNlIDQ1OnA9NSxjPTEwMjE0NzticmVhaztkZWZhdWx0OmlmKDAhPSgwfHApJmM8PDI0Pj4yND09MzIpe2lmKDMy''@;'; put 'put ''PT0oMHxmZVtwPj4wXSkpe3A9NixjPTEwMjEyMzticmVhayBlfWs9MTg7YnJlYWsgZX1zd2l0Y2goYzw8MjQ+PjI0KXtjYXNlIDM0OnA9NixjPTEwMjExNjticmVhayBlO2Nhc2UgMzk6cD01LGM9MTAyMTQxO2JyZWFrIGU7Y2FzZSAxMDppZihiKXtrPTE4O2JyZWFrIGV9cD01LGM9MTAyMTEw''@;'; put 'put ''O2JyZWFrIGU7ZGVmYXVsdDprPTE4O2JyZWFrIGV9fX13aGlsZSgwKTtmb3IoMTg9PSgwfGspJiYoaz0wLHA9KGM9YnxjPDwyND4+MjQhPTEzKT8xOjUsYz1jP0E6MTAyMTA0KSxtPWYrcHwwLGw9cDtsOylmZVtmPj4wXT0wfGZlW2M+PjBdLGw9bCstMXwwLGM9YysxfDAsZj1mKzF8MDtsPUEs''@;'; put 'put ''dz1wK3d8MCxmPW0sQT1BKzF8MCxwPWx9cmV0dXJuIGZlW2Y+PjBdPTAsMHxhWzQ3MjA3XX1mdW5jdGlvbiBoUShsKXt2YXIgYz0wLGY9MDtjPTB8ZmVbKGY9MSsobHw9MCl8MCk+PjBdO2U6ZG97aWYoYzw8MjQ+PjI0PT0zNSl7c3dpdGNoKChjPTB8ZmVbKGY9bCsyfDApPj4wXSk8PDI0Pj4y''@;'; put 'put ''NCl7Y2FzZSA4ODpjYXNlIDEyMDpicmVhaztkZWZhdWx0OmZvcihsPWY7Oyl7aWYoZj1sKzF8MCwoYystNDgmMjU1KT49MTApYnJlYWsgZTtsPWYsYz0wfGZlW2Y+PjBdfX1mb3IoZj1sKzN8MDs7KXtpZigoKGM9MHxmZVtmPj4wXSktNDgmMjU1KT49MTApc3dpdGNoKGM8PDI0Pj4yNCl7Y2Fz''@;'; put 'put ''ZSA2NTpjYXNlIDY2OmNhc2UgNjc6Y2FzZSA2ODpjYXNlIDY5OmNhc2UgNzA6Y2FzZSA5NzpjYXNlIDk4OmNhc2UgOTk6Y2FzZSAxMDA6Y2FzZSAxMDE6Y2FzZSAxMDI6YnJlYWs7ZGVmYXVsdDpicmVhayBlfWY9ZisxfDB9fWVsc2UgZm9yKDs7KXtpZihsPWYrMXwwLCgoLTMzJmMpLTY1JjI1''@;'; put 'put ''NSk+PTI2KWJyZWFrIGU7Zj1sLGM9MHxmZVtsPj4wXX19d2hpbGUoMCk7cmV0dXJuIGM8PDI0Pj4yND09NTl8MH1mdW5jdGlvbiBkUShsKXtsfD0wO3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTA7Zm9yKChjPTB8YVs0NzIwOV0pfHwoYVs0NzIxMF09NjQsYz0wfFFuKDY0KSxhWzQ3''@;'; put 'put ''MjA5XT1jKSx3PTA7bCYmKGY9MHxmZVtsPj4wXSk8PDI0Pj4yNDspe3N3aXRjaCgoMHx3KT4oKHA9MHxhWzQ3MjEwXSktOHwwKSYmKGFbNDcyMTBdPWM9cDw8MSxjPTB8VjAoMHxhWzQ3MjA5XSxjKSxhWzQ3MjA5XT1jLGM9Yyt3fDAsZj0wfGZlW2w+PjBdKSxmPDwyND4+MjQpe2Nhc2UgMzg6''@;'; put 'put ''MHxoUShsKT9iPTEyOihtPTUsZj0xMDIxMzApO2JyZWFrO2Nhc2UgNjA6bT00LGY9MTAyMTUzO2JyZWFrO2Nhc2UgNjI6bT00LGY9MTAyMTM2O2JyZWFrO2Nhc2UgMzQ6bT02LGY9MTAyMTE2O2JyZWFrO2Nhc2UgMzk6bT01LGY9MTAyMTQxO2JyZWFrO2RlZmF1bHQ6Yj0xMn1mb3IoMTI9PSgw''@;'; put 'put ''fGIpJiYoYj0wLG09MSxmPWwpLEE9YyttfDAscD1tO3A7KWZlW2M+PjBdPTB8ZmVbZj4+MF0scD1wKy0xfDAsZj1mKzF8MCxjPWMrMXwwO3c9bSt3fDAsYz1BLGw9bCsxfDB9cmV0dXJuIGZlW2M+PjBdPTAsMHxhWzQ3MjA5XX1mdW5jdGlvbiB2cihsKXt2YXIgYz0wO3JldHVybihsfD0wKT8o''@;'; put 'put ''dTIoMHwoYz0wfFFuKGwpKSwwLDB8bCksbD1jKTpsPTAsMHxsfWZ1bmN0aW9uIFFuKGwpe3JldHVybihsfD0wKT8obD0wfEYwKGwpKXx8KEN1KDExMTc0MCwxNCwxLDB8YVsxNTcxMl0pLGw9MCk6bD0wLDB8bH1mdW5jdGlvbiBHSChsLGMsZixwKXtyZXR1cm4gcHw9MCwwIT0oMHwoY3w9MCkp''@;'; put 'put ''JjA9PSgwfChsPTB8VWEobHw9MCwwfEFyKGZ8PTAsYykpKSk/Q3UoMTExNzQwLDE0LDEsMHxhWzE1NzEyXSk6Yz4+PjA+cD4+PjAmJnUyKGwrKDB8QXIocCxmKSl8MCwwLDB8QXIoYy1wfDAsZikpLDB8bH1mdW5jdGlvbiBWMChsLGMpe3JldHVybiAwIT0oMHwoY3w9MCkpJjA9PSgwfChsPTB8''@;'; put 'put ''VWEobHw9MCxjKSkpJiZDdSgxMTE3NDAsMTQsMSwwfGFbMTU3MTJdKSwwfGx9ZnVuY3Rpb24gcFEobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgRCxSLGdlLG09MCxBPTAsdz0wLGI9MCxNPTAscT0wLHBlPTA7Z2U9bGUsbGU9bGUrODB8MCxSPWdlKzMyfDAsRD1nZSsyNHwwLE09''@;'; put 'put ''Z2UscT00LHBlPTB8RjAoNDApLGFbcGU+PjJdPTAsbT1nZSs2OHwwLEE9Z2UrNjR8MCxiPTY7ZG97aWYoNj09KDB8Yikpe2lmKE1uPTAsbT0wfGEwKDI3LDB8bCksQT1NbixNbj0wLDAhPSgwfEEpJjAhPSgwfHhuKT8oKHc9MHxnaSgwfGFbQT4+Ml0sMHxwZSwwfHEpKXx8emUoMHxBLDB8eG4p''@;'; put 'put ''LERuPXhuKTp3PS0xLDEhPSgwfHcpKXtpZighbSYmKE1uPTAsWmMoMiksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbbT4+Ml0sMHxwZSwwfHEpKXx8emUoMHxtLDB8eG4pLERuPXhuKTpBPS0xLDE9PSgwfEEpKSl7bT1EbixiPTE1O2JyZWFrfWlmKCgwfGYpPDEp''@;'; put 'put ''e2lmKE1uPTAsWmMoMyksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbbT4+Ml0sMHxwZSwwfHEpKXx8emUoMHxtLDB8eG4pLERuPXhuKTpBPS0xLDE9PSgwfEEpKXttPURuLGI9MTU7YnJlYWt9bT0wO2JyZWFrfWlmKGFbNDcyMTFdPSgwfHApPi0xP3A6MzAscGU9''@;'; put 'put ''MHxQZigxODg4NDgsMSwwfHBlLDB8cSkscT1EbixtPU1uPTAsTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW20+PjJdLDB8cGUsMHxxKSl8fHplKDB8bSwwfHhuKSxEbj14bik6QT0tMSwxPT0oMHxBKSl7bT1EbixiPTE1O2JyZWFrfW09MCxiPTE1O2JyZWFrfW09RG4sYj0x''@;'; put 'put ''NX19d2hpbGUoMCk7ZTpkb3tpZigxNT09KDB8Yikpe3Q6Zm9yKDs7KXtpZigwfG0pe209MjticmVhayBlfWlmKE1uPTAsWmMoNCksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbbT4+Ml0sMHxwZSwwfHEpKXx8emUoMHxtLDB8eG4pLERuPXhuKTpBPS0xLDEhPSgw''@;'; put 'put ''fEEpKXtmb3IobD0wfGFbMTU3MTJdLE09MDs7KXtpZihNbj0wLGI9MHx3ZCgyKSxtPU1uLE1uPTAsMCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfGdpKDB8YVttPj4yXSwwfHBlLDB8cSkpfHx6ZSgwfG0sMHx4biksRG49eG4pOkE9LTEsMT09KDB8QSkpe209RG4sYj0xNTtjb250aW51ZSB0fWlm''@;'; put 'put ''KCFiKWJyZWFrO2lmKE1uPTAsbT0wfGEwKDI4LDB8YiksQT1NbixNbj0wLDAhPSgwfEEpJjAhPSgwfHhuKT8oKHc9MHxnaSgwfGFbQT4+Ml0sMHxwZSwwfHEpKXx8emUoMHxBLDB8eG4pLERuPXhuKTp3PS0xLDE9PSgwfHcpKXttPURuLGI9MTU7Y29udGludWUgdH1pZihNbj0wLFoxKDI1LDB8''@;'; put 'put ''YiwwfG0pLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW20+PjJdLDB8cGUsMHxxKSl8fHplKDB8bSwwfHhuKSxEbj14bik6QT0tMSwxPT0oMHxBKSl7bT1EbixiPTE1O2NvbnRpbnVlIHR9TT1NKzF8MDtkb3tpZigwPT0oMHwoMHxNKSUxMDApJiExKXtpZigxMDA9''@;'; put 'put ''PSgwfChtPSgwfE0pJTFlM3wwKSkpe2lmKE1uPTAsRmwoOTMsMTAyMjAyLDB8bCksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbbT4+Ml0sMHxwZSwwfHEpKXx8emUoMHxtLDB8eG4pLERuPXhuKTpBPS0xLDE9PSgwfEEpKXttPURuLGI9MTU7Y29udGludWUgdH1p''@;'; put 'put ''ZihNbj0wLGFbRD4+Ml09TSxKcygzMiwwfGwsMTAyMjIwLDB8RCksbT1NbixNbj0wLDAhPSgwfG0pJjAhPSgwfHhuKT8oKEE9MHxnaSgwfGFbbT4+Ml0sMHxwZSwwfHEpKXx8emUoMHxtLDB8eG4pLERuPXhuKTpBPS0xLDE9PSgwfEEpKXttPURuLGI9MTU7Y29udGludWUgdH1icmVha31pZihN''@;'; put 'put ''bj0wLGFbUj4+Ml09TSxKcygzMiwwfGwsMTAyMjIwLDB8UiksQT1NbixNbj0wLDAhPSgwfEEpJjAhPSgwfHhuKT8oKHc9MHxnaSgwfGFbQT4+Ml0sMHxwZSwwfHEpKXx8emUoMHxBLDB8eG4pLERuPXhuKTp3PS0xLDE9PSgwfHcpKXttPURuLGI9MTU7Y29udGludWUgdH1pZighbSYmKE1uPTAs''@;'; put 'put ''RmwoOTQsMTAsMHxsKSxtPU1uLE1uPTAsMCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfGdpKDB8YVttPj4yXSwwfHBlLDB8cSkpfHx6ZSgwfG0sMHx4biksRG49eG4pOkE9LTEsMT09KDB8QSkpKXttPURuLGI9MTU7Y29udGludWUgdH19fXdoaWxlKDApO2lmKCgwfE0pPj0oMHxmKSlicmVha31z''@;'; put 'put ''d2l0Y2goMHxjKXtjYXNlIDE6aWYoTW49MCxaYyg1KSxtPU1uLE1uPTAsMCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfGdpKDB8YVttPj4yXSwwfHBlLDB8cSkpfHx6ZSgwfG0sMHx4biksRG49eG4pOkE9LTEsMT09KDB8QSkpe209RG4sYj0xNTtjb250aW51ZSB0fWJyZWFrO2Nhc2UgMjppZihN''@;'; put 'put ''bj0wLFpjKDYpLG09TW4sTW49MCwwIT0oMHxtKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW20+PjJdLDB8cGUsMHxxKSl8fHplKDB8bSwwfHhuKSxEbj14bik6QT0tMSwxPT0oMHxBKSl7bT1EbixiPTE1O2NvbnRpbnVlIHR9YnJlYWs7ZGVmYXVsdDppZihNbj0wLFpjKDcpLG09TW4sTW49MCww''@;'; put 'put ''IT0oMHxtKSYwIT0oMHx4bik/KChBPTB8Z2koMHxhW20+PjJdLDB8cGUsMHxxKSl8fHplKDB8bSwwfHhuKSxEbj14bik6QT0tMSwxPT0oMHxBKSl7bT1EbixiPTE1O2NvbnRpbnVlIHR9aWYoTW49MCxaYygzKSxtPU1uLE1uPTAsMCE9KDB8bSkmMCE9KDB8eG4pPygoQT0wfGdpKDB8YVttPj4y''@;'; put 'put ''XSwwfHBlLDB8cSkpfHx6ZSgwfG0sMHx4biksRG49eG4pOkE9LTEsMT09KDB8QSkpe209RG4sYj0xNTtjb250aW51ZSB0fX1tPTA7YnJlYWsgZX1tPURuLGI9MTV9bT0wfX13aGlsZSgwKTtyZXR1cm4gRnQoMHxwZSksbGU9Z2UsMHxtfWZ1bmN0aW9uIGdRKCl7dmFyIGw9MCxjPTAsZj0wO2Zv''@;'; put 'put ''cihsPTE5MisoMHxhWzE2KygwfGFbNDcyNTRdKT4+Ml0pfDA7bD0wfGFbbD4+Ml07KShjPTB8YVsyNjQrKGw9MHxhWyhmPWwrMTZ8MCk+PjJdKT4+Ml0pJiYoRnQoYyksbD0wfGFbZj4+Ml0pLChjPTB8YVtsKzI3Mj4+Ml0pJiYoRnQoYyksbD0wfGFbZj4+Ml0pLGZlW2wrMTU3Pj4wXT0wLGw9''@;'; put 'put ''bCsxNjR8MH1mdW5jdGlvbiBXSChsKXt2YXIgYz0wLGY9MDtyZXR1cm4gbD0oYz0oMHxhWzI4OCsoMHxhWzE2KyhmPTB8YVsoMz09KDB8KGM9MyZhWyhsfD0wKT4+Ml0pKT9sOmwrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk8KDB8YVsyODgrKDB8YVsxNisobD0wfGFbKDI9PSgwfGMpP2w6bCst''@;'; put 'put ''NDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpP2Y6bCxhWzQ3MjU3XT0wLGFbNDcyNThdPTIxNDc0ODM2NDcsYVs0NzI1OV09YVsyODQrKGY9MHxhW2wrMTY+PjJdKT4+Ml0sYVs0NzI2MF09YVtmKzI4OD4+Ml0sYz9VSChsKTpRNihsKSwwfGFbNDcyNTddfWZ1bmN0aW9uIHZRKCl7dmFyIEEsdyxs''@;'; put 'put ''PTAsYz0wLGY9MCxwPTAsbT0wLGI9MDtmb3Iodz1sZSxsZT1sZSsxNnwwLGFbKEE9dyk+PjJdPTAsYVtBPj4yXT0yMTQ3NDgzNjQ3LGFbNDcyNTNdPS0yMTQ3NDgzNjQ3LGY9bD0xOTIrKDB8YVsxNisoMHxhWzQ3MjU0XSk+PjJdKXwwLG09MjE0NzQ4MzY0NyxwPS0yMTQ3NDgzNjQ3O2M9MHxh''@;'; put 'put ''W2Y+PjJdOykwfGZlWzE1NisoZj0wfGFbYysxNj4+Ml0pPj4wXT9jPW06KGFbQT4+Ml09Yz0oMHxtKTwoMHwoYj0wfGFbZisyMzI+PjJdKSk/bTpiLGFbNDcyNTNdPXA9KDB8cCk+KDB8Yik/cDpiKSxmPWYrMTY0fDAsbT1jO2lmKDB8bSl7Zm9yKDtsPTB8YVtsPj4yXTspYVsoYj0yMzIrKGw9''@;'; put 'put ''MHxhW2wrMTY+PjJdKXwwKT4+Ml09KDB8YVtiPj4yXSktbSxsPWwrMTY0fDA7YVs0NzI1M109cC1tLGFbQT4+Ml09MH1sZT13fWZ1bmN0aW9uIFg1KGwsYyl7dmFyIG0sZj0wLHA9MDtmb3IoYVsocD0yMzIrKGw9MHxhWyhtPTE2KyhsfD0wKXwwKT4+Ml0pfDApPj4yXT0oMHxhW3A+PjJdKS0o''@;'; put 'put ''Y3w9MCkscD0wOzspe2lmKCEoZj0wfGFbKDB8YVtsKzI3Mj4+Ml0pKyhwPDwyKT4+Ml0pKXtwPTA7YnJlYWt9KDB8ZikhPSgwfGFbbCsyODA+PjJdKSYmKFg1KDB8YVsoMj09KDMmYVtmPj4yXXwwKT9mOmYrLTQ4fDApKzQwPj4yXSxjKSxsPTB8YVttPj4yXSkscD1wKzF8MH1mb3IoO2Y9MHxh''@;'; put 'put ''WygwfGFbbCsyNjQ+PjJdKSsocDw8Mik+PjJdOykoMHxmKSE9KDB8YVtsKzI4MD4+Ml0pJiYoWDUoMHxhWygzPT0oMyZhW2Y+PjJdfDApP2Y6Zis0OHwwKSs0MD4+Ml0sYyksbD0wfGFbbT4+Ml0pLHA9cCsxfDB9ZnVuY3Rpb24gQVEobCxjLGYscCl7dmFyIG0sQSx3LGI9MCxrPTA7Zm9yKEE9''@;'; put 'put ''MD09KDB8KHB8PTApKSYxLHc9MC0oZnw9MCl8MCxtPTB8YVsyODgrKDB8YVsxNisoY3w9MCk+PjJdKT4+Ml0sYz1sfD0wOyEoKDB8YVsyODQrKGw9MHxhW2MrMTY+PjJdKT4+Ml0pPD0oMHxtKSYmKDB8bSk8PSgwfGFbbCsyODg+PjJdKSk7KWI9NDgrKGw9MHxhW2wrMjgwPj4yXSl8MCxhWyhr''@;'; put 'put ''PTE2MCsoMHxhW2wrMTY+PjJdKXwwKT4+Ml09KDB8KCgwfGMpPT0oMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6YikrNDA+PjJdKT9wOkEpP2Y6dykrKDB8YVtrPj4yXSksYz0oMHxhWzI4OCsoMHxhWzE2KyhiPTB8YVsoMz09KDB8KGs9MyZhW2w+PjJdKSk/bDpiKSs0MD4+Ml0pPj4yXSk+PjJd''@;'; put 'put ''KT4oMHxhWzI4OCsoMHxhWzE2KyhsPTB8YVsoMj09KDB8ayk/bDpsKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKT9iOmw7cmV0dXJuIDB8Y31mdW5jdGlvbiBYSShsLGMsZil7Znw9MDt2YXIgQSxwPTAsbT0wO2ZvcihhWzI4MCsobD0wfGFbKEE9MTYrKGx8PTApfDApPj4yXSk+PjJdPWN8PTAs''@;'; put 'put ''YVtsKzI4ND4+Ml09ZixtPTA7Oyl7aWYoIShwPTB8YVsoMHxhW2wrMjcyPj4yXSkrKG08PDIpPj4yXSkpe209MDticmVha30oMHxwKSE9KDB8YykmJihmPTB8WEkoMHxhWygyPT0oMyZhW3A+PjJdfDApP3A6cCstNDh8MCkrNDA+PjJdLHAsZiksbD0wfGFbQT4+Ml0pLG09bSsxfDB9Zm9yKDtw''@;'; put 'put ''PTB8YVsoMHxhW2wrMjY0Pj4yXSkrKG08PDIpPj4yXTspKDB8cCkhPSgwfGMpJiYoZj0wfFhJKDB8YVsoMz09KDMmYVtwPj4yXXwwKT9wOnArNDh8MCkrNDA+PjJdLHAsZiksbD0wfGFbQT4+Ml0pLG09bSsxfDA7cmV0dXJuIGFbbCsyODg+PjJdPWYsZisxfDB9ZnVuY3Rpb24gUTYobCl7dmFy''@;'; put 'put ''IHcsYz0wLGY9MCxwPTAsbT0wLEE9MCxiPTA7Zm9yKHc9MTYrKGx8PTApfDAsbT0wOzspe2lmKCEoZj0wfGFbKDB8YVsxODArKGw9MHxhW3c+PjJdKT4+Ml0pKyhtPDwyKT4+Ml0pKXtmPTA7YnJlYWt9KDB8YVsxNjQrKHA9MHxhW2YrMTY+PjJdKT4+Ml0pPDA/KDB8YVs0NzI1OV0pPigwfChi''@;'; put 'put ''PTB8YVsyODgrKGM9MHxhWzE2KygwfGFbKDI9PSgwfChsPTMmYVtmPj4yXSkpP2Y6ZistNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpfCgwfGIpPigwfGFbNDcyNjBdKSYmKDB8KEE9KDB8YVtjKzIzMj4+Ml0pLSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMz09KDB8bCk/ZjpmKzQ4fDApKzQwPj4y''@;'; put 'put ''XSk+PjJdKT4+Ml0pLSgwfGhyW3ArMTcwPj4xXSl8MCkpPCgwfGFbNDcyNThdKXwwPT0oMHxhWzQ3MjU3XSkmJihhWzQ3MjU3XT1mLGFbNDcyNThdPUEpOigwfGFbMjg4KygwfGFbMTYrKGM9MHxhWygyPT0oMyZhW2Y+PjJdfDApP2Y6ZistNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk8KDB8YVts''@;'; put 'put ''KzI4OD4+Ml0pJiZRNihjKSxtPW0rMXwwfWZvcig7MCE9KDB8KGM9MHxhWygwfGFbbCsyNjQ+PjJdKSsoZjw8Mik+PjJdKSkmKDB8YVs0NzI1OF0pPjA7KSgwfGFbMjg4KygwfGFbMTYrKGM9MHxhWygzPT0oMyZhW2M+PjJdfDApP2M6Yys0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKTwoMHxhW2wr''@;'; put 'put ''Mjg4Pj4yXSkmJihRNihjKSxsPTB8YVt3Pj4yXSksZj1mKzF8MH1mdW5jdGlvbiBVSChsKXt2YXIgdyxjPTAsZj0wLHA9MCxtPTAsQT0wLGI9MDtmb3Iodz0xNisobHw9MCl8MCxtPTA7Oyl7aWYoIShmPTB8YVsoMHxhWzE3MisobD0wfGFbdz4+Ml0pPj4yXSkrKG08PDIpPj4yXSkpe2Y9MDti''@;'; put 'put ''cmVha30oMHxhWzE2NCsocD0wfGFbZisxNj4+Ml0pPj4yXSk8MD8oMHxhWzQ3MjU5XSk+KDB8KGI9MHxhWzI4OCsoYz0wfGFbMTYrKDB8YVsoMz09KDB8KGw9MyZhW2Y+PjJdKSk/ZjpmKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pKXwoMHxiKT4oMHxhWzQ3MjYwXSkmJigwfChBPSgwfGFbMjMy''@;'; put 'put ''KygwfGFbMTYrKDB8YVsoMj09KDB8bCk/ZjpmKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKS0oMHxhW2MrMjMyPj4yXSktKDB8aHJbcCsxNzA+PjFdKXwwKSk8KDB8YVs0NzI1OF0pfDA9PSgwfGFbNDcyNTddKSYmKGFbNDcyNTddPWYsYVs0NzI1OF09QSk6KDB8YVsyODgrKDB8YVsxNisoYz0w''@;'; put 'put ''fGFbKDM9PSgzJmFbZj4+Ml18MCk/ZjpmKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPCgwfGFbbCsyODg+PjJdKSYmVUgoYyksbT1tKzF8MH1mb3IoOzAhPSgwfChjPTB8YVsoMHxhW2wrMjcyPj4yXSkrKGY8PDIpPj4yXSkpJigwfGFbNDcyNThdKT4wOykoMHxhWzI4OCsoMHxhWzE2KyhjPTB8''@;'; put 'put ''YVsoMj09KDMmYVtjPj4yXXwwKT9jOmMrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPCgwfGFbbCsyODg+PjJdKSYmKFVIKGMpLGw9MHxhW3c+PjJdKSxmPWYrMXwwfWZ1bmN0aW9uIGVhZShsKXt2YXIgYztyZXR1cm4gbHw9MCxjPTB8dnIoMTYpLGFbYz4+Ml09bCxhW2MrND4+Ml09MHxYSChs''@;'; put 'put ''LGMpLGFbYysxMj4+Ml09YywwfGN9ZnVuY3Rpb24gbmFlKGwpe3JldHVybiAwfGFbNCsobHw9MCk+PjJdfWZ1bmN0aW9uIHJhZShsKXt2YXIgYyxmLHAsbT0wO3JldHVybiBhWzgrKGM9MHxhWyhtPTB8YVsobHw9MCk+PjJdKT4+Ml0pPj4yXT0tMSxhW20+PjJdPWFbbSsoKHA9KDB8YVsoZj1s''@;'; put 'put ''KzR8MCk+PjJdKS0xfDApPDwyKT4+Ml0sYVs4KygwfGFbKG09MHxhW2w+PjJdKT4+Ml0pPj4yXT0wLGFbbSsocDw8Mik+PjJdPWMsYVtmPj4yXT1wLFFIKGwsMCksMHxjfWZ1bmN0aW9uIGlhZShsKXtyZXR1cm4gMHxDNygwfGFbKGx8PTApPj4yXSwwLDApfWZ1bmN0aW9uIG9hZShsKXt2YXIg''@;'; put 'put ''ZixwLG0sQSx3LGM9MDtyZXR1cm4oMHxhWzE2NCsoMHxhWyhjPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSk+LTEmJlByKDEwMjM1MCwxMDIzMzEsNDYzLDEwMjM2NCksbT1sKzQ4fDAsZj0wfHFkKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOm0pKzQwPj4yXSksdz1sKy00OHwwLHA9MHxxZCgwfGFb''@;'; put 'put ''KDI9PSgzJmFbbD4+Ml18MCk/bDp3KSs0MD4+Ml0pLGM9KDB8YVsyMzIrKDB8YVsxNisoMHxhWygyPT0oMHwoQT0zJmFbbD4+Ml0pKT9sOncpKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMz09KDB8QSk/bDptKSs0MD4+Ml0pPj4yXSk+PjJdKS0oMHxoclsxNzAr''@;'; put 'put ''KDB8YVtjPj4yXSk+PjFdKXwwLC0xPT0oMHxhW2YrOD4+Ml0pP0tJKDB8YVtmPj4yXSwwLGMpOktJKDB8YVtwPj4yXSwwLDAtY3wwKSxfNyhsKSwwfGZ1bmN0aW9uIHNhZShsLGMpe2x8PTAsY3w9MDtmb3IodmFyIGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDshKDA9PSgwfChmPTB8YVso''@;'; put 'put ''QT1sKzEyfDApPj4yXSkpfCgwfGYpPT0oMHxsKSk7KWw9Zjtmb3IoOyEoMD09KDB8KGY9MHxhWyhtPWMrMTJ8MCk+PjJdKSl8KDB8Zik9PSgwfGMpKTspYz1mO2lmKCgwfGwpIT0oMHxjKSl7cD0wfGFbbCs4Pj4yXSxmPTB8YVtjKzg+PjJdO2Rve2lmKCgwfHApPi0xKS0xPT0oMHxmKT93PWw6''@;'; put 'put ''az0xMDtlbHNle2lmKCgwfGYpPi0xKXtpZigtMT09KDB8cCkpe3c9YzticmVha31rPTEwO2JyZWFrfVByKDEwMjM3NiwxMDIzMzEsMzI3LDEwMjQyMyl9fXdoaWxlKDApOzEwPT0oMHxrKSYmKHc9KDB8YVtjKzQ+PjJdKTwoMHxhW2wrND4+Ml0pP2w6YyksYVttPj4yXT13LGFbQT4+Ml09dyxh''@;'; put 'put ''W3crND4+Ml09KDB8YVtjKzQ+PjJdKSsoMHxhW2wrND4+Ml0pLCgwfGFbdys4Pj4yXSk+LTE/Yj13OlByKDEwMjQzNCwxMDIzMzEsMzM1LDEwMjQyMyl9ZWxzZSBiPWw7cmV0dXJuIDB8Yn0oZixwKX1mdW5jdGlvbiBRSChsLGMpe2N8PTA7dmFyIEEsdyxmPTAscD0wLG09MCxiPTA7Zm9yKHc9''@;'; put 'put ''MHxhWyhsfD0wKT4+Ml0sQT0wfGFbbCs0Pj4yXTttPTIrKGw9Yzw8MSl8MCwoMHwobHw9MSkpPCgwfEEpJiYoMHxhWzQrKDB8YVt3KyhsPDwyKT4+Ml0pPj4yXSk8KDB8YVs0KygwfGFbdysoYzw8Mik+PjJdKT4+Ml0pfHwobD1jKSwhKCgwfG0pPj0oMHxBKXx8KGY9dysobTw8Mil8MCxwPTB8''@;'; put 'put ''YVtmPj4yXSwoMHxtKT09KDB8Yyl8fCgwfGFbcCs0Pj4yXSk+PSgwfGFbNCsoMHxhW3crKGw8PDIpPj4yXSk+PjJdKSkpOylsPTB8YVsoYj13KyhjPDwyKXwwKT4+Ml0sYVtiPj4yXT1wLGFbZj4+Ml09bCxhWzgrKDB8YVtiPj4yXSk+PjJdPWMsYVtsKzg+PjJdPW0sYz1tfWZ1bmN0aW9uIEpI''@;'; put 'put ''KGwsYyl7Y3w9MDt2YXIgbSxmPTAscD0wO2ZvcihtPTE2KyhsfD0wKXwwLGY9MDs7KXtpZighKHA9MHxhWygwfGFbMjcyKyhsPTB8YVttPj4yXSk+PjJdKSsoZjw8Mik+PjJdKSl7cD0wO2JyZWFrfSgwfHApIT0oMHxjKSYmSkgoMHxhWygyPT0oMyZhW3A+PjJdfDApP3A6cCstNDh8MCkrNDA+''@;'; put 'put ''PjJdLHApLGY9ZisxfDB9Zm9yKDtmPTB8YVsoMHxhW2wrMjY0Pj4yXSkrKHA8PDIpPj4yXTspKDB8ZikhPSgwfGMpJiYoSkgoMHxhWygzPT0oMyZhW2Y+PjJdfDApP2Y6Zis0OHwwKSs0MD4+Ml0sZiksbD0wfGFbbT4+Ml0pLHA9cCsxfDA7MHxjJiZmdW5jdGlvbiBsYWUobCl7dmFyIGM9MCxm''@;'; put 'put ''PTAscD0wLG09MCxBPTAsdz0wLGI9MDtmb3IoKDB8YVsyODArKHA9MHxhWzE2KyhmPTB8YVsoMz09KDB8KGM9MyZhWyhsfD0wKT4+Ml0pKT9sOmwrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk9PSgwfGwpP2I9MTooYj0tMSxmPXA9MHxhWygyPT0oMHxjKT9sOmwrLTQ4fDApKzQwPj4yXSxwPTB8''@;'; put 'put ''YVtwKzE2Pj4yXSksQT0wfGFbcCsxODA+PjJdLGM9MCxtPTA7dz0wfGFbQSsobTw8Mik+PjJdOyljPSgwfHlRKHcsZixiKSkrY3wwLG09bSsxfDA7Zm9yKEE9MHxhW3ArMTcyPj4yXSxwPTA7bT0wfGFbQSsocDw8Mik+PjJdOyljPSgwfHlRKG0sZixiKSkrY3wwLHA9cCsxfDA7YVsxNjArKDB8''@;'; put 'put ''YVtsKzE2Pj4yXSk+PjJdPWN9KGMpfWZ1bmN0aW9uIHlRKGwsYyxmKXt2YXIgdyxwPTAsbT0wLEE9MCxiPTA7cmV0dXJuKDB8KHA9MHxhWyhiPTM9PSgwfCh3PTMmYVsobHw9MCk+PjJdKSk/bDpsKzQ4fDApKzQwPj4yXSkpPT0oMHwoY3w9MCkpJiYocD0wfGFbKDI9PSgwfHcpP2w6bCstNDh8''@;'; put 'put ''MCkrNDA+PjJdKSwoMHxhWzI4NCsoQT0wfGFbYysxNj4+Ml0pPj4yXSk8PSgwfChtPTB8YVsyODgrKDB8YVtwKzE2Pj4yXSk+PjJdKSkmJigwfG0pPD0oMHxhW0ErMjg4Pj4yXSk/KEE9MSxwPShwPSgwfGFbMTY0KyhtPTB8YVtsKzE2Pj4yXSk+PjJdKT4tMT8wfGFbbSsxNjA+PjJdOjApLSgw''@;'; put 'put ''fGFbbSsxNTY+PjJdKXwwKTooQT0wLHA9MHxhWzE1NisoMHxhW2wrMTY+PjJdKT4+Ml0pLGI9KDB8YVsoKDB8KGZ8PTApKT4wPzI9PSgwfHcpP2w6bCstNDh8MDpiKSs0MD4+Ml0pPT0oMHxjKT8xOi0xLDB8KCgwfChBP2I6MC1ifDApKTwwPzAtcHwwOnApfWZ1bmN0aW9uIHFkKGwpe3ZhciBj''@;'; put 'put ''PTAsZj0wO2ZvcihsPTB8YVsyODArKDB8YVsxNisobHw9MCk+PjJdKT4+Ml07KDB8KGY9MHxhWyhjPWwrMTJ8MCk+PjJdKSkhPSgwfGwpJjAhPSgwfGYpOykobD0wfGFbZisxMj4+Ml0pP2FbYz4+Ml09bDpsPWY7cmV0dXJuIDB8bH1mdW5jdGlvbiBLSShsLGMsZil7Y3w9MDt2YXIgdyxwPTAs''@;'; put 'put ''bT0wLEE9MDtmb3IoYVsoQT0yMzIrKHA9MHxhWyh3PTE2KyhsfD0wKXwwKT4+Ml0pfDApPj4yXT0oMHxhW0E+PjJdKSsoZnw9MCksQT0wOzspe2lmKCEobT0wfGFbKDB8YVtwKzI2ND4+Ml0pKyhBPDwyKT4+Ml0pKXtBPTA7YnJlYWt9KDB8KG09MHxhWygzPT0oMyZhW20+PjJdfDApP206bSs0''@;'; put 'put ''OHwwKSs0MD4+Ml0pKSE9KDB8YykmJihLSShtLGwsZikscD0wfGFbdz4+Ml0pLEE9QSsxfDB9Zm9yKDttPTB8YVsoMHxhW3ArMjcyPj4yXSkrKEE8PDIpPj4yXTspKDB8KG09MHxhWygyPT0oMyZhW20+PjJdfDApP206bSstNDh8MCkrNDA+PjJdKSkhPSgwfGMpJiYoS0kobSxsLGYpLHA9MHxh''@;'; put 'put ''W3c+PjJdKSxBPUErMXwwfWZ1bmN0aW9uIF83KGwpe3ZhciBBLGM9MCxmPTAscD0wLG09MCx3PTA7QT1sZSxsZT1sZSszMnwwLCgwfGFbKGM9MTY0KygwfGFbMTYrKGx8PTApPj4yXSl8MCk+PjJdKT4tMSYmKCRyKDEsMTAyNDUzLEEpLHplKDE4ODg0OCwxKSksYVtjPj4yXT1tPTB8YVs0NzI1''@;'; put 'put ''NV0sYz0wfGFbNDcyNTZdLGFbNDcyNTVdPW0rMSxhW2MrKG08PDIpPj4yXT1sLG09bCs0OHwwLDB8ZmVbMTU3KygwfGFbMTYrKGY9MHxhWygzPT0oMyYoYz0wfGFbbD4+Ml0pfDApP2w6bSkrNDA+PjJdKT4+Ml0pPj4wXXx8KHA9MHxhWzQ3MjYyXSxhWzQ3MjYzXT0xKyhjPTB8YVs0NzI2M10p''@;'; put 'put ''LGFbcCsoYzw8Mik+PjJdPWYsYz0wfGFbbD4+Ml0pLHA9bCstNDh8MCwwfGZlWzE1NysoMHxhWzE2KyhmPTB8YVsoMj09KDMmY3wwKT9sOnApKzQwPj4yXSk+PjJdKT4+MF18fCh3PTB8YVs0NzI2Ml0sYVs0NzI2M109MSsoYz0wfGFbNDcyNjNdKSxhW3crKGM8PDIpPj4yXT1mLGM9MHxhW2w+''@;'; put 'put ''PjJdKSxmZVsxNTcrKGM9MHxhWyh3PTE2KygwfGFbKDM9PSgzJmN8MCk/bDptKSs0MD4+Ml0pfDApPj4yXSk+PjBdPTEsZj0wfGFbYysyNzI+PjJdLGFbKGM9YysyNzZ8MCk+PjJdPTErKG09MHxhW2M+PjJdKSxhW2YrKG08PDIpPj4yXT1sLGFbKDB8YVsyNzIrKG09MHxhW3c+PjJdKT4+Ml0p''@;'; put 'put ''KyhhW20rMjc2Pj4yXTw8Mik+PjJdPTAsMHxhWygwfGFbMTgwKyh3PTB8YVt3Pj4yXSk+PjJdKSsoKDB8YVt3KzI3Nj4+Ml0pLTE8PDIpPj4yXXx8KCRyKDEsMTAyNDg3LEErOHwwKSx6ZSgxODg4NDgsMSkpLGZlWzE1NysoZj0wfGFbKHc9MTYrKDB8YVsoMj09KDMmYVtsPj4yXXwwKT9sOnAp''@;'; put 'put ''KzQwPj4yXSl8MCk+PjJdKT4+MF09MSxwPTB8YVtmKzI2ND4+Ml0sYVsoZj1mKzI2OHwwKT4+Ml09MSsobT0wfGFbZj4+Ml0pLGFbcCsobTw8Mik+PjJdPWwsYVsoMHxhWzI2NCsobD0wfGFbdz4+Ml0pPj4yXSkrKGFbbCsyNjg+PjJdPDwyKT4+Ml09MCwwfGFbKDB8YVsxNzIrKHc9MHxhW3c+''@;'; put 'put ''PjJdKT4+Ml0pKygoMHxhW3crMjY4Pj4yXSktMTw8Mik+PjJdP2xlPUE6KCRyKDEsMTAyNTIyLEErMTZ8MCksemUoMTg4ODQ4LDEpKX1mdW5jdGlvbiBDNyhsLGMsZil7Y3w9MCxmfD0wO3ZhciBNLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLEQ9MDtNPTB8cWQobHw9MCksZj8oKDB8YVsyMzIr''@;'; put 'put ''KDB8YVsxNisoMHxhWygyPT0oMHwoaz0zJmFbZj4+Ml0pKT9mOmYrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMz09KDB8ayk/ZjpmKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pfDApIT0oMHxoclsxNzArKDB8YVtmKzE2Pj4yXSk+PjFdKSYmKHA9Myk6''@;'; put 'put ''KGY9MCxwPTMpO2U6ZG97aWYoMz09KDB8cCkpe2ZvcihrPWwrMTZ8MCxiPTA7Oyl7aWYoISh3PTB8YVsoMHxhWzE4MCsocD0wfGFbaz4+Ml0pPj4yXSkrKGI8PDIpPj4yXSkpe2I9MDticmVha31wPXcrMTZ8MCxtPXcrLTQ4fDAsQT0wfGFbKDI9PSgzJmFbdz4+Ml18MCk/dzptKSs0MD4+Ml07''@;'; put 'put ''ZG97aWYoKDB8YVsxNjQrKDB8YVtwPj4yXSk+PjJdKT4tMSkoMHxBKSE9KDB8YykmJihmPTB8QzcoQSxsLGYpKTtlbHNlIGlmKCgwfHFkKEEpKSE9KDB8TSkpe2lmKDB8ZiYmKCgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDB8KEQ9MyZhW3c+PjJdKSk/dzptKSs0MD4+Ml0pPj4yXSk+PjJd''@;'; put 'put ''KS0oMHxhWzIzMisoMHxhWzE2KygwfGFbKDM9PSgwfEQpP3c6dys0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKS0oMHxoclsxNzArKDB8YVtwPj4yXSk+PjFdKXwwKT49KCgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDB8KEE9MyZhW2Y+PjJdKSk/ZjpmKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJd''@;'; put 'put ''KS0oMHxhWzIzMisoMHxhWzE2KygwfGFbKDM9PSgwfEEpP2Y6Zis0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKS0oMHxoclsxNzArKDB8YVtmKzE2Pj4yXSk+PjFdKXwwKSlicmVhaztmPXd9fXdoaWxlKDApO2I9YisxfDB9Zm9yKDs7KXtpZighKHA9MHxhWygwfGFbcCsxNzI+PjJdKSsoYjw8Mik+''@;'; put 'put ''PjJdKSlicmVhayBlO209cCsxNnwwLEE9cCs0OHwwLHc9MHxhWygzPT0oMyZhW3A+PjJdfDApP3A6QSkrNDA+PjJdO2Rve2lmKCgwfGFbMTY0KygwfGFbbT4+Ml0pPj4yXSk+LTEpKDB8dykhPSgwfGMpJiYoZj0wfEM3KHcsbCxmKSk7ZWxzZSBpZigoMHxxZCh3KSkhPSgwfE0pKXtpZigwfGYm''@;'; put 'put ''JigoMHxhWzIzMisoMHxhWzE2KygwfGFbKDI9PSgwfCh3PTMmYVtwPj4yXSkpP3A6cCstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSktKDB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMHx3KT9wOkEpKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGhyWzE3MCsoMHxhW20+PjJdKT4+MV0pfDApPj0oKDB8''@;'; put 'put ''YVsyMzIrKDB8YVsxNisoMHxhWygyPT0oMHwoRD0zJmFbZj4+Ml0pKT9mOmYrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMz09KDB8RCk/ZjpmKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGhyWzE3MCsoMHxhW2YrMTY+PjJdKT4+MV0pfDApKWJy''@;'; put 'put ''ZWFrO2Y9cH19d2hpbGUoMCk7Yj1iKzF8MCxwPTB8YVtrPj4yXX19fXdoaWxlKDApO3JldHVybiAwfGZ9ZnVuY3Rpb24gWEgobCxjKXt2YXIgTSxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsRD0wLFI9MCxHPTA7Zm9yKGFbMjgwKyhmPTB8YVsoTT0xNisobHw9MCl8MCk+PjJdKT4+Ml09''@;'; put 'put ''Y3w9MCxsPTEsQT0wOzspe2lmKCEobT0wfGFbKDB8YVtmKzE3Mj4+Ml0pKyhBPDwyKT4+Ml0pKXtBPTA7YnJlYWt9KDB8YVsxNjQrKHA9MHxhW20rMTY+PjJdKT4+Ml0pPD0tMSYmKGI9bSs0OHwwLDA9PSgwfGFbMjgwKyhrPTB8YVsxNisoMHxhWygzPT0oMHwodz0zJmFbbT4+Ml0pKT9tOmIp''@;'; put 'put ''KzQwPj4yXSk+PjJdKT4+Ml0pKSYmKCgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDB8dyk/bTptKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKS0oMHxhW2srMjMyPj4yXSl8MCk9PSgwfGhyW3ArMTcwPj4xXSkmJihfNyhtKSxsPSgwfFhIKDB8YVsoMz09KDMmYVttPj4yXXwwKT9tOmIpKzQw''@;'; put 'put ''Pj4yXSxjKSkrbHwwLGY9MHxhW00+PjJdKSxBPUErMXwwfWZvcig7cD0wfGFbKDB8YVtmKzE4MD4+Ml0pKyhBPDwyKT4+Ml07KSgwfGFbMTY0KyhtPTB8YVtwKzE2Pj4yXSk+PjJdKTw9LTEmJihSPXArLTQ4fDAsMD09KDB8YVsyODArKEc9MHxhWzE2KygwfGFbKDI9PSgwfChEPTMmYVtwPj4y''@;'; put 'put ''XSkpP3A6UikrNDA+PjJdKT4+Ml0pPj4yXSkpJiYoKDB8YVtHKzIzMj4+Ml0pLSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMz09KDB8RCk/cDpwKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pfDApPT0oMHxoclttKzE3MD4+MV0pJiYoXzcocCksbD0oMHxYSCgwfGFbKDI9PSgzJmFbcD4+Ml18MCk/''@;'; put 'put ''cDpSKSs0MD4+Ml0sYykpK2x8MCxmPTB8YVtNPj4yXSksQT1BKzF8MDtyZXR1cm4gMHxsfWZ1bmN0aW9uIGs3KGwsYyxmKXt2YXIgcD0wO3JldHVybiAwfHBRKGx8PTAsY3w9MCxmfD0wLHA9KHA9MHxMaShsLDEwMjU4NikpPzB8cjMocCk6MzApfWZ1bmN0aW9uIHdRKGwsYyxmLHApe2x8PTAs''@;'; put 'put ''Znw9MCxwfD0wO3ZhciBELEcscSxwZSxnZSxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxSPTAsYmU9MDtmb3IocT1sZSxsZT1sZSsxNnwwLEc9cSxhWzQ3MjY0XT1hWzQrKDB8YVs4KygwfGFbNjQrKGN8PTApPj4yXSk+PjJdKT4+Ml0sZ2U9K19bMzIrKEE9MHxhW2MrMTY+PjJdKT4+M10scGU9''@;'; put 'put ''K19bQSs0MD4+M10sUzcoZiwxMDI1OTcsK19bbCszNTI+PjNdKSxTNyhmLDEwMjYwNCwuMDEzODg4ODg4ODg4ODg4ODg4KmdlKSxTNyhmLDEwMjYwNCwuMDEzODg4ODg4ODg4ODg4ODg4KnBlKSxLSChmKSxBPTB8RHQoYyk7QTspMHxmZVsxMTgrKDB8YVsobT1BKzE2fDApPj4yXSk+PjBdfHwo''@;'; put 'put ''UTMoZiwxMDI2MDYsMHxSQSgwfHRpKEEpKSksYVtHPj4yXT1hWyhSPTE2KygwfGFbbT4+Ml0pfDApPj4yXSxhW0crND4+Ml09YVtSKzQ+PjJdLGFbRys4Pj4yXT1hW1IrOD4+Ml0sYVtHKzEyPj4yXT1hW1IrMTI+PjJdLCRIKGYsRyksbD0wfGZlWzgyKygwfGFbMTA0KygwfGFbbT4+Ml0pPj4y''@;'; put 'put ''XSk+PjBdPzB8UkEoMHxIbyhBLDB8YVs0NzE1NF0pKTowfHFIKGw9MHxjcihBKSwwfGFbYVsxMDQrKDB8YVttPj4yXSk+PjJdPj4yXSksUzcoZiwxMDI2MDQsK19bMzIrKDB8YVttPj4yXSk+PjNdKSxTNyhmLDEwMjYwNCwrX1s0MCsoMHxhW20+PjJdKT4+M10pLFEzKGYsMTAyNjA0LGwpLFEz''@;'; put 'put ''KGYsMTAyNjA0LDB8QmEoQSwwfGFbNDcxNTddLDExMTA2NykpLFEzKGYsMTAyNjA0LDB8YVthWzgrKDB8YVttPj4yXSk+PjJdPj4yXSksUTMoZiwxMDI2MDQsMHxCYShBLDB8YVs0NzE0OF0sMTM3MzE0KSksbD0wfEJhKEEsMHxhWzQ3MTQ5XSwxOTUwNTkpLDB8ZmVbbD4+MF18fChsPTB8QmEo''@;'; put 'put ''QSwwfGFbNDcxNDhdLDEzNDgwMCkpLFEzKGYsMTAyNjA0LGwpLEtIKGYpKSxBPTB8enQoYyxBKTtmb3IoRD1wPDwyND4+MjQ9PTAsTT0wfER0KGMpO007KXtmb3Ioaz0wfHcwKGMsTSk7azspe0Q/KHA9MTk1MDU5LHc9MTk1MDU5KToodz0wfExpKGssMTExNDU1KSxwPTB8KHA9MHxMaShrLDEx''@;'; put 'put ''MTQ2NCkpP3A6MTk1MDU5LHc9MHx3P3c6MTk1MDU5KSxiPTB8YVs4KyhsPTB8YVsoUj1rKzE2fDApPj4yXSk+PjJdO2U6ZG97aWYoYil7Zm9yKEE9MHxhW2IrND4+Ml0sbD0wLG09MDshKCgwfGwpPj0oMHxBKSk7KWJlPSgwfGFbKDB8YVtiPj4yXSkrKDQ4Kmx8MCkrND4+Ml0pK218MCxsPWwr''@;'; put 'put ''MXwwLG09YmU7Zm9yKFEzKGYsMCwxMTE0NTApLF9RKGYsMHxhWygzPT0oMyZhW2s+PjJdfDApP2s6ays0OHwwKSs0MD4+Ml0sdyksX1EoZiwwfGFbKDI9PSgzJmFbaz4+Ml18MCk/azprKy00OHwwKSs0MD4+Ml0scCksY2FlKGYsbSkscD0wOzspe2lmKCgwfHApPj0oMHxhWzQrKG09MHxhWzgr''@;'; put 'put ''KGw9MHxhW1I+PjJdKT4+Ml0pPj4yXSkpYnJlYWsgZTtmb3IobT0wfGFbKEE9MHxhW20+PjJdKSsoNDgqcHwwKT4+Ml0sQT0wfGFbQSsoNDgqcHwwKSs0Pj4yXSxsPTA7ISgoMHxsKT49KDB8QSkpOylhW0c+PjJdPWFbKGJlPW0rKGw8PDQpfDApPj4yXSxhW0crND4+Ml09YVtiZSs0Pj4yXSxh''@;'; put 'put ''W0crOD4+Ml09YVtiZSs4Pj4yXSxhW0crMTI+PjJdPWFbYmUrMTI+PjJdLCRIKGYsRyksbD1sKzF8MDtwPXArMXwwfX19d2hpbGUoMCk7MHxhW2wrOTY+PjJdJiYoUTMoZiwxMDI2MDQsMHxxSChiZT0wfGNyKDB8YVsoMz09KDMmYVtrPj4yXXwwKT9rOmsrNDh8MCkrNDA+PjJdKSwwfGFbYVs5''@;'; put 'put ''NisoMHxhW1I+PjJdKT4+Ml0+PjJdKSksYVtHPj4yXT1hWyhiZT01NisoMHxhWzk2KygwfGFbUj4+Ml0pPj4yXSl8MCk+PjJdLGFbRys0Pj4yXT1hW2JlKzQ+PjJdLGFbRys4Pj4yXT1hW2JlKzg+PjJdLGFbRysxMj4+Ml09YVtiZSsxMj4+Ml0sJEgoZixHKSksUTMoZiwxMDI2MDQsMHxCYShr''@;'; put 'put ''LDB8YVs0NzE4NV0sMTExMDY3KSksUTMoZiwxMDI2MDQsMHxCYShrLDB8YVs0NzE3Nl0sMTM3MzE0KSksS0goZiksaz0wfFMwKGMsayl9TT0wfHp0KGMsTSl9TTcoMTAyNjEyLGYpLGxlPXF9ZnVuY3Rpb24gUzcobCxjLGYpe3ZhciBwLG0sQTtsfD0wLGY9K2YsQT1sZSxsZT1sZSsxMDQwfDAs''@;'; put 'put ''bT1BLHA9QSs4fDAsMHwoY3w9MCkmJk03KGMsbCksX1ttPj4zXT1mLG9vKHAsMTAyNjE4LG0pLE03KHAsbCksbGU9QX1mdW5jdGlvbiBLSChsKXtsfD0wLGZlWzE5NDk1NV09MTAsQmlbMTI3JmFbNDcyNjRdXShsLDE5NDk1NSl9ZnVuY3Rpb24gUTMobCxjLGYpe2x8PTAsZnw9MCwwfChjfD0w''@;'; put 'put ''KSYmTTcoYyxsKSxNNyhmLGwpfWZ1bmN0aW9uICRIKGwsYyl7UzcobHw9MCwxMDI2MDQsLjAxMzg4ODg4ODg4ODg4ODg4OCorX1soY3w9MCk+PjNdKSxTNyhsLDEwMjYwNCwuMDEzODg4ODg4ODg4ODg4ODg4KitfW2MrOD4+M10pfWZ1bmN0aW9uIHFIKGwsYyl7dmFyIGY7cmV0dXJuIGM9MHxS''@;'; put 'put ''QShmPTB8cjAobHw9MCxjfD0wKSksZTAobCxmKSwwfGN9ZnVuY3Rpb24gX1EobCxjLGYpe2Z8PTAsUTMobHw9MCwxMDI2MDQsYz0wfGZlWzExOCsoMHxhWzE2KyhjfD0wKT4+Ml0pPj4wXT8wfHFIKDB8Y3IoYyksMSsoMHwkcygwfHRpKGMpLDU4KSl8MCk6MHxSQSgwfHRpKGMpKSksMHxmJiYw''@;'; put 'put ''fGZlW2Y+PjBdJiZRMyhsLDEwNzk4NCwwfFJBKGYpKX1mdW5jdGlvbiBjYWUobCxjKXt2YXIgZixwLG07Y3w9MCxmPWxlLGxlPWxlKzEwNDB8MCxtPWYscD1mKzh8MCxNNygxMDI2MDQsbHw9MCksYVttPj4yXT1jLG9vKHAsMTM3Mzk1LG0pLE03KHAsbCksbGU9Zn1mdW5jdGlvbiBNNyhsLGMp''@;'; put 'put ''e0JpWzEyNyZhWzQ3MjY0XV0oY3w9MCxsfD0wKX1mdW5jdGlvbiBDUShsLGMsZil7Y3w9MCxmfD0wO3ZhciBSZSxIZSxWZSxxZSxXZSxhdCxTdCxrdCxzdCxFdCxadCxjdCxidCxhbixTbixIbix1cixIcixFcixmcixEcixKcixMcixwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9''@;'; put 'put ''MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MCxydD0wO2ZvcihMcj1sZSxsZT1sZSsyMjg4fDAsRHI9THIrMjA4fDAsZnI9THIrMTkyfDAsRXI9THIrMTc2fDAsSHI9THIrMTYwfDAsdXI9THIrMTQ0fDAsSG49THIrMTI4fDAsYW49THIrMTEyfDAsYnQ9THIrOTZ8MCxjdD1Mcis4''@;'; put 'put ''MHwwLFp0PUxyKzY0fDAsRXQ9THIrNTZ8MCxzdD1Mcis0OHwwLEpyPUxyKzMyfDAsU249THIrMjR8MCxrdD1McixXZT1McisxMjY0fDAsYXQ9THIrMjI0fDAscWU9KDB8aHJbMTc4KygwfGFbKFN0PTE2KyhsfD0wKXwwKT4+Ml0pPj4xXSk+MixzYygxKSx1cyhhdCwxMDI0LExyKzI0MHwwKSxa''@;'; put 'put ''MihsLDEsMTAyNjIzLDE5NTA1OSksWjIobCwxLDEwMjYyNywxOTUwNTkpLGFbNDcxNDZdPTB8WjIobCwxLDE0MTExNiwxOTUwNTkpLGFbNDcxNDVdPTB8WjIobCwxLDE0MTA0OCwxOTUwNTkpLFoyKGwsMiwxMDI2MjMsMTk1MDU5KSwxNiYocD0wfGZlWzExMysoMHxhW1N0Pj4yXSk+PjBdKSYm''@;'; put 'put ''KFoyKGwsMSwxMDI2MzMsMTk1MDU5KSxwPTB8ZmVbMTEzKygwfGFbU3Q+PjJdKT4+MF0pLDEmcCYmKFoyKGwsMiwxMDI2MzcsMTk1MDU5KSxwPTB8ZmVbMTEzKygwfGFbU3Q+PjJdKT4+MF0pLDMyJnAmJihaMihsLDIsMTAyNjMzLDE5NTA1OSkscD0wfGZlWzExMysoMHxhW1N0Pj4yXSk+PjBd''@;'; put 'put ''KSwyJnAmJihaMihsLDIsMTAyNjQwLDE5NTA1OSkscD0wfGZlWzExMysoMHxhW1N0Pj4yXSk+PjBdKSw0JnAmJihaMihsLDIsMTAyNjQ4LDE5NTA1OSkscD0wfGZlWzExMysoMHxhW1N0Pj4yXSk+PjBdKSw4JnA/KE9lPTB8WjIobCwwLDEwMjYzNywxOTUwNTkpLGJlPTB8WjIobCwwLDEwMjY1''@;'; put 'put ''NiwxOTUwNTkpLGdlPTB8WjIobCwwLDEwMjY2MywxOTUwNTkpKTooZ2U9MCxiZT0wLE9lPTApLFJlPTB8WjIobCwwLDEwMjY3MSwxOTUwNTkpLEhlPWF0KzR8MCxWZT1hdCs4fDAscGU9MCxwPTAsTGU9MHxEdChsKTtMZTspe2lmKGs9K19bMTYrKEE9MHxhWyhxPUxlKzE2fDApPj4yXSk+PjNd''@;'; put 'put ''LG09ITAscWUpe2Zvcih3PW0/K19bQSsyND4+M106K19bMjMzMDFdLStfW0ErMjQ+PjNdLEQ9NzIqK19bMTYrKDB8YVtBKzEzMj4+Ml0pPj4zXSxfW2t0Pj4zXT1rLF9ba3QrOD4+M109dyxfW2t0KzE2Pj4zXT1ELG9vKFdlLDEwMjY3NCxrdCksdW8oYXQsV2UpLG09MzshKCgwfG0pPj0oMHxo''@;'; put 'put ''clsxNzgrKDB8YVtTdD4+Ml0pPj4xXSkpOylfW1NuPj4zXT03MiorX1soMHxhWzEzMisoMHxhW3E+PjJdKT4+Ml0pKyhtPDwzKT4+M10sb28oV2UsMTAyNjg5LFNuKSx1byhhdCxXZSksbT1tKzF8MDsobT0wfGFbSGU+PjJdKT4+PjA+PSgwfGFbVmU+PjJdKT4+PjAmJihRMChhdCwxKSxtPTB8''@;'; put 'put ''YVtIZT4+Ml0pLGZlW20+PjBdPTAsYVtIZT4+Ml09Rz0wfGFbYXQ+PjJdLGtjKExlLDEwMjYyMyxHKSxHPUxlfWVsc2Ugdz1tPytfW0ErMjQ+PjNdOitfWzIzMzAxXS0rX1tBKzI0Pj4zXSxfW0pyPj4zXT1rLF9bSnIrOD4+M109dyxvbyhXZSwxMDI2OTUsSnIpLGtjKExlLDEwMjYyMyxXZSks''@;'; put 'put ''Rz1MZTtpZihfW3N0Pj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KitfWzgwKygwfGFbcT4+Ml0pPj4zXSxvbyhXZSwxMDI2MTgsc3QpLFZsKEcsMHxhWzQ3MTQ1XSxXZSksX1tFdD4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCooK19bOTYrKG09MHxhW3E+PjJdKT4+M10rICtfW20rODg+PjNdKSxv''@;'; put 'put ''byhXZSwxMDI2MTgsRXQpLFZsKEcsMHxhWzQ3MTQ2XSxXZSksMCE9KDB8KEE9MHxhWzEwOCsobT0wfGFbcT4+Ml0pPj4yXSkpJiYwIT0oMHxmZVtBKzgxPj4wXSkmJihEPStfW0ErNjQ+PjNdLF9bWnQ+PjNdPStfW0ErNTY+PjNdLF9bWnQrOD4+M109RCxvbyhXZSwxMDI2OTUsWnQpLGtjKEcs''@;'; put 'put ''MTAyNjMzLFdlKSxtPTB8YVtxPj4yXSksMHxaaSgwfGFbYVttKzg+PjJdPj4yXSwxMDYyMjApKXtpZigwfGFbNDcxNzBdJiYoMHxIYWUoTGUpKTw8MjQ+PjI0KXtmb3IoKDB8KG09MHxhWyhSPTgrKEE9MHxhWzEyKygwfGFbcT4+Ml0pPj4yXSl8MCk+PjJdKSk8MyYmKG09KDB8KG09KG09MHxM''@;'; put 'put ''aShHLDEwMjcwNSkpPzB8cjMobSk6OCkpPDM/ODptKSxNPUErNDR8MCxEPTEvKygwfG0pLGI9MDshKCgwfGIpPj0oMHxtKSk7KSgwfGIpPjAmJigoQT0wfGFbSGU+PjJdKT4+PjA+PSgwfGFbVmU+PjJdKT4+PjAmJihRMChhdCwxKSxBPTB8YVtIZT4+Ml0pLGFbSGU+PjJdPUErMSxmZVtBPj4w''@;'; put 'put ''XT0zMiksKDB8YVtSPj4yXSk+Mj8odz0uMDEzODg4ODg4ODg4ODg4ODg4KitfWyhBPTB8YVtNPj4yXSkrKGI8PDQpKzg+PjNdLF9bY3Q+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqK19bQSsoYjw8NCk+PjNdLF9bY3QrOD4+M109dyxvbyhXZSwxMDI3MTgsY3QpKTooaz0uNSorX1szMisoQT0w''@;'; put 'put ''fGFbcT4+Ml0pPj4zXSoraGEoKyh3PUQqKygwfGIpKjYuMjgzMTg1MzA3MTc5NTg2KSksdz0uNSorX1tBKzQwPj4zXSorRGEoK3cpLF9bYnQ+PjNdPWssX1tidCs4Pj4zXT13LG9vKFdlLDEwMjcxOCxidCkpLHVvKGF0LFdlKSxiPWIrMXwwO0E9MHxhWzQ3MTcwXSwobT0wfGFbSGU+PjJdKT4+''@;'; put 'put ''PjA+PSgwfGFbVmU+PjJdKT4+PjAmJihRMChhdCwxKSxtPTB8YVtIZT4+Ml0pLGZlW20+PjBdPTAsYVtIZT4+Ml09cT0wfGFbYXQ+PjJdLFZsKEcsQSxxKX19ZWxzZSBrUShMZSwwfGFbbSsxMj4+Ml0sYXQpLEw2KGF0KSwobT0wfGFbSGU+PjJdKT4+PjA+PSgwfGFbVmU+PjJdKT4+PjAmJihR''@;'; put 'put ''MChhdCwxKSxtPTB8YVtIZT4+Ml0pLGZlW20+PjBdPTAsYVtIZT4+Ml09cT0wfGFbYXQ+PjJdLGtjKEcsMTAyNjI3LHEpO2U6ZG97aWYoKDB8YVs0NzEzOF0pPjApZm9yKHE9MHx3MChsLExlKSxtPXBlOzspe2lmKCFxKWJyZWFrIGU7QT0wfGFbKEc9cSsxNnwwKT4+Ml07ZG97aWYoNiE9KDB8''@;'; put 'put ''ZmVbQSsxMTI+PjBdKSYmMCE9KDB8KHJ0PTB8YVtBKzg+PjJdKSkpe2ZvcihSPTAsQT1ydDshKCgwfFIpPj0oMHxhW0ErND4+Ml0pKTspe2ZvcigoMHxSKT4wJiYoKEE9MHxhW0hlPj4yXSk+Pj4wPj0oMHxhW1ZlPj4yXSk+Pj4wJiYoUTAoYXQsMSksQT0wfGFbSGU+PjJdKSxhW0hlPj4yXT1B''@;'; put 'put ''KzEsZmVbQT4+MF09NTksQT0wfGFbOCsoMHxhW0c+PjJdKT4+Ml0pLDB8YVsoQT0wfGFbQT4+Ml0pKyg0OCpSfDApKzg+PjJdJiYodz0rX1tBKyg0OCpSfDApKzI0Pj4zXSxfW2FuPj4zXT0rX1tBKyg0OCpSfDApKzE2Pj4zXSxfW2FuKzg+PjNdPXcsb28oV2UsMTAyNzI4LGFuKSx1byhhdCxX''@;'; put 'put ''ZSkscD0xLEE9MHxhW2FbOCsoMHxhW0c+PjJdKT4+Ml0+PjJdKSwwfGFbQSsoNDgqUnwwKSsxMj4+Ml0mJih3PStfW0ErKDQ4KlJ8MCkrNDA+PjNdLF9bSG4+PjNdPStfW0ErKDQ4KlJ8MCkrMzI+PjNdLF9bSG4rOD4+M109dyxvbyhXZSwxMDI3NDEsSG4pLHVvKGF0LFdlKSxtPTEpLE09MDsh''@;'; put 'put ''KCgwfE0pPj0oMHxhWyhiPTB8YVsoQT0wfGFbOCsoMHxhW0c+PjJdKT4+Ml0pPj4yXSkrKDQ4KlJ8MCkrND4+Ml0pKTspKDB8TSk+MD8oKEE9MHxhW0hlPj4yXSk+Pj4wPj0oMHxhW1ZlPj4yXSk+Pj4wJiYoUTAoYXQsMSksQT0wfGFbSGU+PjJdKSxhW0hlPj4yXT1BKzEsZmVbQT4+MF09MzIs''@;'; put 'put ''QT0wfGFbYVs4KygwfGFbRz4+Ml0pPj4yXT4+Ml0pOkE9YixEPStfWyhwZT0wfGFbQSsoNDgqUnwwKT4+Ml0pKyhNPDw0KSs4Pj4zXSxfW3VyPj4zXT0rX1twZSsoTTw8NCk+PjNdLF9bdXIrOD4+M109RCxvbyhXZSwxMDI2OTUsdXIpLHVvKGF0LFdlKSxNPU0rMXwwO1I9UisxfDB9KEE9MHxh''@;'; put 'put ''W0hlPj4yXSk+Pj4wPj0oMHxhW1ZlPj4yXSk+Pj4wJiYoUTAoYXQsMSksQT0wfGFbSGU+PjJdKSxmZVtBPj4wXT0wLGFbSGU+PjJdPUE9MHxhW2F0Pj4yXSxrYyhxLDEwMjYyMyxBKSwoYj0wfGFbOTYrKEE9MHxhW0c+PjJdKT4+Ml0pJiYoRD0rX1tiKzY0Pj4zXSxfW0hyPj4zXT0rX1tiKzU2''@;'; put 'put ''Pj4zXSxfW0hyKzg+PjNdPUQsb28oV2UsMTAyNjk1LEhyKSxrYyhxLDEwMjYzNyxXZSksQT0wfGFbRz4+Ml0pLGI9MHxhW0ErMTA4Pj4yXTtkb3tpZihiKXtpZighKDB8ZmVbYis4MT4+MF0pKWJyZWFrO0Q9K19bYis2ND4+M10sX1tFcj4+M109K19bYis1Nj4+M10sX1tFcis4Pj4zXT1ELG9v''@;'; put 'put ''KFdlLDEwMjY5NSxFciksa2MocSwxMDI2MzMsV2UpLEE9MHxhW0c+PjJdfX13aGlsZSgwKTtpZigoYj0wfGFbQSsxMDA+PjJdKSYmKEQ9K19bYis2ND4+M10sX1tmcj4+M109K19bYis1Nj4+M10sX1tmcis4Pj4zXT1ELG9vKFdlLDEwMjY5NSxmciksa2MocSwxMDI2NDAsV2UpLEE9MHxhW0c+''@;'; put 'put ''PjJdKSwhKEE9MHxhW0ErMTA0Pj4yXSkpYnJlYWs7RD0rX1tBKzY0Pj4zXSxfW0RyPj4zXT0rX1tBKzU2Pj4zXSxfW0RyKzg+PjNdPUQsb28oV2UsMTAyNjk1LERyKSxrYyhxLDEwMjY0OCxXZSl9fXdoaWxlKDApO3E9MHxTMChsLHEpfWVsc2UgbT1wZX13aGlsZSgwKTtwZT1tLExlPTB8enQo''@;'; put 'put ''bCxMZSl9U1EobCxSZSxPZSxiZSxnZSksQzIoYXQpLDEmaXRbMTM2KygwfGFbU3Q+PjJdKT4+MV0mJmJKKGwpLGFbYz4+Ml09cCxhW2Y+PjJdPXBlLHNjKDApLGxlPUxyfWZ1bmN0aW9uIGtRKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIGIsayxNLEQscD0wLG09MCxBPTAsdz0wLFI9MDtmb3IoRD1s''@;'; put 'put ''ZSxsZT1sZSsxMDU2fDAsaz1ELGI9RCszMnwwLDB8YVsoTT00OCsoY3w9MCl8MCk+PjJdfHwobT0oQT0rX1syNCsocD0wfGFbbCsxNj4+Ml0pPj4zXSkrICtfW2MrMjQ+PjNdLEErPStfW2MrNDA+PjNdLFI9KHc9K19bcCsxNj4+M10pKyArX1tjKzMyPj4zXSxfW2s+PjNdPXcrICtfW2MrMTY+''@;'; put 'put ''PjNdLF9bays4Pj4zXT1tLF9baysxNj4+M109UixfW2srMjQ+PjNdPUEsb28oYiwxMDI3NzksayksdW8oZixiKSksYz1jKzU2fDAscD0wOyEoKDB8cCk+PSgwfGFbTT4+Ml0pKTspa1EobCwwfGFbKDB8YVtjPj4yXSkrKHA8PDIpPj4yXSxmKSxwPXArMXwwO2xlPUR9ZnVuY3Rpb24gU1EobCxj''@;'; put 'put ''LGYscCxtKXtjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBiLGssTSxELFIsRyxxLHBlLEE9MCx3PTAsZ2U9MDtmb3IocGU9bGUsbGU9bGUrMTA4OHwwLEQ9cGUrNTZ8MCxHPXBlKzQ4fDAsUj1wZSszMnwwLE09cGUrNjR8MCxiPStfWzI0KyhBPTB8YVsocT0xNisobHw9MCl8MCk+PjJdKT4+M10s''@;'; put 'put ''az0rX1tBKzQwPj4zXSxnZT0rX1tBKzMyPj4zXSxfWyh3PXBlKT4+M109K19bQSsxNj4+M10sX1t3Kzg+PjNdPWIsX1t3KzE2Pj4zXT1nZSxfW3crMjQ+PjNdPWssb28oTSwxMDI3NTQsdyksVmwobCxjLE0pLDAhPSgwfChBPTB8YVsxMisoMHxhW3E+PjJdKT4+Ml0pKSYmMCE9KDB8ZmVbYVtB''@;'; put 'put ''Pj4yXT4+MF0pJiYoZ2U9K19bQSs2ND4+M10sX1tSPj4zXT0rX1tBKzU2Pj4zXSxfW1IrOD4+M109Z2Usb28oTSwxMDI2OTUsUiksVmwobCxmLE0pLGdlPStfWzMyKyhBPTB8YVsxMisoMHxhW3E+PjJdKT4+Ml0pPj4zXSxfW0c+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqK19bQSsyND4+M10s''@;'; put 'put ''b28oTSwxMDI3NzQsRyksVmwobCxwLE0pLF9bRD4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCpnZSxvbyhNLDEwMjc3NCxEKSxWbChsLG0sTSkpLEE9MTshKCgwfEEpPigwfGFbMTgwKyh3PTB8YVtxPj4yXSk+PjJdKSk7KVNRKDB8YVsoMHxhW3crMTg0Pj4yXSkrKEE8PDIpPj4yXSxjLGYscCxt''@;'; put 'put ''KSxBPUErMXwwO2xlPXBlfWZ1bmN0aW9uIEU3KGwpe3ZhciBjO2M9bGUsbGU9bGUrMTZ8MCxDUShsfD0wLGMsYys0fDApLGxlPWN9ZnVuY3Rpb24geDcoKXtyZXR1cm4gMHxpcygyMDc0MCwwfGFbNDU4MV0pfWZ1bmN0aW9uIHl5KGwpe05sKGx8PTApfWZ1bmN0aW9uIE1RKGwsYyl7dmFyIGYs''@;'; put 'put ''cDtsfD0wLGY9bGUsbGU9bGUrMTZ8MCxhWyhwPWYpPj4yXT1hWyhjfD0wKT4+Ml0sYVtwKzQ+PjJdPWFbYys0Pj4yXSxjPTB8RVEocCksKDB8bWlbNjMmYVtsPj4yXV0obCxjLDEpKSE9KDB8YykmJkZ0KGMpLGxlPWZ9ZnVuY3Rpb24gRVEobCl7dmFyIGMsZixwO3JldHVybiBsfD0wLGM9MHx2''@;'; put 'put ''cigxNiksZj0wfGFbKHA9bCkrND4+Ml0sYVsobD1jKzh8MCk+PjJdPWFbcD4+Ml0sYVtsKzQ+PjJdPWYsMHxjfWZ1bmN0aW9uIGU0KGwsYyxmKXt2YXIgcCxtLEE7bHw9MCxmfD0wLHA9bGUsbGU9bGUrMTZ8MCxtPXArOHwwLGFbKEE9cCk+PjJdPWN8PTAsYVtBKzQ+PjJdPWYsYVttPj4yXT1h''@;'; put 'put ''W0E+PjJdLGFbbSs0Pj4yXT1hW0ErND4+Ml0sYz0wfEVRKG0pLCgwfG1pWzYzJmFbbD4+Ml1dKGwsYywxKSkhPSgwfGMpJiZGdChjKSxsZT1wfWZ1bmN0aW9uIGRhZShsLGMpe3ZhciBmLHAsbSxBO3JldHVybiBsfD0wLGY9bGUsbGU9bGUrMTZ8MCxtPTB8YVs0KyhBPWN8PTApPj4yXSxhWyhj''@;'; put 'put ''PShwPWYpKzh8MCk+PjJdPWFbQT4+Ml0sYVtjKzQ+PjJdPW0sYz0wIT0oMHxtaVs2MyZhW2w+PjJdXShsLHAsNCkpJjEsbGU9ZiwwfGN9ZnVuY3Rpb24geFEobCxjLGYpe3ZhciBwLG07cmV0dXJuIGx8PTAsZnw9MCxwPWxlLGxlPWxlKzE2fDAsYVsobT1wKSs4Pj4yXT1jfD0wLGFbbSsxMj4+''@;'; put 'put ''Ml09ZixmPTAhPSgwfG1pWzYzJmFbbD4+Ml1dKGwsbSw0KSkmMSxsZT1wLDB8Zn1mdW5jdGlvbiBUUShsKXtyZXR1cm4gMHxwdShsfD0wKX1mdW5jdGlvbiBJUShsKXt2YXIgZixjPTAscD0wLG09MCxBPTA7Zm9yKGM9Zj0wfHZyKCgwfHB1KGx8PTApKTw8MyksbD0wfHMwKGwpO2w7KW09MHxh''@;'; put 'put ''WzQrKEE9bCs4fDApPj4yXSxhWyhwPWMpPj4yXT1hW0E+PjJdLGFbcCs0Pj4yXT1tLGM9Yys4fDAsbD0wfGFbbD4+Ml07cmV0dXJuIDB8Zn1mdW5jdGlvbiB2YWUobCl7bWlbNjMmYVsobHw9MCk+PjJdXShsLDAsNjQpfWZ1bmN0aW9uIERRKGwsYyl7dmFyIHAsbSxBLHcsYixrLE0sUixxLHBl''@;'; put 'put ''LGdlLGJlLGY9MCxEPTAsRz0wO2ZvcihiZT1sZSxsZT1sZSsxNjB8MCxxPWJlKzE0NHwwLGY9YmUrNDh8MCxiPWJlKzEyOHwwLGs9YmUrMTEyfDAsTT1iZSs5NnwwLEQ9YmUrODB8MCxSPWJlKzMyfDAsRz1iZSsxNnwwLHBlPWJlLHA9K19bMTYrKGw9MHxhWyhnZT0xNisobHw9MCl8MCk+PjJd''@;'; put 'put ''KT4+M10sbT0rX1tsKzI0Pj4zXSxBPStfW2wrMzI+PjNdLHc9K19bbCs0MD4+M10sKChjfD0wKS0xfDApPj4+MDwyPyhKNihiLHAsdyksYVtxPj4yXT1hW2I+PjJdLGFbcSs0Pj4yXT1hW2IrND4+Ml0sYVtxKzg+PjJdPWFbYis4Pj4yXSxhW3ErMTI+PjJdPWFbYisxMj4+Ml0saWgoZixxKSxH''@;'; put 'put ''PWYrMTZ8MCxKNihrLEEsbSksYVtxPj4yXT1hW2s+PjJdLGFbcSs0Pj4yXT1hW2srND4+Ml0sYVtxKzg+PjJdPWFbays4Pj4yXSxhW3ErMTI+PjJdPWFbaysxMj4+Ml0saWgoTSxxKSxhW0c+PjJdPWFbTT4+Ml0sYVtHKzQ+PjJdPWFbTSs0Pj4yXSxhW0crOD4+Ml09YVtNKzg+PjJdLGFbRysx''@;'; put 'put ''Mj4+Ml09YVtNKzEyPj4yXSk6KEo2KEQscCxtKSxhW3E+PjJdPWFbRD4+Ml0sYVtxKzQ+PjJdPWFbRCs0Pj4yXSxhW3ErOD4+Ml09YVtEKzg+PjJdLGFbcSsxMj4+Ml09YVtEKzEyPj4yXSxpaChmLHEpLEQ9ZisxNnwwLEo2KFIsQSx3KSxhW3E+PjJdPWFbUj4+Ml0sYVtxKzQ+PjJdPWFbUis0''@;'; put 'put ''Pj4yXSxhW3ErOD4+Ml09YVtSKzg+PjJdLGFbcSsxMj4+Ml09YVtSKzEyPj4yXSxpaChHLHEpLGFbRD4+Ml09YVtHPj4yXSxhW0QrND4+Ml09YVtHKzQ+PjJdLGFbRCs4Pj4yXT1hW0crOD4+Ml0sYVtEKzEyPj4yXT1hW0crMTI+PjJdKSxhWyhsPTE2KygwfGFbZ2U+PjJdKXwwKT4+Ml09YVtm''@;'; put 'put ''Pj4yXSxhW2wrND4+Ml09YVtmKzQ+PjJdLGFbbCs4Pj4yXT1hW2YrOD4+Ml0sYVtsKzEyPj4yXT1hW2YrMTI+PjJdLGFbbCsxNj4+Ml09YVtmKzE2Pj4yXSxhW2wrMjA+PjJdPWFbZisyMD4+Ml0sYVtsKzI0Pj4yXT1hW2YrMjQ+PjJdLGFbbCsyOD4+Ml09YVtmKzI4Pj4yXSwobD0wfGFbMTIr''@;'; put 'put ''KDB8YVtnZT4+Ml0pPj4yXSkmJihhW3E+PjJdPWFbKGw9bCs1NnwwKT4+Ml0sYVtxKzQ+PjJdPWFbbCs0Pj4yXSxhW3ErOD4+Ml09YVtsKzg+PjJdLGFbcSsxMj4+Ml09YVtsKzEyPj4yXSxpaChwZSxxKSxhW2w+PjJdPWFbcGU+PjJdLGFbbCs0Pj4yXT1hW3BlKzQ+PjJdLGFbbCs4Pj4yXT1h''@;'; put 'put ''W3BlKzg+PjJdLGFbbCsxMj4+Ml09YVtwZSsxMj4+Ml0pLGw9MTshKCgwfGwpPigwfGFbMTgwKyhmPTB8YVtnZT4+Ml0pPj4yXSkpOylEUSgwfGFbKDB8YVtmKzE4ND4+Ml0pKyhsPDwyKT4+Ml0sYyksbD1sKzF8MDtsZT1iZX1mdW5jdGlvbiBKNihsLGMsZil7Zj0rZixfWyhsfD0wKT4+M109''@;'; put 'put ''Yz0rYyxfW2wrOD4+M109Zn1mdW5jdGlvbiBpaChsLGMpe2x8PTA7dmFyIGYsbSxBLHA9MDtmPWxlLGxlPWxlKzMyfDAscD1mLG09OTAqKDB8YVs0NzI2NV0pfDAsYVsoQT1mKzE2fDApPj4yXT1hWyhjfD0wKT4+Ml0sYVtBKzQ+PjJdPWFbYys0Pj4yXSxhW0ErOD4+Ml09YVtjKzg+PjJdLGFb''@;'; put 'put ''QSsxMj4+Ml09YVtjKzEyPj4yXSxVNihwLEEsbSksYVtjPj4yXT1hW3A+PjJdLGFbYys0Pj4yXT1hW3ArND4+Ml0sYVtjKzg+PjJdPWFbcCs4Pj4yXSxhW2MrMTI+PjJdPWFbcCsxMj4+Ml0sX1tjPj4zXT0rX1tjPj4zXS0rX1syMzMwM10sX1socD1jKzh8MCk+PjNdPStfW3A+PjNdLStfWzIz''@;'; put 'put ''MzA0XSxhW2w+PjJdPWFbYz4+Ml0sYVtsKzQ+PjJdPWFbYys0Pj4yXSxhW2wrOD4+Ml09YVtjKzg+PjJdLGFbbCsxMj4+Ml09YVtjKzEyPj4yXSxsZT1mfWZ1bmN0aW9uIFg2KGwsYyl7bHw9MCxjfD0wO3ZhciBELFIscSxwZSxnZSxMZSxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0w''@;'; put 'put ''LEc9MDtMZT1sZSxsZT1sZSsxMTY4fDAscGU9TGUrMTQ0fDAsRD1MZSszMnwwLFI9TGUrMTZ8MCxHPUxlLGFbKGdlPUxlKzQ4fDApPj4yXT0wLGFbZ2UrND4+Ml09MCxhW2dlKzg+PjJdPTAsYVtnZSsxMj4+Ml09MCxhWzQ3MjY1XT0zJihrPTB8YVsxMTYrKDB8YVsocT1sKzE2fDApPj4yXSk+''@;'; put 'put ''PjJdKSxmZVsxOTQ5NTddPWsmPTEsazw8MjQ+PjI0P0xRKGwpOk9RKGwpLGZ1bmN0aW9uIHlhZShsKXt2YXIgRCxPZSxMZSxSZSxIZSxWZSxxZSxydCxXZSxhdCxTdCxrdCxzdCxFdCxadCxjdCxidCxhbix1cixFcixmcixjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxSPTAs''@;'; put 'put ''Rz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxTbj0wLEhuPTA7aWYoZnI9bGUsbGU9bGUrNTQ0fDAsYnQ9ZnIrNTA0fDAsRXI9ZnIrNDE2fDAsY3Q9ZnIrMzUyfDAsWnQ9ZnIrMzEyfDAsRXQ9ZnIrMjg4fDAsc3Q9ZnIrMjQ4fDAsYW49ZnIrMjAwfDAscWU9ZnIrMTUyfDAsSG49ZnIrOTZ8MCxEPWZy''@;'; put 'put ''KzQ4OHwwLHJ0PWZyKzQ1NnwwLFdlPWZyKzQyNHwwLGF0PWZyKzM4NHwwLFN0PWZyKzM2MHwwLGt0PWZyKzMyMHwwLE9lPWZyKzI5NnwwLExlPWZyKzI1NnwwLFJlPWZyKzIzMnwwLEhlPWZyKzE2OHwwLFZlPWZyKzEzNnwwLGM9ZnIrNTZ8MCxTbj1mcisxNnwwLHVyPWZyLGY9MTQmaXRbMTM2''@;'; put 'put ''KyhnZT0wfGFbKE09MTYrKGx8PTApfDApPj4yXSk+PjFdLCEoMD09KDU0JihnZT0wfFh0W2dlKzExMz4+MF0pfDApJiYwPT0oMSZnZXwwKXwwIT0oMHxhWzQ3MTM5XSkpKXtmb3IoZ2U9Zjw8MTY+PjE2PT0wLGs9MHxEdChsKSxwPTAsQT0wLG09MDtrOyl7Zj0wfGFbMTA4KygwfGFbaysxNj4+''@;'; put 'put ''Ml0pPj4yXTtkb3tpZihmKXtpZigwfGZlW2YrODE+PjBdKXtwPXArMXwwO2JyZWFrfW09bSsxfDA7YnJlYWt9fXdoaWxlKDApO2ZvcihiPTB8dzAobCxrKSxmPUE7Yjspe0E9MHxhWzEwOCsodz0wfGFbYisxNj4+Ml0pPj4yXTtkb3tpZihBKXtpZigwfGZlW0ErODE+PjBdKXtwPXArMXwwO2Jy''@;'; put 'put ''ZWFrfWdlfHwoZj1mKygwIT0oMHxhW3crOD4+Ml0pJjEpfDApfX13aGlsZSgwKTtBPTB8YVt3KzEwMD4+Ml07ZG97aWYoQSl7aWYoMHxmZVtBKzgxPj4wXSl7cD1wKzF8MDticmVha31nZXx8KGY9ZisoMCE9KDB8YVt3Kzg+PjJdKSYxKXwwKX19d2hpbGUoMCk7QT0wfGFbdysxMDQ+PjJdO2Rv''@;'; put 'put ''e2lmKEEpe2lmKDB8ZmVbQSs4MT4+MF0pe3A9cCsxfDA7YnJlYWt9Z2V8fChmPWYrKDAhPSgwfGFbdys4Pj4yXSkmMSl8MCl9fXdoaWxlKDApO0E9MHxhW3crOTY+PjJdO2Rve2lmKEEpe2lmKDB8ZmVbQSs4MT4+MF0pe3A9cCsxfDA7YnJlYWt9Z2V8fChmPWYrKDAhPSgwfGFbdys4Pj4yXSkm''@;'; put 'put ''MSl8MCl9fXdoaWxlKDApO2I9MHxTMChsLGIpfWs9MHx6dChsLGspLEE9Zn1pZihNPTgmZmVbMTEzKygwfGFbTT4+Ml0pPj4wXT8wfGVOKGwpOjAsMHwocGU9QSttfDApKXtmb3IoRz0wfHZyKDQwKihSPXArQStNKygwfEdvKGwpKXwwKXwwKSxxPTB8dnIoNDAqcGV8MCksSjYoYW4sMjE0NzQ4''@;'; put 'put ''MzY0NywyMTQ3NDgzNjQ3KSxmPWFuKzE2fDAsSjYoRCwtMjE0NzQ4MzY0NywtMjE0NzQ4MzY0NyksYVtmPj4yXT1hW0Q+PjJdLGFbZis0Pj4yXT1hW0QrND4+Ml0sYVtmKzg+PjJdPWFbRCs4Pj4yXSxhW2YrMTI+PjJdPWFbRCsxMj4+Ml0sZj1xLG09RyxrPTB8RHQobCk7azspe2FbYnQ+PjJd''@;'; put 'put ''PWFbYW4+PjJdLGFbYnQrND4+Ml09YVthbis0Pj4yXSxhW2J0Kzg+PjJdPWFbYW4rOD4+Ml0sYVtidCsxMj4+Ml09YVthbisxMj4+Ml0sYVtidCsxNj4+Ml09YVthbisxNj4+Ml0sYVtidCsyMD4+Ml09YVthbisyMD4+Ml0sYVtidCsyND4+Ml09YVthbisyND4+Ml0sYVtidCsyOD4+Ml09YVth''@;'; put 'put ''bisyOD4+Ml0sX2FlKHJ0LGssbSxidCksYVthbj4+Ml09YVtydD4+Ml0sYVthbis0Pj4yXT1hW3J0KzQ+PjJdLGFbYW4rOD4+Ml09YVtydCs4Pj4yXSxhW2FuKzEyPj4yXT1hW3J0KzEyPj4yXSxhW2FuKzE2Pj4yXT1hW3J0KzE2Pj4yXSxhW2FuKzIwPj4yXT1hW3J0KzIwPj4yXSxhW2FuKzI0''@;'; put 'put ''Pj4yXT1hW3J0KzI0Pj4yXSxhW2FuKzI4Pj4yXT1hW3J0KzI4Pj4yXSxwPTB8YVsxMDgrKDB8YVtrKzE2Pj4yXSk+PjJdO2Rve2lmKHApe2lmKDB8ZmVbcCs4MT4+MF0pe209bSs0MHwwLGFbYnQ+PjJdPWFbYW4+PjJdLGFbYnQrND4+Ml09YVthbis0Pj4yXSxhW2J0Kzg+PjJdPWFbYW4rOD4+''@;'; put 'put ''Ml0sYVtidCsxMj4+Ml09YVthbisxMj4+Ml0sYVtidCsxNj4+Ml09YVthbisxNj4+Ml0sYVtidCsyMD4+Ml09YVthbisyMD4+Ml0sYVtidCsyND4+Ml09YVthbisyND4+Ml0sYVtidCsyOD4+Ml09YVthbisyOD4+Ml0sYnkoV2UscCxtLGJ0KSxhW2FuPj4yXT1hW1dlPj4yXSxhW2FuKzQ+PjJd''@;'; put 'put ''PWFbV2UrND4+Ml0sYVthbis4Pj4yXT1hW1dlKzg+PjJdLGFbYW4rMTI+PjJdPWFbV2UrMTI+PjJdLGFbYW4rMTY+PjJdPWFbV2UrMTY+PjJdLGFbYW4rMjA+PjJdPWFbV2UrMjA+PjJdLGFbYW4rMjQ+PjJdPWFbV2UrMjQ+PjJdLGFbYW4rMjg+PjJdPWFbV2UrMjg+PjJdO2JyZWFrfWFbYnQ+''@;'; put 'put ''PjJdPWFbcWU+PjJdLGFbYnQrND4+Ml09YVtxZSs0Pj4yXSxhW2J0Kzg+PjJdPWFbcWUrOD4+Ml0sYVtidCsxMj4+Ml09YVtxZSsxMj4+Ml0sZGsocCxtLGYsMCxidCksZj1mKzQwfDA7YnJlYWt9fXdoaWxlKDApO2ZvcihiPTB8dzAobCxrKSxtPW0rNDB8MDtiOyl7QT0wfGFbOTYrKHA9MHxh''@;'; put 'put ''Wyh3PWIrMTZ8MCk+PjJdKT4+Ml07ZTpkb3tpZihBKXtkb3tpZighKDB8ZmVbQSs4MT4+MF0pKXtpZighZ2UmJjB8YVtwKzg+PjJdKXt1SihTdCxsLGIpLGFbYnQ+PjJdPWFbU3Q+PjJdLGFbYnQrND4+Ml09YVtTdCs0Pj4yXSxhW2J0Kzg+PjJdPWFbU3QrOD4+Ml0sYVtidCsxMj4+Ml09YVtT''@;'; put 'put ''dCsxMj4+Ml0sZGsoQSxtLGYsMSxidCksZj1mKzQwfDA7YnJlYWt9YVtzdD4+Ml09YVtBPj4yXSwkcigwLDEwMzgyNyxzdCk7YnJlYWsgZX1hW2J0Pj4yXT1hW2FuPj4yXSxhW2J0KzQ+PjJdPWFbYW4rND4+Ml0sYVtidCs4Pj4yXT1hW2FuKzg+PjJdLGFbYnQrMTI+PjJdPWFbYW4rMTI+PjJd''@;'; put 'put ''LGFbYnQrMTY+PjJdPWFbYW4rMTY+PjJdLGFbYnQrMjA+PjJdPWFbYW4rMjA+PjJdLGFbYnQrMjQ+PjJdPWFbYW4rMjQ+PjJdLGFbYnQrMjg+PjJdPWFbYW4rMjg+PjJdLGJ5KGF0LEEsbSxidCksYVthbj4+Ml09YVthdD4+Ml0sYVthbis0Pj4yXT1hW2F0KzQ+PjJdLGFbYW4rOD4+Ml09YVth''@;'; put 'put ''dCs4Pj4yXSxhW2FuKzEyPj4yXT1hW2F0KzEyPj4yXSxhW2FuKzE2Pj4yXT1hW2F0KzE2Pj4yXSxhW2FuKzIwPj4yXT1hW2F0KzIwPj4yXSxhW2FuKzI0Pj4yXT1hW2F0KzI0Pj4yXSxhW2FuKzI4Pj4yXT1hW2F0KzI4Pj4yXX13aGlsZSgwKTttPW0rNDB8MCxwPTB8YVt3Pj4yXSxiZT01Mn1l''@;'; put 'put ''bHNlIGJlPTUyfXdoaWxlKDApO2U6ZG97aWYoNTI9PSgwfGJlKSl7aWYoYmU9MCxBPTB8YVtwKzEwND4+Ml0pe2Rve2lmKCEoMHxmZVtBKzgxPj4wXSkpe2lmKCFnZSYmMHxhW3ArOD4+Ml0pe0JRKE9lLGIpLGFbYnQ+PjJdPWFbT2U+PjJdLGFbYnQrND4+Ml09YVtPZSs0Pj4yXSxhW2J0Kzg+''@;'; put 'put ''PjJdPWFbT2UrOD4+Ml0sYVtidCsxMj4+Ml09YVtPZSsxMj4+Ml0sZGsoQSxtLGYsMSxidCksZj1mKzQwfDA7YnJlYWt9YVtFdD4+Ml09YVtBPj4yXSwkcigwLDEwMzg2MixFdCk7YnJlYWsgZX1hW2J0Pj4yXT1hW2FuPj4yXSxhW2J0KzQ+PjJdPWFbYW4rND4+Ml0sYVtidCs4Pj4yXT1hW2Fu''@;'; put 'put ''Kzg+PjJdLGFbYnQrMTI+PjJdPWFbYW4rMTI+PjJdLGFbYnQrMTY+PjJdPWFbYW4rMTY+PjJdLGFbYnQrMjA+PjJdPWFbYW4rMjA+PjJdLGFbYnQrMjQ+PjJdPWFbYW4rMjQ+PjJdLGFbYnQrMjg+PjJdPWFbYW4rMjg+PjJdLGJ5KGt0LEEsbSxidCksYVthbj4+Ml09YVtrdD4+Ml0sYVthbis0''@;'; put 'put ''Pj4yXT1hW2t0KzQ+PjJdLGFbYW4rOD4+Ml09YVtrdCs4Pj4yXSxhW2FuKzEyPj4yXT1hW2t0KzEyPj4yXSxhW2FuKzE2Pj4yXT1hW2t0KzE2Pj4yXSxhW2FuKzIwPj4yXT1hW2t0KzIwPj4yXSxhW2FuKzI0Pj4yXT1hW2t0KzI0Pj4yXSxhW2FuKzI4Pj4yXT1hW2t0KzI4Pj4yXX13aGlsZSgw''@;'; put 'put ''KTttPW0rNDB8MCxwPTB8YVt3Pj4yXX1pZihBPTB8YVtwKzEwMD4+Ml0pe2Rve2lmKCEoMHxmZVtBKzgxPj4wXSkpe2lmKCFnZSYmMHxhW3ArOD4+Ml0pe0NhZShSZSxiKSxhW2J0Pj4yXT1hW1JlPj4yXSxhW2J0KzQ+PjJdPWFbUmUrND4+Ml0sYVtidCs4Pj4yXT1hW1JlKzg+PjJdLGFbYnQr''@;'; put 'put ''MTI+PjJdPWFbUmUrMTI+PjJdLGRrKEEsbSxmLDEsYnQpLGY9Zis0MHwwO2JyZWFrfWFbWnQ+PjJdPWFbQT4+Ml0sJHIoMCwxMDM5MDIsWnQpO2JyZWFrIGV9YVtidD4+Ml09YVthbj4+Ml0sYVtidCs0Pj4yXT1hW2FuKzQ+PjJdLGFbYnQrOD4+Ml09YVthbis4Pj4yXSxhW2J0KzEyPj4yXT1h''@;'; put 'put ''W2FuKzEyPj4yXSxhW2J0KzE2Pj4yXT1hW2FuKzE2Pj4yXSxhW2J0KzIwPj4yXT1hW2FuKzIwPj4yXSxhW2J0KzI0Pj4yXT1hW2FuKzI0Pj4yXSxhW2J0KzI4Pj4yXT1hW2FuKzI4Pj4yXSxieShMZSxBLG0sYnQpLGFbYW4+PjJdPWFbTGU+PjJdLGFbYW4rND4+Ml09YVtMZSs0Pj4yXSxhW2Fu''@;'; put 'put ''Kzg+PjJdPWFbTGUrOD4+Ml0sYVthbisxMj4+Ml09YVtMZSsxMj4+Ml0sYVthbisxNj4+Ml09YVtMZSsxNj4+Ml0sYVthbisyMD4+Ml09YVtMZSsyMD4+Ml0sYVthbisyND4+Ml09YVtMZSsyND4+Ml0sYVthbisyOD4+Ml09YVtMZSsyOD4+Ml19d2hpbGUoMCk7bT1tKzQwfDAscD0wfGFbdz4+''@;'; put 'put ''Ml19aWYoQT0wfGFbcCsxMDg+PjJdKXtkb3tpZighKDB8ZmVbQSs4MT4+MF0pKXtpZighZ2UmJjB8YVtwKzg+PjJdKXt1SihWZSxsLGIpLGFbYnQ+PjJdPWFbVmU+PjJdLGFbYnQrND4+Ml09YVtWZSs0Pj4yXSxhW2J0Kzg+PjJdPWFbVmUrOD4+Ml0sYVtidCsxMj4+Ml09YVtWZSsxMj4+Ml0s''@;'; put 'put ''ZGsoQSxtLGYsMSxidCksZj1mKzQwfDA7YnJlYWt9YVtjdD4+Ml09YVtBPj4yXSwkcigwLDEwMzk0MixjdCk7YnJlYWsgZX1hW2J0Pj4yXT1hW2FuPj4yXSxhW2J0KzQ+PjJdPWFbYW4rND4+Ml0sYVtidCs4Pj4yXT1hW2FuKzg+PjJdLGFbYnQrMTI+PjJdPWFbYW4rMTI+PjJdLGFbYnQrMTY+''@;'; put 'put ''PjJdPWFbYW4rMTY+PjJdLGFbYnQrMjA+PjJdPWFbYW4rMjA+PjJdLGFbYnQrMjQ+PjJdPWFbYW4rMjQ+PjJdLGFbYnQrMjg+PjJdPWFbYW4rMjg+PjJdLGJ5KEhlLEEsbSxidCksYVthbj4+Ml09YVtIZT4+Ml0sYVthbis0Pj4yXT1hW0hlKzQ+PjJdLGFbYW4rOD4+Ml09YVtIZSs4Pj4yXSxh''@;'; put 'put ''W2FuKzEyPj4yXT1hW0hlKzEyPj4yXSxhW2FuKzE2Pj4yXT1hW0hlKzE2Pj4yXSxhW2FuKzIwPj4yXT1hW0hlKzIwPj4yXSxhW2FuKzI0Pj4yXT1hW0hlKzI0Pj4yXSxhW2FuKzI4Pj4yXT1hW0hlKzI4Pj4yXX13aGlsZSgwKTttPW0rNDB8MH19fXdoaWxlKDApO2I9MHxTMChsLGIpfWs9MHx6''@;'; put 'put ''dChsLGspfWlmKDB8TSl7YVtjPj4yXT1hW2FuPj4yXSxhW2MrND4+Ml09YVthbis0Pj4yXSxhW2MrOD4+Ml09YVthbis4Pj4yXSxhW2MrMTI+PjJdPWFbYW4rMTI+PjJdLGFbYysxNj4+Ml09YVthbisxNj4+Ml0sYVtjKzIwPj4yXT1hW2FuKzIwPj4yXSxhW2MrMjQ+PjJdPWFbYW4rMjQ+PjJd''@;'; put 'put ''LGFbYysyOD4+Ml09YVthbisyOD4+Ml0sYVtjKzMyPj4yXT1tLGY9KHA9YnQpKzQwfDA7ZG97YVtwPj4yXT1hW2M+PjJdLHA9cCs0fDAsYz1jKzR8MH13aGlsZSgoMHxwKTwoMHxmKSk7cGsoU24sbCxidCksYVthbj4+Ml09YVtTbj4+Ml0sYVthbis0Pj4yXT1hW1NuKzQ+PjJdLGFbYW4rOD4+''@;'; put 'put ''Ml09YVtTbis4Pj4yXSxhW2FuKzEyPj4yXT1hW1NuKzEyPj4yXSxhW2FuKzE2Pj4yXT1hW1NuKzE2Pj4yXSxhW2FuKzIwPj4yXT1hW1NuKzIwPj4yXSxhW2FuKzI0Pj4yXT1hW1NuKzI0Pj4yXSxhW2FuKzI4Pj4yXT1hW1NuKzI4Pj4yXX1mb3IoZmVbSG4rMzI+PjBdPTB8cEoobCwwfHNpKGws''@;'; put 'put ''MCwxMDM5NzgsMCksMSksYVtIbj4+Ml09YVthbj4+Ml0sYVtIbis0Pj4yXT1hW2FuKzQ+PjJdLGFbSG4rOD4+Ml09YVthbis4Pj4yXSxhW0huKzEyPj4yXT1hW2FuKzEyPj4yXSxhW0huKzE2Pj4yXT1hW2FuKzE2Pj4yXSxhW0huKzIwPj4yXT1hW2FuKzIwPj4yXSxhW0huKzI0Pj4yXT1hW2Fu''@;'; put 'put ''KzI0Pj4yXSxhW0huKzI4Pj4yXT1hW2FuKzI4Pj4yXSxmdW5jdGlvbiBJOShsLGMsZixwLG0pe3ZhciBSLEcscSxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MDtpZihxPWxlLGxlPWxlKzMyfDAsRz1xLFI9MHxmdW5jdGlvbiBfYihsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2''@;'; put 'put ''YXIgdyxBPTAsYj0wLGs9MDtBPTB8dnIoMjgpLGs9MHxpcygyNTkxMiwwfGFbNDU4NF0pLGFbKHc9QSsyMHwwKT4+Ml09aztkb3tpZihrKXtpZihrPTB8VmIoKSxhW0ErMjQ+PjJdPWssayl7YVtBPj4yXT1sLGFbQSs0Pj4yXT1jLGFbQSs4Pj4yXT1mLGFbQSsxMj4+Ml09cCxhW0ErMTY+PjJd''@;'; put 'put ''PW07YnJlYWt9Q3UoMTExNzQwLDE0LDEsMHxhWzE1NzEyXSksYj02O2JyZWFrfUN1KDExMTc0MCwxNCwxLDB8YVsxNTcxMl0pLGI9Nn13aGlsZSgwKTtyZXR1cm4gNj09KDB8YikmJigwfChsPTB8YVt3Pj4yXSkmJk5sKGwpLDB8KGw9MHxhW0ErMjQ+PjJdKSYmamIobCksRnQoQSksQT0wKSww''@;'; put 'put ''fEF9KGx8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCksZj0wfGZ1bmN0aW9uIGM2KGwpe3ZhciBjPTA7cmV0dXJuKDB8KGM9MHxmdW5jdGlvbiBEOShsKXt2YXIgZixwLG0sQSx3LGIsayxNLGM9MCxEPTAsUj0wLEc9MDtmb3IoTT1sZSxsZT1sZSszMnwwLGY9TSsyNHwwLHA9TSsxNnwwLG09TSxB''@;'; put 'put ''PTB8ZnVuY3Rpb24gSzIobCl7dmFyIGMsZjtyZXR1cm4gMSsoMHxmdW5jdGlvbiBtbShsKXt2YXIgYz0wLGY9MDtyZXR1cm4obHw9MCk/KGw9KGY9bD4+PjA+NjU1MzUpP2w+Pj4xNjpsLGY9Zj8xNjowLGY9KGM9bD4+PjA+MjU1KT84fGY6ZixmPShjPShsPWM/bD4+Pjg6bCk+Pj4wPjE1KT80''@;'; put 'put ''fGY6ZixsPSgoYz0obD1jP2w+Pj40OmwpPj4+MD4zKT8yfGY6ZikrKChjP2w+Pj4yOmwpPj4+MD4xJjEpfDApOmw9LTEsMHxsfSh+figoZj0rX1sxNisobD0wfGFbMTYrKGx8PTApPj4yXSk+PjNdKT4oYz0rX1tsKzI0Pj4zXSk/ZjpjKT4+PjApKXwwfShsfD0wKSx3PWwrNHwwLGI9cCs0fDAs''@;'; put 'put ''az1sKzIwfDAsYz0wOzspe2lmKCgwfGMpPj0oMHxhW3c+PjJdKSl7Yz0wO2JyZWFrfWlmKFI9MTIrKEQ9MHx2cigzMikpfDAsYVtEKzI4Pj4yXT1HPSgwfGFbbD4+Ml0pKyg0MCpjfDApfDAsazMobSxHKSxhW1I+PjJdPWFbbT4+Ml0sYVtSKzQ+PjJdPWFbbSs0Pj4yXSxhW1IrOD4+Ml09YVtt''@;'; put 'put ''Kzg+PjJdLGFbUisxMj4+Ml09YVttKzEyPj4yXSxhW3A+PjJdPSgoKDB8YVtEKzIwPj4yXSktKFI9MHxhW1I+PjJdKXwwKS8yfDApK1IsYVtiPj4yXT0oKCgwfGFbRCsyND4+Ml0pLShSPTB8YVtEKzE2Pj4yXSl8MCkvMnwwKStSLGFbZj4+Ml09YVtwPj4yXSxhW2YrND4+Ml09YVtwKzQ+PjJd''@;'; put 'put ''LGFbRCs4Pj4yXT0wfENiKGYsQSksISgwfG1pWzYzJmFbKFI9MHxhW2s+PjJdKT4+Ml1dKFIsRCwxKSkpe2M9LTE7YnJlYWt9Yz1jKzF8MH1yZXR1cm4gbGU9TSwwfGN9KGx8PTApKSk+PTAmJihmdW5jdGlvbiBYOChsKXt2YXIgYyxmLHA9MDtmb3IoYz0yNCsobHw9MCl8MCxsPTB8bWlbNjMm''@;'; put 'put ''YVsocD0wfGFbKGY9bCsyMHwwKT4+Ml0pPj4yXV0ocCwwLDEyOCk7bDspemIocD0wfGFbYz4+Ml0sbCsxMnwwLDB8YVtsKzI4Pj4yXSxwLDApLGw9MHxtaVs2MyZhWyhwPTB8YVtmPj4yXSk+PjJdXShwLGwsOCl9KGwpLGZ1bmN0aW9uIGY2KGwpe3ZhciBwLG0sYz0wLGY9MCxBPTAsdz0wO2Zv''@;'; put 'put ''cihtPTB8cHUoMHxhWyhwPTIwKyhsfD0wKXwwKT4+Ml0pLGY9MDswfHB1KDB8YVtwPj4yXSk7KXtpZighKGw9MHxhWzQrKDB8YVs4KyhBPTB8YVtwPj4yXSk+PjJdKT4+Ml0pKXt3PTg7YnJlYWt9aWYoIShsPSgwfChjPTB8YVs4KygwfGFbQSs0Pj4yXSk+PjJdKSk8MD8wfGFbbCs4Pj4yXTps''@;'; put 'put ''KygwLWMpfDApKXt3PTg7YnJlYWt9bWlbNjMmYVtBPj4yXV0oQSxsLDQwOTYpLEZ0KGwpLGY9ZisxfDB9OD09KDB8dykmJlByKDExMTY0OSwxMTE1NDMsNjE2LDExMTY1MiksKDB8bSkhPSgwfGYpJiZQcigxMTE2NjQsMTExNTQzLDYyMywxMTE2NTIpfShsKSxjPTB8TmwoMHxhW2wrMjA+PjJd''@;'; put 'put ''KSksMHxjfShSKSwoMHxmKT49MCl7Zm9yKE09RysxNnwwLEQ9RysyNHwwLGs9Rys4fDAsYj1tKzMyfDAsZj0wLG09MDshKCgwfG0pPj0oMHxjKSk7KXtwPWwrKDQwKm18MCkrMzJ8MDtkb3tpZigwfGFbcD4+Ml0pe2lmKGZFKEcsUixsKyg0MCptfDApfDApLEE9K19bTT4+M10sdz0rX1tEPj4z''@;'; put 'put ''XSwhKDB8YVtHPj4yXSkpe2ZlWzM2KygwfGFbcD4+Ml0pPj4wXT0xO2JyZWFrfWlmKDA9PStfW2s+PjNdKXtfWzE2KyhwPTB8YVtwPj4yXSk+PjNdPUEsX1twKzI0Pj4zXT13LGZlW3ArMzY+PjBdPTE7YnJlYWt9MT09KDB8ZmVbYj4+MF0pPyhfWzE2KyhwPTB8YVtwPj4yXSk+PjNdPUEsX1tw''@;'; put 'put ''KzI0Pj4zXT13LGZlW3ArMzY+PjBdPTEpOmY9MX19d2hpbGUoMCk7bT1tKzF8MH0hZnVuY3Rpb24geWMobCl7amIoMHxhWzI0KyhsfD0wKT4+Ml0pLEZ0KGwpfShSKX1yZXR1cm4gbGU9cSwwfGZ9KEcsUixxLHBlLEhuKSxjPTAsZj0wLHA9cTshKCgwfGYpPj0oMHxwZSkpOykwfGZlW3ArMzY+''@;'; put 'put ''PjBdJiYoZmVbODErKEhuPTB8YVtwKzMyPj4yXSk+PjBdPTEsU249SG4rNTZ8MCxrYWUodXIscCksYVtTbj4+Ml09YVt1cj4+Ml0sYVtTbis0Pj4yXT1hW3VyKzQ+PjJdLGFbU24rOD4+Ml09YVt1cis4Pj4yXSxhW1NuKzEyPj4yXT1hW3VyKzEyPj4yXSxuNChsLEhuKSxjPWMrMXwwKSxmPWYr''@;'; put 'put ''MXwwLHA9cCs0MHwwOygwfGMpIT0oMHxwZSkmJihhW0VyPj4yXT1jLGFbRXIrND4+Ml09cGUsJHIoMCwxMDQwMjMsRXIpKSxGdChHKSxGdChxKX19bGU9ZnJ9KGwpLGY9MHxhWzEyKyhrPTB8YVtxPj4yXSk+PjJdO2Rve2lmKDB8ZiYmMD09KDB8ZmVbZis4MT4+MF0pKXtpZihhW2dlPj4yXT1h''@;'; put 'put ''WyhtPWYrMjR8MCk+PjJdLGFbZ2UrND4+Ml09YVttKzQ+PjJdLGFbZ2UrOD4+Ml09YVttKzg+PjJdLGFbZ2UrMTI+PjJdPWFbbSsxMj4+Ml0sX1tnZT4+M109TT0rX1tnZT4+M10rMTYsX1sobT1nZSs4fDApPj4zXT1wPStfW20+PjNdKzgsbT0wIT0oMSZmZVtrKzI3NT4+MF0pLDB8ZmVbMTk0''@;'; put 'put ''OTU3XSl7aWYobT9fWyhBPWsrMzJ8MCk+PjNdPStfW0E+PjNdK3A6X1soQT1rKzE2fDApPj4zXT0rX1tBPj4zXS1wLCEoTT4oYj0ocD0rX1sobT1rKzQwfDApPj4zXSktKHc9K19bKEE9aysyNHwwKT4+M10pKSkpYnJlYWs7X1tBPj4zXT13LShNPS41KihNLWIpKSxfW20+PjNdPXArTTticmVh''@;'; put 'put ''a31BPTA9PSgwfGFbNDcyNjVdKTtkb3tpZihtKXtpZihBKXtfWyhBPWsrNDB8MCk+PjNdPStfW0E+PjNdK3A7YnJlYWt9X1soQT1rKzI0fDApPj4zXT0rX1tBPj4zXS1wO2JyZWFrfWlmKEEpe19bKEE9aysyNHwwKT4+M109K19bQT4+M10tcDticmVha31fWyhBPWsrNDB8MCk+PjNdPStfW0E+''@;'; put 'put ''PjNdK3A7YnJlYWt9d2hpbGUoMCk7TT4oYj0ocD0rX1sobT1rKzMyfDApPj4zXSktKHc9K19bKEE9aysxNnwwKT4+M10pKSYmKF9bQT4+M109dy0oTT0uNSooTS1iKSksX1ttPj4zXT1wK00pfX13aGlsZSgwKTtpZihjKXtzd2l0Y2goMHxhWzQ3MjY1XSl7Y2FzZSAwOmFbNDY2MDZdPWFbKEc9''@;'; put 'put ''aysxNnwwKT4+Ml0sYVs0NjYwN109YVtHKzQ+PjJdLGFbNDY2MDhdPWFbRys4Pj4yXSxhWzQ2NjA5XT1hW0crMTI+PjJdO2JyZWFrO2Nhc2UgMTpKNihELC0rX1trKzQwPj4zXSwrX1trKzE2Pj4zXSksYVs0NjYwNl09YVtEPj4yXSxhWzQ2NjA3XT1hW0QrND4+Ml0sYVs0NjYwOF09YVtEKzg+''@;'; put 'put ''PjJdLGFbNDY2MDldPWFbRCsxMj4+Ml07YnJlYWs7Y2FzZSAyOko2KFIsK19baysxNj4+M10sLStfW2srNDA+PjNdKSxhWzQ2NjA2XT1hW1I+PjJdLGFbNDY2MDddPWFbUis0Pj4yXSxhWzQ2NjA4XT1hW1IrOD4+Ml0sYVs0NjYwOV09YVtSKzEyPj4yXTticmVhaztjYXNlIDM6SjYoRywrX1tr''@;'; put 'put ''KzI0Pj4zXSwrX1trKzE2Pj4zXSksYVs0NjYwNl09YVtHPj4yXSxhWzQ2NjA3XT1hW0crND4+Ml0sYVs0NjYwOF09YVtHKzg+PjJdLGFbNDY2MDldPWFbRysxMj4+Ml19KGZ1bmN0aW9uIHdhZShsKXtsfD0wO3ZhciBwLG0sQSx3LGM9MCxmPTAsYj0wO2lmKHc9bGUsbGU9bGUrNDh8MCxwPXcr''@;'; put 'put ''MzJ8MCxtPXcrMTZ8MCxBPXcsMCE9K19bMjMzMDNdfDAhPStfWzIzMzA0XXwwIT0oMHxhWzQ3MjY1XSkpe2ZvcihmPTB8RHQobCk7ZjspezB8YVs0NzI2NV0mJlR5KGYsMCksYVtwPj4yXT1hWyhiPTE2KygwfGFbKGM9ZisxNnwwKT4+Ml0pfDApPj4yXSxhW3ArND4+Ml09YVtiKzQ+PjJdLGFb''@;'; put 'put ''cCs4Pj4yXT1hW2IrOD4+Ml0sYVtwKzEyPj4yXT1hW2IrMTI+PjJdLGloKG0scCksYVtiPj4yXT1hW20+PjJdLGFbYis0Pj4yXT1hW20rND4+Ml0sYVtiKzg+PjJdPWFbbSs4Pj4yXSxhW2IrMTI+PjJdPWFbbSsxMj4+Ml0sMHwoYz0wfGFbMTA4KygwfGFbYz4+Ml0pPj4yXSkmJihhW3A+PjJd''@;'; put 'put ''PWFbKGI9Yys1NnwwKT4+Ml0sYVtwKzQ+PjJdPWFbYis0Pj4yXSxhW3ArOD4+Ml09YVtiKzg+PjJdLGFbcCsxMj4+Ml09YVtiKzEyPj4yXSxpaChBLHApLGFbYj4+Ml09YVtBPj4yXSxhW2IrND4+Ml09YVtBKzQ+PjJdLGFbYis4Pj4yXT1hW0ErOD4+Ml0sYVtiKzEyPj4yXT1hW0ErMTI+PjJd''@;'; put 'put ''KTtlOmRve2lmKDE9PSgwfGFbNDcxMzhdKSlmb3IoYz0wfHcwKGwsZik7Oyl7aWYoIWMpYnJlYWsgZTtiYWUoYyksYz0wfFMwKGwsYyl9fXdoaWxlKDApO2Y9MHx6dChsLGYpfURRKGwsMyZhWzExNisoMHxhW2wrMTY+PjJdKT4+Ml0pfWxlPXd9KShsKSxmPTB8YVsxMisoMHxhW3E+PjJdKT4+''@;'; put 'put ''Ml19MHxmJiYwPT0oMHxmZVtmKzgxPj4wXSkmJihhW3BlPj4yXT1hW2dlPj4yXSxhW3BlKzQ+PjJdPWFbZ2UrND4+Ml0sYVtwZSs4Pj4yXT1hW2dlKzg+PjJdLGFbcGUrMTI+PjJdPWFbZ2UrMTI+PjJdLGZ1bmN0aW9uIFJRKGwsYyl7Y3w9MDt2YXIgbSxBLGY9MCxwPTAsdz0wO2w9KG09MHxm''@;'; put 'put ''ZVsyNzUrKHc9MHxhWyhBPTE2KyhsfD0wKXwwKT4+Ml0pPj4wXSk8PDI0Pj4yNDtkb3tpZighKDQmbCkpe2lmKGY9K19bdysxNj4+M10sMiZsKXtwPS41KitfW2M+PjNdK2Y7YnJlYWt9cD0uNSooK19bdyszMj4+M10rZik7YnJlYWt9cD0rX1t3KzMyPj4zXS0uNSorX1tjPj4zXX13aGlsZSgw''@;'; put 'put ''KTtmPTEmbT8rX1t3KzQwPj4zXS0uNSorX1tjKzg+PjNdOi41KitfW2MrOD4+M10rICtfW3crMjQ+PjNdLF9bNTYrKHc9MHxhW3crMTI+PjJdKT4+M109cCxfW3crNjQ+PjNdPWYsZmVbODErKDB8YVsxMisoMHxhW0E+PjJdKT4+Ml0pPj4wXT0xfShsLHBlKSksbGU9TGV9ZnVuY3Rpb24gTFEo''@;'; put 'put ''bCl7dmFyIHcsYz0wLGY9MCxwPTAsbT0wLEE9MDtpZih3PTE2KyhsfD0wKXwwLCgwfGRpKGwpKSE9KDB8bCkmJjAhPSgwfChBPTB8YVsxMisobT0wfGFbdz4+Ml0pPj4yXSkpJiYwPT0oMHxmZVtBKzgxPj4wXSkpezEmKGM9MHxmZVttKzI3NT4+MF0pPyhwPStfW20rMzI+PjNdLS41KitfW20r''@;'; put 'put ''NjQ+PjNdLGw9bSs3MnwwKToocD0rX1ttKzE2Pj4zXSsuNSorX1ttKzk2Pj4zXSxsPW0rMTA0fDApLGY9K19bbD4+M10sbD1jPDwyND4+MjQ7ZG97aWYoISg0JmwpKXtpZigyJmwpe2Y9K19bbSs0MD4+M10tLjUqZjticmVha31mPS41KigrX1ttKzQwPj4zXSsgK19bbSsyND4+M10pO2JyZWFr''@;'; put 'put ''fWY9K19bbSsyND4+M10rLjUqZn13aGlsZSgwKTtfW0ErNTY+PjNdPXAsX1tBKzY0Pj4zXT1mLGZlWzgxKygwfGFbMTIrKDB8YVt3Pj4yXSk+PjJdKT4+MF09MSxsPTF9ZWxzZSBsPTE7Zm9yKDshKCgwfGwpPigwfGFbMTgwKyhjPTB8YVt3Pj4yXSk+PjJdKSk7KUxRKDB8YVsoMHxhW2MrMTg0''@;'; put 'put ''Pj4yXSkrKGw8PDIpPj4yXSksbD1sKzF8MH1mdW5jdGlvbiBPUShsKXt2YXIgYixjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MDtpZihiPTE2KyhsfD0wKXwwLCgwfGRpKGwpKSE9KDB8bCkmJjAhPSgwfCh3PTB8YVsxMisoQT0wfGFbYj4+Ml0pPj4yXSkpJiYwPT0oMHxmZVt3KzgxPj4wXSkpezEm''@;'; put 'put ''KGM9MHxmZVtBKzI3NT4+MF0pPyhtPStfW0ErNDA+PjNdLS41KitfW0ErODg+PjNdLGw9QSs4MHwwKToobT0rX1tBKzI0Pj4zXSsuNSorX1tBKzU2Pj4zXSxsPUErNDh8MCkscD0rX1tsPj4zXSxsPWM8PDI0Pj4yNDtkb3tpZighKDQmbCkpe2lmKGY9K19bQSsxNj4+M10sMiZsKXtmKz0uNSpw''@;'; put 'put ''O2JyZWFrfWY9LjUqKCtfW0ErMzI+PjNdK2YpO2JyZWFrfWY9K19bQSszMj4+M10tLjUqcH13aGlsZSgwKTtfW3crNTY+PjNdPWYsX1t3KzY0Pj4zXT1tLGZlWzgxKygwfGFbMTIrKDB8YVtiPj4yXSk+PjJdKT4+MF09MSxsPTF9ZWxzZSBsPTE7Zm9yKDshKCgwfGwpPigwfGFbMTgwKyhjPTB8''@;'; put 'put ''YVtiPj4yXSk+PjJdKSk7KU9RKDB8YVsoMHxhW2MrMTg0Pj4yXSkrKGw8PDIpPj4yXSksbD1sKzF8MH1mdW5jdGlvbiBiYWUobCl7dmFyIHcsYixrLE0sRCxSLEcsZ2UsYz0wLGY9MCxwPTAsbT0wLEE9MCxxPTAscGU9MCxiZT0wO2lmKGdlPWxlLGxlPWxlKzE0NHwwLHE9Z2UrMTIwfDAsZj1n''@;'; put 'put ''ZSsxNnwwLHc9Z2UrMTA0fDAsYj1nZSs4OHwwLGs9Z2UrNzJ8MCxNPWdlKzU2fDAsRD1nZSs0MHwwLFI9Z2UrMjR8MCxwZT1nZSxwPTB8YVs4KyhjPTB8YVsoRz0xNisobHw9MCl8MCk+PjJdKT4+Ml0pe2ZvcihBPTAsbD1wOyEoKDB8QSk+PSgwfGFbbCs0Pj4yXSkpOyl7Zm9yKGw9MHxhWyht''@;'; put 'put ''PTB8YVtsPj4yXSkrKDQ4KkF8MCk+PjJdLGY9MHxhW20rKDQ4KkF8MCkrND4+Ml0scD0wfGFbbSsoNDgqQXwwKSs4Pj4yXSxtPTB8YVttKyg0OCpBfDApKzEyPj4yXSxjPTA7ISgoMHxjKT49KDB8ZikpOylhW3E+PjJdPWFbKGJlPWwrKGM8PDQpfDApPj4yXSxhW3ErND4+Ml09YVtiZSs0Pj4y''@;'; put 'put ''XSxhW3ErOD4+Ml09YVtiZSs4Pj4yXSxhW3ErMTI+PjJdPWFbYmUrMTI+PjJdLGloKHcscSksYVtiZT4+Ml09YVt3Pj4yXSxhW2JlKzQ+PjJdPWFbdys0Pj4yXSxhW2JlKzg+PjJdPWFbdys4Pj4yXSxhW2JlKzEyPj4yXT1hW3crMTI+PjJdLGM9YysxfDA7MHxwJiYoYVtxPj4yXT1hWyhiZT0o''@;'; put 'put ''MHxhW2FbOCsoMHxhW0c+PjJdKT4+Ml0+PjJdKSsoNDgqQXwwKSsxNnwwKT4+Ml0sYVtxKzQ+PjJdPWFbYmUrND4+Ml0sYVtxKzg+PjJdPWFbYmUrOD4+Ml0sYVtxKzEyPj4yXT1hW2JlKzEyPj4yXSxpaChiLHEpLGFbYmU+PjJdPWFbYj4+Ml0sYVtiZSs0Pj4yXT1hW2IrND4+Ml0sYVtiZSs4''@;'; put 'put ''Pj4yXT1hW2IrOD4+Ml0sYVtiZSsxMj4+Ml09YVtiKzEyPj4yXSksMHxtJiYoYVtxPj4yXT1hWyhiZT0oMHxhW2FbOCsoMHxhW0c+PjJdKT4+Ml0+PjJdKSsoNDgqQXwwKSszMnwwKT4+Ml0sYVtxKzQ+PjJdPWFbYmUrND4+Ml0sYVtxKzg+PjJdPWFbYmUrOD4+Ml0sYVtxKzEyPj4yXT1hW2Jl''@;'; put 'put ''KzEyPj4yXSxpaChrLHEpLGFbYmU+PjJdPWFbaz4+Ml0sYVtiZSs0Pj4yXT1hW2srND4+Ml0sYVtiZSs4Pj4yXT1hW2srOD4+Ml0sYVtiZSsxMj4+Ml09YVtrKzEyPj4yXSksQT1BKzF8MCxsPTB8YVs4KyhjPTB8YVtHPj4yXSk+PjJdfShsPTB8YVtjKzk2Pj4yXSkmJihhW3E+PjJdPWFbKGM9''@;'; put 'put ''bCs1NnwwKT4+Ml0sYVtxKzQ+PjJdPWFbYys0Pj4yXSxhW3ErOD4+Ml09YVtjKzg+PjJdLGFbcSsxMj4+Ml09YVtjKzEyPj4yXSxpaChNLHEpLGFbYz4+Ml09YVtNPj4yXSxhW2MrND4+Ml09YVtNKzQ+PjJdLGFbYys4Pj4yXT1hW00rOD4+Ml0sYVtjKzEyPj4yXT1hW00rMTI+PjJdLGM9MHxh''@;'; put 'put ''W0c+PjJdKSwobD0wfGFbYysxMDg+PjJdKSYmKGFbcT4+Ml09YVsoYz1sKzU2fDApPj4yXSxhW3ErND4+Ml09YVtjKzQ+PjJdLGFbcSs4Pj4yXT1hW2MrOD4+Ml0sYVtxKzEyPj4yXT1hW2MrMTI+PjJdLGloKEQscSksYVtjPj4yXT1hW0Q+PjJdLGFbYys0Pj4yXT1hW0QrND4+Ml0sYVtjKzg+''@;'; put 'put ''PjJdPWFbRCs4Pj4yXSxhW2MrMTI+PjJdPWFbRCsxMj4+Ml0sYz0wfGFbRz4+Ml0pLChsPTB8YVtjKzEwMD4+Ml0pJiYoYVtxPj4yXT1hWyhjPWwrNTZ8MCk+PjJdLGFbcSs0Pj4yXT1hW2MrND4+Ml0sYVtxKzg+PjJdPWFbYys4Pj4yXSxhW3ErMTI+PjJdPWFbYysxMj4+Ml0saWgoUixxKSxh''@;'; put 'put ''W2M+PjJdPWFbUj4+Ml0sYVtjKzQ+PjJdPWFbUis0Pj4yXSxhW2MrOD4+Ml09YVtSKzg+PjJdLGFbYysxMj4+Ml09YVtSKzEyPj4yXSxjPTB8YVtHPj4yXSksMHwoYz0wfGFbYysxMDQ+PjJdKSYmKGFbcT4+Ml09YVsoYmU9Yys1NnwwKT4+Ml0sYVtxKzQ+PjJdPWFbYmUrND4+Ml0sYVtxKzg+''@;'; put 'put ''PjJdPWFbYmUrOD4+Ml0sYVtxKzEyPj4yXT1hW2JlKzEyPj4yXSxpaChwZSxxKSxhW2JlPj4yXT1hW3BlPj4yXSxhW2JlKzQ+PjJdPWFbcGUrND4+Ml0sYVtiZSs4Pj4yXT1hW3BlKzg+PjJdLGFbYmUrMTI+PjJdPWFbcGUrMTI+PjJdKX1lbHNlIDA9PSgwfGZlWzE5NDk1NF0pJiY2IT0oMHxm''@;'; put 'put ''ZVtjKzExMj4+MF0pJiYocT0wfHRpKDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOmwrNDh8MCkrNDA+PjJdKSxwZT0wfHRpKDB8YVsoMj09KDMmYVtsPj4yXXwwKT9sOmwrLTQ4fDApKzQwPj4yXSksYVtmPj4yXT1xLGFbZis0Pj4yXT1wZSwkcigxLDEwMzgxMCxmKSk7bGU9Z2V9ZnVuY3Rpb24g''@;'; put 'put ''ZU4obCl7dmFyIHAsYz0wLGY9MDtmb3IocD0xNisobHw9MCl8MCwoMHxkaShsKSkhPSgwfGwpJiYwIT0oMHwoYz0wfGFbMTIrKDB8YVtwPj4yXSk+PjJdKSk/KGY9MSxsPTAhPSgwfGZlW2MrODE+PjBdKSYxKTooZj0xLGw9MCk7ISgoMHxmKT4oMHxhWzE4MCsoYz0wfGFbcD4+Ml0pPj4yXSkp''@;'; put 'put ''OyljPSgwfGVOKDB8YVsoMHxhW2MrMTg0Pj4yXSkrKGY8PDIpPj4yXSkpK2x8MCxmPWYrMXwwLGw9YztyZXR1cm4gMHxsfWZ1bmN0aW9uIF9hZShsLGMsZixwKXt2YXIgbSxBLHcsYixrLE07bHw9MCxwfD0wLG09bGUsbGU9bGUrMzJ8MCxBPW0saz0wfGFbKGM9MTYrKGN8PTApfDApPj4yXSxf''@;'; put 'put ''WzE2KyhmfD0wKT4+M109NzIqKGI9K19bKChNPTA9PSgwfGZlWzE5NDk1N10pKT9rKzMyfDA6ays0MHwwKT4+M10pLF9bZisyND4+M109NzIqKHc9K19bKE0/ays0MHwwOmsrMzJ8MCk+PjNdKSxhW2Y+PjJdPWFbKGM9MTYrKDB8YVtjPj4yXSl8MCk+PjJdLGFbZis0Pj4yXT1hW2MrND4+Ml0s''@;'; put 'put ''YVtmKzg+PjJdPWFbYys4Pj4yXSxhW2YrMTI+PjJdPWFbYysxMj4+Ml0sX1tmPj4zXT0rX1tmPj4zXS0zNipiLF9bKGM9Zis4fDApPj4zXT0rX1tjPj4zXS0zNip3LGFbQT4+Ml09YVtwPj4yXSxhW0ErND4+Ml09YVtwKzQ+PjJdLGFbQSs4Pj4yXT1hW3ArOD4+Ml0sYVtBKzEyPj4yXT1hW3Ar''@;'; put 'put ''MTI+PjJdLGFbQSsxNj4+Ml09YVtwKzE2Pj4yXSxhW0ErMjA+PjJdPWFbcCsyMD4+Ml0sYVtBKzI0Pj4yXT1hW3ArMjQ+PjJdLGFbQSsyOD4+Ml09YVtwKzI4Pj4yXSxQUShsLGYsQSksbGU9bX1mdW5jdGlvbiBieShsLGMsZixwKXt2YXIgbSxBLHcsYixrLE07bHw9MCxwfD0wLG09bGUsbGU9''@;'; put 'put ''bGUrMzJ8MCxBPW0saz0yNCsoY3w9MCl8MCxfWzE2KyhmfD0wKT4+M109Yj0rX1soKE09MD09KDB8ZmVbMTk0OTU3XSkpP2s6YyszMnwwKT4+M10sX1tmKzI0Pj4zXT13PStfWyhNP2MrMzJ8MDprKT4+M10sYVtmPj4yXT1hWyhjPWMrNTZ8MCk+PjJdLGFbZis0Pj4yXT1hW2MrND4+Ml0sYVtm''@;'; put 'put ''Kzg+PjJdPWFbYys4Pj4yXSxhW2YrMTI+PjJdPWFbYysxMj4+Ml0sX1tmPj4zXT0rX1tmPj4zXS0uNSpiLF9bKGM9Zis4fDApPj4zXT0rX1tjPj4zXS0uNSp3LGFbQT4+Ml09YVtwPj4yXSxhW0ErND4+Ml09YVtwKzQ+PjJdLGFbQSs4Pj4yXT1hW3ArOD4+Ml0sYVtBKzEyPj4yXT1hW3ArMTI+''@;'; put 'put ''PjJdLGFbQSsxNj4+Ml09YVtwKzE2Pj4yXSxhW0ErMjA+PjJdPWFbcCsyMD4+Ml0sYVtBKzI0Pj4yXT1hW3ArMjQ+PjJdLGFbQSsyOD4+Ml09YVtwKzI4Pj4yXSxQUShsLGYsQSksbGU9bX1mdW5jdGlvbiBkayhsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLG18PTAsMHwocHw9MCkmJihhWyhw''@;'; put 'put ''PWMrMTZ8MCk+PjJdPTAsYVtwKzQ+PjJdPTAsYVtwKzg+PjJdPTAsYVtwKzEyPj4yXT0wLGFbYz4+Ml09YVttPj4yXSxhW2MrND4+Ml09YVttKzQ+PjJdLGFbYys4Pj4yXT1hW20rOD4+Ml0sYVtjKzEyPj4yXT1hW20rMTI+PjJdKSwwfGZlWzE5NDk1N10/KF9bZj4+M109K19bbCszMj4+M10s''@;'; put 'put ''X1tmKzg+PjNdPStfW2wrMjQ+PjNdKTooYVtmPj4yXT1hWyhtPWwrMjR8MCk+PjJdLGFbZis0Pj4yXT1hW20rND4+Ml0sYVtmKzg+PjJdPWFbbSs4Pj4yXSxhW2YrMTI+PjJdPWFbbSsxMj4+Ml0pLGFbZiszMj4+Ml09bCxmZVtmKzM2Pj4wXT0wLGFbYyszMj4+Ml09Zn1mdW5jdGlvbiBCUShs''@;'; put 'put ''LGMpe2x8PTAsYz0wfFQ3KGN8PTApO2Rve2lmKGMpe2lmKDB8YVs4KyhjPTB8YVtjPj4yXSk+PjJdKXthW2w+PjJdPWFbKGM9YysxNnwwKT4+Ml0sYVtsKzQ+PjJdPWFbYys0Pj4yXSxhW2wrOD4+Ml09YVtjKzg+PjJdLGFbbCsxMj4+Ml09YVtjKzEyPj4yXTticmVha31hW2w+PjJdPWFbKGM9''@;'; put 'put ''MHxhW2M+PjJdKT4+Ml0sYVtsKzQ+PjJdPWFbYys0Pj4yXSxhW2wrOD4+Ml09YVtjKzg+PjJdLGFbbCsxMj4+Ml09YVtjKzEyPj4yXTticmVha31hW2w+PjJdPTAsYVtsKzQ+PjJdPTAsYVtsKzg+PjJdPTAsYVtsKzEyPj4yXT0wfXdoaWxlKDApfWZ1bmN0aW9uIENhZShsLGMpe2x8PTA7dmFy''@;'; put 'put ''IGY9MDtjPTB8VDcoY3w9MCk7ZG97aWYoYyl7aWYoMHxhWyhmPTB8YVtjPj4yXSkrKDQ4KihjPSgwfGFbYys0Pj4yXSktMXwwKXwwKSsxMj4+Ml0pe2FbbD4+Ml09YVsoZj1mKyg0OCpjfDApKzMyfDApPj4yXSxhW2wrND4+Ml09YVtmKzQ+PjJdLGFbbCs4Pj4yXT1hW2YrOD4+Ml0sYVtsKzEy''@;'; put 'put ''Pj4yXT1hW2YrMTI+PjJdO2JyZWFrfWFbbD4+Ml09YVsoZj0oMHxhW2YrKDQ4KmN8MCk+PjJdKSsoKDB8YVtmKyg0OCpjfDApKzQ+PjJdKS0xPDw0KXwwKT4+Ml0sYVtsKzQ+PjJdPWFbZis0Pj4yXSxhW2wrOD4+Ml09YVtmKzg+PjJdLGFbbCsxMj4+Ml09YVtmKzEyPj4yXTticmVha31hW2w+''@;'; put 'put ''PjJdPTAsYVtsKzQ+PjJdPTAsYVtsKzg+PjJdPTAsYVtsKzEyPj4yXT0wfXdoaWxlKDApfWZ1bmN0aW9uIHBrKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIGssUixxLHA9MCxtPTAsQT0wLHc9MCxiPTAsTT0wLEQ9MCxHPTA7Zm9yKHE9bGUsbGU9bGUrMTEyfDAsaz1xKzcyfDAsRD1xKzMyfDAsUj1x''@;'; put 'put ''LEc9MTYrKGN8PTApfDAsYj0xOyEoKDB8Yik+KDB8YVsxODArKHA9MHxhW0c+PjJdKT4+Ml0pKTspe3A9MHxhWygwfGFbcCsxODQ+PjJdKSsoYjw8Mik+PjJdLEE9Zix3PShtPWspKzQwfDA7ZG97YVttPj4yXT1hW0E+PjJdLG09bSs0fDAsQT1BKzR8MH13aGlsZSgoMHxtKTwoMHx3KSk7cGso''@;'; put 'put ''RCxwLGspLEE9RCx3PShtPWYpKzQwfDA7ZG97YVttPj4yXT1hW0E+PjJdLG09bSs0fDAsQT1BKzR8MH13aGlsZSgoMHxtKTwoMHx3KSk7Yj1iKzF8MH0oMHxkaShjKSkhPSgwfGMpJiYwfChNPTB8YVsxMisoMHxhW0c+PjJdKT4+Ml0pJiYwfGZlW00rODE+PjBdJiYoRD0wfGFbKEc9ZiszMnww''@;'; put 'put ''KT4+Ml0sYVtrPj4yXT1hW2Y+PjJdLGFbays0Pj4yXT1hW2YrND4+Ml0sYVtrKzg+PjJdPWFbZis4Pj4yXSxhW2srMTI+PjJdPWFbZisxMj4+Ml0sYVtrKzE2Pj4yXT1hW2YrMTY+PjJdLGFbaysyMD4+Ml09YVtmKzIwPj4yXSxhW2srMjQ+PjJdPWFbZisyND4+Ml0sYVtrKzI4Pj4yXT1hW2Yr''@;'; put 'put ''Mjg+PjJdLGJ5KFIsTSxELGspLGFbZj4+Ml09YVtSPj4yXSxhW2YrND4+Ml09YVtSKzQ+PjJdLGFbZis4Pj4yXT1hW1IrOD4+Ml0sYVtmKzEyPj4yXT1hW1IrMTI+PjJdLGFbZisxNj4+Ml09YVtSKzE2Pj4yXSxhW2YrMjA+PjJdPWFbUisyMD4+Ml0sYVtmKzI0Pj4yXT1hW1IrMjQ+PjJdLGFb''@;'; put 'put ''ZisyOD4+Ml09YVtSKzI4Pj4yXSxhW0c+PjJdPTQwKygwfGFbRz4+Ml0pKSxBPWYsdz0obT1sKSs0MHwwO2Rve2FbbT4+Ml09YVtBPj4yXSxtPW0rNHwwLEE9QSs0fDB9d2hpbGUoKDB8bSk8KDB8dykpO2xlPXF9ZnVuY3Rpb24ga2FlKGwsYyl7dmFyIGY7Zj0uNSorX1s4KyhjfD0wKT4+M10r''@;'; put 'put ''ICtfW2MrMjQ+PjNdLF9bKGx8PTApPj4zXT0uNSorX1tjPj4zXSsgK19bYysxNj4+M10sX1tsKzg+PjNdPWZ9ZnVuY3Rpb24gUFEobCxjLGYpe2x8PTA7dmFyIHAsbSxBPTAsdz0wLGI9MDtwPWxlLGxlPWxlKzE2fDAsbT1wLF9bKGZ8PTApPj4zXT0rX1soK19bZj4+M108KGI9K19bKGN8PTAp''@;'; put 'put ''Pj4zXSk/ZjpjKT4+M10sX1soQT1mKzh8MCk+PjNdPStfWygrX1tBPj4zXTwodz0rX1tjKzg+PjNdKT9mOmMpKzg+PjNdLF9bbT4+M109Yj0rX1tjKzE2Pj4zXStiLF9bbSs4Pj4zXT13PStfW2MrMjQ+PjNdK3csX1soQT1mKzE2fDApPj4zXT0rX1soK19bQT4+M10+Yj9BOm0pPj4zXSxfWyhj''@;'; put 'put ''PWYrMjR8MCk+PjNdPStfWygrX1tjPj4zXT53P0E6bSkrOD4+M10sYVtsPj4yXT1hW2Y+PjJdLGFbbCs0Pj4yXT1hW2YrND4+Ml0sYVtsKzg+PjJdPWFbZis4Pj4yXSxhW2wrMTI+PjJdPWFbZisxMj4+Ml0sYVtsKzE2Pj4yXT1hW2YrMTY+PjJdLGFbbCsyMD4+Ml09YVtmKzIwPj4yXSxhW2wr''@;'; put 'put ''MjQ+PjJdPWFbZisyND4+Ml0sYVtsKzI4Pj4yXT1hW2YrMjg+PjJdLGxlPXB9ZnVuY3Rpb24gdDQobCl7WDYobHw9MCwxKX1mdW5jdGlvbiB0TihsLGMsZil7bHw9MCxmfD0wO3ZhciBiLGssTSxELHA9MCxtPTAsQT0wLHc9MDtEPWxlLGxlPWxlKzE2fDAsTT1EKzh8MCxrPUQsYj0wIT0oMHwo''@;'; put 'put ''Y3w9MCkpO2U6ZG97aWYoYil7QT0wLHA9MDt0OmZvcig7Oylmb3IoOzspe2lmKEEpYnJlYWsgZTtpZighKG09MHxhW2MrKHA8PDIpPj4yXSkpe3c9NjticmVhayBlfWlmKHA9cCsxfDAsISgwfGZlW20+PjBdKSl7QT0xO2NvbnRpbnVlIHR9fX1lbHNlIHc9Nn13aGlsZSgwKTtlOmRve2lmKDY9''@;'; put 'put ''PSgwfHcpKWZvcig7Oyl7aWYoIShwPTB8YVtmPj4yXSkpYnJlYWsgZTtFbihsLHApLEVuKGwsMTUzNTk5KSxmPWYrNHwwLHc9Nn19d2hpbGUoMCk7ZTpkb3tpZihiKWZvcihBPTA7Oyl7aWYoIShwPTB8YVtjKyhBPDwyKT4+Ml0pKWJyZWFrIGU7ZG97aWYoMHxmZVtwPj4wXSl7aWYoIShmPTB8''@;'; put 'put ''ZEQocCkpKXthW2s+PjJdPXAsJHIoMCwxMDQzODQsayk7YnJlYWt9aWYoIShtPTB8blMoZiwxMzg4MjEpKSl7YVtNPj4yXT1mLCRyKDAsMTA0NDEyLE0pO2JyZWFrfWZvcig7cD0wfF9sZShtKTspRW4obCxwKTtFbihsLDE1MzU5OSksdHcobSl9fXdoaWxlKDApO0E9QSsxfDB9fXdoaWxlKDAp''@;'; put 'put ''O2xlPUR9ZnVuY3Rpb24gTlEobCxjKXtsfD0wO3ZhciBmPTAscD0wLG09MDtjPTB8YVs1MisoY3w9MCk+PjJdO2U6Zm9yKDs7KXtmPTB8ZmVbYz4+MF07dDpkb3tzd2l0Y2goZjw8MjQ+PjI0KXtjYXNlIDA6YnJlYWsgZTtjYXNlIDM3OmlmKDM3PT0oMHxmZVtjKzE+PjBdKSl7aWYoMCE9KDB8''@;'; put 'put ''bDQoZj1jKzJ8MCwxMDQ0NDAsMykpJiYwIT0oMHxsNChmLDEwNDQ0NCw1KSkmJjAhPSgwfGw0KGYsMTA0NDUwLDMpKSYmMCE9KDB8bDQoZiwxMDQ0NTQsNykpKXtmPTM3O2JyZWFrIHR9bT0zNztuOmZvcig7Oyl7c3dpdGNoKG08PDI0Pj4yNCl7Y2FzZSAxMzpwPTEwO2JyZWFrIG47Y2FzZSAx''@;'; put 'put ''MDpjYXNlIDA6cD0xMjticmVhayBufWM9bT1jKzF8MCxtPTB8ZmVbbT4+MF19aWYoMTA9PSgwfHApKXtpZigxMD09KDB8ZmVbKGY9YysxfDApPj4wXSkpe2M9YysyfDA7Y29udGludWUgZX19ZWxzZSAxMj09KDB8cCkmJihmPWMrMXwwKTtjPW08PDI0Pj4yND09MD9jOmY7Y29udGludWUgZX1m''@;'; put 'put ''PTM3fX13aGlsZSgwKTt0OmZvcig7Oyl7c3dpdGNoKGY8PDI0Pj4yNCl7Y2FzZSAxMDpjYXNlIDEzOmNhc2UgMDpicmVhayB0fWlGKGwsZjw8MjQ+PjI0KSxjPW09YysxfDAsZj0wfGZlW20+PjBdfXA9YysxfDAsYz1mPDwyND4+MjQ9PTEzJiYxMD09KDB8ZmVbcD4+MF0pP2MrMnwwOmY8PDI0''@;'; put 'put ''Pj4yND09MD9jOnAsaUYobCwxMCl9fWZ1bmN0aW9uIG5OKGwsYyl7bHw9MCxjfD0wO3ZhciBtLGY9MCxwPTAsQT0wO209bGUsbGU9bGUrMTZ8MCxmPW07ZTpkb3tzd2l0Y2goMHxjKXtjYXNlIDA6cD1sO2JyZWFrO2Nhc2UgMTpwPTB8Q0oobCk7YnJlYWs7ZGVmYXVsdDpzd2l0Y2goMHx4YWUo''@;'; put 'put ''bCkpe2Nhc2UgMjpicmVhaztjYXNlIDE6cD0wfENKKGwpO2JyZWFrIGU7ZGVmYXVsdDpwPWw7YnJlYWsgZX0wfGFbNDcyNjhdfHwoJHIoMCwxMDQ1MjUsZiksYVs0NzI2OF09MSkscD1sfX13aGlsZSgwKTswfGFbNDcyNjldfHx1cygxODkwNzYsMCwwKSwoYz0wfGFbNDcyNzBdKT4+PjA+PSgw''@;'; put 'put ''fGFbNDcyNzFdKT4+PjAmJihRMCgxODkwNzYsMSksYz0wfGFbNDcyNzBdKSxhWzQ3MjcwXT1jKzEsZmVbYz4+MF09NDAsZj1wO2U6Zm9yKDs7KXtzd2l0Y2goMHxmZVtmPj4wXSl7Y2FzZSAwOmJyZWFrIGU7Y2FzZSA5MjpjYXNlIDQxOmNhc2UgNDA6KGM9MHxhWzQ3MjcwXSk+Pj4wPj0oMHxh''@;'; put 'put ''WzQ3MjcxXSk+Pj4wJiYoUTAoMTg5MDc2LDEpLGM9MHxhWzQ3MjcwXSksYVs0NzI3MF09YysxLGZlW2M+PjBdPTkyfShjPTB8YVs0NzI3MF0pPj4+MD49KDB8YVs0NzI3MV0pPj4+MCYmKFEwKDE4OTA3NiwxKSxjPTB8YVs0NzI3MF0pLEE9MHxmZVtmPj4wXSxhWzQ3MjcwXT1jKzEsZmVbYz4+''@;'; put 'put ''MF09QSxmPWYrMXwwfXJldHVybihjPTB8YVs0NzI3MF0pPj4+MD49KDB8YVs0NzI3MV0pPj4+MCYmKFEwKDE4OTA3NiwxKSxjPTB8YVs0NzI3MF0pLGFbNDcyNzBdPWMrMSxmZVtjPj4wXT00MSwoMHxwKSE9KDB8bCkmJkZ0KHApLChjPTB8YVs0NzI3MF0pPj4+MD49KDB8YVs0NzI3MV0pPj4+''@;'; put 'put ''MCYmKFEwKDE4OTA3NiwxKSxjPTB8YVs0NzI3MF0pLGZlW2M+PjBdPTAsYVs0NzI3MF09QT0wfGFbNDcyNjldLGxlPW0sMHxBfWZ1bmN0aW9uIHhhZShsKXtsfD0wO3ZhciBjPTAsZj0wO2M9MDtlOmZvcig7Oyl7Zm9yKDs7KXtpZighKChmPTB8ZmVbbD4+MF0pPDwyND4+MjQpKWJyZWFrIGU7''@;'; put 'put ''aWYoISgoMjU1JmYpPDEyNykpYnJlYWs7bD1sKzF8MH1pZigoLTQmZik8PDI0Pj4yNCE9LTY0KXtjPTI7YnJlYWt9Yz0xLGw9bCsyfDB9cmV0dXJuIDB8Y31mdW5jdGlvbiAkSShsLGMsZixwLG0pe2N8PTAsZnw9MCxwfD0wLG18PTA7dmFyIHcsYixrLE0sRCxBPTAsUj0wLEc9MDtEPWxlLGxl''@;'; put 'put ''PWxlKzk2fDAsdz1EKzgwfDAsYj1EKzcyfDAsTT1EKzY0fDAsaz1ELF9bKEE9RCszMnwwKT4+M109K19bKGx8PTApPj4zXSxfW0ErOD4+M109K19bbCs4Pj4zXSxfW0ErMTY+PjNdPStfW2M+PjNdLF9bQSsyND4+M109K19bYys4Pj4zXTtkb3tpZigoMHx1NShmLEEsYikpPj0wKXtpZihtKWFb''@;'; put 'put ''dz4+Ml09YVtiPj4yXSxhW3crND4+Ml09YVtiKzQ+PjJdLE9kKHcsTSk7ZWxzZXtmb3IobT0wfGFbNDcyNzRdLCgwfChsPTB8YVsoYz1mKzR8MCk+PjJdKSk+KDB8YVs0NzI3M10pPyhsPW0/MHxWMChtLGw8PDUpOjB8UW4obDw8NSksYVs0NzI3NF09bCxhWzQ3MjczXT1BPTB8YVtjPj4yXSxt''@;'; put 'put ''PWwpOkE9bCxjPTB8YVtmPj4yXSxsPTA7ISgoMHxsKT49KDB8QSkpOylhWyhSPW0rKGw8PDUpfDApPj4yXT1hWyhmPWMrKGw8PDQpfDApPj4yXSxhW1IrND4+Ml09YVtmKzQ+PjJdLGFbUis4Pj4yXT1hW2YrOD4+Ml0sYVtSKzEyPj4yXT1hW2YrMTI+PjJdLGFbKFI9bSsobDw8NSkrMTZ8MCk+''@;'; put 'put ''PjJdPWFbKEc9YysoKCgwfChmPWwrMXwwKSklKDB8QSl8MCk8PDQpfDApPj4yXSxhW1IrND4+Ml09YVtHKzQ+PjJdLGFbUis4Pj4yXT1hW0crOD4+Ml0sYVtSKzEyPj4yXT1hW0crMTI+PjJdLGw9ZjtpZihhW2s+PjJdPTAsYVtrKzQ+PjJdPTAsYVtrKzg+PjJdPTAsYVtrKzEyPj4yXT0wLGFb''@;'; put 'put ''aysxNj4+Ml09MCxhW2srMjA+PjJdPTAsYVtrKzI0Pj4yXT0wLGFbaysyOD4+Ml09MCxhW3c+PjJdPWFbYj4+Ml0sYVt3KzQ+PjJdPWFbYis0Pj4yXSwoMHxlQShtLEEsdyxrLE0pKTwwKXtsPTA7YnJlYWt9fWlmKDB8VlEoMHxhWyhsPU0rNHwwKT4+Ml0pKWw9MDtlbHNle2ZvcihBPTB8YVts''@;'; put 'put ''Pj4yXSxsPTB8YVs0NzI3NV0sbT0wfGFbTT4+Ml0sYz0wOyEoKDB8Yyk+PSgwfEEpKTspYVsoRz1sKyhjPDw0KXwwKT4+Ml09YVsoUj1tKyhjPDw0KXwwKT4+Ml0sYVtHKzQ+PjJdPWFbUis0Pj4yXSxhW0crOD4+Ml09YVtSKzg+PjJdLGFbRysxMj4+Ml09YVtSKzEyPj4yXSxjPWMrMXwwO2Fb''@;'; put 'put ''cD4+Ml09QX19ZWxzZSBsPTB9d2hpbGUoMCk7cmV0dXJuIGxlPUQsMHxsfWZ1bmN0aW9uIFZRKGwpe2x8PTA7dmFyIGYscCxjPTA7cD1sZSxsZT1sZSsxNnwwLGY9cCxjPTB8YVs0NzI3Nl07ZG97aWYoKDB8Yyk8KDB8bCkpe2lmKGM9MHxWMCgwfGFbNDcyNzVdLChsPWwrMzAwLSgoMHxsKSUz''@;'; put 'put ''MDB8MCkrY3wwKTw8NCksYVs0NzI3NV09YyxjKXthWzQ3Mjc2XT1sLGw9MDticmVha30kcigxLDEwNDYxNSxmKSxsPTE7YnJlYWt9bD0wfXdoaWxlKDApO3JldHVybiBsZT1wLDB8bH1mdW5jdGlvbiBUYWUoKXt2YXIgYyxsPTAsZj0wO2M9bGUsbGU9bGUrMTZ8MCxsPWMsYVs0NzI3N109MSso''@;'; put 'put ''Zj0wfGFbNDcyNzddKTtkb3tpZigoMHxmKTw9MCl7aWYoZj0wfFFuKDQ4MDApLGFbNDcyNzVdPWYsIWYpeyRyKDEsMTA0NjM4LGwpLGw9MTticmVha31hWzQ3Mjc2XT0zMDAsYVs0NzI3OF09MCxhWzQ3Mjc5XT0wLGw9MH1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gbGU9YywwfGx9ZnVuY3Rp''@;'; put 'put ''b24galEoKXt2YXIgYyxmO2M9bGUsbGU9bGUrMTZ8MCxhWzQ3Mjc3XT0oZj0wfGFbNDcyNzddKS0xLCgwfGYpPD0xJiZGdCgwfGFbNDcyNzVdKSxsZT1jfWZ1bmN0aW9uIF95KGwsYyl7cmV0dXJuIDB8WlEobHw9MCxjfD0wLDApfWZ1bmN0aW9uIFpRKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2''@;'; put 'put ''YXIgcGUsZ2UsYmUsTGUsUmUsSGUsU3Qsa3Qsc3QsRXQsWnQsY3QscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxPZT0wLFZlPTAscWU9MCxydD0wLFdlPTAsYXQ9MCxidD0wLGFuPTA7Zm9yKGN0PWxlLGxlPWxlKzE3NnwwLFN0PWN0KzE2OHwwLFp0PWN0KzEy''@;'; put 'put ''OHwwLFJlPWN0KzEyMHwwLE9lPWN0KzExMnwwLEE9Y3QrMTA0fDAscGU9Y3QrODh8MCxNPWN0KzcyfDAsbT1jdCs2NHwwLGdlPWN0KzE2MHwwLHN0PWN0KzE1MnwwLEhlPWN0KzE0NHwwLGJlPWN0KzMyfDAsTGU9Y3QsRXQ9Y3QrMTM2fDAsYVs0NzI3OF09MSsoMHxhWzQ3Mjc4XSksYVs0NzI3''@;'; put 'put ''OV09KDB8YVs0NzI3OV0pKyhrdD0wfGFbbCs4MD4+Ml0pLHA9bCs4OHwwOzspe2lmKCEoV2U9MHxhW3A+PjJdKSl7YXQ9NDticmVha31pZighKDB8ZmVbMTEyKyhwPTB8YVtXZSsxNj4+Ml0pPj4wXSkpe2F0PTU7YnJlYWt9cD1wKzExNnwwfWRve2lmKDQ9PSgwfGF0KSkkcigxLDEwNDcxOSxt''@;'; put 'put ''KSxwPTA7ZWxzZSBpZig1PT0oMHxhdCkpaWYoMHx6UShrdCxydD0wfGFbbCs4ND4+Ml0sbCkpcD0wO2Vsc2V7KDB8KG09a3Q8PDMpKT4oMHxhWzQ3MjgwXSkmJihwPShwPTB8YVs0NzI4MV0pPzB8VjAocCxrdDw8Nyk6MHxRbihrdDw8NyksYVs0NzI4MV09cCxhWzQ3MjgwXT1tKTtlOmRve2lm''@;'; put 'put ''KCgwfGt0KT4xJiYrX1tydCs4Pj4zXT4rX1tydCs0MD4+M10pZm9yKHA9MDs7KXtpZigoMHxwKT09KDB8a3QpKXtSPTE7YnJlYWsgZX1rPStfWyhWZT1ydCsocDw8NSkrMjR8MCk+PjNdLF9bVmU+PjNdPS0rX1socWU9cnQrKHA8PDUpKzh8MCk+PjNdLF9bcWU+PjNdPS1rLHA9cCsxfDB9ZWxz''@;'; put 'put ''ZSBSPTB9d2hpbGUoMCk7aWYoVmU9V2UrNDh8MCxxZT1XZSstNDh8MCwoMHwocD0wfGFbKDM9PSgwfChxPTMmYVtXZT4+Ml0pKT9XZTpWZSkrNDA+PjJdKSk9PSgwfGFbKDI9PSgwfHEpP1dlOnFlKSs0MD4+Ml0pKXthW0E+PjJdPTB8dGkocCksJHIoMSwxMDQ4MjYsQSkscD0wO2JyZWFrfUQ9''@;'; put 'put ''a3QrLTF8MCxxPUc9MHxhWzQ3MjgxXSxwPTAsdz0wO2U6Zm9yKDs7KXtpZigoMHx3KT49KDB8a3QpKXt3PUQsTT1wO2JyZWFrfW09KDB8dyk+MD8rX1tydCsodzw8NSkrOD4+M10+K19bcnQrKHcrLTE8PDUpKzg+PjNdPy0xOjE6MCxBPSgwfHcpPCgwfEQpPytfW3J0Kyh3KzE8PDUpKzg+PjNd''@;'; put 'put ''PitfW3J0Kyh3PDw1KSs4Pj4zXT8xOi0xOjA7dDpkb3tpZigoMHxtKSE9KDB8QSkpe2lmKDE9PSgwfG0pfC0xPT0oMHxBKSl7X1tHKyhwPDw0KT4+M109K19bKG09cnQrKHc8PDUpfDApPj4zXSxBPXArMXwwLF9bRysocDw8NCkrOD4+M109K19bcnQrKHc8PDUpKzI0Pj4zXSxfW0crKEE8PDQp''@;'; put 'put ''Pj4zXT0rX1ttPj4zXSxtPXJ0Kyh3PDw1KSs4fDAsYXQ9Mjk7YnJlYWt9X1tHKyhwPDw0KT4+M109K19bKG09cnQrKHc8PDUpKzE2fDApPj4zXSxBPXArMXwwLF9bRysocDw8NCkrOD4+M109K19bcnQrKHc8PDUpKzg+PjNdLF9bRysoQTw8NCk+PjNdPStfW20+PjNdLG09cnQrKHc8PDUpKzI0''@;'; put 'put ''fDAsYXQ9Mjk7YnJlYWt9c3dpdGNoKDB8bSl7Y2FzZS0xOmJyZWFrIHQ7Y2FzZSAwOmJyZWFrO2RlZmF1bHQ6YXQ9Mjg7YnJlYWsgZX1fW0crKHA8PDQpPj4zXT0rX1sobT1ydCsodzw8NSl8MCk+PjNdLEE9cCsxfDAsX1tHKyhwPDw0KSs4Pj4zXT0rX1tydCsodzw8NSkrMjQ+PjNdLF9bRyso''@;'; put 'put ''QTw8NCk+PjNdPStfW20+PjNdLG09cnQrKHc8PDUpKzh8MCxhdD0yOX13aGlsZSgwKTsyOT09KDB8YXQpJiYoYXQ9MCxfW0crKEE8PDQpKzg+PjNdPStfW20+PjNdLHA9cCsyfDApLHc9dysxfDB9aWYoMjg9PSgwfGF0KSl7YVtNPj4yXT1tLGFbTSs0Pj4yXT1tLGFbTSs4Pj4yXT00ODAsJHIo''@;'; put 'put ''MSwxMDQ3NjEsTSkscD0wO2JyZWFrfWU6Zm9yKDshKCgwfHcpPD0tMSk7KXtwPSgwfHcpPCgwfEQpPytfW3J0Kyh3PDw1KSs4Pj4zXT4rX1tydCsodysxPDw1KSs4Pj4zXT8tMToxOjAsbT0oMHx3KT4wPytfW3J0Kyh3Ky0xPDw1KSs4Pj4zXT4rX1tydCsodzw8NSkrOD4+M10/MTotMTowO3Q6''@;'; put 'put ''ZG97aWYoKDB8cCkhPSgwfG0pKXtpZigxPT0oMHxwKXwtMT09KDB8bSkpe19bRysoTTw8NCk+PjNdPStfWyhwPXJ0Kyh3PDw1KXwwKT4+M10sbT1NKzF8MCxfW0crKE08PDQpKzg+PjNdPStfW3J0Kyh3PDw1KSsyND4+M10sX1tHKyhtPDw0KT4+M109K19bcD4+M10scD1ydCsodzw8NSkrOHww''@;'; put 'put ''LEE9MjticmVha31fW0crKE08PDQpPj4zXT0rX1socD1ydCsodzw8NSkrMTZ8MCk+PjNdLG09TSsxfDAsX1tHKyhNPDw0KSs4Pj4zXT0rX1tydCsodzw8NSkrOD4+M10sX1tHKyhtPDw0KT4+M109K19bcD4+M10scD1ydCsodzw8NSkrMjR8MCxBPTI7YnJlYWt9c3dpdGNoKDB8cCl7Y2FzZSAw''@;'; put 'put ''Ol9bRysoTTw8NCk+PjNdPStfWyhwPXJ0Kyh3PDw1KSsxNnwwKT4+M10sbT1NKzF8MCxfW0crKE08PDQpKzg+PjNdPStfW3J0Kyh3PDw1KSs4Pj4zXSxfW0crKG08PDQpPj4zXT0rX1twPj4zXSxwPXJ0Kyh3PDw1KSsyNHwwLEE9MjticmVhayB0O2Nhc2UtMTpfW0crKE08PDQpPj4zXT0rX1so''@;'; put 'put ''YW49cnQrKHc8PDUpKzE2fDApPj4zXSxBPU0rMXwwLF9bRysoTTw8NCkrOD4+M109K19bKHA9cnQrKHc8PDUpKzh8MCk+PjNdLF9bRysoQTw8NCk+PjNdPStfW2FuPj4zXSxidD1NKzJ8MCxfW0crKEE8PDQpKzg+PjNdPStfWyhhbj1ydCsodzw8NSkrMjR8MCk+PjNdLF9bRysoYnQ8PDQpPj4z''@;'; put 'put ''XT0rX1soQT1ydCsodzw8NSl8MCk+PjNdLG09TSszfDAsX1tHKyhidDw8NCkrOD4+M109K19bYW4+PjNdLF9bRysobTw8NCk+PjNdPStfW0E+PjNdLEE9NDticmVhayB0O2RlZmF1bHQ6YXQ9NDI7YnJlYWsgZX19d2hpbGUoMCk7X1tHKyhtPDw0KSs4Pj4zXT0rX1twPj4zXSx3PXcrLTF8MCxN''@;'; put 'put ''PU0rQXwwfWlmKDQyPT0oMHxhdCkpe2FbcGU+PjJdPXAsYVtwZSs0Pj4yXT1wLGFbcGUrOD4+Ml09NTEzLCRyKDEsMTA0NzYxLHBlKSxwPTA7YnJlYWt9ZTpkb3tpZihSKXtmb3IocD0wOzspe2lmKCgwfHApPj0oMHxrdCkpe3A9MDticmVha31rPStfWyhidD1ydCsocDw8NSkrMjR8MCk+PjNd''@;'; put 'put ''LF9bYnQ+PjNdPS0rX1soYW49cnQrKHA8PDUpKzh8MCk+PjNdLF9bYW4+PjNdPS1rLHA9cCsxfDB9Zm9yKDs7KXtpZigoMHxwKT49KDB8TSkpe3A9MDticmVhayBlfV9bKGFuPUcrKHA8PDQpKzh8MCk+PjNdPS0rX1thbj4+M10scD1wKzF8MH19ZWxzZSBwPTB9d2hpbGUoMCk7Zm9yKDshKCgw''@;'; put 'put ''fHApPj0oMHxrdCkpOylfW3J0KyhwPDw1KT4+M109MjE0NzQ4MzY0NyxfW3J0KyhwPDw1KSsxNj4+M109LTIxNDc0ODM2NDgscD1wKzF8MDtpZihhW2dlPj4yXT1xLGFbKEE9Z2UrNHwwKT4+Ml09TSxfW2JlPj4zXT0rX1tsPj4zXSxfW2JlKzg+PjNdPStfW2wrOD4+M10sX1tiZSsxNj4+M109''@;'; put 'put ''K19bbCs0MD4+M10sX1tiZSsyND4+M109K19bbCs0OD4+M10sKDB8dTUoZ2UsYmUsc3QpKTwwKXskcigxLDEwNDg2NSxPZSkscD0wO2JyZWFrfWlmKGYpYVtTdD4+Ml09YVtzdD4+Ml0sYVtTdCs0Pj4yXT1hW3N0KzQ+PjJdLE9kKFN0LEhlKTtlbHNle2ZvcihwPTB8YVs0NzI3NF0sKDB8KG09''@;'; put 'put ''MHxhW0E+PjJdKSk+KDB8YVs0NzI3M10pJiYocD1wPzB8VjAocCxtPDw1KTowfFFuKG08PDUpLGFbNDcyNzRdPXAsYVs0NzI3M109bT0wfGFbQT4+Ml0pLHc9MHxhWzQ3MjgxXSxBPTA7ISgoMHxBKT49KDB8bSkpOylhWyhidD1wKyhBPDw1KXwwKT4+Ml09YVsoYW49dysoQTw8NCl8MCk+PjJd''@;'; put 'put ''LGFbYnQrND4+Ml09YVthbis0Pj4yXSxhW2J0Kzg+PjJdPWFbYW4rOD4+Ml0sYVtidCsxMj4+Ml09YVthbisxMj4+Ml0sYVsoYnQ9cCsoQTw8NSkrMTZ8MCk+PjJdPWFbKE9lPXcrKCgoMHwoYW49QSsxfDApKSUoMHxtKXwwKTw8NCl8MCk+PjJdLGFbYnQrND4+Ml09YVtPZSs0Pj4yXSxhW2J0''@;'; put 'put ''Kzg+PjJdPWFbT2UrOD4+Ml0sYVtidCsxMj4+Ml09YVtPZSsxMj4+Ml0sQT1hbjtpZigwfGZlW2wrMjk+PjBdPyhiPStoYSgrKGs9K19bbCsxNj4+M10pKSxrPStEYSgraykpOihiPTAsaz0wKSxfW0xlKzg+PjNdPWssX1tMZT4+M109YiwwfGZlW2wrNjk+PjBdPyhiPS0raGEoKyhrPStfW2wr''@;'; put 'put ''NTY+PjNdKSksaz0tK0RhKCtrKSk6KGI9MCxrPTApLF9bTGUrMjQ+PjNdPWssX1tMZSsxNj4+M109YixhW1N0Pj4yXT1hW3N0Pj4yXSxhW1N0KzQ+PjJdPWFbc3QrND4+Ml0sKDB8ZUEocCxtLFN0LExlLEhlKSk8MCl7JHIoMSwxMDQ5MDQsUmUpLHA9MDticmVha319aWYoMHxWUSgwfGFbKE09''@;'; put 'put ''SGUrNHwwKT4+Ml0pKXA9MDtlbHNle2ZvcihwPTA7ISgoMHxwKT49KDB8a3QpKTspX1tydCsocDw8NSk+PjNdPTIxNDc0ODM2NDcsX1tydCsocDw8NSkrMTY+PjNdPS0yMTQ3NDgzNjQ4LHA9cCsxfDA7Zm9yKEE9MHxhW00+PjJdLHc9MHxhWzQ3Mjc1XSxtPTB8YVtIZT4+Ml0scD0wOzspe2lm''@;'; put 'put ''KCgwfHApPj0oMHxBKSl7QT0xLHA9MTAsbT0wO2JyZWFrfWFbKGFuPXcrKHA8PDQpfDApPj4yXT1hWyhidD1tKyhwPDw0KXwwKT4+Ml0sYVthbis0Pj4yXT1hW2J0KzQ+PjJdLGFbYW4rOD4+Ml09YVtidCs4Pj4yXSxhW2FuKzEyPj4yXT1hW2J0KzEyPj4yXSxwPXArMXwwfWZvcig7KDB8bSk8''@;'; put 'put ''MTUmQTw8MjQ+PjI0IT0wOyl7Zm9yKEdRKHJ0LGt0LDB8YVs0NzI3NV0sMHxhW00+PjJdLHApLHc9MDshKCgwfHcpPj0oMHxrdCkpOyl7aWYoMjE0NzQ4MzY0Nz09K19bcnQrKHc8PDUpPj4zXSl7YXQ9ODI7YnJlYWt9aWYoLTIxNDc0ODM2NDg9PStfW3J0Kyh3PDw1KSsxNj4+M10pe2F0PTgy''@;'; put 'put ''O2JyZWFrfXc9dysxfDB9ODI9PSgwfGF0KSYmKGF0PTAscD1hbj1wPDwxLG09KDB8YW4pPigwfDIxNDc0ODM2NDcvKDB8a3QpKT8xNTptKSxBPSgwfHcpPT0oMHxrdCk/MDpBLG09bSsxfDB9QTw8MjQ+PjI0JiYoYnQ9MHx0aSgwfGFbKDM9PSgzJmFbV2U+PjJdfDApP1dlOlZlKSs0MD4+Ml0p''@;'; put 'put ''LGFuPTB8dGkoMHxhWygyPT0oMyZhW1dlPj4yXXwwKT9XZTpxZSkrNDA+PjJdKSxhW1p0Pj4yXT1idCxhW1p0KzQ+PjJdPWFuLCRyKDAsMTA0OTQyLFp0KSxhW1N0Pj4yXT1hW3N0Pj4yXSxhW1N0KzQ+PjJdPWFbc3QrND4+Ml0sT2QoU3QsRXQpLEdRKHJ0LGt0LDB8YVtFdD4+Ml0sMHxhW0V0''@;'; put 'put ''KzQ+PjJdLDEwKSxGdCgwfGFbRXQ+PjJdKSksYVtjPj4yXT1hW00+PjJdLHA9MHxhWzQ3Mjc1XX19fXdoaWxlKDApO3JldHVybiBsZT1jdCwwfHB9ZnVuY3Rpb24gelEobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBadCxjdCxidCxEcixwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0w''@;'; put 'put ''LFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTAsV2U9MCxhdD0wLFN0PTAsa3Q9MCxzdD0wLEV0PTAsYW49MCxTbj0wLEhuPTAsdXI9MCxIcj0wLEVyPTAsZnI9MDtmb3IoRHI9bGUsbGU9bGUrMzJ8MCxjdD1EcisxNnwwLFp0PURy''@;'; put 'put ''Kzh8MCxrPURyLHA9MCxiPTA7ISgoMHxiKT49KDB8bCkpOyl3PWMrKGI8PDUpfDAsISgoKGdlPStfW2MrKGI8PDUpKzg+PjNdLStfW2MrKGI8PDUpKzI0Pj4zXSk+PTA/Z2U6LWdlKTwuMDEpJiYhKCgoZ2U9K19bdz4+M10tK19bYysoYjw8NSkrMTY+PjNdKT49MD9nZTotZ2UpPC4wMSkmJigo''@;'; put 'put ''MHxwKSE9KDB8YikmJihhWyhFcj1jKyhwPDw1KXwwKT4+Ml09YVt3Pj4yXSxhW0VyKzQ+PjJdPWFbdys0Pj4yXSxhW0VyKzg+PjJdPWFbdys4Pj4yXSxhW0VyKzEyPj4yXT1hW3crMTI+PjJdLGFbRXIrMTY+PjJdPWFbdysxNj4+Ml0sYVtFcisyMD4+Ml09YVt3KzIwPj4yXSxhW0VyKzI0Pj4y''@;'; put 'put ''XT1hW3crMjQ+PjJdLGFbRXIrMjg+PjJdPWFbdysyOD4+Ml0pLHA9cCsxfDApLGI9YisxfDA7YnQ9YysxNnwwO2Rve2lmKCtfW2M+PjNdPitfW2J0Pj4zXXx8K19bKFNuPWMrOHwwKT4+M10+K19bKHVyPWMrMjR8MCk+PjNdKWZyPTEyO2Vsc2V7Zm9yKEVyPXArLTF8MCxIbj0wfGFbMTU3MTJd''@;'; put 'put ''LFJlPTA7ISgoMHxSZSk+PSgwfEVyKSk7KXtpZigobT0rX1soa3Q9YysoKFN0PVJlKzF8MCk8PDUpfDApPj4zXSk+KEE9K19bKHN0PWMrKFN0PDw1KSsxNnwwKT4+M10pKXtmcj0xNjticmVha31pZigoTT0rX1socnQ9YysoU3Q8PDUpKzh8MCk+PjNdKT4oRD0rX1soV2U9YysoU3Q8PDUpKzI0''@;'; put 'put ''fDApPj4zXSkpe2ZyPTE2O2JyZWFrfSEwfDFeKFI9MCE9KDB8KEhlPShsPTEmKE9lPStfWyhhdD1jKyhSZTw8NSl8MCk+PjNdPkEpKSsocD0xJihMZT0rX1soRXQ9YysoUmU8PDUpKzE2fDApPj4zXTxtKSkrKGI9MSYoYmU9K19bKHFlPWMrKFJlPDw1KSsyNHwwKT4+M108TSkpKyh3PTEmKGs9''@;'; put 'put ''K19bKFZlPWMrKFJlPDw1KSs4fDApPj4zXT5EKSl8MCkpKXx8KGFbY3Q+PjJdPVJlLGFbY3QrND4+Ml09U3QsVDAoSG4sMTA1MTQyLGN0KSxyTihmKSk7ZTpkb3tpZihSKWZvcihMZT8oaz13LFI9MCxwPWt0LHc9RXQsZnI9MjQpOk9lPyhrPXcsbD0wLFI9cCxwPXN0LHc9YXQsZnI9MjQpOmJl''@;'; put 'put ''PyhrPXcsYj0wLFI9cCxwPXJ0LHc9cWUsZnI9MjQpOmsmJihrPTAsUj1wLHA9V2Usdz1WZSxmcj0yNCksMjQ9PSgwfGZyKSYmKGZyPTAsUmU9fn4rX1t3Pj4zXSxfW3c+PjNdPStfW3A+PjNdLF9bcD4+M109KygwfFJlKSx3PWsscD1SKSxSPUhlKy0xfDAsaz0wOzspe2lmKCgwfGspPj0oMHxS''@;'; put 'put ''KSlicmVhayBlO2Rve2lmKDEhPSgwfHApKXtpZigxPT0oMHxsKSl7X1tzdD4+M109Z2U9KygwfH5+KC41KigrX1tzdD4+M10rICtfW2F0Pj4zXSkrLjUpKSxfW2F0Pj4zXT1nZSxsPTA7YnJlYWt9aWYoMT09KDB8Yikpe19bcnQ+PjNdPWdlPSsoMHx+figuNSooK19bcnQ+PjNdKyArX1txZT4+''@;'; put 'put ''M10pKy41KSksX1txZT4+M109Z2UsYj0wO2JyZWFrfTE9PSgwfHcpJiYoX1tXZT4+M109Z2U9KygwfH5+KC41KigrX1tXZT4+M10rICtfW1ZlPj4zXSkrLjUpKSxfW1ZlPj4zXT1nZSx3PTApfWVsc2UgX1trdD4+M109Z2U9KygwfH5+KC41KigrX1trdD4+M10rICtfW0V0Pj4zXSkrLjUpKSxf''@;'; put 'put ''W0V0Pj4zXT1nZSxwPTB9d2hpbGUoMCk7az1rKzF8MH19d2hpbGUoMCk7MCE9KDB8KHc9MHxpTih+fihHPStfW2F0Pj4zXSksfn4ocT0rX1tFdD4+M10pLH5+KHBlPStfW2t0Pj4zXSksfn4oZ2U9K19bc3Q+PjNdKSkpKSYwIT0oMHwocD0wfGlOKH5+KEQ9K19bVmU+PjNdKSx+fihNPStfW3Fl''@;'; put 'put ''Pj4zXSksfn4oQT0rX1tydD4+M10pLH5+KG09K19bV2U+PjNdKSkpKT8oMHx3KTwoMHxwKT8oUmU9cTxnZSxfWygoV2U9cS1HPmdlLXBlKT9SZT9FdDphdDpSZT9rdDpzdCk+PjNdPVdlP1JlP3BlOmdlOlJlP3E6RyxSZT1TdCk6KFJlPU08bSxfWygoV2U9TS1EPm0tQSk/UmU/RXQ6YXQ6UmU/''@;'; put 'put ''a3Q6c3QpKzg+PjNdPVdlP1JlP0E6bTpSZT9NOkQsUmU9U3QpOlJlPVN0fWlmKDE2PT0oMHxmcikpe2FbWnQ+PjJdPVN0LCRyKDEsMTA1MDk2LFp0KSxyTihmKSxwPTE7YnJlYWt9aWYoISgobT0rX1tmPj4zXSk8KEE9K19bYz4+M10pKSYmIShtPitfW2J0Pj4zXSkmJiEoKGFuPStfW2YrOD4+''@;'; put 'put ''M10pPCtfW1NuPj4zXSkmJiEoYW4+K19bdXI+PjNdKXx8KG08QT9fW2Y+PjNdPUE6QT1tLEE+KG09K19bYnQ+PjNdKSYmKF9bZj4+M109bSksKEE9K19bKHA9Zis4fDApPj4zXSk8KG09K19bU24+PjNdKSYmKF9bcD4+M109bSxBPW0pLEE+KG09K19bdXI+PjNdKSYmKF9bcD4+M109bSkpLCEo''@;'; put 'put ''KG09K19bKHc9Zis0MHwwKT4+M10pPChBPStfWyhwPWMrKEVyPDw1KXwwKT4+M10pfHxtPitfW2MrKEVyPDw1KSsxNj4+M118fChIcj0rX1tmKzQ4Pj4zXSxIcjwrX1tjKyhFcjw8NSkrOD4+M10pfHxIcj4rX1tjKyhFcjw8NSkrMjQ+PjNdKSl7cD0wO2JyZWFrfW08QSYmKF9bdz4+M109QSxt''@;'; put 'put ''PUEpLG0+KEE9K19bYysoRXI8PDUpKzE2Pj4zXSkmJihfW3c+PjNdPUEpLChtPStfWyhwPWYrNDh8MCk+PjNdKTwoQT0rX1tjKyhFcjw8NSkrOD4+M10pP19bcD4+M109QTpBPW0sQT4obT0rX1tjKyhFcjw8NSkrMjQ+PjNdKSYmKF9bcD4+M109bSkscD0wfX13aGlsZSgwKTtyZXR1cm4gMTI9''@;'; put 'put ''PSgwfGZyKSYmKCRyKDEsMTA1MDUxLGspLHJOKGYpLHA9MSksbGU9RHIsMHxwfWZ1bmN0aW9uIEdRKGwsYyxmLHAsbSl7bHw9MCxmfD0wLHB8PTA7dmFyIE9lLExlLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLFJlPTAsSGU9MCxWZT0wLHFlPTAs''@;'; put 'put ''cnQ9MCxXZT0wO0xlPTEvKygwfChPZT0wfEFyKG18PTAsY3w9MCkpKSxtPTA7ZTpmb3IoO1JlPW0rM3wwLCEoKDB8UmUpPj0oMHxwKSk7KWZvcihxPWYrKG08PDQpfDAscGU9ZisobTw8NCkrOHwwLGJlPW0rMXwwLGdlPWYrKGJlPDw0KXwwLGJlPWYrKGJlPDw0KSs4fDAsaz1tKzJ8MCxiPWYr''@;'; put 'put ''KGs8PDQpfDAsaz1mKyhrPDw0KSs4fDAsTT1mKyhSZTw8NCl8MCxEPWYrKFJlPDw0KSs4fDAsdz0wOzspe2lmKCgwfHcpPigwfE9lKSl7bT1SZTtjb250aW51ZSBlfWZvcihSPSgocnQ9K19bZ2U+PjNdKS0oUj0rX1txPj4zXSkpKihIZT1MZSorKDB8dykpK1IsRz0oKFZlPStfW2JlPj4zXSkt''@;'; put 'put ''KEc9K19bcGU+PjNdKSkqSGUrRyxSPSgoKFdlPStfW2I+PjNdKS0ocnQ9KFdlLXJ0KSpIZStydCkrKCtfW00+PjNdLVdlKSpIZSkqSGUrcnQtKFI9KHJ0LVIpKkhlK1IpKSpIZStSLEc9KCgocWU9K19baz4+M10pLShWZT0ocWUtVmUpKkhlK1ZlKSsoK19bRD4+M10tcWUpKkhlKSpIZStWZS0o''@;'; put 'put ''Rz0oVmUtRykqSGUrRykpKkhlK0csQT0wOyEoKDB8QSk+PSgwfGMpKTspRzw9K19bbCsoQTw8NSkrMjQ+PjNdKzFlLTQmJkc+PStfW2wrKEE8PDUpKzg+PjNdLTFlLTQmJigrX1sobT1sKyhBPDw1KXwwKT4+M10+UiYmKF9bbT4+M109UiksK19bKG09bCsoQTw8NSkrMTZ8MCk+PjNdPFImJihf''@;'; put 'put ''W20+PjNdPVIpKSxBPUErMXwwO3c9dysxfDB9fWZ1bmN0aW9uIHJOKGwpe3ZhciBmLHAsQSx3LGIsayxjPTAsbT0wLE09MCxEPTAsUj0wLEc9MCxxPTA7Zm9yKGs9bGUsbGU9bGUrMTEyfDAsdz1rKzgwfDAsYj1rKzQ4fDAsQT1rKzh8MCxmPTB8YVsxNTcxMl0sYVsobT1rKT4+Ml09YVsocD04''@;'; put 'put ''MCsobHw9MCl8MCk+PjJdLFQwKGYsMTA1MjY4LG0pLG09bCs4NHwwLGM9MDshKCgwfGMpPj0oMHxhW3A+PjJdKSk7KUc9K19bKHE9MHxhW20+PjJdKSsoYzw8NSk+PjNdLFI9K19bcSsoYzw8NSkrOD4+M10sRD0rX1txKyhjPDw1KSsxNj4+M10sTT0rX1txKyhjPDw1KSsyND4+M10sYVtBPj4y''@;'; put 'put ''XT1jLF9bQSs4Pj4zXT1HLF9bQSsxNj4+M109UixfW0ErMjQ+PjNdPUQsX1tBKzMyPj4zXT1NLFQwKGYsMTA1Mjc5LEEpLGM9YysxfDA7Rz0rX1tsKzg+PjNdLFI9K19bbCsxNj4+M10scT0wfGZlW2wrMjk+PjBdPzEwNTMxMDoxMDUzMjIsX1tiPj4zXT0rX1tsPj4zXSxfW2IrOD4+M109Ryxf''@;'; put 'put ''W2IrMTY+PjNdPVIsYVtiKzI0Pj4yXT1xLFQwKGYsMTA1MzM4LGIpLFI9K19bbCs0OD4+M10sRz0rX1tsKzU2Pj4zXSxxPTB8ZmVbbCs2OT4+MF0/MTA1MzEwOjEwNTMyMixfW3c+PjNdPStfW2wrNDA+PjNdLF9bdys4Pj4zXT1SLF9bdysxNj4+M109RyxhW3crMjQ+PjJdPXEsVDAoZiwxMDUz''@;'; put 'put ''ODksdyksbGU9a31mdW5jdGlvbiBpTihsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO2Rve2lmKCgwfGMpPigwfGYpJigwfHApPigwfGwpKXtpZighKCgwfGYpPigwfGwpfCgwfHApPCgwfGwpKSl7bD1wLWx8MDticmVha31pZigoMHxjKTwoMHxmKXwoMHxjKT4oMHxwKSl7bD0oMHwoYz1j''@;'; put 'put ''LWx8MCkpPCgwfChsPXAtZnwwKSk/YzpsO2JyZWFrfWw9Yy1mfDA7YnJlYWt9bD0wfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gZ2sobCxjKXtyZXR1cm4gMHxaUShsfD0wLGN8PTAsMSl9ZnVuY3Rpb24gSWFlKGwsYyxmLHApe2x8PTAsZnw9MCxwfD0wO3ZhciBrLG09MCxBPTAsdz0w''@;'; put 'put ''LGI9MDtmb3Ioaz1sZSxsZT1sZSs4MHwwLEE9ayxiPTEsbT1jfD0wO3c9bSwwIT0oMHwobT0wfGFbMTcyKygwfGFbbSsxNj4+Ml0pPj4yXSkpJigwfHcpIT0oMHxtKTspYj1iKzF8MDtmb3IoKDB8Yik+PTIxJiYoQT0wfHZyKGI8PDIpKSx3PTAsbT1jOyEoKDB8dyk+PSgwfGIpKTspYVtBKyh3''@;'; put 'put ''PDwyKT4+Ml09bSx3PXcrMXwwLG09MHxhWzE3MisoMHxhW20rMTY+PjJdKT4+Ml07V1EobCxBLGIsZixwKSwoMHxiKT4yMCYmRnQoQSksbGU9a31mdW5jdGlvbiBXUShsLGMsZixwLG0pe2x8PTAsZnw9MCxwfD0wLG18PTA7dmFyIGdlLFZlLHFlLHJ0LFdlLGF0LGt0LHN0LEV0LFp0LGN0LEE9''@;'; put 'put ''MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wLFN0PTAsYnQ9MCxhbj0wLFNuPTAsSG49MCx1cj0wO2N0PWxlLGxlPWxlKzMwNHwwLHFlPWN0KzI3MnwwLHN0PWN0KzMyfDAsRXQ9Y3QrMTZ8MCxadD1jdCxxPWN0KzE5MnwwLEhl''@;'; put 'put ''PWN0KzE3NnwwLEE9Y3QrMTYwfDAscnQ9Y3QrMjk2fDAsV2U9Y3QrMjg4fDAsYj0odz0wfGFbKGN8PTApPj4yXSktNDh8MCxhdD0wfGFbKDI9PSgwfChMZT0zJmFbdz4+Ml0pKT93OmIpKzQwPj4yXSxnZT0xNisoa3Q9Y3QrOTZ8MCl8MCxTdD0xNisoMHxhWyhSZT13KzE2fDApPj4yXSl8MCxh''@;'; put 'put ''WyhWZT1jdCsyMDh8MCk+PjJdPWFbKExlPTE2KygwfGFbMTYrKDB8YVsoMz09KDB8TGUpP3c6dys0OHwwKSs0MD4+Ml0pPj4yXSl8MCk+PjJdLGFbVmUrND4+Ml09YVtMZSs0Pj4yXSxhW1ZlKzg+PjJdPWFbTGUrOD4+Ml0sYVtWZSsxMj4+Ml09YVtMZSsxMj4+Ml0sYVtxZT4+Ml09YVtTdD4+''@;'; put 'put ''Ml0sYVtxZSs0Pj4yXT1hW1N0KzQ+PjJdLGFbcWUrOD4+Ml09YVtTdCs4Pj4yXSxhW3FlKzEyPj4yXT1hW1N0KzEyPj4yXSxZUShxLFZlLHFlKSxhW2t0Pj4yXT1hW3E+PjJdLGFba3QrND4+Ml09YVtxKzQ+PjJdLGFba3QrOD4+Ml09YVtxKzg+PjJdLGFba3QrMTI+PjJdPWFbcSsxMj4+Ml0s''@;'; put 'put ''YVtnZT4+Ml09YVtxPj4yXSxhW2dlKzQ+PjJdPWFbcSs0Pj4yXSxhW2dlKzg+PjJdPWFbcSs4Pj4yXSxhW2dlKzEyPj4yXT1hW3ErMTI+PjJdLGFbRXQ+PjJdPWFbcT4+Ml0sYVtFdCs0Pj4yXT1hW3ErND4+Ml0sYVtFdCs4Pj4yXT1hW3ErOD4+Ml0sYVtFdCsxMj4+Ml09YVtxKzEyPj4yXSxx''@;'; put 'put ''PWt0KzMyfDAsU3Q9a3QrNDh8MCxSZT01NisoMHxhW1JlPj4yXSl8MCxhW1ZlPj4yXT1hWyhMZT0xNisoMHxhW2F0KzE2Pj4yXSl8MCk+PjJdLGFbVmUrND4+Ml09YVtMZSs0Pj4yXSxhW1ZlKzg+PjJdPWFbTGUrOD4+Ml0sYVtWZSsxMj4+Ml09YVtMZSsxMj4+Ml0sYVtxZT4+Ml09YVtSZT4+''@;'; put 'put ''Ml0sYVtxZSs0Pj4yXT1hW1JlKzQ+PjJdLGFbcWUrOD4+Ml09YVtSZSs4Pj4yXSxhW3FlKzEyPj4yXT1hW1JlKzEyPj4yXSxZUShIZSxWZSxxZSksYVtTdD4+Ml09YVtIZT4+Ml0sYVtTdCs0Pj4yXT1hW0hlKzQ+PjJdLGFbU3QrOD4+Ml09YVtIZSs4Pj4yXSxhW1N0KzEyPj4yXT1hW0hlKzEy''@;'; put 'put ''Pj4yXSxhW3E+PjJdPWFbSGU+PjJdLGFbcSs0Pj4yXT1hW0hlKzQ+PjJdLGFbcSs4Pj4yXT1hW0hlKzg+PjJdLGFbcSsxMj4+Ml09YVtIZSsxMj4+Ml0sYVtadD4+Ml09YVtIZT4+Ml0sYVtadCs0Pj4yXT1hW0hlKzQ+PjJdLGFbWnQrOD4+Ml09YVtIZSs4Pj4yXSxhW1p0KzEyPj4yXT1hW0hl''@;'; put 'put ''KzEyPj4yXTtlOmRve2lmKDEhPSgwfGYpJjA9PSgwfGZlWzE5NDk1NF0pKWZvcihrPStfW2t0Pj4zXSxNPStfW1N0Pj4zXSxidD1rLU0sRD0rX1trdCs4Pj4zXSxSPStfW2t0KzU2Pj4zXSxwZT1ELVIsRz1wZSpwZSxHK2J0KmJ0PDFlLTY/KGFbZ2U+PjJdPWFba3Q+PjJdLGFbZ2UrND4+Ml09''@;'; put 'put ''YVtrdCs0Pj4yXSxhW2dlKzg+PjJdPWFba3QrOD4+Ml0sYVtnZSsxMj4+Ml09YVtrdCsxMj4+Ml0sYVtxPj4yXT1hW1N0Pj4yXSxhW3ErND4+Ml09YVtTdCs0Pj4yXSxhW3ErOD4+Ml09YVtTdCs4Pj4yXSxhW3ErMTI+PjJdPWFbU3QrMTI+PjJdLEhlPWt0KzI0fDAsUmU9a3QrNDB8MCxNPTAs''@;'; put 'put ''az0wKTooYW49TS1rLGJ0PStEMCgrKEcrYW4qYW4pKSxMZT0wfGFbMjQ4KygwfGFbMTYrKDB8YVtsKzYwPj4yXSk+PjJdKT4+Ml0sU249KygwfCgwfEFyKExlLGYrLTF8MCkpLzIpLEc9cGUqU24vYnQsX1tnZT4+M109RytrLGs9YW4qU24vYnQsSGU9a3QrMjR8MCxfW0hlPj4zXT1rK0QsX1tx''@;'; put 'put ''Pj4zXT1HK00sUmU9a3QrNDB8MCxfW1JlPj4zXT1SK2ssaz0rKDAtTGV8MCksTT1hbiprL2J0LGs9cGUqay9idCkscD02PT0oMHxwKSxiZT1XZSs0fDAsT2U9cnQrNHwwLHc9MDs7KXtpZigoMHx3KT49KDB8ZikpYnJlYWsgZTtiPShMZT0wfGFbYysodzw8Mik+PjJdKS00OHwwO3Q6ZG97aWYo''@;'; put 'put ''KDB8YVsoMj09KDMmYVtMZT4+Ml18MCk/TGU6YikrNDA+PjJdKT09KDB8YXQpKWZvcihhW0V0Pj4yXT1hW2t0Pj4yXSxhW0V0KzQ+PjJdPWFba3QrND4+Ml0sYVtFdCs4Pj4yXT1hW2t0Kzg+PjJdLGFbRXQrMTI+PjJdPWFba3QrMTI+PjJdLGFbWnQ+PjJdPWFbU3Q+PjJdLGFbWnQrND4+Ml09''@;'; put 'put ''YVtTdCs0Pj4yXSxhW1p0Kzg+PjJdPWFbU3QrOD4+Ml0sYVtadCsxMj4+Ml09YVtTdCsxMj4+Ml0sQT0wOzspe2lmKDQ9PSgwfEEpKWJyZWFrIHQ7YVsoSG49c3QrKEE8PDQpfDApPj4yXT1hWyh1cj1rdCsoQTw8NCl8MCk+PjJdLGFbSG4rND4+Ml09YVt1cis0Pj4yXSxhW0huKzg+PjJdPWFb''@;'; put 'put ''dXIrOD4+Ml0sYVtIbisxMj4+Ml09YVt1cisxMj4+Ml0sQT1BKzF8MH1lbHNlIGZvcihhW0V0Pj4yXT1hW1N0Pj4yXSxhW0V0KzQ+PjJdPWFbU3QrND4+Ml0sYVtFdCs4Pj4yXT1hW1N0Kzg+PjJdLGFbRXQrMTI+PjJdPWFbU3QrMTI+PjJdLGFbWnQ+PjJdPWFba3Q+PjJdLGFbWnQrND4+Ml09''@;'; put 'put ''YVtrdCs0Pj4yXSxhW1p0Kzg+PjJdPWFba3QrOD4+Ml0sYVtadCsxMj4+Ml09YVtrdCsxMj4+Ml0sQT0wOzspe2lmKDQ9PSgwfEEpKWJyZWFrIHQ7YVsodXI9c3QrKDMtQTw8NCl8MCk+PjJdPWFbKEhuPWt0KyhBPDw0KXwwKT4+Ml0sYVt1cis0Pj4yXT1hW0huKzQ+PjJdLGFbdXIrOD4+Ml09''@;'; put 'put ''YVtIbis4Pj4yXSxhW3VyKzEyPj4yXT1hW0huKzEyPj4yXSxBPUErMXwwfX13aGlsZSgwKTtpZihwKXtmb3IoYVtiZT4+Ml09NCxhW1dlPj4yXT1WZSxBPTA7NCE9KDB8QSk7KWFbKHVyPVZlKyhBPDw0KXwwKT4+Ml09YVsoSG49c3QrKEE8PDQpfDApPj4yXSxhW3VyKzQ+PjJdPWFbSG4rND4+''@;'; put 'put ''Ml0sYVt1cis4Pj4yXT1hW0huKzg+PjJdLGFbdXIrMTI+PjJdPWFbSG4rMTI+PjJdLEE9QSsxfDA7YVtxZT4+Ml09YVtXZT4+Ml0sYVtxZSs0Pj4yXT1hW1dlKzQ+PjJdLE9kKHFlLHJ0KSxBdShMZSwwfGFbKDI9PSgzJmFbTGU+PjJdfDApP0xlOmIpKzQwPj4yXSwwfGFbcnQ+PjJdLDB8YVtP''@;'; put 'put ''ZT4+Ml0sbSl9ZWxzZSBBdShMZSwwfGFbKDI9PSgzJmFbTGU+PjJdfDApP0xlOmIpKzQwPj4yXSxzdCw0LG0pO2FbVmU+PjJdPWFbRXQ+PjJdLGFbVmUrND4+Ml09YVtFdCs0Pj4yXSxhW1ZlKzg+PjJdPWFbRXQrOD4+Ml0sYVtWZSsxMj4+Ml09YVtFdCsxMj4+Ml0sYVtxZT4+Ml09YVtadD4+''@;'; put 'put ''Ml0sYVtxZSs0Pj4yXT1hW1p0KzQ+PjJdLGFbcWUrOD4+Ml09YVtadCs4Pj4yXSxhW3FlKzEyPj4yXT1hW1p0KzEyPj4yXSx0ZygwLExlKSxfW2dlPj4zXT0rX1tnZT4+M10rayxfW0hlPj4zXT0rX1tIZT4+M10rTSxfW3E+PjNdPStfW3E+PjNdK2ssX1tSZT4+M109K19bUmU+PjNdK00sdz13''@;'; put 'put ''KzF8MH1lbHNlIDQ9PSgwfHApJiYoRGFlKEEsbCksYVtxZT4+Ml09YVtBPj4yXSxhW3FlKzQ+PjJdPWFbQSs0Pj4yXSxhW3FlKzg+PjJdPWFbQSs4Pj4yXSxhW3FlKzEyPj4yXT1hW0ErMTI+PjJdLExhZShrdCxxZSkpLEF1KHcsMHxhWygyPT0oMyZhW3c+PjJdfDApP3c6YikrNDA+PjJdLGt0''@;'; put 'put ''LDQsbSksYVtWZT4+Ml09YVtFdD4+Ml0sYVtWZSs0Pj4yXT1hW0V0KzQ+PjJdLGFbVmUrOD4+Ml09YVtFdCs4Pj4yXSxhW1ZlKzEyPj4yXT1hW0V0KzEyPj4yXSxhW3FlPj4yXT1hW1p0Pj4yXSxhW3FlKzQ+PjJdPWFbWnQrND4+Ml0sYVtxZSs4Pj4yXT1hW1p0Kzg+PjJdLGFbcWUrMTI+PjJd''@;'; put 'put ''PWFbWnQrMTI+PjJdLHRnKDAsdyl9d2hpbGUoMCk7bGU9Y3R9ZnVuY3Rpb24gWVEobCxjLGYpe3ZhciBwO3A9K19bOCsoZnw9MCk+PjNdKyArX1s4KyhjfD0wKT4+M10sX1sobHw9MCk+PjNdPStfW2Y+PjNdKyArX1tjPj4zXSxfW2wrOD4+M109cH1mdW5jdGlvbiBEYWUobCxjKXtsfD0wLF9b''@;'; put 'put ''MjMzMDVdPS41KigrX1szMisoYz0wfGFbMTYrKGN8PTApPj4yXSk+PjNdKyArX1tjKzE2Pj4zXSksX1syMzMwNl09LjUqKCtfW2MrNDA+PjNdKyArX1tjKzI0Pj4zXSksYVtsPj4yXT1hWzQ2NjEwXSxhW2wrND4+Ml09YVs0NjYxMV0sYVtsKzg+PjJdPWFbNDY2MTJdLGFbbCsxMj4+Ml09YVs0''@;'; put 'put ''NjYxM119ZnVuY3Rpb24gTGFlKGwsYyl7Y3w9MDt2YXIgbSxmPTAscD0wLEE9MCx3PTAsYj0wO2I9LjUqKChwPStfWzQ4KyhsfD0wKT4+M10pKyhBPStfW2w+PjNdKSksbT0uNSooKGY9K19bbCs1Nj4+M10pKyh3PStfW2wrOD4+M10pKSxBPS4yKitEMCgrKCh3PWYtdykqdysoQT1wLUEpKkEp''@;'; put 'put ''KSwwIT0ocD0rRDAoKygoZj0rX1tjKzg+PjNdLW0pKmYrKHc9K19bYz4+M10tYikqdykpKSYmKHc9Yi13L3AqQSxiPW0tZi9wKkEsX1tsKzMyPj4zXT13LF9bbCsxNj4+M109dyxfW2wrNDA+PjNdPWIsX1tsKzI0Pj4zXT1iKX1mdW5jdGlvbiBLNShsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0w''@;'; put 'put ''LG18PTA7dmFyIFN0LEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTAsV2U9MCxhdD0wLGt0PTAsc3Q9MCxFdD0wLFp0PTAsY3Q9MDtpZihTdD1sZSxsZT1sZSsyMDh8MCxiZT1TdCsxOTJ8''@;'; put 'put ''MCxnZT1TdCsxNzZ8MCxXZT1TdCszMnwwLFJlPVN0KzE2fDAsSGU9U3QsVmU9U3QrMTYwfDAscWU9U3QrMTQ0fDAsT2U9U3QrMTI4fDAsTGU9U3QrMTEyfDAsQT0yMTMwNzA2NDMyJihwfD0wKSw0MzYyMDc2MTY9PSgwfChydD0wPT0oOCZwfDApPzA9PSgwfEEpPzQ6QTo4KSkpIWZ1bmN0aW9u''@;'; put 'put ''IE9hZShsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgbSxBLHcsYixrO209bGUsbGU9bGUrMTEyfDAsaz0yKitfWzgrKGN8PTApPj4zXSxhWyhBPW0pPj4yXT1hW2M+PjJdLGFbQSs0Pj4yXT1hW2MrND4+Ml0sYVtBKzg+PjJdPWFbYys4Pj4yXSxhW0ErMTI+PjJdPWFbYysxMj4+Ml0sX1tB''@;'; put 'put ''KzE2Pj4zXT0rX1tjKzE2Pj4zXSxfW0ErMjQ+PjNdPWstK19bYysyND4+M10sX1tBKzMyPj4zXT0rX1tjKzMyPj4zXSxfW0ErNDA+PjNdPWstK19bYys0MD4+M10sX1tBKzQ4Pj4zXT0rX1tjKzQ4Pj4zXSxfW0ErNTY+PjNdPWstK19bYys1Nj4+M10sX1tBKzY0Pj4zXT0rX1tjKzY0Pj4zXSxf''@;'; put 'put ''W0ErNzI+PjNdPWstK19bYys3Mj4+M10sX1tBKzgwPj4zXT0rX1tjKzgwPj4zXSxfW0ErODg+PjNdPWstK19bYys4OD4+M10sYVsodz1BKzk2fDApPj4yXT1hWyhiPWMrOTZ8MCk+PjJdLGFbdys0Pj4yXT1hW2IrND4+Ml0sYVt3Kzg+PjJdPWFbYis4Pj4yXSxhW3crMTI+PjJdPWFbYisxMj4+''@;'; put 'put ''Ml0sUWYobCxjLGYsMCwwLDI1NSZwKSxRZihsLEEsNywwLDAsMCksbGU9bX0obCxjLGYsbSk7ZWxzZXtmb3IoYXQ9MHx2cig2NCsoZjw8Nil8MCksRz1mKy0xfDAscT1IZSs4fDAscGU9UmUrOHwwLFI9MTIscD0wOyEoKDB8cCk+PSgwfGYpKTspYVtSZT4+Ml09YVsoRD1jKyhwPDw0KXwwKT4+''@;'; put 'put ''Ml0sYVtSZSs0Pj4yXT1hW0QrND4+Ml0sYVtSZSs4Pj4yXT1hW0QrOD4+Ml0sYVtSZSsxMj4+Ml09YVtEKzEyPj4yXSwoMHxwKTwoMHxHKT8oYVtIZT4+Ml09YVsoRD1jKygocD1wKzF8MCk8PDQpfDApPj4yXSxhW0hlKzQ+PjJdPWFbRCs0Pj4yXSxhW0hlKzg+PjJdPWFbRCs4Pj4yXSxhW0hl''@;'; put 'put ''KzEyPj4yXT1hW0QrMTI+PjJdKTooYVtIZT4+Ml09YVtjPj4yXSxhW0hlKzQ+PjJdPWFbYys0Pj4yXSxhW0hlKzg+PjJdPWFbYys4Pj4yXSxhW0hlKzEyPj4yXT1hW2MrMTI+PjJdLHA9cCsxfDApLFI9UjwoTT0uMzMzMzMzMzMzMzMzMzMzMyorRDAoKygoa3Q9K19bcT4+M10tK19bcGU+PjNd''@;'; put 'put ''KSprdCsoTT0rX1tIZT4+M10tK19bUmU+PjNdKSpNKSkpP1I6TTtmb3Ioaz04Mzg4NjA4MD09KDE2Nzc3MjE2fEEpLEQ9ND09KDB8cnQpLGI9MTY3NzcyMTY9PSgwfEEpLHA9MCx3PTA7ISgoMHx3KT49KDB8ZikpOylhW1JlPj4yXT1hWyhBPWMrKHc8PDQpfDApPj4yXSxhW1JlKzQ+PjJdPWFb''@;'; put 'put ''QSs0Pj4yXSxhW1JlKzg+PjJdPWFbQSs4Pj4yXSxhW1JlKzEyPj4yXT1hW0ErMTI+PjJdLCgwfHcpPCgwfEcpPyhhW0hlPj4yXT1hWyhBPWMrKHcrMTw8NCl8MCk+PjJdLGFbSGUrND4+Ml09YVtBKzQ+PjJdLGFbSGUrOD4+Ml09YVtBKzg+PjJdLGFbSGUrMTI+PjJdPWFbQSsxMj4+Ml0pOihh''@;'; put 'put ''W0hlPj4yXT1hW2M+PjJdLGFbSGUrND4+Ml09YVtjKzQ+PjJdLGFbSGUrOD4+Ml09YVtjKzg+PjJdLGFbSGUrMTI+PjJdPWFbYysxMj4+Ml0pLE09Ui8rRDAoKygoa3Q9K19bcT4+M10tK19bcGU+PjNdKSprdCsoTT0rX1tIZT4+M10tK19bUmU+PjNdKSpNKSksTT1rPy4zMzMzMzMzMzMzMzMz''@;'; put 'put ''MzMzKk06Yj8uNSpNOk0sQT1hdCsocDw8NCl8MCxEPyhhW2dlPj4yXT1hW1JlPj4yXSxhW2dlKzQ+PjJdPWFbUmUrND4+Ml0sYVtnZSs4Pj4yXT1hW1JlKzg+PjJdLGFbZ2UrMTI+PjJdPWFbUmUrMTI+PjJdLGFbYmU+PjJdPWFbSGU+PjJdLGFbYmUrND4+Ml09YVtIZSs0Pj4yXSxhW2JlKzg+''@;'; put 'put ''PjJdPWFbSGUrOD4+Ml0sYVtiZSsxMj4+Ml09YVtIZSsxMj4+Ml0scUkoVmUsLjUqTSxnZSxiZSksYVtBPj4yXT1hW1ZlPj4yXSxhW0ErND4+Ml09YVtWZSs0Pj4yXSxhW0ErOD4+Ml09YVtWZSs4Pj4yXSxhW0ErMTI+PjJdPWFbVmUrMTI+PjJdKTooYVtBPj4yXT1hW1JlPj4yXSxhW0ErND4+''@;'; put 'put ''Ml09YVtSZSs0Pj4yXSxhW0ErOD4+Ml09YVtSZSs4Pj4yXSxhW0ErMTI+PjJdPWFbUmUrMTI+PjJdKSxBPWF0KyhwKzE8PDQpfDAsYVtnZT4+Ml09YVtSZT4+Ml0sYVtnZSs0Pj4yXT1hW1JlKzQ+PjJdLGFbZ2UrOD4+Ml09YVtSZSs4Pj4yXSxhW2dlKzEyPj4yXT1hW1JlKzEyPj4yXSxhW2Jl''@;'; put 'put ''Pj4yXT1hW0hlPj4yXSxhW2JlKzQ+PjJdPWFbSGUrND4+Ml0sYVtiZSs4Pj4yXT1hW0hlKzg+PjJdLGFbYmUrMTI+PjJdPWFbSGUrMTI+PjJdLHFJKHFlLE0sZ2UsYmUpLGFbQT4+Ml09YVtxZT4+Ml0sYVtBKzQ+PjJdPWFbcWUrND4+Ml0sYVtBKzg+PjJdPWFbcWUrOD4+Ml0sYVtBKzEyPj4y''@;'; put 'put ''XT1hW3FlKzEyPj4yXSxBPXArM3wwLHN0PWF0KyhwKzI8PDQpfDAsYVtnZT4+Ml09YVtSZT4+Ml0sYVtnZSs0Pj4yXT1hW1JlKzQ+PjJdLGFbZ2UrOD4+Ml09YVtSZSs4Pj4yXSxhW2dlKzEyPj4yXT1hW1JlKzEyPj4yXSxhW2JlPj4yXT1hW0hlPj4yXSxhW2JlKzQ+PjJdPWFbSGUrND4+Ml0s''@;'; put 'put ''YVtiZSs4Pj4yXT1hW0hlKzg+PjJdLGFbYmUrMTI+PjJdPWFbSGUrMTI+PjJdLHFJKE9lLDEtTSxnZSxiZSksYVtzdD4+Ml09YVtPZT4+Ml0sYVtzdCs0Pj4yXT1hW09lKzQ+PjJdLGFbc3QrOD4+Ml09YVtPZSs4Pj4yXSxhW3N0KzEyPj4yXT1hW09lKzEyPj4yXSxEPyhzdD1hdCsoQTw8NCl8''@;'; put 'put ''MCxhW2dlPj4yXT1hW1JlPj4yXSxhW2dlKzQ+PjJdPWFbUmUrND4+Ml0sYVtnZSs4Pj4yXT1hW1JlKzg+PjJdLGFbZ2UrMTI+PjJdPWFbUmUrMTI+PjJdLGFbYmU+PjJdPWFbSGU+PjJdLGFbYmUrND4+Ml09YVtIZSs0Pj4yXSxhW2JlKzg+PjJdPWFbSGUrOD4+Ml0sYVtiZSsxMj4+Ml09YVtI''@;'; put 'put ''ZSsxMj4+Ml0scUkoTGUsMS0uNSpNLGdlLGJlKSxhW3N0Pj4yXT1hW0xlPj4yXSxhW3N0KzQ+PjJdPWFbTGUrND4+Ml0sYVtzdCs4Pj4yXT1hW0xlKzg+PjJdLGFbc3QrMTI+PjJdPWFbTGUrMTI+PjJdLHA9cCs0fDApOnA9QSx3PXcrMXwwO2FbKGs9YXQrKHA8PDQpfDApPj4yXT1hW2F0Pj4y''@;'; put 'put ''XSxhW2srND4+Ml09YVthdCs0Pj4yXSxhW2srOD4+Ml09YVthdCs4Pj4yXSxhW2srMTI+PjJdPWFbYXQrMTI+PjJdLGFbKGs9YXQrKHArMTw8NCl8MCk+PjJdPWFbKGI9YXQrMTZ8MCk+PjJdLGFbays0Pj4yXT1hW2IrND4+Ml0sYVtrKzg+PjJdPWFbYis4Pj4yXSxhW2srMTI+PjJdPWFbYisx''@;'; put 'put ''Mj4+Ml0sYVsocD1hdCsocCsyPDw0KXwwKT4+Ml09YVsoaz1hdCszMnwwKT4+Ml0sYVtwKzQ+PjJdPWFbays0Pj4yXSxhW3ArOD4+Ml09YVtrKzg+PjJdLGFbcCsxMj4+Ml09YVtrKzEyPj4yXSxwPTIxNDc0ODM2NDcmcnQ7ZTpkb3tpZigoMHxwKTwyMDEzMjY1OTIpe2lmKCgwfHApPj04Mzg4''@;'; put 'put ''NjA4MCl7aWYoKDB8cCk8MTM0MjE3NzI4KXtpZigoMHxwKTwxMDA2NjMyOTYpe2lmKDgzODg2MDgwIT0oMHxwKSlicmVhayBlO2lmKDQ9PSgwfGYpKXtzdD0wfHZyKDE5MiksYVtzdD4+Ml09YVtjPj4yXSxhW3N0KzQ+PjJdPWFbYys0Pj4yXSxhW3N0Kzg+PjJdPWFbYys4Pj4yXSxhW3N0KzEy''@;'; put 'put ''Pj4yXT1hW2MrMTI+PjJdLGFbKEc9c3QrMTZ8MCk+PjJdPWFbKGJlPWMrMTZ8MCk+PjJdLGFbRys0Pj4yXT1hW2JlKzQ+PjJdLGFbRys4Pj4yXT1hW2JlKzg+PjJdLGFbRysxMj4+Ml09YVtiZSsxMj4+Ml0sRz1hdCs0OHwwLF9bKEQ9c3QrMzJ8MCk+PjNdPVI9K19bKGJlPWF0KzY0fDApPj4z''@;'; put 'put ''XSxxPWF0KzU2fDAsX1socWU9c3QrNDB8MCk+PjNdPUV0PStfWyhwZT1hdCs3MnwwKT4+M10sX1soT2U9c3QrNDh8MCk+PjNdPWt0PStfW0c+PjNdK1ItK19baz4+M10sX1soSGU9c3QrNTZ8MCk+PjNdPWN0PStfW3E+PjNdK0V0LStfW2F0KzQwPj4zXSxadD0rX1tiZT4+M10ra3QtK19bRz4+''@;'; put 'put ''M10sX1soRz1zdCs2NHwwKT4+M109WnQsTT0rX1twZT4+M10rY3QtK19bcT4+M10sX1socT1zdCs3MnwwKT4+M109TSxfWyhwZT1zdCs4MHwwKT4+M109UitadC1rdCxfW3N0Kzg4Pj4zXT1FdCtNLWN0LGJlPWF0Kzk2fDAsX1soZj1zdCsxNDR8MCk+PjNdPWN0PStfWyhMZT1hdCs4MHwwKT4+''@;'; put 'put ''M10sUmU9YXQrMTA0fDAsX1tzdCsxNTI+PjNdPU09K19bKGdlPWF0Kzg4fDApPj4zXSxfWyhWZT1zdCsxMjh8MCk+PjNdPUV0PStfW2JlPj4zXStjdC0rX1thdCsxMTI+PjNdLF9bKHJ0PXN0KzEzNnwwKT4+M109a3Q9K19bUmU+PjNdK00tK19bYXQrMTIwPj4zXSxadD0rX1tMZT4+M10rRXQt''@;'; put 'put ''K19bYmU+PjNdLF9bKGJlPXN0KzExMnwwKT4+M109WnQsUj0rX1tnZT4+M10ra3QtK19bUmU+PjNdLF9bKFJlPXN0KzEyMHwwKT4+M109UixfWyhnZT1zdCs5NnwwKT4+M109Y3QrWnQtRXQsX1soTGU9c3QrMTA0fDApPj4zXT1NK1Ita3QsYVsoaz1zdCsxNjB8MCk+PjJdPWFbKGI9YyszMnww''@;'; put 'put ''KT4+Ml0sYVtrKzQ+PjJdPWFbYis0Pj4yXSxhW2srOD4+Ml09YVtiKzg+PjJdLGFbaysxMj4+Ml09YVtiKzEyPj4yXSxhWyhrPXN0KzE3NnwwKT4+Ml09YVsoYz1jKzQ4fDApPj4yXSxhW2srND4+Ml09YVtjKzQ+PjJdLGFbays4Pj4yXT1hW2MrOD4+Ml0sYVtrKzEyPj4yXT1hW2MrMTI+PjJd''@;'; put 'put ''LGthKGwsc3QsMTIsbSksYVtXZT4+Ml09YVtEPj4yXSxhW1dlKzQ+PjJdPWFbRCs0Pj4yXSxhW1dlKzg+PjJdPWFbRCs4Pj4yXSxhW1dlKzEyPj4yXT1hW0QrMTI+PjJdLFI9K19bT2U+PjNdLF9bKE9lPVdlKzE2fDApPj4zXT1rdD0oa3Q9K19bRD4+M10pK2t0LVIsRXQ9K19bSGU+PjNdLF9b''@;'; put 'put ''KEhlPVdlKzI0fDApPj4zXT1NPShNPStfW3FlPj4zXSkrTS1FdCxfWyhxZT1XZSszMnwwKT4+M109K19bRz4+M10ra3QtUixfWyhjPVdlKzQwfDApPj4zXT0rX1txPj4zXStNLUV0LGFbKG09V2UrNDh8MCk+PjJdPWFbcGU+PjJdLGFbbSs0Pj4yXT1hW3BlKzQ+PjJdLGFbbSs4Pj4yXT1hW3Bl''@;'; put 'put ''Kzg+PjJdLGFbbSsxMj4+Ml09YVtwZSsxMj4+Ml0sV28obCxXZSw0KSxhW1dlPj4yXT1hW2dlPj4yXSxhW1dlKzQ+PjJdPWFbZ2UrND4+Ml0sYVtXZSs4Pj4yXT1hW2dlKzg+PjJdLGFbV2UrMTI+PjJdPWFbZ2UrMTI+PjJdLEV0PStfW2dlPj4zXSxfW09lPj4zXT1FdC09KE09K19bYmU+PjNd''@;'; put 'put ''KS1FdCxSPStfW0xlPj4zXSxfW0hlPj4zXT1SLT0oa3Q9K19bUmU+PjNdKS1SLF9bcWU+PjNdPStfW1ZlPj4zXStFdC1NLF9bYz4+M109K19bcnQ+PjNdK1Ita3QsYVttPj4yXT1hW2Y+PjJdLGFbbSs0Pj4yXT1hW2YrND4+Ml0sYVttKzg+PjJdPWFbZis4Pj4yXSxhW20rMTI+PjJdPWFbZisx''@;'; put 'put ''Mj4+Ml0sV28obCxXZSw0KSxGdChzdCk7YnJlYWt9UHIoMTA1NDM4LDEwNTQ0OSw3MzcsMTA1NDU4KX1pZigoMHxwKTwxMTc0NDA1MTIpe2lmKDEwMDY2MzI5NiE9KDB8cCkpYnJlYWsgZTtzdD0wfHZyKChWZT1mKzV8MCk8PDQpLF9bc3Q+PjNdPUV0PS42MjUqKCtfW2M+PjNdLShFdD0rX1so''@;'; put 'put ''cWU9YysxNnwwKT4+M10pKStFdCxMZT1hdCs0OHwwLF9bc3QrOD4+M109Y3Q9LjUqKCtfWyhmPWMrMjR8MCk+PjNdLShjdD0rX1socnQ9Yys0MHwwKT4+M10pKStjdCsxLjUqKCtfWyhSZT1hdCs1NnwwKT4+M10tK19bKEhlPWF0KzcyfDApPj4zXSksX1tzdCsxNj4+M109WnQ9LjI1KigrX1tj''@;'; put 'put ''Pj4zXS0oWnQ9K19bcWU+PjNdKSkrWnQsX1tzdCsyND4+M109Y3QsX1tzdCszMj4+M109WnQsX1tzdCs0MD4+M109LjUqKCtfW2Y+PjNdLShrdD0rX1tydD4+M10pKStrdCxfW3N0KzQ4Pj4zXT1adD0uNSooK19baz4+M10tK19bTGU+PjNdKStadCxfW3N0KzU2Pj4zXT0uNSooK19bZj4+M10t''@;'; put 'put ''KGt0PStfW3J0Pj4zXSkpK2t0LF9bc3QrNjQ+PjNdPVp0LF9bc3QrNzI+PjNdPVp0PS41KigrX1tmPj4zXS0oWnQ9K19bcnQ+PjNdKSkrWnQrKCtfW1JlPj4zXS0rX1tIZT4+M10pLF9bc3QrODA+PjNdPUV0LF9bc3QrODg+PjNdPVp0LF9bc3QrOTY+PjNdPUV0LF9bc3QrMTA0Pj4zXT1adC09''@;'; put 'put ''LjI1KigrX1tSZT4+M10tK19bSGU+PjNdKSxfW3N0KzExMj4+M109K19baz4+M10rRXQtK19bTGU+PjNdLF9bc3QrMTIwPj4zXT0uNSooK19bUmU+PjNdLStfW0hlPj4zXSkrWnQsX1tzdCsxMjg+PjNdPStfW3N0Pj4zXSxfW3N0KzEzNj4+M109LjI1KigrX1tSZT4+M10tK19bSGU+PjNdKStj''@;'; put 'put ''dCxrYShsLHN0LFZlLG0pLF9bV2U+PjNdPStfW3FlPj4zXSxfW1dlKzg+PjNdPS41KigrX1tmPj4zXS0oY3Q9K19bcnQ+PjNdKSkrY3QsX1tXZSsxNj4+M109K19bYz4+M10sX1tXZSsyND4+M109LjUqKCtfW2MrOD4+M10tK19bYys1Nj4+M10pK2N0LFdvKGwsV2UsMiksRnQoc3QpO2JyZWFr''@;'; put 'put ''fWlmKDExNzQ0MDUxMiE9KDB8cCkpYnJlYWsgZTtzdD0wfHZyKChmPWYrMXwwKTw8NCksX1tzdD4+M109K19bYj4+M10sX1tzdCs4Pj4zXT0rX1thdCsyND4+M10tLjUqKCtfWyhxZT1hdCs1NnwwKT4+M10tK19bKHJ0PWF0KzcyfDApPj4zXSksX1tzdCsxNj4+M109K19bYXQrNDg+PjNdLF9b''@;'; put 'put ''c3QrMjQ+PjNdPShjdD0rX1txZT4+M10pLS41KihjdC0rX1tydD4+M10pLF9bc3QrMzI+PjNdPStfW2MrMzI+PjNdLF9bc3QrNDA+PjNdPS41KigrX1txZT4+M10tK19bcnQ+PjNdKSsgK19bKFdlPWMrNDB8MCk+PjNdLF9bc3QrNDg+PjNdPStfW2I+PjNdLF9bc3QrNTY+PjNdPS41KigrX1tx''@;'; put 'put ''ZT4+M10tK19bcnQ+PjNdKSsgK19bV2U+PjNdLF9bc3QrNzI+PjNdPShjdD0rX1tjKzg+PjNdKS0uNSooY3QtK19bYys1Nj4+M10pLF9bc3QrNjQ+PjNdPStfW2M+PjNdLGthKGwsc3QsZixtKSxGdChzdCk7YnJlYWt9aWYoKDB8cCk8MTY3NzcyMTYwKXtpZigoMHxwKTwxNTA5OTQ5NDQpe2lm''@;'; put 'put ''KDEzNDIxNzcyOCE9KDB8cCkpYnJlYWsgZTtzdD0wfHZyKChWZT1mKzR8MCk8PDQpLF9bc3Q+PjNdPWt0PS41KigrX1tjPj4zXS0oa3Q9K19bKHFlPWMrMTZ8MCk+PjNdKSkra3QrLjI1KigrX1trPj4zXS0rX1soSGU9YXQrNDh8MCk+PjNdKSxfW3N0Kzg+PjNdPWN0PS41KigrX1soZj1jKzI0''@;'; put 'put ''fDApPj4zXS0oY3Q9K19bKHJ0PWMrNDB8MCk+PjNdKSkrY3QsX1tzdCsxNj4+M109a3QsX1tzdCsyND4+M109RXQ9LjUqKCtfWyhMZT1hdCs1NnwwKT4+M10tK19bKFJlPWF0KzcyfDApPj4zXSkrY3QsX1tzdCszMj4+M109a3Q9LjUqKCtfW2s+PjNdLStfW0hlPj4zXSkra3QsX1tzdCs0MD4+''@;'; put 'put ''M109RXQsX1tzdCs0OD4+M109a3QsX1tzdCs1Nj4+M109a3Q9LjUqKCtfW0xlPj4zXS0rX1tSZT4+M10pK0V0LF9bc3QrNjQ+PjNdPVp0PS41KigrX1tjPj4zXS0oWnQ9K19bcWU+PjNdKSkrWnQrLS43NSooK19baz4+M10tK19bSGU+PjNdKSxfW3N0KzcyPj4zXT1rdCxfW3N0KzgwPj4zXT1a''@;'; put 'put ''dCxfW3N0Kzg4Pj4zXT1FdCxfW3N0Kzk2Pj4zXT1adD0uNSooK19bYz4+M10tKFp0PStfW3FlPj4zXSkpK1p0Ky0uMjUqKCtfW2s+PjNdLStfW0hlPj4zXSksX1tzdCsxMDQ+PjNdPUV0LF9bc3QrMTEyPj4zXT1adCxfW3N0KzEyMD4+M109Y3Qsa2EobCxzdCxWZSxtKSxfW1dlPj4zXT0rX1tx''@;'; put 'put ''ZT4+M10sX1tXZSs4Pj4zXT0uNSooK19bZj4+M10tKGN0PStfW3J0Pj4zXSkpK2N0LF9bV2UrMTY+PjNdPStfW2M+PjNdLF9bV2UrMjQ+PjNdPS41KigrX1tjKzg+PjNdLStfW2MrNTY+PjNdKStjdCxXbyhsLFdlLDIpLEZ0KHN0KTticmVha31pZigxNTA5OTQ5NDQhPSgwfHApKWJyZWFrIGU7''@;'; put 'put ''c3Q9MHx2cigoVmU9ZisyfDApPDw0KSxfW3N0Pj4zXT1FdD0uNSooK19bYz4+M10tKEV0PStfWyhxZT1jKzE2fDApPj4zXSkpK0V0Ky43NSooK19baz4+M10tK19bKEhlPWF0KzQ4fDApPj4zXSksX1tzdCs4Pj4zXT1jdD0uNSooK19bKGY9YysyNHwwKT4+M10tKGN0PStfWyhydD1jKzQwfDAp''@;'; put 'put ''Pj4zXSkpK2N0LF9bc3QrMTY+PjNdPUV0LF9bc3QrMjQ+PjNdPUV0PS4yNSooK19bKExlPWF0KzU2fDApPj4zXS0rX1soUmU9YXQrNzJ8MCk+PjNdKStjdCxfW3N0KzMyPj4zXT0uNSooK19bYz4+M10tKFp0PStfW3FlPj4zXSkpK1p0Ky4yNSooK19baz4+M10tK19bSGU+PjNdKSxfW3N0KzQw''@;'; put 'put ''Pj4zXT1adD0uNSooK19bTGU+PjNdLStfW1JlPj4zXSkrRXQsX1tzdCs0OD4+M109LjUqKCtfW2M+PjNdLShrdD0rX1txZT4+M10pKStrdCstLjI1KigrX1trPj4zXS0rX1tIZT4+M10pLF9bc3QrNTY+PjNdPVp0LF9bc3QrNjQ+PjNdPVp0PS41KigrX1tjPj4zXS0oWnQ9K19bcWU+PjNdKSkr''@;'; put 'put ''WnQrLS43NSooK19baz4+M10tK19bSGU+PjNdKSxfW3N0KzcyPj4zXT1FdCxfW3N0KzgwPj4zXT1adCxfW3N0Kzg4Pj4zXT1jdCxrYShsLHN0LFZlLG0pLF9bV2U+PjNdPStfW3FlPj4zXSxfW1dlKzg+PjNdPS41KigrX1tmPj4zXS0oY3Q9K19bcnQ+PjNdKSkrY3QsX1tXZSsxNj4+M109K19b''@;'; put 'put ''Yz4+M10sX1tXZSsyND4+M109LjUqKCtfW2MrOD4+M10tK19bYys1Nj4+M10pK2N0LFdvKGwsV2UsMiksRnQoc3QpO2JyZWFrfWlmKCgwfHApPDE4NDU0OTM3Nil7aWYoMTY3NzcyMTYwIT0oMHxwKSlicmVhayBlO3N0PTB8dnIoKFZlPWYrMXwwKTw8NCksX1tzdD4+M109RXQ9K19baz4+M10r''@;'; put 'put ''KEV0PStfWyhxZT1jKzE2fDApPj4zXSkrLjUqKCtfW2M+PjNdLUV0KS0rX1soTGU9YXQrNDh8MCk+PjNdLF9bc3QrOD4+M109Y3Q9LjUqKCtfWyhmPWMrMjR8MCk+PjNdLShjdD0rX1socnQ9Yys0MHwwKT4+M10pKStjdCsuMjUqKCtfWyhSZT1hdCs1NnwwKT4+M10tK19bKEhlPWF0KzcyfDAp''@;'; put 'put ''Pj4zXSksX1tzdCsxNj4+M109RXQ9RXQtK19baz4+M10rICtfW0xlPj4zXSxfW3N0KzI0Pj4zXT0rX1tSZT4+M10rY3QtK19bSGU+PjNdLF9bc3QrMzI+PjNdPUV0LF9bc3QrNDA+PjNdPUV0PS41KigrX1tSZT4+M10tK19bSGU+PjNdKStjdCxfW3N0KzQ4Pj4zXT1adD0uMjUqKCtfW2M+PjNd''@;'; put 'put ''LShadD0rX1txZT4+M10pKStadCxfW3N0KzU2Pj4zXT1FdCxfW3N0KzY0Pj4zXT1adCxfW3N0KzcyPj4zXT1jdCxrYShsLHN0LFZlLG0pLF9bV2U+PjNdPStfW3FlPj4zXSxfW1dlKzg+PjNdPS41KigrX1tmPj4zXS0oY3Q9K19bcnQ+PjNdKSkrY3QsX1tXZSsxNj4+M109K19bYz4+M10sX1tX''@;'; put 'put ''ZSsyND4+M109LjUqKCtfW2MrOD4+M10tK19bYys1Nj4+M10pK2N0LFdvKGwsV2UsMiksRnQoc3QpO2JyZWFrfWlmKDE4NDU0OTM3NiE9KDB8cCkpYnJlYWsgZTtzdD0wfHZyKChxZT1mKzR8MCk8PDQpLF9bc3Q+PjNdPVp0PS4xMjUqKFp0PStfW2M+PjNdLShFdD0rX1soVmU9YysxNnwwKT4+''@;'; put 'put ''M10pKStFdCsuNSooK19baz4+M10tK19bKE9lPWF0KzQ4fDApPj4zXStadCksX1tzdCs4Pj4zXT1FdD0uNSooK19bKEhlPWMrMjR8MCk+PjNdLShFdD0rX1soUmU9Yys0MHwwKT4+M10pKStFdCsuMjUqKCtfWyhmPWF0KzU2fDApPj4zXS0rX1soTGU9YXQrNzJ8MCk+PjNdKSxfW3N0KzE2Pj4z''@;'; put 'put ''XT1jdD0uMzc1KigrX1tjPj4zXS0oY3Q9K19bVmU+PjNdKSkrY3QsX1tzdCsyND4+M109RXQsX1tzdCszMj4+M109Y3QsX1tzdCs0MD4+M109RXQ9LjUqKCtfW2Y+PjNdLStfW0xlPj4zXSkrRXQsX1tzdCs0OD4+M109Y3QtPS41KigrX1trPj4zXS0rX1tPZT4+M10pLF9bc3QrNTY+PjNdPUV0''@;'; put 'put ''LF9bKHJ0PXN0KzY0fDApPj4zXT1jdCxfW3N0KzcyPj4zXT1jdD0uNSooK19bSGU+PjNdLShjdD0rX1tSZT4+M10pKStjdCstLjI1KigrX1tmPj4zXS0rX1tMZT4+M10pLF9bc3QrODA+PjNdPUV0PVp0LS41KigrX1trPj4zXS0rX1tPZT4+M10pLF9bc3QrODg+PjNdPWN0LF9bc3QrOTY+PjNd''@;'; put 'put ''PUV0LF9bc3QrMTA0Pj4zXT1jdC09LjUqKCtfW2Y+PjNdLStfW0xlPj4zXSksX1soTGU9c3QrMTEyfDApPj4zXT1adCxfW3N0KzEyMD4+M109Y3Qsa2EobCxzdCxxZSxtKSxfW1dlPj4zXT0rX1tWZT4+M10sX1soVmU9V2UrOHwwKT4+M109LjUqKCtfW0hlPj4zXS0oY3Q9K19bUmU+PjNdKSkr''@;'; put 'put ''Y3QsX1socWU9V2UrMTZ8MCk+PjNdPStfW3J0Pj4zXSxfWyhtPVdlKzI0fDApPj4zXT0uNSooK19bKHJ0PWMrOHwwKT4+M10tK19bKGY9Yys1NnwwKT4+M10pK2N0LFdvKGwsV2UsMiksX1tXZT4+M109K19bTGU+PjNdLF9bVmU+PjNdPS41KigrX1tIZT4+M10tKGN0PStfW1JlPj4zXSkpK2N0''@;'; put 'put ''LF9bcWU+PjNdPStfW2M+PjNdLF9bbT4+M109LjUqKCtfW3J0Pj4zXS0rX1tmPj4zXSkrY3QsV28obCxXZSwyKSxGdChzdCk7YnJlYWt9aWYoKDB8cCk8MzM1NTQ0MzIpe2lmKCgwfHApPDgpe2lmKDQhPSgwfHApKWJyZWFrIGU7Zm9yKHc9MHxRbigzMisoOTYqZnwwKXwwKSxwPTAsQT0wO2I9''@;'; put 'put ''MXxBLGs9dysoQTw8NCl8MCwhKCgwfHApPj0oMHxmKSk7KWFbaz4+Ml09YVsoc3Q9YXQrKChjPXA8PDIpPDw0KXwwKT4+Ml0sYVtrKzQ+PjJdPWFbc3QrND4+Ml0sYVtrKzg+PjJdPWFbc3QrOD4+Ml0sYVtrKzEyPj4yXT1hW3N0KzEyPj4yXSxhWyhzdD13KyhiPDw0KXwwKT4+Ml09YVsoV2U9''@;'; put 'put ''YXQrKCgxfGMpPDw0KXwwKT4+Ml0sYVtzdCs0Pj4yXT1hW1dlKzQ+PjJdLGFbc3QrOD4+Ml09YVtXZSs4Pj4yXSxhW3N0KzEyPj4yXT1hW1dlKzEyPj4yXSxhWyhzdD13KyhBKzI8PDQpfDApPj4yXT1hW1dlPj4yXSxhW3N0KzQ+PjJdPWFbV2UrND4+Ml0sYVtzdCs4Pj4yXT1hW1dlKzg+PjJd''@;'; put 'put ''LGFbc3QrMTI+PjJdPWFbV2UrMTI+PjJdLGFbKHN0PXcrKEErMzw8NCl8MCk+PjJdPWFbKFdlPWF0KygoMnxjKTw8NCl8MCk+PjJdLGFbc3QrND4+Ml09YVtXZSs0Pj4yXSxhW3N0Kzg+PjJdPWFbV2UrOD4+Ml0sYVtzdCsxMj4+Ml09YVtXZSsxMj4+Ml0sYVsoc3Q9dysoQSs0PDw0KXwwKT4+''@;'; put 'put ''Ml09YVtXZT4+Ml0sYVtzdCs0Pj4yXT1hW1dlKzQ+PjJdLGFbc3QrOD4+Ml09YVtXZSs4Pj4yXSxhW3N0KzEyPj4yXT1hW1dlKzEyPj4yXSxhWyhzdD13KyhBKzU8PDQpfDApPj4yXT1hWyhjPWF0KygoM3xjKTw8NCl8MCk+PjJdLGFbc3QrND4+Ml09YVtjKzQ+PjJdLGFbc3QrOD4+Ml09YVtj''@;'; put 'put ''Kzg+PjJdLGFbc3QrMTI+PjJdPWFbYysxMj4+Ml0scD1wKzF8MCxBPUErNnwwO2Fbaz4+Ml09YVt3Pj4yXSxhW2srND4+Ml09YVt3KzQ+PjJdLGFbays4Pj4yXT1hW3crOD4+Ml0sYVtrKzEyPj4yXT1hW3crMTI+PjJdLGFbKGY9dysoYjw8NCl8MCk+PjJdPWFbKHN0PXcrMTZ8MCk+PjJdLGFb''@;'; put 'put ''Zis0Pj4yXT1hW3N0KzQ+PjJdLGFbZis4Pj4yXT1hW3N0Kzg+PjJdLGFbZisxMj4+Ml09YVtzdCsxMj4+Ml0sUWYobCxzdCxiLDAsMCwyNTUmbSksRnQodyk7YnJlYWt9aWYoKDB8cCk8MTY3NzcyMTYpe2lmKDghPSgwfHApKWJyZWFrIGU7Zm9yKGthKGwsYyxmLG0pLEE9V2UrMTZ8MCxwPTA7''@;'; put 'put ''Oyl7aWYoKDB8cCk+PSgwfGYpKWJyZWFrIGU7YVtXZT4+Ml09YVsobT1hdCsoMisoc3Q9MypwfDApPDw0KXwwKT4+Ml0sYVtXZSs0Pj4yXT1hW20rND4+Ml0sYVtXZSs4Pj4yXT1hW20rOD4+Ml0sYVtXZSsxMj4+Ml09YVttKzEyPj4yXSxhW0E+PjJdPWFbKHN0PWF0KyhzdCs0PDw0KXwwKT4+''@;'; put 'put ''Ml0sYVtBKzQ+PjJdPWFbc3QrND4+Ml0sYVtBKzg+PjJdPWFbc3QrOD4+Ml0sYVtBKzEyPj4yXT1hW3N0KzEyPj4yXSxXbyhsLFdlLDIpLHA9cCsxfDB9fWlmKDE2Nzc3MjE2IT0oMHxwKSlicmVhayBlO2Zvcih3PTB8dnIoKEE9ZisxfDApPDw0KSxwPTE7ISgoMHxwKT49KDB8ZikpOylhWyhz''@;'; put 'put ''dD13KyhwPDw0KXwwKT4+Ml09YVsocnQ9YysocDw8NCl8MCk+PjJdLGFbc3QrND4+Ml09YVtydCs0Pj4yXSxhW3N0Kzg+PjJdPWFbcnQrOD4+Ml0sYVtzdCsxMj4+Ml09YVtydCsxMj4+Ml0scD1wKzF8MDthW3c+PjJdPWFbKHJ0PWF0KygxKyhjPTMqZnwwKTw8NCl8MCk+PjJdLGFbdys0Pj4y''@;'; put 'put ''XT1hW3J0KzQ+PjJdLGFbdys4Pj4yXT1hW3J0Kzg+PjJdLGFbdysxMj4+Ml09YVtydCsxMj4+Ml0sYVsoZj13KyhmPDw0KXwwKT4+Ml09YVsoc3Q9YXQrKGMrLTE8PDQpfDApPj4yXSxhW2YrND4+Ml09YVtzdCs0Pj4yXSxhW2YrOD4+Ml09YVtzdCs4Pj4yXSxhW2YrMTI+PjJdPWFbc3QrMTI+''@;'; put 'put ''PjJdLGthKGwsdyxBLG0pLEZ0KHcpLGFbV2U+PjJdPWFbc3Q+PjJdLGFbV2UrND4+Ml09YVtzdCs0Pj4yXSxhW1dlKzg+PjJdPWFbc3QrOD4+Ml0sYVtXZSsxMj4+Ml09YVtzdCsxMj4+Ml0sYVsoc3Q9V2UrMTZ8MCk+PjJdPWFbcnQ+PjJdLGFbc3QrND4+Ml09YVtydCs0Pj4yXSxhW3N0Kzg+''@;'; put 'put ''PjJdPWFbcnQrOD4+Ml0sYVtzdCsxMj4+Ml09YVtydCsxMj4+Ml0sX1sobT1XZSszMnwwKT4+M109K19bV2U+PjNdKyArX1tzdD4+M10tK19bYXQrKGM8PDQpPj4zXSxfW1dlKzQwPj4zXT0rX1tXZSs4Pj4zXSsgK19bV2UrMjQ+PjNdLStfW2F0KyhjPDw0KSs4Pj4zXSxXbyhsLHN0LDIpLGFb''@;'; put 'put ''c3Q+PjJdPWFbbT4+Ml0sYVtzdCs0Pj4yXT1hW20rND4+Ml0sYVtzdCs4Pj4yXT1hW20rOD4+Ml0sYVtzdCsxMj4+Ml09YVttKzEyPj4yXSxXbyhsLFdlLDIpO2JyZWFrfWlmKCgwfHApPDUwMzMxNjQ4KXtpZigzMzU1NDQzMiE9KDB8cCkpYnJlYWsgZTtmb3Iodz0wfHZyKChBPWYrMnwwKTw8''@;'; put 'put ''NCksYVt3Pj4yXT1hW2M+PjJdLGFbdys0Pj4yXT1hW2MrND4+Ml0sYVt3Kzg+PjJdPWFbYys4Pj4yXSxhW3crMTI+PjJdPWFbYysxMj4+Ml0sYVsoYj13KzE2fDApPj4yXT1hW2s+PjJdLGFbYis0Pj4yXT1hW2srND4+Ml0sYVtiKzg+PjJdPWFbays4Pj4yXSxhW2IrMTI+PjJdPWFbaysxMj4+''@;'; put 'put ''Ml0sX1t3KzMyPj4zXT0uMzMzMzMzMzMzMzMzMzMzMyooK19bKGI9YXQrNDh8MCk+PjNdLStfWyhmPWF0KzY0fDApPj4zXSkrICtfW2s+PjNdLF9bdys0MD4+M109LjMzMzMzMzMzMzMzMzMzMzMqKCtfWyhzdD1hdCs1NnwwKT4+M10tK19bKHA9YXQrNzJ8MCk+PjNdKSsgK19bYXQrNDA+PjNd''@;'; put 'put ''LF9bdys0OD4+M109LjMzMzMzMzMzMzMzMzMzMzMqKChjdD0rX1tiPj4zXSktK19bZj4+M10pK2N0LF9bdys1Nj4+M109LjMzMzMzMzMzMzMzMzMzMzMqKChjdD0rX1tzdD4+M10pLStfW3A+PjNdKStjdCxwPTQ7ISgoMHxwKT49KDB8QSkpOylhWyhzdD13KyhwPDw0KXwwKT4+Ml09YVsoZj1j''@;'; put 'put ''KyhwKy0yPDw0KXwwKT4+Ml0sYVtzdCs0Pj4yXT1hW2YrND4+Ml0sYVtzdCs4Pj4yXT1hW2YrOD4+Ml0sYVtzdCsxMj4+Ml09YVtmKzEyPj4yXSxwPXArMXwwO2thKGwsdyxBLG0pLEZ0KHcpLGFbV2U+PjJdPWFbYj4+Ml0sYVtXZSs0Pj4yXT1hW2IrND4+Ml0sYVtXZSs4Pj4yXT1hW2IrOD4+''@;'; put 'put ''Ml0sYVtXZSsxMj4+Ml09YVtiKzEyPj4yXSxhWyhzdD1XZSsxNnwwKT4+Ml09YVtrPj4yXSxhW3N0KzQ+PjJdPWFbays0Pj4yXSxhW3N0Kzg+PjJdPWFbays4Pj4yXSxhW3N0KzEyPj4yXT1hW2srMTI+PjJdLFdvKGwsV2UsMik7YnJlYWt9aWYoKDB8cCk+PTY3MTA4ODY0KXtpZig2NzEwODg2''@;'; put 'put ''NCE9KDB8cCkpYnJlYWsgZTtpZig0PT0oMHxmKSl7c3Q9MHx2cig5NiksYVtzdD4+Ml09YVtjPj4yXSxhW3N0KzQ+PjJdPWFbYys0Pj4yXSxhW3N0Kzg+PjJdPWFbYys4Pj4yXSxhW3N0KzEyPj4yXT1hW2MrMTI+PjJdLGFbKGY9c3QrMTZ8MCk+PjJdPWFbaz4+Ml0sYVtmKzQ+PjJdPWFbays0''@;'; put 'put ''Pj4yXSxhW2YrOD4+Ml09YVtrKzg+PjJdLGFbZisxMj4+Ml09YVtrKzEyPj4yXSxhWyhmPXN0KzMyfDApPj4yXT1hWyhydD1hdCs2NHwwKT4+Ml0sYVtmKzQ+PjJdPWFbcnQrND4+Ml0sYVtmKzg+PjJdPWFbcnQrOD4+Ml0sYVtmKzEyPj4yXT1hW3J0KzEyPj4yXSxhWyhmPXN0KzQ4fDApPj4y''@;'; put 'put ''XT1hWyhjPWMrMzJ8MCk+PjJdLGFbZis0Pj4yXT1hW2MrND4+Ml0sYVtmKzg+PjJdPWFbYys4Pj4yXSxhW2YrMTI+PjJdPWFbYysxMj4+Ml0sYVsoYz1zdCs2NHwwKT4+Ml09YVsoZj1hdCsxMjh8MCk+PjJdLGFbYys0Pj4yXT1hW2YrND4+Ml0sYVtjKzg+PjJdPWFbZis4Pj4yXSxhW2MrMTI+''@;'; put 'put ''PjJdPWFbZisxMj4+Ml0sYVsoYz1zdCs4MHwwKT4+Ml09YVsocWU9YXQrMTYwfDApPj4yXSxhW2MrND4+Ml09YVtxZSs0Pj4yXSxhW2MrOD4+Ml09YVtxZSs4Pj4yXSxhW2MrMTI+PjJdPWFbcWUrMTI+PjJdLGthKGwsc3QsNixtKSxGdChzdCksX1tXZT4+M109K19bYXQrMTc2Pj4zXSsgK19b''@;'; put 'put ''Yj4+M10tK19bYXQ+PjNdLF9bV2UrOD4+M109K19bYXQrMTg0Pj4zXSsgK19bYXQrMjQ+PjNdLStfW2F0Kzg+PjNdLGFbKHN0PVdlKzE2fDApPj4yXT1hW3J0Pj4yXSxhW3N0KzQ+PjJdPWFbcnQrND4+Ml0sYVtzdCs4Pj4yXT1hW3J0Kzg+PjJdLGFbc3QrMTI+PjJdPWFbcnQrMTI+PjJdLFdv''@;'; put 'put ''KGwsV2UsMiksYVtzdD4+Ml09YVtmPj4yXSxhW3N0KzQ+PjJdPWFbZis0Pj4yXSxhW3N0Kzg+PjJdPWFbZis4Pj4yXSxhW3N0KzEyPj4yXT1hW2YrMTI+PjJdLFdvKGwsV2UsMiksYVtzdD4+Ml09YVthdD4+Ml0sYVtzdCs0Pj4yXT1hW2F0KzQ+PjJdLGFbc3QrOD4+Ml09YVthdCs4Pj4yXSxh''@;'; put 'put ''W3N0KzEyPj4yXT1hW2F0KzEyPj4yXSxXbyhsLFdlLDIpO2JyZWFrfVByKDEwNTQzOCwxMDU0NDksNzE0LDEwNTQ1OCl9aWYoNTAzMzE2NDghPSgwfHApKWJyZWFrIGU7Zm9yKHc9MHx2cigoQT1mKzN8MCk8PDQpLGFbdz4+Ml09YVtjPj4yXSxhW3crND4+Ml09YVtjKzQ+PjJdLGFbdys4Pj4y''@;'; put 'put ''XT1hW2MrOD4+Ml0sYVt3KzEyPj4yXT1hW2MrMTI+PjJdLF9bdysxNj4+M109KGN0PStfW2M+PjNdKS0uMjUqKGN0LStfW2I+PjNdKSxfW3crMjQ+PjNdPWN0PS4zMzMzMzMzMzMzMzMzMzMzKigrX1socD1hdCs1NnwwKT4+M10tK19bYXQrNzI+PjNdKSsgK19bYys4Pj4zXSxfW3crMzI+PjNd''@;'; put 'put ''PShadD0rX1tjPj4zXSktMiooWnQtK19bYj4+M10pLF9bdys0MD4+M109Y3QsX1t3KzQ4Pj4zXT0oY3Q9K19bYz4+M10pLTIuMjUqKGN0LStfW2I+PjNdKSxfW3crNTY+PjNdPStfW3A+PjNdLF9bdys2ND4+M109K19bYXQrNDg+PjNdLF9bdys3Mj4+M109K19bcD4+M10scD00OyEoKDB8cCk+''@;'; put 'put ''PSgwfEEpKTspYVsoc3Q9dysocDw8NCl8MCk+PjJdPWFbKGY9YysocCstMzw8NCl8MCk+PjJdLGFbc3QrND4+Ml09YVtmKzQ+PjJdLGFbc3QrOD4+Ml09YVtmKzg+PjJdLGFbc3QrMTI+PjJdPWFbZisxMj4+Ml0scD1wKzF8MDtrYShsLHcsQSxtKSxGdCh3KTticmVha31pZigoMHxwKTwzMTg3''@;'; put 'put ''NjcxMDQpe2lmKCgwfHApPDI1MTY1ODI0MCl7aWYoKDB8cCk8MjE4MTAzODA4KXtpZigyMDEzMjY1OTIhPSgwfHApKWJyZWFrIGU7T2U9MHx2cihzdD1mPDw0KSxfW09lPj4zXT1jdD0rX1soTGU9YysxNnwwKT4+M10sVmU9YXQrNDh8MCxfW09lKzg+PjNdPVp0PS41KigrX1socnQ9YysyNHww''@;'; put 'put ''KT4+M10tKFp0PStfWyhxZT1jKzQwfDApPj4zXSkpK1p0Ky4xMjUqKCtfWyhSZT1hdCs1NnwwKT4+M10tK19bKEhlPWF0KzcyfDApPj4zXSksX1tPZSsxNj4+M109RXQ9MiooK19baz4+M10tK19bVmU+PjNdKStjdCxfW09lKzI0Pj4zXT1adCxfW09lKzMyPj4zXT1FdCxfW09lKzQwPj4zXT1a''@;'; put 'put ''dD0uNSooK19bUmU+PjNdLStfW0hlPj4zXSkrWnQsX1tPZSs0OD4+M109Y3QsX1tPZSs1Nj4+M109WnQsa2EobCxPZSxmLG0pLEZ0KE9lKSxzdD0wfHZyKHN0KSxfW3N0Pj4zXT1adD0rX1trPj4zXSsgK19bTGU+PjNdLStfW1ZlPj4zXSxfW3N0Kzg+PjNdPWN0PS41KigrX1tydD4+M10tKGN0''@;'; put 'put ''PStfW3FlPj4zXSkpK2N0Ky0uNjI1KigrX1tSZT4+M10tK19bSGU+PjNdKSxFdD0rX1trPj4zXS0rX1tWZT4+M10rWnQsX1soVmU9c3QrMTZ8MCk+PjNdPUV0LF9bc3QrMjQ+PjNdPWN0LF9bc3QrMzI+PjNdPUV0LF9bc3QrNDA+PjNdPWN0PS41KigrX1tSZT4+M10tK19bSGU+PjNdKStjdCxf''@;'; put 'put ''W3N0KzQ4Pj4zXT1adCxfW3N0KzU2Pj4zXT1jdCxrYShsLHN0LGYsbSksX1tXZT4+M109K19bVmU+PjNdLF9bV2UrOD4+M109LjUqKCtfW3J0Pj4zXS0oY3Q9K19bcWU+PjNdKSkrY3QsX1tXZSsxNj4+M109K19bYz4+M10sX1tXZSsyND4+M109LjUqKCtfW2MrOD4+M10tK19bYys1Nj4+M10p''@;'; put 'put ''K2N0LFdvKGwsV2UsMiksRnQoc3QpO2JyZWFrfWlmKCgwfHApPDIzNDg4MTAyNCl7aWYoMjE4MTAzODA4IT0oMHxwKSlicmVhayBlO1JlPTB8dnIoc3Q9Zjw8NCksX1tSZT4+M109Y3Q9K19bYz4+M10sX1tSZSs4Pj4zXT1adD0uNSooK19bKHFlPWMrMjR8MCk+PjNdLShadD0rX1soVmU9Yys0''@;'; put 'put ''MHwwKT4+M10pKStadCsuMTI1KigrX1soSGU9YXQrNTZ8MCk+PjNdLStfWyhydD1hdCs3MnwwKT4+M10pLF9bUmUrMTY+PjNdPWN0LF9bUmUrMjQ+PjNdPUV0PS41KigrX1tIZT4+M10tK19bcnQ+PjNdKStadCxfW1JlKzMyPj4zXT1jdC09MiooK19bSGU+PjNdLStfW3J0Pj4zXSksX1tSZSs0''@;'; put 'put ''MD4+M109RXQsX1tSZSs0OD4+M109Y3QsX1tSZSs1Nj4+M109WnQsa2EobCxSZSxmLG0pLEZ0KFJlKSxzdD0wfHZyKHN0KSxfW3N0Pj4zXT1adD0rX1tjPj4zXS0rX1trPj4zXSsgK19bYXQrNDg+PjNdLF9bc3QrOD4+M109Y3Q9LjUqKCtfW3FlPj4zXS0oY3Q9K19bVmU+PjNdKSkrY3QrLS42''@;'; put 'put ''MjUqKCtfW0hlPj4zXS0rX1tydD4+M10pLF9bc3QrMTY+PjNdPVp0LF9bc3QrMjQ+PjNdPUV0PS41KigrX1tIZT4+M10tK19bcnQ+PjNdKStjdCxfW3N0KzMyPj4zXT1adC09K19bSGU+PjNdLStfW3J0Pj4zXSxfW3N0KzQwPj4zXT1FdCxfWyhydD1zdCs0OHwwKT4+M109WnQsX1tzdCs1Nj4+''@;'; put 'put ''M109Y3Qsa2EobCxzdCxmLG0pLF9bV2U+PjNdPStfW2MrMTY+PjNdLF9bV2UrOD4+M109LjUqKCtfW3FlPj4zXS0oY3Q9K19bVmU+PjNdKSkrY3QsX1tXZSsxNj4+M109K19bcnQ+PjNdLF9bV2UrMjQ+PjNdPS41KigrX1tjKzg+PjNdLStfW2MrNTY+PjNdKStjdCxXbyhsLFdlLDIpLEZ0KHN0''@;'; put 'put ''KTticmVha31pZigyMzQ4ODEwMjQhPSgwfHApKWJyZWFrIGU7VmU9MHx2cihzdD1mPDw0KSxfW1ZlPj4zXT1adD0uNSooK19bYz4+M10tKFp0PStfWyhPZT1jKzE2fDApPj4zXSkpK1p0Ky0xLjEyNSooK19baz4+M10tK19bKExlPWF0KzQ4fDApPj4zXSksX1tWZSs4Pj4zXT1jdD0uNSooK19b''@;'; put 'put ''KEhlPWMrMjR8MCk+PjNdLShjdD0rX1soUmU9Yys0MHwwKT4+M10pKStjdCsuMTI1KigrX1socnQ9YXQrNTZ8MCk+PjNdLStfWyhxZT1hdCs3MnwwKT4+M10pLF9bVmUrMTY+PjNdPUV0PStfW2s+PjNdLStfW0xlPj4zXStadCxfW1ZlKzI0Pj4zXT1jdCxfW1ZlKzMyPj4zXT1FdCxfW1ZlKzQw''@;'; put 'put ''Pj4zXT1jdD0uNSooK19bcnQ+PjNdLStfW3FlPj4zXSkrY3QsX1tWZSs0OD4+M109WnQsX1tWZSs1Nj4+M109Y3Qsa2EobCxWZSxmLG0pLEZ0KFZlKSxWZT0wfHZyKHN0KSxfW1ZlPj4zXT1jdD0uNSooK19bYz4+M10tKGN0PStfW09lPj4zXSkpK2N0Ky0xLjEyNSooK19baz4+M10tK19bTGU+''@;'; put 'put ''PjNdKSxfW1ZlKzg+PjNdPVp0PS41KigrX1tIZT4+M10tKFp0PStfW1JlPj4zXSkpK1p0Ky0uNjI1KigrX1tydD4+M10tK19bcWU+PjNdKSxfW1ZlKzE2Pj4zXT1FdD0rX1trPj4zXS0rX1tMZT4+M10rY3QsX1tWZSsyND4+M109WnQsX1tWZSszMj4+M109RXQsX1tWZSs0MD4+M109WnQ9LjUq''@;'; put 'put ''KCtfW3J0Pj4zXS0rX1txZT4+M10pK1p0LF9bVmUrNDg+PjNdPWN0LF9bVmUrNTY+PjNdPVp0LGthKGwsVmUsZixtKSxGdChWZSksVmU9MHx2cihzdCksX1tWZT4+M109WnQ9LjUqKCtfW2M+PjNdLShadD0rX1tPZT4+M10pKStadCsuMTI1KigrX1trPj4zXS0rX1tMZT4+M10pLF9bVmUrOD4+''@;'; put 'put ''M109Y3Q9LjUqKCtfW0hlPj4zXS0oY3Q9K19bUmU+PjNdKSkrY3QrLS42MjUqKCtfW3J0Pj4zXS0rX1txZT4+M10pLF9bVmUrMTY+PjNdPUV0PStfW2s+PjNdLStfW0xlPj4zXStadCxfW1ZlKzI0Pj4zXT1jdCxfW1ZlKzMyPj4zXT1FdCxfW1ZlKzQwPj4zXT1jdD0uNSooK19bcnQ+PjNdLStf''@;'; put 'put ''W3FlPj4zXSkrY3QsX1tWZSs0OD4+M109WnQsX1tWZSs1Nj4+M109Y3Qsa2EobCxWZSxmLG0pLEZ0KFZlKSxzdD0wfHZyKHN0KSxfW3N0Pj4zXT1jdD0uNSooK19bYz4+M10tKGN0PStfW09lPj4zXSkpK2N0Ky4xMjUqKCtfW2s+PjNdLStfW0xlPj4zXSksX1tzdCs4Pj4zXT1adD0uNSooK19b''@;'; put 'put ''SGU+PjNdLShadD0rX1tSZT4+M10pKStadCsuMTI1KigrX1tydD4+M10tK19bcWU+PjNdKSxfWyhWZT1zdCsxNnwwKT4+M109RXQ9K19baz4+M10tK19bTGU+PjNdK2N0LF9bc3QrMjQ+PjNdPVp0LF9bc3QrMzI+PjNdPUV0LF9bc3QrNDA+PjNdPVp0PS41KigrX1tydD4+M10tK19bcWU+PjNd''@;'; put 'put ''KStadCxfW3N0KzQ4Pj4zXT1jdCxfW3N0KzU2Pj4zXT1adCxrYShsLHN0LGYsbSksX1tXZT4+M109K19bVmU+PjNdLF9bKFZlPVdlKzh8MCk+PjNdPS41KigrX1tIZT4+M10tKFp0PStfW1JlPj4zXSkpK1p0LF9bKHFlPVdlKzE2fDApPj4zXT0rX1tjPj4zXSxfWyhtPVdlKzI0fDApPj4zXT0u''@;'; put 'put ''NSooK19bKHJ0PWMrOHwwKT4+M10tK19bKGY9Yys1NnwwKT4+M10pK1p0LFdvKGwsV2UsMiksX1tXZT4+M109LjUqKCtfW2M+PjNdLShadD0rX1tPZT4+M10pKStadCstMS4xMjUqKCtfW2s+PjNdLStfW0xlPj4zXSksX1tWZT4+M109LjUqKCtfW0hlPj4zXS0oY3Q9K19bUmU+PjNdKSkrY3Qs''@;'; put 'put ''X1txZT4+M109WnQsX1ttPj4zXT0uNSooK19bcnQ+PjNdLStfW2Y+PjNdKStjdCxXbyhsLFdlLDIpLEZ0KHN0KTticmVha31pZigoMHxwKTwyODUyMTI2NzIpe2lmKCgwfHApPDI2ODQzNTQ1Nil7aWYoMjUxNjU4MjQwIT0oMHxwKSlicmVhayBlO09lPTB8dnIoc3Q9Zjw8NCksX1tPZT4+M109''@;'; put 'put ''Y3Q9KGN0PStfWyhMZT1jKzE2fDApPj4zXSktK19baz4+M10rLjUqKCtfW2M+PjNdLWN0KSsgK19bKFZlPWF0KzQ4fDApPj4zXSxfW09lKzg+PjNdPVp0PS41KigrX1soSGU9YysyNHwwKT4+M10tKFp0PStfWyhSZT1jKzQwfDApPj4zXSkpK1p0Ky4xMjUqKCtfWyhydD1hdCs1NnwwKT4+M10t''@;'; put 'put ''K19bKHFlPWF0KzcyfDApPj4zXSksX1tPZSsxNj4+M109RXQ9MiooK19baz4+M10tK19bVmU+PjNdKStjdCxfW09lKzI0Pj4zXT1adCxfW09lKzMyPj4zXT1FdCxfW09lKzQwPj4zXT1adD0uNSooK19bcnQ+PjNdLStfW3FlPj4zXSkrWnQsX1tPZSs0OD4+M109Y3QsX1tPZSs1Nj4+M109WnQs''@;'; put 'put ''a2EobCxPZSxmLG0pLEZ0KE9lKSxzdD0wfHZyKHN0KSxfW3N0Pj4zXT1adD0oWnQ9K19bTGU+PjNdKS0rX1trPj4zXSsuNSooK19bYz4+M10tWnQpKyArX1tWZT4+M10sX1tzdCs4Pj4zXT1jdD0uNSooK19bSGU+PjNdLShjdD0rX1tSZT4+M10pKStjdCstLjYyNSooK19bcnQ+PjNdLStfW3Fl''@;'; put 'put ''Pj4zXSksRXQ9MiooK19baz4+M10tK19bVmU+PjNdKStadCxfWyhWZT1zdCsxNnwwKT4+M109RXQsX1tzdCsyND4+M109Y3QsX1tzdCszMj4+M109RXQsX1tzdCs0MD4+M109Y3Q9LjUqKCtfW3J0Pj4zXS0rX1txZT4+M10pK2N0LF9bc3QrNDg+PjNdPVp0LF9bc3QrNTY+PjNdPWN0LGthKGws''@;'; put 'put ''c3QsZixtKSxfW1dlPj4zXT0rX1tWZT4+M10sX1soVmU9V2UrOHwwKT4+M109LjUqKCtfW0hlPj4zXS0oY3Q9K19bUmU+PjNdKSkrY3QsX1socWU9V2UrMTZ8MCk+PjNdPStfW2M+PjNdLF9bKG09V2UrMjR8MCk+PjNdPS41KigrX1socnQ9Yys4fDApPj4zXS0rX1soZj1jKzU2fDApPj4zXSkr''@;'; put 'put ''Y3QsV28obCxXZSwyKSxfW1dlPj4zXT0rX1tMZT4+M10sX1tWZT4+M109LjUqKCtfW0hlPj4zXS0oY3Q9K19bUmU+PjNdKSkrY3QsX1txZT4+M109K19bc3Q+PjNdLF9bbT4+M109LjUqKCtfW3J0Pj4zXS0rX1tmPj4zXSkrY3QsV28obCxXZSwyKSxGdChzdCk7YnJlYWt9aWYoMjY4NDM1NDU2''@;'; put 'put ''IT0oMHxwKSlicmVhayBlO3N0PTB8dnIoZjw8NCksX1tzdD4+M109K19bYz4+M10sTGU9YXQrNDh8MCxfW3N0Kzg+PjNdPStfW2F0KzI0Pj4zXS0uNSooK19bKEhlPWF0KzU2fDApPj4zXS0rX1soVmU9YXQrNzJ8MCk+PjNdKSxfW3N0KzE2Pj4zXT0rX1tMZT4+M10sX1tzdCsyND4+M109KGN0''@;'; put 'put ''PStfW0hlPj4zXSktLjUqKGN0LStfW1ZlPj4zXSksX1tzdCszMj4+M109K19bYyszMj4+M10sX1tzdCs0MD4+M109LjUqKCtfW0hlPj4zXS0rX1tWZT4+M10pKyArX1socWU9Yys0MHwwKT4+M10sX1tzdCs0OD4+M109K19bYz4+M10sX1tzdCs1Nj4+M109LjUqKCtfW0hlPj4zXS0rX1tWZT4+''@;'; put 'put ''M10pKyArX1txZT4+M10sa2EobCxzdCxmLG0pLF9bV2U+PjNdPVp0PShjdD0uMjUqKCtfW2s+PjNdLStfW0xlPj4zXSkpKyArX1soUmU9YysxNnwwKT4+M10sX1socnQ9V2UrOHwwKT4+M109RXQ9LjUqKCtfWyhPZT1jKzI0fDApPj4zXS0oRXQ9K19bcWU+PjNdKSkrRXQrLjEyNSooa3Q9K19b''@;'; put 'put ''SGU+PjNdLStfW1ZlPj4zXSksX1soZj1XZSsxNnwwKT4+M109Y3QrWnQsX1sobT1XZSsyNHwwKT4+M109RXQtLjI1Kmt0LFdvKGwsV2UsMiksX1tXZT4+M109RXQ9KGt0PS4yNSooK19baz4+M10tK19bTGU+PjNdKSkrICtfW1JlPj4zXSxfW3J0Pj4zXT1adD0uNSooK19bT2U+PjNdLShadD0r''@;'; put 'put ''X1txZT4+M10pKStadCstLjEyNSooY3Q9K19bSGU+PjNdLStfW1ZlPj4zXSksX1tmPj4zXT1rdCtFdCxfW20+PjNdPS4yNSpjdCtadCxXbyhsLFdlLDIpLF9bV2U+PjNdPShadD0uMjUqKCtfW2s+PjNdLStfW0xlPj4zXSkpKyArX1tSZT4+M10sX1tydD4+M109Y3Q9Ljc1KigrX1tIZT4+M10t''@;'; put 'put ''K19bVmU+PjNdKSsgK19bcWU+PjNdLF9bZj4+M109K19bYz4+M10tWnQsX1ttPj4zXT1jdCxXbyhsLFdlLDIpLEZ0KHN0KTticmVha31pZigoMHxwKTwzMDE5ODk4ODgpe2lmKDI4NTIxMjY3MiE9KDB8cCkpYnJlYWsgZTtWZT0wfHZyKGY8PDQpLF9bVmU+PjNdPVp0PS41KigrX1trPj4zXS0r''@;'; put 'put ''X1socWU9YXQrNDh8MCk+PjNdKygrX1tjPj4zXS0oWnQ9K19bKExlPWMrMTZ8MCk+PjNdKSkpK1p0LF9bVmUrOD4+M109a3Q9LjUqKCtfW2s+PjNdLStfW3FlPj4zXSsoK19bKEhlPWMrMjR8MCk+PjNdLShrdD0rX1soUmU9Yys0MHwwKT4+M10pKSkra3QsX1tWZSsxNj4+M109WnQsX1tWZSsy''@;'; put 'put ''ND4+M109WnQ9LjUqKCtfW0hlPj4zXS0oWnQ9K19bUmU+PjNdKS0oUj0rX1trPj4zXS0rX1txZT4+M10pKStadCxfW1ZlKzMyPj4zXT1jdD0uNSooK19bYz4+M10tKGN0PStfW0xlPj4zXSktUikrY3QsX1tWZSs0MD4+M109WnQsX1tWZSs0OD4+M109Y3QsX1tWZSs1Nj4+M109a3Qsa2EobCxW''@;'; put 'put ''ZSxmLG0pLEZ0KFZlKSxfW1dlPj4zXT1SPShrdD0uNSooK19bYz4+M10tKGt0PStfW0xlPj4zXSkpK2t0KSsoWnQ9Ljc1KihjdD0rX1trPj4zXS0rX1txZT4+M10pKSxfWyhWZT1XZSs4fDApPj4zXT1adD0oRXQ9LjUqKCtfW0hlPj4zXS0oRXQ9K19bUmU+PjNdKSkrRXQpK1p0LF9bKHJ0PVdl''@;'; put 'put ''KzE2fDApPj4zXT1SLF9bKHN0PVdlKzI0fDApPj4zXT1FdCs9Y3QqPS0uNzUsX1tXZSszMj4+M109Y3Q9a3QrY3QsX1tXZSs0MD4+M109RXQsX1tXZSs0OD4+M109Y3QsX1tXZSs1Nj4+M109WnQsYVsoZj1XZSs2NHwwKT4+Ml09YVtXZT4+Ml0sYVtmKzQ+PjJdPWFbV2UrND4+Ml0sYVtmKzg+''@;'; put 'put ''PjJdPWFbV2UrOD4+Ml0sYVtmKzEyPj4yXT1hW1dlKzEyPj4yXSxXbyhsLFdlLDUpLF9bV2U+PjNdPS41KigoY3Q9K19bYz4+M10pLShadD0rX1tMZT4+M10pKStadCsuNzUqKCtfW2s+PjNdLStfW3FlPj4zXSksX1tWZT4+M109LjUqKCtfW0hlPj4zXS0oWnQ9K19bUmU+PjNdKSkrWnQsX1ty''@;'; put 'put ''dD4+M109Y3QsX1tzdD4+M109LjUqKCtfWyhmPWMrOHwwKT4+M10tK19bKG09Yys1NnwwKT4+M10pK1p0LFdvKGwsV2UsMiksX1tXZT4+M109WnQ9K19bTGU+PjNdLF9bVmU+PjNdPS41KigrX1tIZT4+M10tKGN0PStfW1JlPj4zXSkpK2N0LF9bcnQ+PjNdPS41KigrX1tjPj4zXS1adCkrWnQr''@;'; put 'put ''LS43NSooK19baz4+M10tK19bcWU+PjNdKSxfW3N0Pj4zXT0uNSooK19bZj4+M10tK19bbT4+M10pK2N0LFdvKGwsV2UsMik7YnJlYWt9aWYoMzAxOTg5ODg4IT0oMHxwKSlicmVhayBlO3N0PTB8dnIoKHJ0PWYrMTJ8MCk8PDQpLF9bc3Q+PjNdPU09LjUqKCtfW2M+PjNdLShNPStfWyhIZT1j''@;'; put 'put ''KzE2fDApPj4zXSkpK00rLjI1KigrX1trPj4zXS0rX1soZ2U9YXQrNDh8MCk+PjNdKSxfWyhPZT1zdCs4fDApPj4zXT1rdD0uNSooK19bKExlPWF0KzU2fDApPj4zXS0rX1soUmU9YXQrNzJ8MCk+PjNdKygrX1socWU9YysyNHwwKT4+M10tKGt0PStfWyhWZT1jKzQwfDApPj4zXSkpKStrdCxf''@;'; put 'put ''W3N0KzE2Pj4zXT1NLF9bKGJlPXN0KzI0fDApPj4zXT1rdD0uMTI1KigrX1tMZT4+M10tK19bUmU+PjNdKStrdCxfWyhmPXN0KzMyfDApPj4zXT1FdD1NLS4xMjUqKCtfW2s+PjNdLStfW2dlPj4zXSksX1tzdCs0MD4+M109Uj0uMTI1KigrX1tMZT4+M10tK19bUmU+PjNdKStrdCxfW3N0KzQ4''@;'; put 'put ''Pj4zXT1NLF9bc3QrNTY+PjNdPVp0PS4xMjUqKCtfW0xlPj4zXS0rX1tSZT4+M10pK1IsX1tzdCs2ND4+M109TSxfW3N0KzcyPj4zXT1NPS4xMjUqKCtfW0xlPj4zXS0rX1tSZT4+M10pK1p0LF9bc3QrODA+PjNdPUV0LF9bc3QrODg+PjNdPU0sX1tzdCs5Nj4+M109RXQ9LjUqKCtfW2M+PjNd''@;'; put 'put ''LShFdD0rX1tIZT4+M10pKStFdCxfW3N0KzEwND4+M109WnQsX1tzdCsxMTI+PjNdPWN0PUV0LS4xMjUqKCtfW2s+PjNdLStfW2dlPj4zXSksX1tzdCsxMjA+PjNdPU0sX1tzdCsxMjg+PjNdPWN0LT0uMTI1KigrX1trPj4zXS0rX1tnZT4+M10pLF9bc3QrMTM2Pj4zXT1NLF9bc3QrMTQ0Pj4z''@;'; put 'put ''XT1jdCxfW3N0KzE1Mj4+M109WnQsX1tzdCsxNjA+PjNdPVp0PS4xMjUqKCtfW2s+PjNdLStfW2dlPj4zXSkrY3QsX1tzdCsxNjg+PjNdPVIsX1tzdCsxNzY+PjNdPWN0LF9bc3QrMTg0Pj4zXT1rdCxfW3N0KzE5Mj4+M109Y3QsX1tzdCsyMDA+PjNdPWN0PStfW09lPj4zXSxfW3N0KzIwOD4+''@;'; put 'put ''M109WnQsX1tzdCsyMTY+PjNdPWN0LF9bKE9lPXN0KzIyNHwwKT4+M109RXQsX1tzdCsyMzI+PjNdPStfW2JlPj4zXSxfW3N0KzI0MD4+M109K19bZj4+M10sX1tzdCsyNDg+PjNdPWN0LGthKGwsc3QscnQsbSksX1tXZT4+M109Y3Q9K19bT2U+PjNdLF9bKHJ0PVdlKzh8MCk+PjNdPUV0PS41''@;'; put 'put ''KigrX1txZT4+M10tKEV0PStfW1ZlPj4zXSkpK0V0LF9bKGY9V2UrMTZ8MCk+PjNdPWN0LF9bKG09V2UrMjR8MCk+PjNdPS4xMjUqKCtfW0xlPj4zXS0rX1tSZT4+M10pK0V0LFdvKGwsV2UsMiksX1tXZT4+M109RXQ9K19bT2U+PjNdLF9bcnQ+PjNdPWN0PS41KigrX1txZT4+M10tKGN0PStf''@;'; put 'put ''W1ZlPj4zXSkpK2N0Ky4yNSooWnQ9K19bTGU+PjNdLStfW1JlPj4zXSksX1tmPj4zXT1FdCxfW20+PjNdPS4xMjUqWnQrY3QsV28obCxXZSwyKSxfW1dlPj4zXT0rX1tIZT4+M10sX1tydD4+M109LjUqKCtfW3FlPj4zXS0oY3Q9K19bVmU+PjNdKSkrY3QsX1tmPj4zXT0rX1tjPj4zXSxfW20+''@;'; put 'put ''PjNdPS41KigrX1tjKzg+PjNdLStfW2MrNTY+PjNdKStjdCxXbyhsLFdlLDIpLEZ0KHN0KTticmVha31pZigoMHxwKTwzNjkwOTg3NTIpe2lmKCgwfHApPDMzNTU0NDMyMCl7aWYoMzE4NzY3MTA0IT0oMHxwKSlicmVhayBlO3N0PTB8dnIoKHJ0PWYrNHwwKTw8NCksX1tzdD4+M109RXQ9LjUq''@;'; put 'put ''KCtfW2M+PjNdLShFdD0rX1soSGU9YysxNnwwKT4+M10pKStFdCsuMTI1KigrX1trPj4zXS0rX1soZj1hdCs0OHwwKT4+M10pLF9bc3QrOD4+M109Y3Q9LjUqKCtfWyhMZT1hdCs1NnwwKT4+M10tK19bKFJlPWF0KzcyfDApPj4zXSsoK19bKHFlPWMrMjR8MCk+PjNdLShjdD0rX1soVmU9Yys0''@;'; put 'put ''MHwwKT4+M10pKSkrY3QsX1tzdCsxNj4+M109Uj0uMTI1KigrX1trPj4zXS0rX1tmPj4zXSkrRXQsX1tzdCsyND4+M109WnQ9LjEyNSooK19bTGU+PjNdLStfW1JlPj4zXSkrY3QsX1tzdCszMj4+M109UixfW3N0KzQwPj4zXT1SPS4yNSooK19bTGU+PjNdLStfW1JlPj4zXSkrWnQsX1tzdCs0''@;'; put 'put ''OD4+M109RXQsX1tzdCs1Nj4+M109a3Q9LjEyNSooK19bTGU+PjNdLStfW1JlPj4zXSkrUixfW3N0KzY0Pj4zXT1FdC09LjI1KigrX1trPj4zXS0rX1tmPj4zXSksX1tzdCs3Mj4+M109a3QsX1tzdCs4MD4+M109a3Q9RXQtLjEyNSooK19baz4+M10tK19bZj4+M10pLF9bc3QrODg+PjNdPVIs''@;'; put 'put ''X1tzdCs5Nj4+M109a3QsX1tzdCsxMDQ+PjNdPVp0LF9bc3QrMTEyPj4zXT1FdCxfW3N0KzEyMD4+M109Y3Qsa2EobCxzdCxydCxtKSxfW1dlPj4zXT1jdD0uNSooK19bYz4+M10tKGN0PStfW0hlPj4zXSkpK2N0LF9bKHJ0PVdlKzh8MCk+PjNdPUV0PS41KigrX1txZT4+M10tKEV0PStfW1Zl''@;'; put 'put ''Pj4zXSkpK0V0LF9bKGY9V2UrMTZ8MCk+PjNdPWN0LF9bKG09V2UrMjR8MCk+PjNdPS4xMjUqKCtfW0xlPj4zXS0rX1tSZT4+M10pK0V0LFdvKGwsV2UsMiksX1tXZT4+M109RXQ9LjUqKCtfW2M+PjNdLShFdD0rX1tIZT4+M10pKStFdCxfW3J0Pj4zXT1jdD0uNSooK19bcWU+PjNdLShjdD0r''@;'; put 'put ''X1tWZT4+M10pKStjdCsuMjUqKFp0PStfW0xlPj4zXS0rX1tSZT4+M10pLF9bZj4+M109RXQsX1ttPj4zXT0uMTI1Klp0K2N0LFdvKGwsV2UsMiksX1tXZT4+M109K19bSGU+PjNdLF9bcnQ+PjNdPS41KigrX1txZT4+M10tKGN0PStfW1ZlPj4zXSkpK2N0LF9bZj4+M109K19bYz4+M10sX1tt''@;'; put 'put ''Pj4zXT0uNSooK19bYys4Pj4zXS0rX1tjKzU2Pj4zXSkrY3QsV28obCxXZSwyKSxGdChzdCk7YnJlYWt9aWYoKDB8cCk8MzUyMzIxNTM2KXtpZigzMzU1NDQzMjAhPSgwfHApKWJyZWFrIGU7c3Q9MHx2cigoSGU9ZisxMnwwKTw8NCksX1tzdD4+M109TT0uNSooK19bYz4+M10tKE09K19bKFZl''@;'; put 'put ''PWMrMTZ8MCk+PjNdKSkrTSsuMjUqKCtfW2s+PjNdLStfWyhPZT1hdCs0OHwwKT4+M10pLF9bKGY9c3QrOHwwKT4+M109a3Q9LjUqKCtfWyhnZT1hdCs1NnwwKT4+M10tK19bKGJlPWF0KzcyfDApPj4zXSsoK19bKHJ0PWMrMjR8MCk+PjNdLShrdD0rX1socWU9Yys0MHwwKT4+M10pKSkra3Qs''@;'; put 'put ''X1tzdCsxNj4+M109TSxfWyhMZT1zdCsyNHwwKT4+M109a3Q9LjEyNSooK19bZ2U+PjNdLStfW2JlPj4zXSkra3QsX1soUmU9c3QrMzJ8MCk+PjNdPVp0PU0tLjEyNSooK19baz4+M10tK19bT2U+PjNdKSxfW3N0KzQwPj4zXT1SPS4xMjUqKCtfW2dlPj4zXS0rX1tiZT4+M10pK2t0LF9bc3Qr''@;'; put 'put ''NDg+PjNdPU0sX1tzdCs1Nj4+M109RXQ9LjEyNSooK19bZ2U+PjNdLStfW2JlPj4zXSkrUixfW3N0KzY0Pj4zXT1NLF9bc3QrNzI+PjNdPU09LjEyNSooK19bZ2U+PjNdLStfW2JlPj4zXSkrRXQsX1tzdCs4MD4+M109WnQsX1tzdCs4OD4+M109TSxfW3N0Kzk2Pj4zXT1adD0uNSooK19bYz4+''@;'; put 'put ''M10tKFp0PStfW1ZlPj4zXSkpK1p0LF9bc3QrMTA0Pj4zXT1FdCxfW3N0KzExMj4+M109Y3Q9WnQtLjEyNSooK19baz4+M10tK19bT2U+PjNdKSxfW3N0KzEyMD4+M109TSxfW3N0KzEyOD4+M109Y3QtPS4xMjUqKCtfW2s+PjNdLStfW09lPj4zXSksX1tzdCsxMzY+PjNdPU0sX1tzdCsxNDQ+''@;'; put 'put ''PjNdPWN0LF9bc3QrMTUyPj4zXT1FdCxfW3N0KzE2MD4+M109RXQ9LjEyNSooK19baz4+M10tK19bT2U+PjNdKStjdCxfW3N0KzE2OD4+M109UixfW3N0KzE3Nj4+M109Y3QsX1tzdCsxODQ+PjNdPWt0LF9bc3QrMTkyPj4zXT1jdCxfW3N0KzIwMD4+M109Y3Q9K19bZj4+M10sX1tzdCsyMDg+''@;'; put 'put ''PjNdPUV0LF9bc3QrMjE2Pj4zXT1jdCxfWyhmPXN0KzIyNHwwKT4+M109WnQsX1tzdCsyMzI+PjNdPStfW0xlPj4zXSxfW3N0KzI0MD4+M109K19bUmU+PjNdLF9bc3QrMjQ4Pj4zXT1jdCxrYShsLHN0LEhlLG0pLGFbV2U+PjJdPWFbZj4+Ml0sYVtXZSs0Pj4yXT1hW2YrND4+Ml0sYVtXZSs4''@;'; put 'put ''Pj4yXT1hW2YrOD4+Ml0sYVtXZSsxMj4+Ml09YVtmKzEyPj4yXSxfWyhmPVdlKzE2fDApPj4zXT0rX1tXZT4+M10sX1sobT1XZSsyNHwwKT4+M109LjUqKCtfW3J0Pj4zXS0oY3Q9K19bcWU+PjNdKSkrY3QsV28obCxXZSwyKSxfW1dlPj4zXT0rX1tWZT4+M10sX1tXZSs4Pj4zXT0uNSooK19b''@;'; put 'put ''cnQ+PjNdLShjdD0rX1txZT4+M10pKStjdCxfW2Y+PjNdPStfW2M+PjNdLF9bbT4+M109LjUqKCtfW2MrOD4+M10tK19bYys1Nj4+M10pK2N0LFdvKGwsV2UsMiksRnQoc3QpO2JyZWFrfWlmKDM1MjMyMTUzNiE9KDB8cCkpYnJlYWsgZTtzdD0wfHZyKChydD1mKzR8MCk8PDQpLF9bc3Q+PjNd''@;'; put 'put ''PVp0PS41KigrX1tjPj4zXS0oWnQ9K19bKEhlPWMrMTZ8MCk+PjNdKSkrWnQrLjEyNSooK19baz4+M10tK19bKFJlPWF0KzQ4fDApPj4zXSksX1soZj1zdCs4fDApPj4zXT1jdD0uNSooK19bKE9lPWF0KzU2fDApPj4zXS0rX1soTGU9YXQrNzJ8MCk+PjNdKygrX1socWU9YysyNHwwKT4+M10t''@;'; put 'put ''KGN0PStfWyhWZT1jKzQwfDApPj4zXSkpKStjdCxfW3N0KzE2Pj4zXT1SPS4xMjUqKCtfW2s+PjNdLStfW1JlPj4zXSkrWnQsX1tzdCsyND4+M109RXQ9LjEyNSooK19bT2U+PjNdLStfW0xlPj4zXSkrY3QsX1tzdCszMj4+M109UixfW3N0KzQwPj4zXT1SPS4yNSooK19bT2U+PjNdLStfW0xl''@;'; put 'put ''Pj4zXSkrRXQsX1tzdCs0OD4+M109WnQsX1tzdCs1Nj4+M109a3Q9LjEyNSooK19bT2U+PjNdLStfW0xlPj4zXSkrUixfW3N0KzY0Pj4zXT1adC09LjI1KigrX1trPj4zXS0rX1tSZT4+M10pLF9bc3QrNzI+PjNdPWt0LF9bc3QrODA+PjNdPWt0PVp0LS4xMjUqKCtfW2s+PjNdLStfW1JlPj4z''@;'; put 'put ''XSksX1tzdCs4OD4+M109UixfW3N0Kzk2Pj4zXT1rdCxfW3N0KzEwND4+M109RXQsX1tzdCsxMTI+PjNdPVp0LF9bc3QrMTIwPj4zXT1jdCxrYShsLHN0LHJ0LG0pLF9bV2U+PjNdPWN0PS41KigrX1tjPj4zXS0oY3Q9K19bSGU+PjNdKSkrY3QsX1socnQ9V2UrOHwwKT4+M109K19bZj4+M10s''@;'; put 'put ''X1soZj1XZSsxNnwwKT4+M109Y3QsX1sobT1XZSsyNHwwKT4+M109LjUqKCtfW3FlPj4zXS0oY3Q9K19bVmU+PjNdKSkrY3QsV28obCxXZSwyKSxfW1dlPj4zXT0rX1tIZT4+M10sX1tydD4+M109LjUqKCtfW3FlPj4zXS0oY3Q9K19bVmU+PjNdKSkrY3QsX1tmPj4zXT0rX1tjPj4zXSxfW20+''@;'; put 'put ''PjNdPS41KigrX1tjKzg+PjNdLStfW2MrNTY+PjNdKStjdCxXbyhsLFdlLDIpLEZ0KHN0KTticmVha31pZigoMHxwKTw0MDI2NTMxODQpe2lmKCgwfHApPDM4NTg3NTk2OCl7aWYoMzY5MDk4NzUyIT0oMHxwKSlicmVhayBlO3N0PTB8dnIoKGY9Zis1fDApPDw0KSxfW3N0Pj4zXT0rX1tiPj4z''@;'; put 'put ''XS0uNSooK19baz4+M10tK19bKFdlPWF0KzQ4fDApPj4zXSksX1tzdCs4Pj4zXT0rX1thdCsyND4+M10tLjUqKCtfWyhWZT1hdCs1NnwwKT4+M10tK19bKHJ0PWF0KzcyfDApPj4zXSksX1tzdCsxNj4+M109K19bV2U+PjNdLF9bc3QrMjQ+PjNdPShjdD0rX1tWZT4+M10pLS41KihjdC0rX1ty''@;'; put 'put ''dD4+M10pLF9bc3QrMzI+PjNdPStfW2MrMzI+PjNdLF9bc3QrNDA+PjNdPStfWyhxZT1jKzQwfDApPj4zXSxfW3N0KzQ4Pj4zXT0uNSooKGN0PStfW2s+PjNdKS0rX1tXZT4+M10pK2N0LF9bc3QrNTY+PjNdPStfW3FlPj4zXSxfW3N0KzY0Pj4zXT0uNSooKGN0PStfW2s+PjNdKS0rX1tXZT4+''@;'; put 'put ''M10pK2N0LF9bc3QrNzI+PjNdPS41KigrX1tWZT4+M10tK19bcnQ+PjNdKSsgK19bcWU+PjNdLF9bc3QrODA+PjNdPStfW2I+PjNdLS41KigrX1trPj4zXS0rX1tXZT4+M10pLF9bc3QrODg+PjNdPS41KigrX1tWZT4+M10tK19bcnQ+PjNdKSsgK19bcWU+PjNdLF9bc3QrOTY+PjNdPStfW2I+''@;'; put 'put ''PjNdLS41KigrX1trPj4zXS0rX1tXZT4+M10pLF9bc3QrMTA0Pj4zXT0rX1socWU9Yys1NnwwKT4+M10sX1tzdCsxMjA+PjNdPShjdD0rX1socnQ9Yys4fDApPj4zXSktLjUqKGN0LStfW3FlPj4zXSksX1tzdCsxMTI+PjNdPStfW2M+PjNdLF9bc3QrMTM2Pj4zXT0rX1tydD4+M10sX1tzdCsx''@;'; put 'put ''Mjg+PjNdPStfW2I+PjNdLS41KigrX1trPj4zXS0rX1tXZT4+M10pLGthKGwsc3QsZixtKSxGdChzdCk7YnJlYWt9aWYoMzg1ODc1OTY4IT0oMHxwKSlicmVhayBlO3N0PTB8dnIoKGY9ZiszfDApPDw0KSxfW3N0Pj4zXT0rX1tiPj4zXS0uNSooK19baz4+M10tK19bKFdlPWF0KzQ4fDApPj4z''@;'; put 'put ''XSksX1tzdCs4Pj4zXT0rX1thdCsyND4+M10tLjUqKCtfWyhWZT1hdCs1NnwwKT4+M10tK19bKHJ0PWF0KzcyfDApPj4zXSksX1tzdCsxNj4+M109K19bV2U+PjNdLF9bc3QrMjQ+PjNdPShjdD0rX1tWZT4+M10pLS41KihjdC0rX1tydD4+M10pLF9bc3QrMzI+PjNdPStfW2MrMzI+PjNdLF9b''@;'; put 'put ''c3QrNDA+PjNdPS41KigrX1tWZT4+M10tK19bcnQ+PjNdKSsgK19bKHFlPWMrNDB8MCk+PjNdLF9bc3QrNDg+PjNdPStfW2I+PjNdLS41KigrX1trPj4zXS0rX1tXZT4+M10pLF9bc3QrNTY+PjNdPS41KigrX1tWZT4+M10tK19bcnQ+PjNdKSsgK19bcWU+PjNdLF9bc3QrNjQ+PjNdPStfW2I+''@;'; put 'put ''PjNdLS41KigrX1trPj4zXS0rX1tXZT4+M10pLF9bc3QrNzI+PjNdPStfWyhxZT1jKzU2fDApPj4zXSxfW3N0Kzg4Pj4zXT0oY3Q9K19bKHJ0PWMrOHwwKT4+M10pLS41KihjdC0rX1txZT4+M10pLF9bc3QrODA+PjNdPStfW2M+PjNdLF9bc3QrMTA0Pj4zXT0rX1tydD4+M10sX1tzdCs5Nj4+''@;'; put 'put ''M109K19bYj4+M10tLjUqKCtfW2s+PjNdLStfW1dlPj4zXSksa2EobCxzdCxmLG0pLEZ0KHN0KTticmVha31pZigoMHxwKTw0MTk0MzA0MDApe2lmKDQwMjY1MzE4NCE9KDB8cCkpYnJlYWsgZTtzdD0wfHZyKChmPWYrM3wwKTw8NCksX1tzdD4+M109K19bYz4+M10scWU9YXQrNDh8MCxfW3N0''@;'; put 'put ''Kzg+PjNdPStfWyhWZT1jKzh8MCk+PjNdLS41KigrX1socnQ9YXQrNTZ8MCk+PjNdLStfWyhXZT1hdCs3MnwwKT4+M10pLF9bc3QrMTY+PjNdPS41KigoY3Q9K19baz4+M10pLStfW3FlPj4zXSkrY3QsX1tzdCsyND4+M109K19bVmU+PjNdLS41KigrX1tydD4+M10tK19bV2U+PjNdKSxfW3N0''@;'; put 'put ''KzMyPj4zXT0uNSooKGN0PStfW2s+PjNdKS0rX1txZT4+M10pK2N0LF9bc3QrNDA+PjNdPStfW2F0KzQwPj4zXSxfW3N0KzQ4Pj4zXT0rX1tjKzE2Pj4zXSxfW3N0KzU2Pj4zXT0oY3Q9K19bYysyND4+M10pLS41KihjdC0rX1soVmU9Yys0MHwwKT4+M10pLF9bc3QrNjQ+PjNdPS41KigoY3Q9''@;'; put 'put ''K19baz4+M10pLStfW3FlPj4zXSkrY3QsX1tzdCs3Mj4+M109K19bVmU+PjNdLF9bc3QrODg+PjNdPS41KigrX1tydD4+M10tK19bV2U+PjNdKSsgK19bVmU+PjNdLF9bc3QrODA+PjNdPS41KigoY3Q9K19baz4+M10pLStfW3FlPj4zXSkrY3QsX1tzdCsxMDQ+PjNdPS41KigrX1tydD4+M10t''@;'; put 'put ''K19bV2U+PjNdKSsgK19bYys1Nj4+M10sX1tzdCs5Nj4+M109K19bYz4+M10sa2EobCxzdCxmLG0pLEZ0KHN0KTticmVha31pZig0MTk0MzA0MDAhPSgwfHApKWJyZWFrIGU7c3Q9MHx2cigoZj1mKzV8MCk8PDQpLF9bc3Q+PjNdPStfW2M+PjNdLHJ0PWF0KzQ4fDAsX1tzdCs4Pj4zXT0rX1so''@;'; put 'put ''V2U9Yys4fDApPj4zXS0uNSooK19bKFZlPWF0KzU2fDApPj4zXS0rX1socWU9YXQrNzJ8MCk+PjNdKSxfW3N0KzE2Pj4zXT0uNSooKGN0PStfW2s+PjNdKS0rX1tydD4+M10pK2N0LF9bc3QrMjQ+PjNdPStfW1dlPj4zXS0uNSooK19bVmU+PjNdLStfW3FlPj4zXSksX1tzdCszMj4+M109LjUq''@;'; put 'put ''KChjdD0rX1trPj4zXSktK19bcnQ+PjNdKStjdCxfW3N0KzQwPj4zXT0rX1thdCs0MD4+M10sX1tzdCs0OD4+M109K19bYysxNj4+M10sX1tzdCs1Nj4+M109KGN0PStfW2MrMjQ+PjNdKS0uNSooY3QtK19bKFdlPWMrNDB8MCk+PjNdKSxfW3N0KzY0Pj4zXT0uNSooKGN0PStfW2s+PjNdKS0r''@;'; put 'put ''X1tydD4+M10pK2N0LF9bc3QrNzI+PjNdPStfW1dlPj4zXSxfW3N0Kzg4Pj4zXT0uNSooK19bVmU+PjNdLStfW3FlPj4zXSkrICtfW1dlPj4zXSxfW3N0KzgwPj4zXT0uNSooKGN0PStfW2s+PjNdKS0rX1tydD4+M10pK2N0LF9bc3QrMTA0Pj4zXT0uNSooK19bVmU+PjNdLStfW3FlPj4zXSkr''@;'; put 'put ''ICtfWyhXZT1jKzU2fDApPj4zXSxfW3N0Kzk2Pj4zXT0rX1tiPj4zXS0uNSooK19baz4+M10tK19bcnQ+PjNdKSxfW3N0KzExMj4+M109K19bYj4+M10tLjUqKCtfW2s+PjNdLStfW3J0Pj4zXSksX1tzdCsxMjA+PjNdPStfW1dlPj4zXSxfW3N0KzEyOD4+M109K19bYys0OD4+M10sX1tzdCsx''@;'; put 'put ''MzY+PjNdPStfW1dlPj4zXSxrYShsLHN0LGYsbSksRnQoc3QpO2JyZWFrfXdoaWxlKDApO0Z0KGF0KX1sZT1TdH1mdW5jdGlvbiBxSShsLGMsZixwKXt2YXIgQSxtPTA7bT0oK19bOCsocHw9MCk+PjNdLShtPStfWzgrKGZ8PTApPj4zXSkpKihjPStjKSttLF9bKGx8PTApPj4zXT0oK19bcD4+''@;'; put 'put ''M10tKEE9K19bZj4+M10pKSpjK0EsX1tsKzg+PjNdPW19ZnVuY3Rpb24gJDUobCl7aWYobD0wfGFbOCsoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSlpZig5MSE9KDB8KGw9MHxhW2FbbCs0Pj4yXT4+Ml0pKSl7aWYoOTQhPSgwfGwpKXJldHVybiAwfCg5Mz09KDB8bCk/Mzo5Nj09KDB8bCk/NDow''@;'; put 'put ''KTtsPTJ9ZWxzZSBsPTE7ZWxzZSBsPTA7cmV0dXJuIDB8bH1mdW5jdGlvbiBvTihsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBPZSxMZSxSZSxIZSxWZSxxZSxydCxXZSxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsYXQ9MCxT''@;'; put 'put ''dD0wLGt0PTA7bT0wfHZyKDcyKSxEPTB8YVsxMDQrKDB8YVtsKzE2Pj4yXSk+PjJdLE09MCxBPTEsdz0wfGFbNDcyODJdO2U6Zm9yKDs7KXtzd2l0Y2goKGI9MHxmZVt3Pj4wXSk8PDI0Pj4yNCl7Y2FzZSAwOmJyZWFrIGU7Y2FzZSA5Mjpzd2l0Y2goKGI9MHxmZVsodz13KzF8MCk+PjBdKTw8''@;'; put 'put ''MjQ+PjI0KXtjYXNlIDEyNDpjYXNlIDEyNTpjYXNlIDEyMzpjYXNlIDkyOms9TTticmVhaztkZWZhdWx0Omt0PTR9YnJlYWs7ZGVmYXVsdDprdD00fWlmKDQ9PSgwfGt0KSl7c3dpdGNoKGt0PTAsYjw8MjQ+PjI0KXtjYXNlIDEyMzprPU0rMXwwO2JyZWFrO2Nhc2UgMTI1Oms9TSstMXwwO2Jy''@;'; put 'put ''ZWFrO2RlZmF1bHQ6az1NLEE9QSsoMD09KDB8TSkmYjw8MjQ+PjI0PT0xMjQmMSl8MH1pZigoMHxrKTwwKWJyZWFrfU09ayx3PXcrMXwwfWFbKFdlPW0rNTZ8MCk+PjJdPTB8dnIoQTw8MiksZmVbbSs2ND4+MF09YyxWZT0wPT0oMHxjKSYxLHFlPUQrODJ8MCxydD1wKzF8MCxMZT0wIT0oMHxm''@;'; put 'put ''KSxSZT1EKzE2fDAsSGU9RCs0fDAsT2U9RCs4fDAsYj0wLE09MCxjPTAsYmU9MCxrPTAsZj0wLEQ9cCxBPTAsdz0wO2U6Zm9yKDs7KXtHPWIsYj0wO3Q6Zm9yKDs7KXtuOmZvcig7Oyl7Z2U9ZjtyOmZvcig7Oyl7cGU9YixSPUE7aTpmb3IoOzspe3E9TTtvOmZvcig7Oyl7Zm9yKDs7KXtpZihi''@;'; put 'put ''ZSl7a3Q9Nzg7YnJlYWsgZX1pZigoKEE9MHxmZVsoTT0wfGFbNDcyODJdKT4+MF0pLTEmMjU1KT49MzEpYnJlYWs7YVs0NzI4Ml09TSsxfXN3aXRjaChBPDwyND4+MjR8MCl7Y2FzZSA5MjprdD01MzticmVhayBuO2Nhc2UgMDpjYXNlIDEyNDpjYXNlIDEyNTpicmVhayByO2Nhc2UgNjA6YnJl''@;'; put 'put ''YWsgaTtjYXNlIDYyOmJyZWFrIG87Y2FzZSAxMjM6YnJlYWs7ZGVmYXVsdDpiPWMsQT1NO2JyZWFrIG59aWYoYVs0NzI4Ml09QT1NKzF8MCwwfGspe2t0PTM0O2JyZWFrIGV9aWYoISgwfGZlW0E+PjBdKSl7a3Q9MzQ7YnJlYWsgZX1pZihmPTB8b04obCxWZSwwLHApLGFbKDB8YVtXZT4+Ml0p''@;'; put 'put ''KyhxPDwyKT4+Ml09ZiwhZil7a3Q9MzY7YnJlYWsgZX1xPXErMXwwLGs9NH1pZigwfGZlW3FlPj4wXSl7Yj1jLEE9TTticmVhayBufWlmKCEoMTYmaykpe2t0PTI3O2JyZWFrIGV9QT1SPj4+MD5ydD4+PjAmJigwfChhdD1SKy0xfDApKSE9KDB8Z2UpJiYzMj09KDB8ZmVbYXQ+PjBdKT9hdDpS''@;'; put 'put ''LGZlW0E+PjBdPTAscGU9MHxyYShwKSxhWzQ3MjgyXT0xKygwfGFbNDcyODJdKSxNPXEsayY9LTE3LFI9QX1pZig2Jmt8MCl7a3Q9MjI7YnJlYWsgZX1pZigwfGZlW3FlPj4wXSl7Yj1jLEE9TTticmVhayBufWFbNDcyODJdPU0rMSxNPXEsa3w9MTgsYj1wZSxnZT1wLEE9cH1pZighKDA9PSgx''@;'; put 'put ''NiZrfDApJihMZXxBPDwyND4+MjQhPTApKSl7a3Q9Mzg7YnJlYWsgZX1zd2l0Y2goNCZrPyhiPUcsTT1xKTooYj0wfHZyKDcyKSxhWygwfGFbV2U+PjJdKSsocTw8Mik+PjJdPWIsTT1xKzF8MCksMHxwZSYmKGFbYis2MD4+Ml09cGUpLDUma3x8KGZlW3Ardz4+MF09MzIsa3w9MSx3PXcrMXww''@;'; put 'put ''KSxBPXArd3wwLDEmayYmKCgwfHcpPjEmJigwfChTdD1BKy0xfDApKSE9KDB8RCkmJihBPTMyPT0oMHxmZVtTdD4+MF0pP1N0OkEpLGZlW0E+PjBdPTAsRD0wfHJhKHApLGFbYis1Mj4+Ml09MHxKNShsLEQsMHxmZVtxZT4+MF0/MjowLCtfW1JlPj4zXSwwfGFbSGU+PjJdLDB8YVtPZT4+Ml0p''@;'; put 'put ''LGZlW2IrNjQ+PjBdPTEsRD1wLHc9MCksMHxmZVsoQT0wfGFbNDcyODJdKT4+MF0pe2Nhc2UgMDpiZT0xLGY9Z2UsQT1SO2NvbnRpbnVlIGU7Y2FzZSAxMjU6a3Q9NTE7YnJlYWsgZX1hWzQ3MjgyXT1BKzEsRz1iLGs9MCxiPTAsZj1nZSxBPVJ9bjpkb3tpZig1Mz09KDB8a3QpKXtzd2l0Y2go''@;'; put 'put ''a3Q9MCxiPXArd3wwLDB8ZmVbKEE9TSsxfDApPj4wXSl7Y2FzZSAwOmI9YyxBPU07YnJlYWsgbjtjYXNlIDYyOmNhc2UgNjA6Y2FzZSAxMjQ6Y2FzZSAxMjU6Y2FzZSAxMjM6Yj1jO2JyZWFrO2Nhc2UgMzI6MHxmZVtxZT4+MF0/a3Q9NTU6Yj0xO2JyZWFrO2RlZmF1bHQ6a3Q9NTV9NTU9PSgw''@;'; put 'put ''fGt0KSYmKGt0PTAsZmVbYj4+MF09OTIsYj1jLGt8PTksdz13KzF8MCksYVs0NzI4Ml09QX19d2hpbGUoMCk7aWYoYz1wK3d8MCw0Jmt8MCYmMzIhPSgwfGZlW0E+PjBdKSl7a3Q9NTk7YnJlYWsgZX1mb3IoMjQma3x8KGs9MzI9PSgwfGZlW0E+PjBdKT9rOjl8ayksOCZrPyghKChmPTAhPSgw''@;'; put 'put ''fGIpKXwoTT0wfGZlW0E+PjBdKTw8MjQ+PjI0IT0zMikmJjMyPT0oMHxmZVtjKy0xPj4wXSkmJjA9PSgwfGZlW3FlPj4wXSl8fChmZVtjPj4wXT1NLHc9dysxfDApLGY/KGY9Z2UsRD1wK3crLTF8MCk6Zj1nZSk6MTYmaz8oKGM9MCE9KDB8YikpfChNPTB8ZmVbQT4+MF0pPDwyND4+MjQhPTMy''@;'; put 'put ''P2t0PTczOigwfFIpIT0oMHxwKT8zMj09KDB8ZmVbUistMT4+MF0pP009UjprdD03MzpNPXAsNzM9PSgwfGt0KSYmKGt0PTAsZmVbUj4+MF09TSxNPVIrMXwwLEE9MHxhWzQ3MjgyXSksZj1jP00rLTF8MDpnZSxSPU0pOmY9Z2UsYVs0NzI4Ml09QT1BKzF8MDs7KXtpZigoMHxmZVtBPj4wXSk+''@;'; put 'put ''PTApe009cSxjPWIsYj1wZSxBPVI7Y29udGludWUgdH1hWzQ3MjgyXT1nZT1BKzF8MCxmZVtwK3c+PjBdPTB8ZmVbQT4+MF0sdz13KzF8MCxBPWdlfX19cmV0dXJuIDIyPT0oMHxrdCl8fDI3PT0oMHxrdCl8fDM0PT0oMHxrdCl8fDM2PT0oMHxrdCl8fDM4PT0oMHxrdCk/KGt5KG0scGUpLG09''@;'; put 'put ''MCk6NTE9PSgwfGt0KT8oYVs0NzI4Ml09QSsxLGFbbSs0OD4+Ml09TSk6NTk9PSgwfGt0KT8oa3kobSxwZSksbT0wKTo3OD09KDB8a3QpJiYoYVttKzQ4Pj4yXT1xKSwwfG19ZnVuY3Rpb24gVVEobCxjLGYpe2x8PTAsY3w9MDt2YXIgcGUsZ2UsYmUscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAs''@;'; put 'put ''TT0wLEQ9MCxSPTAsRz0wLHE9MDtiZT1sZSxsZT1sZSs2NHwwLGI9YmUrNDh8MCxrPWJlKzQwfDAsTT1iZSszMnwwLGdlPWJlKzE2fDAscGU9YmUsdz0wfGFbNTIrKGZ8PTApPj4yXTtlOmRve2lmKHcpe2lmKChtPStfW3crMjQ+PjNdKT4wfChwPStfW3crMzI+PjNdKT4wKXt3PTB8TGkoYywx''@;'; put 'put ''MDU0OTYpO2Rve2lmKHcpe2lmKGFbYj4+Ml09ayxhW2IrND4+Ml09TSwoMHwodz0wfGlsKHcsMTA1NTAzLGIpKSk8PTApe0E9OCxtKz0xNjticmVha31tKz1BPSsofn4oKEE9NzIqK19baz4+M10pKyhBPj0wPy41Oi0uNSkpPDwxfDApLDEhPSgwfHcpJiYoQT0rKH5+KChBPTcyKitfW00+PjNd''@;'; put 'put ''KSsoQT49MD8uNTotLjUpKTw8MXwwKSl9ZWxzZSBBPTgsbSs9MTZ9d2hpbGUoMCk7cD1BK3B9X1tnZT4+M109bSxfW2dlKzg+PjNdPXB9ZWxzZSBmb3IoTT1nZSs4fDAsRD1mKzQ4fDAsUj1mKzU2fDAsRz1mKzY0fDAscT1wZSs4fDAsYVtnZT4+Ml09MCxhW2dlKzQ+PjJdPTAsYVtnZSs4Pj4y''@;'; put 'put ''XT0wLGFbZ2UrMTI+PjJdPTAsdz0wOzspe2lmKCgwfHcpPj0oMHxhW0Q+PjJdKSlicmVhayBlO1VRKHBlLGMsMHxhWygwfGFbUj4+Ml0pKyh3PDwyKT4+Ml0pLDB8ZmVbRz4+MF0/KF9bZ2U+PjNdPStfW2dlPj4zXSsgK19bcGU+PjNdLGI9TSxrPSgrX1tNPj4zXT4rX1txPj4zXT9nZTpwZSkr''@;'; put 'put ''OHwwKTooX1tNPj4zXT0rX1tNPj4zXSsgK19bcT4+M10sYj1nZSxrPStfW2dlPj4zXT4rX1twZT4+M10/Z2U6cGUpLF9bYj4+M109K19baz4+M10sdz13KzF8MH19d2hpbGUoMCk7YVtmPj4yXT1hW2dlPj4yXSxhW2YrND4+Ml09YVtnZSs0Pj4yXSxhW2YrOD4+Ml09YVtnZSs4Pj4yXSxhW2Yr''@;'; put 'put ''MTI+PjJdPWFbZ2UrMTI+PjJdLGFbbD4+Ml09YVtnZT4+Ml0sYVtsKzQ+PjJdPWFbZ2UrND4+Ml0sYVtsKzg+PjJdPWFbZ2UrOD4+Ml0sYVtsKzEyPj4yXT1hW2dlKzEyPj4yXSxsZT1iZX1mdW5jdGlvbiBRUShsLGMsZil7Znw9MDt2YXIgQSxrLEQsUixHLHEscGUscD0wLG09MCx3PTAsYj0w''@;'; put 'put ''LE09MDtwZT1sZSxsZT1sZSszMnwwLEQ9cGUrMTZ8MCxSPXBlLEE9KEc9K19bKGN8PTApPj4zXSktK19bKGx8PTApPj4zXSxwPShxPStfW2MrOD4+M10pLStfW2wrOD4+M10sYVtsPj4yXT1hW2M+PjJdLGFbbCs0Pj4yXT1hW2MrND4+Ml0sYVtsKzg+PjJdPWFbYys4Pj4yXSxhW2wrMTI+PjJd''@;'; put 'put ''PWFbYysxMj4+Ml0sMCE9KDB8Zil8MD09KDB8KGM9MHxhW2wrNTI+PjJdKSl8fChfWyhNPWMrNDB8MCk+PjNdPStfW00+PjNdK0EsX1soTT1jKzQ4fDApPj4zXT0rX1tNPj4zXStwKSxjPTB8YVsoaz1sKzQ4fDApPj4yXTtlOmRve2lmKDB8Yylmb3IoTT1sKzY0fDAscD0oMD09KDB8ZmVbTT4+''@;'; put 'put ''MF0pP3A6QSkvKygwfGMpLGI9bCs1NnwwLHc9MDs7KXtpZigoMHx3KT49KDB8YykpYnJlYWsgZTtsPTB8YVsoMHxhW2I+PjJdKSsodzw8Mik+PjJdLGM9fn4ocCorKDB8KG09dysxfDApKSktfn4ocCorKDB8dykpfDAsMHxmZVtNPj4wXT9DeShSLCtfW2w+PjNdKyArKDB8YykscSk6Q3koUixH''@;'; put 'put ''LCtfW2wrOD4+M10rICsoMHxjKSksYVtEPj4yXT1hW1I+PjJdLGFbRCs0Pj4yXT1hW1IrND4+Ml0sYVtEKzg+PjJdPWFbUis4Pj4yXSxhW0QrMTI+PjJdPWFbUisxMj4+Ml0sUVEobCxELGYpLHc9bSxjPTB8YVtrPj4yXX19d2hpbGUoMCk7bGU9cGV9ZnVuY3Rpb24gQ3kobCxjLGYpe2Y9K2Ys''@;'; put 'put ''X1sobHw9MCk+PjNdPWM9K2MsX1tsKzg+PjNdPWZ9ZnVuY3Rpb24gSlEobCxjLGYpe2N8PTA7dmFyIEEsdyxELFIsRyxxLHBlLHA9MCxtPTAsYj0wLGs9MCxNPTA7Zm9yKEc9bGUsbGU9bGUrNDh8MCx3PUcrMzJ8MCxNPUcrMTZ8MCxrPUcsZmVbNjUrKGx8PTApPj4wXT1mfD0wLGI9bCsxNnww''@;'; put 'put ''LEN5KE0scGU9K19bYz4+M10sKHE9K19bKFI9Yys4fDApPj4zXSktK19bbCs4Pj4zXSksYVtiPj4yXT1hW00+PjJdLGFbYis0Pj4yXT1hW00rND4+Ml0sYVtiKzg+PjJdPWFbTSs4Pj4yXSxhW2IrMTI+PjJdPWFbTSsxMj4+Ml0sYj1sKzMyfDAsQ3koaywrX1tsPj4zXStwZSxxKSxhW2I+PjJd''@;'; put 'put ''PWFbaz4+Ml0sYVtiKzQ+PjJdPWFbays0Pj4yXSxhW2IrOD4+Ml09YVtrKzg+PjJdLGFbYisxMj4+Ml09YVtrKzEyPj4yXSxrPShiPTB8YVtsKzQ4Pj4yXSktMXwwLE09MD09KDB8ZiksRD1sKzU2fDAsQT1sKzY0fDAsbT0wOyEoKDB8bSk+PSgwfGIpKTspe2Rve2lmKCFNKXtpZihsPTA9PSgw''@;'; put 'put ''fG0pLHA9KDB8bSk9PSgwfGspLDB8ZmVbQT4+MF0pe2lmKGwpe2w9cD8xNToxMzticmVha31sPXA/Nzo1O2JyZWFrfWlmKGwpe2w9cD8xNToxNDticmVha31sPXA/MTE6MTA7YnJlYWt9bD0wfXdoaWxlKDApO3A9MHxhWygwfGFbRD4+Ml0pKyhtPDwyKT4+Ml0sYVt3Pj4yXT1hW2M+PjJdLGFb''@;'; put 'put ''dys0Pj4yXT1hW2MrND4+Ml0sYVt3Kzg+PjJdPWFbYys4Pj4yXSxhW3crMTI+PjJdPWFbYysxMj4+Ml0sSlEocCx3LGwmZiksMHxmZVtBPj4wXT9fW2M+PjNdPStfW2FbKDB8YVtEPj4yXSkrKG08PDIpPj4yXT4+M10rICtfW2M+PjNdOl9bUj4+M109K19bUj4+M10tK19bOCsoMHxhWygwfGFb''@;'; put 'put ''RD4+Ml0pKyhtPDwyKT4+Ml0pPj4zXSxtPW0rMXwwfWxlPUd9ZnVuY3Rpb24ga3kobCxjKXtjfD0wLGFOKGx8PTApLEZ0KGMpfWZ1bmN0aW9uIGFOKGwpe3ZhciBmLHAsYz0wO2ZvcihmPTQ4KyhsfD0wKXwwLHA9bCs1NnwwLGM9MDshKCgwfGMpPj0oMHxhW2Y+PjJdKSk7KWFOKDB8YVsoMHxh''@;'; put 'put ''W3A+PjJdKSsoYzw8Mik+PjJdKSxjPWMrMXwwO0Z0KDB8YVtsKzYwPj4yXSksSWMoMHxhW2wrNTI+PjJdKSxGdCgwfGFbcD4+Ml0pLEZ0KGwpfWZ1bmN0aW9uIEZhZShsKXt2YXIgZixjPTA7cmV0dXJuKyArKDB8fn4oKGM9NzIqKChmPStNbChsfD0wLDB8YVs0NzE0Nl0sMCwuMDEpKT4oYz0r''@;'; put 'put ''TWwobCwwfGFbNDcxNDVdLDAsLjAyKSk/ZjpjKSkrKGM+PTA/LjU6LS41KSkpfWZ1bmN0aW9uIFhRKGwsYyl7dmFyIGY7cmV0dXJuKyArKCgrKDB8KGY9fn4oKGw9K2wpLyhjPStjKSkpKSpjKzFlLTU8bCYxKStmfDApKmN9ZnVuY3Rpb24gSGFlKGwpe3JldHVybiAwfCgobD0wfGFbOCsoMHxh''@;'; put 'put ''WzE2KyhsfD0wKT4+Ml0pPj4yXSk/OTE9PSgwfGFbYVtsKzQ+PjJdPj4yXSkmMTowKX1mdW5jdGlvbiBsTihsKXtsfD0wO3ZhciBwLGM9MCxmPTAsbT0wLEE9MDtwPTB8YVs0NzI4M107ZTpkb3tpZihwKWZvcihtPTB8YVs0NzI4NF0sZj0wOzspe2lmKCgwfGYpPj0oMHxtKSl7Yz0wO2JyZWFr''@;'; put 'put ''IGV9aWYoKDB8ZmVbKEE9MHxhWyhjPTB8YVtwKyhmPDwyKT4+Ml0pPj4yXSk+PjBdKT09KDB8ZmVbbD4+MF0pJiYwPT0oMHxaaShBLGwpKSlicmVhayBlO2Y9ZisxfDB9ZWxzZSBjPTB9d2hpbGUoMCk7cmV0dXJuIDB8Y31mdW5jdGlvbiBLUShsLGMpe2N8PTA7dmFyIGssTSxELFIsRyxxLHBl''@;'; put 'put ''LGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGdlPTAsYmU9MDtpZihwZT1sZSxsZT1sZSsxMTJ8MCxEPXBlKzk2fDAsTT1wZSs4MHwwLEc9cGUrNjR8MCxrPXBlKzQ4fDAscT1wZSszMnwwLFI9cGUsbT1wZSsxNnwwLGx8PTApe0E9MHxhW2wrND4+Ml0sdz05MCooMyZhWzExNisoMHxhWzE2Kygw''@;'; put 'put ''fGNyKGw9MHxhW2w+PjJdKSk+PjJdKT4+Ml0pfDAsYVtEPj4yXT1hW2M+PjJdLGFbRCs0Pj4yXT1hW2MrND4+Ml0sYVtEKzg+PjJdPWFbYys4Pj4yXSxhW0QrMTI+PjJdPWFbYysxMj4+Ml0sVTYobSxELHcpLGFbcT4+Ml09YVttPj4yXSxhW3ErND4+Ml09YVttKzQ+PjJdLGFbcSs4Pj4yXT1h''@;'; put 'put ''W20rOD4+Ml0sYVtxKzEyPj4yXT1hW20rMTI+PjJdO2U6ZG97aWYoQSlmPStfW0ErOD4+M10scD0rX1tBKzI0Pj4zXSxnZT0rX1txPj4zXSxsPStfW0E+PjNdPD1nZSYmZ2U8PStfW0ErMTY+PjNdJiYoYj0rX1txKzg+PjNdLGY8PWIpP2I8PXAmMTowO2Vsc2UgZm9yKCgwfGwpPT0oMHxhWzQ3''@;'; put 'put ''Mjg3XSk/KG09MHxhWzQ3Mjg4XSxBPTB8YVs0NzI5MF0sdz0wfGFbNDcyODldKTooQT0wfGFbMTIrKDB8YVtsKzE2Pj4yXSk+PjJdLGFbNDcyOTFdPUEsdz0wfGFbQSs0ND4+Ml0sYVs0NzI4OV09dyxtPTB8YVtBKzg+PjJdLGFbNDcyODhdPW0sQT0wfEFyKCgwfGFbQSs0Pj4yXSktMXwwLG0p''@;'; put 'put ''LEE9KDB8QSk+MD9BOjAsYVs0NzI5MF09QSxhWzQ3Mjg3XT1sKSxsPTAsYz0wOzspe2lmKCgwfGwpPj0oMHxtKSl7bD0xO2JyZWFrIGV9aWYoYVtSPj4yXT1hWyhiZT13KyhBK2w8PDQpfDApPj4yXSxhW1IrND4+Ml09YVtiZSs0Pj4yXSxhW1IrOD4+Ml09YVtiZSs4Pj4yXSxhW1IrMTI+PjJd''@;'; put 'put ''PWFbYmUrMTI+PjJdLGJlPXcrKEErKChsKzR8MCklKDB8bSl8MCk8PDQpfDAsYVtrPj4yXT1hW3E+PjJdLGFbays0Pj4yXT1hW3ErND4+Ml0sYVtrKzg+PjJdPWFbcSs4Pj4yXSxhW2srMTI+PjJdPWFbcSsxMj4+Ml0sYVtHPj4yXT1hWzQ2NjE0XSxhW0crND4+Ml09YVs0NjYxNV0sYVtHKzg+''@;'; put 'put ''PjJdPWFbNDY2MTZdLGFbRysxMj4+Ml09YVs0NjYxN10sYVtNPj4yXT1hW1I+PjJdLGFbTSs0Pj4yXT1hW1IrND4+Ml0sYVtNKzg+PjJdPWFbUis4Pj4yXSxhW00rMTI+PjJdPWFbUisxMj4+Ml0sYVtEPj4yXT1hW2JlPj4yXSxhW0QrND4+Ml09YVtiZSs0Pj4yXSxhW0QrOD4+Ml09YVtiZSs4''@;'; put 'put ''Pj4yXSxhW0QrMTI+PjJdPWFbYmUrMTI+PjJdLDI9PSgwfChjPWMrKDA9PSgwfEV5KGssRyxNLEQpKSYxKXwwKSkpe2w9MDticmVha31sPWwrMnwwfX13aGlsZSgwKX1lbHNlIGFbNDcyODddPTAsbD0wO3JldHVybiBsZT1wZSwwfGx9ZnVuY3Rpb24gJFEobCxjKXtsfD0wO3ZhciBwLEEsZj0w''@;'; put 'put ''LG09MDtyZXR1cm4gQT1sZSxsZT1sZSsxNnwwLDB8KGY9MHxlRChjfD0wLHA9QSkpJiZkMihsLGYpLDB8KGY9MHxhWzQ3MTcyXSkmJjB8KG09MHxIbyhjLGYpKSYmMHxmZVttPj4wXSYmeGgobCwrTWwoYywwfGFbNDcxNzJdLDEsMCkpLGxlPUEsMHxhW3A+PjJdfWZ1bmN0aW9uIHNOKGwpe3Jl''@;'; put 'put ''dHVybiAwfHFRKGx8PTAsMTM0ODAwKX1mdW5jdGlvbiBTeShsLGMpe3JldHVybiBsfD0wLGM9MHxCYShjfD0wLDB8YVs0NzE0OF0sMTk1MDU5KSxtYShsLGM9MHxmZVtjPj4wXT9jOjEzNzMxNCksMHxjfWZ1bmN0aW9uIHVOKGwsYyl7bHw9MDt2YXIgZixwLHcsYixrLE0sbT0wLEE9MDtmPWxl''@;'; put 'put ''LGxlPWxlKzk2fDAsYj1mKzgwfDAsaz1mKzY0fDAscD1mKzMyfDAsQT1mLF9bOCsoTT1mKzE2fDApPj4zXT0uMzc1KihtPStfWzgwKyhjPTB8YVsxNisoY3w9MCk+PjJdKT4+M10pLF9bTT4+M109LjY2MTQqKHc9K19bYys5Nj4+M10pLGM9YysxNnwwLGFbaz4+Ml09YVtNPj4yXSxhW2srND4+''@;'; put 'put ''Ml09YVtNKzQ+PjJdLGFbays4Pj4yXT1hW00rOD4+Ml0sYVtrKzEyPj4yXT1hW00rMTI+PjJdLGFbYj4+Ml09YVtjPj4yXSxhW2IrND4+Ml09YVtjKzQ+PjJdLGFbYis4Pj4yXT1hW2MrOD4+Ml0sYVtiKzEyPj4yXT1hW2MrMTI+PjJdLHE1KEEsayxiKSxhW3A+PjJdPWFbQT4+Ml0sYVtwKzQ+''@;'; put 'put ''PjJdPWFbQSs0Pj4yXSxhW3ArOD4+Ml09YVtBKzg+PjJdLGFbcCsxMj4+Ml09YVtBKzEyPj4yXSxfWyhjPXArMjR8MCk+PjNdPStfWyhBPXArOHwwKT4+M10sX1twKzE2Pj4zXT0rX1twPj4zXS0xLjMyMjgqdyxXbyhsLHAsMiksX1tBPj4zXT1tPStfW0E+PjNdLS43NSptLF9bYz4+M109bSxX''@;'; put 'put ''byhsLHAsMiksbGU9Zn1mdW5jdGlvbiBxNShsLGMsZil7dmFyIHA7cD0rX1s4KyhmfD0wKT4+M10rICtfWzgrKGN8PTApPj4zXSxfWyhsfD0wKT4+M109K19bZj4+M10rICtfW2M+PjNdLF9bbCs4Pj4zXT1wfWZ1bmN0aW9uIHFRKGwsYyl7Y3w9MDt2YXIgZj0wO3JldHVybiBmPTB8QmEobHw9''@;'; put 'put ''MCwwfGFbNDcxNDldLDE5NTA1OSksMHxmZVtmPj4wXT8wfGY6KGY9MHxCYShsLDB8YVs0NzE0OF0sMTk1MDU5KSwwfCgwPT0oMHxmZVtmPj4wXSk/YzpmKSl9ZnVuY3Rpb24gZUQobCxjKXtjfD0wO3ZhciBmPTAscD0wLG09MCxBPTAsdz0wLGI9MDtmPTB8QmEobHw9MCwwfGFbNDcxNTddLDE5''@;'; put 'put ''NTA1OSk7ZTpkb3tpZigwfGZlW2Y+PjBdKXtBPW09MHx6QShmKSxmPTA7dDpmb3IoOzspe2lmKCEocD0wfGFbQT4+Ml0pKWJyZWFrIGU7c3dpdGNoKDB8ZmVbcD4+MF0pe2Nhc2UgMTAyOmlmKCEoMHxaaShwLDExMTEwMSkpKXtBPUErNHwwLGZ8PTE7Y29udGludWUgdH1icmVhaztjYXNlIDEx''@;'; put 'put ''NDppZighKDB8WmkocCwxMDYzMTYpKSl7cD1BO2Rve2FbKGI9cCk+PjJdPXc9MHxhWyhwPXArNHwwKT4+Ml19d2hpbGUoMCE9KDB8dykpO2Z8PTQsQT1iPUE7Y29udGludWUgdH1pZighKDB8WmkocCwxMDYzMzQpKSl7cD1BO2Rve2FbKHc9cCk+PjJdPWI9MHxhWyhwPXArNHwwKT4+Ml19d2hp''@;'; put 'put ''bGUoMCE9KDB8YikpO2Z8PTMsQT1iPUE7Y29udGludWUgdH1icmVhaztjYXNlIDEwMDppZighKDB8WmkocCwxMDYzMjQpKSl7cD1BO2Rve2FbKHc9cCk+PjJdPWI9MHxhWyhwPXArNHwwKT4+Ml19d2hpbGUoMCE9KDB8YikpO2Z8PTgsQT1iPUE7Y29udGludWUgdH1icmVhaztjYXNlIDEwNTpp''@;'; put 'put ''ZighKDB8WmkocCwxMzQzMzUpKSl7QT1BKzR8MCxmfD0zMjtjb250aW51ZSB0fWJyZWFrO2Nhc2UgMTE1OmlmKDA9PSgwfFppKHAsMTA2MzQxKSkmJjB8WWFlKGwpKXtwPUE7ZG97YVsodz1wKT4+Ml09Yj0wfGFbKHA9cCs0fDApPj4yXX13aGlsZSgwIT0oMHxiKSk7Znw9NjQsQT1iPUE7Y29u''@;'; put 'put ''dGludWUgdH1icmVhaztjYXNlIDExOTppZigwPT0oMHxaaShwLDEwNjM0OSkpJiYwfE15KGwpKXtwPUE7ZG97YVsodz1wKT4+Ml09Yj0wfGFbKHA9cCs0fDApPj4yXX13aGlsZSgwIT0oMHxiKSk7Znw9NTEyLEE9Yj1BO2NvbnRpbnVlIHR9fUE9QSs0fDB9fWVsc2UgbT0wLGY9MH13aGlsZSgw''@;'; put 'put ''KTtyZXR1cm4ocD0wfGFbOCsoMHxhWzgrKDB8YVtsKzE2Pj4yXSk+PjJdKT4+Ml0pJiYoZnw9YVtwKzQwPj4yXSksYVtjPj4yXT1mLDB8bX1mdW5jdGlvbiBZYWUobCl7dmFyIGM9MDtyZXR1cm4gMHwoMCE9KDB8KGw9MHxhWzgrKDB8YVs4KygwfGFbMTYrKGx8PTApPj4yXSk+PjJdKT4+Ml0p''@;'; put 'put ''KSYmND09KDB8YVtsKzg+PjJdKSYmMD09KDB8KDB8fn4oKGM9K19bbCsxNj4+M10pKyhjPj0wPy41Oi0uNSkpKSU5MCkmJjA9PStfW2wrMjQ+PjNdPzA9PStfW2wrMzI+PjNdJjE6MCl9ZnVuY3Rpb24gTXkobCl7cmV0dXJuIDB8KChsPTB8YVs4KygwfGFbOCsoMHxhWzE2KyhsfD0wKT4+Ml0p''@;'; put 'put ''Pj4yXSk+PjJdKT8oMHxhW2wrOD4+Ml0pPDMmMTowKX1mdW5jdGlvbiBFeShsLGMsZixwKXt2YXIgbSx3LGIsQT0wO3JldHVybiAxJigrX1s4KyhsfD0wKT4+M10qKG09K19bKHB8PTApPj4zXS0oQT0rX1soZnw9MCk+PjNdKSkrICtfW2w+PjNdKih3PS0oK19bcCs4Pj4zXS0oYj0rX1tmKzg+''@;'; put 'put ''PjNdKSkpLShBPW0qYitBKncpPj0wXitfWyhjfD0wKT4+M10qdy1BKyArX1tjKzg+PjNdKm0+PTBeMSl8MH1mdW5jdGlvbiBtayhsLGMsZixwLG0sQSl7bHw9MCxmfD0wLHB8PTAsbXw9MCxBfD0wO3ZhciBPZSxMZSxSZSxWZSxxZSxydCxhdCxTdCxzdCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9''@;'; put 'put ''MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLEhlPTAsV2U9MCxrdD0wLEV0PTA7c3Q9bGUsbGU9bGUrMTkyfDAscnQ9c3QrMTc2fDAsU3Q9c3QrMTYwfDAsaz1zdCsxNDR8MCxWZT1zdCsxMjh8MCxxZT1zdCsxMTJ8MCxNPXN0Kzk2fDAsRD1zdCs4MHwwLFI9c3QrNjR8MCxPZT1zdCs0OHwwLExl''@;'; put 'put ''PXN0KzMyfDAsUmU9c3QrMTZ8MCxhdD1zdCwoY3w9MCk/KEN5KGssLjUqKChHPStfW2MrMTY+PjNdKSsoYj0rX1tjPj4zXSkpLC41KigocT0rX1tjKzI0Pj4zXSkrKGdlPStfW2MrOD4+M10pKSksYVtTdD4+Ml09YVtrPj4yXSxhW1N0KzQ+PjJdPWFbays0Pj4yXSxhW1N0Kzg+PjJdPWFbays4''@;'; put 'put ''Pj4yXSxhW1N0KzEyPj4yXT1hW2srMTI+PjJdLGs9MSxXZT1TdCx3PStfW1N0Pj4zXSxrdD1FdD1TdCs4fDAscGU9K19bRXQ+PjNdKTooYVtTdD4+Ml09MCxhW1N0KzQ+PjJdPTAsYVtTdCs4Pj4yXT0wLGFbU3QrMTI+PjJdPTAsaz0wPT0oMSZhWzExNisoMHxhWzE2KygwfGNyKGwpKT4+Ml0p''@;'; put 'put ''Pj4yXXwwKSxHPS41KitfWzgwKyhXZT0wfGFbbCsxNj4+Ml0pPj4zXSx3PStfW1dlKzg4Pj4zXSxnZT1rP0c6dyxHPWs/dzpHLGs9MCxXZT1TdCx3PTAsYj0tRyxxPWdlLGt0PVN0Kzh8MCxwZT0wLGdlPS1nZSksYmU9NCooRz5xP0c6cSk7ZTpkb3tpZigwIT0oMHxwKSYmKEhlPTB8ZmVbcD4+''@;'; put 'put ''MF0sSGU8PDI0Pj4yNCE9MCkpc3dpdGNoKHA9cCsxfDAsSGU8PDI0Pj4yNHwwKXtjYXNlIDk5OlI9MSxtPTAscD0wLE09MCx3PTAsRD0wO2JyZWFrIGU7Y2FzZSAxMDE6aWYoMHxmZVtwPj4wXSl7Uj0xLG09MCxwPTAsTT0wLHc9MCxEPTE7YnJlYWsgZX1BPyhlZyhWZSxBLHBlLGJlKSxhW1N0''@;'; put 'put ''Pj4yXT1hW1ZlPj4yXSxhW1N0KzQ+PjJdPWFbVmUrND4+Ml0sYVtTdCs4Pj4yXT1hW1ZlKzg+PjJdLGFbU3QrMTI+PjJdPWFbVmUrMTI+PjJdKTpfW1dlPj4zXT1HLFI9MCxtJj0yLHA9MCxNPTEsdz0wLEQ9MCxrPTE7YnJlYWsgZTtjYXNlIDExNTpzd2l0Y2goX1trdD4+M109Z2UsMHxmZVtw''@;'; put 'put ''Pj4wXSl7Y2FzZSAwOkE/KGVnKHFlLEEsLWJlLHcpLGFbU3Q+PjJdPWFbcWU+PjJdLGFbU3QrND4+Ml09YVtxZSs0Pj4yXSxhW1N0Kzg+PjJdPWFbcWUrOD4+Ml0sYVtTdCsxMj4+Ml09YVtxZSsxMj4+Ml0pOl9bV2U+PjNdPXcsUj0wLG0mPTEscD0wLE09MSx3PS0xLjU3MDc5NjMyNjc5NDg5''@;'; put 'put ''NjYsRD0wLGs9MTticmVhayBlO2Nhc2UgMTAxOkE/KGVnKE0sQSwtYmUsYmUpLGFbU3Q+PjJdPWFbTT4+Ml0sYVtTdCs0Pj4yXT1hW00rND4+Ml0sYVtTdCs4Pj4yXT1hW00rOD4+Ml0sYVtTdCsxMj4+Ml09YVtNKzEyPj4yXSk6X1tXZT4+M109RyxSPTAsbSY9MyxwPTAsTT0xLHc9LS43ODUz''@;'; put 'put ''OTgxNjMzOTc0NDgzLEQ9MCxrPTE7YnJlYWsgZTtjYXNlIDExOTpBPyhlZyhELEEsYmU9LWJlLGJlKSxhW1N0Pj4yXT1hW0Q+PjJdLGFbU3QrND4+Ml09YVtEKzQ+PjJdLGFbU3QrOD4+Ml09YVtEKzg+PjJdLGFbU3QrMTI+PjJdPWFbRCsxMj4+Ml0pOl9bV2U+PjNdPWIsUj0wLG0mPTkscD0w''@;'; put 'put ''LE09MSx3PS0yLjM1NjE5NDQ5MDE5MjM0NSxEPTAsaz0xO2JyZWFrIGU7ZGVmYXVsdDpfW2t0Pj4zXT1wZSxSPTEsbT0wLHA9MCxNPTAsdz0wLEQ9MTticmVhayBlfWNhc2UgMTE5OmlmKDB8ZmVbcD4+MF0pe1I9MSxtPTAscD0wLE09MCx3PTAsRD0xO2JyZWFrIGV9QT8oZWcoUixBLHBlLC1i''@;'; put 'put ''ZSksYVtTdD4+Ml09YVtSPj4yXSxhW1N0KzQ+PjJdPWFbUis0Pj4yXSxhW1N0Kzg+PjJdPWFbUis4Pj4yXSxhW1N0KzEyPj4yXT1hW1IrMTI+PjJdKTpfW1dlPj4zXT1iLFI9MCxtJj04LHA9MCxNPTEsdz0zLjE0MTU5MjY1MzU4OTc5MyxEPTAsaz0xO2JyZWFrIGU7Y2FzZSAxMTA6c3dpdGNo''@;'; put 'put ''KF9ba3Q+PjNdPXEsMHxmZVtwPj4wXSl7Y2FzZSAwOkE/KGVnKE9lLEEsYmUsdyksYVtTdD4+Ml09YVtPZT4+Ml0sYVtTdCs0Pj4yXT1hW09lKzQ+PjJdLGFbU3QrOD4+Ml09YVtPZSs4Pj4yXSxhW1N0KzEyPj4yXT1hW09lKzEyPj4yXSk6X1tXZT4+M109dyxSPTAsbSY9NCxwPTAsTT0xLHc9''@;'; put 'put ''MS41NzA3OTYzMjY3OTQ4OTY2LEQ9MCxrPTE7YnJlYWsgZTtjYXNlIDEwMTpBPyhlZyhMZSxBLGJlLGJlKSxhW1N0Pj4yXT1hW0xlPj4yXSxhW1N0KzQ+PjJdPWFbTGUrND4+Ml0sYVtTdCs4Pj4yXT1hW0xlKzg+PjJdLGFbU3QrMTI+PjJdPWFbTGUrMTI+PjJdKTpfW1dlPj4zXT1HLFI9MCxt''@;'; put 'put ''Jj02LHA9MCxNPTEsdz0uNzg1Mzk4MTYzMzk3NDQ4MyxEPTAsaz0xO2JyZWFrIGU7Y2FzZSAxMTk6QT8oZWcoUmUsQSxiZSwtYmUpLGFbU3Q+PjJdPWFbUmU+PjJdLGFbU3QrND4+Ml09YVtSZSs0Pj4yXSxhW1N0Kzg+PjJdPWFbUmUrOD4+Ml0sYVtTdCsxMj4+Ml09YVtSZSsxMj4+Ml0pOl9b''@;'; put 'put ''V2U+PjNdPWIsUj0wLG0mPTEyLHA9MCxNPTEsdz0yLjM1NjE5NDQ5MDE5MjM0NSxEPTAsaz0xO2JyZWFrIGU7ZGVmYXVsdDpfW2t0Pj4zXT1wZSxSPTEsbT0wLHA9MCxNPTAsdz0wLEQ9MTticmVhayBlfWNhc2UgOTU6Uj0xLHA9MSxNPTAsdz0wLEQ9MDticmVhayBlO2RlZmF1bHQ6Uj0xLG09''@;'; put 'put ''MCxwPTAsTT0wLHc9MCxEPTE7YnJlYWsgZX1lbHNlIFI9MSxtPTAscD0wLE09MCx3PTAsRD0wfXdoaWxlKDApO3JldHVybiBFdD05MCooMyZhWzExNisoMHxhWzE2KygwfGNyKGwpKT4+Ml0pPj4yXSl8MCxhW3J0Pj4yXT1hW1N0Pj4yXSxhW3J0KzQ+PjJdPWFbU3QrND4+Ml0sYVtydCs4Pj4y''@;'; put 'put ''XT1hW1N0Kzg+PjJdLGFbcnQrMTI+PjJdPWFbU3QrMTI+PjJdLFFJKGF0LHJ0LEV0KSxhW1N0Pj4yXT1hW2F0Pj4yXSxhW1N0KzQ+PjJdPWFbYXQrND4+Ml0sYVtTdCs4Pj4yXT1hW2F0Kzg+PjJdLGFbU3QrMTI+PjJdPWFbYXQrMTI+PjJdLHA8PDI0Pj4yNHx8KG09MHxmdW5jdGlvbiBVYWUo''@;'; put 'put ''bCxjKXtsfD0wLGN8PTA7ZTpkb3tzd2l0Y2goMHxjKXtjYXNlIDM6c3dpdGNoKDB8bCl7Y2FzZSA0Omw9MjticmVhayBlO2Nhc2UgMTpsPTg7YnJlYWsgZTtjYXNlIDg6bD0xO2JyZWFrIGU7Y2FzZSAyOmw9NDticmVhayBlO2RlZmF1bHQ6YnJlYWsgZX1jYXNlIDI6c3dpdGNoKDB8bCl7Y2Fz''@;'; put 'put ''ZSA0Omw9MTticmVhayBlO2Nhc2UgMTpsPTQ7YnJlYWsgZTtkZWZhdWx0OmJyZWFrIGV9Y2FzZSAxOnN3aXRjaCgwfGwpe2Nhc2UgNDpsPTI7YnJlYWsgZTtjYXNlIDE6bD04O2JyZWFrIGU7Y2FzZSA4Omw9NDticmVhayBlO2Nhc2UgMjpsPTE7YnJlYWsgZTtkZWZhdWx0OmJyZWFrIGV9fX13''@;'; put 'put ''aGlsZSgwKTtyZXR1cm4gMHxsfShtLDMmYVsxMTYrKDB8YVsxNisoMHxjcihsKSk+PjJdKT4+Ml0pKSxmZVtmKzMzPj4wXT1tLGFbZisyND4+Ml09YyxfW2Y+PjNdPSsoMHx+figoYj0rX1tXZT4+M10pKyhiPj0wPy41Oi0uNSkpKSxfW2YrOD4+M109KygwfH5+KChiPStfW2t0Pj4zXSkrKGI+''@;'; put 'put ''PTA/LjU6LS41KSkpLF9bZisxNj4+M109K2Z1bmN0aW9uIFFhZShsLGMpe3N3aXRjaChsPStsLDB8KGN8PTApKXtjYXNlIDM6My4xNDE1OTI2NTM1ODk3OTMhPWw/Mi4zNTYxOTQ0OTAxOTIzNDUhPWw/MS41NzA3OTYzMjY3OTQ4OTY2IT1sPzAhPWw/LS43ODUzOTgxNjMzOTc0NDgzIT1sPy0x''@;'; put 'put ''LjU3MDc5NjMyNjc5NDg5NjY9PWwmJihsPTMuMTQxNTkyNjUzNTg5NzkzKTpsPTIuMzU2MTk0NDkwMTkyMzQ1Omw9MS41NzA3OTYzMjY3OTQ4OTY2Omw9MDpsPS0uNzg1Mzk4MTYzMzk3NDQ4MzpsPS0xLjU3MDc5NjMyNjc5NDg5NjY7YnJlYWs7Y2FzZSAyOmw9LWw7YnJlYWs7Y2FzZSAxOmwr''@;'; put 'put ''PS0xLjU3MDc5NjMyNjc5NDg5NjZ9cmV0dXJuK2x9KHcsMyZhWzExNisoMHxhWzE2KygwfGNyKGwpKT4+Ml0pPj4yXSksbT0wPT0oYj0rX1tXZT4+M10pJjA9PSh3PStfW2t0Pj4zXSk/LTEyODoyNTUmfn4oNDAuNzQzNjY1NDMxNTI1MjEqKChnZT00LjcxMjM4ODk4MDM4NDY5KyhiZT0rVWwo''@;'; put 'put ''K3csK2IpKSk+PTYuMjgzMTg1MzA3MTc5NTg2P2JlKy0xLjU3MDc5NjMyNjc5NDg5NjY6Z2UpKSxmZVtmKzMyPj4wXT1tLGZlW2YrMjk+PjBdPU0sZmVbZisyOD4+MF09ayxmZVtmKzMwPj4wXT1SLGZlW2YrMzE+PjBdPXAsbGU9c3QsMHxEfWZ1bmN0aW9uIGVKKGwsYyl7dmFyIGYscDtjfD0w''@;'; put 'put ''LGY9bGUsbGU9bGUrMTZ8MCxhWyhwPWYpPj4yXT0wfHRpKGx8PTApLGFbcCs0Pj4yXT1jLCRyKDAsMTA2NDE5LHApLGxlPWZ9ZnVuY3Rpb24gZWcobCxjLGYscCl7bHw9MCxmPStmLHA9K3A7dmFyIG0sQSx3LGIsayxELFIsRyxxLE09MDtHPWxlLGxlPWxlKzEyOHwwLEE9RysxMTJ8MCxiPUcr''@;'; put 'put ''NDh8MCxrPUcrMTZ8MCxNPUcrMzJ8MCxEPUcsdz0zJmFbMTE2KygwfGFbMTYrKDB8Y3IoUj0wfGFbKGN8PTApPj4yXSkpPj4yXSk+PjJdLF9baz4+M109cCxfW2srOD4+M109ZiwobT0wIT0oMHx3KSkmJihhW0E+PjJdPWFbaz4+Ml0sYVtBKzQ+PjJdPWFbays0Pj4yXSxhW0ErOD4+Ml09YVtr''@;'; put 'put ''Kzg+PjJdLGFbQSsxMj4+Ml09YVtrKzEyPj4yXSxRSShNLEEsOTAqd3wwKSxhW2s+PjJdPWFbTT4+Ml0sYVtrKzQ+PjJdPWFbTSs0Pj4yXSxhW2srOD4+Ml09YVtNKzg+PjJdLGFbaysxMj4+Ml09YVtNKzEyPj4yXSksTT1iKzQ4fDAscT1iKzMyfDAsYVtiPj4yXT0wLGFbYis0Pj4yXT0wLGFb''@;'; put 'put ''Yis4Pj4yXT0wLGFbYisxMj4+Ml09MCxhW2IrMTY+PjJdPTAsYVtiKzIwPj4yXT0wLGFbYisyND4+Ml09MCxhW2IrMjg+PjJdPTAsYVtxPj4yXT1hW2s+PjJdLGFbcSs0Pj4yXT1hW2srND4+Ml0sYVtxKzg+PjJdPWFbays4Pj4yXSxhW3ErMTI+PjJdPWFbaysxMj4+Ml0sYVtNPj4yXT1hW2s+''@;'; put 'put ''PjJdLGFbTSs0Pj4yXT1hW2srND4+Ml0sYVtNKzg+PjJdPWFbays4Pj4yXSxhW00rMTI+PjJdPWFbaysxMj4+Ml0sdEQoYywwfGFbMTIrKDB8YVs0KygwfGFbOCsoMHxhW1IrMTY+PjJdKT4+Ml0pPj4yXSk+PjJdLGIsMSksbSYmKGFbQT4+Ml09YVtiPj4yXSxhW0ErND4+Ml09YVtiKzQ+PjJd''@;'; put 'put ''LGFbQSs4Pj4yXT1hW2IrOD4+Ml0sYVtBKzEyPj4yXT1hW2IrMTI+PjJdLFU2KEQsQSw5MCp3fDApLGFbYj4+Ml09YVtEPj4yXSxhW2IrND4+Ml09YVtEKzQ+PjJdLGFbYis4Pj4yXT1hW0QrOD4+Ml0sYVtiKzEyPj4yXT1hW0QrMTI+PjJdKSxhW2w+PjJdPWFbYj4+Ml0sYVtsKzQ+PjJdPWFb''@;'; put 'put ''Yis0Pj4yXSxhW2wrOD4+Ml09YVtiKzg+PjJdLGFbbCsxMj4+Ml09YVtiKzEyPj4yXSxsZT1HfWZ1bmN0aW9uIHJKKGwsYyxmKXtsfD0wLGN8PTA7dmFyIEQsUixHLHEscGUsZ2UsYmUscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO2ZvcihiZT1sZSxsZT1sZSsxNDR8MCxSPWJlKzEyOHww''@;'; put 'put ''LEQ9YmUrMTEyfDAsRz1iZSsxNnwwLHE9YmUsbT1iZSs5NnwwLEE9YmUrODB8MCxwZT1iZSs2NHwwLGdlPWJlKzQ4fDAsKHA9MHxhWyh3PTUyKyhmfD0wKXwwKT4+Ml0pPyhNPXArNTZ8MCxwPWYrMzJ8MCxhW0Q+PjJdPWFbKGs9ZisxNnwwKT4+Ml0sYVtEKzQ+PjJdPWFbays0Pj4yXSxhW0Qr''@;'; put 'put ''OD4+Ml09YVtrKzg+PjJdLGFbRCsxMj4+Ml09YVtrKzEyPj4yXSxhW1I+PjJdPWFbcD4+Ml0sYVtSKzQ+PjJdPWFbcCs0Pj4yXSxhW1IrOD4+Ml09YVtwKzg+PjJdLGFbUisxMj4+Ml09YVtwKzEyPj4yXSxmdW5jdGlvbiBxYWUobCxjLGYpe3ZhciBwO3A9LjUqKCtfWzgrKGZ8PTApPj4zXSsg''@;'; put 'put ''K19bOCsoY3w9MCk+PjNdKSxfWyhsfD0wKT4+M109LjUqKCtfW2Y+PjNdKyArX1tjPj4zXSksX1tsKzg+PjNdPXB9KG0sRCxSKSxrPTE2KygwfGFbKHA9YysxNnwwKT4+Ml0pfDAsYVtEPj4yXT1hW20+PjJdLGFbRCs0Pj4yXT1hW20rND4+Ml0sYVtEKzg+PjJdPWFbbSs4Pj4yXSxhW0QrMTI+''@;'; put 'put ''PjJdPWFbbSsxMj4+Ml0sYVtSPj4yXT1hW2s+PjJdLGFbUis0Pj4yXT1hW2srND4+Ml0sYVtSKzg+PjJdPWFbays4Pj4yXSxhW1IrMTI+PjJdPWFbaysxMj4+Ml0scTUoQSxELFIpLGFbTT4+Ml09YVtBPj4yXSxhW00rND4+Ml09YVtBKzQ+PjJdLGFbTSs4Pj4yXT1hW0ErOD4+Ml0sYVtNKzEy''@;'; put 'put ''Pj4yXT1hW0ErMTI+PjJdLGI3KGwsMTAsMHxhW3c+PjJdKSxTeShsLGMpKTpwPWMrMTZ8MCxhW3E+PjJdPWFbKGI9MTYrKDB8YVtwPj4yXSl8MCk+PjJdLGFbcSs0Pj4yXT1hW2IrND4+Ml0sYVtxKzg+PjJdPWFbYis4Pj4yXSxhW3ErMTI+PjJdPWFbYisxMj4+Ml0sYj1mKzQ4fDAsaz1mKzY0''@;'; put 'put ''fDAsTT1HKzE2fDAsdz1mKzU2fDAsZj1HKzE2fDAsQT0wOyEoKDB8QSk+PSgwfGFbYj4+Ml0pKTspKDB8QSk+MCYmKG09MHxhWyhwPSgwfGFbdz4+Ml0pKyhBPDwyKXwwKT4+Ml0sMHxmZVtrPj4wXT8oYVtHPj4yXT1hWyhtPW0rMTZ8MCk+PjJdLGFbRys0Pj4yXT1hW20rND4+Ml0sYVtHKzg+''@;'; put 'put ''PjJdPWFbbSs4Pj4yXSxhW0crMTI+PjJdPWFbbSsxMj4+Ml0sX1tmPj4zXT0rX1tHPj4zXSxwPTMyKygwfGFbcD4+Ml0pfDAsbT0xKTooYVtNPj4yXT1hWyhtPW0rMzJ8MCk+PjJdLGFbTSs0Pj4yXT1hW20rND4+Ml0sYVtNKzg+PjJdPWFbbSs4Pj4yXSxhW00rMTI+PjJdPWFbbSsxMj4+Ml0s''@;'; put 'put ''X1tHPj4zXT0rX1sxNisoMHxhW3A+PjJdKT4+M10scD1NLG09MCksX1tHKyhtPDw0KSs4Pj4zXT0rX1twKzg+PjNdLGFbRD4+Ml09YVtHPj4yXSxhW0QrND4+Ml09YVtHKzQ+PjJdLGFbRCs4Pj4yXT1hW0crOD4+Ml0sYVtEKzEyPj4yXT1hW0crMTI+PjJdLGFbUj4+Ml09YVtxPj4yXSxhW1Ir''@;'; put 'put ''ND4+Ml09YVtxKzQ+PjJdLGFbUis4Pj4yXT1hW3ErOD4+Ml0sYVtSKzEyPj4yXT1hW3ErMTI+PjJdLHE1KHBlLEQsUiksYVtHPj4yXT1hW3BlPj4yXSxhW0crND4+Ml09YVtwZSs0Pj4yXSxhW0crOD4+Ml09YVtwZSs4Pj4yXSxhW0crMTI+PjJdPWFbcGUrMTI+PjJdLGFbRD4+Ml09YVtNPj4y''@;'; put 'put ''XSxhW0QrND4+Ml09YVtNKzQ+PjJdLGFbRCs4Pj4yXT1hW00rOD4+Ml0sYVtEKzEyPj4yXT1hW00rMTI+PjJdLGFbUj4+Ml09YVtxPj4yXSxhW1IrND4+Ml09YVtxKzQ+PjJdLGFbUis4Pj4yXT1hW3ErOD4+Ml0sYVtSKzEyPj4yXT1hW3ErMTI+PjJdLHE1KGdlLEQsUiksYVtNPj4yXT1hW2dl''@;'; put 'put ''Pj4yXSxhW00rND4+Ml09YVtnZSs0Pj4yXSxhW00rOD4+Ml09YVtnZSs4Pj4yXSxhW00rMTI+PjJdPWFbZ2UrMTI+PjJdLFdvKGwsRywyKSksckoobCxjLDB8YVsoMHxhW3c+PjJdKSsoQTw8Mik+PjJdKSxBPUErMXwwO2xlPWJlfWZ1bmN0aW9uIGlKKGwsYyl7Y3w9MDt2YXIgZj0wLHA9MCxt''@;'; put 'put ''PTA7MCE9KDB8KGY9MHxhWzYwKyhsfD0wKT4+Ml0pKSYmKDB8ZmVbZj4+MF0pPT0oMHxmZVtjPj4wXSkmJjA9PSgwfFppKGYsYykpfHwocD00KTtlOmRve2lmKDQ9PSgwfHApKWZvcihtPWwrNTZ8MCxwPTB8YVtsKzQ4Pj4yXSxmPTA7Oyl7aWYoKDB8Zik+PSgwfHApKXtsPTA7YnJlYWsgZX1p''@;'; put 'put ''ZihsPTB8aUooMHxhWygwfGFbbT4+Ml0pKyhmPDwyKT4+Ml0sYykpYnJlYWs7Zj1mKzF8MH19d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBvSihsLGMpe2x8PTAsY3w9MDt2YXIgZ2UsYmUsT2UsTGUsUmUsSGUsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9''@;'; put 'put ''MCxxPTAscGU9MDtIZT1sZSxsZT1sZSsxNDR8MCxPZT1IZSsxMTJ8MCxiZT1IZSs5NnwwLExlPUhlKzgwfDAsZ2U9SGUrNjR8MCxSZT1IZSszMnwwLHE9SGUrMTZ8MCxwZT1IZSxBPUhlKzQ4fDA7ZG97aWYobCl7aWYoYj0wfGFbbCs0Pj4yXSxSPTkwKigzJmFbMTE2KygwfGFbMTYrKDB8Y3Io''@;'; put 'put ''az0wfGFbbD4+Ml0pKT4+Ml0pPj4yXSl8MCxhW09lPj4yXT1hW2M+PjJdLGFbT2UrND4+Ml09YVtjKzQ+PjJdLGFbT2UrOD4+Ml09YVtjKzg+PjJdLGFbT2UrMTI+PjJdPWFbYysxMj4+Ml0sVTYoQSxPZSxSKSxhW1JlPj4yXT1hW0E+PjJdLGFbUmUrND4+Ml09YVtBKzQ+PjJdLGFbUmUrOD4+''@;'; put 'put ''Ml09YVtBKzg+PjJdLGFbUmUrMTI+PjJdPWFbQSsxMj4+Ml0sMHxiKXtpZighKCtfW2I+PjNdPD0oZj0rX1tSZT4+M10pKSl7bD0wO2JyZWFrfWlmKCEoZjw9K19bYisxNj4+M10pKXtsPTA7YnJlYWt9aWYoISgrX1tiKzg+PjNdPD0oZj0rX1tSZSs4Pj4zXSkpKXtsPTA7YnJlYWt9bD1mPD0r''@;'; put 'put ''X1tiKzI0Pj4zXTticmVha31pZigoMHxrKT09KDB8YVs0NzI5Ml0pPyhmPStfWzIzMzA5XSxwPStfWzIzMzEwXSx3PStfWzIzMzExXSk6KGFbNDcyOTNdPWM9MHxhWzEyKygwfGFbKGw9aysxNnwwKT4+Ml0pPj4yXSxhWzQ3Mjk0XT1hW2MrNDQ+PjJdLGFbNDcyOTVdPWFbYys4Pj4yXSwyMDQ4''@;'; put 'put ''JmFbYys0MD4+Ml0/KHZKKE9lLGMpLHc9K19bT2UrMTY+PjNdLStfW09lPj4zXSxtPStfW09lKzI0Pj4zXS0rX1tPZSs4Pj4zXSxSPTA9PSgxJmFbMTE2KygwfGFbMTYrKDB8Y3IoaykpPj4yXSk+PjJdfDApLF9bKFI/MTg2NDk2OjE4NjUwNCk+PjNdPXcsX1soUj8xODY1MDQ6MTg2NDk2KT4+''@;'; put 'put ''M109bSk6KEQ9MD09KDEmYVsxMTYrKDB8YVsxNisoMHxjcihrKSk+PjJdKT4+Ml18MCksX1soRD8xODY0OTY6MTg2NTA0KT4+M109K19bOTYrKFI9MHxhW2w+PjJdKT4+M10rICtfW1IrODg+PjNdLF9bKEQ/MTg2NTA0OjE4NjQ5Nik+PjNdPStfW1IrODA+PjNdLG09KygwfH5+KChtPTcyKitf''@;'; put 'put ''W1IrNDA+PjNdKSsobT49MD8uNTotLjUpKSksdz0rKDB8fn4oKHc9NzIqK19bUiszMj4+M10pKyh3Pj0wPy41Oi0uNSkpKSksMD09KGY9K19bMjMzMTJdKSYmKF9bMjMzMTJdPTEsZj0xKSwwPT0ocD0rX1syMzMxM10pJiYoX1syMzMxM109MSxwPTEpLF9bMjMzMDldPWY9dy9mLF9bMjMzMTBd''@;'; put 'put ''PXA9bS9wLF9bMjMzMTFdPXcqPS41LF9bMjMzMTRdPS41Km0sUj0wfEFyKCgwfGFbNCsoMHxhWzQ3MjkzXSk+PjJdKS0xfDAsMHxhWzQ3Mjk1XSksYVs0NzI5Nl09KDB8Uik+MD9SOjAsYVs0NzI5Ml09ayksX1tSZT4+M109bT0rX1tSZT4+M10qZixfWyhSPVJlKzh8MCk+PjNdPWY9K19bUj4+''@;'; put 'put ''M10qcCwrZW8oK20pPnd8fChwPStlbygrZikpPihHPStfWzIzMzE0XSkpbD0wO2Vsc2V7aWYoKDB8KFI9MHxhWzQ3Mjk1XSkpPDMpe2w9KyR5KG0vdyxmL0cpPDE7YnJlYWt9aWYobD0oMSsoYz0oMHxhWzQ3Mjk3XSklKDB8Uil8MCl8MCklKDB8Uil8MCxhW3E+PjJdPWFbKEQ9KGs9MHxhWzQ3''@;'; put 'put ''Mjk0XSkrKChNPTB8YVs0NzI5Nl0pK2M8PDQpfDApPj4yXSxhW3ErND4+Ml09YVtEKzQ+PjJdLGFbcSs4Pj4yXT1hW0QrOD4+Ml0sYVtxKzEyPj4yXT1hW0QrMTI+PjJdLGFbcGU+PjJdPWFbKEQ9aysoTStsPDw0KXwwKT4+Ml0sYVtwZSs0Pj4yXT1hW0QrND4+Ml0sYVtwZSs4Pj4yXT1hW0Qr''@;'; put 'put ''OD4+Ml0sYVtwZSsxMj4+Ml09YVtEKzEyPj4yXSxhW2dlPj4yXT1hW1JlPj4yXSxhW2dlKzQ+PjJdPWFbUmUrND4+Ml0sYVtnZSs4Pj4yXT1hW1JlKzg+PjJdLGFbZ2UrMTI+PjJdPWFbUmUrMTI+PjJdLGFbTGU+PjJdPWFbNDY2MzBdLGFbTGUrND4+Ml09YVs0NjYzMV0sYVtMZSs4Pj4yXT1h''@;'; put 'put ''WzQ2NjMyXSxhW0xlKzEyPj4yXT1hWzQ2NjMzXSxhW2JlPj4yXT1hW3E+PjJdLGFbYmUrND4+Ml09YVtxKzQ+PjJdLGFbYmUrOD4+Ml09YVtxKzg+PjJdLGFbYmUrMTI+PjJdPWFbcSsxMj4+Ml0sYVtPZT4+Ml09YVtEPj4yXSxhW09lKzQ+PjJdPWFbRCs0Pj4yXSxhW09lKzg+PjJdPWFbRCs4''@;'; put 'put ''Pj4yXSxhW09lKzEyPj4yXT1hW0QrMTI+PjJdLDB8RXkoZ2UsTGUsYmUsT2UpKXtpZihhW2dlPj4yXT1hW1JlPj4yXSxhW2dlKzQ+PjJdPWFbUmUrND4+Ml0sYVtnZSs4Pj4yXT1hW1JlKzg+PjJdLGFbZ2UrMTI+PjJdPWFbUmUrMTI+PjJdLGFbTGU+PjJdPWFbcT4+Ml0sYVtMZSs0Pj4yXT1h''@;'; put 'put ''W3ErND4+Ml0sYVtMZSs4Pj4yXT1hW3ErOD4+Ml0sYVtMZSsxMj4+Ml09YVtxKzEyPj4yXSxhW2JlPj4yXT1hW3BlPj4yXSxhW2JlKzQ+PjJdPWFbcGUrND4+Ml0sYVtiZSs4Pj4yXT1hW3BlKzg+PjJdLGFbYmUrMTI+PjJdPWFbcGUrMTI+PjJdLGFbT2U+PjJdPWFbNDY2MzBdLGFbT2UrND4+''@;'; put 'put ''Ml09YVs0NjYzMV0sYVtPZSs4Pj4yXT1hWzQ2NjMyXSxhW09lKzEyPj4yXT1hWzQ2NjMzXSwoRD0wIT0oMHxFeShnZSxMZSxiZSxPZSkpKSYmKGFbZ2U+PjJdPWFbUmU+PjJdLGFbZ2UrND4+Ml09YVtSZSs0Pj4yXSxhW2dlKzg+PjJdPWFbUmUrOD4+Ml0sYVtnZSsxMj4+Ml09YVtSZSsxMj4+''@;'; put 'put ''Ml0sYVtMZT4+Ml09YVtwZT4+Ml0sYVtMZSs0Pj4yXT1hW3BlKzQ+PjJdLGFbTGUrOD4+Ml09YVtwZSs4Pj4yXSxhW0xlKzEyPj4yXT1hW3BlKzEyPj4yXSxhW2JlPj4yXT1hWzQ2NjMwXSxhW2JlKzQ+PjJdPWFbNDY2MzFdLGFbYmUrOD4+Ml09YVs0NjYzMl0sYVtiZSsxMj4+Ml09YVs0NjYz''@;'; put 'put ''M10sYVtPZT4+Ml09YVtxPj4yXSxhW09lKzQ+PjJdPWFbcSs0Pj4yXSxhW09lKzg+PjJdPWFbcSs4Pj4yXSxhW09lKzEyPj4yXT1hW3ErMTI+PjJdLDAhPSgwfEV5KGdlLExlLGJlLE9lKSkpKXtsPTE7YnJlYWt9Zm9yKGI9YyxjPTE7Oyl7aWYoKDB8Yyk+PSgwfFIpKXtjPTMxO2JyZWFrfWlm''@;'; put 'put ''KEQ/KEE9bCxsPShsKzF8MCklKDB8Uil8MCk6KEE9KGIrLTErUnwwKSUoMHxSKXwwLGw9YikscT1rKyhNK0E8PDQpfDAscGU9aysoTStsPDw0KXwwLGFbZ2U+PjJdPWFbUmU+PjJdLGFbZ2UrND4+Ml09YVtSZSs0Pj4yXSxhW2dlKzg+PjJdPWFbUmUrOD4+Ml0sYVtnZSsxMj4+Ml09YVtSZSsx''@;'; put 'put ''Mj4+Ml0sYVtMZT4+Ml09YVs0NjYzMF0sYVtMZSs0Pj4yXT1hWzQ2NjMxXSxhW0xlKzg+PjJdPWFbNDY2MzJdLGFbTGUrMTI+PjJdPWFbNDY2MzNdLGFbYmU+PjJdPWFbcT4+Ml0sYVtiZSs0Pj4yXT1hW3ErND4+Ml0sYVtiZSs4Pj4yXT1hW3ErOD4+Ml0sYVtiZSsxMj4+Ml09YVtxKzEyPj4y''@;'; put 'put ''XSxhW09lPj4yXT1hW3BlPj4yXSxhW09lKzQ+PjJdPWFbcGUrND4+Ml0sYVtPZSs4Pj4yXT1hW3BlKzg+PjJdLGFbT2UrMTI+PjJdPWFbcGUrMTI+PjJdLCEoMHxFeShnZSxMZSxiZSxPZSkpKXtjPTMwO2JyZWFrfWI9QSxjPWMrMXwwfWlmKDMwPT0oMHxjKSl7YVs0NzI5N109QSxsPTA7YnJl''@;'; put 'put ''YWt9aWYoMzE9PSgwfGMpKXthWzQ3Mjk3XT1iLGw9MTticmVha319ZWxzZSBsPTB9fWVsc2UgYVs0NzI5Ml09MCxsPTB9d2hpbGUoMCk7cmV0dXJuIGxlPUhlLDEmbHwwfWZ1bmN0aW9uIGZOKGwsYyl7Y3w9MDt2YXIgbSxiLGY9MCxwPTAsQT0wLHc9MCxrPTA7cmV0dXJuIGI9bGUsbGU9bGUr''@;'; put 'put ''MzJ8MCxtPWIrMTZ8MCx3PWIsKGx8PTApPyhrPTkwKigzJmFbMTE2KygwfGFbMTYrKDB8Y3IobD0wfGFbbD4+Ml0pKT4+Ml0pPj4yXSl8MCxhW20+PjJdPWFbYz4+Ml0sYVttKzQ+PjJdPWFbYys0Pj4yXSxhW20rOD4+Ml09YVtjKzg+PjJdLGFbbSsxMj4+Ml09YVtjKzEyPj4yXSxVNih3LG0s''@;'; put 'put ''ayksQT0rX1t3Pj4zXSxwPStfW3crOD4+M10sKDB8bCk9PSgwfGFbNDczMDBdKT9mPStfWzIzMzE3XTooX1syMzMxN109Zj0rX1soMHxhWzQ0Kyh3PTB8YVsxMisoMHxhW2wrMTY+PjJdKT4+Ml0pPj4yXSkrKCgxfCgoMHwoaz0oYVt3KzQ+PjJdPDwxKS0yfDApKT4wP2s6MCkpPDw0KT4+M10s''@;'; put 'put ''YVs0NzMwMF09bCksbD0rZW8oK0EpPmZ8K2VvKCtwKT5mPzA6KyR5KEEscCk8PWYmMSk6KGFbNDczMDBdPTAsbD0wKSxsZT1iLDB8bH1mdW5jdGlvbiB4eShsLGMsZixwKXt2YXIgbSxBO2x8PTAsbT1sZSxsZT1sZSs0OHwwLEE9bSxmPTB8ZnVuY3Rpb24gcmxlKGwsYyxmKXtjfD0wLGZ8PTA7''@;'; put 'put ''dmFyIFZlLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxMZT0wLFJlPTAsSGU9MCxxZT0wLHJ0PTAsV2U9MDtWZT1sZSxsZT1sZSszMnwwLEhlPVZlLG09VmUrMjR8MCxiPVZlKzE2fDAsUmU9MyZhWzExNisoMHxhWzE2Kygw''@;'; put 'put ''fGFbNjArKDB8Y3IobHw9MCkpPj4yXSk+PjJdKT4+Ml0sYVtIZT4+Ml09YVsoTGU9MTYrKDB8YVsocD1sKzE2fDApPj4yXSl8MCk+PjJdLGFbSGUrND4+Ml09YVtMZSs0Pj4yXSxhW0hlKzg+PjJdPWFbTGUrOD4+Ml0sYVtIZSsxMj4+Ml09YVtMZSsxMj4+Ml0sYUoobSxIZSxSZSksYVtIZT4+''@;'; put 'put ''Ml09YVsoTGU9MTYrKDB8YVtjKzE2Pj4yXSl8MCk+PjJdLGFbSGUrND4+Ml09YVtMZSs0Pj4yXSxhW0hlKzg+PjJdPWFbTGUrOD4+Ml0sYVtIZSsxMj4+Ml09YVtMZSsxMj4+Ml0sYUooYixIZSxSZSksSGU9MjU1JihSZT0wfGZlW2YrMzM+PjBdKTtlOmRve3N3aXRjaChSZTw8MjQ+PjI0KXtj''@;'; put 'put ''YXNlIDA6Y2FzZSAxNTpjPTA7YnJlYWs7ZGVmYXVsdDpmb3IoKGM9MHxhW2YrMjQ+PjJdKT8oTT0rX1tjPj4zXSxBPStfW2MrMTY+PjNdLGs9K19bYysyND4+M10sdz0rX1tjKzg+PjNdKTooUmU9MD09KDEmYVsxMTYrKDB8YVsxNisoMHxjcihsKSk+PjJdKT4+Ml18MCkscWU9LShydD0uNSor''@;'; put 'put ''X1s4MCsoTGU9MHxhW3A+PjJdKT4+M10pLHc9LShrPStfW0xlKzg4Pj4zXSksTT1SZT93OnFlLEE9UmU/azpydCxrPVJlP3J0Omssdz1SZT9xZTp3KSxSZT0wfGFbbT4+Ml0sT2U9MHxhW20rND4+Ml0sTGU9MHxhW2I+PjJdLHBlPTB8YVtiKzQ+PjJdLGdlPX5+dyxiZT1+figuNSooQStNKSks''@;'; put 'put ''cT1+fkEsRz1+figuNSooayt3KSksUj1+fmssRD1+fk0sbT0wLGI9MCxjPTAsZj0wLGw9MDs7KXtpZig0PT0oMHxiKSlicmVhayBlO2lmKDE8PGImSGUpe3N3aXRjaCgwfGIpe2Nhc2UgMDpmPWJlLGw9Z2U7YnJlYWs7Y2FzZSAxOmY9cSxsPUc7YnJlYWs7Y2FzZSAyOmY9YmUsbD1SO2JyZWFr''@;'; put 'put ''O2Nhc2UgMzpmPUQsbD1HfXA9KGY9UmUrZnwwKS1MZXwwLDA9PSgwfGMpfCgwfChwPSgwfEFyKFdlPShsPU9lK2x8MCktcGV8MCxXZSkpKygwfEFyKHAscCkpfDApKTwoMHxtKT9jPTB8YVsyMjAyOCsoYjw8Mik+PjJdOnA9bX1lbHNlIHA9bTttPXAsYj1iKzF8MH19fXdoaWxlKDApO3JldHVy''@;'; put 'put ''biBsZT1WZSwwfGN9KGN8PTAsZnw9MCxwfD0wKSxhW0ErMzY+PjJdPWFbcCszNj4+Ml0sbWsoYywwfGFbcCsyND4+Ml0sQSxmLDB8WHRbcCszMz4+MF0sMCksYz1BLGY9bCs0MHwwO2Rve2FbbD4+Ml09YVtjPj4yXSxsPWwrNHwwLGM9Yys0fDB9d2hpbGUoKDB8bCk8KDB8ZikpO2xlPW19ZnVu''@;'; put 'put ''Y3Rpb24gYUoobCxjLGYpe2x8PTAsY3w9MDt2YXIgcD0wLG09MDtzd2l0Y2goMHwoZnw9MCkpe2Nhc2UgMDptPStfW2M+PjNdLHA9K19bYys4Pj4zXTticmVhaztjYXNlIDI6bT0rX1tjPj4zXSxwPS0rX1tjKzg+PjNdO2JyZWFrO2Nhc2UgMTptPS0rX1tjKzg+PjNdLHA9K19bYz4+M107YnJl''@;'; put 'put ''YWs7Y2FzZSAzOm09K19bYys4Pj4zXSxwPStfW2M+PjNdO2JyZWFrO2RlZmF1bHQ6bT0wLHA9MH1hW2w+PjJdPX5+KG0rKG0+PTA/LjU6LS41KSksYVtsKzQ+PjJdPX5+KHArKHA+PTA/LjU6LS41KSl9ZnVuY3Rpb24gaWxlKGwpe3ZhciBtLEEsdyxjPTAsZj0wLHA9MDtpZih3PWxlLGxlPWxl''@;'; put 'put ''KzgwfDAscD13KzQwfDAsQT13LGM9MTYrKGY9MHxhWyhtPTE2KyhsfD0wKXwwKT4+Ml0pfDAsMHxmZVtmKzQ3Pj4wXSl7eHkocCwwfGFbKDM9PSgwfChmPTMmYVtsPj4yXSkpP2w6bCs0OHwwKSs0MD4+Ml0sMHxhWygyPT0oMHxmKT9sOmwrLTQ4fDApKzQwPj4yXSxjKSxmPXAscD1jKzQwfDA7''@;'; put 'put ''ZG97YVtjPj4yXT1hW2Y+PjJdLGM9Yys0fDAsZj1mKzR8MH13aGlsZSgoMHxjKTwoMHxwKSk7Zj0wfGFbbT4+Ml19aWYoYz1mKzU2fDAsMHxmZVtmKzg3Pj4wXSl7eHkoQSwwfGFbKDI9PSgwfChmPTMmYVtsPj4yXSkpP2w6bCstNDh8MCkrNDA+PjJdLDB8YVsoMz09KDB8Zik/bDpsKzQ4fDAp''@;'; put 'put ''KzQwPj4yXSxjKSxmPUEscD1jKzQwfDA7ZG97YVtjPj4yXT1hW2Y+PjJdLGM9Yys0fDAsZj1mKzR8MH13aGlsZSgoMHxjKTwoMHxwKSl9bGU9d31mdW5jdGlvbiB0RChsLGMsZixwKXtsfD0wLGN8PTAsZnw9MDt2YXIgcSxnZSxiZSxPZSxMZSxSZSxxZSxtPTAsQT0wLHc9MCxiPTAsaz0wLE09''@;'; put 'put ''MCxEPTAsUj0wLEc9MCxwZT0wLEhlPTAsVmU9MCxydD0wO2ZvcihxZT1sZSxsZT1sZSsxOTJ8MCxnZT1xZSsxNzZ8MCxIZT1xZSsxMTJ8MCxWZT1xZSs0OHwwLGJlPXFlKzMyfDAsT2U9cWUrMjR8MCxMZT1xZSsxNnwwLFJlPXFlLChwfD0wKTw8MjQ+PjI0PyhhW2JlPj4yXT1hW2Y+PjJdLGFb''@;'; put 'put ''YmUrND4+Ml09YVtmKzQ+PjJdLGFbYmUrOD4+Ml09YVtmKzg+PjJdLGFbYmUrMTI+PjJdPWFbZisxMj4+Ml0saz1MZSxNPU9lLEQ9MCxSPUhlKTooYVtiZT4+Ml09YVsoaz1mKzQ4fDApPj4yXSxhW2JlKzQ+PjJdPWFbays0Pj4yXSxhW2JlKzg+PjJdPWFbays4Pj4yXSxhW2JlKzEyPj4yXT1h''@;'; put 'put ''W2srMTI+PjJdLGs9T2UsTT1MZSxEPUhlLFI9MCksX1tPZT4+M109MCxfW0xlPj4zXT0xLHE9YmUrOHwwLG09MCxBPTEsYj0wLEc9K19bYmU+PjNdOzspe3BlPStfW3E+PjNdLHd1KFJlLGYsMyxtPS41KihtK0EpLEQsUiksYVtiZT4+Ml09YVtSZT4+Ml0sYVtiZSs0Pj4yXT1hW1JlKzQ+PjJd''@;'; put 'put ''LGFbYmUrOD4+Ml09YVtSZSs4Pj4yXSxhW2JlKzEyPj4yXT1hW1JlKzEyPj4yXSxhW2dlPj4yXT1hW1JlPj4yXSxhW2dlKzQ+PjJdPWFbUmUrND4+Ml0sYVtnZSs4Pj4yXT1hW1JlKzg+PjJdLGFbZ2UrMTI+PjJdPWFbUmUrMTI+PjJdO2U6ZG97aWYoKDB8QmlbMTI3JmNdKGwsZ2UpKTw8MjQ+''@;'; put 'put ''PjI0KXA9TTtlbHNlIGZvcihwPTA7Oyl7aWYoND09KDB8cCkpe3A9ayxiPTE7YnJlYWsgZX1hWyhiPVZlKyhwPDw0KXwwKT4+Ml09YVsocnQ9SGUrKHA8PDQpfDApPj4yXSxhW2IrND4+Ml09YVtydCs0Pj4yXSxhW2IrOD4+Ml09YVtydCs4Pj4yXSxhW2IrMTI+PjJdPWFbcnQrMTI+PjJdLHA9''@;'; put 'put ''cCsxfDB9fXdoaWxlKDApO2lmKF9bcD4+M109bSwhKCgoRy09dz0rX1tiZT4+M10pPj0wP0c6LUcpPi41fHwocGUtPStfW3E+PjNdLChwZT49MD9wZTotcGUpPi41KSkpYnJlYWs7bT0rX1tPZT4+M10sQT0rX1tMZT4+M10sRz13fWU6ZG97aWYoYjw8MjQ+PjI0KWZvcihwPTA7Oyl7aWYoND09''@;'; put 'put ''KDB8cCkpYnJlYWsgZTthWyhydD1mKyhwPDw0KXwwKT4+Ml09YVsoSGU9VmUrKHA8PDQpfDApPj4yXSxhW3J0KzQ+PjJdPWFbSGUrND4+Ml0sYVtydCs4Pj4yXT1hW0hlKzg+PjJdLGFbcnQrMTI+PjJdPWFbSGUrMTI+PjJdLHA9cCsxfDB9ZWxzZSBmb3IocD0wOzspe2lmKDQ9PSgwfHApKWJy''@;'; put 'put ''ZWFrIGU7YVsocnQ9ZisocDw8NCl8MCk+PjJdPWFbKFZlPUhlKyhwPDw0KXwwKT4+Ml0sYVtydCs0Pj4yXT1hW1ZlKzQ+PjJdLGFbcnQrOD4+Ml09YVtWZSs4Pj4yXSxhW3J0KzEyPj4yXT1hW1ZlKzEyPj4yXSxwPXArMXwwfX13aGlsZSgwKTtsZT1xZX1mdW5jdGlvbiBoTihsLGMsZixwKXt2''@;'; put 'put ''YXIgbSxBLHcsYixrLE0sRDtmb3IobHw9MCxmfD0wLHB8PTAsRD1sZSxsZT1sZSs2NHwwLE09RCxrPStfWzk2KyhBPTB8YVsoYj0xNisoY3w9MCl8MCk+PjJdKT4+M10sdz1BKzE2fDAsbT1BKzI0fDAsYz0wOzQhPSgwfGMpOylfW00rKGM8PDQpPj4zXT0rX1tmKyhjPDw0KT4+M10tK19bdz4+''@;'; put 'put ''M10sX1tNKyhjPDw0KSs4Pj4zXT0rX1tmKyhjPDw0KSs4Pj4zXS0rX1ttPj4zXSxjPWMrMXwwO2Zvcih0RChsLDB8YVsxMisoMHxhWzQrKDB8YVtBKzg+PjJdKT4+Ml0pPj4yXSxNLHApLGM9MDs0IT0oMHxjKTspX1tmKyhjPDw0KT4+M109K19bMTYrKHA9MHxhW2I+PjJdKT4+M10rICtfW00r''@;'; put 'put ''KGM8PDQpPj4zXSxfW2YrKGM8PDQpKzg+PjNdPStfW3ArMjQ+PjNdKyArX1tNKyhjPDw0KSs4Pj4zXSxjPWMrMXwwO19bOTYrKDB8YVtiPj4yXSk+PjNdPWssbGU9RH1mdW5jdGlvbiBkTihsLGMpe2x8PTAsY3w9MDtmb3IodmFyIGY9MCxwPTA7MHxmZVsxMTIrKGw9MHxhWyhwPWwrMTZ8MCk+''@;'; put 'put ''PjJdKT4+MF07KWw9MHxhW2wrMTE2Pj4yXTsobD0wfGFbbCs4Pj4yXSl8fChsPTB8dnIoNDApLGFbOCsoMHxhW3A+PjJdKT4+Ml09bCksbD0oZj0wfGFbbD4+Ml0pPzB8VjAoZiw0OCsoNDgqKDB8YVtsKzQ+PjJdKXwwKXwwKTowfFFuKDQ4Kyg0OCooMHxhW2wrND4+Ml0pfDApfDApLGFbKHA9''@;'; put 'put ''MHxhWzgrKDB8YVtwPj4yXSk+PjJdKT4+Ml09bCxhWyhwPXArNHwwKT4+Ml09MSsoZj0wfGFbcD4+Ml0pLGFbKHA9bCsoNDgqZnwwKXwwKT4+Ml09MHx2cihjPDw0KSxhW2wrKDQ4KmZ8MCkrND4+Ml09YyxmPTQwKyhsPWwrKDQ4KmZ8MCkrOHwwKXwwO2Rve2FbbD4+Ml09MCxsPWwrNHwwfXdo''@;'; put 'put ''aWxlKCgwfGwpPCgwfGYpKTtyZXR1cm4gMHxwfWZ1bmN0aW9uIEF1KGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgZ2UsTGUsVmUscWUsV2UsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxiZT0wLE9lPTAsUmU9MCxIZT0wLGF0PTAsU3Q9MDtmb3Io''@;'; put 'put ''V2U9bGUsbGU9bGUrOTZ8MCxWZT1XZSsxNnwwLGdlPVdlLExlPVdlKzkyfDAsUmU9V2UrODh8MCxiZT1XZSs4MHwwLEhlPTB8Y3IoYj0wfGFbKDM9PSgzJmFbKGx8PTApPj4yXXwwKT9sOmwrNDh8MCkrNDA+PjJdKSxxZT0wfGROKGwscCksaz1sOzB8ZmVbMTEyKyhNPTB8YVtrKzE2Pj4yXSk+''@;'; put 'put ''PjBdOylrPTB8YVtNKzExNj4+Ml07aWYoMD09KDB8ZmVbbSs4Pj4wXSkmJigwfGFbMjMyKyhBPTB8YVtiKzE2Pj4yXSk+PjJdKT09KDB8YVsyMzIrKHc9MHxhW2MrMTY+PjJdKT4+Ml0pPyhPZT0oRD0oMHxhW0ErMjM2Pj4yXSk+KDB8YVt3KzIzNj4+Ml0pKT9iOmMsYj1EP2M6Yik6T2U9Yywo''@;'; put 'put ''MHxiKT09KDB8YVsoMz09KDMmYVtrPj4yXXwwKT9rOmsrNDh8MCkrNDA+PjJdKT8oQT1NKzgwfDAsdz1NKzQwfDAsRD0wfFh0W00rODY+PjBdLGM9MHxYdFtNKzQ2Pj4wXSk6KEE9TSs0MHwwLHc9TSs4MHwwLEQ9MHxYdFtNKzQ2Pj4wXSxjPTB8WHRbTSs4Nj4+MF0pLE09MHxhW0E+PjJdLEE9''@;'; put 'put ''MHxhW3c+PjJdLDAhPSgwfGMpJiYwIT0oMHwoUj0wfGFbOCsoMHxhWyhHPWIrMTZ8MCk+PjJdKT4+Ml0pKSYmMCE9KDB8YVsxMisoMHxhW1IrND4+Ml0pPj4yXSkpe2ZvcihhW2JlPj4yXT1iLGFbYmUrND4+Ml09QSxBPXArLTR8MCxjPWdlKzh8MCx3PTA7ISgoMHx3KT49KDB8QSkpJiYoX1tn''@;'; put 'put ''ZT4+M109K19bZisoKGs9dyszfDApPDw0KT4+M10tK19bMTYrKFI9MHxhW0c+PjJdKT4+M10sX1tjPj4zXT0rX1tmKyhrPDw0KSs4Pj4zXS0rX1tSKzI0Pj4zXSxSPTB8YVsxMisoMHxhWzQrKDB8YVtSKzg+PjJdKT4+Ml0pPj4yXSxhW1ZlPj4yXT1hW2dlPj4yXSxhW1ZlKzQ+PjJdPWFbZ2Ur''@;'; put 'put ''ND4+Ml0sYVtWZSs4Pj4yXT1hW2dlKzg+PjJdLGFbVmUrMTI+PjJdPWFbZ2UrMTI+PjJdLCgwfEJpWzEyNyZSXShiZSxWZSkpPDwyND4+MjQpOyl3PWs7YVtMZT4+Ml09dyxoTihiZSxiLGYrKHc8PDQpfDAsMSl9ZWxzZSBhW0xlPj4yXT0wLHc9MDtpZigwIT0oMHxEKSYmMCE9KDB8KHE9MHxh''@;'; put 'put ''WzgrKDB8YVsocGU9T2UrMTZ8MCk+PjJdKT4+Ml0pKSYmMCE9KDB8YVsxMisoMHxhW3ErND4+Ml0pPj4yXSkpe2ZvcihhW2JlPj4yXT1PZSxhW2JlKzQ+PjJdPU0sYz1nZSs4fDAsQT1iPXArLTR8MDshKCgwfEEpPD0wKSYmKF9bZ2U+PjNdPStfW2YrKEE8PDQpPj4zXS0rX1sxNisocD0wfGFb''@;'; put 'put ''cGU+PjJdKT4+M10sX1tjPj4zXT0rX1tmKyhBPDw0KSs4Pj4zXS0rX1twKzI0Pj4zXSxwPTB8YVsxMisoMHxhWzQrKDB8YVtwKzg+PjJdKT4+Ml0pPj4yXSxhW1ZlPj4yXT1hW2dlPj4yXSxhW1ZlKzQ+PjJdPWFbZ2UrND4+Ml0sYVtWZSs4Pj4yXT1hW2dlKzg+PjJdLGFbVmUrMTI+PjJdPWFb''@;'; put 'put ''Z2UrMTI+PjJdLCgwfEJpWzEyNyZwXShiZSxWZSkpPDwyND4+MjQpOylBPUErLTN8MDthW1JlPj4yXT1BLGhOKGJlLE9lLGYrKEE8PDQpfDAsMCl9ZWxzZSBhW1JlPj4yXT1iPXArLTR8MCxBPWI7Zm9yKDshKCgwfHcpPj0oMHxiKSkmJihTdD0rX1tmKyh3PDw0KSs4Pj4zXS0rX1tmKygoYz13''@;'; put 'put ''KzN8MCk8PDQpKzg+PjNdKSpTdCsoYXQ9K19bZisodzw8NCk+PjNdLStfW2YrKGM8PDQpPj4zXSkqYXQ8MWUtNjspdz1jO2ZvcihhW0xlPj4yXT13OyEoKDB8QSk8PTApJiYoYXQ9K19bZisoQTw8NCkrOD4+M10tK19bZisoKGJlPUErM3wwKTw8NCkrOD4+M10pKmF0KyhTdD0rX1tmKyhBPDw0''@;'; put 'put ''KT4+M10tK19bZisoYmU8PDQpPj4zXSkqU3Q8MWUtNjspQT1BKy0zfDA7Zm9yKGFbUmU+PjJdPUEsZnVuY3Rpb24gcE4obCxjLGYscCxtLEEsdyl7Y3w9MCxmfD0wLHB8PTAsbXw9MCxBfD0wLHd8PTA7dmFyIE0sRCxHLGI9MCxrPTAsUj0wO2ZvcihHPWxlLGxlPWxlKzE2fDAsTT1HKzR8MCxE''@;'; put 'put ''PUcsUj1sfD0wO2I9MHxhWzExNisoMHxhW1IrMTY+PjJdKT4+Ml07KVI9YjtiPTB8ZmVbdys4Pj4wXT8wOjI1NSYoMHxfb1s2MyZhW3c+PjJdXShSKSksREMoUixNLEQpLCgwfF9vWzYzJmFbKGs9dys0fDApPj4yXV0oYykpPDwyND4+MjQmJihhW0Q+PjJdPTApLCgwfF9vWzYzJmFbaz4+Ml1d''@;'; put 'put ''KDB8YVsoMz09KDMmYVtsPj4yXXwwKT9sOmwrNDh8MCkrNDA+PjJdKSk8PDI0Pj4yNCYmKGFbTT4+Ml09MCksMHxiJiYoYz0wfGFbTT4+Ml0sYVtNPj4yXT1hW0Q+PjJdLGFbRD4+Ml09YyksMHxmZVt3Kzk+PjBdPyhiPTB8YVtNPj4yXSl8KGs9MHxhW0Q+PjJdKXwwJiZmdW5jdGlvbiBrbChs''@;'; put 'put ''LGMsZixwLG0sQSx3KXtsfD0wLGN8PTAsbXw9MDt2YXIgYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTA7KDB8KHB8PTApKT09KDB8KGZ8PTApKSYoTGU9MCE9KDB8KEF8PTApKSkmKE09MCE9KDB8KHd8PTApKSk/KGJlPStfWyhn''@;'; put 'put ''ZT1jKyhwPDw0KXwwKT4+M10sT2U9K19bYysocDw8NCkrOD4+M10saz0rX1soTGU9YysoKE09cCszfDApPDw0KXwwKT4+M10sYj0rX1soTT1jKyhNPDw0KSs4fDApPj4zXSxEPStsNyhsLEEpLEhlPSEoKHBlPStsNyhsLHcpKStEPj0oUj0rRDAoKygocT1PZS1iKSpxKyhSPWJlLWspKlIpKSkp''@;'; put 'put ''LFIqPS4zMzMzMzMzMzMzMzMzMzMzLEQ9SGU/RDpSLFI9SGU/cGU6UixPZT09Yj8ocT0oKEhlPWJlPGspPy1SOlIpK2sscGU9KEhlP0Q6LUQpK2JlLEc9T2UsRD1PZSk6KHE9YmUscGU9YmUsRz0oKEhlPU9lPGIpP0Q6LUQpK09lLEQ9KEhlPy1SOlIpK2IpLF9bKFJlPWMrKChIZT1wKzF8MCk8''@;'; put 'put ''PDQpfDApPj4zXT1wZSxfW2MrKEhlPDw0KSs4Pj4zXT1HLGFbZ2U+PjJdPWFbUmU+PjJdLGFbZ2UrND4+Ml09YVtSZSs0Pj4yXSxhW2dlKzg+PjJdPWFbUmUrOD4+Ml0sYVtnZSsxMj4+Ml09YVtSZSsxMj4+Ml0sUmU9YysocCsyPDw0KXwwLF9bTGU+PjNdPXEsX1tNPj4zXT1ELGFbUmU+PjJd''@;'; put 'put ''PWFbTGU+PjJdLGFbUmUrND4+Ml09YVtMZSs0Pj4yXSxhW1JlKzg+PjJdPWFbTGUrOD4+Ml0sYVtSZSsxMj4+Ml09YVtMZSsxMj4+Ml0sYVttKzEyPj4yXT13LF9bbSszMj4+M109YmUsX1ttKzQwPj4zXT1PZSxSZT0xNik6KE0mJihnZT1jKygoTT1wKzN8MCk8PDQpfDAsYj0oYj0rbDcobCx3''@;'; put 'put ''KSk+PShPZT0uOSorRDAoKygoYmU9KHE9K19bYysocDw8NCkrOD4+M10pLShHPStfWyhNPWMrKE08PDQpKzh8MCk+PjNdKSkqYmUrKE9lPShrPStfW2MrKHA8PDQpPj4zXSktKFI9K19bZ2U+PjNdKSkqT2UpKSk/T2U6YixxPT1HPyhEPShrPFI/LWI6YikrUixiPXEpOihEPWssYj0ocTxHPy1i''@;'; put 'put ''OmIpK0cpLF9bYysoKEhlPXArMXwwKTw8NCk+PjNdPWssX1tjKyhIZTw8NCkrOD4+M109cSxwPWMrKHArMjw8NCl8MCxfW2dlPj4zXT1ELF9bTT4+M109YixhW3A+PjJdPWFbZ2U+PjJdLGFbcCs0Pj4yXT1hW2dlKzQ+PjJdLGFbcCs4Pj4yXT1hW2dlKzg+PjJdLGFbcCsxMj4+Ml09YVtnZSsx''@;'; put 'put ''Mj4+Ml0sYVttKzEyPj4yXT13LF9bbSszMj4+M109UixfW20rNDA+PjNdPUcpLExlJiYoRD0oRD0rbDcobCxBKSk+PShPZT0uOSorRDAoKygoYmU9KGI9K19bYysoZjw8NCkrOD4+M10pLShxPStfW2MrKChIZT1mKzN8MCk8PDQpKzg+PjNdKSkqYmUrKE9lPShrPStfWyhNPWMrKGY8PDQpfDAp''@;'; put 'put ''Pj4zXSktKEc9K19bYysoSGU8PDQpPj4zXSkpKk9lKSkpP09lOkQsYj09cT8oUj0oazxHP0Q6LUQpK2ssRD1iKTooUj1rLEQ9KGI8cT9EOi1EKStiKSxfWyhSZT1jKygoSGU9ZisxfDApPDw0KXwwKT4+M109UixfW2MrKEhlPDw0KSs4Pj4zXT1ELGFbTT4+Ml09YVtSZT4+Ml0sYVtNKzQ+PjJd''@;'; put 'put ''PWFbUmUrND4+Ml0sYVtNKzg+PjJdPWFbUmUrOD4+Ml0sYVtNKzEyPj4yXT1hW1JlKzEyPj4yXSxfW2MrKChSZT1mKzJ8MCk8PDQpPj4zXT1HLF9bYysoUmU8PDQpKzg+PjNdPXEsUmU9MTYpKSwxNj09KDB8UmUpJiYoYVttKzg+PjJdPUEsX1ttKzE2Pj4zXT1rLF9bbSsyND4+M109Yil9KFIs''@;'; put 'put ''ZiwwfGFbcD4+Ml0sMHxhW20+PjJdLEEsYixrKTooMHwoYj0wfGFbTT4+Ml0pJiYoYVtwPj4yXT0wfE9hKFIsZiwwfGFbcD4+Ml0sMHxhW20+PjJdLEEsYikpLDB8KGI9MHxhW0Q+PjJdKSYmKGFbbT4+Ml09MHx5RihSLGYsMHxhW3A+PjJdLDB8YVttPj4yXSxBLGIpKSksbGU9R30obCxPZSxm''@;'; put 'put ''LExlLFJlLHFlLG0pLGI9NCsoaz0wfGFbUmU+PjJdKXwwLGs9ayszfDAsTT1WZSsxNnwwLEQ9VmUrMzJ8MCxSPVZlKzQ4fDAsdz1IZSsxNnwwLEE9Rz0wfGFbTGU+PjJdOyEoKDB8QSk+PSgwfGIpKSYmKGFbKEhlPSgwfGFbcWU+PjJdKSsoQS1HPDw0KXwwKT4+Ml09YVsoYz1mKyhBPDw0KXww''@;'; put 'put ''KT4+Ml0sYVtIZSs0Pj4yXT1hW2MrND4+Ml0sYVtIZSs4Pj4yXT1hW2MrOD4+Ml0sYVtIZSsxMj4+Ml09YVtjKzEyPj4yXSxhW1ZlPj4yXT1hW2M+PjJdLGFbVmUrND4+Ml09YVtjKzQ+PjJdLGFbVmUrOD4+Ml09YVtjKzg+PjJdLGFbVmUrMTI+PjJdPWFbYysxMj4+Ml0sYz1BKzF8MCwhKCgw''@;'; put 'put ''fEEpPj0oMHxrKSkpOylhWyhSZT0oMHxhW3FlPj4yXSkrKGMtRzw8NCl8MCk+PjJdPWFbKEhlPWYrKGM8PDQpfDApPj4yXSxhW1JlKzQ+PjJdPWFbSGUrND4+Ml0sYVtSZSs4Pj4yXT1hW0hlKzg+PjJdLGFbUmUrMTI+PjJdPWFbSGUrMTI+PjJdLGFbTT4+Ml09YVtIZT4+Ml0sYVtNKzQ+PjJd''@;'; put 'put ''PWFbSGUrND4+Ml0sYVtNKzg+PjJdPWFbSGUrOD4+Ml0sYVtNKzEyPj4yXT1hW0hlKzEyPj4yXSxhWyhSZT0oMHxhW3FlPj4yXSkrKChIZT1BKzJ8MCktRzw8NCl8MCk+PjJdPWFbKEhlPWYrKEhlPDw0KXwwKT4+Ml0sYVtSZSs0Pj4yXT1hW0hlKzQ+PjJdLGFbUmUrOD4+Ml09YVtIZSs4Pj4y''@;'; put 'put ''XSxhW1JlKzEyPj4yXT1hW0hlKzEyPj4yXSxhW0Q+PjJdPWFbSGU+PjJdLGFbRCs0Pj4yXT1hW0hlKzQ+PjJdLGFbRCs4Pj4yXT1hW0hlKzg+PjJdLGFbRCsxMj4+Ml09YVtIZSsxMj4+Ml0sYVtSPj4yXT1hWyhSZT1mKygoSGU9QSszfDApPDw0KXwwKT4+Ml0sYVtSKzQ+PjJdPWFbUmUrND4+''@;'; put 'put ''Ml0sYVtSKzg+PjJdPWFbUmUrOD4+Ml0sYVtSKzEyPj4yXT1hW1JlKzEyPj4yXSxOQSgxNisoMHxhW3c+PjJdKXwwLFZlKSxBPUhlO2FbcWUrND4+Ml09Yi1HLGxlPVdlfWZ1bmN0aW9uIEozKGwsYyl7bHw9MDt2YXIgZj0wLHA9MDsrX1soY3w9MCk+PjNdPCtfW2MrMTY+PjNdJiYrX1tjKzg+''@;'; put 'put ''PjNdPCtfW2MrMjQ+PjNdJiYoZj0wfGFbbCs4ND4+Ml0sYVsocD1sKzgwfDApPj4yXT0xKyhsPTB8YVtwPj4yXSksYVsobD1mKyhsPDw1KXwwKT4+Ml09YVtjPj4yXSxhW2wrND4+Ml09YVtjKzQ+PjJdLGFbbCs4Pj4yXT1hW2MrOD4+Ml0sYVtsKzEyPj4yXT1hW2MrMTI+PjJdLGFbbCsxNj4+''@;'; put 'put ''Ml09YVtjKzE2Pj4yXSxhW2wrMjA+PjJdPWFbYysyMD4+Ml0sYVtsKzI0Pj4yXT1hW2MrMjQ+PjJdLGFbbCsyOD4+Ml09YVtjKzI4Pj4yXSl9ZnVuY3Rpb24gbkQobCxjLGYscCxtKXtsfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBELFIsZ2UsYmUsTGUsUmUsQT0wLHc9MCxiPTAsaz0wLE09MCxH''@;'; put 'put ''PTAscT0wLHBlPTAsT2U9MCxIZT0wLFZlPTA7aWYoUmU9bGUsbGU9bGUrMTEyfDAsYmU9UmUrNzJ8MCxEPVJlKzU2fDAsTT1SZSsxNnwwLEc9UmUsUj00OCsoY3w9MCl8MCxMZT0wfGFbKDM9PSgwfCh3PTMmYVtjPj4yXSkpP2M6UikrNDA+PjJdLEE9MTYrKHE9MHxhWyhnZT1jKzE2fDApPj4y''@;'; put 'put ''XSl8MCwwfGZlW3ErNDc+PjBdKXt4eShNLExlLDB8YVsoMj09KDB8dyk/YzpjKy00OHwwKSs0MD4+Ml0sQSksdz1NLE09QSs0MHwwO2Rve2FbQT4+Ml09YVt3Pj4yXSxBPUErNHwwLHc9dys0fDB9d2hpbGUoKDB8QSk8KDB8TSkpfXN3aXRjaChNPShBPTB8YVs4Kyh3PTB8YVsocT1MZSsxNnww''@;'; put 'put ''KT4+Ml0pPj4yXSk/MHxhWzE2KygwfGFbQSs0Pj4yXSk+PjJdOjAsQT13KzE2fDAsdz0xNisoMHxhW2dlPj4yXSl8MCxhW0Q+PjJdPWFbQT4+Ml0sYVtEKzQ+PjJdPWFbQSs0Pj4yXSxhW0QrOD4+Ml09YVtBKzg+PjJdLGFbRCsxMj4+Ml09YVtBKzEyPj4yXSxhW2JlPj4yXT1hW3c+PjJdLGFb''@;'; put 'put ''YmUrND4+Ml09YVt3KzQ+PjJdLGFbYmUrOD4+Ml09YVt3Kzg+PjJdLGFbYmUrMTI+PjJdPWFbdysxMj4+Ml0sZ04oRyxELGJlKSxhW2w+PjJdPWFbRz4+Ml0sYVtsKzQ+PjJdPWFbRys0Pj4yXSxhW2wrOD4+Ml09YVtHKzg+PjJdLGFbbCsxMj4+Ml09YVtHKzEyPj4yXSxtPDwyND4+MjQ/KGI9''@;'; put 'put ''K21OKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOlIpKzQwPj4yXSksT2U9OSk6MHxmZVs0NSsoQT0wfGFbZ2U+PjJdKT4+MF0/KGI9K19bQSszMj4+M10sT2U9OSk6QT0wLDk9PSgwfE9lKSYmKF9bbCsxNj4+M109YixBPTEpLGZlW2wrMjk+PjBdPUEsYVtsKzgwPj4yXT0wLGFbbCs4OD4+Ml09''@;'; put 'put ''YyxhWyhHPXArMzJ8MCk+PjJdPWFbbD4+Ml0sYVtHKzQ+PjJdPWFbbCs0Pj4yXSxhW0crOD4+Ml09YVtsKzg+PjJdLGFbRysxMj4+Ml09YVtsKzEyPj4yXSwwfGYpe2Nhc2UgMTppZigwPT0oMHxmZVsxNTYrKHc9MHxhW3E+PjJdKT4+MF0pJiYocGU9MjU1JihHPTB8ZmVbNDkrKDB8YVtnZT4+''@;'; put 'put ''Ml0pPj4wXSksRzw8MjQ+PjI0IT0wKSl7YVtiZT4+Ml09YVtwPj4yXSxhW2JlKzQ+PjJdPWFbcCs0Pj4yXSxhW2JlKzg+PjJdPWFbcCs4Pj4yXSxhW2JlKzEyPj4yXT1hW3ArMTI+PjJdLGFbYmUrMTY+PjJdPWFbcCsxNj4+Ml0sYVtiZSsyMD4+Ml09YVtwKzIwPj4yXSxhW2JlKzI0Pj4yXT1h''@;'; put 'put ''W3ArMjQ+PjJdLGFbYmUrMjg+PjJdPWFbcCsyOD4+Ml07ZG97aWYoNCZwZSl7aWYoYVtwKzQ4Pj4yXT00LGI9K19bYmU+PjNdLCtfW2w+PjNdPCtfW3crMTY+PjNdKXtWZT1iKy0xLEhlPStfW2wrOD4+M10sYj0rX1sobD1iZSsxNnwwKT4+M10saz0uNSorX1t3KzgwPj4zXSsgK19bdysyND4+''@;'; put 'put ''M10says9KygwfCgwfGFbMjUyKygwfGFbMTYrKDB8Y3IoTGUpKT4+Ml0pPj4yXSkvMiksX1tsPj4zXT0rX1sxNisoQT0wfGFbcT4+Ml0pPj4zXS0rX1tBKzg4Pj4zXSxfW2JlKzI0Pj4zXT1IZSxfW2JlKzg+PjNdPStfW0ErMjQ+PjNdLS41KitfW0ErODA+PjNdLF9bYmU+PjNdPVZlLF9bcCs1''@;'; put 'put ''Nj4+M109VmUsX1twKzY0Pj4zXT1IZSxfW3ArNzI+PjNdPWIsX1twKzgwPj4zXT1rLGFbKEE9cCs4OHwwKT4+Ml09YVtiZT4+Ml0sYVtBKzQ+PjJdPWFbYmUrND4+Ml0sYVtBKzg+PjJdPWFbYmUrOD4+Ml0sYVtBKzEyPj4yXT1hW2JlKzEyPj4yXSxhW0ErMTY+PjJdPWFbYmUrMTY+PjJdLGFb''@;'; put 'put ''QSsyMD4+Ml09YVtiZSsyMD4+Ml0sYVtBKzI0Pj4yXT1hW2JlKzI0Pj4yXSxhW0ErMjg+PjJdPWFbYmUrMjg+PjJdLEE9MjticmVha31rPStfW2wrOD4+M10sSGU9K19bKEE9YmUrMTZ8MCk+PjNdKzEsVmU9LjUqK19bdys4MD4+M10rICtfW3crMjQ+PjNdLFZlKz0rKDB8KDB8YVsyNTIrKDB8''@;'; put 'put ''YVsxNisoMHxjcihMZSkpPj4yXSk+PjJdKS8yKSxfW2JlPj4zXT0rX1s5NisobD0wfGFbcT4+Ml0pPj4zXSsgK19bbCsxNj4+M10sX1tiZSsyND4+M109ayxfW2JlKzg+PjNdPStfW2wrMjQ+PjNdLS41KitfW2wrODA+PjNdLF9bQT4+M109SGUsX1twKzU2Pj4zXT1iLF9bcCs2ND4+M109ayxf''@;'; put 'put ''W3ArNzI+PjNdPUhlLF9bcCs4MD4+M109VmUsYVsoQT1wKzg4fDApPj4yXT1hW2JlPj4yXSxhW0ErND4+Ml09YVtiZSs0Pj4yXSxhW0ErOD4+Ml09YVtiZSs4Pj4yXSxhW0ErMTI+PjJdPWFbYmUrMTI+PjJdLGFbQSsxNj4+Ml09YVtiZSsxNj4+Ml0sYVtBKzIwPj4yXT1hW2JlKzIwPj4yXSxh''@;'; put 'put ''W0ErMjQ+PjJdPWFbYmUrMjQ+PjJdLGFbQSsyOD4+Ml09YVtiZSsyOD4+Ml0sQT0yO2JyZWFrfWlmKDEmcGV8MCl7YVtwKzQ4Pj4yXT0xLF9bKEE9YmUrMjR8MCk+PjNdPStfWygrX1tBPj4zXT4rX1tsKzg+PjNdP2JlKzE2fDA6bCkrOD4+M10sYVsoQT1wKzU2fDApPj4yXT1hW2JlPj4yXSxh''@;'; put 'put ''W0ErND4+Ml09YVtiZSs0Pj4yXSxhW0ErOD4+Ml09YVtiZSs4Pj4yXSxhW0ErMTI+PjJdPWFbYmUrMTI+PjJdLGFbQSsxNj4+Ml09YVtiZSsxNj4+Ml0sYVtBKzIwPj4yXT1hW2JlKzIwPj4yXSxhW0ErMjQ+PjJdPWFbYmUrMjQ+PjJdLGFbQSsyOD4+Ml09YVtiZSsyOD4+Ml0sQT0xO2JyZWFr''@;'; put 'put ''fWlmKEE9cCs0OHwwLDgmcGUpe2FbQT4+Ml09OCxfW2JlKzE2Pj4zXT0rX1tsPj4zXSxfW2JlKzg+PjNdPStfW3crMjQ+PjNdLS41KitfW3crODA+PjNdLF9bYmUrMjQ+PjNdPStfW2wrOD4+M10sYVsoQT1wKzU2fDApPj4yXT1hW2JlPj4yXSxhW0ErND4+Ml09YVtiZSs0Pj4yXSxhW0ErOD4+''@;'; put 'put ''Ml09YVtiZSs4Pj4yXSxhW0ErMTI+PjJdPWFbYmUrMTI+PjJdLGFbQSsxNj4+Ml09YVtiZSsxNj4+Ml0sYVtBKzIwPj4yXT1hW2JlKzIwPj4yXSxhW0ErMjQ+PjJdPWFbYmUrMjQ+PjJdLGFbQSsyOD4+Ml09YVtiZSsyOD4+Ml0sQT0xO2JyZWFrfWFbQT4+Ml09MixfW2JlPj4zXT0rX1tsPj4z''@;'; put 'put ''XSxfW2JlKzg+PjNdPStfW3crMjQ+PjNdLS41KitfW3crODA+PjNdLF9bYmUrMjQ+PjNdPStfW2wrOD4+M10sYVsoQT1wKzU2fDApPj4yXT1hW2JlPj4yXSxhW0ErND4+Ml09YVtiZSs0Pj4yXSxhW0ErOD4+Ml09YVtiZSs4Pj4yXSxhW0ErMTI+PjJdPWFbYmUrMTI+PjJdLGFbQSsxNj4+Ml09''@;'; put 'put ''YVtiZSsxNj4+Ml0sYVtBKzIwPj4yXT1hW2JlKzIwPj4yXSxhW0ErMjQ+PjJdPWFbYmUrMjQ+PjJdLGFbQSsyOD4+Ml09YVtiZSsyOD4+Ml0sQT0xO2JyZWFrfXdoaWxlKDApO2ZvcihhW3ArNTI+PjJdPUE7MHxmZVsxMTIrKEE9MHxhW2MrMTY+PjJdKT4+MF07KWM9MHxhW0ErMTE2Pj4yXTtm''@;'; put 'put ''ZVszMCsoKDB8TGUpPT0oMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6Yys0OHwwKSs0MD4+Ml0pP0ErMTZ8MDpBKzU2fDApPj4wXT0wfWVsc2Ugdz0xLE9lPTQ3O2JyZWFrO2Nhc2UgMjppZih3PTI1NSYocGU9MHxmZVs0OSsoMHxhW2dlPj4yXSk+PjBdKSxwZTw8MjQ+PjI0KXthW2JlPj4yXT1h''@;'; put 'put ''W3A+PjJdLGFbYmUrND4+Ml09YVtwKzQ+PjJdLGFbYmUrOD4+Ml09YVtwKzg+PjJdLGFbYmUrMTI+PjJdPWFbcCsxMj4+Ml0sYVtiZSsxNj4+Ml09YVtwKzE2Pj4yXSxhW2JlKzIwPj4yXT1hW3ArMjA+PjJdLGFbYmUrMjQ+PjJdPWFbcCsyND4+Ml0sYVtiZSsyOD4+Ml09YVtwKzI4Pj4yXTtk''@;'; put 'put ''b3tpZighKDQmdykpe2lmKDEmd3wwKXtpZig0PT0oMHxhW3ArNDg+PjJdKSl7VmU9K19bMjQrKEE9MHxhW3E+PjJdKT4+M10tLjUqK19bQSs4MD4+M10sSGU9K19bKEE9YmUrMTZ8MCk+PjNdKzEsYj0rX1tsPj4zXSxrPVZlLSsoMHwoMHxhWzI1MisoMHxhWzE2KygwfGNyKExlKSk+PjJdKT4+''@;'; put 'put ''Ml0pLzIpLF9bYmU+PjNdPStfWzk2KyhsPTB8YVtxPj4yXSk+PjNdKyArX1tsKzE2Pj4zXSxfW2JlKzg+PjNdPVZlLF9bYmUrMjQ+PjNdPS41KitfW2wrODA+PjNdKyArX1tsKzI0Pj4zXSxfW0E+PjNdPUhlLF9bcCs1Nj4+M109YixfW3ArNjQ+PjNdPWssX1twKzcyPj4zXT1IZSxfW3ArODA+''@;'; put 'put ''PjNdPVZlLGFbKEE9cCs4OHwwKT4+Ml09YVtiZT4+Ml0sYVtBKzQ+PjJdPWFbYmUrND4+Ml0sYVtBKzg+PjJdPWFbYmUrOD4+Ml0sYVtBKzEyPj4yXT1hW2JlKzEyPj4yXSxhW0ErMTY+PjJdPWFbYmUrMTY+PjJdLGFbQSsyMD4+Ml09YVtiZSsyMD4+Ml0sYVtBKzI0Pj4yXT1hW2JlKzI0Pj4y''@;'; put 'put ''XSxhW0ErMjg+PjJdPWFbYmUrMjg+PjJdLEE9MjticmVha31fWyhBPWJlKzI0fDApPj4zXT0rX1soK19bQT4+M10+K19bbCs4Pj4zXT9iZSsxNnwwOmwpKzg+PjNdLGFbKEE9cCs1NnwwKT4+Ml09YVtiZT4+Ml0sYVtBKzQ+PjJdPWFbYmUrND4+Ml0sYVtBKzg+PjJdPWFbYmUrOD4+Ml0sYVtB''@;'; put 'put ''KzEyPj4yXT1hW2JlKzEyPj4yXSxhW0ErMTY+PjJdPWFbYmUrMTY+PjJdLGFbQSsyMD4+Ml09YVtiZSsyMD4+Ml0sYVtBKzI0Pj4yXT1hW2JlKzI0Pj4yXSxhW0ErMjg+PjJdPWFbYmUrMjg+PjJdLEE9MTticmVha31pZihiPStfW2w+PjNdLDgmdyl7X1soQT1iZSsxNnwwKT4+M109YisxLGI9''@;'; put 'put ''K19bMjQrKGY9MHxhW3E+PjJdKT4+M10saz0uNSorX1tmKzgwPj4zXSw0PT0oMHxhW3ArNDg+PjJdKT8oX1tiZSsyND4+M109aytiLGI9K19bbCs4Pj4zXS0xLEE9YmUpOihfW2JlKzg+PjNdPWItayxiPStfW2wrOD4+M10rMSksX1tBKzg+PjNdPWIsYVsoQT1wKzU2fDApPj4yXT1hW2JlPj4y''@;'; put 'put ''XSxhW0ErND4+Ml09YVtiZSs0Pj4yXSxhW0ErOD4+Ml09YVtiZSs4Pj4yXSxhW0ErMTI+PjJdPWFbYmUrMTI+PjJdLGFbQSsxNj4+Ml09YVtiZSsxNj4+Ml0sYVtBKzIwPj4yXT1hW2JlKzIwPj4yXSxhW0ErMjQ+PjJdPWFbYmUrMjQ+PjJdLGFbQSsyOD4+Ml09YVtiZSsyOD4+Ml0sQT0xO2Jy''@;'; put 'put ''ZWFrfV9bYmU+PjNdPWIsYj0rX1syNCsoZj0wfGFbcT4+Ml0pPj4zXSxrPS41KitfW2YrODA+PjNdLDQ9PSgwfGFbcCs0OD4+Ml0pPyhfW2JlKzI0Pj4zXT1rK2IsYj0rX1tsKzg+PjNdLEE9YmUpOihfW2JlKzg+PjNdPWItayxiPStfW2wrOD4+M10rMSxBPWJlKzE2fDApLF9bQSs4Pj4zXT1i''@;'; put 'put ''LGFbKEE9cCs1NnwwKT4+Ml09YVtiZT4+Ml0sYVtBKzQ+PjJdPWFbYmUrND4+Ml0sYVtBKzg+PjJdPWFbYmUrOD4+Ml0sYVtBKzEyPj4yXT1hW2JlKzEyPj4yXSxhW0ErMTY+PjJdPWFbYmUrMTY+PjJdLGFbQSsyMD4+Ml09YVtiZSsyMD4+Ml0sYVtBKzI0Pj4yXT1hW2JlKzI0Pj4yXSxhW0Er''@;'; put 'put ''Mjg+PjJdPWFbYmUrMjg+PjJdLEE9MTticmVha31fWyhBPWJlKzh8MCk+PjNdPStfWygrX1tBPj4zXTwrX1tsKzg+PjNdP2JlOmwpKzg+PjNdLGFbKEE9cCs1NnwwKT4+Ml09YVtiZT4+Ml0sYVtBKzQ+PjJdPWFbYmUrND4+Ml0sYVtBKzg+PjJdPWFbYmUrOD4+Ml0sYVtBKzEyPj4yXT1hW2Jl''@;'; put 'put ''KzEyPj4yXSxhW0ErMTY+PjJdPWFbYmUrMTY+PjJdLGFbQSsyMD4+Ml09YVtiZSsyMD4+Ml0sYVtBKzI0Pj4yXT1hW2JlKzI0Pj4yXSxhW0ErMjg+PjJdPWFbYmUrMjg+PjJdLEE9MX13aGlsZSgwKTtmb3IoYVtwKzUyPj4yXT1BOzB8ZmVbMTEyKyhBPTB8YVtjKzE2Pj4yXSk+PjBdOyljPTB8''@;'; put 'put ''YVtBKzExNj4+Ml07ZmVbMzArKCgwfExlKT09KDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOmMrNDh8MCkrNDA+PjJdKT9BKzE2fDA6QSs1NnwwKT4+MF09MCxhW3ArNDg+PjJdPXd9ZWxzZSBPZT00NjticmVhaztkZWZhdWx0Ok9lPTQ2fTQ2PT0oMHxPZSkmJih3PTB8YVtwKzQ4Pj4yXSxPZT00''@;'; put 'put ''Nyk7ZTpkb3tpZig0Nz09KDB8T2UpKXtpZihNKXtpZih3PTB8UjJbMTI3Jk1dKExlLDE2KygwfGFbZ2U+PjJdKXwwLHcsYz1wKzU2fDAsQT1wKzUyfDApKXthW3ArNDg+PjJdPXc7YnJlYWt9fWVsc2UgQT1wKzUyfDAsYz1wKzU2fDA7c3dpdGNoKGFbYz4+Ml09YVtwPj4yXSxhW2MrND4+Ml09''@;'; put 'put ''YVtwKzQ+PjJdLGFbYys4Pj4yXT1hW3ArOD4+Ml0sYVtjKzEyPj4yXT1hW3ArMTI+PjJdLGFbYysxNj4+Ml09YVtwKzE2Pj4yXSxhW2MrMjA+PjJdPWFbcCsyMD4+Ml0sYVtjKzI0Pj4yXT1hW3ArMjQ+PjJdLGFbYysyOD4+Ml09YVtwKzI4Pj4yXSxhW0E+PjJdPTEsMHxmKXtjYXNlIDg6UHIo''@;'; put 'put ''MTM4Mzk0LDEwNjUxNCw1NjksMTA2NTI0KTticmVhaztjYXNlIDI6X1s4Kyg0PT0oMHxhW3ArNDg+PjJdKT9wKzU2fDA6cCs3MnwwKT4+M109K19bbCs4Pj4zXTticmVhayBlO2Nhc2UgMTpfW3ArODA+PjNdPStfW2wrOD4+M10sYVtwKzQ4Pj4yXT0xO2JyZWFrIGU7ZGVmYXVsdDpicmVhayBl''@;'; put 'put ''fX19d2hpbGUoMCk7bGU9UmV9ZnVuY3Rpb24gZ04obCxjLGYpe3ZhciBwO3A9K19bOCsoZnw9MCk+PjNdKyArX1s4KyhjfD0wKT4+M10sX1sobHw9MCk+PjNdPStfW2Y+PjNdKyArX1tjPj4zXSxfW2wrOD4+M109cH1mdW5jdGlvbiBtTihsKXt2YXIgcCx3LGssTSxjPTAsZj0wLG09MCxBPTAs''@;'; put 'put ''Yj0wO2ZvcihiPTB8YVsxNzIrKHc9MHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSxtPTAsQT0wO2w9MHxhW2IrKEE8PDIpPj4yXTspbT0rX1sxNisoMHxhWzE2KygwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpsKzQ4fDApKzQwPj4yXSk+PjJdKT4+M10rbSxBPUErMXwwO2ZvcihwPTB8YVt3KzE4MD4+''@;'; put 'put ''Ml0sYz0wLGw9MDtmPTB8YVtwKyhsPDwyKT4+Ml07KWM9K19bMTYrKDB8YVsxNisoMHxhWygyPT0oMyZhW2Y+PjJdfDApP2Y6ZistNDh8MCkrNDA+PjJdKT4+Ml0pPj4zXStjLGw9bCsxfDA7cmV0dXJuIG09K1VsKCsoKE09K19bdysyND4+M10pLStfWzI0KygwfGFbMTYrKDB8YVsoMz09KDMm''@;'; put 'put ''YVsoYj0wfGFbYj4+Ml0pPj4yXXwwKT9iOmIrNDh8MCkrNDA+PjJdKT4+Ml0pPj4zXSksKygoaz0rX1t3KzE2Pj4zXSktbS8rKDB8QSkpKSwuNSooK1VsKCsoK19bMjQrKDB8YVsxNisoMHxhWygyPT0oMyZhWyhiPTB8YVtwPj4yXSk+PjJdfDApP2I6YistNDh8MCkrNDA+PjJdKT4+Ml0pPj4z''@;'; put 'put ''XS1NKSwrKGMvKygwfGwpLWspKSttKX1mdW5jdGlvbiByRChsLGMsZixwLG0pe2x8PTAsZnw9MCxwfD0wLG18PTA7dmFyIFIscSxiZSxMZSxIZSxWZSxELEE9MCx3PTAsYj0wLGs9MCxNPTAsRz0wLHBlPTAsZ2U9MCxPZT0wLFJlPTAscWU9MCxydD0wO2lmKFZlPWxlLGxlPWxlKzExMnwwLExl''@;'; put 'put ''PVZlKzcyfDAsUj1WZSs1NnwwLE09VmUrMTZ8MCxnZT1WZSxxPShjfD0wKS00OHwwLEhlPTB8YVsoMj09KDB8KHc9MyZhW2M+PjJdKSk/YzpxKSs0MD4+Ml0sQT01NisocGU9MHxhWyhiZT1jKzE2fDApPj4yXSl8MCwwfGZlW3BlKzg3Pj4wXSl7eHkoTSxIZSwwfGFbKDM9PSgwfHcpP2M6Yys0''@;'; put 'put ''OHwwKSs0MD4+Ml0sQSksdz1NLE09QSs0MHwwO2Rve2FbQT4+Ml09YVt3Pj4yXSxBPUErNHwwLHc9dys0fDB9d2hpbGUoKDB8QSk8KDB8TSkpfXN3aXRjaChEPShBPTB8YVs4Kyh3PTB8YVsocGU9SGUrMTZ8MCk+PjJdKT4+Ml0pPzB8YVsxNisoMHxhW0ErND4+Ml0pPj4yXTowLE09bCs0MHww''@;'; put 'put ''LEE9dysxNnwwLHc9NTYrKDB8YVtiZT4+Ml0pfDAsYVtSPj4yXT1hW0E+PjJdLGFbUis0Pj4yXT1hW0ErND4+Ml0sYVtSKzg+PjJdPWFbQSs4Pj4yXSxhW1IrMTI+PjJdPWFbQSsxMj4+Ml0sYVtMZT4+Ml09YVt3Pj4yXSxhW0xlKzQ+PjJdPWFbdys0Pj4yXSxhW0xlKzg+PjJdPWFbdys4Pj4y''@;'; put 'put ''XSxhW0xlKzEyPj4yXT1hW3crMTI+PjJdLGdOKGdlLFIsTGUpLGFbTT4+Ml09YVtnZT4+Ml0sYVtNKzQ+PjJdPWFbZ2UrND4+Ml0sYVtNKzg+PjJdPWFbZ2UrOD4+Ml0sYVtNKzEyPj4yXT1hW2dlKzEyPj4yXSxtPDwyND4+MjQ/KGs9K21OKDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOnEpKzQw''@;'; put 'put ''Pj4yXSkrMy4xNDE1OTI2NTM1ODk3OTMsX1tsKzU2Pj4zXT1rLGs8Ni4yODMxODUzMDcxNzk1ODY/Rz0xOlByKDEwNjUzNCwxMDY1MTQsNjA2LDEwNjU1OCkpOjB8ZmVbODUrKEE9MHxhW2JlPj4yXSk+PjBdPyhfW2wrNTY+PjNdPStfW0ErNzI+PjNdLEc9MSk6Rz0wLGZlW2wrNjk+PjBdPUcs''@;'; put 'put ''YVsoZ2U9cCszMnwwKT4+Ml09YVtNPj4yXSxhW2dlKzQ+PjJdPWFbTSs0Pj4yXSxhW2dlKzg+PjJdPWFbTSs4Pj4yXSxhW2dlKzEyPj4yXT1hW00rMTI+PjJdLDB8Zil7Y2FzZSAxOmlmKDA9PSgwfGZlWzE1Nisodz0wfGFbcGU+PjJdKT4+MF0pJiYoT2U9MjU1JihnZT0wfGZlWzg5KygwfGFb''@;'; put 'put ''YmU+PjJdKT4+MF0pLGdlPDwyND4+MjQhPTApKXthW0xlPj4yXT1hW3A+PjJdLGFbTGUrND4+Ml09YVtwKzQ+PjJdLGFbTGUrOD4+Ml09YVtwKzg+PjJdLGFbTGUrMTI+PjJdPWFbcCsxMj4+Ml0sYVtMZSsxNj4+Ml09YVtwKzE2Pj4yXSxhW0xlKzIwPj4yXT1hW3ArMjA+PjJdLGFbTGUrMjQ+''@;'; put 'put ''PjJdPWFbcCsyND4+Ml0sYVtMZSsyOD4+Ml09YVtwKzI4Pj4yXTtkb3tpZighKDQmT2UpKXtpZigxJk9lKXtpZihhW3ArNDg+PjJdPTEsYj0rX1tMZT4+M10sK19bTT4+M108K19bdysxNj4+M10pe3J0PWIrLTEsaz0rX1tsKzQ4Pj4zXSxiPStfWyhsPUxlKzE2fDApPj4zXSxxZT0tLjUqK19b''@;'; put 'put ''dys4MD4+M10rICtfW3crMjQ+PjNdLHFlLT0rKDB8KDB8YVsyNTIrKDB8YVsxNisoMHxjcihIZSkpPj4yXSk+PjJdKS8yKSxfW2w+PjNdPStfWzE2KyhBPTB8YVtwZT4+Ml0pPj4zXS0rX1tBKzg4Pj4zXSxfW0xlKzg+PjNdPWssX1tMZSsyND4+M109LjUqK19bQSs4MD4+M10rICtfW0ErMjQ+''@;'; put 'put ''PjNdLF9bTGU+PjNdPXJ0LF9bcCs1Nj4+M109cnQsX1twKzY0Pj4zXT1xZSxfW3ArNzI+PjNdPWIsX1twKzgwPj4zXT1rLGFbKEE9cCs4OHwwKT4+Ml09YVtMZT4+Ml0sYVtBKzQ+PjJdPWFbTGUrND4+Ml0sYVtBKzg+PjJdPWFbTGUrOD4+Ml0sYVtBKzEyPj4yXT1hW0xlKzEyPj4yXSxhW0Er''@;'; put 'put ''MTY+PjJdPWFbTGUrMTY+PjJdLGFbQSsyMD4+Ml09YVtMZSsyMD4+Ml0sYVtBKzI0Pj4yXT1hW0xlKzI0Pj4yXSxhW0ErMjg+PjJdPWFbTGUrMjg+PjJdLEE9MjticmVha31ydD0rX1tsKzQ4Pj4zXSxxZT0rX1soQT1MZSsxNnwwKT4+M10rMSxrPS0uNSorX1t3KzgwPj4zXSsgK19bdysyND4+''@;'; put 'put ''M10say09KygwfCgwfGFbMjUyKygwfGFbMTYrKDB8Y3IoSGUpKT4+Ml0pPj4yXSkvMiksX1tMZT4+M109K19bOTYrKGw9MHxhW3BlPj4yXSk+PjNdKyArX1tsKzE2Pj4zXSxfW0xlKzg+PjNdPXJ0LF9bTGUrMjQ+PjNdPS41KitfW2wrODA+PjNdKyArX1tsKzI0Pj4zXSxfW0E+PjNdPXFlLF9b''@;'; put 'put ''cCs1Nj4+M109YixfW3ArNjQ+PjNdPWssX1twKzcyPj4zXT1xZSxfW3ArODA+PjNdPXJ0LGFbKEE9cCs4OHwwKT4+Ml09YVtMZT4+Ml0sYVtBKzQ+PjJdPWFbTGUrND4+Ml0sYVtBKzg+PjJdPWFbTGUrOD4+Ml0sYVtBKzEyPj4yXT1hW0xlKzEyPj4yXSxhW0ErMTY+PjJdPWFbTGUrMTY+PjJd''@;'; put 'put ''LGFbQSsyMD4+Ml09YVtMZSsyMD4+Ml0sYVtBKzI0Pj4yXT1hW0xlKzI0Pj4yXSxhW0ErMjg+PjJdPWFbTGUrMjg+PjJdLEE9MjticmVha31pZihBPXArNDh8MCw4Jk9lKXthW0E+PjJdPTgsX1tMZSsxNj4+M109K19bTT4+M10sX1tMZSsyND4+M109LjUqK19bdys4MD4+M10rICtfW3crMjQ+''@;'; put 'put ''PjNdLF9bTGUrOD4+M109K19bbCs0OD4+M10sYVsoQT1wKzU2fDApPj4yXT1hW0xlPj4yXSxhW0ErND4+Ml09YVtMZSs0Pj4yXSxhW0ErOD4+Ml09YVtMZSs4Pj4yXSxhW0ErMTI+PjJdPWFbTGUrMTI+PjJdLGFbQSsxNj4+Ml09YVtMZSsxNj4+Ml0sYVtBKzIwPj4yXT1hW0xlKzIwPj4yXSxh''@;'; put 'put ''W0ErMjQ+PjJdPWFbTGUrMjQ+PjJdLGFbQSsyOD4+Ml09YVtMZSsyOD4+Ml0sQT0xO2JyZWFrfWFbQT4+Ml09MixfW0xlPj4zXT0rX1tNPj4zXSxfW0xlKzI0Pj4zXT0uNSorX1t3KzgwPj4zXSsgK19bdysyND4+M10sX1tMZSs4Pj4zXT0rX1tsKzQ4Pj4zXSxhWyhBPXArNTZ8MCk+PjJdPWFb''@;'; put 'put ''TGU+PjJdLGFbQSs0Pj4yXT1hW0xlKzQ+PjJdLGFbQSs4Pj4yXT1hW0xlKzg+PjJdLGFbQSsxMj4+Ml09YVtMZSsxMj4+Ml0sYVtBKzE2Pj4yXT1hW0xlKzE2Pj4yXSxhW0ErMjA+PjJdPWFbTGUrMjA+PjJdLGFbQSsyND4+Ml09YVtMZSsyND4+Ml0sYVtBKzI4Pj4yXT1hW0xlKzI4Pj4yXSxB''@;'; put 'put ''PTE7YnJlYWt9YVtwKzQ4Pj4yXT00LF9bKEE9TGUrOHwwKT4+M109K19bKCtfW0E+PjNdPCtfW2wrNDg+PjNdP0xlOk0pKzg+PjNdLGFbKEE9cCs1NnwwKT4+Ml09YVtMZT4+Ml0sYVtBKzQ+PjJdPWFbTGUrND4+Ml0sYVtBKzg+PjJdPWFbTGUrOD4+Ml0sYVtBKzEyPj4yXT1hW0xlKzEyPj4y''@;'; put 'put ''XSxhW0ErMTY+PjJdPWFbTGUrMTY+PjJdLGFbQSsyMD4+Ml09YVtMZSsyMD4+Ml0sYVtBKzI0Pj4yXT1hW0xlKzI0Pj4yXSxhW0ErMjg+PjJdPWFbTGUrMjg+PjJdLEE9MX13aGlsZSgwKTtmb3IoYVtwKzUyPj4yXT1BOzB8ZmVbMTEyKyhBPTB8YVtjKzE2Pj4yXSk+PjBdOyljPTB8YVtBKzEx''@;'; put 'put ''Nj4+Ml07ZmVbMzArKCgwfEhlKT09KDB8YVsoMj09KDMmYVtjPj4yXXwwKT9jOmMrLTQ4fDApKzQwPj4yXSk/QSs1NnwwOkErMTZ8MCk+PjBdPTAsYVtwKzQ4Pj4yXT1PZX1lbHNlIHc9NCxSZT00NzticmVhaztjYXNlIDI6aWYodz0yNTUmKE9lPTB8ZmVbODkrKDB8YVtiZT4+Ml0pPj4wXSks''@;'; put 'put ''T2U8PDI0Pj4yNCl7YVtMZT4+Ml09YVtwPj4yXSxhW0xlKzQ+PjJdPWFbcCs0Pj4yXSxhW0xlKzg+PjJdPWFbcCs4Pj4yXSxhW0xlKzEyPj4yXT1hW3ArMTI+PjJdLGFbTGUrMTY+PjJdPWFbcCsxNj4+Ml0sYVtMZSsyMD4+Ml09YVtwKzIwPj4yXSxhW0xlKzI0Pj4yXT1hW3ArMjQ+PjJdLGFb''@;'; put 'put ''TGUrMjg+PjJdPWFbcCsyOD4+Ml07ZG97aWYoISg0JncpKXtpZigxJnd8MCl7aWYoND09KDB8YVtwKzQ4Pj4yXSkpe2I9K19bTGU+PjNdLTEscWU9K19bTT4+M10saz0ocnQ9K19bMjQrKEE9MHxhW3BlPj4yXSk+PjNdLS41KitfW0ErODA+PjNdKS0rKDB8KDB8YVsyNTIrKDB8YVsxNisoMHxj''@;'; put 'put ''cihIZSkpPj4yXSk+PjJdKS8yKSxfW0xlKzE2Pj4zXT0rX1sxNisoQT0wfGFbcGU+PjJdKT4+M10tMi0rX1tBKzg4Pj4zXSxfW0xlKzg+PjNdPXJ0LF9bTGUrMjQ+PjNdPS41KitfW0ErODA+PjNdKyArX1tBKzI0Pj4zXSxfW0xlPj4zXT1iLF9bcCs1Nj4+M109YixfW3ArNjQ+PjNdPWssX1tw''@;'; put 'put ''KzcyPj4zXT1xZSxfW3ArODA+PjNdPXJ0LGFbKEE9cCs4OHwwKT4+Ml09YVtMZT4+Ml0sYVtBKzQ+PjJdPWFbTGUrND4+Ml0sYVtBKzg+PjJdPWFbTGUrOD4+Ml0sYVtBKzEyPj4yXT1hW0xlKzEyPj4yXSxhW0ErMTY+PjJdPWFbTGUrMTY+PjJdLGFbQSsyMD4+Ml09YVtMZSsyMD4+Ml0sYVtB''@;'; put 'put ''KzI0Pj4yXT1hW0xlKzI0Pj4yXSxhW0ErMjg+PjJdPWFbTGUrMjg+PjJdLEE9MjticmVha31fWyhBPUxlKzI0fDApPj4zXT0rX1soK19bQT4+M10+K19bbCs4Pj4zXT9MZSsxNnwwOmwpKzg+PjNdLGFbKEE9cCs1NnwwKT4+Ml09YVtMZT4+Ml0sYVtBKzQ+PjJdPWFbTGUrND4+Ml0sYVtBKzg+''@;'; put 'put ''PjJdPWFbTGUrOD4+Ml0sYVtBKzEyPj4yXT1hW0xlKzEyPj4yXSxhW0ErMTY+PjJdPWFbTGUrMTY+PjJdLGFbQSsyMD4+Ml09YVtMZSsyMD4+Ml0sYVtBKzI0Pj4yXT1hW0xlKzI0Pj4yXSxhW0ErMjg+PjJdPWFbTGUrMjg+PjJdLEE9MTticmVha31pZihiPStfW00+PjNdLDgmdyl7X1soQT1M''@;'; put 'put ''ZSsxNnwwKT4+M109YisxLGI9K19bMjQrKGY9MHxhW3BlPj4yXSk+PjNdLGs9LjUqK19bZis4MD4+M10sND09KDB8YVtwKzQ4Pj4yXSk/KF9bTGUrMjQ+PjNdPWsrYixiPStfW2wrNDg+PjNdLTEsQT1MZSk6KF9bTGUrOD4+M109Yi1rLGI9K19bbCs0OD4+M10rMSksX1tBKzg+PjNdPWIsYVso''@;'; put 'put ''QT1wKzU2fDApPj4yXT1hW0xlPj4yXSxhW0ErND4+Ml09YVtMZSs0Pj4yXSxhW0ErOD4+Ml09YVtMZSs4Pj4yXSxhW0ErMTI+PjJdPWFbTGUrMTI+PjJdLGFbQSsxNj4+Ml09YVtMZSsxNj4+Ml0sYVtBKzIwPj4yXT1hW0xlKzIwPj4yXSxhW0ErMjQ+PjJdPWFbTGUrMjQ+PjJdLGFbQSsyOD4+''@;'; put 'put ''Ml09YVtMZSsyOD4+Ml0sQT0xO2JyZWFrfV9bTGU+PjNdPWIrLTEsYj0rX1syNCsoZj0wfGFbcGU+PjJdKT4+M10saz0uNSorX1tmKzgwPj4zXSw0PT0oMHxhW3ArNDg+PjJdKT8oX1tMZSsyND4+M109aytiLGI9K19bbCs0OD4+M10tMSxBPUxlKTooX1tMZSs4Pj4zXT1iLWssYj0rX1tsKzQ4''@;'; put 'put ''Pj4zXSxBPUxlKzE2fDApLF9bQSs4Pj4zXT1iLGFbKEE9cCs1NnwwKT4+Ml09YVtMZT4+Ml0sYVtBKzQ+PjJdPWFbTGUrND4+Ml0sYVtBKzg+PjJdPWFbTGUrOD4+Ml0sYVtBKzEyPj4yXT1hW0xlKzEyPj4yXSxhW0ErMTY+PjJdPWFbTGUrMTY+PjJdLGFbQSsyMD4+Ml09YVtMZSsyMD4+Ml0s''@;'; put 'put ''YVtBKzI0Pj4yXT1hW0xlKzI0Pj4yXSxhW0ErMjg+PjJdPWFbTGUrMjg+PjJdLEE9MTticmVha31fWyhBPUxlKzh8MCk+PjNdPStfWygrX1tBPj4zXTwrX1tsKzQ4Pj4zXT9MZTpNKSs4Pj4zXSxhWyhBPXArNTZ8MCk+PjJdPWFbTGU+PjJdLGFbQSs0Pj4yXT1hW0xlKzQ+PjJdLGFbQSs4Pj4y''@;'; put 'put ''XT1hW0xlKzg+PjJdLGFbQSsxMj4+Ml09YVtMZSsxMj4+Ml0sYVtBKzE2Pj4yXT1hW0xlKzE2Pj4yXSxhW0ErMjA+PjJdPWFbTGUrMjA+PjJdLGFbQSsyND4+Ml09YVtMZSsyND4+Ml0sYVtBKzI4Pj4yXT1hW0xlKzI4Pj4yXSxBPTF9d2hpbGUoMCk7Zm9yKGFbcCs1Mj4+Ml09QTswfGZlWzEx''@;'; put 'put ''MisoQT0wfGFbYysxNj4+Ml0pPj4wXTspYz0wfGFbQSsxMTY+PjJdO2ZlWzMwKygoMHxIZSk9PSgwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpjKy00OHwwKSs0MD4+Ml0pP0ErNTZ8MDpBKzE2fDApPj4wXT0wLGFbcCs0OD4+Ml09d31lbHNlIFJlPTQ2O2JyZWFrO2RlZmF1bHQ6UmU9NDZ9NDY9''@;'; put 'put ''PSgwfFJlKSYmKHc9MHxhW3ArNDg+PjJdLFJlPTQ3KTtlOmRve2lmKDQ3PT0oMHxSZSkpe2lmKEQpe2lmKHc9MHxSMlsxMjcmRF0oSGUsNTYrKDB8YVtiZT4+Ml0pfDAsdyxjPXArNTZ8MCxBPXArNTJ8MCkpe2FbcCs0OD4+Ml09dzticmVha319ZWxzZSBBPXArNTJ8MCxjPXArNTZ8MDtzd2l0''@;'; put 'put ''Y2goYVtjPj4yXT1hW3A+PjJdLGFbYys0Pj4yXT1hW3ArND4+Ml0sYVtjKzg+PjJdPWFbcCs4Pj4yXSxhW2MrMTI+PjJdPWFbcCsxMj4+Ml0sYVtjKzE2Pj4yXT1hW3ArMTY+PjJdLGFbYysyMD4+Ml09YVtwKzIwPj4yXSxhW2MrMjQ+PjJdPWFbcCsyND4+Ml0sYVtjKzI4Pj4yXT1hW3ArMjg+''@;'; put 'put ''PjJdLGFbQT4+Ml09MSwwfGYpe2Nhc2UgODpQcigxMzgzOTQsMTA2NTE0LDc2NSwxMDY1NTgpO2JyZWFrO2Nhc2UgMjpfWzgrKDQ9PSgwfGFbcCs0OD4+Ml0pP3ArNTZ8MDpwKzcyfDApPj4zXT0rX1tsKzQ4Pj4zXTticmVhayBlO2Nhc2UgMTpfW3ArNjQ+PjNdPStfW2wrNDg+PjNdLGFbcCs0''@;'; put 'put ''OD4+Ml09NDticmVhayBlO2RlZmF1bHQ6YnJlYWsgZX19fXdoaWxlKDApO2xlPVZlfWZ1bmN0aW9uIGxKKGwpe3ZhciBtLEEsYz0wLGY9MCxwPTAsdz0wO3JldHVybiBBPTB8YVs5NisobT0wfGFbMTYrKGx8PTApPj4yXSk+PjJdLDA9PSgwfGZlW20rNDQ+PjBdKSYmMD09KDB8ZmVbbSs4ND4+''@;'; put 'put ''MF0pP3c9NjowIT0oOCYoZj0yNTUmKGM9MHxmZVttKzQ5Pj4wXSkpfDApfHwwIT0oOCYocD0wfGZlW20rODk+PjBdKSl8fDAhPSg1JmZ8MCkmJmM8PDI0Pj4yND09cDw8MjQ+PjI0P2w9MDp3PTYsNj09KDB8dykmJihBPyhsPTAhPSgxJmFbMTE2KygwfGFbMTYrKDB8Y3IoMHxhWygyPT0oMyZh''@;'; put 'put ''W2w+PjJdfDApP2w6bCstNDh8MCkrNDA+PjJdKSk+PjJdKT4+Ml18MCksbD1+figrX1sobD9BKzMyfDA6QSsyNHwwKT4+M10rMTgpKTpsPTE4KSwwfGx9ZnVuY3Rpb24gaUQobCxjLGYscCxtLEEsdyl7bHw9MCxwfD0wLG09K20sQT0rQSx3fD0wO3ZhciBiPTAsaz0wLE09MCxEPTA7TT0wPT0o''@;'; put 'put ''MHxmZVs0NCsobD0wfGFbMTYrKDB8YVsoY3w9MCkrKChmfD0wKTw8Mik+PjJdKT4+Ml0pPj4wXSkmJjA9PSgwfGZlW2wrODQ+PjBdKT82OjM7ZG97aWYoMz09KDB8TSkpe2lmKCEoOCYoaz0yNTUmKGI9MHxmZVtsKzQ5Pj4wXSkpKSl7aWYoMD09KDgmKEQ9MHxmZVtsKzg5Pj4wXSkpJiYoMD09''@;'; put 'put ''KDUma3wwKXx8Yjw8MjQ+PjI0IT1EPDwyND4+MjQpKXtNPTY7YnJlYWt9aWYoISg4JmZlW2wrODk+PjBdKSl7aWYoNCZrfDApe3NKKGMsZixwLG0sQSx3KTticmVha31pZigxJmspe3VsZShjLGYscCxtLEEsdyk7YnJlYWt9UHIoMTM4Mzk0LDEwNjUxNCwxMjMxLDEwNjU2Nil9fWlmKDA9PSgy''@;'; put 'put ''JmIpJiYwPT0oMiZmZVtsKzg5Pj4wXSkpe3NsZShjLGYscCxtLEEsdyk7YnJlYWt9c0ooYyxmLHAsbSxBLHcpfX13aGlsZSgwKTs2PT0oMHxNKSYmZnVuY3Rpb24gbGxlKGwsYyxmLHAsbSxBKXtwPStwLEF8PTA7dmFyIHEscGUsZ2UsYmUsT2UsTGUsUmUsSGUscnQsV2UsYXQsU3Qsa3QsWnQs''@;'; put 'put ''Y3QsYnQsYW4sU24sSG4sdXIsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLFZlPTAscWU9MCxzdD0wLEV0PTAsSHI9MCxFcj0wLGZyPTA7c3dpdGNoKHVyPWxlLGxlPWxlKzE2MDgwfDAsYnQ9dXIrODB8MCxhbj11cis2NHwwLFNuPXVyKzQ4fDAsSG49dXIrMzJ8MCxadD11cisxNnwwLGN0''@;'; put 'put ''PXVyLGs9KGs9LjUqKG09K20pLysoMHwoZnw9MCkpKT4yP2s6MixXZT0xNisoMHxhWygzPT0oMyZhWyhxZT0wfGFbKGx8PTApKygoY3w9MCk8PDIpPj4yXSk+PjJdfDApP3FlOnFlKzQ4fDApKzQwPj4yXSl8MCxhdD0oYj0rX1sxNisocWU9MHxhW3FlKzE2Pj4yXSk+PjNdKSsocnQ9K19bMTYr''@;'; put 'put ''KFZlPTB8YVtXZT4+Ml0pPj4zXSksa3Q9KG09K19bcWUrNTY+PjNdKStydCx3PShTdD0rX1txZSsyND4+M10rKHN0PStfW1ZlKzI0Pj4zXSkpPj0oc3Q9K19bcWUrNjQ+PjNdK3N0KT8xOi0xLEQ9K19bVmUrOTY+PjNdLDB8b0QoMHxYdFtxZSs0OT4+MF0sMHxYdFtxZSs4OT4+MF0pKXtjYXNl''@;'; put 'put ''IDY1OmNhc2UgMzI6U3Q9PXN0JiYodz0wLXd8MCl9Zm9yKEhyPTMqKEQtYiksYj0zKihELW0pLGJlPWsqKygwfHcpLGdlPWJ0Kzh8MCxPZT1idCsxNnwwLExlPWJ0KzMyfDAsUmU9YnQrNDh8MCxIZT0uNSooc3QrU3QpLFZlPWJ0KzY0fDAscWU9YnQrODB8MCxxPWJ0Kzk2fDAscGU9YnQrMTA0''@;'; put 'put ''fDAsRz0wLE09MCxtPUQsaz1EPEhyP0Q6SHIsYj1EPGI/RDpiOyEoKDB8Ryk+PSgwfGYpKTspUj1jKzF8MCxjPTB8YVtsKyhjPDwyKT4+Ml0sRD1tK3Asays9cCxiKz1wLE0rPWJlLF9bYnQ+PjNdPWF0LF9bZ2U+PjNdPVN0LHl1KGFuLC4zMzMzMzMzMzMzMzMzMzMzKmsrYXQsSHI9TStTdCks''@;'; put 'put ''YVtPZT4+Ml09YVthbj4+Ml0sYVtPZSs0Pj4yXT1hW2FuKzQ+PjJdLGFbT2UrOD4+Ml09YVthbis4Pj4yXSxhW09lKzEyPj4yXT1hW2FuKzEyPj4yXSx5dShTbixFcj1EK3J0LEhyKSxhW0xlPj4yXT1hW1NuPj4yXSxhW0xlKzQ+PjJdPWFbU24rND4+Ml0sYVtMZSs4Pj4yXT1hW1NuKzg+PjJd''@;'; put 'put ''LGFbTGUrMTI+PjJdPWFbU24rMTI+PjJdLHl1KEhuLEVyLEhlKSxhW1JlPj4yXT1hW0huPj4yXSxhW1JlKzQ+PjJdPWFbSG4rND4+Ml0sYVtSZSs4Pj4yXT1hW0huKzg+PjJdLGFbUmUrMTI+PjJdPWFbSG4rMTI+PjJdLHl1KFp0LEVyLEhyPXN0LU0pLGFbVmU+PjJdPWFbWnQ+PjJdLGFbVmUr''@;'; put 'put ''ND4+Ml09YVtadCs0Pj4yXSxhW1ZlKzg+PjJdPWFbWnQrOD4+Ml0sYVtWZSsxMj4+Ml09YVtadCsxMj4+Ml0seXUoY3QsLjMzMzMzMzMzMzMzMzMzMzMqYitrdCxIciksYVtxZT4+Ml09YVtjdD4+Ml0sYVtxZSs0Pj4yXT1hW2N0KzQ+PjJdLGFbcWUrOD4+Ml09YVtjdCs4Pj4yXSxhW3FlKzEy''@;'; put 'put ''Pj4yXT1hW2N0KzEyPj4yXSxfW3E+PjNdPWt0LF9bcGU+PjNdPXN0LG09MCE9KDB8YVs5NisoMHxhWyh3PWMrMTZ8MCk+PjJdKT4+Ml0pJiYoZnI9MD09KDEmYVsxMTYrKDB8YVsxNisoMHxjcigwfGFbKDM9PSgzJmFbYz4+Ml18MCk/YzpjKzQ4fDApKzQwPj4yXSkpPj4yXSk+PjJdfDApLF9b''@;'; put 'put ''NTYrKHc9MHxhWzk2KygwfGFbdz4+Ml0pPj4yXSk+PjNdPS41KihFdD0rX1soZnI/dysyNHwwOncrMzJ8MCk+PjNdKStEKyArX1sxNisoZnI9MHxhW1dlPj4yXSk+PjNdLF9bdys2ND4+M109K19bZnIrMjQ+PjNdLGZlW3crODE+PjBdPTEsRXQ+cCk/RXQrbTpELEF1KGMsMHxhWygyPT0oMyZh''@;'; put 'put ''W2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdLGJ0LDcsQSksYz1SLEc9RysxfDA7bGU9dXJ9KGMsZixwLG0sQSx3KX1mdW5jdGlvbiBzSihsLGMsZixwLG0sQSl7bT0rbSxBfD0wO3ZhciBnZSxiZSxPZSxMZSxSZSxIZSxWZSxxZSxXZSxhdCxTdCxrdCxFdCxjdCxidCxhbixTbixIbix1cixI''@;'; put 'put ''cix3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAscnQ9MCxzdD0wLFp0PTAsRXI9MCxmcj0wO3N3aXRjaChIcj1sZSxsZT1sZSsxNjA4MHwwLGFuPUhyKzgwfDAsU249SHIrNjR8MCxIbj1Icis0OHwwLHVyPUhyKzMyfDAsY3Q9SHIrMTZ8MCxidD1IcixSPShSPS41KihwPStw''@;'; put 'put ''KS8rKDB8KGZ8PTApKSk+Mj9SOjIsYXQ9MTYrKDB8YVsoMz09KDMmYVsocnQ9MHxhWyhsfD0wKSsoKGN8PTApPDwyKT4+Ml0pPj4yXXwwKT9ydDpydCs0OHwwKSs0MD4+Ml0pfDAsa3Q9KEQ9K19bMjQrKHJ0PTB8YVtydCsxNj4+Ml0pPj4zXSkrKFdlPStfWzI0KyhiPTB8YVthdD4+Ml0pPj4z''@;'; put 'put ''XSksRXQ9KE09K19bcnQrNjQ+PjNdKStXZSxrPShTdD0odz0rX1tydCsxNj4+M10pKyhzdD0rX1tiKzE2Pj4zXSkpPj0oc3Q9KHA9K19bcnQrNTY+PjNdKStzdCk/MTotMSxxPS41KitfW2IrODA+PjNdLDB8b0QoMHxYdFtydCs0OT4+MF0sMHxYdFtydCs4OT4+MF0pKXtjYXNlIDE1Onc9KFIt''@;'; put 'put ''cCsgK19bYis5Nj4+M10pKms7YnJlYWs7Y2FzZSAzODp3PShwK1IrICtfW2IrODg+PjNdKSprO2JyZWFrO2Nhc2UgNDE6Y2FzZSA0ODp3PShSLXcrICtfW2IrOTY+PjNdKSprO2JyZWFrO2Nhc2UgNTg6Y2FzZSA1NzpjYXNlIDUxOmNhc2UgNDc6Y2FzZSAzNzpjYXNlIDE0Onc9LjMzMzMzMzMz''@;'; put 'put ''MzMzMzMzMzMqayoody1wKyArX1tiKzg4Pj4zXSsgK19bYis5Nj4+M10pO2JyZWFrO2Nhc2UgNzM6dz0odytSKyArX1tiKzg4Pj4zXSkqazticmVhaztjYXNlIDgzOnc9KCtfW2IrODg+PjNdK3cpKms7YnJlYWs7Y2FzZSA4NDp3PSguNSoody1wKyArX1tiKzg4Pj4zXSsgK19bYis5Nj4+M10p''@;'; put 'put ''K1IpKms7YnJlYWs7Y2FzZSA4NTpjYXNlIDc1OmNhc2UgNzQ6dz0oLjUqKHctcCsgK19bYis4OD4+M10rICtfW2IrOTY+PjNdKSsyKlIpKms7YnJlYWs7ZGVmYXVsdDp3PTB9Zm9yKFIqPWssT2U9YW4rOHwwLExlPWFuKzE2fDAsUmU9YW4rMzJ8MCxIZT1hbis0OHwwLFZlPS41KihzdCtTdCks''@;'; put 'put ''cWU9YW4rNjR8MCxydD1hbis4MHwwLGdlPWFuKzk2fDAsYmU9YW4rMTA0fDAscGU9MCxwPXEsRD1xPChEPTMqKHEtRCkpP3E6RCxrPXE8KE09MyoocS1NKSk/cTpNOyEoKDB8cGUpPj0oMHxmKSk7KUc9YysxfDAsYz0wfGFbbCsoYzw8Mik+PjJdLE09cCttLEQrPW0says9bSx3Kz1SLF9bYW4+''@;'; put 'put ''PjNdPVN0LF9bT2U+PjNdPWt0LHl1KFNuLHE9dytTdCwuMzMzMzMzMzMzMzMzMzMzMypEK2t0KSxhW0xlPj4yXT1hW1NuPj4yXSxhW0xlKzQ+PjJdPWFbU24rND4+Ml0sYVtMZSs4Pj4yXT1hW1NuKzg+PjJdLGFbTGUrMTI+PjJdPWFbU24rMTI+PjJdLHl1KEhuLHEsRXI9TStXZSksYVtSZT4+''@;'; put 'put ''Ml09YVtIbj4+Ml0sYVtSZSs0Pj4yXT1hW0huKzQ+PjJdLGFbUmUrOD4+Ml09YVtIbis4Pj4yXSxhW1JlKzEyPj4yXT1hW0huKzEyPj4yXSx5dSh1cixWZSxFciksYVtIZT4+Ml09YVt1cj4+Ml0sYVtIZSs0Pj4yXT1hW3VyKzQ+PjJdLGFbSGUrOD4+Ml09YVt1cis4Pj4yXSxhW0hlKzEyPj4y''@;'; put 'put ''XT1hW3VyKzEyPj4yXSx5dShjdCxxPXN0LXcsRXIpLGFbcWU+PjJdPWFbY3Q+PjJdLGFbcWUrND4+Ml09YVtjdCs0Pj4yXSxhW3FlKzg+PjJdPWFbY3QrOD4+Ml0sYVtxZSsxMj4+Ml09YVtjdCsxMj4+Ml0seXUoYnQscSwuMzMzMzMzMzMzMzMzMzMzMyprK0V0KSxhW3J0Pj4yXT1hW2J0Pj4y''@;'; put 'put ''XSxhW3J0KzQ+PjJdPWFbYnQrND4+Ml0sYVtydCs4Pj4yXT1hW2J0Kzg+PjJdLGFbcnQrMTI+PjJdPWFbYnQrMTI+PjJdLF9bZ2U+PjNdPXN0LF9bYmU+PjNdPUV0LHA9MCE9KDB8YVs5NisoMHxhWyhiPWMrMTZ8MCk+PjJdKT4+Ml0pJiYoZnI9MD09KDEmYVsxMTYrKDB8YVsxNisoMHxjcigw''@;'; put 'put ''fGFbKDM9PSgzJmFbYz4+Ml18MCk/YzpjKzQ4fDApKzQwPj4yXSkpPj4yXSk+PjJdfDApLF9bNjQrKGI9MHxhWzk2KygwfGFbYj4+Ml0pPj4yXSk+PjNdPS41KihadD0rX1soZnI/YiszMnwwOmIrMjR8MCk+PjNdKStNKyArX1syNCsoZnI9MHxhW2F0Pj4yXSk+PjNdLF9bYis1Nj4+M109K19b''@;'; put 'put ''ZnIrMTY+PjNdLGZlW2IrODE+PjBdPTEsWnQ+bSk/WnQrcDpNLEF1KGMsMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdLGFuLDcsQSksYz1HLHBlPXBlKzF8MDtsZT1Icn1mdW5jdGlvbiBzbGUobCxjLGYscCxtLEEpe3A9K3AsQXw9MDt2YXIgcSxwZSxnZSxiZSxPZSxM''@;'; put 'put ''ZSxSZSxIZSxydCxXZSxhdCxTdCxrdCxadCxjdCxidCxhbixTbixIbix1cix3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsVmU9MCxxZT0wLHN0PTAsRXQ9MCxIcj0wLEVyPTAsZnI9MDtzd2l0Y2godXI9bGUsbGU9bGUrMTYwODB8MCxidD11cis4MHwwLGFuPXVyKzY0fDAsU249dXIrNDh8''@;'; put 'put ''MCxIbj11ciszMnwwLFp0PXVyKzE2fDAsY3Q9dXIsaz0oaz0uNSoobT0rbSkvKygwfChmfD0wKSkpPjI/azoyLFdlPTE2KygwfGFbKDM9PSgzJmFbKHFlPTB8YVsobHw9MCkrKChjfD0wKTw8Mik+PjJdKT4+Ml18MCk/cWU6cWUrNDh8MCkrNDA+PjJdKXwwLGF0PShiPStfWzE2KyhxZT0wfGFb''@;'; put 'put ''cWUrMTY+PjJdKT4+M10pKyhydD0rX1sxNisoVmU9MHxhW1dlPj4yXSk+PjNdKSxrdD0obT0rX1txZSs1Nj4+M10pK3J0LHc9KFN0PStfW3FlKzI0Pj4zXSsoc3Q9K19bVmUrMjQ+PjNdKSk+PShzdD0rX1txZSs2ND4+M10rc3QpPzE6LTEsRD0rX1tWZSs4OD4+M10sMHxvRCgwfFh0W3FlKzQ5''@;'; put 'put ''Pj4wXSwwfFh0W3FlKzg5Pj4wXSkpe2Nhc2UgNjc6Y2FzZSAxMjpTdD09c3QmJih3PTAtd3wwKX1mb3IoSHI9MyooYitEKSxiPTMqKG0rRCksYmU9ayorKDB8dyksZ2U9YnQrOHwwLE9lPWJ0KzE2fDAsTGU9YnQrMzJ8MCxSZT1idCs0OHwwLEhlPS41KihzdCtTdCksVmU9YnQrNjR8MCxxZT1i''@;'; put 'put ''dCs4MHwwLHE9YnQrOTZ8MCxwZT1idCsxMDR8MCxHPTAsTT0wLG09RCxrPUQ8SHI/RDpIcixiPUQ8Yj9EOmI7ISgoMHxHKT49KDB8ZikpOylSPWMrMXwwLGM9MHxhW2wrKGM8PDIpPj4yXSxEPW0rcCxrKz1wLGIrPXAsTSs9YmUsX1tidD4+M109YXQsX1tnZT4+M109U3QseXUoYW4sYXQtLjMz''@;'; put 'put ''MzMzMzMzMzMzMzMzMzMqayxIcj1NK1N0KSxhW09lPj4yXT1hW2FuPj4yXSxhW09lKzQ+PjJdPWFbYW4rND4+Ml0sYVtPZSs4Pj4yXT1hW2FuKzg+PjJdLGFbT2UrMTI+PjJdPWFbYW4rMTI+PjJdLHl1KFNuLEVyPXJ0LUQsSHIpLGFbTGU+PjJdPWFbU24+PjJdLGFbTGUrND4+Ml09YVtTbis0''@;'; put 'put ''Pj4yXSxhW0xlKzg+PjJdPWFbU24rOD4+Ml0sYVtMZSsxMj4+Ml09YVtTbisxMj4+Ml0seXUoSG4sRXIsSGUpLGFbUmU+PjJdPWFbSG4+PjJdLGFbUmUrND4+Ml09YVtIbis0Pj4yXSxhW1JlKzg+PjJdPWFbSG4rOD4+Ml0sYVtSZSsxMj4+Ml09YVtIbisxMj4+Ml0seXUoWnQsRXIsSHI9c3Qt''@;'; put 'put ''TSksYVtWZT4+Ml09YVtadD4+Ml0sYVtWZSs0Pj4yXT1hW1p0KzQ+PjJdLGFbVmUrOD4+Ml09YVtadCs4Pj4yXSxhW1ZlKzEyPj4yXT1hW1p0KzEyPj4yXSx5dShjdCxrdC0uMzMzMzMzMzMzMzMzMzMzMypiLEhyKSxhW3FlPj4yXT1hW2N0Pj4yXSxhW3FlKzQ+PjJdPWFbY3QrND4+Ml0sYVtx''@;'; put 'put ''ZSs4Pj4yXT1hW2N0Kzg+PjJdLGFbcWUrMTI+PjJdPWFbY3QrMTI+PjJdLF9bcT4+M109a3QsX1twZT4+M109c3QsbT0wIT0oMHxhWzk2KygwfGFbKHc9YysxNnwwKT4+Ml0pPj4yXSkmJihmcj0wPT0oMSZhWzExNisoMHxhWzE2KygwfGNyKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOmMrNDh8''@;'; put 'put ''MCkrNDA+PjJdKSk+PjJdKT4+Ml18MCksX1s1Nisodz0wfGFbOTYrKDB8YVt3Pj4yXSk+PjJdKT4+M109LS41KihFdD0rX1soZnI/dysyNHwwOncrMzJ8MCk+PjNdKS1EKyArX1sxNisoZnI9MHxhW1dlPj4yXSk+PjNdLF9bdys2ND4+M109K19bZnIrMjQ+PjNdLGZlW3crODE+PjBdPTEsRXQ+''@;'; put 'put ''cCk/RXQrbTpELEF1KGMsMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdLGJ0LDcsQSksYz1SLEc9RysxfDA7bGU9dXJ9ZnVuY3Rpb24gdWxlKGwsYyxmLHAsbSxBKXttPSttLEF8PTA7dmFyIHEscGUsYmUsT2UsTGUsUmUsVmUsYXQsU3Qsa3Qsc3QsWnQsY3QsYnQsYW4s''@;'; put 'put ''U24sSG4sdXIsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLGdlPTAsSGU9MCxxZT0wLHJ0PTAsV2U9MCxFdD0wLEhyPTAsRXI9MCxmcj0wO2Zvcih1cj1sZSxsZT1sZSsxNjA4MHwwLGJ0PXVyKzgwfDAsYW49dXIrNjR8MCxTbj11cis0OHwwLEhuPXVyKzMyfDAsWnQ9dXIrMTZ8MCxjdD11''@;'; put 'put ''cixPZT0xNisoMHxhWygzPT0oMyZhWyhydD0wfGFbKGx8PTApKygoY3w9MCk8PDIpPj4yXSk+PjJdfDApP3J0OnJ0KzQ4fDApKzQwPj4yXSl8MCxSZT0oYj0rX1syNCsocnQ9MHxhW3J0KzE2Pj4yXSk+PjNdKSsoYmU9K19bMjQrKFdlPTB8YVtPZT4+Ml0pPj4zXSksVmU9KGs9K19bcnQrNjQ+''@;'; put 'put ''PjNdKStiZSxnZT0oTGU9K19bcnQrMTY+PjNdKyhIZT0rX1tXZSsxNj4+M10pKT49KEhlPStfW3J0KzU2Pj4zXStIZSk/MTotMSxNPS41KitfW1dlKzgwPj4zXSxxZT0oKHFlPS41KihwPStwKS8rKDB8KGZ8PTApKSk+Mj9xZToyKSorKDB8KChydD02Nz09KDB8b0QoMHxYdFtydCs0OT4+MF0s''@;'; put 'put ''MHxYdFtydCs4OT4+MF0pKSk/MC1nZXwwOmdlKSksZ2U9YnQrOHwwLHJ0PWJ0KzE2fDAsV2U9YnQrMzJ8MCxhdD1idCs0OHwwLFN0PS41KihIZStMZSksa3Q9YnQrNjR8MCxzdD1idCs4MHwwLHE9YnQrOTZ8MCxwZT1idCsxMDR8MCxwPU0sdz0wLGI9TTwoYj0zKihiK00pKT9NOmIsaz1NPChr''@;'; put 'put ''PTMqKGsrTSkpP006ayxSPTA7ISgoMHxSKT49KDB8ZikpOylHPWMrMXwwLEQ9MHxhW2wrKGM8PDIpPj4yXSxNPXArbSxiKz1tLGsrPW0sdys9cWUsX1tidD4+M109TGUsX1tnZT4+M109UmUseXUoYW4sSHI9dytMZSxSZS0uMzMzMzMzMzMzMzMzMzMzMypiKSxhW3J0Pj4yXT1hW2FuPj4yXSxh''@;'; put 'put ''W3J0KzQ+PjJdPWFbYW4rND4+Ml0sYVtydCs4Pj4yXT1hW2FuKzg+PjJdLGFbcnQrMTI+PjJdPWFbYW4rMTI+PjJdLHl1KFNuLEhyLEVyPWJlLU0pLGFbV2U+PjJdPWFbU24+PjJdLGFbV2UrND4+Ml09YVtTbis0Pj4yXSxhW1dlKzg+PjJdPWFbU24rOD4+Ml0sYVtXZSsxMj4+Ml09YVtTbisx''@;'; put 'put ''Mj4+Ml0seXUoSG4sU3QsRXIpLGFbYXQ+PjJdPWFbSG4+PjJdLGFbYXQrND4+Ml09YVtIbis0Pj4yXSxhW2F0Kzg+PjJdPWFbSG4rOD4+Ml0sYVthdCsxMj4+Ml09YVtIbisxMj4+Ml0seXUoWnQsSHI9SGUtdyxFciksYVtrdD4+Ml09YVtadD4+Ml0sYVtrdCs0Pj4yXT1hW1p0KzQ+PjJdLGFb''@;'; put 'put ''a3QrOD4+Ml09YVtadCs4Pj4yXSxhW2t0KzEyPj4yXT1hW1p0KzEyPj4yXSx5dShjdCxIcixWZS0uMzMzMzMzMzMzMzMzMzMzMyprKSxhW3N0Pj4yXT1hW2N0Pj4yXSxhW3N0KzQ+PjJdPWFbY3QrND4+Ml0sYVtzdCs4Pj4yXT1hW2N0Kzg+PjJdLGFbc3QrMTI+PjJdPWFbY3QrMTI+PjJdLF9b''@;'; put 'put ''cT4+M109SGUsX1twZT4+M109VmUscD0wIT0oMHxhWzk2KygwfGFbKGM9RCsxNnwwKT4+Ml0pPj4yXSkmJihmcj0wPT0oMSZhWzExNisoMHxhWzE2KygwfGNyKDB8YVsoMz09KDMmYVtEPj4yXXwwKT9EOkQrNDh8MCkrNDA+PjJdKSk+PjJdKT4+Ml18MCksX1s2NCsoYz0wfGFbOTYrKDB8YVtj''@;'; put 'put ''Pj4yXSk+PjJdKT4+M109LS41KihFdD0rX1soZnI/YyszMnwwOmMrMjR8MCk+PjNdKS1NKyArX1syNCsoZnI9MHxhW09lPj4yXSk+PjNdLF9bYys1Nj4+M109K19bZnIrMTY+PjNdLGZlW2MrODE+PjBdPTEsRXQ+bSk/RXQrcDpNLEF1KEQsMHxhWygyPT0oMyZhW0Q+PjJdfDApP0Q6RCstNDh8''@;'; put 'put ''MCkrNDA+PjJdLGJ0LDcsQSksYz1HLFI9UisxfDA7bGU9dXJ9ZnVuY3Rpb24gb0QobCxjKXtsfD0wLGN8PTA7dmFyIGY9MDtmb3IoZj0wOzspe2lmKCgwfGYpPj04KXtjPS0xO2JyZWFrfWlmKCgwfGFbMjIwNDQrKGY8PDIpPj4yXSk9PSgwfGMpKXtjPWY7YnJlYWt9Zj1mKzF8MH1mb3IoZj0w''@;'; put 'put ''Ozspe2lmKCgwfGYpPj04KXtmPS0xO2JyZWFrfWlmKCgwfGFbMjIwNDQrKGY8PDIpPj4yXSk9PSgwfGwpKWJyZWFrO2Y9ZisxfDB9cmV0dXJuIDB8KChmfGN8MCk8MD8wOjB8YVsyMjA3NisoZjw8NSkrKGM8PDIpPj4yXSl9ZnVuY3Rpb24geXUobCxjLGYpe2Y9K2YsX1sobHw9MCk+PjNdPWM9''@;'; put 'put ''K2MsX1tsKzg+PjNdPWZ9ZnVuY3Rpb24gdk4obCl7bHw9MDt2YXIgYz0wLGY9MDswIT0oMHxhWzQ3MjAzXSl8MCE9KDB8YVs0NzIwMl0pJiYoMHwoZj0wfGFbMTAwKygwfGFbKGM9bCsxNnwwKT4+Ml0pPj4yXSkmJjA9PSgwfGZlW2YrODE+PjBdKSYmMHx2ayhsLDEpJiZuNChmPTB8Y3IoMHxh''@;'; put 'put ''WygzPT0oMyZhW2w+PjJdfDApP2w6bCs0OHwwKSs0MD4+Ml0pLDB8YVsxMDArKDB8YVtjPj4yXSk+PjJdKSwwfChmPTB8YVsxMDQrKDB8YVtjPj4yXSk+PjJdKSYmMD09KDB8ZmVbZis4MT4+MF0pJiYwfHZrKGwsMCkmJm40KGY9MHxjcigwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpsKzQ4fDAp''@;'; put 'put ''KzQwPj4yXSksMHxhWzEwNCsoMHxhW2M+PjJdKT4+Ml0pKX1mdW5jdGlvbiB2ayhsLGMpe2N8PTA7dmFyIEcsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLHE9MDtHPWxlLGxlPWxlKzk2fDAsRD1HKzMyfDAsaz1HKzE2fDAsTT1HLEE9MTYrKGx8PTApfDA7ZG97aWYo''@;'; put 'put ''NiE9KDB8ZmVbMTEyKygwfGFbQT4+Ml0pPj4wXSkpe2lmKDA9PSgwfChmPTB8YVs0NzIwM10pKXx8MD09KDB8ZmVbKDB8SG8obCxmKSk+PjBdKSl7aWYoIShmPTB8YVs0NzIwMl0pKXtmPTA7YnJlYWt9aWYoISgwfGZlWygwfEhvKGwsZikpPj4wXSkpe2Y9MDticmVha319aWYoUj0wfGFbQT4+''@;'; put 'put ''Ml0sUj0wfGFbKChjPWM8PDI0Pj4yND09MCk/UisxMDR8MDpSKzEwMHwwKT4+Ml0sZj0wfFQ3KGwpKXtiPTB8YVtmPj4yXTtkb3tpZihjKXtpZigwfGFbYis4Pj4yXSl7dz0rX1soZj0wfGFbYj4+Ml0pPj4zXSxtPStfW2IrMTY+PjNdLGY9Zis4fDAscD0rX1tiKzI0Pj4zXTticmVha31mb3Io''@;'; put 'put ''bT0rX1soZj0wfGFbYj4+Ml0pPj4zXSxwPStfW2YrOD4+M10sZj0wOzQhPSgwfGYpOylhWyhNPUQrKGY8PDQpfDApPj4yXT1hWyhBPSgwfGFbYj4+Ml0pKyhmPDw0KXwwKT4+Ml0sYVtNKzQ+PjJdPWFbQSs0Pj4yXSxhW00rOD4+Ml09YVtBKzg+PjJdLGFbTSsxMj4+Ml09YVtBKzEyPj4yXSxm''@;'; put 'put ''PWYrMXwwO3d1KGssRCwzLC4xLDAsMCksdz0rX1trPj4zXSxmPWsrOHwwfWVsc2V7aWYoQT1iKyg0OCooYz0oMHxhW2YrND4+Ml0pLTF8MCl8MCl8MCwwfGFbYisoNDgqY3wwKSsxMj4+Ml0pe3c9K19bKEQ9MHxhW0E+PjJdKSsoKGY9KDB8YVtiKyg0OCpjfDApKzQ+PjJdKS0xfDApPDw0KT4+''@;'; put 'put ''M10sbT0rX1tiKyg0OCpjfDApKzMyPj4zXSxmPUQrKGY8PDQpKzh8MCxwPStfW2IrKDQ4KmN8MCkrNDA+PjNdO2JyZWFrfWZvcihtPStfWyhrPTB8YVtBPj4yXSkrKChmPSgwfGFbKGM9YisoNDgqY3wwKSs0fDApPj4yXSktMXwwKTw8NCk+PjNdLHA9K19baysoZjw8NCkrOD4+M10sZj0wOzQh''@;'; put 'put ''PSgwfGYpOylhWyhrPUQrKGY8PDQpfDApPj4yXT1hWyhiPSgwfGFbQT4+Ml0pKyhmKy00KygwfGFbYz4+Ml0pPDw0KXwwKT4+Ml0sYVtrKzQ+PjJdPWFbYis0Pj4yXSxhW2srOD4+Ml09YVtiKzg+PjJdLGFbaysxMj4+Ml09YVtiKzEyPj4yXSxmPWYrMXwwO3d1KE0sRCwzLC45LDAsMCksdz0r''@;'; put 'put ''X1tNPj4zXSxmPU0rOHwwfX13aGlsZSgwKTtxPStVbCgrKCtfW2Y+PjNdLXApLCsody1tKSkscT0uMDE3NDUzMjkyNTE5OTQzMjk1KitNbChsLDB8YVs0NzIwM10sLTI1LC0xODApK3Esdz0xMCorTWwobCwwfGFbNDcyMDJdLDEsMCksX1tSKzU2Pj4zXT13KitoYSgrcSkrbSxfW1IrNjQ+PjNd''@;'; put 'put ''PStEYSgrcSkqdytwLGZlW1IrODE+PjBdPTEsZj0xfWVsc2UgZj0wfWVsc2UgZj0wfXdoaWxlKDApO3JldHVybiBsZT1HLDB8Zn1mdW5jdGlvbiBUNyhsKXt2YXIgcCxBLGM9MCxmPTAsbT0wO2ZvcihBPWxlLGxlPWxlKzE2fDAscD1BLGM9bHw9MDshKDB8KGM9MHxhWzgrKGY9MHxhW2MrMTY+''@;'; put 'put ''PjJdKT4+Ml0pKTspe2lmKCEoMHxmZVtmKzExMj4+MF0pKXttPTU7YnJlYWt9Yz0wfGFbZisxMTY+PjJdfXJldHVybiA1PT0oMHxtKSYmKG09MHx0aSgwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpsKzQ4fDApKzQwPj4yXSksYz0wfHRpKDB8YVsoMj09KDMmYVtsPj4yXXwwKT9sOmwrLTQ4fDAp''@;'; put 'put ''KzQwPj4yXSksYVtwPj4yXT1tLGFbcCs0Pj4yXT1jLCRyKDEsMTA2NTc5LHApLGM9MCksbGU9QSwwfGN9ZnVuY3Rpb24gdUoobCxjLGYpe2x8PTA7dmFyIHAsbSxBLHcsYixrLE0sRCxSLHEscGUsZ2UsYmUsRz0wO3BlPWxlLGxlPWxlKzk2fDAsaz1wZSs4MHwwLE09cGUrNjR8MCxEPXBlKzQ4''@;'; put 'put ''fDAscT1wZSxiPTB8aXRbMTM2KygwfGFbMTYrKGN8PTApPj4yXSk+PjFdLGZ1bmN0aW9uIGNKKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIG0sQSx3LHA9MCxiPTAsaz0wLE09MDt3PWxlLGxlPWxlKzMyfDAsbT13LHA9MHxhWyhrPTB8YVsobHw9MCk+PjJdKT4+Ml0sYj0wfGFbays4Pj4yXSxhWyhB''@;'; put 'put ''PXcrMTZ8MCk+PjJdPWFbKE09aysxNnwwKT4+Ml0sYVtBKzQ+PjJdPWFbTSs0Pj4yXSxhW0ErOD4+Ml09YVtNKzg+PjJdLGFbQSsxMj4+Ml09YVtNKzEyPj4yXSxhW20+PjJdPWFbKGs9ayszMnwwKT4+Ml0sYVttKzQ+PjJdPWFbays0Pj4yXSxhW20rOD4+Ml09YVtrKzg+PjJdLGFbbSsxMj4+''@;'; put 'put ''Ml09YVtrKzEyPj4yXSxiPyhhW2M+PjJdPWFbQT4+Ml0sYVtjKzQ+PjJdPWFbQSs0Pj4yXSxhW2MrOD4+Ml09YVtBKzg+PjJdLGFbYysxMj4+Ml09YVtBKzEyPj4yXSk6KGFbYz4+Ml09YVtwPj4yXSxhW2MrND4+Ml09YVtwKzQ+PjJdLGFbYys4Pj4yXT1hW3ArOD4+Ml0sYVtjKzEyPj4yXT1h''@;'; put 'put ''W3ArMTI+PjJdKSxwPTB8YVsoYj0wfGFbbD4+Ml0pKyg0OCooaz0oMHxhW2wrND4+Ml0pLTF8MCl8MCk+PjJdLGw9MHxhW2IrKDQ4Kmt8MCkrND4+Ml0sTT0wfGFbYisoNDgqa3wwKSsxMj4+Ml0sYVtBPj4yXT1hWyhjPWIrKDQ4Kmt8MCkrMTZ8MCk+PjJdLGFbQSs0Pj4yXT1hW2MrND4+Ml0s''@;'; put 'put ''YVtBKzg+PjJdPWFbYys4Pj4yXSxhW0ErMTI+PjJdPWFbYysxMj4+Ml0sYVttPj4yXT1hWyhrPWIrKDQ4Kmt8MCkrMzJ8MCk+PjJdLGFbbSs0Pj4yXT1hW2srND4+Ml0sYVttKzg+PjJdPWFbays4Pj4yXSxhW20rMTI+PjJdPWFbaysxMj4+Ml0sTT8oYVtmPj4yXT1hW20+PjJdLGFbZis0Pj4y''@;'; put 'put ''XT1hW20rND4+Ml0sYVtmKzg+PjJdPWFbbSs4Pj4yXSxhW2YrMTI+PjJdPWFbbSsxMj4+Ml0pOihhW2Y+PjJdPWFbKE09cCsobCstMTw8NCl8MCk+PjJdLGFbZis0Pj4yXT1hW00rND4+Ml0sYVtmKzg+PjJdPWFbTSs4Pj4yXSxhW2YrMTI+PjJdPWFbTSsxMj4+Ml0pLGxlPXd9KDB8YVs4Kygw''@;'; put 'put ''fGFbKGM9MTYrKGZ8PTApfDApPj4yXSk+PjJdLFI9cGUrMzJ8MCxHPXBlKzE2fDApLGdlPShwPStfW1I+PjNdKS0obT0rX1tHPj4zXSksYmU9KEE9K19bUis4Pj4zXSktKHc9K19bRys4Pj4zXSk7ZTpkb3tpZihiZSpiZStnZSpnZTwxZS02KWFbRD4+Ml09YVtSPj4yXSxhW0QrND4+Ml09YVtS''@;'; put 'put ''KzQ+PjJdLGFbRCs4Pj4yXT1hW1IrOD4+Ml0sYVtEKzEyPj4yXT1hW1IrMTI+PjJdO2Vsc2Ugc3dpdGNoKDE0JmIpe2Nhc2UgNDpjYXNlIDEwOl9bTT4+M109LjUqKG0rcCksX1tNKzg+PjNdPS41Kih3K0EpLEc9MHxhWzgrKDB8YVtjPj4yXSk+PjJdLGFbaz4+Ml09YVtNPj4yXSxhW2srND4+''@;'; put 'put ''Ml09YVtNKzQ+PjJdLGFbays4Pj4yXT1hW00rOD4+Ml0sYVtrKzEyPj4yXT1hW00rMTI+PjJdLHBEKHEsRyxrKSxhW0Q+PjJdPWFbcT4+Ml0sYVtEKzQ+PjJdPWFbcSs0Pj4yXSxhW0QrOD4+Ml09YVtxKzg+PjJdLGFbRCsxMj4+Ml09YVtxKzEyPj4yXTticmVhayBlO2RlZmF1bHQ6Y2xlKEQs''@;'; put 'put ''MHxhWzgrKDB8YVtjPj4yXSk+PjJdLFIsRyk7YnJlYWsgZX19d2hpbGUoMCk7YVtsPj4yXT1hW0Q+PjJdLGFbbCs0Pj4yXT1hW0QrND4+Ml0sYVtsKzg+PjJdPWFbRCs4Pj4yXSxhW2wrMTI+PjJdPWFbRCsxMj4+Ml0sbGU9cGV9ZnVuY3Rpb24gY2xlKGwsYyxmLHApe2x8PTAsZnw9MCxwfD0w''@;'; put 'put ''O3ZhciBnZSxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxiZT0wO2ZvcihnZT0wfGFbNCsoY3w9MCk+PjJdLEE9MCxtPTA7ISgoMHxtKT49KDB8Z2UpKTspe2ZvcihrPTB8YVsoTT0wfGFbYz4+Ml0pKyg0OCptfDApPj4yXSxNPTB8YVtNKyg0OCptfDApKzQ+''@;'; put 'put ''PjJdLHc9MyxiPTA7ISgoMHx3KT49KDB8TSkpOylwZT0rX1trKyhiPDw0KT4+M10tK19baysodzw8NCk+PjNdLHE9K19baysoYjw8NCkrOD4+M10tK19baysodzw8NCkrOD4+M10sdz13KzN8MCxiPWIrM3wwLEE9K0QwKCsocSpxK3BlKnBlKSkrQTttPW0rMXwwfU09MCxBKj0uNTtlOmZvcig7''@;'; put 'put ''Oyl7aWYoKDB8TSk+PSgwfGdlKSl7bT0xNTticmVha31mb3IoYj0wfGFbKGs9MHxhW2M+PjJdKSsoNDgqTXwwKT4+Ml0saz0wfGFbaysoNDgqTXwwKSs0Pj4yXSxtPTMsdz0wOyEoKDB8bSk+PSgwfGspKTspe2lmKChwZT0rRDAoKygoYmU9KHE9K19bYisodzw8NCkrOD4+M10pLShHPStfW2Ir''@;'; put 'put ''KG08PDQpKzg+PjNdKSkqYmUrKHBlPShEPStfW2IrKHc8PDQpPj4zXSktKFI9K19bYisobTw8NCk+PjNdKSkqcGUpKSk+PUEpe209MTI7YnJlYWsgZX1tPW0rM3wwLHc9dyszfDAsQS09cGV9TT1NKzF8MH1pZigxMj09KDB8bSkpcmV0dXJuIF9bZj4+M109RCxfW2YrOD4+M109cSxfW3A+PjNd''@;'; put 'put ''PVIsX1twKzg+PjNdPUcsX1tsPj4zXT0oKGJlPXBlLUEpKkQrUipBKS9wZSx2b2lkKF9bbCs4Pj4zXT0oYmUqcStHKkEpL3BlKTsxNT09KDB8bSkmJlByKDEzODcxMiwxMDY1MTQsMTMxNiwxMDY2NDEpfWZ1bmN0aW9uIHRnKGwsYyxmLHApe3ZOKGN8PTApfWZ1bmN0aW9uIGZsZShsLGMsZixw''@;'; put 'put ''LG0pe2N8PTAsZj0rZixwfD0wLG18PTA7dmFyIFdlLGF0LFN0LGt0LHN0LEV0LFp0LGN0LEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTAsYnQ9MDtmb3IoWnQ9MHxmdW5jdGlvbiBobGUo''@;'; put 'put ''bCl7bHw9MDt2YXIgbSxBLHcsYixrLE0sRCxSLEcscSxwZSxjPTAsZj0wLHA9MCxnZT0wLGJlPTAsT2U9MDtwZT1sZSxsZT1sZSsxNDR8MCxiPXBlKzEyOHwwLHc9cGUrMTEyfDAsaz1wZSs5NnwwLE09cGUrNjR8MCxEPXBlLFI9cGUrODB8MCxHPTB8ZnVuY3Rpb24gZkooKXt2YXIgbDtyZXR1''@;'; put 'put ''cm4gbD0wfHZyKDEyKSxhW2wrND4+Ml09MCxhW2wrOD4+Ml09MmUzLGFbbD4+Ml09MHx2cigxMjhlMyksMHxsfSgpLHE9MHxhW2wrND4+Ml0sYVtiPj4yXT1hWyhtPTB8YVtsPj4yXSk+PjJdLGFbYis0Pj4yXT1hW20rND4+Ml0sYVtiKzg+PjJdPWFbbSs4Pj4yXSxhW2IrMTI+PjJdPWFbbSsx''@;'; put 'put ''Mj4+Ml0saEooRyxiLDApLGFbKEE9RCs0OHwwKT4+Ml09YVttPj4yXSxhW0ErND4+Ml09YVttKzQ+PjJdLGFbQSs4Pj4yXT1hW20rOD4+Ml0sYVtBKzEyPj4yXT1hW20rMTI+PjJdLGY9MCxjPTA7ZTpmb3IoO3A9ZiszfDAsISgoMHxwKT49KDB8cSkpOyl7Zm9yKGFbRD4+Ml09YVtBPj4yXSxh''@;'; put 'put ''W0QrND4+Ml09YVtBKzQ+PjJdLGFbRCs4Pj4yXT1hW0ErOD4+Ml0sYVtEKzEyPj4yXT1hW0ErMTI+PjJdLGw9MTs0IT0oMHxsKTspYVsoZ2U9RCsobDw8NCl8MCk+PjJdPWFbKGJlPW0rKGwrZjw8NCl8MCk+PjJdLGFbZ2UrND4+Ml09YVtiZSs0Pj4yXSxhW2dlKzg+PjJdPWFbYmUrOD4+Ml0s''@;'; put 'put ''YVtnZSsxMj4+Ml09YVtiZSsxMj4+Ml0sbD1sKzF8MDtmb3IoYVtrPj4yXT1hW0Q+PjJdLGFbays0Pj4yXT1hW0QrND4+Ml0sYVtrKzg+PjJdPWFbRCs4Pj4yXSxhW2srMTI+PjJdPWFbRCsxMj4+Ml0sbD0xOzspe2lmKDIxPT0oMHxsKSl7Zj1wO2NvbnRpbnVlIGV9d3UoUixELDMsLjA1Kiso''@;'; put 'put ''MHxsKSwwLDApLGFbTT4+Ml09YVtSPj4yXSxhW00rND4+Ml09YVtSKzQ+PjJdLGFbTSs4Pj4yXT1hW1IrOD4+Ml0sYVtNKzEyPj4yXT1hW1IrMTI+PjJdLGFbdz4+Ml09YVtrPj4yXSxhW3crND4+Ml09YVtrKzQ+PjJdLGFbdys4Pj4yXT1hW2srOD4+Ml0sYVt3KzEyPj4yXT1hW2srMTI+PjJd''@;'; put 'put ''LGFbYj4+Ml09YVtSPj4yXSxhW2IrND4+Ml09YVtSKzQ+PjJdLGFbYis4Pj4yXT1hW1IrOD4+Ml0sYVtiKzEyPj4yXT1hW1IrMTI+PjJdLE9lPStwbGUodyxiKStjLGFbYj4+Ml09YVtNPj4yXSxhW2IrND4+Ml09YVtNKzQ+PjJdLGFbYis4Pj4yXT1hW00rOD4+Ml0sYVtiKzEyPj4yXT1hW00r''@;'; put 'put ''MTI+PjJdLGhKKEcsYixPZSksYVtrPj4yXT1hW00+PjJdLGFbays0Pj4yXT1hW00rND4+Ml0sYVtrKzg+PjJdPWFbTSs4Pj4yXSxhW2srMTI+PjJdPWFbTSsxMj4+Ml0sbD1sKzF8MCxjPU9lfX1yZXR1cm4gZnVuY3Rpb24gZ2xlKGwpe3ZhciBjOygwfGFbOCsobHw9MCk+PjJdKT4oMHwoYz0w''@;'; put 'put ''fGFbbCs0Pj4yXSkpJiYoYVtsPj4yXT0wfFYwKDB8YVtsPj4yXSxjPDw2KSl9KEcpLGxlPXBlLDB8R30obHw9MCksV2U9K19bKGN0PTB8YVtadD4+Ml0pKygoc3Q9KEV0PTB8YVtadCs0Pj4yXSktMXwwKTw8NikrMTY+PjNdLGF0PSsoMHxFdCksU3Q9Mj09KDB8bSksa3Q9MCE9KDB8cCksRD0w''@;'; put 'put ''LHc9MCxBPTAsaz0wLE09MDshKCgwfEQpPj0oMHxFdCkpOyl7bD1+fithRCgrKEQrLTF8MCksYXQpLGJ0PX5+K2FEKCsoMHwocnQ9RCsxfDApKSxhdCksYmU9K19bKGdlPWN0KyhEPDw2KSsxNnwwKT4+M10sT2U9Y3QrKEQ8PDYpKzI0fDAsTGU9Y3QrKEQ8PDYpKzMyfDAsUmU9Y3QrKEQ8PDYp''@;'; put 'put ''KzQwfDAsSGU9Y3QrKEQ8PDYpKzQ4fDAsVmU9Y3QrKEQ8PDYpKzU2fDAsYj0rQU4oK19bY3QrKGJ0PDw2KSs4Pj4zXS0oaz0rX1socWU9Y3QrKEQ8PDYpKzh8MCk+PjNdKSwrX1tjdCsoYnQ8PDYpPj4zXS0oTT0rX1soUj1jdCsoRDw8Nil8MCk+PjNdKSkscT0rQU4oK19bY3QrKGw8PDYpKzg+''@;'; put 'put ''PjNdLWssK19bY3QrKGw8PDYpPj4zXS1NKSxwZT0rdXdbNyZjXShiZSxXZSxmKSxsPTA9PSgwfEQpO2Rve2lmKGx8KDB8RCk9PSgwfHN0KSl7aWYobCl7aWYoQT1iKzEuNTcwNzk2MzI2Nzk0ODk2NiwhU3Qpe2w9MCxHPUEsdz1wZTticmVha31sPTAsRz1BLHc9cGUsay09K0RhKCtiKSpwZSxN''@;'; put 'put ''LT0raGEoK2IpKnBlO2JyZWFrfWlmKEE9cSstMS41NzA3OTYzMjY3OTQ4OTY2LCFTdCl7bD0wLEc9QSx3PXBlO2JyZWFrfWw9MCxHPUEsdz1wZSxrLT0rRGEoK3EpKnBlLE0tPStoYSgrcSkqcGU7YnJlYWt9Yj0oRz0xLjU3MDc5NjMyNjc5NDg5NjYtLjUqKChHPWItcSk8MD9HKzYuMjgzMTg1''@;'; put 'put ''MzA3MTc5NTg2OkcpKSsoQT1iKzEuNTcwNzk2MzI2Nzk0ODk2Niksa3R8KHc9MD09KHc9K2hhKCtHKSk/MDpwZS93KT4xMCpwZT8ocT0rYUQocSstMS41NzA3OTYzMjY3OTQ4OTY2LDYuMjgzMTg1MzA3MTc5NTg2KSxsPTEsRz0rYUQoQSw2LjI4MzE4NTMwNzE3OTU4Niksdz1wZSxBPXEpOihs''@;'; put 'put ''PTAsRz1iLEE9Yil9d2hpbGUoMCk7X1tSPj4zXT1NLF9bcWU+PjNdPWssX1tnZT4+M109YmUsZmVbT2U+PjBdPTEwOCxfW0xlPj4zXT1BLF9bUmU+PjNdPXcsYVtIZT4+Ml09bCxfW1ZlPj4zXT1HLEQ9cnR9Zm9yKFI9MHx2cigxMiksbD0wOyEoKDB8bCk+PSgwfEV0KSk7KU09K19bY3QrKGw8''@;'; put 'put ''PDYpPj4zXSxrPStfW2N0KyhsPDw2KSs4Pj4zXSx3PStfW2N0KyhsPDw2KSs0MD4+M10sYnQ9MHxhW2N0KyhsPDw2KSs0OD4+Ml0sYj0rX1tjdCsobDw8NikrNTY+PjNdLEk3KFIsK2hhKCsoQT0rX1tjdCsobDw8NikrMzI+PjNdKSkqdytNLCtEYSgrQSkqdytrKSwwfGJ0JiZ5TihNLGssdywx''@;'; put 'put ''LEEsYixwLFIpLGw9bCsxfDA7Zm9yKGI9QSszLjE0MTU5MjY1MzU4OTc5MywoRD0xPT0oMHxtKSk/d04oUixNLGssdyxBLGIpOihJNyhSLCtoYSgrYikqdytNLCtEYSgrYikqdytrKSxBPWIpLGw9RXQrLTJ8MCxiPU07ISgoMHxsKTw9LTEpOylNPStfW2N0KyhsPDw2KT4+M10saz0rX1tjdCso''@;'; put 'put ''bDw8NikrOD4+M10sdz0rX1tjdCsobDw8NikrNDA+PjNdLGJ0PTB8YVtjdCsobDw8NikrNDg+PjJdLEE9K19bY3QrKGw8PDYpKzMyPj4zXSszLjE0MTU5MjY1MzU4OTc5MyxJNyhSLCtoYSgrKGI9K19bY3QrKGw8PDYpKzU2Pj4zXSszLjE0MTU5MjY1MzU4OTc5MykpKncrTSwrRGEoK2IpKncr''@;'; put 'put ''ayksMHxidCYmeU4oTSxrLHcsMCxBLGIscCxSKSxsPWwrLTF8MCxiPU07cmV0dXJuIEQmJndOKFIsYixrLHcsQSxBKzMuMTQxNTkyNjUzNTg5NzkzKSxmdW5jdGlvbiBkbGUobCl7RnQoMHxhWyhsfD0wKT4+Ml0pLEZ0KGwpfShadCksMHxSfWZ1bmN0aW9uIGFEKGwsYyl7dmFyIGY7cmV0dXJu''@;'; put 'put ''IGY9KGw9K2wpLStjZigrbC8oYz0rYykpKmMsKyghKGw8MCkmIShsPj1jKT9sOmYpfWZ1bmN0aW9uIEFOKGwsYyl7cmV0dXJuIDA9PShsPStsKSYwPT0oYz0rYyk/bD0wOihsPStVbCgrbCwrYykpPj0wfHwobCs9Ni4yODMxODUzMDcxNzk1ODYpLCtsfWZ1bmN0aW9uIEk3KGwsYyxmKXtjPStj''@;'; put 'put ''LGY9K2Y7dmFyIHA9MCxtPTA7KDB8KHA9MHxhWyhsfD0wKT4+Ml0pKTwoMHxhWyhtPWwrNHwwKT4+Ml0pP209MHxhW2wrOD4+Ml06KGFbbT4+Ml09MmUzLG09MHxWMCgwfGFbKHA9bCs4fDApPj4yXSwzMmUzKSxhW3A+PjJdPW0scD0wfGFbbD4+Ml0pLGFbbD4+Ml09cCsxLF9bbSsocDw8NCk+''@;'; put 'put ''PjNdPWMsX1ttKyhwPDw0KSs4Pj4zXT1mfWZ1bmN0aW9uIHlOKGwsYyxmLHAsbSxBLHcsYil7dmFyIGs7bD0rbCxjPStjLGY9K2YsbT0rbSxBPStBLHd8PTAsYnw9MCxrPShwPTA9PSgwfChwfD0wKSkpP206QTtkb3tpZigxPT0oMHx3KSl7aWYoKG09KG09KHA/QTptKS1rKTw9LjAwMTc0NTMy''@;'; put 'put ''OTI1MTk5NDMyOTY/bSs2LjI4MzE4NTMwNzE3OTU4NjptKTwzLjE0MTU5MjY1MzU4OTc5Myl7d04oYixsLGMsZixtK2ssayk7YnJlYWt9STcoYiwraGEoK2spKmYrbCwrRGEoK2spKmYrbCk7YnJlYWt9STcoYiwraGEoK2spKmYrbCwrRGEoK2spKmYrbCl9d2hpbGUoMCl9ZnVuY3Rpb24gd04o''@;'; put 'put ''bCxjLGYscCxtLEEpe2M9K2MsZj0rZixwPStwLEE9K0E7dmFyIHc9MCxiPTA7STcobHw9MCwraGEoKyhtPSttKSkqcCtjLCtEYSgrbSkqcCtmKTtlOmRve2lmKDAhPXApe2Zvcig7QT5tOylBKz0tNi4yODMxODUzMDcxNzk1ODY7Zm9yKEE9bS1BO0E+Ni4yODMxODUzMDcxNzk1ODY7KUErPS02''@;'; put 'put ''LjI4MzE4NTMwNzE3OTU4Njtmb3IoQSo9LjA1MjYzMTU3ODk0NzM2ODQyLHc9MTs7KXtpZigyMD09KDB8dykpYnJlYWsgZTtJNyhsLCtoYSgrKGI9bS1BKisoMHx3KSkpKnArYywrRGEoK2IpKnArZiksdz13KzF8MH19fXdoaWxlKDApfWZ1bmN0aW9uIGhKKGwsYyxmKXtjfD0wLGY9K2Y7dmFy''@;'; put 'put ''IG0sQSx3LHA9MDsoMHwocD0wfGFbKHc9NCsobHw9MCl8MCk+PjJdKSk8KDB8KEE9MHxhWyhtPWwrOHwwKT4+Ml0pKT9sPTB8YVtsPj4yXTooYVttPj4yXT1BPDwxLHA9MHxWMCgwfGFbbD4+Ml0sQTw8NyksYVtsPj4yXT1wLGw9cCxwPTB8YVt3Pj4yXSksX1tsKyhwPDw2KT4+M109K19bYz4+''@;'; put 'put ''M10sX1tsKyhwPDw2KSs4Pj4zXT0rX1tjKzg+PjNdLGFbdz4+Ml09cCsxLF9bbCsocDw8NikrMTY+PjNdPWZ9ZnVuY3Rpb24gcGxlKGwsYyl7dmFyIGYscDtyZXR1cm4rICtEMCgrKChwPStfWzgrKGx8PTApPj4zXS0rX1s4KyhjfD0wKT4+M10pKnArKGY9K19bbD4+M10tK19bYz4+M10pKmYp''@;'; put 'put ''KX1mdW5jdGlvbiBsRChsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIEEsdyxiLE0scD0wLG09MCxrPTA7TT1sZSxsZT1sZSsxNnwwLGs9TSs4fDAsYj1NLGFbKEE9TSsxMnwwKT4+Ml09MCwodz0wfGFbZis0Pj4yXSl8fFByKDEwNjY1OCwxMDY2NjksMjAzLDEwNjY4MCksKHA9MHxhW3c+PjJd''@;'; put 'put ''KXx8UHIoMTA2Njk0LDEwNjY2OSwyMDYsMTA2NjgwKSwwfGFbKG09dys4fDApPj4yXXx8KGFbbT4+Ml09MHxmdW5jdGlvbiBtbGUobCl7bHw9MDt2YXIgYztyZXR1cm4gMCE9KDB8KGM9MHxhWzQ3MzAxXSkpJiYwPT0oMHx5MChjLGwpKT9sPTB8YVs0NzMxMF06KEZ0KGMpLGFbNDczMDFdPTB8''@;'; put 'put ''cmEobCksbD0wfG53KDE4OTIwNCwyMjMzMiwzNSwzNiw5NSksYVs0NzMxMF09bCksMHxsfShwKSksKDB8ZnVuY3Rpb24gTlIobCxjLGYpe3ZhciBwPTA7cmV0dXJuIDB8KDAhPSgwfChsPTB8YVsxNDgrKGx8PTApPj4yXSkpJiYwIT0oMHwocD0wfGFbbD4+Ml0pKT8wfEJpWzEyNyZwXShjfD0w''@;'; put 'put ''LGZ8PTApOjApfShjLGYscD0wKSk8PDI0Pj4yNHx8ZnVuY3Rpb24gdmxlKGwsYyl7Y3w9MDt2YXIgQSxmPTAscD0wLG09MCx3PTAsYj0wO2lmKGY9MHxhWyh3PTB8YVs0KyhsfD0wKT4+Ml0pPj4yXSxBPStfW3crMTY+PjNdLF9bKHc9bCszMnwwKT4+M109MCxfW2wrNDA+PjNdPTEuMipBLF9b''@;'; put 'put ''bCsxNj4+M109MCxfW2wrMjQ+PjNdPS4xKkEsYVtsKzg+PjJdPTAsYVtsKzEyPj4yXT0wLDB8bDQoZiwxMDY3NzEsNCk/MCE9KDB8bDQoZiwxMDY3NzYsNSkpJiYwIT0oMHxsNChmLDEwNjc4Miw5KSk/KG09NDI0OCxmPTEwNjc5Mik6KG09ODM0NCxmPTEwNjgyOCk6KG09NjI5NixmPTEwNjgw''@;'; put 'put ''OSksMHxjJiYoYVtjPj4yXT1mKSwwfChmPTB8YVtsPj4yXSkpe2ZvcihwPTA7KGw9MHxmZVtmPj4wXSk8PDI0Pj4yNDspX1t3Pj4zXT1iPXArICtfW20rKCgyNTUmbCk8PDMpPj4zXSxmPWYrMXwwLHA9YjtfW3c+PjNdPXAqQX19KGYscCk7ZG97aWYoMHxwKXtpZihjPTB8YVsxNTcxMl0scD0w''@;'; put 'put ''fGFbdz4+Ml0sbT0wfGFbQT4+Ml0pe2FbYj4+Ml09cCxhW2IrND4+Ml09bSxUMChjLDEwNjcwNSxiKTticmVha31hW2s+PjJdPXAsVDAoYywxMDY3Mzcsayk7YnJlYWt9fXdoaWxlKDApO2FbbD4+Ml09YVsoaz1mKzMyfDApPj4yXSxhW2wrND4+Ml09YVtrKzQ+PjJdLGFbbCs4Pj4yXT1hW2sr''@;'; put 'put ''OD4+Ml0sYVtsKzEyPj4yXT1hW2srMTI+PjJdLGxlPU19ZnVuY3Rpb24gdUQobCl7dmFyIGMsZjtyZXR1cm4gbHw9MCxjPTB8dnIoMTYpLGY9MHx2cigobD0oMHxsKT4yP2w6Mik8PDIpLGFbYz4+Ml09ZixhW2MrMTI+PjJdPWYsYVtjKzg+PjJdPWYsYVtjKzQ+PjJdPWYrKGw8PDIpLDB8Y31m''@;'; put 'put ''dW5jdGlvbiBkSihsKXtGdCgwfGFbKGx8PTApPj4yXSksRnQobCl9ZnVuY3Rpb24gRDcobCxjKXt2YXIgZixwO2N8PTAsYVsoZj0xMisobHw9MCl8MCk+PjJdPTQrKHA9MHxhW2Y+PjJdKSxhW3A+PjJdPWMsKDB8YVtmPj4yXSk+Pj4wPj0oMHxhW2wrND4+Ml0pPj4+MCYmKGFbZj4+Ml09YVts''@;'; put 'put ''Pj4yXSl9ZnVuY3Rpb24gY0QobCl7dmFyIGYsYz0wLHA9MDtyZXR1cm4oMHwoYz0wfGFbKGY9OCsobHw9MCl8MCk+PjJdKSkhPSgwfGFbbCsxMj4+Ml0pPyhhW2Y+PjJdPXA9Yys0fDAsYz0wfGFbYz4+Ml0scD4+PjA+PSgwfGFbbCs0Pj4yXSk+Pj4wJiYoYVtmPj4yXT1hW2w+PjJdKSk6Yz0w''@;'; put 'put ''LDB8Y31mdW5jdGlvbiBlcyhsLGMsZixwKXtmfD0wLHB8PTA7dmFyIG0sdyxBPTA7cmV0dXJuIHc9bGUsbGU9bGUrMTZ8MCxtPXcsMCE9KDB8KGN8PTApKSYmMCE9KDB8KEE9MHxIbyhsfD0wLGMpKSkmJjAhPSgwfGZlW0E+PjBdKSYmKGM9MHxrTChBLG0sMTApLGY9KDB8QSk9PSgwfGFbbT4+''@;'; put 'put ''Ml0pP2Y6KDB8Yyk8KDB8cCk/cDpjKSxsZT13LDB8Zn1mdW5jdGlvbiBNbChsLGMsZixwKXtmPStmLHA9K3A7dmFyIG0sdyxBPTAsYj0wO3JldHVybiB3PWxlLGxlPWxlKzE2fDAsbT13LDAhPSgwfChsfD0wKSkmMCE9KDB8KGN8PTApKSYmMCE9KDB8KEE9MHxIbyhsLGMpKSkmJjAhPSgwfGZl''@;'; put 'put ''W0E+PjBdKSYmKGI9K2kzKEEsbSksZj0oMHxBKT09KDB8YVttPj4yXSk/ZjpiPHA/cDpiKSxsZT13LCtmfWZ1bmN0aW9uIENOKGwpe2x8PTA7dmFyIGM9MDtyZXR1cm4oYz0rX1syMzI5M10pPjB8fChjPTA9PShjPStNbChsLDB8c2kobCwwLDEwNzYzOCwwKSwtMSwwKSk/NzI6YyksK2N9ZnVu''@;'; put 'put ''Y3Rpb24gdjIobCxjLGYpe3JldHVybiBmfD0wLDAhPSgwfChsfD0wKSkmMCE9KDB8KGN8PTApKSYmKGY9MHxIbyhsLGMpKSwwfGZ9ZnVuY3Rpb24gQmEobCxjLGYpe3JldHVybiAwIT0oMHwobD0wfHYyKGx8PTAsY3w9MCxmfD0wKSkpJiYwIT0oMHxmZVtsPj4wXSkmJihmPWwpLDB8Zn1mdW5j''@;'; put 'put ''dGlvbiBwSihsLGMsZil7cmV0dXJuIGx8PTAsZnw9MCwwfCgoY3w9MCk/MHx0MSgwfEhvKGwsYykpOjI1NSZmKX1mdW5jdGlvbiB0MShsKXtyZXR1cm4gMHxuZyhsfD0wLDApfWZ1bmN0aW9uIG5nKGwsYyl7Y3w9MDt2YXIgZj0wO3JldHVybiAwIT0oMHwobHw9MCkpJiYoZj0wfGZlW2w+PjBd''@;'; put 'put ''KTw8MjQ+PjI0IT0wJiYoMCE9KDB8eTAobCwxMzczMDgpKSYmMCE9KDB8eTAobCwxMDc2NDkpKT8wIT0oMHx5MChsLDEwNzY1MikpJiYwIT0oMHx5MChsLDEwNzY1NykpPygoZjw8MjQ+PjI0KS00OHwwKT4+PjA8MTAmJihjPTI1NSYoMHxyMyhsKSkpOmM9MTpjPTApLDB8Y31mdW5jdGlvbiBn''@;'; put 'put ''MShsKXtsfD0wO2Zvcih2YXIgYz0wLGY9MDsoMHwoZj0wfGFbKGM9MjIwKygwfGFbbCsxNj4+Ml0pfDApPj4yXSkpIT0oMHxsKSYwIT0oMHxmKTspKGw9MHxhWzIyMCsoMHxhW2YrMTY+PjJdKT4+Ml0pP2FbYz4+Ml09bDpsPWY7cmV0dXJuIDB8bH1mdW5jdGlvbiBmRChsLGMpe3ZhciBmPTAs''@;'; put 'put ''cD0wLG09MCxBPTAsdz0wO3JldHVybigwfChsfD0wKSkhPSgwfChjfD0wKSkmJigwfGFbKHA9MjIwKyhmPTB8YVtsKzE2Pj4yXSl8MCk+PjJdP2w9MHxnMShsKTooYVtwPj4yXT1sLGFbZisyMTY+PjJdPTEpLDB8YVsocD0yMjArKGY9MHxhW2MrMTY+PjJdKXwwKT4+Ml0/KGM9Zj0wfGcxKGMp''@;'; put 'put ''LGY9MHxhW2YrMTY+PjJdKTooYVtwPj4yXT1jLGFbZisyMTY+PjJdPTEpLG09YysxNnwwLGFbKCh3PSgwfGFbMTIwKyhwPTB8YVsoQT1sKzE2fDApPj4yXSk+PjJdKT4oMHxhW2YrMTIwPj4yXSkpP3A6ZikrMjIwPj4yXT1sPXc/YzpsLGFbKHA9MjE2KygwfGFbKHc/bTpBKT4+Ml0pfDApPj4y''@;'; put 'put ''XT0oMHxhW3A+PjJdKSsoMHxhWzIxNisoMHxhWyh3P0E6bSk+PjJdKT4+Ml0pKSwwfGx9ZnVuY3Rpb24gcmcobCl7YVsyMTYrKGw9MHxhWzE2KyhsfD0wKT4+Ml0pPj4yXT0xLGFbbCsyMjA+PjJdPTAsZmVbbCsxNTk+PjBdPTB9ZnVuY3Rpb24ga04obCxjKXtpZihjfD0wLCgwfGcxKGx8PTAp''@;'; put 'put ''KT09KDB8bCkpcmV0dXJuIGFbMjIwKyhsPTB8YVtsKzE2Pj4yXSk+PjJdPWMsdm9pZChhWyhjPTIxNisoMHxhW2MrMTY+PjJdKXwwKT4+Ml09KDB8YVtjPj4yXSkrKDB8YVtsKzIxNj4+Ml0pKTtQcigxMDc2NjksMTA3NjYxLDE5NCwxMDc2ODUpfWZ1bmN0aW9uIGhEKGwsYyl7dmFyIGY7Zj03''@;'; put 'put ''MiorX1s4KyhjPTB8YVsxMzIrKDB8YVsxNisoY3w9MCk+PjJdKT4+Ml0pPj4zXSxfWyhsfD0wKT4+M109NzIqK19bYz4+M10sX1tsKzg+PjNdPWZ9ZnVuY3Rpb24gd3UobCxjLGYscCxtLEEpe2x8PTAsY3w9MCxmfD0wLHA9K3AsbXw9MCxBfD0wO3ZhciBNLEQsUix3PTAsYj0wLGs9MCxHPTA7''@;'; put 'put ''Zm9yKFI9bGUsbGU9bGUrNTc2fDAsRD1SLHc9MDshKCgwfHcpPigwfGYpKTspYVsoaz1EKyh3PDw0KXwwKT4+Ml09YVsoYj1jKyh3PDw0KXwwKT4+Ml0sYVtrKzQ+PjJdPWFbYis0Pj4yXSxhW2srOD4+Ml09YVtiKzg+PjJdLGFbaysxMj4+Ml09YVtiKzEyPj4yXSx3PXcrMXwwO2ZvcihNPTEt''@;'; put 'put ''cCx3PTE7ISgoMHx3KT4oMHxmKSk7KXtmb3IoYj1mLXd8MCxrPXcrLTF8MCxjPTA7ISgoMHxjKT4oMHxiKSk7KV9bRCsoOTYqd3wwKSsoYzw8NCk+PjNdPStfW0QrKDk2Kmt8MCkrKChHPWMrMXwwKTw8NCk+PjNdKnArICtfW0QrKDk2Kmt8MCkrKGM8PDQpPj4zXSpNLF9bRCsoOTYqd3wwKSso''@;'; put 'put ''Yzw8NCkrOD4+M109K19bRCsoOTYqa3wwKSsoRzw8NCkrOD4+M10qcCsgK19bRCsoOTYqa3wwKSsoYzw8NCkrOD4+M10qTSxjPUc7dz13KzF8MH1lOmRve2lmKDB8bSlmb3Iodz0wOzspe2lmKCgwfHcpPigwfGYpKWJyZWFrIGU7YVsoRz1tKyh3PDw0KXwwKT4+Ml09YVsoaz1EKyg5Nip3fDAp''@;'; put 'put ''fDApPj4yXSxhW0crND4+Ml09YVtrKzQ+PjJdLGFbRys4Pj4yXT1hW2srOD4+Ml0sYVtHKzEyPj4yXT1hW2srMTI+PjJdLHc9dysxfDB9fXdoaWxlKDApO2U6ZG97aWYoMHxBKWZvcih3PTA7Oyl7aWYoKDB8dyk+KDB8ZikpYnJlYWsgZTthWyhHPUErKHc8PDQpfDApPj4yXT1hWyhtPUQrKDk2''@;'; put 'put ''KihmLXd8MCl8MCkrKHc8PDQpfDApPj4yXSxhW0crND4+Ml09YVttKzQ+PjJdLGFbRys4Pj4yXT1hW20rOD4+Ml0sYVtHKzEyPj4yXT1hW20rMTI+PjJdLHc9dysxfDB9fXdoaWxlKDApO2FbbD4+Ml09YVsoRz1EKyg5NipmfDApfDApPj4yXSxhW2wrND4+Ml09YVtHKzQ+PjJdLGFbbCs4Pj4y''@;'; put 'put ''XT1hW0crOD4+Ml0sYVtsKzEyPj4yXT1hW0crMTI+PjJdLGxlPVJ9ZnVuY3Rpb24gX2xlKGwpe2x8PTA7dmFyIGM9MCxmPTAscD0wLG09MDtmPTA7ZG97aWYocD0xMDI0KyhjPTB8YVs0NzMxNV0pfDAsKGMtZnwwKTwxMDI0PyhhWzQ3MzE1XT1wLHA9MHxWMCgwfGFbNDczMTZdLHApLGFbNDcz''@;'; put 'put ''MTZdPXAsYz0wfGFbNDczMTVdKTpwPTB8YVs0NzMxNl0sIShjPTB8eWcocCtmfDAsYy1mfDAsbCkpKXttPTY7YnJlYWt9Zj0oMHxVbyhjKSkrZnwwLGM9MHxhWzQ3MzE2XX13aGlsZSgxMCE9KDB8ZmVbYysoZistMSk+PjBdKSk7cmV0dXJuIDY9PSgwfG0pJiYoYz0wfGFbNDczMTZdKSwwfCgo''@;'; put 'put ''MHxmKT4wP2M6MCl9ZnVuY3Rpb24gZEQobCl7bHw9MDt2YXIgcCxjPTAsZj0wO3A9bGUsbGU9bGUrMTZ8MDtkb3tpZigwIT0oMHxsKSYmMCE9KDB8ZmVbbD4+MF0pKXtpZihmPTB8YVs0NzMxOF0sKDB8YVs0NzMxN10pPT0oMHwoYz0wfGFbNDcxMzNdKSkpYz1mO2Vsc2V7aWYoZiYmKEZ0KDB8''@;'; put 'put ''YVtmPj4yXSksRnQoMHxhWzQ3MzE4XSksYVs0NzMxOF09MCxjPTB8YVs0NzEzM10pLGFbNDczMTddPWMsIShjJiYwfGZlW2M+PjBdKSlicmVhaztjPTB8Q2xlKGMpLGFbNDczMThdPWN9aWYoISg0NyE9KDB8ZmVbbD4+MF0pJjAhPSgwfGMpKSlicmVhaztsPTB8Z0ooYywwfGFbNDczMTldLGwp''@;'; put 'put ''O2JyZWFrfWw9MH13aGlsZSgwKTtyZXR1cm4gbGU9cCwwfGx9ZnVuY3Rpb24gQ2xlKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wO2ZvcihwPTAsbT0wLEE9MCxjPTB8cmEobHw9MCksZj0wO2M9MHxsdihjLDEwNzk4NCk7KWw9OCsoQTw8Mil8MCxsPW0/MHxWMChmLGwpOjB8UW4obCksYVts''@;'; put 'put ''KyhBPDwyKT4+Ml09YyxwPXA+Pj4wPihtPTB8VW8oYykpPj4+MD9wOm0sbT1sLEE9QSsxfDAsYz0wLGY9bDtyZXR1cm4gYVttKyhBPDwyKT4+Ml09MCxhWzQ3MzE5XT1wLDB8bX1mdW5jdGlvbiBnSihsLGMsZil7bHw9MDt2YXIgcCxBLG09MCx3PTA7Zm9yKEE9bGUsbGU9bGUrMTZ8MCxwPUEs''@;'; put 'put ''YVs0NzMyMF09MHxVYSh3PTB8YVs0NzMyMF0sMisoY3w9MCkrKDB8VW8oZnw9MCkpfDApOzspe2lmKCEoYz0wfGFbbD4+Ml0pKXtsPTA7YnJlYWt9aWYodz0wfGFbNDczMjBdLGFbcD4+Ml09YyxhW3ArND4+Ml09MTA3OTgyLGFbcCs4Pj4yXT1mLG9vKHcsMTA3OTc1LHApLCEoMHxMY2UoMHxh''@;'; put 'put ''WzQ3MzIwXSw0KSkpe209NDticmVha31sPWwrNHwwfXJldHVybiA0PT0oMHxtKSYmKGw9MHxhWzQ3MzIwXSksbGU9QSwwfGx9ZnVuY3Rpb24gU04obCxjLGYpe2N8PTAsZnw9MDt2YXIgbSxwPTAsQT0wO2ZvcihtPTA9PSgwfChsfD0wKSkscD0wOyhBPTB8YVtjKyhwPDwyKT4+Ml0pJiYobXx8''@;'; put 'put ''KDB8ZmVbbD4+MF0pIT0oMHxmZVtBPj4wXSl8fDAhPSgwfFppKGwsQSkpKTspcD1wKzF8MDtyZXR1cm4gMHxhW2YrKHA8PDIpPj4yXX1mdW5jdGlvbiBwRChsLGMsZil7bHw9MDt2YXIgUixPZSxMZSxSZSxIZSxWZSxxZSxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLEc9MCxxPTAs''@;'; put 'put ''cGU9MCxnZT0wLGJlPTAscnQ9MCxXZT0wO2ZvcihxZT1sZSxsZT1sZSs4MHwwLEhlPXFlKzE2fDAsVmU9cWUsT2U9MHxhWzQrKGN8PTApPj4yXSxMZT0wfGFbYz4+Ml0sUmU9OCsoZnw9MCl8MCxtPTAscD0tMSxBPTFlMzgsYz0tMTshKCgwfG0pPj0oMHxPZSkpOyl7Zm9yKGdlPTB8YVtMZSso''@;'; put 'put ''NDgqbXwwKT4+Ml0sYmU9MHxhW0xlKyg0OCptfDApKzQ+PjJdLHBlPTA7ISgoMHxwZSk+PSgwfGJlKSk7KVdlPShydD0tMT09KDB8cCl8KHE9KEc9K19bZ2UrKHBlPDw0KSs4Pj4zXS0rX1tSZT4+M10pKkcrKHE9K19bZ2UrKHBlPDw0KT4+M10tK19bZj4+M10pKnEpPEEpP3BlOnAscGU9cGUr''@;'; put 'put ''MXwwLGM9cnQ/bTpjLHA9V2UsQT1ydD9xOkE7bT1tKzF8MH1mb3IobT0wfGFbTGUrKDQ4KmN8MCk+PjJdLHA9KHA9cCsoKCgwfHApPT0oKDB8YVtMZSsoNDgqY3wwKSs0Pj4yXSktMXwwKSk8PDMxPj4zMSl8MCktKCgwfHApJTN8MCl8MCxjPTA7NCE9KDB8Yyk7KV9bSGUrKGM8PDQpPj4zXT0r''@;'; put 'put ''X1ttKygoV2U9YytwfDApPDw0KT4+M10sX1tIZSsoYzw8NCkrOD4+M109K19bbSsoV2U8PDQpKzg+PjNdLGM9YysxfDA7Zm9yKGM9VmUrOHwwLEE9MSx3PTAsYj0oRD0rX1tIZSs1Nj4+M10tKFI9K19bUmU+PjNdKSkqRCsoYj0rX1tIZSs0OD4+M10tKHE9K19bZj4+M10pKSpiLGs9KEc9K19b''@;'; put 'put ''SGUrOD4+M10tUikqRysoaz0rX1tIZT4+M10tcSkqazt3dShWZSxIZSwzLEc9LjUqKEErdyksMCwwKSxNPStfW1ZlPj4zXSxEPStfW2M+PjNdLCEoK2VvKCsoay1iKSk8MXx8K2VvKCsoQS13KSk8MWUtNSk7KUQ9KEQtPVIpKkQrKE0tPXEpKk0sQT0oV2U9azxiKT9HOkEsdz1XZT93OkcsYj1X''@;'; put 'put ''ZT9EOmIsaz1XZT9rOkQ7X1tsPj4zXT1NLF9bbCs4Pj4zXT1ELGxlPXFlfWZ1bmN0aW9uIGdEKGwpe3ZhciBmLHAsbSxiLGM9MCxBPTAsdz0wLGs9MDtjPStNbChsfD0wLDB8YVs0NzE0Nl0sLjc1LC4wMSksX1szMisoMHxhWyhtPWwrMTZ8MCk+PjJdKT4+M109YyxjPStNbChsLDB8YVs0NzE0''@;'; put 'put ''NV0sLjUsLjAyKSxfWzQwKygwfGFbbT4+Ml0pPj4zXT1jLGs9MHxmdW5jdGlvbiBOYWUobCxjKXtsfD0wO3ZhciBmPTAscD0wLG09MDswfGREKDB8TGkoY3w9MCwxMDU1MjYpKT8xMDE9PSgwfGZlW2w+PjBdKSYmMD09KDB8WmkobCwxMDU2ODUpKT8oYz0xMDEsbT02KToobD0xMDU1MTksbT00''@;'; put 'put ''KTptPTQsND09KDB8bSkmJigoYz0wfGZlW2w+PjBdKTw8MjQ+PjI0PT05OT8wfFppKGwsMTA1NTE5KT8oYz05OSxtPTYpOm09MTE6bT02KTtlOmRve2lmKDY9PSgwfG0pKWZvcihmPTIwODQ4Ozspe2lmKCEocD0wfGFbZj4+Ml0pKXttPTExO2JyZWFrIGV9aWYoKDB8ZmVbcD4+MF0pPT1jPDwy''@;'; put 'put ''ND4+MjQmJjA9PSgwfFppKHAsbCkpKXtsPWY7YnJlYWsgZX1mPWYrMTZ8MH19d2hpbGUoMCk7cmV0dXJuIDExPT0oMHxtKSYmKGw9MHxmdW5jdGlvbiBWYWUobCl7dmFyIG0sQSxjPTAsZj0wLHA9MDtpZihBPWxlLGxlPWxlKzE2fDAsbT1BLCEoYz0wfGxOKGx8PTApKSl7YVs0NzI4NF09Yz0x''@;'; put 'put ''KyhwPTB8YVs0NzI4NF0pfDAsYz0oZj0wfGFbNDcyODNdKT8wfFYwKGYsYzw8Mik6MHxRbihjPDwyKSxhWzQ3MjgzXT1jLGM9MHx2cigxNiksYVsoMHxhWzQ3MjgzXSkrKHA8PDIpPj4yXT1jLGFbYz4+Ml09YVs1MjEyXSxhW2MrND4+Ml09YVs1MjEzXSxhW2MrOD4+Ml09YVs1MjE0XSxhW2Mr''@;'; put 'put ''MTI+PjJdPWFbNTIxNV0sZj0wfHJhKGwpLGFbYz4+Ml09Zjtkb3tpZig5OT09KDB8ZmVbbD4+MF0pJiYwPT0oMHxaaShsLDEwNTUxOSkpKXtmPTE7YnJlYWt9YVttPj4yXT1hWzUyMTJdLGFbbSs0Pj4yXT1mLCRyKDAsMTA1NjkwLG0pLGY9MH13aGlsZSgwKTtmZVtjKzEyPj4wXT1mfXJldHVy''@;'; put 'put ''biBsZT1BLDB8Y30obCkpLDB8bH0oMHxCYShsLDB8YVs0NzE0N10sMTA3OTg2KSxsKSxhWzgrKDB8YVttPj4yXSk+PjJdPWssaz0wfEhvKGwsMHxhWzQ3MTU0XSksYz0rTWwobCwwfGFbNDcxNTBdLDE0LDEpLGY9MHxCYShsLDB8YVs0NzE1MV0sMTA3OTk0KSxwPTB8QmEobCwwfGFbNDcxNTJd''@;'; put 'put ''LDEzNzMxNCksQT0wIT0oMHxPbyhrKSksQT0wfEo1KGwsaywoMj09KDB8JDUobCkpPzQ6MCl8KEE/MjowKSxjLGYscCksYVsxMDQrKDB8YVttPj4yXSk+PjJdPUEsMHwoQT0wfGFbNDcxNTVdKSYmMHwodz0wfEhvKGwsQSkpJiYwfGZlW3c+PjBdJiYoaz0wfEo1KGwsdywoaz0wIT0oMHxPbyh3''@;'; put 'put ''KSkpPzI6MCxjLGYscCksYVsxMDgrKDB8YVttPj4yXSk+PjJdPWssaz0xMTMrKDB8YVsxNisoMHxjcihsKSk+PjJdKXwwLGZlW2s+PjBdPTE2fGZlW2s+PjBdKSxiPTI1NSYoMHxlcyhsLDB8YVs0NzE1OF0sMCwwKSksZmVbMTQ0KyhrPTB8YVttPj4yXSk+PjBdPWIsQ29bMTI3JmFbYVs0Kygw''@;'; put 'put ''fGFbays4Pj4yXSk+PjJdPj4yXV0obCl9ZnVuY3Rpb24gTDcobCl7dmFyIGssTSxSLHEscGUsYmUsT2UsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLEQ9MCxHPTAsZ2U9MDtPZT1sZSxsZT1sZSsxMTJ8MCxrPU9lKzk2fDAsTT1PZSs4MHwwLHBlPU9lKzQwfDAsYmU9T2UscT00OCsobHw9''@;'; put 'put ''MCl8MCxSPTB8Y3IoMHxhWygzPT0oMyZhW2w+PjJdfDApP2w6cSkrNDA+PjJdKSxhWyhtPWsrOHwwKT4+Ml09MCxhWyhEPU0rOHwwKT4+Ml09MCwwIT0oMHwoYz0wfGFbNDcxODJdKSkmJjAhPSgwfChmPTB8SG8obCxjKSkpJiYwIT0oMHxmZVtmPj4wXSk/KE1OKGwsayksZj0wfEo1KGwsZiwo''@;'; put 'put ''Z2U9MCE9KDB8T28oZikpKT8yOjAsQT0rX1trPj4zXSxwPTB8YVttPj4yXSxjPTB8YVtrKzEyPj4yXSksYVs5NisoMHxhWyhnZT1sKzE2fDApPj4yXSk+PjJdPWYsZmVbKGY9MTEzKygwfGFbUisxNj4+Ml0pfDApPj4wXT0xfGZlW2Y+PjBdLGY9MHx0MSgwfHYyKGwsMHxhWzQ3MTkyXSwxMzcz''@;'; put 'put ''MDgpKSxmZVsxMTQrKDB8YVtnZT4+Ml0pPj4wXT1mLGdlPTEsZj1wKTooZ2U9MCxjPTAsQT0wLGY9MCksMHwocD0wfGFbNDcxODNdKSYmMHwodz0wfEhvKGwscCkpJiYwfGZlW3c+PjBdJiYoZnx8KE1OKGwsayksQT0rX1trPj4zXSxmPTB8YVttPj4yXSxjPTB8YVtrKzEyPj4yXSksdz0wfEo1''@;'; put 'put ''KGwsdywobT0wIT0oMHxPbyh3KSkpPzI6MCxBLGYsYyksYVsxMDgrKDB8YVtsKzE2Pj4yXSk+PjJdPXcsZmVbKHc9MTEzKygwfGFbUisxNj4+Ml0pfDApPj4wXT0zMnxmZVt3Pj4wXSksMCE9KDB8KGM9MHxhWzQ3MTk3XSkpJiYwIT0oMHwoYj0wfEhvKGwsYykpKSYmMCE9KDB8ZmVbYj4+MF0p''@;'; put 'put ''PyhtSihsLGssTSksYj0wfEo1KGwsYiwodz0wIT0oMHxPbyhiKSkpPzI6MCxBPStfW00+PjNdLGM9MHxhW0Q+PjJdLGY9MHxhW00rMTI+PjJdKSxhWzEwMCsoMHxhW2wrMTY+PjJdKT4+Ml09YixmZVsoYj0xMTMrKDB8YVtSKzE2Pj4yXSl8MCk+PjBdPTJ8ZmVbYj4+MF0pOihmPTAsQT0wLGM9''@;'; put 'put ''MCksMHwocD0wfGFbNDcxOThdKSYmMHwoRz0wfEhvKGwscCkpJiYwfGZlW0c+PjBdJiYoY3x8KG1KKGwsayxNKSxmPTB8YVtNKzEyPj4yXSxBPStfW00+PjNdLGM9MHxhW0Q+PjJdKSxHPTB8SjUobCxHLChEPTAhPSgwfE9vKEcpKSk/MjowLEEsYyxmKSxhWzEwNCsoMHxhW2wrMTY+PjJdKT4+''@;'; put 'put ''Ml09RyxmZVsoRz0xMTMrKDB8YVtSKzE2Pj4yXSl8MCk+PjBdPTR8ZmVbRz4+MF0pLGM9MHxMaShsLDExMTQ1NSksMHxmZVsoYz0wfGM/YzoxOTUwNTkpPj4wXSYmKGZlWzE0NSsoMHxhWzE2KygwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpxKSs0MD4+Ml0pPj4yXSk+PjBdPTEpLHA9MTYrKDB8''@;'; put 'put ''YVsobT1sKzE2fDApPj4yXSl8MCxFTihwZSwwfGFbOCsoMHxhWzQrKDB8YVs4KygwfGFbMTYrKGY9MHxhWygzPT0oMyZhW2w+PjJdfDApP2w6cSkrNDA+PjJdKT4+Ml0pPj4yXSk+PjJdKT4+Ml0sZixjKSxjPXBlLGY9cCs0MHwwO2Rve2FbcD4+Ml09YVtjPj4yXSxwPXArNHwwLGM9Yys0fDB9''@;'; put 'put ''d2hpbGUoKDB8cCk8KDB8ZikpOygwfHhOKGwsMHxhWzQ3MjA0XSkpPDwyND4+MjQmJihmZVs0NisoMHxhW20+PjJdKT4+MF09MCksYz0wfExpKGwsMTExNDY0KSwwfGZlWyhjPTB8Yz9jOjE5NTA1OSk+PjBdPyhmPWwrLTQ4fDAsZmVbMTQ1KygwfGFbMTYrKDB8YVsoMj09KDMmYVtsPj4yXXww''@;'; put 'put ''KT9sOmYpKzQwPj4yXSk+PjJdKT4+MF09MSk6Zj1sKy00OHwwLHA9NTYrKDB8YVttPj4yXSl8MCxFTihiZSwwfGFbOCsoMHxhWzQrKDB8YVs4KygwfGFbMTYrKGY9MHxhWygyPT0oMyZhW2w+PjJdfDApP2w6ZikrNDA+PjJdKT4+Ml0pPj4yXSk+PjJdKT4+Ml0sZixjKSxjPWJlLGY9cCs0MHww''@;'; put 'put ''O2Rve2FbcD4+Ml09YVtjPj4yXSxwPXArNHwwLGM9Yys0fDB9d2hpbGUoKDB8cCk8KDB8ZikpO3JldHVybigwfHhOKGwsMHxhWzQ3MjA1XSkpPDwyND4+MjQmJihmZVs4NisoMHxhW20+PjJdKT4+MF09MCksbGU9T2UsMHxnZX1mdW5jdGlvbiBNTihsLGMpe19bKGN8PTApPj4zXT0rTWwobHw9''@;'; put 'put ''MCwwfGFbNDcxNzldLDE0LDEpLGFbYys4Pj4yXT0wfEJhKGwsMHxhWzQ3MTgwXSwxMDc5OTQpLGFbYysxMj4+Ml09MHxCYShsLDB8YVs0NzE4MV0sMTM3MzE0KX1mdW5jdGlvbiBtSihsLGMsZil7dmFyIHA7bHw9MCxmfD0wLDB8YVsocD04KyhjfD0wKXwwKT4+Ml18fE1OKGwsYyksX1tmPj4z''@;'; put 'put ''XT0rTWwobCwwfGFbNDcxOTldLCtfW2M+PjNdLDEpLGFbZis4Pj4yXT0wfEJhKGwsMHxhWzQ3MjAwXSwwfGFbcD4+Ml0pLGFbZisxMj4+Ml09MHxCYShsLDB8YVs0NzIwMV0sMHxhW2MrMTI+PjJdKX1mdW5jdGlvbiBFTihsLGMsZixwKXtsfD0wLGN8PTAsZnw9MDt2YXIgQSxrLE0sbT0wLHc9''@;'; put 'put ''MCxiPTA7aWYoTT1sZSxsZT1sZSsxMjh8MCxrPU0rODB8MCxBPU0rNDB8MCxtPU0sMCE9KDB8KHB8PTApKSYmMCE9KDB8KGI9MHwkcyhwLDU4KSkpKXtmZVtiPj4wXT0wLFJjWzMxJmNdKEEsZixwLHc9YisxfDApLG09QSxjPShmPWspKzM2fDA7ZG97YVtmPj4yXT1hW20+PjJdLGY9Zis0fDAs''@;'; put 'put ''bT1tKzR8MH13aGlsZSgoMHxmKTwoMHxjKSk7ZmVbYj4+MF09NTgscD13fWVsc2V7UmNbMzEmY10obSxmLHAsMCksYz0oZj1rKSszNnwwO2Rve2FbZj4+Ml09YVttPj4yXSxmPWYrNHwwLG09bSs0fDB9d2hpbGUoKDB8Zik8KDB8YykpfW09ayxjPShmPWwpKzM2fDA7ZG97YVtmPj4yXT1hW20+''@;'; put 'put ''PjJdLGY9Zis0fDAsbT1tKzR8MH13aGlsZSgoMHxmKTwoMHxjKSk7YVtsKzM2Pj4yXT1wLGxlPU19ZnVuY3Rpb24geE4obCxjKXtsfD0wO3ZhciBmPTA7cmV0dXJuIDB8KDAhPSgwfChjfD0wKSkmJjAhPSgwfChmPTB8SG8obCxjKSkpJiYwIT0oMHxmZVtmPj4wXSk/KDB8dDEoZikpPDwyND4+''@;'; put 'put ''MjQ9PTAmMTowKX1mdW5jdGlvbiB2SihsLGMpe2x8PTA7dmFyIHAsbSxBLHcsYixrLGY9MCxNPTAsRD0wLFI9MDtmb3Ioaz1sZSxsZT1sZSszMnwwLHc9ayxmPSgwfGFbNDQrKGN8PTApPj4yXSkrKCgwfEFyKCgwfChmPTB8YVtjKzQ+PjJdKSk+MT9mKy0xfDA6MCxiPTB8YVtjKzg+PjJdKSk8''@;'; put 'put ''PDQpfDAsYVsocD13KzE2fDApPj4yXT1hW2Y+PjJdLGFbcCs0Pj4yXT1hW2YrND4+Ml0sYVtwKzg+PjJdPWFbZis4Pj4yXSxhW3ArMTI+PjJdPWFbZisxMj4+Ml0sYVt3Pj4yXT1hW2Y+PjJdLGFbdys0Pj4yXT1hW2YrND4+Ml0sYVt3Kzg+PjJdPWFbZis4Pj4yXSxhW3crMTI+PjJdPWFbZisx''@;'; put 'put ''Mj4+Ml0sbT13Kzh8MCxBPXcrMjR8MCxjPTE7ISgoMHxjKT49KDB8YikpOylfW3c+PjNdPStfWygrX1t3Pj4zXTwoUj0rX1soTT1mKyhjPDw0KXwwKT4+M10pP3c6TSk+PjNdLF9bbT4+M109K19bKCtfW20+PjNdPChEPStfW00rOD4+M10pP3c6TSkrOD4+M10sX1twPj4zXT0rX1soK19bcD4+''@;'; put 'put ''M10+Uj9wOk0pPj4zXSxfW0E+PjNdPStfWygrX1tBPj4zXT5EP3A6TSkrOD4+M10sYz1jKzF8MDthW2w+PjJdPWFbdz4+Ml0sYVtsKzQ+PjJdPWFbdys0Pj4yXSxhW2wrOD4+Ml09YVt3Kzg+PjJdLGFbbCsxMj4+Ml09YVt3KzEyPj4yXSxhW2wrMTY+PjJdPWFbdysxNj4+Ml0sYVtsKzIwPj4y''@;'; put 'put ''XT1hW3crMjA+PjJdLGFbbCsyND4+Ml09YVt3KzI0Pj4yXSxhW2wrMjg+PjJdPWFbdysyOD4+Ml0sbGU9a31mdW5jdGlvbiBuNChsLGMpe2N8PTA7dmFyIGYscCxBLG09MDtmPWxlLGxlPWxlKzY0fDAscD1mLGw9MTYrKG09MHxhWzE2KyhsfD0wKT4+Ml0pfDAsbT0xJmFbbSsxMTY+PjJdLGFb''@;'; put 'put ''KEE9ZiszMnwwKT4+Ml09YVtsPj4yXSxhW0ErND4+Ml09YVtsKzQ+PjJdLGFbQSs4Pj4yXT1hW2wrOD4+Ml0sYVtBKzEyPj4yXT1hW2wrMTI+PjJdLGFbQSsxNj4+Ml09YVtsKzE2Pj4yXSxhW0ErMjA+PjJdPWFbbCsyMD4+Ml0sYVtBKzI0Pj4yXT1hW2wrMjQ+PjJdLGFbQSsyOD4+Ml09YVts''@;'; put 'put ''KzI4Pj4yXSxPNyhwLEEsYyxtKSxhW2w+PjJdPWFbcD4+Ml0sYVtsKzQ+PjJdPWFbcCs0Pj4yXSxhW2wrOD4+Ml09YVtwKzg+PjJdLGFbbCsxMj4+Ml09YVtwKzEyPj4yXSxhW2wrMTY+PjJdPWFbcCsxNj4+Ml0sYVtsKzIwPj4yXT1hW3ArMjA+PjJdLGFbbCsyND4+Ml09YVtwKzI0Pj4yXSxh''@;'; put 'put ''W2wrMjg+PjJdPWFbcCsyOD4+Ml0sbGU9Zn1mdW5jdGlvbiBPNyhsLGMsZixwKXtsfD0wO3ZhciB3LGIsayxNLEQsbT0wLEE9MDtNPStfWzY0KyhmfD0wKT4+M10saz0rX1tmKzI0Pj4zXSx3PStfW2YrMzI+PjNdLG09KEE9K19bZis1Nj4+M10pLShEPS41KigoYj0ocHw9MCk8PDI0Pj4yND09''@;'; put 'put ''MCk/azp3KSksQT1EK0EsbTwrX1soY3w9MCk+PjNdJiYoX1tjPj4zXT1tKSxBPitfWyhwPWMrMTZ8MCk+PjNdJiYoX1twPj4zXT1BKSxtPU0tKEE9LjUqKGI/dzprKSksQSs9TSxtPCtfWyhwPWMrOHwwKT4+M10mJihfW3A+PjNdPW0pLEE+K19bKHA9YysyNHwwKT4+M10mJihfW3A+PjNdPUEp''@;'; put 'put ''LGFbbD4+Ml09YVtjPj4yXSxhW2wrND4+Ml09YVtjKzQ+PjJdLGFbbCs4Pj4yXT1hW2MrOD4+Ml0sYVtsKzEyPj4yXT1hW2MrMTI+PjJdLGFbbCsxNj4+Ml09YVtjKzE2Pj4yXSxhW2wrMjA+PjJdPWFbYysyMD4+Ml0sYVtsKzI0Pj4yXT1hW2MrMjQ+PjJdLGFbbCsyOD4+Ml09YVtjKzI4Pj4y''@;'; put 'put ''XX1mdW5jdGlvbiBpZyhsKXt2YXIgZ2UsYmUsT2UsTGUsUmUsSGUsVmUscWUscnQsc3QsRXQsWnQsYW4sYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsV2U9MCxhdD0wLFN0PTAsa3Q9MCxjdD0wLGJ0PTAsU249MCxIbj0wLHVyPTAsSHI9''@;'; put 'put ''MDtpZihhbj1sZSxsZT1sZSs0NDh8MCxFdD1hbis0MTZ8MCxnZT1hbiszODR8MCxiZT1hbiszMDR8MCxidD1hbisyNTZ8MCxzdD1hbisxOTJ8MCxydD1hbisxNDR8MCxXZT1hbis5NnwwLGM9YW4rNDAwfDAsZj1hbiszNjh8MCxwPWFuKzM1MnwwLG09YW4rMzM2fDAsT2U9YW4rMjg4fDAsTGU9''@;'; put 'put ''YW4rMjI0fDAsUmU9YW4rMTYwfDAsSGU9YW4rMTEyfDAsVmU9YW4rNjR8MCxxZT1hbiszMnwwLFp0PWFuLGN0PTE2KyhsfD0wKXwwLDA9PSgwfEdvKGwpKSYmMD09KDB8YVsxODArKDB8YVtjdD4+Ml0pPj4yXSkpbUQoYywwLDApLGFbYnQ+PjJdPWFbYz4+Ml0sYVtidCs0Pj4yXT1hW2MrND4+''@;'; put 'put ''Ml0sYVtidCs4Pj4yXT1hW2MrOD4+Ml0sYVtidCsxMj4+Ml09YVtjKzEyPj4yXSxidD1idCsxNnwwLG1EKGYsMCwwKSxhW2J0Pj4yXT1hW2Y+PjJdLGFbYnQrND4+Ml09YVtmKzQ+PjJdLGFbYnQrOD4+Ml09YVtmKzg+PjJdLGFbYnQrMTI+PjJdPWFbZisxMj4+Ml07ZWxzZXtmb3IobUQocCwy''@;'; put 'put ''MTQ3NDgzNjQ3LDIxNDc0ODM2NDcpLGFbYnQ+PjJdPWFbcD4+Ml0sYVtidCs0Pj4yXT1hW3ArND4+Ml0sYVtidCs4Pj4yXT1hW3ArOD4+Ml0sYVtidCsxMj4+Ml09YVtwKzEyPj4yXSxrdD1idCsxNnwwLG1EKG0sLTIxNDc0ODM2NDcsLTIxNDc0ODM2NDcpLGFba3Q+PjJdPWFbbT4+Ml0sYVtr''@;'; put 'put ''dCs0Pj4yXT1hW20rND4+Ml0sYVtrdCs4Pj4yXT1hW20rOD4+Ml0sYVtrdCsxMj4+Ml09YVttKzEyPj4yXSxEPVdlKzh8MCxSPWJlKzE2fDAsYXQ9YnQrOHwwLEc9YmUrOHwwLFN0PWJ0KzI0fDAscT1iZSsyNHwwLHBlPXJ0Kzh8MCxNPTB8RHQobCk7TTspe2ZvcihoRChydCxNKSxfW1dlPj4z''@;'; put 'put ''XT0uNSooK19bOTYrKGs9MHxhWyhjPU0rMTZ8MCk+PjJdKT4+M10rICtfW2srODg+PjNdKSxfW0Q+PjNdPS41KitfW2srODA+PjNdLGFbZ2U+PjJdPWFbcnQ+PjJdLGFbZ2UrND4+Ml09YVtydCs0Pj4yXSxhW2dlKzg+PjJdPWFbcnQrOD4+Ml0sYVtnZSsxMj4+Ml09YVtydCsxMj4+Ml0sYVtF''@;'; put 'put ''dD4+Ml09YVtXZT4+Ml0sYVtFdCs0Pj4yXT1hW1dlKzQ+PjJdLGFbRXQrOD4+Ml09YVtXZSs4Pj4yXSxhW0V0KzEyPj4yXT1hW1dlKzEyPj4yXSxUTihiZSxnZSxFdCksYVtnZT4+Ml09YVtydD4+Ml0sYVtnZSs0Pj4yXT1hW3J0KzQ+PjJdLGFbZ2UrOD4+Ml09YVtydCs4Pj4yXSxhW2dlKzEy''@;'; put 'put ''Pj4yXT1hW3J0KzEyPj4yXSxhW0V0Pj4yXT1hW1dlPj4yXSxhW0V0KzQ+PjJdPWFbV2UrND4+Ml0sYVtFdCs4Pj4yXT1hW1dlKzg+PjJdLGFbRXQrMTI+PjJdPWFbV2UrMTI+PjJdLEFKKE9lLGdlLEV0KSxhW1I+PjJdPWFbT2U+PjJdLGFbUis0Pj4yXT1hW09lKzQ+PjJdLGFbUis4Pj4yXT1h''@;'; put 'put ''W09lKzg+PjJdLGFbUisxMj4+Ml09YVtPZSsxMj4+Ml0sX1tidD4+M109K19bKCtfW2J0Pj4zXTwrX1tiZT4+M10/YnQ6YmUpPj4zXSxfW2F0Pj4zXT0rX1soK19bYXQ+PjNdPCtfW0c+PjNdP2J0OmJlKSs4Pj4zXSxfW2t0Pj4zXT0rX1soK19ba3Q+PjNdPitfW1I+PjNdP2J0OmJlKSsxNj4+''@;'; put 'put ''M10sX1tTdD4+M109K19bKCtfW1N0Pj4zXT4rX1txPj4zXT9idDpiZSkrMjQ+PjNdLDB8KGM9MHxhWzEwOCsoMHxhW2M+PjJdKT4+Ml0pJiYwfGZlW2MrODE+PjBdJiYoaz0xJmFbMTE2KygwfGFbY3Q+PjJdKT4+Ml0sYVtFdD4+Ml09YVtidD4+Ml0sYVtFdCs0Pj4yXT1hW2J0KzQ+PjJdLGFb''@;'; put 'put ''RXQrOD4+Ml09YVtidCs4Pj4yXSxhW0V0KzEyPj4yXT1hW2J0KzEyPj4yXSxhW0V0KzE2Pj4yXT1hW2J0KzE2Pj4yXSxhW0V0KzIwPj4yXT1hW2J0KzIwPj4yXSxhW0V0KzI0Pj4yXT1hW2J0KzI0Pj4yXSxhW0V0KzI4Pj4yXT1hW2J0KzI4Pj4yXSxPNyhMZSxFdCxjLGspLGFbYnQ+PjJdPWFb''@;'; put 'put ''TGU+PjJdLGFbYnQrND4+Ml09YVtMZSs0Pj4yXSxhW2J0Kzg+PjJdPWFbTGUrOD4+Ml0sYVtidCsxMj4+Ml09YVtMZSsxMj4+Ml0sYVtidCsxNj4+Ml09YVtMZSsxNj4+Ml0sYVtidCsyMD4+Ml09YVtMZSsyMD4+Ml0sYVtidCsyND4+Ml09YVtMZSsyND4+Ml0sYVtidCsyOD4+Ml09YVtMZSsy''@;'; put 'put ''OD4+Ml0pLGs9MHx3MChsLE0pO2s7KXtpZigwfChmPTB8YVsodz04KyhjPTB8YVsoYj1rKzE2fDApPj4yXSl8MCk+PjJdKSl7Zm9yKEE9MDsoMHxBKTwoMHxhW2YrND4+Ml0pOyl7Zm9yKG09MDshKCgwfG0pPj0oMHxhWyhwPTB8YVtmPj4yXSkrKDQ4KkF8MCkrND4+Ml0pKTspYVtydD4+Ml09''@;'; put 'put ''YVsoZj0oMHxhW3ArKDQ4KkF8MCk+PjJdKSsobTw8NCl8MCk+PjJdLGFbcnQrND4+Ml09YVtmKzQ+PjJdLGFbcnQrOD4+Ml09YVtmKzg+PjJdLGFbcnQrMTI+PjJdPWFbZisxMj4+Ml0sX1tidD4+M109K19bKCtfW2J0Pj4zXTwoSG49K19bcnQ+PjNdKT9idDpydCk+PjNdLF9bYXQ+PjNdPStf''@;'; put 'put ''WygrX1thdD4+M108KFNuPStfW3BlPj4zXSk/YnQ6cnQpKzg+PjNdLF9ba3Q+PjNdPStfWygrX1trdD4+M10+SG4/a3Q6cnQpPj4zXSxfW1N0Pj4zXT0rX1soK19bU3Q+PjNdPlNuP2t0OnJ0KSs4Pj4zXSxtPW0rMXwwLGY9MHxhW3c+PjJdO0E9QSsxfDB9MCE9KDB8KGY9MHxhW2MrOTY+PjJd''@;'; put 'put ''KSkmJjAhPSgwfGZlW2YrODE+PjBdKSYmKGM9MSZhWzExNisoMHxhW2N0Pj4yXSk+PjJdLGFbRXQ+PjJdPWFbYnQ+PjJdLGFbRXQrND4+Ml09YVtidCs0Pj4yXSxhW0V0Kzg+PjJdPWFbYnQrOD4+Ml0sYVtFdCsxMj4+Ml09YVtidCsxMj4+Ml0sYVtFdCsxNj4+Ml09YVtidCsxNj4+Ml0sYVtF''@;'; put 'put ''dCsyMD4+Ml09YVtidCsyMD4+Ml0sYVtFdCsyND4+Ml09YVtidCsyND4+Ml0sYVtFdCsyOD4+Ml09YVtidCsyOD4+Ml0sTzcoUmUsRXQsZixjKSxhW2J0Pj4yXT1hW1JlPj4yXSxhW2J0KzQ+PjJdPWFbUmUrND4+Ml0sYVtidCs4Pj4yXT1hW1JlKzg+PjJdLGFbYnQrMTI+PjJdPWFbUmUrMTI+''@;'; put 'put ''PjJdLGFbYnQrMTY+PjJdPWFbUmUrMTY+PjJdLGFbYnQrMjA+PjJdPWFbUmUrMjA+PjJdLGFbYnQrMjQ+PjJdPWFbUmUrMjQ+PjJdLGFbYnQrMjg+PjJdPWFbUmUrMjg+PjJdLGM9MHxhW2I+PjJdKSwwIT0oMHwoZj0wfGFbYysxMDA+PjJdKSkmJjAhPSgwfGZlW2YrODE+PjBdKSYmKGM9MSZh''@;'; put 'put ''WzExNisoMHxhW2N0Pj4yXSk+PjJdLGFbRXQ+PjJdPWFbYnQ+PjJdLGFbRXQrND4+Ml09YVtidCs0Pj4yXSxhW0V0Kzg+PjJdPWFbYnQrOD4+Ml0sYVtFdCsxMj4+Ml09YVtidCsxMj4+Ml0sYVtFdCsxNj4+Ml09YVtidCsxNj4+Ml0sYVtFdCsyMD4+Ml09YVtidCsyMD4+Ml0sYVtFdCsyND4+''@;'; put 'put ''Ml09YVtidCsyND4+Ml0sYVtFdCsyOD4+Ml09YVtidCsyOD4+Ml0sTzcoSGUsRXQsZixjKSxhW2J0Pj4yXT1hW0hlPj4yXSxhW2J0KzQ+PjJdPWFbSGUrND4+Ml0sYVtidCs4Pj4yXT1hW0hlKzg+PjJdLGFbYnQrMTI+PjJdPWFbSGUrMTI+PjJdLGFbYnQrMTY+PjJdPWFbSGUrMTY+PjJdLGFb''@;'; put 'put ''YnQrMjA+PjJdPWFbSGUrMjA+PjJdLGFbYnQrMjQ+PjJdPWFbSGUrMjQ+PjJdLGFbYnQrMjg+PjJdPWFbSGUrMjg+PjJdLGM9MHxhW2I+PjJdKSwwIT0oMHwoZj0wfGFbYysxMDQ+PjJdKSkmJjAhPSgwfGZlW2YrODE+PjBdKSYmKGM9MSZhWzExNisoMHxhW2N0Pj4yXSk+PjJdLGFbRXQ+PjJd''@;'; put 'put ''PWFbYnQ+PjJdLGFbRXQrND4+Ml09YVtidCs0Pj4yXSxhW0V0Kzg+PjJdPWFbYnQrOD4+Ml0sYVtFdCsxMj4+Ml09YVtidCsxMj4+Ml0sYVtFdCsxNj4+Ml09YVtidCsxNj4+Ml0sYVtFdCsyMD4+Ml09YVtidCsyMD4+Ml0sYVtFdCsyND4+Ml09YVtidCsyND4+Ml0sYVtFdCsyOD4+Ml09YVti''@;'; put 'put ''dCsyOD4+Ml0sTzcoVmUsRXQsZixjKSxhW2J0Pj4yXT1hW1ZlPj4yXSxhW2J0KzQ+PjJdPWFbVmUrND4+Ml0sYVtidCs4Pj4yXT1hW1ZlKzg+PjJdLGFbYnQrMTI+PjJdPWFbVmUrMTI+PjJdLGFbYnQrMTY+PjJdPWFbVmUrMTY+PjJdLGFbYnQrMjA+PjJdPWFbVmUrMjA+PjJdLGFbYnQrMjQ+''@;'; put 'put ''PjJdPWFbVmUrMjQ+PjJdLGFbYnQrMjg+PjJdPWFbVmUrMjg+PjJdLGM9MHxhW2I+PjJdKSwwfChjPTB8YVtjKzEwOD4+Ml0pJiYwfGZlW2MrODE+PjBdJiYoYj0xJmFbMTE2KygwfGFbY3Q+PjJdKT4+Ml0sYVtFdD4+Ml09YVtidD4+Ml0sYVtFdCs0Pj4yXT1hW2J0KzQ+PjJdLGFbRXQrOD4+''@;'; put 'put ''Ml09YVtidCs4Pj4yXSxhW0V0KzEyPj4yXT1hW2J0KzEyPj4yXSxhW0V0KzE2Pj4yXT1hW2J0KzE2Pj4yXSxhW0V0KzIwPj4yXT1hW2J0KzIwPj4yXSxhW0V0KzI0Pj4yXT1hW2J0KzI0Pj4yXSxhW0V0KzI4Pj4yXT1hW2J0KzI4Pj4yXSxPNyhxZSxFdCxjLGIpLGFbYnQ+PjJdPWFbcWU+PjJd''@;'; put 'put ''LGFbYnQrND4+Ml09YVtxZSs0Pj4yXSxhW2J0Kzg+PjJdPWFbcWUrOD4+Ml0sYVtidCsxMj4+Ml09YVtxZSsxMj4+Ml0sYVtidCsxNj4+Ml09YVtxZSsxNj4+Ml0sYVtidCsyMD4+Ml09YVtxZSsyMD4+Ml0sYVtidCsyND4+Ml09YVtxZSsyND4+Ml0sYVtidCsyOD4+Ml09YVtxZSsyOD4+Ml0p''@;'; put 'put ''fWs9MHxTMChsLGspfU09MHx6dChsLE0pfWZvcihwPTB8YVsxODArKGM9MHxhW2N0Pj4yXSk+PjJdLG09YysxODR8MCxBPXN0Kzh8MCx3PXN0KzE2fDAsYj1zdCsyNHwwLGY9MTshKCgwfGYpPigwfHApKTspX1tzdD4+M109SHI9K19bMTYrKDB8YVsxNisoMHxhWygwfGFbbT4+Ml0pKyhmPDwy''@;'; put 'put ''KT4+Ml0pPj4yXSk+PjNdLF9bQT4+M109dXI9K19bMjQrKFdlPTB8YVsxNisoMHxhWygwfGFbbT4+Ml0pKyhmPDwyKT4+Ml0pPj4yXSk+PjNdLF9bdz4+M109U249K19bV2UrMzI+PjNdLF9bYj4+M109SG49K19bV2UrNDA+PjNdLF9bYnQ+PjNdPStfWygrX1tidD4+M108SHI/YnQ6c3QpPj4z''@;'; put 'put ''XSxfW2F0Pj4zXT0rX1soK19bYXQ+PjNdPHVyP2J0OnN0KSs4Pj4zXSxfW2t0Pj4zXT0rX1soK19ba3Q+PjNdPlNuP2J0OnN0KSsxNj4+M10sX1tTdD4+M109K19bKCtfW1N0Pj4zXT5Ibj9idDpzdCkrMjQ+PjNdLGY9ZisxfDA7MCE9KDB8KGY9MHxhW2MrMTI+PjJdKSkmJjAhPSgwfGZlW2Yr''@;'; put 'put ''ODE+PjBdKSYmKGM9MSZhW2MrMTE2Pj4yXSxhW0V0Pj4yXT1hW2J0Pj4yXSxhW0V0KzQ+PjJdPWFbYnQrND4+Ml0sYVtFdCs4Pj4yXT1hW2J0Kzg+PjJdLGFbRXQrMTI+PjJdPWFbYnQrMTI+PjJdLGFbRXQrMTY+PjJdPWFbYnQrMTY+PjJdLGFbRXQrMjA+PjJdPWFbYnQrMjA+PjJdLGFbRXQr''@;'; put 'put ''MjQ+PjJdPWFbYnQrMjQ+PjJdLGFbRXQrMjg+PjJdPWFbYnQrMjg+PjJdLE83KFp0LEV0LGYsYyksYVtidD4+Ml09YVtadD4+Ml0sYVtidCs0Pj4yXT1hW1p0KzQ+PjJdLGFbYnQrOD4+Ml09YVtadCs4Pj4yXSxhW2J0KzEyPj4yXT1hW1p0KzEyPj4yXSxhW2J0KzE2Pj4yXT1hW1p0KzE2Pj4y''@;'; put 'put ''XSxhW2J0KzIwPj4yXT1hW1p0KzIwPj4yXSxhW2J0KzI0Pj4yXT1hW1p0KzI0Pj4yXSxhW2J0KzI4Pj4yXT1hW1p0KzI4Pj4yXSxjPTB8YVtjdD4+Ml0pLGFbKGN0PWMrMTZ8MCk+PjJdPWFbYnQ+PjJdLGFbY3QrND4+Ml09YVtidCs0Pj4yXSxhW2N0Kzg+PjJdPWFbYnQrOD4+Ml0sYVtjdCsx''@;'; put 'put ''Mj4+Ml09YVtidCsxMj4+Ml0sYVtjdCsxNj4+Ml09YVtidCsxNj4+Ml0sYVtjdCsyMD4+Ml09YVtidCsyMD4+Ml0sYVtjdCsyND4+Ml09YVtidCsyND4+Ml0sYVtjdCsyOD4+Ml09YVtidCsyOD4+Ml19bGU9YW59ZnVuY3Rpb24gbUQobCxjLGYpe2Y9K2YsX1sobHw9MCk+PjNdPWM9K2MsX1ts''@;'; put 'put ''Kzg+PjNdPWZ9ZnVuY3Rpb24gVE4obCxjLGYpe3ZhciBwO3A9K19bOCsoY3w9MCk+PjNdLStfWzgrKGZ8PTApPj4zXSxfWyhsfD0wKT4+M109K19bYz4+M10tK19bZj4+M10sX1tsKzg+PjNdPXB9ZnVuY3Rpb24gQUoobCxjLGYpe3ZhciBwO3A9K19bOCsoZnw9MCk+PjNdKyArX1s4KyhjfD0w''@;'; put 'put ''KT4+M10sX1sobHw9MCk+PjNdPStfW2Y+PjNdKyArX1tjPj4zXSxfW2wrOD4+M109cH1mdW5jdGlvbiB2RChsKXtyZXR1cm4gMHwoKDB8YVs2MCsobHw9MCk+PjJdKT09KDB8bCk/MTowPT0oMHxsNCgwfHRpKGwpLDEwODAwNiw3KSkmMSl9ZnVuY3Rpb24gSU4obCxjLGYscCxtKXtsfD0wLGN8''@;'; put 'put ''PTAsZnw9MCxwfD0wLG18PTA7ZTpkb3tpZighbSlzd2l0Y2goMHxraShjKSl7Y2FzZSAwOm09MHxzaShsLDAsZiwxOTUwNTkpO2JyZWFrIGU7Y2FzZSAxOm09MHxzaShsLDEsZiwxOTUwNTkpO2JyZWFrIGU7Y2FzZSAyOm09MHxzaShsLDIsZiwxOTUwNTkpO2JyZWFrIGU7ZGVmYXVsdDptPTA7''@;'; put 'put ''YnJlYWsgZX19d2hpbGUoMCk7cmV0dXJuIFZsKGMsbSxwKSwwfG19ZnVuY3Rpb24geUoobCl7dmFyIGM7cmV0dXJuIHdKKGx8PTAsYz0wfGlzKDIzNjI4LDB8YVs0NTgxXSkpLDB8Y31mdW5jdGlvbiBNbGUobCxjLGYscCxtKXtjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBrLE0sRyxiZSxBPTAs''@;'; put 'put ''dz0wLGI9MCxEPTAsUj0wLHE9MCxwZT0wLGdlPTA7YmU9bGUsbGU9bGUrNDh8MCxxPWJlKzMyfDAsRz1iZSsyNHwwLGdlPWJlKzE2fDAscGU9YmUrOHwwLGs9YmUsTT0wfGFbKDM9PSgwfChEPTMmYVsobHw9MCk+PjJdKSk/bDpsKzQ4fDApKzQwPj4yXSxEPTB8YVsoMj09KDB8RCk/bDpsKy00''@;'; put 'put ''OHwwKSs0MD4+Ml07ZG97aWYoISgwfGZlWzExOCsoMHxhW0QrMTY+PjJdKT4+MF0pJiYoQT0wIT0oMHwoUj0wfHMyKDB8dGkoTSksMTA4MDA2LDcpPzA6MHxETihtLDB8dGkoTSkpKSkpfChiPTAhPSgwfCh3PTB8czIoMHx0aShEKSwxMDgwMDYsNyk/MDowfEROKG0sMHx0aShEKSkpKSkpe2lm''@;'; put 'put ''KCgwfFIpPT0oMHx3KSl7cGU9MHx0aShNKSxnZT0wfHRpKE0pLGFbaz4+Ml09cGUsYVtrKzQ+PjJdPWdlLCRyKDAsMTA4MDI5LGspO2JyZWFrfWlmKDB8KG09MHxFbGUocCxsKSkpe0FrKGwsMHxhW20rMTY+PjJdLDB8YVttKzIwPj4yXSk7YnJlYWt9aWYoIWIpe2lmKDB8TnIoUixEKSl7cGU9''@;'; put 'put ''MHx0aShEKSxnZT0wfHRpKFIpLGFbcT4+Ml09cGUsYVtxKzQ+PjJdPWdlLCRyKDAsMTA4MTg0LHEpO2JyZWFrfUxOKHAsTSxELDB8QWsobCwwfEFEKE0sUixmLGMpLEQpKTticmVha31pZighQSl7aWYoMHxOcih3LE0pKXtwZT0wfHRpKE0pLGdlPTB8dGkodyksYVtHPj4yXT1wZSxhW0crND4+''@;'; put 'put ''Ml09Z2UsJHIoMCwxMDgxNDcsRyk7YnJlYWt9TE4ocCxNLEQsMHxBayhsLE0sMHxBRChELHcsZixjKSkpO2JyZWFrfWlmKDB8TnIodyxSKSl7cT0wfHRpKFIpLGdlPTB8dGkodyksYVtwZT4+Ml09cSxhW3BlKzQ+PjJdPWdlLCRyKDAsMTA4MDY3LHBlKTticmVha31pZigwfE5yKFIsdykpe3E9''@;'; put 'put ''MHx0aSh3KSxwZT0wfHRpKFIpLGFbZ2U+PjJdPXEsYVtnZSs0Pj4yXT1wZSwkcigwLDEwODEwNyxnZSk7YnJlYWt9TE4ocCxNLEQsMHxBayhsLGdlPTB8QUQoTSxSLGYsYyksMHxBRChELHcsZixjKSkpO2JyZWFrfX13aGlsZSgwKTtsZT1iZX1mdW5jdGlvbiBETihsLGMpe3JldHVybiAwfCgo''@;'; put 'put ''bD0wfG1pWzYzJmFbKGx8PTApPj4yXV0obCxjfD0wLDUxMikpPzB8YVtsKzEyPj4yXTowKX1mdW5jdGlvbiBFbGUobCxjKXt2YXIgZixwLG07cmV0dXJuIGx8PTAsZj1sZSxsZT1sZSsxNnwwLGFbKHA9Zik+PjJdPWFbKDM9PSgwfChtPTMmYVsoY3w9MCk+PjJdKSk/YzpjKzQ4fDApKzQwPj4y''@;'; put 'put ''XSxhW3ArND4+Ml09YVsoMj09KDB8bSk/YzpjKy00OHwwKSs0MD4+Ml0sYz0wfG1pWzYzJmFbbD4+Ml1dKGwscCw1MTIpLGxlPWYsMHxjfWZ1bmN0aW9uIEFrKGwsYyxmKXtyZXR1cm4gbHw9MCxmfD0wLGgwKGY9MHxLYSgwfGNyKGN8PTApLGMsZiwwLDEpLDEzNzQ2MCwxNzYsMSksUjYobCxm''@;'; put 'put ''KSwwfGZ9ZnVuY3Rpb24gQUQobCxjLGYscCl7bHw9MCxjfD0wLHB8PTA7dmFyIEEsayxtPTAsdz0wLGI9MDtyZXR1cm4gaz1sZSxsZT1sZSsxMTJ8MCxtPWssYj1rKzR8MCx1byhmfD0wLDEwODIyMSksYVs0NzMyMV09MSsodz0wfGFbNDczMjFdKSxhW20+PjJdPXcsb28oYiwxMzczOTUsbSks''@;'; put 'put ''dW8oZixiKSwobT0wfGFbKGI9Zis0fDApPj4yXSk+Pj4wPj0oMHxhWyh3PWYrOHwwKT4+Ml0pPj4+MCYmKFEwKGYsMSksbT0wfGFbYj4+Ml0pLGFbYj4+Ml09bSsxLGZlW20+PjBdPTU4LHVvKGYsMHx0aShjKSksQT0wfGRpKGMpLChtPTB8YVtiPj4yXSk+Pj4wPj0oMHxhW3c+PjJdKT4+PjAm''@;'; put 'put ''JihRMChmLDEpLG09MHxhW2I+PjJdKSxmZVttPj4wXT0wLGFbYj4+Ml09Zj0wfGFbZj4+Ml0saDAoYj0wfEdyKEEsZiwxKSwxMzc0NDcsMzA0LDEpLGZlWzExOCsoMHxhW2IrMTY+PjJdKT4+MF09MSxZbihjLGIsMSksWW4ocCxsLDEpLHA9MHxjcihiKSxhWzQ3MTU0XT0wfElOKHAsYiwxMDgy''@;'; put 'put ''MjQsMTk1MDU5LDB8YVs0NzE1NF0pLHA9MHxjcihiKSxhWzQ3MTU3XT0wfElOKHAsYiwxNDEwODIsMTM0MzM1LDB8YVs0NzE1N10pLHA9MHxjcihiKSxhWzQ3MTQ3XT0wfElOKHAsYiwxMDgyMzAsMTA4MjM2LDB8YVs0NzE0N10pLGxlPWssMHxifWZ1bmN0aW9uIExOKGwsYyxmLHApe3ZhciBt''@;'; put 'put ''LEEsdyxiLGssTSxELFIsRztsfD0wLGZ8PTAscHw9MCxtPWxlLGxlPWxlKzMyfDAsYVsoUj0oQT1tKSs4fDApPj4yXT1jfD0wLGFbKEQ9QSsxMnwwKT4+Ml09ZixiPXArNDh8MCxhWyhrPUErMTZ8MCk+PjJdPWFbKDM9PSgwfChHPTMmYVtwPj4yXSkpP3A6YikrNDA+PjJdLE09cCstNDh8MCxh''@;'; put 'put ''Wyh3PUErMjB8MCk+PjJdPWFbKDI9PSgwfEcpP3A6TSkrNDA+PjJdLG1pWzYzJmFbbD4+Ml1dKGwsQSwxKSxhW1I+PjJdPWYsYVtEPj4yXT1jLGFbaz4+Ml09YVsoMj09KDB8KGY9MyZhW3A+PjJdKSk/cDpNKSs0MD4+Ml0sYVt3Pj4yXT1hWygzPT0oMHxmKT9wOmIpKzQwPj4yXSxtaVs2MyZh''@;'; put 'put ''W2w+PjJdXShsLEEsMSksbGU9bX1mdW5jdGlvbiB3SihsLGMpe2N8PTA7dmFyIG0sQSx3LGY9MCxwPTAsYj0wO2Zvcih3PWxlLGxlPWxlKzE2fDAsQT13LG09MTYrKGx8PTApfDAscD0xOyEoKDB8cCk+KDB8YVsxODArKGw9MHxhW20+PjJdKT4+Ml0pKTspZj0wfHRpKGw9MHxhWygwfGFbbCsx''@;'; put 'put ''ODQ+PjJdKSsocDw8Mik+PjJdKSwwfG1pWzYzJmFbYz4+Ml1dKGMsZiw1MTIpPyhhW0E+PjJdPWYsJHIoMCwxMDgyNDAsQSkpOihiPTB8dnIoMTYpLGFbYis4Pj4yXT1mLGFbYisxMj4+Ml09bCxtaVs2MyZhW2M+PjJdXShjLGIsMSkpLHdKKGwsYykscD1wKzF8MDtsZT13fWZ1bmN0aW9uIGJK''@;'; put 'put ''KGwpe3ZhciBwLGM9MCxmPTA7Zm9yKGgwKHA9MHxwcyhsfD0wLDEwODAxNCwxKSwxMzc0ODMsMjgwLDEpLGM9MHxEdChsKTtjOyl7Zm9yKGY9MHx3MChsLGMpO2Y7KUxsZShmLHApLGY9MHxTMChsLGYpO2M9MHx6dChsLGMpfWZvcihjPTB8RHQocCk7YzspZj0wfHp0KHAsYyksb2coYyksb2ko''@;'; put 'put ''bCxjKSxjPWY7QzEocCl9ZnVuY3Rpb24gTGxlKGwsYyl7Y3w9MDt2YXIgZj0wLHA9MDtwPTB8YVsoMz09KDB8KGY9MyZhWyhsfD0wKT4+Ml0pKT9sOmwrNDh8MCkrNDA+PjJdLGY9MHxhWygyPT0oMHxmKT9sOmwrLTQ4fDApKzQwPj4yXSwwPT0oMHxmZVsxMTgrKDB8YVtwKzE2Pj4yXSk+PjBd''@;'; put 'put ''KSYmISgwfGZlWzExOCsoMHxhW2YrMTY+PjJdKT4+MF0pfHwoZj0wfEFrKGwscD0wfE9OKHAsYyksMHxPTihmLGMpKSxhWzgrKGY9MHxhW2YrMTY+PjJdKT4+Ml09YVsoYz04KyhwPTB8YVtsKzE2Pj4yXSl8MCk+PjJdLGFbYz4+Ml09MCxhW2YrOTY+PjJdPWFbKGM9cCs5NnwwKT4+Ml0sYVtj''@;'; put 'put ''Pj4yXT0wLGFbZisxMDg+PjJdPWFbKGM9cCsxMDh8MCk+PjJdLGFbYz4+Ml09MCxhW2YrMTAwPj4yXT1hWyhjPXArMTAwfDApPj4yXSxhW2M+PjJdPTAsYVtmKzEwND4+Ml09YVsocD1wKzEwNHwwKT4+Ml0sYVtwPj4yXT0wLGFnKGwpKX1mdW5jdGlvbiBvZyhsKXt2YXIgcCxjPTAsZj0wOyhm''@;'; put 'put ''PTB8YVsxMzIrKGM9MHxhWyhwPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSkmJihGdChmKSxjPTB8YVtwPj4yXSksKGY9MHxhW2MrOD4+Ml0pJiYoQ29bMTI3JmFbNCsoMHxhW2YrND4+Ml0pPj4yXV0obCksYz0wfGFbcD4+Ml0pLEljKDB8YVtjKzEwND4+Ml0pLEljKDB8YVsxMDgrKDB8YVtwPj4y''@;'; put 'put ''XSk+PjJdKSxIaShsLDEzNzQ0Nyl9ZnVuY3Rpb24gT04obCxjKXtjfD0wO3ZhciBwLGY9MDtwPTB8Y3IobHw9MCk7ZTpkb3tpZigwfGZlWzExOCsoMHxhW2wrMTY+PjJdKT4+MF0mJihZbihjLGwsMSksbD0wfCRzKDB8dGkobCksNTgpLGx8fFByKDExMTIwOCwxMDc2NjEsMTIyNSwxMDgyOTIp''@;'; put 'put ''LGM9bCsxfDAsbD0wfEdyKHAsYywwKSwhbCkpZm9yKGw9MHxHcihwLGMsMSksaDAobCwxMzc0NDcsMzA0LDEpLGM9MHxOcyhwLDEsMCk7Oyl7aWYoIWMpYnJlYWsgZTsoMHxIbyhsLGMpKSE9KDB8KGY9MHxhW2MrMTI+PjJdKSkmJlZsKGwsYyxmKSxjPTB8TnMocCwxLGMpfX13aGlsZSgwKTty''@;'; put 'put ''ZXR1cm4gMHxsfWZ1bmN0aW9uIGFnKGwpe3ZhciBjO0Z0KDB8YVsxNDQrKDB8YVsoYz0xNisobHw9MCl8MCk+PjJdKT4+Ml0pLHlEKGwpLEljKDB8YVs5NisoMHxhW2M+PjJdKT4+Ml0pLEljKDB8YVsxMDgrKDB8YVtjPj4yXSk+PjJdKSxJYygwfGFbMTAwKygwfGFbYz4+Ml0pPj4yXSksSWMo''@;'; put 'put ''MHxhWzEwNCsoMHxhW2M+PjJdKT4+Ml0pLEhpKGwsMTM3NDYwKX1mdW5jdGlvbiB5RChsKXt2YXIgcCxjPTAsZj0wO2lmKGM9MHxhWzgrKGw9MHxhWyhwPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSl7Zm9yKGY9MDtsPTB8YVtjPj4yXSwhKCgwfGYpPj0oMHxhW2MrND4+Ml0pKTspRnQoMHxhW2wr''@;'; put 'put ''KDQ4KmZ8MCk+PjJdKSxmPWYrMXwwLGM9MHxhWzgrKDB8YVtwPj4yXSk+PjJdO0Z0KGwpLEZ0KDB8YVs4KygwfGFbcD4+Ml0pPj4yXSksbD0wfGFbcD4+Ml19YVtsKzg+PjJdPTB9ZnVuY3Rpb24gWjIobCxjLGYscCl7cHw9MDt2YXIgbT0wO3JldHVybihtPTB8c2kobHw9MCxjfD0wLGZ8PTAs''@;'; put 'put ''MCkpfHwobT0wfHNpKGwsYyxmLHApKSwwfG19ZnVuY3Rpb24gT2xlKGwsYyl7Y3w9MDt2YXIgQSx3LGIsayxNLEQsUixmPTAscD0wLG09MDtyZXR1cm4gUj1sZSxsZT1sZSszMnwwLHc9UixBPVIrOHwwLGI9UisxNnwwLE09MHwkcyhsfD0wLDU5KSwoZj0wfGFbKEQ9Yys0fDApPj4yXSk+Pj4w''@;'; put 'put ''Pj0oMHxhWyhrPWMrOHwwKT4+Ml0pPj4+MCYmKFEwKGMsMSksZj0wfGFbRD4+Ml0pLGFbRD4+Ml09ZisxLGZlW2Y+PjBdPTM4LDAhPSgwfE0pJiYoKHA9TS1sfDApLTJ8MCk+Pj4wPD02JiYoZXcoYixsLHApLGZlW2IrcD4+MF09MCxhW0E+PjJdPWIsMCE9KDB8KG09MHxudyhBLDIzNjY0LDI1''@;'; put 'put ''Miw4LDk2KSkpKSYmKGFbdz4+Ml09YVttKzQ+PjJdLG9vKGIsMTM3Mzk1LHcpLChsPTB8YVtEPj4yXSk+Pj4wPj0oMHxhW2s+PjJdKT4+PjAmJihRMChjLDEpLGw9MHxhW0Q+PjJdKSxhW0Q+PjJdPWwrMSxmZVtsPj4wXT0zNSx1byhjLGIpLChsPTB8YVtEPj4yXSk+Pj4wPj0oMHxhW2s+PjJd''@;'; put 'put ''KT4+PjAmJihRMChjLDEpLGw9MHxhW0Q+PjJdKSxhW0Q+PjJdPWwrMSxmZVtsPj4wXT01OSxsPU0rMXwwKSxsZT1SLDB8bH1mdW5jdGlvbiBSTihsLGMpe2N8PTA7dmFyIHcsYixrLFIscSxmPTAscD0wLG09MCxBPTAsTT0wLEQ9MCxHPTA7Zm9yKHE9bGUsbGU9bGUrMTA3MnwwLGs9cSs4fDAs''@;'; put 'put ''Yj1xLFI9cSsyNHwwLGFbKHc9cSsxNnwwKT4+Ml09bHw9MCwoMHxhWzQ3MzIyXSkhPSgwfGMpJiYoYVs0NzMyMl09YyxmZVsxOTQ5NThdPTApLHVzKFIsMTAyNCxxKzQwfDApLEc9Uis0fDAsRD1SKzh8MDthW3c+PjJdPXA9bCsxfDAsKGY9MHxmZVtsPj4wXSk8PDI0Pj4yNDspe2Rve2lmKCgy''@;'; put 'put ''NTUmZik8MTkyKWlmKGY8PDI0Pj4yND09MzgpaWYocD0wfEJOKHcpKXtpZihwPj4+MDwxMjcpe2Y9MjU1JnA7YnJlYWt9aWYoZj0obD0wfGFbRz4+Ml0pPj4+MD49KDB8YVtEPj4yXSk+Pj4wLHA+Pj4wPDIwNDcpe2YmJihRMChSLDEpLGw9MHxhW0c+PjJdKSxhW0c+PjJdPWwrMSxmZVtsPj4w''@;'; put 'put ''XT1wPj4+NnwxOTIsZj0yNTUmKDYzJnB8MTI4KTticmVha31mJiYoUTAoUiwxKSxsPTB8YVtHPj4yXSksYVtHPj4yXT1sKzEsZmVbbD4+MF09cD4+PjEyfDIyNCwobD0wfGFbRz4+Ml0pPj4+MD49KDB8YVtEPj4yXSk+Pj4wJiYoUTAoUiwxKSxsPTB8YVtHPj4yXSksYVtHPj4yXT1sKzEsZmVb''@;'; put 'put ''bD4+MF09cD4+PjYmNjN8MTI4LGY9MjU1Jig2MyZwfDEyOCl9ZWxzZSBmPTM4O2Vsc2UgQT0wLE09OTtlbHNlKDI1NSZmKT49MjI0PygyNTUmZik+PTI0MD8oMjU1JmYpPDI0OD8oQT0zLE09OSk6KDB8ZmVbMTk0OTU4XXx8KGFbYj4+Ml09MHx0aShjKSwkcigwLDEwOTcwNyxiKSxmZVsxOTQ5''@;'; put 'put ''NThdPTEpLEE9LTEsZj0wfF9KKGYsUiksTT05KTooQT0yLE09OSk6KEE9MSxNPTkpfXdoaWxlKDApO2Rve2lmKDk9PSgwfE0pKXtmb3IoTT0wLG09MDs7KXtpZigoMHxtKT49KDB8QSkpe009MzQ7YnJlYWt9aWYoKC02NCZmZVtwPj4wXSk8PDI0Pj4yNCE9LTEyOClicmVhazsobD0wfGFbRz4+''@;'; put 'put ''Ml0pPj4+MD49KDB8YVtEPj4yXSk+Pj4wJiYoUTAoUiwxKSxsPTB8YVtHPj4yXSksYVtHPj4yXT1sKzEsZmVbbD4+MF09ZixtPW0rMXwwLGY9MHxmZVtwPj4wXSxwPXArMXwwfWlmKDM0PT0oMHxNKSl7TT0wLGFbdz4+Ml09cDticmVha31hW3c+PjJdPXAsMHxmZVsxOTQ5NThdfHwobT0wfHRp''@;'; put 'put ''KGMpLGFbaz4+Ml09QSsxLGFbays0Pj4yXT1tLCRyKDAsMTA5ODI4LGspLGZlWzE5NDk1OF09MSksZj0wfF9KKGYsUil9fXdoaWxlKDApOyhsPTB8YVtHPj4yXSk+Pj4wPj0oMHxhW0Q+PjJdKT4+PjAmJihRMChSLDEpLGw9MHxhW0c+PjJdKSxhW0c+PjJdPWwrMSxmZVtsPj4wXT1mLGw9MHxh''@;'; put 'put ''W3c+PjJdfXJldHVybihsPTB8YVtHPj4yXSk+Pj4wPj0oMHxhW0Q+PjJdKT4+PjAmJihRMChSLDEpLGw9MHxhW0c+PjJdKSxmZVtsPj4wXT0wLGFbRz4+Ml09RD0wfGFbUj4+Ml0sRz0wfHJhKEQpLEMyKFIpLGxlPXEsMHxHfWZ1bmN0aW9uIF9KKGwsYyl7Y3w9MDt2YXIgQSx3LGIsZj0wLHA9''@;'; put 'put ''MCxtPTAsaz0wO2ZvcihiPWxlLGxlPWxlKzE2fDAsZmVbKG09Yik+PjBdPWx8PTAsZmVbbSsxPj4wXT0wLEE9Yys0fDAsdz1jKzh8MCxmPTB8VW8obT0wfHlrKG0pKSxwPW07ISgoMHxmKTw9MSk7KShsPTB8YVtBPj4yXSk+Pj4wPj0oMHxhW3c+PjJdKT4+PjAmJihRMChjLDEpLGw9MHxhW0E+''@;'; put 'put ''PjJdKSxrPTB8ZmVbcD4+MF0sYVtBPj4yXT1sKzEsZmVbbD4+MF09ayxmPWYrLTF8MCxwPXArMXwwO3JldHVybiBrPTB8ZmVbcD4+MF0sRnQobSksbGU9YiwwfGt9ZnVuY3Rpb24gQk4obCl7dmFyIHcsYz0wLGY9MCxwPTAsbT0wLEE9MDt3PWxlLGxlPWxlKzMyfDAsQT13LGM9dys4fDAsZj0w''@;'; put 'put ''fGFbKGx8PTApPj4yXTtlOmRve2lmKDM1IT0oMHxmZVtmPj4wXSkpe2FbQT4+Ml09YyxtPTA7dDpmb3IoOzspe2lmKCgwfG0pPj04KXtjPTA7YnJlYWsgZX1zd2l0Y2goKHA9MHxmZVtmK20+PjBdKTw8MjQ+PjI0KXtjYXNlIDA6Yz0wO2JyZWFrIGU7Y2FzZSA1OTpicmVhayB0fWZlW2M+PjBd''@;'; put 'put ''PXAsYz1jKzF8MCxtPW0rMXwwfWZlW2M+PjBdPTAsKGM9MHxudyhBLDIzNjY0LDI1Miw4LDk2KSk/KGY9ZisobSsxKXwwLGM9MHxhW2MrND4+Ml0pOmM9MH1lbHNle2M9MjU1JihBPTB8ZmVbZisxPj4wXSk7dDpkb3tpZigoMzJ8QSk8PDI0Pj4yND09MTIwKWZvcihBPTAsbT0yOzspe2lmKCgw''@;'; put 'put ''fG0pPj04KXtwPUE7YnJlYWsgdH1pZihjPTI1NSYocD0wfGZlW2YrbT4+MF0pLChwKy02NSYyNTUpPj02KWlmKChwKy05NyYyNTUpPj02KXtpZighKChwKy00OCYyNTUpPDEwKSl7cD1BO2JyZWFrIHR9cD0tNDh9ZWxzZSBwPS04NztlbHNlIHA9LTU1O0E9KGM9cCtjfDApKyhBPDw0KXwwLG09''@;'; put 'put ''bSsxfDB9ZWxzZSBmb3IocD0wLG09MTs7KXtpZigoMHxtKT49OHx8KGM9MjU1JihBPTB8ZmVbZittPj4wXSksKEErLTQ4JjI1NSk+PTEwKSlicmVhayB0O3A9KDEwKnB8MCktNDgrY3wwLG09bSsxfDB9fXdoaWxlKDApO2Y9KGM9NTk9PSgwfGMpKT9mKyhtKzEpfDA6ZixjPWM/cDowfX13aGls''@;'; put 'put ''ZSgwKTtyZXR1cm4gYVtsPj4yXT1mLGxlPXcsMHxjfWZ1bmN0aW9uIHlrKGwpe3ZhciBtLHcsayxjPTAsZj0wLHA9MCxBPTAsYj0wO2ZvcihrPWxlLGxlPWxlKzEwNTZ8MCx3PWsrOHwwLGFbKG09ayk+PjJdPWx8PTAsdXModywxMDI0LGsrMjR8MCksYj13KzR8MCxBPXcrOHwwO2FbbT4+Ml09''@;'; put 'put ''bCsxLChjPTB8ZmVbbD4+MF0pPDwyND4+MjQ7KXtsPTI1NSZjLGM8PDI0Pj4yND09Mzg/KGw9MHxCTihtKSk/cD01OihsPTM4LHA9Nik6cD01O2Rve2lmKDU9PSgwfHApKWlmKHA9MCxsPj4+MDwxMjcpcD02O2Vsc2V7aWYoZj0oYz0wfGFbYj4+Ml0pPj4+MD49KDB8YVtBPj4yXSk+Pj4wLGw+''@;'; put 'put ''Pj4wPDIwNDcpe2YmJihRMCh3LDEpLGM9MHxhW2I+PjJdKSxhW2I+PjJdPWMrMSxmZVtjPj4wXT1sPj4+NnwxOTIsKGM9MHxhW2I+PjJdKT4+PjA+PSgwfGFbQT4+Ml0pPj4+MCYmKFEwKHcsMSksYz0wfGFbYj4+Ml0pLGw9NjMmbHwxMjg7YnJlYWt9ZiYmKFEwKHcsMSksYz0wfGFbYj4+Ml0p''@;'; put 'put ''LGFbYj4+Ml09YysxLGZlW2M+PjBdPWw+Pj4xMnwyMjQsKGM9MHxhW2I+PjJdKT4+PjA+PSgwfGFbQT4+Ml0pPj4+MCYmKFEwKHcsMSksYz0wfGFbYj4+Ml0pLGFbYj4+Ml09YysxLGZlW2M+PjBdPWw+Pj42JjYzfDEyOCwoYz0wfGFbYj4+Ml0pPj4+MD49KDB8YVtBPj4yXSk+Pj4wJiYoUTAo''@;'; put 'put ''dywxKSxjPTB8YVtiPj4yXSksbD02MyZsfDEyOH19d2hpbGUoMCk7Nj09KDB8cCkmJihjPTB8YVtiPj4yXSk+Pj4wPj0oMHxhW0E+PjJdKT4+PjAmJihRMCh3LDEpLGM9MHxhW2I+PjJdKSxhW2I+PjJdPWMrMSxmZVtjPj4wXT1sLGw9MHxhW20+PjJdfXJldHVybihsPTB8YVtiPj4yXSk+Pj4w''@;'; put 'put ''Pj0oMHxhW0E+PjJdKT4+PjAmJihRMCh3LDEpLGw9MHxhW2I+PjJdKSxmZVtsPj4wXT0wLGFbYj4+Ml09QT0wfGFbdz4+Ml0sYj0wfHJhKEEpLEMyKHcpLGxlPWssMHxifWZ1bmN0aW9uIENKKGwpe2x8PTA7dmFyIG0sdyxjPTAsZj0wLHA9MCxBPTA7Zm9yKHc9bGUsbGU9bGUrMTA0MHwwLHVz''@;'; put 'put ''KG09dywxMDI0LHcrMTZ8MCksQT1tKzR8MCxwPW0rOHwwO2M9bCsxfDAsKGY9MHxmZVtsPj4wXSk8PDI0Pj4yNDspKDI1NSZmKTwxMjc/KChsPTB8YVtBPj4yXSk+Pj4wPj0oMHxhW3A+PjJdKT4+PjAmJihRMChtLDEpLGw9MHxhW0E+PjJdKSxhW0E+PjJdPWwrMSxmZVtsPj4wXT1mLGw9Yyk6''@;'; put 'put ''KGY9NjMmZmVbYz4+MF18Zjw8NiYyNTUsKGM9MHxhW0E+PjJdKT4+PjA+PSgwfGFbcD4+Ml0pPj4+MCYmKFEwKG0sMSksYz0wfGFbQT4+Ml0pLGFbQT4+Ml09YysxLGZlW2M+PjBdPWYsbD1sKzJ8MCk7cmV0dXJuKGw9MHxhW0E+PjJdKT4+PjA+PSgwfGFbcD4+Ml0pPj4+MCYmKFEwKG0sMSks''@;'; put 'put ''bD0wfGFbQT4+Ml0pLGZlW2w+PjBdPTAsYVtBPj4yXT1wPTB8YVttPj4yXSxBPTB8cmEocCksQzIobSksbGU9dywwfEF9ZnVuY3Rpb24gQmxlKGwsYyl7dmFyIHAsbSxBLHcsYixrLEQsZj0wLE09MDtyZXR1cm4gRD1sZSxsZT1sZSs4MHwwLHA9RCs0OHwwLGY9RCszMnwwLG09RCs2NHwwLEE9''@;'; put 'put ''RCsxNnwwLHc9RCwrX1soYj0xNisoY3w9MCl8MCk+PjNdPj0rX1s0OCsoTT0wfGFbKGs9MTYrKGx8PTApfDApPj4yXSk+PjNdJiYrX1tNKzY0Pj4zXT49K19bYz4+M10mJitfW2MrMjQ+PjNdPj0rX1tNKzU2Pj4zXSYmK19bTSs3Mj4+M10+PStfW2MrOD4+M10/KE09TSsxNnwwLGFbZj4+Ml09''@;'; put 'put ''YVtiPj4yXSxhW2YrND4+Ml09YVtiKzQ+PjJdLGFbZis4Pj4yXT1hW2IrOD4+Ml0sYVtmKzEyPj4yXT1hW2IrMTI+PjJdLGFbcD4+Ml09YVtjPj4yXSxhW3ArND4+Ml09YVtjKzQ+PjJdLGFbcCs4Pj4yXT1hW2MrOD4+Ml0sYVtwKzEyPj4yXT1hW2MrMTI+PjJdLGZ1bmN0aW9uIFBsZShsLGMs''@;'; put 'put ''Zil7dmFyIHA7cD0uNSooK19bOCsoZnw9MCk+PjNdKyArX1s4KyhjfD0wKT4+M10pLF9bKGx8PTApPj4zXT0uNSooK19bZj4+M10rICtfW2M+PjNdKSxfW2wrOD4+M109cH0oQSxmLHApLGFbZj4+Ml09YVtNPj4yXSxhW2YrND4+Ml09YVtNKzQ+PjJdLGFbZis4Pj4yXT1hW00rOD4+Ml0sYVtm''@;'; put 'put ''KzEyPj4yXT1hW00rMTI+PjJdLGFbcD4+Ml09YVtBPj4yXSxhW3ArND4+Ml09YVtBKzQ+PjJdLGFbcCs4Pj4yXT1hW0ErOD4+Ml0sYVtwKzEyPj4yXT1hW0ErMTI+PjJdLFROKHcsZixwKSxhW20+PjJdPWwsYVttKzQ+PjJdPTAsZj0wfGFbMTIrKDB8YVs0KygwfGFbOCsoMHxhW2s+PjJdKT4+''@;'; put 'put ''Ml0pPj4yXSk+PjJdLGFbcD4+Ml09YVt3Pj4yXSxhW3ArND4+Ml09YVt3KzQ+PjJdLGFbcCs4Pj4yXT1hW3crOD4+Ml0sYVtwKzEyPj4yXT1hW3crMTI+PjJdLGY9MHxCaVsxMjcmZl0obSxwKSk6Zj0wLGxlPUQsMHxmfWZ1bmN0aW9uIFBOKGwsYyl7dmFyIHAsbSxBLHcsYixrLE0sRDtyZXR1''@;'; put 'put ''cm4gY3w9MCxwPWxlLGxlPWxlKzgwfDAsYj1wKzY0fDAsaz1wKzQ4fDAsRD1wKzMyfDAsQT1wKzE2fDAsX1soTT1wKT4+M109LjUqK19bMjQrKGx8PTApPj4zXSxfW00rOD4+M109LjUqK19bbCszMj4+M10sYVtrPj4yXT1hWyhsPWwrNTZ8MCk+PjJdLGFbays0Pj4yXT1hW2wrND4+Ml0sYVtr''@;'; put 'put ''Kzg+PjJdPWFbbCs4Pj4yXSxhW2srMTI+PjJdPWFbbCsxMj4+Ml0sYVtiPj4yXT1hW00+PjJdLGFbYis0Pj4yXT1hW00rND4+Ml0sYVtiKzg+PjJdPWFbTSs4Pj4yXSxhW2IrMTI+PjJdPWFbTSsxMj4+Ml0sVE4oRCxrLGIpLHc9K19bRD4+M10sbT0rX1tEKzg+PjNdLGFbaz4+Ml09YVtsPj4y''@;'; put 'put ''XSxhW2srND4+Ml09YVtsKzQ+PjJdLGFbays4Pj4yXT1hW2wrOD4+Ml0sYVtrKzEyPj4yXT1hW2wrMTI+PjJdLGFbYj4+Ml09YVtNPj4yXSxhW2IrND4+Ml09YVtNKzQ+PjJdLGFbYis4Pj4yXT1hW00rOD4+Ml0sYVtiKzEyPj4yXT1hW00rMTI+PjJdLEFKKEEsayxiKSxsZT1wLDB8KCtfW2Mr''@;'; put 'put ''MTY+PjNdPj13JiYrX1tBPj4zXT49K19bYz4+M10mJitfW2MrMjQ+PjNdPj1tPytfW0ErOD4+M10+PStfW2MrOD4+M10mMTowKX1mdW5jdGlvbiBrSihsLGMpe2N8PTA7dmFyIHcsYixrLE0sUixmPTAscD0wLG09MCxBPTAsRD0wO1I9bGUsbGU9bGUrODB8MCxNPVIrNDh8MCxrPVIsYj0wfGFb''@;'; put 'put ''OCsobD0wfGFbKHc9MTYrKGx8PTApfDApPj4yXSk+PjJdO2U6ZG97aWYoMCE9KDB8YikmJihBPWIrOHwwLGFbaz4+Ml09YVtBPj4yXSxhW2srND4+Ml09YVtBKzQ+PjJdLGFbays4Pj4yXT1hW0ErOD4+Ml0sYVtrKzEyPj4yXT1hW0ErMTI+PjJdLGFbaysxNj4+Ml09YVtBKzE2Pj4yXSxhW2sr''@;'; put 'put ''MjA+PjJdPWFbQSsyMD4+Ml0sYVtrKzI0Pj4yXT1hW0ErMjQ+PjJdLGFbaysyOD4+Ml09YVtBKzI4Pj4yXSxhW00+PjJdPWFbYz4+Ml0sYVtNKzQ+PjJdPWFbYys0Pj4yXSxhW00rOD4+Ml09YVtjKzg+PjJdLGFbTSsxMj4+Ml09YVtjKzEyPj4yXSxhW00rMTY+PjJdPWFbYysxNj4+Ml0sYVtN''@;'; put 'put ''KzIwPj4yXT1hW2MrMjA+PjJdLGFbTSsyND4+Ml09YVtjKzI0Pj4yXSxhW00rMjg+PjJdPWFbYysyOD4+Ml0sMCE9KDB8RmxlKGssTSkpKSl7Zm9yKGY9Yis0fDAsbD0wOyEoKDB8bCk+PSgwfGFbZj4+Ml0pKTspe209KDB8YVtiPj4yXSkrKDQ4Kmx8MCl8MCxBPShwPWspKzQ4fDA7ZG97YVtw''@;'; put 'put ''Pj4yXT1hW20+PjJdLHA9cCs0fDAsbT1tKzR8MH13aGlsZSgoMHxwKTwoMHxBKSk7aWYoYVtNPj4yXT1hW2M+PjJdLGFbTSs0Pj4yXT1hW2MrND4+Ml0sYVtNKzg+PjJdPWFbYys4Pj4yXSxhW00rMTI+PjJdPWFbYysxMj4+Ml0sYVtNKzE2Pj4yXT1hW2MrMTY+PjJdLGFbTSsyMD4+Ml09YVtj''@;'; put 'put ''KzIwPj4yXSxhW00rMjQ+PjJdPWFbYysyND4+Ml0sYVtNKzI4Pj4yXT1hW2MrMjg+PjJdLCgwfEhsZShrLE0pKTw8MjQ+PjI0KXtsPTE7YnJlYWsgZX1sPWwrMXwwfWw9MHxhW3c+PjJdLEQ9N31lbHNlIEQ9N313aGlsZSgwKTtkb3tpZig3PT0oMHxEKSl7aWYoMHwobD0wfGFbbCs5Nj4+Ml0p''@;'; put 'put ''JiYoYVtNPj4yXT1hW2M+PjJdLGFbTSs0Pj4yXT1hW2MrND4+Ml0sYVtNKzg+PjJdPWFbYys4Pj4yXSxhW00rMTI+PjJdPWFbYysxMj4+Ml0sYVtNKzE2Pj4yXT1hW2MrMTY+PjJdLGFbTSsyMD4+Ml09YVtjKzIwPj4yXSxhW00rMjQ+PjJdPWFbYysyND4+Ml0sYVtNKzI4Pj4yXT1hW2MrMjg+''@;'; put 'put ''PjJdLCgwfFBOKGwsTSkpPDwyND4+MjQpKXtsPTE7YnJlYWt9bD0wfX13aGlsZSgwKTtyZXR1cm4gbGU9UiwwfGx9ZnVuY3Rpb24gRmxlKGwsYyl7cmV0dXJuIDB8KCtfWzE2KyhsfD0wKT4+M10+PStfWyhjfD0wKT4+M10mJitfW2MrMTY+PjNdPj0rX1tsPj4zXSYmK19bbCsyND4+M10+PStf''@;'; put 'put ''W2MrOD4+M10/K19bYysyND4+M10+PStfW2wrOD4+M10mMTowKX1mdW5jdGlvbiBIbGUobCxjKXtjfD0wO3ZhciBtLGIsayxNLFIsZj0wLHA9MCxBPTAsdz0wLEQ9MDtmb3IoUj1sZSxsZT1sZSs5NnwwLE09Uis2NHwwLGs9Uis0OHwwLGI9UiszMnwwLG09UisxNnwwLEE9UiwoZj0wfGFbKEQ9''@;'; put 'put ''NCsobHw9MCl8MCk+PjJdKXx8UHIoMTA5OTM3LDEwNzY2MSwxNjM3LDEwOTk0NSksYVtBPj4yXT1hWyhwPTB8YVtsPj4yXSk+PjJdLGFbQSs0Pj4yXT1hW3ArND4+Ml0sYVtBKzg+PjJdPWFbcCs4Pj4yXSxhW0ErMTI+PjJdPWFbcCsxMj4+Ml0scD0xOzspe2lmKCgwfHApPj0oMHxmKSl7dz03''@;'; put 'put ''O2JyZWFrfWlmKGFbbT4+Ml09YVsoZj0oMHxhW2w+PjJdKSsocDw8NCl8MCk+PjJdLGFbbSs0Pj4yXT1hW2YrND4+Ml0sYVttKzg+PjJdPWFbZis4Pj4yXSxhW20rMTI+PjJdPWFbZisxMj4+Ml0sYVtiPj4yXT1hW2Y+PjJdLGFbYis0Pj4yXT1hW2YrND4+Ml0sYVtiKzg+PjJdPWFbZis4Pj4y''@;'; put 'put ''XSxhW2IrMTI+PjJdPWFbZisxMj4+Ml0sYVtrPj4yXT1hW0E+PjJdLGFbays0Pj4yXT1hW0ErND4+Ml0sYVtrKzg+PjJdPWFbQSs4Pj4yXSxhW2srMTI+PjJdPWFbQSsxMj4+Ml0sYVtNPj4yXT1hW2M+PjJdLGFbTSs0Pj4yXT1hW2MrND4+Ml0sYVtNKzg+PjJdPWFbYys4Pj4yXSxhW00rMTI+''@;'; put 'put ''PjJdPWFbYysxMj4+Ml0sYVtNKzE2Pj4yXT1hW2MrMTY+PjJdLGFbTSsyMD4+Ml09YVtjKzIwPj4yXSxhW00rMjQ+PjJdPWFbYysyND4+Ml0sYVtNKzI4Pj4yXT1hW2MrMjg+PjJdLC0xIT0oMHxZSShiLGssTSkpKXtmPTE7YnJlYWt9YVtBPj4yXT1hW20+PjJdLGFbQSs0Pj4yXT1hW20rND4+''@;'; put 'put ''Ml0sYVtBKzg+PjJdPWFbbSs4Pj4yXSxhW0ErMTI+PjJdPWFbbSsxMj4+Ml0scD1wKzF8MCxmPTB8YVtEPj4yXX1kb3tpZig3PT0oMHx3KSl7aWYoMHwoZj0wfGFbbCs4Pj4yXSkmJih3PTB8YVtsPj4yXSxhW2I+PjJdPWFbKEE9bCsxNnwwKT4+Ml0sYVtiKzQ+PjJdPWFbQSs0Pj4yXSxhW2Ir''@;'; put 'put ''OD4+Ml09YVtBKzg+PjJdLGFbYisxMj4+Ml09YVtBKzEyPj4yXSxhW2s+PjJdPWFbdz4+Ml0sYVtrKzQ+PjJdPWFbdys0Pj4yXSxhW2srOD4+Ml09YVt3Kzg+PjJdLGFbaysxMj4+Ml09YVt3KzEyPj4yXSxhW00+PjJdPWFbYz4+Ml0sYVtNKzQ+PjJdPWFbYys0Pj4yXSxhW00rOD4+Ml09YVtj''@;'; put 'put ''Kzg+PjJdLGFbTSsxMj4+Ml09YVtjKzEyPj4yXSxhW00rMTY+PjJdPWFbYysxNj4+Ml0sYVtNKzIwPj4yXT1hW2MrMjA+PjJdLGFbTSsyND4+Ml09YVtjKzI0Pj4yXSxhW00rMjg+PjJdPWFbYysyOD4+Ml0sKDB8U0ooYixrLDAsTSkpPDwyND4+MjQpKXtmPTE7YnJlYWt9aWYoMHwoZj0wfGFb''@;'; put 'put ''bCsxMj4+Ml0pJiYoRD0oMHxhW2w+PjJdKSsoKDB8YVtEPj4yXSktMTw8NCl8MCxhW2I+PjJdPWFbKHc9bCszMnwwKT4+Ml0sYVtiKzQ+PjJdPWFbdys0Pj4yXSxhW2IrOD4+Ml09YVt3Kzg+PjJdLGFbYisxMj4+Ml09YVt3KzEyPj4yXSxhW2s+PjJdPWFbRD4+Ml0sYVtrKzQ+PjJdPWFbRCs0''@;'; put 'put ''Pj4yXSxhW2srOD4+Ml09YVtEKzg+PjJdLGFbaysxMj4+Ml09YVtEKzEyPj4yXSxhW00+PjJdPWFbYz4+Ml0sYVtNKzQ+PjJdPWFbYys0Pj4yXSxhW00rOD4+Ml09YVtjKzg+PjJdLGFbTSsxMj4+Ml09YVtjKzEyPj4yXSxhW00rMTY+PjJdPWFbYysxNj4+Ml0sYVtNKzIwPj4yXT1hW2MrMjA+''@;'; put 'put ''PjJdLGFbTSsyND4+Ml09YVtjKzI0Pj4yXSxhW00rMjg+PjJdPWFbYysyOD4+Ml0sKDB8U0ooYixrLDAsTSkpPDwyND4+MjQpKXtmPTE7YnJlYWt9Zj0wfX13aGlsZSgwKTtyZXR1cm4gbGU9UiwwfGZ9ZnVuY3Rpb24gU0oobCxjLGYscCl7Y3w9MDt2YXIgQSx3LGIsayxNLEQsbT0wLFI9MDty''@;'; put 'put ''ZXR1cm4gTT1sZSxsZT1sZSsxNjB8MCxBPU0rMTQ0fDAsRD1NKzk2fDAsdz1NKzY0fDAsYj1NKzMyfDAsaz1NLFI9K19bMTYrKHB8PTApPj4zXSxhWyhtPU0rMTI4fDApPj4yXT1hWyhsfD0wKT4+Ml0sYVttKzQ+PjJdPWFbbCs0Pj4yXSxhW20rOD4+Ml09YVtsKzg+PjJdLGFbbSsxMj4+Ml09''@;'; put 'put ''YVtsKzEyPj4yXSxhW0E+PjJdPWFbYz4+Ml0sYVtBKzQ+PjJdPWFbYys0Pj4yXSxhW0ErOD4+Ml09YVtjKzg+PjJdLGFbQSsxMj4+Ml09YVtjKzEyPj4yXSxGQShELG0sQSwxKSxtPVI+PStfW0Q+PjNdJiYoYVttPj4yXT1hW2w+PjJdLGFbbSs0Pj4yXT1hW2wrND4+Ml0sYVttKzg+PjJdPWFb''@;'; put 'put ''bCs4Pj4yXSxhW20rMTI+PjJdPWFbbCsxMj4+Ml0sYVtBPj4yXT1hW2M+PjJdLGFbQSs0Pj4yXT1hW2MrND4+Ml0sYVtBKzg+PjJdPWFbYys4Pj4yXSxhW0ErMTI+PjJdPWFbYysxMj4+Ml0sRkEodyxtLEEsMSksK19bdysxNj4+M10+PStfW3A+PjNdKSYmKFI9K19bcCsyND4+M10sYVttPj4y''@;'; put 'put ''XT1hW2w+PjJdLGFbbSs0Pj4yXT1hW2wrND4+Ml0sYVttKzg+PjJdPWFbbCs4Pj4yXSxhW20rMTI+PjJdPWFbbCsxMj4+Ml0sYVtBPj4yXT1hW2M+PjJdLGFbQSs0Pj4yXT1hW2MrND4+Ml0sYVtBKzg+PjJdPWFbYys4Pj4yXSxhW0ErMTI+PjJdPWFbYysxMj4+Ml0sRkEoYixtLEEsMSksUj49''@;'; put 'put ''K19bYis4Pj4zXSkmJihhW20+PjJdPWFbbD4+Ml0sYVttKzQ+PjJdPWFbbCs0Pj4yXSxhW20rOD4+Ml09YVtsKzg+PjJdLGFbbSsxMj4+Ml09YVtsKzEyPj4yXSxhW0E+PjJdPWFbYz4+Ml0sYVtBKzQ+PjJdPWFbYys0Pj4yXSxhW0ErOD4+Ml09YVtjKzg+PjJdLGFbQSsxMj4+Ml09YVtjKzEy''@;'; put 'put ''Pj4yXSxGQShrLG0sQSwxKSwrX1trKzI0Pj4zXT49K19bcCs4Pj4zXSk/MTowLGxlPU0sMHxtfWZ1bmN0aW9uIHI0KGwsYyl7dmFyIGY7Y3w9MCwoZj0wfExpKGx8PTAsMTEwMDU2KSkmJihjPTB8ZmVbZj4+MF0/MHxmdW5jdGlvbiBObGUobCxjKXtsfD0wLGN8PTA7dmFyIHAsbSxmPTA7bT1s''@;'; put 'put ''ZSxsZT1sZSsxNnwwLHA9bTtlOmRve2lmKDAhPSgwfGwpJiYoZj0wfGZlW2w+PjBdLGY8PDI0Pj4yNCE9MCkpe3N3aXRjaChmPDwyND4+MjR8MCl7Y2FzZSA0ODpjPTI7YnJlYWsgZTtjYXNlIDU3OmNhc2UgNTY6Y2FzZSA1NTpjYXNlIDU0OmNhc2UgNTM6Y2FzZSA1MjpjYXNlIDUxOmNhc2Ug''@;'; put 'put ''NTA6Y2FzZSA0OTpjPTEwO2JyZWFrIGU7Y2FzZSA2NzpjYXNlIDk5OmlmKCEoMHx5MChmPWwrMXwwLDEwOTk2MCkpKXtjPTQ7YnJlYWsgZX1pZighKDB8eTAoZiwxMDk5NjYpKSl7Yz0xMjticmVhayBlfWJyZWFrO2Nhc2UgNzA6Y2FzZSAxMDI6aWYoISgwfHkwKGwrMXwwLDEwOTk3NCkpKXtj''@;'; put 'put ''PTI7YnJlYWsgZX1icmVhaztjYXNlIDc2OmNhc2UgMTA4OmlmKCEoMHx5MChsKzF8MCwxMDk5NzkpKSl7Yz0yO2JyZWFrIGV9YnJlYWs7Y2FzZSA3ODpjYXNlIDExMDppZighKDB8eTAoZj1sKzF8MCwxMDk5ODMpKSl7Yz0wO2JyZWFrIGV9aWYoISgwfHkwKGYsMTA5OTg3KSkpe2M9MjticmVh''@;'; put 'put ''ayBlfWJyZWFrO2Nhc2UgNzk6Y2FzZSAxMTE6aWYoISgwfHkwKGwrMXwwLDEwOTk4OSkpKXtjPTg7YnJlYWsgZX1icmVhaztjYXNlIDgwOmNhc2UgMTEyOmlmKCEoMHx5MChsKzF8MCwxMDk5OTQpKSl7Yz02O2JyZWFrIGV9YnJlYWs7Y2FzZSA4MzpjYXNlIDExNTppZighKDB8eTAobCsxfDAs''@;'; put 'put ''MTEwMDAyKSkpe2M9MTA7YnJlYWsgZX1icmVhaztjYXNlIDg0OmNhc2UgMTE2OmlmKCEoMHx5MChsKzF8MCwxMTAwMDgpKSl7Yz0xMDticmVhayBlfWJyZWFrO2Nhc2UgODk6Y2FzZSAxMjE6aWYoISgwfHkwKGwrMXwwLDExMDAxMikpKXtjPTEwO2JyZWFrIGV9fWFbcD4+Ml09bCwkcigwLDEx''@;'; put 'put ''MDAxNSxwKX19d2hpbGUoMCk7cmV0dXJuIGxlPW0sMHxjfShmLGMpOjApLGl0WyhsPTEzNisoMHxhW2wrMTY+PjJdKXwwKT4+MV09Y3xocltsPj4xXX1mdW5jdGlvbiB3RChsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHA9K3A7dmFyIHEsZ2UsT2UsTGUsUmUsQT0wLHc9MCxiPTAsaz0wLE09''@;'; put 'put ''MCxEPTAsUj0wLEc9MCxwZT0wLGJlPTAsSGU9MDtSZT1sZSxsZT1sZSszMnwwLHE9UmUrMTZ8MCxnZT1SZSxPZT0xJihtfD0wKSxMZT0yJm07ZTpkb3tpZigyPT0oMHxmKSliZT0rX1tsKzE2Pj4zXSxBPStfW2w+PjNdLGs9K19bbCsyND4+M10sYj0rX1tsKzg+PjNdLEEtPWJlLUEsX1txPj4z''@;'; put 'put ''XT1BLF9bZ2U+PjNdPWJlLGItPWstYixfW3ErOD4+M109YixfW2dlKzg+PjNdPWs7ZWxzZSBmb3Iodz0rX1tsPj4zXSxfW2dlPj4zXT13LF9bcT4+M109dyxrPStfW2wrOD4+M10sRD1nZSs4fDAsX1tEPj4zXT1rLFI9cSs4fDAsX1tSPj4zXT1rLG09MCxBPXcsYj1rOzspe2lmKCgwfG0pPj0o''@;'; put 'put ''MHxmKSl7YmU9dzticmVhayBlfV9bcT4+M109TT0rX1soKHBlPStfWyhIZT1sKyhtPDw0KXwwKT4+M10pPEE/SGU6cSk+PjNdLF9bUj4+M109Rz0rX1soKGJlPStfW2wrKG08PDQpKzg+PjNdKTxiP0hlOnEpKzg+PjNdLF9bZ2U+PjNdPXBlPStfWyhwZT53P0hlOmdlKT4+M10sX1tEPj4zXT1i''@;'; put 'put ''ZT0rX1soYmU+az9IZTpnZSkrOD4+M10sbT1tKzF8MCxBPU0sYj1HLHc9cGUsaz1iZX19d2hpbGUoMCk7cGU9KHc9LjUqKGJlLUEpKStBLE09KEc9LjUqKGstYikpK2IsT2U/KHA9K0QwKCsoRypHK3cqdykpLF9bYys4Pj4zXT0wfExlP006LU0sX1tjPj4zXT1wZSxfW2MrMTY+PjNdPS4yNSpw''@;'; put 'put ''LF9bYysyND4+M109cCk6KEE9ay1NLGI9K0RhKCsoaz1wKSksaz0raGEoK2spLExlPyh3PU0tKEEqPWIpLEErPU0pOih3PWIqQS1NLEE9LU0tRypiKSxfW2MrOD4+M109dyxfW2MrMjQ+PjNdPUEsX1tjPj4zXT1wZS0ocD1rKihiZS1wZSkpLF9bYysxNj4+M109cCtwZSksbGU9UmV9ZnVuY3Rp''@;'; put 'put ''b24gVHkobCxjKXt2YXIgcCxtLGY9MDttPTB8YVsocD0xNisobHw9MCl8MCk+PjJdLChjfD0wKTw8MjQ+PjI0PyhfW20rODg+PjNdPWY9MzYqK19bbSs0MD4+M10sbD1tKzMyfDApOihfW20rODg+PjNdPWY9MzYqK19bbSszMj4+M10sbD1tKzQwfDApLF9bbSs5Nj4+M109ZixfWzgwKygwfGFb''@;'; put 'put ''cD4+Ml0pPj4zXT03MiorX1tsPj4zXX1mdW5jdGlvbiBNSihsLGMsZixwKXt2YXIgbTtwfD0wLGFbKGZ8PTApPj4yXT0obT0oMHwobD0wfGFbMjM2KygwfGFbMTYrKGx8PTApPj4yXSk+PjJdKSk+KDB8KGM9MHxhWzIzNisoMHxhWzE2KyhjfD0wKT4+Ml0pPj4yXSkpKT9jOmwsYVtwPj4yXT1t''@;'; put 'put ''P2w6Y31mdW5jdGlvbiBGTihsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgTSxtPTAsQT0wLHc9MCxiPTAsaz0wLEQ9MDtNPWxlLGxlPWxlKzE2fDAsQT1NKzR8MCxtPU0sbD0wfGFbMTYrKGx8PTApPj4yXTtkb3tpZigxPT0oMHxmZVtsKzE1Nj4+MF0pKXtpZihrPTB8YVtsKzIzNj4+Ml0s''@;'; put 'put ''MHxhW2wrMTc2Pj4yXSl7Zm9yKHc9MHxhW2wrMTgwPj4yXSxsPTAsbT0wLEE9MDtiPTB8YVt3KyhBPDwyKT4+Ml07KWw9KGI9KDB8KEQ9MHxhWzIzNisoMHxhWzE2KygwfGFbKDI9PSgzJmFbYj4+Ml18MCk/YjpiKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSk+KDB8ZikpPygwfEQpPCgwfHAp''@;'; put 'put ''P2w6MTpsLG09Yj9tOjEsQT1BKzF8MDtpZihtPDwyND4+MjQhPTAmbDw8MjQ+PjI0PT0wKXthW2M+PjJdPWsrMTticmVha31pZighKG08PDI0Pj4yND09MCZsPDwyND4+MjQhPTApKWJyZWFrO2FbYys0Pj4yXT1rKy0xO2JyZWFrfWlmKDIhPSgwfGFbbCsxODQ+PjJdKSYmUHIoODgzOTcsODg0''@;'; put 'put ''MTcsNjMsODg0MjQpLE1KKDB8YVsoMj09KDMmYVsoRD0wfGFbKHc9MHxhW2wrMTgwPj4yXSk+PjJdKT4+Ml18MCk/RDpEKy00OHwwKSs0MD4+Ml0sMHxhWygyPT0oMyZhWyh3PTB8YVt3KzQ+PjJdKT4+Ml18MCk/dzp3Ky00OHwwKSs0MD4+Ml0sQSxtKSwoMHwodz0wfGFbbT4+Ml0pKTw9KDB8''@;'; put 'put ''Zikpe2FbYz4+Ml09ayxhW2MrOD4+Ml09azticmVha31pZigoMHwobD0wfGFbQT4+Ml0pKT49KDB8cCkpe2FbYys0Pj4yXT1rLGFbYysxMj4+Ml09azticmVha31pZighKChBPSgwfHcpPigwfHApKSYobT0oMHxsKTwoMHxmKSkpKXtpZighbSYmISgoMHx3KTwoMHxwKSYoMHxsKT09KDB8Zikp''@;'; put 'put ''fHwoYVtjKzg+PjJdPWspLCEoQXx8KDB8dyk9PSgwfHApJigwfGwpPigwfGYpKSlicmVhazthW2MrMTI+PjJdPWt9fX13aGlsZSgwKTtsZT1NfWZ1bmN0aW9uIHdrKGwpe3ZhciBjO2gwKGx8PTAsMTM3NDQ3LDMwNCwxKSxnRChsKSxjPTB8dnIoKDB8aHJbMTc2KygwfGFbMTYrKDB8Y3IobCkp''@;'; put 'put ''Pj4yXSk+PjFdKTw8MyksYVsxMzIrKDB8YVtsKzE2Pj4yXSk+PjJdPWMsVHkobCwxJmFbMTE2KygwfGFbMTYrKDB8Y3IobCkpPj4yXSk+PjJdKX1mdW5jdGlvbiBFSihsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBBLHcsayxHLHBlLG09MCxiPTAsTT0wLEQ9MCxSPTAscT0wLGdl''@;'; put 'put ''PTAsYmU9MDtwZT1sZSxsZT1sZSs2NHwwLHc9cGUrNDh8MCxEPXBlKzQwfDAsYj1wZSsyNHwwLEE9cGUrOHwwLEc9cGUrNTZ8MCxrPXBlO2Rve2lmKDAhPSgwfGwpJiYoUj0wfGFbMTMyKygwfGFbKHE9ZisxNnwwKT4+Ml0pPj4yXSxtPTB8SG8oZixsKSwwIT0oMHxmZVttPj4wXSkpKXtpZihm''@;'; put 'put ''ZVtHPj4wXT0wLGw9Uis4fDAsKDB8YVs0NzEzN10pPjImJihhW0E+PjJdPVIsYVtBKzQ+PjJdPWwsYVtBKzg+PjJdPVIrMTYsYVtBKzEyPj4yXT1HLCgwfGlsKG0sODg1MzUsQSkpPjIpKXtmZVsxMTkrKDB8YVtxPj4yXSk+PjBdPTEsbT0wfGFbNDcxMzddO2U6ZG97aWYoK19bMjMyOTNdPjAp''@;'; put 'put ''Zm9yKGw9MDs7KXtpZigoMHxsKT49KDB8bSkpYnJlYWsgZTtfWyhEPVIrKGw8PDMpfDApPj4zXT0rX1tEPj4zXS8rX1syMzI5M10sbD1sKzF8MH19d2hpbGUoMCk7aWYoKDB8bSk+MyYmUUooZixwLDMpLDMzIT0oMHxmZVtHPj4wXSkpe2lmKCFjKXtsPTE7YnJlYWt9aWYoISgoMHx0MSgwfEhv''@;'; put 'put ''KGYsYykpKTw8MjQ+PjI0KSl7bD0xO2JyZWFrfX1mZVsxMTkrKDB8YVtxPj4yXSk+PjBdPTMsbD0xO2JyZWFrfWlmKGFbYj4+Ml09UixhW2IrND4+Ml09bCxhW2IrOD4+Ml09RywoMHxpbChtLDEwMTc0OSxiKSk8PTEpe2Fbdz4+Ml09MHx0aShmKSxhW3crND4+Ml09bSwkcigxLDg4NTQ5LHcp''@;'; put 'put ''LGw9MDticmVha31mZVsxMTkrKDB8YVtxPj4yXSk+PjBdPTEsbT0wfGFbNDcxMzddO2U6ZG97aWYoK19bMjMyOTNdPjApZm9yKGw9MDs7KXtpZigoMHxsKT49KDB8bSkpYnJlYWsgZTtfWyhiPVIrKGw8PDMpfDApPj4zXT0rX1tiPj4zXS8rX1syMzI5M10sbD1sKzF8MH19d2hpbGUoMCk7ZG97''@;'; put 'put ''aWYoKDB8bSk+Mil7aWYoMHwobD0wfGFbNDcxNzFdKSYmMHwoTT0wfEhvKGYsbCkpJiYoYVtEPj4yXT1rLDE9PSgwfGlsKE0sMTAxMjA5LEQpKSkpe2dlPStfW2s+PjNdLF9bUisxNj4+M109KGJlPStfWzIzMjkzXSk+MD9nZS9iZTpnZSxRSihmLHAsMyk7YnJlYWt9dFYoZixwKX19d2hpbGUo''@;'; put 'put ''MCk7aWYoMzMhPSgwfGZlW0c+PjBdKSl7aWYoIWMpe2w9MTticmVha31pZighKCgwfHQxKDB8SG8oZixjKSkpPDwyND4+MjQpKXtsPTE7YnJlYWt9fWZlWzExOSsoMHxhW3E+PjJdKT4+MF09MyxsPTF9ZWxzZSBsPTB9d2hpbGUoMCk7cmV0dXJuIGxlPXBlLDB8bH1mdW5jdGlvbiBZbGUobCxj''@;'; put 'put ''KXtjfD0wO3ZhciBiLGssTSxHLGY9MCxwPTAsbT0wLEE9MCx3PTAsRD0wLFI9MDtmb3IoRz1sZSxsZT1sZSs0OHwwLGs9RyszMnwwLEQ9RyxiPTB8c2kobHw9MCwwLDEwMjYzNywwKSxmPTB8c2kobCwwLDEwMjY3MSwwKSxSPSgwfG5nKDB8TGkobCw4ODU5MyksMCkpPDwyND4+MjQhPTAsZnx8''@;'; put 'put ''KGY9MHxzaShsLDAsMTAyNjcxLDE5NTA1OSkpLGZ1bmN0aW9uIGZzZShsKXtZSihsfD0wLDApfShsKSxNPWwrMTZ8MCxBPTA7Oyl7aWYoISh3PTB8YVsoMHxhWzE1MisoMHxhW00+PjJdKT4+Ml0pKyhBPDwyKT4+Ml0pKXtwPTEyO2JyZWFrfWlmKCEoMHxmZVsxMTkrKHA9MHxhWyhtPXcrMTZ8''@;'; put 'put ''MCk+PjJdKT4+MF0pKXtpZigwfHMyKDB8dGkodyksMTA4MDA2LDcpKXtwPTg7YnJlYWt9cD0wfGFbbT4+Ml19MHwocD0wfGFbcCsxMDg+PjJdKSYmYmsodyxwLDEwMjYzMyksQT1BKzF8MH1lOmRve2lmKDg9PSgwfHApKVI9MHx0aSh3KSxmPTB8dGkobCksYVtrPj4yXT1SLGFbays0Pj4yXT1m''@;'; put 'put ''LCRyKDEsODg2MDUsayksZj0tMTtlbHNlIGlmKDEyPT0oMHxwKSl7aWYoeEoobCxiLGYpLHc9MHxVbGUobCksMHxhWzg4KyhmPTB8YVs4KygwfGFbTT4+Ml0pPj4yXSk+PjJdPyhhW2YrODQ+PjJdPTAsZj0xKTpmPTAsKEE9MCE9KDB8ZikpfChtPTAhPSgwfGMpKSYxPT0oMHxhWzQ3MTM0XSle''@;'; put 'put ''MXx8MD09KDB8THkobCkpP3A9MDooKHA9MHxhWzEyKygwfGFbTT4+Ml0pPj4yXSkmJihmZVtwKzgxPj4wXT0wKSxwPTEpLGlnKGwpLEEmJihjPTE2KygwfGFbTT4+Ml0pfDAsX0YoRCxsKSxhW2M+PjJdPWFbRD4+Ml0sYVtjKzQ+PjJdPWFbRCs0Pj4yXSxhW2MrOD4+Ml09YVtEKzg+PjJdLGFb''@;'; put 'put ''YysxMj4+Ml09YVtEKzEyPj4yXSxhW2MrMTY+PjJdPWFbRCsxNj4+Ml0sYVtjKzIwPj4yXT1hW0QrMjA+PjJdLGFbYysyND4+Ml09YVtEKzI0Pj4yXSxhW2MrMjg+PjJdPWFbRCsyOD4+Ml0pLCFtKWZvcihhWzQ3MTM4XT0xLHA9MHxEdChsKTs7KXtpZighcClicmVhayBlO19bMTYrKFI9MHxh''@;'; put 'put ''W3ArMTY+PjJdKT4+M109NzIqK19bKEQ9MHxhW1IrMTMyPj4yXSk+PjNdLF9bUisyND4+M109NzIqK19bRCs4Pj4zXSxwPTB8enQobCxwKX1kb3tpZighKFJ8QSkpe2lmKDA9PStfWzE2KyhSPTB8YVtNPj4yXSk+PjNdJiYwPT0rX1tSKzI0Pj4zXSlicmVhaztOSihsKX19d2hpbGUoMCk7aWYo''@;'; put 'put ''MCE9KDB8dykmKHB8KDB8VU4obCkpPDwyND4+MjQhPTApKVFsZShsKTtlbHNlIGlmKDI9PSgwfHcpKXthWzQ3MTM4XT0xO2JyZWFrfVNEKGwsMCl9fXdoaWxlKDApO3JldHVybiBsZT1HLDB8Zn1mdW5jdGlvbiBiayhsLGMsZil7Y3w9MDt2YXIgcCxtLEEsYix3PTA7Yj1sZSxsZT1sZSs0OHww''@;'; put 'put ''LHc9YiszMnwwLHA9YisyNHwwLG09YisxNnwwLEE9YiwwfChsPTB8TGkobHw9MCxmfD0wKSkmJihhW3c+PjJdPXAsYVt3KzQ+PjJdPW0sMj09KDB8aWwobCwxMDU1MDMsdykpKSYmKHc9Yys1NnwwLFRKKEEsK19bcD4+M10sK19bbT4+M10pLGFbdz4+Ml09YVtBPj4yXSxhW3crND4+Ml09YVtB''@;'; put 'put ''KzQ+PjJdLGFbdys4Pj4yXT1hW0ErOD4+Ml0sYVt3KzEyPj4yXT1hW0ErMTI+PjJdLGZlW2MrODE+PjBdPTEpLGxlPWJ9ZnVuY3Rpb24geEoobCxjLGYpe2Z8PTA7dmFyIG0sQSx3LGIsayxwPTAsTT0wO2s9bGUsbGU9bGUrNDh8MCxiPWsrMzJ8MCxwPWsrMjR8MCxtPWsrMTZ8MCxBPWssdz0x''@;'; put 'put ''NisobHw9MCl8MCwwfChjfD0wKSYmMCE9KDB8YVsxMisoMHxhW3c+PjJdKT4+Ml0pJiYoTT0wfEhvKGwsYyksYVtiPj4yXT1wLGFbYis0Pj4yXT1tLDI9PSgwfGlsKE0sMTA1NTAzLGIpKSkmJihNPTU2KygwfGFbMTIrKDB8YVt3Pj4yXSk+PjJdKXwwLFRKKEEsK19bcD4+M10sK19bbT4+M10p''@;'; put 'put ''LGFbTT4+Ml09YVtBPj4yXSxhW00rND4+Ml09YVtBKzQ+PjJdLGFbTSs4Pj4yXT1hW0ErOD4+Ml0sYVtNKzEyPj4yXT1hW0ErMTI+PjJdLGZlWzgxKygwfGFbMTIrKDB8YVt3Pj4yXSk+PjJdKT4+MF09MSk7ZTpkb3tpZigwfGYpZm9yKHA9MHx3cyhsKTs7KXtpZighcClicmVhayBlO0lKKHAs''@;'; put 'put ''bCxjLGYpLHA9MHxFcyhwKX19d2hpbGUoMCk7bGU9a31mdW5jdGlvbiBVbGUobCl7dmFyIGM9MCxmPTAscD0wLG09MCxBPTA7aWYoMHxOMyhsfD0wKSlpZigwPT0oMHwobT0wfHNpKGwsMiwxMDI2MjMsMCkpKXwoMHxhWzQ3MTM0XSk8MiljPTA7ZWxzZXtmb3IoYz0wLHA9MHxEdChsKTtwOyl7''@;'; put 'put ''Zm9yKGY9MHx3MChsLHApO2Y7KUE9YysoMCE9KDB8SmxlKG0sZikpJjEpfDAsZj0wfFMwKGwsZiksYz1BO3A9MHx6dChsLHApfWM9Yz8oYz0oMHxjKT09KDB8TjMobCkpKT8yOjE6MH1lbHNlIGM9MjtyZXR1cm4gMHxjfWZ1bmN0aW9uIFFsZShsKXt2YXIgYz0wLGY9MCxwPTA7Zm9yKGY9MHxE''@;'; put 'put ''dChsfD0wKTtmOyl7Zm9yKGM9MHx3MChsLGYpO2M7KXlEKGMpLEljKDB8YVs5NisoMHxhWyhwPWMrMTZ8MCk+PjJdKT4+Ml0pLEljKDB8YVsxMDgrKDB8YVtwPj4yXSk+PjJdKSxJYygwfGFbMTAwKygwfGFbcD4+Ml0pPj4yXSksSWMoMHxhWzEwNCsoMHxhW3A+PjJdKT4+Ml0pLGM9MHxTMChs''@;'; put 'put ''LGMpO2Y9MHx6dChsLGYpfX1mdW5jdGlvbiBKbGUobCxjKXt2YXIgcSxwZSxnZSxiZSxPZSxMZSxSZSxIZSxWZSxxZSxydCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLFdlPTAsYXQ9MDtydD1sZSxsZT1sZSs5NnwwLFZlPXJ0KzcyfDAsUmU9cnQrNTZ8MCxx''@;'; put 'put ''ZT1ydCs0OHwwLEhlPXJ0KzMyfDAsTGU9cnQrMTZ8MCxxPXJ0Kzg4fDAscGU9cnQrOHwwLGdlPXJ0LGJlPXJ0Kzg0fDAsT2U9cnQrODB8MCxsPTB8SG8oY3w9MCxsfD0wKTtkb3tpZigwfGZlW2w+PjBdKXtEQyhjLGJlLE9lKSxHPTEscD0wLGY9MCx3PTAsQT0wLGI9MCxtPTA7ZTpmb3IoOzsp''@;'; put 'put ''e2lmKGFbTGU+PjJdPXBlLGFbTGUrND4+Ml09Z2UsYVtMZSs4Pj4yXT1xLDI9PSgwfGlsKGwsODg2NDIsTGUpKT8oUj0xLGw9bCsoMHxhW3E+PjJdKXwwLEE9K19bcGU+PjNdLG09K19bZ2U+PjNdKTpSPWYsYVtIZT4+Ml09cGUsYVtIZSs0Pj4yXT1nZSxhW0hlKzg+PjJdPXEsMj09KDB8aWwo''@;'; put 'put ''bCw4ODY1NCxIZSkpPyhEPTEsbD1sKygwfGFbcT4+Ml0pfDAsdz0rX1twZT4+M10sYj0rX1tnZT4+M10pOkQ9cCwhKCgwfChrPTB8WGxlKGwpKSk+MyYxPT0oMHwoMHxrKSUzKSkpe2Y9ODticmVha31mb3IoZj1NPTB8UW4oazw8NCkscD1rO3A7KXtpZihhW1JlPj4yXT1wZSxhW1JlKzQ+PjJd''@;'; put 'put ''PWdlLGFbUmUrOD4+Ml09cSwoMHxpbChsLDg4NzI0LFJlKSk8Mil7Zj0xMzticmVhayBlfVdlPWwrKDB8YVtxPj4yXSl8MCxfW2Y+PjNdPStfW3BlPj4zXSxfW2YrOD4+M109K19bZ2U+PjNdLGY9ZisxNnwwLHA9cCstMXwwLGw9V2V9Zm9yKDtwPWwrMXwwLDB8JGMoKGY9MHxmZVtsPj4wXSk8''@;'; put 'put ''PDI0Pj4yNCk7KWw9cDtmb3IobD0oV2U9Zjw8MjQ+PjI0PT0wKT9sOnAsRz1XZT8wOkcscD0wfGROKGMsayksMHxSJiYoYVtwKzg+PjJdPWFbYmU+PjJdLF9bcCsxNj4+M109QSxfW3ArMjQ+PjNdPW0pLDB8RCYmKGFbcCsxMj4+Ml09YVtPZT4+Ml0sX1twKzMyPj4zXT13LF9bcCs0MD4+M109''@;'; put 'put ''YiksZj0wOyEoKDB8Zik+PSgwfGspKTspYVsoV2U9KDB8YVtwPj4yXSkrKGY8PDQpfDApPj4yXT1hWyhhdD1NKyhmPDw0KXwwKT4+Ml0sYVtXZSs0Pj4yXT1hW2F0KzQ+PjJdLGFbV2UrOD4+Ml09YVthdCs4Pj4yXSxhW1dlKzEyPj4yXT1hW2F0KzEyPj4yXSxmPWYrMXwwO2lmKEZ0KE0pLCFH''@;'; put 'put ''KXtmPTI2O2JyZWFrfXA9RCxmPVJ9aWYoOD09KDB8Zikpe2lmKHlEKGMpLDB8ZmVbMTkzNzcxXSl7bD0wO2JyZWFrfWZlWzE5Mzc3MV09MSxhdD0wfHRpKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOmMrNDh8MCkrNDA+PjJdKSxsPTB8dGkoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6YystNDh8''@;'; put 'put ''MCkrNDA+PjJdKSxhW3FlPj4yXT1hdCxhW3FlKzQ+PjJdPWwsJHIoMCw4ODY2NyxxZSksbD0wO2JyZWFrfWlmKDEzPT0oMHxmKSl7MHxmZVsxOTM3NzFdfHwoZmVbMTkzNzcxXT0xLFdlPTB8dGkoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6Yys0OHwwKSs0MD4+Ml0pLGF0PTB8dGkoMHxhWygy''@;'; put 'put ''PT0oMyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdKSxhW1ZlPj4yXT1XZSxhW1ZlKzQ+PjJdPWF0LCRyKDAsODg3MzQsVmUpKSxGdChNKSx5RChjKSxsPTA7YnJlYWt9aWYoMjY9PSgwfGYpKXtpZigoZj0wfGFbOTYrKGw9MHxhWyhwPWMrMTZ8MCk+PjJdKT4+Ml0pJiYoYmsoYyxmLDEw''@;'; put 'put ''MjYzNyksbD0wfGFbcD4+Ml0pLChmPTB8YVtsKzEwOD4+Ml0pJiYoYmsoYyxmLDEwMjYzMyksbD0wfGFbcD4+Ml0pLChmPTB8YVtsKzEwMD4+Ml0pJiYoYmsoYyxmLDEwMjY0MCksbD0wfGFbcD4+Ml0pLCEobD0wfGFbbCsxMDQ+PjJdKSl7bD0xO2JyZWFrfWJrKGMsbCwxMDI2NDgpLGw9MTti''@;'; put 'put ''cmVha319ZWxzZSBsPTB9d2hpbGUoMCk7cmV0dXJuIGxlPXJ0LDB8bH1mdW5jdGlvbiBYbGUobCl7bHw9MDt2YXIgYz0wLGY9MDtmPTA7ZG97Zm9yKDswfCRjKDI1NSYoYz0wfGZlW2w+PjBdKSk7KWw9bCsxfDA7ZTpkb3tpZihjPDwyND4+MjQpZm9yKGY9ZisxfDA7Oyl7aWYoIShjPDwyND4+''@;'; put 'put ''MjQpKXtjPTA7YnJlYWsgZX1pZihjPDwyND4+MjQ9PTU5fDAhPSgwfCRjKDI1NSZjKSkpYnJlYWsgZTtsPWM9bCsxfDAsYz0wfGZlW2M+PjBdfWVsc2UgYz0wfXdoaWxlKDApfXdoaWxlKDAhPSgwfCRjKDI1NSZjKSkpO3JldHVybiAwfGZ9ZnVuY3Rpb24gVEoobCxjLGYpe2Y9K2YsX1sobHw9''@;'; put 'put ''MCk+PjNdPWM9K2MsX1tsKzg+PjNdPWZ9ZnVuY3Rpb24gSUoobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIG0sdyxBPTAsYj0wO3c9bGUsbGU9bGUrMzJ8MCxtPXcsMD09KDB8czIoMHx0aShsfD0wKSwxMDgwMDYsNykpJiYwIT0oMHxmdW5jdGlvbiBLbGUobCxjLGYpe2Z8PTA7dmFyIEEs''@;'; put 'put ''dyxiLGsscD0wLG09MDtyZXR1cm4gdz1sZSxsZT1sZSs0OHwwLGI9dyszMnwwLEE9dyxrPTB8SG8obHw9MCxjfD0wKSxsPUErOHwwLGM9QSsyNHwwLGFbYj4+Ml09QSxhW2IrND4+Ml09bCxhW2IrOD4+Ml09QSsxNixhW2IrMTI+PjJdPWMsND09KDB8aWwoayw4ODc4MixiKSk/KChwPStfW2w+''@;'; put 'put ''PjNdKT4obT0rX1tjPj4zXSkmJihfW2w+PjNdPW0sX1tjPj4zXT1wKSxhW2Y+PjJdPWFbQT4+Ml0sYVtmKzQ+PjJdPWFbQSs0Pj4yXSxhW2YrOD4+Ml09YVtBKzg+PjJdLGFbZisxMj4+Ml09YVtBKzEyPj4yXSxhW2YrMTY+PjJdPWFbQSsxNj4+Ml0sYVtmKzIwPj4yXT1hW0ErMjA+PjJdLGFb''@;'; put 'put ''ZisyND4+Ml09YVtBKzI0Pj4yXSxhW2YrMjg+PjJdPWFbQSsyOD4+Ml0sbD0xKTpsPTAsbGU9dywwfGx9KGwscCxtKSk/KGgwKGwsMTM3NDgzLDI4MCwxKSxhWyhiPTE2KygwfGFbbCsxNj4+Ml0pfDApPj4yXT1hW20+PjJdLGFbYis0Pj4yXT1hW20rND4+Ml0sYVtiKzg+PjJdPWFbbSs4Pj4y''@;'; put 'put ''XSxhW2IrMTI+PjJdPWFbbSsxMj4+Ml0sYVtiKzE2Pj4yXT1hW20rMTY+PjJdLGFbYisyMD4+Ml09YVttKzIwPj4yXSxhW2IrMjQ+PjJdPWFbbSsyND4+Ml0sYVtiKzI4Pj4yXT1hW20rMjg+PjJdLGZ1bmN0aW9uICRsZShsLGMpe2N8PTA7dmFyIHAsbSxBLGY9MDthWyhBPTE4MCsoZj0wfGFb''@;'; put 'put ''KHA9MTYrKGx8PTApfDApPj4yXSl8MCk+PjJdPW09MSsobD0wfGFbQT4+Ml0pfDAsbD0oZj0wfGFbZisxODQ+PjJdKT8wfEdIKGYsbCsyfDAsNCxtKTowfHZyKDgrKGw8PDIpfDApLGFbMTg0KygwfGFbcD4+Ml0pPj4yXT1sLGFbbCsobTw8Mik+PjJdPWMsZmsoYyl9KGMsbCkseEoobCxmLHAp''@;'; put 'put ''KTpBPTQ7ZTpkb3tpZig0PT0oMHxBKSlmb3IobD0wfHdzKGwpOzspe2lmKCFsKWJyZWFrIGU7SUoobCxjLGYscCksbD0wfEVzKGwpfX13aGlsZSgwKTtsZT13fWZ1bmN0aW9uIEhOKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIG0sQSx3LGssTSxwPTAsYj0wO009bGUsbGU9bGUrNDh8MCxrPU0rOHww''@;'; put 'put ''LGI9TSxBPU0rMTZ8MCx3PU0rMTJ8MCxtPTB8TGkobHw9MCw4ODc5OCk7ZG97aWYoMCE9KDB8bSkmJihwPTB8ZmVbbT4+MF0pPDwyND4+MjQhPTApe2lmKDB8dkwocCY9MjU1KSl7aWYoISgwfHMyKG0sODg4MDQsNCkpKXtjPTA7YnJlYWt9aWYoISgwfHMyKG0sMTA1NTExLDcpKSl7Yz0xO2Jy''@;'; put 'put ''ZWFrfWlmKDB8czIobSw4ODgwOSw2KSl7aWYoMiE9KDB8YykpYnJlYWs7Yz1tfWVsc2UgYz1tKzZ8MH1lbHNle2lmKCEoMj09KDB8Yyl8KHArLTQ4fDApPj4+MDwxMCkpYnJlYWs7Yz1tfSgoMHxYdFtjPj4wXSktNDh8MCk+Pj4wPDEwJiYoYVtiPj4yXT13LCgwfGlsKGMsOTk5MzMsYikpPj0x''@;'; put 'put ''KXx8KGI9MHxIaigpLGI9KDB8aG4oMCkpXmIsYVt3Pj4yXT1iLGFbaz4+Ml09YixvbyhBLDk5OTMzLGspLGtjKGwsODg3OTgsQSkpLGFbZj4+Ml09YVt3Pj4yXSxjPTJ9fXdoaWxlKDApO3JldHVybiBsZT1NLDB8Y31mdW5jdGlvbiBESihsLGMsZil7dmFyIHAsbTtyZXR1cm4gbHw9MCxjfD0w''@;'; put 'put ''LGZ8PTAsbT1sZSxsZT1sZSsxNnwwLGFbKHA9bSs0fDApPj4yXT0xLDIhPSgwfChmPTB8SE4obCxmLHApKSkmMCE9KDB8YVs0Njc5Nl0pJiYkcigwLDg4ODE2LG0pLDE9PSgwfGYpJiZmdW5jdGlvbiBxbGUobCxjKXt2YXIgbSxBLGY9MCxwPTAsdz0wLGI9MCxrPTA7Zm9yKEE9Ni4yODMxODUz''@;'; put 'put ''MDcxNzk1ODYvKG09KygwfChjfD0wKSkpLGY9MHxEdChsfD0wKSxwPTA7Zjspaz0raGEoK3ApKm0sX1soYj0wfGFbMTMyKyh3PTB8YVtmKzE2Pj4yXSk+PjJdKT4+M109ayxfW2IrOD4+M109K0RhKCtwKSptLGZlW3crMTE5Pj4wXT0xLCgwfGFbNDcxMzddKT4yJiZ0VihmLGMpLGY9MHx6dChs''@;'; put 'put ''LGYpLHArPUF9KGwsYyksTmooMHxhW3A+PjJdKSxsZT1tLDB8Zn1mdW5jdGlvbiBBMihsKXtsfD0wO3ZhciBiLGssUixHLHEsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsTT0wLEQ9MDtxPWxlLGxlPWxlKzgwfDAsYz1xKzI0fDAsTT1xKzMyfDAsYj1xLFI9cSsyOHwwLGs9cSs2NHwwLEc9K19b''@;'; put 'put ''MjMyOTNdO2Rve2lmKDB8YVs0NzEzNF0pe2lmKF9bMjMyOTNdPTcyLF9rKGwpLE5OKGwpLCgwfFlsZShsLDEpKTwwKXskcigzLDg4ODY0LGMpO2JyZWFrfVg2KGwsMCkscD0zMjticmVha31EPTB8bmcoMHxMaShsLDg4NTkzKSwwKSxfWzIzMjkzXT0rQ04obCksX2sobCksbT0wfGVzZShsKSxj''@;'; put 'put ''MmUobCxiLDApLEE9MHx0c2UobCksdz0wfFMxKGwsMCxNKSxjPTB8eGMobCwtMSw4KSxhWzQ2Nzk1XT1jLGY9KDB8Yyk8MDtkb3tpZih3KWYmJihhWzQ2Nzk1XT04KSxwPTExO2Vsc2V7aWYoMCE9KDB8bSkmZil7YVs0Njc5NV09OCxhW00rMTY+PjJdPTIscD0xMTticmVha31pZihhW00rMTY+''@;'; put 'put ''PjJdPTIsKDB8Yyk8PS0xKXtpZihWTihsLG0sQSksejcobCxiKSxOTihsKSxEPDwyND4+MjQpe2pOKGwpO2JyZWFrfUs2KGwpO2JyZWFrfXA9MTF9fXdoaWxlKDApO2lmKDExPT0oMHxwKSl7dz0wfFBBKGwsUiw4ODg5MixrKSxjPTB8YVtSPj4yXTtkb3tpZigoMHxjKTw9MSl7aWYoVk4obCxt''@;'; put 'put ''LEEpLHo3KGwsYiksRDw8MjQ+PjI0KXtqTihsKTticmVha31LNihsKTticmVha31mb3IocD1EPDwyND4+MjQ9PTAsZj0wOyEoKDB8Zik+PSgwfGMpKTspeEMoYz0wfGFbdysoZjw8Mik+PjJdKSxWTihjLG0sQSksejcoYyxiKSxyNChjLDIpLHA/SzYoYyk6ak4oYyksZj1mKzF8MCxjPTB8YVtS''@;'; put 'put ''Pj4yXTswfGZlW2s+PjBdPyhmPTB8dnIoYyksZmVbZj4+MF09MSxjPTB8YVtSPj4yXSk6Zj0wLGFbTSs4Pj4yXT1hWzQ2Nzk1XSxhW00rMjA+PjJdPWYsYVtNKzEyPj4yXT0xLGZXKGMsdyxsLE0pLEZ0KGYpfXdoaWxlKDApO2ZvcihpZyhsKSxOTihsKSxjPTA7ISgoMHxjKT49KDB8YVtSPj4y''@;'; put 'put ''XSkpOyllVihNPTB8YVt3KyhjPDwyKT4+Ml0pLEhpKE0sMTM3NDgzKSxvaShsLE0pLGM9YysxfDA7RnQodyl9WDYobCxEPDwyND4+MjQ9PTAmMSkscD0zMn13aGlsZSgwKTszMj09KDB8cCkmJihfWzIzMjkzXT1HKSxsZT1xfWZ1bmN0aW9uIF9rKGwpe3ZhciBwLG0sYz0wLGY9MDtyNChsfD0w''@;'; put 'put ''LDIpLHA9MHxlcyhsLDB8c2kobCwwLDkxMzY4LDApLDIsMiksYz02NTUzNSYoMHxlcyhsLDB8c2kobCwwLDkxMzc0LDApLHAsMikpLGl0WzE3NisoMHxhWzE2KygwfGRpKGwpKT4+Ml0pPj4xXT1jLGl0WyhtPTE3NisoYz0wfGFbMTYrKDB8YVtsKzYwPj4yXSk+PjJdKXwwKT4+MV09Zj0oNjU1''@;'; put 'put ''MzUmKGY9MHxpdFttPj4xXSkpPDEwP2Y6MTAsYVs0NzEzN109ZiY9NjU1MzUsaXRbYysxNzg+PjFdPSgwfHApPCgwfGYpP3A6ZixmdW5jdGlvbiBpc2UobCl7dmFyIHAsYz0wLGY9MDtmb3IoZj0wfEdvKGx8PTApLGFbNDY3OTZdPTB8c2kobCwxLDEwMjYyMywwKSxwPTB8c2kobCwxLDkwNjYw''@;'; put 'put ''LDApLGM9MHxEdChsKTtjOyl3ayhjKSxFSigwfGFbNDY3OTZdLHAsYyxmKSxjPTB8enQobCxjKTtmb3IoZj0wfER0KGwpO2Y7KXtmb3IoYz0wfHcwKGwsZik7YzspYkQoYyksYz0wfFMwKGwsYyk7Zj0wfHp0KGwsZil9fShsKX1mdW5jdGlvbiBOTihsKXtsfD0wO3ZhciBmLHAsbSxjPTA7bT1s''@;'; put 'put ''ZSxsZT1sZSsxMDQwfDAscD1tLGY9bSs4fDA7ZTpkb3tpZigoMHxhWzQ3MTM3XSk+MiYwIT0oMHxhWzQ3MTcxXSkpZm9yKGM9MHxEdChsKTs7KXtpZighYylicmVhayBlO19bcD4+M109NzIqK19bMTYrKDB8YVsxMzIrKDB8YVtjKzE2Pj4yXSk+PjJdKT4+M10sb28oZiwxMDEyMDkscCksVmwo''@;'; put 'put ''YywwfGFbNDcxNzFdLGYpLGM9MHx6dChsLGMpfX13aGlsZSgwKTtsZT1tfWZ1bmN0aW9uIGVzZShsKXt2YXIgYyxmLHA7cD1sZSxsZT1sZSsxNnwwLGY9cCxjPTB8TGkobHw9MCw4OTU3Nyk7ZTpkb3tpZihjKXtzd2l0Y2goMHxmZVtjPj4wXSl7Y2FzZSAwOmw9MTticmVhayBlO2Nhc2UgNzU6''@;'; put 'put ''aWYoISgwfFppKGMsODk1ODIpKSl7bD0wO2JyZWFrIGV9YnJlYWs7Y2FzZSAxMDk6aWYoISgwfFppKGMsODk1ODUpKSl7bD0xO2JyZWFrIGV9YnJlYWs7Y2FzZSAxMDQ6aWYoISgwfFppKGMsODk1OTEpKSl7bD0yO2JyZWFrIGV9fWw9MHx0aShsKSxhW2Y+PjJdPWMsYVtmKzQ+PjJdPWwsJHIo''@;'; put 'put ''MCw4OTU5NixmKSxsPTF9ZWxzZSBsPTF9d2hpbGUoMCk7cmV0dXJuIGxlPXAsMHxsfWZ1bmN0aW9uIHRzZShsKXt2YXIgYyxmLHAsbSxBO0E9bGUsbGU9bGUrMzJ8MCxtPUErMTZ8MCxwPUErOHwwLGY9QSxjPTB8TGkobHw9MCw4OTM2MCk7ZTpkb3tpZihjKXtzd2l0Y2goMHxmZVtjPj4wXSl7''@;'; put 'put ''Y2FzZSAwOmw9MDticmVhayBlO2Nhc2UgOTk6aWYoISgwfFppKGMsODkzNjYpKSl7bD0xO2JyZWFrIGV9YnJlYWs7Y2FzZSAxMTU6aWYoISgwfFppKGMsODkzNzQpKSl7bD0yO2JyZWFrIGV9aWYoISgwfFppKGMsODkzODEpKSl7bD0wO2JyZWFrIGV9YnJlYWs7Y2FzZSAxMDk6aWYoISgwfFpp''@;'; put 'put ''KGMsODkzOTEpKSl7aWYoMHxzaShsLDIsOTI0OTMsMCkpe2w9MzticmVhayBlfWFbZj4+Ml09MHx0aShsKSwkcigwLDg5Mzk1LGYpLCRyKDMsODk0NTgscCksbD0wO2JyZWFrIGV9fWw9MHx0aShsKSxhW20+PjJdPWMsYVttKzQ+PjJdPWwsJHIoMCw4OTUxNSxtKSxsPTB9ZWxzZSBsPTB9d2hp''@;'; put 'put ''bGUoMCk7cmV0dXJuIGxlPUEsMHxsfWZ1bmN0aW9uIFZOKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MDtwPShwPTB8TGkobHw9MCw5MTA2MSkpPzB8cjMocCk6MT09KDB8Yyk/MjAwOjEwMCooMHxHbyhsKSl8MCxhWzQ3MTM2XT1wLHA9MHxZSihsLGMpO2Rve2lmKCEoKDB8cCk8MnwoMHxhWzQ3''@;'; put 'put ''MTM2XSk8MCkpe2lmKGMpe25zZShsLHAsYyxmLDB8YVs0NzEzN10pO2JyZWFrfVpOKGwscCxmKTticmVha319d2hpbGUoMCl9ZnVuY3Rpb24gak4obCl7aWcobHw9MCksU0QobCwxKX1mdW5jdGlvbiBuc2UobCxjLGYscCxtKXtwfD0wLG18PTA7dmFyIEQsRyxxLHBlLGdlLGJlLE9lLEE9MCx3''@;'; put 'put ''PTAsYj0wLGs9MCxNPTA7Zm9yKE9lPWxlLGxlPWxlKzY0fDAscGU9T2UrNDB8MCxHPU9lKzQ4fDAsYmU9T2UrNDR8MCx3PTB8REoobHw9MCxjfD0wLChxPTI9PSgwfChmfD0wKSkpPzA6MiksYj0wfGZ1bmN0aW9uIHBwKGwpe3ZhciBjLGY7cmV0dXJuIGY9bGUsbGU9bGUrMTZ8MCxjPWYsMD09''@;'; put 'put ''KDB8KGw9MHxlcyhsfD0wLDB8c2kobCwwLDg5MzA1LDApLDIsMCkpKXwoMHxsKT4yJiYoYVtjPj4yXT04OTMwNSwkcigwLDg5MzE0LGMpLGw9MiksbGU9ZiwwfGx9KGwpLGs9NHxiLGdlPTB8UW4obTw8MiksYVtnZT4+Ml09MHxRbigwfEFyKGM8PDMsbSkpLEE9MHxhWzQ3MTM3XSxtPTE7ISgo''@;'; put 'put ''MHxtKT49KDB8QSkpOylhW2dlKyhtPDwyKT4+Ml09KDB8YVtnZT4+Ml0pKygoMHxBcihtLGMpKTw8MyksbT1tKzF8MDttPShBPTA9PSgwfHcpKT9rOmIsRD0wfExKKGwsYyxHLGYscCxiZSksMSE9KDB8Zik/KE09K01sKGwsMHxzaShsLDAsODkyNzksMCksMCwtMTc5NzY5MzEzNDg2MjMxNTdl''@;'; put 'put ''MjkyKSxxPyhtPTB8ZnVuY3Rpb24gUlgobCxjLGYscCxtLEEsdyxiLGssTSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTAsYnw9MCxrfD0wLE09K007dmFyIFp0LGN0LGFuLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wLFZlPTAscWU9MCxy''@;'; put 'put ''dD0wLFdlPTAsYXQ9MCxTdD0wLGt0PTAsc3Q9MCxFdD0wLGJ0PTAsU249MDthbj1sZSxsZT1sZSs0OHwwLFN0PWFuKzI0fDAsYXQ9YW4rMTZ8MCxXZT1hbis4fDAscnQ9YW4sY3Q9YW4rMzZ8MCxzdD1hbiszMnwwLHBlPTQmKHd8PTApLGFbKFp0PWFuKzQwfDApPj4yXT0wLGFbY3Q+PjJdPTA7''@;'; put 'put ''ZTpkb3tpZigwfGFbbCsxNj4+Ml0pe2ZvcihSPTAsRD0wOyEoKDB8Uik+PSgwfGMpKTspe2ZvcihnZT0wfGFbbCsoMjAqUnwwKT4+Ml0sYmU9bCsoMjAqUnwwKSsxNnwwLHE9MTshKCgwfHEpPj0oMHxnZSkpOylEPUQ8PDI0Pj4yND8xOjAhPStqblsoMHxhW2JlPj4yXSkrKHE8PDIpPj4yXSxx''@;'; put 'put ''PXErMXwwLEQmPTE7Uj1SKzF8MH1pZihEPDwyND4+MjQpe2lmKFZlPTAhPSgwfHBlKSl7cT1wKzR8MDt0OmRve2lmKCgwfEEpPjIpe2lmKCgwfCROKGwsYyxmLHEsbSxEPUErLTF8MCx3LGIsMTUpKTwwKXtEPS0xO2JyZWFrIGV9Zm9yKFI9cCsoRDw8Mil8MCxEPTA7Oyl7aWYoKDB8RCk+PSgw''@;'; put 'put ''fGMpKWJyZWFrIHQ7X1soMHxhW1I+PjJdKSsoRDw8Myk+PjNdPStfWygwfGFbcT4+Ml0pKyhEPDwzKT4+M10sRD1EKzF8MH19fXdoaWxlKDApO2lmKEhlPTB8YVtwPj4yXSwwPT0oMHxCMmUobCxjLExlPTB8YVtxPj4yXSxjKSkmJjA9PSgwfEd4KGwsYywuMDEsLjEsTGUsWnQsY3Qsc3QpKSl7''@;'; put 'put ''aWYoKDB8KFJlPTB8YVtzdD4+Ml0pKTwxKXtEPTB8JE4obCxjLGYscCxtLEEsdyxiLGspO2JyZWFrfXQ6ZG97aWYoTT4wKWZvcihwZT0wfGFbWnQ+PjJdLGdlPTB8YVtjdD4+Ml0sYmU9UmUrLTF8MCxHPTAscT0wOzspe2lmKCgwfHEpPj0oMHxSZSkpYnJlYWsgdDtmb3IoRz0oKHFlPU0tRy0r''@;'; put 'put ''X1tMZSsoYVtwZSsoKEQ9MHxhW2dlKyhxPDwyKT4+Ml0pPDwyKT4+Ml08PDMpPj4zXSsgK19bTGUrKGFbcGUrKEQrLTE8PDIpPj4yXTw8Myk+PjNdKTwwPzA6cWUpK0csUj0oMHxxKTwoMHxiZSk/MHxhW2dlKyhxKzE8PDIpPj4yXTpjOyEoKDB8RCk+PSgwfFIpKTspX1soRXQ9TGUrKGFbcGUr''@;'; put 'put ''KEQ8PDIpPj4yXTw8Myl8MCk+PjNdPStfW0V0Pj4zXStHLEQ9RCsxfDA7cT1xKzF8MH19d2hpbGUoMCk7Mj09KDB8QSkmJjAhPSgwfEcyZShsLGMsTGUsSGUsK19bMjMyOTRdKSk/KFI9MCxEPS0xKTpidD0zM31lbHNlIFI9MCxEPS0xfWVsc2UgS04obCxjLEEscCxtKSwwfEd4KGwsYywuMDEs''@;'; put 'put ''LjEsMCxadCxjdCxzdCk/KFI9MCxEPS0xKTpidD0zMzt0OmRve2lmKDMzPT0oMHxidCkpe2lmKDE9PSgwfGMpKXtEPTA7YnJlYWsgZX1pZihFdD0wfFFuKGFbc3Q+PjJdPDwyKSwhayl7RD0wO2JyZWFrIGV9c3dpdGNoKDB8Yil7Y2FzZSAyOkQ9MHx6SihsLGMpLGJ0PTQ2O2JyZWFrO2Nhc2Ug''@;'; put 'put ''MTooRD0wfEl5KGwsYykpP2t0PUQ6KCRyKDAsOTMzMTUscnQpLCRyKDMsOTMzNjQsV2UpLGJ0PTQ3KTticmVhaztjYXNlIDM6RD0wfCQ2KGwsYyksYnQ9NDY7YnJlYWs7ZGVmYXVsdDpidD00N300Nj09KDB8YnQpJiYoRD9rdD1EOmJ0PTQ3KSw0Nz09KDB8YnQpJiYoa3Q9MHxNRChsLGMpKSxh''@;'; put 'put ''dD0oSGU9KDB8QXIobD1jKy0xfDAsYykpLzJ8MCkrY3wwO246ZG97aWYoIVZlKXtmb3IoRz0xLFI9MDshKCgwfFIpPj0oMHxBKSk7KXtmb3IocT1wKyhSPDwyKXwwLEQ9MDshKCgwfEQpPj0oMHxjKSk7KUc9KHFlPStlbygrICtfWygwfGFbcT4+Ml0pKyhEPDwzKT4+M10pKT5HP3FlOkcsRD1E''@;'; put 'put ''KzF8MDtSPVIrMXwwfWZvcihHPTEvRyxSPTA7Oyl7aWYoKDB8Uik+PSgwfEEpKWJyZWFrIG47Zm9yKHE9cCsoUjw8Mil8MCxEPTA7ISgoMHxEKT49KDB8YykpOylfWyhXZT0oMHxhW3E+PjJdKSsoRDw8Myl8MCk+PjNdPTEwKkcqK19bV2U+PjNdLEQ9RCsxfDA7Uj1SKzF8MH19fXdoaWxlKDAp''@;'; put 'put ''O246ZG97aWYoTT4wKXtPZT0rKDB8SGUpLEQ9MCxHPTAscGU9MDtyOmZvcig7ISgoMHxwZSk+PSgwfGwpKTspZm9yKGdlPXBlKzF8MCxxPUQsUj1nZTs7KXtpZihEPXErMXwwLCgwfFIpPj0oMHxjKSl7cGU9Z2U7Y29udGludWUgcn1xPUQsRz0ocWU9K0tYKHAsQSxwZSxSKSkvK2puW2t0KyhE''@;'; put 'put ''PDwyKT4+Ml0rRyxSPVIrMXwwfWZvcihHLz1PZSxEPTA7Oyl7aWYoKDB8RCk+PSgwfGF0KSl7RD0wO2JyZWFrIG59am5bKFdlPWt0KyhEPDwyKXwwKT4+Ml09K2puW1dlPj4yXSpHLEQ9RCsxfDB9fWVsc2UgRD0wfXdoaWxlKDApO2Zvcig7ISgoMHxEKT49KDB8QSkpOylhOChjLDB8YVtwKyhE''@;'; put 'put ''PDwyKT4+Ml0pLEQ9RCsxfDA7Zm9yKEc9K19bKFI9MHxhW3ArND4+Ml0pPj4zXSxEPTA7ISgoMHxEKT49KDB8YykpOylfWyhXZT1SKyhEPDwzKXwwKT4+M109K19bV2U+PjNdLUcsRD1EKzF8MDtmb3IoV2U9MHxRbihiZT1BPDwyKSxxPTB8UW4oTGU9MHxBcihSZT1jPDwyLEEpKSxEPTA7ISgo''@;'; put 'put ''MHxEKT49KDB8QSkpOyl7Zm9yKHBlPXErKCgwfEFyKEQsYykpPDwyKXwwLGFbV2UrKEQ8PDIpPj4yXT1wZSxnZT1wKyhEPDwyKXwwLFI9MDshKCgwfFIpPj0oMHxjKSk7KWpuW3BlKyhSPDwyKT4+Ml09K19bKDB8YVtnZT4+Ml0pKyhSPDwzKT4+M10sUj1SKzF8MDtEPUQrMXwwfWZvcihPZT0r''@;'; put 'put ''KDB8SGUpLGprKGF0LGt0KSxjSyhhdCxrdCksJEQoYywwLHJ0PTB8UW4oYzw8MykpLEQ9MCxxPTA7Oyl7aWYoKDB8cSk+PSgwfGwpKXtEPWMsUj0wLHE9MDticmVha31mb3IocGU9Yy1xfDAsRz0wLFI9MTtEPUQrMXwwLCEoKDB8Uik+PSgwfHBlKSk7KV9bKFN0PXJ0KyhSK3E8PDMpfDApPj4z''@;'; put 'put ''XT0rX1tTdD4+M10tKHFlPStqbltrdCsoRDw8Mik+PjJdKSxHKz1xZSxSPVIrMXwwO19bKFN0PXJ0KyhxPDwzKXwwKT4+M109K19bU3Q+PjNdLUcscT1xKzF8MH1mb3IoOyEoKDB8Uik+PSgwfGMpKTspam5ba3QrKHE8PDIpPj4yXT0rX1tydCsoUjw8Myk+PjNdLFN0PUQrcXwwLEQ9RCstMXww''@;'; put 'put ''LFI9UisxfDAscT1TdDtmb3IoYj0wfFFuKGJlKSxhW2I+PjJdPTB8UW4oTGUpLEQ9MTshKCgwfEQpPj0oMHxBKSk7KWFbYisoRDw8Mik+PjJdPSgwfGFbYj4+Ml0pKygoMHxBcihELGMpKTw8MiksRD1EKzF8MDtmb3IoVmU9MHxRbihSZSksbT0wfFFuKFJlKSx3PTB8UW4oYXQ8PDIpLFI9MHxk''@;'; put 'put ''SyhrdCxjKSxmPTB8WFYoa3QsYywwfGFbWnQ+PjJdLDB8YVtjdD4+Ml0sMHxhW3N0Pj4yXSksSGU9Yis0fDAscT0wLHFlPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MixEPTA7cTw8MjQ+PjI0PT0wJigwfEQpPCgwfGspOyl7Zm9yKCREKGMsMCxydCksV1YoYXQsa3QsdyksTGU9MCxnZT0wOzspe2lm''@;'; put 'put ''KCgwfExlKT49KDB8bCkpe3E9MCxwZT1jLGdlPTA7YnJlYWt9Zm9yKFJlPWMtTGUtMXwwLFp5KGMsMCxtKSxxPTA7ISgoMHxxKT49KDB8QSkpOylaeShSZSwram5bKDB8YVsoc3Q9V2UrKHE8PDIpfDApPj4yXSkrKExlPDwyKT4+Ml0sVmUpLEtEKFJlLFZlLC0xLCgwfGFbc3Q+PjJdKSsoTGU8''@;'; put 'put ''PDIpKzR8MCksamsoUmUsVmUpLFhEKFJlLFZlLG0sbSkscT1xKzF8MDtmb3IoZksoUmUsbSkscT0wOyEoKDB8cSk+PSgwfFJlKSk7KShHPStqblsocGU9bSsocTw8Mil8MCk+PjJdKT49MzQwMjgyMzQ2NjM4NTI4ODZlMjJ8RzwwJiYoam5bcGU+PjJdPTApLHE9cSsxfDA7Zm9yKGJlPUxlKzF8''@;'; put 'put ''MCxHPTAscT1nZSxwZT0wO3E9cSsxfDAsISgoMHxwZSk+PSgwfFJlKSk7KWpuWyhzdD13KyhxPDwyKXwwKT4+Ml09U249K2puW3N0Pj4yXSoram5bbSsocGU8PDIpPj4yXSxfWyhzdD1ydCsoYmUrcGU8PDMpfDApPj4zXT0rX1tzdD4+M10tU24sRys9U24scGU9cGUrMXwwO19bKGdlPXJ0KyhM''@;'; put 'put ''ZTw8Myl8MCk+PjNdPStfW2dlPj4zXS1HLExlPWJlLGdlPXF9Zm9yKDs7KXtpZigoMHxxKT49KDB8Yykpe3E9MDticmVha31qblt3KyhnZTw8Mik+PjJdPStfW3J0KyhxPDwzKT4+M10sc3Q9cGUrZ2V8MCxxPXErMXwwLHBlPXBlKy0xfDAsZ2U9c3R9Zm9yKDs7KXtpZigoMHxxKT49KDB8QSkp''@;'; put 'put ''e0c9MCxxPTA7YnJlYWt9ZWQodyxjLDB8YVtXZSsocTw8Mik+PjJdLDB8YVtiKyhxPDwyKT4+Ml0pLHE9cSsxfDB9Zm9yKDshKCgwfHEpPj0oMHxBKSk7KUc9K1g3KGMsMHxhW1dlKyhxPDwyKT4+Ml0sMHxhW2IrKHE8PDIpPj4yXSkrRyxxPXErMXwwO2ZvcihHPTIqRytPZSxxPTA7ISgoMHxx''@;'; put 'put ''KT49KDB8QSkpOyllZChrdCxjLDB8YVsoc3Q9V2UrKHE8PDIpfDApPj4yXSxWZSksRy09K1g3KGMsMHxhW3N0Pj4yXSxWZSkscT1xKzF8MDtmb3IocT0xJigoMHxEKT4xJkc+cWV8KFNuPStlbygrKEctcWUpKS8rZW8oKyhxZSsxZS0xMCkpKTwrX1syMzI5NF0pLHBlPTA7ISgoMHxwZSk+PSgw''@;'; put 'put ''fEEpKTspe2lmKDEhPSgwfHBlKSl7aWYoMHxPayhrdCwwfGFbV2UrKHBlPDwyKT4+Ml0sMHxhW2IrKHBlPDwyKT4+Ml0sYywuMDAxLGMpKXtEPS0xO2JyZWFrIHR9fWVsc2UgdzllKGYsMHxhW0hlPj4yXSxXZSxBLDEsMTUsRXQsTSk7cGU9cGUrMXwwfXFlPUcsRD1EKzF8MH1pZihGdChFdCks''@;'; put 'put ''XzllKGYpLDB8V2Upe2ZvcihxPTA7ISgoMHxxKT49KDB8QSkpOyl7Zm9yKGdlPVdlKyhxPDwyKXwwLGJlPXArKHE8PDIpfDAscGU9MDshKCgwfHBlKT49KDB8YykpOylfWygwfGFbYmU+PjJdKSsocGU8PDMpPj4zXT0ram5bKDB8YVtnZT4+Ml0pKyhwZTw8Mik+PjJdLHBlPXBlKzF8MDtxPXEr''@;'; put 'put ''MXwwfUZ0KDB8YVtXZT4+Ml0pLEZ0KFdlKX0wfGImJihGdCgwfGFbYj4+Ml0pLEZ0KGIpKSxGdChWZSksRnQobSksRnQocnQpLEZ0KGt0KSxGdCh3KX19d2hpbGUoMCk7RnQoMHxhW1p0Pj4yXSksRnQoMHxhW2N0Pj4yXSksUiYmKEZ0KDB8YVtSPj4yXSksRnQoUikpfWVsc2UgYnQ9MTB9ZWxz''@;'; put 'put ''ZSBidD0xMH13aGlsZSgwKTtyZXR1cm4gMTA9PSgwfGJ0KSYmKEQ9MHwkTihsLGMsZixwLG0sQSx3LGIsaykpLGxlPWFuLDB8RH0oRCxjLDB8YVtHPj4yXSxnZSwwfGFbYmU+PjJdLDB8YVs0NzEzN10sbSxwLDB8YVs0NzEzNl0sTSksQT0xMik6QT0xNCk6KG09MHwkTihELGMsMHxhW0c+PjJd''@;'; put 'put ''LGdlLDB8YVtiZT4+Ml0sMHxhWzQ3MTM3XSxtLHAsMHxhWzQ3MTM2XSksQT0xMiksMTI9PSgwfEEpJiYoKDB8bSk8MD8kcigzLDg5Mjg5LHBlKTpBPTE0KTtlOmRve2lmKDE0PT0oMHxBKSlmb3IoQT0wfER0KGwpOzspe2lmKCFBKWJyZWFrIGU7Zm9yKHc9MHxhWzEyMCsoaz0wfGFbQSsxNj4+''@;'; put 'put ''Ml0pPj4yXSxiPTB8YVs0NzEzN10saz1rKzEzMnwwLG09MDshKCgwfG0pPj0oMHxiKSk7KV9bKDB8YVtrPj4yXSkrKG08PDMpPj4zXT0rX1soMHxhW2dlKyhtPDwyKT4+Ml0pKyh3PDwzKT4+M10sbT1tKzF8MDtBPTB8enQobCxBKX19d2hpbGUoMCk7TlgoRCksRnQoMHxhW2dlPj4yXSksRnQo''@;'; put 'put ''Z2UpLEZ0KDB8YVtiZT4+Ml0pLGxlPU9lfWZ1bmN0aW9uIFpOKGwsYyxmKXt2YXIgcCxBO3N3aXRjaChsfD0wLGN8PTAsQT1sZSxsZT1sZSs0OHwwLHA9QSwwfChmfD0wKSl7Y2FzZSAyOiFmdW5jdGlvbiBYYyhsLGMpe3ZhciBwLEEsdyxiLGY9MCxtPTA7Zm9yKGI9bGUsbGU9bGUrMTZ8MCx3''@;'; put 'put ''PTB8ZnVuY3Rpb24gaDllKGwsYyl7dmFyIGYscDtyZXR1cm4gcD0wfGFbOCsobHw9MCk+PjJdLEpYKGwsY3w9MCksZj0wfE5WKGwsYyksWFgobCxjLHApLDB8Zn0oQT0wfExKKGx8PTAsY3w9MCxiLDAsMiwwKSxjKSxwPWwrMTZ8MCxsPTA7ISgoMHxsKT49KDB8YykpOyl7Zm9yKG09dysobDw8''@;'; put 'put ''Mil8MCxmPTA7KDB8ZikhPSgwfGMpOylfWygwfGFbKDB8YVsxNjArKDB8YVtwPj4yXSk+PjJdKSsobDw8Mik+PjJdKSsoZjw8Myk+PjNdPSsoMHxhWygwfGFbbT4+Ml0pKyhmPDwyKT4+Ml0pLGY9ZisxfDA7bD1sKzF8MH1GdCgwfGFbdz4+Ml0pLEZ0KHcpLE5YKEEpLGxlPWJ9KGwsYyk7YnJl''@;'; put 'put ''YWs7Y2FzZSAxOjB8ZnVuY3Rpb24gT1gobCxjKXtsfD0wO3ZhciB3LGIsayxmPTAscD0wLG09MCxBPTAsTT0wO2ZvcihiPTB8Y2coY3w9MCxjLDApLGs9MHxjZyhjLGMsMCkscD0wfER0KGwpO3A7KXtmb3IoZj0wfE1zKGwscCk7ZjspKDB8KG09KDB8YVthWygzPT0oMHwoQT0zJmFbZj4+Ml0p''@;'; put 'put ''KT9mOmYrNDh8MCkrNDA+PjJdPj4yXSk+Pj40KSkhPSgwfChBPSgwfGFbYVsoMj09KDB8QSk/ZjpmKy00OHwwKSs0MD4+Ml0+PjJdKT4+PjQpKSYmKF9bKDB8YVtiKyhBPDwyKT4+Ml0pKyhtPDwzKT4+M109TT0tMS8rX1sxMzYrKDB8YVtmKzE2Pj4yXSk+PjNdLF9bKDB8YVtiKyhtPDwyKT4+''@;'; put 'put ''Ml0pKyhBPDwzKT4+M109TSksZj0wfFZzKGwsZixwKTtwPTB8enQobCxwKX13PTB8a1YoYyxiLGspO2U6ZG97aWYoMHx3KWZvcihtPWwrMTZ8MCxwPTA7Oyl7aWYoKDB8cCk+PSgwfGMpKWJyZWFrIGU7Zm9yKEE9aysocDw8Mil8MCxmPTA7KDB8ZikhPSgwfGMpOylfWygwfGFbKDB8YVsxNjAr''@;'; put 'put ''KDB8YVttPj4yXSk+PjJdKSsocDw8Mik+PjJdKSsoZjw8Myk+PjNdPStfWygwfGFbaysoZjw8Mik+PjJdKSsoZjw8Myk+PjNdKyArX1sobD0wfGFbQT4+Ml0pKyhwPDwzKT4+M10rLTIqK19bbCsoZjw8Myk+PjNdLGY9ZisxfDA7cD1wKzF8MH19d2hpbGUoMCk7cmV0dXJuIEI3KGIpLEI3KGsp''@;'; put 'put ''LDB8d30obCxjKXx8KGFbcD4+Ml09MHx0aShsKSwkcigwLDg4OTAyLHApLCRyKDMsOTMzNjQsQSs4fDApLCRyKDMsODg5NTQsQSsxNnwwKSwkcigzLDg5MDI2LEErMjR8MCksS0oobCxjKSk7YnJlYWs7ZGVmYXVsdDpLSihsLGMpLDM9PSgwfGYpJiZmdW5jdGlvbiBSNyhsKXt2YXIgbSxjPTAs''@;'; put 'put ''Zj0wLHA9MCxBPTAsdz0wLGI9MDtmb3IobT0xNisobHw9MCl8MCxmPTB8RHQobCk7Zjspe2ZvcihjPTB8dzAobCxmKTtjOykoMHwocD0oMHxhW2FbKDM9PSgwfChBPTMmYVtjPj4yXSkpP2M6Yys0OHwwKSs0MD4+Ml0+PjJdKT4+PjQpKSE9KDB8KEE9KDB8YVthWygyPT0oMHxBKT9jOmMrLTQ4''@;'; put 'put ''fDApKzQwPj4yXT4+Ml0pPj4+NCkpJiYoX1soMHxhWyh3PTB8YVsxNjArKDB8YVttPj4yXSk+PjJdKSsoQTw8Mik+PjJdKSsocDw8Myk+PjNdPWI9K19bMTM2KygwfGFbYysxNj4+Ml0pPj4zXSxfWygwfGFbdysocDw8Mik+PjJdKSsoQTw8Myk+PjNdPWIpLGM9MHxTMChsLGMpO2Y9MHx6dChs''@;'; put 'put ''LGYpfX0obCl9KGZ1bmN0aW9uIHl2ZShsLGMpe3ZhciBwLGY9MDtwPWxlLGxlPWxlKzE2fDAsZj1wLGM9MHxESihsfD0wLGN8PTAsMik7ZTpkb3tpZigxIT0oMHxjKSlmb3IoYVs0Njc5N118Y3x8KCRyKDAsOTAxOTIsZiksYVs0Njc5N109MSksZj1sKzE2fDAsYz0wOzspe2lmKCEobD0wfGFb''@;'; put 'put ''KDB8YVsxNTIrKDB8YVtmPj4yXSk+PjJdKSsoYzw8Mik+PjJdKSlicmVhayBlOzB8ZmVbMTE5KygwfGFbbCsxNj4+Ml0pPj4wXXx8aHNlKGwsMSksYz1jKzF8MH19d2hpbGUoMCk7bGU9cH0pKGwsYyksZnVuY3Rpb24gUDcobCxjKXtjfD0wO3ZhciBrLEQsUixxLGY9MCxwPTAsbT0wLEE9MCx3''@;'; put 'put ''PTAsYj0wLE09MCxwZT0wO2ZvcihxPWxlLGxlPWxlKzk2fDAsRD1xLGs9MHxhWzE2NCsobT0wfGFbKFI9MTYrKGx8PTApfDApPj4yXSk+PjJdLG09MHxhW20rMTYwPj4yXSxNPTA7ISgoMHxNKT49KDB8YykpOyl7Zm9yKHc9bSsoTTw8Mil8MCxiPWsrKE08PDIpfDAscD0wOygwfHApIT0oMHxN''@;'; put 'put ''KTspQT0xLygoQT0rX1soMHxhW3c+PjJdKSsocDw8Myk+PjNdKSpBKSwoZj0wfEthKGwsMHxhWyhmPTB8YVsxNTIrKDB8YVtSPj4yXSk+PjJdKSsoTTw8Mik+PjJdLDB8YVtmKyhwPDwyKT4+Ml0sMCwwKSkmJihBKj0rX1sxMjgrKDB8YVtmKzE2Pj4yXSk+PjNdKSxfWygwfGFbaysocDw8Mik+''@;'; put 'put ''PjJdKSsoTTw8Myk+PjNdPUEsX1soMHxhW2I+PjJdKSsocDw8Myk+PjNdPUEscD1wKzF8MDtNPU0rMXwwfWZvcihsPTB8YVs0NzEzN10scD0wOygwfHApPCgwfGMpOyl7Zm9yKGY9MDshKCgwfGYpPj0oMHxsKSk7KV9bKDB8YVsoMHxhWzE2OCsoMHxhW1I+PjJdKT4+Ml0pKyhwPDwyKT4+Ml0p''@;'; put 'put ''KyhmPDwzKT4+M109MCxmPWYrMXwwO3A9cCsxfDB9Zm9yKHc9MDtmPTB8YVsoMHxhWzE1MisoMHxhW1I+PjJdKT4+Ml0pKyh3PDwyKT4+Ml07KXtmb3IobD1mKzE2fDAsZj0wOyEoKDB8Zik+PSgwfGMpKTspe2U6ZG97aWYoKDB8dykhPSgwfGYpKWZvcihBPStXSigwfGFbMTMyKygwfGFbbD4+''@;'; put 'put ''Ml0pPj4yXSwwfGFbMTMyKygwfGFbMTYrKDB8YVsoMHxhWzE1MisoMHxhW1I+PjJdKT4+Ml0pKyhmPDwyKT4+Ml0pPj4yXSk+PjJdLEQpLG09MHxhWzQ3MTM3XSxBPTEvQSxwPTA7Oyl7aWYoKDB8cCk+PSgwfG0pKWJyZWFrIGU7X1soMHxhWygwfGFbKDB8YVsxNzIrKE09MHxhW1I+PjJdKT4+''@;'; put 'put ''Ml0pKyh3PDwyKT4+Ml0pKyhmPDwyKT4+Ml0pKyhwPDwzKT4+M109cGU9KChwZT0rX1tEKyhwPDwzKT4+M10pLStfWygwfGFbKDB8YVtNKzE2MD4+Ml0pKyh3PDwyKT4+Ml0pKyhmPDwzKT4+M10qcGUqQSkqK19bKDB8YVsoMHxhW00rMTY0Pj4yXSkrKHc8PDIpPj4yXSkrKGY8PDMpPj4zXSxf''@;'; put 'put ''WyhNPSgwfGFbKDB8YVtNKzE2OD4+Ml0pKyh3PDwyKT4+Ml0pKyhwPDwzKXwwKT4+M109K19bTT4+M10rcGUscD1wKzF8MH19d2hpbGUoMCk7Zj1mKzF8MH13PXcrMXwwfWxlPXF9KGwsYyksZnVuY3Rpb24gSkoobCxjKXtsfD0wLGN8PTA7dmFyIEEsdyxiLGY9MCxrPTA7Zm9yKHc9bGUsbGU9''@;'; put 'put ''bGUrMzJ8MCxBPXcrMjR8MCxfWzIzMjE2XT0oYj0rX1syMzI5NF0pKmI7Zj0wfHd2ZShsLGMpOyl4RChsLGMsZik7KDB8KGM9MHxhWzE1NisoMHxhWyhjPWwrMTZ8MCk+PjJdKT4+Ml0pKT09KDB8YVs0NzEzNl0pJiYoaz0wfHRpKGwpLGFbQT4+Ml09YyxhW0ErND4+Ml09aywkcigwLDkwMzIw''@;'; put 'put ''LEEpKSxsZT13fShsLGMpLGxlPUF9ZnVuY3Rpb24gTEoobCxjLGYscCxtLEEpe2N8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgcWUscnQsYXQsa3Qsc3QsRXQsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wLFZlPTAs''@;'; put 'put ''V2U9MCxTdD0wLFp0PTAsY3Q9MDtmb3Iodz0wfE4zKGx8PTApLEV0PTB8ZnVuY3Rpb24gcGFlKCl7dmFyIGwscCxjPTAsZj0wO2Y9MjA3NzYscD0zNisoYz1sPTB8UW4oNDApKXwwO2Rve2FbYz4+Ml09YVtmPj4yXSxjPWMrNHwwLGY9Zis0fDB9d2hpbGUoKDB8Yyk8KDB8cCkpO3JldHVybiBh''@;'; put 'put ''W2wrMzY+PjJdPTAsMHxpcyhsLDB8YVs0NTgxXSl9KCksMj09KDB8bSk/KGI9MCxTdD0wKTooU3Q9MHxzaShsLDIsOTI0OTMsMCksYj0wIT0oMHxhWzQ3MTc0XSkmMSxTdD0wIT0oMHxTdCkpLHJ0PTM9PSgxfHApLGt0PTB8UW4oMjAqY3wwKSxzdD0wfFFuKGM8PDIpLE09MHxRbihrPSh3PDwx''@;'; put 'put ''KStjPDwyKSxtPShxZT1ydHxTdCk/MHxRbihrKTowLHc9KGF0PTAhPSgwfGIpKT8wfFFuKGspOjAsYj1ydD8wfFFuKGspOjAsaz0wLEhlPTB8RHQobCksVmU9MDtIZTspe2lmKHZhZShFdCksKDB8YVsxMjArKDB8YVtIZSsxNj4+Ml0pPj4yXSkhPSgwfFZlKSl7V2U9MTI7YnJlYWt9Zm9yKGFb''@;'; put 'put ''c3QrKFZlPDwyKT4+Ml09SGUsYVsoT2U9a3QrKDIwKlZlfDApKzR8MCk+PjJdPU0sYVsoTGU9a3QrKDIwKlZlfDApKzh8MCk+PjJdPXFlP206MCxhWyhSZT1rdCsoMjAqVmV8MCkrMTJ8MCk+PjJdPWF0P3c6MCxhW2t0KygyMCpWZXwwKSsxNj4+Ml09cnQ/YjowLHBlPTEsYmU9MHxNcyhsLEhl''@;'; put 'put ''KSxnZT0xLHE9ayxNPU0rNHwwLG09cWU/bSs0fDA6bSx3PWF0P3crNHwwOncsYj1ydD9iKzR8MDpiO2JlOyl7RD0zJmFbYmU+PjJdLEc9YmUrLTQ4fDAsaz1iZSs0OHwwO2Rve2lmKCgwfGFbKDI9PSgwfEQpP2JlOkcpKzQwPj4yXSk9PSgwfGFbKDM9PSgwfEQpP2JlOmspKzQwPj4yXSkpRD1w''@;'; put 'put ''ZSxHPWdlLGs9cTtlbHNle2lmKCgwfChEPTB8cnNlKEV0LGJlLHBlKSkpIT0oMHxwZSkpe2lmKGF0JiYoam5bKEc9KDB8YVtSZT4+Ml0pKyhEPDwyKXwwKT4+Ml09K19bMTI4KygwfGFbYmUrMTY+PjJdKT4+M10rICtqbltHPj4yXSksIVN0KXtEPXBlLEc9Z2Usaz1xO2JyZWFrfWpuWyhEPSgw''@;'; put 'put ''fGFbTGU+PjJdKSsoRDw8Mil8MCk+PjJdPShadD0rX1sxMzYrKDB8YVtiZSsxNj4+Ml0pPj4zXSk+KFI9KygwfH5+K2puW0Q+PjJdKSk/WnQ6UixEPXBlLEc9Z2Usaz1xO2JyZWFrfXE9cSsxfDAsRD1wZSsxfDAscGU9TSs0fDAsYVtNPj4yXT1hWzEyMCsoMHxhWzE2KygwfGFbKCgwfGFbKGs9''@;'; put 'put ''Mz09KDB8KGN0PTMmYVtiZT4+Ml0pKT9iZTprKSs0MD4+Ml0pPT0oMHxIZSk/Mj09KDB8Y3QpP2JlOkc6aykrNDA+PjJdKT4+Ml0pPj4yXSxhdCYmKGpuW3c+PjJdPStfWzEyOCsoMHxhW2JlKzE2Pj4yXSk+PjNdLHc9dys0fDApLFN0PyhrPW0rNHwwLGpuW20+PjJdPStfWzEzNisoMHxhW2Jl''@;'; put 'put ''KzE2Pj4yXSk+PjNdLHJ0PyhtPWssV2U9MjcpOm09ayk6cnQmJihqblttPj4yXT0xLG09bSs0fDAsV2U9MjcpLDI3PT0oMHxXZSkmJihXZT0wLFI9MCE9KDB8KGs9MHxMaShiZSwxMDE1NTkpKSkmJjA9PSgwfHMyKGssMTM1NzA5LDQpKT8wOigwfEhlKT09KDB8YVsoMj09KDMmYVtiZT4+Ml18''@;'; put 'put ''MCk/YmU6RykrNDA+PjJdKT8xOi0xLGpuW2I+PjJdPVIsYj1iKzR8MCksRz1nZSsxfDAsaz1xLE09cGV9fXdoaWxlKDApO3BlPUQsYmU9MHxWcyhsLGJlLEhlKSxnZT1HLHE9a31hW2t0KygyMCpWZXwwKT4+Ml09Z2UsYVthW09lPj4yXT4+Ml09VmUsaz1xLEhlPTB8enQobCxIZSksVmU9VmUr''@;'; put 'put ''MXwwfTEyPT0oMHxXZSkmJlByKDg5MTAzLDg5MTE4LDgxOSw4OTEzMCkscnQmJmZ1bmN0aW9uIGxnKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTA7Zm9yKG09MDs7KXtpZigoMHxtKT49KDB8Yykpe209MDticmVha31mZVsxNTcrKEE9MHxhWzE2KygwfGFbcCsobTw8''@;'; put 'put ''Mik+PjJdKT4+Ml0pPj4wXT0wLGZlW0ErMTU4Pj4wXT0wLG09bSsxfDB9Zm9yKDshKCgwfG0pPj0oMHxjKSk7KTB8ZmVbMTU3KygwfGFbMTYrKDB8YVtwKyhtPDwyKT4+Ml0pPj4yXSk+PjBdfHxpNChsLG0sZixwKSxtPW0rMXwwfShrdCxjLHAsc3QpLEQ9KDB8aykvMnwwO2U6ZG97aWYoKDB8''@;'; put 'put ''RCkhPSgwfE4zKGwpKSlmb3Ioaz0oRDw8MSkrYzw8MixiPTB8VjAoMHxhW2t0KzQ+PjJdLGspLFN0JiYobT0wfFYwKDB8YVtrdCs4Pj4yXSxrKSksYXQ/KE09MCx3PTB8VjAoMHxhW2t0KzEyPj4yXSxrKSk6TT0wOzspe2lmKCgwfE0pPj0oMHxjKSlicmVhayBlO2s9MHxhW2t0KygyMCpNfDAp''@;'; put 'put ''Pj4yXSxhW2t0KygyMCpNfDApKzQ+PjJdPWIsU3QmJihhW2t0KygyMCpNfDApKzg+PjJdPW0sbT1tKyhrPDwyKXwwKSxhdCYmKGFba3QrKDIwKk18MCkrMTI+PjJdPXcsdz13KyhrPDwyKXwwKSxNPU0rMXwwLGI9Yisoazw8Mil8MH19d2hpbGUoMCk7cmV0dXJuIGFbZj4+Ml09RCxBP2FbQT4+''@;'; put 'put ''Ml09c3Q6RnQoc3QpLGZ1bmN0aW9uIHd5KGwpe3ZhciBjLGY9MDtmb3IoYz0wfGFbNCsobHw9MCk+PjJdLE5sKGwpLGw9MHxhW2MrMzY+PjJdO2w7KWY9MHxhW2w+PjJdLEZ0KGwpLGw9ZjtGdChjKX0oRXQpLDB8a3R9ZnVuY3Rpb24gcnNlKGwsYyxmKXt2YXIgcCxtPTA7cmV0dXJuIDB8ZnVu''@;'; put 'put ''Y3Rpb24gQWFlKGwsYyxmLHApe3ZhciBtLEE7cmV0dXJuIGx8PTAsZnw9MCxwfD0wLG09bGUsbGU9bGUrMzJ8MCxhWyhBPW0pKzg+PjJdPWN8PTAsYVtBKzEyPj4yXT1mLGFbQSsxNj4+Ml09cCxwPTB8YVsxNisoMHxtaVs2MyZhW2w+PjJdXShsLEEsMSkpPj4yXSxsZT1tLDB8cH0obHw9MCwo''@;'; put 'put ''bT0oMHwocD0wfGFbMTIwKygwfGFbMTYrKDB8YVsoMz09KDB8KG09MyZhWyhjfD0wKT4+Ml0pKT9jOmMrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkpPigwfChjPTB8YVsxMjArKDB8YVsxNisoMHxhWygyPT0oMHxtKT9jOmMrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pKSk/YzpwLG0/cDpjLGZ8''@;'; put 'put ''PTApfWZ1bmN0aW9uIGk0KGwsYyxmLHApe2x8PTAsZnw9MDt2YXIgTSxELFIscSxtPTAsQT0wLHc9MCxiPTAsaz0wLEc9MDtmZVsxNTcrKGs9MHxhWyhxPTE2KygwfGFbKHB8PTApKygoY3w9MCk8PDIpPj4yXSl8MCk+PjJdKT4+MF09MSxmZVtrKzE1OD4+MF09MSxrPWwrKDIwKmN8MCl8MCxN''@;'; put 'put ''PWwrKDIwKmN8MCkrMTZ8MCxEPWwrKDIwKmN8MCkrNHwwLFI9Mz09KDB8Zik/LTE6MSxiPTE7ZTpmb3IoOzspe2lmKCgwfGIpPj0oMHxhW2s+PjJdKSl7bT0xNDticmVha31tPSgwfGFbTT4+Ml0pKyhiPDwyKXwwO2Rve2lmKDEhPStqblttPj4yXSl7aWYoISgwfGZlWzE1OCsoQT0wfGFbMTYr''@;'; put 'put ''KDB8YVtwKygoRz0wfGFbKDB8YVtEPj4yXSkrKGI8PDIpPj4yXSk8PDIpPj4yXSk+PjJdKT4+MF0pKXtpZigwfGZlW0ErMTU3Pj4wXSlicmVhaztpNChsLEcsZixwKTticmVha31mb3Ioam5bbT4+Ml09UixBPWwrKDIwKkd8MCkrNHwwLHc9MHxhW2wrKDIwKkd8MCk+PjJdLG09MTs7KXtpZigo''@;'; put 'put ''MHxtKT49KDB8dykpe209OTticmVhayBlfWlmKCgwfGFbKDB8YVtBPj4yXSkrKG08PDIpPj4yXSk9PSgwfGMpKWJyZWFrO209bSsxfDB9am5bKDB8YVtsKygyMCpHfDApKzE2Pj4yXSkrKG08PDIpPj4yXT0tMX19d2hpbGUoMCk7Yj1iKzF8MH1pZig5PT0oMHxtKSlQcig4OTE0NCw4OTExOCw3''@;'; put 'put ''MjEsODkxNjQpO2Vsc2UgaWYoMTQ9PSgwfG0pKXJldHVybiB2b2lkKGZlWzE1OCsoMHxhW3E+PjJdKT4+MF09MCl9ZnVuY3Rpb24gYkQobCl7dmFyIGM7aDAobHw9MCwxMzc0NjAsMTc2LDEpLEw3KGwpLGM9K01sKGwsMHxhWzQ3MTc0XSwxLDEpLF9bMTI4KygwfGFbbCsxNj4+Ml0pPj4zXT1j''@;'; put 'put ''fWZ1bmN0aW9uIHpOKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIGIscD0wLG09MCxBPTAsdz0wLGs9MDtpZihiPWxlLGxlPWxlKzE2fDAscD1iLHc9KEE9MHxpdFsxNjgrKDB8YVsobT0xNisoY3w9MCl8MCk+PjJdKT4+MV0pPDwxNj4+MTYsQTw8MTY+PjE2IT0xJjA9PSgwfGZlWzE5NDk1NF0pKXtm''@;'; put 'put ''b3IoQT0wfFFuKHc8PDIpLHA9MDshKCgwfHApPj0oMHx3KSk7KWFbQSsocDw8Mik+PjJdPWMsYz0wfGFbMTcyKygwfGFbYysxNj4+Ml0pPj4yXSxwPXArMXwwO2ZvcihpRChsLEEsMCx3LGs9KygwfGYpLGssMTc3OTIpLGM9MDshKCgwfGMpPj0oMHx3KSk7KTB8YVs5NisoMHxhWyhtPTE2Kyhw''@;'; put 'put ''PTB8YVtBKyhjPDwyKT4+Ml0pfDApPj4yXSk+PjJdJiZuNChmPTB8Y3IoMHxhWygzPT0oMyZhW3A+PjJdfDApP3A6cCs0OHwwKSs0MD4+Ml0pLDB8YVs5NisoMHxhW20+PjJdKT4+Ml0pLHZOKHApLGM9YysxfDA7RnQoQSl9ZWxzZSBhW3A+PjJdPWMsaUQobCxwLDAsMSxrPSsoMHxmKSxrLDE3''@;'; put 'put ''NzkyKSwwfGFbOTYrKDB8YVttPj4yXSk+PjJdJiZuNCh3PTB8Y3IoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6Yys0OHwwKSs0MD4+Ml0pLDB8YVs5NisoMHxhW20+PjJdKT4+Ml0pLHZOKGMpO2xlPWJ9ZnVuY3Rpb24gQ0QobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBWZSxxZSxydCxhdCxT''@;'; put 'put ''dCxTbixwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsV2U9MCxrdD0wLHN0PTAsRXQ9MCxadD0wLGN0PTAsYnQ9MCxhbj0wO1NuPWxlLGxlPWxlKzM4NHwwLGJ0PVNuKzM2OHwwLGFuPVNuKzExMnww''@;'; put 'put ''LEE9U24rMzJ8MCxHPVNuKzMzNnwwLHN0PVNuKzMyMHwwLEV0PVNuKzMwNHwwLFp0PVNuKzI4OHwwLGN0PVNuKzI3MnwwLG09U24rMjU2fDAsYXQ9U24rMjQwfDAsU3Q9U24rMjI0fDAsa3Q9U24rMjA4fDAscGU9U24rMTkyfDAsZ2U9U24rMTc2fDAsYmU9U24rMTYwfDAsSGU9U24rMTQ0fDAs''@;'; put 'put ''VmU9U24rMTI4fDAscWU9U24rOTZ8MCxydD1TbisxNnwwLFdlPVNuO2U6ZG97c3dpdGNoKDB8JDUobCkpe2Nhc2UgMzpjYXNlIDE6cD0wfHZyKDgpLG09MHxhWzEyKyhsPTB8YVsoSGU9bCsxNnwwKT4+Ml0pPj4yXTtkb3tpZihmPDwyND4+MjQpe2lmKDIwNDgmYVttKzQwPj4yXSl7dkooRyxt''@;'; put 'put ''KSxMZT0rX1tHKzg+PjNdLFI9K19bRysxNj4+M10sUmU9K19bRysyND4+M10sX1tBPj4zXT1EPStfW0c+PjNdLF9bQSs4Pj4zXT1MZSxfW0ErMTY+PjNdPVIsX1tBKzI0Pj4zXT1MZSxfW0ErMzI+PjNdPVIsX1tBKzQwPj4zXT1SZSxfW0ErNDg+PjNdPUQsX1tBKzU2Pj4zXT1SZSxSZT0wLGw9''@;'; put 'put ''NCxmPTAsRD0wLFI9MDticmVha31MZT0tLjUqKFJlPStfW2wrODA+PjNdKSxfW0E+PjNdPUQ9LShSPStfW2wrODg+PjNdKSxfW0ErOD4+M109TGUsX1tBKzE2Pj4zXT1SLF9bQSsyND4+M109TGUsUmUqPS41LF9bQSszMj4+M109UixfW0ErNDA+PjNdPVJlLF9bQSs0OD4+M109RCxfW0ErNTY+''@;'; put 'put ''PjNdPVJlLFJlPTAsbD00LGY9MCxEPTAsUj0wO2JyZWFrfWlmKCgwfChsPTB8YVttKzg+PjJdKSk+Mil7UmU9MCxBPTB8YVttKzQ0Pj4yXSxmPTAsRD0ram5bYz4+Ml0sUj0ram5bYys0Pj4yXTticmVha31SZT0uMDEqK3FjKCksbD04LEE9MCxmPTEsRD0wLFI9MDticmVha313aGlsZSgwKTtm''@;'; put 'put ''b3IoYVtwKzQ+PjJdPWwsRz0wfHZyKGw8PDQpLGFbcD4+Ml09RyxxPTEvKygwfGwpLHBlPWMrOHwwLGdlPWMrNHwwLGJlPTQ9PSgwfGwpLE9lPS1ELExlPS1SLG09MDs7KXtpZigoMHxsKTw9KDB8bSkpYnJlYWsgZTtkb3tpZihmKWI9K2hhKCsodz02LjI4MzE4NTMwNzE3OTU4NiorKDB8bSkq''@;'; put 'put ''cStSZSkpLHc9K0RhKCt3KSwwfGZlW3BlPj4wXT8oaz0oK19bODArKGFuPTB8YVtIZT4+Ml0pPj4zXSsgK2puW2dlPj4yXSkqdyx3PSgrX1thbis5Nj4+M10rICtfW2FuKzg4Pj4zXSsgK2puW2M+PjJdKSpiKTooaz13KitqbltnZT4+Ml0qK19bODArKGFuPTB8YVtIZT4+Ml0pPj4zXSx3PWIq''@;'; put 'put ''K2puW2M+PjJdKigrX1thbis5Nj4+M10rICtfW2FuKzg4Pj4zXSkpLE09LjUqdyx3PS41Kms7ZWxzZXtpZighKDB8ZmVbcGU+PjBdKSl7TT0rX1tBKyhtPDw0KT4+M10qRCx3PStfW0ErKG08PDQpKzg+PjNdKlI7YnJlYWt9aWYoIWJlKXtNPStfW0ErKG08PDQpPj4zXSxNKj1ELyhrPStEMCgr''@;'; put 'put ''KCh3PStfW0ErKG08PDQpKzg+PjNdKSp3K00qTSkpKSsxLHcqPVIvaysxO2JyZWFrfXN3aXRjaCgwfG0pe2Nhc2UgMDpiPVIsdz1EO2JyZWFrO2Nhc2UgMTpiPVIsdz1PZTticmVhaztjYXNlIDI6Yj1MZSx3PU9lO2JyZWFrO2Nhc2UgMzpiPUxlLHc9RDticmVhaztkZWZhdWx0OmI9MCx3PTB9''@;'; put 'put ''TT0rX1tBKyhtPDw0KT4+M10rdyx3PStfW0ErKG08PDQpKzg+PjNdK2J9fXdoaWxlKDApO19bRysoKGFuPWwtbS0xfDApPDw0KT4+M109K19bMTYrKGJ0PTB8YVtIZT4+Ml0pPj4zXStNLF9bRysoYW48PDQpKzg+PjNdPStfW2J0KzI0Pj4zXSt3LG09bSsxfDB9Y2FzZSAyOmlmKHc9K19bMTYr''@;'; put 'put ''KHA9MHxhWzEyKygwfGFbKFdlPWwrMTZ8MCk+PjJdKT4+Ml0pPj4zXSxNPStfW3ArMjQ+PjNdLGI9K19bcCszMj4+M10saz0rX1twKzQwPj4zXSxwPTB8dnIoOCksYVtwKzQ+PjJdPTQsbD0wfHZyKDY0KSxhW3A+PjJdPWwsYVthbj4+Ml09YVsoV2U9MTYrKDB8YVtXZT4+Ml0pfDApPj4yXSxh''@;'; put 'put ''W2FuKzQ+PjJdPWFbV2UrND4+Ml0sYVthbis4Pj4yXT1hW1dlKzg+PjJdLGFbYW4rMTI+PjJdPWFbV2UrMTI+PjJdLDB8ZmVbYys4Pj4wXSl7UmU9dy0ram5bYz4+Ml0sTGU9TS0ram5bKGt0PWMrNHwwKT4+Ml0sYVtidD4+Ml09YVthbj4+Ml0sYVtidCs0Pj4yXT1hW2FuKzQ+PjJdLGFbYnQr''@;'; put 'put ''OD4+Ml09YVthbis4Pj4yXSxhW2J0KzEyPj4yXT1hW2FuKzEyPj4yXSxzZyhzdCxSZSxMZSxidCksYVtsPj4yXT1hW3N0Pj4yXSxhW2wrND4+Ml09YVtzdCs0Pj4yXSxhW2wrOD4+Ml09YVtzdCs4Pj4yXSxhW2wrMTI+PjJdPWFbc3QrMTI+PjJdLHN0PTE2KygwfGFbcD4+Ml0pfDAsTGU9dy0r''@;'; put 'put ''am5bYz4+Ml0sUmU9aysgK2puW2t0Pj4yXSxhW2J0Pj4yXT1hW2FuPj4yXSxhW2J0KzQ+PjJdPWFbYW4rND4+Ml0sYVtidCs4Pj4yXT1hW2FuKzg+PjJdLGFbYnQrMTI+PjJdPWFbYW4rMTI+PjJdLHNnKEV0LExlLFJlLGJ0KSxhW3N0Pj4yXT1hW0V0Pj4yXSxhW3N0KzQ+PjJdPWFbRXQrND4+''@;'; put 'put ''Ml0sYVtzdCs4Pj4yXT1hW0V0Kzg+PjJdLGFbc3QrMTI+PjJdPWFbRXQrMTI+PjJdLEV0PTMyKygwfGFbcD4+Ml0pfDAsUmU9YisgK2puW2M+PjJdLExlPWsrICtqbltrdD4+Ml0sYVtidD4+Ml09YVthbj4+Ml0sYVtidCs0Pj4yXT1hW2FuKzQ+PjJdLGFbYnQrOD4+Ml09YVthbis4Pj4yXSxh''@;'; put 'put ''W2J0KzEyPj4yXT1hW2FuKzEyPj4yXSxzZyhadCxSZSxMZSxidCksYVtFdD4+Ml09YVtadD4+Ml0sYVtFdCs0Pj4yXT1hW1p0KzQ+PjJdLGFbRXQrOD4+Ml09YVtadCs4Pj4yXSxhW0V0KzEyPj4yXT1hW1p0KzEyPj4yXSxadD00OCsoMHxhW3A+PjJdKXwwLExlPWIrICtqbltjPj4yXSxSZT1N''@;'; put 'put ''LStqbltrdD4+Ml0sYVtidD4+Ml09YVthbj4+Ml0sYVtidCs0Pj4yXT1hW2FuKzQ+PjJdLGFbYnQrOD4+Ml09YVthbis4Pj4yXSxhW2J0KzEyPj4yXT1hW2FuKzEyPj4yXSxzZyhjdCxMZSxSZSxidCksYVtadD4+Ml09YVtjdD4+Ml0sYVtadCs0Pj4yXT1hW2N0KzQ+PjJdLGFbWnQrOD4+Ml09''@;'; put 'put ''YVtjdCs4Pj4yXSxhW1p0KzEyPj4yXT1hW2N0KzEyPj4yXTticmVhayBlfWFbYnQ+PjJdPWFbYW4+PjJdLGFbYnQrND4+Ml09YVthbis0Pj4yXSxhW2J0Kzg+PjJdPWFbYW4rOD4+Ml0sYVtidCsxMj4+Ml09YVthbisxMj4+Ml0sdWcobSx3LE0sYnQsYyksYVtsPj4yXT1hW20+PjJdLGFbbCs0''@;'; put 'put ''Pj4yXT1hW20rND4+Ml0sYVtsKzg+PjJdPWFbbSs4Pj4yXSxhW2wrMTI+PjJdPWFbbSsxMj4+Ml0sY3Q9MTYrKDB8YVtwPj4yXSl8MCxhW2J0Pj4yXT1hW2FuPj4yXSxhW2J0KzQ+PjJdPWFbYW4rND4+Ml0sYVtidCs4Pj4yXT1hW2FuKzg+PjJdLGFbYnQrMTI+PjJdPWFbYW4rMTI+PjJdLHVn''@;'; put 'put ''KGF0LHcsayxidCxjKSxhW2N0Pj4yXT1hW2F0Pj4yXSxhW2N0KzQ+PjJdPWFbYXQrND4+Ml0sYVtjdCs4Pj4yXT1hW2F0Kzg+PjJdLGFbY3QrMTI+PjJdPWFbYXQrMTI+PjJdLGN0PTMyKygwfGFbcD4+Ml0pfDAsYVtidD4+Ml09YVthbj4+Ml0sYVtidCs0Pj4yXT1hW2FuKzQ+PjJdLGFbYnQr''@;'; put 'put ''OD4+Ml09YVthbis4Pj4yXSxhW2J0KzEyPj4yXT1hW2FuKzEyPj4yXSx1ZyhTdCxiLGssYnQsYyksYVtjdD4+Ml09YVtTdD4+Ml0sYVtjdCs0Pj4yXT1hW1N0KzQ+PjJdLGFbY3QrOD4+Ml09YVtTdCs4Pj4yXSxhW2N0KzEyPj4yXT1hW1N0KzEyPj4yXSxjdD00OCsoMHxhW3A+PjJdKXwwLGFb''@;'; put 'put ''YnQ+PjJdPWFbYW4+PjJdLGFbYnQrND4+Ml09YVthbis0Pj4yXSxhW2J0Kzg+PjJdPWFbYW4rOD4+Ml0sYVtidCsxMj4+Ml09YVthbisxMj4+Ml0sdWcoa3QsYixNLGJ0LGMpLGFbY3Q+PjJdPWFba3Q+PjJdLGFbY3QrND4+Ml09YVtrdCs0Pj4yXSxhW2N0Kzg+PjJdPWFba3QrOD4+Ml0sYVtj''@;'; put 'put ''dCsxMj4+Ml09YVtrdCsxMj4+Ml07YnJlYWsgZTtjYXNlIDQ6aWYobD1sKzE2fDAscD0wfHZyKDgpLGFbcCs0Pj4yXT00LG09MHx2cig2NCksYVtwPj4yXT1tLGFbYW4+PjJdPWFbKGN0PTE2KyhBPTB8YVtsPj4yXSl8MCk+PjJdLGFbYW4rND4+Ml09YVtjdCs0Pj4yXSxhW2FuKzg+PjJdPWFb''@;'; put 'put ''Y3QrOD4+Ml0sYVthbisxMj4+Ml09YVtjdCsxMj4+Ml0sdz0tK19bQSs4OD4+M10sMHxmZVtjKzg+PjBdKXtSZT13LStqbltjPj4yXSxMZT0tK19bQSs4MD4+M10tK2puWyhadD1jKzR8MCk+PjJdLGFbYnQ+PjJdPWFbYW4+PjJdLGFbYnQrND4+Ml09YVthbis0Pj4yXSxhW2J0Kzg+PjJdPWFb''@;'; put 'put ''YW4rOD4+Ml0sYVtidCsxMj4+Ml09YVthbisxMj4+Ml0sc2cocGUsUmUsTGUsYnQpLGFbbT4+Ml09YVtwZT4+Ml0sYVttKzQ+PjJdPWFbcGUrND4+Ml0sYVttKzg+PjJdPWFbcGUrOD4+Ml0sYVttKzEyPj4yXT1hW3BlKzEyPj4yXSxjdD0xNisoMHxhW3A+PjJdKXwwLExlPS0rX1s4OCsoRXQ9''@;'; put 'put ''MHxhW2w+PjJdKT4+M10tK2puW2M+PjJdLFJlPStfW0V0KzgwPj4zXSsgK2puW1p0Pj4yXSxhW2J0Pj4yXT1hW2FuPj4yXSxhW2J0KzQ+PjJdPWFbYW4rND4+Ml0sYVtidCs4Pj4yXT1hW2FuKzg+PjJdLGFbYnQrMTI+PjJdPWFbYW4rMTI+PjJdLHNnKGdlLExlLFJlLGJ0KSxhW2N0Pj4yXT1h''@;'; put 'put ''W2dlPj4yXSxhW2N0KzQ+PjJdPWFbZ2UrND4+Ml0sYVtjdCs4Pj4yXT1hW2dlKzg+PjJdLGFbY3QrMTI+PjJdPWFbZ2UrMTI+PjJdLGN0PTMyKygwfGFbcD4+Ml0pfDAsUmU9K19bOTYrKEV0PTB8YVtsPj4yXSk+PjNdKyAram5bYz4+Ml0sTGU9K19bRXQrODA+PjNdKyAram5bWnQ+PjJdLGFb''@;'; put 'put ''YnQ+PjJdPWFbYW4+PjJdLGFbYnQrND4+Ml09YVthbis0Pj4yXSxhW2J0Kzg+PjJdPWFbYW4rOD4+Ml0sYVtidCsxMj4+Ml09YVthbisxMj4+Ml0sc2coYmUsUmUsTGUsYnQpLGFbY3Q+PjJdPWFbYmU+PjJdLGFbY3QrND4+Ml09YVtiZSs0Pj4yXSxhW2N0Kzg+PjJdPWFbYmUrOD4+Ml0sYVtj''@;'; put 'put ''dCsxMj4+Ml09YVtiZSsxMj4+Ml0sY3Q9NDgrKDB8YVtwPj4yXSl8MCxMZT0rX1s5NisoRXQ9MHxhW2w+PjJdKT4+M10rICtqbltjPj4yXSxSZT0tK19bRXQrODA+PjNdLStqbltadD4+Ml0sYVtidD4+Ml09YVthbj4+Ml0sYVtidCs0Pj4yXT1hW2FuKzQ+PjJdLGFbYnQrOD4+Ml09YVthbis4''@;'; put 'put ''Pj4yXSxhW2J0KzEyPj4yXT1hW2FuKzEyPj4yXSxzZyhIZSxMZSxSZSxidCksYVtjdD4+Ml09YVtIZT4+Ml0sYVtjdCs0Pj4yXT1hW0hlKzQ+PjJdLGFbY3QrOD4+Ml09YVtIZSs4Pj4yXSxhW2N0KzEyPj4yXT1hW0hlKzEyPj4yXTticmVhayBlfUxlPS0rX1tBKzgwPj4zXSxhW2J0Pj4yXT1h''@;'; put 'put ''W2FuPj4yXSxhW2J0KzQ+PjJdPWFbYW4rND4+Ml0sYVtidCs4Pj4yXT1hW2FuKzg+PjJdLGFbYnQrMTI+PjJdPWFbYW4rMTI+PjJdLHVnKFZlLHcsTGUsYnQsYyksYVttPj4yXT1hW1ZlPj4yXSxhW20rND4+Ml09YVtWZSs0Pj4yXSxhW20rOD4+Ml09YVtWZSs4Pj4yXSxhW20rMTI+PjJdPWFb''@;'; put 'put ''VmUrMTI+PjJdLGN0PTE2KygwfGFbcD4+Ml0pfDAsTGU9LStfWzg4KyhadD0wfGFbbD4+Ml0pPj4zXSxSZT0rX1tadCs4MD4+M10sYVtidD4+Ml09YVthbj4+Ml0sYVtidCs0Pj4yXT1hW2FuKzQ+PjJdLGFbYnQrOD4+Ml09YVthbis4Pj4yXSxhW2J0KzEyPj4yXT1hW2FuKzEyPj4yXSx1Zyhx''@;'; put 'put ''ZSxMZSxSZSxidCxjKSxhW2N0Pj4yXT1hW3FlPj4yXSxhW2N0KzQ+PjJdPWFbcWUrND4+Ml0sYVtjdCs4Pj4yXT1hW3FlKzg+PjJdLGFbY3QrMTI+PjJdPWFbcWUrMTI+PjJdLGN0PTMyKygwfGFbcD4+Ml0pfDAsUmU9K19bOTYrKFp0PTB8YVtsPj4yXSk+PjNdLExlPStfW1p0KzgwPj4zXSxh''@;'; put 'put ''W2J0Pj4yXT1hW2FuPj4yXSxhW2J0KzQ+PjJdPWFbYW4rND4+Ml0sYVtidCs4Pj4yXT1hW2FuKzg+PjJdLGFbYnQrMTI+PjJdPWFbYW4rMTI+PjJdLHVnKHJ0LFJlLExlLGJ0LGMpLGFbY3Q+PjJdPWFbcnQ+PjJdLGFbY3QrND4+Ml09YVtydCs0Pj4yXSxhW2N0Kzg+PjJdPWFbcnQrOD4+Ml0s''@;'; put 'put ''YVtjdCsxMj4+Ml09YVtydCsxMj4+Ml0sY3Q9NDgrKDB8YVtwPj4yXSl8MCxMZT0rX1s5NisoWnQ9MHxhW2w+PjJdKT4+M10sUmU9LStfW1p0KzgwPj4zXSxhW2J0Pj4yXT1hW2FuPj4yXSxhW2J0KzQ+PjJdPWFbYW4rND4+Ml0sYVtidCs4Pj4yXT1hW2FuKzg+PjJdLGFbYnQrMTI+PjJdPWFb''@;'; put 'put ''YW4rMTI+PjJdLHVnKFdlLExlLFJlLGJ0LGMpLGFbY3Q+PjJdPWFbV2U+PjJdLGFbY3QrND4+Ml09YVtXZSs0Pj4yXSxhW2N0Kzg+PjJdPWFbV2UrOD4+Ml0sYVtjdCsxMj4+Ml09YVtXZSsxMj4+Ml07YnJlYWsgZTtkZWZhdWx0OnA9MH19d2hpbGUoMCk7cmV0dXJuIGxlPVNuLDB8cH1mdW5j''@;'; put 'put ''dGlvbiBzZyhsLGMsZixwKXtmPStfWzgrKHB8PTApPj4zXSsoZj0rZiksX1sobHw9MCk+PjNdPStfW3A+PjNdKyhjPStjKSxfW2wrOD4+M109Zn1mdW5jdGlvbiB1ZyhsLGMsZixwLG0pe2Y9K2puWzQrKG18PTApPj4yXSooZj0rZikrICtfWzgrKHB8PTApPj4zXSxfWyhsfD0wKT4+M109K2pu''@;'; put 'put ''W20+PjJdKihjPStjKSsgK19bcD4+M10sX1tsKzg+PjNdPWZ9ZnVuY3Rpb24gQkoobCxjLGYscCxtLEEpe2x8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgdyxiLGssTSxELFIsRyxxPTAscGU9MCxnZT0wO0c9bGUsbGU9bGUrMTEyfDAsaz1HKzg4fDAsTT1HKzMyfDAsRD1HKzE2fDAsUj1H''@;'; put 'put ''LG09Rys1NnwwLEE9Rys0MHwwLHc9NDgrKGN8PTApfDAscGU9MTYrKDB8YVsocT1jKzE2fDApPj4yXSl8MCxhWyhiPUcrNzJ8MCk+PjJdPWFbKGdlPTE2KygwfGFbMTYrKDB8YVsoMz09KDMmYVtjPj4yXXwwKT9jOncpKzQwPj4yXSk+PjJdKXwwKT4+Ml0sYVtiKzQ+PjJdPWFbZ2UrND4+Ml0s''@;'; put 'put ''YVtiKzg+PjJdPWFbZ2UrOD4+Ml0sYVtiKzEyPj4yXT1hW2dlKzEyPj4yXSxhW2s+PjJdPWFbcGU+PjJdLGFbays0Pj4yXT1hW3BlKzQ+PjJdLGFbays4Pj4yXT1hW3BlKzg+PjJdLGFbaysxMj4+Ml09YVtwZSsxMj4+Ml0sQ2sobSxiLGspLGFbRD4+Ml09YVttPj4yXSxhW0QrND4+Ml09YVtt''@;'; put 'put ''KzQ+PjJdLGFbRCs4Pj4yXT1hW20rOD4+Ml0sYVtEKzEyPj4yXT1hW20rMTI+PjJdLG09YystNDh8MCxxPTU2KygwfGFbcT4+Ml0pfDAsYVtiPj4yXT1hWyhwZT0xNisoMHxhWzE2KygwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzptKSs0MD4+Ml0pPj4yXSl8MCk+PjJdLGFbYis0Pj4yXT1hW3Bl''@;'; put 'put ''KzQ+PjJdLGFbYis4Pj4yXT1hW3BlKzg+PjJdLGFbYisxMj4+Ml09YVtwZSsxMj4+Ml0sYVtrPj4yXT1hW3E+PjJdLGFbays0Pj4yXT1hW3ErND4+Ml0sYVtrKzg+PjJdPWFbcSs4Pj4yXSxhW2srMTI+PjJdPWFbcSsxMj4+Ml0sQ2soQSxiLGspLGFbUj4+Ml09YVtBPj4yXSxhW1IrND4+Ml09''@;'; put 'put ''YVtBKzQ+PjJdLGFbUis4Pj4yXT1hW0ErOD4+Ml0sYVtSKzEyPj4yXT1hW0ErMTI+PjJdLHA/KEE9MHxhWzI4OCsoMHxhWzE2KygwfGFbKDI9PSgwfChnZT0zJmFbYz4+Ml0pKT9jOm0pKzQwPj4yXSk+PjJdKT4+Ml0sbT0wfGFbMjg4KygwfGFbMTYrKDB8YVsoMz09KDB8Z2UpP2M6dykrNDA+''@;'; put 'put ''PjJdKT4+Ml0pPj4yXSk6KEE9LTExMTEsbT0tMTExMSksYVtiPj4yXT1hW0Q+PjJdLGFbYis0Pj4yXT1hW0QrND4+Ml0sYVtiKzg+PjJdPWFbRCs4Pj4yXSxhW2IrMTI+PjJdPWFbRCsxMj4+Ml0sYVtrPj4yXT1hW1I+PjJdLGFbays0Pj4yXT1hW1IrND4+Ml0sYVtrKzg+PjJdPWFbUis4Pj4y''@;'; put 'put ''XSxhW2srMTI+PjJdPWFbUisxMj4+Ml0sZnVuY3Rpb24gRGQobCxjLGYscCxtLEEpe2x8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgYixSLEcscSx3PTAsaz0wLE09MCxEPTA7Zm9yKHE9bGUsbGU9bGUrMzJ8MCxrPXEsYVsoRD1xKzE2fDApPj4yXT1hWyhjfD0wKT4+Ml0sYVtEKzQ+PjJd''@;'; put 'put ''PWFbYys0Pj4yXSxhW0QrOD4+Ml09YVtjKzg+PjJdLGFbRCsxMj4+Ml09YVtjKzEyPj4yXSxSPTB8ZF8obCxmLEQpLGFbRD4+Ml09YVtwPj4yXSxhW0QrND4+Ml09YVtwKzQ+PjJdLGFbRCs4Pj4yXT1hW3ArOD4+Ml0sYVtEKzEyPj4yXT1hW3ArMTI+PjJdLEc9MHxkXyhsLG0sRCksYVtrPj4y''@;'; put 'put ''XT1hW2M+PjJdLGFbays0Pj4yXT1hW2MrND4+Ml0sYVtrKzg+PjJdPWFbYys4Pj4yXSxhW2srMTI+PjJdPWFbYysxMj4+Ml0sYVtEPj4yXT1hW3A+PjJdLGFbRCs0Pj4yXT1hW3ArND4+Ml0sYVtEKzg+PjJdPWFbcCs4Pj4yXSxhW0QrMTI+PjJdPWFbcCsxMj4+Ml0sRD0wfGZ1bmN0aW9uIGF4''@;'; put 'put ''KGwsYyxmLHAsbSxBLHcpe2N8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgYixrLE0sRD0wO3JldHVybiBrPWxlLGxlPWxlKzMyfDAsTT1rKzE2fDAsYj0wfGFbNCsod3w9MCk+PjJdLGFbKEQ9ayk+PjJdPWFbKGx8PTApPj4yXSxhW0QrND4+Ml09YVtsKzQ+PjJdLGFbRCs4Pj4yXT1hW2wr''@;'; put 'put ''OD4+Ml0sYVtEKzEyPj4yXT1hW2wrMTI+PjJdLGFbTT4+Ml09YVtwPj4yXSxhW00rND4+Ml09YVtwKzQ+PjJdLGFbTSs4Pj4yXT1hW3ArOD4+Ml0sYVtNKzEyPj4yXT1hW3ArMTI+PjJdLDB8ZnVuY3Rpb24gZ18obCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MDt2YXIgRCxSLEcscSxwZSxnZSxi''@;'; put 'put ''ZSxPZSxBPTAsdz0wLGI9MCxrPTAsTT0wO09lPWxlLGxlPWxlKzY0fDAsUj1PZSs0OHwwLEQ9T2UrMzJ8MCxxPU9lKzE2fDAsRz1PZSxnZT0wfGFbNCsobXw9MCk+PjJdLGJlPTB8YVttKzg+PjJdLHBlPTB8YVttKzE2Pj4yXSxBPSgwfChwfD0wKSk8MDtkb3tpZighKCgwfGMpPDApKXtpZihB''@;'; put 'put ''KXtNPTB8YVttKzEyPj4yXSxtPTAsdz0wLGI9YyxrPU0sYz1NKyhjPDwyKXwwLE09OTticmVha31pZihBPTB8YVttKzEyPj4yXSwoMHxjKT4oMHxwKSl7bT0wfGFbQSsocCsxPDwyKT4+Ml0sdz0wfGFbQSsocDw8Mik+PjJdLGI9YyxrPUEsYz1BKyhjPDwyKXwwLE09OTticmVha31tPTB8YVtB''@;'; put 'put ''KyhjKzE8PDIpPj4yXSx3PTB8YVtBKyhjPDwyKT4+Ml0sYj1wLGs9QSxjPUErKHA8PDIpfDAsTT05O2JyZWFrfUE/KEE9MCxiPTAsbT0wLHc9MCk6KGM9MHxhW20rMTI+PjJdLG09MCx3PTAsYj1wLGs9YyxjPWMrKHA8PDIpfDAsTT05KX13aGlsZSgwKTtmb3IoOT09KDB8TSkmJihBPTB8YVtr''@;'; put 'put ''KyhiKzE8PDIpPj4yXSxiPTB8YVtjPj4yXSksYz0wOzspe2lmKCgwfGMpPj0oMHx3KSl7TT0xMzticmVha31pZihrPWJlKyhjPDw0KXwwLHA9YmUrKGFbcGUrKGM8PDIpPj4yXTw8NCl8MCxhW0c+PjJdPWFbbD4+Ml0sYVtHKzQ+PjJdPWFbbCs0Pj4yXSxhW0crOD4+Ml09YVtsKzg+PjJdLGFb''@;'; put 'put ''RysxMj4+Ml09YVtsKzEyPj4yXSxhW3E+PjJdPWFbZj4+Ml0sYVtxKzQ+PjJdPWFbZis0Pj4yXSxhW3ErOD4+Ml09YVtmKzg+PjJdLGFbcSsxMj4+Ml09YVtmKzEyPj4yXSxhW0Q+PjJdPWFbaz4+Ml0sYVtEKzQ+PjJdPWFbays0Pj4yXSxhW0QrOD4+Ml09YVtrKzg+PjJdLGFbRCsxMj4+Ml09''@;'; put 'put ''YVtrKzEyPj4yXSxhW1I+PjJdPWFbcD4+Ml0sYVtSKzQ+PjJdPWFbcCs0Pj4yXSxhW1IrOD4+Ml09YVtwKzg+PjJdLGFbUisxMj4+Ml09YVtwKzEyPj4yXSwwfEM2KEcscSxELFIpKXtBPTA7YnJlYWt9Yz1jKzF8MH1lOmRve2lmKDEzPT0oMHxNKSl7Zm9yKDshKCgwfG0pPj0oMHxiKSk7KXtp''@;'; put 'put ''ZihwPWJlKyhtPDw0KXwwLE09YmUrKGFbcGUrKG08PDIpPj4yXTw8NCl8MCxhW0c+PjJdPWFbbD4+Ml0sYVtHKzQ+PjJdPWFbbCs0Pj4yXSxhW0crOD4+Ml09YVtsKzg+PjJdLGFbRysxMj4+Ml09YVtsKzEyPj4yXSxhW3E+PjJdPWFbZj4+Ml0sYVtxKzQ+PjJdPWFbZis0Pj4yXSxhW3ErOD4+''@;'; put 'put ''Ml09YVtmKzg+PjJdLGFbcSsxMj4+Ml09YVtmKzEyPj4yXSxhW0Q+PjJdPWFbcD4+Ml0sYVtEKzQ+PjJdPWFbcCs0Pj4yXSxhW0QrOD4+Ml09YVtwKzg+PjJdLGFbRCsxMj4+Ml09YVtwKzEyPj4yXSxhW1I+PjJdPWFbTT4+Ml0sYVtSKzQ+PjJdPWFbTSs0Pj4yXSxhW1IrOD4+Ml09YVtNKzg+''@;'; put 'put ''PjJdLGFbUisxMj4+Ml09YVtNKzEyPj4yXSwwfEM2KEcscSxELFIpKXtBPTA7YnJlYWsgZX1tPW0rMXwwLE09MTN9Zm9yKDs7KXtpZigoMHxBKT49KDB8Z2UpKXtBPTE7YnJlYWsgZX1pZihwPWJlKyhBPDw0KXwwLE09YmUrKGFbcGUrKEE8PDIpPj4yXTw8NCl8MCxhW0c+PjJdPWFbbD4+Ml0s''@;'; put 'put ''YVtHKzQ+PjJdPWFbbCs0Pj4yXSxhW0crOD4+Ml09YVtsKzg+PjJdLGFbRysxMj4+Ml09YVtsKzEyPj4yXSxhW3E+PjJdPWFbZj4+Ml0sYVtxKzQ+PjJdPWFbZis0Pj4yXSxhW3ErOD4+Ml09YVtmKzg+PjJdLGFbcSsxMj4+Ml09YVtmKzEyPj4yXSxhW0Q+PjJdPWFbcD4+Ml0sYVtEKzQ+PjJd''@;'; put 'put ''PWFbcCs0Pj4yXSxhW0QrOD4+Ml09YVtwKzg+PjJdLGFbRCsxMj4+Ml09YVtwKzEyPj4yXSxhW1I+PjJdPWFbTT4+Ml0sYVtSKzQ+PjJdPWFbTSs0Pj4yXSxhW1IrOD4+Ml09YVtNKzg+PjJdLGFbUisxMj4+Ml09YVtNKzEyPj4yXSwwfEM2KEcscSxELFIpKXtBPTA7YnJlYWt9QT1BKzF8MH19''@;'; put 'put ''fXdoaWxlKDApO3JldHVybiBsZT1PZSwwfEF9KEQsYyxNLG0sdyk/KGw9MHxGMCg4KyhiPDwyKXwwKSxhW2wrKGI8PDIpPj4yXT1EPWIrMXwwLGFbbCsoRDw8Mik+PjJdPS0xKTooYVsobD0wfGFbdysyND4+Ml0pKyhiPDwyKT4+Ml09QSxhW2wrKChEPWIrMXwwKTw8Mik+PjJdPWYsbD0wfGZ1''@;'; put 'put ''bmN0aW9uIGNfKGwsYyxmLHApe2x8PTAsY3w9MCxwfD0wO3ZhciBELFIsRyxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxxPTAscGU9MDtmb3IoRD0wfEYwKChmfD0wKTw8MiksRz04KyhSPTB8RjAoOCsoZjw8Myl8MCkpfDAsbT0wOyEoKDB8bSk+PSgwfGYpKTspYVtEKyhtPDwyKT4+Ml09LTEs''@;'; put 'put ''X1tHKyhtPDwzKT4+M109LTIxNDc0ODM2NDcsbT1tKzF8MDtfW1I+PjNdPS0yMTQ3NDgzNjQ4O2U6Zm9yKDsoMHxsKSE9KDB8Yyk7KWZvcihNPUcrKGw8PDMpfDAsYj0rX1tNPj4zXSxfW00+PjNdPS0yMTQ3NDgzNjQ3PT1iPzA6LWIsaz0wLG09LTE7Oyl7aWYoKDB8ayk+PSgwfGYpKXtsPW07''@;'; put 'put ''Y29udGludWUgZX0oQT0rX1sodz1HKyhrPDwzKXwwKT4+M10pPDAmJigwIT0ocT0rX1soMHxhW3ArKCgocGU9KDB8bCk8KDB8aykpP2s6bCk8PDIpPj4yXSkrKChwZT9sOmspPDwzKT4+M10pJkE8KGI9LShxKyArX1tNPj4zXSkpJiYoX1t3Pj4zXT1iLGFbRCsoazw8Mik+PjJdPWwsQT1iKSxt''@;'; put 'put ''PUE+K19bRysobTw8Myk+PjNdP2s6bSksaz1rKzF8MH1yZXR1cm4gRnQoUiksMHxEfShELGIsYisyfDAsbCkpLGxlPWssMHxsfShrLGYsUixELG0sRyxsKSxrPTErKGY9MHxhW2wrND4+Ml0pfDAsbT0xLHc9ZjtNPW0rMXwwLCgwfCh3PTB8YVtEKyh3PDwyKT4+Ml0pKSE9KDB8ayk7KW09TTtm''@;'; put 'put ''b3IoYj0wfEYwKE08PDQpLGFbKHc9YisobTw8NCl8MCk+PjJdPWFbcD4+Ml0sYVt3KzQ+PjJdPWFbcCs0Pj4yXSxhW3crOD4+Ml09YVtwKzg+PjJdLGFbdysxMj4+Ml09YVtwKzEyPj4yXSxsPWwrOHwwO3c9YisoKG09bSstMXwwKTw8NCl8MCwoMHwoZj0wfGFbRCsoZjw8Mik+PjJdKSkhPSgw''@;'; put 'put ''fGspOylhW3c+PjJdPWFbKHA9KDB8YVtsPj4yXSkrKGY8PDQpfDApPj4yXSxhW3crND4+Ml09YVtwKzQ+PjJdLGFbdys4Pj4yXT1hW3ArOD4+Ml0sYVt3KzEyPj4yXT1hW3ArMTI+PjJdO3JldHVybiBhW3c+PjJdPWFbYz4+Ml0sYVt3KzQ+PjJdPWFbYys0Pj4yXSxhW3crOD4+Ml09YVtjKzg+''@;'; put 'put ''PjJdLGFbdysxMj4+Ml09YVtjKzEyPj4yXSwwfG0mJlByKDE0MTgwOSwxNDE4MTYsMTQ4LDE0MTgyMiksMHxSJiZGdChSKSwwfEcmJkZ0KEcpLGFbQSs0Pj4yXT1NLGFbQT4+Ml09YixGdChEKSxsZT1xLDF9KGYsYixtLGssQSxNKSxwZT0wfGFbKHE9TSkrND4+Ml0sYVsoZ2U9bCk+PjJdPWFb''@;'; put 'put ''cT4+Ml0sYVtnZSs0Pj4yXT1wZSxsZT1HfWZ1bmN0aW9uIENrKGwsYyxmKXt2YXIgcDtwPStfWzgrKGZ8PTApPj4zXSsgK19bOCsoY3w9MCk+PjNdLF9bKGx8PTApPj4zXT0rX1tmPj4zXSsgK19bYz4+M10sX1tsKzg+PjNdPXB9ZnVuY3Rpb24gV04obCxjLGYscCxtKXtmfD0wLHB8PTAsbXw9''@;'; put 'put ''MDt2YXIgYixrLE0sRCxxLHBlLGdlLGJlLExlLFIsQT0wLHc9MCxPZT0wLFJlPTA7TGU9bGUsbGU9bGUrMTQ0fDAscT1MZSsxMDR8MCxwZT1MZSs4OHwwLFI9TGUrNzJ8MCxiZT1MZSsxMjh8MCxNPUxlKzMyfDAsRD1MZSsxMjR8MCxPZT1MZSsxNnwwLGdlPUxlLGI9TGUrMTIwfDAsQT0wfGFb''@;'; put 'put ''KHc9MTQ0KygwfGFbMTYrKGN8PTApPj4yXSl8MCk+PjJdLHc9MHxhW3crND4+Ml0sYVsoUmU9az1MZSs2NHwwKT4+Ml09QSxhW1JlKzQ+PjJdPXcsYVtPZT4+Ml09YVsoUmU9QSk+PjJdLGFbT2UrND4+Ml09YVtSZSs0Pj4yXSxhW09lKzg+PjJdPWFbUmUrOD4+Ml0sYVtPZSsxMj4+Ml09YVtS''@;'; put 'put ''ZSsxMj4+Ml0sYVtnZT4+Ml09YVsodz1BKyh3Ky0xPDw0KXwwKT4+Ml0sYVtnZSs0Pj4yXT1hW3crND4+Ml0sYVtnZSs4Pj4yXT1hW3crOD4+Ml0sYVtnZSsxMj4+Ml09YVt3KzEyPj4yXTtlOmRve2lmKG08PDI0Pj4yNClmb3IoQT0tMTExMSxtPS0xMTExLHc9MDs7KXtpZigoMHx3KT49KDB8''@;'; put 'put ''cCkpYnJlYWsgZTstMTExMT09KDB8bSkmJihhW3BlPj4yXT1hWyhtPTB8YVtmKyh3PDwyKT4+Ml0pPj4yXSxhW3BlKzQ+PjJdPWFbbSs0Pj4yXSxhW3E+PjJdPWFbT2U+PjJdLGFbcSs0Pj4yXT1hW09lKzQ+PjJdLGFbcSs4Pj4yXT1hW09lKzg+PjJdLGFbcSsxMj4+Ml09YVtPZSsxMj4+Ml0s''@;'; put 'put ''bT0obT0wPT0oMHxfNihwZSxxKSkpPy0xMTExOncpLC0xMTExPT0oMHxBKSYmKGFbcGU+PjJdPWFbKEE9MHxhW2YrKHc8PDIpPj4yXSk+PjJdLGFbcGUrND4+Ml09YVtBKzQ+PjJdLGFbcT4+Ml09YVtnZT4+Ml0sYVtxKzQ+PjJdPWFbZ2UrND4+Ml0sYVtxKzg+PjJdPWFbZ2UrOD4+Ml0sYVtx''@;'; put 'put ''KzEyPj4yXT1hW2dlKzEyPj4yXSxBPShBPTA9PSgwfF82KHBlLHEpKSk/LTExMTE6dyksdz13KzF8MH1lbHNlIEE9LTExMTEsbT0tMTExMX13aGlsZSgwKTsoZnVuY3Rpb24gYXNlKGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgcSx3PTAsYj0wLGs9MCxN''@;'; put 'put ''PTAsRD0wLFI9MCxHPTAscGU9MCxnZT0wO2ZvcihiPTAsdz0wOyEoKDB8Yik+PSgwfGMpKTspKDB8Yik9PSgwfGYpfCgwfGIpPT0oMHxwKXx8KHc9KDB8YVs0KygwfGFbbCsoYjw8Mik+PjJdKT4+Ml0pK3d8MCksYj1iKzF8MDtmb3IocT0wfFFuKHc8PDUpLGI9MCxHPTA7ISgoMHxHKT49KDB8''@;'; put 'put ''YykpOyl7ZTpkb3tpZighKCgwfEcpPT0oMHxmKXwoMHxHKT09KDB8cCkpKWZvcihSPWwrKEc8PDIpfDAsRD0wOzspe2lmKCgwfEQpPj0oMHwoTT0wfGFbNCsoaz0wfGFbUj4+Ml0pPj4yXSkpKWJyZWFrIGU7cGU9RCsxfDAsYVsoZ2U9cSsoYjw8NSl8MCk+PjJdPWFbKGs9KDB8YVtrPj4yXSkr''@;'; put 'put ''KEQ8PDQpfDApPj4yXSxhW2dlKzQ+PjJdPWFbays0Pj4yXSxhW2dlKzg+PjJdPWFbays4Pj4yXSxhW2dlKzEyPj4yXT1hW2srMTI+PjJdLGFbKGs9cSsoYjw8NSkrMTZ8MCk+PjJdPWFbKE09KDB8YVthW1I+PjJdPj4yXSkrKCgoMHxwZSk8KDB8TSk/cGU6MCk8PDQpfDApPj4yXSxhW2srND4+''@;'; put 'put ''Ml09YVtNKzQ+PjJdLGFbays4Pj4yXT1hW00rOD4+Ml0sYVtrKzEyPj4yXT1hW00rMTI+PjJdLEQ9cGUsYj1iKzF8MH19d2hpbGUoMCk7Rz1HKzF8MH1pZigoMHxiKT09KDB8dykpcmV0dXJuIGFbbT4+Ml09cSx2b2lkKGFbQT4+Ml09dyk7UHIoODk3MTksODk3MjYsNzcsODk3NDEpfSkoZixw''@;'; put 'put ''LG0sQSxiLEQpLGFbTT4+Ml09MCxhW00rND4+Ml09MCxhW00rOD4+Ml09MCxhW00rMTI+PjJdPTAsYVtNKzE2Pj4yXT0wLGFbTSsyMD4+Ml09MCxhW00rMjQ+PjJdPTAsYVtNKzI4Pj4yXT0wLHc9MHxhW2I+PjJdLFJlPTB8YVtEPj4yXSxhW3E+PjJdPWFbaz4+Ml0sYVtxKzQ+PjJdPWFbays0''@;'; put 'put ''Pj4yXSwoMHxlQSh3LFJlLHEsTSxiZSkpPDA/KE9lPTB8dGkoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6Yys0OHwwKSs0MD4+Ml0pLFJlPTB8dGkoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdKSxhW1I+PjJdPU9lLGFbUis0Pj4yXT1SZSwkcigxLDg5NjU3LFIpKToo''@;'; put 'put ''bT1jKy00OHwwLEF1KGMsMHxhWygyPT0oMyZhWyhBPWMpPj4yXXwwKT9jOm0pKzQwPj4yXSwwfGFbYmU+PjJdLDB8YVtiZSs0Pj4yXSwxNzc5MiksRnQodyksYVtwZT4+Ml09YVtPZT4+Ml0sYVtwZSs0Pj4yXT1hW09lKzQ+PjJdLGFbcGUrOD4+Ml09YVtPZSs4Pj4yXSxhW3BlKzEyPj4yXT1h''@;'; put 'put ''W09lKzEyPj4yXSxhW3E+PjJdPWFbZ2U+PjJdLGFbcSs0Pj4yXT1hW2dlKzQ+PjJdLGFbcSs4Pj4yXT1hW2dlKzg+PjJdLGFbcSsxMj4+Ml09YVtnZSsxMj4+Ml0sdGcoMCxjKSksbGU9TGV9ZnVuY3Rpb24gUEoobCxjLGYpe2N8PTAsZnw9MDt2YXIgQSxrLEQscD0wLG09MCx3PTAsYj0wLE09''@;'; put 'put ''MCxSPTAsRz0wO2ZvcihEPWxlLGxlPWxlKzMyfDAsaz1EKzEyfDAsZnVuY3Rpb24gRFgobCxjKXtsfD0wO3ZhciBmLG0sdyxwPTA7dz1sZSxsZT1sZSs0OHwwLG09dysyNHwwLDAhPSgwfChmPTB8TGkoY3w9MCw5MzExNikpKSYmMCE9KDB8TGsoZixtLDEsMCkpfHwocD0zKTtkb3tpZigzPT0o''@;'; put 'put ''MHxwKSl7aWYoMHwoYz0wfExpKGMsOTMxMTIpKSYmMHxMayhjLG0sMS4yNSwzLjIwMDAwMDA0NzY4MzcxNikpYnJlYWs7am5bbSs0Pj4yXT0zLjIwMDAwMDA0NzY4MzcxNixqblttPj4yXT0zLjIwMDAwMDA0NzY4MzcxNixmZVttKzg+PjBdPTF9fXdoaWxlKDApO2FbbD4+Ml09YVttPj4yXSxh''@;'; put 'put ''W2wrND4+Ml09YVttKzQ+PjJdLGFbbCs4Pj4yXT1hW20rOD4+Ml0sbGU9d30ocD1ELGx8PTApLGFbaz4+Ml09YVtwPj4yXSxhW2srND4+Ml09YVtwKzQ+PjJdLGFbays4Pj4yXT1hW3ArOD4+Ml0scD0wfER0KGwpO3A7KXtmb3IobT0wfHcwKGwscCk7bTspaWxlKG0pLG09MHxTMChsLG0pO3A9''@;'; put 'put ''MHx6dChsLHApfWZvcihBPTB8aXMoMTc3NTYsMHxhWzQ1ODFdKSxwPTB8RHQobCk7cDspe2ZvcihtPTB8dzAobCxwKTttOykoMHxhWzQ3MTM0XSk+MSYmMCE9KDB8YVs4Kyh3PTB8YVttKzE2Pj4yXSk+PjJdKT9pdFsoUj13KzE2OHwwKT4+MV09MSsoMHxpdFtSPj4xXSk8PDE2Pj4xNjpNPTE0''@;'; put 'put ''LDE0PT0oMHxNKSYmKE09MCwoMHwoYj0wfFlOKEEsbSkpKSE9KDB8bSkpJiYoaXRbKEc9MTY4KyhSPTB8YVtiKzE2Pj4yXSl8MCk+PjFdPTErKDB8aXRbRz4+MV0pPDwxNj4+MTYsYVsxNzIrKDB8YVttKzE2Pj4yXSk+PjJdPWFbKFI9UisxNzJ8MCk+PjJdLGFbUj4+Ml09bSksbT0wfFMwKGws''@;'; put 'put ''bSk7cD0wfHp0KGwscCl9cmV0dXJuIE5sKEEpLDB8bWlbNjMmY10obCxrLGYpP3A9MTooYVs0NzEzOF09MSxwPTApLGxlPUQsMHxwfWZ1bmN0aW9uIFlOKGwsYyl7bHw9MDt2YXIgdyxxLGY9MCxwPTAsbT0wLEE9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MDtxPWxlLGxlPWxlKzY0fDAsRz1x''@;'; put 'put ''LHc9MHxhWygzPT0oMHwocD0zJmFbKGN8PTApPj4yXSkpP2M6Yys0OHwwKSs0MD4+Ml0scD0wfGFbKDI9PSgwfHApP2M6YystNDh8MCkrNDA+PjJdO2Rve2lmKHc+Pj4wPj1wPj4+MCl7aWYoZj1jKzE2fDAsdz4+PjA+cD4+PjApe1I9cCxwPXcsaz0rX1sxNisoZj0wfGFbZj4+Ml0pPj4zXSxN''@;'; put 'put ''PStfW2YrMjQ+PjNdLEE9K19bZis1Nj4+M10sbT0rX1tmKzY0Pj4zXTticmVha31EPStfWzY0KyhSPTB8YVtmPj4yXSk+PjNdLG09K19bUisyND4+M10sKEE9K19bUisxNj4+M10pPChiPStfW1IrNTY+PjNdKT8oUj13LHA9dyxrPWIsTT1EKTpBPmI/KFI9dyxwPXcsaz1BLE09bSxBPWIsbT1E''@;'; put 'put ''KTooZj1tPkQsbTxEPyhSPXcscD13LGs9YixNPUQpOihSPXcscD13LGs9QSxNPW0sQT1mP2I6QSxtPWY/RDptKSl9ZWxzZSBSPXcsaz0rX1s1NisoZj0wfGFbYysxNj4+Ml0pPj4zXSxNPStfW2YrNjQ+PjNdLEE9K19bZisxNj4+M10sbT0rX1tmKzI0Pj4zXX13aGlsZSgwKTtyZXR1cm4gYVtH''@;'; put 'put ''Kzg+PjJdPVIsX1tHKzE2Pj4zXT1BLF9bRysyND4+M109bSxhW0crMzI+PjJdPXAsX1tHKzQwPj4zXT1rLF9bRys0OD4+M109TSxhW0crNTY+PjJdPWMsRz0wfGFbNTYrKDB8bWlbNjMmYVtsPj4yXV0obCxHLDEpKT4+Ml0sbGU9cSwwfEd9ZnVuY3Rpb24ga0QobCxjKXtyZXR1cm4gMHxQSihs''@;'; put 'put ''fD0wLDIxLGN8PTApfWZ1bmN0aW9uIEhKKGwsYyl7dmFyIG0sQSx3LGIsayxNLGYsUixwPTAsRD0wLEc9MDtNPWxlLGxlPWxlKzk2fDAsQT1NKzY0fDAsbT1NKzQ4fDAsdz1NKzgwfDAsYj1NKzE2fDAsaz1NLFI9MHxhWyhEPTE0NCsoMHxhWzE2KyhjfD0wKT4+Ml0pfDApPj4yXSxEPTB8YVtE''@;'; put 'put ''KzQ+PjJdLGFbKEc9cD1NKzMyfDApPj4yXT1SLGFbRys0Pj4yXT1ELGFbYj4+Ml09YVsoRz1SKT4+Ml0sYVtiKzQ+PjJdPWFbRys0Pj4yXSxhW2IrOD4+Ml09YVtHKzg+PjJdLGFbYisxMj4+Ml09YVtHKzEyPj4yXSxhW2s+PjJdPWFbKEQ9UisoRCstMTw8NCl8MCk+PjJdLGFbays0Pj4yXT1h''@;'; put 'put ''W0QrND4+Ml0sYVtrKzg+PjJdPWFbRCs4Pj4yXSxhW2srMTI+PjJdPWFbRCsxMj4+Ml0sYVtBPj4yXT1hW3A+PjJdLGFbQSs0Pj4yXT1hW3ArND4+Ml0sT2QoQSx3KSxmPWMrLTQ4fDAsQXUoYywwfGFbKDI9PSgzJmFbKHA9Yyk+PjJdfDApP2M6ZikrNDA+PjJdLDB8YVt3Pj4yXSwwfGFbdys0''@;'; put 'put ''Pj4yXSwxNzc5MiksYVttPj4yXT1hW2I+PjJdLGFbbSs0Pj4yXT1hW2IrND4+Ml0sYVttKzg+PjJdPWFbYis4Pj4yXSxhW20rMTI+PjJdPWFbYisxMj4+Ml0sYVtBPj4yXT1hW2s+PjJdLGFbQSs0Pj4yXT1hW2srND4+Ml0sYVtBKzg+PjJdPWFbays4Pj4yXSxhW0ErMTI+PjJdPWFbaysxMj4+''@;'; put 'put ''Ml0sdGcoMCxjKSxsZT1NfWZ1bmN0aW9uIFNEKGwsYyl7dmFyIGY7Zj0xNCZpdFsxMzYrKDB8YVsxNisobHw9MCk+PjJdKT4+MV0sKGN8PTApPDwyND4+MjQmJlVOKGwpLGY8PDE2Pj4xNiYma0QobCw2NTUzNSZmKX1mdW5jdGlvbiBVTihsKXt2YXIgZixjPTAscD0wLG09MDtmb3IoZj0wfGZ1''@;'; put 'put ''bmN0aW9uIFFOKGwpe2x8PTA7dmFyIGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTA7ZTpkb3tpZigoMHxhW2wrNjA+PjJdKT09KDB8bCkmJihmPWwrMTZ8MCxwPTB8YVtmPj4yXSwwIT0oMHxhWzg0KygwfGFbcCs4Pj4yXSk+PjJdKSkpezA9PStfW3ArMTY+PjNdJiYwPT0rX1twKzI0''@;'; put 'put ''Pj4zXT9jPTA6KE5KKGwpLGM9MSxwPTB8YVtmPj4yXSksKGI9MD09KDEmYVtwKzExNj4+Ml18MCkpfHwodz0rX1soaz1wKzMyfDApPj4zXSxfW2s+PjNdPStfWyhmPXArNDB8MCk+PjNdLF9bZj4+M109dyksZj0wfGFbcCs4Pj4yXTt0OmRve3N3aXRjaCgwfGFbZis4ND4+Ml0pe2Nhc2UgMjpp''@;'; put 'put ''ZigobT0rX1tmKzY0Pj4zXSk8PTApYnJlYWsgZTtpZigoQT1tLytfW3ArMzI+PjNdKTwxfChtPStfW2YrNzI+PjNdLytfW3ArNDA+PjNdKTwxKXtpZihBPG0pe3c9MSxtLz1BO2JyZWFrIHR9dz1BL20sbT0xO2JyZWFrIHR9dz1BO2JyZWFrO2Nhc2UgNTppZigobT0rX1tmKzY0Pj4zXSk8PTB8''@;'; put 'put ''fCEoKEE9bS8rX1twKzMyPj4zXSk+MSYobT0rX1tmKzcyPj4zXS8rX1twKzQwPj4zXSk+MSkpYnJlYWsgZTt3PW09QTxtP0E6bTticmVhaztjYXNlIDE6aWYoKG09K19bcCs0MD4+M10vK19bcCszMj4+M10pPChBPStfW2YrMTY+PjNdKSl7dz0xLG09QS9tO2JyZWFrIHR9dz1tL0EsbT0xO2Jy''@;'; put 'put ''ZWFrIHQ7ZGVmYXVsdDpicmVhayBlfX13aGlsZSgwKTtBPWI/bTp3LG09Yj93Om07dDpkb3tpZigoMHxhWzQ3MTM0XSk+MSlmb3IoZj0wfER0KGwpOzspe2lmKCFmKWJyZWFrIHQ7Zm9yKGM9MHx3MChsLGYpO2M7KTB8YVs4KygwfGFbYysxNj4+Ml0pPj4yXSYmVkooYyxtLEEpLGM9MHxTMChs''@;'; put 'put ''LGMpO2Y9MHx6dChsLGYpfX13aGlsZSgwKTtmb3IoYz0wfER0KGwpO2M7KV9bKGs9MHxhWzEzMisoMHxhW2MrMTY+PjJdKT4+Ml0pPj4zXT0rX1trPj4zXSptLF9bKGs9ays4fDApPj4zXT0rX1trPj4zXSpBLGM9MHx6dChsLGMpO0pOKGwsbSxBKSxjPTF9ZWxzZSBjPTB9d2hpbGUoMCk7cmV0''@;'; put 'put ''dXJuIDB8Y30obHw9MCksYz0wfER0KGwpO2M7KV9bMTYrKHA9MHxhW2MrMTY+PjJdKT4+M109NzIqK19bKG09MHxhW3ArMTMyPj4yXSk+PjNdLF9bcCsyND4+M109NzIqK19bbSs4Pj4zXSxjPTB8enQobCxjKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIE5KKGwpe3ZhciBwLG0sQSx3LGIsayxNLGM9''@;'; put 'put ''MCxmPTAsRD0wO2ZvcihNPWxlLGxlPWxlKzMyfDAsYj1NKzE2fDAsYVsoaz1NKT4+Ml09YVsoYz0xNisoMHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4yXSxhW2srND4+Ml09YVtjKzQ+PjJdLGFbays4Pj4yXT1hW2MrOD4+Ml0sYVtrKzEyPj4yXT1hW2MrMTI+PjJdLG09LjAxMzg4ODg4ODg4ODg4''@;'; put 'put ''ODg4OCoocD0rX1trPj4zXSksdz0uMDEzODg4ODg4ODg4ODg4ODg4KihBPStfW2srOD4+M10pLGM9MHxEdChsKTtjOylfWyhEPTB8YVsxMzIrKGY9MHxhW2MrMTY+PjJdKT4+Ml0pPj4zXT0rX1tEPj4zXS1tLF9bKEQ9RCs4fDApPj4zXT0rX1tEPj4zXS13LDB8KGY9MHxhW2YrMTA4Pj4yXSkm''@;'; put 'put ''JjB8ZmVbZis4MT4+MF0mJihfWyhEPWYrNTZ8MCk+PjNdPStfW0Q+PjNdLXAsX1soRD1mKzY0fDApPj4zXT0rX1tEPj4zXS1BKSxjPTB8enQobCxjKTtmb3IoZj0wfER0KGwpO2Y7KXtmb3IoYz0wfHcwKGwsZik7YzspMHxhWzgrKDB8YVtjKzE2Pj4yXSk+PjJdJiYoYVtiPj4yXT1hW2s+PjJd''@;'; put 'put ''LGFbYis0Pj4yXT1hW2srND4+Ml0sYVtiKzg+PjJdPWFbays4Pj4yXSxhW2IrMTI+PjJdPWFbaysxMj4+Ml0sWE4oYyxiKSksYz0wfFMwKGwsYyk7Zj0wfHp0KGwsZil9YVtiPj4yXT1hW2s+PjJdLGFbYis0Pj4yXT1hW2srND4+Ml0sYVtiKzg+PjJdPWFbays4Pj4yXSxhW2IrMTI+PjJdPWFb''@;'; put 'put ''aysxMj4+Ml0sakoobCxiKSxsZT1NfWZ1bmN0aW9uIFZKKGwsYyxmKXt2YXIgdyxiLHEscGUscD0wLG09MCxBPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxnZT0wLGJlPTAsT2U9MDtmb3IocT0oZ2U9NzIqKChjPStjKS0xKSkqK19bKEE9MHxhWzEzMisoMHxhWzE2KygwfGFbKDI9PSgwfChHPTMm''@;'; put 'put ''YVsobHw9MCk+PjJdKSk/bDpsKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKT4+M10scGU9KGJlPTcyKigoZj0rZiktMSkpKitfW0ErOD4+M10sZ2UqPStfWyhHPTB8YVsxMzIrKDB8YVsxNisoMHxhWygzPT0oMHxHKT9sOmwrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSk+PjNdLGJlKj0rX1tHKzg+''@;'; put 'put ''PjNdLGI9KHc9MHxhWzQrKEE9MHxhWzgrKEc9MHxhW2wrMTY+PjJdKT4+Ml0pPj4yXSktMXwwLGw9MCxBPTB8YVtBPj4yXTshKCgwfGwpPj0oMHx3KSk7KXtmb3IoTT0oaz0wfGFbQSs0Pj4yXSktMXwwLEQ9KDB8bCk9PSgwfGIpLHA9MCxtPTB8YVtBPj4yXTshKCgwfHApPj0oMHxrKSk7KXtk''@;'; put 'put ''b3tpZihwfGwpe2lmKFI9K19bbT4+M10sKDB8cCk9PSgwfE0pJkQpe19bbT4+M109UitxLF9bKE9lPW0rOHwwKT4+M109K19bT2U+PjNdK3BlO2JyZWFrfV9bbT4+M109UipjLF9bKE9lPW0rOHwwKT4+M109K19bT2U+PjNdKmY7YnJlYWt9X1ttPj4zXT0rX1ttPj4zXStnZSxfWyhPZT1tKzh8''@;'; put 'put ''MCk+PjNdPStfW09lPj4zXStiZX13aGlsZSgwKTtwPXArMXwwLG09bSsxNnwwfTB8YVtBKzg+PjJdJiYoX1soT2U9QSsxNnwwKT4+M109K19bT2U+PjNdK2dlLF9bKE9lPUErMjR8MCk+PjNdPStfW09lPj4zXStiZSksMHxhW0ErMTI+PjJdJiYoX1soT2U9QSszMnwwKT4+M109K19bT2U+PjNd''@;'; put 'put ''K3EsX1soT2U9QSs0MHwwKT4+M109K19bT2U+PjNdK3BlKSxsPWwrMXwwLEE9QSs0OHwwfTB8KGw9MHxhW0crOTY+PjJdKSYmMHxmZVtsKzgxPj4wXSYmKF9bKE9lPWwrNTZ8MCk+PjNdPStfW09lPj4zXSpjLF9bKE9lPWwrNjR8MCk+PjNdPStfW09lPj4zXSpmKSwwfChsPTB8YVtHKzEwMD4+''@;'; put 'put ''Ml0pJiYwfGZlW2wrODE+PjBdJiYoX1soT2U9bCs1NnwwKT4+M109K19bT2U+PjNdK3EsX1soT2U9bCs2NHwwKT4+M109K19bT2U+PjNdK3BlKSwwfChsPTB8YVtHKzEwND4+Ml0pJiYwfGZlW2wrODE+PjBdJiYoX1soT2U9bCs1NnwwKT4+M109K19bT2U+PjNdK2dlLF9bKE9lPWwrNjR8MCk+''@;'; put 'put ''PjNdPStfW09lPj4zXStiZSl9ZnVuY3Rpb24gSk4obCxjLGYpe2Y9K2Y7dmFyIG0sQSxwPTA7Zm9yKF9bKGw9MzIrKG09MHxhWyhBPTE2KyhsfD0wKXwwKT4+Ml0pfDApPj4zXT0rX1tsPj4zXSooYz0rYyksX1sobD1tKzQwfDApPj4zXT0rX1tsPj4zXSpmLF9bKGw9bSsxNnwwKT4+M109K19b''@;'; put 'put ''bD4+M10qYyxfWyhsPW0rMjR8MCk+PjNdPStfW2w+PjNdKmYsMCE9KDB8KGw9MHxhW20rMTI+PjJdKSkmJjAhPSgwfGZlW2wrODE+PjBdKT8oX1socD1sKzU2fDApPj4zXT0rX1twPj4zXSpjLF9bKHA9bCs2NHwwKT4+M109K19bcD4+M10qZixwPTEsbD1tKToocD0xLGw9bSk7ISgoMHxwKT4o''@;'; put 'put ''MHxhW2wrMTgwPj4yXSkpOylKTigwfGFbKDB8YVtsKzE4ND4+Ml0pKyhwPDwyKT4+Ml0sYyxmKSxwPXArMXwwLGw9MHxhW0E+PjJdfWZ1bmN0aW9uIFhOKGwsYyl7dmFyIHcsYixrLGY9MCxwPTAsbT0wLEE9MCxNPTA7Zm9yKHc9MHxhWzQrKGw9MHxhWzgrKGI9MHxhWzE2KyhsfD0wKT4+Ml0p''@;'; put 'put ''Pj4yXSk+PjJdLGs9OCsoY3w9MCl8MCxsPTB8YVtsPj4yXSxtPTA7ISgoMHxtKT49KDB8dykpOyl7Zm9yKEE9MHxhW2wrND4+Ml0sZj0wfGFbbD4+Ml0scD0wOyEoKDB8cCk+PSgwfEEpKTspX1tmPj4zXT0rX1tmPj4zXS0rX1tjPj4zXSxfWyhNPWYrOHwwKT4+M109K19bTT4+M10tK19baz4+''@;'; put 'put ''M10sZj1mKzE2fDAscD1wKzF8MDswfGFbbCs4Pj4yXSYmKF9bKE09bCsxNnwwKT4+M109K19bTT4+M10tK19bYz4+M10sX1soTT1sKzI0fDApPj4zXT0rX1tNPj4zXS0rX1trPj4zXSksMHxhW2wrMTI+PjJdJiYoX1soTT1sKzMyfDApPj4zXT0rX1tNPj4zXS0rX1tjPj4zXSxfWyhNPWwrNDB8''@;'; put 'put ''MCk+PjNdPStfW00+PjNdLStfW2s+PjNdKSxsPWwrNDh8MCxtPW0rMXwwfTB8KGw9MHxhW2IrOTY+PjJdKSYmMHxmZVtsKzgxPj4wXSYmKF9bKE09bCs1NnwwKT4+M109K19bTT4+M10tK19bYz4+M10sX1soTT1sKzY0fDApPj4zXT0rX1tNPj4zXS0rX1trPj4zXSksMHwobD0wfGFbYisxMDg+''@;'; put 'put ''PjJdKSYmMHxmZVtsKzgxPj4wXSYmKF9bKE09bCs1NnwwKT4+M109K19bTT4+M10tK19bYz4+M10sX1soTT1sKzY0fDApPj4zXT0rX1tNPj4zXS0rX1trPj4zXSksMHwobD0wfGFbYisxMDA+PjJdKSYmMHxmZVtsKzgxPj4wXSYmKF9bKE09bCs1NnwwKT4+M109K19bTT4+M10tK19bYz4+M10s''@;'; put 'put ''X1soTT1sKzY0fDApPj4zXT0rX1tNPj4zXS0rX1trPj4zXSksMHwobD0wfGFbYisxMDQ+PjJdKSYmMHxmZVtsKzgxPj4wXSYmKF9bKE09bCs1NnwwKT4+M109K19bTT4+M10tK19bYz4+M10sX1soTT1sKzY0fDApPj4zXT0rX1tNPj4zXS0rX1trPj4zXSl9ZnVuY3Rpb24gakoobCxjKXt2YXIg''@;'; put 'put ''cCxtLEEsdyxiLGY9MCxrPTA7Zm9yKGI9bGUsbGU9bGUrMTZ8MCx3PWIsX1soZj0zMisobD0wfGFbKEE9MTYrKGx8PTApfDApPj4yXSl8MCk+PjNdPStfW2Y+PjNdLShtPStfWyhjfD0wKT4+M10pLF9bKGY9bCs0MHwwKT4+M109K19bZj4+M10tKHA9K19bYys4Pj4zXSksX1soZj1sKzE2fDAp''@;'; put 'put ''Pj4zXT0rX1tmPj4zXS1tLF9bKGY9bCsyNHwwKT4+M109K19bZj4+M10tcCwwIT0oMHwoZj0wfGFbbCsxMj4+Ml0pKSYmMCE9KDB8ZmVbZis4MT4+MF0pJiYoX1soaz1mKzU2fDApPj4zXT0rX1trPj4zXS1tLF9bKGY9Zis2NHwwKT4+M109K19bZj4+M10tcCksZj0xOyEoKDB8Zik+KDB8YVts''@;'; put 'put ''KzE4MD4+Ml0pKTspaz0wfGFbKDB8YVtsKzE4ND4+Ml0pKyhmPDwyKT4+Ml0sYVt3Pj4yXT1hW2M+PjJdLGFbdys0Pj4yXT1hW2MrND4+Ml0sYVt3Kzg+PjJdPWFbYys4Pj4yXSxhW3crMTI+PjJdPWFbYysxMj4+Ml0sakooayx3KSxmPWYrMXwwLGw9MHxhW0E+PjJdO2xlPWJ9ZnVuY3Rpb24g''@;'; put 'put ''SzYobCl7dmFyIGYscCxtLEEsdyxjPTAsYj0wO2Zvcih3PWxlLGxlPWxlKzE2fDAsZj13LGlnKGx8PTApLG09LjAxMzg4ODg4ODg4ODg4ODg4OCorX1sxNisoYz0wfGFbKHA9bCsxNnwwKT4+Ml0pPj4zXSxBPS4wMTM4ODg4ODg4ODg4ODg4ODgqK19bYysyND4+M10sYz0wfER0KGwpO2M7KV9b''@;'; put 'put ''KGI9MHxhWzEzMisoMHxhW2MrMTY+PjJdKT4+Ml0pPj4zXT0rX1tiPj4zXS1tLF9bKGI9Yis4fDApPj4zXT0rX1tiPj4zXS1BLGM9MHx6dChsLGMpO2FbZj4+Ml09YVsoYj0xNisoMHxhW3A+PjJdKXwwKT4+Ml0sYVtmKzQ+PjJdPWFbYis0Pj4yXSxhW2YrOD4+Ml09YVtiKzg+PjJdLGFbZisx''@;'; put 'put ''Mj4+Ml09YVtiKzEyPj4yXSxaSihsLGYpLFNEKGwsMSksbGU9d31mdW5jdGlvbiBaSihsLGMpe2N8PTA7dmFyIGYsQSx3LGIscD0wLG09MDtmb3IoQT1sZSxsZT1sZSsxNnwwLG09QSxmPTE2KyhsfD0wKXwwLGw9MTshKCgwfGwpPigwfGFbMTgwKyhwPTB8YVtmPj4yXSk+PjJdKSk7KXA9MHxh''@;'; put 'put ''WygwfGFbcCsxODQ+PjJdKSsobDw8Mik+PjJdLGFbbT4+Ml09YVtjPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLFpKKHAsbSksbD1sKzF8MDtfWyhtPXArMzJ8MCk+PjNdPStfW20+PjNdLShiPStfW2M+PjNdKSx3PStf''@;'; put 'put ''W2MrOD4+M10sX1soYz1wKzQwfDApPj4zXT0rX1tjPj4zXS13LF9bKGM9cCsxNnwwKT4+M109K19bYz4+M10tYixfWyhjPXArMjR8MCk+PjNdPStfW2M+PjNdLXcsbGU9QX1mdW5jdGlvbiBLTihsLGMsZixwLG0pe2x8PTAsY3w9MCxtfD0wO3ZhciBHLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0w''@;'; put 'put ''LFI9MCxxPTA7Zm9yKEc9KDB8KGZ8PTApKT4yLEQ9MCxSPTAsdz0wfGFbNCsocHw9MCk+PjJdLGw9MHxhW3A+PjJdOzspe2lmKCgwfFIpPj0oMHxjKSl7bD0wO2JyZWFrfWs9MHxmZVsxMTkrKEE9MHxhWzE2KygwfGFbbSsoUjw8Mik+PjJdKT4+Ml0pPj4wXTtlOmRve2lmKGs8PDI0Pj4yNCl7''@;'; put 'put ''TT1sKzh8MCxfW2w+PjNdPStfWyhiPTB8YVtBKzEzMj4+Ml0pPj4zXSxBPXcrOHwwLF9bdz4+M109K19bYis4Pj4zXTt0OmRve2lmKEcpZm9yKHc9MixsPWIrMTZ8MDs7KXtpZigoMHx3KT09KDB8ZikpYnJlYWsgdDtfWygwfGFbcCsodzw8Mik+PjJdKSsoUjw8Myk+PjNdPStfW2w+PjNdLHc9''@;'; put 'put ''dysxfDAsbD1sKzh8MH19d2hpbGUoMCk7dz0oMjU1JmspPjE/MTpELGw9TX1lbHNlIGlmKGI9bCs4fDAsX1tsPj4zXT0rcWMoKSxBPXcrOHwwLF9bdz4+M109K3FjKCksRylmb3IobD0yOzspe2lmKCgwfGwpPT0oMHxmKSl7dz1ELGw9YjticmVhayBlfXE9K3FjKCksX1soMHxhW3ArKGw8PDIp''@;'; put 'put ''Pj4yXSkrKFI8PDMpPj4zXT1xLGw9bCsxfDB9ZWxzZSB3PUQsbD1ifXdoaWxlKDApO0Q9dyxSPVIrMXwwLHc9QX1mb3IoOyEoKDB8bCk+PSgwfGYpKTspYTgoYywwfGFbcCsobDw8Mik+PjJdKSxsPWwrMXwwO3JldHVybiAwfER9ZnVuY3Rpb24gSXkobCxjKXtsfD0wO3ZhciBELFIsZj0wLHA9''@;'; put 'put ''MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxHPTA7Zj0wfHZyKCgoMHxBcigxKyhjfD0wKXwwLGMpKS8yfDApPDwyKSxEPTB8Y2coYyxjLDApLFI9MHxjZyhjLGMsMCk7ZTpkb3tpZigwfGFbbCs4Pj4yXSlmb3IocD0wOzspe2lmKCgwfHApPj0oMHxjKSlicmVhayBlO2ZvcihBPTB8YVtsKygy''@;'; put 'put ''MCpwfDApPj4yXSx3PWwrKDIwKnB8MCkrNHwwLGI9bCsoMjAqcHwwKSs4fDAsTT1EKyhwPDwyKXwwLG09MTshKCgwfG0pPj0oMHxBKSk7KV9bKDB8YVtEKygoRz0wfGFbKDB8YVt3Pj4yXSkrKG08PDIpPj4yXSk8PDIpPj4yXSkrKHA8PDMpPj4zXT1rPS0xLytqblsoMHxhW2I+PjJdKSsobTw8''@;'; put 'put ''Mik+PjJdLF9bKDB8YVtNPj4yXSkrKEc8PDMpPj4zXT1rLG09bSsxfDA7cD1wKzF8MH1lbHNlIGZvcihwPTA7Oyl7aWYoKDB8cCk+PSgwfGMpKWJyZWFrIGU7Zm9yKEE9MHxhW2wrKDIwKnB8MCk+PjJdLHc9bCsoMjAqcHwwKSs0fDAsYj1EKyhwPDwyKXwwLG09MTshKCgwfG0pPj0oMHxBKSk7''@;'; put 'put ''KV9bKDB8YVtEKygoTT0wfGFbKDB8YVt3Pj4yXSkrKG08PDIpPj4yXSk8PDIpPj4yXSkrKHA8PDMpPj4zXT0tMSxfWygwfGFbYj4+Ml0pKyhNPDwzKT4+M109LTEsbT1tKzF8MDtwPXArMXwwfX13aGlsZSgwKTtlOmRve2lmKDB8a1YoYyxELFIpKWZvcihtPTAsdz0wLE09Yzs7KXtpZigoMHx3''@;'; put 'put ''KT49KDB8YykpYnJlYWsgZTtmb3IoYj1SKyh3PDwyKXwwLHA9dyxBPW07KDB8cCkhPSgwfGMpOylrPSgwfHcpPT0oMHxwKT8wOitfWygwfGFbUisocDw8Mik+PjJdKSsocDw8Myk+PjNdKyArX1soRz0wfGFbYj4+Ml0pKyh3PDwzKT4+M10rLTIqK19bRysocDw8Myk+PjNdLGpuW2YrKEE8PDIp''@;'; put 'put ''Pj4yXT1rLHA9cCsxfDAsQT1BKzF8MDttPW0rTXwwLHc9dysxfDAsTT1NKy0xfDB9ZWxzZSBGdChmKSxmPTB9d2hpbGUoMCk7cmV0dXJuIEI3KEQpLEI3KFIpLDB8Zn1mdW5jdGlvbiAkNihsLGMpe2N8PTA7dmFyIHEsZj0wLHA9MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAscGU9MDtp''@;'; put 'put ''ZihxPWxlLGxlPWxlKzE2fDAsMHxhWzgrKGx8PTApPj4yXSlmb3IoZj0wfGtrKGwsYykscD0wLFI9MDshKCgwfFIpPj0oMHxjKSk7KXtmb3IocD1wK1J8MCxEPTB8YVtsKygyMCpSfDApPj4yXSxiPWwrKDIwKlJ8MCkrNHwwLGs9KDB8QXIoUixjKSktcHwwLE09bCsoMjAqUnwwKSs4fDAsdz0x''@;'; put 'put ''OyEoKDB8dyk+PSgwfEQpKTspKDB8KEE9MHxhWygwfGFbYj4+Ml0pKyh3PDwyKT4+Ml0pKT49KDB8UikmJihlbygrKCtqblsoQT1mKyhrK0E8PDIpfDApPj4yXS0ocGU9K2puWygwfGFbTT4+Ml0pKyh3PDwyKT4+Ml0pKSksam5bQT4+Ml09cGUpLHc9dysxfDA7Uj1SKzF8MH1lbHNlIGY9MDty''@;'; put 'put ''ZXR1cm4gbGU9cSwwfGZ9ZnVuY3Rpb24ga2sobCxjKXtsfD0wO3ZhciB3LGIsayxELGY9MCxwPTAsbT0wLEE9MCxNPTA7Zm9yKEQ9bGUsbGU9bGUrMTZ8MCx3PUQsYj0wfHZyKCgoMHxBcigxKyhjfD0wKXwwLGMpKS8yfDApPDwyKSxrPTB8dnIoYzw8MiksT3kodyxjKSxmPTAsbT0wLE09Yzsh''@;'; put 'put ''KCgwfGYpPj0oMHxjKSk7KXtmb3IoVkQoZixsLGMsaykscD1mLEE9bTsoMHxwKSE9KDB8Yyk7KWFbYisoQTw8Mik+PjJdPWFbaysocDw8Mik+PjJdLHA9cCsxfDAsQT1BKzF8MDtmPWYrMXwwLG09bStNfDAsTT1NKy0xfDB9cmV0dXJuIEZ0KGspLEJEKHcpLGxlPUQsMHxifWZ1bmN0aW9uIE1E''@;'; put 'put ''KGwsYyl7bHw9MDt2YXIgdyxiLGssRCxmPTAscD0wLG09MCxBPTAsTT0wO2ZvcihEPWxlLGxlPWxlKzE2fDAsdz1ELGI9MHx2cigoKDB8QXIoMSsoY3w9MCl8MCxjKSkvMnwwKTw8Miksaz0wfHZyKGM8PDIpLE95KHcsYyksZj0wLG09MCxNPWM7ISgoMHxmKT49KDB8YykpOyl7Zm9yKHI4KGYs''@;'; put 'put ''bCxjLGssdykscD1mLEE9bTsoMHxwKSE9KDB8Yyk7KWpuW2IrKEE8PDIpPj4yXT0rKDB8YVtrKyhwPDwyKT4+Ml0pLHA9cCsxfDAsQT1BKzF8MDtmPWYrMXwwLG09bStNfDAsTT1NKy0xfDB9cmV0dXJuIEZ0KGspLEJEKHcpLGxlPUQsMHxifWZ1bmN0aW9uIHpKKGwsYyl7Y3w9MDt2YXIgcGUs''@;'; put 'put ''Z2UsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAsYmU9MDtmb3IoZj0wfGFbKGdlPTgrKGx8PTApfDApPj4yXSxwPTAsbT0wOyEoKDB8bSk+PSgwfGMpKTspcD0oMHxhW2wrKDIwKm18MCk+PjJdKStwfDAsbT1tKzF8MDtmb3IobT0wfHZyKHA8PDIpLHBl''@;'; put 'put ''PTB8dnIoYzw8MikscD0wOyEoKDB8cCk+PSgwfGMpKTspYVtwZSsocDw8Mik+PjJdPTAscD1wKzF8MDtpZigwfGFbZ2U+PjJdKXtmb3IoYj0wOyEoKDB8Yik+PSgwfGMpKTspe2ZvcihOayhsLGIscGUpLFI9bCsoMjAqYnwwKSs0fDAsRz0oRD0wfGFbKGs9bCsoMjAqYnwwKXwwKT4+Ml0pLTJ8''@;'; put 'put ''MCxxPWwrKDIwKmJ8MCkrOHwwLHc9MTshKCgwfHcpPj0oMHxEKSk7KWJlPSsoKEE9RysoMHxhW2wrKDIwKihwPTB8YVsoMHxhW1I+PjJdKSsodzw8Mik+PjJdKXwwKT4+Ml0pfDApLSgoMHxIayhsLGIscCxwZSkpPDwxKXwwKSwoTT0ram5bKDB8YVtxPj4yXSkrKHc8PDIpPj4yXSk8YmUmJihN''@;'; put 'put ''PSsoQS0oKDB8SGsobCxiLHAscGUpKTw8MSl8MCkpLGpuW20rKHc8PDIpPj4yXT1NLHc9dysxfDA7UVgobCxiLHBlKSxhW3E+PjJdPW0sbT1tKyhhW2s+PjJdPDwyKXwwLGI9YisxfDB9bT0wfGtrKGwsYyl9ZWxzZXtmb3IoQT0wOyEoKDB8QSk+PSgwfGMpKTspe2ZvcihhW2wrKDIwKkF8MCkr''@;'; put 'put ''OD4+Ml09bSxOayhsLEEscGUpLGs9bCsoMjAqQXwwKSs0fDAsTT0rKChiPTB8YVsodz1sKygyMCpBfDApfDApPj4yXSktMXwwKSxwPTE7ISgoMHxwKT49KDB8YikpOylqblttKyhwPDwyKT4+Ml09KGJlPSsoKDB8YVtsKygyMCoocT0wfGFbKDB8YVtrPj4yXSkrKHA8PDIpPj4yXSl8MCk+PjJd''@;'; put 'put ''KS0xfDApK00pLSsoKDB8SGsobCxBLHEscGUpKTw8MXwwKSxwPXArMXwwO1FYKGwsQSxwZSksbT1tKyhhW3c+PjJdPDwyKXwwLEE9QSsxfDB9bT0wfE1EKGwsYyl9RnQocGUpLEZ0KDB8YVtnZT4+Ml0pLGFbZ2U+PjJdPTA7ZTpkb3tpZigwfGYpZm9yKHA9MDs7KXtpZigoMHxwKT49KDB8Yykp''@;'; put 'put ''YnJlYWsgZTthW2wrKDIwKnB8MCkrOD4+Ml09ZixmPWYrKGFbbCsoMjAqcHwwKT4+Ml08PDIpfDAscD1wKzF8MH19d2hpbGUoMCk7cmV0dXJuIDB8bX1mdW5jdGlvbiAkTihsLGMsZixwLG0sQSx3LGIsayl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTAsYnw9MCxrfD0wO3ZhciBFdCxa''@;'; put 'put ''dCxidCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTAsV2U9MCxhdD0wLFN0PTAsa3Q9MCxzdD0wLGFuPTAsU249MDtidD1sZSxsZT1sZSs4MHwwLFp0PWJ0KzQ4fDAsVmU9YnQrNDB8MCxnZT1idCszMnwwLHBlPWJ0''@;'; put 'put ''KzI0fDAscT1idCsxNnwwLEQ9YnQrOHwwLE09YnQsUj00Jih3fD0wKSxFdD0zJnc7ZTpkb3tpZigoMHxrKTwwKWY9MDtlbHNle3c9Mj09KDB8Yik7dDpkb3tpZih3KWY9MHx6SihsLGMpLE9lPTE0O2Vsc2V7c3dpdGNoKDB8Yil7Y2FzZSAxOmlmKDB8KGY9MHxJeShsLGMpKSl7c3Q9ZjticmVh''@;'; put 'put ''ayB0fSRyKDAsOTMzMTUsTSksJHIoMyw5MzM2NCxEKSxPZT0xNTticmVhayB0O2Nhc2UgMzpicmVhaztkZWZhdWx0Ok9lPTE1O2JyZWFrIHR9Zj0wfCQ2KGwsYyksT2U9MTR9fXdoaWxlKDApOzE0PT0oMHxPZSkmJihmP3N0PWY6T2U9MTUpO2Rve2lmKDE1PT0oMHxPZSkpe2lmKDB8YVtsKzg+''@;'; put 'put ''PjJdKXtzdD0wfGtrKGwsYyk7YnJlYWt9c3Q9MHxNRChsLGMpO2JyZWFrfX13aGlsZSgwKTt0OmRve2lmKCgwfGMpPjEmMCE9KDB8UikpaWYoKDB8RUQobCxjLHAsQSxSLEV0LDEmdykpPDApZ2U9MCxwZT0wLGY9LTEsbD0wLHE9MCxSPTAsRD0wLE09MCxiPTAsdz0wO2Vsc2UgZm9yKHc9MDs7''@;'; put 'put ''KXtpZigoMHx3KT49KDB8QSkpe1JlPTAsT2U9MzU7YnJlYWsgdH1mb3IoYj1wKyh3PDwyKXwwLEc9MSxmPTA7KDB8ZikhPSgwfGMpOylHPShMZT0rZW8oKyArX1soMHxhW2I+PjJdKSsoZjw8Myk+PjNdKSk+Rz9MZTpHLGY9ZisxfDA7Zm9yKEc9MS9HLGY9MDs7KXtpZigoMHxmKT09KDB8Yykp''@;'; put 'put ''e2Y9MDticmVha31fWyhrdD0oMHxhW2I+PjJdKSsoZjw8Myl8MCk+PjNdPStfW2t0Pj4zXSpHLGY9ZisxfDB9Zm9yKDsoMHxmKSE9KDB8Yyk7KUxlPTFlLTYqKCtxYygpLS41KSxfWyhrdD0oMHxhW2I+PjJdKSsoZjw8Myl8MCk+PjNdPStfW2t0Pj4zXStMZSxmPWYrMXwwO2E4KGMsMHxhW2I+''@;'; put 'put ''PjJdKSx3PXcrMXwwfWVsc2UgUmU9MHxLTigwLGMsQSxwLG0pLE9lPTM1fXdoaWxlKDApO3Q6ZG97aWYoMzU9PSgwfE9lKSl7aWYoMT09KDB8Yyl8MD09KDB8aykpe2Y9MDticmVhayBlfWZvcihrdD0wfHZyKHE9QTw8MiksU3Q9MHx2cihsPTB8QXIocGU9Yzw8MixBKSksZj0wOyEoKDB8Zik+''@;'; put 'put ''PSgwfEEpKTspe2ZvcihiPVN0KygoMHxBcihmLGMpKTw8Mil8MCxhW2t0KyhmPDwyKT4+Ml09YixNPXArKGY8PDIpfDAsdz0wOyEoKDB8dyk+PSgwfGMpKTspam5bYisodzw8Mik+PjJdPStfWygwfGFbTT4+Ml0pKyh3PDwzKT4+M10sdz13KzF8MDtmPWYrMXwwfW46ZG97aWYoRXQpRz0uNSor''@;'; put 'put ''KDB8YykqKyhjKy0xfDApO2Vsc2UgZm9yKEQ9YystMXwwLGY9MCxHPTAsTT0wOzspe2lmKCgwfE0pPj0oMHxEKSlicmVhayBuO2ZvcihSPWMtTXwwLGI9Zix3PTE7Zj1iKzF8MCwhKCgwfHcpPj0oMHxSKSk7KWI9ZixHPStqbltzdCsoZjw8Mik+PjJdK0csdz13KzF8MDtNPU0rMXwwfX13aGls''@;'; put 'put ''ZSgwKTtmb3IocWU9KDB8QXIoYysxfDAsYykpLzJ8MCwocnQ9Mj09KDB8RXQpKSYmamsocWUsc3QpLGNLKHFlLHN0KSx1MigwfChiPTB8dnIoV2U9Yzw8MykpLDAsMHxXZSksYXQ9YystMXwwLGY9MCxNPTA7Oyl7aWYoKDB8TSk+PSgwfGF0KSl7Zj1jLHc9MCxNPTA7YnJlYWt9Zm9yKEQ9Yy1N''@;'; put 'put ''fDAsYmU9MCx3PTE7Zj1mKzF8MCwhKCgwfHcpPj0oMHxEKSk7KV9bKEhlPWIrKHcrTTw8Myl8MCk+PjNdPStfW0hlPj4zXS0oTGU9K2puW3N0KyhmPDwyKT4+Ml0pLGJlKz1MZSx3PXcrMXwwO19bKEhlPWIrKE08PDMpfDApPj4zXT0rX1tIZT4+M10tYmUsTT1NKzF8MH1mb3IoOyEoKDB8dyk+''@;'; put 'put ''PSgwfGMpKTspam5bc3QrKE08PDIpPj4yXT0rX1tiKyh3PDwzKT4+M10sSGU9ZitNfDAsZj1mKy0xfDAsdz13KzF8MCxNPUhlO2ZvcihIZT0wfHZyKHEpLGFbSGU+PjJdPTB8dnIobCksZj0xOyEoKDB8Zik+PSgwfEEpKTspYVtIZSsoZjw8Mik+PjJdPSgwfGFbSGU+PjJdKSsoKDB8QXIoZixj''@;'; put 'put ''KSk8PDIpLGY9ZisxfDA7Zm9yKEQ9MHx2cihwZSksTT0wfHZyKHBlKSx3PTB8dnIocWU8PDIpLE9lPTA9PSgwfFJlKSxSZT0wfGFbMTU3MTJdLGY9MCxSPTAsTGU9MTc5NzY5MzEzNDg2MjMxNTdlMjkyO1I8PDI0Pj4yND09MCYoMHxmKTwoMHxrKTspe2Zvcih1MigwfGIsMCwwfFdlKSxydD8o''@;'; put 'put ''V1YocWUsc3QsdyksZ2U9MCxsPTApOihnZT0wLGw9MCk7Oyl7aWYoKDB8Z2UpPj0oMHxhdCkpe1I9YyxxPTAsbD0wO2JyZWFrfWZvcihaeShwZT1jLWdlLTF8MCwwLE0pLFI9MDshKCgwfFIpPj0oMHxBKSk7KVp5KHBlLCtqblsoMHxhWyhWZT1rdCsoUjw8Mil8MCk+PjJdKSsoZ2U8PDIpPj4y''@;'; put 'put ''XSxEKSxLRChwZSxELC0xLCgwfGFbVmU+PjJdKSsoZ2U8PDIpKzR8MCksamsocGUsRCksWEQocGUsRCxNLE0pLFI9UisxfDA7Zm9yKGZLKHBlLE0pLFI9MDshKCgwfFIpPj0oMHxwZSkpOykoYmU9K2puWyhxPU0rKFI8PDIpfDApPj4yXSk+PTM0MDI4MjM0NjYzODUyODg2ZTIyfGJlPDAmJihq''@;'; put 'put ''bltxPj4yXT0wKSxSPVIrMXwwO1I9bCsxfDAsbD1nZSsxfDA7bjpkb3tpZihydClmb3IoYmU9MCxxPTA7Oyl7aWYoKDB8cSk+PSgwfHBlKSlicmVhayBuO2puWyhWZT13KyhSPDwyKXwwKT4+Ml09YW49K2puW1ZlPj4yXSoram5bTSsocTw8Mik+PjJdLF9bKFZlPWIrKGwrcTw8Myl8MCk+PjNd''@;'; put 'put ''PStfW1ZlPj4zXS1hbixiZSs9YW4sUj1SKzF8MCxxPXErMXwwfWVsc2UgZm9yKGJlPTAscT0wOzspe2lmKCgwfHEpPj0oMHxwZSkpYnJlYWsgbjtqblt3KyhSPDwyKT4+Ml09YW49K2puW00rKHE8PDIpPj4yXSxfWyhWZT1iKyhsK3E8PDMpfDApPj4zXT0rX1tWZT4+M10tYW4sYmUrPWFuLFI9''@;'; put 'put ''UisxfDAscT1xKzF8MH19d2hpbGUoMCk7X1soVmU9YisoZ2U8PDMpfDApPj4zXT0rX1tWZT4+M10tYmUsZ2U9bCxsPVJ9Zm9yKDs7KXtpZigoMHxxKT49KDB8Yykpe1I9MDticmVha31qblt3KyhsPDwyKT4+Ml09K19bYisocTw8Myk+PjNdLFZlPVIrbHwwLFI9UistMXwwLHE9cSsxfDAsbD1W''@;'; put 'put ''ZX1mb3IoOzspe2lmKCgwfFIpPj0oMHxBKSl7YmU9MCxSPTA7YnJlYWt9ZWQodyxjLDB8YVtrdCsoUjw8Mik+PjJdLDB8YVtIZSsoUjw8Mik+PjJdKSxSPVIrMXwwfWZvcig7ISgoMHxSKT49KDB8QSkpOyliZT0rWDcoYywwfGFba3QrKFI8PDIpPj4yXSwwfGFbSGUrKFI8PDIpPj4yXSkrYmUs''@;'; put 'put ''Uj1SKzF8MDtmb3IoYmU9MipiZStHLFI9MDshKCgwfFIpPj0oMHxBKSk7KWVkKHN0LGMsMHxhWyhWZT1rdCsoUjw8Mil8MCk+PjJdLEQpLGJlLT0rWDcoYywwfGFbVmU+PjJdLEQpLFI9UisxfDA7Zm9yKFNuPUxlLWJlLFI9MSYoYmU8KGFuPStfWzIzMjk0XSk/MTooU24+PTA/U246LVNuKS9M''@;'; put 'put ''ZTxhbiksbD0wOyEoKDB8bCk+PSgwfEEpKTspe3E9MHxhWyhwZT1rdCsobDw8Mil8MCk+PjJdO246ZG97aWYoT2Upe2lmKCgwfE9rKHN0LHEsMHxhW0hlKyhsPDwyKT4+Ml0sYywuMDAxLGMpKTwwKXtnZT1IZSxwZT1zdCxmPS0xLGw9U3QscT1rdCxSPUhlO2JyZWFrIHR9fWVsc2V7aWYodUso''@;'; put 'put ''YyxxLEQpLCgwfE9rKHN0LEQsMHxhW0hlKyhsPDwyKT4+Ml0sYywuMDAxLGMpKTwwKXtnZT1IZSxwZT1zdCxmPS0xLGw9U3QscT1rdCxSPUhlO2JyZWFrIHR9Zm9yKHE9MDs7KXtpZigoMHxxKT49KDB8YykpYnJlYWsgbjsoMHxYdFsxMTkrKDB8YVsxNisoMHxhW20rKHE8PDIpPj4yXSk+PjJd''@;'; put 'put ''KT4+MF0pPD0xJiYoYVsoMHxhW3BlPj4yXSkrKHE8PDIpPj4yXT1hW0QrKHE8PDIpPj4yXSkscT1xKzF8MH19fXdoaWxlKDApO2w9bCsxfDB9MD09KDB8KDB8ZiklNSkmITEmJihfW1p0Pj4zXT1iZSxUMChSZSw5MDM3MSxadCksMD09KDB8KGYrNXwwKSU1MCkpJiZZaigxMCxSZSksZj1mKzF8''@;'; put 'put ''MCxMZT1iZX1mb3IoUj0wOzspe2lmKCgwfFIpPj0oMHxBKSl7Z2U9SGUscGU9c3QsbD1TdCxxPWt0LFI9SGU7YnJlYWsgdH1mb3IobD1rdCsoUjw8Mil8MCxwZT1wKyhSPDwyKXwwLHE9MDshKCgwfHEpPj0oMHxjKSk7KV9bKDB8YVtwZT4+Ml0pKyhxPDwzKT4+M109K2puWygwfGFbbD4+Ml0p''@;'; put 'put ''KyhxPDwyKT4+Ml0scT1xKzF8MDtSPVIrMXwwfX19d2hpbGUoMCk7RnQobCksRnQocSksRnQocGUpLDB8Z2UmJihGdCgwfGFbZ2U+PjJdKSxGdChSKSksRnQoRCksRnQoTSksRnQoYiksRnQodyl9fXdoaWxlKDApO3JldHVybiBsZT1idCwwfGZ9ZnVuY3Rpb24gRUQobCxjLGYscCxtLEEsdyl7''@;'; put 'put ''bHw9MCxmfD0wLHB8PTAsbXw9MCxBfD0wLHd8PTA7dmFyIFN0LGt0LHN0LEV0LFp0LGN0LGJ0LGFuLFNuLEhuLHVyLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wLFZlPTAscWU9MCxydD0wLFdlPTAsYXQ9MDtmb3IodXI9bGUs''@;'; put 'put ''bGU9bGUrMzJ8MCxNPXVyKzI0fDAsSG49dXIrOHwwLGt0PXVyKzR8MCxhbj11cixTbj0wfFFuKChidD0oMHwoY3w9MCkpPDUwP2M6NTApPDwyKSxrPTB8UW4oMHxBcihTdD1jPDwzLGJ0KSksYj0wOyEoKDB8Yik+PSgwfGJ0KSk7KWFbU24rKGI8PDIpPj4yXT1rKygoMHxBcihiLGMpKTw8Myks''@;'; put 'put ''Yj1iKzF8MDtmb3IoV2U9KDB8KFdlPSgwfChXZT1idDw8MSkpPjUwP1dlOjUwKSk+KDB8Yyk/YzpXZSxhW00+PjJdPTAsZnVuY3Rpb24galgobCxjLGYscCxtKXtsfD0wLHB8PTAsbXw9MDt2YXIgayxNLFIsRyxxLEE9MCx3PTAsYj0wLEQ9MCxwZT0wLGdlPTAsYmU9MDtmb3IocT1sZSxsZT1s''@;'; put 'put ''ZSsxNnwwLEc9cSx3PTB8UW4oMHxBcihEPShjfD0wKTw8MixmfD0wKSksQT0wfGFbcD4+Ml0sRD0wfFFuKEQpLFI9MHxhW2wrOD4+Ml0sMHxBJiYoRnQoMHxhW0E+PjJdKSxGdChBKSksTT0wfFFuKGY8PDIpLGFbcD4+Ml09TSxBPTA7ISgoMHxBKT49KDB8ZikpOylhW00rKEE8PDIpPj4yXT13''@;'; put 'put ''KygoMHxBcihBLGMpKTw8MiksQT1BKzF8MDtmb3IoKGs9MCE9KDB8bSkpJiZKWChsLGMpLHA9KDB8VDEoKSklKDB8Yyl8MCxPeShHLGMpLEE9MHxhW00+PjJdLGs/KFJ5KHAsbCxjLEEpLG09MCxBPTApOihyOChwLGwsYyxBLEcpLG09MCxBPTApOzspe2lmKCgwfEEpPj0oMHxjKSl7Yj0xO2Jy''@;'; put 'put ''ZWFrfWFbRCsoQTw8Mik+PjJdPXc9MHxhWygwfGFbTT4+Ml0pKyhBPDwyKT4+Ml0sbT0oYj0oMHx3KT4oMHxtKSk/dzptLHA9Yj9BOnAsQT1BKzF8MH1mb3IoOyEoKDB8Yik+PSgwfGYpKTspe2ZvcihBPTB8YVsodz1NKyhiPDwyKXwwKT4+Ml0saz8oUnkocCxsLGMsQSksQT0wLG09MCk6KHI4''@;'; put 'put ''KHAsbCxjLEEsRyksQT0wLG09MCk7ISgoMHxBKT49KDB8YykpOylhWyhiZT1EKyhBPDwyKXwwKT4+Ml09Z2U9KDB8KHBlPTB8YVtiZT4+Ml0pKTwoMHwoZ2U9MHxhWygwfGFbdz4+Ml0pKyhBPDwyKT4+Ml0pKT9wZTpnZSxwZT0oYmU9KDB8Z2UpPigwfG0pKT9BOnAsQT1BKzF8MCxtPWJlP2dl''@;'; put 'put ''Om0scD1wZTtiPWIrMXwwfUZ0KEQpLGsmJlhYKGwsYyxSKSxsZT1xfShsLGMsV2UsTSx3KSxmdW5jdGlvbiB6RChsLGMsZil7bHw9MCxmfD0wO3ZhciBiLHA9MCxtPTAsQT0wLHc9MCxrPTAsTT0wO2ZvcihiPTEvKygwfChjfD0wKSksdz0wOyEoKDB8dyk+PSgwfGYpKTspe2ZvcihrPWwrKHc8''@;'; put 'put ''PDIpfDAscD0wLG09MDshKCgwfG0pPj0oMHxjKSk7KXArPSsoMHxhWygwfGFbaz4+Ml0pKyhtPDwyKT4+Ml0pLG09bSsxfDA7Zm9yKEE9fn4ocCpiKSxtPTA7ISgoMHxtKT49KDB8YykpOylhWyhNPSgwfGFbaz4+Ml0pKyhtPDwyKXwwKT4+Ml09KDB8YVtNPj4yXSktQSxtPW0rMXwwO3c9dysx''@;'; put 'put ''fDB9fSgwfGFbTT4+Ml0sYyxXZSksZnVuY3Rpb24gdGQobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBxLHBlLGdlLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAsYmU9MDtmb3IoZ2U9MHxRbigobXw9MCk8PDIpLHc9Yzw8MyxBPTA7ISgoMHxBKT49KDB8bSkpOylh''@;'; put 'put ''W2dlKyhBPDwyKT4+Ml09MHxRbih3KSxBPUErMXwwO2ZvcihxPTB8UW4obTw8MykscGU9MHxRbihjPDwyKSxBPTB8UW4oMHxBcih3LGMpKSx3PTA7ISgoMHx3KT49KDB8YykpOylhW3BlKyh3PDwyKT4+Ml09QSxBPUErKGM8PDMpfDAsdz13KzF8MDtmb3Ioaz0wLEc9MTshKCgwfGspPj0oMHxj''@;'; put 'put ''KSk7KXtmb3IoTT1sKyhrPDwyKXwwLEQ9cGUrKGs8PDIpfDAsdz0wOygwfHcpIT0oMHxHKTspe2ZvcihSPWwrKHc8PDIpfDAsQT0wLGI9MDshKCgwfEEpPj0oMHxmKSk7KWJlPWIrICsoMHxBcigwfGFbKDB8YVtSPj4yXSkrKEE8PDIpPj4yXSwwfGFbKDB8YVtNPj4yXSkrKEE8PDIpPj4yXSkp''@;'; put 'put ''LEE9QSsxfDAsYj1iZTtfWygwfGFbcGUrKHc8PDIpPj4yXSkrKGs8PDMpPj4zXT1iLF9bKDB8YVtEPj4yXSkrKHc8PDMpPj4zXT1iLHc9dysxfDB9az1rKzF8MCxHPUcrMXwwfWZvcihvSyhwZSxjLG0sZ2UscSwxKSx3PTA7Oyl7aWYoKDB8dyk+PSgwfG0pKXtBPTA7YnJlYWt9Zm9yKE09Z2Ur''@;'; put 'put ''KHc8PDIpfDAsRD1wKyh3PDwyKXwwLGs9MDsoMHxrKTwoMHxmKTspe2ZvcihBPTAsYj0wOyEoKDB8QSk+PSgwfGMpKTspYmU9K19bKDB8YVtNPj4yXSkrKEE8PDMpPj4zXSorKDB8YVsoMHxhW2wrKEE8PDIpPj4yXSkrKGs8PDIpPj4yXSkrYixBPUErMXwwLGI9YmU7X1soMHxhW0Q+PjJdKSso''@;'; put 'put ''azw8Myk+PjNdPWIsaz1rKzF8MH13PXcrMXwwfWZvcig7ISgoMHxBKT49KDB8bSkpOylGdCgwfGFbZ2UrKEE8PDIpPj4yXSksQT1BKzF8MDtGdChnZSksRnQocSksRnQoMHxhW3BlPj4yXSksRnQocGUpfSgwfGFbTT4+Ml0sV2UsYyxTbixidCksRnQoMHxhW2FbTT4+Ml0+PjJdKSxGdCgwfGFb''@;'; put 'put ''TT4+Ml0pLGN0PTB8UW4oV2U9Yzw8MiksYj0wOyEoKDB8Yik+PSgwfGMpKTspYVtjdCsoYjw8Mik+PjJdPS0xLGI9YisxfDA7Zm9yKE95KEhuLGMpLEV0PTB8YVtsKzg+PjJdLChzdD0wIT0oMHx3KSkmJkpYKGwsYykscWU9MHxRbihXZSksWnQ9MHxRbigxNjApLGs9MHxRbigxNjAqY3wwKSxy''@;'; put 'put ''dD0wfFFuKDE2MCksYj0wOzQwIT0oMHxiKTspYVtydCsoYjw8Mik+PjJdPWsrKCgwfEFyKGIsYykpPDwyKSxiPWIrMXwwO2ZvcihiPSgwfFQxKCkpJSgwfGMpfDAsYVtjdCsoYjw8Mik+PjJdPTAsYVtadD4+Ml09YixrPTB8YVtydD4+Ml0sc3Q/KFJ5KGIsbCxjLGspLGs9MCxNPTApOihyOChi''@;'; put 'put ''LGwsYyxrLEhuKSxrPTAsTT0wKTs7KXtpZigoMHxNKT49KDB8Yykpe0c9MTticmVha31hW3FlKyhNPDwyKT4+Ml09YXQ9MHxhWygwfGFbcnQ+PjJdKSsoTTw8Mik+PjJdLGI9KFZlPSgwfGF0KT4oMHxrKSk/TTpiLGs9VmU/YXQ6ayxNPU0rMXwwfWZvcig7Oyl7aWYoNDA9PSgwfEcpKXtiPTA7''@;'; put 'put ''YnJlYWt9Zm9yKGFbY3QrKGI8PDIpPj4yXT1HLGFbWnQrKEc8PDIpPj4yXT1iLGs9MHxhWyhwZT1ydCsoRzw8Mil8MCk+PjJdLHN0PyhSeShiLGwsYyxrKSxSPTAsaz0wKToocjgoYixsLGMsayxIbiksUj0wLGs9MCk7ISgoMHxSKT49KDB8YykpOylhWyhNPXFlKyhSPDwyKXwwKT4+Ml09dz0o''@;'; put 'put ''MHwoYXQ9MHxhW00+PjJdKSk8KDB8KHc9MHxhWygwfGFbcGU+PjJdKSsoUjw8Mik+PjJdKSk/YXQ6dywoMHx3KTw9KDB8ayk/KDB8dyk9PSgwfGspJiYwPT0oMHwoMHxUMSgpKSUoUisxfDApKSYmKGs9MHxhW00+PjJdLGI9Uik6KGs9dyxiPVIpLFI9UisxfDA7Rz1HKzF8MH1mb3IoOyEoKDB8''@;'; put 'put ''Yik+PSgwfGMpKTspYVtxZSsoYjw8Mik+PjJdPS0xLGI9YisxfDA7Zm9yKE9lPTB8UW4oV2UpLGF0PTB8UW4oYzw8NCksUmU9KExlPWMrLTF8MCk8PDIsVmU9MCxNPTAsdz0wLGs9MCxIZT0wOyEoKDB8SGUpPj0oMHxjKSk7KXtiPWN0KyhIZTw8Mil8MDtlOmRve2lmKCgwfGFbYj4+Ml0pPi0x''@;'; put 'put ''KXtmb3IoYVsocGU9YXQrKEhlPDw0KSs0fDApPj4yXT0wfFFuKFJlKSxiZT0wfFFuKFJlKSxhW2F0KyhIZTw8NCkrOD4+Ml09YmUsYVthdCsoSGU8PDQpPj4yXT1MZSxmZVthdCsoSGU8PDQpKzEyPj4wXT0xLEc9cnQrKGFbYj4+Ml08PDIpfDAsYj0wOzspe2lmKCgwfGIpPT0oMHxIZSkpe1I9''@;'; put 'put ''SGU7YnJlYWt9YVsoMHxhW3BlPj4yXSkrKGI8PDIpPj4yXT1iLGFbYmUrKGI8PDIpPj4yXT1hWygwfGFbRz4+Ml0pKyhiPDwyKT4+Ml0sYj1iKzF8MH1mb3IoOzspe2lmKGI9UisxfDAsKDB8Uik9PSgwfExlKSl7Yj1MZTticmVhayBlfWFbKDB8YVtwZT4+Ml0pKyhSPDwyKT4+Ml09YixhW2Jl''@;'; put 'put ''KyhSPDwyKT4+Ml09YVsoMHxhW0c+PjJdKSsoYjw8Mik+PjJdLFI9Yn19ZWxzZXtmb3IoKDB8ayk8NDA/KHc9MHxRbihXZSksTT0wfFFuKFdlKSxrPWMsYj0xKTpiPTAsZmVbYXQrKEhlPDw0KSsxMj4+MF09YixhW2F0KyhIZTw8NCkrND4+Ml09dyxhW2F0KyhIZTw8NCkrOD4+Ml09TSxhW2F0''@;'; put 'put ''KyhIZTw8NCk+PjJdPTQwLGI9MDs0MCE9KDB8Yik7KWFbdysoYjw8Mik+PjJdPWFbWnQrKGI8PDIpPj4yXSxhW00rKGI8PDIpPj4yXT1hWygwfGFbcnQrKGI8PDIpPj4yXSkrKEhlPDwyKT4+Ml0sYj1iKzF8MDtNPU0rMTYwfDAsdz13KzE2MHwwLGs9aystNDB8MCxiPTQwfX13aGlsZSgwKTtW''@;'; put 'put ''ZT1iK1ZlfDAsSGU9SGUrMXwwfWZvcihGdChxZSksRnQoT2UpLDB8cnQmJihGdCgwfGFbcnQ+PjJdKSxGdChydCkpLHJ0PTB8UW4oMjAqY3wwKSxHPTB8UW4oUj1WZStjPDwyKSxiZT0yPT0oMHxBKSxSPTB8UW4oUikscGU9MDshKCgwfHBlKT49KDB8YykpOyl7YVtydCsoMjAqcGV8MCkrND4+''@;'; put 'put ''Ml09RyxhW3J0KygyMCpwZXwwKSs4Pj4yXT1SLGFbKE9lPXJ0KygyMCpwZXwwKXwwKT4+Ml09Yj0xKygwfGFbYXQrKHBlPDw0KT4+Ml0pfDAsTT0oMHxhW2F0KyhwZTw8NCkrOD4+Ml0pLTR8MCx3PWF0KyhwZTw8NCkrNHwwO2U6ZG97aWYoYmUpZm9yKEQ9MCxrPTE7Oyl7aWYoKDB8ayk+PSgw''@;'; put 'put ''fGIpKWJyZWFrIGU7YVtHKyhrPDwyKT4+Ml09YVsoMHxhW3c+PjJdKSsoaystMTw8Mik+PjJdLGpuW1IrKGs8PDIpPj4yXT1nZT0tMS8oKGdlPSsoMHxhW00rKGs8PDIpPj4yXSkpKmdlKSxELT1nZSxrPWsrMXwwLGI9MHxhW09lPj4yXX1lbHNlIGZvcihEPTAsaz0xOzspe2lmKCgwfGspPj0o''@;'; put 'put ''MHxiKSlicmVhayBlO2FbRysoazw8Mik+PjJdPWFbKDB8YVt3Pj4yXSkrKGsrLTE8PDIpPj4yXSxqbltSKyhrPDwyKT4+Ml09Z2U9LTEvKygwfGFbTSsoazw8Mik+PjJdKSxELT1nZSxrPWsrMXwwLGI9MHxhW09lPj4yXX19d2hpbGUoMCk7YVtHPj4yXT1wZSxqbltSPj4yXT1ELFI9UisoKFdl''@;'; put 'put ''PTB8YVtPZT4+Ml0pPDwyKXwwLEc9RysoV2U8PDIpfDAscGU9cGUrMXwwfWZvcihxZT0wfFFuKHA8PDIpLGFbcWU+PjJdPTB8UW4oMHxBcihwPDwzLGJ0KSksYj0xOyEoKDB8Yik+PSgwfHApKTspYVtxZSsoYjw8Mik+PjJdPSgwfGFbcWU+PjJdKSsoKDB8QXIoYixidCkpPDwzKSxiPWIrMXww''@;'; put 'put ''O2U6ZG97aWYobSl7Zm9yKGI9MDshKCgwfGIpPj0oMHxwKSk7KXtmb3IoTT1xZSsoYjw8Mil8MCxrPTA7ISgoMHxrKT49KDB8YnQpKTspX1soMHxhW00+PjJdKSsoazw8Myk+PjNdPTAsaz1rKzF8MDtiPWIrMXwwfWlmKDIhPSgwfHApKWZvcihiPTA7Oyl7aWYoKDB8Yik+PSgwfHApKXtiPTA7''@;'; put 'put ''YnJlYWsgZX1fWygwfGFbcWUrKGI8PDIpPj4yXSkrKGI8PDMpPj4zXT0xLGI9YisxfDB9aWYoX1thW3FlPj4yXT4+M109MSwoMHxQMmUoU24sYnQsYywwfGFbKGI9cWUrNHwwKT4+Ml0pKTw8MjQ+PjI0KWI9MDtlbHNle2ZvcihrPTB8YVtiPj4yXSxiPTA7ISgoMHxiKT49KDB8YnQpKTspX1tr''@;'; put 'put ''KyhiPDwzKT4+M109MCxiPWIrMXwwO19bays4Pj4zXT0xLGI9MH19ZWxzZSBmb3Ioaz0wOzspe2lmKCgwfGspPj0oMHxwKSl7Yj0wO2JyZWFrIGV9Zm9yKE09cWUrKGs8PDIpfDAsYj0wOyEoKDB8Yik+PSgwfGJ0KSk7KWdlPTQuNjU2NjEyODc1MjQ1Nzk3ZS0xMCorKDB8VDEoKSksX1soMHxh''@;'; put 'put ''W00+PjJdKSsoYjw8Myk+PjNdPWdlLGI9YisxfDA7az1rKzF8MH19d2hpbGUoMCk7Zm9yKDshKCgwfGIpPj0oMHxwKSk7KUdWKFNuLGMsYnQsMHxhW3FlKyhiPDwyKT4+Ml0sMHxhW2YrKGI8PDIpPj4yXSksYj1iKzF8MDthW2t0Pj4yXT0wLGFbYW4+PjJdPTAsbEsocnQsU24sYyxidCxrdCks''@;'; put 'put ''ZnVuY3Rpb24gSTJlKGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MDtmb3IoKGI9MHxhWyhBfD0wKT4+Ml0pPyh3PTB8VWEoMHxhW2I+PjJdLDB8QXIoUj1mPDwyLG0pKSxSPTB8VWEoYixSKSk6KHc9MHxGMCgwfEFy''@;'; put 'put ''KFI9Zjw8MixtKSksUj0wfEYwKFIpKSxhW0E+PjJdPVIsYj0wOzspe2lmKCgwfGIpPj0oMHxmKSl7QT0wO2JyZWFrfWFbUisoYjw8Mik+PjJdPXcsYj1iKzF8MCx3PXcrKG08PDIpfDB9Zm9yKDshKCgwfEEpPj0oMHxmKSk7KXtmb3IoTT1sKyhBPDwyKXwwLEQ9UisoQTw8Mil8MCxiPTA7KDB8''@;'; put 'put ''Yik8KDB8bSk7KXtmb3Iodz0wLGs9MDshKCgwfHcpPj0oMHxwKSk7KUc9K19bKDB8YVtNPj4yXSkrKHc8PDMpPj4zXSoram5bKDB8YVtjKyh3PDwyKT4+Ml0pKyhiPDwyKT4+Ml0rayx3PXcrMXwwLGs9RztqblsoMHxhW0Q+PjJdKSsoYjw8Mik+PjJdPWssYj1iKzF8MH1BPUErMXwwfX0oU24s''@;'; put 'put ''MHxhW2t0Pj4yXSxidCxjLGJ0LGFuKSxGdCgwfGFbYVtrdD4+Ml0+PjJdKSxGdCgwfGFba3Q+PjJdKSxIZT0wfFFuKFN0KSxWZT0wfFFuKGJ0PDwzKSxiPTAsaz0wLEQ9K3NzZShmLGF0LHAsYyxBKTtlOmZvcig7KDB8ayk8NTAmYjw8MjQ+PjI0PT0wOyl7Zm9yKExlPTA7ISgoMHxMZSk+PSgw''@;'; put 'put ''fHApKTspe2ZvcihSZT1mKyhMZTw8Mil8MCxNPTA7ISgoMHxNKT49KDB8YykpOyl7Zm9yKF9bKFI9SGUrKE08PDMpfDApPj4zXT0wLEc9KDB8YVthdCsoTTw8NCkrOD4+Ml0pLTR8MCxwZT0wfGFbcnQrKDIwKk18MCkrND4+Ml0sYmU9MHxhW3J0KygyMCpNfDApKzg+PjJdLE9lPXJ0KygyMCpN''@;'; put 'put ''fDApfDAscT0wLHc9MTshKCgwfHcpPj0oMHxhW09lPj4yXSkpOykoZ2U9K0tYKGYscCxNLGI9MHxhW3BlKyh3PDwyKT4+Ml0pKT4xZS0zMCYmKF9bUj4+M109KGdlPS0ram5bYmUrKHc8PDIpPj4yXSorKDB8YVtHKyh3PDwyKT4+Ml0pL2dlKSorX1soMHxhW1JlPj4yXSkrKGI8PDMpPj4zXSsg''@;'; put 'put ''K19bUj4+M10scS09Z2UpLHc9dysxfDA7X1tSPj4zXT0rX1tSPj4zXSsgK19bKDB8YVtSZT4+Ml0pKyhNPDwzKT4+M10qcSxNPU0rMXwwfWlmKFpWKFNuLGJ0LGMsSGUsVmUpLDB8TVYoMHxhW2FuPj4yXSwwfGFbKGI9cWUrKExlPDwyKXwwKT4+Ml0sVmUsYnQsLjAwMSxidCwwKSl7az0tMTti''@;'; put 'put ''cmVhayBlfUdWKFNuLGMsYnQsMHxhW2I+PjJdLDB8YVtSZT4+Ml0pLExlPUxlKzF8MH0xJms/Yj0wOihnZT0rc3NlKGYsYXQscCxjLEEpLGI9KEQ9K2VvKCsoZ2UtRCkpLyhnZSsxZS0xMCkpPCtfWzIzMjk0XSYxLEQ9Z2UpLGs9aysxfDB9Zm9yKEZ0KFZlKSxGdChIZSksc3QmJlhYKGwsYyxF''@;'; put 'put ''dCksYj0wOyEoKDB8Yik+PSgwfGMpKTspMHxmZVthdCsoYjw8NCkrMTI+PjBdJiYoRnQoMHxhW2F0KyhiPDw0KSs0Pj4yXSksRnQoMHxhW2F0KyhiPDw0KSs4Pj4yXSkpLGI9YisxfDA7cmV0dXJuIEZ0KGF0KSxGdCgwfGFbcnQrND4+Ml0pLEZ0KDB8YVtydCs4Pj4yXSksRnQocnQpLEZ0KGN0''@;'; put 'put ''KSxGdChadCksRnQoMHxhW3FlPj4yXSksRnQocWUpLDB8KGI9MHxhW2FuPj4yXSkmJihGdCgwfGFbYj4+Ml0pLEZ0KDB8YVthbj4+Ml0pKSxGdCgwfGFbU24+PjJdKSxGdChTbiksQkQoSG4pLGxlPXVyLDB8a31mdW5jdGlvbiBzc2UobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18''@;'; put 'put ''PTA7dmFyIEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTA7ZTpkb3tpZigyPT0oMHxtKSlmb3IoQT0wLE09MDs7KXtpZigoMHxNKT49KDB8cCkpYnJlYWsgZTtmb3IoUj0wfGFbYysoTTw8NCk+PjJdLEc9YysoTTw8NCkrNHwwLEQ9YysoTTw8NCkrOHwwLGs9MDshKCgw''@;'; put 'put ''fGspPj0oMHxSKSk7KXtpZigoMHwoYj0wfGFbKDB8YVtHPj4yXSkrKGs8PDIpPj4yXSkpPigwfE0pKXtmb3Iodz0wLG09MDshKCgwfG0pPj0oMHxmKSk7KXc9KHE9K19bKHBlPTB8YVtsKyhtPDwyKT4+Ml0pKyhNPDwzKT4+M10tK19bcGUrKGI8PDMpPj4zXSkqcSt3LG09bSsxfDA7dz0rRDAo''@;'; put 'put ''K3cpLEE9KHc9KHE9KygwfGFbKDB8YVtEPj4yXSkrKGs8PDIpPj4yXSkpLXcpKncvKHEqcSkrQX1rPWsrMXwwfU09TSsxfDB9ZWxzZSBmb3IoTT0wLEE9MDs7KXtpZigoMHxNKT49KDB8cCkpYnJlYWsgZTtmb3IoRD0wfGFbYysoTTw8NCk+PjJdLFI9YysoTTw8NCkrNHwwLEc9YysoTTw8NCkr''@;'; put 'put ''OHwwLGs9MDshKCgwfGspPj0oMHxEKSk7KXtpZigoMHwoYj0wfGFbKDB8YVtSPj4yXSkrKGs8PDIpPj4yXSkpPigwfE0pKXtmb3Iodz0wLG09MDshKCgwfG0pPj0oMHxmKSk7KXc9KHE9K19bKHBlPTB8YVtsKyhtPDwyKT4+Ml0pKyhNPDwzKT4+M10tK19bcGUrKGI8PDMpPj4zXSkqcSt3LG09''@;'; put 'put ''bSsxfDA7dz0rRDAoK3cpLEE9KHc9KHE9KygwfGFbKDB8YVtHPj4yXSkrKGs8PDIpPj4yXSkpLXcpKncvcStBfWs9aysxfDB9TT1NKzF8MH19d2hpbGUoMCk7cmV0dXJuK0F9ZnVuY3Rpb24gR0oobCl7cmV0dXJuKyArRDAoKyhsPStsKSkqbH1mdW5jdGlvbiBXSihsLGMsZil7bHw9MCxjfD0w''@;'; put 'put ''LGZ8PTA7dmFyIEEscD0wLG09MCx3PTA7Zm9yKEE9MHxhWzQ3MTM3XSxwPTAsbT0wOyEoKDB8bSk+PSgwfEEpKTspX1tmKyhtPDwzKT4+M109dz0rX1tsKyhtPDwzKT4+M10tK19bYysobTw8Myk+PjNdLHA9dyp3K3AsbT1tKzF8MDtyZXR1cm4rICtEMCgrcCl9ZnVuY3Rpb24gY2cobCxjLGYp''@;'; put 'put ''e2N8PTAsZj0rZjt2YXIgdyxwPTAsbT0wLEE9MDtmb3Iodz0wfHZyKChsfD0wKTw8MiksbT0wLEE9MHx2cigwfEFyKGw8PDMsYykpOyEoKDB8bSk+PSgwfGwpKTspe2ZvcihhW3crKG08PDIpPj4yXT1BLHA9MDshKCgwfHApPj0oMHxjKSk7KV9bQSsocDw8Myk+PjNdPWYscD1wKzF8MDttPW0r''@;'; put 'put ''MXwwLEE9QSsoYzw8Myl8MH1yZXR1cm4gMHx3fWZ1bmN0aW9uIEI3KGwpezB8KGx8PTApJiYoRnQoMHxhW2w+PjJdKSxGdChsKSl9ZnVuY3Rpb24gWUoobCxjKXtjfD0wO3ZhciBiLGssTSxELGY9MCxwPTAsbT0wLEE9MCx3PTAsUj0wO0Q9bGUsbGU9bGUrMTZ8MCxNPTB8R28obHw9MCksaz0w''@;'; put 'put ''fE4zKGwpLGI9MHxzaShsLDIsOTI0OTMsMCk7ZTpkb3tpZihjKWZvcihfWzIzMjk0XT0xZS00LHNRKGwsMTA4ODg2LDE4NjM1MiksbT0wLGY9MCxBPTB8RHQobCk7Oyl7aWYoIUEpYnJlYWsgZTthWzEyMCsoMHxhW0ErMTY+PjJdKT4+Ml09bSxtPW0rMXwwLGY9cD0rcU4obCxBLGIpK2YsQT0w''@;'; put 'put ''fHp0KGwsQSl9ZWxzZSBmb3IoX1syMzI5NF09MWUtNCorKDB8TSksc1EobCwxMDg4ODYsMTg2MzUyKSxtPTB8TGkoMHxhW2wrNjA+PjJdLDkwMTAwKSxmPW0/K2twKG0pOi45OSxfWzIzMjk2XT1mLG09MHx2cig0KyhNPDwyKXwwKSx3PWwrMTZ8MCxhWzE1MisoMHxhW3c+PjJdKT4+Ml09bSxt''@;'; put 'put ''PTAsZj0wLEE9MHxEdChsKTs7KXtpZighQSlicmVhayBlO2FbKDB8YVsxNTIrKDB8YVt3Pj4yXSk+PjJdKSsobTw8Mik+PjJdPUEsYVsxMjArKFI9MHxhW0ErMTY+PjJdKT4+Ml09bSxhW1IrMTI0Pj4yXT0tMSxtPW0rMXwwLGY9cD0rcU4obCxBLGIpK2YsQT0wfHp0KGwsQSl9fXdoaWxlKDAp''@;'; put 'put ''O3JldHVybiAwIT0oMHwobT0wfExpKGwsOTAxMDgpKSkmJjAhPSgwfGZlW20+PjBdKT8oZj0rX1syMzI5NF0pPihwPStrcChtKSl8fChmPXApOmY9Zi8rKDB8KCgwfGspPjE/azoxKSkqK0QwKCsgKygwfE0pKSsxLF9bMjMyOTVdPWYsYVs0NzEzNF18Y3x8KGM9MHxjZyhNLE0sZiksYVsxNjAr''@;'; put 'put ''KDB8YVsoUj1sKzE2fDApPj4yXSk+PjJdPWMsYz0wfGNnKE0sTSwxKSxhWzE2NCsoMHxhW1I+PjJdKT4+Ml09YyxjPTB8Y2coTSwwfGFbNDcxMzddLDEpLGFbMTY4KygwfGFbUj4+Ml0pPj4yXT1jLGM9MHxmdW5jdGlvbiB1c2UobCxjLGYpe2N8PTAsZnw9MDt2YXIgYixrLE0scD0wLG09MCxB''@;'; put 'put ''PTAsdz0wO2ZvcihiPTB8dnIoNCsoKGx8PTApPDwyKXwwKSxrPTQrKGM8PDIpfDAsTT1mPDwzLEE9MDshKCgwfEEpPj0oMHxsKSk7KXtmb3IoYVsodz1iKyhBPDwyKXwwKT4+Ml09MHx2cihrKSxtPTA7ISgoMHxtKT49KDB8YykpOyl7Zm9yKHA9MHx2cihNKSxhWygwfGFbdz4+Ml0pKyhtPDwy''@;'; put 'put ''KT4+Ml09cCxwPTA7ISgoMHxwKT49KDB8ZikpOylfWygwfGFbKDB8YVt3Pj4yXSkrKG08PDIpPj4yXSkrKHA8PDMpPj4zXT0wLHA9cCsxfDA7bT1tKzF8MH1hWygwfGFbdz4+Ml0pKyhtPDwyKT4+Ml09MCxBPUErMXwwfXJldHVybiBhW2IrKEE8PDIpPj4yXT0wLDB8Yn0oTSxNLDB8YVs0NzEz''@;'; put 'put ''N10pLGFbMTcyKygwfGFbUj4+Ml0pPj4yXT1jKSxsZT1ELDB8TX1mdW5jdGlvbiBxTihsLGMsZil7Znw9MDt2YXIgQSx3LGsscD0wLG09MCxiPTA7Zm9yKGs9bGUsbGU9bGUrMzJ8MCx3PWsrOHwwLEE9ayxjPTB8dzAobHw9MCxjfD0wKSxwPTA7Yzspe3N3aXRjaCgwfGNzZShjLGYsQSkpe2Nh''@;'; put 'put ''c2UgMDptPStfW0E+PjNdO2JyZWFrO2Nhc2UgMjphW3c+PjJdPTB8dGkobCksX1t3Kzg+PjNdPTEsJHIoMyw5MDEyMCx3KSxiPTY7YnJlYWs7ZGVmYXVsdDpiPTZ9Nj09KDB8YikmJihiPTAsX1tBPj4zXT0xLG09MSksX1sxMzYrKDB8YVtjKzE2Pj4yXSk+PjNdPW0sYz0wfFMwKGwsYykscD1t''@;'; put 'put ''K3B9cmV0dXJuIGxlPWssK3B9ZnVuY3Rpb24gY3NlKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgQSx3LGIscD0wLG09MDtiPWxlLGxlPWxlKzE2fDAsdz1iKzh8MCxBPWI7ZG97aWYoMCE9KDB8YykmJihwPTB8SG8obCxjKSwwIT0oMHxmZVtwPj4wXSkpKXtpZihhW0E+PjJdPWYsKDB8aWwo''@;'; put 'put ''cCwxMDEyMDksQSkpPj0xJiYhKChtPStfW2Y+PjNdKTwwKSYmMCE9bXwwIT0oMHxhWzQ3MTM0XSkpe2w9MDticmVha31hW3c+PjJdPXAsJHIoMCw5MDE0Nyx3KSxsPTJ9ZWxzZSBsPTF9d2hpbGUoMCk7cmV0dXJuIGxlPWIsMHxsfWZ1bmN0aW9uIGVWKGwpe0Z0KDB8YVsxNTIrKDB8YVsobD0x''@;'; put 'put ''NisobHw9MCl8MCk+PjJdKT4+Ml0pLDB8YVs0NzEzNF18fChCNygwfGFbMTYwKygwfGFbbD4+Ml0pPj4yXSksQjcoMHxhWzE2NCsoMHxhW2w+PjJdKT4+Ml0pLEI3KDB8YVsxNjgrKDB8YVtsPj4yXSk+PjJdKSxmdW5jdGlvbiBBdmUobCl7dmFyIGM9MCxmPTAscD0wLG09MCxBPTA7aWYoMHwo''@;'; put 'put ''bHw9MCkpe2ZvcihtPTA7Yz0wfGFbKEE9bCsobTw8Mil8MCk+PjJdOyl7Zm9yKHA9MDtmPTB8YVtjKyhwPDwyKT4+Ml07KUZ0KGYpLHA9cCsxfDAsYz0wfGFbQT4+Ml07RnQoYyksbT1tKzF8MH1GdChsKX19KDB8YVsxNzIrKDB8YVtsPj4yXSk+PjJdKSxhWzE3MisoMHxhW2w+PjJdKT4+Ml09''@;'; put 'put ''MCl9ZnVuY3Rpb24gUUoobCxjLGYpe2Z8PTA7dmFyIHAsbT0wO2ZvcihwPSsoMHwoY3w9MCkpLGM9MTYrKGx8PTApfDA7ISgoMHxmKT49KDB8YVs0NzEzN10pKTspbT0rcWMoKSpwLF9bKDB8YVsxMzIrKDB8YVtjPj4yXSk+PjJdKSsoZjw8Myk+PjNdPW0sZj1mKzF8MH1mdW5jdGlvbiB0Vihs''@;'; put 'put ''LGMpe1FKKGx8PTAsY3w9MCwyKX1mdW5jdGlvbiBoc2UobCxjKXtsfD0wO3ZhciBmLG0scD0wO3A9KygwfChjfD0wKSksbT0rcWMoKSpwLF9bYVsxMzIrKDB8YVsoZj1sKzE2fDApPj4yXSk+PjJdPj4zXT1tLHA9K3FjKCkqcCxfWzgrKDB8YVsxMzIrKDB8YVtmPj4yXSk+PjJdKT4+M109cCwo''@;'; put 'put ''MHxhWzQ3MTM3XSk+MiYmdFYobCxjKX1mdW5jdGlvbiB3dmUobCxjKXtsfD0wLGN8PTA7dmFyIEQsRyxxLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsUj0wLHBlPTA7aWYocT1sZSxsZT1sZSsxNnwwLEc9cSxhWzQ2Nzk5XT1EPTErKDB8YVs0Njc5OV0pfDAsKDB8YVsxNTYrKGw9''@;'; put 'put ''MHxhW2wrMTY+PjJdKT4+Ml0pPCgwfGFbNDcxMzZdKSl7Zm9yKGs9MHxhWzQ3MTM3XSxNPWwrMTUyfDAsYj1sKzE2OHwwLGw9MCxmPTAsdz0wOyEoKDB8dyk+PSgwfGMpKTspe2lmKCgwfFh0WzExOSsoMHxhWzE2KyhtPTB8YVsoMHxhW00+PjJdKSsodzw8Mik+PjJdKT4+Ml0pPj4wXSk8PTEp''@;'; put 'put ''e2ZvcihBPTAscD0wOyEoKDB8cCk+PSgwfGspKTspQT0ocGU9K19bKDB8YVsoMHxhW2I+PjJdKSsodzw8Mik+PjJdKSsocDw8Myk+PjNdKSpwZStBLHA9cCsxfDA7QT5mJiYobD1tLGY9QSl9dz13KzF8MH1mPCtfWzIzMjE2XT9sPTA6ITEmMD09KDB8KDB8RCklMTAwKSYmKFI9MHxhWzE1NzEy''@;'; put 'put ''XSxfW0c+PjNdPStEMCgrZiksVDAoUiw5MDM3MSxHKSwwPT0oMHwoMHxhWzQ2Nzk5XSklMWUzKSkmJllqKDEwLFIpfWVsc2UgbD0wO3JldHVybiBsZT1xLDB8bH1mdW5jdGlvbiB4RChsLGMsZil7bHw9MCxjfD0wO3ZhciBiLFIsTSxwPTAsbT0wLEE9MCx3PTAsaz0wO2ZvcihSPWxlLGxlPWxl''@;'; put 'put ''KzE2fDAsTT0wfGFbMTIwKygwfGFbKGs9MTYrKGZ8PTApfDApPj4yXSk+PjJdLEE9KG09MHxhWzQ2Nzk4XSk/MHxWMChtLDB8QXIoKEE9MHxhWzQ3MTM3XSk8PDMsQSkpOjB8UW4oMHxBcigoQT0wfGFbNDcxMzddKTw8MyxBKSksYVs0Njc5OF09QSxmdW5jdGlvbiBuVihsLGMsZixwKXtjfD0w''@;'; put 'put ''LHB8PTA7dmFyIGdlLGJlLE9lLFJlLEhlLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLExlPTA7Zm9yKEhlPWxlLGxlPWxlKzgwfDAsUmU9SGUsaz0wfGFbMTY0KyhMZT0wfGFbMTYrKGx8PTApPj4yXSk+PjJdLE09MHxhW0xlKzE2MD4+Ml0sYj0wfGFbKExl''@;'; put 'put ''PTB8YVtMZSsxNTI+PjJdKSsoKGZ8PTApPDwyKT4+Ml0sQT0wfGFbNDcxMzddLGw9MDshKCgwfGwpPj0oMHxBKSk7KXtmb3Iodz0wfEFyKEEsbCksbT0wOygwfG0pIT0oMHxBKTspX1twKyh3K208PDMpPj4zXT0wLG09bSsxfDA7bD1sKzF8MH1mb3IoT2U9MHxhWzQ3MTM3XSxiZT1iKzE2fDAs''@;'; put 'put ''Z2U9aysoZjw8Mil8MCxrPU0rKGY8PDIpfDAsYj0wOyEoKDB8Yik+PSgwfGMpKTspe2U6ZG97aWYoKDB8YikhPSgwfGYpKXtmb3IobT0xNisoMHxhW0xlKyhiPDwyKT4+Ml0pfDAscGU9MCxsPTA7ISgoMHxsKT49KDB8T2UpKTspX1tSZSsobDw8Myk+PjNdPXE9K19bKDB8YVsxMzIrKDB8YVti''@;'; put 'put ''ZT4+Ml0pPj4yXSkrKGw8PDMpPj4zXS0rX1soMHxhWzEzMisoMHxhW20+PjJdKT4+Ml0pKyhsPDwzKT4+M10scGU9cSpxK3BlLGw9bCsxfDA7Zm9yKEQ9MS8rR0oocGUpLHc9MDs7KXtpZigoMHx3KT49KDB8T2UpKWJyZWFrIGU7Zm9yKG09KDB8YVtnZT4+Ml0pKyhiPDwzKXwwLEE9KDB8YVtr''@;'; put 'put ''Pj4yXSkrKGI8PDMpfDAsUj0rX1tSZSsodzw8Myk+PjNdLGw9MDtHPStfW20+PjNdLHE9K19bQT4+M10sKDB8bCkhPSgwfHcpOylNPXArKCgwfEFyKE9lLGwpKSt3PDwzKXwwLF9bTT4+M109K19bTT4+M10rRypEKnEqUiorX1tSZSsobDw8Myk+PjNdLGw9bCsxfDA7TT1wKygoMHxBcihPZSx3''@;'; put 'put ''KSkrdzw8Myl8MCxfW00+PjNdPSgxLXEqRCoocGUtUipSKSkqRysgK19bTT4+M10sdz13KzF8MH19fXdoaWxlKDApO2I9YisxfDB9Zm9yKG09MHxhWzQ3MTM3XSx3PTE7ISgoMHx3KT49KDB8bSkpOyl7Zm9yKEE9MHxBcihtLHcpLGw9MDsoMHxsKSE9KDB8dyk7KV9bcCsoQStsPDwzKT4+M109''@;'; put 'put ''K19bcCsoKDB8QXIobSxsKSkrdzw8Myk+PjNdLGw9bCsxfDA7dz13KzF8MH1sZT1IZX0obCxjLE0sQSksdz0wfGFbNDcxMzddLGI9bCsxNnwwLG09MDshKCgwfG0pPj0oMHx3KSk7KV9bMTg1NzM2KyhtPDwzKT4+M109LStfWygwfGFbKDB8YVsxNjgrKDB8YVtiPj4yXSk+PjJdKSsoTTw8Mik+''@;'; put 'put ''PjJdKSsobTw8Myk+PjNdLG09bSsxfDA7Zm9yKGZ1bmN0aW9uIFgyZShsLGMsZixwKXtsfD0wLGN8PTAsZnw9MDt2YXIgcGUsZ2UsYmUsT2UsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLExlPTAsUmU9MDtmb3IoYmU9MHxRbigoZ2U9MHxBcihwfD0wLHApKTw8Myks''@;'; put 'put ''T2U9MHxRbihwPDwzKSxtPTA7ISgoMHxtKT49KDB8cCkpOylfW09lKyhtPDwzKT4+M109K19bZisobTw8Myk+PjNdLG09bSsxfDA7Zm9yKG09MDshKCgwfG0pPj0oMHxnZSkpOylfW2JlKyhtPDwzKT4+M109K19bbCsobTw8Myk+PjNdLG09bSsxfDA7cGU9cCstMXwwLHc9MCxxPTA7ZTpmb3Io''@;'; put 'put ''Ozspe2lmKCEoKDB8cSk8KDB8cGUpKSl7RD0yMTticmVha31mb3IoQT0wLG09cTshKCgwfG0pPj0oMHxwKSk7KUc9KFI9KExlPStlbygrICtfW2wrKCgwfEFyKG0scCkpK3E8PDMpPj4zXSkpPEEpP3c6bSxBPVI/QTpMZSxtPW0rMXwwLHc9RztpZihBPDFlLTEwKXtEPTMzO2JyZWFrfWZvcihi''@;'; put 'put ''PTB8QXIodyxwKSxHPTB8QXIocSxwKSxtPXE7ISgoMHxtKT49KDB8cCkpOylMZT0rX1soRD1sKyhtK2I8PDMpfDApPj4zXSxfW0Q+PjNdPStfWyhSPWwrKG0rRzw8Myl8MCk+PjNdLF9bUj4+M109TGUsbT1tKzF8MDtmb3IoTGU9K19bKFI9Zisodzw8Myl8MCk+PjNdLF9bUj4+M109K19bKGs9''@;'; put 'put ''ZisocTw8Myl8MCk+PjNdLF9baz4+M109TGUsTT1sKyhHK3E8PDMpfDAsbT1SPXErMXwwOzspe2lmKCgwfG0pPj0oMHxwKSl7cT1SO2NvbnRpbnVlIGV9Zm9yKEQ9MHxBcihtLHApLF9bKGI9ZisobTw8Myl8MCk+PjNdPStfW2I+PjNdLStfW2s+PjNdKihBPStfW2wrKEQrcTw8Myk+PjNdLytf''@;'; put 'put ''W00+PjNdKSxiPTA7ISgoMHxiKT49KDB8cCkpOylfWyhSZT1sKyhiK0Q8PDMpfDApPj4zXT0rX1tSZT4+M10tK19bbCsoYitHPDwzKT4+M10qQSxiPWIrMXwwO209bSsxfDB9fWlmKDIxPT0oMHxEKSlpZigrZW8oKyhBPStfW2wrKGdlKy0xPDwzKT4+M10pKTwxZS0xMClEPTMzO2Vsc2V7Zm9y''@;'; put 'put ''KF9bYysocGU8PDMpPj4zXT0rX1tmKyhwZTw8Myk+PjNdL0EsbT0wOzspe2lmKCgwfG0pPj0oMHxwZSkpe209MDticmVha31mb3IoX1soaz1jKygoYj0odz1wLW18MCktMnwwKTw8Myl8MCk+PjNdPUE9K19bZisoYjw8Myk+PjNdLE09MHxBcihiLHApLHc9dystMXwwOyEoKDB8dyk+PSgwfHAp''@;'; put 'put ''KTspX1trPj4zXT1MZT1BLStfW2MrKHc8PDMpPj4zXSorX1tsKyh3K008PDMpPj4zXSx3PXcrMXwwLEE9TGU7X1trPj4zXT1BLytfW2wrKE0rYjw8Myk+PjNdLG09bSsxfDB9Zm9yKDs7KXtpZigoMHxtKT49KDB8cCkpe209MDticmVha31fW2YrKG08PDMpPj4zXT0rX1tPZSsobTw8Myk+PjNd''@;'; put 'put ''LG09bSsxfDB9Zm9yKDshKCgwfG0pPj0oMHxnZSkpOylfW2wrKG08PDMpPj4zXT0rX1tiZSsobTw8Myk+PjNdLG09bSsxfDA7RnQoYmUpLEZ0KE9lKX0zMz09KDB8RCkmJihmdW5jdGlvbiBmZmUobCl7bHw9MDt2YXIgcCxtLGM9MCxmPTA7bT0oMHxhWzc2KyhwPTB8YVsxNTY3OV0pPj4yXSk+''@;'; put 'put ''LTE/MHxSZigpOjA7ZG97aWYoKDB8X3UobCxwKSk8MClsPS0xO2Vsc2V7aWYoMTAhPSgwfGZlW3ArNzU+PjBdKSYmKGY9MHxhWyhjPXArMjB8MCk+PjJdKT4+PjA8KDB8YVtwKzE2Pj4yXSk+Pj4wKXthW2M+PjJdPWYrMSxmZVtmPj4wXT0xMCxsPTA7YnJlYWt9bD0oMHxGaihwLDEwKSk+PjMx''@;'; put 'put ''fX13aGlsZSgwKTswfG0mJmUzKCl9KDkzOTg5KSxGdChiZSksRnQoT2UpKX0oQSwxODU4MTYsMTg1NzM2LHcpLG09MDshKCgwfG0pPj0oMHxhWzQ3MTM3XSkpOylwPTIqKDEtKHA9K19bMjMyOTZdKSkqK3FjKCkrcCxfWyh3PTE4NTgxNisobTw8Myl8MCk+PjNdPXAqPStfW3c+PjNdLF9bKHc9''@;'; put 'put ''KDB8YVsxMzIrKDB8YVtrPj4yXSk+PjJdKSsobTw8Myl8MCk+PjNdPStfW3c+PjNdK3AsbT1tKzF8MDthWyhrPTE1NisoMHxhW2I+PjJdKXwwKT4+Ml09MSsoMHxhW2s+PjJdKSxmdW5jdGlvbiByVihsLGMsZil7Y3w9MDt2YXIgYixrLE0scD0wLG09MCxBPTAsdz0wLEQ9MCxSPTAsRz0wLHE9''@;'; put 'put ''MCxwZT0wLGdlPTA7Zm9yKE09bGUsbGU9bGUrODB8MCxrPU0sQT0wfGFbKDB8YVsxNTIrKG09MHxhWyhiPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSkrKChmfD0wKTw8Mik+PjJdLHA9MHxhWzQ3MTM3XSxtPW0rMTY4fDAsbD0wOyEoKDB8bCk+PSgwfHApKTspX1soMHxhWygwfGFbbT4+Ml0pKyhm''@;'; put 'put ''PDwyKT4+Ml0pKyhsPDwzKT4+M109MCxsPWwrMXwwO2ZvcihtPUErMTZ8MCxsPTA7ISgoMHxsKT49KDB8YykpOyl7ZTpkb3tpZigoMHxsKSE9KDB8ZikpZm9yKHc9K1dKKDB8YVsxMzIrKDB8YVttPj4yXSk+PjJdLDB8YVsxMzIrKDB8YVsxNisoMHxhWygwfGFbMTUyKygwfGFbYj4+Ml0pPj4y''@;'; put 'put ''XSkrKGw8PDIpPj4yXSk+PjJdKT4+Ml0sayksQT0wfGFbNDcxMzddLHc9MS93LHA9MDs7KXtpZigoMHxwKT49KDB8QSkpYnJlYWsgZTtfWyhwZT0oMHxhWygwfGFbKHE9MHxhWzE3MisoRD0wfGFbYj4+Ml0pPj4yXSkrKGY8PDIpPj4yXSkrKGw8PDIpPj4yXSkrKHA8PDMpfDApPj4zXT1SPSgo''@;'; put 'put ''Uj0rX1trKyhwPDwzKT4+M10pLStfWygwfGFbKDB8YVtEKzE2MD4+Ml0pKyhmPDwyKT4+Ml0pKyhsPDwzKT4+M10qUip3KSorX1soMHxhWygwfGFbRCsxNjQ+PjJdKSsoZjw8Mik+PjJdKSsobDw8Myk+PjNdLF9bKGdlPSgwfGFbKEQ9MHxhW0QrMTY4Pj4yXSkrKGY8PDIpPj4yXSkrKHA8PDMp''@;'; put 'put ''fDApPj4zXT0rX1tnZT4+M10rUixSPStfWyhxPSgwfGFbKDB8YVtxKyhsPDwyKT4+Ml0pKyhmPDwyKT4+Ml0pKyhwPDwzKXwwKT4+M10sX1txPj4zXT1HPS0rX1twZT4+M10sX1soRD0oMHxhW0QrKGw8PDIpPj4yXSkrKHA8PDMpfDApPj4zXT1HLVIrICtfW0Q+PjNdLHA9cCsxfDB9fXdoaWxl''@;'; put 'put ''KDApO2w9bCsxfDB9bGU9TX0obCxjLE0pLGxlPVJ9ZnVuY3Rpb24gaVYobCl7dmFyIGYsQSxjPTAscD0wLG09MCx3PTAsYj0wO2ZvcihBPTB8YVs0NjgwMF0sYz0wfGFbMTI0KygwfGFbKGY9MTYrKGx8PTApfDApPj4yXSk+PjJdOyEoKDB8Yyk8PTB8fCh3PShjKy0xfDApLzJ8MCxiPUErKHc8''@;'; put 'put ''PDIpfDAscD0wfGFbYj4+Ml0sbT1wKzE2fDAsK19bMTM2KygwfGFbbT4+Ml0pPj4zXTw9K19bMTM2KygwfGFbZj4+Ml0pPj4zXSkpOylhW2I+PjJdPWwsYVsxMjQrKDB8YVtmPj4yXSk+PjJdPXcsYVtBKyhjPDwyKT4+Ml09cCxhWzEyNCsoMHxhW20+PjJdKT4+Ml09YyxjPXd9ZnVuY3Rpb24g''@;'; put 'put ''b1YobCl7dmFyIGMsZjsoMHxhWyhjPTEyNCsoMHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4yXSk+PTAmJlByKDkwMzc3LDkwMzk3LDY0Myw5MDQwNSksYVs0NjgwMV09MSsoZj0wfGFbNDY4MDFdKSxhW2M+PjJdPWYsYVsoMHxhWzQ2ODAwXSkrKGY8PDIpPj4yXT1sLCgwfGYpPjAmJmlWKGwpfWZ1''@;'; put 'put ''bmN0aW9uIFhKKCl7dmFyIGMsbD0wLGY9MCxwPTA7cmV0dXJuKGM9MHxhWzQ2ODAxXSk/KGw9MHxhWyhwPTB8YVs0NjgwMF0pPj4yXSxhWzQ2ODAxXT1mPWMrLTF8MCxhW3A+PjJdPWY9MHxhW3ArKGY8PDIpPj4yXSxhWzEyNCsoMHxhW2YrMTY+PjJdKT4+Ml09MCwoMHxjKT4yJiZmdW5jdGlv''@;'; put 'put ''biBwc2UobCl7dmFyIHcsYixrLGM9MCxmPTAscD0wLG09MCxBPTAsTT0wO2ZvcihiPTB8YVs0NjgwMV0saz0wfGFbNDY4MDBdLEE9MHxhWzEyNCsoMHxhWyh3PTE2KyhsfD0wKXwwKT4+Ml0pPj4yXTshKCgwfChwPUE8PDF8MSkpPj0oMHxiKXx8KGY9cCsxfDAsKDB8Zik8KDB8Yik/KG09MHxh''@;'; put 'put ''W2srKGY8PDIpPj4yXSxjPTB8YVtrKyhwPDwyKT4+Ml0sK19bMTM2KygwfGFbbSsxNj4+Ml0pPj4zXTwrX1sxMzYrKDB8YVtjKzE2Pj4yXSk+PjNdPyhwPWYsYz1tKTpNPTYpOihjPTB8YVtrKyhwPDwyKT4+Ml0sTT02KSw2PT0oMHxNKSYmKE09MCksZj1jKzE2fDAsK19bMTM2KygwfGFbdz4+''@;'; put 'put ''Ml0pPj4zXTw9K19bMTM2KygwfGFbZj4+Ml0pPj4zXSkpOylhW2srKHA8PDIpPj4yXT1sLGFbMTI0KygwfGFbdz4+Ml0pPj4yXT1wLGFbaysoQTw8Mik+PjJdPWMsYVsxMjQrKDB8YVtmPj4yXSk+PjJdPUEsQT1wfShmKSxhWzEyNCsoMHxhW2wrMTY+PjJdKT4+Ml09LTEpOmw9MCwwfGx9ZnVu''@;'; put 'put ''Y3Rpb24gS0oobCxjKXt2YXIgcDtmb3IobHw9MCxwPWxlLGxlPWxlKzE2fDAsYVs0NjgwMF09MHx2cig0KygoY3w9MCk8PDIpfDApLGM9MHxEdChsKTtjOykkSihsLGMpLGM9MHx6dChsLGMpO0Z0KDB8YVs0NjgwMF0pLGxlPXB9ZnVuY3Rpb24gJEoobCxjKXtjfD0wO3ZhciBmPTAscD0wLG09''@;'; put 'put ''MCxBPTAsdz0wLGI9MCxrPTA7Zm9yKHA9MHxhWzE1MisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSxtPStfWzIzMjk1XSxmPTA7QT0wfGFbcCsoZjw8Mik+PjJdOylfWzEzNisoMHxhW0ErMTY+PjJdKT4+M109bSxmPWYrMXwwO2FbNDY4MDJdPWMsX1sxMzYrKGs9MHxhW2MrMTY+PjJdKT4+M109''@;'; put 'put ''MCxhW2srMTI4Pj4yXT0wLG9WKGMpO2U6Zm9yKDtrPTB8WEooKSxrOylmb3IoZj0wfGFbNDY4MDJdLGI9aysxNnwwLCgwfGspIT0oMHxmKSYmYnZlKGwsZixrLCtfWzEzNisoMHxhW2I+PjJdKT4+M10pLHc9MHxNcyhsLGspOzspe2lmKCF3KWNvbnRpbnVlIGU7KDB8KGM9MHxhWygzPT0oMHwo''@;'; put 'put ''Zj0zJmFbdz4+Ml0pKT93OncrNDh8MCkrNDA+PjJdKSk9PSgwfGspJiYoYz0wfGFbKDI9PSgwfGYpP3c6dystNDh8MCkrNDA+PjJdKSxtPStfWzEzNisoMHxhW3crMTY+PjJdKT4+M10rICtfWzEzNisoZj0wfGFbYj4+Ml0pPj4zXSxBPTEzNisocD0wfGFbYysxNj4+Ml0pfDA7ZG97aWYoK19b''@;'; put 'put ''QT4+M10+bSl7aWYoX1tBPj4zXT1tLCgwfGFbcCsxMjQ+PjJdKT4tMSl7aVYoYyk7YnJlYWt9YVtwKzEyOD4+Ml09MSsoMHxhW2YrMTI4Pj4yXSksb1YoYyk7YnJlYWt9fXdoaWxlKDApO3c9MHxWcyhsLHcsayl9fWZ1bmN0aW9uIGJ2ZShsLGMsZixwKXtfWygwfGFbKGw9MHxhWzE2MCsoMHxh''@;'; put 'put ''WzE2KyhsfD0wKT4+Ml0pPj4yXSkrKChmPTB8YVsxMjArKDB8YVsxNisoZnw9MCk+PjJdKT4+Ml0pPDwyKT4+Ml0pKygoYz0wfGFbMTIwKygwfGFbMTYrKGN8PTApPj4yXSk+PjJdKTw8Myk+PjNdPXA9K3AsX1soMHxhW2wrKGM8PDIpPj4yXSkrKGY8PDMpPj4zXT1wfWZ1bmN0aW9uIGdzZShs''@;'; put 'put ''KXt2YXIgYztoMChsfD0wLDEzNzQ2MCwxNzYsMSksTDcobCksYz0rTWwobCwwfGFbNDcxNzRdLDEsMCksX1sxMjgrKDB8YVtsKzE2Pj4yXSk+PjNdPWN9ZnVuY3Rpb24gdnNlKGwsYyl7Y3w9MDt2YXIgZj0wO2ZvcihmPTB8RHQobHw9MCk7Oyl7aWYoIWYpe2Y9MDticmVha31pZigoMHx0MSgw''@;'; put 'put ''fEhvKGYsYykpKTw8MjQ+PjI0KWJyZWFrO2Y9MHx6dChsLGYpfXJldHVybiAwfGZ9ZnVuY3Rpb24gdFgobCxjKXtsfD0wO3ZhciBBLGIsZj0wLHA9MCxtPTAsdz0wO2ZvcihiPWxlLGxlPWxlKzE2fDAsQT1iLCh3PTA9PSgwfChjfD0wKSkpJiYoZnVuY3Rpb24gRXZlKGwpe2FbKGx8PTApPj4y''@;'; put 'put ''XT0wLGFbbCs0Pj4yXT0wLGFbbCs4Pj4yXT0wfShBKSxjPUEpLGY9MHx3cyhsKTtmOykwfHMyKDB8dGkoZiksMTA4MDA2LDcpP3RYKGYsYyk6KGgwKGYsMTM3NDgzLDI4MCwxKSxuWChjLGYpLHRYKGYsMCkpLGY9MHxFcyhmKTt3JiYoYVsxODArKDB8YVsobT1sKzE2fDApPj4yXSk+PjJdPXA9''@;'; put 'put ''MHxhW0ErOD4+Ml0sMHxwKSYmKHc9MHxWMCgwfGFbQT4+Ml0sNCsocDw8Mil8MCksYVsxODQrKDB8YVttPj4yXSk+PjJdPXcpLGxlPWJ9ZnVuY3Rpb24gYVYobCl7a2MobHw9MCwxMDgyMzAsMTA4MjM2KX1mdW5jdGlvbiBNdmUobCl7aDAobHw9MCwxMzc0NjAsMzA0LDEpfWZ1bmN0aW9uIG5Y''@;'; put 'put ''KGwsYyl7Y3w9MDt2YXIgcCxtLEEsdyxmPTA7YVsoQT04KyhsfD0wKXwwKT4+Ml09Zj0xKygwfGFbQT4+Ml0pfDAsbT0xMCsodz0wfGFbKHA9bCs0fDApPj4yXSl8MCwoMHxmKTwoMHx3KT9sPTB8YVtsPj4yXTooYVtwPj4yXT1tLGY9MHxWMCgwfGFbbD4+Ml0sbTw8MiksYVtsPj4yXT1mLGw9''@;'; put 'put ''ZixmPTB8YVtBPj4yXSksYVtsKyhmPDwyKT4+Ml09Y31mdW5jdGlvbiByWChsLGMpe2x8PTA7dmFyIEEsYixmPTAscD0wLG09MCx3PTA7Zm9yKGI9bGUsbGU9bGUrMTZ8MCxBPWIsKHc9MD09KDB8KGN8PTApKSkmJihmdW5jdGlvbiBvWChsKXthWyhsfD0wKT4+Ml09MCxhW2wrND4+Ml09MCxh''@;'; put 'put ''W2wrOD4+Ml09MH0oQSksYz1BKSxmPTB8d3MobCk7ZjspMHxzMigwfHRpKGYpLDEwODAwNiw3KT9yWChmLGMpOihoMChmLDEzNzQ4MywyODAsMSksZmsoZiksX3NlKGMsZiksclgoZiwwKSksZj0wfEVzKGYpO3cmJihhWzE4MCsoMHxhWyhtPWwrMTZ8MCk+PjJdKT4+Ml09cD0wfGFbQSs4Pj4y''@;'; put 'put ''XSwwfHApJiYodz0wfFYwKDB8YVtBPj4yXSw0KyhwPDwyKXwwKSxhWzE4NCsoMHxhW20+PjJdKT4+Ml09dyksbGU9Yn1mdW5jdGlvbiB3c2UobCxjKXt2YXIgTGUsUmUsc3QsRXQsWnQsY3QsYnQsYW4sU24sSG4sZnIsV2Usa3QsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAs''@;'; put 'put ''Uj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxxZT0wLHJ0PTAsYXQ9MCxTdD0wLEhyPTAsRXI9MDtmb3IoZnI9bGUsbGU9bGUrNDQ4fDAsRXQ9ZnIrNDAwfDAsc3Q9ZnIrMzg0fDAsRXI9ZnIrMzQ0fDAsSHI9ZnIrMzA0fDAsU3Q9ZnIrMTkyfDAsUj1mcis3MnwwLGY9ZnIrNjR8MCxj''@;'; put 'put ''dD1mciszMnwwLGJ0PWZyLFdlPWZyKzQxNnwwLE9lPWZyKzMyOHwwLFJlPWZyKzI4OHwwLGFuPWZyKzIzMnwwLFNuPWZyKzE3NnwwLEhuPWZyKzEzNnwwLFp0PWZyKzgwfDAsRD0wfGFbNjArKGx8PTApPj4yXSxrdD1sKzE2fDAsbT0xKyhjfD0wKXwwLGY9MSxwPTA7ISgoMHxmKT4oMHxhWzE4''@;'; put 'put ''MCsoQT0wfGFba3Q+PjJdKT4+Ml0pKTspd3NlKGF0PTB8YVsoMHxhW0ErMTg0Pj4yXSkrKGY8PDIpPj4yXSxtKSxmPWYrMXwwLHA9KDB8R28oYXQpKStwfDA7aWYoRz0oMHxHbyhsKSktcHwwLChMZT0wPT0oMHwoYXQ9KDB8YVsxODArKGY9MHxhW2t0Pj4yXSk+PjJdKStHfDApKSkmJjA9PSgw''@;'; put 'put ''fGFbZisxMj4+Ml0pKWFbKEVyPWYrMTZ8MCk+PjJdPTAsYVtFcis0Pj4yXT0wLGFbRXIrOD4+Ml09MCxhW0VyKzEyPj4yXT0wLF9bZis0MD4+M109MTgsX1tmKzMyPj4zXT0xODtlbHNle2Y9V2UrMTZ8MDtkb3tpZigoMHxhNyhsLDQsNCxXZSkpPj4+MD49Myl7aWYoND09KDB8YVtmPj4yXSkm''@;'; put 'put ''JjAhPSgyJmFbV2UrMjg+PjJdfDApKXtpZigwIT0oMHwocD0wfHNpKEQsMCw5OTE5MCwwKSkpfDAhPSgwfChmPTB8c2koRCwxLDk5MTkwLDApKSkpe2FbV2UrMjQ+PjJdPTB8dnIoYXQ8PDIpO2JyZWFrfWFbUj4+Ml09MHx0aShsKSwkcigwLDkwNTc3LFIpLGY9MCxwPTA7YnJlYWt9Zj0wLHA9''@;'; put 'put ''MH1lbHNlIGFbZj4+Ml09MyxmPTAscD0wfXdoaWxlKDApO2ZvcihxZT0wfHZyKGF0PDw1KSxydD0wfHZyKGF0PDwyKSxnZT1XZSsyNHwwLEQ9MCE9KDB8cCkscGU9MCxBPTE7ISgoMHxBKT4oMHxhWzE4MCsobT0wfGFba3Q+PjJdKT4+Ml0pKTspYVsoYmU9cWUrKHBlPDw1KXwwKT4+Ml09YVso''@;'; put 'put ''cT0xNisoMHxhWzE2KyhtPTB8YVsoMHxhW20rMTg0Pj4yXSkrKEE8PDIpPj4yXSk+PjJdKXwwKT4+Ml0sYVtiZSs0Pj4yXT1hW3ErND4+Ml0sYVtiZSs4Pj4yXT1hW3ErOD4+Ml0sYVtiZSsxMj4+Ml09YVtxKzEyPj4yXSxhW2JlKzE2Pj4yXT1hW3ErMTY+PjJdLGFbYmUrMjA+PjJdPWFbcSsy''@;'; put 'put ''MD4+Ml0sYVtiZSsyND4+Ml09YVtxKzI0Pj4yXSxhW2JlKzI4Pj4yXT1hW3ErMjg+PjJdLEQmMCE9KDB8YVtnZT4+Ml0pJiYoYmU9MHxlcyhtLHAsMCwwKSxhWygwfGFbZ2U+PjJdKSsocGU8PDIpPj4yXT1iZSksYVtydCsocGU8PDIpPj4yXT1tLHBlPXBlKzF8MCxBPUErMXwwO2U6ZG97aWYo''@;'; put 'put ''KDB8Ryk+MClmb3IoUj1jdCsxNnwwLEc9Y3QrMjR8MCxxPTAhPSgwfGYpLEQ9MHxEdChsKSxwPXBlOzspe2lmKCFEKWJyZWFrIGU7MHxhWyhBPTExMisobT0wfGFbRCsxNj4+Ml0pfDApPj4yXXx8KGFbQT4+Ml09bCxhW2N0Pj4yXT0wLGFbY3QrND4+Ml09MCxhW2N0Kzg+PjJdPTAsYVtjdCsx''@;'; put 'put ''Mj4+Ml09MCxfW1I+PjNdPStfW20rOTY+PjNdKyArX1ttKzg4Pj4zXSxfW0c+PjNdPStfW20rODA+PjNdLGFbKGJlPXFlKyhwPDw1KXwwKT4+Ml09YVtjdD4+Ml0sYVtiZSs0Pj4yXT1hW2N0KzQ+PjJdLGFbYmUrOD4+Ml09YVtjdCs4Pj4yXSxhW2JlKzEyPj4yXT1hW2N0KzEyPj4yXSxhW2Jl''@;'; put 'put ''KzE2Pj4yXT1hW2N0KzE2Pj4yXSxhW2JlKzIwPj4yXT1hW2N0KzIwPj4yXSxhW2JlKzI0Pj4yXT1hW2N0KzI0Pj4yXSxhW2JlKzI4Pj4yXT1hW2N0KzI4Pj4yXSxxJjAhPSgwfGFbZ2U+PjJdKSYmKGJlPTB8ZXMoRCxmLDAsMCksYVsoMHxhW2dlPj4yXSkrKHA8PDIpPj4yXT1iZSksYVtydCso''@;'; put 'put ''cDw8Mik+PjJdPUQscD1wKzF8MCksRD0wfHp0KGwsRCl9fXdoaWxlKDApO2ZvcihiZT0wfGZ1bmN0aW9uIHNXKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDtlOmRve2lmKCgwfGwpPDEpbD0wO2Vsc2Ugc3dpdGNoKDB8YVtmKzE2Pj4yXSl7Y2FzZSA0Omw9MHxpVyhsLGMsZik7YnJlYWsgZTtjYXNl''@;'; put 'put ''IDM6bD0wfHVXKGwsYyxmKTticmVhayBlO2RlZmF1bHQ6bD0wO2JyZWFrIGV9fXdoaWxlKDApO3JldHVybiAwfGx9KGF0LHFlLFdlKSwwfChmPTB8YVtnZT4+Ml0pJiZGdChmKSxpWChidCwyMTQ3NDgzNjQ3LDIxNDc0ODM2NDcpLGdlPWJ0KzE2fDAsaVgoT2UsLTIxNDc0ODM2NDcsLTIxNDc0''@;'; put 'put ''ODM2NDcpLGFbZ2U+PjJdPWFbT2U+PjJdLGFbZ2UrND4+Ml09YVtPZSs0Pj4yXSxhW2dlKzg+PjJdPWFbT2UrOD4+Ml0sYVtnZSsxMj4+Ml09YVtPZSsxMj4+Ml0sQT1jdCsxNnwwLEQ9Y3QrOHwwLFI9Y3QrMjR8MCxHPWJ0Kzh8MCxxPWJ0KzI0fDAscGU9MHxhWzE1NzEyXSxmPTA7ISgoMHxm''@;'; put 'put ''KT49KDB8YXQpKTspYj0rKDB8YVtiZSsoZjw8Myk+PjJdKSxNPSsoMHxhW2JlKyhmPDwzKSs0Pj4yXSksYVtjdD4+Ml09YVsocD1xZSsoZjw8NSl8MCk+PjJdLGFbY3QrND4+Ml09YVtwKzQ+PjJdLGFbY3QrOD4+Ml09YVtwKzg+PjJdLGFbY3QrMTI+PjJdPWFbcCsxMj4+Ml0sYVtjdCsxNj4+''@;'; put 'put ''Ml09YVtwKzE2Pj4yXSxhW2N0KzIwPj4yXT1hW3ArMjA+PjJdLGFbY3QrMjQ+PjJdPWFbcCsyND4+Ml0sYVtjdCsyOD4+Ml09YVtwKzI4Pj4yXSxfW2N0Pj4zXT13PStfW2N0Pj4zXStiLF9bQT4+M109Yj0rX1tBPj4zXStiLF9bRD4+M109az0rX1tEPj4zXStNLF9bUj4+M109TT0rX1tSPj4z''@;'; put 'put ''XStNLF9bYnQ+PjNdPStfWygrX1tidD4+M108dz9idDpjdCk+PjNdLF9bRz4+M109K19bKCtfW0c+PjNdPGs/YnQ6Y3QpKzg+PjNdLF9bZ2U+PjNdPStfWygrX1tnZT4+M10+Yj9idDpjdCkrMTY+PjNdLF9bcT4+M109K19bKCtfW3E+PjNdPk0/YnQ6Y3QpKzI0Pj4zXSxtPTE2KyhwPTB8YVty''@;'; put 'put ''dCsoZjw8Mik+PjJdKXwwLCgwfGYpPCgwfGFbMTgwKygwfGFba3Q+PjJdKT4+Ml0pPyhhWyhPZT0xNisoMHxhW20+PjJdKXwwKT4+Ml09YVtjdD4+Ml0sYVtPZSs0Pj4yXT1hW2N0KzQ+PjJdLGFbT2UrOD4+Ml09YVtjdCs4Pj4yXSxhW09lKzEyPj4yXT1hW2N0KzEyPj4yXSxhW09lKzE2Pj4y''@;'; put 'put ''XT1hW2N0KzE2Pj4yXSxhW09lKzIwPj4yXT1hW2N0KzIwPj4yXSxhW09lKzI0Pj4yXT1hW2N0KzI0Pj4yXSxhW09lKzI4Pj4yXT1hW2N0KzI4Pj4yXSk6KE9lPTE2KygwfGFbbT4+Ml0pfDAsYVtzdD4+Ml09YVtjdD4+Ml0sYVtzdCs0Pj4yXT1hW2N0KzQ+PjJdLGFbc3QrOD4+Ml09YVtjdCs4''@;'; put 'put ''Pj4yXSxhW3N0KzEyPj4yXT1hW2N0KzEyPj4yXSxhW0V0Pj4yXT1hW0E+PjJdLGFbRXQrND4+Ml09YVtBKzQ+PjJdLGFbRXQrOD4+Ml09YVtBKzg+PjJdLGFbRXQrMTI+PjJdPWFbQSsxMj4+Ml0sYnNlKFJlLHN0LEV0KSxhW09lPj4yXT1hW1JlPj4yXSxhW09lKzQ+PjJdPWFbUmUrND4+Ml0s''@;'; put 'put ''YVtPZSs4Pj4yXT1hW1JlKzg+PjJdLGFbT2UrMTI+PjJdPWFbUmUrMTI+PjJdKSxmPWYrMXwwO2ZvcigwfChmPTB8YVsxMisocD0wfGFba3Q+PjJdKT4+Ml0pJiYodz0rX1tmKzI0Pj4zXSxMZT8oYj0rX1tmKzMyPj4zXSxhW2J0Pj4yXT0wLGFbYnQrND4+Ml09MCxhW2J0Kzg+PjJdPTAsYVti''@;'; put 'put ''dCsxMj4+Ml09MCxfW2dlPj4zXT13LF9bcT4+M109YixiPTAsaz13KTooYj0rX1tidD4+M10saz0rX1tnZT4+M10pLHc9LjUqKE09dy0oay1iKSksTT4wJiYoX1tidD4+M109Yi13LF9bZ2U+PjNdPWsrdykpLF9bYnQ+PjNdPWI9K19bYnQ+PjNdLSh3PSgwfGMpPjA/LjUqKygoMHxhW1dlKzg+''@;'; put 'put ''PjJdKT4+PjApOjApLF9bZ2U+PjNdPWs9K19bZ2U+PjNdK3csX1tHPj4zXT1NPS13LStfW3ArNTY+PjNdKyArX1tHPj4zXSxfW3E+PjNdPXc9K19bcCs4OD4+M10rdysgK19bcT4+M10sZj0wOyEoKDB8Zik+PSgwfGF0KSk7KW09MTYrKHA9MHxhW3J0KyhmPDwyKT4+Ml0pfDAsKDB8Zik8KDB8''@;'; put 'put ''YVsxODArKDB8YVtrdD4+Ml0pPj4yXSk/KGFbY3Q+PjJdPWFbKFN0PTE2KygwfGFbbT4+Ml0pfDApPj4yXSxhW2N0KzQ+PjJdPWFbU3QrND4+Ml0sYVtjdCs4Pj4yXT1hW1N0Kzg+PjJdLGFbY3QrMTI+PjJdPWFbU3QrMTI+PjJdLGFbY3QrMTY+PjJdPWFbU3QrMTY+PjJdLGFbY3QrMjA+PjJd''@;'; put 'put ''PWFbU3QrMjA+PjJdLGFbY3QrMjQ+PjJdPWFbU3QrMjQ+PjJdLGFbY3QrMjg+PjJdPWFbU3QrMjg+PjJdLGFbc3Q+PjJdPWFbU3Q+PjJdLGFbc3QrND4+Ml09YVtTdCs0Pj4yXSxhW3N0Kzg+PjJdPWFbU3QrOD4+Ml0sYVtzdCsxMj4+Ml09YVtTdCsxMj4+Ml0sYVtFdD4+Ml09YVtidD4+Ml0s''@;'; put 'put ''YVtFdCs0Pj4yXT1hW2J0KzQ+PjJdLGFbRXQrOD4+Ml09YVtidCs4Pj4yXSxhW0V0KzEyPj4yXT1hW2J0KzEyPj4yXSxINyhjdCxzdCxFdCksYVtzdD4+Ml09YVtBPj4yXSxhW3N0KzQ+PjJdPWFbQSs0Pj4yXSxhW3N0Kzg+PjJdPWFbQSs4Pj4yXSxhW3N0KzEyPj4yXT1hW0ErMTI+PjJdLGFb''@;'; put 'put ''RXQ+PjJdPWFbYnQ+PjJdLGFbRXQrND4+Ml09YVtidCs0Pj4yXSxhW0V0Kzg+PjJdPWFbYnQrOD4+Ml0sYVtFdCsxMj4+Ml09YVtidCsxMj4+Ml0sSDcoYW4sc3QsRXQpLGFbQT4+Ml09YVthbj4+Ml0sYVtBKzQ+PjJdPWFbYW4rND4+Ml0sYVtBKzg+PjJdPWFbYW4rOD4+Ml0sYVtBKzEyPj4y''@;'; put 'put ''XT1hW2FuKzEyPj4yXSxhWyhTdD0xNisoMHxhW20+PjJdKXwwKT4+Ml09YVtjdD4+Ml0sYVtTdCs0Pj4yXT1hW2N0KzQ+PjJdLGFbU3QrOD4+Ml09YVtjdCs4Pj4yXSxhW1N0KzEyPj4yXT1hW2N0KzEyPj4yXSxhW1N0KzE2Pj4yXT1hW2N0KzE2Pj4yXSxhW1N0KzIwPj4yXT1hW2N0KzIwPj4y''@;'; put 'put ''XSxhW1N0KzI0Pj4yXT1hW2N0KzI0Pj4yXSxhW1N0KzI4Pj4yXT1hW2N0KzI4Pj4yXSk6KGFbc3Q+PjJdPWFbKFN0PTE2KygwfGFbbT4+Ml0pfDApPj4yXSxhW3N0KzQ+PjJdPWFbU3QrND4+Ml0sYVtzdCs4Pj4yXT1hW1N0Kzg+PjJdLGFbc3QrMTI+PjJdPWFbU3QrMTI+PjJdLGFbRXQ+PjJd''@;'; put 'put ''PWFbYnQ+PjJdLGFbRXQrND4+Ml09YVtidCs0Pj4yXSxhW0V0Kzg+PjJdPWFbYnQrOD4+Ml0sYVtFdCsxMj4+Ml09YVtidCsxMj4+Ml0sSDcoU24sc3QsRXQpLGFbU3Q+PjJdPWFbU24+PjJdLGFbU3QrND4+Ml09YVtTbis0Pj4yXSxhW1N0Kzg+PjJdPWFbU24rOD4+Ml0sYVtTdCsxMj4+Ml09''@;'; put 'put ''YVtTbisxMj4+Ml0pLGY9ZisxfDA7YVtzdD4+Ml09YVtnZT4+Ml0sYVtzdCs0Pj4yXT1hW2dlKzQ+PjJdLGFbc3QrOD4+Ml09YVtnZSs4Pj4yXSxhW3N0KzEyPj4yXT1hW2dlKzEyPj4yXSxhW0V0Pj4yXT1hW2J0Pj4yXSxhW0V0KzQ+PjJdPWFbYnQrND4+Ml0sYVtFdCs4Pj4yXT1hW2J0Kzg+''@;'; put 'put ''PjJdLGFbRXQrMTI+PjJdPWFbYnQrMTI+PjJdLEg3KEhuLHN0LEV0KSxhW2dlPj4yXT1hW0huPj4yXSxhW2dlKzQ+PjJdPWFbSG4rND4+Ml0sYVtnZSs4Pj4yXT1hW0huKzg+PjJdLGFbZ2UrMTI+PjJdPWFbSG4rMTI+PjJdLGFbc3Q+PjJdPWFbYnQ+PjJdLGFbc3QrND4+Ml09YVtidCs0Pj4y''@;'; put 'put ''XSxhW3N0Kzg+PjJdPWFbYnQrOD4+Ml0sYVtzdCsxMj4+Ml09YVtidCsxMj4+Ml0sYVtFdD4+Ml09YVtidD4+Ml0sYVtFdCs0Pj4yXT1hW2J0KzQ+PjJdLGFbRXQrOD4+Ml09YVtidCs4Pj4yXSxhW0V0KzEyPj4yXT1hW2J0KzEyPj4yXSxINyhadCxzdCxFdCksYVtidD4+Ml09YVtadD4+Ml0s''@;'; put 'put ''YVtidCs0Pj4yXT1hW1p0KzQ+PjJdLGFbYnQrOD4+Ml09YVtadCs4Pj4yXSxhW2J0KzEyPj4yXT1hW1p0KzEyPj4yXSxhWyhIcj0xNisoMHxhW2t0Pj4yXSl8MCk+PjJdPWFbYnQ+PjJdLGFbSHIrND4+Ml09YVtidCs0Pj4yXSxhW0hyKzg+PjJdPWFbYnQrOD4+Ml0sYVtIcisxMj4+Ml09YVti''@;'; put 'put ''dCsxMj4+Ml0sYVtIcisxNj4+Ml09YVtidCsxNj4+Ml0sYVtIcisyMD4+Ml09YVtidCsyMD4+Ml0sYVtIcisyND4+Ml09YVtidCsyND4+Ml0sYVtIcisyOD4+Ml09YVtidCsyOD4+Ml0sRnQocWUpLEZ0KHJ0KSxGdChiZSl9bGU9ZnJ9ZnVuY3Rpb24gbFYobCxjKXt2YXIgRyxxLHBlLGJlLGY9''@;'; put 'put ''MCxwPTAsbT0wLEE9MCx3PTAsaz0wLE09MCxEPTAsUj0wLE9lPTA7YmU9bGUsbGU9bGUrODB8MCx3PWJlKzh8MCxmPWJlLEc9K19bMTYrKFI9MHxhWyhwZT0xNisobHw9MCl8MCk+PjJdKT4+M10scT0rX1tSKzI0Pj4zXSxSPTAhPSgwfChjfD0wKSk7ZTpkb3tpZihSKWZvcihmPTB8RHQobCks''@;'; put 'put ''cD0wfGFbMTU3MTJdOzspe2lmKCFmKWJyZWFrIGU7KDB8YVsxMTIrKEE9MHxhWyhtPWYrMTZ8MCk+PjJdKT4+Ml0pPT0oMHxsKSYmKF9bKE9lPUErMTZ8MCk+PjNdPStfW09lPj4zXStHLF9bKEE9QSsyNHwwKT4+M109K19bQT4+M10rcSwhMSkmJihxNihjKSxPZT0wfHRpKGYpLE09K19bMTYr''@;'; put 'put ''KEE9MHxhW20+PjJdKT4+M10sRD0rX1tBKzI0Pj4zXSxhW3c+PjJdPU9lLF9bdys4Pj4zXT1NLF9bdysxNj4+M109RCxUMChwLDkwNTQ0LHcpKSxmPTB8enQobCxmKX1lbHNlIHA9MHxhWzE1NzEyXX13aGlsZSgwKTtmb3Iodz1jKzF8MCxsPTE7ISgoMHxsKT4oMHxhWzE4MCsoZj0wfGFbcGU+''@;'; put 'put ''PjJdKT4+Ml0pKTspQT0wfGFbKDB8YVtmKzE4ND4+Ml0pKyhsPDwyKT4+Ml0sUiYmKGs9K19bMjQrKGY9MHxhWyhtPUErMTZ8MCk+PjJdKT4+M10rcSxNPStfW2YrMzI+PjNdK0csRD0rX1tmKzQwPj4zXStxLF9bZisxNj4+M109K19bZisxNj4+M10rRyxfW2YrMjQ+PjNdPWssX1tmKzMyPj4z''@;'; put 'put ''XT1NLF9bZis0MD4+M109RCksbFYoQSx3KSxsPWwrMXwwO2xlPWJlfWZ1bmN0aW9uIHE2KGwpe3ZhciBjO2ZvcihsfD0wLGM9MHxhWzE1NzEyXTshKCgwfGwpPD0wKTspX3UoOTA1NzQsYyksbD1sKy0xfDB9ZnVuY3Rpb24gaVgobCxjLGYpe2Y9K2YsX1sobHw9MCk+PjNdPWM9K2MsX1tsKzg+''@;'; put 'put ''PjNdPWZ9ZnVuY3Rpb24gYnNlKGwsYyxmKXt2YXIgcDtwPS41KigrX1s4KyhmfD0wKT4+M10rICtfWzgrKGN8PTApPj4zXSksX1sobHw9MCk+PjNdPS41KigrX1tmPj4zXSsgK19bYz4+M10pLF9bbCs4Pj4zXT1wfWZ1bmN0aW9uIEg3KGwsYyxmKXt2YXIgcDtwPStfWzgrKGN8PTApPj4zXS0r''@;'; put 'put ''X1s4KyhmfD0wKT4+M10sX1sobHw9MCk+PjNdPStfW2M+PjNdLStfW2Y+PjNdLF9bbCs4Pj4zXT1wfWZ1bmN0aW9uIF9zZShsLGMpe2N8PTA7dmFyIHAsbSxBLHcsZj0wO2FbKEE9OCsobHw9MCl8MCk+PjJdPWY9MSsoMHxhW0E+PjJdKXwwLG09MTArKHc9MHxhWyhwPWwrNHwwKT4+Ml0pfDAs''@;'; put 'put ''KDB8Zik8KDB8dyk/bD0wfGFbbD4+Ml06KGFbcD4+Ml09bSxmPTB8VjAoMHxhW2w+PjJdLG08PDIpLGFbbD4+Ml09ZixsPWYsZj0wfGFbQT4+Ml0pLGFbbCsoZjw8Mik+PjJdPWN9ZnVuY3Rpb24gbFgobCl7dmFyIGMsZj0wLHA9MDtmb3IoYz0xNisobHw9MCl8MCxsPTE7Zj0wfGFbMTg0Kyhw''@;'; put 'put ''PTB8YVtjPj4yXSk+PjJdLCEoKDB8bCk+KDB8YVtwKzE4MD4+Ml0pKTspSWMoMHxhWzEyKygwfGFbMTYrKHA9MHxhW2YrKGw8PDIpPj4yXSk+PjJdKT4+Ml0pLGxYKHApLGw9bCsxfDA7RnQoZil9ZnVuY3Rpb24ga3NlKGwpe3ZhciBjO2dEKGx8PTApLGM9MHx2cigoMHxoclsxNzYrKDB8YVsx''@;'; put 'put ''NisoMHxjcihsKSk+PjJdKT4+MV0pPDwzKSxhWzEzMisoMHxhW2wrMTY+PjJdKT4+Ml09YyxUeShsLDEmYVsxMTYrKDB8YVsxNisoMHxjcihsKSk+PjJdKT4+Ml0pfWZ1bmN0aW9uIFNzZShsLGMpe2N8PTA7dmFyIGYscD0wO2gwKGx8PTAsMTM3NDYwLDE3NiwxKSxwPStNbChsLDB8YVs0NzE3''@;'; put 'put ''NF0sMSwwKSxfWzEyOCsoMHxhWyhmPWwrMTZ8MCk+PjJdKT4+M109cCxwPStNbChsLGMsK19bMTM3MV0sMCksX1sxMzYrKDB8YVtmPj4yXSk+PjNdPXAsTDcobCl9ZnVuY3Rpb24gc1gobCl7dmFyIEEsYz0wLGY9MCxwPTAsbT0wO2ZvcihBPTE2KyhsfD0wKXwwLG09MTtjPTB8YVsxODQrKHA9''@;'; put 'put ''MHxhW0E+PjJdKT4+Ml0sISgoMHxtKT4oMHxhW3ArMTgwPj4yXSkpOylJYygwfGFbMTIrKDB8YVsoYz0xNisocD0wfGFbYysobTw8Mik+PjJdKXwwKT4+Ml0pPj4yXSksMHwoZj0wfGFbMTQwKygwfGFbYz4+Ml0pPj4yXSkmJihGdCgwfGFbZj4+Ml0pLEZ0KDB8YVsxNDArKDB8YVtjPj4yXSk+''@;'; put 'put ''PjJdKSksc1gocCksbT1tKzF8MDtGdChjKSwoMHxkaShsKSkhPSgwfGwpJiZIaShsLDEzNzQ4Myl9ZnVuY3Rpb24gVEQobCxjLGYpe2x8PTAsZnw9MDt2YXIgbSxiLGssTSxwPTAsQT0wLHc9MCxEPTAsUj0wLEc9MDtmb3IoTT1sZSxsZT1sZSsxNnwwLGI9TSwoaz0wPT0oMHwoY3w9MCkpKSYm''@;'; put 'put ''KGZ1bmN0aW9uIE43KGwpe2FbKGx8PTApPj4yXT0wLGFbbCs0Pj4yXT0wLGFbbCs4Pj4yXT0wfShiKSxjPWIpLG09ZisxNnwwLHA9MHx3cyhsKTtwOykwfHMyKDB8dGkocCksMTA4MDA2LDcpP1REKHAsYyxmKTooaDAocCwxMzc0ODMsMjgwLDEpLEQ9MHx2cig1NiksYVsxNDArKEc9MHxhW3Ar''@;'; put 'put ''MTY+PjJdKT4+Ml09RCxpdFtHKzE3Nj4+MV09MHxpdFsxNzYrKFI9MHxhW20+PjJdKT4+MV0sYVtEKzQ0Pj4yXT0xKygwfGFbNDQrKDB8YVtSKzE0MD4+Ml0pPj4yXSksYVtEKzQ4Pj4yXT1mLHNWKGMscCksVEQocCwwLHApKSxwPTB8RXMocCk7ayYmKGFbMTgwKygwfGFbKHc9bCsxNnwwKT4+''@;'; put 'put ''Ml0pPj4yXT1BPTB8YVtiKzg+PjJdLDB8QSkmJihHPTB8VjAoMHxhW2I+PjJdLDQrKEE8PDIpfDApLGFbMTg0KygwfGFbdz4+Ml0pPj4yXT1HKSxsZT1NfWZ1bmN0aW9uIHNWKGwsYyl7Y3w9MDt2YXIgcCxtLEEsdyxmPTA7YVsoQT04KyhsfD0wKXwwKT4+Ml09Zj0xKygwfGFbQT4+Ml0pfDAs''@;'; put 'put ''bT0xMCsodz0wfGFbKHA9bCs0fDApPj4yXSl8MCwoMHxmKTwoMHx3KT9sPTB8YVtsPj4yXTooYVtwPj4yXT1tLGY9MHxWMCgwfGFbbD4+Ml0sbTw8MiksYVtsPj4yXT1mLGw9ZixmPTB8YVtBPj4yXSksYVtsKyhmPDwyKT4+Ml09Y31mdW5jdGlvbiBjVihsLGMpe2N8PTA7dmFyIGssTSxSLEcs''@;'; put 'put ''cGUsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsRD0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MDtmb3IocGU9bGUsbGU9bGUrNjR8MCxmPXBlKzQwfDAsRD1wZSs1NnwwLE09cGUrNTJ8MCxrPXBlLGY9MHxEdChsfD0wKTtmOylhWzE2NCsoMHxhW2YrMTY+PjJdKT4+Ml09MCxmPTB8enQobCxm''@;'; put 'put ''KTtmb3IoUj0wfGZ1bmN0aW9uIEoxKGwsYyl7bHw9MDt2YXIgRCxSLEcsUmUsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxMZT0wO2ZvcihSZT1sZSxsZT1sZSsxNjB8MCxxPVJlKzI0fDAscGU9UmUrOHwwLHA9UmUsZj1SZSs1NnwwLGFb''@;'; put 'put ''KE9lPTE2KyhjfD0wKXwwKT4+Ml09MSsoTGU9MHxhW09lPj4yXSksYVtxPj4yXT1MZSxvbyhmLDkwNzk2LHEpLGZlW3E+PjBdPTB8ZmVbMTg1ODhdLGZlW3ErMT4+MF09MHxmZVsxODU4OV0sZmVbcSsyPj4wXT0wfGZlWzE4NTkwXSxmZVtxKzM+PjBdPTB8ZmVbMTg1OTFdLGgwKExlPTB8b2Mo''@;'; put 'put ''OTExNTYscSwwKSwxMzc0ODMsMjgwLDEpLGJlPTB8dnIoNTYpLGFbMTQwKyhNPTB8YVsoT2U9TGUrMTZ8MCk+PjJdKT4+Ml09YmUsaXRbTSsxNzY+PjFdPTB8aXRbMTc2KygwfGFbKGJlPWwrMTZ8MCk+PjJdKT4+MV0sZlgobCxMZSw5MjUwNyksZlgobCxMZSw5MzExMiksZlgobCxMZSw5MTIw''@;'; put 'put ''MiksTT1jKzR8MCxEPXErMTZ8MCxSPXErOHwwLEc9cSsyNHwwLEE9MCxrPTE7ISgoMHxrKT4oMHxhWzE4MCsoZj0wfGFbYmU+PjJdKT4+Ml0pKTspe2ZvcihhW3E+PjJdPWFbMzMyXSxhW3ErND4+Ml09YVszMzNdLGFbcSs4Pj4yXT1hWzMzNF0sYVtxKzEyPj4yXT1hWzMzNV0sYVtxKzE2Pj4y''@;'; put 'put ''XT1hWzMzNl0sYVtxKzIwPj4yXT1hWzMzN10sYVtxKzI0Pj4yXT1hWzMzOF0sYVtxKzI4Pj4yXT1hWzMzOV0sZmsocD0wfGFbKDB8YVtmKzE4ND4+Ml0pKyhrPDwyKT4+Ml0pLG09MHxUZihMZSwwfHRpKHApKSxhWzIxMisoZj0wfGFbKHc9bSsxNnwwKT4+Ml0pPj4yXT1wLGI9QSsxfDAsYVtm''@;'; put 'put ''KzEyMD4+Ml09QSwwfGFbTT4+Ml0mJlJ2ZShwLG0sYyxxKSxmPTB8RHQocCk7ZjspYVsxNjQrKDB8YVtmKzE2Pj4yXSk+PjJdPW0sZj0wfHp0KHAsZik7MHxmZVsxMTkrKGY9MHxhW3c+PjJdKT4+MF0mJihfWyh3PTB8YVtmKzEzMj4+Ml0pPj4zXT0uNSooK19bRD4+M10rICtfW3E+PjNdKSxf''@;'; put 'put ''W3crOD4+M109LjUqKCtfW0c+PjNdKyArX1tSPj4zXSkpLEE9YixrPWsrMXwwfWZvcih3PTB8RHQobCk7dzspe2lmKDB8YVsxNjQrKHA9MHxhWyhmPXcrMTZ8MCk+PjJdKT4+Ml0pZj1BO2Vsc2V7aWYoMHwocT0wfGFbKG09cCsyMTJ8MCk+PjJdKSYmKDB8cSkhPSgwfGFbNDgrKDB8YVsxNDAr''@;'; put 'put ''KDB8YVtiZT4+Ml0pPj4yXSk+PjJdKSl7Z2U9MTg7YnJlYWt9YVttPj4yXT1sLDB8ZmVbcCsxMTg+PjBdP2Y9QToobT0wfFRmKExlLDB8dGkodykpLGFbMTY0KyhwPTB8YVtmPj4yXSk+PjJdPW0sYVsxMjArKG09MHxhW20rMTY+PjJdKT4+Ml09QSxfW20rMzI+PjNdPStfW3ArMzI+PjNdLF9b''@;'; put 'put ''bSs0MD4+M109K19bcCs0MD4+M10sX1ttKzg4Pj4zXT0rX1twKzg4Pj4zXSxfW20rOTY+PjNdPStfW3ArOTY+PjNdLF9bbSs4MD4+M109K19bcCs4MD4+M10sYVttKzg+PjJdPWFbcCs4Pj4yXSxhW20rMTI+PjJdPWFbcCsxMj4+Ml0sKGY9MHxmZVtwKzExOT4+MF0pPDwyND4+MjQmJihfWyhx''@;'; put 'put ''PTB8YVttKzEzMj4+Ml0pPj4zXT0rX1soYz0wfGFbcCsxMzI+PjJdKT4+M10sX1txKzg+PjNdPStfW2MrOD4+M10sZmVbbSsxMTk+PjBdPWYpLGFbOCsoMHxhW20rMTEyPj4yXSk+PjJdPXcsZj1BKzF8MCl9dz0wfHp0KGwsdyksQT1mfWZvcigxOD09KDB8Z2UpJiYoYz0wfHRpKHcpLHE9MHx0''@;'; put 'put ''aShsKSxnZT0wfHRpKDB8YVsyMTIrKDB8YVtmPj4yXSk+PjJdKSxhW3BlPj4yXT1jLGFbcGUrND4+Ml09cSxhW3BlKzg+PjJdPWdlLCRyKDEsOTA4MjYscGUpLHplKDE4NzIxMiwxKSksYj0wfER0KGwpO2I7KXtmb3IoTT0xNisoaz0wfGFbMTY0KygwfGFbYisxNj4+Ml0pPj4yXSl8MCxtPTB8''@;'; put 'put ''dzAobCxiKTttOykoMHwoZj0wfGFbMTY0KygwfGFbMTYrKDB8YVsoMj09KDMmYVttPj4yXXwwKT9tOm0rLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pKSE9KDB8aykmJihoMCh3PWY+Pj4wPms+Pj4wPzB8S2EoTGUsayxmLDAsMSk6MHxLYShMZSxmLGssMCwxKSwxMzc0NjAsMTc2LDEpLF9bMTM2''@;'; put 'put ''KyhnZT0wfGFbdysxNj4+Ml0pPj4zXT0rX1sxMzYrKHA9MHxhW20rMTY+PjJdKT4+M10sX1tnZSsxMjg+PjNdPStfW3ArMTI4Pj4zXSxhWyhwPTQrKGY9MHxhWzExMisoMHxhW2YrMTY+PjJdKT4+Ml0pfDApPj4yXT0xKygwfGFbcD4+Ml0pLGFbKHBlPTQrKHA9MHxhWzExMisoMHxhW00+PjJd''@;'; put 'put ''KT4+Ml0pfDApPj4yXT0xKygwfGFbcGU+PjJdKSwwfGFbZ2UrMTcyPj4yXXx8KGFbZj4+Ml09MSsoMHxhW2Y+PjJdKSxhW3A+PjJdPTErKDB8YVtwPj4yXSkpLGZWKHcsbSkpLG09MHxTMChsLG0pO2I9MHx6dChsLGIpfWlmKDB8KHA9MHxhWyhmPTB8YVsxNDArKDB8YVtiZT4+Ml0pPj4yXSk+''@;'; put 'put ''PjJdKSl7Zm9yKG09MHx2cigxNisoYVtmKzQ+PjJdPDw0KXwwKSxhW2FbMTQwKygwfGFbT2U+PjJdKT4+Ml0+PjJdPW0sZj0wOzB8YVtwPj4yXTspKGI9MHxhWzE2NCsoMHxhWzE2KygwfGFbcCs0Pj4yXSk+PjJdKT4+Ml0pJiYoQnZlKGwscCksaz0wfFRmKExlLDE5Mzc3MiksYVsxMjArKDB8''@;'; put 'put ''YVsoTT1rKzE2fDApPj4yXSk+PjJdPUEsaDAodz1rPj4+MD5iPj4+MD8wfEthKExlLGIsaywwLDEpOjB8S2EoTGUsayxiLDAsMSksMTM3NDYwLDE3NiwxKSxfWzEzNisoYmU9MHxhW3crMTY+PjJdKT4+M109K19bMTM2KyhwZT0wfGFbMTYrKGdlPTB8YVtwPj4yXSk+PjJdKT4+M10sX1tiZSsx''@;'; put 'put ''Mjg+PjNdPStfW3BlKzEyOD4+M10sZlYodyxnZSksYVsoYmU9NCsoZ2U9MHxhWzExMisoMHxhW00+PjJdKT4+Ml0pfDApPj4yXT0xKygwfGFbYmU+PjJdKSxhWyhwZT00KyhiZT0wfGFbMTEyKygwfGFbYisxNj4+Ml0pPj4yXSl8MCk+PjJdPTErKDB8YVtwZT4+Ml0pLGFbZ2U+PjJdPTErKDB8''@;'; put 'put ''YVtnZT4+Ml0pLGFbYmU+PjJdPTErKDB8YVtiZT4+Ml0pLGFbbSs0Pj4yXT1rLF9bbSs4Pj4zXT0rX1twKzg+PjNdLGFbbT4+Ml09dyxmPWYrMXwwLG09bSsxNnwwLEE9QSsxfDApLHA9cCsxNnwwO2FbNCsoMHxhWzE0MCsoMHxhW09lPj4yXSk+PjJdKT4+Ml09Zn1yZXR1cm4gbGU9UmUsMHxM''@;'; put 'put ''ZX0obCxjKSxHPTB8ZnVuY3Rpb24gRjllKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIGssTSxELFIscD0wLG09MCxBPTAsdz0wLGI9MCxHPTA7Uj1sZSxsZT1sZSsxNjB8MCxEPVIrMTZ8MCxiPVIrOHwwLG09UixrPVIrMjR8MCxNPTB8dnIoMHxHbyhsfD0wKSkscD0wfGFbYVsxNDArKDB8YVsoQT1s''@;'; put 'put ''KzE2fDApPj4yXSk+PjJdPj4yXTtlOmRve2lmKHApZm9yKEc9MHx0aShsKSx3PTB8YVs0NjkyM10sYVttPj4yXT1HLGFbbSs0Pj4yXT13LG9vKGssOTQ2MTIsbSksdz0wfHBzKGwsaywxKSxoMCh3LDEzNzQ4MywyODAsMSksbT0wfHZyKDU2KSxhWzE0MCsoMHxhW3crMTY+PjJdKT4+Ml09bSxh''@;'; put 'put ''W20+PjJdPXAsYVttKzQ+PjJdPWFbNCsoMHxhWzE0MCsoMHxhW0E+PjJdKT4+Ml0pPj4yXTs7KXtpZighKG09MHxhW3ArND4+Ml0pKXttPXcscD0xO2JyZWFrIGV9MHxmZVtNKygwfGFbMTIwKygwfGFbbSsxNj4+Ml0pPj4yXSk+PjBdfHxyaihsLG0sdyxNKSxwPXArMTZ8MH1lbHNlIG09MCxw''@;'; put 'put ''PTB9d2hpbGUoMCk7Zm9yKEE9MCx3PTB8RHQobCk7dzspMD09KDB8ZmVbTSsoMHxhWzEyMCsoRz0wfGFbdysxNj4+Ml0pPj4yXSk+PjBdKSYmMz09KDB8ZmVbRysxMTk+PjBdKSYmKG18fChHPTB8dGkobCksbT0oMHxhWzQ2OTIzXSkrcHwwLGFbYj4+Ml09RyxhW2IrND4+Ml09bSxvbyhrLDk0''@;'; put 'put ''NjEyLGIpLGgwKG09MHxwcyhsLGssMSksMTM3NDgzLDI4MCwxKSxHPTB8dnIoNTYpLGFbMTQwKygwfGFbbSsxNj4+Ml0pPj4yXT1HLHA9cCsxfDApLHJqKGwsdyxtLE0pLEE9MSksdz0wfHp0KGwsdyk7Zm9yKDB8bSYmeEMobSksbT0wfER0KGwpO207KTB8ZmVbTSsoMHxhWzEyMCsoMHxhW20r''@;'; put 'put ''MTY+PjJdKT4+Ml0pPj4wXXx8KGI9MHx0aShsKSxHPSgwfGFbNDY5MjNdKStwfDAsYVtEPj4yXT1iLGFbRCs0Pj4yXT1HLG9vKGssOTQ2MjAsRCksaDAoRz0wfHBzKGwsaywxKSwxMzc0ODMsMjgwLDEpLGI9MHx2cig1NiksYVsxNDArKDB8YVtHKzE2Pj4yXSk+PjJdPWIscmoobCxtLEcsTSks''@;'; put 'put ''eEMoRykscD1wKzF8MCksbT0wfHp0KGwsbSk7Zm9yKEZ0KE0pLGFbNDY5MjNdPSgwfGFbNDY5MjNdKStwLDB8YyYmKGFbYz4+Ml09cCksMHxmJiYoYVtmPj4yXT1BKSxBPXc9MHx2cig0KyhwPDwyKXwwKSxtPTB8d3MobCk7bTspYVtBPj4yXT1tLEE9QSs0fDAsbT0wfEVzKG0pLHA9cCstMXww''@;'; put 'put ''O3JldHVybiBwPyhQcig5NDYyOCw5NDYzOSwxMzQsOTQ2NDYpLDApOihhW0E+PjJdPTAsbGU9UiwwfHcpfShSLEQsTSksZj1HO2I9Zis0fDAscD0wfGFbZj4+Ml07KXtmb3IoRnZlKHAsayksZj0wfER0KHApO2Y7KW09MHx6dChwLGYpLDB8YVsyMTIrKHc9MHxhWyhBPWYrMTZ8MCk+PjJdKT4+''@;'; put 'put ''Ml0/KGNWKE9lPTB8SXZlKGYscCksYyksX1szMisodz0wfGFbQT4+Ml0pPj4zXT1iZT0rX1syNCsoT2U9MHxhWzE0MCsoMHxhW09lKzE2Pj4yXSk+PjJdKT4+M10sX1t3KzQwPj4zXT1nZT0rX1tPZSszMj4+M10sX1t3Kzg4Pj4zXT1iZSo9MzYsX1t3Kzk2Pj4zXT1iZSxfW3crODA+PjNdPTcy''@;'; put 'put ''KmdlLGY9bSk6KDB8YVs4KygwfGFbdysxMTI+PjJdKT4+Ml18fG9pKHAsZiksZj1tKTsoMHxHbyhwKSk8PTF8fCgoMHxhW2M+PjJdKT09KDB8bCkmJnUyZShwKSxwWChwLGspKSxmPWJ9Zm9yKCgwfChmPTB8YVtEPj4yXSkpPD0xPygxPT0oMHxmKSYmaWcoMHxhW0c+PjJdKSxmPTApOigwfGFb''@;'; put 'put ''TT4+Ml0/KHA9MHx2cihmKSxmZVtwPj4wXT0xLGY9MHxhW0Q+PjJdKTpwPTAsYVtjKzQwPj4yXT1wLGY9MHxVZChmLEcsMCxjKzIwfDApLEZ0KHApKSxmdW5jdGlvbiBEdmUobCxjLGYscCxtLEEpe2x8PTAsZnw9MCxwfD0wO3ZhciBIZSxWZSxxZSxydCxXZSx3PTAsYj0wLGs9MCxNPTAsRD0w''@;'; put 'put ''LFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MCxSZT0wLGF0PTAsU3Q9MCxrdD0wLHN0PTAsRXQ9MCxadD0wO1dlPWxlLGxlPWxlKzMyfDAsSGU9V2UrMTZ8MCxydD1XZSxNPTB8YVs4KyhBfD0wKT4+Ml0sYj0wfGFbQSsxMj4+Ml0sVmU9KDB8YVtBPj4yXSk9PSgwfChtfD0w''@;'; put 'put ''KSkscWU9MCE9KDB8KGN8PTApKTtlOmRve2lmKHFlKWlmKEc9MHxhWzE2KygwfGFbZj4+Ml0pPj4yXSxrPStfW0crMTY+PjNdLE09fn4oaysoaz49MD8uNTotLjUpKSxhW3J0Pj4yXT1NLGs9K19bRysyND4+M10sQT1+fihrKyhrPj0wPy41Oi0uNSkpLE9lPXJ0KzR8MCxhW09lPj4yXT1BLGs9''@;'; put 'put ''K19bRyszMj4+M10sRD1+fihrKyhrPj0wPy41Oi0uNSkpLExlPXJ0Kzh8MCxhW0xlPj4yXT1ELGs9K19bRys0MD4+M10sRz1+fihrKyhrPj0wPy41Oi0uNSkpLFJlPXJ0KzEyfDAsYVtSZT4+Ml09RywoMHxjKT4xKWZvcihxPTB8YVtwPj4yXSxiZT0wfGFbcCs0Pj4yXSxNPXErTXwwLGFbcnQ+''@;'; put 'put ''PjJdPU0sYz1iZStBfDAsYVtPZT4+Ml09YyxEPXErRHwwLGFbTGU+PjJdPUQscT1IZSs0fDAscGU9SGUrOHwwLGdlPUhlKzEyfDAsUj1wLEE9ZixiZT1iZStHfDAsRz1jOzspe2lmKEE9QSs0fDAsYj1SKzh8MCxhW1JlPj4yXT1iZSwhKGM9MHxhW0E+PjJdKSl7Yj0wLHBlPUcsZ2U9YmU7YnJl''@;'; put 'put ''YWsgZX1FdD0rX1sxNisoa3Q9MHxhW2MrMTY+PjJdKT4+M10sdz0rX1trdCsyND4+M10saz0rX1trdCszMj4+M10sYVtnZT4+Ml09a3Q9fn4oKFp0PStfW2t0KzQwPj4zXSkrKFp0Pj0wPy41Oi0uNSkpLHN0PTB8YVtSKzEyPj4yXSxhW0hlPj4yXT1TdD0oYz0wfGFbYj4+Ml0pK35+KEV0KyhF''@;'; put 'put ''dD49MD8uNTotLjUpKXwwLGFbcT4+Ml09YXQ9c3Qrfn4odysodz49MD8uNTotLjUpKXwwLGFbcGU+PjJdPWM9Yyt+fihrKyhrPj0wPy41Oi0uNSkpfDAsYVtnZT4+Ml09a3Q9c3Qra3R8MCxhW3J0Pj4yXT1TdD0wfGFbKCgwfE0pPCgwfFN0KT9ydDpIZSk+PjJdLGFbT2U+PjJdPWF0PTB8YVso''@;'; put 'put ''KDB8Ryk8KDB8YXQpP3J0OkhlKSs0Pj4yXSxhW0xlPj4yXT1jPTB8YVsoKDB8RCk+KDB8Yyk/cnQ6SGUpKzg+PjJdLFI9YixiZT0wfGFbKCgwfGJlKT4oMHxrdCk/cnQ6SGUpKzEyPj4yXSxNPVN0LEc9YXQsRD1jfWVsc2UgYj0wLHBlPUEsZ2U9RztlbHNlIGFbcnQ+PjJdPTAsYVtydCs0Pj4y''@;'; put 'put ''XT0wLEQ9MHxlcyhtLE0sNTQsMyksYVtydCs4Pj4yXT1ELGdlPTB8ZXMobSxiLDM2LDMpLGFbcnQrMTI+PjJdPWdlLGI9MSxNPTAscGU9MH13aGlsZSgwKTsoQT0wfGFbMTIrKFI9MHxhWyhjPW0rMTZ8MCk+PjJdKT4+Ml0pPygoMHwoQT1NLUQrfn4oKFp0PStfW0ErMjQ+PjNdKSsoWnQ+PTA/''@;'; put 'put ''LjU6LS41KSl8MCkpPjAmJihhW3J0Pj4yXT1NPU0tKEE+Pj49MSl8MCxhW3J0Kzg+PjJdPUQ9RCtBfDApLEE9MCk6QT1iLFZlfDAhPSgwfEEpPyhiPTAsQT1SKTooYj0wfGVzKGwsMHxhWzQ3MTQ0XSw4LDApLEE9MHxhW2M+PjJdKSxxPWItTXwwLEc9fn4oK19bQSs1Nj4+M10rICsoYi1wZXww''@;'; put 'put ''KSksYVtydD4+Ml09MCxhW3J0KzQ+PjJdPTAsYVtydCs4Pj4yXT1SPXErYitEfDAsYVtydCsxMj4+Ml09Yz1+figrX1tBKzg4Pj4zXSsgKyhiK0d8MCkrICsoMHxnZSkpO2U6ZG97aWYocWUpe0E9cDt0OmZvcig7Oyl7aWYoRD1mKzR8MCwhKGI9MHxhW2Y+PjJdKSlicmVhayBlO2ZvcihBPyhN''@;'; put 'put ''PUErOHwwLGY9KDB8YVtBPj4yXSkrcXwwLEE9KDB8YVtBKzQ+PjJdKStHfDApOihNPTAsZj1xLEE9Ryksaz0uMDEzODg4ODg4ODg4ODg4ODg4KisoMHxmKSx3PS4wMTM4ODg4ODg4ODg4ODg4ODgqKygwfEEpLGY9MHxEdChiKTs7KXtpZighZil7Zj1ELEE9TTtjb250aW51ZSB0fV9bKHN0PTB8''@;'; put 'put ''YVsxMzIrKDB8YVtmKzE2Pj4yXSk+PjJdKT4+M109K19bc3Q+PjNdK2ssX1soc3Q9c3QrOHwwKT4+M109K19bc3Q+PjNdK3csZj0wfHp0KGIsZil9fX19d2hpbGUoMCk7YVsoa3Q9OCsoc3Q9MHxhWzE0MCsoMHxhW2wrMTY+PjJdKT4+Ml0pfDApPj4yXT0wLGFba3QrND4+Ml09MCxhW2t0Kzg+''@;'; put 'put ''PjJdPTAsYVtrdCsxMj4+Ml09MCxfW3N0KzI0Pj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KisoMHxSKSxfW3N0KzMyPj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KisoMHxjKSxsZT1XZX0oUiwwfGFbRD4+Ml0sRyxmLGwsYyksRnQoZikscD0wfER0KFIpO3A7KShmPTB8YVsyMTIrKG09MHxhW3Ar''@;'; put 'put ''MTY+PjJdKT4+Ml0pPyhfWzgrKE9lPTB8YVsxNDArKDB8YVtmKzE2Pj4yXSk+PjJdKT4+M109TGU9K19bKEQ9MHxhW20rMTMyPj4yXSk+PjNdLS41KihSZT0rX1ttKzMyPj4zXSksX1tPZSsxNj4+M109YmU9K19bRCs4Pj4zXS0uNSooZ2U9K19bbSs0MD4+M10pLF9bT2UrMjQ+PjNdPVJlK0xl''@;'; put 'put ''LF9bT2UrMzI+PjNdPWdlK2JlKTowfChmPTB8YVs4KygwfGFbbSsxMTI+PjJdKT4+Ml0pJiYoX1soT2U9MHxhWzEzMisoMHxhW2YrMTY+PjJdKT4+Ml0pPj4zXT0rX1soRD0wfGFbbSsxMzI+PjJdKT4+M10sX1tPZSs4Pj4zXT0rX1tEKzg+PjNdKSxwPTB8enQoUixwKTthWyhPZT04KygwfGFb''@;'; put 'put ''MTQwKygwfGFbbCsxNj4+Ml0pPj4yXSl8MCk+PjJdPWFbKEQ9OCsoMHxhWzE0MCsoMHxhW1IrMTY+PjJdKT4+Ml0pfDApPj4yXSxhW09lKzQ+PjJdPWFbRCs0Pj4yXSxhW09lKzg+PjJdPWFbRCs4Pj4yXSxhW09lKzEyPj4yXT1hW0QrMTI+PjJdLGFbT2UrMTY+PjJdPWFbRCsxNj4+Ml0sYVtP''@;'; put 'put ''ZSsyMD4+Ml09YVtEKzIwPj4yXSxhW09lKzI0Pj4yXT1hW0QrMjQ+PjJdLGFbT2UrMjg+PjJdPWFbRCsyOD4+Ml0sZnVuY3Rpb24gRHNlKGwsYyl7bHw9MCxjfD0wO2Zvcih2YXIgZj0wLHA9MDtmPTB8YVtjPj4yXTspaHMoZiksSGkoZiwxMzc0ODMpLGM9Yys0fDA7Zm9yKDB8KGM9MHxhW2Fb''@;'; put 'put ''MTQwKygwfGFbbCsxNj4+Ml0pPj4yXT4+Ml0pJiZGdChjKSxocyhsKSxIaShsLDEzNzQ4MyksZj0wfER0KGwpO2Y7KXtmb3IocD0wfHp0KGwsZiksYz0wfHcwKGwsZik7YzspRnQoMHxhWzE3MisoMHxhW2MrMTY+PjJdKT4+Ml0pLEhpKGMsMTM3NDYwKSxjPTB8UzAobCxjKTtMdmUoZiksZj1w''@;'; put 'put ''fUMxKGwpfShSLEcpLEZ0KEcpLGxlPXBlfWZ1bmN0aW9uIGNYKGwsYyl7dmFyIG0sQSx3LGY9MCxwPTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wO209K19bOCsoYj0wfGFbMTQwKygwfGFbKHc9MTYrKGx8PTApfDApPj4yXSk+PjJdKT4+M10sQT0rX1tiKzE2Pj4zXSxiPSgwfGwpIT0o''@;'; put 'put ''MHwoY3w9MCkpO2U6ZG97aWYoYilmb3IoZj0wfER0KGwpOzspe2lmKCFmKXtsPTE7YnJlYWsgZX0oMHxhWzIxMisocD0wfGFbZisxNj4+Ml0pPj4yXSk9PSgwfGwpJiYoX1socD0wfGFbcCsxMzI+PjJdKT4+M109K19bcD4+M10rbSxfWyhwPXArOHwwKT4+M109K19bcD4+M10rQSksZj0wfHp0''@;'; put 'put ''KGwsZil9ZWxzZSBsPTF9d2hpbGUoMCk7Zm9yKDshKCgwfGwpPigwfGFbMTgwKyhmPTB8YVt3Pj4yXSk+PjJdKSk7KWY9MHxhWygwfGFbZisxODQ+PjJdKSsobDw8Mik+PjJdLGImJihxPTgrKHA9MHxhWzE0MCsoMHxhW2YrMTY+PjJdKT4+Ml0pfDAsRz0rX1soUj1wKzE2fDApPj4zXStBLEQ9''@;'; put 'put ''K19bKE09cCsyNHwwKT4+M10rbSxrPStfWyhwPXArMzJ8MCk+PjNdK0EsX1txPj4zXT0rX1txPj4zXSttLF9bUj4+M109RyxfW00+PjNdPUQsX1twPj4zXT1rKSxjWChmLGMpLGw9bCsxfDB9ZnVuY3Rpb24gSUQobCl7dmFyIGMscCxtLEEsZj0wO2ZvcihBPTcyKitfWzE2KyhmPTB8YVsxNDAr''@;'; put 'put ''KGw9MHxhWyhjPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSk+PjNdLG09NzIqK19bZisyND4+M10scD03MiorX1tmKzMyPj4zXSxfW2wrMTY+PjNdPTcyKitfW2YrOD4+M10sX1tsKzI0Pj4zXT1BLF9bbCszMj4+M109bSxfW2wrNDA+PjNdPXAsbD0xOyEoKDB8bCk+KDB8YVsxODArKGY9MHxhW2M+''@;'; put 'put ''PjJdKT4+Ml0pKTspSUQoMHxhWygwfGFbZisxODQ+PjJdKSsobDw8Mik+PjJdKSxsPWwrMXwwfWZ1bmN0aW9uIEl2ZShsLGMpe2N8PTA7dmFyIGsscD0wLG09MCxBPTAsdz0wLGI9MCxNPTA7az0wfGFbMjEyKyhNPTB8YVsxNisobHw9MCk+PjJdKT4+Ml0sTT0wfGFbNCsoMHxhW00rMTEyPj4y''@;'; put 'put ''XSk+PjJdO2Rve2lmKDB8TSl7Zm9yKGI9MHx2cigxNisoTTw8NCl8MCksQT04KyhtPTB8RHkobCxjKSl8MCxjPTAscD1tOzB8YVtwPj4yXTspYz0wfE92ZShsLHAsYixjLDB8YVsodz1wKzI0fDApPj4yXT8rX1twKzMyPj4zXTorX1tBPj4zXSs2LjI4MzE4NTMwNzE3OTU4NikscD13O2lmKCgw''@;'; put 'put ''fGMpPT0oMHxNKSl7YVsobD0wfGFbMTQwKygwfGFbaysxNj4+Ml0pPj4yXSk+PjJdPWIsYVtsKzQ+PjJdPU0sRnQobSk7YnJlYWt9UHIoOTA3NDIsOTA3NTIsNzY2LDkwNzYxKX19d2hpbGUoMCk7cmV0dXJuIDB8a31mdW5jdGlvbiBocyhsKXtGdCgwfGFbMTQwKygwfGFbMTYrKGx8PTApPj4y''@;'; put 'put ''XSk+PjJdKX1mdW5jdGlvbiBMdmUobCl7dmFyIGM7RnQoMHxhWzExMisoMHxhWyhjPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXSksRnQoMHxhWzEzMisoMHxhW2M+PjJdKT4+Ml0pLEhpKGwsMTM3NDQ3KX1mdW5jdGlvbiBEeShsLGMpe2N8PTA7dmFyIE0sRCxmPTAscD0wLG09MCxBPTAsdz0wLGI9''@;'; put 'put ''MCxrPTA7Zm9yKEQ9MHx2cigyNCsoMjQqKE09MHxhW2FbMTEyKygwfGFbKGs9MTYrKGx8PTApfDApPj4yXSk+PjJdPj4yXSl8MCl8MCksdz0wLGI9MHxNcyhjLGwpO2I7KSgwfChwPTB8YVsoMj09KDB8KG09MyZhW2I+PjJdKSk/YjpiKy00OHwwKSs0MD4+Ml0pKT09KDB8bCkmJihwPTB8YVso''@;'; put 'put ''Mz09KDB8bSk/YjpiKzQ4fDApKzQwPj4yXSksQT0rX1socD0wfGFbMTMyKygwfGFbcCsxNj4+Ml0pPj4yXSk+PjNdLStfWyhtPTB8YVsxMzIrKDB8YVtrPj4yXSk+PjJdKT4+M10sZj0rX1twKzg+PjNdLStfW20rOD4+M10sYVtEKygyNCp3fDApPj4yXT1iLF9bRCsoMjQqd3wwKSs4Pj4zXT0r''@;'; put 'put ''VWwoK2YsK0EpLF9bRCsoMjQqd3wwKSsxNj4+M109ZipmK0EqQSx3PXcrMXwwLGI9MHxWcyhjLGIsbCk7KDB8dykhPSgwfE0pJiZQcig5MDc3NSw5MDc1Miw2NDIsOTA3ODQpLHgxKEQsTSwyNCw2Nyk7ZTpkb3tpZigoMHxNKT4xKXtiPU0rLTF8MCxwPTA7dDpmb3IoOzspe2lmKCgwfHApPj0o''@;'; put 'put ''MHxiKSlicmVhayBlO2ZvcihBPStfW0QrKDI0KnB8MCkrOD4+M10sdz1tPXArMXwwOyEoKDB8dyk+PSgwfE0pfHwrX1tEKygyNCp3fDApKzg+PjNdIT1BKTspdz13KzF8MDtpZigoMHx3KSE9KDB8bSkpZm9yKGY9KGY9KChmPSgwfHcpPT0oMHxNKT8zLjE0MTU5MjY1MzU4OTc5MzorX1tEKygy''@;'; put 'put ''NCp3fDApKzg+PjNdKS1BKS8rKHctcHwwKSk+LjAzNDkwNjU4NTAzOTg4NjU5Py4wMzQ5MDY1ODUwMzk4ODY1OTpmLEE9MDs7KXtpZigoMHxwKT49KDB8dykpY29udGludWUgdDtfWyhrPUQrKDI0KnB8MCkrOHwwKT4+M109K19baz4+M10rQSxBKz1mLHA9cCsxfDB9ZWxzZSBwPW19fX13aGls''@;'; put 'put ''ZSgwKTtyZXR1cm4gMHxEfWZ1bmN0aW9uIE92ZShsLGMsZixwLG0pe2Z8PTAscHw9MDt2YXIgayxSLEcsQT0wLHc9MCxiPTAsTT0wLEQ9MCxxPTA7Zm9yKFI9KE09MHxpdFsxNjgrKEQ9MHxhWzE2KyhiPTB8YVsoY3w9MCk+PjJdKT4+Ml0pPj4xXSk8PDE2Pj4xNiwoMHwoQT0wfGFbKDI9PSgw''@;'; put 'put ''fCh3PTMmYVtiPj4yXSkpP2I6YistNDh8MCkrNDA+PjJdKSk9PSgwfChsfD0wKSkmJihBPTB8YVsoMz09KDB8dyk/YjpiKzQ4fDApKzQwPj4yXSksbT0obT0oKG09K20pLShHPStfW2MrOD4+M10pKS8rKE08PDE2Pj4xNikpPi4wMzQ5MDY1ODUwMzk4ODY1OT8uMDM0OTA2NTg1MDM5ODg2NTk6''@;'; put 'put ''bSxrPShNPUE+Pj4wPmw+Pj4wKT9tOi1tLGM9TT8xOi0xLGI9MCxBPTB8YVtEKzE3Mj4+Ml0sdz1NP3A6cCstMStSfDAsbT1NP0c6bSorKFIrLTF8MCkrRzshKCgwfGIpPj0oMHxSKSk7KWFbZisodzw8NCk+PjJdPUQ9MHxhW0E+PjJdLGFbZisodzw8NCkrND4+Ml09YVsoKDB8YVsxNjQrKDB8''@;'; put 'put ''YVsxNisoMHxhWyhxPTM9PSgwfChNPTMmYVtEPj4yXSkpP0Q6RCs0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKT09KDB8bCk/cToyPT0oMHxNKT9EOkQrLTQ4fDApKzQwPj4yXSxfW2YrKHc8PDQpKzg+PjNdPW0sYj1iKzF8MCxBPUErNHwwLHc9dytjfDAsbSs9aztyZXR1cm4gUitwfDB9ZnVuY3Rp''@;'; put 'put ''b24gZlgobCxjLGYpe2N8PTA7dmFyIHA9MDtwPTB8c2kobHw9MCwwLGZ8PTAsMCk7ZG97aWYoMHxwKXtpZihsPTB8SG8obCxwKSxwPTB8c2koYywwLGYsMCkpe1ZsKGMscCxsKTticmVha31zaShjLDAsZixsKTticmVha319d2hpbGUoMCl9ZnVuY3Rpb24gVGYobCxjKXt2YXIgZixwO3JldHVy''@;'; put 'put ''biBoMChjPTB8R3IobHw9MCxjfD0wLDEpLDEzNzQ0NywzMDQsMSkscD0wfHZyKDMyKSxhWzExMisoMHxhWyhmPWMrMTZ8MCk+PjJdKT4+Ml09cCxsPTB8UW4oKDB8aHJbMTc2KygwfGFbbCsxNj4+Ml0pPj4xXSk8PDMpLGFbMTMyKygwfGFbZj4+Ml0pPj4yXT1sLDB8Y31mdW5jdGlvbiBSdmUo''@;'; put 'put ''bCxjLGYscCl7Y3w9MCxwfD0wO3ZhciBiLGssTSxELFIsRyxtPTAsQT0wLHc9MDtHPWxlLGxlPWxlKzgwfDAsTT1HKzU2fDAsaz1HKzMyfDAsUj1HLEQ9Rys2NHwwLGI9MHxIbyhsfD0wLEE9MHxhWzQrKGZ8PTApPj4yXSk7ZG97aWYoMHxmZVtiPj4wXSl7aWYoISgoMHxhW2Y+PjJdKT09KDB8''@;'; put 'put ''bCl8fCgwfChmPTB8SG8oMHxrMShsKSxBKSkpIT0oMHxiKSYmMHxaaShiLGYpKSlicmVhaztpZihmZVtEPj4wXT0wLGY9Uis4fDAsQT1SKzE2fDAsdz1SKzI0fDAsYVtrPj4yXT1SLGFbays0Pj4yXT1mLGFbays4Pj4yXT1BLGFbaysxMj4+Ml09dyxhW2srMTY+PjJdPUQsKDB8aWwoYiw5MDkz''@;'; put 'put ''NyxrKSk8PTMpe2FbTT4+Ml09MHx0aShsKSxhW00rND4+Ml09YiwkcigwLDkwOTU1LE0pO2JyZWFrfShtPStfWzIzMjkzXSk+MCYmKF9bUj4+M109K19bUj4+M10vbSxfW2Y+PjNdPStfW2Y+PjNdL20sX1tBPj4zXT0rX1tBPj4zXS9tLF9bdz4+M109K19bdz4+M10vbSksZmVbMTE5KygwfGFb''@;'; put 'put ''YysxNj4+Ml0pPj4wXT0oZj0wfGZlW0Q+PjBdKTw8MjQ+PjI0PT0zMz8zOmY8PDI0Pj4yND09NjM/MjoxLGFbcD4+Ml09YVtSPj4yXSxhW3ArND4+Ml09YVtSKzQ+PjJdLGFbcCs4Pj4yXT1hW1IrOD4+Ml0sYVtwKzEyPj4yXT1hW1IrMTI+PjJdLGFbcCsxNj4+Ml09YVtSKzE2Pj4yXSxhW3Ar''@;'; put 'put ''MjA+PjJdPWFbUisyMD4+Ml0sYVtwKzI0Pj4yXT1hW1IrMjQ+PjJdLGFbcCsyOD4+Ml09YVtSKzI4Pj4yXX19d2hpbGUoMCk7bGU9R31mdW5jdGlvbiBmVihsLGMpe2N8PTA7dmFyIG0sZj0wLHA9MDtsPTB8aXRbMTY4KyhwPTB8YVsobT0xNisobHw9MCl8MCk+PjJdKT4+MV0sKHA9MHxhW3Ar''@;'; put 'put ''MTcyPj4yXSk/KGY9bD1sPDwxNj4+MTYsbD0wfFYwKHAsNCsobDw8Mil8MCkpOihmPWw9bDw8MTY+PjE2LGw9MHxRbig0KyhsPDwyKXwwKSksYVtsKyhmPDwyKT4+Ml09YyxhWzE3MisoYz0wfGFbbT4+Ml0pPj4yXT1sLGl0WyhjPWMrMTY4fDApPj4xXT0xKygwfGl0W2M+PjFdKTw8MTY+PjE2''@;'; put 'put ''fWZ1bmN0aW9uIEJ2ZShsLGMpe3ZhciBwLG0sYixmPTAsQT0wLHc9MCxrPTA7Yj1sZSxsZT1sZSs0OHwwLHc9YisyNHwwLEE9YixtPTB8YVsoMj09KDB8KGY9MyZhWyhwPTB8YVsoY3w9MCk+PjJdKT4+Ml0pKT9wOnArLTQ4fDApKzQwPj4yXSxmPTB8YVsoMz09KDB8Zik/cDpwKzQ4fDApKzQw''@;'; put 'put ''Pj4yXSxrPSg4KyhjPTB8VW8oMHx0aShsfD0wKSkpKyhrPTB8VW8oMHx0aShtKSkpKygwfFVvKDB8dGkoZikpKXwwKT45OTksYz0wfHRpKGwpLGs/KGY9MHx0aShmKSxrPTB8dGkobSksdz0oMHxhW3A+PjJdKT4+PjQsYVtBPj4yXT1jLGFbQSs0Pj4yXT1mLGFbQSs4Pj4yXT1rLGFbKGs9QSsx''@;'; put 'put ''NnwwKT4+Ml09dyxhW2srND4+Ml09MCxvbygxOTM3NzIsOTA4OTUsQSkpOihmPTB8YVsxMjArKDB8YVtmKzE2Pj4yXSk+PjJdLGs9MHxhWzEyMCsoMHxhW20rMTY+PjJdKT4+Ml0sQT0oMHxhW3A+PjJdKT4+PjQsYVt3Pj4yXT1jLGFbdys0Pj4yXT1mLGFbdys4Pj4yXT1rLGFbKGs9dysxNnww''@;'; put 'put ''KT4+Ml09QSxhW2srND4+Ml09MCxvbygxOTM3NzIsOTA5MTQsdykpLGxlPWJ9ZnVuY3Rpb24gRnZlKGwsYyl7dmFyIHAsbSx3LGIsZj0wLEE9MDtiPWxlLGxlPWxlKzE2fDAsZj1iLEE9MHxhW2FbMTQwKygwfGFbMTYrKGx8PTApPj4yXSk+PjJdPj4yXSx3PTB8ZnVuY3Rpb24gT3NlKGwsYyl7''@;'; put 'put ''bHw9MCxjfD0wO3ZhciBwLG0sQSxmPTAsdz0wLGI9MDstMT09K19bMjMyNDNdPyh3PTB8R28obCksX1syMzI0M109LjIqK19bMjMyNDFdKihmPStfWzIzMjQyXSkqK0QwKCsgKygwfHcpKSx3PTEpOih3PTAsZj0rX1syMzI0Ml0pLF9bYys4Pj4zXT0raFYoQT0wfGFbNDY1MDRdKSxfW2MrMTY+''@;'; put 'put ''PjNdPWYsX1tjKzI0Pj4zXT0rX1syMzI0MF0sYVtjPj4yXT1sPShwPTB8YVs0NjQ3OF0pLUF8MCxtPTB8YVs0NjQ3N107ZG97aWYoKDB8bSk+LTEpe2lmKCgwfG0pPD0oMHxBKSl7YVs0NjUwNV09bSxsPTAsYj0xMDticmVha30oMHxtKTw9KDB8cCkmJihhWzQ2NTA1XT1BLGw9bS1BfDAsYj0x''@;'; put 'put ''MCl9ZWxzZSBhWzQ2NTA1XT1BLGI9MTB9d2hpbGUoMCk7cmV0dXJuIDEwPT0oMHxiKSYmKGFbYyszMj4+Ml09bCksMHx3fShsLGN8PTApLGZ1bmN0aW9uIEh2ZShsLGMsZil7bHw9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9''@;'; put 'put ''MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wO2ZvcihMZT0wfEdvKGN8PTApLEhlPTB8YVs0KygwfGFbMTQwKygwfGFbYysxNj4+Ml0pPj4yXSk+PjJdLE9lPTB8RHQoYykscT0wLHBlPTAsbT0wLGI9MCxEPTA7T2U7KTB8ZmVbMTE5KyhwPTB8YVtPZSsxNj4+Ml0pPj4wXT8o''@;'; put 'put ''QT0rX1socD0wfGFbcCsxMzI+PjJdKT4+M10scT8oRD1+figoZ2U9K19bcCs4Pj4zXSk+KFI9KygwfEQpKT9nZTpSKSxwPX5+KEE8KEc9KygwfHBlKSk/QTpHKSxtPX5+KGdlPChiZT0rKDB8bSkpP2dlOmJlKSxiPX5+KEE+KFJlPSsoMHxiKSk/QTpSZSkpOihEPW09fn4rX1twKzg+PjNdLHA9''@;'; put 'put ''Yj1+fkEpLHE9cSsxfDApOnA9cGUsT2U9MHx6dChjLE9lKSxwZT1wO2lmKEE9K19bMjMyNDJdKigrRDAoKyArKExlLUhlfDApKSsxKSxfWzIzMjQ5XT1nZT0uNipBLF9bMjMyNDhdPWdlLDEhPSgwfHEpKWlmKCgwfHEpPjEpe2JlPS41KisoYitwZXwwKSxSZT0uNSorKEQrbXwwKSx3PShNPTEu''@;'; put 'put ''Miooaz0rKEQtbXwwKSkpKihHPTEuMiooUj0rKGItcGV8MCkpKS8oQT0yLjQqQSpnZSk7ZG97aWYodz49MSlfWzIzMjQ4XT13PS42KlIsQT0uNiprLHFlPTIwO2Vsc2V7aWYodz4wKXtBPTIqK0QwKCt3KSxfWzIzMjQ4XT13PUcvQSxBPU0vQSxxZT0yMDticmVha31pZihHPjApe19bMjMyNDhd''@;'; put 'put ''PXc9LjYqUixBPUEvRyouNSxxZT0yMDticmVha31NPjA/KF9bMjMyNDhdPXc9QS9NKi41LEE9LjYqayxxZT0yMCk6KEE9Z2Usdz1nZSl9fXdoaWxlKDApOzIwPT0oMHxxZSkmJihfWzIzMjQ5XT1BKSxnZT0rVWwoK0EsK3cpLHcvPStoYSgrZ2UpLF9bMjMyNDhdPXcsQS89K0RhKCtnZSksX1sy''@;'; put 'put ''MzI0OV09QX1lbHNlIGJlPTAsUmU9MCx3PWdlLEE9Z2U7ZWxzZSBiZT0rKDB8cGUpLFJlPSsoMHxtKSx3PWdlLEE9Z2U7X1syMzI1MF09dyp3LF9bMjMyNTFdPUEqQSwyPT0oMHxhWzQ2NDg4XSk/cD0wfGFbNDY0NzZdOihwPTB8SGooKSxwPSgwfGhuKDApKV5wKSxOaihwKTtlOmRve2lmKGYp''@;'; put 'put ''e2Zvcig7MHxhW2Y+PjJdOylnZT0raGEoKyArX1soT2U9Zis4fDApPj4zXSkqK19bMjMyNDhdK2JlLF9bKExlPTB8YVsxMzIrKEhlPTB8YVsxNisoMHxhW2YrND4+Ml0pPj4yXSk+PjJdKT4+M109Z2UsX1tMZSs4Pj4zXT0rRGEoKyArX1tPZT4+M10pKitfWzIzMjQ5XStSZSxmZVtIZSsxMTk+''@;'; put 'put ''PjBdPTEsZj1mKzE2fDA7Zm9yKGs9LjEqYmUsTT0uMSpSZSxwZT0wfER0KGMpOzspe2lmKCFwZSlicmVhayBlOzA9PSgwfGFbOCsoMHxhWzExMisoZj0wfGFbKHE9cGUrMTZ8MCk+PjJdKT4+Ml0pPj4yXSkmJiEoMHxhW2YrMjEyPj4yXSl8fChxZT0zMik7ZG97aWYoMzI9PSgwfHFlKSl7aWYo''@;'; put 'put ''cWU9MCwwfGZlW2YrMTE5Pj4wXSl7X1soSGU9MHxhW2YrMTMyPj4yXSk+PjNdPStfW0hlPj4zXS1iZSxfWyhIZT1IZSs4fDApPj4zXT0rX1tIZT4+M10tUmU7YnJlYWt9Zm9yKEQ9MHxNcyhjLHBlKSxmPTAsdz0wLEE9MDtEOyl7bT0wfGFbKHA9Mj09KDB8KGI9MyZhW0Q+PjJdKSk/RDpEKy00''@;'; put 'put ''OHwwKSs0MD4+Ml0sYj0zPT0oMHxiKT9EOkQrNDh8MDtkb3tpZigoMHxtKSE9KDB8YVtiKzQwPj4yXSkmJjAhPSgwfGZlWzExOSsoVmU9MHxhWzE2KygwfGFbKCgwfG0pPT0oMHxwZSk/YjpwKSs0MD4+Ml0pPj4yXSk+PjBdKSl7aWYoZil7dz0oK19bKEhlPTB8YVtWZSsxMzI+PjJdKT4+M10r''@;'; put 'put ''dyooRz0rKDB8ZikpKS8oZ2U9KygwfChmPWYrMXwwKSkpLEE9KCtfW0hlKzg+PjNdK0EqRykvZ2U7YnJlYWt9Zj0xLHc9K19bKEhlPTB8YVtWZSsxMzI+PjJdKT4+M10sQT0rX1tIZSs4Pj4zXTticmVha319d2hpbGUoMCk7RD0wfFZzKGMsRCxwZSl9ZG97aWYoKDB8Zik8PTEpe2lmKDE9PSgw''@;'; put 'put ''fGYpKXtfWyhmPTB8YVsxMzIrKHA9MHxhW3E+PjJdKT4+Ml0pPj4zXT0uOTgqdytrLEE9LjkqQStNO2JyZWFrfUE9Ni4yODMxODUzMDcxNzk1ODYqK3FjKCksRz0oZ2U9LjkqK3FjKCkpKitfWzIzMjQ4XSoraGEoK0EpLF9bKGY9MHxhWzEzMisocD0wfGFbcT4+Ml0pPj4yXSk+PjNdPUcsQT0r''@;'; put 'put ''X1syMzI0OV0qZ2UqK0RhKCtBKTticmVha31fWyhmPTB8YVsxMzIrKHA9MHxhW3E+PjJdKT4+Ml0pPj4zXT13fXdoaWxlKDApO19bZis4Pj4zXT1BLGZlW3ArMTE5Pj4wXT0xfX13aGlsZSgwKTtwZT0wfHp0KGMscGUpfX1lbHNle2lmKGY9MHxEdChjKSwhcSlmb3IoOzspe2lmKCFmKWJyZWFr''@;'; put 'put ''IGU7Z2U9K19bMjMyNDhdLGdlPSgyKitxYygpLTEpKmdlLF9bYVsxMzIrKDB8YVsocWU9ZisxNnwwKT4+Ml0pPj4yXT4+M109Z2UsZ2U9K19bMjMyNDldLGdlPSgyKitxYygpLTEpKmdlLF9bOCsoMHxhWzEzMisoMHxhW3FlPj4yXSk+PjJdKT4+M109Z2UsZj0wfHp0KGMsZil9Zm9yKDs7KXtp''@;'; put 'put ''ZighZilicmVhayBlOzB8ZmVbMTE5KyhtPTB8YVsocD1mKzE2fDApPj4yXSk+PjBdPyhfWyhxZT0wfGFbbSsxMzI+PjJdKT4+M109K19bcWU+PjNdLWJlLF9bKHFlPXFlKzh8MCk+PjNdPStfW3FlPj4zXS1SZSk6KGdlPStfWzIzMjQ4XSxnZT0oMiorcWMoKS0xKSpnZSxfW2FbMTMyKygwfGFb''@;'; put 'put ''cD4+Ml0pPj4yXT4+M109Z2UsZ2U9K19bMjMyNDldLGdlPSgyKitxYygpLTEpKmdlLF9bOCsoMHxhWzEzMisoMHxhW3A+PjJdKT4+Ml0pPj4zXT1nZSksZj0wfHp0KGMsZil9fX13aGlsZSgwKTtfW2w+PjNdPWJlLF9bbCs4Pj4zXT1SZX0oZixsLEEpLHA9K19bZj4+M10sbT0rX1tmKzg+PjNd''@;'; put 'put ''O2U6ZG97aWYoMHxhWzQ2NDc0XSl7Zm9yKGtLKGY9MHxjMWUoMHxHbyhsKSksMHxHbyhsKSksYz0wOyEoKDB8Yyk+PSgwfGFbNDY1MDVdKSk7KU52ZShsLCtoVihjKSxBLGYpLGM9YysxfDA7U0soZil9ZWxzZSBmb3IoYz0wOzspe2lmKCgwfGMpPj0oMHxhWzQ2NTA1XSkpYnJlYWsgZTtSc2Uo''@;'; put 'put ''bCwraFYoYyksQSksYz1jKzF8MH19d2hpbGUoMCk7ZTpkb3tpZigwIT1wfDAhPW0pZm9yKGM9MHxEdChsKTs7KXtpZighYylicmVhayBlO19bKEE9MHxhWzEzMisoMHxhW2MrMTY+PjJdKT4+Ml0pPj4zXT0rX1tBPj4zXStwLF9bKEE9QSs4fDApPj4zXT0rX1tBPj4zXSttLGM9MHx6dChsLGMp''@;'; put 'put ''fX13aGlsZSgwKTswfHcmJmZ1bmN0aW9uIFZ2ZSgpe19bMjMyNDNdPS0xfSgpLGxlPWJ9ZnVuY3Rpb24gaFYobCl7dmFyIGM7cmV0dXJuKyArX1syMzI0M10qKygoYz0wfGFbNDY0NzhdKS0obHw9MCl8MCkvKygwfGMpfWZ1bmN0aW9uIE52ZShsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIg''@;'; put 'put ''bT0wLEE9MCx3PTAsYj0wO2lmKCEoKGM9K2MpPD0wKSl7Zm9yKGZ1bmN0aW9uIGQxZShsKXt2YXIgYz0wO21pWzYzJmFbKGM9MHxhWyhsfD0wKT4+Ml0pPj4yXV0oYywwLDY0KSxhW2wrMjA+PjJdPWFbbCsxNj4+Ml0sYVtsKzg+PjJdPWM9MHxhW2wrND4+Ml0sYVtjKzQ+PjJdPWFbYz4+Ml19''@;'; put 'put ''KHApLG09MHxEdChsKTttOylhWyhBPTE2KygwfGFbMTEyKyh3PTB8YVttKzE2Pj4yXSk+PjJdKXwwKT4+Ml09MCxhW0ErND4+Ml09MCxhW0ErOD4+Ml09MCxhW0ErMTI+PjJdPTAsRUsocCxBPX5+K2NmKCsgK19bKHc9MHxhW3crMTMyPj4yXSk+PjNdLyhiPStfWzIzMjQ1XSkpLH5+K2NmKCsg''@;'; put 'put ''K19bdys4Pj4zXS9iKSxtKSxtPTB8enQobCxtKTtmb3IoQT0wfER0KGwpO0E7KXtmb3IobT0wfHcwKGwsQSk7bTspKDB8QSkhPSgwfCh3PTB8YVsoMj09KDMmYVttPj4yXXwwKT9tOm0rLTQ4fDApKzQwPj4yXSkpJiZCc2UoQSx3LG0pLG09MHxTMChsLG0pO0E9MHx6dChsLEEpfShmdW5jdGlv''@;'; put 'put ''biBUSyhsLGMpeyFmdW5jdGlvbiBIUChsLGMsZil7Y3w9MCxmfD0wO3ZhciBBLHA9MCxtPTAsdz0wO0E9MzIrKGx8PTApfDAsbT0wfG1pWzYzJmFbbD4+Ml1dKGwsMCwxMjgpO2Rve2lmKCFtKXtwPTA7YnJlYWt9dz0wfGFbQT4+Ml0scD1tLG09MHxtaVs2MyZhW2w+PjJdXShsLG0sOCkscD0w''@;'; put 'put ''fG1pWzYzJmNdKDA9PSgwfHcpP2w6dyxwLGYpfXdoaWxlKCgwfHApPj0wKX0oMHxhWyhsfD0wKT4+Ml0sY3w9MCxsKX0pKHAsMjMpLGRYKGwsYyxmKX19ZnVuY3Rpb24gUnNlKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wO2lmKCEoKGM9K2MpPD0wKSl7Zm9yKHA9MHxEdChsKTtw''@;'; put 'put ''OylhWyhBPTE2KygwfGFbMTEyKygwfGFbcCsxNj4+Ml0pPj4yXSl8MCk+PjJdPTAsYVtBKzQ+PjJdPTAsYVtBKzg+PjJdPTAsYVtBKzEyPj4yXT0wLHA9MHx6dChsLHApO2ZvcihBPTB8RHQobCk7QTspe2ZvcihwPUE7cD0wfHp0KGwscCk7KWhYKEEscCk7Zm9yKHA9MHx3MChsLEEpO3A7KSgw''@;'; put 'put ''fEEpIT0oMHwobT0wfGFbKDI9PSgzJmFbcD4+Ml18MCk/cDpwKy00OHwwKSs0MD4+Ml0pKSYmQnNlKEEsbSxwKSxwPTB8UzAobCxwKTtBPTB8enQobCxBKX1kWChsLGMsZil9fWZ1bmN0aW9uIGhYKGwsYyl7dmFyIGYscCxtLEE7UHNlKGx8PTAsY3w9MCxmPStfWyhBPTB8YVsxMzIrKDB8YVtj''@;'; put 'put ''KzE2Pj4yXSk+PjJdKT4+M10tK19bKG09MHxhWzEzMisoMHxhW2wrMTY+PjJdKT4+Ml0pPj4zXSxwPStfW0ErOD4+M10tK19bbSs4Pj4zXSxwKnArZipmKX1mdW5jdGlvbiBCc2UobCxjLGYpe2Z8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wO2ZvcihBPXA9K19bKGs9MHxhWzEzMiso''@;'; put 'put ''MHxhWyhiPTE2KyhjfD0wKXwwKT4+Ml0pPj4yXSk+PjNdLStfWyhjPTB8YVsxMzIrKDB8YVsobD0xNisobHw9MCl8MCk+PjJdKT4+Ml0pPj4zXSx3PW09K19bays4Pj4zXS0rX1tjKzg+PjNdLHAqPXAsbSo9bTswPT0ocCs9bSk7KUE9cD0rKDUtKCgwfFQxKCkpJTEwfDApfDApLHc9bT0rKDUt''@;'; put 'put ''KCgwfFQxKCkpJTEwfDApfDApLHAqPXAsbSo9bTttPStEMCgrcCkscD0rX1sxMjgrKGM9MHxhW2YrMTY+PjJdKT4+M10sX1soYj0xNisoaz0wfGFbMTEyKygwfGFbYj4+Ml0pPj4yXSl8MCk+PjNdPStfW2I+PjNdLShBKj1wPTB8YVs0NjQ3NV0/KG0tK19bYysxMzY+PjNdKSpwL206cCptLytf''@;'; put 'put ''W2MrMTM2Pj4zXSksX1soaz1rKzI0fDApPj4zXT0rX1trPj4zXS0odyo9cCksX1soYj0xNisoaz0wfGFbMTEyKygwfGFbbD4+Ml0pPj4yXSl8MCk+PjNdPStfW2I+PjNdK0EsX1soaz1rKzI0fDApPj4zXT0rX1trPj4zXSt3fWZ1bmN0aW9uIGRYKGwsYyxmKXt2YXIgRCxSLHA9MCxtPTAsQT0w''@;'; put 'put ''LHc9MCxiPTAsaz0wLE09MDtmb3IoUj0oYz0rYykqYyxEPTA9PSgwfChmfD0wKSksTT0wfER0KGx8PTApO007KXtpZighKDImZmVbMTE5KyhrPTB8YVtNKzE2Pj4yXSk+PjBdKSl7KG09KEE9K19bMjQrKGI9MHxhW2srMTEyPj4yXSk+PjNdKSpBKyhwPStfW2IrMTY+PjNdKSpwKTxSPyh3PStf''@;'; put 'put ''WyhmPTB8YVtrKzEzMj4+Ml0pPj4zXStwLHA9K19bZis4Pj4zXStBKToobT1jLytEMCgrbSksdz0rX1soZj0wfGFbaysxMzI+PjJdKT4+M10rbSpwLHA9K19bZis4Pj4zXSttKkEpO2Rve2lmKCFEKXtpZihtPStEMCgrKHAqcC8rX1syMzI1MV0rdyp3LytfWzIzMjUwXSkpLDA9PSgwfGFbYis4''@;'; put 'put ''Pj4yXSkmJjA9PSgwfGFbaysyMTI+PjJdKSl7X1tmPj4zXT13L20scC89bTticmVha31pZihtPj0xKXtfW2Y+PjNdPS45NSp3L20scD0uOTUqcC9tO2JyZWFrfV9bZj4+M109dzticmVha31fW2Y+PjNdPXd9d2hpbGUoMCk7X1tmKzg+PjNdPXB9TT0wfHp0KGwsTSl9fWZ1bmN0aW9uIFBzZShs''@;'; put 'put ''LGMsZixwLG0pe2x8PTAsY3w9MCxwPStwO3ZhciBBPTAsdz0wLGI9MDtmb3IoQT1mPStmLGY9bT0rbTswPT1mOylBPWY9Kyg1LSgoMHxUMSgpKSUxMHwwKXwwKSxmPShwPSsoNS0oKDB8VDEoKSklMTB8MCl8MCkpKnArZipmOzB8YVs0NjQ3NV0/KG09K0QwKCtmKSxmPStfWzIzMjQ3XS8obSpm''@;'; put 'put ''KSk6Zj0rX1syMzI0N10vZiwwPT0oMHxhWzgrKGw9MHxhWzExMisoYj0wfGFbbCsxNj4+Ml0pPj4yXSk+PjJdKSYmMD09KDB8YVtiKzIxMj4+Ml0pJiYwPT0oMHxhWzgrKDB8YVsxMTIrKHc9MHxhW2MrMTY+PjJdKT4+Ml0pPj4yXSkmJihmPTA9PSgwfGFbdysyMTI+PjJdKT8xMCpmOmYpLF9b''@;'; put 'put ''KGM9MTYrKGI9MHxhWzExMisoMHxhW2MrMTY+PjJdKT4+Ml0pfDApPj4zXT0rX1tjPj4zXSsobT1mKkEpLF9bKGI9YisyNHwwKT4+M109K19bYj4+M10rKEE9ZipwKSxfWyhiPWwrMTZ8MCk+PjNdPStfW2I+PjNdLW0sX1soYj1sKzI0fDApPj4zXT0rX1tiPj4zXS1BfWZ1bmN0aW9uIFY3KGws''@;'; put 'put ''YyxmLHApe3B8PTA7dmFyIG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MDtpZihsPTB8ZnVuY3Rpb24gaWoobCxjLGYpe2x8PTAsZnw9MDt2YXIgcCxtO3JldHVybiBwPWxlLGxlPWxlKzMyfDAsYVsobT1wKT4+Ml09Y3w9MCxhW20rND4+Ml09ZixmPTB8bWlbNjMmYVsoZj0wfGFbbD4+Ml0p''@;'; put 'put ''Pj4yXV0oZixtLDQpLGxlPXAsMHxmfShsfD0wLGN8PTAsZnw9MCksMCE9KDB8cCkmMCE9KDB8bCkpe2s9bCs4fDA7ZG97Zm9yKGI9MTYrKGY9MHxhW3A+PjJdKXwwLGw9aztsPTB8YVtsPj4yXTspKHc9KEE9K19bOCsoRD0wfGFbMTMyKygwfGFbMTYrKGM9MHxhW2w+PjJdKT4+Ml0pPj4yXSk+''@;'; put 'put ''PjNdLStfWzgrKE09MHxhWzEzMisoMHxhW2I+PjJdKT4+Ml0pPj4zXSkqQSsobT0rX1tEPj4zXS0rX1tNPj4zXSkqbSk8K19bMjMyNDZdJiZQc2UoZixjLG0sQSx3KSxsPWwrNHwwO3A9MHxhW3ArND4+Ml19d2hpbGUoMCE9KDB8cCkpfX1mdW5jdGlvbiBwWChsLGMpe2N8PTA7dmFyIEEsZj0w''@;'; put 'put ''LHA9MCx3PTA7QT1sZSxsZT1sZSsxNnwwLDAhPSgwfChmPTB8TGkobHw9MCw5MjUwNykpKSYmMCE9KDB8ZmVbZj4+MF0pfHwoZj05MTEyNSkscD0wfCRzKGYsNTgpO2Rve2lmKHApe2lmKCgwfHApIT0oMHxmKSYmKCgwfGZlW2Y+PjBdKS00OHwwKT4+PjA+PTEwKXtwPTA7YnJlYWt9dz0wfHIz''@;'; put 'put ''KGYpLGY9cCsxfDAscD0oMHx3KT4wP3c6MH1lbHNlIHA9MH13aGlsZSgwKTswIT0oMHxwKSYmISgwfGZ1bmN0aW9uIGp2ZShsLGMsZil7Y3w9MCxmfD0wO3ZhciB3LEcscSxwZSxwPTAsbT0wLEE9MCxiPTAsaz0wLE09MCxEPTAsUj0wO3BlPWxlLGxlPWxlKzY0fDAsRz1wZSxBPXBlKzQwfDAs''@;'; put 'put ''cT0wfEdvKGx8PTApLHc9MHxOMyhsKSxXNyhBLGwpLGFbNDY4NDJdPWFbQT4+Ml0sYVs0Njg0M109YVtBKzQ+PjJdLGFbNDY4NDRdPWFbQSs4Pj4yXSwwfGZlWzE4NzM3Nl0mJihqbls0Njg0Ml09LjAxMzg4ODg4ODg4ODg4ODg4OCoram5bNDY4NDJdLGpuWzQ2ODQzXT0uMDEzODg4ODg4ODg4''@;'; put 'put ''ODg4ODg4Kitqbls0Njg0M10pLHA9MHxmdW5jdGlvbiBIc2UobCl7dmFyIGM9MCxmPTAscD0wLG09MDtmb3IoYz0wLG09MHxEdChsfD0wKTttOyl7Zm9yKHA9bTtmPTB8enQobCxwKTspcD1mLGM9KDB8ZFYobSxmKSkrY3wwO209MHx6dChsLG0pfXJldHVybiAwfGN9KGwpO2U6ZG97aWYocCl7''@;'; put 'put ''bT0oQT1HKSs0MHwwO2Rve2FbQT4+Ml09YVtjPj4yXSxBPUErNHwwLGM9Yys0fDB9d2hpbGUoKDB8QSk8KDB8bSkpO2ZvcihSPStfWyhBPUcrMTZ8MCk+PjNdLE09MiorKDB8dyksRD0xLysoMHxBcihxKy0xfDAscSkpLG09MCxrPVI7Oyl7aWYoISgwIT0oMHxwKSYoMHxtKTwoMHxmKSkpYnJl''@;'; put 'put ''YWsgZTtmb3IoWnZlKHEsRyksX1syMzI1NF09Yj0rX1syMzI1M10qK19bMTcwXSxfWzIzMjU1XT1NKmIqRCxjPTA7ISgoMHxjKT49KDB8YVs0NjUxMl0pfHwoYj0rZ1goYyksYjw9MCkpOyl7aWYoIShwPTB8enZlKGwsYikpKXtwPTA7YnJlYWt9Yz1jKzF8MH1fW0E+PjNdPWI9aytSLG09bSsx''@;'; put 'put ''fDAsaz1ifX1lbHNlIHA9MH13aGlsZSgwKTtyZXR1cm4gbGU9cGUsMHxwfShsLGMscCkpfHxiVihsLGYpLGxlPUF9ZnVuY3Rpb24gWnZlKGwsYyl7dmFyIGYscCxtO2x8PTAsX1sxNzFdPXA9K19bMTYrKGN8PTApPj4zXSxhWzM0NF09YVtjPj4yXSxfWzIzMjU3XT1tPStfW2MrOD4+M10sYVs0''@;'; put 'put ''NjUxMl09YVtjKzMyPj4yXSwoZj0rX1tjKzI0Pj4zXSk+MCYmKF9bMTcwXT1mKSxfWzIzMjUzXT1wKnAsMD09bSYmKF9bMjMyNTddPS4yKitEMCgrICsoMHxsKSkqcCl9ZnVuY3Rpb24gZ1gobCl7dmFyIGM7cmV0dXJuKyArX1syMzI1N10qKygoYz0wfGFbMzQ0XSktKGx8PTApfDApLysoMHxj''@;'; put 'put ''KX1mdW5jdGlvbiB6dmUobCxjKXtjPStjO3ZhciBmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO2ZvcihmPTB8RHQobHw9MCk7ZjspYVsodz0xNisoMHxhWzExMisoMHxhW2YrMTY+PjJdKT4+Ml0pfDApPj4yXT0wLGFbdys0Pj4yXT0wLGFbdys4Pj4yXT0wLGFbdysxMj4+Ml09MCxm''@;'; put 'put ''PTB8enQobCxmKTtmb3IoZj0wLHc9MHxEdChsKTt3Oyl7Zm9yKG09dztwPTB8enQobCxtKTspbT1wLGY9KDB8TnNlKHcscCkpK2Z8MDtmb3IocD0wfHcwKGwsdyk7cDspR3ZlKHcsMHxhWygyPT0oMyZhW3A+PjJdfDApP3A6cCstNDh8MCkrNDA+PjJdKSxwPTB8UzAobCxwKTt3PTB8enQobCx3''@;'; put 'put ''KX1lOmRve2lmKGYpZm9yKE09YypjLG09MHxEdChsKTs7KXtpZighbSlicmVhayBlOzMhPSgwfGZlWzExOSsocD0wfGFbbSsxNj4+Ml0pPj4wXSkmJigoaz0oQT0rX1syNCsodz0wfGFbcCsxMTI+PjJdKT4+M10pKkErKGI9K19bdysxNj4+M10pKmIpPE0/X1socD0wfGFbcCsxMzI+PjJdKT4+''@;'; put 'put ''M109K19bcD4+M10rYjooaz0rRDAoK2spLF9bKHA9MHxhW3ArMTMyPj4yXSk+PjNdPStfW3A+PjNdK2IqYy9rLEE9QSpjL2spLF9bKHc9cCs4fDApPj4zXT0rX1t3Pj4zXStBKSxtPTB8enQobCxtKX1lbHNlIGY9MH13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIE5zZShsLGMpe3ZhciBm''@;'; put 'put ''LHAsbSxBO3JldHVybiAwfGZ1bmN0aW9uIG1YKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGY9K2YscD0rcCxtPSttO2Zvcih2YXIgQSx3OzA9PW07KWY9bT0rKDUtKCgwfFQxKCkpJTEwfDApfDApLG09KHA9Kyg1LSgoMHxUMSgpKSUxMHwwKXwwKSkqcCttKm07cmV0dXJuIEE9MHxkVihsLGMpLF9b''@;'; put 'put ''KHc9MTYrKGM9MHxhWzExMisoMHxhW2MrMTY+PjJdKT4+Ml0pfDApPj4zXT0rX1t3Pj4zXSsoZj0obT0oMD09KDB8QSk/K19bMjMyNTVdOitfWzIzMjU0XSkvbSkqZiksX1soYz1jKzI0fDApPj4zXT0rX1tjPj4zXSsobSo9cCksX1sobD0xNisoYz0wfGFbMTEyKygwfGFbbCsxNj4+Ml0pPj4y''@;'; put 'put ''XSl8MCk+PjNdPStfW2w+PjNdLWYsX1soYz1jKzI0fDApPj4zXT0rX1tjPj4zXS1tLDB8QX0obHw9MCxjfD0wLGY9K19bKEE9MHxhWzEzMisoMHxhW2MrMTY+PjJdKT4+Ml0pPj4zXS0rX1sobT0wfGFbMTMyKygwfGFbbCsxNj4+Ml0pPj4yXSk+PjNdLHA9K19bQSs4Pj4zXS0rX1ttKzg+PjNd''@;'; put 'put ''LHAqcCtmKmYpfWZ1bmN0aW9uIEd2ZShsLGMpe3ZhciBmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MDswfGRWKGx8PTAsY3w9MCl8fChBPStEMCgrKChmPStfWzgrKEQ9MHxhWzEzMisodz0wfGFbYysxNj4+Ml0pPj4yXSk+PjNdLStfWzgrKE09MHxhWzEzMisobT0wfGFbbCsx''@;'; put 'put ''Nj4+Ml0pPj4yXSk+PjNdKSpmKyhwPStfW0Q+PjNdLStfW00+PjNdKSpwKSksYj0rVnNlKGwpLGI9K1ZzZShjKStiLF9bKGw9MTYrKGM9MHxhW3crMTEyPj4yXSl8MCk+PjNdPStfW2w+PjNdLShwKj1BPShrPUEtYikqay8oKCtfWzE3MV0rYikqQSkpLF9bKGM9YysyNHwwKT4+M109K19bYz4+''@;'; put 'put ''M10tKGYqPUEpLF9bKGw9MTYrKGM9MHxhW20rMTEyPj4yXSl8MCk+PjNdPStfW2w+PjNdK3AsX1soYz1jKzI0fDApPj4zXT0rX1tjPj4zXStmKX1mdW5jdGlvbiBkVihsLGMpe3ZhciB3LGIsZj0wLHA9MCxtPTAsQT0wO3JldHVybiBtPStfWyhiPTB8YVsxMzIrKHc9MHxhWzE2KyhjfD0wKT4+''@;'; put 'put ''Ml0pPj4yXSk+PjNdLStfWyhsPTB8YVsxMzIrKGM9MHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSk+PjNdLEE9KEE9K19bYis4Pj4zXS0rX1tsKzg+PjNdKTwwPy1BOkEsZj0rX1tjKzMyPj4zXSwobD0wPT0oMHxmZVsxODczNzZdKSk/KGY9LjUqZioocD0ram5bNDY4NDJdKSxwKj0uNSorX1t3KzMy''@;'; put 'put ''Pj4zXSk6KGY9LjUqZisocD0ram5bNDY4NDJdKSxwPS41KitfW3crMzI+PjNdK3ApLChtPDA/LW06bSk8PXArZj8oZj0rX1tjKzQwPj4zXSxsPyhwPS41KmYqKG09K2puWzQ2ODQzXSksZj0uNSorX1t3KzQwPj4zXSptKToocD0uNSpmKyhtPStqbls0Njg0M10pLGY9LjUqK19bdys0MD4+M10r''@;'; put 'put ''bSksYz1BPD1mK3AmMSk6Yz0wLDB8Y31mdW5jdGlvbiBWc2UobCl7dmFyIGM9MCxmPTA7cmV0dXJuIGM9K19bMzIrKGw9MHxhWzE2KyhsfD0wKT4+Ml0pPj4zXSwwfGZlWzE4NzM3Nl0/KGY9LjUqYysgK2puWzQ2ODQyXSxjPS41KitfW2wrNDA+PjNdKyAram5bNDY4NDNdKTooZj0uNSpjKitq''@;'; put 'put ''bls0Njg0Ml0sYz0uNSorX1tsKzQwPj4zXSoram5bNDY4NDNdKSwrICtEMCgrKGMqYytmKmYpKX1mdW5jdGlvbiBZdmUobCl7dmFyIGM7aDAobHw9MCwxMzc0NjAsMTc2LDEpLEw3KGwpLGM9K01sKGwsMHxhWzQ3MTc0XSwxLDApLF9bMTI4KygwfGFbbCsxNj4+Ml0pPj4zXT1jfWZ1bmN0aW9u''@;'; put 'put ''IFV2ZShsLGMsZil7Znw9MDt2YXIgcD0wO3JldHVybiBoMChjPTB8R3IobHw9MCxjfD0wLDEpLDEzNzQ0NywzMDQsMSkscD0wfHZyKDQwKSxhWzExMisoMHxhWyhsPWMrMTZ8MCk+PjJdKT4+Ml09cCxwPTB8dnIoYVs0NzEzN108PDMpLGFbMTMyKyhsPTB8YVtsPj4yXSk+PjJdPXAsX1tsKzg4''@;'; put 'put ''Pj4zXT0rX1s4OCsocD0wfGFbZisxNj4+Ml0pPj4zXSxfW2wrOTY+PjNdPStfW3ArOTY+PjNdLF9bbCs4MD4+M109K19bcCs4MD4+M10sYVthW2wrMTEyPj4yXT4+Ml09ZiwwfGN9ZnVuY3Rpb24gR3NlKGwpe3ZhciBjPTAsZj0wLHA9MDtmb3IoYz0wfER0KGx8PTApO2M7KXA9MHxhWzEzMiso''@;'; put 'put ''Zj0wfGFbYysxNj4+Ml0pPj4yXSxfWyhmPTB8YVsxMzIrKDB8YVsxNisoMHxhW2FbZisxMTI+PjJdPj4yXSk+PjJdKT4+Ml0pPj4zXT0rX1twPj4zXSxfW2YrOD4+M109K19bcCs4Pj4zXSxjPTB8enQobCxjKX1mdW5jdGlvbiB5WChsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHcsYixELFIs''@;'; put 'put ''RyxxLE0scD0wLG09MCxBPTAsaz0wO3E9bGUsbGU9bGUrNDh8MCxtPXEsRD1xKzMyfDAsYj1xKzI4fDAsRz1xKzIwfDAsUj1xKzE2fDAsYVsoQT1xKzI0fDApPj4yXT0wLGFbRz4+Ml09MCxhW1I+PjJdPTAscD0wfGFbNDcxMzddLE09MT09KDB8YVsodz1jKzEzNnwwKT4+Ml0pPzB8czJlKGws''@;'; put 'put ''cCxSKTowfHMyZShsLHAsMCk7ZG97aWYoKDB8YVtjKzEyND4+Ml0pPi0xKXtpZigoMHxhW2MrMTYwPj4yXSk+MCl7YVttPj4yXT1hW2Y+PjJdLGFbbSs0Pj4yXT1hW2YrND4+Ml0sYVttKzg+PjJdPWFbZis4Pj4yXSxhW20rMTI+PjJdPWFbZisxMj4+Ml0saz0wfGwyZShsLG0sQSxHKTticmVh''@;'; put 'put ''a31hW20+PjJdPWFbZj4+Ml0sYVttKzQ+PjJdPWFbZis0Pj4yXSxhW20rOD4+Ml09YVtmKzg+PjJdLGFbbSsxMj4+Ml09YVtmKzEyPj4yXSxrPTB8bDJlKGwsbSwwLDApO2JyZWFrfWs9MH13aGlsZSgwKTtzd2l0Y2gocD0wfGZ1bmN0aW9uIFFzZShsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9''@;'; put 'put ''MCx3PTA7dz0wfHZyKDB8QXIoKHc9MHxhWzQ3MTM3XSk8PDMsMHxHbyhsfD0wKSkpO2U6ZG97aWYoMHxzaShsLDEsMTAyNjIzLDApKWZvcihwPTB8RHQobCk7Oyl7aWYoIXApYnJlYWsgZTtjPTB8YVtwKzE2Pj4yXTt0OmRve2lmKDB8ZmVbYysxMTk+PjBdKWZvcihtPTB8YVs0NzEzN10sQT0w''@;'; put 'put ''fEFyKG0sMHxhW2MrMTIwPj4yXSksZj1jKzEzMnwwLGM9MDs7KXtpZigoMHxjKT49KDB8bSkpYnJlYWsgdDtfW3crKEErYzw8Myk+PjNdPStfWygwfGFbZj4+Ml0pKyhjPDwzKT4+M10sYz1jKzF8MH19d2hpbGUoMCk7cD0wfHp0KGwscCl9fXdoaWxlKDApO3JldHVybiAwfHd9KGwpLGFbRD4+''@;'; put 'put ''Ml09cCwwfGFbdz4+Ml0pe2Nhc2UgMTpjYXNlIDA6eGsoMHxhWzQ3MTM3XSxNLDB8YVtSPj4yXSxjLDAsayxwLDB8YVtBPj4yXSwwfGFbRz4+Ml0sYik7YnJlYWs7Y2FzZSA1OiFmdW5jdGlvbiBidShsLGMsZixwKXtsfD0wLGZ8PTA7dmFyIGIsbT0wLEE9MCx3PTAsaz0wLE09MDtmb3IoYj0w''@;'; put 'put ''fGFbKGN8PTApPj4yXSxhWyhwfD0wKT4+Ml09MCxrPTB8QXIoYixsKSxwPTA7Oyl7aWYoKDB8cCk+PSgwfGspKXtwPTEsbT0xO2JyZWFrfV9bZisocDw8Myk+PjNdPTEwMCorQmgoKSxwPXArMXwwfWZvcig7ISgoMHxtKT49KDB8YikpOyl7Zm9yKHc9MHxBcihtLGwpLEE9MDshKCgwfEEpPj0o''@;'; put 'put ''MHxsKSk7KXtpZigoKE09K19bZisoQTw8Myk+PjNdLStfW2YrKEErdzw8Myk+PjNdKT49MD9NOi1NKT4xZS0xNil7cD0wLG09YjticmVha31BPUErMXwwfW09bSsxfDB9ZTpkb3tpZigwfHApZm9yKHJ3KDEpLHA9MDs7KXtpZigoMHxwKT49KDB8aykpYnJlYWsgZTtfW2YrKHA8PDMpPj4zXT0x''@;'; put 'put ''MDAqK0JoKCkscD1wKzF8MH19d2hpbGUoMCk7aWYoMHxsaChwPTB8ZnVuY3Rpb24gYTJlKGwsYyl7Yz0rYzt2YXIgZixtLHA9MCxBPTA7Zj0xPT0oMHxhWzE2KyhsfD0wKT4+Ml0pPzB8YWgobCwwKTowfEE1KGwpLG09MHxhW2YrMjg+PjJdO2U6ZG97aWYoMSE9Yylmb3IocD0wfGFbZis4Pj4y''@;'; put 'put ''XSxsPTA7Oyl7aWYoKDB8bCk+PSgwfHApKWJyZWFrIGU7X1soQT1tKyhsPDwzKXwwKT4+M109K19bQT4+M10qYyxsPWwrMXwwfX13aGlsZSgwKTtyZXR1cm4gMHxmfShjLDEpLDApKXJldHVybiBaNyhrPTB8VGsoMCxwLDAsMTAxZTUsMTAwLDApLGwsZiwzMDApLHlsKGspLFo3KGs9MHxUaygw''@;'; put 'put ''LHAsMCwxMDFlMywxMDAsMCksbCxmLDMwMCkseWwoayksWjcoaz0wfFRrKDAscCwwLDEwMTAsMTAwLDApLGwsZiwzMDApLHlsKGspLFo3KGs9MHxUaygwLHAsMCwxMC4xLDEwMCwwKSxsLGYsMzAwKSx5bChrKSxmdW5jdGlvbiBybihsLGMsZixwLG0sQSx3KXtsPStsLGM9K2MsZj0rZixwPStw''@;'; put 'put ''LG18PTAsQXw9MCx3fD0wO3ZhciBELFIsRyxxLGI9MCxrPTAsTT0wLHBlPTAsZ2U9MCxiZT0wO2ZvcihxPWxlLGxlPWxlKzgwfDAsUj1xKzQ4fDAsRD1xKzI0fDAsRz1xLGI9MDs7KXtpZigoMHxiKT49KDB8QSkpe2s9MDticmVha31fW1IrKGI8PDMpPj4zXT1wZT0rX1t3KyhiPDwzKT4+M10s''@;'; put 'put ''X1tEKyhiPDwzKT4+M109cGUsYj1iKzF8MH1mb3IoOyEoKDB8ayk+PSgwfG0pKTspe2ZvcihNPTB8QXIoayxBKSxiPTA7ISgoMHxiKT49KDB8QSkpOylfWyhnZT1SKyhiPDwzKXwwKT4+M109KGJlPStfW3crKGIrTTw8Myk+PjNdKTwocGU9K19bZ2U+PjNdKT9iZTpwZSxfWyhnZT1EKyhiPDwz''@;'; put 'put ''KXwwKT4+M109YmU+KHBlPStfW2dlPj4zXSk/YmU6cGUsYj1iKzF8MDtrPWsrMXwwfWZvcihmPTAhPShwZT0rX1tEPj4zXS0rX1tSPj4zXSk/KGYtbCkvcGU6MSxiZT0ocC1jKS8ocGU9K19bRCs4Pj4zXS0rX1tSKzg+PjNdKSxmPTAhPXBlP2Y8YmU/ZjpiZTpmLF9bRz4+M109bCxfW0crOD4+''@;'; put 'put ''M109YyxfW0crMTY+PjNdPTAsaz0wOyEoKDB8ayk+PSgwfG0pKTspe2ZvcihNPTB8QXIoayxBKSxiPTA7ISgoMHxiKT49KDB8QSkpOylfWyhnZT13KyhiK008PDMpfDApPj4zXT0oK19bZ2U+PjNdLStfW1IrKGI8PDMpPj4zXSkqZisgK19bRysoYjw8Myk+PjNdLGI9YisxfDA7az1rKzF8MH1s''@;'; put 'put ''ZT1xfSgwLDAsNDkwLDcwMCwwfGFbYz4+Ml0sbCxmKSx2b2lkIFJhKHApO1ByKDkyNDMwLDkyMzg3LDE2NCw5MjQ2Nil9KDB8YVs0NzEzN10sTSxwLGIpO2JyZWFrO2Nhc2UgNDpwPShwPTB8YVtSPj4yXSk/MHxKayhwLDApOjB8QTUoTSksYVtSPj4yXT1wLGZ1bmN0aW9uIHF2ZShsLGMsZixw''@;'; put 'put ''LG0sQSx3LGIpeyFmdW5jdGlvbiBEYyhsLGMsZixwLG0sQSx3KXtsfD0wLGZ8PTAscHw9MCxtfD0wLEE9K0Esd3w9MDt2YXIgTSxiPTAsaz0wLEQ9MDtpZihEPTA9PSgwfGxoKGN8PTAsMCkpLGI9MT09KDB8YVtjKzE2Pj4yXSksRD9iP2I9MHx3cCgwfGFoKGMsMCkpOms9NTpiP2I9YzprPTUs''@;'; put 'put ''NT09KDB8aykmJihiPTB8QTUoYykpLEQ9MHx3cChiKSxhW3c+PjJdPTAsYj0wfGFbRD4+Ml0sZnx8KFFuKDB8QXIobDw8MyxiKSksYmwoKSksTT0wfGZ1bmN0aW9uIEV4KGwsYyxmLHAsbSxBKXtjfD0wLGY9K2YscHw9MCxtfD0wLEF8PTA7dmFyIGFuLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0w''@;'; put 'put ''LEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxMZT0wLFJlPTAsSGU9MCxWZT0wLHFlPTAscnQ9MCxXZT0wLGF0PTAsU3Q9MCxrdD0wLHN0PTAsRXQ9MCxadD0wLGN0PTAsYnQ9MCxTbj0wLEhuPTAsdXI9MDtpZihhbj0wfGFbKGx8PTApPj4yXSwwfGxoKGwsMCkmJjE9PSgwfGFbbCsxNj4+''@;'; put 'put ''Ml0pKXtmb3Ioaz0wfEFyKGFuLGMpLGI9MCx3PTA7ISgoMHx3KT49KDB8aykpOyliPShwZT0rX1twKyh3PDwzKT4+M10pKnBlK2Isdz13KzF8MDtlOmRve2lmKDA9PWIpZm9yKHc9MDs7KXtpZigoMHx3KT49KDB8aykpYnJlYWsgZTtfW3ArKHc8PDMpPj4zXT03MiorQmgoKSx3PXcrMXwwfX13''@;'; put 'put ''aGlsZSgwKTtmb3Ioc3Q9MHxhW2wrMjA+PjJdLEV0PTB8YVtsKzI0Pj4yXSxadD0wfGFbbCsyOD4+Ml0sdz0wfFFuKDU2KSxfWyhidD13KzMyfDApPj4zXT0xLGFbdysyMD4+Ml09MCxhW3crMjQ+PjJdPTAsYVt3Pj4yXT1sLF9bdys0MD4+M109LjAxLGFbdys0OD4+Ml09fn4rRDAoKyArKDB8''@;'; put 'put ''YVtsPj4yXSkpLGN0PTB8UW4oYW48PDMpLGFbdysxMj4+Ml09Y3Qsaz0wOyEoKDB8ayk+PSgwfGFuKSk7KV9bY3QrKGs8PDMpPj4zXT1mLGs9aysxfDA7aWYoYVsoU3Q9dys0fDApPj4yXT0wfHVjKGFuLGFuLGw9KDB8YVtsKzg+PjJdKSthbnwwLDEsMSksbD0wfHVjKGFuLGFuLGwsMSwxKSxh''@;'; put 'put ''WyhrdD13Kzh8MCk+PjJdPWwsMD09KDB8bCl8MD09KDB8KGs9MHxhW1N0Pj4yXSkpKVE0KHcpLHc9MDtlbHNle1ZlPTB8YVtrKzIwPj4yXSxxZT0wfGFbaysyND4+Ml0sV2U9MHxhW2wrMjQ+PjJdLFJlPTB8YVtrKzI4Pj4yXSxhdD0wfGFbbCsyOD4+Ml0sYVsocnQ9MHxhW2wrMjA+PjJdKT4+''@;'; put 'put ''Ml09MCxhW1ZlPj4yXT0wLHE9MCxwZT0wLEhlPTAsYmU9MDtlOmZvcig7ISgoMHxiZSk+PSgwfGFuKSk7KXtmb3IoTGU9c3QrKChPZT1iZSsxfDApPDwyKXwwLE09MCxEPTAsZ2U9MHxhW3N0KyhiZTw8Mik+PjJdLEc9cSxmPXBlLGw9SGU7ISgoMHxnZSk+PSgwfGFbTGU+PjJdKSk7KXtpZigo''@;'; put 'put ''MHwoaz0wfGFbRXQrKGdlPDwyKT4+Ml0pKT09KDB8YmUpKWI9RyxrPWw7ZWxzZXtzd2l0Y2goYVtxZSsobDw8Mik+PjJdPWssUj0rX1tadCsoZ2U8PDMpPj4zXSwwfG0pe2Nhc2UgMjpiPTA9PShiPVIqUik/LTFlNTotMS9iO2JyZWFrO2Nhc2UgMTpiPVIqUj09MD8tMWU1Oi0xL1I7YnJlYWs7''@;'; put 'put ''Y2FzZSAwOmI9LTE7YnJlYWs7ZGVmYXVsdDpTbj0yMzticmVhayBlfV9bUmUrKGw8PDMpPj4zXT1iLGFbV2UrKGw8PDIpPj4yXT1rLF9bKHVyPWF0KyhsPDwzKXwwKT4+M109SG49YipSLGY9K19jKHAsYyxiZSxrKSpIbitmLE09YitNLEQ9KEhuPStfW3VyPj4zXSkrRCxiPUhuKlIrRyxrPWwr''@;'; put 'put ''MXwwfWdlPWdlKzF8MCxHPWIsbD1rfWFbcWUrKGw8PDIpPj4yXT1iZSxfWyhIZT1jdCsoYmU8PDMpfDApPj4zXT1xPS1NKitfW0hlPj4zXSxfW1JlKyhsPDwzKT4+M109cS1NLGFbV2UrKGw8PDIpPj4yXT1iZSxfW2F0KyhsPDwzKT4+M109LUQsYVtWZSsoT2U8PDIpPj4yXT1IZT1sKzF8MCxh''@;'; put 'put ''W3J0KyhPZTw8Mik+PjJdPUhlLHE9RyxwZT1mLGJlPU9lfWlmKDIzPT0oMHxTbikmJlByKDEzODM5NCw5NTgzMSw1OTEsOTYwMTIpLDA9PShiPTA9PSgwfEEpPzE6cGUvcSkpdz0wO2Vsc2V7Zm9yKGs9MDshKCgwfGspPj0oMHxIZSkpOylfWyh1cj1hdCsoazw8Myl8MCk+PjNdPStfW3VyPj4z''@;'; put 'put ''XSpiLGs9aysxfDA7X1tidD4+M109YixhWzgrKDB8YVtTdD4+Ml0pPj4yXT1IZSxhWzgrKDB8YVtrdD4+Ml0pPj4yXT1IZX19cmV0dXJuIDB8d31yZXR1cm4gUHIoOTU5NDUsOTU4MzEsNTI1LDk2MDEyKSwwfShELGwsMCwwfGFbZj4+Ml0sMD09KDB8cCk/MDoyLDEpKXtmb3IoX1tNKzQwPj4z''@;'; put 'put ''XT0uMSxhW00rMjQ+PjJdPTUsZnVuY3Rpb24gVHgobCxjLGYscCxtKXt6bShsfD0wLGN8PTAsZnw9MCxwfD0wLG09K20pfShNLGwsMHxhW2Y+PjJdLG0sQSksaz0wfEFyKGIsbCkscD1NKzMyfDAsYj0wOyEoKDB8Yik+PSgwfGspKTspX1sodz0oMHxhW2Y+PjJdKSsoYjw8Myl8MCk+PjNdPStf''@;'; put 'put ''W3c+PjNdLytfW3A+PjNdLGI9YisxfDA7IWZ1bmN0aW9uIHh4KGwpe1E0KGx8PTApfShNKX1lbHNlIGFbdz4+Ml09LTE7KDB8RCkhPSgwfGMpJiZSYShEKX0obHw9MCxmfD0wLHB8PTAsbXw9MCxBfD0wLHc9K3csYnw9MCl9KDB8YVs0NzEzN10sMCxwLEQsMSwyMDAsLjAwMSxiKX1mb3IocD0w''@;'; put 'put ''fER0KGwpO3A7KXtmb3IoYz0oMHxhW0Q+PjJdKSsoKDB8QXIoMHxhWzEyMCsoQT0wfGFbcCsxNj4+Ml0pPj4yXSxmPTB8YVs0NzEzN10pKTw8Myl8MCxBPUErMTMyfDAsbT0wOyEoKDB8bSk+PSgwfGYpKTspX1soMHxhW0E+PjJdKSsobTw8Myk+PjNdPStfW2MrKG08PDMpPj4zXSxtPW0rMXww''@;'; put 'put ''O3A9MHx6dChsLHApfUZ0KGspLEZ0KDB8YVtEPj4yXSksUmEoTSksMHwocD0wfGFbUj4+Ml0pJiZSYShwKSwwfChwPTB8YVtHPj4yXSkmJkZ0KHApLGxlPXF9ZnVuY3Rpb24gYlgobCl7aDAobHw9MCwxMzc0NjAsMTc2LDEpLEw3KGwpfWZ1bmN0aW9uIEtzZSgpe3ZhciBsLGM7cmV0dXJuIGw9''@;'; put 'put ''MHxRbigxNjgpLF9bbD4+M109LTEuMDAwMTIzNCxfW2wrOD4+M109MSxhW2wrMTY+PjJdPTEsX1tsKzI0Pj4zXT0tMSxfW2wrMzI+PjNdPS4yLGFbbCs0MD4+Ml09MCxhW2wrNDQ+PjJdPTQsYVtsKzQ4Pj4yXT0xLGFbbCs1Mj4+Ml09NDUsYVtsKzU2Pj4yXT0xMCxfW2wrNjQ+PjNdPS42LF9b''@;'; put 'put ''bCs3Mj4+M109LjAwMSxhW2wrODA+PjJdPTUwMCxfW2wrODg+PjNdPS45LF9bbCs5Nj4+M109LjEsYVtsKzEwND4+Ml09MSxhW2wrMTA4Pj4yXT0xMjMsYVsoYz1sKzExMnwwKT4+Ml09MCxhW2MrND4+Ml09MCxhW2MrOD4+Ml09MCxhW2MrMTI+PjJdPTAsYVtsKzEyOD4+Ml09MSxhW2wrMTMy''@;'; put 'put ''Pj4yXT0zLGFbbCsxMzY+PjJdPTAsX1tsKzE0ND4+M109LTQsX1tsKzE1Mj4+M109MCxhW2wrMTYwPj4yXT0wLDB8bH1mdW5jdGlvbiBwVihsKXtGdChsfD0wKX1mdW5jdGlvbiBnVihsKXtGdChsfD0wKX1mdW5jdGlvbiBtVihsKXt2YXIgYztyZXR1cm4gbHw9MCxjPTB8UW4oMTg0KSxhW2M+''@;'; put 'put ''PjJdPWwsYVtjKzE3Nj4+Ml09MCwwfGN9ZnVuY3Rpb24gX1gobCxjKXt2YXIgcCxtLGY9MDtfWzgrKGx8PTApKygocD0wfGFbbD4+Ml0pPDwzKT4+M109Yz0rYyxtPWwrMTc2fDA7ZTpkb3tzd2l0Y2goMHxhW20+PjJdKXtjYXNlIDA6MjA9PSgwfChmPTB8YVtsPj4yXSkpPyhhW20+PjJdPS0x''@;'; put 'put ''LGY9MTkpOihhW20+PjJdPTEsZj0oMHxmKT4xOT8yMDpmKzF8MCksYVtsPj4yXT1mO2JyZWFrO2Nhc2UgMTppZigoMHwoZj0wfGFbbD4+Ml0pKTwyMCYmK19bbCs4KyhwKy0xPDwzKT4+M10+Yyl7YVtsPj4yXT1mKzE7YnJlYWsgZX1hW2w+PjJdPWYrLTEsYVttPj4yXT0tMTticmVhayBlO2Rl''@;'; put 'put ''ZmF1bHQ6aWYoKDB8KGY9MHxhW2w+PjJdKSk+MCYmK19bbCs4KyhwKzE8PDMpPj4zXT5jKXthW2w+PjJdPWYrLTE7YnJlYWsgZX1hW2w+PjJdPWYrMSxhW20+PjJdPTE7YnJlYWsgZX19d2hpbGUoMCl9ZnVuY3Rpb24gajcobCl7cmV0dXJuIDB8YVsobHw9MCk+PjJdfWZ1bmN0aW9uIExEKGws''@;'; put 'put ''YyxmKXtjfD0wLGZ8PTA7dmFyIEQsUixHLHEscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLHBlPTA7aWYocT0wfGFbMjQrKGx8PTApPj4yXSxSPTB8YVsoRz0wfGFbbCsyMD4+Ml0pKygoRD0wfGFbbD4+Ml0pPDwyKT4+Ml0pe2w9MCxwPTA7ZTpmb3IoOyEoKDB8bCk+PSgwfEQpKTspZm9y''@;'; put 'put ''KGI9bCsxfDAsaz0wfGFbRysoYjw8Mik+PjJdLE09MHxBcihsLGMpLHc9MHxhW0crKGw8PDIpPj4yXTs7KXtpZigoMHx3KT49KDB8aykpe2w9Yjtjb250aW51ZSBlfWZvcihBPXErKHc8PDIpfDAsbD0wLG09MDshKCgwfGwpPj0oMHxjKSk7KXBlPStfW2YrKGwrTTw8Myk+PjNdLStfW2YrKCgw''@;'; put 'put ''fEFyKDB8YVtBPj4yXSxjKSk8PDMpPj4zXSxsPWwrMXwwLG09cGUqcGUrbTt3PXcrMXwwLHA9K0QwKCttKStwfXAvPSsoMHxSKX1lbHNlIHA9MTtyZXR1cm4rcH1mdW5jdGlvbiAkc2UobCxjLGYpe3ZhciBwO2x8PTAscD0xMCsoY3w9MCl8MCwoMHxhWyhmfD0wKT4+Ml0pPD0oMHxjKSYmKGFb''@;'; put 'put ''Zj4+Ml09cCxhW2w+PjJdPTB8VjAoMHxhW2w+PjJdLHA8PDMpKX1mdW5jdGlvbiBKdmUobCxjLGYpe3ZhciBwO2x8PTAscD0xMCsoY3w9MCl8MCwoMHxhWyhmfD0wKT4+Ml0pPD0oMHxjKSYmKGFbZj4+Ml09cCxhW2w+PjJdPTB8VjAoMHxhW2w+PjJdLHA8PDIpKX1mdW5jdGlvbiB0OChsLGMs''@;'; put 'put ''ZixwKXtsfD0wLGZ8PTA7dmFyIEEsdyxiLGssTSxtPTA7Zm9yKE09bGUsbGU9bGUrMTZ8MCxrPU0sYj0wfEFyKHB8PTAsY3w9MCksYz0wfEFyKGYsYykscD0wOzIhPSgwfHApOylfW2srKHA8PDMpPj4zXT0rX1tsKyhwK2I8PDMpPj4zXS0rX1tsKyhwK2M8PDMpPj4zXSxwPXArMXwwO3c9K19b''@;'; put 'put ''az4+M10sQT0rX1trKzg+PjNdO2Rve2lmKCEoKHc+PTA/dzotdyk8PTFlLTUqKEE+PTA/QTotQSkpKXtpZihtPStaZigrQS93KSx3PjApe2lmKCEoQTwwKSlicmVhazttKz02LjI4MzE4NTMwNzE3OTU4NjticmVha31pZighKHc8MCkpYnJlYWs7bSs9My4xNDE1OTI2NTM1ODk3OTM7YnJlYWt9''@;'; put 'put ''bT1BPjA/MS41NzA3OTYzMjY3OTQ4OTY2OjQuNzEyMzg4OTgwMzg0Njl9d2hpbGUoMCk7cmV0dXJuIGxlPU0sK219ZnVuY3Rpb24gcXNlKGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAscHw9MCxtfD0wLEF8PTA7dmFyIEhyLEVyLGZyLERyLEpyLFZpLFJvLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0w''@;'; put 'put ''LEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxMZT0wLFJlPTAsSGU9MCxWZT0wLHFlPTAscnQ9MCxXZT0wLGF0PTAsU3Q9MCxrdD0wLHN0PTAsY3Q9MCxidD0wLGFuPTAsU249MCxIbj0wLHVyPTAsTHI9MCxsMD0wLGxvPTAsVGE9MDtSbz1sZSxsZT1sZSs4MHwwLFZpPVJvLEc9K19bKGZ8''@;'; put 'put ''PTApPj4zXSxEPStfWyhNPWYrMjR8MCk+PjNdLGI9K19bKFI9ZiszMnwwKT4+M10sSHI9K19bZis3Mj4+M10sRXI9MHxhW2YrODA+PjJdLGZyPStfW2YrODg+PjNdLHE9K19bZis5Nj4+M10sRHI9MHxhW2YrMTA0Pj4yXSx3PTB8YVsoSnI9Zis1NnwwKT4+Ml07ZG97aWYoISgwPT0oMHxjKXwo''@;'; put 'put ''MHxFcik8MXx8KExyPTB8YVtjKzQ+PjJdLCgwfGwpPDF8KDB8THIpPDEpKSl7aWYodXI9MHxhW2M+PjJdLGwwPTB8bVYodyksYVtBPj4yXT0wLCgwfHVyKSE9KDB8THIpKXthW0E+PjJdPS0xMDAsZ1YobDApLGFbSnI+PjJdPXc7YnJlYWt9U249MHxhaChjLDEpLEhuPTB8YVtTbisyMD4+Ml0s''@;'; put 'put ''dXI9MHxhW1NuKzI0Pj4yXTtlOmRve2lmKDB8YVtmKzE2Pj4yXSlmb3IocncoMHxhW2YrMTA4Pj4yXSksaz0wfEFyKExyLGwpLHc9MDs7KXtpZigoMHx3KT49KDB8aykpYnJlYWsgZTtfW20rKHc8PDMpPj4zXT0rQmgoKSx3PXcrMXwwfX13aGlsZSgwKTtmb3IoRDwwJiYoRD0rTEQoU24sbCxt''@;'; put 'put ''KSxfW00+PjNdPUQpLGI8MCYmKF9bUj4+M109LjIsYj0uMiksRz49MCYmKF9bZj4+M109LTEsRz0tMSksYW49K3FsKCtELCsoMS1HKSkscnQ9K3FsKCtiLC4zMzMzMzMzMzMzMzMzMzMzKigyLUcpKS9ELGF0PTB8UW4oV2U9MHxBcihMcixsPDwzKSksU3Q9MHxRbihXZSksa3Q9ZisxMTZ8MCxz''@;'; put 'put ''dD1mKzY0fDAsY3Q9VmkrOHwwLGJ0PVZpKzE2fDAsVmU9MCxxZT0wLExlPXE7Oyl7Z28oMHxhdCwwfG0sMHxXZSksYWooSGU9MHxZayhsLExyLFJlPTB8ajcobDApLG0sMD09KDB8YVtrdD4+Ml0pPzA6cCksU3QsbSwrX1tzdD4+M10sRyxhbixWaSxBKSxNPTA7ZTpmb3IoOzspe2lmKCgwfE0p''@;'; put 'put ''Pj0oMHxMcikpe3E9MCxrPTA7YnJlYWt9Zm9yKHBlPVN0KygoUj0wfEFyKE0sbCkpPDwzKXwwLGJlPUhuKygoZ2U9TSsxfDApPDwyKXwwLGs9MHxhW0huKyhNPDwyKT4+Ml07Oyl7aWYoKDB8ayk+PSgwfGFbYmU+PjJdKSl7TT1nZTtjb250aW51ZSBlfXc9MHxhWyhPZT11cisoazw8Mil8MCk+''@;'; put 'put ''PjJdO3Q6ZG97aWYoKDB8dykhPSgwfE0pKWZvcihiPStfYyhtLGwsTSx3KSpydCx3PTA7Oyl7aWYoKDB8dyk+PSgwfGwpKWJyZWFrIHQ7cT1iKigrX1ttKyh3K1I8PDMpPj4zXS0rX1ttKygoMHxBcigwfGFbT2U+PjJdLGwpKSt3PDwzKT4+M10pLF9bKGxvPXBlKyh3PDwzKXwwKT4+M109K19b''@;'; put 'put ''bG8+PjNdLXEsdz13KzF8MH19d2hpbGUoMCk7az1rKzF8MH19Zm9yKDshKCgwfGspPj0oMHxMcikpOyl7Zm9yKFI9U3QrKChNPTB8QXIoayxsKSk8PDMpfDAsYj0wLHc9MDshKCgwfHcpPj0oMHxsKSk7KWI9KFRhPStfW1IrKHc8PDMpPj4zXSkqVGErYix3PXcrMXwwO3E9KGI9K0QwKCtiKSkr''@;'; put 'put ''cTtlOmRve2lmKGI+MClmb3IoYj0xL2Isdz0wOzspe2lmKCgwfHcpPj0oMHxsKSl7dz0wO2JyZWFrIGV9X1sobG89Uisodzw8Myl8MCk+PjNdPStfW2xvPj4zXSpiLHc9dysxfDB9ZWxzZSB3PTB9d2hpbGUoMCk7Zm9yKDshKCgwfHcpPj0oMHxsKSk7KV9bKGxvPW0rKHcrTTw8Myl8MCk+PjNd''@;'; put 'put ''PStfW2xvPj4zXSsgK19bUisodzw8Myk+PjNdKkxlLHc9dysxfDA7az1rKzF8MH1pZihWZT1WZSsxfDAsSGUmJihldihIZSksX1gobDAsLjg1KitfW2N0Pj4zXSsgK19bVmk+PjNdKzMuMyorX1tidD4+M10pKSwhKCgwfFZlKTwoMHxFcikmKExlPStNayhEcixMZSxxLHFlLGZyKSk+SHIpKWJy''@;'; put 'put ''ZWFrO3FlPXF9MHxhW2YrMTEyPj4yXSYmRWsobCxTbixtKSxnVihsMCksYVtKcj4+Ml09UmUsRnQoYXQpLCgwfFNuKSE9KDB8YykmJlJhKFNuKSxGdChTdCl9fXdoaWxlKDApO2xlPVJvfWZ1bmN0aW9uIE1rKGwsYyxmLHAsbSl7bHw9MCxjPStjLGY9K2YscD0rcCxtPSttO2Rve2lmKGwpe2lm''@;'; put 'put ''KGY+PXApe2MqPW07YnJlYWt9Ljk1KnA8Znx8KGM9Ljk5KmMvbSl9ZWxzZSBjKj1tfXdoaWxlKDApO3JldHVybitjfWZ1bmN0aW9uIEVrKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIGJlLE9lLExlLFZlLHFlLHJ0LFdlLGF0LFN0LHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9''@;'; put 'put ''MCxxPTAscGU9MCxnZT0wLFJlPTAsSGU9MDtmb3IoU3Q9bGUsbGU9bGUrMTZ8MCxWZT1TdCs4fDAscWU9U3QrNHwwLHJ0PVN0LFdlPTB8YVsoY3w9MCk+PjJdLGF0PTB8YVtjKzIwPj4yXSxiZT0wfGFbYysyND4+Ml0sYVsoTGU9U3QrMTJ8MCk+PjJdPTEwLGFbcnQ+PjJdPTEwLE9lPTB8UW4o''@;'; put 'put ''V2U8PDIpLG09MHxRbig4MCksYVtWZT4+Ml09bSxwPTB8UW4oNDApLGFbcWU+PjJdPXAsYz0wOzspe2lmKCgwfGMpPj0oMHxXZSkpe0Q9MCxwZT1tLGs9cCxSPXAsTT1tO2JyZWFrfWFbT2UrKGM8PDIpPj4yXT0wLGM9YysxfDB9Zm9yKDshKCgwfEQpPj0oMHxXZSkpOyl7Yz0wfGFbYXQrKEQ8''@;'; put 'put ''PDIpPj4yXTtlOmRve2lmKDE9PSgoMHxhW2F0KyhEKzE8PDIpPj4yXSktY3wwKSYmMD09KDB8YVtPZSsoRDw8Mik+PjJdKSYmKFJlPTB8YVtiZSsoYzw8Mik+PjJdLEhlPU9lKyhSZTw8Mil8MCwwPT0oMHxhW0hlPj4yXSkpKXtmb3IoYVtIZT4+Ml09MSxxPWF0KyhSZSsxPDwyKXwwLEQ9MCxn''@;'; put 'put ''ZT0wLEE9MCxHPTB8YVthdCsoUmU8PDIpPj4yXSxrPVIsYz1wZTshKCgwfEcpPj0oMHxhW3E+PjJdKSk7KTE9PSgoMHxhW2F0KygxKyhtPTB8YVsocD1iZSsoRzw8Mil8MCk+PjJdKTw8Mik+PjJdKS0oMHxhW2F0KyhtPDwyKT4+Ml0pfDApPyhhW09lKyhtPDwyKT4+Ml09MSxKdmUocWUsZ2Us''@;'; put 'put ''TGUpLEE9K19jKGYsbCxSZSwwfGFbcD4+Ml0pK0EsYVsoaz0wfGFbcWU+PjJdKSsoZ2U8PDIpPj4yXT1hW3A+PjJdLHA9RCxtPWdlKzF8MCk6KCRzZShWZSxELHJ0KSxiPSt0OChmLGwsUmUsMHxhW3A+PjJdKSxfWyhjPTB8YVtWZT4+Ml0pKyhEPDwzKT4+M109YixwPUQrMXwwLG09Z2UsTT1j''@;'; put 'put ''KSxEPXAsZ2U9bSxHPUcrMXwwO2ZvcihiPUEvKygwfGdlKSwoMHxEKT4wJiYoa1goRCxNKSxjPU0pLEE9KDB8Z2UpPjE/Ni4yODMxODUzMDcxNzk1ODYvKyhnZSstMXwwKTowLHA9MCx3PTA7Oyl7aWYoKDB8cCk+PSgwfGdlKSl7Uj1rLG09azticmVhayBlfWUyZShmLGwsYix3LFJlLDB8YVtr''@;'; put 'put ''KyhwPDwyKT4+Ml0pLHA9cCsxfDAsdys9QX19ZWxzZSBwPUQsbT1rLGM9cGV9d2hpbGUoMCk7RD1wKzF8MCxwZT1jLGs9bX1GdChPZSksRnQocGUpLEZ0KGspLGxlPVN0fWZ1bmN0aW9uIGtYKGwsYyl7eDEoY3w9MCxsfD0wLDgsNjgpfWZ1bmN0aW9uIGUyZShsLGMsZixwLG0sQSl7dmFyIHc7''@;'; put 'put ''bHw9MCxjfD0wLGY9K2YsbXw9MCxBfD0wLHc9K2hhKCsocD0rcCkpKmYsbT0wfEFyKG0sYyksQT0wfEFyKEEsYyksX1tsKyhBPDwzKT4+M109dysgK19bbCsobTw8Myk+PjNdLHA9K0RhKCtwKSpmLF9bbCsoQSsxPDwzKT4+M109cCsgK19bbCsobSsxPDwzKT4+M119ZnVuY3Rpb24gdDJlKGws''@;'; put 'put ''YyxmLHAsbSxBKXtsfD0wLGN8PTAscHw9MCxtfD0wLEF8PTA7dmFyIHVyLEhyLEVyLGZyLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxMZT0wLFJlPTAsSGU9MCxWZT0wLHFlPTAscnQ9MCxXZT0wLGF0PTAsU3Q9MCxrdD0wLHN0PTAsRXQ9MCxa''@;'; put 'put ''dD0wLGN0PTAsYnQ9MCxhbj0wLFNuPTAsSG49MCxEcj0wLEpyPTAsTHI9MCxsMD0wO2lmKEc9K19bKGZ8PTApPj4zXSxNPStfWyhEPWYrMjR8MCk+PjNdLGs9K19bKFI9ZiszMnwwKT4+M10sdXI9K19bZis3Mj4+M10sSHI9MHxhW2YrODA+PjJdLEVyPStfW2YrODg+PjNdLGdlPStfW2YrOTY+''@;'; put 'put ''PjNdLGZyPTB8YVtmKzEwND4+Ml0sdz0wfGFbZis1Nj4+Ml0sQ3UoOTIxOTgsMzIsMSwwfGFbMTU3MTJdKSwhKDA9PSgwfGMpfCgwfEhyKTwxfHwoRHI9MHxhW2M+PjJdLGI9MHxhW2MrND4+Ml0sKDB8bCk8MXwoMHxiKTwxKSkpe2lmKEpyPTB8UW4oMHxBcihxPWw8PDMsYikpLCgwfGIpPCgw''@;'; put 'put ''fGFbZis1Mj4+Ml0pPyhadD0wLGN0PTAsYnQ9MCxhbj0wLFNuPTAsSG49MCk6KG1WKHcpLGFuPTB8UW4oODAqbHwwKSxTbj0wfFFuKDgwKSxadD1Ibj0wfFFuKDgwKSxjdD1TbixidD1hbiksYVtBPj4yXT0wLCgwfERyKT09KDB8Yikpe2t0PTB8YWgoYywxKSxzdD0wfGFba3QrMjA+PjJdLEV0''@;'; put 'put ''PTB8YVtrdCsyND4+Ml07ZTpkb3tpZigwfGFbZisxNj4+Ml0pZm9yKHJ3KDB8YVtmKzEwOD4+Ml0pLGI9MHxBcihEcixsKSx3PTA7Oyl7aWYoKDB8dyk+PSgwfGIpKWJyZWFrIGU7X1ttKyh3PDwzKT4+M109K0JoKCksdz13KzF8MH19d2hpbGUoMCk7Zm9yKE08MCYmKE09K0xEKGt0LGwsbSks''@;'; put 'put ''X1tEPj4zXT1NKSxrPDAmJihfW1I+PjNdPS4yLGs9LjIpLEc+PTAmJihfW2Y+PjNdPS0xLEc9LTEpLFN0PStxbCgrTSwrKGF0PTEtRykpLHJ0PStxbCgraywuMzMzMzMzMzMzMzMzMzMzMyooMi1HKSkvTSxXZT0wfFFuKHEpLFJlPTB8UW4oTGU9MHxBcihEcixxKSksSGU9MHxBcihEcixsKSxW''@;'; put 'put ''ZT1mKzExNnwwLHFlPTAhPSgwfHApLE9lPS0xPT1HLGJlPTAsRz0wOzspe2Zvcih3PTA7ISgoMHx3KT49KDB8SGUpKTspX1tKcisodzw8Myk+PjNdPTAsdz13KzF8MDtmb3IoZ28oMHxSZSwwfG0sMHxMZSkscT0wOzspe2lmKCEoKDB8cSk8KDB8RHIpKSl7Uj0wO2JyZWFrfWZvcih3PTA7ISgo''@;'; put 'put ''MHx3KT49KDB8bCkpOylfW1dlKyh3PDwzKT4+M109MCx3PXcrMXwwO1I9MHxBcihxLGwpO2U6ZG97aWYocWUmMCE9KDB8YVtWZT4+Ml0pKWZvcih3PTA7Oyl7aWYoKDB8dyk9PSgwfERyKSl7dz0wO2JyZWFrIGV9dDpkb3tpZigoMHx3KSE9KDB8cSkpZm9yKE09K2R1KG0sbCxxLHcpLEE9cCso''@;'; put 'put ''dzw8Myl8MCxEPTB8QXIodyxsKSxrPStxbCgrTSwrYXQpLGs9MS8oT2U/TSpNOmspLGI9MDs7KXtpZigoMHxiKT49KDB8bCkpYnJlYWsgdDtfWyhwZT1XZSsoYjw8Myl8MCk+PjNdPStfW0E+PjNdKlN0KigrX1ttKyhiK1I8PDMpPj4zXS0rX1ttKyhiK0Q8PDMpPj4zXSkqaysgK19bcGU+PjNd''@;'; put 'put ''LGI9YisxfDB9fXdoaWxlKDApO3c9dysxfDB9ZWxzZSBmb3Iodz0wOzspe2lmKCgwfHcpPT0oMHxEcikpe3c9MDticmVhayBlfXQ6ZG97aWYoKDB8dykhPSgwfHEpKWZvcihNPStkdShtLGwscSx3KSxBPTB8QXIodyxsKSxrPStxbCgrTSwrYXQpLGs9MS8oT2U/TSpNOmspLGI9MDs7KXtpZigo''@;'; put 'put ''MHxiKT49KDB8bCkpYnJlYWsgdDtfWyhwZT1XZSsoYjw8Myl8MCk+PjNdPSgrX1ttKyhiK1I8PDMpPj4zXS0rX1ttKyhiK0E8PDMpPj4zXSkqU3QqaysgK19bcGU+PjNdLGI9YisxfDB9fXdoaWxlKDApO3c9dysxfDB9fXdoaWxlKDApO2Zvcig7ISgoMHx3KT49KDB8bCkpOylfWyhwZT1Kciso''@;'; put 'put ''dytSPDwzKXwwKT4+M109K19bcGU+PjNdKyArX1tXZSsodzw8Myk+PjNdLHc9dysxfDA7cT1xKzF8MH1lOmZvcig7Oyl7aWYoISgoMHxSKTwoMHxEcikpKXtNPTAsYj0wO2JyZWFrfWZvcih3PTA7ISgoMHx3KT49KDB8bCkpOylfW1dlKyh3PDwzKT4+M109MCx3PXcrMXwwO2ZvcihBPXN0Kygo''@;'; put 'put ''cT1SKzF8MCk8PDIpfDAscGU9MHxBcihSLGwpLGI9MHxhW3N0KyhSPDwyKT4+Ml07Oyl7aWYoKDB8Yik+PSgwfGFbQT4+Ml0pKXt3PTA7YnJlYWt9dz0wfGFbKEQ9RXQrKGI8PDIpfDApPj4yXTt0OmRve2lmKCgwfHcpIT0oMHxSKSlmb3Ioaz0rX2MobSxsLFIsdykqcnQsdz0wOzspe2lmKCgw''@;'; put 'put ''fHcpPj0oMHxsKSlicmVhayB0O009ayooK19bbSsodytwZTw8Myk+PjNdLStfW20rKCgwfEFyKDB8YVtEPj4yXSxsKSkrdzw8Myk+PjNdKSxfWyhMcj1XZSsodzw8Myl8MCk+PjNdPStfW0xyPj4zXS1NLHc9dysxfDB9fXdoaWxlKDApO2I9YisxfDB9Zm9yKDs7KXtpZigoMHx3KT49KDB8bCkp''@;'; put 'put ''e1I9cTtjb250aW51ZSBlfV9bKExyPUpyKyh3K3BlPDwzKXwwKT4+M109K19bTHI+PjNdKyArX1tXZSsodzw8Myk+PjNdLHc9dysxfDB9fWZvcig7ISgoMHxiKT49KDB8RHIpKTspe2ZvcihBPTB8QXIoYixsKSx3PTA7Oyl7aWYoKDB8dyk+PSgwfGwpKXtrPTAsdz0wO2JyZWFrfV9bV2UrKHc8''@;'; put 'put ''PDMpPj4zXT0rX1tKcisodytBPDwzKT4+M10sdz13KzF8MH1mb3IoOyEoKDB8dyk+PSgwfGwpKTspaz0obDA9K19bV2UrKHc8PDMpPj4zXSkqbDArayx3PXcrMXwwO009KGs9K0QwKCtrKSkrTTtlOmRve2lmKGs+MClmb3Ioaz0xL2ssdz0wOzspe2lmKCgwfHcpPj0oMHxsKSl7dz0wO2JyZWFr''@;'; put 'put ''IGV9X1soTHI9V2UrKHc8PDMpfDApPj4zXT0rX1tMcj4+M10qayx3PXcrMXwwfWVsc2Ugdz0wfXdoaWxlKDApO2Zvcig7ISgoMHx3KT49KDB8bCkpOylfWyhMcj1tKyh3K0E8PDMpfDApPj4zXT0rX1tMcj4+M10rICtfW1dlKyh3PDwzKT4+M10qZ2Usdz13KzF8MDtiPWIrMXwwfWlmKCEoKDB8''@;'; put 'put ''KGJlPWJlKzF8MCkpPCgwfEhyKSYoZ2U9K01rKGZyLGdlLE0sRyxFcikpPnVyKSlicmVhaztHPU19MHxhW2YrMTEyPj4yXSYmRWsobCxrdCxtKSxGdChSZSksKDB8a3QpIT0oMHxjKSYmUmEoa3QpLEZ0KFdlKX1lbHNlIGFbQT4+Ml09LTEwMDswfGJ0JiZGdChhbiksMHxjdCYmRnQoU24pLDB8''@;'; put 'put ''WnQmJkZ0KEhuKSxGdChKcil9fWZ1bmN0aW9uIFh2ZShsLGMsZixwLG0sQSl7bHw9MCxjfD0wLHB8PTAsbXw9MCxBfD0wO3ZhciBEcixKcixMcixsMCxWaSxSbyxsbyxnYSx4aSxEbCxvcyxvbCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9''@;'; put 'put ''MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTAsV2U9MCxhdD0wLFN0PTAsa3Q9MCxzdD0wLEV0PTAsWnQ9MCxjdD0wLGJ0PTAsYW49MCxTbj0wLEhuPTAsdXI9MCxIcj0wLEVyPTAsZnI9MCxPaT0wLFRhPTAsWmE9MCxMMD0wLHhhPTA7aWYob2w9bGUsbGU9bGUrMzJ8MCxsbz1vbCsyMHwwLHhp''@;'; put 'put ''PW9sKzE2fDAsRGw9b2wrMTJ8MCxvcz1vbCs4fDAsRHI9b2wsZ2U9K19bKGZ8PTApPj4zXSxwZT0rX1soaz1mKzI0fDApPj4zXSxxPStfWyhNPWYrMzJ8MCk+PjNdLEpyPStfW2YrNzI+PjNdLExyPTB8YVtmKzgwPj4yXSxsMD0rX1tmKzg4Pj4zXSxiZT0rX1tmKzk2Pj4zXSxWaT0wfGFbZisx''@;'; put 'put ''MDQ+PjJdLGFbKFJvPW9sKzI0fDApPj4yXT0wLGFbbG8+PjJdPTEwLGFbeGk+PjJdPTAsYVtEbD4+Ml09MCxhW29zPj4yXT0wLF9bRHI+PjNdPTAsRD0wfGFbKGdhPWYrNTZ8MCk+PjJdLCEoMD09KDB8Yyl8KDB8THIpPDF8fChPaT0wfGFbYz4+Ml0sdz0wfGFbYys0Pj4yXSwoMHxsKTwxfCgw''@;'; put 'put ''fHcpPDEpKSl7KDB8dyk8KDB8YVtmKzUyPj4yXSk/KFphPTAsVGE9MCk6KFphPTB8bVYoRCksYVt4aT4+Ml09MHxRbig4MCpsfDApLGFbRGw+PjJdPTB8UW4oODApLGFbb3M+PjJdPTB8UW4oODApLFRhPTEpLGFbQT4+Ml09MDtlOmRve2lmKCgwfE9pKT09KDB8dykpe1I9MHxhaChjLDEpLHVy''@;'; put 'put ''PTB8YVtSKzIwPj4yXSxIcj0wfGFbUisyND4+Ml07dDpkb3tpZigwfGFbZisxNj4+Ml0pZm9yKHJ3KDB8YVtmKzEwOD4+Ml0pLGI9MHxBcihPaSxsKSx3PTA7Oyl7aWYoKDB8dyk+PSgwfGIpKWJyZWFrIHQ7X1ttKyh3PDwzKT4+M109K0JoKCksdz13KzF8MH19d2hpbGUoMCk7Zm9yKHBlPDAm''@;'; put 'put ''JihwZT0rTEQoUixsLG0pLF9baz4+M109cGUpLHE8MCYmKF9bTT4+M109LjIscT0uMiksZ2U+PTAmJihfW2Y+PjNdPS0xLGdlPS0xKSxIbj0rcWwoK3BlLCsoU249MS1nZSkpLEV0PStxbCgrcSwuMzMzMzMzMzMzMzMzMzMzMyooMi1nZSkpL3BlLEVyPTB8UW4oWnQ9bDw8MyksZnI9MHxRbiha''@;'; put 'put ''dD0wfEFyKE9pLFp0KSksY3Q9MCE9KDB8VGEpLGJ0PWYrMTE2fDAsYW49Zis2NHwwLFN0PS0xPT1nZSxrdD0wIT0oMHxwKSxzdD0xLysoMHxPaSksdz0wLFdlPTAsYXQ9MDs7KXtXZT1XZSsxfDAsZ28oMHxmciwwfG0sMHxadCksY3QmJihEPXc9MHxqNyhaYSksdz0wfFlrKGwsT2ksdyxtLDA9''@;'; put 'put ''PSgwfGFbYnQ+PjJdKT8wOnApKSxPZT0wLGdlPTAsTGU9MCxwZT0wO3Q6Zm9yKDsoMHxMZSk8KDB8T2kpOyl7Zm9yKGI9MDshKCgwfGIpPj0oMHxsKSk7KV9bRXIrKGI8PDMpPj4zXT0wLGI9YisxfDA7Zm9yKE09dXIrKChxZT1MZSsxfDApPDwyKXwwLHJ0PTB8QXIoTGUsbCksaz0wfGFbdXIr''@;'; put 'put ''KExlPDwyKT4+Ml07ISgoMHxrKT49KDB8YVtNPj4yXSkpOyl7Yj0wfGFbKEc9SHIrKGs8PDIpfDApPj4yXTtuOmRve2lmKCgwfGIpIT0oMHxMZSkpZm9yKHE9K19jKG0sbCxMZSxiKSpFdCxiPTA7Oyl7aWYoKDB8Yik+PSgwfGwpKWJyZWFrIG47TDA9cSooK19bbSsoYitydDw8Myk+PjNdLStf''@;'; put 'put ''W20rKCgwfEFyKDB8YVtHPj4yXSxsKSkrYjw8Myk+PjNdKSxfWyhWZT1FcisoYjw8Myl8MCk+PjNdPStfW1ZlPj4zXS1MMCxiPWIrMXwwfX13aGlsZSgwKTtrPWsrMXwwfW46ZG97aWYoY3Qpe2lmKG9MKHcsK19bYW4+PjNdLG0rKHJ0PDwzKXwwLExlLFJvLGxvLHhpLERsLG9zLERyLEEpLE9l''@;'; put 'put ''PStfW0RyPj4zXStPZSxnZSs9KygwfChWZT0wfGFbUm8+PjJdKSksMHxhW0E+PjJdKXtNPUVyLGs9ZnIsdz1FcixiPWZyLEc9Njc7YnJlYWsgZX1mb3IoTT0wfGFbb3M+PjJdLEc9MHxhW0RsPj4yXSxMZT0wfGFbeGk+PjJdLGI9MDs7KXtpZigoMHxiKT49KDB8VmUpKWJyZWFrIG47Zm9yKEww''@;'; put 'put ''PShMMD0rX1tNKyhiPDwzKT4+M10pPjFlLTE1P0wwOjFlLTE1LFJlPUcrKGI8PDMpfDAsSGU9MHxBcihiLGwpLHE9K3FsKCtMMCwrU24pLHE9MS8oU3Q/TDAqTDA6cSksaz0wOyEoKDB8ayk+PSgwfGwpKTspX1soeGE9RXIrKGs8PDMpfDApPj4zXT0rX1tSZT4+M10qSG4qKCtfW20rKGsrcnQ8''@;'; put 'put ''PDMpPj4zXS0rX1tMZSsoaytIZTw8Myk+PjNdKSpxKyArX1t4YT4+M10saz1rKzF8MDtiPWIrMXwwfX1lbHNlIGlmKGt0JjAhPSgwfGFbYnQ+PjJdKSlmb3IoYj0wOzspe2lmKCgwfGIpPT0oMHxPaSkpYnJlYWsgbjtyOmRve2lmKCgwfGIpIT0oMHxMZSkpZm9yKEwwPStkdShtLGwsTGUsYiks''@;'; put 'put ''TT1wKyhiPDwzKXwwLEc9MHxBcihiLGwpLHE9K3FsKCtMMCwrU24pLHE9MS8oU3Q/TDAqTDA6cSksaz0wOzspe2lmKCgwfGspPj0oMHxsKSlicmVhayByO19bKFZlPUVyKyhrPDwzKXwwKT4+M109K19bTT4+M10qSG4qKCtfW20rKGsrcnQ8PDMpPj4zXS0rX1ttKyhrK0c8PDMpPj4zXSkqcSsg''@;'; put 'put ''K19bVmU+PjNdLGs9aysxfDB9fXdoaWxlKDApO2I9YisxfDB9ZWxzZSBmb3IoYj0wOzspe2lmKCgwfGIpPT0oMHxPaSkpYnJlYWsgbjtyOmRve2lmKCgwfGIpIT0oMHxMZSkpZm9yKEwwPStkdShtLGwsTGUsYiksTT0wfEFyKGIsbCkscT0rcWwoK0wwLCtTbikscT0xLyhTdD9MMCpMMDpxKSxr''@;'; put 'put ''PTA7Oyl7aWYoKDB8ayk+PSgwfGwpKWJyZWFrIHI7X1soVmU9RXIrKGs8PDMpfDApPj4zXT0oK19bbSsoaytydDw8Myk+PjNdLStfW20rKGsrTTw8Myk+PjNdKSpIbipxKyArX1tWZT4+M10saz1rKzF8MH19d2hpbGUoMCk7Yj1iKzF8MH19d2hpbGUoMCk7Zm9yKHE9MCxiPTA7ISgoMHxiKT49''@;'; put 'put ''KDB8bCkpOylxPShMMD0rX1tFcisoYjw8Myk+PjNdKSpMMCtxLGI9YisxfDA7cGU9KHE9K0QwKCtxKSkrcGU7bjpkb3tpZihxPjApZm9yKHE9MS9xLGI9MDs7KXtpZigoMHxiKT49KDB8bCkpe2I9MDticmVhayBufV9bKHhhPUVyKyhiPDwzKXwwKT4+M109K19beGE+PjNdKnEsYj1iKzF8MH1l''@;'; put 'put ''bHNlIGI9MH13aGlsZSgwKTtmb3IoOzspe2lmKCgwfGIpPj0oMHxsKSl7TGU9cWU7Y29udGludWUgdH1fWyh4YT1tKyhiK3J0PDwzKXwwKT4+M109K19beGE+PjNdKyArX1tFcisoYjw8Myk+PjNdKmJlLGI9YisxfDB9fWlmKDB8dyYmKGV2KHcpLF9YKFphLGdlKnN0KjUrT2Uqc3QpKSwhKCgw''@;'; put 'put ''fFdlKTwoMHxMcikmKGJlPStNayhWaSxiZSxwZSxhdCxsMCkpPkpyKSlicmVhazthdD1wZX0wfGFbZisxMTI+PjJdPyhFayhsLFIsbSksTT1FcixrPWZyLGI9ZnIsdz1FcixHPTY2KTooTT1FcixrPWZyLGI9ZnIsdz1FcixHPTY2KX1lbHNlIGFbQT4+Ml09LTEwMCxSPWMsTT0wLGs9MCxiPTAs''@;'; put 'put ''dz0wLEc9NjZ9d2hpbGUoMCk7NjY9PSgwfEcpJiZUYSYmKEc9NjcpLDY3PT0oMHxHKSYmKGdWKFphKSxhW2dhPj4yXT1EKSwwfGsmJkZ0KGIpLCgwfFIpIT0oMHxjKSYmUmEoUiksMHxNJiZGdCh3KSwwfCh3PTB8YVt4aT4+Ml0pJiZGdCh3KSwwfCh3PTB8YVtEbD4+Ml0pJiZGdCh3KSwwfCh3''@;'; put 'put ''PTB8YVtvcz4+Ml0pJiZGdCh3KX1sZT1vbH1mdW5jdGlvbiBPRChsLGMsZixwLG0sQSx3LGIpe2x8PTAsY3w9MCxmfD0wLG18PTAsQXw9MCx3PSt3LGJ8PTA7dmFyIExyLGwwLFZpLE9pLFJvLGxvLFphLGdhLERsLG9zLG9sLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0w''@;'; put 'put ''LE9lPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTAsV2U9MCxhdD0wLFN0PTAsa3Q9MCxzdD0wLEV0PTAsWnQ9MCxjdD0wLGJ0PTAsYW49MCxTbj0wLEhuPTAsdXI9MCxIcj0wLEVyPTAsZnI9MCxEcj0wLEpyPTAsVGE9MCx4aT0wLEwwPTAseGE9MDtpZihvbD1sZSxsZT1sZSs0OHww''@;'; put 'put ''LFI9b2wrOHwwLGdhPW9sKzM2fDAsTHI9b2wrMzJ8MCxEbD1vbCsyOHwwLG9zPW9sKzI0fDAsbDA9b2wsRz0rX1socHw9MCk+PjNdLHBlPStfWyhxPXArMzJ8MCk+PjNdLFZpPStfW3ArNzI+PjNdLE9pPTB8YVtwKzgwPj4yXSxSbz0rX1twKzg4Pj4zXSxiZT0rX1twKzk2Pj4zXSxsbz0wfGFb''@;'; put 'put ''cCsxMDQ+PjJdLGFbKFphPW9sKzQwfDApPj4yXT0wLGFbZ2E+PjJdPTEwLGFbTHI+PjJdPTAsYVtEbD4+Ml09MCxhW29zPj4yXT0wLF9bbDA+PjNdPTAsISgwPT0oMHxjKXwoMHxPaSk8MXx8KFRhPTB8YVtjPj4yXSxEPTB8YVtjKzQ+PjJdLCgwfGwpPDF8KDB8RCk8MSkpKXtpZigwIT0oMHxh''@;'; put 'put ''W3ArMTMyPj4yXSkmJigwfEQpPj0oMHxhW3ArNTI+PjJdKT8oTT0wfFFuKDgwKmx8MCksYVtMcj4+Ml09TSxhW0RsPj4yXT0wfFFuKDgwKSxhW29zPj4yXT0wfFFuKDgwKSxnZT0xLGs9TSk6KGdlPTAsaz0wLE09MCksYVtiPj4yXT0wLCgwfFRhKT09KDB8RCkpe0pyPTB8YWgoYywxKSxmPyhE''@;'; put 'put ''cj0wfGFbZisyOD4+Ml0saz1mKTooRHI9MCxrPUpyKSxmcj0wfGFbaysyND4+Ml0sRXI9MHxhW2srMjA+PjJdLHc8MCYmKGt0PStmdW5jdGlvbiBLdmUobCxjLGYpe2x8PTAsY3w9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MDtpZihmfD0wKXttPTAscD0wO2U6Zm9yKDshKCgwfG0pPj0oMHxs''@;'; put 'put ''KSk7KWZvcihBPW0rMXwwLHc9MHxhW2MrKEE8PDIpPj4yXSxtPTB8YVtjKyhtPDwyKT4+Ml07Oyl7aWYoKDB8bSk+PSgwfHcpKXttPUE7Y29udGludWUgZX1iPStfW2YrKG08PDMpPj4zXStwLG09bSsxfDAscD1ifXAvPSsoMHxhW2MrKGw8PDIpPj4yXSl9ZWxzZSBwPTE7cmV0dXJuK3B9KFRh''@;'; put 'put ''LEVyLERyKSx3PShTdD0rKDB8YVtFcisoVGE8PDIpPj4yXSkpLygoV2U9KygwfFRhKSkqV2UtU3QpKncvK3FsKCtrdCwrKEcrMSkpLEhyPTB8YVsxNTcxMl0sX1tSPj4zXT1rdCxfW1IrOD4+M109dyxUMChIciw5MjIzMSxSKSk7ZTpkb3tpZigwfGFbcCsxNj4+Ml0pZm9yKEN1KDkyMjUzLDI0''@;'; put 'put ''LDEsMHxhWzE1NzEyXSkscncoMHxhW3ArMTA4Pj4yXSksTT0wfEFyKFRhLGwpLGs9MDs7KXtpZigoMHxrKT49KDB8TSkpYnJlYWsgZTtfW0ErKGs8PDMpPj4zXT0rQmgoKSxrPWsrMXwwfX13aGlsZSgwKTsoZnVuY3Rpb24gWDMobCxjLGYscCxtLEEpe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9''@;'; put 'put ''MDt2YXIgYmUsT2UsTGUsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsUmU9MDtMZT1sZSxsZT1sZSsxNnwwLE9lPUxlLGJlPTA9PSgwfChBfD0wKSksaz0wLE09MCxEPTEsYj0wO2U6Zm9yKDshKCgwfGIpPj0oMHxsKSk7KWZvcihwZT1iKzF8MCxnZT1wKyhwZTw8''@;'; put 'put ''Mil8MCxxPTB8YVtwKyhiPDwyKT4+Ml07Oyl7aWYoKDB8cSk+PSgwfGFbZ2U+PjJdKSl7Yj1wZTtjb250aW51ZSBlfXc9MHxhW20rKHE8PDIpPj4yXTt0OmRve2lmKCgwfHcpIT0oMHxiKSlmb3IoUj0rZHUoZixjLGIsdyksYmV8fChEPStfW0ErKHE8PDMpPj4zXSksUmU9MS8oRCpEKSxHPUQq''@;'; put 'put ''UipSZSxSPVIqUipSZSx3PTA7Oyl7aWYoKDB8dyk+PSgwfGMpKWJyZWFrIHQ7dz13KzF8MCxrKz1SLE0rPUd9fXdoaWxlKDApO3E9cSsxfDB9Zm9yKGs9TS9rLGI9MHxBcihjLGwpLHc9MDshKCgwfHcpPj0oMHxiKSk7KV9bKGM9Zisodzw8Myl8MCk+PjNdPStfW2M+PjNdKmssdz13KzF8MDtm''@;'; put 'put ''PTB8YVsxNTcxMl0sX1tPZT4+M109ayxUMChmLDkyMjc4LE9lKSxsZT1MZX0pKFRhLGwsQSxFcixmcixEcikscGU8MCYmKF9bcT4+M109LjIpLEc+PTAmJihfW3A+PjNdPS0xLEc9LTEpLEhuPTB8UW4odXI9bDw8MyksSHI9MHxRbih1cj0wfEFyKFRhLHVyKSksRXQ9MCE9KDB8Z2UpLFp0PXAr''@;'; put 'put ''MTE2fDAsY3Q9MD09KDB8RHIpLGJ0PXArOHwwLGFuPTAhPSgwfG0pLFNuPS0xPT1HLGt0PTEtRyxzdD1wKzY0fDAsaz0wLGF0PTAsU3Q9MCxHPTEsV2U9YmU7ZTpmb3IoOzspe2F0PWF0KzF8MCxnbygwfEhyLDB8QSwwfHVyKSxFdCYmKGs9MHxZayhsLFRhLDEwLEEsMD09KDB8YVtadD4+Ml0p''@;'; put 'put ''PzA6bSkpLGdlPTAsYmU9MDt0OmZvcig7KDB8Z2UpPCgwfFRhKTspe2ZvcihNPTA7ISgoMHxNKT49KDB8bCkpOylfW0huKyhNPDwzKT4+M109MCxNPU0rMXwwO2ZvcihxPUVyKygocnQ9Z2UrMXwwKTw8Mil8MCxxZT0wfEFyKGdlLGwpLFI9MHxhW0VyKyhnZTw8Mik+PjJdOyEoKDB8Uik+PSgw''@;'; put 'put ''fGFbcT4+Ml0pKTspe009MHxhWyhmPWZyKyhSPDwyKXwwKT4+Ml07bjpkb3tpZigoMHxNKSE9KDB8Z2UpKXtWZT0rZHUoQSxsLGdlLE0pLGN0fHwoRz0rX1tEcisoUjw8Myk+PjNdKSxwZT0rX1tidD4+M107cjpkb3tpZigyIT1wZSlpZigxPT1wZSlmb3IocGU9MS8oRypHKSooVmUtRyksT2U9''@;'; put 'put ''MS9WZSxNPTA7Oyl7aWYoKDB8TSk+PSgwfGwpKWJyZWFrIHI7TGU9cGUqKCtfW0ErKE0rcWU8PDMpPj4zXS0rX1tBKygoMHxBcigwfGFbZj4+Ml0sbCkpK008PDMpPj4zXSkqT2UsX1soSGU9SG4rKE08PDMpfDApPj4zXT0rX1tIZT4+M10tTGUsTT1NKzF8MH1lbHNlIGZvcihwZT0xLytxbCgr''@;'; put 'put ''RywrKHBlKzEpKSxPZT1WZS1HLExlPTEvVmUsTT0wOzspe2lmKCgwfE0pPj0oMHxsKSlicmVhayByO0wwPXBlKihMMD0rX1tBKyhNK3FlPDwzKT4+M10tK19bQSsoKDB8QXIoMHxhW2Y+PjJdLGwpKStNPDwzKT4+M10pKitxbCgrT2UsKyArX1tidD4+M10pKkxlLF9bKEhlPUhuKyhNPDwzKXww''@;'; put 'put ''KT4+M109K19bSGU+PjNdLUwwLE09TSsxfDB9ZWxzZSBmb3IocGU9VmUtRyxwZT1wZSpwZSooMS8oRypHKkcpKSxPZT0xL1ZlLE09MDs7KXtpZigoMHxNKT49KDB8bCkpYnJlYWsgcjtMMD1wZSooK19bQSsoTStxZTw8Myk+PjNdLStfW0ErKCgwfEFyKDB8YVtmPj4yXSxsKSkrTTw8Myk+PjNd''@;'; put 'put ''KSpPZSxfWyhIZT1IbisoTTw8Myl8MCk+PjNdPStfW0hlPj4zXS1MMCxNPU0rMXwwfX13aGlsZSgwKTtpZihhbiYwIT0oMHxhW1p0Pj4yXSkpZm9yKEQ9bSsoUjw8Myl8MCxwZT0rcWwoK1ZlLCtrdCkscGU9MS8oU24/VmUqVmU6cGUpLE09MDs7KXtpZigoMHxNKT49KDB8bCkpYnJlYWsgbjtM''@;'; put 'put ''MD0rX1tEPj4zXSp3KigrX1tBKyhNK3FlPDwzKT4+M10tK19bQSsoKDB8QXIoMHxhW2Y+PjJdLGwpKStNPDwzKT4+M10pKnBlLF9bKEhlPUhuKyhNPDwzKXwwKT4+M109K19bSGU+PjNdLUwwLE09TSsxfDB9ZWxzZSBmb3IocGU9K3FsKCtWZSwra3QpLHBlPTEvKFNuP1ZlKlZlOnBlKSxNPTA7''@;'; put 'put ''Oyl7aWYoKDB8TSk+PSgwfGwpKWJyZWFrIG47TDA9KCtfW0ErKE0rcWU8PDMpPj4zXS0rX1tBKygoMHxBcigwfGFbZj4+Ml0sbCkpK008PDMpPj4zXSkqdypwZSxfWyhIZT1IbisoTTw8Myl8MCk+PjNdPStfW0hlPj4zXS1MMCxNPU0rMXwwfX19d2hpbGUoMCk7Uj1SKzF8MH1uOmRve2lmKEV0''@;'; put 'put ''KXtpZihvTChrLCtfW3N0Pj4zXSxBKyhxZTw8Myl8MCxnZSxaYSxnYSxMcixEbCxvcyxsMCxiKSxmPTB8YVtaYT4+Ml0sMHxhW2I+PjJdKWJyZWFrIGU7Zm9yKFI9MHxhW29zPj4yXSxxPTB8YVtEbD4+Ml0sZ2U9MHxhW0xyPj4yXSxNPTA7Oyl7aWYoKDB8TSk+PSgwfGYpKXtwZT0wLE09MDti''@;'; put 'put ''cmVhayBufWZvcihMMD0oTDA9K19bUisoTTw8Myk+PjNdKT4xZS0xNT9MMDoxZS0xNSxSZT1xKyhNPDwzKXwwLEhlPTB8QXIoTSxsKSxwZT0rcWwoK0wwLCtrdCkscGU9MS8oU24/TDAqTDA6cGUpLEQ9MDshKCgwfEQpPj0oMHxsKSk7KV9bKHhhPUhuKyhEPDwzKXwwKT4+M109K19bUmU+PjNd''@;'; put 'put ''KncqKCtfW0ErKEQrcWU8PDMpPj4zXS0rX1tnZSsoRCtIZTw8Myk+PjNdKSpwZSsgK19beGE+PjNdLEQ9RCsxfDA7TT1NKzF8MH19ZWxzZSBpZihhbiYwIT0oMHxhW1p0Pj4yXSkpZm9yKE09MDs7KXtpZigoMHxNKT09KDB8VGEpKXtwZT0wLE09MDticmVhayBufXI6ZG97aWYoKDB8TSkhPSgw''@;'; put 'put ''fGdlKSlmb3IoTDA9K2R1KEEsbCxnZSxNKSxmPW0rKE08PDMpfDAsUj0wfEFyKE0sbCkscGU9K3FsKCtMMCwra3QpLHBlPTEvKFNuP0wwKkwwOnBlKSxEPTA7Oyl7aWYoKDB8RCk+PSgwfGwpKWJyZWFrIHI7X1soSGU9SG4rKEQ8PDMpfDApPj4zXT0rX1tmPj4zXSp3KigrX1tBKyhEK3FlPDwz''@;'; put 'put ''KT4+M10tK19bQSsoRCtSPDwzKT4+M10pKnBlKyArX1tIZT4+M10sRD1EKzF8MH19d2hpbGUoMCk7TT1NKzF8MH1lbHNlIGZvcihNPTA7Oyl7aWYoKDB8TSk9PSgwfFRhKSl7cGU9MCxNPTA7YnJlYWsgbn1yOmRve2lmKCgwfE0pIT0oMHxnZSkpZm9yKEwwPStkdShBLGwsZ2UsTSksZj0wfEFy''@;'; put 'put ''KE0sbCkscGU9K3FsKCtMMCwra3QpLHBlPTEvKFNuP0wwKkwwOnBlKSxEPTA7Oyl7aWYoKDB8RCk+PSgwfGwpKWJyZWFrIHI7X1soSGU9SG4rKEQ8PDMpfDApPj4zXT0oK19bQSsoRCtxZTw8Myk+PjNdLStfW0ErKEQrZjw8Myk+PjNdKSp3KnBlKyArX1tIZT4+M10sRD1EKzF8MH19d2hpbGUo''@;'; put 'put ''MCk7TT1NKzF8MH19d2hpbGUoMCk7Zm9yKDshKCgwfE0pPj0oMHxsKSk7KXBlPShMMD0rX1tIbisoTTw8Myk+PjNdKSpMMCtwZSxNPU0rMXwwO2JlPShwZT0rRDAoK3BlKSkrYmU7bjpkb3tpZihwZT4wKWZvcihwZT0xL3BlLE09MDs7KXtpZigoMHxNKT49KDB8bCkpe009MDticmVhayBufV9b''@;'; put 'put ''KHhhPUhuKyhNPDwzKXwwKT4+M109K19beGE+PjNdKnBlLE09TSsxfDB9ZWxzZSBNPTB9d2hpbGUoMCk7Zm9yKDs7KXtpZigoMHxNKT49KDB8bCkpe2dlPXJ0O2NvbnRpbnVlIHR9X1soeGE9QSsoTStxZTw8Myl8MCk+PjNdPStfW3hhPj4zXSsgK19bSG4rKE08PDMpPj4zXSpXZSxNPU0rMXww''@;'; put 'put ''fX1pZigwfGsmJmV2KGspLCEoKDB8YXQpPCgwfE9pKSYoV2U9K01rKGxvLFdlLGJlLFN0LFJvKSk+VmkpKXt4aT04MzticmVha31TdD1iZX04Mz09KDB8eGkpJiYwfGFbcCsxMTI+PjJdJiZFayhsLEpyLEEpLEZ0KEhyKSwoMHxKcikhPSgwfGMpJiZSYShKciksRnQoSG4pLE09az0wfGFbTHI+''@;'; put 'put ''PjJdfWVsc2UgYVtiPj4yXT0tMTAwOzB8TSYmRnQoayksMHwoaz0wfGFbRGw+PjJdKSYmRnQoayksMHwoaz0wfGFbb3M+PjJdKSYmRnQoayl9bGU9b2x9ZnVuY3Rpb24gbjJlKGwsYyxmKXtmfD0wO3ZhciBELFIsRyxxLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxwZT0wO1I9MHxhWzIw''@;'; put 'put ''KyhjfD0wKT4+Ml0sRz0wfGFbYysyND4+Ml0scT0wfFFuKChsfD0wKTw8MyksRD0wfGFbYz4+Ml0saz0wO2U6Zm9yKDsoMHxrKTwoMHxEKTspe2ZvcihjPTA7ISgoMHxjKT49KDB8bCkpOylfW3ErKGM8PDMpPj4zXT0wLGM9YysxfDA7Zm9yKGI9MHxhW1IrKChNPWsrMXwwKTw8Mik+PjJdLHc9''@;'; put 'put ''MHxhW1IrKGs8PDIpPj4yXSxjPTA7ISgoMHx3KT49KDB8YikpOyl7aWYoKDB8KHA9MHxhW0crKHc8PDIpPj4yXSkpIT0oMHxrKSl7Zm9yKEE9MHxBcihwLGwpLHA9MDshKCgwfHApPj0oMHxsKSk7KV9bKHBlPXErKHA8PDMpfDApPj4zXT0rX1twZT4+M10rICtfW2YrKEErcDw8Myk+PjNdLHA9''@;'; put 'put ''cCsxfDA7Yz1jKzF8MH13PXcrMXwwfWlmKCgwfGMpPD0wKWs9TTtlbHNlIGZvcihtPS41LysoMHxjKSxwPTB8QXIoayxsKSxjPTA7Oyl7aWYoKDB8Yyk+PSgwfGwpKXtrPU07Y29udGludWUgZX1fWyhwZT1mKyhjK3A8PDMpfDApPj4zXT0rX1txKyhjPDwzKT4+M10qbSsuNSorX1twZT4+M10s''@;'; put 'put ''Yz1jKzF8MH19RnQocSl9ZnVuY3Rpb24gUkQobCl7dmFyIHcsYixrLE0sRCxjPTAsZj0wLHA9MCxtPTAsQT0wO2ZvcihiPTB8YVsyMCsobHw9MCk+PjJdLGs9MHxhW2wrMjQ+PjJdLE09MHxRbig0Kygodz0wfGFbbD4+Ml0pPDwyKXwwKSxsPTA7Oyl7aWYoKDB8bCk+KDB8dykpe2Y9MCxwPTA7''@;'; put 'put ''YnJlYWt9YVtNKyhsPDwyKT4+Ml09MCxsPWwrMXwwfWZvcig7ISgoMHxwKT49KDB8dykpOyl7Zm9yKEE9MHxhW2IrKChtPXArMXwwKTw8Mik+PjJdLGw9MCxjPTB8YVtiKyhwPDwyKT4+Ml07ISgoMHxjKT49KDB8QSkpOylsPWwrKCgwfHApIT0oMHxhW2srKGM8PDIpPj4yXSkmMSl8MCxjPWMr''@;'; put 'put ''MXwwO2FbKEE9TSsobDw8Mil8MCk+PjJdPXA9MSsoMHxhW0E+PjJdKXwwLGY9KDB8Zik+KDB8cCk/ZjpwLHA9bX1yZXR1cm4gbD0uOCorKDB8Zik8KEQ9KygwfGFbTSs0Pj4yXSkpJiYuMyorKDB8dyk8RD8xOjAsRnQoTSksMHxsfWZ1bmN0aW9uIHIyZShsLGMsZil7bHw9MCxmfD0wO3ZhciBH''@;'; put 'put ''LHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLHE9MCxwZT0wLGdlPTA7Zm9yKEc9bGUsbGU9bGUrNDh8MCxSPUcrMTZ8MCxrPUcsdz0wfEFyKGN8PTAsYyksbT0wOzspe2lmKCgwfG0pPj0oMHx3KSl7bT0wO2JyZWFrfV9bUisobTw8Myk+PjNdPTAsbT1tKzF8MH1mb3IoOzsp''@;'; put 'put ''e2lmKCgwfG0pPj0oMHxjKSl7dz0wO2JyZWFrfV9baysobTw8Myk+PjNdPTAsbT1tKzF8MH1mb3IoOyEoKDB8dyk+PSgwfGwpKTspe2ZvcihiPTB8QXIodyxjKSxtPTA7ISgoMHxtKT49KDB8YykpOylfWyhEPWsrKG08PDMpfDApPj4zXT0rX1tEPj4zXSsgK19bZisobStiPDwzKT4+M10sbT1t''@;'; put 'put ''KzF8MDt3PXcrMXwwfWZvcihwPTEvKygwfGwpLG09MDs7KXtpZigoMHxtKT49KDB8Yykpe3c9MDticmVha31fWyhEPWsrKG08PDMpfDApPj4zXT0rX1tEPj4zXSpwLG09bSsxfDB9Zm9yKDs7KXtpZigoMHx3KT49KDB8bCkpe2I9MDticmVha31mb3IoYj0wfEFyKHcsYyksbT0wOyEoKDB8bSk+''@;'; put 'put ''PSgwfGMpKTspX1soRD1mKyhtK2I8PDMpfDApPj4zXT0rX1tEPj4zXS0rX1trKyhtPDwzKT4+M10sbT1tKzF8MDt3PXcrMXwwfWZvcig7ISgoMHxiKT49KDB8bCkpOyl7Zm9yKGs9MHxBcihiLGMpLHc9MDshKCgwfHcpPj0oMHxjKSk7KXtmb3IoTT1mKyh3K2s8PDMpfDAsRD0wfEFyKHcsYyks''@;'; put 'put ''bT0wOygwfG0pIT0oMHxjKTspX1socT1SKyhtK0Q8PDMpfDApPj4zXT0rX1txPj4zXSsgK19bZisobStrPDwzKT4+M10qK19bTT4+M10sbT1tKzF8MDt3PXcrMXwwfWI9YisxfDB9Zm9yKHA9MD09KHA9K19bUis4Pj4zXSk/MDotKChBPStfW1IrMjQ+PjNdKS0ocGU9K19bUj4+M10pLStEMCgr''@;'; put 'put ''KHBlKnBlK3AqcCo0KygtMipwZStBKSpBKSkpLygyKnApLHAvPUE9K0QwKCsocCpwKzEpKSxBPTEvQSxtPTA7ISgoMHxtKT49KDB8bCkpOylxPTB8QXIobSxjKSxfWyhSPWYrKHE8PDMpfDApPj4zXT0oZ2U9K19bKHE9ZisocSsxPDwzKXwwKT4+M10pKkErKHBlPStfW1I+PjNdKSpwLF9bcT4+''@;'; put 'put ''M109Z2UqcC1wZSpBLG09bSsxfDA7bGU9R31mdW5jdGlvbiB4ayhsLGMsZixwLG0sQSx3LGIsayxNKXshZnVuY3Rpb24gaTJlKGwsYyxmLHAsbSxBLHcsYixrLE0pe2x8PTAsY3w9MCxmfD0wLG18PTAsd3w9MCxifD0wLGt8PTAsTXw9MDt2YXIgYW4sSG4sRD0wLFI9MCxHPTAscT0wLHBlPTAs''@;'; put 'put ''Z2U9MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTAsV2U9MCxTdD0wLGt0PTAsc3Q9MCxFdD0wLGJ0PTAsU249MDtIbj1sZSxsZT1sZSsxOTJ8MCxnbygwfChhbj1IbiksMHwocHw9MCksMTY4KSxhW00+PjJdPTA7ZG97aWYoMHxjJiYhKCgwfGwpPDF8KDB8KFNuPTB8''@;'; put 'put ''YVtjKzQ+PjJdKSk8MSkpezAhPSgwfGxoKGMsMCkpJiYxPT0oMHxhW2MrMTY+PjJdKT8oUj0xPT0oMHxhW3ArMTM2Pj4yXSk/MHx3cChmKTpmLGJ0PTB8d3AoYykpOmJlPTU7ZG97aWYoNT09KDB8YmUpKXtpZigxPT0oMHxhW3ArMTM2Pj4yXSkpe2J0PTB8SmsoYywwKSxSPTB8SmsoZiwwKTti''@;'; put 'put ''cmVha31idD0wfEE1KGMpLFI9ZjticmVha319d2hpbGUoMCk7aWYoMz09KDB8KEc9MHxhWyhFdD1wKzE2MHwwKT4+Ml0pKT8oMHxiKT4wJiYoYmU9MTQpOigwfGIpPjAmND09KDB8RykmJihiZT0xNCksMTQ9PSgwfGJlKSl7aWYoZj0wfFFuKDB8QXIobDw8MywwfGFbYnQ+PjJdKSkseGsobCxT''@;'; put 'put ''bj0wfFNYKGJ0LGIsayksMCxwLDAsMCxmLDAsMCxNKSxvMmUobCxidCxiLGssdyxmKSxVVihsLDAsMCwwLDAsMCwwfGFbRXQ+PjJdKSxSYShTbiksRnQoZiksKDB8YnQpPT0oMHxjKSlicmVhaztSYShidCk7YnJlYWt9Zm9yKGt0PTB8YVAoMHxhW3ArNDQ+PjJdLDB8YVtwKzQ4Pj4yXSksYVtr''@;'; put 'put ''dCsxNj4+Ml09YVtwKzQwPj4yXSxxPTB8Q0Eoc3Q9MHxsUChidCxSLG0sa3QpKSxwZT0wfGFbcSszMj4+Ml0/MHxRbigwfEFyKGw8PDMsMHxhW3ErND4+Ml0pKTp3LEc9MHxSRChidCksLTEuMDAwMTIzND09K19bcD4+M10mJihfW3A+PjNdPTA9PSgwfEcpPy0xOi0xLjgpLExlPXArMTM2fDAs''@;'; put 'put ''UmU9cCsyNHwwLEhlPXArMTZ8MCxWZT1wKzEwNHwwLHFlPXArOTZ8MCxydD1sPDwzLFdlPXArMTMyfDAsU3Q9cCs4MHwwOzspe2U6ZG97c3dpdGNoKDB8YVtMZT4+Ml0pe2Nhc2UgMDpzd2l0Y2goMHxhW1dlPj4yXSl7Y2FzZSAwOnQyZShsLDB8YVtxKzg+PjJdLHAsMHxhW3ErMjQ+PjJdLHBl''@;'; put 'put ''LE0pO2JyZWFrIGU7Y2FzZSAyOkc9cSs4fDAsYmU9Mjk7YnJlYWs7Y2FzZSAzOmJlPSgwfGFbKGdlPTB8YVsoRz1xKzh8MCk+PjJdKT4+Ml0pPjFlND8yOTozMDticmVhaztkZWZhdWx0OmdlPTB8YVtxKzg+PjJdLGJlPTMwfWlmKDI5PT0oMHxiZSkpe3FzZShsLDB8YVtHPj4yXSxwLDB8YVtx''@;'; put 'put ''KzI0Pj4yXSxwZSxNKTticmVhayBlfWlmKDMwPT0oMHxiZSkpe1h2ZShsLGdlLHAsMHxhW3ErMjQ+PjJdLHBlLE0pO2JyZWFrIGV9YnJlYWs7Y2FzZSAxOl9bcWU+PjNdPTEsYVtWZT4+Ml09MSxEPShPZT0wPT0oMHxhW3ErMjg+PjJdKSk/LjU6LjA1LGFbU3Q+PjJdPU9lPzUwMDoxMDAsT2U9''@;'; put 'put ''MD09KDB8YVtxKzMyPj4yXSksT0QobCwwfGFbKEc9cSs4fDApPj4yXSwwfGFbKGdlPXErMTJ8MCk+PjJdLHAsMHxhWyhiZT1xKzI0fDApPj4yXSxwZSxELE0pLE9lJiYoYVtIZT4+Ml09MCxfW3FlPj4zXT0uMDUsYVtWZT4+Ml09MCxPRChsLDB8YVtHPj4yXSwwfGFbZ2U+PjJdLHAsMHxhW2Jl''@;'; put 'put ''Pj4yXSxwZSwuNSpELE0pLE9EKGwsMHxhW0c+PjJdLDB8YVtnZT4+Ml0scCwwfGFbYmU+PjJdLHBlLC4xMjUqRCxNKSxPRChsLDB8YVtHPj4yXSwwfGFbZ2U+PjJdLHAsMHxhW2JlPj4yXSxwZSwuMDMxMjUqRCxNKSl9fXdoaWxlKDApO2lmKCEoYmU9MHxhW3ErMzI+PjJdKSl7YmU9Mzk7YnJl''@;'; put 'put ''YWt9aWYoMHxhW00+PjJdKXtiZT0zNTticmVha31PZT0wfGFbcSsxNj4+Ml0sRz0wfGFbcSs0MD4+Ml0sZ2U9MHxhW2JlKzMyPj4yXT8wfFFuKDB8QXIocnQsMHxhW2JlKzQ+PjJdKSk6dyxuOChsLDB8YVtiZSs4Pj4yXSxPZSwwfGFbYmUrMjA+PjJdLHBlLGdlLEcsLjAwMSorX1tSZT4+M10p''@;'; put 'put ''LEZ0KHBlKSxhW0hlPj4yXT0wLF9bUmU+PjNdPS43NSorX1tSZT4+M10sYVtWZT4+Ml09MCxfW3FlPj4zXT0oKDB8YVs0MCsoMHxhW2JlKzI4Pj4yXSk+PjJdKS05fDApPj4+MDwyPzE6LjEscT1iZSxwZT1nZX0zNT09KDB8YmUpP0Z0KHBlKTozOT09KDB8YmUpJiYoUngobCxidCxwLG0sdyxN''@;'; put 'put ''KSwyPT0oMHxsKSYmcjJlKFNuLDIsdyksMCE9KEQ9K19bcCsxNTI+PjNdKSYmJGgoU24sbCx3LEQpLFVWKGwsMCwwLDAsMCwwLDB8YVtFdD4+Ml0pKSxnbygwfHAsMHxhbiwxNjgpLCgwfGJ0KSE9KDB8YykmJlJhKGJ0KSwwPT0oMHxSKXwoMHxSKT09KDB8Zil8fFJhKFIpLG50KGt0KSxvdChz''@;'; put 'put ''dCl9fXdoaWxlKDApO2xlPUhufShsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTAsMCx3fD0wLGJ8PTAsa3w9MCxNfD0wKX1mdW5jdGlvbiBTWChsLGMsZil7Y3w9MCxmfD0wO3ZhciBPZSxMZSxSZSxIZSxxZSxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAs''@;'; put 'put ''Z2U9MCxiZT0wLFZlPTA7Zm9yKHFlPWxlLGxlPWxlKzE2fDAsVmU9cWUsTGU9MHxhWzIwKyhsfD0wKT4+Ml0sUmU9MHxhW2wrMjQ+PjJdLEhlPTB8UW4oYVtsPj4yXTw8MikscD0wOzspe2lmKCgwfHApPj0oMHxhW2w+PjJdKSl7cD0wO2JyZWFrfWFbSGUrKHA8PDIpPj4yXT0xLHA9cCsxfDB9''@;'; put 'put ''Zm9yKDs7KXtpZigoMHxwKT49KDB8Yykpe3A9MCxmPTA7YnJlYWt9YVtIZSsoYVtmKyhwPDwyKT4+Ml08PDIpPj4yXT0tMSxwPXArMXwwfWZvcig7Oyl7aWYoKDB8Zik+PSgwfChEPTB8YVtsPj4yXSkpKXtmPTAsYz0wO2JyZWFrfSgwfGFbKGM9SGUrKGY8PDIpfDApPj4yXSk+MCYmKGFbYz4+''@;'; put 'put ''Ml09cCxwPXArMXwwKSxmPWYrMXwwfWU6Zm9yKDs7KXtmb3IoOzspe2lmKCgwfGMpPj0oMHxEKSlicmVhayBlO2lmKCgwfGFbSGUrKGM8PDIpPj4yXSk+PTApYnJlYWs7Yz1jKzF8MH1mb3IoTT0wfGFbTGUrKChrPWMrMXwwKTw8Mik+PjJdLGI9MHxhW0xlKyhjPDwyKT4+Ml07Oyl7aWYoKDB8''@;'; put 'put ''Yik+PSgwfE0pKXtjPWs7Y29udGludWUgZX1tPTB8YVtSZSsoYjw8Mik+PjJdO3Q6ZG97aWYoKDB8YVtIZSsobTw8Mik+PjJdKT4tMSlmPWYrMXwwO2Vsc2UgZm9yKHc9MHxhW0xlKyhtKzE8PDIpPj4yXSxBPTB8YVtMZSsobTw8Mik+PjJdOzspe2lmKCgwfEEpPj0oMHx3KSlicmVhayB0Oygw''@;'; put 'put ''fChtPTB8YVtSZSsoQTw8Mik+PjJdKSkhPSgwfGMpJiYoZj0oKDB8YVtIZSsobTw8Mik+PjJdKT4+PjMxXjEpK2Z8MCksQT1BKzF8MH19d2hpbGUoMCk7Yj1iKzF8MH19Yz1mPDwyLCgwfGYpPjA/KGdlPTB8UW4oYykscT1iZT0wfFFuKGMpLHBlPWdlKToocT0wLHBlPTAsZ2U9MCxiZT0wKSxP''@;'; put 'put ''ZT0wfGFbMTU3MTJdLGM9MCxtPTA7ZTpmb3IoOzspe2ZvcihmPTB8YVtsPj4yXTs7KXtpZigoMHxjKT49KDB8ZikpYnJlYWsgZTtpZigoMHxhWyhHPUhlKyhjPDwyKXwwKT4+Ml0pPj0wKWJyZWFrO2M9YysxfDB9Zm9yKFI9TGUrKChEPWMrMXwwKTw8Mil8MCxNPTB8YVtMZSsoYzw8Mik+PjJd''@;'; put 'put ''LGY9bTs7KXtpZigoMHxNKT49KDB8YVtSPj4yXSkpe2M9RCxtPWY7Y29udGludWUgZX1BPTB8YVsobT1SZSsoTTw8Mil8MCk+PjJdO3Q6ZG97aWYoKDB8YVtIZSsoQTw8Mik+PjJdKT4tMSlhW3BlKyhmPDwyKT4+Ml09YVtHPj4yXSxhW3ErKGY8PDIpPj4yXT1hW0hlKyhhW20+PjJdPDwyKT4+''@;'; put 'put ''Ml0sZj1mKzF8MDtlbHNlIGZvcihrPUxlKyhBKzE8PDIpfDAsYj0wfGFbTGUrKEE8PDIpPj4yXTs7KXtpZigoMHxiKT49KDB8YVtrPj4yXSkpYnJlYWsgdDt3PTB8YVsobT1SZSsoYjw8Mil8MCk+PjJdO2Rve2lmKCgwfHcpIT0oMHxjKSYmKDB8YVtIZSsodzw8Mik+PjJdKT4tMSl7aWYoYVtw''@;'; put 'put ''ZSsoZjw8Mik+PjJdPWFbRz4+Ml0sdz1mKzF8MCxhW3ErKGY8PDIpPj4yXT1hW0hlKyhhW20+PjJdPDwyKT4+Ml0sZj0wfGFbSGUrKGFbbT4+Ml08PDIpPj4yXSw2OCE9KDB8KEE9MHxhW0c+PjJdKSkpe2lmKDY4IT0oMHxmKSl7Zj13O2JyZWFrfWY9Njh9YVtWZT4+Ml09QSxhW1ZlKzQ+PjJd''@;'; put 'put ''PWYsVDAoT2UsOTIzODAsVmUpLGY9d319d2hpbGUoMCk7Yj1iKzF8MH19d2hpbGUoMCk7TT1NKzF8MH19cmV0dXJuIFZlPTB8bzQobSxwLHAscGUscSwwLDgsOCksRnQoZ2UpLEZ0KGJlKSxGdChIZSksbGU9cWUsMHxWZX1mdW5jdGlvbiBvMmUobCxjLGYscCxtLEEpe2x8PTAsZnw9MCxwfD0w''@;'; put 'put ''LG18PTAsQXw9MDt2YXIgRyxxLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLHBlPTA7Zm9yKHE9MHxRbihhWyhjfD0wKT4+Ml08PDIpLHc9MDs7KXtpZigoMHx3KT49KDB8YVtjPj4yXSkpe3c9MDticmVha31hW3ErKHc8PDIpPj4yXT0xLHc9dysxfDB9Zm9yKDs7KXtpZigoMHx3KT49KDB8Zikp''@;'; put 'put ''e3c9MCxNPTA7YnJlYWt9KDB8KGI9MHxhW3ArKHc8PDIpPj4yXSkpPi0xJiYoMHxiKTwoMHxhW2M+PjJdKSYmKGFbcSsoYjw8Mik+PjJdPS0xKSx3PXcrMXwwfWZvcig7Oyl7aWYoKDB8TSk+PSgwfChSPTB8YVtjPj4yXSkpKXtNPTA7YnJlYWt9KDB8YVsoYj1xKyhNPDwyKXwwKT4+Ml0pPi0x''@;'; put 'put ''JiYoYVtiPj4yXT13LHc9dysxfDApLE09TSsxfDB9Zm9yKDshKCgwfE0pPj0oMHxSKSk7KXt3PTB8YVtxKyhNPDwyKT4+Ml07ZTpkb3tpZigoMHx3KT4tMSlmb3IoRD0wfEFyKE0sbCksYj0wfEFyKHcsbCksdz0wOzspe2lmKCgwfHcpPj0oMHxsKSlicmVhayBlO19bbSsodytEPDwzKT4+M109''@;'; put 'put ''K19bQSsoYit3PDwzKT4+M10sdz13KzF8MH19d2hpbGUoMCk7TT1NKzF8MH1mb3IoRz1jKzIwfDAsQT1jKzI0fDAsUj0wOyEoKDB8Uik+PSgwfGYpKTspe2ZvcihEPShNPTB8YVsodz0wfGFbRz4+Ml0pKygxKyhjPTB8YVtwKyhSPDwyKT4+Ml0pPDwyKT4+Ml0pLSh3PTB8YVt3KyhjPDwyKT4+''@;'; put 'put ''Ml0pfDAsYz0wfEFyKGMsbCksYj0wOyEoKDB8Yik+PSgwfGwpKTspX1ttKyhiK2M8PDMpPj4zXT0wLGI9YisxfDA7Zm9yKDsoMHx3KTwoMHxNKTspe2ZvcihiPTA7ISgoMHxiKT49KDB8bCkpOylrPStfW20rKCgwfEFyKDB8YVsoMHxhW0E+PjJdKSsodzw8Mik+PjJdLGwpKStiPDwzKT4+M10s''@;'; put 'put ''X1socGU9bSsoYitjPDwzKXwwKT4+M109K19bcGU+PjNdK2ssYj1iKzF8MDt3PXcrMXwwfWZvcihrPTEvKygwfEQpLHc9MDshKCgwfHcpPj0oMHxsKSk7KV9bKHBlPW0rKHcrYzw8Myl8MCk+PjNdPStfW3BlPj4zXSprLHc9dysxfDA7Uj1SKzF8MH1GdChxKX1mdW5jdGlvbiBuOChsLGMsZixw''@;'; put 'put ''LG0sQSx3LGIpe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCx3fD0wLGI9K2I7dmFyIEQsUixrPTAsTT0wLEc9MCxxPTA7Uj1sZSxsZT1sZSsxNnwwLGFbKEQ9Uik+PjJdPUF8PTAsR2koZiwwLG0sMCxELDAsbCk7ZTpkb3tpZigodystMXwwKT4+PjA8Nil7bjJlKGwsYywwfGFbRD4+Ml0pLGs9''@;'; put 'put ''MHxhW3A+PjJdLE09MHxhW3ArMjA+PjJdLEE9MHxhW3ArMjQ+PjJdLGM9MDt0OmZvcig7Oyl7aWYoKDB8Yyk+PSgwfGspKWJyZWFrIGU7cD1NKygodz1jKzF8MCk8PDIpfDAsYz0wfGFbTSsoYzw8Mik+PjJdO246Zm9yKDs7KXtpZigoMHwoYz1jKzF8MCkpPj0oMHxhW3A+PjJdKSl7Yz13O2Nv''@;'; put 'put ''bnRpbnVlIHR9Zm9yKG09QSsoYzw8Mil8MCxmPTA7Oyl7aWYoKDB8Zik+PSgwfGwpKWNvbnRpbnVlIG47cT0oK0JoKCktLjUpKmIsRz0oMHxhW0Q+PjJdKSsoKDB8QXIoMHxhW20+PjJdLGwpKStmPDwzKXwwLF9bRz4+M109K19bRz4+M10rcSxmPWYrMXwwfX19fX13aGlsZSgwKTtsZT1SfWZ1''@;'; put 'put ''bmN0aW9uICRoKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHA9K3A7dmFyIE0sbT0wLEE9MCx3PTAsYj0wLGs9MCxEPTAsUj0wLEc9MDtmb3IoTT1sZSxsZT1sZSsxNnwwLGs9TSxtPTA7Oyl7aWYoKDB8bSk+PSgwfGMpKXt3PTA7YnJlYWt9X1trKyhtPDwzKT4+M109MCxtPW0rMXwwfWZvcig7''@;'; put 'put ''ISgoMHx3KT49KDB8bCkpOyl7Zm9yKGI9MHxBcih3LGMpLG09MDshKCgwfG0pPj0oMHxjKSk7KV9bKEQ9aysobTw8Myl8MCk+PjNdPStfW0Q+PjNdKyArX1tmKyhtK2I8PDMpPj4zXSxtPW0rMXwwO3c9dysxfDB9Zm9yKEE9MS8rKDB8bCksbT0wOzspe2lmKCgwfG0pPj0oMHxjKSl7dz0wO2Jy''@;'; put 'put ''ZWFrfV9bKEQ9aysobTw8Myl8MCk+PjNdPStfW0Q+PjNdKkEsbT1tKzF8MH1mb3IoOyEoKDB8dyk+PSgwfGwpKTspe2ZvcihiPTB8QXIodyxjKSxtPTA7ISgoMHxtKT49KDB8YykpOylfWyhEPWYrKG0rYjw8Myl8MCk+PjNdPStfW0Q+PjNdLStfW2srKG08PDMpPj4zXSxtPW0rMXwwO3c9dysx''@;'; put 'put ''fDB9Zm9yKEE9K2hhKCsocCo9LS4wMTc0NTMyNzc3Nzc3Nzc3NzYpKSxwPStEYSgrcCksbT0wOyEoKDB8bSk+PSgwfGwpKTspRD0wfEFyKG0sYyksX1soaz1mKyhEPDwzKXwwKT4+M109KEc9K19bKEQ9ZisoRCsxPDwzKXwwKT4+M10pKnArKFI9K19baz4+M10pKkEsX1tEPj4zXT1HKkEtUipw''@;'; put 'put ''LG09bSsxfDA7bGU9TX1mdW5jdGlvbiBUayhsLGMsZixwLG0sQSl7bHw9MCxmfD0wLHA9K3AsbT0rbSxBfD0wO3ZhciBNLEQsT2UsTGUsUmUsSGUsdz0wLGI9MCxrPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsVmU9MDtpZihSZT0wfGFbKGN8PTApPj4yXSxIZT0wfGFbYysyMD4+Ml0s''@;'; put 'put ''T2U9MHxhW2MrMjQ+PjJdLExlPTB8YVtjKzI4Pj4yXSwwfGxoKGMsMCl8fFByKDk1Nzk1LDkyMzg3LDM3LDkyNDA0KSxsPTB8UW4oNTYpLGFbKGs9bCsyMHwwKT4+Ml09MCxhW2wrMjQ+PjJdPTIsYVtsKzEyPj4yXT0wLGI9MHxRbigxNiksYVtrPj4yXT1iLF9bYj4+M109cCxfW2IrOD4+M109''@;'; put 'put ''bSxhW2wrMTY+PjJdPTEwNSxfW2wrNDA+PjNdPS4wMSxhW2wrNDg+PjJdPX5+K0QwKCsgKygwfGFbYz4+Ml0pKSxhWyhrPWwrNHwwKT4+Ml09MHx1YyhSZSxSZSwoMHxhWyhiPWMrOHwwKT4+Ml0pK1JlfDAsMSwxKSxiPTB8dWMoUmUsUmUsKDB8YVtiPj4yXSkrUmV8MCwxLDEpLGFbbCs4Pj4y''@;'; put 'put ''XT1iLE09MHxhWzI4KyhrPTB8YVtrPj4yXSk+PjJdLEQ9MHxhW2IrMjg+PjJdLDA9PSgwfGIpfDA9PSgwfGspKVE0KGwpLGw9MDtlbHNle2ZvcihSPTB8YVtrKzIwPj4yXSxHPTB8YVtrKzI0Pj4yXSxwZT0wfGFbYisyND4+Ml0sYVsocT0wfGFbYisyMD4+Ml0pPj4yXT0wLGFbUj4+Ml09MCxj''@;'; put 'put ''PTAsZj0wOyEoKDB8Yyk+PSgwfFJlKSk7KXtmb3IoYmU9SGUrKChnZT1jKzF8MCk8PDIpfDAscD0wLG09MCx3PTB8YVtIZSsoYzw8Mik+PjJdOyEoKDB8dyk+PSgwfGFbYmU+PjJdKSk7KSgwfChBPTB8YVtPZSsodzw8Mik+PjJdKSkhPSgwfGMpJiYoVmU9KFZlPShWZT0rX1tMZSsodzw8Myk+''@;'; put 'put ''PjNdKT49MD9WZTotVmUpPi4wMT9WZTouMDEsYVtHKyhmPDwyKT4+Ml09QSxhW3BlKyhmPDwyKT4+Ml09QSxfWyhBPU0rKGY8PDMpfDApPj4zXT0tMSxfW0QrKGY8PDMpPj4zXT0tVmUscD0rX1tBPj4zXStwLG0tPVZlLGY9ZisxfDApLHc9dysxfDA7YVtHKyhmPDwyKT4+Ml09YyxhW3BlKyhm''@;'; put 'put ''PDwyKT4+Ml09YyxfW00rKGY8PDMpPj4zXT0tcCxfW0QrKGY8PDMpPj4zXT0tbSxhW1IrKGdlPDwyKT4+Ml09Zj1mKzF8MCxhW3ErKGdlPDwyKT4+Ml09ZixjPWdlfWFbays4Pj4yXT1mLGFbYis4Pj4yXT1mfXJldHVybiAwfGx9ZnVuY3Rpb24geWwobCl7UTQobHw9MCl9ZnVuY3Rpb24gWjco''@;'; put 'put ''bCxjLGYscCl7cmV0dXJuKyArem0obHw9MCxjfD0wLGZ8PTAscHw9MCwuMDAxKX1mdW5jdGlvbiBsMmUobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIHcsYixrLG09MCxBPTAsTT0wLEQ9MDtmb3Ioaz0wfFFuKCgwfEdvKGx8PTApKTw8NCksdz0wIT0oMHxwKSxiPWMrOHwwLEE9MHxEdChs''@;'; put 'put ''KSxtPTA7QTspdyYmKG09bSsoMD09KDB8czIoMHx0aShBKSw5MjQ4MSwxMSkpJjEpfDApLF9baysoKE09YVsxMjArKEQ9MHxhW0ErMTY+PjJdKT4+Ml08PDEpPDwzKT4+M109LjUqK19bRCszMj4+M10rICtfW2M+PjNdLF9baysoKDF8TSk8PDMpPj4zXT0uNSorX1tEKzQwPj4zXSsgK19bYj4+''@;'; put 'put ''M10sQT0wfHp0KGwsQSk7aWYodyYwIT0oMHxtKSl7Zm9yKGM9MHxRbihtPDwyKSxBPTB8RHQobCksbT0wO0E7KTB8czIoMHx0aShBKSw5MjQ4MSwxMSl8fChhW2MrKG08PDIpPj4yXT1hWzEyMCsoMHxhW0ErMTY+PjJdKT4+Ml0sbT1tKzF8MCksQT0wfHp0KGwsQSk7YVtwPj4yXT1jLGFbZj4+''@;'; put 'put ''Ml09bX1yZXR1cm4gMHxrfWZ1bmN0aW9uIHMyZShsLGMsZil7Y3w9MCxmfD0wO3ZhciBPZSxMZSxSZSxxZSxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLEhlPTAsVmU9MCxydD0wO2lmKHFlPWxlLGxlPWxlKzMyfDAsUmU9cWUrMTZ8''@;'; put 'put ''MCxMZT1xZSs4fDAsT2U9cWUsbHw9MCl7Zm9yKEhlPTB8R28obCksVmU9MHxOMyhsKSxjPTB8RHQobCkscD0wO2M7KWFbMTIwKygwfGFbYysxNj4+Ml0pPj4yXT1wLGM9MHx6dChsLGMpLHA9cCsxfDA7Zm9yKHE9MHxRbihwZT1WZTw8MikscGU9MHxRbihwZSksZ2U9MHxRbihjPVZlPDwzKSxS''@;'; put 'put ''PTB8c2kobCwyLDEwMTU0MSwwKSwoYmU9MCE9KDB8ZikpPyhwPTB8c2kobCwyLDkyNDkzLDApLEQ9Rz0wfHZyKGMpKTooRD0wLHA9MCxHPTApLGI9MD09KDB8Uiksaz0wPT0oMHxwKSx3PTB8RHQobCksYz0wO3c7KXtmb3IoTT0wfGFbMTIwKygwfGFbdysxNj4+Ml0pPj4yXSxBPTB8dzAobCx3''@;'; put 'put ''KTtBOylhW3ErKGM8PDIpPj4yXT1NLGFbcGUrKGM8PDIpPj4yXT1hWzEyMCsoMHxhWzE2KygwfGFbKDI9PSgzJmFbQT4+Ml18MCk/QTpBKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdLGJ8fChydD0wfEhvKEEsUiksYVtMZT4+Ml09T2UsMSE9KDB8aWwocnQsMTAxMjA5LExlKSkpPyhfW09lPj4z''@;'; put 'put ''XT0xLG09MSk6bT0rX1tPZT4+M10sX1tnZSsoYzw8Myk+PjNdPW0sa3x8KHJ0PTB8SG8oQSxwKSxhW1JlPj4yXT1PZSwxPT0oMHxpbChydCwxMDEyMDksUmUpKT9tPStfW09lPj4zXTooX1tPZT4+M109MSxtPTEpLF9bRCsoYzw8Myk+PjNdPW0pLEE9MHxTMChsLEEpLGM9YysxfDA7dz0wfHp0''@;'; put 'put ''KGwsdyl9Yz0wfG80KFZlLEhlLEhlLHEscGUsZ2UsMSw4KSxiZSYmKGFbZj4+Ml09MHxvNChWZSxIZSxIZSxxLHBlLEcsMSw4KSksRnQocSksRnQocGUpLEZ0KGdlKSxEJiZGdChHKX1lbHNlIGM9MDtyZXR1cm4gbGU9cWUsMHxjfWZ1bmN0aW9uIHUyZShsKXtsfD0wO3ZhciBNLGM9MCxmPTAs''@;'; put 'put ''cD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsRD0wLFI9MCxHPTA7TT1sZSxsZT1sZSsxNnwwLGs9TTtlOmRve2lmKDB8ZTllKGwsaykpe2ZvcihjPTB8YVsxMzIrKDB8YVsxNisoMHxEdChsKSk+PjJdKT4+Ml0sQT0rX1tjPj4zXSxwPStfW2MrOD4+M10sYz0wfER0KGwpO2M7KV9bKG09MHxhWzEz''@;'; put 'put ''MisoMHxhW2MrMTY+PjJdKT4+Ml0pPj4zXT0rX1ttPj4zXS1BLF9bKG09bSs4fDApPj4zXT0rX1ttPj4zXS1wLGM9MHx6dChsLGMpO2ZvcihjPTEmKDAhPUF8MCE9cCksZj0wfER0KGwpOzspe2lmKCFmKWJyZWFrIGU7aWYoMHwobT0wfHcwKGwsZikpKWJyZWFrO2Y9MHx6dChsLGYpfWlmKHA9''@;'; put 'put ''K1VsKCsoK19bOCsoZj0wfGFbMTMyKygwfGFbMTYrKDB8YVsoMj09KDB8KEQ9MyZhW20+PjJdKSk/bTptKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKT4+M10tKHc9K19bOCsobT0wfGFbMTMyKygwfGFbMTYrKDB8YVsoMz09KDB8RCk/bTptKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pPj4zXSkp''@;'; put 'put ''LCsoK19bZj4+M10tKGI9K19bbT4+M10pKSksX1trPj4zXT1wPStfW2s+PjNdLXAsMCE9cClmb3IoQT0raGEoK3ApLHA9K0RhKCtwKSxjPTB8RHQobCk7Oyl7aWYoIWMpe2M9MTticmVhayBlfV9bKGs9MHxhWzEzMisoMHxhW2MrMTY+PjJdKT4+Ml0pPj4zXT0oRz0rX1trPj4zXS1iKSpBK2It''@;'; put 'put ''KFI9K19bKEQ9ays4fDApPj4zXS13KSpwLF9bRD4+M109RypwK3crUipBLGM9MHx6dChsLGMpfX1lbHNlIGM9MH13aGlsZSgwKTtyZXR1cm4gbGU9TSwwfGN9ZnVuY3Rpb24gZTllKGwsYyl7Y3w9MDt2YXIgcCxtLGY9MDttPWxlLGxlPWxlKzE2fDAscD1tLGw9MHxMaShsfD0wLDkyNDk3KTtk''@;'; put 'put ''b3tpZigwIT0oMHxsKSYmMCE9KDB8ZmVbbD4+MF0pKXtpZihmPStpMyhsLHApLCgwfGFbcD4+Ml0pPT0oMHxsKSl7aWYoISgoMHx0MShsKSk8PDI0Pj4yNCkpe2w9MDticmVha31mPTB9Zm9yKDtmPjE4MDspZis9LTM2MDtmb3IoO2Y8PS0xODA7KWYrPTM2MDtfW2M+PjNdPS4wMTc0NTMyOTI1''@;'; put 'put ''MTk5NDMyOTUqZixsPTF9ZWxzZSBsPTB9d2hpbGUoMCk7cmV0dXJuIGxlPW0sMHxsfWZ1bmN0aW9uIGMyZShsLGMsZil7dmFyIHA7cmV0dXJuIGN8PTAsZnw9MCwwfHZWKGx8PTAsMD09KDB8KHA9MHxMaShsLDkyNTA3KSkpPzB8Zj9mOjE5NTA1OTpwLGMpfWZ1bmN0aW9uIHZWKGwsYyxmKXts''@;'; put 'put ''fD0wLGZ8PTA7dmFyIHcsTSxwPTAsbT0wLEE9MCxiPTA7aWYoTT1sZSxsZT1sZSszMnwwLHc9TSs4fDAsQT1NLDAhPSgwfChjfD0wKSkmJjAhPSgwfGZlW2M+PjBdKSl7Zm9yKHA9MTc4OTY7bT0wfGFbcCs0Pj4yXTspe2lmKCEoMHxsNChjLG0sMHxhW3ArOD4+Ml0pKSl7Yj02O2JyZWFrfXA9''@;'; put 'put ''cCsxNnwwfTY9PSgwfGIpJiYoMHxhW3ArMTI+PjJdfHwoYVtBPj4yXT1tLCRyKDAsOTI1MTUsQSkscD0xNzg5NiksYVtmPj4yXT1BPTB8YVtwPj4yXSxhW2YrND4+Ml09YVtwKzEyPj4yXSwxOD09KDB8QSkmJmZ1bmN0aW9uIElrKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcCxBLG09MDtw''@;'; put 'put ''PWxlLGxlPWxlKzE2fDAsYVsobT1wKT4+Ml09QT1wKzR8MCxtPSgwfGlsKGMsMTM3Mzk1LG0pKT4wLGFbZis4Pj4yXT1tJigwfChjPTB8YVtBPj4yXSkpPi0xP2M6MWUzLF9bZisxNj4+M109K01sKGwsMHxzaShsLDAsOTI2NDgsMCksLTQsLTFlMTApLGxlPXB9KGwsYysoMHxhW3ArOD4+Ml0p''@;'; put 'put ''fDAsZikpLDB8YVtwKzQ+PjJdfHwoKHA9MHxuZyhjLDYzKSk8PDI0Pj4yND09NjM/KGFbdz4+Ml09YywkcigwLDkyNTU3LHcpLHA9MCk6cCY9MjU1LGFbZj4+Ml09MSYocD0wPT0oMHxwKSkscD1wPzkyNjA0OjEzNTcwOSxiPTE1KX1lbHNlIGFbZj4+Ml09MCxwPTEzNTcwOSxiPTE1O3JldHVy''@;'; put 'put ''biAxNT09KDB8YikmJihhW2YrND4+Ml09cCksbGU9TSwwfGZ9ZnVuY3Rpb24gejcobCxjKXtsfD0wLGN8PTA7dmFyIEEsdyxmPTAscD0wO3c9bGUsbGU9bGUrMTZ8MCxBPXcrOHwwO2Rve2lmKCgwfEdvKGwpKT49Mil7aWYoZj0wfHUyZShsKSxmPSgwfEFWKGwpKStmfDAscD0wfGFbYz4+Ml0p''@;'; put 'put ''e2lmKHA+Pj4wPjIpe3N3aXRjaCgwfHApe2Nhc2UgMzpwPTB8VFYobCwxKTticmVhaztjYXNlIDQ6cD0wfFRWKGwsMCk7YnJlYWs7Y2FzZSA2OmNhc2UgNTpwPTA7YnJlYWs7Y2FzZSAxMDpjYXNlIDk6Y2FzZSA3OmNhc2UgODpjYXNlIDE0OmNhc2UgMTM6Y2FzZSAxMTpjYXNlIDEyOkJYKGws''@;'; put 'put ''cCkscD0wO2JyZWFrO2Nhc2UgMTU6cD0wfFRWKGwsLTEpO2JyZWFrO2RlZmF1bHQ6YVtBPj4yXT1hW2MrND4+Ml0sJHIoMCw5M2UzLEEpLHA9MH1mPXArZnwwO2JyZWFrfWlmKDB8ZjJlKGwpKXtEaygpLEZ0KDB8YVs0Njg0NV0pLGFbNDY4NDVdPTA7YnJlYWt9TVgobCksMHwocD0yPT0oMHxh''@;'; put 'put ''W2M+PjJdKT8wfEc3KCk6MHxncCgpKSYmaDJlKCksRGsoKSxGdCgwfGFbNDY4NDVdKSxhWzQ2ODQ1XT0wLGY9cCtmfDB9fWVsc2UgZj0wfXdoaWxlKDApO3JldHVybiBsZT13LDB8Zn1mdW5jdGlvbiBBVihsKXt2YXIgbSxiLE0sYz0wLGY9MCxwPTAsQT0wLHc9MCxrPTA7TT1sZSxsZT1sZSs0''@;'; put 'put ''OHwwLHc9TSsyNHwwLG09TSsxNnwwLGI9TSxjPTB8TGkobHw9MCwxNDA3NDIpO2U6ZG97aWYoMD09KDB8Yyl8fChrPWIrOHwwLGFbbT4+Ml09YixhW20rND4+Ml09ayxwPTB8aWwoYywxMDU1MDMsbSksMD09KDB8cCkpfHwoQT0rX1tiPj4zXSwrZW8oK0EpPDFlLTkpKWM9MDtlbHNle2lmKDEh''@;'; put 'put ''PSgwfHApKXtpZigrZW8oKyhmPStfW2s+PjNdKSk8MWUtOSl7Yz0wO2JyZWFrfX1lbHNlIF9baz4+M109QSxmPUE7aWYoMT09ZiYxPT1BKWM9MDtlbHNlIGZvcihjPTB8RHQobCk7Oyl7aWYoIWMpe2M9MTticmVhayBlfV9bKHc9MHxhWzEzMisoMHxhW2MrMTY+PjJdKT4+Ml0pPj4zXT0rX1t3''@;'; put 'put ''Pj4zXSorX1tiPj4zXSxfWyh3PXcrOHwwKT4+M109K19bdz4+M10qK19baz4+M10sYz0wfHp0KGwsYyl9fX13aGlsZSgwKTtyZXR1cm4gbGU9TSwwfGN9ZnVuY3Rpb24gZjJlKGwpe3ZhciBrLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxNPTA7Zm9yKGs9bGUsbGU9bGUrMTZ8MCx3PWss''@;'; put 'put ''YVs0Njg1NF09MHxHbyhsfD0wKSxmdW5jdGlvbiB1OWUoKXthWzQ2ODU1XT1+fitEMCgrICsoNCsoMHxhWzQ2ODU0XSl8MCkpfSgpLGFbNDY4NjldPTB8UW4oOTYqKDB8YVs0Njg1NF0pfDApLHA9MHxEdChsKSxjPTB8YVs0Njg2OV0sVzcodyxsKSxtPStqblt3Pj4yXSxBPStqblt3KzQ+PjJd''@;'; put 'put ''LEE9KHc9MD09KDB8ZmVbdys4Pj4wXSkpP0E6LjAxMzg4ODg4ODg4ODg4ODg4OCpBLG09dz9tOi4wMTM4ODg4ODg4ODg4ODg4ODgqbSx3PXc/MjoxLGY9MDs7KXtpZigoMHxmKT49KDB8YVs0Njg1NF0pKXtjPTA7YnJlYWt9aWYoX1tjKzg+PjNdPStfWyhNPTB8YVsxMzIrKDB8YVtwKzE2Pj4y''@;'; put 'put ''XSk+PjJdKT4+M10sX1tjKzE2Pj4zXT0rX1tNKzg+PjNdLDB8ZDhbMyZ3XShjKzQwfDAscCxtLEEpKXtiPTQ7YnJlYWt9YVtjKzI0Pj4yXT1mLGFbYysyOD4+Ml09MSxhW2M+PjJdPXAsYVtjKzg4Pj4yXT0wLGM9Yys5NnwwLGY9ZisxfDAscD0wfHp0KGwscCl9cmV0dXJuIDQ9PSgwfGIpJiYo''@;'; put 'put ''RnQoMHxhWzQ2ODY5XSksYVs0Njg2OV09MCxjPTEpLGxlPWssMHxjfWZ1bmN0aW9uIERrKCl7dmFyIGw9MCxjPTA7Zm9yKGw9MHxhWzQ2ODY5XSxjPTA7ISgoMHxjKT49KDB8YVs0Njg1NF0pKTspcDllKGwrNDB8MCksbD1sKzk2fDAsYz1jKzF8MDsoZnVuY3Rpb24gRjJlKCl7YVs0NjkxNF09''@;'; put 'put ''MCxGdCgwfGFbNDY5MTVdKSxGdCgwfGFbNDY5MTZdKSxGdCgwfGFbNDY5MTddKSxhWzQ2OTE1XT0wLGFbNDY5MTZdPTAsYVs0NjkxN109MH0pKCksVnkoKSxGdCgwfGFbNDY4NjldKX1mdW5jdGlvbiBNWChsKXtsfD0wO3ZhciBwLGssTSxELFIsYz0wLGY9MCxtPTAsQT0wLHc9MCxiPTAsRz0w''@;'; put 'put ''LHE9MCxwZT0wLGdlPTA7Zm9yKEQ9bGUsbGU9bGUrMzJ8MCxrPUQrMTZ8MCxNPUQscD0wfGFbNDY4NTRdLGM9Uj0wfGFbNDY4NjldLGY9MSxtPStfW1IrNDA+PjNdKyhBPStfW1IrOD4+M10pLEE9K19bUis1Nj4+M10rQSx3PStfW1IrNDg+PjNdKyhiPStfW1IrMTY+PjNdKSxiPStfW1IrNjQ+''@;'; put 'put ''PjNdK2I7ISgoMHxmKT49KDB8cCkpOylnZT0rX1tjKzEzNj4+M10rKHBlPStfW2MrMTA0Pj4zXSkscT0rX1tjKzE0ND4+M10rKEc9K19bYysxMTI+PjNdKSxwZT0rX1tjKzE1Mj4+M10rcGUsRz0rX1tjKzE2MD4+M10rRyxjPWMrOTZ8MCxmPWYrMXwwLG09Z2U8bT9nZTptLEE9cGU+QT9wZTpB''@;'; put 'put ''LHc9cTx3P3E6dyxiPUc+Yj9HOmI7MHwoYz0wfExpKGwsOTMxMDApKSYmMHxmZVtjPj4wXSYmKF9bMTczXT0ra3AoYykpLGdlPShwZT0rX1sxNzNdKSooYi13KSxfW2s+PjNdPW0tKHBlKj1BLW0pLF9bays4Pj4zXT13LWdlLF9bTT4+M109cGUrQSxfW00rOD4+M109Z2UrYix5VihrLE0pLGxl''@;'; put 'put ''PUR9ZnVuY3Rpb24gRzcoKXt2YXIgZixsPTA7aWYoZj1sZSxsZT1sZSsxNnwwLDB8SWYoKSl7RVgoKSxsPTA7ZG97SVgoKSxsPWwrMXwwfXdoaWxlKDAhPSgwfElmKCkpKTtsPTF9ZWxzZSBsPTA7cmV0dXJuIGxlPWYsMHxsfWZ1bmN0aW9uIGdwKCl7dmFyIGIsbD0wLGM9MCxmPTAscD0wLG09''@;'; put 'put ''MDtpZihiPWxlLGxlPWxlKzE2fDAsYz0wfElmKCkpe2ZvcihFWCgpLHhYKDApLCRWKDAsMSksbD0wLHA9MCxmPTA7bTEoKSxtPTB8SWYoZj1mKzF8MCk7KWM9KDB8bSk8KDB8Yyk/MDpwKzF8MCxhWzQ2ODQ2XT0xLGMmJihwMmUoKSxsPWwrMXwwKSx4WCgxKSwkVigwLDEpLHA9YyxjPW07KGZ1''@;'; put 'put ''bmN0aW9uIGZnKCl7KGZ1bmN0aW9uIEdYKCl7RnQoMHxhWzQ2ODU2XSksYVs0Njg1Nl09MH0pKCksZnVuY3Rpb24gV1goKXt6eSgxODc0NDgsNDApLEZ0KDB8YVs0Njg2NV0pLGFbNDY4NjVdPTB9KCkscEsoKSxqRCgpfSkoKSxsPTF9ZWxzZSBsPTA7cmV0dXJuIGxlPWIsMHxsfWZ1bmN0aW9u''@;'; put 'put ''IGgyZSgpe3ZhciBmLGw9MCxjPTAscD0wO2ZvcihmPTB8YVs0Njg1NF0sbD0wfGFbNDY4NjldLGM9MDshKCgwfGMpPj0oMHxmKSk7KV9bKHA9MHxhWzEzMisoMHxhWzE2KygwfGFbbD4+Ml0pPj4yXSk+PjJdKT4+M109K19bbCs4Pj4zXSxfW3ArOD4+M109K19bbCsxNj4+M10sbD1sKzk2fDAs''@;'; put 'put ''Yz1jKzF8MH1mdW5jdGlvbiBJZihsKXt2YXIgUixwZSxHLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MDtmb3IocGU9bGUsbGU9bGUrNDh8MCxHPXBlKzI0fDAsUj1wZSs4fDAsZj0wfGFbNDY4NjldLHA9MHxhWzQ2ODU0XSxjPTA7Oyl7aWYoKDB8Yyk+PSgwfHApKXtt''@;'; put 'put ''PTAsYz0wO2JyZWFrfWFbZisoOTYqY3wwKSszMj4+Ml09MCxjPWMrMXwwfWU6Zm9yKDshKCgwfGMpPj0ocCstMXwwKSk7KWZvcihEPWYrOTZ8MCxjPWMrMXwwLGs9Zis4fDAsTT1mKzQwfDAsYj1mKzMyfDAsQT1ELHc9Yzs7KXtpZigoMHx3KT49KDB8cCkpe2Y9RDtjb250aW51ZSBlfXA9QSs4''@;'; put 'put ''fDAsYVtSPj4yXT1hW2s+PjJdLGFbUis0Pj4yXT1hW2srND4+Ml0sYVtSKzg+PjJdPWFbays4Pj4yXSxhW1IrMTI+PjJdPWFbaysxMj4+Ml0sYVtHPj4yXT1hW3A+PjJdLGFbRys0Pj4yXT1hW3ArND4+Ml0sYVtHKzg+PjJdPWFbcCs4Pj4yXSxhW0crMTI+PjJdPWFbcCsxMj4+Ml0sMHx2OWUo''@;'; put 'put ''UixNLEcsQSs0MHwwKT8oYVtiPj4yXT0xLGFbQSszMj4+Ml09MSxmPW0rMXwwKTpmPW0sQT1BKzk2fDAsdz13KzF8MCxtPWYscD0wfGFbNDY4NTRdfXJldHVybiBsZT1wZSwwfG19ZnVuY3Rpb24gRVgoKXt2YXIgayxNLGw9MCxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsRD0wLFI9MDt3''@;'; put 'put ''VigpLGs9MHxhWzQ2ODQ4XSxNPTB8YVs0Njg2OV0sbD0wfGFbNDY4NDVdO2U6Zm9yKDt3PWwsIShsPj4+MD49az4+PjApOylpZigoYz1sKzR8MCk+Pj4wPj1rPj4+MClsPWM7ZWxzZSBpZigrX1sobT0wfGFbYz4+Ml0pPj4zXT09KEE9K19bKGY9MHxhW2w+PjJdKT4+M10pKWlmKCtfW20rOD4+''@;'; put 'put ''M109PShwPStfW2YrOD4+M10pKXtmb3IoYj1sKzh8MCxtPTI7IShiPj4+MD49az4+PjApOyl7aWYoK19bKGY9MHxhW2I+PjJdKT4+M10hPUEpe0Q9MTE7YnJlYWt9aWYoK19bZis4Pj4zXSE9cCl7RD0xMTticmVha31iPWIrNHwwLG09bSsxfDB9aWYoMTE9PSgwfEQpJiYoRD0wLCtfWzgrKGY9''@;'; put 'put ''MHxhW2I+PjJdKT4+M109PXApKWZvcihwPSgrX1tmPj4zXS1BKS8rKDB8bSksZj0xKygoKGI+Pj4wPmM+Pj4wP2I6YykrLTErKDAtdyl8MCk+Pj4yKXwwLGw9MTs7KXtpZigoMHxsKT09KDB8Zikpe2w9Yjtjb250aW51ZSBlfV9bKHc9MHxhW2M+PjJdKT4+M109K19bdz4+M10rcCorKDB8bCks''@;'; put 'put ''bD1sKzF8MCxjPWMrNHwwfWZvcig7Oyl7aWYoYz4+PjA+PWI+Pj4wKXtsPWI7Y29udGludWUgZX1fWyh3PTB8YVtjPj4yXSk+PjNdPS41KigrX1tNKyg5NiooUj0wfGFbMTYrKG09MHxhW2w+PjJdKT4+Ml0pfDApKzU2Pj4zXS0rX1tNKyg5NipSfDApKzQwPj4zXSsgK19bTSsoOTYqKGY9MHxh''@;'; put 'put ''W3crMTY+PjJdKXwwKSs1Nj4+M10tK19bTSsoOTYqZnwwKSs0MD4+M10pKyArX1ttPj4zXSxjPWMrNHwwLGw9bCs0fDB9fWVsc2UgbD1jO2Vsc2UgbD1jfWZ1bmN0aW9uIHhYKGwpe3ZhciB3LGIsayxjPTAsZj0wLHA9MCxtPTAsQT0wO2ZvcigwfChsfD0wKSYmd1YoKSxfWzIzMjcyXT1mPStf''@;'; put 'put ''WyhiPTB8YVsodz0wfGFbNDY4NDVdKT4+Ml0pPj4zXSxrPTB8YVs0Njg1NF0sbT0xLEE9K19bYj4+M107ISgoMHxtKT49KDB8aykpOykoYz0rX1sobD0wfGFbdysobTw8Mik+PjJdKT4+M10pPGY/KF9bMjMyNzJdPWMscD0rX1tsPj4zXSk6KHA9YyxjPWYpLG09bSsxfDAsZj1jLEE9cD5BP3A6''@;'; put 'put ''QTtfWzIzMjczXT1wPStfW2IrOD4+M10sX1syMzI3NV09K19bOCsoMHxhW3crKGsrLTE8PDIpPj4yXSk+PjNdLXAsX1syMzI3NF09QS1mfWZ1bmN0aW9uIG0xKCl7dmFyIGYsbD0wLGM9MDtmb3IobD0wfGFbNDY4NjldLGZ1bmN0aW9uIEtjKCl7dmFyIGw9MCxjPTAsZj0wLHA9MCxtPTAsQT0w''@;'; put 'put ''LHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxMZT0wO2ZvcihtPStZNyhBPTgrKEQ9MHxhWzQ2ODY5XSl8MCwxODYwNjQpLHA9K1k3KEEsMTg2MDgwKSxmPStZNyhBLDE4NjA5NiksbD0xLGM9K1k3KEEsMTg2MTEyKSxBPUQsdz1ELGI9RCxrPUQ7''@;'; put 'put ''TT1EKzk2fDAsISgoMHxsKT49KDB8YVs0Njg1NF0pKTspUj0oZ2U9K1k3KHBlPUQrMTA0fDAsMTg2MDY0KSk8bSxxPShPZT0rWTcocGUsMTg2MDk2KSk8ZixHPShiZT0rWTcocGUsMTg2MDgwKSk8cCxsPWwrMXwwLGM9KHBlPShMZT0rWTcocGUsMTg2MTEyKSk8Yyk/TGU6YyxmPXE/T2U6Zixw''@;'; put 'put ''PUc/YmU6cCxtPVI/Z2U6bSxBPXBlP006QSx3PXE/TTp3LGI9Rz9NOmIsaz1SP006ayxEPU07TGMoays4fDAsK19bMjMyNThdLCtfWzIzMjU5XSksTGModys4fDAsK19bMjMyNjJdLCtfWzIzMjYzXSksTGMoYis4fDAsK19bMjMyNjBdLCtfWzIzMjYxXSksTGMoQSs4fDAsK19bMjMyNjRdLCtf''@;'; put 'put ''WzIzMjY1XSl9KCksZj0wPT0oMHxhWzQ2ODQ2XSksYz0wOyEoKDB8Yyk+PSgwfGFbNDY4NTRdKSk7KWYmJiEoMHxhW2wrMzI+PjJdKXx8aGcobCksbD1sKzk2fDAsYz1jKzF8MH1mdW5jdGlvbiBwMmUoKXt2YXIgbCxjLGYscCxtLEEsdyxiLGs7bD1sZSxsZT1sZSszMnwwLGY9bCsxNnwwLHA9''@;'; put 'put ''LjA1KigoYj0rX1syMzI2Nl0pLShtPStfWzIzMjY3XSkpLF9bKGM9bCk+PjNdPShBPS4wNSooKGs9K19bMjMyNjhdKS0odz0rX1syMzI2OV0pKSkrayxfW2MrOD4+M109YitwLF9bZj4+M109dy1BLF9bZis4Pj4zXT1tLXAseVYoZixjKSxsZT1sfWZ1bmN0aW9uIHlWKGwsYyl7dmFyIGYscCxt''@;'; put 'put ''LEE7Y3w9MCxfWzIzMjY5XT1BPStfWyhsfD0wKT4+M10sX1syMzI2OF09bT0rX1tjPj4zXSxfWzIzMjY3XT1mPStfW2wrOD4+M10sX1syMzI2Nl09cD0rX1tjKzg+PjNdLF9bMjMyNThdPUEsX1syMzI2MF09QSxfWzIzMjYyXT1tLF9bMjMyNjRdPW0sX1syMzI2NV09cCxfWzIzMjYxXT1wLF9b''@;'; put 'put ''MjMyNjNdPWYsX1syMzI1OV09Zn1mdW5jdGlvbiBoZyhsKXt2YXIgQSx3LGIsTSxELFIsRyxjPTAsZj0wLHA9MCxtPTAsaz0wLHE9MCxwZT0wLGdlPTA7Zm9yKEc9bGUsbGU9bGUrNjR8MCxiPUcrNDh8MCx3PUcrMzJ8MCxBPUcrMTZ8MCxNPUcrOHwwLEQ9RyxSPTgrKGs9MHxhWzg4KyhsfD0w''@;'; put 'put ''KT4+Ml0pfDAsYz0wLGY9MCxwPTAsaz0wfGFbaz4+Ml07bT0wfGFbaz4+Ml07KWdlPWsrOHwwLHBlPW0rOHwwLGFbQT4+Ml09YVtSPj4yXSxhW0ErND4+Ml09YVtSKzQ+PjJdLGFbQSs4Pj4yXT1hW1IrOD4+Ml0sYVtBKzEyPj4yXT1hW1IrMTI+PjJdLGFbdz4+Ml09YVtnZT4+Ml0sYVt3KzQ+''@;'; put 'put ''PjJdPWFbZ2UrND4+Ml0sYVt3Kzg+PjJdPWFbZ2UrOD4+Ml0sYVt3KzEyPj4yXT1hW2dlKzEyPj4yXSxhW2I+PjJdPWFbcGU+PjJdLGFbYis0Pj4yXT1hW3BlKzQ+PjJdLGFbYis4Pj4yXT1hW3BlKzg+PjJdLGFbYisxMj4+Ml09YVtwZSsxMj4+Ml0scT0rZzJlKEEsdyxiKSxhW0E+PjJdPWFb''@;'; put 'put ''Uj4+Ml0sYVtBKzQ+PjJdPWFbUis0Pj4yXSxhW0ErOD4+Ml09YVtSKzg+PjJdLGFbQSsxMj4+Ml09YVtSKzEyPj4yXSxhW3c+PjJdPWFbZ2U+PjJdLGFbdys0Pj4yXT1hW2dlKzQ+PjJdLGFbdys4Pj4yXT1hW2dlKzg+PjJdLGFbdysxMj4+Ml09YVtnZSsxMj4+Ml0sYVtiPj4yXT1hW3BlPj4y''@;'; put 'put ''XSxhW2IrND4+Ml09YVtwZSs0Pj4yXSxhW2IrOD4+Ml09YVtwZSs4Pj4yXSxhW2IrMTI+PjJdPWFbcGUrMTI+PjJdLHQ5ZShBLHcsYixNLEQpLGM9K19bRD4+M10qcStjLGY9K19bTT4+M10qcStmLHA9cStwLGs9bTtfW2wrOD4+M109Zi9wLF9bbCsxNj4+M109Yy9wLGxlPUd9ZnVuY3Rpb24g''@;'; put 'put ''ZzJlKGwsYyxmKXt2YXIgcCxtLEE7cmV0dXJuLjUqK2VvKCsoKChBPStfWzgrKGZ8PTApPj4zXSktKG09K19bOCsobHw9MCk+PjNdKSkqK19bKGN8PTApPj4zXSsoKHA9K19bYys4Pj4zXSktQSkqK19bbD4+M10rICtfW2Y+PjNdKihtLXApKSl9ZnVuY3Rpb24gdDllKGwsYyxmLHAsbSl7bXw9''@;'; put 'put ''MCxfWyhwfD0wKT4+M109LjMzMzMzMzMzMzMzMzMzMzMqKCtfWyhjfD0wKT4+M10rICtfWyhsfD0wKT4+M10rICtfWyhmfD0wKT4+M10pLF9bbT4+M109LjMzMzMzMzMzMzMzMzMzMzMqKCtfW2MrOD4+M10rICtfW2wrOD4+M10rICtfW2YrOD4+M10pfWZ1bmN0aW9uIHdWKCl7dmFyIHAsbD0w''@;'; put 'put ''LGM9MCxmPTA7Zm9yKChsPTB8YVs0Njg0NV0pfHwobD0wfFFuKGFbNDY4NTRdPDwyKSxhWzQ2ODQ1XT1sLGFbNDY4NDhdPWwrKGFbNDY4NTRdPDwyKSksZj0wfGFbNDY4NjldLFZ5KCkscD0wfGFbNDY4NTRdLGM9MDshKCgwfGMpPj0oMHxwKSk7KWFbbD4+Ml09Zis4LGFbZis4OD4+Ml09MCxh''@;'; put 'put ''W2YrMjg+PjJdPTEsZj1mKzk2fDAsbD1sKzR8MCxjPWMrMXwwO3gxKDB8YVs0Njg0NV0scCw0LDY5KSxhWzQ2ODQ3XT1hWzQ2ODQ1XX1mdW5jdGlvbiBJWCgpe3ZhciBmLGw9MCxjPTAscD0wO2ZvcihmPTB8YVs0Njg1NF0sbD0wLGM9MHxhWzQ2ODY5XTshKCgwfGwpPj0oMHxmKSk7KV9bKHA9''@;'; put 'put ''Yys4fDApPj4zXT0xLjA1KitfW3A+PjNdLF9bKHA9YysxNnwwKT4+M109MS4wNSorX1twPj4zXSxsPWwrMXwwLGM9Yys5NnwwfWZ1bmN0aW9uIFc3KGwsYyl7bHw9MDt2YXIgZixtLHcscD0wO3c9bGUsbGU9bGUrNDh8MCxtPXcrMjR8MCwwIT0oMHwoZj0wfExpKGN8PTAsOTMxMTIpKSkmJjAh''@;'; put 'put ''PSgwfExrKGYsbSwxLDApKXx8KHA9Myk7ZG97aWYoMz09KDB8cCkpe2lmKDB8KGM9MHxMaShjLDkzMTE2KSkmJjB8TGsoYyxtLC44MDAwMDAwMTE5MjA5MjksNCkpYnJlYWs7am5bbSs0Pj4yXT00LGpuW20+PjJdPTQsZmVbbSs4Pj4wXT0xfX13aGlsZSgwKTthW2w+PjJdPWFbbT4+Ml0sYVts''@;'; put 'put ''KzQ+PjJdPWFbbSs0Pj4yXSxhW2wrOD4+Ml09YVttKzg+PjJdLGxlPXd9ZnVuY3Rpb24gTGsobCxjLGYscCl7bHw9MCxjfD0wLGY9K2YscD0rcDt2YXIgdyxiLGssRCxSLG09MCxBPTAsTT0wLEc9MDtmb3IoRD1sZSxsZT1sZSsxNnwwLGs9RCx3PUQrMTJ8MCxiPUQrOHwwO0E9bCsxfDAsMHwk''@;'; put 'put ''YygobT0wfGZlW2w+PjBdKTw8MjQ+PjI0KTspbD1BO3N3aXRjaChSPW08PDI0Pj4yND09NDMsZmVbKG09Yys4fDApPj4wXT0xJlIsYVtrPj4yXT13LGFbays0Pj4yXT1iLDB8aWwoUj9BOmwsOTMxNTQsaykpe2Nhc2UgMDpsPTA7YnJlYWs7Y2FzZSAxOmFbYj4+Ml09YVt3Pj4yXSxNPTU7YnJl''@;'; put 'put ''YWs7ZGVmYXVsdDpNPTV9aWYoNT09KDB8TSkpe2Rve2lmKDB8ZmVbbT4+MF0pe2lmKGY+MSl7am5bYz4+Ml09KEc9K2puW3c+PjJdL2YpPnA/cDpHLGY9KGY9K2puW2I+PjJdL2YpPnA/cDpmO2JyZWFrfWlmKGY8MSl7am5bYz4+Ml09KEc9K2puW3c+PjJdL2YpPHA/cDpHLGY9KGY9K2puW2I+''@;'; put 'put ''PjJdL2YpPHA/cDpmO2JyZWFrfWFbYz4+Ml09YVt3Pj4yXSxmPStqbltiPj4yXTticmVha31qbltjPj4yXT0ram5bdz4+Ml0vZisxLGY9K2puW2I+PjJdL2YrMX13aGlsZSgwKTtqbltjKzQ+PjJdPWYsbD0xfXJldHVybiBsZT1ELDB8bH1mdW5jdGlvbiBiVihsLGMpe3ZhciBmLHA7cmV0dXJu''@;'; put 'put ''IGN8PTAscD1sZSxsZT1sZSszMnwwLGY9cCwoMHxHbyhsfD0wKSk8Mj9sPTA6KHZWKGwsYyxmKSxsPTB8ejcobCxmKSksbGU9cCwwfGx9ZnVuY3Rpb24gTHkobCl7cmV0dXJuIDB8YlYobHw9MCwwfExpKGwsOTI1MDcpKX1mdW5jdGlvbiByOChsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8''@;'; put 'put ''PTAsbXw9MDt2YXIgUixHLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wO2ZvcihHPWxlLGxlPWxlKzE2fDAsUj1HLEE9MDshKCgwfEEpPj0oMHxmKSk7KWFbcCsoQTw8Mik+PjJdPS0xLEE9QSsxfDA7YVtwKyhsPDwyKT4+Ml09MCxmdW5jdGlvbiBMWChsLGMpe2FbYVsobHw9MCk+PjJdPj4yXT1j''@;'; put 'put ''fD0wLGFbbCsxMj4+Ml09MCxhW2wrOD4+Ml09MX0obSxsKTtlOmRve2lmKDB8YVtjKzg+PjJdKXtBPTIxNDc0ODM2NDc7dDpmb3IoOzspe2lmKCEoKDB8X1YobSxSKSk8PDI0Pj4yNCkpYnJlYWsgZTtmb3IoQT0wfGFbcCsoKGs9MHxhW1I+PjJdKTw8Mik+PjJdLHc9YysoMjAqa3wwKXwwLGI9''@;'; put 'put ''YysoMjAqa3wwKSs0fDAsaz1jKygyMCprfDApKzh8MCxsPTE7Oyl7aWYoKDB8bCk+PSgwfGFbdz4+Ml0pKWNvbnRpbnVlIHQ7KDB8YVsoRD1wKygoTT0wfGFbKDB8YVtiPj4yXSkrKGw8PDIpPj4yXSk8PDIpfDApPj4yXSk8MCYmKGFbRD4+Ml09QSt+fitqblsoMHxhW2s+PjJdKSsobDw8Mik+''@;'; put 'put ''PjJdLENWKG0sTSkpLGw9bCsxfDB9fX1lbHNle0E9MjE0NzQ4MzY0Nzt0OmZvcig7Oyl7aWYoISgoMHxfVihtLFIpKTw8MjQ+PjI0KSlicmVhayBlO2ZvcihBPTB8YVtwKygoYj0wfGFbUj4+Ml0pPDwyKT4+Ml0sdz1jKygyMCpifDApfDAsYj1jKygyMCpifDApKzR8MCxrPUErMXwwLGw9MTs7''@;'; put 'put ''KXtpZigoMHxsKT49KDB8YVt3Pj4yXSkpY29udGludWUgdDsoMHxhWyhEPXArKChNPTB8YVsoMHxhW2I+PjJdKSsobDw8Mik+PjJdKTw8Mil8MCk+PjJdKTwwJiYoYVtEPj4yXT1rLENWKG0sTSkpLGw9bCsxfDB9fX19d2hpbGUoMCk7Zm9yKGw9QSsxMHwwLEE9MDshKCgwfEEpPj0oMHxmKSk7''@;'; put 'put ''KSgwfGFbKHc9cCsoQTw8Mil8MCk+PjJdKTwwJiYoYVt3Pj4yXT1sKSxBPUErMXwwO2xlPUd9ZnVuY3Rpb24gX1YobCxjKXt2YXIgZixwO3JldHVybiBjfD0wLCgwfChwPTB8YVsoZj0xMisobHw9MCl8MCk+PjJdKSk8KDB8YVtsKzg+PjJdKT8obD0wfGFbbD4+Ml0sYVtmPj4yXT1wKzEsYVtj''@;'; put 'put ''Pj4yXT1hW2wrKHA8PDIpPj4yXSxsPTEpOmw9MCwwfGx9ZnVuY3Rpb24gQ1YobCxjKXt2YXIgZixwO3JldHVybiBjfD0wLCgwfChwPTB8YVsoZj04KyhsfD0wKXwwKT4+Ml0pKTwoMHxhW2wrND4+Ml0pPyhsPTB8YVtsPj4yXSxhW2Y+PjJdPXArMSxhW2wrKHA8PDIpPj4yXT1jLGw9MSk6bD0w''@;'; put 'put ''LDB8bH1mdW5jdGlvbiBPeShsLGMpe2FbKGx8PTApPj4yXT0wfFFuKChjfD0wKTw8MiksYVtsKzQ+PjJdPWMsYVtsKzg+PjJdPTAsYVtsKzEyPj4yXT0wfWZ1bmN0aW9uIEJEKGwpe0Z0KDB8YVsobHw9MCk+PjJdKX1mdW5jdGlvbiBrVihsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MCxt''@;'; put 'put ''PTAsQT0wLHc9MDtmb3IoQT0wOyEoKDB8QSk+PSgwfGwpKTspe2Zvcih3PWMrKEE8PDIpfDAsbT0wLHA9MDsoMHxtKSE9KDB8bCk7KSgwfEEpIT0oMHxtKSYmKHA9K19bKDB8YVt3Pj4yXSkrKG08PDMpPj4zXStwKSxtPW0rMXwwO19bKDB8YVt3Pj4yXSkrKEE8PDMpPj4zXT0tcCxBPUErMXww''@;'; put 'put ''fXJldHVybiAwfGZ1bmN0aW9uIGlLKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MDtlOmRve2lmKDB8V3gobCxmKSl7Zm9yKG09MHx2cihmPDwzKSxsPTA7KDB8bCk8KDB8Zik7KXtmb3IocD0wOygwfHApIT0oMHxmKTspX1ttKyhwPDwzKT4+M109MCxwPXAr''@;'; put 'put ''MXwwO19bbSsobDw8Myk+PjNdPTEsd1AoMHxhW2MrKGw8PDIpPj4yXSxtLGYpLGw9bCsxfDB9Zm9yKEZ0KG0pLG09MDs7KXtpZigoMHxtKT49KDB8Zikpe2w9MTticmVhayBlfWZvcihwPWMrKG08PDIpfDAsbD0wOygwfGwpIT0oMHxtKTspdz0rX1soYj0oMHxhW3A+PjJdKSsobDw8Myl8MCk+''@;'; put 'put ''PjNdLF9bYj4+M109K19bKEE9KDB8YVtjKyhsPDwyKT4+Ml0pKyhtPDwzKXwwKT4+M10sX1tBPj4zXT13LGw9bCsxfDA7bT1tKzF8MH19ZWxzZSBsPTB9d2hpbGUoMCk7cmV0dXJuIDB8bH0oYyxmLGwrLTF8MCl9ZnVuY3Rpb24gTVYobCxjLGYscCxtLEEsdyl7bHw9MCxjfD0wLGZ8PTAsbT0r''@;'; put 'put ''bSxBfD0wLHd8PTA7dmFyIE0sRCxSLEcscGUsZ2UsT2UsYj0wLGs9MCxxPTAsYmU9MDtmb3IoT2U9bGUsbGU9bGUrMTZ8MCxNPU9lLHBlPTB8UW4ocT0ocHw9MCk8PDMpLGdlPTB8UW4ocSksRD0wfFFuKHEpLFI9MHxRbihxKSxHPTB8UW4ocSkselYocCxmLHE9MHxRbihxKSksdzw8MjQ+PjI0''@;'; put 'put ''JiYoYTgocCxxKSxhOChwLGMpKSwkMyhsLHAsYyxSKSxKRChwLHEsUixwZSkselYocCxwZSxnZSksdz1BKy0xfDAsZj0wLGI9K3ZwKHAscGUscGUpOzspe2lmKCgwfGYpPj0oMHxBKSl7Zj0wO2JyZWFrfWlmKCEoK3EzKHAscGUpPm0pKXtmPTA7YnJlYWt9aWYoJDMobCxwLGdlLEQpLDA9PShr''@;'; put 'put ''PSt2cChwLGdlLEQpKSl7Zj0wO2JyZWFrfWlmKGp5KHAsZ2Usaz1iL2ssRyksVmsocCxjLEcsYyksKDB8Zik8KDB8dykpe2lmKGp5KHAsRCxrLEQpLEpEKHAscGUsRCxwZSksaz0rdnAocCxwZSxwZSksMD09Yil7YmU9OTticmVha31qeShwLGdlLGsvYixnZSksVmsocCxwZSxnZSxnZSksYj1r''@;'; put 'put ''fWY9ZisxfDB9cmV0dXJuIDk9PSgwfGJlKSYmKCRyKDEsOTMyNDIsTSksZj0xKSxGdChwZSksRnQoZ2UpLEZ0KEQpLEZ0KFIpLEZ0KEcpLEZ0KHEpLGxlPU9lLDB8Zn1mdW5jdGlvbiBPayhsLGMsZixwLG0sQSl7bHw9MCxjfD0wLGZ8PTAsbT0rbSxBfD0wO3ZhciBrLE0sUixHLHEsZ2Usdz0w''@;'; put 'put ''LGI9MCxEPTAscGU9MDtmb3IoZ2U9bGUsbGU9bGUrMTZ8MCxNPWdlLFI9MHx2cihEPShwfD0wKTw8MiksRz0wfHZyKEQpLHE9MHx2cihEKSxEPTB8dnIoRCksbDgocCxjKSxsOChwLGYpLGVkKGwscCxjLEQpLGw4KHAsRCksZnVuY3Rpb24gTDJlKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8''@;'; put 'put ''PTA7dmFyIG09MDtmb3IobT0wOyEoKDB8bSk+PSgwfGwpKTspam5bcCsobTw8Mik+PjJdPStqbltjKyhtPDwyKT4+Ml0tK2puW2YrKG08PDIpPj4yXSxtPW0rMXwwfShwLGYsRCxSKSx1SyhwLFIsRyksaz1BKy0xfDAsZj0wLHc9K1g3KHAsUixSKTs7KXtpZigoMHxmKT49KDB8QSkpe2Y9MDti''@;'; put 'put ''cmVha31pZighKCtPMmUocCxSKT5tKSl7Zj0wO2JyZWFrfWlmKGw4KHAsRyksbDgocCxjKSxsOChwLFIpLGVkKGwscCxHLHEpLGw4KHAscSksMD09KGI9K1g3KHAsRyxxKSkpe2Y9MDticmVha31pZihLRChwLGMsYj13L2IsRyksKDB8Zik8KDB8aykpe2lmKEtEKHAsUiwtYixxKSxiPStYNyhw''@;'; put 'put ''LFIsUiksMD09dyl7cGU9NzticmVha31zSyhwLEcsYi93LEcpLFhEKHAsUixHLEcpLHc9Yn1mPWYrMXwwfXJldHVybiA3PT0oMHxwZSkmJigkcigxLDkzMjQyLE0pLGY9MSksRnQoUiksRnQoRyksRnQocSksRnQoRCksbGU9Z2UsMHxmfWZ1bmN0aW9uIEJYKGwsYyl7Y3w9MDt2YXIgbSx3LGss''@;'; put 'put ''TSxmPTAscD0wLEE9MCxiPTA7Zm9yKE09bGUsbGU9bGUrNDh8MCxtPU0rMjR8MCxBPU0rMTJ8MCxmPU0saz0wfFFuKDQ4Kih3PTB8R28obHw9MCkpfDApLFc3KGYsbCksYVtBPj4yXT1hW2Y+PjJdLGFbQSs0Pj4yXT1hW2YrND4+Ml0sYVtBKzg+PjJdPWFbZis4Pj4yXSxmPTB8RHQobCkscD1r''@;'; put 'put ''O2Y7KWFbbT4+Ml09YVtBPj4yXSxhW20rND4+Ml09YVtBKzQ+PjJdLGFbbSs4Pj4yXT1hW0ErOD4+Ml0sUFgoZixwLG0pLGY9MHx6dChsLGYpLHA9cCs0OHwwO2U6ZG97aWYoMHxFVihrLHcpKXtzd2l0Y2goMHxjKXtjYXNlIDk6aTgobCxrLHcsNzAsMSksbzgobCxrLHcsNzEsMSksZj0wLHA9''@;'; put 'put ''azticmVhaztjYXNlIDEwOm84KGwsayx3LDcxLDEpLGk4KGwsayx3LDcwLDEpLGY9MCxwPWs7YnJlYWs7Y2FzZSA3Omk4KGwsayx3LDcyLDEpLG84KGwsayx3LDcxLDEpLGI9OTticmVhaztjYXNlIDg6Yj05O2JyZWFrO2Nhc2UgMTM6Yj0xMDticmVhaztjYXNlIDE0Om84KGwsayx3LDcxLDAp''@;'; put 'put ''LGk4KGwsayx3LDcwLDApLGY9MCxwPWs7YnJlYWs7Y2FzZSAxMjpvOChsLGssdyw3MywwKSxpOChsLGssdyw3MCwwKSxmPTAscD1rO2JyZWFrO2RlZmF1bHQ6aTgobCxrLHcsNzIsMCksbzgobCxrLHcsNzEsMCksZj0wLHA9a31mb3IoOT09KDB8YikmJihvOChsLGssdyw3MywxKSxpOChsLGss''@;'; put 'put ''dyw3MCwxKSxiPTEwKSwxMD09KDB8YikmJihpOChsLGssdyw3MCwwKSxvOChsLGssdyw3MSwwKSxmPTAscD1rKTs7KXtpZigoMHxmKT49KDB8dykpe2Y9MTticmVhayBlfUE9MHxhW3ArMTY+PjJdLF9bKGI9MHxhWzEzMisoMHxhWzE2KygwfGFbcCsyMD4+Ml0pPj4yXSk+PjJdKT4+M109LjAw''@;'; put 'put ''MTM4ODg4ODg4ODg4ODg4ODcqKygwfGFbcCsxMj4+Ml0pLF9bYis4Pj4zXT0uMDAxMzg4ODg4ODg4ODg4ODg4NyorKDB8QSksZj1mKzF8MCxwPXArNDh8MH19ZWxzZSBmPTB9d2hpbGUoMCk7cmV0dXJuIEZ0KGspLGxlPU0sMHxmfWZ1bmN0aW9uIFBYKGwsYyxmKXt2YXIgQSxwPTAsbT0wLHc9''@;'; put 'put ''MCxiPTAsaz0wO0E9fn4oKGI9NzIwKitfWyh3PTB8YVsxMzIrKHA9MHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSk+PjNdKSsoYj49MD8uNTotLjUpKSx3PX5+KChiPTcyMCorX1t3Kzg+PjNdKSsoYj49MD8uNTotLjUpKSwwfGZlWzgrKGZ8PTApPj4wXT8obT1+figxMCooK2puW2Y+PjJdKyArKDB8''@;'; put 'put ''fn4oKGI9MzYqK19bcCszMj4+M10pKyhiPj0wPy41Oi0uNSkpKSkpLHA9fn4oMTAqKCtqbltmKzQ+PjJdKyArKDB8fn4oKGs9MzYqK19bcCs0MD4+M10pKyhrPj0wPy41Oi0uNSkpKSkpKToobT1+figoaz03MiorX1twKzMyPj4zXSooNSoram5bZj4+Ml0pKSsoaz49MD8uNTotLjUpKSxwPX5+''@;'; put 'put ''KChiPTcyKitfW3ArNDA+PjNdKig1KitqbltmKzQ+PjJdKSkrKGI+PTA/LjU6LS41KSkpLGFbMTIrKGN8PTApPj4yXT1BLGFbYysxNj4+Ml09dyxhW2MrMjA+PjJdPWwsYVtjKzMyPj4yXT1BLW0sYVtjKzM2Pj4yXT13LXAsYVtjKzQwPj4yXT1tK0EsYVtjKzQ0Pj4yXT1wK3d9ZnVuY3Rpb24g''@;'; put 'put ''RVYobCxjKXtsfD0wO3ZhciBNLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDtNPShjfD0wKS0xfDAsZj0wO2U6Zm9yKDs7KXtpZigoMHxmKT49KDB8TSkpe2w9MDticmVha31mb3IoQT1sKzMyfDAsdz1sKzQwfDAsYj1sKzM2fDAsbT1sKzQ0fDAsbD1rPWwrNDh8MCxwPWY9ZisxfDA7Oyl7''@;'; put 'put ''aWYoKDB8cCk+PSgwfGMpKXtsPWs7Y29udGludWUgZX1pZigoMHxhW0E+PjJdKTw9KDB8YVtsKzQwPj4yXSkmJigwfGFbbCszMj4+Ml0pPD0oMHxhW3c+PjJdKSYmKDB8YVtiPj4yXSk8PSgwfGFbbCs0ND4+Ml0pJiYoMHxhW2wrMzY+PjJdKTw9KDB8YVttPj4yXSkpe2w9MTticmVhayBlfWw9''@;'; put 'put ''bCs0OHwwLHA9cCsxfDB9fXJldHVybiAwfGx9ZnVuY3Rpb24gaTgobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIGIsQT0wLHc9MDtmb3IoYj0wfGlzKDE4MTY4LDB8YVs0NTg0XSksQT1jLHc9MDshKCgwfHcpPj0oMHxmKSk7KWFbQSs4Pj4yXT1hW0ErMTI+PjJdLG1p''@;'; put 'put ''WzYzJmFbYj4+Ml1dKGIsQSwxKSxBPUErNDh8MCx3PXcrMXwwO2ZvcihrNyh3PW0/MHxtMmUoYixwLDc0KTowfFRzKGwsYixwLDc0KSwyLDIxNDc0ODM2NDcpLEE9MDshKCgwfEEpPj0oMHxmKSk7KXA9KGw9MHxhWzIzMisoMHxhWzE2KygwfGFbYysyND4+Ml0pPj4yXSk+PjJdKS0oMHxhWyht''@;'; put 'put ''PWMrMTJ8MCk+PjJdKXwwLGFbbT4+Ml09bCxhWyhtPWMrMzJ8MCk+PjJdPSgwfGFbbT4+Ml0pK3AsYVsobT1jKzQwfDApPj4yXT0oMHxhW20+PjJdKStwLGM9Yys0OHwwLEE9QSsxfDA7ZGcodyksTmwoYil9ZnVuY3Rpb24gbzgobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7''@;'; put 'put ''dmFyIGIsQT0wLHc9MDtmb3IoYj0wfGlzKDE4MTY4LDB8YVs0NTg0XSksQT1jLHc9MDshKCgwfHcpPj0oMHxmKSk7KWFbQSs4Pj4yXT1hW0ErMTY+PjJdLG1pWzYzJmFbYj4+Ml1dKGIsQSwxKSxBPUErNDh8MCx3PXcrMXwwO2ZvcihrNyh3PW0/MHxtMmUoYixwLDc1KTowfFRzKGwsYixwLDc1''@;'; put 'put ''KSwyLDIxNDc0ODM2NDcpLEE9MDshKCgwfEEpPj0oMHxmKSk7KXA9KGw9MHxhWzIzMisoMHxhWzE2KygwfGFbYysyND4+Ml0pPj4yXSk+PjJdKS0oMHxhWyhtPWMrMTZ8MCk+PjJdKXwwLGFbbT4+Ml09bCxhWyhtPWMrMzZ8MCk+PjJdPSgwfGFbbT4+Ml0pK3AsYVsobT1jKzQ0fDApPj4yXT0o''@;'; put 'put ''MHxhW20+PjJdKStwLGM9Yys0OHwwLEE9QSsxfDA7ZGcodyksTmwoYil9ZnVuY3Rpb24gRkQobCxjKXtyZXR1cm4gMHwoKDB8YVsxMisobHw9MCk+PjJdKS0oMHxhW2wrND4+Ml0pKygwfGFbMTIrKGN8PTApPj4yXSktKDB8YVtjKzQ+PjJdKXwwKS8yfWZ1bmN0aW9uIEhYKGwsYyl7cmV0dXJu''@;'; put 'put ''IDB8KCgwfGFbOCsobHw9MCk+PjJdKS0oMHxhW2w+PjJdKSsoMHxhWzgrKGN8PTApPj4yXSktKDB8YVtjPj4yXSl8MCkvMn1mdW5jdGlvbiBtMmUobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBMZSxSZSxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAs''@;'; put 'put ''Z2U9MCxiZT0wLE9lPTA7Zm9yKFJlPWxlLGxlPWxlKzE2fDAsZmVbKE9lPVJlKT4+MF09MHxmZVsxODU4OF0sZmVbT2UrMT4+MF09MHxmZVsxODU4OV0sZmVbT2UrMj4+MF09MHxmZVsxODU5MF0sZmVbT2UrMz4+MF09MHxmZVsxODU5MV0saDAoTGU9MHxvYyg5MzUxNSxPZSwwKSwxMzc0ODMs''@;'; put 'put ''MjgwLDEpLHA9MHxzMChsKSxtPS0yMTQ3NDgzNjQ3LGJlPTA7cDspZ2U9YmUrKCgwfG0pIT0oMHwocGU9MHxhW3ArOD4+Ml0pKSYxKXwwLHA9MHxhW3A+PjJdLG09cGUsYmU9Z2U7Zm9yKHBlPUxlKzE2fDAsZ2U9KGJlPDwzKS00fDAsTT0wLHc9MCxwPTAsbT0wLGs9MCxxPTB8czAobCksQT0t''@;'; put 'put ''MjE0NzQ4MzY0NztxOykoMHxBKSE9KDB8KEc9MHxhW3ErOD4+Ml0pKT8oaDAoUj0wfEdyKExlLDB8dGkoMHxhW3ErMjA+PjJdKSwxKSwxMzc0NDcsMzA0LDEpLGFbMTEyKyhwPTB8YVsoRD1SKzE2fDApPj4yXSk+PjJdPXEsbT8oYVsxNjQrKDB8YVtNKzE2Pj4yXSk+PjJdPVIsTT1tKTooYVsx''@;'; put 'put ''OTIrKDB8YVtwZT4+Ml0pPj4yXT1SLE09UiksYVtwKzE3Nj4+Ml09MCxBPTB8dnIoKGI9dysxfDApPDwyKSxhWzE3MisoMHxhW0Q+PjJdKT4+Ml09QSxrPyhhWzE4NCsoMHxhWyhBPWsrMTZ8MCk+PjJdKT4+Ml09MCx3PTB8dnIoKDB8ayk9PSgwfE0pP2dlOmJlLXc8PDIpLGFbMTgwKygwfGFb''@;'; put 'put ''QT4+Ml0pPj4yXT13LGgwKHc9MHxLYShMZSxrLFIsMCwxKSwxMzc0NjAsMTc2LDEpLGl0WzE3MCsocD0wfGFbdysxNj4+Ml0pPj4xXT0xMCxhW3ArMTU2Pj4yXT0xLHA9KG09MHxhWzE4MCsocD0wfGFbQT4+Ml0pPj4yXSk/MHxWMChtLDgrKGFbcCsxODQ+PjJdPDwyKXwwKTowfFFuKDgrKGFb''@;'; put 'put ''cCsxODQ+PjJdPDwyKXwwKSxhWzE4MCsoaz0wfGFbQT4+Ml0pPj4yXT1wLGFbKGs9aysxODR8MCk+PjJdPTErKG09MHxhW2s+PjJdKSxhW3ArKG08PDIpPj4yXT13LGFbKDB8YVsxODArKHA9MHxhW0E+PjJdKT4+Ml0pKyhhW3ArMTg0Pj4yXTw8Mik+PjJdPTAscD0obT0wfGFbMTcyKyhwPTB8''@;'; put 'put ''YVtEPj4yXSk+PjJdKT8wfFYwKG0sOCsoYVtwKzE3Nj4+Ml08PDIpfDApOjB8UW4oOCsoYVtwKzE3Nj4+Ml08PDIpfDApLGFbMTcyKyhtPTB8YVtEPj4yXSk+PjJdPXAsYVsobT1tKzE3NnwwKT4+Ml09MSsoaz0wfGFbbT4+Ml0pLGFbcCsoazw8Mik+PjJdPXcsYVsoMHxhWzE3Misodz0wfGFb''@;'; put 'put ''RD4+Ml0pPj4yXSkrKGFbdysxNzY+PjJdPDwyKT4+Ml09MCx3PWIsYj1SLGs9UixwPVIsbT1NLEE9Ryk6KHc9YixiPVIsaz1SLHA9UixtPU0sQT1HKSk6KGI9cCxwPU0pLGFbcSsyND4+Ml09YixNPXAscD1iLHE9MHxhW3E+PjJdO2ZvcihhWzE4NCsoMHxhWyhrPWsrMTZ8MCk+PjJdKT4+Ml09''@;'; put 'put ''MCxwPTB8dnIoNCksYVsxODArKDB8YVtrPj4yXSk+PjJdPXAsZmVbT2U+PjBdPTB8ZmVbMTg1ODhdLGZlW09lKzE+PjBdPTB8ZmVbMTg1ODldLGZlW09lKzI+PjBdPTB8ZmVbMTg1OTBdLGZlW09lKzM+PjBdPTB8ZmVbMTg1OTFdLGs9MHxvYyg5MzU2MixPZSwwKSxwPTB8czAobCk7cDspaDAo''@;'; put 'put ''T2U9MHxHcihrLDB8dGkoMHxhW3ArMjA+PjJdKSwxKSwxMzc0NDcsMzA0LDEpLGFbcCsyOD4+Ml09T2UsYVsxMTIrKDB8YVtPZSsxNj4+Ml0pPj4yXT1wLHA9MHxhW3A+PjJdO3A9MCxiPTB8czAobCksbT0tMjE0NzQ4MzY0NztlOmZvcig7Yjspe3c9MHxhW2IrOD4+Ml07dDpkb3tpZigoMHxt''@;'; put 'put ''KT09KDB8dykpdz1tO2Vsc2UgZm9yKHA9Yjs7KXtpZighKHA9MHxhW3A+PjJdKSlicmVhayBlO2lmKCgwfGFbcCs4Pj4yXSkhPSgwfHcpKWJyZWFrIHR9fXdoaWxlKDApO2ZvcihBPWIrMjh8MCxtPXA7bTspMHxCaVsxMjcmY10oYixtKSYmS2EoaywwfGFbQT4+Ml0sMHxhW20rMjg+PjJdLDAs''@;'; put 'put ''MSksbT0wfGFbbT4+Ml07Yj0wfGFbYj4+Ml0sbT13fXJldHVybiBmdW5jdGlvbiB4VihsLGMsZil7Y3w9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTA7Zm9yKGs9MHxEdChsfD0wKTtrOyl7Zm9yKEQ9MHxhWzI0KyhSPTB8YVsxMTIr''@;'; put 'put ''KDB8YVtrKzE2Pj4yXSk+PjJdKT4+Ml0sUj1SKzMyfDAsRz1EKzE2fDAsTT0wfHcwKGwsayk7TTspcT0wfEJpWzEyNyZmXShSLDMyKyhBPTB8YVsxMTIrKDB8YVsxNisoMHxhWygyPT0oMyZhW00+PjJdfDApP006TSstNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSl8MCksaDAodz0wfEthKGMsRCxB''@;'; put 'put ''PTB8YVtBKzI0Pj4yXSwwLDEpLDEzNzQ2MCwxNzYsMSksYVsxNTYrKHA9MHxhWyhiPXcrMTZ8MCk+PjJdKT4+Ml09MSwoMHxxKT4oNjU1MzUmKG09MHxpdFtwKzE3MD4+MV0pfDApJiYobTw8MTY+PjE2fHwocD0obT0wfGFbMTgwKyhwPTB8YVtHPj4yXSk+PjJdKT8wfFYwKG0sOCsoYVtwKzE4''@;'; put 'put ''ND4+Ml08PDIpfDApOjB8UW4oOCsoYVtwKzE4ND4+Ml08PDIpfDApLGFbMTgwKyhwZT0wfGFbRz4+Ml0pPj4yXT1wLGFbKHBlPXBlKzE4NHwwKT4+Ml09MSsobT0wfGFbcGU+PjJdKSxhW3ArKG08PDIpPj4yXT13LGFbKDB8YVsxODArKHA9MHxhW0c+PjJdKT4+Ml0pKyhhW3ArMTg0Pj4yXTw8''@;'; put 'put ''Mik+PjJdPTAscD0obT0wfGFbMTcyKyhwPTB8YVsoQT1BKzE2fDApPj4yXSk+PjJdKT8wfFYwKG0sOCsoYVtwKzE3Nj4+Ml08PDIpfDApOjB8UW4oOCsoYVtwKzE3Nj4+Ml08PDIpfDApLGFbMTcyKyhtPTB8YVtBPj4yXSk+PjJdPXAsYVsobT1tKzE3NnwwKT4+Ml09MSsocGU9MHxhW20+PjJd''@;'; put 'put ''KSxhW3ArKHBlPDwyKT4+Ml09dyxhWygwfGFbMTcyKyhwPTB8YVtBPj4yXSk+PjJdKSsoYVtwKzE3Nj4+Ml08PDIpPj4yXT0wLHA9MHxhW2I+PjJdKSxpdFtwKzE3MD4+MV09cSksTT0wfFMwKGwsTSk7az0wfHp0KGwsayl9fShrLExlLGYpLEMxKGspLGxlPVJlLDB8TGV9ZnVuY3Rpb24gVHMo''@;'; put 'put ''bCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgcGUsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLGdlPTA7Zm9yKHBlPWxlLGxlPWxlKzE2fDAsZmVbKHE9cGUpPj4wXT0wfGZlWzE4NTg4XSxmZVtxKzE+PjBdPTB8ZmVbMTg1ODldLGZlW3ErMj4+MF09MHxm''@;'; put 'put ''ZVsxODU5MF0sZmVbcSszPj4wXT0wfGZlWzE4NTkxXSxoMChxPTB8b2MoOTM1MTUscSwwKSwxMzc0ODMsMjgwLDEpLGI9cSsxNnwwLG09MHxzMChjKSxBPTA7bTspaDAodz0wfEdyKHEsMHx0aSgwfGFbbSsyMD4+Ml0pLDEpLDEzNzQ0NywzMDQsMSksYVsxMTIrKE09MHxhWyhSPXcrMTZ8MCk+''@;'; put 'put ''PjJdKT4+Ml09bSxhW20rMjQ+PjJdPXcsYVtNKzE3Nj4+Ml09MCxNPTB8dnIoNCksYVsxNzIrKEQ9MHxhW1I+PjJdKT4+Ml09TSxhW0QrMTg0Pj4yXT0wLEQ9MHx2cig0KSxhWzE4MCsoMHxhW1I+PjJdKT4+Ml09RCxBP2FbMTY0KygwfGFbQSsxNj4+Ml0pPj4yXT13OmFbMTkyKygwfGFbYj4+''@;'; put 'put ''Ml0pPj4yXT13LG09MHxhW20+PjJdLEE9dztrPTB8czAoYyk7ZTpmb3IoO2s7KXtmb3IoTT1rKzMyfDAsRD1rKzI0fDAsUj1rKzIwfDAsbT1rO209MHxhW20+PjJdOylpZigwfEJpWzEyNyZmXShrLG0pKXtpZihBPTB8QmlbMTI3JnBdKE0sbSszMnwwKSxoMCh3PTB8S2EocSwwfGFbRD4+Ml0s''@;'; put 'put ''MHxhW20rMjQ+PjJdLDAsMSksMTM3NDYwLDE3NiwxKSwoMHxBKT49NjU1MzYpe0c9MTM7YnJlYWsgZX1pdFsxNzArKGdlPTB8YVsoYj13KzE2fDApPj4yXSk+PjFdPUEsYVtnZSsxNTY+PjJdPTEsMHx3JiYwfEthKGwsMHxhW1I+PjJdLDB8YVttKzIwPj4yXSwwLDApJiYoYVsxNTYrKDB8YVti''@;'; put 'put ''Pj4yXSk+PjJdPTEwMCl9az0wfGFbaz4+Ml19Zm9yKDEzPT0oMHxHKSYmUHIoOTM1MTgsOTM1MzQsMjU0LDkzNTQ3KSxrPTB8czAoYyk7azspe2ZvcihNPTE2KyhiPTB8YVtrKzI0Pj4yXSl8MCxiPTB8dzAocSxiKTtiOyltPShBPTB8YVsxODArKG09MHxhW00+PjJdKT4+Ml0pPzB8VjAoQSw4''@;'; put 'put ''KyhhW20rMTg0Pj4yXTw8Mil8MCk6MHxRbig4KyhhW20rMTg0Pj4yXTw8Mil8MCksYVsxODArKEE9MHxhW00+PjJdKT4+Ml09bSxhWyhBPUErMTg0fDApPj4yXT0xKyh3PTB8YVtBPj4yXSksYVttKyh3PDwyKT4+Ml09YixhWygwfGFbMTgwKyh3PTB8YVtNPj4yXSk+PjJdKSsoYVt3KzE4ND4+''@;'; put 'put ''Ml08PDIpPj4yXT0wLHc9YistNDh8MCxtPShBPTB8YVsxNzIrKG09MHxhWzE2KygwfGFbKDI9PSgzJmFbYj4+Ml18MCk/Yjp3KSs0MD4+Ml0pPj4yXSk+PjJdKT8wfFYwKEEsOCsoYVttKzE3Nj4+Ml08PDIpfDApOjB8UW4oOCsoYVttKzE3Nj4+Ml08PDIpfDApLGFbMTcyKygwfGFbMTYrKDB8''@;'; put 'put ''YVsoMj09KDMmYVtiPj4yXXwwKT9iOncpKzQwPj4yXSk+PjJdKT4+Ml09bSxHPTB8YVsxNzIrKHA9MHxhWzE2KygwfGFbKDI9PSgzJmFbYj4+Ml18MCk/Yjp3KSs0MD4+Ml0pPj4yXSk+PjJdLGFbKHA9cCsxNzZ8MCk+PjJdPTErKGdlPTB8YVtwPj4yXSksYVtHKyhnZTw8Mik+PjJdPWIsYVso''@;'; put 'put ''MHxhWzE3MisoZ2U9MHxhWzE2KygwfGFbKDI9PSgzJmFbYj4+Ml18MCk/Yjp3KSs0MD4+Ml0pPj4yXSk+PjJdKSsoYVtnZSsxNzY+PjJdPDwyKT4+Ml09MCxiPTB8UzAocSxiKTtrPTB8YVtrPj4yXX1yZXR1cm4gbGU9cGUsMHxxfWZ1bmN0aW9uIGRnKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTA7''@;'; put 'put ''Zm9yKG09MHxEdChsfD0wKTttOykocD0wfGFbMTcyKyhjPTB8YVsoZj1tKzE2fDApPj4yXSk+PjJdKSYmKEZ0KHApLGM9MHxhW2Y+PjJdKSwwfChjPTB8YVtjKzE4MD4+Ml0pJiZGdChjKSxtPTB8enQobCxtKTtDMShsKX1mdW5jdGlvbiBUVihsLGMpe2N8PTA7dmFyIGssTSxHLHBlLE9lLExl''@;'; put 'put ''LFJlLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLEQ9MCxSPTAsYmU9MCxIZT0wLFZlPTA7Zm9yKFJlPWxlLGxlPWxlKzY0fDAsRz1SZSs1MnwwLFI9UmUrNDB8MCxwZT1SZSxMZT0wfFFuKDcyKihPZT0wfEdvKGx8PTApKXwwKSxXNyhSLGwpLHc9K2puW1I+PjJdLGI9K2puW1IrND4+Ml0saz0u''@;'; put 'put ''NSoodz0oUj0wIT0oMHxmZVtSKzg+PjBdKSk/LjAxMzg4ODg4ODg4ODg4ODg4OCp3OncpLE09LjUqKGI9Uj8uMDEzODg4ODg4ODg4ODg4ODg4KmI6YiksZj1MZSxwPTB8RHQobCk7cDspbT0rX1szMisoRD0wfGFbcCsxNj4+Ml0pPj4zXSxSPyhBPS41KitfW0QrNDA+PjNdK2IsbT0uNSptK3cp''@;'; put 'put ''OihBPU0qK19bRCs0MD4+M10sbSo9ayksX1tmPj4zXT1WZT0rX1soRD0wfGFbRCsxMzI+PjJdKT4+M10sX1tmKzg+PjNdPUhlPStfW0QrOD4+M10sX1tmKzE2Pj4zXT1WZS1tLF9bZisyND4+M109SGUtQSxfW2YrMzI+PjNdPVZlK20sX1tmKzQwPj4zXT1IZStBLF9bZis0OD4+M109bSxfW2Yr''@;'; put 'put ''NTY+PjNdPUEsYVtmKzY0Pj4yXT1wLGY9Zis3MnwwLHA9MHx6dChsLHApO2Rve2lmKCgwfGMpPDApe2lmKDA9PShtPStJVihMZSxPZSkpKXtGdChMZSksZj0wO2JyZWFrfXc9bSxBPW0sYmU9MTl9ZWxzZXtpZihwPTB8djJlKExlLE9lLEcpLCEoZj0wfGFbRz4+Ml0pKXtGdChwKSxGdChMZSks''@;'; put 'put ''Zj0wO2JyZWFrfWM/bT1BPStuOWUocCxmKToocjllKHBlLHAsZiksbT0rX1twZT4+M10sQT0rX1twZSs4Pj4zXSksRnQocCksdz1tLGJlPTE5fX13aGlsZSgwKTtpZigxOT09KDB8YmUpKXtmb3IoZj0wLHA9TGU7ISgoMHxmKT49KDB8T2UpKTspX1soYmU9MHxhWzEzMisoMHxhWzE2KygwfGFb''@;'; put 'put ''cCs2ND4+Ml0pPj4yXSk+PjJdKT4+M109K19bcD4+M10qdyxfW2JlKzg+PjNdPStfW3ArOD4+M10qQSxmPWYrMXwwLHA9cCs3MnwwO0Z0KExlKSxmPTF9cmV0dXJuIGxlPVJlLDB8Zn1mdW5jdGlvbiBJVihsLGMpe2x8PTAsY3w9MDt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09''@;'; put 'put ''MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTA7Zj0wLHA9MDtlOmZvcig7ISgoMHxwKT49KDB8YykpOylmb3IoYmU9bCs3MnwwLHA9cCsxfDAsUj1sKzE2fDAsRz1sKzh8MCxxPWwrNTZ8MCxwZT1sKzQ4fDAsZ2U9bCszMnwwLE09bCsyNHwwLEQ9bCs0MHwwLGI9cCxrPWJlOzspe2lm''@;'; put 'put ''KCgwfGIpPj0oMHxjKSl7bD1iZTtjb250aW51ZSBlfWlmKCtfW1I+PjNdPD0rX1trKzMyPj4zXSYmK19baysxNj4+M108PStfW2dlPj4zXSYmK19bTT4+M108PStfW2srNDA+PjNdJiYrX1trKzI0Pj4zXTw9K19bRD4+M10pe2Y9MDticmVhayBlfShtPStfW2w+PjNdKT09KEE9K19baz4+M10p''@;'; put 'put ''P3c9eXM6KHc9K2VvKCsobS1BKSksdz0oK19bays0OD4+M10rICtfW3BlPj4zXSkvdyksKG09K19bRz4+M10pPT0oQT0rX1trKzg+PjNdKT9tPXlzOihtPStlbygrKG0tQSkpLG09KCtfW2srNTY+PjNdKyArX1txPj4zXSkvbSksYj1iKzF8MCxrPWsrNzJ8MCxmPSh3PW08dz9tOncpPmY/dzpm''@;'; put 'put ''fXJldHVybitmfWZ1bmN0aW9uIHYyZShsLGMsZil7bHw9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTA7RD0wLHA9MCxSPWs9MHxRbigxNisoKGN8PTAp''@;'; put 'put ''PDw0KXwwKSxHPWMsdz1rO2U6Zm9yKDshKCgwfHApPj0oMHxjKSk7KWZvcihxZT1sKzcyfDAscD1wKzF8MCxWZT1sKzE2fDAsZ2U9bCszMnwwLGJlPWwrMjR8MCxPZT1sKzQwfDAsTGU9bCs4fDAsUmU9bCs1NnwwLEhlPWwrNDh8MCxxPXAscGU9cWUsTT13Ozspe2lmKCgwfHEpPT0oMHxjKSl7''@;'; put 'put ''bD1xZSx3PU07Y29udGludWUgZX0rX1tWZT4+M108PStfW3BlKzMyPj4zXSYmK19bcGUrMTY+PjNdPD0rX1tnZT4+M10mJitfW2JlPj4zXTw9K19bcGUrNDA+PjNdJiYrX1twZSsyND4+M108PStfW09lPj4zXT8odz1HK2N8MCwoMHxEKT09KDB8Ryk/KFI9az0wfFYwKGssMTYrKHc8PDQpfDAp''@;'; put 'put ''LE09ayk6dz1HLChtPStfW2w+PjNdKSE9KEE9K19bcGU+PjNdKT8obT0oK19bcGUrNDg+PjNdKyArX1tIZT4+M10pLytlbygrKG0tQSkpKTwxJiYobT0xLHJ0PTEzKToobT15cyxydD0xMyksMTM9PSgwfHJ0KSYmKHJ0PTApLChBPStfW0xlPj4zXSkhPShiPStfW3BlKzg+PjNdKT8oQT0oK19b''@;'; put 'put ''cGUrNTY+PjNdKyArX1tSZT4+M10pLytlbygrKEEtYikpKTwxJiYoQT0xLHJ0PTE2KTooQT15cyxydD0xNiksMTY9PSgwfHJ0KSYmKHJ0PTApLF9bUisoKEQ9RCsxfDApPDw0KT4+M109bSxfW1IrKEQ8PDQpKzg+PjNdPUEpOnc9RyxxPXErMXwwLHBlPXBlKzcyfDAsRz13fXJldHVybiBydD0w''@;'; put 'put ''fFYwKHcsMTYrKEQ8PDQpfDApLGFbZj4+Ml09RCwwfHJ0fWZ1bmN0aW9uIG45ZShsLGMpe2x8PTAsY3w9MDt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MDtmb3IocD0xLG09MDtmPWwrMTZ8MCwhKCgwfHApPigwfGMpKTspcD1wKzF8MCxtPShBPSh3PStfW2Y+PjNdKTwoQT0rX1tsKzI0Pj4zXSk/''@;'; put 'put ''dzpBKT5tP0E6bSxsPWY7cmV0dXJuK219ZnVuY3Rpb24gcjllKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHcscD0wLG09MCxBPTAsYj0wO2ZvcihfWyhjfD0wKT4+M109MSxfW2MrOD4+M109eXMseDEoYysxNnwwLGYsMTYsNzYpLHc9MHxRbigxNisoZjw8NCl8MCksX1t3KyhmPDw0KT4+M109K19b''@;'; put 'put ''YysoZjw8NCk+PjNdLEE9ZixwPTE7Oyl7aWYoX1t3KyhBPDw0KSs4Pj4zXT1wLG09QSstMXwwLCgwfEEpPD0wKXtwPXlzLG09MCxBPTA7YnJlYWt9X1t3KyhtPDw0KT4+M109K19bYysobTw8NCk+PjNdLGI9K19bKCtfW2MrKEE8PDQpKzg+PjNdPnA/Yzp3KSsoQTw8NCkrOD4+M10sQT1tLHA9''@;'; put 'put ''Yn1mb3IoOyEoKDB8QSk+KDB8ZikpOylwPShjPShiPStfW3crKEE8PDQpKzg+PjNdKitfW3crKEE8PDQpPj4zXSk8cCk/YjpwLG09Yz9BOm0sQT1BKzF8MDtpZihwPHlzKXJldHVybiBiPStfW3crKG08PDQpKzg+PjNdLF9bbD4+M109K19bdysobTw8NCk+PjNdLHZvaWQoX1tsKzg+PjNdPWIp''@;'; put 'put ''O1ByKDkzNTk2LDkzNTM0LDgzMiw5MzYxNil9ZnVuY3Rpb24gbzllKGwsYyxmKXtyZXR1cm4gY3w9MCxmfD0wLGY9bGUsbGU9bGUrMTZ8MCxhWyhjPWYpPj4yXT05MzYzMSwkcigxLDkzNjgxLGMpLGxlPWYsMH1mdW5jdGlvbiBOWChsKXt2YXIgYz0wOzB8KGx8PTApJiYoMHwoYz0wfGFbbCs0''@;'; put 'put ''Pj4yXSkmJkZ0KGMpLDB8KGM9MHxhW2wrOD4+Ml0pJiZGdChjKSwwfChjPTB8YVtsKzE2Pj4yXSkmJkZ0KGMpLEZ0KGwpKX1mdW5jdGlvbiBSeShsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgayxNLEQsUixtPTAsQT0wLHc9MCxiPTA7Zm9yKFI9bGUsbGU9bGUrMTZ8MCxEPVIrOHwwLE09''@;'; put 'put ''UixrPTB8VWEoMHxhWzQ2ODQ5XSwoZnw9MCk8PDIpLGFbNDY4NDldPWssbT0wOyEoKDB8bSk+PSgwfGYpKTspYVtwKyhtPDwyKT4+Ml09MjE0NzQ4MzY0NyxtPW0rMXwwO2ZvcihhW3ArKGw8PDIpPj4yXT0wLEE9YysoMjAqbHwwKXwwLHc9YysoMjAqbHwwKSs4fDAsYj1jKygyMCpsfDApKzR8''@;'; put 'put ''MCxtPTE7ISgoMHxtKT49KDB8YVtBPj4yXSkpOylhW3ArKGFbKDB8YVtiPj4yXSkrKG08PDIpPj4yXTw8Mik+PjJdPX5+K2puWygwfGFbdz4+Ml0pKyhtPDwyKT4+Ml0sbT1tKzF8MDtmb3IoZnVuY3Rpb24gQTJlKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgYixrLEE9MCx3''@;'; put 'put ''PTA7Zm9yKGI9MT09KDB8KG18PTApKT8wOjB8UW4oKG08PDIpLTR8MCksYVtsPj4yXT1iLGFbbCs0Pj4yXT1rPW0rLTF8MCxBPTAsdz0wOyEoKDB8dyk+PSgwfG0pKTspKDB8dykhPSgwfGMpJiYoYVtiKyhBPDwyKT4+Ml09dyxhW2YrKHc8PDIpPj4yXT1BLEE9QSsxfDApLHc9dysxfDA7Zm9y''@;'; put 'put ''KEE9KDB8aykvMnwwOyEoKDB8QSk8PS0xKTspQnkobCxBLGYscCksQT1BKy0xfDB9KEQsbCxrLHAsZiksdz0tMjE0NzQ4MzYzOTs7KXtpZighKCgwfHkyZShELE0sMHxhWzQ2ODQ5XSxwKSk8PDI0Pj4yNCkpe209MDticmVha31pZigyMTQ3NDgzNjQ3PT0oMHwobD0wfGFbcCsoKG09MHxhW00+''@;'; put 'put ''PjJdKTw8Mik+PjJdKSkpe209MDticmVha31mb3Iodz1jKygyMCptfDApfDAsYj1jKygyMCptfDApKzR8MCxBPWMrKDIwKm18MCkrOHwwLG09MTshKCgwfG0pPj0oMHxhW3c+PjJdKSk7KXcyZShELDB8YVsoMHxhW2I+PjJdKSsobTw8Mik+PjJdLGwrfn4ram5bKDB8YVtBPj4yXSkrKG08PDIp''@;'; put 'put ''Pj4yXXwwLDB8YVs0Njg0OV0scCksbT1tKzF8MDt3PWwrMTB8MH1mb3IoOyEoKDB8bSk+PSgwfGYpKTspMjE0NzQ4MzY0Nz09KDB8YVsoQT1wKyhtPDwyKXwwKT4+Ml0pJiYoYVtBPj4yXT13KSxtPW0rMXwwO05EKEQpLGxlPVJ9ZnVuY3Rpb24geTJlKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0w''@;'; put 'put ''O3ZhciBtLEE9MDtyZXR1cm4gMHxhWyhtPTQrKGx8PTApfDApPj4yXT8oYVtjPj4yXT1hWyhBPTB8YVtsPj4yXSk+PjJdLGFbQT4+Ml09Yz0wfGFbQSsoKDB8YVttPj4yXSktMTw8Mik+PjJdLGFbZisoYzw8Mik+PjJdPTAsYVttPj4yXT0oMHxhW20+PjJdKS0xLEJ5KGwsMCxmLHApLGw9MSk6''@;'; put 'put ''bD0wLDB8bH1mdW5jdGlvbiB3MmUobCxjLGYscCxtKXtsfD0wLHB8PTA7dmFyIEE9MCx3PTAsYj0wLGs9MDtpZigoMHxhWyhBPShtfD0wKSsoKGN8PTApPDwyKXwwKT4+Ml0pPigwfChmfD0wKSkpe2ZvcihiPTB8YVsoaz1wKyhjPDwyKXwwKT4+Ml0sYVtBPj4yXT1mLEE9MHxhW2w+PjJdLGw9''@;'; put 'put ''YjshKCgwfGwpPD0wfHwodz1sPj4+MSxiPTB8YVtBKyh3PDwyKT4+Ml0sKDB8YVttKyhiPDwyKT4+Ml0pPD0oMHxmKSkpOylhW0ErKGw8PDIpPj4yXT1iLGFbcCsoYjw8Mik+PjJdPWwsbD13O2FbQSsobDw8Mik+PjJdPWMsYVtrPj4yXT1sfX1mdW5jdGlvbiBORChsKXswfChsPTB8YVsobHw9''@;'; put 'put ''MCk+PjJdKSYmRnQobCl9ZnVuY3Rpb24gQnkobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIGIsbT0wLEE9MCx3PTAsaz0wO2ZvcihiPTQrKGx8PTApfDA7QT0xfChtPWM8PDEpLCgwfG0pPCgwfCh3PTB8YVtiPj4yXSkpJiYoMHxhW3ArKGFbKGs9MHxhW2w+PjJdKSsobTw8Mik+PjJdPDwy''@;'; put 'put ''KT4+Ml0pPCgwfGFbcCsoYVtrKyhjPDwyKT4+Ml08PDIpPj4yXSl8fChtPWMpLCgwfEEpPCgwfHcpJiYobT0oMHxhW3ArKGFbKGs9MHxhW2w+PjJdKSsoQTw8Mik+PjJdPDwyKT4+Ml0pPCgwfGFbcCsoYVtrKyhtPDwyKT4+Ml08PDIpPj4yXSk/QTptKSwoMHxtKSE9KDB8Yyk7KUE9MHxhWyh3''@;'; put 'put ''PShrPTB8YVtsPj4yXSkrKG08PDIpfDApPj4yXSxhW3c+PjJdPWFbKGs9aysoYzw8Mil8MCk+PjJdLGFbaz4+Ml09QSxhW2YrKGFbdz4+Ml08PDIpPj4yXT1tLGFbZisoYVtrPj4yXTw8Mik+PjJdPWMsYz1tfWZ1bmN0aW9uIFZEKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIE0s''@;'; put 'put ''RCxSLEcsbT0wLEE9MCx3PTAsYj0wLGs9MDtmb3IoRz1sZSxsZT1sZSsxNnwwLE09Rys4fDAsYVsoRD1HKT4+Ml09MCxSPTB8UW4oZjw8MiksbT0wOyEoKDB8bSk+PSgwfGYpKTspam5bcCsobTw8Mik+PjJdPTM0MDI4MjM0NjYzODUyODg2ZTIyLG09bSsxfDA7Zm9yKGpuW3ArKGw8PDIpPj4y''@;'; put 'put ''XT0wLEE9MHxhW2MrKDIwKmx8MCk+PjJdLHc9YysoMjAqbHwwKSs4fDAsYj1jKygyMCpsfDApKzR8MCxtPTE7ISgoMHxtKT49KDB8QSkpOylhW3ArKGFbKDB8YVtiPj4yXSkrKG08PDIpPj4yXTw8Mik+PjJdPWFbKDB8YVt3Pj4yXSkrKG08PDIpPj4yXSxtPW0rMXwwOyFmdW5jdGlvbiBQeShs''@;'; put 'put ''LGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIGIsayxBPTAsdz0wO2ZvcihrPTB8UW4oKGI9KG18PTApLTF8MCk8PDIpLGFbbD4+Ml09ayxhW2wrND4+Ml09YixBPTAsdz0wOyEoKDB8dyk+PSgwfG0pKTspKDB8dykhPSgwfGMpJiYoYVtrKyhBPDwyKT4+Ml09dyxhW2YrKHc8PDIp''@;'; put 'put ''Pj4yXT1BLEE9QSsxfDApLHc9dysxfDA7Zm9yKEE9KDB8YikvMnwwOyEoKDB8QSk8PS0xKTspTFYobCxBLGYscCksQT1BKy0xfDB9KE0sbCxSLHAsZik7ZTpmb3IoOygwfFJrKE0sRCxSLHApKTw8MjQ+PjI0JiYobT0wfGFbRD4+Ml0saz0ram5bcCsobTw8Mik+PjJdLDM0MDI4MjM0NjYzODUy''@;'; put 'put ''ODg2ZTIyIT1rKTspZm9yKHc9YysoMjAqbXwwKXwwLGI9YysoMjAqbXwwKSs0fDAsQT1jKygyMCptfDApKzh8MCxtPTE7Oyl7aWYoKDB8bSk+PSgwfGFbdz4+Ml0pKWNvbnRpbnVlIGU7RFYoTSwwfGFbKDB8YVtiPj4yXSkrKG08PDIpPj4yXSwram5bKDB8YVtBPj4yXSkrKG08PDIpPj4yXStr''@;'; put 'put ''LFIscCksbT1tKzF8MH1ORChNKSxGdChSKSxsZT1HfWZ1bmN0aW9uIFJrKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBtLEE9MDtyZXR1cm4gMHxhWyhtPTQrKGx8PTApfDApPj4yXT8oYVtjPj4yXT1hWyhBPTB8YVtsPj4yXSk+PjJdLGFbQT4+Ml09Yz0wfGFbQSsoKDB8YVttPj4yXSkt''@;'; put 'put ''MTw8Mik+PjJdLGFbZisoYzw8Mik+PjJdPTAsYVttPj4yXT0oMHxhW20+PjJdKS0xLExWKGwsMCxmLHApLGw9MSk6bD0wLDB8bH1mdW5jdGlvbiBEVihsLGMsZixwLG0pe2x8PTAscHw9MDt2YXIgQT0wLHc9MCxiPTAsaz0wO2lmKCEoK2puWyhBPShtfD0wKSsoKGN8PTApPDwyKXwwKT4+Ml08''@;'; put 'put ''PShmPStmKSkpe2ZvcihiPTB8YVsoaz1wKyhjPDwyKXwwKT4+Ml0sam5bQT4+Ml09ZixBPTB8YVtsPj4yXSxsPWI7ISgoMHxsKTw9MCkmJitqblttKygoYj0wfGFbQSsoKHc9bD4+PjEpPDwyKT4+Ml0pPDwyKT4+Ml0+ZjspYVtBKyhsPDwyKT4+Ml09YixhW3ArKGI8PDIpPj4yXT1sLGw9dzth''@;'; put 'put ''W0ErKGw8PDIpPj4yXT1jLGFbaz4+Ml09bH19ZnVuY3Rpb24gTFYobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIGIsbT0wLEE9MCx3PTAsaz0wO2ZvcihiPTQrKGx8PTApfDA7QT0xfChtPWM8PDEpLCgwfG0pPCgwfCh3PTB8YVtiPj4yXSkpJiYram5bcCsoYVsoaz0wfGFbbD4+Ml0pKyht''@;'; put 'put ''PDwyKT4+Ml08PDIpPj4yXTwram5bcCsoYVtrKyhjPDwyKT4+Ml08PDIpPj4yXXx8KG09YyksKDB8QSk8KDB8dykmJitqbltwKyhhWyhrPTB8YVtsPj4yXSkrKEE8PDIpPj4yXTw8Mik+PjJdPCtqbltwKyhhW2srKG08PDIpPj4yXTw8Mik+PjJdJiYobT1BKSwoMHxtKSE9KDB8Yyk7KUE9MHxh''@;'; put 'put ''Wyh3PShrPTB8YVtsPj4yXSkrKG08PDIpfDApPj4yXSxhW3c+PjJdPWFbKGs9aysoYzw8Mil8MCk+PjJdLGFbaz4+Ml09QSxhW2YrKGFbdz4+Ml08PDIpPj4yXT1tLGFbZisoYVtrPj4yXTw8Mik+PjJdPWMsYz1tfWZ1bmN0aW9uIGpEKCl7enkoMTg3NDAwLDQ4KSxhWzQ2ODUzXT0wfWZ1bmN0''@;'; put 'put ''aW9uIE9WKGwsYyl7bHw9MCxjfD0wO3ZhciBBLHcsZj0wLHA9MCxtPTA7cmV0dXJuIHc9MHxHeSgxODc0MDApLGFbdyszMj4+Ml09bCxhW3crMzY+PjJdPWMsbkwobCksbkwoYyksYVt3KzI0Pj4yXT0wLGFbdysyOD4+Ml09MCxBPStfW2M+PjNdLShtPStfW2w+PjNdKSxmPStfW2MrOD4+M10t''@;'; put 'put ''KHA9K19bbCs4Pj4zXSksX1soYz13KzE2fDApPj4zXT1tPWYqcCtBKm0rLjUqKGYqZitBKkEpLChBPjA/QTotQSk+KGY+MD9mOi1mKT8oX1t3Pj4zXT0xLHA9Zi9BLGY9QSxsPXcrOHwwKTooX1t3Kzg+PjNdPTEscD1BL2YsbD13KSxfW2w+PjNdPXAsX1tjPj4zXT1tL2YsYVt3KzQwPj4yXT1j''@;'; put 'put ''PTB8YVs0Njg1M10sYVs0Njg1M109YysxLDB8d31mdW5jdGlvbiBCayhsKXt2YXIgTSxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLEQ9MDtNPStfWyhsfD0wKT4+M107ZTpkb3tpZigxPT1NKXsrX1tsKzg+PjNdPj0wPyhjPTB8YVtsKzI0Pj4yXSxEPShmPTB8YVtsKzI4Pj4yXSk/''@;'; put 'put ''NTo5KTooYz0wfGFbbCsyOD4+Ml0sRD0oZj0wfGFbbCsyND4+Ml0pPzU6OSk7ZG97aWYoNT09KDB8RCkpe2lmKChwPStfW2YrOD4+M10pPitfWzIzMjY2XSlicmVhayBlO2lmKHA+PShtPStfWzIzMjY3XSkpe3c9cCxwPStfW2Y+PjNdO2JyZWFrfXc9bSxwPStfW2wrMTY+PjNdLStfW2wrOD4+''@;'; put 'put ''M10qbTticmVha305PT0oMHxEKSYmKHc9bT0rX1syMzI2N10scD0rX1tsKzE2Pj4zXS0rX1tsKzg+PjNdKm0pfXdoaWxlKDApO2Rve2lmKGMpe2lmKChBPStfW2MrOD4+M10pPG0pYnJlYWsgZTtpZihBPD0obT0rX1syMzI2Nl0pKXttPStfW2M+PjNdO2JyZWFrfUE9bSxtPStfW2wrMTY+PjNd''@;'; put 'put ''LStfW2wrOD4+M10qbTticmVha31BPW09K19bMjMyNjZdLG09K19bbCsxNj4+M10tK19bbCs4Pj4zXSptfXdoaWxlKDApOyhjPXA+KGI9K19bMjMyNjhdKSkmKGY9bT5iKXxwPChrPStfWzIzMjY5XSkmbTxrfHwoYyYmKHc9KCtfW2wrMTY+PjNdLWIpLytfW2wrOD4+M10scD1iKSxwPGsmJih3''@;'; put 'put ''PSgrX1tsKzE2Pj4zXS1rKS8rX1tsKzg+PjNdLHA9ayksZiYmKEE9KCtfW2wrMTY+PjNdLWIpLytfW2wrOD4+M10sbT1iKSxtPGsmJihBPSgrX1tsKzE2Pj4zXS1rKS8rX1tsKzg+PjNdLG09ayksRD00Nil9ZWxzZXtmPTB8YVtsKzI4Pj4yXSxjPTB8YVtsKzI0Pj4yXTtkb3tpZihjKXtpZigo''@;'; put 'put ''cD0rX1tjPj4zXSk+K19bMjMyNjhdKWJyZWFrIGU7aWYocD49KEE9K19bMjMyNjldKSl7dz0rX1tjKzg+PjNdO2JyZWFrfXc9K19bbCsxNj4+M10tQSpNLHA9QTticmVha313PStfW2wrMTY+PjNdLShBPStfWzIzMjY5XSkqTSxwPUF9d2hpbGUoMCk7ZG97aWYoZil7aWYoKG09K19bZj4+M10p''@;'; put 'put ''PEEpYnJlYWsgZTtpZihtPD0oYj0rX1syMzI2OF0pKXtBPStfW2YrOD4+M107YnJlYWt9QT0rX1tsKzE2Pj4zXS1NKmIsbT1iO2JyZWFrfUE9K19bbCsxNj4+M10tTSoobT0rX1syMzI2OF0pfXdoaWxlKDApOyhjPXc+KGI9K19bMjMyNjZdKSkmKGY9QT5iKXx3PChrPStfWzIzMjY3XSkmQTxr''@;'; put 'put ''fHwoYyYmKHc9YixwPSgrX1tsKzE2Pj4zXS1iKS9NKSx3PGsmJih3PWsscD0oK19bbCsxNj4+M10taykvTSksZiYmKEE9YixtPSgrX1tsKzE2Pj4zXS1iKS9NKSxBPGsmJihBPWssbT0oK19bbCsxNj4+M10taykvTSksRD00Nil9fXdoaWxlKDApOzQ2PT0oMHxEKSYmZnVuY3Rpb24gVlgobCxj''@;'; put 'put ''LGYscCxtKXtwPStwLG09K207dmFyIEE7TGMoMHxhWyhBPTMyKyhsfD0wKXwwKT4+Ml0sYz0rYyxmPStmKSxMYygwfGFbQT4+Ml0scCxtKSxMYygwfGFbKGw9bCszNnwwKT4+Ml0sYyxmKSxMYygwfGFbbD4+Ml0scCxtKX0obCxwLHcsbSxBKX1mdW5jdGlvbiBaRChsLGMsZil7YVsyNCsobHw9''@;'; put 'put ''MCkrKChjfD0wKTw8Mik+PjJdPWZ8PTAsbkwoZiksMHxhW2wrMjQrKDEtYzw8Mik+PjJdJiYoQmsobCksdEwoMHxhW2wrMzI+PjJdKSx0TCgwfGFbbCszNj4+Ml0pLFlWKGwsMTg3NDAwKSl9ZnVuY3Rpb24gWTcobCxjKXt2YXIgZixwO3JldHVybisoKHA9K19bOCsobHw9MCk+PjNdLStfWzgr''@;'; put 'put ''KGN8PTApPj4zXSkqcCsoZj0rX1tsPj4zXS0rX1tjPj4zXSkqZil9ZnVuY3Rpb24gWlgobCxjLGYpe19bKGx8PTApPj4zXT0rX1soY3w9MCk+PjNdLStfWyhmfD0wKT4+M10sX1tsKzg+PjNdPStfW2MrOD4+M10tK19bZis4Pj4zXX1mdW5jdGlvbiBSVihsLGMsZil7X1sobHw9MCk+PjNdPStf''@;'; put 'put ''WyhmfD0wKT4+M10rICtfWyhjfD0wKT4+M10sX1tsKzg+PjNdPStfW2YrOD4+M10rICtfW2MrOD4+M119ZnVuY3Rpb24gUGsobCxjLGYpe3ZhciBwLG07cmV0dXJuKygoK19bKGZ8PTApPj4zXS0obT0rX1soY3w9MCk+PjNdKSkqKCtfWzgrKGx8PTApPj4zXS0ocD0rX1tjKzg+PjNdKSktKCtf''@;'; put 'put ''W2w+PjNdLW0pKigrX1tmKzg+PjNdLXApKX1mdW5jdGlvbiBGeShsLGMsZil7dmFyIHAsbSxBLHc7cmV0dXJuIGN8PTAsZnw9MCxwPWxlLGxlPWxlKzQ4fDAsbT1wKzMyfDAsQT1wKzE2fDAsYVsodz1wKT4+Ml09YVsobHw9MCk+PjJdLGFbdys0Pj4yXT1hW2wrND4+Ml0sYVt3Kzg+PjJdPWFb''@;'; put 'put ''bCs4Pj4yXSxhW3crMTI+PjJdPWFbbCsxMj4+Ml0sYVtBPj4yXT1hW2M+PjJdLGFbQSs0Pj4yXT1hW2MrND4+Ml0sYVtBKzg+PjJdPWFbYys4Pj4yXSxhW0ErMTI+PjJdPWFbYysxMj4+Ml0sYVttPj4yXT1hW2Y+PjJdLGFbbSs0Pj4yXT1hW2YrND4+Ml0sYVttKzg+PjJdPWFbZis4Pj4yXSxh''@;'; put 'put ''W20rMTI+PjJdPWFbZisxMj4+Ml0sZj0rUGsodyxBLG0pPjAmMSxsZT1wLDB8Zn1mdW5jdGlvbiBHRChsLGMsZixwLG0pe218PTA7dmFyIEEsdyxiLGssTSxELFIsRyxxLHBlPTAsZ2U9MDtyZXR1cm4gMD09KHc9KFI9KChwZT0rX1s4KyhwfD0wKT4+M10pLShnZT0rX1s4KyhmfD0wKT4+M10p''@;'; put 'put ''KSoocT0rX1sobHw9MCk+PjNdKSkrKEc9K19bKGN8PTApPj4zXSkqKGdlLXBlKSsoaz0oTT0rX1tjKzg+PjNdKS0oYj0rX1tsKzg+PjNdKSkqKEQ9K19bcD4+M10pKyhBPStfW2Y+PjNdKSooYi1NKSk/cD0wOihwZT0oQSooYi1wZSkrUisoZ2UtYikqRCkvdyxnZT0tKEEqaysoKGdlLU0pKnEr''@;'; put 'put ''KGItZ2UpKkcpKS93LF9bbT4+M109cGUqKEctcSkrcSxfW20rOD4+M109aypwZStiLHA9Z2U8PTEmZ2U+PTAmcGU+PTAmcGU8PTEmMSksMHxwfWZ1bmN0aW9uIFU3KGwsYyxmKXtmPStmO3ZhciB3LHA9MCxtPTAsQT0wO2ZvcihhWzIwKyhsfD0wKT4+Ml09Y3w9MCxuTChjKSxfWyh3PWwrMjR8''@;'; put 'put ''MCk+PjNdPStfW2MrOD4+M10rZixwPShwPTB8YVs0Njg1Nl0pKyg0MCooMHx6WChsKSl8MCl8MDsocD0wfGFbKG09cCszMnwwKT4+Ml0pJiYoKGY9K19bdz4+M10pPihBPStfW3ArMjQ+PjNdKXx8Zj09QSYmK19bYz4+M10+K19bYVtwKzIwPj4yXT4+M10pOyk7YVtsKzMyPj4yXT1wLGFbbT4+''@;'; put 'put ''Ml09bCxhWzQ2ODU3XT0xKygwfGFbNDY4NTddKX1mdW5jdGlvbiB6WChsKXt2YXIgYyxmLHA7Yz0oK19bMjQrKGx8PTApPj4zXS0rX1syMzI3M10pLytfWzIzMjc1XSoocD0rKDB8KGY9MHxhWzQ2ODU4XSkpKTtkb3tpZighKGM8MCkpe2lmKGM+PXApe2w9ZistMXwwO2JyZWFrfWw9fn5jO2Jy''@;'; put 'put ''ZWFrfWw9MH13aGlsZSgwKTtyZXR1cm4oMHxsKTwoMHxhWzQ2ODU5XSkmJihhWzQ2ODU5XT1sKSwwfGx9ZnVuY3Rpb24gRmsobCl7dmFyIGYsYz0wLHA9MDtpZigwfGFbKGY9MjArKGx8PTApfDApPj4yXSl7Yz0oYz0wfGFbNDY4NTZdKSsoNDAqKDB8elgobCkpfDApfDA7ZG97Yz0wfGFbKHA9''@;'; put 'put ''YyszMnwwKT4+Ml19d2hpbGUoKDB8YykhPSgwfGwpKTthW3A+PjJdPWFbbCszMj4+Ml0sYVs0Njg1N109KDB8YVs0Njg1N10pLTEsdEwoMHxhW2Y+PjJdKSxhW2Y+PjJdPTB9fWZ1bmN0aW9uIEh5KCl7cmV0dXJuIDA9PSgwfGFbNDY4NTddKXwwfWZ1bmN0aW9uIGIyZShsKXtsfD0wO3ZhciBj''@;'; put 'put ''LG0sZj0wLHA9MDtmb3IoYz0wfGFbNDY4NTZdLGY9MHxhWzQ2ODU5XTshKDB8KHA9MHxhW2MrKDQwKmZ8MCkrMzI+PjJdKSk7KWFbNDY4NTldPXA9ZisxfDAsZj1wO209K19bcCsyND4+M10sX1tsPj4zXT0rX1thW3ArMjA+PjJdPj4zXSxfW2wrOD4+M109bX1mdW5jdGlvbiBfMmUoKXt2YXIg''@;'; put 'put ''bCxjO3JldHVybiBhWyhjPSgwfGFbNDY4NTZdKSsoNDAqKDB8YVs0Njg1OV0pfDApKzMyfDApPj4yXT1hWzMyKyhsPTB8YVtjPj4yXSk+PjJdLGFbNDY4NTddPSgwfGFbNDY4NTddKS0xLDB8bH1mdW5jdGlvbiBXRChsLGMpe3ZhciBmO3JldHVybiBsfD0wLGN8PTAsZj0wfEd5KDE4NzQ0OCks''@;'; put 'put ''YVtmKzg+PjJdPWwsZmVbZisxNj4+MF09YyxhW2YrMzI+PjJdPTAsYVtmKzIwPj4yXT0wLGFbZisxMj4+Ml09MCwwfGZ9ZnVuY3Rpb24gWUQobCxjKXt2YXIgQSxiLGY9MCxwPTAsbT0wLHc9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MDtBPTB8YVs4KyhsfD0wKT4+Ml0sYj0wfGFbOCsoY3w9''@;'; put 'put ''MCk+PjJdO2Rve2lmKDA9PSgwfEEpfDA9PSgwfGIpfHwoMHwoUj0wfGFbQSszNj4+Ml0pKT09KDB8KGY9MHxhW2IrMzY+PjJdKSl8fChNPShwPStfW2IrOD4+M10pKih3PStfW0E+PjNdKS0oaz0rX1tiPj4zXSkqKG09K19bQSs4Pj4zXSkpPi0xZS0xMCZNPDFlLTEwKWw9MDtlbHNle0Q9KChH''@;'; put 'put ''PStfW0ErMTY+PjNdKSpwLShxPStfW2IrMTY+PjNdKSptKS9NLHc9KHEqdy1HKmspL00scD0rX1tSKzg+PjNdLG09K19bZis4Pj4zXTtkb3tpZihwPG0pZj1SO2Vsc2V7aWYocD09bSYmK19bUj4+M108K19bZj4+M10pe2Y9UjticmVha31sPWN9fXdoaWxlKDApO2lmKGw9MHxmZVtsKzE2Pj4w''@;'; put 'put ''XSxEPj0rX1tmPj4zXSl7aWYoIShsPDwyND4+MjQpKXtsPTA7YnJlYWt9fWVsc2UgaWYobDw8MjQ+PjI0PT0xKXtsPTA7YnJlYWt9bD0wfEd5KDE4NzY3NiksYVtsKzIwPj4yXT0wLF9bbD4+M109RCxfW2wrOD4+M109d319d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBVRChsLGMpe3Zh''@;'; put 'put ''ciBiLE0sRCxHLGY9MCxwPTAsbT0wLEE9MCx3PTAsaz0wLFI9MDtpZihHPTB8ZmVbMTYrKGx8PTApPj4wXSwoTT0oaz0rX1soY3w9MCk+PjNdKT4oUj0rX1soYj0wfGFbMzYrKEQ9MHxhW2wrOD4+Ml0pPj4yXSk+PjNdKSk/Rzw8MjQ+PjI0P3A9NDpsPTE6Rzw8MjQ+PjI0PT0xP2w9MDpwPTQs''@;'; put 'put ''ND09KDB8cCkpe2Y9K19bRD4+M107ZTpkb3tpZigxPT1mKXttPShmPStfW2MrOD4+M10pLStfW2IrOD4+M10sQT1rLVIsYz0odz0rX1tEKzg+PjNdKTwwO2Rve2lmKCEoTT93Pj0wOmMpKXtpZihsPXcqZitrPitfW0QrMTY+PjNdLGMpe2lmKGwpe2w9MDticmVhayBlfWJyZWFrfWlmKGwpYnJl''@;'; put 'put ''YWs7bD0wO2JyZWFrIGV9aWYobT49dypBKXtsPTE7YnJlYWsgZX19d2hpbGUoMCk7bD13KihBKkEtbSptKTwoUi09K19bYVtEKzMyPj4yXT4+M10pKm0qKDIqQS9SKzErdyp3KSxjJiYobF49MSl9ZWxzZSBBPStfW0QrMTY+PjNdLWsqZix3PStfW2MrOD4+M10tQSxSPWstUixrPUEtK19bYis4''@;'; put 'put ''Pj4zXSxsPXcqdz5rKmsrUipSfXdoaWxlKDApO2w9MSYobF5HPDwyND4+MjQhPTApfXJldHVybiAwfGx9ZnVuY3Rpb24gWVgobCxjKXthWyhjfD0wKT4+Ml09bHw9MCxhW2MrND4+Ml09YVsobD1sKzR8MCk+PjJdLGFbYVtsPj4yXT4+Ml09YyxhW2w+PjJdPWN9ZnVuY3Rpb24gQlYobCl7dmFy''@;'; put 'put ''IGM9MCxmPTAscD0wLG09MCxBPTA7aWYoIShjPTB8UFYobT0oMHwoYz0oMHwoYz1+figoK19bKGx8PTApPj4zXS0rX1syMzI3Ml0pLytfWzIzMjc0XSorKDB8KG09MHxhWzQ2ODY2XSkpKSkpPjA/YzowKSk8KDB8bSk/YzptKy0xfDApKSl7Zm9yKGY9MTshKDB8KGM9MHxQVihtLWZ8MCkpfHwo''@;'; put 'put ''Yz0wfFBWKGYrbXwwKSwwfGMpKTspZj1mKzF8MDthWzQ2ODY3XT0oMHxhWzQ2ODY3XSkrZn1hWzQ2ODY4XT0xKygwfGFbNDY4NjhdKSxwPTB8YVs0Njg2MF0sZj0wfGFbNDY4NjFdO2U6ZG97aWYoKDB8Yyk9PSgwfHApKUE9OTtlbHNle2lmKCgwfGMpIT0oMHxmKSYmMCE9KDB8VUQoYyxsKSkp''@;'; put 'put ''e0E9OTticmVha31mb3IoOzspe2lmKCgwfChjPTB8YVtjPj4yXSkpPT0oMHxwKSlicmVhayBlO2lmKDB8VUQoYyxsKSl7cD1jO2JyZWFrfX19fXdoaWxlKDApO2lmKDk9PSgwfEEpKXtmb3IoOygwfChjPTB8YVtjKzQ+PjJdKSkhPSgwfGYpJiYwfFVEKGMsbCk7KUE9OTtwPTB8YVtjPj4yXX1y''@;'; put 'put ''ZXR1cm4oMHxtKT4wJiYoMHxtKTwoKDB8YVs0Njg2Nl0pLTF8MCkmJigwfChmPTB8YVsoYz0oMHxhWzQ2ODY1XSkrKG08PDIpfDApPj4yXSkmJihhWyhBPWYrMTJ8MCk+PjJdPSgwfGFbQT4+Ml0pLTEpLGFbYz4+Ml09cCxhWyhBPXArMTJ8MCk+PjJdPTErKDB8YVtBPj4yXSkpLDB8cH1mdW5j''@;'; put 'put ''dGlvbiBQVihsKXt2YXIgYz0wLGY9MDtyZXR1cm4oMHwobHw9MCkpPi0xJigwfGFbNDY4NjZdKT4oMHxsKSYmMCE9KDB8KGM9MHxhWyhmPSgwfGFbNDY4NjVdKSsobDw8Mil8MCk+PjJdKSk/LTI9PSgwfGFbYys4Pj4yXSkmJihhW2Y+PjJdPTAsYVsobD1jKzEyfDApPj4yXT1mPSgwfGFbbD4+''@;'; put 'put ''Ml0pLTF8MCxmfHxZVihjLDE4NzQ0OCksYz0wKTpjPTAsMHxjfWZ1bmN0aW9uIEZWKGwpe3ZhciBjLGY7YVs0KyhmPTB8YVsobHw9MCk+PjJdKT4+Ml09YVsoYz1sKzR8MCk+PjJdLGFbYVtjPj4yXT4+Ml09ZixhW2wrOD4+Ml09LTJ9ZnVuY3Rpb24gTnkobCl7cmV0dXJuIDB8YVs0KyhsfD0w''@;'; put 'put ''KT4+Ml19ZnVuY3Rpb24gUzJlKGwpe3JldHVybiAwfGFbKGx8PTApPj4yXX1mdW5jdGlvbiBjOWUobCl7dmFyIGM7cmV0dXJuIDB8YVsobD0oYz0wfGFbOCsobHw9MCk+PjJdKT8wPT0oMHxmZVtsKzE2Pj4wXSk/YyszMnwwOmMrMzZ8MDoxODc2NzIpPj4yXX1mdW5jdGlvbiBVWChsKXt2YXIg''@;'; put 'put ''YztyZXR1cm4gMHxhWyhsPShjPTB8YVs4KyhsfD0wKT4+Ml0pPzA9PSgwfGZlW2wrMTY+PjBdKT9jKzM2fDA6YyszMnwwOjE4NzY3Mik+PjJdfWZ1bmN0aW9uIFZ5KCl7enkoMTg3NDgwLDI0KX1mdW5jdGlvbiBMYyhsLGMsZil7Zj0rZjt2YXIgYixwPTAsbT0wLEE9MCx3PTA7Yj1sZSxsZT1s''@;'; put 'put ''ZSszMnwwLG09MHxhWyhBPSgwfGFbNDY4NjldKSsoOTYqKDB8YVsxNisobHw9MCk+PjJdKXwwKSs4OHwwKT4+Ml0sX1sodz1iKSs4Pj4zXT1jPStjLF9bdysxNj4+M109ZixwPTB8SFYobCx3LG0pO2Rve2lmKDB8cCl7aWYoKDB8cCk8MCl7dz0wfEd5KDE4NzQ4MCksX1t3Kzg+PjNdPWMsX1t3''@;'; put 'put ''KzE2Pj4zXT1mLGFbdz4+Ml09bSxhW0E+PjJdPXc7YnJlYWt9Zm9yKDsoMHwoQT0wfEhWKGwsdyxwPTB8YVttPj4yXSkpKT4wOyltPXA7MHxBJiYodz0wfEd5KDE4NzQ4MCksX1t3Kzg+PjNdPWMsX1t3KzE2Pj4zXT1mLGFbbT4+Ml09dyxhW3c+PjJdPXApfX13aGlsZSgwKTtsZT1ifWZ1bmN0''@;'; put 'put ''aW9uIEhWKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO2Rve2lmKGYpaWYoKG09K19bYys4Pj4zXSk9PShiPStfW2YrOD4+M10pJihwPStfW2MrMTY+PjNdKT09KEE9K19bZisxNj4+M10pKWM9MDtlbHNle2lmKGs9bS0oTT0rX1tsPj4zXSks''@;'; put 'put ''dz1wLShtPStfW2wrOD4+M10pLGItPU0scD1BLW0sIShrPj0wKSl7aWYoYj49MCl7Yz0xO2JyZWFrfWlmKG09cC9iLChwPXcvayk8bSl7Yz0tMTticmVha31pZihwPm0pe2M9MTticmVha31jPWs+Yj8tMToxO2JyZWFrfWlmKCEoYjwwKSl7aWYoYz1iPjAsaz4wKXtpZighYyl7Yz1wPjA/LTE6''@;'; put 'put ''MTticmVha31pZihtPXAvYiwocD13L2spPG0pe2M9LTE7YnJlYWt9aWYocD5tKXtjPTE7YnJlYWt9Yz1rPGI/LTE6MTticmVha31pZihjKXtjPXc8PTA/LTE6MTticmVha31pZih3PHApe2M9cDw9MD8xOi0xO2JyZWFrfWM9dzw9MD8tMToxO2JyZWFrfWM9LTF9ZWxzZSBjPS0xfXdoaWxlKDAp''@;'; put 'put ''O3JldHVybiAwfGN9ZnVuY3Rpb24gSGsobCxjLGYscCl7Y3w9MCxwfD0wO3ZhciBtLEE9MDtmb3IobT0wfGFbKGx8PTApKygyMCooZnw9MCl8MCk+PjJdLGY9bCsoMjAqZnwwKSs0fDAsYz0xLGw9MDshKCgwfGMpPj0oMHxtKSk7KUE9bCsoKDB8YVtwKyhhWygwfGFbZj4+Ml0pKyhjPDwyKT4+''@;'; put 'put ''Ml08PDIpPj4yXSk+MCYxKXwwLGM9YysxfDAsbD1BO3JldHVybiAwfGx9ZnVuY3Rpb24gTmsobCxjLGYpe3ZhciBwO2ZvcihmfD0wLHA9KGx8PTApKygyMCooY3w9MCl8MCl8MCxjPWwrKDIwKmN8MCkrNHwwLGw9MTshKCgwfGwpPj0oMHxhW3A+PjJdKSk7KWFbZisoYVsoMHxhW2M+PjJdKSso''@;'; put 'put ''bDw8Mik+PjJdPDwyKT4+Ml09MSxsPWwrMXwwfWZ1bmN0aW9uIFFYKGwsYyxmKXt2YXIgcDtmb3IoZnw9MCxwPShsfD0wKSsoMjAqKGN8PTApfDApfDAsYz1sKygyMCpjfDApKzR8MCxsPTE7ISgoMHxsKT49KDB8YVtwPj4yXSkpOylhW2YrKGFbKDB8YVtjPj4yXSkrKGw8PDIpPj4yXTw8Mik+''@;'; put 'put ''PjJdPTAsbD1sKzF8MH1mdW5jdGlvbiBOVihsLGMpe2x8PTA7dmFyIHAsZj0wLG09MDtmb3IocD0wfFFuKDB8QXIobT0oY3w9MCk8PDIsYykpLG09MHxRbihtKSxmPTA7Oyl7aWYoKDB8Zik+PSgwfGMpKXtmPTA7YnJlYWt9YVttKyhmPDwyKT4+Ml09cCsoKDB8QXIoZixjKSk8PDIpLGY9Zisx''@;'; put 'put ''fDB9Zm9yKDshKCgwfGYpPj0oMHxjKSk7KVJ5KGYsbCxjLDB8YVttKyhmPDwyKT4+Ml0pLGY9ZisxfDA7cmV0dXJuIDB8bX1mdW5jdGlvbiBKWChsLGMpe2x8PTA7dmFyIE0sZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLEQ9MDtmb3IoTT0wfFFuKChjfD0wKTw8MiksZj0wLHA9MDshKCgw''@;'; put 'put ''fGYpPj0oMHxjKSk7KWs9KDB8YVtsKygyMCpmfDApPj4yXSkrcHwwLGY9ZisxfDAscD1rO2ZvcihwPTB8UW4ocDw8MiksZj0wOyEoKDB8Zik+PSgwfGMpKTspYVtNKyhmPDwyKT4+Ml09MCxmPWYrMXwwO2ZvcihtPTA7ISgoMHxtKT49KDB8YykpOyl7Zm9yKGFbbCsoMjAqbXwwKSs4Pj4yXT1w''@;'; put 'put ''LE5rKGwsbSxNKSxiPWwrKDIwKm18MCkrNHwwLGs9KHc9MHxhWyhBPWwrKDIwKm18MCl8MCk+PjJdKS0yfDAsZj0xOyEoKDB8Zik+PSgwfHcpKTspam5bcCsoZjw8Mik+PjJdPSsoaysoMHxhW2wrKDIwKihEPTB8YVsoMHxhW2I+PjJdKSsoZjw8Mik+PjJdKXwwKT4+Ml0pLSgoMHxIayhsLDAs''@;'; put 'put ''RCxNKSk8PDEpfDApLGY9ZisxfDA7UVgobCxtLE0pLHA9cCsoYVtBPj4yXTw8Mil8MCxtPW0rMXwwfUZ0KE0pfWZ1bmN0aW9uIFhYKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MCxtPTA7RnQoMHxhWyhwPTgrKGx8PTApfDApPj4yXSksYVtwPj4yXT0wO2U6ZG97aWYoMHxmKWZvcihwPTA7Oyl7''@;'; put 'put ''aWYoKDB8cCk+PSgwfGMpKWJyZWFrIGU7YVtsKygyMCpwfDApKzg+PjJdPWYsbT1mKyhhW2wrKDIwKnB8MCk+PjJdPDwyKXwwLHA9cCsxfDAsZj1tfX13aGlsZSgwKX1mdW5jdGlvbiBLWChsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTA7Zm9yKG09MCxB''@;'; put 'put ''PTA7ISgoMHxtKT49KDB8YykpOyliPTB8YVtsKyhtPDwyKT4+Ml0sbT1tKzF8MCxBPSh3PStfW2IrKGY8PDMpPj4zXS0rX1tiKyhwPDwzKT4+M10pKncrQTtyZXR1cm4rICtEMCgrQSl9ZnVuY3Rpb24gVlYobCxjLGYscCl7Y3w9MCwoMHwocHw9MCkpPigwfChmfD0wKSkmJihhWzQ2ODczXT1s''@;'; put 'put ''fD0wLHgxKGMrKGY8PDIpfDAsMS1mK3B8MCw0LDc3KSl9ZnVuY3Rpb24gUTcobCxjLGYscCl7bHw9MCxjfD0wO3ZhciB3LG09MCxBPTA7dz1sZSxsZT1sZSsxNnwwLG09dywoMHwoZnw9MCkpPCgwfChwfD0wKSkmJihmdW5jdGlvbiBJcyhsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAs''@;'; put 'put ''bXw9MDt2YXIgYixrLE0sQT0wLHc9MCxEPTAsUj0wO0E9MHxUMSgpLEE9YysoKCgoKDB8VDEoKSk8PDE2fEEpPj4+MCklKCgxLWYrcHwwKT4+PjApfDApK2Y8PDIpfDAsYj0wfGFbQT4+Ml0sYVtBPj4yXT1hWyhrPWMrKGY8PDIpfDApPj4yXSxhW2s+PjJdPWIsTT0rX1tsKyhiPDwzKT4+M10s''@;'; put 'put ''QT1mKzF8MCxmPXA7ZTpmb3IoOyEoKDB8QSk+PSgwfGYpKTspe2Zvcig7ISgoMHxBKT49KDB8ZikpJiYrX1tsKyhhW2MrKEE8PDIpPj4yXTw8Myk+PjNdPD1NOylBPUErMXwwO2Zvcig7Oyl7aWYoKDB8QSk+PSgwfGYpKWNvbnRpbnVlIGU7aWYoISgrX1tsKygodz0wfGFbKHA9YysoZjw8Mil8''@;'; put 'put ''MCk+PjJdKTw8Myk+PjNdPk0pKWJyZWFrO2Y9ZistMXwwfUQ9MHxhWyhSPWMrKEE8PDIpfDApPj4yXSxhW1I+PjJdPXcsYVtwPj4yXT1ELEE9QSsxfDAsZj1mKy0xfDB9YVttPj4yXT1SPUErKCgrX1tsKyhhW2MrKEE8PDIpPj4yXTw8Myk+PjNdPk0pPDwzMT4+MzEpfDAsYVtrPj4yXT1hWyhS''@;'; put 'put ''PWMrKFI8PDIpfDApPj4yXSxhW1I+PjJdPWJ9KGwsYyxmLHAsbSksUTcobCxjLGYsbT0oQT0wfGFbbT4+Ml0pLTF8MCksUTcobCxjLEE9QSsxfDAscCksMHxwZyhsLGMsZixtKXx8UTcobCxjLGYsbSksMHxwZyhsLGMsQSxwKXx8UTcobCxjLEEscCkpLGxlPXd9ZnVuY3Rpb24gcGcobCxjLGYs''@;'; put 'put ''cCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MDtmb3IoQT0xO209ZisxfDAsKDB8Zik8KDB8cCkmMCE9KDB8QSk7KUE9K19bbCsoYVtjKyhmPDwyKT4+Ml08PDMpPj4zXT4rX1tsKyhhW2MrKG08PDIpPj4yXTw8Myk+PjNdPzA6QSxmPW07cmV0dXJuIDB8QX1mdW5jdGlvbiAkWChs''@;'; put 'put ''LGMpe2x8PTAsY3w9MDt2YXIgcGUsZ2UsTGUsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAsYmU9MCxPZT0wLFJlPTAsSGU9MDtpZihMZT1sZSxsZT1sZSsxNnwwLGJlPTQsT2U9MHxGMCg0MCksYVtPZT4+Ml09MCxwZT1MZSxNbj0wLGdlPTB8YTAoMjMs''@;'; put 'put ''NDAqY3wwKSxmPU1uLE1uPTAsMCE9KDB8ZikmMCE9KDB8eG4pPygocD0wfGdpKDB8YVtmPj4yXSwwfE9lLDB8YmUpKXx8emUoMHxmLDB8eG4pLERuPXhuKTpwPS0xLDEhPSgwfHApKXtmb3IoZj0wLEc9MDshKCgwfGYpPj0oMHxjKSk7KXE9KDB8YVs0KygwfGFbbCsoZjw8Mik+PjJdKT4+Ml0p''@;'; put 'put ''K0d8MCxmPWYrMXwwLEc9cTtpZihNbj0wLHE9MHxhMCgyMywyNCpHfDApLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8Z2koMHxhW2Y+PjJdLDB8T2UsMHxiZSkpfHx6ZSgwfGYsMHx4biksRG49eG4pOnA9LTEsMSE9KDB8cCkpe2ZvcihmPTAsTT0wOyEoKDB8TSk+PSgwfGMp''@;'; put 'put ''KTspe2ZvcihhWyhEPWdlKyg0MCpNfDApfDApPj4yXT1xKygyNCpmfDApLFI9bCsoTTw8Mil8MCxtPTAsQT0xNzk3NjkzMTM0ODYyMzE1N2UyOTIsdz0tMTc5NzY5MzEzNDg2MjMxNTdlMjkyLGI9LTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MixrPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjshKCgwfG0p''@;'; put 'put ''Pj0oMHxhWzQrKHA9MHxhW1I+PjJdKT4+Ml0pKTspUmU9K19bKHA9MHxhW3A+PjJdKSsobTw8NCkrOD4+M10sX1txKygyNCpmfDApPj4zXT1IZT0rX1twKyhtPDw0KT4+M10sX1txKygyNCpmfDApKzg+PjNdPVJlLGFbcSsoMjQqZnwwKSsxNj4+Ml09RCxhW3ErKDI0KmZ8MCkrMjA+PjJdPTAs''@;'; put 'put ''bT1tKzF8MCxmPWYrMXwwLEE9QTxIZT9BOkhlLHc9dz5IZT93OkhlLGI9Yj5SZT9iOlJlLGs9azxSZT9rOlJlO2FbZ2UrKDQwKk18MCkrND4+Ml09cSsoMjQqKGYrLTF8MCl8MCksX1tnZSsoNDAqTXwwKSs4Pj4zXT1BLF9bZ2UrKDQwKk18MCkrMTY+PjNdPWssX1tnZSsoNDAqTXwwKSsyND4+''@;'; put 'put ''M109dyxfW2dlKyg0MCpNfDApKzMyPj4zXT1iLE09TSsxfDB9YVtwZT4+Ml09RyxhW3BlKzQ+PjJdPWMsT2U9MHxQZigxODc0OTYsMSwwfE9lLDB8YmUpLGJlPURuLGY9TW49MCxNbj0wLDAhPSgwfGYpJjAhPSgwfHhuKT8oKHA9MHxnaSgwfGFbZj4+Ml0sMHxPZSwwfGJlKSl8fHplKDB8Ziww''@;'; put 'put ''fHhuKSxEbj14bik6cD0tMSwxPT0oMHxwKT8oZj1EbixSPXEsTT1xLEQ9Z2UpOihmPTAsUj1xLE09cSxEPWdlKX1lbHNlIGY9RG4sUj0wLE09cSxEPWdlfWVsc2UgZj1EbixSPTAsTT0wLEQ9MDtmb3IoOzspe2lmKDB8Zil7aWYoTW49MCxzcygxMDUsMHxnZSksZj1NbixNbj0wLDAhPSgwfGYp''@;'; put 'put ''JjAhPSgwfHhuKT8oKHA9MHxnaSgwfGFbZj4+Ml0sMHxPZSwwfGJlKSl8fHplKDB8ZiwwfHhuKSxEbj14bik6cD0tMSwxPT0oMHxwKSl7Zj1EbixEPW09RCxNPUc9TSxSPXE9Ujtjb250aW51ZX1pZihNbj0wLHNzKDEwNSwwfE0pLGY9TW4sTW49MCwwIT0oMHxmKSYwIT0oMHx4bik/KChwPTB8''@;'; put 'put ''Z2koMHxhW2Y+PjJdLDB8T2UsMHxiZSkpfHx6ZSgwfGYsMHx4biksRG49eG4pOnA9LTEsMT09KDB8cCkpe2Y9RG4sRD1tPUQsTT1HPU0sUj1xPVI7Y29udGludWV9cD0xNzticmVha31pZihNbj0wLGY9MHxGbCg3OCwwfFIsMHxwZSkscD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09''@;'; put 'put ''MHxnaSgwfGFbcD4+Ml0sMHxPZSwwfGJlKSl8fHplKDB8cCwwfHhuKSxEbj14bik6bT0tMSwxIT0oMHxtKSlpZihmfHwoTW49MCxmPTB8SnMoMjQsMHxsLDB8YywwfEQpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChtPTB8Z2koMHxhW3A+PjJdLDB8T2UsMHxiZSkpfHx6ZSgwfHAs''@;'; put 'put ''MHx4biksRG49eG4pOm09LTEsMSE9KDB8bSkpKWlmKE1uPTAsc3MoMTA1LDB8Z2UpLHA9TW4sTW49MCwwIT0oMHxwKSYwIT0oMHx4bik/KChtPTB8Z2koMHxhW3A+PjJdLDB8T2UsMHxiZSkpfHx6ZSgwfHAsMHx4biksRG49eG4pOm09LTEsMSE9KDB8bSkpe2lmKE1uPTAsc3MoMTA1LDB8TSks''@;'; put 'put ''cD1NbixNbj0wLDAhPSgwfHApJjAhPSgwfHhuKT8oKG09MHxnaSgwfGFbcD4+Ml0sMHxPZSwwfGJlKSl8fHplKDB8cCwwfHhuKSxEbj14bik6bT0tMSwxIT0oMHxtKSl7cD0yNDticmVha31mPURuLEQ9bT1ELE09Rz1NLFI9cT1SfWVsc2UgZj1EbixEPW09RCxNPUc9TSxSPXE9UjtlbHNlIGY9''@;'; put 'put ''RG4sRD1tPUQsTT1HPU0sUj1xPVI7ZWxzZSBmPURuLEQ9bT1ELE09Rz1NLFI9cT1SfXJldHVybiAxNz09KDB8cCk/Zj0wOjI0PT0oMHxwKSYmKGY9MD09KDB8ZikmMSksRnQoMHxPZSksbGU9TGUsMHxmfWZ1bmN0aW9uIFQyZShsLGMpe3ZhciBwLGY9MDtyZXR1cm4gMHwobD0wPT0oZj0rX1so''@;'; put 'put ''cD0wfGFbKGx8PTApPj4yXSk+PjNdLStfWyhsPTB8YVsoY3w9MCk+PjJdKT4+M10pJiYwPT0oZj0rX1twKzg+PjNdLStfW2wrOD4+M10pPzA6Zj4wPzE6LTEpfWZ1bmN0aW9uIHFYKGwsYyl7dmFyIHAsbSxBLHcsYixrLE0sZj0wO009bGUsbGU9bGUrNjR8MCxBPU0rMzJ8MCx3PU0rMjR8MCxi''@;'; put 'put ''PU0rMTZ8MCxrPU0sZUsobHw9MCxjfD0wLG09TSs0OHwwKSxwPTB8YVsoZj1tKzh8MCk+PjJdO2Rve2lmKCgwfHApPjApZj0wO2Vsc2V7aWYoKDB8cCk8MCl7aWYoZUsoYyxsLG0pLCgwfChmPTB8YVtmPj4yXSkpPjApe2Y9MDticmVha31pZighKDB8dEsobCxjLHcsYixmPSgwfGYpPDA/Mzow''@;'; put 'put ''fHFoKGMsbCwoMHwoZj0wfGFbbT4+Ml0pKT4tMT9mOjAtZnwwKSkpKXtmPTA7YnJlYWt9fWVsc2UgaWYoKDB8KGY9MHxhW20+PjJdKSk9PSgwfGFbbSs0Pj4yXSk/KGY9MHxxaChsLGMsMCksZj0oMHxxaChsLGMsKDB8Zik8PSgwfHFoKGwsYywxKSkmMSkpPDwxKTpmPTB8cWgobCxjLCgwfGYp''@;'; put 'put ''Pi0xP2Y6MC1mfDApLCEoMHx0SyhsLGMsdyxiLGYpKSl7Zj0wO2JyZWFrfV9baz4+M109K19bdz4+M10sX1trKzg+PjNdPStfW2I+PjNdLGFbQT4+Ml09YVtrPj4yXSxhW0ErND4+Ml09YVtrKzQ+PjJdLGFbQSs4Pj4yXT1hW2srOD4+Ml0sYVtBKzEyPj4yXT1hW2srMTI+PjJdLGY9MHxuSyhs''@;'; put 'put ''LGMsQSl9fXdoaWxlKDApO3JldHVybiBsZT1NLDB8Zn1mdW5jdGlvbiBlSyhsLGMsZil7dmFyIG0sQSx3LGssTSxwPTAsYj0wO3c9K19bKGx8PTApPj4zXSxiPStfW2wrOD4+M10sKDB8YVs0KyhwPTB8YVtsKzE2Pj4yXSk+PjJdKT09KDB8bCk/cD1sPTB8YVtwPj4yXToocD1sKzI0fDAsbD1s''@;'; put 'put ''KzI0fDApLEE9K19bcD4+M10tdyxtPStfW2wrOD4+M10tYiwoMHxhWzQrKHA9MHxhWzE2KyhjfD0wKT4+Ml0pPj4yXSk9PSgwfGMpP3A9bD0wfGFbcD4+Ml06KHA9YysyNHwwLGw9YysyNHwwKSxrPStfW3A+PjNdLXcsTT0rX1tsKzg+PjNdLWIsYVsoZnw9MCk+PjJdPWM9MD09KGI9KCtfW2Mr''@;'; put 'put ''OD4+M10tYikqQS0oK19bYz4+M10tdykqbSk/MDpiPjA/MTotMSxhW2YrND4+Ml09bD0wPT0oYj1NKkEtayptKT8wOmI+MD8xOi0xLGFbZis4Pj4yXT0wfEFyKGwsYyl9ZnVuY3Rpb24gcWgobCxjLGYpe3ZhciBtLEEsdyxiLGssTTtjfD0wLGZ8PTAsaz0rX1sobHw9MCk+PjNdLE09K19bbCs4''@;'; put 'put ''Pj4zXSxiPStfWyhsPSgwfGFbNCsobT0wfGFbbCsxNj4+Ml0pPj4yXSk9PSgwfGwpPzB8YVttPj4yXTpsKzI0fDApPj4zXSx3PStfW2wrOD4+M107ZG97aWYoZil7aWYoKDB8YVs0KyhsPTB8YVtjKzE2Pj4yXSk+PjJdKT09KDB8Yykpe2M9MHxhW2w+PjJdO2JyZWFrfWM9YysyNHwwO2JyZWFr''@;'; put 'put ''fX13aGlsZSgwKTtyZXR1cm4gQT0rX1tjPj4zXSwwfChrPT1iP2s9PUE/LTEhPSgwfHJLKE0sK19bYys4Pj4zXSx3KSkmMTowOjB8cksoayxBLGIpKX1mdW5jdGlvbiB0SyhsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0w''@;'; put 'put ''LEc9MCxxPTA7ZTpkb3tpZigoMHxtKTwxKUE9MDtlbHNle1I9K19bbD4+M10scT0rX1tsKzg+PjNdLE09K19bKEE9KDB8YVs0KyhBPTB8YVtsKzE2Pj4yXSk+PjJdKT09KDB8bCk/MHxhW0E+PjJdOmwrMjR8MCk+PjNdLGI9K19bQSs4Pj4zXSxEPStfW2M+PjNdLEc9K19bYys4Pj4zXSxrPStf''@;'; put 'put ''WyhBPSgwfGFbNCsoQT0wfGFbYysxNj4+Ml0pPj4yXSk9PSgwfGMpPzB8YVtBPj4yXTpjKzI0fDApPj4zXSx3PStfW0ErOD4+M107dDpkb3tzd2l0Y2goMHxtKXtjYXNlIDM6aWYoUj09TSl7X1tmPj4zXT1SLHc9KEctdykvKEQtaykqKFItaykrdzticmVhayB0fWlmKEQ9PWspe19bZj4+M109''@;'; put 'put ''RCx3PShxLWIpLyhSLU0pKihELU0pK2I7YnJlYWsgdH1fW2Y+PjNdPSgocS09KE09KHEtYikvKFItTSkpKlIpLShHLT0oaz0oRy13KS8oRC1rKSkqRCkpLyh3PWstTSksdz0oaypxLUcqTSkvdzticmVhayB0O2Nhc2UgMjppZigtMT09KDB8cWgobCxjLDApKSktMT09KDB8cWgoYyxsLDEpKT8o''@;'; put 'put ''TT0obT0tMT09KDB8cWgoYyxsLDApKSk/TTpSLGs9RCxiPW0/YjpxLHc9Ryk6KE09ayxrPUQsYj13LHc9Ryk7ZWxzZSBpZigtMSE9KDB8cWgobCxjLDEpKSl7aWYoLTEhPSgwfHFoKGMsbCwwKSkpe0E9MDticmVhayBlfWs9Uix3PXF9ZWxzZSBNPUQsYj1HO19bZj4+M109LjUqKGsrTSksdz0u''@;'; put 'put ''NSoodytiKTticmVhaztjYXNlIDE6aWYoKEctcSkqKFItTSk9PShELVIpKihxLWIpKXtfW2Y+PjNdPUQsdz1HO2JyZWFrIHR9X1tmPj4zXT1rO2JyZWFrIHQ7ZGVmYXVsdDpBPTE7YnJlYWsgZX19d2hpbGUoMCk7X1twPj4zXT13LEE9MX19d2hpbGUoMCk7cmV0dXJuIDB8QX1mdW5jdGlvbiBu''@;'; put 'put ''SyhsLGMsZil7Znw9MDt2YXIgQSx3LGIsayxNLEQsUixnZSxHLHA9MCxtPTAscGU9MDtnZT1sZSxsZT1sZSsxNnwwLFI9K19bKGx8PTApPj4zXSxHPStfW2wrOD4+M10sTT0rX1socD0oMHxhWzQrKHA9MHxhW2wrMTY+PjJdKT4+Ml0pPT0oMHxsKT8wfGFbcD4+Ml06bCsyNHwwKT4+M10sYj0r''@;'; put 'put ''X1twKzg+PjNdLGs9K19bKGN8PTApPj4zXSxEPStfW2MrOD4+M10sdz0rX1socD0oMHxhWzQrKHA9MHxhW2MrMTY+PjJdKT4+Ml0pPT0oMHxjKT8wfGFbcD4+Ml06YysyNHwwKT4+M10sQT0rX1twKzg+PjNdO2U6ZG97aWYoUiE9TSZrIT13KXBlPTE4O2Vsc2V7ZG97aWYoUj09TSl7aWYoUj09''@;'; put 'put ''KG09K19bZj4+M10pJiZHPT0rX1tmKzg+PjNdKWJyZWFrO2lmKE0hPW0pe3BlPTE4O2JyZWFrIGV9aWYoYiE9K19bZis4Pj4zXSl7cGU9MTg7YnJlYWsgZX19fXdoaWxlKDApO2lmKGs9PXcpe2lmKGs9PShtPStfW2Y+PjNdKSYmRD09K19bZis4Pj4zXSl7cD0wO2JyZWFrfXc9PW0mJkE9PStf''@;'; put 'put ''W2YrOD4+M10/cD0wOnBlPTE4fWVsc2UgcD0wfX13aGlsZSgwKTtyZXR1cm4gMTg9PSgwfHBlKSYmKHA9MSksbGU9Z2UsMHxwfWZ1bmN0aW9uIHJLKGwsYyxmKXtyZXR1cm4gMHwoKGw9K2wpPT0oYz0rYyl8Yz09KGY9K2YpPzA6KGw8Yz9jPGY6ZjxjKT8xOi0xKX1mdW5jdGlvbiBvSyhsLGMs''@;'; put 'put ''ZixwLG0sQSl7bHw9MCxmfD0wLHB8PTAsbXw9MCxBfD0wO3ZhciBSLEcscSxnZSx3PTAsYj0wLGs9MCxNPTAsRD0wLHBlPTAsYmU9MDtxPTB8UW4ocGU9KGN8PTApPDwzKSxwZT0wfFFuKHBlKSxnZT0zMCpjfDAsUj0oMHxmKTwoMHxjKT9mOmMsRz1jKy0xfDAsRD0wPT0oMHxBKSxmPTAsdz0w''@;'; put 'put ''O2U6Zm9yKDshKCgwfHcpPj0oMHxSKSk7KXtrPTB8YVtwKyh3PDwyKT4+Ml07ZG97dDpkb3tpZihEKWY9MDtlbHNlIGZvcihmPTA7Oyl7aWYoKDB8Zik9PSgwfGMpKXtmPTA7YnJlYWsgdH1fW2srKGY8PDMpPj4zXT0rKDB8KDB8VDEoKSklMTAwKSxmPWYrMXwwfX13aGlsZSgwKTtmb3IoOygw''@;'; put 'put ''fGYpIT0oMHx3KTspZ2coaywwLEcsLStvaChBPTB8YVtwKyhmPDwyKT4+Ml0sMCxHLGspLEEpLGY9ZisxfDA7Yj0rbXAoaywwLEcpfXdoaWxlKGI8MWUtMTApO0o3KGssMCxHLDEvYixrKSxmPTA7ZG97Zm9yKEszKHBlLDAsRyxrKSxaVihsLGMsYyxrLHEpLEszKGssMCxHLHEpLEE9MDsoMHxB''@;'; put 'put ''KSE9KDB8dyk7KWdnKGssMCxHLC0rb2goYmU9MHxhW3ArKEE8PDIpPj4yXSwwLEcsayksYmUpLEE9QSsxfDA7aWYoYmU9ZixmPWYrMXwwLCEoKDB8YmUpPCgwfGdlKSYhKChiPSttcChrLDAsRykpPDFlLTEwKSkpYnJlYWsgZTtKNyhrLDAsRywxL2IsayksTT0rb2goaywwLEcscGUpfXdoaWxl''@;'; put 'put ''KCtlbygrTSk8Ljk5OSk7X1ttKyh3PDwzKT4+M109TSpiLHc9dysxfDB9Zm9yKDshKCgwfHcpPj0oMHxSKSk7KXtmb3Ioaz0wfGFbcCsodzw8Mik+PjJdLEE9MDs7KXtpZigoMHxBKT49KDB8Yykpe0E9MDticmVha31fW2srKEE8PDMpPj4zXT0rKDB8KDB8VDEoKSklMTAwKSxBPUErMXwwfWZv''@;'; put 'put ''cig7ISgoMHxBKT49KDB8dykpOylnZyhrLDAsRywtK29oKGJlPTB8YVtwKyhBPDwyKT4+Ml0sMCxHLGspLGJlKSxBPUErMXwwO0o3KGssMCxHLDEvK21wKGssMCxHKSxrKSxfW20rKHc8PDMpPj4zXT0wLHc9dysxfDB9Zm9yKEQ9UistMXwwLHc9MDshKCgwfHcpPj0oMHxEKSk7KXtmb3IoYj0r''@;'; put 'put ''X1sobD1tKyh3PDwzKXwwKT4+M10sQT13LGs9Yz13KzF8MDshKCgwfGspPj0oMHxSKSk7KWI9KGJlPWI8KE09K19bbSsoazw8Myk+PjNdKSk/TTpiLEE9YmU/azpBLGs9aysxfDA7KDB8QSkhPSgwfHcpPyhLMyhxLDAsRywwfGFbKGs9cCsodzw8Mil8MCk+PjJdKSxLMygwfGFbaz4+Ml0sMCxH''@;'; put 'put ''LDB8YVsoYmU9cCsoQTw8Mil8MCk+PjJdKSxLMygwfGFbYmU+PjJdLDAsRyxxKSxfW20rKEE8PDMpPj4zXT0rX1tsPj4zXSxfW2w+PjNdPWIsdz1jKTp3PWN9cmV0dXJuIEZ0KHEpLEZ0KHBlKSwoMHxmKTw9KDB8Z2UpfDB9ZnVuY3Rpb24gb2gobCxjLGYscCl7dmFyIG09MCxBPTA7Zm9yKEE9''@;'; put 'put ''MCxtPTEtKGN8PTApKyhmfD0wKXwwLHA9KHB8PTApKyhjPDwzKXwwLGY9KGx8PTApKyhjPDwzKXwwO207KUE9K19bcD4+M10qK19bZj4+M10rQSxtPW0rLTF8MCxwPXArOHwwLGY9Zis4fDA7cmV0dXJuK0F9ZnVuY3Rpb24gZ2cobCxjLGYscCxtKXtwPStwO3ZhciBBPTA7Zm9yKEE9MS0oY3w9''@;'; put 'put ''MCkrKGZ8PTApfDAsbT0obXw9MCkrKGM8PDMpfDAsZj0obHw9MCkrKGM8PDMpfDA7QTspX1tmPj4zXT0rX1tmPj4zXSsgK19bbT4+M10qcCxBPUErLTF8MCxtPW0rOHwwLGY9Zis4fDB9ZnVuY3Rpb24gbXAobCxjLGYpe3JldHVybisgK0QwKCsgK29oKGx8PTAsY3w9MCxmfD0wLGwpKX1mdW5j''@;'; put 'put ''dGlvbiBKNyhsLGMsZixwLG0pe3A9K3A7dmFyIEE9MDtmb3IoQT0xLShjfD0wKSsoZnw9MCl8MCxtPShtfD0wKSsoYzw8Myl8MCxmPShsfD0wKSsoYzw8Myl8MDtBOylfW2Y+PjNdPStfW20+PjNdKnAsQT1BKy0xfDAsbT1tKzh8MCxmPWYrOHwwfWZ1bmN0aW9uIEszKGwsYyxmLHApe3ZhciBt''@;'; put 'put ''PTA7Zm9yKG09MS0oY3w9MCkrKGZ8PTApfDAscD0ocHw9MCkrKGM8PDMpfDAsZj0obHw9MCkrKGM8PDMpfDA7bTspX1tmPj4zXT0rX1twPj4zXSxtPW0rLTF8MCxwPXArOHwwLGY9Zis4fDB9ZnVuY3Rpb24gWlYobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MCx3''@;'; put 'put ''PTAsYj0wLGs9MDtmb3IoYj0wOyEoKDB8Yik+PSgwfGMpKTspe2ZvcihrPWwrKGI8PDIpfDAsQT0wLHc9MDshKCgwfHcpPj0oMHxmKSk7KUE9K19bcCsodzw8Myk+PjNdKitfWygwfGFbaz4+Ml0pKyh3PDwzKT4+M10rQSx3PXcrMXwwO19bbSsoYjw8Myk+PjNdPUEsYj1iKzF8MH19ZnVuY3Rp''@;'; put 'put ''b24gbEsobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MDtmb3IoKHc9MHxhWyhtfD0wKT4+Ml0pPyhBPTB8VWEoMHxhW3c+PjJdLDB8QXIoMjAqZnwwLHApKSxxPTB8VWEodyxmPDwyKSk6KEE9MHxGMCgwfEFyKDIw''@;'; put 'put ''KmZ8MCxwKSkscT0wfEYwKGY8PDIpKSxhW20+PjJdPXEsdz0wOzspe2lmKCgwfHcpPj0oMHxmKSl7bT0wO2JyZWFrfWFbcSsodzw8Mik+PjJdPUEsdz13KzF8MCxBPUErKHA8PDIpfDB9Zm9yKDshKCgwfG0pPj0oMHxmKSk7KXtmb3Ioaz0wfGFbbCsoMjAqbXwwKSs0Pj4yXSxNPTB8YVtsKygy''@;'; put 'put ''MCptfDApKzg+PjJdLEQ9MHxhW2wrKDIwKm18MCk+PjJdLFI9cSsobTw8Mil8MCxBPTA7ISgoMHxBKT49KDB8cCkpOyl7Zm9yKEc9YysoQTw8Mil8MCxiPTAsdz0wOyEoKDB8dyk+PSgwfEQpKTspYj0rX1soMHxhW0c+PjJdKSsoYVtrKyh3PDwyKT4+Ml08PDMpPj4zXSoram5bTSsodzw8Mik+''@;'; put 'put ''PjJdK2Isdz13KzF8MDtqblsoMHxhW1I+PjJdKSsoQTw8Mik+PjJdPWIsQT1BKzF8MH1tPW0rMXwwfX1mdW5jdGlvbiBhOChsLGMpe3ZhciBmPTAscD0wLG09MDtmb3IoZj0wLHA9Y3w9MCxtPWx8PTA7bTspZj0rX1twPj4zXStmLHA9cCs4fDAsbT1tKy0xfDA7Zm9yKGYvPSsoMHxsKTtsOylf''@;'; put 'put ''W2M+PjNdPStfW2M+PjNdLWYsYz1jKzh8MCxsPWwrLTF8MH1mdW5jdGlvbiBPZihsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTAsaz0wLE09MDtmb3Iodz0wOyEoKDB8dyk+PSgwfGMpKTspe2ZvcihiPTB8YVtsKygyMCp3fDApPj4yXSxrPWwrKDIwKnd8''@;'; put 'put ''MCkrOHwwLE09bCsoMjAqd3wwKSs0fDAsbT0wLEE9MDshKCgwfEEpPj0oMHxiKSk7KW09K19bZisoYVsoMHxhW00+PjJdKSsoQTw8Mik+PjJdPDwzKT4+M10qK2puWygwfGFbaz4+Ml0pKyhBPDwyKT4+Ml0rbSxBPUErMXwwO19bcCsodzw8Myk+PjNdPW0sdz13KzF8MH19ZnVuY3Rpb24gJDMo''@;'; put 'put ''bCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wO2Zvcih3PTA7ISgoMHx3KT49KDB8YykpOyl7Zm9yKGI9bCsodzw8Mil8MCxtPTAsQT0wOygwfEEpIT0oMHxjKTspbT0rX1tmKyhBPDwzKT4+M10qK2puWygwfGFbYj4+Ml0pKyhBPDwyKT4+Ml0rbSxBPUEr''@;'; put 'put ''MXwwO19bcCsodzw8Myk+PjNdPW0sdz13KzF8MH19ZnVuY3Rpb24gSkQobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wO2ZvcihtPTA7ISgoMHxtKT49KDB8bCkpOylfW3ArKG08PDMpPj4zXT0rX1tjKyhtPDwzKT4+M10tK19bZisobTw8Myk+PjNdLG09bSsxfDB9ZnVuY3Rp''@;'; put 'put ''b24gVmsobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wO2ZvcihtPTA7ISgoMHxtKT49KDB8bCkpOylfW3ArKG08PDMpPj4zXT0rX1tmKyhtPDwzKT4+M10rICtfW2MrKG08PDMpPj4zXSxtPW0rMXwwfWZ1bmN0aW9uIGp5KGwsYyxmLHApe2x8PTAsY3w9MCxmPStmLHB8PTA7''@;'; put 'put ''dmFyIG09MDtmb3IobT0wOyEoKDB8bSk+PSgwfGwpKTspX1twKyhtPDwzKT4+M109K19bYysobTw8Myk+PjNdKmYsbT1tKzF8MH1mdW5jdGlvbiB6VihsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MDtmb3IocD0wOyEoKDB8cCk+PSgwfGwpKTspX1tmKyhwPDwzKT4+M109K19bYysocDw8''@;'; put 'put ''Myk+PjNdLHA9cCsxfDB9ZnVuY3Rpb24gdnAobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwPTAsbT0wO2ZvcihwPTAsbT0wOyEoKDB8bSk+PSgwfGwpKTspcD0rX1tmKyhtPDwzKT4+M10qK19bYysobTw8Myk+PjNdK3AsbT1tKzF8MDtyZXR1cm4rcH1mdW5jdGlvbiBxMyhsLGMpe2x8PTAs''@;'; put 'put ''Y3w9MDt2YXIgZj0wLHA9MCxtPTA7Zm9yKGY9MCxwPS0xZTUwOyEoKDB8Zik+PSgwfGwpKTspbT0rZW8oKyArX1tjKyhmPDwzKT4+M10pLGY9ZisxfDAscD1tPnA/bTpwO3JldHVybitwfWZ1bmN0aW9uIEdWKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTAsdz0w''@;'; put 'put ''LGI9MDtmb3IoYj0wOygwfGIpPCgwfGMpOyl7Zm9yKEE9MCx3PTA7ISgoMHx3KT49KDB8ZikpOylBPStfW3ArKHc8PDMpPj4zXSorX1soMHxhW2wrKHc8PDIpPj4yXSkrKGI8PDMpPj4zXStBLHc9dysxfDA7X1ttKyhiPDwzKT4+M109QSxiPWIrMXwwfX1mdW5jdGlvbiBsOChsLGMpe3ZhciBm''@;'; put 'put ''PTAscD0wLG09MDtmb3IoZj0wLHA9Y3w9MCxtPWx8PTA7bTspZj0ram5bcD4+Ml0rZixwPXArNHwwLG09bSstMXwwO2ZvcihmLz0rKDB8bCk7bDspam5bYz4+Ml09K2puW2M+PjJdLWYsYz1jKzR8MCxsPWwrLTF8MH1mdW5jdGlvbiBlZChsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3Zh''@;'; put 'put ''ciBtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MDtmb3IobT0wOzspe2lmKCgwfG0pPj0oMHxjKSl7dz0wLGs9MCxSPWM7YnJlYWt9am5bcCsobTw8Mik+PjJdPTAsbT1tKzF8MH1mb3IoOyEoKDB8ayk+PSgwfGMpKTspe2ZvcihBPStqbltsKyh3PDwyKT4+Ml0q''@;'; put 'put ''KEQ9K2puW2YrKGs8PDIpPj4yXSksYj1NPWsrMXwwLG09dzttPW0rMXwwLCgwfGIpIT0oMHxjKTspRz0ram5bZisoYjw8Mik+PjJdKihwZT0ram5bbCsobTw8Mik+PjJdKStBLGpuWyhxPXArKGI8PDIpfDApPj4yXT0ram5bcT4+Ml0rcGUqRCxBPUcsYj1iKzF8MDtqblsocT1wKyhrPDwyKXww''@;'; put 'put ''KT4+Ml09K2puW3E+PjJdK0Esdz13K1J8MCxrPU0sUj1SKy0xfDB9fWZ1bmN0aW9uIFhEKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MDtmb3IobT0wOyEoKDB8bSk+PSgwfGwpKTspam5bcCsobTw8Mik+PjJdPStqbltmKyhtPDwyKT4+Ml0rICtqbltjKyhtPDwyKT4+Ml0s''@;'; put 'put ''bT1tKzF8MH1mdW5jdGlvbiBLRChsLGMsZixwKXtsfD0wLGN8PTAsZj0rZixwfD0wO3ZhciBtPTAsQT0wO2ZvcihtPTA7ISgoMHxtKT49KDB8bCkpOylqblsoQT1jKyhtPDwyKXwwKT4+Ml09K2puW3ArKG08PDIpPj4yXSpmKyAram5bQT4+Ml0sbT1tKzF8MH1mdW5jdGlvbiBzSyhsLGMsZixw''@;'; put 'put ''KXtsfD0wLGN8PTAsZj0rZixwfD0wO3ZhciBtPTA7Zm9yKG09MDshKCgwfG0pPj0oMHxsKSk7KWpuW3ArKG08PDIpPj4yXT0ram5bYysobTw8Mik+PjJdKmYsbT1tKzF8MH1mdW5jdGlvbiB1SyhsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MDtmb3IocD0wOyEoKDB8cCk+PSgwfGwpKTsp''@;'; put 'put ''YVtmKyhwPDwyKT4+Ml09YVtjKyhwPDwyKT4+Ml0scD1wKzF8MH1mdW5jdGlvbiBYNyhsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MCxtPTA7Zm9yKHA9MCxtPTA7ISgoMHxtKT49KDB8bCkpOylwKz0ram5bZisobTw8Mik+PjJdKitqbltjKyhtPDwyKT4+Ml0sbT1tKzF8MDtyZXR1cm4r''@;'; put 'put ''cH1mdW5jdGlvbiAkRChsLGMsZil7bHw9MCxjPStjLGZ8PTA7dmFyIHA9MDtmb3IocD0wOyEoKDB8cCk+PSgwfGwpKTspX1tmKyhwPDwzKT4+M109YyxwPXArMXwwfWZ1bmN0aW9uIFp5KGwsYyxmKXtsfD0wLGM9K2MsZnw9MDt2YXIgcD0wO2ZvcihwPTA7ISgoMHxwKT49KDB8bCkpOylqbltm''@;'; put 'put ''KyhwPDwyKT4+Ml09YyxwPXArMXwwfWZ1bmN0aW9uIE8yZShsLGMpe2x8PTAsY3w9MDt2YXIgZj0wLHA9MCxtPTA7Zm9yKGY9LTEuMDAwMDAwMDE1MDQ3NDY2MmUzMCxwPTA7ISgoMHxwKT49KDB8bCkpOylmPShtPStlbygrICtqbltjKyhwPDwyKT4+Ml0pKT5mP206ZixwPXArMXwwO3JldHVy''@;'; put 'put ''bitmfWZ1bmN0aW9uIGprKGwsYyl7bHw9MCxjfD0wO3ZhciBmPTAscD0wLG09MDtmb3IoZj0wOyEoKDB8Zik+PSgwfGwpKTspam5bKHA9YysoZjw8Mil8MCk+PjJdPShtPStqbltwPj4yXSkqbSxmPWYrMXwwfWZ1bmN0aW9uIGNLKGwsYyl7bHw9MCxjfD0wO3ZhciBmPTAscD0wLG09MDtmb3Io''@;'; put 'put ''Zj0wOyEoKDB8Zik+PSgwfGwpKTspMCE9KG09K2puWyhwPWMrKGY8PDIpfDApPj4yXSkmJihqbltwPj4yXT0xL20pLGY9ZisxfDB9ZnVuY3Rpb24gV1YobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwPTAsbT0wO2ZvcihwPTA7ISgoMHxwKT49KDB8bCkpOykobT0ram5bYysocDw8Mik+PjJd''@;'; put 'put ''KT49MCYmKGpuW2YrKHA8PDIpPj4yXT0rRDAoK20pKSxwPXArMXwwfWZ1bmN0aW9uIGZLKGwsYyl7bHw9MCxjfD0wO3ZhciBmPTAscD0wLG09MDtmb3IoZj0wOyEoKDB8Zik+PSgwfGwpKTspKG09K2puWyhwPWMrKGY8PDIpfDApPj4yXSk+MCYmKGpuW3A+PjJdPTEvK0QwKCttKSksZj1mKzF8''@;'; put 'put ''MH1mdW5jdGlvbiB6eShsLGMpe2N8PTA7dmFyIGY9MDthWyhsfD0wKT4+Ml09MCwzJmMmJihjPTQlKGM+Pj4wKXwwPzB8QXIoNC8oKDB8ZnVuY3Rpb24gUjJlKGwpe2x8PTA7dmFyIGM9MCxmPTA7Zj00O2U6Zm9yKDs7KXtmb3IoYz1mOzspe2lmKCgwfGMpPT0oMHxsKSlicmVhayBlO2lmKCgw''@;'; put 'put ''fGMpPD0oMHxsKSlicmVhaztjPWMtbHwwfWY9YyxsPWwtY3wwfXJldHVybiAwfGx9KGMpKT4+PjApfDAsYyk6NCksYVtsKzg+PjJdPWMsYz0wfGFbKGw9bCs0fDApPj4yXTtlOmRve2lmKDB8Yylmb3IoOzspe2lmKCFjKWJyZWFrIGU7Zj0wfGFbYz4+Ml0sRnQoMHxhW2MrND4+Ml0pLEZ0KGMp''@;'; put 'put ''LGM9Zn19d2hpbGUoMCk7YVtsPj4yXT0wfWZ1bmN0aW9uIEd5KGwpe3ZhciBjPTAsZj0wLHA9MCxtPTA7aWYoIShjPTB8YVsobHw9MCk+PjJdKSl7Zm9yKGY9MHxhW2wrOD4+Ml0scD0wfFFuKDgpLG09MHxRbigwfEFyKDB8YVs0Njg1NV0sZikpLGFbcCs0Pj4yXT1tLGM9MDshKCgwfGMpPj0o''@;'; put 'put ''MHxhWzQ2ODU1XSkpOylZVihtKygwfEFyKGMsZikpfDAsbCksYz1jKzF8MDthW3A+PjJdPWFbKGM9bCs0fDApPj4yXSxhW2M+PjJdPXAsYz0wfGFbbD4+Ml19cmV0dXJuIGFbbD4+Ml09YVtjPj4yXSwwfGN9ZnVuY3Rpb24gWVYobCxjKXthWyhsfD0wKT4+Ml09YVsoY3w9MCk+PjJdLGFbYz4+''@;'; put 'put ''Ml09bH1mdW5jdGlvbiBCMmUobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIE0sRCxtPTAsQT0wLHc9MCxiPTAsaz0wO2ZvcihEPTB8dnIoKGN8PTApPDwzKSxtPTB8YVsoTT1sKzh8MCk+PjJdLGZ1bmN0aW9uIGQ5ZShsLGMsZil7Y3w9MCxmfD0wO3ZhciBiLHA9MCxtPTAsQT0wLHc9MCxr''@;'; put 'put ''PTAsTT0wO2ZvcihiPTE2KyhsfD0wKXwwLEE9MDshKCgwfEEpPj0oMHxjKSk7KXtpZigwfGFbYj4+Ml0pe2ZvcihrPTB8YVtsKygyMCpBfDApPj4yXSxNPWwrKDIwKkF8MCkrOHwwLHc9bCsoMjAqQXwwKSsxNnwwLHA9MCxtPTE7ISgoMHxtKT49KDB8aykpOylwKz0ram5bKDB8YVt3Pj4yXSkr''@;'; put 'put ''KG08PDIpPj4yXSoram5bKDB8YVtNPj4yXSkrKG08PDIpPj4yXSxtPW0rMXwwO19bZisoQTw8Myk+PjNdPXB9QT1BKzF8MH19KGwsYyxEKSxmdW5jdGlvbiBEMmUobCxjKXtsfD0wLGN8PTA7dmFyIGY9MDtmb3IoZj0wOyEoKDB8Zik+PSgwfGwpKTspX1tjKyhmPDwzKT4+M109KygwfCgwfFQx''@;'; put 'put ''KCkpJTUwMCksZj1mKzF8MDthOChsLGMpfShjLGYpLEE9MCx3PTA7ISgoMHx3KT49KDB8YykpOylBPSgwfGFbbCsoMjAqd3wwKT4+Ml0pK0F8MCx3PXcrMXwwO2ZvcihBPTB8UW4oQTw8MiksYj0wOyEoKDB8Yik+PSgwfGMpKTspe2ZvcihhW2wrKDIwKmJ8MCkrOD4+Ml09QSxqbltBPj4yXT0r''@;'; put 'put ''KDEtKGs9MHxhW2wrKDIwKmJ8MCk+PjJdKXwwKSx3PTE7ISgoMHx3KT49KDB8aykpOylqbltBKyh3PDwyKT4+Ml09MSx3PXcrMXwwO0E9QSsoazw8Mil8MCxiPWIrMXwwfWZvcih3PTB8ZnVuY3Rpb24gU1YobCxjLGYscCxtLEEpe2x8PTAsY3w9MCxmfD0wLG09K20sQXw9MDt2YXIgayxNLEQs''@;'; put 'put ''UixxLHBlLGdlLE9lLHc9MCxiPTAsRz0wLGJlPTA7Zm9yKE9lPWxlLGxlPWxlKzE2fDAsTT1PZSxxPTB8UW4oRz0ocHw9MCk8PDMpLHBlPTB8UW4oRyksZ2U9MHxRbihHKSxEPTB8UW4oRyksUj0wfFFuKEcpLHpWKHAsZixHPTB8UW4oRykpLGE4KHAsRyksYTgocCxjKSxPZihsLHAsYyxEKSxK''@;'; put 'put ''RChwLEcsRCxxKSx6VihwLHEscGUpLGs9QSstMXwwLGY9MCx3PSt2cChwLHEscSk7Oyl7aWYoKDB8Zik+PSgwfEEpKXtmPTA7YnJlYWt9aWYoISgrcTMocCxxKT5tKSl7Zj0wO2JyZWFrfWlmKE9mKGwscCxwZSxnZSksMD09KGI9K3ZwKHAscGUsZ2UpKSl7Zj0wO2JyZWFrfWlmKGp5KHAscGUs''@;'; put 'put ''Yj13L2IsUiksVmsocCxjLFIsYyksKDB8Zik8KDB8aykpe2lmKGp5KHAsZ2UsYixnZSksSkQocCxxLGdlLHEpLGI9K3ZwKHAscSxxKSwwPT13KXtiZT03O2JyZWFrfWp5KHAscGUsYi93LHBlKSxWayhwLHEscGUscGUpLHc9Yn1mPWYrMXwwfXJldHVybiA3PT0oMHxiZSkmJigkcigxLDkzMjQy''@;'; put 'put ''LE0pLGY9MSksRnQocSksRnQocGUpLEZ0KGdlKSxGdChEKSxGdChSKSxGdChHKSxsZT1PZSwwfGZ9KGwsZixELGMsLjAwMSxwKSxGdCgwfGFbTT4+Ml0pLEE9MDshKCgwfEEpPj0oMHxjKSk7KWFbbCsoMjAqQXwwKSs4Pj4yXT1tLG09bSsoYVtsKygyMCpBfDApPj4yXTw8Mil8MCxBPUErMXww''@;'; put 'put ''O3JldHVybiBGdChEKSx3Pj4+MzF8MH1mdW5jdGlvbiBVVihsLGMsZixwLG0sQSx3LGIsayl7bHw9MCx3PSt3LGw9bGUsbGU9bGUrMTZ8MCwwfGFbNDY5MTNdfHwoYVs0NjkxM109MSwkcigxLDkzODIwLGwpKSxsZT1sfWZ1bmN0aW9uIFAyZShsLGMsZixwKXt2YXIgbSxBLHcsYixrO3JldHVy''@;'; put 'put ''biBsfD0wLGN8PTAsZnw9MCxtPWxlLGxlPWxlKzMyfDAsaz1tKzIwfDAsYj1tKzEyfDAsdz1tKzh8MCxhWyhBPW0rMTZ8MCk+PjJdPXB8PTAsYVtiPj4yXT0wLGFbdz4+Ml09MCxmdW5jdGlvbiBQaChsLGMsZixwKXt2YXIgbSxBO2x8PTAsY3w9MCxwfD0wLG09bGUsbGU9bGUrMTZ8MCxmdW5j''@;'; put 'put ''dGlvbiAkZihsLGMpe2FbKGx8PTApPj4yXT0wfFFuKChjfD0wKTw8NCksYVtsKzQ+PjJdPWMsYVtsKzg+PjJdPTB9KEE9bSxmfD0wKSxmdW5jdGlvbiBxZihsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgayxNLEQsUixxLHBlLGdlLE9lLExlLFJlLHJ0LGF0LFN0LG09MCxBPTAsdz0wLGI9''@;'; put 'put ''MCxHPTAsYmU9MCxIZT0wLFZlPTAscWU9MCxXZT0wO2ZvcihTdD1sZSxsZT1sZSs2NHwwLHBlPVN0KzMyfDAsT2U9U3QrNDh8MCxMZT1TdCsxNnwwLFJlPVN0LHJ0PTB8UW4oYmU9KGN8PTApPDwyKSxhdD0wfFFuKGJlKSxhW0xlPj4yXT0wLGFbTGUrND4+Ml09MCxhW0xlKzg+PjJdPTAsYVtM''@;'; put 'put ''ZSsxMj4+Ml09MCxnZT0wfFFuKGJlKSxiZT0wfFFuKGJlKSxtPTA7ISgoMHxtKT49KDB8YykpOylhW2dlKyhtPDwyKT4+Ml09bSxtPW0rMXwwO2ZvcihRNyhsLGdlLDAscT1jKy0xfDApLG09MDshKCgwfG0pPj0oMHxjKSk7KWFbYmUrKGFbZ2UrKG08PDIpPj4yXTw8Mik+PjJdPW0sbT1tKzF8''@;'; put 'put ''MDtmb3IoZnVuY3Rpb24gQVAobCxjLGYscCl7Y3w9MCxmfD0wO3ZhciBtLEE9MCx3PTAsYj0wLGs9MCxNPTA7Zm9yKGFbNCsobHw9MCk+PjJdPW09KHB8PTApLTF8MCxhW2wrOD4+Ml09bSxhW2w+PjJdPTB8UW4obTw8NCkscD0wOyEoKDB8cCk+PSgwfG0pKTspYj0rX1tjKygoaz0wfGFbZiso''@;'; put 'put ''KEE9cCsxfDApPDwyKT4+Ml0pPDwzKT4+M10tK19bYysoKE09MHxhW2YrKHA8PDIpPj4yXSk8PDMpPj4zXSxhWyh3PTB8YVtsPj4yXSkrKHA8PDQpPj4yXT1NLGFbdysocDw8NCkrND4+Ml09ayxfW3crKHA8PDQpKzg+PjNdPWIscD1BO2ZvcihwPSgwfG0pLzJ8MDshKCgwfHApPD0tMSk7KV81''@;'; put 'put ''KGwscCkscD1wKy0xfDB9KE9lLGwsZ2UsYyksbT0xOzspe2lmKCgwfG0pPj0oMHxjKSl7bT0wO2JyZWFrfWFbcnQrKGFbZ2UrKG08PDIpPj4yXTw8Mik+PjJdPWFbZ2UrKG0rLTE8PDIpPj4yXSxtPW0rMXwwfWZvcig7ISgoMHxtKT49KDB8cSkpOylhW2F0KyhhW2dlKyhtPDwyKT4+Ml08PDIp''@;'; put 'put ''Pj4yXT1hW2dlKygoRz1tKzF8MCk8PDIpPj4yXSxtPUc7Zm9yKGs9cCs4fDAsTT1wKzR8MCxEPUxlKzR8MCxSPVJlKzR8MCxHPVJlKzh8MCxiPTA7ISgoMHxiKT49KDB8ZikpJiYoMHx5UChPZSxMZSkpPDwyND4+MjQ7KSgwfChtPTB8YVtrPj4yXSkpPCgwfChjPTB8YVtNPj4yXSkpP2M9MHxh''@;'; put 'put ''W3A+PjJdOihhW00+PjJdPWM8PDEsYz0wfFVhKDB8YVtwPj4yXSxjPDw1KSxhW3A+PjJdPWMsbT0wfGFbaz4+Ml0pLGFbaz4+Ml09bSsxLGFbKG09YysobTw8NCl8MCk+PjJdPWFbTGU+PjJdLGFbbSs0Pj4yXT1hW0xlKzQ+PjJdLGFbbSs4Pj4yXT1hW0xlKzg+PjJdLGFbbSsxMj4+Ml09YVtM''@;'; put 'put ''ZSsxMj4+Ml0sdz0wfGFbYmUrKChBPTB8YVtEPj4yXSk8PDIpPj4yXSwoMHwoYz0wfGFbYmUrKChtPTB8YVtMZT4+Ml0pPDwyKT4+Ml0pKT4wJiYoMHxhW2JlKyhhWyhWZT1hdCsoKEhlPTB8YVtnZSsoYystMTw8Mik+PjJdKTw8Mil8MCk+PjJdPDwyKT4+Ml0pPCgwfHcpJiYoYVtSZT4+Ml09''@;'; put 'put ''SGUsYVtSPj4yXT1BLF9bRz4+M109K19bbCsoQTw8Myk+PjNdLStfW2wrKEhlPDwzKT4+M10sYVtwZT4+Ml09YVtSZT4+Ml0sYVtwZSs0Pj4yXT1hW1JlKzQ+PjJdLGFbcGUrOD4+Ml09YVtSZSs4Pj4yXSxhW3BlKzEyPj4yXT1hW1JlKzEyPj4yXSx6eChPZSxwZSksYVtWZT4+Ml09QSxhW3J0''@;'; put 'put ''KyhBPDwyKT4+Ml09SGUpLCgwfHcpPCgwfHEpJiYoMHxhW2JlKyhhWyhXZT1ydCsoKHFlPTB8YVtnZSsodysxPDwyKT4+Ml0pPDwyKXwwKT4+Ml08PDIpPj4yXSk+KDB8YykmJihhW1JlPj4yXT1tLGFbUj4+Ml09cWUsX1tHPj4zXT0rX1tsKyhxZTw8Myk+PjNdLStfW2wrKG08PDMpPj4zXSxh''@;'; put 'put ''W3BlPj4yXT1hW1JlPj4yXSxhW3BlKzQ+PjJdPWFbUmUrND4+Ml0sYVtwZSs4Pj4yXT1hW1JlKzg+PjJdLGFbcGUrMTI+PjJdPWFbUmUrMTI+PjJdLHp4KE9lLHBlKSxhW1dlPj4yXT1tLGFbYXQrKG08PDIpPj4yXT1xZSksYj1iKzF8MDtGdChydCksRnQoYXQpLEZ0KGdlKSxGdChiZSksZnVu''@;'; put 'put ''Y3Rpb24gel8obCl7RnQoMHxhWyhsfD0wKT4+Ml0pfShPZSksbGU9U3R9KGwsYyxmLEEpLGZ1bmN0aW9uIFZ4KGwsYyxmKXtjfD0wLGZ8PTA7dmFyIGIsayxNLHA9MCxtPTAsQT0wLHc9MCxEPTAsUj0wO2ZvcihrPTB8UW4oKGx8PTApPDwyKSxwPTB8UW4oQT0oYj0oKHc9MHxhWyhNPWMrOHww''@;'; put 'put ''KT4+Ml0pPDwxKStsfDApPDwyKSxBPTB8UW4oQSksbT0wOyEoKDB8bSk+PSgwfGwpKTspYVtrKyhtPDwyKT4+Ml09MSxtPW0rMXwwO2ZvcihtPTA7Oyl7aWYoKDB8bSk+PSgwfHcpKXttPTA7YnJlYWt9RD0wfGFbKFI9MHxhW2M+PjJdKSsobTw8NCkrND4+Ml0sYVsoUj1rKyhhW1IrKG08PDQp''@;'; put 'put ''Pj4yXTw8Mil8MCk+PjJdPTErKDB8YVtSPj4yXSksYVsoRD1rKyhEPDwyKXwwKT4+Ml09MSsoMHxhW0Q+PjJdKSxtPW0rMXwwfWZvcig7ISgoMHxtKT49KDB8YikpOylqbltBKyhtPDwyKT4+Ml09MSxtPW0rMXwwO2Zvcih3PTB8UW4oMjAqbHwwKSxhW2Y+PjJdPXcsbT0wOyEoKDB8bSk+PSgw''@;'; put 'put ''fGwpKTspYVt3KygyMCptfDApPj4yXT0xLGFbdysoMjAqbXwwKSs4Pj4yXT1BLGFbdysoMjAqbXwwKSs0Pj4yXT1wLGFbcD4+Ml09bSxqbltBPj4yXT0wLEE9QSsoKFI9MHxhW2srKG08PDIpPj4yXSk8PDIpfDAscD1wKyhSPDwyKXwwLG09bSsxfDA7Zm9yKEZ0KGspO3A9MHxhW00+PjJdOylh''@;'; put 'put ''W00+PjJdPVI9cCstMXwwLFp4KHcsMHxhWyhEPTB8YVtjPj4yXSkrKFI8PDQpPj4yXSwwfGFbRCsoUjw8NCkrND4+Ml0pfShjLEEscCksZnVuY3Rpb24gangobCl7RnQoMHxhWyhsfD0wKT4+Ml0pfShBKSxsZT1tfSgwfGFbbD4+Ml0sZixmPDwyLGspLGxLKDB8YVtrPj4yXSxsLGYsYyxiKSxm''@;'; put 'put ''dW5jdGlvbiBhSyhsLGMsZixwLG0sQSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciB3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MDtmb3IoKGI9MHxhWyhBfD0wKT4+Ml0pPyh3PTB8VWEoMHxhW2I+PjJdLDB8QXIoZjw8MyxtKSksUj0wfFVhKGIsZjw8MikpOih3PTB8RjAoMHxBcihmPDwz''@;'; put 'put ''LG0pKSxSPTB8RjAoZjw8MikpLGFbQT4+Ml09UixiPTA7Oyl7aWYoKDB8Yik+PSgwfGYpKXtBPTA7YnJlYWt9YVtSKyhiPDwyKT4+Ml09dyxiPWIrMXwwLHc9dysobTw8Myl8MH1mb3IoOyEoKDB8QSk+PSgwfGYpKTspe2ZvcihNPWwrKEE8PDIpfDAsRD1SKyhBPDwyKXwwLGI9MDsoMHxiKTwo''@;'; put 'put ''MHxtKTspe2ZvcihrPTAsdz0wOyEoKDB8dyk+PSgwfHApKTspaz0rX1soMHxhW00+PjJdKSsodzw8Myk+PjNdKitqblsoMHxhW2MrKHc8PDIpPj4yXSkrKGI8PDIpPj4yXStrLHc9dysxfDA7X1soMHxhW0Q+PjJdKSsoYjw8Myk+PjNdPWssYj1iKzF8MH1BPUErMXwwfX0obCwwfGFbYj4+Ml0s''@;'; put 'put ''YyxmLGMsdyksRnQoMHxhW2FbYj4+Ml0+PjJdKSxGdCgwfGFbYj4+Ml0pLHA9MjU1JigwfG9LKDB8YVt3Pj4yXSxjLDEsQSxtLDEpKSxsZT1tLDB8cH1mdW5jdGlvbiBwOWUobCl7RnQoMHxhWzM2KyhsfD0wKT4+Ml0pfWZ1bmN0aW9uIEgyZShsLGMpe2x8PTAsY3w9MDt2YXIgZj0wLHA9MDtk''@;'; put 'put ''b3tpZig0PT0oMHxjKSl7aWYoYz1sKzE2fDAsKGY9K19bbCs4Pj4zXSk9PShwPStfW2wrMjQ+PjNdKSl7aWYoK19bbCs0MD4+M10hPStfW2wrNTY+PjNdKXtjPTA7YnJlYWt9aWYoK19bbD4+M10hPStfW2wrNDg+PjNdKXtjPTA7YnJlYWt9Yz0rX1tjPj4zXT09K19bbCszMj4+M107YnJlYWt9''@;'; put 'put ''Yz0rX1tsPj4zXT09K19bYz4+M10mJitfW2wrMzI+PjNdPT0rX1tsKzQ4Pj4zXSYmZj09K19bbCs1Nj4+M10/cD09K19bbCs0MD4+M106MH1lbHNlIGM9MH13aGlsZSgwKTtyZXR1cm4gMSZjfDB9ZnVuY3Rpb24gUVYobCxjLGYscCl7Y3w9MCxmPStmLHA9K3A7dmFyIEEsdyxiLG09MCxrPTAs''@;'; put 'put ''TT0wO2ZvcihiPTB8UW4oKHc9KDB8KG09KG09MHxMaShsfD0wLDEwMjcwNSkpPzB8cjMobSk6MCkpPDM/MjA6bSk8PDQpLGw9bCsxNnwwLEE9MS8rKDB8dyksbT0wOyEoKDB8bSk+PSgwfHcpKTspX1tiKyhtPDw0KT4+M109KC41KitfWzMyKyhNPTB8YVtsPj4yXSk+PjNdK2YpKitoYSgrKGs9''@;'; put 'put ''QSorKDB8bSkqNi4yODMxODUzMDcxNzk1ODYpKSxfW2IrKG08PDQpKzg+PjNdPSguNSorX1tNKzQwPj4zXStwKSorRGEoK2spLG09bSsxfDA7cmV0dXJuIGFbYz4+Ml09dywwfGJ9ZnVuY3Rpb24gSlYobCxjLGYscCxtKXtmfD0wLG09K20sX1sobHw9MCk+PjNdPS4wMTM4ODg4ODg4ODg4ODg4''@;'; put 'put ''ODgqKygwfChjfD0wKSkrKHA9K3ApLF9bbCs4Pj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KisoMHxmKSttfWZ1bmN0aW9uIE4yZShsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MDtmb3IobT0xLEE9Yj0rX1s4KyhsfD0wKT4+M10sdz1r''@;'; put 'put ''PStfW2w+PjNdOyEoKDB8bSk+PSgwfGMpKTspbT1tKzF8MCxBPShSPStfW2wrMjQ+PjNdKT5BP1I6QSx3PShEPStfWyhNPWwrMTZ8MCk+PjNdKT53P0Q6dyxiPVI8Yj9SOmIsaz1EPGs/RDprLGw9TTtfW2Y+PjNdPWssX1tmKzg+PjNdPWIsX1twPj4zXT13LF9bcCs4Pj4zXT1BfWZ1bmN0aW9u''@;'; put 'put ''IHFEKGwsYyxmKXtmPStmLF9bKGx8PTApPj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KihjPStjKSxfW2wrOD4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCpmfWZ1bmN0aW9uIHY5ZShsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgYixNLEQsUixHLHBlLG09MCxBPTAsdz0wLGs9MCxxPTAsZ2U9''@;'; put 'put ''MCxiZT0wLE9lPTAsTGU9MDtwZT1sZSxsZT1sZSsxMjh8MCxSPXBlKzExMnwwLE09cGUrODB8MCxtPXBlKzY0fDAsRz1wZSs0OHwwLHE9cGUrMzJ8MCxiPXBlKzE2fDAsaz1wZSxhWyhEPXBlKzk2fDApPj4yXT1hWyhsfD0wKT4+Ml0sYVtEKzQ+PjJdPWFbbCs0Pj4yXSxhW0QrOD4+Ml09YVts''@;'; put 'put ''Kzg+PjJdLGFbRCsxMj4+Ml09YVtsKzEyPj4yXSxhW1I+PjJdPWFbYz4+Ml0sYVtSKzQ+PjJdPWFbYys0Pj4yXSxhW1IrOD4+Ml09YVtjKzg+PjJdLGFbUisxMj4+Ml09YVtjKzEyPj4yXSxSVihHLEQsUiksQT1jKzE2fDAsYVtEPj4yXT1hW2w+PjJdLGFbRCs0Pj4yXT1hW2wrND4+Ml0sYVtE''@;'; put 'put ''Kzg+PjJdPWFbbCs4Pj4yXSxhW0QrMTI+PjJdPWFbbCsxMj4+Ml0sYVtSPj4yXT1hW0E+PjJdLGFbUis0Pj4yXT1hW0ErND4+Ml0sYVtSKzg+PjJdPWFbQSs4Pj4yXSxhW1IrMTI+PjJdPWFbQSsxMj4+Ml0sUlYocSxELFIpLGFbRD4+Ml09YVtmPj4yXSxhW0QrND4+Ml09YVtmKzQ+PjJdLGFb''@;'; put 'put ''RCs4Pj4yXT1hW2YrOD4+Ml0sYVtEKzEyPj4yXT1hW2YrMTI+PjJdLGFbUj4+Ml09YVtwPj4yXSxhW1IrND4+Ml09YVtwKzQ+PjJdLGFbUis4Pj4yXT1hW3ArOD4+Ml0sYVtSKzEyPj4yXT1hW3ArMTI+PjJdLFJWKGIsRCxSKSx3PXArMTZ8MCxhW0Q+PjJdPWFbZj4+Ml0sYVtEKzQ+PjJdPWFb''@;'; put 'put ''Zis0Pj4yXSxhW0QrOD4+Ml09YVtmKzg+PjJdLGFbRCsxMj4+Ml09YVtmKzEyPj4yXSxhW1I+PjJdPWFbdz4+Ml0sYVtSKzQ+PjJdPWFbdys0Pj4yXSxhW1IrOD4+Ml09YVt3Kzg+PjJdLGFbUisxMj4+Ml09YVt3KzEyPj4yXSxSVihrLEQsUiksYVttPj4yXT1hW0c+PjJdLGFbbSs0Pj4yXT1h''@;'; put 'put ''W0crND4+Ml0sYVttKzg+PjJdPWFbRys4Pj4yXSxhW20rMTI+PjJdPWFbRysxMj4+Ml0sYVtNPj4yXT1hW3E+PjJdLGFbTSs0Pj4yXT1hW3ErND4+Ml0sYVtNKzg+PjJdPWFbcSs4Pj4yXSxhW00rMTI+PjJdPWFbcSsxMj4+Ml0sYVtEPj4yXT1hW2I+PjJdLGFbRCs0Pj4yXT1hW2IrND4+Ml0s''@;'; put 'put ''YVtEKzg+PjJdPWFbYis4Pj4yXSxhW0QrMTI+PjJdPWFbYisxMj4+Ml0sYVtSPj4yXT1hW2s+PjJdLGFbUis0Pj4yXT1hW2srND4+Ml0sYVtSKzg+PjJdPWFbays4Pj4yXSxhW1IrMTI+PjJdPWFbaysxMj4+Ml07ZG97aWYoMHxBOWUobSxNLEQsUikpe2lmKDEmKG09MHxhW2MrNDA+PjJdKXww''@;'; put 'put ''JiYxJmFbcCs0MD4+Ml18MCl7bT0xO2JyZWFrfWlmKDImbXwwJiYyJmFbcCs0MD4+Ml18MCl7bT0hKChPZT0rX1tsKzg+PjNdLStfW2YrOD4+M10pKk9lKyhiZT0rX1tsPj4zXS0rX1tmPj4zXSkqYmU+KGdlPStfW0E+PjNdLStfW2M+PjNdKyArX1t3Pj4zXS0rX1twPj4zXSkqZ2UqLjI1KTti''@;'; put 'put ''cmVha31pZigobT0wfGFbNDY5MTVdKT93PTB8YVs0NjkxNl06KGFbNDY5MTVdPTB8UW4oYVs0NjkxNF08PDQpLHc9MHxRbihhWzQ2OTE0XTw8NCksYVs0NjkxNl09dyxtPTB8YVs0NjkxNV0pLExlPTB8YVtjKzM2Pj4yXSxBPTB8YVsoYz1jKzMyfDApPj4yXSxhW1I+PjJdPWFbbD4+Ml0sYVtS''@;'; put 'put ''KzQ+PjJdPWFbbCs0Pj4yXSxhW1IrOD4+Ml09YVtsKzg+PjJdLGFbUisxMj4+Ml09YVtsKzEyPj4yXSxoSyhMZSxBLFIsbSksbD0wfGFbcCszNj4+Ml0scD0wfGFbKEE9cCszMnwwKT4+Ml0sYVtSPj4yXT1hW2Y+PjJdLGFbUis0Pj4yXT1hW2YrND4+Ml0sYVtSKzg+PjJdPWFbZis4Pj4yXSxh''@;'; put 'put ''W1IrMTI+PjJdPWFbZisxMj4+Ml0saEsobCxwLFIsdyksMHx5OWUobSx3LDB8YVtjPj4yXSwwfGFbQT4+Ml0pKW09MTtlbHNle2lmKGFbTT4+Ml09YVsobT0wfGFbNDY5MTVdKT4+Ml0sYVtNKzQ+PjJdPWFbbSs0Pj4yXSxhW00rOD4+Ml09YVttKzg+PjJdLGFbTSsxMj4+Ml09YVttKzEyPj4y''@;'; put 'put ''XSxhW0Q+PjJdPWFbYj4+Ml0sYVtEKzQ+PjJdPWFbYis0Pj4yXSxhW0QrOD4+Ml09YVtiKzg+PjJdLGFbRCsxMj4+Ml09YVtiKzEyPj4yXSxhW1I+PjJdPWFbaz4+Ml0sYVtSKzQ+PjJdPWFbays0Pj4yXSxhW1IrOD4+Ml09YVtrKzg+PjJdLGFbUisxMj4+Ml09YVtrKzEyPj4yXSwwfFYyZShN''@;'; put 'put ''LEQsUikmJihrPTB8YVs0NjkxNl0sTGU9MHxhW0E+PjJdLGFbUj4+Ml09YVttPj4yXSxhW1IrND4+Ml09YVttKzQ+PjJdLGFbUis4Pj4yXT1hW20rOD4+Ml0sYVtSKzEyPj4yXT1hW20rMTI+PjJdLDB8ajJlKGssTGUsUikpKXttPTE7YnJlYWt9YVtNPj4yXT1hWyhtPTB8YVs0NjkxNl0pPj4y''@;'; put 'put ''XSxhW00rND4+Ml09YVttKzQ+PjJdLGFbTSs4Pj4yXT1hW20rOD4+Ml0sYVtNKzEyPj4yXT1hW20rMTI+PjJdLGFbRD4+Ml09YVtHPj4yXSxhW0QrND4+Ml09YVtHKzQ+PjJdLGFbRCs4Pj4yXT1hW0crOD4+Ml0sYVtEKzEyPj4yXT1hW0crMTI+PjJdLGFbUj4+Ml09YVtxPj4yXSxhW1IrND4+''@;'; put 'put ''Ml09YVtxKzQ+PjJdLGFbUis4Pj4yXT1hW3ErOD4+Ml0sYVtSKzEyPj4yXT1hW3ErMTI+PjJdLDB8VjJlKE0sRCxSKT8ocT0wfGFbNDY5MTVdLExlPTB8YVtjPj4yXSxhW1I+PjJdPWFbbT4+Ml0sYVtSKzQ+PjJdPWFbbSs0Pj4yXSxhW1IrOD4+Ml09YVttKzg+PjJdLGFbUisxMj4+Ml09YVtt''@;'; put 'put ''KzEyPj4yXSxtPTAhPSgwfGoyZShxLExlLFIpKSk6bT0wfX1lbHNlIG09MH13aGlsZSgwKTtyZXR1cm4gbGU9cGUsMSZtfDB9ZnVuY3Rpb24gQTllKGwsYyxmLHApe3JldHVybiBjfD0wLGZ8PTAsMHwoK19bKGx8PTApPj4zXTw9K19bKHB8PTApPj4zXSYmK19bZj4+M108PStfW2M+PjNdJiYr''@;'; put 'put ''X1tsKzg+PjNdPD0rX1twKzg+PjNdPytfW2YrOD4+M108PStfW2MrOD4+M10mMTowKX1mdW5jdGlvbiBoSyhsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgQSxtPTA7Zm9yKEE9OCsoZnw9MCl8MCxtPTA7ISgoMHxtKT49KDB8YykpOylfW3A+PjNdPStfW2Y+PjNdKyArX1tsPj4zXSxfW3Ar''@;'; put 'put ''OD4+M109K19bQT4+M10rICtfW2wrOD4+M10sbT1tKzF8MCxsPWwrMTZ8MCxwPXArMTZ8MH1mdW5jdGlvbiB5OWUobCxjLGYscCl7bHw9MCxjfD0wO3ZhciBxLHBlLGdlLGJlLE9lLExlLFJlLEhlLFZlLHFlLHJ0LFdlLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLGF0PTAs''@;'; put 'put ''U3Q9MDtmb3IoV2U9bGUsbGU9bGUrMTEyfDAsYmU9V2UrOTZ8MCxnZT1XZSs4MHwwLHBlPVdlKzY0fDAscT1XZSs0OHwwLExlPVdlKzMyfDAsUmU9V2UrMTZ8MCxIZT1XZSxWZT0oZnw9MCktMXwwLHFlPShwfD0wKS0xfDAscnQ9Zjw8MSxPZT1wPDwxLG09MCxBPTAsdz0wLGI9MDs7KXtpZihT''@;'; put 'put ''dD1sKygoKFZlK218MCklKDB8Zil8MCk8PDQpfDAsYVtnZT4+Ml09YVsoYXQ9bCsobTw8NCl8MCk+PjJdLGFbZ2UrND4+Ml09YVthdCs0Pj4yXSxhW2dlKzg+PjJdPWFbYXQrOD4+Ml0sYVtnZSsxMj4+Ml09YVthdCsxMj4+Ml0sYVtiZT4+Ml09YVtTdD4+Ml0sYVtiZSs0Pj4yXT1hW1N0KzQ+''@;'; put 'put ''PjJdLGFbYmUrOD4+Ml09YVtTdCs4Pj4yXSxhW2JlKzEyPj4yXT1hW1N0KzEyPj4yXSxaWChMZSxnZSxiZSksUj1jKygoKHFlK0F8MCklKDB8cCl8MCk8PDQpfDAsYVtnZT4+Ml09YVsoRz1jKyhBPDw0KXwwKT4+Ml0sYVtnZSs0Pj4yXT1hW0crND4+Ml0sYVtnZSs4Pj4yXT1hW0crOD4+Ml0s''@;'; put 'put ''YVtnZSsxMj4+Ml09YVtHKzEyPj4yXSxhW2JlPj4yXT1hW1I+PjJdLGFbYmUrND4+Ml09YVtSKzQ+PjJdLGFbYmUrOD4+Ml09YVtSKzg+PjJdLGFbYmUrMTI+PjJdPWFbUisxMj4+Ml0sWlgoUmUsZ2UsYmUpLGFbcGU+PjJdPWFbNDY1NDBdLGFbcGUrND4+Ml09YVs0NjU0MV0sYVtwZSs4Pj4y''@;'; put 'put ''XT1hWzQ2NTQyXSxhW3BlKzEyPj4yXT1hWzQ2NTQzXSxhW2dlPj4yXT1hW0xlPj4yXSxhW2dlKzQ+PjJdPWFbTGUrND4+Ml0sYVtnZSs4Pj4yXT1hW0xlKzg+PjJdLGFbZ2UrMTI+PjJdPWFbTGUrMTI+PjJdLGFbYmU+PjJdPWFbUmU+PjJdLGFbYmUrND4+Ml09YVtSZSs0Pj4yXSxhW2JlKzg+''@;'; put 'put ''PjJdPWFbUmUrOD4+Ml0sYVtiZSsxMj4+Ml09YVtSZSsxMj4+Ml0saz0rUGsocGUsZ2UsYmUpLGFbcGU+PjJdPWFbU3Q+PjJdLGFbcGUrND4+Ml09YVtTdCs0Pj4yXSxhW3BlKzg+PjJdPWFbU3QrOD4+Ml0sYVtwZSsxMj4+Ml09YVtTdCsxMj4+Ml0sYVtnZT4+Ml09YVthdD4+Ml0sYVtnZSs0''@;'; put 'put ''Pj4yXT1hW2F0KzQ+PjJdLGFbZ2UrOD4+Ml09YVthdCs4Pj4yXSxhW2dlKzEyPj4yXT1hW2F0KzEyPj4yXSxhW2JlPj4yXT1hW0c+PjJdLGFbYmUrND4+Ml09YVtHKzQ+PjJdLGFbYmUrOD4+Ml09YVtHKzg+PjJdLGFbYmUrMTI+PjJdPWFbRysxMj4+Ml0sTT0wfEZ5KHBlLGdlLGJlKSxhW3Bl''@;'; put 'put ''Pj4yXT1hW1I+PjJdLGFbcGUrND4+Ml09YVtSKzQ+PjJdLGFbcGUrOD4+Ml09YVtSKzg+PjJdLGFbcGUrMTI+PjJdPWFbUisxMj4+Ml0sYVtnZT4+Ml09YVtHPj4yXSxhW2dlKzQ+PjJdPWFbRys0Pj4yXSxhW2dlKzg+PjJdPWFbRys4Pj4yXSxhW2dlKzEyPj4yXT1hW0crMTI+PjJdLGFbYmU+''@;'; put 'put ''PjJdPWFbYXQ+PjJdLGFbYmUrND4+Ml09YVthdCs0Pj4yXSxhW2JlKzg+PjJdPWFbYXQrOD4+Ml0sYVtiZSsxMj4+Ml09YVthdCsxMj4+Ml0sRD0wfEZ5KHBlLGdlLGJlKSxhW3E+PjJdPWFbU3Q+PjJdLGFbcSs0Pj4yXT1hW1N0KzQ+PjJdLGFbcSs4Pj4yXT1hW1N0Kzg+PjJdLGFbcSsxMj4+''@;'; put 'put ''Ml09YVtTdCsxMj4+Ml0sYVtwZT4+Ml09YVthdD4+Ml0sYVtwZSs0Pj4yXT1hW2F0KzQ+PjJdLGFbcGUrOD4+Ml09YVthdCs4Pj4yXSxhW3BlKzEyPj4yXT1hW2F0KzEyPj4yXSxhW2dlPj4yXT1hW1I+PjJdLGFbZ2UrND4+Ml09YVtSKzQ+PjJdLGFbZ2UrOD4+Ml09YVtSKzg+PjJdLGFbZ2Ur''@;'; put 'put ''MTI+PjJdPWFbUisxMj4+Ml0sYVtiZT4+Ml09YVtHPj4yXSxhW2JlKzQ+PjJdPWFbRys0Pj4yXSxhW2JlKzg+PjJdPWFbRys4Pj4yXSxhW2JlKzEyPj4yXT1hW0crMTI+PjJdLDB8R0QocSxwZSxnZSxiZSxIZSkpe209MTticmVha31SPTA9PSgwfE0pLEc9MD09KDB8RCk7ZG97aWYoMCE9a3ww''@;'; put 'put ''IT0oRHxNfDApKXtpZihrPj0wKXtpZihSKXtBPShBKzF8MCklKDB8cCl8MCxiPWIrMXwwO2JyZWFrfW09KG0rMXwwKSUoMHxmKXwwLHc9dysxfDA7YnJlYWt9aWYoRyl7bT0obSsxfDApJSgwfGYpfDAsdz13KzF8MDticmVha31BPShBKzF8MCklKDB8cCl8MCxiPWIrMXwwO2JyZWFrfW09KG0r''@;'; put 'put ''MXwwKSUoMHxmKXwwLHc9dysxfDB9d2hpbGUoMCk7aWYoISgoMHxiKTwoMHxPZSkmKDB8dyk8KDB8cnQpJigoMHxiKTwoMHxwKXwoMHx3KTwoMHxmKSkpKXttPTA7YnJlYWt9fXJldHVybiBsZT1XZSwwfG19ZnVuY3Rpb24gVjJlKGwsYyxmKXtjfD0wO3ZhciBtLHA9MDtyZXR1cm4gMHwoKG09''@;'; put 'put ''K19bKGx8PTApPj4zXSk8PStfWyhmfD0wKT4+M10mJm0+PStfW2M+PjNdJiYocD0rX1tsKzg+PjNdKTw9K19bZis4Pj4zXT9wPj0rX1tjKzg+PjNdJjE6MCl9ZnVuY3Rpb24gajJlKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO2ZvcigocD0w''@;'; put 'put ''fGFbNDY5MTddKXx8KHA9MHxRbihhWzQ2OTE0XTw8NCksYVs0NjkxN109cCksdz1mKzh8MCxBPTA7ISgoMHxBKT49KDB8YykpOylfW3ArKEE8PDQpPj4zXT0rX1tsKyhBPDw0KT4+M10tK19bZj4+M10sX1twKyhBPDw0KSs4Pj4zXT0rX1tsKyhBPDw0KSs4Pj4zXS0rX1t3Pj4zXSxBPUErMXww''@;'; put 'put ''O2Y9YystMXwwLG09MCxsPTA7ZTpmb3IoOzspe2lmKCgwfGwpPj0oMHxjKSl7TT0xOTticmVha31pZihBPShmK2x8MCklKDB8Yyl8MCwodz0wPT0oYj0rX1twKyhsPDw0KSs4Pj4zXSkpJiYwPT0rX1twKyhBPDw0KSs4Pj4zXSl7aWYoK19bcCsoQTw8NCk+PjNdKitfW3ArKGw8PDQpPj4zXTww''@;'; put 'put ''KXtwPTE7YnJlYWt9fWVsc2UgTT0xMTtkb3tpZigxMT09KDB8TSkpe2lmKE09MCwhKGI+PTApfCEoKGs9K19bcCsoQTw8NCkrOD4+M10pPD0wKSYmIShrPj0wKXwhKGI8PTApKWJyZWFrO2lmKDA9PShiPShrKitfW3ArKGw8PDQpPj4zXS1iKitfW3ArKEE8PDQpPj4zXSkvKGstYikpKXtwPTE7''@;'; put 'put ''YnJlYWsgZX1pZihiPjApe2lmKDA9PWt8dyl7bSs9LjU7YnJlYWt9bSs9MTticmVha319fXdoaWxlKDApO2w9bCsxfDB9cmV0dXJuIDE5PT0oMHxNKSYmKHA9MT09KDB8KDB8fn5tKSUyKSYxKSwwfHB9ZnVuY3Rpb24gZEsobCxjKXtsfD0wO3ZhciBrLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0w''@;'; put 'put ''LE09MDtmb3Ioaz0wfFFuKChjfD0wKTw8MiksZj0wfFFuKChiPTB8QXIoYyxjKSk8PDIpLGFbaz4+Ml09ZixaeShiLDAsZiksZj0xOzspe2lmKCgwfGYpPj0oMHxjKSl7Zj0wLEE9MCxiPWM7YnJlYWt9YVtrKyhmPDwyKT4+Ml09KDB8YVtrPj4yXSkrKCgwfEFyKGYsYykpPDwyKSxmPWYrMXww''@;'; put 'put ''fWZvcig7ISgoMHxBKT49KDB8YykpOyl7Zm9yKHc9aysoQTw8Mil8MCxwPUEsbT1mOygwfHApIT0oMHxjKTspYVsoMHxhW3c+PjJdKSsocDw8Mik+PjJdPU09MHxhW2wrKG08PDIpPj4yXSxhWygwfGFbaysocDw8Mik+PjJdKSsoQTw8Mik+PjJdPU0scD1wKzF8MCxtPW0rMXwwO2Y9ZitifDAs''@;'; put 'put ''QT1BKzF8MCxiPWIrLTF8MH1yZXR1cm4gMHxrfWZ1bmN0aW9uIHc5ZShsLGMsZixwLG0sQSx3LGIpe2N8PTAscHw9MCxBfD0wLHd8PTAsYj0rYjt2YXIgYXQsU3Qsa3Qsc3QsRXQsSG4saz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxMZT0wLFJlPTAsSGU9MCxW''@;'; put 'put ''ZT0wLHFlPTAscnQ9MCxXZT0wLFp0PTAsY3Q9MCxidD0wLGFuPTAsU249MCx1cj0wO0huPTB8YVsoZnw9MCkrKChtfD0wKTw8Mik+PjJdLGF0PTB8YVs0KyhsfD0wKT4+Ml0sU3Q9MHxhW2w+PjJdLGt0PTB8YVtsKzQ4Pj4yXSxzdD0wfGFbbCs1Mj4+Ml0sRXQ9MHxhW2wrNTY+PjJdO2U6ZG97''@;'; put 'put ''aWYoKDB8QSk8MSlmPTA7ZWxzZXtmb3IoWjJlKEhuLGF0LGt0LHN0LEV0LGIpLFp0PTB8YVtsKzI4Pj4yXSxjdD0wfGFbbCszMj4+Ml0sYnQ9MHxhW2wrMzY+PjJdLGFuPTB8YVtsKzEyPj4yXSxTbj0wfGFbbCsxNj4+Ml0sbT0wLHA9MCxmPS0xOyEoKDB8bSk+PSgwfGF0KSk7KSgwfG0pPj0o''@;'; put 'put ''MHxwKSYmKCgwfChmPWYrMXwwKSk9PSgwfEV0KT8ocD1hdCxmPUV0KTpwPTB8YVtzdCsoZjw8Mik+PjJdKSxhW1NuKyhhW2t0KyhtPDwyKT4+Ml08PDIpPj4yXT1mLG09bSsxfDA7Zm9yKHJ0PTB8YVtsKzQwPj4yXSxXZT1jdCsoYXQrLTE8PDIpfDAsZj0wLHA9MDs7KXtpZighKHA8PDI0Pj4y''@;'; put 'put ''ND09MCYoMHxmKTwoMHxBKSkpYnJlYWsgZTtrPS0xZTksbT0wLHA9MTt0OmZvcig7Oyl7Zm9yKFZlPW07Oyl7aWYoKDB8VmUpPj0oMHxhdCkpYnJlYWsgdDtmb3IoTT1xZT0ram5bSG4rKChtPTB8YVtrdCsoVmU8PDIpPj4yXSk8PDIpPj4yXSxIZT1WZSxEPTA7Oyl7aWYoam5bcnQrKG08PDIp''@;'; put 'put ''Pj4yXT1ELCgwfChtPUhlKzF8MCkpPj0oMHxhdCkpe1JlPTA7YnJlYWt9aWYoK2VvKCsoKEQ9K2puW0huKygobD0wfGFba3QrKG08PDIpPj4yXSk8PDIpPj4yXSktKE09KDB8YVtTbisobTw8Mik+PjJdKT4oMHxhW1NuKyhIZTw8Mik+PjJdKT9NK2I6TSkpKT4xZS05KXtSZT0xO2JyZWFrfUhl''@;'; put 'put ''PW0sRC09cWUsbT1sfWZvcihSPVZlOzspe2lmKCgwfFIpPigwfEhlKSl7bD0wLEc9VmU7YnJlYWt9Zm9yKHE9MHxhW1N0KygoRz0wfGFba3QrKFI8PDIpPj4yXSk8PDIpPj4yXSxsPTAsTT0tK2puW2MrKEc8PDIpPj4yXTshKCgwfGwpPj0oMHxhdCkpOykoMHxsKSE9KDB8RykmJihNPStqbltI''@;'; put 'put ''bisobDw8Mik+PjJdKitqbltxKyhsPDwyKT4+Ml0rTSksbD1sKzF8MDtqbltadCsoRzw8Mik+PjJdPU0vLStqbltxKyhHPDwyKT4+Ml0tK2puW3J0KyhHPDwyKT4+Ml0sUj1SKzF8MH1uOmZvcig7Oyl7aWYoKDB8Ryk+KDB8SGUpKXtEPTAscGU9MCxnZT0wO2JyZWFrfWZvcihnZT0oMHwoUj0w''@;'; put 'put ''fGFbU24rKGFba3QrKEc8PDIpPj4yXTw8Mik+PjJdKSk9PSgwfEV0KXx8KDB8bSk8KDB8KGdlPTB8YVtzdCsoUjw8Mik+PjJdKSk/bTpnZSxxPUc7Oyl7aWYoKDB8cSk+PSgwfGdlKSl7cT1HO2JyZWFrfStqbltadCsoKFI9MHxhW2t0KyhxPDwyKT4+Ml0pPDwyKT4+Ml08cWUmJihhW2FuKyhs''@;'; put 'put ''PDwyKT4+Ml09UixsPWwrMXwwKSxxPXErMXwwfWZvcig7ISgoMHxxKT49KDB8Z2UpKTspK2puW1p0KygoUj0wfGFba3QrKHE8PDIpPj4yXSk8PDIpPj4yXT09cWUmJihhW2FuKyhsPDwyKT4+Ml09UixsPWwrMXwwKSxxPXErMXwwO2Zvcig7Oyl7aWYoKDB8Ryk+PSgwfGdlKSl7Rz1nZTtjb250''@;'; put 'put ''aW51ZSBufStqbltadCsoKFI9MHxhW2t0KyhHPDwyKT4+Ml0pPDwyKT4+Ml0+cWUmJihhW2FuKyhsPDwyKT4+Ml09UixsPWwrMXwwKSxHPUcrMXwwfX1mb3IoOyEoKDB8Z2UpPj0oMHxsKSk7KXtmb3IocT0wfGFbU3QrKChHPTB8YVthbisoZ2U8PDIpPj4yXSk8PDIpPj4yXSxNPTAsUj0wOygw''@;'; put 'put ''fFIpIT0oMHxnZSk7KU0tPStqbltxKyhhW2FuKyhSPDwyKT4+Ml08PDIpPj4yXSxSPVIrMXwwO2puW2N0KyhnZTw8Mik+PjJdPWJlPSgodXI9MipNKSpxZStEKnBlLStqbltadCsoRzw8Mik+PjJdKihiZT0ram5bKExlPXErKEc8PDIpfDApPj4yXSkpLygoTT11citEKS1iZSksRD1NLStqbltM''@;'; put 'put ''ZT4+Ml0scGU9YmUsZ2U9Z2UrMXwwfWZvcigocT0oMHxsKT09KDB8YXQpKSYmKGpuW1dlPj4yXT1xZSksRD0wLHBlPTAsRz1MZT1sKy0xfDA7ISgoMHxHKTw9LTEpOyl7Zm9yKE9lPTB8YVtTdCsoKGdlPTB8YVthbisoRzw8Mik+PjJdKTw8Mik+PjJdLE09MCxSPUc7ISgoMHwoUj1SKzF8MCkp''@;'; put 'put ''Pj0oMHxsKSk7KU0tPStqbltPZSsoYVthbisoUjw8Mik+PjJdPDwyKT4+Ml07am5bYnQrKEc8PDIpPj4yXT11cj0oKE0qPTIpKnFlK0QqcGUtK2puW1p0KyhnZTw8Mik+PjJdKih1cj0ram5bKE9lPU9lKyhnZTw8Mil8MCk+PjJdKSkvKChiZT1NK0QpLXVyKSxEPWJlLStqbltPZT4+Ml0scGU9''@;'; put 'put ''dXIsRz1HKy0xfDB9Zm9yKHE/KGpuW2J0Pj4yXT1xZSxiZT0wLFI9LTEscT0wKTooYmU9MCxSPS0xLHE9MCk7ISgoMHxsKTw9KDB8cSkpOyl7cGU9K2puW2J0KyhxPDwyKT4+Ml0sTT0oMHxxKT4wPytqbltjdCsocSstMTw8Mik+PjJdOnBlO2Rve2lmKHBlPE0pe2lmKEc9TT5xZSxwZTxxZSl7''@;'; put 'put ''RD1NPUc/cWU6TTticmVha31HPyhEPXBlLE09cGUpOkQ9cGV9ZWxzZSBEPXBlfXdoaWxlKDApO2JlPShPZT0odXI9K2VvKCsoRC1xZSkpKisobC1xfDApKyArZW8oKyhNLXFlKSkqKygwfHEpKT5iZSk/dXI6YmUsUj1PZT9xOlIscT1xKzF8MH1pZigoMHxSKT4tMSlicmVhaztSZSYmKDB8YVtT''@;'; put 'put ''bisoYVtrdCsobTw8Mik+PjJdPDwyKT4+Ml0pPigwfGFbU24rKGFba3QrKEhlPDwyKT4+Ml08PDIpPj4yXSk/KGs9K2puW0huKyhhW2FuKyhMZTw8Mik+PjJdPDwyKT4+Ml0rYixWZT1tKTooaz0ram5bSG4rKGFbYW4rKExlPDwyKT4+Ml08PDIpPj4yXSxWZT1tKX1SZT8oTT0ram5bSG4rKChP''@;'; put 'put ''ZT0wfGFba3QrKG08PDIpPj4yXSk8PDIpPj4yXSxNPSgoMHxhW1NuKyhPZTw8Mik+PjJdKT4oMHxhW1NuKyhhW2t0KyhIZTw8Mik+PjJdPDwyKT4+Ml0pP00tYjpNKS0ram5bcnQrKGFbYW4rKExlPDwyKT4+Ml08PDIpPj4yXSk6TT0xZTksTT0oRD0ram5bYnQrKFI8PDIpPj4yXSk8TT9EOk0s''@;'; put 'put ''az0ocGU9Uj8ram5bY3QrKFIrLTE8PDIpPj4yXTpEKT5rP3BlOms7ZG97aWYoTTxrKXtpZihHPWs+cWUsTTxxZSl7RD1NPUc/cWU6azticmVha31HP0Q9TTooRD1NLE09ayl9ZWxzZSBEPU0sTT1rfXdoaWxlKDApO2ZvcihHPTA7ISgoMHxHKT49KDB8UikpOylqbltIbisoKE9lPTB8YVthbiso''@;'; put 'put ''Rzw8Mik+PjJdKTw8Mik+PjJdPStqbltydCsoT2U8PDIpPj4yXStNLEc9RysxfDA7Zm9yKDshKCgwfFIpPj0oMHxsKSk7KWpuW0huKygoT2U9MHxhW2FuKyhSPDwyKT4+Ml0pPDwyKT4+Ml09K2puW3J0KyhPZTw8Mik+PjJdK0QsUj1SKzF8MDtmb3Ioaz1SZSYmKDB8YVtTbisoYVtrdCsobTw8''@;'; put 'put ''Mik+PjJdPDwyKT4+Ml0pPigwfGFbU24rKGFba3QrKEhlPDwyKT4+Ml08PDIpPj4yXSk/K2puW0huKyhhW2FuKyhMZTw8Mik+PjJdPDwyKT4+Ml0rYjoram5bSG4rKGFbYW4rKExlPDwyKT4+Ml08PDIpPj4yXSxsPVZlOyEoKDB8bCk+KDB8SGUpKTspYVtrdCsobDw8Mik+PjJdPWFbYW4rKGwt''@;'; put 'put ''VmU8PDIpPj4yXSxsPWwrMXwwO3A9cDw8MjQ+PjI0IT0wJiYrZW8oKyhNLXFlKSk8LjAxPytlbygrKEQtcWUpKTwuMDE6MCxwJj0xfWw4KGF0LEhuKSxiOWUoSG4sa3Qsc3QsRXQsdyksZj1mKzF8MH19fXdoaWxlKDApO3JldHVybiAwfGZ9ZnVuY3Rpb24gYjllKGwsYyxmLHAsbSl7bHw9MCxj''@;'; put 'put ''fD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTA7Zm9yKEE9MDshKCgwfEEpPj0oMHxwKSk7KWFbbSsoQTw8Mik+PjJdPWFbbCsoYVtjKygoMHxhW2YrKEE8PDIpPj4yXSktMTw8Mik+PjJdPDwyKT4+Ml0sQT1BKzF8MH1mdW5jdGlvbiBaMmUobCxjLGYscCxtLEEpe2x8PTAsY3w9MCxmfD0wLHB8''@;'; put 'put ''PTAsbXw9MCxBPStBO3ZhciB3PTAsYj0wLGs9MCxNPTAsRD0wO2Zvcih3PS0xZTksaz0wLGI9LTEsRD0wOyEoKDB8RCk+PSgwfGMpKTspKDB8RCk8KDB8ayl8fCh3PSgwfEQpPjA/K2puW2wrKGFbZisoRCstMTw8Mik+PjJdPDwyKT4+Ml0rQTotMWU5LFZWKGwsZixELChrPSgwfChiPWIrMXww''@;'; put 'put ''KSk9PSgwfG0pP2M6MHxhW3ArKGI8PDIpPj4yXSkrLTF8MCkpLE09aywram5bKGs9bCsoYVtmKyhEPDwyKT4+Ml08PDIpfDApPj4yXTx3JiYoam5baz4+Ml09dyksaz1NLEQ9RCsxfDB9ZnVuY3Rpb24gXzllKGwpe0Z0KDB8YVthWyhsfD0wKT4+Ml0+PjJdKSxGdCgwfGFbbD4+Ml0pLEZ0KDB8''@;'; put 'put ''YVtsKzg+PjJdKSxGdCgwfGFbbCsyOD4+Ml0pLEZ0KDB8YVtsKzMyPj4yXSksRnQoMHxhW2wrMzY+PjJdKSxGdCgwfGFbbCs0MD4+Ml0pLEZ0KDB8YVtsKzEyPj4yXSksRnQoMHxhW2wrMTY+PjJdKSxGdCgwfGFbbCsyMD4+Ml0pLEZ0KDB8YVtsKzI0Pj4yXSksRnQobCl9ZnVuY3Rpb24gWFYo''@;'; put 'put ''bCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIGIsayxNLEQsQT0wLHc9MDtmb3IoTT0wfFFuKDYwKSxhW00+PjJdPTAsYVsoRD1NKzR8MCk+PjJdPWMsYVtNKzQ4Pj4yXT1mLGFbTSs1Mj4+Ml09cCxhW00rNTY+PjJdPW0sYVtNPj4yXT0wfGRLKGwsYyksaz0wfFFuKGI9''@;'; put 'put ''Yzw8MiksYVtNKzg+PjJdPWssdz0wLGM9MCxsPS0xOyEoKDB8dyk+PSgwfGFbRD4+Ml0pKTspQT1sKzF8MCwoMHx3KT49KDB8YykmJihjPTB8YVsoKDB8QSk9PSgwfG0pP0Q6cCsoQTw8Mil8MCk+PjJdLGw9QSksYVtrKyhhW2YrKHc8PDIpPj4yXTw8Mik+PjJdPWwsdz13KzF8MDtyZXR1cm4g''@;'; put 'put ''YVtNKzI4Pj4yXT0wfFFuKGIpLGFbTSszMj4+Ml09MHxRbihiKSxhW00rMzY+PjJdPTB8UW4oYiksYVtNKzQwPj4yXT0wfFFuKGIpLGFbTSsxMj4+Ml09MHxRbihiKSxhW00rMTY+PjJdPTB8UW4oYiksYVtNKzIwPj4yXT0wfFFuKGIpLGFbTSsyND4+Ml09MHxRbihiKSwwfE19ZnVuY3Rpb24g''@;'; put 'put ''cEsoKXt6eSgxODc2NzYsMjQpLGFbNDY5MjJdPTB9ZnVuY3Rpb24gS1YobCxjKXt2YXIgZixwO3JldHVybisgK0QwKCsoKHA9K19bOCsobHw9MCk+PjNdLStfWzgrKGN8PTApPj4zXSkqcCsoZj0rX1tsPj4zXS0rX1tjPj4zXSkqZikpfWZ1bmN0aW9uIEM5ZShsKXt2YXIgYzthWzE2KyhsfD0w''@;'; put 'put ''KT4+Ml09Yz0wfGFbNDY5MjJdLGFbNDY5MjJdPWMrMX1mdW5jdGlvbiB0TChsKXt2YXIgYyxmO2FbKGY9MjArKGx8PTApfDApPj4yXT1jPSgwfGFbZj4+Ml0pLTF8MCxjfHxZVihsLDE4NzY3Nil9ZnVuY3Rpb24gbkwobCl7YVsobD0yMCsobHw9MCl8MCk+PjJdPTErKDB8YVtsPj4yXSl9ZnVu''@;'; put 'put ''Y3Rpb24gRzJlKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAsbT0rbTt2YXIgYmUsT2UsTGUsUmUsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLEhlPTA7Zm9yKFJlPWxlLGxlPWxlKzE2fDAsYVsoRD1SZSk+PjJdPXB8PTAsT2U9MHxRbihHPWM8PDIpLExl''@;'; put 'put ''PTB8UW4oaz1jPDwzKSxiZT0wfGZ1bmN0aW9uIE0yZShsLGMpe3JldHVybiBjfD0wLGw9MHxhWzgrKGx8PTApPj4yXT8wfE5WKGwsYyk6MHxmdW5jdGlvbiBmOWUobCxjKXtsfD0wO3ZhciBwLG0sdyxmPTAsQT0wO2Zvcih3PWxlLGxlPWxlKzE2fDAsbT13LHA9MHxRbigwfEFyKEE9KGN8PTAp''@;'; put 'put ''PDwyLGMpKSxBPTB8UW4oQSksZj0wOyEoKDB8Zik+PSgwfGMpKTspYVtBKyhmPDwyKT4+Ml09cCsoKDB8QXIoZixjKSk8PDIpLGY9ZisxfDA7Zm9yKE95KG0sYyksZj0wOyEoKDB8Zik+PSgwfGMpKTspcjgoZixsLGMsMHxhW0ErKGY8PDIpPj4yXSxtKSxmPWYrMXwwO3JldHVybiBCRChtKSxs''@;'; put 'put ''ZT13LDB8QX0obCxjKSwwfGx9KGwsYyksbD0wOyEoKDB8bCk+PSgwfGMpKTspe2ZvcihiPWJlKyhsPDwyKXwwLHc9MDsoMHx3KSE9KDB8Yyk7KWFbKHBlPSgwfGFbYj4+Ml0pKyh3PDwyKXwwKT4+Ml09YVtwZT4+Ml08PDgsdz13KzF8MDtsPWwrMXwwfWZvcihmfHxQcig5Mzk1Miw5Mzk2MCwy''@;'; put 'put ''ODMsOTM5NzQpLHBlPTB8UW4oayksbD0wOyEoKDB8bCk+PSgwfGMpKTspX1twZSsobDw8Myk+PjNdPStfW2YrKGw8PDMpPj4zXSxsPWwrMXwwO2ZvcihnSyhwZSxjKSxBPTAsTT0wLGs9MTshKCgwfGspPj0oMHxjKSk7KXtmb3Iodz1iZSsoazw8Mil8MCxiPWYrKGs8PDMpfDAsbD0wOygwfGwp''@;'; put 'put ''IT0oMHxrKTspQT0ocT0rX1tiPj4zXS0rX1tmKyhsPDwzKT4+M10pKnEqKDEvKygwfEFyKEhlPTB8YVsoMHxhW3c+PjJdKSsobDw8Mik+PjJdLEhlKSkpK0EsTT0rZW8oK3EpKigxLysoMHxIZSkpK00sbD1sKzF8MDtrPWsrMXwwfWZvcihxPU0vQSxsPTA7ISgoMHxsKT49KDB8YykpOylfWyhI''@;'; put 'put ''ZT1mKyhsPDwzKXwwKT4+M109K19bSGU+PjNdKnEsbD1sKzF8MDtmb3IoZnVuY3Rpb24gVzJlKGwsYyxmLHAsbSl7Y3w9MCxmPStmLHB8PTA7dmFyIGssTSxBPTAsdz0wLGI9MCxEPTA7aWYoaz0wfGZ1bmN0aW9uIFkyZShsLGMpe2x8PTA7dmFyIEEsTSxSLGY9MCxwPTAsbT0wLHc9MCxiPTAs''@;'; put 'put ''az0wLEQ9MCxHPTA7Zm9yKFI9bGUsbGU9bGUrMTZ8MCxtPVIscD0wfFFuKDB8QXIoRD0oY3w9MCk8PDIsYykpLEQ9MHxRbihEKSxmPTA7ISgoMHxmKT49KDB8YykpOylhW0QrKGY8PDIpPj4yXT1wKygoMHxBcihmLGMpKTw8MiksZj1mKzF8MDtmb3IoTT0wfGZ1bmN0aW9uIEoyZShsLGMsZil7''@;'; put 'put ''bHw9MCxmfD0wO3ZhciBiLGsscD0wLG09MCxBPTAsdz0wLE09MCxEPTA7Zm9yKGI9MHxRbigoY3w9MCk8PDIpLGs9MS8rKDB8YykscD0wLHc9MDshKCgwfHcpPj0oMHxjKSk7KXtmb3IoTT1sKyh3PDwyKXwwLG09MCxBPTA7KDB8QSkhPSgwfGMpOylEPSsoMHxhWygwfGFbTT4+Ml0pKyhBPDwy''@;'; put 'put ''KT4+Ml0pLG09KEQqPUQpK20sQT1BKzF8MCxwPUQrcDtqbltiKyh3PDwyKT4+Ml09ayptLHc9dysxfDB9cmV0dXJuIGpuW2Y+PjJdPXAvKygwfEFyKGMsYykpLDB8Yn0obCxjLG0pLEE9K2puW20+PjJdLHA9MCxrPTE7ISgoMHxwKT49KDB8YykpOyl7Zm9yKG09bCsocDw8Mil8MCx3PU0rKHA8''@;'; put 'put ''PDIpfDAsYj1EKyhwPDwyKXwwLGY9MDsoMHxmKSE9KDB8ayk7KWpuWygwfGFbYj4+Ml0pKyhmPDwyKT4+Ml09Rz0ram5bTSsoZjw8Mik+PjJdKyAram5bdz4+Ml0tKEc9KygwfGFbKDB8YVttPj4yXSkrKGY8PDIpPj4yXSkpKkctQSxqblsoMHxhW0QrKGY8PDIpPj4yXSkrKHA8PDIpPj4yXT1H''@;'; put 'put ''LGY9ZisxfDA7cD1wKzF8MCxrPWsrMXwwfXJldHVybiBGdChNKSxsZT1SLDB8RH0obXw9MCxsfD0wKSxNPTB8UW4oOCkscCl7Zm9yKEE9MHxRbihsPDwzKSxtPTA7ISgoMHxtKT49KDB8bCkpOylfW0ErKG08PDMpPj4zXT0rX1twKyhtPDwzKT4+M10sbT1tKzF8MDtnSyhBLGwpLG09QSxiPUF9''@;'; put 'put ''ZWxzZSBtPTAsYj0wO2ZvcihmdW5jdGlvbiBVMmUobCxjLGYscCxtLEEpe2x8PTAsZnw9MCxwfD0wLG18PTAsQT0rQTt2YXIgRyxxLHBlLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLGdlPTAsYmU9MDtwZT0wfFFuKGdlPShjfD0wKTw8MyksZ2U9MHxRbihnZSksUj0xLUEsRz0oMHxjKTwxP2M6''@;'; put 'put ''MSxxPWMrLTF8MCxrPTA9PSgwfG0pLGI9MDtlOmZvcig7ISgoMHxiKT49KDB8RykpOyl7TT0wfGFbZisoYjw8Mik+PjJdO2Rve2Zvcih3PTA7KDB8dykhPSgwfGMpOylfW00rKHc8PDMpPj4zXT0rKDB8KDB8VDEoKSklMTAwKSx3PXcrMXwwO2ZvcihrfHxnZyhNLDAscSwtK29oKG0sMCxxLE0p''@;'; put 'put ''LG0pLHc9MDsoMHx3KSE9KDB8Yik7KWdnKE0sMCxxLEQ9LStvaCgwfGFbKGJlPWYrKHc8PDIpfDApPj4yXSwwLHEsTSksMHxhW2JlPj4yXSksdz13KzF8MDtBPSttcChNLDAscSl9d2hpbGUoQTwxZS0xMCk7SjcoTSwwLHEsMS9BLE0pO2Rve2ZvcihLMyhnZSwwLHEsTSksUTJlKGwsYyxjLE0s''@;'; put 'put ''cGUsbSksSzMoTSwwLHEscGUpLHc9MDsoMHx3KSE9KDB8Yik7KWdnKE0sMCxxLEQ9LStvaCgwfGFbKGJlPWYrKHc8PDIpfDApPj4yXSwwLHEsTSksMHxhW2JlPj4yXSksdz13KzF8MDtpZigoQT0rbXAoTSwwLHEpKTwxZS0xMClicmVhayBlO0o3KE0sMCxxLDEvQSxNKSxEPStvaChNLDAscSxn''@;'; put 'put ''ZSl9d2hpbGUoK2VvKCtEKTxSKTtfW3ArKGI8PDMpPj4zXT1EKkEsYj1iKzF8MH1mb3IoOyEoKDB8Yik+PSgwfEcpKTspe2ZvcihrPTB8YVtmKyhiPDwyKT4+Ml0sdz0wOzspe2lmKCgwfHcpPj0oMHxjKSl7dz0wO2JyZWFrfV9baysodzw8Myk+PjNdPSsoMHwoMHxUMSgpKSUxMDApLHc9dysx''@;'; put 'put ''fDB9Zm9yKDshKCgwfHcpPj0oMHxiKSk7KWdnKGssMCxxLFI9LStvaCgwfGFbKGJlPWYrKHc8PDIpfDApPj4yXSwwLHEsayksMHxhW2JlPj4yXSksdz13KzF8MDtKNyhrLDAscSwxLyttcChrLDAscSksayksX1twKyhiPDwzKT4+M109MCxiPWIrMXwwfWZvcihNPUcrLTF8MCxiPTA7ISgoMHxi''@;'; put 'put ''KT49KDB8TSkpOyl7Zm9yKEE9K19bKGw9cCsoYjw8Myl8MCk+PjNdLHc9YixrPW09YisxfDA7ISgoMHxrKT49KDB8RykpOylBPShiZT1BPChSPStfW3ArKGs8PDMpPj4zXSkpP1I6QSx3PWJlP2s6dyxrPWsrMXwwOygwfHcpIT0oMHxiKT8oSzMocGUsMCxxLDB8YVsoYz1mKyhiPDwyKXwwKT4+''@;'; put 'put ''Ml0pLEszKDB8YVtjPj4yXSwwLHEsMHxhWyhiZT1mKyh3PDwyKXwwKT4+Ml0pLEszKDB8YVtiZT4+Ml0sMCxxLHBlKSxfW3ArKHc8PDMpPj4zXT0rX1tsPj4zXSxfW2w+PjNdPUEsYj1tKTpiPW19RnQocGUpLEZ0KGdlKX0oayxsLGMsTSxtLGYpLHA9MDsxIT0oMHxwKTspe2ZvcihBPU0rKHA8''@;'; put 'put ''PDMpfDAsdz1jKyhwPDwyKXwwLG09MDshKCgwfG0pPj0oMHxsKSk7KWY9K0QwKCsgK2VvKCsgK19bQT4+M10pKSxfWyhEPSgwfGFbdz4+Ml0pKyhtPDwzKXwwKT4+M109K19bRD4+M10qZixtPW0rMXwwO3A9cCsxfDB9RnQoMHxhW2s+PjJdKSxGdChrKSxGdChNKSxGdChiKX0oYyxELG0sZixi''@;'; put 'put ''ZSksYj0wfFFuKDB8QXIoRyxjKSksdz0wOzspe2lmKCgwfHcpPj0oMHxjKSl7Yj0xO2JyZWFrfWZvcihrPWIrKCgwfEFyKHcsYykpPDwyKXwwLGFbT2UrKHc8PDIpPj4yXT1rLEQ9YmUrKHc8PDIpfDAsQT0wLGw9MDsoMHxsKSE9KDB8Yyk7KSgwfGwpIT0oMHx3KSYmKGpuW2srKGw8PDIpPj4y''@;'; put 'put ''XT1SPS0xLygoUj0rKDB8YVsoMHxhW0Q+PjJdKSsobDw8Mik+PjJdKSkqUiksQS09UiksbD1sKzF8MDtqbltrKyh3PDwyKT4+Ml09QSx3PXcrMXwwfWZvcig7Oyl7aWYoKDB8Yik+PSgwfGMpKXt3PTA7YnJlYWt9Zm9yKEE9K19bZisoYjw8Myk+PjNdLHc9YmUrKGI8PDIpfDAsbD0wOygwfGwp''@;'; put 'put ''IT0oMHxiKTspRz1+fitEMCgrKFI9KE09KygwfGFbKEhlPSgwfGFbdz4+Ml0pKyhsPDwyKXwwKT4+Ml0pKSpNLShSPUEtK19bZisobDw8Myk+PjNdKSpSKSksYVsoMHxhW2JlKyhsPDwyKT4+Ml0pKyhiPDwyKT4+Ml09Rz1SPjA/RzowLGFbSGU+PjJdPUcsbD1sKzF8MDtiPWIrMXwwfWZvcig7''@;'; put 'put ''Oyl7aWYoKDB8dyk+PSgwfGMpKXtHPTAsbD0wO2JyZWFrfWZvcihNPStfW3ArKHc8PDMpPj4zXSxfWyhrPUxlKyh3PDwzKXwwKT4+M109MCxEPWJlKyh3PDwyKXwwLGI9T2UrKHc8PDIpfDAsbD0wLEE9MDsoMHxsKSE9KDB8Yyk7KSgwfGwpIT0oMHx3KSYmKFI9K2puWygwfGFbYj4+Ml0pKyhs''@;'; put 'put ''PDwyKT4+Ml0qKygwfGFbKDB8YVtEPj4yXSkrKGw8PDIpPj4yXSksX1trPj4zXT1BKz1NPj0rX1twKyhsPDwzKT4+M10/LVI6UiksbD1sKzF8MDt3PXcrMXwwfWZvcig7Oyl7aWYoIShsPDwyND4+MjQ9PTAmKDB8Ryk8MjAwKSl7Z2U9NDI7YnJlYWt9aWYoKDB8TVYoT2UscCxMZSxjLG0sYywx''@;'; put 'put ''KSk8MCl7bD0xO2JyZWFrfWZvcihsPTEsRD0wOyEoKDB8RCk+PSgwfGMpKTspe2ZvcihSPStfW3ArKEQ8PDMpPj4zXSxiPWJlKyhEPDwyKXwwLGs9T2UrKEQ8PDIpfDAsQT0wLHc9MDsoMHx3KSE9KDB8Yyk7KXtkb3tpZigoMHx3KSE9KDB8RCkpe2lmKE09K2puWygwfGFbaz4+Ml0pKyh3PDwy''@;'; put 'put ''KT4+Ml0qKygwfGFbKDB8YVtiPj4yXSkrKHc8PDIpPj4yXSksUj49K19bcCsodzw8Myk+PjNdKXtBKz0tTTticmVha31BKz1NO2JyZWFrfX13aGlsZSgwKTt3PXcrMXwwfUEhPShSPStfWyh3PUxlKyhEPDwzKXwwKT4+M10pJiYrZW8oKygxLUEvUikpPjFlLTUmJihfW3c+PjNdPUEsbD0wKSxE''@;'; put 'put ''PUQrMXwwfUc9RysxfDB9ZTpkb3tpZig0Mj09KDB8Z2UpKWZvcihBPTEvcSxsPTA7Oyl7aWYoKDB8bCk+PSgwfGMpKXtsPTA7YnJlYWsgZX1fWyhIZT1mKyhsPDwzKXwwKT4+M109K19bSGU+PjNdKkEsX1soSGU9cCsobDw8Myl8MCk+PjNdPStfW0hlPj4zXSpBLGw9bCsxfDB9fXdoaWxlKDAp''@;'; put 'put ''O3JldHVybiBGdCgwfGFbYmU+PjJdKSxGdChiZSksRnQoMHxhW09lPj4yXSksRnQoT2UpLEZ0KHBlKSxGdChMZSksbGU9UmUsMHxsfWZ1bmN0aW9uIGdLKGwsYyl7bHw9MCxjfD0wO3ZhciBmPTAscD0wLG09MCxBPTA7Zm9yKGY9MCxwPTA7ISgoMHxmKT49KDB8YykpOyltPStfW2wrKGY8PDMp''@;'; put 'put ''Pj4zXStwLGY9ZisxfDAscD1tO2ZvcihwLz0rKDB8YyksZj0wOyEoKDB8Zik+PSgwfGMpKTspX1soQT1sKyhmPDwzKXwwKT4+M109K19bQT4+M10tcCxmPWYrMXwwO0o3KGwsMCxBPWMrLTF8MCwxLyttcChsLDAsQSksbCl9ZnVuY3Rpb24gUTJlKGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAsZnw9''@;'; put 'put ''MCxwfD0wLG18PTAsQXw9MDt2YXIgdz0wLGI9MCxrPTAsTT0wO2Zvcih3PTA7ISgoMHx3KT49KDB8YykpOyl7Zm9yKE09bCsodzw8Mil8MCxiPTAsaz0wOyEoKDB8ayk+PSgwfGYpKTspYj0rX1twKyhrPDwzKT4+M10qK2puWygwfGFbTT4+Ml0pKyhrPDwyKT4+Ml0rYixrPWsrMXwwO19bbSso''@;'; put 'put ''dzw8Myk+PjNdPWIsdz13KzF8MH13PWMrLTF8MCwwfEEmJmdnKG0sMCx3LC0rb2gobSwwLHcsQSksQSl9ZnVuY3Rpb24gJFYobCxjKXtsfD0wLGN8PTA7dmFyIEcscSxwZSxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsZ2U9MCxiZT0wLE9lPTA7cGU9bGUsbGU9bGUr''@;'; put 'put ''MTZ8MCxxPXBlLGpEKCkscEsoKSxmdW5jdGlvbiBDMmUoKXt2YXIgbD0wLGM9MCxmPTA7Zm9yKGFbNDY4NTddPTAsYVs0Njg1OV09MCxhWzQ2ODU4XT1jPShsPTB8YVs0Njg1NV0pPDwyLChmPTB8YVs0Njg1Nl0pfHwoZj0wfFFuKDE2MCpsfDApLGFbNDY4NTZdPWYsYz0wfGFbNDY4NThdKSxs''@;'; put 'put ''PTA7ISgoMHxsKT49KDB8YykpOylhW2YrKDQwKmx8MCkrMzI+PjJdPTAsbD1sKzF8MH0oKSxhWzQ2OTE4XT0wfCQxWzMmY10oKSxmdW5jdGlvbiBrMmUoKXt2YXIgbD0wLGM9MCxmPTA7Zm9yKHp5KDE4NzQ0OCw0MCksYVs0Njg2Nl09Yz0obD0wfGFbNDY4NTVdKTw8MSwoZj0wfGFbNDY4NjVd''@;'; put 'put ''KXx8KGY9MHxRbihsPDwzKSxhWzQ2ODY1XT1mLGM9MHxhWzQ2ODY2XSksbD0wOyEoKDB8bCk+PSgwfGMpKTspYVtmKyhsPDwyKT4+Ml09MCxsPWwrMXwwO2FbNDY4NjBdPTB8V0QoMCwwKSxhWzQ2ODYxXT0wfFdEKDAsMCksYVthWzQ2ODYwXT4+Ml09MCxhWzQrKGM9MHxhWzQ2ODYwXSk+PjJd''@;'; put 'put ''PWY9MHxhWzQ2ODYxXSxhW2Y+PjJdPWMsYVs0KygwfGFbNDY4NjFdKT4+Ml09MCxhWyhmPTB8YVs0Njg2NV0pPj4yXT1hWzQ2ODYwXSxhW2YrKCgwfGFbNDY4NjZdKS0xPDwyKT4+Ml09YVs0Njg2MV19KCksRz1xKzh8MCxSPTB8JDFbMyZjXSgpLGY9MCxwPTA7ZTpmb3IoOzspe2ZvcihNPTA9''@;'; put 'put ''PSgwfFIpLEQ9Uis4fDA7MHxIeSgpfHwoYjJlKHEpLGY9K19bcT4+M10scD0rX1tHPj4zXSksTXx8ISgwfEh5KCl8fChtPStfW0Q+PjNdLG08cCl8fG09PXAmJitfW1I+PjNdPGYpOyl7aWYoMHxIeSgpKWJyZWFrIGU7bD0wfFMyZShnZT0wfF8yZSgpKSxPZT0wfE55KGdlKSxBPTB8TnkoT2Up''@;'; put 'put ''LGs9MHxjOWUoZ2UpLGJlPTB8VVgoT2UpLEM5ZSh3PTB8YVtnZSsyMD4+Ml0pLFpEKDB8YVtnZSs4Pj4yXSwwfGZlW2dlKzE2Pj4wXSx3KSxaRCgwfGFbT2UrOD4+Ml0sMHxmZVtPZSsxNj4+MF0sdyksRlYoZ2UpLEZrKE9lKSxGVihPZSksZ2U9MSYoT2U9K19bays4Pj4zXT4rX1tiZSs4Pj4z''@;'; put 'put ''XSksWVgobCxrPTB8V0QoYmU9MHxPVihiPU9lP2JlOmssT2U/azpiZSksZ2UpKSxaRChiZSwyNTUmKDFeZ2UpLHcpLHRMKHcpLDB8KHc9MHxZRChsLGspKSYmKEZrKGwpLFU3KGwsdywrS1YodyxiKSkpLChsPTB8WUQoayxBKSkmJlU3KGssbCwrS1YobCxiKSl9Yj0wfE55KGw9MHxCVihSKSks''@;'; put 'put ''WVgobCxrPTB8V0QoQT0wfE9WKDB8VVgobCksUiksMCkpLDB8KHc9MHxZRChsLGspKSYmKEZrKGwpLFU3KGwsdywrS1YodyxSKSkpLFlYKGssQT0wfFdEKEEsMSkpLDB8KGw9MHxZRChBLGIpKSYmVTcoQSxsLCtLVihsLFIpKSxSPTB8JDFbMyZjXSgpfWZvcihsPTB8YVs0Njg2MF07KDB8KGw9''@;'; put 'put ''MHxOeShsKSkpIT0oMHxhWzQ2ODYxXSk7KUJrKDB8YVtsKzg+PjJdKTtsZT1wZX1mdW5jdGlvbiBxVihsLGMpe2x8PTAsY3w9MDt2YXIgbSxBLGY9MCx3PTA7QT1sZSxsZT1sZSsxNnwwLG09QSs4fDA7ZG97aWYoMSE9KDB8R28obCkpKXtpZihtSyhsKSxjfHwoYz0wfEsyZShsKSksKDB8KGY9''@;'; put 'put ''MHx2SyhsLGMpKSk8MCl7JHIoMSw5NDAzOSxtKTticmVha30kMmUobCkscTJlKGwsYyksazllKGwsYyksUzllKGwsZik7YnJlYWt9dz0wfGFbMTMyKygwfGFbMTYrKDB8RHQobCkpPj4yXSk+PjJdLGFbdz4+Ml09MCxhW3crND4+Ml09MCxhW3crOD4+Ml09MCxhW3crMTI+PjJdPTB9d2hpbGUo''@;'; put 'put ''MCk7cmV0dXJuIGxlPUEsMHxjfWZ1bmN0aW9uIG1LKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wO2ZvcihmPTB8R28obHw9MCksZj0wfEFyKGYsZiksYz0wfER0KGwpO2M7KWFbKEE9MjQrKG09MHxhWzExMisoMHxhWyhwPWMrMTZ8MCk+PjJdKT4+Ml0pfDApPj4yXT1mLGFbQSs0Pj4yXT0w''@;'; put 'put ''LF9bbSs0OD4+M109MTAsbT0wPT0oMHx4OWUobCxjKSksYVsocD0wfGFbMTEyKygwfGFbcD4+Ml0pPj4yXSk+PjJdPW0/ZjowLGFbcCs0Pj4yXT0wLGM9MHx6dChsLGMpfWZ1bmN0aW9uIEsyZShsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTA7cD0oMHxHbyhsfD0wKSk8MyxjPTB8RHQo''@;'; put 'put ''bCk7ZTpkb3tpZighcCl7Zm9yKDtjOykwPT0oMHxhWyhwPTB8YVsxMTIrKDB8YVtjKzE2Pj4yXSk+PjJdKT4+Ml0pJjA9PSgwfGFbcCs0Pj4yXSkmJmkxZShsLGMsMCksYz0wfHp0KGwsYyk7Zm9yKGY9MCxjPTAscD0wfER0KGwpOzspe2lmKCFwKWJyZWFrIGU7QT0wfGFbKHc9MHxhWzExMiso''@;'; put 'put ''MHxhW3ArMTY+PjJdKT4+Ml0pPj4yXSxmPShtPSh3PTB8YVt3KzQ+PjJdKT4+PjA+KG09KCgwfGYpPDApPDwzMT4+MzEpPj4+MHwoMHx3KT09KDB8bSkmQT4+PjA+Zj4+PjApP0E6ZixjPW0/cDpjLHA9MHx6dChsLHApfX19d2hpbGUoMCk7cmV0dXJuIDB8Y31mdW5jdGlvbiB2SyhsLGMpe2x8''@;'; put 'put ''PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wO2ZvcihwPTB8YVsobT0yNCsoZj0wfGFbMTEyKygwfGFbMTYrKGN8PTApPj4yXSk+PjJdKXwwKT4+Ml0sYVttPj4yXT0wLGFbbSs0Pj4yXT0wLGFbZiszMj4+Ml09MCxmdW5jdGlvbiBFOWUobCxjKXtjfD0wO3ZhciBiLEQsUixHLGY9MCxw''@;'; put 'put ''PTAsbT0wLEE9MCx3PTAsaz0wLE09MCxxPTAscGU9MDtHPWxlLGxlPWxlKzE2fDAsRD1HLFI9MHxzaShsfD0wLDIsMTAxNTQxLDApLGFbRCs0Pj4yXT0wLGFbRD4+Ml09MCxuMWUoRCxjKSxiPTA9PSgwfFIpO2U6Zm9yKDtrPTB8cjFlKEQpLGs7KWZvcihNPWsrMTZ8MCxBPTB8YVsyNCsoMHxh''@;'; put 'put ''WzExMisoMHxhW00+PjJdKT4+Ml0pPj4yXSxtPTB8TXMobCxrKSxBPTB8emwoMCwwfEEsMCwxKSxBPTB8TEwoMHxBLDB8RG4sMzIpLHc9RG47Oyl7aWYoIW0pY29udGludWUgZTshYiYmNDg9PSgwfGZlWygwfEhvKG0sUikpPj4wXSkmJiEoMHxaaSgwfEhvKG0sUiksMTM4Mzk0KSl8fCgoMHwo''@;'; put 'put ''Zj0wfGFbKDM9PSgwfChjPTMmYVttPj4yXSkpP206bSs0OHwwKSs0MD4+Ml0pKT09KDB8aykmJihmPTB8YVsoMj09KDB8Yyk/bTptKy00OHwwKSs0MD4+Ml0pLHc+Pj4wPChwZT0wfGFbNCsocT1wPTI0KyhjPTB8YVsxMTIrKDB8YVtmKzE2Pj4yXSk+PjJdKXwwKT4+Ml0pPj4+MHwoKDB8dyk9''@;'; put 'put ''PSgwfHBlKT9BPj4+MDwoMHxhW3E+PjJdKT4+PjA6MCkmJihhWyhwZT1wKT4+Ml09QSxhW3BlKzQ+PjJdPXcsYVtjKzMyPj4yXT1rLHE9MHx6bCgwfGFbKHE9cGU9MTYrKDB8YVsxMTIrKDB8YVtNPj4yXSk+PjJdKXwwKT4+Ml0sMHxhW3ErND4+Ml0sMSwwKSxhW3BlPj4yXT1xLGFbcGUrND4+''@;'; put 'put ''Ml09RG4sbjFlKEQsZikpKSxtPTB8VnMobCxtLGspfWxlPUd9KGwsYyksZj0wfER0KGwpLHA9MHxMTCgwLDB8cCwzMiksbT1EbixjPTA7Zjspe2lmKCgwfChBPTB8YVsodz0yNCsoMHxhWzExMisoMHxhW2YrMTY+PjJdKT4+Ml0pfDApPj4yXSkpPT0oMHxwKSYoMHwodz0wfGFbdys0Pj4yXSkp''@;'; put 'put ''PT0oMHxtKSl7Yz0tMTticmVha31jPXc+Pj4wPihiPSgoMHxjKTwwKTw8MzE+PjMxKT4+PjB8KDB8dyk9PSgwfGIpJkE+Pj4wPmM+Pj4wP0E6YyxmPTB8enQobCxmKX1yZXR1cm4gMHxjfWZ1bmN0aW9uICQyZShsKXt2YXIgYz0wLGY9MCxwPTAsbT0wO2ZvcihmPTB8RHQobHw9MCk7Zjspe3A9''@;'; put 'put ''MTYrKGM9MHxhWzExMisoMHxhW2YrMTY+PjJdKT4+Ml0pfDA7ZTpkb3tpZigwPT0oMHxhW3A+PjJdKSYwPT0oMHxhW3ArND4+Ml0pKWZvcig7Oyl7aWYobT0wfHpsKDB8YVsobT1wPWMrOHwwKT4+Ml0sMHxhW20rND4+Ml0sMSwwKSxhW3A+PjJdPW0sYVtwKzQ+PjJdPURuLCEoYz0wfGFbYysz''@;'; put 'put ''Mj4+Ml0pKWJyZWFrIGU7Yz0wfGFbMTEyKygwfGFbYysxNj4+Ml0pPj4yXX19d2hpbGUoMCk7Zj0wfHp0KGwsZil9fWZ1bmN0aW9uIHEyZShsLGMpe2x8PTAsX1s0MCsoMHxhWzExMisoMHxhWzE2KyhjfD0wKT4+Ml0pPj4yXSk+PjNdPTYuMjgzMTg1MzA3MTc5NTg2LHQxZShsLGMpfWZ1bmN0''@;'; put 'put ''aW9uIGs5ZShsLGMpe2x8PTAsX1s0OCsoMHxhWzExMisoMHxhWzE2KyhjfD0wKT4+Ml0pPj4yXSk+PjNdPTAsZTFlKGwsYyl9ZnVuY3Rpb24gUzllKGwsYyl7dmFyIEEsdyxmPTAscD0wLG09MCxiPTAsaz0wO2Zvcih3PWxlLGxlPWxlKzE2fDAsbT13LEE9MHxmdW5jdGlvbiBNOWUobCxjKXts''@;'; put 'put ''fD0wO3ZhciBiLGssTSxmPTAscD0wLG09MCxBPTAsdz0wO009bGUsbGU9bGUrMTZ8MCxiPU0saz0wfHZyKDgrKChjfD0wKTw8Myl8MCksbD0wfHYyKGwsMHxzaSgwfGFbbCs2MD4+Ml0sMCwxMDEyODgsMCksMCk7ZTpkb3tpZihsKXtBPTAsZj0wLG09MTt0OmZvcig7Oyl7aWYoKDB8bSk+KDB8''@;'; put 'put ''Yykpe3A9QSxsPW07YnJlYWsgZX1pZighKChwPStpMyhsLGIpKT4wKSl7cD1BLGw9bTticmVhayBlfWZvcih3PW0rMXwwLF9baysobTw8Myk+PjNdPWY9KEE9cD4uMDI/cDouMDIpK2YsbD0wfGFbYj4+Ml07Oyl7aWYoISgobT0wfGZlW2w+PjBdKTw8MjQ+PjI0KSl7bT13O2NvbnRpbnVlIHR9''@;'; put 'put ''aWYoIShtPDwyND4+MjQ9PTU4fDAhPSgwfCRjKG08PDI0Pj4yNCkpKSl7bT13O2NvbnRpbnVlIHR9bD1sKzF8MH19fWVsc2UgcD0xLGY9MCxsPTF9d2hpbGUoMCk7Zm9yKDshKCgwfGwpPigwfGMpKTspX1trKyhsPDwzKT4+M109QT1mK3AsbD1sKzF8MCxmPUE7cmV0dXJuIGxlPU0sMHxrfShs''@;'; put 'put ''fD0wLGN8PTApLGY9MHxEdChsKTtmOyliPStfW0ErKGFbMjQrKHA9MHxhWzExMisobT0wfGFbZisxNj4+Ml0pPj4yXSk+PjJdPDwzKT4+M10saz0raGEoKyArX1socD1wKzQ4fDApPj4zXSkqYixfWyhtPTB8YVttKzEzMj4+Ml0pPj4zXT1rLF9bbSs4Pj4zXT0rRGEoKyArX1twPj4zXSkqYixm''@;'; put 'put ''PTB8enQobCxmKTtGdChBKSxsZT13fWZ1bmN0aW9uIGUxZShsLGMpe3ZhciBmPTAscD0wLG09MCxBPTAsdz0wLGI9MDtmb3IocD0wfGFbMzIrKGY9MHxhWzExMisoMHxhWzE2KyhjfD0wKT4+Ml0pPj4yXSk+PjJdPytfW2YrNDg+PjNdLS41KitfW2YrNDA+PjNdOjAsQT0wfE1zKGx8PTAsYyk7''@;'; put 'put ''QTspKDB8KG09MHxhWygzPT0oMHwoZj0zJmFbQT4+Ml0pKT9BOkErNDh8MCkrNDA+PjJdKSk9PSgwfGMpJiYobT0wfGFbKDI9PSgwfGYpP0E6QSstNDh8MCkrNDA+PjJdKSwoMHxhWzMyKyhmPTB8YVsxMTIrKDB8YVttKzE2Pj4yXSk+PjJdKT4+Ml0pPT0oMHxjKSYmMTA9PStfWyh3PWYrNDh8''@;'; put 'put ''MCk+PjNdJiYoX1t3Pj4zXT0uNSooYj0rX1tmKzQwPj4zXSkrcCxwPWIrcCwwPT0oMHxhWyhmPWYrMTZ8MCk+PjJdKSYwPT0oMHxhW2YrND4+Ml0pfHxlMWUobCxtKSksQT0wfFZzKGwsQSxjKX1mdW5jdGlvbiB0MWUobCxjKXt2YXIgQSxmPTAscD0wLG09MCx3PTAsYj0wO2ZvcihBPStfWzQw''@;'; put 'put ''KyhwPTB8YVsxMTIrKDB8YVsxNisoY3w9MCk+PjJdKT4+Ml0pPj4zXS8oKygoMHxhWyhtPXArOHwwKT4+Ml0pPj4+MCkrNDI5NDk2NzI5NiorKCgwfGFbbSs0Pj4yXSk+Pj4wKSksbT0wfE1zKGx8PTAsYyk7bTspKDB8KGY9MHxhWygzPT0oMHwocD0zJmFbbT4+Ml0pKT9tOm0rNDh8MCkrNDA+''@;'; put 'put ''PjJdKSk9PSgwfGMpJiYoZj0wfGFbKDI9PSgwfHApP206bSstNDh8MCkrNDA+PjJdKSwoMHxhWzMyKyhwPTB8YVsxMTIrKDB8YVtmKzE2Pj4yXSk+PjJdKT4+Ml0pPT0oMHxjKSYmMD09K19bKHc9cCs0MHwwKT4+M10mJihfW3c+PjNdPUEqKCsoKDB8YVsoYj1wKzh8MCk+PjJdKT4+PjApKzQy''@;'; put 'put ''OTQ5NjcyOTYqKygoMHxhW2IrND4+Ml0pPj4+MCkpLCEoMD09KDB8YVsocD1wKzE2fDApPj4yXSkmMD09KDB8YVtwKzQ+PjJdKSkpJiZ0MWUobCxmKSxtPTB8VnMobCxtLGMpfWZ1bmN0aW9uIG4xZShsLGMpe3ZhciBmLHA7bHw9MCxjfD0wLGY9MHx2cig4KSxhW2Y+PjJdPWMsYVsoMD09KDB8''@;'; put 'put ''KHA9MHxhWyhjPWwrNHwwKT4+Ml0pKT9sOnArNHwwKT4+Ml09ZixhW2M+PjJdPWZ9ZnVuY3Rpb24gcjFlKGwpe3ZhciBmLGM9MDtyZXR1cm4oZj0wfGFbKGx8PTApPj4yXSk/KGM9MHxhW2Y+PjJdLGFbbD4+Ml09YVtmKzQ+PjJdLEZ0KGYpLDB8YVtsPj4yXXx8KGFbbCs0Pj4yXT0wKSk6Yz0w''@;'; put 'put ''LDB8Y31mdW5jdGlvbiBpMWUobCxjLGYpe2Z8PTA7dmFyIGIscD0wLG09MCxBPTAsdz0wLGs9MCxNPTA7Zm9yKHc9MHxhW2FbMTEyKygwfGFbMTYrKGN8PTApPj4yXSk+PjJdPj4yXSxBPTB8TXMobHw9MCxjKSx3PTB8TEwoMHwodz0wfHpsKDAsMHx3LDAsMSkpLDB8RG4sMzIpLGI9RG47QTsp''@;'; put 'put ''KDB8KHA9MHxhWygzPT0oMHwobT0zJmFbQT4+Ml0pKT9BOkErNDh8MCkrNDA+PjJdKSk9PSgwfGMpJiYocD0wfGFbKDI9PSgwfG0pP0E6QSstNDh8MCkrNDA+PjJdKSwoMHxwKSE9KDB8ZikmJmI+Pj4wPChNPTB8YVs0KyhtPWs9MHxhWzExMisoMHxhW3ArMTY+PjJdKT4+Ml0pPj4yXSk+Pj4w''@;'; put 'put ''fCgoMHxiKT09KDB8TSk/dz4+PjA8KDB8YVttPj4yXSk+Pj4wOjApJiYoYVsoTT1rKT4+Ml09dyxhW00rND4+Ml09YixpMWUobCxwLGMpKSxBPTB8VnMobCxBLGMpfWZ1bmN0aW9uIHg5ZShsLGMpe3ZhciBmPTAscD0wLG09MCxBPTA7Zm9yKG09MCxBPTB8TXMobHw9MCxjfD0wKTs7KXtpZigh''@;'; put 'put ''QSl7Zj0xO2JyZWFrfWlmKCgwfChmPTB8YVsoMz09KDB8KHA9MyZhW0E+PjJdKSk/QTpBKzQ4fDApKzQwPj4yXSkpPT0oMHxjKSYmKGY9MHxhWygyPT0oMHxwKT9BOkErLTQ4fDApKzQwPj4yXSksKDB8ZikhPSgwfGMpKXtpZihtKXtpZigoMHxtKSE9KDB8Zikpe2Y9MDticmVha31mPW19fWVs''@;'; put 'put ''c2UgZj1tO209ZixBPTB8VnMobCxBLGMpfXJldHVybiAwfGZ9ZnVuY3Rpb24gbzFlKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIEcsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MDtmb3IoRz0wfHZyKDcyKSxhW0crNjA+PjJdPTAsYVtHKzU2Pj4yXT1sLGs9bCsxNnww''@;'; put 'put ''LG09MCxNPTAsdz0xLGI9MCxEPTA7ISgoMHx3KT4oMHxhWzE4MCsoQT0wfGFbaz4+Ml0pPj4yXSkpOylBPTB8bzFlKDB8YVsoMHxhW0ErMTg0Pj4yXSkrKHc8PDIpPj4yXSxjLGYscCksbT0rX1tBPj4zXSttLDB8YiYmKGFbYis1Mj4+Ml09QSksTT1NKzF8MCx3PXcrMXwwLGI9QSxEPTA9PSgw''@;'; put 'put ''fEQpP0E6RDtmb3IoUj0wfER0KGwpLEE9RDtSOykwfGFbYVsxMTIrKDB8YVsodz1SKzE2fDApPj4yXSk+PjJdPj4yXT93PU06KGs9MHxJOWUoUixmKSxtPStfW2s+PjNdK20sMHxiJiYoYVtiKzUyPj4yXT1rKSxhW2FbMTEyKygwfGFbdz4+Ml0pPj4yXT4+Ml09bCx3PU0rMXwwLGI9ayxBPTA9''@;'; put 'put ''PSgwfEEpP2s6QSksUj0wfHp0KGwsUiksTT13O3JldHVybiBhW0crNjQ+PjJdPU0sTT8oX1tHKzg+PjNdPW0sbT0rZnVuY3Rpb24gZWoobCxjKXt2YXIgZj0wO3JldHVybisoZj0wPT0oZj0rTWwoMHxhWzU2KyhsfD0wKT4+Ml0sY3w9MCwwLDApKT8rX1tsKzg+PjNdOihmPStEMCgrICtfW2wr''@;'; put 'put ''OD4+M10pKzIqZikqZil9KEcscCkpOm09K2JLKGwsYyksX1tHPj4zXT1tLGFbRys0OD4+Ml09QSwwfEd9ZnVuY3Rpb24geUsobCl7dmFyIFIsRyxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxxPTAscGU9MCxnZT0wO0c9bGUsbGU9bGUrMTc2fDAsbT1HKzE0NHwwLGs9Rysz''@;'; put 'put ''MnwwLHc9RyxSPTB8YVs2NCsobHw9MCk+PjJdO2U6ZG97aWYoMHxSKXtmb3IoTT0wfHZyKFI8PDIpLHA9MCxmPWM9bCs0OHwwO2Y9MHxhW2Y+PjJdLCEoKDB8cCk+PSgwfFIpKTspYVtNKyhwPDwyKT4+Ml09ZixwPXArMXwwLGY9Zis1MnwwO2Zvcih4MShNLFIsNCw4MCksYj0wfHZyKFI8PDMp''@;'; put 'put ''LGY9MDshKCgwfGYpPj0oMHxSKSk7KV9bYisoZjw8Myk+PjNdPStfW2FbTSsoZjw8Mik+PjJdPj4zXSxmPWYrMXwwO2ZvcigrX1tsPj4zXT09KEE9K19bbCs4Pj4zXSk/KGFbbT4+Ml09YVsodz1sKzE2fDApPj4yXSxhW20rND4+Ml09YVt3KzQ+PjJdLGFbbSs4Pj4yXT1hW3crOD4+Ml0sYVtt''@;'; put 'put ''KzEyPj4yXT1hW3crMTI+PjJdLGFbbSsxNj4+Ml09YVt3KzE2Pj4yXSxhW20rMjA+PjJdPWFbdysyMD4+Ml0sYVttKzI0Pj4yXT1hW3crMjQ+PjJdLGFbbSsyOD4+Ml09YVt3KzI4Pj4yXSx3PTB8czFlKFIsYixtKSk6KHE9K19bbCs0MD4+M10scGU9K19bbCszMj4+M10sX1t3Pj4zXT0rX1ts''@;'; put 'put ''KzE2Pj4zXSxfW3crOD4+M109K19bbCsyND4+M10sQT0uNSoocGUrcS0rRDAoKyg0KkErKGdlPXEtcGUpKmdlKSkpLF9bdysxNj4+M109cGUtQSxfW3crMjQ+PjNdPXEtQSxhW20+PjJdPWFbdz4+Ml0sYVttKzQ+PjJdPWFbdys0Pj4yXSxhW20rOD4+Ml09YVt3Kzg+PjJdLGFbbSsxMj4+Ml09''@;'; put 'put ''YVt3KzEyPj4yXSxhW20rMTY+PjJdPWFbdysxNj4+Ml0sYVttKzIwPj4yXT1hW3crMjA+PjJdLGFbbSsyND4+Ml09YVt3KzI0Pj4yXSxhW20rMjg+PjJdPWFbdysyOD4+Ml0sdz0wfHMxZShSLGIsbSkpLHA9MHxhWzE1NzEyXSxmPTA7ISgoMHxmKT49KDB8UikpOylhWyhrPTE2KygwfGFbTSso''@;'; put 'put ''Zjw8Mik+PjJdKXwwKT4+Ml09YVsobT13KyhmPDw1KXwwKT4+Ml0sYVtrKzQ+PjJdPWFbbSs0Pj4yXSxhW2srOD4+Ml09YVttKzg+PjJdLGFbaysxMj4+Ml09YVttKzEyPj4yXSxhW2srMTY+PjJdPWFbbSsxNj4+Ml0sYVtrKzIwPj4yXT1hW20rMjA+PjJdLGFbaysyND4+Ml09YVttKzI0Pj4y''@;'; put 'put ''XSxhW2srMjg+PjJdPWFbbSsyOD4+Ml0sZj1mKzF8MDtmb3IoRnQoTSksRnQoYiksRnQodyksZj0wOzspe2lmKGM9MHxhW2M+PjJdLCgwfGYpPj0oMHxSKSlicmVhayBlOzB8YVtjKzYwPj4yXXx8eUsoYyksYz1jKzUyfDAsZj1mKzF8MH19fXdoaWxlKDApO2xlPUd9ZnVuY3Rpb24gd0sobCl7''@;'; put 'put ''dmFyIG0sYz0wLGY9MCxBPTAsdz0wLGI9MCxrPTAsTT0wO2lmKG09bGUsbGU9bGUrNDh8MCwwfGFbNjArKGx8PTApPj4yXSlrPStfW2wrMjQ+PjNdLHc9K19bbCszMj4+M10sQT0rX1tsKzQwPj4zXSxfWzE2KyhiPTB8YVsoZj0xNisoYz0wfGFbbCs1Nj4+Ml0pfDApPj4yXSk+PjNdPStfW2wr''@;'; put 'put ''MTY+PjNdLF9bYisyND4+M109ayxfWzMyKyhsPTB8YVtmPj4yXSk+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqdyxfW2wrNDA+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqQSxUeShjLDEmYVsxMTYrKDB8YVsxNisoMHxjcihjKSk+PjJdKT4+Ml0pLGZ1bmN0aW9uIGwxZShsKXtsfD0wO3ZhciBj''@;'; put 'put ''LGYscCxtO209bGUsbGU9bGUrNDh8MCxwPW0sYz1tKzh8MCwwfChmPTB8YVs0NzE1MF0pJiYwPT0oMHxmZVsoMHxIbyhsLGYpKT4+MF0pJiYoX1twPj4zXT0uNyorX1s4MCsoMHxhW2wrMTY+PjJdKT4+M10sb28oYyw5NDE2OCxwKSxWbChsLDB8YVs0NzE1MF0sYykpLGdEKGwpLGxlPW19KGMp''@;'; put 'put ''O2Vsc2V7Zm9yKGM9bCs0OHwwO2M9MHxhW2M+PjJdOyl3SyhjKSxjPWMrNTJ8MDtrPStfW2wrMjQ+PjNdLS41KihNPStfW2wrNDA+PjNdKSxfWzE2KyhiPTB8YVsxNisoMHxhW2wrNTY+PjJdKT4+Ml0pPj4zXT1BPStfW2wrMTY+PjNdLS41Kih3PStfW2wrMzI+PjNdKSxfW2IrMjQ+PjNdPWss''@;'; put 'put ''X1tiKzMyPj4zXT1BK3csX1tiKzQwPj4zXT1rK019bGU9bX1mdW5jdGlvbiBhMWUobCl7dmFyIHAsYz0wLGY9MDtmb3IocD0wfGFbNjQrKGx8PTApPj4yXSxjPWwrNDh8MCxmPTA7Yz0wfGFbYz4+Ml0sISgoMHxmKT49KDB8cCkpOylhMWUoYyksYz1jKzUyfDAsZj1mKzF8MDtGdChsKX1mdW5j''@;'; put 'put ''dGlvbiBJOWUobCxjKXt2YXIgZjtyZXR1cm4gbHw9MCxjfD0wLGY9MHx2cig3MiksX1tmPj4zXT0rYksobCxjKSxhW2YrNjA+PjJdPTEsYVtmKzU2Pj4yXT1sLDB8Zn1mdW5jdGlvbiBiSyhsLGMpe3ZhciBmO3JldHVybisoMD09KGY9K01sKGx8PTAsY3w9MCwxLDApKT8xZTM6MWUzKmYpfWZ1''@;'; put 'put ''bmN0aW9uIHMxZShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIEEsdyxwPTAsbT0wLGI9MDtmb3Iodz1sZSxsZT1sZSszMnwwLEE9dyxwPTAsbT0wOyEoKDB8cCk+PSgwfGwpKTspYj0rX1tjKyhwPDwzKT4+M10rbSxwPXArMXwwLG09YjtyZXR1cm4gbT4rX1tmKzI0Pj4zXSorX1tmKzE2Pj4z''@;'; put 'put ''XSsuMDAxP3A9MDoocD0wfHZyKGw8PDUpLGFbQT4+Ml09YVtmPj4yXSxhW0ErND4+Ml09YVtmKzQ+PjJdLGFbQSs4Pj4yXT1hW2YrOD4+Ml0sYVtBKzEyPj4yXT1hW2YrMTI+PjJdLGFbQSsxNj4+Ml09YVtmKzE2Pj4yXSxhW0ErMjA+PjJdPWFbZisyMD4+Ml0sYVtBKzI0Pj4yXT1hW2YrMjQ+''@;'; put 'put ''PjJdLGFbQSsyOD4+Ml09YVtmKzI4Pj4yXSx0aihsLGMscCwwLDAsMSwwLDEsQSkpLGxlPXcsMHxwfWZ1bmN0aW9uIHRqKGwsYyxmLHAsbSxBLHcsYixrKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG09K20sQT0rQSx3PSt3LGI9K2I7dmFyIFJlLEhlLFZlLHFlLE09MCxEPTAsUj0wLEc9MCxxPTAs''@;'; put 'put ''Z2U9MCxiZT0wLExlPTAscnQ9MCxXZT0wO3FlPWxlLGxlPWxlKzExMnwwLFZlPXFlKzcyfDAsRz1xZSszMnwwLE09cWUsTGU9K19bMTYrKGt8PTApKygoMSYhKChxPStfWyhSZT1rKzE2fDApPj4zXSk8K19bKEhlPWsrMjR8MCk+PjNdKSk8PDMpPj4zXTtkb3tpZigoMHxsKT49MSl7aWYoIXAp''@;'; put 'put ''e0xlPSh3PStfW2M+PjNdKS8oV2U9TGUqTGUpLFdlLz13LGFbVmU+PjJdPWFbaz4+Ml0sYVtWZSs0Pj4yXT1hW2srND4+Ml0sYVtWZSs4Pj4yXT1hW2srOD4+Ml0sYVtWZSsxMj4+Ml09YVtrKzEyPj4yXSxhW1ZlKzE2Pj4yXT1hW2srMTY+PjJdLGFbVmUrMjA+PjJdPWFbaysyMD4+Ml0sYVtW''@;'; put 'put ''ZSsyND4+Ml09YVtrKzI0Pj4yXSxhW1ZlKzI4Pj4yXT1hW2srMjg+PjJdLHRqKGwsYyxmLDEsdyx3LHcsTGU+V2U/TGU6V2UsVmUpO2JyZWFrfWlmKCgwfGwpPigwfHApJiYoRD0oYmU9K19bYysocDw8Myk+PjNdKTxtP206YmUsZ2U9YmU+QT9BOmJlLFI9KGJlKz13KS9MZSwoUj0oV2U9KFIq''@;'; put 'put ''PVIpL2dlKT4oUj1EL1IpP1dlOlIpPD1iKSl7YVtWZT4+Ml09YVtrPj4yXSxhW1ZlKzQ+PjJdPWFbays0Pj4yXSxhW1ZlKzg+PjJdPWFbays4Pj4yXSxhW1ZlKzEyPj4yXT1hW2srMTI+PjJdLGFbVmUrMTY+PjJdPWFbaysxNj4+Ml0sYVtWZSsyMD4+Ml09YVtrKzIwPj4yXSxhW1ZlKzI0Pj4y''@;'; put 'put ''XT1hW2srMjQ+PjJdLGFbVmUrMjg+PjJdPWFbaysyOD4+Ml0sdGoobCxjLGYscCsxfDAsRCxnZSxiZSxSLFZlKTticmVha31pZihxPXcvTGUsTGU9PShEPStfW1JlPj4zXSkpe2ZvcihSPTEvcSxHPWsrOHwwLEQ9K19baz4+M10tLjUqRCxNPTA7ISgoMHxNKT49KDB8cCkpOylfW2YrKE08PDUp''@;'; put 'put ''KzI0Pj4zXT1xLF9bZisoTTw8NSkrMTY+PjNdPVdlPStfW2MrKE08PDMpPj4zXSpSLF9bZisoTTw8NSkrOD4+M109LjUqKCtfW0hlPj4zXS1xKSsgK19bRz4+M10sX1tmKyhNPDw1KT4+M109LjUqV2UrRCxEPVdlK0QsTT1NKzF8MDtfW0c+PjNdPStfW0c+PjNdLS41KnEsTT0xfWVsc2V7Zm9y''@;'; put 'put ''KFI9MS9xLEQ9LjUqK19bSGU+PjNdKyArX1trKzg+PjNdLE09MDshKCgwfE0pPj0oMHxwKSk7KV9bZisoTTw8NSkrMTY+PjNdPXEsX1tmKyhNPDw1KSsyND4+M109V2U9K19bYysoTTw8Myk+PjNdKlIsX1tmKyhNPDw1KT4+M109LjUqKHEtK19bUmU+PjNdKSsgK19baz4+M10sX1tmKyhNPDw1''@;'; put 'put ''KSs4Pj4zXT1ELS41KldlLEQtPVdlLE09TSsxfDA7X1trPj4zXT0rX1trPj4zXSsuNSpxLE09MH1fWyhydD1rKzE2KyhNPDwzKXwwKT4+M109K19bcnQ+PjNdLXEsYVtWZT4+Ml09YVtrPj4yXSxhW1ZlKzQ+PjJdPWFbays0Pj4yXSxhW1ZlKzg+PjJdPWFbays4Pj4yXSxhW1ZlKzEyPj4yXT1h''@;'; put 'put ''W2srMTI+PjJdLGFbVmUrMTY+PjJdPWFbaysxNj4+Ml0sYVtWZSsyMD4+Ml09YVtrKzIwPj4yXSxhW1ZlKzI0Pj4yXT1hW2srMjQ+PjJdLGFbVmUrMjg+PjJdPWFbaysyOD4+Ml0sdGoobC1wfDAsYysocDw8Myl8MCxmKyhwPDw1KXwwLDAsMCwwLDAsMSxWZSl9fXdoaWxlKDApO2xlPXFlfWZ1''@;'; put 'put ''bmN0aW9uIE85ZShsLGMpe2N8PTA7dmFyIGIsayxNLEQsRyxxLGY9MCxwPTAsbT0wLEE9MCx3PTAsUj0wO2ZvcihHPWxlLGxlPWxlKzE2fDAsRD1HLHA9MHxhWygyPT0oMHwoZj0zJmFbKGx8PTApPj4yXSkpP2w6bCstNDh8MCkrNDA+PjJdLGY9MHxhWygzPT0oMHxmKT9sOmwrNDh8MCkrNDA+''@;'; put 'put ''PjJdLGFbKE09Rys0fDApPj4yXT1BPTB8YVsyMTIrKDB8YVsocT1wKzE2fDApPj4yXSk+PjJdLGFbRD4+Ml09bT0wfGFbMjEyKygwfGFbKHc9ZisxNnwwKT4+Ml0pPj4yXSxrPTB8dnIoMTIpLGw9QSxiPW0sMHxmZVsxMTgrKDB8YVtxPj4yXSk+PjBdJiYoYVtNPj4yXT1sPTB8YVs0OCsoMHxh''@;'; put 'put ''WzE0MCsoMHxhW2wrMTY+PjJdKT4+Ml0pPj4yXSxwPUEsQT1sKSwwfGZlWzExOCsoMHxhW3c+PjJdKT4+MF0/KGFbRD4+Ml09dz0wfGFbNDgrKDB8YVsxNDArKDB8YVtiKzE2Pj4yXSk+PjJdKT4+Ml0sZj1tLG09dyk6dz1iLCgwfChBPTB8YVs0NCsoMHxhWzE0MCsoMHxhW0ErMTY+PjJdKT4+''@;'; put 'put ''Ml0pPj4yXSkpPD0oMHwobT0wfGFbNDQrKDB8YVsxNDArKDB8YVttKzE2Pj4yXSk+PjJdKT4+Ml0pKT8oMHxtKT4oMHxBKT8oX0soayxtLGYsQSxELGMpLG09bD0wfGFbRD4+Ml0sZj1ELFI9MTEpOkE9dzooX0soayxBLHAsbSxNLGMpLHA9bD0wfGFbTT4+Ml0sbT1mLGY9TSxSPTExKTsxMT09''@;'; put 'put ''KDB8UikmJihhW2Y+PjJdPWFbNDgrKDB8YVsxNDArKDB8YVtsKzE2Pj4yXSk+PjJdKT4+Ml0sZj1tLGw9MHxhW00+PjJdLEE9MHxhW0Q+PjJdKSwoMHxsKSE9KDB8QSk7KW5qKGssbCwwLHAsYyksbmooayxBLGYsMCxjKSxhW00+PjJdPWFbNDgrKDB8YVsxNDArKDB8YVtsKzE2Pj4yXSk+PjJd''@;'; put 'put ''KT4+Ml0scD1sLG09QSxmPUQsbD1BLFI9MTE7cmV0dXJuIG5qKGssQSxmLHAsYyksbGU9RywwfGt9ZnVuY3Rpb24gUjllKGwpe2FbKGx8PTApPj4yXT0wfWZ1bmN0aW9uIF9LKGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAsZnw9MCxwfD0wLEF8PTA7dmFyIHc9MCxiPTA7Zm9yKGI9bXw9MDt3PTB8''@;'; put 'put ''YVtiPj4yXSwhKCgwfGMpPD0oMHxwKSk7KW5qKGwsdyxmLDAsQSksYz1jKy0xfDAsYj00OCsoMHxhWzE0MCsoMHxhW3crMTY+PjJdKT4+Ml0pfDAsZj13O2FbbT4+Ml09Zn1mdW5jdGlvbiBuaihsLGMsZixwLG0pe2x8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MCx3PTA7Zm9yKEE9MHxEdChj''@;'; put 'put ''fD0wKTtBOyl3PTB8YVtBKzE2Pj4yXSwhKCgwfEEpPT0oMHxwKXwoKDB8QSk9PSgwfGYpPzE6KDB8YVt3KzIxMj4+Ml0pIT0oMHxjKSkpJiYwPT0oMHxmZVt3KzExOD4+MF0pJiZ1MWUobCwwfENEKEEsbSwwKSksQT0wfHp0KGMsQSk7Zm9yKHc9YysxNnwwLGM9MTshKCgwfGMpPigwfGFbMTgw''@;'; put 'put ''KyhBPTB8YVt3Pj4yXSk+PjJdKSk7KSgwfChBPTB8YVsoMHxhW0ErMTg0Pj4yXSkrKGM8PDIpPj4yXSkpPT0oMHxmKXwoMHxBKT09KDB8cCl8fHUxZShsLDB8UDllKEEsbSkpLGM9YysxfDB9ZnVuY3Rpb24gdTFlKGwsYyl7Y3w9MDt2YXIgcCxtLGY9MCxBPTA7bT0wfGFbKHA9NCsobHw9MCl8''@;'; put 'put ''MCk+PjJdLGY9MHxhWyhBPWwrOHwwKT4+Ml07ZG97aWYoKDB8bSk9PSgwfGFbbD4+Ml0pKXtpZihmKXthW3A+PjJdPW08PDEsZj0wfFYwKGYsbTw8MyksYVtBPj4yXT1mO2JyZWFrfWY9MHxRbig0MDApLGFbQT4+Ml09ZixhW3A+PjJdPTEwMDticmVha319d2hpbGUoMCk7YVtsPj4yXT0xKyhB''@;'; put 'put ''PTB8YVtsPj4yXSksYVtmKyhBPDwyKT4+Ml09Y31mdW5jdGlvbiBQOWUobCxjKXtsfD0wLGN8PTA7dmFyIHcsYixrLGY9MCxwPTAsbT0wLEE9MCxNPTAsRD0wLFI9MDtyZXR1cm4gaz0wfHZyKDgpLGY9K19bMTYrKGw9MHxhW2wrMTY+PjJdKT4+M10sYj0rX1tsKzI0Pj4zXSxwPStfW2wrMzI+''@;'; put 'put ''PjNdLHc9K19bbCs0MD4+M10sYVtrKzQ+PjJdPTQsbD0wfHZyKDY0KSxhW2s+PjJdPWwsMHxmZVtjKzg+PjBdPyhBPWYtKG09K2puW2M+PjJdKSxtPXArbSxwPXcrKFI9K2puW2MrND4+Ml0pLGY9Yi1SKTooQT1mKihSPStqbltjPj4yXSktKG09LjUqKHArZikqKFIrLTEpKSxtPXAqUi1tLHA9''@;'; put 'put ''dyooRD0ram5bYys0Pj4yXSktKE09LjUqKHcrYikqKEQrLTEpKSxmPWIqRC1NKSxfW2w+PjNdPUEsX1tsKzg+PjNdPWYsX1tsKzE2Pj4zXT1BLF9bbCsyND4+M109cCxfW2wrMzI+PjNdPW0sX1tsKzQwPj4zXT1wLF9bbCs0OD4+M109bSxfW2wrNTY+PjNdPWYsMHxrfWZ1bmN0aW9uIHJqKGws''@;'; put 'put ''YyxmLHApe2x8PTAsZnw9MDt2YXIgbT0wLEE9MCx3PTA7Zm9yKGZlWyhwfD0wKSsoMHxhWzEyMCsoMHxhWzE2KyhjfD0wKT4+Ml0pPj4yXSk+PjBdPTEsWW4oZixjLDEpLHc9MHxNcyhsLGMpO3c7KSgwfChtPTB8YVsoMz09KDB8KEE9MyZhW3c+PjJdKSk/dzp3KzQ4fDApKzQwPj4yXSkpPT0o''@;'; put 'put ''MHxjKSYmKG09MHxhWygyPT0oMHxBKT93OncrLTQ4fDApKzQwPj4yXSksMHxmZVtwKygwfGFbMTIwKygwfGFbbSsxNj4+Ml0pPj4yXSk+PjBdfHxyaihsLG0sZixwKSx3PTB8VnMobCx3LGMpfWZ1bmN0aW9uIGMxZShsKXt2YXIgYztyZXR1cm4gbHw9MCxjPTB8UW4oMjQpLGFbNDY5MjRdPWMs''@;'; put 'put ''YVtjPj4yXT0wfGlzKDE4MjA0LDB8YVs0NTgxXSksYVtjKzE2Pj4yXT0wLGFbYysxMj4+Ml09MCxhW2MrND4+Ml09MHxmMWUobCksMHxjfWZ1bmN0aW9uIGYxZShsKXt2YXIgYyxmO3JldHVybiBsfD0wLGM9MHxRbigxNiksYVtjKzEyPj4yXT0wLGY9MHxRbigyMCpsfDApLGFbYz4+Ml09Zixh''@;'; put 'put ''W2MrOD4+Ml09ZisoMjAqbHwwKSxhW2MrND4+Ml09ZiwwfGN9ZnVuY3Rpb24ga0sobCxjKXt2YXIgbSxmPTAscD0wOygwfChmPTB8YVsobT0xMisobHw9MCl8MCk+PjJdKSk8KDB8KGN8PTApKSYmKHA9KDB8KHA9Zjw8MSkpPCgwfGMpP2M6cCwwfChmPTB8YVsoYz1sKzE2fDApPj4yXSkmJkZ0''@;'; put 'put ''KGYpLGFbYz4+Ml09MHxRbihwPDwzKSxhW20+PjJdPXApfWZ1bmN0aW9uIFNLKGwpe05sKDB8YVsobHw9MCk+PjJdKSxmdW5jdGlvbiBNSyhsKXtsfD0wO2Zvcih2YXIgYz0wO2w7KWM9MHxhW2wrMTI+PjJdLEZ0KDB8YVtsPj4yXSksRnQobCksbD1jfSgwfGFbbCs0Pj4yXSksRnQoMHxhW2wr''@;'; put 'put ''MTY+PjJdKSxGdChsKX1mdW5jdGlvbiBFSyhsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgQSxiLHc9MDtBPWxlLGxlPWxlKzMyfDAsYVsodz1BKzEyfDApPj4yXT1jfD0wLGFbdys0Pj4yXT1mLHc9OCsoMHxtaVs2MyZhWyhiPTB8YVtsPj4yXSk+PjJdXShiLHcsMSkpfDAsYVt3Pj4yXT0w''@;'; put 'put ''fGZ1bmN0aW9uIHhLKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA7cmV0dXJuIGFbKHA9MjArKGx8PTApfDApPj4yXT04KyhsPTB8YVtwPj4yXSksYVtsPj4yXT1jLGFbbCs0Pj4yXT1mLDB8bH0obCxwLDB8YVt3Pj4yXSksbGU9QX1mdW5jdGlvbiBXeShsKXtyZXR1cm4rICtfWyhsfD0wKT4+M119''@;'; put 'put ''ZnVuY3Rpb24gWmsobCl7cmV0dXJuIDB8YVs4KyhsfD0wKT4+Ml19ZnVuY3Rpb24gemsobCl7cmV0dXJuIDB8fn4rX1sxNisobHw9MCk+PjNdfWZ1bmN0aW9uIGlMKGwsYyxmLHAsbSxBKXtsfD0wLHB8PTAsbXw9MCxBfD0wLCgwfChjPTB8YVsoY3w9MCk+PjJdKSk+PSgwfGFbKGZ8PTApPj4y''@;'; put 'put ''XSkmJihhW2Y+PjJdPWM9YysxMHwwLGFbcD4+Ml09MHxWMCgwfGFbcD4+Ml0sMHxBcihsPDwzLGMpKSxhW20+PjJdPTB8VjAoMHxhW20+PjJdLGFbZj4+Ml08PDMpLGFbQT4+Ml09MHxWMCgwfGFbQT4+Ml0sYVtmPj4yXTw8MykpfWZ1bmN0aW9uIElLKGwsYyxmLHAsbSxBLHcsYixrLE0sRCl7''@;'; put 'put ''bHw9MCxjPStjLGZ8PTAscHw9MCxtfD0wLEF8PTAsd3w9MCxifD0wLGt8PTAsRHw9MDt2YXIgUj0wLEc9MCxxPTAscGU9MCxnZT0wO19bKE18PTApPj4zXT0rX1tNPj4zXSsxO2U6ZG97aWYoMHxsKXtpZihwZT0wfGFbbCsxNj4+Ml0sMHwoUj0wfGFbbCs0MD4+Ml0pKWRve2lmKGlMKHBlLG0s''@;'; put 'put ''QSx3LGIsayksKDB8emsoMHxMdShSKSkpIT0oMHxwKSl7Zm9yKHE9MHxaaygwfEx1KFIpKSxHPTA7ISgoMHxHKT49KDB8cGUpKTspX1soMHxhW3c+PjJdKSsoKDB8QXIoMHxhW20+PjJdLHBlKSkrRzw8Myk+PjNdPStfW3ErKEc8PDMpPj4zXSxHPUcrMXwwO2dlPStXeSgwfEx1KFIpKSxfWygw''@;'; put 'put ''fGFbYj4+Ml0pKyhhW20+PjJdPDwzKT4+M109Z2UsZ2U9K19BKGYscSxwZSksX1soMHxhW2s+PjJdKSsoKHE9MHxhW20+PjJdKTw8Myk+PjNdPWdlLGFbbT4+Ml09cSsxfVI9MHxHbShSKX13aGlsZSgwIT0oMHxSKSk7aWYoMHxhWyhxPWwrMzZ8MCk+PjJdKXtpZihnZT0rX0EoMHxhW2wrMjA+''@;'; put 'put ''PjJdLGYscGUpLCEoK19bbCsyND4+M108Z2UqYykpZm9yKEc9MTw8cGUsUj0wOzspe2lmKCgwfFIpPj0oMHxHKSlicmVhayBlO0lLKDB8YVsoMHxhW3E+PjJdKSsoUjw8Mik+PjJdLGMsZixwLG0sQSx3LGIsayxNLEQpLFI9UisxfDB9Zm9yKGlMKHBlLG0sQSx3LGIsayksRz1sKzMyfDAsUj0w''@;'; put 'put ''OyEoKDB8Uik+PSgwfHBlKSk7KV9bKDB8YVt3Pj4yXSkrKCgwfEFyKDB8YVttPj4yXSxwZSkpK1I8PDMpPj4zXT0rX1soMHxhW0c+PjJdKSsoUjw8Myk+PjNdLFI9UisxfDA7X1soMHxhW2I+PjJdKSsoYVttPj4yXTw8Myk+PjNdPStfW2wrOD4+M10sZ2U9K19BKDB8YVtHPj4yXSxmLHBlKSxf''@;'; put 'put ''WygwfGFbaz4+Ml0pKygoYj0wfGFbbT4+Ml0pPDwzKT4+M109Z2UsYVttPj4yXT1iKzF9fX13aGlsZSgwKX1mdW5jdGlvbiBvTChsLGMsZixwLG0sQSx3LGIsayxNLEQpe3ZhciBSO2M9K2MsZnw9MCxwfD0wLG18PTAsQXw9MCx3fD0wLGJ8PTAsa3w9MCxEfD0wLFI9MHxhWzE2KyhsfD0wKT4+''@;'; put 'put ''Ml0sX1soTXw9MCk+PjNdPTAsYVttPj4yXT0wLGFbRD4+Ml09MCxhW0E+PjJdPTEwLDB8YVt3Pj4yXXx8KGFbdz4+Ml09MHxRbig4MCpSfDApKSwwfGFbYj4+Ml18fChhW2I+PjJdPTB8UW4oYVtBPj4yXTw8MykpLDB8YVtrPj4yXXx8KGFbaz4+Ml09MHxRbihhW0E+PjJdPDwzKSksSUsobCxj''@;'; put 'put ''LGYscCxtLEEsdyxiLGssTSxEKX1mdW5jdGlvbiBhaihsLGMsZixwLG0sQSx3LGIpe2N8PTAsZnw9MCxwPStwLG09K20sQT0rQSx3fD0wLGJ8PTA7dmFyIGs9MCxNPTAsRD0wO2ZvcihEPTB8YVsobHw9MCk+PjJdLE09MHxhW2wrMTY+PjJdLGs9MDs0IT0oMHxrKTspX1t3KyhrPDwzKT4+M109''@;'; put 'put ''MCxrPWsrMXwwO2ZvcihhW2I+PjJdPTAsTT0wfEFyKE0sRCksaz0wOyEoKDB8ayk+PSgwfE0pKTspX1tjKyhrPDwzKT4+M109MCxrPWsrMXwwO2ZvcihLNyhsLGwsZixjLHAsbSxBLHcpLERLKGwsYyx3KSxwPTEvKygwfEQpLGs9MDs0IT0oMHxrKTspX1soRD13KyhrPDwzKXwwKT4+M109K19b''@;'; put 'put ''RD4+M10qcCxrPWsrMXwwfWZ1bmN0aW9uIEs3KGwsYyxmLHAsbSxBLHcsYil7bHw9MCxjfD0wLGZ8PTAscHw9MCxtPSttLEE9K0Esdz0rdyxifD0wO3ZhciBrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wLFZlPTA7ZTpkb3tpZigwIT0o''@;'; put 'put ''MHxsKSYwIT0oMHxjKSl7aWYoKDB8YVtsPj4yXSk+MCYmKDB8YVtjPj4yXSk+MCl7aWYocT0wfGFbbCs0MD4+Ml0sRz0wfGFbKFJlPWMrNDB8MCk+PjJdLGdlPStfQSgwfGFbKGs9bCszMnwwKT4+Ml0sMHxhWyhEPWMrMzJ8MCk+PjJdLEhlPTB8YVtsKzE2Pj4yXSksKFI9K19bYysyND4+M10p''@;'; put 'put ''KyhNPStfW2wrMjQ+PjNdKTxnZSptKWZvcihfW2I+PjNdPStfW2I+PjNdKzEscGU9MHxhW2s+PjJdLFI9K19bbCs4Pj4zXSxxPTB8R2sobCxIZSksRz0wfGFbRD4+Ml0sTT0rX1tjKzg+PjNdLEQ9MHxHayhjLEhlKSxnZT4wfHxQcig5NDc5OCw5NDY4MSwxOTEsOTQ3NjQpLFI9Uip3Kk0sTT0r''@;'; put 'put ''cWwoK2dlLCsoMS1BKSksTT0xLygtMT09QT9nZSpnZTpNKSxrPTA7Oyl7aWYoKDB8ayk+PSgwfEhlKSlicmVhayBlO19bKHA9cSsoazw8Myl8MCk+PjNdPSh3PVIqKCtfW3BlKyhrPDwzKT4+M10tK19bRysoazw8Myk+PjNdKSpNKSsgK19bcD4+M10sX1socD1EKyhrPDwzKXwwKT4+M109K19b''@;'; put 'put ''cD4+M10tdyxrPWsrMXwwfWlmKExlPSgwfGwpPT0oMHxjKSwoRD0wIT0oMHxxKSkmKGs9MCE9KDB8RykpKWZvcihiZT1iKzh8MCxPZT0tMT09QSxtPTEtQSxEPXE7Oyl7aWYoIUQpYnJlYWsgZTtmb3IocT0wfFprKDB8THUoRCkpLGdlPStXeSgwfEx1KEQpKSxsPTB8V2socCxwZT0wfHprKDB8''@;'; put 'put ''THUoRCkpLEQsSGUpLGdlKj13LEc9MHxhW1JlPj4yXTtHOyl7Yz0wfFprKDB8THUoRykpLE09K1d5KDB8THUoRykpLGI9MHxXayhwLGs9MHx6aygwfEx1KEcpKSxHLEhlKTt0OmRve2lmKCEoKDB8cGUpPT0oMHxrKXxMZSYoMHxrKTwoMHxwZSkpKWZvcihfW2JlPj4zXT0rX1tiZT4+M10rMSxB''@;'; put 'put ''PStkdShmLEhlLHBlLGspLE0qPWdlLFI9K3FsKCtBLCttKSxSPTEvKE9lP0EqQTpSKSxrPTA7Oyl7aWYoKDB8ayk+PSgwfEhlKSlicmVhayB0O19bKFZlPWwrKGs8PDMpfDApPj4zXT0oQT1NKigrX1txKyhrPDwzKT4+M10tK19bYysoazw8Myk+PjNdKSpSKSsgK19bVmU+PjNdLF9bKFZlPWIr''@;'; put 'put ''KGs8PDMpfDApPj4zXT0rX1tWZT4+M10tQSxrPWsrMXwwfX13aGlsZSgwKTtHPTB8R20oRyl9RD0wfEdtKEQpfWlmKExlKWZvcihwZT0xPDxIZSxHPWwrMzZ8MCxEPTA7Oyl7aWYoKDB8RCk+PSgwfHBlKSlicmVhayBlO2ZvcihxPTB8YVsoMHxhW0c+PjJdKSsoRDw8Mik+PjJdLGs9RDsoMHxr''@;'; put 'put ''KSE9KDB8cGUpOylLNyhxLDB8YVsoMHxhW0c+PjJdKSsoazw8Mik+PjJdLGYscCxtLEEsdyxiKSxrPWsrMXwwO0Q9RCsxfDB9aWYoIShEfCEoTT5SKSkpZm9yKEc9MTw8SGUsRD1sKzM2fDAsaz0wOzspe2lmKCgwfGspPj0oMHxHKSlicmVhayBlO0s3KDB8YVsoMHxhW0Q+PjJdKSsoazw8Mik+''@;'; put 'put ''PjJdLGMsZixwLG0sQSx3LGIpLGs9aysxfDB9aWYoIShrfCEoUj5NKSkpZm9yKEc9MTw8SGUsRD1jKzM2fDAsaz0wOzspe2lmKCgwfGspPj0oMHxHKSlicmVhayBlO0s3KDB8YVsoMHxhW0Q+PjJdKSsoazw8Mik+PjJdLGwsZixwLG0sQSx3LGIpLGs9aysxfDB9aWYoIUQpZm9yKEc9MTw8SGUs''@;'; put 'put ''RD1sKzM2fDAsaz0wOzspe2lmKCgwfGspPj0oMHxHKSlicmVhayBlO0s3KDB8YVsoMHxhW0Q+PjJdKSsoazw8Mik+PjJdLGMsZixwLG0sQSx3LGIpLGs9aysxfDB9Zm9yKGsmJlByKDEzODM5NCw5NDY4MSwyNzMsOTQ3NjQpLEc9MTw8SGUsRD1jKzM2fDAsaz0wOzspe2lmKCgwfGspPj0oMHxH''@;'; put 'put ''KSlicmVhayBlO0s3KDB8YVsoMHxhW0Q+PjJdKSsoazw8Mik+PjJdLGwsZixwLG0sQSx3LGIpLGs9aysxfDB9fVByKDk0NzM5LDk0NjgxLDE3NSw5NDc2NCl9fXdoaWxlKDApfWZ1bmN0aW9uIERLKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIEQsUixwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAs''@;'; put 'put ''Rz0wO3A9MHxhWzQwKyhsfD0wKT4+Ml0sQT0rX1tsKzg+PjNdLFI9MHxHayhsLEQ9MHxhW2wrMTY+PjJdKSxBPjB8fFByKDk0NjczLDk0NjgxLDI4OSw5NDY5MiksX1soTT1mKzE2fDApPj4zXT0rX1tNPj4zXSsxO2U6ZG97aWYocClmb3Iodz0xL0E7Oyl7aWYoIXApYnJlYWsgZTtmb3IobT0w''@;'; put 'put ''fFdrKGMsMHx6aygwfEx1KHApKSxwLEQpLEE9K1d5KDB8THUocCkpKncsbD0wOyEoKDB8bCk+PSgwfEQpKTspX1soRz1tKyhsPDwzKXwwKT4+M109K19bRz4+M10rICtfW1IrKGw8PDMpPj4zXSpBLGw9bCsxfDA7cD0wfEdtKHApfWVsc2V7Zm9yKE09MTw8RCxrPWwrMzZ8MCxBPTEvQSxsPTA7''@;'; put 'put ''Oyl7aWYoKDB8bCk+PSgwfE0pKWJyZWFrIGU7aWYoMHwobT0wfGFbKDB8YVtrPj4yXSkrKGw8PDIpPj4yXSkpe2lmKCgwfGFbbT4+Ml0pPD0wKWJyZWFrO2ZvcihiPTB8R2sobSxEKSx3PStfW20rOD4+M10qQSxwPTA7ISgoMHxwKT49KDB8RCkpOylfWyhHPWIrKHA8PDMpfDApPj4zXT0rX1tH''@;'; put 'put ''Pj4zXSsgK19bUisocDw8Myk+PjNdKncscD1wKzF8MDtESyhtLGMsZil9bD1sKzF8MH1Qcig5NDcyOCw5NDY4MSwzMDcsOTQ2OTIpfX13aGlsZSgwKX1mdW5jdGlvbiBHayhsLGMpe2N8PTA7dmFyIGY9MDtsPTB8YVsoZj00OCsobHw9MCl8MCk+PjJdO2U6ZG97aWYoIWwpZm9yKGw9MHxRbihj''@;'; put 'put ''PDwzKSxhW2Y+PjJdPWwsZj0wOzspe2lmKCgwfGYpPj0oMHxjKSlicmVhayBlO19bbCsoZjw8Myk+PjNdPTAsZj1mKzF8MH19d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBXayhsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgbT0wO3JldHVybihtPTB8YVsyNCsoMHxMdShmfD0wKSk+''@;'; put 'put ''PjJdKXx8KG09bCsoKDB8QXIocCxjKSk8PDMpfDAsYVsyNCsoMHxMdShmKSk+PjJdPW0sbT0wfGFbMjQrKDB8THUoZikpPj4yXSksMHxtfWZ1bmN0aW9uIFlrKGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgTSxELEE9MCx3PTAsYj0wLGs9MCxSPTAsRz0wLHE9MCxwZT0wO2lm''@;'; put 'put ''KDAhPSgwfChNPTB8UW4oUj0obHw9MCk8PDMpKSkmMCE9KDB8KEQ9MHxRbihSKSkpJjAhPSgwfChSPTB8UW4oUikpKSl7Zm9yKEE9MDs7KXtpZigoMHxBKT49KDB8bCkpe0E9MDticmVha31fW00rKEE8PDMpPj4zXT0rX1twKyhBPDwzKT4+M10sQT1BKzF8MH1mb3IoOzspe2lmKCgwfEEpPj0o''@;'; put 'put ''MHxsKSl7dz0xO2JyZWFrfV9bRCsoQTw8Myk+PjNdPStfW3ArKEE8PDMpPj4zXSxBPUErMXwwfWZvcig7ISgoMHx3KT49KDB8YykpOyl7Zm9yKGs9MHxBcih3LGwpLEE9MDshKCgwfEEpPj0oMHxsKSk7KV9bKEc9TSsoQTw8Myl8MCk+PjNdPShiPStfW0c+PjNdKTwocT0rX1socGU9cCsoQStr''@;'; put 'put ''PDwzKXwwKT4+M10pP2I6cSxfWyhHPUQrKEE8PDMpfDApPj4zXT0ocT0rX1tHPj4zXSk+KGI9K19bcGU+PjNdKT9xOmIsQT1BKzF8MDt3PXcrMXwwfWZvcihiPStfW0Q+PjNdLStfW00+PjNdLEE9MDshKCgwfEEpPj0oMHxsKSk7KV9bUisoQTw8Myk+PjNdPS41KigrX1soRz1EKyhBPDwzKXww''@;'; put 'put ''KT4+M10rICtfWyhwZT1NKyhBPDwzKXwwKT4+M10pLGI9Yj4ocT0rX1tHPj4zXS0rX1twZT4+M10pP2I6cSxBPUErMXwwO0E9MHxhTChsLFIsMD09Yj81MmUtNzouNTIqYixmKTtlOmRve2lmKG0pZm9yKHc9MDs7KXtpZigoMHx3KT49KDB8YykpYnJlYWsgZTtBPTB8JDcoQSxwZT1wKygoMHxB''@;'; put 'put ''cih3LGwpKTw8Myl8MCwrX1ttKyh3PDwzKT4+M10sdyksdz13KzF8MH1lbHNlIGZvcih3PTA7Oyl7aWYoKDB8dyk+PSgwfGMpKWJyZWFrIGU7QT0wfCQ3KEEscCsoKDB8QXIodyxsKSk8PDMpfDAsMSx3KSx3PXcrMXwwfX13aGlsZSgwKTtGdChNKSxGdChEKSxGdChSKX1lbHNlIEZ0KE0pLEZ0''@;'; put 'put ''KEQpLEZ0KFIpLEE9MDtyZXR1cm4gMHxBfWZ1bmN0aW9uIGFMKGwsYyxmLHApe2x8PTAsY3w9MCxmPStmLHB8PTA7dmFyIEEsdyxtPTA7Zm9yKEE9MHxRbig1NiksYVtBKzE2Pj4yXT1sLGFbQT4+Ml09MCx3PTB8UW4obDw8MyksYVtBKzIwPj4yXT13LG09MDshKCgwfG0pPj0oMHxsKSk7KV9b''@;'; put 'put ''dysobTw8Myk+PjNdPStfW2MrKG08PDMpPj4zXSxtPW0rMXwwO3JldHVybiBmPjA/KF9bQSsyND4+M109ZixfW0ErOD4+M109MCxhW0ErMzI+PjJdPTAsYVtBKzM2Pj4yXT0wLGFbQSs0MD4+Ml09MCxhW0ErNDQ+PjJdPXAsYVtBKzQ4Pj4yXT0wLDB8QSk6KFByKDk0ODk2LDk0NjgxLDQxMCw5''@;'; put 'put ''NDkwNiksMCl9ZnVuY3Rpb24gJDcobCxjLGYscCl7cmV0dXJuIGY9K2YsKGx8PTApP1VrKGwsY3w9MCxmLHB8PTAsMCk6bD0wLDB8bH1mdW5jdGlvbiBVayhsLGMsZixwLG0pe2N8PTAsZj0rZixwfD0wLG18PTA7dmFyIGdlLGJlLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0w''@;'; put 'put ''LHBlPTAsT2U9MDtnZT0wfGFbKE9lPTE2KyhsfD0wKXwwKT4+Ml0sYmU9MHxhW2wrNDQ+PjJdLEQ9MHxhW2w+PjJdO2Rve2lmKEQpe2lmKCgwfGJlKTw9KDB8bSkpe2ZvcigwfGFbbCszNj4+Ml0mJlByKDk0ODgxLDk0NjgxLDU0MSw5NDgxNSksYVtsPj4yXT1BPUQrMXwwLF9bKHc9bCs4fDAp''@;'; put 'put ''Pj4zXT0rX1t3Pj4zXStmLHc9bCszMnwwLGs9KygwfEEpLE09MS8rKEQrMnwwKSxBPTA7ISgoMHxBKT49KDB8Z2UpKTspX1socGU9KDB8YVt3Pj4yXSkrKEE8PDMpfDApPj4zXT0oK19bcGU+PjNdKmsrICtfW2MrKEE8PDMpPj4zXSkqTSxBPUErMXwwO2lmKEE9MHxxNyhnZSxmLGMscCksYj0w''@;'; put 'put ''fGFbKHc9bCs0MHwwKT4+Ml0pe2Fbdz4+Ml09MHxrQShiLEEpO2JyZWFrfVByKDk0ODkxLDk0NjgxLDU0Nyw5NDgxNSl9Zm9yKF9bKHc9bCs4fDApPj4zXT0rX1t3Pj4zXStmLHc9bCszMnwwLE09KygwfEQpLGs9MS8rKEQrMXwwKSxBPTA7ISgoMHxBKT49KDB8Z2UpKTspX1socGU9KDB8YVt3''@;'; put 'put ''Pj4yXSkrKEE8PDMpfDApPj4zXT0oK19bcGU+PjNdKk0rICtfW2MrKEE8PDMpPj4zXSkqayxBPUErMXwwO3BlPWwrMzZ8MCxxPTE8PGdlO2U6ZG97aWYoISgwfGFbcGU+PjJdKSlmb3IoYVtwZT4+Ml09MHxRbihxPDwyKSxBPTA7Oyl7aWYoKDB8QSk+PSgwfHEpKWJyZWFrIGU7YVsoMHxhW3Bl''@;'; put 'put ''Pj4yXSkrKEE8PDIpPj4yXT0wLEE9QSsxfDB9fXdoaWxlKDApOygwfChiPTB8bGooZ2UsQT0wfGFbKFI9bCsyMHwwKT4+Ml0sYykpKTwoMHxxKSYoMHxiKT4tMXx8UHIoOTQ4MzcsOTQ2ODEsNTE1LDk0ODE1KSwodz0wfGFbKDB8YVtwZT4+Ml0pKyhiPDwyKT4+Ml0pfHwodz0wfEFwKDB8YVtP''@;'; put 'put ''ZT4+Ml0sQSwuNSorX1tsKzI0Pj4zXSxiZSxiKSxhWygwfGFbcGU+PjJdKSsoYjw8Mik+PjJdPXcsdz0wfGFbKDB8YVtwZT4+Ml0pKyhiPDwyKT4+Ml0pLHA9MHxVayh3LGMsZixwLEc9bSsxfDApLGFbKDB8YVtwZT4+Ml0pKyhiPDwyKT4+Ml09cCwwfGFbKDB8YVtwZT4+Ml0pKyhiPDwyKT4+''@;'; put 'put ''Ml18fFByKDk0ODYwLDk0NjgxLDUxOSw5NDgxNSksQT0wfGFbKGM9bCs0MHwwKT4+Ml07ZG97aWYoMHxBKXtpZihEPTB8emsoMHxMdShBKSksMSE9KDB8YVtsPj4yXSkmJlByKDk0ODcxLDk0NjgxLDUyMyw5NDgxNSksbT0wfFprKDB8THUoMHxhW2M+PjJdKSksaz0rV3koMHxMdSgwfGFbYz4+''@;'; put 'put ''Ml0pKSwoMHwoYj0wfGxqKGdlLHc9MHxhW1I+PjJdLG0pKSk8KDB8cSkmKDB8Yik+LTF8fFByKDk0ODM3LDk0NjgxLDUyNyw5NDgxNSksKEE9MHxhWygwfGFbcGU+PjJdKSsoYjw8Mik+PjJdKXx8KEE9MHxBcCgwfGFbT2U+PjJdLHcsLjUqK19bbCsyND4+M10sYmUsYiksYVsoMHxhW3BlPj4y''@;'; put 'put ''XSkrKGI8PDIpPj4yXT1BLEE9MHxhWygwfGFbcGU+PjJdKSsoYjw8Mik+PjJdKSxPZT0wfFVrKEEsbSxrLEQsRyksYVsoMHxhW3BlPj4yXSkrKGI8PDIpPj4yXT1PZSwwfGFbKDB8YVtwZT4+Ml0pKyhiPDwyKT4+Ml0pe1dfKDB8YVtjPj4yXSwxMDYpLGFbYz4+Ml09MDticmVha31Qcig5NDg2''@;'; put 'put ''MCw5NDY4MSw1MzIsOTQ4MTUpfX13aGlsZSgwKTthW2w+PjJdPTErKDB8YVtsPj4yXSl9ZWxzZXtmb3IoYVtsPj4yXT0xLF9bbCs4Pj4zXT1mLGI9MHxRbihnZTw8MyksYVtsKzMyPj4yXT1iLHc9MHxhW09lPj4yXSxBPTA7ISgoMHxBKT49KDB8dykpOylfW2IrKEE8PDMpPj4zXT0rX1tjKyhB''@;'; put 'put ''PDwzKT4+M10sQT1BKzF8MDtpZihBPTB8cTcodyxmLGMscCksISgwfGFbKHc9bCs0MHwwKT4+Ml0pKXthW3c+PjJdPTB8R18oQSk7YnJlYWt9UHIoOTQ4MDcsOTQ2ODEsNTAyLDk0ODE1KX19d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBxNyhsLGMsZixwKXt2YXIgbSxBO2ZvcihsfD0w''@;'; put 'put ''LGM9K2MsZnw9MCxwfD0wLEE9MHxRbigzMiksX1tBPj4zXT1jLG09MHxRbihsPDwzKSxhW0ErOD4+Ml09bSxfW0ErMTY+PjNdPSsoMHxwKSxwPTA7ISgoMHxwKT49KDB8bCkpOylfW20rKHA8PDMpPj4zXT0rX1tmKyhwPDwzKT4+M10scD1wKzF8MDtyZXR1cm4gYVtBKzI0Pj4yXT0wLDB8QX1m''@;'; put 'put ''dW5jdGlvbiBsaihsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MCxtPTA7Zm9yKG09MDtwPWwrLTF8MCwhKCgwfGwpPD0wKTspbD1wLG09bTw8MXwxJiEoK19bZisocDw8Myk+PjNdLStfW2MrKHA8PDMpPj4zXTwwKTtyZXR1cm4gMHxtfWZ1bmN0aW9uIEFwKGwsYyxmLHAsbSl7dmFyIEEs''@;'; put 'put ''dyxiO2ZvcihtfD0wLEE9MHxhTChsfD0wLGN8PTAsZj0rZixwfD0wKSx3PTB8YVtBKzIwPj4yXSxiPS1mLHA9MCxjPW07ISgoMHxwKT49KDB8bCkpOylfWyhtPXcrKHA8PDMpfDApPj4zXT0rX1ttPj4zXSsoMD09KDEmY3wwKT9iOmYpLHA9cCsxfDAsYz0oMHxjKS8yfDA7cmV0dXJuIDB8QX1m''@;'; put 'put ''dW5jdGlvbiBldihsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MDtpZigwfChsfD0wKSl7aWYoYz0wfGFbbCsxNj4+Ml0sRnQoMHxhW2wrMjA+PjJdKSxGdCgwfGFbbCszMj4+Ml0pLEZ0KDB8YVtsKzQ4Pj4yXSksMHwocD0wfGFbKEE9bCszNnwwKT4+Ml0pKXtmb3IobT0xPDxjLGY9MCxjPXA7''@;'; put 'put ''ISgoMHxmKT49KDB8bSkpOylldigwfGFbYysoZjw8Mik+PjJdKSxmPWYrMXwwLGM9MHxhW0E+PjJdO0Z0KGMpfVdfKDB8YVtsKzQwPj4yXSwxMDYpLEZ0KGwpfX1mdW5jdGlvbiBZeShsKXtsfD0wO3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxx''@;'; put 'put ''PTAscGU9MCxnZT0wLGJlPTAsT2U9MDtlOmRve2lmKGwpe2ZvcihNPTB8YVtsKzIwPj4yXSxEPTB8YVtsKzI0Pj4yXSxmPTB8YVtsKzg+PjJdLFI9MHxhW2w+PjJdLHA9MHxhW2wrND4+Ml0sdz1sKzE2fDAsMSE9KDB8YVtsKzMyPj4yXSkmJlByKDk0OTE5LDk0OTQzLDc2LDk0OTU4KSxjPTB8''@;'; put 'put ''dWMocCxSLGYsMHxhW3c+PjJdLDEpLGFbYys4Pj4yXT1mLEc9MHxhW2MrMjA+PjJdLGs9MHxhW2MrMjQ+PjJdLGY9MDs7KXtpZigoMHxmKT4oMHxwKSl7Zj0wO2JyZWFrfWFbRysoZjw8Mik+PjJdPTAsZj1mKzF8MH10OmZvcig7Oyl7aWYoKDB8Zik+PSgwfFIpKXtmPTA7YnJlYWt9Zm9yKEE9''@;'; put 'put ''TSsoKG09ZisxfDApPDwyKXwwLGY9MHxhW00rKGY8PDIpPj4yXTs7KXtpZigoMHxmKT49KDB8YVtBPj4yXSkpe2Y9bTtjb250aW51ZSB0fWFbKGI9RysoMSsoMHxhW0QrKGY8PDIpPj4yXSk8PDIpfDApPj4yXT0xKygwfGFbYj4+Ml0pLGY9ZisxfDB9fWZvcig7ISgoMHxmKT49KDB8cCkpOylh''@;'; put 'put ''WyhBPUcrKChiPWYrMXwwKTw8Mil8MCk+PjJdPSgwfGFbQT4+Ml0pKygwfGFbRysoZjw8Mik+PjJdKSxmPWI7dDpkb3tzd2l0Y2goMHxhW3c+PjJdKXtjYXNlIDE6QT0wfGFbbCsyOD4+Ml0sbD0wfGFbYysyOD4+Ml0sbT0wO246Zm9yKDs7KXtpZigoMHxtKT49KDB8UikpYnJlYWsgdDtmb3Io''@;'; put 'put ''Yj1NKygodz1tKzF8MCk8PDIpfDAsZj0wfGFbTSsobTw8Mik+PjJdOzspe2lmKCgwfGYpPj0oMHxhW2I+PjJdKSl7bT13O2NvbnRpbnVlIG59YVtrKyhhW0crKGFbKGdlPUQrKGY8PDIpfDApPj4yXTw8Mik+PjJdPDwyKT4+Ml09bSxwZT0rX1tBKyhmPDwzKT4+M10sYVsoZ2U9RysoYVtnZT4+''@;'; put 'put ''Ml08PDIpfDApPj4yXT0xKyhxPTB8YVtnZT4+Ml0pLF9bbCsocTw8Myk+PjNdPXBlLGY9ZisxfDB9fWNhc2UgMjpBPTB8YVtsKzI4Pj4yXSxsPTB8YVtjKzI4Pj4yXSxtPTA7bjpmb3IoOzspe2lmKCgwfG0pPj0oMHxSKSlicmVhayB0O2ZvcihiPU0rKCh3PW0rMXwwKTw8Mil8MCxmPTB8YVtN''@;'; put 'put ''KyhtPDwyKT4+Ml07Oyl7aWYoKDB8Zik+PSgwfGFbYj4+Ml0pKXttPXc7Y29udGludWUgbn1hW2srKGFbRysoYVsoZ2U9RCsoZjw8Mil8MCk+PjJdPDwyKT4+Ml08PDIpPj4yXT1tLF9bbCsoKGJlPShxPTB8YVsoZ2U9RysoYVtnZT4+Ml08PDIpfDApPj4yXSk8PDEpPDwzKT4+M109K19bQSso''@;'; put 'put ''KE9lPWY8PDEpPDwzKT4+M10sX1tsKygoMXxiZSk8PDMpPj4zXT0rX1tBKygoMXxPZSk8PDMpPj4zXSxhW2dlPj4yXT1xKzEsZj1mKzF8MH19Y2FzZSA0OkE9MHxhW2wrMjg+PjJdLGw9MHxhW2MrMjg+PjJdLG09MDtuOmZvcig7Oyl7aWYoKDB8bSk+PSgwfFIpKWJyZWFrIHQ7Zm9yKGI9TSso''@;'; put 'put ''KHc9bSsxfDApPDwyKXwwLGY9MHxhW00rKG08PDIpPj4yXTs7KXtpZigoMHxmKT49KDB8YVtiPj4yXSkpe209dztjb250aW51ZSBufWFbaysoYVtHKyhhWyhnZT1EKyhmPDwyKXwwKT4+Ml08PDIpPj4yXTw8Mik+PjJdPW0sYmU9MHxhW0ErKGY8PDIpPj4yXSxhWyhnZT1HKyhhW2dlPj4yXTw8''@;'; put 'put ''Mil8MCk+PjJdPTErKE9lPTB8YVtnZT4+Ml0pLGFbbCsoT2U8PDIpPj4yXT1iZSxmPWYrMXwwfX1jYXNlIDg6bT0wO246Zm9yKDs7KXtpZigoMHxtKT49KDB8UikpYnJlYWsgdDtmb3IobD1NKygoQT1tKzF8MCk8PDIpfDAsZj0wfGFbTSsobTw8Mik+PjJdOzspe2lmKCgwfGYpPj0oMHxhW2w+''@;'; put 'put ''PjJdKSl7bT1BO2NvbnRpbnVlIG59YVsoYmU9RysoYVtEKyhmPDwyKT4+Ml08PDIpfDApPj4yXT0xKyhPZT0wfGFbYmU+PjJdKSxhW2srKE9lPDwyKT4+Ml09bSxmPWYrMXwwfX1kZWZhdWx0OlJhKGMpLGM9MDticmVhayBlfX13aGlsZSgwKTtmb3IoO2Y9cCstMXwwLCEoKDB8cCk8PTApOylh''@;'; put 'put ''W0crKHA8PDIpPj4yXT1hW0crKGY8PDIpPj4yXSxwPWY7YVtHPj4yXT0wfWVsc2UgYz0wfXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gUmEobCl7dmFyIGM9MDswfChsfD0wKSYmKDB8KGM9MHxhW2wrMjA+PjJdKSYmRnQoYyksMHwoYz0wfGFbbCsyND4+Ml0pJiZGdChjKSxGdCgwfGFb''@;'; put 'put ''bCsyOD4+Ml0pLEZ0KGwpKX1mdW5jdGlvbiB1YyhsLGMsZixwLG0pe3JldHVybiBmfD0wLG18PTAsbD0wfHNqKGx8PTAsY3w9MCxwfD0wLDB8ZnVuY3Rpb24gUWsobCl7c3dpdGNoKDB8KGx8PTApKXtjYXNlIDE6bD04O2JyZWFrO2Nhc2UgMjpsPTE2O2JyZWFrO2Nhc2UgNDpsPTQ7YnJlYWs7''@;'; put 'put ''ZGVmYXVsdDpsPTB9cmV0dXJuIDB8bH0ocCksbSksKDB8Zik+MCYmdWoobCxmKSwwfGx9ZnVuY3Rpb24gc2oobCxjLGYscCxtKXt2YXIgQTtyZXR1cm4gbHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wLEE9MHxRbig0NCksYVtBPj4yXT1sLGFbQSs0Pj4yXT1jLGFbQSs4Pj4yXT0wLGFbQSsxMj4+''@;'; put 'put ''Ml09MCxhW0ErMTY+PjJdPWYsYVtBKzQwPj4yXT1wLGw9Mj09KDB8bSk/MDowfFFuKDQrKGw8PDIpfDApLGFbQSsyMD4+Ml09bCxhW0ErMjQ+PjJdPTAsYVtBKzI4Pj4yXT0wLGFbQSszMj4+Ml09bSxhW0ErMzY+PjJdPTAsMHxBfWZ1bmN0aW9uIHVqKGwsYyl7Y3w9MDt2YXIgcCxtLHcsZj0w''@;'; put 'put ''LEE9MDtyZXR1cm4gdz0wfGFbMzIrKGx8PTApPj4yXSxhWyhtPWwrMjh8MCk+PjJdPTAscD0wfFFuKGY9Yzw8MiksMiE9KDB8dyk/KGFbbCsyND4+Ml09cCwwIT0oMHxjKSYoMHwoZj0wfGFbbCs0MD4+Ml0pKT4wJiYoQT00KSk6KGFbbCsyMD4+Ml09cCxhW2wrMjQ+PjJdPTB8UW4oZiksZj0w''@;'; put 'put ''fGFbbCs0MD4+Ml0sQT00KSw0PT0oMHxBKSYmKGFbbT4+Ml09MHxRbigwfEFyKGYsYykpKSxhW2wrMTI+PjJdPWMsMHxsfWZ1bmN0aW9uIGFoKGwsYyl7cmV0dXJuIDB8bGgobHw9MCxjfD0wKT9jPTB8dHYobCk6KGM9MHxZeShsKSk/KGw9MHx5cChsLGMpLFJhKGMpLGFbKGM9bCszNnwwKT4+''@;'; put 'put ''Ml09M3xhW2M+PjJdLGM9bCk6Yz0wLDB8Y31mdW5jdGlvbiBsaChsLGMpe2N8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MDtpZihsfD0wKWlmKDEhPSgwfGFbbCszMj4+Ml0pJiZQcig5NDkxOSw5''@;'; put 'put ''NDk0MywxODcsOTUwNzQpLDA9PSgyJihmPTB8YVsoYmU9bCszNnwwKT4+Ml0pfDApJiYwPT0oMSZmfDApfDFeKHE9MCE9KDB8YykpKWlmKCgwfGFbbD4+Ml0pPT0oMHxhW2wrND4+Ml0pJiYwIT0oMHwoT2U9MHxZeShsKSkpKXtmb3Ioaz0wfGFbbCsyMD4+Ml0sTT0wfGFbbCsyND4+Ml0sRD0w''@;'; put 'put ''fGFbT2UrMjA+PjJdLFI9MHxhW09lKzI0Pj4yXSxwZT0wfFFuKChHPTB8YVtsPj4yXSk8PDIpLGM9MDshKCgwfGMpPj0oMHxHKSk7KWFbcGUrKGM8PDIpPj4yXT0tMSxjPWMrMXwwO2U6ZG97c3dpdGNoKDB8KHE/ODowfGFbbCsxNj4+Ml0pKXtjYXNlIDE6Zm9yKEE9MHxhW2wrMjg+PjJdLHc9''@;'; put 'put ''MHxhW09lKzI4Pj4yXSxjPTA7Oyl7aWYoKDB8Yyk+KDB8Rykpe2Y9MDticmVha31pZigoMHxhW2srKGM8PDIpPj4yXSkhPSgwfGFbRCsoYzw8Mik+PjJdKSl7Yz0wO2JyZWFrIGV9Yz1jKzF8MH10OmZvcig7Oyl7aWYoKDB8Zik+PSgwfEcpKXtnZT01NDticmVhayBlfWZvcihsPWsrKChtPWYr''@;'; put 'put ''MXwwKTw8Mil8MCxjPTB8YVsocD1rKyhmPDwyKXwwKT4+Ml07ISgoMHxjKT49KDB8YVtsPj4yXSkpOylhW3BlKyhhW00rKGM8PDIpPj4yXTw8Mik+PjJdPWMsYz1jKzF8MDtmb3IobD0wfGFbRCsobTw8Mik+PjJdLGY9Yz0wfGFbRCsoZjw8Mik+PjJdOyEoKDB8Zik+PSgwfGwpKTspe2lmKCgw''@;'; put 'put ''fGFbcGUrKGFbUisoZjw8Mik+PjJdPDwyKT4+Ml0pPCgwfGFbcD4+Ml0pKXtjPTA7YnJlYWsgZX1mPWYrMXwwfWZvcig7Oyl7aWYoKDB8Yyk+PSgwfGwpKXtmPW07Y29udGludWUgdH1pZigoKExlPStfW3crKGM8PDMpPj4zXS0rX1tBKyhhW3BlKyhhW1IrKGM8PDIpPj4yXTw8Mik+PjJdPDwz''@;'; put 'put ''KT4+M10pPj0wP0xlOi1MZSk+MWUtNyl7Yz0wO2JyZWFrIGV9Yz1jKzF8MH19Y2FzZSAyOmZvcih3PTB8YVtsKzI4Pj4yXSxiPTB8YVtPZSsyOD4+Ml0sYz0wOzspe2lmKCgwfGMpPigwfEcpKXtmPTA7YnJlYWt9aWYoKDB8YVtrKyhjPDwyKT4+Ml0pIT0oMHxhW0QrKGM8PDIpPj4yXSkpe2M9''@;'; put 'put ''MDticmVhayBlfWM9YysxfDB9dDpmb3IoOzspe2lmKCgwfGYpPj0oMHxHKSl7Z2U9NTQ7YnJlYWsgZX1mb3IobD1rKygoQT1mKzF8MCk8PDIpfDAsYz0wfGFbKG09aysoZjw8Mil8MCk+PjJdOyEoKDB8Yyk+PSgwfGFbbD4+Ml0pKTspYVtwZSsoYVtNKyhjPDwyKT4+Ml08PDIpPj4yXT1jLGM9''@;'; put 'put ''YysxfDA7Zm9yKHA9MHxhW0QrKEE8PDIpPj4yXSxjPWY9MHxhW0QrKGY8PDIpPj4yXTs7KXtpZigoMHxjKT49KDB8cCkpe2M9ZjticmVha31pZigoMHxhW3BlKyhhW1IrKGM8PDIpPj4yXTw8Mik+PjJdKTwoMHxhW20+PjJdKSl7Yz0wO2JyZWFrIGV9Yz1jKzF8MH1mb3IoOzspe2lmKCgwfGMp''@;'; put 'put ''Pj0oMHxwKSl7Zj1BO2NvbnRpbnVlIHR9aWYoKChMZT0rX1tiKygoZj1jPDwxKTw8Myk+PjNdLStfW3crKChsPWFbcGUrKGFbUisoYzw8Mik+PjJdPDwyKT4+Ml08PDEpPDwzKT4+M10pPj0wP0xlOi1MZSk+MWUtNyl7Yz0wO2JyZWFrIGV9aWYoKChMZT0rX1tiKygoMXxmKTw8Myk+PjNdLStf''@;'; put 'put ''W3crKCgxfGwpPDwzKT4+M10pPj0wP0xlOi1MZSk+MWUtNyl7Yz0wO2JyZWFrIGV9Yz1jKzF8MH19Y2FzZSA0Om09MHxhW2wrMjg+PjJdLEE9MHxhW09lKzI4Pj4yXSxjPTA7dDpmb3IoOzspe2lmKCgwfGMpPj0oMHxHKSl7Z2U9NTQ7YnJlYWsgZX1mb3IobD1rKygodz1jKzF8MCk8PDIpfDAs''@;'; put 'put ''Zj0wfGFbKHA9aysoYzw8Mil8MCk+PjJdOyEoKDB8Zik+PSgwfGFbbD4+Ml0pKTspYVtwZSsoYVtNKyhmPDwyKT4+Ml08PDIpPj4yXT1mLGY9ZisxfDA7Zm9yKGw9MHxhW0QrKHc8PDIpPj4yXSxmPWM9MHxhW0QrKGM8PDIpPj4yXTshKCgwfGYpPj0oMHxsKSk7KXtpZigoMHxhW3BlKyhhW1Ir''@;'; put 'put ''KGY8PDIpPj4yXTw8Mik+PjJdKTwoMHxhW3A+PjJdKSl7Yz0wO2JyZWFrIGV9Zj1mKzF8MH1mb3IoOzspe2lmKCgwfGMpPj0oMHxsKSl7Yz13O2NvbnRpbnVlIHR9aWYoKDB8YVtBKyhjPDwyKT4+Ml0pIT0oMHxhW20rKGFbcGUrKGFbUisoYzw8Mik+PjJdPDwyKT4+Ml08PDIpPj4yXSkpe2M9''@;'; put 'put ''MDticmVhayBlfWM9YysxfDB9fWNhc2UgODpsPTA7dDpmb3IoOzspe2lmKCgwfGwpPj0oMHxHKSl7Z2U9NTQ7YnJlYWsgZX1mb3IoZj1rKygobT1sKzF8MCk8PDIpfDAsYz0wfGFbKHA9aysobDw8Mil8MCk+PjJdOyEoKDB8Yyk+PSgwfGFbZj4+Ml0pKTspYVtwZSsoYVtNKyhjPDwyKT4+Ml08''@;'; put 'put ''PDIpPj4yXT1jLGM9YysxfDA7Zm9yKGY9MHxhW0QrKG08PDIpPj4yXSxjPTB8YVtEKyhsPDwyKT4+Ml07Oyl7aWYoKDB8Yyk+PSgwfGYpKXtsPW07Y29udGludWUgdH1pZigoMHxhW3BlKyhhW1IrKGM8PDIpPj4yXTw8Mik+PjJdKTwoMHxhW3A+PjJdKSl7Yz0wO2JyZWFrIGV9Yz1jKzF8MH19''@;'; put 'put ''ZGVmYXVsdDpjPTB9fXdoaWxlKDApOzU0PT0oMHxnZSkmJihmPTB8YVtiZT4+Ml0scT9jPTE6KGFbYmU+PjJdPTJ8ZixjPTMpLGFbYmU+PjJdPWN8ZixjPTEpLEZ0KHBlKSxSYShPZSl9ZWxzZSBjPTA7ZWxzZSBjPTE7ZWxzZSBjPTA7cmV0dXJuIDB8Y31mdW5jdGlvbiB0dihsKXt2YXIgYz0w''@;'; put 'put ''LGY9MCxwPTAsbT0wO3JldHVybihsfD0wKT8oYz0wfGNqKDB8YVtsPj4yXSwwfGFbbCs0Pj4yXSwwfGFbKHA9bCs4fDApPj4yXSwwfGFbbCsxNj4+Ml0sMHxhWyhtPWwrNDB8MCk+PjJdLDB8YVtsKzMyPj4yXSksZ28oMHxhW2MrMjA+PjJdLDB8YVsoZj1sKzIwfDApPj4yXSw0KyhhW2w+PjJd''@;'; put 'put ''PDwyKXwwKSxnbygwfGFbYysyND4+Ml0sMHxhW2wrMjQ+PjJdLGFbKDB8YVtmPj4yXSkrKGFbbD4+Ml08PDIpPj4yXTw8MnwwKSwwfChmPTB8YVtsKzI4Pj4yXSkmJmdvKDB8YVtjKzI4Pj4yXSwwfGYsMHxBcigwfGFbcD4+Ml0sMHxhW20+PjJdKSksYVtjKzM2Pj4yXT1hW2wrMzY+PjJdLGFb''@;'; put 'put ''Yys4Pj4yXT1hW3A+PjJdKTpjPTAsMHxjfWZ1bmN0aW9uIHlwKGwsYyl7dmFyIEcscSxnZSxiZSxPZSxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAscGU9MCxMZT0wLFJlPTA7aWYocT0wfGFbMjArKGx8PTApPj4yXSxnZT0wfGFbbCsyND4+Ml0sYmU9MHxhWzIwKyhj''@;'; put 'put ''fD0wKT4+Ml0sT2U9MHxhW2MrMjQ+PjJdLDAhPSgwfGwpJjAhPSgwfGMpfHxQcig5NDk4MSw5NDk0Myw5NzMsOTQ5ODgpLDE9PSgwfChwZT0wfGFbbCszMj4+Ml0pKSYmKDB8cGUpPT0oMHxhW2MrMzI+PjJdKXx8UHIoOTUwMDUsOTQ5NDMsOTc0LDk0OTg4KSwoMHwoZj0wfGFbKHA9bCsxNnww''@;'; put 'put ''KT4+Ml0pKSE9KDB8YVtjKzE2Pj4yXSkmJlByKDk1MDU1LDk0OTQzLDk3NSw5NDk4OCksbT0wfGFbbCs0Pj4yXSwoMHwoRz0wfGFbbD4+Ml0pKT09KDB8YVtjPj4yXSkmJigwfG0pPT0oMHxhW2MrND4+Ml0pJiYwfChMZT0wfHVjKEcsbSwoMHxhW2MrOD4+Ml0pKygwfGFbbCs4Pj4yXSl8MCxm''@;'; put 'put ''LDEpKSl7Zm9yKEQ9MHxhW0xlKzIwPj4yXSxSPTB8YVtMZSsyND4+Ml0scGU9MHxRbihtPDwyKSxmPTA7ISgoMHxmKT49KDB8bSkpOylhW3BlKyhmPDwyKT4+Ml09LTEsZj1mKzF8MDthW0Q+PjJdPTA7ZTpkb3tzd2l0Y2goMHxhW3A+PjJdKXtjYXNlIDE6Zm9yKE09MHxhW2wrMjg+PjJdLHc9''@;'; put 'put ''MHxhW2MrMjg+PjJdLGI9MHxhW0xlKzI4Pj4yXSxmPTAsbT0wOzspe2lmKCgwfG0pPj0oMHxHKSlicmVhayBlO2ZvcihwPXErKChrPW0rMXwwKTw8Mil8MCxsPTB8YVtxKyhtPDwyKT4+Ml07ISgoMHxsKT49KDB8YVtwPj4yXSkpOylhW3BlKyhhWyhBPWdlKyhsPDwyKXwwKT4+Ml08PDIpPj4y''@;'; put 'put ''XT1mLGFbUisoZjw8Mik+PjJdPWFbQT4+Ml0sX1tiKyhmPDwzKT4+M109K19bTSsobDw8Myk+PjNdLGw9bCsxfDAsZj1mKzF8MDtmb3IoYz1iZSsoazw8Mil8MCxBPUQrKG08PDIpfDAsbT0wfGFbYmUrKG08PDIpPj4yXTshKCgwfG0pPj0oMHxhW2M+PjJdKSk7KSgwfChwPTB8YVtwZSsoKGw9''@;'; put 'put ''MHxhW09lKyhtPDwyKT4+Ml0pPDwyKT4+Ml0pKTwoMHxhW0E+PjJdKT8oYVtSKyhmPDwyKT4+Ml09bCxfW2IrKGY8PDMpPj4zXT0rX1t3KyhtPDwzKT4+M10sZj1mKzF8MCk6X1socD1iKyhwPDwzKXwwKT4+M109K19bcD4+M10rICtfW3crKG08PDMpPj4zXSxtPW0rMXwwO2FbRCsoazw8Mik+''@;'; put 'put ''PjJdPWYsbT1rfWNhc2UgMjpmb3IoTT0wfGFbbCsyOD4+Ml0saz0wfGFbYysyOD4+Ml0sdz0wfGFbTGUrMjg+PjJdLG09MCxmPTA7Oyl7aWYoKDB8bSk+PSgwfEcpKWJyZWFrIGU7Zm9yKHA9cSsoKGI9bSsxfDApPDwyKXwwLGw9MHxhW3ErKG08PDIpPj4yXTshKCgwfGwpPj0oMHxhW3A+PjJd''@;'; put 'put ''KSk7KWFbcGUrKGFbKGM9Z2UrKGw8PDIpfDApPj4yXTw8Mik+PjJdPWYsYVtSKyhmPDwyKT4+Ml09YVtjPj4yXSxfW3crKChBPWY8PDEpPDwzKT4+M109K19bTSsoKGM9bDw8MSk8PDMpPj4zXSxfW3crKCgxfEEpPDwzKT4+M109K19bTSsoKDF8Yyk8PDMpPj4zXSxsPWwrMXwwLGY9ZisxfDA7''@;'; put 'put ''Zm9yKGM9YmUrKGI8PDIpfDAsQT1EKyhtPDwyKXwwLG09MHxhW2JlKyhtPDwyKT4+Ml07ISgoMHxtKT49KDB8YVtjPj4yXSkpOykoMHwocD0wfGFbcGUrKChsPTB8YVtPZSsobTw8Mik+PjJdKTw8Mik+PjJdKSk8KDB8YVtBPj4yXSk/KGFbUisoZjw8Mik+PjJdPWwsX1t3KygocD1mPDwxKTw8''@;'; put 'put ''Myk+PjNdPStfW2srKChsPW08PDEpPDwzKT4+M10sX1t3KygoMXxwKTw8Myk+PjNdPStfW2srKCgxfGwpPDwzKT4+M10sZj1mKzF8MCk6KF9bKFJlPXcrKChwPDw9MSk8PDMpfDApPj4zXT0rX1tSZT4+M10rICtfW2srKChsPW08PDEpPDwzKT4+M10sX1socD13KygoMXxwKTw8Myl8MCk+PjNd''@;'; put 'put ''PStfW3A+PjNdKyArX1trKygoMXxsKTw8Myk+PjNdKSxtPW0rMXwwO2FbRCsoYjw8Mik+PjJdPWYsbT1ifWNhc2UgNDpmb3IoTT0wfGFbbCsyOD4+Ml0sdz0wfGFbYysyOD4+Ml0sYj0wfGFbTGUrMjg+PjJdLG09MCxmPTA7Oyl7aWYoKDB8bSk+PSgwfEcpKWJyZWFrIGU7Zm9yKHA9cSsoKGs9''@;'; put 'put ''bSsxfDApPDwyKXwwLGw9MHxhW3ErKG08PDIpPj4yXTshKCgwfGwpPj0oMHxhW3A+PjJdKSk7KWFbcGUrKGFbKFJlPWdlKyhsPDwyKXwwKT4+Ml08PDIpPj4yXT1mLGFbUisoZjw8Mik+PjJdPWFbUmU+PjJdLGFbYisoZjw8Mik+PjJdPWFbTSsobDw8Mik+PjJdLGw9bCsxfDAsZj1mKzF8MDtm''@;'; put 'put ''b3IoYz1iZSsoazw8Mil8MCxBPUQrKG08PDIpfDAsbT0wfGFbYmUrKG08PDIpPj4yXTshKCgwfG0pPj0oMHxhW2M+PjJdKSk7KSgwfChwPTB8YVtwZSsoKGw9MHxhW09lKyhtPDwyKT4+Ml0pPDwyKT4+Ml0pKTwoMHxhW0E+PjJdKT8oYVtSKyhmPDwyKT4+Ml09bCxhW2IrKGY8PDIpPj4yXT1h''@;'; put 'put ''W3crKG08PDIpPj4yXSxmPWYrMXwwKTphWyhSZT1iKyhwPDwyKXwwKT4+Ml09KDB8YVtSZT4+Ml0pKygwfGFbdysobTw8Mik+PjJdKSxtPW0rMXwwO2FbRCsoazw8Mik+PjJdPWYsbT1rfWNhc2UgODpmb3IoZj0wLG09MDs7KXtpZigoMHxtKT49KDB8RykpYnJlYWsgZTtmb3IocD1xKygodz1t''@;'; put 'put ''KzF8MCk8PDIpfDAsbD0wfGFbcSsobTw8Mik+PjJdOyEoKDB8bCk+PSgwfGFbcD4+Ml0pKTspYVtwZSsoYVsoUmU9Z2UrKGw8PDIpfDApPj4yXTw8Mik+PjJdPWYsYVtSKyhmPDwyKT4+Ml09YVtSZT4+Ml0sZj1mKzF8MCxsPWwrMXwwO2ZvcihjPWJlKyh3PDwyKXwwLEE9RCsobTw8Mil8MCxw''@;'; put 'put ''PTB8YVtiZSsobTw8Mik+PjJdOyEoKDB8cCk+PSgwfGFbYz4+Ml0pKTspKDB8YVtwZSsoKGw9MHxhW09lKyhwPDwyKT4+Ml0pPDwyKT4+Ml0pPCgwfGFbQT4+Ml0pJiYoYVtSKyhmPDwyKT4+Ml09bCxmPWYrMXwwKSxwPXArMXwwO2FbRCsodzw8Mik+PjJdPWYsbT13fWRlZmF1bHQ6Zj0wfX13''@;'; put 'put ''aGlsZSgwKTtyZXR1cm4gYVtMZSs4Pj4yXT1mLEZ0KHBlKSwwfExlfXJldHVybiAwfWZ1bmN0aW9uIGNqKGwsYyxmLHAsbSxBKXtyZXR1cm4gZnw9MCxsPTB8c2oobHw9MCxjfD0wLHB8PTAsbXw9MCxBfD0wKSwoMHxmKT4wJiZ1aihsLGYpLDB8bH1mdW5jdGlvbiBKayhsLGMpe3ZhciBmPTA7''@;'; put 'put ''cmV0dXJuIDB8bGgobHw9MCxjfD0wKT8oYz0wfHR2KGwpLGY9NSk6KGM9MHxZeShsKSk/KGY9MHx5cChsLGMpLFJhKGMpLGFbKGM9ZiszNnwwKT4+Ml09M3xhW2M+PjJdLGM9ZixmPTUpOmM9MCw1PT0oMHxmKSYmKGM9MHx3cChjKSksMHxjfWZ1bmN0aW9uIHdwKGwpe2x8PTA7dmFyIGM9MCxm''@;'; put 'put ''PTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MDtlOmRve2lmKGwpe009MHxhW2wrMjQ+PjJdLGY9MHxhWyhrPTB8YVtsKzIwPj4yXSk+PjJdO3Q6ZG97c3dpdGNoKDB8YVtsKzE2Pj4yXSl7Y2FzZSAxOmZvcihiPTB8YVtsKzI4Pj4yXSx3PTAsYz0wOzspe2lmKCgwfHcpPj0oMHxh''@;'; put 'put ''W2w+PjJdKSlicmVhayB0O2ZvcihBPWsrKChtPXcrMXwwKTw8Mil8MDshKCgwfGYpPj0oMHwocD0wfGFbQT4+Ml0pKSk7KSgwfChwPTB8YVtNKyhmPDwyKT4+Ml0pKSE9KDB8dykmJihhW00rKGM8PDIpPj4yXT1wLF9bYisoYzw8Myk+PjNdPStfW2IrKGY8PDMpPj4zXSxjPWMrMXwwKSxmPWYr''@;'; put 'put ''MXwwO2FbQT4+Ml09Yyx3PW0sZj1wfWNhc2UgMjpmb3IoYj0wfGFbbCsyOD4+Ml0sdz0wLGM9MDs7KXtpZigoMHx3KT49KDB8YVtsPj4yXSkpYnJlYWsgdDtmb3IoQT1rKygobT13KzF8MCk8PDIpfDA7ISgoMHxmKT49KDB8KHA9MHxhW0E+PjJdKSkpOykoMHwocD0wfGFbTSsoZjw8Mik+PjJd''@;'; put 'put ''KSkhPSgwfHcpJiYoYVtNKyhjPDwyKT4+Ml09cCxfW2IrKChwPWM8PDEpPDwzKT4+M109K19bYisoKEQ9Zjw8MSk8PDMpPj4zXSxfW2IrKCgxfHApPDwzKT4+M109K19bYisoKDF8RCk8PDMpPj4zXSxjPWMrMXwwKSxmPWYrMXwwO2FbQT4+Ml09Yyx3PW0sZj1wfWNhc2UgNDpmb3IoYj0wfGFb''@;'; put 'put ''bCsyOD4+Ml0sdz0wLGM9MDs7KXtpZigoMHx3KT49KDB8YVtsPj4yXSkpYnJlYWsgdDtmb3IoQT1rKygobT13KzF8MCk8PDIpfDA7ISgoMHxmKT49KDB8KHA9MHxhW0E+PjJdKSkpOykoMHwocD0wfGFbTSsoZjw8Mik+PjJdKSkhPSgwfHcpJiYoYVtNKyhjPDwyKT4+Ml09cCxhW2IrKGM8PDIp''@;'; put 'put ''Pj4yXT1hW2IrKGY8PDIpPj4yXSxjPWMrMXwwKSxmPWYrMXwwO2FbQT4+Ml09Yyx3PW0sZj1wfWNhc2UgODpmb3Iodz0wLGM9MDs7KXtpZigoMHx3KT49KDB8YVtsPj4yXSkpYnJlYWsgdDtmb3IoQT1rKygobT13KzF8MCk8PDIpfDA7ISgoMHxmKT49KDB8KHA9MHxhW0E+PjJdKSkpOykoMHwo''@;'; put 'put ''cD0wfGFbTSsoZjw8Mik+PjJdKSkhPSgwfHcpJiYoYVtNKyhjPDwyKT4+Ml09cCxjPWMrMXwwKSxmPWYrMXwwO2FbQT4+Ml09Yyx3PW0sZj1wfWRlZmF1bHQ6bD0wO2JyZWFrIGV9fXdoaWxlKDApO2FbbCs4Pj4yXT1jfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gZmoo''@;'; put 'put ''bCl7cmV0dXJuIDI9PSgwfGFbMzIrKGx8PTApPj4yXSk/MHxvNCgwfGFbbCs4Pj4yXSwwfGFbbD4+Ml0sMHxhW2wrND4+Ml0sMHxhW2wrMjA+PjJdLDB8YVtsKzI0Pj4yXSwwfGFbbCsyOD4+Ml0sMHxhW2wrMTY+PjJdLDB8YVtsKzQwPj4yXSk6KFByKDk1MTAwLDk0OTQzLDgwMyw5NTEyNiks''@;'; put 'put ''MCl9ZnVuY3Rpb24gbzQobCxjLGYscCxtLEEsdyxiKXtyZXR1cm4gMHxmdW5jdGlvbiBiQShsLGMsZixwLG0sQSx3LGIsayl7cHw9MCxtfD0wLEF8PTAsd3w9MCxifD0wLGt8PTA7dmFyIE9lLExlLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTA7Zm9yKCgwfChsfD0wKSk+LTEm''@;'; put 'put ''KDB8KGN8PTApKT4wJigwfChmfD0wKSk+MHx8UHIoOTUxNjIsOTQ5NDMsODQzLDk1MTg4KSwoYj0wfGNqKGMsZixsLHcsYiwxKSl8fFByKDk1MjMzLDk0OTQzLDg0Nyw5NTE4OCksTGU9MHxhW2IrMjA+PjJdLE9lPTB8YVtiKzI0Pj4yXSxEPWMrMXwwLE09MDsoMHxNKSE9KDB8RCk7KWFbTGUr''@;'; put 'put ''KE08PDIpPj4yXT0wLE09TSsxfDA7ZTpkb3tzd2l0Y2goMHx3KXtjYXNlIDE6Zm9yKHc9MHxhW2IrMjg+PjJdLE09MDs7KXtpZigoMHxNKT49KDB8bCkpe3BlPTA7YnJlYWt9aWYoISgoMHwoRD0wfGFbcCsoTTw8Mik+PjJdKSk+LTEmKDB8RCk8KDB8YykpKXtiZT0xMzticmVha31pZighKCgw''@;'; put 'put ''fChnZT0wfGFbbSsoTTw8Mik+PjJdKSk+LTEmKDB8Z2UpPCgwfGYpKSl7YmU9MTM7YnJlYWt9YVsoZ2U9TGUrKEQrMTw8Mil8MCk+PjJdPTErKDB8YVtnZT4+Ml0pLE09TSsxfDB9Zm9yKDEzPT0oMHxiZSkmJlByKDEzODM5NCw5NDk0Myw4NjIsOTUxODgpOzspe2lmKCgwfHBlKT09KDB8Yykp''@;'; put 'put ''e009MDticmVha31hWyhmPUxlKygoYmU9cGUrMXwwKTw8Mil8MCk+PjJdPSgwfGFbZj4+Ml0pKygwfGFbTGUrKHBlPDwyKT4+Ml0pLHBlPWJlfWZvcig7KDB8TSkhPSgwfGwpOylfW3crKChiZT0wfGFbKGdlPUxlKyhhW3ArKE08PDIpPj4yXTw8Mil8MCk+PjJdKTw8Myk+PjNdPStfW0ErKE08''@;'; put 'put ''PDMpPj4zXSxmPTB8YVttKyhNPDwyKT4+Ml0sYVtnZT4+Ml09YmUrMSxhW09lKyhiZTw8Mik+PjJdPWYsTT1NKzF8MDtmb3IoOzspe2lmKCgwfGMpPD0wKWJyZWFrIGU7YVtMZSsoYzw8Mik+PjJdPWFbTGUrKChtPWMrLTF8MCk8PDIpPj4yXSxjPW19Y2FzZSAyOmZvcih3PTB8YVtiKzI4Pj4y''@;'; put 'put ''XSxNPTA7Oyl7aWYoKDB8TSk+PSgwfGwpKXtnZT0wO2JyZWFrfWlmKCEoKDB8KEQ9MHxhW3ArKE08PDIpPj4yXSkpPi0xJigwfEQpPCgwfGMpKSl7YmU9MjU7YnJlYWt9aWYoISgoMHwocGU9MHxhW20rKE08PDIpPj4yXSkpPi0xJigwfHBlKTwoMHxmKSkpe2JlPTI1O2JyZWFrfWFbKHBlPUxl''@;'; put 'put ''KyhEKzE8PDIpfDApPj4yXT0xKygwfGFbcGU+PjJdKSxNPU0rMXwwfWZvcigyNT09KDB8YmUpJiZQcigxMzgzOTQsOTQ5NDMsODgwLDk1MTg4KTs7KXtpZigoMHxnZSk9PSgwfGMpKXtNPTA7YnJlYWt9YVsoZj1MZSsoKGJlPWdlKzF8MCk8PDIpfDApPj4yXT0oMHxhW2Y+PjJdKSsoMHxhW0xl''@;'; put 'put ''KyhnZTw8Mik+PjJdKSxnZT1iZX1mb3IoOygwfE0pIT0oMHxsKTspX1t3KygoZj0oYmU9MHxhWyhnZT1MZSsoYVtwKyhNPDwyKT4+Ml08PDIpfDApPj4yXSk8PDEpPDwzKT4+M109K19bQT4+M10sX1t3KygoMXxmKTw8Myk+PjNdPStfW0ErOD4+M10sZj0wfGFbbSsoTTw8Mik+PjJdLGFbZ2U+''@;'; put 'put ''PjJdPWJlKzEsYVtPZSsoYmU8PDIpPj4yXT1mLEE9QSsxNnwwLE09TSsxfDA7Zm9yKDs7KXtpZigoMHxjKTw9MClicmVhayBlO2FbTGUrKGM8PDIpPj4yXT1hW0xlKygobT1jKy0xfDApPDwyKT4+Ml0sYz1tfWNhc2UgNDpmb3Iodz0wfGFbYisyOD4+Ml0sTT0wOzspe2lmKCgwfE0pPj0oMHxs''@;'; put 'put ''KSl7cT0wO2JyZWFrfWlmKCEoKDB8KEQ9MHxhW3ArKE08PDIpPj4yXSkpPi0xJigwfEQpPCgwfGMpKSl7YmU9Mzc7YnJlYWt9aWYoISgoMHwoZ2U9MHxhW20rKE08PDIpPj4yXSkpPi0xJigwfGdlKTwoMHxmKSkpe2JlPTM3O2JyZWFrfWFbKGdlPUxlKyhEKzE8PDIpfDApPj4yXT0xKygwfGFb''@;'; put 'put ''Z2U+PjJdKSxNPU0rMXwwfWZvcigzNz09KDB8YmUpJiZQcigxMzgzOTQsOTQ5NDMsODk5LDk1MTg4KTs7KXtpZigoMHxxKT09KDB8Yykpe009MDticmVha31hWyhmPUxlKygoYmU9cSsxfDApPDwyKXwwKT4+Ml09KDB8YVtmPj4yXSkrKDB8YVtMZSsocTw8Mik+PjJdKSxxPWJlfWZvcig7KDB8''@;'; put 'put ''TSkhPSgwfGwpOylhW3crKGFbTGUrKGFbKGdlPXArKE08PDIpfDApPj4yXTw8Mik+PjJdPDwyKT4+Ml09YVtBKyhNPDwyKT4+Ml0sZj0wfGFbbSsoTTw8Mik+PjJdLGFbKGdlPUxlKyhhW2dlPj4yXTw8Mil8MCk+PjJdPTErKGJlPTB8YVtnZT4+Ml0pLGFbT2UrKGJlPDwyKT4+Ml09ZixNPU0r''@;'; put 'put ''MXwwO2Zvcig7Oyl7aWYoKDB8Yyk8PTApYnJlYWsgZTthW0xlKyhjPDwyKT4+Ml09YVtMZSsoKG09YystMXwwKTw8Mik+PjJdLGM9bX1jYXNlIDg6Zm9yKEE9MDs7KXtpZigoMHxBKT49KDB8bCkpe1I9MDticmVha31pZighKCgwfChNPTB8YVtwKyhBPDwyKT4+Ml0pKT4tMSYoMHxNKTwoMHxj''@;'; put 'put ''KSkpe2JlPTQ4O2JyZWFrfWlmKCEoKDB8KGdlPTB8YVttKyhBPDwyKT4+Ml0pKT4tMSYoMHxnZSk8KDB8ZikpKXtiZT00ODticmVha31hWyhnZT1MZSsoTSsxPDwyKXwwKT4+Ml09MSsoMHxhW2dlPj4yXSksQT1BKzF8MH1mb3IoNDg9PSgwfGJlKSYmUHIoMTM4Mzk0LDk0OTQzLDkxNSw5NTE4''@;'; put 'put ''OCk7Oyl7aWYoKDB8Uik9PSgwfGMpKXtBPTA7YnJlYWt9YVsoZj1MZSsoKGJlPVIrMXwwKTw8Mil8MCk+PjJdPSgwfGFbZj4+Ml0pKygwfGFbTGUrKFI8PDIpPj4yXSksUj1iZX1mb3IoOygwfEEpIT0oMHxsKTspZj0wfGFbbSsoQTw8Mik+PjJdLGFbKGdlPUxlKyhhW3ArKEE8PDIpPj4yXTw8''@;'; put 'put ''Mil8MCk+PjJdPTErKGJlPTB8YVtnZT4+Ml0pLGFbT2UrKGJlPDwyKT4+Ml09ZixBPUErMXwwO2Zvcig7Oyl7aWYoKDB8Yyk8PTApYnJlYWsgZTthW0xlKyhjPDwyKT4+Ml09YVtMZSsoKG09YystMXwwKTw8Mik+PjJdLGM9bX1jYXNlIDE2OmZvcihNPTA7Oyl7aWYoKDB8TSk+PSgwfGwpKXtH''@;'; put 'put ''PTA7YnJlYWt9aWYoISgoMHwoRD0wfGFbcCsoTTw8Mik+PjJdKSk+LTEmKDB8RCk8KDB8YykpKXtiZT01OTticmVha31pZighKCgwfChnZT0wfGFbbSsoTTw8Mik+PjJdKSk+LTEmKDB8Z2UpPCgwfGYpKSl7YmU9NTk7YnJlYWt9YVsoZ2U9TGUrKEQrMTw8Mil8MCk+PjJdPTErKDB8YVtnZT4+''@;'; put 'put ''Ml0pLE09TSsxfDB9Zm9yKDU5PT0oMHxiZSkmJlByKDEzODM5NCw5NDk0Myw5MzAsOTUxODgpOygwfEcpIT0oMHxjKTspYVsoZj1MZSsoKGJlPUcrMXwwKTw8Mil8MCk+PjJdPSgwfGFbZj4+Ml0pKygwfGFbTGUrKEc8PDIpPj4yXSksRz1iZTtmb3IoZ28oMHxhW2IrMjg+PjJdLDB8QSwwfEFy''@;'; put 'put ''KDB8YVtiKzQwPj4yXSxsKSksQT0wOygwfEEpIT0oMHxsKTspZj0wfGFbbSsoQTw8Mik+PjJdLGFbKGdlPUxlKyhhW3ArKEE8PDIpPj4yXTw8Mil8MCk+PjJdPTErKGJlPTB8YVtnZT4+Ml0pLGFbT2UrKGJlPDwyKT4+Ml09ZixBPUErMXwwO2Zvcig7Oyl7aWYoKDB8Yyk8PTApYnJlYWsgZTth''@;'; put 'put ''W0xlKyhjPDwyKT4+Ml09YVtMZSsoKG09YystMXwwKTw8Mik+PjJdLGM9bX1kZWZhdWx0OlByKDEzODM5NCw5NDk0Myw5NDQsOTUxODgpfX13aGlsZSgwKTtyZXR1cm4gYVtMZT4+Ml09MCxhW2IrOD4+Ml09bCxrJiYoYj0wfGZ1bmN0aW9uIFhmKGwsYyl7Y3w9MDt2YXIgT2UsTGUsZj0wLHA9''@;'; put 'put ''MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsUmU9MCxIZT0wO09lPTB8YVsyMCsobHw9MCk+PjJdLExlPTB8YVtsKzI0Pj4yXSxwPTB8YVtsKzE2Pj4yXSxnZT0wfGFbbCs0Pj4yXTtlOmRve2lmKGMpe2ZvcihSPTB8UW4oRD1nZTw8Miks''@;'; put 'put ''Zj0wOyEoKDB8Zik+PSgwfGdlKSk7KWFbUisoZjw8Mik+PjJdPS0xLGY9ZisxfDA7dDpkb3tzd2l0Y2goMHxwKXtjYXNlIDE6az0wfGFbbCsyOD4+Ml0sbT0wLHA9MHxhW09lPj4yXSxmPTA7bjpmb3IoOzspe2lmKCgwfGYpPj0oMHxhW2w+PjJdKSl7UmU9bSxIZT1SO2JyZWFrIHR9Zm9yKEQ9''@;'; put 'put ''T2UrKChNPWYrMXwwKTw8Mil8MCx3PU9lKyhmPDwyKXwwLGY9bTshKCgwfHApPj0oMHwoYz0wfGFbRD4+Ml0pKSk7KXtpZigoMHwoQT0wfGFbUisoKG09MHxhWyhjPUxlKyhwPDwyKXwwKT4+Ml0pPDwyKT4+Ml0pKTwoMHxhW3c+PjJdKSlhW0xlKyhmPDwyKT4+Ml09bSxfW2srKGY8PDMpPj4z''@;'; put 'put ''XT0rX1trKyhwPDwzKT4+M10sYVtSKyhhW2M+PjJdPDwyKT4+Ml09ZixmPWYrMXwwO2Vsc2V7aWYoKDB8YVtMZSsoQTw8Mik+PjJdKSE9KDB8bSkpYnJlYWsgbjtfWyhiZT1rKyhBPDwzKXwwKT4+M109K19bYmU+PjNdKyArX1trKyhwPDwzKT4+M119cD1wKzF8MH1hW0Q+PjJdPWYsbT1mLHA9''@;'; put 'put ''YyxmPU19UHIoOTUyMzUsOTQ5NDMsMTc5Miw5NTI2MCk7YnJlYWs7Y2FzZSAyOnN3aXRjaChiZT0wfGFbbCsyOD4+Ml0sMHxjKXtjYXNlIDE6Yz0wfGFbT2U+PjJdLHA9MCxmPTA7bjpmb3IoOzspe2lmKCgwfHApPj0oMHxhW2w+PjJdKSl7UmU9ZixIZT1SO2JyZWFrIHR9Zm9yKE09T2UrKChr''@;'; put 'put ''PXArMXwwKTw8Mil8MCx3PU9lKyhwPDwyKXwwOyEoKDB8Yyk+PSgwfChwPTB8YVtNPj4yXSkpKTspe2lmKCgwfChBPTB8YVtSKygobT0wfGFbKHA9TGUrKGM8PDIpfDApPj4yXSk8PDIpPj4yXSkpPCgwfGFbdz4+Ml0pKWFbTGUrKGY8PDIpPj4yXT1tLF9bYmUrKChnZT1mPDwxKTw8Myk+PjNd''@;'; put 'put ''PStfW2JlKygocGU9Yzw8MSk8PDMpPj4zXSxfW2JlKygoMXxnZSk8PDMpPj4zXT0rX1tiZSsoKDF8cGUpPDwzKT4+M10sYVtSKyhhW3A+PjJdPDwyKT4+Ml09ZixmPWYrMXwwO2Vsc2V7aWYoKDB8YVtMZSsoQTw8Mik+PjJdKSE9KDB8bSkpYnJlYWsgbjtfWyhxPWJlKygoZ2U9QTw8MSk8PDMp''@;'; put 'put ''fDApPj4zXT0rX1txPj4zXSsgK19bYmUrKChwZT1jPDwxKTw8Myk+PjNdLF9bKGdlPWJlKygoMXxnZSk8PDMpfDApPj4zXT0rX1tnZT4+M10rICtfW2JlKygoMXxwZSk8PDMpPj4zXX1jPWMrMXwwfWFbTT4+Ml09ZixjPXAscD1rfVByKDk1MjM1LDk0OTQzLDE4MTUsOTUyNjApO2JyZWFrO2Nh''@;'; put 'put ''c2UgNDpjPTB8YVtPZT4+Ml0scD0wLGY9MDtuOmZvcig7Oyl7aWYoKDB8cCk+PSgwfGFbbD4+Ml0pKXtSZT1mLEhlPVI7YnJlYWsgdH1mb3Ioaz1PZSsoKE09cCsxfDApPDwyKXwwLHc9T2UrKHA8PDIpfDA7ISgoMHxjKT49KDB8KHA9MHxhW2s+PjJdKSkpOyl7aWYoKDB8KEE9MHxhW1IrKCht''@;'; put 'put ''PTB8YVsocD1MZSsoYzw8Mil8MCk+PjJdKTw8Mik+PjJdKSk8KDB8YVt3Pj4yXSkpYVtMZSsoZjw8Mik+PjJdPW0sX1tiZSsoKGdlPWY8PDEpPDwzKT4+M109K19bYmUrKChwZT1jPDwxKTw8Myk+PjNdLF9bYmUrKCgxfGdlKTw8Myk+PjNdPStfW2JlKygoMXxwZSk8PDMpPj4zXSxhW1IrKGFb''@;'; put 'put ''cD4+Ml08PDIpPj4yXT1mLGY9ZisxfDA7ZWxzZXtpZigoMHxhW0xlKyhBPDwyKT4+Ml0pIT0oMHxtKSlicmVhayBuO19bKHE9YmUrKChnZT1BPDwxKTw8Myl8MCk+PjNdPStfW3E+PjNdKyArX1tiZSsoKHBlPWM8PDEpPDwzKT4+M10sX1tiZSsoKDF8Z2UpPDwzKT4+M109K19bYmUrKCgxfHBl''@;'; put 'put ''KTw8Myk+PjNdfWM9YysxfDB9YVtrPj4yXT1mLGM9cCxwPU19UHIoOTUyMzUsOTQ5NDMsMTgzNSw5NTI2MCk7YnJlYWs7Y2FzZSAyOnc9MHxhW2w+PjJdLHA9cGU9fn4rX1tiZSs4Pj4zXSxBPTAsZj0wO246Zm9yKDshKCgwfEEpPj0oMHx3KSk7KWZvcihrPUErMXwwLE09MHxhW09lKyhrPDwy''@;'; put 'put ''KT4+Ml0sbT1mLGM9cGUsZj0wfGFbT2UrKEE8PDIpPj4yXTs7KXtpZigoMHxmKT49KDB8TSkpe3BlPWMsQT1rLGY9bTtjb250aW51ZSBufXBlPX5+K19bYmUrKChtPDwxfDEpPDwzKT4+M10sbT1tKzF8MCxwPSgwfHApPigwfHBlKT9wOnBlLGM9KDB8Yyk8KDB8cGUpP2M6cGUsZj1mKzF8MH1m''@;'; put 'put ''b3IoRnQoUiksRz0wfFFuKDB8QXIocT1wLXBlKzF8MCxEKSkscT0wfEFyKHEsZ2UpLGY9MDshKCgwfGYpPj0oMHxxKSk7KWFbRysoZjw8Mik+PjJdPS0xLGY9ZisxfDA7Zj0wLGM9MHxhW09lPj4yXSxwPTA7bjpmb3IoOzspe2lmKCgwfHApPj0oMHxhW2w+PjJdKSl7UmU9ZixIZT1HO2JyZWFr''@;'; put 'put ''IHR9Zm9yKFI9T2UrKChEPXArMXwwKTw8Mil8MCxNPU9lKyhwPDwyKXwwOyEoKDB8Yyk+PSgwfChwPTB8YVtSPj4yXSkpKTspe2lmKHA9MHxhW0xlKyhjPDwyKT4+Ml0sQT0oMHxBcih+fihiPStfW2JlKygoMXwobT1jPDwxKSk8PDMpPj4zXSktcGV8MCxnZSkpK3B8MCwoMHwoaz0wfGFbKHc9''@;'; put 'put ''RysoQTw8Mil8MCk+PjJdKSk8KDB8YVtNPj4yXSkpYVtMZSsoZjw8Mik+PjJdPXAsX1tiZSsoKGs9Zjw8MSk8PDMpPj4zXT0rX1tiZSsobTw8Myk+PjNdLF9bYmUrKCgxfGspPDwzKT4+M109YixhW3c+PjJdPWYsZj1mKzF8MDtlbHNle2lmKCgwfEEpPj0oMHxxKSl7Zj01NTticmVhayBufWlm''@;'; put 'put ''KCgwfGFbTGUrKGs8PDIpPj4yXSkhPSgwfHApKXtmPTU3O2JyZWFrIG59X1sodz1iZSsoKGs8PD0xKTw8Myl8MCk+PjNdPStfW3c+PjNdKyArX1tiZSsobTw8Myk+PjNdLF9bYmUrKCgxfGspPDwzKT4+M109Yn1jPWMrMXwwfWFbUj4+Ml09ZixjPXAscD1EfTU1PT0oMHxmKT9Qcig5NTI5Miw5''@;'; put 'put ''NDk0MywxODY5LDk1MjYwKTo1Nz09KDB8ZikmJlByKDk1MzEzLDk0OTQzLDE4NzAsOTUyNjApO2JyZWFrO2Nhc2UgMzp3PTB8YVtsPj4yXSxmPW09fn4rX1tiZSs4Pj4zXSxwPTAsQT0wO246Zm9yKDshKCgwfEEpPj0oMHx3KSk7KWZvcihrPUErMXwwLE09MHxhW09lKyhrPDwyKT4+Ml0sYz1m''@;'; put 'put ''LGY9MHxhW09lKyhBPDwyKT4+Ml07Oyl7aWYoKDB8Zik+PSgwfE0pKXtmPWMsQT1rO2NvbnRpbnVlIG59Yz0oMHxjKT4oMHwocGU9fn4rX1tiZSsocDw8MTw8Myk+PjNdKSk/YzpwZSxtPSgwfG0pPigwfHBlKT9tOnBlLHA9cCsxfDAsZj1mKzF8MH1mb3IoRnQoUiksRz0wfFFuKDB8QXIocD1m''@;'; put 'put ''LW0rMXwwLEQpKSxwPTB8QXIocCxnZSksZj0wOyEoKDB8Zik+PSgwfHApKTspYVtHKyhmPDwyKT4+Ml09LTEsZj1mKzF8MDtmPTAsYz0wfGFbT2U+PjJdLHA9MDtuOmZvcig7Oyl7aWYoKDB8cCk+PSgwfGFbbD4+Ml0pKXtSZT1mLEhlPUc7YnJlYWsgdH1mb3IoUj1PZSsoKEQ9cCsxfDApPDwy''@;'; put 'put ''KXwwLE09T2UrKHA8PDIpfDA7ISgoMHxjKT49KDB8KHA9MHxhW1I+PjJdKSkpOyl7aWYocD0wfGFbTGUrKGM8PDIpPj4yXSx3PUcrKCgwfEFyKH5+KGI9K19bYmUrKChBPWM8PDEpPDwzKT4+M10pLW18MCxnZSkpK3A8PDIpfDAsKDB8KGs9MHxhW3c+PjJdKSk8KDB8YVtNPj4yXSkpYVtMZSso''@;'; put 'put ''Zjw8Mik+PjJdPXAsX1tiZSsoKHBlPWY8PDEpPDwzKT4+M109YixfW2JlKygoMXxwZSk8PDMpPj4zXT0rX1tiZSsoKDF8QSk8PDMpPj4zXSxhW3c+PjJdPWYsZj1mKzF8MDtlbHNle2lmKCgwfGFbTGUrKGs8PDIpPj4yXSkhPSgwfHApKWJyZWFrIG47X1tiZSsoKHBlPWs8PDEpPDwzKT4+M109''@;'; put 'put ''YixfWyhwZT1iZSsoKDF8cGUpPDwzKXwwKT4+M109K19bcGU+PjNdKyArX1tiZSsoKDF8QSk8PDMpPj4zXX1jPWMrMXwwfWFbUj4+Ml09ZixjPXAscD1EfVByKDk1MzEzLDk0OTQzLDE5MDUsOTUyNjApO2JyZWFrO2RlZmF1bHQ6UmU9MCxIZT1SO2JyZWFrIHR9YnJlYWs7Y2FzZSA0Oms9MHxh''@;'; put 'put ''W2wrMjg+PjJdLHA9MCxmPTAsYz0wfGFbT2U+PjJdO246Zm9yKDs7KXtpZigoMHxwKT49KDB8YVtsPj4yXSkpe1JlPWYsSGU9UjticmVhayB0fWZvcihEPU9lKygoTT1wKzF8MCk8PDIpfDAsdz1PZSsocDw8Mil8MDshKCgwfGMpPj0oMHwobT0wfGFbRD4+Ml0pKSk7KXtpZigoMHwoQT0wfGFb''@;'; put 'put ''UisoKG09MHxhWyhwPUxlKyhjPDwyKXwwKT4+Ml0pPDwyKT4+Ml0pKTwoMHxhW3c+PjJdKSlhW0xlKyhmPDwyKT4+Ml09bSxhW2srKGY8PDIpPj4yXT1hW2srKGM8PDIpPj4yXSxhW1IrKGFbcD4+Ml08PDIpPj4yXT1mLGY9ZisxfDA7ZWxzZXtpZigoMHxhW0xlKyhBPDwyKT4+Ml0pIT0oMHxt''@;'; put 'put ''KSlicmVhayBuO2FbKGJlPWsrKEE8PDIpfDApPj4yXT0oMHxhW2JlPj4yXSkrKDB8YVtrKyhjPDwyKT4+Ml0pfWM9YysxfDB9YVtEPj4yXT1mLHA9TSxjPW19UHIoOTUyMzUsOTQ5NDMsMTkyOSw5NTI2MCk7YnJlYWs7Y2FzZSA4OnA9MCxmPTAsYz0wfGFbT2U+PjJdO246Zm9yKDs7KXtpZigo''@;'; put 'put ''MHxwKT49KDB8YVtsPj4yXSkpe1JlPWYsSGU9UjticmVhayB0fWZvcihNPU9lKygoaz1wKzF8MCk8PDIpfDAsdz1PZSsocDw8Mil8MDshKCgwfGMpPj0oMHwobT0wfGFbTT4+Ml0pKSk7KXtpZigoMHwoQT0wfGFbUisoKG09MHxhWyhwPUxlKyhjPDwyKXwwKT4+Ml0pPDwyKT4+Ml0pKT49KDB8''@;'; put 'put ''YVt3Pj4yXSkpe2lmKCgwfGFbTGUrKEE8PDIpPj4yXSkhPSgwfG0pKWJyZWFrIG59ZWxzZSBhW0xlKyhmPDwyKT4+Ml09bSxhW1IrKGFbcD4+Ml08PDIpPj4yXT1mLGY9ZisxfDA7Yz1jKzF8MH1hW00+PjJdPWYscD1rLGM9bX1Qcig5NTIzNSw5NDk0MywxOTQ4LDk1MjYwKTticmVhaztkZWZh''@;'; put 'put ''dWx0Omw9MDticmVhayBlfX13aGlsZSgwKTthW2wrOD4+Ml09UmUsRnQoSGUpfX13aGlsZSgwKTtyZXR1cm4gMHxsfShiLGspKSwwfGJ9KGx8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCxBfD0wLHd8PTAsYnw9MCwxKX1mdW5jdGlvbiBoaihsLGMsZixwKXt2YXIgbSxBO2ZvcihjfD0wLGZ8PTAs''@;'; put 'put ''bT03MisobHw9MCl8MCxBPTQrKHB8PTApfDA7ISgoZi1jfDApPD0wKTspe3N3aXRjaCgwfGZlW20rKDB8WHRbYz4+MF0pPj4wXSl7Y2FzZSA1OmM9YysyfDA7YnJlYWs7Y2FzZSA2OmM9YyszfDA7YnJlYWs7Y2FzZSA3OmM9Yys0fDA7YnJlYWs7Y2FzZSAxMDphW0E+PjJdPS0xLGFbcD4+Ml09''@;'; put 'put ''MSsoMHxhW3A+PjJdKSxjPWMrMXwwO2JyZWFrO2Nhc2UgOTphW3A+PjJdPTErKDB8YVtwPj4yXSksYz0oZi0obD1jKzF8MCl8MCk+MCYmMTA9PSgwfGZlW20rKDB8WHRbbD4+MF0pPj4wXSk/YysyfDA6bCxhW0E+PjJdPS0xO2JyZWFrO2RlZmF1bHQ6Yz1jKzF8MH1hW0E+PjJdPTErKDB8YVtB''@;'; put 'put ''Pj4yXSl9fWZ1bmN0aW9uIGxMKGwsYyxmLHApe2x8PTAscHw9MDt2YXIgYixtPTAsQT0wLHc9MCxrPTA7bT0oYj1mfD0wKS0oY3w9MCl8MDtlOmRve2lmKCgwfG0pPjApe3N3aXRjaCgwfGZlWyhrPWwrNzJ8MCkrKDB8WHRbYz4+MF0pPj4wXSl7Y2FzZSAyOTpkZWZhdWx0OmFbcD4+Ml09Yyxm''@;'; put 'put ''PTA7YnJlYWsgZTtjYXNlIDI0OmNhc2UgMjI6Zj0xO2JyZWFrO2Nhc2UgNTppZigoMHxtKTwyKXtmPS0yO2JyZWFrIGV9aWYoISgwfEJpWzEyNyZhW2wrMzQwPj4yXV0obCxjKSkpe2FbcD4+Ml09YyxmPTA7YnJlYWsgZX1mPTI7YnJlYWs7Y2FzZSA2OmlmKCgwfG0pPDMpe2Y9LTI7YnJlYWsg''@;'; put 'put ''ZX1pZighKDB8QmlbMTI3JmFbbCszNDQ+PjJdXShsLGMpKSl7YVtwPj4yXT1jLGY9MDticmVhayBlfWY9MzticmVhaztjYXNlIDc6aWYoKDB8bSk8NCl7Zj0tMjticmVhayBlfWlmKCEoMHxCaVsxMjcmYVtsKzM0OD4+Ml1dKGwsYykpKXthW3A+PjJdPWMsZj0wO2JyZWFrIGV9Zj00O2JyZWFr''@;'; put 'put ''O2Nhc2UgMTk6Zj0wfFBLKGwsYysxfDAsZixwKTticmVhayBlfW09bCszMjh8MCxBPWwrMzMyfDAsdz1sKzMzNnwwLGM9YytmfDA7dDpmb3IoOzspe2lmKCgwfChmPWItY3wwKSk8PTApe2Y9LTE7YnJlYWsgZX1zd2l0Y2goMHxmZVtrKygwfFh0W2M+PjBdKT4+MF0pe2Nhc2UgMjk6bT0xODti''@;'; put 'put ''cmVhayB0O2Nhc2UgMTg6bT0yOTticmVhayB0O2Nhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMjpmPTE7YnJlYWs7Y2FzZSA1OmlmKCgwfGYpPDIpe2Y9LTI7YnJlYWsgZX1pZighKDB8QmlbMTI3JmFbbT4+Ml1dKGwsYykpKXttPTIxO2JyZWFrIHR9Zj0yO2JyZWFrO2Nh''@;'; put 'put ''c2UgNjppZigoMHxmKTwzKXtmPS0yO2JyZWFrIGV9aWYoISgwfEJpWzEyNyZhW0E+PjJdXShsLGMpKSl7bT0yNDticmVhayB0fWY9MzticmVhaztjYXNlIDc6aWYoKDB8Zik8NCl7Zj0tMjticmVhayBlfWlmKCEoMHxCaVsxMjcmYVt3Pj4yXV0obCxjKSkpe209Mjc7YnJlYWsgdH1mPTQ7YnJl''@;'; put 'put ''YWs7ZGVmYXVsdDptPTMwO2JyZWFrIHR9Yz1jK2Z8MH1pZigxOD09KDB8bSkpe2FbcD4+Ml09YyxmPTA7YnJlYWt9aWYoMjE9PSgwfG0pKXthW3A+PjJdPWMsZj0wO2JyZWFrfWlmKDI0PT0oMHxtKSl7YVtwPj4yXT1jLGY9MDticmVha31pZigyNz09KDB8bSkpe2FbcD4+Ml09YyxmPTA7YnJl''@;'; put 'put ''YWt9aWYoMjk9PSgwfG0pKXthW3A+PjJdPWMrMSxmPTk7YnJlYWt9aWYoMzA9PSgwfG0pKXthW3A+PjJdPWMsZj0wO2JyZWFrfX1lbHNlIGY9LTF9d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBkaihsLGMsZixwKXtsfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MCxrPTA7bT0oZnw9''@;'; put 'put ''MCktKGN8PTApfDA7ZTpkb3tpZigoMHxtKT4wKXtzd2l0Y2goMHxmZVsoaz1sKzcyfDApKygwfFh0W2M+PjBdKT4+MF0pe2Nhc2UgMjk6ZGVmYXVsdDphW3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSAyNDpjYXNlIDIyOm09MTticmVhaztjYXNlIDU6aWYoKDB8bSk8Mil7Zj0tMjticmVhayBl''@;'; put 'put ''fWlmKCEoMHxCaVsxMjcmYVtsKzM0MD4+Ml1dKGwsYykpKXthW3A+PjJdPWMsZj0wO2JyZWFrIGV9bT0yO2JyZWFrO2Nhc2UgNjppZigoMHxtKTwzKXtmPS0yO2JyZWFrIGV9aWYoISgwfEJpWzEyNyZhW2wrMzQ0Pj4yXV0obCxjKSkpe2FbcD4+Ml09YyxmPTA7YnJlYWsgZX1tPTM7YnJlYWs7''@;'; put 'put ''Y2FzZSA3OmlmKCgwfG0pPDQpe2Y9LTI7YnJlYWsgZX1pZighKDB8QmlbMTI3JmFbbCszNDg+PjJdXShsLGMpKSl7YVtwPj4yXT1jLGY9MDticmVhayBlfW09NDticmVhaztjYXNlIDMwOmNhc2UgOTpjYXNlIDEwOmNhc2UgMjE6YVtwPj4yXT1jLGY9MjI7YnJlYWsgZX1BPWwrMzI4fDAsdz1s''@;'; put 'put ''KzMzMnwwLGI9bCszMzZ8MCxjPWMrbXwwO3Q6Zm9yKDs7KXtpZigoMHwobT1mLWN8MCkpPD0wKXtmPS0xO2JyZWFrIGV9c3dpdGNoKDB8ZmVbaysoMHxYdFtjPj4wXSk+PjBdKXtjYXNlIDI5Om09MTg7YnJlYWsgdDtjYXNlIDE4Om09Mjk7YnJlYWsgdDtjYXNlIDI3OmNhc2UgMjY6Y2FzZSAy''@;'; put 'put ''NTpjYXNlIDI0OmNhc2UgMjI6bT0xO2JyZWFrO2Nhc2UgNTppZigoMHxtKTwyKXtmPS0yO2JyZWFrIGV9aWYoISgwfEJpWzEyNyZhW0E+PjJdXShsLGMpKSl7bT0yMTticmVhayB0fW09MjticmVhaztjYXNlIDY6aWYoKDB8bSk8Myl7Zj0tMjticmVhayBlfWlmKCEoMHxCaVsxMjcmYVt3Pj4y''@;'; put 'put ''XV0obCxjKSkpe209MjQ7YnJlYWsgdH1tPTM7YnJlYWs7Y2FzZSA3OmlmKCgwfG0pPDQpe2Y9LTI7YnJlYWsgZX1pZighKDB8QmlbMTI3JmFbYj4+Ml1dKGwsYykpKXttPTI3O2JyZWFrIHR9bT00O2JyZWFrO2RlZmF1bHQ6bT0zMDticmVhayB0fWM9YyttfDB9aWYoMTg9PSgwfG0pKXthW3A+''@;'; put 'put ''PjJdPWMsZj0wO2JyZWFrfWlmKDIxPT0oMHxtKSl7YVtwPj4yXT1jLGY9MDticmVha31pZigyND09KDB8bSkpe2FbcD4+Ml09YyxmPTA7YnJlYWt9aWYoMjc9PSgwfG0pKXthW3A+PjJdPWMsZj0wO2JyZWFrfWlmKDI5PT0oMHxtKSl7YVtwPj4yXT1jKzEsZj0yODticmVha31pZigzMD09KDB8''@;'; put 'put ''bSkpe2FbcD4+Ml09YyxmPTA7YnJlYWt9fWVsc2UgZj0tMX13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIFBLKGwsYyxmLHApe2x8PTAsY3w9MCxwfD0wO3ZhciBBLG09MDtBPWZ8PTA7ZTpkb3tpZigoQS1jfDApPjApe2lmKChtPTB8ZmVbYz4+MF0pPDwyND4+MjQ9PTEyMCl7bD0wfEZL''@;'; put 'put ''KGwsYysxfDAsZixwKTticmVha31pZigyNSE9KDB8ZmVbKGY9bCs3MnwwKSsoMjU1Jm0pPj4wXSkpe2FbcD4+Ml09YyxsPTA7YnJlYWt9dDpmb3IoOzspe2lmKChBLShsPWMrMXwwKXwwKTw9MCl7bD0tMTticmVhayBlfXN3aXRjaCgwfGZlW2YrKDB8WHRbbD4+MF0pPj4wXSl7Y2FzZSAyNTpj''@;'; put 'put ''PWw7YnJlYWs7Y2FzZSAxODpmPTg7YnJlYWsgdDtkZWZhdWx0OmY9OTticmVhayB0fX1pZig4PT0oMHxmKSl7YVtwPj4yXT1jKzIsbD0xMDticmVha31pZig5PT0oMHxmKSl7YVtwPj4yXT1sLGw9MDticmVha319ZWxzZSBsPS0xfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gRksobCxj''@;'; put 'put ''LGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wO2U6ZG97aWYoKGYtY3wwKT4wKXtpZigoLTImZmVbKGw9bCs3MnwwKSsoMHxYdFtjPj4wXSk+PjBdKTw8MjQ+PjI0IT0yNCl7YVtwPj4yXT1jLGY9MDticmVha310OmZvcig7Oyl7aWYoKGYtKG09YysxfDApfDApPD0wKXtmPS0xO2Jy''@;'; put 'put ''ZWFrIGV9c3dpdGNoKDB8ZmVbbCsoMHxYdFttPj4wXSk+PjBdKXtjYXNlIDI0OmNhc2UgMjU6Yz1tO2JyZWFrO2Nhc2UgMTg6bD02O2JyZWFrIHQ7ZGVmYXVsdDpsPTc7YnJlYWsgdH19aWYoNj09KDB8bCkpe2FbcD4+Ml09YysyLGY9MTA7YnJlYWt9aWYoNz09KDB8bCkpe2FbcD4+Ml09bSxm''@;'; put 'put ''PTA7YnJlYWt9fWVsc2UgZj0tMX13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIEg5ZShsLGMsZixwKXtsfD0wLHB8PTA7dmFyIHEsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscGU9MDttPShxPWZ8PTApLShjfD0wKXwwO2U6ZG97aWYoKDB8bSk+MCl7c3dpdGNoKDB8''@;'; put 'put ''ZmVbKEc9bCs3MnwwKSsoMHxYdFtjPj4wXSk+PjBdKXtjYXNlIDI5OmFbcD4+Ml09YyxtPTA7YnJlYWsgZTtjYXNlIDI0OmNhc2UgMjI6bT0xO2JyZWFrO2Nhc2UgNTppZigoMHxtKTwyKXttPS0yO2JyZWFrIGV9aWYoISgwfEJpWzEyNyZhW2wrMzQwPj4yXV0obCxjKSkpe2FbcD4+Ml09Yyxt''@;'; put 'put ''PTA7YnJlYWsgZX1tPTI7YnJlYWs7Y2FzZSA2OmlmKCgwfG0pPDMpe209LTI7YnJlYWsgZX1pZighKDB8QmlbMTI3JmFbbCszNDQ+PjJdXShsLGMpKSl7YVtwPj4yXT1jLG09MDticmVhayBlfW09MzticmVhaztjYXNlIDc6aWYoKDB8bSk8NCl7bT0tMjticmVhayBlfWlmKCEoMHxCaVsxMjcm''@;'; put 'put ''YVtsKzM0OD4+Ml1dKGwsYykpKXthW3A+PjJdPWMsbT0wO2JyZWFrIGV9bT00O2JyZWFrO2Nhc2UgMTY6aWYoKHEtKG09YysxfDApfDApPD0wKXttPS0xO2JyZWFrIGV9c3dpdGNoKDB8ZmVbRysoMHxYdFttPj4wXSk+PjBdKXtjYXNlIDI3Om09MHxwaihsLGMrMnwwLGYscCk7YnJlYWsgZTtj''@;'; put 'put ''YXNlIDIwOm09MHxnaihjKzJ8MCxmLHApO2JyZWFrIGU7ZGVmYXVsdDphW3A+PjJdPW0sbT0wO2JyZWFrIGV9Y2FzZSAxNTptPTB8c0wobCxjKzF8MCxmLHApO2JyZWFrIGU7Y2FzZSAxNzptPTB8TjllKGwsYysxfDAsZixwKTticmVhayBlO2RlZmF1bHQ6YVtwPj4yXT1jLG09MDticmVhayBl''@;'; put 'put ''fXc9bCszMjh8MCxiPWwrMzMyfDAsaz1sKzMzNnwwLE09bCszNDB8MCxEPWwrMzQ0fDAsUj1sKzM0OHwwLEE9MCxtPWMrbXwwO3Q6Zm9yKDs7KXtpZigoMHwoYz1xLW18MCkpPD0wKXttPS0xO2JyZWFrIGV9bjpkb3tzd2l0Y2goMHxmZVtHKygwfFh0W20+PjBdKT4+MF0pe2Nhc2UgMjk6cGU9''@;'; put 'put ''MjQ7YnJlYWsgdDtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOnBlPTUwO2JyZWFrIHQ7Y2FzZSAxMTpwZT02NDticmVhayB0O2Nhc2UgMTc6YnJlYWsgdDtjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6Yz0xO2JyZWFrO2Nhc2UgNTppZigoMHxjKTwyKXttPS0yO2JyZWFr''@;'; put 'put ''IGV9aWYoISgwfEJpWzEyNyZhW3c+PjJdXShsLG0pKSl7cGU9Mjc7YnJlYWsgdH1jPTI7YnJlYWs7Y2FzZSA2OmlmKCgwfGMpPDMpe209LTI7YnJlYWsgZX1pZighKDB8QmlbMTI3JmFbYj4+Ml1dKGwsbSkpKXtwZT0zMDticmVhayB0fWM9MzticmVhaztjYXNlIDc6aWYoKDB8Yyk8NCl7bT0t''@;'; put 'put ''MjticmVhayBlfWlmKCEoMHxCaVsxMjcmYVtrPj4yXV0obCxtKSkpe3BlPTMzO2JyZWFrIHR9Yz00O2JyZWFrO2Nhc2UgMjM6aWYoMHxBKXtwZT0zNTticmVhayB0fWlmKCgwfChjPXEtKEE9bSsxfDApfDApKTw9MCl7bT0tMTticmVhayBlfXN3aXRjaCgwfGZlW0crKDB8WHRbQT4+MF0pPj4w''@;'; put 'put ''XSl7Y2FzZSAyOTpwZT0zODticmVhayB0O2Nhc2UgMjQ6Y2FzZSAyMjpBPTEsYz0yO2JyZWFrIG47Y2FzZSA1OmlmKCgwfGMpPDIpe209LTI7YnJlYWsgZX1pZigwfEJpWzEyNyZhW00+PjJdXShsLEEpKXtBPTEsYz0zO2JyZWFrIG59cGU9NDI7YnJlYWsgdDtjYXNlIDY6aWYoKDB8Yyk8Myl7''@;'; put 'put ''bT0tMjticmVhayBlfWlmKDB8QmlbMTI3JmFbRD4+Ml1dKGwsQSkpe0E9MSxjPTQ7YnJlYWsgbn1wZT00NTticmVhayB0O2Nhc2UgNzppZigoMHxjKTw0KXttPS0yO2JyZWFrIGV9aWYoMHxCaVsxMjcmYVtSPj4yXV0obCxBKSl7QT0xLGM9NTticmVhayBufXBlPTQ4O2JyZWFrIHQ7ZGVmYXVs''@;'; put 'put ''dDpwZT00OTticmVhayB0fWRlZmF1bHQ6cGU9Njk7YnJlYWsgdH19d2hpbGUoMCk7bT1tK2N8MH10OnN3aXRjaCgwfHBlKXtjYXNlIDI0OmNhc2UgMjc6Y2FzZSAzMDpjYXNlIDMzOmNhc2UgMzU6Y2FzZSA2OTphW3A+PjJdPW0sbT0wO2JyZWFrIGU7Y2FzZSAzODpjYXNlIDQyOmNhc2UgNDU6''@;'; put 'put ''Y2FzZSA0ODpjYXNlIDQ5OmFbcD4+Ml09QSxtPTA7YnJlYWsgZTtjYXNlIDUwOm46Zm9yKDs7KXtpZihwZT0wLCgwfChjPXEtKEE9bSsxfDApfDApKTw9MCl7bT0tMTticmVhayBlfXN3aXRjaCgwfGZlW0crKDB8WHRbQT4+MF0pPj4wXSl7Y2FzZSAxMTptPUEscGU9NjQ7YnJlYWsgdDtjYXNl''@;'; put 'put ''IDE3Om09QTticmVhayB0O2Nhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6bT1BLHBlPTUwO2JyZWFrO2Nhc2UgMjk6cGU9NTI7YnJlYWsgbjtjYXNlIDI0OmNhc2UgMjI6QT0yO2JyZWFrIG47Y2FzZSA1OnBlPTUzO2JyZWFrIG47Y2FzZSA2OnBlPTU2O2JyZWFrIG47Y2FzZSA3OnBlPTU5O2JyZWFr''@;'; put 'put ''IG47ZGVmYXVsdDpwZT02MjticmVhayBufX1pZig1Mj09KDB8cGUpKXthW3A+PjJdPUEsbT0wO2JyZWFrIGV9aWYoNTM9PSgwfHBlKSl7aWYoKDB8Yyk8Mil7bT0tMjticmVhayBlfWlmKCEoMHxCaVsxMjcmYVtNPj4yXV0obCxBKSkpe2FbcD4+Ml09QSxtPTA7YnJlYWsgZX1BPTN9ZWxzZSBp''@;'; put 'put ''Zig1Nj09KDB8cGUpKXtpZigoMHxjKTwzKXttPS0yO2JyZWFrIGV9aWYoISgwfEJpWzEyNyZhW0Q+PjJdXShsLEEpKSl7YVtwPj4yXT1BLG09MDticmVhayBlfUE9NH1lbHNlIGlmKDU5PT0oMHxwZSkpe2lmKCgwfGMpPDQpe209LTI7YnJlYWsgZX1pZighKDB8QmlbMTI3JmFbUj4+Ml1dKGws''@;'; put 'put ''QSkpKXthW3A+PjJdPUEsbT0wO2JyZWFrIGV9QT01fWVsc2UgaWYoNjI9PSgwfHBlKSl7YVtwPj4yXT1BLG09MDticmVhayBlfW09MHxYeShsLG0rQXwwLGYscCk7YnJlYWsgZX1pZig2ND09KDB8cGUpKXthW3A+PjJdPW0rMSxtPTI7YnJlYWt9aWYoKHEtKEE9bSsxfDApfDApPjApe2lmKDYy''@;'; put 'put ''PT0oMHxmZVtBPj4wXSkpe2FbcD4+Ml09bSsyLG09NDticmVha31hW3A+PjJdPUEsbT0wO2JyZWFrfW09LTF9ZWxzZSBtPS0xfXdoaWxlKDApO3JldHVybiAwfG19ZnVuY3Rpb24gcGoobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MDtlOmRve2lm''@;'; put 'put ''KChmLWN8MCk+MCl7aWYoNDUhPSgwfGZlW2M+PjBdKSl7YVtwPj4yXT1jLGY9MDticmVha31tPWwrNzJ8MCxBPWwrMzUyfDAsdz1sKzM1NnwwLGI9bCszNjB8MCxrPWMrMXwwO3Q6Zm9yKDs7KXtpZigoMHwoYz1mLWt8MCkpPD0wKXtmPS0xO2JyZWFrIGV9c3dpdGNoKDB8ZmVbbSsoMHxYdFtr''@;'; put 'put ''Pj4wXSk+PjBdKXtjYXNlIDg6Y2FzZSAxOmNhc2UgMDpjPTE5O2JyZWFrIHQ7Y2FzZSA1OmlmKCgwfGMpPDIpe2Y9LTI7YnJlYWsgZX1pZigwfEJpWzEyNyZhW0E+PjJdXShsLGspKXtjPTk7YnJlYWsgdH1rPWsrMnwwO2NvbnRpbnVlIHQ7Y2FzZSA2OmlmKCgwfGMpPDMpe2Y9LTI7YnJlYWsg''@;'; put 'put ''ZX1pZigwfEJpWzEyNyZhW3c+PjJdXShsLGspKXtjPTEzO2JyZWFrIHR9az1rKzN8MDtjb250aW51ZSB0O2Nhc2UgNzppZigoMHxjKTw0KXtmPS0yO2JyZWFrIGV9aWYoMHxCaVsxMjcmYVtiPj4yXV0obCxrKSl7Yz0xNzticmVhayB0fWs9ays0fDA7Y29udGludWUgdDtjYXNlIDI3OmlmKChm''@;'; put 'put ''LShjPWsrMXwwKXwwKTw9MCl7Zj0tMTticmVhayBlfWlmKDQ1PT0oMHxmZVtjPj4wXSkpe2M9MjI7YnJlYWsgdH1rPWM7Y29udGludWUgdDtkZWZhdWx0Oms9aysxfDA7Y29udGludWUgdH19aWYoOT09KDB8Yykpe2FbcD4+Ml09ayxmPTA7YnJlYWt9aWYoMTM9PSgwfGMpKXthW3A+PjJdPWss''@;'; put 'put ''Zj0wO2JyZWFrfWlmKDE3PT0oMHxjKSl7YVtwPj4yXT1rLGY9MDticmVha31pZigxOT09KDB8Yykpe2FbcD4+Ml09ayxmPTA7YnJlYWt9aWYoMjI9PSgwfGMpKXtpZigoZi0oYz1rKzJ8MCl8MCk8PTApe2Y9LTE7YnJlYWt9aWYoNjI9PSgwfGZlW2M+PjBdKSl7YVtwPj4yXT1rKzMsZj0xMzti''@;'; put 'put ''cmVha31hW3A+PjJdPWMsZj0wO2JyZWFrfX1lbHNlIGY9LTF9d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBnaihsLGMsZil7aWYoZnw9MCwoKGN8PTApLShsfD0wKXwwKT41KXtmb3IoYz0wOzspe2lmKCgwfGMpPj02KXtjPTg7YnJlYWt9aWYoKDB8ZmVbbD4+MF0pIT0oMHxmZVsxNDQz''@;'; put 'put ''MDArYz4+MF0pKXtjPTA7YnJlYWt9Yz1jKzF8MCxsPWwrMXwwfWFbZj4+Ml09bH1lbHNlIGM9LTE7cmV0dXJuIDB8Y31mdW5jdGlvbiBzTChsLGMsZixwKXtsfD0wLHB8PTA7dmFyIEQsUixHLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wO0c9bGUsbGU9bGUrMTZ8MCxSPUcsZj0oRD1mfD0wKS0o''@;'; put 'put ''Y3w9MCl8MDtlOmRve2lmKCgwfGYpPjApe3N3aXRjaCgwfGZlWyhNPWwrNzJ8MCkrKDB8WHRbYz4+MF0pPj4wXSl7Y2FzZSAyOTpkZWZhdWx0OmFbcD4+Ml09YyxmPTA7YnJlYWsgZTtjYXNlIDI0OmNhc2UgMjI6Zj0xO2JyZWFrO2Nhc2UgNTppZigoMHxmKTwyKXtmPS0yO2JyZWFrIGV9aWYo''@;'; put 'put ''ISgwfEJpWzEyNyZhW2wrMzQwPj4yXV0obCxjKSkpe2FbcD4+Ml09YyxmPTA7YnJlYWsgZX1mPTI7YnJlYWs7Y2FzZSA2OmlmKCgwfGYpPDMpe2Y9LTI7YnJlYWsgZX1pZighKDB8QmlbMTI3JmFbbCszNDQ+PjJdXShsLGMpKSl7YVtwPj4yXT1jLGY9MDticmVhayBlfWY9MzticmVhaztjYXNl''@;'; put 'put ''IDc6aWYoKDB8Zik8NCl7Zj0tMjticmVhayBlfWlmKCEoMHxCaVsxMjcmYVtsKzM0OD4+Ml1dKGwsYykpKXthW3A+PjJdPWMsZj0wO2JyZWFrIGV9Zj00fUE9bCszMjh8MCx3PWwrMzMyfDAsYj1sKzMzNnwwLGY9YytmfDA7dDpmb3IoOzspe2lmKCgwfChtPUQtZnwwKSk8PTApe2Y9LTE7YnJl''@;'; put 'put ''YWsgZX1zd2l0Y2goMHxmZVtNKygwfFh0W2Y+PjBdKT4+MF0pe2Nhc2UgMjk6az0xNzticmVhayB0O2Nhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6az0yODticmVhayB0O2Nhc2UgMTU6az01MDticmVhayB0O2Nhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMjptPTE7YnJlYWs7''@;'; put 'put ''Y2FzZSA1OmlmKCgwfG0pPDIpe2Y9LTI7YnJlYWsgZX1pZighKDB8QmlbMTI3JmFbQT4+Ml1dKGwsZikpKXtrPTIwO2JyZWFrIHR9bT0yO2JyZWFrO2Nhc2UgNjppZigoMHxtKTwzKXtmPS0yO2JyZWFrIGV9aWYoISgwfEJpWzEyNyZhW3c+PjJdXShsLGYpKSl7az0yMzticmVhayB0fW09Mzti''@;'; put 'put ''cmVhaztjYXNlIDc6aWYoKDB8bSk8NCl7Zj0tMjticmVhayBlfWlmKCEoMHxCaVsxMjcmYVtiPj4yXV0obCxmKSkpe2s9MjY7YnJlYWsgdH1tPTQ7YnJlYWs7ZGVmYXVsdDpicmVhayB0fWY9ZittfDB9aWYoMTc9PSgwfGspKXthW3A+PjJdPWYsZj0wO2JyZWFrfWlmKDIwPT0oMHxrKSl7YVtw''@;'; put 'put ''Pj4yXT1mLGY9MDticmVha31pZigyMz09KDB8aykpe2FbcD4+Ml09ZixmPTA7YnJlYWt9aWYoMjY9PSgwfGspKXthW3A+PjJdPWYsZj0wO2JyZWFrfWlmKDI4PT0oMHxrKSl7aWYoISgwfG1qKGMsZixSKSkpe2FbcD4+Ml09ZixmPTA7YnJlYWt9QT1sKzM1MnwwLHc9bCszNTZ8MCxiPWwrMzYw''@;'; put 'put ''fDAsbT1mKzF8MDt0OmZvcig7Oyl7aWYoKDB8KGY9RC1tfDApKTw9MCl7Zj0tMTticmVhayBlfXN3aXRjaCgwfGZlW00rKDB8WHRbbT4+MF0pPj4wXSl7Y2FzZSA4OmNhc2UgMTpjYXNlIDA6az00NTticmVhayB0O2Nhc2UgNTppZigoMHxmKTwyKXtmPS0yO2JyZWFrIGV9aWYoMHxCaVsxMjcm''@;'; put 'put ''YVtBPj4yXV0obCxtKSl7az0zNTticmVhayB0fW09bSsyfDA7Y29udGludWUgdDtjYXNlIDY6aWYoKDB8Zik8Myl7Zj0tMjticmVhayBlfWlmKDB8QmlbMTI3JmFbdz4+Ml1dKGwsbSkpe2s9Mzk7YnJlYWsgdH1tPW0rM3wwO2NvbnRpbnVlIHQ7Y2FzZSA3OmlmKCgwfGYpPDQpe2Y9LTI7YnJl''@;'; put 'put ''YWsgZX1pZigwfEJpWzEyNyZhW2I+PjJdXShsLG0pKXtrPTQzO2JyZWFrIHR9bT1tKzR8MDtjb250aW51ZSB0O2Nhc2UgMTU6aWYoKEQtKGY9bSsxfDApfDApPD0wKXtmPS0xO2JyZWFrIGV9aWYoNjI9PSgwfGZlW2Y+PjBdKSl7az00ODticmVhayB0fW09Zjtjb250aW51ZSB0O2RlZmF1bHQ6''@;'; put 'put ''bT1tKzF8MDtjb250aW51ZSB0fX1pZigzNT09KDB8aykpe2FbcD4+Ml09bSxmPTA7YnJlYWt9aWYoMzk9PSgwfGspKXthW3A+PjJdPW0sZj0wO2JyZWFrfWlmKDQzPT0oMHxrKSl7YVtwPj4yXT1tLGY9MDticmVha31pZig0NT09KDB8aykpe2FbcD4+Ml09bSxmPTA7YnJlYWt9aWYoNDg9PSgw''@;'; put 'put ''fGspKXthW3A+PjJdPW0rMixmPTB8YVtSPj4yXTticmVha319ZWxzZSBpZig1MD09KDB8aykpe2lmKCEoMHxtaihjLGYsUikpKXthW3A+PjJdPWYsZj0wO2JyZWFrfWlmKChELShtPWYrMXwwKXwwKTw9MCl7Zj0tMTticmVha31pZig2Mj09KDB8ZmVbbT4+MF0pKXthW3A+PjJdPWYrMixmPTB8''@;'; put 'put ''YVtSPj4yXTticmVha31mPW19YVtwPj4yXT1mLGY9MH1lbHNlIGY9LTF9d2hpbGUoMCk7cmV0dXJuIGxlPUcsMHxmfWZ1bmN0aW9uIE45ZShsLGMsZixwKXtsfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MCxrPTA7bT0oZnw9MCktKGN8PTApfDA7ZTpkb3tpZigoMHxtKT4wKXtzd2l0Y2go''@;'; put 'put ''MHxmZVsoaz1sKzcyfDApKygwfFh0W2M+PjBdKT4+MF0pe2Nhc2UgMjk6ZGVmYXVsdDphW3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSAyNDpjYXNlIDIyOm09MTticmVhaztjYXNlIDU6aWYoKDB8bSk8Mil7Zj0tMjticmVhayBlfWlmKCEoMHxCaVsxMjcmYVtsKzM0MD4+Ml1dKGwsYykpKXth''@;'; put 'put ''W3A+PjJdPWMsZj0wO2JyZWFrIGV9bT0yO2JyZWFrO2Nhc2UgNjppZigoMHxtKTwzKXtmPS0yO2JyZWFrIGV9aWYoISgwfEJpWzEyNyZhW2wrMzQ0Pj4yXV0obCxjKSkpe2FbcD4+Ml09YyxmPTA7YnJlYWsgZX1tPTM7YnJlYWs7Y2FzZSA3OmlmKCgwfG0pPDQpe2Y9LTI7YnJlYWsgZX1pZigh''@;'; put 'put ''KDB8QmlbMTI3JmFbbCszNDg+PjJdXShsLGMpKSl7YVtwPj4yXT1jLGY9MDticmVhayBlfW09NH1BPWwrMzI4fDAsdz1sKzMzMnwwLGI9bCszMzZ8MCxtPWMrbXwwO3Q6Zm9yKDs7KXtpZigoMHwoYz1mLW18MCkpPD0wKXtmPS0xO2JyZWFrIGV9c3dpdGNoKDB8ZmVbaysoMHxYdFttPj4wXSk+''@;'; put 'put ''PjBdKXtjYXNlIDI5OkE9MTc7YnJlYWsgdDtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOkE9Mjc7YnJlYWsgdDtjYXNlIDExOkE9MzI7YnJlYWsgdDtjYXNlIDIzOmNhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMjpjPTE7YnJlYWs7Y2FzZSA1OmlmKCgwfGMpPDIpe2Y9LTI7''@;'; put 'put ''YnJlYWsgZX1pZighKDB8QmlbMTI3JmFbQT4+Ml1dKGwsbSkpKXtBPTIwO2JyZWFrIHR9Yz0yO2JyZWFrO2Nhc2UgNjppZigoMHxjKTwzKXtmPS0yO2JyZWFrIGV9aWYoISgwfEJpWzEyNyZhW3c+PjJdXShsLG0pKSl7QT0yMzticmVhayB0fWM9MzticmVhaztjYXNlIDc6aWYoKDB8Yyk8NCl7''@;'; put 'put ''Zj0tMjticmVhayBlfWlmKCEoMHxCaVsxMjcmYVtiPj4yXV0obCxtKSkpe0E9MjY7YnJlYWsgdH1jPTQ7YnJlYWs7ZGVmYXVsdDpBPTMzO2JyZWFrIHR9bT1tK2N8MH1pZigxNz09KDB8QSkpe2FbcD4+Ml09bSxmPTA7YnJlYWt9aWYoMjA9PSgwfEEpKXthW3A+PjJdPW0sZj0wO2JyZWFrfWlm''@;'; put 'put ''KDIzPT0oMHxBKSl7YVtwPj4yXT1tLGY9MDticmVha31pZigyNj09KDB8QSkpe2FbcD4+Ml09bSxmPTA7YnJlYWt9aWYoMjc9PSgwfEEpKXt0OmZvcig7Oyl7aWYoKGYtKGM9bSsxfDApfDApPD0wKXtmPS0xO2JyZWFrIGV9c3dpdGNoKDB8ZmVbaysoMHxYdFtjPj4wXSk+PjBdKXtjYXNlIDEw''@;'; put 'put ''OmNhc2UgOTpjYXNlIDIxOm09YyxBPTI3O2JyZWFrO2Nhc2UgMTE6QT0yOTticmVhayB0O2RlZmF1bHQ6QT0zMDticmVhayB0fX1pZigyOT09KDB8QSkpe2FbcD4+Ml09bSsyLGY9NTticmVha31pZigzMD09KDB8QSkpe2FbcD4+Ml09YyxmPTA7YnJlYWt9fWVsc2V7aWYoMzI9PSgwfEEpKXth''@;'; put 'put ''W3A+PjJdPW0rMSxmPTU7YnJlYWt9aWYoMzM9PSgwfEEpKXthW3A+PjJdPW0sZj0wO2JyZWFrfX19ZWxzZSBmPS0xfXdoaWxlKDApO3JldHVybiAwfGZ9ZnVuY3Rpb24gWHkobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIGIsayxNLEQsUixHLHEscGUsZ2UsYmUsT2UsTGUsSGUsbT0wLEE9''@;'; put 'put ''MCx3PTAsUmU9MDtIZT1sZSxsZT1sZSsxNnwwLGFbKE9lPUhlKT4+Ml09Y3w9MCxMZT1mLHE9bCs3MnwwLHBlPWwrMzI4fDAsZ2U9bCszMzJ8MCxiZT1sKzMzNnwwLGI9bCszNDB8MCxrPWwrMzQ0fDAsTT1sKzM0OHwwLEQ9bCszNTJ8MCxSPWwrMzU2fDAsRz1sKzM2MHwwLEE9MDtlOmZvcig7''@;'; put 'put ''Oyl7aWYoKDB8KG09TGUtY3wwKSk8PTApe2M9LTE7YnJlYWt9dDpkb3tzd2l0Y2goMHxmZVtxKygwfFh0W2M+PjBdKT4+MF0pe2Nhc2UgMjk6UmU9NDticmVhayBlO2Nhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMjphW09lPj4yXT1tPWMrMXwwLGM9bSxBPXc9QTtjb250''@;'; put 'put ''aW51ZSBlO2Nhc2UgNTppZigoMHxtKTwyKXtjPS0yO2JyZWFrIGV9aWYoISgwfEJpWzEyNyZhW3BlPj4yXV0obCxjKSkpe1JlPTg7YnJlYWsgZX1hW09lPj4yXT1tPWMrMnwwLGM9bSxBPXc9QTtjb250aW51ZSBlO2Nhc2UgNjppZigoMHxtKTwzKXtjPS0yO2JyZWFrIGV9aWYoISgwfEJpWzEy''@;'; put 'put ''NyZhW2dlPj4yXV0obCxjKSkpe1JlPTEyO2JyZWFrIGV9YVtPZT4+Ml09bT1jKzN8MCxjPW0sQT13PUE7Y29udGludWUgZTtjYXNlIDc6aWYoKDB8bSk8NCl7Yz0tMjticmVhayBlfWlmKCEoMHxCaVsxMjcmYVtiZT4+Ml1dKGwsYykpKXtSZT0xNjticmVhayBlfWFbT2U+PjJdPW09Yys0fDAs''@;'; put 'put ''Yz1tLEE9dz1BO2NvbnRpbnVlIGU7Y2FzZSAyMzppZigwfEEpe1JlPTE5O2JyZWFrIGV9aWYoYVtPZT4+Ml09bT1jKzF8MCwoMHwoQT1MZS1tfDApKTw9MCl7Yz0tMTticmVhayBlfXN3aXRjaCgwfGZlW3ErKDB8WHRbbT4+MF0pPj4wXSl7Y2FzZSAyOTpSZT0yMjticmVhayBlO2Nhc2UgMjQ6''@;'; put 'put ''Y2FzZSAyMjphW09lPj4yXT13PWMrMnwwLEE9MSxjPXc7Y29udGludWUgZTtjYXNlIDU6aWYoKDB8QSk8Mil7Yz0tMjticmVhayBlfWlmKCEoMHxCaVsxMjcmYVtiPj4yXV0obCxtKSkpe1JlPTI2O2JyZWFrIGV9YVtPZT4+Ml09dz1jKzN8MCxBPTEsYz13O2NvbnRpbnVlIGU7Y2FzZSA2Omlm''@;'; put 'put ''KCgwfEEpPDMpe2M9LTI7YnJlYWsgZX1pZighKDB8QmlbMTI3JmFbaz4+Ml1dKGwsbSkpKXtSZT0zMDticmVhayBlfWFbT2U+PjJdPXc9Yys0fDAsQT0xLGM9dztjb250aW51ZSBlO2Nhc2UgNzppZigoMHxBKTw0KXtjPS0yO2JyZWFrIGV9aWYoISgwfEJpWzEyNyZhW00+PjJdXShsLG0pKSl7''@;'; put 'put ''UmU9MzQ7YnJlYWsgZX1hW09lPj4yXT13PWMrNXwwLEE9MSxjPXc7Y29udGludWUgZTtkZWZhdWx0OlJlPTM2O2JyZWFrIGV9Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTpmb3IoOzspe2lmKGFbT2U+PjJdPWM9YysxfDAsKExlLWN8MCk8PTApe2M9LTE7YnJlYWsgZX1zd2l0Y2goMHxmZVtxKygw''@;'; put 'put ''fFh0W2M+PjBdKT4+MF0pe2Nhc2UgMTQ6YnJlYWsgdDtjYXNlIDk6Y2FzZSAxMDpjYXNlIDIxOmJyZWFrO2RlZmF1bHQ6UmU9Mzk7YnJlYWsgZX19Y2FzZSAxNDpicmVhaztkZWZhdWx0OlJlPTkyO2JyZWFrIGV9fXdoaWxlKDApO2Zvcig7Oyl7aWYoYVtPZT4+Ml09bT1jKzF8MCwoTGUtbXww''@;'; put 'put ''KTw9MCl7Yz0tMTticmVhayBlfWlmKCgxfCh3PTB8ZmVbcSsoMHxYdFttPj4wXSk+PjBdKSk8PDI0Pj4yND09MTMpYnJlYWs7c3dpdGNoKHc8PDI0Pj4yNCl7Y2FzZSA5OmNhc2UgMTA6Y2FzZSAyMTpjPW07YnJlYWs7ZGVmYXVsdDpSZT00MzticmVhayBlfX1hW09lPj4yXT1jPWMrMnwwO3Q6''@;'; put 'put ''Zm9yKDs7KXtpZigoMHwobT1MZS1jfDApKTw9MCl7Yz0tMTticmVhayBlfWlmKChBPTB8ZmVbcSsoMHxYdFtjPj4wXSk+PjBdKTw8MjQ+PjI0PT13PDwyND4+MjQpYnJlYWs7c3dpdGNoKEE8PDI0Pj4yNCl7Y2FzZSA4OmNhc2UgMTpjYXNlIDA6UmU9NjA7YnJlYWsgZTtjYXNlIDI6UmU9NjU7''@;'; put 'put ''YnJlYWsgZTtjYXNlIDU6aWYoKDB8bSk8Mil7Yz0tMjticmVhayBlfWlmKDB8QmlbMTI3JmFbRD4+Ml1dKGwsYykpe1JlPTUwO2JyZWFrIGV9YVtPZT4+Ml09QT1jKzJ8MCxjPUE7Y29udGludWUgdDtjYXNlIDY6aWYoKDB8bSk8Myl7Yz0tMjticmVhayBlfWlmKDB8QmlbMTI3JmFbUj4+Ml1d''@;'; put 'put ''KGwsYykpe1JlPTU0O2JyZWFrIGV9YVtPZT4+Ml09QT1jKzN8MCxjPUE7Y29udGludWUgdDtjYXNlIDc6aWYoKDB8bSk8NCl7Yz0tMjticmVhayBlfWlmKDB8QmlbMTI3JmFbRz4+Ml1dKGwsYykpe1JlPTU4O2JyZWFrIGV9YVtPZT4+Ml09QT1jKzR8MCxjPUE7Y29udGludWUgdDtjYXNlIDM6''@;'; put 'put ''aWYoKDB8KGM9MHxsTChsLGMrMXwwLGYsT2UpKSk8MSl7UmU9NjM7YnJlYWsgZX1jPTB8YVtPZT4+Ml07Y29udGludWUgdDtkZWZhdWx0OmFbT2U+PjJdPUE9YysxfDAsYz1BO2NvbnRpbnVlIHR9fWlmKGFbT2U+PjJdPW09YysxfDAsKExlLW18MCk8PTApe2M9LTE7YnJlYWt9c3dpdGNoKDB8''@;'; put 'put ''ZmVbcSsoMHxYdFttPj4wXSk+PjBdKXtjYXNlIDExOlJlPTg2O2JyZWFrIGU7Y2FzZSAxNzpSZT04NzticmVhayBlO2Nhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6Yz1tO2JyZWFrO2RlZmF1bHQ6UmU9Njk7YnJlYWsgZX10OmZvcig7Oyl7aWYoYVtPZT4+Ml09bT1jKzF8MCwoMHwoQT1MZS1tfDAp''@;'; put 'put ''KTw9MCl7Yz0tMTticmVhayBlfXN3aXRjaCgwfGZlW3ErKDB8WHRbbT4+MF0pPj4wXSl7Y2FzZSAyOTpSZT03MjticmVhayBlO2Nhc2UgMTE6UmU9ODY7YnJlYWsgZTtjYXNlIDE3OlJlPTg3O2JyZWFrIGU7Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTpjPW07YnJlYWs7Y2FzZSAyNDpjYXNlIDIy''@;'; put 'put ''OlJlPTczO2JyZWFrIHQ7Y2FzZSA1OlJlPTc0O2JyZWFrIHQ7Y2FzZSA2OlJlPTc4O2JyZWFrIHQ7Y2FzZSA3OlJlPTgyO2JyZWFrIHQ7ZGVmYXVsdDpSZT05MTticmVhayBlfX1pZig3MyE9KDB8UmUpKWlmKDc0IT0oMHxSZSkpaWYoNzghPSgwfFJlKSlpZig4MiE9KDB8UmUpKTtlbHNle2lm''@;'; put 'put ''KFJlPTAsKDB8QSk8NCl7Yz0tMjticmVha31pZighKDB8QmlbMTI3JmFbTT4+Ml1dKGwsbSkpKXtSZT04NDticmVha31hW09lPj4yXT1jPWMrNXwwLEE9MH1lbHNle2lmKFJlPTAsKDB8QSk8Myl7Yz0tMjticmVha31pZighKDB8QmlbMTI3JmFbaz4+Ml1dKGwsbSkpKXtSZT04MDticmVha31h''@;'; put 'put ''W09lPj4yXT1jPWMrNHwwLEE9MH1lbHNle2lmKFJlPTAsKDB8QSk8Mil7Yz0tMjticmVha31pZighKDB8QmlbMTI3JmFbYj4+Ml1dKGwsbSkpKXtSZT03NjticmVha31hW09lPj4yXT1jPWMrM3wwLEE9MH1lbHNlIFJlPTAsYVtPZT4+Ml09Yz1jKzJ8MCxBPTB9c3dpdGNoKDB8UmUpe2Nhc2Ug''@;'; put 'put ''NDpjYXNlIDg6Y2FzZSAxMjpjYXNlIDE2OmNhc2UgMTk6Y2FzZSAzOTpjYXNlIDUwOmNhc2UgNTQ6Y2FzZSA1ODpjYXNlIDYwOmNhc2UgNjU6Y2FzZSA5MjphW3A+PjJdPWMsYz0wO2JyZWFrO2Nhc2UgMjI6Y2FzZSAyNjpjYXNlIDMwOmNhc2UgMzQ6Y2FzZSAzNjpjYXNlIDQzOmNhc2UgNjk6''@;'; put 'put ''Y2FzZSA3MjpjYXNlIDc2OmNhc2UgODA6Y2FzZSA4NDpjYXNlIDkxOmFbcD4+Ml09bSxjPTA7YnJlYWs7Y2FzZSA2MzpjfHwoYVtwPj4yXT1hW09lPj4yXSxjPTApO2JyZWFrO2Nhc2UgODY6YVtwPj4yXT1jKzIsYz0xO2JyZWFrO2Nhc2UgODc6aWYoYVtPZT4+Ml09Yz1tKzF8MCwoTGUtY3ww''@;'; put 'put ''KT4wKXtpZig2Mj09KDB8ZmVbYz4+MF0pKXthW3A+PjJdPW0rMixjPTM7YnJlYWt9YVtwPj4yXT1jLGM9MDticmVha31jPS0xfXJldHVybiBsZT1IZSwwfGN9ZnVuY3Rpb24gbWoobCxjLGYpe2x8PTAsY3w9MCxhWyhmfD0wKT4+Ml09MTE7ZTpkb3tpZigzPT0oYy1sfDApKXtzd2l0Y2goMHxm''@;'; put 'put ''ZVtsPj4wXSl7Y2FzZSAxMjA6Yz0wO2JyZWFrO2Nhc2UgODg6Yz0xO2JyZWFrO2RlZmF1bHQ6Yz0xO2JyZWFrIGV9c3dpdGNoKDB8ZmVbbCsxPj4wXSl7Y2FzZSAxMDk6YnJlYWs7Y2FzZSA3NzpjPTE7YnJlYWs7ZGVmYXVsdDpjPTE7YnJlYWsgZX1zd2l0Y2goMHxmZVtsKzI+PjBdKXtjYXNl''@;'; put 'put ''IDEwODpicmVhaztjYXNlIDc2OmM9MDticmVhayBlO2RlZmF1bHQ6Yz0xO2JyZWFrIGV9Yz9jPTA6KGFbZj4+Ml09MTIsYz0xKX1lbHNlIGM9MX13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1bmN0aW9uIGcxZShsLGMsZixwLG0pe2x8PTAsZnw9MCxwfD0wLG18PTA7dmFyIGIsayxNLEQsQT0wLHc9''@;'; put 'put ''MCxSPTA7Yj03MisoY3w9MCl8MCxrPWMrMzUyfDAsTT1jKzM1NnwwLEQ9YyszNjB8MDtlOmZvcig7Oyl7aWYoKDB8KEE9cC1mfDApKTw9MCl7cD0tMTticmVha31zd2l0Y2goKHc9MHxmZVtiKygwfFh0W2Y+PjBdKT4+MF0pPDwyND4+MjQpe2Nhc2UgODpjYXNlIDE6Y2FzZSAwOlI9MTY7YnJl''@;'; put 'put ''YWsgZTtjYXNlIDU6aWYoKDB8QSk8Mil7cD0tMjticmVhayBlfWlmKDB8QmlbMTI3JmFbaz4+Ml1dKGMsZikpe1I9NjticmVhayBlfWY9ZisyfDA7Y29udGludWUgZTtjYXNlIDY6aWYoKDB8QSk8Myl7cD0tMjticmVhayBlfWlmKDB8QmlbMTI3JmFbTT4+Ml1dKGMsZikpe1I9MTA7YnJlYWsg''@;'; put 'put ''ZX1mPWYrM3wwO2NvbnRpbnVlIGU7Y2FzZSA3OmlmKCgwfEEpPDQpe3A9LTI7YnJlYWsgZX1pZigwfEJpWzEyNyZhW0Q+PjJdXShjLGYpKXtSPTE0O2JyZWFrIGV9Zj1mKzR8MDtjb250aW51ZSBlO2Nhc2UgMTM6Y2FzZSAxMjppZihmPWYrMXwwLCgyNTUmd3wwKT09KDB8bCkpe1I9MTg7YnJl''@;'; put 'put ''YWsgZX1jb250aW51ZSBlO2RlZmF1bHQ6Zj1mKzF8MDtjb250aW51ZSBlfX1lOmRve2lmKDY9PSgwfFIpKWFbbT4+Ml09ZixwPTA7ZWxzZSBpZigxMD09KDB8UikpYVttPj4yXT1mLHA9MDtlbHNlIGlmKDE0PT0oMHxSKSlhW20+PjJdPWYscD0wO2Vsc2UgaWYoMTY9PSgwfFIpKWFbbT4+Ml09''@;'; put 'put ''ZixwPTA7ZWxzZSBpZigxOD09KDB8UikpaWYoKHAtZnwwKT4wKXtzd2l0Y2goYVttPj4yXT1mLDB8ZmVbYisoMHxYdFtmPj4wXSk+PjBdKXtjYXNlIDIwOmNhc2UgMzA6Y2FzZSAxMTpjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOnA9Mjc7YnJlYWsgZX1wPTB9ZWxzZSBwPS0yN313aGlsZSgwKTty''@;'; put 'put ''ZXR1cm4gMHxwfWZ1bmN0aW9uIG0xZShsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgbSxBPTAsdz0wO209Znw9MDtlOmRve2lmKChtLWN8MCk+MClzd2l0Y2goQT1sKzcyfDAsMHxmZVtBKygwfFh0W2M+PjBdKT4+MF0pe2Nhc2UgMjc6bD0wfHBqKGwsYysxfDAsZixwKTticmVhayBlO2Nh''@;'; put 'put ''c2UgMjA6YVtwPj4yXT1jKzEsbD0zMzticmVhayBlO2Nhc2UgMjQ6Y2FzZSAyMjp0OmZvcig7Oyl7aWYoKDB8KGY9bS0obD1jKzF8MCl8MCkpPD0wKXtsPS0xO2JyZWFrIGV9c3dpdGNoKDB8ZmVbQSsoMHxYdFtsPj4wXSk+PjBdKXtjYXNlIDI0OmNhc2UgMjI6Yz1sO2JyZWFrO2Nhc2UgMzA6''@;'; put 'put ''dz04O2JyZWFrIHQ7Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTpicmVhayB0O2RlZmF1bHQ6dz0xMjticmVhayB0fX1pZigxMj09KDB8dykpe2FbcD4+Ml09bCxsPTA7YnJlYWsgZX10OmRve2lmKDg9PSgwfHcpKXtpZigoMHxmKTw9MSl7bD0tMTticmVhayBlfXN3aXRjaCgwfGZlW0ErKDB8WHRb''@;'; put 'put ''YysyPj4wXSk+PjBdKXtjYXNlIDMwOmNhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6YnJlYWs7ZGVmYXVsdDpicmVhayB0fWFbcD4+Ml09bCxsPTA7YnJlYWsgZX19d2hpbGUoMCk7YVtwPj4yXT1sLGw9MTY7YnJlYWsgZTtkZWZhdWx0OmFbcD4+Ml09YyxsPTA7YnJlYWsgZX1lbHNlIGw9LTF9d2hp''@;'; put 'put ''bGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiBISyhsLGMsZixwKXtsfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MCxrPTA7bT0oZnw9MCktKGN8PTApfDA7ZTpkb3tpZigoMHxtKT4wKXtzd2l0Y2goMHxmZVsoaz1sKzcyfDApKygwfFh0W2M+PjBdKT4+MF0pe2Nhc2UgMjk6ZGVmYXVsdDph''@;'; put 'put ''W3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSAyNDpjYXNlIDIyOm09MTticmVhaztjYXNlIDU6aWYoKDB8bSk8Mil7Zj0tMjticmVhayBlfWlmKCEoMHxCaVsxMjcmYVtsKzM0MD4+Ml1dKGwsYykpKXthW3A+PjJdPWMsZj0wO2JyZWFrIGV9bT0yO2JyZWFrO2Nhc2UgNjppZigoMHxtKTwzKXtm''@;'; put 'put ''PS0yO2JyZWFrIGV9aWYoISgwfEJpWzEyNyZhW2wrMzQ0Pj4yXV0obCxjKSkpe2FbcD4+Ml09YyxmPTA7YnJlYWsgZX1tPTM7YnJlYWs7Y2FzZSA3OmlmKCgwfG0pPDQpe2Y9LTI7YnJlYWsgZX1pZighKDB8QmlbMTI3JmFbbCszNDg+PjJdXShsLGMpKSl7YVtwPj4yXT1jLGY9MDticmVhayBl''@;'; put 'put ''fW09NH1BPWwrMzI4fDAsdz1sKzMzMnwwLGI9bCszMzZ8MCxjPWMrbXwwO3Q6Zm9yKDs7KXtpZigoMHwobT1mLWN8MCkpPD0wKXtmPS0yMDticmVhayBlfXN3aXRjaCgwfGZlW2srKDB8WHRbYz4+MF0pPj4wXSl7Y2FzZSAyOTptPTE3O2JyZWFrIHQ7Y2FzZSAzNjpjYXNlIDMwOmNhc2UgMTE6''@;'; put 'put ''Y2FzZSAzMjpjYXNlIDIxOmNhc2UgMTA6Y2FzZSA5Om09Mjg7YnJlYWsgdDtjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6bT0xO2JyZWFrO2Nhc2UgNTppZigoMHxtKTwyKXtmPS0yO2JyZWFrIGV9aWYoISgwfEJpWzEyNyZhW0E+PjJdXShsLGMpKSl7bT0yMDticmVh''@;'; put 'put ''ayB0fW09MjticmVhaztjYXNlIDY6aWYoKDB8bSk8Myl7Zj0tMjticmVhayBlfWlmKCEoMHxCaVsxMjcmYVt3Pj4yXV0obCxjKSkpe209MjM7YnJlYWsgdH1tPTM7YnJlYWs7Y2FzZSA3OmlmKCgwfG0pPDQpe2Y9LTI7YnJlYWsgZX1pZighKDB8QmlbMTI3JmFbYj4+Ml1dKGwsYykpKXttPTI2''@;'; put 'put ''O2JyZWFrIHR9bT00O2JyZWFrO2RlZmF1bHQ6bT0yOTticmVhayB0fWM9YyttfDB9aWYoMTc9PSgwfG0pKXthW3A+PjJdPWMsZj0wO2JyZWFrfWlmKDIwPT0oMHxtKSl7YVtwPj4yXT1jLGY9MDticmVha31pZigyMz09KDB8bSkpe2FbcD4+Ml09YyxmPTA7YnJlYWt9aWYoMjY9PSgwfG0pKXth''@;'; put 'put ''W3A+PjJdPWMsZj0wO2JyZWFrfWlmKDI4PT0oMHxtKSl7YVtwPj4yXT1jLGY9MjA7YnJlYWt9aWYoMjk9PSgwfG0pKXthW3A+PjJdPWMsZj0wO2JyZWFrfX1lbHNlIGY9LTF9d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBmMChsLGMpe2N8PTA7dmFyIGY9MDtzd2l0Y2goKGx8PTApPDwy''@;'; put 'put ''ND4+MjQpe2Nhc2UtMzc6Y2FzZS0zODpjYXNlLTM5OmNhc2UtNDA6bD03O2JyZWFrO2Nhc2UtMzM6Y2FzZS0zNDpjYXNlLTM1OmNhc2UtMzY6bD04O2JyZWFrO2Nhc2UtMTooMjU1JmMpPjI1Mz9sPTA6Zj00O2JyZWFrO2RlZmF1bHQ6Zj00fXJldHVybiA0PT0oMHxmKSYmKGw9MjkpLDB8bH1m''@;'; put 'put ''dW5jdGlvbiB1TChsLGMsZixwKXtsfD0wLHB8PTA7dmFyIGssbT0wLEE9MCx3PTAsYj0wO3c9KGs9Znw9MCktKGN8PTApfDA7ZTpkb3tpZigoMHx3KT4xKXtzd2l0Y2goMHwobT0oYj0wfGZlW2MrMT4+MF0pPDwyND4+MjQ/MHxmMChiLEE9MHxmZVtjPj4wXSk6MHxYdFtsKzcyKygyNTUmKEE9''@;'; put 'put ''MHxmZVtjPj4wXSkpPj4wXSkpe2Nhc2UgMjk6aWYoISgxPDwoMzEmKHc9MjU1JkEpKSZhWzU2OTQwKygodz4+PjV8KDB8WHRbMTQzNzg4KygyNTUmYik+PjBdKTw8Myk8PDIpPj4yXSkpe2FbcD4+Ml09YyxsPTA7YnJlYWsgZX1icmVhaztjYXNlIDI0OmNhc2UgMjI6YnJlYWs7Y2FzZSA1OmRl''@;'; put 'put ''ZmF1bHQ6YVtwPj4yXT1jLGw9MDticmVhayBlO2Nhc2UgNjppZigoMHx3KTwzKXtsPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGw9MDticmVhayBlO2Nhc2UgNzppZigoMHx3KTw0KXtsPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGw9MDticmVhayBlO2Nhc2UgMTk6bD0wfEUxZShsLGMrMnwwLGYscCk7''@;'; put 'put ''YnJlYWsgZX1iPWwrNzJ8MCx3PWM7dDpmb3IoOzspe2lmKCgwfChjPWstKEE9dysyfDApfDApKTw9MSl7bD0tMTticmVhayBlfXN3aXRjaChtPTB8ZmVbQT4+MF0sMHwoZj0obD0wfGZlW3crMz4+MF0pPDwyND4+MjQ/MHxmMChsLG0pOjB8WHRbYisoMjU1Jm0pPj4wXSkpe2Nhc2UgMjc6Y2Fz''@;'; put 'put ''ZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMjp3PUE7Y29udGludWUgdDtjYXNlIDU6bT0yMzticmVhayB0O2Nhc2UgNjptPTI0O2JyZWFrIHQ7Y2FzZSA3Om09MjY7YnJlYWsgdDtjYXNlIDE4Om09Mjg7YnJlYWsgdDtjYXNlIDI5OmJyZWFrO2RlZmF1bHQ6bT0yOTticmVhayB0fWlmKCEo''@;'; put 'put ''MTw8KDMxJihjPTI1NSZtKSkmYVs1Njk0MCsoKGM+Pj41fCgwfFh0WzE0NDA0NCsoMjU1JmwpPj4wXSk8PDMpPDwyKT4+Ml0pKXttPTIyO2JyZWFrfXc9QX1pZigyMj09KDB8bSkpe2FbcD4+Ml09QSxsPTA7YnJlYWt9aWYoMjM9PSgwfG0pKXthW3A+PjJdPUEsbD0wO2JyZWFrfWlmKDI0PT0o''@;'; put 'put ''MHxtKSl7aWYoKDB8Yyk8Myl7bD0tMjticmVha31hW3A+PjJdPUEsbD0wO2JyZWFrfWlmKDI2PT0oMHxtKSl7aWYoKDB8Yyk8NCl7bD0tMjticmVha31hW3A+PjJdPUEsbD0wO2JyZWFrfWlmKDI4PT0oMHxtKSl7YVtwPj4yXT13KzQsbD05O2JyZWFrfWlmKDI5PT0oMHxtKSl7YVtwPj4yXT1B''@;'; put 'put ''LGw9MDticmVha319ZWxzZSBsPS0xfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gY0wobCxjLGYscCl7bHw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTAsaz0wO3c9KGZ8PTApLShjfD0wKXwwO2U6ZG97aWYoKDB8dyk+MSl7c3dpdGNoKDB8KG09KGI9MHxmZVtjKzE+PjBdKTw8MjQ+''@;'; put 'put ''PjI0PzB8ZjAoYixBPTB8ZmVbYz4+MF0pOjB8WHRbbCs3MisoMjU1JihBPTB8ZmVbYz4+MF0pKT4+MF0pKXtjYXNlIDI5OmlmKCEoMTw8KDMxJihrPTI1NSZBKSkmYVs1Njk0MCsoKGs+Pj41fCgwfFh0WzE0Mzc4OCsoMjU1JmIpPj4wXSk8PDMpPDwyKT4+Ml0pKXthW3A+PjJdPWMsZj0wO2Jy''@;'; put 'put ''ZWFrIGV9YnJlYWs7Y2FzZSAyNDpjYXNlIDIyOmJyZWFrO2Nhc2UgNTpkZWZhdWx0OmFbcD4+Ml09YyxmPTA7YnJlYWsgZTtjYXNlIDY6aWYoKDB8dyk8Myl7Zj0tMjticmVhayBlfWFbcD4+Ml09YyxmPTA7YnJlYWsgZTtjYXNlIDc6aWYoKDB8dyk8NCl7Zj0tMjticmVhayBlfWFbcD4+Ml09''@;'; put 'put ''YyxmPTA7YnJlYWsgZTtjYXNlIDMwOmNhc2UgOTpjYXNlIDEwOmNhc2UgMjE6YVtwPj4yXT1jLGY9MjI7YnJlYWsgZX1rPWwrNzJ8MCxsPWM7dDpmb3IoOzspe2lmKCgwfChjPWYtKGI9bCsyfDApfDApKTw9MSl7Zj0tMTticmVhayBlfXN3aXRjaChBPTB8ZmVbYj4+MF0sMHwodz0obT0wfGZl''@;'; put 'put ''W2wrMz4+MF0pPDwyND4+MjQ/MHxmMChtLEEpOjB8WHRbaysoMjU1JkEpPj4wXSkpe2Nhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMjpsPWI7Y29udGludWUgdDtjYXNlIDU6bT0yMzticmVhayB0O2Nhc2UgNjptPTI0O2JyZWFrIHQ7Y2FzZSA3Om09MjY7YnJlYWsgdDtj''@;'; put 'put ''YXNlIDE4Om09Mjg7YnJlYWsgdDtjYXNlIDI5OmJyZWFrO2RlZmF1bHQ6bT0yOTticmVhayB0fWlmKCEoMTw8KDMxJihjPTI1NSZBKSkmYVs1Njk0MCsoKGM+Pj41fCgwfFh0WzE0NDA0NCsoMjU1Jm0pPj4wXSk8PDMpPDwyKT4+Ml0pKXttPTIyO2JyZWFrfWw9Yn1pZigyMj09KDB8bSkpe2Fb''@;'; put 'put ''cD4+Ml09YixmPTA7YnJlYWt9aWYoMjM9PSgwfG0pKXthW3A+PjJdPWIsZj0wO2JyZWFrfWlmKDI0PT0oMHxtKSl7aWYoKDB8Yyk8Myl7Zj0tMjticmVha31hW3A+PjJdPWIsZj0wO2JyZWFrfWlmKDI2PT0oMHxtKSl7aWYoKDB8Yyk8NCl7Zj0tMjticmVha31hW3A+PjJdPWIsZj0wO2JyZWFr''@;'; put 'put ''fWlmKDI4PT0oMHxtKSl7YVtwPj4yXT1sKzQsZj0yODticmVha31pZigyOT09KDB8bSkpe2FbcD4+Ml09YixmPTA7YnJlYWt9fWVsc2UgZj0tMX13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIEUxZShsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgYixtPTAsQT0wLHc9MDtiPWZ8PTA7''@;'; put 'put ''ZTpkb3tpZigoYi1jfDApPjEpe0E9MHxmZVtjKzE+PjBdLG09MHxmZVtjPj4wXTtkb3tpZighKEE8PDI0Pj4yNCkpe2lmKG08PDI0Pj4yND09MTIwKXttPTB8eDFlKGwsYysyfDAsZixwKTticmVhayBlfW09MHxYdFtsKzcyKygyNTUmbSk+PjBdO2JyZWFrfW09MHxmMChBLG0pfXdoaWxlKDAp''@;'; put 'put ''O2lmKDI1IT0oMHxtKSl7YVtwPj4yXT1jLG09MDticmVha313PWwrNzJ8MCxsPWM7dDpmb3IoOzspe2lmKChiLShBPWwrMnwwKXwwKTw9MSl7bT0tMTticmVhayBlfXN3aXRjaChmPTB8ZmVbQT4+MF0sMHwobT0obT0wfGZlW2wrMz4+MF0pPDwyND4+MjQ/MHxmMChtLGYpOjB8WHRbdysoMjU1''@;'; put 'put ''JmYpPj4wXSkpe2Nhc2UgMjU6bD1BO2JyZWFrO2Nhc2UgMTg6Zj0xNTticmVhayB0O2RlZmF1bHQ6Zj0xNjticmVhayB0fX1pZigxNT09KDB8Zikpe2FbcD4+Ml09bCs0LG09MTA7YnJlYWt9aWYoMTY9PSgwfGYpKXthW3A+PjJdPUEsbT0wO2JyZWFrfX1lbHNlIG09LTF9d2hpbGUoMCk7cmV0''@;'; put 'put ''dXJuIDB8bX1mdW5jdGlvbiB4MWUobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTA7ZTpkb3tpZigoZi1jfDApPjEpe2lmKDI0IT0oLTImKG09KG09MHxmZVtjKzE+PjBdKTw8MjQ+PjI0PzB8ZjAobSwwfGZlW2M+PjBdKTowfFh0W2wrNzIrKDB8WHRbYz4+MF0p''@;'; put 'put ''Pj4wXSl8MCkpe2FbcD4+Ml09YyxmPTA7YnJlYWt9dz1sKzcyfDA7dDpmb3IoOzspe2lmKChmLShBPWMrMnwwKXwwKTw9MSl7Zj0tMTticmVhayBlfXN3aXRjaChsPTB8ZmVbQT4+MF0sMHwobT0obT0wfGZlW2MrMz4+MF0pPDwyND4+MjQ/MHxmMChtLGwpOjB8WHRbdysoMjU1JmwpPj4wXSkp''@;'; put 'put ''e2Nhc2UgMjQ6Y2FzZSAyNTpjPUE7YnJlYWs7Y2FzZSAxODptPTEzO2JyZWFrIHQ7ZGVmYXVsdDptPTE0O2JyZWFrIHR9fWlmKDEzPT0oMHxtKSl7YVtwPj4yXT1jKzQsZj0xMDticmVha31pZigxND09KDB8bSkpe2FbcD4+Ml09QSxmPTA7YnJlYWt9fWVsc2UgZj0tMX13aGlsZSgwKTtyZXR1''@;'; put 'put ''cm4gMHxmfWZ1bmN0aW9uIGE0KGwsYyxmLHApe2x8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MDt3PShSPWZ8PTApLShjfD0wKXwwO2U6ZG97aWYoKDB8dyk+MSl7c3dpdGNoKDB8KG09KGI9MHxmZVtjKzE+PjBdKTw8MjQ+PjI0PzB8ZjAoYixBPTB8ZmVbYz4+''@;'; put 'put ''MF0pOjB8WHRbbCs3MisoMjU1JihBPTB8ZmVbYz4+MF0pKT4+MF0pKXtjYXNlIDI5OmlmKCEoMTw8KDMxJihNPTI1NSZBKSkmYVs1Njk0MCsoKE0+Pj41fFh0WzE0Mzc4OCsoMjU1JmIpPj4wXTw8Myk8PDIpPj4yXSkpe2FbcD4+Ml09YyxtPTA7YnJlYWsgZX1icmVhaztjYXNlIDI0OmNhc2Ug''@;'; put 'put ''MjI6YnJlYWs7Y2FzZSA1OmFbcD4+Ml09YyxtPTA7YnJlYWsgZTtjYXNlIDY6aWYoKDB8dyk8Myl7bT0tMjticmVhayBlfWFbcD4+Ml09YyxtPTA7YnJlYWsgZTtjYXNlIDc6aWYoKDB8dyk8NCl7bT0tMjticmVhayBlfWFbcD4+Ml09YyxtPTA7YnJlYWsgZTtjYXNlIDE2OmlmKChSLShBPWMr''@;'; put 'put ''MnwwKXwwKTw9MSl7bT0tMTticmVhayBlfXN3aXRjaCgwfChtPShtPTB8ZmVbYyszPj4wXSk8PDI0Pj4yND8wfGYwKG0sMHxmZVtBPj4wXSk6MHxYdFtsKzcyKygwfFh0W0E+PjBdKT4+MF0pKXtjYXNlIDI3Om09MHx6SyhsLGMrNHwwLGYscCk7YnJlYWsgZTtjYXNlIDIwOm09MHxUMWUoYys0''@;'; put 'put ''fDAsZixwKTticmVhayBlO2RlZmF1bHQ6YVtwPj4yXT1BLG09MDticmVhayBlfWNhc2UgMTU6bT0wfEdLKGwsYysyfDAsZixwKTticmVhayBlO2Nhc2UgMTc6bT0wfEkxZShsLGMrMnwwLGYscCk7YnJlYWsgZTtkZWZhdWx0OmFbcD4+Ml09YyxtPTA7YnJlYWsgZX1NPWwrNzJ8MCxrPTAsbT1j''@;'; put 'put ''KzJ8MDt0OmZvcig7Oyl7bjpmb3IoOzspe2lmKCgwfChBPVItbXwwKSk8PTEpe209LTE7YnJlYWsgZX1zd2l0Y2goYj0wfGZlW20+PjBdLDB8KGM9KHc9MHxmZVttKzE+PjBdKTw8MjQ+PjI0PzB8ZjAodyxiKTowfFh0W00rKDI1NSZiKT4+MF0pKXtjYXNlIDU6RD0zNDticmVhayB0O2Nhc2Ug''@;'; put 'put ''NjpEPTM1O2JyZWFrIHQ7Y2FzZSA3OkQ9Mzc7YnJlYWsgdDtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOkQ9NTU7YnJlYWsgdDtjYXNlIDExOkQ9Njk7YnJlYWsgdDtjYXNlIDE3OmJyZWFrIHQ7Y2FzZSAyMzpicmVhayBuO2Nhc2UgMjk6aWYoISgxPDwoMzEmKGM9MjU1JmIpKSZhWzU2OTQwKygo''@;'; put 'put ''Yz4+PjV8WHRbMTQ0MDQ0KygyNTUmdyk+PjBdPDwzKTw8Mik+PjJdKSl7RD0zMjticmVhayB0fWJyZWFrO2Nhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMjpicmVhaztkZWZhdWx0OkQ9NzU7YnJlYWsgdH1tPW0rMnwwfWlmKDB8ayl7RD00MDticmVha31pZigoMHwoYz1S''@;'; put 'put ''LShiPW0rMnwwKXwwKSk8PTEpe209LTE7YnJlYWsgZX1zd2l0Y2goQT0wfGZlW2I+PjBdLDB8KHc9KGs9MHxmZVttKzM+PjBdKTw8MjQ+PjI0PzB8ZjAoayxBKTowfFh0W00rKDI1NSZBKT4+MF0pKXtjYXNlIDU6RD00OTticmVhayB0O2Nhc2UgNjpEPTUwO2JyZWFrIHQ7Y2FzZSA3OkQ9NTI7''@;'; put 'put ''YnJlYWsgdDtjYXNlIDI5OmlmKCEoMTw8KDMxJihjPTI1NSZBKSkmYVs1Njk0MCsoKGM+Pj41fFh0WzE0Mzc4OCsoMjU1JmspPj4wXTw8Myk8PDIpPj4yXSkpe0Q9NDc7YnJlYWsgdH1icmVhaztjYXNlIDI0OmNhc2UgMjI6YnJlYWs7ZGVmYXVsdDpEPTU0O2JyZWFrIHR9az0xLG09bSs0fDB9''@;'; put 'put ''dDpzd2l0Y2goMHxEKXtjYXNlIDMyOmNhc2UgMzQ6Y2FzZSA0MDpjYXNlIDc1OmFbcD4+Ml09bSxtPTA7YnJlYWsgZTtjYXNlIDM1OmlmKCgwfEEpPDMpe209LTI7YnJlYWsgZX1hW3A+PjJdPW0sbT0wO2JyZWFrIGU7Y2FzZSAzNzppZigoMHxBKTw0KXttPS0yO2JyZWFrIGV9YVtwPj4yXT1t''@;'; put 'put ''LG09MDticmVhayBlO2Nhc2UgNDc6Y2FzZSA0OTpjYXNlIDU0OmFbcD4+Ml09YixtPTA7YnJlYWsgZTtjYXNlIDUwOmlmKCgwfGMpPDMpe209LTI7YnJlYWsgZX1hW3A+PjJdPWIsbT0wO2JyZWFrIGU7Y2FzZSA1MjppZigoMHxjKTw0KXttPS0yO2JyZWFrIGV9YVtwPj4yXT1iLG09MDticmVh''@;'; put 'put ''ayBlO2Nhc2UgNTU6bjpmb3IoOzspe2lmKEQ9MCwoMHwodz1SLShBPW0rMnwwKXwwKSk8PTEpe209LTE7YnJlYWsgZX1zd2l0Y2goYz0wfGZlW0E+PjBdLDB8KGs9KGI9MHxmZVttKzM+PjBdKTw8MjQ+PjI0PzB8ZjAoYixjKTowfFh0W00rKDI1NSZjKT4+MF0pKXtjYXNlIDExOm09QSxEPTY5''@;'; put 'put ''O2JyZWFrIHQ7Y2FzZSAxNzptPUE7YnJlYWsgdDtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOm09QSxEPTU1O2JyZWFrO2Nhc2UgMjk6RD02MDticmVhayBuO2Nhc2UgMjQ6Y2FzZSAyMjpicmVhayBuO2Nhc2UgNTpEPTYzO2JyZWFrIG47Y2FzZSA2OkQ9NjQ7YnJlYWsgbjtjYXNlIDc6RD02Njti''@;'; put 'put ''cmVhayBuO2RlZmF1bHQ6RD02ODticmVhayBufX1pZig2MD09KDB8RCkpe2lmKCEoMTw8KDMxJihSPTI1NSZjKSkmYVs1Njk0MCsoKFI+Pj41fFh0WzE0Mzc4OCsoMjU1JmIpPj4wXTw8Myk8PDIpPj4yXSkpe2FbcD4+Ml09QSxtPTA7YnJlYWsgZX19ZWxzZXtpZig2Mz09KDB8RCkpe2FbcD4+''@;'; put 'put ''Ml09QSxtPTA7YnJlYWsgZX1pZig2ND09KDB8RCkpe2lmKCgwfHcpPDMpe209LTI7YnJlYWsgZX1hW3A+PjJdPUEsbT0wO2JyZWFrIGV9aWYoNjY9PSgwfEQpKXtpZigoMHx3KTw0KXttPS0yO2JyZWFrIGV9YVtwPj4yXT1BLG09MDticmVhayBlfWlmKDY4PT0oMHxEKSl7YVtwPj4yXT1BLG09''@;'; put 'put ''MDticmVhayBlfX1tPTB8RDFlKGwsbSs0fDAsZixwKTticmVhayBlfWlmKDY5PT0oMHxEKSl7YVtwPj4yXT1tKzIsbT0yO2JyZWFrfWlmKChSLShBPW0rMnwwKXwwKT4xKXtpZigwPT0oMHxmZVttKzM+PjBdKSYmNjI9PSgwfGZlW0E+PjBdKSl7YVtwPj4yXT1tKzQsbT00O2JyZWFrfWFbcD4+''@;'; put 'put ''Ml09QSxtPTB9ZWxzZSBtPS0xfWVsc2UgbT0tMX13aGlsZSgwKTtyZXR1cm4gMHxtfWZ1bmN0aW9uIHpLKGwsYyxmLHApe2x8PTAsY3w9MCxwfD0wO3ZhciB3LG09MCxBPTAsYj0wO3c9Znw9MDtlOmRve2lmKCh3LWN8MCk+MSl7aWYoMD09KDB8ZmVbYysxPj4wXSkmJjQ1PT0oMHxmZVtjPj4w''@;'; put 'put ''XSkpe0E9bCs3MnwwLG09YysyfDA7dDpmb3IoOzspe2lmKCgwfChjPXctbXwwKSk8PTEpe2Y9LTE7YnJlYWsgZX1zd2l0Y2gobD0wfGZlW20+PjBdLDB8KGY9KGY9MHxmZVttKzE+PjBdKTw8MjQ+PjI0PzB8ZjAoZixsKTowfFh0W0ErKDI1NSZsKT4+MF0pKXtjYXNlIDg6Y2FzZSAxOmNhc2Ug''@;'; put 'put ''MDpiPTE2O2JyZWFrIHQ7Y2FzZSA1OmRlZmF1bHQ6bT1tKzJ8MDtjb250aW51ZSB0O2Nhc2UgNjppZigoMHxjKTwzKXtmPS0yO2JyZWFrIGV9bT1tKzN8MDtjb250aW51ZSB0O2Nhc2UgNzppZigoMHxjKTw0KXtmPS0yO2JyZWFrIGV9bT1tKzR8MDtjb250aW51ZSB0O2Nhc2UgMjc6aWYoKHct''@;'; put 'put ''KGY9bSsyfDApfDApPD0xKXtmPS0xO2JyZWFrIGV9aWYoMHxmZVttKzM+PjBdKXttPWY7Y29udGludWUgdH1pZig0NT09KDB8ZmVbZj4+MF0pKWJyZWFrIHQ7bT1mO2NvbnRpbnVlIHR9fWlmKDE2PT0oMHxiKSl7YVtwPj4yXT1tLGY9MDticmVha31pZigody0oZj1tKzR8MCl8MCk8PTEpe2Y9''@;'; put 'put ''LTE7YnJlYWt9aWYoMD09KDB8ZmVbbSs1Pj4wXSkmJjYyPT0oMHxmZVtmPj4wXSkpe2FbcD4+Ml09bSs2LGY9MTM7YnJlYWt9YVtwPj4yXT1mLGY9MDticmVha31hW3A+PjJdPWMsZj0wfWVsc2UgZj0tMX13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIFQxZShsLGMsZil7aWYoZnw9MCwo''@;'; put 'put ''KGN8PTApLShsfD0wKXwwKT4xMSl7Zm9yKGM9MDs7KXtpZigoMHxjKT49Nil7Yz04O2JyZWFrfWlmKDB8ZmVbbCsxPj4wXSl7Yz0wO2JyZWFrfWlmKCgwfGZlW2w+PjBdKSE9KDB8ZmVbMTQ0MzAwK2M+PjBdKSl7Yz0wO2JyZWFrfWM9YysxfDAsbD1sKzJ8MH1hW2Y+PjJdPWx9ZWxzZSBjPS0x''@;'; put 'put ''O3JldHVybiAwfGN9ZnVuY3Rpb24gR0sobCxjLGYscCl7bHw9MCxwfD0wO3ZhciBELFIsRyxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MDtHPWxlLGxlPWxlKzE2fDAsUj1HLHc9KEQ9Znw9MCktKGN8PTApfDA7ZTpkb3tpZigoMHx3KT4xKXtzd2l0Y2goMHwobT0oZj0wfGZlW2MrMT4+MF0pPDwy''@;'; put 'put ''ND4+MjQ/MHxmMChmLEE9MHxmZVtjPj4wXSk6MHxYdFtsKzcyKygyNTUmKEE9MHxmZVtjPj4wXSkpPj4wXSkpe2Nhc2UgMjk6aWYoISgxPDwoMzEmKGs9MjU1JkEpKSZhWzU2OTQwKygoaz4+PjV8WHRbMTQzNzg4KygyNTUmZik+PjBdPDwzKTw8Mik+PjJdKSl7YVtwPj4yXT1jLGY9MDticmVh''@;'; put 'put ''ayBlfWJyZWFrO2Nhc2UgMjQ6Y2FzZSAyMjpicmVhaztjYXNlIDU6ZGVmYXVsdDphW3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSA2OmlmKCgwfHcpPDMpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSA3OmlmKCgwfHcpPDQpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPWMs''@;'; put 'put ''Zj0wO2JyZWFrIGV9az1sKzcyfDAsYj1jO3Q6Zm9yKDs7KXtpZigoMHwobT1ELShmPWIrMnwwKXwwKSk8PTEpe2Y9LTE7YnJlYWsgZX1zd2l0Y2godz0wfGZlW2Y+PjBdLDB8KGw9KEE9MHxmZVtiKzM+PjBdKTw8MjQ+PjI0PzB8ZjAoQSx3KTowfFh0W2srKDI1NSZ3KT4+MF0pKXtjYXNlIDI3''@;'; put 'put ''OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6Yj1mO2NvbnRpbnVlIHQ7Y2FzZSA1Ok09MjI7YnJlYWsgdDtjYXNlIDY6TT0yMzticmVhayB0O2Nhc2UgNzpNPTI1O2JyZWFrIHQ7Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTpNPTI3O2JyZWFrIHQ7Y2FzZSAxNTpNPTQ2O2JyZWFrIHQ7''@;'; put 'put ''Y2FzZSAyOTpicmVhaztkZWZhdWx0OmJyZWFrIHR9aWYoISgxPDwoMzEmKGI9MjU1JncpKSZhWzU2OTQwKygoYj4+PjV8WHRbMTQ0MDQ0KygyNTUmQSk+PjBdPDwzKTw8Mik+PjJdKSl7TT0yMTticmVha31iPWZ9aWYoMjE9PSgwfE0pKXthW3A+PjJdPWYsZj0wO2JyZWFrfWlmKDIyPT0oMHxN''@;'; put 'put ''KSl7YVtwPj4yXT1mLGY9MDticmVha31pZigyMz09KDB8TSkpe2lmKCgwfG0pPDMpe2Y9LTI7YnJlYWt9YVtwPj4yXT1mLGY9MDticmVha31pZigyNT09KDB8TSkpe2lmKCgwfG0pPDQpe2Y9LTI7YnJlYWt9YVtwPj4yXT1mLGY9MDticmVha31pZigyNz09KDB8TSkpe2lmKCEoMHxXSyhjLGYs''@;'; put 'put ''UikpKXthW3A+PjJdPWYsZj0wO2JyZWFrfXc9Yis0fDA7dDpmb3IoOzspe2lmKCgwfChBPUQtd3wwKSk8PTEpe2Y9LTE7YnJlYWsgZX1zd2l0Y2gobT0wfGZlW3c+PjBdLDB8KGY9KGY9MHxmZVt3KzE+PjBdKTw8MjQ+PjI0PzB8ZjAoZixtKTowfFh0W2srKDI1NSZtKT4+MF0pKXtjYXNlIDg6''@;'; put 'put ''Y2FzZSAxOmNhc2UgMDpNPTQwO2JyZWFrIHQ7Y2FzZSA1OmRlZmF1bHQ6dz13KzJ8MDtjb250aW51ZSB0O2Nhc2UgNjppZigoMHxBKTwzKXtmPS0yO2JyZWFrIGV9dz13KzN8MDtjb250aW51ZSB0O2Nhc2UgNzppZigoMHxBKTw0KXtmPS0yO2JyZWFrIGV9dz13KzR8MDtjb250aW51ZSB0O2Nh''@;'; put 'put ''c2UgMTU6aWYoKEQtKGY9dysyfDApfDApPD0xKXtmPS0xO2JyZWFrIGV9aWYoMHxmZVt3KzM+PjBdKXt3PWY7Y29udGludWUgdH1pZig2Mj09KDB8ZmVbZj4+MF0pKXtNPTQ0O2JyZWFrIHR9dz1mO2NvbnRpbnVlIHR9fWlmKDQwPT0oMHxNKSl7YVtwPj4yXT13LGY9MDticmVha31pZig0ND09''@;'; put 'put ''KDB8TSkpe2FbcD4+Ml09dys0LGY9MHxhW1I+PjJdO2JyZWFrfX1lbHNlIGlmKDQ2PT0oMHxNKSl7aWYoISgwfFdLKGMsZixSKSkpe2FbcD4+Ml09ZixmPTA7YnJlYWt9aWYoKEQtKGY9Yis0fDApfDApPD0xKXtmPS0xO2JyZWFrfWlmKDA9PSgwfGZlW2IrNT4+MF0pJiY2Mj09KDB8ZmVbZj4+''@;'; put 'put ''MF0pKXthW3A+PjJdPWIrNixmPTB8YVtSPj4yXTticmVha319YVtwPj4yXT1mLGY9MH1lbHNlIGY9LTF9d2hpbGUoMCk7cmV0dXJuIGxlPUcsMHxmfWZ1bmN0aW9uIEkxZShsLGMsZixwKXtsfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MCxrPTA7dz0oZnw9MCktKGN8PTApfDA7ZTpkb3tp''@;'; put 'put ''ZigoMHx3KT4xKXtzd2l0Y2goMHwobT0oYj0wfGZlW2MrMT4+MF0pPDwyND4+MjQ/MHxmMChiLEE9MHxmZVtjPj4wXSk6MHxYdFtsKzcyKygyNTUmKEE9MHxmZVtjPj4wXSkpPj4wXSkpe2Nhc2UgMjk6aWYoISgxPDwoMzEmKGs9MjU1JkEpKSZhWzU2OTQwKygoaz4+PjV8KDB8WHRbMTQzNzg4''@;'; put 'put ''KygyNTUmYik+PjBdKTw8Myk8PDIpPj4yXSkpe2FbcD4+Ml09YyxmPTA7YnJlYWsgZX1icmVhaztjYXNlIDI0OmNhc2UgMjI6YnJlYWs7Y2FzZSA1OmRlZmF1bHQ6YVtwPj4yXT1jLGY9MDticmVhayBlO2Nhc2UgNjppZigoMHx3KTwzKXtmPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGY9MDticmVh''@;'; put 'put ''ayBlO2Nhc2UgNzppZigoMHx3KTw0KXtmPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGY9MDticmVhayBlfWs9bCs3MnwwLGw9Yzt0OmZvcig7Oyl7aWYoKDB8KGM9Zi0odz1sKzJ8MCl8MCkpPD0xKXtmPS0xO2JyZWFrIGV9c3dpdGNoKEE9MHxmZVt3Pj4wXSwwfChiPShtPTB8ZmVbbCszPj4wXSk8''@;'; put 'put ''PDI0Pj4yND8wfGYwKG0sQSk6MHxYdFtrKygyNTUmQSk+PjBdKSl7Y2FzZSAyMzpjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6bD13O2NvbnRpbnVlIHQ7Y2FzZSA1Om09MjI7YnJlYWsgdDtjYXNlIDY6bT0yMzticmVhayB0O2Nhc2UgNzptPTI1O2JyZWFrIHQ7Y2Fz''@;'; put 'put ''ZSAxMDpjYXNlIDk6Y2FzZSAyMTptPTI3O2JyZWFrIHQ7Y2FzZSAxMTptPTM0O2JyZWFrIHQ7Y2FzZSAyOTpicmVhaztkZWZhdWx0Om09MzU7YnJlYWsgdH1pZighKDE8PCgzMSYoYz0yNTUmQSkpJmFbNTY5NDArKChjPj4+NXwoMHxYdFsxNDQwNDQrKDI1NSZtKT4+MF0pPDwzKTw8Mik+PjJd''@;'; put 'put ''KSl7bT0yMTticmVha31sPXd9aWYoMjE9PSgwfG0pKXthW3A+PjJdPXcsZj0wO2JyZWFrfWlmKDIyPT0oMHxtKSl7YVtwPj4yXT13LGY9MDticmVha31pZigyMz09KDB8bSkpe2lmKCgwfGMpPDMpe2Y9LTI7YnJlYWt9YVtwPj4yXT13LGY9MDticmVha31pZigyNT09KDB8bSkpe2lmKCgwfGMp''@;'; put 'put ''PDQpe2Y9LTI7YnJlYWt9YVtwPj4yXT13LGY9MDticmVha31pZigyNz09KDB8bSkpe3Q6Zm9yKDs7KXtpZigoZi0oYj13KzJ8MCl8MCk8PTEpe2Y9LTE7YnJlYWsgZX1zd2l0Y2goQT0wfGZlW2I+PjBdLDB8KG09KG09MHxmZVt3KzM+PjBdKTw8MjQ+PjI0PzB8ZjAobSxBKTowfFh0W2srKDI1''@;'; put 'put ''NSZBKT4+MF0pKXtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOnc9YixtPTI3O2JyZWFrO2Nhc2UgMTE6bT0zMjticmVhayB0O2RlZmF1bHQ6bT0zMzticmVhayB0fX1pZigzMj09KDB8bSkpe2FbcD4+Ml09dys0LGY9NTticmVha31pZigzMz09KDB8bSkpe2FbcD4+Ml09YixmPTA7YnJlYWt9fWVs''@;'; put 'put ''c2V7aWYoMzQ9PSgwfG0pKXthW3A+PjJdPWwrNCxmPTU7YnJlYWt9aWYoMzU9PSgwfG0pKXthW3A+PjJdPXcsZj0wO2JyZWFrfX19ZWxzZSBmPS0xfXdoaWxlKDApO3JldHVybiAwfGZ9ZnVuY3Rpb24gRDFlKGwsYyxmLHApe2x8PTAsZnw9MCxwfD0wO3ZhciBELEcscSxwZSxtPTAsQT0wLHc9''@;'; put 'put ''MCxiPTAsaz0wLE09MCxSPTA7cGU9bGUsbGU9bGUrMTZ8MCxhWyhHPXBlKT4+Ml09Y3w9MCxxPWYsRD1sKzcyfDAsbT0wO2U6Zm9yKDs7KXt0OmZvcig7Oyl7aWYoKDB8KGs9cS1jfDApKTw9MSl7Yz0tMTticmVhayBlfXN3aXRjaCh3PTB8ZmVbYz4+MF0sMHwoYj0oQT0wfGZlW2MrMT4+MF0p''@;'; put 'put ''PDwyND4+MjQ/MHxmMChBLHcpOjB8WHRbRCsoMjU1JncpPj4wXSkpe2Nhc2UgNTpSPTExO2JyZWFrIGU7Y2FzZSA2OlI9MTI7YnJlYWsgZTtjYXNlIDc6Uj0xNDticmVhayBlO2Nhc2UgMjM6Uj0xNjticmVhayB0O2Nhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6Uj0zMTticmVhayB0O2Nhc2UgMTQ6''@;'; put 'put ''Uj0zNzticmVhayB0O2Nhc2UgMjk6aWYoISgxPDwoMzEmKE09MjU1JncpKSZhWzU2OTQwKygoTT4+PjV8WHRbMTQ0MDQ0KygyNTUmQSk+PjBdPDwzKTw8Mik+PjJdKSl7Uj05O2JyZWFrIGV9YnJlYWs7Y2FzZSAyNzpjYXNlIDI2OmNhc2UgMjU6Y2FzZSAyNDpjYXNlIDIyOmJyZWFrO2RlZmF1''@;'; put 'put ''bHQ6Uj04OTticmVhayBlfWFbRz4+Ml09TT1jKzJ8MCxjPU19dDpkb3tpZigxNj09KDB8Uikpe2lmKFI9MCwwfG0pe1I9MTc7YnJlYWsgZX1pZihhW0c+PjJdPW09YysyfDAsKDB8KHc9cS0oQT1tKXwwKSk8PTEpe2M9LTE7YnJlYWsgZX1zd2l0Y2goaz0wfGZlW20+PjBdLDB8KE09KGI9MHxm''@;'; put 'put ''ZVtjKzM+PjBdKTw8MjQ+PjI0PzB8ZjAoYixrKTowfFh0W0QrKDI1NSZrKT4+MF0pKXtjYXNlIDU6Uj0yNTticmVhayBlO2Nhc2UgNjpSPTI2O2JyZWFrIGU7Y2FzZSA3OlI9Mjg7YnJlYWsgZTtjYXNlIDI0OmNhc2UgMjI6bT0xO2JyZWFrIHQ7Y2FzZSAyOTpicmVhaztkZWZhdWx0OlI9MzA7''@;'; put 'put ''YnJlYWsgZX1pZighKDE8PCgzMSYoTT0yNTUmaykpJmFbNTY5NDArKChNPj4+NXxYdFsxNDM3ODgrKDI1NSZiKT4+MF08PDMpPDwyKT4+Ml0pKXtSPTI0O2JyZWFrIGV9bT0xfWVsc2UgaWYoMzE9PSgwfFIpKWZvcig7Oyl7aWYoUj0wLGFbRz4+Ml09QT1jKzJ8MCwocS0odz1BKXwwKTw9MSl7''@;'; put 'put ''Yz0tMTticmVhayBlfXN3aXRjaChtPTB8ZmVbQT4+MF0sMHwoYz0oYz0wfGZlW2MrMz4+MF0pPDwyND4+MjQ/MHxmMChjLG0pOjB8WHRbRCsoMjU1Jm0pPj4wXSkpe2Nhc2UgMTQ6Yz1BLFI9Mzc7YnJlYWsgdDtjYXNlIDk6Y2FzZSAxMDpjYXNlIDIxOmM9QSxSPTMxO2JyZWFrO2RlZmF1bHQ6''@;'; put 'put ''Uj0zNjticmVhayBlfX19d2hpbGUoMCk7dDpkb3tpZigzNz09KDB8Uikpe2Zvcig7Oyl7aWYoUj0wLGFbRz4+Ml09dz1jKzJ8MCwocS0oYj13KXwwKTw9MSl7Yz0tMTticmVhayBlfWlmKEE9MHxmZVt3Pj4wXSwxMz09KDF8KGs9KG09MHxmZVtjKzM+PjBdKTw8MjQ+PjI0PzB8ZjAobSxBKTow''@;'; put 'put ''fFh0W0QrKDI1NSZBKT4+MF0pKSlicmVhaztzd2l0Y2goMHxrKXtjYXNlIDk6Y2FzZSAxMDpjYXNlIDIxOmM9dyxSPTM3O2JyZWFrO2RlZmF1bHQ6Uj00MzticmVhayBlfX1hW0c+PjJdPWM9Yys0fDA7bjpmb3IoOzspe2lmKCgwfCh3PXEtY3wwKSk8PTEpe2M9LTE7YnJlYWsgZX1pZihBPTB8''@;'; put 'put ''ZmVbYz4+MF0sKDB8KG09KG09MHxmZVtjKzE+PjBdKTw8MjQ+PjI0PzB8ZjAobSxBKTowfFh0W0QrKDI1NSZBKT4+MF0pKT09KDB8aykpYnJlYWs7c3dpdGNoKDB8bSl7Y2FzZSA4OmNhc2UgMTpjYXNlIDA6Uj01NjticmVhayBlO2Nhc2UgMjpSPTYxO2JyZWFrIGU7Y2FzZSA1OmRlZmF1bHQ6''@;'; put 'put ''YVtHPj4yXT1NPWMrMnwwLGM9TTtjb250aW51ZSBuO2Nhc2UgNjppZigoMHx3KTwzKXtjPS0yO2JyZWFrIGV9YVtHPj4yXT1NPWMrM3wwLGM9TTtjb250aW51ZSBuO2Nhc2UgNzppZigoMHx3KTw0KXtjPS0yO2JyZWFrIGV9YVtHPj4yXT1NPWMrNHwwLGM9TTtjb250aW51ZSBuO2Nhc2UgMzpp''@;'; put 'put ''ZigoMHwoYz0wfHVMKGwsYysyfDAsZixHKSkpPDEpe1I9NTk7YnJlYWsgZX1jPTB8YVtHPj4yXTtjb250aW51ZSBufX1pZihhW0c+PjJdPUE9YysyfDAsKHEtKGI9QSl8MCk8PTEpe2M9LTE7YnJlYWsgZX1zd2l0Y2godz0wfGZlW0E+PjBdLDB8KG09KG09MHxmZVtjKzM+PjBdKTw8MjQ+PjI0''@;'; put 'put ''PzB8ZjAobSx3KTowfFh0W0QrKDI1NSZ3KT4+MF0pKXtjYXNlIDExOlI9ODE7YnJlYWsgZTtjYXNlIDE3OlI9ODI7YnJlYWsgZTtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOmM9QTticmVhaztkZWZhdWx0OlI9Njg7YnJlYWsgZX1uOmZvcig7Oyl7aWYoYVtHPj4yXT1BPWMrMnwwLCgwfCh3PXEt''@;'; put 'put ''KG09QSl8MCkpPD0xKXtjPS0xO2JyZWFrIGV9c3dpdGNoKGs9MHxmZVtBPj4wXSwwfChNPShiPTB8ZmVbYyszPj4wXSk8PDI0Pj4yND8wfGYwKGIsayk6MHxYdFtEKygyNTUmayk+PjBdKSl7Y2FzZSA1OlI9NzY7YnJlYWsgZTtjYXNlIDY6Uj03NzticmVhayBlO2Nhc2UgNzpSPTc5O2JyZWFr''@;'; put 'put ''IGU7Y2FzZSAxMTpSPTgxO2JyZWFrIGU7Y2FzZSAxNzpSPTgyO2JyZWFrIGU7Y2FzZSAyNDpjYXNlIDIyOm09MDticmVhayB0O2Nhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6Yz1BO2JyZWFrO2Nhc2UgMjk6YnJlYWsgbjtkZWZhdWx0OlI9ODc7YnJlYWsgZX19aWYoISgxPDwoMzEmKE09MjU1Jmsp''@;'; put 'put ''KSZhWzU2OTQwKygoTT4+PjV8WHRbMTQzNzg4KygyNTUmYik+PjBdPDwzKTw8Mik+PjJdKSl7Uj03NTticmVhayBlfW09MH19d2hpbGUoMCk7YVtHPj4yXT1jPWMrNHwwfXN3aXRjaCgwfFIpe2Nhc2UgOTpjYXNlIDExOmNhc2UgMTc6Y2FzZSA1NjpjYXNlIDYxOmNhc2UgODk6YVtwPj4yXT1j''@;'; put 'put ''LGM9MDticmVhaztjYXNlIDEyOigwfGspPDM/Yz0tMjooYVtwPj4yXT1jLGM9MCk7YnJlYWs7Y2FzZSAxNDooMHxrKTw0P2M9LTI6KGFbcD4+Ml09YyxjPTApO2JyZWFrO2Nhc2UgMjQ6Y2FzZSAyNTpjYXNlIDg3OmFbcD4+Ml09bSxjPTA7YnJlYWs7Y2FzZSAyNjooMHx3KTwzP2M9LTI6KGFb''@;'; put 'put ''cD4+Ml09bSxjPTApO2JyZWFrO2Nhc2UgMjg6KDB8dyk8ND9jPS0yOihhW3A+PjJdPW0sYz0wKTticmVhaztjYXNlIDMwOmNhc2UgNzU6Y2FzZSA3NjphW3A+PjJdPUEsYz0wO2JyZWFrO2Nhc2UgMzY6YVtwPj4yXT13LGM9MDticmVhaztjYXNlIDQzOmNhc2UgNjg6YVtwPj4yXT1iLGM9MDti''@;'; put 'put ''cmVhaztjYXNlIDU5OmN8fChhW3A+PjJdPWFbRz4+Ml0sYz0wKTticmVhaztjYXNlIDc3OigwfHcpPDM/Yz0tMjooYVtwPj4yXT1BLGM9MCk7YnJlYWs7Y2FzZSA3OTooMHx3KTw0P2M9LTI6KGFbcD4+Ml09QSxjPTApO2JyZWFrO2Nhc2UgODE6YVtwPj4yXT1jKzQsYz0xO2JyZWFrO2Nhc2Ug''@;'; put 'put ''ODI6aWYoYVtHPj4yXT1tPUErMnwwLChxLShjPW0pfDApPjEpe2lmKDA9PSgwfGZlW0ErMz4+MF0pJiY2Mj09KDB8ZmVbbT4+MF0pKXthW3A+PjJdPUErNCxjPTM7YnJlYWt9YVtwPj4yXT1jLGM9MH1lbHNlIGM9LTF9cmV0dXJuIGxlPXBlLDB8Y31mdW5jdGlvbiBXSyhsLGMsZil7bHw9MCxj''@;'; put 'put ''fD0wLGFbKGZ8PTApPj4yXT0xMTtlOmRve2lmKDY9PShjLWx8MCkmJjA9PSgwfGZlW2wrMT4+MF0pKXtzd2l0Y2goMHxmZVtsPj4wXSl7Y2FzZSAxMjA6Yz0wO2JyZWFrO2Nhc2UgODg6Yz0xO2JyZWFrO2RlZmF1bHQ6Yz0xO2JyZWFrIGV9aWYoMHxmZVtsKzM+PjBdKWM9MTtlbHNle3N3aXRj''@;'; put 'put ''aCgwfGZlW2wrMj4+MF0pe2Nhc2UgMTA5OmJyZWFrO2Nhc2UgNzc6Yz0xO2JyZWFrO2RlZmF1bHQ6Yz0xO2JyZWFrIGV9aWYoMHxmZVtsKzU+PjBdKWM9MTtlbHNle3N3aXRjaCgwfGZlW2wrND4+MF0pe2Nhc2UgMTA4OmJyZWFrO2Nhc2UgNzY6Yz0wO2JyZWFrIGU7ZGVmYXVsdDpjPTE7YnJl''@;'; put 'put ''YWsgZX1jP2M9MDooYVtmPj4yXT0xMixjPTEpfX19ZWxzZSBjPTF9d2hpbGUoMCk7cmV0dXJuIDB8Y31mdW5jdGlvbiBZSyhsLGMsZixwLG0pe2x8PTAsZnw9MCxwfD0wLG18PTA7dmFyIGIsQT0wLHc9MCxrPTA7Yj03MisoY3w9MCl8MDtlOmZvcig7Oyl7dDpmb3IoOzspe2lmKCgwfCh3PXAt''@;'; put 'put ''ZnwwKSk8PTEpe2Y9LTE7YnJlYWsgZX1zd2l0Y2goQT0wfGZlW2Y+PjBdLDB8KGM9KGM9MHxmZVtmKzE+PjBdKTw8MjQ+PjI0PzB8ZjAoYyxBKTowfFh0W2IrKDI1NSZBKT4+MF0pKXtjYXNlIDg6Y2FzZSAxOmNhc2UgMDprPTEwO2JyZWFrIGU7Y2FzZSA2Oms9OTticmVhayB0O2Nhc2UgNzpr''@;'; put 'put ''PTE5O2JyZWFrIHQ7Y2FzZSA1OmRlZmF1bHQ6Zj1mKzJ8MDtjb250aW51ZSB0O2Nhc2UgMTM6Y2FzZSAxMjppZihBPWYrMnwwLCgwfGMpPT0oMHxsKSl7az0xMjticmVhayBlfWY9QTtjb250aW51ZSB0fX1pZig5IT0oMHxrKSlpZigxOSE9KDB8aykpO2Vsc2V7aWYoaz0wLCgwfHcpPDQpe2Y9''@;'; put 'put ''LTI7YnJlYWt9Zj1mKzR8MH1lbHNle2lmKGs9MCwoMHx3KTwzKXtmPS0yO2JyZWFrfWY9ZiszfDB9fWU6ZG97aWYoMTA9PSgwfGspKWFbbT4+Ml09ZixmPTA7ZWxzZSBpZigxMj09KDB8aykpaWYoKHAtQXwwKT4xKXtzd2l0Y2goYVttPj4yXT1BLHA9MHxmZVtmKzM+PjBdLGY9MHxmZVtBPj4w''@;'; put 'put ''XSwwfChmPXA8PDI0Pj4yND8wfGYwKHAsZik6MHxYdFtiKygyNTUmZik+PjBdKSl7Y2FzZSAyMDpjYXNlIDMwOmNhc2UgMTE6Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTpmPTI3O2JyZWFrIGV9Zj0wfWVsc2UgZj0tMjd9d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBMMWUobCxjLGYscCl7''@;'; put 'put ''bHw9MCxjfD0wLHB8PTA7dmFyIGIsbT0wLEE9MCx3PTAsaz0wO2I9Znw9MDtlOmRve2lmKChiLWN8MCk+MSlzd2l0Y2gobT0wfGZlW2MrMT4+MF0sbT1tPDwyND4+MjQ/MHxmMChtLDB8ZmVbYz4+MF0pOjB8WHRbbCs3MisoMHxYdFtjPj4wXSk+PjBdLDB8bSl7Y2FzZSAyNzptPTB8eksobCxj''@;'; put 'put ''KzJ8MCxmLHApO2JyZWFrIGU7Y2FzZSAyMDphW3A+PjJdPWMrMixtPTMzO2JyZWFrIGU7Y2FzZSAyNDpjYXNlIDIyOnc9bCs3MnwwO3Q6Zm9yKDs7KXtpZigoMHwoZj1iLShBPWMrMnwwKXwwKSk8PTEpe209LTE7YnJlYWsgZX1zd2l0Y2gobD0wfGZlW0E+PjBdLDB8KG09KG09MHxmZVtjKzM+''@;'; put 'put ''PjBdKTw8MjQ+PjI0PzB8ZjAobSxsKTowfFh0W3crKDI1NSZsKT4+MF0pKXtjYXNlIDI0OmNhc2UgMjI6Yz1BO2JyZWFrO2Nhc2UgMzA6az0xNTticmVhayB0O2Nhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6YnJlYWsgdDtkZWZhdWx0Oms9MjI7YnJlYWsgdH19aWYoMjI9PSgwfGspKXthW3A+PjJd''@;'; put 'put ''PUEsbT0wO2JyZWFrIGV9dDpkb3tpZigxNT09KDB8aykpe2lmKCgwfGYpPD0zKXttPS0xO2JyZWFrIGV9c3dpdGNoKG09MHxmZVtjKzQ+PjBdLDB8KG09KGw9MHxmZVtjKzU+PjBdKTw8MjQ+PjI0PzB8ZjAobCxtKTowfFh0W3crKDI1NSZtKT4+MF0pKXtjYXNlIDMwOmNhc2UgMTA6Y2FzZSA5''@;'; put 'put ''OmNhc2UgMjE6YnJlYWs7ZGVmYXVsdDpicmVhayB0fWFbcD4+Ml09QSxtPTA7YnJlYWsgZX19d2hpbGUoMCk7YVtwPj4yXT1BLG09MTY7YnJlYWsgZTtkZWZhdWx0OmFbcD4+Ml09YyxtPTA7YnJlYWsgZX1lbHNlIG09LTF9d2hpbGUoMCk7cmV0dXJuIDB8bX1mdW5jdGlvbiBPMWUobCxjLGYs''@;'; put 'put ''cCl7bHw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTA7dz0oZnw9MCktKGN8PTApfDA7ZTpkb3tpZigoMHx3KT4xKXtzd2l0Y2goMHwobT0oYj0wfGZlW2MrMT4+MF0pPDwyND4+MjQ/MHxmMChiLEE9MHxmZVtjPj4wXSk6MHxYdFtsKzcyKygyNTUmKEE9MHxmZVtjPj4wXSkpPj4wXSkpe2Nh''@;'; put 'put ''c2UgMjk6aWYoISgxPDwoMzEmKHc9MjU1JkEpKSZhWzU2OTQwKygodz4+PjV8KDB8WHRbMTQzNzg4KygyNTUmYik+PjBdKTw8Myk8PDIpPj4yXSkpe2FbcD4+Ml09YyxmPTA7YnJlYWsgZX1icmVhaztjYXNlIDI0OmNhc2UgMjI6YnJlYWs7Y2FzZSA1OmRlZmF1bHQ6YVtwPj4yXT1jLGY9MDti''@;'; put 'put ''cmVhayBlO2Nhc2UgNjppZigoMHx3KTwzKXtmPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGY9MDticmVhayBlO2Nhc2UgNzppZigoMHx3KTw0KXtmPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGY9MDticmVhayBlfWw9bCs3MnwwLGI9Yzt0OmZvcig7Oyl7aWYobT1iLCgwfChjPWYtKGI9YisyfDApfDAp''@;'; put 'put ''KTw9MSl7Zj0tMjA7YnJlYWsgZX1zd2l0Y2goQT0wfGZlW2I+PjBdLDB8KHc9KG09MHxmZVttKzM+PjBdKTw8MjQ+PjI0PzB8ZjAobSxBKTowfFh0W2wrKDI1NSZBKT4+MF0pKXtjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6Y29udGludWUgdDtjYXNlIDU6bT0yMjti''@;'; put 'put ''cmVhayB0O2Nhc2UgNjptPTIzO2JyZWFrIHQ7Y2FzZSA3Om09MjU7YnJlYWsgdDtjYXNlIDM2OmNhc2UgMzA6Y2FzZSAxMTpjYXNlIDMyOmNhc2UgMjE6Y2FzZSAxMDpjYXNlIDk6bT0yNzticmVhayB0O2Nhc2UgMjk6YnJlYWs7ZGVmYXVsdDptPTI4O2JyZWFrIHR9aWYoISgxPDwoMzEmKGM9''@;'; put 'put ''MjU1JkEpKSZhWzU2OTQwKygoYz4+PjV8KDB8WHRbMTQ0MDQ0KygyNTUmbSk+PjBdKTw8Myk8PDIpPj4yXSkpe209MjE7YnJlYWt9fWlmKDIxPT0oMHxtKSl7YVtwPj4yXT1iLGY9MDticmVha31pZigyMj09KDB8bSkpe2FbcD4+Ml09YixmPTA7YnJlYWt9aWYoMjM9PSgwfG0pKXtpZigoMHxj''@;'; put 'put ''KTwzKXtmPS0yO2JyZWFrfWFbcD4+Ml09YixmPTA7YnJlYWt9aWYoMjU9PSgwfG0pKXtpZigoMHxjKTw0KXtmPS0yO2JyZWFrfWFbcD4+Ml09YixmPTA7YnJlYWt9aWYoMjc9PSgwfG0pKXthW3A+PjJdPWIsZj0yMDticmVha31pZigyOD09KDB8bSkpe2FbcD4+Ml09YixmPTA7YnJlYWt9fWVs''@;'; put 'put ''c2UgZj0tMX13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIFVLKGwsYyxmKXtyZXR1cm4gbHw9MCxjfD0wLC0xPT0oMHwoZj0wfGZMKGZ8PTApKSk/Zj0wOihmZVtsKzY5Pj4wXT1mLGFbbD4+Ml09NjcsYVtsKzQ+PjJdPTY4LGFbbCs0OD4+Ml09MzEsYVtsKzcyPj4yXT1jLGFbYz4+Ml09''@;'; put 'put ''bCxmPTEpLDB8Zn1mdW5jdGlvbiBmTChsKXtsfD0wO3ZhciBjPTA7ZTpkb3tpZihsKWZvcihjPTA7Oyl7aWYoKDB8Yyk+PTYpe2M9LTE7YnJlYWsgZX1pZigwfENqKGwsMHxhWzYwMDY4KyhjPDwyKT4+Ml0pKWJyZWFrIGU7Yz1jKzF8MH1lbHNlIGM9Nn13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1''@;'; put 'put ''bmN0aW9uIHlqKGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgdz0wLGI9MCxrPTAsTT0wO2U6ZG97aWYocD4+PjA8bT4+PjApe009MHxhW2MrNzI+PjJdLHc9cCsxfDA7dDpkb3tpZigoMHx3KSE9KDB8bSkpe2I9NjU1MzUmKCgyNTUmKGs9MHxmZVtwPj4w''@;'; put 'put ''XSkpPDw4fDI1NSYodz0wfGZlW3c+PjBdKSk7bjpkb3tpZihiPDwxNj4+MTY8LTIpe2lmKGI8PDE2Pj4xNj49LTI1Nyl7aWYoYjw8MTY+PjE2IT0tMjU3KWJyZWFrIG47aWYoMT09KDB8ZikmMD09KDB8ZmVbYys2OT4+MF0pKWJyZWFrIHQ7YVtBPj4yXT1wKzIsYVtNPj4yXT1hW2wrMTY+PjJd''@;'; put 'put ''LHc9MTQ7YnJlYWsgZX1pZihiPDwxNj4+MTYhPS00MTY1KWJyZWFrIG47aWYoMT09KDB8Zikpc3dpdGNoKDB8ZmVbYys2OT4+MF0pe2Nhc2UgMDpjYXNlIDM6Y2FzZSA0OmNhc2UgNTpicmVhayB0fWlmKCgwfCh3PXArMnwwKSk9PSgwfG0pKXt3PS0xO2JyZWFrIGV9aWYoLTY1IT0oMHxmZVt3''@;'; put 'put ''Pj4wXSkpYnJlYWsgdDthW0E+PjJdPXArMyxhW00+PjJdPWFbbCs4Pj4yXSx3PTE0O2JyZWFrIGV9aWYoYjw8MTY+PjE2PDE1MzYwKXtpZihiPDwxNj4+MTYhPS0yKWJyZWFrIG47aWYoMT09KDB8ZikmMD09KDB8ZmVbYys2OT4+MF0pKWJyZWFrIHQ7YVtBPj4yXT1wKzIsYVtNPj4yXT1hW2wr''@;'; put 'put ''MjA+PjJdLHc9MTQ7YnJlYWsgZX1pZihiPDwxNj4+MTYhPTE1MzYwKWJyZWFrIG47aWYoKHc9MHxmZVtjKzY5Pj4wXSk8PDI0Pj4yND09NCl7aWYoMT09KDB8ZikpYnJlYWsgdH1lbHNlIGlmKDE9PSgwfGYpJnc8PDI0Pj4yND09MylicmVhayB0O2FbTT4+Ml09dz0wfGFbbCsyMD4+Ml0sdz0w''@;'; put 'put ''fHEwWzEyNyZhW3crKGY8PDIpPj4yXV0odyxwLG0sQSk7YnJlYWsgZX13aGlsZSgwKTtpZihrPDwyND4+MjQpe2lmKDE9PSgwfGYpfHc8PDI0Pj4yNCE9MClicmVhazthW00+PjJdPXc9MHxhW2wrMjA+PjJdLHc9MHxxMFsxMjcmYVt3KyhmPDwyKT4+Ml1dKHcscCxtLEEpO2JyZWFrIGV9aWYo''@;'; put 'put ''MT09KDB8ZikmJjU9PSgwfGZlW2MrNjk+PjBdKSlicmVhazthW00+PjJdPXc9MHxhW2wrMTY+PjJdLHc9MHxxMFsxMjcmYVt3KyhmPDwyKT4+Ml1dKHcscCxtLEEpO2JyZWFrIGV9aWYoKCgodz0wfGZlW2MrNjk+PjBdKTw8MjQ+PjI0KS0zfDApPj4+MDwzKXt3PS0xO2JyZWFrIGV9c3dpdGNo''@;'; put 'put ''KDB8ZmVbcD4+MF0pe2Nhc2UgNjA6Y2FzZSAwOnc9LTE7YnJlYWsgZTtjYXNlLTE3OmNhc2UtMTpjYXNlLTI6YnJlYWs7ZGVmYXVsdDpicmVhayB0fWlmKCEoMT09KDB8Zikmdzw8MjQ+PjI0PT0wKSl7dz0tMTticmVhayBlfX13aGlsZSgwKTthW00+PjJdPXc9MHxhW2wrKGZlW2MrNjk+PjBd''@;'; put 'put ''PDwyKT4+Ml0sdz0wfHEwWzEyNyZhW3crKGY8PDIpPj4yXV0odyxwLG0sQSl9ZWxzZSB3PS00fXdoaWxlKDApO3JldHVybiAwfHd9ZnVuY3Rpb24gX2oobCxjLGYscCl7bHw9MCxwfD0wO3ZhciBrLEE9MCx3PTAsYj0wO3c9KGs9Znw9MCktKGN8PTApfDA7ZTpkb3tpZigoMHx3KT4xKXtzd2l0''@;'; put 'put ''Y2goMHwoKGI9MHxmZVtjPj4wXSk8PDI0Pj4yND8wfGYwKGIsQT0wfGZlW2MrMT4+MF0pOjB8WHRbbCs3MisoMjU1JihBPTB8ZmVbYysxPj4wXSkpPj4wXSkpe2Nhc2UgMjk6aWYoISgxPDwoMzEmKHc9MjU1JkEpKSZhWzU2OTQwKygodz4+PjV8KDB8WHRbMTQzNzg4KygyNTUmYik+PjBdKTw8''@;'; put 'put ''Myk8PDIpPj4yXSkpe2FbcD4+Ml09YyxsPTA7YnJlYWsgZX1icmVhaztjYXNlIDI0OmNhc2UgMjI6YnJlYWs7Y2FzZSA1OmRlZmF1bHQ6YVtwPj4yXT1jLGw9MDticmVhayBlO2Nhc2UgNjppZigoMHx3KTwzKXtsPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGw9MDticmVhayBlO2Nhc2UgNzppZigo''@;'; put 'put ''MHx3KTw0KXtsPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGw9MDticmVhayBlO2Nhc2UgMTk6bD0wfFoxZShsLGMrMnwwLGYscCk7YnJlYWsgZX1iPWwrNzJ8MCx3PWM7dDpmb3IoOzspe2lmKCgwfChjPWstKEE9dysyfDApfDApKTw9MSl7bD0tMTticmVhayBlfXN3aXRjaChmPTB8ZmVbdyszPj4w''@;'; put 'put ''XSwwfCgobD0wfGZlW0E+PjBdKTw8MjQ+PjI0PzB8ZjAobCxmKTowfFh0W2IrKDI1NSZmKT4+MF0pKXtjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6dz1BO2NvbnRpbnVlIHQ7Y2FzZSA1OmY9MjM7YnJlYWsgdDtjYXNlIDY6Zj0yNDticmVhayB0O2Nhc2UgNzpmPTI2''@;'; put 'put ''O2JyZWFrIHQ7Y2FzZSAxODpmPTI4O2JyZWFrIHQ7Y2FzZSAyOTpicmVhaztkZWZhdWx0OmY9Mjk7YnJlYWsgdH1pZighKDE8PCgzMSYoYz0yNTUmZikpJmFbNTY5NDArKChjPj4+NXwoMHxYdFsxNDQwNDQrKDI1NSZsKT4+MF0pPDwzKTw8Mik+PjJdKSl7Zj0yMjticmVha313PUF9aWYoMjI9''@;'; put 'put ''PSgwfGYpKXthW3A+PjJdPUEsbD0wO2JyZWFrfWlmKDIzPT0oMHxmKSl7YVtwPj4yXT1BLGw9MDticmVha31pZigyND09KDB8Zikpe2lmKCgwfGMpPDMpe2w9LTI7YnJlYWt9YVtwPj4yXT1BLGw9MDticmVha31pZigyNj09KDB8Zikpe2lmKCgwfGMpPDQpe2w9LTI7YnJlYWt9YVtwPj4yXT1B''@;'; put 'put ''LGw9MDticmVha31pZigyOD09KDB8Zikpe2FbcD4+Ml09dys0LGw9OTticmVha31pZigyOT09KDB8Zikpe2FbcD4+Ml09QSxsPTA7YnJlYWt9fWVsc2UgbD0tMX13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIGoxZShsLGMsZixwKXtsfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MCxr''@;'; put 'put ''PTA7dz0oZnw9MCktKGN8PTApfDA7ZTpkb3tpZigoMHx3KT4xKXtzd2l0Y2goMHwobT0oYj0wfGZlW2M+PjBdKTw8MjQ+PjI0PzB8ZjAoYixBPTB8ZmVbYysxPj4wXSk6MHxYdFtsKzcyKygyNTUmKEE9MHxmZVtjKzE+PjBdKSk+PjBdKSl7Y2FzZSAyOTppZighKDE8PCgzMSYoaz0yNTUmQSkp''@;'; put 'put ''JmFbNTY5NDArKChrPj4+NXwoMHxYdFsxNDM3ODgrKDI1NSZiKT4+MF0pPDwzKTw8Mik+PjJdKSl7YVtwPj4yXT1jLGY9MDticmVhayBlfWJyZWFrO2Nhc2UgMjQ6Y2FzZSAyMjpicmVhaztjYXNlIDU6ZGVmYXVsdDphW3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSA2OmlmKCgwfHcpPDMpe2Y9''@;'; put 'put ''LTI7YnJlYWsgZX1hW3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSA3OmlmKCgwfHcpPDQpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSAzMDpjYXNlIDk6Y2FzZSAxMDpjYXNlIDIxOmFbcD4+Ml09YyxmPTIyO2JyZWFrIGV9az1sKzcyfDAsbD1jO3Q6Zm9yKDs7KXtp''@;'; put 'put ''ZigoMHwoYz1mLShiPWwrMnwwKXwwKSk8PTEpe2Y9LTE7YnJlYWsgZX1zd2l0Y2goQT0wfGZlW2wrMz4+MF0sMHwodz0obT0wfGZlW2I+PjBdKTw8MjQ+PjI0PzB8ZjAobSxBKTowfFh0W2srKDI1NSZBKT4+MF0pKXtjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6bD1i''@;'; put 'put ''O2NvbnRpbnVlIHQ7Y2FzZSA1Om09MjM7YnJlYWsgdDtjYXNlIDY6bT0yNDticmVhayB0O2Nhc2UgNzptPTI2O2JyZWFrIHQ7Y2FzZSAxODptPTI4O2JyZWFrIHQ7Y2FzZSAyOTpicmVhaztkZWZhdWx0Om09Mjk7YnJlYWsgdH1pZighKDE8PCgzMSYoYz0yNTUmQSkpJmFbNTY5NDArKChjPj4+''@;'; put 'put ''NXwoMHxYdFsxNDQwNDQrKDI1NSZtKT4+MF0pPDwzKTw8Mik+PjJdKSl7bT0yMjticmVha31sPWJ9aWYoMjI9PSgwfG0pKXthW3A+PjJdPWIsZj0wO2JyZWFrfWlmKDIzPT0oMHxtKSl7YVtwPj4yXT1iLGY9MDticmVha31pZigyND09KDB8bSkpe2lmKCgwfGMpPDMpe2Y9LTI7YnJlYWt9YVtw''@;'; put 'put ''Pj4yXT1iLGY9MDticmVha31pZigyNj09KDB8bSkpe2lmKCgwfGMpPDQpe2Y9LTI7YnJlYWt9YVtwPj4yXT1iLGY9MDticmVha31pZigyOD09KDB8bSkpe2FbcD4+Ml09bCs0LGY9Mjg7YnJlYWt9aWYoMjk9PSgwfG0pKXthW3A+PjJdPWIsZj0wO2JyZWFrfX1lbHNlIGY9LTF9d2hpbGUoMCk7''@;'; put 'put ''cmV0dXJuIDB8Zn1mdW5jdGlvbiBaMWUobCxjLGYscCl7bHw9MCxjfD0wLHB8PTA7dmFyIGIsbT0wLEE9MCx3PTA7Yj1mfD0wO2U6ZG97aWYoKGItY3wwKT4xKXtBPTB8ZmVbYz4+MF0sbT0wfGZlW2MrMT4+MF07ZG97aWYoIShBPDwyND4+MjQpKXtpZihtPDwyND4+MjQ9PTEyMCl7bT0wfG5B''@;'; put 'put ''ZShsLGMrMnwwLGYscCk7YnJlYWsgZX1tPTB8WHRbbCs3MisoMjU1Jm0pPj4wXTticmVha31tPTB8ZjAoQSxtKX13aGlsZSgwKTtpZigyNSE9KDB8bSkpe2FbcD4+Ml09YyxtPTA7YnJlYWt9dz1sKzcyfDAsbD1jO3Q6Zm9yKDs7KXtpZigoYi0oQT1sKzJ8MCl8MCk8PTEpe209LTE7YnJlYWsg''@;'; put 'put ''ZX1zd2l0Y2goZj0wfGZlW2wrMz4+MF0sMHwobT0obT0wfGZlW0E+PjBdKTw8MjQ+PjI0PzB8ZjAobSxmKTowfFh0W3crKDI1NSZmKT4+MF0pKXtjYXNlIDI1Omw9QTticmVhaztjYXNlIDE4OmY9MTU7YnJlYWsgdDtkZWZhdWx0OmY9MTY7YnJlYWsgdH19aWYoMTU9PSgwfGYpKXthW3A+PjJd''@;'; put 'put ''PWwrNCxtPTEwO2JyZWFrfWlmKDE2PT0oMHxmKSl7YVtwPj4yXT1BLG09MDticmVha319ZWxzZSBtPS0xfXdoaWxlKDApO3JldHVybiAwfG19ZnVuY3Rpb24gbkFlKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wO2U6ZG97aWYoKGYtY3wwKT4xKXtpZigyNCE9''@;'; put 'put ''KC0yJihtPShtPTB8ZmVbYz4+MF0pPDwyND4+MjQ/MHxmMChtLDB8ZmVbYysxPj4wXSk6MHxYdFtsKzcyKygwfFh0W2MrMT4+MF0pPj4wXSl8MCkpe2FbcD4+Ml09YyxmPTA7YnJlYWt9dz1sKzcyfDA7dDpmb3IoOzspe2lmKChmLShBPWMrMnwwKXwwKTw9MSl7Zj0tMTticmVhayBlfXN3aXRj''@;'; put 'put ''aChsPTB8ZmVbYyszPj4wXSwwfChtPShtPTB8ZmVbQT4+MF0pPDwyND4+MjQ/MHxmMChtLGwpOjB8WHRbdysoMjU1JmwpPj4wXSkpe2Nhc2UgMjQ6Y2FzZSAyNTpjPUE7YnJlYWs7Y2FzZSAxODptPTEzO2JyZWFrIHQ7ZGVmYXVsdDptPTE0O2JyZWFrIHR9fWlmKDEzPT0oMHxtKSl7YVtwPj4y''@;'; put 'put ''XT1jKzQsZj0xMDticmVha31pZigxND09KDB8bSkpe2FbcD4+Ml09QSxmPTA7YnJlYWt9fWVsc2UgZj0tMX13aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIHJBZShsLGMsZixwKXtsfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTA7dz0oUj1mfD0wKS0oY3w9''@;'; put 'put ''MCl8MDtlOmRve2lmKCgwfHcpPjEpe3N3aXRjaCgwfChtPShiPTB8ZmVbYz4+MF0pPDwyND4+MjQ/MHxmMChiLEE9MHxmZVtjKzE+PjBdKTowfFh0W2wrNzIrKDI1NSYoQT0wfGZlW2MrMT4+MF0pKT4+MF0pKXtjYXNlIDI5OmlmKCEoMTw8KDMxJihNPTI1NSZBKSkmYVs1Njk0MCsoKE0+Pj41''@;'; put 'put ''fFh0WzE0Mzc4OCsoMjU1JmIpPj4wXTw8Myk8PDIpPj4yXSkpe2FbcD4+Ml09YyxtPTA7YnJlYWsgZX1icmVhaztjYXNlIDI0OmNhc2UgMjI6YnJlYWs7Y2FzZSA1OmFbcD4+Ml09YyxtPTA7YnJlYWsgZTtjYXNlIDY6aWYoKDB8dyk8Myl7bT0tMjticmVhayBlfWFbcD4+Ml09YyxtPTA7YnJl''@;'; put 'put ''YWsgZTtjYXNlIDc6aWYoKDB8dyk8NCl7bT0tMjticmVhayBlfWFbcD4+Ml09YyxtPTA7YnJlYWsgZTtjYXNlIDE2OmlmKChSLShBPWMrMnwwKXwwKTw9MSl7bT0tMTticmVhayBlfXN3aXRjaCgwfChtPShtPTB8ZmVbQT4+MF0pPDwyND4+MjQ/MHxmMChtLDB8ZmVbYyszPj4wXSk6MHxYdFts''@;'; put 'put ''KzcyKygwfFh0W2MrMz4+MF0pPj4wXSkpe2Nhc2UgMjc6bT0wfHoxZShsLGMrNHwwLGYscCk7YnJlYWsgZTtjYXNlIDIwOm09MHxHMWUoYys0fDAsZixwKTticmVhayBlO2RlZmF1bHQ6YVtwPj4yXT1BLG09MDticmVhayBlfWNhc2UgMTU6bT0wfFhLKGwsYysyfDAsZixwKTticmVhayBlO2Nh''@;'; put 'put ''c2UgMTc6bT0wfFcxZShsLGMrMnwwLGYscCk7YnJlYWsgZTtkZWZhdWx0OmFbcD4+Ml09YyxtPTA7YnJlYWsgZX1NPWwrNzJ8MCxrPTAsbT1jKzJ8MDt0OmZvcig7Oyl7bjpmb3IoOzspe2lmKCgwfChBPVItbXwwKSk8PTEpe209LTE7YnJlYWsgZX1zd2l0Y2goYj0wfGZlW20rMT4+MF0sMHwo''@;'; put 'put ''Yz0odz0wfGZlW20+PjBdKTw8MjQ+PjI0PzB8ZjAodyxiKTowfFh0W00rKDI1NSZiKT4+MF0pKXtjYXNlIDU6RD0zNDticmVhayB0O2Nhc2UgNjpEPTM1O2JyZWFrIHQ7Y2FzZSA3OkQ9Mzc7YnJlYWsgdDtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOkQ9NTU7YnJlYWsgdDtjYXNlIDExOkQ9Njk7''@;'; put 'put ''YnJlYWsgdDtjYXNlIDE3OmJyZWFrIHQ7Y2FzZSAyMzpicmVhayBuO2Nhc2UgMjk6aWYoISgxPDwoMzEmKGM9MjU1JmIpKSZhWzU2OTQwKygoYz4+PjV8WHRbMTQ0MDQ0KygyNTUmdyk+PjBdPDwzKTw8Mik+PjJdKSl7RD0zMjticmVhayB0fWJyZWFrO2Nhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1''@;'; put 'put ''OmNhc2UgMjQ6Y2FzZSAyMjpicmVhaztkZWZhdWx0OkQ9NzU7YnJlYWsgdH1tPW0rMnwwfWlmKDB8ayl7RD00MDticmVha31pZigoMHwoaz1SLShjPW0rMnwwKXwwKSk8PTEpe209LTE7YnJlYWsgZX1zd2l0Y2godz0wfGZlW20rMz4+MF0sMHwoYj0oQT0wfGZlW2M+PjBdKTw8MjQ+PjI0PzB8''@;'; put 'put ''ZjAoQSx3KTowfFh0W00rKDI1NSZ3KT4+MF0pKXtjYXNlIDU6RD00OTticmVhayB0O2Nhc2UgNjpEPTUwO2JyZWFrIHQ7Y2FzZSA3OkQ9NTI7YnJlYWsgdDtjYXNlIDI5OmlmKCEoMTw8KDMxJihrPTI1NSZ3KSkmYVs1Njk0MCsoKGs+Pj41fFh0WzE0Mzc4OCsoMjU1JkEpPj4wXTw8Myk8PDIp''@;'; put 'put ''Pj4yXSkpe0Q9NDc7YnJlYWsgdH1icmVhaztjYXNlIDI0OmNhc2UgMjI6YnJlYWs7ZGVmYXVsdDpEPTU0O2JyZWFrIHR9az0xLG09bSs0fDB9dDpzd2l0Y2goMHxEKXtjYXNlIDMyOmNhc2UgMzQ6Y2FzZSA0MDpjYXNlIDc1OmFbcD4+Ml09bSxtPTA7YnJlYWsgZTtjYXNlIDM1OmlmKCgwfEEp''@;'; put 'put ''PDMpe209LTI7YnJlYWsgZX1hW3A+PjJdPW0sbT0wO2JyZWFrIGU7Y2FzZSAzNzppZigoMHxBKTw0KXttPS0yO2JyZWFrIGV9YVtwPj4yXT1tLG09MDticmVhayBlO2Nhc2UgNDc6Y2FzZSA0OTpjYXNlIDU0OmFbcD4+Ml09YyxtPTA7YnJlYWsgZTtjYXNlIDUwOmlmKCgwfGspPDMpe209LTI7''@;'; put 'put ''YnJlYWsgZX1hW3A+PjJdPWMsbT0wO2JyZWFrIGU7Y2FzZSA1MjppZigoMHxrKTw0KXttPS0yO2JyZWFrIGV9YVtwPj4yXT1jLG09MDticmVhayBlO2Nhc2UgNTU6bjpmb3IoOzspe2lmKEQ9MCwoMHwodz1SLShBPW0rMnwwKXwwKSk8PTEpe209LTE7YnJlYWsgZX1zd2l0Y2goYz0wfGZlW20r''@;'; put 'put ''Mz4+MF0sMHwoaz0oYj0wfGZlW0E+PjBdKTw8MjQ+PjI0PzB8ZjAoYixjKTowfFh0W00rKDI1NSZjKT4+MF0pKXtjYXNlIDExOm09QSxEPTY5O2JyZWFrIHQ7Y2FzZSAxNzptPUE7YnJlYWsgdDtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOm09QSxEPTU1O2JyZWFrO2Nhc2UgMjk6RD02MDticmVh''@;'; put 'put ''ayBuO2Nhc2UgMjQ6Y2FzZSAyMjpicmVhayBuO2Nhc2UgNTpEPTYzO2JyZWFrIG47Y2FzZSA2OkQ9NjQ7YnJlYWsgbjtjYXNlIDc6RD02NjticmVhayBuO2RlZmF1bHQ6RD02ODticmVhayBufX1pZig2MD09KDB8RCkpe2lmKCEoMTw8KDMxJihSPTI1NSZjKSkmYVs1Njk0MCsoKFI+Pj41fFh0''@;'; put 'put ''WzE0Mzc4OCsoMjU1JmIpPj4wXTw8Myk8PDIpPj4yXSkpe2FbcD4+Ml09QSxtPTA7YnJlYWsgZX19ZWxzZXtpZig2Mz09KDB8RCkpe2FbcD4+Ml09QSxtPTA7YnJlYWsgZX1pZig2ND09KDB8RCkpe2lmKCgwfHcpPDMpe209LTI7YnJlYWsgZX1hW3A+PjJdPUEsbT0wO2JyZWFrIGV9aWYoNjY9''@;'; put 'put ''PSgwfEQpKXtpZigoMHx3KTw0KXttPS0yO2JyZWFrIGV9YVtwPj4yXT1BLG09MDticmVhayBlfWlmKDY4PT0oMHxEKSl7YVtwPj4yXT1BLG09MDticmVhayBlfX1tPTB8WTFlKGwsbSs0fDAsZixwKTticmVhayBlfWlmKDY5PT0oMHxEKSl7YVtwPj4yXT1tKzIsbT0yO2JyZWFrfWlmKChSLShB''@;'; put 'put ''PW0rMnwwKXwwKT4xKXtpZigwPT0oMHxmZVtBPj4wXSkmJjYyPT0oMHxmZVttKzM+PjBdKSl7YVtwPj4yXT1tKzQsbT00O2JyZWFrfWFbcD4+Ml09QSxtPTB9ZWxzZSBtPS0xfWVsc2UgbT0tMX13aGlsZSgwKTtyZXR1cm4gMHxtfWZ1bmN0aW9uIHoxZShsLGMsZixwKXtsfD0wLGN8PTAscHw9''@;'; put 'put ''MDt2YXIgdyxtPTAsQT0wLGI9MDt3PWZ8PTA7ZTpkb3tpZigody1jfDApPjEpe2lmKDA9PSgwfGZlW2M+PjBdKSYmNDU9PSgwfGZlW2MrMT4+MF0pKXtBPWwrNzJ8MCxtPWMrMnwwO3Q6Zm9yKDs7KXtpZigoMHwoYz13LW18MCkpPD0xKXtmPS0xO2JyZWFrIGV9c3dpdGNoKGw9MHxmZVttKzE+''@;'; put 'put ''PjBdLDB8KGY9KGY9MHxmZVttPj4wXSk8PDI0Pj4yND8wfGYwKGYsbCk6MHxYdFtBKygyNTUmbCk+PjBdKSl7Y2FzZSA4OmNhc2UgMTpjYXNlIDA6Yj0xNjticmVhayB0O2Nhc2UgNTpkZWZhdWx0Om09bSsyfDA7Y29udGludWUgdDtjYXNlIDY6aWYoKDB8Yyk8Myl7Zj0tMjticmVhayBlfW09''@;'; put 'put ''bSszfDA7Y29udGludWUgdDtjYXNlIDc6aWYoKDB8Yyk8NCl7Zj0tMjticmVhayBlfW09bSs0fDA7Y29udGludWUgdDtjYXNlIDI3OmlmKCh3LShmPW0rMnwwKXwwKTw9MSl7Zj0tMTticmVhayBlfWlmKDB8ZmVbZj4+MF0pe209Zjtjb250aW51ZSB0fWlmKDQ1PT0oMHxmZVttKzM+PjBdKSli''@;'; put 'put ''cmVhayB0O209Zjtjb250aW51ZSB0fX1pZigxNj09KDB8Yikpe2FbcD4+Ml09bSxmPTA7YnJlYWt9aWYoKHctKGY9bSs0fDApfDApPD0xKXtmPS0xO2JyZWFrfWlmKDA9PSgwfGZlW2Y+PjBdKSYmNjI9PSgwfGZlW20rNT4+MF0pKXthW3A+PjJdPW0rNixmPTEzO2JyZWFrfWFbcD4+Ml09Zixm''@;'; put 'put ''PTA7YnJlYWt9YVtwPj4yXT1jLGY9MH1lbHNlIGY9LTF9d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBHMWUobCxjLGYpe2lmKGZ8PTAsKChjfD0wKS0obHw9MCl8MCk+MTEpe2ZvcihjPTA7Oyl7aWYoKDB8Yyk+PTYpe2M9ODticmVha31pZigwfGZlW2w+PjBdKXtjPTA7YnJlYWt9aWYo''@;'; put 'put ''KDB8ZmVbbCsxPj4wXSkhPSgwfGZlWzE0NDMwMCtjPj4wXSkpe2M9MDticmVha31jPWMrMXwwLGw9bCsyfDB9YVtmPj4yXT1sfWVsc2UgYz0tMTtyZXR1cm4gMHxjfWZ1bmN0aW9uIFhLKGwsYyxmLHApe2x8PTAscHw9MDt2YXIgRCxSLEcsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTA7Rz1sZSxs''@;'; put 'put ''ZT1sZSsxNnwwLFI9RyxBPShEPWZ8PTApLShjfD0wKXwwO2U6ZG97aWYoKDB8QSk+MSl7c3dpdGNoKDB8KGY9KHc9MHxmZVtjPj4wXSk8PDI0Pj4yND8wfGYwKHcsbT0wfGZlW2MrMT4+MF0pOjB8WHRbbCs3MisoMjU1JihtPTB8ZmVbYysxPj4wXSkpPj4wXSkpe2Nhc2UgMjk6aWYoISgxPDwo''@;'; put 'put ''MzEmKGs9MjU1Jm0pKSZhWzU2OTQwKygoaz4+PjV8WHRbMTQzNzg4KygyNTUmdyk+PjBdPDwzKTw8Mik+PjJdKSl7YVtwPj4yXT1jLGY9MDticmVhayBlfWJyZWFrO2Nhc2UgMjQ6Y2FzZSAyMjpicmVhaztjYXNlIDU6ZGVmYXVsdDphW3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSA2OmlmKCgw''@;'; put 'put ''fEEpPDMpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSA3OmlmKCgwfEEpPDQpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPWMsZj0wO2JyZWFrIGV9az1sKzcyfDAsYj1jO3Q6Zm9yKDs7KXtpZigoMHwobT1ELShmPWIrMnwwKXwwKSk8PTEpe2Y9LTE7YnJlYWsgZX1zd2l0''@;'; put 'put ''Y2godz0wfGZlW2IrMz4+MF0sMHwobD0oQT0wfGZlW2Y+PjBdKTw8MjQ+PjI0PzB8ZjAoQSx3KTowfFh0W2srKDI1NSZ3KT4+MF0pKXtjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6Yj1mO2NvbnRpbnVlIHQ7Y2FzZSA1Ok09MjI7YnJlYWsgdDtjYXNlIDY6TT0yMzti''@;'; put 'put ''cmVhayB0O2Nhc2UgNzpNPTI1O2JyZWFrIHQ7Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTpNPTI3O2JyZWFrIHQ7Y2FzZSAxNTpNPTQ2O2JyZWFrIHQ7Y2FzZSAyOTpicmVhaztkZWZhdWx0OmJyZWFrIHR9aWYoISgxPDwoMzEmKGI9MjU1JncpKSZhWzU2OTQwKygoYj4+PjV8WHRbMTQ0MDQ0Kygy''@;'; put 'put ''NTUmQSk+PjBdPDwzKTw8Mik+PjJdKSl7TT0yMTticmVha31iPWZ9aWYoMjE9PSgwfE0pKXthW3A+PjJdPWYsZj0wO2JyZWFrfWlmKDIyPT0oMHxNKSl7YVtwPj4yXT1mLGY9MDticmVha31pZigyMz09KDB8TSkpe2lmKCgwfG0pPDMpe2Y9LTI7YnJlYWt9YVtwPj4yXT1mLGY9MDticmVha31p''@;'; put 'put ''ZigyNT09KDB8TSkpe2lmKCgwfG0pPDQpe2Y9LTI7YnJlYWt9YVtwPj4yXT1mLGY9MDticmVha31pZigyNz09KDB8TSkpe2lmKCEoMHxLSyhjLGYsUikpKXthW3A+PjJdPWYsZj0wO2JyZWFrfXc9Yis0fDA7dDpmb3IoOzspe2lmKCgwfChBPUQtd3wwKSk8PTEpe2Y9LTE7YnJlYWsgZX1zd2l0''@;'; put 'put ''Y2gobT0wfGZlW3crMT4+MF0sMHwoZj0oZj0wfGZlW3c+PjBdKTw8MjQ+PjI0PzB8ZjAoZixtKTowfFh0W2srKDI1NSZtKT4+MF0pKXtjYXNlIDg6Y2FzZSAxOmNhc2UgMDpNPTQwO2JyZWFrIHQ7Y2FzZSA1OmRlZmF1bHQ6dz13KzJ8MDtjb250aW51ZSB0O2Nhc2UgNjppZigoMHxBKTwzKXtm''@;'; put 'put ''PS0yO2JyZWFrIGV9dz13KzN8MDtjb250aW51ZSB0O2Nhc2UgNzppZigoMHxBKTw0KXtmPS0yO2JyZWFrIGV9dz13KzR8MDtjb250aW51ZSB0O2Nhc2UgMTU6aWYoKEQtKGY9dysyfDApfDApPD0xKXtmPS0xO2JyZWFrIGV9aWYoMHxmZVtmPj4wXSl7dz1mO2NvbnRpbnVlIHR9aWYoNjI9PSgw''@;'; put 'put ''fGZlW3crMz4+MF0pKXtNPTQ0O2JyZWFrIHR9dz1mO2NvbnRpbnVlIHR9fWlmKDQwPT0oMHxNKSl7YVtwPj4yXT13LGY9MDticmVha31pZig0ND09KDB8TSkpe2FbcD4+Ml09dys0LGY9MHxhW1I+PjJdO2JyZWFrfX1lbHNlIGlmKDQ2PT0oMHxNKSl7aWYoISgwfEtLKGMsZixSKSkpe2FbcD4+''@;'; put 'put ''Ml09ZixmPTA7YnJlYWt9aWYoKEQtKGY9Yis0fDApfDApPD0xKXtmPS0xO2JyZWFrfWlmKDA9PSgwfGZlW2Y+PjBdKSYmNjI9PSgwfGZlW2IrNT4+MF0pKXthW3A+PjJdPWIrNixmPTB8YVtSPj4yXTticmVha319YVtwPj4yXT1mLGY9MH1lbHNlIGY9LTF9d2hpbGUoMCk7cmV0dXJuIGxlPUcs''@;'; put 'put ''MHxmfWZ1bmN0aW9uIFcxZShsLGMsZixwKXtsfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MCxrPTA7dz0oZnw9MCktKGN8PTApfDA7ZTpkb3tpZigoMHx3KT4xKXtzd2l0Y2goMHwobT0oYj0wfGZlW2M+PjBdKTw8MjQ+PjI0PzB8ZjAoYixBPTB8ZmVbYysxPj4wXSk6MHxYdFtsKzcyKygy''@;'; put 'put ''NTUmKEE9MHxmZVtjKzE+PjBdKSk+PjBdKSl7Y2FzZSAyOTppZighKDE8PCgzMSYoaz0yNTUmQSkpJmFbNTY5NDArKChrPj4+NXwoMHxYdFsxNDM3ODgrKDI1NSZiKT4+MF0pPDwzKTw8Mik+PjJdKSl7YVtwPj4yXT1jLGY9MDticmVhayBlfWJyZWFrO2Nhc2UgMjQ6Y2FzZSAyMjpicmVhaztj''@;'; put 'put ''YXNlIDU6ZGVmYXVsdDphW3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSA2OmlmKCgwfHcpPDMpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSA3OmlmKCgwfHcpPDQpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPWMsZj0wO2JyZWFrIGV9az1sKzcyfDAsbD1jO3Q6Zm9yKDs7''@;'; put 'put ''KXtpZigoMHwoYz1mLSh3PWwrMnwwKXwwKSk8PTEpe2Y9LTE7YnJlYWsgZX1zd2l0Y2goQT0wfGZlW2wrMz4+MF0sMHwoYj0obT0wfGZlW3c+PjBdKTw8MjQ+PjI0PzB8ZjAobSxBKTowfFh0W2srKDI1NSZBKT4+MF0pKXtjYXNlIDIzOmNhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6''@;'; put 'put ''Y2FzZSAyMjpsPXc7Y29udGludWUgdDtjYXNlIDU6bT0yMjticmVhayB0O2Nhc2UgNjptPTIzO2JyZWFrIHQ7Y2FzZSA3Om09MjU7YnJlYWsgdDtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOm09Mjc7YnJlYWsgdDtjYXNlIDExOm09MzQ7YnJlYWsgdDtjYXNlIDI5OmJyZWFrO2RlZmF1bHQ6bT0z''@;'; put 'put ''NTticmVhayB0fWlmKCEoMTw8KDMxJihjPTI1NSZBKSkmYVs1Njk0MCsoKGM+Pj41fCgwfFh0WzE0NDA0NCsoMjU1Jm0pPj4wXSk8PDMpPDwyKT4+Ml0pKXttPTIxO2JyZWFrfWw9d31pZigyMT09KDB8bSkpe2FbcD4+Ml09dyxmPTA7YnJlYWt9aWYoMjI9PSgwfG0pKXthW3A+PjJdPXcsZj0w''@;'; put 'put ''O2JyZWFrfWlmKDIzPT0oMHxtKSl7aWYoKDB8Yyk8Myl7Zj0tMjticmVha31hW3A+PjJdPXcsZj0wO2JyZWFrfWlmKDI1PT0oMHxtKSl7aWYoKDB8Yyk8NCl7Zj0tMjticmVha31hW3A+PjJdPXcsZj0wO2JyZWFrfWlmKDI3PT0oMHxtKSl7dDpmb3IoOzspe2lmKChmLShiPXcrMnwwKXwwKTw9''@;'; put 'put ''MSl7Zj0tMTticmVhayBlfXN3aXRjaChBPTB8ZmVbdyszPj4wXSwwfChtPShtPTB8ZmVbYj4+MF0pPDwyND4+MjQ/MHxmMChtLEEpOjB8WHRbaysoMjU1JkEpPj4wXSkpe2Nhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6dz1iLG09Mjc7YnJlYWs7Y2FzZSAxMTptPTMyO2JyZWFrIHQ7ZGVmYXVsdDpt''@;'; put 'put ''PTMzO2JyZWFrIHR9fWlmKDMyPT0oMHxtKSl7YVtwPj4yXT13KzQsZj01O2JyZWFrfWlmKDMzPT0oMHxtKSl7YVtwPj4yXT1iLGY9MDticmVha319ZWxzZXtpZigzND09KDB8bSkpe2FbcD4+Ml09bCs0LGY9NTticmVha31pZigzNT09KDB8bSkpe2FbcD4+Ml09dyxmPTA7YnJlYWt9fX1lbHNl''@;'; put 'put ''IGY9LTF9d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBZMWUobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIEQsRyxxLHBlLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLFI9MDtwZT1sZSxsZT1sZSsxNnwwLGFbKEc9cGUpPj4yXT1jfD0wLHE9ZixEPWwrNzJ8MCxtPTA7ZTpmb3IoOzsp''@;'; put 'put ''e3Q6Zm9yKDs7KXtpZigoMHwoaz1xLWN8MCkpPD0xKXtjPS0xO2JyZWFrIGV9c3dpdGNoKHc9MHxmZVtjKzE+PjBdLDB8KGI9KEE9MHxmZVtjPj4wXSk8PDI0Pj4yND8wfGYwKEEsdyk6MHxYdFtEKygyNTUmdyk+PjBdKSl7Y2FzZSA1OlI9MTE7YnJlYWsgZTtjYXNlIDY6Uj0xMjticmVhayBl''@;'; put 'put ''O2Nhc2UgNzpSPTE0O2JyZWFrIGU7Y2FzZSAyMzpSPTE2O2JyZWFrIHQ7Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTpSPTMxO2JyZWFrIHQ7Y2FzZSAxNDpSPTM3O2JyZWFrIHQ7Y2FzZSAyOTppZighKDE8PCgzMSYoTT0yNTUmdykpJmFbNTY5NDArKChNPj4+NXxYdFsxNDQwNDQrKDI1NSZBKT4+''@;'; put 'put ''MF08PDMpPDwyKT4+Ml0pKXtSPTk7YnJlYWsgZX1icmVhaztjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6YnJlYWs7ZGVmYXVsdDpSPTg5O2JyZWFrIGV9YVtHPj4yXT1NPWMrMnwwLGM9TX10OmRve2lmKDE2PT0oMHxSKSl7aWYoUj0wLDB8bSl7Uj0xNzticmVhayBl''@;'; put 'put ''fWlmKGFbRz4+Ml09bT1jKzJ8MCwoMHwodz1xLShBPW0pfDApKTw9MSl7Yz0tMTticmVhayBlfXN3aXRjaChrPTB8ZmVbYyszPj4wXSwwfChNPShiPTB8ZmVbbT4+MF0pPDwyND4+MjQ/MHxmMChiLGspOjB8WHRbRCsoMjU1JmspPj4wXSkpe2Nhc2UgNTpSPTI1O2JyZWFrIGU7Y2FzZSA2OlI9''@;'; put 'put ''MjY7YnJlYWsgZTtjYXNlIDc6Uj0yODticmVhayBlO2Nhc2UgMjQ6Y2FzZSAyMjptPTE7YnJlYWsgdDtjYXNlIDI5OmJyZWFrO2RlZmF1bHQ6Uj0zMDticmVhayBlfWlmKCEoMTw8KDMxJihNPTI1NSZrKSkmYVs1Njk0MCsoKE0+Pj41fFh0WzE0Mzc4OCsoMjU1JmIpPj4wXTw8Myk8PDIpPj4y''@;'; put 'put ''XSkpe1I9MjQ7YnJlYWsgZX1tPTF9ZWxzZSBpZigzMT09KDB8UikpZm9yKDs7KXtpZihSPTAsYVtHPj4yXT1BPWMrMnwwLChxLSh3PUEpfDApPD0xKXtjPS0xO2JyZWFrIGV9c3dpdGNoKGM9MHxmZVtjKzM+PjBdLDB8KGM9KG09MHxmZVtBPj4wXSk8PDI0Pj4yND8wfGYwKG0sYyk6MHxYdFtE''@;'; put 'put ''KygyNTUmYyk+PjBdKSl7Y2FzZSAxNDpjPUEsUj0zNzticmVhayB0O2Nhc2UgOTpjYXNlIDEwOmNhc2UgMjE6Yz1BLFI9MzE7YnJlYWs7ZGVmYXVsdDpSPTM2O2JyZWFrIGV9fX13aGlsZSgwKTt0OmRve2lmKDM3PT0oMHxSKSl7Zm9yKDs7KXtpZihSPTAsYVtHPj4yXT13PWMrMnwwLChxLShi''@;'; put 'put ''PXcpfDApPD0xKXtjPS0xO2JyZWFrIGV9aWYoQT0wfGZlW2MrMz4+MF0sMTM9PSgxfChrPShtPTB8ZmVbdz4+MF0pPDwyND4+MjQ/MHxmMChtLEEpOjB8WHRbRCsoMjU1JkEpPj4wXSkpKWJyZWFrO3N3aXRjaCgwfGspe2Nhc2UgOTpjYXNlIDEwOmNhc2UgMjE6Yz13LFI9Mzc7YnJlYWs7ZGVm''@;'; put 'put ''YXVsdDpSPTQzO2JyZWFrIGV9fWFbRz4+Ml09Yz1jKzR8MDtuOmZvcig7Oyl7aWYoKDB8KHc9cS1jfDApKTw9MSl7Yz0tMTticmVhayBlfWlmKEE9MHxmZVtjKzE+PjBdLCgwfChtPShtPTB8ZmVbYz4+MF0pPDwyND4+MjQ/MHxmMChtLEEpOjB8WHRbRCsoMjU1JkEpPj4wXSkpPT0oMHxrKSli''@;'; put 'put ''cmVhaztzd2l0Y2goMHxtKXtjYXNlIDg6Y2FzZSAxOmNhc2UgMDpSPTU2O2JyZWFrIGU7Y2FzZSAyOlI9NjE7YnJlYWsgZTtjYXNlIDU6ZGVmYXVsdDphW0c+PjJdPU09YysyfDAsYz1NO2NvbnRpbnVlIG47Y2FzZSA2OmlmKCgwfHcpPDMpe2M9LTI7YnJlYWsgZX1hW0c+PjJdPU09YyszfDAs''@;'; put 'put ''Yz1NO2NvbnRpbnVlIG47Y2FzZSA3OmlmKCgwfHcpPDQpe2M9LTI7YnJlYWsgZX1hW0c+PjJdPU09Yys0fDAsYz1NO2NvbnRpbnVlIG47Y2FzZSAzOmlmKCgwfChjPTB8X2oobCxjKzJ8MCxmLEcpKSk8MSl7Uj01OTticmVhayBlfWM9MHxhW0c+PjJdO2NvbnRpbnVlIG59fWlmKGFbRz4+Ml09''@;'; put 'put ''QT1jKzJ8MCwocS0oYj1BKXwwKTw9MSl7Yz0tMTticmVhayBlfXN3aXRjaCh3PTB8ZmVbYyszPj4wXSwwfChtPShtPTB8ZmVbQT4+MF0pPDwyND4+MjQ/MHxmMChtLHcpOjB8WHRbRCsoMjU1JncpPj4wXSkpe2Nhc2UgMTE6Uj04MTticmVhayBlO2Nhc2UgMTc6Uj04MjticmVhayBlO2Nhc2Ug''@;'; put 'put ''MTA6Y2FzZSA5OmNhc2UgMjE6Yz1BO2JyZWFrO2RlZmF1bHQ6Uj02ODticmVhayBlfW46Zm9yKDs7KXtpZihhW0c+PjJdPUE9YysyfDAsKDB8KHc9cS0obT1BKXwwKSk8PTEpe2M9LTE7YnJlYWsgZX1zd2l0Y2goaz0wfGZlW2MrMz4+MF0sMHwoTT0oYj0wfGZlW0E+PjBdKTw8MjQ+PjI0PzB8''@;'; put 'put ''ZjAoYixrKTowfFh0W0QrKDI1NSZrKT4+MF0pKXtjYXNlIDU6Uj03NjticmVhayBlO2Nhc2UgNjpSPTc3O2JyZWFrIGU7Y2FzZSA3OlI9Nzk7YnJlYWsgZTtjYXNlIDExOlI9ODE7YnJlYWsgZTtjYXNlIDE3OlI9ODI7YnJlYWsgZTtjYXNlIDI0OmNhc2UgMjI6bT0wO2JyZWFrIHQ7Y2FzZSAx''@;'; put 'put ''MDpjYXNlIDk6Y2FzZSAyMTpjPUE7YnJlYWs7Y2FzZSAyOTpicmVhayBuO2RlZmF1bHQ6Uj04NzticmVhayBlfX1pZighKDE8PCgzMSYoTT0yNTUmaykpJmFbNTY5NDArKChNPj4+NXxYdFsxNDM3ODgrKDI1NSZiKT4+MF08PDMpPDwyKT4+Ml0pKXtSPTc1O2JyZWFrIGV9bT0wfX13aGlsZSgw''@;'; put 'put ''KTthW0c+PjJdPWM9Yys0fDB9c3dpdGNoKDB8Uil7Y2FzZSA5OmNhc2UgMTE6Y2FzZSAxNzpjYXNlIDU2OmNhc2UgNjE6Y2FzZSA4OTphW3A+PjJdPWMsYz0wO2JyZWFrO2Nhc2UgMTI6KDB8ayk8Mz9jPS0yOihhW3A+PjJdPWMsYz0wKTticmVhaztjYXNlIDE0OigwfGspPDQ/Yz0tMjooYVtw''@;'; put 'put ''Pj4yXT1jLGM9MCk7YnJlYWs7Y2FzZSAyNDpjYXNlIDI1OmNhc2UgODc6YVtwPj4yXT1tLGM9MDticmVhaztjYXNlIDI2OigwfHcpPDM/Yz0tMjooYVtwPj4yXT1tLGM9MCk7YnJlYWs7Y2FzZSAyODooMHx3KTw0P2M9LTI6KGFbcD4+Ml09bSxjPTApO2JyZWFrO2Nhc2UgMzA6Y2FzZSA3NTpj''@;'; put 'put ''YXNlIDc2OmFbcD4+Ml09QSxjPTA7YnJlYWs7Y2FzZSAzNjphW3A+PjJdPXcsYz0wO2JyZWFrO2Nhc2UgNDM6Y2FzZSA2ODphW3A+PjJdPWIsYz0wO2JyZWFrO2Nhc2UgNTk6Y3x8KGFbcD4+Ml09YVtHPj4yXSxjPTApO2JyZWFrO2Nhc2UgNzc6KDB8dyk8Mz9jPS0yOihhW3A+PjJdPUEsYz0w''@;'; put 'put ''KTticmVhaztjYXNlIDc5OigwfHcpPDQ/Yz0tMjooYVtwPj4yXT1BLGM9MCk7YnJlYWs7Y2FzZSA4MTphW3A+PjJdPWMrNCxjPTE7YnJlYWs7Y2FzZSA4MjppZihhW0c+PjJdPW09QSsyfDAsKHEtKGM9bSl8MCk+MSl7aWYoMD09KDB8ZmVbbT4+MF0pJiY2Mj09KDB8ZmVbQSszPj4wXSkpe2Fb''@;'; put 'put ''cD4+Ml09QSs0LGM9MzticmVha31hW3A+PjJdPWMsYz0wfWVsc2UgYz0tMX1yZXR1cm4gbGU9cGUsMHxjfWZ1bmN0aW9uIEtLKGwsYyxmKXtsfD0wLGN8PTAsYVsoZnw9MCk+PjJdPTExO2U6ZG97aWYoNj09KGMtbHwwKSYmMD09KDB8ZmVbbD4+MF0pKXtzd2l0Y2goMHxmZVtsKzE+PjBdKXtj''@;'; put 'put ''YXNlIDEyMDpjPTA7YnJlYWs7Y2FzZSA4ODpjPTE7YnJlYWs7ZGVmYXVsdDpjPTE7YnJlYWsgZX1pZigwfGZlW2wrMj4+MF0pYz0xO2Vsc2V7c3dpdGNoKDB8ZmVbbCszPj4wXSl7Y2FzZSAxMDk6YnJlYWs7Y2FzZSA3NzpjPTE7YnJlYWs7ZGVmYXVsdDpjPTE7YnJlYWsgZX1pZigwfGZlW2wr''@;'; put 'put ''ND4+MF0pYz0xO2Vsc2V7c3dpdGNoKDB8ZmVbbCs1Pj4wXSl7Y2FzZSAxMDg6YnJlYWs7Y2FzZSA3NjpjPTA7YnJlYWsgZTtkZWZhdWx0OmM9MTticmVhayBlfWM/Yz0wOihhW2Y+PjJdPTEyLGM9MSl9fX1lbHNlIGM9MX13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1bmN0aW9uIG5kKGwsYyxmLHAs''@;'; put 'put ''bSl7bHw9MCxmfD0wLHB8PTAsbXw9MDt2YXIgYixBPTAsdz0wLGs9MDtiPTcyKyhjfD0wKXwwO2U6Zm9yKDs7KXt0OmZvcig7Oyl7aWYoKDB8KHc9cC1mfDApKTw9MSl7Zj0tMTticmVhayBlfXN3aXRjaChBPTB8ZmVbZisxPj4wXSwwfChBPShjPTB8ZmVbZj4+MF0pPDwyND4+MjQ/MHxmMChj''@;'; put 'put ''LEEpOjB8WHRbYisoMjU1JkEpPj4wXSkpe2Nhc2UgODpjYXNlIDE6Y2FzZSAwOms9MTA7YnJlYWsgZTtjYXNlIDY6az05O2JyZWFrIHQ7Y2FzZSA3Oms9MTk7YnJlYWsgdDtjYXNlIDU6ZGVmYXVsdDpmPWYrMnwwO2NvbnRpbnVlIHQ7Y2FzZSAxMzpjYXNlIDEyOmlmKGM9ZisyfDAsKDB8QSk9''@;'; put 'put ''PSgwfGwpKXtrPTEyO2JyZWFrIGV9Zj1jO2NvbnRpbnVlIHR9fWlmKDkhPSgwfGspKWlmKDE5IT0oMHxrKSk7ZWxzZXtpZihrPTAsKDB8dyk8NCl7Zj0tMjticmVha31mPWYrNHwwfWVsc2V7aWYoaz0wLCgwfHcpPDMpe2Y9LTI7YnJlYWt9Zj1mKzN8MH19ZTpkb3tpZigxMD09KDB8aykpYVtt''@;'; put 'put ''Pj4yXT1mLGY9MDtlbHNlIGlmKDEyPT0oMHxrKSlpZigocC1jfDApPjEpe3N3aXRjaChhW20+PjJdPWMsZj0wfGZlW2YrMz4+MF0sMHwoZj0ocD0wfGZlW2M+PjBdKTw8MjQ+PjI0PzB8ZjAocCxmKTowfFh0W2IrKDI1NSZmKT4+MF0pKXtjYXNlIDIwOmNhc2UgMzA6Y2FzZSAxMTpjYXNlIDEw''@;'; put 'put ''OmNhc2UgOTpjYXNlIDIxOmY9Mjc7YnJlYWsgZX1mPTB9ZWxzZSBmPS0yN313aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIGhMKGwsYyxmLHApe2x8PTAsY3w9MCxwfD0wO3ZhciBiLG09MCxBPTAsdz0wLGs9MDtiPWZ8PTA7ZTpkb3tpZigoYi1jfDApPjEpc3dpdGNoKG09MHxmZVtjPj4w''@;'; put 'put ''XSxtPW08PDI0Pj4yND8wfGYwKG0sMHxmZVtjKzE+PjBdKTowfFh0W2wrNzIrKDB8WHRbYysxPj4wXSk+PjBdLDB8bSl7Y2FzZSAyNzptPTB8ejFlKGwsYysyfDAsZixwKTticmVhayBlO2Nhc2UgMjA6YVtwPj4yXT1jKzIsbT0zMzticmVhayBlO2Nhc2UgMjQ6Y2FzZSAyMjp3PWwrNzJ8MDt0''@;'; put 'put ''OmZvcig7Oyl7aWYoKDB8KGY9Yi0oQT1jKzJ8MCl8MCkpPD0xKXttPS0xO2JyZWFrIGV9c3dpdGNoKGw9MHxmZVtjKzM+PjBdLDB8KG09KG09MHxmZVtBPj4wXSk8PDI0Pj4yND8wfGYwKG0sbCk6MHxYdFt3KygyNTUmbCk+PjBdKSl7Y2FzZSAyNDpjYXNlIDIyOmM9QTticmVhaztjYXNlIDMw''@;'; put 'put ''Oms9MTU7YnJlYWsgdDtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOmJyZWFrIHQ7ZGVmYXVsdDprPTIyO2JyZWFrIHR9fWlmKDIyPT0oMHxrKSl7YVtwPj4yXT1BLG09MDticmVhayBlfXQ6ZG97aWYoMTU9PSgwfGspKXtpZigoMHxmKTw9Myl7bT0tMTticmVhayBlfXN3aXRjaChtPTB8ZmVbYys1''@;'; put 'put ''Pj4wXSwwfChtPShsPTB8ZmVbYys0Pj4wXSk8PDI0Pj4yND8wfGYwKGwsbSk6MHxYdFt3KygyNTUmbSk+PjBdKSl7Y2FzZSAzMDpjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOmJyZWFrO2RlZmF1bHQ6YnJlYWsgdH1hW3A+PjJdPUEsbT0wO2JyZWFrIGV9fXdoaWxlKDApO2FbcD4+Ml09QSxtPTE2''@;'; put 'put ''O2JyZWFrIGU7ZGVmYXVsdDphW3A+PjJdPWMsbT0wO2JyZWFrIGV9ZWxzZSBtPS0xfXdoaWxlKDApO3JldHVybiAwfG19ZnVuY3Rpb24gcnYobCxjLGYscCl7bHw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTA7dz0oZnw9MCktKGN8PTApfDA7ZTpkb3tpZigoMHx3KT4xKXtzd2l0Y2goMHwo''@;'; put 'put ''bT0oYj0wfGZlW2M+PjBdKTw8MjQ+PjI0PzB8ZjAoYixBPTB8ZmVbYysxPj4wXSk6MHxYdFtsKzcyKygyNTUmKEE9MHxmZVtjKzE+PjBdKSk+PjBdKSl7Y2FzZSAyOTppZighKDE8PCgzMSYodz0yNTUmQSkpJmFbNTY5NDArKCh3Pj4+NXwoMHxYdFsxNDM3ODgrKDI1NSZiKT4+MF0pPDwzKTw8''@;'; put 'put ''Mik+PjJdKSl7YVtwPj4yXT1jLGY9MDticmVhayBlfWJyZWFrO2Nhc2UgMjQ6Y2FzZSAyMjpicmVhaztjYXNlIDU6ZGVmYXVsdDphW3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSA2OmlmKCgwfHcpPDMpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSA3OmlmKCgwfHcp''@;'; put 'put ''PDQpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPWMsZj0wO2JyZWFrIGV9bD1sKzcyfDAsYj1jO3Q6Zm9yKDs7KXtpZihtPWIsKDB8KGM9Zi0oYj1iKzJ8MCl8MCkpPD0xKXtmPS0yMDticmVhayBlfXN3aXRjaChtPTB8ZmVbbSszPj4wXSwwfChBPSh3PTB8ZmVbYj4+MF0pPDwyND4+MjQ/MHxmMCh3''@;'; put 'put ''LG0pOjB8WHRbbCsoMjU1Jm0pPj4wXSkpe2Nhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMjpjb250aW51ZSB0O2Nhc2UgNTptPTIyO2JyZWFrIHQ7Y2FzZSA2Om09MjM7YnJlYWsgdDtjYXNlIDc6bT0yNTticmVhayB0O2Nhc2UgMzY6Y2FzZSAzMDpjYXNlIDExOmNhc2Ug''@;'; put 'put ''MzI6Y2FzZSAyMTpjYXNlIDEwOmNhc2UgOTptPTI3O2JyZWFrIHQ7Y2FzZSAyOTpicmVhaztkZWZhdWx0Om09Mjg7YnJlYWsgdH1pZighKDE8PCgzMSYoYz0yNTUmbSkpJmFbNTY5NDArKChjPj4+NXwoMHxYdFsxNDQwNDQrKDI1NSZ3KT4+MF0pPDwzKTw8Mik+PjJdKSl7bT0yMTticmVha319''@;'; put 'put ''aWYoMjE9PSgwfG0pKXthW3A+PjJdPWIsZj0wO2JyZWFrfWlmKDIyPT0oMHxtKSl7YVtwPj4yXT1iLGY9MDticmVha31pZigyMz09KDB8bSkpe2lmKCgwfGMpPDMpe2Y9LTI7YnJlYWt9YVtwPj4yXT1iLGY9MDticmVha31pZigyNT09KDB8bSkpe2lmKCgwfGMpPDQpe2Y9LTI7YnJlYWt9YVtw''@;'; put 'put ''Pj4yXT1iLGY9MDticmVha31pZigyNz09KDB8bSkpe2FbcD4+Ml09YixmPTIwO2JyZWFrfWlmKDI4PT0oMHxtKSl7YVtwPj4yXT1iLGY9MDticmVha319ZWxzZSBmPS0xfXdoaWxlKDApO3JldHVybiAwfGZ9ZnVuY3Rpb24gQ2oobCxjKXtsfD0wLGN8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MDtl''@;'; put 'put ''OmZvcig7Oylzd2l0Y2gobT0wfGZlW2w+PjBdLEE9MHxmZVtjPj4wXSxtPShtKy05NyYyNTUpPDI2PzIyNCsoMjU1Jm0pJjI1NTptLDMmKG08PDI0Pj4yND09KChBKy05NyYyNTUpPDI2PzIyNCsoMjU1JkEpJjI1NTpBKTw8MjQ+PjI0P208PDI0Pj4yND09MD8yOjA6MSkpe2Nhc2UgMDpjPWMr''@;'; put 'put ''MXwwLGw9bCsxfDA7YnJlYWs7Y2FzZSAxOnA9MzticmVhayBlO2Nhc2UgMjpmPTE7YnJlYWsgZTtkZWZhdWx0OnA9NTticmVhayBlfXJldHVybiAzPT0oMHxwKSYmKGY9MCksMHxmfWZ1bmN0aW9uIG1nKGwsYyxmLHAsbSxBLHcsYixrLE0sRCl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wLEF8''@;'; put 'put ''PTAsd3w9MCxifD0wLGt8PTAsTXw9MCxEfD0wO3ZhciBHLHEscGUsT2UsTGUsUmUsUj0wLGdlPTAsYmU9MDtSZT1sZSxsZT1sZSsxNnwwLE9lPVJlKzh8MCxHPVJlKzR8MCxxPVJlLGFbKHBlPVJlKzEyfDApPj4yXT0wLGFbRz4+Ml09MCxhW3E+PjJdPTAsYVtPZT4+Ml09Z2U9cCsoNSooYmU9''@;'; put 'put ''MHxhWyhMZT1mKzY0fDApPj4yXSl8MCl8MCxnZT0wIT0oMHxraihmLGdlLGJlPW0rKDAtKGJlPDwxKSl8MCxHLHEscGUsT2UpKSxwPVI9MHxhW0c+PjJdO2U6ZG97aWYoZ2UmMCE9KDB8Uikpe2dlPWYrMjR8MCxtPTB8YVtxPj4yXTtkb3tpZigwfHEwWzEyNyZhW2dlPj4yXV0oZixSLG0sMTQ0''@;'; put 'put ''MzQwKSl7aWYoMHx3JiYoYVt3Pj4yXT1hW3BlPj4yXSksYj9hW2I+PjJdPXA9MHxhW09lPj4yXTpwPTB8YVtPZT4+Ml0sISgwfGtqKGYscCxiZSxHLHEscGUsT2UpKSl7YVtBPj4yXT1hW09lPj4yXSxwPTA7YnJlYWsgZX1pZigwfChtPTB8YVtHPj4yXSkpe3A9bSxSPW0sbT0wfGFbcT4+Ml07''@;'; put 'put ''YnJlYWt9aWYoIWMpe3A9MTticmVhayBlfWFbQT4+Ml09YVtPZT4+Ml0scD0wO2JyZWFrIGV9aWYoIWMpe2FbQT4+Ml09cCxwPTA7YnJlYWsgZX19d2hpbGUoMCk7aWYoMHxxMFsxMjcmYVtnZT4+Ml1dKGYsUixtLDE0NDM0OCkpe2lmKHA9bT0wfGFbcGU+PjJdLCgoLTMzJigwfHM4KGYsbSxi''@;'; put 'put ''ZSkpKS02NXwwKT4+PjA+PTI2KXthW0E+PjJdPXAscD0wO2JyZWFrfWlmKDB8ayYmKGFbaz4+Ml09cCkscD0wfGFbT2U+PjJdLDB8TSYmKGFbTT4+Ml09MHxtaVs2MyZsXShmLG0scCsoMC0oMHxhW0xlPj4yXSkpfDApKSwhKDB8a2ooZixwLGJlLEcscSxwZSxPZSkpKXthW0E+PjJdPWFbT2U+''@;'; put 'put ''PjJdLHA9MDticmVha31pZighKHA9MHxhW0c+PjJdKSl7cD0xO2JyZWFrfVI9cCxtPTB8YVtxPj4yXX1pZigwIT0oMHxjKXwwPT0oMHxxMFsxMjcmYVtnZT4+Ml1dKGYsUixtLDE0NDM1NykpKXthW0E+PjJdPXAscD0wO2JyZWFrfWlmKFI9bT0wfGFbcGU+PjJdLDB8cTBbMTI3JmFbZ2U+PjJd''@;'; put 'put ''XShmLG0sKHA9MHxhW09lPj4yXSkrKDAtKDB8YVtMZT4+Ml0pKXwwLDEwNzY1NykpRCYmKGFbRD4+Ml09MSk7ZWxzZXtpZighKDB8cTBbMTI3JmFbZ2U+PjJdXShmLG0scCsoMC0oMHxhW0xlPj4yXSkpfDAsMTA3NjQ5KSkpe2FbQT4+Ml09UixwPTA7YnJlYWt9RCYmKGFbRD4+Ml09MCl9Zm9y''@;'; put 'put ''KDswfG5hKDB8czgoZixwLGJlKSk7KXA9cCsoMHxhW0xlPj4yXSl8MDthW09lPj4yXT1wLCgwfHApPT0oMHxiZSk/cD0xOihhW0E+PjJdPXAscD0wKX1lbHNlIGFbQT4+Ml09YVtPZT4+Ml0scD0wfXdoaWxlKDApO3JldHVybiBsZT1SZSwwfHB9ZnVuY3Rpb24ga2oobCxjLGYscCxtLEEsdyl7''@;'; put 'put ''bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTAsd3w9MDt2YXIgYj0wLGs9MDtlOmRve2lmKCgwfGMpIT0oMHxmKSl7aWYoISgwfG5hKDB8czgobCxjLGYpKSkpe2Fbdz4+Ml09YyxjPTA7YnJlYWt9az1sKzY0fDA7ZG97Yz1jKygwfGFbaz4+Ml0pfDB9d2hpbGUoMCE9KDB8bmEoMHxzOChs''@;'; put 'put ''LGMsZikpKSk7aWYoKDB8Yyk9PSgwfGYpKXthW3A+PjJdPTAsYz0xO2JyZWFrfWFbcD4+Ml09Yzt0OmZvcig7Oyl7c3dpdGNoKDB8KGI9MHxzOChsLGMsZikpKXtjYXNlLTE6Yj0xMTticmVhayB0O2Nhc2UgNjE6Yj0xMjticmVhayB0fWlmKDB8bmEoYikpe2I9MTQ7YnJlYWt9Yz1jKygwfGFb''@;'; put 'put ''az4+Ml0pfDB9aWYoMTE9PSgwfGIpKXthW3c+PjJdPWMsYz0wO2JyZWFrfWlmKDEyPT0oMHxiKSlhW20+PjJdPWM7ZWxzZSBpZigxND09KDB8Yikpe2FbbT4+Ml09Yztkb3tiPTB8czgobCxjPWMrKDB8YVtrPj4yXSl8MCxmKX13aGlsZSgwIT0oMHxuYShiKSkpO2lmKDYxIT0oMHxiKSl7YVt3''@;'; put 'put ''Pj4yXT1jLGM9MDticmVha319aWYoKDB8Yyk9PSgwfGFbcD4+Ml0pKXthW3c+PjJdPWMsYz0wO2JyZWFrfWRve2I9MHxzOChsLGM9YysoMHxhW2s+PjJdKXwwLGYpfXdoaWxlKDAhPSgwfG5hKGIpKSk7c3dpdGNoKDB8Yil7Y2FzZSAzNDpjYXNlIDM5OmJyZWFrO2RlZmF1bHQ6YVt3Pj4yXT1j''@;'; put 'put ''LGM9MDticmVhayBlfWFbQT4+Ml09bT1jKygwfGFbaz4+Ml0pfDAsYz1iPDwyND4+MjQ7dDpmb3IoOzspe2lmKCgwfChiPTB8czgobCxtLGYpKSk9PSgwfGMpKXtiPTMwO2JyZWFrfWlmKChiKy00OHwwKT4+PjA+OSYoKC0zMyZiKS02NXwwKT4+PjA+MjUpc3dpdGNoKDB8Yil7Y2FzZSA0NTpj''@;'; put 'put ''YXNlIDQ2OmNhc2UgOTU6YnJlYWs7ZGVmYXVsdDpiPTI4O2JyZWFrIHR9bT1tKygwfGFbaz4+Ml0pfDB9aWYoMjg9PSgwfGIpKXthW3c+PjJdPW0sYz0wO2JyZWFrfWlmKDMwPT0oMHxiKSl7YVt3Pj4yXT1tKygwfGFbaz4+Ml0pLGM9MTticmVha319ZWxzZSBhW3A+PjJdPTAsYz0xfXdoaWxl''@;'; put 'put ''KDApO3JldHVybiAwfGN9ZnVuY3Rpb24gczgobCxjLGYpe3ZhciBwLG0sQSx3O3JldHVybiBsfD0wLGZ8PTAsQT1sZSxsZT1sZSsxNnwwLHA9QSs4fDAsbT1BLGFbKHc9QSs0fDApPj4yXT1jfD0wLGFbbT4+Ml09cCxSMlsxMjcmYVtsKzU2Pj4yXV0obCx3LGYsbSxwKzF8MCksbGU9QSwwfCgo''@;'; put 'put ''MHxhW20+PjJdKT09KDB8cCk/LTE6MHxmZVtwPj4wXSl9ZnVuY3Rpb24gbmEobCl7c3dpdGNoKDB8KGx8PTApKXtjYXNlIDk6Y2FzZSAxMDpjYXNlIDEzOmNhc2UgMzI6bD0xO2JyZWFrO2RlZmF1bHQ6bD0wfXJldHVybiAwfGx9ZnVuY3Rpb24gamEobCxjKXtyZXR1cm4gMjg9PSgwfChjfD0w''@;'; put 'put ''KSkmMD09KDB8YVsxNisobHw9MCk+PjJdKT9sPTU5OihhW2w+PjJdPTE4LGw9LTEpLDB8bH1mdW5jdGlvbiBlJChsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgQT0wLHc9MCxiPTA7ZTpkb3tzd2l0Y2goMHxjKXtjYXNlLTQ6Y2FzZSAxNTpsPTA7YnJlYWs7Y2FzZSAx''@;'; put 'put ''NjppZigwfHEwWzEyNyZhWyhBPW0rMjR8MCk+PjJdXShtLGYrKGFbKHc9bSs2NHwwKT4+Ml08PDEpfDAscCwxNDQzOTApKXthW2w+PjJdPTI0LGw9MTE7YnJlYWsgZX1pZigwfHEwWzEyNyZhW0E+PjJdXShtLGYrKGFbdz4+Ml08PDEpfDAscCwxNDQzOTcpKXthW2w+PjJdPTI1LGw9MzM7YnJl''@;'; put 'put ''YWsgZX1pZigwfHEwWzEyNyZhW0E+PjJdXShtLGYrKGFbdz4+Ml08PDEpfDAscCwxNDQ0MDUpKXthW2w+PjJdPTI2LGw9Mzk7YnJlYWsgZX0wfHEwWzEyNyZhW0E+PjJdXShtLGYrKGFbdz4+Ml08PDEpfDAscCwxNDQ0MTMpPyhhW2w+PjJdPTI3LGw9MTcpOmI9MTQ7YnJlYWs7Y2FzZSAxMTps''@;'; put 'put ''PTU1O2JyZWFrO2Nhc2UgMTM6bD01NjticmVhaztjYXNlIDI4Omw9NjA7YnJlYWs7Y2FzZSAyNjphW2w+PjJdPTI4LGw9MzticmVhaztkZWZhdWx0OmI9MTR9fXdoaWxlKDApO3JldHVybiAxND09KDB8YikmJihsPTB8amEobCxjKSksMHxsfWZ1bmN0aW9uIEYwKGwpe2x8PTA7dmFyIFZlLGM9''@;'; put 'put ''MCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wO1ZlPWxlLGxlPWxlKzE2fDAscT1WZTtkb3tpZihsPj4+MDwyNDUpe2lmKDMmKGY9KEc9MHxhWzQ3NTE5XSk+Pj4obD0oRD1sPj4+MDwxMT8x''@;'; put 'put ''NjpsKzExJi04KT4+PjMpKXwwKXJldHVybigwfChBPTB8YVsobT04KyhwPTB8YVsoZj04KyhsPTE5MDExNisoKGM9KDEmZl4xKStsfDApPDwxPDwyKXwwKXwwKT4+Ml0pfDApPj4yXSkpPT0oMHxsKT9hWzQ3NTE5XT1HJn4oMTw8Yyk6KGFbQSsxMj4+Ml09bCxhW2Y+PjJdPUEpLGFbcCs0Pj4y''@;'; put 'put ''XT0zfChIZT1jPDwzKSxhWyhIZT1wK0hlKzR8MCk+PjJdPTF8YVtIZT4+Ml0sbGU9VmUsMHxtO2lmKEQ+Pj4wPihSPTB8YVs0NzUyMV0pPj4+MCl7aWYoMHxmKXJldHVybiBjPSgoYz1mPDxsJigoYz0yPDxsKXwwLWMpKSYwLWMpLTF8MCwoMHwoZj0wfGFbKGI9OCsoQT0wfGFbKGw9OCsoYz0x''@;'; put 'put ''OTAxMTYrKChwPSgoZj0oYz4+Pj1iPWM+Pj4xMiYxNik+Pj41JjgpfGJ8KEE9KGM+Pj49Zik+Pj4yJjQpfChsPShjPj4+PUEpPj4+MSYyKXwocD0oYz4+Pj1sKT4+PjEmMSkpKyhjPj4+cCl8MCk8PDE8PDIpfDApfDApPj4yXSl8MCk+PjJdKSk9PSgwfGMpP2FbNDc1MTldPWw9RyZ+KDE8PHAp''@;'; put 'put ''OihhW2YrMTI+PjJdPWMsYVtsPj4yXT1mLGw9Ryksdz0oSGU9cDw8MyktRHwwLGFbQSs0Pj4yXT0zfEQsYVs0KyhtPUErRHwwKT4+Ml09MXx3LGFbQStIZT4+Ml09dywwfFImJihwPTB8YVs0NzUyNF0sZj0xOTAxMTYrKChjPVI+Pj4zKTw8MTw8Mil8MCxsJihjPTE8PGMpP2M9MHxhWyhsPWYr''@;'; put 'put ''OHwwKT4+Ml06KGFbNDc1MTldPWx8YyxjPWYsbD1mKzh8MCksYVtsPj4yXT1wLGFbYysxMj4+Ml09cCxhW3ArOD4+Ml09YyxhW3ArMTI+PjJdPWYpLGFbNDc1MjFdPXcsYVs0NzUyNF09bSxsZT1WZSwwfGI7aWYoaz0wfGFbNDc1MjBdKXtpZihmPShrJjAtayktMXwwLGY9KC04JmFbNCsobD0w''@;'; put 'put ''fGFbMTkwMzgwKygoKHc9KGY+Pj49Yj1mPj4+MTImMTYpPj4+NSY4KXxifChNPShmPj4+PXcpPj4+MiY0KXwocD0oZj4+Pj1NKT4+PjEmMil8KGw9KGY+Pj49cCk+Pj4xJjEpKSsoZj4+PmwpPDwyKT4+Ml0pPj4yXSktRHwwLHA9MHxhW2wrMTYrKCgwPT0oMHxhW2wrMTY+PjJdKSYxKTw8Mik+''@;'; put 'put ''PjJdKXtkb3tmPShNPShiPSgtOCZhW3ArND4+Ml0pLUR8MCk+Pj4wPGY+Pj4wKT9iOmYsbD1NP3A6bCxwPTB8YVtwKzE2KygoMD09KDB8YVtwKzE2Pj4yXSkmMSk8PDIpPj4yXX13aGlsZSgwIT0oMHxwKSk7TT1sLHc9Zn1lbHNlIE09bCx3PWY7aWYoKGI9TStEfDApPj4+MD5NPj4+MCl7bT0w''@;'; put 'put ''fGFbTSsyND4+Ml0sYz0wfGFbTSsxMj4+Ml07ZG97aWYoKDB8Yyk9PSgwfE0pKXtpZighKGM9MHxhWyhsPU0rMjB8MCk+PjJdKSYmIShjPTB8YVsobD1NKzE2fDApPj4yXSkpe2Y9MDticmVha31mb3IoOzspaWYoMHwocD0wfGFbKGY9YysyMHwwKT4+Ml0pKWM9cCxsPWY7ZWxzZXtpZighKHA9''@;'; put 'put ''MHxhWyhmPWMrMTZ8MCk+PjJdKSlicmVhaztjPXAsbD1mfWFbbD4+Ml09MCxmPWN9ZWxzZSBhWzEyKyhmPTB8YVtNKzg+PjJdKT4+Ml09YyxhW2MrOD4+Ml09ZixmPWN9d2hpbGUoMCk7ZG97aWYoMHxtKXtpZigoMHxNKT09KDB8YVsobD0xOTAzODArKChjPTB8YVtNKzI4Pj4yXSk8PDIpfDAp''@;'; put 'put ''Pj4yXSkpe2lmKGFbbD4+Ml09ZiwhZil7YVs0NzUyMF09ayZ+KDE8PGMpO2JyZWFrfX1lbHNlIGlmKGFbbSsxNisoKCgwfGFbbSsxNj4+Ml0pIT0oMHxNKSYxKTw8Mik+PjJdPWYsIWYpYnJlYWs7YVtmKzI0Pj4yXT1tLDB8KGM9MHxhW00rMTY+PjJdKSYmKGFbZisxNj4+Ml09YyxhW2MrMjQ+''@;'; put 'put ''PjJdPWYpLDB8KGM9MHxhW00rMjA+PjJdKSYmKGFbZisyMD4+Ml09YyxhW2MrMjQ+PjJdPWYpfX13aGlsZSgwKTtyZXR1cm4gdz4+PjA8MTY/KGFbTSs0Pj4yXT0zfChIZT13K0R8MCksYVsoSGU9TStIZSs0fDApPj4yXT0xfGFbSGU+PjJdKTooYVtNKzQ+PjJdPTN8RCxhW2IrND4+Ml09MXx3''@;'; put 'put ''LGFbYit3Pj4yXT13LDB8UiYmKHA9MHxhWzQ3NTI0XSxmPTE5MDExNisoKGM9Uj4+PjMpPDwxPDwyKXwwLEcmKGM9MTw8Yyk/Yz0wfGFbKGw9Zis4fDApPj4yXTooYVs0NzUxOV09R3xjLGM9ZixsPWYrOHwwKSxhW2w+PjJdPXAsYVtjKzEyPj4yXT1wLGFbcCs4Pj4yXT1jLGFbcCsxMj4+Ml09''@;'; put 'put ''ZiksYVs0NzUyMV09dyxhWzQ3NTI0XT1iKSxsZT1WZSwwfE0rOH1SPUR9ZWxzZSBSPUR9ZWxzZSBSPUR9ZWxzZSBpZihsPj4+MDw9NDI5NDk2NzIzMSlpZihEPS04JihsPWwrMTF8MCksTT0wfGFbNDc1MjBdKXtwPTAtRHwwLGs9KGw+Pj49OCk/RD4+PjA+MTY3NzcyMTU/MzE6RD4+Pig3Kyhr''@;'; put 'put ''PTE0LSgoUj0oNTIwMTkyKyhSZT1sPDwoRz0obCsxMDQ4MzIwfDApPj4+MTYmOCkpfDApPj4+MTYmNCl8R3woaz0oMjQ1NzYwKyhSZTw8PVIpfDApPj4+MTYmMikpKyhSZTw8az4+PjE1KXwwKXwwKSYxfGs8PDE6MCxmPTB8YVsxOTAzODArKGs8PDIpPj4yXTtlOmRve2lmKGYpZm9yKGw9MCxi''@;'; put 'put ''PWYsdz1EPDwoMzE9PSgwfGspPzA6MjUtKGs+Pj4xKXwwKSxmPTA7Oyl7aWYoKG09KC04JmFbYis0Pj4yXSktRHwwKT4+PjA8cD4+PjApe2lmKCFtKXtwPTAsZj1iLGw9YixSZT02MTticmVhayBlfWw9YixwPW19aWYoZj0wPT0oMHwobT0wfGFbYisyMD4+Ml0pKXwoMHxtKT09KDB8KGI9MHxh''@;'; put 'put ''W2IrMTYrKHc+Pj4zMTw8Mik+PjJdKSk/ZjptLG09MD09KDB8Yikpe1JlPTU3O2JyZWFrfXc8PD0xJigxXm0pfWVsc2UgZj0wLGw9MCxSZT01N313aGlsZSgwKTtpZig1Nz09KDB8UmUpKXtpZigwPT0oMHxmKSYwPT0oMHxsKSl7aWYoIShsPU0mKChsPTI8PGspfDAtbCkpKXtSPUQ7YnJlYWt9''@;'; put 'put ''Rz0obCYwLWwpLTF8MCxsPTAsZj0wfGFbMTkwMzgwKygoKHc9KEc+Pj49Yj1HPj4+MTImMTYpPj4+NSY4KXxifChrPShHPj4+PXcpPj4+MiY0KXwoUj0oRz4+Pj1rKT4+PjEmMil8KGY9KEc+Pj49Uik+Pj4xJjEpKSsoRz4+PmYpPDwyKT4+Ml19Zj9SZT02MTooYj1sLHc9cCl9aWYoNjE9PSgw''@;'; put 'put ''fFJlKSlmb3IoOzspe2lmKFJlPTAscD0oRz0oUj0oLTgmYVtmKzQ+PjJdKS1EfDApPj4+MDxwPj4+MCk/UjpwLGw9Rz9mOmwsIShmPTB8YVtmKzE2KygoMD09KDB8YVtmKzE2Pj4yXSkmMSk8PDIpPj4yXSkpe2I9bCx3PXA7YnJlYWt9UmU9NjF9aWYoMCE9KDB8YikmJnc+Pj4wPCgoMHxhWzQ3''@;'; put 'put ''NTIxXSktRHwwKT4+PjApe2lmKChBPWIrRHwwKT4+PjA8PWI+Pj4wKXJldHVybiBsZT1WZSwwO209MHxhW2IrMjQ+PjJdLGM9MHxhW2IrMTI+PjJdO2Rve2lmKCgwfGMpPT0oMHxiKSl7aWYoIShjPTB8YVsobD1iKzIwfDApPj4yXSkmJiEoYz0wfGFbKGw9YisxNnwwKT4+Ml0pKXtjPTA7YnJl''@;'; put 'put ''YWt9Zm9yKDs7KWlmKDB8KHA9MHxhWyhmPWMrMjB8MCk+PjJdKSljPXAsbD1mO2Vsc2V7aWYoIShwPTB8YVsoZj1jKzE2fDApPj4yXSkpYnJlYWs7Yz1wLGw9Zn1hW2w+PjJdPTB9ZWxzZSBhWzEyKyhIZT0wfGFbYis4Pj4yXSk+PjJdPWMsYVtjKzg+PjJdPUhlfXdoaWxlKDApO2Rve2lmKG0p''@;'; put 'put ''e2lmKCgwfGIpPT0oMHxhWyhmPTE5MDM4MCsoKGw9MHxhW2IrMjg+PjJdKTw8Mil8MCk+PjJdKSl7aWYoYVtmPj4yXT1jLCFjKXthWzQ3NTIwXT1wPU0mfigxPDxsKTticmVha319ZWxzZSBpZihhW20rMTYrKCgoMHxhW20rMTY+PjJdKSE9KDB8YikmMSk8PDIpPj4yXT1jLCFjKXtwPU07YnJl''@;'; put 'put ''YWt9YVtjKzI0Pj4yXT1tLDB8KGw9MHxhW2IrMTY+PjJdKSYmKGFbYysxNj4+Ml09bCxhW2wrMjQ+PjJdPWMpLChsPTB8YVtiKzIwPj4yXSkmJihhW2MrMjA+PjJdPWwsYVtsKzI0Pj4yXT1jKSxwPU19ZWxzZSBwPU19d2hpbGUoMCk7ZG97aWYodz4+PjA+PTE2KXtpZihhW2IrND4+Ml09M3xE''@;'; put 'put ''LGFbQSs0Pj4yXT0xfHcsYVtBK3c+PjJdPXcsYz13Pj4+Myx3Pj4+MDwyNTYpe2Y9MTkwMTE2KyhjPDwxPDwyKXwwLChsPTB8YVs0NzUxOV0pJihjPTE8PGMpP2M9MHxhWyhsPWYrOHwwKT4+Ml06KGFbNDc1MTldPWx8YyxjPWYsbD1mKzh8MCksYVtsPj4yXT1BLGFbYysxMj4+Ml09QSxhW0Er''@;'; put 'put ''OD4+Ml09YyxhW0ErMTI+PjJdPWY7YnJlYWt9aWYoZj0xOTAzODArKChjPShjPXc+Pj44KT93Pj4+MD4xNjc3NzIxNT8zMTp3Pj4+KDcrKGM9MTQtKChMZT0oNTIwMTkyKyhIZT1jPDwoUmU9KGMrMTA0ODMyMHwwKT4+PjE2JjgpKXwwKT4+PjE2JjQpfFJlfChjPSgyNDU3NjArKEhlPDw9TGUp''@;'; put 'put ''fDApPj4+MTYmMikpKyhIZTw8Yz4+PjE1KXwwKXwwKSYxfGM8PDE6MCk8PDIpfDAsYVtBKzI4Pj4yXT1jLGFbNCsobD1BKzE2fDApPj4yXT0wLGFbbD4+Ml09MCwhKHAmKGw9MTw8YykpKXthWzQ3NTIwXT1wfGwsYVtmPj4yXT1BLGFbQSsyND4+Ml09ZixhW0ErMTI+PjJdPUEsYVtBKzg+PjJd''@;'; put 'put ''PUE7YnJlYWt9Zm9yKGw9dzw8KDMxPT0oMHxjKT8wOjI1LShjPj4+MSl8MCksZj0wfGFbZj4+Ml07Oyl7aWYoKC04JmFbZis0Pj4yXXwwKT09KDB8dykpe1JlPTk3O2JyZWFrfWlmKCEoYz0wfGFbKHA9ZisxNisobD4+PjMxPDwyKXwwKT4+Ml0pKXtSZT05NjticmVha31sPDw9MSxmPWN9aWYo''@;'; put 'put ''OTY9PSgwfFJlKSl7YVtwPj4yXT1BLGFbQSsyND4+Ml09ZixhW0ErMTI+PjJdPUEsYVtBKzg+PjJdPUE7YnJlYWt9aWYoOTc9PSgwfFJlKSl7YVsxMisoSGU9MHxhWyhSZT1mKzh8MCk+PjJdKT4+Ml09QSxhW1JlPj4yXT1BLGFbQSs4Pj4yXT1IZSxhW0ErMTI+PjJdPWYsYVtBKzI0Pj4yXT0w''@;'; put 'put ''O2JyZWFrfX1lbHNlIGFbYis0Pj4yXT0zfChIZT13K0R8MCksYVsoSGU9YitIZSs0fDApPj4yXT0xfGFbSGU+PjJdfXdoaWxlKDApO3JldHVybiBsZT1WZSwwfGIrOH1SPUR9ZWxzZSBSPUQ7ZWxzZSBSPS0xfXdoaWxlKDApO2lmKChmPTB8YVs0NzUyMV0pPj4+MD49Uj4+PjApcmV0dXJuIGw9''@;'; put 'put ''MHxhWzQ3NTI0XSwoYz1mLVJ8MCk+Pj4wPjE1PyhhWzQ3NTI0XT1IZT1sK1J8MCxhWzQ3NTIxXT1jLGFbSGUrND4+Ml09MXxjLGFbbCtmPj4yXT1jLGFbbCs0Pj4yXT0zfFIpOihhWzQ3NTIxXT0wLGFbNDc1MjRdPTAsYVtsKzQ+PjJdPTN8ZixhWyhIZT1sK2YrNHwwKT4+Ml09MXxhW0hlPj4y''@;'; put 'put ''XSksbGU9VmUsMHxsKzg7aWYoKGI9MHxhWzQ3NTIyXSk+Pj4wPlI+Pj4wKXJldHVybiBhWzQ3NTIyXT1MZT1iLVJ8MCxhWzQ3NTI1XT1SZT0oSGU9MHxhWzQ3NTI1XSkrUnwwLGFbUmUrND4+Ml09MXxMZSxhW0hlKzQ+PjJdPTN8UixsZT1WZSwwfEhlKzg7aWYoMHxhWzQ3NjM3XT9sPTB8YVs0''@;'; put 'put ''NzYzOV06KGFbNDc2MzldPTQwOTYsYVs0NzYzOF09NDA5NixhWzQ3NjQwXT0tMSxhWzQ3NjQxXT0tMSxhWzQ3NjQyXT0wLGFbNDc2MzBdPTAsYVs0NzYzN109LTE2JnFeMTQzMTY1NTc2OCxsPTQwOTYpLGs9Uis0OHwwLChEPSh3PWwrKE09Uis0N3wwKXwwKSYobT0wLWx8MCkpPj4+MDw9Uj4+''@;'; put 'put ''PjB8fDB8KGw9MHxhWzQ3NjI5XSkmJihxPShHPTB8YVs0NzYyN10pK0R8MCk+Pj4wPD1HPj4+MHxxPj4+MD5sPj4+MClyZXR1cm4gbGU9VmUsMDtlOmRve2lmKDQmYVs0NzYzMF0pYz0wLFJlPTEzMztlbHNle2Y9MHxhWzQ3NTI1XTt0OmRve2lmKGYpe2ZvcihwPTE5MDUyNDshKChsPTB8YVtw''@;'; put 'put ''Pj4yXSk+Pj4wPD1mPj4+MCYmKGJlPXArNHwwLChsKygwfGFbYmU+PjJdKXwwKT4+PjA+Zj4+PjApKTspe2lmKCEobD0wfGFbcCs4Pj4yXSkpe1JlPTExODticmVhayB0fXA9bH1pZigoYz13LWImbSk+Pj4wPDIxNDc0ODM2NDcpaWYoKDB8KGw9MHx5MigwfGMpKSk9PSgoMHxhW3A+PjJdKSso''@;'; put 'put ''MHxhW2JlPj4yXSl8MCkpe2lmKC0xIT0oMHxsKSl7dz1jLEE9bCxSZT0xMzU7YnJlYWsgZX19ZWxzZSBwPWwsUmU9MTI2O2Vsc2UgYz0wfWVsc2UgUmU9MTE4fXdoaWxlKDApO2Rve2lmKDExOD09KDB8UmUpKWlmKC0xIT0oMHwoZj0wfHkyKDApKSkmJihnZT0oYz0oMD09KChnZT0ocGU9MHxh''@;'; put 'put ''WzQ3NjM4XSktMXwwKSYoYz1mKXwwKT8wOihnZStjJjAtcGUpLWN8MCkrRHwwKSsocGU9MHxhWzQ3NjI3XSl8MCxjPj4+MD5SPj4+MCZjPj4+MDwyMTQ3NDgzNjQ3KSl7aWYoMHwoYmU9MHxhWzQ3NjI5XSkmJmdlPj4+MDw9cGU+Pj4wfGdlPj4+MD5iZT4+PjApe2M9MDticmVha31pZigoMHwo''@;'; put 'put ''bD0wfHkyKDB8YykpKT09KDB8Zikpe3c9YyxBPWYsUmU9MTM1O2JyZWFrIGV9cD1sLFJlPTEyNn1lbHNlIGM9MH13aGlsZSgwKTtkb3tpZigxMjY9PSgwfFJlKSl7aWYoZj0wLWN8MCwhKGs+Pj4wPmM+Pj4wJmM+Pj4wPDIxNDc0ODM2NDcmLTEhPSgwfHApKSl7aWYoLTE9PSgwfHApKXtjPTA7''@;'; put 'put ''YnJlYWt9dz1jLEE9cCxSZT0xMzU7YnJlYWsgZX1pZigobD1NLWMrKGw9MHxhWzQ3NjM5XSkmMC1sKT4+PjA+PTIxNDc0ODM2NDcpe3c9YyxBPXAsUmU9MTM1O2JyZWFrIGV9aWYoLTE9PSgwfHkyKDB8bCkpKXt5MigwfGYpLGM9MDticmVha313PWwrY3wwLEE9cCxSZT0xMzU7YnJlYWsgZX19''@;'; put 'put ''d2hpbGUoMCk7YVs0NzYzMF09NHxhWzQ3NjMwXSxSZT0xMzN9fXdoaWxlKDApO2lmKDEzMz09KDB8UmUpJiZEPj4+MDwyMTQ3NDgzNjQ3JiYhKC0xPT0oMHwoQT0wfHkyKDB8RCkpKXwxXihMZT0oT2U9KGJlPTB8eTIoMCkpLUF8MCk+Pj4wPihSKzQwfDApPj4+MCl8QT4+PjA8YmU+Pj4wJi0x''@;'; put 'put ''IT0oMHxBKSYtMSE9KDB8YmUpXjEpJiYodz1MZT9PZTpjLFJlPTEzNSksMTM1PT0oMHxSZSkpe2FbNDc2MjddPWM9KDB8YVs0NzYyN10pK3d8MCxjPj4+MD4oMHxhWzQ3NjI4XSk+Pj4wJiYoYVs0NzYyOF09Yyksaz0wfGFbNDc1MjVdO2Rve2lmKGspe2ZvcihjPTE5MDUyNDs7KXtpZigoMHxB''@;'; put 'put ''KT09KChsPTB8YVtjPj4yXSkrKHA9MHxhWyhmPWMrNHwwKT4+Ml0pfDApKXtSZT0xNDM7YnJlYWt9aWYoIShtPTB8YVtjKzg+PjJdKSlicmVhaztjPW19aWYoMTQzPT0oMHxSZSkmJjA9PSg4JmFbYysxMj4+Ml18MCkmJkE+Pj4wPms+Pj4wJmw+Pj4wPD1rPj4+MCl7YVtmPj4yXT1wK3csUmU9''@;'; put 'put ''aysoTGU9MD09KDcmKExlPWsrOHwwKXwwKT8wOjAtTGUmNyl8MCxMZT0oSGU9KDB8YVs0NzUyMl0pK3d8MCktTGV8MCxhWzQ3NTI1XT1SZSxhWzQ3NTIyXT1MZSxhW1JlKzQ+PjJdPTF8TGUsYVtrK0hlKzQ+PjJdPTQwLGFbNDc1MjZdPWFbNDc2NDFdO2JyZWFrfWZvcihBPj4+MDwoMHxhWzQ3''@;'; put 'put ''NTIzXSk+Pj4wJiYoYVs0NzUyM109QSksbD1BK3d8MCxjPTE5MDUyNDs7KXtpZigoMHxhW2M+PjJdKT09KDB8bCkpe1JlPTE1MTticmVha31pZighKGM9MHxhW2MrOD4+Ml0pKXtsPTE5MDUyNDticmVha319aWYoMTUxPT0oMHxSZSkpe2lmKCEoOCZhW2MrMTI+PjJdKSl7YVtjPj4yXT1BLGFb''@;'; put 'put ''KEQ9Yys0fDApPj4yXT0oMHxhW0Q+PjJdKSt3LE09KEQ9QSsoMD09KDcmKEQ9QSs4fDApfDApPzA6MC1EJjcpfDApK1J8MCxiPShjPWwrKDA9PSg3JihjPWwrOHwwKXwwKT8wOjAtYyY3KXwwKS1ELVJ8MCxhW0QrND4+Ml09M3xSO2Rve2lmKCgwfGspIT0oMHxjKSl7aWYoKDB8YVs0NzUyNF0p''@;'; put 'put ''PT0oMHxjKSl7YVs0NzUyMV09SGU9KDB8YVs0NzUyMV0pK2J8MCxhWzQ3NTI0XT1NLGFbTSs0Pj4yXT0xfEhlLGFbTStIZT4+Ml09SGU7YnJlYWt9aWYoMT09KDMmKGw9MHxhW2MrND4+Ml0pfDApKXt3PS04JmwscD1sPj4+MztlOmRve2lmKGw+Pj4wPDI1Nil7aWYoKDB8KGY9MHxhW2MrMTI+''@;'; put 'put ''PjJdKSk9PSgwfChsPTB8YVtjKzg+PjJdKSkpe2FbNDc1MTldPWFbNDc1MTldJn4oMTw8cCk7YnJlYWt9YVtsKzEyPj4yXT1mLGFbZis4Pj4yXT1sO2JyZWFrfUE9MHxhW2MrMjQ+PjJdLGw9MHxhW2MrMTI+PjJdO2Rve2lmKCgwfGwpPT0oMHxjKSl7aWYoIShsPTB8YVsoZj00KyhwPWMrMTZ8''@;'; put 'put ''MCl8MCk+PjJdKSl7aWYoIShsPTB8YVtwPj4yXSkpe2w9MDticmVha31mPXB9Zm9yKDs7KWlmKDB8KG09MHxhWyhwPWwrMjB8MCk+PjJdKSlsPW0sZj1wO2Vsc2V7aWYoIShtPTB8YVsocD1sKzE2fDApPj4yXSkpYnJlYWs7bD1tLGY9cH1hW2Y+PjJdPTB9ZWxzZSBhWzEyKyhIZT0wfGFbYys4''@;'; put 'put ''Pj4yXSk+PjJdPWwsYVtsKzg+PjJdPUhlfXdoaWxlKDApO2lmKCFBKWJyZWFrO3A9MTkwMzgwKygoZj0wfGFbYysyOD4+Ml0pPDwyKXwwO2Rve2lmKCgwfGFbcD4+Ml0pPT0oMHxjKSl7aWYoYVtwPj4yXT1sLDB8bClicmVhazthWzQ3NTIwXT1hWzQ3NTIwXSZ+KDE8PGYpO2JyZWFrIGV9aWYo''@;'; put 'put ''YVtBKzE2KygoKDB8YVtBKzE2Pj4yXSkhPSgwfGMpJjEpPDwyKT4+Ml09bCwhbClicmVhayBlfXdoaWxlKDApO2lmKGFbbCsyND4+Ml09QSwwfChwPTB8YVsoZj1jKzE2fDApPj4yXSkmJihhW2wrMTY+PjJdPXAsYVtwKzI0Pj4yXT1sKSwhKGY9MHxhW2YrND4+Ml0pKWJyZWFrO2FbbCsyMD4+''@;'; put 'put ''Ml09ZixhW2YrMjQ+PjJdPWx9d2hpbGUoMCk7Yz1jK3d8MCxtPXcrYnwwfWVsc2UgbT1iO2lmKGFbKGM9Yys0fDApPj4yXT0tMiZhW2M+PjJdLGFbTSs0Pj4yXT0xfG0sYVtNK20+PjJdPW0sYz1tPj4+MyxtPj4+MDwyNTYpe2Y9MTkwMTE2KyhjPDwxPDwyKXwwLChsPTB8YVs0NzUxOV0pJihj''@;'; put 'put ''PTE8PGMpP2M9MHxhWyhsPWYrOHwwKT4+Ml06KGFbNDc1MTldPWx8YyxjPWYsbD1mKzh8MCksYVtsPj4yXT1NLGFbYysxMj4+Ml09TSxhW00rOD4+Ml09YyxhW00rMTI+PjJdPWY7YnJlYWt9Yz1tPj4+ODtkb3tpZihjKXtpZihtPj4+MD4xNjc3NzIxNSl7Yz0zMTticmVha31jPW0+Pj4oNyso''@;'; put 'put ''Yz0xNC0oKExlPSg1MjAxOTIrKEhlPWM8PChSZT0oYysxMDQ4MzIwfDApPj4+MTYmOCkpfDApPj4+MTYmNCl8UmV8KGM9KDI0NTc2MCsoSGU8PD1MZSl8MCk+Pj4xNiYyKSkrKEhlPDxjPj4+MTUpfDApfDApJjF8Yzw8MX1lbHNlIGM9MH13aGlsZSgwKTtpZihwPTE5MDM4MCsoYzw8Mil8MCxh''@;'; put 'put ''W00rMjg+PjJdPWMsYVs0KyhsPU0rMTZ8MCk+PjJdPTAsYVtsPj4yXT0wLCEoKGw9MHxhWzQ3NTIwXSkmKGY9MTw8YykpKXthWzQ3NTIwXT1sfGYsYVtwPj4yXT1NLGFbTSsyND4+Ml09cCxhW00rMTI+PjJdPU0sYVtNKzg+PjJdPU07YnJlYWt9Zm9yKGw9bTw8KDMxPT0oMHxjKT8wOjI1LShj''@;'; put 'put ''Pj4+MSl8MCksZj0wfGFbcD4+Ml07Oyl7aWYoKC04JmFbZis0Pj4yXXwwKT09KDB8bSkpe1JlPTE5MjticmVha31pZighKGM9MHxhWyhwPWYrMTYrKGw+Pj4zMTw8Mil8MCk+PjJdKSl7UmU9MTkxO2JyZWFrfWw8PD0xLGY9Y31pZigxOTE9PSgwfFJlKSl7YVtwPj4yXT1NLGFbTSsyND4+Ml09''@;'; put 'put ''ZixhW00rMTI+PjJdPU0sYVtNKzg+PjJdPU07YnJlYWt9aWYoMTkyPT0oMHxSZSkpe2FbMTIrKEhlPTB8YVsoUmU9Zis4fDApPj4yXSk+PjJdPU0sYVtSZT4+Ml09TSxhW00rOD4+Ml09SGUsYVtNKzEyPj4yXT1mLGFbTSsyND4+Ml09MDticmVha319ZWxzZSBhWzQ3NTIyXT1IZT0oMHxhWzQ3''@;'; put 'put ''NTIyXSkrYnwwLGFbNDc1MjVdPU0sYVtNKzQ+PjJdPTF8SGV9d2hpbGUoMCk7cmV0dXJuIGxlPVZlLDB8RCs4fWw9MTkwNTI0fWZvcig7ISgoYz0wfGFbbD4+Ml0pPj4+MDw9az4+PjAmJihIZT1jKygwfGFbbCs0Pj4yXSl8MCxIZT4+PjA+az4+PjApKTspbD0wfGFbbCs4Pj4yXTtjPShsPShs''@;'; put 'put ''PShtPUhlKy00N3wwKSsoMD09KDcmKGw9bSs4fDApfDApPzA6MC1sJjcpfDApPj4+MDwobT1rKzE2fDApPj4+MD9rOmwpKzh8MCxSZT1BKyhMZT0wPT0oNyYoTGU9QSs4fDApfDApPzA6MC1MZSY3KXwwLExlPShmPXcrLTQwfDApLUxlfDAsYVs0NzUyNV09UmUsYVs0NzUyMl09TGUsYVtSZSs0''@;'; put 'put ''Pj4yXT0xfExlLGFbQStmKzQ+PjJdPTQwLGFbNDc1MjZdPWFbNDc2NDFdLGFbKGY9bCs0fDApPj4yXT0yNyxhW2M+PjJdPWFbNDc2MzFdLGFbYys0Pj4yXT1hWzQ3NjMyXSxhW2MrOD4+Ml09YVs0NzYzM10sYVtjKzEyPj4yXT1hWzQ3NjM0XSxhWzQ3NjMxXT1BLGFbNDc2MzJdPXcsYVs0NzYz''@;'; put 'put ''NF09MCxhWzQ3NjMzXT1jLGM9bCsyNHwwO2Rve1JlPWMsYVsoYz1jKzR8MCk+PjJdPTd9d2hpbGUoKFJlKzh8MCk+Pj4wPEhlPj4+MCk7aWYoKDB8bCkhPSgwfGspKXtpZihBPWwta3wwLGFbZj4+Ml09LTImYVtmPj4yXSxhW2srND4+Ml09MXxBLGFbbD4+Ml09QSxjPUE+Pj4zLEE+Pj4wPDI1''@;'; put 'put ''Nil7Zj0xOTAxMTYrKGM8PDE8PDIpfDAsKGw9MHxhWzQ3NTE5XSkmKGM9MTw8Yyk/Yz0wfGFbKGw9Zis4fDApPj4yXTooYVs0NzUxOV09bHxjLGM9ZixsPWYrOHwwKSxhW2w+PjJdPWssYVtjKzEyPj4yXT1rLGFbays4Pj4yXT1jLGFbaysxMj4+Ml09ZjticmVha31pZihwPTE5MDM4MCsoKGY9''@;'; put 'put ''KGM9QT4+PjgpP0E+Pj4wPjE2Nzc3MjE1PzMxOkE+Pj4oNysoZj0xNC0oKExlPSg1MjAxOTIrKEhlPWM8PChSZT0oYysxMDQ4MzIwfDApPj4+MTYmOCkpfDApPj4+MTYmNCl8UmV8KGY9KDI0NTc2MCsoSGU8PD1MZSl8MCk+Pj4xNiYyKSkrKEhlPDxmPj4+MTUpfDApfDApJjF8Zjw8MTowKTw8''@;'; put 'put ''Mil8MCxhW2srMjg+PjJdPWYsYVtrKzIwPj4yXT0wLGFbbT4+Ml09MCwhKChjPTB8YVs0NzUyMF0pJihsPTE8PGYpKSl7YVs0NzUyMF09Y3xsLGFbcD4+Ml09ayxhW2srMjQ+PjJdPXAsYVtrKzEyPj4yXT1rLGFbays4Pj4yXT1rO2JyZWFrfWZvcihsPUE8PCgzMT09KDB8Zik/MDoyNS0oZj4+''@;'; put 'put ''PjEpfDApLGY9MHxhW3A+PjJdOzspe2lmKCgtOCZhW2YrND4+Ml18MCk9PSgwfEEpKXtSZT0yMTM7YnJlYWt9aWYoIShjPTB8YVsocD1mKzE2KyhsPj4+MzE8PDIpfDApPj4yXSkpe1JlPTIxMjticmVha31sPDw9MSxmPWN9aWYoMjEyPT0oMHxSZSkpe2FbcD4+Ml09ayxhW2srMjQ+PjJdPWYs''@;'; put 'put ''YVtrKzEyPj4yXT1rLGFbays4Pj4yXT1rO2JyZWFrfWlmKDIxMz09KDB8UmUpKXthWzEyKyhIZT0wfGFbKFJlPWYrOHwwKT4+Ml0pPj4yXT1rLGFbUmU+PjJdPWssYVtrKzg+PjJdPUhlLGFbaysxMj4+Ml09ZixhW2srMjQ+PjJdPTA7YnJlYWt9fX1lbHNlIDA9PSgwfChIZT0wfGFbNDc1MjNd''@;'; put 'put ''KSl8QT4+PjA8SGU+Pj4wJiYoYVs0NzUyM109QSksYVs0NzYzMV09QSxhWzQ3NjMyXT13LGFbNDc2MzRdPTAsYVs0NzUyOF09YVs0NzYzN10sYVs0NzUyN109LTEsYVs0NzUzMl09MTkwMTE2LGFbNDc1MzFdPTE5MDExNixhWzQ3NTM0XT0xOTAxMjQsYVs0NzUzM109MTkwMTI0LGFbNDc1MzZd''@;'; put 'put ''PTE5MDEzMixhWzQ3NTM1XT0xOTAxMzIsYVs0NzUzOF09MTkwMTQwLGFbNDc1MzddPTE5MDE0MCxhWzQ3NTQwXT0xOTAxNDgsYVs0NzUzOV09MTkwMTQ4LGFbNDc1NDJdPTE5MDE1NixhWzQ3NTQxXT0xOTAxNTYsYVs0NzU0NF09MTkwMTY0LGFbNDc1NDNdPTE5MDE2NCxhWzQ3NTQ2XT0xOTAx''@;'; put 'put ''NzIsYVs0NzU0NV09MTkwMTcyLGFbNDc1NDhdPTE5MDE4MCxhWzQ3NTQ3XT0xOTAxODAsYVs0NzU1MF09MTkwMTg4LGFbNDc1NDldPTE5MDE4OCxhWzQ3NTUyXT0xOTAxOTYsYVs0NzU1MV09MTkwMTk2LGFbNDc1NTRdPTE5MDIwNCxhWzQ3NTUzXT0xOTAyMDQsYVs0NzU1Nl09MTkwMjEyLGFb''@;'; put 'put ''NDc1NTVdPTE5MDIxMixhWzQ3NTU4XT0xOTAyMjAsYVs0NzU1N109MTkwMjIwLGFbNDc1NjBdPTE5MDIyOCxhWzQ3NTU5XT0xOTAyMjgsYVs0NzU2Ml09MTkwMjM2LGFbNDc1NjFdPTE5MDIzNixhWzQ3NTY0XT0xOTAyNDQsYVs0NzU2M109MTkwMjQ0LGFbNDc1NjZdPTE5MDI1MixhWzQ3NTY1''@;'; put 'put ''XT0xOTAyNTIsYVs0NzU2OF09MTkwMjYwLGFbNDc1NjddPTE5MDI2MCxhWzQ3NTcwXT0xOTAyNjgsYVs0NzU2OV09MTkwMjY4LGFbNDc1NzJdPTE5MDI3NixhWzQ3NTcxXT0xOTAyNzYsYVs0NzU3NF09MTkwMjg0LGFbNDc1NzNdPTE5MDI4NCxhWzQ3NTc2XT0xOTAyOTIsYVs0NzU3NV09MTkw''@;'; put 'put ''MjkyLGFbNDc1NzhdPTE5MDMwMCxhWzQ3NTc3XT0xOTAzMDAsYVs0NzU4MF09MTkwMzA4LGFbNDc1NzldPTE5MDMwOCxhWzQ3NTgyXT0xOTAzMTYsYVs0NzU4MV09MTkwMzE2LGFbNDc1ODRdPTE5MDMyNCxhWzQ3NTgzXT0xOTAzMjQsYVs0NzU4Nl09MTkwMzMyLGFbNDc1ODVdPTE5MDMzMixh''@;'; put 'put ''WzQ3NTg4XT0xOTAzNDAsYVs0NzU4N109MTkwMzQwLGFbNDc1OTBdPTE5MDM0OCxhWzQ3NTg5XT0xOTAzNDgsYVs0NzU5Ml09MTkwMzU2LGFbNDc1OTFdPTE5MDM1NixhWzQ3NTk0XT0xOTAzNjQsYVs0NzU5M109MTkwMzY0LFJlPUErKExlPTA9PSg3JihMZT1BKzh8MCl8MCk/MDowLUxlJjcp''@;'; put 'put ''fDAsTGU9KEhlPXcrLTQwfDApLUxlfDAsYVs0NzUyNV09UmUsYVs0NzUyMl09TGUsYVtSZSs0Pj4yXT0xfExlLGFbQStIZSs0Pj4yXT00MCxhWzQ3NTI2XT1hWzQ3NjQxXX13aGlsZSgwKTtpZigoYz0wfGFbNDc1MjJdKT4+PjA+Uj4+PjApcmV0dXJuIGFbNDc1MjJdPUxlPWMtUnwwLGFbNDc1''@;'; put 'put ''MjVdPVJlPShIZT0wfGFbNDc1MjVdKStSfDAsYVtSZSs0Pj4yXT0xfExlLGFbSGUrND4+Ml09M3xSLGxlPVZlLDB8SGUrOH1yZXR1cm4gYVs0NzY0M109MTIsbGU9VmUsMH1mdW5jdGlvbiBGdChsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDtpZihsfD0wKXttPTB8YVs0''@;'; put 'put ''NzUyM10saz0oZj1sKy04fDApKyhjPS04JihsPTB8YVtsKy00Pj4yXSkpfDA7ZG97aWYoMSZsKWI9Zix3PWY7ZWxzZXtpZihwPTB8YVtmPj4yXSwhKDMmbCl8fChBPXArY3wwLCh3PWYrKDAtcCl8MCk+Pj4wPG0+Pj4wKSlyZXR1cm47aWYoKDB8YVs0NzUyNF0pPT0oMHx3KSl7aWYoMyE9KDMm''@;'; put 'put ''KGM9MHxhWyhsPWsrNHwwKT4+Ml0pfDApKXtiPXcsYz1BO2JyZWFrfXJldHVybiBhWzQ3NTIxXT1BLGFbbD4+Ml09LTImYyxhW3crND4+Ml09MXxBLHZvaWQoYVt3K0E+PjJdPUEpfWlmKGY9cD4+PjMscD4+PjA8MjU2KXtpZigoMHwoYz0wfGFbdysxMj4+Ml0pKT09KDB8KGw9MHxhW3crOD4+''@;'; put 'put ''Ml0pKSl7YVs0NzUxOV09YVs0NzUxOV0mfigxPDxmKSxiPXcsYz1BO2JyZWFrfWFbbCsxMj4+Ml09YyxhW2MrOD4+Ml09bCxiPXcsYz1BO2JyZWFrfW09MHxhW3crMjQ+PjJdLGw9MHxhW3crMTI+PjJdO2Rve2lmKCgwfGwpPT0oMHx3KSl7aWYoIShsPTB8YVsoYz00KyhmPXcrMTZ8MCl8MCk+''@;'; put 'put ''PjJdKSl7aWYoIShsPTB8YVtmPj4yXSkpe2w9MDticmVha31jPWZ9Zm9yKDs7KWlmKDB8KHA9MHxhWyhmPWwrMjB8MCk+PjJdKSlsPXAsYz1mO2Vsc2V7aWYoIShwPTB8YVsoZj1sKzE2fDApPj4yXSkpYnJlYWs7bD1wLGM9Zn1hW2M+PjJdPTB9ZWxzZSBhWzEyKyhiPTB8YVt3Kzg+PjJdKT4+''@;'; put 'put ''Ml09bCxhW2wrOD4+Ml09Yn13aGlsZSgwKTtpZihtKXtpZigoMHxhWyhmPTE5MDM4MCsoKGM9MHxhW3crMjg+PjJdKTw8Mil8MCk+PjJdKT09KDB8dykpe2lmKGFbZj4+Ml09bCwhbCl7YVs0NzUyMF09YVs0NzUyMF0mfigxPDxjKSxiPXcsYz1BO2JyZWFrfX1lbHNlIGlmKGFbbSsxNisoKCgw''@;'; put 'put ''fGFbbSsxNj4+Ml0pIT0oMHx3KSYxKTw8Mik+PjJdPWwsIWwpe2I9dyxjPUE7YnJlYWt9YVtsKzI0Pj4yXT1tLDB8KGY9MHxhWyhjPXcrMTZ8MCk+PjJdKSYmKGFbbCsxNj4+Ml09ZixhW2YrMjQ+PjJdPWwpLChjPTB8YVtjKzQ+PjJdKT8oYVtsKzIwPj4yXT1jLGFbYysyND4+Ml09bCxiPXcs''@;'; put 'put ''Yz1BKTooYj13LGM9QSl9ZWxzZSBiPXcsYz1BfX13aGlsZSgwKTtpZighKHc+Pj4wPj1rPj4+MCkmJjEmKHA9MHxhWyhsPWsrNHwwKT4+Ml0pKXtpZigyJnApYVtsPj4yXT0tMiZwLGFbYis0Pj4yXT0xfGMsYVt3K2M+PjJdPWMsbT1jO2Vsc2V7aWYoKDB8YVs0NzUyNV0pPT0oMHxrKSl7aWYo''@;'; put 'put ''YVs0NzUyMl09az0oMHxhWzQ3NTIyXSkrY3wwLGFbNDc1MjVdPWIsYVtiKzQ+PjJdPTF8aywoMHxiKSE9KDB8YVs0NzUyNF0pKXJldHVybjtyZXR1cm4gYVs0NzUyNF09MCx2b2lkKGFbNDc1MjFdPTApfWlmKCgwfGFbNDc1MjRdKT09KDB8aykpcmV0dXJuIGFbNDc1MjFdPWs9KDB8YVs0NzUy''@;'; put 'put ''MV0pK2N8MCxhWzQ3NTI0XT13LGFbYis0Pj4yXT0xfGssdm9pZChhW3craz4+Ml09ayk7bT0oLTgmcCkrY3wwLGY9cD4+PjM7ZG97aWYocD4+PjA8MjU2KXtpZigoMHwobD0wfGFbaysxMj4+Ml0pKT09KDB8KGM9MHxhW2srOD4+Ml0pKSl7YVs0NzUxOV09YVs0NzUxOV0mfigxPDxmKTticmVh''@;'; put 'put ''a31hW2MrMTI+PjJdPWwsYVtsKzg+PjJdPWM7YnJlYWt9QT0wfGFbaysyND4+Ml0sbD0wfGFbaysxMj4+Ml07ZG97aWYoKDB8bCk9PSgwfGspKXtpZighKGw9MHxhWyhjPTQrKGY9aysxNnwwKXwwKT4+Ml0pKXtpZighKGw9MHxhW2Y+PjJdKSl7Zj0wO2JyZWFrfWM9Zn1mb3IoOzspaWYoMHwo''@;'; put 'put ''cD0wfGFbKGY9bCsyMHwwKT4+Ml0pKWw9cCxjPWY7ZWxzZXtpZighKHA9MHxhWyhmPWwrMTZ8MCk+PjJdKSlicmVhaztsPXAsYz1mfWFbYz4+Ml09MCxmPWx9ZWxzZSBhWzEyKyhmPTB8YVtrKzg+PjJdKT4+Ml09bCxhW2wrOD4+Ml09ZixmPWx9d2hpbGUoMCk7aWYoMHxBKXtpZigoMHxhWyhj''@;'; put 'put ''PTE5MDM4MCsoKGw9MHxhW2srMjg+PjJdKTw8Mil8MCk+PjJdKT09KDB8aykpe2lmKGFbYz4+Ml09ZiwhZil7YVs0NzUyMF09YVs0NzUyMF0mfigxPDxsKTticmVha319ZWxzZSBpZihhW0ErMTYrKCgoMHxhW0ErMTY+PjJdKSE9KDB8aykmMSk8PDIpPj4yXT1mLCFmKWJyZWFrO2FbZisyND4+''@;'; put 'put ''Ml09QSwwfChjPTB8YVsobD1rKzE2fDApPj4yXSkmJihhW2YrMTY+PjJdPWMsYVtjKzI0Pj4yXT1mKSwwfChsPTB8YVtsKzQ+PjJdKSYmKGFbZisyMD4+Ml09bCxhW2wrMjQ+PjJdPWYpfX13aGlsZSgwKTtpZihhW2IrND4+Ml09MXxtLGFbdyttPj4yXT1tLCgwfGIpPT0oMHxhWzQ3NTI0XSkp''@;'; put 'put ''cmV0dXJuIHZvaWQoYVs0NzUyMV09bSl9aWYobD1tPj4+MyxtPj4+MDwyNTYpcmV0dXJuIGY9MTkwMTE2KyhsPDwxPDwyKXwwLChjPTB8YVs0NzUxOV0pJihsPTE8PGwpP2w9MHxhWyhjPWYrOHwwKT4+Ml06KGFbNDc1MTldPWN8bCxsPWYsYz1mKzh8MCksYVtjPj4yXT1iLGFbbCsxMj4+Ml09''@;'; put 'put ''YixhW2IrOD4+Ml09bCx2b2lkKGFbYisxMj4+Ml09Zik7cD0xOTAzODArKChsPShsPW0+Pj44KT9tPj4+MD4xNjc3NzIxNT8zMTptPj4+KDcrKGw9MTQtKChBPSg1MjAxOTIrKGs9bDw8KHc9KGwrMTA0ODMyMHwwKT4+PjE2JjgpKXwwKT4+PjE2JjQpfHd8KGw9KDI0NTc2MCsoazw8PUEpfDAp''@;'; put 'put ''Pj4+MTYmMikpKyhrPDxsPj4+MTUpfDApfDApJjF8bDw8MTowKTw8Mil8MCxhW2IrMjg+PjJdPWwsYVtiKzIwPj4yXT0wLGFbYisxNj4+Ml09MCxjPTB8YVs0NzUyMF0sZj0xPDxsO2Rve2lmKGMmZil7Zm9yKGM9bTw8KDMxPT0oMHxsKT8wOjI1LShsPj4+MSl8MCksZj0wfGFbcD4+Ml07Oyl7''@;'; put 'put ''aWYoKC04JmFbZis0Pj4yXXwwKT09KDB8bSkpe2w9NzM7YnJlYWt9aWYoIShsPTB8YVsocD1mKzE2KyhjPj4+MzE8PDIpfDApPj4yXSkpe2w9NzI7YnJlYWt9Yzw8PTEsZj1sfWlmKDcyPT0oMHxsKSl7YVtwPj4yXT1iLGFbYisyND4+Ml09ZixhW2IrMTI+PjJdPWIsYVtiKzg+PjJdPWI7YnJl''@;'; put 'put ''YWt9aWYoNzM9PSgwfGwpKXthWzEyKyhrPTB8YVsodz1mKzh8MCk+PjJdKT4+Ml09YixhW3c+PjJdPWIsYVtiKzg+PjJdPWssYVtiKzEyPj4yXT1mLGFbYisyND4+Ml09MDticmVha319ZWxzZSBhWzQ3NTIwXT1jfGYsYVtwPj4yXT1iLGFbYisyND4+Ml09cCxhW2IrMTI+PjJdPWIsYVtiKzg+''@;'; put 'put ''PjJdPWJ9d2hpbGUoMCk7aWYoYVs0NzUyN109az0oMHxhWzQ3NTI3XSktMXwwLGspcmV0dXJuO2ZvcihsPTE5MDUzMjtsPTB8YVtsPj4yXTspbD1sKzh8MDthWzQ3NTI3XT0tMX19fWZ1bmN0aW9uIHNoKGwsYyl7Y3w9MDt2YXIgZj0wO3JldHVybihsfD0wKT8oZj0wfEFyKGMsbCksKGN8bCk+''@;'; put 'put ''Pj4wPjY1NTM1JiYoZj0oMHwoZj4+PjApLyhsPj4+MCkpPT0oMHxjKT9mOi0xKSk6Zj0wLCEobD0wfEYwKGYpKXx8ISgzJmFbbCstND4+Ml0pfHx1MigwfGwsMCwwfGYpLDB8bH1mdW5jdGlvbiBVYShsLGMpe2N8PTA7dmFyIGY9MCxwPTA7cmV0dXJuKGx8PTApP2M+Pj4wPjQyOTQ5NjcyMzE/''@;'; put 'put ''KGFbNDc2NDNdPTEyLDB8KGM9MCkpOihmPTB8ZnVuY3Rpb24gUHVlKGwsYyl7Y3w9MDt2YXIgRCxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLFI9MDtpZihiPShsfD0wKSsoZj0tOCYoUj0wfGFbKEQ9bCs0fDApPj4yXSkpfDAsISgzJlIpKXJldHVybiBjPj4+MDwyNTY/MHwobD0w''@;'; put 'put ''KTooZj4+PjA+PShjKzR8MCk+Pj4wJiYoZi1jfDApPj4+MDw9YVs0NzYzOV08PDE+Pj4wfHwobD0wKSwwfGwpO2lmKGY+Pj4wPj1jPj4+MClyZXR1cm4oZj1mLWN8MCk+Pj4wPD0xNXx8KE09bCtjfDAsYVtEPj4yXT0xJlJ8Y3wyLGFbTSs0Pj4yXT0zfGYsYVsoUj1iKzR8MCk+PjJdPTF8YVtS''@;'; put 'put ''Pj4yXSxkTChNLGYpKSwwfGw7aWYoKDB8YVs0NzUyNV0pPT0oMHxiKSlyZXR1cm4gZj0oTT0oMHxhWzQ3NTIyXSkrZnwwKS1jfDAscD1sK2N8MCxNPj4+MDw9Yz4+PjA/MHwobD0wKTooYVtEPj4yXT0xJlJ8Y3wyLGFbcCs0Pj4yXT0xfGYsYVs0NzUyNV09cCxhWzQ3NTIyXT1mLDB8bCk7aWYo''@;'; put 'put ''KDB8YVs0NzUyNF0pPT0oMHxiKSlyZXR1cm4ocD0oMHxhWzQ3NTIxXSkrZnwwKT4+PjA8Yz4+PjA/MHwobD0wKTooKGY9cC1jfDApPj4+MD4xNT8oTT1sK2N8MCxwPWwrcHwwLGFbRD4+Ml09MSZSfGN8MixhW00rND4+Ml09MXxmLGFbcD4+Ml09ZixhWyhwPXArNHwwKT4+Ml09LTImYVtwPj4y''@;'; put 'put ''XSxwPU0pOihhW0Q+PjJdPTEmUnxwfDIsYVsocD1sK3ArNHwwKT4+Ml09MXxhW3A+PjJdLHA9MCxmPTApLGFbNDc1MjFdPWYsYVs0NzUyNF09cCwwfGwpO2lmKDImKHA9MHxhW2IrND4+Ml0pfDB8fChrPSgtOCZwKStmfDApPj4+MDxjPj4+MClyZXR1cm4gMDtNPWstY3wwLG09cD4+PjM7ZG97''@;'; put 'put ''aWYocD4+PjA8MjU2KXtpZigoMHwoZj0wfGFbYisxMj4+Ml0pKT09KDB8KHA9MHxhW2IrOD4+Ml0pKSl7YVs0NzUxOV09YVs0NzUxOV0mfigxPDxtKTticmVha31hW3ArMTI+PjJdPWYsYVtmKzg+PjJdPXA7YnJlYWt9dz0wfGFbYisyND4+Ml0sZj0wfGFbYisxMj4+Ml07ZG97aWYoKDB8Zik9''@;'; put 'put ''PSgwfGIpKXtpZihmPTB8YVsocD00KyhtPWIrMTZ8MCl8MCk+PjJdKUE9cDtlbHNle2lmKCEoZj0wfGFbbT4+Ml0pKXttPTA7YnJlYWt9QT1tfWZvcig7OylpZigwfChwPTB8YVsobT1mKzIwfDApPj4yXSkpZj1wLEE9bTtlbHNle2lmKCEobT0wfGFbKHA9ZisxNnwwKT4+Ml0pKWJyZWFrO2Y9''@;'; put 'put ''bSxBPXB9YVtBPj4yXT0wLG09Zn1lbHNlIGFbMTIrKG09MHxhW2IrOD4+Ml0pPj4yXT1mLGFbZis4Pj4yXT1tLG09Zn13aGlsZSgwKTtpZigwfHcpe2lmKCgwfGFbKHA9MTkwMzgwKygoZj0wfGFbYisyOD4+Ml0pPDwyKXwwKT4+Ml0pPT0oMHxiKSl7aWYoYVtwPj4yXT1tLCFtKXthWzQ3NTIw''@;'; put 'put ''XT1hWzQ3NTIwXSZ+KDE8PGYpO2JyZWFrfX1lbHNlIGlmKGFbdysxNisoKCgwfGFbdysxNj4+Ml0pIT0oMHxiKSYxKTw8Mik+PjJdPW0sIW0pYnJlYWs7YVttKzI0Pj4yXT13LDB8KHA9MHxhWyhmPWIrMTZ8MCk+PjJdKSYmKGFbbSsxNj4+Ml09cCxhW3ArMjQ+PjJdPW0pLDB8KGY9MHxhW2Yr''@;'; put 'put ''ND4+Ml0pJiYoYVttKzIwPj4yXT1mLGFbZisyND4+Ml09bSl9fXdoaWxlKDApO3JldHVybiBNPj4+MDwxNj8oYVtEPj4yXT1rfDEmUnwyLGFbKFI9bCtrKzR8MCk+PjJdPTF8YVtSPj4yXSwwfGwpOihiPWwrY3wwLGFbRD4+Ml09MSZSfGN8MixhW2IrND4+Ml09M3xNLGFbKFI9bCtrKzR8MCk+''@;'; put 'put ''PjJdPTF8YVtSPj4yXSxkTChiLE0pLDB8bCl9KGwrLTh8MCxjPj4+MDwxMT8xNjpjKzExJi04KSwwfGY/MHwoYz1mKzh8MCk6KGY9MHxGMChjKSk/KGdvKDB8ZiwwfGwsMHwoKHA9KC04JihwPTB8YVtsKy00Pj4yXSkpLSgwPT0oMyZwfDApPzg6NCl8MCk+Pj4wPGM+Pj4wP3A6YykpLEZ0KGwp''@;'; put 'put ''LDB8KGM9ZikpOjB8KGM9MCkpOjB8KGM9MHxGMChjKSl9ZnVuY3Rpb24gZEwobCxjKXt2YXIgZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTA7Yj0obHw9MCkrKGN8PTApfDAsZj0wfGFbbCs0Pj4yXTtkb3tpZigxJmYpdz1sO2Vsc2V7aWYoISgzJmYpKXJldHVybjtpZihjPShtPTB8YVtsPj4yXSkr''@;'; put 'put ''Y3wwLCgwfGFbNDc1MjRdKT09KDB8KHc9bCsoMC1tKXwwKSkpe2lmKDMhPSgzJihmPTB8YVsobD1iKzR8MCk+PjJdKXwwKSlicmVhaztyZXR1cm4gYVs0NzUyMV09YyxhW2w+PjJdPS0yJmYsYVt3KzQ+PjJdPTF8Yyx2b2lkKGFbYj4+Ml09Yyl9aWYocD1tPj4+MyxtPj4+MDwyNTYpe2lmKCgw''@;'; put 'put ''fChmPTB8YVt3KzEyPj4yXSkpPT0oMHwobD0wfGFbdys4Pj4yXSkpKXthWzQ3NTE5XT1hWzQ3NTE5XSZ+KDE8PHApO2JyZWFrfWFbbCsxMj4+Ml09ZixhW2YrOD4+Ml09bDticmVha31BPTB8YVt3KzI0Pj4yXSxsPTB8YVt3KzEyPj4yXTtkb3tpZigoMHxsKT09KDB8dykpe2lmKCEobD0wfGFb''@;'; put 'put ''KGY9NCsocD13KzE2fDApfDApPj4yXSkpe2lmKCEobD0wfGFbcD4+Ml0pKXtsPTA7YnJlYWt9Zj1wfWZvcig7OylpZigwfChtPTB8YVsocD1sKzIwfDApPj4yXSkpbD1tLGY9cDtlbHNle2lmKCEobT0wfGFbKHA9bCsxNnwwKT4+Ml0pKWJyZWFrO2w9bSxmPXB9YVtmPj4yXT0wfWVsc2UgYVsx''@;'; put 'put ''MisobT0wfGFbdys4Pj4yXSk+PjJdPWwsYVtsKzg+PjJdPW19d2hpbGUoMCk7aWYoQSl7aWYoKDB8YVsocD0xOTAzODArKChmPTB8YVt3KzI4Pj4yXSk8PDIpfDApPj4yXSk9PSgwfHcpKXtpZihhW3A+PjJdPWwsIWwpe2FbNDc1MjBdPWFbNDc1MjBdJn4oMTw8Zik7YnJlYWt9fWVsc2UgaWYo''@;'; put 'put ''YVtBKzE2KygoKDB8YVtBKzE2Pj4yXSkhPSgwfHcpJjEpPDwyKT4+Ml09bCwhbClicmVhazthW2wrMjQ+PjJdPUEsMHwocD0wfGFbKGY9dysxNnwwKT4+Ml0pJiYoYVtsKzE2Pj4yXT1wLGFbcCsyND4+Ml09bCksKGY9MHxhW2YrND4+Ml0pJiYoYVtsKzIwPj4yXT1mLGFbZisyND4+Ml09bCl9''@;'; put 'put ''fX13aGlsZSgwKTtpZigyJihwPTB8YVsobD1iKzR8MCk+PjJdKSlhW2w+PjJdPS0yJnAsYVt3KzQ+PjJdPTF8YyxhW3crYz4+Ml09YyxtPWM7ZWxzZXtpZigoMHxhWzQ3NTI1XSk9PSgwfGIpKXtpZihhWzQ3NTIyXT1iPSgwfGFbNDc1MjJdKStjfDAsYVs0NzUyNV09dyxhW3crND4+Ml09MXxi''@;'; put 'put ''LCgwfHcpIT0oMHxhWzQ3NTI0XSkpcmV0dXJuO3JldHVybiBhWzQ3NTI0XT0wLHZvaWQoYVs0NzUyMV09MCl9aWYoKDB8YVs0NzUyNF0pPT0oMHxiKSlyZXR1cm4gYVs0NzUyMV09Yj0oMHxhWzQ3NTIxXSkrY3wwLGFbNDc1MjRdPXcsYVt3KzQ+PjJdPTF8Yix2b2lkKGFbdytiPj4yXT1iKTtt''@;'; put 'put ''PSgtOCZwKStjfDAsZj1wPj4+Mztkb3tpZihwPj4+MDwyNTYpe2lmKCgwfChjPTB8YVtiKzEyPj4yXSkpPT0oMHwobD0wfGFbYis4Pj4yXSkpKXthWzQ3NTE5XT1hWzQ3NTE5XSZ+KDE8PGYpO2JyZWFrfWFbbCsxMj4+Ml09YyxhW2MrOD4+Ml09bDticmVha31BPTB8YVtiKzI0Pj4yXSxjPTB8''@;'; put 'put ''YVtiKzEyPj4yXTtkb3tpZigoMHxjKT09KDB8Yikpe2lmKCEoYz0wfGFbKGw9NCsoZj1iKzE2fDApfDApPj4yXSkpe2lmKCEoYz0wfGFbZj4+Ml0pKXtmPTA7YnJlYWt9bD1mfWZvcig7OylpZigwfChwPTB8YVsoZj1jKzIwfDApPj4yXSkpYz1wLGw9ZjtlbHNle2lmKCEocD0wfGFbKGY9Yysx''@;'; put 'put ''NnwwKT4+Ml0pKWJyZWFrO2M9cCxsPWZ9YVtsPj4yXT0wLGY9Y31lbHNlIGFbMTIrKGY9MHxhW2IrOD4+Ml0pPj4yXT1jLGFbYys4Pj4yXT1mLGY9Y313aGlsZSgwKTtpZigwfEEpe2lmKCgwfGFbKGw9MTkwMzgwKygoYz0wfGFbYisyOD4+Ml0pPDwyKXwwKT4+Ml0pPT0oMHxiKSl7aWYoYVts''@;'; put 'put ''Pj4yXT1mLCFmKXthWzQ3NTIwXT1hWzQ3NTIwXSZ+KDE8PGMpO2JyZWFrfX1lbHNlIGlmKGFbQSsxNisoKCgwfGFbQSsxNj4+Ml0pIT0oMHxiKSYxKTw8Mik+PjJdPWYsIWYpYnJlYWs7YVtmKzI0Pj4yXT1BLDB8KGw9MHxhWyhjPWIrMTZ8MCk+PjJdKSYmKGFbZisxNj4+Ml09bCxhW2wrMjQ+''@;'; put 'put ''PjJdPWYpLDB8KGM9MHxhW2MrND4+Ml0pJiYoYVtmKzIwPj4yXT1jLGFbYysyND4+Ml09Zil9fXdoaWxlKDApO2lmKGFbdys0Pj4yXT0xfG0sYVt3K20+PjJdPW0sKDB8dyk9PSgwfGFbNDc1MjRdKSlyZXR1cm4gdm9pZChhWzQ3NTIxXT1tKX1pZihjPW0+Pj4zLG0+Pj4wPDI1NilyZXR1cm4g''@;'; put 'put ''Zj0xOTAxMTYrKGM8PDE8PDIpfDAsKGw9MHxhWzQ3NTE5XSkmKGM9MTw8Yyk/Yz0wfGFbKGw9Zis4fDApPj4yXTooYVs0NzUxOV09bHxjLGM9ZixsPWYrOHwwKSxhW2w+PjJdPXcsYVtjKzEyPj4yXT13LGFbdys4Pj4yXT1jLHZvaWQoYVt3KzEyPj4yXT1mKTtpZihjPShjPW0+Pj44KT9tPj4+''@;'; put 'put ''MD4xNjc3NzIxNT8zMTptPj4+KDcrKGM9MTQtKChwPSg1MjAxOTIrKGI9Yzw8KEE9KGMrMTA0ODMyMHwwKT4+PjE2JjgpKXwwKT4+PjE2JjQpfEF8KGM9KDI0NTc2MCsoYjw8PXApfDApPj4+MTYmMikpKyhiPDxjPj4+MTUpfDApfDApJjF8Yzw8MTowLHA9MTkwMzgwKyhjPDwyKXwwLGFbdysy''@;'; put 'put ''OD4+Ml09YyxhW3crMjA+PjJdPTAsYVt3KzE2Pj4yXT0wLCEoKGw9MHxhWzQ3NTIwXSkmKGY9MTw8YykpKXJldHVybiBhWzQ3NTIwXT1sfGYsYVtwPj4yXT13LGFbdysyND4+Ml09cCxhW3crMTI+PjJdPXcsdm9pZChhW3crOD4+Ml09dyk7Zm9yKGw9bTw8KDMxPT0oMHxjKT8wOjI1LShjPj4+''@;'; put 'put ''MSl8MCksZj0wfGFbcD4+Ml07Oyl7aWYoKC04JmFbZis0Pj4yXXwwKT09KDB8bSkpe2M9Njk7YnJlYWt9aWYoIShjPTB8YVsocD1mKzE2KyhsPj4+MzE8PDIpfDApPj4yXSkpe2M9Njg7YnJlYWt9bDw8PTEsZj1jfXJldHVybiA2OD09KDB8Yyk/KGFbcD4+Ml09dyxhW3crMjQ+PjJdPWYsYVt3''@;'; put 'put ''KzEyPj4yXT13LHZvaWQoYVt3Kzg+PjJdPXcpKTo2OT09KDB8Yyk/KGFbMTIrKGI9MHxhWyhBPWYrOHwwKT4+Ml0pPj4yXT13LGFbQT4+Ml09dyxhW3crOD4+Ml09YixhW3crMTI+PjJdPWYsdm9pZChhW3crMjQ+PjJdPTApKTp2b2lkIDB9ZnVuY3Rpb24gdWgobCl7cmV0dXJuKGx8PTApPj4+''@;'; put 'put ''MD40Mjk0OTYzMjAwJiYoYVs0NzY0M109MC1sLGw9LTEpLDB8bH1mdW5jdGlvbiB0JChsKXtyZXR1cm4gMHxsfWZ1bmN0aW9uIG4kKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHcsYixrLE0sUixwPTAsbT0wLEE9MCxEPTAsRz0wLHE9MDtSPWxlLGxlPWxlKzQ4fDAsTT1SKzE2fDAsQT1SLGFbKG09''@;'; put 'put ''UiszMnwwKT4+Ml09cD0wfGFbKGI9MjgrKGx8PTApfDApPj4yXSxhW20rND4+Ml09cD0oMHxhWyhrPWwrMjB8MCk+PjJdKS1wfDAsYVttKzg+PjJdPWMsYVttKzEyPj4yXT1mLHA9cCtmfDAsYVtBPj4yXT1hWyh3PWwrNjB8MCk+PjJdLGFbQSs0Pj4yXT1tLGFbQSs4Pj4yXT0yLEE9MHx1aCgw''@;'; put 'put ''fHQ2KDE0NiwwfEEpKTtlOmRve2lmKCgwfHApIT0oMHxBKSl7Zm9yKGM9MjshKCgwfEEpPDApOylpZihwPXAtQXwwLGM9YysoKEc9QT4+PjA+KHE9MHxhW20rND4+Ml0pPj4+MCk8PDMxPj4zMSl8MCxhWyhtPUc/bSs4fDA6bSk+PjJdPSgwfGFbbT4+Ml0pKyhxPUEtKEc/cTowKXwwKSxhWyhH''@;'; put 'put ''PW0rNHwwKT4+Ml09KDB8YVtHPj4yXSktcSxhW00+PjJdPWFbdz4+Ml0sYVtNKzQ+PjJdPW0sYVtNKzg+PjJdPWMsKDB8cCk9PSgwfChBPTB8dWgoMHx0NigxNDYsMHxNKSkpKSl7RD0zO2JyZWFrIGV9YVtsKzE2Pj4yXT0wLGFbYj4+Ml09MCxhW2s+PjJdPTAsYVtsPj4yXT0zMnxhW2w+PjJd''@;'; put 'put ''LGY9Mj09KDB8Yyk/MDpmLSgwfGFbbSs0Pj4yXSl8MH1lbHNlIEQ9M313aGlsZSgwKTtyZXR1cm4gMz09KDB8RCkmJihhW2wrMTY+PjJdPShxPTB8YVtsKzQ0Pj4yXSkrKDB8YVtsKzQ4Pj4yXSksYVtiPj4yXT1xLGFbaz4+Ml09cSksbGU9UiwwfGZ9ZnVuY3Rpb24gciQobCxjKXt2YXIgZixw''@;'; put 'put ''O3JldHVybiBjfD0wLGY9bGUsbGU9bGUrMTZ8MCxhWyhwPWYpPj4yXT1sfD0wLGFbcCs0Pj4yXT1jLGM9MHx1aCgwfFQ0KDkxLDB8cCkpLGxlPWYsMHxjfWZ1bmN0aW9uIE51ZShsLGMsZixwLG0sQSl7dmFyIHcsYjtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTAsQXw9MCxiPWxlLGxlPWxlKzMy''@;'; put 'put ''fDAsdz1iO2Rve2lmKDA9PSg0MDk1JkF8MCkmMD09KCgoMHxBKTwwKTw8MzE+PjMxJi00MDk2fDApKXtpZihjPj4+MD4yMTQ3NDgzNjQ2KXthWzQ3NjQzXT0xMixsPS0xO2JyZWFrfWFbdz4+Ml09bCxhW3crND4+Ml09YyxhW3crOD4+Ml09ZixhW3crMTI+PjJdPXAsYVt3KzE2Pj4yXT1tLGFb''@;'; put 'put ''dysyMD4+Ml09QT4+MTIsbD0wfHVoKDB8UjgoMTkyLDB8dykpfWVsc2UgYVs0NzY0M109MjIsbD0tMX13aGlsZSgwKTtyZXR1cm4gbGU9YiwwfGx9ZnVuY3Rpb24gcEwobCxjKXtsfD0wO3ZhciBmPTAscD0wLG09MDtwPTI1NSYoY3w9MCk7ZTpkb3tpZihwKXtpZigzJmwpe2Y9MjU1JmM7ZG97''@;'; put 'put ''aWYoKG09MHxmZVtsPj4wXSk8PDI0Pj4yND09MHx8bTw8MjQ+PjI0PT1mPDwyND4+MjQpYnJlYWsgZTtsPWwrMXwwfXdoaWxlKDAhPSgzJmx8MCkpfXA9MHxBcihwLDE2ODQzMDA5KSxmPTB8YVtsPj4yXTt0OmRve2lmKCEoKC0yMTM5MDYyMTQ0JmZeLTIxMzkwNjIxNDQpJmYrLTE2ODQzMDA5''@;'; put 'put ''KSlkb3tpZigoLTIxMzkwNjIxNDQmKG09Zl5wKV4tMjEzOTA2MjE0NCkmbSstMTY4NDMwMDl8MClicmVhayB0O2Y9MHxhWyhsPWwrNHwwKT4+Ml19d2hpbGUoISgoLTIxMzkwNjIxNDQmZl4tMjEzOTA2MjE0NCkmZistMTY4NDMwMDl8MCkpfXdoaWxlKDApO2ZvcihmPTI1NSZjOyhtPTB8ZmVb''@;'; put 'put ''bD4+MF0pPDwyND4+MjQhPTAmJm08PDI0Pj4yNCE9Zjw8MjQ+PjI0OylsPWwrMXwwfWVsc2UgbD1sKygwfFVvKGwpKXwwfXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gVW8obCl7dmFyIHAsYz0wLGY9MDtwPWx8PTA7ZTpkb3tpZigzJnApZm9yKGM9cDs7KXtpZighKDB8ZmVbbD4+MF0p''@;'; put 'put ''KXtsPWM7YnJlYWsgZX1pZighKDMmKGM9bD1sKzF8MCkpKXtmPTQ7YnJlYWt9fWVsc2UgZj00fXdoaWxlKDApO2lmKDQ9PSgwfGYpKXtmb3IoOyEoKC0yMTM5MDYyMTQ0JihjPTB8YVtsPj4yXSleLTIxMzkwNjIxNDQpJmMrLTE2ODQzMDA5KTspbD1sKzR8MDtpZigoMjU1JmMpPDwyND4+MjQp''@;'; put 'put ''ZG97bD1sKzF8MH13aGlsZSgwIT0oMHxmZVtsPj4wXSkpfXJldHVybiBsLXB8MH1mdW5jdGlvbiBLeShsLGMpe3ZhciBmO3JldHVybiBjfD0wLGY9MHxEcygwfChsfD0wKSksMHwoMD09KDB8Yyk/bDpmKX1mdW5jdGlvbiBaaShsLGMpe3ZhciBmPTAscD0wO2lmKHA9MHxmZVsoY3w9MCk+PjBd''@;'; put 'put ''LChmPTB8ZmVbKGx8PTApPj4wXSk8PDI0Pj4yND09MHx8Zjw8MjQ+PjI0IT1wPDwyND4+MjQpbD1wO2Vsc2V7ZG97Zj0wfGZlWyhsPWwrMXwwKT4+MF0scD0wfGZlWyhjPWMrMXwwKT4+MF19d2hpbGUoZjw8MjQ+PjI0IT0wJiZmPDwyND4+MjQ9PXA8PDI0Pj4yNCk7bD1wfXJldHVybigyNTUm''@;'; put 'put ''ZiktKDI1NSZsKXwwfWZ1bmN0aW9uICRrKGwpe3JldHVybiAwfGZ1bmN0aW9uIFNBZShsLGMpe2x8PTAsY3w9MDt2YXIgZj0wLHA9MDtmb3IocD0wOzspe2lmKCgwfFh0WzE0NDUzMStwPj4wXSk9PSgwfGwpKXtsPTI7YnJlYWt9aWYoODc9PSgwfChmPXArMXwwKSkpe2Y9MTQ0NjE5LHA9ODcs''@;'; put 'put ''bD01O2JyZWFrfXA9Zn1pZigyPT0oMHxsKSYmKHA/KGY9MTQ0NjE5LGw9NSk6Zj0xNDQ2MTkpLDU9PSgwfGwpKWZvcig7Oyl7ZG97bD1mLGY9ZisxfDB9d2hpbGUoMCE9KDB8ZmVbbD4+MF0pKTtpZighKHA9cCstMXwwKSlicmVhaztsPTV9cmV0dXJuIDB8ZnVuY3Rpb24gTUFlKGwsYyl7cmV0''@;'; put 'put ''dXJuIDB8ZnVuY3Rpb24gRUFlKGwsYyl7cmV0dXJuIGx8PTAsYz0oY3w9MCk/MHxmdW5jdGlvbiB4QWUobCxjLGYpe2N8PTAsZnw9MDt2YXIgRyxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MDtBPTB8S3koMHxhWzgrKGx8PTApPj4yXSxHPTE3OTQ4OTUxMzgrKDB8YVtsPj4y''@;'; put 'put ''XSl8MCkscD0wfEt5KDB8YVtsKzEyPj4yXSxHKSxtPTB8S3koMHxhW2wrMTY+PjJdLEcpO2U6ZG97aWYoQT4+PjA8Yz4+PjI+Pj4wJiYoUj1jLShBPDwyKXwwLHA+Pj4wPFI+Pj4wJm0+Pj4wPFI+Pj4wKSYmMD09KDMmKG18cCl8MCkpe2ZvcihSPXA+Pj4yLEQ9bT4+PjIsTT0wOzspe2lmKHA9''@;'; put 'put ''MHxLeSgwfGFbbCsoKG09KHc9KGs9TSsoYj1BPj4+MSl8MCk8PDEpK1J8MCk8PDIpPj4yXSxHKSwhKChtPTB8S3koMHxhW2wrKG0rMTw8Mik+PjJdLEcpKT4+PjA8Yz4+PjAmcD4+PjA8KGMtbXwwKT4+PjApKXtwPTA7YnJlYWsgZX1pZigwfGZlW2wrKG0rcCk+PjBdKXtwPTA7YnJlYWsgZX1p''@;'; put 'put ''ZighKHA9MHxaaShmLGwrbXwwKSkpYnJlYWs7aWYocD0oMHxwKTwwLDE9PSgwfEEpKXtwPTA7YnJlYWsgZX1NPXA/TTprLEE9cD9iOkEtYnwwfW09MHxLeSgwfGFbbCsoKHA9dytEfDApPDwyKT4+Ml0sRykscD0ocD0wfEt5KDB8YVtsKyhwKzE8PDIpPj4yXSxHKSk+Pj4wPGM+Pj4wJm0+Pj4w''@;'; put 'put ''PChjLXB8MCk+Pj4wJiYwPT0oMHxmZVtsKyhwK20pPj4wXSk/bCtwfDA6MH1lbHNlIHA9MH13aGlsZSgwKTtyZXR1cm4gMHxwfSgwfGFbYz4+Ml0sMHxhW2MrND4+Ml0sbCk6MCwwfCgwfGM/YzpsKX0obHw9MCxjfD0wKX0oZiwwfGFbYysyMD4+Ml0pfShsfD0wLDB8YVsxNTc5MV0pfWZ1bmN0''@;'; put 'put ''aW9uIGkkKGwsYyxmKXt2YXIgcCxtLEE7cmV0dXJuIGM9K2MscD0oQT0obD0rbCkqbCkqKEEqQSkqKDEuNTg5NjkwOTk1MjExNTVlLTEwKkEtMi41MDUwNzYwMjUzNDA2ODYzZS04KSsoQSooMjc1NTczMTM3MDcwNzAwNjhlLTIyKkEtLjAwMDE5ODQxMjY5ODI5ODU3OTUpKy4wMDgzMzMzMzMz''@;'; put 'put ''MzMzMjI0OSksbT1BKmwsKGZ8PTApP2wtPS4xNjY2NjY2NjY2NjY2NjYzMiptKyhBKiguNSpjLW0qcCktYyk6bD1tKihBKnAtLjE2NjY2NjY2NjY2NjY2NjMyKStsLCtsfWZ1bmN0aW9uIG8kKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MDtfW1NpPj4zXT1sPSts''@;'; put 'put ''LGM9MHxhW1NpPj4yXSxwPSgwfChmPTB8YVtTaSs0Pj4yXSkpPDA7ZG97aWYocHxmPj4+MDwxMDQ4NTc2KXtpZigwPT0oMHxjKSYwPT0oMjE0NzQ4MzY0NyZmfDApKXtsPS0xLyhsKmwpO2JyZWFrfWlmKHApe2w9KGwtbCkvMDticmVha31fW1NpPj4zXT0weDQwMDAwMDAwMDAwMDAwKmwsZj0w''@;'; put 'put ''fGFbU2krND4+Ml0scD0tMTA3NyxjPTB8YVtTaT4+Ml0sbT05O2JyZWFrfWY+Pj4wPD0yMTQ2NDM1MDcxJiYoMD09KDB8YykmITAmMTA3MjY5MzI0OD09KDB8Zik/bD0wOihwPS0xMDIzLG09OSkpfXdoaWxlKDApO3JldHVybiA5PT0oMHxtKSYmKG09Zis2MTQyNDJ8MCxhW1NpPj4yXT1jLGFb''@;'; put 'put ''U2krND4+Ml09MTA3MjA3OTAwNisoMTA0ODU3NSZtKSxBPShrPSh3PShNPStfW1NpPj4zXS0xKS8oTSsyKSkqdykqayxfW1NpPj4zXT1NLShiPU0qKC41Kk0pKSxmPTB8YVtTaSs0Pj4yXSxhW1NpPj4yXT0wLGFbU2krND4+Ml09ZixBPU0tKGw9K19bU2k+PjNdKS1iK3cqKGIrKEEqKEEqKC4x''@;'; put 'put ''NTMxMzgzNzY5OTIwOTM3MypBKy4yMjIyMjE5ODQzMjE0OTc4NCkrLjM5OTk5OTk5OTk5NDA5NDIpK2sqKEEqKEEqKC4xNDc5ODE5ODYwNTExNjU4NipBKy4xODE4MzU3MjE2MTYxODA1KSsuMjg1NzE0Mjg3NDM2NjIzOSkrLjY2NjY2NjY2NjY2NjY3MzUpKSksbD0odz0oaz0xLjQ0MjY5NTA0''@;'; put 'put ''MDcyMTQ0NjMqbCkrKGI9KyhwKyhtPj4+MjApfDApKSkrKGsrKGItdykrKDEuNDQyNjk1MDQwNzIxNDQ2MypBKzEuNjc1MTcxMzE2NDg4NjUxMmUtMTAqKEErbCkpKSksK2x9ZnVuY3Rpb24gYSQobCxjKXtjfD0wO3ZhciBwLG0sZj0wO3N3aXRjaChfW1NpPj4zXT1sPStsLDIwNDcmKG09MHx3''@;'; put 'put ''bCgwfChmPTB8YVtTaT4+Ml0pLDB8KHA9MHxhW1NpKzQ+PjJdKSw1MikpKXtjYXNlIDA6MCE9bD8obD0rYSQoMHgxMDAwMDAwMDAwMDAwMDAwMCpsLGMpLGY9KDB8YVtjPj4yXSktNjR8MCk6Zj0wLGFbYz4+Ml09ZjticmVhaztjYXNlIDIwNDc6YnJlYWs7ZGVmYXVsdDphW2M+PjJdPSgyMDQ3''@;'; put 'put ''Jm0pLTEwMjIsYVtTaT4+Ml09ZixhW1NpKzQ+PjJdPS0yMTQ2NDM1MDczJnB8MTA3MTY0NDY3MixsPStfW1NpPj4zXX1yZXR1cm4rbH1mdW5jdGlvbiBsJChsLGMpe3ZhciBmLHAsbSxBO3JldHVybisoKEE9MS0obT0uNSooZj0obD0rbCkqbCkpKSsoMS1BLW0rKGYqKGYqKGYqKDI0ODAxNTg3''@;'; put 'put ''Mjg5NDc2NzNlLTIwKmYtLjAwMTM4ODg4ODg4ODg4NzQxMSkrLjA0MTY2NjY2NjY2NjY2NjYpKyhwPWYqZikqcCooZiooMi4wODc1NzIzMjEyOTgxNzVlLTktMTEzNTk2NDc1NTc3ODgxOTVlLTI3KmYpLTIuNzU1NzMxNDM1MTM5MDY2M2UtNykpLWwqKGM9K2MpKSkpfWZ1bmN0aW9uIFp1ZShs''@;'; put 'put ''LGMpe2N8PTA7dmFyIGssTSxELHEsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsUj0wLEc9MCxwZT0wO3E9bGUsbGU9bGUrNDh8MCxrPXErMTZ8MCxNPXEsX1tTaT4+M109bD0rbCxEPTB8d2woMHwoZj0wfGFbU2k+PjJdKSwwfCh3PTB8YVtTaSs0Pj4yXSksNjMpLEc9MjE0NzQ4MzY0NyZ3O2Rv''@;'; put 'put ''e2lmKEc+Pj4wPDEwNzQ3NTIxMjMpe2lmKDU5ODUyMyE9KDEwNDg1NzUmd3wwKSl7aWYoZj0wIT0oMHxEKSxHPj4+MDwxMDczOTI4NTczKXtpZihmKXtfW2M+PjNdPWI9KEE9bCsxLjU3MDc5NjMyNjczNDEyNTYpKzYwNzcxMDA1MDY1MDYxOTJlLTI2LF9bYys4Pj4zXT1BLWIrNjA3NzEwMDUw''@;'; put 'put ''NjUwNjE5MmUtMjYsZj0tMTticmVha31fW2M+PjNdPWI9KEE9bCstMS41NzA3OTYzMjY3MzQxMjU2KSstNjA3NzEwMDUwNjUwNjE5MmUtMjYsX1tjKzg+PjNdPUEtYi02MDc3MTAwNTA2NTA2MTkyZS0yNixmPTE7YnJlYWt9aWYoZil7X1tjPj4zXT1iPShBPWwrMy4xNDE1OTI2NTM0NjgyNTEy''@;'; put 'put ''KSsxLjIxNTQyMDEwMTMwMTIzODRlLTEwLF9bYys4Pj4zXT1BLWIrMS4yMTU0MjAxMDEzMDEyMzg0ZS0xMCxmPS0yO2JyZWFrfV9bYz4+M109Yj0oQT1sKy0zLjE0MTU5MjY1MzQ2ODI1MTIpKy0xLjIxNTQyMDEwMTMwMTIzODRlLTEwLF9bYys4Pj4zXT1BLWItMS4yMTU0MjAxMDEzMDEyMzg0''@;'; put 'put ''ZS0xMCxmPTI7YnJlYWt9Uj0yMX1lbHNle2lmKEc+Pj4wPDEwNzU1OTQ4MTIpe2lmKEc+Pj4wPDEwNzUxODMwMzcpe2lmKDEwNzQ5NzcxNDg9PSgwfEcpKXtSPTIxO2JyZWFrfWlmKEQpe19bYz4+M109Yj0oQT1sKzQuNzEyMzg4OTgwMjAyMzc3KSsxLjgyMzEzMDE1MTk1MTg1NzhlLTEwLF9b''@;'; put 'put ''Yys4Pj4zXT1BLWIrMS44MjMxMzAxNTE5NTE4NTc4ZS0xMCxmPS0zO2JyZWFrfV9bYz4+M109Yj0oQT1sKy00LjcxMjM4ODk4MDIwMjM3NykrLTEuODIzMTMwMTUxOTUxODU3OGUtMTAsX1tjKzg+PjNdPUEtYi0xLjgyMzEzMDE1MTk1MTg1NzhlLTEwLGY9MzticmVha31pZigxMDc1Mzg4OTIz''@;'; put 'put ''PT0oMHxHKSl7Uj0yMTticmVha31pZihEKXtfW2M+PjNdPWI9KEE9bCs2LjI4MzE4NTMwNjkzNjUwMjUpKzIuNDMwODQwMjAyNjAyNDc3ZS0xMCxfW2MrOD4+M109QS1iKzIuNDMwODQwMjAyNjAyNDc3ZS0xMCxmPS00O2JyZWFrfV9bYz4+M109Yj0oQT1sKy02LjI4MzE4NTMwNjkzNjUwMjUp''@;'; put 'put ''Ky0yLjQzMDg0MDIwMjYwMjQ3N2UtMTAsX1tjKzg+PjNdPUEtYi0yLjQzMDg0MDIwMjYwMjQ3N2UtMTAsZj00O2JyZWFrfWlmKEc+Pj4wPj0xMDk0MjYzMjkxKXtpZihHPj4+MD4yMTQ2NDM1MDcxKXtfW2MrOD4+M109Yj1sLWwsX1tjPj4zXT1iLGY9MDticmVha31hW1NpPj4yXT1mLGFbU2kr''@;'; put 'put ''ND4+Ml09MTA0ODU3NSZ3fDEwOTY4MTA0OTYsbD0rX1tTaT4+M10sZj0wO2Rve19baysoZjw8Myk+PjNdPWI9KygwfH5+bCksbD0xNjc3NzIxNioobC1iKSxmPWYrMXwwfXdoaWxlKDIhPSgwfGYpKTtpZihfW2srMTY+PjNdPWwsMD09bClmb3IoZj0xOzA9PStfW2srKGY8PDMpPj4zXTspZj1m''@;'; put 'put ''Ky0xfDA7ZWxzZSBmPTI7aWYoZj0wfHp1ZShrLE0sKEc+Pj4yMCktMTA0NnwwLGYrMXwwLDEpLGw9K19bTT4+M10sRCl7X1tjPj4zXT0tbCxfW2MrOD4+M109LStfW00rOD4+M10sZj0wLWZ8MDticmVha31fW2M+PjNdPWwsX1tjKzg+PjNdPStfW00rOD4+M107YnJlYWt9Uj0yMX19d2hpbGUo''@;'; put 'put ''MCk7cmV0dXJuIDIxPT0oMHxSKSYmKGY9fn4oQT0uNjM2NjE5NzcyMzY3NTgxNCpsKzY3NTUzOTk0NDEwNTU3NDQtNjc1NTM5OTQ0MTA1NTc0NCksX1tjPj4zXT1sPShwPWwtMS41NzA3OTYzMjY3MzQxMjU2KkEpLShtPTYwNzcxMDA1MDY1MDYxOTJlLTI2KkEpLF9bU2k+PjNdPWwsKCh3PUc+''@;'; put 'put ''Pj4yMCktKDIwNDcmKFI9MHx3bCgwfGFbU2k+PjJdLDB8YVtTaSs0Pj4yXSw1MikpKXwwKT4xNiYmKF9bYz4+M109bD0oYj1wLShtPTYwNzcxMDA1MDYzMDM5NjZlLTI2KkEpKS0obT0yMDIyMjY2MjQ4Nzk1OTUwNmUtMzcqQS0ocC1iLW0pKSxfW1NpPj4zXT1sLEE9ODQ3ODQyNzY2MDM2ODll''@;'; put 'put ''LTQ1KkEtKGItKHA9Yi0ocGU9MjAyMjI2NjI0ODcxMTE2NjVlLTM3KkEpKS1wZSksKHctKDIwNDcmKEc9MHx3bCgwfGFbU2k+PjJdLDB8YVtTaSs0Pj4yXSw1MikpKXwwKT40OT8oX1tjPj4zXT1sPXAtQSxtPUEpOnA9YiksX1tjKzg+PjNdPXAtbC1tKSxsZT1xLDB8Zn1mdW5jdGlvbiB6dWUo''@;'; put 'put ''bCxjLGYscCxtKXtsfD0wLGN8PTA7dmFyIGJlLE9lLExlLFJlLEhlLHFlLHJ0LFdlLGF0LHN0LEV0LEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxWZT0wLFN0PTAsa3Q9MCxadD0wO2lmKEV0PWxlLGxlPWxlKzU2MHwwLFdlPUV0KzQ4MHwwLHFlPUV0KzMy''@;'; put 'put ''MHwwLHN0PUV0KzE2MHwwLFN0PUV0LGF0PTB8YVs2MzIyMCsoKG18PTApPDwyKT4+Ml0sRz0ocHw9MCktMXwwLGI9KGZ8PTApLTI0KyhydD0wfEFyKFZlPSgwfChWZT0oZistM3wwKS8yNHwwKSk+MD9WZTowLC0yNCkpfDAsKGF0K0d8MCk+PTApZm9yKEQ9YXQrcHwwLGs9VmUtR3wwLE09MDtf''@;'; put 'put ''W3FlKyhNPDwzKT4+M109QT0oMHxrKTwwPzA6KygwfGFbNjMyMzYrKGs8PDIpPj4yXSksKDB8KE09TSsxfDApKSE9KDB8RCk7KWs9aysxfDA7Zm9yKFI9KDB8cCk+MCxEPTA7Oyl7aWYoUil7TT1EK0d8MCxBPTAsaz0wO2Rve0ErPStfW2wrKGs8PDMpPj4zXSorX1txZSsoTS1rPDwzKT4+M10s''@;'; put 'put ''az1rKzF8MH13aGlsZSgoMHxrKSE9KDB8cCkpfWVsc2UgQT0wO2lmKF9bU3QrKEQ8PDMpPj4zXT1BLCEoKDB8RCk8KDB8YXQpKSlicmVhaztEPUQrMXwwfWJlPSgwfGIpPjAsT2U9MjQtYnwwLExlPTIzLWJ8MCxSZT0oMHxwKT4wLEhlPTA9PSgwfGIpLGs9YXQ7ZTpmb3IoOzspe2lmKEE9K19b''@;'; put 'put ''U3QrKGs8PDMpPj4zXSxSPSgwfGspPjApZm9yKE09ayxEPTA7YVtXZSsoRDw8Mik+PjJdPX5+KEEtMTY3NzcyMTYqKHc9KygwfH5+KDUuOTYwNDY0NDc3NTM5MDYzZS04KkEpKSkpLGdlPU0sQT0rX1tTdCsoKE09TSstMXwwKTw8Myk+PjNdK3csISgoMHxnZSk8PTEpOylEPUQrMXwwO0E9K3Zn''@;'; put 'put ''KEEsYiksQS09OCorY2YoLjEyNSpBKSxBLT0rKDB8KE09fn5BKSk7ZG97aWYoIWJlKXtpZihIZSl7RD1hW1dlKyhrKy0xPDwyKT4+Ml0+PjIzLGt0PTE5O2JyZWFrfWlmKEE+PS41KXtEPTIsa3Q9MjA7YnJlYWt9Rz0wLGdlPU07YnJlYWt9YVsoZ2U9V2UrKGsrLTE8PDIpfDApPj4yXT1EPShE''@;'; put 'put ''PTB8YVtnZT4+Ml0pLSgoa3Q9RD4+T2UpPDxPZSl8MCxEPj49TGUsTT1rdCtNfDAsa3Q9MTl9d2hpbGUoMCk7aWYoMTk9PSgwfGt0KSYmKGt0PTAsKDB8RCk+MD9rdD0yMDooRz1ELGdlPU0pKSwyMD09KDB8a3QpKXtpZihrdD0wLGdlPU0rMXwwLFIpe009MCxwZT0wO2Rve3E9MHxhWyhHPVdl''@;'; put 'put ''KyhwZTw8Mil8MCk+PjJdLE0/KFI9MTY3NzcyMTUsa3Q9MjMpOnE/KE09MSxSPTE2Nzc3MjE2LGt0PTIzKTpNPTAsMjM9PSgwfGt0KSYmKGt0PTAsYVtHPj4yXT1SLXEpLHBlPXBlKzF8MH13aGlsZSgoMHxwZSkhPSgwfGspKX1lbHNlIE09MDt0OmRve2lmKGJlKXtzd2l0Y2goMHxiKXtjYXNl''@;'; put 'put ''IDE6Uj04Mzg4NjA3O2JyZWFrO2Nhc2UgMjpSPTQxOTQzMDM7YnJlYWs7ZGVmYXVsdDpicmVhayB0fWFbKHBlPVdlKyhrKy0xPDwyKXwwKT4+Ml09YVtwZT4+Ml0mUn19d2hpbGUoMCk7Mj09KDB8RCk/KEE9MS1BLE0/KEc9MixBLT0rdmcoMSxiKSk6Rz0yKTpHPUR9aWYoMCE9QSl7a3Q9NDI7''@;'; put 'put ''YnJlYWt9aWYoKDB8ayk+KDB8YXQpKXtNPTAsRD1rO2Rve018PWFbV2UrKChEPUQrLTF8MCk8PDIpPj4yXX13aGlsZSgoMHxEKT4oMHxhdCkpO2lmKE0pe2t0PTQxO2JyZWFrfU09MX1lbHNlIE09MTtmb3IoOyEoMHxhW1dlKyhhdC1NPDwyKT4+Ml0pOylNPU0rMXwwO2lmKFI9TStrfDAsKDB8''@;'; put 'put ''TSk8PTApaz1SO2Vsc2UgZm9yKDs7KXtpZihfW3FlKygoTT1rK3B8MCk8PDMpPj4zXT0rKDB8YVs2MzIzNisoKEQ9aysxfDApK1ZlPDwyKT4+Ml0pLFJlKXtBPTAsaz0wO2Rve0ErPStfW2wrKGs8PDMpPj4zXSorX1txZSsoTS1rPDwzKT4+M10saz1rKzF8MH13aGlsZSgoMHxrKSE9KDB8cCkp''@;'; put 'put ''fWVsc2UgQT0wO2lmKF9bU3QrKEQ8PDMpPj4zXT1BLCEoKDB8RCk8KDB8UikpKXtrPVI7Y29udGludWUgZX1rPUR9fWlmKDQxPT0oMHxrdCkpZm9yKDs7KXtpZihrdD0wLGI9YistMjR8MCwwfGFbV2UrKChrPWsrLTF8MCk8PDIpPj4yXSl7Uj1rO2JyZWFrfWt0PTQxfWVsc2UgNDI9PSgwfGt0''@;'; put 'put ''KSYmKChBPSt2ZyhBLDAtYnwwKSk+PTE2Nzc3MjE2JiYoYVtXZSsoazw8Mik+PjJdPX5+KEEtMTY3NzcyMTYqKHc9KygwfH5+KDUuOTYwNDY0NDc3NTM5MDYzZS04KkEpKSkpLGI9cnQrZnwwLGs9aysxfDAsQT13KSxhW1dlKyhrPDwyKT4+Ml09fn5BLFI9ayk7aWYoRD0oMHxSKT4tMSl7Zm9y''@;'; put 'put ''KEE9K3ZnKDEsYiksYj1SO19bU3QrKGI8PDMpPj4zXT1BKisoMHxhW1dlKyhiPDwyKT4+Ml0pLCgwfGIpPjA7KUEqPTUuOTYwNDY0NDc3NTM5MDYzZS04LGI9YistMXwwO2lmKEQpZm9yKGs9Ujs7KXtmb3IoTT1SLWt8MCxiPTAsQT0wO0ErPStfWzEwOTA0KyhiPDwzKT4+M10qK19bU3QrKGIr''@;'; put 'put ''azw8Myk+PjNdLCEoKDB8Yik+PSgwfGF0KXwoMHxiKT49KDB8TSkpOyliPWIrMXwwO2lmKF9bc3QrKE08PDMpPj4zXT1BLCEoKDB8ayk+MCkpYnJlYWs7az1rKy0xfDB9fXN3aXRjaCgwfG0pe2Nhc2UgMDppZihEKWZvcihBPTAsYj1SO0ErPStfW3N0KyhiPDwzKT4+M10sKDB8Yik+MDspYj1i''@;'; put 'put ''Ky0xfDA7ZWxzZSBBPTA7dz0wPT0oMHxHKT9BOi1BLGt0PTczO2JyZWFrO2Nhc2UgMjpjYXNlIDE6aWYoRClmb3IoQT0wLGI9UjtBKz0rX1tzdCsoYjw8Myk+PjNdLCgwfGIpPjA7KWI9YistMXwwO2Vsc2UgQT0wO2lmKF9bYz4+M109KGs9MD09KDB8RykpP0E6LUEsQT0rX1tzdD4+M10tQSwo''@;'; put 'put ''MHxSKT49MSlmb3IoYj0xO0ErPStfW3N0KyhiPDwzKT4+M10sKDB8YikhPSgwfFIpOyliPWIrMXwwO3c9az9BOi1BLGM9Yys4fDAsa3Q9NzM7YnJlYWs7Y2FzZSAzOmlmKCgwfFIpPjApe2I9UixBPStfW3N0KyhSPDwzKT4+M107ZG97X1tzdCsoKGt0PWIpPDwzKT4+M109KFp0PUEpKygodz0r''@;'; put 'put ''X1soU3Q9c3QrKChiPWIrLTF8MCk8PDMpfDApPj4zXSktKEE9dytBKSksX1tTdD4+M109QX13aGlsZSgoMHxrdCk+MSk7aWYoaz0oMHxSKT4xKXtiPVIsQT0rX1tzdCsoUjw8Myk+PjNdO2Rve19bc3QrKChrdD1iKTw8Myk+PjNdPSh3PUEpKygoWnQ9K19bKFN0PXN0KygoYj1iKy0xfDApPDwz''@;'; put 'put ''KXwwKT4+M10pLShBPVp0K0EpKSxfW1N0Pj4zXT1BfXdoaWxlKCgwfGt0KT4yKTtpZihrKWZvcihiPVIsdz0wO3crPStfW3N0KyhiPDwzKT4+M10sKDB8Yik+MjspYj1iKy0xfDA7ZWxzZSB3PTB9ZWxzZSB3PTB9ZWxzZSB3PTA7QT0rX1tzdD4+M10sRz8oX1tjPj4zXT0tQSx3PS13LEE9LStf''@;'; put 'put ''W3N0Kzg+PjNdKTooX1tjPj4zXT1BLEE9K19bc3QrOD4+M10pLF9bYys4Pj4zXT1BLGM9YysxNnwwLGt0PTczfXJldHVybiA3Mz09KDB8a3QpJiYoX1tjPj4zXT13KSxsZT1FdCw3JmdlfDB9ZnVuY3Rpb24gdmcobCxjKXtsPStsO3ZhciBmPTAscD0wO3JldHVybigwfChjfD0wKSk8PTEwMjM/''@;'; put 'put ''KDB8Yyk8LTEwMjImJihsKj0yMjI1MDczODU4NTA3MjAxNGUtMzI0LGY9YysyMDQ0fDAsbD0ocD0oMHxjKTwtMjA0NCk/MjIyNTA3Mzg1ODUwNzIwMTRlLTMyNCpsOmwsYz1wPygwfGYpPi0xMDIyP2Y6LTEwMjI6YysxMDIyfDApOihsKj04OTg4NDY1Njc0MzExNThlMjkzLHA9YystMjA0Nnww''@;'; put 'put ''LGw9KGY9KDB8Yyk+MjA0Nik/ODk4ODQ2NTY3NDMxMTU4ZTI5MypsOmwsYz1mPygwfHApPDEwMjM/cDoxMDIzOmMrLTEwMjN8MCksZj0wfFpvKGMrMTAyM3wwLDAsNTIpLHA9RG4sYVtTaT4+Ml09ZixhW1NpKzQ+PjJdPXAsK2wqK19bU2k+PjNdfWZ1bmN0aW9uIFNqKGwpe3ZhciBjPTAsZj0w''@;'; put 'put ''LHA9MCxtPTAsQT0wO19bU2k+PjNdPWw9K2wsYz0yMTQ3NDgzNjQ3JihmPTB8YVtTaSs0Pj4yXSk7ZG97aWYoYz4+PjA+MjE0NjQzNTA3MSlsKz1sO2Vsc2V7aWYoYz4+PjA8MTA0ODU3Nil7aWYoX1tTaT4+M109MHg0MDAwMDAwMDAwMDAwMCpsLCEoYz0yMTQ3NDgzNjQ3JihmPTB8YVtTaSs0''@;'; put 'put ''Pj4yXSkpKWJyZWFrO3A9Njk2MjE5Nzk1fWVsc2UgcD03MTUwOTQxNjM7YVtTaT4+Ml09MCxhW1NpKzQ+PjJdPSgoYz4+PjApLzN8MCkrcHwtMjE0NzQ4MzY0OCZmLF9bU2k+PjNdPSgoQT0obT0rX1tTaT4+M10pKm0qKG0vbCkpKihBKkEpKiguMTQ1OTk2MTkyODg2NjEyNDUqQS0uNzU4Mzk3''@;'; put 'put ''OTM0Nzc4NzY2KSsoQSooMS42MjE0Mjk3MjAxMDUzNTQ1KkEtMS44ODQ5Nzk3OTU0MzM3NzE3KSsxLjg3NTk1MTgyNDI3MTc3KSkqbSxmPTB8emwoMHxhW1NpPj4yXSwwfGFbU2krND4+Ml0sLTIxNDc0ODM2NDgsMCkscD1EbixhW1NpPj4yXT0tMTA3Mzc0MTgyNCZmLGFbU2krND4+Ml09cCxs''@;'; put 'put ''PSgobC89KG09K19bU2k+PjNdKSptKS1tKS8obSttK2wpKm0rbX19d2hpbGUoMCk7cmV0dXJuK2x9ZnVuY3Rpb24gcyQobCxjKXtyZXR1cm4rICtmdW5jdGlvbiBHdWUobCxjKXtjPStjO3ZhciBwLGY9MDtyZXR1cm4gX1tTaT4+M109bD0rbCxwPTB8YVtTaT4+Ml0sZj0wfGFbU2krND4+Ml0s''@;'; put 'put ''X1tTaT4+M109YyxmPS0yMTQ3NDgzNjQ4JmFbU2krND4+Ml18MjE0NzQ4MzY0NyZmLGFbU2k+PjJdPXAsYVtTaSs0Pj4yXT1mLCsgK19bU2k+PjNdfShsPStsLGM9K2MpfWZ1bmN0aW9uIHUkKGwsYyl7cmV0dXJuKyArdmcobD0rbCxjfD0wKX1mdW5jdGlvbiBjJChsLGMpe3JldHVybisgK2Z1''@;'; put 'put ''bmN0aW9uIFd1ZShsLGMpe2M9K2M7dmFyIEcsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLHE9MDtfW1NpPj4zXT1sPStsLHc9MHxhW1NpPj4yXSxrPTB8YVtTaSs0Pj4yXSxfW1NpPj4zXT1jLEQ9MHxhW1NpPj4yXSxSPTB8YVtTaSs0Pj4yXSxwPTIwNDcmKHA9MHx3''@;'; put 'put ''bCgwfHcsMHxrLDUyKSksTT0yMDQ3JihNPTB8d2woMHxELDB8Uiw1MikpLEc9LTIxNDc0ODM2NDgmayxBPTB8Wm8oMHxELDB8UiwxKSxiPURuO2U6ZG97aWYoMD09KDB8QSkmMD09KDB8Yil8fChtPTB8WXVlKGMpLGY9MjE0NzQ4MzY0NyZEbiwyMDQ3PT0oMHxwKXxmPj4+MD4yMTQ2NDM1MDcy''@;'; put 'put ''fDIxNDY0MzUwNzI9PSgwfGYpJm0+Pj4wPjApKXE9MztlbHNle2lmKGY9MHxabygwfHcsMHxrLDEpLCEoKG09RG4pPj4+MD5iPj4+MHwoMHxtKT09KDB8YikmZj4+PjA+QT4+PjApKXJldHVybisoKDB8Zik9PSgwfEEpJigwfG0pPT0oMHxiKT8wKmw6bCk7aWYocClBPTEwNDg1NzUma3wxMDQ4''@;'; put 'put ''NTc2O2Vsc2V7aWYoZj0wfFpvKDB8dywwfGssMTIpLCgwfChtPURuKSk+LTF8LTE9PSgwfG0pJmY+Pj4wPjQyOTQ5NjcyOTUpe3A9MDtkb3twPXArLTF8MCxmPTB8Wm8oMHxmLDB8bSwxKSxtPURufXdoaWxlKCgwfG0pPi0xfC0xPT0oMHxtKSZmPj4+MD40Mjk0OTY3Mjk1KX1lbHNlIHA9MDt3''@;'; put 'put ''PTB8Wm8oMHx3LDB8aywxLXB8MCksQT1Ebn1pZihNKWs9MTA0ODU3NSZSfDEwNDg1NzY7ZWxzZXtpZihtPTB8Wm8oMHxELDB8UiwxMiksKDB8KGI9RG4pKT4tMXwtMT09KDB8YikmbT4+PjA+NDI5NDk2NzI5NSl7Zj0wO2Rve2Y9ZistMXwwLG09MHxabygwfG0sMHxiLDEpLGI9RG59d2hpbGUo''@;'; put 'put ''KDB8Yik+LTF8LTE9PSgwfGIpJm0+Pj4wPjQyOTQ5NjcyOTUpfWVsc2UgZj0wO0Q9MHxabygwfEQsMHxSLDEtZnwwKSxNPWYsaz1Ebn1tPTB8U3AoMHx3LDB8QSwwfEQsMHxrKSxiPSgwfChmPURuKSk+LTF8LTE9PSgwfGYpJm0+Pj4wPjQyOTQ5NjcyOTU7dDpkb3tpZigoMHxwKT4oMHxNKSl7''@;'; put 'put ''Zm9yKDs7KXtpZihiKXtpZigwPT0oMHxtKSYwPT0oMHxmKSlicmVha31lbHNlIG09dyxmPUE7aWYocD1wKy0xfDAsbT0wfFNwKDB8KHc9MHxabygwfG0sMHxmLDEpKSwwfChBPURuKSwwfEQsMHxrKSxiPSgwfChmPURuKSk+LTF8LTE9PSgwfGYpJm0+Pj4wPjQyOTQ5NjcyOTUsKDB8cCk8PSgw''@;'; put 'put ''fE0pKWJyZWFrIHR9Yz0wKmw7YnJlYWsgZX19d2hpbGUoMCk7aWYoYil7aWYoMD09KDB8bSkmMD09KDB8Zikpe2M9MCpsO2JyZWFrfX1lbHNlIGY9QSxtPXc7aWYoZj4+PjA8MTA0ODU3NnwxMDQ4NTc2PT0oMHxmKSZtPj4+MDwwKWRve209MHxabygwfG0sMHxmLDEpLGY9RG4scD1wKy0xfDB9''@;'; put 'put ''d2hpbGUoZj4+PjA8MTA0ODU3NnwxMDQ4NTc2PT0oMHxmKSZtPj4+MDwwKTsoMHxwKT4wPyhSPTB8emwoMHxtLDB8ZiwwLC0xMDQ4NTc2KSxmPURuLHA9MHxabygwfHAsMCw1MiksZnw9RG4scHw9Uik6KHA9MHx3bCgwfG0sMHxmLDEtcHwwKSxmPURuKSxhW1NpPj4yXT1wLGFbU2krND4+Ml09''@;'; put 'put ''ZnxHLGM9K19bU2k+PjNdfX13aGlsZSgwKTtyZXR1cm4gMz09KDB8cSkmJihjPShjKj1sKS9jKSwrY30obD0rbCxjPStjKX1mdW5jdGlvbiBZdWUobCl7cmV0dXJuIF9bU2k+PjNdPWw9K2wsRG49MHxhW1NpKzQ+PjJdLDB8YVtTaT4+Ml19ZnVuY3Rpb24gJHkobCxjKXtjPStjO3ZhciBiLGss''@;'; put 'put ''TSxELFIsRyxxLHBlLGY9MCxwPTAsbT0wLEE9MCx3PTAsZ2U9MDtHPWxlLGxlPWxlKzMyfDAsaz1HKzI0fDAsTT1HKzE2fDAsRD1HKzh8MCxSPUcsX1tTaT4+M109bD0rbCxnZT0wfGFbU2k+PjJdLEE9MHxhW1NpKzQ+PjJdLF9bU2k+PjNdPWMscGU9KHc9KEEmPTIxNDc0ODM2NDcpPj4+MDwo''@;'; put 'put ''bT0yMTQ3NDgzNjQ3JmFbU2krND4+Ml0pPj4+MHwoMHxBKT09KDB8bSkmZ2U+Pj4wPChwPTB8YVtTaT4+Ml0pPj4+MCk/cDpnZSxxPXc/bTpBLHA9dz9nZTpwLG09dz9BOm0sQT0wfHdsKDB8cGUsMHxxLDUyKSx3PTB8d2woMHxwLDB8bSw1MiksYVtTaT4+Ml09cGUsYVtTaSs0Pj4yXT1xLGw9''@;'; put 'put ''K19bU2k+PjNdLGFbU2k+PjJdPXAsYVtTaSs0Pj4yXT1tLGI9K19bU2k+PjNdO2Rve2lmKDIwNDchPSgwfHcpKXtpZighKDA9PSgwfHApJjA9PSgwfG0pfDIwNDc9PSgwfEEpKSl7aWYoKEEtd3wwKT42NCl7bCs9YjticmVha30oMHxBKT4xNTMzPyhmPTUuMjYwMTM1OTAxNTQ4Mzc0ZTIxMCxj''@;'; put 'put ''PTE5MDEwOTE1NjYyOTUxNmUtMjI1KmwsbD0xOTAxMDkxNTY2Mjk1MTZlLTIyNSpiKTooZj0oZ2U9KDB8dyk8NTczKT8xOTAxMDkxNTY2Mjk1MTZlLTIyNToxLGM9Z2U/NS4yNjAxMzU5MDE1NDgzNzRlMjEwKmw6bCxsPWdlPzUuMjYwMTM1OTAxNTQ4Mzc0ZTIxMCpiOmIpLFV1ZShrLE0sYyks''@;'; put 'put ''VXVlKEQsUixsKSxsPWYqK0QwKCsoK19bUj4+M10rICtfW00+PjNdKyArX1tEPj4zXSsgK19baz4+M10pKX19ZWxzZSBsPWJ9d2hpbGUoMCk7cmV0dXJuIGxlPUcsK2x9ZnVuY3Rpb24gVXVlKGwsYyxmKXtjfD0wO3ZhciBwLG09MDttPTEzNDIxNzcyOSooZj0rZikscD1mLShtKz1mLW0pLF9b''@;'; put 'put ''KGx8PTApPj4zXT1mKj1mLF9bYz4+M109cCpwKyhtKm0tZisyKm0qcCl9ZnVuY3Rpb24gZ0wobCxjLGYpe2N8PTAsZnw9MDt2YXIgQSxiLHA9MCxtPTAsdz0wLGs9MDtiPWxlLGxlPWxlKzE2fDAsQT1iLF9bU2k+PjNdPWw9K2wsbT0yMTQ3NDgzNjQ3JmFbU2krND4+Ml07ZG97aWYobT4+PjA8''@;'; put 'put ''MTA3MjI0MzE5Nil7aWYobT4+PjA8MTA0NDgxNjAzMCl7X1tjPj4zXT1sLF9bZj4+M109MTticmVha31fW2M+PjNdPStpJChsLDAsMCksX1tmPj4zXT0rbCQobCwwKTticmVha31pZihtPj4+MD4yMTQ2NDM1MDcxKXtfW2Y+PjNdPXc9bC1sLF9bYz4+M109dzticmVha31zd2l0Y2gobT0wfFp1''@;'; put 'put ''ZShsLEEpLHA9K2kkKCtfW0E+PjNdLCtfWyhrPUErOHwwKT4+M10sMSksbD0rbCQoK19bQT4+M10sK19baz4+M10pLDMmbSl7Y2FzZSAwOl9bYz4+M109cCx3PWw7YnJlYWs7Y2FzZSAxOl9bYz4+M109bCx3PS1wO2JyZWFrO2Nhc2UgMjpfW2M+PjNdPS1wLHc9LWw7YnJlYWs7Y2FzZSAzOl9b''@;'; put 'put ''Yz4+M109LWwsdz1wfV9bZj4+M109d313aGlsZSgwKTtsZT1ifWZ1bmN0aW9uIFRBZShsLGMpe3JldHVybisgK2EkKGw9K2wsY3w9MCl9ZnVuY3Rpb24gczIobCxjLGYpe2x8PTAsY3w9MDt2YXIgcD0wLG09MDtpZihmfD0wKXtwPTB8ZmVbbD4+MF07ZTpkb3tpZihwPDwyND4+MjQpZm9yKDs7''@;'; put 'put ''KXtpZighKHA8PDI0Pj4yND09KG09MHxmZVtjPj4wXSk8PDI0Pj4yNCYwIT0oMHwoZj1mKy0xfDApKSZtPDwyND4+MjQhPTApKWJyZWFrIGU7aWYoYz1jKzF8MCwhKChwPTB8ZmVbKGw9bCsxfDApPj4wXSk8PDI0Pj4yNCkpe3A9MDticmVha319ZWxzZSBwPTB9d2hpbGUoMCk7cD0oMjU1JnAp''@;'; put 'put ''LSgwfFh0W2M+PjBdKXwwfWVsc2UgcD0wO3JldHVybiAwfHB9ZnVuY3Rpb24gJHMobCxjKXtyZXR1cm4gbD0wfHBMKGx8PTAsY3w9MCksMHwoKDB8ZmVbbD4+MF0pPT0oMjU1JmMpPDwyND4+MjQ/bDowKX1mdW5jdGlvbiAkYyhsKXtyZXR1cm4gMSYoMzI9PSgwfChsfD0wKSl8KGwrLTl8MCk+''@;'; put 'put ''Pj4wPDUpfDB9ZnVuY3Rpb24gZVMobCxjLGYpe2x8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MDtBPTI1NSYoY3w9MCkscD0wIT0oMHwoZnw9MCkpO2U6ZG97aWYocCYwIT0oMyZsfDApKWZvcihtPTI1NSZjOzspe2lmKCgwfGZlW2w+PjBdKT09bTw8MjQ+PjI0KXt3PTY7YnJlYWsgZX1pZighKChw''@;'; put 'put ''PTAhPSgwfChmPWYrLTF8MCkpKSYwIT0oMyYobD1sKzF8MCl8MCkpKXt3PTU7YnJlYWt9fWVsc2Ugdz01fXdoaWxlKDApOzU9PSgwfHcpJiYocD93PTY6Zj0wKTtlOmRve2lmKDY9PSgwfHcpJiYobT0yNTUmYywoMHxmZVtsPj4wXSkhPW08PDI0Pj4yNCkpe3A9MHxBcihBLDE2ODQzMDA5KTt0''@;'; put 'put ''OmRve2lmKGY+Pj4wPjMpe2Zvcig7ISgoLTIxMzkwNjIxNDQmKEE9YVtsPj4yXV5wKV4tMjEzOTA2MjE0NCkmQSstMTY4NDMwMDl8MCk7KWlmKGw9bCs0fDAsKGY9ZistNHwwKT4+PjA8PTMpe3c9MTE7YnJlYWsgdH19ZWxzZSB3PTExfXdoaWxlKDApO2lmKDExPT0oMHx3KSYmIWYpe2Y9MDti''@;'; put 'put ''cmVha31mb3IoOzspe2lmKCgwfGZlW2w+PjBdKT09bTw8MjQ+PjI0KWJyZWFrIGU7aWYobD1sKzF8MCwhKGY9ZistMXwwKSl7Zj0wO2JyZWFrfX19fXdoaWxlKDApO3JldHVybiAwfCgwfGY/bDowKX1mdW5jdGlvbiBmJChsLGMsZixwLG0pe3ZhciBBLHcsYixrO3JldHVybiBsfD0wLGN8PTAs''@;'; put 'put ''Znw9MCxwfD0wLG18PTAsaz1sZSxsZT1sZSsxMjh8MCxhWyh3PWspPj4yXT0wLGFbKGI9dys0fDApPj4yXT1sLGFbdys0ND4+Ml09bCxhWyhBPXcrOHwwKT4+Ml09KDB8bCk8MD8tMTpsKzIxNDc0ODM2NDd8MCxhW3crNzY+PjJdPS0xLGNoKHcsMCksZj0wfGgkKHcsZiwxLHAsbSksMHxjJiYo''@;'; put 'put ''YVtjPj4yXT1sKygoMHxhW2I+PjJdKSsoMHxhW3crMTA4Pj4yXSktKDB8YVtBPj4yXSkpKSxsZT1rLDB8Zn1mdW5jdGlvbiBjaChsLGMpe3ZhciBmLHAsbTthWzEwNCsobHw9MCk+PjJdPWN8PTAsYVtsKzEwOD4+Ml09bT0oZj0wfGFbbCs4Pj4yXSktKHA9MHxhW2wrND4+Ml0pfDAsYVtsKzEw''@;'; put 'put ''MD4+Ml09MCE9KDB8YykmKDB8bSk+KDB8Yyk/cCtjfDA6Zn1mdW5jdGlvbiBoJChsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MDtlOmRve2lmKGM+Pj4wPjM2KWFbNDc2NDNdPTIyLG09MCxwPTA7''@;'; put 'put ''ZWxzZXtwZT1sKzR8MCxxPWwrMTAwfDA7ZG97KEE9MHxhW3BlPj4yXSk+Pj4wPCgwfGFbcT4+Ml0pPj4+MD8oYVtwZT4+Ml09QSsxLEE9MHxYdFtBPj4wXSk6QT0wfElsKGwpfXdoaWxlKDAhPSgwfCRjKEEpKSk7dDpkb3tzd2l0Y2goMHxBKXtjYXNlIDQzOmNhc2UgNDU6aWYoQT0oNDU9PSgw''@;'; put 'put ''fEEpKTw8MzE+PjMxLCh3PTB8YVtwZT4+Ml0pPj4+MDwoMHxhW3E+PjJdKT4+PjApe2FbcGU+PjJdPXcrMSxHPUEsQT0wfFh0W3c+PjBdO2JyZWFrIHR9Rz1BLEE9MHxJbChsKTticmVhayB0O2RlZmF1bHQ6Rz0wfX13aGlsZSgwKTt3PTA9PSgwfGMpO2Rve2lmKDE2PT0oMTZ8YykmNDg9PSgw''@;'; put 'put ''fEEpKXtpZigoQT0wfGFbcGU+PjJdKT4+PjA8KDB8YVtxPj4yXSk+Pj4wPyhhW3BlPj4yXT1BKzEsQT0wfFh0W0E+PjBdKTpBPTB8SWwobCksMTIwIT0oMzJ8QSkpe2lmKHcpe2M9OCxEPTQ2O2JyZWFrfUQ9MzI7YnJlYWt9aWYoKEE9MHxhW3BlPj4yXSk+Pj4wPCgwfGFbcT4+Ml0pPj4+MD8o''@;'; put 'put ''YVtwZT4+Ml09QSsxLEE9MHxYdFtBPj4wXSk6QT0wfElsKGwpLCgwfFh0WzE0OTU5MitBPj4wXSk+MTUpe2lmKChwPTA9PSgwfGFbcT4+Ml0pKXx8KGFbcGU+PjJdPSgwfGFbcGU+PjJdKS0xKSwhZil7Y2gobCwwKSxtPTAscD0wO2JyZWFrIGV9aWYocCl7bT0wLHA9MDticmVhayBlfWFbcGU+''@;'; put 'put ''PjJdPSgwfGFbcGU+PjJdKS0xLG09MCxwPTA7YnJlYWsgZX1jPTE2LEQ9NDZ9ZWxzZXtpZighKChjPXc/MTA6Yyk+Pj4wPigwfFh0WzE0OTU5MitBPj4wXSk+Pj4wKSl7MHxhW3E+PjJdJiYoYVtwZT4+Ml09KDB8YVtwZT4+Ml0pLTEpLGNoKGwsMCksYVs0NzY0M109MjIsbT0wLHA9MDticmVh''@;'; put 'put ''ayBlfUQ9MzJ9fXdoaWxlKDApO3Q6ZG97aWYoMzI9PSgwfEQpKWlmKDEwPT0oMHxjKSl7aWYoKGM9QSstNDh8MCk+Pj4wPDEwKXtBPTAsdz1jO2Rve0E9KDEwKkF8MCkrd3wwLChjPTB8YVtwZT4+Ml0pPj4+MDwoMHxhW3E+PjJdKT4+PjA/KGFbcGU+PjJdPWMrMSxjPTB8WHRbYz4+MF0pOmM9''@;'; put 'put ''MHxJbChsKSx3PWMrLTQ4fDB9d2hpbGUodz4+PjA8MTAmQT4+PjA8NDI5NDk2NzI5KTtmPTB9ZWxzZSBjPUEsQT0wLGY9MDtpZigoYj1jKy00OHwwKT4+PjA8MTApe3c9Yztkb3tpZihjPTB8aXcoMHxBLDB8ZiwxMCwwKSwoaz1Ebik+Pj4wPihSPX4oTT0oKDB8Yik8MCk8PDMxPj4zMSkpPj4+''@;'; put 'put ''MHwoMHxrKT09KDB8UikmYz4+PjA+fmI+Pj4wKXtjPTEwLEQ9NzI7YnJlYWsgdH1BPTB8emwoMHxjLDB8aywwfGIsMHxNKSxmPURuLChjPTB8YVtwZT4+Ml0pPj4+MDwoMHxhW3E+PjJdKT4+PjA/KGFbcGU+PjJdPWMrMSx3PTB8WHRbYz4+MF0pOnc9MHxJbChsKSxiPXcrLTQ4fDB9d2hpbGUo''@;'; put 'put ''Yj4+PjA8MTAmKGY+Pj4wPDQyOTQ5NjcyOXw0Mjk0OTY3Mjk9PSgwfGYpJkE+Pj4wPDI1NzY5ODAzNzgpKTtiPj4+MD45Pyh3PUcsYz1mKTooYz0xMCxEPTcyKX1lbHNlIHc9RyxjPWZ9ZWxzZSBEPTQ2fXdoaWxlKDApO3Q6ZG97aWYoNDY9PSgwfEQpKXtpZighKGMrLTEmYykpe2lmKEQ9MHxm''@;'; put 'put ''ZVsxNDk4NDgrKCgyMypjfDApPj4+NSY3KT4+MF0sYz4+PjA+KHc9MjU1JihmPTB8ZmVbMTQ5NTkyK0E+PjBdKSk+Pj4wKXtBPTAsYj13O2Rve0E9YnxBPDxELCh3PTB8YVtwZT4+Ml0pPj4+MDwoMHxhW3E+PjJdKT4+PjA/KGFbcGU+PjJdPXcrMSx3PTB8WHRbdz4+MF0pOnc9MHxJbChsKSxi''@;'; put 'put ''PTI1NSYoZj0wfGZlWzE0OTU5Mit3Pj4wXSl9d2hpbGUoQT4+PjA8MTM0MjE3NzI4JmM+Pj4wPmI+Pj4wKTtiPTB9ZWxzZSB3PUEsYj0wLEE9MDtpZihrPTB8d2woLTEsLTEsMHxEKSxjPj4+MDw9KDI1NSZmKT4+PjB8KE09RG4pPj4+MDxiPj4+MHwoMHxNKT09KDB8Yikmaz4+PjA8QT4+PjAp''@;'; put 'put ''e2Y9YixEPTcyO2JyZWFrfWZvcih3PWI7Oyl7aWYoQT0wfFpvKDB8QSwwfHcsMHxEKSxiPURuLEF8PTI1NSZmLCh3PTB8YVtwZT4+Ml0pPj4+MDwoMHxhW3E+PjJdKT4+PjA/KGFbcGU+PjJdPXcrMSx3PTB8WHRbdz4+MF0pOnc9MHxJbChsKSxjPj4+MDw9KDI1NSYoZj0wfGZlWzE0OTU5Mit3''@;'; put 'put ''Pj4wXSkpPj4+MHxiPj4+MD5NPj4+MHwoMHxiKT09KDB8TSkmQT4+PjA+az4+PjApe2Y9YixEPTcyO2JyZWFrIHR9dz1ifX1pZihjPj4+MD4odz0yNTUmKGY9MHxmZVsxNDk1OTIrQT4+MF0pKT4+PjApe0E9MCxiPXc7ZG97QT1iKygwfEFyKEEsYykpfDAsKHc9MHxhW3BlPj4yXSk+Pj4wPCgw''@;'; put 'put ''fGFbcT4+Ml0pPj4+MD8oYVtwZT4+Ml09dysxLHc9MHxYdFt3Pj4wXSk6dz0wfElsKGwpLGI9MjU1JihmPTB8ZmVbMTQ5NTkyK3c+PjBdKX13aGlsZShBPj4+MDwxMTkzMDQ2NDcmYz4+PjA+Yj4+PjApO2I9MH1lbHNlIHc9QSxBPTAsYj0wO2lmKGM+Pj4wPigyNTUmZik+Pj4wKWZvcihEPTB8''@;'; put 'put ''b3coLTEsLTEsMHxjLDApLFI9RG4sTT1iOzspe2lmKE0+Pj4wPlI+Pj4wfCgwfE0pPT0oMHxSKSZBPj4+MD5EPj4+MCl7Zj1NLEQ9NzI7YnJlYWsgdH1pZihiPTB8aXcoMHxBLDB8TSwwfGMsMCksKGs9RG4pPj4+MD40Mjk0OTY3Mjk1fC0xPT0oMHxrKSZiPj4+MD5+KGYmPTI1NSk+Pj4wKXtm''@;'; put 'put ''PU0sRD03MjticmVhayB0fWlmKEE9MHx6bCgwfGIsMHxrLDB8ZiwwKSxiPURuLCh3PTB8YVtwZT4+Ml0pPj4+MDwoMHxhW3E+PjJdKT4+PjA/KGFbcGU+PjJdPXcrMSx3PTB8WHRbdz4+MF0pOnc9MHxJbChsKSxjPj4+MDw9KDI1NSYoZj0wfGZlWzE0OTU5Mit3Pj4wXSkpPj4+MCl7Zj1iLEQ9''@;'; put 'put ''NzI7YnJlYWt9TT1ifWVsc2UgZj1iLEQ9NzJ9fXdoaWxlKDApO2lmKDcyPT0oMHxEKSlpZihjPj4+MD4oMHxYdFsxNDk1OTIrdz4+MF0pPj4+MCl7ZG97KEE9MHxhW3BlPj4yXSk+Pj4wPCgwfGFbcT4+Ml0pPj4+MD8oYVtwZT4+Ml09QSsxLEE9MHxYdFtBPj4wXSk6QT0wfElsKGwpfXdoaWxl''@;'; put 'put ''KGM+Pj4wPigwfFh0WzE0OTU5MitBPj4wXSk+Pj4wKTthWzQ3NjQzXT0zNCx3PTA9PSgxJnB8MCkmITA/RzowLGM9bSxBPXB9ZWxzZSB3PUcsYz1mO2lmKDB8YVtxPj4yXSYmKGFbcGU+PjJdPSgwfGFbcGU+PjJdKS0xKSwhKGM+Pj4wPG0+Pj4wfCgwfGMpPT0oMHxtKSZBPj4+MDxwPj4+MCkp''@;'; put 'put ''e2lmKCEoMCE9KDEmcHwwKXwhMXwwIT0oMHx3KSkpe2FbNDc2NDNdPTM0LHA9MHx6bCgwfHAsMHxtLC0xLC0xKSxtPURuO2JyZWFrfWlmKGM+Pj4wPm0+Pj4wfCgwfGMpPT0oMHxtKSZBPj4+MD5wPj4+MCl7YVs0NzY0M109MzQ7YnJlYWt9fXA9MHxTcChBXnd8MCxjXihwPSgoMHx3KTwwKTw8''@;'; put 'put ''MzE+PjMxKXwwLDB8dywwfHApLG09RG59fXdoaWxlKDApO3JldHVybiBEbj1tLDB8cH1mdW5jdGlvbiBJbChsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTA7cmV0dXJuIDAhPSgwfChtPTB8YVsoZj0xMDQrKGx8PTApfDApPj4yXSkpJiYoMHxhW2wrMTA4Pj4yXSk+PSgwfG0pP0E9NDoo''@;'; put 'put ''MHwoYz0wfG1MKGwpKSk+PTA/KHA9MHxhW2Y+PjJdLGY9bCs4fDAscD8odz0wfGFbZj4+Ml0sZj1wLSgwfGFbbCsxMDg+PjJdKXwwLHA9dyxmPSh3LShtPTB8YVtsKzQ+PjJdKXwwKTwoMHxmKT9wOm0rKGYrLTEpfDApOmY9cD0wfGFbZj4+Ml0sYVtsKzEwMD4+Ml09ZixmPWwrNHwwLHA/YVso''@;'; put 'put ''dz1sKzEwOHwwKT4+Ml09cCsxLShmPTB8YVtmPj4yXSkrKDB8YVt3Pj4yXSk6Zj0wfGFbZj4+Ml0sKDB8YykhPSgwfFh0WyhmPWYrLTF8MCk+PjBdKSYmKGZlW2Y+PjBdPWMpKTpBPTQsND09KDB8QSkmJihhW2wrMTAwPj4yXT0wLGM9LTEpLDB8Y31mdW5jdGlvbiBtTChsKXt2YXIgYyxmO3Jl''@;'; put 'put ''dHVybiBmPWxlLGxlPWxlKzE2fDAsYz1mLGw9MD09KDB8ZCQobHw9MCkpJiYxPT0oMHxtaVs2MyZhW2wrMzI+PjJdXShsLGMsMSkpPzB8WHRbYz4+MF06LTEsbGU9ZiwwfGx9ZnVuY3Rpb24gZCQobCl7dmFyIGM9MCxmPTA7cmV0dXJuIGZlWyhjPTc0KyhsfD0wKXwwKT4+MF09MjU1KyhmPTB8''@;'; put 'put ''ZmVbYz4+MF0pfGYsKDB8YVsoYz1sKzIwfDApPj4yXSk+Pj4wPigwfGFbKGY9bCsyOHwwKT4+Ml0pPj4+MCYmbWlbNjMmYVtsKzM2Pj4yXV0obCwwLDApLGFbbCsxNj4+Ml09MCxhW2Y+PjJdPTAsYVtjPj4yXT0wLDQmKGM9MHxhW2w+PjJdKT8oYVtsPj4yXT0zMnxjLGM9LTEpOihhW2wrOD4+''@;'; put 'put ''Ml09Zj0oMHxhW2wrNDQ+PjJdKSsoMHxhW2wrNDg+PjJdKXwwLGFbbCs0Pj4yXT1mLGM9Yzw8Mjc+PjMxKSwwfGN9ZnVuY3Rpb24gcCQobCl7cmV0dXJuKChsfD0wKS00OHwwKT4+PjA8MTB8MH1mdW5jdGlvbiBpdihsKXtyZXR1cm4gMSYoKChsfD0wKS00OHwwKT4+PjA8MTB8MCE9KDB8dkwo''@;'; put 'put ''bCkpKXwwfWZ1bmN0aW9uIHZMKGwpe3JldHVybigoMzJ8KGx8PTApKS05N3wwKT4+PjA8MjZ8MH1mdW5jdGlvbiB5MChsLGMpe2N8PTA7dmFyIGY9MCxwPTAsbT0wO2Y9MHxmZVsobHw9MCk+PjBdO2U6ZG97aWYoZjw8MjQ+PjI0KWZvcihtPTI1NSZmOzspe2lmKCEoKHA9MHxmZVtjPj4wXSk8''@;'; put 'put ''PDI0Pj4yNCl8fGY8PDI0Pj4yNCE9cDw8MjQ+PjI0JiYoMHwobT0wfENwKG0pKSkhPSgwfENwKDI1NSZwKSkpYnJlYWsgZTtpZihjPWMrMXwwLCEoKGY9MHxmZVsobD1sKzF8MCk+PjBdKTw8MjQ+PjI0KSl7Zj0wO2JyZWFrfW09MjU1JmZ9ZWxzZSBmPTB9d2hpbGUoMCk7cmV0dXJuKG09MHxD''@;'; put 'put ''cCgyNTUmZikpLSgwfENwKDB8WHRbYz4+MF0pKXwwfWZ1bmN0aW9uIENwKGwpe3JldHVybiAwfCgwPT0oMHxRdWUobHw9MCkpP2w6MzJ8bCl9ZnVuY3Rpb24gUXVlKGwpe3JldHVybigobHw9MCktNjV8MCk+Pj4wPDI2fDB9ZnVuY3Rpb24gb3YobCl7cmV0dXJuIDB8SnVlKGx8PTAsMCl9ZnVu''@;'; put 'put ''Y3Rpb24gSnVlKGwsYyl7bHw9MDt2YXIgdyxiLGY9MCxwPTAsbT0wLEE9MCxrPTA7dz0oKGN8PTApPDwxKS0xfDAsYj1jKy0xfDA7ZTpkb3tpZighKChsKy00MzAwOHwwKT4+PjA8MjIyNzJ8KGwrLTExNzc2fDApPj4+MDwzMDc4NHwobCstMTUzNnwwKT4+PjA8MjU2MHwwPT0oMHxnJChsKSkp''@;'; put 'put ''KXtpZigoZj0wIT0oMHxjKSkmKGwrLTQyNTZ8MCk+Pj4wPDQ2KXtpZigoMHxsKT40MjkzKXN3aXRjaCgwfGwpe2Nhc2UgNDI5NTpjYXNlIDQzMDE6YnJlYWs7ZGVmYXVsdDpicmVhayBlfWw9bCs3MjY0fDA7YnJlYWt9aWYoKGwrLTExNTIwfDApPj4+MDwzOCYoMV5mKSl7bD1sKy03MjY0fDA7''@;'; put 'put ''YnJlYWt9Zj0wO2Rve2lmKCgocD1sLSgwfGhyWzY2MzQ2KyhmPDwyKT4+MV0pfDApLShiJihBPShtPTB8ZmVbNjYzNDYrKGY8PDIpKzI+PjBdKTw8MjQ+PjI0KSl8MCk+Pj4wPCgwfFh0WzY2MzQ2KyhmPDwyKSszPj4wXSk+Pj4wKXtrPTExO2JyZWFrfWY9ZisxfDB9d2hpbGUoNjEhPSgwfGYp''@;'; put 'put ''KTtpZigxMT09KDB8aykpe2lmKG08PDI0Pj4yND09MSl7bD1jK2wtKDEmcCl8MDticmVha31sPSgwfEFyKHcsQSkpK2x8MDticmVha31mPTB8aXRbNjU4NTgrKChtPTEtY3wwKTw8MSk+PjFdO3Q6ZG97aWYoZjw8MTY+PjE2KXtmb3IocD0wOyg2NTUzNSZmfDApIT0oMHxsKTspaWYoISgoZj0w''@;'; put 'put ''fGl0WzY1ODU4KygocD1wKzF8MCk8PDIpKyhtPDwxKT4+MV0pPDwxNj4+MTYpKWJyZWFrIHQ7bD0wfGhyWzY1ODU4KyhwPDwyKSsoYzw8MSk+PjFdO2JyZWFrIGV9fXdoaWxlKDApO3JldHVybiAwfCgobCstNjY2MDArKDQwKmN8MCl8MCk+Pj4wPDQwP2wrLTQwKyg4MCpjfDApfDA6bCl9fXdo''@;'; put 'put ''aWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gZyQobCl7cmV0dXJuIDB8KChsfD0wKT4+PjA8MTMxMDcyPygwfFh0WzE0OTg1NysoKDB8WHRbMTQ5ODU3KyhsPj4+OCk+PjBdKTw8NXxsPj4+MyYzMSk+PjBdKT4+Pig3JmwpJjE6bD4+PjA8MTk2NjA2JjEpfWZ1bmN0aW9uIGw0KGwsYyxmKXts''@;'; put 'put ''fD0wLGN8PTA7dmFyIHA9MCxtPTAsQT0wO2lmKGZ8PTApe3A9MHxmZVtsPj4wXTtlOmRve2lmKHA8PDI0Pj4yNClmb3IoQT1sLGw9cCxwJj0yNTU7Oyl7aWYoISgwIT0oMHwoZj1mKy0xfDApKSYobT0wfGZlW2M+PjBdKTw8MjQ+PjI0IT0wKXx8bDw8MjQ+PjI0IT1tPDwyND4+MjQmJigwfChw''@;'; put 'put ''PTB8Q3AocCkpKSE9KDB8Q3AoMjU1Jm0pKSlicmVhayBlO2lmKGM9YysxfDAsISgocD0wfGZlWyhBPUErMXwwKT4+MF0pPDwyND4+MjQpKXtsPTA7YnJlYWt9bD1wLHAmPTI1NX1lbHNlIGw9MH13aGlsZSgwKTtsPShsPTB8Q3AoMjU1JmwpKS0oMHxDcCgwfFh0W2M+PjBdKSl8MH1lbHNlIGw9''@;'; put 'put ''MDtyZXR1cm4gMHxsfWZ1bmN0aW9uIFh1ZShsKXtpZigobHw9MCk+Pj4wPj0yNTUpe2lmKCEoKGwrLTU3MzQ0fDApPj4+MDw4MTg1fGw+Pj4wPDgyMzJ8KGwrLTgyMzR8MCk+Pj4wPDQ3MDYyKSlyZXR1cm4gNjU1MzQhPSg2NTUzNCZsfDApJihsKy02NTUzMnwwKT4+PjA8MTA0ODU4MCYxfDA7''@;'; put 'put ''bD0xfWVsc2UgbD0obCsxJjEyNyk+Pj4wPjMyJjE7cmV0dXJuIDB8bH1mdW5jdGlvbiBPQWUobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTA7dmFyIHcsayxtPTAsQT0wLGI9MCxNPTA7az1sZSxsZT1sZSsxNnwwLG09ayxwPTB8YVsodz0wPT0oMHwocHw9MCkpPzE5MDY0MDpwKT4+Ml07ZTpkb3tp''@;'; put 'put ''ZihjKWlmKEE9MD09KDB8bCk/bTpsLGYpe2lmKHApbT1mLGI9MTE7ZWxzZXtpZigocD0wfGZlW2M+PjBdKTw8MjQ+PjI0Pi0xKXthW0E+PjJdPTI1NSZwLHA9cDw8MjQ+PjI0IT0wJjE7YnJlYWt9aWYocD0wfGZlW2M+PjBdLG09MD09KDB8YVthWzE1NzkxXT4+Ml0pKXthW0E+PjJdPXA8PDI0''@;'; put 'put ''Pj4yNCY1NzM0MyxwPTE7YnJlYWt9aWYoKHA9KDI1NSZwKS0xOTR8MCk+Pj4wPjUwKXtiPTE3O2JyZWFrfXA9MHxhWzYyMzg0KyhwPDwyKT4+Ml0sKG09ZistMXwwKSYmKGM9YysxfDAsYj0xMSl9dDpkb3tpZigxMT09KDB8Yikpe2lmKCgoTT0oMjU1JihsPTB8ZmVbYz4+MF0pKT4+PjMpLTE2''@;'; put 'put ''fE0rKHA+PjI2KSk+Pj4wPjcpe2I9MTc7YnJlYWsgZX1mb3IoO2M9YysxfDAsbT1tKy0xfDAsISgoMHwocD0oMjU1JmwpLTEyOHxwPDw2KSk+PTApOyl7aWYoIW0pYnJlYWsgdDtpZigoLTY0JihsPTB8ZmVbYz4+MF0pKTw8MjQ+PjI0IT0tMTI4KXtiPTE3O2JyZWFrIGV9fWFbdz4+Ml09MCxh''@;'; put 'put ''W0E+PjJdPXAscD1mLW18MDticmVhayBlfX13aGlsZSgwKTthW3c+PjJdPXAscD0tMn1lbHNlIHA9LTI7ZWxzZSBwP2I9MTc6cD0wfXdoaWxlKDApO3JldHVybiAxNz09KDB8YikmJihhW3c+PjJdPTAsYVs0NzY0M109ODQscD0tMSksbGU9aywwfHB9ZnVuY3Rpb24gS3VlKGwsYyl7cmV0dXJu''@;'; put 'put ''IDB8KGw9KGx8PTApPzB8ZnVuY3Rpb24gJHVlKGwsYyxmKXtsfD0wLGN8PTA7ZG97aWYobCl7aWYoYz4+PjA8MTI4KXtmZVtsPj4wXT1jLGw9MTticmVha31pZighKDB8YVthWzE1NzkxXT4+Ml0pKXtpZig1NzIxNj09KC0xMjgmY3wwKSl7ZmVbbD4+MF09YyxsPTE7YnJlYWt9YVs0NzY0M109''@;'; put 'put ''ODQsbD0tMTticmVha31pZihjPj4+MDwyMDQ4KXtmZVtsPj4wXT1jPj4+NnwxOTIsZmVbbCsxPj4wXT02MyZjfDEyOCxsPTI7YnJlYWt9aWYoYz4+PjA8NTUyOTZ8NTczNDQ9PSgtODE5MiZjfDApKXtmZVtsPj4wXT1jPj4+MTJ8MjI0LGZlW2wrMT4+MF09Yz4+PjYmNjN8MTI4LGZlW2wrMj4+''@;'; put 'put ''MF09NjMmY3wxMjgsbD0zO2JyZWFrfWlmKChjKy02NTUzNnwwKT4+PjA8MTA0ODU3Nil7ZmVbbD4+MF09Yz4+PjE4fDI0MCxmZVtsKzE+PjBdPWM+Pj4xMiY2M3wxMjgsZmVbbCsyPj4wXT1jPj4+NiY2M3wxMjgsZmVbbCszPj4wXT02MyZjfDEyOCxsPTQ7YnJlYWt9YVs0NzY0M109ODQsbD0t''@;'; put 'put ''MTticmVha31sPTF9d2hpbGUoMCk7cmV0dXJuIDB8bH0obCxjfD0wKTowKX1mdW5jdGlvbiByZChsLGMpe3JldHVybiBmdW5jdGlvbiBuY2UobCxjKXtsfD0wO3ZhciBmPTAscD0wO2Y9Y3w9MDtlOmRve2lmKDMmKGZebCkpcD04O2Vsc2V7aWYoMyZmKWRve2lmKGZlW2w+PjBdPWY9MHxmZVtj''@;'; put 'put ''Pj4wXSwhKGY8PDI0Pj4yNCkpYnJlYWsgZTtjPWMrMXwwLGw9bCsxfDB9d2hpbGUoMCE9KDMmY3wwKSk7aWYoISgoLTIxMzkwNjIxNDQmKGY9MHxhW2M+PjJdKV4tMjEzOTA2MjE0NCkmZistMTY4NDMwMDkpKWZvcihwPWw7Yz1jKzR8MCxsPXArNHwwLGFbcD4+Ml09ZiwhKCgtMjEzOTA2MjE0''@;'; put 'put ''NCYoZj0wfGFbYz4+Ml0pXi0yMTM5MDYyMTQ0KSZmKy0xNjg0MzAwOXwwKTspcD1sO3A9OH19d2hpbGUoMCk7aWYoOD09KDB8cCkmJihmZVtsPj4wXT1wPTB8ZmVbYz4+MF0scDw8MjQ+PjI0KSlkb3tmZVsobD1sKzF8MCk+PjBdPXA9MHxmZVsoYz1jKzF8MCk+PjBdfXdoaWxlKHA8PDI0Pj4y''@;'; put 'put ''NCE9MCl9KGx8PTAsY3w9MCksMHxsfWZ1bmN0aW9uIG0kKGwpe3JldHVybiAwfCgobHw9MCk/MCE9KDB8ZnVuY3Rpb24gaWNlKGwsYyl7bHw9MDt2YXIgZj0wO2lmKGN8PTApe2Zvcig7ISgwPT0oMHwoZj0wfGFbbD4+Ml0pKXwoMHxmKT09KDB8YykpOylsPWwrNHwwO2w9MHxmP2w6MH1lbHNl''@;'; put 'put ''IGw9bCsoKDB8ZnVuY3Rpb24gTEFlKGwpe3ZhciBjPTA7Zm9yKGM9bHw9MDswfGFbYz4+Ml07KWM9Yys0fDA7cmV0dXJuIGMtbD4+MnwwfShsKSk8PDIpfDA7cmV0dXJuIDB8bH0oNjM1MDAsbCkpJjE6MCl9ZnVuY3Rpb24gdTgobCxjKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxOmw9''@;'; put 'put ''MHxicyhsKTticmVhaztjYXNlIDI6bD0wfGckKGwpO2JyZWFrO2Nhc2UgMzpsPTB8ZnVuY3Rpb24gb2NlKGwpe3JldHVybiAwfGZ1bmN0aW9uIHJjZShsKXtyZXR1cm4gMSYoMzI9PSgwfChsfD0wKSl8OT09KDB8bCkpfDB9KGx8PTApfShsKTticmVhaztjYXNlIDQ6bD0wfGZ1bmN0aW9uIGFj''@;'; put 'put ''ZShsKXtyZXR1cm4gMSYoKChsfD0wKS02NTUyOXwwKT4+PjA8M3w4MjMyPT0oLTImbHwwKXxsPj4+MDwzMnwobCstMTI3fDApPj4+MDwzMyl8MH0obCk7YnJlYWs7Y2FzZSA1Omw9MHxwJChsKTticmVhaztjYXNlIDY6bD0wfGZ1bmN0aW9uIGxjZShsKXtyZXR1cm4gMHwoMHxtJChsfD0wKT8w''@;'; put 'put ''OjAhPSgwfFh1ZShsKSkmMSl9KGwpO2JyZWFrO2Nhc2UgNzpsPTB8TWoobCk7YnJlYWs7Y2FzZSA4Omw9MHxYdWUobCk7YnJlYWs7Y2FzZSA5Omw9MHxmdW5jdGlvbiBJQWUobCl7cmV0dXJuIDB8KChsfD0wKT4+PjA8MTMxMDcyPygwfFh0WzE0NjQyMysoKDB8WHRbMTQ2NDIzKyhsPj4+OCk+''@;'; put 'put ''PjBdKTw8NXxsPj4+MyYzMSk+PjBdKT4+Pig3JmwpJjE6MCl9KGwpO2JyZWFrO2Nhc2UgMTA6bD0wfG0kKGwpO2JyZWFrO2Nhc2UgMTE6bD0wfEVqKGwpO2JyZWFrO2Nhc2UgMTI6bD0wfGZ1bmN0aW9uIHNjZShsKXtyZXR1cm4gMSYoKChsfD0wKS00OHwwKT4+PjA8MTB8KCgzMnxsKS05N3ww''@;'; put 'put ''KT4+PjA8Nil8MH0obCk7YnJlYWs7ZGVmYXVsdDpsPTB9cmV0dXJuIDB8bH1mdW5jdGlvbiBicyhsKXtyZXR1cm4gMHwoMHxwJChsfD0wKT8xOjAhPSgwfGckKGwpKSYxKX1mdW5jdGlvbiBNaihsKXtyZXR1cm4oMHxvdihsfD0wKSkhPSgwfGwpfDB9ZnVuY3Rpb24gRWoobCl7cmV0dXJuKDB8''@;'; put 'put ''QWcobHw9MCkpIT0oMHxsKXwwfWZ1bmN0aW9uIEFnKGwpe3JldHVybiAwfEp1ZShsfD0wLDEpfWZ1bmN0aW9uIEFMKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIGIsRCxtPTAsQT0wLHc9MCxrPTAsTT0wO0Q9bGUsbGU9bGUrMTI4fDAsbT1EKzEyNHwwLHc9NjM1ODgsYj0oQT1N''@;'; put 'put ''PUQpKzEyNHwwO2Rve2FbQT4+Ml09YVt3Pj4yXSxBPUErNHwwLHc9dys0fDB9d2hpbGUoKDB8QSk8KDB8YikpO3JldHVybihjKy0xfDApPj4+MD4yMTQ3NDgzNjQ2P2M/KGFbNDc2NDNdPTc1LGM9LTEpOihsPW0sYz0xLGs9NCk6az00LDQ9PSgwfGspJiYoYVtNKzQ4Pj4yXT1rPWM+Pj4wPihr''@;'; put 'put ''PS0yLWx8MCk+Pj4wP2s6YyxhWyhtPU0rMjB8MCk+PjJdPWwsYVtNKzQ0Pj4yXT1sLGM9bCtrfDAsYVsobD1NKzE2fDApPj4yXT1jLGFbTSsyOD4+Ml09YyxjPTB8eUwoTSxmLHApLGsmJihmZVsoTT0wfGFbbT4+Ml0pKygoKDB8TSk9PSgwfGFbbD4+Ml0pKTw8MzE+PjMxKT4+MF09MCkpLGxl''@;'; put 'put ''PUQsMHxjfWZ1bmN0aW9uIHlMKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgRCxHLHEscGUsZ2UscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLFI9MDtnZT1sZSxsZT1sZSsyMjR8MCxEPWdlKzEyMHwwLHE9Z2UscGU9Z2UrMTM2fDAsbT00MCsocD1HPWdlKzgwfDApfDA7ZG97YVtwPj4y''@;'; put 'put ''XT0wLHA9cCs0fDB9d2hpbGUoKDB8cCk8KDB8bSkpO3JldHVybiBhW0Q+PjJdPWFbZj4+Ml0sKDB8eGooMCxjLEQscSxHKSk8MD9mPS0xOihSPSgwfGFbbCs3Nj4+Ml0pPi0xPzB8UmYoKTowLE09MzImKGY9MHxhW2w+PjJdKSwoMHxmZVtsKzc0Pj4wXSk8MSYmKGFbbD4+Ml09LTMzJmYpLDB8''@;'; put 'put ''YVsocD1sKzQ4fDApPj4yXT9mPTB8eGoobCxjLEQscSxHKTooQT0wfGFbKG09bCs0NHwwKT4+Ml0sYVttPj4yXT1wZSxhWyh3PWwrMjh8MCk+PjJdPXBlLGFbKGI9bCsyMHwwKT4+Ml09cGUsYVtwPj4yXT04MCxhWyhrPWwrMTZ8MCk+PjJdPXBlKzgwLGY9MHx4aihsLGMsRCxxLEcpLEEmJiht''@;'; put 'put ''aVs2MyZhW2wrMzY+PjJdXShsLDAsMCksZj0wPT0oMHxhW2I+PjJdKT8tMTpmLGFbbT4+Ml09QSxhW3A+PjJdPTAsYVtrPj4yXT0wLGFbdz4+Ml09MCxhW2I+PjJdPTApKSxhW2w+PjJdPShwPTB8YVtsPj4yXSl8TSwwfFImJmUzKCksZj0wPT0oMzImcHwwKT9mOi0xKSxsZT1nZSwwfGZ9ZnVu''@;'; put 'put ''Y3Rpb24geGoobCxjLGYscCxtKXtsfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBMZSxSZSxIZSxxZSxydCxXZSxhdCxTdCxrdCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLFZlPTA7a3Q9bGUsbGU9bGUrNjR8MCxXZT1rdCxWZT1rdCsyNHww''@;'; put 'put ''LGF0PWt0Kzh8MCxTdD1rdCsyMHwwLGFbKHJ0PWt0KzE2fDApPj4yXT1jfD0wLExlPTAhPSgwfGwpLEhlPVJlPVZlKzQwfDAsVmU9VmUrMzl8MCxxZT1hdCs0fDAsdz0wLEE9MCxEPTA7ZTpmb3IoOzspe2Rve2lmKCgwfEEpPi0xKXtpZigoMHx3KT4oMjE0NzQ4MzY0Ny1BfDApKXthWzQ3NjQz''@;'; put 'put ''XT03NSxBPS0xO2JyZWFrfUE9dytBfDA7YnJlYWt9fXdoaWxlKDApO2lmKCEoKHc9MHxmZVtjPj4wXSk8PDI0Pj4yNCkpe09lPTg2O2JyZWFrfWI9Yzt0OmZvcig7Oyl7c3dpdGNoKHc8PDI0Pj4yNCl7Y2FzZSAzNzp3PWIsT2U9OTticmVhayB0O2Nhc2UgMDp3PWI7YnJlYWsgdH1hW3J0Pj4y''@;'; put 'put ''XT1iZT1iKzF8MCx3PTB8ZmVbYmU+PjBdLGI9YmV9dDpkb3tpZig5PT0oMHxPZSkpZm9yKDs7KXtpZihPZT0wLDM3IT0oMHxmZVtiKzE+PjBdKSlicmVhayB0O2lmKHc9dysxfDAsYVtydD4+Ml09Yj1iKzJ8MCwzNyE9KDB8ZmVbYj4+MF0pKWJyZWFrO09lPTl9fXdoaWxlKDApO2lmKHc9dy1j''@;'; put 'put ''fDAsTGUmJlZ1KGwsYyx3KSwwfHcpYz1iO2Vsc2V7aWYoKHc9KDB8ZmVbKGs9YisxfDApPj4wXSktNDh8MCk+Pj4wPDEwPyhwZT0oYmU9MzY9PSgwfGZlW2IrMj4+MF0pKT93Oi0xLEQ9YmU/MTpELGs9YmU/YiszfDA6ayk6cGU9LTEsYVtydD4+Ml09aywoYmU9KCh3PTB8ZmVbaz4+MF0pPDwy''@;'; put 'put ''ND4+MjQpLTMyfDApPj4+MD4zMXwwPT0oMTw8YmUmNzU5MTN8MCkpYj0wO2Vsc2V7Yj0wO2Rve2J8PTE8PCh3PDwyND4+MjQpLTMyLGFbcnQ+PjJdPWs9aysxfDAsYmU9KCh3PTB8ZmVbaz4+MF0pPDwyND4+MjQpLTMyfDB9d2hpbGUoIShiZT4+PjA+MzF8MD09KDE8PGJlJjc1OTEzfDApKSl9''@;'; put 'put ''aWYodzw8MjQ+PjI0PT00Mil7aWYoKHc9KDB8ZmVbKE09aysxfDApPj4wXSktNDh8MCk+Pj4wPDEwJiYzNj09KDB8ZmVbaysyPj4wXSkpYVttKyh3PDwyKT4+Ml09MTAsdz0wfGFbcCsoKDB8ZmVbTT4+MF0pLTQ4PDwzKT4+Ml0sRD0xLGs9ayszfDA7ZWxzZXtpZigwfEQpe0E9LTE7YnJlYWt9''@;'; put 'put ''TGU/KHc9MHxhWyhEPTMrKDB8YVtmPj4yXSkmLTQpPj4yXSxhW2Y+PjJdPUQrNCxEPTAsaz1NKToodz0wLEQ9MCxrPU0pfWFbcnQ+PjJdPWssdz0oZ2U9KDB8dyk8MCk/MC13fDA6dyxnZT1nZT84MTkyfGI6Yn1lbHNle2lmKCgwfCh3PTB8diQocnQpKSk8MCl7QT0tMTticmVha31nZT1iLGs9''@;'; put 'put ''MHxhW3J0Pj4yXX1kb3tpZig0Nj09KDB8ZmVbaz4+MF0pKXtpZig0MiE9KDB8ZmVbaysxPj4wXSkpe2FbcnQ+PjJdPWsrMSxiPTB8diQocnQpLGs9MHxhW3J0Pj4yXTticmVha31pZigoYj0oMHxmZVsoTT1rKzJ8MCk+PjBdKS00OHwwKT4+PjA8MTAmJjM2PT0oMHxmZVtrKzM+PjBdKSl7YVtt''@;'; put 'put ''KyhiPDwyKT4+Ml09MTAsYj0wfGFbcCsoKDB8ZmVbTT4+MF0pLTQ4PDwzKT4+Ml0sYVtydD4+Ml09az1rKzR8MDticmVha31pZigwfEQpe0E9LTE7YnJlYWsgZX1MZT8oYj0wfGFbKGJlPTMrKDB8YVtmPj4yXSkmLTQpPj4yXSxhW2Y+PjJdPWJlKzQpOmI9MCxhW3J0Pj4yXT1NLGs9TX1lbHNl''@;'; put 'put ''IGI9LTF9d2hpbGUoMCk7Zm9yKHE9MDs7KXtpZigoKDB8ZmVbaz4+MF0pLTY1fDApPj4+MD41Nyl7QT0tMTticmVhayBlfWlmKGFbcnQ+PjJdPWJlPWsrMXwwLCEoKChSPTI1NSYoTT0wfGZlWygwfGZlW2s+PjBdKS02NSsoMTUyOTQ0Kyg1OCpxfDApKT4+MF0pKS0xfDApPj4+MDw4KSlicmVh''@;'; put 'put ''aztxPVIsaz1iZX1pZighKE08PDI0Pj4yNCkpe0E9LTE7YnJlYWt9Rz0oMHxwZSk+LTE7ZG97aWYoTTw8MjQ+PjI0PT0xOSl7aWYoRyl7QT0tMTticmVhayBlfU9lPTQ4fWVsc2V7aWYoRyl7YVttKyhwZTw8Mik+PjJdPVIscGU9MHxhWzQrKEc9cCsocGU8PDMpfDApPj4yXSxhWyhPZT1XZSk+''@;'; put 'put ''PjJdPWFbRz4+Ml0sYVtPZSs0Pj4yXT1wZSxPZT00ODticmVha31pZighTGUpe0E9MDticmVhayBlfUEkKFdlLFIsZil9fXdoaWxlKDApO2lmKDQ4IT0oMHxPZSl8fChPZT0wLExlKSl7az0wIT0oMHxxKSYzPT0oMTUmKGs9MHxmZVtrPj4wXSl8MCk/LTMzJms6ayxwZT0tNjU1MzcmZ2UsZ2U9''@;'; put 'put ''MD09KDgxOTImZ2V8MCk/Z2U6cGU7dDpkb3tzd2l0Y2goMHxrKXtjYXNlIDExMDpzd2l0Y2goKDI1NSZxKTw8MjQ+PjI0KXtjYXNlIDA6Y2FzZSAxOmNhc2UgNjphW2FbV2U+PjJdPj4yXT1BLHc9MCxjPWJlO2NvbnRpbnVlIGU7Y2FzZSAyOmNhc2UgNzphWyh3PTB8YVtXZT4+Ml0pPj4yXT1B''@;'; put 'put ''LGFbdys0Pj4yXT0oKDB8QSk8MCk8PDMxPj4zMSx3PTAsYz1iZTtjb250aW51ZSBlO2Nhc2UgMzppdFthW1dlPj4yXT4+MV09QSx3PTAsYz1iZTtjb250aW51ZSBlO2Nhc2UgNDpmZVthW1dlPj4yXT4+MF09QSx3PTAsYz1iZTtjb250aW51ZSBlO2RlZmF1bHQ6dz0wLGM9YmU7Y29udGludWUg''@;'; put 'put ''ZX1jYXNlIDExMjprPTEyMCxiPWI+Pj4wPjg/Yjo4LGM9OHxnZSxPZT02MDticmVhaztjYXNlIDg4OmNhc2UgMTIwOmM9Z2UsT2U9NjA7YnJlYWs7Y2FzZSAxMTE6TT0wLFI9MTUzNDA4LGI9MD09KDgmZ2V8MCl8KDB8Yik+KDB8KHE9SGUtKEc9MHxmY2UoYz0wfGFbKGs9V2UpPj4yXSxrPTB8''@;'; put 'put ''YVtrKzQ+PjJdLFJlKSl8MCkpP2I6cSsxfDAscT1nZSxPZT02NjticmVhaztjYXNlIDEwNTpjYXNlIDEwMDppZihjPTB8YVsoaz1XZSk+PjJdLCgwfChrPTB8YVtrKzQ+PjJdKSk8MCl7Yz0wfFNwKDAsMCwwfGMsMHxrKSxrPURuLGFbKE09V2UpPj4yXT1jLGFbTSs0Pj4yXT1rLE09MSxSPTE1''@;'; put 'put ''MzQwOCxPZT02NTticmVhayB0fU09MCE9KDIwNDkmZ2V8MCkmMSxSPTA9PSgyMDQ4JmdlfDApPzA9PSgxJmdlfDApPzE1MzQwODoxNTM0MTA6MTUzNDA5LE9lPTY1O2JyZWFrIHQ7Y2FzZSAxMTc6TT0wLFI9MTUzNDA4LGM9MHxhWyhrPVdlKT4+Ml0saz0wfGFbays0Pj4yXSxPZT02NTticmVh''@;'; put 'put ''aztjYXNlIDk5OmZlW1ZlPj4wXT1hW1dlPj4yXSxjPVZlLE09MCxSPTE1MzQwOCxHPVJlLGs9MSxiPXBlO2JyZWFrO2Nhc2UgMTA5Oms9MHwkaygwfGFbNDc2NDNdKSxPZT03MDticmVhaztjYXNlIDExNTprPTB8KGs9MHxhW1dlPj4yXSk/azoxNTM0MTgsT2U9NzA7YnJlYWs7Y2FzZSA2Nzph''@;'; put 'put ''W2F0Pj4yXT1hW1dlPj4yXSxhW3FlPj4yXT0wLGFbV2U+PjJdPWF0LEc9LTEsaz1hdCxPZT03NDticmVhaztjYXNlIDgzOmM9MHxhW1dlPj4yXSxiPyhHPWIsaz1jLE9lPTc0KTooY2MobCwzMix3LDAsZ2UpLGM9MCxPZT04Myk7YnJlYWs7Y2FzZSA2NTpjYXNlIDcxOmNhc2UgNzA6Y2FzZSA2''@;'; put 'put ''OTpjYXNlIDk3OmNhc2UgMTAzOmNhc2UgMTAyOmNhc2UgMTAxOnc9MHxoY2UobCwrX1tXZT4+M10sdyxiLGdlLGspLGM9YmU7Y29udGludWUgZTtkZWZhdWx0Ok09MCxSPTE1MzQwOCxHPVJlLGs9YixiPWdlfX13aGlsZSgwKTt0OmRve2lmKDYwPT0oMHxPZSkpZ2U9V2UscGU9MHxhW2dlPj4y''@;'; put 'put ''XSxnZT0wfGFbZ2UrND4+Ml0sRz0wfGNjZShwZSxnZSxSZSwzMiZrKSxSPTA9PSg4JmN8MCl8MD09KDB8cGUpJjA9PSgwfGdlKSxNPVI/MDoyLFI9Uj8xNTM0MDg6MTUzNDA4KyhrPj40KXwwLHE9YyxjPXBlLGs9Z2UsT2U9NjY7ZWxzZSBpZig2NT09KDB8T2UpKUc9MHxxeShjLGssUmUpLHE9''@;'; put 'put ''Z2UsT2U9NjY7ZWxzZSBpZig3MD09KDB8T2UpKU9lPTAsZ2U9MHxlUyhrLDAsYikscT0wPT0oMHxnZSksYz1rLE09MCxSPTE1MzQwOCxHPXE/aytifDA6Z2Usaz1xP2I6Z2Uta3wwLGI9cGU7ZWxzZSBpZig3ND09KDB8T2UpKXtmb3IoT2U9MCxSPWssYz0wLGI9MDsoTT0wfGFbUj4+Ml0pJiYh''@;'; put 'put ''KCgwfChiPTB8S3VlKFN0LE0pKSk8MHxiPj4+MD4oRy1jfDApPj4+MCkmJkc+Pj4wPihjPWIrY3wwKT4+PjA7KVI9Uis0fDA7aWYoKDB8Yik8MCl7QT0tMTticmVhayBlfWlmKGNjKGwsMzIsdyxjLGdlKSxjKWZvcihNPTA7Oyl7aWYoIShiPTB8YVtrPj4yXSkpe09lPTgzO2JyZWFrIHR9aWYo''@;'; put 'put ''KDB8KE09KGI9MHxLdWUoU3QsYikpK018MCkpPigwfGMpKXtPZT04MzticmVhayB0fWlmKFZ1KGwsU3QsYiksTT4+PjA+PWM+Pj4wKXtPZT04MzticmVha31rPWsrNHwwfWVsc2UgYz0wLE9lPTgzfX13aGlsZSgwKTtpZig2Nj09KDB8T2UpKU9lPTAsZ2U9MCE9KDB8Yil8KGs9MCE9KDB8Yyl8''@;'; put 'put ''MCE9KDB8aykpLGs9SGUtRysoMSYoMV5rKSl8MCxjPWdlP0c6UmUsRz1SZSxrPWdlPygwfGIpPigwfGspP2I6azpiLGI9KDB8Yik+LTE/LTY1NTM3JnE6cTtlbHNlIGlmKDgzPT0oMHxPZSkpe09lPTAsY2MobCwzMix3LGMsODE5Ml5nZSksdz0oMHx3KT4oMHxjKT93OmMsYz1iZTtjb250aW51''@;'; put 'put ''ZX1jYyhsLDMyLHc9KDB8dyk8KDB8KGdlPShxPSgwfGspPCgwfChwZT1HLWN8MCkpP3BlOmspK018MCkpP2dlOncsZ2UsYiksVnUobCxSLE0pLGNjKGwsNDgsdyxnZSw2NTUzNl5iKSxjYyhsLDQ4LHEscGUsMCksVnUobCxjLHBlKSxjYyhsLDMyLHcsZ2UsODE5Ml5iKSxjPWJlfWVsc2Ugdz0w''@;'; put 'put ''LGM9YmV9fWU6ZG97aWYoODY9PSgwfE9lKSYmIWwpaWYoRCl7Zm9yKEE9MTtjPTB8YVttKyhBPDwyKT4+Ml07KXtpZihBJChwKyhBPDwzKXwwLGMsZiksYz1BKzF8MCwhKCgwfEEpPDkpKXtBPWM7YnJlYWt9QT1jfWlmKCgwfEEpPDEwKWZvcig7Oyl7aWYoMHxhW20rKEE8PDIpPj4yXSl7QT0t''@;'; put 'put ''MTticmVhayBlfWlmKCEoKDB8QSk8OSkpe0E9MTticmVha31BPUErMXwwfWVsc2UgQT0xfWVsc2UgQT0wfXdoaWxlKDApO3JldHVybiBsZT1rdCwwfEF9ZnVuY3Rpb24gUmYobCl7cmV0dXJuIDB9ZnVuY3Rpb24gZTMobCl7fWZ1bmN0aW9uIFZ1KGwsYyxmKXszMiZhWyhsfD0wKT4+Ml18fFRq''@;'; put 'put ''KGN8PTAsZnw9MCxsKX1mdW5jdGlvbiB2JChsKXt2YXIgYz0wLGY9MCxwPTA7aWYoKHA9KDB8ZmVbKGY9MHxhWyhsfD0wKT4+Ml0pPj4wXSktNDh8MCk+Pj4wPDEwKXtjPTA7ZG97Yz1wKygxMCpjfDApfDAsYVtsPj4yXT1mPWYrMXwwLHA9KDB8ZmVbZj4+MF0pLTQ4fDB9d2hpbGUocD4+PjA8''@;'; put 'put ''MTApfWVsc2UgYz0wO3JldHVybiAwfGN9ZnVuY3Rpb24gQSQobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MDtlOmRve2lmKGM+Pj4wPD0yMClzd2l0Y2goMHxjKXtjYXNlIDk6Yz0wfGFbKHA9MysoMHxhW2Y+PjJdKSYtNCk+PjJdLGFbZj4+Ml09cCs0LGFbbD4+Ml09Yzti''@;'; put 'put ''cmVhayBlO2Nhc2UgMTA6Yz0wfGFbKHA9MysoMHxhW2Y+PjJdKSYtNCk+PjJdLGFbZj4+Ml09cCs0LGFbKHA9bCk+PjJdPWMsYVtwKzQ+PjJdPSgoMHxjKTwwKTw8MzE+PjMxO2JyZWFrIGU7Y2FzZSAxMTpjPTB8YVsocD0zKygwfGFbZj4+Ml0pJi00KT4+Ml0sYVtmPj4yXT1wKzQsYVsocD1s''@;'; put 'put ''KT4+Ml09YyxhW3ArND4+Ml09MDticmVhayBlO2Nhc2UgMTI6bT0wfGFbKGM9cD03KygwfGFbZj4+Ml0pJi04KT4+Ml0sYz0wfGFbYys0Pj4yXSxhW2Y+PjJdPXArOCxhWyhwPWwpPj4yXT1tLGFbcCs0Pj4yXT1jO2JyZWFrIGU7Y2FzZSAxMzpwPTB8YVsobT0zKygwfGFbZj4+Ml0pJi00KT4+''@;'; put 'put ''Ml0sYVtmPj4yXT1tKzQsYVsobT1sKT4+Ml09cD0oNjU1MzUmcCk8PDE2Pj4xNixhW20rND4+Ml09KCgwfHApPDApPDwzMT4+MzE7YnJlYWsgZTtjYXNlIDE0OnA9MHxhWyhtPTMrKDB8YVtmPj4yXSkmLTQpPj4yXSxhW2Y+PjJdPW0rNCxhWyhtPWwpPj4yXT02NTUzNSZwLGFbbSs0Pj4yXT0w''@;'; put 'put ''O2JyZWFrIGU7Y2FzZSAxNTpwPTB8YVsobT0zKygwfGFbZj4+Ml0pJi00KT4+Ml0sYVtmPj4yXT1tKzQsYVsobT1sKT4+Ml09cD0oMjU1JnApPDwyND4+MjQsYVttKzQ+PjJdPSgoMHxwKTwwKTw8MzE+PjMxO2JyZWFrIGU7Y2FzZSAxNjpwPTB8YVsobT0zKygwfGFbZj4+Ml0pJi00KT4+Ml0s''@;'; put 'put ''YVtmPj4yXT1tKzQsYVsobT1sKT4+Ml09MjU1JnAsYVttKzQ+PjJdPTA7YnJlYWsgZTtjYXNlIDE3OmNhc2UgMTg6QT0rX1sobT03KygwfGFbZj4+Ml0pJi04KT4+M10sYVtmPj4yXT1tKzgsX1tsPj4zXT1BO2JyZWFrIGU7ZGVmYXVsdDpicmVhayBlfX13aGlsZSgwKX1mdW5jdGlvbiBjY2Uo''@;'; put 'put ''bCxjLGYscCl7aWYoZnw9MCxwfD0wLCEoMD09KDB8KGx8PTApKSYwPT0oMHwoY3w9MCkpKSlkb3tmZVsoZj1mKy0xfDApPj4wXT0wfFh0WzE1MzQ1NisoMTUmbCk+PjBdfHAsbD0wfHdsKDB8bCwwfGMsNCksYz1Ebn13aGlsZSghKDA9PSgwfGwpJjA9PSgwfGMpKSk7cmV0dXJuIDB8Zn1mdW5j''@;'; put 'put ''dGlvbiBmY2UobCxjLGYpe2lmKGZ8PTAsISgwPT0oMHwobHw9MCkpJjA9PSgwfChjfD0wKSkpKWRve2ZlWyhmPWYrLTF8MCk+PjBdPTcmbHw0OCxsPTB8d2woMHxsLDB8YywzKSxjPURufXdoaWxlKCEoMD09KDB8bCkmMD09KDB8YykpKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIHF5KGwsYyxmKXtm''@;'; put 'put ''fD0wO3ZhciBwPTA7aWYoKGN8PTApPj4+MD4wfDA9PSgwfGMpJihsfD0wKT4+PjA+NDI5NDk2NzI5NSl7Zm9yKDtwPTB8aVMoMHxsLDB8YywxMCwwKSxmZVsoZj1mKy0xfDApPj4wXT0yNTUmcHw0OCxwPWwsbD0wfG93KDB8bCwwfGMsMTAsMCksYz4+PjA+OXw5PT0oMHxjKSZwPj4+MD40Mjk0''@;'; put 'put ''OTY3Mjk1OyljPURuO2M9bH1lbHNlIGM9bDtpZihjKWZvcig7ZmVbKGY9ZistMXwwKT4+MF09NDh8KGM+Pj4wKSUxMCwhKGM+Pj4wPDEwKTspYz0oYz4+PjApLzEwfDA7cmV0dXJuIDB8Zn1mdW5jdGlvbiBjYyhsLGMsZixwLG0pe3ZhciBBLHc7aWYobHw9MCxjfD0wLHc9bGUsbGU9bGUrMjU2''@;'; put 'put ''fDAsQT13LCgwfChmfD0wKSk+KDB8KHB8PTApKSYwPT0oNzM3MjgmKG18PTApfDApKXtpZih1MigwfEEsMHxjLDB8KChtPWYtcHwwKT4+PjA8MjU2P206MjU2KSksbT4+PjA+MjU1KXtjPWYtcHwwO2Rve1Z1KGwsQSwyNTYpLG09bSstMjU2fDB9d2hpbGUobT4+PjA+MjU1KTttPTI1NSZjfVZ1''@;'; put 'put ''KGwsQSxtKX1sZT13fWZ1bmN0aW9uIGhjZShsLGMsZixwLG0sQSl7bHw9MCxjPStjLGZ8PTAscHw9MCxtfD0wLEF8PTA7dmFyIHN0LHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxMZT0wLFJlPTAsSGU9MCxWZT0wLHFlPTAscnQ9MCxXZT0wLGF0''@;'; put 'put ''PTAsU3Q9MCxrdD0wO3N0PWxlLGxlPWxlKzU2MHwwLGs9c3QrOHwwLFN0PWt0PXN0KzUyNHwwLE09c3QrNTEyfDAsYVsoYmU9c3QpPj4yXT0wLGF0PU0rMTJ8MCx5JChjKSwoMHxEbik8MD8oYz0tYyxydD0xLHFlPTE1MzQyNSk6KHJ0PTAhPSgyMDQ5Jm18MCkmMSxxZT0wPT0oMjA0OCZtfDAp''@;'; put 'put ''PzA9PSgxJm18MCk/MTUzNDI2OjE1MzQzMToxNTM0MjgpLHkkKGMpO2Rve2lmKCEwJjIxNDY0MzUwNzI9PSgyMTQ2NDM1MDcyJkRufDApKWt0PTAhPSgzMiZBfDApLGNjKGwsMzIsZix3PXJ0KzN8MCwtNjU1MzcmbSksVnUobCxxZSxydCksVnUobCxjIT1jfCExP2t0PzE1MzU5MzoxNTM0NTI6''@;'; put 'put ''a3Q/MTUzNDQ0OjE1MzQ0OCwzKSxjYyhsLDMyLGYsdyw4MTkyXm0pO2Vsc2V7aWYoKHc9MCE9KHE9MiorVEFlKGMsYmUpKSkmJihhW2JlPj4yXT0oMHxhW2JlPj4yXSktMSksOTc9PSgwfChMZT0zMnxBKSkpe3BlPTA9PSgwfChSPTMyJkEpKT9xZTpxZSs5fDAsRz0yfHJ0LHc9MTItcHwwO2Rv''@;'; put 'put ''e2lmKCEocD4+PjA+MTF8MD09KDB8dykpKXtjPTg7ZG97dz13Ky0xfDAsYyo9MTZ9d2hpbGUoMCE9KDB8dykpO2lmKDQ1PT0oMHxmZVtwZT4+MF0pKXtjPS0oYysoLXEtYykpO2JyZWFrfWM9cStjLWM7YnJlYWt9Yz1xfXdoaWxlKDApOygwfCh3PTB8cXkodz0oMHwoYj0wfGFbYmU+PjJdKSk8''@;'; put 'put ''MD8wLWJ8MDpiLCgoMHx3KTwwKTw8MzE+PjMxLGF0KSkpPT0oMHxhdCkmJihmZVsodz1NKzExfDApPj4wXT00OCksZmVbdystMT4+MF09NDMrKGI+PjMxJjIpLGZlWyhEPXcrLTJ8MCk+PjBdPUErMTUsaz0oMHxwKTwxLE09MD09KDgmbXwwKSx3PWt0O2Rve2I9dysxfDAsZmVbdz4+MF09UnxY''@;'; put 'put ''dFsxNTM0NTYrKFdlPX5+Yyk+PjBdLGM9MTYqKGMtKygwfFdlKSksMSE9KGItU3R8MCl8fE0mayYwPT1jP3c9YjooZmVbYj4+MF09NDYsdz13KzJ8MCl9d2hpbGUoMCE9Yyk7MCE9KDB8cCkmJigtMi1TdCt3fDApPCgwfHApPyhiPXctU3R8MCx3PXArMnwwKTpiPXc9dy1TdHwwLGNjKGwsMzIs''@;'; put 'put ''ZixTdD0oYXQ9YXQtRHwwKStHK3d8MCxtKSxWdShsLHBlLEcpLGNjKGwsNDgsZixTdCw2NTUzNl5tKSxWdShsLGt0LGIpLGNjKGwsNDgsdy1ifDAsMCwwKSxWdShsLEQsYXQpLGNjKGwsMzIsZixTdCw4MTkyXm0pLHc9U3Q7YnJlYWt9Yj0oMHxwKTwwPzY6cCx3PyhhW2JlPj4yXT13PSgwfGFb''@;'; put 'put ''YmU+PjJdKS0yOHwwLGM9MjY4NDM1NDU2KnEpOihjPXEsdz0wfGFbYmU+PjJdKSxrPVdlPSgwfHcpPDA/azprKzI4OHwwO2Rve2Fbaz4+Ml09SGU9fn5jPj4+MCxrPWsrNHwwLGM9MWU5KihjLSsoSGU+Pj4wKSl9d2hpbGUoMCE9Yyk7aWYoKDB8dyk+MClmb3IoTT1XZSxSPWs7Oyl7aWYoRD0o''@;'; put 'put ''MHx3KTwyOT93OjI5LCh3PVIrLTR8MCk+Pj4wPj1NPj4+MCl7az0wO2Rve09lPTB8aVMoMHwoUmU9MHx6bCgwfChSZT0wfFpvKDB8YVt3Pj4yXSwwLDB8RCkpLDB8RG4sMHxrLDApKSwwfChIZT1EbiksMWU5LDApLGFbdz4+Ml09T2Usaz0wfG93KDB8UmUsMHxIZSwxZTksMCksdz13Ky00fDB9''@;'; put 'put ''d2hpbGUodz4+PjA+PU0+Pj4wKTtrJiYoYVsoTT1NKy00fDApPj4yXT1rKX1mb3Ioaz1SOyEoaz4+PjA8PU0+Pj4wfHwwfGFbKHc9aystNHwwKT4+Ml0pOylrPXc7aWYoYVtiZT4+Ml09dz0oMHxhW2JlPj4yXSktRHwwLCEoKDB8dyk+MCkpYnJlYWs7Uj1rfWVsc2UgTT1XZTtpZigoMHx3KTww''@;'; put 'put ''KXtwPTErKChiKzI1fDApLzl8MCl8MCxnZT0xMDI9PSgwfExlKTtkb3tpZihwZT0oMHwocGU9MC13fDApKTw5P3BlOjksTT4+PjA8az4+PjApe0Q9KDE8PHBlKS0xfDAsUj0xZTk+Pj5wZSxHPTAsdz1NO2Rve2Fbdz4+Ml09KChIZT0wfGFbdz4+Ml0pPj4+cGUpK0csRz0wfEFyKEhlJkQsUiks''@;'; put 'put ''dz13KzR8MH13aGlsZSh3Pj4+MDxrPj4+MCk7dz0wPT0oMHxhW00+PjJdKT9NKzR8MDpNLEc/KGFbaz4+Ml09RyxNPXcsdz1rKzR8MCk6KE09dyx3PWspfWVsc2UgTT0wPT0oMHxhW00+PjJdKT9NKzR8MDpNLHc9aztrPSh3LShrPWdlP1dlOk0pPj4yfDApPigwfHApP2srKHA8PDIpfDA6dyxh''@;'; put 'put ''W2JlPj4yXT13PSgwfGFbYmU+PjJdKStwZXwwfXdoaWxlKCgwfHcpPDApO3c9TSxwPWt9ZWxzZSB3PU0scD1rO2lmKEhlPVdlLHc+Pj4wPHA+Pj4wKXtpZihrPTkqKEhlLXc+PjIpfDAsKEQ9MHxhW3c+PjJdKT4+PjA+PTEwKXtNPTEwO2Rve009MTAqTXwwLGs9aysxfDB9d2hpbGUoRD4+PjA+''@;'; put 'put ''PU0+Pj4wKX19ZWxzZSBrPTA7aWYoKDB8KE09Yi0oMTAyIT0oMHxMZSk/azowKSsoKChPZT0wIT0oMHxiKSkmKGdlPTEwMz09KDB8TGUpKSk8PDMxPj4zMSl8MCkpPCgoOSoocC1IZT4+Mil8MCktOXwwKSl7aWYocGU9V2UrNCsoKCgwfChNPU0rOTIxNnwwKSkvOXwwKS0xMDI0PDwyKXwwLCgw''@;'; put 'put ''fChNPSgwfE0pJTl8MCkpPDgpZm9yKEQ9MTA7RD0xMCpEfDAsKDB8TSk8NzspTT1NKzF8MDtlbHNlIEQ9MTA7aWYoKE09KHBlKzR8MCk9PSgwfHApKSYwPT0oMHwoRz0oKFI9MHxhW3BlPj4yXSk+Pj4wKSUoRD4+PjApfDApKSlNPXBlO2Vsc2UgaWYocT0wPT0oMSYoKFI+Pj4wKS8oRD4+PjAp''@;'; put 'put ''fDApfDApPzkwMDcxOTkyNTQ3NDA5OTI6OTAwNzE5OTI1NDc0MDk5NCxjPUc+Pj4wPChSZT0oMHxEKS8yfDApPj4+MD8uNTpNJigwfEcpPT0oMHxSZSk/MToxLjUscnQmJihjPShSZT00NT09KDB8ZmVbcWU+PjBdKSk/LWM6YyxxPVJlPy1xOnEpLGFbcGU+PjJdPU09Ui1HfDAscStjIT1xKXtp''@;'; put 'put ''ZihhW3BlPj4yXT1SZT1NK0R8MCxSZT4+PjA+OTk5OTk5OTk5KWZvcihrPXBlO009aystNHwwLGFbaz4+Ml09MCxNPj4+MDx3Pj4+MCYmKGFbKHc9dystNHwwKT4+Ml09MCksYVtNPj4yXT1SZT0xKygwfGFbTT4+Ml0pfDAsUmU+Pj4wPjk5OTk5OTk5OTspaz1NO2Vsc2UgTT1wZTtpZihrPTkq''@;'; put 'put ''KEhlLXc+PjIpfDAsKFI9MHxhW3c+PjJdKT4+PjA+PTEwKXtEPTEwO2Rve0Q9MTAqRHwwLGs9aysxfDB9d2hpbGUoUj4+PjA+PUQ+Pj4wKX19ZWxzZSBNPXBlO009cD4+PjA+KE09TSs0fDApPj4+MD9NOnAsUmU9d31lbHNlIE09cCxSZT13O2ZvcihMZT1NOzspe2lmKExlPj4+MDw9UmU+Pj4w''@;'; put 'put ''KXtiZT0wO2JyZWFrfWlmKDB8YVsodz1MZSstNHwwKT4+Ml0pe2JlPTE7YnJlYWt9TGU9d31wPTAta3wwO2Rve2lmKGdlKXtpZigoMHwodz1iKygxJigxXk9lKSl8MCkpPigwfGspJigwfGspPi01PyhEPUErLTF8MCxiPXcrLTEta3wwKTooRD1BKy0yfDAsYj13Ky0xfDApLCEodz04Jm0pKXtp''@;'; put 'put ''ZihiZSYmMCE9KDB8KFZlPTB8YVtMZSstND4+Ml0pKSlpZigoVmU+Pj4wKSUxMHwwKU09MDtlbHNle009MCx3PTEwO2Rve3c9MTAqd3wwLE09TSsxfDB9d2hpbGUoISgwfChWZT4+PjApJSh3Pj4+MCkpKX1lbHNlIE09OTtpZih3PSg5KihMZS1IZT4+Mil8MCktOXwwLDEwMj09KDMyfEQpKXti''@;'; put 'put ''PSgwfGIpPCgwfChwZT0oMHwocGU9dy1NfDApKT4wP3BlOjApKT9iOnBlLHBlPTA7YnJlYWt9Yj0oMHxiKTwoMHwocGU9KDB8KHBlPXcray1NfDApKT4wP3BlOjApKT9iOnBlLHBlPTA7YnJlYWt9cGU9d31lbHNlIEQ9QSxwZT04Jm19d2hpbGUoMCk7aWYoUj0wIT0oMHwoZ2U9YnxwZSkpJjEs''@;'; put 'put ''Rz0xMDI9PSgzMnxEKSlPZT0wLHc9KDB8ayk+MD9rOjA7ZWxzZXtpZigoKE09YXQpLSh3PTB8cXkodz0oMHxrKTwwP3A6aywoKDB8dyk8MCk8PDMxPj4zMSxhdCkpfDApPDIpZG97ZmVbKHc9dystMXwwKT4+MF09NDh9d2hpbGUoKE0td3wwKTwyKTtmZVt3Ky0xPj4wXT00Mysoaz4+MzEmMiks''@;'; put 'put ''ZmVbKHc9dystMnwwKT4+MF09RCxPZT13LHc9TS13fDB9aWYoY2MobCwzMixmLHc9cnQrMStiK1Ird3wwLG0pLFZ1KGwscWUscnQpLGNjKGwsNDgsZix3LDY1NTM2Xm0pLEcpe1I9cGU9a3QrOXwwLEc9a3QrOHwwLE09RD1SZT4+PjA+V2U+Pj4wP1dlOlJlO2Rve2lmKGs9MHxxeSgwfGFbTT4+''@;'; put 'put ''Ml0sMCxwZSksKDB8TSk9PSgwfEQpKSgwfGspPT0oMHxwZSkmJihmZVtHPj4wXT00OCxrPUcpO2Vsc2UgaWYoaz4+PjA+a3Q+Pj4wKXt1MigwfGt0LDQ4LGstU3R8MCk7ZG97az1rKy0xfDB9d2hpbGUoaz4+PjA+a3Q+Pj4wKX1WdShsLGssUi1rfDApLE09TSs0fDB9d2hpbGUoTT4+PjA8PVdl''@;'; put 'put ''Pj4+MCk7aWYoMHxnZSYmVnUobCwxNTM0NzIsMSksTT4+PjA8TGU+Pj4wJigwfGIpPjApZm9yKDs7KXtpZigoaz0wfHF5KDB8YVtNPj4yXSwwLHBlKSk+Pj4wPmt0Pj4+MCl7dTIoMHxrdCw0OCxrLVN0fDApO2Rve2s9aystMXwwfXdoaWxlKGs+Pj4wPmt0Pj4+MCl9aWYoVnUobCxrLCgwfGIp''@;'; put 'put ''PDk/Yjo5KSxrPWIrLTl8MCwhKChNPU0rNHwwKT4+PjA8TGU+Pj4wJigwfGIpPjkpKXtiPWs7YnJlYWt9Yj1rfWNjKGwsNDgsYis5fDAsOSwwKX1lbHNle2lmKGdlPWJlP0xlOlJlKzR8MCwoMHxiKT4tMSl7cGU9MD09KDB8cGUpLHA9YmU9a3QrOXwwLFI9MC1TdHwwLEc9a3QrOHwwLEQ9UmU7''@;'; put 'put ''ZG97KDB8KGs9MHxxeSgwfGFbRD4+Ml0sMCxiZSkpKT09KDB8YmUpJiYoZmVbRz4+MF09NDgsaz1HKTtkb3tpZigoMHxEKT09KDB8UmUpKXtpZihNPWsrMXwwLFZ1KGwsaywxKSxwZSYoMHxiKTwxKXtrPU07YnJlYWt9VnUobCwxNTM0NzIsMSksaz1NfWVsc2V7aWYoaz4+PjA8PWt0Pj4+MCli''@;'; put 'put ''cmVhazt1MigwfGt0LDQ4LGsrUnwwKTtkb3trPWsrLTF8MH13aGlsZShrPj4+MD5rdD4+PjApfX13aGlsZSgwKTtWdShsLGssKDB8Yik+KDB8KFN0PXAta3wwKSk/U3Q6YiksYj1iLVN0fDAsRD1EKzR8MH13aGlsZShEPj4+MDxnZT4+PjAmKDB8Yik+LTEpfWNjKGwsNDgsYisxOHwwLDE4LDAp''@;'; put 'put ''LFZ1KGwsT2UsYXQtT2V8MCl9Y2MobCwzMixmLHcsODE5Ml5tKX19d2hpbGUoMCk7cmV0dXJuIGxlPXN0LDB8KCgwfHcpPCgwfGYpP2Y6dyl9ZnVuY3Rpb24geSQobCl7cmV0dXJuIF9bU2k+PjNdPWw9K2wsRG49MHxhW1NpKzQ+PjJdLDB8YVtTaT4+Ml19ZnVuY3Rpb24gVGoobCxjLGYpe2x8''@;'; put 'put ''PTAsY3w9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MDsobT0wfGFbKHA9MTYrKGZ8PTApfDApPj4yXSk/QT01OjB8dyQoZik/cD0wOihtPTB8YVtwPj4yXSxBPTUpO2U6ZG97aWYoNT09KDB8QSkpe2lmKHA9dz0wfGFbKGI9ZisyMHwwKT4+Ml0sKG0td3wwKT4+PjA8Yz4+PjApe3A9MHxtaVs2''@;'; put 'put ''MyZhW2YrMzY+PjJdXShmLGwsYyk7YnJlYWt9dDpkb3tpZigoMHxmZVtmKzc1Pj4wXSk+LTEpe2Zvcih3PWM7Oyl7aWYoIXcpe0E9MCxtPWw7YnJlYWsgdH1pZigxMD09KDB8ZmVbbCsobT13Ky0xfDApPj4wXSkpYnJlYWs7dz1tfWlmKChwPTB8bWlbNjMmYVtmKzM2Pj4yXV0oZixsLHcpKT4+''@;'; put 'put ''PjA8dz4+PjApYnJlYWsgZTtBPXcsbT1sK3d8MCxjPWMtd3wwLHA9MHxhW2I+PjJdfWVsc2UgQT0wLG09bH13aGlsZSgwKTtnbygwfHAsMHxtLDB8YyksYVtiPj4yXT0oMHxhW2I+PjJdKStjLHA9QStjfDB9fXdoaWxlKDApO3JldHVybiAwfHB9ZnVuY3Rpb24gdyQobCl7dmFyIGM9MCxmPTA7''@;'; put 'put ''cmV0dXJuIGZlWyhjPTc0KyhsfD0wKXwwKT4+MF09MjU1KyhmPTB8ZmVbYz4+MF0pfGYsOCYoYz0wfGFbbD4+Ml0pPyhhW2w+PjJdPTMyfGMsbD0tMSk6KGFbbCs4Pj4yXT0wLGFbbCs0Pj4yXT0wLGFbbCsyOD4+Ml09Zj0wfGFbbCs0ND4+Ml0sYVtsKzIwPj4yXT1mLGFbbCsxNj4+Ml09Ziso''@;'; put 'put ''MHxhW2wrNDg+PjJdKSxsPTApLDB8bH1mdW5jdGlvbiBwY2UobCl7dmFyIHAsYz0wLGY9MCxtPTA7Zm9yKHA9MHxmZVsobHw9MCk+PjBdLGM9MSxmPTE1MzQ3NCxtPTk3O3A8PDI0Pj4yNCE9bTw8MjQ+PjI0fHwwIT0oMHxaaShsLGYpKTspe2lmKCEoKG09MHxmZVsoZj1mKzZ8MCk+PjBdKTw8''@;'; put 'put ''MjQ+PjI0KSl7Yz0wO2JyZWFrfWM9YysxfDB9cmV0dXJuIDB8Y31mdW5jdGlvbiBhdihsKXtyZXR1cm4gMHwoMD09KDB8ZnVuY3Rpb24gdWNlKGwpe3JldHVybigobHw9MCktOTd8MCk+Pj4wPDI2fDB9KGx8PTApKT9sOjk1JmwpfWZ1bmN0aW9uIElqKGwsYyl7bHw9MCxjfD0wO3ZhciBtLEEs''@;'; put 'put ''Zj0wLHA9MDtBPWxlLGxlPWxlKzE2fDAsbT1BO2Rve2lmKGw+Pj4wPjYpYz0wO2Vsc2V7aWYoJHAoMTkwNjU2KSw2IT0oMHxsKSl7Yz0wfGIkKGwsYykscjYoMTkwNjU2KTticmVha31pZihjKXtmPTE1MzU0NyxwPShsPW0pKzE2fDA7ZG97ZmVbbD4+MF09MHxmZVtmPj4wXSxsPWwrMXwwLGY9''@;'; put 'put ''ZisxfDB9d2hpbGUoKDB8bCk8KDB8cCkpO3A9MDtkb3soMHwoZj0obD0wfHBMKGMsNTkpKS1jfDApKTwxNiYmKGdvKDB8bSwwfGMsMHxmKSxmZVttK2Y+PjBdPTAsYz0wPT0oMHxmZVtsPj4wXSk/YzpsKzF8MCksYiQocCxtKSxwPXArMXwwfXdoaWxlKDYhPSgwfHApKTtjPTE5NzEzMixsPTB9''@;'; put 'put ''ZWxzZSBjPTE5NzEzMixsPTA7Zm9yKDtnbygwfGMsMHwocD0wfChwPTB8YVsxOTA2MTYrKGw8PDIpPj4yXSk/cCs4fDA6MTUzNTYzKSwwfChmPTB8VW8ocCkpKSxmZVsocD1jK2Z8MCk+PjBdPTU5LDYhPSgwfChsPWwrMXwwKSk7KWM9YysoZisxKXwwO2ZlW3A+PjBdPTAscjYoMTkwNjU2KSxj''@;'; put 'put ''PTE5NzEzMn19d2hpbGUoMCk7cmV0dXJuIGxlPUEsMHxjfWZ1bmN0aW9uIGIkKGwsYyl7cmV0dXJuIGx8PTAsKGN8PTApPyhjPTB8ZnVuY3Rpb24gdGNlKGwsYyl7bHw9MCxjfD0wO3ZhciBELEcsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxSPTA7Rz1sZSxsZT1sZSsyNzJ8MCxE''@;'; put 'put ''PUcrOHwwLFI9Rztkb3tpZighKDB8ZmVbYz4+MF0pKXtpZigwfChjPTB8RHUoMTUyODMzKSkmJjB8ZmVbYz4+MF18fDB8KGM9MHxEdSgxNTI4NDArKDEyKmx8MCl8MCkpJiYwfGZlW2M+PjBdfHwwfChjPTB8RHUoMTUyOTEyKSkmJjB8ZmVbYz4+MF0pYnJlYWs7Yz0xNTI5MTd9fXdoaWxlKDAp''@;'; put 'put ''O2Y9MDtlOmRve3N3aXRjaCgwfGZlW2MrZj4+MF0pe2Nhc2UgNDc6Y2FzZSAwOmJyZWFrIGV9Zj1mKzF8MH13aGlsZShmPj4+MDwxNSk7KHA9MHxmZVtjPj4wXSk8PDI0Pj4yNCE9NDYmJjA9PSgwfGZlW2MrZj4+MF0pP3A8PDI0Pj4yND09Njc/TT0xNTooaz1jLE09MTYpOihjPTE1MjkxNyxN''@;'; put 'put ''PTE1KSwxNT09KDB8TSkmJigwfGZlW2MrMT4+MF0/KGs9YyxNPTE2KTpNPTE4KTtlOmRve2lmKDE2PT0oMHxNKSlpZigwIT0oMHxaaShrLDE1MjkxNykpJiYwIT0oMHxaaShrLDE1MjkyNSkpKXtpZigwfChjPTB8YVs0NzY2MV0pKWRve2lmKCEoMHxaaShrLGMrOHwwKSkpYnJlYWsgZTtjPTB8''@;'; put 'put ''YVtjKzI0Pj4yXX13aGlsZSgwIT0oMHxjKSk7JHAoMTkwNjQ4KSxjPTB8YVs0NzY2MV07dDpkb3tpZigwfGMpe2Zvcig7MHxaaShrLGMrOHwwKTspaWYoIShjPTB8YVtjKzI0Pj4yXSkpYnJlYWsgdDtyNigxOTA2NDgpO2JyZWFrIGV9fXdoaWxlKDApO3Q6ZG97aWYoMD09KDB8YVs0NzY0Nl0p''@;'; put 'put ''JiYwIT0oMHwobT0wfER1KDE1MjkzMSkpKSYmMCE9KDB8ZmVbbT4+MF0pKXtmb3Iodz0yNTQtZnwwLGI9ZisxfDAscD1tOzspe2lmKChtPShBPTB8cEwocCw1OCkpLXArKCgoYz0wfGZlW0E+PjBdKTw8MjQ+PjI0IT0wKTw8MzE+PjMxKXwwKT4+PjA8dz4+PjApe2lmKGdvKDB8RCwwfHAsMHxt''@;'; put 'put ''KSxmZVsocD1EK218MCk+PjBdPTQ3LGdvKHArMXwwLDB8aywwfGYpLGZlW0QrKGIrbSk+PjBdPTAsMHwocD0wfE84KDB8RCwwfFIpKSlicmVhaztjPTB8ZmVbQT4+MF19aWYoISgwfGZlWyhwPUErKGM8PDI0Pj4yNCE9MCYxKXwwKT4+MF0pKXtNPTQxO2JyZWFrIHR9fWlmKGM9MHxGMCgyOCkp''@;'; put 'put ''e2FbYz4+Ml09cCxhW2MrND4+Ml09YVtSPj4yXSxnbygwfChSPWMrOHwwKSwwfGssMHxmKSxmZVtSK2Y+PjBdPTAsYVtjKzI0Pj4yXT1hWzQ3NjYxXSxhWzQ3NjYxXT1jO2JyZWFrfXIkKHAsMHxhW1I+PjJdKSxNPTQxO2JyZWFrfU09NDF9d2hpbGUoMCk7NDE9PSgwfE0pJiYoYz0wfEYwKDI4''@;'; put 'put ''KSkmJihhW2M+PjJdPWFbMTU1ODRdLGFbYys0Pj4yXT1hWzE1NTg1XSxnbygwfChSPWMrOHwwKSwwfGssMHxmKSxmZVtSK2Y+PjBdPTAsYVtjKzI0Pj4yXT1hWzQ3NjYxXSxhWzQ3NjYxXT1jKSxyNigxOTA2NDgpLGM9MD09KDB8bCkmMD09KDB8Yyk/NjIzMzY6Y31lbHNlIGM9ayxNPTE4fXdo''@;'; put 'put ''aWxlKDApO2Rve2lmKDE4PT0oMHxNKSl7aWYoMD09KDB8bCkmJjQ2PT0oMHxmZVtjKzE+PjBdKSl7Yz02MjMzNjticmVha31jPTB9fXdoaWxlKDApO3JldHVybiBsZT1HLDB8Y30obCxjKSxhWzE5MDYxNisobDw8Mik+PjJdPWMsbD1jKTpsPTB8YVsxOTA2MTYrKGw8PDIpPj4yXSwwfCgwfGw/''@;'; put 'put ''bCs4fDA6MTUzNTYzKX1mdW5jdGlvbiB0MyhsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MCxtPTA7ZTpkb3tpZihmKXtmb3IoOyhwPTB8ZmVbbD4+MF0pPDwyND4+MjQ9PShtPTB8ZmVbYz4+MF0pPDwyND4+MjQ7KXtpZighKGY9ZistMXwwKSl7bD0wO2JyZWFrIGV9bD1sKzF8MCxjPWMr''@;'; put 'put ''MXwwfWw9KDI1NSZwKS0oMjU1Jm0pfDB9ZWxzZSBsPTB9d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiB5ZyhsLGMsZil7bHw9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsRD0wLFI9MCxHPTA7aWYoZnw9MCwwLHA9KGN8PTApKy0xfDAsKDB8Yyk8MilmZVsoRD1mKzc0fDApPj4w''@;'; put 'put ''XT0yNTUrKGs9MHxmZVtEPj4wXSl8ayxwP2w9MDpmZVtsPj4wXT0wO2Vsc2V7ZTpkb3tpZihwKXtmb3IoYj1mKzR8MCxrPWYrOHwwLGM9bDs7KXtpZihnbygwfGMsMHwobT0wfGFbYj4+Ml0pLDB8KEE9KEE9KHc9MD09KDB8KEE9MHxlUyhtLDEwLEc9KDB8YVtrPj4yXSktKFI9bSl8MCkpKSk/''@;'; put 'put ''RzoxLVIrQXwwKT4+PjA8cD4+PjA/QTpwKSksYVtiPj4yXT1tPSgwfGFbYj4+Ml0pK0F8MCxjPWMrQXwwLCEodyYwIT0oMHwoQT1wLUF8MCkpKSl7RD0xNzticmVhayBlfWlmKG0+Pj4wPj0oMHxhW2s+PjJdKT4+PjApe2lmKCgwfChwPTB8bUwoZikpKTwwKWJyZWFrO3c9cH1lbHNlIGFbYj4+''@;'; put 'put ''Ml09bSsxLHc9MHxYdFttPj4wXTtpZihwPUErLTF8MCxtPWMrMXwwLGZlW2M+PjBdPXcsISgwIT0oMHxwKSYxMCE9KDI1NSZ3fDApKSl7Yz1tLEQ9MTc7YnJlYWsgZX1jPW19KDB8YykhPSgwfGwpJiYwIT0oMTYmYVtmPj4yXXwwKT9EPTE3Omw9MH1lbHNlIGM9bCxEPTE3fXdoaWxlKDApOzE3''@;'; put 'put ''PT0oMHxEKSYmKGw/ZmVbYz4+MF09MDpsPTApfXJldHVybiAwfGx9ZnVuY3Rpb24gdFMobCxjKXt2YXIgZjtsfD0wLGY9MHxmZVsoY3w9MCk+PjBdO2Rve2lmKGY8PDI0Pj4yNClpZihsPTB8JHMobCxmPDwyND4+MjQpKXtpZigwfGZlW2MrMT4+MF0paWYoMHxmZVtsKzE+PjBdKXtpZighKDB8''@;'; put 'put ''ZmVbYysyPj4wXSkpe2w9MHx2Y2UobCxjKTticmVha31pZigwfGZlW2wrMj4+MF0pe2lmKCEoMHxmZVtjKzM+PjBdKSl7bD0wfEFjZShsLGMpO2JyZWFrfWlmKDB8ZmVbbCszPj4wXSl7aWYoMHxmZVtjKzQ+PjBdKXtsPTB8d2NlKGwsYyk7YnJlYWt9bD0wfHljZShsLGMpO2JyZWFrfWw9MH1l''@;'; put 'put ''bHNlIGw9MH1lbHNlIGw9MH1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gMHxsfWZ1bmN0aW9uIHZjZShsLGMpe3ZhciBtLGY9MCxwPTA7Zm9yKG09KDB8WHRbKGN8PTApPj4wXSk8PDh8MHxYdFtjKzE+PjBdLHA9MHxYdFsobHw9MCk+PjBdOyhmPTB8ZmVbKGM9bCsxfDApPj4wXSk8PDI0Pj4y''@;'; put 'put ''NCYmKDB8KHA9cDw8OCY2NTI4MHwyNTUmZikpIT0oMHxtKTspbD1jO3JldHVybiAwfChmPDwyND4+MjQ/bDowKX1mdW5jdGlvbiBBY2UobCxjKXt2YXIgcCxmPTA7aWYocD0oMHxYdFsxKyhjfD0wKT4+MF0pPDwxNnwoMHxYdFtjPj4wXSk8PDI0fCgwfFh0W2MrMj4+MF0pPDw4LCEoKDB8KGw9''@;'; put 'put ''KDB8WHRbMSsobHw9MCk+PjBdKTw8MTZ8KDB8WHRbbD4+MF0pPDwyNHwoMjU1JihjPTB8ZmVbKGY9bCsyfDApPj4wXSkpPDw4KSk9PSgwfHApfGM8PDI0Pj4yND09MCkpZG97bD0obHwyNTUmKGM9MHxmZVsoZj1mKzF8MCk+PjBdKSk8PDh9d2hpbGUoISgoMHxsKT09KDB8cCl8Yzw8MjQ+PjI0''@;'; put 'put ''PT0wKSk7cmV0dXJuIDB8KGM8PDI0Pj4yND9mKy0yfDA6MCl9ZnVuY3Rpb24geWNlKGwsYyl7dmFyIHAsZj0wO2lmKHA9KDB8WHRbMSsoY3w9MCk+PjBdKTw8MTZ8KDB8WHRbYz4+MF0pPDwyNHwoMHxYdFtjKzI+PjBdKTw8OHwwfFh0W2MrMz4+MF0sISgoZj0wfGZlWyhjPTMrKGx8PTApfDAp''@;'; put 'put ''Pj4wXSk8PDI0Pj4yND09MHwoMHwobD0oMHxYdFtsKzE+PjBdKTw8MTZ8KDB8WHRbbD4+MF0pPDwyNHwoMHxYdFtsKzI+PjBdKTw8OHwyNTUmZikpPT0oMHxwKSkpZG97bD1sPDw4fDI1NSYoZj0wfGZlWyhjPWMrMXwwKT4+MF0pfXdoaWxlKCEoZjw8MjQ+PjI0PT0wfCgwfGwpPT0oMHxwKSkp''@;'; put 'put ''O3JldHVybiAwfChmPDwyND4+MjQ/YystM3wwOjApfWZ1bmN0aW9uIHdjZShsLGMpe2x8PTAsY3w9MDt2YXIgYmUsT2UsTGUsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wO0xlPWxlLGxlPWxlKzEwNTZ8MCxPZT1MZSxhWyhiZT1MZSsx''@;'; put 'put ''MDI0fDApPj4yXT0wLGFbYmUrND4+Ml09MCxhW2JlKzg+PjJdPTAsYVtiZSsxMj4+Ml09MCxhW2JlKzE2Pj4yXT0wLGFbYmUrMjA+PjJdPTAsYVtiZSsyND4+Ml09MCxhW2JlKzI4Pj4yXT0wLGY9MHxmZVtjPj4wXTtlOmRve2lmKGY8PDI0Pj4yNCl7Z2U9MDtkb3tpZighKDB8ZmVbbCtnZT4+''@;'; put 'put ''MF0pKXtmPTA7YnJlYWsgZX1hWyhwZT1iZSsoKCgyNTUmZik+Pj41JjI1NSk8PDIpfDApPj4yXT1hW3BlPj4yXXwxPDwoMzEmZiksYVtPZSsoKDI1NSZmKTw8Mik+PjJdPWdlPWdlKzF8MCxmPTB8ZmVbYytnZT4+MF19d2hpbGUoZjw8MjQ+PjI0IT0wKTtpZihNPWdlPj4+MD4xKXtwPTAsaz0t''@;'; put 'put ''MSxtPTE7dDpmb3IoOzspe2ZvcihBPTEsZj1wOzspe3A9bTtuOmZvcig7Oyl7Zm9yKGI9MTs7KXtpZigobT0wfGZlW2MrKGIrayk+PjBdKTw8MjQ+PjI0IT0odz0wfGZlW2MrcD4+MF0pPDwyND4+MjQpYnJlYWsgbjtpZigoMHxiKT09KDB8QSkpYnJlYWs7aWYoKHA9KGI9YisxfDApK2Z8MCk+''@;'; put 'put ''Pj4wPj1nZT4+PjApe0Q9QSxmPWs7YnJlYWsgdH19aWYoKHA9MSsoZj1BK2Z8MCl8MCk+Pj4wPj1nZT4+PjApe0Q9QSxmPWs7YnJlYWsgdH19aWYoQT1wLWt8MCwoMjU1Jm0pPD0oMjU1JncpKWJyZWFrO2lmKChtPXArMXwwKT4+PjA+PWdlPj4+MCl7RD1BLGY9azticmVhayB0fWY9cH1pZigo''@;'; put 'put ''bT1mKzJ8MCk+Pj4wPj1nZT4+PjApe0Q9MTticmVha31wPWYrMXwwLGs9Zn1pZihNKWZvcihBPTAsTT0tMSx3PTE7Oyl7Zm9yKHA9MSxtPUE7Oyl7QT13O3Q6Zm9yKDs7KXtmb3Ioaz0xOzspe2lmKCh3PTB8ZmVbYysoaytNKT4+MF0pPDwyND4+MjQhPShiPTB8ZmVbYytBPj4wXSk8PDI0Pj4y''@;'; put 'put ''NClicmVhayB0O2lmKCgwfGspPT0oMHxwKSlicmVhaztpZigoQT0oaz1rKzF8MCkrbXwwKT4+PjA+PWdlPj4+MCl7dz1ELG09TSxBPTI2O2JyZWFrIGV9fWlmKChBPTErKG09cCttfDApfDApPj4+MD49Z2U+Pj4wKXt3PUQsbT1NLEE9MjY7YnJlYWsgZX19aWYocD1BLU18MCwoMjU1JncpPj0o''@;'; put 'put ''MjU1JmIpKWJyZWFrO2lmKCh3PUErMXwwKT4+PjA+PWdlPj4+MCl7dz1ELG09TSxBPTI2O2JyZWFrIGV9bT1BfWlmKCh3PW0rMnwwKT4+PjA+PWdlPj4+MCl7dz1ELHA9MSxBPTI2O2JyZWFrfUE9bSsxfDAsTT1tfWVsc2Ugdz1ELHA9MSxtPS0xLEE9MjZ9ZWxzZSB3PTEsZj0tMSxwPTEsbT0t''@;'; put 'put ''MSxBPTI2fWVsc2Ugdz0xLGY9LTEsZ2U9MCxwPTEsbT0tMSxBPTI2fXdoaWxlKDApO2U6ZG97aWYoMjY9PSgwfEEpKWZvcihxPShtKzF8MCk+Pj4wPihmKzF8MCk+Pj4wLHA9cT9wOncscT1xP206ZixwZT1xKzF8MCwwfHQzKGMsYytwfDAscGUpPyhwPWdlLXEtMXwwLEc9MCxwPShxPj4+MD5w''@;'; put 'put ''Pj4+MD9xOnApKzF8MCk6Rz1nZS1wfDAsaz02M3xnZSxNPWdlKy0xfDAsRD0wIT0oMHxHKSxSPWdlLXB8MCxmPWwsYj0wLG09bDs7KXtBPWY7ZG97aWYoKG0tQXwwKT4+PjA8Z2U+Pj4wKXtpZih3PTB8ZVMobSwwLGspKXtpZigody1BfDApPj4+MDxnZT4+PjApe2Y9MDticmVhayBlfWJyZWFr''@;'; put 'put ''fXc9bStrfDA7YnJlYWt9dz1tfXdoaWxlKDApO209MHxmZVtmK00+PjBdO3Q6ZG97aWYoMTw8KDMxJm0pJmFbYmUrKCgoMjU1Jm0pPj4+NSYyNTUpPDwyKT4+Ml0pe2lmKDB8KG09Z2UtKDB8YVtPZSsoKDI1NSZtKTw8Mik+PjJdKXwwKSl7QT0wLG09RCYwIT0oMHxiKSZtPj4+MDxwPj4+MD9S''@;'; put 'put ''Om07YnJlYWt9QT0wfGZlW2MrKG09cGU+Pj4wPmI+Pj4wP3BlOmIpPj4wXTtuOmRve2lmKEE8PDI0Pj4yNCl7Zm9yKDtBPDwyND4+MjQ9PSgwfGZlW2YrbT4+MF0pOylpZighKChBPTB8ZmVbYysobT1tKzF8MCk+PjBdKTw8MjQ+PjI0KSl7bT1wZTticmVhayBufUE9MCxtPW0tcXwwO2JyZWFr''@;'; put 'put ''IHR9bT1wZX13aGlsZSgwKTtmb3IoOzspe2lmKG0+Pj4wPD1iPj4+MClicmVhayBlO2lmKCgwfGZlW2MrKG09bSstMXwwKT4+MF0pIT0oMHxmZVtmK20+PjBdKSl7QT1HLG09cDticmVha319fWVsc2UgQT0wLG09Z2V9d2hpbGUoMCk7Zj1mK218MCxiPUEsbT13fX13aGlsZSgwKTtyZXR1cm4g''@;'; put 'put ''bGU9TGUsMHxmfWZ1bmN0aW9uIGV3KGwsYyxmKXtyZXR1cm4gZnVuY3Rpb24gYmNlKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wO209Y3w9MDtlOmRve2lmKDMmKG1ebCkpQT0xMTtlbHNle2lmKChwPTAhPSgwfGYpKSYwIT0oMyZtfDApKWRve2lmKGZlW2w+PjBdPW09MHxmZVtj''@;'; put 'put ''Pj4wXSwhKG08PDI0Pj4yNCkpYnJlYWsgZTtjPWMrMXwwLGw9bCsxfDAscD0wIT0oMHwoZj1mKy0xfDApKX13aGlsZShwJjAhPSgzJmN8MCkpO2lmKHApe2lmKDB8ZmVbYz4+MF0pe3Q6ZG97aWYoZj4+PjA+Mylmb3IocD1jOzspe2lmKCgtMjEzOTA2MjE0NCYoYz0wfGFbcD4+Ml0pXi0yMTM5''@;'; put 'put ''MDYyMTQ0KSZjKy0xNjg0MzAwOXwwKXtjPXA7YnJlYWsgdH1pZihhW2w+PjJdPWMsYz1wKzR8MCxsPWwrNHwwLCEoKGY9ZistNHwwKT4+PjA+MykpYnJlYWs7cD1jfX13aGlsZSgwKTtBPTExfX1lbHNlIGY9MH19d2hpbGUoMCk7ZTpkb3tpZigxMT09KDB8QSkpaWYoZilmb3IoOzspe2lmKGZl''@;'; put 'put ''W2w+PjBdPUE9MHxmZVtjPj4wXSwhKEE8PDI0Pj4yNCkpYnJlYWsgZTtpZihsPWwrMXwwLCEoZj1mKy0xfDApKXtmPTA7YnJlYWt9Yz1jKzF8MH1lbHNlIGY9MH13aGlsZSgwKTt1MigwfGwsMCwwfGYpfShsfD0wLGN8PTAsZnw9MCksMHxsfWZ1bmN0aW9uIF8kKGwsYyl7bHw9MCxjfD0wO3Zh''@;'; put 'put ''ciBwLG0sZj0wLEE9MDttPWxlLGxlPWxlKzMyfDAsYVsocD1tKT4+Ml09MCxhW3ArND4+Ml09MCxhW3ArOD4+Ml09MCxhW3ArMTI+PjJdPTAsYVtwKzE2Pj4yXT0wLGFbcCsyMD4+Ml09MCxhW3ArMjQ+PjJdPTAsYVtwKzI4Pj4yXT0wLGY9MHxmZVtjPj4wXTtkb3tpZihmPDwyND4+MjQpe2lm''@;'; put 'put ''KCEoMHxmZVtjKzE+PjBdKSl7Zm9yKGM9bDsoMHxmZVtjPj4wXSk9PWY8PDI0Pj4yNDspYz1jKzF8MDtjPWMtbHwwO2JyZWFrfWRve2FbKEE9cCsoKCgyNTUmZik+Pj41JjI1NSk8PDIpfDApPj4yXT1hW0E+PjJdfDE8PCgzMSZmKSxmPTB8ZmVbKGM9YysxfDApPj4wXX13aGlsZShmPDwyND4+''@;'; put 'put ''MjQhPTApO2Y9MHxmZVtsPj4wXTtlOmRve2lmKGY8PDI0Pj4yNCl7Yz1sO2Rve2lmKCEoYVtwKygoKDI1NSZmKT4+PjUmMjU1KTw8Mik+PjJdJjE8PCgzMSZmKSkpYnJlYWsgZTtmPTB8ZmVbKGM9YysxfDApPj4wXX13aGlsZShmPDwyND4+MjQhPTApfWVsc2UgYz1sfXdoaWxlKDApO2M9Yy1s''@;'; put 'put ''fDB9ZWxzZSBjPTB9d2hpbGUoMCk7cmV0dXJuIGxlPW0sMHxjfWZ1bmN0aW9uIG9vKGwsYyxmKXt2YXIgcCxtO3JldHVybiBsfD0wLGN8PTAscD1sZSxsZT1sZSsxNnwwLGFbKG09cCk+PjJdPWZ8PTAsZj0wfERqKGwsYyxtKSxsZT1wLDB8Zn1mdW5jdGlvbiBEaihsLGMsZil7cmV0dXJuIDB8''@;'; put 'put ''QUwobHw9MCwyMTQ3NDgzNjQ3LGN8PTAsZnw9MCl9ZnVuY3Rpb24geDEobCxjLGYscCl7bHw9MCxwfD0wO3ZhciBrLE0sRCxtPTAsQT0wLHc9MCxiPTAsUj0wO0Q9bGUsbGU9bGUrMjA4fDAsaz1EKzh8MCxNPUQsdz0wfEFyKGZ8PTAsY3w9MCksYVsoYj1NKT4+Ml09MSxhW2IrND4+Ml09MDtl''@;'; put 'put ''OmRve2lmKDB8dyl7Zm9yKGI9MC1mfDAsYVtrKzQ+PjJdPWYsYVtrPj4yXT1mLG09MixjPWYsQT1mO2FbaysobTw8Mik+PjJdPWM9YytmK0F8MCxjPj4+MDx3Pj4+MDspUj1BLG09bSsxfDAsQT1jLGM9UjtpZigoQT1sK3crYnwwKT4+PjA+bD4+PjApe3c9QSxtPTEsYz0xO2Rve2Rve2lmKDMh''@;'; put 'put ''PSgzJmN8MCkpe2lmKCgwfGFbaysoKGM9bSstMXwwKTw8Mik+PjJdKT4+PjA8KHctbHwwKT4+PjA/d0wobCxmLHAsbSxrKTpfTChsLGYscCxNLG0sMCxrKSwxPT0oMHxtKSl7Q0woTSwxKSxtPTA7YnJlYWt9Q0woTSxjKSxtPTE7YnJlYWt9d0wobCxmLHAsbSxrKSxiTChNLDIpLG09bSsyfDB9''@;'; put 'put ''d2hpbGUoMCk7YVtNPj4yXT1jPTF8YVtNPj4yXSxsPWwrZnwwfXdoaWxlKGw+Pj4wPEE+Pj4wKX1lbHNlIG09MSxjPTE7Zm9yKF9MKGwsZixwLE0sbSwwLGspLEE9TSs0fDA7Oyl7aWYoMT09KDB8bSkmMT09KDB8Yykpe2lmKCEoMHxhW0E+PjJdKSlicmVhayBlfWVsc2UgaWYoKDB8bSk+PTIp''@;'; put 'put ''e0NMKE0sMiksUj1tKy0yfDAsYVtNPj4yXT03XmFbTT4+Ml0sYkwoTSwxKSxfTChsKygwLSgwfGFbaysoUjw8Mik+PjJdKSkrYnwwLGYscCxNLG0rLTF8MCwxLGspLENMKE0sMSksYVtNPj4yXT1jPTF8YVtNPj4yXSxfTCh3PWwrYnwwLGYscCxNLFIsMSxrKSxsPXcsbT1SO2NvbnRpbnVlfWJM''@;'; put 'put ''KE0sYz0wfEMkKE0pKSxsPWwrYnwwLG09YyttfDAsYz0wfGFbTT4+Ml19fX13aGlsZSgwKTtsZT1EfWZ1bmN0aW9uIHdMKGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgRCxSLEE9MCx3PTAsYj0wLGs9MCxNPTA7Uj1sZSxsZT1sZSsyNDB8MCxhWyhEPVIpPj4yXT1sfD0wO2U6''@;'; put 'put ''ZG97aWYoKDB8cCk+MSlmb3IoTT0wLWN8MCxBPWwsaz1wLHA9MTs7KXtpZigoMHxCaVsxMjcmZl0obCxBPSh3PUErTXwwKSsoMC0oMHxhW20rKChiPWsrLTJ8MCk8PDIpPj4yXSkpfDApKT4tMSYmKDB8QmlbMTI3JmZdKGwsdykpPi0xKWJyZWFrIGU7aWYobD1wKzF8MCxwPUQrKHA8PDIpfDAs''@;'; put 'put ''KDB8QmlbMTI3JmZdKEEsdykpPi0xPyhhW3A+PjJdPUEscD1rKy0xfDApOihhW3A+PjJdPXcsQT13LHA9YiksKDB8cCk8PTEpe3A9bDticmVhayBlfWs9cCxwPWwsbD0wfGFbRD4+Ml19ZWxzZSBwPTF9d2hpbGUoMCk7UyQoYyxELHApLGxlPVJ9ZnVuY3Rpb24gYkwobCxjKXt2YXIgbSxmPTAs''@;'; put 'put ''cD0wO209NCsobHw9MCl8MCwoY3w9MCk+Pj4wPjMxPyhhW2w+PjJdPXA9MHxhW20+PjJdLGFbbT4+Ml09MCxjPWMrLTMyfDAsZj0wKTooZj0wfGFbbT4+Ml0scD0wfGFbbD4+Ml0pLGFbbD4+Ml09Zjw8MzItY3xwPj4+YyxhW20+PjJdPWY+Pj5jfWZ1bmN0aW9uIF9MKGwsYyxmLHAsbSxBLHcp''@;'; put 'put ''e2x8PTAsY3w9MCxmfD0wLG18PTAsQXw9MCx3fD0wO3ZhciBNLFIsRyxxLGI9MCxrPTAsRD0wLHBlPTA7cT1sZSxsZT1sZSsyNDB8MCxHPXEsYVsoUj1xKzIzMnwwKT4+Ml09cGU9MHxhWyhwfD0wKT4+Ml0sYVsoTT1SKzR8MCk+PjJdPWs9MHxhW3ArND4+Ml0sYVtHPj4yXT1sO2U6ZG97aWYo''@;'; put 'put ''MSE9KDB8cGUpfDAhPSgwfGspJiYoRD0wLWN8MCxiPWwrKDAtKDB8YVt3KyhtPDwyKT4+Ml0pKXwwLCgwfEJpWzEyNyZmXShiLGwpKT49MSkpZm9yKHA9MSxBPTA9PSgwfEEpLGs9Yjs7KXtpZihBJigwfG0pPjEpe2lmKGI9MHxhW3crKG0rLTI8PDIpPj4yXSwoMHxCaVsxMjcmZl0oQT1sK0R8''@;'; put 'put ''MCxrKSk+LTEpe2I9MTA7YnJlYWsgZX1pZigoMHxCaVsxMjcmZl0oQSsoMC1iKXwwLGspKT4tMSl7Yj0xMDticmVhayBlfX1pZihBPXArMXwwLGFbRysocDw8Mik+PjJdPWssYkwoUixwZT0wfEMkKFIpKSxtPXBlK218MCwhKDEhPSgwfGFbUj4+Ml0pfDAhPSgwfGFbTT4+Ml0pKSl7cD1BLGw9''@;'; put 'put ''ayxiPTEwO2JyZWFrIGV9aWYoKDB8QmlbMTI3JmZdKGw9aysoMC0oMHxhW3crKG08PDIpPj4yXSkpfDAsMHxhW0c+PjJdKSk8MSl7bD1rLHA9QSxBPTAsYj05O2JyZWFrfXBlPWsscD1BLEE9MSxrPWwsbD1wZX1lbHNlIHA9MSxiPTl9d2hpbGUoMCk7OT09KDB8YikmJjA9PSgwfEEpJiYoYj0x''@;'; put 'put ''MCksMTA9PSgwfGIpJiYoUyQoYyxHLHApLHdMKGwsYyxmLG0sdykpLGxlPXF9ZnVuY3Rpb24gQ0wobCxjKXt2YXIgbSxmPTAscD0wO209NCsobHw9MCl8MCwoY3w9MCk+Pj4wPjMxPyhhW20+PjJdPXA9MHxhW2w+PjJdLGFbbD4+Ml09MCxjPWMrLTMyfDAsZj0wKTooZj0wfGFbbD4+Ml0scD0w''@;'; put 'put ''fGFbbT4+Ml0pLGFbbT4+Ml09Zj4+PigzMi1jfDApfHA8PGMsYVtsPj4yXT1mPDxjfWZ1bmN0aW9uIEMkKGwpe3ZhciBjPTA7cmV0dXJuKGM9MHxrJCgoMHxhWyhsfD0wKT4+Ml0pLTF8MCkpPzB8YzowfCgwPT0oMHwoYz0wfGskKDB8YVtsKzQ+PjJdKSkpPzA6YyszMnwwKX1mdW5jdGlvbiBr''@;'; put 'put ''JChsKXt2YXIgYz0wO2lmKGx8PTApaWYoMSZsKWw9MDtlbHNle2M9bCxsPTA7ZG97bD1sKzF8MCxjPj4+PTF9d2hpbGUoISgxJmN8MCkpfWVsc2UgbD0zMjtyZXR1cm4gMHxsfWZ1bmN0aW9uIFMkKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgdyxwPTAsbT0wLEE9MCxiPTA7dz1sZSxsZT1s''@;'; put 'put ''ZSsyNTZ8MCxwPXc7ZTpkb3tpZigoMHxmKT49MiYmKEE9YysoZjw8Mil8MCxhW0E+PjJdPXAsMHxsKSlmb3IoOzspe2dvKDB8cCwwfGFbYz4+Ml0sMHwobT1sPj4+MDwyNTY/bDoyNTYpKSxwPTA7ZG97Z28oMHxhWyhiPWMrKHA8PDIpfDApPj4yXSwwfGFbYysoKHA9cCsxfDApPDwyKT4+Ml0s''@;'; put 'put ''MHxtKSxhW2I+PjJdPSgwfGFbYj4+Ml0pK219d2hpbGUoKDB8cCkhPSgwfGYpKTtpZighKGw9bC1tfDApKWJyZWFrIGU7cD0wfGFbQT4+Ml19fXdoaWxlKDApO2xlPXd9ZnVuY3Rpb24gVDAobCxjLGYpe3ZhciBwLG07cmV0dXJuIGx8PTAsY3w9MCxwPWxlLGxlPWxlKzE2fDAsYVsobT1wKT4+''@;'; put 'put ''Ml09Znw9MCxmPTB8eUwobCxjLG0pLGxlPXAsMHxmfWZ1bmN0aW9uIENjZShsKXtsfD0wO3ZhciBwLGM9MCxmPTA7Zm9yKHA9bGUsbGU9bGUrMTZ8MCxOTSgwLDB8KGY9cCkpLGM9MCxmPTY1NTM3KigwfGFbZis0Pj4yXSleKGY+Pj40KStsO2ZlW2wrYz4+MF09NjUrKDE1JmYpfGY8PDEmMzIs''@;'; put 'put ''NiE9KDB8KGM9YysxfDApKTspZj4+Pj01O3JldHVybiBsZT1wLDB8bH1mdW5jdGlvbiBrTChsLGMsZil7cmV0dXJuIDB8ZiQobHw9MCxjfD0wLGZ8PTAsLTIxNDc0ODM2NDgsMCl9ZnVuY3Rpb24gTGoobCxjKXtsfD0wO3ZhciBwLEEsZj0wLG09MCx3PTA7QT1sZSxsZT1sZSszMnwwLHA9QSxm''@;'; put 'put ''PTB8ZmVbKGN8PTApPj4wXTtlOmRve2lmKGY8PDI0Pj4yNCE9MCYmMCE9KDB8ZmVbYysxPj4wXSkpe2FbcD4+Ml09MCxhW3ArND4+Ml09MCxhW3ArOD4+Ml09MCxhW3ArMTI+PjJdPTAsYVtwKzE2Pj4yXT0wLGFbcCsyMD4+Ml09MCxhW3ArMjQ+PjJdPTAsYVtwKzI4Pj4yXT0wO2Rve2FbKHc9''@;'; put 'put ''cCsoKCgyNTUmZik+Pj41JjI1NSk8PDIpfDApPj4yXT1hW3c+PjJdfDE8PCgzMSZmKSxmPTB8ZmVbKGM9YysxfDApPj4wXX13aGlsZShmPDwyND4+MjQhPTApO2lmKChmPTB8ZmVbbD4+MF0pPDwyND4+MjQpe2M9bDtkb3tpZihhW3ArKCgoMjU1JmYpPj4+NSYyNTUpPDwyKT4+Ml0mMTw8KDMx''@;'; put 'put ''JmYpfDApYnJlYWsgZTtmPTB8ZmVbKGM9YysxfDApPj4wXX13aGlsZShmPDwyND4+MjQhPTApfWVsc2UgYz1sfWVsc2UgbT0zfXdoaWxlKDApO3JldHVybiAzPT0oMHxtKSYmKGM9MHxwTChsLGY8PDI0Pj4yNCkpLGxlPUEsYy1sfDB9ZnVuY3Rpb24gbHYobCxjKXtjfD0wO3ZhciBmPTA7KGx8''@;'; put 'put ''PTApfHwobD0wfGFbNDc2NjZdKT9mPTM6bD0wO2Rve2lmKDM9PSgwfGYpKXtpZihsPWwrKDB8XyQobCxjKSl8MCwhKDB8ZmVbbD4+MF0pKXthWzQ3NjY2XT0wLGw9MDticmVha31pZihjPWwrKDB8TGoobCxjKSl8MCxhWzQ3NjY2XT1jLDB8ZmVbYz4+MF0pe2FbNDc2NjZdPWMrMSxmZVtjPj4w''@;'; put 'put ''XT0wO2JyZWFrfWFbNDc2NjZdPTA7YnJlYWt9fXdoaWxlKDApO3JldHVybiAwfGx9ZnVuY3Rpb24gT2oobCxjLGYpe2N8PTAsZnw9MDt2YXIgcD0wOyhsfD0wKXx8KGw9MHxhW2Y+PjJdKT9wPTM6bD0wO2Rve2lmKDM9PSgwfHApKXtpZihsPWwrKDB8XyQobCxjKSl8MCwhKDB8ZmVbbD4+MF0p''@;'; put 'put ''KXthW2Y+PjJdPTAsbD0wO2JyZWFrfWlmKGM9bCsoMHxMaihsLGMpKXwwLGFbZj4+Ml09YywwfGZlW2M+PjBdKXthW2Y+PjJdPWMrMSxmZVtjPj4wXT0wO2JyZWFrfWFbZj4+Ml09MDticmVha319d2hpbGUoMCk7cmV0dXJuIDB8bH1mdW5jdGlvbiByYShsKXt2YXIgZixjPTA7cmV0dXJuKGM9''@;'; put 'put ''MHxGMChmPTErKDB8VW8obHw9MCkpfDApKT9nbygwfGMsMHxsLDB8Zik6Yz0wLDB8Y31mdW5jdGlvbiBNJChsLGMpe3JldHVybiAwfGZ1bmN0aW9uIGtjZShsLGMsZil7dmFyIHA7bHw9MCxmfD0wLHA9MjU1JihjfD0wKTtkb3tpZighZil7Yz0wO2JyZWFrfWM9bCsoZj1mKy0xfDApfDB9d2hp''@;'; put 'put ''bGUoKDB8ZmVbYz4+MF0pIT1wPDwyND4+MjQpO3JldHVybiAwfGN9KGx8PTAsY3w9MCwxKygwfFVvKGwpKXwwKX1mdW5jdGlvbiBzdihsLGMpe3JldHVybiBjfD0wLHJkKChsfD0wKSsoMHxVbyhsKSl8MCxjKSwwfGx9ZnVuY3Rpb24gRSQobCl7cmV0dXJuIDB8KDB8YVsobHw9MCk+PjJdKT4+''@;'; put 'put ''PjQmMX1mdW5jdGlvbiB0dyhsKXt2YXIgQSxjPTAsZj0wLHA9MDtyZXR1cm4gMCxmdW5jdGlvbiBNY2UobCl7dmFyIGM9MDswfGFbNjgrKGx8PTApPj4yXSYmKGM9MHxhW2wrMTE2Pj4yXSxsPWwrMTEyfDAsMHxjJiYoYVtjKzExMj4+Ml09YVtsPj4yXSksbD0obD0wfGFbbD4+Ml0pP2wrMTE2''@;'; put 'put ''fDA6NjMyMDgsYVtsPj4yXT1jKX0obHw9MCksKEE9MCE9KDEmYVtsPj4yXXwwKSl8fChwPTB8UmooKSxjPWwrNTZ8MCwwfChmPTB8YVtsKzUyPj4yXSkmJihhW2YrNTY+PjJdPWFbYz4+Ml0pLDB8KGM9MHxhW2M+PjJdKSYmKGFbYys1Mj4+Ml09ZiksKDB8YVtwPj4yXSk9PSgwfGwpJiYoYVtw''@;'; put 'put ''Pj4yXT1jKSxCaigpKSxjPTB8U0wobCksYz0wfF9vWzYzJmFbbCsxMj4+Ml1dKGwpfGMsMHwoZj0wfGFbbCs5Mj4+Ml0pJiZGdChmKSxBfHxGdChsKSwwfGN9ZnVuY3Rpb24gUmooKXtyZXR1cm4gJHAoMTkwNjY4KSwxOTA2NzZ9ZnVuY3Rpb24gQmooKXtyNigxOTA2NjgpfWZ1bmN0aW9uIFNM''@;'; put 'put ''KGwpe2x8PTA7dmFyIGM9MDtkb3tpZihsKXtpZigoMHxhW2wrNzY+PjJdKTw9LTEpe2M9MHxQaihsKTticmVha30hMCxjPTB8UGoobCl9ZWxzZXtpZihjPTB8YVsxNTcxMV0/MHxTTCgwfGFbMTU3MTFdKTowLGw9MHxhWygwfFJqKCkpPj4yXSlkb3swLCgwfGFbbCsyMD4+Ml0pPj4+MD4oMHxh''@;'; put 'put ''W2wrMjg+PjJdKT4+PjAmJihjPTB8UGoobCl8YyksbD0wfGFbbCs1Nj4+Ml19d2hpbGUoMCE9KDB8bCkpO0JqKCl9fXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gUGoobCl7dmFyIGMsdyxmPTAscD0wLG09MCxBPTA7cmV0dXJuKDB8YVsoYz0yMCsobHw9MCl8MCk+PjJdKT4+PjA+KDB8''@;'; put 'put ''YVsodz1sKzI4fDApPj4yXSk+Pj4wJiYobWlbNjMmYVtsKzM2Pj4yXV0obCwwLDApLDA9PSgwfGFbYz4+Ml0pKT9sPS0xOigocD0wfGFbKGY9bCs0fDApPj4yXSk+Pj4wPChBPTB8YVsobT1sKzh8MCk+PjJdKT4+PjAmJm1pWzYzJmFbbCs0MD4+Ml1dKGwscC1BfDAsMSksYVtsKzE2Pj4yXT0w''@;'; put 'put ''LGFbdz4+Ml09MCxhW2M+PjJdPTAsYVttPj4yXT0wLGFbZj4+Ml09MCxsPTApLDB8bH1mdW5jdGlvbiB4JChsLGMpe2x8PTA7dmFyIG0sYixrLE0sRCxSLGY9MCxwPTAsQT0wLHc9MDtpZihSPWxlLGxlPWxlKzY0fDAsRD1SKzQwfDAsaz1SKzI0fDAsYj1SKzE2fDAsbT1SLE09Uis1NnwwLDB8''@;'; put 'put ''ZVMoMTUzNTgwLChwPTB8ZmVbKGN8PTApPj4wXSk8PDI0Pj4yNCw0KSlpZihmPTB8RjAoMTE1Nikpe3c9KEE9ZikrMTI0fDA7ZG97YVtBPj4yXT0wLEE9QSs0fDB9d2hpbGUoKDB8QSk8KDB8dykpOzB8JHMoYyw0Myl8fChhW2Y+PjJdPXA8PDI0Pj4yND09MTE0Pzg6NCksMHwkcyhjLDEwMSkm''@;'; put 'put ''JihhW20+PjJdPWwsYVttKzQ+PjJdPTIsYVttKzg+PjJdPTEsYmQoMjIxLDB8bSkscD0wfGZlW2M+PjBdKSxwPDwyND4+MjQ9PTk3PyhhW2I+PjJdPWwsYVtiKzQ+PjJdPTMsMTAyNCYocD0wfGJkKDIyMSwwfGIpKXx8KGFbaz4+Ml09bCxhW2srND4+Ml09NCxhW2srOD4+Ml09MTAyNHxwLGJk''@;'; put 'put ''KDIyMSwwfGspKSxhW2Y+PjJdPWM9MTI4fGFbZj4+Ml0pOmM9MHxhW2Y+PjJdLGFbZis2MD4+Ml09bCxhW2YrNDQ+PjJdPWYrMTMyLGFbZis0OD4+Ml09MTAyNCxmZVsocD1mKzc1fDApPj4wXT0tMSwwPT0oOCZjfDApJiYoYVtEPj4yXT1sLGFbRCs0Pj4yXT0yMTUyMyxhW0QrOD4+Ml09TSww''@;'; put 'put ''PT0oMHxuNig1NCwwfEQpKSkmJihmZVtwPj4wXT0xMCksYVtmKzMyPj4yXT0xNSxhW2YrMzY+PjJdPTE4LGFbZis0MD4+Ml09MTYsYVtmKzEyPj4yXT0xNywwfGFbNDc2NDVdfHwoYVtmKzc2Pj4yXT0tMSksZnVuY3Rpb24geGNlKGwpe2x8PTA7dmFyIGMsZjtjPTB8UmooKSxhW2wrNTY+PjJd''@;'; put 'put ''PWFbYz4+Ml0sMHwoZj0wfGFbYz4+Ml0pJiYoYVtmKzUyPj4yXT1sKSxhW2M+PjJdPWwsQmooKX0oZil9ZWxzZSBmPTA7ZWxzZSBhWzQ3NjQzXT0yMixmPTA7cmV0dXJuIGxlPVIsMHxmfWZ1bmN0aW9uIGM4KGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgdyxwPTAsbT0wLEE9MDt3PWxlLGxl''@;'; put 'put ''PWxlKzE2fDAscD13O2U6ZG97aWYoYyl7ZG97aWYoMHxmKXtpZihBPTA9PSgwfGwpP3A6bCwobD0wfGZlW2M+PjBdKTw8MjQ+PjI0Pi0xKXthW0E+PjJdPTI1NSZsLGw9bDw8MjQ+PjI0IT0wJjE7YnJlYWsgZX1pZihsPTB8ZmVbYz4+MF0sbT0wPT0oMHxhW2FbMTU3OTFdPj4yXSkpe2FbQT4+''@;'; put 'put ''Ml09bDw8MjQ+PjI0JjU3MzQzLGw9MTticmVhayBlfWlmKChsPSgyNTUmbCktMTk0fDApPj4+MDw9NTApe2lmKHA9YysxfDAsbT0wfGFbNjIzODQrKGw8PDIpPj4yXSxmPj4+MDw0JiZtJi0yMTQ3NDgzNjQ4Pj4+KCg2KmZ8MCktNnwwKXwwKWJyZWFrO2lmKCgoZj0obD0wfFh0W3A+PjBdKT4+''@;'; put 'put ''PjMpLTE2fGYrKG0+PjI2KSk+Pj4wPD03KXtpZigoMHwobD1sKy0xMjh8bTw8NikpPj0wKXthW0E+PjJdPWwsbD0yO2JyZWFrIGV9aWYoKHA9KDB8WHRbYysyPj4wXSktMTI4fDApPj4+MDw9NjMpe2lmKCgwfChwfD1sPDw2KSk+PTApe2FbQT4+Ml09cCxsPTM7YnJlYWsgZX1pZigobD0oMHxY''@;'; put 'put ''dFtjKzM+PjBdKS0xMjh8MCk+Pj4wPD02Myl7YVtBPj4yXT1sfHA8PDYsbD00O2JyZWFrIGV9fX19fX13aGlsZSgwKTthWzQ3NjQzXT04NCxsPS0xfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiBsZT13LDB8bH1mdW5jdGlvbiBfdShsLGMpe3ZhciBmO3JldHVybiBjfD0wLCgoMHxDdShsfD0w''@;'; put 'put ''LDEsZj0wfFVvKGwpLGMpKSE9KDB8ZikpPDwzMT4+MzF8MH1mdW5jdGlvbiBDdShsLGMsZixwKXtsfD0wLHB8PTA7dmFyIG07cmV0dXJuIG09MHxBcihmfD0wLGN8PTApLGY9MD09KDB8Yyk/MDpmLCgwfGFbcCs3Nj4+Ml0pPi0xPyghMCxsPTB8VGoobCxtLHApKTpsPTB8VGoobCxtLHApLCgw''@;'; put 'put ''fGwpIT0oMHxtKSYmKGY9KGw+Pj4wKS8oYz4+PjApfDApLDB8Zn1mdW5jdGlvbiBGaihsLGMpe2x8PTA7dmFyIHcsYixrLGY9MCxwPTAsbT0wLEE9MDtrPWxlLGxlPWxlKzE2fDAsZmVbKHc9ayk+PjBdPWI9MjU1JihjfD0wKSwobT0wfGFbKHA9bCsxNnwwKT4+Ml0pP0E9NDowfHckKGwpP2Y9''@;'; put 'put ''LTE6KG09MHxhW3A+PjJdLEE9NCk7ZG97aWYoND09KDB8QSkpe2lmKChwPTB8YVsoQT1sKzIwfDApPj4yXSk+Pj4wPG0+Pj4wJiYoMHwoZj0yNTUmYykpIT0oMHxmZVtsKzc1Pj4wXSkpe2FbQT4+Ml09cCsxLGZlW3A+PjBdPWI7YnJlYWt9Zj0xPT0oMHxtaVs2MyZhW2wrMzY+PjJdXShsLHcs''@;'; put 'put ''MSkpPzB8WHRbdz4+MF06LTF9fXdoaWxlKDApO3JldHVybiBsZT1rLDB8Zn1mdW5jdGlvbiBJY2UobCxjLGYpe3ZhciBwLG07cmV0dXJuIGN8PTAsZnw9MCxwPWxlLGxlPWxlKzE2fDAsYVsobT1wKT4+Ml09bHw9MCxhW20rND4+Ml09YyxhW20rOD4+Ml09ZixmPTB8dWgoMHx2OSgzLDB8bSkp''@;'; put 'put ''LGxlPXAsMHxmfWZ1bmN0aW9uIEhqKCl7dmFyIGwsYztyZXR1cm4gYz1sZSxsZT1sZSsxNnwwLGw9MHxzYigyMCwwfGMpLGxlPWMsMHxsfWZ1bmN0aW9uIFQkKGwsYyl7Y3w9MDt2YXIgcCxtLEEsZj0wO3JldHVybiBBPWxlLGxlPWxlKzQ4fDAsbT1BKzQwfDAscD1BKzh8MCxhWyhmPUEpPj4y''@;'; put 'put ''XT1sfD0wLGFbZis0Pj4yXT1jLC05PT0oMHwoZj0wfEdmKDE5NywwfGYpKSkmJihhW3A+PjJdPWwsYVtwKzQ+PjJdPTEsKDB8YmQoMjIxLDB8cCkpPj0wKT8oZnVuY3Rpb24gRGNlKGwsYyl7Y3w9MDt2YXIgbSxmPTAscD0wO3A9MTUzNTY1LG09MTUrKGY9bHw9MCl8MDtkb3tmZVtmPj4wXT0w''@;'; put 'put ''fGZlW3A+PjBdLGY9ZisxfDAscD1wKzF8MH13aGlsZSgoMHxmKTwoMHxtKSk7aWYoYyl7Zm9yKHA9YyxmPTE0O2Y9ZisxfDAsIShwPj4+MDwxMCk7KXA9KHA+Pj4wKS8xMHwwO2ZvcihmZVtsK2Y+PjBdPTA7ZmVbbCsoZj1mKy0xfDApPj4wXT00OHwoYz4+PjApJTEwLCEoYz4+PjA8MTApOylj''@;'; put 'put ''PShjPj4+MCkvMTB8MH1lbHNlIGZlW2wrMTQ+PjBdPTQ4LGZlW2wrMTU+PjBdPTB9KHAsbCksYVttPj4yXT1wLGFbbSs0Pj4yXT1jLGM9MHx1aCgwfEFjKDE5NSwwfG0pKSk6Yz0wfHVoKGYpLGxlPUEsMHxjfWZ1bmN0aW9uIExjZShsLGMpe3ZhciBmLHA7cmV0dXJuIGN8PTAsZj1sZSxsZT1s''@;'; put 'put ''ZSsxNnwwLGFbKHA9Zik+PjJdPWx8PTAsYVtwKzQ+PjJdPWMsYz0wfHVoKDB8dG0oMzMsMHxwKSksbGU9ZiwwfGN9ZnVuY3Rpb24gblMobCxjKXtsfD0wO3ZhciBtLEEsdyxmPTAscD0wO3JldHVybiB3PWxlLGxlPWxlKzQ4fDAsQT13KzMyfDAsbT13KzE2fDAsZj13LDB8ZVMoMTUzNTgwLDB8''@;'; put 'put ''ZmVbKGN8PTApPj4wXSw0KT8ocD0wfGZ1bmN0aW9uIE9jZShsKXt2YXIgYyxmPTA7cmV0dXJuIGY9MD09KDB8JHMobHw9MCw0MykpLGM9MHxmZVtsPj4wXSxmPWY/Yzw8MjQ+PjI0IT0xMTQmMToyLGY9MD09KDB8JHMobCwxMjApKT9mOjEyOHxmLGw9KGw9MD09KDB8JHMobCwxMDEpKSk/Zjo1''@;'; put 'put ''MjQyODh8ZixsPWM8PDI0Pj4yND09MTE0P2w6NjR8bCxsPWM8PDI0Pj4yND09MTE5PzUxMnxsOmwsMHwoYzw8MjQ+PjI0PT05Nz8xMDI0fGw6bCl9KGMpLGFbZj4+Ml09bCxhW2YrND4+Ml09MzI3Njh8cCxhW2YrOD4+Ml09NDM4LCgwfChmPTB8dWgoMHxCOCg1LDB8ZikpKSk+PTA/KDUyNDI4''@;'; put 'put ''OCZwfDAmJihhW20+PjJdPWYsYVttKzQ+PjJdPTIsYVttKzg+PjJdPTEsYmQoMjIxLDB8bSkpLChsPTB8eCQoZixjKSl8fChhW0E+PjJdPWYsSnUoNiwwfEEpLGw9MCkpOmw9MCk6KGFbNDc2NDNdPTIyLGw9MCksbGU9dywwfGx9ZnVuY3Rpb24gaWwobCxjLGYpe3ZhciBwLG07cmV0dXJuIGx8''@;'; put 'put ''PTAsY3w9MCxwPWxlLGxlPWxlKzE2fDAsYVsobT1wKT4+Ml09Znw9MCxmPTB8ZnVuY3Rpb24gUmNlKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcCxBLG09MCx3PTA7QT1sZSxsZT1sZSsxMjh8MCx3PShtPXA9QSkrMTI0fDA7ZG97YVttPj4yXT0wLG09bSs0fDB9d2hpbGUoKDB8bSk8KDB8''@;'; put 'put ''dykpO3JldHVybiBhW3ArMzI+PjJdPTQxLGFbcCs0ND4+Ml09bCxhW3ArNzY+PjJdPS0xLGFbcCs4ND4+Ml09bCx3PTB8ZnVuY3Rpb24gUGNlKGwsYyxmKXtmfD0wO3ZhciBzdCxFdCxadCxjdCxTbixwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9''@;'; put 'put ''MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTAsV2U9MCxhdD0wLFN0PTAsa3Q9MCxidD0wO1NuPWxlLGxlPWxlKzI4OHwwLHN0PVNuKzh8MCxFdD1TbisxN3wwLFp0PVNuLGN0PVNuKzE2fDAsbHw9MCxwPTB8ZmVbKGN8PTApPj4wXTtlOmRve2lmKHA8PDI0Pj4yNCl7''@;'; put 'put ''SGU9bCs0fDAsVmU9bCsxMDB8MCxxZT1sKzEwOHwwLHJ0PWwrOHwwLFdlPUV0KzEwfDAsYXQ9RXQrMzN8MCxSZT1zdCs0fDAsU3Q9RXQrMXwwLGt0PUV0KzF8MCx3PWMscT0wLGM9MCxBPTAsbT0wO3Q6Zm9yKDs7KXtuOmRve2lmKDB8JGMoMjU1JnApKXtmb3IoOzB8JGMoMHxYdFsocD13KzF8''@;'; put 'put ''MCk+PjBdKTspdz1wO2NoKGwsMCk7ZG97KHA9MHxhW0hlPj4yXSk+Pj4wPCgwfGFbVmU+PjJdKT4+PjA/KGFbSGU+PjJdPXArMSxwPTB8WHRbcD4+MF0pOnA9MHxJbChsKX13aGlsZSgwIT0oMHwkYyhwKSkpOzB8YVtWZT4+Ml0/YVtIZT4+Ml09cD0oMHxhW0hlPj4yXSktMXwwOnA9MHxhW0hl''@;'; put 'put ''Pj4yXSxiPSgwfGFbcWU+PjJdKStxK3AtKDB8YVtydD4+Ml0pfDB9ZWxzZXtwPXA8PDI0Pj4yND09Mzc7cjpkb3tpZihwKXtiPTB8ZmVbKE09dysxfDApPj4wXTtpOmRve3N3aXRjaChiPDwyND4+MjQpe2Nhc2UgMzc6YnJlYWsgcjtjYXNlIDQyOkxlPTAsdz13KzJ8MDticmVhaztkZWZhdWx0''@;'; put 'put ''OmlmKChwPSgyNTUmYiktNDh8MCk+Pj4wPDEwJiYzNj09KDB8ZmVbdysyPj4wXSkpe0xlPTB8RmNlKGYscCksdz13KzN8MDticmVhayBpfUxlPTB8YVsodz0zKygwfGFbZj4+Ml0pJi00KT4+Ml0sYVtmPj4yXT13KzQsdz1NfX13aGlsZSgwKTtpZigoKGI9MjU1JihwPTB8ZmVbdz4+MF0pKS00''@;'; put 'put ''OHwwKT4+PjA8MTApe009MDtkb3tNPSgxMCpNfDApLTQ4K2J8MCxiPTI1NSYocD0wfGZlWyh3PXcrMXwwKT4+MF0pfXdoaWxlKChiKy00OHwwKT4+PjA8MTApfWVsc2UgTT0wO3N3aXRjaChBPShwPXA8PDI0Pj4yND09MTA5KT8wOkEsbT1wPzA6bSx3PXA/dysxfDA6dyxwJj1PZT0wIT0oMHxM''@;'; put 'put ''ZSksYj13KzF8MCwwfGZlW3c+PjBdKXtjYXNlIDEwNDpEPShiZT0xMDQ9PSgwfGZlW2I+PjBdKSk/LTI6LTEsdz1iZT93KzJ8MDpiO2JyZWFrO2Nhc2UgMTA4OkQ9KGJlPTEwOD09KDB8ZmVbYj4+MF0pKT8zOjEsdz1iZT93KzJ8MDpiO2JyZWFrO2Nhc2UgMTA2OkQ9Myx3PWI7YnJlYWs7Y2Fz''@;'; put 'put ''ZSAxMTY6Y2FzZSAxMjI6RD0xLHc9YjticmVhaztjYXNlIDc2OkQ9Mix3PWI7YnJlYWs7Y2FzZSAxMTA6Y2FzZSAxMTI6Y2FzZSA2NzpjYXNlIDgzOmNhc2UgOTE6Y2FzZSA5OTpjYXNlIDExNTpjYXNlIDg4OmNhc2UgNzE6Y2FzZSA3MDpjYXNlIDY5OmNhc2UgNjU6Y2FzZSAxMDM6Y2FzZSAx''@;'; put 'put ''MDI6Y2FzZSAxMDE6Y2FzZSA5NzpjYXNlIDEyMDpjYXNlIDExNzpjYXNlIDExMTpjYXNlIDEwNTpjYXNlIDEwMDpEPTA7YnJlYWs7ZGVmYXVsdDpidD0xMzU7YnJlYWsgdH1zd2l0Y2goRz0ocGU9Mz09KDQ3JihHPTB8WHRbdz4+MF0pfDApKT8zMnxHOkcscGU9cGU/MTpELChSPTI1NSZHKTw8''@;'; put 'put ''MjQ+PjI0KXtjYXNlIDk5Ok09KDB8TSk+MT9NOjEsYmU9cTticmVhaztjYXNlIDkxOmJlPXE7YnJlYWs7Y2FzZSAxMTA6SSQoTGUscGUscSwoKDB8cSk8MCk8PDMxPj4zMSksYj1xO2JyZWFrIG47ZGVmYXVsdDpjaChsLDApO2RveyhiPTB8YVtIZT4+Ml0pPj4+MDwoMHxhW1ZlPj4yXSk+Pj4w''@;'; put 'put ''PyhhW0hlPj4yXT1iKzEsYj0wfFh0W2I+PjBdKTpiPTB8SWwobCl9d2hpbGUoMCE9KDB8JGMoYikpKTswfGFbVmU+PjJdP2FbSGU+PjJdPWI9KDB8YVtIZT4+Ml0pLTF8MDpiPTB8YVtIZT4+Ml0sYmU9KDB8YVtxZT4+Ml0pK3ErYi0oMHxhW3J0Pj4yXSl8MH1pZihjaChsLE0pLChiPTB8YVtI''@;'; put 'put ''ZT4+Ml0pPj4+MDwoRD0wfGFbVmU+PjJdKT4+PjApYVtIZT4+Ml09YisxO2Vsc2V7aWYoKDB8SWwobCkpPDApe2J0PTEzNTticmVhayB0fUQ9MHxhW1ZlPj4yXX0wfEQmJihhW0hlPj4yXT0oMHxhW0hlPj4yXSktMSk7aTpkb3tzd2l0Y2goUjw8MjQ+PjI0KXtjYXNlIDkxOmNhc2UgOTk6Y2Fz''@;'; put 'put ''ZSAxMTU6Z2U9OTk9PSgwfEcpO286ZG97aWYoMTE1PT0oMTZ8RykpdTIoMHxTdCwtMSwyNTYpLGZlW0V0Pj4wXT0wLDExNT09KDB8RykmJihmZVthdD4+MF09MCxmZVtXZT4+MF09MCxmZVtXZSsxPj4wXT0wLGZlW1dlKzI+PjBdPTAsZmVbV2UrMz4+MF09MCxmZVtXZSs0Pj4wXT0wKTtlbHNl''@;'; put 'put ''e3N3aXRjaChxPTEmKGI9OTQ9PSgwfGZlWyhHPXcrMXwwKT4+MF0pKSx3PWI/dysyfDA6Ryx1MigwfGt0LDEmYnwwLDI1NiksZmVbRXQ+PjBdPTAsKGI9MHxmZVt3Pj4wXSk8PDI0Pj4yNCl7Y2FzZSA0NTpiPTQ2LGJ0PTYzO2JyZWFrO2Nhc2UgOTM6Yj05NCxidD02M31mb3IoOzspezYzPT0o''@;'; put 'put ''MHxidCkmJihidD0wLGZlW0V0K2I+PjBdPTFecSx3PWI9dysxfDAsYj0wfGZlW2I+PjBdKTthOmRve3N3aXRjaChiPDwyND4+MjQpe2Nhc2UgMDpidD0xMzU7YnJlYWsgdDtjYXNlIDkzOmJyZWFrIG87Y2FzZSA0NTpzd2l0Y2goKGI9MHxmZVsoRz13KzF8MCk+PjBdKTw8MjQ+PjI0KXtjYXNl''@;'; put 'put ''IDkzOmNhc2UgMDpiPTQ1O2JyZWFrIGF9aWYoKDI1NSYodz0wfGZlW3crLTE+PjBdKSk8KDI1NSZiKSl7Uj0yNTUmKDFecSksdyY9MjU1O2Rve2ZlW0V0Kyh3PXcrMXwwKT4+MF09UixiPTB8ZmVbRz4+MF19d2hpbGUoKDB8dyk8KDI1NSZifDApKTt3PUd9ZWxzZSB3PUd9fXdoaWxlKDApO2I9''@;'; put 'put ''MSsoMjU1JmIpfDAsYnQ9NjN9fX13aGlsZSgwKTtiPWdlP00rMXwwOjMxLEc9MT09KDB8cGUpO286ZG97aWYoRyl7aWYocCl7aWYoIShtPTB8RjAoYjw8MikpKXtBPTAsbT0wLHA9MSxidD0xMzU7YnJlYWsgdH19ZWxzZSBtPUxlO2Fbc3Q+PjJdPTAsYVtSZT4+Ml09MCxSPWIsQT0wO2E6Zm9y''@;'; put 'put ''KDs7KXtEPTA9PSgwfG0pO2Rve2w6Zm9yKDs7KXtpZigoYj0wfGFbSGU+PjJdKT4+PjA8KDB8YVtWZT4+Ml0pPj4+MD8oYVtIZT4+Ml09YisxLGI9MHxYdFtiPj4wXSk6Yj0wfElsKGwpLCEoMHxmZVtFdCsoYisxKT4+MF0pKWJyZWFrIGE7c3dpdGNoKGZlW2N0Pj4wXT1iLDB8T0FlKFp0LGN0''@;'; put 'put ''LDEsc3QpKXtjYXNlLTE6QT0wLGJ0PTEzNTticmVhayB0O2Nhc2UtMjpicmVhaztkZWZhdWx0OmJyZWFrIGx9fUR8fChhW20rKEE8PDIpPj4yXT1hW1p0Pj4yXSxBPUErMXwwKX13aGlsZSghKHAmKDB8QSk9PSgwfFIpKSk7aWYoIShiPTB8VWEobSwoQT1SPDwxfDEpPDwyKSkpe0E9MCxwPTEs''@;'; put 'put ''YnQ9MTM1O2JyZWFrIHR9cGU9UixSPUEsbT1iLEE9cGV9aWYoISgwfEhjZShzdCkpKXtBPTAsYnQ9MTM1O2JyZWFrIHR9Yj1BLEE9MCxSPW19ZWxzZXtpZihwKXtpZighKEE9MHxGMChiKSkpe0E9MCxtPTAscD0xLGJ0PTEzNTticmVhayB0fWZvcihEPWIsbT0wOzspe2Rve2lmKChiPTB8YVtI''@;'; put 'put ''ZT4+Ml0pPj4+MDwoMHxhW1ZlPj4yXSk+Pj4wPyhhW0hlPj4yXT1iKzEsYj0wfFh0W2I+PjBdKTpiPTB8SWwobCksISgwfGZlW0V0KyhiKzEpPj4wXSkpe2I9bSxSPTAsbT0wO2JyZWFrIG99ZmVbQSttPj4wXT1iLG09bSsxfDB9d2hpbGUoKDB8bSkhPSgwfEQpKTtpZighKGI9MHxVYShBLG09''@;'; put 'put ''RDw8MXwxKSkpe209MCxwPTEsYnQ9MTM1O2JyZWFrIHR9cGU9RCxEPW0sQT1iLG09cGV9fWlmKExlKWZvcihiPTAsQT1EOzspe2lmKChtPTB8YVtIZT4+Ml0pPj4+MDxBPj4+MD8oYVtIZT4+Ml09bSsxLG09MHxYdFttPj4wXSk6bT0wfElsKGwpLCEoMHxmZVtFdCsobSsxKT4+MF0pKXtBPUxl''@;'; put 'put ''LFI9MCxtPTA7YnJlYWsgb31mZVtMZStiPj4wXT1tLGI9YisxfDAsQT0wfGFbVmU+PjJdfWVsc2UgZm9yKEE9RDs7KXtpZigobT0wfGFbSGU+PjJdKT4+PjA8QT4+PjA/KGFbSGU+PjJdPW0rMSxtPTB8WHRbbT4+MF0pOm09MHxJbChsKSwhKDB8ZmVbRXQrKG0rMSk+PjBdKSl7Yj0wLEE9MCxS''@;'; put 'put ''PTAsbT0wO2JyZWFrIG99QT0wfGFbVmU+PjJdfX19d2hpbGUoMCk7aWYoMHxhW1ZlPj4yXT9hW0hlPj4yXT1EPSgwfGFbSGU+PjJdKS0xfDA6RD0wfGFbSGU+PjJdLCEoRD1ELSgwfGFbcnQ+PjJdKSsoMHxhW3FlPj4yXSl8MCkpe2J0PTEzNzticmVhayB0fWlmKCEoKDB8RCk9PSgwfE0pfDFe''@;'; put 'put ''Z2UpKXtidD0xMzc7YnJlYWsgdH1kb3tpZihwKXtpZihHKXthW0xlPj4yXT1SO2JyZWFrfWFbTGU+PjJdPUE7YnJlYWt9fXdoaWxlKDApO2lmKCFnZSl7aWYoMHxSJiYoYVtSKyhiPDwyKT4+Ml09MCksIUEpe0E9MDticmVhayBpfWZlW0ErYj4+MF09MH1icmVhaztjYXNlIDEyMDpjYXNlIDg4''@;'; put 'put ''OmNhc2UgMTEyOmI9MTYsYnQ9MTIzO2JyZWFrO2Nhc2UgMTExOmI9OCxidD0xMjM7YnJlYWs7Y2FzZSAxMTc6Y2FzZSAxMDA6Yj0xMCxidD0xMjM7YnJlYWs7Y2FzZSAxMDU6Yj0wLGJ0PTEyMzticmVhaztjYXNlIDcxOmNhc2UgMTAzOmNhc2UgNzA6Y2FzZSAxMDI6Y2FzZSA2OTpjYXNlIDEw''@;'; put 'put ''MTpjYXNlIDY1OmNhc2UgOTc6aWYoaz0rRCQobCxwZSwwKSwoMHxhW3FlPj4yXSk9PSgoMHxhW3J0Pj4yXSktKDB8YVtIZT4+Ml0pfDApKXtidD0xMzc7YnJlYWsgdH1pZihMZSlzd2l0Y2goMHxwZSl7Y2FzZSAwOmpuW0xlPj4yXT1rO2JyZWFrIGk7Y2FzZSAxOmNhc2UgMjpfW0xlPj4zXT1r''@;'; put 'put ''O2JyZWFrIGk7ZGVmYXVsdDpicmVhayBpfX19d2hpbGUoMCk7ZG97aWYoMTIzPT0oMHxidCkpe2lmKGJ0PTAsYj0wfGgkKGwsYiwwLC0xLC0xKSwoMHxhW3FlPj4yXSk9PSgoMHxhW3J0Pj4yXSktKDB8YVtIZT4+Ml0pfDApKXtidD0xMzc7YnJlYWsgdH1pZihPZSYxMTI9PSgwfEcpKXthW0xl''@;'; put 'put ''Pj4yXT1iO2JyZWFrfUkkKExlLHBlLGIsRG4pO2JyZWFrfX13aGlsZSgwKTtjPWMrKDEmT2UpfDAsYj0oMHxhW3FlPj4yXSkrYmUrKDB8YVtIZT4+Ml0pLSgwfGFbcnQ+PjJdKXwwO2JyZWFrIG59fXdoaWxlKDApO2lmKHc9dysoMSZwKXwwLGNoKGwsMCksKHA9MHxhW0hlPj4yXSk+Pj4wPCgw''@;'; put 'put ''fGFbVmU+PjJdKT4+PjA/KGFbSGU+PjJdPXArMSxwPTB8WHRbcD4+MF0pOnA9MHxJbChsKSwoMHxwKSE9KDB8WHRbdz4+MF0pKXtidD0yMjticmVhayB0fWI9cSsxfDB9fXdoaWxlKDApO2lmKCEoKHA9MHxmZVsodz13KzF8MCk+PjBdKTw8MjQ+PjI0KSlicmVhayBlO3E9Yn1pZigyMj09KDB8''@;'; put 'put ''YnQpKXtpZigwfGFbVmU+PjJdJiYoYVtIZT4+Ml09KDB8YVtIZT4+Ml0pLTEpLDAhPSgwfGMpfCgwfHApPi0xKWJyZWFrO3A9MCxidD0xMzZ9ZWxzZSAxMzU9PSgwfGJ0KT8ocCY9MSxjfHwoYnQ9MTM2KSk6MTM3PT0oMHxidCkmJihwJj0xKTsxMzY9PSgwfGJ0KSYmKGM9LTEpLHAmJihGdChB''@;'; put 'put ''KSxGdChtKSl9ZWxzZSBjPTB9d2hpbGUoMCk7cmV0dXJuIGxlPVNuLDB8Y30ocCxjLGYpLGxlPUEsMHx3fShsLGMsbSksbGU9cCwwfGZ9ZnVuY3Rpb24gRmNlKGwsYyl7Y3w9MDt2YXIgZixwLG09MDtmb3IocD1sZSxsZT1sZSsxNnwwLGFbKGY9cCk+PjJdPWFbKGx8PTApPj4yXTtsPTB8YVso''@;'; put 'put ''bT0zKygwfGFbZj4+Ml0pJi00KT4+Ml0sYVtmPj4yXT1tKzQsYz4+PjA+MTspYz1jKy0xfDA7cmV0dXJuIGxlPXAsMHxsfWZ1bmN0aW9uIEkkKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7ZTpkb3tpZigwfGwpc3dpdGNoKDB8Yyl7Y2FzZS0yOmZlW2w+PjBdPWY7YnJlYWsgZTtjYXNl''@;'; put 'put ''LTE6aXRbbD4+MV09ZjticmVhayBlO2Nhc2UgMDpjYXNlIDE6YVtsPj4yXT1mO2JyZWFrIGU7Y2FzZSAzOmFbKGM9bCk+PjJdPWYsYVtjKzQ+PjJdPXA7YnJlYWsgZTtkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKDApfWZ1bmN0aW9uIEhjZShsKXtyZXR1cm4gMHwoKGx8PTApPzA9PSgwfGFbbD4+''@;'; put 'put ''Ml0pJjE6MSl9ZnVuY3Rpb24gRCQobCxjLGYpe2x8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTA7c3dpdGNoKDB8KGN8PTApKXtjYXNlIDA6az0tMTQ5LE09MjQsdz00O2JyZWFrO2Nhc2UgMTpjYXNlIDI6az0tMTA3NCxNPTUzLHc9NDticmVhaztkZWZh''@;'; put 'put ''dWx0OnA9MH1lOmRve2lmKDQ9PSgwfHcpKXtSPWwrNHwwLEQ9bCsxMDB8MDtkb3soYz0wfGFbUj4+Ml0pPj4+MDwoMHxhW0Q+PjJdKT4+PjA/KGFbUj4+Ml09YysxLGM9MHxYdFtjPj4wXSk6Yz0wfElsKGwpfXdoaWxlKDAhPSgwfCRjKGMpKSk7dDpkb3tzd2l0Y2goMHxjKXtjYXNlIDQzOmNh''@;'; put 'put ''c2UgNDU6aWYoQT0xLSgoNDU9PSgwfGMpJjEpPDwxKXwwLChjPTB8YVtSPj4yXSk+Pj4wPCgwfGFbRD4+Ml0pPj4+MCl7YVtSPj4yXT1jKzEsbT0wfFh0W2M+PjBdO2JyZWFrIHR9bT0wfElsKGwpO2JyZWFrIHQ7ZGVmYXVsdDptPWMsQT0xfX13aGlsZSgwKTtjPTA7ZG97aWYoKDMyfG0pIT0o''@;'; put 'put ''MHxmZVsxNTM1ODQrYz4+MF0pKWJyZWFrO2Rve2lmKGM+Pj4wPDcpe2lmKChtPTB8YVtSPj4yXSk+Pj4wPCgwfGFbRD4+Ml0pPj4+MCl7YVtSPj4yXT1tKzEsbT0wfFh0W20+PjBdO2JyZWFrfW09MHxJbChsKTticmVha319d2hpbGUoMCk7Yz1jKzF8MH13aGlsZShjPj4+MDw4KTt0OmRve3N3''@;'; put 'put ''aXRjaCgwfGMpe2Nhc2UgODpicmVhaztjYXNlIDM6dz0yMzticmVhaztkZWZhdWx0OmlmKChiPTAhPSgwfGYpKSZjPj4+MD4zKXtpZig4PT0oMHxjKSlicmVhayB0O3c9MjM7YnJlYWsgdH1uOmRve2lmKCFjKXtjPTA7ZG97aWYoKDMyfG0pIT0oMHxmZVsxNTM1OTMrYz4+MF0pKWJyZWFrIG47''@;'; put 'put ''ZG97aWYoYz4+PjA8Mil7aWYoKG09MHxhW1I+PjJdKT4+PjA8KDB8YVtEPj4yXSk+Pj4wKXthW1I+PjJdPW0rMSxtPTB8WHRbbT4+MF07YnJlYWt9bT0wfElsKGwpO2JyZWFrfX13aGlsZSgwKTtjPWMrMXwwfXdoaWxlKGM+Pj4wPDMpfX13aGlsZSgwKTtzd2l0Y2goMHxjKXtjYXNlIDM6aWYo''@;'; put 'put ''KGM9MHxhW1I+PjJdKT4+PjA8KDB8YVtEPj4yXSk+Pj4wPyhhW1I+PjJdPWMrMSxjPTB8WHRbYz4+MF0pOmM9MHxJbChsKSw0MCE9KDB8Yykpe2lmKCEoMHxhW0Q+PjJdKSl7cD1qYzticmVhayBlfWFbUj4+Ml09KDB8YVtSPj4yXSktMSxwPWpjO2JyZWFrIGV9Zm9yKGM9MTsobT0wfGFbUj4+''@;'; put 'put ''Ml0pPj4+MDwoMHxhW0Q+PjJdKT4+PjA/KGFbUj4+Ml09bSsxLG09MHxYdFttPj4wXSk6bT0wfElsKGwpLChtKy00OHwwKT4+PjA8MTB8KG0rLTY1fDApPj4+MDwyNnx8OTU9PSgwfG0pfChtKy05N3wwKT4+PjA8MjY7KWM9YysxfDA7aWYoNDE9PSgwfG0pKXtwPWpjO2JyZWFrIGV9aWYoKG09''@;'; put 'put ''MD09KDB8YVtEPj4yXSkpfHwoYVtSPj4yXT0oMHxhW1I+PjJdKS0xKSwhYil7YVs0NzY0M109MjIsY2gobCwwKSxwPTA7YnJlYWsgZX1pZighYyl7cD1qYzticmVhayBlfWZvcig7OylpZihjPWMrLTF8MCxtfHwoYVtSPj4yXT0oMHxhW1I+PjJdKS0xKSwhYyl7cD1qYzticmVhayBlfWNhc2Ug''@;'; put 'put ''MDppZig0OD09KDB8bSkpe2lmKChjPTB8YVtSPj4yXSk+Pj4wPCgwfGFbRD4+Ml0pPj4+MD8oYVtSPj4yXT1jKzEsYz0wfFh0W2M+PjBdKTpjPTB8SWwobCksMTIwPT0oMzJ8Yykpe3A9K05jZShsLE0sayxBLGYpO2JyZWFrIGV9MHxhW0Q+PjJdJiYoYVtSPj4yXT0oMHxhW1I+PjJdKS0xKSxj''@;'; put 'put ''PTQ4fWVsc2UgYz1tO3A9K1ZjZShsLGMsTSxrLEEsZik7YnJlYWsgZTtkZWZhdWx0OjB8YVtEPj4yXSYmKGFbUj4+Ml09KDB8YVtSPj4yXSktMSksYVs0NzY0M109MjIsY2gobCwwKSxwPTA7YnJlYWsgZX19fXdoaWxlKDApO2lmKDIzPT0oMHx3KSYmKChtPTA9PSgwfGFbRD4+Ml0pKXx8KGFb''@;'; put 'put ''Uj4+Ml09KDB8YVtSPj4yXSktMSksMCE9KDB8ZikmYz4+PjA+MykpZG97bXx8KGFbUj4+Ml09KDB8YVtSPj4yXSktMSksYz1jKy0xfDB9d2hpbGUoYz4+PjA+Myk7cD0rKDB8QSkqeXN9fXdoaWxlKDApO3JldHVybitwfWZ1bmN0aW9uIE5jZShsLGMsZixwLG0pe2N8PTAsZnw9MCxwfD0wLG18''@;'; put 'put ''PTA7dmFyIFZlLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAscWU9MDsodz0wfGFbKHFlPTQrKGx8PTApfDApPj4yXSk+Pj4wPCgwfGFbKFZlPWwrMTAwfDApPj4yXSk+Pj4wPyhhW3FlPj4yXT13KzEsYj0wfFh0''@;'; put 'put ''W3c+PjBdLE09MCk6KGI9MHxJbChsKSxNPTApO2U6Zm9yKDs7KXtzd2l0Y2goMHxiKXtjYXNlIDQ2OkhlPTg7YnJlYWsgZTtjYXNlIDQ4OmJyZWFrO2RlZmF1bHQ6YmU9MCxSPTAsRz0xLEE9MCx3PTAsRD1iLE9lPU0sUmU9MCxMZT0wLE09MCxiPTA7YnJlYWsgZX0odz0wfGFbcWU+PjJdKT4+''@;'; put 'put ''PjA8KDB8YVtWZT4+Ml0pPj4+MD8oYVtxZT4+Ml09dysxLGI9MHxYdFt3Pj4wXSxNPTEpOihiPTB8SWwobCksTT0xKX1pZig4PT0oMHxIZSkpaWYoKHc9MHxhW3FlPj4yXSk+Pj4wPCgwfGFbVmU+PjJdKT4+PjA/KGFbcWU+PjJdPXcrMSxiPTB8WHRbdz4+MF0pOmI9MHxJbChsKSw0OD09KDB8''@;'; put 'put ''Yikpe009MCxiPTA7ZG97KHc9MHxhW3FlPj4yXSk+Pj4wPCgwfGFbVmU+PjJdKT4+PjA/KGFbcWU+PjJdPXcrMSxEPTB8WHRbdz4+MF0pOkQ9MHxJbChsKSxNPTB8emwoMHxNLDB8YiwtMSwtMSksYj1Ebn13aGlsZSg0OD09KDB8RCkpO2JlPTEsUj0wLEc9MSxBPTAsdz0wLE9lPTEsUmU9MCxM''@;'; put 'put ''ZT0wfWVsc2UgYmU9MSxSPTAsRz0xLEE9MCx3PTAsRD1iLE9lPU0sUmU9MCxMZT0wLE09MCxiPTA7Zm9yKDs7KXtpZihxPTMyfEQsKHBlPUQrLTQ4fDApPj4+MD49MTApe2lmKCEoKGdlPTQ2PT0oMHxEKSl8KHErLTk3fDApPj4+MDw2KSlicmVhaztpZihnZSl7aWYoYmUpe0Q9NDY7YnJlYWt9''@;'; put 'put ''YmU9MSxrPUcsZ2U9T2UsTT1MZSxiPVJlLHBlPUxlLHE9UmV9ZWxzZSBIZT0yMH1lbHNlIEhlPTIwO2lmKDIwPT0oMHxIZSkpe0hlPTAsRD0oMHxEKT41Nz9xKy04N3wwOnBlO2Rve2lmKCEoKDB8UmUpPDB8MD09KDB8UmUpJkxlPj4+MDw4KSl7aWYoKDB8UmUpPDB8MD09KDB8UmUpJkxlPj4+''@;'; put 'put ''MDwxNCl7az1HKj0uMDYyNSxBKz1HKisoMHxEKTticmVha31SPShPZT0wIT0oMHxSKXwwPT0oMHxEKSk/UjoxLGs9RyxBPU9lP0E6QSsuNSpHO2JyZWFrfWs9Ryx3PUQrKHc8PDQpfDB9d2hpbGUoMCk7cGU9MHx6bCgwfExlLDB8UmUsMSwwKSxnZT0xLHE9RG59KEQ9MHxhW3FlPj4yXSk+Pj4w''@;'; put 'put ''PCgwfGFbVmU+PjJdKT4+PjA/KGFbcWU+PjJdPUQrMSxHPWssRD0wfFh0W0Q+PjBdLE9lPWdlLFJlPXEsTGU9cGUpOihHPWssRD0wfElsKGwpLE9lPWdlLFJlPXEsTGU9cGUpfWRve2lmKE9lKXtpZihwZT0ocT0wPT0oMHxiZSkpP0xlOk0scT1xP1JlOmIsKDB8UmUpPDB8MD09KDB8UmUpJkxl''@;'; put 'put ''Pj4+MDw4KWZvcihNPUxlLGI9UmU7Oyl7aWYodzw8PTQsSGU9TSxNPTB8emwoMHxNLDB8YiwxLDApLCEoKDB8Yik8MHwwPT0oMHxiKSZIZT4+PjA8Nykpe1I9dzticmVha31iPURufWVsc2UgUj13O2lmKDExMj09KDMyfEQpKXtpZigwPT0oMHwoYj0wfEwkKGwsbSkpKSYtMjE0NzQ4MzY0OD09''@;'; put 'put ''KDB8KHc9RG4pKSl7aWYoIW0pe2NoKGwsMCksQT0wO2JyZWFrfTB8YVtWZT4+Ml0/KGFbcWU+PjJdPSgwfGFbcWU+PjJdKS0xLGI9MCx3PTApOihiPTAsdz0wKX19ZWxzZSAwfGFbVmU+PjJdPyhhW3FlPj4yXT0oMHxhW3FlPj4yXSktMSxiPTAsdz0wKTooYj0wLHc9MCk7aWYoTT0wfHpsKDB8''@;'; put 'put ''KE09MHxabygwfHBlLDB8cSwyKSksMHxEbiwtMzIsLTEpLE09MHx6bCgwfE0sMHxEbiwwfGIsMHx3KSx3PURuLCFSKXtBPTAqKygwfHApO2JyZWFrfWlmKCgwfHcpPigwfChtPSgoMHwocWU9MC1mfDApKTwwKTw8MzE+PjMxKSl8KDB8dyk9PSgwfG0pJk0+Pj4wPnFlPj4+MCl7YVs0NzY0M109''@;'; put 'put ''MzQsQT0xNzk3NjkzMTM0ODYyMzE1N2UyOTIqKygwfHApKjE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjticmVha31pZigoMHx3KTwoMHwobT0oKDB8KHFlPWYrLTEwNnwwKSk8MCk8PDMxPj4zMSkpfCgwfHcpPT0oMHxtKSZNPj4+MDxxZT4+PjApe2FbNDc2NDNdPTM0LEE9MjIyNTA3Mzg1ODUwNzIw''@;'; put 'put ''MTRlLTMyNCorKDB8cCkqMjIyNTA3Mzg1ODUwNzIwMTRlLTMyNDticmVha31pZigoMHxSKT4tMSl7Yj1SO2Rve2I9Yjw8MXwxJigxXihxZT0hKEE+PS41KSkpLEErPXFlP0E6QSstMSxNPTB8emwoMHxNLDB8dywtMSwtMSksdz1Ebn13aGlsZSgoMHxiKT4tMSk7Rz1BLEQ9Yn1lbHNlIEc9QSxE''@;'; put 'put ''PVI7cWU9KCgwfGMpPDApPDwzMT4+MzEsdz0wfHpsKDB8KGY9MHxTcCgzMiwwLDB8ZiwoKDB8Zik8MCk8PDMxPj4zMXwwKSksMHxEbiwwfE0sMHx3KSwoMHwoZj1EbikpPCgwfHFlKXwoMHxmKT09KDB8cWUpJnc+Pj4wPGM+Pj4wPygwfHcpPjA/SGU9NTk6KGI9MCx3PTg0LEhlPTYxKToodz1j''@;'; put 'put ''LEhlPTU5KSw1OT09KDB8SGUpJiYoKDB8dyk8NTM/KGI9dyx3PTg0LXd8MCxIZT02MSk6KGs9MCxBPSsoMHxwKSkpLDYxPT0oMHxIZSkmJihBPSsoMHxwKSxrPStzJCgrdmcoMSx3KSxBKSx3PWIpLDA9PShBPSgocD0wPT0oMSZEfDApJjAhPUcmKDB8dyk8MzIpPzA6RykqQSsoaytBKisoKEQr''@;'; put 'put ''KDEmcCl8MCk+Pj4wKSktaykmJihhWzQ3NjQzXT0zNCksQT0rdSQoQSxNKX1lbHNlKHc9MD09KDB8YVtWZT4+Ml0pKXx8KGFbcWU+PjJdPSgwfGFbcWU+PjJdKS0xKSxtPyh3fHwoYVtxZT4+Ml09KDB8YVtxZT4+Ml0pLTEpLDA9PSgwfGJlKXx3fHwoYVtxZT4+Ml09KDB8YVtxZT4+Ml0pLTEp''@;'; put 'put ''KTpjaChsLDApLEE9MCorKDB8cCl9d2hpbGUoMCk7cmV0dXJuK0F9ZnVuY3Rpb24gVmNlKGwsYyxmLHAsbSxBKXtjfD0wLG18PTAsQXw9MDt2YXIga3QsRXQsWnQsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wLFZlPTAs''@;'; put 'put ''cWU9MCxydD0wLFdlPTAsYXQ9MCxTdD0wLHN0PTAsY3Q9MDtadD1sZSxsZT1sZSs1MTJ8MCxrdD1adCxFdD0wLShzdD0ocHw9MCkrKGZ8PTApfDApfDAsV2U9NCsobHw9MCl8MCxhdD1sKzEwMHwwLGs9MDtlOmZvcig7Oyl7c3dpdGNoKDB8Yyl7Y2FzZSA0NjpxZT02O2JyZWFrIGU7Y2FzZSA0''@;'; put 'put ''ODpicmVhaztkZWZhdWx0OkxlPTAsRz1rLHE9MCxSPTA7YnJlYWsgZX0oYz0wfGFbV2U+PjJdKT4+PjA8KDB8YVthdD4+Ml0pPj4+MD8oYVtXZT4+Ml09YysxLGM9MHxYdFtjPj4wXSxrPTEpOihjPTB8SWwobCksaz0xKX1pZig2PT0oMHxxZSkpaWYoKGM9MHxhW1dlPj4yXSk+Pj4wPCgwfGFb''@;'; put 'put ''YXQ+PjJdKT4+PjA/KGFbV2U+PjJdPWMrMSxjPTB8WHRbYz4+MF0pOmM9MHxJbChsKSw0OD09KDB8YykpZm9yKGs9MCxjPTA7Oyl7aWYoaz0wfHpsKDB8aywwfGMsLTEsLTEpLFI9RG4sKGM9MHxhW1dlPj4yXSk+Pj4wPCgwfGFbYXQ+PjJdKT4+PjA/KGFbV2U+PjJdPWMrMSxjPTB8WHRbYz4+''@;'; put 'put ''MF0pOmM9MHxJbChsKSw0OCE9KDB8Yykpe0xlPTEsRz0xLHE9azticmVha31jPVJ9ZWxzZSBMZT0xLEc9ayxxPTAsUj0wO2Fba3Q+PjJdPTAsRD1jKy00OHwwLE09NDY9PSgwfGMpO2U6ZG97aWYoTXxEPj4+MDwxMCl7cnQ9a3QrNDk2fDAsUmU9MCxrPTAsT2U9MCxIZT1MZSxWZT1HLHFlPUQs''@;'; put 'put ''Rz0wLEQ9MDt0OmZvcig7Oyl7ZG97aWYoTSl7aWYoSGUpYnJlYWsgdDtIZT0xLHE9RyxSPUR9ZWxzZXtpZihHPTB8emwoMHxHLDB8RCwxLDApLEQ9RG4sTGU9NDghPSgwfGMpLCgwfGspPj0xMjUpe2lmKCFMZSlicmVhazthW3J0Pj4yXT0xfGFbcnQ+PjJdO2JyZWFrfWFbKE09a3QrKGs8PDIp''@;'; put 'put ''fDApPj4yXT1jPVJlP2MrLTQ4KygxMCooMHxhW00+PjJdKXwwKXwwOnFlLFJlPShWZT05PT0oMHwoUmU9UmUrMXwwKSkpPzA6UmUsaz1rKygxJlZlKXwwLE9lPUxlP0c6T2UsVmU9MX19d2hpbGUoMCk7aWYoKGM9MHxhW1dlPj4yXSk+Pj4wPCgwfGFbYXQ+PjJdKT4+PjA/KGFbV2U+PjJdPWMr''@;'; put 'put ''MSxjPTB8WHRbYz4+MF0pOmM9MHxJbChsKSwhKChNPTQ2PT0oMHxjKSl8KHFlPWMrLTQ4fDApPj4+MDwxMCkpe0xlPUhlLE09VmUscWU9Mjk7YnJlYWsgZX19Yz1SZSxNPTAhPSgwfFZlKSxxZT0zN31lbHNlIFJlPTAsaz0wLE9lPTAsTT1HLEc9MCxEPTAscWU9Mjl9d2hpbGUoMCk7ZG97aWYo''@;'; put 'put ''Mjk9PSgwfHFlKSl7aWYocT0ocnQ9MD09KDB8TGUpKT9HOnEsUj1ydD9EOlIsISgoTT0wIT0oMHxNKSkmMTAxPT0oMzJ8YykpKXtpZigoMHxjKT4tMSl7Yz1SZSxxZT0zNzticmVha31jPVJlLHFlPTM5O2JyZWFrfWlmKDA9PSgwfChNPTB8TCQobCxBKSkpJi0yMTQ3NDgzNjQ4PT0oMHwoYz1E''@;'; put 'put ''bikpKXtpZighQSl7Y2gobCwwKSx3PTA7YnJlYWt9MHxhW2F0Pj4yXT8oYVtXZT4+Ml09KDB8YVtXZT4+Ml0pLTEsTT0wLGM9MCk6KE09MCxjPTApfVZlPTB8emwoMHxNLDB8YywwfHEsMHxSKSxjPVJlLFI9RG4scWU9NDF9fXdoaWxlKDApOzM3PT0oMHxxZSkmJigwfGFbYXQ+PjJdPyhhW1dl''@;'; put 'put ''Pj4yXT0oMHxhW1dlPj4yXSktMSxNPyhWZT1xLHFlPTQxKTpxZT00MCk6cWU9MzkpLDM5PT0oMHxxZSkmJihNPyhWZT1xLHFlPTQxKTpxZT00MCk7ZG97aWYoNDA9PSgwfHFlKSlhWzQ3NjQzXT0yMixjaChsLDApLHc9MDtlbHNlIGlmKDQxPT0oMHxxZSkpe2lmKCEoTT0wfGFba3Q+PjJdKSl7''@;'; put 'put ''dz0wKisoMHxtKTticmVha31pZigoMHxWZSk9PSgwfEcpJigwfFIpPT0oMHxEKSYoKDB8RCk8MHwwPT0oMHxEKSZHPj4+MDwxMCkmJigwfGYpPjMwfDA9PShNPj4+ZnwwKSl7dz0rKDB8bSkqKyhNPj4+MCk7YnJlYWt9aWYoKDB8Uik+KDB8KGF0PSgoMHwobD0oMHxwKS8tMnwwKSk8MCk8PDMx''@;'; put 'put ''Pj4zMSkpfCgwfFIpPT0oMHxhdCkmVmU+Pj4wPmw+Pj4wKXthWzQ3NjQzXT0zNCx3PTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MiorKDB8bSkqMTc5NzY5MzEzNDg2MjMxNTdlMjkyO2JyZWFrfWlmKCgwfFIpPCgwfChhdD0oKDB8KGw9cCstMTA2fDApKTwwKTw8MzE+PjMxKSl8KDB8Uik9PSgwfGF0''@;'; put 'put ''KSZWZT4+PjA8bD4+PjApe2FbNDc2NDNdPTM0LHc9MjIyNTA3Mzg1ODUwNzIwMTRlLTMyNCorKDB8bSkqMjIyNTA3Mzg1ODUwNzIwMTRlLTMyNDticmVha31pZihjKXtpZigoMHxjKTw5KXtmb3IoTT0wfGFbKEQ9a3QrKGs8PDIpfDApPj4yXTtNPTEwKk18MCwhKCgwfGMpPj04KTspYz1jKzF8''@;'; put 'put ''MDthW0Q+PjJdPU19az1rKzF8MH1pZigoMHxPZSk8OSYmKDB8T2UpPD0oMHxWZSkmKDB8VmUpPDE4KXtpZig5PT0oMHxWZSkpe3c9KygwfG0pKisoKDB8YVtrdD4+Ml0pPj4+MCk7YnJlYWt9aWYoKDB8VmUpPDkpe3c9KygwfG0pKisoKDB8YVtrdD4+Ml0pPj4+MCkvKygwfGFbNjM3MTIrKDgt''@;'; put 'put ''VmU8PDIpPj4yXSk7YnJlYWt9aWYoKDB8KGw9ZisyNysoMHxBcihWZSwtMykpfDApKT4zMHwwPT0oKGM9MHxhW2t0Pj4yXSk+Pj5sfDApKXt3PSsoMHxtKSorKGM+Pj4wKSorKDB8YVs2MzcxMisoVmUrLTEwPDwyKT4+Ml0pO2JyZWFrfX1pZihjPSgwfFZlKSU5fDApe2lmKEc9MHxhWzYzNzEy''@;'; put 'put ''Kyg4LShPZT0oMHxWZSk+LTE/YzpjKzl8MCk8PDIpPj4yXSxrKXtxPTFlOS8oMHxHKXwwLEQ9MCxSPTAsTT1WZSxjPTA7ZG97YVsoV2U9a3QrKGM8PDIpfDApPj4yXT1sPSgoKGF0PTB8YVtXZT4+Ml0pPj4+MCkvKEc+Pj4wKXwwKStEfDAsRD0wfEFyKHEsKGF0Pj4+MCklKEc+Pj4wKXwwKSxN''@;'; put 'put ''PShsPSgwfGMpPT0oMHxSKSYwPT0oMHxsKSk/TSstOXwwOk0sUj1sP1IrMSYxMjc6UixjPWMrMXwwfXdoaWxlKCgwfGMpIT0oMHxrKSk7RD8oYVtrdCsoazw8Mik+PjJdPUQsRD1SLGs9aysxfDApOkQ9Un1lbHNlIEQ9MCxrPTAsTT1WZTtjPTAsVmU9OS1PZStNfDB9ZWxzZSBjPTAsRD0wO2U6''@;'; put 'put ''Zm9yKDs7KXtmb3IoT2U9KDB8VmUpPDE4LExlPTE4PT0oMHxWZSksUmU9a3QrKEQ8PDIpfDA7Oyl7aWYoIU9lKXtpZighTGUpe009VmU7YnJlYWsgZX1pZigoMHxhW1JlPj4yXSk+Pj4wPj05MDA3MTk5KXtNPTE4O2JyZWFrIGV9fWZvcihNPTAsSGU9ayxrPWsrMTI3fDA7az0wfHpsKDB8KGs9''@;'; put 'put ''MHxabygwfGFbKEc9a3QrKChSPTEyNyZrKTw8Mil8MCk+PjJdLDAsMjkpKSwwfERuLDB8TSwwKSwoTT1Ebik+Pj4wPjB8MD09KDB8TSkmaz4+PjA+MWU5PyhxPTB8b3coMHxrLDB8TSwxZTksMCksaz0wfGlTKDB8aywwfE0sMWU5LDApKTpxPTAsYVtHPj4yXT1rLEhlPTA9PSgwfGspJigxXigo''@;'; put 'put ''MHxSKSE9KEhlKzEyNyYxMjd8MCl8KGw9KDB8Uik9PSgwfEQpKSkpP1I6SGUsIWw7KU09cSxrPVIrLTF8MDtpZihjPWMrLTI5fDAsMHxxKWJyZWFrO2s9SGV9az1IZSsxMjcmMTI3LE09a3QrKChIZSsxMjYmMTI3KTw8Mil8MCwoMHwoRD1EKzEyNyYxMjcpKT09KDB8SGUpP2FbTT4+Ml09YVtN''@;'; put 'put ''Pj4yXXxhW2t0KyhrPDwyKT4+Ml06az1IZSxhW2t0KyhEPDwyKT4+Ml09cSxWZT1WZSs5fDB9ZTpmb3IoOzspe2ZvcihSZT1rKzEmMTI3LEhlPWt0KygoaysxMjcmMTI3KTw8Mil8MDs7KXtmb3IocT0xOD09KDB8TSksTGU9KDB8TSk+Mjc/OToxLFZlPUQ7Oyl7Zm9yKEc9MDs7KXtpZigoMHwo''@;'; put 'put ''RD1HK1ZlJjEyNykpPT0oMHxrKSl7U3Q9MixxZT04ODticmVha31pZigoRD0wfGFba3QrKEQ8PDIpPj4yXSk+Pj4wPChSPTB8YVs2Mzc0NCsoRzw8Mik+PjJdKT4+PjApe1N0PTIscWU9ODg7YnJlYWt9aWYoRD4+PjA+Uj4+PjApYnJlYWs7aWYoRD1HKzF8MCwhKCgwfEcpPDEpKXtTdD1ELHFl''@;'; put 'put ''PTg4O2JyZWFrfUc9RH1pZig4OD09KDB8cWUpJiYocWU9MCxxJjI9PSgwfFN0KSkpe3c9MCxSPTA7YnJlYWsgZX1pZihjPUxlK2N8MCwoMHxWZSkhPSgwfGspKWJyZWFrO1ZlPWt9cT0oMTw8TGUpLTF8MCxPZT0xZTk+Pj5MZSxHPTAsRD1WZSxSPVZlO2Rve2FbKFdlPWt0KyhSPDwyKXwwKT4+''@;'; put 'put ''Ml09bD0oKGF0PTB8YVtXZT4+Ml0pPj4+TGUpK0d8MCxHPTB8QXIoYXQmcSxPZSksTT0obD0oMHxSKT09KDB8RCkmMD09KDB8bCkpP00rLTl8MDpNLEQ9bD9EKzEmMTI3OkQsUj1SKzEmMTI3fXdoaWxlKCgwfFIpIT0oMHxrKSk7aWYoRyl7aWYoKDB8UmUpIT0oMHxEKSlicmVhazthW0hlPj4y''@;'; put 'put ''XT0xfGFbSGU+PjJdfX1hW2t0KyhrPDwyKT4+Ml09RyxrPVJlfWRve009aysxJjEyNywoMHwoRD1SK1ZlJjEyNykpPT0oMHxrKSYmKGFba3QrKE0rLTE8PDIpPj4yXT0wLGs9TSksdz0xZTkqdysgKygoMHxhW2t0KyhEPDwyKT4+Ml0pPj4+MCksUj1SKzF8MH13aGlsZSgyIT0oMHxSKSk7aWYo''@;'; put 'put ''Yj13KihiZT0rKDB8bSkpLCgwfChEPShxPSgwfChHPShSPWMrNTN8MCktcHwwKSk8KDB8ZikpPygwfEcpPjA/RzowOmYpKTw1Mz8oZ2U9Y3Q9K3MkKCt2ZygxLDEwNS1EfDApLGIpLHc9cGU9K2MkKGIsK3ZnKDEsNTMtRHwwKSkscGU9Y3QrKGItcGUpKTooZ2U9MCx3PTAscGU9YiksKDB8KE09''@;'; put 'put ''VmUrMiYxMjcpKSE9KDB8aykpe009MHxhW2t0KyhNPDwyKT4+Ml07ZG97aWYoTT4+PjA+PTVlOCl7aWYoNWU4IT0oMHxNKSl7dz0uNzUqYmUrdzticmVha31pZigoVmUrMyYxMjd8MCk9PSgwfGspKXt3PS41KmJlK3c7YnJlYWt9dz0uNzUqYmUrdzticmVha31pZigwPT0oMHxNKSYmKFZlKzMm''@;'; put 'put ''MTI3fDApPT0oMHxrKSlicmVhazt3PS4yNSpiZSt3fXdoaWxlKDApO2I9KDUzLUR8MCk+MSYmMD09K2MkKHcsMSk/dysxOnd9ZWxzZSBiPXc7dz1wZStiLWdlO2Rve2lmKCgyMTQ3NDgzNjQ3JlJ8MCk+KC0yLXN0fDApKXtpZih3PShzdD0hKCtlbygrdyk+PTkwMDcxOTkyNTQ3NDA5OTIpKT93''@;'; put 'put ''Oi41KncsKDUwKyhjPWMrKDEmKDFec3QpKXwwKXwwKTw9KDB8RXQpJiYhKDAhPWImcSYoKDB8RCkhPSgwfEcpfHN0KSkpYnJlYWs7YVs0NzY0M109MzR9fXdoaWxlKDApO3c9K3UkKHcsYyl9fXdoaWxlKDApO3JldHVybiBsZT1adCwrd31mdW5jdGlvbiBMJChsLGMpe2N8PTA7dmFyIEEsZj0w''@;'; put 'put ''LHA9MCxtPTAsdz0wO3N3aXRjaCgoZj0wfGFbKEE9NCsobHw9MCl8MCk+PjJdKT4+PjA8KDB8YVsodz1sKzEwMHwwKT4+Ml0pPj4+MD8oYVtBPj4yXT1mKzEsZj0wfFh0W2Y+PjBdKTpmPTB8SWwobCksMHxmKXtjYXNlIDQzOmNhc2UgNDU6cD00NT09KDB8ZikmMSwoZj0wfGFbQT4+Ml0pPj4+''@;'; put 'put ''MDwoMHxhW3c+PjJdKT4+PjA/KGFbQT4+Ml09ZisxLGY9MHxYdFtmPj4wXSk6Zj0wfElsKGwpLDAhPSgwfGMpJihmKy00OHwwKT4+PjA+OSYmMCE9KDB8YVt3Pj4yXSkmJihhW0E+PjJdPSgwfGFbQT4+Ml0pLTEpO2JyZWFrO2RlZmF1bHQ6cD0wfWlmKChmKy00OHwwKT4+PjA+OSkwfGFbdz4+''@;'; put 'put ''Ml0/KGFbQT4+Ml09KDB8YVtBPj4yXSktMSxwPS0yMTQ3NDgzNjQ4LGY9MCk6KHA9LTIxNDc0ODM2NDgsZj0wKTtlbHNle209MDtkb3ttPWYrLTQ4KygxMCptfDApfDAsKGY9MHxhW0E+PjJdKT4+PjA8KDB8YVt3Pj4yXSk+Pj4wPyhhW0E+PjJdPWYrMSxmPTB8WHRbZj4+MF0pOmY9MHxJbChs''@;'; put 'put ''KX13aGlsZSgoZistNDh8MCk+Pj4wPDEwJigwfG0pPDIxNDc0ODM2NCk7aWYoYz0oKDB8bSk8MCk8PDMxPj4zMSwoZistNDh8MCk+Pj4wPDEwKWRve2M9MHxpdygwfG0sMHxjLDEwLDApLG09RG4sZj0wfHpsKDB8ZiwoKDB8Zik8MCk8PDMxPj4zMXwwLC00OCwtMSksbT0wfHpsKDB8ZiwwfERu''@;'; put 'put ''LDB8YywwfG0pLGM9RG4sKGY9MHxhW0E+PjJdKT4+PjA8KDB8YVt3Pj4yXSk+Pj4wPyhhW0E+PjJdPWYrMSxmPTB8WHRbZj4+MF0pOmY9MHxJbChsKX13aGlsZSgoZistNDh8MCk+Pj4wPDEwJigoMHxjKTwyMTQ3NDgzNnwyMTQ3NDgzNj09KDB8YykmbT4+PjA8MjA2MTU4NDMwMikpO2lmKChm''@;'; put 'put ''Ky00OHwwKT4+PjA8MTApZG97KGY9MHxhW0E+PjJdKT4+PjA8KDB8YVt3Pj4yXSk+Pj4wPyhhW0E+PjJdPWYrMSxmPTB8WHRbZj4+MF0pOmY9MHxJbChsKX13aGlsZSgoZistNDh8MCk+Pj4wPDEwKTswfGFbdz4+Ml0mJihhW0E+PjJdPSgwfGFbQT4+Ml0pLTEpLHc9MCE9KDB8cCksZj0wfFNw''@;'; put 'put ''KDAsMCwwfG0sMHxjKSxwPXc/RG46YyxmPXc/ZjptfXJldHVybiBEbj1wLDB8Zn1mdW5jdGlvbiBuMyhsLGMsZil7cmV0dXJuIDB8ZnVuY3Rpb24gWmNlKGwsYyxmKXtjfD0wLGZ8PTA7cmV0dXJuKDB8YVs3NisobHw9MCk+PjJdKT4tMT8oITAsYz0wfE8kKGwsYyxmKSk6Yz0wfE8kKGwsYyxm''@;'; put 'put ''KSwwfGN9KGx8PTAsY3w9MCxmfD0wKX1mdW5jdGlvbiBPJChsLGMsZil7dmFyIHAsbTtyZXR1cm4gbHw9MCxjfD0wLDE9PSgwfChmfD0wKSkmJihjPWMtKDB8YVtsKzg+PjJdKSsoMHxhW2wrND4+Ml0pfDApLCgwfGFbKHA9bCsyMHwwKT4+Ml0pPj4+MD4oMHxhWyhtPWwrMjh8MCk+PjJdKT4+''@;'; put 'put ''PjAmJihtaVs2MyZhW2wrMzY+PjJdXShsLDAsMCksMD09KDB8YVtwPj4yXSkpP2M9LTE6KGFbbCsxNj4+Ml09MCxhW20+PjJdPTAsYVtwPj4yXT0wLCgwfG1pWzYzJmFbbCs0MD4+Ml1dKGwsYyxmKSk8MD9jPS0xOihhW2wrOD4+Ml09MCxhW2wrND4+Ml09MCxhW2w+PjJdPS0xNyZhW2w+PjJd''@;'; put 'put ''LGM9MCkpLDB8Y31mdW5jdGlvbiByMyhsKXtsfD0wO2Zvcih2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTA7bT1sKzF8MCwwfCRjKGM9KHA9MHxmZVtsPj4wXSk8PDI0Pj4yNCk7KWw9bTtzd2l0Y2goMHxjKXtjYXNlIDQ1Omw9MSxBPTU7YnJlYWs7Y2FzZSA0MzpsPTAsQT01O2JyZWFrO2Rl''@;'; put 'put ''ZmF1bHQ6dz0wLGY9bCxsPXB9aWYoNT09KDB8QSkmJih3PWwsZj1tLGw9MHxmZVttPj4wXSksKGM9KGw8PDI0Pj4yNCktNDh8MCk+Pj4wPDEwKXtsPTA7ZG97bD0oMTAqbHwwKS1jfDAsYz0oMHxmZVsoZj1mKzF8MCk+PjBdKS00OHwwfXdoaWxlKGM+Pj4wPDEwKX1lbHNlIGw9MDtyZXR1cm4g''@;'; put 'put ''MHwoMHx3P2w6MC1sfDApfWZ1bmN0aW9uIGtwKGwpe3JldHVybisgK2kzKGx8PTAsMCl9ZnVuY3Rpb24gaTMobCxjKXtyZXR1cm4rICtmdW5jdGlvbiB6Y2UobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwLHcsYixtPTAsQT0wO2I9bGUsbGU9bGUrMTI4fDAsQT0obT13PWIpKzEyNHwwO2Rv''@;'; put 'put ''e2FbbT4+Ml09MCxtPW0rNHwwfXdoaWxlKCgwfG0pPCgwfEEpKTtyZXR1cm4gYVsobT13KzR8MCk+PjJdPWwsYVsoQT13Kzh8MCk+PjJdPS0xLGFbdys0ND4+Ml09bCxhW3crNzY+PjJdPS0xLGNoKHcsMCkscD0rRCQodyxmLDEpLGY9KDB8YVttPj4yXSktKDB8YVtBPj4yXSkrKDB8YVt3KzEw''@;'; put 'put ''OD4+Ml0pfDAsMHxjJiYoYVtjPj4yXT0wfGY/bCtmfDA6bCksbGU9YiwrcH0obHw9MCxjfD0wLDEpfWZ1bmN0aW9uIG53KGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTAsdz0wLGI9MDtlOmRve2lmKGYpZm9yKGI9Yzs7KXtpZihjPWIrKDB8QXIodz1mPj4+MSxw''@;'; put 'put ''KSl8MCwhKEE9MHxCaVsxMjcmbV0obCxjKSkpYnJlYWsgZTtpZigxPT0oMHxmKSl7Yz0wO2JyZWFrIGV9aWYoIShmPShBPSgwfEEpPDApP3c6Zi13fDApKXtjPTA7YnJlYWt9Yj1BP2I6Y31lbHNlIGM9MH13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1bmN0aW9uIHJ3KGwpe2FbNDY2NTJdPShsfD0w''@;'; put 'put ''KS0xLGFbNDY2NTNdPTB9ZnVuY3Rpb24gVDEoKXt2YXIgbD0wLGM9MDtyZXR1cm4gYz0wfHpsKDB8KGM9MHxpdygwfGFbKGM9MTg2NjA4KT4+Ml0sMHxhW2MrND4+Ml0sMTI4NDg2NTgzNywxNDgxNzY1OTMzKSksMHxEbiwxLDApLGw9RG4sYVs0NjY1Ml09YyxhWzQ2NjUzXT1sLDB8d2woMHxj''@;'; put 'put ''LDB8bCwzMyl9ZnVuY3Rpb24gTmoobCl7dmFyIGMsZjtsfD0wLGM9bGUsbGU9bGUrMTZ8MCxpdFsoZj1jKT4+MV09MTMwNzAsaXRbZisyPj4xXT1sLGl0W2YrND4+MV09bD4+PjE2LGZ1bmN0aW9uIFdjZShsKXtsfD0wLGl0Wzk2ODc2XT0wfGl0WzMyOTIyXSxpdFs5Njg3N109MHxpdFszMjky''@;'; put 'put ''M10saXRbOTY4NzhdPTB8aXRbMzI5MjRdLGl0WzMyOTIyXT0wfGl0W2w+PjFdLGl0WzMyOTIzXT0wfGl0W2wrMj4+MV0saXRbMzI5MjRdPTB8aXRbbCs0Pj4xXX0oZiksbGU9Y31mdW5jdGlvbiBxYygpe3JldHVybisgK2Z1bmN0aW9uIFljZShsKXt2YXIgYz0wO3JldHVybiBjPTB8Wm8oMHwo''@;'; put 'put ''Yz0wfGZ1bmN0aW9uIEdjZShsLGMpe3ZhciBwLG0sZjtyZXR1cm4gYz0wfHpsKDB8aXcoKDB8aHJbMisoY3w9MCk+PjFdKTw8MTZ8MHxocltjPj4xXXwwLDB8aHJbYys0Pj4xXSwoMHxoclsobT0yKyhsfD0wKXwwKT4+MV0pPDwxNnwwfGhyW2w+PjFdfDAsMHxoclsocD1sKzR8MCk+PjFdKSww''@;'; put 'put ''fERuLDB8aHJbYys2Pj4xXSwwKSxmPURuLGl0W2w+PjFdPWMsbD0wfHdsKDB8YywwfGYsMTYpLGl0W20+PjFdPWwsaXRbcD4+MV09ZixEbj02NTUzNSZmLDB8Y30obHw9MCw2NTg1MCkpLDB8RG4sNCksbD0xMDcyNjkzMjQ4fERuLGFbU2k+PjJdPWMsYVtTaSs0Pj4yXT1sLCsoK19bU2k+PjNd''@;'; put 'put ''LTEpfSg2NTg0NCl9ZnVuY3Rpb24gUiQobCxjKXtyZXR1cm4gY3w9MCwobHw9MCk/KGFbYz4+Ml09MCxhW2MrND4+Ml09MCxhW2MrOD4+Ml09MCxhW2MrMTI+PjJdPTAsYVtjKzE2Pj4yXT0wLGFbYysyMD4+Ml09MCk6Yz0wfHNoKDEsMjQpLDB8Y31mdW5jdGlvbiB3ZyhsKXt2YXIgYz0wLGY9''@;'; put 'put ''MDtpZigwfChjPTB8YVsobHw9MCk+PjJdKSlkb3tGdCgwfGFbYz4+Ml0pLGY9YyxjPTB8YVtjKzQ+PjJdLEZ0KGYpfXdoaWxlKDAhPSgwfGMpKTtGdChsKX1mdW5jdGlvbiBYMShsLGMsZixwLG0pe2N8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MCx3PTAsYj0wLGs9MCxNPTA7dz0xNisobHw9''@;'; put 'put ''MCl8MDtlOmRve2lmKDB8YVt3Pj4yXSljPTA7ZWxzZXtpZigoQT0wfGFbKE09bCsxMnwwKT4+Ml0pPj4+MDxtPj4+MCl7ZG97aWYoYyl7aWYoZil7YVsodz1sKzh8MCk+PjJdPWYsQT0xMDI0LGM9ZjticmVha31hW3c+PjJdPTEsYz0wO2JyZWFrIGV9aWYoQT0oQT1tPDwzKT4+PjA+MTAyND9B''@;'; put 'put ''OjEwMjQsIShrPTB8RjAoOCkpKXthW3c+PjJdPTEsYz0wO2JyZWFrIGV9aWYoYz0wfEYwKEEpLGFbaz4+Ml09YyxmPWMsIWMpe0Z0KGspLGFbdz4+Ml09MSxjPTA7YnJlYWsgZX1hW2srND4+Ml09MCwwfChiPTB8YVsodz1sKzR8MCk+PjJdKSYmKGFbYis0Pj4yXT1rKSwwfGFbbD4+Ml18fChh''@;'; put 'put ''W2w+PjJdPWspLGFbdz4+Ml09ayxhWyh3PWwrOHwwKT4+Ml09Zn13aGlsZSgwKTthW00+PjJdPUF9ZWxzZSBmPWM9MHxhWyh3PWwrOHwwKT4+Ml07YVt3Pj4yXT1jKyhmPSgwPT0oMHwoZj1mK20mMykpPzA6NC1mfDApK218MCksYVtNPj4yXT1BLWYscCYmdTIoMHxjLDAsMHxmKX19d2hpbGUo''@;'; put 'put ''MCk7cmV0dXJuIDB8Y31mdW5jdGlvbiBWaihsKXtGdCgwfGFbMTYrKGx8PTApPj4yXSksRnQobCl9ZnVuY3Rpb24gSmNlKGwpe3ZhciBHLHEscGUsZ2UsYmUsT2UsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MDtPZT1sZSxsZT1sZSsxNnwwLEc9T2UrNHwwLHE9''@;'; put 'put ''T2UscGU9MSZhWzMyKyhsfD0wKT4+Ml0sZj0wfGFbKGdlPWwrMTZ8MCk+PjJdLGM9MHxRYShiZT0wfGFbbCs0Pj4yXSwwKTtlOmRve2lmKCFjKXtNPTAhPSgwfHBlKSxEPWwrOHwwLFI9bCsxMnwwLGM9MCxrPTE7dDpmb3IoOzspe209MCxBPWMscD0wO246Zm9yKDs7KXtpZihjPTB8ZmVbZj4+''@;'; put 'put ''MF0sTSl7aWYoYzw8MjQ+PjI0PT00MClicmVhaztiPTAhPSgwfEEpJmM8PDI0Pj4yND09NDE/MTM6MTR9ZWxzZSBpZihjPDwyND4+MjQ9PTkyKXN3aXRjaCgwfGZlW2YrMT4+MF0pe2Nhc2UgNDA6YnJlYWsgbjtjYXNlIDQxOmI9MTM7YnJlYWs7ZGVmYXVsdDpiPTE0fWVsc2UgYj0xNDtpZigx''@;'; put 'put ''Mz09KDB8Yikpe2lmKGI9MCx3PTB8bjEoMHxhW2w+PjJdLC0xLC0xLC0xKSxhW0Q+PjJdPXcsIXcpe2M9MTI7YnJlYWsgZX13PXB9ZWxzZSBpZigxND09KDB8Yikpe2lmKGI9MCwwfChjPTB8TiQobCxmKSkpYnJlYWsgZTt3PXAsZj0wfGFbUj4+Ml19cjpmb3IoOzspe2k6Zm9yKDs7KXtzd2l0''@;'; put 'put ''Y2goKGM9MHxmZVtmPj4wXSk8PDI0Pj4yNCl7Y2FzZSA0MjpjYXNlIDkyOmJyZWFrO2RlZmF1bHQ6aWYoIU0pYnJlYWsgaTtzd2l0Y2goYzw8MjQ+PjI0KXtjYXNlIDEyMzpjYXNlIDYzOmNhc2UgNDM6YnJlYWs7ZGVmYXVsdDpicmVhayBpfX1pZihNJihjPWM8PDI0Pj4yND09OTIpKWJyZWFr''@;'; put 'put ''O2lmKHA9ZisxfDAsYylzd2l0Y2goMHxmZVtwPj4wXSl7Y2FzZSAxMjM6Y2FzZSA2MzpjYXNlIDQzOmJyZWFrO2RlZmF1bHQ6YnJlYWsgaX1pZihmPWM/cDpmLCFNJiYoMHxmKT09KDErKDB8YVtnZT4+Ml0pfDApJiY5ND09KDB8ZmVbZistMT4+MF0pKWJyZWFrO2lmKDEyMz09KDB8ZmVbZj4+''@;'; put 'put ''MF0pKXtpZighKGY9MHxxY2UoZisxfDAscGUsRyxxKSkpe2I9Mjg7YnJlYWsgdH1wPTB8YVtsPj4yXSwoYz0wfGFbcT4+Ml0pP2I9MzY6Yz0wfG4xKHAsLTEsLTEsLTEpfWVsc2UgYVtHPj4yXT0wLGFbcT4+Ml09LTEsKGM9MHxmZVtmPj4wXSk8PDI0Pj4yND09NDMmJihhW0c+PjJdPTEsYz0w''@;'; put 'put ''fGZlW2Y+PjBdKSxjPDwyND4+MjQ9PTYzPyhhW3E+PjJdPTEsYz0xKTpjPS0xLGY9ZisxfDAscD0wfGFbbD4+Ml0sYj0zNjtpZigzNj09KDB8YikmJihiPTAsYz0wfFpqKHAsMHxhW0Q+PjJdLDB8YVtHPj4yXSxjLDApKSxhW0Q+PjJdPWMsIWMpe2M9MTI7YnJlYWsgZX19Yz0wfHV2KDB8YVts''@;'; put 'put ''Pj4yXSxtLDB8YVtEPj4yXSkscD0wfGZlW2Y+PjBdO2k6ZG97aWYoTSl7aWYocDw8MjQ+PjI0PT0xMjQpe2I9NDA7YnJlYWsgcn1pZighKDAhPSgwfEEpJnA8PDI0Pj4yND09NDF8cDw8MjQ+PjI0PT0wKSl7bT1jLHA9dztjb250aW51ZSBufWI9NDd9ZWxzZXtzd2l0Y2gocDw8MjQ+PjI0KXtj''@;'; put 'put ''YXNlIDA6Yj00NzticmVhayBpO2Nhc2UgOTI6YnJlYWs7ZGVmYXVsdDptPWMscD13O2NvbnRpbnVlIG59c3dpdGNoKDB8ZmVbZisxPj4wXSl7Y2FzZSAxMjQ6Y2FzZSA0MTpicmVhaztkZWZhdWx0Om09YyxwPXc7Y29udGludWUgbn1pZihjPTB8YmcoMHxhW2w+PjJdLHcsYyksMTI0PT0oMHxm''@;'; put 'put ''ZVtmKzE+PjBdKSl7cD0yO2JyZWFrIHJ9aWYoIUEpe2M9ODticmVhayBlfWY9ZisyfDAscD05Mn19d2hpbGUoMCk7aWYoNDc9PSgwfGIpJiYoYj0wLGM9MHxiZygwfGFbbD4+Ml0sdyxjKSxmPXA8PDI0Pj4yND09NDE/ZisxfDA6ZiksMHwoYz0wfGVmZShsLGMsMHxCZihiZSkpKSlicmVhayBl''@;'; put 'put ''O2lmKGM9cDw8MjQ+PjI0PT0wLChwPSgwfEEpPDEpJmMpe2I9NTA7YnJlYWsgdH1pZihwfGMpe2M9ODticmVhayBlfW09MHxmaChiZSksQT1BKy0xfDAsdz0wfGZoKGJlKX00MD09KDB8YikmJihwPTEsYz0wfGJnKDB8YVtsPj4yXSx3LGMpKSxtPTAsZj1mK3B8MCxwPWN9aWYoMHwoYz0wfEVs''@;'; put 'put ''KGJlLHApKXx8MHwoYz0wfEVsKGJlLG0pKXx8MHwoYz0wfFFhKGJlLGspKSlicmVhayBlO2M9QSsxfDAsaz1rKzF8MCxmPU0/ZisxfDA6ZisyfDB9aWYoMjg9PSgwfGIpKXtjPTEwO2JyZWFrfWlmKDUwPT0oMHxiKSl7YVtsKzIwPj4yXT1rLGM9MDticmVha319fXdoaWxlKDApO3JldHVybiBs''@;'; put 'put ''ZT1PZSwwfGN9ZnVuY3Rpb24gQiQobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIFZlLHFlLHJ0LG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wLFdlPTA7VmU9MHxlZihjfD0wKSwocWU9MD09KDB8bCl8''@;'; put 'put ''MD09KDB8cCkpfHwoYVtwKzQ4Pj4yXT0wLGFbYVtwKzM2Pj4yXT4+Ml09LTEpLHJ0PTB8RjAoOCsoKEE9MHxhW3ArMjg+PjJdKTw8Myl8MCk7ZG97aWYocnQpe2lmKGFbcnQ+PjJdPS0xLCEoV2U9MHxGMCg0KyhBPDwyKXwwKSkpe0Z0KHJ0KSxtPTEyO2JyZWFrfWZvcihhW1dlPj4yXT0tMSxt''@;'; put 'put ''PTA7IShtPj4+MD5BPj4+MCk7KW09bSsxfDA7RWwoYyxmKSxtPTB8UWEoYywwKTtlOmRve2lmKDAhPSgwfG0pfCgwfGVmKGMpKTw9KDB8VmUpKWY9cnQsUj0wLEE9MCxEPTAsTT0tMTtlbHNlIGZvcihMZT1wKzMyfDAsUmU9cCszNnwwLEhlPXArMTZ8MCxmPXJ0LFI9MCxBPTAsRD0wLE9lPTEs''@;'; put 'put ''TT0tMSxiZT0wOzspe3Q6ZG97c3dpdGNoKDB8QmYoYykpe2Nhc2UgNjp3PTB8QmYoYyksbT0wO2Rve2I9ZisobTw8Mil8MCxtPW0rMXwwfXdoaWxlKCgwfGFbYj4+Ml0pPi0xKTtmb3IoYVtiPj4yXT13PDwxfDEsYVtmKyhtPDwyKT4+Ml09LTEsbT0wOygwfGFbV2UrKG08PDIpPj4yXSk+LTE7''@;'; put 'put ''KW09bSsxfDA7YVtXZSsobSstMTw8Mik+PjJdPS0xLG09MCxiPU9lLHc9YmU7YnJlYWs7Y2FzZSAwOmlmKHBlPTB8ZmgoYyksKDB8KGI9MHxhWyhnZT1wZSsxMnwwKT4+Ml0pKT4tMSl7bT0wO2Rve3c9ZisobTw8Mil8MCxtPW0rMXwwfXdoaWxlKCgwfGFbdz4+Ml0pPi0xKTtpZihhW3c+PjJd''@;'; put 'put ''PWI8PDEsYVtmKyhtPDwyKT4+Ml09LTEsIXFlKXtmb3IobT0wOygwfGFbV2UrKG08PDIpPj4yXSk+LTE7KW09bSsxfDA7aWYoYVsodz0oMHxhW0hlPj4yXSkrKDEyKmJ8MCkrOHwwKT4+Ml09MCwoMHxtKT4wKXtpZighKG09MHxGMCg0KyhtPDwyKXwwKSkpe209MTIsYj1PZSx3PWJlO2JyZWFr''@;'; put 'put ''IHR9aWYoYVt3Pj4yXT1tLCgwfCh3PTB8YVtXZT4+Ml0pKT4tMSl7az0wLGI9bTtkb3thW2I+PjJdPXcsdz0wfGFbV2UrKChrPWsrMXwwKTw8Mik+PjJdLGI9bSsoazw8Mil8MH13aGlsZSgoMHx3KT4tMSk7bT1ifWFbbT4+Ml09LTF9fWlmKDB8KG09MHxRYShjLDB8YVtnZT4+Ml0pKSl7Yj1P''@;'; put 'put ''ZSx3PWJlO2JyZWFrIHR9aWYoMHwobT0wfFFhKGMsNikpKXtiPU9lLHc9YmU7YnJlYWsgdH19bjpkb3tzd2l0Y2goMHxhW3BlPj4yXSl7Y2FzZSAwOmlmKCgwfChxPTB8YVthW3BlKzQ+PjJdPj4yXSkpPi0xfC00PT0oMHxxKSYmKDB8YVtmPj4yXSk+LTEpe2lmKHFlKWFbcGUrMjA+PjJdPTEs''@;'; put 'put ''bT0wO2Vsc2V7aWYobT0wfHpqKGwscGUsRCksYVsoMHxhW0xlPj4yXSkrKEQ8PDIpPj4yXT1iZSwoMHxNKT4tMSl7Zm9yKGI9MHxhW1JlPj4yXSx3PTA7Rz13KzF8MCwoMHxhWyhrPWIrKHc8PDIpfDApPj4yXSk+LTE7KXc9RzthW2s+PjJdPUQsYVtiKyhHPDwyKT4+Ml09TSxhW2IrKHcrMjw8''@;'; put 'put ''Mik+PjJdPS0xLEE9QSsxfDAsTT0tMX1ETChmLHAsRCl9YVtmPj4yXT0tMSxxPU9lKzF8MCxHPWJlLFI9UisxfDAsRD1PZX1lbHNlIHE9T2UsbT0wLEc9YmU7YnJlYWs7Y2FzZSAxOms9MHxhWyhiPTB8YVtwZSs0Pj4yXSk+PjJdLGI9MHxhW2IrND4+Ml0sKG09MHxFbChjLHBlKSl8fChtPTB8''@;'; put 'put ''UWEoYyw1KSl8fChtPTB8RWwoYyxiKSl8fChtPTB8UWEoYywwKSl8fChtPTB8UWEoYywoMHxhWyh3PWsrMjB8MCk+PjJdKStPZXwwKSk/KHE9T2UsRz1iZSk6KCgwfGFbdz4+Ml0pPjA/KG09KHc9KDB8YVtiKzIwPj4yXSk+MCk/T2U6LTEsdz1PZSsoMSZ3KXwwKToobT0tMSx3PU9lKSwobT0w''@;'; put 'put ''fFFhKGMsbSkpfHwobT0wfFFhKGMsNCkpfHwobT0wfEVsKGMsaykpPyhxPXcsRz1iZSk6KHE9dyxtPTB8UWEoYywwKSxHPWJlKSk7YnJlYWs7Y2FzZSAyOmlmKHc9MHxhW3BlKzQ+PjJdLHFlKXtpZigwfChtPTB8UWEoYywxJihtPSgwfGFbZj4+Ml0pPi0xPzE6MCE9KDEmZmVbdysxMj4+MF0p''@;'; put 'put ''KSkpKXtxPU9lLEc9YmU7YnJlYWsgbn19ZWxzZXtpZigwfChtPTB8UWEoYyxEKSkpe3E9T2UsRz1iZTticmVhayBufWlmKDB8KG09MHxRYShjLDEmZmVbdysxMj4+MF0pKSl7cT1PZSxHPWJlO2JyZWFrIG59fWlmKG09MHxFbChjLHBlKSlxPU9lLEc9YmU7ZWxzZSBpZihtPTB8UWEoYywxKSlx''@;'; put 'put ''PU9lLEc9YmU7ZWxzZSBpZihtPTB8RWwoYywwfGFbdz4+Ml0pKXE9T2UsRz1iZTtlbHNlIGlmKG09MHxRYShjLDApKXE9T2UsRz1iZTtlbHNle2lmKCgwfGFbZj4+Ml0pPD0tMSYmMD09KDEmZmVbdysxMj4+MF0pKXtxPU9lLG09MCxHPTA7YnJlYWsgbn1pZihxZSltPTA7ZWxzZXtpZihtPTB8''@;'; put 'put ''emoobCxwZSxEKSxhWygwfGFbTGU+PjJdKSsoRDw8Mik+PjJdPTA9PSgxJmZlW3crMTI+PjBdKT9iZToxLCgwfE0pPi0xKXtmb3IoYj0wfGFbUmU+PjJdLHc9MDtHPXcrMXwwLCgwfGFbKGs9Yisodzw8Mil8MCk+PjJdKT4tMTspdz1HO2Fbaz4+Ml09RCxhW2IrKEc8PDIpPj4yXT1NLGFbYiso''@;'; put 'put ''dysyPDwyKT4+Ml09LTEsQT1BKzF8MCxNPS0xfURMKGYscCxEKX1hW2Y+PjJdPS0xLHE9T2UrMXwwLEc9MCxSPVIrMXwwLEQ9T2V9YnJlYWs7Y2FzZSAzOmlmKGs9MHxhWyhiPTB8YVtwZSs0Pj4yXSk+PjJdLGI9MHxhW2IrND4+Ml0scT1PZSsxfDAsbT0wfFFhKGMsKHc9KDB8YVtmPj4yXSk+''@;'; put 'put ''LTEpP3E6T2UpKXE9T2UsRz1iZTtlbHNlIGlmKG09MHxRYShjLHc/T2U6RCkpcT1PZSxHPWJlO2Vsc2UgaWYobT0wfEVsKGMsZikpcT1PZSxHPWJlO2Vsc2UgaWYobT0wfFFhKGMsKDB8YVtmPj4yXSk+Pj4zMV4xKSlxPU9lLEc9YmU7ZWxzZSBpZihtPTB8RWwoYyxwZSkpcT1PZSxHPWJlO2Vs''@;'; put 'put ''c2UgaWYobT0wfEVsKGMsYikpcT1PZSxHPWJlO2Vsc2UgaWYobT0wfEVsKGMsaykpcT1PZSxHPWJlO2Vsc2UgaWYobT0wfFFhKGMsMykpcT1PZSxHPWJlO2Vsc2UgaWYobT0wfEVsKGMsYikpcT1PZSxHPWJlO2Vsc2UgaWYobT0wfFFhKGMsMCkpcT1PZSxHPWJlO2Vsc2V7aWYoMHwobT0wfFFh''@;'; put 'put ''KGMsMikpKXtxPU9lLEc9YmU7YnJlYWsgbn1pZigwfChtPTB8RWwoYyxrKSkpe3E9T2UsRz1iZTticmVhayBufWlmKDB8KG09MHxRYShjLDApKSl7cT1PZSxHPWJlO2JyZWFrIG59aWYoKDB8YVtmPj4yXSk+LTEpe2lmKHFlKW09MDtlbHNle2lmKG09MHx6aihsLHBlLEQpLGFbKDB8YVtMZT4+''@;'; put 'put ''Ml0pKyhEPDwyKT4+Ml09YmUsKDB8TSk+LTEpe2ZvcihiPTB8YVtSZT4+Ml0sdz0wO0c9dysxfDAsKDB8YVsoaz1iKyh3PDwyKXwwKT4+Ml0pPi0xOyl3PUc7YVtrPj4yXT1ELGFbYisoRzw8Mik+PjJdPU0sYVtiKyh3KzI8PDIpPj4yXT0tMSxBPUErMXwwLE09LTF9REwoZixwLEQpfWFbZj4+''@;'; put 'put ''Ml09LTEsUj1SKzF8MCxEPU9lLHc9cX1lbHNlIG09MCx3PU9lO3E9KE9lPSgwfGFbcGUrMTY+PjJdKT4wKT93KzJ8MDp3LEc9YmUsRD1PZT93KzF8MDpEfWJyZWFrO2RlZmF1bHQ6cT1PZSxtPTAsRz1iZX19d2hpbGUoMCk7aWYoKDB8KGI9MHxhW2dlPj4yXSkpPi0xKXt3PTA7ZG97az1XZSso''@;'; put 'put ''dzw8Mil8MCx3PXcrMXwwfXdoaWxlKCgwfGFbaz4+Ml0pPi0xKTthW2s+PjJdPWIsYVtXZSsodzw8Mik+PjJdPS0xLGI9cSx3PUd9ZWxzZSBiPXEsdz1HO2JyZWFrO2Nhc2UgMTptPTB8ZmgoYykscWU/KHc9MHxhWzIwKygwfGFbYVttKzQ+PjJdPj4yXSk+PjJdLGFbbSsyMD4+Ml09KDB8QmYo''@;'; put 'put ''YykpK3csdz0wLE09LTEpOihwZT0wfEJmKGMpLGdlPTB8QmYoYyksdz1wZSxNPTA9PSgwfHBlKT9NOmdlKSxtPTAsYj1PZSx3PXFlP2JlOjA9PSgwfHcpJjE7YnJlYWs7Y2FzZSA0Onc9MHxCZihjKSxiPTB8QmYoYyksbT0wLEQ9KDB8dyk+LTE/dzpELHc9YmU7YnJlYWs7Y2FzZSA1Om09MHxm''@;'; put 'put ''aChjKSxxZT8oYVttKzIwPj4yXT0oMHxhWzIwKygwfGFbNCsoYj0wfGFbbSs0Pj4yXSk+PjJdKT4+Ml0pKygwfGFbMjArKDB8YVtiPj4yXSk+PjJdKSxtPTAsYj1PZSx3PWJlKToobT0wLGI9T2Usdz1iZSk7YnJlYWs7Y2FzZSAyOmZvcig7Oyl7aWYoISgoMHxhW2Y+PjJdKT4tMSkpe209MCxi''@;'; put 'put ''PU9lLHc9YmU7YnJlYWt9Zj1mKzR8MH1icmVhaztjYXNlIDM6Yj0wfGZoKGMpLEc9MHxmaChjKSxtPTB8ZmgoYyksZj0wfEJmKGMpLHFlPyhhW20rMjA+PjJdPSgwfGFbMjArKDB8YVsoZ2U9MHxhW20rND4+Ml0pPj4yXSk+PjJdKStmKygwfGFbMjArKDB8YVtnZSs0Pj4yXSk+PjJdKSsoKDB8''@;'; put 'put ''YVsoYmU9bSsxNnwwKT4+Ml0pPjA/MjowKSxtPWJlKTptPW0rMTZ8MCxmPTB8ZmgoYyksdz0wfEJmKGMpLGs9MHxCZihjKSwoMHxhW20+PjJdKT4wPyhxZT9tPTA6KG09MHxIJChsLGIsdyksYVsoMHxhW0xlPj4yXSkrKHc8PDIpPj4yXT0xLG18fChtPTB8SCQobCxHLGspKSxhWygwfGFbTGU+''@;'; put 'put ''PjJdKSsoazw8Mik+PjJdPTEpLFI9UisyfDAsYj1PZSx3PTEpOihtPTAsYj1PZSx3PTEpO2JyZWFrO2RlZmF1bHQ6bT0wLGI9T2Usdz1iZX19d2hpbGUoMCk7aWYoMCE9KDB8bSl8KDB8ZWYoYykpPD0oMHxWZSkpYnJlYWsgZTtPZT1iLGJlPXd9fXdoaWxlKDApO2lmKCFxZSYmKERMKGYscCxE''@;'; put 'put ''KSwoMHxNKT4tMSkpe2Zvcih3PTB8YVtwKzM2Pj4yXSxmPTA7az1mKzF8MCwoMHxhWyhiPXcrKGY8PDIpfDApPj4yXSk+LTE7KWY9azthW2I+PjJdPUQsYVt3KyhrPDwyKT4+Ml09TSxhW3crKGYrMjw8Mik+PjJdPS0xLEE9QSsxfDB9YVtwKzQ4Pj4yXT1SLGFbcCs0MD4+Ml09UixhW3ArNDQ+''@;'; put 'put ''PjJdPUEsRnQocnQpLEZ0KFdlKX1lbHNlIG09MTJ9d2hpbGUoMCk7cmV0dXJuIDB8bX1mdW5jdGlvbiBYY2UobCxjLGYscCxtKXtsfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBPZSxMZSxSZSxxZSxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxIZT0w''@;'; put 'put ''LFZlPTA7cWU9bGUsbGU9bGUrMTZ8MCxPZT1xZSsxMnwwLFZlPXFlKzh8MCxMZT1xZSs0fDAsUmU9cWUsSGU9MHxlZihjfD0wKSxhW09lPj4yXT0wLGFbVmU+PjJdPTAsZj0wfEVsKGMsZik7ZTpkb3tpZighZiYmKGY9MHxRYShjLDApLCFmKSl7dDpkb3tpZigoMHxlZihjKSk+KDB8SGUpKXtB''@;'; put 'put ''PTAsYj0wLGs9MDtuOmZvcig7Oyl7cGU9MHxCZihjKSxnZT0wfGZoKGMpO3I6ZG97c3dpdGNoKDB8cGUpe2Nhc2UgMDpzd2l0Y2goMHxhW2dlPj4yXSl7Y2FzZSAwOmlmKCEoKDB8KGdlPTB8YVsoZj0wfGFbZ2UrND4+Ml0pPj4yXSkpPi0xfC00PT0oMHxnZSkpKXtmPWs7YnJlYWsgcn1pZihh''@;'; put 'put ''WyhnZT1mKzh8MCk+PjJdPWY9KDB8YVtnZT4+Ml0pK2t8MCwoMHxmKTw9KDB8YVtWZT4+Ml0pKXtmPWs7YnJlYWsgcn1hW1ZlPj4yXT1mLGY9azticmVhayByO2Nhc2UgMzpjYXNlIDE6aWYoMHwoZj0wfEVsKGMsMHxhWzQrKHc9MHxhW2dlKzQ+PjJdKT4+Ml0pKXx8MHwoZj0wfFFhKGMsMCkp''@;'; put 'put ''fHwwfChmPTB8RWwoYywwfGFbdz4+Ml0pKSlicmVhayB0O2JyZWFrO2Nhc2UgMjppZih3PTB8YVtnZSs0Pj4yXSwwfChmPTB8UWEoYyxrKSl8fDB8KGY9MHxFbChjLGdlKSl8fDB8KGY9MHxRYShjLDEpKXx8MHwoZj0wfEVsKGMsMHxhW3c+PjJdKSl8fDB8KGY9MHxRYShjLDApKSlicmVhayB0''@;'; put 'put ''OygwfGFbdys0Pj4yXSk8PTEmJigwfGFbdys4Pj4yXSk8PTE/Zj1rOihhW09lPj4yXT0wLGY9MCksYj1iKzF8MDticmVhayByO2RlZmF1bHQ6Zj1rO2JyZWFrIHJ9aWYoZj0wfFFhKGMsMCkpYnJlYWsgdDtmPWs7YnJlYWs7Y2FzZSAxOkc9MHxhWyhxPWdlKzR8MCk+PjJdLHBlPTB8QmYoYyks''@;'; put 'put ''YVtPZT4+Ml09cGUsKDB8KGs9MHxhWyhSPUcrNHwwKT4+Ml0pKTw9MT8oMHxhW0crOD4+Ml0pPjE/KGFbTGU+PjJdPTAsKDB8ayk+MD9iZT0zMDooZj1wZSx3PTAsYmU9MzcpKTpmPXBlOihhW0xlPj4yXT0wLGJlPTMwKTtpOmRve2lmKDMwPT0oMHxiZSkpe2lmKGY9MHxJTChsLGMsMHxhW0c+''@;'; put 'put ''PjJdLCgwfGspPjE/MToyLE9lLG0sUmUsVmUpKXtiZT0zNDticmVhayBufWZvcih3PTAsTT1wZSxEPTE7Oyl7aWYoZj0wfGFbUmU+PjJdLCEodz13PzB8dXYobCx3LGYpOmYpKXtmPTEyLGJlPTM0O2JyZWFrIG59aWYoKDB8RCk+PSgwfChrPTB8YVtSPj4yXSkpKXtmPU0sYmU9Mzc7YnJlYWsg''@;'; put 'put ''aX1pZihNPTB8YVtPZT4+Ml0sMHwoZj0wfElMKGwsYywwfGFbRz4+Ml0sKDB8KEQ9RCsxfDApKTwoMHxrKT8xOjIsT2UsbSxSZSxWZSkpKXtiZT0zNDticmVhayBufX19fXdoaWxlKDApO2lmKDM3PT0oMHxiZSkpe2lmKGJlPTAsLTE9PSgwfChNPTB8YVsoUj1HKzh8MCk+PjJdKSkpe2lmKE09''@;'; put 'put ''MHxhW09lPj4yXSwwfChmPTB8SUwobCxjLDB8YVtHPj4yXSwwLE9lLDAsTGUsVmUpKSlicmVhayBuO2lmKGs9MHxaaihsLDB8YVtMZT4+Ml0sMCwtMSwwKSxhW0xlPj4yXT1rLCFrKXtmPTEyO2JyZWFrIG59Zj1NfWVsc2UgaWYoKDB8ayk8KDB8TSkpZm9yKE09ayxrPTA7Oyl7aWYoRD0wfGFb''@;'; put 'put ''T2U+PjJdLDB8KGY9MHxJTChsLGMsMHxhW0c+PjJdLDAsT2UsMCxSZSxWZSkpKXtiZT00OTticmVhayBufWlmKGs/KGY9MHx1dihsLDB8YVtSZT4+Ml0sayksYVtMZT4+Ml09Zik6YVtMZT4+Ml09Zj0wfGFbUmU+PjJdLCFmKXtmPTEyLGJlPTQ5O2JyZWFrIG59aWYoIShrPTB8bjEobCwtMSwt''@;'; put 'put ''MSwtMSkpKXtmPTEyLGJlPTQ5O2JyZWFrIG59aWYoaz0wfGJnKGwsayxmKSxhW0xlPj4yXT1rLCFrKXtmPTEyLGJlPTQ5O2JyZWFrIG59aWYoKDB8KE09TSsxfDApKT49KDB8YVtSPj4yXSkpe2Y9RDticmVha319ZWxzZSBrPTA7aWYoYVtPZT4+Ml09Zix3P2smJih3PTB8dXYobCx3LGspLGJl''@;'; put 'put ''PTU0KToodz1rLGJlPTU0KSw1ND09KDB8YmUpJiYoYmU9MCwhdykpe2Y9MTI7YnJlYWsgbn1hW3E+PjJdPWFbdys0Pj4yXSxhW2dlPj4yXT1hW3c+PjJdfXc9Zi1wZStBfDAsKGI9YistMXwwKT9BPXc6KGFbT2U+PjJdPXcsQT13LGI9MCxmPXcpO2JyZWFrO2RlZmF1bHQ6Zj1rfX13aGlsZSgw''@;'; put 'put ''KTtpZighKCgwfGVmKGMpKT4oMHxIZSkpKXtmPTA7YnJlYWsgdH1rPWZ9YnJlYWsgZX1mPTAsQT0wfXdoaWxlKDApO2FbcD4+Ml09KDB8KFZlPTB8YVtWZT4+Ml0pKT4oMHwoSGU9KDB8YVtwPj4yXSkrQXwwKSk/VmU6SGV9fXdoaWxlKDApO3JldHVybiBsZT1xZSwwfGZ9ZnVuY3Rpb24gbjEo''@;'; put 'put ''bCxjLGYscCl7dmFyIG07cmV0dXJuIGN8PTAsZnw9MCxwfD0wLChsPTB8clMobHw9MCwwLG09MHxYMShsLDAsMCwxLDIwKSkpPyhhW20+PjJdPWMsYVttKzQ+PjJdPWYsYVttKzg+PjJdPXApOmw9MCwwfGx9ZnVuY3Rpb24gdXYobCxjLGYpe2x8PTAsZnw9MDt2YXIgcD0wO3JldHVybihjfD0w''@;'; put 'put ''KSYmKChsPTB8clMobCwxLHA9MHxYMShsLDAsMCwxLDgpKSk/KGFbcD4+Ml09YyxhW3ArND4+Ml09ZixhW2wrMTY+PjJdPSgwfGFbZisxNj4+Ml0pKygwfGFbYysxNj4+Ml0pLGY9bCk6Zj0wKSwwfGZ9ZnVuY3Rpb24gS2NlKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIGssTSxELEcscD0wLG09MCxB''@;'; put 'put ''PTAsdz0wLGI9MCxSPTA7Rz1sZSxsZT1sZSsxNnwwLGs9Rys0fDAsTT1HLEQ9MHxlZihjfD0wKSxmPTB8RWwoYyxmKTtlOmRve2lmKCFmJiYoZj0wfFFhKGMsMCksIWYpKWlmKCgwfGVmKGMpKT4oMHxEKSl7dDpmb3IoOzspe3c9MHxCZihjKSxiPTB8ZmgoYyk7bjpkb3tzd2l0Y2goMHx3KXtj''@;'; put 'put ''YXNlIDA6c3dpdGNoKDB8YVtiPj4yXSl7Y2FzZSAwOmlmKC00PT0oMHwobT0wfGFbKEE9MHxhW2IrND4+Ml0pPj4yXSkpKXtpZihhW2IrOD4+Ml09MCx3PTB8RUwobCwwfGFbKGY9QSs4fDApPj4yXSwwLDExMTQxMTEsMCwwLC0xKSxhW2IrMjQ+PjJdPXcsIXcpe2Y9MTI7YnJlYWsgZX1pZih3''@;'; put 'put ''PTB8RUwobCwwfGFbZj4+Ml0sMCwxMTE0MTExLDAsMCwwfGFbQSs0Pj4yXSksYVtiKzI4Pj4yXT13LHcpYnJlYWsgbjtmPTEyO2JyZWFrIGV9aWYoZj1iKzh8MCwoMHxtKTwwKXtpZihhW2Y+PjJdPTEsdz0wfEYkKGwpLGFbYisyND4+Ml09dywhdyl7Zj0xMjticmVhayBlfWlmKHc9MHxGJChs''@;'; put 'put ''KSxhW2IrMjg+PjJdPXcsdylicmVhayBuO2Y9MTI7YnJlYWsgZX1pZihhW2Y+PjJdPTAsdz0wfEVMKGwsMHxhWyhmPUErOHwwKT4+Ml0sbSwwfGFbKHA9QSs0fDApPj4yXSwwLDAsLTEpLGFbYisyND4+Ml09dywhdyl7Zj0xMjticmVhayBlfWlmKHc9MHxFTChsLDB8YVtmPj4yXSwwfGFbQT4+''@;'; put 'put ''Ml0sMHxhW3A+PjJdLDB8YVtBKzEyPj4yXSwwfGFbQSsxNj4+Ml0sLTEpLGFbYisyOD4+Ml09dyx3KWJyZWFrIG47Zj0xMjticmVhayBlO2Nhc2UgMzppZigwfChmPTB8RWwoYyxiKSl8fDB8KGY9MHxRYShjLDEpKXx8MHwoZj0wfEVsKGMsMHxhWzQrKDB8YVsocD1iKzR8MCk+PjJdKT4+Ml0p''@;'; put 'put ''KXx8MHwoZj0wfFFhKGMsMCkpfHwwfChmPTB8RWwoYywwfGFbYVtwPj4yXT4+Ml0pKXx8KGY9MHxRYShjLDApKSlicmVhayBlO2JyZWFrIG47Y2FzZSAxOmlmKDB8KGY9MHxFbChjLGIpKXx8MHwoZj0wfFFhKGMsMikpfHwwfChmPTB8RWwoYywwfGFbNCsoMHxhWyhwPWIrNHwwKT4+Ml0pPj4y''@;'; put 'put ''XSkpfHwwfChmPTB8UWEoYywwKSl8fDB8KGY9MHxFbChjLDB8YVthW3A+PjJdPj4yXSkpfHwoZj0wfFFhKGMsMCkpKWJyZWFrIGU7YnJlYWsgbjtjYXNlIDI6aWYoMHwoZj0wfEVsKGMsYikpfHwwfChmPTB8UWEoYywzKSl8fDB8KGY9MHxFbChjLDB8YVthW2IrND4+Ml0+PjJdKSl8fChmPTB8''@;'; put 'put ''UWEoYywwKSkpYnJlYWsgZTticmVhayBuO2RlZmF1bHQ6YnJlYWsgbn1jYXNlIDE6aWYoQT0wfGFbKG09NCsoZj0wfGFbYis0Pj4yXSl8MCk+PjJdLGFbYis4Pj4yXT0xJih3PTB8YVs4KyhwPTB8YVtmPj4yXSk+PjJdPzE6MCE9KDB8YVtBKzg+PjJdKSksdz0wfHhMKGwsMHxhW3ArMjQ+PjJd''@;'; put 'put ''LDB8YVtBKzI0Pj4yXSwwLDApLGFbYisyND4+Ml09dywhdyl7Zj0xMjticmVhayBlfWlmKHc9MHx4TChsLDB8YVsyOCsoMHxhW2Y+PjJdKT4+Ml0sMHxhWzI4KygwfGFbbT4+Ml0pPj4yXSwwLDApLGFbYisyOD4+Ml09dywhdyl7Zj0xMjticmVhayBlfWJyZWFrO2Nhc2UgMzpmPTB8YVsodz0w''@;'; put 'put ''fGFbYis0Pj4yXSk+PjJdLGFbYis4Pj4yXT1wPTB8YVt3KzQ+PjJdPzAhPSgwfGFbZis4Pj4yXSkmMToxLGFbYisyND4+Ml09YVtmKzI0Pj4yXSxhW2IrMjg+PjJdPWFbZisyOD4+Ml07YnJlYWs7Y2FzZSAyOmlmKGFbYis4Pj4yXT0xJihtPTB8YVsocD04KyhmPTB8YVsoQT0wfGFbYis0Pj4y''@;'; put 'put ''XSk+PjJdKXwwKT4+Ml0/MCE9KDB8YVs4KygwfGFbQSs0Pj4yXSk+PjJdKTowKSwwfGFbcD4+Ml0pe2lmKDB8KGY9MHxUTChjLGYsMCwwLGspKSlicmVhayB0O2lmKCEocD0wfEYwKDQrKGFbaz4+Ml08PDIpfDApKSl7Zj0xMjticmVhayB0fWlmKGFbcD4+Ml09LTEsYVtNPj4yXT0wLDB8KGY9''@;'; put 'put ''MHxUTChjLDB8YVtBPj4yXSxwLE0sMCkpKXtSPTQ1O2JyZWFrIHR9aWYoYVsodz1iKzI0fDApPj4yXT0wfHhMKGwsMHxhWzI0KygwfGFbKGY9QSs0fDApPj4yXSk+PjJdLDB8YVsyNCsoMHxhW0E+PjJdKT4+Ml0scCwwfGFbTT4+Ml0pLEZ0KHApLCEoMHxhW3c+PjJdKSl7Zj0xMjticmVhayB0''@;'; put 'put ''fW09Zn1lbHNlIGFbYisyND4+Ml09YVtmKzI0Pj4yXSxtPUErNHwwO2lmKDB8YVs4KyhmPTB8YVttPj4yXSk+PjJdKXtpZigwfChmPTB8VEwoYyxmLDAsMCxrKSkpYnJlYWsgdDtpZighKHA9MHxGMCg0KyhhW2s+PjJdPDwyKXwwKSkpe2Y9MTI7YnJlYWsgdH1pZihhW3A+PjJdPS0xLGFbTT4+''@;'; put 'put ''Ml09MCwwfChmPTB8VEwoYywwfGFbbT4+Ml0scCxNLDApKSl7Uj01MjticmVhayB0fWlmKGFbKGI9YisyOHwwKT4+Ml09MHx4TChsLDB8YVsyOCsoMHxhW0E+PjJdKT4+Ml0sMHxhWzI4KygwfGFbbT4+Ml0pPj4yXSxwLDB8YVtNPj4yXSksRnQocCksISgwfGFbYj4+Ml0pKXtmPTEyO2JyZWFr''@;'; put 'put ''IHR9fWVsc2UgYVtiKzI4Pj4yXT1hW2YrMjg+PjJdfX13aGlsZSgwKTtpZigoMHxlZihjKSk8PSgwfEQpKXtmPTA7YnJlYWsgZX19KDQ1PT0oMHxSKXx8NTI9PSgwfFIpKSYmRnQocCl9ZWxzZSBmPTB9d2hpbGUoMCk7cmV0dXJuIGxlPUcsMHxmfWZ1bmN0aW9uIE1MKGwsYyxmLHApe2x8PTAs''@;'; put 'put ''Y3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wO2U6Zm9yKDs7KXtzd2l0Y2goMHxhW2w+PjJdKXtjYXNlIDI6aWYoLTE9PSgwfGFbOCsobD0wfGFbbCs0Pj4yXSk+PjJdKSYmMCE9KDB8KHc9MHxQJCgwfGFbMjgrKHc9MHxhW2w+PjJdKT4+Ml0sMHxhW3crMjQ+PjJdLGMsZixwKSkpKXts''@;'; put 'put ''PXc7YnJlYWsgZX1icmVhaztjYXNlIDM6aWYoMHwobD0wfE1MKDB8YVsobT0wfGFbbCs0Pj4yXSk+PjJdLGMsZixwKSkpYnJlYWsgZTtsPW0rNHwwO2JyZWFrO2Nhc2UgMTppZigwfChsPTB8UCQoMHxhWzI4KygwfGFbKG09MHxhW2wrND4+Ml0pPj4yXSk+PjJdLDB8YVsyNCsoMHxhWyhBPW0r''@;'; put 'put ''NHwwKT4+Ml0pPj4yXSxjLGYscCkpKWJyZWFrIGU7aWYobD0wfE1MKDB8YVttPj4yXSxjLGYscCkpYnJlYWsgZTtsPUE7YnJlYWs7ZGVmYXVsdDpsPTA7YnJlYWsgZX1sPTB8YVtsPj4yXX1yZXR1cm4gMHxsfWZ1bmN0aW9uICRjZShsKXt2YXIgdyxjPTAsZj0wLHA9MCxtPTAsQT0wO2lmKDB8''@;'; put 'put ''KHc9MHxhWzQrKGx8PTApPj4yXSkpe2lmKGw9MHxhW3c+PjJdLDB8YVsocD13KzR8MCk+PjJdKXtmPTA7ZG97MHxhW2wrKGY8PDUpKzg+PjJdJiYoKGM9MHxhW2wrKGY8PDUpKzE2Pj4yXSkmJihGdChjKSxsPTB8YVt3Pj4yXSksKGM9MHxhW2wrKGY8PDUpKzI4Pj4yXSkmJihGdChjKSxsPTB8''@;'; put 'put ''YVt3Pj4yXSkpLGY9ZisxfDB9d2hpbGUoZj4+PjA8KDB8YVtwPj4yXSk+Pj4wKX1pZigwfGwmJkZ0KGwpLDB8KGw9MHxhWyhmPXcrOHwwKT4+Ml0pKXtpZigwfGFbbCs4Pj4yXSl7Zm9yKDswfChjPTB8YVtsKzE2Pj4yXSkmJkZ0KGMpLDB8YVtsKzQwPj4yXTspbD1sKzMyfDA7bD0wfGFbZj4+''@;'; put 'put ''Ml19RnQobCl9aWYoMHwobD0wfGFbKG09dysxNnwwKT4+Ml0pKXtpZihjPTB8YVsoQT13KzI4fDApPj4yXSl7cD0wO2RveyhmPTB8YVtsKygxMipwfDApKzg+PjJdKSYmKEZ0KGYpLGM9MHxhW0E+PjJdLGw9MHxhW20+PjJdKSxwPXArMXwwfXdoaWxlKHA+Pj4wPGM+Pj4wKX1GdChsKX0wfChs''@;'; put 'put ''PTB8YVt3KzMyPj4yXSkmJkZ0KGwpLDB8KGw9MHxhW3crMjA+PjJdKSYmRnQobCksMHwobD0wfGFbdyszNj4+Ml0pJiZGdChsKSxGdCh3KX19ZnVuY3Rpb24gUCQobCxjLGYscCxtKXtjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxw''@;'; put 'put ''ZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wLFZlPTAscWU9MCxydD0wO3c9KDB8KEE9MHxhWyhsfD0wKT4+Ml0pKT4tMTtlOmRve2lmKGYpaWYodylmb3IoOzspe3c9MHxhW2M+PjJdO3Q6ZG97aWYoKDB8dyk+LTEpZm9yKHBlPWwrNHwwLGdlPWwrOHwwLGJlPWwrMTZ8MCxPZT1s''@;'; put 'put ''KzIwfDAsTGU9bCsyNHwwLFJlPWwrMjh8MCxIZT1sKzEyfDAscD0tMSxBPWM7Oyl7Zm9yKHE9dzsoMHxxKT09KDB8cCk7KXtpZighKCgwfCh3PTB8YVsoQT1BKzMyfDApPj4yXSkpPi0xKSlicmVhayB0O3E9d31mb3IoRD1mKyhhW20rKGFbbD4+Ml08PDIpPj4yXTw8NSl8MDswfGFbKHc9RCs4''@;'; put 'put ''fDApPj4yXTspRD1EKzMyfDA7aWYoYVtEKzQwPj4yXT0wLGFbRD4+Ml09YVtwZT4+Ml0sYVtEKzQ+PjJdPWFbZ2U+PjJdLGFbdz4+Ml09ZisoYVttKyhxPDwyKT4+Ml08PDUpLGFbRCsxMj4+Ml09cSxhWyhiPUQrMjB8MCk+PjJdPXA9YVtBKzE2Pj4yXXxhW2JlPj4yXXwoMHwodz0wfGFbT2U+''@;'; put 'put ''PjJdKT80OjApfCgwfGFbTGU+PjJdPzg6MCksKDB8KGs9MHxhW1JlPj4yXSkpPi0xJiYoYVtiPj4yXT0yNTZ8cCx3PWspLGFbRCsyND4+Ml09dyxwPTB8YVtMZT4+Ml0pe3c9MDtkb3tHPXcsdz13KzF8MH13aGlsZSgwIT0oMHxhW3ArKEc8PDIpPj4yXSkpO2lmKHc9MHxGMCh3PDwyKSxhW0Qr''@;'; put 'put ''Mjg+PjJdPXcsIXcpe0E9MTI7YnJlYWsgZX1pZihwPTB8YVsoTT0wfGFbTGU+PjJdKT4+Ml0pe2s9MCxiPXc7ZG97YVtiPj4yXT1wLHA9MHxhW00rKChrPWsrMXwwKTw8Mik+PjJdLGI9dysoazw8Mil8MH13aGlsZSgwIT0oMHxwKSk7dz1ifWFbdz4+Ml09MH1lbHNlIGFbRCsyOD4+Ml09MDtp''@;'; put 'put ''ZihwPTB8YVtIZT4+Ml0pZm9yKHc9MDsoMHxhW3ArKHc8PDIpPj4yXSk+LTE7KXc9dysxfDA7ZWxzZSB3PTA7aWYoYj0wfGFbKE09QSsxMnwwKT4+Ml0pZm9yKHA9MDsoMHxhW2IrKHA8PDIpPj4yXSk+LTE7KXA9cCsxfDA7ZWxzZSBwPTA7aWYoMHwoYj0wfGFbKGs9RCsxNnwwKT4+Ml0pJiZG''@;'; put 'put ''dChiKSxhW2s+PjJdPTAsKDB8KHc9cCt3fDApKT4wKXtpZihHPTB8RjAoNCsodzw8Mil8MCksYVtrPj4yXT1HLCFHKXtBPTEyO2JyZWFrIGV9aWYoMCE9KDB8KHA9MHxhW0hlPj4yXSkpJiYoMHwoVmU9MHxhW3A+PjJdKSk+LTEpe3c9MCxiPVZlO2Rve2FbRysodzw8Mik+PjJdPWIsYj0wfGFb''@;'; put 'put ''cCsoKHc9dysxfDApPDwyKT4+Ml19d2hpbGUoKDB8Yik+LTEpO1I9d31lbHNlIFI9MDtpZigwIT0oMHwoaz0wfGFbTT4+Ml0pKSYmKDB8KHFlPTB8YVtrPj4yXSkpPi0xKXtNPSgwfFIpPjAsdz1SLGI9MCxEPXFlO2Rve246ZG97aWYoTSlmb3IocD0wOzspe2lmKCgwfGFbRysocDw8Mik+PjJd''@;'; put 'put ''KT09KDB8RCkpYnJlYWsgbjtpZigoMHwocD1wKzF8MCkpPj0oMHxSKSl7cnQ9Mzk7YnJlYWt9fWVsc2UgcnQ9Mzl9d2hpbGUoMCk7Mzk9PSgwfHJ0KSYmKHJ0PTAsYVtHKyh3PDwyKT4+Ml09RCx3PXcrMXwwKSxEPTB8YVtrKygoYj1iKzF8MCk8PDIpPj4yXX13aGlsZSgoMHxEKT4tMSl9ZWxz''@;'; put 'put ''ZSB3PVI7YVtHKyh3PDwyKT4+Ml09LTF9aWYoKDB8KHc9MHxhWyhBPUErMzJ8MCk+PjJdKSk8PS0xKWJyZWFrO3A9cX19d2hpbGUoMCk7aWYoKDB8YVsobD1sKzMyfDApPj4yXSk8PS0xKXtBPTA7YnJlYWt9fWVsc2UgQT0wO2Vsc2UgaWYodyl7dz1jKzMyfDA7ZG97aWYoKDB8YVtjPj4yXSk+''@;'; put 'put ''LTEmJihhWyhydD1wKyhBPDwyKXwwKT4+Ml09MSsoMHxhW3J0Pj4yXSksKDB8YVt3Pj4yXSk+LTEpKXtBPXc7ZG97YVsocnQ9cCsoYVtsPj4yXTw8Mil8MCk+PjJdPTErKDB8YVtydD4+Ml0pLEE9QSszMnwwfXdoaWxlKCgwfGFbQT4+Ml0pPi0xKX1BPTB8YVsobD1sKzMyfDApPj4yXX13aGls''@;'; put 'put ''ZSgoMHxBKT4tMSk7QT0wfWVsc2UgQT0wfXdoaWxlKDApO3JldHVybiAwfEF9ZnVuY3Rpb24gZWYobCl7cmV0dXJuIDB8YVsxMisobHw9MCk+PjJdfWZ1bmN0aW9uIEVsKGwsYyl7dmFyIGYscCxtO3JldHVybiBsfD0wLGY9bGUsbGU9bGUrMTZ8MCxwPWYrNHwwLGFbKG09Zik+PjJdPWN8PTAs''@;'; put 'put ''YVtwPj4yXT1hW20+PjJdLGM9MHxqaihsLHApLGxlPWYsMHxjfWZ1bmN0aW9uIFFhKGwsYyl7dmFyIGYscCxtO3JldHVybiBsfD0wLGY9bGUsbGU9bGUrMTZ8MCxwPWYrNHwwLGFbKG09Zik+PjJdPWN8PTAsYVtwPj4yXT1hW20+PjJdLGM9MHxqaihsLHApLGxlPWYsMHxjfWZ1bmN0aW9uIEJm''@;'; put 'put ''KGwpe3ZhciBjLGY7cmV0dXJuIGM9MHxhWzE2KyhsfD0wKT4+Ml0sYVsoZj1sKzEyfDApPj4yXT1sPSgwfGFbZj4+Ml0pLTF8MCwwfGFbYysobDw8Mik+PjJdfWZ1bmN0aW9uIGZoKGwpe3ZhciBjLGY7cmV0dXJuIGM9MHxhWzE2KyhsfD0wKT4+Ml0sYVsoZj1sKzEyfDApPj4yXT1sPSgwfGFb''@;'; put 'put ''Zj4+Ml0pLTF8MCwwfGFbYysobDw8Mik+PjJdfWZ1bmN0aW9uIEVMKGwsYyxmLHAsbSxBLHcpe3JldHVybiBjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTAsd3w9MCwobD0wfFgxKGx8PTAsMCwwLDEsNjQpKT8oYVtsPj4yXT1jLGFbbCs0Pj4yXT1mLGFbbCs4Pj4yXT1wLGFbbCsyMD4+Ml09bSxh''@;'; put 'put ''W2wrMjQ+PjJdPUEsYVtsKzI4Pj4yXT13LGFbbCszMj4+Ml09LTEsYVtsKzM2Pj4yXT0tMSxhW2wrNDA+PjJdPS0xKTpsPTAsMHxsfWZ1bmN0aW9uIEYkKGwpe3JldHVybihsPTB8WDEobHw9MCwwLDAsMSwzMikpPyhhW2w+PjJdPS0xLGFbbCs0Pj4yXT0tMSxhW2wrOD4+Ml09LTEpOmw9MCww''@;'; put 'put ''fGx9ZnVuY3Rpb24geEwobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxtfD0wO3ZhciBxLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTA7aWYocT0wPT0oMHwocHw9MCkpKUc9MDtlbHNlIGZvcihBPTA7Oyl7aWYoISgoMHxhW3ArKEE8PDIpPj4yXSk+LTEpKXtHPUE7YnJlYWt9QT1B''@;'; put 'put ''KzF8MH1mb3Iodz0wOzspe2lmKCEoKDB8YVtjKyh3PDw1KT4+Ml0pPi0xKSl7QT0wO2JyZWFrfXc9dysxfDB9Zm9yKDsoMHxhW2YrKEE8PDUpPj4yXSk+LTE7KUE9QSsxfDA7QT0wfFgxKGwsMCwwLDEsMzIrKEErdzw8NSl8MCk7ZTpkb3tpZihBKXtpZigoMHwodz0wfGFbYz4+Ml0pKT4tMSlm''@;'; put 'put ''b3IoUj0oMHxHKT4wLGI9MDs7KXtpZihhW0ErKGI8PDUpPj4yXT13LGFbQSsoYjw8NSkrND4+Ml09YVtjKyhiPDw1KSs0Pj4yXSxhW0ErKGI8PDUpKzg+PjJdPWFbYysoYjw8NSkrOD4+Ml0sYVtBKyhiPDw1KSsxNj4+Ml09YVtjKyhiPDw1KSsxNj4+Ml18bSxhW0ErKGI8PDUpKzIwPj4yXT1h''@;'; put 'put ''W2MrKGI8PDUpKzIwPj4yXSxhW0ErKGI8PDUpKzI0Pj4yXT1hW2MrKGI8PDUpKzI0Pj4yXSxhW0ErKGI8PDUpKzI4Pj4yXT1hW2MrKGI8PDUpKzI4Pj4yXSxxJih3PTA9PSgwfChrPTB8YVsoRD1jKyhiPDw1KSsxMnwwKT4+Ml0pKSkpdz0wO2Vsc2V7aWYodylNPTA7ZWxzZSBmb3Iodz0wOzsp''@;'; put 'put ''e2lmKCEoKDB8YVtrKyh3PDwyKT4+Ml0pPi0xKSl7TT13O2JyZWFrfXc9dysxfDB9aWYoISh3PTB8WDEobCwwLDAsMCw0KyhNK0c8PDIpfDApKSl7QT0wO2JyZWFrIGV9aWYoKDB8TSk+MCl7RD0wfGFbRD4+Ml0saz0wO2Rve2Fbdysoazw8Mik+PjJdPWFbRCsoazw8Mik+PjJdLGs9aysxfDB9''@;'; put 'put ''d2hpbGUoKDB8aykhPSgwfE0pKX1lbHNlIE09MDtpZihSKXtrPTA7ZG97YVt3KyhrK008PDIpPj4yXT1hW3ArKGs8PDIpPj4yXSxrPWsrMXwwfXdoaWxlKCgwfGspIT0oMHxHKSk7az1HfWVsc2Ugaz0wO2FbdysoaytNPDwyKT4+Ml09LTF9aWYoYVtBKyhiPDw1KSsxMj4+Ml09dywoMHwodz0w''@;'; put 'put ''fGFbYysoKGI9YisxfDApPDw1KT4+Ml0pKTw9LTEpe0c9YjticmVha319ZWxzZSBHPTA7aWYodz1BKyhHPDw1KXwwLCgwfChiPTB8YVtmPj4yXSkpPi0xKXtSPTAsRD1HO2Rve2lmKGFbdz4+Ml09YixhW0ErKEQ8PDUpKzQ+PjJdPWFbZisoUjw8NSkrND4+Ml0sYVtBKyhEPDw1KSs4Pj4yXT1h''@;'; put 'put ''W2YrKFI8PDUpKzg+PjJdLGFbQSsoRDw8NSkrMTY+PjJdPWFbZisoUjw8NSkrMTY+PjJdLGFbQSsoRDw8NSkrMjA+PjJdPWFbZisoUjw8NSkrMjA+PjJdLGFbQSsoRDw8NSkrMjQ+PjJdPWFbZisoUjw8NSkrMjQ+PjJdLGFbQSsoRDw8NSkrMjg+PjJdPWFbZisoUjw8NSkrMjg+PjJdLHc9MHxh''@;'; put 'put ''WyhrPWYrKFI8PDUpKzEyfDApPj4yXSl7Zm9yKGI9MDsoMHxhW3crKGI8PDIpPj4yXSk+LTE7KWI9YisxfDA7aWYoISh3PTB8WDEobCwwLDAsMCw0KyhiPDwyKXwwKSkpe0E9MDticmVhayBlfWlmKCgwfGIpPjApe009MHxhW2s+PjJdLGs9MDtkb3thW3crKGs8PDIpPj4yXT1hW00rKGs8PDIp''@;'; put 'put ''Pj4yXSxrPWsrMXwwfXdoaWxlKCgwfGspIT0oMHxiKSl9ZWxzZSBiPTA7YVt3KyhiPDwyKT4+Ml09LTF9ZWxzZSB3PTA7YVtBKyhEPDw1KSsxMj4+Ml09dyxiPTB8YVtmKygoUj1SKzF8MCk8PDUpPj4yXSx3PUErKChEPVIrR3wwKTw8NSl8MH13aGlsZSgoMHxiKT4tMSl9YVt3Pj4yXT0tMX1l''@;'; put 'put ''bHNlIEE9MH13aGlsZSgwKTtyZXR1cm4gMHxBfWZ1bmN0aW9uIFRMKGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgcSxwZSxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wO3E9MHxlZihsfD0wKSwocGU9MCE9KDB8bSkpJiYoYVttPj4yXT0wKSxjPTB8RWwobCxjKTtl''@;'; put 'put ''OmRve2lmKGMpQT1jO2Vsc2UgaWYoUj0wPT0oMHxmKSxEPTA9PSgwfHApLCgwfGVmKGwpKT4oMHxxKSlmb3IoOzspe2M9MHxmaChsKTt0OmRve3N3aXRjaCgwfGFbYz4+Ml0pe2Nhc2UgMDpzd2l0Y2goMHxhWyhjPTB8YVtjKzQ+PjJdKT4+Ml0pe2Nhc2UtMzpicmVhaztjYXNlLTI6aWYoRCli''@;'; put 'put ''cmVhayB0O2FbcD4+Ml09YVtwPj4yXXxhW2MrND4+Ml07YnJlYWsgdDtkZWZhdWx0OmJyZWFrIHR9aWYoKDB8KHc9MHxhW2MrND4+Ml0pKT4tMSl7bjpkb3tpZighUil7Zm9yKGM9MDshKCgwfChrPTB8YVsoYj1mKyhjPDwyKXwwKT4+Ml0pKTw9LTEpOyl7aWYoKDB8ayk9PSgwfHcpKWJyZWFr''@;'; put 'put ''IG47Yz1jKzF8MH1hW2I+PjJdPXcsYVtmKyhjKzE8PDIpPj4yXT0tMX19d2hpbGUoMCk7cGUmJihhW20+PjJdPTErKDB8YVttPj4yXSkpfWJyZWFrO2Nhc2UgMzppZigwfGFbOCsodz0wfGFbKGM9MHxhW2MrND4+Ml0pPj4yXSk+PjJdKXtNPXcsRz02O2JyZWFrIHR9MHxhWzgrKGM9MHxhW2Mr''@;'; put 'put ''ND4+Ml0pPj4yXSYmKE09YyxHPTYpO2JyZWFrO2Nhc2UgMTppZigwfCh3PTB8RWwobCwwfGFbKGM9MHxhW2MrND4+Ml0pPj4yXSkpKXtBPXc7YnJlYWsgZX1NPTB8YVtjKzQ+PjJdLEc9NjticmVhaztjYXNlIDI6MHxhWzgrKGM9MHxhW2FbYys0Pj4yXT4+Ml0pPj4yXSYmKE09YyxHPTYpfX13''@;'; put 'put ''aGlsZSgwKTtpZig2PT0oMHxHKSYmKEc9MCwwfChBPTB8RWwobCxNKSkpKWJyZWFrIGU7aWYoKDB8ZWYobCkpPD0oMHxxKSl7QT0wO2JyZWFrIGV9fWVsc2UgQT0wfXdoaWxlKDApO3JldHVybiAwfEF9ZnVuY3Rpb24gamoobCxjKXtjfD0wO3ZhciBwLEEsayxNLGY9MCxtPTAsdz0wLGI9MDty''@;'; put 'put ''ZXR1cm4gTT1sZSxsZT1sZSsxNnwwLEE9TSwoMHwocD0wfGFbKGY9MTIrKGx8PTApfDApPj4yXSkpPj0oMHwoaz0wfGFbbD4+Ml0pKT8oMHxrKTwoMHwoZj0wfGFbbCs0Pj4yXSkpJiYwIT0oMHwoYj0wfFVhKDB8YVsodz1sKzE2fDApPj4yXSwobT0oMHwobT0oMHxhW2wrOD4+Ml0pK2t8MCkp''@;'; put 'put ''PigwfGYpP2Y6bSk8PDIpKSk/KGFbbD4+Ml09bSxhW3c+PjJdPWIsYVtBPj4yXT1hW2M+PjJdLGpqKGwsQSksZj0wKTpmPTEyOihhWygwfGFbbCsxNj4+Ml0pKyhwPDwyKT4+Ml09YVtjPj4yXSxhW2Y+PjJdPTErKDB8YVtmPj4yXSksZj0wKSxsZT1NLDB8Zn1mdW5jdGlvbiByUyhsLGMsZil7''@;'; put 'put ''cmV0dXJuIGN8PTAsMCE9KDB8KGZ8PTApKSYwIT0oMHwobD0wfFgxKGx8PTAsMCwwLDEsMzIpKSk/KGFbbCs0Pj4yXT1mLGFbbD4+Ml09YyxhW2wrOD4+Ml09LTEsYVtsKzEyPj4yXT0tMSk6bD0wLDB8bH1mdW5jdGlvbiBJTChsLGMsZixwLG0sQSx3LGIpe2x8PTAsZnw9MCxwfD0wLG18PTAs''@;'; put 'put ''QXw9MCx3fD0wLGJ8PTA7dmFyIGdlLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTA7Z2U9MHxlZihjfD0wKSxFbChjLGYpLGY9MHxRYShjLDApO2U6ZG97aWYoZilwPTA7ZWxzZSBmb3IocGU9MD09KDEmcHwwKSxxPTAhPSgyJnB8MCksRz0wLE09MSxmPXc7Oyl7aWYoISgoMHxlZihjKSk+''@;'; put 'put ''KDB8Z2UpKSl7cD1HLGY9MDticmVhayBlfVI9Zjt0OmZvcig7Oyl7bjpmb3IoOzspe3N3aXRjaCgwfEJmKGMpKXtjYXNlIDE6dz03O2JyZWFrIG47Y2FzZSAwOnN3aXRjaChmPTB8ZmgoYyksMHxhW2Y+PjJdKXtjYXNlIDA6dz05O2JyZWFrIHQ7Y2FzZSAzOnc9MTk7YnJlYWsgdDtjYXNlIDE6''@;'; put 'put ''dz0yNjticmVhayB0O2Nhc2UgMjp3PTMzO2JyZWFrIG59fWlmKCgwfGVmKGMpKTw9KDB8Z2UpKXtwPUcsZj0wO2JyZWFrIGV9fWlmKDc9PSgwfHcpKWY9MHxmaChjKTtlbHNlIGlmKDMzPT0oMHx3KSl7aWYoMHwoZj0wfEVsKGMsMHxhWyhwPTB8YVtmKzQ+PjJdKT4+Ml0pKSl7cD1HO2JyZWFr''@;'; put 'put ''IGV9aWYoMHwoZj0wfFFhKGMsMCkpKXtwPUc7YnJlYWsgZX1pZihmPTB8WmoobCwwfGFbcD4+Ml0sMHxhW3ArND4+Ml0sMHxhW3ArOD4+Ml0sMSZmZVtwKzEyPj4wXSksYVtSPj4yXT1mLCFmKXtwPUcsZj0xMjticmVhayBlfWY9MHxhW2YrND4+Ml19aWYoISgoMHxlZihjKSk+KDB8Z2UpKSl7''@;'; put 'put ''cD1HLGY9MDticmVhayBlfVI9Zn1pZig5PT0oMHx3KSl3PTB8YVs4KyhEPTB8YVtmKzQ+PjJdKT4+Ml0sZj0wfGFbRCs0Pj4yXSwoMHwocD0wfGFbRD4+Ml0pKT4tMXwtND09KDB8cCk/KHc9KDB8YVttPj4yXSkrd3wwLGs9RysxfDApOnBlfC0zIT0oMHxwKT8tMz09KDB8cCk/cSYwIT0oMHxN''@;'; put 'put ''KT8oYVtBKyhmPDwyKT4+Ml09MSxwPS0zLGs9RyxNPTApOihwPS0zLGs9Ryk6az1HOihmPS0xLHA9LTEsdz0tMSxrPUcpLGY9MHxuMShsLHAsZix3KSxhW1I+PjJdPWYsZj8oYVsxMisoZj0wfGFbZis0Pj4yXSk+PjJdPWFbRCsxMj4+Ml0sYVtmKzE2Pj4yXT1hW0QrMTY+PjJdLGY9MCk6Zj0x''@;'; put 'put ''MiwoMHx3KT4oMHxhW2I+PjJdKSYmKGFbYj4+Ml09dykscD1SO2Vsc2UgaWYoMTk9PSgwfHcpKXtpZihmPTB8YmcobCwwfGFbKHc9MHxhW2YrND4+Ml0pPj4yXSwwfGFbKHA9dys0fDApPj4yXSksYVtSPj4yXT1mLCFmKXtwPUcsZj0xMjticmVhayBlfWlmKEQ9MHxhW2YrND4+Ml0sMHwoZj0w''@;'; put 'put ''fEVsKGMsMHxhW3A+PjJdKSkpe3A9RzticmVhayBlfWlmKDB8KGY9MHxRYShjLDApKSl7cD1HO2JyZWFrIGV9aWYoMHwoZj0wfEVsKGMsRCs0fDApKSl7cD1HO2JyZWFrIGV9aWYoMHwoZj0wfFFhKGMsMSkpKXtwPUc7YnJlYWsgZX1pZigwfChmPTB8RWwoYywwfGFbdz4+Ml0pKSl7cD1HO2Jy''@;'; put 'put ''ZWFrIGV9az1HLHA9RCxmPTB8UWEoYywwKX1lbHNlIGlmKDI2PT0oMHx3KSl7aWYoZj0wfHV2KGwsMHxhWyhEPTB8YVtmKzQ+PjJdKT4+Ml0sMHxhWyh3PUQrNHwwKT4+Ml0pLGFbUj4+Ml09ZiwhZil7cD1HLGY9MTI7YnJlYWsgZX1pZihhWyhwPTB8YVtmKzQ+PjJdKT4+Ml09MCxhWyhrPXAr''@;'; put 'put ''NHwwKT4+Ml09MCwwfChmPTB8RWwoYywwfGFbdz4+Ml0pKSl7cD1HO2JyZWFrIGV9aWYoMHwoZj0wfFFhKGMsMCkpKXtwPUc7YnJlYWsgZX1pZigwfChmPTB8RWwoYyxrKSkpe3A9RzticmVhayBlfWlmKDB8KGY9MHxRYShjLDEpKSl7cD1HO2JyZWFrIGV9aWYoMHwoZj0wfEVsKGMsMHxhW0Q+''@;'; put 'put ''PjJdKSkpe3A9RzticmVhayBlfWs9RyxmPTB8UWEoYywwKX1pZihmKXtwPWs7YnJlYWt9Rz1rLGY9cH19d2hpbGUoMCk7cmV0dXJuIGFbbT4+Ml09KDB8YVttPj4yXSkrcCwwfGZ9ZnVuY3Rpb24gWmoobCxjLGYscCxtKXtjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTA7cmV0dXJuKGw9MHxy''@;'; put 'put ''UyhsfD0wLDIsQT0wfFgxKGwsMCwwLDEsMTYpKSk/KGFbQT4+Ml09YyxhW0ErND4+Ml09ZixhW0ErOD4+Ml09cCxmZVsoQT1BKzEyfDApPj4wXT0tMiZmZVtBPj4wXXwxJm0sYVtsKzE2Pj4yXT1hW2MrMTY+PjJdKTpsPTAsMHxsfWZ1bmN0aW9uIGJnKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHA9''@;'; put 'put ''MDtyZXR1cm4oY3w9MCkmJigwIT0oMHxmKSYwIT0oMHwobD0wfHJTKGwsMyxwPTB8WDEobCwwLDAsMSw4KSkpKT8oYVtwPj4yXT1jLGFbcCs0Pj4yXT1mLGFbbCsxNj4+Ml09KDB8YVtmKzE2Pj4yXSkrKDB8YVtjKzE2Pj4yXSksZj1sKTpmPTApLDB8Zn1mdW5jdGlvbiB6aihsLGMsZil7Y3w9''@;'; put 'put ''MCxmfD0wO3ZhciBwLG09MDtyZXR1cm4gMCE9KDB8KHA9MHxYMShsfD0wLDAsMCwwLDgpKSkmJihmPTB8bjEobCwtMyxmLC0xKSxhW3A+PjJdPWYsMCE9KDB8ZikpJiYobT0wfFgxKGwsMCwwLDAsMzIpLGFbcCs0Pj4yXT1tLDAhPSgwfG0pKT8oYVttKzQ+PjJdPWFbKGw9Yys0fDApPj4yXSxh''@;'; put 'put ''W20+PjJdPWFbYz4+Ml0sYVttKzg+PjJdPS0xLGFbbSsxMj4+Ml09LTEsYVsobT1tKzE2fDApPj4yXT0wLGFbbSs0Pj4yXT0wLGFbbSs4Pj4yXT0wLGFbbSsxMj4+Ml09MCxhW2w+PjJdPXAsYVtjPj4yXT0xLGw9MCk6bD0xMiwwfGx9ZnVuY3Rpb24gREwobCxjLGYpe2N8PTAsZnw9MDt2YXIg''@;'; put 'put ''cD0wLG09MCxBPTA7aWYoKDB8KG09MHxhWyhsfD0wKT4+Ml0pKT4tMSl7QT0wfGFbYysxNj4+Ml0scD0wLGM9bTtkb3ttPWM+Pj4xLGFbKDA9PSgxJmN8MCk/QSsoMTIqbXwwKXwwOkErKDEyKm18MCkrNHwwKT4+Ml09ZixjPTB8YVtsKygocD1wKzF8MCk8PDIpPj4yXX13aGlsZSgoMHxjKT4t''@;'; put 'put ''MSl9YVtsPj4yXT0tMX1mdW5jdGlvbiBIJChsLGMsZil7Y3w9MCxmfD0wO3ZhciBwLG09MDtyZXR1cm4gMCE9KDB8KHA9MHxYMShsfD0wLDAsMCwwLDgpKSkmJihmPTB8bjEobCwtMyxmLC0xKSxhW3ArND4+Ml09ZiwwIT0oMHxmKSkmJihtPTB8WDEobCwwLDAsMCwzMiksYVtwPj4yXT1tLDAh''@;'; put 'put ''PSgwfG0pKT8oYVttKzQ+PjJdPWFbKGw9Yys0fDApPj4yXSxhW20+PjJdPWFbYz4+Ml0sYVttKzg+PjJdPS0xLGFbbSsxMj4+Ml09LTEsYVsobT1tKzE2fDApPj4yXT0wLGFbbSs0Pj4yXT0wLGFbbSs4Pj4yXT0wLGFbbSsxMj4+Ml09MCxhW2w+PjJdPXAsYVtjPj4yXT0xLGw9MCk6bD0xMiww''@;'; put 'put ''fGx9ZnVuY3Rpb24gTiQobCxjKXtjfD0wO3ZhciBNLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDtNPWxlLGxlPWxlKzE2fDAsYj1NLG09MSYoQT0wfGFbKHc9MzIrKGx8PTApfDApPj4yXSk7ZTpkb3tzd2l0Y2goMHxmZVtjPj4wXSl7Y2FzZSA5MTpmPTB8dGZlKGwsYysxfDApO2JyZWFr''@;'; put 'put ''O2Nhc2UgOTI6aWYoMHwocD0wfG5mZShmPWMrMXwwKSkpe2Y9MHxOJChsLHApLGFbbCsxMj4+Ml09YysyO2JyZWFrIGV9c3dpdGNoKDB8KHA9MHxmZVtmPj4wXSkpe2Nhc2UgMDpmPTU7YnJlYWsgZTtjYXNlIDk4OnA9MHxuMSgwfGFbbD4+Ml0sLTIsNjQsLTEpO2JyZWFrO2Nhc2UgNjY6cD0w''@;'; put 'put ''fG4xKDB8YVtsPj4yXSwtMiwxMjgsLTEpO2JyZWFrO2Nhc2UgNjA6cD0wfG4xKDB8YVtsPj4yXSwtMiwxNiwtMSk7YnJlYWs7Y2FzZSA2MjpwPTB8bjEoMHxhW2w+PjJdLC0yLDMyLC0xKTticmVhaztjYXNlIDEyMDptPSh3PTEyMz09KDB8ZmVbKEE9YysyfDApPj4wXSkpPzg6MixBPXc/Yysz''@;'; put 'put ''fDA6QSxmPTAscD0wO2Rve2lmKCgwfChjPTB8cmZlKDB8ZmVbQStmPj4wXSkpKTwwKWJyZWFrO3A9YysocDw8NCl8MCxmPWYrMXwwfXdoaWxlKCgwfHApPDExMTQxMTImKDB8Zik8KDB8bSkpO2lmKGY9QStmfDAsdyl7aWYoMTI1IT0oMHxmZVtmPj4wXSkpe2Y9OTticmVhayBlfWY9ZisxfDB9''@;'; put 'put ''Yj0wfGFbbD4+Ml0sYVsodz1sKzI0fDApPj4yXT0xKyhrPTB8YVt3Pj4yXSkscD0wfG4xKGIscCxwLGspLGY9ZistMXwwO2JyZWFrO2Nhc2UgNjM6Y2FzZSA0MzpjYXNlIDEyMzppZihtKXtrPTM3O2JyZWFrIGV9Zj0xMzticmVhayBlO2Nhc2UgMTI0OmlmKDB8bSl7az0zNzticmVhayBlfWY9''@;'; put 'put ''MHxuMSgwfGFbbD4+Ml0sLTEsLTEsLTEpLGs9NDU7YnJlYWsgZTtkZWZhdWx0OmlmKCEoMD09KDB8bSkmKHArLTQ5fDApPj4+MDw5KSl7az0zNzticmVhayBlfWI9cCstNDh8MCxrPTB8YVtsPj4yXSxhWyh3PWwrMjR8MCk+PjJdPTErKHA9MHxhW3c+PjJdKSxwPTB8bjEoaywtNCxiLHApLGFb''@;'; put 'put ''KGs9bCsyOHwwKT4+Ml09KDB8Yik8KDB8KHc9MHxhW2s+PjJdKSk/dzpifWM9ZisxfDAsZj1wLGs9NDU7YnJlYWs7Y2FzZSA0NjpmPTB8YVtsPj4yXSxhWyhtPWwrMjR8MCk+PjJdPTErKHA9MHxhW20+PjJdKSw0JkE/KHA9MHxuMShmLDAsOSxwKSxrPTB8YVtsPj4yXSxhW20+PjJdPTErKGY9''@;'; put 'put ''MHxhW20+PjJdKSxmPTAhPSgwfHApJjAhPSgwfChmPTB8bjEoaywxMSwxMTE0MTExLGYpKSk/MHxiZygwfGFbbD4+Ml0scCxmKTowKTpmPTB8bjEoZiwwLDExMTQxMTEscCksYz1jKzF8MCxrPTQ1O2JyZWFrO2Nhc2UgOTQ6aWYoMD09KDB8bSkmJigwfGFbbCsxNj4+Ml0pIT0oMHxjKSl7Zj1j''@;'; put 'put ''LGs9Mzc7YnJlYWsgZX1jPWMrMXwwLGY9MHxuMSgwfGFbbD4+Ml0sLTIsMSwtMSksaz00NTticmVhaztjYXNlIDM2OmlmKGY9YysxfDAsMD09KDB8bSkmJjB8ZmVbZj4+MF0pe2Y9YyxrPTM3O2JyZWFrIGV9Yz1mLGY9MHxuMSgwfGFbbD4+Ml0sLTIsMiwtMSksaz00NTticmVhaztjYXNlIDYz''@;'; put 'put ''OmNhc2UgNDM6Y2FzZSAxMjM6Y2FzZSA0MjptP2Y9MTM6KGY9YyxrPTM3KTticmVhaztjYXNlIDEyNDptP2s9MzY6KGY9YyxrPTM3KTticmVhaztjYXNlIDA6az0zNjticmVhaztkZWZhdWx0OmY9YyxrPTM3fX13aGlsZSgwKTtpZigzNj09KDB8aykpZj0wfG4xKDB8YVtsPj4yXSwtMSwtMSwt''@;'; put 'put ''MSksaz00NTtlbHNlIGlmKDM3PT0oMHxrKSlpZigoMHwoQT0wfGM4KGIsZiwtMSkpKTwwKWY9MjtlbHNle2Rve2lmKDImYVt3Pj4yXSl7aWYoMD09KDB8RWooMHxhW2I+PjJdKSkmJjA9PSgwfE1qKDB8YVtiPj4yXSkpKXtrPTQzO2JyZWFrfW09MCE9KDB8KG09MHxuMSh3PTB8YVtsPj4yXSww''@;'; put 'put ''fG92KDB8YVtiPj4yXSksbT0wfG92KDB8YVtiPj4yXSksMHxhWyhwPWwrMjR8MCk+PjJdKSkpJjAhPSgwfChjPTB8bjEoMHxhW2w+PjJdLHc9MHxBZygwfGFbYj4+Ml0pLGM9MHxBZygwfGFbYj4+Ml0pLDB8YVtwPj4yXSkpKT8wfGJnKDB8YVtsPj4yXSxtLGMpOjB9ZWxzZSBrPTQzfXdoaWxl''@;'; put 'put ''KDApOzQzPT0oMHxrKSYmKG09MHxuMSgwfGFbbD4+Ml0sbT0wfGFbYj4+Ml0sbSwwfGFbKHA9bCsyNHwwKT4+Ml0pKSxhW3A+PjJdPTErKDB8YVtwPj4yXSksYz1mK0F8MCxmPW0saz00NX1yZXR1cm4gNDU9PSgwfGspJiYoZj8oYVtsKzg+PjJdPWYsYVtsKzEyPj4yXT1jLGY9MCk6Zj0xMiks''@;'; put 'put ''bGU9TSwwfGZ9ZnVuY3Rpb24gcWNlKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBiLG09MCxBPTAsdz0wO2I9bGUsbGU9bGUrMTZ8MCxtPWIsbD0wfFYkKGx8PTAsdz1iKzR8MCksNDQ9PSgwfGZlW2w+PjBdKT8obD0wfFYkKGwrMXwwLG0pLEE9MHxhW20+PjJdLG09MHxhW3c+PjJdKToo''@;'; put 'put ''YVttPj4yXT13PTB8YVt3Pj4yXSxBPXcsbT13KTtkb3tpZihtPj4+MD4yNTV8KDB8QSk+MjU1fCgwfEEpPi0xJigwfEEpPCgwfG0pKWw9MDtlbHNle2lmKCFjKXtpZig5MiE9KDB8ZmVbbD4+MF0pKXtsPTA7YnJlYWt9bD1sKzF8MH0xMjU9PSgwfGZlW2w+PjBdKT8oYVtmPj4yXT1tLGFbcD4+''@;'; put 'put ''Ml09QSxsPWwrMXwwKTpsPTB9fXdoaWxlKDApO3JldHVybiBsZT1iLDB8bH1mdW5jdGlvbiBlZmUobCxjLGYpe2x8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTA7cmV0dXJuKDB8YVsxMisoY3w9MCk+PjJdKT4tMT8wIT0oMHwocD0wfG4xKDB8YVtsPj4yXSwtMSwtMSwtMSkpKSYmMCE9KDB8KG09''@;'; put 'put ''MHx1digwfGFbbD4+Ml0scCxjKSkpPyhhW20rMTY+PjJdPXA9MHxhW2MrMTY+PjJdLEE9Nik6cD0xMjoobT1jLHA9MHxhW2MrMTY+PjJdLEE9NiksNj09KDB8QSkmJihhW20rMTI+PjJdPWYsYVttKzE2Pj4yXT1wKzEsYVtsKzg+PjJdPW0scD0wKSwwfHB9ZnVuY3Rpb24gViQobCxjKXtsfD0w''@;'; put 'put ''O3ZhciBmPTAscD0wLG09MDtpZihhWyhjfD0wKT4+Ml09LTEsKCgwfGZlW2w+PjBdKS00OHwwKT4+PjA8MTApZm9yKGFbYz4+Ml09MCxmPWwsbT0wLHA9MHxmZVtsPj4wXTthW2M+PjJdPW09KDEwKm18MCktNDgrKHA8PDI0Pj4yNCl8MCwhKCgwfG0pPjI1NXwoKChwPTB8ZmVbKGw9ZisxfDAp''@;'; put 'put ''Pj4wXSk8PDI0Pj4yNCktNDh8MCk+Pj4wPjkpOylmPWw7cmV0dXJuIDB8bH1mdW5jdGlvbiB0ZmUobCxjKXtjfD0wO3ZhciBnZSxmPTAscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wO2lmKGdlPWxlLGxlPWxlKzI4OHwwLG09Z2UsYVsoZj1nZSsyNjR8''@;'; put 'put ''MCk+PjJdPWFbKGx8PTApPj4yXSxhWyhBPWYrOHwwKT4+Ml09MCxhW2YrMTI+PjJdPTMyLEc9MHxGMCgxMjgpLGFbKHBlPWYrNHwwKT4+Ml09RyxHKXthWyhwPW0rNHwwKT4+Ml09MCxhW20+PjJdPTEmKEc9OTQ9PSgwfGZlW2M+PjBdKSksYz0wfGZ1bmN0aW9uIGlmZShsLGMsZixwKXtsfD0w''@;'; put 'put ''LGZ8PTAscHw9MDt2YXIgUixxLGJlLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxHPTAscGU9MCxnZT0wO2JlPWxlLGxlPWxlKzMyfDAscT1iZSs0fDAsdz0wfGM4KFI9YmUsY3w9MCwtMSksbT0wfGZlW2M+PjBdO2U6ZG97aWYoKDB8dyk+PTEpe3BlPXArNHwwLEQ9bCszMnwwLEE9Yyxi''@;'; put 'put ''PXc7dDpmb3IoOzspe2lmKCEoKHc9KDB8QSk9PSgwfGMpKXxtPDwyND4+MjQhPTkzKSl7Z2U9NTticmVha31uOmRve2lmKCEod3xtPDwyND4+MjQhPTQ1KSl7c3dpdGNoKDB8ZmVbQSsxPj4wXSl7Y2FzZSA5MzpicmVhayBuO2Nhc2UgNDU6YnJlYWs7ZGVmYXVsdDptPTExO2JyZWFrIGV9aWYo''@;'; put 'put ''OTM9PSgwfGZlW0ErMj4+MF0pKXttPTExO2JyZWFrIGV9fX13aGlsZSgwKTtuOmRve2lmKG08PDI0Pj4yND09OTEpe3N3aXRjaCgwfGZlW0ErMT4+MF0pe2Nhc2UgNjE6Y2FzZSA0NjptPTM7YnJlYWsgZTtjYXNlIDU4OmJyZWFrO2RlZmF1bHQ6Z2U9MTc7YnJlYWsgbn13PUErMnwwLG09MDty''@;'; put 'put ''OmZvcig7Oyl7c3dpdGNoKDB8ZmVbdyttPj4wXSl7Y2FzZSAwOmdlPTE2O2JyZWFrIHQ7Y2FzZSA1ODpicmVhayByfWlmKCEoKDB8bSk8MTMpKXtnZT0xNjticmVhayB0fW09bSsxfDB9aWYoZ28oMHxxLDB8dywwfG0pLGZlW3ErbT4+MF09MCwhKGI9MHxwY2UocSkpKXtnZT0xNjticmVhayB0''@;'; put 'put ''fWlmKEE9dysobSsyKXwwLDkzIT0oMHxmZVt3KyhtKzEpPj4wXSkpe2dlPTE2O2JyZWFrIHR9aWYoMHxhW3A+PjJdKXtpZigoMHwobT0wfGFbcGU+PjJdKSk+NjMpe209MTI7YnJlYWsgZX1hW3BlPj4yXT1tKzEsYVtwKzgrKG08PDIpPj4yXT1ifWVsc2UgbT0xMTE0MTExLE09MCxrPTEsZ2U9''@;'; put 'put ''MjV9ZWxzZSBnZT0xN313aGlsZSgwKTtpZigxNz09KDB8Z2UpKWlmKGdlPTAsdz0wfGFbUj4+Ml0sNDU9PSgwfGZlWyhBPUErYnwwKT4+MF0pJiY5MyE9KDB8ZmVbKEc9QSsxfDApPj4wXSkpe2lmKCgwfChBPTB8YzgoUixHLC0xKSkpPDF8KDB8dyk+KDB8KG09MHxhW1I+PjJdKSkpe209MTE7''@;'; put 'put ''YnJlYWsgZX1iPTAsTT13LEE9RytBfDAsaz0wLGdlPTI1fWVsc2UgYj0wLG09dyxNPXcsaz0wLGdlPTI1O2lmKDI1PT0oMHxnZSkpe2lmKGdlPTAsISh3PTB8R2ooZikpKXttPTEyO2JyZWFrIGV9aWYoYVt3Pj4yXT1NLGFbdys0Pj4yXT1tLGFbdysxMj4+Ml09YixhW3crOD4+Ml09LTEsIShr''@;'; put 'put ''fDA9PSgyJmFbRD4+Ml18MCkpJiYwIT0oMHxhZmUoZixNLG0pKSl7bT0xMjticmVhayBlfX1pZihiPTB8YzgoUixBLC0xKSxtPTB8ZmVbQT4+MF0sKDB8Yik8MSl7Z2U9MzticmVhayBlfX1pZig1PT0oMHxnZSkpe2FbbCsxMj4+Ml09QSsxLG09MDticmVha31pZigxNj09KDB8Z2UpKXttPTQ7''@;'; put 'put ''YnJlYWt9fWVsc2UgZ2U9M313aGlsZSgwKTtyZXR1cm4gMz09KDB8Z2UpJiYobT1tPDwyND4+MjQ/Mjo3KSxsZT1iZSwwfG19KGwsRz9jKzF8MDpjLGYsbSk7ZTpkb3tpZihjKWY9MDtlbHNle2lmKEc9MD09KDB8YVttPj4yXSkpcD0wO2Vsc2V7aWYoeDEoMHxhW3BlPj4yXSwwfGFbQT4+Ml0s''@;'; put 'put ''NCwxMTEpLCEoYz0wfEdqKGYpKSl7Yz0xMixmPTA7YnJlYWt9aWYoYVtjPj4yXT0xMTE0MTEyLGFbYys0Pj4yXT0xMTE0MTEyLGFbYys4Pj4yXT0tMSxjPTB8YVtwPj4yXSl7aWYoIShwPTB8WDEoMHxhW2w+PjJdLDAsMCwwLDQrKGY9Yzw8Mil8MCkpKXtjPTEyLGY9MDticmVha31nbygwfHAs''@;'; put 'put ''bSs4fDAsMHxmKSxhW3ArKGM8PDIpPj4yXT0wfWVsc2UgcD0wfWlmKCgwfChNPTB8YVtBPj4yXSkpPjApZm9yKEQ9MHxhW3BlPj4yXSxSPWwrMjR8MCxmPTAsYz0wLGs9MDs7KXttPTB8YVsoYj0wfGFbRCsoazw8Mik+PjJdKT4+Ml0sdz0wfGFbKEE9Yis0fDApPj4yXTtkb3tpZighRyl7aWYo''@;'; put 'put ''KDB8bSk+KDB8Yykpe2FbYj4+Ml09YyxhW0E+PjJdPW0rLTEsYz13KzF8MCxxPTE0O2JyZWFrfWM9KDB8KGI9dysxfDApKT49KDB8Yyk/YjpjO2JyZWFrfXE9MTR9d2hpbGUoMCk7aWYoMTQ9PSgwfHEpJiYocT0wLGFbYis4Pj4yXT1hW1I+PjJdLGFbYisxNj4+Ml09cCxiPTB8clMoMHxhW2w+''@;'; put 'put ''PjJdLDAsYiksIShmPTB8YmcoMHxhW2w+PjJdLGYsYikpKSl7Yz0xMixmPTA7YnJlYWsgZX1pZigoMHwoaz1rKzF8MCkpPj0oMHxNKSl7Yz0wO2JyZWFrfX1lbHNlIGM9MCxmPTB9fXdoaWxlKDApO0Z0KDB8YVtwZT4+Ml0pLGFbKHBlPWwrMjR8MCk+PjJdPTErKDB8YVtwZT4+Ml0pLGFbbCs4''@;'; put 'put ''Pj4yXT1mfWVsc2UgYz0xMjtyZXR1cm4gbGU9Z2UsMHxjfWZ1bmN0aW9uIG5mZShsKXt2YXIgYztmb3IoYz0wfGZlWyhsfD0wKT4+MF0sbD0wOygwfGZlWzYzNzUyKyhsPDwzKT4+MF0pIT1jPDwyND4+MjQ7KWlmKDEyPT0oMHwobD1sKzF8MCkpKXtsPTEyO2JyZWFrfXJldHVybiAwfGFbNjM3''@;'; put 'put ''NTIrKGw8PDMpKzQ+PjJdfWZ1bmN0aW9uIHJmZShsKXt2YXIgYz0wO3JldHVybihjPShsfD0wKS00OHwwKT4+PjA8MTA/MHxjOjB8KCgoYz0zMnxsKS05N3wwKT4+PjA8Nj9jKy04N3wwOi0xKX1mdW5jdGlvbiBHaihsKXt2YXIgcCxtLHcsYz0wLGY9MCxBPTAsYj0wO3JldHVybigwfChmPTB8''@;'; put 'put ''YVsodz04KyhsfD0wKXwwKT4+Ml0pKT49KDB8KG09MHxhWyhwPWwrMTJ8MCk+PjJdKSk/KDB8bSk8PTMyNzY3JiYoYVtwPj4yXT1tPDwxLDAhPSgwfChjPTB8VWEoMHxhWyhBPWwrNHwwKT4+Ml0sbTw8MykpKSk/KGFbQT4+Ml09YyxmPTB8YVt3Pj4yXSxiPTYpOmM9MDooYz0wfGFbbCs0Pj4y''@;'; put 'put ''XSxiPTYpLDY9PSgwfGIpJiYoYVt3Pj4yXT1mKzEsYj0wfFgxKDB8YVtsPj4yXSwwLDAsMSwyMCksYVtjKyhmPDwyKT4+Ml09YixjPWIpLDB8Y31mdW5jdGlvbiBhZmUobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTA7ZTpkb3tpZigoMHxjKT4oMHxmKSljPTA7ZWxz''@;'; put 'put ''ZSBmb3IoOzspe3Q6ZG97aWYoMHxNaihjKSlmb3IobT0wfG92KGMpLHA9bTs7KXtpZihBPWMrMXwwLHA9cCsxfDAsKDB8Yyk+PSgwfGYpKXt3PW0sYz1BLEE9MTI7YnJlYWsgdH1pZigoMHxvdihBKSkhPSgwfHApKXt3PW0sYz1BLEE9MTI7YnJlYWt9Yz1BfWVsc2V7aWYoISgwfEVqKGMpKSl7''@;'; put 'put ''Yz1jKzF8MDticmVha31mb3IocD1tPTB8QWcoYyk7Oyl7aWYoQT1jKzF8MCxwPXArMXwwLCgwfGMpPj0oMHxmKSl7dz1tLGM9QSxBPTEyO2JyZWFrIHR9aWYoKDB8QWcoQSkpIT0oMHxwKSl7dz1tLGM9QSxBPTEyO2JyZWFrfWM9QX19fXdoaWxlKDApO2lmKDEyPT0oMHxBKSl7aWYoQT0wLCEo''@;'; put 'put ''bT0wfEdqKGwpKSl7Yz0tMTticmVhayBlfWFbbT4+Ml09dyxhW20rND4+Ml09cCstMSxhW20rOD4+Ml09LTF9aWYoKDB8Yyk+KDB8Zikpe2M9MDticmVha319fXdoaWxlKDApO3JldHVybiAwfGN9ZnVuY3Rpb24gbGZlKGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgdyxiLGss''@;'; put 'put ''TSxSLEE9MCxEPTA7cmV0dXJuIFI9bGUsbGU9bGUrMTZ8MCxNPVIsKDB8KGw9MHxhWzQwKyhiPTB8YVs0KyhsfD0wKT4+Ml0pPj4yXSkpPjAmMCE9KDB8KHc9MD09KDgmYVsoaz1iKzU2fDApPj4yXXwwKT9mOjApKT8obD0wfEYwKGw8PDIpKT8oQT1sLGY9bCxEPTMpOmw9MTI6KEE9MCxmPTAs''@;'; put 'put ''RD0zKSwzPT0oMHxEKSYmKGw9MHxhW2IrNjA+PjJdPzB8ZnVuY3Rpb24gc2ZlKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBKcixMcixsMCxWaSxPaSxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsUmU9''@;'; put 'put ''MCxIZT0wLFZlPTAscWU9MCxydD0wLFdlPTAsYXQ9MCxTdD0wLGt0PTAsc3Q9MCxFdD0wLFp0PTAsY3Q9MCxidD0wLGFuPTAsU249MCxIbj0wLHVyPTAsSHI9MCxFcj0wLGZyPTAsRHI9MDtPaT1sZSxsZT1sZSsxNnwwLGFbKGwwPU9pKT4+Ml09MCxHPTEmcCxKcj0yJnAsUj00JmFbKExyPWwr''@;'; put 'put ''NTZ8MCk+PjJdLFZpPTB8UiQoMCwwKTtlOmRve2lmKFZpKXtpZighKHE9MHxYMShWaSwwLDAsMCwzMikpKXt3ZyhWaSkscD0xMjticmVha31hW3ErMjQ+PjJdPTAsYVtxKzI4Pj4yXT0wLChwZT0wfGFbKERyPWwrNDB8MCk+PjJdKT8ocD0wfEYwKHBlPDwyKSk/KGs9cCxiPXAsU3Q9Nik6KEQ9''@;'; put 'put ''MCxNPTAsaz1wLHA9MTIsYj0wLHc9MCxBPTApOihrPTAsYj0wLFN0PTYpO3Q6ZG97aWYoNj09KDB8U3QpKXtpZihwPTB8YVtsKzI4Pj4yXSl7aWYoIShwPTB8RjAocDw8MykpKXtEPXAsTT0wLHA9MTIsdz0wLEE9MDticmVha31EPXAsdz1wfWVsc2UgRD0wLHc9MDtpZihwPTB8YVsoZnI9bCs1''@;'; put 'put ''MnwwKT4+Ml0pe2lmKCEocD0wfEYwKHA8PDIpKSl7TT1wLHA9MTIsQT0wO2JyZWFrfU09cCxBPXB9ZWxzZSBNPTAsQT0wO1NuPWwrOHwwLEhuPWwrMTJ8MCx1cj0wPT0oMHxmKSxIcj0wIT0oMHxmKSxFcj1sKzMyfDAsYW49MCE9KDB8UiksYnQ9MD09KDB8RyksYmU9YyxwPTEsZ2U9LTEsUmU9''@;'; put 'put ''LTEsUj1wZSxhdD0wO246Zm9yKDs7KXtpZigoMHxSKT4wKXtHPTA7ZG97YVtrKyhHPDwyKT4+Ml09LTEsdXJ8fChhW2YrKEc8PDIpPj4yXT0tMSxSPTB8YVtEcj4+Ml0pLEc9RysxfDB9d2hpbGUoKDB8Ryk8KDB8UikpfWlmKCgwfChSPTB8YVtmcj4+Ml0pKT4wJiZ1MigwfEEsMCxSPDwyfDAp''@;'; put 'put ''LFp0PXArZ2V8MCwoMHwocD0wfGM4KGwwLGJlLDQpKSk8MSl7aWYoKDB8cCk8MCl7cD0xO2JyZWFrIHR9cD0xfWlmKEV0PWJlK3B8MCxjdD0wfGFbbDA+PjJdLDB8YVsoRz04KyhSPTB8YVtTbj4+Ml0pfDApPj4yXSl7Zm9yKEhlPTAhPSgwfFp0KSxWZT05NT09KDB8YXQpLHFlPTA9PSgwfFp0''@;'; put 'put ''KSxXZT1hbiYxMD09KDB8YXQpLHJ0PSgwfFp0KTwxJmJ0LExlPVIsUj0wLE9lPTAsYmU9Rzs7KXtHPTB8YVsoZ2U9TGUrMjB8MCk+PjJdO3I6ZG97aWYoRyl7aWYoMD09KDEmR3wwKXxydHxXZSl7aWYoMiZHfDAmJiEoMD09KChzdD0wfGFbbDA+PjJdKXxKcnwwKXxhbiYxMD09KDB8c3QpKSl7''@;'; put 'put ''cGU9T2U7YnJlYWt9ZG97aWYoMTYmR3wwKXtpZihWZSl7cGU9T2U7YnJlYWsgcn1pZigwfGJzKGF0KSl7cGU9T2U7YnJlYWsgcn1pZig5NT09KDB8KEc9MHxhW2wwPj4yXSkpKWJyZWFrO2lmKCEoMHxicyhHKSkpe3BlPU9lO2JyZWFrIHJ9fX13aGlsZSgwKTtpZigzMiYoRz0wfGFbZ2U+PjJd''@;'; put 'put ''KSl7aWYoVmUpe2lmKDk1PT0oMHwoRz0wfGFbbDA+PjJdKSkpe3BlPU9lO2JyZWFrfX1lbHNlIGlmKChzdD0wPT0oMHxicyhhdCkpKXw5NT09KDB8KEc9MHxhW2wwPj4yXSkpKXtwZT1PZTticmVha31pZigwfGJzKEcpKXtwZT1PZTticmVha31HPTB8YVtnZT4+Ml19cGU9MHxhW2wwPj4yXTtk''@;'; put 'put ''b3tpZigwIT0oMHxwZSkmSGUmMCE9KDY0Jkd8MCkpe2lmKFZlP0c9MTooRz0wIT0oMHxicyhhdCkpLHBlPTB8YVtsMD4+Ml0pLDk1PT0oMHxwZSkpe2lmKEcpe3BlPU9lO2JyZWFrIHJ9YnJlYWt9aWYoR14wIT0oMHxicyhwZSkpKWJyZWFrO3BlPU9lO2JyZWFrIHJ9fXdoaWxlKDApO2lmKCEo''@;'; put 'put ''MTI4JmFbZ2U+PjJdKSl7U3Q9NDk7YnJlYWt9aWYocWV8MD09KDB8KEc9MHxhW2wwPj4yXSkpKXtwZT1PZTticmVha31pZihWZT9wZT0xOihwZT0wIT0oMHxicyhhdCkpLEc9MHxhW2wwPj4yXSksOTU9PSgwfEcpKXtpZihwZSl7U3Q9NDk7YnJlYWt9cGU9T2U7YnJlYWt9aWYocGVeMCE9KDB8''@;'; put 'put ''YnMoRykpKXtwZT1PZTticmVha31TdD00OTticmVha31wZT1PZX1lbHNlIFN0PTQ5fXdoaWxlKDApO2Rve2lmKDQ5PT0oMHxTdCkpe2lmKFN0PTAsIU9lKXtSPTB8YVtMZSsxNj4+Ml0scGU9MHxhW2JlPj4yXTticmVha31pZihHPTB8YVsocGU9cSsyOHwwKT4+Ml0pcT1HO2Vsc2V7aWYoIShH''@;'; put 'put ''PTB8WDEoVmksMCwwLDAsMzIpKSl7U3Q9NTM7YnJlYWsgbn1pZihhW0crMjQ+PjJdPXEsYVtHKzI4Pj4yXT0wLHN0PTB8WDEoVmksMCwwLDAsYVtEcj4+Ml08PDIpLGFbRysyMD4+Ml09c3QsIXN0KXtTdD02MDticmVhayBufWFbcGU+PjJdPUcscT1HfWlmKGFbcT4+Ml09WnQsYVtxKzQ+PjJd''@;'; put 'put ''PUV0LGFbcSs4Pj4yXT1hW2JlPj4yXSxhW3ErMTI+PjJdPWFbTGUrMTI+PjJdLGFbcSsxNj4+Ml09YVtsMD4+Ml0sKDB8YVtEcj4+Ml0pPjApe3BlPTB8YVtxKzIwPj4yXSxHPTA7ZG97YVtwZSsoRzw8Mik+PjJdPWFbaysoRzw8Mik+PjJdLEc9RysxfDB9d2hpbGUoKDB8Ryk8KDB8YVtEcj4+''@;'; put 'put ''Ml0pKX1pZihHPTB8YVtMZSsxNj4+Ml0pe2lmKCgwfChwZT0wfGFbRz4+Ml0pKTw9LTEpe3BlPU9lO2JyZWFrfWdlPTB8YVtxKzIwPj4yXTtkb3tHPUcrNHwwLGFbZ2UrKHBlPDwyKT4+Ml09WnQscGU9MHxhW0c+PjJdfXdoaWxlKCgwfHBlKT4tMSk7cGU9T2V9ZWxzZSBwZT1PZX19d2hpbGUo''@;'; put 'put ''MCk7aWYoISgwfGFbKGJlPUxlKzQwfDApPj4yXSkpYnJlYWs7TGU9TGUrMzJ8MCxPZT1wZX1pZihSKXtpZigoMHwoRz0wfGFbUj4+Ml0pKT4tMSlkb3thW2srKEc8PDIpPj4yXT1adCxHPTB8YVsoUj1SKzR8MCk+PjJdfXdoaWxlKCgwfEcpPi0xKX1lbHNlIFI9MDtwZT8oYmU9WnQsZ2U9RXQs''@;'; put 'put ''SGU9cGUsVmU9UixTdD03OSk6U3Q9MTcxfWVsc2UgUj0wLFN0PTE3MTtyOmZvcig7Oyl7aWYoNzk9PSgwfFN0KSl7aWYoKDB8SGUpPT0oMHxhW0huPj4yXSkpe2lmKCgwfFJlKT49KDB8YmUpKXtpZighKEhyJigwfFJlKT09KDB8YmUpKSl7Uj1WZSxTdD0xNzE7Y29udGludWV9aWYoISgwfHok''@;'; put 'put ''KFI9MHxhW0RyPj4yXSwwfGFbRXI+PjJdLGssZikpKXtSPVZlLFN0PTE3MTtjb250aW51ZX19ZWxzZXtpZih1cil7UmU9YmUsUj1WZSxTdD0xNzE7Y29udGludWV9Uj0wfGFbRHI+PjJdfWlmKCEoKDB8Uik+MCkpe1JlPWJlLFI9VmUsU3Q9MTcxO2NvbnRpbnVlfWZvcihSPTA7OylpZihhW2Yr''@;'; put 'put ''KFI8PDIpPj4yXT1hW2srKFI8PDIpPj4yXSwoMHwoUj1SKzF8MCkpPj0oMHxhW0RyPj4yXSkpe1JlPWJlLFI9VmUsU3Q9MTcxO2NvbnRpbnVlIHJ9fWlmKDAhPSgwfGFbKExlPUhlKzh8MCk+PjJdKSYmMCE9KDI1NiZhW0hlKzIwPj4yXXwwKSl7aWYoaiQoMSsoRz0wfGFbSGUrMjQ+PjJdKXww''@;'; put 'put ''LEQsLTkmYVtMcj4+Ml0sbCxrLGJlKSwwfHMyKGMrKHN0PTB8YVtEKyhHPDwzKT4+Ml0pfDAsZ2UrLTF8MCxHPSgwfGFbRCsoRzw8MykrND4+Ml0pLXN0fDApKXtSPVZlLFN0PTE3MTtjb250aW51ZX1pZihSPTEmKHN0PTA9PSgwfEcpKSxwZT0wfGFbSGUrMTI+PjJdLHN0JiYwfGFbTSsocGU8''@;'; put 'put ''PDIpPj4yXSl7Uj1WZSxTdD0xNzE7Y29udGludWV9aWYoYVtNKyhwZTw8Mik+PjJdPVIsZ2U9Z2UrKEc9RystMXwwKXwwLEc9RytiZXwwLHBlPTB8YVtsMD4+Ml0sKDB8KFI9MHxjOChsMCxnZSw0KSkpPDEpe2lmKCgwfFIpPDApe3A9MTticmVhayB0fVI9MX1rdD1nZStSfDAsc3Q9Un1lbHNl''@;'; put 'put ''e2lmKCEocGU9MHxhW2wwPj4yXSkpe1I9VmUsU3Q9MTcxO2NvbnRpbnVlfWlmKCgwfChSPTB8YzgobDAsZ2UsNCkpKTwxKXtpZigoMHxSKTwwKXtwPTE7YnJlYWsgdH1SPTF9Rz1iZSxrdD1nZStSfDAsc3Q9Un1pZihiZT1HK3B8MCwhKDB8YVtMZT4+Ml0pKXtwPXN0LFI9VmUsU3Q9MTcxO2Nv''@;'; put 'put ''bnRpbnVlfWZvcihxZT0wIT0oMHxiZSkscnQ9OTU9PSgwfHBlKSxXZT0wPT0oMHxiZSksU3Q9YW4mMTA9PSgwfHBlKSxhdD0oMHxiZSk8MSZidCxPZT0wLFI9VmU7Oyl7aTpkb3tpZigoMHxhW0hlPj4yXSk+Pj4wPD1wZT4+PjApe2lmKCgwfGFbSGUrND4+Ml0pPj4+MDxwZT4+PjApYnJlYWs7''@;'; put 'put ''cD0wfGFbKGdlPUhlKzIwfDApPj4yXTtkb3tpZigwfHApe2lmKCEoMD09KDEmcHwwKXxhdHxTdCl8fDImcHwwJiYhKDA9PSgoVmU9MHxhW2wwPj4yXSl8SnJ8MCl8YW4mMTA9PSgwfFZlKSkpYnJlYWsgaTtkb3tpZigxNiZwfDApe2lmKHJ0fHwwfGJzKHBlKSlicmVhayBpO2lmKDk1PT0oMHwo''@;'; put 'put ''cD0wfGFbbDA+PjJdKSkpYnJlYWs7aWYoISgwfGJzKHApKSlicmVhayBpfX13aGlsZSgwKTtpZigzMiYocD0wfGFbZ2U+PjJdKSl7aWYocnQpe2lmKDk1PT0oMHwocD0wfGFbbDA+PjJdKSkpYnJlYWsgaX1lbHNlIGlmKChWZT0wPT0oMHxicyhwZSkpKXw5NT09KDB8KHA9MHxhW2wwPj4yXSkp''@;'; put 'put ''KWJyZWFrIGk7aWYoMHxicyhwKSlicmVhayBpO3A9MHxhW2dlPj4yXX1HPTB8YVtsMD4+Ml07ZG97aWYoMCE9KDB8RykmcWUmMCE9KDY0JnB8MCkpe2lmKHJ0P3A9MToocD0wIT0oMHxicyhwZSkpLEc9MHxhW2wwPj4yXSksOTU9PSgwfEcpKXtpZihwKWJyZWFrIGk7YnJlYWt9aWYocF4wIT0o''@;'; put 'put ''MHxicyhHKSkpYnJlYWs7YnJlYWsgaX19d2hpbGUoMCk7ZG97aWYoMTI4JmFbZ2U+PjJdfDApe2lmKFdlfDA9PSgwfChwPTB8YVtsMD4+Ml0pKSlicmVhayBpO2lmKHJ0P0c9MTooRz0wIT0oMHxicyhwZSkpLHA9MHxhW2wwPj4yXSksOTU9PSgwfHApKXtpZihHKWJyZWFrO2JyZWFrIGl9aWYo''@;'; put 'put ''R14wIT0oMHxicyhwKSkpYnJlYWsgaTticmVha319d2hpbGUoMCk7cD0wfGFbZ2U+PjJdO2Rve2lmKDQmcCl7aWYoMiZhW0xyPj4yXXwwKWJyZWFrO2lmKCEoMHx1OChwZSwwfGFbSGUrMjQ+PjJdKSkpYnJlYWsgaTtwPTB8YVtnZT4+Ml19fXdoaWxlKDApO2Rve2lmKDQmcHwwKXtpZighKDIm''@;'; put 'put ''YVtMcj4+Ml0pfHwwfHU4KFZlPTB8QWcocGUpLDB8YVsocD1IZSsyNHwwKT4+Ml0pKWJyZWFrO2lmKCEoMHx1OChWZT0wfG92KHBlKSwwfGFbcD4+Ml0pKSlicmVhayBpfX13aGlsZSgwKTtpZighKDgmYVtnZT4+Ml0pKWJyZWFrO2lmKDB8WiQoMHxhW0hlKzI4Pj4yXSxwZSwyJmFbTHI+PjJd''@;'; put 'put ''KSlicmVhayBpfX13aGlsZSgwKTtpZighT2Upe09lPTB8YVtMZT4+Ml0sUj0wfGFbSGUrMTY+PjJdO2JyZWFrfWlmKHA9MHxhWyhHPXErMjh8MCk+PjJdKXE9cDtlbHNle2lmKCEocD0wfFgxKFZpLDAsMCwwLDMyKSkpe1N0PTE0NTticmVhayBufWlmKGFbcCsyND4+Ml09cSxhW3ArMjg+PjJd''@;'; put 'put ''PTAsVmU9MHxYMShWaSwwLDAsMCxhW0RyPj4yXTw8MiksYVtwKzIwPj4yXT1WZSwhVmUpe1N0PTE1MjticmVhayBufWFbRz4+Ml09cCxxPXB9aWYoYVtxPj4yXT1iZSxhW3ErND4+Ml09a3QsYVtxKzg+PjJdPWFbTGU+PjJdLGFbcSsxMj4+Ml09YVtIZSsxMj4+Ml0sYVtxKzE2Pj4yXT1hW2ww''@;'; put 'put ''Pj4yXSwoMHxhW0RyPj4yXSk+MCl7Rz0wfGFbcSsyMD4+Ml0scD0wO2Rve2FbRysocDw8Mik+PjJdPWFbaysocDw8Mik+PjJdLHA9cCsxfDB9d2hpbGUoKDB8cCk8KDB8YVtEcj4+Ml0pKX1pZighKHA9MHxhW0hlKzE2Pj4yXSl8fCgwfChHPTB8YVtwPj4yXSkpPD0tMSlicmVhaztnZT0wfGFb''@;'; put 'put ''cSsyMD4+Ml07ZG97YVtnZSsoRzw8Mik+PjJdPWJlLEc9MHxhWyhwPXArNHwwKT4+Ml19d2hpbGUoKDB8Ryk+LTEpfX13aGlsZSgwKTtpZighKDB8YVsoTGU9SGUrNDB8MCk+PjJdKSlicmVhaztIZT1IZSszMnwwfWlmKCFPZSl7cD1zdCxTdD0xNzE7Y29udGludWV9aWYoUilpZigoMHwocD0w''@;'; put 'put ''fGFbUj4+Ml0pKT4tMSl7ZG97Uj1SKzR8MCxhW2srKHA8PDIpPj4yXT1iZSxwPTB8YVtSPj4yXX13aGlsZSgoMHxwKT4tMSk7cGU9UmUsRz1rdCxwPXN0fWVsc2UgcGU9UmUsRz1rdCxwPXN0O2Vsc2UgcGU9UmUsRz1rdCxwPXN0LFI9MH1lbHNlIGlmKDE3MT09KDB8U3QpKXtpZihTdD0wLCEo''@;'; put 'put ''Z2U9MHxhW3ErMjQ+PjJdKSlicmVhaztpZigyNTYmYVsyMCsoT2U9MHxhW3ErOD4+Ml0pPj4yXXwwJiYoYVtNKyhhW3ErMTI+PjJdPDwyKT4+Ml09MCksYmU9MHxhW3E+PjJdLExlPTB8YVtxKzQ+PjJdLGFbbDA+PjJdPWFbcSsxNj4+Ml0sKDB8KHBlPTB8YVtEcj4+Ml0pKT4wKXtxPTB8YVtx''@;'; put 'put ''KzIwPj4yXSxHPTA7ZG97YVtrKyhHPDwyKT4+Ml09YVtxKyhHPDwyKT4+Ml0sRz1HKzF8MH13aGlsZSgoMHxHKTwoMHxwZSkpO3E9Z2UscGU9UmUsRz1MZX1lbHNlIHE9Z2UscGU9UmUsRz1MZX1nZT1HLFJlPXBlLEhlPU9lLFZlPVIsU3Q9Nzl9aWYoKFI9KDB8UmUpPi0xKXwwPT0oMHxhW2ww''@;'; put 'put ''Pj4yXSkpe1N0PTE4MDticmVha31hW2wwPj4yXT1jdCxiZT1FdCxnZT1adCxSPTB8YVtEcj4+Ml0sYXQ9Y3R9aWYoNTM9PSgwfFN0KSl7aWYod2coVmkpLDB8ayYmRnQoYiksMHxEJiZGdCh3KSwhTSl7cD0xMjticmVhayBlfUZ0KEEpLHA9MTI7YnJlYWsgZX1pZig2MD09KDB8U3QpKXtpZih3''@;'; put 'put ''ZyhWaSksMHxrJiZGdChiKSwwfEQmJkZ0KHcpLCFNKXtwPTEyO2JyZWFrIGV9RnQoQSkscD0xMjticmVhayBlfWlmKDE0NT09KDB8U3QpKXtpZih3ZyhWaSksMHxrJiZGdChiKSwwfEQmJkZ0KHcpLCFNKXtwPTEyO2JyZWFrIGV9RnQoQSkscD0xMjticmVhayBlfWlmKDE1Mj09KDB8U3QpKXtp''@;'; put 'put ''Zih3ZyhWaSksMHxrJiZGdChiKSwwfEQmJkZ0KHcpLCFNKXtwPTEyO2JyZWFrIGV9RnQoQSkscD0xMjticmVhayBlfWlmKDE4MD09KDB8U3QpKXthW20+PjJdPVJlLHA9MSYoMV5SKTticmVha319fXdoaWxlKDApO3dnKFZpKSwwfGsmJkZ0KGIpLDB8RCYmRnQodyksTSYmRnQoQSl9ZWxzZSBw''@;'; put 'put ''PTEyfXdoaWxlKDApO3JldHVybiBsZT1PaSwwfHB9KGIsYyxBLG0sTSk6MHxmdW5jdGlvbiB1ZmUobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEhyLEVyLGZyLERyLExyLGwwLE9pLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxi''@;'; put 'put ''ZT0wLE9lPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTAsV2U9MCxhdD0wLFN0PTAsa3Q9MCxzdD0wLEV0PTAsWnQ9MCxjdD0wLGJ0PTAsYW49MCxTbj0wLEhuPTAsdXI9MCxKcj0wLFZpPTA7aWYoT2k9bGUsbGU9bGUrMTZ8MCxhWyhMcj1PaSk+PjJdPTAsTT0xJnAsZnI9MiZwLGs9''@;'; put 'put ''NCZhWyhEcj1sKzU2fDApPj4yXSxsMD0wfEYwKHA9MTIrKEVyPShIcj1mPzB8YVtsKzQwPj4yXTowKTw8MikrKHc9KGI9MHxhW2wrNTI+PjJdKTw8MykrKChBPXcrOHwwKSsoMHxBcihFcixiKSk8PDEpfDApKXtpZih1MigwfGwwLDAsMHxwKSxBPTMmKHA9KHVyPShwPShSPShwPShEPShwPWww''@;'; put 'put ''K0VyfDApKygwPT0oMHwoRD0zJnApKT8wOjQtRHwwKXwwKStBfDApKygwPT0oMHwoUj0zJnApKT8wOjQtUnwwKXwwKStBfDApKygwPT0oMHwodXI9MyZwKSk/MDo0LXVyfDApfDApK3d8MCksdz0oMHxiKT4wKXtmb3IocD1wKygwPT0oMHxBKT8wOjQtQXwwKXwwLEE9MDthW1IrKEE8PDMpKzQ+''@;'; put 'put ''PjJdPXAsYVtEKyhBPDwzKSs0Pj4yXT1wPXArRXJ8MCwhKCgwfChBPUErMXwwKSk+PSgwfGIpKTspcD1wK0VyfDA7aWYodyl7cD0wO2Rve2FbdXIrKHA8PDMpPj4yXT0tMSxwPXArMXwwfXdoaWxlKCgwfHApPCgwfGIpKX19KDB8KHA9MHxjOChMcixjLDQpKSk8MT8oMHxwKTwwP3A9MTooYj0x''@;'; put 'put ''LFZpPTExKTooYj1wLFZpPTExKTtlOmRve2lmKDExPT0oMHxWaSkpe2ZvcihIbj1sKzh8MCxTbj0wIT0oMHxrKSxzdD0wPT0oMHxNKSxFdD0oMHxIcik+MCxadD1sKzEyfDAsY3Q9KDB8SHIpPDEsYnQ9bCs0NHwwLGFuPWwrMzJ8MCxTdD1sKzM2fDAsa3Q9MD09KDB8SHIpLHc9MCxSZT1jK2J8''@;'; put 'put ''MCxMZT0wLGs9MCxwPS0xLEE9RCxXZT1sMCxWZT1ELEhlPVI7Oyl7aWYoKDB8cCk8MCl7TT04KyhsPTB8YVtIbj4+Ml0pfDA7dDpkb3tpZigwfGFbTT4+Ml0pZm9yKHE9MCE9KDB8TGUpLHBlPTk1PT0oMHx3KSxnZT0wPT0oMHxMZSksT2U9U24mMTA9PSgwfHcpLGJlPSgwfExlKTwxJnN0Ozsp''@;'; put 'put ''e246Zm9yKDtHPWwrMTJ8MCwhKCgwfGFbdXIrKGFbRz4+Ml08PDMpPj4yXSk+PSgwfExlKSk7KXtpZighKGM9MHxhWyhSPWwrMjB8MCk+PjJdKSl7Vmk9NDY7YnJlYWt9cjpkb3tpZigwPT0oMSZjfDApfGJlfE9lKXtpZigyJmN8MCYmISgwPT0oKGF0PTB8YVtMcj4+Ml0pfGZyfDApfFNuJjEw''@;'; put 'put ''PT0oMHxhdCkpKWJyZWFrO2Rve2lmKDE2JmN8MCl7aWYocGV8fDB8YnModykpYnJlYWsgcjtpZig5NT09KDB8KGM9MHxhW0xyPj4yXSkpKWJyZWFrO2lmKCEoMHxicyhjKSkpYnJlYWsgcn19d2hpbGUoMCk7aWYoMzImKGM9MHxhW1I+PjJdKSl7aWYocGUpe2lmKDk1PT0oMHwoYz0wfGFbTHI+''@;'; put 'put ''PjJdKSkpYnJlYWt9ZWxzZSBpZigoYXQ9MD09KDB8YnModykpKXw5NT09KDB8KGM9MHxhW0xyPj4yXSkpKWJyZWFrO2lmKDB8YnMoYykpYnJlYWs7Yz0wfGFbUj4+Ml19RD0wfGFbTHI+PjJdO2Rve2lmKDAhPSgwfEQpJnEmMCE9KDY0JmN8MCkpe2lmKHBlP2M9MTooYz0wIT0oMHxicyh3KSks''@;'; put 'put ''RD0wfGFbTHI+PjJdKSw5NT09KDB8RCkpe2lmKGMpYnJlYWsgcjticmVha31pZihjXjAhPSgwfGJzKEQpKSlicmVhazticmVhayByfX13aGlsZSgwKTtpZighKDEyOCZhW1I+PjJdKSl7Vmk9NDY7YnJlYWsgbn1pZihnZXwwPT0oMHwoYz0wfGFbTHI+PjJdKSkpYnJlYWs7aWYocGU/RD0xOihE''@;'; put 'put ''PTAhPSgwfGJzKHcpKSxjPTB8YVtMcj4+Ml0pLDk1PT0oMHxjKSl7aWYoRCl7Vmk9NDY7YnJlYWsgbn1icmVha31pZihEXjAhPSgwfGJzKGMpKSlicmVhaztWaT00NjticmVhayBufX13aGlsZSgwKTtpZighKDB8YVsoTT1sKzQwfDApPj4yXSkpYnJlYWsgdDtsPWwrMzJ8MH1pZig0Nj09KDB8''@;'; put 'put ''VmkpKXtpZihWaT0wLGFbQT4+Ml09YVtNPj4yXSxFdCYmdTIoMHxhW0ErND4+Ml0sLTEsMHxFciksMHwoTT0wfGFbbCsxNj4+Ml0pJiYoMHwoSnI9MHxhW00+PjJdKSk+LTEpe0Q9QSs0fDAsYz1Kcjtkb3soMHxjKTwoMHxIcikmJihhWygwfGFbRD4+Ml0pKyhjPDwyKT4+Ml09TGUpLGM9MHxh''@;'; put 'put ''WyhNPU0rNHwwKT4+Ml19d2hpbGUoKDB8Yyk+LTEpfWlmKChNPSgwfGFbQT4+Ml0pIT0oMHxhW1p0Pj4yXSkpfGN0KWs9TT9rOjEscD1NP3A6TGUsTT1BKzR8MDtlbHNle2s9MHxhWyhNPUErNHwwKT4+Ml0scD0wO2Rve2FbZisocDw8Mik+PjJdPWFbaysocDw8Mik+PjJdLHA9cCsxfDB9d2hp''@;'; put 'put ''bGUoKDB8cCkhPSgwfEhyKSk7az0xLHA9TGV9YVt1cisoKGF0PTB8YVtHPj4yXSk8PDMpPj4yXT1MZSxhW3VyKyhhdDw8MykrND4+Ml09TSxBPUErOHwwfWlmKCEoMHxhWyhNPWwrNDB8MCk+PjJdKSlicmVhaztsPWwrMzJ8MH19d2hpbGUoMCk7aWYoYVtBPj4yXT0wLCEoQT0wfGFbTHI+PjJd''@;'; put 'put ''KSlicmVhazt3PUF9ZWxzZSBpZihrdHx8ISgoMHxBKSE9KDB8VmUpJjAhPSgwfCh3PTB8YVtMcj4+Ml0pKSkpYnJlYWs7aWYoYXQ9TGUrYnwwLCgwfChBPTB8YzgoTHIsUmUsNCkpKTwxKXtpZigoMHxBKTwwKXtwPTE7YnJlYWsgZX1iPTF9ZWxzZSBiPUE7aWYocnQ9UmUrYnwwLDAhPSgwfGsp''@;'; put 'put ''JjAhPSgwfGFbYnQ+PjJdKSl7aWYoMHxhW1ZlPj4yXSl7cGU9KDB8KHE9MHxhWyhHPTB8YVtTdD4+Ml0pPj4yXSkpPi0xLFI9VmUsQT1IZTtkb3tEPVIrNHwwO3Q6ZG97aWYocGUpe009MCxjPXE7ZG97aWYobD0wfGFbRysoKDF8TSk8PDIpPj4yXSwoMHxjKT49KDB8SHIpfHwoMHxhWyhrPTB8''@;'; put 'put ''YVtEPj4yXSkrKGw8PDIpPj4yXSk9PSgwfGFbZisobDw8Mik+PjJdKSYmKDB8YVtrKyhjPDwyKT4+Ml0pPCgwfGFbZisoYzw8Mik+PjJdKSlicmVhayB0O2M9MHxhW0crKChNPU0rMnwwKTw8Mik+PjJdfXdoaWxlKCgwfGMpPi0xKTtNPUQsVmk9NzV9ZWxzZSBNPUQsaz0wfGFbRD4+Ml0sVmk9''@;'; put 'put ''NzV9d2hpbGUoMCk7NzU9PSgwfFZpKSYmKFZpPTAsYVtBPj4yXT1hW1I+PjJdLHFlPTB8YVsoUmU9QSs0fDApPj4yXSxhW1JlPj4yXT1rLGFbTT4+Ml09cWUsQT1BKzh8MCksUj1SKzh8MH13aGlsZSgwIT0oMHxhW1I+PjJdKSl9ZWxzZSBBPUhlO2FbQT4+Ml09MCxxZT1WZSxrPTB9ZWxzZSBx''@;'; put 'put ''ZT1IZSxIZT1WZTtpZihNPTB8YVtIZT4+Ml0pZm9yKGdlPTAhPSgwfGF0KSxiZT05NT09KDB8dyksT2U9MD09KDB8YXQpLFJlPVNuJjEwPT0oMHx3KSxMZT0oMHxhdCk8MSZzdCxwZT1IZSxsPVdlLEE9cWU7Oyl7aWYoMHxhWyhjPU0rOHwwKT4+Ml0pZm9yKHE9cGUrNHwwLEc9bCxSPWM7Oyl7''@;'; put 'put ''dDpkb3tpZigoMHxhW00+PjJdKT4+PjA8PXc+Pj4wJiYoMHxhW00rND4+Ml0pPj4+MD49dz4+PjApe2w9MHxhWyhEPU0rMjB8MCk+PjJdO2Rve2lmKDB8bCl7aWYoISgwPT0oMSZsfDApfExlfFJlKSl7bD1HO2JyZWFrIHR9aWYoMiZsfDAmJiEoMD09KChXZT0wfGFbTHI+PjJdKXxmcnwwKXxT''@;'; put 'put ''biYxMD09KDB8V2UpKSl7bD1HO2JyZWFrIHR9ZG97aWYoMTYmbHwwKXtpZihiZSl7bD1HO2JyZWFrIHR9aWYoMHxicyh3KSl7bD1HO2JyZWFrIHR9aWYoOTU9PSgwfChsPTB8YVtMcj4+Ml0pKSlicmVhaztpZighKDB8YnMobCkpKXtsPUc7YnJlYWsgdH19fXdoaWxlKDApO2lmKDMyJihsPTB8''@;'; put 'put ''YVtEPj4yXSkpe2lmKGJlKXtpZig5NT09KDB8KGw9MHxhW0xyPj4yXSkpKXtsPUc7YnJlYWsgdH19ZWxzZSBpZigoV2U9MD09KDB8YnModykpKXw5NT09KDB8KGw9MHxhW0xyPj4yXSkpKXtsPUc7YnJlYWsgdH1pZigwfGJzKGwpKXtsPUc7YnJlYWsgdH1sPTB8YVtEPj4yXX1jPTB8YVtMcj4+''@;'; put 'put ''Ml07ZG97aWYoMCE9KDB8YykmZ2UmMCE9KDY0Jmx8MCkpe2lmKGJlP2w9MToobD0wIT0oMHxicyh3KSksYz0wfGFbTHI+PjJdKSw5NT09KDB8Yykpe2lmKGwpe2w9RzticmVhayB0fWJyZWFrfWlmKGxeMCE9KDB8YnMoYykpKWJyZWFrO2w9RzticmVhayB0fX13aGlsZSgwKTtkb3tpZigxMjgm''@;'; put 'put ''YVtEPj4yXXwwKXtpZihPZXwwPT0oMHwobD0wfGFbTHI+PjJdKSkpe2w9RzticmVhayB0fWlmKGJlP2M9MTooYz0wIT0oMHxicyh3KSksbD0wfGFbTHI+PjJdKSw5NT09KDB8bCkpe2lmKGMpYnJlYWs7bD1HO2JyZWFrIHR9aWYoY14wIT0oMHxicyhsKSkpe2w9RzticmVhayB0fWJyZWFrfX13''@;'; put 'put ''aGlsZSgwKTtsPTB8YVtEPj4yXTtkb3tpZig0Jmwpe2lmKDImYVtEcj4+Ml18MClicmVhaztpZighKDB8dTgodywwfGFbTSsyND4+Ml0pKSl7bD1HO2JyZWFrIHR9bD0wfGFbRD4+Ml19fXdoaWxlKDApO2Rve2lmKDQmbHwwKXtpZighKDImYVtEcj4+Ml0pfHwwfHU4KFdlPTB8QWcodyksMHxh''@;'; put 'put ''WyhsPU0rMjR8MCk+PjJdKSlicmVhaztpZighKDB8dTgoV2U9MHxvdih3KSwwfGFbbD4+Ml0pKSl7bD1HO2JyZWFrIHR9fX13aGlsZSgwKTtpZighKDgmYVtEPj4yXSkpYnJlYWs7aWYoMHxaJCgwfGFbTSsyOD4+Ml0sdywyJmFbRHI+PjJdKSl7bD1HO2JyZWFrIHR9fX13aGlsZSgwKTtpZihF''@;'; put 'put ''dCl7Yz0wfGFbcT4+Ml0sbD0wO2Rve2FbRysobDw8Mik+PjJdPWFbYysobDw8Mik+PjJdLGw9bCsxfDB9d2hpbGUoKDB8bCkhPSgwfEhyKSl9bD0wfGFbTSsxNj4+Ml07ZG97aWYoMHxsKXtpZigoMHwoYz0wfGFbbD4+Ml0pKTw9LTEpYnJlYWs7ZG97KDB8Yyk8KDB8SHIpJiYoYVtHKyhjPDwy''@;'; put 'put ''KT4+Ml09YXQpLGM9MHxhWyhsPWwrNHwwKT4+Ml19d2hpbGUoKDB8Yyk+LTEpfX13aGlsZSgwKTtpZigoMHxhWyhjPXVyKygobD0wfGFbTSsxMj4+Ml0pPDwzKXwwKT4+Ml0pPj0oMHxhdCkpe2lmKCEoMHx6JChIciwwfGFbYW4+PjJdLEcsYz0wfGFbKGw9MHxhW3VyKyhsPDwzKSs0Pj4yXSk+''@;'; put 'put ''PjJdKSkpe2w9RzticmVha31pZihhW2w+PjJdPUcsKDB8YVtSPj4yXSkhPSgwfGFbWnQ+PjJdKSl7bD1jO2JyZWFrfWlmKCFFdCl7az0xLGw9YyxwPWF0O2JyZWFrfWZvcihwPTA7OylpZihhW2YrKHA8PDIpPj4yXT1hW0crKHA8PDIpPj4yXSwoMHwocD1wKzF8MCkpPT0oMHxIcikpe2s9MSxs''@;'; put 'put ''PWMscD1hdDticmVhayB0fX1hW0E+PjJdPVdlPTB8YVtSPj4yXSxEPTB8YVsoVmU9QSs0fDApPj4yXSxhW1ZlPj4yXT1HLGFbYz4+Ml09YXQsYVt1cisobDw8MykrND4+Ml09VmU7ZG97aWYoKDB8YVtadD4+Ml0pPT0oMHxXZSkpe2lmKC0xPT0oMHxwKSl7aWYoIUV0KXtwPWF0LGs9MTticmVh''@;'; put 'put ''a31wPTB9ZWxzZXtpZighRXR8fCgwfGFbRz4+Ml0pPigwfGFbZj4+Ml0pKWJyZWFrO3A9MH1kb3thW2YrKHA8PDIpPj4yXT1hW0crKHA8PDIpPj4yXSxwPXArMXwwfXdoaWxlKCgwfHApPCgwfEhyKSk7cD1hdCxrPTF9fXdoaWxlKDApO2w9RCxBPUErOHwwfWVsc2UgbD1HfXdoaWxlKDApO2lm''@;'; put 'put ''KCEoMHxhWyhSPU0rNDB8MCk+PjJdKSlicmVhaztNPU0rMzJ8MCxHPWx9aWYoIShNPTB8YVsocGU9cGUrOHwwKT4+Ml0pKXtNPWw7YnJlYWt9fWVsc2UgTT1XZSxBPXFlO2FbQT4+Ml09MCxSZT1ydCxMZT1hdCxXZT1NLFZlPXFlfWFbbT4+Ml09cCxwPj4+PTMxfX13aGlsZSgwKTtGdChsMCl9''@;'; put 'put ''ZWxzZSBwPTEyO3JldHVybiBsZT1PaSwwfHB9KGIsYyxBLG0sTSksbHx8aiQodyxwLDB8YVtrPj4yXSxiLEEsMHxhW00+PjJdKSxBJiZGdChmKSksbGU9UiwwfGx9ZnVuY3Rpb24gaiQobCxjLGYscCxtLEEpe2x8PTAsY3w9MCxwfD0wLG18PTA7dmFyIHc9MCxiPTAsaz0wLE09MCxEPTAsUj0w''@;'; put 'put ''LEc9MCxxPTA7aWYoMD09KDgmKGZ8PTApfDApJigwfChBfD0wKSk+LTEmJihSPTB8YVtwKzE2Pj4yXSxEPTAhPSgwfGwpJjAhPSgwfChHPTB8YVtwKzI4Pj4yXSkpKSl7TT0wfGFbcCs0OD4+Ml0saz0wO2Rve2FbKHc9Yysoazw8Myl8MCk+PjJdPWI9KDB8KGY9MHxhW1IrKDEyKmt8MCk+PjJd''@;'; put 'put ''KSk9PSgwfE0pP0E6MHxhW20rKGY8PDIpPj4yXSxhWyhwPWMrKGs8PDMpKzR8MCk+PjJdPWY9KDB8KGY9MHxhW1IrKDEyKmt8MCkrND4+Ml0pKT09KDB8TSk/QTowfGFbbSsoZjw8Mik+PjJdLC0xPT0oMHxmKXwtMT09KDB8YikmJihhW3A+PjJdPS0xLGFbdz4+Ml09LTEpLGs9aysxfDB9d2hp''@;'; put 'put ''bGUoaz4+PjA8bD4+PjAmaz4+PjA8Rz4+PjApO2lmKEQpe2Y9MDtkb3tpZihiPWMrKGY8PDMpKzR8MCwwfChrPTB8YVtSKygxMipmfDApKzg+PjJdKSYmKDB8KHE9MHxhW2s+PjJdKSk+LTEpe3c9MCxtPXEscD0wfGFbKE09YysoZjw8Myl8MCk+PjJdO2RveygwfHApPj0oMHxhW2MrKG08PDMp''@;'; put 'put ''Pj4yXSkmJigwfGFbYj4+Ml0pPD0oMHxhW2MrKG08PDMpKzQ+PjJdKXx8KGFbYj4+Ml09LTEsYVtNPj4yXT0tMSxwPS0xKSxtPTB8YVtrKygodz13KzF8MCk8PDIpPj4yXX13aGlsZSgoMHxtKT4tMSl9Zj1mKzF8MH13aGlsZShmPj4+MDxsPj4+MCZmPj4+MDxHPj4+MCl9ZWxzZSBmPTB9ZWxz''@;'; put 'put ''ZSBmPTA7Zj4+PjA8bD4+PjAmJnUyKGMrKGY8PDMpfDAsLTEsbC1mPDwzfDApfWZ1bmN0aW9uIFokKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MCxtPTA7cD0wfGFbKGx8PTApPj4yXTtlOmRve2lmKHApZm9yKG09MD09KDB8ZiksZj1wOzspe2lmKG0pe2lmKDB8dTgoYyxmKSl7Zj0xO2JyZWFr''@;'; put 'put ''IGV9fWVsc2V7aWYoMHx1OChwPTB8b3YoYyksMHxhW2w+PjJdKSl7Zj0xO2JyZWFrIGV9aWYoMHx1OChwPTB8QWcoYyksMHxhW2w+PjJdKSl7Zj0xO2JyZWFrIGV9fWlmKCEoZj0wfGFbKGw9bCs0fDApPj4yXSkpe2Y9MDticmVha319ZWxzZSBmPTB9d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5j''@;'; put 'put ''dGlvbiB6JChsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MDtlOmRve2lmKCgwfGwpPjApZm9yKG09MDs7KXtpZih3PTB8YVtmKyhtPDwyKT4+Ml0sQT0wfGFbcCsobTw8Mik+PjJdLDB8YVtjKyhtPDwyKT4+Ml0pe2lmKCgwfHcpPigwfEEpKXttPTE7YnJlYWsg''@;'; put 'put ''ZX1pZigoMHx3KTwoMHxBKSl7bT0wO2JyZWFrIGV9fWVsc2V7aWYoKDB8dyk8KDB8QSkpe209MTticmVhayBlfWlmKCgwfHcpPigwfEEpKXttPTA7YnJlYWsgZX19aWYoKDB8KG09bSsxfDApKT49KDB8bCkpe209MDticmVha319ZWxzZSBtPTB9d2hpbGUoMCk7cmV0dXJuIDB8bX1mdW5jdGlv''@;'; put 'put ''biBHJChsLGMsZixwKXtsfD0wLHB8PTA7dmFyIGssRCxtPTAsQT0wLHc9MDtrPTB8QXIoZnw9MCxjfD0wKSxmPTA9PSgwfGMpPzA6ZixmZVsobT1wKzc0fDApPj4wXT0yNTUrKEE9MHxmZVttPj4wXSl8QSx3PShEPSgwfGFbcCs4Pj4yXSktKEE9MHxhWyhtPXArNHwwKT4+Ml0pfDApPj4+MDxr''@;'; put 'put ''Pj4+MD9EOmssKDB8RCk+MD8oZ28oMHxsLDB8QSwwfHcpLGFbbT4+Ml09QSt3LG09ay13fDAsbD1sK3d8MCk6bT1rO2U6ZG97aWYobSl7Zm9yKHc9cCszMnwwOyEoMHxkJChwKXx8KEE9MHxtaVs2MyZhW3c+PjJdXShwLGwsbSksKEErMXwwKT4+PjA8MikpOyl7aWYoIShtPW0tQXwwKSl7MTM7''@;'; put 'put ''YnJlYWsgZX1sPWwrQXwwfWY9KChrLW18MCk+Pj4wKS8oYz4+PjApfDB9ZWxzZSAxM313aGlsZSgwKTtyZXR1cm4gMHxmfWZ1bmN0aW9uIFkkKGwpe3JldHVybiAwfGFbKGx8PTApKzYwPj4yXX1mdW5jdGlvbiBoZmUoKXt2YXIgYyxtLEEsdyxrLGw9MCxmPTAscD0wLGI9MDtrPWxlLGxlPWxl''@;'; put 'put ''KzQ4fDAsdz1rKzI0fDAsQT1rKzE2fDAsbT1rLGY9MTUzNjg2LHA9MjArKGw9Yz1rKzI4fDApfDA7ZG97ZmVbbD4+MF09MHxmZVtmPj4wXSxsPWwrMXwwLGY9ZisxfDB9d2hpbGUoKDB8bCk8KDB8cCkpO2ZvcihmPWMrMTN8MCxsPTA7Oyl7aWYoQ2NlKGYpLGFbbT4+Ml09YyxhW20rND4+Ml09''@;'; put 'put ''MzI5NjIsYVttKzg+PjJdPTM4NCwoMHwocD0wfHVoKDB8QjgoNSwwfG0pKSkpPi0xKXtiPTQ7YnJlYWt9aWYoISgoMHxsKTw5OSkpe2w9MDticmVha31sPWwrMXwwfXJldHVybiA0PT0oMHxiKSYmKGFbQT4+Ml09YyxwZigxMCwwfEEpLChsPTB8eCQocCwxNTM3MDYpKXx8KGFbdz4+Ml09cCxK''@;'; put 'put ''dSg2LDB8dyksbD0wKSksbGU9aywwfGx9ZnVuY3Rpb24gV2oobCl7dmFyIGM9MCxmPTAscD0wO2x8PTAscD0zO2Rve2lmKDM9PSgwfHApKXtpZigoZj0wfGFbKGM9bCs0fDApPj4yXSk+Pj4wPCgwfGFbbCs4Pj4yXSk+Pj4wKXthW2M+PjJdPWYrMSxjPTB8WHRbZj4+MF07YnJlYWt9Yz0wfG1M''@;'; put 'put ''KGwpO2JyZWFrfX13aGlsZSgwKTtyZXR1cm4gMHxjfWZ1bmN0aW9uIFlqKGwsYyl7bHw9MDt2YXIgZj0wLHA9MCxtPTAsQT0wLGs9MDtjfD0wLGs9Mztkb3tpZigzPT0oMHxrKSl7aWYocD0yNTUmbCwoMHwoZj0yNTUmbCkpIT0oMHxmZVtjKzc1Pj4wXSkmJihBPTB8YVsobT1jKzIwfDApPj4y''@;'; put 'put ''XSk+Pj4wPCgwfGFbYysxNj4+Ml0pPj4+MCl7YVttPj4yXT1BKzEsZmVbQT4+MF09cDticmVha31mPTB8RmooYyxsKX19d2hpbGUoMCk7cmV0dXJuIDB8Zn1mdW5jdGlvbiBkZmUobCl7cmV0dXJuIDB8ZnVuY3Rpb24gY2ZlKGwpe3JldHVybiAwfGZ1bmN0aW9uIFckKGwpe3ZhciBjPTA7cmV0''@;'; put 'put ''dXJuIGM9MTI4JmFbKGx8PTApPj4yXSYmKDB8YVtsKzIwPj4yXSk+Pj4wPigwfGFbbCsyOD4+Ml0pPj4+MD8yOjEsKDB8KGM9MHxtaVs2MyZhW2wrNDA+PjJdXShsLDAsYykpKT49MCYmKGM9Yy0oMHxhW2wrOD4+Ml0pKygwfGFbbCs0Pj4yXSkrKDB8YVtsKzIwPj4yXSktKDB8YVtsKzI4Pj4y''@;'; put 'put ''XSl8MCksMHxjfShsfD0wKX0obHw9MCl9ZnVuY3Rpb24gaXcobCxjLGYscCl7dmFyIG0sQTtyZXR1cm4gY3w9MCxwfD0wLGY9MHxmdW5jdGlvbiBnZmUobCxjKXt2YXIgZixwLEEsbT0wO3JldHVybiBsPSgoZj0wfEFyKG09NjU1MzUmKGN8PTApLEE9NjU1MzUmKGx8PTApKSk+Pj4xNikrKDB8''@;'; put 'put ''QXIobSxwPWw+Pj4xNikpfDAsYz0wfEFyKG09Yz4+PjE2LEEpLERuPShsPj4+MTYpKygwfEFyKG0scCkpKygoKDY1NTM1JmwpK2N8MCk+Pj4xNil8MCxsK2M8PDE2fDY1NTM1JmZ8MH0obT1sfD0wLEE9Znw9MCksbD1EbixEbj0oMHxBcihjLEEpKSsoMHxBcihwLG0pKStsfDAmbCwwfGZ9ZnVu''@;'; put 'put ''Y3Rpb24gemwobCxjLGYscCl7cmV0dXJuIERuPShjfD0wKSsocHw9MCkrKChmPShsfD0wKSsoZnw9MCk+Pj4wKT4+PjA8bD4+PjB8MCk+Pj4wLDB8Zn1mdW5jdGlvbiBTcChsLGMsZixwKXtyZXR1cm4gRG49cD0oY3w9MCktKHB8PTApLSgoZnw9MCk+Pj4wPihsfD0wKT4+PjB8MCk+Pj4wLDB8''@;'; put 'put ''bC1mPj4+MH1mdW5jdGlvbiBVJChsKXt2YXIgYz0wO3JldHVybigwfChjPTB8ZmVbbHMrKDI1NSYobHw9MCkpPj4wXSkpPDg/MHxjOigwfChjPTB8ZmVbbHMrKGw+PjgmMjU1KT4+MF0pKTw4P2MrOHwwOigwfChjPTB8ZmVbbHMrKGw+PjE2JjI1NSk+PjBdKSk8OD9jKzE2fDA6MjQrKDB8ZmVb''@;'; put 'put ''bHMrKGw+Pj4yNCk+PjBdKXwwfWZ1bmN0aW9uIFEkKGwsYyxmLHAsbSl7bXw9MDt2YXIgQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MDtpZihEPWx8PTAsdz1mfD0wLGI9Rz1wfD0wLCEoTT1rPWN8PTApKXJldHVybiBBPTAhPSgwfG0pLGI/QT8oYVttPj4yXT0wfGws''@;'; put 'put ''YVttKzQ+PjJdPTAmYyxEbj1HPTAsMHwobT0wKSk6KERuPUc9MCwwfChtPTApKTooQSYmKGFbbT4+Ml09KEQ+Pj4wKSUodz4+PjApLGFbbSs0Pj4yXT0wKSxEbj1HPTAsMHwobT0oRD4+PjApLyh3Pj4+MCk+Pj4wKSk7QT0wPT0oMHxiKTtkb3tpZih3KXtpZighQSl7aWYoKEE9KDB8QWQoMHxi''@;'; put 'put ''KSktKDB8QWQoMHxNKSl8MCk+Pj4wPD0zMSl7dz1SPUErMXwwLGw9RD4+PihSPj4+MCkmKGM9QS0zMT4+MzEpfE08PChiPTMxLUF8MCksYyY9TT4+PihSPj4+MCksQT0wLGI9RDw8YjticmVha31yZXR1cm4gbT8oYVttPj4yXT0wfGwsYVttKzQ+PjJdPWt8MCZjLERuPUc9MCwwfChtPTApKToo''@;'; put 'put ''RG49Rz0wLDB8KG09MCkpfWlmKChBPXctMXwwKSZ3fDApe3c9Yj0zMysoMHxBZCgwfHcpKS0oMHxBZCgwfE0pKXwwLGw9KFI9MzItYnwwKS0xPj4zMSZNPj4+KChxPWItMzJ8MCk+Pj4wKXwoTTw8UnxEPj4+KGI+Pj4wKSkmKGM9cT4+MzEpLGMmPU0+Pj4oYj4+PjApLEE9RDw8KHBlPTY0LWJ8''@;'; put 'put ''MCkmKGs9Uj4+MzEpLGI9KE08PHBlfEQ+Pj4ocT4+PjApKSZrfEQ8PFImYi0zMz4+MzE7YnJlYWt9cmV0dXJuIDB8bSYmKGFbbT4+Ml09QSZELGFbbSs0Pj4yXT0wKSwxPT0oMHx3KT8oRG49cT1rfDAmYywwfChwZT0wfGwpKToocGU9MHxVJCgwfHcpLERuPXE9TT4+PihwZT4+PjApfDAsMHwo''@;'; put 'put ''cGU9TTw8MzItcGV8RD4+PihwZT4+PjApfDApKX1pZihBKXJldHVybiAwfG0mJihhW20+PjJdPShNPj4+MCklKHc+Pj4wKSxhW20rND4+Ml09MCksRG49cT0wLDB8KE0+Pj4wKS8odz4+PjApPj4+MDtpZighRClyZXR1cm4gMHxtJiYoYVttPj4yXT0wLGFbbSs0Pj4yXT0oTT4+PjApJShiPj4+''@;'; put 'put ''MCkpLERuPXE9MCwwfChNPj4+MCkvKGI+Pj4wKT4+PjA7aWYoISgoQT1iLTF8MCkmYikpcmV0dXJuIDB8bSYmKGFbbT4+Ml09MHxsLGFbbSs0Pj4yXT1BJk18MCZjKSxxPTAscGU9TT4+PigoMHxVJCgwfGIpKT4+PjApLERuPXEsMHxwZTtpZigoQT0oMHxBZCgwfGIpKS0oMHxBZCgwfE0pKXww''@;'; put 'put ''KT4+PjA8PTMwKXt3PWM9QSsxfDAsbD1NPDwoYj0zMS1BfDApfEQ+Pj4oYz4+PjApLGM9TT4+PihjPj4+MCksQT0wLGI9RDw8YjticmVha31yZXR1cm4gbT8oYVttPj4yXT0wfGwsYVttKzQ+PjJdPWt8MCZjLERuPXE9MCwwfChwZT0wKSk6KERuPXE9MCwwfChwZT0wKSl9d2hpbGUoMCk7aWYo''@;'; put 'put ''dyl7TT0wfHpsKDB8KFI9MHxmKSwwfChEPUd8MCZwKSwtMSwtMSksZj1EbixrPWIsYj0wO2Rve3A9ayxrPUE+Pj4zMXxrPDwxLEE9YnxBPDwxLFNwKDB8TSwwfGYsMHwocD1sPDwxfHA+Pj4zMXwwKSwwfChHPWw+Pj4zMXxjPDwxfDApKSxiPTEmKHE9KHBlPURuKT4+MzF8KCgwfHBlKTwwPy0x''@;'; put 'put ''OjApPDwxKSxsPTB8U3AoMHxwLDB8RyxxJlJ8MCwoKCgwfHBlKTwwPy0xOjApPj4zMXwoKDB8cGUpPDA/LTE6MCk8PDEpJkR8MCksYz1Ebix3PXctMXwwfXdoaWxlKDAhPSgwfHcpKTtNPWssaz0wfWVsc2UgTT1iLGs9MCxiPTA7cmV0dXJuIHc9MCwwfG0mJihhW20+PjJdPWwsYVttKzQ+PjJd''@;'; put 'put ''PWMpLERuPXE9KDB8QSk+Pj4zMXwoTXx3KTw8MXwwJih3PDwxfEE+Pj4zMSl8aywtMiYoQTw8MXwwKXxifDB9ZnVuY3Rpb24gb3cobCxjLGYscCl7cmV0dXJuIDB8USQobHw9MCxjfD0wLGZ8PTAscHw9MCwwKX1mdW5jdGlvbiBpUyhsLGMsZixwKXt2YXIgbSxBO3JldHVybiBBPWxlLGxlPWxl''@;'; put 'put ''KzE2fDAsUSQobHw9MCxjfD0wLGZ8PTAscHw9MCxtPTB8QSksbGU9QSxEbj0wfGFbbSs0Pj4yXSwwfGFbbT4+Ml19ZnVuY3Rpb24gTEwobCxjLGYpe3JldHVybiBjfD0wLCgwfChmfD0wKSk8MzI/KERuPWM+PmYsKGx8PTApPj4+ZnwoYyYoMTw8ZiktMSk8PDMyLWYpOihEbj0oMHxjKTwwPy0x''@;'; put 'put ''OjAsYz4+Zi0zMnwwKX1mdW5jdGlvbiB3bChsLGMsZil7cmV0dXJuIGN8PTAsKDB8KGZ8PTApKTwzMj8oRG49Yz4+PmYsKGx8PTApPj4+ZnwoYyYoMTw8ZiktMSk8PDMyLWYpOihEbj0wLGM+Pj5mLTMyfDApfWZ1bmN0aW9uIFpvKGwsYyxmKXtyZXR1cm4gbHw9MCwoMHwoZnw9MCkpPDMyPyhE''@;'; put 'put ''bj0oY3w9MCk8PGZ8KGwmKDE8PGYpLTE8PDMyLWYpPj4+MzItZixsPDxmKTooRG49bDw8Zi0zMiwwKX1mdW5jdGlvbiBtZmUobCl7cmV0dXJuKDI1NSYobHw9MCkpPDw4fGw+PjgmMjU1fDB9ZnVuY3Rpb24gRHMobCl7cmV0dXJuKDI1NSYobHw9MCkpPDwyNHwobD4+OCYyNTUpPDwxNnwobD4+''@;'; put 'put ''MTYmMjU1KTw8OHxsPj4+MjR8MH1mdW5jdGlvbiBQZihsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgbT0wO2ZvcihhWyhsfD0wKT4+Ml09aTI9aTIrMXwwOygwfG0pPCgwfHApOyl7aWYoISgwfGFbZisobTw8Myk+PjJdKSlyZXR1cm4gYVtmKyhtPDwzKT4+Ml09aTIsYVtmKyg0KyhtPDwz''@;'; put 'put ''KSk+PjJdPWMsYVtmKyg4KyhtPDwzKSk+PjJdPTAsRG49cCwwfGY7bT1tKzF8MH1yZXR1cm4gZj0wfFBmKDB8bCwwfGMsMHwoZj0wfFVhKDB8Ziw4KigxKyhwPTIqcHwwKXwwKXwwKSksMHxwKSxEbj1wLDB8Zn1mdW5jdGlvbiBnaShsLGMsZil7bHw9MCxjfD0wLGZ8PTA7Zm9yKHZhciBwPTAs''@;'; put 'put ''bT0wOygwfG0pPCgwfGYpJiYocD0wfGFbYysobTw8Myk+PjJdKTspe2lmKCgwfHApPT0oMHxsKSlyZXR1cm4gMHxhW2MrKDQrKG08PDMpKT4+Ml07bT1tKzF8MH1yZXR1cm4gMH1mdW5jdGlvbiBnbyhsLGMsZil7bHw9MCxjfD0wO3ZhciBtLEEscD0wO2lmKCgwfChmfD0wKSk+PTgxOTIpcmV0''@;'; put 'put ''dXJuIDB8bm0oMHxsLDB8YywwfGYpO2lmKEE9MHxsLG09bCtmfDAsKDMmbCk9PSgzJmMpKXtmb3IoOzMmbDspe2lmKCFmKXJldHVybiAwfEE7ZmVbbD4+MF09MHxmZVtjPj4wXSxsPWwrMXwwLGM9YysxfDAsZj1mLTF8MH1mb3IocD0oZj0tNCZtfDApLTY0fDA7KDB8bCk8PSgwfHApOylhW2w+''@;'; put 'put ''PjJdPWFbYz4+Ml0sYVtsKzQ+PjJdPWFbYys0Pj4yXSxhW2wrOD4+Ml09YVtjKzg+PjJdLGFbbCsxMj4+Ml09YVtjKzEyPj4yXSxhW2wrMTY+PjJdPWFbYysxNj4+Ml0sYVtsKzIwPj4yXT1hW2MrMjA+PjJdLGFbbCsyND4+Ml09YVtjKzI0Pj4yXSxhW2wrMjg+PjJdPWFbYysyOD4+Ml0sYVts''@;'; put 'put ''KzMyPj4yXT1hW2MrMzI+PjJdLGFbbCszNj4+Ml09YVtjKzM2Pj4yXSxhW2wrNDA+PjJdPWFbYys0MD4+Ml0sYVtsKzQ0Pj4yXT1hW2MrNDQ+PjJdLGFbbCs0OD4+Ml09YVtjKzQ4Pj4yXSxhW2wrNTI+PjJdPWFbYys1Mj4+Ml0sYVtsKzU2Pj4yXT1hW2MrNTY+PjJdLGFbbCs2MD4+Ml09YVtj''@;'; put 'put ''KzYwPj4yXSxsPWwrNjR8MCxjPWMrNjR8MDtmb3IoOygwfGwpPCgwfGYpOylhW2w+PjJdPWFbYz4+Ml0sbD1sKzR8MCxjPWMrNHwwfWVsc2UgZm9yKGY9bS00fDA7KDB8bCk8KDB8Zik7KWZlW2w+PjBdPTB8ZmVbYz4+MF0sZmVbbCsxPj4wXT0wfGZlW2MrMT4+MF0sZmVbbCsyPj4wXT0wfGZl''@;'; put 'put ''W2MrMj4+MF0sZmVbbCszPj4wXT0wfGZlW2MrMz4+MF0sbD1sKzR8MCxjPWMrNHwwO2Zvcig7KDB8bCk8KDB8bSk7KWZlW2w+PjBdPTB8ZmVbYz4+MF0sbD1sKzF8MCxjPWMrMXwwO3JldHVybiAwfEF9ZnVuY3Rpb24gcjEobCxjLGYpe3ZhciBwPTA7aWYoKDB8KGN8PTApKTwoMHwobHw9MCkp''@;'; put 'put ''JigwfGwpPChjKyhmfD0wKXwwKSl7Zm9yKHA9bCxjPWMrZnwwLGw9bCtmfDA7KDB8Zik+MDspZj1mLTF8MCxmZVsobD1sLTF8MCk+PjBdPTB8ZmVbKGM9Yy0xfDApPj4wXTtsPXB9ZWxzZSBnbyhsLGMsZik7cmV0dXJuIDB8bH1mdW5jdGlvbiB1MihsLGMsZil7Y3w9MDt2YXIgQSxwPTAsbT0w''@;'; put 'put ''LHc9MDtpZihBPShsfD0wKSsoZnw9MCl8MCxjJj0yNTUsKDB8Zik+PTY3KXtmb3IoOzMmbDspZmVbbD4+MF09YyxsPWwrMXwwO2ZvcihtPShwPS00JkF8MCktNjR8MCx3PWN8Yzw8OHxjPDwxNnxjPDwyNDsoMHxsKTw9KDB8bSk7KWFbbD4+Ml09dyxhW2wrND4+Ml09dyxhW2wrOD4+Ml09dyxh''@;'; put 'put ''W2wrMTI+PjJdPXcsYVtsKzE2Pj4yXT13LGFbbCsyMD4+Ml09dyxhW2wrMjQ+PjJdPXcsYVtsKzI4Pj4yXT13LGFbbCszMj4+Ml09dyxhW2wrMzY+PjJdPXcsYVtsKzQwPj4yXT13LGFbbCs0ND4+Ml09dyxhW2wrNDg+PjJdPXcsYVtsKzUyPj4yXT13LGFbbCs1Nj4+Ml09dyxhW2wrNjA+PjJd''@;'; put 'put ''PXcsbD1sKzY0fDA7Zm9yKDsoMHxsKTwoMHxwKTspYVtsPj4yXT13LGw9bCs0fDB9Zm9yKDsoMHxsKTwoMHxBKTspZmVbbD4+MF09YyxsPWwrMXwwO3JldHVybiBBLWZ8MH1mdW5jdGlvbiB5MihsKXt2YXIgYyxmO3JldHVybigwfChmPTE1KyhsfD0wKSYtMTZ8MCkpPjAmKDB8KGw9KGM9MHxh''@;'; put 'put ''W0FvPj4yXSkrZnwwKSk8KDB8Yyl8KDB8bCk8MD8oZmYoKSxxcCgxMiksLTEpOihhW0FvPj4yXT1sLCgwfGwpPigwfEtwKCkpJiYwPT0oMHx5ZCgpKT8oYVtBbz4+Ml09YyxxcCgxMiksLTEpOjB8Yyl9ZnVuY3Rpb24gSmoobCxjLGYpe3JldHVybiBsPStsLGM9K2MsZj0rZix3MigxKSwwfWZ1''@;'; put 'put ''bmN0aW9uIGMyKGwpe3JldHVybiB3Mig0KSwwfWZ1bmN0aW9uIEsxKGwsYyl7cmV0dXJuIHcyKDUpLDB9ZnVuY3Rpb24gUkwobCxjLGYscCl7cmV0dXJuIGY9K2YscD0rcCx3Mig2KSwwfWZ1bmN0aW9uIE0yKGwsYyxmKXtyZXR1cm4gdzIoNyksMH1mdW5jdGlvbiBwYShsLGMsZixwKXtyZXR1''@;'; put 'put ''cm4gdzIoOCksMH1mdW5jdGlvbiBKbyhsLGMsZixwLG0pe3JldHVybiB3Mig5KSwwfWZ1bmN0aW9uIFhqKGwsYyxmLHAsbSxBLHcsYixrLE0pe3JldHVybiB3MigxMSksMH1mdW5jdGlvbiBmdigpe3cyKDEyKX1mdW5jdGlvbiBmOChsKXt3MigxMyl9ZnVuY3Rpb24gTHMobCxjKXt3MigxNCl9''@;'; put 'put ''ZnVuY3Rpb24gTTAobCxjLGYpe3cyKDE1KX1mdW5jdGlvbiBmYyhsLGMsZixwLG0sQSl7cD0rcCxtPSttLHcyKDE2KX1mdW5jdGlvbiBNcChsLGMsZixwLG0pe3cyKDE4KX1mdW5jdGlvbiBzdyhsLGMsZixwLG0sQSl7dzIoMTkpfXZhciBoOD1bZnVuY3Rpb24gZXEoKXtyZXR1cm4gdzIoMCks''@;'; put 'put ''MH0sZnVuY3Rpb24gc0QoKXt2YXIgbCxjO3JldHVybiBjPWxlLGxlPWxlKzE2fDAsUm4oMHwobD1jKSksbGU9YywuMDE2NjY2NjY2NjY2NjY2NjY2KisoKDB8YVtsKzQ+PjJdKSsoMHxhW2w+PjJdKS0oMHxhWzQ3MzExXSktKDB8YVs0NzMxMl0pfDApfV0sdXc9W0pqLGZ1bmN0aW9uIFhVKGws''@;'; put 'put ''YyxmKXtyZXR1cm4gbD0rbCxjPStjLC41KitmfSxmdW5jdGlvbiBKVShsLGMsZil7cmV0dXJuLjUqKGY9K2YpKigxLShsPStsKS8rYyl9LGZ1bmN0aW9uIEtVKGwsYyxmKXtyZXR1cm4uNSooZj0rZikqKChsPStsKS8rYyl9LGZ1bmN0aW9uIFNvZShsLGMsZil7cmV0dXJuKygoYz0obD0rbCkv''@;'; put 'put ''KGM9K2MpKTw9LjU/YzoxLWMpKitmfSxKaixKaixKal0scnE9W2Z1bmN0aW9uIHRxKGwpe3JldHVybiB3MigyKSwwfSxDTl0sJDE9W2Z1bmN0aW9uIG5xKCl7cmV0dXJuIHcyKDMpLDB9LGZ1bmN0aW9uIGQyZSgpe3ZhciBsPTA7cmV0dXJuKGw9MHxhWzQ2ODQ3XSk+Pj4wPCgwfGFbNDY4NDhd''@;'; put 'put ''KT4+PjA/KGFbNDY4NDddPWwrNCxsPTB8YVtsPj4yXSk6bD0wLDB8bH0sZnVuY3Rpb24gS29lKCl7dmFyIGIsayxNLGw9MCxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MDtmb3IobT0wfGFbNDcyNTVdLGs9MHxhWzQ3MjU2XSxNPTB8YVs0NzIxMV0sYz0wLGw9MCxBPWI9MHxhWzQ3MjYxXTs7KXtp''@;'; put 'put ''ZigoMHxBKT49KDB8bSkpe3c9ODticmVha31pZigoMHwoZj0wfGFbMTYwKygwfGFbMTYrKHA9MHxhW2srKEE8PDIpPj4yXSk+PjJdKT4+Ml0pKTwwJiYobD1sPygwfGFbMTYwKygwfGFbbCsxNj4+Ml0pPj4yXSk+KDB8Zik/cDpsOnAsKDB8KGM9YysxfDApKT49KDB8TSkpKWJyZWFrO2FbNDcy''@;'; put 'put ''NjFdPXA9QSsxfDAsQT1wfWlmKDg9PSgwfHcpJiYoMHxiKT4wKXtmb3IobT0wOyEoKDB8bSk+PSgwfGIpfHwoZj0wfGFbaysobTw8Mik+PjJdLHA9MHxhWzE2MCsoMHxhW2YrMTY+PjJdKT4+Ml0sKDB8cCk8MCYmKGw9bD8oMHxhWzE2MCsoMHxhW2wrMTY+PjJdKT4+Ml0pPigwfHApP2Y6bDpm''@;'; put 'put ''LGM9YysxfDAsKDB8Yyk+PSgwfE0pKSkpOyltPW0rMXwwO2FbNDcyNjFdPW19cmV0dXJuIDB8bH0seDddLF9vPVtjMixmdW5jdGlvbiBBMGUobCl7bHw9MDtmb3IodmFyIGYscCxjPTA7Yz0wfGFbMTE2KygwfGFbbCsxNj4+Ml0pPj4yXTspbD1jO3JldHVybiAwfCgoMHwocD0wfGFbMjMyKyhm''@;'; put 'put ''PTB8YVsxNisoMHxhWygyPT0oMHwoYz0zJmFbbD4+Ml0pKT9sOmwrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pKTw9KDB8KGM9MHxhWzIzMisobD0wfGFbMTYrKDB8YVsoMz09KDB8Yyk/bDpsKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pKT8oMHxwKTwoMHxjKT8xOigwfGFbZisyMzY+PjJdKTwo''@;'; put 'put ''MHxhW2wrMjM2Pj4yXSkmMTowKX0sV0MsZnVuY3Rpb24gR04obCl7cmV0dXJuIDB9LGZ1bmN0aW9uIFJKKGwpe3JldHVybiAwfSxmdW5jdGlvbiBYKGwpe3JldHVybiAwfFNMKGx8PTApfSxmdW5jdGlvbiBGZShsKXtyZXR1cm4gMH0sZnVuY3Rpb24gak0obCl7cmV0dXJuIDB9LGZ1bmN0aW9u''@;'; put 'put ''IG1SKGwpe3JldHVybiAwfSxmdW5jdGlvbiBpRShsKXtyZXR1cm4gMX0sZnVuY3Rpb24gdmYobCl7dmFyIGM7cmV0dXJuIGZlWzUzNisobHw9MCk+PjBdPTAsX1soYz1sKzMzNnwwKT4+M109K19bYz4+M10rMTAvK19bbCszNTI+PjNdLGZlW2wrNTM3Pj4wXT0xLDB9LGZ1bmN0aW9uIG9FKGwp''@;'; put 'put ''e3ZhciBjO3JldHVybiBmZVs1MzYrKGx8PTApPj4wXT0wLF9bKGM9bCszMzZ8MCk+PjNdPStfW2M+PjNdLTEwLytfW2wrMzUyPj4zXSxmZVtsKzUzNz4+MF09MSwwfSxmdW5jdGlvbiB3MyhsKXt2YXIgYztyZXR1cm4gZmVbNTM2KyhsfD0wKT4+MF09MCxfWyhjPWwrMzQ0fDApPj4zXT0rX1tj''@;'; put 'put ''Pj4zXS0xMC8rX1tsKzM1Mj4+M10sZmVbbCs1Mzc+PjBdPTEsMH0sZnVuY3Rpb24gcG0obCl7dmFyIGM7cmV0dXJuIGZlWzUzNisobHw9MCk+PjBdPTAsX1soYz1sKzM0NHwwKT4+M109K19bYz4+M10rMTAvK19bbCszNTI+PjNdLGZlW2wrNTM3Pj4wXT0xLDB9LGZ1bmN0aW9uIGFFKGwpe3Zh''@;'; put 'put ''ciBjO3JldHVybiBmZVs1MzYrKGx8PTApPj4wXT0wLF9bKGM9bCszNTJ8MCk+PjNdPTEuMSorX1tjPj4zXSxmZVtsKzUzNz4+MF09MSwwfSxmdW5jdGlvbiBsRShsKXt2YXIgYztyZXR1cm4gZmVbNTM2KyhsfD0wKT4+MF09MCxfWyhjPWwrMzUyfDApPj4zXT0uOTA5MDkwOTA5MDkwOTA5MSor''@;'; put 'put ''X1tjPj4zXSxmZVtsKzUzNz4+MF09MSwwfSxmdW5jdGlvbiBzRShsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MDtyZXR1cm4gZmVbKGY9NTM2KyhsfD0wKXwwKT4+MF09MSYoYz0wPT0oMHxmZVtmPj4wXSkpLGMmJihfW2wrMzUyPj4zXT0oKHA9KEE9KygoYz0wfGFbbCs0NDg+PjJdKT4+PjAp''@;'; put 'put ''KS8rKDB8Yyk8KG09KygoZj0wfGFbbCs0NTI+PjJdKT4+PjApKS8rKDB8ZikpP0E6bSkvKygwfChwP2M6ZikpLGFbKGY9bCszMzZ8MCk+PjJdPTAsYVtmKzQ+PjJdPTAsYVtmKzg+PjJdPTAsYVtmKzEyPj4yXT0wLGZlW2wrNTM3Pj4wXT0xKSwwfSxmdW5jdGlvbiB3QWUobCl7dmFyIGMsZjty''@;'; put 'put ''ZXR1cm4gYz1sZSxsZT1sZSsxNnwwLGFbKGY9Yyk+PjJdPTB8dCQoMHxhWzYwKyhsfD0wKT4+Ml0pLGw9MHx1aCgwfEp1KDYsMHxmKSksbGU9YywwfGx9LGZ1bmN0aW9uIHhzKGwpe3JldHVybiBhWzQ2NjU0XT1sfD0wLDB9LG9GLFJVLFBVLFVOLFFuLEdvLER0LEMxLGZ1bmN0aW9uIFFvZShs''@;'; put 'put ''KXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MDtmb3IoYVs0NzI1NF09bHw9MCxhWzQ3MjYxXT0wLGFbNDcyNTJdPTAsYVs0NzI1MV09MCxsPTE5MisoMHxhWyhBPWwrMTZ8MCk+PjJdKXwwLG09MCxmPTA7bD0wfGFbbD4+Ml07KXtmb3IoZmVbMTU3KyhwPTB8YVtsKzE2Pj4y''@;'; put 'put ''XSk+PjBdPTAsYVs0NzI1MV09bT1tKzF8MCxjPTB8YVtwKzE4MD4+Ml0sbD0wOzB8YVtjKyhsPDwyKT4+Ml07KWFbNDcyNTJdPWI9ZisxfDAsbD1sKzF8MCxmPWI7bD1wKzE2NHwwfWZvcihsPShsPTB8YVs0NzI2Ml0pPzB8VjAobCxtPDwyKTowfFFuKG08PDIpLGFbNDcyNjJdPWwsYVs0NzI2''@;'; put 'put ''M109MCxsPShsPTB8YVs0NzI1Nl0pPzB8VjAobCxhWzQ3MjUxXTw8Mik6MHxRbihhWzQ3MjUxXTw8MiksYVs0NzI1Nl09bCxhWzQ3MjU1XT0wLGM9MSxsPTE5MisoMHxhW0E+PjJdKXwwO2w9MHxhW2w+PjJdOyl7Zm9yKGFbKHc9MjkyKyhBPTB8YVsoYj1sKzE2fDApPj4yXSl8MCk+PjJdPTAs''@;'; put 'put ''QT0wfGFbQSsxNzI+PjJdLG09YyxwPTAsbD0wO2M9MHxhW0ErKHA8PDIpPj4yXTspYVt3Pj4yXT1mPWwrMXwwLGFbMTYwKyhsPTB8YVtjKzE2Pj4yXSk+PjJdPTAsYVtsKzE2ND4+Ml09LTEsbT1sPW0/KCgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDB8KGs9MyZhW2M+PjJdKSk/YzpjKy00''@;'; put 'put ''OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKS0oMHxhWzIzMisoMHxhWzE2KygwfGFbKDM9PSgwfGspP2M6Yys0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKXwwKTwoMHxocltsKzE3MD4+MV0pPzA6bTowLHA9cCsxfDAsbD1mO2w9MHx2cig0KyhwPDwyKXwwKSxhWzI2NCsoYz0wfGFbYj4+Ml0pPj4yXT1s''@;'; put 'put ''LGFbYysyNjg+PjJdPTAsYz0wfGFbYysxODA+PjJdLGw9MDtkb3trPWwsbD1sKzF8MH13aGlsZSgwIT0oMHxhW2MrKGs8PDIpPj4yXSkpO2M9MHx2cihsPDwyKSxhWzI3MisobD0wfGFbYj4+Ml0pPj4yXT1jLGFbbCsyNzY+PjJdPTAsYz1tLGw9bCsxNjR8MH1yZXR1cm4gMHxjfSxXSCxOMyxm''@;'; put 'put ''dW5jdGlvbiBkYShsKXt2YXIgYyxmLHAsbTtyZXR1cm4gMHx+figoZj0rX1syNCsocD0wfGFbMTYrKDB8YVsoMz09KDB8KG09MyZhWyhsfD0wKT4+Ml0pKT9sOmwrNDh8MCkrNDA+PjJdKT4+Ml0pPj4zXS0rX1syNCsobD0wfGFbMTYrKDB8YVsoMj09KDB8bSk/bDpsKy00OHwwKSs0MD4+Ml0p''@;'; put 'put ''Pj4yXSk+PjNdKSpmKyhjPStfW3ArMTY+PjNdLStfW2wrMTY+PjNdKSpjKX0sdnIsZnVuY3Rpb24gV2MobCl7bHw9MDt2YXIgYixrLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wO2ZvcihiPTB8aXMoMjU2OTIsMHxhWzQ1ODFdKSxrPWwrOHwwLHc9MDshKCgwfHcpPj0oMHxhW2w+PjJdKSk7KXtp''@;'; put 'put ''ZighKDQmYVsoYz0oMHxhW2s+PjJdKSsoNzIqd3wwKXwwKT4+Ml0pKXtmb3IoOyhmPTB8YVs4KygwfGFbYyszNj4+Ml0pPj4yXSkmJihmPTB8YVtmKzIwPj4yXSkmJiEoMSZhW2Y+PjJdKTspYz1mO2ZvcihBPTB8dnIoNDApLGFbQSszNj4+Ml09YyxfW0ErOD4+M109K19bYys0MD4+M10sbT1j''@;'; put 'put ''LGY9MHxhW2M+PjJdO2FbbT4+Ml09NHxmLChmPTB8YVthW20rMzY+PjJdPj4yXSkmJihwPTB8YVtmKzI0Pj4yXSkmJiEoMSYoZj0wfGFbcD4+Ml0pfDApOyltPXA7X1tBKzE2Pj4zXT0rX1ttKzU2Pj4zXSxXTShiLEEsK19bYys0OD4+M10pfXc9dysxfDB9cmV0dXJuIDB8Yn0sZnVuY3Rpb24g''@;'; put 'put ''cm0obCl7bHw9MDt2YXIgYixrLGM9MCxmPTAscD0wLG09MCxBPTAsdz0wO2ZvcihiPTB8aXMoMjU2OTIsMHxhWzQ1ODFdKSxrPWwrOHwwLHc9MDshKCgwfHcpPj0oMHxhW2w+PjJdKSk7KXtpZighKDImYVsoYz0oMHxhW2s+PjJdKSsoNzIqd3wwKXwwKT4+Ml0pKXtmb3IoOyhmPTB8YVsxMiso''@;'; put 'put ''MHxhW2MrMzY+PjJdKT4+Ml0pJiYoZj0wfGFbZisyMD4+Ml0pJiYhKDEmYVtmPj4yXSk7KWM9Zjtmb3IoQT0wfHZyKDQwKSxhW0ErMzY+PjJdPWMsX1tBKzg+PjNdPStfW2MrNDg+PjNdLG09YyxmPTB8YVtjPj4yXTthW20+PjJdPTJ8ZiwoZj0wfGFbNCsoMHxhW20rMzY+PjJdKT4+Ml0pJiYo''@;'; put 'put ''cD0wfGFbZisyND4+Ml0pJiYhKDEmKGY9MHxhW3A+PjJdKXwwKTspbT1wO19bQSsxNj4+M109K19bbSs2ND4+M10sV00oYixBLCtfW2MrNDA+PjNdKX13PXcrMXwwfXJldHVybiAwfGJ9LGZ1bmN0aW9uIGl4KGwpe2x8PTA7dmFyIG0sQSxjPTAsZj0wLHA9MDtmb3IobT0wfGFbNDc1MDldLEE9''@;'; put 'put ''MHxhWzQ3NTA1XSxjPTB8YVs0NzUwN107Oyl7aWYoKDB8Yyk+PSgwfG0pKXtwPTQ7YnJlYWt9aWYoMT09KDB8SmYoMHxhW2FbQSsoKGY9YysxfDApPDwyKT4+Ml0+PjJdLDB8YVthW0ErKGM8PDIpPj4yXT4+Ml0sMHxhW2w+PjJdKSkpYnJlYWs7Yz1mfWU6ZG97aWYoND09KDB8cCkpZm9yKGM9''@;'; put 'put ''MHxhWzQ3NTA4XTs7KXtpZigoMHxjKTw9KDB8bSkpe2M9bTticmVhayBlfWlmKDI9PSgwfEpmKDB8YVthW0ErKChmPWMrLTF8MCk8PDIpPj4yXT4+Ml0sMHxhW2FbQSsoYzw8Mik+PjJdPj4yXSwwfGFbbD4+Ml0pKSlicmVhaztjPWZ9fXdoaWxlKDApO3JldHVybiAwfGN9LEYwLGMyLGMyLGMy''@;'; put 'put ''LGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyLGMyXSxCaT1bSzEsZnVuY3Rpb24gVjMobCxjKXtyZXR1cm4gMHxsfSxmdW5jdGlvbiBpZShsLGMpe3JldHVybiAwfF91KGN8PTAsbHw9MCl9LGZ1bmN0aW9uIFpl''@;'; put 'put ''KGwsYyl7cmV0dXJuIGx8PTAsdTIoMHwobD0wfEYwKGN8PTApKSwwLDB8YyksMHxsfSxvSixmTixmdW5jdGlvbiBLYWUobCxjKXtjfD0wO3ZhciBrLE0sRCxtPTAsQT0wLHc9MCxiPTA7cmV0dXJuIGs9bGUsbGU9bGUrMzJ8MCxNPWsrMTZ8MCx3PWssbT0wfGFbNCsobHw9MCk+PjJdLEE9OTAq''@;'; put 'put ''KDMmYVsxMTYrKDB8YVsxNisoMHxjcihsPTB8YVtsPj4yXSkpPj4yXSk+PjJdKXwwLGFbTT4+Ml09YVtjPj4yXSxhW00rND4+Ml09YVtjKzQ+PjJdLGFbTSs4Pj4yXT1hW2MrOD4+Ml0sYVtNKzEyPj4yXT1hW2MrMTI+PjJdLFU2KHcsTSxBKSxhW2M+PjJdPWFbdz4+Ml0sYVtjKzQ+PjJdPWFb''@;'; put 'put ''dys0Pj4yXSxhW2MrOD4+Ml09YVt3Kzg+PjJdLGFbYysxMj4+Ml09YVt3KzEyPj4yXSxtPyhBPW0sbD1tKzh8MCx3PW0rMTZ8MCxtPW0rMjR8MCk6KEE9MTYrKG09MHxhWzEyKygwfGFbbCsxNj4+Ml0pPj4yXSl8MCxsPW0rMjR8MCx3PW0rMzJ8MCxtPW0rNDB8MCksbD0rX1tBPj4zXTw9KEQ9''@;'; put 'put ''K19bYz4+M10pJiZEPD0rX1t3Pj4zXSYmK19bbD4+M108PShiPStfW2MrOD4+M10pP2I8PStfW20+PjNdJjE6MCxsZT1rLDB8bH0sZnVuY3Rpb24gdEoobCxjKXt2YXIgZixwLG0sQSx3LGIsaztyZXR1cm4gY3w9MCxwPWxlLGxlPWxlKzMyfDAsaz1wKzE2fDAsdz1wLGI9OTAqKDMmYVsxMTYr''@;'; put 'put ''KDB8YVsxNisoMHxjcihsPTB8YVsobHw9MCk+PjJdKSk+PjJdKT4+Ml0pfDAsYVtrPj4yXT1hW2M+PjJdLGFbays0Pj4yXT1hW2MrND4+Ml0sYVtrKzg+PjJdPWFbYys4Pj4yXSxhW2srMTI+PjJdPWFbYysxMj4+Ml0sVTYodyxrLGIpLGY9K19bdz4+M10sbGU9cCwwfCghKCEoKEE9K19bdys4''@;'; put 'put ''Pj4zXSk+PS0obT0uNSorX1s4MCsobD0wfGFbbCsxNj4+Ml0pPj4zXSkpfCEoQTw9bSkpJiZmPj0tK19bbCs4OD4+M10/Zjw9K19bbCs5Nj4+M10mMTowKX0sS1EsZnVuY3Rpb24gTUIobCxjKXtyZXR1cm4gYVszNisobHw9MCk+PjJdPTB8cmEoY3w9MCksMH0sZnVuY3Rpb24gcWIobCxjKXty''@;'; put 'put ''ZXR1cm4gYVszMisobHw9MCk+PjJdPTB8cmEoY3w9MCksMH0sZnVuY3Rpb24gZV8obCxjKXtsfD0wO3ZhciBwLG0sdyxmPTAsQT0wO3N3aXRjaCh3PWxlLGxlPWxlKzE2fDAsbT13LDB8KHA9KDB8YXYoMHxmZVsoY3w9MCk+PjBdKSk8PDI0Pj4yNCkpe2Nhc2UgODI6MHx5MChmPWMrMXwwLDE0''@;'; put 'put ''MDc2Myk/QT01OihhW2w+PjJdPTExNCxmPTApO2JyZWFrO2Nhc2UgNzY6QT02O2JyZWFrO2RlZmF1bHQ6Zj1jKzF8MCxBPTV9ZG97aWYoNT09KDB8QSkpaWYoMHx5MChmLDE0MDc2OCkpe2lmKDY3IT0oMHxwKSYmMD09KDB8eTAoZiwxNDA3NzIpKSl7YVttPj4yXT1jLCRyKDAsMTQwNzc4LG0p''@;'; put 'put ''LGY9MTticmVha31hW2w+PjJdPTExMCxmPTB9ZWxzZSBBPTZ9d2hpbGUoMCk7cmV0dXJuIDY9PSgwfEEpJiYoYVtsPj4yXT0xMDgsZj0wKSxsZT13LDB8Zn0sZnVuY3Rpb24gRUIobCxjKXtyZXR1cm4gYVs0KyhsfD0wKT4+Ml09Y3w9MCwwfSxmdW5jdGlvbiBzRyhsLGMpe3JldHVybiBhWyhs''@;'; put 'put ''fD0wKT4+Ml09Y3w9MCwwfSxmdW5jdGlvbiB1RyhsLGMpe3ZhciBmLHA7cmV0dXJuIGx8PTAscD1sZSxsZT1sZSsxNnwwLDB8SWQoY3w9MCwxNDA4NDUsMCwyNTUsZj1wKT9sPTE6KF9bbCsxNj4+M109KygwfGFbZj4+Ml0pLGw9MCksbGU9cCwwfGx9LGZ1bmN0aW9uIHhCKGwsYyl7bHw9MDt2''@;'; put 'put ''YXIgZixtLHA9MDtzd2l0Y2gobT1sZSxsZT1sZSsxNnwwLGY9bSwoMHxhdigwfGZlWyhjfD0wKT4+MF0pKTw8MjQ+PjI0fDApe2Nhc2UgNzY6MHx5MChjKzF8MCwxNDA3NjgpP3A9OTooaXRbKGw9bCszNnwwKT4+MV09NHxpdFtsPj4xXSxsPTApO2JyZWFrO2Nhc2UgODI6MHx5MChjKzF8MCwx''@;'; put 'put ''NDA3NjMpP3A9OTooaXRbKGw9bCszNnwwKT4+MV09MnxpdFtsPj4xXSxsPTApO2JyZWFrO2Nhc2UgODQ6MHx5MChjKzF8MCwxNDE1NjMpP3A9OTooaXRbKGw9bCszNnwwKT4+MV09NnxpdFtsPj4xXSxsPTApO2JyZWFrO2Nhc2UgNjc6MHx5MChjKzF8MCwxNDA3NzIpP3A9OTpsPTA7YnJlYWs7''@;'; put 'put ''ZGVmYXVsdDpwPTl9cmV0dXJuIDk9PSgwfHApJiYoYVtmPj4yXT1jLCRyKDAsMTQxNTY3LGYpLGw9MSksbGU9bSwwfGx9LGZ1bmN0aW9uIEpFKGwsYyl7bHw9MDt2YXIgZixtLHA9MDtzd2l0Y2gobT1sZSxsZT1sZSsxNnwwLGY9bSwoMHxhdigwfGZlWyhjfD0wKT4+MF0pKTw8MjQ+PjI0fDAp''@;'; put 'put ''e2Nhc2UgNzY6MHx5MChjKzF8MCwxNDA3NjgpP3A9NzooaXRbKGw9bCszNnwwKT4+MV09NTEyfGl0W2w+PjFdLGw9MCk7YnJlYWs7Y2FzZSA4MjowfHkwKGMrMXwwLDE0MDc2Myk/cD03OihpdFsobD1sKzM2fDApPj4xXT0yNTZ8aXRbbD4+MV0sbD0wKTticmVhaztjYXNlIDY3OjB8eTAoYysx''@;'; put 'put ''fDAsMTQwNzcyKT9wPTc6bD0wO2JyZWFrO2RlZmF1bHQ6cD03fXJldHVybiA3PT0oMHxwKSYmKGFbZj4+Ml09YywkcigwLDE0MTUxOCxmKSxsPTEpLGxlPW0sMHxsfSxmdW5jdGlvbiBjRyhsLGMpe3JldHVybiBhWzIwKyhsfD0wKT4+Ml09MHxyYShjfD0wKSwwfSxmdW5jdGlvbiBUQihsLGMp''@;'; put 'put ''e3ZhciBmLHA7cmV0dXJuIGx8PTAscD1sZSxsZT1sZSsxNnwwLDB8SWQoY3w9MCwxNDE1MTEsMCwyNTUsZj1wKT9sPTE6KGZlW2wrMzM+PjBdPWFbZj4+Ml0saXRbKGw9bCszNnwwKT4+MV09MzJ8aXRbbD4+MV0sbD0wKSxsZT1wLDB8bH0sZnVuY3Rpb24gcjUobCxjKXt2YXIgZixwO3JldHVy''@;'; put 'put ''biBsfD0wLHA9bGUsbGU9bGUrMTZ8MCwwfElkKGN8PTAsMTQxNDk5LDAsMjU1LGY9cCk/bD0xOihmZVtsKzM0Pj4wXT1hW2Y+PjJdLGl0WyhsPWwrMzZ8MCk+PjFdPTY0fGl0W2w+PjFdLGw9MCksbGU9cCwwfGx9LGZ1bmN0aW9uIElCKGwsYyl7dmFyIGYscDtyZXR1cm4gbHw9MCxwPWxlLGxl''@;'; put 'put ''PWxlKzE2fDAsMHxJZChjfD0wLDE0MTQ4NywtMTI4LDEyNyxmPXApP2w9MTooZmVbbCszMj4+MF09YVtmPj4yXSxpdFsobD1sKzM2fDApPj4xXT0xMjh8aXRbbD4+MV0sbD0wKSxsZT1wLDB8bH0sZnVuY3Rpb24gWEUobCxjKXtyZXR1cm4gYVsyNCsobHw9MCk+PjJdPTB8cmEoY3w9MCksMH0s''@;'; put 'put ''ZnVuY3Rpb24gSjkobCxjKXt2YXIgZixwLG07bHw9MCxjfD0wLG09bGUsbGU9bGUrMTZ8MCxwPW0sZj1tKzR8MDtkb3tpZighKDB8SWQoYywxNDE0NDIsMCw2NTUzNSxmKSkpe2lmKGM9MHxhW2Y+PjJdKXtpdFtsKzgwPj4xXT1jLGM9MDticmVha30kcigwLDE0MTQ1MCxwKSxjPTE7YnJlYWt9''@;'; put 'put ''Yz0xfXdoaWxlKDApO3JldHVybiBsZT1tLDB8Y30sZnVuY3Rpb24gREIobCxjKXtsfD0wO3ZhciBmLG0scD0wO3N3aXRjaChtPWxlLGxlPWxlKzE2fDAsZj1tLCgwfGF2KDB8WHRbKGN8PTApPj4wXSkpPDwyND4+MjR8MCl7Y2FzZSA4NDowfHkwKGMrMXwwLDE0MTM5MSk/cD01OihpdFsobD1s''@;'; put 'put ''KzM2fDApPj4xXT0xfGl0W2w+PjFdLGw9MCk7YnJlYWs7Y2FzZSA3MDowfHkwKGMrMXwwLDE0MTM5NSk/cD01Omw9MDticmVhaztkZWZhdWx0OnA9NX1yZXR1cm4gNT09KDB8cCkmJihhW2Y+PjJdPWMsJHIoMCwxNDE0MDAsZiksbD0xKSxsZT1tLDB8bH0sZnVuY3Rpb24gS0UobCxjKXt2YXIg''@;'; put 'put ''ZixwO3JldHVybiBsfD0wLHA9bGUsbGU9bGUrMTZ8MCwwfElkKGN8PTAsMTQxMzc3LDAsMzYwLGY9cCk/bD0xOihhW2wrMjg+PjJdPTY1NTM1JmFbZj4+Ml0sbD0wKSxsZT1wLDB8bH0sZnVuY3Rpb24gTEIobCxjKXt2YXIgZixwO3JldHVybiBsfD0wLHA9bGUsbGU9bGUrMTZ8MCwwfElkKGN8''@;'; put 'put ''PTAsMTQxMzcwLDAsNjU1MzUsZj1wKT9sPTE6KGl0W2wrNDA+PjFdPWFbZj4+Ml0sbD0wKSxsZT1wLDB8bH0sZnVuY3Rpb24gT0IobCxjKXtyZXR1cm4gYVsobHw9MCk+PjJdPTB8cmEoY3w9MCksMH0sZnVuY3Rpb24gUkIobCxjKXtyZXR1cm4gYVsxNisobHw9MCk+PjJdPTB8cmEoY3w9MCks''@;'; put 'put ''MH0sZnVuY3Rpb24gQkIobCxjKXtyZXR1cm4gYVs0KyhsfD0wKT4+Ml09MHxyYShjfD0wKSwwfSxmdW5jdGlvbiBQQihsLGMpe3ZhciBmLHAsbTtsfD0wLGN8PTAsbT1sZSxsZT1sZSsxNnwwLHA9bSxmPW0rNHwwO2Rve2lmKCEoMHxJZChjLDE0MTMyNSwwLDY1NTM1LGYpKSl7aWYoYz0wfGFb''@;'; put 'put ''Zj4+Ml0pe2l0W2wrODI+PjFdPWMsYz0wO2JyZWFrfSRyKDAsMTQxMzMzLHApLGM9MTticmVha31jPTF9d2hpbGUoMCk7cmV0dXJuIGxlPW0sMHxjfSxmdW5jdGlvbiAkRShsLGMpe2x8PTAsY3w9MDt2YXIgQSxiLGY9MCxwPTAsbT0wLHc9MDtiPWxlLGxlPWxlKzE2fDAsQT1iLG09MDtlOmZv''@;'; put 'put ''cig7Oyl7dDpmb3IoOzspe2lmKHA9YysxfDAsISgoYz0wfGZlW2M+PjBdKTw8MjQ+PjI0KSlicmVhayBlO3N3aXRjaCgoZj0oMHxDcChjPWM8PDI0Pj4yNCkpLTk4fDApPj4+MXxmPDwzMXwwKXtjYXNlIDU6dz01O2JyZWFrIHQ7Y2FzZSA5OmY9MjA0ODticmVhayB0O2Nhc2UgODp3PTY7YnJl''@;'; put 'put ''YWsgdDtjYXNlIDA6dz03O2JyZWFrIHR9YVtBPj4yXT1jLGFbQSs0Pj4yXT1jLCRyKDAsMTQxMjcyLEEpLGM9cH01PT0oMHx3KT8odz0wLGY9MTAyNCk6Nj09KDB8dyk/KHc9MCxmPTQwOTYpOjc9PSgwfHcpJiYodz0wLGY9ODE5MiksYz1wLG18PWZ9cmV0dXJuIG08PDE2Pj4xNiE9MTUzNjAm''@;'; put 'put ''JihpdFsodz1sKzM2fDApPj4xXT1pdFt3Pj4xXXxtKSxsZT1iLDB9LGZ1bmN0aW9uIEZCKGwsYyl7dmFyIHAsbSxBLHcsYixmPTA7Zm9yKGI9bGUsbGU9bGUrMTZ8MCx3PWIrOHwwLEE9YixwPTQyKyhsfD0wKXwwLGY9MCxjPW09MHxyYShjfD0wKTtsPTB8bHYoYywxNDExODIpOylpZig4MiE9''@;'; put 'put ''KDI1NSYoMHxhdigwfGZlW2w+PjBdKSl8MCkpaWYoMHx5MChsLDE0MTIzNikpaWYoMHx5MChsLDE0MTI0MikmJjB8eTAobCwxNDEyNTIpKXtpZighKDB8eTAobCwxNDEyNTgpKSl7aXRbcD4+MV09MTI4fGl0W3A+PjFdLGM9MCxmPWw9Zjtjb250aW51ZX1pZigwfHkwKGwsMTQxMjY1KSl7YVt3''@;'; put 'put ''Pj4yXT1sLCRyKDAsMTQxMTk4LHcpLGY9MSxjPTA7Y29udGludWV9aXRbcD4+MV09MjU2fGl0W3A+PjFdLGM9MCxmPWw9Zn1lbHNlIGl0W3A+PjFdPTMyfGl0W3A+PjFdLGM9MCxmPWw9ZjtlbHNlIGl0W3A+PjFdPS0zODUmaXRbcD4+MV0sYz0wLGY9bD1mO2Vsc2V7aWYoISgwfHkwKGM9bCsx''@;'; put 'put ''fDAsMTQxMTg1KSkpe2l0W3A+PjFdPTR8aXRbcD4+MV0sYz0wLGY9bD1mO2NvbnRpbnVlfWlmKDB8eTAoYywxNDExOTIpKXthW0E+PjJdPWwsJHIoMCwxNDExOTgsQSksZj0xLGM9MDtjb250aW51ZX1pdFtwPj4xXT0yfGl0W3A+PjFdLGM9MCxmPWw9Zn1yZXR1cm4gRnQobSksbGU9YiwwfGZ9''@;'; put 'put ''LGZ1bmN0aW9uIG81KGwsYyl7cmV0dXJuIGFbOCsobHw9MCk+PjJdPTB8cmEoY3w9MCksMH0sZnVuY3Rpb24gWDkobCxjKXtyZXR1cm4gYVsxMisobHw9MCk+PjJdPTB8cmEoY3w9MCksMH0sZnVuY3Rpb24gdF8obCxjKXtsfD0wO3ZhciBmLG0scD0wO3N3aXRjaChtPWxlLGxlPWxlKzE2fDAs''@;'; put 'put ''Zj1tLCgwfGF2KDB8ZmVbKGN8PTApPj4wXSkpPDwyND4+MjR8MCl7Y2FzZSA2NjowfHkwKGMrMXwwLDE0MTEyOCk/cD03OihpdFsobD1sKzM2fDApPj4xXT0xNnxpdFtsPj4xXSxsPTApO2JyZWFrO2Nhc2UgODQ6MHx5MChjKzF8MCwxNDExMzQpP3A9NzooaXRbKGw9bCszNnwwKT4+MV09OHxp''@;'; put 'put ''dFtsPj4xXSxsPTApO2JyZWFrO2Nhc2UgNzc6MHx5MChjKzF8MCwxNDExMzcpP3A9NzpsPTA7YnJlYWs7ZGVmYXVsdDpwPTd9cmV0dXJuIDc9PSgwfHApJiYoYVtmPj4yXT1jLCRyKDAsMTQxMTQzLGYpLGw9MSksbGU9bSwwfGx9LGZ1bmN0aW9uIGZHKGwsYyl7dmFyIGYscDtyZXR1cm4gbHw9''@;'; put 'put ''MCxwPWxlLGxlPWxlKzE2fDAsMHxJZChjfD0wLDE0MTEyMiwwLDY1NTM1LGY9cCk/bD0xOihpdFtsKzM4Pj4xXT1hW2Y+PjJdLGw9MCksbGU9cCwwfGx9LGZ1bmN0aW9uIG5fKGwsYyl7bHw9MDt2YXIgZixtLHA9MDtzd2l0Y2gobT1sZSxsZT1sZSsxNnwwLGY9bSwoMHxhdigwfGZlWyhjfD0w''@;'; put 'put ''KT4+MF0pKTw8MjQ+PjI0fDApe2Nhc2UgNzY6MHx5MChjKzF8MCwxNDA3NjgpP3A9NzooaXRbKGw9bCszNnwwKT4+MV09NHxpdFtsPj4xXSxsPTApO2JyZWFrO2Nhc2UgODI6MHx5MChjKzF8MCwxNDA3NjMpP3A9NzooaXRbKGw9bCszNnwwKT4+MV09MnxpdFtsPj4xXSxsPTApO2JyZWFrO2Nh''@;'; put 'put ''c2UgNjc6MHx5MChjKzF8MCwxNDA3NzIpP3A9NzpsPTA7YnJlYWs7ZGVmYXVsdDpwPTd9cmV0dXJuIDc9PSgwfHApJiYoYVtmPj4yXT1jLCRyKDAsMTQwNzc4LGYpLGw9MSksbGU9bSwwfGx9LGZ1bmN0aW9uIEhCKGwsYyl7dmFyIGYscDtyZXR1cm4gbHw9MCxwPWxlLGxlPWxlKzE2fDAsMHxJ''@;'; put 'put ''ZChjfD0wLDE0MTcyMCwwLDEyNyxmPXApP2w9MTooZmVbbCs4OD4+MF09YVtmPj4yXSxsPTApLGxlPXAsMHxsfSxmdW5jdGlvbiBOQihsLGMpe3ZhciBmLHA7cmV0dXJuIGx8PTAscD1sZSxsZT1sZSsxNnwwLGY9cCw0Mj09KDB8ZmVbKGN8PTApPj4wXSk/KGZlWyhsPWwrMTEyfDApPj4wXT0x''@;'; put 'put ''fGZlW2w+PjBdLGw9MCk6KGFbZj4+Ml09YywkcigwLDE0MTY4MCxmKSxsPTEpLGxlPXAsMHxsfSxmdW5jdGlvbiBLdChsLGMpe3ZhciBmLHA7cmV0dXJuIGx8PTAscD1sZSxsZT1sZSsxNnwwLGY9cCw0Mj09KDB8ZmVbKGN8PTApPj4wXSk/KGZlWyhsPWwrMTEyfDApPj4wXT0yfGZlW2w+PjBd''@;'; put 'put ''LGw9MCk6KGFbZj4+Ml09YywkcigwLDE0MTY0MyxmKSxsPTEpLGxlPXAsMHxsfSxmdW5jdGlvbiBPSyhsLGMpe3ZhciBwLGY9MDtwPTcyKyhsfD0wKXwwLGw9Y3w9MDtlOmZvcig7Oyl7c3dpdGNoKDB8ZmVbcCsoMHxYdFtsPj4wXSk+PjBdKXtjYXNlIDU6Zj0yO2JyZWFrO2Nhc2UgNjpmPTM7''@;'; put 'put ''YnJlYWs7Y2FzZSA3OmY9NDticmVhaztjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjM6Y2FzZSAyMjpjYXNlIDI5OmY9MTticmVhaztkZWZhdWx0OmJyZWFrIGV9bD1sK2Z8MH1yZXR1cm4gbC1jfDB9LGZ1bmN0aW9uIFF5KGwsYyl7Y3w9MCxsPTcyKyhsfD0wKXwwO2U6''@;'; put 'put ''Zm9yKDs7KXtzd2l0Y2goMHxmZVtsKygwfFh0W2M+PjBdKT4+MF0pe2Nhc2UgMjE6Y2FzZSA5OmNhc2UgMTA6YnJlYWs7ZGVmYXVsdDpicmVhayBlfWM9YysxfDB9cmV0dXJuIDB8Y30sZnVuY3Rpb24gWGsobCxjKXtsfD0wO3ZhciBmPTAscD0wO2Y9MHxmZVsobD0yKyhjfD0wKXwwKT4+MF07''@;'; put 'put ''ZTpkb3tpZihmPDwyND4+MjQ9PTEyMClmb3IoZj1jKzN8MCxsPTA7Oyl7dDpmb3IoOzspe2lmKGM9KHA9MHxmZVtmPj4wXSk8PDI0Pj4yNCxwPDwyND4+MjQ9PTU5KXtwPTE0O2JyZWFrIGV9c3dpdGNoKDB8Yyl7Y2FzZSA1NzpjYXNlIDU2OmNhc2UgNTU6Y2FzZSA1NDpjYXNlIDUzOmNhc2Ug''@;'; put 'put ''NTI6Y2FzZSA1MTpjYXNlIDUwOmNhc2UgNDk6Y2FzZSA0ODpwPTc7YnJlYWsgdDtjYXNlIDcwOmNhc2UgNjk6Y2FzZSA2ODpjYXNlIDY3OmNhc2UgNjY6Y2FzZSA2NTpwPTg7YnJlYWsgdDtjYXNlIDEwMjpjYXNlIDEwMTpjYXNlIDEwMDpjYXNlIDk5OmNhc2UgOTg6Y2FzZSA5NzpwPTk7YnJl''@;'; put 'put ''YWsgdH1mPWYrMXwwfWlmKDc9PSgwfHApPyhwPTAsbD1jKy00OHxsPDw0KTo4PT0oMHxwKT8ocD0wLGw9KGw8PDQpLTU1K2N8MCk6OT09KDB8cCkmJihwPTAsbD0obDw8NCktODcrY3wwKSwhKCgwfGwpPDExMTQxMTIpKXtsPS0xO2JyZWFrfWY9ZisxfDB9ZWxzZSBmb3IoYz1sLGw9MDs7KXtp''@;'; put 'put ''ZihmPDwyND4+MjQ9PTU5KXtwPTE0O2JyZWFrIGV9aWYoKDB8KGw9KGY8PDI0Pj4yNCktNDgrKDEwKmx8MCl8MCkpPj0xMTE0MTEyKXtsPS0xO2JyZWFrIGV9Yz1mPWMrMXwwLGY9MHxmZVtmPj4wXX19d2hpbGUoMCk7cmV0dXJuIDE0PT0oMHxwKSYmKGw9MHxQZChsKSksMHxsfSxmdW5jdGlv''@;'; put 'put ''biBaOWUobCxjKXtyZXR1cm4gbHw9MCxsPTB8WHRbKGN8PTApPj4wXSwxPDwoMzEmKGM9MHxYdFtjKzE+PjBdKSkmYVs1Njk0MCsoKCgwfFh0WzE0NDA0NCsobD4+PjImNyk+PjBdKTw8M3xsPDwxJjZ8Yz4+PjUmMSk8PDIpPj4yXXwwfSxmdW5jdGlvbiBBMWUobCxjKXt2YXIgZjtyZXR1cm4g''@;'; put 'put ''bHw9MCwxPDwoMzEmKGw9MHxYdFsyKyhjfD0wKT4+MF0pKSZhWzU2OTQwKygoKDB8WHRbMTQ0MDQ0KygoZj0wfFh0W2MrMT4+MF0pPj4+MiYxNXxmZVtjPj4wXTw8NCYyNTUpPj4wXSk8PDN8Zjw8MSY2fGw+Pj41JjEpPDwyKT4+Ml18MH0sZnVuY3Rpb24geTFlKGwsYyl7cmV0dXJuIDB9LGZ1''@;'; put 'put ''bmN0aW9uIHZqKGwsYyl7cmV0dXJuIGx8PTAsbD0wfFh0WyhjfD0wKT4+MF0sMTw8KDMxJihjPTB8WHRbYysxPj4wXSkpJmFbNTY5NDArKCgoMHxYdFsxNDM3ODgrKGw+Pj4yJjcpPj4wXSk8PDN8bDw8MSY2fGM+Pj41JjEpPDwyKT4+Ml18MH0sZnVuY3Rpb24gejllKGwsYyl7dmFyIGY7cmV0''@;'; put 'put ''dXJuIGx8PTAsMTw8KDMxJihsPTB8WHRbMisoY3w9MCk+PjBdKSkmYVs1Njk0MCsoKCgwfFh0WzE0Mzc4OCsoKGY9MHxYdFtjKzE+PjBdKT4+PjImMTV8ZmVbYz4+MF08PDQmMjU1KT4+MF0pPDwzfGY8PDEmNnxsPj4+NSYxKTw8Mik+PjJdfDB9LGZ1bmN0aW9uIEc5ZShsLGMpe3JldHVybigw''@;'; put 'put ''fFh0WyhjfD0wKT4+MF0pPDE5ND8xOihjPTB8WHRbYysxPj4wXSk+Pj43XjF8MTkyPT0oMTkyJmN8MCl8MH0sZnVuY3Rpb24gVzllKGwsYyl7bHw9MDt2YXIgZj0wO2w9MHxmZVsyKyhjfD0wKT4+MF07ZG97aWYobDw8MjQ+PjI0Pi0xKWw9MTtlbHNle2lmKChmPTB8ZmVbYz4+MF0pPDwyND4+''@;'; put 'put ''MjQ9PS0xNyYmLTY1PT0oMHxmZVtjKzE+PjBdKSl7aWYoKDI1NSZsKT4xODkpe2w9MTticmVha31sPTE5MSxjPS02NX1lbHNle2lmKCgyNTUmbCk+MTkxKXtsPTE7YnJlYWt9aWYobD0yNTUmKGM9MHxmZVtjKzE+PjBdKSxmPDwyND4+MjQ9PS0zMil7bD0oMjU1JmMpPDE2MHwxOTI9PSgxOTIm''@;'; put 'put ''bHwwKTticmVha319bD0wPT0oMTI4Jmx8MCk/MTpmPDwyND4+MjQ9PS0xOT8oMjU1JmMpPjE1OToxOTI9PSgxOTImbHwwKX19d2hpbGUoMCk7cmV0dXJuIDEmbHwwfSxmdW5jdGlvbiBZOWUobCxjKXtsfD0wO3ZhciBmPTA7Zj0wfFh0WzMrKGN8PTApPj4wXTtkb3tpZighKDA9PSgxMjgmZnww''@;'; put 'put ''KXwxOTI9PSgxOTImZnwwKXx8KGY9MHxYdFtjKzI+PjBdLDA9PSgxMjgmZnwwKXwxOTI9PSgxOTImZnwwKSkpKXtpZihmPTB8ZmVbYz4+MF0sYz0yNTUmKGw9MHxmZVtjKzE+PjBdKSxmPDwyND4+MjQ9PS0xNil7bD0oMjU1JmwpPDE0NHwxOTI9PSgxOTImY3wwKTticmVha31sPTA9PSgxMjgm''@;'; put 'put ''Y3wwKT8xOmY8PDI0Pj4yND09LTEyPygyNTUmbCk+MTQzOjE5Mj09KDE5MiZjfDApO2JyZWFrfWw9MX13aGlsZSgwKTtyZXR1cm4gMSZsfDB9LGZ1bmN0aW9uIGJqKGwsYyl7dmFyIG0sZj0wLHA9MDttPTcyKyhsfD0wKXwwLHA9Y3w9MDtlOmZvcig7Oyl7c3dpdGNoKGY9MHxmZVtwKzE+PjBd''@;'; put 'put ''LDB8KGw9KGw9MHxmZVtwPj4wXSk8PDI0Pj4yND8wfGYwKGwsZik6MHxYdFttKygyNTUmZik+PjBdKSl7Y2FzZSA1OmNhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMzpjYXNlIDIyOmNhc2UgMjk6bD0yO2JyZWFrO2Nhc2UgNjpsPTM7YnJlYWs7Y2FzZSA3Omw9NDticmVh''@;'; put 'put ''aztkZWZhdWx0OmJyZWFrIGV9cD1wK2x8MH1yZXR1cm4gcC1jfDB9LGZ1bmN0aW9uIHE5ZShsLGMpe2N8PTA7dmFyIHAsZj0wO3A9NzIrKGx8PTApfDA7ZTpmb3IoOzspe3N3aXRjaChmPTB8ZmVbYysxPj4wXSwwfChsPShsPTB8ZmVbYz4+MF0pPDwyND4+MjQ/MHxmMChsLGYpOjB8WHRbcCso''@;'; put 'put ''MjU1JmYpPj4wXSkpe2Nhc2UgMjE6Y2FzZSA5OmNhc2UgMTA6YnJlYWs7ZGVmYXVsdDpicmVhayBlfWM9YysyfDB9cmV0dXJuIDB8Y30sZnVuY3Rpb24gZUFlKGwsYyl7bHw9MDt2YXIgZj0wLHA9MDtsPTQrKGN8PTApfDA7ZTpkb3tpZigwfGZlW2w+PjBdKWY9bCxsPTAsYz0tMSxwPTE2O2Vs''@;'; put 'put ''c2UgaWYoMTIwPT0oMHxmZVtjKzU+PjBdKSlmb3IoYz1jKzZ8MCxsPTA7Oyl7dDpmb3IoOzspe2lmKCEoMHxmZVtjPj4wXSkpe2lmKChmPTB8ZmVbYysxPj4wXSk8PDI0Pj4yND09NTkpe3A9MTg7YnJlYWsgZX1zd2l0Y2goMHwoZj1mPDwyND4+MjQpKXtjYXNlIDU3OmNhc2UgNTY6Y2FzZSA1''@;'; put 'put ''NTpjYXNlIDU0OmNhc2UgNTM6Y2FzZSA1MjpjYXNlIDUxOmNhc2UgNTA6Y2FzZSA0OTpjYXNlIDQ4OnA9ODticmVhayB0O2Nhc2UgNzA6Y2FzZSA2OTpjYXNlIDY4OmNhc2UgNjc6Y2FzZSA2NjpjYXNlIDY1OnA9OTticmVhayB0O2Nhc2UgMTAyOmNhc2UgMTAxOmNhc2UgMTAwOmNhc2UgOTk6''@;'; put 'put ''Y2FzZSA5ODpjYXNlIDk3OnA9MTA7YnJlYWsgdH19Yz1jKzJ8MH1pZig4PT0oMHxwKT9sPWYrLTQ4fGw8PDQ6OT09KDB8cCk/bD0obDw8NCktNTUrZnwwOjEwPT0oMHxwKSYmKGw9KGw8PDQpLTg3K2Z8MCksISgoMHxsKTwxMTE0MTEyKSl7bD0tMSxwPTE5O2JyZWFrfWM9YysyfDB9ZWxzZSBj''@;'; put 'put ''PWwsbD0wLHA9MTN9d2hpbGUoMCk7Zm9yKDs7KWlmKDEzIT0oMHxwKSlpZigxNiE9KDB8cCkpaWYoMTghPSgwfHApKXtpZigxOT09KDB8cCkpcmV0dXJuIDB8bH1lbHNlIGw9MHxQZChsKSxwPTE5O2Vsc2V7aWYoKDB8KGw9KDEwKmx8MCktNDgrY3wwKSk+PTExMTQxMTIpe2w9LTEscD0xOTtj''@;'; put 'put ''b250aW51ZX1jPWYrMnwwLHA9MTN9ZWxzZXtpZigwfGZlW2M+PjBdKXtmPWMsYz0tMSxwPTE2O2NvbnRpbnVlfWlmKDU5PT0oMHxmZVtjKzE+PjBdKSl7cD0xODtjb250aW51ZX1mPWMsYz0wfGZlW2MrMT4+MF0scD0xNn1yZXR1cm4gMH0sZnVuY3Rpb24gUTllKGwsYyl7dmFyIG0sZj0wLHA9''@;'; put 'put ''MDttPTcyKyhsfD0wKXwwLHA9Y3w9MDtlOmZvcig7Oyl7c3dpdGNoKGY9MHxmZVtwPj4wXSwwfChsPShsPTB8ZmVbcCsxPj4wXSk8PDI0Pj4yND8wfGYwKGwsZik6MHxYdFttKygyNTUmZik+PjBdKSl7Y2FzZSA1OmNhc2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMzpjYXNl''@;'; put 'put ''IDIyOmNhc2UgMjk6bD0yO2JyZWFrO2Nhc2UgNjpsPTM7YnJlYWs7Y2FzZSA3Omw9NDticmVhaztkZWZhdWx0OmJyZWFrIGV9cD1wK2x8MH1yZXR1cm4gcC1jfDB9LGZ1bmN0aW9uIF8xZShsLGMpe2N8PTA7dmFyIHAsZj0wO3A9NzIrKGx8PTApfDA7ZTpmb3IoOzspe3N3aXRjaChmPTB8ZmVb''@;'; put 'put ''Yz4+MF0sMHwobD0obD0wfGZlW2MrMT4+MF0pPDwyND4+MjQ/MHxmMChsLGYpOjB8WHRbcCsoMjU1JmYpPj4wXSkpe2Nhc2UgMjE6Y2FzZSA5OmNhc2UgMTA6YnJlYWs7ZGVmYXVsdDpicmVhayBlfWM9YysyfDB9cmV0dXJuIDB8Y30sZnVuY3Rpb24gazFlKGwsYyl7bHw9MDt2YXIgZj0wLHA9''@;'; put 'put ''MDtsPTQrKGN8PTApfDA7ZTpkb3tpZigwPT0oMHxmZVtjKzU+PjBdKSYmMTIwPT0oMHxmZVtsPj4wXSkpZm9yKGM9Yys2fDAsbD0wOzspe3Q6Zm9yKDs7KXtpZighKDB8ZmVbYysxPj4wXSkpe2lmKChmPTB8ZmVbYz4+MF0pPDwyND4+MjQ9PTU5KXtwPTE3O2JyZWFrIGV9c3dpdGNoKDB8KGY9''@;'; put 'put ''Zjw8MjQ+PjI0KSl7Y2FzZSA1NzpjYXNlIDU2OmNhc2UgNTU6Y2FzZSA1NDpjYXNlIDUzOmNhc2UgNTI6Y2FzZSA1MTpjYXNlIDUwOmNhc2UgNDk6Y2FzZSA0ODpwPTg7YnJlYWsgdDtjYXNlIDcwOmNhc2UgNjk6Y2FzZSA2ODpjYXNlIDY3OmNhc2UgNjY6Y2FzZSA2NTpwPTk7YnJlYWsgdDtj''@;'; put 'put ''YXNlIDEwMjpjYXNlIDEwMTpjYXNlIDEwMDpjYXNlIDk5OmNhc2UgOTg6Y2FzZSA5NzpwPTEwO2JyZWFrIHR9fWM9YysyfDB9aWYoOD09KDB8cCk/KHA9MCxsPWYrLTQ4fGw8PDQpOjk9PSgwfHApPyhwPTAsbD0obDw8NCktNTUrZnwwKToxMD09KDB8cCkmJihwPTAsbD0obDw8NCktODcrZnww''@;'; put 'put ''KSwhKCgwfGwpPDExMTQxMTIpKXtsPS0xO2JyZWFrfWM9YysyfDB9ZWxzZSBmPWwsbD0wLHA9MTN9d2hpbGUoMCk7ZTpkb3tpZigxMz09KDB8cCkpZm9yKDs7KXtpZihwPTAsMHxmZVtmKzE+PjBdKWM9LTE7ZWxzZXtpZigoYz0wfGZlW2Y+PjBdKTw8MjQ+PjI0PT01OSl7cD0xNzticmVhayBl''@;'; put 'put ''fWM9Yzw8MjQ+PjI0fWlmKCgwfChsPSgxMCpsfDApLTQ4K2N8MCkpPj0xMTE0MTEyKXtsPS0xO2JyZWFrfWY9ZisyfDAscD0xM319d2hpbGUoMCk7cmV0dXJuIDE3PT0oMHxwKSYmKGw9MHxQZChsKSksMHxsfSxFbixmdW5jdGlvbiBsMGUobCxjKXtsfD0wLGN8PTA7dmFyIEcscGUsZ2UsYmUs''@;'; put 'put ''T2UsTGUsUmUsSGUsVmUscWUscnQsV2UsYXQsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLHE9MDthdD1sZSxsZT1sZSs2MjR8MCxWZT1hdCs1ODR8MCxIZT1hdCs1NDR8MCxmPWF0KzE5MnwwLE9lPWF0LGFbKGJlPTE2KyhnZT1hdCs5NnwwKXwwKT4+Ml09cGU9YXQr''@;'; put 'put ''MzY4fDAsYVsoTGU9T2UrMTZ8MCk+PjJdPWYscnQ9MHxhW2M+PjJdLHA9MTUmKGM9MHxhWzE2NCsoRz0wfGFbKFJlPTE2KyhXZT0wfGFbbD4+Ml0pfDApPj4yXSk+PjJdKSxtPTE1JmFbMTY0KyhsPTB8YVsocWU9cnQrMTZ8MCk+PjJdKT4+Ml07ZG97aWYoKDB8bSk9PSgwfHApKXtpZihSPTB8''@;'; put 'put ''ejUoV2UpLHE9MHx6NShydCksKDB8KEE9KDB8KEE9KDB8YVsyMzIrKHA9MHxhWzE2KygwfGFbKDM9PSgwfChtPTMmKE09MHxhW1I+PjJdKSkpP1I6Uis0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKS0oMHxhWzIzMisobT0wfGFbMTYrKDB8YVsoMj09KDB8bSk/UjpSKy00OHwwKSs0MD4+Ml0pPj4y''@;'; put 'put ''XSk+PjJdKXwwKSk+LTE/QTowLUF8MCkpIT0oMHwodz0oMHwodz0oMHxhWzIzMisoYj0wfGFbMTYrKDB8YVsoMz09KDB8KGs9MyYoRD0wfGFbcT4+Ml0pKSk/cTpxKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGFbMjMyKyhrPTB8YVsxNisoMHxhWygyPT0oMHxrKT9xOnErLTQ4fDApKzQw''@;'; put 'put ''Pj4yXSk+PjJdKT4+Ml0pfDApKT4tMT93OjAtd3wwKSkpe2w9QS13fDA7YnJlYWt9aWYoKDB8KG09KDB8KG09fn4oK19bcCsxNj4+M10tK19bbSsxNj4+M10pKSk+LTE/bTowLW18MCkpIT0oMHwocD0oMHwocD1+figrX1tiKzE2Pj4zXS0rX1trKzE2Pj4zXSkpKT4tMT9wOjAtcHwwKSkpe2w9''@;'; put 'put ''bS1wfDA7YnJlYWt9aWYoKDB8KG09TT4+PjQpKSE9KDB8KHA9RD4+PjQpKSl7bD1tLXB8MDticmVha31pZigwfGZlW0crNDQ+PjBdP209V2U6KG09Yz0wPT0oMHxmZVtHKzg0Pj4wXSk/UjpXZSxjPTB8YVsxNjQrKDB8YVtjKzE2Pj4yXSk+PjJdKSxwPW0rMTZ8MCwzMiZjKXtnbygwfHBlLDB8''@;'; put 'put ''YVtwPj4yXSwxNzYpLHc9bSxiPShBPWdlKSs0OHwwO2Rve2FbQT4+Ml09YVt3Pj4yXSxBPUErNHwwLHc9dys0fDB9d2hpbGUoKDB8QSk8KDB8YikpO2FbYmU+PjJdPXBlLGFbKDM9PSgwfChBPTMmYVtnZT4+Ml0pKT9nZTpnZSs0OHwwKSs0MD4+Ml09YVsoMj09KDB8KHc9MyZhW20+PjJdKSk/''@;'; put 'put ''bTptKy00OHwwKSs0MD4+Ml0sYVsoMj09KDB8QSk/Z2U6Z2UrLTQ4fDApKzQwPj4yXT1hWygzPT0oMHx3KT9tOm0rNDh8MCkrNDA+PjJdLHc9NTYrKDB8YVtwPj4yXSl8MCxiPTQwKyhBPXBlKzE2fDApfDA7ZG97YVtBPj4yXT1hW3c+PjJdLEE9QSs0fDAsdz13KzR8MH13aGlsZSgoMHxBKTwo''@;'; put 'put ''MHxiKSk7dz0xNisoMHxhW3A+PjJdKXwwLGI9NDArKEE9cGUrNTZ8MCl8MDtkb3thW0E+PjJdPWFbdz4+Ml0sQT1BKzR8MCx3PXcrNHwwfXdoaWxlKCgwfEEpPCgwfGIpKTtmZVtwZSsxMTI+PjBdPTEsYVtwZSsxMTY+PjJdPW0sbT1nZSxsPTB8YVtxZT4+Ml19aWYoMHxmZVtsKzQ0Pj4wXT9w''@;'; put 'put ''PXJ0OihwPWw9MD09KDB8ZmVbbCs4ND4+MF0pP3E6cnQsbD0wfGFbbCsxNj4+Ml0pLGM9cCsxNnwwLDMyJmFbbCsxNjQ+PjJdKXtnbygwfGYsMHxhW2M+PjJdLDE3Niksdz1wLGI9KEE9T2UpKzQ4fDA7ZG97YVtBPj4yXT1hW3c+PjJdLEE9QSs0fDAsdz13KzR8MH13aGlsZSgoMHxBKTwoMHxi''@;'; put 'put ''KSk7YVtMZT4+Ml09ZixhWygzPT0oMHwoQT0zJmFbT2U+PjJdKSk/T2U6T2UrNDh8MCkrNDA+PjJdPWFbKDI9PSgwfCh3PTMmYVtwPj4yXSkpP3A6cCstNDh8MCkrNDA+PjJdLGFbKDI9PSgwfEEpP09lOk9lKy00OHwwKSs0MD4+Ml09YVsoMz09KDB8dyk/cDpwKzQ4fDApKzQwPj4yXSx3PTU2''@;'; put 'put ''KygwfGFbYz4+Ml0pfDAsYj00MCsoQT1mKzE2fDApfDA7ZG97YVtBPj4yXT1hW3c+PjJdLEE9QSs0fDAsdz13KzR8MH13aGlsZSgoMHxBKTwoMHxiKSk7dz0xNisoMHxhW2M+PjJdKXwwLGI9NDArKEE9Zis1NnwwKXwwO2Rve2FbQT4+Ml09YVt3Pj4yXSxBPUErNHwwLHc9dys0fDB9d2hpbGUo''@;'; put 'put ''KDB8QSk8KDB8YikpO2ZlW2YrMTEyPj4wXT0xLGFbZisxMTY+PjJdPXB9ZWxzZSBmPWw7bD1mKzE2fDAsdz0xNisoYz0wfGFbbSsxNj4+Ml0pfDAsYj0oQT1IZSkrNDB8MDtkb3thW0E+PjJdPWFbdz4+Ml0sQT1BKzR8MCx3PXcrNHwwfXdoaWxlKCgwfEEpPCgwfGIpKTt3PWwsYj0oQT1WZSkr''@;'; put 'put ''NDB8MDtkb3thW0E+PjJdPWFbdz4+Ml0sQT1BKzR8MCx3PXcrNHwwfXdoaWxlKCgwfEEpPCgwfGIpKTtpZighKGw9MHxYQShIZSxWZSkpKXtsPWYrNTZ8MCx3PWMrNTZ8MCxiPShBPUhlKSs0MHwwO2Rve2FbQT4+Ml09YVt3Pj4yXSxBPUErNHwwLHc9dys0fDB9d2hpbGUoKDB8QSk8KDB8Yikp''@;'; put 'put ''O3c9bCxiPShBPVZlKSs0MHwwO2Rve2FbQT4+Ml09YVt3Pj4yXSxBPUErNHwwLHc9dys0fDB9d2hpbGUoKDB8QSk8KDB8YikpO2lmKCEobD0wfFhBKEhlLFZlKSkpe2lmKCgwfChjPTE5MiZhWzE2NCsoMHxhW1JlPj4yXSk+PjJdKSk9PSgwfChsPTE5MiZhWzE2NCsoMHxhW3FlPj4yXSk+PjJd''@;'; put 'put ''KSkpe2w9KCgwfGFbV2U+PjJdKT4+PjQpLSgoMHxhW3J0Pj4yXSk+Pj40KXwwO2JyZWFrfWw9Yy1sfDA7YnJlYWt9fX1lbHNlIGw9bS1wfDB9d2hpbGUoMCk7cmV0dXJuIGxlPWF0LDB8bH0sZnVuY3Rpb24gcDcobCxjKXt2YXIgZixwPTAsbT0wLEE9MCx3PTA7cmV0dXJuIGY9MHxhWzk2Kygw''@;'; put 'put ''fGFbMTYrKDB8YVsobHw9MCk+PjJdKT4+Ml0pPj4yXSxjPTAhPSgwfChsPTB8YVs5NisoMHxhWzE2KygwfGFbKGN8PTApPj4yXSk+PjJdKT4+Ml0pKSwwfChmPyFjfHwodz0rX1tmKzMyPj4zXSxBPStfW2wrMzI+PjNdLChtPStfW2YrMjQ+PjNdKT4ocD0rX1tsKzI0Pj4zXSkpPy0xOm08cD8x''@;'; put 'put ''Onc+QT8tMTp3PEEmMToxJmMpfSxmdW5jdGlvbiBDMGUobCxjKXtyZXR1cm4oMHxhWyhsfD0wKT4+Ml0pLSgwfGFbKGN8PTApPj4yXSl8MH0sZnVuY3Rpb24gVDBlKGwsYyl7cmV0dXJuKCgwfGFbYVsobHw9MCk+PjJdPj4yXSk+Pj40KS0oKDB8YVthWyhjfD0wKT4+Ml0+PjJdKT4+PjQpfDB9''@;'; put 'put ''LGZ1bmN0aW9uIEZZKGwsYyl7cmV0dXJuKDB8YVsyMzYrKDB8YVsxNisoMHxhWyhsfD0wKT4+Ml0pPj4yXSk+PjJdKS0oMHxhWzIzNisoMHxhWzE2KygwfGFbKGN8PTApPj4yXSk+PjJdKT4+Ml0pfDB9LGZ1bmN0aW9uIGZvZShsLGMpe3ZhciBmLHAsbTtyZXR1cm4oKHA9K19bKG09MHxhWzQ2''@;'; put 'put ''NzUwXSkrKDQwKigwfGFbKGN8PTApPj4yXSl8MCkrMjQ+PjNdKT4oZj0rX1ttKyg0MCooMHxhWyhsfD0wKT4+Ml0pfDApKzI0Pj4zXSkmMSktKHA8ZiYxKXwwfSxmdW5jdGlvbiBjb2UobCxjKXtyZXR1cm4gY3w9MCxsPTB8d1UoMHxhWyhsfD0wKT4+Ml0pLCgoMHwoYz0wfHdVKDB8YVtjPj4y''@;'; put 'put ''XSkpKTwoMHxsKSYxKS0oKDB8Yyk+KDB8bCkmMSl8MH0sZnVuY3Rpb24geW9lKGwsYyl7dmFyIHAsQSx3LGIsZj0wLG09MDtpZihiPWxlLGxlPWxlKzgwfDAsdz1iKzQwfDAsQT1iLHA9MHxhW2FbMTcyKygwfGFbMTYrKGx8PTApPj4yXSk+PjJdPj4yXSxsPTB8YVthWzE3MisoMHxhWzE2Kyhj''@;'; put 'put ''fD0wKT4+Ml0pPj4yXT4+Ml0sKDB8UlUoYykpPDwyND4+MjQhPTAmJigwfGFbKDM9PSgzJmFbcD4+Ml18MCk/cDpwKzQ4fDApKzQwPj4yXSk9PSgwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpsKzQ4fDApKzQwPj4yXSkmJigwfE5VKHAsbCkpPDwyND4+MjQhPTApe2Y9MTYrKDB8YVtsKzE2Pj4y''@;'; put 'put ''XSl8MCxsPTE2KygwfGFbcCsxNj4+Ml0pfDAsYz0obT1BKSs0MHwwO2Rve2FbbT4+Ml09YVtsPj4yXSxtPW0rNHwwLGw9bCs0fDB9d2hpbGUoKDB8bSk8KDB8YykpO2w9ZixjPShtPXcpKzQwfDA7ZG97YVttPj4yXT1hW2w+PjJdLG09bSs0fDAsbD1sKzR8MH13aGlsZSgoMHxtKTwoMHxjKSk7''@;'; put 'put ''bD0wPT0oMHxYQShBLHcpKSYxfWVsc2UgbD0wO3JldHVybiBsZT1iLDB8bH0sZnVuY3Rpb24gVEgobCxjKXt2YXIgcCxBLHcsYixmPTAsbT0wO2lmKGI9bGUsbGU9bGUrODB8MCx3PWIrNDB8MCxBPWIscD0wfGFbYVsxODArKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0+PjJdLGw9MHxhW2FbMTgw''@;'; put 'put ''KygwfGFbMTYrKGN8PTApPj4yXSk+PjJdPj4yXSwoMHxQVShjKSk8PDI0Pj4yNCE9MCYmKDB8YVsoMj09KDMmYVtwPj4yXXwwKT9wOnArLTQ4fDApKzQwPj4yXSk9PSgwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHwwKSs0MD4+Ml0pJiYoMHxOVShwLGwpKTw8MjQ+PjI0IT0wKXtmPTU2''@;'; put 'put ''KygwfGFbbCsxNj4+Ml0pfDAsbD01NisoMHxhW3ArMTY+PjJdKXwwLGM9KG09QSkrNDB8MDtkb3thW20+PjJdPWFbbD4+Ml0sbT1tKzR8MCxsPWwrNHwwfXdoaWxlKCgwfG0pPCgwfGMpKTtsPWYsYz0obT13KSs0MHwwO2Rve2FbbT4+Ml09YVtsPj4yXSxtPW0rNHwwLGw9bCs0fDB9d2hpbGUo''@;'; put 'put ''KDB8bSk8KDB8YykpO2w9MD09KDB8WEEoQSx3KSkmMX1lbHNlIGw9MDtyZXR1cm4gbGU9YiwwfGx9LGZ1bmN0aW9uIEtoKGwsYyl7dmFyIGY9MCxwPTA7cmV0dXJuIDB8KGw9KGY9K19bOCsobHw9MCk+PjNdKT4ocD0rX1s4KyhjfD0wKT4+M10pPzE6ZjxwPy0xOihwPStfW2wrMTY+PjNdKT4o''@;'; put 'put ''Zj0rX1tjKzE2Pj4zXSk/MToocDxmKTw8MzE+PjMxKX0sZnVuY3Rpb24gQ1gobCxjKXt2YXIgZixwO3JldHVybiAwfCgocD0rX1sobHw9MCk+PjNdKT4oZj0rX1soY3w9MCk+PjNdKT8xOihwPGYpPDwzMT4+MzEpfSxmdW5jdGlvbiBUWChsLGMpe3ZhciBmPTAscD0wO3JldHVybiAwfChsPShm''@;'; put 'put ''PStfWzgrKGw9MHxhWyhsfD0wKT4+Ml0pPj4zXSk8KHA9K19bOCsoYz0wfGFbKGN8PTApPj4yXSk+PjNdKT8tMTpmPnA/MToocD0rX1tsPj4zXSk8KGY9K19bYz4+M10pPy0xOnA+ZiYxKX0sZnVuY3Rpb24gUEQobCxjKXtyZXR1cm4gMHwoKDB8YVszNisobHw9MCk+PjJdKT4oMHxhWzQ0Kyhj''@;'; put 'put ''fD0wKT4+Ml0pPzA6KDB8YVtjKzM2Pj4yXSk8PSgwfGFbbCs0ND4+Ml0pJjEpfSxmdW5jdGlvbiBGWChsLGMpe3JldHVybiAwfCgoMHxhWzMyKyhsfD0wKT4+Ml0pPigwfGFbNDArKGN8PTApPj4yXSk/MDooMHxhW2MrMzI+PjJdKTw9KDB8YVtsKzQwPj4yXSkmMSl9LGZ1bmN0aW9uIERmKGws''@;'; put 'put ''Yyl7dmFyIGYscD0wLG09MCxBPTA7cmV0dXJuIGY9MzIrKGx8PTApfDAscD0zMisoY3w9MCl8MCwoMHxhW2wrMzY+PjJdKTw9KDB8YVtjKzQ0Pj4yXSkmJigwfGFbYyszNj4+Ml0pPD0oMHxhW2wrNDQ+PjJdKT8oMHxhW2wrNDA+PjJdKTwoMHxhW3A+PjJdKT9sPTE6KEE9KEE9MHxIWChmLHAp''@;'; put 'put ''KS0oMHxhW2MrMTI+PjJdKSsoMHxhW2wrMTI+PjJdKXwwLG09KDB8KGM9MHxhW2MrMTY+PjJdKSk8KDB8KGw9MHxhW2wrMTY+PjJdKSksbD0oMHxBKTw9KChwPTB8RkQoZixwKSktKG0/bDpjKSsobT9jOmwpfDApJjEpOmw9MCwwfGx9LGZ1bmN0aW9uIExmKGwsYyl7dmFyIGYscD0wLG09MCxB''@;'; put 'put ''PTA7cmV0dXJuIHA9MzIrKGN8PTApfDAsKDB8YVsoZj0zMisobHw9MCl8MCk+PjJdKTw9KDB8YVtjKzQwPj4yXSkmJigwfGFbcD4+Ml0pPD0oMHxhW2wrNDA+PjJdKT8oMHxhW2wrNDQ+PjJdKTwoMHxhW2MrMzY+PjJdKT9sPTE6KEE9KEE9MHxGRChmLHApKS0oMHxhW2MrMTY+PjJdKSsoMHxh''@;'; put 'put ''W2wrMTY+PjJdKXwwLG09KDB8KGM9MHxhW2MrMTI+PjJdKSk8KDB8KGw9MHxhW2wrMTI+PjJdKSksbD0oMHxBKTw9KChwPTB8SFgoZixwKSktKG0/bDpjKSsobT9jOmwpfDApJjEpOmw9MCwwfGx9LEhYLEZELGZ1bmN0aW9uIGk5ZShsLGMpe3ZhciBmPTAscD0wO3JldHVybiAwfChsPShmPStf''@;'; put 'put ''WyhsfD0wKT4+M10pPChwPStfWyhjfD0wKT4+M10pPy0xOmY+cD8xOihwPStfW2wrOD4+M10pPChmPStfW2MrOD4+M10pPy0xOnA+ZiYxKX0sZnVuY3Rpb24gRTJlKGwsYyl7dmFyIGYscCxtO3JldHVybiAwfCgocD0ram5bKG09MHxhWzQ2ODczXSkrKGFbKGx8PTApPj4yXTw8Mik+PjJdKTwo''@;'; put 'put ''Zj0ram5bbSsoYVsoY3w9MCk+PjJdPDwyKT4+Ml0pPy0xOnA+ZiYxKX0sZnVuY3Rpb24galYobCxjKXtsfD0wO3ZhciBHLHEscGUsTGUsUmUsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLGdlPTAsYmU9MCxPZT0wO2ZvcihSZT1sZSxsZT1sZSsxNnwwLHBlPVJlLEc9''@;'; put 'put ''UmUrOHwwLHE9UmUrNHwwLGFbOCsoY3w9MCk+PjJdPTAsTGU9MHxRbihhW2M+PjJdPDwyKSxtPTB8YVtjPj4yXSxwPTA7ISgoMHxwKT49KDB8bSkpOylhW0xlKyhwPDwyKT4+Ml09bCsoMjQqcHwwKSxwPXArMXwwO3gxKExlLG0sNCw3OSksRD0wLEE9MCxtPTAsdz0wO2U6Zm9yKDs7KXtpZigo''@;'; put 'put ''MHxEKT49KDB8YVtjPj4yXSkpe2JlPTAsZj1BLE9lPXc7YnJlYWt9Zm9yKGFbRz4+Ml09cD0wfGFbKFI9TGUrKEQ8PDIpfDApPj4yXSxhW3E+PjJdPXA9KDB8YVsobD0wfGFbcCsxNj4+Ml0pPj4yXSk9PSgwfHApPzB8YVtsKzQ+PjJdOnArLTI0fDAsTT0wLGw9QSxrPXc7ISgoMHxNKT49Mik7''@;'; put 'put ''KXtzd2l0Y2goMHxUMmUoRyxxKSl7Y2FzZS0xOmZvcihBPTAsdz1sOyEoKDB8QSk+PSgwfGspKTspe2lmKDB8KGI9MHxxWCgwfGFbdz4+Ml0scCkpKXtiZT1iLGY9bCxPZT1rO2JyZWFrIGV9QT1BKzF8MCx3PTB8YVt3KzQ+PjJdfUE9MHxRbigxMiksaz9hW20rND4+Ml09QToobT0wLGw9QSks''@;'; put 'put ''YVtBKzg+PjJdPW0sYVtBPj4yXT1wLGFbQSs0Pj4yXT0wLGFbcCsyMD4+Ml09QSx3PWsrMXwwO2JyZWFrO2Nhc2UgMTppZighKEE9MHxhWyhwPXArMjB8MCk+PjJdKSl7Z2U9MTk7YnJlYWsgZX1kb3tpZigxIT0oMHxrKSl7aWYoKDB8QSk9PSgwfGwpKXthWzgrKGw9MHxhW2wrND4+Ml0pPj4y''@;'; put 'put ''XT0wO2JyZWFrfWlmKCgwfEEpPT0oMHxtKSl7YVs0KyhtPTB8YVttKzg+PjJdKT4+Ml09MDticmVha31hWzQrKHc9MHxhW0ErOD4+Ml0pPj4yXT1hWyhiPUErNHwwKT4+Ml0sYVs4KygwfGFbYj4+Ml0pPj4yXT13O2JyZWFrfWw9MCxtPTB9d2hpbGUoMCk7RnQoQSksYVtwPj4yXT0wLEE9bSx3''@;'; put 'put ''PWsrLTF8MDticmVhaztkZWZhdWx0OkE9bSx3PWt9YVtxPj4yXT1tPSgwfChwPTB8YVtSPj4yXSkpPT0oMHxhWzQrKG09MHxhW3ArMTY+PjJdKT4+Ml0pPzB8YVttPj4yXTpwKzI0fDAsTT1NKzF8MCxtPUEsaz13fUQ9RCsxfDAsQT1sLHc9a31mb3IoMTk9PSgwfGdlKSYmKCRyKDEsOTM3Mjcs''@;'; put 'put ''cGUpLHplKDE4NzQ5NiwxKSkscD0wOyEoKDB8cCk+PSgwfE9lKSk7KWdlPTB8YVtmKzQ+PjJdLEZ0KGYpLHA9cCsxfDAsZj1nZTtyZXR1cm4gRnQoTGUpLGxlPVJlLDB8YmV9LFQyZSxmdW5jdGlvbiBUOWUobCxjKXt2YXIgZjtyZXR1cm4gMHwoKGY9K19bYVsobHw9MCk+PjJdPj4zXS0rX1th''@;'; put 'put ''WyhjfD0wKT4+Ml0+PjNdKTwwPzE6KGY+MCk8PDMxPj4zMSl9LGZ1bmN0aW9uIE5fKGwsYyl7dmFyIGYscDtyZXR1cm4gMHwoKHA9K19bOCsobHw9MCk+PjNdKT4oZj0rX1s4KyhjfD0wKT4+M10pPy0xOnA8ZiYxKX0sZnVuY3Rpb24gb3JlKGwsYyl7cmV0dXJuIDB8bH0sZnVuY3Rpb24gRm1l''@;'; put 'put ''KGwsYyl7cmV0dXJuIGx8PTAsKDB8Y3IoY3w9MCkpIT0oMHxsKSYmKGM9MHxZbihsLGMsMCkpLDB8Y30sZnVuY3Rpb24gUG1lKGwsYyl7cmV0dXJuIGx8PTAsKDB8Y3IoY3w9MCkpIT0oMHxsKSYmKGM9MHxaZChsLGMsMCkpLDB8Y30sZnVuY3Rpb24gRUMobCxjKXt2YXIgZjtyZXR1cm4gZj0w''@;'; put 'put ''fGZlWyhsPTE1NysoMHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4wXSwoMHwoY3w9MCkpPj0wJiYoZmVbbD4+MF09YyksMHxmfSx6dCxWMCxmdW5jdGlvbiBJcmUobCxjKXt2YXIgZjtyZXR1cm4gZj0wfGZlWyhsPTgrKDB8YVsxNisobHw9MCk+PjJdKXwwKT4+MF0sKDB8KGN8PTApKT49MCYmKGZl''@;'; put 'put ''W2w+PjBdPWMpLDB8Zn0sZnVuY3Rpb24gYVcobCxjKXtyZXR1cm4oMHxhW2FbKGN8PTApPj4yXT4+Ml0pLSgwfGFbYVsobHw9MCk+PjJdPj4yXSl8MH0sZnVuY3Rpb24gT3JlKGwsYyl7dmFyIGY7cmV0dXJuIDB8KCgwfChsPTB8YVsoZj0wfGFbNDcwNTZdKSsoYVsxNisoMHxhWyhsfD0wKT4+''@;'; put 'put ''Ml0pPj4yXTw8Mik+PjJdKSk+KDB8KGM9MHxhW2YrKGFbMTYrKDB8YVsoY3w9MCk+PjJdKT4+Ml08PDIpPj4yXSkpPzE6KCgwfGwpPCgwfGMpKTw8MzE+PjMxKX0sZnVuY3Rpb24gZ3MobCxjKXt2YXIgZixwO3JldHVybiAwfCgocD0rX1sobD0wfGFbKGx8PTApPj4yXSk+PjNdKyArX1tsKzg+''@;'; put 'put ''PjNdKTwoZj0rX1soYz0wfGFbKGN8PTApPj4yXSk+PjNdKyArX1tjKzg+PjNdKT8xOihwPmYpPDwzMT4+MzEpfSxmdW5jdGlvbiBSdShsLGMpe3ZhciBmLHAsbTtyZXR1cm4ocD0rX1s4KyhjfD0wKT4+M10tK19bOCsobT0wfGFbKGx8PTApPj4yXSk+PjNdKSpwKyhmPStfW2M+PjNdLStfW20+''@;'; put 'put ''PjNdKSpmPD0rX1thW2wrND4+Ml0+PjNdfDB9LF91LFlqLGZ1bmN0aW9uIEFsZShsLGMpe3JldHVybiAwfHkwKDB8YVsobHw9MCk+PjJdLDB8YVsoY3w9MCk+PjJdKX0sZnVuY3Rpb24gUmxlKGwsYyl7cmV0dXJuIDB8WmkoMHxhWyhsfD0wKT4+Ml0sMHxhWyhjfD0wKT4+Ml0pfSxMaSxmdW5j''@;'; put 'put ''dGlvbiB1QihsLGMpe2x8PTAsY3w9MDt2YXIgQSx3LGIsayxNLGdlLGJlLE9lLExlLFJlLEhlLGY9MCxwPTAsbT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLFZlPTAscWU9MCxydD0wLFdlPTAsYXQ9MCxTdD0wLGt0PTA7Zm9yKEhlPWxlLGxlPWxlKzExMnwwLE9lPUhlKzY0fDAsYmU9SGUrOTZ8''@;'; put 'put ''MCxNPUhlKzMyfDAsTGU9SGUsUmU9MHx2cigyOCksYz0wfEdvKGwpLGFbKGdlPVJlKzR8MCk+PjJdPWMsYz0wfHZyKDcyKmN8MCksYVsocGU9UmUrMTJ8MCk+PjJdPWMsX1socD1MZSs4fDApPj4zXT0xNzk3NjkzMTM0ODYyMzE1N2UyOTIsX1tMZT4+M109MTc5NzY5MzEzNDg2MjMxNTdlMjky''@;'; put 'put ''LF9bKG09TGUrMjR8MCk+PjNdPS0xNzk3NjkzMTM0ODYyMzE1N2UyOTIsX1soQT1MZSsxNnwwKT4+M109LTE3OTc2OTMxMzQ4NjIzMTU3ZTI5Mix3PU0rMTZ8MCxiPU0rOHwwLGs9TSsyNHwwLGY9MHxEdChsKSxEPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MixSPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5''@;'; put 'put ''MixHPS0xNzk3NjkzMTM0ODYyMzE1N2UyOTIscT0tMTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Y7KVZlPShWZT0uNSorX1s4MCsoU3Q9MHxhWyhhdD1mKzE2fDApPj4yXSk+PjNdKTwxPzE6VmUsX1tNPj4zXT1XZT0oa3Q9K19bU3QrMTY+PjNdKS0ocWU9KHFlPS41KigrX1tTdCs5Nj4+M10rICtf''@;'; put 'put ''W1N0Kzg4Pj4zXSkpPDE/MTpxZSksX1t3Pj4zXT1xZT1rdCtxZSxfW2I+PjNdPXJ0PShrdD0rX1tTdCsyND4+M10pLVZlLF9baz4+M109VmU9a3QrVmUsX1tMZT4+M109V2U9K19bKEQ8V2U/TGU6TSk+PjNdLF9bcD4+M109cnQ9K19bKFI8cnQ/TGU6TSkrOD4+M10sX1tBPj4zXT1xZT0rX1so''@;'; put 'put ''Rz5xZT9MZTpNKSsxNj4+M10sX1ttPj4zXT1WZT0rX1socT5WZT9MZTpNKSsyND4+M10sYVsoU3Q9Yys0MHwwKT4+Ml09YVtNPj4yXSxhW1N0KzQ+PjJdPWFbTSs0Pj4yXSxhW1N0Kzg+PjJdPWFbTSs4Pj4yXSxhW1N0KzEyPj4yXT1hW00rMTI+PjJdLGFbU3QrMTY+PjJdPWFbTSsxNj4+Ml0s''@;'; put 'put ''YVtTdCsyMD4+Ml09YVtNKzIwPj4yXSxhW1N0KzI0Pj4yXT1hW00rMjQ+PjJdLGFbU3QrMjg+PjJdPWFbTSsyOD4+Ml0sYVtjPj4yXT0xfGFbYz4+Ml0sYVsxMTIrKDB8YVthdD4+Ml0pPj4yXT1jLGM9Yys3MnwwLGY9MHx6dChsLGYpLEQ9V2UsUj1ydCxHPXFlLHE9VmU7Zm9yKF9bTGU+PjNd''@;'; put 'put ''PUQrLTM2LF9bcD4+M109UistMzYsX1tBPj4zXT1HKzM2LF9bbT4+M109cSszNixTdD0wfGFbcGU+PjJdLG09MHxhW2dlPj4yXSxhW09lPj4yXT1hW0xlPj4yXSxhW09lKzQ+PjJdPWFbTGUrND4+Ml0sYVtPZSs4Pj4yXT1hW0xlKzg+PjJdLGFbT2UrMTI+PjJdPWFbTGUrMTI+PjJdLGFbT2Ur''@;'; put 'put ''MTY+PjJdPWFbTGUrMTY+PjJdLGFbT2UrMjA+PjJdPWFbTGUrMjA+PjJdLGFbT2UrMjQ+PjJdPWFbTGUrMjQ+PjJdLGFbT2UrMjg+PjJdPWFbTGUrMjg+PjJdLG09MHxmdW5jdGlvbiBkQihsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgayxNLFIsRyxxLG09MCxBPTAsdz0wLGI9MCxEPTAs''@;'; put 'put ''cGU9MDtmb3IocT1sZSxsZT1sZSszMnwwLHc9cSxtPTQrKGI9KGN8PTApPDwyKXwwLEc9MHxRbig1NiooYj1iKzV8MCl8MCksYj0wfHZyKGI8PDIpLGs9MHxRbig3MiooQT01Km18MSl8MCksTT0wfHZyKEQ9QTw8NSksRD0wfHZyKEQpLGFbdz4+Ml09YVtwPj4yXSxhW3crND4+Ml09YVtwKzQ+''@;'; put 'put ''PjJdLGFbdys4Pj4yXT1hW3ArOD4+Ml0sYVt3KzEyPj4yXT1hW3ArMTI+PjJdLGFbdysxNj4+Ml09YVtwKzE2Pj4yXSxhW3crMjA+PjJdPWFbcCsyMD4+Ml0sYVt3KzI0Pj4yXT1hW3ArMjQ+PjJdLGFbdysyOD4+Ml09YVtwKzI4Pj4yXSxxOChsLGMsdyxHLDApLE5qKDE3MyksVjkobSxiKSxq''@;'; put 'put ''OShtLEcsYixBLGspLFI9MHxmdShtLEcsaywwLE0pLGFbdz4+Ml09YVtwPj4yXSxhW3crND4+Ml09YVtwKzQ+PjJdLGFbdys4Pj4yXT1hW3ArOD4+Ml0sYVt3KzEyPj4yXT1hW3ArMTI+PjJdLGFbdysxNj4+Ml09YVtwKzE2Pj4yXSxhW3crMjA+PjJdPWFbcCsyMD4+Ml0sYVt3KzI0Pj4yXT1h''@;'; put 'put ''W3ArMjQ+PjJdLGFbdysyOD4+Ml09YVtwKzI4Pj4yXSxxOChsLGMsdyxHLDEpLFY5KG0sYiksajkobSxHLGIsQSxrKSxtPTB8ZnUobSxHLGssMSxEKSxBPTB8dnIoMHxBcihSPDw1LG0pKSxjPTAsbD0wOyEoKDB8Yyk+PSgwfG0pKTspe2Zvcih3PUQrKGM8PDUpfDAscD0wOyEoKDB8cCk+PSgw''@;'; put 'put ''fFIpKTspcGU9bCsoMCE9KDB8RWQoQSsobDw8NSl8MCx3LE0rKHA8PDUpfDApKSYxKXwwLHA9cCsxfDAsbD1wZTtjPWMrMXwwfXJldHVybiBwZT0wfFYwKEEsbDw8NSksRnQoRyksRnQoYiksRnQoayksRnQoTSksRnQoRCksYVtmPj4yXT1sLGxlPXEsMHxwZX0oU3QsbSxiZSxPZSksMSZhWzQ3''@;'; put 'put ''MzIzXXwwJiYocGU9MHxhW3BlPj4yXSxhdD0wfGFbZ2U+PjJdLFN0PTB8YVtiZT4+Ml0sYVtPZT4+Ml09YVtMZT4+Ml0sYVtPZSs0Pj4yXT1hW0xlKzQ+PjJdLGFbT2UrOD4+Ml09YVtMZSs4Pj4yXSxhW09lKzEyPj4yXT1hW0xlKzEyPj4yXSxhW09lKzE2Pj4yXT1hW0xlKzE2Pj4yXSxhW09l''@;'; put 'put ''KzIwPj4yXT1hW0xlKzIwPj4yXSxhW09lKzI0Pj4yXT1hW0xlKzI0Pj4yXSxhW09lKzI4Pj4yXT1hW0xlKzI4Pj4yXSxmdW5jdGlvbiBjQihsLGMsZixwLG0pe2x8PTAsY3w9MCxwfD0wLG18PTA7dmFyIEEsdyxiLGssTSxELFIsRyxxLHBlLGdlLGJlPTAsT2U9MCxMZT0wO2ZvcihxPWxlLGxl''@;'; put 'put ''PWxlKzEyOHwwLEc9cSs5NnwwLFI9cSs2NHwwLGI9cSszMnwwLHBlPXErMTZ8MCxnZT1xLE09K19bMTYrKGZ8PTApPj4zXSxEPStfW2Y+PjNdLGs9K19bZisyND4+M10sQT0rX1tmKzg+PjNdLF91KDEzNzc3MCx3PTB8YVsxNTcxMl0pLGFbZ2U+PjJdPTEwLGFbZ2UrND4+Ml09MTAsYVtnZSs4''@;'; put 'put ''Pj4yXT1+fihNKzEwLUQpLGFbZ2UrMTI+PjJdPX5+KGsrMTAtQSksVDAodywxMzgyMDAsZ2UpLF9bcGU+PjNdPTEwLUQsX1twZSs4Pj4zXT0xMC1BLFQwKHcsMTM4MjQ4LHBlKSxfdSgxMzgyNjUsdyksZj0wOyEoKDB8Zik+PSgwfGMpKTspTGU9K19bbCsoNzIqZnwwKSs0OD4+M10sT2U9K19b''@;'; put 'put ''bCsoNzIqZnwwKSs1Nj4+M10sYmU9K19bbCsoNzIqZnwwKSs2ND4+M10sX1tiPj4zXT0rX1tsKyg3MipmfDApKzQwPj4zXSxfW2IrOD4+M109TGUsX1tiKzE2Pj4zXT1PZSxfW2IrMjQ+PjNdPWJlLFQwKHcsMTM4Mjg0LGIpLGY9ZisxfDA7Zm9yKF91KDEzODMwMix3KSxmPTA7ISgoMHxmKT49''@;'; put 'put ''KDB8bSkpOyliZT0rX1twKyhmPDw1KSs4Pj4zXSxPZT0rX1twKyhmPDw1KSsxNj4+M10sTGU9K19bcCsoZjw8NSkrMjQ+PjNdLF9bUj4+M109K19bcCsoZjw8NSk+PjNdLF9bUis4Pj4zXT1iZSxfW1IrMTY+PjNdPU9lLF9bUisyND4+M109TGUsVDAodywxMzgzMjEsUiksZj1mKzF8MDtfdSgx''@;'; put 'put ''MzgzMzksdyksX1tHPj4zXT1ELF9bRys4Pj4zXT1BLF9bRysxNj4+M109TSxfW0crMjQ+PjNdPWssVDAodywxMzgzMjEsRyksX3UoMTM4MDg2LHcpLGxlPXF9KHBlLGF0LE9lLG0sU3QpKSxhWyhwPVJlKzh8MCk+PjJdPTB8dnIoNzIqKDB8YVtiZT4+Ml0pfDApLGFbUmU+PjJdPWFbYmU+PjJd''@;'; put 'put ''LGY9MHxhW2JlPj4yXSxjPTA7ISgoMHxjKT49KDB8ZikpOylhWyhTdD0oMHxhW3A+PjJdKSsoNzIqY3wwKSs0MHwwKT4+Ml09YVsoYXQ9bSsoYzw8NSl8MCk+PjJdLGFbU3QrND4+Ml09YVthdCs0Pj4yXSxhW1N0Kzg+PjJdPWFbYXQrOD4+Ml0sYVtTdCsxMj4+Ml09YVthdCsxMj4+Ml0sYVtT''@;'; put 'put ''dCsxNj4+Ml09YVthdCsxNj4+Ml0sYVtTdCsyMD4+Ml09YVthdCsyMD4+Ml0sYVtTdCsyND4+Ml09YVthdCsyND4+Ml0sYVtTdCsyOD4+Ml09YVthdCsyOD4+Ml0sYz1jKzF8MDtyZXR1cm4gRnQobSksYVtPZT4+Ml09YVtMZT4+Ml0sYVtPZSs0Pj4yXT1hW0xlKzQ+PjJdLGFbT2UrOD4+Ml09''@;'; put 'put ''YVtMZSs4Pj4yXSxhW09lKzEyPj4yXT1hW0xlKzEyPj4yXSxhW09lKzE2Pj4yXT1hW0xlKzE2Pj4yXSxhW09lKzIwPj4yXT1hW0xlKzIwPj4yXSxhW09lKzI0Pj4yXT1hW0xlKzI0Pj4yXSxhW09lKzI4Pj4yXT1hW0xlKzI4Pj4yXSxhW1JlKzE2Pj4yXT0wfGZ1bmN0aW9uIExiKGwsYyl7Y3w9''@;'; put 'put ''MDt2YXIgcGUsYmUsTGUsSGUsVmUscWUscnQsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAsZ2U9MCxPZT0wLFJlPTAsV2U9MCxhdD0wLFN0PTA7Zm9yKHJ0PWxlLGxlPWxlKzMyfDAsYmU9cnQrMTZ8MCxrPXJ0LFZlPTB8ZnVuY3Rpb24gWjgobCl7dmFy''@;'; put 'put ''IGM7cmV0dXJuIGx8PTAsYz0wfHZyKDI0KSxhW2M+PjJdPTAsYVtjKzE2Pj4yXT0wfHZyKDQwKmx8MCksMHxjfSgoUmU9MHxhWyhsfD0wKT4+Ml0pPDwyfDIpLHFlPTB8aXMoNTU5NjAsMHxhWzQ1ODFdKSxMZT0wfGlzKDU1OTk2LDB8YVs0NTgxXSksUmU9MHx2cihSZTw8NyksbT0wfHZyKGFb''@;'; put 'put ''bD4+Ml08PDQpLEhlPWwrOHwwLEE9YysxNnwwLHc9ays4fDAsYj1jKzI0fDAsTT1jKzh8MCxmPTA7ISgoMHxmKT49KDB8YVtsPj4yXSkpOylSPShEPTB8YVtIZT4+Ml0pKyg3MipmfDApfDAsYVtEKyg3MipmfDApKzMyPj4yXT00LGFbKEc9RCsoNzIqZnwwKSszNnwwKT4+Ml09bSsoZjw8Mjw8''@;'; put 'put ''MikscT1EKyg3MipmfDApKzQwfDAsKHA9K19bRCsoNzIqZnwwKSs1Nj4+M10pPCtfW0E+PjNdJiYoX1trPj4zXT1wLF9bdz4+M109K19bRCsoNzIqZnwwKSs0OD4+M10sYVtiZT4+Ml09YVtrPj4yXSxhW2JlKzQ+PjJdPWFbays0Pj4yXSxhW2JlKzg+PjJdPWFbays4Pj4yXSxhW2JlKzEyPj4y''@;'; put 'put ''XT1hW2srMTI+PjJdLGdlPTB8SGwoVmUscWUsYmUsUmUsMSksYVtnZSsyMD4+Ml09UixhW2FbRz4+Ml0+PjJdPWdlKSwocD0rX1tEKyg3MipmfDApKzY0Pj4zXSk8K19bYj4+M10mJihfW2s+PjNdPStfW3E+PjNdLF9bdz4+M109cCxhW2JlPj4yXT1hW2s+PjJdLGFbYmUrND4+Ml09YVtrKzQ+''@;'; put 'put ''PjJdLGFbYmUrOD4+Ml09YVtrKzg+PjJdLGFbYmUrMTI+PjJdPWFbaysxMj4+Ml0sZ2U9MHxIbChWZSxMZSxiZSxSZSwwKSxhW2dlKzIwPj4yXT1SLGFbNCsoMHxhW0c+PjJdKT4+Ml09Z2UpLCtfW3E+PjNdPitfW2M+PjNdJiYoYVtiZT4+Ml09YVtxPj4yXSxhW2JlKzQ+PjJdPWFbcSs0Pj4y''@;'; put 'put ''XSxhW2JlKzg+PjJdPWFbcSs4Pj4yXSxhW2JlKzEyPj4yXT1hW3ErMTI+PjJdLGdlPTB8SGwoVmUscWUsYmUsUmUsMSksYVtnZSsyND4+Ml09UixhWzgrKDB8YVtHPj4yXSk+PjJdPWdlKSwrX1tEKyg3MipmfDApKzQ4Pj4zXT4rX1tNPj4zXSYmKGFbYmU+PjJdPWFbcT4+Ml0sYVtiZSs0Pj4y''@;'; put 'put ''XT1hW3ErND4+Ml0sYVtiZSs4Pj4yXT1hW3ErOD4+Ml0sYVtiZSsxMj4+Ml09YVtxKzEyPj4yXSxnZT0wfEhsKFZlLExlLGJlLFJlLDApLGFbZ2UrMjQ+PjJdPVIsYVsxMisoMHxhW0c+PjJdKT4+Ml09Z2UpLGY9ZisxfDA7Zm9yKFI9MHx2cihhW1ZlPj4yXTw8MikscGU9bCs0fDAsZ2U9bCsx''@;'; put 'put ''MnwwLEc9YmUrOHwwLE09MCxxPTAsRD0wOzspe2lmKCgwfEQpPj0oMHwoZj0wfGFbcGU+PjJdKSkpe2M9MDticmVha31mb3Iodz0oQT0wfGFbZ2U+PjJdKSsoNzIqRHwwKXwwLGFbKGI9QSsoNzIqRHwwKSszNnwwKT4+Ml09UisoTTw8MiksYVtiZT4+Ml09YVsoYz1BKyg3MipEfDApKzQwfDAp''@;'; put 'put ''Pj4yXSxhW2JlKzQ+PjJdPWFbYys0Pj4yXSxhW2JlKzg+PjJdPWFbYys4Pj4yXSxhW2JlKzEyPj4yXT1hW2MrMTI+PjJdLGM9QSsoNzIqRHwwKSs1NnwwLGs9QSsoNzIqRHwwKSszMnwwLGY9MHxtaVs2MyZhW0xlPj4yXV0oTGUsYmUsNTEyKTtmJiYrX1tmKzg+PjNdPCtfW2M+PjNdOylhdD0w''@;'; put 'put ''fGFbZj4+Ml0sV2U9MHxhW2I+PjJdLGFbaz4+Ml09MSsobT0wfGFbaz4+Ml0pLGFbV2UrKG08PDIpPj4yXT1hdCxhWzI0KygwfGFbZj4+Ml0pPj4yXT13LGY9MHxtaVs2MyZhW0xlPj4yXV0oTGUsZiw4KTtmb3IobT1BKyg3MipEfDApKzY0fDAsZj0wfG1pWzYzJmFbcWU+PjJdXShxZSxiZSw1''@;'; put 'put ''MTIpOzspe2lmKCFmKXtPZT0yMDticmVha31pZighKCtfW2YrMTY+PjNdPChwPStfW20+PjNdKSkpYnJlYWs7Yz0wfGFbZj4+Ml0sV2U9MHxhW2I+PjJdLGFbaz4+Ml09MSsoYXQ9MHxhW2s+PjJdKSxhW1dlKyhhdDw8Mik+PjJdPWMsYVsyNCsoMHxhW2Y+PjJdKT4+Ml09dyxmPTB8bWlbNjMm''@;'; put 'put ''YVtxZT4+Ml1dKHFlLGYsOCl9Zm9yKDIwPT0oMHxPZSkmJihPZT0wLHA9K19bbT4+M10pLF9bRz4+M109cCxjPUErKDcyKkR8MCkrNTZ8MCxmPTB8bWlbNjMmYVtMZT4+Ml1dKExlLGJlLDUxMik7Oyl7aWYoIWYpe09lPTI1O2JyZWFrfWlmKCEoK19bZis4Pj4zXTwocD0rX1tjPj4zXSkpKWJy''@;'; put 'put ''ZWFrO1N0PTB8YVtmPj4yXSxXZT0wfGFbYj4+Ml0sYVtrPj4yXT0xKyhhdD0wfGFbaz4+Ml0pLGFbV2UrKGF0PDwyKT4+Ml09U3QsYVsyMCsoMHxhW2Y+PjJdKT4+Ml09dyxmPTB8bWlbNjMmYVtMZT4+Ml1dKExlLGYsOCl9Zm9yKDI1PT0oMHxPZSkmJihPZT0wLHA9K19bYz4+M10pLF9bYmU+''@;'; put 'put ''PjNdPXAsX1tHPj4zXT0rX1tBKyg3MipEfDApKzQ4Pj4zXSxmPTB8bWlbNjMmYVtxZT4+Ml1dKHFlLGJlLDUxMik7ZiYmK19bZisxNj4+M108K19bbT4+M107KVdlPTB8YVtmPj4yXSxhdD0wfGFbYj4+Ml0sYVtrPj4yXT0xKyhTdD0wfGFbaz4+Ml0pLGFbYXQrKFN0PDwyKT4+Ml09V2UsYVsy''@;'; put 'put ''MCsoMHxhW2Y+PjJdKT4+Ml09dyxmPTB8bWlbNjMmYVtxZT4+Ml1dKHFlLGYsOCk7TT0oU3Q9MHxhW2s+PjJdKStNfDAscT0oMHxTdCk+KDB8cSk/U3Q6cSxEPUQrMXwwfWZvcig7ISgoMHxjKT49KDB8ZikpOylmQigoMHxhW2dlPj4yXSkrKDcyKmN8MCl8MCksYz1jKzF8MCxmPTB8YVtwZT4+''@;'; put 'put ''Ml07Zm9yKGFbKFN0PTB8YVtWZSsxNj4+Ml0pKyg0MCooZj0wfGFbVmU+PjJdKXwwKSszMj4+Ml09ZixhW1N0Kyg0MCooZj1mKzF8MCl8MCkrMzI+PjJdPWYsZnVuY3Rpb24gTVIobCxjKXt2YXIgbSxmPTAscD0wO2ZvcihmPTB8dnIoKDYqKDB8YVsobHw9MCk+PjJdKXwwKSsoKGN8PTApPDwx''@;'; put 'put ''KTw8MiksYVtsKzIwPj4yXT0wfHZyKDI0KigoMyooMHxhW2w+PjJdKXwwKStjfDApfDApLHA9MHxhW2w+PjJdLG09bCsxNnwwLGw9MDshKCgwfGwpPj0oMHxwKSk7KWFbKDB8YVttPj4yXSkrKDQwKmx8MCkrMjg+PjJdPWYsZj1mKzI0fDAsbD1sKzF8MDtmb3IocD1wKzJ8MDshKCgwfGwpPj0o''@;'; put 'put ''MHxwKSk7KWFbKDB8YVttPj4yXSkrKDQwKmx8MCkrMjg+PjJdPWYsZj1mKyhjPDwyKXwwLGw9bCsxfDB9KFZlLHEpLGY9MDshKCgwfGYpPj0oMHxhW2w+PjJdKSk7KSQ4KCgwfGFbSGU+PjJdKSsoNzIqZnwwKXwwLFZlKSxmPWYrMXwwO3JldHVybiBObChxZSksTmwoTGUpLEZ0KFJlKSxmdW5j''@;'; put 'put ''dGlvbiB5ZihsKXt2YXIgbSxBLHcsYixrLGM9MCxmPTAscD0wO2ZvcihrPWxlLGxlPWxlKzE2fDAsYj1rKzh8MCx3PWssbT0xNisobHw9MCl8MCxBPTB8YVsxNTcxMl0scD0wOzspe2lmKCgwfHApPj0oMHxhW2w+PjJdKSl7Yz0xMDticmVha31pZigwPT0oMHxhWyhmPShjPTB8YVttPj4yXSkr''@;'; put 'put ''KDQwKnB8MCkrMjB8MCk+PjJdKSYmKGFbdz4+Ml09cCxUMChBLDEzODA5Nix3KSwwPT0oMHxhW2Y+PjJdKSkpe2M9NTticmVha31pZigwPT0oMHxhWyhjPWMrKDQwKnB8MCkrMjR8MCk+PjJdKSYmKGFbYj4+Ml09cCxUMChBLDEzODE0OCxiKSwwPT0oMHxhW2M+PjJdKSkpe2M9ODticmVha31w''@;'; put 'put ''PXArMXwwfWlmKDU9PSgwfGMpKVByKDEzODExOCwxMzgxMzEsMzExLDEzODEzOCk7ZWxzZSBpZig4PT0oMHxjKSlQcigxMzgxNzAsMTM4MTMxLDMxMywxMzgxMzgpO2Vsc2UgaWYoMTA9PSgwfGMpKWxlPWt9KFZlKSxmdW5jdGlvbiBKTShsKXt2YXIgYyxmLHA9MDtmb3IoYVs4KyhsfD0wKT4+''@;'; put 'put ''Ml09Zj0wfGFbbD4+Ml0sYVtsKzEyPj4yXT1hW2wrND4+Ml0sYz1sKzE2fDAsbD0wOyEoKDB8bCk+PSgwfGYpKTspaXRbKHA9MHxhW2M+PjJdKSsoNDAqbHwwKSsxOD4+MV09MHxpdFtwKyg0MCpsfDApKzE2Pj4xXSxsPWwrMXwwfShWZSksbGU9cnQsMHxWZX0oUmUsT2UpLGxlPUhlLDB8UmV9''@;'; put 'put ''LHcwLFMwLGZ1bmN0aW9uIHphKGwsYyl7cmV0dXJuKDB8YVsobHw9MCk+PjJdKS0oMHxhWyhjfD0wKT4+Ml0pfDB9LFppLGZ1bmN0aW9uIGtiKGwsYyl7cmV0dXJuIDB8eTAoMHxhWyhsfD0wKT4+Ml0sMHxhWyhjfD0wKT4+Ml0pfSxmdW5jdGlvbiBTcyhsLGMpe3JldHVybiAwfHkwKDB8YVso''@;'; put 'put ''bHw9MCk+PjJdLDB8YVsoY3w9MCk+PjJdKX0sZnVuY3Rpb24gWkIobCxjKXtsfD0wLGN8PTA7dmFyIG0sZj0wLHA9MDtmb3IobT0wfGFbNDc1MTNdLGY9MCxwPTA7MyE9KDB8cCk7KWY9ZisoMiE9KDB8SmYoMHxhW2FbbSsoNTIqbHwwKSs0KyhwPDw0KT4+Ml0+PjJdLDB8YVthW20rKDUyKmx8''@;'; put 'put ''MCkrNCsocDw8NCkrND4+Ml0+PjJdLGMpKSYxKXwwLHA9cCsxfDA7cmV0dXJuIDEmKDM9PSgwfGYpfDA9PSgwfGYpKXwwfSxmdW5jdGlvbiB6QihsLGMpe2N8PTA7dmFyIGY9MCxwPTAsbT0wO3A9KGY9MHxhWzQ3NTEzXSkrKDUyKihsfD0wKXwwKXwwO2U6ZG97aWYoMHxhW3A+PjJdKWY9MDtl''@;'; put 'put ''bHNlIGlmKGFbcD4+Ml09MSwoMHxsKT09KDB8YykpZj0xO2Vsc2V7Zm9yKG09MDshKCgwfG0pPj0zKTspe2lmKHA9MHxhW2YrKDUyKmx8MCkrNCsobTw8NCkrMTI+PjJdKXtpZigwfHpCKChwLWZ8MCkvNTJ8MCxjKSl7Zj0xO2JyZWFrIGV9Zj0wfGFbNDc1MTNdfW09bSsxfDB9YVtmKyg1Mips''@;'; put 'put ''fDApPj4yXT0wLGY9MH19d2hpbGUoMCk7cmV0dXJuIDB8Zn0sVWEsZnVuY3Rpb24gclAobCxjKXtyZXR1cm4gMHwoKGw9MHxCaVsxMjcmYVszNjQrKGx8PTApPj4yXV0oMHxhW2wrMzY4Pj4yXSxjfD0wKSk+Pj4wPjY1NTM1PzA6YVs1Njk0MCsoKCgwfFh0WzE0NDA0NCsobD4+PjgpPj4wXSk8''@;'; put 'put ''PDN8bD4+PjUmNyk8PDIpPj4yXSYxPDwoMzEmbCkpfSxmdW5jdGlvbiBpUChsLGMpe3JldHVybiAwfCgobD0wfEJpWzEyNyZhWzM2NCsobHw9MCk+PjJdXSgwfGFbbCszNjg+PjJdLGN8PTApKT4+PjA+NjU1MzU/MDphWzU2OTQwKygoKDB8WHRbMTQzNzg4KyhsPj4+OCk+PjBdKTw8M3xsPj4+''@;'; put 'put ''NSY3KTw8Mik+PjJdJjE8PCgzMSZsKSl9LGZ1bmN0aW9uIEJfKGwsYyl7cmV0dXJuIDB8KChsPTB8QmlbMTI3JmFbMzY0KyhsfD0wKT4+Ml1dKDB8YVtsKzM2OD4+Ml0sY3w9MCkpPj4+MD42NTUzNT8xOigwfFBkKGwpKT4+PjMxKX0sZnVuY3Rpb24gb2ZlKGwsYyl7cmV0dXJuKDB8YVthWyhs''@;'; put 'put ''fD0wKT4+Ml0+PjJdKS0oMHxhW2FbKGN8PTApPj4yXT4+Ml0pfDB9LEsxLEsxLEsxLEsxLEsxLEsxLEsxLEsxLEsxLEsxLEsxLEsxLEsxLEsxLEsxLEsxXSxkOD1bUkwsZnVuY3Rpb24gZzllKGwsYyxmLHApe2x8PTAsZj0rZixwPStwO3ZhciBrLEcscSxtPTAsQT0wLHc9MCxiPTAsTT0wLEQ9''@;'; put 'put ''MCxSPTAscGU9MCxnZT0wLGJlPTAsT2U9MDtxPWxlLGxlPWxlKzgwfDAsRD1xKzY0fDAsRz1xKzY4fDAsQT1xKzQ4fDAsdz1xKzMyfDAsYj1xKzE2fDAsaz1xLG09MHxhWyhNPTE2KyhjfD0wKXwwKT4+Ml07ZTpkb3tpZigwfGFbbSsyMTI+PjJdKWFbRz4+Ml09NCxiZT0uNSorX1ttKzMyPj4z''@;'; put 'put ''XStmLE9lPS41KitfW20rNDA+PjNdK3AsYVtsKzQwPj4yXT0xLEE9MHxRbig2NCksX1tBPj4zXT1iZSxfW0ErOD4+M109T2UsZ2U9LWJlLF9bQSsxNj4+M109Z2UsX1tBKzI0Pj4zXT1PZSxfW0ErMzI+PjNdPWdlLE9lPS1PZSxfW0ErNDA+PjNdPU9lLF9bQSs0OD4+M109YmUsX1tBKzU2Pj4z''@;'; put 'put ''XT1PZSxSPTIxO2Vsc2Ugc3dpdGNoKDB8JDUoYykpe2Nhc2UgMTpzd2l0Y2goYVtHPj4yXT1iPTB8YVs4Kyh3PTB8YVsxMisobT0wfGFbTT4+Ml0pPj4yXSk+PjJdLDB8ZmVbKG09MHxhW2FbbSs4Pj4yXT4+Ml0pPj4wXSl7Y2FzZSA5ODpSPTB8WmkobSwxMDgyMzYpPzg6MTE7YnJlYWs7Y2Fz''@;'; put 'put ''ZSAxMTI6Uj0wPT0oMHxaaShtLDEwNTcyMSkpJiYwIT0oMHxIMmUoMHxhW3crNDQ+PjJdLGIpKT8xMTo4O2JyZWFrO2RlZmF1bHQ6Uj04fWRve2lmKDg9PSgwfFIpKXtpZigoMHxiKTwzKXthW2wrNDA+PjJdPTA9PSgwfGFbdz4+Ml0pPzA6MixSPTE3O2JyZWFrfWFbKG09bCs0MHwwKT4+Ml09''@;'; put 'put ''MDticmVha30xMT09KDB8UikmJihhWyhtPWwrNDB8MCk+PjJdPTEsKDB8Yik8PTImJihSPTE3KSl9d2hpbGUoMCk7aWYoMTc9PSgwfFIpKXtBPTB8UVYoYyxHLGYscCksUj0yMTticmVhayBlfWlmKEE9MHxRbihiPDw0KSx3PXcrNDR8MCwxPT0oMHxhW20+PjJdKSl7X1tBPj4zXT0uMDEzODg4''@;'; put 'put ''ODg4ODg4ODg4ODg4KitfWyhSPTB8YVt3Pj4yXSk+PjNdKyhwZT1mKSxfW0ErOD4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCorX1tSKzg+PjNdKyhmPXApLF9bQSsxNj4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCorX1tSKzE2Pj4zXS1wZSxfW0ErMjQ+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgq''@;'; put 'put ''K19bUisyND4+M10rZixfW0ErMzI+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqK19bUiszMj4+M10tcGUsX1tBKzQwPj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KitfW1IrNDA+PjNdLWYsX1tBKzQ4Pj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KitfW1IrNDg+PjNdK3BlLF9bQSs1Nj4+M109LjAx''@;'; put 'put ''Mzg4ODg4ODg4ODg4ODg4OCorX1tSKzU2Pj4zXS1mLFI9MjE7YnJlYWsgZX1mb3IobT0wOzspe2lmKCgwfG0pPj0oMHxiKSl7Uj0yMTticmVhayBlfWdlPStEMCgrKChwZT0rX1soUj0wfGFbdz4+Ml0pKyhtPDw0KSs4Pj4zXSkqcGUrKGJlPStfW1IrKG08PDQpPj4zXSkqYmUpKSxfW0ErKG08''@;'; put 'put ''PDQpPj4zXT0oZi9nZSsxKSpiZSouMDEzODg4ODg4ODg4ODg4ODg4LF9bQSsobTw8NCkrOD4+M109KHAvZ2UrMSkqcGUqLjAxMzg4ODg4ODg4ODg4ODg4OCxtPW0rMXwwfWNhc2UgMjphW0c+PjJdPTQsUj0wfFFuKDY0KSxPZT0rX1szMisoYz0wfGFbMTIrKDB8YVtNPj4yXSk+PjJdKT4+M10s''@;'; put 'put ''Z2U9K19bYys0MD4+M10sSlYoQSxEPX5+K19bYysxNj4+M10sYz1+fitfW2MrMjQ+PjNdLGJlPS1mLHBlPS1wKSxhW1I+PjJdPWFbQT4+Ml0sYVtSKzQ+PjJdPWFbQSs0Pj4yXSxhW1IrOD4+Ml09YVtBKzg+PjJdLGFbUisxMj4+Ml09YVtBKzEyPj4yXSxBPVIrMTZ8MCxKVih3LE09fn5PZSxj''@;'; put 'put ''LGYscGUpLGFbQT4+Ml09YVt3Pj4yXSxhW0ErND4+Ml09YVt3KzQ+PjJdLGFbQSs4Pj4yXT1hW3crOD4+Ml0sYVtBKzEyPj4yXT1hW3crMTI+PjJdLEE9UiszMnwwLEpWKGIsTSxjPX5+Z2UsZixwKSxhW0E+PjJdPWFbYj4+Ml0sYVtBKzQ+PjJdPWFbYis0Pj4yXSxhW0ErOD4+Ml09YVtiKzg+''@;'; put 'put ''PjJdLGFbQSsxMj4+Ml09YVtiKzEyPj4yXSxBPVIrNDh8MCxKVihrLEQsYyxiZSxwKSxhW0E+PjJdPWFbaz4+Ml0sYVtBKzQ+PjJdPWFbays0Pj4yXSxhW0ErOD4+Ml09YVtrKzg+PjJdLGFbQSsxMj4+Ml09YVtrKzEyPj4yXSxhW2wrNDA+PjJdPTEsQT1SLFI9MjE7YnJlYWsgZTtjYXNlIDM6''@;'; put 'put ''YVtsKzQwPj4yXT0yLEE9MHxRVihjLEcsZixwKSxSPTIxO2JyZWFrIGU7ZGVmYXVsdDphW0Q+PjJdPWFbYVs4KygwfGFbTT4+Ml0pPj4yXT4+Ml0sJHIoMSw5Mzg4MyxEKSxtPTE7YnJlYWsgZX19d2hpbGUoMCk7cmV0dXJuIDIxPT0oMHxSKSYmKGFbbCszNj4+Ml09QSxhW2wrMzI+PjJdPW09''@;'; put 'put ''MHxhW0c+PjJdLE4yZShBLG0sbCxsKzE2fDApLCgwfG0pPigwfGFbNDY5MTRdKSYmKGFbNDY5MTRdPW0pLG09MCksbGU9cSwwfG19LGZ1bmN0aW9uIG05ZShsLGMsZixwKXtsfD0wLGY9K2YscD0rcDt2YXIgUixxLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxHPTAscGU9MCxnZT0wLGJl''@;'; put 'put ''PTAsT2U9MDtxPWxlLGxlPWxlKzgwfDAsTT1xKzY0fDAsUj1xKzY4fDAsQT1xKzQ4fDAsdz1xKzMyfDAsYj1xKzE2fDAsaz1xLG09MHxhWyhEPTE2KyhjfD0wKXwwKT4+Ml07ZTpkb3tpZigwfGFbbSsyMTI+PjJdKWFbUj4+Ml09NCxiZT0uNSorX1ttKzMyPj4zXSxPZT0uNSorX1ttKzQwPj4z''@;'; put 'put ''XSxhW2wrNDA+PjJdPTEsQT0wfFFuKDY0KSxfW0E+PjNdPWJlLF9bQSs4Pj4zXT1PZSxnZT0tYmUsX1tBKzE2Pj4zXT1nZSxfW0ErMjQ+PjNdPU9lLF9bQSszMj4+M109Z2UsT2U9LU9lLF9bQSs0MD4+M109T2UsX1tBKzQ4Pj4zXT1iZSxfW0ErNTY+PjNdPU9lLEc9MjA7ZWxzZSBzd2l0Y2go''@;'; put 'put ''MHwkNShjKSl7Y2FzZSAxOmFbUj4+Ml09Yj0wfGFbKE09OCsoaz0wfGFbMTIrKDB8YVtEPj4yXSk+PjJdKXwwKT4+Ml07dDpkb3tpZigoMHxiKT4yKWZvcihBPTB8UW4oYjw8NCksdz1rKzQ0fDAsbT0wOzspe2lmKCgwfG0pPj0oMHxiKSlicmVhayB0O19bQSsobTw8NCk+PjNdPS4wMTM4ODg4''@;'; put 'put ''ODg4ODg4ODg4ODgqK19bKGM9MHxhW3c+PjJdKSsobTw8NCk+PjNdLF9bQSsobTw8NCkrOD4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCorX1tjKyhtPDw0KSs4Pj4zXSxtPW0rMXwwfWVsc2UgQT0wfFFWKGMsUiwwLDApfXdoaWxlKDApO3N3aXRjaCgwfGZlWyhtPTB8YVthWzgrKDB8YVtEPj4y''@;'; put 'put ''XSk+PjJdPj4yXSk+PjBdKXtjYXNlIDk4OjB8WmkobSwxMDgyMzYpP0c9MTM6bT0xO2JyZWFrO2Nhc2UgMTEyOjA9PSgwfFppKG0sMTA1NzIxKSkmJjAhPSgwfEgyZShBLDB8YVtSPj4yXSkpP209MTpHPTEzO2JyZWFrO2RlZmF1bHQ6Rz0xM31kb3tpZigxMz09KDB8Rykpe2lmKCgwfGFbTT4+''@;'; put 'put ''Ml0pPDMmJjB8YVtrPj4yXSl7bT0yO2JyZWFrfW09MH19d2hpbGUoMCk7YVtsKzQwPj4yXT1tLEc9MjA7YnJlYWsgZTtjYXNlIDI6YVtSPj4yXT00LEc9MHxRbig2NCksYmU9K19bMzIrKEQ9MHxhWzEyKygwfGFbRD4+Ml0pPj4yXSk+PjNdLHBlPStfW0QrNDA+PjNdLHFEKEEsZ2U9K19bRCsx''@;'; put 'put ''Nj4+M10sT2U9K19bRCsyND4+M10pLGFbRz4+Ml09YVtBPj4yXSxhW0crND4+Ml09YVtBKzQ+PjJdLGFbRys4Pj4yXT1hW0ErOD4+Ml0sYVtHKzEyPj4yXT1hW0ErMTI+PjJdLEE9RysxNnwwLHFEKHcsYmUsT2UpLGFbQT4+Ml09YVt3Pj4yXSxhW0ErND4+Ml09YVt3KzQ+PjJdLGFbQSs4Pj4y''@;'; put 'put ''XT1hW3crOD4+Ml0sYVtBKzEyPj4yXT1hW3crMTI+PjJdLEE9RyszMnwwLHFEKGIsYmUscGUpLGFbQT4+Ml09YVtiPj4yXSxhW0ErND4+Ml09YVtiKzQ+PjJdLGFbQSs4Pj4yXT1hW2IrOD4+Ml0sYVtBKzEyPj4yXT1hW2IrMTI+PjJdLEE9Rys0OHwwLHFEKGssZ2UscGUpLGFbQT4+Ml09YVtr''@;'; put 'put ''Pj4yXSxhW0ErND4+Ml09YVtrKzQ+PjJdLGFbQSs4Pj4yXT1hW2srOD4+Ml0sYVtBKzEyPj4yXT1hW2srMTI+PjJdLGFbbCs0MD4+Ml09MSxBPUcsRz0yMDticmVhayBlO2Nhc2UgMzphW2wrNDA+PjJdPTIsQT0wfFFWKGMsUiwwLDApLEc9MjA7YnJlYWsgZTtkZWZhdWx0OmFbTT4+Ml09YVth''@;'; put 'put ''WzgrKDB8YVtEPj4yXSk+PjJdPj4yXSwkcigxLDkzOTE5LE0pLG09MTticmVhayBlfX13aGlsZSgwKTtyZXR1cm4gMjA9PSgwfEcpJiYobT0wfGFbUj4+Ml0sMSE9ZnwxIT1wJiZmdW5jdGlvbiBlTChsLGMsZixwKXtsfD0wLGN8PTAsZj0rZixwPStwO3ZhciBtPTAsQT0wO2ZvcihtPTA7ISgo''@;'; put 'put ''MHxtKT49KDB8YykpOylfW2w+PjNdPStfW2w+PjNdKmYsX1soQT1sKzh8MCk+PjNdPStfW0E+PjNdKnAsbD1sKzE2fDAsbT1tKzF8MH0oQSxtLGYscCksYVtsKzM2Pj4yXT1BLGFbbCszMj4+Ml09bSxOMmUoQSxtLGwsbCsxNnwwKSwoMHxtKT4oMHxhWzQ2OTE0XSkmJihhWzQ2OTE0XT1tKSxt''@;'; put 'put ''PTApLGxlPXEsMHxtfSxSTF0sbWk9W00yLGZ1bmN0aW9uIF9EKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIG0scD0wO3A9OCsoY3w9MCl8MCxtPTQ4KyhmPTgrKGw9MHx2cig2NCkpfDApfDA7ZG97YVtmPj4yXT1hW3A+PjJdLGY9Zis0fDAscD1wKzR8MH13aGlsZSgoMHxmKTwoMHxtKSk7cmV0dXJu''@;'; put 'put ''IGFbbCs1Nj4+Ml09Yz0wfGFbYys1Nj4+Ml0saXRbMTY4KygwfGFbYysxNj4+Ml0pPj4xXT0xLDB8bH0sZnVuY3Rpb24gckwobCxjLGYpe3JldHVybiBjfD0wLGZ8PTAsZj0wfGZ1bmN0aW9uIENLKGwpe3ZhciBtLGM9MCxmPTAscD0wO3JldHVybigwfChjPTB8YVs0KyhsPTB8YVsobT04Kyhs''@;'; put 'put ''fD0wKXwwKT4+Ml0pPj4yXSkpPT0oMHxhW2wrOD4+Ml0pJiYoKHA9MHxhWyhmPWwrMTJ8MCk+PjJdKT9sPXA6KGw9MHxmMWUoKChjLSgwfGFbbD4+Ml0pfDApLzIwfDApPDwxKSxhW2Y+PjJdPWwpLGFbbT4+Ml09bCxhW2wrND4+Ml09Yz0wfGFbbD4+Ml0pLGFbbCs0Pj4yXT1jKzIwLDB8Y30o''@;'; put 'put ''MHxhWzQ2OTI0XSksYVtmPj4yXT1hW2M+PjJdLGFbZis0Pj4yXT1hW2MrND4+Ml0sYVtmKzg+PjJdPTAsMHxmfSxmdW5jdGlvbiBNQShsLGMsZil7cmV0dXJuIGN8PTAsZnw9MCxmPTB8UW4oMTYpLGFbZisxMj4+Ml09MCxhW2YrOD4+Ml09YVtjKzg+PjJdLDB8Zn0sZnVuY3Rpb24gbFQobCxj''@;'; put 'put ''LGYpe3JldHVybiBjfD0wLGZ8PTAsZj0wfFFuKDEyKSxhW2YrOD4+Ml09YVtjKzg+PjJdLDB8Zn0sZnVuY3Rpb24gUFAobCxjLGYpe2N8PTAsZnw9MDt2YXIgUixHLHEscGUsZ2UsT2UsUmUscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MCxiZT0wLExlPTA7NDA5NiZhW2FbKE9lPTgr''@;'; put 'put ''KGx8PTApfDApPj4yXT4+Ml18MCYmQ2MobCwwKSxSPTB8YVsoYmU9MHxhW2wrND4+Ml0pPj4yXSxHPTB8YVtiZSs0Pj4yXSxSZT0wfGFbKGdlPWJlKzh8MCk+PjJdLHE9MHxhW2JlKzIwPj4yXSxhWyhwZT1sKzIwfDApPj4yXT1tPS0zMjc2OSZhW3BlPj4yXTtlOmRve2lmKGMpe2lmKDIwNDkm''@;'; put 'put ''ZnwwKXtpZigodz0wPT0oMSZmfDApKXwwPT0oMHwocD0wfGFbKEE9YmUrMTJ8MCk+PjJdKSkpbT1jO2Vsc2V7aWYoIShwPTB8bWlbNjMmcF0obCxjLGJlKSkpe3A9MDticmVha31tPXB9ZG97aWYoISgoMHxSZSk+LTEpKXtpZigwfChwPTB8cTBbMTI3JmFbbCsxMj4+Ml1dKGwsMCwxMixiZSkp''@;'; put 'put ''KXthW3ArOD4+Ml09bSx3PXA7YnJlYWt9aWYoISgwfGFbQT4+Ml0pKXtwPTA7YnJlYWsgZX1pZih3fDA9PSgwfChwPTB8YVtiZSsxNj4+Ml0pKSl7cD0wO2JyZWFrIGV9ZGxbMTI3JnBdKGwsbSxiZSkscD0wO2JyZWFrIGV9dz1tK1JlfDB9d2hpbGUoMCk7cD0wfGFbKEE9MHxhW09lPj4yXSk+''@;'; put 'put ''PjJdO2Rve2lmKCEoMTI4JnApKXtpZighKDE2JnApKXtpZigzMiZwKXtMZT00ODticmVha31MZT01MTticmVha31pZihwPTAhPSgwfChtPTB8YVtBKzQ+PjJdKSksODE5MiZmKXtpZighcCl7TGU9NTE7YnJlYWt9aWYoIShwPTB8YVttPj4yXSkpe0xlPTUxO2JyZWFrfWFbdz4+Ml09cCxhW3Ar''@;'; put 'put ''ND4+Ml09dyxhW3crND4+Ml09bSxhW20+PjJdPXc7YnJlYWt9aWYoIXApe0xlPTQ4O2JyZWFrfWlmKCgwfG0pPT0oMHxhW0ErOD4+Ml0pKXtMZT00ODticmVha31hW3crND4+Ml09bD0wfGFbKGJlPW0rNHwwKT4+Ml0sYVtsPj4yXT13LGFbdz4+Ml09bSxhW2JlPj4yXT13O2JyZWFrfUxlPTgx''@;'; put 'put ''OTImZj81MTo0OH13aGlsZSgwKTtpZig0OD09KDB8TGUpPyhhW3c+PjJdPXA9MHxhW0ErOD4+Ml0scD9hW3crND4+Ml09YVtwKzQ+PjJdOnA9dyxhW3ArND4+Ml09dyxhWzgrKDB8YVtPZT4+Ml0pPj4yXT13KTo1MT09KDB8TGUpJiYoKHA9MHxhWyhtPUErOHwwKT4+Ml0pPyhhW2FbKGJlPXAr''@;'; put 'put ''NHwwKT4+Ml0+PjJdPXcsYVt3KzQ+PjJdPWFbYmU+PjJdKTooYVttPj4yXT13LHA9dyksYVtwKzQ+PjJdPXcsYVt3Pj4yXT0wKSwoMHwoQT0wfGFbKG09MTYrKHA9MHxhW09lPj4yXSl8MCk+PjJdKSk+LTEmJihhW20+PjJdPUErMSksYVtwKzQ+PjJdPXcsKDB8UmUpPDApe3A9MHxhW3crOD4+''@;'; put 'put ''Ml07YnJlYWt9cD13KygwLVJlKXwwO2JyZWFrfXc9MHxhW09lPj4yXTtkb3tpZig1MTImZilMZT02ODtlbHNle2lmKDB8KHA9MHxhW3crND4+Ml0pJiYoMHwoQT0oMHxSZSk8MD8wfGFbcCs4Pj4yXTpwKygwLVJlKXwwKSk9PSgwfGMpKWJyZWFrO3A9YytSfDAsKDB8Ryk8MD8oYz0wfGFbcD4+''@;'; put 'put ''Ml0sTGU9NjgpOihjPXAsTGU9NjgpfX13aGlsZSgwKTtpZig2OD09KDB8TGUpKXtBPSgwfFJlKTwwLGI9KDB8Ryk8MCxrPTA9PSgwfHEpLE09KDB8Ryk8MSxEPTAtUmV8MCxwPXcrOHwwO2Rve2lmKCEocD0wfGFbcD4+Ml0pKXtwPTA7YnJlYWsgZX1tPShtPUE/MHxhW3ArOD4+Ml06cCtEfDAp''@;'; put 'put ''K1J8MCxiJiYobT0wfGFbbT4+Ml0pO2Rve2lmKGspe2lmKE0pe209MHxaaShjLG0pO2JyZWFrfW09MHx0MyhjLG0sRyk7YnJlYWt9bT0wfHEwWzEyNyZxXShsLGMsbSxiZSl9d2hpbGUoMCl9d2hpbGUoMCE9KDB8bSkpO209MHxhW3BlPj4yXX1pZihhW3BlPj4yXT0zMjc2OHxtLCEoNDA5OCZm''@;'; put 'put ''KSl7ZG97aWYoISg4JmYpKXtpZihtPTB8YVtPZT4+Ml0sISgxNiZmKSl7YVttKzQ+PjJdPXA7YnJlYWt9aWYoKDB8cCk9PSgwfGFbbSs4Pj4yXSkpe2FbbSs0Pj4yXT0wLHA9MDticmVhayBlfXA9cCs0fDAsTGU9MTA4O2JyZWFrfW09MHxhW09lPj4yXSxMZT0xMDh9d2hpbGUoMCk7aWYoMTA4''@;'; put 'put ''PT0oMHxMZSkmJihhW20rND4+Ml09cD0wfGFbcD4+Ml0sIXApKXtwPTA7YnJlYWt9aWYoKDB8UmUpPDApe3A9MHxhW3ArOD4+Ml07YnJlYWt9cD1wKygwLVJlKXwwO2JyZWFrfXc9cCxMZT04NH1lbHNle2lmKDM4NCZmfDApe2lmKCEocD0wfGFbOCsobT0wfGFbT2U+PjJdKT4+Ml0pKXtwPTA7''@;'; put 'put ''YnJlYWt9aWYoMjU2JmYpe2lmKGFbbSs0Pj4yXT1wPTB8YVtwKzQ+PjJdLCFwKXtwPTA7YnJlYWt9fWVsc2UgYVttKzQ+PjJdPXA7aWYoKDB8UmUpPDApe3A9MHxhW3ArOD4+Ml07YnJlYWt9cD1wKygwLVJlKXwwO2JyZWFrfWlmKDQwOTgmZnwwKXtpZigxNDQmYVsocD0wfGFbT2U+PjJdKT4+''@;'; put 'put ''Ml18MCl7cD0wO2JyZWFrfWlmKHA9MHxhW3ArOD4+Ml0pe3c9cCxMZT04NDticmVha31wPTA7YnJlYWt9aWYoNjQmZil7Yj1iZSsxNnwwO3Q6ZG97aWYoMCE9KDB8YVtiPj4yXSl8KDB8UmUpPDApZm9yKGs9bCsxMnwwLE09KDB8UmUpPDAsbT0wLVJlfDAscD0wfGFbOCsoMHxhW09lPj4yXSk+''@;'; put 'put ''PjJdOzspe2lmKCFwKWJyZWFrIHQ7QT0wfGFbcD4+Ml0sMHwodz0wfGFbYj4+Ml0pJiZkbFsxMjcmd10obCxjPU0/MHxhW3ArOD4+Ml06cCttfDAsYmUpLCgwfGFbZ2U+PjJdKT49MHx8cTBbMTI3JmFbaz4+Ml1dKGwscCwwLGJlKSxwPUF9fXdoaWxlKDApO2FbNCsocD0wfGFbT2U+PjJdKT4+''@;'; put 'put ''Ml09MCxhW3ArOD4+Ml09MCxhWzE2KygwfGFbT2U+PjJdKT4+Ml09MCxwPTB9ZWxzZSBwPTB9fXdoaWxlKDApO3JldHVybiA4ND09KDB8TGUpJiYoKHA9MHxhW3c+PjJdKSYmKGFbcCs0Pj4yXT1hW3crND4+Ml0scD0wfGFbdz4+Ml0pLCgwfHcpPT0oMHwoQT0wfGFbKG09OCsoMHxhW09lPj4y''@;'; put 'put ''XSl8MCk+PjJdKSk/KGFbbT4+Ml09cCwwfChwPTB8YVs4KygwfGFbT2U+PjJdKT4+Ml0pJiYoYVtwKzQ+PjJdPWFbdys0Pj4yXSkpOihhW2FbKG09dys0fDApPj4yXT4+Ml09cCwoMHx3KT09KDB8YVsocD1BKzR8MCk+PjJdKSYmKGFbcD4+Ml09YVttPj4yXSkpLGFbKG09NCsocD0wfGFbT2U+''@;'; put 'put ''PjJdKXwwKT4+Ml09QT0oMHx3KT09KDB8YVttPj4yXSk/MHxhW3c+PjJdOjAsYVsoTGU9cCsxNnwwKT4+Ml09KDB8YVtMZT4+Ml0pLTEscD0oMHxSZSk8MD8wfGFbdys4Pj4yXTp3KygwLVJlKXwwLDA9PSgyJmZ8MCl8MD09KDB8KG09MHxhW2JlKzE2Pj4yXSkpfHxkbFsxMjcmbV0obCxwLGJl''@;'; put 'put ''KSwoMHxhW2dlPj4yXSk8MCYmcTBbMTI3JmFbbCsxMj4+Ml1dKGwsdywwLGJlKSksMHxwfSxmdW5jdGlvbiBGUChsLGMsZil7Y3w9MCxmfD0wO3ZhciBPZSxXZSxhdCxTdCxrdCxFdCxadCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0w''@;'; put 'put ''LExlPTAsUmU9MCxIZT0wLFZlPTAscWU9MCxydD0wLHN0PTA7WnQ9bGUsbGU9bGUrMTI4fDAscnQ9WnQrMTIwfDAsZ2U9WnQsNDA5NiZhWyhwPTB8YVsoRXQ9OCsobHw9MCl8MCk+PjJdKT4+Ml0mJihDYyhsLDApLHA9MHxhW0V0Pj4yXSksV2U9MHxhWyhzdD0wfGFbbCs0Pj4yXSk+PjJdLGF0''@;'; put 'put ''PTB8YVtzdCs0Pj4yXSxrdD0wfGFbKFZlPXN0Kzh8MCk+PjJdLFN0PTB8YVtzdCsyMD4+Ml0sYVsoT2U9bCsyMHwwKT4+Ml09LTMyNzY5JmFbT2U+PjJdLHc9MHxhW3ArND4+Ml07ZTpkb3tpZihjKXtxZT1sKzE2fDAsTGU9MD09KDQwOTgmZnwwKTt0OmRve2lmKExlfDghPSgwfGFbNCsoMHxh''@;'; put 'put ''W3FlPj4yXSk+PjJdKSlSZT00NTtlbHNle2ZvcihwPWMrV2V8MCwoTT0oMHxhdCk8MCkmJihwPTB8YVtwPj4yXSksYj0wPT0oMHxTdCksaz0oMHxhdCk8MSxBPTB8bWlbNjMmYVtsPj4yXV0obCxjLDQpOzspe2lmKCFBKXtSZT00NTticmVhayB0fW09QStXZXwwLE0mJihtPTB8YVttPj4yXSk7''@;'; put 'put ''ZG97aWYoYil7aWYoayl7bT0wfFppKHAsbSk7YnJlYWt9bT0wfHQzKHAsbSxhdCk7YnJlYWt9bT0wfHEwWzEyNyZTdF0obCxwLG0sc3QpfXdoaWxlKDApO2lmKDB8bSl7UmU9NDU7YnJlYWsgdH1pZigoMHxBKT09KDB8YykpYnJlYWs7QT0wfG1pWzYzJmFbbD4+Ml1dKGwsQSw4KX1hW3J0Pj4y''@;'; put 'put ''XT1hWzQrKHc9MHxhWzQrKDB8YVtFdD4+Ml0pPj4yXSk+PjJdLGFbcnQrND4+Ml09YVt3Pj4yXSxwPXJ0LFJlPTE4MH19d2hpbGUoMCk7dDpkb3tpZig0NT09KDB8UmUpKXtkb3tpZigyNTY1JmYpNTEyJmY/bT1jOihwPWMrV2V8MCxtPSgwfGF0KTwwPzB8YVtwPj4yXTpwKSx3PyhBPWMscD0w''@;'; put 'put ''LGJlPW0saz0wLFJlPTY0KToocD0wLEE9YyxtPXJ0LHc9cnQsUmU9MTk4KTtlbHNle2lmKDMyJmZ8MCl7aWYocD0oQT0oMHxrdCk8MD8wfGFbYys4Pj4yXTpjKygwLWt0KXwwKStXZXwwLG09KDB8YXQpPDA/MHxhW3A+PjJdOnAsdyl7cD1jLGJlPW0saz1jLFJlPTY0O2JyZWFrfXA9YyxtPXJ0''@;'; put 'put ''LHc9cnQsUmU9MTk4O2JyZWFrfXc/KDB8KHA9KDB8a3QpPDA/MHxhW3crOD4+Ml06dysoMC1rdCl8MCkpIT0oMHxjKT8obT1jK1dlfDAsKDB8YXQpPDA/KEE9YyxwPTAsYmU9MHxhW20+PjJdLGs9MCxSZT02NCk6KEE9YyxwPTAsYmU9bSxrPTAsUmU9NjQpKToocD0wLEE9YyxtPXJ0LE09cnQs''@;'; put 'put ''az0wLFJlPTE0MSk6KHA9MCxBPWMsbT1ydCx3PXJ0LFJlPTE5OCl9fXdoaWxlKDApO246ZG97aWYoNjQ9PSgwfFJlKSl7cjpkb3tpZig0IT0oMHxhWzQrKDB8YVtxZT4+Ml0pPj4yXSl8fChwZT0wfGFbMjQrKDB8YVtFdD4+Ml0pPj4yXSwwPT0oNTE2JmZ8MCl8MD09KDB8cGUpKSltPXJ0LE09''@;'; put 'put ''cnQ7ZWxzZXtmb3IoYz0oMHxrdCk8MCxEPSgwfGF0KTwwLFI9MD09KDB8U3QpLEc9KDB8YXQpPDEscT0wLWt0fDAsTT0wLG09dzs7KXtpZigoMHxNKT49KDB8cGUpKXttPXJ0LE09cnQsRD0wO2JyZWFrfWI9KGI9Yz8wfGFbbSs4Pj4yXTptK3F8MCkrV2V8MCxEJiYoYj0wfGFbYj4+Ml0pO2Rv''@;'; put 'put ''e2lmKFIpe2lmKEcpe2I9MHxaaShiZSxiKTticmVha31iPTB8dDMoYmUsYixhdCk7YnJlYWt9Yj0wfHEwWzEyNyZTdF0obCxiZSxiLHN0KX13aGlsZSgwKTtpZighYil7UmU9ODA7YnJlYWt9aWYoYVtnZSsoTTw8Mik+PjJdPWIsIShtPTB8YVsoKDB8Yik8MD9tKzR8MDptKT4+Ml0pKXtwPTA7''@;'; put 'put ''YnJlYWsgZX1NPU0rMXwwfWlmKDgwPT0oMHxSZSkpe2lmKGMpe3A9MHxhW20rOD4+Ml07YnJlYWsgZX1wPW0rcXwwO2JyZWFrIGV9Zm9yKDs7KXtpZigoMHxEKT49KDB8cGUpKWJyZWFrIHI7ZG97aWYoKDB8YVtnZSsoRDw8Mik+PjJdKTwwKXtpZihjPTB8YVsoYj13KzR8MCk+PjJdLCgwfGFb''@;'; put 'put ''Z2UrKCgxfEQpPDwyKT4+Ml0pPDApe2FbYj4+Ml09YVtjPj4yXSxhW2M+PjJdPXcsYVttKzQ+PjJdPWMsbT1jLHc9TSxiPWMrNHwwO2JyZWFrfWFbTT4+Ml09YyxhW20rND4+Ml09dyxtPXcsdz1jLGI9YzticmVha31pZihiPTB8YVt3Pj4yXSwoMHxhW2dlKygoMXxEKTw8Mik+PjJdKT4wKXth''@;'; put 'put ''W3c+PjJdPWFbKHE9Yis0fDApPj4yXSxhW3E+PjJdPXcsYVtNPj4yXT1iLHc9YjticmVha31hW20rND4+Ml09YixhW00+PjJdPXcsbT1iLGI9Yis0fDA7YnJlYWt9d2hpbGUoMCk7TT13LEQ9RCsyfDAsdz0wfGFbYj4+Ml19fX13aGlsZSgwKTtSPSgwfGt0KTwwLEc9KDB8YXQpPDAscT0wIT0o''@;'; put 'put ''MHxTdCkscGU9KDB8YXQpPDEsZ2U9MC1rdHwwLGI9dztyOmZvcig7Oyl7Zm9yKHc9Yjs7KXtiPShiPVI/MHxhW3crOD4+Ml06dytnZXwwKStXZXwwLEcmJihiPTB8YVtiPj4yXSk7ZG97aWYoIXEpe2lmKHBlKXtiPTB8WmkoYmUsYik7YnJlYWt9Yj0wfHQzKGJlLGIsYXQpO2JyZWFrfWI9MHxx''@;'; put 'put ''MFsxMjcmU3RdKGwsYmUsYixzdCl9d2hpbGUoMCk7aWYoIWIpe1JlPTE0MDticmVhayByfWlmKCgwfGIpPj0wKWJyZWFrO2lmKCEoRD0wfGFbKGM9dys0fDApPj4yXSkpe1JlPTEyMTticmVhayByfWI9KGI9Uj8wfGFbRCs4Pj4yXTpEK2dlfDApK1dlfDAsRyYmKGI9MHxhW2I+PjJdKTtkb3tp''@;'; put 'put ''ZighcSl7aWYocGUpe2I9MHxaaShiZSxiKTticmVha31iPTB8dDMoYmUsYixhdCk7YnJlYWt9Yj0wfHEwWzEyNyZTdF0obCxiZSxiLHN0KX13aGlsZSgwKTtpZigoMHxiKT49MCl7UmU9MTE4O2JyZWFrfWlmKGFbYz4+Ml09YVtEPj4yXSxhW0Q+PjJdPXcsYVttKzQ+PjJdPUQsISh3PTB8YVtE''@;'; put 'put ''KzQ+PjJdKSl7bT1ELHc9TSxSZT0xOTg7YnJlYWsgbn1tPUR9aWYoMTE4PT0oMHxSZSkpe2lmKFJlPTAsIWIpe1JlPTExOTticmVha31pZihhW00+PjJdPUQsYVttKzQ+PjJdPXcsYj0wfGFbRD4+Ml0pe209dyxNPUQ7Y29udGludWV9bT13LHc9RCxSZT0xOTg7YnJlYWsgbn1pZighKGM9MHxh''@;'; put 'put ''W3c+PjJdKSl7UmU9MTM5O2JyZWFrfWI9KGI9Uj8wfGFbYys4Pj4yXTpjK2dlfDApK1dlfDAsRyYmKGI9MHxhW2I+PjJdKTtkb3tpZighcSl7aWYocGUpe2I9MHxaaShiZSxiKTticmVha31iPTB8dDMoYmUsYixhdCk7YnJlYWt9Yj0wfHEwWzEyNyZTdF0obCxiZSxiLHN0KX13aGlsZSgwKTtp''@;'; put 'put ''ZigoMHxiKT4wKXtpZihhW3c+PjJdPWFbKGI9Yys0fDApPj4yXSxhW2I+PjJdPXcsYVtNPj4yXT1jLGI9MHxhW2M+PjJdKXtNPWM7Y29udGludWV9dz1jLFJlPTE5ODticmVhayBufWlmKCFiKXtSZT0xMzc7YnJlYWt9aWYoYVttKzQ+PjJdPWMsYVtNPj4yXT13LCEoYj0wfGFbYys0Pj4yXSkp''@;'; put 'put ''e209YyxSZT0xOTg7YnJlYWsgbn1tPWMsTT13fWlmKDExOT09KDB8UmUpKXthW20rND4+Ml09dyxtPXcsdz1ELFJlPTE0MTticmVha31pZigxMjE9PSgwfFJlKSl7YVttKzQ+PjJdPXcsbT13LHc9TSxSZT0xOTg7YnJlYWt9aWYoMTM3PT0oMHxSZSkpe2FbTT4+Ml09dyxNPXcsdz1jLFJlPTE0''@;'; put 'put ''MTticmVha31pZigxMzk9PSgwfFJlKSl7YVtNPj4yXT13LFJlPTE5ODticmVha31pZigxNDA9PSgwfFJlKSl7aWYodyl7UmU9MTQxO2JyZWFrfXc9TSxSZT0xOTg7YnJlYWt9fX13aGlsZSgwKTtkb3tpZigxNDE9PSgwfFJlKSlpZihhW09lPj4yXT0zMjc2OHxhW09lPj4yXSxhW00+PjJdPWFb''@;'; put 'put ''KGI9dys0fDApPj4yXSxhW20rND4+Ml09YVt3Pj4yXSw1MTYmZilwPXc7ZWxzZXtpZig4JmZ8MCl7YVtiPj4yXT1hW3J0Pj4yXSxhW3c+PjJdPTAsYVtydD4+Ml09dyxSZT0xNjk7YnJlYWt9aWYoMTYmZnwwKXthW3c+PjJdPWFbKFJlPXJ0KzR8MCk+PjJdLGFbYj4+Ml09MCxhW1JlPj4yXT13''@;'; put 'put ''LFJlPTE3NTticmVha31pZighTGUpe3A9bSxSZT0xODA7YnJlYWsgdH1pZigyMDQ5JmZ8MCl7aWYoNCZhWzQrKDB8YVtxZT4+Ml0pPj4yXXwwKXtwPXc7YnJlYWt9YVtiPj4yXT0wLGFbdz4+Ml09YVsocD1ydCs0fDApPj4yXSxhW3A+PjJdPXcscD13LFJlPTIwNTticmVha31pZighKDMyJmYp''@;'; put 'put ''KXtwPTA7YnJlYWsgZX1pZighKDQmYVs0KygwfGFbcWU+PjJdKT4+Ml0pKXthW3ArND4+Ml09MCxhW3A+PjJdPWFbKFZlPXJ0KzR8MCk+PjJdLGFbVmU+PjJdPWssYVsocD0xNisoMHxhW0V0Pj4yXSl8MCk+PjJdPTErKDB8YVtwPj4yXSkscD13O2JyZWFrfTB8KHA9MHxhW3N0KzE2Pj4yXSkm''@;'; put 'put ''JmRsWzEyNyZwXShsLEEsc3QpLCgwfGFbVmU+PjJdKTwwJiZxMFsxMjcmYVtsKzEyPj4yXV0obCxrLDAsc3QpLHA9d31lbHNlIGlmKDE5OD09KDB8UmUpKWlmKGFbbSs0Pj4yXT0wLGFbdz4+Ml09MCw4JmYpUmU9MTY5O2Vsc2UgaWYoMTYmZilSZT0xNzU7ZWxzZXtpZig1MTYmZnwwKXtwPW07''@;'; put 'put ''YnJlYWsgdH1pZigyMDQ5JmYpcD0wLFJlPTIwNTtlbHNle2lmKCEoMzImZikpe0E9MCxwPW07YnJlYWsgdH1hWyhWZT0xNisoMHxhW0V0Pj4yXSl8MCk+PjJdPTErKDB8YVtWZT4+Ml0pfX19d2hpbGUoMCk7aWYoMTY5PT0oMHxSZSkpe2lmKCEocD0wfGFbKHc9cnQrNHwwKT4+Ml0pKXtwPW07''@;'; put 'put ''YnJlYWt9Zm9yKDtBPTB8YVsobT1wKzR8MCk+PjJdOylhW20+PjJdPWFbQT4+Ml0sYVtBPj4yXT1wLHA9QTthW3c+PjJdPWFbcD4+Ml19ZWxzZSBpZigxNzU9PSgwfFJlKSl7aWYoIShwPTB8YVtydD4+Ml0pKXtwPW07YnJlYWt9Zm9yKDttPTB8YVtwPj4yXTspYVtwPj4yXT1hWyhWZT1tKzR8''@;'; put 'put ''MCk+PjJdLGFbVmU+PjJdPXAscD1tO2FbcnQ+PjJdPWFbcCs0Pj4yXX1lbHNlIGlmKDIwNT09KDB8UmUpKXsoaz0wPT0oMSZmfDApKXwwPT0oMHwodz0wfGFbKGI9c3QrMTJ8MCk+PjJdKSl8fChBPTB8bWlbNjMmd10obCxBLHN0KSk7ZG97aWYoQSl7aWYoKDB8a3QpPi0xKXtwPUEra3R8MCxS''@;'; put 'put ''ZT0yMTU7YnJlYWt9aWYoMHwocD0wfHEwWzEyNyZhW2wrMTI+PjJdXShsLDAsMTIsc3QpKSl7YVtwKzg+PjJdPUE7YnJlYWt9MCE9KDB8YVtiPj4yXSkmJiEoa3wwPT0oMHwoSGU9MHxhW3N0KzE2Pj4yXSkpKSYmZGxbMTI3JkhlXShsLEEsc3QpLFJlPTIxNX1lbHNlIFJlPTIxNX13aGlsZSgw''@;'; put 'put ''KTtpZigyMTU9PSgwfFJlKSYmIXApe3A9bTticmVha30oMHwoQT0wfGFbKG09MTYrKDB8YVtFdD4+Ml0pfDApPj4yXSkpPi0xJiYoYVttPj4yXT1BKzEpfWFbcCs0Pj4yXT1hW3J0Pj4yXSxhW3A+PjJdPWFbcnQrND4+Ml07bjpkb3tpZigwIT0oNTE2JmZ8MCkmJjAhPSg4JmFbNCsoMHxhW3Fl''@;'; put 'put ''Pj4yXSk+PjJdfDApKWZvcihEPSgwfGt0KTwwLG09RD8wfGFbcCs4Pj4yXTpwKygwLWt0KXwwLFI9KDB8YXQpPDAsbT1tK1dlfDAsUiYmKG09MHxhW20+PjJdKSxrPTA9PSgwfFN0KSxNPSgwfGF0KTwxLGM9MC1rdHwwOzspe2lmKCEoQT0wfGFbKGI9cCs0fDApPj4yXSkpYnJlYWsgbjtmb3Io''@;'; put 'put ''O3c9MHxhW0E+PjJdOylhW0E+PjJdPWFbKHJ0PXcrNHwwKT4+Ml0sYVtydD4+Ml09QSxBPXc7YVtiPj4yXT1BLHc9KHc9RD8wfGFbQSs4Pj4yXTpBK2N8MCkrV2V8MCxSJiYodz0wfGFbdz4+Ml0pO2Rve2lmKGspe2lmKE0pe3c9MHxaaShtLHcpO2JyZWFrfXc9MHx0MyhtLHcsYXQpO2JyZWFr''@;'; put 'put ''fXc9MHxxMFsxMjcmU3RdKGwsbSx3LHN0KX13aGlsZSgwKTtpZigwfHcpYnJlYWsgbjthW2I+PjJdPWFbQT4+Ml0sYVtBPj4yXT1wLHA9QX19d2hpbGUoMCk7aWYoYVs0KygwfGFbRXQ+PjJdKT4+Ml09cCwoMHxrdCk8MCl7cD0wfGFbcCs4Pj4yXTticmVhayBlfXA9cCsoMC1rdCl8MDticmVh''@;'; put 'put ''ayBlfX13aGlsZSgwKTsxODA9PSgwfFJlKSYmKEE9KDB8a3QpPDA/MHxhW3crOD4+Ml06dysoMC1rdCl8MCwwPT0oMiZmfDApfDA9PSgwfChtPTB8YVtzdCsxNj4+Ml0pKXx8ZGxbMTI3Jm1dKGwsQSxzdCksKDB8YVtWZT4+Ml0pPDAmJnEwWzEyNyZhW2wrMTI+PjJdXShsLHcsMCxzdCksYVso''@;'; put 'put ''bD0xNisoMHxhW0V0Pj4yXSl8MCk+PjJdPSgwfChzdD0wfGFbbD4+Ml0pKTwxPy0xOnN0Ky0xfDApO2Rve3A9MHxhWyhtPXArNHwwKT4+Ml19d2hpbGUoMCE9KDB8cCkpO2FbbT4+Ml09YVtydD4+Ml0sYVs0KygwfGFbRXQ+PjJdKT4+Ml09YVtydCs0Pj4yXSxwPTImZnwwP0E6MH1lbHNlIGlm''@;'; put 'put ''KDA9PSg0NDgmZnwwKXwwPT0oMHx3KSlwPTA7ZWxzZXtpZighKDY0JmYpKXt0OmRve2lmKDI1NiZmKWZvcihwPXc7Oyl7aWYoIShtPTB8YVtwPj4yXSkpYnJlYWsgdDthW3A+PjJdPWFbKGw9bSs0fDApPj4yXSxhW2w+PjJdPXAscD1tfWVsc2UgZm9yKHA9dzs7KXtpZighKEE9MHxhWyhtPXAr''@;'; put 'put ''NHwwKT4+Ml0pKWJyZWFrIHQ7YVttPj4yXT1hW0E+PjJdLGFbQT4+Ml09cCxwPUF9fXdoaWxlKDApO2lmKGFbNCsoMHxhW0V0Pj4yXSk+PjJdPXAsKDB8a3QpPDApe3A9MHxhW3ArOD4+Ml07YnJlYWt9cD1wKygwLWt0KXwwO2JyZWFrfWlmKDAhPSgwfGFbKGM9c3QrMTZ8MCk+PjJdKXwoMHxr''@;'; put 'put ''dCk8MCl7az1sKzEyfDAsTT0oMHxrdCk8MCxiPTAta3R8MCxwPXc7ZG97Zm9yKHc9cDttPTB8YVsocD13KzR8MCk+PjJdOylhW3A+PjJdPWFbbT4+Ml0sYVttPj4yXT13LHc9bTtwPTB8YVt3Pj4yXSwwfChtPTB8YVtjPj4yXSkmJmRsWzEyNyZtXShsLEE9TT8wfGFbdys4Pj4yXTp3K2J8MCxz''@;'; put 'put ''dCksKDB8YVtWZT4+Ml0pPDAmJnEwWzEyNyZhW2s+PjJdXShsLHcsMCxzdCl9d2hpbGUoMCE9KDB8cCkpO3A9MHxhW0V0Pj4yXX1hW3ArMTY+PjJdPTAsYVtwKzQ+PjJdPTAscD0wfX13aGlsZSgwKTtyZXR1cm4gbGU9WnQsMHxwfSxmdW5jdGlvbiBIKGwsYyxmKXtyZXR1cm4gMHwoMHx5Zyhj''@;'; put 'put ''fD0wLGZ8PTAsbHw9MCk/MHxVbyhjKTowKX0sZnVuY3Rpb24geGUobCxjLGYpe2x8PTAsY3w9MDt2YXIgcD0wLG09MCxBPTAsdz0wO2lmKDAhPSgwfChmfD0wKSkmJigwfChwPTB8YVsoQT1sKzh8MCk+PjJdKSk8KDB8YVtsKzQ+PjJdKSl7Zm9yKHc9KDB8YVtsPj4yXSkrcHwwLGw9MCxtPTB8''@;'; put 'put ''ZmVbdz4+MF0scD1jLGM9dztjPWMrMXwwLGZlW3A+PjBdPW0sbTw8MjQ+PjI0IT0xMCYoMHwobD1sKzF8MCkpPCgwfGYpJiYobT0wfGZlW2M+PjBdKTw8MjQ+PjI0OylwPXArMXwwO2FbQT4+Ml09KDB8YVtBPj4yXSkrbH1lbHNlIGw9MDtyZXR1cm4gMHxsfSxmdW5jdGlvbiBnYWUobCxjLGYp''@;'; put 'put ''e3ZhciBwLG07cmV0dXJuIGx8PTAsY3w9MCwobD0wfGFbKGY9MzYrKGZ8PTApfDApPj4yXSk/YVtmPj4yXT1hW2w+PjJdOmw9MHxRbigyMCkscD0wfGFbNCsobT1jKzh8MCk+PjJdLGFbKGY9bCs4fDApPj4yXT1hW20+PjJdLGFbZis0Pj4yXT1wLGFbbCsxNj4+Ml09YVtjKzE2Pj4yXSwwfGx9''@;'; put 'put ''LGZ1bmN0aW9uIHhsZShsLGMsZil7cmV0dXJuIGN8PTAsZnw9MCxmPTB8dnIoMjQpLGFbZis4Pj4yXT1hW2MrOD4+Ml0sYVtmKzEyPj4yXT1hW2MrMTI+PjJdLGFbZisxNj4+Ml09YVtjKzE2Pj4yXSxhW2YrMjA+PjJdPWFbYysyMD4+Ml0sMHxmfSxmdW5jdGlvbiBhQihsLGMsZil7cmV0dXJu''@;'; put 'put ''IGN8PTAsZnw9MCxmPTB8dnIoMTIpLGFbZj4+Ml09YVtjPj4yXSwwfGZ9LGZ1bmN0aW9uIG52KGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wO2U6ZG97c3dpdGNoKGYtY3wwKXtjYXNlIDI6MTE2PT0oMHxmZVtjKzE+PjBdKT9sPShsPTB8ZmVbYz4+MF0pPDwyND4+MjQ9PTEwOD82MDps''@;'; put 'put ''PDwyND4+MjQ9PTEwMz82MjowOnA9MTQ7YnJlYWs7Y2FzZSAzOjk3PT0oMHxmZVtjPj4wXSkmJjEwOT09KDB8ZmVbYysxPj4wXSkmJjExMj09KDB8ZmVbYysyPj4wXSk/bD0zODpwPTE0O2JyZWFrO2Nhc2UgNDpzd2l0Y2goMHxmZVtjPj4wXSl7Y2FzZSAxMTM6aWYoMTE3IT0oMHxmZVtjKzE+''@;'; put 'put ''PjBdKSl7cD0xNDticmVhayBlfWlmKDExMSE9KDB8ZmVbYysyPj4wXSkpe3A9MTQ7YnJlYWsgZX1pZigxMTY9PSgwfGZlW2MrMz4+MF0pKXtsPTM0O2JyZWFrIGV9cD0xNDticmVhayBlO2Nhc2UgOTc6aWYoMTEyIT0oMHxmZVtjKzE+PjBdKSl7cD0xNDticmVhayBlfWlmKDExMSE9KDB8ZmVb''@;'; put 'put ''YysyPj4wXSkpe3A9MTQ7YnJlYWsgZX1pZigxMTU9PSgwfGZlW2MrMz4+MF0pKXtsPTM5O2JyZWFrIGV9cD0xNDticmVhayBlO2RlZmF1bHQ6cD0xNDticmVhayBlfWRlZmF1bHQ6cD0xNH19d2hpbGUoMCk7cmV0dXJuIDE0PT0oMHxwKSYmKGw9MCksMHxsfSxmdW5jdGlvbiBKSyhsLGMsZil7''@;'; put 'put ''bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MDtlOmRve3N3aXRjaCgwfChmLWN8MCkvMil7Y2FzZSAyOjA9PSgwfGZlW2MrMj4+MF0pJiYxMTY9PSgwfGZlW2MrMz4+MF0pP2w9MTA4PT0oMHwobD0wfGZlW2M+PjBdPy0xOjB8ZmVbYysxPj4wXSkpPzYwOjEwMz09KDB8bCk/NjI6MDpwPTI3O2JyZWFr''@;'; put 'put ''O2Nhc2UgMzowPT0oMHxmZVtjPj4wXSkmJjk3PT0oMHxmZVtjKzE+PjBdKSYmMD09KDB8ZmVbYysyPj4wXSkmJjEwOT09KDB8ZmVbYyszPj4wXSkmJjA9PSgwfGZlW2MrND4+MF0pJiYxMTI9PSgwfGZlW2MrNT4+MF0pP2w9Mzg6cD0yNzticmVhaztjYXNlIDQ6aWYoMHxmZVtjPj4wXSlwPTI3''@;'; put 'put ''O2Vsc2Ugc3dpdGNoKDB8ZmVbYysxPj4wXSl7Y2FzZSAxMTM6aWYoMHxmZVtjKzI+PjBdKXtwPTI3O2JyZWFrIGV9aWYoMTE3IT0oMHxmZVtjKzM+PjBdKSl7cD0yNzticmVhayBlfWlmKDB8ZmVbYys0Pj4wXSl7cD0yNzticmVhayBlfWlmKDExMSE9KDB8ZmVbYys1Pj4wXSkpe3A9Mjc7YnJl''@;'; put 'put ''YWsgZX1pZigwfGZlW2MrNj4+MF0pe3A9Mjc7YnJlYWsgZX1pZigxMTY9PSgwfGZlW2MrNz4+MF0pKXtsPTM0O2JyZWFrIGV9cD0yNzticmVhayBlO2Nhc2UgOTc6aWYoMHxmZVtjKzI+PjBdKXtwPTI3O2JyZWFrIGV9aWYoMTEyIT0oMHxmZVtjKzM+PjBdKSl7cD0yNzticmVhayBlfWlmKDB8''@;'; put 'put ''ZmVbYys0Pj4wXSl7cD0yNzticmVhayBlfWlmKDExMSE9KDB8ZmVbYys1Pj4wXSkpe3A9Mjc7YnJlYWsgZX1pZigwfGZlW2MrNj4+MF0pe3A9Mjc7YnJlYWsgZX1pZigxMTU9PSgwfGZlW2MrNz4+MF0pKXtsPTM5O2JyZWFrIGV9cD0yNzticmVhayBlO2RlZmF1bHQ6cD0yNzticmVhayBlfWJy''@;'; put 'put ''ZWFrO2RlZmF1bHQ6cD0yN319d2hpbGUoMCk7cmV0dXJuIDI3PT0oMHxwKSYmKGw9MCksMHxsfSxmdW5jdGlvbiBaSyhsLGMsZil7bHw9MCxjfD0wLGZ8PTA7dmFyIHA9MDtlOmRve3N3aXRjaCgwfChmLWN8MCkvMil7Y2FzZSAyOjA9PSgwfGZlW2MrMz4+MF0pJiYxMTY9PSgwfGZlW2MrMj4+''@;'; put 'put ''MF0pP2w9MTA4PT0oMHwobD0wfGZlW2MrMT4+MF0/LTE6MHxmZVtjPj4wXSkpPzYwOjEwMz09KDB8bCk/NjI6MDpwPTI3O2JyZWFrO2Nhc2UgMzowPT0oMHxmZVtjKzE+PjBdKSYmOTc9PSgwfGZlW2M+PjBdKSYmMD09KDB8ZmVbYyszPj4wXSkmJjEwOT09KDB8ZmVbYysyPj4wXSkmJjA9PSgw''@;'; put 'put ''fGZlW2MrNT4+MF0pJiYxMTI9PSgwfGZlW2MrND4+MF0pP2w9Mzg6cD0yNzticmVhaztjYXNlIDQ6aWYoMHxmZVtjKzE+PjBdKXA9Mjc7ZWxzZSBzd2l0Y2goMHxmZVtjPj4wXSl7Y2FzZSAxMTM6aWYoMHxmZVtjKzM+PjBdKXtwPTI3O2JyZWFrIGV9aWYoMTE3IT0oMHxmZVtjKzI+PjBdKSl7''@;'; put 'put ''cD0yNzticmVhayBlfWlmKDB8ZmVbYys1Pj4wXSl7cD0yNzticmVhayBlfWlmKDExMSE9KDB8ZmVbYys0Pj4wXSkpe3A9Mjc7YnJlYWsgZX1pZigwfGZlW2MrNz4+MF0pe3A9Mjc7YnJlYWsgZX1pZigxMTY9PSgwfGZlW2MrNj4+MF0pKXtsPTM0O2JyZWFrIGV9cD0yNzticmVhayBlO2Nhc2Ug''@;'; put 'put ''OTc6aWYoMHxmZVtjKzM+PjBdKXtwPTI3O2JyZWFrIGV9aWYoMTEyIT0oMHxmZVtjKzI+PjBdKSl7cD0yNzticmVhayBlfWlmKDB8ZmVbYys1Pj4wXSl7cD0yNzticmVhayBlfWlmKDExMSE9KDB8ZmVbYys0Pj4wXSkpe3A9Mjc7YnJlYWsgZX1pZigwfGZlW2MrNz4+MF0pe3A9Mjc7YnJlYWsg''@;'; put 'put ''ZX1pZigxMTU9PSgwfGZlW2MrNj4+MF0pKXtsPTM5O2JyZWFrIGV9cD0yNzticmVhayBlO2RlZmF1bHQ6cD0yNzticmVhayBlfWJyZWFrO2RlZmF1bHQ6cD0yN319d2hpbGUoMCk7cmV0dXJuIDI3PT0oMHxwKSYmKGw9MCksMHxsfSxmdW5jdGlvbiBiQWUobCxjLGYpe2x8PTAsZnw9MDt2YXIg''@;'; put 'put ''YixrLE0scD0wLG09MCxBPTAsdz0wO3JldHVybiBrPWxlLGxlPWxlKzMyfDAscD1rLGFbKHc9aysxNnwwKT4+Ml09Y3w9MCxhWyhtPXcrNHwwKT4+Ml09Zi0oMCE9KDB8KE09MHxhWyhiPWwrNDh8MCk+PjJdKSkmMSksYVt3Kzg+PjJdPWFbKEE9bCs0NHwwKT4+Ml0sYVt3KzEyPj4yXT1NLGFb''@;'; put 'put ''cD4+Ml09YVtsKzYwPj4yXSxhW3ArND4+Ml09dyxhW3ArOD4+Ml09MiwoMHwocD0wfHVoKDB8ZTYoMTQ1LDB8cCkpKSk+PTE/cD4+PjA+KHc9MHxhW20+PjJdKT4+PjAmJihtPTB8YVtBPj4yXSxhWyhBPWwrNHwwKT4+Ml09bSxhW2wrOD4+Ml09bSsocC13KSwwfGFbYj4+Ml0mJihhW0E+PjJd''@;'; put 'put ''PW0rMSxmZVtjKyhmKy0xKT4+MF09MHxmZVttPj4wXSkscD1mKTphW2w+PjJdPWFbbD4+Ml18NDgmcF4xNixsZT1rLDB8cH0sZnVuY3Rpb24gX0FlKGwsYyxmKXt2YXIgcCxtLEE7cmV0dXJuIGN8PTAsZnw9MCxtPWxlLGxlPWxlKzMyfDAscD1tKzIwfDAsYVsoQT1tKT4+Ml09YVs2MCsobHw9''@;'; put 'put ''MCk+PjJdLGFbQSs0Pj4yXT0wLGFbQSs4Pj4yXT1jLGFbQSsxMj4+Ml09cCxhW0ErMTY+PjJdPWYsKDB8dWgoMHxraCgxNDAsMHxBKSkpPDA/KGFbcD4+Ml09LTEsbD0tMSk6bD0wfGFbcD4+Ml0sbGU9bSwwfGx9LGZ1bmN0aW9uIEh1ZShsLGMsZil7Y3w9MCxmfD0wO3ZhciBtLHA9MDtyZXR1''@;'; put 'put ''cm4gbT1sZSxsZT1sZSszMnwwLHA9bSxhWzM2KyhsfD0wKT4+Ml09MTgsMD09KDY0JmFbbD4+Ml18MCkmJihhW3A+PjJdPWFbbCs2MD4+Ml0sYVtwKzQ+PjJdPTIxNTIzLGFbcCs4Pj4yXT1tKzE2LDB8bjYoNTQsMHxwKSkmJihmZVtsKzc1Pj4wXT0tMSkscD0wfG4kKGwsYyxmKSxsZT1tLDB8''@;'; put 'put ''cH0sbiQsZnVuY3Rpb24gZGNlKGwsYyxmKXt2YXIgcCxtO3JldHVybiBnbygwfChtPTB8YVsocD0yMCsobHw9MCl8MCk+PjJdKSwwfChjfD0wKSwwfChsPShsPSgwfGFbbCsxNj4+Ml0pLW18MCk+Pj4wPihmfD0wKT4+PjA/ZjpsKSksYVtwPj4yXT0oMHxhW3A+PjJdKStsLDB8Zn0sJHIsZnVu''@;'; put 'put ''Y3Rpb24gRkoobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBnZSxIZSxWZSxxZSxydCxhdCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxXZT0wLFN0PTAsa3Q9MDthdD1sZSxsZT1sZSsxMTJ8MCxWZT1hdCs4OHww''@;'; put 'put ''LEhlPWF0KzcyfDAscT1hdCs0MHwwLEQ9YXQrOHwwLE09YXQscGU9YXQrNjR8MCxxZT1hdCs0OHwwLHJ0PWF0KzI0fDAscD0oMHxhWzQ3MTM0XSk+MSYxO2Rve2lmKCgwfGYpPjUpe2ZvcihHPTB8dnIoKDB8R28obCkpPDwyKSxiPTEmKGs9OD09KDB8ZikpLHc9MHxEdChsKSxSPTA7dzspbT0w''@;'; put 'put ''fENEKHcsYyxiKSxBPTI4OCsoMHxhW3crMTY+PjJdKXwwLG0/KGFbQT4+Ml09UixhW0crKFI8PDIpPj4yXT1tLG09UisxfDApOihhW0E+PjJdPS0xMTExLG09Uiksdz0wfHp0KGwsdyksUj1tO2lmKEcpe2lmKDB8KG09MHwkWChHLFIpKSl7aWYoayl7TGU9MCxSZT1HLE9lPUcsYmU9MTticmVh''@;'; put 'put ''a31MZT0wfHJfKEcsUiksUmU9RyxPZT1HLGJlPTE7YnJlYWt9aWYoayl7JHIoMCw4OTc1NSxNKSxtPTAsTGU9MCxSZT1HLE9lPUcsYmU9MTticmVha31TdD0ram5bYys0Pj4yXSxfW0Q+PjNdPStqbltjPj4yXSxfW0QrOD4+M109U3QsJHIoMCw4OTgzMyxEKSxtPTAsTGU9MCxSZT1HLE9lPUcs''@;'; put 'put ''YmU9MTticmVha31tPTAsTGU9MCxSZT0wLE9lPTAsYmU9MH1lbHNlIG09MCxMZT0wLFJlPTAsUj0wLE9lPTAsYmU9MH13aGlsZSgwKTtnZT0wIT0oMHxMZSk7ZTpkb3tpZihnZSlmb3IoQT0wfER0KGwpOzspe2lmKCFBKWJyZWFrIGU7Zm9yKG09MHx3MChsLEEpO207KXE9MTQ0KygwfGFbbSsx''@;'; put 'put ''Nj4+Ml0pfDAsQkoocGUsbSxMZSwxLDAsMCksRz0wfGFbKEQ9cGUpKzQ+PjJdLGFbcT4+Ml09YVtEPj4yXSxhW3ErND4+Ml09RyxtPTB8UzAobCxtKTtBPTB8enQobCxBKX1lbHNlIDg9PSgwfGYpJjAhPSgwfG0pJiYoZWkobCwwKSxwPTEpfXdoaWxlKDApO2ZvcihNPTA9PSgwfHApLEQ9bCs2''@;'; put 'put ''MHwwLEc9MTA9PSgwfGYpLHA9MCxrPTB8RHQobCksbT0wO2s7KXtmb3IocT1rKzE2fDAsYz0wfHcwKGwsayk7Yzspe2I9MHxhWygyPT0oMyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdLHc9MHxhWyhBPWMrMTZ8MCk+PjJdLE18fDA9PSgwfGFbdys4Pj4yXSk/V2U9MzU6KHBlPXcrMTZ8''@;'; put 'put ''MCxhW0hlPj4yXT1hWyhrdD0xNisoMHxhW3E+PjJdKXwwKT4+Ml0sYVtIZSs0Pj4yXT1hW2t0KzQ+PjJdLGFbSGUrOD4+Ml09YVtrdCs4Pj4yXSxhW0hlKzEyPj4yXT1hW2t0KzEyPj4yXSxhW1ZlPj4yXT1hW3BlPj4yXSxhW1ZlKzQ+PjJdPWFbcGUrND4+Ml0sYVtWZSs4Pj4yXT1hW3BlKzg+''@;'; put 'put ''PjJdLGFbVmUrMTI+PjJdPWFbcGUrMTI+PjJdLENrKHFlLEhlLFZlKSxwZT01NisoMHxhW0E+PjJdKXwwLGFbSGU+PjJdPWFbKGI9MTYrKDB8YVtiKzE2Pj4yXSl8MCk+PjJdLGFbSGUrND4+Ml09YVtiKzQ+PjJdLGFbSGUrOD4+Ml09YVtiKzg+PjJdLGFbSGUrMTI+PjJdPWFbYisxMj4+Ml0s''@;'; put 'put ''YVtWZT4+Ml09YVtwZT4+Ml0sYVtWZSs0Pj4yXT1hW3BlKzQ+PjJdLGFbVmUrOD4+Ml09YVtwZSs4Pj4yXSxhW1ZlKzEyPj4yXT1hW3BlKzEyPj4yXSxDayhydCxIZSxWZSksYVtIZT4+Ml09YVtxZT4+Ml0sYVtIZSs0Pj4yXT1hW3FlKzQ+PjJdLGFbSGUrOD4+Ml09YVtxZSs4Pj4yXSxhW0hl''@;'; put 'put ''KzEyPj4yXT1hW3FlKzEyPj4yXSxhW1ZlPj4yXT1hW3J0Pj4yXSxhW1ZlKzQ+PjJdPWFbcnQrND4+Ml0sYVtWZSs4Pj4yXT1hW3J0Kzg+PjJdLGFbVmUrMTI+PjJdPWFbcnQrMTI+PjJdLHRnKDAsYykpO2U6ZG97aWYoMzU9PSgwfFdlKSYmKFdlPTAsa3Q9MHxpdFt3KzE2OD4+MV0sQT1rdDw8''@;'; put 'put ''MTY+PjE2LGt0PDwxNj4+MTYpKXtpZigoMHxrKT09KDB8Yikpe3B8fChtPTB8dnIoOTYpLGFbbSs4ND4+Ml09MHx2cigxMTUyMCsoKDB8R28obCkpPDw1KXwwKSxwPW0pLHpOKHAsYywwfGFbMjQ4KygwfGFbMTYrKDB8YVtEPj4yXSk+PjJdKT4+Ml0pO2JyZWFrfWlmKCFnZSl7SWFlKGwsYyxm''@;'; put 'put ''LDE3NzkyKTticmVha31mb3IoQT0wfGZlWzE5NDk1NF0/MTpBLHc9YyxiPTA7Oyl7aWYoKDB8Yik+PSgwfEEpKWJyZWFrIGU7Rz9XTigwLHcsUmUsUiwxKTpISigwLHcpLHc9MHxhWzE3MisoMHxhW3crMTY+PjJdKT4+Ml0sYj1iKzF8MH19fXdoaWxlKDApO2M9MHxTMChsLGMpfWs9MHx6dChs''@;'; put 'put ''LGspfWlmKGdlJiZmdW5jdGlvbiBpXyhsKXt2YXIgYyxmO0Z0KDB8YVs4KyhsfD0wKT4+Ml0pLEZ0KDB8YVtsKzEyPj4yXSksRnQoMHxhW2wrMTY+PjJdKSxGdCgwfGFbbCsyMD4+Ml0pLDB8KGM9MHxhWyhmPWwrMjR8MCk+PjJdKSYmKEZ0KDB8YVtjPj4yXSksRnQoMHxhW2Y+PjJdKSksRnQo''@;'; put 'put ''bCl9KExlKSwwfHAmJihGdCgwfGFbcCs4ND4+Ml0pLEZ0KG0pKSxiZSl7Zm9yKHA9MDshKCgwfHApPj0oMHxSKSk7KUZ0KDB8YVtSZSsocDw8Mik+PjJdKSxwPXArMXwwO0Z0KE9lKX1yZXR1cm4gbGU9YXQsMH0sZnVuY3Rpb24gTDllKGwsYyxmKXtmfD0wO3ZhciBnZSxiZSxPZSxMZSxSZSxI''@;'; put 'put ''ZSxWZSxxZSxydCxXZSxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsYXQ9MCxTdD0wLGt0PTAsc3Q9MDtmb3IoV2U9bGUsbGU9bGUrOTZ8MCxydD1XZSs0OHwwLHFlPVdlKzI0fDAsVmU9V2UrMTZ8MCxIZT1XZSs4fDAsYmU9V2UsT2U9MTYrKGx8PTAp''@;'; put 'put ''fDAsTGU9NCsoY3w9MCl8MCxSZT00KyhnZT1XZSs4MHwwKXwwLHE9MHxEdChsKSxmPTAscD0wLG09MCxBPTA7cTspe2ZvcihwZT0wfHcwKGwscSksUj1mLEc9QTtwZTspe2Y9MD09KDB8aXRbMTY4KygwfGFbcGUrMTY+PjJdKT4+MV0pO2Rve2lmKCgwfHEpPT0oMHxhWygyPT0oMyZhW3BlPj4y''@;'; put 'put ''XXwwKT9wZTpwZSstNDh8MCkrNDA+PjJdKSlmPyhBPVIsZj1HKToocD9mPUc6KGY9MHx2cig5NiksYVtmKzg0Pj4yXT0wfHZyKDExNTIwKygoMHxHbyhsKSk8PDUpfDApLHA9Ziksek4ocCxwZSwwfGFbMjQ4KygwfGFbT2U+PjJdKT4+Ml0pLEE9Uik7ZWxzZSBpZihmKUE9UixmPUc7ZWxzZXtp''@;'; put 'put ''ZihtPTB8TzllKHBlLGMpLDB8JFgoMHxhWyhBPW0rOHwwKT4+Ml0sMHxhW20+PjJdKSl7aWYoISh3PTB8cl8oMHxhW0E+PjJdLDB8YVttPj4yXSkpKXskcigwLDk0MzUyLEhlKSxBPTEsZj1HO2JyZWFrfWZvcihmPXBlO2Y7KVN0PTE0NCsoMHxhWyhhdD1mKzE2fDApPj4yXSl8MCxCSihiZSxm''@;'; put 'put ''LHcsMCwwfGFbQT4+Ml0sMHxhW20+PjJdKSxrdD0wfGFbKHN0PWJlKSs0Pj4yXSxhW1N0Pj4yXT1hW3N0Pj4yXSxhW1N0KzQ+PjJdPWt0LFdOKDAsZiwwfGFbQT4+Ml0sMHxhW20+PjJdLDApLGY9MHxhWzE3MisoMHxhW2F0Pj4yXSk+PjJdO1I5ZShtKSxBPVIsZj1HO2JyZWFrfVI/KEE9Uixm''@;'; put 'put ''PUcpOihXNyhnZSxsKSxmPTB8eGMobCw4LDgpLCRyKDAsOTQ0MzYsVmUpLCEoKE09K2puW2M+PjJdKT49KGs9KygwfGYpKSkmISgoRD0ram5bTGU+PjJdKT49ayk/ISgoYj0ram5bZ2U+PjJdKTw9TSkmISgoaz0ram5bUmU+PjJdKTw9RCl8fChfW3J0Pj4zXT1iLF9bcnQrOD4+M109ayxfW3J0''@;'; put 'put ''KzE2Pj4zXT1NLF9bcnQrMjQ+PjNdPUQsJHIoMyw5NDU1MixydCkpOihhW3FlPj4yXT1mLF9bcWUrOD4+M109TSxfW3FlKzE2Pj4zXT1ELCRyKDMsOTQ1MDIscWUpKSxBPTEsZj1HKX19d2hpbGUoMCk7cGU9MHxTMChsLHBlKSxSPUEsRz1mfXE9MHx6dChsLHEpLGY9UixBPUd9cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uIEI5ZShsKXswfChsfD0wKSYmKEZ0KDB8YVtsKzg+PjJdKSxGdChsKSl9KG0pLDB8cCYmKEZ0KDB8YVtwKzg0Pj4yXSksRnQoQSkpLGxlPVdlLDB8Zn0sZnVuY3Rpb24gRnNlKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHAsbSx3LEE9MDtmb3IoQT0wfGFbKGN8PTApPj4yXSxwPTB8YVtj''@;'; put 'put ''KzQ+PjJdLGM9bT0wfGFbYys4Pj4yXTtjOyl7Zm9yKGw9bTtsOykoMHxjKSE9KDB8bCkmJmhYKDB8YVtjPj4yXSwwfGFbbD4+Ml0pLGw9MHxhW2wrND4+Ml07Yz0wfGFbYys0Pj4yXX1yZXR1cm4gVjcoZix3PUErLTF8MCxsPXArLTF8MCxtKSxWNyhmLHcscCxtKSxWNyhmLHcsYz1wKzF8MCxt''@;'; put 'put ''KSxWNyhmLEEsbCxtKSxWNyhmLEEsYyxtKSxWNyhmLEE9QSsxfDAsbCxtKSxWNyhmLEEscCxtKSxWNyhmLEEsYyxtKSwwfSxmdW5jdGlvbiB4MmUobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBELFIsT2UsU3QscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEc9MCxxPTAscGU9MCxnZT0w''@;'; put 'put ''LGJlPTAsTGU9MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTAsV2U9MCxhdD0wLGt0PTA7U3Q9bGUsbGU9bGUrNDh8MCxSPVN0KzI0fDAsRD1TdCsxNnwwLE9lPVN0LHA9MDtlOmZvcig7Oyl7aWYoKDB8cCk+PSgwfGMpKXtwPTA7YnJlYWt9Zm9yKGFbT2U+PjJdPWFbKHJ0PTB8YVsocWU9MHxh''@;'; put 'put ''W2wrKHA8PDIpPj4yXSk+PjJdKT4+Ml0sYVtPZSs0Pj4yXT1hW3J0KzQ+PjJdLGFbT2UrOD4+Ml09YVtydCs4Pj4yXSxhW09lKzEyPj4yXT1hW3J0KzEyPj4yXSxXZT1mKyg0MCpwfDApKzh8MCxHPWYrKDQwKnB8MCkrMjR8MCxxPWYrKDQwKnB8MCkrMzJ8MCxBPWYrKDQwKnB8MCkrMTZ8MCxw''@;'; put 'put ''PXJ0PXArMXwwOzspe2lmKCgwfHApPj0oMHxjKSl7cD1ydDtjb250aW51ZSBlfWlmKHc9MHxhW2wrKHA8PDIpPj4yXSwhKCEoKE09ISgoYj0rX1tXZT4+M10pPD0oaz0rX1tmKyg0MCpwfDApKzI0Pj4zXSkpKXwhKGI+PShtPStfW2YrKDQwKnB8MCkrOD4+M10pKSkmJihwZT0rX1tBPj4zXSxn''@;'; put 'put ''ZT0rX1tmKyg0MCpwfDApKzMyPj4zXSxwZTw9Z2UpJiYoYmU9K19bZisoNDAqcHwwKSsxNj4+M10scGU+PWJlKSl8fCEoKGt0PStfW0c+PjNdKTw9ayl8IShrdD49bSl8fCEoKGt0PStfW3E+PjNdKTw9Z2UpfCEoa3Q+PWJlKSlhdD0xMTtlbHNlIGlmKGFbRD4+Ml09YVt3Pj4yXSxhW0QrND4+''@;'; put 'put ''Ml09YVt3KzQ+PjJdLGFbUj4+Ml09YVtPZT4+Ml0sYVtSKzQ+PjJdPWFbT2UrND4+Ml0sYVtSKzg+PjJdPWFbT2UrOD4+Ml0sYVtSKzEyPj4yXT1hW09lKzEyPj4yXSwwfF82KEQsUikpe3A9MTticmVhayBlfWlmKDExPT0oMHxhdCkmJihhdD0wLCEoIShtPD0oTGU9K19bRz4+M10pKXwhKG0+''@;'; put 'put ''PWIpKSkmJihSZT0rX1tmKyg0MCpwfDApKzE2Pj4zXSk8PShIZT0rX1txPj4zXSkmJiEoIShSZT49KFZlPStfW0E+PjNdKSl8IShrPD1MZSl8TSkmJiEoISgoa3Q9K19bZisoNDAqcHwwKSszMj4+M10pPD1IZSl8IShrdD49VmUpKSYmKE09MHxhW3c+PjJdLGFbRD4+Ml09YVtxZT4+Ml0sYVtE''@;'; put 'put ''KzQ+PjJdPWFbcWUrND4+Ml0sYVtSPj4yXT1hW00+PjJdLGFbUis0Pj4yXT1hW00rND4+Ml0sYVtSKzg+PjJdPWFbTSs4Pj4yXSxhW1IrMTI+PjJdPWFbTSsxMj4+Ml0sMHxfNihELFIpKSl7cD0xO2JyZWFrIGV9cD1wKzF8MH19cmV0dXJuIGxlPVN0LDB8cH0sZnVuY3Rpb24gaFAobCxjLGYp''@;'; put 'put ''e2x8PTAsY3w9MDt2YXIgdyxrLHA9MCxtPTAsQT0wLGI9MDtmb3Ioaz1sZSxsZT1sZSsxNnwwLGFbKEE9ayk+PjJdPWZ8PTAsdz0rX1soYj0wfGFbbD4+Ml0pPj4zXSxiPTB8YVsobD0wfGFbYis4Pj4yXSk+PjJdLEtmKGwsYyxBLDApLGw9MCxtPTA7ISgoMHxsKT49KDB8YikpOylwPStfW2Mr''@;'; put 'put ''KGw8PDMpPj4zXSttLGw9bCsxfDAsbT1wO2ZvcihwPSsoMHxiKSxmPTB8YVtBPj4yXSxsPTA7ISgoMHxsKT49KDB8YikpOylfWyhBPWYrKGw8PDMpfDApPj4zXT0oK19bYysobDw8Myk+PjNdKnAtbSkqdysgK19bQT4+M10sbD1sKzF8MDtyZXR1cm4gbGU9aywwfGZ9LGZ1bmN0aW9uIFB4KGws''@;'; put 'put ''YyxmKXt2YXIgcCxtO3JldHVybiBsfD0wLGN8PTAsbT1sZSxsZT1sZSsxNnwwLGFbKHA9bSk+PjJdPWZ8PTAsS2YoMHxhW2w+PjJdLGMscCwwKSxsZT1tLDB8YVtwPj4yXX0sZnVuY3Rpb24gcFAobCxjLGYpe2N8PTAsZnw9MDt2YXIgcCxtPTA7Zm9yKHA9fn4rX1sobT0wfGFbKGx8PTApPj4y''@;'; put 'put ''XSk+PjNdLG09bSs4fDAsbD0wOyEoKDB8bCk+PSgwfHApKTspX1tmKyhsPDwzKT4+M109K19bbSsobDw8Myk+PjNdKitfW2MrKGw8PDMpPj4zXSxsPWwrMXwwO3JldHVybiAwfGZ9LGZ1bmN0aW9uIFFtKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgcD0wLG09MCxBPTAsdz0wLGI9MCxrPTAs''@;'; put 'put ''TT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wO2U6ZG97aWYoOTkmZilwPTB8bWlbNjMmYVthW2wrMTY+PjJdPj4yXV0obCxjLGYpO2Vsc2V7aWYoMCE9KDUxNiZmfDApfHwwIT0oMzg0JmZ8MCkmMD09KDEyJihwPTB8YVs0KygwfGFbbCsxNj4+Ml0pPj4yXSl8MCkpbT1sO2Vsc2V7aWYoMTImcHww''@;'; put 'put ''KXtpZighKDQwOCZmKSl7cD0wO2JyZWFrfWZvcihxPTAhPSgxMzYmZnwwKSxwZT0wIT0oMjcyJmZ8MCksRD0wLG09MCxwPTAsRz1sO0c7KXtSPTB8bWlbNjMmYVthW0crMTY+PjJdPj4yXV0oRyxjLGYpO2Rve2lmKFIpe2lmKGs9MHxhWzIwKyh3PTB8YVtHKzQ+PjJdKT4+Ml0sQT1SKygwfGFb''@;'; put 'put ''dz4+Ml0pfDAsTT0oMHwoYj0wfGFbdys0Pj4yXSkpPDA/MHxhW0E+PjJdOkEsMHxwKXtkb3tpZighayl7aWYoKDB8Yik8MSl7QT0wfFppKE0sbSk7YnJlYWt9QT0wfHQzKE0sbSxiKTticmVha31BPTB8cTBbMTI3JmtdKEcsTSxtLHcpfXdoaWxlKDApO2lmKCEocSYoMHxBKTwwfHBlJigwfEEp''@;'; put 'put ''PjApKXtBPUQ7YnJlYWt9fUE9RyxtPU0scD1SfWVsc2UgQT1EfXdoaWxlKDApO0Q9QSxHPTB8YVtHKzI4Pj4yXX1hW2wrMzI+PjJdPUQ7YnJlYWt9aWYoISgyNCZmKSl7cD0wO2JyZWFrfShtPTB8YVsoaz1sKzMyfDApPj4yXSk/KEE9MHxhWzQrKDB8YVttKzg+PjJdKT4+Ml0sKDB8KHA9KDB8''@;'; put 'put ''KHA9MHxhWzgrKDB8YVttKzQ+PjJdKT4+Ml0pKTwwPzB8YVtBKzg+PjJdOkErKDAtcCl8MCkpPT0oMHxjKT9wPWM6KG09bCx3PTMyKSk6KG09bCx3PTMyKTtkb3tpZigzMj09KDB8dykpe2Zvcig7Oyl7aWYoIW0pe3c9MzM7YnJlYWt9aWYoMHwocD0wfG1pWzYzJmFbYVttKzE2Pj4yXT4+Ml1d''@;'; put 'put ''KG0sYyw0KSkpe3c9MzY7YnJlYWt9bT0wfGFbbSsyOD4+Ml0sdz0zMn1pZigzMz09KDB8dykpe2Fbaz4+Ml09MCxwPTA7YnJlYWsgZX1pZigzNj09KDB8dykpe2Fbaz4+Ml09bTticmVha319fXdoaWxlKDApO2ZvcihiPTEyOCsoZjw8NCYxMjheMTI4KXwwLHA9MHxtaVs2MyZhW2FbbSsxNj4+''@;'; put 'put ''Ml0+PjJdXShtLHAsZik7Oyl7Zm9yKHc9bSsxNnwwO3A7KXtmb3IoQT1sOzspe2lmKCgwfEEpPT0oMHxtKSlicmVhayBlO2lmKDB8bWlbNjMmYVthW0ErMTY+PjJdPj4yXV0oQSxwLDQpKWJyZWFrO0E9MHxhW0ErMjg+PjJdfXA9MHxtaVs2MyZhW2Fbdz4+Ml0+PjJdXShtLHAsZil9aWYoYVtr''@;'; put 'put ''Pj4yXT1tPTB8YVttKzI4Pj4yXSwhbSl7cD0wO2JyZWFrIGV9cD0wfG1pWzYzJmFbYVttKzE2Pj4yXT4+Ml1dKG0sMCxiKX19Zm9yKDs7KXtpZighbSl7bT0wLHA9MDticmVha31pZigwfChwPTB8bWlbNjMmYVthW20rMTY+PjJdPj4yXV0obSxjLGYpKSlicmVhazttPTB8YVttKzI4Pj4yXX1h''@;'; put 'put ''W2wrMzI+PjJdPW19fXdoaWxlKDApO3JldHVybiAwfHB9LFNyZSxvbyxwcyxUMCxmdW5jdGlvbiB3bGUobCxjLGYpe3JldHVybiBsfD0wLGN8PTAsZnw9MCxmPTB8c2goMSwzMiksMHwobD0wfGFbYz4+Ml0pJiYoYVtmPj4yXT0wfHJhKGwpKSwwfChsPTB8YVtjKzQ+PjJdKSYmKGFbZis0Pj4y''@;'; put 'put ''XT0wfHJhKGwpKSxhW2YrMjQ+PjJdPTEyNyZhW2MrMjQ+PjJdLF9bZisxNj4+M109K19bYysxNj4+M10sYVtmKzg+PjJdPWFbYys4Pj4yXSwwfGZ9LHhRLGZ1bmN0aW9uIHhSKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTA7Zm9yKG09MHxhWyhs''@;'; put 'put ''fD0wKT4+Ml0sQT1sKzE2fDAscD0wOyEoKDB8cCk+PSgwfG0pKTspYVsoMHxhW0E+PjJdKSsoNDAqcHwwKT4+Ml09LTIxNDc0ODM2NDgscD1wKzF8MDshZnVuY3Rpb24gSWIoKXthWzQ3Mzg3XT0wfSgpO2U6ZG97aWYoMHxOOShjKSlwPTE7ZWxzZXthW2MrOD4+Ml09MCxhW2M+PjJdPTAsYz1s''@;'; put 'put ''KzIwfDA7dDpmb3IoOzspe2lmKCEobT0wfHhFKCkpKXtwPTA7YnJlYWsgZX1pZihhW20+PjJdPTAtKDB8YVttPj4yXSksKDB8bSk9PSgwfGYpKXtwPTA7YnJlYWsgZX1mb3IoQT1tKzE2fDAsdz1tKzI4fDAscD0wOzspe2lmKCgwfHApPj0oMHxpdFtBPj4xXSkpY29udGludWUgdDtrPTB8VXoo''@;'; put 'put ''bCxiPSgwfGFbYz4+Ml0pKygyNCooMHxhWygwfGFbdz4+Ml0pKyhwPDwyKT4+Ml0pfDApfDAsbSksTT0wfGFbaz4+Ml07ZG97aWYoKDB8TSk8MCl7aWYoRD1+fi0oK19bYj4+M10rICsoMHxhW20+PjJdKSksLTIxNDc0ODM2NDg9PSgwfE0pKXtpZihhW2s+PjJdPUQsMHxOOShrKSl7cD0xO2Jy''@;'; put 'put ''ZWFrIGV9YVtrKzg+PjJdPW0sYVtrKzEyPj4yXT1iO2JyZWFrfWlmKCgwfE0pPj0oMHxEKSlicmVhaztzQihrLEQpLGFbays4Pj4yXT1tLGFbaysxMj4+Ml09YjticmVha319d2hpbGUoMCk7cD1wKzF8MH19fX13aGlsZSgwKTtyZXR1cm4gMHxwfSxKZixVSyxmdW5jdGlvbiBLMWUobCxjLGYp''@;'; put 'put ''e3JldHVybiBsfD0wLGN8PTAsLTE9PSgwfChmPTB8ZkwoZnw9MCkpKT9mPTA6KGZlW2wrNjk+PjBdPWYsYVtsPj4yXT02OSxhW2wrND4+Ml09NzAsYVtsKzQ4Pj4yXT0zMSxhW2wrNzI+PjJdPWMsYVtjPj4yXT1sLGY9MSksMHxmfSxmdW5jdGlvbiBKMWUobCxjLGYpe3ZhciBwLG0sQSx3O2x8''@;'; put 'put ''PTAsZnw9MCxBPWxlLGxlPWxlKzE0NHwwLHA9QSs4fDAsbT1BLGFbKHc9QSs0fDApPj4yXT1jfD0wLGFbbT4+Ml09cCxSMlsxMjcmYVtsKzU2Pj4yXV0obCx3LGYsbSxwKzEyN3wwKTtkb3tpZigoMHxhW3c+PjJdKT09KDB8Zikpe2lmKGZlW2FbbT4+Ml0+PjBdPTAsMHxDaihwLDE0NDMxNSkm''@;'; put 'put ''JjI9PSgwfGFbbCs2ND4+Ml0pKWJyZWFrO2w9LTEhPSgwfChsPTB8ZkwocCkpKT8wfGFbNTg5NDgrKGw8PDIpPj4yXTowfWVsc2UgbD0wfXdoaWxlKDApO3JldHVybiBsZT1BLDB8bH0sZnVuY3Rpb24gdHVlKGwsYyxmKXt2YXIgcCxtLEEsdztsfD0wLGZ8PTAsQT1sZSxsZT1sZSsxNDR8MCxw''@;'; put 'put ''PUErOHwwLG09QSxhWyh3PUErNHwwKT4+Ml09Y3w9MCxhW20+PjJdPXAsUjJbMTI3JmFbbCs1Nj4+Ml1dKGwsdyxmLG0scCsxMjd8MCk7ZG97aWYoKDB8YVt3Pj4yXSk9PSgwfGYpKXtpZihmZVthW20+PjJdPj4wXT0wLDB8Q2oocCwxNDQzMTUpJiYyPT0oMHxhW2wrNjQ+PjJdKSlicmVhazts''@;'; put 'put ''PS0xIT0oMHwobD0wfGZMKHApKSk/MHxhWzYwNDU2KyhsPDwyKT4+Ml06MH1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gbGU9QSwwfGx9LGZ1bmN0aW9uIEJjZShsLGMsZil7cmV0dXJuIDB8ZnVuY3Rpb24gamNlKGwsYyxmKXtjfD0wO3ZhciBwLEEsdyxtPTA7cmV0dXJuIG09MHxlUyhBPTB8''@;'; put 'put ''YVsocD04NCsobHw9MCl8MCk+PjJdLDAsdz0yNTYrKGZ8PTApfDApLGdvKDB8YywwfEEsMHwoZj0obT0wPT0oMHxtKT93Om0tQXwwKT4+PjA8Zj4+PjA/bTpmKSksYVtsKzQ+PjJdPUErZixhW2wrOD4+Ml09Yz1BK218MCxhW3A+PjJdPWMsMHxmfShsfD0wLGN8PTAsZnw9MCl9LE0yLE0yLE0y''@;'; put 'put ''LE0yLE0yLE0yLE0yLE0yLE0yLE0yLE0yLE0yLE0yLE0yLE0yLE0yLE0yLE0yLE0yLE0yLE0yLE0yXSxxMD1bcGEsZnVuY3Rpb24gb3NlKGwsYyxmLHApe3JldHVybiBsfD0wLHB8PTAsKGw9MHxhWyhjfD0wKT4+Ml0pPj4+MDw9KHA9MHxhWyhmfD0wKT4+Ml0pPj4+MD9sPj4+MD49cD4+PjA/''@;'; put 'put ''KHA9MHxhW2MrMjQ+PjJdKT4+PjA8PShsPTB8YVtmKzI0Pj4yXSk+Pj4wP3A+Pj4wPj1sPj4+MD8obD1+figrX1tjKzg+PjNdLStfW2YrOD4+M10pKXx8KGw9fn4oK19bYysxNj4+M10tK19bZisxNj4+M10pKXx8KGw9fn4oK19bYyszMj4+M10tK19bZiszMj4+M10pKXx8KGw9fn4oK19bYys0''@;'; put 'put ''MD4+M10tK19bZis0MD4+M10pKTpsPS0xOmw9MTpsPS0xOmw9MSwwfGx9LGZ1bmN0aW9uIEhEKGwsYyxmLHApe3JldHVybigwfGFbKGN8PTApPj4yXSktKDB8YVsoZnw9MCk+PjJdKXwwfSxmdW5jdGlvbiBoMWUobCxjLGYscCl7cmV0dXJuIGx8PTAsKGw9KDB8YVsoY3w9MCk+PjJdKS0oMHxh''@;'; put 'put ''WyhmfD0wKT4+Ml0pfDApfHwobD0oMHxhW2MrND4+Ml0pLSgwfGFbZis0Pj4yXSl8MCksMHxsfSxmdW5jdGlvbiAkMihsLGMsZixwKXtyZXR1cm4gcHw9MCwwfCgoMHwoYz0wfGFbKGN8PTApPj4yXSkpPCgwfChwPTB8YVsoZnw9MCk+PjJdKSk/LTE6KDB8Yyk+KDB8cCkmMSl9LGZ1bmN0aW9u''@;'; put 'put ''IFVtKGwsYyxmLHApe3JldHVybiBwfD0wLDB8KChjPTB8YVsoY3w9MCk+PjJdKT4+PjA+KHA9MHxhWyhmfD0wKT4+Ml0pPj4+MD8xOihjPj4+MDxwPj4+MCk8PDMxPj4zMSl9LGZ1bmN0aW9uIEdQKGwsYyxmLHApe2x8PTAscHw9MDt2YXIgbSxBPTA7cmV0dXJuKDB8KGw9MHxhWzQwKyhjfD0w''@;'; put 'put ''KT4+Ml0pKT09KDB8KG09MHxhWzQwKyhmfD0wKT4+Ml0pKT8ocD0oMHxhW2M+PjJdKT4+PjQpPj4+MD49KGw9KDB8YVtmPj4yXSk+Pj40KT4+PjA/cD4+PjA+bD4+PjA/bD0xOkE9NjpsPS0xOihwPSgwfGFbbD4+Ml0pPj4+NCk+Pj4wPj0obD0oMHxhW20+PjJdKT4+PjQpPj4+MD9wPj4+MD5s''@;'; put 'put ''Pj4+MD9sPTE6QT02Omw9LTEsNj09KDB8QSkmJihsPTApLDB8bH0sZnVuY3Rpb24gV2QobCxjLGYscCl7bHw9MCxmfD0wLHB8PTAsbD0wfGFbNDY5ODRdLHA9MCE9KDB8KGN8PTApKTtkb3tpZihsKXtpZihwKXt4dChsLGMpLGw9MDticmVha31sPTB8TXQobCxmKTticmVha31pZihwKXtGdChj''@;'; put 'put ''KSxsPTA7YnJlYWt9bD0wfEYwKGYpO2JyZWFrfXdoaWxlKDApO3JldHVybiAwfGx9LGZ1bmN0aW9uIERBKGwsYyxmLHApe2x8PTAscHw9MDt2YXIgQSxtPTAsdz0wLGI9MDtBPTB8YVsobD04KygwfGFbNDArKGN8PTApPj4yXSl8MCk+PjJdLGw9MHxhW2wrND4+Ml0scD0wfGFbKG09OCsoMHxh''@;'; put 'put ''WzQwKyhmfD0wKT4+Ml0pfDApPj4yXSxtPTB8YVttKzQ+PjJdO2Rve2lmKGw+Pj4wPG0+Pj4wfCgwfGwpPT0oMHxtKSZBPj4+MDxwPj4+MClsPS0xO2Vsc2UgaWYobD4+PjA+bT4+PjB8KDB8bCk9PSgwfG0pJkE+Pj4wPnA+Pj4wKWw9MTtlbHNle2lmKCEoMD09KDB8KGw9MHxhWyhwPWMrOHww''@;'; put 'put ''KT4+Ml0pKSYwPT0oMHwocD0wfGFbcCs0Pj4yXSkpfHwoYj1mKzh8MCx3PTB8YVtiPj4yXSxiPTB8YVtiKzQ+PjJdLDA9PSgwfHcpJjA9PSgwfGIpKSkpe2lmKHA+Pj4wPGI+Pj4wfCgwfHApPT0oMHxiKSZsPj4+MDx3Pj4+MCl7bD0tMTticmVha31pZihwPj4+MD5iPj4+MHwoMHxwKT09KDB8''@;'; put 'put ''YikmbD4+PjA+dz4+PjApe2w9MTticmVha319bD0wfX13aGlsZSgwKTtyZXR1cm4gMHxsfSxmdW5jdGlvbiBmQyhsLGMsZixwKXtyZXR1cm4gcHw9MCwwfCgwPT0oMHwocD0wfFNwKDB8YVsoYz04KyhjfD0wKXwwKT4+Ml0sMHxhW2MrND4+Ml0sMHxhWyhwPTgrKGZ8PTApfDApPj4yXSwwfGFb''@;'; put 'put ''cCs0Pj4yXSkpKT8wOnA+PjMxfDEpfSxmdW5jdGlvbiBkQyhsLGMsZixwKXtyZXR1cm4gMH0sZnVuY3Rpb24gcEMobCxjLGYscCl7cmV0dXJuIDB8KDA9PSgxJihmfD0wKXwwKSYhMD9mOjApfSxmdW5jdGlvbiBDRyhsLGMsZixwKXtyZXR1cm4gcHw9MCwwfCgoYz0wfGFbMjQrKGN8PTApPj4y''@;'; put 'put ''XSk+Pj4wPihwPTB8YVsyNCsoZnw9MCk+PjJdKT4+PjA/MTooYz4+PjA8cD4+PjApPDwzMT4+MzEpfSxmdW5jdGlvbiB2VChsLGMsZixwKXtyZXR1cm4gbHw9MCxwfD0wLGM9MHxhWyhsPTE2KyhjfD0wKXwwKT4+Ml0scD0wfGFbKGY9MTYrKGZ8PTApfDApPj4yXSwwfCgobD0wfGFbbCs0Pj4y''@;'; put 'put ''XSk+Pj4wPihmPTB8YVtmKzQ+PjJdKT4+PjB8KDB8bCk9PSgwfGYpJmM+Pj4wPnA+Pj4wPzE6KGw+Pj4wPGY+Pj4wfCgwfGwpPT0oMHxmKSZjPj4+MDxwPj4+MCk8PDMxPj4zMSl9LGZ1bmN0aW9uIGplKGwsYyxmLHApe3JldHVybiBsfD0wLGZ8PTAsbD0wfFVhKGN8PTAscHw9MCkscD4+PjA+''@;'; put 'put ''Zj4+PjAmJnUyKGwrZnwwLDAscC1mfDApLDB8bH0sZnVuY3Rpb24gUnQobCxjLGYscCl7cmV0dXJuIGx8PTAscHw9MCxjPTB8YVsobD04KygwfGFbMTYrKGN8PTApPj4yXSl8MCk+PjJdLHA9MHxhWyhmPTgrKDB8YVsxNisoZnw9MCk+PjJdKXwwKT4+Ml0sMHwoKGw9MHxhW2wrND4+Ml0pPj4+''@;'; put 'put ''MDwoZj0wfGFbZis0Pj4yXSk+Pj4wfCgwfGwpPT0oMHxmKSZjPj4+MDxwPj4+MD8tMToxJihsPj4+MD5mPj4+MHwoMHxsKT09KDB8ZikmYz4+PjA+cD4+PjApKX0sZnVuY3Rpb24gbm4obCxjLGYscCl7cmV0dXJuIHB8PTAsMHwoKGM9KDB8YVthWzE2KyhjfD0wKT4+Ml0+PjJdKT4+PjQpPj4+''@;'; put 'put ''MDwocD0oMHxhW2FbMTYrKGZ8PTApPj4yXT4+Ml0pPj4+NCk+Pj4wPy0xOmM+Pj4wPnA+Pj4wJjEpfSxmdW5jdGlvbiBoYWUobCxjLGYscCl7aWYobHw9MCxwfD0wLCgwfChsPTB8YVsoY3w9MCk+PjJdKSk8PSgwfChwPTB8YVsoZnw9MCk+PjJdKSkpe2lmKCEoKDB8bCk8KDB8cCkpKXJldHVy''@;'; put 'put ''biAwfCgoMHwoYz0wfGFbYys0Pj4yXSkpPigwfChmPTB8YVtmKzQ+PjJdKSk/MTooKDB8Yyk8KDB8ZikpPDwzMT4+MzEpO2w9LTF9ZWxzZSBsPTE7cmV0dXJuIDB8bH0sZnVuY3Rpb24gSWxlKGwsYyxmLHApe2lmKGx8PTAscHw9MCwobD0wfGFbKGN8PTApPj4yXSk+Pj4wPj0ocD0wfGFbKGZ8''@;'; put 'put ''PTApPj4yXSk+Pj4wKXtpZighKGw+Pj4wPnA+Pj4wKSlyZXR1cm4gMHwoKGM9MHxhW2MrND4+Ml0pPj4+MDwoZj0wfGFbZis0Pj4yXSk+Pj4wPy0xOmM+Pj4wPmY+Pj4wJjEpO2w9MX1lbHNlIGw9LTE7cmV0dXJuIDB8bH0sZnVuY3Rpb24gX1IobCxjLGYscCl7dmFyIG0sQTtyZXR1cm4gMHwo''@;'; put 'put ''KEE9K19bKGN8PTApPj4zXSk+KG09K19bKGZ8PTApPj4zXSk/MTooQTxtKTw8MzE+PjMxKX0sZnVuY3Rpb24gVjgobCxjLGYscCl7dmFyIG0sQTtyZXR1cm4gMHwoKG09K19bKGN8PTApPj4zXSk+KEE9K19bKGZ8PTApPj4zXSk/MSYhKCtfW2MrOD4+M108PStfW2YrOD4+M10pOm08QT8hKCtf''@;'; put 'put ''W2MrOD4+M10+PStfW2YrOD4+M10pPDwzMT4+MzE6MCl9LGZ1bmN0aW9uIFZSKGwsYyxmLHApe3JldHVybigwfGFbKGN8PTApPj4yXSktKDB8YVsoZnw9MCk+PjJdKXwwfSxmdW5jdGlvbiB4YihsLGMsZixwKXtyZXR1cm4gcHw9MCwwfCgoMHwoYz0wfGFbKGN8PTApPj4yXSkpPigwfChwPTB8''@;'; put 'put ''YVsoZnw9MCk+PjJdKSk/MTooKDB8Yyk8KDB8cCkpPDwzMT4+MzEpfSxmdW5jdGlvbiBERShsLGMsZixwKXt2YXIgbT0wLEE9MDtyZXR1cm4gMHwoKG09K19bKGN8PTApPj4zXSk+KEE9K19bKGZ8PTApPj4zXSk/MTptPEE/LTE6KEE9K19bYys4Pj4zXSk+KG09K19bZis4Pj4zXSk/MTooQTxt''@;'; put 'put ''KTw8MzE+PjMxKX0sZnVuY3Rpb24gT2IobCxjLGYscCl7dmFyIG09MCxBPTA7cmV0dXJuIDB8KChtPStfWzgrKGN8PTApPj4zXSk+KEE9K19bOCsoZnw9MCk+PjNdKT8xOm08QT8tMTooQT0rX1tjPj4zXSk+KG09K19bZj4+M10pPzE6KEE8bSk8PDMxPj4zMSl9LGZ1bmN0aW9uIE5tKGwsYyxm''@;'; put 'put ''LHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MDtlOmRve2lmKGM+Pj4wPGY+Pj4wKXtzd2l0Y2goMHxmZVsoRD1sKzcyfDApKygwfFh0W2M+PjBdKT4+MF0pe2Nhc2UgMTI6bT0wfGcxZSgxMixsLGMrMXwwLGYscCk7YnJlYWsgZTtjYXNlIDEz''@;'; put 'put ''Om09MHxnMWUoMTMsbCxjKzF8MCxmLHApO2JyZWFrIGU7Y2FzZSAyOmlmKChmLShtPWMrMXwwKXwwKTw9MCl7bT0tMTticmVhayBlfXN3aXRjaCgwfGZlW0QrKDB8WHRbbT4+MF0pPj4wXSl7Y2FzZSAxNjptPTB8bTFlKGwsYysyfDAsZixwKTticmVhayBlO2Nhc2UgMTU6bT0wfHNMKGwsYysy''@;'; put 'put ''fDAsZixwKTticmVhayBlO2Nhc2UgNzpjYXNlIDY6Y2FzZSA1OmNhc2UgMjk6Y2FzZSAyNDpjYXNlIDIyOmFbcD4+Ml09YyxtPTI5O2JyZWFrIGU7ZGVmYXVsdDphW3A+PjJdPW0sbT0wO2JyZWFrIGV9Y2FzZSA5OmlmKChjKzF8MCk9PSgwfGYpKXthW3A+PjJdPWYsbT0tMTU7YnJlYWsgZX1i''@;'; put 'put ''PTM7YnJlYWs7Y2FzZSAxMDpjYXNlIDIxOmI9MzticmVhaztjYXNlIDMwOm09MHxkaihsLGMrMXwwLGYscCk7YnJlYWsgZTtjYXNlIDM1OmFbcD4+Ml09YysxLG09Mzg7YnJlYWsgZTtjYXNlIDIwOmFbcD4+Ml09YysxLG09MjU7YnJlYWsgZTtjYXNlIDQ6aWYoKDB8KG09Zi0oQT1jKzF8MCl8''@;'; put 'put ''MCkpPD0wKXttPS0yNjticmVhayBlfWlmKDkzPT0oMHxmZVtBPj4wXSkpe2lmKCgwfG0pPD0xKXttPS0xO2JyZWFrIGV9aWYoNjI9PSgwfGZlW2MrMj4+MF0pKXthW3A+PjJdPWMrMyxtPTM0O2JyZWFrIGV9fWFbcD4+Ml09QSxtPTI2O2JyZWFrIGU7Y2FzZSAzMTphW3A+PjJdPWMrMSxtPTIz''@;'; put 'put ''O2JyZWFrIGU7Y2FzZSAzMjppZigoZi0obT1jKzF8MCl8MCk8PTApe209LTI0O2JyZWFrIGV9c3dpdGNoKDB8ZmVbRCsoMHxYdFttPj4wXSk+PjBdKXtjYXNlIDMzOmFbcD4+Ml09YysyLG09MzY7YnJlYWsgZTtjYXNlIDE1OmFbcD4+Ml09YysyLG09MzU7YnJlYWsgZTtjYXNlIDM0OmFbcD4+''@;'; put 'put ''Ml09YysyLG09Mzc7YnJlYWsgZTtjYXNlIDMyOmNhc2UgMzY6Y2FzZSAzNTpjYXNlIDExOmNhc2UgMjE6Y2FzZSAxMDpjYXNlIDk6YVtwPj4yXT1tLG09MjQ7YnJlYWsgZTtkZWZhdWx0OmFbcD4+Ml09bSxtPTA7YnJlYWsgZX1jYXNlIDM2OmFbcD4+Ml09YysxLG09MjE7YnJlYWsgZTtjYXNl''@;'; put 'put ''IDExOmFbcD4+Ml09YysxLG09MTc7YnJlYWsgZTtjYXNlIDE5Om09MHxISyhsLGMrMXwwLGYscCk7YnJlYWsgZTtjYXNlIDU6aWYoKGYtY3wwKTwyKXttPS0yO2JyZWFrIGV9aWYoMHxCaVsxMjcmYVtsKzM0MD4+Ml1dKGwsYykpbT0xOCxBPTI7ZWxzZXtpZighKDB8QmlbMTI3JmFbbCszMjg+''@;'; put 'put ''PjJdXShsLGMpKSl7YVtwPj4yXT1jLG09MDticmVhayBlfW09MTksQT0yfWJyZWFrO2Nhc2UgNjppZigoZi1jfDApPDMpe209LTI7YnJlYWsgZX1pZigwfEJpWzEyNyZhW2wrMzQ0Pj4yXV0obCxjKSltPTE4LEE9MztlbHNle2lmKCEoMHxCaVsxMjcmYVtsKzMzMj4+Ml1dKGwsYykpKXthW3A+''@;'; put 'put ''PjJdPWMsbT0wO2JyZWFrIGV9bT0xOSxBPTN9YnJlYWs7Y2FzZSA3OmlmKChmLWN8MCk8NCl7bT0tMjticmVhayBlfWlmKDB8QmlbMTI3JmFbbCszNDg+PjJdXShsLGMpKW09MTgsQT00O2Vsc2V7aWYoISgwfEJpWzEyNyZhW2wrMzM2Pj4yXV0obCxjKSkpe2FbcD4+Ml09YyxtPTA7YnJlYWsg''@;'; put 'put ''ZX1tPTE5LEE9NH1icmVhaztjYXNlIDI0OmNhc2UgMjI6bT0xOCxBPTE7YnJlYWs7Y2FzZSAyMzpjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTptPTE5LEE9MTticmVhaztkZWZhdWx0OmFbcD4+Ml09YyxtPTA7YnJlYWsgZX1pZigzPT0oMHxiKSl7dz1mLEE9Yzt0OmZvcig7Oyl7aWYobT1BLCh3''@;'; put 'put ''LShBPUErMXwwKXwwKTw9MCl7Yj0xODticmVha31zd2l0Y2goMHxmZVtEKygwfFh0W0E+PjBdKT4+MF0pe2Nhc2UgMTA6Y2FzZSAyMTpjb250aW51ZSB0O2Nhc2UgOTpicmVhaztkZWZhdWx0OmI9MTc7YnJlYWsgdH1pZigobSsyfDApPT0oMHxmKSl7Yj0xNzticmVha319aWYoMTc9PSgwfGIp''@;'; put 'put ''KXthW3A+PjJdPUEsbT0xNTticmVha31pZigxOD09KDB8Yikpe2FbcD4+Ml09QSxtPTE1O2JyZWFrfX1iPWwrMzI4fDAsaz1sKzMzMnwwLE09bCszMzZ8MCx3PWMrQXwwO3Q6Zm9yKDs7KXtpZigoMHwoQT1mLXd8MCkpPD0wKXtiPTk5O2JyZWFrfXN3aXRjaCgwfGZlW0QrKDB8WHRbdz4+MF0p''@;'; put 'put ''Pj4wXSl7Y2FzZSAyOTpiPTU2O2JyZWFrIHQ7Y2FzZSAxMDpjYXNlIDk6Y2FzZSAyMTpjYXNlIDMwOmNhc2UgMjA6Y2FzZSAzNjpjYXNlIDM1OmNhc2UgMzI6Y2FzZSAxMTpiPTcwO2JyZWFrIHQ7Y2FzZSAzNDpiPTg5O2JyZWFrIHQ7Y2FzZSAzMzpiPTkyO2JyZWFrIHQ7Y2FzZSAxNTpiPTk1''@;'; put 'put ''O2JyZWFrIHQ7Y2FzZSAyNzpjYXNlIDI2OmNhc2UgMjU6Y2FzZSAyNDpjYXNlIDIyOnc9dysxfDAsbT1jPW07Y29udGludWUgdDtjYXNlIDU6aWYoKDB8QSk8Mil7bT0tMjticmVhayBlfWlmKCEoMHxCaVsxMjcmYVtiPj4yXV0obCx3KSkpe2I9NjA7YnJlYWsgdH13PXcrMnwwLG09Yz1tO2Nv''@;'; put 'put ''bnRpbnVlIHQ7Y2FzZSA2OmlmKCgwfEEpPDMpe209LTI7YnJlYWsgZX1pZighKDB8QmlbMTI3JmFbaz4+Ml1dKGwsdykpKXtiPTY0O2JyZWFrIHR9dz13KzN8MCxtPWM9bTtjb250aW51ZSB0O2Nhc2UgNzppZigoMHxBKTw0KXttPS0yO2JyZWFrIGV9aWYoISgwfEJpWzEyNyZhW00+PjJdXShs''@;'; put 'put ''LHcpKSl7Yj02ODticmVhayB0fXc9dys0fDAsbT1jPW07Y29udGludWUgdDtjYXNlIDIzOnN3aXRjaChBPXcrMXwwLDYzJm0pe2Nhc2UgMTg6YnJlYWs7Y2FzZSA0MTptPTE5LHc9QTtjb250aW51ZSB0O2RlZmF1bHQ6dz1BLG09Yz1tO2NvbnRpbnVlIHR9aWYoKDB8KG09Zi1BfDApKTw9MCl7''@;'; put 'put ''bT0tMTticmVhayBlfXN3aXRjaCgwfGZlW0QrKDB8WHRbQT4+MF0pPj4wXSl7Y2FzZSAyOTpiPTc0O2JyZWFrIHQ7Y2FzZSAyNzpjYXNlIDI2OmNhc2UgMjU6Y2FzZSAyNDpjYXNlIDIyOm09NDEsdz13KzJ8MDtjb250aW51ZSB0O2Nhc2UgNTppZigoMHxtKTwyKXttPS0yO2JyZWFrIGV9aWYo''@;'; put 'put ''ISgwfEJpWzEyNyZhW2I+PjJdXShsLEEpKSl7Yj03ODticmVhayB0fW09NDEsdz13KzN8MDtjb250aW51ZSB0O2Nhc2UgNjppZigoMHxtKTwzKXttPS0yO2JyZWFrIGV9aWYoISgwfEJpWzEyNyZhW2s+PjJdXShsLEEpKSl7Yj04MjticmVhayB0fW09NDEsdz13KzR8MDtjb250aW51ZSB0O2Nh''@;'; put 'put ''c2UgNzppZigoMHxtKTw0KXttPS0yO2JyZWFrIGV9aWYoISgwfEJpWzEyNyZhW00+PjJdXShsLEEpKSl7Yj04NjticmVhayB0fW09NDEsdz13KzV8MDtjb250aW51ZSB0O2RlZmF1bHQ6bT0xOSx3PUE7Y29udGludWUgdH1kZWZhdWx0OmI9OTg7YnJlYWsgdH19c3dpdGNoKDB8Yil7Y2FzZSA1''@;'; put 'put ''NjpjYXNlIDYwOmNhc2UgNjQ6Y2FzZSA2ODpjYXNlIDk4OmFbcD4+Ml09dyxtPTA7YnJlYWsgZTtjYXNlIDcwOmFbcD4+Ml09dzticmVhayBlO2Nhc2UgNzQ6Y2FzZSA3ODpjYXNlIDgyOmNhc2UgODY6YVtwPj4yXT1BLG09MDticmVhayBlO2Nhc2UgODk6aWYoMTk9PSgwfG0pKXthW3A+PjJd''@;'; put 'put ''PXcsbT0wO2JyZWFrIGV9YVtwPj4yXT13KzEsbT0zMjticmVhayBlO2Nhc2UgOTI6aWYoMTk9PSgwfG0pKXthW3A+PjJdPXcsbT0wO2JyZWFrIGV9YVtwPj4yXT13KzEsbT0zMTticmVhayBlO2Nhc2UgOTU6aWYoMTk9PSgwfG0pKXthW3A+PjJdPXcsbT0wO2JyZWFrIGV9YVtwPj4yXT13KzEs''@;'; put 'put ''bT0zMDticmVhayBlO2Nhc2UgOTk6bT0wLW18MDticmVhayBlfX1lbHNlIG09LTR9d2hpbGUoMCk7cmV0dXJuIDB8bX0sZnVuY3Rpb24gdGMobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTA7ZTpkb3tpZihjPj4+MDxmPj4+MCl7TT1sKzcy''@;'; put 'put ''fDA7dDpkb3tzd2l0Y2goMHxmZVtNKygwfFh0W2M+PjBdKT4+MF0pe2Nhc2UgMjptPTB8SDllKGwsYysxfDAsZixwKTticmVhayBlO2Nhc2UgMzptPTB8bEwobCxjKzF8MCxmLHApO2JyZWFrIGU7Y2FzZSA5OmlmKChmLShtPWMrMXwwKXwwKTw9MCl7bT0tMzticmVhayBlfWFbcD4+Ml09MTA9''@;'; put 'put ''PSgwfGZlW00rKDB8WHRbbT4+MF0pPj4wXSk/YysyfDA6bSxtPTc7YnJlYWsgZTtjYXNlIDEwOmFbcD4+Ml09YysxLG09NzticmVhayBlO2Nhc2UgNDppZigoZi0oQT1jKzF8MCl8MCk8PTApe209LTU7YnJlYWsgZX1pZig5Mz09KDB8ZmVbQT4+MF0pKXtpZigoZi0obT1jKzJ8MCl8MCk8PTAp''@;'; put 'put ''e209LTU7YnJlYWsgZX1pZig2Mj09KDB8ZmVbbT4+MF0pKXthW3A+PjJdPW0sbT0wO2JyZWFrIGV9bT1mfWVsc2UgbT1mO2JyZWFrO2Nhc2UgNTppZigoKG09ZiktY3wwKTwyKXttPS0yO2JyZWFrIGV9aWYoMHxCaVsxMjcmYVtsKzM1Mj4+Ml1dKGwsYykpe2FbcD4+Ml09YyxtPTA7YnJlYWsg''@;'; put 'put ''ZX1BPWMrMnwwO2JyZWFrIHQ7Y2FzZSA2OmlmKCgobT1mKS1jfDApPDMpe209LTI7YnJlYWsgZX1pZigwfEJpWzEyNyZhW2wrMzU2Pj4yXV0obCxjKSl7YVtwPj4yXT1jLG09MDticmVhayBlfUE9YyszfDA7YnJlYWsgdDtjYXNlIDc6aWYoKChtPWYpLWN8MCk8NCl7bT0tMjticmVhayBlfWlm''@;'; put 'put ''KDB8QmlbMTI3JmFbbCszNjA+PjJdXShsLGMpKXthW3A+PjJdPWMsbT0wO2JyZWFrIGV9QT1jKzR8MDticmVhayB0O2Nhc2UgODpjYXNlIDE6Y2FzZSAwOmFbcD4+Ml09YyxtPTA7YnJlYWsgZTtkZWZhdWx0OkE9YysxfDAsbT1mfX13aGlsZSgwKTt3PWwrMzUyfDAsYj1sKzM1NnwwLGs9bCsz''@;'; put 'put ''NjB8MDt0OmZvcig7Oyl7aWYoKDB8KGY9bS1BfDApKTw9MCl7Zj00OTticmVha31zd2l0Y2goMHxmZVtNKygwfFh0W0E+PjBdKT4+MF0pe2Nhc2UgMTA6Y2FzZSA5OmNhc2UgODpjYXNlIDE6Y2FzZSAwOmNhc2UgMjpjYXNlIDM6Zj00NzticmVhayB0O2Nhc2UgNTppZigoMHxmKTwyKXtmPTMy''@;'; put 'put ''O2JyZWFrIHR9aWYoMHxCaVsxMjcmYVt3Pj4yXV0obCxBKSl7Zj0zMjticmVhayB0fUE9QSsyfDA7Y29udGludWUgdDtjYXNlIDY6aWYoKDB8Zik8Myl7Zj0zNjticmVhayB0fWlmKDB8QmlbMTI3JmFbYj4+Ml1dKGwsQSkpe2Y9MzY7YnJlYWsgdH1BPUErM3wwO2NvbnRpbnVlIHQ7Y2FzZSA3''@;'; put 'put ''OmlmKCgwfGYpPDQpe2Y9NDA7YnJlYWsgdH1pZigwfEJpWzEyNyZhW2s+PjJdXShsLEEpKXtmPTQwO2JyZWFrIHR9QT1BKzR8MDtjb250aW51ZSB0O2Nhc2UgNDppZigoMHxmKTw9MSl7Zj00NzticmVhayB0fWlmKDkzIT0oMHxmZVsoYz1BKzF8MCk+PjBdKSl7QT1jO2NvbnRpbnVlIHR9aWYo''@;'; put 'put ''KDB8Zik8PTIpe2Y9NDc7YnJlYWsgdH1pZig2Mj09KDB8ZmVbKEE9QSsyfDApPj4wXSkpe2Y9NDY7YnJlYWsgdH1BPWM7Y29udGludWUgdDtkZWZhdWx0OkE9QSsxfDA7Y29udGludWUgdH19aWYoMzI9PSgwfGYpKXthW3A+PjJdPUEsbT02O2JyZWFrfWlmKDM2PT0oMHxmKSl7YVtwPj4yXT1B''@;'; put 'put ''LG09NjticmVha31pZig0MD09KDB8Zikpe2FbcD4+Ml09QSxtPTY7YnJlYWt9aWYoNDY9PSgwfGYpKXthW3A+PjJdPUEsbT0wO2JyZWFrfWlmKDQ3PT0oMHxmKSl7YVtwPj4yXT1BLG09NjticmVha31pZig0OT09KDB8Zikpe2FbcD4+Ml09QSxtPTY7YnJlYWt9fWVsc2UgbT0tNH13aGlsZSgw''@;'; put 'put ''KTtyZXR1cm4gMHxtfSxmdW5jdGlvbiB4NihsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTAsaz0wO2U6ZG97aWYoYz4+PjA8Zj4+PjApe2s9bCs3MnwwO3Q6ZG97c3dpdGNoKDB8ZmVbaysoMHxYdFtjPj4wXSk+PjBdKXtjYXNlIDQ6aWYoKChtPWYpLShB''@;'; put 'put ''PWMrMXwwKXwwKTw9MCl7bT0tMTticmVhayBlfWlmKDkzPT0oMHxmZVtBPj4wXSkpe2lmKChtLShmPWMrMnwwKXwwKTw9MCl7bT0tMTticmVhayBlfWlmKDYyPT0oMHxmZVtmPj4wXSkpe2FbcD4+Ml09YyszLG09NDA7YnJlYWsgZX19YnJlYWs7Y2FzZSA5OmlmKChmLShtPWMrMXwwKXwwKTw9''@;'; put 'put ''MCl7bT0tMTticmVhayBlfWFbcD4+Ml09MTA9PSgwfGZlW2srKDB8WHRbbT4+MF0pPj4wXSk/YysyfDA6bSxtPTc7YnJlYWsgZTtjYXNlIDEwOmFbcD4+Ml09YysxLG09NzticmVhayBlO2Nhc2UgNTppZigoKG09ZiktY3wwKTwyKXttPS0yO2JyZWFrIGV9aWYoMHxCaVsxMjcmYVtsKzM1Mj4+''@;'; put 'put ''Ml1dKGwsYykpe2FbcD4+Ml09YyxtPTA7YnJlYWsgZX1BPWMrMnwwO2JyZWFrIHQ7Y2FzZSA2OmlmKCgobT1mKS1jfDApPDMpe209LTI7YnJlYWsgZX1pZigwfEJpWzEyNyZhW2wrMzU2Pj4yXV0obCxjKSl7YVtwPj4yXT1jLG09MDticmVhayBlfUE9YyszfDA7YnJlYWsgdDtjYXNlIDc6aWYo''@;'; put 'put ''KChtPWYpLWN8MCk8NCl7bT0tMjticmVhayBlfWlmKDB8QmlbMTI3JmFbbCszNjA+PjJdXShsLGMpKXthW3A+PjJdPWMsbT0wO2JyZWFrIGV9QT1jKzR8MDticmVhayB0O2Nhc2UgODpjYXNlIDE6Y2FzZSAwOmFbcD4+Ml09YyxtPTA7YnJlYWsgZTtkZWZhdWx0OkE9YysxfDAsbT1mfX13aGls''@;'; put 'put ''ZSgwKTtjPWwrMzUyfDAsdz1sKzM1NnwwLGI9bCszNjB8MDt0OmZvcig7Oyl7aWYoKDB8KGY9bS1BfDApKTw9MCl7Zj0zOTticmVha31zd2l0Y2goMHxmZVtrKygwfFh0W0E+PjBdKT4+MF0pe2Nhc2UgNDpjYXNlIDEwOmNhc2UgOTpjYXNlIDg6Y2FzZSAxOmNhc2UgMDpmPTM3O2JyZWFrIHQ7''@;'; put 'put ''Y2FzZSA1OmlmKCgwfGYpPDIpe2Y9MzA7YnJlYWsgdH1pZigwfEJpWzEyNyZhW2M+PjJdXShsLEEpKXtmPTMwO2JyZWFrIHR9Zj0yO2JyZWFrO2Nhc2UgNjppZigoMHxmKTwzKXtmPTMzO2JyZWFrIHR9aWYoMHxCaVsxMjcmYVt3Pj4yXV0obCxBKSl7Zj0zMzticmVhayB0fWY9MzticmVhaztj''@;'; put 'put ''YXNlIDc6aWYoKDB8Zik8NCl7Zj0zNjticmVhayB0fWlmKDB8QmlbMTI3JmFbYj4+Ml1dKGwsQSkpe2Y9MzY7YnJlYWsgdH1mPTQ7YnJlYWs7ZGVmYXVsdDpmPTF9QT1BK2Z8MH1pZigzMD09KDB8Zikpe2FbcD4+Ml09QSxtPTY7YnJlYWt9aWYoMzM9PSgwfGYpKXthW3A+PjJdPUEsbT02O2Jy''@;'; put 'put ''ZWFrfWlmKDM2PT0oMHxmKSl7YVtwPj4yXT1BLG09NjticmVha31pZigzNz09KDB8Zikpe2FbcD4+Ml09QSxtPTY7YnJlYWt9aWYoMzk9PSgwfGYpKXthW3A+PjJdPUEsbT02O2JyZWFrfX1lbHNlIG09LTR9d2hpbGUoMCk7cmV0dXJuIDB8bX0sZnVuY3Rpb24gcDFlKGwsYyxmLHApe2N8PTAs''@;'; put 'put ''Znw9MCxwfD0wO3ZhciB3LGIsayxNLG09MCxBPTAsRD0wLFI9MDt3PTcyKyhsfD0wKXwwLGI9bCszNTJ8MCxrPWwrMzU2fDAsTT1sKzM2MHwwLEE9MDtlOmZvcig7Oyl7aWYoKDB8KG09Zi1jfDApKTw9MCl7Zj0tMTticmVha31zd2l0Y2goMHxmZVt3KygwfFh0W2M+PjBdKT4+MF0pe2Nhc2Ug''@;'; put 'put ''ODpjYXNlIDE6Y2FzZSAwOkQ9MTY7YnJlYWsgZTtjYXNlIDU6aWYoKDB8bSk8Mil7Zj0tMjticmVhayBlfWlmKDB8QmlbMTI3JmFbYj4+Ml1dKGwsYykpe0Q9NjticmVhayBlfWM9YysyfDAsQT1tPUE7Y29udGludWUgZTtjYXNlIDY6aWYoKDB8bSk8Myl7Zj0tMjticmVhayBlfWlmKDB8Qmlb''@;'; put 'put ''MTI3JmFbaz4+Ml1dKGwsYykpe0Q9MTA7YnJlYWsgZX1jPWMrM3wwLEE9bT1BO2NvbnRpbnVlIGU7Y2FzZSA3OmlmKCgwfG0pPDQpe2Y9LTI7YnJlYWsgZX1pZigwfEJpWzEyNyZhW00+PjJdXShsLGMpKXtEPTE0O2JyZWFrIGV9Yz1jKzR8MCxBPW09QTtjb250aW51ZSBlO2Nhc2UgMjppZigo''@;'; put 'put ''Zi0obT1jKzF8MCl8MCk8PTApe2Y9LTE7YnJlYWsgZX1pZigzMyE9KDB8ZmVbbT4+MF0pKXtjPW0sQT1SPUE7Y29udGludWUgZX1pZigoZi0obT1jKzJ8MCl8MCk8PTApe2Y9LTE7YnJlYWsgZX1BPUErKDEmKFI9OTE9PSgwfGZlW20+PjBdKSkpfDAsYz1SP2MrM3wwOm07Y29udGludWUgZTtj''@;'; put 'put ''YXNlIDQ6aWYoKGYtKG09YysxfDApfDApPD0wKXtmPS0xO2JyZWFrIGV9aWYoOTMhPSgwfGZlW20+PjBdKSl7Yz1tLEE9Uj1BO2NvbnRpbnVlIGV9aWYoKGYtKG09YysyfDApfDApPD0wKXtmPS0xO2JyZWFrIGV9aWYoNjIhPSgwfGZlW20+PjBdKSl7Yz1tLEE9Uj1BO2NvbnRpbnVlIGV9aWYo''@;'; put 'put ''Yz1jKzN8MCwhQSl7RD0yNjticmVhayBlfUE9QSstMXwwO2NvbnRpbnVlIGU7ZGVmYXVsdDpjPWMrMXwwLEE9Uj1BO2NvbnRpbnVlIGV9fXJldHVybiA2PT0oMHxEKXx8MTA9PSgwfEQpfHwxND09KDB8RCl8fDE2PT0oMHxEKT8oYVtwPj4yXT1jLGY9MCk6MjY9PSgwfEQpJiYoYVtwPj4yXT1j''@;'; put 'put ''LGY9NDIpLDB8Zn0sZnVuY3Rpb24gVXkobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MDtkb3tpZihjPj4+MDxmPj4+MClpZigoKGI9ZiktY3wwKT4wKXtrPWwrNzJ8MCxBPWM7ZTpmb3IoOzspe2lmKChiLUF8MCk8PTApe3c9MjQ7YnJlYWt9c3dp''@;'; put 'put ''dGNoKDB8ZmVbaysoMHxYdFtBPj4wXSk+PjBdKXtjYXNlIDM6dz04O2JyZWFrIGU7Y2FzZSAyOnc9MTE7YnJlYWsgZTtjYXNlIDEwOnc9MTI7YnJlYWsgZTtjYXNlIDk6dz0xNTticmVhayBlO2Nhc2UgMjE6dz0xOTticmVhayBlO2Nhc2UgNTptPTI7YnJlYWs7Y2FzZSA2Om09MzticmVhaztj''@;'; put 'put ''YXNlIDc6bT00O2JyZWFrO2RlZmF1bHQ6bT0xfUE9QSttfDB9aWYoOD09KDB8dykpe2lmKCgwfEEpPT0oMHxjKSl7bT0wfGxMKGwsYysxfDAsZixwKTticmVha31hW3A+PjJdPUEsbT02O2JyZWFrfWlmKDExPT0oMHx3KSl7YVtwPj4yXT1BLG09MDticmVha31pZigxMj09KDB8dykpe2lmKCgw''@;'; put 'put ''fEEpPT0oMHxjKSl7YVtwPj4yXT1jKzEsbT03O2JyZWFrfWFbcD4+Ml09QSxtPTY7YnJlYWt9aWYoMTU9PSgwfHcpKXtpZigoMHxBKSE9KDB8Yykpe2FbcD4+Ml09QSxtPTY7YnJlYWt9aWYoKGItKG09YysxfDApfDApPD0wKXttPS0zO2JyZWFrfWFbcD4+Ml09MTA9PSgwfGZlW2srKDB8WHRb''@;'; put 'put ''bT4+MF0pPj4wXSk/YysyfDA6bSxtPTc7YnJlYWt9aWYoMTk9PSgwfHcpKXtpZigoMHxBKT09KDB8Yykpe2FbcD4+Ml09YysxLG09Mzk7YnJlYWt9YVtwPj4yXT1BLG09NjticmVha31pZigyND09KDB8dykpe2FbcD4+Ml09QSxtPTY7YnJlYWt9fWVsc2UgbT0tMTtlbHNlIG09LTR9d2hpbGUo''@;'; put 'put ''MCk7cmV0dXJuIDB8bX0sZnVuY3Rpb24gTnUobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MDtkb3tpZihjPj4+MDxmPj4+MClpZigoKGI9ZiktY3wwKT4wKXtrPWwrNzJ8MCxBPWM7ZTpmb3IoOzspe2lmKChiLUF8MCk8PTApe3c9MjM7YnJlYWt9''@;'; put 'put ''c3dpdGNoKDB8ZmVbaysoMHxYdFtBPj4wXSk+PjBdKXtjYXNlIDM6dz04O2JyZWFrIGU7Y2FzZSAzMDp3PTExO2JyZWFrIGU7Y2FzZSAxMDp3PTE0O2JyZWFrIGU7Y2FzZSA5Onc9MTc7YnJlYWsgZTtjYXNlIDU6bT0yO2JyZWFrO2Nhc2UgNjptPTM7YnJlYWs7Y2FzZSA3Om09NDticmVhaztk''@;'; put 'put ''ZWZhdWx0Om09MX1BPUErbXwwfWlmKDg9PSgwfHcpKXtpZigoMHxBKT09KDB8Yykpe209MHxsTChsLGMrMXwwLGYscCk7YnJlYWt9YVtwPj4yXT1BLG09NjticmVha31pZigxMT09KDB8dykpe2lmKCgwfEEpPT0oMHxjKSl7bT0yMj09KDB8KG09MHxkaihsLGMrMXwwLGYscCkpKT8wOm07YnJl''@;'; put 'put ''YWt9YVtwPj4yXT1BLG09NjticmVha31pZigxND09KDB8dykpe2lmKCgwfEEpPT0oMHxjKSl7YVtwPj4yXT1jKzEsbT03O2JyZWFrfWFbcD4+Ml09QSxtPTY7YnJlYWt9aWYoMTc9PSgwfHcpKXtpZigoMHxBKSE9KDB8Yykpe2FbcD4+Ml09QSxtPTY7YnJlYWt9aWYoKGItKG09YysxfDApfDAp''@;'; put 'put ''PD0wKXttPS0zO2JyZWFrfWFbcD4+Ml09MTA9PSgwfGZlW2srKDB8WHRbbT4+MF0pPj4wXSk/YysyfDA6bSxtPTc7YnJlYWt9aWYoMjM9PSgwfHcpKXthW3A+PjJdPUEsbT02O2JyZWFrfX1lbHNlIG09LTE7ZWxzZSBtPS00fXdoaWxlKDApO3JldHVybiAwfG19LGZ1bmN0aW9uIExLKGwsYyxm''@;'; put 'put ''LHApe2x8PTAscHw9MDt2YXIgbSxBPTA7Zm9yKG09Znw9MCxsPWN8PTA7Oyl7aWYoISgoYz0wfGZlW3A+PjBdKTw8MjQ+PjI0KSl7QT02O2JyZWFrfWlmKChtLWx8MCk8MSl7bD0wO2JyZWFrfWlmKCgwfGZlW2w+PjBdKSE9Yzw8MjQ+PjI0KXtsPTA7YnJlYWt9cD1wKzF8MCxsPWwrMXwwfXJl''@;'; put 'put ''dHVybiA2PT0oMHxBKSYmKGw9KDB8bCk9PSgwfGYpJjEpLDB8bH0sZnVuY3Rpb24gUksobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIGssbT0wLEE9MCx3PTAsYj0wLE09MDtrPTcyKyhsfD0wKXwwLHc9MCxiPTAsbD0xO2U6Zm9yKDs7KXN3aXRjaCgwfGZlW2srKDI1NSYoQT0wfGZlWyht''@;'; put 'put ''PWMrMXwwKT4+MF0pKT4+MF0pe2Nhc2UgNTpsfHwoKDB8Yik8KDB8ZikmJihhW3ArKGI8PDQpPj4yXT1tLGZlW3ArKGI8PDQpKzEyPj4wXT0xKSxsPTEpLGM9YysyfDAsYj1tPWIsdz1BPXc7Y29udGludWUgZTtjYXNlIDY6bHx8KCgwfGIpPCgwfGYpJiYoYVtwKyhiPDw0KT4+Ml09bSxmZVtw''@;'; put 'put ''KyhiPDw0KSsxMj4+MF09MSksbD0xKSxjPWMrM3wwLGI9bT1iLHc9QT13O2NvbnRpbnVlIGU7Y2FzZSA3Omx8fCgoMHxiKTwoMHxmKSYmKGFbcCsoYjw8NCk+PjJdPW0sZmVbcCsoYjw8NCkrMTI+PjBdPTEpLGw9MSksYz1jKzR8MCxiPW09Yix3PUE9dztjb250aW51ZSBlO2Nhc2UgMjQ6Y2Fz''@;'; put 'put ''ZSAyMjpjYXNlIDI5OmlmKDB8bCl7Yz1tLHc9QT13O2NvbnRpbnVlIGV9aWYoKDB8Yik+PSgwfGYpKXtsPTEsYz1tO2NvbnRpbnVlIGV9YVtwKyhiPDw0KT4+Ml09bSxmZVtwKyhiPDw0KSsxMj4+MF09MSxsPTEsYz1tO2NvbnRpbnVlIGU7Y2FzZSAxMjppZigyIT0oMHxsKSl7aWYoKDB8Yik+''@;'; put 'put ''PSgwfGYpKXt3PTEyLGw9MixjPW07Y29udGludWUgZX1hW3ArKGI8PDQpKzQ+PjJdPWMrMix3PTEyLGw9MixjPW07Y29udGludWUgZX1pZigxMiE9KDB8dykpe2w9MixjPW07Y29udGludWUgZX0oMHxiKTwoMHxmKSYmKGFbcCsoYjw8NCkrOD4+Ml09bSksdz0xMixiPWIrMXwwLGw9MCxjPW07''@;'; put 'put ''Y29udGludWUgZTtjYXNlIDEzOmlmKDIhPSgwfGwpKXtpZigoMHxiKT49KDB8Zikpe3c9MTMsbD0yLGM9bTtjb250aW51ZSBlfWFbcCsoYjw8NCkrND4+Ml09YysyLHc9MTMsbD0yLGM9bTtjb250aW51ZSBlfWlmKDEzIT0oMHx3KSl7bD0yLGM9bTtjb250aW51ZSBlfSgwfGIpPCgwfGYpJiYo''@;'; put 'put ''YVtwKyhiPDw0KSs4Pj4yXT1tKSx3PTEzLGI9YisxfDAsbD0wLGM9bTtjb250aW51ZSBlO2Nhc2UgMzppZigoMHxiKT49KDB8Zikpe2M9bSxsPUE9bDtjb250aW51ZSBlfWZlW3ArKGI8PDQpKzEyPj4wXT0wLGM9bSxsPUE9bDtjb250aW51ZSBlO2Nhc2UgMjE6c3dpdGNoKDB8bCl7Y2FzZSAx''@;'; put 'put ''Omw9MCxjPW07Y29udGludWUgZTtjYXNlIDI6YnJlYWs7ZGVmYXVsdDpjPW0sbD1BPWw7Y29udGludWUgZX1pZigoMHxiKT49KDB8Zikpe2w9MixjPW07Y29udGludWUgZX1pZighKDB8ZmVbKGw9cCsoYjw8NCkrMTJ8MCk+PjBdKSl7bD0yLGM9bTtjb250aW51ZSBlfWlmKEE8PDI0Pj4yND09''@;'; put 'put ''MzImJigwfG0pIT0oMHxhW3ArKGI8PDQpKzQ+PjJdKSYmKE09MHxmZVtjKzI+PjBdKTw8MjQ+PjI0IT0zMiYmKDB8dykhPSgwfFh0W2srKDI1NSZNKT4+MF0pKXtsPTIsYz1tO2NvbnRpbnVlIGV9ZmVbbD4+MF09MCxsPTIsYz1tO2NvbnRpbnVlIGU7Y2FzZSAxMDpjYXNlIDk6c3dpdGNoKDB8''@;'; put 'put ''bCl7Y2FzZSAxOmw9MCxjPW07Y29udGludWUgZTtjYXNlIDI6YnJlYWs7ZGVmYXVsdDpjPW0sbD1BPWw7Y29udGludWUgZX1pZigoMHxiKT49KDB8Zikpe2w9MixjPW07Y29udGludWUgZX1mZVtwKyhiPDw0KSsxMj4+MF09MCxsPTIsYz1tO2NvbnRpbnVlIGU7Y2FzZSAxNzpjYXNlIDExOmlm''@;'; put 'put ''KDI9PSgwfGwpKXtsPTIsYz1tO2NvbnRpbnVlIGV9YnJlYWsgZTtkZWZhdWx0OmM9bSxsPUE9bDtjb250aW51ZSBlfXJldHVybiAwfGJ9LGZ1bmN0aW9uIEp5KGwsYyxmLHApe2N8PTAscHw9MDt2YXIgbSxBPTA7bT0oZnw9MCktMXwwLGw9NzIrKGx8PTApfDA7ZTpmb3IoOzspe2lmKChtLShj''@;'; put 'put ''PWMrMXwwKXwwKTw9MCl7Yz0xO2JyZWFrfXN3aXRjaCgwfGZlW2wrKDI1NSYoZj0wfGZlW2M+PjBdKSk+PjBdKXtjYXNlIDIzOmNhc2UgMTk6Y2FzZSAzMDpjYXNlIDMzOmNhc2UgMTY6Y2FzZSAxODpjYXNlIDEwOmNhc2UgOTpjYXNlIDE1OmNhc2UgMTQ6Y2FzZSAxNzpjYXNlIDM1OmNhc2Ug''@;'; put 'put ''MzQ6Y2FzZSAzMjpjYXNlIDMxOmNhc2UgMTM6Y2FzZSAyNzpjYXNlIDI0OmNhc2UgMjU6Y29udGludWUgZTtjYXNlIDIxOmlmKGY8PDI0Pj4yND09OSl7QT03O2JyZWFrIGV9Y29udGludWUgZTtjYXNlIDIyOmNhc2UgMjY6aWYoZjw8MjQ+PjI0Pj0wKWNvbnRpbnVlIGV9c3dpdGNoKGY8PDI0''@;'; put 'put ''Pj4yNHwwKXtjYXNlIDY0OmNhc2UgMzY6YnJlYWs7ZGVmYXVsdDpBPTc7YnJlYWsgZX19cmV0dXJuIDc9PSgwfEEpJiYoYVtwPj4yXT1jLGM9MCksMHxjfSxmdW5jdGlvbiBYOWUobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTA7ZTpkb3tp''@;'; put 'put ''ZihjPj4+MDxmPj4+MClpZihBPWMsTT1mLUF8MCxiPTA9PSgxJk18MCksTSY9LTIsaz0wPT0oMHxNKSxNPWJ8az9mOmMrTXwwLGJ8MV5rKXtzd2l0Y2goKGY9MHxmZVtjPj4wXSk8PDI0Pj4yND8odz1tPTB8ZmVbYysxPj4wXSxtPTB8ZjAoZixtKSk6KHc9bT0wfGZlW2MrMT4+MF0sbT0wfFh0''@;'; put 'put ''W2wrNzIrKDI1NSZtKT4+MF0pLDB8bSl7Y2FzZSAxMjpmPTB8bmQoMTIsbCxjKzJ8MCxNLHApO2JyZWFrIGU7Y2FzZSAxMzpmPTB8bmQoMTMsbCxjKzJ8MCxNLHApO2JyZWFrIGU7Y2FzZSAyOmlmKChNLShtPWMrMnwwKXwwKTw9MSl7Zj0tMTticmVhayBlfXN3aXRjaCgwfChmPShmPTB8ZmVb''@;'; put 'put ''bT4+MF0pPDwyND4+MjQ/MHxmMChmLDB8ZmVbYyszPj4wXSk6MHxYdFtsKzcyKygwfFh0W2MrMz4+MF0pPj4wXSkpe2Nhc2UgMTY6Zj0wfGhMKGwsYys0fDAsTSxwKTticmVhayBlO2Nhc2UgMTU6Zj0wfFhLKGwsYys0fDAsTSxwKTticmVhayBlO2Nhc2UgNzpjYXNlIDY6Y2FzZSA1OmNhc2Ug''@;'; put 'put ''Mjk6Y2FzZSAyNDpjYXNlIDIyOmFbcD4+Ml09YyxmPTI5O2JyZWFrIGU7ZGVmYXVsdDphW3A+PjJdPW0sZj0wO2JyZWFrIGV9Y2FzZSA5OmlmKChjKzJ8MCk9PSgwfE0pKXthW3A+PjJdPU0sZj0tMTU7YnJlYWsgZX1BPTc7YnJlYWs7Y2FzZSAxMDpjYXNlIDIxOkE9NzticmVhaztjYXNlIDMw''@;'; put 'put ''OmY9MHxqMWUobCxjKzJ8MCxNLHApO2JyZWFrIGU7Y2FzZSAzNTphW3A+PjJdPWMrMixmPTM4O2JyZWFrIGU7Y2FzZSAyMDphW3A+PjJdPWMrMixmPTI1O2JyZWFrIGU7Y2FzZSA0OmlmKCgwfChmPU0tKG09YysyfDApfDApKTw9MSl7Zj0tMjY7YnJlYWsgZX1pZigwPT0oMHxmZVttPj4wXSkm''@;'; put 'put ''JjkzPT0oMHxmZVtjKzM+PjBdKSl7aWYoKDB8Zik8PTMpe2Y9LTE7YnJlYWsgZX1pZigwPT0oMHxmZVtjKzQ+PjBdKSYmNjI9PSgwfGZlW2MrNT4+MF0pKXthW3A+PjJdPWMrNixmPTM0O2JyZWFrIGV9fWFbcD4+Ml09bSxmPTI2O2JyZWFrIGU7Y2FzZSAzMTphW3A+PjJdPWMrMixmPTIzO2Jy''@;'; put 'put ''ZWFrIGU7Y2FzZSAzMjppZigoTS0obT1jKzJ8MCl8MCk8PTEpe2Y9LTI0O2JyZWFrIGV9c3dpdGNoKDB8KGY9KGY9MHxmZVttPj4wXSk8PDI0Pj4yND8wfGYwKGYsMHxmZVtjKzM+PjBdKTowfFh0W2wrNzIrKDB8WHRbYyszPj4wXSk+PjBdKSl7Y2FzZSAzMzphW3A+PjJdPWMrNCxmPTM2O2Jy''@;'; put 'put ''ZWFrIGU7Y2FzZSAxNTphW3A+PjJdPWMrNCxmPTM1O2JyZWFrIGU7Y2FzZSAzNDphW3A+PjJdPWMrNCxmPTM3O2JyZWFrIGU7Y2FzZSAzMjpjYXNlIDM2OmNhc2UgMzU6Y2FzZSAxMTpjYXNlIDIxOmNhc2UgMTA6Y2FzZSA5OmFbcD4+Ml09bSxmPTI0O2JyZWFrIGU7ZGVmYXVsdDphW3A+PjJd''@;'; put 'put ''PW0sZj0wO2JyZWFrIGV9Y2FzZSAzNjphW3A+PjJdPWMrMixmPTIxO2JyZWFrIGU7Y2FzZSAxMTphW3A+PjJdPWMrMixmPTE3O2JyZWFrIGU7Y2FzZSAxOTpmPTB8cnYobCxjKzJ8MCxNLHApO2JyZWFrIGU7Y2FzZSA1OmlmKChNLUF8MCk8Mil7Zj0tMjticmVhayBlfWFbcD4+Ml09YyxmPTA7''@;'; put 'put ''YnJlYWsgZTtjYXNlIDY6aWYoKE0tQXwwKTwzKXtmPS0yO2JyZWFrIGV9YVtwPj4yXT1jLGY9MDticmVhayBlO2Nhc2UgNzppZigoTS1BfDApPDQpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSAyNDpjYXNlIDIyOmY9MTgsQT02MTticmVhaztjYXNlIDIzOmNhc2Ug''@;'; put 'put ''Mjc6Y2FzZSAyNjpjYXNlIDI1OmY9MTksQT02MTticmVhaztjYXNlIDI5OkE9MjU1JmYsZj0obT0yNTUmdyk+Pj41LChtPTE8PCgzMSZtKSkmYVs1Njk0MCsoKGZ8WHRbMTQzNzg4K0E+PjBdPDwzKTw8Mik+PjJdPyhmPTE4LEE9NjEpOmFbNTY5NDArKChYdFsxNDQwNDQrQT4+MF08PDN8Zik8''@;'; put 'put ''PDIpPj4yXSZtPyhmPTE5LEE9NjEpOkE9NjQ7YnJlYWs7ZGVmYXVsdDpBPTY0fWlmKDc9PSgwfEEpKXtiPU0sbD1sKzcyfDAsdz1jO3Q6Zm9yKDs7KXtpZihBPXcsKGItKHc9dysyfDApfDApPD0xKXtBPTI4O2JyZWFrfXN3aXRjaChtPTB8ZmVbQSszPj4wXSwwfChmPShmPTB8ZmVbdz4+MF0p''@;'; put 'put ''PDwyND4+MjQ/MHxmMChmLG0pOjB8WHRbbCsoMjU1Jm0pPj4wXSkpe2Nhc2UgMTA6Y2FzZSAyMTpjb250aW51ZSB0O2Nhc2UgOTpicmVhaztkZWZhdWx0OkE9Mjc7YnJlYWsgdH1pZigoQSs0fDApPT0oMHxNKSl7QT0yNzticmVha319aWYoMjc9PSgwfEEpKXthW3A+PjJdPXcsZj0xNTticmVh''@;'; put 'put ''a31pZigyOD09KDB8QSkpe2FbcD4+Ml09dyxmPTE1O2JyZWFrfX1lbHNlIGlmKDYxPT0oMHxBKSl7az1sKzcyfDAsbT1jKzJ8MDt0OmZvcig7Oyl7Yz0yNTUmZjtuOmZvcig7Oyl7aWYoKDB8KGI9TS1tfDApKTw9MSl7QT0xMDQ7YnJlYWsgdH1zd2l0Y2godz0wfGZlW20rMT4+MF0sMHwobD0o''@;'; put 'put ''QT0wfGZlW20+PjBdKTw8MjQ+PjI0PzB8ZjAoQSx3KTowfFh0W2srKDI1NSZ3KT4+MF0pKXtjYXNlIDU6QT03MzticmVhayB0O2Nhc2UgNjpBPTc0O2JyZWFrIHQ7Y2FzZSA3OkE9NzY7YnJlYWsgdDtjYXNlIDEwOmNhc2UgOTpjYXNlIDIxOmNhc2UgMzA6Y2FzZSAyMDpjYXNlIDM2OmNhc2Ug''@;'; put 'put ''MzU6Y2FzZSAzMjpjYXNlIDExOkE9Nzg7YnJlYWsgdDtjYXNlIDM0OkE9OTQ7YnJlYWsgdDtjYXNlIDMzOkE9OTc7YnJlYWsgdDtjYXNlIDE1OkE9MTAwO2JyZWFrIHQ7Y2FzZSAyOTppZighKDE8PCgzMSYoYj0yNTUmdykpJmFbNTY5NDArKChiPj4+NXxYdFsxNDQwNDQrKDI1NSZBKT4+MF08''@;'; put 'put ''PDMpPDwyKT4+Ml0pKXtBPTcxO2JyZWFrIHR9YnJlYWs7Y2FzZSAyNzpjYXNlIDI2OmNhc2UgMjU6Y2FzZSAyNDpjYXNlIDIyOmJyZWFrO2Nhc2UgMjM6c3dpdGNoKGI9bSsyfDAsNjMmYyl7Y2FzZSA0MTpmPTE5LG09Yjtjb250aW51ZSB0O2Nhc2UgMTg6YnJlYWsgbjtkZWZhdWx0Om09Yjtj''@;'; put 'put ''b250aW51ZSBufWRlZmF1bHQ6QT0xMDM7YnJlYWsgdH1tPW0rMnwwfWlmKCgwfChsPU0tYnwwKSk8PTEpe2Y9LTE7YnJlYWsgZX1zd2l0Y2goQT0wfGZlW20rMz4+MF0sMHwodz0oZj0wfGZlW2I+PjBdKTw8MjQ+PjI0PzB8ZjAoZixBKTowfFh0W2srKDI1NSZBKT4+MF0pKXtjYXNlIDU6QT04''@;'; put 'put ''OTticmVhayB0O2Nhc2UgNjpBPTkwO2JyZWFrIHQ7Y2FzZSA3OkE9OTI7YnJlYWsgdDtjYXNlIDI5OmlmKCEoMTw8KDMxJihjPTI1NSZBKSkmYVs1Njk0MCsoKGM+Pj41fFh0WzE0NDA0NCsoMjU1JmYpPj4wXTw8Myk8PDIpPj4yXSkpe0E9ODc7YnJlYWsgdH1icmVhaztjYXNlIDI3OmNhc2Ug''@;'; put 'put ''MjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6YnJlYWs7ZGVmYXVsdDpmPTE5LG09Yjtjb250aW51ZSB0fWY9NDEsbT1tKzR8MH1zd2l0Y2goMHxBKXtjYXNlIDcxOmNhc2UgNzM6Y2FzZSAxMDM6YVtwPj4yXT1tLGY9MDticmVhayBlO2Nhc2UgNzQ6aWYoKDB8Yik8Myl7Zj0tMjticmVhayBl''@;'; put 'put ''fWFbcD4+Ml09bSxmPTA7YnJlYWsgZTtjYXNlIDc2OmlmKCgwfGIpPDQpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPW0sZj0wO2JyZWFrIGU7Y2FzZSA3ODphW3A+PjJdPW07YnJlYWsgZTtjYXNlIDg3OmNhc2UgODk6YVtwPj4yXT1iLGY9MDticmVhayBlO2Nhc2UgOTA6aWYoKDB8bCk8Myl7Zj0t''@;'; put 'put ''MjticmVhayBlfWFbcD4+Ml09YixmPTA7YnJlYWsgZTtjYXNlIDkyOmlmKCgwfGwpPDQpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPWIsZj0wO2JyZWFrIGU7Y2FzZSA5NDppZigxOT09KDB8Zikpe2FbcD4+Ml09bSxmPTA7YnJlYWsgZX1hW3A+PjJdPW0rMixmPTMyO2JyZWFrIGU7Y2FzZSA5Nzpp''@;'; put 'put ''ZigxOT09KDB8Zikpe2FbcD4+Ml09bSxmPTA7YnJlYWsgZX1hW3A+PjJdPW0rMixmPTMxO2JyZWFrIGU7Y2FzZSAxMDA6aWYoMTk9PSgwfGYpKXthW3A+PjJdPW0sZj0wO2JyZWFrIGV9YVtwPj4yXT1tKzIsZj0zMDticmVhayBlO2Nhc2UgMTA0OmY9MC1mfDA7YnJlYWsgZX19ZWxzZSBpZig2''@;'; put 'put ''ND09KDB8QSkpe2FbcD4+Ml09YyxmPTA7YnJlYWt9fWVsc2UgZj0tMTtlbHNlIGY9LTR9d2hpbGUoMCk7cmV0dXJuIDB8Zn0sZnVuY3Rpb24gSzllKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9MDtlOmRve2lmKGM+Pj4wPGY+Pj4wKWlmKG09YyxBPWYt''@;'; put 'put ''bXwwLGI9MD09KDEmQXwwKSxBJj0tMix3PTA9PSgwfEEpLEE9Ynx3P2Y6YytBfDAsYnwxXncpe3N3aXRjaCgwfChmPShmPTB8ZmVbYz4+MF0pPDwyND4+MjQ/MHxmMChmLDB8ZmVbYysxPj4wXSk6MHxYdFtsKzcyKygwfFh0W2MrMT4+MF0pPj4wXSkpe2Nhc2UgMjpmPTB8ckFlKGwsYysyfDAs''@;'; put 'put ''QSxwKTticmVhayBlO2Nhc2UgMzpmPTB8X2oobCxjKzJ8MCxBLHApO2JyZWFrIGU7Y2FzZSA5OmlmKChBLShtPWMrMnwwKXwwKTw9MSl7Zj0tMzticmVhayBlfWY9KGY9MHxmZVttPj4wXSk8PDI0Pj4yND8wfGYwKGYsMHxmZVtjKzM+PjBdKTowfFh0W2wrNzIrKDB8WHRbYyszPj4wXSk+PjBd''@;'; put 'put ''LGFbcD4+Ml09MTA9PSgwfGYpP2MrNHwwOm0sZj03O2JyZWFrIGU7Y2FzZSAxMDphW3A+PjJdPWMrMixmPTc7YnJlYWsgZTtjYXNlIDQ6aWYoKEEtKG09YysyfDApfDApPD0xKXtmPS01O2JyZWFrIGV9aWYoMD09KDB8ZmVbbT4+MF0pJiY5Mz09KDB8ZmVbYyszPj4wXSkpe2lmKChBLShmPWMr''@;'; put 'put ''NHwwKXwwKTw9MSl7Zj0tNTticmVhayBlfWlmKDA9PSgwfGZlW2Y+PjBdKSYmNjI9PSgwfGZlW2MrNT4+MF0pKXthW3A+PjJdPWYsZj0wO2JyZWFrIGV9Zj1BfWVsc2UgZj1BO2JyZWFrO2Nhc2UgNTppZigoKGY9QSktbXwwKTwyKXtmPS0yO2JyZWFrIGV9bT1jKzJ8MDticmVhaztjYXNlIDY6''@;'; put 'put ''aWYoKChmPUEpLW18MCk8Myl7Zj0tMjticmVhayBlfW09YyszfDA7YnJlYWs7Y2FzZSA3OmlmKCgoZj1BKS1tfDApPDQpe2Y9LTI7YnJlYWsgZX1tPWMrNHwwO2JyZWFrO2Nhc2UgODpjYXNlIDE6Y2FzZSAwOmFbcD4+Ml09YyxmPTA7YnJlYWsgZTtkZWZhdWx0Om09YysyfDAsZj1BfXc9bCs3''@;'; put 'put ''MnwwLGw9bTt0OmZvcig7Oyl7aWYoKDB8KGM9Zi1sfDApKTw9MSl7bT01MjticmVha31zd2l0Y2goQT0wfGZlW2wrMT4+MF0sMHwobT0obT0wfGZlW2w+PjBdKTw8MjQ+PjI0PzB8ZjAobSxBKTowfFh0W3crKDI1NSZBKT4+MF0pKXtjYXNlIDEwOmNhc2UgOTpjYXNlIDg6Y2FzZSAxOmNhc2Ug''@;'; put 'put ''MDpjYXNlIDI6Y2FzZSAzOm09NTA7YnJlYWsgdDtjYXNlIDU6ZGVmYXVsdDpsPWwrMnwwO2NvbnRpbnVlIHQ7Y2FzZSA2OmlmKCgwfGMpPDMpe209Mzg7YnJlYWsgdH1sPWwrM3wwO2NvbnRpbnVlIHQ7Y2FzZSA3OmlmKCgwfGMpPDQpe209NDE7YnJlYWsgdH1sPWwrNHwwO2NvbnRpbnVlIHQ7''@;'; put 'put ''Y2FzZSA0OmlmKCgwfGMpPD0zKXttPTUwO2JyZWFrIHR9aWYoMHxmZVsobT1sKzJ8MCk+PjBdKXtsPW07Y29udGludWUgdH1pZig5MyE9KDB8ZmVbbCszPj4wXSkpe2w9bTtjb250aW51ZSB0fWlmKCgwfGMpPD01KXttPTUwO2JyZWFrIHR9aWYoMHxmZVsoQT1sKzR8MCk+PjBdKXtsPW07Y29u''@;'; put 'put ''dGludWUgdH1pZig2Mj09KDB8ZmVbbCs1Pj4wXSkpe209NDk7YnJlYWsgdH1sPW07Y29udGludWUgdH19aWYoMzg9PSgwfG0pKXthW3A+PjJdPWwsZj02O2JyZWFrfWlmKDQxPT0oMHxtKSl7YVtwPj4yXT1sLGY9NjticmVha31pZig0OT09KDB8bSkpe2FbcD4+Ml09QSxmPTA7YnJlYWt9aWYo''@;'; put 'put ''NTA9PSgwfG0pKXthW3A+PjJdPWwsZj02O2JyZWFrfWlmKDUyPT0oMHxtKSl7YVtwPj4yXT1sLGY9NjticmVha319ZWxzZSBmPS0xO2Vsc2UgZj0tNH13aGlsZSgwKTtyZXR1cm4gMHxmfSxmdW5jdGlvbiBCMWUobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAs''@;'; put 'put ''Yj0wO2U6ZG97aWYoYz4+PjA8Zj4+PjApaWYobT1jLEE9Zi1tfDAsYj0wPT0oMSZBfDApLEEmPS0yLHc9MD09KDB8QSksQT1ifHc/ZjpjK0F8MCxifDFedyl7c3dpdGNoKDB8KGY9KGY9MHxmZVtjPj4wXSk8PDI0Pj4yND8wfGYwKGYsMHxmZVtjKzE+PjBdKTowfFh0W2wrNzIrKDB8WHRbYysx''@;'; put 'put ''Pj4wXSk+PjBdKSl7Y2FzZSA0OmlmKChBLShtPWMrMnwwKXwwKTw9MSl7Zj0tMTticmVhayBlfWlmKDA9PSgwfGZlW20+PjBdKSYmOTM9PSgwfGZlW2MrMz4+MF0pKXtpZigoQS0oZj1jKzR8MCl8MCk8PTEpe2Y9LTE7YnJlYWsgZX1pZigwPT0oMHxmZVtmPj4wXSkmJjYyPT0oMHxmZVtjKzU+''@;'; put 'put ''PjBdKSl7YVtwPj4yXT1jKzYsZj00MDticmVhayBlfX1icmVhaztjYXNlIDk6aWYoKEEtKG09YysyfDApfDApPD0xKXtmPS0xO2JyZWFrIGV9Zj0oZj0wfGZlW20+PjBdKTw8MjQ+PjI0PzB8ZjAoZiwwfGZlW2MrMz4+MF0pOjB8WHRbbCs3MisoMHxYdFtjKzM+PjBdKT4+MF0sYVtwPj4yXT0x''@;'; put 'put ''MD09KDB8Zik/Yys0fDA6bSxmPTc7YnJlYWsgZTtjYXNlIDEwOmFbcD4+Ml09YysyLGY9NzticmVhayBlO2Nhc2UgNTppZigoKGY9QSktbXwwKTwyKXtmPS0yO2JyZWFrIGV9bT1jKzJ8MCxBPWY7YnJlYWs7Y2FzZSA2OmlmKCgoZj1BKS1tfDApPDMpe2Y9LTI7YnJlYWsgZX1tPWMrM3wwLEE9''@;'; put 'put ''ZjticmVhaztjYXNlIDc6aWYoKChmPUEpLW18MCk8NCl7Zj0tMjticmVhayBlfW09Yys0fDAsQT1mO2JyZWFrO2Nhc2UgODpjYXNlIDE6Y2FzZSAwOmFbcD4+Ml09YyxmPTA7YnJlYWsgZTtkZWZhdWx0Om09YysyfDB9dz1sKzcyfDAsbD1tO3Q6Zm9yKDs7KXtpZigoMHwoYz1BLWx8MCkpPD0x''@;'; put 'put ''KXttPTQwO2JyZWFrfXN3aXRjaChtPTB8ZmVbbCsxPj4wXSwwfChmPShmPTB8ZmVbbD4+MF0pPDwyND4+MjQ/MHxmMChmLG0pOjB8WHRbdysoMjU1Jm0pPj4wXSkpe2Nhc2UgMTA6Y2FzZSA5OmNhc2UgODpjYXNlIDE6Y2FzZSAwOmNhc2UgNDptPTM4O2JyZWFrIHQ7Y2FzZSA2OmlmKCgwfGMp''@;'; put 'put ''PDMpe209MzU7YnJlYWsgdH1mPTM7YnJlYWs7Y2FzZSA3OmlmKCgwfGMpPDQpe209Mzc7YnJlYWsgdH1mPTQ7YnJlYWs7ZGVmYXVsdDpmPTJ9bD1sK2Z8MH1pZigzNT09KDB8bSkpe2FbcD4+Ml09bCxmPTY7YnJlYWt9aWYoMzc9PSgwfG0pKXthW3A+PjJdPWwsZj02O2JyZWFrfWlmKDM4PT0o''@;'; put 'put ''MHxtKSl7YVtwPj4yXT1sLGY9NjticmVha31pZig0MD09KDB8bSkpe2FbcD4+Ml09bCxmPTY7YnJlYWt9fWVsc2UgZj0tMTtlbHNlIGY9LTR9d2hpbGUoMCk7cmV0dXJuIDB8Zn0sZnVuY3Rpb24gJDllKGwsYyxmLHApe3B8PTA7dmFyIHcsbT0wLEE9MCxiPTAsaz0wO2I9MD09KDEmKGI9KGZ8''@;'; put 'put ''PTApLShjfD0wKXwwKXwwKT9mOmMrKC0yJmIpfDAsdz03MisobHw9MCl8MCxBPTAsZj1jO2U6Zm9yKDs7KXtpZigoMHwobT1iLWZ8MCkpPD0xKXtmPS0xO2JyZWFrfXN3aXRjaChjPTB8ZmVbZisxPj4wXSwwfChsPShsPTB8ZmVbZj4+MF0pPDwyND4+MjQ/MHxmMChsLGMpOjB8WHRbdysoMjU1''@;'; put 'put ''JmMpPj4wXSkpe2Nhc2UgODpjYXNlIDE6Y2FzZSAwOms9MTI7YnJlYWsgZTtjYXNlIDU6ZGVmYXVsdDpmPWYrMnwwLEE9bT1BO2NvbnRpbnVlIGU7Y2FzZSA2OmlmKCgwfG0pPDMpe2Y9LTI7YnJlYWsgZX1mPWYrM3wwLEE9bT1BO2NvbnRpbnVlIGU7Y2FzZSA3OmlmKCgwfG0pPDQpe2Y9LTI7''@;'; put 'put ''YnJlYWsgZX1mPWYrNHwwLEE9bT1BO2NvbnRpbnVlIGU7Y2FzZSAyOmlmKChiLShsPWYrMnwwKXwwKTw9MSl7Zj0tMTticmVhayBlfWlmKDB8ZmVbbD4+MF0pe2Y9bCxBPW09QTtjb250aW51ZSBlfWlmKDMzIT0oMHxmZVtmKzM+PjBdKSl7Zj1sLEE9bT1BO2NvbnRpbnVlIGV9aWYoKGItKGw9''@;'; put 'put ''Zis0fDApfDApPD0xKXtmPS0xO2JyZWFrIGV9aWYoMHxmZVtsPj4wXSl7Zj1sLEE9bT1BO2NvbnRpbnVlIGV9QT1BKygxJihtPTkxPT0oMHxmZVtmKzU+PjBdKSkpfDAsZj1tP2YrNnwwOmw7Y29udGludWUgZTtjYXNlIDQ6aWYoKGItKGw9ZisyfDApfDApPD0xKXtmPS0xO2JyZWFrIGV9aWYo''@;'; put 'put ''MHxmZVtsPj4wXSl7Zj1sLEE9bT1BO2NvbnRpbnVlIGV9aWYoOTMhPSgwfGZlW2YrMz4+MF0pKXtmPWwsQT1tPUE7Y29udGludWUgZX1pZigoYi0obD1mKzR8MCl8MCk8PTEpe2Y9LTE7YnJlYWsgZX1pZigwfGZlW2w+PjBdKXtmPWwsQT1tPUE7Y29udGludWUgZX1pZig2MiE9KDB8ZmVbZis1''@;'; put 'put ''Pj4wXSkpe2Y9bCxBPW09QTtjb250aW51ZSBlfWlmKGY9Zis2fDAsIUEpe2s9MjY7YnJlYWsgZX1BPUErLTF8MDtjb250aW51ZSBlfX1yZXR1cm4gMTI9PSgwfGspPyhhW3A+PjJdPWYsZj0wKToyNj09KDB8aykmJihhW3A+PjJdPWYsZj00MiksMHxmfSxmdW5jdGlvbiB3aihsLGMsZixwKXts''@;'; put 'put ''fD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTAsaz0wO2Rve2lmKGM+Pj4wPGY+Pj4wKWlmKCgoYj1mKS1jfDApPjEpe2s9bCs3MnwwLHc9YztlOmZvcig7Oyl7aWYoKGItd3wwKTw9MSl7QT0zMDticmVha31zd2l0Y2goQT0wfGZlW3crMT4+MF0sMHwobT0obT0wfGZlW3c+''@;'; put 'put ''PjBdKTw8MjQ+PjI0PzB8ZjAobSxBKTowfFh0W2srKDI1NSZBKT4+MF0pKXtjYXNlIDM6QT0xMTticmVhayBlO2Nhc2UgMjpBPTE0O2JyZWFrIGU7Y2FzZSAxMDpBPTE1O2JyZWFrIGU7Y2FzZSA5OkE9MTg7YnJlYWsgZTtjYXNlIDIxOkE9MjU7YnJlYWsgZTtjYXNlIDU6ZGVmYXVsdDptPTI7''@;'; put 'put ''YnJlYWs7Y2FzZSA2Om09MzticmVhaztjYXNlIDc6bT00fXc9dyttfDB9aWYoMTE9PSgwfEEpKXtpZigoMHx3KT09KDB8Yykpe209MHxfaihsLGMrMnwwLGYscCk7YnJlYWt9YVtwPj4yXT13LG09NjticmVha31pZigxND09KDB8QSkpe2FbcD4+Ml09dyxtPTA7YnJlYWt9aWYoMTU9PSgwfEEp''@;'; put 'put ''KXtpZigoMHx3KT09KDB8Yykpe2FbcD4+Ml09YysyLG09NzticmVha31hW3A+PjJdPXcsbT02O2JyZWFrfWlmKDE4PT0oMHxBKSl7aWYoKDB8dykhPSgwfGMpKXthW3A+PjJdPXcsbT02O2JyZWFrfWlmKChiLSh3PWMrMnwwKXwwKTw9MSl7bT0tMzticmVha31BPTB8ZmVbYyszPj4wXSxtPSht''@;'; put 'put ''PTB8ZmVbdz4+MF0pPDwyND4+MjQ/MHxmMChtLEEpOjB8WHRbaysoMjU1JkEpPj4wXSxhW3A+PjJdPTEwPT0oMHxtKT9jKzR8MDp3LG09NzticmVha31pZigyNT09KDB8QSkpe2lmKCgwfHcpPT0oMHxjKSl7YVtwPj4yXT1jKzIsbT0zOTticmVha31hW3A+PjJdPXcsbT02O2JyZWFrfWlmKDMw''@;'; put 'put ''PT0oMHxBKSl7YVtwPj4yXT13LG09NjticmVha319ZWxzZSBtPS0xO2Vsc2UgbT0tNH13aGlsZSgwKTtyZXR1cm4gMHxtfSxmdW5jdGlvbiBQMWUobCxjLGYscCl7bHw9MCxjfD0wLGZ8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wLGs9MDtkb3tpZihjPj4+MDxmPj4+MClpZigoKGI9Zikt''@;'; put 'put ''Y3wwKT4xKXtrPWwrNzJ8MCx3PWM7ZTpmb3IoOzspe2lmKChiLXd8MCk8PTEpe0E9Mjk7YnJlYWt9c3dpdGNoKEE9MHxmZVt3KzE+PjBdLDB8KG09KG09MHxmZVt3Pj4wXSk8PDI0Pj4yND8wfGYwKG0sQSk6MHxYdFtrKygyNTUmQSk+PjBdKSl7Y2FzZSAzOkE9MTE7YnJlYWsgZTtjYXNlIDMw''@;'; put 'put ''OkE9MTQ7YnJlYWsgZTtjYXNlIDEwOkE9MTc7YnJlYWsgZTtjYXNlIDk6QT0yMDticmVhayBlO2Nhc2UgNTpkZWZhdWx0Om09MjticmVhaztjYXNlIDY6bT0zO2JyZWFrO2Nhc2UgNzptPTR9dz13K218MH1pZigxMT09KDB8QSkpe2lmKCgwfHcpPT0oMHxjKSl7bT0wfF9qKGwsYysyfDAsZixw''@;'; put 'put ''KTticmVha31hW3A+PjJdPXcsbT02O2JyZWFrfWlmKDE0PT0oMHxBKSl7aWYoKDB8dyk9PSgwfGMpKXttPTIyPT0oMHwobT0wfGoxZShsLGMrMnwwLGYscCkpKT8wOm07YnJlYWt9YVtwPj4yXT13LG09NjticmVha31pZigxNz09KDB8QSkpe2lmKCgwfHcpPT0oMHxjKSl7YVtwPj4yXT1jKzIs''@;'; put 'put ''bT03O2JyZWFrfWFbcD4+Ml09dyxtPTY7YnJlYWt9aWYoMjA9PSgwfEEpKXtpZigoMHx3KSE9KDB8Yykpe2FbcD4+Ml09dyxtPTY7YnJlYWt9aWYoKGItKHc9YysyfDApfDApPD0xKXttPS0zO2JyZWFrfUE9MHxmZVtjKzM+PjBdLG09KG09MHxmZVt3Pj4wXSk8PDI0Pj4yND8wfGYwKG0sQSk6''@;'; put 'put ''MHxYdFtrKygyNTUmQSk+PjBdLGFbcD4+Ml09MTA9PSgwfG0pP2MrNHwwOncsbT03O2JyZWFrfWlmKDI5PT0oMHxBKSl7YVtwPj4yXT13LG09NjticmVha319ZWxzZSBtPS0xO2Vsc2UgbT0tNH13aGlsZSgwKTtyZXR1cm4gMHxtfSxmdW5jdGlvbiBGMWUobCxjLGYscCl7bHw9MCxwfD0wO3Zh''@;'; put 'put ''ciBtLEE9MDtmb3IobT1mfD0wLGw9Y3w9MDs7KXtpZighKChjPTB8ZmVbcD4+MF0pPDwyND4+MjQpKXtBPTc7YnJlYWt9aWYoKG0tbHwwKTwyKXtsPTA7YnJlYWt9aWYoMHxmZVtsPj4wXSl7bD0wO2JyZWFrfWlmKCgwfGZlW2wrMT4+MF0pIT1jPDwyND4+MjQpe2w9MDticmVha31wPXArMXww''@;'; put 'put ''LGw9bCsyfDB9cmV0dXJuIDc9PSgwfEEpJiYobD0oMHxsKT09KDB8ZikmMSksMHxsfSxmdW5jdGlvbiBIMWUobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIFIsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wO1I9NzIrKGx8PTApfDAsTT0wLEQ9MCxsPTE7ZTpmb3IoOzspc3dpdGNoKGI9''@;'; put 'put ''MHxmZVsoQT1jKzN8MCk+PjBdLDB8KG09KHc9KG09MHxmZVsoaz1jKzJ8MCk+PjBdKTw8MjQ+PjI0PT0wKT8wfFh0W1IrKDI1NSZiKT4+MF06MHxmMChtLGIpKSl7Y2FzZSA1OmNhc2UgMjQ6Y2FzZSAyMjpjYXNlIDI5OmlmKDB8bCl7Yz1rLGw9QT1sLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9''@;'; put 'put ''aWYoKDB8RCk+PSgwfGYpKXtsPTEsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9YVtwKyhEPDw0KT4+Ml09ayxmZVtwKyhEPDw0KSsxMj4+MF09MSxsPTEsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGU7Y2FzZSA2OmlmKDB8bCl7Yz1BLGw9dz1sLEQ9Yj1ELE09az1NO2NvbnRpbnVlIGV9''@;'; put 'put ''aWYoKDB8RCk+PSgwfGYpKXtsPTEsYz1BLEQ9Yj1ELE09az1NO2NvbnRpbnVlIGV9YVtwKyhEPDw0KT4+Ml09ayxmZVtwKyhEPDw0KSsxMj4+MF09MSxsPTEsYz1BLEQ9Yj1ELE09az1NO2NvbnRpbnVlIGU7Y2FzZSA3Omx8fCgoMHxEKTwoMHxmKSYmKGFbcCsoRDw8NCk+PjJdPWssZmVbcCso''@;'; put 'put ''RDw8NCkrMTI+PjBdPTEpLGw9MSksYz1jKzR8MCxEPWI9RCxNPWs9TTtjb250aW51ZSBlO2Nhc2UgMTI6aWYoMiE9KDB8bCkpe2lmKCgwfEQpPj0oMHxmKSl7TT0xMixsPTIsYz1rLEQ9Yj1EO2NvbnRpbnVlIGV9YVtwKyhEPDw0KSs0Pj4yXT1jKzQsTT0xMixsPTIsYz1rLEQ9Yj1EO2NvbnRp''@;'; put 'put ''bnVlIGV9aWYoMTIhPSgwfE0pKXtsPTIsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9KDB8RCk8KDB8ZikmJihhW3ArKEQ8PDQpKzg+PjJdPWspLE09MTIsRD1EKzF8MCxsPTAsYz1rO2NvbnRpbnVlIGU7Y2FzZSAxMzppZigyIT0oMHxsKSl7aWYoKDB8RCk+PSgwfGYpKXtNPTEzLGw9Mixj''@;'; put 'put ''PWssRD1iPUQ7Y29udGludWUgZX1hW3ArKEQ8PDQpKzQ+PjJdPWMrNCxNPTEzLGw9MixjPWssRD1iPUQ7Y29udGludWUgZX1pZigxMyE9KDB8TSkpe2w9MixjPWssRD13PUQsTT1iPU07Y29udGludWUgZX0oMHxEKTwoMHxmKSYmKGFbcCsoRDw8NCkrOD4+Ml09ayksTT0xMyxEPUQrMXwwLGw9''@;'; put 'put ''MCxjPWs7Y29udGludWUgZTtjYXNlIDM6aWYoKDB8RCk+PSgwfGYpKXtjPWssbD1BPWwsRD13PUQsTT1iPU07Y29udGludWUgZX1mZVtwKyhEPDw0KSsxMj4+MF09MCxjPWssbD1BPWwsRD13PUQsTT1iPU07Y29udGludWUgZTtjYXNlIDIxOnN3aXRjaCgwfGwpe2Nhc2UgMTpsPTAsYz1rLEQ9''@;'; put 'put ''dz1ELE09Yj1NO2NvbnRpbnVlIGU7Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6Yz1rLGw9QT1sLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9aWYoKDB8RCk+PSgwfGYpKXtsPTIsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9aWYoISgwfGZlWyhBPXArKEQ8PDQpKzEyfDApPj4wXSkpe2w9MixjPWss''@;'; put 'put ''RD13PUQsTT1iPU07Y29udGludWUgZX1kb3tpZih3JigwfGspIT0oMHxhW3ArKEQ8PDQpKzQ+PjJdKSZiPDwyND4+MjQ9PTMyKXtpZihsPTB8ZmVbYys1Pj4wXSwobT0wfGZlW2MrND4+MF0pPDwyND4+MjQpbD0wfGYwKG0sbCk7ZWxzZXtpZihsPDwyND4+MjQ9PTMyKWJyZWFrO2w9MHxYdFtS''@;'; put 'put ''KygyNTUmbCk+PjBdfWlmKCgwfGwpIT0oMHxNKSl7bD0yLGM9ayxEPXc9RCxNPWI9TTtjb250aW51ZSBlfX19d2hpbGUoMCk7ZmVbQT4+MF09MCxsPTIsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGU7Y2FzZSAxMDpjYXNlIDk6c3dpdGNoKDB8bCl7Y2FzZSAxOmw9MCxjPWssRD13PUQsTT1i''@;'; put 'put ''PU07Y29udGludWUgZTtjYXNlIDI6YnJlYWs7ZGVmYXVsdDpjPWssbD1BPWwsRD13PUQsTT1iPU07Y29udGludWUgZX1pZigoMHxEKT49KDB8Zikpe2w9MixjPWssRD13PUQsTT1iPU07Y29udGludWUgZX1mZVtwKyhEPDw0KSsxMj4+MF09MCxsPTIsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVl''@;'; put 'put ''IGU7Y2FzZSAxNzpjYXNlIDExOmlmKDI9PSgwfGwpKXtsPTIsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9YnJlYWsgZTtkZWZhdWx0OmM9ayxsPUE9bCxEPXc9RCxNPWI9TTtjb250aW51ZSBlfXJldHVybiAwfER9LGZ1bmN0aW9uIFYxZShsLGMsZixwKXtjfD0wLHB8PTA7dmFyIHcsYixt''@;'; put 'put ''PTAsQT0wLGs9MDtiPShmfD0wKS0yfDAsdz03MisobHw9MCl8MDtlOmZvcig7Oyl7aWYoKGItKG09YysyfDApfDApPD0xKXtmPTE7YnJlYWt9c3dpdGNoKGw9MHxmZVtjKzM+PjBdLDB8KGY9KEE9KGY9MHxmZVttPj4wXSk8PDI0Pj4yND09MCk/MHxYdFt3KygyNTUmbCk+PjBdOjB8ZjAoZixs''@;'; put 'put ''KSkpe2Nhc2UgMjM6Y2FzZSAxOTpjYXNlIDMwOmNhc2UgMzM6Y2FzZSAxNjpjYXNlIDE4OmNhc2UgMTA6Y2FzZSA5OmNhc2UgMTU6Y2FzZSAxNDpjYXNlIDE3OmNhc2UgMzU6Y2FzZSAzNDpjYXNlIDMyOmNhc2UgMzE6Y2FzZSAxMzpjYXNlIDI3OmNhc2UgMjQ6Y2FzZSAyNTpjPW07Y29udGlu''@;'; put 'put ''dWUgZTtjYXNlIDIxOmlmKEEmbDw8MjQ+PjI0PT05KXtrPTEyO2JyZWFrIGV9Yz1tO2NvbnRpbnVlIGU7Y2FzZSAyMjpjYXNlIDI2OmlmKCFBKXtrPTEyO2JyZWFrIGV9aWYobDw8MjQ+PjI0Pj0wKXtjPW07Y29udGludWUgZX1icmVhaztkZWZhdWx0OmlmKCFBKXtrPTEyO2JyZWFrIGV9fXN3''@;'; put 'put ''aXRjaChsPDwyND4+MjR8MCl7Y2FzZSA2NDpjYXNlIDM2OmM9bTticmVhaztkZWZhdWx0Oms9MTI7YnJlYWsgZX19cmV0dXJuIDEyPT0oMHxrKSYmKGFbcD4+Ml09bSxmPTApLDB8Zn0sZnVuY3Rpb24gdzFlKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAsdz0wLGI9''@;'; put 'put ''MCxrPTAsTT0wO2U6ZG97aWYoYz4+PjA8Zj4+PjApaWYoQT1jLE09Zi1BfDAsYj0wPT0oMSZNfDApLE0mPS0yLGs9MD09KDB8TSksTT1ifGs/ZjpjK018MCxifDFeayl7c3dpdGNoKChmPTB8ZmVbYysxPj4wXSk8PDI0Pj4yND8odz1tPTB8ZmVbYz4+MF0sbT0wfGYwKGYsbSkpOih3PW09MHxm''@;'; put 'put ''ZVtjPj4wXSxtPTB8WHRbbCs3MisoMjU1Jm0pPj4wXSksMHxtKXtjYXNlIDEyOmY9MHxZSygxMixsLGMrMnwwLE0scCk7YnJlYWsgZTtjYXNlIDEzOmY9MHxZSygxMyxsLGMrMnwwLE0scCk7YnJlYWsgZTtjYXNlIDI6aWYoKE0tKG09YysyfDApfDApPD0xKXtmPS0xO2JyZWFrIGV9c3dpdGNo''@;'; put 'put ''KDB8KGY9KGY9MHxmZVtjKzM+PjBdKTw8MjQ+PjI0PzB8ZjAoZiwwfGZlW20+PjBdKTowfFh0W2wrNzIrKDB8WHRbbT4+MF0pPj4wXSkpe2Nhc2UgMTY6Zj0wfEwxZShsLGMrNHwwLE0scCk7YnJlYWsgZTtjYXNlIDE1OmY9MHxHSyhsLGMrNHwwLE0scCk7YnJlYWsgZTtjYXNlIDc6Y2FzZSA2''@;'; put 'put ''OmNhc2UgNTpjYXNlIDI5OmNhc2UgMjQ6Y2FzZSAyMjphW3A+PjJdPWMsZj0yOTticmVhayBlO2RlZmF1bHQ6YVtwPj4yXT1tLGY9MDticmVhayBlfWNhc2UgOTppZigoYysyfDApPT0oMHxNKSl7YVtwPj4yXT1NLGY9LTE1O2JyZWFrIGV9QT03O2JyZWFrO2Nhc2UgMTA6Y2FzZSAyMTpBPTc7''@;'; put 'put ''YnJlYWs7Y2FzZSAzMDpmPTB8Y0wobCxjKzJ8MCxNLHApO2JyZWFrIGU7Y2FzZSAzNTphW3A+PjJdPWMrMixmPTM4O2JyZWFrIGU7Y2FzZSAyMDphW3A+PjJdPWMrMixmPTI1O2JyZWFrIGU7Y2FzZSA0OmlmKCgwfChmPU0tKG09YysyfDApfDApKTw9MSl7Zj0tMjY7YnJlYWsgZX1pZigwPT0o''@;'; put 'put ''MHxmZVtjKzM+PjBdKSYmOTM9PSgwfGZlW20+PjBdKSl7aWYoKDB8Zik8PTMpe2Y9LTE7YnJlYWsgZX1pZigwPT0oMHxmZVtjKzU+PjBdKSYmNjI9PSgwfGZlW2MrND4+MF0pKXthW3A+PjJdPWMrNixmPTM0O2JyZWFrIGV9fWFbcD4+Ml09bSxmPTI2O2JyZWFrIGU7Y2FzZSAzMTphW3A+PjJd''@;'; put 'put ''PWMrMixmPTIzO2JyZWFrIGU7Y2FzZSAzMjppZigoTS0obT1jKzJ8MCl8MCk8PTEpe2Y9LTI0O2JyZWFrIGV9c3dpdGNoKDB8KGY9KGY9MHxmZVtjKzM+PjBdKTw8MjQ+PjI0PzB8ZjAoZiwwfGZlW20+PjBdKTowfFh0W2wrNzIrKDB8WHRbbT4+MF0pPj4wXSkpe2Nhc2UgMzM6YVtwPj4yXT1j''@;'; put 'put ''KzQsZj0zNjticmVhayBlO2Nhc2UgMTU6YVtwPj4yXT1jKzQsZj0zNTticmVhayBlO2Nhc2UgMzQ6YVtwPj4yXT1jKzQsZj0zNzticmVhayBlO2Nhc2UgMzI6Y2FzZSAzNjpjYXNlIDM1OmNhc2UgMTE6Y2FzZSAyMTpjYXNlIDEwOmNhc2UgOTphW3A+PjJdPW0sZj0yNDticmVhayBlO2RlZmF1''@;'; put 'put ''bHQ6YVtwPj4yXT1tLGY9MDticmVhayBlfWNhc2UgMzY6YVtwPj4yXT1jKzIsZj0yMTticmVhayBlO2Nhc2UgMTE6YVtwPj4yXT1jKzIsZj0xNzticmVhayBlO2Nhc2UgMTk6Zj0wfE8xZShsLGMrMnwwLE0scCk7YnJlYWsgZTtjYXNlIDU6aWYoKE0tQXwwKTwyKXtmPS0yO2JyZWFrIGV9YVtw''@;'; put 'put ''Pj4yXT1jLGY9MDticmVhayBlO2Nhc2UgNjppZigoTS1BfDApPDMpe2Y9LTI7YnJlYWsgZX1hW3A+PjJdPWMsZj0wO2JyZWFrIGU7Y2FzZSA3OmlmKChNLUF8MCk8NCl7Zj0tMjticmVhayBlfWFbcD4+Ml09YyxmPTA7YnJlYWsgZTtjYXNlIDI0OmNhc2UgMjI6Zj0xOCxBPTYxO2JyZWFrO2Nh''@;'; put 'put ''c2UgMjM6Y2FzZSAyNzpjYXNlIDI2OmNhc2UgMjU6Zj0xOSxBPTYxO2JyZWFrO2Nhc2UgMjk6QT0yNTUmZixmPShtPTI1NSZ3KT4+PjUsKG09MTw8KDMxJm0pKSZhWzU2OTQwKygoZnxYdFsxNDM3ODgrQT4+MF08PDMpPDwyKT4+Ml0/KGY9MTgsQT02MSk6YVs1Njk0MCsoKFh0WzE0NDA0NCtB''@;'; put 'put ''Pj4wXTw8M3xmKTw8Mik+PjJdJm0/KGY9MTksQT02MSk6QT02NDticmVhaztkZWZhdWx0OkE9NjR9aWYoNz09KDB8QSkpe2I9TSxsPWwrNzJ8MCx3PWM7dDpmb3IoOzspe2lmKEE9dywoYi0odz13KzJ8MCl8MCk8PTEpe0E9Mjg7YnJlYWt9c3dpdGNoKG09MHxmZVt3Pj4wXSwwfChmPShmPTB8''@;'; put 'put ''ZmVbQSszPj4wXSk8PDI0Pj4yND8wfGYwKGYsbSk6MHxYdFtsKygyNTUmbSk+PjBdKSl7Y2FzZSAxMDpjYXNlIDIxOmNvbnRpbnVlIHQ7Y2FzZSA5OmJyZWFrO2RlZmF1bHQ6QT0yNzticmVhayB0fWlmKChBKzR8MCk9PSgwfE0pKXtBPTI3O2JyZWFrfX1pZigyNz09KDB8QSkpe2FbcD4+Ml09''@;'; put 'put ''dyxmPTE1O2JyZWFrfWlmKDI4PT0oMHxBKSl7YVtwPj4yXT13LGY9MTU7YnJlYWt9fWVsc2UgaWYoNjE9PSgwfEEpKXtrPWwrNzJ8MCxtPWMrMnwwO3Q6Zm9yKDs7KXtjPTI1NSZmO246Zm9yKDs7KXtpZigoMHwoYj1NLW18MCkpPD0xKXtBPTEwNDticmVhayB0fXN3aXRjaCh3PTB8ZmVbbT4+''@;'; put 'put ''MF0sMHwobD0oQT0wfGZlW20rMT4+MF0pPDwyND4+MjQ/MHxmMChBLHcpOjB8WHRbaysoMjU1JncpPj4wXSkpe2Nhc2UgNTpBPTczO2JyZWFrIHQ7Y2FzZSA2OkE9NzQ7YnJlYWsgdDtjYXNlIDc6QT03NjticmVhayB0O2Nhc2UgMTA6Y2FzZSA5OmNhc2UgMjE6Y2FzZSAzMDpjYXNlIDIwOmNh''@;'; put 'put ''c2UgMzY6Y2FzZSAzNTpjYXNlIDMyOmNhc2UgMTE6QT03ODticmVhayB0O2Nhc2UgMzQ6QT05NDticmVhayB0O2Nhc2UgMzM6QT05NzticmVhayB0O2Nhc2UgMTU6QT0xMDA7YnJlYWsgdDtjYXNlIDI5OmlmKCEoMTw8KDMxJihiPTI1NSZ3KSkmYVs1Njk0MCsoKGI+Pj41fFh0WzE0NDA0NCso''@;'; put 'put ''MjU1JkEpPj4wXTw8Myk8PDIpPj4yXSkpe0E9NzE7YnJlYWsgdH1icmVhaztjYXNlIDI3OmNhc2UgMjY6Y2FzZSAyNTpjYXNlIDI0OmNhc2UgMjI6YnJlYWs7Y2FzZSAyMzpzd2l0Y2goYj1tKzJ8MCw2MyZjKXtjYXNlIDQxOmY9MTksbT1iO2NvbnRpbnVlIHQ7Y2FzZSAxODpicmVhayBuO2Rl''@;'; put 'put ''ZmF1bHQ6bT1iO2NvbnRpbnVlIG59ZGVmYXVsdDpBPTEwMzticmVhayB0fW09bSsyfDB9aWYoKDB8KGw9TS1ifDApKTw9MSl7Zj0tMTticmVhayBlfXN3aXRjaChBPTB8ZmVbYj4+MF0sMHwodz0oZj0wfGZlW20rMz4+MF0pPDwyND4+MjQ/MHxmMChmLEEpOjB8WHRbaysoMjU1JkEpPj4wXSkp''@;'; put 'put ''e2Nhc2UgNTpBPTg5O2JyZWFrIHQ7Y2FzZSA2OkE9OTA7YnJlYWsgdDtjYXNlIDc6QT05MjticmVhayB0O2Nhc2UgMjk6aWYoISgxPDwoMzEmKGM9MjU1JkEpKSZhWzU2OTQwKygoYz4+PjV8WHRbMTQ0MDQ0KygyNTUmZik+PjBdPDwzKTw8Mik+PjJdKSl7QT04NzticmVhayB0fWJyZWFrO2Nh''@;'; put 'put ''c2UgMjc6Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMjpicmVhaztkZWZhdWx0OmY9MTksbT1iO2NvbnRpbnVlIHR9Zj00MSxtPW0rNHwwfXN3aXRjaCgwfEEpe2Nhc2UgNzE6Y2FzZSA3MzpjYXNlIDEwMzphW3A+PjJdPW0sZj0wO2JyZWFrIGU7Y2FzZSA3NDppZigoMHxiKTwzKXtm''@;'; put 'put ''PS0yO2JyZWFrIGV9YVtwPj4yXT1tLGY9MDticmVhayBlO2Nhc2UgNzY6aWYoKDB8Yik8NCl7Zj0tMjticmVhayBlfWFbcD4+Ml09bSxmPTA7YnJlYWsgZTtjYXNlIDc4OmFbcD4+Ml09bTticmVhayBlO2Nhc2UgODc6Y2FzZSA4OTphW3A+PjJdPWIsZj0wO2JyZWFrIGU7Y2FzZSA5MDppZigo''@;'; put 'put ''MHxsKTwzKXtmPS0yO2JyZWFrIGV9YVtwPj4yXT1iLGY9MDticmVhayBlO2Nhc2UgOTI6aWYoKDB8bCk8NCl7Zj0tMjticmVhayBlfWFbcD4+Ml09YixmPTA7YnJlYWsgZTtjYXNlIDk0OmlmKDE5PT0oMHxmKSl7YVtwPj4yXT1tLGY9MDticmVhayBlfWFbcD4+Ml09bSsyLGY9MzI7YnJlYWsg''@;'; put 'put ''ZTtjYXNlIDk3OmlmKDE5PT0oMHxmKSl7YVtwPj4yXT1tLGY9MDticmVhayBlfWFbcD4+Ml09bSsyLGY9MzE7YnJlYWsgZTtjYXNlIDEwMDppZigxOT09KDB8Zikpe2FbcD4+Ml09bSxmPTA7YnJlYWsgZX1hW3A+PjJdPW0rMixmPTMwO2JyZWFrIGU7Y2FzZSAxMDQ6Zj0wLWZ8MDticmVhayBl''@;'; put 'put ''fX1lbHNlIGlmKDY0PT0oMHxBKSl7YVtwPj4yXT1jLGY9MDticmVha319ZWxzZSBmPS0xO2Vsc2UgZj0tNH13aGlsZSgwKTtyZXR1cm4gMHxmfSxmdW5jdGlvbiBOSyhsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTA7ZTpkb3tpZihjPj4+MDxmPj4+MClp''@;'; put 'put ''ZihtPWMsQT1mLW18MCxiPTA9PSgxJkF8MCksQSY9LTIsdz0wPT0oMHxBKSxBPWJ8dz9mOmMrQXwwLGJ8MV53KXtzd2l0Y2goMHwoZj0oZj0wfGZlW2MrMT4+MF0pPDwyND4+MjQ/MHxmMChmLDB8ZmVbYz4+MF0pOjB8WHRbbCs3MisoMHxYdFtjPj4wXSk+PjBdKSl7Y2FzZSAyOmY9MHxhNChs''@;'; put 'put ''LGMrMnwwLEEscCk7YnJlYWsgZTtjYXNlIDM6Zj0wfHVMKGwsYysyfDAsQSxwKTticmVhayBlO2Nhc2UgOTppZigoQS0obT1jKzJ8MCl8MCk8PTEpe2Y9LTM7YnJlYWsgZX1mPShmPTB8ZmVbYyszPj4wXSk8PDI0Pj4yND8wfGYwKGYsMHxmZVttPj4wXSk6MHxYdFtsKzcyKygwfFh0W20+PjBd''@;'; put 'put ''KT4+MF0sYVtwPj4yXT0xMD09KDB8Zik/Yys0fDA6bSxmPTc7YnJlYWsgZTtjYXNlIDEwOmFbcD4+Ml09YysyLGY9NzticmVhayBlO2Nhc2UgNDppZigoQS0obT1jKzJ8MCl8MCk8PTEpe2Y9LTU7YnJlYWsgZX1pZigwPT0oMHxmZVtjKzM+PjBdKSYmOTM9PSgwfGZlW20+PjBdKSl7aWYoKEEt''@;'; put 'put ''KGY9Yys0fDApfDApPD0xKXtmPS01O2JyZWFrIGV9aWYoMD09KDB8ZmVbYys1Pj4wXSkmJjYyPT0oMHxmZVtmPj4wXSkpe2FbcD4+Ml09ZixmPTA7YnJlYWsgZX1mPUF9ZWxzZSBmPUE7YnJlYWs7Y2FzZSA1OmlmKCgoZj1BKS1tfDApPDIpe2Y9LTI7YnJlYWsgZX1tPWMrMnwwO2JyZWFrO2Nh''@;'; put 'put ''c2UgNjppZigoKGY9QSktbXwwKTwzKXtmPS0yO2JyZWFrIGV9bT1jKzN8MDticmVhaztjYXNlIDc6aWYoKChmPUEpLW18MCk8NCl7Zj0tMjticmVhayBlfW09Yys0fDA7YnJlYWs7Y2FzZSA4OmNhc2UgMTpjYXNlIDA6YVtwPj4yXT1jLGY9MDticmVhayBlO2RlZmF1bHQ6bT1jKzJ8MCxmPUF9''@;'; put 'put ''dz1sKzcyfDAsbD1tO3Q6Zm9yKDs7KXtpZigoMHwoYz1mLWx8MCkpPD0xKXttPTUyO2JyZWFrfXN3aXRjaChBPTB8ZmVbbD4+MF0sMHwobT0obT0wfGZlW2wrMT4+MF0pPDwyND4+MjQ/MHxmMChtLEEpOjB8WHRbdysoMjU1JkEpPj4wXSkpe2Nhc2UgMTA6Y2FzZSA5OmNhc2UgODpjYXNlIDE6''@;'; put 'put ''Y2FzZSAwOmNhc2UgMjpjYXNlIDM6bT01MDticmVhayB0O2Nhc2UgNTpkZWZhdWx0Omw9bCsyfDA7Y29udGludWUgdDtjYXNlIDY6aWYoKDB8Yyk8Myl7bT0zODticmVhayB0fWw9bCszfDA7Y29udGludWUgdDtjYXNlIDc6aWYoKDB8Yyk8NCl7bT00MTticmVhayB0fWw9bCs0fDA7Y29udGlu''@;'; put 'put ''dWUgdDtjYXNlIDQ6aWYoKDB8Yyk8PTMpe209NTA7YnJlYWsgdH1pZihtPWwrMnwwLDB8ZmVbbCszPj4wXSl7bD1tO2NvbnRpbnVlIHR9aWYoOTMhPSgwfGZlW20+PjBdKSl7bD1tO2NvbnRpbnVlIHR9aWYoKDB8Yyk8PTUpe209NTA7YnJlYWsgdH1pZihBPWwrNHwwLDB8ZmVbbCs1Pj4wXSl7''@;'; put 'put ''bD1tO2NvbnRpbnVlIHR9aWYoNjI9PSgwfGZlW0E+PjBdKSl7bT00OTticmVhayB0fWw9bTtjb250aW51ZSB0fX1pZigzOD09KDB8bSkpe2FbcD4+Ml09bCxmPTY7YnJlYWt9aWYoNDE9PSgwfG0pKXthW3A+PjJdPWwsZj02O2JyZWFrfWlmKDQ5PT0oMHxtKSl7YVtwPj4yXT1BLGY9MDticmVh''@;'; put 'put ''a31pZig1MD09KDB8bSkpe2FbcD4+Ml09bCxmPTY7YnJlYWt9aWYoNTI9PSgwfG0pKXthW3A+PjJdPWwsZj02O2JyZWFrfX1lbHNlIGY9LTE7ZWxzZSBmPS00fXdoaWxlKDApO3JldHVybiAwfGZ9LGZ1bmN0aW9uIFZLKGwsYyxmLHApe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIG09MCxBPTAs''@;'; put 'put ''dz0wLGI9MDtlOmRve2lmKGM+Pj4wPGY+Pj4wKWlmKG09YyxBPWYtbXwwLGI9MD09KDEmQXwwKSxBJj0tMix3PTA9PSgwfEEpLEE9Ynx3P2Y6YytBfDAsYnwxXncpe3N3aXRjaCgwfChmPShmPTB8ZmVbYysxPj4wXSk8PDI0Pj4yND8wfGYwKGYsMHxmZVtjPj4wXSk6MHxYdFtsKzcyKygwfFh0''@;'; put 'put ''W2M+PjBdKT4+MF0pKXtjYXNlIDQ6aWYoKEEtKG09YysyfDApfDApPD0xKXtmPS0xO2JyZWFrIGV9aWYoMD09KDB8ZmVbYyszPj4wXSkmJjkzPT0oMHxmZVttPj4wXSkpe2lmKChBLShmPWMrNHwwKXwwKTw9MSl7Zj0tMTticmVhayBlfWlmKDA9PSgwfGZlW2MrNT4+MF0pJiY2Mj09KDB8ZmVb''@;'; put 'put ''Zj4+MF0pKXthW3A+PjJdPWMrNixmPTQwO2JyZWFrIGV9fWJyZWFrO2Nhc2UgOTppZigoQS0obT1jKzJ8MCl8MCk8PTEpe2Y9LTE7YnJlYWsgZX1mPShmPTB8ZmVbYyszPj4wXSk8PDI0Pj4yND8wfGYwKGYsMHxmZVttPj4wXSk6MHxYdFtsKzcyKygwfFh0W20+PjBdKT4+MF0sYVtwPj4yXT0x''@;'; put 'put ''MD09KDB8Zik/Yys0fDA6bSxmPTc7YnJlYWsgZTtjYXNlIDEwOmFbcD4+Ml09YysyLGY9NzticmVhayBlO2Nhc2UgNTppZigoKGY9QSktbXwwKTwyKXtmPS0yO2JyZWFrIGV9bT1jKzJ8MCxBPWY7YnJlYWs7Y2FzZSA2OmlmKCgoZj1BKS1tfDApPDMpe2Y9LTI7YnJlYWsgZX1tPWMrM3wwLEE9''@;'; put 'put ''ZjticmVhaztjYXNlIDc6aWYoKChmPUEpLW18MCk8NCl7Zj0tMjticmVhayBlfW09Yys0fDAsQT1mO2JyZWFrO2Nhc2UgODpjYXNlIDE6Y2FzZSAwOmFbcD4+Ml09YyxmPTA7YnJlYWsgZTtkZWZhdWx0Om09YysyfDB9dz1sKzcyfDAsbD1tO3Q6Zm9yKDs7KXtpZigoMHwoYz1BLWx8MCkpPD0x''@;'; put 'put ''KXttPTQwO2JyZWFrfXN3aXRjaChtPTB8ZmVbbD4+MF0sMHwoZj0oZj0wfGZlW2wrMT4+MF0pPDwyND4+MjQ/MHxmMChmLG0pOjB8WHRbdysoMjU1Jm0pPj4wXSkpe2Nhc2UgMTA6Y2FzZSA5OmNhc2UgODpjYXNlIDE6Y2FzZSAwOmNhc2UgNDptPTM4O2JyZWFrIHQ7Y2FzZSA2OmlmKCgwfGMp''@;'; put 'put ''PDMpe209MzU7YnJlYWsgdH1mPTM7YnJlYWs7Y2FzZSA3OmlmKCgwfGMpPDQpe209Mzc7YnJlYWsgdH1mPTQ7YnJlYWs7ZGVmYXVsdDpmPTJ9bD1sK2Z8MH1pZigzNT09KDB8bSkpe2FbcD4+Ml09bCxmPTY7YnJlYWt9aWYoMzc9PSgwfG0pKXthW3A+PjJdPWwsZj02O2JyZWFrfWlmKDM4PT0o''@;'; put 'put ''MHxtKSl7YVtwPj4yXT1sLGY9NjticmVha31pZig0MD09KDB8bSkpe2FbcD4+Ml09bCxmPTY7YnJlYWt9fWVsc2UgZj0tMTtlbHNlIGY9LTR9d2hpbGUoMCk7cmV0dXJuIDB8Zn0sZnVuY3Rpb24gYjFlKGwsYyxmLHApe3B8PTA7dmFyIHcsbT0wLEE9MCxiPTAsaz0wO2I9MD09KDEmKGI9KGZ8''@;'; put 'put ''PTApLShjfD0wKXwwKXwwKT9mOmMrKC0yJmIpfDAsdz03MisobHw9MCl8MCxBPTAsZj1jO2U6Zm9yKDs7KXtpZigoMHwobT1iLWZ8MCkpPD0xKXtmPS0xO2JyZWFrfXN3aXRjaChjPTB8ZmVbZj4+MF0sMHwobD0obD0wfGZlW2YrMT4+MF0pPDwyND4+MjQ/MHxmMChsLGMpOjB8WHRbdysoMjU1''@;'; put 'put ''JmMpPj4wXSkpe2Nhc2UgODpjYXNlIDE6Y2FzZSAwOms9MTI7YnJlYWsgZTtjYXNlIDU6ZGVmYXVsdDpmPWYrMnwwLEE9bT1BO2NvbnRpbnVlIGU7Y2FzZSA2OmlmKCgwfG0pPDMpe2Y9LTI7YnJlYWsgZX1mPWYrM3wwLEE9bT1BO2NvbnRpbnVlIGU7Y2FzZSA3OmlmKCgwfG0pPDQpe2Y9LTI7''@;'; put 'put ''YnJlYWsgZX1mPWYrNHwwLEE9bT1BO2NvbnRpbnVlIGU7Y2FzZSAyOmlmKChiLShsPWYrMnwwKXwwKTw9MSl7Zj0tMTticmVhayBlfWlmKDB8ZmVbZiszPj4wXSl7Zj1sLEE9bT1BO2NvbnRpbnVlIGV9aWYoMzMhPSgwfGZlW2w+PjBdKSl7Zj1sLEE9bT1BO2NvbnRpbnVlIGV9aWYoKGItKGw9''@;'; put 'put ''Zis0fDApfDApPD0xKXtmPS0xO2JyZWFrIGV9aWYoMHxmZVtmKzU+PjBdKXtmPWwsQT1tPUE7Y29udGludWUgZX1BPUErKDEmKG09OTE9PSgwfGZlW2w+PjBdKSkpfDAsZj1tP2YrNnwwOmw7Y29udGludWUgZTtjYXNlIDQ6aWYoKGItKGw9ZisyfDApfDApPD0xKXtmPS0xO2JyZWFrIGV9aWYo''@;'; put 'put ''MHxmZVtmKzM+PjBdKXtmPWwsQT1tPUE7Y29udGludWUgZX1pZig5MyE9KDB8ZmVbbD4+MF0pKXtmPWwsQT1tPUE7Y29udGludWUgZX1pZigoYi0obD1mKzR8MCl8MCk8PTEpe2Y9LTE7YnJlYWsgZX1pZigwfGZlW2YrNT4+MF0pe2Y9bCxBPW09QTtjb250aW51ZSBlfWlmKDYyIT0oMHxmZVts''@;'; put 'put ''Pj4wXSkpe2Y9bCxBPW09QTtjb250aW51ZSBlfWlmKGY9Zis2fDAsIUEpe2s9MjY7YnJlYWsgZX1BPUErLTF8MDtjb250aW51ZSBlfX1yZXR1cm4gMTI9PSgwfGspPyhhW3A+PjJdPWYsZj0wKToyNj09KDB8aykmJihhW3A+PjJdPWYsZj00MiksMHxmfSxmdW5jdGlvbiBFMShsLGMsZixwKXts''@;'; put 'put ''fD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTAsaz0wO2Rve2lmKGM+Pj4wPGY+Pj4wKWlmKCgoYj1mKS1jfDApPjEpe2s9bCs3MnwwLHc9YztlOmZvcig7Oyl7aWYoKGItd3wwKTw9MSl7QT0zMDticmVha31zd2l0Y2goQT0wfGZlW3c+PjBdLDB8KG09KG09MHxmZVt3KzE+''@;'; put 'put ''PjBdKTw8MjQ+PjI0PzB8ZjAobSxBKTowfFh0W2srKDI1NSZBKT4+MF0pKXtjYXNlIDM6QT0xMTticmVhayBlO2Nhc2UgMjpBPTE0O2JyZWFrIGU7Y2FzZSAxMDpBPTE1O2JyZWFrIGU7Y2FzZSA5OkE9MTg7YnJlYWsgZTtjYXNlIDIxOkE9MjU7YnJlYWsgZTtjYXNlIDU6ZGVmYXVsdDptPTI7''@;'; put 'put ''YnJlYWs7Y2FzZSA2Om09MzticmVhaztjYXNlIDc6bT00fXc9dyttfDB9aWYoMTE9PSgwfEEpKXtpZigoMHx3KT09KDB8Yykpe209MHx1TChsLGMrMnwwLGYscCk7YnJlYWt9YVtwPj4yXT13LG09NjticmVha31pZigxND09KDB8QSkpe2FbcD4+Ml09dyxtPTA7YnJlYWt9aWYoMTU9PSgwfEEp''@;'; put 'put ''KXtpZigoMHx3KT09KDB8Yykpe2FbcD4+Ml09YysyLG09NzticmVha31hW3A+PjJdPXcsbT02O2JyZWFrfWlmKDE4PT0oMHxBKSl7aWYoKDB8dykhPSgwfGMpKXthW3A+PjJdPXcsbT02O2JyZWFrfWlmKChiLSh3PWMrMnwwKXwwKTw9MSl7bT0tMzticmVha31BPTB8ZmVbdz4+MF0sbT0obT0w''@;'; put 'put ''fGZlW2MrMz4+MF0pPDwyND4+MjQ/MHxmMChtLEEpOjB8WHRbaysoMjU1JkEpPj4wXSxhW3A+PjJdPTEwPT0oMHxtKT9jKzR8MDp3LG09NzticmVha31pZigyNT09KDB8QSkpe2lmKCgwfHcpPT0oMHxjKSl7YVtwPj4yXT1jKzIsbT0zOTticmVha31hW3A+PjJdPXcsbT02O2JyZWFrfWlmKDMw''@;'; put 'put ''PT0oMHxBKSl7YVtwPj4yXT13LG09NjticmVha319ZWxzZSBtPS0xO2Vsc2UgbT0tNH13aGlsZSgwKTtyZXR1cm4gMHxtfSxmdW5jdGlvbiBqSyhsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciBtPTAsQT0wLHc9MCxiPTAsaz0wO2Rve2lmKGM+Pj4wPGY+Pj4wKWlmKCgoYj1mKS1j''@;'; put 'put ''fDApPjEpe2s9bCs3MnwwLHc9YztlOmZvcig7Oyl7aWYoKGItd3wwKTw9MSl7QT0yOTticmVha31zd2l0Y2goQT0wfGZlW3c+PjBdLDB8KG09KG09MHxmZVt3KzE+PjBdKTw8MjQ+PjI0PzB8ZjAobSxBKTowfFh0W2srKDI1NSZBKT4+MF0pKXtjYXNlIDM6QT0xMTticmVhayBlO2Nhc2UgMzA6''@;'; put 'put ''QT0xNDticmVhayBlO2Nhc2UgMTA6QT0xNzticmVhayBlO2Nhc2UgOTpBPTIwO2JyZWFrIGU7Y2FzZSA1OmRlZmF1bHQ6bT0yO2JyZWFrO2Nhc2UgNjptPTM7YnJlYWs7Y2FzZSA3Om09NH13PXcrbXwwfWlmKDExPT0oMHxBKSl7aWYoKDB8dyk9PSgwfGMpKXttPTB8dUwobCxjKzJ8MCxmLHAp''@;'; put 'put ''O2JyZWFrfWFbcD4+Ml09dyxtPTY7YnJlYWt9aWYoMTQ9PSgwfEEpKXtpZigoMHx3KT09KDB8Yykpe209MjI9PSgwfChtPTB8Y0wobCxjKzJ8MCxmLHApKSk/MDptO2JyZWFrfWFbcD4+Ml09dyxtPTY7YnJlYWt9aWYoMTc9PSgwfEEpKXtpZigoMHx3KT09KDB8Yykpe2FbcD4+Ml09YysyLG09''@;'; put 'put ''NzticmVha31hW3A+PjJdPXcsbT02O2JyZWFrfWlmKDIwPT0oMHxBKSl7aWYoKDB8dykhPSgwfGMpKXthW3A+PjJdPXcsbT02O2JyZWFrfWlmKChiLSh3PWMrMnwwKXwwKTw9MSl7bT0tMzticmVha31BPTB8ZmVbdz4+MF0sbT0obT0wfGZlW2MrMz4+MF0pPDwyND4+MjQ/MHxmMChtLEEpOjB8''@;'; put 'put ''WHRbaysoMjU1JkEpPj4wXSxhW3A+PjJdPTEwPT0oMHxtKT9jKzR8MDp3LG09NzticmVha31pZigyOT09KDB8QSkpe2FbcD4+Ml09dyxtPTY7YnJlYWt9fWVsc2UgbT0tMTtlbHNlIG09LTR9d2hpbGUoMCk7cmV0dXJuIDB8bX0sZnVuY3Rpb24gVTllKGwsYyxmLHApe2x8PTAscHw9MDt2YXIg''@;'; put 'put ''bSxBPTA7Zm9yKG09Znw9MCxsPWN8PTA7Oyl7aWYoISgoYz0wfGZlW3A+PjBdKTw8MjQ+PjI0KSl7QT03O2JyZWFrfWlmKChtLWx8MCk8Mil7bD0wO2JyZWFrfWlmKDB8ZmVbbCsxPj4wXSl7bD0wO2JyZWFrfWlmKCgwfGZlW2w+PjBdKSE9Yzw8MjQ+PjI0KXtsPTA7YnJlYWt9cD1wKzF8MCxs''@;'; put 'put ''PWwrMnwwfXJldHVybiA3PT0oMHxBKSYmKGw9KDB8bCk9PSgwfGYpJjEpLDB8bH0sZnVuY3Rpb24gQzFlKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBSLG09MCxBPTAsdz0wLGI9MCxrPTAsTT0wLEQ9MDtSPTcyKyhsfD0wKXwwLE09MCxEPTAsbD0xO2U6Zm9yKDs7KXN3aXRjaChiPTB8''@;'; put 'put ''ZmVbKGs9YysyfDApPj4wXSwwfChtPSh3PShtPTB8ZmVbKEE9YyszfDApPj4wXSk8PDI0Pj4yND09MCk/MHxYdFtSKygyNTUmYik+PjBdOjB8ZjAobSxiKSkpe2Nhc2UgNTpjYXNlIDI0OmNhc2UgMjI6Y2FzZSAyOTppZigwfGwpe2M9ayxsPUE9bCxEPXc9RCxNPWI9TTtjb250aW51ZSBlfWlm''@;'; put 'put ''KCgwfEQpPj0oMHxmKSl7bD0xLGM9ayxEPXc9RCxNPWI9TTtjb250aW51ZSBlfWFbcCsoRDw8NCk+PjJdPWssZmVbcCsoRDw8NCkrMTI+PjBdPTEsbD0xLGM9ayxEPXc9RCxNPWI9TTtjb250aW51ZSBlO2Nhc2UgNjppZigwfGwpe2M9QSxsPXc9bCxEPWI9RCxNPWs9TTtjb250aW51ZSBlfWlm''@;'; put 'put ''KCgwfEQpPj0oMHxmKSl7bD0xLGM9QSxEPWI9RCxNPWs9TTtjb250aW51ZSBlfWFbcCsoRDw8NCk+PjJdPWssZmVbcCsoRDw8NCkrMTI+PjBdPTEsbD0xLGM9QSxEPWI9RCxNPWs9TTtjb250aW51ZSBlO2Nhc2UgNzpsfHwoKDB8RCk8KDB8ZikmJihhW3ArKEQ8PDQpPj4yXT1rLGZlW3ArKEQ8''@;'; put 'put ''PDQpKzEyPj4wXT0xKSxsPTEpLGM9Yys0fDAsRD1iPUQsTT1rPU07Y29udGludWUgZTtjYXNlIDEyOmlmKDIhPSgwfGwpKXtpZigoMHxEKT49KDB8Zikpe009MTIsbD0yLGM9ayxEPWI9RDtjb250aW51ZSBlfWFbcCsoRDw8NCkrND4+Ml09Yys0LE09MTIsbD0yLGM9ayxEPWI9RDtjb250aW51''@;'; put 'put ''ZSBlfWlmKDEyIT0oMHxNKSl7bD0yLGM9ayxEPXc9RCxNPWI9TTtjb250aW51ZSBlfSgwfEQpPCgwfGYpJiYoYVtwKyhEPDw0KSs4Pj4yXT1rKSxNPTEyLEQ9RCsxfDAsbD0wLGM9aztjb250aW51ZSBlO2Nhc2UgMTM6aWYoMiE9KDB8bCkpe2lmKCgwfEQpPj0oMHxmKSl7TT0xMyxsPTIsYz1r''@;'; put 'put ''LEQ9Yj1EO2NvbnRpbnVlIGV9YVtwKyhEPDw0KSs0Pj4yXT1jKzQsTT0xMyxsPTIsYz1rLEQ9Yj1EO2NvbnRpbnVlIGV9aWYoMTMhPSgwfE0pKXtsPTIsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9KDB8RCk8KDB8ZikmJihhW3ArKEQ8PDQpKzg+PjJdPWspLE09MTMsRD1EKzF8MCxsPTAs''@;'; put 'put ''Yz1rO2NvbnRpbnVlIGU7Y2FzZSAzOmlmKCgwfEQpPj0oMHxmKSl7Yz1rLGw9QT1sLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9ZmVbcCsoRDw8NCkrMTI+PjBdPTAsYz1rLGw9QT1sLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGU7Y2FzZSAyMTpzd2l0Y2goMHxsKXtjYXNlIDE6bD0wLGM9ayxEPXc9''@;'; put 'put ''RCxNPWI9TTtjb250aW51ZSBlO2Nhc2UgMjpicmVhaztkZWZhdWx0OmM9ayxsPUE9bCxEPXc9RCxNPWI9TTtjb250aW51ZSBlfWlmKCgwfEQpPj0oMHxmKSl7bD0yLGM9ayxEPXc9RCxNPWI9TTtjb250aW51ZSBlfWlmKCEoMHxmZVsoQT1wKyhEPDw0KSsxMnwwKT4+MF0pKXtsPTIsYz1rLEQ9''@;'; put 'put ''dz1ELE09Yj1NO2NvbnRpbnVlIGV9ZG97aWYodyYoMHxrKSE9KDB8YVtwKyhEPDw0KSs0Pj4yXSkmYjw8MjQ+PjI0PT0zMil7aWYobD0wfGZlW2MrND4+MF0sKG09MHxmZVtjKzU+PjBdKTw8MjQ+PjI0KWw9MHxmMChtLGwpO2Vsc2V7aWYobDw8MjQ+PjI0PT0zMilicmVhaztsPTB8WHRbUiso''@;'; put 'put ''MjU1JmwpPj4wXX1pZigoMHxsKSE9KDB8TSkpe2w9MixjPWssRD13PUQsTT1iPU07Y29udGludWUgZX19fXdoaWxlKDApO2ZlW0E+PjBdPTAsbD0yLGM9ayxEPXc9RCxNPWI9TTtjb250aW51ZSBlO2Nhc2UgMTA6Y2FzZSA5OnN3aXRjaCgwfGwpe2Nhc2UgMTpsPTAsYz1rLEQ9dz1ELE09Yj1N''@;'; put 'put ''O2NvbnRpbnVlIGU7Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6Yz1rLGw9QT1sLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9aWYoKDB8RCk+PSgwfGYpKXtsPTIsYz1rLEQ9dz1ELE09Yj1NO2NvbnRpbnVlIGV9ZmVbcCsoRDw8NCkrMTI+PjBdPTAsbD0yLGM9ayxEPXc9RCxNPWI9TTtjb250aW51ZSBl''@;'; put 'put ''O2Nhc2UgMTc6Y2FzZSAxMTppZigyPT0oMHxsKSl7bD0yLGM9ayxEPXc9RCxNPWI9TTtjb250aW51ZSBlfWJyZWFrIGU7ZGVmYXVsdDpjPWssbD1BPWwsRD13PUQsTT1iPU07Y29udGludWUgZX1yZXR1cm4gMHxEfSxmdW5jdGlvbiBicChsLGMsZixwKXtwfD0wO3ZhciBBLHcsbT0wLGI9MDt3''@;'; put 'put ''PShmfD0wKS0yfDAsQT03MisobHw9MCl8MCxmPWN8PTA7ZTpmb3IoOzspe2lmKCh3LShtPWYrMnwwKXwwKTw9MSl7Zj0xO2JyZWFrfXN3aXRjaChjPTB8ZmVbbT4+MF0sMHwoZj0obD0oZj0wfGZlW2YrMz4+MF0pPDwyND4+MjQ9PTApPzB8WHRbQSsoMjU1JmMpPj4wXTowfGYwKGYsYykpKXtj''@;'; put 'put ''YXNlIDIzOmNhc2UgMTk6Y2FzZSAzMDpjYXNlIDMzOmNhc2UgMTY6Y2FzZSAxODpjYXNlIDEwOmNhc2UgOTpjYXNlIDE1OmNhc2UgMTQ6Y2FzZSAxNzpjYXNlIDM1OmNhc2UgMzQ6Y2FzZSAzMjpjYXNlIDMxOmNhc2UgMTM6Y2FzZSAyNzpjYXNlIDI0OmNhc2UgMjU6Zj1tO2NvbnRpbnVlIGU7''@;'; put 'put ''Y2FzZSAyMTppZihsJmM8PDI0Pj4yND09OSl7Yj0xMjticmVhayBlfWY9bTtjb250aW51ZSBlO2Nhc2UgMjI6Y2FzZSAyNjppZighbCl7Yj0xMjticmVhayBlfWlmKGM8PDI0Pj4yND49MCl7Zj1tO2NvbnRpbnVlIGV9YnJlYWs7ZGVmYXVsdDppZighbCl7Yj0xMjticmVhayBlfX1zd2l0Y2go''@;'; put 'put ''Yzw8MjQ+PjI0fDApe2Nhc2UgNjQ6Y2FzZSAzNjpmPW07YnJlYWs7ZGVmYXVsdDpiPTEyO2JyZWFrIGV9fXJldHVybiAxMj09KDB8YikmJihhW3A+PjJdPW0sZj0wKSwwfGZ9LGZ1bmN0aW9uIE5QKGwsYyxmLHApe2x8PTAsY3w9MCxsPTA9PSgwfChmfD0wKSk7ZG97aWYoYyl7aWYobCl7RnQo''@;'; put 'put ''YyksbD0wO2JyZWFrfWw9MHxVYShjLGYpO2JyZWFrfWw9bD8wOjB8RjAoZil9d2hpbGUoMCk7cmV0dXJuIDB8bH0saDAsdFcsZnVuY3Rpb24gYmxlKGwsYyxmLHApe2x8PTAscHw9MDt2YXIgbT0wLEE9MCx3PTAsYj0wO3c9MD09KDB8KHA9MHxhWyhmfD0wKT4+Ml0pKSwobD0wfGFbKGN8PTAp''@;'; put 'put ''Pj4yXSk/dz9sPTE6KGw9MHxaaShsLHApKXx8KGI9NSk6dz9iPTU6bD0tMTtkb3tpZig1PT0oMHxiKSl7aWYodz0wPT0oMHwocD0wfGFbZis0Pj4yXSkpLGw9MHxhW2MrND4+Ml0pe2lmKHcpe2w9MTticmVha31pZigwfChsPTB8WmkobCxwKSkpYnJlYWt9ZWxzZSBpZighdyl7bD0tMTticmVh''@;'; put 'put ''a30obD0oMTI3JmFbYysyND4+Ml0pLSgxMjcmYVtmKzI0Pj4yXSl8MCl8fChsPShBPStfW2MrMTY+PjNdKTwobT0rX1tmKzE2Pj4zXSk/LTE6QT5tJjEpfX13aGlsZSgwKTtyZXR1cm4gMHxsfSxmdW5jdGlvbiBBRyhsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgbT0wO3JldHVybiBtPTB8''@;'; put 'put ''ZnVuY3Rpb24geV8obCl7dmFyIGM7cmV0dXJuIDB8KGw9MHxtaVs2MyYoZmVbMjMyKyhsfD0wKT4+MF08PDI0Pj4yND8zODozNyldKGwrMTQ4fDAsbCsxNDR8MCwwfGFbKGM9bCsyMjh8MCk+PjJdKT8wOjB8SG0obCwwfGFbYz4+Ml0pKX0obHw9MCksbXx8KGFbbCsyNzY+PjJdPTU3LG09MHxz''@;'; put 'put ''QShsLGMsZixwKSksMHxtfSxzQSx3XyxmdW5jdGlvbiBVQihsLGMsZixwKXtsfD0wLGZ8PTAscHw9MDt2YXIgQSxtPTA7cmV0dXJuIEE9bGUsbGU9bGUrMTZ8MCxhWyhtPUEpPj4yXT1jfD0wLDAhPSgwfChjPTB8aEEobCwwfGFbbCsxNDQ+PjJdLG0sZixwLDA9PSgwfGZlW2wrNDgwPj4wXSkm''@;'; put 'put ''MSkpKXwwPT0oMHwobT0wfGFbbT4+Ml0pKXx8KGFbbCsyNzY+PjJdPTU3LGM9MHxzQShsLG0sZixwKSksbGU9QSwwfGN9LGZ1bmN0aW9uIE1fKGwsYyxmLHApe2N8PTAsZnw9MCxwfD0wO3ZhciBrLE0sRyxxLG09MCxBPTAsdz0wLGI9MCxEPTAsUj0wLHBlPTAsZ2U9MDtxPWxlLGxlPWxlKzE2''@;'; put 'put ''fDAsRz1xLE09MHxhWyhrPTI5NisobHw9MCl8MCk+PjJdO2Rve2lmKE0pe2lmKG09KGI9MHxhWyhBPTQrKEQ9MHxhW00rMTI+PjJdKXwwKT4+Ml0pKygwfGFbKHc9RCsxMnwwKT4+Ml0pfDAsYj1iKygwfGFbRCs4Pj4yXSl8MCxhW0c+PjJdPW0sMHxmZVsoUj1EKzMzfDApPj4wXT8ocGU9MHxx''@;'; put 'put ''MFsxMjcmYVsocGU9MHxhWyhnZT1sKzIyNHwwKT4+Ml0pPj4yXV0ocGUsbSxiLEcpLG09MHx1QShsLDB8YVtnZT4+Ml0sbSxiLHBlLDB8YVtHPj4yXSxHLDApKTptPTB8Qm0obCwwfGFbTSsxNj4+Ml0sMHxhW2wrMjI0Pj4yXSxtLGIsRywwKSwhbSl7aWYoKDB8YikhPSgwfChtPTB8YVtHPj4y''@;'; put 'put ''XSkpJiYzPT0oMHxhW2wrNDc2Pj4yXSkpe2Fbdz4+Ml09bS0oMHxhW0E+PjJdKSxtPTA7YnJlYWt9aWYoZmVbRCszMj4+MF09MCxhW2s+PjJdPWFbKGdlPU0rOHwwKT4+Ml0sYVtnZT4+Ml09YVsobT1sKzMwMHwwKT4+Ml0sYVttPj4yXT1NLG09bCsyNzZ8MCwwfGZlW1I+PjBdKXthW20+PjJd''@;'; put 'put ''PTU3LG09MHxxMFsxMjcmYVsobT0wfGFbKGdlPWwrMTQ0fDApPj4yXSk+PjJdXShtLGMsZixHKSxtPTB8dUEobCwwfGFbZ2U+PjJdLGMsZixtLDB8YVtHPj4yXSxwLDA9PSgwfGZlW2wrNDgwPj4wXSkmMSk7YnJlYWt9YVttPj4yXT01OCxtPTB8Qm0obCwwIT0oMHxhW2wrNDcyPj4yXSkmMSww''@;'; put 'put ''fGFbbCsxNDQ+PjJdLGMsZixwLDA9PSgwfGZlW2wrNDgwPj4wXSkmMSk7YnJlYWt9fWVsc2UgbT0yM313aGlsZSgwKTtyZXR1cm4gbGU9cSwwfG19LGZ1bmN0aW9uIHlHKGwsYyxmLHApe2x8PTAsZnw9MCxwfD0wO3ZhciBBLG09MDtBPWxlLGxlPWxlKzE2fDAsYVsobT1BKT4+Ml09Y3w9MCxj''@;'; put 'put ''PTB8UG0obCwwfGFbbCsxNDQ+PjJdLG0sZixwLDA9PSgwfGZlW2wrNDgwPj4wXSkmMSksbT0wfGFbbT4+Ml07ZG97aWYoISgwIT0oMHxjKXwwPT0oMHxtKSkpe2lmKGM9bCsyNzZ8MCwwfGFbbCs0NzI+PjJdKXthW2M+PjJdPTYzLGM9MHxweChsLG0sZixwKTticmVha31hW2M+PjJdPTU4LGM9''@;'; put 'put ''MHx3XyhsLG0sZixwKTticmVha319d2hpbGUoMCk7cmV0dXJuIGxlPUEsMHxjfSxkeCxweCxuUCxmdW5jdGlvbiAkSyhsLGMsZixwKXtyZXR1cm4gMHwobD0wfG5QKGx8PTAsY3w9MCxmfD0wLHB8PTApKSYmKGZlW2wrNzIrNTg+PjBdPTIzKSwwfGx9LGZ1bmN0aW9uIGJHKGwsYyxmLHApe3Jl''@;'; put 'put ''dHVybiAwfGFbMjgwKyhsfD0wKT4+Ml19LGZ1bmN0aW9uIFIxZShsLGMsZixwKXtyZXR1cm4gMHx5aig1ODk0OCxsfD0wLDAsY3w9MCxmfD0wLHB8PTApfSxmdW5jdGlvbiBBaihsLGMsZixwKXtyZXR1cm4gMHx5aig1ODk0OCxsfD0wLDEsY3w9MCxmfD0wLHB8PTApfSxmdW5jdGlvbiAkMWUo''@;'; put 'put ''bCxjLGYscCl7cmV0dXJuIDB8eWooNjA0NTYsbHw9MCwwLGN8PTAsZnw9MCxwfD0wKX0sZnVuY3Rpb24gcTFlKGwsYyxmLHApe3JldHVybiAwfHlqKDYwNDU2LGx8PTAsMSxjfD0wLGZ8PTAscHw9MCl9LHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBh''@;'; put 'put ''LHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhLHBhXSxSMj1bSm8sZnVuY3Rpb24gaEMobCxjLGYscCxtKXtyZXR1cm4gbHw9MCxw''@;'; put 'put ''fD0wLG18PTAsKGZ8PTApPyhsPW0/MHxyMChsLGYpOjB8WnIobCxmKSxhW3A+PjJdPWwsYVtwKzQ+PjJdPTApOihmPTB8YVsobT0xMzkyKT4+Ml0sbT0wfGFbbSs0Pj4yXSxhW3A+PjJdPWYsYVtwKzQ+PjJdPW0sbT0wfHpsKDB8ZiwwfG0sMiwwKSxhWyhwPTEzOTIpPj4yXT1tLGFbcCs0Pj4y''@;'; put 'put ''XT1EbiksMX0sZnVuY3Rpb24gajIobCxjLGYscCxtKXtyZXR1cm4gMCwwfSxmdW5jdGlvbiBuSihsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgRyxxLGJlLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxwZT0wLGdlPTAsT2U9MDtiZT1sZSxsZT1sZSs4MHwwLHE9''@;'; put 'put ''YmUrNjR8MCxHPWJlKzMyfDAsZ2U9YmU7ZTpkb3tpZigwfGZlW2MrMjg+PjBdKXtmb3IoQT0rX1tjPj4zXSxiPTQ4KyhrPTB8YVsxMisoMHxhWyhSPWwrMTZ8MCk+PjJdKT4+Ml0pfDAsaz1rKzU2fDAsYz0wOzspe2lmKCgwfGMpPj0oMHxhW2I+PjJdKSlicmVhayBlO2lmKE09MD09KDEmYVsx''@;'; put 'put ''MTYrKDB8YVsxNisoMHxjcihsKSk+PjJdKT4+Ml18MCksRD0wfGFbKDB8YVtrPj4yXSkrKGM8PDIpPj4yXSxBPj0odz0rKDB8fn4rX1soTT9EKzE2fDA6RCsyNHwwKT4+M10pKSYmQTw9KHBlPSsoMHx+fitfWyhNP0QrMzJ8MDpEKzQwfDApPj4zXSkpKWJyZWFrO2M9YysxfDB9MSZhWzExNiso''@;'; put 'put ''MHxhWzE2KygwfGNyKGwpKT4+Ml0pPj4yXT8obD0xNisoMHxhW1I+PjJdKXwwLGFbRz4+Ml09YVsoRD0xNisoMHxhWygwfGFbaz4+Ml0pKyhjPDwyKT4+Ml0pfDApPj4yXSxhW0crND4+Ml09YVtEKzQ+PjJdLGFbRys4Pj4yXT1hW0QrOD4+Ml0sYVtHKzEyPj4yXT1hW0QrMTI+PjJdLGFbRysx''@;'; put 'put ''Nj4+Ml09YVtEKzE2Pj4yXSxhW0crMjA+PjJdPWFbRCsyMD4+Ml0sYVtHKzI0Pj4yXT1hW0QrMjQ+PjJdLGFbRysyOD4+Ml09YVtEKzI4Pj4yXSxhW3E+PjJdPWFbbD4+Ml0sYVtxKzQ+PjJdPWFbbCs0Pj4yXSxhW3ErOD4+Ml09YVtsKzg+PjJdLGFbcSsxMj4+Ml09YVtsKzEyPj4yXSxHb2Uo''@;'; put 'put ''Z2UsRyxxKSxhW3A+PjJdPWFbZ2U+PjJdLGFbcCs0Pj4yXT1hW2dlKzQ+PjJdLGFbcCs4Pj4yXT1hW2dlKzg+PjJdLGFbcCsxMj4+Ml09YVtnZSsxMj4+Ml0sYVtwKzE2Pj4yXT1hW2dlKzE2Pj4yXSxhW3ArMjA+PjJdPWFbZ2UrMjA+PjJdLGFbcCsyND4+Ml09YVtnZSsyND4+Ml0sYVtwKzI4''@;'; put 'put ''Pj4yXT1hW2dlKzI4Pj4yXSxBPStfWzgwKyhnZT0wfGFbUj4+Ml0pPj4zXSx3PStfW2dlKzI0Pj4zXSk6KF9bcD4+M109KE9lPStfWzE2KyhnZT0wfGFbUj4+Ml0pPj4zXSkrdyxfW3ArOD4+M109KHc9K19bZ2UrMjQ+PjNdKS0uNSooQT0rX1tnZSs4MD4+M10pLF9bcCsxNj4+M109T2UrcGUp''@;'; put 'put ''LF9bcCsyND4+M109LjUqQSt3LGFbbT4+Ml09MX1lbHNlIGY9MH13aGlsZSgwKTtyZXR1cm4gbGU9YmUsMHxmfSxmdW5jdGlvbiBLayhsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTA7dmFyIEEsdz0wLGI9MDtmb3IoQT1tfD0wOzspe2lmKCgwfCh3PTB8YVtjPj4yXSkpPT0oMHxmKSl7''@;'; put 'put ''bD0wO2JyZWFrfWlmKGw9MHxhW3A+PjJdLDEyOCYoYj0wfFh0W3c+PjBdKSl7aWYoKEEtbHwwKTwyKXtsPTI7YnJlYWt9YVtwPj4yXT1sKzEsZmVbbD4+MF09Yj4+PjZ8MTkyLGFbcD4+Ml09MSsodz0wfGFbcD4+Ml0pLGZlW3c+PjBdPTYzJmJ8MTI4LGFbYz4+Ml09MSsoMHxhW2M+PjJdKX1l''@;'; put 'put ''bHNle2lmKCgwfGwpPT0oMHxtKSl7bD0yO2JyZWFrfWFbYz4+Ml09dysxLHc9MHxmZVt3Pj4wXSxhW3A+PjJdPTErKGI9MHxhW3A+PjJdKSxmZVtiPj4wXT13fX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBCSyhsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDtmb3IodmFyIEE9MCx3''@;'; put 'put ''PTA7KEE9KGw9MHxhW2M+PjJdKT4+PjA8Zj4+PjApJih3PTB8YVtwPj4yXSk+Pj4wPG0+Pj4wOylhW2M+PjJdPWwrMSxBPTB8WHRbbD4+MF0sYVtwPj4yXT0yKyh3PTB8YVtwPj4yXSksaXRbdz4+MV09QTtyZXR1cm4gMHwoKDB8dykhPSgwfG0pfDFeQT8wOjIpfSxmdW5jdGlvbiBqOWUobCxj''@;'; put 'put ''LGYscCxtKXtsfD0wLGN8PTAscHw9MCxtfD0wO3ZhciBiLEE9MCx3PTA7cmV0dXJuIGI9bGUsbGU9bGUrMTZ8MCxhWyhBPWIpPj4yXT1mfD0wLChmLSh3PTB8YVtjPj4yXSl8MCk+KDB8KGw9bS0oMHxhW3A+PjJdKXwwKSk/KGFbQT4+Ml09bD13K2x8MCxtPTEpOihtPTAsbD1mKSxmdW5jdGlv''@;'; put 'put ''biB0UChsLGMpe2x8PTA7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTA7Zj0wfGFbKGN8PTApPj4yXSxwPTA7ZTpmb3IoOyEoZj4+PjA8PWw+Pj4wKTspe209MHxYdFsoQT1mKy0xfDApPj4wXTtkb3tpZigyNDAhPSgyNDgmbXwwKSl7aWYoMjI0PT0oMjQwJm18MCkpe2lmKChwKzF8MCk+Pj4wPjIp''@;'; put 'put ''e3c9ODticmVhayBlfXA9MDticmVha31pZigxOTI9PSgyMjQmbXwwKSl7aWYoKHArMXwwKT4+PjA+MSl7dz0xMTticmVhayBlfXA9MDticmVha31pZigxMjgmbSlicmVhazticmVhayBlfWlmKChwKzF8MCk+Pj4wPjMpe3c9NTticmVhayBlfXA9MH13aGlsZSgwKTtmPUEscD1wKzF8MH01PT0o''@;'; put 'put ''MHx3KT9mPWYrM3wwOjg9PSgwfHcpP2Y9ZisyfDA6MTE9PSgwfHcpJiYoZj1mKzF8MCksYVtjPj4yXT1mfSh3LEEpLGdvKDB8YVtwPj4yXSwwfChmPTB8YVtjPj4yXSksMHwoQT0odz0wfGFbQT4+Ml0pLWZ8MCkpLGFbYz4+Ml09KDB8YVtjPj4yXSkrQSxhW3A+PjJdPSgwfGFbcD4+Ml0pK0Es''@;'; put 'put ''bGU9YiwwfChtPzI6dz4+PjA8bD4+PjAmMSl9LGZ1bmN0aW9uIHYxZShsLGMsZixwLG0pe3ZhciB3LGIsayxBPTAsTT0wLEQ9MCxSPTA7dz03MisobHw9MCl8MCxiPWZ8PTAsaz1tfD0wLE09MHxhWyhjfD0wKT4+Ml0sRD0wfGFbKHB8PTApPj4yXTtlOmZvcig7Oyl7aWYoIShEPj4+MDxtPj4+''@;'; put 'put ''MCYobD1NPj4+MDxmPj4+MCkpKXtSPTEyO2JyZWFrfXN3aXRjaCgwfGZlW3crKEE9MjU1JihsPTB8ZmVbTT4+MF0pKT4+MF0pe2Nhc2UgNTppZigoYi1NfDApPDIpe2w9MTticmVhayBlfWl0W0Q+PjFdPSgzMSZsKTw8Nnw2MyZmZVtNKzE+PjBdLE09TSsyfDAsRD1EKzJ8MDtjb250aW51ZSBl''@;'; put 'put ''O2Nhc2UgNjppZigoYi1NfDApPDMpe2w9MTticmVhayBlfWl0W0Q+PjFdPSg2MyZmZVtNKzE+PjBdKTw8NnxBPDwxMnw2MyZmZVtNKzI+PjBdLE09TSszfDAsRD1EKzJ8MDtjb250aW51ZSBlO2Nhc2UgNzppZigoay1EfDApPDQpe2w9MjticmVhayBlfWlmKChiLU18MCk8NCl7bD0xO2JyZWFr''@;'; put 'put ''IGV9aXRbRD4+MV09KEE9KCg2MyZmZVtNKzE+PjBdKTw8MTJ8KDcmbCk8PDE4fCg2MyZmZVtNKzI+PjBdKTw8Nnw2MyZmZVtNKzM+PjBdKS02NTUzNnwwKT4+PjEwfDU1Mjk2LGl0W0QrMj4+MV09MTAyMyZBfDU2MzIwLE09TSs0fDAsRD1EKzR8MDtjb250aW51ZSBlO2RlZmF1bHQ6aXRbRD4+''@;'; put 'put ''MV09bDw8MjQ+PjI0LE09TSsxfDAsRD1EKzJ8MDtjb250aW51ZSBlfX1yZXR1cm4gMTI9PSgwfFIpJiYobD1sPzI6MCksYVtjPj4yXT1NLGFbcD4+Ml09RCwwfGx9LGZ1bmN0aW9uIFUxZShsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDtmb3IodmFyIEE9MCx3PTA7KEE9KGw9''@;'; put 'put ''MHxhW2M+PjJdKT4+PjA8Zj4+PjApJih3PTB8YVtwPj4yXSk+Pj4wPG0+Pj4wOylhW2M+PjJdPWwrMSxBPTB8ZmVbbD4+MF0sYVtwPj4yXT0xKyh3PTB8YVtwPj4yXSksZmVbdz4+MF09QTtyZXR1cm4gMHwoKDB8dykhPSgwfG0pfDFeQT8wOjIpfSxmdW5jdGlvbiB0QWUobCxjLGYscCxtKXts''@;'; put 'put ''fD0wLHB8PTA7dmFyIGIsayxNLEE9MCx3PTAsRD0wLFI9MDtrPWI9KHc9MHxhWyhjfD0wKT4+Ml0pKygoZnw9MCktdyYtMil8MCxNPW18PTA7ZTpmb3IoOzspe2lmKHc+Pj4wPj1iPj4+MCl7bD0wO2JyZWFrfXN3aXRjaChBPTB8ZmVbdysxPj4wXSxmPTI1NSYobD0wfGZlW3c+PjBdKSxsPDwy''@;'; put 'put ''ND4+MjQpe2Nhc2UgMDppZihBPDwyND4+MjQ+LTEpe2lmKCgwfChsPTB8YVtwPj4yXSkpPT0oMHxtKSl7bD0yO2JyZWFrIGV9YVtwPj4yXT1sKzEsZmVbbD4+MF09QSxsPXd9ZWxzZSBEPTc7YnJlYWs7Y2FzZSA3OmNhc2UgNjpjYXNlIDU6Y2FzZSA0OmNhc2UgMzpjYXNlIDI6Y2FzZSAxOkQ9''@;'; put 'put ''NzticmVhaztjYXNlLTM3OmNhc2UtMzg6Y2FzZS0zOTpjYXNlLTQwOmlmKChNLShsPTB8YVtwPj4yXSl8MCk8NCl7bD0yO2JyZWFrIGV9aWYoKGstd3wwKTw0KXtsPTE7YnJlYWsgZX1BPTErKGY8PDImMTJ8KFI9MjU1JkEpPj4+Nil8MCxhW3A+PjJdPWwrMSxmZVtsPj4wXT1BPj4+MnwyNDAs''@;'; put 'put ''YVtwPj4yXT0xKyhsPTB8YVtwPj4yXSksZmVbbD4+MF09Uj4+PjImMTV8QTw8NCY0OHwxMjgsZj0yNTUmKFI8PDQmNDh8KEE9MHxYdFt3KzM+PjBdKT4+PjZ8ZmVbKGw9dysyfDApPj4wXTw8MiYxMnwxMjgpLGFbcD4+Ml09MSsodz0wfGFbcD4+Ml0pLGZlW3c+PjBdPWYsYVtwPj4yXT0xKyh3''@;'; put 'put ''PTB8YVtwPj4yXSksZmVbdz4+MF09NjMmQXwxMjg7YnJlYWs7ZGVmYXVsdDppZigoTS0obD0wfGFbcD4+Ml0pfDApPDMpe2w9MjticmVhayBlfWFbcD4+Ml09bCsxLGZlW2w+PjBdPWY+Pj40fDIyNCxSPTI1NSZBLGFbcD4+Ml09MSsobD0wfGFbcD4+Ml0pLGZlW2w+PjBdPVI+Pj42fGY8PDIm''@;'; put 'put ''NjB8MTI4LGFbcD4+Ml09MSsobD0wfGFbcD4+Ml0pLGZlW2w+PjBdPTYzJlJ8MTI4LGw9d31pZig3PT0oMHxEKSl7aWYoRD0wLChNLShsPTB8YVtwPj4yXSl8MCk8Mil7bD0yO2JyZWFrfVI9MjU1JkEsYVtwPj4yXT1sKzEsZmVbbD4+MF09Uj4+PjZ8Zjw8MnwxOTIsYVtwPj4yXT0xKyhsPTB8''@;'; put 'put ''YVtwPj4yXSksZmVbbD4+MF09NjMmUnwxMjgsbD13fXc9bCsyfDB9cmV0dXJuIGFbYz4+Ml09dywwfGx9LGZ1bmN0aW9uIF9wKGwsYyxmLHAsbSl7bHw9MDt2YXIgQT0wLHc9MCxiPTA7Zm9yKGw9KEE9MHxhWyhjfD0wKT4+Ml0pKyhiPShmfD0wKS1BJi0yKXwwLCgwfGIpPigobXw9MCktKDB8''@;'; put 'put ''YVsocHw9MCk+PjJdKXwwKT8oYj0xJihmPSgtOCZmZVsodz1sKy0yfDApPj4wXSk8PDI0Pj4yND09LTQwKSxsPWY/dzpsKTpiPTAsZj1BOyhBPWY+Pj4wPGw+Pj4wKSYodz0wfGFbcD4+Ml0pPj4+MDxtPj4+MDspQT02NTUzNSYoKDB8WHRbZj4+MF0pPDw4fDB8WHRbZisxPj4wXSksYVtwPj4y''@;'; put 'put ''XT13KzIsaXRbdz4+MV09QSxhW2M+PjJdPXc9MisoMHxhW2M+PjJdKXwwLGY9dztyZXR1cm4gMHwoKDB8dykhPSgwfG0pfDFeQT9iOjIpfSxmdW5jdGlvbiBTMWUobCxjLGYscCxtKXtsfD0wLHB8PTA7dmFyIGIsayxNLEE9MCx3PTAsRD0wLFI9MDtrPWI9KHc9MHxhWyhjfD0wKT4+Ml0pKygo''@;'; put 'put ''Znw9MCktdyYtMil8MCxNPW18PTA7ZTpmb3IoOzspe2lmKHc+Pj4wPj1iPj4+MCl7bD0wO2JyZWFrfXN3aXRjaChBPTB8ZmVbdz4+MF0sZj0yNTUmKGw9MHxmZVt3KzE+PjBdKSxsPDwyND4+MjQpe2Nhc2UgMDppZihBPDwyND4+MjQ+LTEpe2lmKCgwfChsPTB8YVtwPj4yXSkpPT0oMHxtKSl7''@;'; put 'put ''bD0yO2JyZWFrIGV9YVtwPj4yXT1sKzEsZmVbbD4+MF09QSxsPXd9ZWxzZSBEPTc7YnJlYWs7Y2FzZSA3OmNhc2UgNjpjYXNlIDU6Y2FzZSA0OmNhc2UgMzpjYXNlIDI6Y2FzZSAxOkQ9NzticmVhaztjYXNlLTM3OmNhc2UtMzg6Y2FzZS0zOTpjYXNlLTQwOmlmKChNLShsPTB8YVtwPj4yXSl8''@;'; put 'put ''MCk8NCl7bD0yO2JyZWFrIGV9aWYoKGstd3wwKTw0KXtsPTE7YnJlYWsgZX1BPTErKGY8PDImMTJ8KFI9MjU1JkEpPj4+Nil8MCxhW3A+PjJdPWwrMSxmZVtsPj4wXT1BPj4+MnwyNDAsYVtwPj4yXT0xKyhsPTB8YVtwPj4yXSksZmVbbD4+MF09Uj4+PjImMTV8QTw8NCY0OHwxMjgsZj0yNTUm''@;'; put 'put ''KFI8PDQmNDh8KEE9MHxYdFsobD13KzJ8MCk+PjBdKT4+PjZ8ZmVbdyszPj4wXTw8MiYxMnwxMjgpLGFbcD4+Ml09MSsodz0wfGFbcD4+Ml0pLGZlW3c+PjBdPWYsYVtwPj4yXT0xKyh3PTB8YVtwPj4yXSksZmVbdz4+MF09NjMmQXwxMjg7YnJlYWs7ZGVmYXVsdDppZigoTS0obD0wfGFbcD4+''@;'; put 'put ''Ml0pfDApPDMpe2w9MjticmVhayBlfWFbcD4+Ml09bCsxLGZlW2w+PjBdPWY+Pj40fDIyNCxSPTI1NSZBLGFbcD4+Ml09MSsobD0wfGFbcD4+Ml0pLGZlW2w+PjBdPVI+Pj42fGY8PDImNjB8MTI4LGFbcD4+Ml09MSsobD0wfGFbcD4+Ml0pLGZlW2w+PjBdPTYzJlJ8MTI4LGw9d31pZig3PT0o''@;'; put 'put ''MHxEKSl7aWYoRD0wLChNLShsPTB8YVtwPj4yXSl8MCk8Mil7bD0yO2JyZWFrfVI9MjU1JkEsYVtwPj4yXT1sKzEsZmVbbD4+MF09Uj4+PjZ8Zjw8MnwxOTIsYVtwPj4yXT0xKyhsPTB8YVtwPj4yXSksZmVbbD4+MF09NjMmUnwxMjgsbD13fXc9bCsyfDB9cmV0dXJuIGFbYz4+Ml09dywwfGx9''@;'; put 'put ''LGZ1bmN0aW9uIE0xZShsLGMsZixwLG0pe2x8PTA7dmFyIEE9MCx3PTAsYj0wO2ZvcihsPShBPTB8YVsoY3w9MCk+PjJdKSsoYj0oZnw9MCktQSYtMil8MCwoMHxiKT4oKG18PTApLSgwfGFbKHB8PTApPj4yXSl8MCk/KGI9MSYoZj0oLTgmZmVbMSsodz1sKy0yfDApPj4wXSk8PDI0Pj4yND09''@;'; put 'put ''LTQwKSxsPWY/dzpsKTpiPTAsZj1BOyhBPWY+Pj4wPGw+Pj4wKSYodz0wfGFbcD4+Ml0pPj4+MDxtPj4+MDspQT02NTUzNSYoKDB8WHRbZisxPj4wXSk8PDh8MHxYdFtmPj4wXSksYVtwPj4yXT13KzIsaXRbdz4+MV09QSxhW2M+PjJdPXc9MisoMHxhW2M+PjJdKXwwLGY9dztyZXR1cm4gMHwo''@;'; put 'put ''KDB8dykhPSgwfG0pfDFeQT9iOjIpfSxmdW5jdGlvbiBvUChsLGMsZixwLG0pe2N8PTAsZnw9MCxwfD0wLG18PTA7dmFyIGIsayxNLEQsUixHLEE9MCx3PTAscT0wO2ZvcihHPWxlLGxlPWxlKzE2fDAsaz1HLE09MzY0KyhsfD0wKXwwLEQ9bCs4ODR8MCxSPWwrMzY4fDAsYj1sKzcyfDA7Oyl7''@;'; put 'put ''aWYoKDB8KEE9MHxhW2M+PjJdKSk9PSgwfGYpKXttPTA7YnJlYWt9aWYodz1EKygocT0wfFh0W0E+PjBdKTw8MikrMXwwLGw9KHE9MHxmZVtEKyhxPDwyKT4+MF0pPDwyND4+MjQscTw8MjQ+PjI0KXtpZigobS0oMHxhW3A+PjJdKXwwKTwoMHxsKSl7bT0yO2JyZWFrfUE9QSsxfDB9ZWxzZXtp''@;'; put 'put ''ZigoMHwobD0wfFc0KDB8QmlbMTI3JmFbTT4+Ml1dKDB8YVtSPj4yXSxBKSxrKSkpPihtLSgwfGFbcD4+Ml0pfDApKXttPTI7YnJlYWt9dz1rLEE9KEE9MHxhW2M+PjJdKSsoKDB8WHRbYisoMHxYdFtBPj4wXSk+PjBdKS0zKXwwfWFbYz4+Ml09QSxnbygwfGFbcD4+Ml0sMHx3LDB8bCksYVtw''@;'; put 'put ''Pj4yXT0oMHxhW3A+PjJdKStsfXJldHVybiBsZT1HLDB8bX0sZnVuY3Rpb24gTDMobCxjLGYscCxtKXtjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBrLE0sRCxSLEE9MCx3PTAsYj0wO2ZvcihNPTM3MisobHw9MCl8MCxEPWwrMzY0fDAsUj1sKzM2OHwwLGs9bCs3MnwwOyhsPShiPTB8YVtjPj4y''@;'; put 'put ''XSk+Pj4wPGY+Pj4wKSYoQT0wfGFbcD4+Ml0pPj4+MDxtPj4+MDspKGw9MHxpdFtNKygoMHxYdFtiPj4wXSk8PDEpPj4xXSk8PDE2Pj4xNj8odz0xLEE9Yik6KGw9NjU1MzUmKDB8QmlbMTI3JmFbRD4+Ml1dKDB8YVtSPj4yXSxiKSksdz0oMHxYdFtrKygwfFh0WyhBPTB8YVtjPj4yXSk+PjBd''@;'; put 'put ''KT4+MF0pLTN8MCksYVtjPj4yXT1BK3csYVtwPj4yXT0yKyhiPTB8YVtwPj4yXSksaXRbYj4+MV09bDtyZXR1cm4gMHwoKDB8QSkhPSgwfG0pfDFebD8wOjIpfSxmdW5jdGlvbiBudWUobCxjLGYscCxtKXtsfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTA7c3dpdGNoKDB8KGN8PTApKXtjYXNl''@;'; put 'put ''IDE1OmFbbD4+Ml09MTYsbD0wO2JyZWFrO2Nhc2UgMTI6YVtsPj4yXT0xNixsPTE7YnJlYWs7Y2FzZSAxMTphW2w+PjJdPTE2LGw9NTU7YnJlYWs7Y2FzZSAxMzphW2w+PjJdPTE2LGw9NTY7YnJlYWs7Y2FzZSAxNDpsPTA7YnJlYWs7Y2FzZSAxNjowfHEwWzEyNyZhW20rMjQ+PjJdXShtLGYr''@;'; put 'put ''KGFbbSs2ND4+Ml08PDEpfDAscCwxNDQzNjgpPyhhW2w+PjJdPTE3LGw9Myk6QT05O2JyZWFrO2Nhc2UgMjk6YVtsPj4yXT0xOCxsPTI7YnJlYWs7ZGVmYXVsdDpBPTl9cmV0dXJuIDk9PSgwfEEpJiYobD0wfGphKGwsYykpLDB8bH0sZnVuY3Rpb24gcnVlKGwsYyxmLHAsbSl7bHw9MCxmfD0w''@;'; put 'put ''LHB8PTAsbXw9MDt2YXIgQT0wO3N3aXRjaCgwfChjfD0wKSl7Y2FzZSAxNDpjYXNlIDE1Omw9MDticmVhaztjYXNlIDExOmw9NTU7YnJlYWs7Y2FzZSAxMzpsPTU2O2JyZWFrO2Nhc2UgMTY6MHxxMFsxMjcmYVttKzI0Pj4yXV0obSxmKyhhW20rNjQ+PjJdPDwxKXwwLHAsMTQ0MzY4KT8oYVts''@;'; put 'put ''Pj4yXT0xNyxsPTMpOkE9NzticmVhaztjYXNlIDI5OmFbbD4+Ml09MTgsbD0yO2JyZWFrO2RlZmF1bHQ6QT03fXJldHVybiA3PT0oMHxBKSYmKGw9MHxqYShsLGMpKSwwfGx9LGZ1bmN0aW9uIGl1ZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9MzticmVhaztj''@;'; put 'put ''YXNlIDQxOmNhc2UgMTg6YVtsPj4yXT0xOSxsPTQ7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBvdWUobCxjLGYscCxtKXtyZXR1cm4gMH0sZnVuY3Rpb24gYXVlKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTAsdz0wO2U6''@;'; put 'put ''ZG97c3dpdGNoKDB8Yyl7Y2FzZSAxNTpsPTM7YnJlYWs7Y2FzZSAyNTphW2w+PjJdPTIwLGw9NzticmVhaztjYXNlIDE3OmFbbD4+Ml09MjEsbD04O2JyZWFrO2Nhc2UgMTg6aWYoMHxxMFsxMjcmYVsoQT1tKzI0fDApPj4yXV0obSxmLHAsMTQ0Mzc2KSl7YVtsPj4yXT0yMixsPTM7YnJlYWsg''@;'; put 'put ''ZX0wfHEwWzEyNyZhW0E+PjJdXShtLGYscCwxNDQzODMpPyhhW2w+PjJdPTIzLGw9Myk6dz04O2JyZWFrO2RlZmF1bHQ6dz04fX13aGlsZSgwKTtyZXR1cm4gOD09KDB8dykmJihsPTB8amEobCxjKSksMHxsfSxlJCxmdW5jdGlvbiBsdWUobCxjLGYscCxtKXtzd2l0Y2gobHw9MCxtfD0wLCht''@;'; put 'put ''PShjfD0wKS0xMXwwKT4+PjF8bTw8MzF8MCl7Y2FzZSAyOmw9MDticmVhaztjYXNlIDA6bD01NTticmVhaztjYXNlIDE6bD01NjticmVhaztjYXNlIDk6YVtsPj4yXT0xOCxsPTI7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBzdWUobCxjLGYscCxtKXtz''@;'; put 'put ''d2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTM7YnJlYWs7Y2FzZSAyNzphW2w+PjJdPTI5LGw9NTticmVhaztkZWZhdWx0Omw9MHxqYShsLGMpfXJldHVybiAwfGx9LGZ1bmN0aW9uIHV1ZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9MzticmVhaztj''@;'; put 'put ''YXNlIDI3OmFbbD4+Ml09MjIsbD02O2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gZnVlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0xMTticmVhaztjYXNlIDIyOmFbbD4+Ml09MzAsbD0xMTticmVhaztjYXNlIDE4OmFb''@;'; put 'put ''bD4+Ml09MzEsbD05O2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gaHVlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0zMzticmVhaztjYXNlIDQxOmNhc2UgMTg6YVtsPj4yXT0zMixsPTM0O2JyZWFrO2RlZmF1bHQ6bD0w''@;'; put 'put ''fGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gZHVlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0zOTticmVhaztjYXNlIDQxOmNhc2UgMTg6YVtsPj4yXT0zMyxsPTQwO2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24g''@;'; put 'put ''cHVlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0xNzticmVhaztjYXNlIDE4OmFbbD4+Ml09MzQsbD0xODticmVhaztkZWZhdWx0Omw9MHxqYShsLGMpfXJldHVybiAwfGx9LGZ1bmN0aW9uIGd1ZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtj''@;'; put 'put ''YXNlIDE1Omw9MzticmVhaztjYXNlIDE3OmFbbD4+Ml09MjEsbD04O2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gY3VlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0zO2JyZWFrO2Nhc2UgMjU6YVtsPj4yXT0yMCxsPTc7''@;'; put 'put ''YnJlYWs7Y2FzZSAxNzphW2w+PjJdPTIxLGw9ODticmVhaztkZWZhdWx0Omw9MHxqYShsLGMpfXJldHVybiAwfGx9LGZ1bmN0aW9uIE91ZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9MTE7YnJlYWs7Y2FzZSAxODphW2w+PjJdPTU3LGw9MTA7YnJlYWs7ZGVm''@;'; put 'put ''YXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBSdWUobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MCx3PTA7ZTpkb3tzd2l0Y2goMHxjKXtjYXNlIDE1Omw9MTE7YnJlYWs7Y2FzZSAxODppZigwfHEwWzEyNyZhWyhBPW0rMjR8MCk+PjJdXSht''@;'; put 'put ''LGYscCwxNDQzNzYpKXthW2w+PjJdPTU4LGw9MTE7YnJlYWsgZX0wfHEwWzEyNyZhW0E+PjJdXShtLGYscCwxNDQzODMpPyhhW2w+PjJdPTU5LGw9MTEpOnc9NzticmVhaztjYXNlIDI3OmFbbD4+Ml09MzcsYVtsKzg+PjJdPTExLGw9MTI7YnJlYWs7ZGVmYXVsdDp3PTd9fXdoaWxlKDApO3Jl''@;'; put 'put ''dHVybiA3PT0oMHx3KSYmKGw9MHxqYShsLGMpKSwwfGx9LGZ1bmN0aW9uIGt1ZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9MzM7YnJlYWs7Y2FzZSAxNzphW2w+PjJdPTB8YVtsKzE2Pj4yXT8yMDozOSxsPTMzO2JyZWFrO2Nhc2UgNDE6Y2FzZSAxODphW2w+''@;'; put 'put ''PjJdPTQ5LGw9MjI7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBhQWUobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MCx3PTA7ZTpkb3tzd2l0Y2goMHxjKXtjYXNlIDE1Omw9Mzk7YnJlYWs7Y2FzZSAxODppZigwfHEwWzEy''@;'; put 'put ''NyZhWyhBPW0rMjR8MCk+PjJdXShtLGYscCwxNDQ0MzcpKXthW2w+PjJdPTM3LGFbbCs4Pj4yXT0zOSxsPTQyO2JyZWFrIGV9MHxxMFsxMjcmYVtBPj4yXV0obSxmLHAsMTQ0NDQzKT8oYVtsPj4yXT0zNyxhW2wrOD4+Ml09MzksbD00MSk6dz03O2JyZWFrO2Nhc2UgMjM6YVtsPj4yXT00Myxh''@;'; put 'put ''W2wrND4+Ml09MSxsPTQ0O2JyZWFrO2RlZmF1bHQ6dz03fX13aGlsZSgwKTtyZXR1cm4gNz09KDB8dykmJihsPTB8amEobCxjKSksMHxsfSxmdW5jdGlvbiBtdWUobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MCx3PTA7ZTpkb3tzd2l0Y2goMHxjKXtjYXNlIDE1''@;'; put 'put ''Omw9MTc7YnJlYWs7Y2FzZSAxODppZigwfHEwWzEyNyZhWyhBPW0rMjR8MCk+PjJdXShtLGYscCwxNDQzNzYpKXthW2w+PjJdPTM1LGw9MTc7YnJlYWsgZX0wfHEwWzEyNyZhW0E+PjJdXShtLGYscCwxNDQzODMpPyhhW2w+PjJdPTM2LGw9MTcpOnc9NjticmVhaztkZWZhdWx0Onc9Nn19d2hp''@;'; put 'put ''bGUoMCk7cmV0dXJuIDY9PSgwfHcpJiYobD0wfGphKGwsYykpLDB8bH0sZnVuY3Rpb24gdnVlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0xNzticmVhaztjYXNlIDI3OmFbbD4+Ml09MzcsYVtsKzg+PjJdPTE3LGw9MTk7YnJlYWs7ZGVmYXVsdDpsPTB8amEo''@;'; put 'put ''bCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBBdWUobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTE3O2JyZWFrO2Nhc2UgMjc6YVtsPj4yXT0zOCxsPTIxO2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gd3VlKGwsYyxmLHAs''@;'; put 'put ''bSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0wfGFbbCs4Pj4yXTticmVhaztjYXNlIDE3OmFbbD4+Ml09MHxhW2wrMTY+PjJdPzIwOjM5LGw9MHxhW2wrOD4+Ml07YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiB5dWUobCxjLGYscCxtKXtz''@;'; put 'put ''d2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTE3O2JyZWFrO2Nhc2UgMjc6YVtsPj4yXT0zNyxhW2wrOD4+Ml09MTcsbD0xOTticmVhaztjYXNlIDE3OmFbbD4+Ml09MHxhW2wrMTY+PjJdPzIwOjM5LGw9MjA7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5j''@;'; put 'put ''dGlvbiBidWUobCxjLGYscCxtKXtsfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTA7c3dpdGNoKDB8KGN8PTApKXtjYXNlIDMzOmFbbD4+Ml09NDAsZj0wO2JyZWFrO2Nhc2UgMzQ6KHA9MHxhWyhmPWwrMTJ8MCk+PjJdKT8oYVtmPj4yXT1wKy0xLGY9MCk6QT03O2JyZWFrO2Nhc2UgMTU6Zj0w''@;'; put 'put ''O2JyZWFrO2Nhc2UgMjY6QT03O2JyZWFrO2Nhc2UtNDowfGFbbCsxMj4+Ml0/QT03OmY9MDticmVhaztkZWZhdWx0OmY9MHxlJChsLGMsZixwLG0pfXJldHVybiA3PT0oMHxBKSYmKGY9MHxqYShsLGMpKSwwfGZ9LGZ1bmN0aW9uIF91ZShsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAs''@;'; put 'put ''bXw9MDt2YXIgQT0wLHc9MDtlOmRve3N3aXRjaCgwfGMpe2Nhc2UgMTU6bD0wO2JyZWFrO2Nhc2UgMTg6aWYoMHxxMFsxMjcmYVsoQT1tKzI0fDApPj4yXV0obSxmLHAsMTQ0NDIyKSl7YVtsPj4yXT00MSxsPTA7YnJlYWsgZX0wfHEwWzEyNyZhW0E+PjJdXShtLGYscCwxNDQ0MzApPyhhW2w+''@;'; put 'put ''PjJdPTQyLGw9MCk6dz02O2JyZWFrO2RlZmF1bHQ6dz02fX13aGlsZSgwKTtyZXR1cm4gNj09KDB8dykmJihsPTB8amEobCxjKSksMHxsfSxmdW5jdGlvbiBpQWUobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTA7YnJlYWs7Y2FzZSAyNTphW2w+PjJdPTM5LGFb''@;'; put 'put ''KGw9bCsxMnwwKT4+Ml09MSsoMHxhW2w+PjJdKSxsPTA7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBvQWUobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTA7YnJlYWs7Y2FzZSAyNTphW2w+PjJdPTM5LGw9NTg7YnJlYWs7''@;'; put 'put ''ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBsQWUobCxjLGYscCxtKXtsfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTA7c3dpdGNoKDB8KGN8PTApKXtjYXNlIDE1Omw9Mzk7YnJlYWs7Y2FzZSAyMDowfHEwWzEyNyZhW20rMjQ+PjJdXShtLGYrKDB8YVttKzY0Pj4y''@;'; put 'put ''XSl8MCxwLDE0NDQ0Nyk/KGFbbD4+Ml09NDQsbD00Myk6QT05O2JyZWFrO2Nhc2UgMjM6YVtsKzQ+PjJdPTIsYVtsPj4yXT00NSxsPTQ0O2JyZWFrO2Nhc2UgNDE6Y2FzZSAxODphW2w+PjJdPTQ2LGw9NTE7YnJlYWs7Y2FzZSAzMDphW2w+PjJdPTQ2LGw9NTM7YnJlYWs7Y2FzZSAzMTphW2w+''@;'; put 'put ''PjJdPTQ2LGw9NTI7YnJlYWs7Y2FzZSAzMjphW2w+PjJdPTQ2LGw9NTQ7YnJlYWs7ZGVmYXVsdDpBPTl9cmV0dXJuIDk9PSgwfEEpJiYobD0wfGphKGwsYykpLDB8bH0sZnVuY3Rpb24gc0FlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0zOTticmVhaztjYXNl''@;'; put 'put ''IDI0OmFbbD4+Ml09MzcsYVtsKzg+PjJdPTM5LGw9NDU7YnJlYWs7Y2FzZSAzNjphW2w+PjJdPTM3LGFbbCs4Pj4yXT0zOSxsPTQ2O2JyZWFrO2Nhc2UgMjE6YVtsPj4yXT00NyxsPTM5O2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gdUFlKGwsYyxmLHAs''@;'; put 'put ''bSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0zOTticmVhaztjYXNlIDIzOmFbKGw9bCs0fDApPj4yXT0xKygwfGFbbD4+Ml0pLGw9NDQ7YnJlYWs7Y2FzZSA0MTpjYXNlIDE4OmFbbD4+Ml09NDYsbD01MTticmVhaztjYXNlIDMwOmFbbD4+Ml09NDYsbD01MzticmVhaztjYXNl''@;'; put 'put ''IDMxOmFbbD4+Ml09NDYsbD01MjticmVhaztjYXNlIDMyOmFbbD4+Ml09NDYsbD01NDticmVhaztkZWZhdWx0Omw9MHxqYShsLGMpfXJldHVybiAwfGx9LGZ1bmN0aW9uIGNBZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLHB8PTAsbXw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTM5O2JyZWFrO2Nh''@;'; put 'put ''c2UgMjQ6YVsocD1sKzR8MCk+PjJdPW09KDB8YVtwPj4yXSktMXwwLG18fChhW2w+PjJdPTM3LGFbbCs4Pj4yXT0zOSksbD00NTticmVhaztjYXNlIDM2OmFbKHA9bCs0fDApPj4yXT1tPSgwfGFbcD4+Ml0pLTF8MCxtfHwoYVtsPj4yXT0zNyxhW2wrOD4+Ml09MzkpLGw9NDY7YnJlYWs7Y2Fz''@;'; put 'put ''ZSAzNTphWyhwPWwrNHwwKT4+Ml09bT0oMHxhW3A+PjJdKS0xfDAsbXx8KGFbbD4+Ml09MzcsYVtsKzg+PjJdPTM5KSxsPTQ3O2JyZWFrO2Nhc2UgMzc6YVsocD1sKzR8MCk+PjJdPW09KDB8YVtwPj4yXSktMXwwLG18fChhW2w+PjJdPTM3LGFbbCs4Pj4yXT0zOSksbD00ODticmVhaztjYXNl''@;'; put 'put ''IDM4OmFbbD4+Ml09NDUsbD01MDticmVhaztjYXNlIDIxOmFbbD4+Ml09NDUsbD00OTticmVhaztkZWZhdWx0Omw9MHxqYShsLGMpfXJldHVybiAwfGx9LGZ1bmN0aW9uIGZBZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9Mzk7YnJlYWs7Y2FzZSA0MTpjYXNl''@;'; put 'put ''IDE4OmFbbD4+Ml09NDgsbD01MTticmVhaztkZWZhdWx0Omw9MHxqYShsLGMpfXJldHVybiAwfGx9LGZ1bmN0aW9uIEN1ZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9Mzk7YnJlYWs7Y2FzZSAzNjphW2w+PjJdPTM3LGFbbCs4Pj4yXT0zOSxsPTQ2O2JyZWFr''@;'; put 'put ''O2Nhc2UgMjE6YVtsPj4yXT00NyxsPTM5O2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gU3VlKGwsYyxmLHAsbSl7bHw9MCxjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciBBPTAsdz0wLGI9MCxrPTA7ZTpkb3tzd2l0Y2goMHxjKXtjYXNlIDE1OkE9MzM7YnJl''@;'; put 'put ''YWs7Y2FzZSAxODpmb3Iodz1tKzI0fDAsQT0wO2I9MHxhW3c+PjJdLCEoKDB8QSk+PTgpOyl7aWYoMHxxMFsxMjcmYl0obSxmLHAsMHxhWzYyMzA0KyhBPDwyKT4+Ml0pKXtrPTY7YnJlYWt9QT1BKzF8MH1pZig2PT0oMHxrKSl7YVtsPj4yXT01MCxBPUErMjN8MDticmVhayBlfTB8cTBbMTI3''@;'; put 'put ''JmJdKG0sZixwLDE0NDQxMyk/KGFbbD4+Ml09NTEsQT0zMyk6az0xMDticmVhaztjYXNlIDIzOmFbbD4+Ml09NTIsQT0zMzticmVhaztkZWZhdWx0Oms9MTB9fXdoaWxlKDApO3JldHVybiAxMD09KDB8aykmJihBPTB8amEobCxjKSksMHxBfSxmdW5jdGlvbiBNdWUobCxjLGYscCxtKXtsfD0w''@;'; put 'put ''LGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MCx3PTAsYj0wO2U6ZG97c3dpdGNoKDB8Yyl7Y2FzZSAxNTpsPTMzO2JyZWFrO2Nhc2UgMjA6aWYoMHxxMFsxMjcmYVsoQT1tKzI0fDApPj4yXV0obSxmKygwfGFbKHc9bSs2NHwwKT4+Ml0pfDAscCwxNDQ0NTQpKXthW2w+PjJdPTMyLGw9MzU7''@;'; put 'put ''YnJlYWsgZX1pZigwfHEwWzEyNyZhW0E+PjJdXShtLGYrKDB8YVt3Pj4yXSl8MCxwLDE0NDQ2Mikpe2FbbD4+Ml09MzIsbD0zNjticmVhayBlfTB8cTBbMTI3JmFbQT4+Ml1dKG0sZisoMHxhW3c+PjJdKXwwLHAsMTQ0NDcxKT8oYVtsPj4yXT01MyxsPTMzKTpiPTk7YnJlYWs7Y2FzZSAyNzph''@;'; put 'put ''W2w+PjJdPTMyLGw9Mzc7YnJlYWs7ZGVmYXVsdDpiPTl9fXdoaWxlKDApO3JldHVybiA5PT0oMHxiKSYmKGw9MHxqYShsLGMpKSwwfGx9LGZ1bmN0aW9uIEV1ZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9MzM7YnJlYWs7Y2FzZSAyMzphW2w+PjJdPTU0LGw9''@;'; put 'put ''MzM7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiB4dWUobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTMzO2JyZWFrO2Nhc2UgNDE6Y2FzZSAxODpjYXNlIDE5OmFbbD4+Ml09NTUsbD0zMTticmVhaztkZWZhdWx0Omw9MHxq''@;'; put 'put ''YShsLGMpfXJldHVybiAwfGx9LGZ1bmN0aW9uIEx1ZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9MzM7YnJlYWs7Y2FzZSAyNzphW2w+PjJdPTMyLGw9Mzg7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBJdWUobCxjLGYs''@;'; put 'put ''cCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTMzO2JyZWFrO2Nhc2UgMTg6YVtsPj4yXT01NixsPTMyO2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gVHVlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0z''@;'; put 'put ''MzticmVhaztjYXNlIDI0OmFbbD4+Ml09NTAsbD0zMzticmVhaztjYXNlIDIxOmFbbD4+Ml09NTIsbD0zMzticmVhaztkZWZhdWx0Omw9MHxqYShsLGMpfXJldHVybiAwfGx9LGZ1bmN0aW9uIER1ZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9MzM7YnJlYWs7''@;'; put 'put ''Y2FzZSAyNDphW2w+PjJdPTUwLGw9MzM7YnJlYWs7Y2FzZSAyMTphW2w+PjJdPTU0LGw9MzM7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBnQWUobCxjLGYscCxtKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTA7dmFyIEE9MCx3PTA7ZTpkb3tzd2l0Y2go''@;'; put 'put ''MHxjKXtjYXNlIDE1Omw9MTE7YnJlYWs7Y2FzZSAxODppZigwfHEwWzEyNyZhWyhBPW0rMjR8MCk+PjJdXShtLGYscCwxNDQzNzYpKXthW2w+PjJdPTYyLGw9MTE7YnJlYWsgZX0wfHEwWzEyNyZhW0E+PjJdXShtLGYscCwxNDQzODMpPyhhW2w+PjJdPTYzLGw9MTEpOnc9NzticmVhaztjYXNl''@;'; put 'put ''IDI3OmFbbD4+Ml09MzcsYVtsKzg+PjJdPTExLGw9MTI7YnJlYWs7ZGVmYXVsdDp3PTd9fXdoaWxlKDApO3JldHVybiA3PT0oMHx3KSYmKGw9MHxqYShsLGMpKSwwfGx9LGZ1bmN0aW9uIEJ1ZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9MTE7YnJlYWs7Y2Fz''@;'; put 'put ''ZSAyNzphW2w+PjJdPTYwLGw9MTM7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1cm4gMHxsfSxmdW5jdGlvbiBoQWUobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTExO2JyZWFrO2Nhc2UgMjc6YVtsPj4yXT01OCxsPTE0O2JyZWFrO2RlZmF1bHQ6bD0w''@;'; put 'put ''fGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gZEFlKGwsYyxmLHAsbSl7bHw9MCxmfD0wLHB8PTAsbXw9MDt2YXIgQT0wO3N3aXRjaCgwfChjfD0wKSl7Y2FzZSAxNTpsPTExO2JyZWFrO2Nhc2UgMTc6YVtsPj4yXT0wfGFbbCsxNj4+Ml0/MjA6MzksbD0xNTticmVhaztjYXNlIDE4OjB8''@;'; put 'put ''cTBbMTI3JmFbbSsyND4+Ml1dKG0sZixwLDE0NDUyNSk/KGFbbD4+Ml09NjEsbD0xMSk6QT01O2JyZWFrO2RlZmF1bHQ6QT01fXJldHVybiA1PT0oMHxBKSYmKGw9MHxqYShsLGMpKSwwfGx9LGZ1bmN0aW9uIHBBZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9''@;'; put 'put ''MTE7YnJlYWs7Y2FzZSAxODphW2w+PjJdPTM3LGFbbCs4Pj4yXT0xMSxsPTE2O2JyZWFrO2RlZmF1bHQ6bD0wfGphKGwsYyl9cmV0dXJuIDB8bH0sZnVuY3Rpb24gbUFlKGwsYyxmLHAsbSl7c3dpdGNoKGx8PTAsMHwoY3w9MCkpe2Nhc2UgMTU6bD0xMTticmVhaztjYXNlIDI3OmFbbD4+Ml09''@;'; put 'put ''NjQsbD0xMzticmVhaztkZWZhdWx0Omw9MHxqYShsLGMpfXJldHVybiAwfGx9LGZ1bmN0aW9uIHZBZShsLGMsZixwLG0pe3N3aXRjaChsfD0wLDB8KGN8PTApKXtjYXNlIDE1Omw9MTE7YnJlYWs7Y2FzZSAyNzphW2w+PjJdPTYyLGw9MTQ7YnJlYWs7ZGVmYXVsdDpsPTB8amEobCxjKX1yZXR1''@;'; put 'put ''cm4gMHxsfSxmdW5jdGlvbiBBQWUobCxjLGYscCxtKXtzd2l0Y2gobHw9MCwwfChjfD0wKSl7Y2FzZSAxNTpsPTExO2JyZWFrO2Nhc2UgMTc6YVtsPj4yXT0wfGFbbCsxNj4+Ml0/MjA6MzksbD0xNTticmVhaztkZWZhdWx0Omw9MHxqYShsLGMpfXJldHVybiAwfGx9LEpvLEpvLEpvLEpvLEpv''@;'; put 'put ''LEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpvLEpv''@;'; put 'put ''LEpvLEpvLEpvXSxvMz1bZnVuY3Rpb24gX2ZlKGwsYyxmLHAsbSxBKXtyZXR1cm4gdzIoMTApLDB9LGZ1bmN0aW9uIGw1KGwsYyxmLHAsbSxBKXtsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgUmUsSGUsVmUscWUscnQsV2UsYXQsU3Qsa3QsRXQsWnQsY3QsYnQsYW4sU24sSG4s''@;'; put 'put ''SHIsRXIsRHIsdz0wLGI9MCxrPTAsTT0wLEQ9MCxSPTAsRz0wLHE9MCxwZT0wLGdlPTAsYmU9MCxPZT0wLExlPTAsc3Q9MCx1cj0wLGZyPTAsSnI9MCxMcj0wLGwwPTAsVmk9MCxPaT0wO0RyPWxlLGxlPWxlKzMzNnwwLGJ0PURyKzMyMHwwLGN0PURyKzMwNHwwLFJlPURyKzE0NHwwLHE9RHIr''@;'; put 'put ''MTI4fDAsRXQ9RHIrMTEyfDAsWnQ9RHIrOTZ8MCxmcj1Ecis4MHwwLHJ0PURyKzY0fDAsYXQ9RHIrNDh8MCxhbj1EciszMnwwLFNuPURyKzE2fDAsSG49RHIsSGU9RHIrMjg4fDAsVmU9RHIrMjcyfDAscWU9RHIrMjU2fDAsV2U9RHIrMjQwfDAsU3Q9RHIrMjI0fDAsa3Q9RHIrMjA4fDAsdXI9''@;'; put 'put ''RHIrMTkyfDAsSHI9RHIrMTc2fDAsRXI9RHIrMTYwfDAsdz0wfGFbNDc0NjJdO2Rve2lmKCgwfGFbNDc0NjFdKTwoMHxwKSl7aWYodyl7aWYodz0wfFVhKHcsNDAqcHwwKSxhWzQ3NDYyXT13LCF3KXt3PS0xO2JyZWFrfX1lbHNlIGlmKHc9MHxGMCg0MCpwfDApLGFbNDc0NjJdPXcsIXcpe3c9''@;'; put 'put ''LTE7YnJlYWt9YVs0NzQ2MV09cCxrPTZ9ZWxzZSBrPTZ9d2hpbGUoMCk7aWYoNj09KDB8aykpe2ZvcihfW3c+PjNdPTAsaz0xLGI9MDshKCgwfGspPj0oMHxwKSk7KXN0PWYrKGsrLTE8PDQpfDAsYVtjdD4+Ml09YVsoRD1mKyhrPDw0KXwwKT4+Ml0sYVtjdCs0Pj4yXT1hW0QrND4+Ml0sYVtj''@;'; put 'put ''dCs4Pj4yXT1hW0QrOD4+Ml0sYVtjdCsxMj4+Ml09YVtEKzEyPj4yXSxhW2J0Pj4yXT1hW3N0Pj4yXSxhW2J0KzQ+PjJdPWFbc3QrND4+Ml0sYVtidCs4Pj4yXT1hW3N0Kzg+PjJdLGFbYnQrMTI+PjJdPWFbc3QrMTI+PjJdLExlPStvXyhjdCxidCkrYixfW3crKDQwKmt8MCk+PjNdPUxlLGs9''@;'; put 'put ''aysxfDAsYj1MZTtmb3IoRD13Kyg0MCooc3Q9cCstMXwwKXwwKXwwLGs9MTshKCgwfGspPj0oMHxwKSk7KV9bKEpyPXcrKDQwKmt8MCl8MCk+PjNdPStfW0pyPj4zXS8rX1tEPj4zXSxrPWsrMXwwO2ZvcihrPTA7ISgoMHxrKT49KDB8cCkpOylKcj13Kyg0MCprfDApKzh8MCxMZT0rRW0oK19b''@;'; put 'put ''KEQ9dysoNDAqa3wwKXwwKT4+M10pLGFbYnQ+PjJdPWFbbT4+Ml0sYVtidCs0Pj4yXT1hW20rND4+Ml0sYVtidCs4Pj4yXT1hW20rOD4+Ml0sYVtidCsxMj4+Ml09YVttKzEyPj4yXSxfZihIZSxidCxMZSksYVtKcj4+Ml09YVtIZT4+Ml0sYVtKcis0Pj4yXT1hW0hlKzQ+PjJdLGFbSnIrOD4+''@;'; put 'put ''Ml09YVtIZSs4Pj4yXSxhW0pyKzEyPj4yXT1hW0hlKzEyPj4yXSxKcj13Kyg0MCprfDApKzI0fDAsTGU9K0xkKCtfW0Q+PjNdKSxhW2J0Pj4yXT1hW0E+PjJdLGFbYnQrND4+Ml09YVtBKzQ+PjJdLGFbYnQrOD4+Ml09YVtBKzg+PjJdLGFbYnQrMTI+PjJdPWFbQSsxMj4+Ml0sX2YoVmUsYnQs''@;'; put 'put ''TGUpLGFbSnI+PjJdPWFbVmU+PjJdLGFbSnIrND4+Ml09YVtWZSs0Pj4yXSxhW0pyKzg+PjJdPWFbVmUrOD4+Ml0sYVtKcisxMj4+Ml09YVtWZSsxMj4+Ml0saz1rKzF8MDtpZihhW2N0Pj4yXT1hW20+PjJdLGFbY3QrND4+Ml09YVttKzQ+PjJdLGFbY3QrOD4+Ml09YVttKzg+PjJdLGFbY3Qr''@;'; put 'put ''MTI+PjJdPWFbbSsxMj4+Ml0sYVtidD4+Ml09YVtBPj4yXSxhW2J0KzQ+PjJdPWFbQSs0Pj4yXSxhW2J0Kzg+PjJdPWFbQSs4Pj4yXSxhW2J0KzEyPj4yXT1hW0ErMTI+PjJdLGZ1bmN0aW9uIGo0KGwsYyxmLHAsbSxBLHcsYixrKXtmfD0wLHB8PTAsbXw9MCxBfD0wLHd8PTAsYnw9MCxrfD0w''@;'; put 'put ''O3ZhciBwZSxnZSxiZSxPZSxMZSxXZSxhdCxTdCxrdCxFdCxNPTAsRD0wLFI9MCxHPTAscT0wLFJlPTAsSGU9MCxWZT0wLHFlPTAscnQ9MCxzdD0wLFp0PTAsY3Q9MCxidD0wLGFuPTAsU249MCxIbj0wO2ZvcihFdD1sZSxsZT1sZSsxMjh8MCxXZT1FdCsxMTJ8MCxMZT1FdCs4MHwwLE9lPUV0''@;'; put 'put ''LHBlPUV0Kzk2fDAsZ2U9RXQrNjR8MCxiZT1FdCs0OHwwLGF0PUV0KzMyfDAsU3Q9RXQrMTZ8MCxrdD0obHw9MCkrKChjfD0wKS0xPDw0KXwwLHE9MCxSZT0wLEhlPTAsVmU9MCxxZT0wLHJ0PTA7ISgoMHxxKT49KDB8YykpOylhW0xlPj4yXT1hWyhhbj1mKyg0MCpxfDApKzh8MCk+PjJdLGFb''@;'; put 'put ''TGUrND4+Ml09YVthbis0Pj4yXSxhW0xlKzg+PjJdPWFbYW4rOD4+Ml0sYVtMZSsxMj4+Ml09YVthbisxMj4+Ml0sYVtXZT4+Ml09YVthbj4+Ml0sYVtXZSs0Pj4yXT1hW2FuKzQ+PjJdLGFbV2UrOD4+Ml09YVthbis4Pj4yXSxhW1dlKzEyPj4yXT1hW2FuKzEyPj4yXSxadD0rczUoTGUsV2Up''@;'; put 'put ''K0hlLGJ0PWYrKDQwKnF8MCkrMjR8MCxhW0xlPj4yXT1hW2FuPj4yXSxhW0xlKzQ+PjJdPWFbYW4rND4+Ml0sYVtMZSs4Pj4yXT1hW2FuKzg+PjJdLGFbTGUrMTI+PjJdPWFbYW4rMTI+PjJdLGFbV2U+PjJdPWFbYnQ+PjJdLGFbV2UrND4+Ml09YVtidCs0Pj4yXSxhW1dlKzg+PjJdPWFbYnQr''@;'; put 'put ''OD4+Ml0sYVtXZSsxMj4+Ml09YVtidCsxMj4+Ml0sRz0rczUoTGUsV2UpK3J0LGFbTGU+PjJdPWFbYnQ+PjJdLGFbTGUrND4+Ml09YVtidCs0Pj4yXSxhW0xlKzg+PjJdPWFbYnQrOD4+Ml0sYVtMZSsxMj4+Ml09YVtidCsxMj4+Ml0sYVtXZT4+Ml09YVtidD4+Ml0sYVtXZSs0Pj4yXT1hW2J0''@;'; put 'put ''KzQ+PjJdLGFbV2UrOD4+Ml09YVtidCs4Pj4yXSxhW1dlKzEyPj4yXT1hW2J0KzEyPj4yXSxSPStzNShMZSxXZSkrVmUsU249bCsocTw8NCl8MCxjdD0rcngoK19bKEhuPWYrKDQwKnF8MCl8MCk+PjNdKSxhW1dlPj4yXT1hW2w+PjJdLGFbV2UrND4+Ml09YVtsKzQ+PjJdLGFbV2UrOD4+Ml09''@;'; put 'put ''YVtsKzg+PjJdLGFbV2UrMTI+PjJdPWFbbCsxMj4+Ml0sX2YoZ2UsV2UsY3QpLGN0PStqQigrX1tIbj4+M10pLGFbV2U+PjJdPWFba3Q+PjJdLGFbV2UrND4+Ml09YVtrdCs0Pj4yXSxhW1dlKzg+PjJdPWFba3QrOD4+Ml0sYVtXZSsxMj4+Ml09YVtrdCsxMj4+Ml0sX2YoYmUsV2UsY3QpLGFb''@;'; put 'put ''TGU+PjJdPWFbZ2U+PjJdLGFbTGUrND4+Ml09YVtnZSs0Pj4yXSxhW0xlKzg+PjJdPWFbZ2UrOD4+Ml0sYVtMZSsxMj4+Ml09YVtnZSsxMj4+Ml0sYVtXZT4+Ml09YVtiZT4+Ml0sYVtXZSs0Pj4yXT1hW2JlKzQ+PjJdLGFbV2UrOD4+Ml09YVtiZSs4Pj4yXSxhW1dlKzEyPj4yXT1hW2JlKzEy''@;'; put 'put ''Pj4yXSx0eChwZSxMZSxXZSksYVtMZT4+Ml09YVtTbj4+Ml0sYVtMZSs0Pj4yXT1hW1NuKzQ+PjJdLGFbTGUrOD4+Ml09YVtTbis4Pj4yXSxhW0xlKzEyPj4yXT1hW1NuKzEyPj4yXSxhW1dlPj4yXT1hW3BlPj4yXSxhW1dlKzQ+PjJdPWFbcGUrND4+Ml0sYVtXZSs4Pj4yXT1hW3BlKzg+PjJd''@;'; put 'put ''LGFbV2UrMTI+PjJdPWFbcGUrMTI+PjJdLHRBKE9lLExlLFdlKSxhW0xlPj4yXT1hW2FuPj4yXSxhW0xlKzQ+PjJdPWFbYW4rND4+Ml0sYVtMZSs4Pj4yXT1hW2FuKzg+PjJdLGFbTGUrMTI+PjJdPWFbYW4rMTI+PjJdLGFbV2U+PjJdPWFbT2U+PjJdLGFbV2UrND4+Ml09YVtPZSs0Pj4yXSxh''@;'; put 'put ''W1dlKzg+PjJdPWFbT2UrOD4+Ml0sYVtXZSsxMj4+Ml09YVtPZSsxMj4+Ml0sY3Q9K3M1KExlLFdlKStSZSxhW0xlPj4yXT1hW2J0Pj4yXSxhW0xlKzQ+PjJdPWFbYnQrND4+Ml0sYVtMZSs4Pj4yXT1hW2J0Kzg+PjJdLGFbTGUrMTI+PjJdPWFbYnQrMTI+PjJdLGFbV2U+PjJdPWFbT2U+PjJd''@;'; put 'put ''LGFbV2UrND4+Ml09YVtPZSs0Pj4yXSxhW1dlKzg+PjJdPWFbT2UrOD4+Ml0sYVtXZSsxMj4+Ml09YVtPZSsxMj4+Ml0scT1xKzF8MCxSZT1jdCxIZT1adCxWZT1SLHFlPStzNShMZSxXZSkrcWUscnQ9RzsoRz0oUj1WZSpIZS1ydCpydCk+PTA/UjotUik+PTFlLTYmJiEoRzwxZS02fChNPShW''@;'; put 'put ''ZSpSZS1ydCpxZSkvUik8PTB8KEQ9KEhlKnFlLXJ0KlJlKS9SKTw9MCl8fChzdD02KSw2PT0oMHxzdCkmJihhW0xlPj4yXT1hW2w+PjJdLGFbTGUrND4+Ml09YVtsKzQ+PjJdLGFbTGUrOD4+Ml09YVtsKzg+PjJdLGFbTGUrMTI+PjJdPWFbbCsxMj4+Ml0sYVtXZT4+Ml09YVtrdD4+Ml0sYVtX''@;'; put 'put ''ZSs0Pj4yXT1hW2t0KzQ+PjJdLGFbV2UrOD4+Ml09YVtrdCs4Pj4yXSxhW1dlKzEyPj4yXT1hW2t0KzEyPj4yXSxEPU09LjMzMzMzMzMzMzMzMzMzMzMqK29fKExlLFdlKSksYVtBPj4yXT1hW2w+PjJdLGFbQSs0Pj4yXT1hW2wrND4+Ml0sYVtBKzg+PjJdPWFbbCs4Pj4yXSxhW0ErMTI+PjJd''@;'; put 'put ''PWFbbCsxMj4+Ml0sYVtXZT4+Ml09YVtwPj4yXSxhW1dlKzQ+PjJdPWFbcCs0Pj4yXSxhW1dlKzg+PjJdPWFbcCs4Pj4yXSxhW1dlKzEyPj4yXT1hW3ArMTI+PjJdLF9mKGF0LFdlLE0pLGFbdz4+Ml09YVthdD4+Ml0sYVt3KzQ+PjJdPWFbYXQrND4+Ml0sYVt3Kzg+PjJdPWFbYXQrOD4+Ml0s''@;'; put 'put ''YVt3KzEyPj4yXT1hW2F0KzEyPj4yXSxhW2I+PjJdPWFba3Q+PjJdLGFbYis0Pj4yXT1hW2t0KzQ+PjJdLGFbYis4Pj4yXT1hW2t0Kzg+PjJdLGFbYisxMj4+Ml09YVtrdCsxMj4+Ml0sYVtXZT4+Ml09YVttPj4yXSxhW1dlKzQ+PjJdPWFbbSs0Pj4yXSxhW1dlKzg+PjJdPWFbbSs4Pj4yXSxh''@;'; put 'put ''W1dlKzEyPj4yXT1hW20rMTI+PjJdLF9mKFN0LFdlLEQpLGFbaz4+Ml09YVtTdD4+Ml0sYVtrKzQ+PjJdPWFbU3QrND4+Ml0sYVtrKzg+PjJdPWFbU3QrOD4+Ml0sYVtrKzEyPj4yXT1hW1N0KzEyPj4yXSxsZT1FdH0oZixwLHcsY3QsYnQsRXQscnQsWnQsYXQpLGFbcT4+Ml09YVtFdD4+Ml0s''@;'; put 'put ''YVtxKzQ+PjJdPWFbRXQrND4+Ml0sYVtxKzg+PjJdPWFbRXQrOD4+Ml0sYVtxKzEyPj4yXT1hW0V0KzEyPj4yXSxhW1JlPj4yXT1hW3J0Pj4yXSxhW1JlKzQ+PjJdPWFbcnQrND4+Ml0sYVtSZSs4Pj4yXT1hW3J0Kzg+PjJdLGFbUmUrMTI+PjJdPWFbcnQrMTI+PjJdLGFbY3Q+PjJdPWFbWnQ+''@;'; put 'put ''PjJdLGFbY3QrND4+Ml09YVtadCs0Pj4yXSxhW2N0Kzg+PjJdPWFbWnQrOD4+Ml0sYVtjdCsxMj4+Ml09YVtadCsxMj4+Ml0sYVtidD4+Ml09YVthdD4+Ml0sYVtidCs0Pj4yXT1hW2F0KzQ+PjJdLGFbYnQrOD4+Ml09YVthdCs4Pj4yXSxhW2J0KzEyPj4yXT1hW2F0KzEyPj4yXSwwfGZ1bmN0''@;'; put 'put ''aW9uIGFfKGwsYyxmLHAsbSxBLHcsYil7bHw9MCxjfD0wLHd8PTA7dmFyIEQsUixHLHEscGUsZ2UsYmUsT2UsTGUsUmUsSGUsVmUscWUsV2UsYXQsaz0wLE09MCxydD0wLFN0PTAsa3Q9MDtmb3IoYXQ9bGUsbGU9bGUrNjR8MCxxZT0yPT0oMHwoYnw9MCkpLFZlPStfWyhmfD0wKT4+M10sT2U9''@;'; put 'put ''K19bZis4Pj4zXSxMZT0oV2U9YXQpKzh8MCxSZT0rX1socHw9MCk+PjNdLEhlPVdlKzE2fDAsRz0rX1twKzg+PjNdLHE9V2UrMjR8MCxwZT0rX1sobXw9MCk+PjNdLGdlPStfWyhBfD0wKT4+M10sYmU9V2UrMzJ8MCxSPStfW20rOD4+M10sRD0rX1tBKzg+PjNdLHA9V2UrNDB8MCxtPVdlKzQ4''@;'; put 'put ''fDAsQT1XZSs1NnwwLGY9MSxrPTQsTT00Ozspe2lmKF9bV2U+PjNdPVZlLF9bTGU+PjNdPU9lLF9bSGU+PjNdPShTdD0uMzMzMzMzMzMzMzMzMzMzMypNKSpSZStWZSxfW3E+PjNdPVN0KkcrT2UsX1tiZT4+M109cGUtKFN0PS4zMzMzMzMzMzMzMzMzMzMzKmspKmdlLF9bcD4+M109Ui1TdCpE''@;'; put 'put ''LF9bbT4+M109cGUsX1tBPj4zXT1SLGYmJihTdD0rbF8oV2UsNCkpPCtsXyh3LGIpLS4wMDEpe2Y9MDticmVha31pZigwfFcxKGwsYyxXZSkpe3J0PTU7YnJlYWt9aWYoMD09TSYwPT1rKXtydD05O2JyZWFrfWY9MCxrPShrdD1NPi4wMSk/LjUqazowLE09a3Q/LjUqTTowfWU6ZG97aWYoNT09''@;'; put 'put ''KDB8cnQpKWZvcihleCg0KygwfGFbNDc0NTldKXwwKSxwPTB8YVs0NzQ2MF0sZj0xOzspe2lmKDQ9PSgwfGYpKXtmPTE7YnJlYWsgZX1fW3ArKChrdD0wfGFbNDc0NTldKTw8NCk+PjNdPStfW1dlKyhmPDw0KT4+M10sU3Q9K19bV2UrKGY8PDQpKzg+PjNdLGFbNDc0NTldPWt0KzEsX1twKyhr''@;'; put 'put ''dDw8NCkrOD4+M109U3QsZj1mKzF8MH1lbHNlIGlmKDk9PSgwfHJ0KSlpZihxZSlmb3IoZXgoNCsoMHxhWzQ3NDU5XSl8MCkscD0wfGFbNDc0NjBdLGY9MTs7KXtpZig0PT0oMHxmKSl7Zj0xO2JyZWFrIGV9X1twKygoa3Q9MHxhWzQ3NDU5XSk8PDQpPj4zXT0rX1tXZSsoZjw8NCk+PjNdLFN0''@;'; put 'put ''PStfW1dlKyhmPDw0KSs4Pj4zXSxhWzQ3NDU5XT1rdCsxLF9bcCsoa3Q8PDQpKzg+PjNdPVN0LGY9ZisxfDB9ZWxzZSBmPTB9d2hpbGUoMCk7cmV0dXJuIGxlPWF0LDB8Zn0obCxjLHEsUmUsY3QsYnQsZixwKSl3PTA7ZWxzZXtmb3IoYVtidD4+Ml09YVtydD4+Ml0sYVtidCs0Pj4yXT1hW3J0''@;'; put 'put ''KzQ+PjJdLGFbYnQrOD4+Ml09YVtydCs4Pj4yXSxhW2J0KzEyPj4yXT1hW3J0KzEyPj4yXSxfZihxZSxidCwuMzMzMzMzMzMzMzMzMzMzMyksYVtjdD4+Ml09YVtFdD4+Ml0sYVtjdCs0Pj4yXT1hW0V0KzQ+PjJdLGFbY3QrOD4+Ml09YVtFdCs4Pj4yXSxhW2N0KzEyPj4yXT1hW0V0KzEyPj4y''@;'; put 'put ''XSxhW2J0Pj4yXT1hW3FlPj4yXSxhW2J0KzQ+PjJdPWFbcWUrND4+Ml0sYVtidCs4Pj4yXT1hW3FlKzg+PjJdLGFbYnQrMTI+PjJdPWFbcWUrMTI+PjJdLHR4KFdlLGN0LGJ0KSxMZT0rX1tXZT4+M10sT2U9K19bV2UrOD4+M10sYVtidD4+Ml09YVthdD4+Ml0sYVtidCs0Pj4yXT1hW2F0KzQ+''@;'; put 'put ''PjJdLGFbYnQrOD4+Ml09YVthdCs4Pj4yXSxhW2J0KzEyPj4yXT1hW2F0KzEyPj4yXSxfZihTdCxidCwuMzMzMzMzMzMzMzMzMzMzMyksYVtjdD4+Ml09YVtadD4+Ml0sYVtjdCs0Pj4yXT1hW1p0KzQ+PjJdLGFbY3QrOD4+Ml09YVtadCs4Pj4yXSxhW2N0KzEyPj4yXT1hW1p0KzEyPj4yXSxh''@;'; put 'put ''W2J0Pj4yXT1hW1N0Pj4yXSxhW2J0KzQ+PjJdPWFbU3QrND4+Ml0sYVtidCs4Pj4yXT1hW1N0Kzg+PjJdLGFbYnQrMTI+PjJdPWFbU3QrMTI+PjJdLHRBKGt0LGN0LGJ0KSxiZT0rX1trdD4+M10sRz0rX1trdCs4Pj4zXSxxPTB8YVs0NzQ2Ml0scGU9K19bRXQ+PjNdLGdlPStfW1p0Pj4zXSxS''@;'; put 'put ''PStfW0V0Kzg+PjNdLE09K19bWnQrOD4+M10sRD1mcis4fDAsdz0tMSxiPS0xLGs9MTshKCgwfGspPj0oMHxzdCkpOylsMD0rVkIoTHI9K19bcSsoNDAqa3wwKT4+M10pLFZpPStFbShMciksT2k9K0xkKExyKSxMcj0rbngoTHIpLF9bZnI+PjNdPVZpKkxlK3BlKmwwK09pKmJlK2dlKkxyLF9b''@;'; put 'put ''RD4+M109T2kqRytWaSpPZStSKmwwK00qTHIsSnI9Zisoazw8NCl8MCxhW2N0Pj4yXT1hW2ZyPj4yXSxhW2N0KzQ+PjJdPWFbZnIrND4+Ml0sYVtjdCs4Pj4yXT1hW2ZyKzg+PjJdLGFbY3QrMTI+PjJdPWFbZnIrMTI+PjJdLGFbYnQ+PjJdPWFbSnI+PjJdLGFbYnQrND4+Ml09YVtKcis0Pj4y''@;'; put 'put ''XSxhW2J0Kzg+PjJdPWFbSnIrOD4+Ml0sYVtidCsxMj4+Ml09YVtKcisxMj4+Ml0sdz0oSnI9KExyPStvXyhjdCxidCkpPmIpP2s6dyxiPUpyP0xyOmIsaz1rKzF8MDtmcj1mKyh3Ky0xPDw0KXwwLGFbY3Q+PjJdPWFbKEpyPWYrKHc8PDQpfDApPj4yXSxhW2N0KzQ+PjJdPWFbSnIrND4+Ml0s''@;'; put 'put ''YVtjdCs4Pj4yXT1hW0pyKzg+PjJdLGFbY3QrMTI+PjJdPWFbSnIrMTI+PjJdLGFbYnQ+PjJdPWFbZnI+PjJdLGFbYnQrND4+Ml09YVtmcis0Pj4yXSxhW2J0Kzg+PjJdPWFbZnIrOD4+Ml0sYVtidCsxMj4+Ml09YVtmcisxMj4+Ml0sdEEodXIsY3QsYnQpLGFbYnQ+PjJdPWFbdXI+PjJdLGFb''@;'; put 'put ''YnQrND4+Ml09YVt1cis0Pj4yXSxhW2J0Kzg+PjJdPWFbdXIrOD4+Ml0sYVtidCsxMj4+Ml09YVt1cisxMj4+Ml0sYTUoU24sYnQpLGFbY3Q+PjJdPWFbKHVyPWYrKChmcj13KzF8MCk8PDQpfDApPj4yXSxhW2N0KzQ+PjJdPWFbdXIrND4+Ml0sYVtjdCs4Pj4yXT1hW3VyKzg+PjJdLGFbY3Qr''@;'; put 'put ''MTI+PjJdPWFbdXIrMTI+PjJdLGFbYnQ+PjJdPWFbSnI+PjJdLGFbYnQrND4+Ml09YVtKcis0Pj4yXSxhW2J0Kzg+PjJdPWFbSnIrOD4+Ml0sYVtidCsxMj4+Ml09YVtKcisxMj4+Ml0sdEEoSHIsY3QsYnQpLGFbYnQ+PjJdPWFbSHI+PjJdLGFbYnQrND4+Ml09YVtIcis0Pj4yXSxhW2J0Kzg+''@;'; put 'put ''PjJdPWFbSHIrOD4+Ml0sYVtidCsxMj4+Ml09YVtIcisxMj4+Ml0sYTUoSG4sYnQpLGFbY3Q+PjJdPWFbU24+PjJdLGFbY3QrND4+Ml09YVtTbis0Pj4yXSxhW2N0Kzg+PjJdPWFbU24rOD4+Ml0sYVtjdCsxMj4+Ml09YVtTbisxMj4+Ml0sYVtidD4+Ml09YVtIbj4+Ml0sYVtidCs0Pj4yXT1h''@;'; put 'put ''W0huKzQ+PjJdLGFbYnQrOD4+Ml09YVtIbis4Pj4yXSxhW2J0KzEyPj4yXT1hW0huKzEyPj4yXSx0eChFcixjdCxidCksYVtidD4+Ml09YVtFcj4+Ml0sYVtidCs0Pj4yXT1hW0VyKzQ+PjJdLGFbYnQrOD4+Ml09YVtFcis4Pj4yXSxhW2J0KzEyPj4yXT1hW0VyKzEyPj4yXSxhNShhbixidCks''@;'; put 'put ''YVtjdD4+Ml09YVttPj4yXSxhW2N0KzQ+PjJdPWFbbSs0Pj4yXSxhW2N0Kzg+PjJdPWFbbSs4Pj4yXSxhW2N0KzEyPj4yXT1hW20rMTI+PjJdLGFbYnQ+PjJdPWFbYW4+PjJdLGFbYnQrND4+Ml09YVthbis0Pj4yXSxhW2J0Kzg+PjJdPWFbYW4rOD4+Ml0sYVtidCsxMj4+Ml09YVthbisxMj4+''@;'; put 'put ''Ml0sbDUobCxjLGYsZnIsY3QsYnQpLGFbY3Q+PjJdPWFbYW4+PjJdLGFbY3QrND4+Ml09YVthbis0Pj4yXSxhW2N0Kzg+PjJdPWFbYW4rOD4+Ml0sYVtjdCsxMj4+Ml09YVthbisxMj4+Ml0sYVtidD4+Ml09YVtBPj4yXSxhW2J0KzQ+PjJdPWFbQSs0Pj4yXSxhW2J0Kzg+PjJdPWFbQSs4Pj4y''@;'; put 'put ''XSxhW2J0KzEyPj4yXT1hW0ErMTI+PjJdLGw1KGwsYyxKcixwLXd8MCxjdCxidCksdz0wfX1yZXR1cm4gbGU9RHIsMHx3fV0sS2o9W1hqLGZ1bmN0aW9uIFExZShsLGMsZixwLG0sQSx3LGIsayxNKXtyZXR1cm4gMHxtZygzOSxsfD0wLGN8PTAsZnw9MCxwfD0wLG18PTAsQXw9MCx3fD0wLGJ8''@;'; put 'put ''PTAsa3w9MCxNfD0wKX0sZnVuY3Rpb24gZXVlKGwsYyxmLHAsbSxBLHcsYixrLE0pe3JldHVybiAwfG1nKDQwLGx8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MCxBfD0wLHd8PTAsYnw9MCxrfD0wLE18PTApfSxYal0saXE9W2Z2LGZ1bmN0aW9uIF9OKCl7Um4oMTg5MjQ0KX0sZnVuY3Rpb24gSm9l''@;'; put 'put ''KCl7dmFyIE0sRCxSLGw9MCxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wO2ZvcihSPWxlLGxlPWxlKzE2fDAsRD1SKzh8MCxrPVIsTT0wfHVEKDB8YVs0NzI1MV0pLGw9MTkyKygwfGFbMTYrKDB8YVs0NzI1NF0pPj4yXSl8MDs7KXtpZighKGM9MHxhW2w+PjJdKSl7Yj0wO2JyZWFr''@;'; put 'put ''fTB8YVsyOTIrKGw9MHxhWyhmPWMrMTZ8MCk+PjJdKT4+Ml18fChENyhNLGMpLGw9MHxhW2Y+PjJdKSxsPWwrMTY0fDB9Zm9yKDtsPTB8Y0QoTSk7KXtmb3IoYVsocD0yMzIrKGw9MHxhWyh3PWwrMTZ8MCk+PjJdKXwwKT4+Ml09MCxmPTB8YVtsKzE3Mj4+Ml0sYz0wLEE9MDs7KXtpZighKG09''@;'; put 'put ''MHxhW2YrKGM8PDIpPj4yXSkpe3A9MDticmVha31hW3A+PjJdPW09KDB8QSk+KDB8KG09KDB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMyZhW20+PjJdfDApP206bSs0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSsoMHxoclsxNzArKDB8YVttKzE2Pj4yXSk+PjFdKXwwKSk/QTptLGM9YysxfDAs''@;'; put 'put ''QT1tfWZvcig7Yz0wfGFbKDB8YVtsKzE4MD4+Ml0pKyhwPDwyKT4+Ml07KWY9YystNDh8MCxhWyhtPTI5MisoMHxhWzE2KygwfGFbKDI9PSgzJmFbYz4+Ml18MCk/YzpmKSs0MD4+Ml0pPj4yXSl8MCk+PjJdPShBPTB8YVttPj4yXSktMSwoMHxBKTwyJiYoRDcoTSwwfGFbKDI9PSgzJmFbYz4+''@;'; put 'put ''Ml18MCk/YzpmKSs0MD4+Ml0pLGw9MHxhW3c+PjJdKSxwPXArMXwwO2I9YisxfDB9ZTpkb3tpZigoMHxiKSE9KDB8YVs0NzI1MV0pKWZvcigkcigxLDEwMjU1NixrKSxsPTE5MisoMHxhWzE2KygwfGFbNDcyNTRdKT4+Ml0pfDA7Oyl7aWYoIShjPTB8YVtsPj4yXSkpYnJlYWsgZTswfGFbMjky''@;'; put 'put ''KyhsPTB8YVsoZj1jKzE2fDApPj4yXSk+PjJdJiYoaz0wfHRpKGMpLGw9MHxhWzI5MisoMHxhW2Y+PjJdKT4+Ml0sYVtEPj4yXT1rLGFbRCs0Pj4yXT1sLCRyKDMsMTAyNTc4LEQpLGw9MHxhW2Y+PjJdKSxsPWwrMTY0fDB9fXdoaWxlKDApO2RKKE0pLGxlPVJ9LGdRLGZ1bmN0aW9uIFhvZSgp''@;'; put 'put ''e3ZhciBtLGw9MCxjPTAsZj0wLHA9MDtmb3IobD0xOTIrKDB8YVsxNisoMHxhWzQ3MjU0XSk+PjJdKXwwO2w9MHxhW2w+PjJdOylhWzI4MCsobD0wfGFbbCsxNj4+Ml0pPj4yXT0wLGw9bCsxNjR8MDtmb3IobT0wfHZyKGFbNDcyNTFdPDwyKSxwPTAsbD0xOTIrKDB8YVsxNisoMHxhWzQ3MjU0''@;'; put 'put ''XSk+PjJdKXwwO2M9MHxhW2w+PjJdOykwfGFbMjgwKyhsPTB8YVsoZj1jKzE2fDApPj4yXSk+PjJdP2M9cDooYVttKyhwPDwyKT4+Ml09MHxlYWUoYyksYz1wKzF8MCxsPTB8YVtmPj4yXSkscD1jLGw9bCsxNjR8MDtmb3IobD0wfGZ1bmN0aW9uIHRhZShsLGMpe2x8PTAsY3w9MDt2YXIgcCxm''@;'; put 'put ''PTA7Zm9yKHA9MHx2cig4KSxhW3A+PjJdPWwsYVtwKzQ+PjJdPWMsZj0wOyEoKDB8Zik+PSgwfGMpKTspYVs4KygwfGFbbCsoZjw8Mik+PjJdKT4+Ml09ZixmPWYrMXwwO2ZvcihmPSgwfGMpLzJ8MDshKCgwfGYpPD0tMSk7KVFIKHAsZiksZj1mKy0xfDA7cmV0dXJuIDB8cH0obSxwKTshKCgw''@;'; put 'put ''fG5hZShsKSk8PTEpOylRSChsLDB8YVs4KygwfG9hZSgwfGlhZSgwfHJhZShsKSkpKT4+Ml0pO2ZvcihGdChsKSxsPTA7ISgoMHxsKT49KDB8cCkpOylGdCgwfGFbbSsobDw8Mik+PjJdKSxsPWwrMXwwO0Z0KG0pLCgwfGFbNDcyNTVdKSE9KCgwfGFbNDcyNTFdKS0xfDApP1ByKDEwMjMwMSwx''@;'; put 'put ''MDIzMzEsNTIzLDEwMjMzNik6ZnVuY3Rpb24gYWFlKCl7WEkoMHxhWzE5MisoMHxhWzE2KygwfGFbNDcyNTRdKT4+Ml0pPj4yXSwwLDEpLEpIKDB8YVsxOTIrKDB8YVsxNisoMHxhWzQ3MjU0XSk+PjJdKT4+Ml0sMCl9KCl9LGZ1bmN0aW9uIFlIKCl7dmFyIE0sbD0wLGM9MCxmPTAscD0wLG09''@;'; put 'put ''MCxBPTAsdz0wLGI9MCxrPTAsRD0wLFI9MDtmb3IodlEoKSxNPTB8dnIoNCsoYVs0NzI1M108PDIpfDApLGM9MHxhWzQ3MjUzXSxsPTA7ISgoMHxsKT4oMHxjKSk7KWFbTSsobDw8Mik+PjJdPTAsbD1sKzF8MDtmb3IoYz1sPTE5MisoMHxhWzE2KygwfGFbNDcyNTRdKT4+Ml0pfDA7Yz0wfGFb''@;'; put 'put ''Yz4+Ml07KTB8ZmVbMTU2KyhjPTB8YVtjKzE2Pj4yXSk+PjBdfHwoYVsoaz1NKyhhW2MrMjMyPj4yXTw8Mil8MCk+PjJdPTErKDB8YVtrPj4yXSkpLGM9YysxNjR8MDtmb3IoO2w9MHxhW2w+PjJdOyl7aWYoISgwfGZlWzE1NisobD0wfGFbKGs9bCsxNnwwKT4+Ml0pPj4wXSkpe2ZvcihtPTB8''@;'; put 'put ''YVs0NzI1M10sZj0wfGFbbCsxNzI+PjJdLGI9MCx3PTAsYz0wO3A9MHxhW2YrKGM8PDIpPj4yXTspYj0oMHxhWzE1NisoRD0wfGFbcCsxNj4+Ml0pPj4yXSkrYnwwLHc9KDB8dyk+KDB8KEE9KDB8YVsyMzIrKDB8YVsxNisoMHxhWygzPT0oMyZhW3A+PjJdfDApP3A6cCs0OHwwKSs0MD4+Ml0p''@;'; put 'put ''Pj4yXSk+PjJdKSsoMHxocltEKzE3MD4+MV0pfDApKT93OkEsYz1jKzF8MDtmb3IocD0wfGFbbCsxODA+PjJdLEE9MCxjPTA7Zj0wfGFbcCsoYzw8Mik+PjJdOylBPSgwfGFbMTU2KyhSPTB8YVtmKzE2Pj4yXSk+PjJdKStBfDAsbT0oMHxtKTwoMHwoRD0oMHxhWzIzMisoMHxhWzE2KygwfGFb''@;'; put 'put ''KDI9PSgzJmFbZj4+Ml18MCk/ZjpmKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKS0oMHxocltSKzE3MD4+MV0pfDApKT9tOkQsYz1jKzF8MDtpZihjPSgwfHcpPjA/dzowLCgwfGIpPT0oMHxBKSl7Zm9yKHA9YyxmPWM7Yz1mKzF8MCwhKCgwfGYpPj0oMHxtKSk7KXA9KDB8YVtNKyhjPDwyKT4+''@;'; put 'put ''Ml0pPCgwfGFbTSsocDw8Mik+PjJdKT9jOnAsZj1jO2FbKEQ9TSsoYVsoUj1sKzIzMnwwKT4+Ml08PDIpfDApPj4yXT0oMHxhW0Q+PjJdKS0xLGFbKEQ9TSsocDw8Mil8MCk+PjJdPTErKDB8YVtEPj4yXSksYVtSPj4yXT1wfShjPTB8YVtsKzI2ND4+Ml0pJiYoRnQoYyksbD0wfGFbaz4+Ml0p''@;'; put 'put ''LChjPTB8YVtsKzI3Mj4+Ml0pJiYoRnQoYyksbD0wfGFbaz4+Ml0pLGZlW2wrMTU3Pj4wXT0wfWw9bCsxNjR8MH1GdChNKX0sZnVuY3Rpb24gbVEoKXt2YXIgbD0wLGM9MCxmPTAscD0wLG09MCxBPTA7Zm9yKGM9MDshKCgwfGMpPj0oMHxhWzQ3MjU1XSkpOyl7bD0wfGFbKDB8YVs0NzI1Nl0p''@;'; put 'put ''KyhjPDwyKT4+Ml07ZG97aWYoMD09KDB8YVsxNjArKDB8YVtsKzE2Pj4yXSk+PjJdKSYmMHwoZj0wfFdIKGwpKSYmKDB8KHA9KDB8YVsyMzIrKDB8YVsxNisoMHxhWygyPT0oMHwocD0zJmFbZj4+Ml0pKT9mOmYrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGFbMjMyKygwfGFbMTYrKDB8''@;'; put 'put ''YVsoMz09KDB8cCk/ZjpmKzQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGhyWzE3MCsoMHxhW2YrMTY+PjJdKT4+MV0pfDApKT49Mil7aWYoKDB8YVsyODgrKDB8YVsxNisobT0wfGFbKDM9PSgwfChBPTMmYVtsPj4yXSkpP2w6bCs0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKTwoMHxhWzI4OCso''@;'; put 'put ''MHxhWzE2KyhsPTB8YVsoMj09KDB8QSk/bDpsKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdKSl7WDUobSxwPj4+MSk7YnJlYWt9WDUobCwoMHxwKS8tMnwwKTticmVha319d2hpbGUoMCk7Yz1jKzF8MH1nUSgpfSx2USxmdW5jdGlvbiBibSgpe0Z0KDB8YVs0NzM3NV0pLGFbNDczNzVdPTAsYVs0''@;'; put 'put ''NzM4N109MH0sZnYsZnYsZnYsZnYsZnYsZnYsZnZdLENvPVtmOCxmdW5jdGlvbiBuaWUobCl7dmFyIGMsZixwLG07c3dpdGNoKG09bGUsbGU9bGUrMTZ8MCxjPW0rNHwwLGY9bSxwPTB8YVs4KygwfGFbMTYrKGx8PTApPj4yXSk+PjJdLDB8YVsobD1sKzY0fDApPj4yXSl7Y2FzZSAwOkU3KHAp''@;'; put 'put ''O2JyZWFrO2Nhc2UgMToxJml0WzEzNisoMHxhW3ArMTY+PjJdKT4+MV0mJmJKKHApO2JyZWFrO2Nhc2UgNDpjYXNlIDU6Y2FzZSA2OkNRKHAsZixjKSxmdW5jdGlvbiBKZChsLGMsZixwKXtsfD0wLGN8PTAsZnw9MCxwfD0wO3ZhciB3LG09MCxBPTA7QT0wfEYwKDgyNDApLGFbNDY2OTBdPUE7''@;'; put 'put ''ZTpkb3tzd2l0Y2goMHxwKXtjYXNlIDY6aXRbQSs4MjMyPj4xXT0xNCxwPTY2NzY5O2JyZWFrO2Nhc2UgNTppdFtBKzgyMzI+PjFdPTEyLHA9NjY3NzM7YnJlYWs7ZGVmYXVsdDppZigwfChwPTB8TGkobCw2Njc1MykpJiYwfGZlW3A+PjBdJiYoNjU1MzUmKG09MHxpcChwKSkpPjEwKXtpdFs4''@;'; put 'put ''MjMyKyhBPTB8YVs0NjY5MF0pPj4xXT1tO2JyZWFrIGV9cD0wfGlwKDY2NzY1KSxpdFs4MjMyKyhBPTB8YVs0NjY5MF0pPj4xXT1wLHA9NjY3NjV9fXdoaWxlKDApO2ZvcihhW0ErODIzNj4+Ml09cCwwfGFbMTgwKyhwPTB8YVsodz1sKzE2fDApPj4yXSk+PjJdPyhtPTB8WjIobCwwLDk5ODA4''@;'; put 'put ''LDE5NTA1OSksQT0wfGFbNDY2OTBdLHA9MHxhW3c+PjJdKTptPTAsYVtBPj4yXT1tLHA9OCZmZVtwKzExMz4+MF0/MHxaMihsLDAsNjY3NzcsMTk1MDU5KTowLGFbNCsoMHxhWzQ2NjkwXSk+PjJdPXAsQT0wfFoyKGwsMSw5OTgwOCwxOTUwNTkpLGFbOCsoMHxhWzQ2NjkwXSk+PjJdPUEsQT0w''@;'; put 'put ''fFoyKGwsMSw2Njc3NywxOTUwNTkpLGFbMTIrKDB8YVs0NjY5MF0pPj4yXT1BLEE9MHxaMihsLDIsOTk4MDgsMTk1MDU5KSxhWzE2KyhwPTB8YVs0NjY5MF0pPj4yXT1BLGY/KG09MHxaMihsLDIsNjY3ODUsMTk1MDU5KSxwPTB8YVs0NjY5MF0pOm09MCxhW3ArMjA+PjJdPW0sYz8obT0wfFoy''@;'; put 'put ''KGwsMiw2Njc5MywxOTUwNTkpLHA9MHxhWzQ2NjkwXSk6bT0wLGFbcCsyND4+Ml09bSwzMyYobT0wfGZlWzExMysoMHxhW3c+PjJdKT4+MF0pPyhBPTB8WjIobCwyLDY2Nzc3LDE5NTA1OSkscD0wfGFbNDY2OTBdLG09MHxmZVsxMTMrKDB8YVt3Pj4yXSk+PjBdKTpBPTAsYVtwKzI4Pj4yXT1B''@;'; put 'put ''LDImbT8oQT0wfFoyKGwsMiw2NjgwMSwxOTUwNTkpLHA9MHxhWzQ2NjkwXSxtPTB8ZmVbMTEzKygwfGFbdz4+Ml0pPj4wXSk6QT0wLGFbcCszMj4+Ml09QSw0Jm0/KG09MHxaMihsLDIsNjY4MTAsMTk1MDU5KSxwPTB8YVs0NjY5MF0pOm09MCxhW3ArMzY+PjJdPW0scD0wOzghPSgwfHApOyl1''@;'; put 'put ''cygxODY2MzIrKHA8PDQpfDAsMTAyNCw0MCsoMHxhWzQ2NjkwXSkrKHA8PDEwKXwwKSxwPXArMXwwfShwLDB8YVtmPj4yXSwwfGFbYz4+Ml0sMHxhW2w+PjJdKX1sZT1tfSxmdW5jdGlvbiBTVyhsKXt2YXIgYyxmLHAsbTtzd2l0Y2goZj0wfGFbOCsoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSww''@;'; put 'put ''fGFbNDY2NTVdfHwoYVs0NjY1NV09YVs0Njc4XSxhWzQ2NjU2XT01NyxhWzQ2NjU3XT0xOSksYz0wfGFbKG09OCsoMHxhWyhwPWYrNjR8MCk+PjJdKXwwKT4+Ml0sYVttPj4yXT0xODY2MjAsMHxhW2wrNjQ+PjJdKXtjYXNlIDI6d1EobCxmLGwsMCk7YnJlYWs7Y2FzZSAzOndRKGwsZixsLDEp''@;'; put 'put ''O2JyZWFrO2Nhc2UgMTpjYXNlIDA6MTM0MjE3NzI4JmFbbCsxNTI+PjJdfHxYbmUoZixsKTticmVhaztjYXNlIDY6Y2FzZSA1OmNhc2UgNDooZnVuY3Rpb24gTUYobCl7bHw9MDt2YXIgYz0wLGY9MDtmb3IoKDB8KGM9MHxhWzQ2NjU5XSkpIT0oMHxhWzQ2NjU4XSkmJigoZj0wfGFbYVs0NjY5''@;'; put 'put ''MF0+PjJdKXx8KGY9MHxaMihsLDAsOTk4MDgsMTk1MDU5KSxhW2FbNDY2OTBdPj4yXT1mLGM9MHxhWzQ2NjU5XSksYz4+PjA+PSgwfGFbNDY2NjBdKT4+PjAmJihRMCgxODY2MzIsMSksYz0wfGFbNDY2NTldKSxmZVtjPj4wXT0wLGFbNDY2NTldPWM9MHxhWzQ2NjU4XSxWbChsLGYsYykpLDB8''@;'; put 'put ''YVsxMisoMHxhW2wrMTY+PjJdKT4+Ml0mJihmPTB8YVs0KygwfGFbNDY2OTBdKT4+Ml0sKGM9MHxhWzQ2Njc1XSk+Pj4wPj0oMHxhWzQ2Njc2XSk+Pj4wJiYoUTAoMTg2Njk2LDEpLGM9MHxhWzQ2Njc1XSksZmVbYz4+MF09MCxhWzQ2Njc1XT1jPTB8YVs0NjY3NF0sVmwobCxmLGMpKSxJNShs''@;'; put 'put ''LDY2NzUzLDB8YVs4MjM2KygwfGFbNDY2OTBdKT4+Ml0sMTk1MDU5KSxjPTA7OCE9KDB8Yyk7KUMyKDE4NjYzMisoYzw8NCl8MCksYz1jKzF8MDtGdCgwfGFbNDY2OTBdKSxfWzFdPTEsX1s1XT0xLGFbNDY2OTFdPTAsYVs0NjY5NV09MH0pKGYpLDEzNDIxNzcyOCZhW2wrMTUyPj4yXXx8WG5l''@;'; put 'put ''KGYsbCl9YVs4KygwfGFbcD4+Ml0pPj4yXT1jfSxmdW5jdGlvbiByaWUobCl7dmFyIGYsYz0wO2Y9MHxhWzgrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0sYz0wfGFbYVs0NjY5MF0+PjJdLChsPTB8YVs0NjY2M10pPj4+MD49KDB8YVs0NjY2NF0pPj4+MCYmKFEwKDE4NjY0OCwxKSxsPTB8YVs0''@;'; put 'put ''NjY2M10pLGZlW2w+PjBdPTAsYVs0NjY2M109bD0wfGFbNDY2NjJdLFZsKGYsYyxsKSwwfGFbMTIrKDB8YVtmKzE2Pj4yXSk+PjJdJiYoYz0wfGFbNCsoMHxhWzQ2NjkwXSk+PjJdLChsPTB8YVs0NjY3OV0pPj4+MD49KDB8YVs0NjY4MF0pPj4+MCYmKFEwKDE4NjcxMiwxKSxsPTB8YVs0NjY3''@;'; put 'put ''OV0pLGZlW2w+PjBdPTAsYVs0NjY3OV09bD0wfGFbNDY2NzhdLFZsKGYsYyxsKSksX1syXT0xLF9bNl09MSxhWzQ2NjkyXT0wLGFbNDY2OTZdPTB9LGZ1bmN0aW9uIHQ3ZShsKXt2YXIgZixjPTA7Zj0wfGFbOCsoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSwoMHxhWzQ2NjYyXSkhPSgwfChsPTB8''@;'; put 'put ''YVs0NjY2M10pKSYmKGM9MHxhWzgrKDB8YVs0NjY5MF0pPj4yXSxsPj4+MD49KDB8YVs0NjY2NF0pPj4+MCYmKFEwKDE4NjY0OCwxKSxsPTB8YVs0NjY2M10pLGZlW2w+PjBdPTAsYVs0NjY2M109bD0wfGFbNDY2NjJdLFZsKGYsYyxsKSksKDB8YVs0NjY3OF0pIT0oMHwobD0wfGFbNDY2Nzld''@;'; put 'put ''KSkmJihjPTB8YVsxMisoMHxhWzQ2NjkwXSk+PjJdLGw+Pj4wPj0oMHxhWzQ2NjgwXSk+Pj4wJiYoUTAoMTg2NzEyLDEpLGw9MHxhWzQ2Njc5XSksZmVbbD4+MF09MCxhWzQ2Njc5XT1sPTB8YVs0NjY3OF0sVmwoZixjLGwpKSxfWzldPTEsX1sxMV09MSxhWzQ2Njk5XT0wLGFbNDY3MDFdPTB9''@;'; put 'put ''LGZ1bmN0aW9uIE1XKGwpe3ZhciBmLGM9MDtmPTB8YVs4KygwfGFbMTYrKGx8PTApPj4yXSk+PjJdLCgwfGFbNDY2NjJdKSE9KDB8KGw9MHxhWzQ2NjYzXSkpJiYoYz0wfGFbMTYrKDB8YVs0NjY5MF0pPj4yXSxsPj4+MD49KDB8YVs0NjY2NF0pPj4+MCYmKFEwKDE4NjY0OCwxKSxsPTB8YVs0''@;'; put 'put ''NjY2M10pLGZlW2w+PjBdPTAsYVs0NjY2M109bD0wfGFbNDY2NjJdLFZsKGYsYyxsKSksKDB8YVs0NjY2Nl0pIT0oMHwobD0wfGFbNDY2NjddKSkmJihjPTB8YVsyNCsoMHxhWzQ2NjkwXSk+PjJdLGw+Pj4wPj0oMHxhWzQ2NjY4XSk+Pj4wJiYoUTAoMTg2NjY0LDEpLGw9MHxhWzQ2NjY3XSks''@;'; put 'put ''ZmVbbD4+MF09MCxhWzQ2NjY3XT1sPTB8YVs0NjY2Nl0sVmwoZixjLGwpKSwoMHxhWzQ2NjcwXSkhPSgwfChsPTB8YVs0NjY3MV0pKSYmKGM9MHxhWzIwKygwfGFbNDY2OTBdKT4+Ml0sbD4+PjA+PSgwfGFbNDY2NzJdKT4+PjAmJihRMCgxODY2ODAsMSksbD0wfGFbNDY2NzFdKSxmZVtsPj4w''@;'; put 'put ''XT0wLGFbNDY2NzFdPWw9MHxhWzQ2NjcwXSxWbChmLGMsbCkpLCgwfGFbNDY2NzhdKSE9KDB8KGw9MHxhWzQ2Njc5XSkpJiYoYz0wfGFbMjgrKDB8YVs0NjY5MF0pPj4yXSxsPj4+MD49KDB8YVs0NjY4MF0pPj4+MCYmKFEwKDE4NjcxMiwxKSxsPTB8YVs0NjY3OV0pLGZlW2w+PjBdPTAsYVs0''@;'; put 'put ''NjY3OV09bD0wfGFbNDY2NzhdLFZsKGYsYyxsKSksKDB8YVs0NjY4Ml0pIT0oMHwobD0wfGFbNDY2ODNdKSkmJihjPTB8YVszNisoMHxhWzQ2NjkwXSk+PjJdLGw+Pj4wPj0oMHxhWzQ2Njg0XSk+Pj4wJiYoUTAoMTg2NzI4LDEpLGw9MHxhWzQ2NjgzXSksZmVbbD4+MF09MCxhWzQ2NjgzXT1s''@;'; put 'put ''PTB8YVs0NjY4Ml0sVmwoZixjLGwpKSwoMHxhWzQ2Njg2XSkhPSgwfChsPTB8YVs0NjY4N10pKSYmKGM9MHxhWzMyKygwfGFbNDY2OTBdKT4+Ml0sbD4+PjA+PSgwfGFbNDY2ODhdKT4+PjAmJihRMCgxODY3NDQsMSksbD0wfGFbNDY2ODddKSxmZVtsPj4wXT0wLGFbNDY2ODddPWw9MHxhWzQ2''@;'; put 'put ''Njg2XSxWbChmLGMsbCkpLF9bMTBdPTEsX1sxMl09MSxfWzNdPTEsX1s0XT0xLF9bN109MSxfWzhdPTEsYVs0NjcwMF09MCxhWzQ2NzAyXT0wLGFbNDY2OTNdPTAsYVs0NjY5NF09MCxhWzQ2Njk3XT0wLGFbNDY2OThdPTB9LGZ1bmN0aW9uIElXKGwpe3ZhciBjPTA7c3dpdGNoKDB8YVs2NCso''@;'; put 'put ''bHw9MCk+PjJdKXtjYXNlIDA6Yz0wfGZ1bmN0aW9uIFRUKGwpe3ZhciBjLGY9MCxwPTAsbT0wO3A9bHw9MCxtPTQwKyhmPWM9MHx2cigzOTIpKXwwO2Rve2FbZj4+Ml09YVtwPj4yXSxmPWYrNHwwLHA9cCs0fDB9d2hpbGUoKDB8Zik8KDB8bSkpO3JldHVybiBhWyhtPWMrNjB8MCk+PjJdPWFb''@;'; put 'put ''KHA9bCs2MHwwKT4+Ml0sYVttKzQ+PjJdPWFbcCs0Pj4yXSxhW20rOD4+Ml09YVtwKzg+PjJdLGFbbSsxMj4+Ml09YVtwKzEyPj4yXSxhW20rMTY+PjJdPWFbcCsxNj4+Ml0sYVsobT1jKzgwfDApPj4yXT1hWyhwPWwrODB8MCk+PjJdLGFbbSs0Pj4yXT1hW3ArND4+Ml0sYVttKzg+PjJdPWFb''@;'; put 'put ''cCs4Pj4yXSxhW20rMTI+PjJdPWFbcCsxMj4+Ml0sYVttKzE2Pj4yXT1hW3ArMTY+PjJdLDB8Y30oMHxhW2w+PjJdKSxmdW5jdGlvbiAkRyhsLGMsZixwKXtwfD0wO3ZhciBtLEEsYix3PTA7Yj1sZSxsZT1sZSsxNnwwLEE9YixtPTB8YVs2MCsoY3w9MCk+PjJdLElUKGx8PTAsZnw9MCksYVs1''@;'; put 'put ''NisoYz0wfGFbbCsxNjQ+PjJdKT4+Ml09MHxrOShjLDB8YVtjKzUyPj4yXSksMCE9KDB8aDAobSwxMzc0ODMsMCwxKSkmJjAhPSgwfGFbOCsoMHxhW20rMTY+PjJdKT4+Ml0pfHw2NzEwODg2NCZhW2MrMTUyPj4yXT93PTU6KFhtKDk4OTExLEEpLGM9LTEpLDU9PSgwfHcpJiYoYVtjKzM2Pj4y''@;'; put 'put ''XT1wLHB8fChhWyh3PWMrMTUyfDApPj4yXT0xMzQyMTc3Mjh8YVt3Pj4yXSksdz0wfGcyKGwsbSksUzkoYyksc0YobCksYz13KSxsZT1ifShjLDB8YVs4KygwfGFbbCsxNj4+Ml0pPj4yXSw2Nzc5NywwKSxmdW5jdGlvbiBaRyhsKXtzRihsfD0wKSxGdChsKX0oYyk7YnJlYWs7Y2FzZSAxOkU3''@;'; put 'put ''KDB8YVsxNjgrKDB8YVtsPj4yXSk+PjJdKX19LGZ1bmN0aW9uIGFpZShsKXt2YXIgYyxmLHAsbTtwPWxlLGxlPWxlKzE2fDAsYz1wLGY9MHxhWzgrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0sMHxhWzQ2NzAzXXx8KGFbNDY3MDNdPWFbNDY3OF0sYVs0NjcwNF09NTcsYVs0NjcwNV09MTkpLGFb''@;'; put 'put ''OCsoMHxhW2YrNjQ+PjJdKT4+Ml09MTg2ODEyLFlUKGYsMSksYVtjPj4yXT0wLGZlW2MrND4+MF09MT09KDB8ZmVbMTE1KygwfGFbZisxNj4+Ml0pPj4wXSkmMSxmZVtjKzU+PjBdPTEmKDA9PSgwfChtPTB8YVtsKzY0Pj4yXSkpfDM9PSgwfG0pKSxmZVtjKzY+PjBdPTAsSUYoZixsLDEsYyks''@;'; put 'put ''bGU9cH0sZnVuY3Rpb24gbDdlKGwpe3ZhciBjLGYscCxtLEEsdyxiLGs7Yz1sZSxsZT1sZSszMnwwLGY9YysyNHwwLHA9YysxNnwwLEE9YyxtPTB8YVsxNisobHw9MCk+PjJdLEVuKGwsNjg2MjMpLGI9MHxhWzQrKGs9MHxhW2FbbCsxMj4+Ml0+PjJdKT4+Ml0sdz0wfGFbays4Pj4yXSxhW0E+''@;'; put 'put ''PjJdPWFbaz4+Ml0sYVtBKzQ+PjJdPWIsYVtBKzg+PjJdPXcsT3IobCw2ODYzMyxBKSxhW3A+PjJdPTB8dGkoMHxhW20rOD4+Ml0pLE9yKGwsNjg2NjgscCksYVtmPj4yXT0wfEFyKDB8YVtsKzE2OD4+Ml0sMHxhW2wrMTY0Pj4yXSksT3IobCw2ODY4MSxmKSxFbihsLDY4Njk0KSxFbihsLDY4''@;'; put 'put ''NzA0KSxFbihsLDY4NzEyKSxFbihsLDY4NzIwKSxFbihsLDY4NzI4KSxFbihsLDY4NzM2KSxFbihsLDY4NzQ0KSxFbihsLDY4NzQ4KSxFbihsLDY4NzUzKSxsZT1jfSxmdW5jdGlvbiBGVyhsKXtFbihsfD0wLDY4NjA0KX0sZnVuY3Rpb24gaGllKGwpe2FbNDY3MTBdPTJ9LGZ1bmN0aW9uIExG''@;'; put 'put ''KGwpe2FbNDY3MTBdPTF9LGZ1bmN0aW9uIFpDKGwpe2FbNDY3MTBdPTJ9LGZ1bmN0aW9uIGRpZShsKXthWzQ2NzEwXT0wfSxmdW5jdGlvbiBVVChsKXthWzQ2NzEwXT0yfSxmdW5jdGlvbiBWVyhsKXt2YXIgYz0wLGY9MCxwPTA7c3dpdGNoKGY9MHxhWzE2KyhsfD0wKT4+Ml0sMHxhW2wrNjQ+''@;'; put 'put ''PjJdKXtjYXNlIDA6RW4obCw2ODIyMCksMHwoZj0wfGFbKGM9ZisyMDh8MCk+PjJdKSYmMHxmZVtmPj4wXSYmKEVuKGwsNjgyMzQpLEVuKGwsMHxNMSgwfGFbYz4+Ml0pKSxFbihsLDE1MzU5OSkpO2JyZWFrO2Nhc2UgMTowfChwPTB8YVsoYz1mKzIwOHwwKT4+Ml0pJiYwfGZlW3A+PjBdJiYo''@;'; put 'put ''RW4obCw2ODIzNCksRW4obCwwfE0xKDB8YVtjPj4yXSkpLEVuKGwsMTAyNjA0KSxFbihsLDB8TTEoMHx0aSgwfGFbZis4Pj4yXSkpKSxFbihsLDE1MzU5OSkpO2JyZWFrO2Nhc2UgMzpwPTB8TTEoMHx0aSgwfGFbZis4Pj4yXSkpLEVuKGwsNjgyNDMpLEVuKGwscCksRW4obCw2ODI1MyksRW4o''@;'; put 'put ''bCxwKSxFbihsLDY4MjA4KX19LGZ1bmN0aW9uIFJGKGwpe3ZhciBjO3N3aXRjaChjPTB8YVsxNisobHw9MCk+PjJdLDB8YVtsKzY0Pj4yXSl7Y2FzZSAyOkpUKGwsMHxhW2MrMjY0Pj4yXSwwfGFbYysyNzI+PjJdLDB8YVtjKzI2OD4+Ml0sMHxhW2MrMjA4Pj4yXSwwfGFbYysyMjg+PjJdLDB8''@;'; put 'put ''YVtjKzI0ND4+Ml0sMHxhW2MrMjEyPj4yXSk7YnJlYWs7Y2FzZSAzOkpUKGwsMHxhW2MrMjY0Pj4yXSwwfGFbYysyNzI+PjJdLDB8YVtjKzI2OD4+Ml0sMHxhW2MrMjA4Pj4yXSwwfGFbYysyMjg+PjJdLDB8YVtjKzI0ND4+Ml0sMHxhW2MrMjEyPj4yXSksRW4obCw2ODIxMil9fSxmdW5jdGlv''@;'; put 'put ''biBqVyhsKXt2YXIgYyxmLHAsbSxBLHcsYixrO2M9bGUsbGU9bGUrMzJ8MCxmPWMrMjR8MCxwPWMrMTZ8MCxBPWMsbT0wfGFbMTYrKGx8PTApPj4yXSxFbihsLDY4NjIzKSxiPTB8YVs0KyhrPTB8YVthW2wrMTI+PjJdPj4yXSk+PjJdLHc9MHxhW2srOD4+Ml0sYVtBPj4yXT1hW2s+PjJdLGFb''@;'; put 'put ''QSs0Pj4yXT1iLGFbQSs4Pj4yXT13LE9yKGwsNjg2MzMsQSksYVtwPj4yXT0wfHRpKDB8YVttKzg+PjJdKSxPcihsLDY4NjY4LHApLGFbZj4+Ml09MHxBcigwfGFbbCsxNjg+PjJdLDB8YVtsKzE2ND4+Ml0pLE9yKGwsNjg2ODEsZiksRW4obCw2ODY5NCksRW4obCw2ODcwNCksRW4obCw2ODcx''@;'; put 'put ''MiksRW4obCw2ODcyMCksRW4obCw2ODcyOCksRW4obCw2ODczNiksRW4obCw2ODc0NCksRW4obCw2ODc0OCksRW4obCw2ODc1MyksbGU9Y30sZnVuY3Rpb24geWllKGwpe0VuKGx8PTAsNjg2MDQpfSxmdW5jdGlvbiB3aWUobCl7YVs0NjcxNl09Mn0sZnVuY3Rpb24gYmllKGwpe2FbNDY3MTZd''@;'; put 'put ''PTF9LGZ1bmN0aW9uIF9pZShsKXthWzQ2NzE2XT0yfSxmdW5jdGlvbiBYVChsKXthWzQ2NzE2XT0wfSxmdW5jdGlvbiBaVyhsKXthWzQ2NzE2XT0yfSxmdW5jdGlvbiBNaWUobCl7dmFyIGMsZixwLG0sQTtmPWxlLGxlPWxlKzE2fDAsYz1mLEVuKGx8PTAsNzMzMzIpLEVuKGwsMj09KDB8YVts''@;'; put 'put ''KzY0Pj4yXSk/NzMzNDc6MTUzNTk5KSxtPTB8YVs0KyhBPTB8YVthW2wrMTI+PjJdPj4yXSk+PjJdLHA9MHxhW0ErOD4+Ml0sYVtjPj4yXT1hW0E+PjJdLGFbYys0Pj4yXT1tLGFbYys4Pj4yXT1wLE9yKGwsNzMzNTgsYyksbGU9Zn0sZnVuY3Rpb24gVVcobCl7dmFyIG0sQSxjPTAsZj0wLHA9''@;'; put 'put ''MDtBPWxlLGxlPWxlKzMyfDAsbT1BKzh8MCxwPUEsRW4obHw9MCw3MzI4NiksYz1sKzEyfDAsMiE9KDB8YVsoZj1sKzY0fDApPj4yXSkmJihhW3A+PjJdPWFbMjgrKDB8YVtjPj4yXSk+PjJdLE9yKGwsNzMyOTcscCkpLDA9PSgwfGFbMjArKDB8YVtjPj4yXSk+PjJdKSYmMiE9KDB8YVtmPj4y''@;'; put 'put ''XSkmJihjPTB8YVtsKzQ3Nj4+Ml0sZj0wfGFbbCs0ODA+PjJdLHA9MHxhW2wrNDg0Pj4yXSxhW20+PjJdPWFbbCs0NzI+PjJdLGFbbSs0Pj4yXT1jLGFbbSs4Pj4yXT1mLGFbbSsxMj4+Ml09cCxPcihsLDY5NjY2LG0pKSxFbihsLDczMzEyKSxFbihsLDczMzI1KSxsZT1BfSxmdW5jdGlvbiBF''@;'; put 'put ''aWUobCl7dmFyIGYscCxtLEEsdyxiLGssYz0wLE09MCxEPTA7aWYoaz1sZSxsZT1sZSszMnwwLGI9aysyNHwwLHA9ays4fDAsdz1rLG09MHxhWzE2KyhsfD0wKT4+Ml0sZmVbMTkzNzY4XT0wLEE9bSs4fDAsISgwfGFbMjgrKDB8YVsoZj1sKzEyfDApPj4yXSk+PjJdKSl7YVt3Pj4yXT0wfHRp''@;'; put 'put ''KDB8YVtBPj4yXSksT3IobCw2OTU5Nyx3KSxFbihsLDI9PSgwfGFbKGM9bCs2NHwwKT4+Ml0pPzY5NjMwOjY5NjEyKTtkb3tpZighKDB8YVsyMCsoMHxhW2Y+PjJdKT4+Ml0pKXtpZigyPT0oMHxhW2M+PjJdKSl7RD0wfGFbbCs0NjA+PjJdLE09MHxhW2wrNDY0Pj4yXSxjPTB8YVtsKzQ2OD4+''@;'; put 'put ''Ml0sYVtwPj4yXT1hW2wrNDU2Pj4yXSxhW3ArND4+Ml09RCxhW3ArOD4+Ml09TSxhW3ArMTI+PjJdPWMsT3IobCw2OTY2NixwKTticmVha31FbihsLDY5NjQyKTticmVha319d2hpbGUoMCk7RW4obCw2OTY5NiksdE4obCwwfGFbMjQrKDB8YVtmPj4yXSk+PjJdLDEzZTMpLGZ1bmN0aW9uIEVh''@;'; put 'put ''ZShsKXtsfD0wO3ZhciBmLHAsYz0wLG09MDtwPWxlLGxlPWxlKzE2fDAsZj1wLGM9MHxhWzQ3MjY2XTtlOmRve2lmKDB8Yylmb3IoYz0wfG1pWzYzJmFbYz4+Ml1dKGMsMCwxMjgpOzspe2lmKCFjKWJyZWFrIGU7MHxmZVtjKzE2Pj4wXXx8KGFbZj4+Ml09YVtjKzEyPj4yXSxPcihsLDEwNDQ2''@;'; put 'put ''MixmKSxFbihsLDEwNDQ4MCksTlEobCxjKSxFbihsLDEwNDQ5OCksRW4obCwxMDQ1MTMpKSxjPTB8bWlbNjMmYVsobT0wfGFbNDcyNjZdKT4+Ml1dKG0sYyw4KX19d2hpbGUoMCk7bGU9cH0obCksMHwoYz0wfGFbMjArKDB8YVtmPj4yXSk+PjJdKSYmKGFbdz4+Ml09YVtjPj4yXSxhW3crND4+''@;'; put 'put ''Ml09MCx0TihsLDAsdykpfWFbNDY3MjBdPTE9PSgwfGZlWzExNSsoMHxhWzE2KygwfGFbQT4+Ml0pPj4yXSk+PjBdKT8xOi0xLDB8ZmVbMTkzNzY4XXx8KEVuKGwsNjk3MTYpLGZlWzE5Mzc2OF09MSksMHwoYz0wfGFbbSsyMDg+PjJdKSYmKGFbYj4+Ml09MHxuTihjLDB8YVs0NjcyMF0pLE9y''@;'; put 'put ''KGwsNjk3MjksYikpLGxlPWt9LGZ1bmN0aW9uIFRpZShsKXt2YXIgcCxtLEEsdyxiLGssRCxSLEcscSxwZSxnZSxPZSxMZSxSZSxjPTAsZj0wLE09MCxiZT0wO2dlPWxlLGxlPWxlKzE0NHwwLHBlPWdlKzEyOHwwLHE9Z2UrMTEyfDAsRz1nZSs3MnwwLFI9Z2UrNTZ8MCxEPWdlKzQwfDAsTT1n''@;'; put 'put ''ZSszMnwwLHA9Z2UrMjR8MCxjPWdlKzh8MCxtPTB8YVs0NTYrKGx8PTApPj4yXSxiPTB8YVtsKzQ2MD4+Ml0sQT0wfGFbbCs0NjQ+PjJdLHc9MHxhW2wrNDY4Pj4yXSxhWyhmPWdlKT4+Ml09YmU9MSsoMHxhWzI4KygwfGFbKGs9bCsxMnwwKT4+Ml0pPj4yXSl8MCxhW2YrND4+Ml09YmUsT3Io''@;'; put 'put ''bCw2OTIwOCxmKSwwfGFbMjArKDB8YVtrPj4yXSk+PjJdfHwoYVtjPj4yXT1tLGFbYys0Pj4yXT1iLGFbYys4Pj4yXT1BLGFbYysxMj4+Ml09dyxPcihsLDY5MjI1LGMpKSxhW3A+PjJdPTB8YVsoZj1sKzM2MHwwKT4+Ml0/NjkyNTk6NjkyNjksT3IobCw2OTI3OCxwKSwxPT0oMHxhWyhjPWwr''@;'; put 'put ''NjR8MCk+PjJdKSYmKGFbTT4+Ml09QSxhW00rND4+Ml09dyxPcihsLDY5MzAzLE0pKSxNPTB8YVtsKzIwMD4+Ml0sYmU9MHxhW2wrMjA0Pj4yXSxhW0Q+PjJdPWFbbCsxOTY+PjJdLGFbRCs0Pj4yXT1NLGFbRCs4Pj4yXT1iZSxPcihsLDY5MzQyLEQpLDB8YVsyMCsoMHxhW2s+PjJdKT4+Ml18''@;'; put 'put ''fChhW1I+PjJdPW0sYVtSKzQ+PjJdPWIsYVtSKzg+PjJdPUEtbSxhW1IrMTI+PjJdPXctYixPcihsLDY5MzYyLFIpKSxSZT0rX1tsKzQ5Nj4+M10sYmU9MHxhW2Y+PjJdLExlPStfW2wrNTA0Pj4zXSxPZT0rX1tsKzUxMj4+M10sX1tHPj4zXT0rX1tsKzQ4OD4+M10sX1tHKzg+PjNdPVJlLGFb''@;'; put 'put ''RysxNj4+Ml09YmUsX1tHKzI0Pj4zXT1MZSxfW0crMzI+PjNdPU9lLE9yKGwsNjk0MDIsRyksMT09KDB8YVtjPj4yXSkmJigoMHxBKT4xNDM5OXwoMHx3KT4xNDM5OSYmKGJlPTB8YVsxNisoMHxhW2s+PjJdKT4+Ml0sYVtxPj4yXT1BLGFbcSs0Pj4yXT13LGFbcSs4Pj4yXT0xNDQwMCxHc1s2''@;'; put 'put ''MyZiZV0oNjk0NDUscSkpLGFbcGU+PjJdPW0sYVtwZSs0Pj4yXT1iLGFbcGUrOD4+Ml09QSxhW3BlKzEyPj4yXT13LE9yKGwsNjk1NDAscGUpKSxsZT1nZX0sZnVuY3Rpb24gRkYobCl7dmFyIGMsZixwO3A9bGUsbGU9bGUrMTZ8MCxmPXAsMHxhWzIwKygwfGFbKGM9MTIrKGx8PTApfDApPj4y''@;'; put 'put ''XSk+PjJdJiYoRW4obCw2OTEzMiksdE4obCwwLDQrKDB8YVsyMCsoMHxhW2M+PjJdKT4+Ml0pfDApKSxFbihsLDY5MTQ5KSxFbihsLDY5MTc2KSxhW2Y+PjJdPWFbMjgrKDB8YVtjPj4yXSk+PjJdLE9yKGwsNjkxOTEsZiksbGU9cH0sZnVuY3Rpb24gdTdlKGwpe3ZhciBjLGY7Yz1sZSxsZT1s''@;'; put 'put ''ZSsxNnwwLGFbKGY9Yyk+PjJdPTB8dGkoMHxhWzgrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0pLE9yKGwsNjkxMjUsZiksRW4obCw2OTExOCksbGU9Y30sZnVuY3Rpb24gYzdlKGwpe0VuKGx8PTAsODQ1NTIpfSxmdW5jdGlvbiBJaWUobCl7RW4obHw9MCw2OTExOCl9LGZ1bmN0aW9uIERpZShs''@;'; put 'put ''KXtFbihsfD0wLDg0NTUyKX0sZnVuY3Rpb24gTGllKGwpe0VuKGx8PTAsNjkxMTgpfSxmdW5jdGlvbiBRVyhsKXtFbihsfD0wLDg0NTUyKX0sZnVuY3Rpb24gQmllKGwpe3ZhciBjPTA7RW4obHw9MCw3NDgzOCksMHwoYz0wfExpKDB8YVsxNjgrKDB8YVtsPj4yXSk+PjJdLDc0ODk0KSkmJjB8''@;'; put 'put ''ZmVbYz4+MF0mJihFbihsLDc0OTA1KSxFbihsLGMpLEVuKGwsNzQ5MjkpKSxFbihsLDc0OTUwKSxFbihsLDc0OTk4KSxFbihsLDc1MDUyKSxFbihsLDB8TTEoMHxhW2FbYVsoYz1sKzEyfDApPj4yXT4+Ml0+PjJdKSksRW4obCw3ODE4MSksRW4obCwwfE0xKDB8YVs0KygwfGFbYVtjPj4yXT4+''@;'; put 'put ''Ml0pPj4yXSkpLEVuKGwsNzgxOTEpLEVuKGwsMHxNMSgwfGFbOCsoMHxhW2FbYz4+Ml0+PjJdKT4+Ml0pKSxFbihsLDc1NDM0KSxFbihsLDc1NDU4KX0sZnVuY3Rpb24gUGllKGwpe3ZhciBwLG0sQSx3LGIsayxjPTAsZj0wO0E9bGUsbGU9bGUrNDh8MCxtPUErMTZ8MCxwPUErOHwwLGY9QSxj''@;'; put 'put ''PTB8YVsxNisobHw9MCk+PjJdLEVuKGwsNzQ2NzMpLDB8ZmVbKDB8dGkoMHxhWyhjPWMrOHwwKT4+Ml0pKT4+MF0mJihFbihsLDc1Mzk3KSxFbihsLDB8TTEoMHx0aSgwfGFbYz4+Ml0pKSkpLGFbZj4+Ml09MHxBcigwfGFbbCsxNjg+PjJdLDB8YVtsKzE2ND4+Ml0pLE9yKGwsNzQ2NzgsZiks''@;'; put 'put ''Zj0wfGFbbCs0NTI+PjJdLGFbcD4+Ml09YVtsKzQ0OD4+Ml0sYVtwKzQ+PjJdPWYsT3IobCw3NDY5NCxwKSxrPStfW2wrMzkyPj4zXSxiPStfW2wrNDAwPj4zXSx3PStfW2wrNDA4Pj4zXSxfW20+PjNdPStfW2wrMzg0Pj4zXSxfW20rOD4+M109ayxfW20rMTY+PjNdPWIsX1ttKzI0Pj4zXT13''@;'; put 'put ''LE9yKGwsNzQ3MjcsbSksRW4obCw3NDc1OCksRW4obCw3NDc5NCksRW4obCw3NjM4OCksbGU9QX0sZnVuY3Rpb24gZDdlKGwpe0VuKGx8PTAsNzQ2NjUpfSxmdW5jdGlvbiBxVyhsKXtFbihsfD0wLDc0NTEzKX0sZnVuY3Rpb24gRjUobCl7dmFyIGMsZixwLG07Zj1sZSxsZT1sZSsxNnwwLHA9''@;'; put 'put ''ZixjNyhsfD0wLDB8YVsyMTIrKG09MHxhW2wrMTY+PjJdKT4+Ml0sMCwxMTE0OTQsMHxhWyhjPW0rOHwwKT4+Ml0pLEVuKGwsNzQ2MTcpLFpzKGwsK19bbCs0ODg+PjNdKSxFbihsLDEwMjYwNCksWnMobCwrX1tsKzQ5Nj4+M10pLGFbcD4+Ml09MC0oMHxhW2wrMzYwPj4yXSksT3IobCw3NDYz''@;'; put 'put ''NixwKSxacyhsLCtfW2wrNTA0Pj4zXSksRW4obCwxMDI2MDQpLFpzKGwsLStfW2wrNTEyPj4zXSksRW4obCw3NDY2MCksMHxmZVsoMHx0aSgwfGFbYz4+Ml0pKT4+MF0mJihFbihsLDc0NTY5KSxFbihsLDB8TTEoMHx0aSgwfGFbYz4+Ml0pKSksRW4obCw3NDU3NykpLGxlPWZ9LGZ1bmN0aW9u''@;'; put 'put ''IEZpZShsKXtFbihsfD0wLDc0NTEzKX0sZnVuY3Rpb24gSGllKGwpe3ZhciBjLGY7YzcobHw9MCwwfGFbMjEyKyhmPTB8YVtsKzE2Pj4yXSk+PjJdLDAsMTA4MDA2LDB8YVsoYz1mKzh8MCk+PjJdKSxFbihsLDc2Mzg4KSxFbihsLDc0NTY5KSxFbihsLDB8TTEoMHx0aSgwfGFbYz4+Ml0pKSks''@;'; put 'put ''RW4obCw3NDU3Nyl9LGZ1bmN0aW9uIEhGKGwpe0VuKGx8PTAsNzQ1MTMpfSxmdW5jdGlvbiBlWShsKXt2YXIgZixwLGM9MDtjNyhsfD0wLDB8YVsyMTIrKGY9MHxhW2wrMTY+PjJdKT4+Ml0sYz0oMHwoYz0wfGFbbCsxNjA+PjJdKSk+MT8wfGFbKDB8YVszMDgrKDB8YVtsPj4yXSk+PjJdKSso''@;'; put 'put ''Yzw8Mik+PjJdOjAsMTExNDgxLDB8YVsocD1mKzh8MCk+PjJdKSxFbihsLDc2Mzg4KSxFbihsLDc0NTY5KSxFbihsLDB8TTEoMHx0aSgwfGFbcD4+Ml0pKSksRW4obCw3NDU3Nyl9LGZ1bmN0aW9uIGc3ZShsKXtFbihsfD0wLDc0NTEzKX0sZnVuY3Rpb24gbTdlKGwpe3ZhciBmLGM9MDtjNyhs''@;'; put 'put ''fD0wLDB8YVsyMTIrKGY9MHxhW2wrMTY+PjJdKT4+Ml0sMCwxMTE0NTAsMHxhWyhjPWYrOHwwKT4+Ml0pLEVuKGwsNzYzODgpLEVuKGwsNzQ1NjkpLEVuKGwsMHxNMShjPTB8bTIoMTAyMDk1LDB8YVtjPj4yXSkpKSxGdChjKSxFbihsLDc0NTc3KX0sZnVuY3Rpb24gdjdlKGwpe0VuKGx8PTAs''@;'; put 'put ''NzQ1MTMpfSxmdW5jdGlvbiBBN2UobCl7RW4obHw9MCw3NjM0MyksRW4obCw3NDUxMyl9LGZ1bmN0aW9uIGppZShsKXt2YXIgYztFbihsfD0wLDc1NDE4KSxFbihsLDB8cVQoMHxhW2FbYVsoYz1sKzEyfDApPj4yXT4+Ml0+PjJdKSksRW4obCw3ODE4MSksRW4obCwwfHFUKDB8YVs0KygwfGFb''@;'; put 'put ''YVtjPj4yXT4+Ml0pPj4yXSkpLEVuKGwsNzgxOTEpLEVuKGwsMHxxVCgwfGFbOCsoMHxhW2FbYz4+Ml0+PjJdKT4+Ml0pKSxFbihsLDc1NDM0KX0sZnVuY3Rpb24gclkobCl7dmFyIGYscCxjPTA7cD1sZSxsZT1sZSsxNnwwLGY9cCxjPTB8YVsxNisobHw9MCk+PjJdLEVuKGwsNzUzOTUpLDB8''@;'; put 'put ''ZmVbKDB8dGkoMHxhWyhjPWMrOHwwKT4+Ml0pKT4+MF0mJihFbihsLDc1Mzk3KSxFbihsLDB8cVQoMHx0aSgwfGFbYz4+Ml0pKSkpLGFbZj4+Ml09MHxBcigwfGFbbCsxNjg+PjJdLDB8YVtsKzE2ND4+Ml0pLE9yKGwsNzU0MDYsZiksYVs0NjcyM109MCxsZT1wfSxmdW5jdGlvbiBTN2UobCl7''@;'; put 'put ''YVs0NjcyM109MX0sZnVuY3Rpb24gTTdlKGwpe2FbNDY3MjNdPS0xfSxmdW5jdGlvbiBPN2UobCl7dmFyIGM7RW4obHw9MCw3ODE1MyksRW4obCw3ODE2MSksRW4obCwwfG5pKDB8YVthW2FbKGM9bCsxMnwwKT4+Ml0+PjJdPj4yXSkpLEVuKGwsNzgxODEpLEVuKGwsMHxuaSgwfGFbNCsoMHxh''@;'; put 'put ''W2FbYz4+Ml0+PjJdKT4+Ml0pKSxFbihsLDc4MTkxKSxFbihsLDB8bmkoMHxhWzgrKDB8YVthW2M+PjJdPj4yXSk+PjJdKSksRW4obCw3ODE5NCl9LGZ1bmN0aW9uIFI3ZShsKXt2YXIgQSx3LGM9MCxmPTAscD0wLG09MDt3PWxlLGxlPWxlKzMyfDAsQT13KzI0fDAsbT13KzE2fDAscD13Kzh8''@;'; put 'put ''MCxmPXcsYz0wfGFbMTYrKGx8PTApPj4yXSxhWzQ2NzI3XT1+figrX1tsKzIzMj4+M10tK19bbCsyMTY+PjNdKSxhWzQ2NzI2XT1+figrX1tsKzIyND4+M10tK19bbCsyMDg+PjNdKSxFbihsLDc2ODQwKSxFbihsLDc2ODQ3KSxjPTB8dGkoMHxhW2MrOD4+Ml0pLDB8ZmVbYz4+MF0mJihFbihs''@;'; put 'put ''LDc2OTE2KSxFbihsLDB8bmkoYykpLEVuKGwsNzY5MjQpKSxhW2Y+PjJdPTB8QXIoMHxhW2wrMTY4Pj4yXSwwfGFbbCsxNjQ+PjJdKSxPcihsLDc2OTMzLGYpLEVuKGwsNzY5NTMpLEVuKGwsNzY5ODgpLEVuKGwsNzcwMTYpLEVuKGwsNzcwMjIpLEVuKGwsNzcwNjUpLEVuKGwsNzcxMDYpLEVu''@;'; put 'put ''KGwsNzcxMjUpLEVuKGwsNzcxNDIpLEVuKGwsNzcxOTApLEVuKGwsNzcyNDMpLEVuKGwsNzczMTkpLEVuKGwsNzczOTUpLEVuKGwsNzc0MDQpLEVuKGwsNzc0MjcpLEVuKGwsNzc0NTQpLEVuKGwsNzc1MDcpLEVuKGwsNzc1MjkpLEVuKGwsNzc1NzQpLEVuKGwsNzc1ODYpLEVuKGwsNzc1OTYp''@;'; put 'put ''LEVuKGwsNzc2MjIpLEVuKGwsNzc1MDcpLEVuKGwsNzc2NzQpLEVuKGwsNzc1NzQpLEVuKGwsNzc1ODYpLEVuKGwsNzc3MTgpLEVuKGwsNzc0MjcpLEVuKGwsNzc0NTQpLEVuKGwsNzc1MDcpLEVuKGwsNzc2NzQpLEVuKGwsNzc1NzQpLEVuKGwsNzc1ODYpLEVuKGwsNzc1OTYpLEVuKGwsNzc2''@;'; put 'put ''MjIpLEVuKGwsNzc1MDcpLEVuKGwsNzc1MjkpLEVuKGwsNzc1NzQpLEVuKGwsNzc1ODYpLEVuKGwsNzc3MzEpLEVuKGwsNzc3MzkpLEVuKGwsNzc3NDUpLEVuKGwsNzc3NTkpLEVuKGwsNzc3NjcpLEVuKGwsNzc4MDApLGY9MTArKDB8YVs0NjcyN10pfDAsYVtwPj4yXT1hWzQ2NzI2XSxhW3Ar''@;'; put 'put ''ND4+Ml09ZixPcihsLDc3ODc3LHApLEVuKGwsNzc5MDcpLEVuKGwsNzc5MTYpLEVuKGwsNzc5NzQpLEVuKGwsNzc5ODQpLEVuKGwsNzgwNDkpLHA9MHxhWzQ2NzI3XSxhW20+PjJdPWFbNDY3MjZdLGFbbSs0Pj4yXT1wLE9yKGwsNzgwODYsbSksbT0wfGFbNDY3MjddLGFbQT4+Ml09YVs0Njcy''@;'; put 'put ''Nl0sYVtBKzQ+PjJdPW0sT3IobCw3ODExNCxBKSxsZT13fSxmdW5jdGlvbiBCN2UobCl7RW4obHw9MCw3NjM5MSksRW4obCw3NjQwMyksRW4obCw3NjQxMSksRW4obCw3NjQ3NCksRW4obCw3NjQwMyksRW4obCw3NjUxOSksRW4obCw3NjU2OCksRW4obCw3NjYyMiksRW4obCw3NjQwMyksRW4o''@;'; put 'put ''bCw3NjcyMiksRW4obCw3Njc3MSksRW4obCw3NjQwMyksRW4obCw3NjgyMyl9LGZ1bmN0aW9uIEY3ZShsKXtFbihsfD0wLDc2MzQzKX0sZnVuY3Rpb24gajdlKGwpe3ZhciBjLGYscDtjPWxlLGxlPWxlKzE2fDAsZj1jKzh8MCxwPWMsRW4obHw9MCw4MDQ1MSksRW4obCw4MDQ2NiksRW4obCw4''@;'; put 'put ''MDUwNSksRW4obCw4MDU1NCksYVtwPj4yXT0xMzczMTQsYVtwKzQ+PjJdPTgwNjQyLE9yKGwsODA2MjMscCksYVtmPj4yXT0xMzcxOTgsYVtmKzQ+PjJdPTgwNjQ4LE9yKGwsODA2MjMsZiksbGU9Y30sZnVuY3Rpb24gVjIobCl7dmFyIGMsZixwLG0sQSx3LGI7Yz1sZSxsZT1sZSs2NHwwLGY9''@;'; put 'put ''Yys4fDAsYVsoYj1jKT4+Ml09MHx0aSgwfGFbOCsoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSksT3IobCw3OTQwNCxiKSxBPS41KitfW2wrMzc2Pj4zXSorX1tsKzQ5Nj4+M10sbT0xODAqK1pmKC4wMDIwMDAwMDAwOTQ5OTQ5MDI2Kih3PS41KitfW2wrMzY4Pj4zXSorX1tsKzQ4OD4+M10pKSou''@;'; put 'put ''NjM2NjE5NzcyMzY3NTgxNCxwPTE4MCorWmYoLjAwMjAwMDAwMDA5NDk5NDkwMjYqQSkqLjYzNjYxOTc3MjM2NzU4MTQsX1tmPj4zXT13LF9bZis4Pj4zXT1BLF9bZisxNj4+M109LTUwMCxfW2YrMjQ+PjNdPXcsX1tmKzMyPj4zXT1BLF9bZis0MD4+M109MCxfW2YrNDg+PjNdPTEuMioobT5w''@;'; put 'put ''P206cCksT3IobCw3OTQyNixmKSxFbihsLDc5NTczKSxFbihsLDgwNDAzKSxsZT1jfSxmdW5jdGlvbiBaN2UobCl7RW4obHw9MCw3OTM4Nyl9LGZ1bmN0aW9uIG5vKGwpe0VuKGx8PTAsNzkzNDApfSxmdW5jdGlvbiBHN2UobCl7RW4obHw9MCw3OTMyMil9LGZ1bmN0aW9uIGFZKGwpe0VuKGx8''@;'; put 'put ''PTAsNzkzMDYpfSxmdW5jdGlvbiBXN2UobCl7RW4obHw9MCw3OTI4NSksam5bNDY3MjhdPStqbls0NjcyOF0tMn0sZnVuY3Rpb24gbFkobCl7RW4obHw9MCw3OTI2Nil9LGZ1bmN0aW9uIEdpZShsKXt2YXIgYyxmO2M9bGUsbGU9bGUrMTZ8MCxhWyhmPWMpPj4yXT0wfHRpKDB8YVs4KygwfGFb''@;'; put 'put ''MTYrKGx8PTApPj4yXSk+PjJdKSxPcihsLDc5MjQ0LGYpLGxlPWN9LGZ1bmN0aW9uIFk3ZShsKXtFbihsfD0wLDc5MjI4KX0sZnVuY3Rpb24gVTdlKGwpe0VuKGx8PTAsNzkyMTApLGpuWzQ2NzI4XT0ram5bNDY3MjhdLTV9LGZ1bmN0aW9uIFE3ZShsKXtFbihsfD0wLDc5MTk0KSxqbls0Njcy''@;'; put 'put ''OF09K2puWzQ2NzI4XSs1fSxmdW5jdGlvbiBxN2UobCl7dmFyIGMsZixwLEEsYixrLG09MCx3PTA7Yz1sZSxsZT1sZSszMnwwLGY9YysyNHwwLHA9YysxNnwwLG09MHxhWzE2KyhsfD0wKT4+Ml0saz0wfGFbKHc9MHxhW2FbbCsxMj4+Ml0+PjJdKT4+Ml0sYj0wfGFbdys0Pj4yXSx3PTB8YVt3''@;'; put 'put ''Kzg+PjJdLGFbKEE9Yyk+PjJdPTgxMDk0LGFbQSs0Pj4yXT1rLGFbQSs4Pj4yXT1iLGFbQSsxMj4+Ml09dyxPcihsLDgzNzA0LEEpLG09MHx0aSgwfGFbbSs4Pj4yXSksYVtwPj4yXT04MTA5NCxhW3ArND4+Ml09bSxPcihsLDgzNzM2LHApLGFbZj4+Ml09ODEwOTQsT3IobCw4Mzc1MCxmKSxs''@;'; put 'put ''ZT1jfSxmdW5jdGlvbiBldmUobCl7dmFyIGMsZjtsfD0wLGM9bGUsbGU9bGUrMTZ8MCxhWyhmPWMpPj4yXT04MTA5NCxPcihsLDgzNjUyLGYpLGxlPWN9LGZ1bmN0aW9uIHR2ZShsKXt2YXIgZixtLEEsdyxiLE0sRCxSLEcscSxwZSxnZSxiZSxPZSxMZSxSZSxIZSxWZSxxZSxydCxXZSxhdCxT''@;'; put 'put ''dCxrdCxzdCxFdCxadCxjdCxidCxhbixTbixIbix1cixIcixFcixmcixEcixKcixMcixsMCxWaSxjPTAscD0wLGs9MDtWaT1sZSxsZT1sZSszMDR8MCxsMD1WaSsyOTZ8MCxMcj1WaSsyODh8MCxKcj1WaSsyNzJ8MCxmcj1WaSsyNjR8MCxFcj1WaSsyNTZ8MCxIcj1WaSsyNDh8MCx1cj1WaSsy''@;'; put 'put ''NDB8MCxIbj1WaSsyMzJ8MCxTbj1WaSsyMjR8MCxhbj1WaSsyMTZ8MCxidD1WaSsyMDh8MCxjdD1WaSsyMDB8MCxadD1WaSsxOTJ8MCxFdD1WaSsxODR8MCxzdD1WaSsxNzZ8MCxrdD1WaSsxNjh8MCxTdD1WaSsxNjB8MCxhdD1WaSsxNTJ8MCxydD1WaSsxNDR8MCxxZT1WaSsxMzZ8MCxWZT1W''@;'; put 'put ''aSsxMjh8MCxIZT1WaSsxMjB8MCxSZT1WaSsxMTJ8MCxMZT1WaSsxMDR8MCxPZT1WaSs5NnwwLGJlPVZpKzg4fDAsZ2U9VmkrODB8MCxwZT1WaSs3MnwwLHE9VmkrNjR8MCxHPVZpKzU2fDAsUj1WaSs0OHwwLERyPVZpKzQwfDAsV2U9VmkrMjR8MCxEPVZpKzE2fDAsTT1WaSxBPTB8YVs0NTYr''@;'; put 'put ''KGx8PTApPj4yXSx3PTB8YVtsKzQ2MD4+Ml0sYj0wfGFbbCs0NjQ+PjJdLGs9MHxhW2wrNDY4Pj4yXSxtPWwrMzYwfDA7ZTpkb3tpZigwfGFbNDAyNV0pe3N3aXRjaCgwfGFbbT4+Ml0pe2Nhc2UgOTA6Y2FzZSAwOmJyZWFrIGV9VUEoKSxhWzQwMjVdPTB9fXdoaWxlKDApO3A9LjAxMzg4ODg4''@;'; put 'put ''ODg4ODg4ODg4OCooKygwfGspLSsoMHx3KSksYz0uMDEzODg4ODg4ODg4ODg4ODg4KigrKDB8YiktKygwfEEpKSxmPShrPTkwPT0oMHxhW20+PjJdKSk/cDpjLHA9az9jOnAsX1tNPj4zXT1mLF9bTSs4Pj4zXT1wLE9yKGwsODEyODEsTSksYVtEPj4yXT04MTA5NCxPcihsLDgxMjk2LEQpLGY+''@;'; put 'put ''MD8oYz0rZnVuY3Rpb24ganVlKGwpe3ZhciBjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MDtfW1NpPj4zXT1sPStsLGM9MHxhW1NpPj4yXSxwPSgwfChmPTB8YVtTaSs0Pj4yXSkpPDA7ZG97aWYocHxmPj4+MDwxMDQ4NTc2KXtpZigwPT0oMHxjKSYwPT0oMjE0NzQ4MzY0NyZm''@;'; put 'put ''fDApKXtsPS0xLyhsKmwpO2JyZWFrfWlmKHApe2w9KGwtbCkvMDticmVha31fW1NpPj4zXT0weDQwMDAwMDAwMDAwMDAwKmwsZj0wfGFbU2krND4+Ml0scD0tMTA3NyxjPTB8YVtTaT4+Ml0sbT05O2JyZWFrfWY+Pj4wPD0yMTQ2NDM1MDcxJiYoMD09KDB8YykmITAmMTA3MjY5MzI0OD09KDB8''@;'; put 'put ''Zik/bD0wOihwPS0xMDIzLG09OSkpfXdoaWxlKDApO3JldHVybiA5PT0oMHxtKSYmKG09Zis2MTQyNDJ8MCxhW1NpPj4yXT1jLGFbU2krND4+Ml09MTA3MjA3OTAwNisoMTA0ODU3NSZtKSxBPShNPShrPShiPStfW1NpPj4zXS0xKS8oYisyKSkqaykqTSxfW1NpPj4zXT1iLSh3PWIqKC41KmIp''@;'; put 'put ''KSxmPTB8YVtTaSs0Pj4yXSxhW1NpPj4yXT0wLGFbU2krND4+Ml09ZixBPWItKGw9K19bU2k+PjNdKS13K2sqKHcrKEEqKEEqKC4xNTMxMzgzNzY5OTIwOTM3MypBKy4yMjIyMjE5ODQzMjE0OTc4NCkrLjM5OTk5OTk5OTk5NDA5NDIpK00qKEEqKEEqKC4xNDc5ODE5ODYwNTExNjU4NipBKy4x''@;'; put 'put ''ODE4MzU3MjE2MTYxODA1KSsuMjg1NzE0Mjg3NDM2NjIzOSkrLjY2NjY2NjY2NjY2NjY3MzUpKSksbD0oYj0oaz0uMzAxMDI5OTk1NjYzNjExNzcqKHc9KyhwKyhtPj4+MjApfDApKSkrKE09LjQzNDI5NDQ4MTg3ODE2ODkqbCkpKyhNKyhrLWIpKyguNDM0Mjk0NDgxODc4MTY4OSpBKygzNjk0''@;'; put 'put ''MjM5MDc3MTU4OTMxZS0yOCp3KzI1MDgyOTQ2NzExNjQ1Mjc1ZS0yNyooQStsKSkpKSksK2x9KGYpLF9bMTkyMTRdPWMsYz1jKzMtKygwfH5+YykpOmM9MyxjPStxbCgxMCwrYyksX1sxOTIxNF09YyxfW1dlPj4zXT1jLF9bV2UrOD4+M109YyxPcihsLDgxNDY1LFdlKSxhW0RyPj4yXT04MTA5''@;'; put 'put ''NCxPcihsLDgxNTAwLERyKSxhW1I+PjJdPTgxMDk0LE9yKGwsODE1NTgsUiksYVtHPj4yXT04MTA5NCxPcihsLDgxNjE4LEcpLGFbcT4+Ml09ODEwOTQsT3IobCw4MTY2NyxxKSxhW3BlPj4yXT04MTA5NCxPcihsLDgxNzA2LHBlKSxhW2dlPj4yXT04MTA5NCxPcihsLDgxNzU3LGdlKSxhW2Jl''@;'; put 'put ''Pj4yXT04MTA5NCxPcihsLDgxODE5LGJlKSxhW09lPj4yXT04MTA5NCxPcihsLDgxOTI5LE9lKSxhW0xlPj4yXT04MTA5NCxPcihsLDgyMDIwLExlKSxhW1JlPj4yXT04MTA5NCxPcihsLDgyMDc0LFJlKSxhW0hlPj4yXT04MTA5NCxPcihsLDgyMTQzLEhlKSxPcihsLDgyMTc5LFZlKSxhW3Fl''@;'; put 'put ''Pj4yXT04MTA5NCxPcihsLDgyMzA0LHFlKSxhW3J0Pj4yXT04MTA5NCxPcihsLDgyMzMzLHJ0KSxPcihsLDgyMzczLGF0KSxhW1N0Pj4yXT04MTA5NCxPcihsLDgyNDY2LFN0KSxhW2t0Pj4yXT04MTA5NCxPcihsLDgyNTI1LGt0KSxhW3N0Pj4yXT04MTA5NCxPcihsLDgyNjA2LHN0KSxPcihs''@;'; put 'put ''LDgyNjc2LEV0KSxhW1p0Pj4yXT04MTA5NCxPcihsLDgyNzY1LFp0KSxhW2N0Pj4yXT04MTA5NCxPcihsLDgyODcwLGN0KSxhW2J0Pj4yXT04MTA5NCxPcihsLDgyOTQ2LGJ0KSxhW2FuPj4yXT04MTA5NCxPcihsLDgyOTg1LGFuKSxhW1NuPj4yXT04MTA5NCxPcihsLDgzMDg0LFNuKSxhW0hu''@;'; put 'put ''Pj4yXT04MTA5NCxPcihsLDgzMTMwLEhuKSxPcihsLDgzMjE5LHVyKSxhW0hyPj4yXT04MTA5NCxPcihsLDgzMjYwLEhyKSxhW0VyPj4yXT04MTA5NCxPcihsLDgzMzQzLEVyKSxhW2ZyPj4yXT04MTA5NCxPcihsLDgzNDQ0LGZyKSxfW0pyPj4zXT1wLF9bSnIrOD4+M109ZixPcihsLDgzNTA4''@;'; put 'put ''LEpyKSxPcihsLDgzNTM2LExyKSxPcihsLDgzNTQ0LGwwKSxsZT1WaX0sZnVuY3Rpb24gYWEobCl7dmFyIGM7Yz1sZSxsZT1sZSsxNnwwLE9yKGx8PTAsODEyNzQsYyksbGU9Y30sZnVuY3Rpb24gZTBlKGwpezB8R28obHw9MCkmJmZ1bmN0aW9uIHQwZShsKXt2YXIgQSx3LGM9MCxmPTAscD0w''@;'; put 'put ''LG09MDtpZih3PWxlLGxlPWxlKzQ4fDAsQT13KzMyfDAsbT13LGM9MHx4YyhsfD0wLC0xLDgpLGY9MHxTMShsLDAsbSksYTcobCwyLDgsbSksKHA9KDB8Yyk8MCkmKGY9MD09KDB8ZikpKWg3KGwpO2Vsc2V7Zj9hW20rMTY+PjJdPTM6Yz1wPzg6YyxhW20rOD4+Ml09YyxhW20rMjA+PjJdPTAs''@;'; put 'put ''cD0wfEdtZShsLEEsMCksYz0wfGFbQT4+Ml07ZG97aWYoMT09KDB8YykpaDcobCksYz0wO2Vsc2V7aWYoMHxhWzg0KygwfGFbOCsoMHxhW2wrMTY+PjJdKT4+Ml0pPj4yXSl7aDcobCksYz0wO2JyZWFrfWZvcihhW20rMTI+PjJdPTEsZj0wOyEoKDB8Zik+PSgwfGMpKTspbjBlKGM9MHxhW3Ar''@;'; put 'put ''KGY8PDIpPj4yXSxsKSxoNyhjKSxmPWYrMXwwLGM9MHxhW0E+PjJdO3IwZShsKSxUQygwfGFbQT4+Ml0scCxsLG0pLHBZKGwpLGkwZSgwfGFbQT4+Ml0scCxsKSxjPTB9fXdoaWxlKDApO2Zvcig7ISgoMHxjKT49KDB8YVtBPj4yXSkpOylGdCgwfGFbOCsoMHxhWzE2KygwfGFbKG09cCsoYzw8''@;'; put 'put ''Mil8MCk+PjJdKT4+Ml0pPj4yXSksTjUoMHxhW20+PjJdKSxvaShsLDB8YVttPj4yXSksYz1jKzF8MDtGdChwKX1sZT13fShsKSx0NChsKX0sSDUsQTIsZnVuY3Rpb24gR2xlKGwpe3ZhciBjPTAsZj0wO2ZvcihmPTB8RHQobHw9MCk7Zjspe2ZvcihjPTB8dzAobCxmKTtjOylhZyhjKSxjPTB8''@;'; put 'put ''UzAobCxjKTtvZyhmKSxmPTB8enQobCxmKX0hZnVuY3Rpb24gV2xlKGwpe2x8PTAsMCE9KDB8YVs0NzEzNF0pfCgwfGFbNDY3OTVdKTwwJiZlVihsKSwoMHxkaShsKSkhPSgwfGwpJiZsMihsLDAsMTM3NDgzKX0obCl9LGZ1bmN0aW9uIFNrKGwpe2x8PTA7dmFyIHAsbSxjPTAsZj0wLEE9MCx3''@;'; put 'put ''PTAsYj0wO2Zvcih3PTQsQT0wfEYwKDQwKSxhW0E+PjJdPTAsbT0rX1syMzI5M10sTW49MCxwPStDaCgxLDB8bCksYz1NbixNbj0wLDAhPSgwfGMpJjAhPSgwfHhuKT8oKGY9MHxnaSgwfGFbYz4+Ml0sMHxBLDB8dykpfHx6ZSgwfGMsMHx4biksRG49eG4pOmY9LTEsMSE9KDB8Zik/KF9bMjMy''@;'; put 'put ''OTNdPXAsTW49MCxzcygxMDIsMHxsKSxjPU1uLE1uPTAsMCE9KDB8YykmMCE9KDB8eG4pPygoZj0wfGdpKDB8YVtjPj4yXSwwfEEsMHx3KSl8fHplKDB8YywwfHhuKSxEbj14bik6Zj0tMSwxIT0oMHxmKT8oQT0wfFBmKDE4NzIxMiwxLDB8QSwwfHcpLHc9RG4sZj1Nbj0wLE1uPTAsMCE9KDB8''@;'; put 'put ''ZikmMCE9KDB8eG4pPygoYz0wfGdpKDB8YVtmPj4yXSwwfEEsMHx3KSl8fHplKDB8ZiwwfHhuKSxEbj14bik6Yz0tMSxjPTEhPSgwfGMpPzA6RG4pOmM9RG4pOmM9RG47ISgwfGMpOylpZihNbj0wLHNzKDEwMywwfGwpLGM9TW4sTW49MCwwIT0oMHxjKSYwIT0oMHx4bik/KChmPTB8Z2koMHxh''@;'; put 'put ''W2M+PjJdLDB8QSwwfHcpKXx8emUoMHxjLDB8eG4pLERuPXhuKTpmPS0xLDEhPSgwfGYpKWlmKE1uPTAsYTAoMjIsMHxsKSxjPU1uLE1uPTAsMCE9KDB8YykmMCE9KDB8eG4pPygoZj0wfGdpKDB8YVtjPj4yXSwwfEEsMHx3KSl8fHplKDB8YywwfHhuKSxEbj14bik6Zj0tMSwxIT0oMHxmKSlp''@;'; put 'put ''ZigxNCZpdFsxMzYrKDB8YVtsKzE2Pj4yXSk+PjFdJiYoTW49MCxzcygxMDQsMHxsKSxjPU1uLE1uPTAsMCE9KDB8YykmMCE9KDB8eG4pPygoZj0wfGdpKDB8YVtjPj4yXSwwfEEsMHx3KSl8fHplKDB8YywwfHhuKSxEbj14bik6Zj0tMSwxPT0oMHxmKSkpYz1EbjtlbHNle2lmKE1uPTAsWjEo''@;'; put 'put ''MjIsMHxsLDApLGM9TW4sTW49MCwwIT0oMHxjKSYwIT0oMHx4bik/KChmPTB8Z2koMHxhW2M+PjJdLDB8QSwwfHcpKXx8emUoMHxjLDB8eG4pLERuPXhuKTpmPS0xLDEhPSgwfGYpKXtiPTEyO2JyZWFrfWM9RG59ZWxzZSBjPURuO2Vsc2UgYz1EbjsxMj09KDB8YikmJihfWzIzMjkzXT1tKSxG''@;'; put 'put ''dCgwfEEpfSxmdW5jdGlvbiBFc2UobCl7dmFyIGM9MCxmPTA7Zm9yKGY9MHxEdChsfD0wKTtmOyl7Zm9yKGM9MHx3MChsLGYpO2M7KWFnKGMpLGM9MHxTMChsLGMpO29nKGYpLGY9MHx6dChsLGYpfSFmdW5jdGlvbiB4c2UobCl7c1gobHw9MCksRnQoMHxhWzE1MisoMHxhWyhsPWwrMTZ8MCk+''@;'; put 'put ''PjJdKT4+Ml0pLEZ0KDB8YVsxNDArKDB8YVtsPj4yXSk+PjJdKX0obCl9LGZ1bmN0aW9uIEFYKGwpe3ZhciBiLGssTSxELEcscSxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxSPTA7aWYocT1sZSxsZT1sZSsxMTJ8MCxiPXErNDB8MCxrPXErMTZ8MCxHPXErMTAwfDAsTT1xLEE9cSs4OHwwLEQ9''@;'; put 'put ''cSs1NnwwLGZ1bmN0aW9uIFlzZShsKXt2YXIgYyxmPTA7cjQobHw9MCwyKSxjPTB8ZXMobCwwfHNpKGwsMCw5MTM2OCwwKSwyLDIpLGY9NjU1MzUmKDB8ZXMobCwwfHNpKGwsMCw5MTM3NCwwKSxjLDIpKSxpdFsxNzYrKDB8YVsxNisoMHxkaShsKSk+PjJdKT4+MV09ZixmPSgwfGhyWzE3Niso''@;'; put 'put ''MHxhWzE2KygwfGRpKGwpKT4+Ml0pPj4xXSk8MTA/MHxpdFsxNzYrKDB8YVsxNisoMHxkaShsKSk+PjJdKT4+MV06MTAsaXRbMTc2KygwfGFbMTYrKDB8ZGkobCkpPj4yXSk+PjFdPWYsYVs0NzEzN109ZiY9NjU1MzUsaXRbMTc4KygwfGFbMTYrKDB8ZGkobCkpPj4yXSk+PjFdPSgwfGMpPCgw''@;'; put 'put ''fGYpP2M6ZixmdW5jdGlvbiB3WChsKXt2YXIgYz0wLGY9MDtmb3IoYz0wfER0KGx8PTApO2M7KXdrKGMpLGM9MHx6dChsLGMpO2ZvcihmPTB8RHQobCk7Zjspe2ZvcihjPTB8dzAobCxmKTtjOyliWChjKSxjPTB8UzAobCxjKTtmPTB8enQobCxmKX19KGwpfShsfD0wKSxjPTEmKG09Mj09KDB8''@;'; put 'put ''YVs0NzEzN10pKSwwfEdvKGwpKXtpZihmdW5jdGlvbiBVc2UobCxjKXtsfD0wO3ZhciBwLG0sQSxmPTA7QT1sZSxsZT1sZSsxNnwwLG09QSs4fDAsYVsoZj1BKzEyfDApPj4yXT1hWyhwPTEwOCsoY3w9MCl8MCk+PjJdLDIhPSgwfEhOKGwsMixmKSkmJiRyKDAsOTExNjksQSksYVtwPj4yXT1h''@;'; put 'put ''W2Y+PjJdLF9bYysyND4+M109K01sKGwsMHxzaShsLDAsOTEyMDIsMCksLTEsMCksX1tjPj4zXT0tK01sKGwsMHxzaShsLDAsOTEyMDQsMCksMS4wMDAxMjM0LDApLGFbYys0MD4+Ml09MHxlcyhsLDB8c2kobCwwLDkxMjE5LDApLDIxNDc0ODM2NDcsMCksYVtjKzEyMD4+Ml09MHxmdW5jdGlv''@;'; put 'put ''biBKc2UobCxjKXtsfD0wLGN8PTA7ZG97aWYoYyl7aWYobD0wfEhvKGwsYyksKChjPTB8ZmVbbD4+MF0pLTQ4fDApPj4+MDwxMCl7bD0oMHwobD0wfHIzKGwpKSk8NT9sOjA7YnJlYWt9bD0wfHZMKGMpPzB8eTAobCw5MTMzMCk/MHx5MChsLDkxMzM5KT8wfHkwKGwsMTM1NzA5KT8wfHkwKGws''@;'; put 'put ''OTEzNTApPyhsPTA9PSgwfHkwKGwsOTEzNjEpKSk/NDowOjM6MDoxOjI6MH1lbHNlIGw9MH13aGlsZSgwKTtyZXR1cm4gMHxsfShsLDB8c2kobCwwLDkxMjI2LDApKSxhW2MrMTMyPj4yXT0wfGZ1bmN0aW9uIFhzZShsLGMpe2x8PTAsY3w9MDtkb3tpZihjKXtpZihsPTB8SG8obCxjKSwoKGM9''@;'; put 'put ''MHxmZVtsPj4wXSktNDh8MCk+Pj4wPDEwKXtsPShsPTB8cjMobCkpPj4+MDwzP2w6MTticmVha31sPTB8dkwoYyk/MCE9KDB8eTAobCwxMzU3MDkpKSYmMCE9KDB8eTAobCwxMzczMDgpKT8wIT0oMHx5MChsLDk5NzMwKSkmJjAhPSgwfHkwKGwsMTA3NjUyKSkmJjAhPSgwfHkwKGwsMTA3NjU3''@;'; put 'put ''KSkmJihsPTA9PSgwfHkwKGwsOTEzMjUpKSk/MjoxOjA6MX1lbHNlIGw9MX13aGlsZSgwKTtyZXR1cm4gMHxsfShsLDB8c2kobCwwLDkxMjM2LDApKSxhW2MrMTM2Pj4yXT0wLGFbYysxMTI+PjJdPTI1NSYoMHxuZygwfExpKGwsOTEyNDUpLDApKSxhW2MrMTI4Pj4yXT0yNTUmKDB8bmcoMHxM''@;'; put 'put ''aShsLDkxMjU0KSwxKSksX1tjKzE1Mj4+M109K01sKGwsMHxzaShsLDAsOTEyNjksMCksMCwtMTc5NzY5MzEzNDg2MjMxNTdlMjkyKSxmPTB8ZXMobCwwfHNpKGwsMCw5MTI3OCwwKSwwLDApLGFbKGw9YysxNjB8MCk+PjJdPWYsKDB8Zik+NCYmKGFbbT4+Ml09ZiwkcigwLDkxMjkxLG0pLGFb''@;'; put 'put ''bD4+Ml09MCksbGU9QX0obCxSPTB8S3NlKCkpLGMyZShsLGssMCksbSYxOD09KDB8YVtrPj4yXSk/KGFbUisxMjQ+PjJdPWFbays4Pj4yXSxfW1IrMTQ0Pj4zXT0rX1trKzE2Pj4zXSxXNyhBLGwpLDB8ZmVbQSs4Pj4wXT8ocD0uMDEzODg4ODg4ODg4ODg4ODg4KitqbltBKzQ+PjJdLGY9LjAx''@;'; put 'put ''Mzg4ODg4ODg4ODg4ODg4OCoram5bQT4+Ml0pOihwPS4wNTU1NTU1NTU1NTU1NTU1NSxmPS4wNTU1NTU1NTU1NTU1NTU1NSksX1tNPj4zXT1mLF9bTSs4Pj4zXT1wLGM9MCk6YVtSKzEyND4+Ml09LTEsdz0wfHJXKGwsRywwKSwxPT0oMHxhW0c+PjJdKSlhW2I+PjJdPWFbTT4+Ml0sYVtiKzQ+''@;'; put 'put ''PjJdPWFbTSs0Pj4yXSxhW2IrOD4+Ml09YVtNKzg+PjJdLGFbYisxMj4+Ml09YVtNKzEyPj4yXSx5WChsLFIsYiksMHxjJiZ6NyhsLGspLEs2KGwpLGM9MDtlbHNle2ZvcihhNyhsLDIsOCxEKSxhW0QrMTI+PjJdPTEsQT0wPT0oMHxjKSxtPTA7ISgoMHxtKT49KDB8KGM9MHxhW0c+PjJdKSkp''@;'; put 'put ''Oyl4QyhjPTB8YVt3KyhtPDwyKT4+Ml0pLGFbYj4+Ml09YVtNPj4yXSxhW2IrND4+Ml09YVtNKzQ+PjJdLGFbYis4Pj4yXT1hW00rOD4+Ml0sYVtiKzEyPj4yXT1hW00rMTI+PjJdLHlYKGMsUixiKSxBfHx6NyhjLGspLHI0KGMsMiksSzYoYyksbT1tKzF8MDtUQyhjLHcsbCxEKSxjPTB9Zm9y''@;'; put 'put ''KDshKCgwfGMpPj0oMHxhW0c+PjJdKSk7KW9pKGwsMHxhW3crKGM8PDIpPj4yXSksYz1jKzF8MDtGdCh3KSxwVihSKX10NChsKSxsZT1xfSxmdW5jdGlvbiBlOChsKXt2YXIgYz0wLGY9MDtmb3IoZj0wfER0KGx8PTApO2Y7KXtmb3IoYz0wfHcwKGwsZik7YzspYWcoYyksYz0wfFMwKGwsYyk7''@;'; put 'put ''b2coZiksZj0wfHp0KGwsZil9fSxmdW5jdGlvbiBtc2UobCl7dmFyIFIsZ2UsYmUsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLEc9MCxxPTAscGU9MDtpZihiZT1sZSxsZT1sZSs4MHwwLGs9YmUrMzJ8MCxBPWJlKzI0fDAsbT1iZSsxNnwwLHc9YmUsZ2U9YmUrNzJ8''@;'; put 'put ''MCxSPWJlKzQwfDAsMHxHbyhsfD0wKSl7aWYoZnVuY3Rpb24gX3ZlKGwpe3I0KGx8PTAsMiksaXRbMTc2KygwfGFbbCsxNj4+Ml0pPj4xXT0yLGFbNDcxMzddPTIsZnVuY3Rpb24gRjcobCl7dmFyIHAsbSxjPTAsZj0wO2ZvcihwPTB8dnIoNTYqKGM9MHxHbyhsfD0wKSl8MCksYz0wfHZyKDQr''@;'; put 'put ''KGM8PDIpfDApLGFbMTUyKygwfGFbKG09bCsxNnwwKT4+Ml0pPj4yXT1jLGM9MHxEdChsKSxmPTA7Yzspd2soYyksYVsxMTIrKDB8YVtjKzE2Pj4yXSk+PjJdPXArKDU2KmZ8MCksYVsoMHxhWzE1MisoMHxhW20+PjJdKT4+Ml0pKyhmPDwyKT4+Ml09YyxjPTB8enQobCxjKSxmPWYrMXwwO2Zv''@;'; put 'put ''cihmPTB8RHQobCk7Zjspe2ZvcihjPTB8dzAobCxmKTtjOylnc2UoYyksYz0wfFMwKGwsYyk7Zj0wfHp0KGwsZil9fShsKX0obCksKHA9MHxMaShsLDk1NzM4KSk/MHxmZVtwPj4wXT8oYz0wfEdyKGwscCwwKSk/cGU9MDooYVttPj4yXT1wLCRyKDAsOTA0NDgsbSksJHIoMyw5MDQ4OCxBKSxj''@;'; put 'put ''PTAscGU9MSk6KGM9MCxwZT0xKTooYz0wLHBlPTApLEQ9MCE9KDB8KE09MHxzaShsLDEsOTU3MzgsMCkpKSwwfChwPTB8TGkobCwxNDA3NDIpKSYmMHxmZVtwPj4wXSYmKGI9dys4fDAsYVtrPj4yXT13LGFbays0Pj4yXT1iLDE9PSgwfGlsKHAsMTA1NTAzLGspKSkmJihfW2I+PjNdPStfW3c+''@;'; put 'put ''PjNdKSwwfEdvKGwpKXtpZihrPTB8clcobCxnZSwwKSwxPT0oMHxhW2dlPj4yXSkpe209MCE9KDB8Yyk7ZG97aWYobSlmPWM7ZWxzZXtpZihEJiYwfChmPTB8dnNlKGwsTSkpKWJyZWFrO2Y9MH19d2hpbGUoMCk7cD0wfHFWKGwsZiksMCE9KDB8Zil8MV5EfHxWbChwLE0sMTQyNDYzKSxxPTE2''@;'; put 'put ''KygwfER0KGwpKXwwLEZ0KDB8YVsxMTIrKDB8YVtxPj4yXSk+PjJdKSxhWzExMisoMHxhW3E+PjJdKT4+Ml09MCxMeShsKSxLNihsKSxjPTA9PSgwfHBlKXxtP2M6cH1lbHNle2ZvcihhNyhsLDIsOCxSKSxhW1IrMTI+PjJdPTAsYj0wPT0oMHxwZSksdz0wOyEoKDB8dyk+PSgwfGFbZ2U+PjJd''@;'; put 'put ''KSk7KXttPTB8YVtrKyh3PDwyKT4+Ml0sKGY9MCE9KDB8YykpJiYwIT0oMHxOcihtLGMpKT9wPWM6cT0yMztkb3tpZigyMz09KDB8cSkpe2lmKHE9MCxEJiYwfChHPTB8dnNlKG0sTSkpKXtwPUc7YnJlYWt9cD0wfX13aGlsZSgwKTt4QyhtKSxBPTB8cVYobSxwKSxjPWJ8Zj9jOkEsRCYmMD09''@;'; put 'put ''KDB8cCl8KDB8cCk9PSgwfGMpJiZWbChBLE0sMTQyNDYzKSxMeShtKSx3PXcrMXwwfXE9MTYrKDB8RHQobCkpfDAsRnQoMHxhWzExMisoMHxhW3E+PjJdKT4+Ml0pLGFbMTEyKygwfGFbcT4+Ml0pPj4yXT0wLFRDKDB8YVtnZT4+Ml0sayxsLFIpLEs2KGwpfWZvcihmPTA7ISgoMHxmKT49KDB8''@;'; put 'put ''YVtnZT4+Ml0pKTspb2kobCwwfGFbaysoZjw8Mik+PjJdKSxmPWYrMXwwO0Z0KGspfTB8cGUmJmtjKGwsOTU3MzgsMHx0aShjKSksdDQobCl9bGU9YmV9LGZ1bmN0aW9uIEN2ZShsKXt2YXIgYz0wLGY9MDtpZigwfChjPTB8RHQobHw9MCkpKXtmb3IoO2M7KXtmb3IoZj0wfHcwKGwsYyk7Zjsp''@;'; put 'put ''YWcoZiksZj0wfFMwKGwsZik7b2coYyksYz0wfHp0KGwsYyl9IWZ1bmN0aW9uIHFKKGwpe0Z0KDB8YVsxNTIrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0pLCgwfGRpKGwpKSE9KDB8bCkmJmwyKGwsMCwxMzc0ODMpfShsKX19LGZ1bmN0aW9uIHZYKGwpezB8R28obHw9MCkmJihmdW5jdGlvbiBX''@;'; put 'put ''dmUobCl7cjQobHw9MCwyKSxpdFsxNzYrKDB8YVtsKzE2Pj4yXSk+PjFdPTIsYVs0NzEzN109MixmdW5jdGlvbiBqc2UobCl7dmFyIHAsbSxjPTAsZj0wO2ZvcihwPTB8dnIoKDB8R28obHw9MCkpPDwyKSxjPTB8dnIoNCsoKDB8R28obCkpPDwyKXwwKSxhWzE1MisoMHxhWyhtPWwrMTZ8MCk+''@;'; put 'put ''PjJdKT4+Ml09YyxjPTB8RHQobCksZj0wO2M7KXdrKGMpLGFbMTEyKygwfGFbYysxNj4+Ml0pPj4yXT1wKyhmPDwyKSxhWygwfGFbMTUyKygwfGFbbT4+Ml0pPj4yXSkrKGY8PDIpPj4yXT1jLGM9MHx6dChsLGMpLGY9ZisxfDA7Zm9yKGY9MHxEdChsKTtmOyl7Zm9yKGM9MHx3MChsLGYpO2M7''@;'; put 'put ''KVl2ZShjKSxjPTB8UzAobCxjKTtmPTB8enQobCxmKX19KGwpfShsKSxmdW5jdGlvbiB6c2UobCl7dmFyIHAsdyxjPTAsZj0wLG09MCxBPTAsYj0wO2lmKHc9bGUsbGU9bGUrNDh8MCxjPXcrMzJ8MCxwPXcsMHxHbyhsfD0wKSl7aWYoQT0wfGZ1bmN0aW9uIFpzZShsLGMpe2x8PTAsY3w9MDt2''@;'; put 'put ''YXIgayxELGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLE09MDtmb3IoRD1sZSxsZT1sZSsxNnwwLGs9RCxmZVsoTT1EKzR8MCk+PjBdPTB8ZmVbMTg1OTZdLGZlW00rMT4+MF09MHxmZVsxODU5N10sZmVbTSsyPj4wXT0wfGZlWzE4NTk4XSxmZVtNKzM+PjBdPTB8ZmVbMTg1OTldLGgwKE09MHxv''@;'; put 'put ''Yyg5MTE1NixNLDApLDkxMTY0LDI4MCwxKSxhWzE0MCsoMHxhW2wrMTY+PjJdKT4+Ml09TSxmPTB8RHQobCk7ZjspMHxhW2FbMTEyKygwfGFbKHA9ZisxNnwwKT4+Ml0pPj4yXT4+Ml18fChiPTB8VXZlKE0sMHx0aShmKSxmKSxhW2FbMTEyKygwfGFbcD4+Ml0pPj4yXT4+Ml09YiksZj0wfHp0''@;'; put 'put ''KGwsZik7Zm9yKHA9MHxEdChsKTtwOyl7Zm9yKGY9MHx3MChsLHApO2Y7KSgwfChtPTB8YVthWzExMisoMHxhWzE2KygwfGFbKDM9PSgwfChBPTMmYVtmPj4yXSkpP2Y6Zis0OHwwKSs0MD4+Ml0pPj4yXSk+PjJdPj4yXSkpIT0oMHwoQT0wfGFbYVsxMTIrKDB8YVsxNisoMHxhWygyPT0oMHxB''@;'; put 'put ''KT9mOmYrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0+PjJdKSkmJmgwKDB8S2EoTSxtLEEsMCwxKSwxMzc0NjAsMTc2LDEpLGY9MHxTMChsLGYpO3A9MHx6dChsLHApfWZvcihiPTB8clcoTSxrLDApLHA9MDshKCgwfHApPj0oMHxhW2s+PjJdKSk7KXtmb3IoZj0wfER0KEE9MHxhW2IrKHA8PDIp''@;'; put 'put ''Pj4yXSk7Zjspe2ZvcihtPTB8dzAobCwwfGFbYVsxMTIrKDB8YVtmKzE2Pj4yXSk+PjJdPj4yXSk7bTspKDB8ZikhPSgwfCh3PTB8YVthWzExMisoMHxhWzE2KygwfGFbKDI9PSgzJmFbbT4+Ml18MCk/bTptKy00OHwwKSs0MD4+Ml0pPj4yXSk+PjJdPj4yXSkpJiYoaDAodz0wfEthKE0sZix3''@;'; put 'put ''LDAsMSksMTM3NDYwLDE3NiwxKSxaZChBLHcsMSkpLG09MHxTMChsLG0pO2Y9MHx6dChBLGYpfXA9cCsxfDB9Zm9yKGY9MHxEdChNKTtmOyl7Zm9yKHA9MHx3MChNLGYpO3A7KWw9MHx2cig4KSxhWzEyMCsoMHxhW3ArMTY+PjJdKT4+Ml09bCxwPTB8UzAoTSxwKTtmPTB8enQoTSxmKX1yZXR1''@;'; put 'put ''cm4gYVtjPj4yXT1hW2s+PjJdLGxlPUQsMHxifShsLGMpLG09MHxhW2M+PjJdLGM9MHxhW0E+PjJdLDE9PSgwfG0pKWt4KGMsbCksR3NlKDB8YVtBPj4yXSksTHkobCk7ZWxzZXtmb3IoZj0wfGFbYys2MD4+Ml0sYTcobCwyLDgscCksYz0wOyEoKDB8Yyk+PSgwfG0pKTspa3goYj0wfGFbQSso''@;'; put 'put ''Yzw8Mik+PjJdLGwpLEx5KGIpLGM9YysxfDA7Zm9yKFRDKG0sQSxmLHApLGM9MDshKCgwfGMpPj0oMHxtKSk7KUdzZSgwfGFbQSsoYzw8Mik+PjJdKSxjPWMrMXwwfUZ0KEEpfWxlPXd9KGwpLEZ0KDB8YVsxMTIrKDB8YVsxNisoMHxEdChsKSk+PjJdKT4+Ml0pLEs2KGwpLHQ0KGwpKX0sZnVu''@;'; put 'put ''Y3Rpb24gUXZlKGwpe3ZhciBjPTAsZj0wLHA9MDtpZigwfChjPTB8RHQobHw9MCkpKXtmb3IoZnVuY3Rpb24gV3NlKGwpe3ZhciBjPTAsZj0wO2ZvcihmPTB8RHQobHw9MCk7Zjspe2ZvcihjPTB8dzAobCxmKTtjOylGdCgwfGFbMTIwKygwfGFbYysxNj4+Ml0pPj4yXSksYz0wfFMwKGwsYyk7''@;'; put 'put ''RnQoMHxhWzExMisoMHxhWyhjPWYrMTZ8MCk+PjJdKT4+Ml0pLEZ0KDB8YVsxMzIrKDB8YVtjPj4yXSk+PjJdKSxmPTB8enQobCxmKX1DMShsKX0oMHxhWzE0MCsoMHxhWyhwPWwrMTZ8MCk+PjJdKT4+Ml0pO2M7KXtmb3IoZj0wfHcwKGwsYyk7ZjspYWcoZiksZj0wfFMwKGwsZik7b2coYyks''@;'; put 'put ''Yz0wfHp0KGwsYyl9RnQoMHxhWzE1MisoMHxhW3A+PjJdKT4+Ml0pLCgwfGRpKGwpKSE9KDB8bCkmJmwyKGwsMCwxMzc0ODMpfX0sZnVuY3Rpb24gWmxlKGwpe2x8PTAsYVs0NzEzNF09MSxBMihsKSxhWzQ3MTM0XT0wfSxmdW5jdGlvbiB6bGUobCl7bHw9MCxhWzQ3MTM0XT0yLEEyKGwpLGFb''@;'; put 'put ''NDcxMzRdPTB9LGZ1bmN0aW9uIGVYKGwpeyhmdW5jdGlvbiBrdmUobCl7YVs0NzE0N109MHxzaShsfD0wLDEsMTA4MjMwLDEwODIzNikscjQobCwyKSxpdFsxNzYrKDB8YVtsKzE2Pj4yXSk+PjFdPTIsYVs0NzEzN109Mix0WChsLDApLGZ1bmN0aW9uIFN2ZShsKXt2YXIgbSxBLGM9MCxmPTAs''@;'; put 'put ''cD0wO2ZvcihtPTB8dnIoKDB8R28obHw9MCkpPDwyKSxjPTB8dnIoNCsoKDB8R28obCkpPDwyKXwwKSxhWzE1MisoMHxhWyhBPWwrMTZ8MCk+PjJdKT4+Ml09YyxjPTB8RHQobCksZj0wO2M7KXtmb3IoaDAoYywxMzc0NDcsMzA0LDEpLGFbMTEyKygwfGFbYysxNj4+Ml0pPj4yXT1tKyhmPDwy''@;'; put 'put ''KSxhWygwfGFbMTUyKygwfGFbQT4+Ml0pPj4yXSkrKGY8PDIpPj4yXT1jLGFWKGMpLHA9MHx3MChsLGMpO3A7KU12ZShwKSxwPTB8UzAobCxwKTtjPTB8enQobCxjKSxmPWYrMXwwfX0obCl9KShsfD0wKSwwPT0oMHxHbyhsKSkmJiEoMHxhWzE4MCsoMHxhW2wrMTY+PjJdKT4+Ml0pfHwoZnVu''@;'; put 'put ''Y3Rpb24gQUsobCl7dmFyIGMscCxtLGY9MDtjPWxlLGxlPWxlKzMyfDAscD1jLGY9MHxzaShsfD0wLDEsOTQxMjIsMCksZj0obD0wfG8xZShsLDB8c2kobCwwLDk0MTIyLDApLGYsMHxzaShsLDAsOTQxMjcsMCkpKSsxNnwwLGZ1bmN0aW9uIEQ5ZShsLGMsZixwLG0pe2Y9K2YscD0rcCxtPStt''@;'; put 'put ''LF9bKGx8PTApPj4zXT1jPStjLF9bbCs4Pj4zXT1mLF9bbCsxNj4+M109cCxfW2wrMjQ+PjNdPW19KHAsMCwwLG09K0QwKCsoK19bbD4+M10rLjEpKSxtKSxhW2Y+PjJdPWFbcD4+Ml0sYVtmKzQ+PjJdPWFbcCs0Pj4yXSxhW2YrOD4+Ml09YVtwKzg+PjJdLGFbZisxMj4+Ml09YVtwKzEyPj4y''@;'; put 'put ''XSxhW2YrMTY+PjJdPWFbcCsxNj4+Ml0sYVtmKzIwPj4yXT1hW3ArMjA+PjJdLGFbZisyND4+Ml09YVtwKzI0Pj4yXSxhW2YrMjg+PjJdPWFbcCsyOD4+Ml0seUsobCksd0sobCksYTFlKGwpLGxlPWN9KGwpLHQ0KGwpKX0sZnVuY3Rpb24geHZlKGwpe3ZhciBjPTAsZj0wO2lmKDB8KGM9MHxE''@;'; put 'put ''dChsfD0wKSkpe2ZvcihGdCgwfGFbMTEyKygwfGFbYysxNj4+Ml0pPj4yXSk7Yzspe2ZvcihmPTB8dzAobCxjKTtmOylhZyhmKSxmPTB8UzAobCxmKTtvZyhjKSxjPTB8enQobCxjKX0hZnVuY3Rpb24gVHZlKGwpe0Z0KDB8YVsxNTIrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0pLCgwfGRpKGwp''@;'; put 'put ''KSE9KDB8bCkmJmwyKGwsMCwxMzc0ODMpfShsKX19LGZ1bmN0aW9uIEFzZShsKXt2YXIgYz0wLGY9MCxwPTA7aWYoZnVuY3Rpb24geXNlKGwpe3ZhciBjPTAsZj0wO2ZvcihyNChsfD0wLDIpLGl0WzE3NisoMHxhW2wrMTY+PjJdKT4+MV09MixhWzQ3MTM3XT0yLGM9MHxEdChsKTtjOyl3ayhj''@;'; put 'put ''KSxjPTB8enQobCxjKTtmb3IoZj0wfER0KGwpO2Y7KXtmb3IoYz0wfHcwKGwsZik7YzspaDAoYywxMzc0NjAsMTc2LDEpLEw3KGMpLGM9MHxTMChsLGMpO2Y9MHx6dChsLGYpfX0obHw9MCksclgobCwwKSx3c2UobCwwKSxsVihsLDApLDB8YVs4NCsoMHxhWzgrKGM9MHxhW2wrMTY+PjJdKT4+''@;'; put 'put ''Ml0pPj4yXSl7Zm9yKGM9MHxEdChsKTtjOylfWyhmPTB8YVsxMzIrKHA9MHxhW2MrMTY+PjJdKT4+Ml0pPj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KitfW3ArMTY+PjNdLF9bZis4Pj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KitfW3ArMjQ+PjNdLGM9MHx6dChsLGMpO1NEKGwsMSl9ZWxzZShj''@;'; put 'put ''PTE0Jml0W2MrMTM2Pj4xXSk8PDE2Pj4xNiYma0QobCw2NTUzNSZjKTt0NChsKX0sZnVuY3Rpb24gYVgobCl7dmFyIGM9MDtmb3IoYz0wfER0KGx8PTApO2M7KW9nKGMpLGM9MHx6dChsLGMpO2xYKGwpfSxmdW5jdGlvbiBnQyhsKXt9LGZ1bmN0aW9uIFJhZShsKXtsfD0wO3ZhciBydCxXZSxh''@;'; put 'put ''dCxrdCxhbixIcixEcixKcixMcixsMCxWaSxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxMZT0wLFJlPTAsSGU9MCxWZT0wLHFlPTAsU3Q9MCxzdD0wLEV0PTAsWnQ9MCxjdD0wLGJ0PTAsU249MCxIbj0wLHVy''@;'; put 'put ''PTAsRXI9MCxmcj0wLE9pPTA7Vmk9bGUsbGU9bGUrMTQ0fDAsa3Q9VmkrMTEyfDAsWnQ9VmkrMTA0fDAsV2U9VmkrOTZ8MCxhdD1WaSs4OHwwLEE9VmkrODB8MCxEcj1WaSs2NHwwLExyPVZpKzQ4fDAsYW49VmkrNDB8MCxTbj1WaSszMnwwLHc9VmkrMjR8MCxSPVZpKzE2fDAscnQ9VmkrMTM2''@;'; put 'put ''fDAscWU9VmkrMTI4fDAsc3Q9VmksbDA9MHx2cig0OCksbT0xNjE2PT0oMHwoRXI9MHxhWzgrKDB8YVs4KygwfGFbKEpyPWwrMTZ8MCk+PjJdKT4+Ml0pPj4yXSkpLGZyPTB8YVtFcj4+Ml0sYz0wfGFbRXIrND4+Ml0sZj0wfGFbRXIrOD4+Ml0saz0rX1tFcisxNj4+M10sTT0rX1tFciszMj4+''@;'; put 'put ''M10sRD0rX1tFcisyND4+M10sZnJ8PTI1NSYoMHx0MSgwfExpKGwsMTA1NTExKSkpO2Rve2lmKG0pcD0wLGI9MDtlbHNle2lmKCFmcil7cD0rKDB8fn4oKHA9NzIqK19bNDArKEVyPTB8YVtKcj4+Ml0pPj4zXSkrKHA+PTA/LjU6LS41KSkpLGI9KygwfH5+KChiPTcyKitfW0VyKzMyPj4zXSkr''@;'; put 'put ''KGI+PTA/LjU6LS41KSkpO2JyZWFrfShiPStGYWUobCkpPjB8fChiPSsoMHx+figoYj03MiooKHA9K19bMzIrKEVyPTB8YVtKcj4+Ml0pPj4zXSk8KGI9K19bRXIrNDA+PjNdKT9wOmIpKSsoYj49MD8uNTotLjUpKSkpLHA9Yn19d2hpbGUoMCk7aWYoRXI9MHxlcyhsLDB8YVs0NzE2MF0sYyww''@;'; put 'put ''KSxIcj0rTWwobCwwfGFbNDcxNjJdLDAsLTM2MCkrayxmPyhTdD1mLHVyPU0sSG49RCk6KHVyPStNbChsLDB8YVs0NzE2M10sMCwtMTAwKSxTdD0wfGVzKGwsMHxhWzQ3MTU5XSw0LDApLEhuPStNbChsLDB8YVs0NzE2NF0sMCwtMTAwKSksYVtEcj4+Ml09YVsoZj0yNCsoYz0wfGFbMTA0Kygw''@;'; put 'put ''fGFbSnI+PjJdKT4+Ml0pfDApPj4yXSxhW0RyKzQ+PjJdPWFbZis0Pj4yXSxhW0RyKzg+PjJdPWFbZis4Pj4yXSxhW0RyKzEyPj4yXT1hW2YrMTI+PjJdLChHPStfW0RyPj4zXSk+MD9tfHwoRXQ9MTEpOm18ISgrX1tEcis4Pj4zXT4wKXx8KEV0PTExKSwxMT09KDB8RXQpKXtjPTB8TGkobCwx''@;'; put 'put ''MDU0OTYpO2Rve2lmKGMpe2lmKF9bUj4+M109MCxfW3c+PjNdPTAsYVtBPj4yXT13LGFbQSs0Pj4yXT1SLGM9MHxpbChjLDEwNTUwMyxBKSwoaz0rX1t3Pj4zXSk8MCYmKF9bdz4+M109MCxrPTApLChNPStfW1I+PjNdKTwwPyhfW1I+PjNdPTAsRD0wKTpEPU0sKDB8Yyk8PTApe19bRHI+PjNd''@;'; put 'put ''PU09RysxNixrPTg7YnJlYWt9X1tEcj4+M109TT1HKyhrPSsofn4oKGsqPTcyKSsoaz49MD8uNTotLjUpKTw8MXwwKSksMSE9KDB8YykmJihrPSsofn4oKGs9NzIqRCkrKGs+PTA/LjU6LS41KSk8PDF8MCkpfWVsc2UgX1tEcj4+M109TT1HKzE2LGs9OH13aGlsZSgwKTtfWyhjPURyKzh8MCk+''@;'; put 'put ''PjNdPStfW2M+PjNdK2ssYz0wfGFbMTA0KygwfGFbSnI+PjJdKT4+Ml0sRz1NfXBlPStfW2MrMjQ+PjNdLChrPStfW2FbOCsoMHxhWzE2KygwfGNyKGwpKT4+Ml0pPj4yXT4+M10pPjA/KGJ0PStYUShHLGN0PSsoMHx+figoY3Q9NzIqaykrKGN0Pj0wPy41Oi0uNSkpKSksX1tEcj4+M109YnQs''@;'; put 'put ''X1soUj1Ecis4fDApPj4zXT0rWFEoK19bUj4+M10sY3QpKTpidD1HLGM9MHxhWzgrKDB8YVtKcj4+Ml0pPj4yXTtkb3tpZigwfGZlW2MrMTI+PjBdKXtpZig5OT09KDB8ZmVbKGM9MHxhW2M+PjJdKT4+MF0pJiYwPT0oMHxaaShjLDEwNTUxOSkpKXtpZihmPTB8TGkobCwxMDU1MjYpLFVHKHJ0''@;'; put 'put ''LDB8Y3IobCksZiksLTE9PSgobT0wfGFbcnQrND4+Ml0pJihjPTB8YVtydD4+Ml0pfDApKXtjPTB8dGkobCksYVthdD4+Ml09MHxmP2Y6MTA1NTM2LGFbYXQrND4+Ml09YywkcigwLDEwNTU0MixhdCksZj0wLGM9MDticmVha31mZVsxMTQrKDB8YVsxNisoMHxjcihsKSk+PjJdKT4+MF09MSxm''@;'; put 'put ''PWMrMnwwLGM9bSsyfDA7YnJlYWt9Zj0wLGM9MH1lbHNle2lmKDAhPSgwfChmPTB8TGkobCwxMDkwMjUpKSkmJjAhPSgwfGZlW2Y+PjBdKSl7aWYoVUcocWUsMHxjcihsKSxmKSwtMT09KChtPTB8YVtxZSs0Pj4yXSkmKGM9MHxhW3FlPj4yXSl8MCkpe2M9MHx0aShsKSxhW1dlPj4yXT1mLGFb''@;'; put 'put ''V2UrND4+Ml09YywkcigwLDEwNTU4NyxXZSksZj0wLGM9MDticmVha31mZVsxMTQrKDB8YVsxNisoMHxjcihsKSk+PjJdKT4+MF09MSxmPWMrMnwwLGM9bSsyfDA7YnJlYWt9Zj0wLGM9MH19d2hpbGUoMCk7X1tMcj4+M109YnQ+KGN0PSsoMHxmKSk/YnQ6Y3QscT0rKDB8YyksX1soYz1Mcis4''@;'; put 'put ''fDApPj4zXT0oY3Q9K19bRHIrOD4+M10pPnE/Y3Q6cSxmPSgwfFN0KTwzJigwIT1IbnwwIT11cik/MTIwOlN0LEE9KG09MHxMaShsLDEwNTYyOCkpPyhBPTB8ZmVbbT4+MF0pPDwyND4+MjQ9PTExNj8xMTY6QTw8MjQ+PjI0PT05OD85ODo5OTo5OSxmZVs4MCsoMHxhWzEwNCsobT0wfGFbSnI+''@;'; put 'put ''PjJdKT4+Ml0pPj4wXT1BLDQ9PSgwfGYpJiYoMD09SG4/MD09KDB8KDB8fn4oSHIrKEhyPj0wPy41Oi0uNSkpKSU5MCk6MCkmMD09dXI/Uj0xOkV0PTM5O2Rve2lmKDM5PT0oMHxFdCkpe2lmKDB8KG09MHxhWzQ0KygwfGFbOCsoMHxhW20rOD4+Ml0pPj4yXSk+PjJdKSl7Uj0wfGFbbT4+Ml0s''@;'; put 'put ''YVtrdD4+Ml09YVtMcj4+Ml0sYVtrdCs0Pj4yXT1hW0xyKzQ+PjJdLGFba3QrOD4+Ml09YVtMcis4Pj4yXSxhW2t0KzEyPj4yXT1hW0xyKzEyPj4yXSxHc1s2MyZSXShzdCxrdCksYVtMcj4+Ml09YVtzdD4+Ml0sYVtMcis0Pj4yXT1hW3N0KzQ+PjJdLGFbTHIrOD4+Ml09YVtzdCs4Pj4yXSxh''@;'; put 'put ''W0xyKzEyPj4yXT1hW3N0KzEyPj4yXSxSPTA7YnJlYWt9cD4oTT0xLjQxNDIxMzU2MjM3MzA5NTEqKGs9K19bYz4+M10pKSZBPDwyND4+MjQ9PTk5PyhEPStEMCgxLygxLShEPWsvcCkqRCkpLF9bTHI+PjNdPUQqPStfW0xyPj4zXSk6KF9bTHI+PjNdPUQ9MS40MTQyMTM1NjIzNzMwOTUxKitf''@;'; put 'put ''W0xyPj4zXSxfW2M+PjNdPU0saz1NKSwoMHxmKT4yJiYoVmU9K2hhKDMuMTQxNTkyNjUzNTg5NzkzLysoMHxmKSksX1tMcj4+M109RC9WZSxfW2M+PjNdPWsvVmUpLFI9MH19d2hpbGUoMCk7az0rX1tjPj4zXSxtPTB8djIobCwwfGFbNDcxNjVdLDEzNzMwOCksMTE1PT0oMHxmZVttPj4wXSkm''@;'; put 'put ''JjA9PSgwfFppKG0sMTA4MjMwKSk/KF9bTHI+PjNdPWIsX1tjPj4zXT1wLGFbKFp0PWwwKzQwfDApPj4yXT0yMDQ4fGFbWnQ+PjJdKTooKDB8dDEobSkpPDwyND4+MjQ/KCEoYjwrX1syNCsoRXQ9MHxhWzEwNCsoMHxhW0pyPj4yXSk+PjJdKT4+M10pJiYhKHA8K19bRXQrMzI+PjNdKXx8KHN0''@;'; put 'put ''PTB8dGkobCksRXQ9MHx0aSgwfGNyKGwpKSxhW1p0Pj4yXT1zdCxhW1p0KzQ+PjJdPUV0LCRyKDAsMTA1NjM3LFp0KSksX1tMcj4+M109Yik6KF9bTHI+PjNdPWI9Yj4oVmU9K19bTHI+PjNdKT9iOlZlLHA9cD4oVmU9K19bYz4+M10pP3A6VmUpLF9bYz4+M109cCksZnI/KF9bYz4+M109SGU9''@;'; put 'put ''Yj5wP2I6cCxfW0xyPj4zXT1IZSxWZT1IZSk6KFZlPXAsSGU9Yik7ZG97aWYoKDB8dDEoMHx2MihsLDB8YVs0NzE1Nl0sMTM3MzA4KSkpPDwyND4+MjQpcD1idDtlbHNle2lmKFIpe3A9K19bKGJ0PitfW0xyPj4zXT9EcjpMcik+PjNdO2JyZWFrfXA9Y3Q8KHA9K19bYz4+M10pP2J0PihwPStf''@;'; put 'put ''W0xyPj4zXSorRDAoKygxLWN0KmN0LyhwKnApKSkpP2J0OnA6YnR9fXdoaWxlKDApO19bNDArKG09MHxhWzEwNCsoMHxhW0pyPj4yXSk+PjJdKT4+M109cGUtRytwLDIwNDgmYVsocWU9bDArNDB8MCk+PjJdfHwoUmU9K19bYz4+M10tayxfW20rNDg+PjNdPShjdDxxP3EtY3QrUmU6UmUpK2N0''@;'; put 'put ''KSxtPSh3PSgwfEVyKT4xKT9FcjoxO2U6ZG97aWYoKDB8Zik8MylpZihtPTB8dnIobTw8NSksYj0uNSorX1tMcj4+M10scD0uNSorX1tjPj4zXSxfW20+PjNdPS1iLF9bbSs4Pj4zXT0tcCxfW20rMTY+PjNdPWIsX1ttKzI0Pj4zXT1wLHcpe2ZvcihmPTEsQT0yOygwfGYpIT0oMHxFcik7KVZl''@;'; put 'put ''PXArNCxfW20rKEE8PDQpPj4zXT0tKEhlPWIrNCksX1ttKyhBPDw0KSs4Pj4zXT0tVmUsX1ttKygoU249MXxBKTw8NCk+PjNdPUhlLF9bbSsoU248PDQpKzg+PjNdPVZlLGY9ZisxfDAsQT1BKzJ8MCxiPUhlLHA9VmU7X1tMcj4+M109MipiLF9bYz4+M109MipwLGY9Mn1lbHNlIGY9MjtlbHNl''@;'; put 'put ''e209MHx2cigwfEFyKG08PDQsZikpLEE9MHxhWzQ0KygwfGFbOCsoMHxhWzgrKDB8YVtKcj4+Ml0pPj4yXSk+PjJdKT4+Ml07dDpkb3tpZihBKUdzWzYzJmFbQSs0Pj4yXV0obSxMciksYj0uNSorX1tjPj4zXSxwPS41KitfW0xyPj4zXTtlbHNle2ZvcihxPStEYSgrKGdlPS41KihHPTYuMjgz''@;'; put 'put ''MTg1MzA3MTc5NTg2LysoMHxmKSkpKSxwZT0rJHkoK2VvKCt1cikrICtlbygrSG4pLDEpLGdlPTEuNDE0MjEzNTYyMzczMDk1MSpIbi8raGEoK2dlKSxiZT0uNSp1cixnTCguNSooRystMy4xNDE1OTI2NTM1ODk3OTMpLGFuLFNuKSxPZT0uMDE3NDUzMjkyNTE5OTQzMjk1KkhyLGI9MCxwPTAs''@;'; put 'put ''az0wLEE9MCxNPS41KitfW1NuPj4zXSxEPS41KitfW2FuPj4zXTs7KXtpZigoMHxBKT49KDB8ZikpYnJlYWsgdDtpZihnTChrKz1HLGFuLFNuKSxnTCgrVWwoKyhEPStfW2FuPj4zXSpxK0QpLCsoUmU9KEQqZ2UrcGUpKihNPStfW1NuPj4zXSpxK00pK2JlKkQpKStPZSxhbixTbiksUmU9KyR5''@;'; put 'put ''KFJlLEQpLExlPStfW1NuPj4zXSpSZSorX1tMcj4+M10sUmU9K19bYW4+PjNdKlJlKitfW2M+PjNdLHA9KE9pPStlbygrTGUpKT5wP09pOnAsYj0oT2k9K2VvKCtSZSkpPmI/T2k6YixfW20rKEE8PDQpPj4zXT1MZSxfW20rKEE8PDQpKzg+PjNdPVJlLFIpYnJlYWs7QT1BKzF8MH1fW20rMTY+''@;'; put 'put ''PjNdPU9pPS1MZSxfW20rMjQ+PjNdPVJlLF9bbSszMj4+M109T2ksX1ttKzQwPj4zXT1PaT0tUmUsX1ttKzQ4Pj4zXT1MZSxfW20rNTY+PjNdPU9pfX13aGlsZSgwKTtmb3IoYio9MixfW0xyPj4zXT1IZT1IZT4ocCo9Mik/SGU6cCxfW2M+PjNdPU9pPVZlPmI/VmU6YixwPUhlL3AsYj1PaS9i''@;'; put 'put ''LEE9MDshKCgwfEEpPj0oMHxmKSk7KU9pPStfWyhsPW0rKEE8PDQpKzh8MCk+PjNdKmIsX1soWnQ9bSsoQTw8NCl8MCk+PjNdPStfW1p0Pj4zXSpwLF9bbD4+M109T2ksQT1BKzF8MDtpZih3KXtwPStVbCgrKChrPStfW20rOD4+M10pLStfW20rKCh3PWYrLTF8MCk8PDQpKzg+PjNdKSwrKChi''@;'; put 'put ''PStfW20+PjNdKS0rX1ttKyh3PDw0KT4+M10pKSx3PTA7dDpmb3IoOyEoKDB8dyk+PSgwfGYpKTspZm9yKFI9dysxfDAsQT0oMHxSKSUoMHxmKXwwLE09K19bbSsoQTw8NCk+PjNdLEQ9K19bbSsoQTw8NCkrOD4+M10sRz0rVWwoKyhELWspLCsoTS1iKSksVmU9LjUqKHArMy4xNDE1OTI2NTM1''@;'; put 'put ''ODk3OTMtRyksT2k9NC8rRGEoK1ZlKSxnTChwLVZlLGFuLFNuKSxfW2FuPj4zXT0rX1thbj4+M10qT2ksX1tTbj4+M109K19bU24+PjNdKk9pLEE9MSxwPWs7Oyl7aWYoKDB8QSk9PSgwfEVyKSl7cD1HLHc9UixiPU0saz1EO2NvbnRpbnVlIHR9VmU9K19bU24+PjNdK2IsT2k9K19bYW4+PjNd''@;'; put 'put ''K3AsbD0oMHxBcihBLGYpKSt3fDAsX1ttKyhsPDw0KT4+M109VmUsX1ttKyhsPDw0KSs4Pj4zXT1PaSxBPUErMXwwLGI9VmUscD1PaX1mb3Iodz0wfEFyKGYsRXIrLTF8MCksQT0wOzspe2lmKCgwfEEpPj0oMHxmKSlicmVhayBlO1ZlPStfW20rKChTbj1BK3d8MCk8PDQpKzg+PjNdLEhlPTIq''@;'; put 'put ''K2VvKCsgK19bbSsoU248PDQpPj4zXSksX1tMcj4+M109SGU+KE9pPStfW0xyPj4zXSk/SGU6T2ksVmU9MiorZW8oK1ZlKSxfW2M+PjNdPVZlPihPaT0rX1tjPj4zXSk/VmU6T2ksQT1BKzF8MH19fX13aGlsZSgwKTthW2wwPj4yXT1mcixhW2wwKzQ+PjJdPUVyLGFbbDArOD4+Ml09ZixfW2ww''@;'; put 'put ''KzE2Pj4zXT1IcixfW2wwKzMyPj4zXT11cixfW2wwKzI0Pj4zXT1IbixhW2wwKzQ0Pj4yXT1tLHA9K19bTHI+PjNdLDIwNDgmYVtxZT4+Ml0/KF9bMzIrKGY9MHxhW0pyPj4yXSk+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqK19bKGJ0PnA/RHI6THIpPj4zXSxjPShjdD4rX1tjPj4zXT9EcjpM''@;'; put 'put ''cikrOHwwKTpfWzMyKyhmPTB8YVtKcj4+Ml0pPj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KnAsX1tmKzQwPj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KitfW2M+PjNdLGFbZisxMj4+Ml09bDAsbGU9Vml9LGZ1bmN0aW9uIHphZShsKXswfChsPTB8YVsxMisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4y''@;'; put 'put ''XSkmJihGdCgwfGFbbCs0ND4+Ml0pLEZ0KGwpKX0sZnVuY3Rpb24gUGFlKGwpe2x8PTA7dmFyIGIsayxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxNPTAsRD0wO2lmKGI9MHx2cig0OCksQT0wfGFbNCsoMHxhWzgrKDB8YVs4KygwfGFbKGs9bCsxNnwwKT4+Ml0pPj4yXSk+PjJdKT4+Ml0sbT0r''@;'; put 'put ''TWwobCwwfGFbNDcxNDZdLDE3OTc2OTMxMzQ4NjIzMTU3ZTI5MiwwKSxjPStNbChsLDB8YVs0NzE0NV0sMTc5NzY5MzEzNDg2MjMxNTdlMjkyLDApLF9bNDArKHc9MHxhW2s+PjJdKT4+M109bT0xNzk3NjkzMTM0ODYyMzE1N2UyOTI9PWMmMTc5NzY5MzEzNDg2MjMxNTdlMjkyPT0obT1tPGM/''@;'; put 'put ''bTpjKT8uMDU6bT4wP20+M2UtND9tOjNlLTQ6bSxfW3crMzI+PjNdPW0sYz03MiptLHc9MHx2cigoMHwoQT0wfGVzKGwsMHxhWzQ3MTYwXSxBLDApKSk8MT8zMjpBPDw1KSxfW3c+PjNdPXA9LShtKj0zNiksX1t3Kzg+PjNdPXAsX1t3KzE2Pj4zXT1tLF9bdysyND4+M109bSwoMHxBKT4xKXtm''@;'; put 'put ''b3IobD0xLGY9MixwPW0sYz1tOygwfGwpIT0oMHxBKTspbT1jKzQsX1t3KyhmPDw0KT4+M109LShNPXArNCksX1t3KyhmPDw0KSs4Pj4zXT0tbSxfW3crKChEPTF8Zik8PDQpPj4zXT1NLF9bdysoRDw8NCkrOD4+M109bSxsPWwrMXwwLGY9ZisyfDAscD1NLGM9bTtjPTIqcH1hW2I+PjJdPTEs''@;'; put 'put ''YVtiKzQ+PjJdPUEsYVtiKzg+PjJdPTIsYVsoRD1iKzE2fDApPj4yXT0wLGFbRCs0Pj4yXT0wLGFbRCs4Pj4yXT0wLGFbRCsxMj4+Ml09MCxhW0QrMTY+PjJdPTAsYVtEKzIwPj4yXT0wLGFbYis0ND4+Ml09dyxfWzMyKyhEPTB8YVtrPj4yXSk+PjNdPU09LjAxMzg4ODg4ODg4ODg4ODg4OCpj''@;'; put 'put ''LF9bRCs0MD4+M109TSxhW0QrMTI+PjJdPWJ9LGZ1bmN0aW9uIEJhZShsKXt2YXIgYixrLE0sUixjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxEPTA7Uj1sZSxsZT1sZSs2NHwwLGI9Uis0MHwwLHA9UiszMnwwLGs9UisxNnwwLEQ9UixmPSgwfGFbMTE2KygwfGFbMTYrKDB8Y3IobHw9MCkpPj4y''@;'; put 'put ''XSk+PjJdKT4+PjImMV4xLGFbNDcyODJdPW09MHxhW2FbMTA0KygwfGFbKE09bCsxNnwwKT4+Ml0pPj4yXT4+Ml0sKGM9MHxvTihsLGYsMSxtPTB8dnIoKCgwfChtPTB8VW8obSkpKT4xP206MSkrMXwwKSkpfHwoYVtwPj4yXT1hW2FbMTA0KygwfGFbTT4+Ml0pPj4yXT4+Ml0sJHIoMSwxMDU0''@;'; put 'put ''NzIscCksYVs0NzI4Ml09MTA1NDkzLGM9MHxvTihsLGYsMSxtKSksRnQobSksVVEoYixsLGMpLF9bRD4+M109dz0rKDB8fn4oKHc9NzIqK19bMzIrKGY9MHxhW00+PjJdKT4+M10pKyh3Pj0wPy41Oi0uNSkpKSxBPTcyKitfW2YrNDA+PjNdLF9bKGY9RCs4fDApPj4zXT1BPSsoMHx+fihBKyhB''@;'; put 'put ''Pj0wPy41Oi0uNSkpKSwoMHx0MSgwfHYyKGwsMHxhWzQ3MTY1XSwxMzczMDgpKSk8PDI0Pj4yND8oZj1jKzh8MCxwPWMpOihfW0Q+PjNdPXc9K19bKCtfW2M+PjNdPnc/YzpEKT4+M10sX1tmPj4zXT1BPStfWygrX1socD1jKzh8MCk+PjNdPkE/YzpEKSs4Pj4zXSxmPXAscD1jKSxsPTI1NSYo''@;'; put 'put ''MHx0MSgwfHYyKGwsMHxhWzQ3MTU2XSwxMzczMDgpKSksYVtiPj4yXT1hW0Q+PjJdLGFbYis0Pj4yXT1hW0QrND4+Ml0sYVtiKzg+PjJdPWFbRCs4Pj4yXSxhW2IrMTI+PjJdPWFbRCsxMj4+Ml0sUVEoYyxiLGwpLEN5KGssLS41KncsLjUqQSksYVtiPj4yXT1hW2s+PjJdLGFbYis0Pj4yXT1h''@;'; put 'put ''W2srND4+Ml0sYVtiKzg+PjJdPWFbays4Pj4yXSxhW2IrMTI+PjJdPWFbaysxMj4+Ml0sSlEoYyxiLDE1KSxfWzMyKyhEPTB8YVtNPj4yXSk+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqK19bcD4+M10sX1tEKzQwPj4zXT0uMDEzODg4ODg4ODg4ODg4ODg4KigrX1tmPj4zXSsxKSxhW0QrMTI+''@;'; put 'put ''PjJdPWMsbGU9Un0sZnVuY3Rpb24gWGFlKGwpe2FOKDB8YVsxMisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSl9LGZ1bmN0aW9uIFNhZShsKXt2YXIgcCxjPTAsZj0wLG09MCxBPTA7cD1sZSxsZT1sZSsxNnwwLGY9cCwoYz0wfGREKDB8TGkobHw9MCwxMDU1MjYpKSk/KGM9MHxmdW5jdGlvbiBN''@;'; put 'put ''YWUobCl7bHw9MDt2YXIgQSx3LGIsRyxjPTAsZj0wLHA9MCxtPTAsaz0wLE09MCxEPTAsUj0wLHE9MDtHPWxlLGxlPWxlKzExNTJ8MCx3PUcrMjR8MCxBPUcrOHwwLGY9RyxwPUcrMTIwfDAsYj1HKzQ0fDAsaz1HKzQwfDAsTT1HKzM2fDAsRD1HKzMyfDAsUj1HKzI4fDAsKGM9MHxhWzQ3MjY2''@;'; put 'put ''XSl8fChjPTB8aXMoMjA4MTIsMHxhWzQ1ODFdKSxhWzQ3MjY2XT1jKSxjPTB8bWlbNjMmYVtjPj4yXV0oYyxsLDUxMik7ZG97aWYoIWMpe2lmKCEobT0wfG5TKGwsMTM4ODIxKSkpe2FbZj4+Ml09bCwkcigwLDEwNDI4MyxmKSxjPTA7YnJlYWt9Zm9yKGM9MCxmPTA7Oyl7aWYoISgwfHlnKHAs''@;'; put 'put ''MTAyNCxtKSkpe3A9MTE7YnJlYWt9aWYoYVtBPj4yXT1rLGFbQSs0Pj4yXT1NLGFbQSs4Pj4yXT1ELGFbQSsxMj4+Ml09UixmPShxPTQ9PSgwfGlsKHAsMTA0MzExLEEpKSk/MTpmLDM3IT0oMHxmZVtwPj4wXSkmJihjPShxPTA9PSgwfHRTKHAsMTA0MzQwKSkpP2M6MSksMCE9KDB8ZikmMCE9''@;'; put 'put ''KDB8Yykpe3A9MTI7YnJlYWt9fTExPT0oMHxwKSYmKGY/cD0xMjooYVt3Pj4yXT1sLCRyKDAsMTA0MzQ1LHcpLGM9MCkpLDEyPT0oMHxwKSYmKHE9MHxRbig2NCksYVtxKzMyPj4yXT1rPTB8YVtrPj4yXSxNPTB8YVtNPj4yXSxhW3ErNDA+PjJdPSgwfGFbRD4+Ml0pLWssYVtxKzM2Pj4yXT0o''@;'; put 'put ''MHxhW1I+PjJdKS1NLGFbcSs4Pj4yXT1sLGFbNDcyNjddPTErKFI9MHxhWzQ3MjY3XSksYVtxKzEyPj4yXT1SLFQkKDB8WSQobSksYiksRD0wfFFuKDErKFI9MHxhW2IrMzY+PjJdKXwwKSxhW3ErNTI+PjJdPUQsbjMobSwwLDApLEckKEQsUiwxLG0pLGZlW0QrUj4+MF09MCxtaVs2MyZhWyhS''@;'; put 'put ''PTB8YVs0NzI2Nl0pPj4yXV0oUixxLDEpLGZlW3ErMTY+PjBdPWMsYz1xKSx0dyhtKX19d2hpbGUoMCk7cmV0dXJuIGxlPUcsMHxjfShjKSwwfGMmJihmPTB8YVtjKzQ0Pj4yXSxfWzMyKyhsPTB8YVsoQT1sKzE2fDApPj4yXSk+PjNdPS4wMTM4ODg4ODg4ODg4ODg4ODgqKygwfChtPTB8YVtj''@;'; put 'put ''KzQwPj4yXSkpLF9bbCs0MD4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCorKDB8ZiksbD0wfHZyKDEyKSxhWzEyKygwfGFbQT4+Ml0pPj4yXT1sLGFbbD4+Ml09YVtjKzEyPj4yXSxhW2wrND4+Ml09KCgwfG0pLy0yfDApLSgwfGFbYyszMj4+Ml0pLGFbbCs4Pj4yXT0oKDB8ZikvLTJ8MCktKDB8''@;'; put 'put ''YVtjKzM2Pj4yXSkpKTooYVtmPj4yXT0wfHRpKGwpLCRyKDAsMTA0MjM0LGYpKSxsZT1wfSxmdW5jdGlvbiBIUShsKXtGdCgwfGFbMTIrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0pfSxmdW5jdGlvbiBSUihsKXt2YXIgYyxmPTA7Yz0wfGFbMTY4KygwfGFbKGx8PTApPj4yXSk+PjJdLDB8YVso''@;'; put 'put ''Zj1sKzU4MHwwKT4+Ml18fChhW2Y+PjJdPWMsZmVbKGY9MTEyKygwfGFbYysxNj4+Ml0pfDApPj4wXT0yfGZlW2Y+PjBdLFk4KGwsYykpLGdXKGwsYyksZmVbbCs1NDA+PjBdPTF9LGZ1bmN0aW9uIGJiKGwpe30sZnVuY3Rpb24gbnZlKGwpe3IkKDB8YVs1MisobHw9MCk+PjJdLDB8YVtsKzU2''@;'; put 'put ''Pj4yXSl9LGZ1bmN0aW9uIEZVKGwpe3ZhciBrLEQscSxjPTAsZj0wLHA9MCxtPTAsQT0wLHc9MCxiPTAsTT0wLFI9MCxHPTA7Zm9yKHE9bGUsbGU9bGUrMzJ8MCxSPXErMTZ8MCxEPXEsYz0wfGl0WzIzNisoZj0wfGFbKGs9MTYrKGx8PTApfDApPj4yXSk+PjFdOyEoKDB8Yyk+KDB8aXRbZisy''@;'; put 'put ''Mzg+PjFdKSk7KWFbKDB8YVtmKzI2OD4+Ml0pKyhjPDwyKT4+Ml09MCxjPWMrMXwwLGY9MHxhW2s+PjJdO2ZvcihxWShsKSx3PTB8RHQobCk7dzspe2ZvcihIVShsLHcpLEE9MHx3MChsLHcpO0E7KXtmb3IoZj1BO2M9MHxhWzE3MisoMHxhW2YrMTY+PjJdKT4+Ml07KWY9Yztmb3IobT1BKy00''@;'; put 'put ''OHwwO2M9ZistNDh8MCwhKCgwfGFbMjMyKygwfGFbMTYrKHA9MHxhWygyPT0oMyZhW2Y+PjJdfDApP2Y6YykrNDA+PjJdKT4+Ml0pPj4yXSk+PSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMj09KDMmYVtBPj4yXXwwKT9BOm0pKzQwPj4yXSk+PjJdKT4+Ml0pKTspSFUobCxwKSxmPTB8YVthWzE4''@;'; put 'put ''MCsoMHxhWzE2KygwfGFbKDI9PSgzJmFbZj4+Ml18MCk/ZjpjKSs0MD4+Ml0pPj4yXSk+PjJdPj4yXTtBPTB8UzAobCxBKX13PTB8enQobCx3KX1mb3IoQT0wfGl0WzIzNisoYz0wfGFbaz4+Ml0pPj4xXTs7KXtpZigoMHxBKT4oMHxpdFtjKzIzOD4+MV0pKXtiPTEsTT1jO2JyZWFrfWlmKGM9''@;'; put 'put ''MHxhWygwfGFbYysyNjg+PjJdKSsoQTw8Mik+PjJdLHc9MHxhWygwfGFbMTk2KygwfGFbMTYrKDB8eWEobCkpPj4yXSk+PjJdKSsoQTw8NikrND4+Ml0sKDB8YVt3KyhhWzIzNisoMHxhWyhmPWMrMTZ8MCk+PjJdKT4+Ml08PDIpPj4yXSkhPSgwfGMpKXtHPTE3O2JyZWFrfW09MHxhWygwfGFb''@;'; put 'put ''MTk2KygwfGFbMTYrKDB8eWEobCkpPj4yXSk+PjJdKSsoQTw8NikrND4+Ml0sYVsoZj0wfGFbMTk2KyhjPTB8YVtrPj4yXSk+PjJdKSsoQTw8NikrND4+Ml09bSsoYVsyMzYrKDB8YVsxNisoMHxhWygwfGFbYysyNjg+PjJdKSsoQTw8Mik+PjJdKT4+Ml0pPj4yXTw8MiksYz0tMSxtPTA7ZTpm''@;'; put 'put ''b3IoOyEoKDB8bSk+PSgwfGFbZisoQTw8Nik+PjJdKSkmJihmPTB8YVsoMHxhW2YrKEE8PDYpKzQ+PjJdKSsobTw8Mik+PjJdLGYpOyl7cD0wfGFbZisxNj4+Ml07dDpkb3tpZigwfGZlW3ArMTU2Pj4wXSl7Zm9yKGY9MHxhW2FbcCsxNzI+PjJdPj4yXTs7KXtpZighZilicmVhayB0O2lmKCEo''@;'; put 'put ''cD0wfGFbMTE2KygwfGFbZisxNj4+Ml0pPj4yXSkpYnJlYWs7Zj1wfTB8TnIobCwwfGFbKDM9PSgzJmFbZj4+Ml18MCk/ZjpmKzQ4fDApKzQwPj4yXSkmJihjPSh3PTA9PSgwfE5yKGwsMHxhWygyPT0oMyZhW2Y+PjJdfDApP2Y6ZistNDh8MCkrNDA+PjJdKSkpP2M6bSl9ZWxzZXtpZighKDB8''@;'; put 'put ''TnIobCxmKSkpYnJlYWsgZTtjPW19fXdoaWxlKDApO209bSsxfDAsZj0wfGFbMTk2KygwfGFbaz4+Ml0pPj4yXX0tMT09KDB8YykmJihhW1I+PjJdPTB8dGkobCksYVtSKzQ+PjJdPUEsJHIoMCw4ODI3NyxSKSksYVsoMHxhWzE5Nisodz0wfGFbaz4+Ml0pPj4yXSkrKEE8PDYpPj4yXT1jKzEs''@;'; put 'put ''QT1BKzF8MCxjPXd9Zm9yKDE3PT0oMHxHKSYmKFI9MHx0aShjKSxHPTB8YVsyMzYrKDB8YVtmPj4yXSk+PjJdLGFbRD4+Ml09UixhW0QrND4+Ml09RyxhW0QrOD4+Ml09QSwkcigxLDg4MjE5LEQpLHplKDE4NzAxNiwxKSk7ISgoMHxiKT4oMHxhW00rMTgwPj4yXSkpOylGVSgwfGFbKDB8YVtN''@;'; put 'put ''KzE4ND4+Ml0pKyhiPDwyKT4+Ml0pLGI9YisxfDAsTT0wfGFbaz4+Ml07bGU9cX0sZnVuY3Rpb24gSXNlKGwpe3ZhciBmLGM9MDtyNChsfD0wLDIpLGM9MHx2cig1NiksYVsxNDArKDB8YVsoZj1sKzE2fDApPj4yXSk+PjJdPWMsYz02NTUzNSYoMHxlcyhsLDB8c2kobCwwLDkxMzc0LDApLDIs''@;'; put 'put ''MikpLGl0WzE3NisoMHxhW2Y+PjJdKT4+MV09Yz0oNjU1MzUmYyk8MTA/YzoxMCxhWzQ3MTM3XT02NTUzNSZjLFREKGwsMCxsKSxmdW5jdGlvbiBMc2UobCl7bHw9MDt2YXIgcCxjPTAsZj0wO3A9bGUsbGU9bGUrMTZ8MCxhWzQ2NDc0XT0xLGFbNDY0NzVdPTEsYVs0NjQ3N109LTEsYVs0NjQ3''@;'; put 'put ''OV09NTAsX1syMzI0NV09MCxfWzIzMjQwXT0wLF9bMjMyNDFdPTEsYVs0NjQ3OF09MHxlcyhsLDB8c2kobCwwLDkxMDYxLDApLDYwMCwwKSxmPStNbChsLDB8c2kobCwwLDkxMjAyLDApLC4zLDApLF9bMjMyNDJdPWYsX1sxMzcxXT1mLGM9K01sKGwsMHxzaShsLDAsOTEwNjksMCksLTEsMCks''@;'; put 'put ''X1syMzI0M109YyxhWzQ2NDc2XT0xLGw9MHxITihsLDIsMTg1OTA0KSxhWzQ2NDg4XT1sLGx8fCgkcigwLDkxMDcyLHApLGFbNDY0NzZdPTIpLGFbNDY1MDRdPSgwfEFyKDB8YVs0NjQ3OF0sMHxhWzQ2NDc5XSkpLzEwMHwwLF9bMjMyNDddPShmPStfWzIzMjQyXSkqZiwwfGFbNDY0NzRdJiYo''@;'; put 'put ''KGM9K19bMjMyNDVdKTw9MCYmKF9bMjMyNDVdPWM9MypmKSxfWzIzMjQ2XT1jKmMpLGxlPXB9KGwpLGZ1bmN0aW9uIENzZShsKXt2YXIgYz0wLGY9MCxwPTA7Zm9yKCRpKGx8PTAsMSwxMzc0NDcsMzA0LDEpLGZ1bmN0aW9uIFNsZShsKXt2YXIgcCxBLGIsYz0wLGY9MCxtPTAsdz0wO2Zvcihi''@;'; put 'put ''PWxlLGxlPWxlKzE0NHwwLHA9YixBPTB8eUoobHw9MCksbT0wfGlzKDIzNTkyLDB8YVs0NTgxXSksaDAodz0wfHBzKGwsMTA4MDE0LDEpLDEzNzQ4MywyODAsMSksdXMocCwxMjgsYisxNnwwKSxjPTB8RHQobCk7Yzspe2U6ZG97aWYoISgwfGZlWzExOCsoMHxhW2MrMTY+PjJdKT4+MF0pKWZv''@;'; put 'put ''cihmPTB8dzAobCxjKTs7KXtpZighZilicmVhayBlO01sZShmLHcscCxtLEEpLGY9MHxTMChsLGYpfX13aGlsZSgwKTtjPTB8enQobCxjKX1mb3IoQzIocCksTmwobSksZj0wfEdvKHcpLGM9MHxEdCh3KTtjOyltPTB8enQodyxjKSxvaShsLGMpLGM9bTtDMSh3KSwwfGYmJihpdFsodz0xMzYr''@;'; put 'put ''KDB8YVtsKzE2Pj4yXSl8MCk+PjFdPTF8aXRbdz4+MV0pLE5sKEEpLGxlPWJ9KGwpLGM9MHx2cig0KygoMHxHbyhsKSk8PDIpfDApLGFbMTUyKygwfGFbKHA9bCsxNnwwKT4+Ml0pPj4yXT1jLGM9MCxmPTB8RHQobCk7Zjspa3NlKGYpLGFbKDB8YVsxNTIrKDB8YVtwPj4yXSk+PjJdKSsoYzw8''@;'; put 'put ''Mik+PjJdPWYsYVsxMjArKDB8YVtmKzE2Pj4yXSk+PjJdPWMsYz1jKzF8MCxmPTB8enQobCxmKTtmb3IocD0wfHNpKGwsMiw5MjQ5MywwKSxmPTB8RHQobCk7Zjspe2ZvcihjPTB8dzAobCxmKTtjOylTc2UoYyxwKSxjPTB8UzAobCxjKTtmPTB8enQobCxmKX0hZnVuY3Rpb24gTXNlKGwpe3Zh''@;'; put 'put ''ciBrLE0sUixHLHEsYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLEQ9MCxwZT0wO3E9bGUsbGU9bGUrMzJ8MCxHPXErMTZ8MCxSPXEsaz1xKzI0fDAsTT0wfHNpKGx8PTAsMSwxMDI2MjMsMCk7ZTpkb3tpZigwfE0pZm9yKEQ9MHxzaShsLDEsOTA2NjAsMCksQT1sKzE2fDAsdz0wPT0oMHxE''@;'; put 'put ''KSxiPTB8YVsxNTcxMl0sbT0wOzspe2lmKCEoZj0wfGFbKDB8YVsxNTIrKDB8YVtBPj4yXSk+PjJdKSsobTw8Mik+PjJdKSlicmVhayBlO2w9MHxIbyhmLE0pO2Rve2lmKDB8ZmVbbD4+MF0pe2lmKGM9MHxhWzEzMisoMHxhWyhwPWYrMTZ8MCk+PjJdKT4+Ml0sZmVbaz4+MF09MCxhW1I+PjJd''@;'; put 'put ''PWMsYVtSKzQ+PjJdPWMrOCxhW1IrOD4+Ml09aywoMHxpbChsLDEwMTc0OSxSKSk8PTEpe2FbRz4+Ml09MHx0aShmKSxhW0crND4+Ml09bCxUMChiLDkwNjY0LEcpO2JyZWFrfXQ6ZG97aWYoK19bMjMyOTNdPjApZm9yKGw9MDs7KXtpZigyPT0oMHxsKSlicmVhayB0O19bKHBlPWMrKGw8PDMp''@;'; put 'put ''fDApPj4zXT0rX1twZT4+M10vK19bMjMyOTNdLGw9bCsxfDB9fXdoaWxlKDApO2lmKGZlWzExOSsobD0wfGFbcD4+Ml0pPj4wXT0xLDMzIT0oMHxmZVtrPj4wXSkpe2lmKHd8fCEoKDB8dDEoMHxIbyhmLEQpKSk8PDI0Pj4yNCkpYnJlYWs7bD0wfGFbcD4+Ml19ZmVbbCsxMTk+PjBdPTN9fXdo''@;'; put 'put ''aWxlKDApO209bSsxfDB9fXdoaWxlKDApO2xlPXF9KGwpfShsKX0sZnVuY3Rpb24gdVYobCl7dmFyIGMsZjtjPWxlLGxlPWxlKzY0fDAsZnVuY3Rpb24gVHNlKGwsYyl7YVs0KyhjfD0wKT4+Ml09MHxzaShsfD0wLDAsOTA3MTYsMCksYVtjKzg+PjJdPTB8c2kobCwwLDE0MTExNiwwKSxhW2Mr''@;'; put 'put ''MTI+PjJdPTB8c2kobCwwLDE0MTA0OCwwKSxhW2M+PjJdPWwsYVtjKzE2Pj4yXT0wLGFbYyszNj4+Ml09MHxhNyhsLDIsNCxjKzIwfDApfShsfD0wLGY9YyksY1YobCxmKSxmdW5jdGlvbiB1WChsKXt2YXIgYz0wLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wO2ZvcihjPTB8RHQobHw9MCk7Yzsp''@;'; put 'put ''MHxmZVsxMTgrKGY9MHxhW2MrMTY+PjJdKT4+MF0mJihtPTM2Kih3PStfWzI0KyhiPTB8YVsxNDArKDB8YVsxNisoMHxhW2YrMjEyPj4yXSk+PjJdKT4+Ml0pPj4zXS0rX1tiKzg+PjNdKSxwPTM2KihBPStfW2IrMzI+PjNdLStfW2IrMTY+PjNdKSxfWyhiPTB8YVtmKzEzMj4+Ml0pPj4zXT0u''@;'; put 'put ''NSp3LF9bYis4Pj4zXT0uNSpBLF9bZiszMj4+M109dyxfW2YrNDA+PjNdPUEsX1tmKzk2Pj4zXT1tLF9bZis4OD4+M109bSxfW2YrODA+PjNdPTcyKkEsX1soZj0wfGFbNDQrKDB8YVtmKzEyPj4yXSk+PjJdKT4+M109bSxfW2YrOD4+M109cCxfW2YrMTY+PjNdPUE9LW0sX1tmKzI0Pj4zXT1w''@;'; put 'put ''LF9bZiszMj4+M109QSxfW2YrNDA+PjNdPXA9LXAsX1tmKzQ4Pj4zXT1tLF9bZis1Nj4+M109cCksYz0wfHp0KGwsYyl9KGwpLGNYKGwsbCksSUQobCksbGU9Y30sZnVuY3Rpb24gUHZlKGwpe3ZhciBmLHAsbSx3LGM9MCxBPTA7aWYodz1sZSxsZT1sZSsxNnwwLG09dyxjPTY1NTM1JihwPTE0''@;'; put 'put ''Jml0WzEzNisoMHxhWyhmPTE2KyhsfD0wKXwwKT4+Ml0pPj4xXSksKDY1NTM1JnApPjgpe3A8PDE2Pj4xNj09MTI/MHxQSihsLDIyLDEwKSYmKGFbNDcxMzRdPTIsQT01KTpBPTU7ZG97aWYoNT09KDB8QSkpe2lmKDEmaXRbMTM2KygwfGFbZj4+Ml0pPj4xXSl7JHIoMCw5MDk5OCxtKSxjPTI7''@;'; put 'put ''YnJlYWt9a0QobCxjKTticmVha319d2hpbGUoMCk7YVs0NzEzNF09MH0oMHxhWzQ3MTM4XSk8MSYma0QobCxjKSxsZT13fSxGdCxmdW5jdGlvbiBvaihsKXtGdCgwfGFbOCsobHw9MCk+PjJdKSxGdChsKX0sVDUsTXJlLGZ1bmN0aW9uIHpyZShsKXs3PT0oMHxhWyhsfD0wKT4+Ml0pJiZBeSgw''@;'; put 'put ''fGFbbCsxMTI+PjJdLDEpfSxmdW5jdGlvbiBxdShsKXtsfD0wO3ZhciBjPTA7MHxhWzQ3Mzc1XXx8KGM9MHx2cig0KyhsPDwyKXwwKSxhWzQ3Mzc1XT1jLGFbYz4+Ml09MTg5NTA0LGFbNDczODZdPWwpLGFbNDczODddPTB9LGZ1bmN0aW9uIFNSKGwpe3ZhciBmLGM9MCxwPTA7Zm9yKGFbKGx8''@;'; put 'put ''PTApPj4yXT1jPTB8YVtsKzg+PjJdLGFbbCs0Pj4yXT1hW2wrMTI+PjJdLGY9bCsxNnwwLGw9MDshKCgwfGwpPj0oMHxjKSk7KWl0WyhwPTB8YVtmPj4yXSkrKDQwKmx8MCkrMTY+PjFdPTB8aXRbcCsoNDAqbHwwKSsxOD4+MV0sbD1sKzF8MDtmb3IoYz1jKzJ8MDshKCgwfGwpPj0oMHxjKSk7''@;'; put 'put ''KWl0WygwfGFbZj4+Ml0pKyg0MCpsfDApKzE2Pj4xXT0wLGw9bCsxfDB9LGZ1bmN0aW9uIGdSKGwpe3ZhciBjLGY7dlIoMHxhWyhmPTIwKyhsfD0wKXwwKT4+Ml0pLHZSKDB8YVsoYz1sKzI0fDApPj4yXSksaGIoMHxhW2Y+PjJdKSxoYigwfGFbYz4+Ml0pLFljKDB8YVtmPj4yXSxsKSxZYygw''@;'; put 'put ''fGFbYz4+Ml0sbCksaW0oMHxhW2Y+PjJdKSxpbSgwfGFbYz4+Ml0pfSx5eSxmdW5jdGlvbiBoQihsKXt2YXIgYyxmO0Z0KDB8YVszNisoMHxhWyhmPTgrKGx8PTApfDApPj4yXSk+PjJdKSxGdCgwfGFbMzYrKDB8YVsoYz1sKzEyfDApPj4yXSk+PjJdKSxGdCgwfGFbZj4+Ml0pLEZ0KDB8YVtj''@;'; put 'put ''Pj4yXSksZnVuY3Rpb24gWE0obCl7dmFyIGM7RnQoMHxhWzI4KygwfGFbKGM9MTYrKGx8PTApfDApPj4yXSk+PjJdKSxGdCgwfGFbYz4+Ml0pLEZ0KDB8YVtsKzIwPj4yXSksRnQobCl9KDB8YVtsKzE2Pj4yXSksTmwoMHxhW2wrMjA+PjJdKSxObCgwfGFbbCsyND4+Ml0pLEZ0KGwpfSxleCxm''@;'; put 'put ''dW5jdGlvbiBkRyhsKXt2YXIgZixwLHcsYz0wLG09MCxBPTA7dz1sZSxsZT1sZSs2NHwwLHA9dys0OHwwLEE9dyszMnwwLG09dysxNnwwLGY9dywoMHxhWzQ3NTE2XSk8KDB8KGx8PTApKSYmKChjPTB8YVs0NzUxMF0pPyhtPTB8VWEoYyxsPDwzKSxhWzQ3NTEwXT1tLG18fChtPTB8YVsxNTcx''@;'; put 'put ''Ml0sYVtBPj4yXT0xNDE4NTgsYVtBKzQ+PjJdPTUzMyxhW0ErOD4+Ml09MTQyMTQ3LFQwKG0sMTQxODM5LEEpLHplKDE4OTg1NiwxKSksQT0wfFVhKDB8YVs0NzUxMV0sbDw8MiksYVs0NzUxMV09QSxBfHwoQT0wfGFbMTU3MTJdLGFbcD4+Ml09MTQxODU4LGFbcCs0Pj4yXT01MzksYVtwKzg+''@;'; put 'put ''PjJdPTE0MjE2NyxUMChBLDE0MTgzOSxwKSx6ZSgxODk4NTYsMSkpKTooQT0wfEYwKGw8PDMpLGFbNDc1MTBdPUEsQXx8KEE9MHxhWzE1NzEyXSxhW2Y+PjJdPTE0MTg1OCxhW2YrND4+Ml09NTIzLGFbZis4Pj4yXT0xNDIxMDgsVDAoQSwxNDE4MzksZiksemUoMTg5ODU2LDEpKSxBPTB8RjAo''@;'; put 'put ''bDw8MiksYVs0NzUxMV09QSxBfHwoQT0wfGFbMTU3MTJdLGFbbT4+Ml09MTQxODU4LGFbbSs0Pj4yXT01MjcsYVttKzg+PjJdPTE0MjEyNyxUMChBLDE0MTgzOSxtKSx6ZSgxODk4NTYsMSkpKSxhWzQ3NTE2XT1sKSxsZT13fSxmdW5jdGlvbiByQShsKXt2YXIgbSxjPTAsZj0wLHA9MDttPWxl''@;'; put 'put ''LGxlPWxlKzMyfDAscD1tKzE2fDAsZj1tLCgwfGFbNDc1MDZdKTwoMHwobHw9MCkpJiYoKGM9MHxhWzQ3NTA1XSk/KGY9MHxVYShjLGw8PDIpLGFbNDc1MDVdPWYsZnx8KGY9MHxhWzE1NzEyXSxhW3A+PjJdPTE0MTg1OCxhW3ArND4+Ml09NTgwLGFbcCs4Pj4yXT0xNDIwODUsVDAoZiwxNDE4''@;'; put 'put ''MzkscCksemUoMTg5ODU2LDEpKSk6KHA9MHxGMChsPDwyKSxhWzQ3NTA1XT1wLHB8fChwPTB8YVsxNTcxMl0sYVtmPj4yXT0xNDE4NTgsYVtmKzQ+PjJdPTU3MyxhW2YrOD4+Ml09MTQyMDYzLFQwKHAsMTQxODM5LGYpLHplKDE4OTg1NiwxKSkpLGFbNDc1MDZdPWwpLGxlPW19LGZ1bmN0aW9u''@;'; put 'put ''IGdHKGwpe3ZhciBtLGM9MCxmPTAscD0wO209bGUsbGU9bGUrMzJ8MCxwPW0rMTZ8MCxmPW0sKDB8YVs0NzUxNF0pPCgwfChsfD0wKSkmJigoYz0wfGFbNDc1MTJdKT8oZj0wfFVhKGMsbDw8NCksYVs0NzUxMl09ZixmfHwoZj0wfGFbMTU3MTJdLGFbcD4+Ml09MTQxODU4LGFbcCs0Pj4yXT01''@;'; put 'put ''OTksYVtwKzg+PjJdPTE0MTk4NCxUMChmLDE0MTgzOSxwKSx6ZSgxODk4NTYsMSkpKToocD0wfEYwKGw8PDQpLGFbNDc1MTJdPXAscHx8KHA9MHxhWzE1NzEyXSxhW2Y+PjJdPTE0MTg1OCxhW2YrND4+Ml09NTkzLGFbZis4Pj4yXT0xNDE5NjYsVDAocCwxNDE4MzksZiksemUoMTg5ODU2LDEp''@;'; put 'put ''KSksYVs0NzUxNF09bCksbGU9bX0sZjgsZjgsZjgsZjgsZjgsZjgsZjgsZjgsZjhdLEdzPVtMcyxmdW5jdGlvbiBIVyhsLGMpe2x8PTA7dmFyIHcsayxNLGY9MCxwPTAsbT0wLEE9MCxiPTAsRD0wO009bGUsbGU9bGUrMzJ8MCx3PU0sQT1NKzIwfDAsaz0zMisoY3w9MCl8MDtlOmRve3N3aXRj''@;'; put 'put ''aCgwfGFbaz4+Ml0pe2Nhc2UgNTpmb3IoZj0wOzspe2lmKHA9MHxhWzEyNzI0KyhmPDwyKT4+Ml0sOD09KDB8ZikpYnJlYWsgZTtpZigoMHxmZVtwPj4wXSk9PSgwfGZlWyhtPTB8YVtjPj4yXSk+PjBdKSYmMD09KDB8WmkocCxtKSkpe2I9MTA7YnJlYWsgZX1mPWYrMXwwfWNhc2UgMTpmPTMy''@;'; put 'put ''KygwfE5XKEEsMHxYdFtjPj4wXSwwfFh0WyhwPWMrMXwwKT4+MF0sMHxYdFsobT1jKzJ8MCk+PjBdKSl8MCwwfGFbQT4+Ml0mJihEPTB8WHRbYz4+MF0sQT0wfFh0W3A+PjBdLGI9MHxYdFttPj4wXSxhW3c+PjJdPTAsYVt3KzQ+PjJdPWYsYVt3Kzg+PjJdPUQsYVt3KzEyPj4yXT1BLGFbdysx''@;'; put 'put ''Nj4+Ml09YixPcihsLDY4NDkyLHcpKSxiPTEwO2JyZWFrO2RlZmF1bHQ6UHIoMTM4Mzk0LDY3ODg5LDE2Myw2NzkyMCl9fXdoaWxlKDApOzEwPT0oMHxiKSYmKGFbYz4+Ml09ZiksYVtrPj4yXT02LGxlPU19LGZ1bmN0aW9uIFFUKGwsYyl7dmFyIGYscDtsfD0wLGY9bGUsbGU9bGUrMTZ8MCxh''@;'; put 'put ''WyhwPWYpPj4yXT1jfD0wLE9yKGwsNjgzMjUscCksbGU9Zn0sZnVuY3Rpb24gS1QobCxjKXtsfD0wO3ZhciB3LGssTSxmPTAscD0wLG09MCxBPTAsYj0wLEQ9MDtNPWxlLGxlPWxlKzMyfDAsdz1NLEE9TSsyMHwwLGs9MzIrKGN8PTApfDA7ZTpkb3tzd2l0Y2goMHxhW2s+PjJdKXtjYXNlIDU6''@;'; put 'put ''Zm9yKGY9MDs7KXtpZihwPTB8YVsxMjcyNCsoZjw8Mik+PjJdLDg9PSgwfGYpKWJyZWFrIGU7aWYoKDB8ZmVbcD4+MF0pPT0oMHxmZVsobT0wfGFbYz4+Ml0pPj4wXSkmJjA9PSgwfFppKHAsbSkpKXtiPTEwO2JyZWFrIGV9Zj1mKzF8MH1jYXNlIDE6Zj0zMisoMHxZVyhBLDB8WHRbYz4+MF0s''@;'; put 'put ''MHxYdFsocD1jKzF8MCk+PjBdLDB8WHRbKG09YysyfDApPj4wXSkpfDAsMHxhW0E+PjJdJiYoRD0wfFh0W2M+PjBdLEE9MHxYdFtwPj4wXSxiPTB8WHRbbT4+MF0sYVt3Pj4yXT0wLGFbdys0Pj4yXT1mLGFbdys4Pj4yXT1ELGFbdysxMj4+Ml09QSxhW3crMTY+PjJdPWIsT3IobCw2ODQ5Mix3''@;'; put 'put ''KSksYj0xMDticmVhaztjYXNlIDA6Zj0wLGI9MTA7YnJlYWs7ZGVmYXVsdDpQcigxMzgzOTQsNjg1MTMsMTY4LDY4NTMyKX19d2hpbGUoMCk7MTA9PSgwfGIpJiYoYVtjPj4yXT1mKSxhW2s+PjJdPTYsbGU9TX0sZnVuY3Rpb24ga2llKGwsYyl7dmFyIGYscDtsfD0wLGY9bGUsbGU9bGUrMTZ8''@;'; put 'put ''MCxhWyhwPWYpPj4yXT1jfD0wLE9yKGwsNjgzMjUscCksbGU9Zn0sZnVuY3Rpb24gUmllKGwsYyl7Y3w9MCxFbihsfD0wLDY4ODQ5KSxFbihsLGMpLEVuKGwsMTUzNTk5KX0sZnVuY3Rpb24gQzdlKGwsYyl7Y3w9MCxFbihsfD0wLDczMzk4KSxFbihsLDB8TTEoYykpLEVuKGwsNzU0NTgpfSxm''@;'; put 'put ''dW5jdGlvbiBMN2UobCxjKXtjfD0wLEVuKGx8PTAsNzUxMzgpLEVuKGwsMHxxVChjKSksRW4obCwxNTM1OTkpfSxmdW5jdGlvbiBWN2UobCxjKXtjfD0wLEVuKGx8PTAsNzU0NDYpLEVuKGwsMHxuaShjKSksRW4obCw3NTQ1OCl9LGZ1bmN0aW9uIFdpZShsLGMpe3ZhciBmLHA7bHw9MCxmPWxl''@;'; put 'put ''LGxlPWxlKzE2fDAsYVsocD1mKT4+Ml09Y3w9MCxPcihsLDc4MjQyLHApLGxlPWZ9LGZ1bmN0aW9uIG9JKGwsYyl7dmFyIGYscDtsfD0wLGN8PTAsZj1sZSxsZT1sZSsxNnwwLGFbKHA9Zik+PjJdPTgxMDk0LGFbcCs0Pj4yXT1jLE9yKGwsODEwODcscCksbGU9Zn0sZnVuY3Rpb24gWWUobCxj''@;'; put 'put ''KXtGdChjfD0wKX0sZnVuY3Rpb24gV2FlKGwsYyl7Y3w9MDt2YXIgayxNLHBlLGdlLGJlLE9lLExlLFJlLFdlLGF0LFN0LGt0LEV0LFp0LGN0LGJ0LGFuLGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLEQ9MCxSPTAsRz0wLHE9MCxIZT0wLFZlPTAscWU9MCxydD0wLHN0PTAsU249MCxIbj0wO2Fu''@;'; put 'put ''PWxlLGxlPWxlKzQ4fDAsU3Q9YW4rMjR8MCxhdD1hbisxNnwwLFJlPWFuKzh8MCxMZT1hbixadD1hbiszMnwwLHc9YW4rMjh8MCwwPT0oMHwoZj0wfGFbKGJ0PTIwOCsoY3Q9MHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4yXSkpJiYwPT0oMSZpdFtjdCsyNjA+PjFdKT9zdD0wOnJ0PTQsND09KDB8''@;'; put 'put ''cnQpJiYoNCZhW2wrMTUyPj4yXXx8RzEobCxmLDB8YVtjdCsyMjg+PjJdLDB8YVtjdCsyNDQ+PjJdLDB8YVtjdCsyMTI+PjJdKSxzdD0xKSxXZT0wfGFbNDQrKEQ9MHxhWzEyKyhmPTB8YVsoa3Q9YysxNnwwKT4+Ml0pPj4yXSk+PjJdLEV0PTB8YVtEKzg+PjJdLEQ9MHxhW0QrND4+Ml0sKDB8''@;'; put 'put ''YVs0NzI4NV0pPCgwfEV0KSYmKGFbNDcyODVdPWY9RXQrNXwwLGY9KHA9MHxhWzQ3Mjg2XSk/MHxWMChwLGY8PDQpOjB8UW4oZjw8NCksYVs0NzI4Nl09ZixmPTB8YVtrdD4+Ml0pLGFbKHFlPTU2KygwfGFbZisxMDQ+PjJdKXwwKT4+Ml09YVsoZj1mKzE2fDApPj4yXSxhW3FlKzQ+PjJdPWFb''@;'; put 'put ''Zis0Pj4yXSxhW3FlKzg+PjJdPWFbZis4Pj4yXSxhW3FlKzEyPj4yXT1hW2YrMTI+PjJdLEhlPSgrX1s5NisocWU9MHxhW2t0Pj4yXSk+PjNdKyArX1txZSs4OD4+M10pLysoMHx+figoSGU9NzIqK19bcWUrMzI+PjNdKSsoSGU+PTA/LjU6LS41KSkpLFZlPStfW3FlKzgwPj4zXS8rKDB8fn4o''@;'; put 'put ''KFZlPTcyKitfW3FlKzQwPj4zXSkrKFZlPj0wPy41Oi0uNSkpKSxxZT0wfCRRKGwsYyksYVtadD4+Ml09MCxmPTB8WHRbMTE3KygwfGFba3Q+PjJdKT4+MF07ZG97aWYoMSZmKW1hKGwsUj0wfEJhKGMsMCwxMDYyNDApKSxobChsLDB8QmEoYywwLDEwNjI0OCkpLHA9MCxmPTE7ZWxzZXtpZigy''@;'; put 'put ''JmZ8MCl7bWEobCxSPTB8QmEoYywwLDEwNjI1NikpLGhsKGwsMHxCYShjLDAsMTA2MjY0KSkscD0wLGY9MTticmVha31pZig4JmZ8MCl7bWEobCxSPTB8QmEoYywwLDEwNjI3MikpLGhsKGwsMHxCYShjLDAsMTA2MjgwKSkscD0wLGY9MTticmVha31pZig0JmZ8MCl7bWEobCxSPTB8QmEoYyww''@;'; put 'put ''LDEwNjI4OCkpLGhsKGwsMHxCYShjLDAsMTA2Mjk2KSkscD0wLGY9MTticmVha30xJnFlPygwfHVrKHA9MHxzTihjKSxadCx3KSk8PDI0Pj4yND8oaGwobCwwfGFbWnQ+PjJdKSxVZihsLChmPTB8YVtadCs0Pj4yXSl8fDEzNzMxNCxBPTB8ZXMoYywwfGFbNDcxNzNdLDAsMCksbT0ram5bdz4+''@;'; put 'put ''Ml0pLGY9KDImcWUpPj4+MXwyKTooaGwobCxwKSxmPTEpOjU3NiZxZT8ocD0wfHNOKGMpLGY9MSk6KHA9MCxmPTApLFI9MHxTeShsLGMpfX13aGlsZSgwKTtmb3IoMHxmZVsxMisoQT0wfGFbOCsoMHxhW2t0Pj4yXSk+PjJdKT4+MF0/OTk9PSgwfGZlWyhBPTB8YVtBPj4yXSk+PjBdKT8oQT0w''@;'; put 'put ''PT0oMHxaaShBLDEwNTUxOSkpLHJ0PTMzKTpxPTE6KEE9MSxydD0zMyksMzM9PSgwfHJ0KSYmKDAhPSgwfEQpfGY8PDI0Pj4yND09MHwoQV49MSk/cT1BOihtYShsLDEzNzM3OSksRD0xLHE9MCkpLHBlPSgwfEV0KTwzLGdlPTAhPSg1MTImcWV8MCksT2U9MD09KDgmcWV8MCksYmU9MD09KDY0''@;'; put 'put ''JnFlfDApLGs9MD09KDEwMjQmcWV8MCksTT0wPT0oMjEzMDcwNjQ0NCZxZXwwKSxHPTA7ISgoMHxHKT49KDB8RCkpOyl7Zm9yKHc9MHxBcihHLEV0KSxiPTB8YVs0NzI4Nl0sQT0wOyEoKDB8QSk+PSgwfEV0KSk7KW09K19bV2UrKChIbj1BK3d8MCk8PDQpKzg+PjNdLF9bYisoQTw8NCk+PjNd''@;'; put 'put ''PStfWzE2KyhTbj0wfGFba3Q+PjJdKT4+M10rICtfW1dlKyhIbjw8NCk+PjNdKkhlLF9bYisoQTw8NCkrOD4+M109K19bU24rMjQ+PjNdK20qVmUsQT1BKzF8MDtkb3tpZighcGUpe2lmKCFiZSl7MD09KDB8RykmJigwfGJGKGwsYixwLDEpKT4xJiYoYVtSZT4+Ml09MHx0aShjKSwkcigzLDEw''@;'; put 'put ''NjMwNCxSZSkpLGthKGwsMHxhWzQ3Mjg2XSxFdCwwKTticmVha31pZighayl7bWEobCwxMzczNzkpLGthKGwsMHxhWzQ3Mjg2XSxFdCwyNTUmZiksbWEobCxSKSxXbyhsLDMyKygwfGFbNDcyODZdKXwwLDIpO2JyZWFrfWlmKGYmPTI1NSxNKXtrYShsLGIsRXQsZik7YnJlYWt9SzUobCxiLEV0''@;'; put 'put ''LHFlLGYpO2JyZWFrfWdlJjA9PSgwfEcpJiYwIT0oMHwkcyhwLDU4KSkmJigoMHxwVyhsLGIscCkpPjEmJihhW0xlPj4yXT0wfHRpKGMpLCRyKDMsMTA2MzA0LExlKSksZj0wKSwkdShsLDB8YVs0NzI4Nl0sRXQsMjU1JmYpLE9lfHx1TihsLGMpfXdoaWxlKDApO0c9RysxfDAsZj0wfWlmKDB8''@;'; put 'put ''ZmVbMTIrKEE9MHxhWzgrKDB8YVtrdD4+Ml0pPj4yXSk+PjBdPzk5PT0oMHxmZVsoQT0wfGFbQT4+Ml0pPj4wXSkmJjA9PSgwfFppKEEsMTA1NTE5KSk/MHwoQT0wfExpKGMsMTA1NTI2KSkmJjB8ZmVbQT4+MF0mJihiPUEscnQ9NjUpOihiPUEscnQ9NjUpOjB8KEE9MHxMaShjLDEwOTAyNSkp''@;'; put 'put ''JiYwfGZlW0E+PjBdJiYoYj1BLHJ0PTY1KSw2NT09KDB8cnQpKXtmb3Iodz0wfGFbNDcyODZdLEE9MDshKCgwfEEpPj0oMHxFdCkpOyltPStfW1dlKyhBPDw0KSs4Pj4zXSxfW3crKEE8PDQpPj4zXT0rX1sxNisoSG49MHxhW2t0Pj4yXSk+PjNdKyArX1tXZSsoQTw8NCk+PjNdKkhlLF9bdyso''@;'; put 'put ''QTw8NCkrOD4+M109K19bSG4rMjQ+PjNdK20qVmUsQT1BKzF8MDtBPTI1NSZmO2Rve2lmKCEocXxmPDwyND4+MjQ9PTApKXtpZihwZSl7aWYoZ2UmMD09KDB8RykmJjAhPSgwfCRzKHAsNTgpKSYmKCgwfHBXKGwsdyxwKSk+MSYmKGFbYXQ+PjJdPTB8dGkoYyksJHIoMywxMDYzMDQsYXQpKSxm''@;'; put 'put ''PTApLCR1KGwsMHxhWzQ3Mjg2XSxFdCwyNTUmZiksT2UpYnJlYWs7dU4obCxjKTticmVha31pZihiZSl7aWYoMTImcWUpe0s1KGwsdyxFdCxxZSxBKTticmVha31rYShsLHcsRXQsQSk7YnJlYWt9KDB8YkYobCx3LHAsMSkpPjEmJihhW1N0Pj4yXT0wfHRpKGMpLCRyKDMsMTA2MzA0LFN0KSks''@;'; put 'put ''a2EobCwwfGFbNDcyODZdLEV0LDApO2JyZWFrfX13aGlsZSgwKTt0RShsLGIsSG49MHxhWzQ3Mjg2XSxFdCxmLDB8djIoYywwfGFbNDcxNjZdLDEzNzMwOCkpfUZ0KDB8YVtadD4+Ml0pLGI3KGwsMTAsMHxhWzEwNCsoMHxhW2t0Pj4yXSk+PjJdKSxzdCYmKDQmYVtsKzE1Mj4+Ml18MCYmRzEo''@;'; put 'put ''bCwwfGFbYnQ+PjJdLDB8YVtjdCsyMjg+PjJdLDB8YVtjdCsyNDQ+PjJdLDB8YVtjdCsyMTI+PjJdKSxFaChsKSksbGU9YW59LGZ1bmN0aW9uIG5sZShsLGMpe2N8PTA7dmFyIGIsayxNLFIsRyxxLGY9MCxwPTAsbT0wLEE9MCx3PTAsRD0wLHBlPTAsZ2U9MCxiZT0wO3E9bGUsbGU9bGUrMTZ8''@;'; put 'put ''MCxtPXEsMD09KDB8KGY9MHxhWyhHPTIwOCsoUj0wfGFbMTYrKGx8PTApPj4yXSl8MCk+PjJdKSkmJjA9PSgxJml0W1IrMjYwPj4xXSk/RD0wOig0JmFbbCsxNTI+PjJdfHxHMShsLGYsMHxhW1IrMjI4Pj4yXSwwfGFbUisyNDQ+PjJdLDB8YVtSKzIxMj4+Ml0pLEQ9MSksaz0wfGFbNDQrKEE9''@;'; put 'put ''MHxhWzEyKygwfGFbKGI9YysxNnwwKT4+Ml0pPj4yXSk+PjJdLE09MHxhW0ErOD4+Ml0sQT0wfGFbQSs0Pj4yXSwoMHxhWzQ3Mjk4XSk8KDB8TSkmJihhWzQ3Mjk4XT1mPU0rMnwwLGY9KHA9MHxhWzQ3Mjk5XSk/MHxWMChwLGY8PDQpOjB8UW4oZjw8NCksYVs0NzI5OV09ZiksZUQoYyxtKSxk''@;'; put 'put ''MihsLDMyJmFbbT4+Ml0/MjIwMTY6MjIwMjApLDB8KGY9MHxhWzQ3MTcyXSkmJnhoKGwsK01sKGMsZiwxLDApKSxmPTB8WHRbMTE3KygwfGFbYj4+Ml0pPj4wXTtkb3tpZighKDEmZikpe2lmKDImZnwwKXttYShsLDB8QmEoYywwLDEwNjI1NikpLGhsKGwsZj0wfEJhKGMsMCwxMDYyNjQpKTti''@;'; put 'put ''cmVha31pZig4JmZ8MCl7bWEobCwwfEJhKGMsMCwxMDYyNzIpKSxobChsLGY9MHxCYShjLDAsMTA2MjgwKSk7YnJlYWt9aWYoNCZmKXttYShsLDB8QmEoYywwLDEwNjI4OCkpLGhsKGwsZj0wfEJhKGMsMCwxMDYyOTYpKTticmVha31obChsLGY9MHxxUShjLDEzNzMxNCkpLFN5KGwsYyk7YnJl''@;'; put 'put ''YWt9bWEobCwwfEJhKGMsMCwxMDYyNDApKSxobChsLGY9MHxCYShjLDAsMTA2MjQ4KSl9d2hpbGUoMCk7Zm9yKEE/cD1BOigwfGZlW2Y+PjBdJiZtYShsLGYpLHA9MSksbT0xLGM9MDshKCgwfGMpPj0oMHxwKSk7KXtmb3IoQT0wfEFyKGMsTSksdz0wfGFbNDcyOTldLGY9MDshKCgwfGYpPj0o''@;'; put 'put ''MHxNKSk7KXBlPStfW2srKChiZT1mK0F8MCk8PDQpKzg+PjNdLF9bdysoZjw8NCk+PjNdPStfWzE2KyhnZT0wfGFbYj4+Ml0pPj4zXSsgK19baysoYmU8PDQpPj4zXSxfW3crKGY8PDQpKzg+PjNdPStfW2dlKzI0Pj4zXStwZSxmPWYrMXwwOyR1KGwsdyxNLG0pLG09MCxjPWMrMXwwfUQmJig0''@;'; put 'put ''JmFbbCsxNTI+PjJdfDAmJkcxKGwsMHxhW0c+PjJdLDB8YVtSKzIyOD4+Ml0sMHxhW1IrMjQ0Pj4yXSwwfGFbUisyMTI+PjJdKSxFaChsKSksbGU9cX0sZnVuY3Rpb24gJGFlKGwsYyl7dmFyIGIsayxSLEcscSxwZSxiZSxPZSxnZSxmPTAscD0wLG09MCxBPTAsdz0wLE09MCxEPTA7YmU9bGUs''@;'; put 'put ''bGU9bGUrMTQ0fDAsYj1iZSs5NnwwLFI9YmUsRz1iZSsxMjh8MCxnZT0oZj0wfGFbKHBlPTIwOCsocT0wfGFbMTYrKGx8PTApPj4yXSl8MCk+PjJdKT8xOjAhPSgxJml0W3ErMjYwPj4xXSksYVsoTT1iZSs2NHwwKT4+Ml09YVsobT0xNisoaz0wfGFbMTIrKEQ9MHxhWyh3PTE2KyhjfD0wKXww''@;'; put 'put ''KT4+Ml0pPj4yXSl8MCk+PjJdLGFbTSs0Pj4yXT1hW20rND4+Ml0sYVtNKzg+PjJdPWFbbSs4Pj4yXSxhW00rMTI+PjJdPWFbbSsxMj4+Ml0sYVtNKzE2Pj4yXT1hW20rMTY+PjJdLGFbTSsyMD4+Ml09YVttKzIwPj4yXSxhW00rMjQ+PjJdPWFbbSsyND4+Ml0sYVtNKzI4Pj4yXT1hW20rMjg+''@;'; put 'put ''PjJdLF9bTT4+M109K19bTT4+M10rKE9lPStfW0QrMTY+PjNdKSxBPStfW0QrMjQ+PjNdLF9bKEQ9TSs4fDApPj4zXT0rX1tEPj4zXStBLF9bKEQ9TSsxNnwwKT4+M109K19bRD4+M10rT2UsX1sobT1NKzI0fDApPj4zXT0rX1ttPj4zXStBLGdlJiYwPT0oNCZhW2wrMTUyPj4yXXwwKSYmRzEo''@;'; put 'put ''bCxmLDB8YVtxKzIyOD4+Ml0sMHxhW3ErMjQ0Pj4yXSwwfGFbcSsyMTI+PjJdKSxmPTB8JFEobCxjKSxTeShsLGMpLGFbRz4+Ml09MCwxJmY/KDB8dWsocD0wfHNOKGMpLEcsYikpPDwyND4+MjQ/KGhsKGwsMHxhW0c+PjJdKSxVZihsLChwPTB8YVtHKzQ+PjJdKXx8MTM3MzE0LG09MHxlcyhj''@;'; put 'put ''LDB8YVs0NzE3M10sMCwwKSxBPStqbltiPj4yXSkscD1mPj4+MSYxfDIpOihobChsLHApLHA9MSk6cD0wLDc3PT0oMHxmZVsobT0wfGFbYVs4KygwfGFbdz4+Ml0pPj4yXT4+Ml0pPj4wXSkmJihmPSh3PTA9PSgwfFppKG0sMTA2MjI3KSkpPzR8ZjpmKSwyMTMwNzA2NDQ0JmY/KGFbUj4+Ml09''@;'; put 'put ''YVtNPj4yXSxhW1IrND4+Ml09YVtNKzQ+PjJdLGFbUis4Pj4yXT1hW00rOD4+Ml0sYVtSKzEyPj4yXT1hW00rMTI+PjJdLGFbKE09UiszMnwwKT4+Ml09YVtEPj4yXSxhW00rND4+Ml09YVtEKzQ+PjJdLGFbTSs4Pj4yXT1hW0QrOD4+Ml0sYVtNKzEyPj4yXT1hW0QrMTI+PjJdLF9bUisxNj4+''@;'; put 'put ''M109K19bTT4+M10sX1tSKzI0Pj4zXT0rX1tSKzg+PjNdLF9bUis0OD4+M109K19bUj4+M10sX1tSKzU2Pj4zXT0rX1tSKzQwPj4zXSxLNShsLFIsNCxmLHApKTooYVtiPj4yXT1hW00+PjJdLGFbYis0Pj4yXT1hW00rND4+Ml0sYVtiKzg+PjJdPWFbTSs4Pj4yXSxhW2IrMTI+PjJdPWFbTSsx''@;'; put 'put ''Mj4+Ml0sYVtiKzE2Pj4yXT1hW00rMTY+PjJdLGFbYisyMD4+Ml09YVtNKzIwPj4yXSxhW2IrMjQ+PjJdPWFbTSsyND4+Ml0sYVtiKzI4Pj4yXT1hW00rMjg+PjJdLHkzKGwsYixwKSksckoobCxjLGspLEZ0KDB8YVtHPj4yXSksZ2UmJig0JmFbbCsxNTI+PjJdfDAmJkcxKGwsMHxhW3BlPj4y''@;'; put 'put ''XSwwfGFbcSsyMjg+PjJdLDB8YVtxKzI0ND4+Ml0sMHxhW3ErMjEyPj4yXSksRWgobCkpLGxlPWJlfSxmdW5jdGlvbiBKYWUobCxjKXt2YXIgZixwLEEsdyxNLGIsbT0wLGs9MCxEPTAsUj0wO009bGUsbGU9bGUrMzJ8MCxrPU0sYj0obT0wfGFbKHc9MjA4KyhBPTB8YVsxNisobHw9MCk+PjJd''@;'; put 'put ''KXwwKT4+Ml0pPzE6MCE9KDEmaXRbQSsyNjA+PjFdKSwwfChwPTB8YVsxMisoYz0wfGFbKGY9MTYrKGN8PTApfDApPj4yXSk+PjJdKSYmKGImJjA9PSg0JmFbbCsxNTI+PjJdfDApJiYoRzEobCxtLDB8YVtBKzIyOD4+Ml0sMHxhW0ErMjQ0Pj4yXSwwfGFbQSsyMTI+PjJdKSxjPTB8YVtmPj4y''@;'; put 'put ''XSksbT0wfGFbbCszNj4+Ml0sUj0rX1tjKzI0Pj4zXSsgKygwfGFbcCs4Pj4yXSksRD0wfGFbcD4+Ml0sX1trPj4zXT0rX1tjKzE2Pj4zXSsgKygwfGFbcCs0Pj4yXSksX1trKzg+PjNdPVIsYVtrKzE2Pj4yXT1ELFQwKG0sMTA2NDUwLGspLGFbKGs9NTYrKDB8YVsxMDQrKG09MHxhW2Y+PjJd''@;'; put 'put ''KT4+Ml0pfDApPj4yXT1hWyhtPW0rMTZ8MCk+PjJdLGFbays0Pj4yXT1hW20rND4+Ml0sYVtrKzg+PjJdPWFbbSs4Pj4yXSxhW2srMTI+PjJdPWFbbSsxMj4+Ml0sYjcobCwxMCwwfGFbMTA0KygwfGFbZj4+Ml0pPj4yXSksYiYmKDQmYVtsKzE1Mj4+Ml18MCYmRzEobCwwfGFbdz4+Ml0sMHxh''@;'; put 'put ''W0ErMjI4Pj4yXSwwfGFbQSsyNDQ+PjJdLDB8YVtBKzIxMj4+Ml0pLEVoKGwpKSksbGU9TX0sZnVuY3Rpb24gamFlKGwsYyl7dmFyIHAsZj0wO19bKGx8PTApPj4zXT00Ljk3OTc5NjU2OTc2NTU2KihmPShwPS41MjU3MzExMTIxMTkxMzM2KitfWyhjfD0wKT4+M10pPihmPS44OTQ0MjcxOTA5''@;'; put 'put ''OTk5MTU5KitfW2MrOD4+M10pP3A6ZiksX1tsKzg+PjNdPTQuNzM2MDY3OTc3NDk5NzkqZn0sZnVuY3Rpb24gWmFlKGwsYyl7bHw9MDt2YXIgdyxiLE0sZj0wLHA9MCxtPTAsQT0wLGs9MCxEPTAsUj0wO2ZvcigoZj0obT0rX1soTT04KyhjfD0wKXwwKT4+M10pLyhwPStfW2M+PjNdKSk+Ljk1''@;'; put 'put ''MTA1NjUxNjI5NTE1MzY/az0xLjA1MTQ2MjIyNDIzODI2NzIqbTpmPC45NTEwNTY1MTYyOTUxNTM2PyhrPXAsbT0uOTUxMDU2NTE2Mjk1MTUzNipwKTprPXAscD0uNTI1NzMxMTEyMTE5MTMzNiprLHc9LjIwMDgxMTQxNTg4NjIyNzI1KmssYj0uMDUwMjAyODUzOTcxNTU2ODEqayxmPS4zMTQx''@;'; put 'put ''NTkyNjUzNTg5NzkzLEE9MDshKCgwfEEpPj0xMCk7KV9bbCsoQTw8NCk+PjNdPStoYSgrZikqcCxfW2wrKEE8PDQpKzg+PjNdPStEYSgrZikqcC1iLF9bbCsoKEQ9MXxBKTw8NCk+PjNdPStoYSgrKFI9ZisuNjI4MzE4NTMwNzE3OTU4NikpKncsX1tsKyhEPDw0KSs4Pj4zXT0rRGEoK1IpKnct''@;'; put 'put ''YixmKz0xLjI1NjYzNzA2MTQzNTkxNzIsQT1BKzJ8MDtfW2M+PjNdPWssX1tNPj4zXT1tfSxmdW5jdGlvbiBlbGUobCxjKXt2YXIgZjtsfD0wLF9bKGY9OCsoY3w9MCl8MCk+PjNdPTEuMzc1KitfW2Y+PjNdLGFbbD4+Ml09YVtjPj4yXSxhW2wrND4+Ml09YVtjKzQ+PjJdLGFbbCs4Pj4yXT1h''@;'; put 'put ''W2MrOD4+Ml0sYVtsKzEyPj4yXT1hW2MrMTI+PjJdfSxmdW5jdGlvbiB0bGUobCxjKXt2YXIgcCxtLGIsTSxELGY9MCxBPTAsdz0wLGs9MDt3PS41KihEPStfWzgrKGN8PTApPj4zXSksX1sobHw9MCk+PjNdPW09LjUqKGs9K19bYz4+M10pLF9bbCs4Pj4zXT1wPS40MDkwOTA5MDkwOTA5MDkw''@;'; put 'put ''NipELF9bbCsxNj4+M109bSxfW2wrMjQ+PjNdPUE9LjQ1OTI1MzA5MDkwOTA5MDkqRCxfW2wrMzI+PjNdPWI9LjI3NTg5MiprLF9bbCs0MD4+M109dyxfW2wrNDg+PjNdPTAsX1tsKzU2Pj4zXT13LF9bbCs2ND4+M109ayo9LS4yNzU4OTIsX1tsKzcyPj4zXT13LF9bbCs4MD4+M109TT0tbSxf''@;'; put 'put ''W2wrODg+PjNdPUEsX1soZj1sKzk2fDApPj4zXT1NLF9bbCsxMDQ+PjNdPXAsYVsoYz1sKzExMnwwKT4+Ml09YVtmPj4yXSxhW2MrND4+Ml09YVtmKzQ+PjJdLGFbYys4Pj4yXT1hW2YrOD4+Ml0sYVtjKzEyPj4yXT1hW2YrMTI+PjJdLF9bKGM9bCsxMjh8MCk+PjNdPU0sX1tsKzEzNj4+M109''@;'; put 'put ''LS40MDkwOTA5MDkwOTA5MDkwNipELGFbKGY9bCsxNDR8MCk+PjJdPWFbYz4+Ml0sYVtmKzQ+PjJdPWFbYys0Pj4yXSxhW2YrOD4+Ml09YVtjKzg+PjJdLGFbZisxMj4+Ml09YVtjKzEyPj4yXSxfW2wrMTYwPj4zXT1NLF9bbCsxNjg+PjNdPUE9LUEsX1tsKzE3Nj4+M109ayxfW2wrMTg0Pj4z''@;'; put 'put ''XT13PS13LF9bbCsxOTI+PjNdPTAsX1tsKzIwMD4+M109dyxfW2wrMjA4Pj4zXT1iLF9bbCsyMTY+PjNdPXcsX1tsKzIyND4+M109bSxfW2wrMjMyPj4zXT1BLF9bKGY9bCsyNDB8MCk+PjNdPW0sX1tsKzI0OD4+M109LXAsYVsoYz1sKzI1NnwwKT4+Ml09YVtmPj4yXSxhW2MrND4+Ml09YVtm''@;'; put 'put ''KzQ+PjJdLGFbYys4Pj4yXT1hW2YrOD4+Ml0sYVtjKzEyPj4yXT1hW2YrMTI+PjJdLGM9bCsyODh8MCxhWyhmPWwrMjcyfDApPj4yXT1hW2w+PjJdLGFbZis0Pj4yXT1hW2wrND4+Ml0sYVtmKzg+PjJdPWFbbCs4Pj4yXSxhW2YrMTI+PjJdPWFbbCsxMj4+Ml0sYVtjPj4yXT1hW2w+PjJdLGFb''@;'; put 'put ''Yys0Pj4yXT1hW2wrND4+Ml0sYVtjKzg+PjJdPWFbbCs4Pj4yXSxhW2MrMTI+PjJdPWFbbCsxMj4+Ml19LGZ1bmN0aW9uIHliKGwsYyl7dmFyIG0sQSx3LGIsZj0wLHA9MDtpZihiPWxlLGxlPWxlKzE2fDAsZj1iLG09KCtfWzgrKGN8PTApPj4zXS0rX1s1NjgrKGx8PTApPj4zXSkvK19bbCs1''@;'; put 'put ''Mjg+PjNdLCEoK2VvKCsodz0oK19bYz4+M10tK19bKEE9bCs1NjB8MCk+PjNdKS8rX1tsKzUyMD4+M10pKTwxZS00JitlbygrbSk8MWUtNCkpe3N3aXRjaCgwfGZlW2wrNTQxPj4wXSl7Y2FzZSAwOmFbZj4+Ml09YVtjPj4yXSxhW2YrND4+Ml09YVtjKzQ+PjJdLGFbZis4Pj4yXT1hW2MrOD4+''@;'; put 'put ''Ml0sYVtmKzEyPj4yXT1hW2MrMTI+PjJdLEU5KGwsZik7YnJlYWs7Y2FzZSAyOnA9K19bbCszNTI+PjNdLDB8YVtsKzM2MD4+Ml0/KF9bKGY9bCszMzZ8MCk+PjNdPStfW2Y+PjNdLW0vcCxfWyhmPWwrMzQ0fDApPj4zXT0rX1tmPj4zXSt3L3ApOihfWyhmPWwrMzM2fDApPj4zXT0rX1tmPj4z''@;'; put 'put ''XS13L3AsX1soZj1sKzM0NHwwKT4+M109K19bZj4+M10tbS9wKSxmZVtsKzUzNz4+MF09MX1hW0E+PjJdPWFbYz4+Ml0sYVtBKzQ+PjJdPWFbYys0Pj4yXSxhW0ErOD4+Ml09YVtjKzg+PjJdLGFbQSsxMj4+Ml09YVtjKzEyPj4yXX1sZT1ifSxmdW5jdGlvbiBxeihsLGMpe09UKGw9MHxhWyhs''@;'; put 'put ''fD0wKT4+Ml0sMHxhW2wrMTY4Pj4yXSxjfD0wKX0sWDYsWG0sZnVuY3Rpb24gcUcobCxjKXtZbihjfD0wLGx8PTAsMSl9LGZ1bmN0aW9uICRvZShsLGMpe2x8PTA7dmFyIGIsayxNLFIsZj0wLHA9MCxtPTAsQT0wLHc9MCxEPTA7Uj1sZSxsZT1sZSsxNnwwLEQ9UixNPShjfD0wKS00OHwwLGI9''@;'; put 'put ''Yys0OHwwLG09KDB8YVsyMzIrKDB8YVsxNisoMHxhWygyPT0oMHwobT0zJmFbYz4+Ml0pKT9jOk0pKzQwPj4yXSk+PjJdKT4+Ml0pLSgwfGFbMjMyKygwfGFbMTYrKDB8YVsoMz09KDB8bSk/YzpiKSs0MD4+Ml0pPj4yXSk+PjJdKS0oMHxoclsxNzArKDB8YVsoaz1jKzE2fDApPj4yXSk+PjFd''@;'; put 'put ''KXwwO2Rve2lmKCgwfG0pPjApe2lmKDE9PSgoMHxhWzI3Nisodz0wfGFbMTYrKEE9MHxhWygzPT0oMHwoZj0zJmFbbD4+Ml0pKT9sOmwrNDh8MCkrNDA+PjJdKT4+Ml0pPj4yXSkrKDB8YVt3KzI2OD4+Ml0pfDApKXtYNShBLG0pO2JyZWFrfWlmKDE9PSgoMHxhWzI3NisocD0wfGFbMTYrKGY9''@;'; put 'put ''MHxhWygyPT0oMHxmKT9sOmwrLTQ4fDApKzQwPj4yXSk+PjJdKT4+Ml0pKygwfGFbcCsyNjg+PjJdKXwwKSl7WDUoZiwwLW18MCk7YnJlYWt9aWYoKDB8YVt3KzI4OD4+Ml0pPCgwfGFbcCsyODg+PjJdKSl7WDUoQSxtKTticmVha31YNShmLDAtbXwwKTticmVha319d2hpbGUoMCk7aWYobT0w''@;'; put 'put ''fEFRKDB8YVsoMz09KDB8KG09MyZhW2M+PjJdKSk/YzpiKSs0MD4+Ml0sMHxhWygyPT0oMHxtKT9jOk0pKzQwPj4yXSxwPTB8YVsxNjArKDB8YVsoZj1sKzE2fDApPj4yXSk+PjJdLDEpLCgwfEFRKDB8YVsoMj09KDB8KHc9MyZhW2M+PjJdKSk/YzpNKSs0MD4+Ml0sMHxhWygzPT0oMHx3KT9j''@;'; put 'put ''OmIpKzQwPj4yXSxwLDApKT09KDB8bSkpcmV0dXJuIGFbMTYwKygwfGFbaz4+Ml0pPj4yXT0wLXAsYVsxNjArKDB8YVtmPj4yXSk+PjJdPTAsZnVuY3Rpb24gcW9lKGwsYyl7dmFyIGY9MCxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTA7Zm9yKGFbMTY0KygwfGFbMTYrKGN8PTApPj4yXSk+''@;'; put 'put ''PjJdPWFbKHA9MTY0KygwfGFbKGI9MTYrKGx8PTApfDApPj4yXSl8MCk+PjJdLGFbKDB8YVs0NzI1Nl0pKyhhW3A+PjJdPDwyKT4+Ml09YyxhWzE2NCsoMHxhW2I+PjJdKT4+Ml09LTEsYVsoQT0yNzYrKHA9MHxhWyhiPTE2KygwfGFbKDM9PSgzJmFbbD4+Ml18MCk/bDpsKzQ4fDApKzQwPj4y''@;'; put 'put ''XSl8MCk+PjJdKXwwKT4+Ml09az0obT0wfGFbQT4+Ml0pLTF8MCxBPXArMjcyfDAsdz0wOzspe2lmKCgwfHcpPj0oMHxtKSl7TT0zO2JyZWFrfWlmKCgwfGFbKGY9MHxhW0E+PjJdKSsodzw8Mik+PjJdKT09KDB8bCkpYnJlYWs7dz13KzF8MH1mb3IoMz09KDB8TSkmJihmPTB8YVtwKzI3Mj4+''@;'; put 'put ''Ml0pLGFbZisodzw8Mik+PjJdPWFbZisoazw8Mik+PjJdLGFbKDB8YVsyNzIrKDB8YVtiPj4yXSk+PjJdKSsoazw8Mik+PjJdPTAsYVsoQT0yNjgrKHA9MHxhWyhiPTE2KygwfGFbKDI9PSgzJmFbbD4+Ml18MCk/bDpsKy00OHwwKSs0MD4+Ml0pfDApPj4yXSl8MCk+PjJdPWs9KG09MHxhW0E+''@;'; put 'put ''PjJdKS0xfDAsQT1wKzI2NHwwLHc9MDs7KXtpZigoMHx3KT49KDB8bSkpe009ODticmVha31pZigoMHxhWyhmPTB8YVtBPj4yXSkrKHc8PDIpPj4yXSk9PSgwfGwpKWJyZWFrO3c9dysxfDB9OD09KDB8TSkmJihmPTB8YVtwKzI2ND4+Ml0pLGFbZisodzw8Mik+PjJdPWFbZisoazw8Mik+PjJd''@;'; put 'put ''LGFbKDB8YVsyNjQrKDB8YVtiPj4yXSk+PjJdKSsoazw8Mik+PjJdPTAsaz0wfGFbMjcyKyhsPTB8YVsoTT0xNisoMHxhWygzPT0oMyZhW2M+PjJdfDApP2M6Yys0OHwwKSs0MD4+Ml0pfDApPj4yXSk+PjJdLGFbKGw9bCsyNzZ8MCk+PjJdPTErKGI9MHxhW2w+PjJdKSxhW2srKGI8PDIpPj4y''@;'; put 'put ''XT1jLGFbKDB8YVsyNzIrKE09MHxhW00+PjJdKT4+Ml0pKyhhW00rMjc2Pj4yXTw8Mik+PjJdPTAsaz0wfGFbMjY0KyhiPTB8YVsoTT0xNisoMHxhWygyPT0oMyZhW2M+PjJdfDApP2M6YystNDh8MCkrNDA+PjJdKXwwKT4+Ml0pPj4yXSxhWyhiPWIrMjY4fDApPj4yXT0xKyhsPTB8YVtiPj4y''@;'; put 'put ''XSksYVtrKyhsPDwyKT4+Ml09YyxhWygwfGFbMjY0KyhNPTB8YVtNPj4yXSk+PjJdKSsoYVtNKzI2OD4+Ml08PDIpPj4yXT0wfShsLGMpLFhJKG0sMHxhWzI4MCsoRD0wfGFbbSsxNj4+Ml0pPj4yXSwwfGFbRCsyODQ+PjJdKSx2b2lkKGxlPVIpOyRyKDEsMTAyMjYyLEQpLHplKDE4ODg0OCwx''@;'; put 'put ''KX0sZnVuY3Rpb24gWWkobCxjKXtjfD0wO3ZhciB3LGIsayxNLEQsRyxxLGY9MCxwPTAsbT0wLEE9MCxSPTAscGU9MDtmb3IocT1sZSxsZT1sZSs2NHwwLEc9cSszMnwwLFI9cSsxNnwwLGI9cSxrPXErNDh8MCxfdSgxMTA5MzUsbHw9MCksX3UoMTEwOTQ2LGwpLE09YysxNnwwLEQ9Yis4fDAs''@;'; put 'put ''dz1rKzR8MCxBPTA7ISgoMHxBKT49KDB8YVtjPj4yXSkpOykoMHwocD0wfGFbKGY9MHxhW00+PjJdKSsoNDAqQXwwKSsyMD4+Ml0pKT09KDB8KG09MHxhW2YrKDQwKkF8MCkrMjQ+PjJdKSk/KGgyKGIscCksZj1+fitfW2I+PjNdLHA9fn4rX1tEPj4zXSk6KGxtKGssMD09KDEmYVtwPj4yXXww''@;'; put 'put ''KT9wOm0sZisoNDAqQXwwKXwwKSxmPTB8YVtrPj4yXSxwPTB8YVt3Pj4yXSksYVtSPj4yXT1BLGFbUis0Pj4yXT1mLGFbUis4Pj4yXT1wLFQwKGwsMTEwOTY2LFIpLEE9QSsxfDA7Zm9yKG09Yys0fDAscD1jKzIwfDAsZj0wOyEoKDB8Zik+PSgwfGFbbT4+Ml0pKTspYz0wfGFbKFI9MHxhW3A+''@;'; put 'put ''PjJdKSsoMjQqZnwwKSsxNj4+Ml0scGU9K19bUisoMjQqZnwwKT4+M10sYVtHPj4yXT1hW1IrKDI0KmZ8MCkrMTI+PjJdLGFbRys0Pj4yXT1jLF9bRys4Pj4zXT1wZSxUMChsLDExMDk4NixHKSxmPWYrMXwwO191KDExMTAwOCxsKSxsZT1xfSxmdW5jdGlvbiBrQihsLGMpe2N8PTA7ZG97aWYo''@;'; put 'put ''MHx5MChjLDE0MDYwMykpe2lmKDB8eTAoYywxNDA2MDkpJiYwfHkwKGMsMTQwNjEyKSl7aWYoISgwfHkwKGMsMTQwNjE1KSkpe2FbNDc0MDldPTI2NSxmZVsxODk2NjJdPTA7YnJlYWt9aWYoISgwfHkwKGMsMTQwNjE4KSkpe2FbNDc0MDldPTI2MzticmVha31pZighKDB8eTAoYywxNDA2MjMp''@;'; put 'put ''KSl7YVs0NzQwOV09MjY2O2JyZWFrfWlmKCEoMHx5MChjLDE0MDYyOCkpKXthWzQ3NDA5XT0yNzA7YnJlYWt9aWYoISgwfHkwKGMsMTQwNjMwKSkpe2FbNDc0MDldPTI3MTticmVha31pZighKDB8eTAoYywxNDA2MzIpKSl7YVs0NzQwOV09MjcyO2JyZWFrfWlmKCEoMHx5MChjLDE0MDYzNCkp''@;'; put 'put ''KXthWzQ3NDA5XT0yNjk7YnJlYWt9aWYoISgwfHkwKGMsMTQwNjM2KSkpe2FbNDc0MDldPTI3MzticmVha31pZighKDB8eTAoYywxNDA2NDApKSl7YVs0NzQwOV09Mjc0O2JyZWFrfWlmKCEoMHx5MChjLDE0MDY0NCkpKXthWzQ3NDA5XT0yNzU7YnJlYWt9aWYoISgwfHkwKGMsMTQwNjQ2KSkp''@;'; put 'put ''e2FbNDc0MDldPTI4Mz09KDB8YVs0NzQwOV0pPzI4MjoyNTg7YnJlYWt9aWYoISgwfHkwKGMsMTQwNjQ5KSkpe2FbNDc0MDldPTI3Nz09KDB8YVs0NzQwOV0pPzI3NjoyNzg7YnJlYWt9aWYoISgwfHkwKGMsMTQwNjUyKSkpe2FbNDc0MDldPTI4MD09KDB8YVs0NzQwOV0pPzI3OToyODE7YnJl''@;'; put 'put ''YWt9aWYoMHx5MChjLDE0MDY1NSkpe1lFKGMpO2JyZWFrfWFbNDc0MDldPTI4NT09KDB8YVs0NzQwOV0pPzI4NDoyNTk7YnJlYWt9YVs0NzQwOV09MjYxfWVsc2UgYVs0NzQwOV09MjY0LGZlWzE4OTY2Ml09MX13aGlsZSgwKX0sYTUsZnVuY3Rpb24gcEcobCxjKXtsfD0wLGN8PTA7dmFyIHcs''@;'; put 'put ''YixmPTAscD0wLG09MCxBPTA7Yj1sZSxsZT1sZSsxNnwwLHc9YjtlOmZvcig7Oyl7aWYoISgoMHxjKT4zKSl7Yz05O2JyZWFrfWZvcihwPTA7Oyl7aWYoKDB8cCk+PSgwfGMpKXtjPTg7YnJlYWsgZX1pZihmPSgwfChtPXArMXwwKSklKDB8Yyl8MCwwfGlBKHAsQT0ocCsyfDApJSgwfGMpfDAs''@;'; put 'put ''bCxjKSlicmVhaztwPW19Zm9yKG94KDB8YVtsKyhwPDwyKT4+Ml0sMHxhW2wrKGY8PDIpPj4yXSwwfGFbbCsoQTw8Mik+PjJdKSxjPWMrLTF8MDs7KXtpZigoMHxmKT49KDB8YykpY29udGludWUgZTthW2wrKGY8PDIpPj4yXT1hW2wrKChBPWYrMXwwKTw8Mik+PjJdLGY9QX19OD09KDB8Yyk/''@;'; put 'put ''KGw9MHxhWzE1NzEyXSxhW3c+PjJdPTE0MTg1OCxhW3crND4+Ml09MzI0LGFbdys4Pj4yXT0xNDIwMDMsVDAobCwxNDE4MzksdykpOjk9PSgwfGMpJiZveCgwfGFbbD4+Ml0sMHxhW2wrND4+Ml0sMHxhW2wrOD4+Ml0pLGxlPWJ9LGZ1bmN0aW9uIHNfKGwsYyl7dmFyIGIsayxNLGY9MCxwPTAs''@;'; put 'put ''bT0wLEE9MCx3PTAsRD0wLFI9MCxHPTAscT0wO2ZvcihrPShiPTB8YVs0NzUxM10pKyg1MioobHw9MCl8MCl8MCxNPWIrKDUyKihjfD0wKXwwKXwwLEE9MDszIT0oMHxBKTspe2ZvcihEPWIrKDUyKmx8MCkrNCsoQTw8NCl8MCxSPWIrKDUyKmx8MCkrNCsoQTw8NCkrNHwwLEc9YisoNTIqbHww''@;'; put 'put ''KSs0KyhBPDw0KSsxMnwwLG09MDszIT0oMHxtKTspKDB8KHE9MHxhW2FbRD4+Ml0+PjJdKSk9PSgwfCh3PTB8YVthW2IrKDUyKmN8MCkrNCsobTw8NCk+PjJdPj4yXSkpP3A9KDB8YVthW1I+PjJdPj4yXSk9PSgwfChmPTB8YVthW2IrKDUyKmN8MCkrNCsobTw8NCkrND4+Ml0+PjJdKSk/MTA6''@;'; put 'put ''ODooZj0wfGFbYVtiKyg1MipjfDApKzQrKG08PDQpKzQ+PjJdPj4yXSxwPTgpLDg9PSgwfHApJiYocD0wLCgwfHEpPT0oMHxmKSkmJigwfGFbYVtSPj4yXT4+Ml0pPT0oMHx3KSYmKHA9MTApLDEwPT0oMHxwKSYmKGFbRz4+Ml09TSxhW2IrKDUyKmN8MCkrNCsobTw8NCkrMTI+PjJdPWspLG09''@;'; put 'put ''bSsxfDA7QT1BKzF8MH19LGZ1bmN0aW9uIG1HKGwsYyl7Y3w9MDt2YXIgcCxmPTAsbT0wO209KDB8KGY9MHxhWzQ3NTA4XSkpPj0oMHwocD0wfGFbNDc1MDddKSksMT09KDB8KGx8PTApKT9tPyhhW2MrND4+Ml09YVsoMHxhWzQ3NTA1XSkrKHA8PDIpPj4yXSxsPTE5MDAyOCxmPS0xKToobD0x''@;'; put 'put ''OTAwMjgsZj0tMSk6bT8oYVtjKzQ+PjJdPWFbKDB8YVs0NzUwNV0pKyhmPDwyKT4+Ml0sbD0xOTAwMzIsZj0xKToobD0xOTAwMzIsZj0xKSxhW2w+PjJdPW09KDB8YVtsPj4yXSkrZnwwLGFbKDB8YVs0NzUwNV0pKyhtPDwyKT4+Ml09Y30sZnVuY3Rpb24gWjQobCxjKXthWygxPT0oMHwobHw9''@;'; put 'put ''MCkpPzE5MDAzMjoxOTAwMjgpPj4yXT1jfD0wfSxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMcyxMc10sZGw9W00wLGZ1bmN0aW9uIGlpZShsLGMsZil7Y3w9MCxmfD0wO3ZhciBt''@;'; put 'put ''LEEsdyxNLEQscSxwZSxwPTAsYj0wLGs9MCxSPTAsRz0wO3BlPWxlLGxlPWxlKzEwNTZ8MCxBPXBlKzE2fDAscT1wZSs4fDAsRz1wZSx3PXBlKzMyfDAsdW8oRD0wfGFbMTE0MTYrKChNPTB8YVsxMisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSk8PDIpPj4yXSw2NjkxNiksV2godywrX1sxNiso''@;'; put 'put ''MHxhWyhwPWYrNHwwKT4+Ml0pPj4zXSksdW8oRCx3KSxQNShsLDE5NTA1OSwwfGFbYVtwPj4yXT4+Ml0pLE5DKGwpLFI9KFI9MHxmZVtmKzQ4Pj4wXSk8PDI0Pj4yND09MTA4Py0xOlI8PDI0Pj4yND09MTE0JjEscD0ocD0wfGFbcD4+Ml0pPzEyNyZhW3ArMjQ+PjJdOjAsKDY1NTM1JihtPTB8''@;'; put 'put ''aXRbODIzMisoMHxhWzQ2NjkwXSk+PjFdKSk+MTQmJigwfGFbKGs9MTg2NzY0KyhNPDwyKXwwKT4+Ml0pIT0oMHwoYj1hWzExNDY0KygoNjU1MzUmbSktMTU8PDIpPj4yXSZwKSkmJihhW0c+PjJdPWIsb28odyw2NjkxOSxHKSx1byhELHcpLGFbaz4+Ml09YiksX1soRz1jKzh8MCk+PjNdPStf''@;'; put 'put ''W0c+PjNdKyArX1tmKzI0Pj4zXSx1byhELDY2OTI1KSxhW0E+PjJdPWFbYz4+Ml0sYVtBKzQ+PjJdPWFbYys0Pj4yXSxhW0ErOD4+Ml09YVtjKzg+PjJdLGFbQSsxMj4+Ml09YVtjKzEyPj4yXSxCNShELEEpLGFbcT4+Ml09Uixvbyh3LDEwMjIyMCxxKSx1byhELHcpLFdoKHcsK19bZiszMj4+''@;'; put 'put ''M10pLHVvKEQsdyksUDUobCwxOTUwNTksMHxhW2Y+PjJdKSxsZT1wZX0sZnVuY3Rpb24gRVcobCxjLGYpe3ZhciBwLG0sQSx3O2N8PTAsZnw9MCx3PWxlLGxlPWxlKzEwNDB8MCxtPXcsQT13KzE2fDAscD0wfGFbMTIrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0selQobCksTkMobCksZj8oMz09''@;'; put 'put ''KDF8Zik/VEYobCxmLGMsMik6R1QobCksdW8obD0wfGFbMTE0MTYrKHA8PDIpPj4yXSw2NjkxMCkpOnVvKGw9MHxhWzExNDE2KyhwPDwyKT4+Ml0sNjY5MTMpLGFbbT4+Ml09YVtjPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEyPj4yXT1hW2MrMTI+''@;'; put 'put ''PjJdLEI1KGwsbSksV2goQSwrX1tjKzE2Pj4zXS0rX1tjPj4zXSksdW8obCxBKSxXaChBLCtfW2MrMjQ+PjNdLStfW2MrOD4+M10pLHVvKGwsQSksbGU9d30sZnVuY3Rpb24gS2QobCxjLGYpe2N8PTAsZnw9MCx6VChsfD0wKSxOQyhsKSxWQyhsLDc2LGMsZil9LGZ1bmN0aW9uIGZpZShsLGMs''@;'; put 'put ''Zil7RnQoMHxhWzgrKGN8PTApPj4yXSksRnQoYyl9LGZ1bmN0aW9uIHBpZShsLGMsZil7Y3w9MDt2YXIgbSxBLHcsYixrLE0sRCxSLEcscSxwZSxwPTA7Uj1sZSxsZT1sZSs4MHwwLEQ9UixrPTB8YVsxNisoMHxhWzE2KyhsfD0wKT4+Ml0pPj4yXSxNPTB8YVs0NjcxMF0sQT0wfGFbbCszNjA+''@;'; put 'put ''PjJdPzEuNTcwNzk2MzI2Nzk0ODk2NjowLGI9LjMzMzMzMzMzMzMzMzMzMzMqKG09K19bbCszNTI+PjNdKitfWzE2KyhwPTB8YVs0KyhmfD0wKT4+Ml0pPj4zXSkqKygoMHxVbyh3PTB8YVtmPj4yXSkpPj4+MCkscD0ocD0wfGFbcCs4Pj4yXSk/MHxhW3ArMjA+PjJdOi0xLHBlPTB8ZmVbZis0''@;'; put 'put ''OD4+MF0scT0rX1tjPj4zXSxHPStfW2MrOD4+M10sZj0wfGZ1bmN0aW9uIHpDKGwpe2x8PTA7dmFyIEEsdyxjPTAsZj0wLHA9MCxtPTA7Zm9yKHc9bGUsbGU9bGUrMTZ8MCxBPXcsKGM9MHxhWzQ2NzEyXSl8fChhWzQ2NzEzXT02NCxjPTB8RjAoNjQpLGFbNDY3MTJdPWMpLGY9MDttPWwrMXww''@;'; put 'put ''LChwPTB8ZmVbbD4+MF0pPDwyND4+MjQ7KSgwfGYpPigobD0wfGFbNDY3MTNdKS04fDApJiYoYVs0NjcxM109Yz1sPDwxLGM9MHxVYSgwfGFbNDY3MTJdLGMpLGFbNDY3MTJdPWMsYz1jK2Z8MCkscDw8MjQ+PjI0PD0tMT8oZmVbYz4+MF09OTIsYVtBPj4yXT0yNTUmcCxvbyhjKzF8MCw4MTIy''@;'; put 'put ''NCxBKSxsPW0sYz1jKzR8MCxmPWYrNHwwKToocDw8MjQ+PjI0PT05MiYmKGZlW2M+PjBdPTkyLGY9ZisxfDAsYz1jKzF8MCksZmVbYz4+MF09cCxsPW0sYz1jKzF8MCxmPWYrMXwwKTtyZXR1cm4gZmVbYz4+MF09MCxsZT13LDB8YVs0NjcxMl19KHcpLGFbRD4+Ml09NCxhW0QrND4+Ml09cGU8''@;'; put 'put ''PDI0Pj4yND09MTA4PzA6cGU8PDI0Pj4yND09MTE0PzI6MSxhW0QrOD4+Ml09ayxhW0QrMTI+PjJdPU0sYVtEKzE2Pj4yXT0wLGFbRCsyMD4+Ml09cCxfW0QrMjQ+PjNdPW0sX1tEKzMyPj4zXT1BLGFbRCs0MD4+Ml09NixfW0QrNDg+PjNdPW0sX1tEKzU2Pj4zXT1iLGFbRCs2ND4+Ml09fn4o''@;'; put 'put ''cSsocT49MD8uNTotLjUpKSxhW0QrNjg+PjJdPX5+KEcrKEcrLTcyPj0wPy03MS41Oi03Mi41KSksYVtEKzcyPj4yXT1mLE9yKGwsNjg1NDksRCksbGU9Un0sZnVuY3Rpb24gZ2llKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHAsbSxBLHcsYixSLEcscSxwZSxnZSxiZSxPZSxrPTAsTT0wLEQ9MDtw''@;'; put 'put ''PWxlLGxlPWxlKzExMnwwLG09cCs4fDAsZ2U9fn4rX1sxNTIrKGs9MHxhWzE2KyhsfD0wKT4+Ml0pPj4zXSxwZT0wfGFbaysxNj4+Ml0scT0wfGFbays1Nj4+Ml0sRz0wfGFbNDY3MTBdLHU3KGssT2U9cCsxMDR8MCxiZT1wKSxrPX5+KChEPStfW2M+PjNdKSsoRD49MD8uNTotLjUpKSxiPX5+''@;'; put 'put ''KChNPStfW2MrOD4+M10pKyhNPj0wPy41Oi0uNSkpLEQ9KHc9K19bYysxNj4+M10pLUQsTT0oQT0rX1tjKzI0Pj4zXSktTSxjPTB8YVtPZT4+Ml0sUj0rX1tiZT4+M10sYVttPj4yXT0xLGFbbSs0Pj4yXT0xLGFbbSs4Pj4yXT1jLGFbbSsxMj4+Ml09Z2UsYVttKzE2Pj4yXT1wZSxhW20rMjA+''@;'; put 'put ''PjJdPXEsYVttKzI0Pj4yXT1HLGFbbSsyOD4+Ml09MCxhW20rMzI+PjJdPTB8Zj8yMDotMSxfW20rNDA+PjNdPVIsYVttKzQ4Pj4yXT0wLF9bbSs1Nj4+M109MCxhW20rNjQ+PjJdPWssYVttKzY4Pj4yXT1iLGFbbSs3Mj4+Ml09fn4oRCsoRD49MD8uNTotLjUpKSxhW20rNzY+PjJdPX5+KE0r''@;'; put 'put ''KE0+PTA/LjU6LS41KSksYVttKzgwPj4yXT1rLGFbbSs4ND4+Ml09YixhW20rODg+PjJdPX5+KHcrKHc+PTA/LjU6LS41KSksYVttKzkyPj4yXT1+fihBKyhBPj0wPy41Oi0uNSkpLE9yKGwsNjg0MjcsbSksbGU9cH0sZnVuY3Rpb24gQWllKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHAsbSxBLHcs''@;'; put 'put ''YixrLEQsUixNPTA7cD1sZSxsZT1sZSs5NnwwLG09cCs4fDAsaz1+fitfWzE1MisoUj0wfGFbMTYrKGx8PTApPj4yXSk+PjNdLGI9MHxhW1IrMTY+PjJdLHc9MHxhWzQ2NzEwXSx1NyhSLE09cCs4MHwwLEQ9cCksTT0wfGFbTT4+Ml0sQT0rX1tEPj4zXSxhW20+PjJdPTIsYVttKzQ+PjJdPTEs''@;'; put 'put ''YVttKzg+PjJdPU0sYVttKzEyPj4yXT1rLGFbbSsxNj4+Ml09YixhW20rMjA+PjJdPTAsYVttKzI0Pj4yXT13LGFbbSsyOD4+Ml09MCxhW20rMzI+PjJdPTAsX1ttKzQwPj4zXT1BLGFbbSs0OD4+Ml09MCxhW20rNTI+PjJdPTAsYVttKzU2Pj4yXT0wLGFbbSs2MD4+Ml09MCxhW20rNjQ+PjJd''@;'; put 'put ''PTAsYVttKzY4Pj4yXT1mLE9yKGwsNjgzMzEsbSksT0YobCxjLGYsMCksbGU9cH0sZnVuY3Rpb24gczdlKGwsYyxmKXt2YXIgbSxBLHcsYixrLE0sRCxSLEcscD0wO009bGUsbGU9bGUrODB8MCxrPU0sdz0wfGFbMTYrKDB8YVsxNisobHw9MCk+PjJdKT4+Ml0sYj0wfGFbNDY3MTZdLG09K19b''@;'; put 'put ''bCszNTI+PjNdKitfWzE2KyhwPTB8YVs0KyhmfD0wKT4+Ml0pPj4zXSxBPTB8YVtsKzM2MD4+Ml0/MS41NzA3OTYzMjY3OTQ4OTY2OjAscD0ocD0wfGFbcCs4Pj4yXSk/MHxhW3ArMjA+PjJdOi0xLEc9MHxmZVtmKzQ4Pj4wXSxSPStfWyhjfD0wKT4+M10sRD0rX1tjKzg+PjNdLGY9MHxmdW5j''@;'; put 'put ''dGlvbiBTaWUobCl7bHw9MDt2YXIgQSx3LGM9MCxmPTAscD0wLG09MDtmb3Iodz1sZSxsZT1sZSsxNnwwLEE9dywoYz0wfGFbNDY3MThdKXx8KGFbNDY3MTldPTY0LGM9MHxGMCg2NCksYVs0NjcxOF09YyksZj0wO209bCsxfDAsKHA9MHxmZVtsPj4wXSk8PDI0Pj4yNDspKDB8Zik+KChsPTB8''@;'; put 'put ''YVs0NjcxOV0pLTh8MCkmJihhWzQ2NzE5XT1jPWw8PDEsYz0wfFVhKDB8YVs0NjcxOF0sYyksYVs0NjcxOF09YyxjPWMrZnwwKSxwPDwyND4+MjQ8PS0xPyhmZVtjPj4wXT05MixhW0E+PjJdPTI1NSZwLG9vKGMrMXwwLDgxMjI0LEEpLGw9bSxjPWMrNHwwLGY9Zis0fDApOihwPDwyND4+MjQ9''@;'; put 'put ''PTkyJiYoZmVbYz4+MF09OTIsZj1mKzF8MCxjPWMrMXwwKSxmZVtjPj4wXT1wLGw9bSxjPWMrMXwwLGY9ZisxfDApO3JldHVybiBmZVtjPj4wXT0wLGxlPXcsMHxhWzQ2NzE4XX0oMHxhW2Y+PjJdKSxhW2s+PjJdPTQsYVtrKzQ+PjJdPUc8PDI0Pj4yND09MTA4PzA6Rzw8MjQ+PjI0PT0xMTQ/''@;'; put 'put ''MjoxLGFbays4Pj4yXT13LGFbaysxMj4+Ml09YixhW2srMTY+PjJdPTAsYVtrKzIwPj4yXT1wLF9baysyND4+M109bSxfW2srMzI+PjNdPUEsYVtrKzQwPj4yXT00LF9bays0OD4+M109MCxfW2srNTY+PjNdPTAsYVtrKzY0Pj4yXT1+fihSKyhSPj0wPy41Oi0uNSkpLGFbays2OD4+Ml09fn4o''@;'; put 'put ''RCsoRD49MD8uNTotLjUpKSxhW2srNzI+PjJdPWYsT3IobCw2ODU0OSxrKSxsZT1NfSxmdW5jdGlvbiBQRihsLGMsZil7Y3w9MCxmfD0wO3ZhciBwLG0sQSx3LGIsUixHLHEscGUsZ2UsYmUsT2Usaz0wLE09MCxEPTA7cD1sZSxsZT1sZSsxMTJ8MCxtPXArOHwwLGdlPX5+K19bMTUyKyhrPTB8''@;'; put 'put ''YVsxNisobHw9MCk+PjJdKT4+M10scGU9MHxhW2srMTY+PjJdLHE9MHxhW2srNTY+PjJdLEc9MHxhWzQ2NzE2XSwkVChrLE9lPXArMTA0fDAsYmU9cCksaz1+figoRD0rX1tjPj4zXSkrKEQ+PTA/LjU6LS41KSksYj1+figoTT0rX1tjKzg+PjNdKSsoTT49MD8uNTotLjUpKSxEPSh3PStfW2Mr''@;'; put 'put ''MTY+PjNdKS1ELE09KEE9K19bYysyND4+M10pLU0sYz0wfGFbT2U+PjJdLFI9K19bYmU+PjNdLGFbbT4+Ml09MSxhW20rND4+Ml09MSxhW20rOD4+Ml09YyxhW20rMTI+PjJdPWdlLGFbbSsxNj4+Ml09cGUsYVttKzIwPj4yXT1xLGFbbSsyND4+Ml09RyxhW20rMjg+PjJdPTAsYVttKzMyPj4y''@;'; put 'put ''XT0wfGY/MjA6LTEsX1ttKzQwPj4zXT1SLGFbbSs0OD4+Ml09MCxfW20rNTY+PjNdPTAsYVttKzY0Pj4yXT1rLGFbbSs2OD4+Ml09YixhW20rNzI+PjJdPX5+KEQrKEQ+PTA/LjU6LS41KSksYVttKzc2Pj4yXT1+fihNKyhNPj0wPy41Oi0uNSkpLGFbbSs4MD4+Ml09ayxhW20rODQ+PjJdPWIs''@;'; put 'put ''YVttKzg4Pj4yXT1+fih3Kyh3Pj0wPy41Oi0uNSkpLGFbbSs5Mj4+Ml09fn4oQSsoQT49MD8uNTotLjUpKSxPcihsLDY4NDI3LG0pLGxlPXB9LGZ1bmN0aW9uIEdXKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHAsbSxBLHcsYixrLEQsUixNPTA7cD1sZSxsZT1sZSs5NnwwLG09cCs4fDAsaz1+fitf''@;'; put 'put ''WzE1MisoUj0wfGFbMTYrKGx8PTApPj4yXSk+PjNdLGI9MHxhW1IrMTY+PjJdLHc9MHxhWzQ2NzE2XSwkVChSLE09cCs4MHwwLEQ9cCksTT0wfGFbTT4+Ml0sQT0rX1tEPj4zXSxhW20+PjJdPTIsYVttKzQ+PjJdPTEsYVttKzg+PjJdPU0sYVttKzEyPj4yXT1rLGFbbSsxNj4+Ml09YixhW20r''@;'; put 'put ''MjA+PjJdPTAsYVttKzI0Pj4yXT13LGFbbSsyOD4+Ml09MCxhW20rMzI+PjJdPTAsX1ttKzQwPj4zXT1BLGFbbSs0OD4+Ml09MCxhW20rNTI+PjJdPTAsYVttKzU2Pj4yXT0wLGFbbSs2MD4+Ml09MCxhW20rNjQ+PjJdPTAsYVttKzY4Pj4yXT1mLE9yKGwsNjgzMzEsbSksV1cobCxjLGYsMCks''@;'; put 'put ''bGU9cH0sZnVuY3Rpb24gSlcobCxjLGYpe2N8PTAsZnw9MDt2YXIgdyxiLGsscD0wLG09MCxBPTAsTT0wO2lmKGs9bGUsbGU9bGUrMzJ8MCx3PWsrOHwwLGI9aywhKCtfWzQwKyhwPTB8YVsxNisobHw9MCk+PjJdKT4+M108LjUpKXtzd2l0Y2goYXAobCxwKzE2fDApLFpzKGwsK19bMTYrKDB8''@;'; put 'put ''YVsoQT1mKzR8MCk+PjJdKT4+M10pLGFbdz4+Ml09YVthW0E+PjJdPj4yXSxPcihsLDY4OTczLHcpLEE9MHxuTigwfGFbZj4+Ml0sMHxhWzQ2NzIwXSksMHxmZVtmKzQ4Pj4wXSl7Y2FzZSAxMTQ6cD1NPWYrMzJ8MCxtPStfW00+PjNdO2JyZWFrO2Nhc2UgMTA4OnA9ZiszMnwwLG09MDticmVh''@;'; put 'put ''aztkZWZhdWx0OnA9TT1mKzMyfDAsbT0uNSorX1tNPj4zXX1fW2M+PjNdPStfW2M+PjNdLW0sX1soTT1jKzh8MCk+PjNdPStfW00+PjNdKyArX1tmKzI0Pj4zXSxhW3c+PjJdPWFbYz4+Ml0sYVt3KzQ+PjJdPWFbYys0Pj4yXSxhW3crOD4+Ml09YVtjKzg+PjJdLGFbdysxMj4+Ml09YVtjKzEy''@;'; put 'put ''Pj4yXSxuaChsLHcpLEVuKGwsNjg5ODgpLFpzKGwsK19bcD4+M10pLGFbYj4+Ml09QSxPcihsLDY4OTk3LGIpfWxlPWt9LGZ1bmN0aW9uIFhXKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIG0sQSxwPTA7QT1sZSxsZT1sZSszMnwwLGFbKG09QSk+PjJdPWFbKGN8PTApPj4yXSxhW20rND4+Ml09YVtj''@;'; put 'put ''KzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLF9bbSsxNj4+M109K19bYysxNj4+M10tK19bYz4+M10sX1ttKzI0Pj4zXT0rX1tjKzI0Pj4zXS0rX1tjKzg+PjNdLGM9bCsxNnwwLDB8ZiYmK19bODArKHA9MHxhW2M+PjJdKT4+M10+LjUmJihhcChsLHAr''@;'; put 'put ''NTZ8MCksejMobCxtLDIpLEVuKGwsNjg5MzEpKSwrX1s0MCsoMHxhW2M+PjJdKT4+M10+LjUmJihHQShsKSxhcChsLDE2KygwfGFbYz4+Ml0pfDApLHozKGwsbSwyKSxFbihsLDY4OTUxKSksbGU9QX0sZnVuY3Rpb24gZjdlKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIG0sQSxwPTAsdz0wO2lmKEE9''@;'; put 'put ''bGUsbGU9bGUrMTZ8MCxtPUEsK19bNDArKDB8YVsocD0xNisobHw9MCl8MCk+PjJdKT4+M10+LjUpe2ZvcihHQShsKSxhcChsLDE2KygwfGFbcD4+Ml0pfDApLEVuKGwsNjg4NTIpLGFbbT4+Ml09YVtjPj4yXSxhW20rND4+Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEy''@;'; put 'put ''Pj4yXT1hW2MrMTI+PjJdLG5oKGwsbSksRW4obCw2ODg2MSkscD0xOyEoKDB8cCk+PSgwfGYpKTspYVttPj4yXT1hWyh3PWMrKHA8PDQpfDApPj4yXSxhW20rND4+Ml09YVt3KzQ+PjJdLGFbbSs4Pj4yXT1hW3crOD4+Ml0sYVttKzEyPj4yXT1hW3crMTI+PjJdLG5oKGwsbSksRW4obCw2ODg3''@;'; put 'put ''MCkscD1wKzF8MDtFbihsLDY4ODc5KX1sZT1BfSxmdW5jdGlvbiB5N2UobCxjLGYpe2N8PTAsZnw9MDt2YXIgYixrLE0sRCxSLEcscSxwZSxnZSxiZSxPZSxMZSxIZSxWZSxxZSxydCxhdCxTdCxzdCxadCxjdCxidCxwPTAsbT0wLEE9MCx3PTAsUmU9MCxXZT0wLGt0PTAsRXQ9MDtzd2l0Y2go''@;'; put 'put ''YnQ9bGUsbGU9bGUrMTc2fDAsY3Q9YnQrMTYwfDAsWnQ9YnQrMTUyfDAsYXQ9YnQrMTM2fDAsRXQ9YnQrMTI4fDAsV2U9YnQrMTIwfDAscnQ9YnQrMTEyfDAscWU9YnQrMTA0fDAsVmU9YnQrOTZ8MCxIZT1idCs4OHwwLExlPWJ0KzgwfDAsYmU9YnQrNzJ8MCxnZT1idCs2NHwwLHBlPWJ0KzU2''@;'; put 'put ''fDAscT1idCs0OHwwLHA9YnQrNDB8MCxEPWJ0KzMyfDAsRz1idCsyNHwwLFI9YnQrMTZ8MCxNPWJ0Kzh8MCxrPWJ0LHN0PTB8YVsxNisobHw9MCk+PjJdLEVuKGwsNzQwNDQpLDB8ZmVbZis0OD4+MF0pe2Nhc2UgMTA4OkVuKGwsNzQwNTApO2JyZWFrO2Nhc2UgMTE0OkVuKGwsNzQwNzEpO2Jy''@;'; put 'put ''ZWFrO2RlZmF1bHQ6RW4obCw3NDA5MCl9aWYoX1soa3Q9Yys4fDApPj4zXT1TdD0rX1trdD4+M10rICtfW2YrMjQ+PjNdLDUxMiZpdFsoa3Q9c3QrMjYwfDApPj4xXXx8KEVuKGwsNzQxMTIpLFpzKGwsK19bYz4+M10pLEVuKGwsNzQxMTcpLFpzKGwsLVN0KSxFbihsLDk4NzQ0KSksYj0wfGFb''@;'; put 'put ''OCsoYz0wfGFbKE9lPWYrNHwwKT4+Ml0pPj4yXSl7c3dpdGNoKDB8YVsyNDQrKDB8YVsxNisoMHxhWzE2OCsoMHxhW2w+PjJdKT4+Ml0pPj4yXSk+PjJdKXtjYXNlIDE6dz1iLGM9YisxNnwwLHA9Yis4fDA7YnJlYWs7Y2FzZSAyOnc9YisyNHwwLGM9YiszMnwwLHA9YisyOHwwO2JyZWFrO2Rl''@;'; put 'put ''ZmF1bHQ6dz1iKzR8MCxjPWIrMTZ8MCxwPWIrOHwwfW09MHxhW2M+PjJdLGM9MHxhW3A+PjJdLEE9MHxhW2IrMTI+PjJdLGFbaz4+Ml09YVt3Pj4yXSxPcihsLDc0MTIzLGspLDB8KHA9MHxhW2IrMjQ+PjJdKSYmKGFbTT4+Ml09cCxPcihsLDc0MTQwLE0pKSxFbihsLDk4NzQ0KSwwfGMmJihh''@;'; put 'put ''W1I+PjJdPWMsT3IobCw3NDE0NCxSKSksMHxBJiYoYVtHPj4yXT1BLE9yKGwsNzQxNjIsRykpLG0/KGFbRD4+Ml09bSxPcihsLDc0MTgxLEQpKTptPTB9ZWxzZSBhW3A+PjJdPWFbYz4+Ml0sT3IobCw3NDE5OCxwKSxtPTAsYz0wO3N3aXRjaCgwfChwPTB8YVtPZT4+Ml0pJiYxMjcmKFJlPTB8''@;'; put 'put ''YVtwKzI0Pj4yXSl8MCYmKDAhPSgwfGMpfDA9PSgxJlJlfDApfHxPcihsLDc0MjE2LHEpLDAhPSgwfG0pfDA9PSgyJlJlfDApfHxPcihsLDc0MjM2LHBlKSwxMDAmUmV8MCYmKE9yKGwsNzQyNTcsZ2UpLDQmUmU/KE9yKGwsMTA1OTg2LGJlKSxjPTEpOmM9MCw2NCZSZSYmKGFbTGU+PjJdPTB8''@;'; put 'put ''Yz8xMDA5OTk6MTk1MDU5LE9yKGwsNzQyNzYsTGUpLGM9MSksMzImUmV8MCYmKGFbSGU+PjJdPTB8Yz8xMDA5OTk6MTk1MDU5LE9yKGwsNzQyODcsSGUpKSxPcihsLDk4NzQ0LFZlKSksOCZSZXwwJiZPcihsLDc0MzAyLHFlKSwxNiZSZXwwJiZPcihsLDc0MzI2LHJ0KSksX1tXZT4+M109K19b''@;'; put 'put ''MTYrKDB8YVtPZT4+Ml0pPj4zXSxPcihsLDc0MzQ4LFdlKSxjPXN0KzE2fDAsMHxhW3N0KzQ4Pj4yXSl7Y2FzZSA1OjB8eTAoYz0wfGFbYz4+Ml0sMTM3MzE0KSYmKGFbRXQ+PjJdPWMsT3IobCw3NDM2NixFdCkpO2JyZWFrO2Nhc2UgMTpXZT0wfFh0W2MrMT4+MF0sRXQ9MHxYdFtjKzI+PjBd''@;'; put 'put ''LGFbYXQ+PjJdPVh0W2M+PjBdLGFbYXQrND4+Ml09V2UsYVthdCs4Pj4yXT1FdCxPcihsLDc0Mzc3LGF0KTticmVhaztkZWZhdWx0OlByKDEzODM5NCw3MzU1OCw0ODYsNzQzOTkpfUVuKGwsNzQ0MTIpLDUxMiZpdFtrdD4+MV0mJihhW1p0Pj4yXT0wfE0xKDB8YVtzdCsyMTI+PjJdKSxPcihs''@;'; put 'put ''LDc0NDE0LFp0KSxFbihsLDc0NDYzKSxacyhsLC1TdCksRW4obCw3NDQ4MSkpLEVuKGwsMHx6SCgwfGFbZj4+Ml0sMSkpLDUxMiZpdFtrdD4+MV0mJk9yKGwsNzQ0ODQsY3QpLEVuKGwsNzQ1MDQpLGxlPWJ0fSxmdW5jdGlvbiB3N2UobCxjLGYpe2x8PTAsY3w9MDt2YXIgcD0wO3N3aXRjaCgw''@;'; put 'put ''fChmfD0wKSl7Y2FzZSAyOnA9MHx0WShsLGMsMik7YnJlYWs7Y2FzZSAzOnA9MHxuWShsKTticmVhaztkZWZhdWx0OnA9MH1FbihsLDc0MDA4KSxORihsLGYscCksRW4obCw3NDAxNyksWnMobCwrX1tjPj4zXSksRW4obCw3NDAyMyksWnMobCwtK19bKGY9Yys4fDApPj4zXSksRW4obCw3NDAz''@;'; put 'put ''MCksWnMobCwrX1tjKzE2Pj4zXS0rX1tjPj4zXSksRW4obCw3NDAzNyksWnMobCwrX1tjKzI0Pj4zXS0rX1tmPj4zXSksRW4obCw3MzQyNCl9LGZ1bmN0aW9uIFZpZShsLGMsZil7Y3w9MCxmfD0wO3ZhciBwPTA7Zm9yKEVuKGx8PTAsNzM0MDQpLE5GKGwsMCwwKSxFbihsLDczNDE0KSxwPTA7''@;'; put 'put ''ISgoMHxwKT49KDB8ZikpOylacyhsLCtfW2MrKHA8PDQpPj4zXSksRW4obCwxMDA5OTkpLFpzKGwsLStfW2MrKHA8PDQpKzg+PjNdKSxFbihsLDEwMjYwNCkscD1wKzF8MDtFbihsLDczNDI0KX0sZnVuY3Rpb24gRTdlKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIGssTSxwPTAsbT0wLEE9MCx3PTAs''@;'; put 'put ''Yj0wO2lmKE09bGUsbGU9bGUrNDh8MCxBPU0rOHwwLGs9TSwwfGFbMTQ0KyhwPTB8YVsxNisobHw9MCk+PjJdKT4+Ml0mJjB8KHc9fn4oK19bbCszNTI+PjNdKitfWzE2KygwfGFbKGI9Zis0fDApPj4yXSk+PjNdKSkpe2VJKGwpLEVuKGwsNzUzMzQpLF9bKG09Yys4fDApPj4zXT0rX1ttPj4z''@;'; put 'put ''XS0uNTUqKygwfHcpLGFbQT4+Ml09YVtjPj4yXSxhW0ErND4+Ml09YVtjKzQ+PjJdLGFbQSs4Pj4yXT1hW2MrOD4+Ml0sYVtBKzEyPj4yXT1hW2MrMTI+PjJdLG5oKGwsQSksRW4obCw3NTM0OCksRW4obCwwfGFbZj4+Ml0pLEVuKGwsNzUzNTcpLEVuKGwsNzUxNTUpLGM9cCsxNnwwLHA9KG09''@;'; put 'put ''QSkrNDB8MDtkb3thW20+PjJdPWFbYz4+Ml0sbT1tKzR8MCxjPWMrNHwwfXdoaWxlKCgwfG0pPCgwfHApKTtzd2l0Y2goV0EobCxBKSxFbihsLDc1MzU5KSxiPTB8YVsoMD09KDB8KGI9MHxhWzgrKEE9MHxhW2I+PjJdKT4+Ml0pKT9BOmIrNHwwKT4+Ml0sRW4obCw5ODc0NCksRW4obCxiKSxF''@;'; put 'put ''bihsLDk4NzQ0KSxhW2s+PjJdPXcsT3IobCw3NTM2OCxrKSwwfGZlW2YrNDg+PjBdKXtjYXNlIDEwODpFbihsLDc1MzczKTticmVhaztjYXNlIDExNDpFbihsLDc1Mzg0KX10SShsKSxFbihsLDE1MzU5OSl9bGU9TX0sZnVuY3Rpb24geDdlKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIG0sQSx3LGIs''@;'; put 'put ''cD0wLGs9MCxNPTAsRD0wO2lmKGI9bGUsbGU9bGUrNDh8MCxtPWIsMHxhWyh3PTE0NCsoQT0wfGFbMTYrKGx8PTApPj4yXSl8MCk+PjJdKXtNPStfW2MrMjQ+PjNdLGs9K19bKHA9Yys4fDApPj4zXSxfW2M+PjNdPShEPStfW2M+PjNdKS0rX1tjKzE2Pj4zXStELF9bcD4+M109ay1NK2ssZUko''@;'; put 'put ''bCksRW4obCw3NTMyMCksejMobCxjLDIpLEVuKGwsNzUxNTUpO2Rve2lmKCFmKXtpZigwfGFbNDY3MjNdKXtFbihsLDEzNzE5OCk7YnJlYWt9RW4obCw5NzMwOSk7YnJlYWt9Zj1BKzU2fDAscD0oYz1tKSs0MHwwO2Rve2FbYz4+Ml09YVtmPj4yXSxjPWMrNHwwLGY9Zis0fDB9d2hpbGUoKDB8''@;'; put 'put ''Yyk8KDB8cCkpO1dBKGwsbSl9d2hpbGUoMCk7MT09KDB8YVs0NjcyM10pJiYoYVs0NjcyM109MCksRW4obCw3NTI2NiksWnMobCwrX1tBKzE1Mj4+M10pLEVuKGwsNzUzMDkpLGY9QSsxNnwwLHA9KGM9bSkrNDB8MDtkb3thW2M+PjJdPWFbZj4+Ml0sYz1jKzR8MCxmPWYrNHwwfXdoaWxlKCgw''@;'; put 'put ''fGMpPCgwfHApKTtXQShsLG0pLDE9PSgwfChjPTB8YVt3Pj4yXSkpJiYoRW4obCw3NTE2MyksYz0wfGFbdz4+Ml0pLDI9PSgwfGMpJiZFbihsLDc1MTcyKSx0SShsKSxFbihsLDE1MzU5OSl9bGU9Yn0sZnVuY3Rpb24gRDdlKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHAsQSx3LGIsbT0wO2lmKGI9''@;'; put 'put ''bGUsbGU9bGUrNDh8MCxBPWIsMHxhWyh3PTE0NCsocD0wfGFbMTYrKGx8PTApPj4yXSl8MCk+PjJdKXtlSShsKSxFbihsLDc1MTQxKSx6MyhsLGMsZiksRW4obCw3NTE1NSksYz1wKzE2fDAsZj0obT1BKSs0MHwwO2Rve2FbbT4+Ml09YVtjPj4yXSxtPW0rNHwwLGM9Yys0fDB9d2hpbGUoKDB8''@;'; put 'put ''bSk8KDB8ZikpO1dBKGwsQSksMT09KDB8KGM9MHxhW3c+PjJdKSkmJihFbihsLDc1MTYzKSxjPTB8YVt3Pj4yXSksMj09KDB8YykmJkVuKGwsNzUxNzIpLHRJKGwpLEVuKGwsMTUzNTk5KX1sZT1ifSxmdW5jdGlvbiBIN2UobCxjLGYpe2N8PTA7dmFyIGssTSxELFIsRyxxLHBlLGdlLGJlLE9l''@;'; put 'put ''LFJlLFZlLHFlLHA9MCxtPTAsQT0wLHc9MCxiPTAsTGU9MCxIZT0wO3N3aXRjaChWZT1sZSxsZT1sZSsxMTJ8MCxSZT1WZSs5NnwwLEhlPVZlKzg4fDAsT2U9VmUrODB8MCxSPVZlKzcyfDAsYmU9VmUrNjR8MCxwZT1WZSs1NnwwLHE9VmUrNDh8MCxHPVZlKzQwfDAsRD1WZSsyNHwwLE09VmUr''@;'; put 'put ''OHwwLGs9VmUsTGU9MHxhWzE2KyhsfD0wKT4+Ml0sMHxmZVs0OCsoZnw9MCk+PjBdKXtjYXNlIDEwODpBPStfW2M+PjNdLGI9K19bZiszMj4+M107YnJlYWs7Y2FzZSAxMTQ6QT0rX1tjPj4zXS0oYj0rX1tmKzMyPj4zXSk7YnJlYWs7ZGVmYXVsdDpBPStfW2M+PjNdLS41KihiPStfW2YrMzI+''@;'; put 'put ''PjNdKX1zd2l0Y2goKG09K19bKHA9Zis0MHwwKT4+M10pPCh3PStfWzE2KygwfGFbKGdlPWYrNHwwKT4+Ml0pPj4zXSkmJihfW3A+PjNdPW09MS4xKncrMSkscWU9QSstOCx3PSsoKDB8YVs0NjcyN10pPj4+MCktK19bYys4Pj4zXS1tKy4yKncrKHc8MTI/MS40OjIpLE9yKGwsNzYwMDUsayks''@;'; put 'put ''X1tNPj4zXT1xZSxfW00rOD4+M109dyxPcihsLDc1OTQyLE0pLF9bRD4+M109QSs4K2ItcWUsX1tEKzg+PjNdPW0sT3IobCw3NTk2NixEKSxFbihsLDc2MDQwKSxFbihsLDc2MDc0KSwoYz0wfGFbOCsocD0wfGFbZ2U+PjJdKT4+Ml0pPyhhW0c+PjJdPWFbYys0Pj4yXSxPcihsLDc2MTY0LEcp''@;'; put 'put ''LDB8KHA9MHxhW2MrOD4+Ml0pJiYoYVtxPj4yXT1wLE9yKGwsNzYxODMscSkpLDB8KHA9MHxhW2MrMTI+PjJdKSYmKGFbcGU+PjJdPXAsT3IobCw3NjIwMCxwZSkpLDB8KHA9MHxhW2MrMTY+PjJdKSYmKGFbYmU+PjJdPXAsT3IobCw3NjIxOCxiZSkpKTooYVtSPj4yXT1hW3A+PjJdLE9yKGws''@;'; put 'put ''NzYxNjQsUikpLF9bT2U+PjNdPStfWzE2KygwfGFbZ2U+PjJdKT4+M10sT3IobCw3NjIzNCxPZSkscD1MZSsxNnwwLDB8YVtMZSs0OD4+Ml0pe2Nhc2UgNTowfHkwKHA9MHxhW3A+PjJdLDEzNzMxNCkmJihhW0hlPj4yXT1wLE9yKGwsNzYyNTQsSGUpKTticmVhaztjYXNlIDE6TGU9MHxYdFtw''@;'; put 'put ''KzE+PjBdLEhlPTB8WHRbcCsyPj4wXSxhW1JlPj4yXT1YdFtwPj4wXSxhW1JlKzQ+PjJdPUxlLGFbUmUrOD4+Ml09SGUsT3IobCw3NjI2NCxSZSk7YnJlYWs7ZGVmYXVsdDpQcigxMzgzOTQsNzU3MjgsNDM4LDc2Mjg1KX1FbihsLDc2Mjk4KSxFbihsLDB8bmkoMHxhW2Y+PjJdKSksRW4obCw3''@;'; put 'put ''NjMwOSksRW4obCw3NjMzMiksbGU9VmV9LGZ1bmN0aW9uIFppZShsLGMsZil7Y3w9MCxmfD0wO3ZhciBwLG0sQSx3LGIsTSxrPTA7cD1sZSxsZT1sZSszMnwwLG09cCsxNnwwLGI9cCxFbihsfD0wLDc1OTA2KSxBPShrPStfW2MrMjQ+PjNdKS0rX1tjKzg+PjNdLGs9KygoMHxhWzQ2NzI3XSk+''@;'; put 'put ''Pj4wKS1rLF9bYj4+M109KE09K19bYz4+M10pLSh3PStfW2MrMTY+PjNdLU0pLF9bYis4Pj4zXT1rLE9yKGwsNzU5NDIsYiksX1ttPj4zXT0yKncsX1ttKzg+PjNdPTIqQSxPcihsLDc1OTY2LG0pLGlZKGwsZiksRW4obCw3NTc4OCksbkkobCksRW4obCw3NTk5NCksbGU9cH0sZnVuY3Rpb24g''@;'; put 'put ''TjdlKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIHcsYixrLHA9MCxtPTAsQT0wLE09MDtmb3Ioaz1sZSxsZT1sZSs0OHwwLGI9aysyNHwwLHc9ays4fDAsbT1rLEVuKGx8PTAsNzU1MTEpLEE9MHxhWzQ2NzI3XSxhW20+PjJdPWFbNDY3MjZdLGFbbSs0Pj4yXT1BLE9yKGwsNzU1NDgsbSksRW4obCw3''@;'; put 'put ''NTU4OCksbT1mKy0xfDAsQT1jKzh8MCxwPTA7ISgoMHxwKT49KDB8ZikpOylwPyhNPSsoKDB8YVs0NjcyN10pPj4+MCktK19bYysocDw8NCkrOD4+M10sX1tiPj4zXT0rX1tjKyhwPDw0KT4+M10sX1tiKzg+PjNdPU0sT3IobCw3NTYwNCxiKSk6KEVuKGwsNzU2MDApLE09KygoMHxhWzQ2NzI3''@;'; put 'put ''XSk+Pj4wKS0rX1tBPj4zXSxfW3c+PjNdPStfW2M+PjNdLF9bdys4Pj4zXT1NLE9yKGwsNzU2MDQsdyksRW4obCw3NTYxNSkpLCgwfHApPT0oMHxtKSYmRW4obCw3NTYxOSkscD1wKzF8MDtFbihsLDc1NjIzKSxuSShsKSxFbihsLDc1NjI3KSxsZT1rfSxmdW5jdGlvbiBpSShsLGMsZil7bHw9''@;'; put 'put ''MCxjfD0wO3ZhciBELEcscSxwZSxnZSxwPTAsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsUj0wO3N3aXRjaChHPWxlLGxlPWxlKzE0NHwwLE09RysxMDR8MCxSPUcrNTZ8MCxiPUcrMzJ8MCxBPUcrMjR8MCxwPStfWzE2KyhtPTB8YVsoRD00KyhmfD0wKXwwKT4+Ml0pPj4zXSxtPTB8YVttPj4y''@;'; put 'put ''XSxhWyhrPUcpPj4yXT1hW2Y+PjJdLF9bays4Pj4zXT1wLGFbaysxNj4+Ml09bSxPcihsLDc5MDQwLGspLGpuWzQ2NzI5XT0ram5bNDY3MjhdLTksMHxmZVtmKzQ4Pj4wXSl7Y2FzZSAxMDg6cD0rX1tjPj4zXTticmVhaztjYXNlIDExNDptPWMscD0rX1tjPj4zXS0rX1tmKzMyPj4zXSx3PTU7''@;'; put 'put ''YnJlYWs7ZGVmYXVsdDptPWMscD0rX1tjPj4zXS0uNSorX1tmKzMyPj4zXSx3PTV9NT09KDB8dykmJihfW20+PjNdPXApLHBlPSgrX1tsKzUwND4+M10rcCkqKGdlPStfW2wrNDg4Pj4zXSkscT0oK19bbCs1MTI+PjNdKyArX1tjKzg+PjNdKSorX1tsKzQ5Nj4+M10sX1tBPj4zXT0rX1sxNiso''@;'; put 'put ''MHxhW0Q+PjJdKT4+M10qZ2Usaz0wfEVhKGwsNzkwOTIsQSkscD0rKDB8YVtsKzM2MD4+Ml0pLF9bYj4+M109MCxfW2IrOD4+M109MCxfW2IrMTY+PjNdPXAsbT0wfEVhKGwsNzgzMDksYikscD0ram5bNDY3MjldLF9bTT4+M109cGUsX1tNKzg+PjNdPXEsX1tNKzE2Pj4zXT1wLGM9MHxFYShs''@;'; put 'put ''LDc4MzQxLE0pLHc9MTYrKDB8YVtsKzE2Pj4yXSl8MCxiPShBPU0pKzQwfDA7ZG97YVtBPj4yXT1hW3c+PjJdLEE9QSs0fDAsdz13KzR8MH13aGlsZSgoMHxBKTwoMHxiKSk7TT0wfFlBKGwsTSwwKSxmPTB8YVtmPj4yXSxhW1I+PjJdPWFbYVtEPj4yXT4+Ml0sX1tSKzg+PjNdPS4yNSxfW1Ir''@;'; put 'put ''MTY+PjNdPTAsYVtSKzI0Pj4yXT1mLGFbUisyOD4+Ml09NzkxNzksYVtSKzMyPj4yXT1rLGFbUiszNj4+Ml09bSxhW1IrNDA+PjJdPWMsYVtSKzQ0Pj4yXT1NLEVuKGwsUj0wfEVhKGwsNzkxMDQsUikpLEZ0KFIpLEZ0KG0pLEZ0KE0pLEZ0KGMpLEZ0KGspLGxlPUd9LGZ1bmN0aW9uIEo3ZShs''@;'; put 'put ''LGMsZil7Y3w9MCxmfD0wO3ZhciBNLEQsUixHLHEscGUsZ2UsVmUscD0wLG09MCxBPTAsdz0wLGI9MCxrPTAsYmU9MCxPZT0wLExlPTAsUmU9MCxIZT0wLHFlPTA7VmU9bGUsbGU9bGUrMjQwfDAsUmU9VmUrMTkyfDAsSGU9VmUrMTUyfDAsZ2U9VmUrMTI4fDAscT1WZSsxMDR8MCxEPVZlKzgw''@;'; put 'put ''fDAsTT1WZSs0OHwwLHA9VmUrMjR8MCxrPVZlLEVuKGx8PTAsNzg5MTcpLGpuWzQ2NzI5XT0ram5bNDY3MjhdLTYsUj0oK19bbCs1MDQ+PjNdKyhBPStfW2M+PjNdKSkqKHc9K19bbCs0ODg+PjNdKSxHPSgrX1tsKzUxMj4+M10rKHFlPStfW2MrOD4+M10pKSooYj0rX1tsKzQ5Nj4+M10pLEE9''@;'; put 'put ''K19bMTUyKygwfGFbKHBlPWwrMTZ8MCk+PjJdKT4+M10vKHFlPShiKj0rX1tjKzI0Pj4zXS1xZSkrKHcqPStfW2MrMTY+PjNdLUEpKSoyLjUsX1trPj4zXT13LF9bays4Pj4zXT0uMjUqcWUsX1trKzE2Pj4zXT1iLGM9MHxFYShsLDc4Mjc3LGspLHFlPSsoMHxhWyhrPWwrMzYwfDApPj4yXSks''@;'; put 'put ''X1twPj4zXT05MCxfW3ArOD4+M109MCxfW3ArMTY+PjNdPXFlLHA9MHxFYShsLDc4MzA5LHApLHFlPStqbls0NjcyOV0sX1tSZT4+M109UixfW1JlKzg+PjNdPUcsX1tSZSsxNj4+M109cWUsbT0wfEVhKGwsNzgzNDEsUmUpLE9lPTE2KygwfGFbcGU+PjJdKXwwLExlPShiZT1SZSkrNDB8MDtk''@;'; put 'put ''b3thW2JlPj4yXT1hW09lPj4yXSxiZT1iZSs0fDAsT2U9T2UrNHwwfXdoaWxlKCgwfGJlKTwoMHxMZSkpO2lmKE9lPTB8WUEobCxSZSwwKSxfW00+PjNdPTEsX1tNKzg+PjNdPUEsYVtNKzE2Pj4yXT1jLGFbTSsyMD4+Ml09cCxhW00rMjQ+PjJdPW0sYVtNKzI4Pj4yXT1PZSxFbihsLExlPTB8''@;'; put 'put ''RWEobCw3ODkzMixNKSksRnQoYyksRnQocCksRnQobSksRnQoT2UpLEZ0KExlKSwwfGYpe19bRD4+M109dyxfW0QrOD4+M109YixfW0QrMTY+PjNdPTEsbT0wfEVhKGwsNzgyNzcsRCkscWU9KygwfGFbaz4+Ml0pLF9bcT4+M109MCxfW3ErOD4+M109MCxfW3ErMTY+PjNdPXFlLHA9MHxFYShs''@;'; put 'put ''LDc4MzA5LHEpLHFlPStqbls0NjcyOV0sX1tnZT4+M109UixfW2dlKzg+PjNdPUcsX1tnZSsxNj4+M109cWUsYz0wfEVhKGwsNzgzNDEsZ2UpLE9lPTU2KygwfGFbcGU+PjJdKXwwLExlPShiZT1SZSkrNDB8MDtkb3thW2JlPj4yXT1hW09lPj4yXSxiZT1iZSs0fDAsT2U9T2UrNHwwfXdoaWxl''@;'; put 'put ''KCgwfGJlKTwoMHxMZSkpO1JlPTB8WUEobCxSZSwwKSxfW0hlPj4zXT0wLF9bSGUrOD4+M109MCxfW0hlKzE2Pj4zXT0wLGFbSGUrMjQ+PjJdPW0sYVtIZSsyOD4+Ml09cCxhW0hlKzMyPj4yXT1jLGFbSGUrMzY+PjJdPVJlLEVuKGwsSGU9MHxFYShsLDc4OTc4LEhlKSksRnQobSksRnQocCks''@;'; put 'put ''RnQoYyksRnQoUmUpLEZ0KEhlKX1sZT1WZX0sZnVuY3Rpb24gJDdlKGwsYyxmKXtjfD0wLGZ8PTA7dmFyIGIsRCxSLHEscGUsYmUsT2UscD0wLG09MCxBPTAsdz0wLGs9MCxNPTAsRz0wLGdlPTAsTGU9MCxSZT0wLEhlPTA7T2U9bGUsbGU9bGUrMTYwfDAscD1PZSsxMjB8MCxiZT1PZSsxMTJ8''@;'; put 'put ''MCxnZT1PZSs5NnwwLHBlPU9lKzg4fDAscT1PZSs1NnwwLGs9T2UrNDh8MCxNPU9lKzI0fDAsRz1PZSxFbihsfD0wLDc4MjYxKSxqbls0NjcyOV09K2puWzQ2NzI4XS02LExlPStfW2wrNDk2Pj4zXSxfW0c+PjNdPStfW2wrNDg4Pj4zXSxfW0crOD4+M109TGUsX1tHKzE2Pj4zXT0xLEc9MHxF''@;'; put 'put ''YShsLDc4Mjc3LEcpLExlPSsoMHxhW2wrMzYwPj4yXSksX1tNPj4zXT0wLF9bTSs4Pj4zXT0wLF9bTSsxNj4+M109TGUsTT0wfEVhKGwsNzgzMDksTSksTGU9K2puWzQ2NzI5XSxfW3A+PjNdPTAsX1twKzg+PjNdPTAsX1twKzE2Pj4zXT1MZSxEPTB8RWEobCw3ODM0MSxwKSxBPTE2KygwfGFb''@;'; put 'put ''KFI9bCsxNnwwKT4+Ml0pfDAsdz0obT1wKSs0MHwwO2Rve2FbbT4+Ml09YVtBPj4yXSxtPW0rNHwwLEE9QSs0fDB9d2hpbGUoKDB8bSk8KDB8dykpO2ZvcihBPTB8WUEobCxwLDApLGFbaz4+Ml09Nzg0MDQsYVtrKzQ+PjJdPWYsdz1sKzUwNHwwLGI9bCs1MTJ8MCxtPTAscD0wfEVhKGwsNzgz''@;'; put 'put ''NzMsayk7ISgoMHxtKT49KDB8ZikpOylIZT0rX1tiPj4zXSsgK19bYysobTw8NCkrOD4+M10sTGU9K19bMTUyKygwfGFbUj4+Ml0pPj4zXSxfW3E+PjNdPStfW3c+PjNdKyArX1tjKyhtPDw0KT4+M10sX1txKzg+PjNdPUhlLF9bcSsxNj4+M109MCxfW3ErMjQ+PjNdPUxlLFJlPTB8RWEobCw3''@;'; put 'put ''ODQxOCxxKSxhW3BlPj4yXT1wLGFbcGUrND4+Ml09UmUsaz0wfEVhKGwsNzg0NDcscGUpLEZ0KFJlKSxGdChwKSxtPW0rMXwwLHA9azthW2dlPj4yXT1HLGFbZ2UrND4+Ml09TSxhW2dlKzg+PjJdPUQsYVtnZSsxMj4+Ml09QSxnZT0wfEVhKGwsNzg0NTYsZ2UpLGFbYmU+PjJdPXAsYVtiZSs0''@;'; put 'put ''Pj4yXT1nZSxSZT0wfEVhKGwsNzg1MDIsYmUpLEZ0KGdlKSxFbihsLFJlKSxGdChHKSxGdChNKSxGdChEKSxGdChBKSxGdChSZSksbGU9T2V9LGZ1bmN0aW9uIGZzKGwsYyxmKXtsfD0wLGN8PTA7dmFyIGssTSxSLEcscSxwPTAsbT0wLEE9MCx3PTAsYj0wLEQ9MDtzd2l0Y2gocT1sZSxsZT1s''@;'; put 'put ''ZSs0OHwwLEc9cSsyNHwwLFI9cSs4fDAsRD1xLDB8ZmVbNDgrKGZ8PTApPj4wXSl7Y2FzZSAxMDg6Yj1jLEE9K19bZiszMj4+M10sdz0rX1tjPj4zXTticmVhaztjYXNlIDExNDptPUE9K19bZiszMj4+M10scD01O2JyZWFrO2RlZmF1bHQ6bT0uNSooQT0rX1tmKzMyPj4zXSkscD01fTU9PSgw''@;'; put 'put ''fHApJiYoX1tjPj4zXT13PStfW2M+PjNdLW0sYj1jKSxfWyhjPWMrOHwwKT4+M109TT0rX1tjPj4zXSsuMDA0NjI5NjI5NjI5NjI5NjI5KihtPStfWzE2KyhwPTB8YVsoaz1mKzR8MCk+PjJdKT4+M10pLF9bYj4+M109QT13Ky4wMDY5NDQ0NDQ0NDQ0NDQ0NDQqQSxwPTB8YVtwPj4yXTtkb3tp''@;'; put 'put ''ZihwKXtpZigwfChjPTB8YVs0NjczMF0pJiYwPT0oMHxaaShjLHApKSlicmVhazthW0Q+PjJdPTB8SmllKHApLE9yKGwsODExNzMsRCksYVs0NjczMF09YVsoRD0wfGFbaz4+Ml0pPj4yXSxtPStfW0QrMTY+PjNdfX13aGlsZSgwKTsoMHwocD0oMHwocD1+fm0pKT4xP3A6MSkpIT0oMHxhWzQ2''@;'; put 'put ''NzMxXSkmJih3PStfWzE5MjE0XSxhW1I+PjJdPXAsX1tSKzg+PjNdPXcsT3IobCw4MTE4MSxSKSxhWzQ2NzMxXT1wKSxhW0c+PjJdPTB8ZnVuY3Rpb24gakYobCl7bHw9MDt2YXIgQSx3LGM9MCxmPTAscD0wLG09MDtmb3Iodz1sZSxsZT1sZSsxNnwwLEE9dywoYz0wfGFbNDY3MzJdKXx8KGFb''@;'; put 'put ''NDY3MzNdPTY0LGM9MHxGMCg2NCksYVs0NjczMl09YyksZj0wO209bCsxfDAsKHA9MHxmZVtsPj4wXSk8PDI0Pj4yNDspKDB8Zik+KChsPTB8YVs0NjczM10pLTh8MCkmJihhWzQ2NzMzXT1jPWw8PDEsYz0wfFVhKDB8YVs0NjczMl0sYyksYVs0NjczMl09YyxjPWMrZnwwKSxwPDwyND4+MjQ8''@;'; put 'put ''PS0xPyhmZVtjPj4wXT05MixhW0E+PjJdPTI1NSZwLG9vKGMrMXwwLDgxMjI0LEEpLGw9bSxjPWMrNHwwLGY9Zis0fDApOihwPDwyND4+MjQ9PTkyJiYoZmVbYz4+MF09OTIsZj1mKzF8MCxjPWMrMXwwKSxmZVtjPj4wXT1wLGw9bSxjPWMrMXwwLGY9ZisxfDApO3JldHVybiBmZVtjPj4wXT0w''@;'; put 'put ''LGxlPXcsMHxhWzQ2NzMyXX0oMHxhW2Y+PjJdKSxfW0crOD4+M109QSxfW0crMTY+PjNdPU0sT3IobCw4MTIwMixHKSxsZT1xfSxmdW5jdGlvbiBZaWUobCxjLGYpe3ZhciBwLG0sQSx3LGIsaztsfD0wLGZ8PTAscD1sZSxsZT1sZSs0OHwwLGs9LjAyNzc3Nzc3Nzc3Nzc3Nzc3NiooK19bMTYr''@;'; put 'put ''KGN8PTApPj4zXS0odz0rX1tjPj4zXSkpLGI9LjAyNzc3Nzc3Nzc3Nzc3Nzc3NiooK19bYysyND4+M10tKEE9K19bYys4Pj4zXSkpLGFbKG09cCk+PjJdPTEsYVttKzQ+PjJdPTB8Zj84MTExNToxOTUwNTksX1ttKzg+PjNdPWssX1ttKzE2Pj4zXT1iLF9bbSsyND4+M109LjAxMzg4ODg4ODg4''@;'; put 'put ''ODg4ODg4OCp3LF9bbSszMj4+M109LjAxMzg4ODg4ODg4ODg4ODg4OCpBLE9yKGwsODExMjEsbSksbGU9cH0sZnVuY3Rpb24gc1kobCxjLGYpe3ZhciBwO2N8PTAsZnw9MCxwPWxlLGxlPWxlKzE2fDAsVkYoMHxhWzE2KyhsfD0wKT4+Ml0scCs4fDAscCksdVkobCxjLGYsMCksbGU9cH0sZnVu''@;'; put 'put ''Y3Rpb24gb29lKGwsYyxmKXtoMChjfD0wLDg3MjMwLDB8YVsoZnw9MCk+PjJdLDEpfSxmdW5jdGlvbiBoVShsLGMsZil7aDAoY3w9MCw4NzM5NywwfGFbNCsoZnw9MCk+PjJdLDEpfSxmdW5jdGlvbiBhb2UobCxjLGYpe2gwKGN8PTAsODczODIsMHxhWzgrKGZ8PTApPj4yXSwxKX0sZnVuY3Rp''@;'; put 'put ''b24gT0oobCxjLGYpe0Z0KGN8PTApfSxmdW5jdGlvbiBFQShsLGMsZil7RnQoY3w9MCl9LGZ1bmN0aW9uIHNUKGwsYyxmKXtGdChjfD0wKX0sZnVuY3Rpb24galAobCxjLGYpe2UwKDB8YVs0Njk0Ml0sMHxhWzgrKGN8PTApPj4yXSksZTAoMHxhWzQ2OTQyXSwwfGFbYysxMj4+Ml0pLHh0KDB8''@;'; put 'put ''YVs0Njk0Ml0sYyl9LGZ1bmN0aW9uIFFQKGwsYyxmKXt9LGZ1bmN0aW9uIFV0KGwsYyxmKXtsfD0wLCgyOCsobD0wfGFbMTYrKGN8PTApPj4yXSl8MCkhPSgwfGMpJiZ4dCgwfGFbbCsyND4+Ml0sYyl9LGZ1bmN0aW9uIGpvKGwsYyxmKXsoZnVuY3Rpb24gd2EobCl7dmFyIGMsZj0wO2Zvcihj''@;'; put 'put ''PTE2KyhsfD0wKXwwLGw9MHxhW2wrMjQ+PjJdO2w7KWY9MHxhW2wrND4+Ml0seHQoMHxhW2M+PjJdLGwpLGw9Zn0pKGN8PTApLHh0KDB8YVtjKzE2Pj4yXSxjKX0sZnVuY3Rpb24gVW5lKGwsYyxmKXtsfD0wLGN8PTAsKGw9MHxhWzQ2OTg0XSk/eHQobCxjKTpGdChjKX0sZnVuY3Rpb24gX3Jl''@;'; put 'put ''KGwsYyxmKXtsfD0wO3ZhciBwPTA7MHwobD0wfGFbMjArKGN8PTApPj4yXSkmJnR3KGwpLDB8YVtjKzUyPj4yXSYmMHwocD0wfGFbYys2MD4+Ml0pJiZDb1sxMjcmcF0oYyksRnQoYyl9LGZ1bmN0aW9uIGlRKGwsYyxmKXtGdChjfD0wKX0sZnVuY3Rpb24gZmFlKGwsYyxmKXtGdChjfD0wKX0s''@;'; put 'put ''ZnVuY3Rpb24gbWFlKGwsYyxmKXthWyhjfD0wKT4+Ml09YVsoZj0zNisoZnw9MCl8MCk+PjJdLGFbZj4+Ml09Y30sZnVuY3Rpb24gRlEobCxjLGYpe0Z0KDB8YVs1MisoY3w9MCk+PjJdKX0sZnVuY3Rpb24gVGxlKGwsYyxmKXtGdChjfD0wKX0sZnVuY3Rpb24gRGxlKGwsYyxmKXtGdChjfD0w''@;'; put 'put ''KX0sZnVuY3Rpb24gajgobCxjLGYpe05sKDB8YVsxNisoY3w9MCk+PjJdKSxGdChjKX0sZnVuY3Rpb24gcGIobCxjLGYpeyhmdW5jdGlvbiBrUihsKXt2YXIgZixjPTAscD0wO2ZvcihmPTQrKGx8PTApfDAsYz0wO3A9MHxhW2Y+PjJdLCEoKDB8Yyk+PSgwfGFbbD4+Ml0pKTspTmwoMHxhW3Ar''@;'; put 'put ''KDEyKmN8MCkrOD4+Ml0pLGM9YysxfDA7RnQocCksRnQobCl9KSgwfGFbMzIrKGN8PTApPj4yXSksRnQoMHxhW2MrMjg+PjJdKSxGdChjKX0sZnVuY3Rpb24gQlIobCxjLGYpe2x8PTAsZnw9MDt2YXIgYixwPTAsbT0wLEE9MCx3PTA7c3dpdGNoKGI9bGUsbGU9bGUrMTZ8MCxwPWIsMHwoY3w9''@;'; put 'put ''MCkpe2Nhc2UgMTphW3A+PjJdPWFbZj4+Ml0sYVtwKzQ+PjJdPWFbZis0Pj4yXSxhW3ArOD4+Ml09YVtmKzg+PjJdLGFbcCsxMj4+Ml09YVtmKzEyPj4yXSxFOShsLHApLGZ1bmN0aW9uIHg5KGwpe3ZhciBjPTAsZj0wLHA9MDtjPTB8YVsocD01ODArKGx8PTApfDApPj4yXTtlOmRve2lmKDB8''@;'; put 'put ''Yylzd2l0Y2goMHxraShjKSl7Y2FzZSAwOmZlWyhmPTExMisoMHxhW2MrMTY+PjJdKXwwKT4+MF09LTcmZmVbZj4+MF18NDticmVhayBlO2Nhc2UgMTpmZVsoZj0xMTcrKDB8YVtjKzE2Pj4yXSl8MCk+PjBdPS03JmZlW2Y+PjBdfDQ7YnJlYWsgZTtjYXNlIDI6ZmVbKGY9MTE1KygwfGFbYysx''@;'; put 'put ''Nj4+Ml0pfDApPj4wXT0tNyZmZVtmPj4wXXw0O2JyZWFrIGU7ZGVmYXVsdDpicmVhayBlfX13aGlsZSgwKTswfChmPTB8YVsoYz1sKzU4OHwwKT4+Ml0pJiYoRnQoZiksYVtjPj4yXT0wKSxhW3A+PjJdPWM9MHxhW2wrNTc2Pj4yXTtlOmRve2lmKDB8Yylzd2l0Y2goMHxraShjKSl7Y2FzZSAw''@;'; put 'put ''OmZlWyhwPTExMisoMHxhW2MrMTY+PjJdKXwwKT4+MF09MnxmZVtwPj4wXSxZOChsLGMpO2JyZWFrIGU7Y2FzZSAxOmZlWyhwPTExNysoMHxhW2MrMTY+PjJdKXwwKT4+MF09MnxmZVtwPj4wXSxiMyhsLGMpO2JyZWFrIGU7Y2FzZSAyOmZlWyhwPTExNSsoMHxhW2MrMTY+PjJdKXwwKT4+MF09''@;'; put 'put ''MnxmZVtwPj4wXSxhMihsLGMpO2JyZWFrIGU7ZGVmYXVsdDpicmVhayBlfX13aGlsZSgwKX0obCksZmVbbCs1Mzg+PjBdPTEsZmVbbCs1NDE+PjBdPTEsdz0xMzticmVhaztjYXNlIDI6ZmVbbCs1Mzg+PjBdPTEsZmVbbCs1NDE+PjBdPTIsdz0xMzticmVhaztjYXNlIDM6YVtwPj4yXT1hW2Y+''@;'; put 'put ''PjJdLGFbcCs0Pj4yXT1hW2YrND4+Ml0sYVtwKzg+PjJdPWFbZis4Pj4yXSxhW3ArMTI+PjJdPWFbZisxMj4+Ml0sRTkobCxwKSxmZVtsKzUzOD4+MF09MSxmZVtsKzU0MT4+MF09Myx3PTEzO2JyZWFrO2Nhc2UgNDpmZVtsKzUzNj4+MF09MCwwfGFbbCszNjA+PjJdPyhfWyhjPWwrMzM2fDAp''@;'; put 'put ''Pj4zXT0rX1tjPj4zXS0uMTAwMDAwMDAwMDAwMDAwMDkqKCtfW2YrOD4+M10tLjUqKygoMHxhW2wrNDUyPj4yXSk+Pj4wKSkvKCtfW2wrNTI4Pj4zXSooQT0rX1socD1sKzM1MnwwKT4+M10pKSxtPStfW2Y+PjNdLS41KisoKDB8YVtsKzQ0OD4+Ml0pPj4+MCksYz1sKzUyMHwwKTooX1soYz1s''@;'; put 'put ''KzMzNnwwKT4+M109LjEwMDAwMDAwMDAwMDAwMDA5KigrX1tmPj4zXS0uNSorKCgwfGFbbCs0NDg+PjJdKT4+PjApKS8oK19bbCs1MjA+PjNdKihBPStfWyhwPWwrMzUyfDApPj4zXSkpKyArX1tjPj4zXSxtPStfW2YrOD4+M10tLjUqKygoMHxhW2wrNDUyPj4yXSk+Pj4wKSxjPWwrNTI4fDAp''@;'; put 'put ''LF9bKHc9bCszNDR8MCk+PjNdPS4xMDAwMDAwMDAwMDAwMDAwOSptLygrX1tjPj4zXSpBKSsgK19bdz4+M10sX1twPj4zXT0xLjEqQSx3PTEzO2JyZWFrO2Nhc2UgNTpmZVtsKzUzNj4+MF09MCxfWyh3PWwrMzUyfDApPj4zXT1BPS45MDkwOTA5MDkwOTA5MDkxKitfW3c+PjNdLDB8YVtsKzM2''@;'; put 'put ''MD4+Ml0/KF9bKHA9bCszMzZ8MCk+PjNdPS4xMDAwMDAwMDAwMDAwMDAwOSooK19bZis4Pj4zXS0uNSorKCgwfGFbbCs0NTI+PjJdKT4+PjApKS8oK19bbCs1Mjg+PjNdKkEpKyArX1twPj4zXSxtPStfW2Y+PjNdLS41KisoKDB8YVtsKzQ0OD4+Ml0pPj4+MCkscD1sKzUyMHwwKTooX1socD1s''@;'; put 'put ''KzMzNnwwKT4+M109K19bcD4+M10tLjEwMDAwMDAwMDAwMDAwMDA5KigrX1tmPj4zXS0uNSorKCgwfGFbbCs0NDg+PjJdKT4+PjApKS8oK19bbCs1MjA+PjNdKkEpLG09K19bZis4Pj4zXS0uNSorKCgwfGFbbCs0NTI+PjJdKT4+PjApLHA9bCs1Mjh8MCksX1sodz1sKzM0NHwwKT4+M109K19b''@;'; put 'put ''dz4+M10tLjEwMDAwMDAwMDAwMDAwMDA5Km0vKCtfW3A+PjNdKkEpLHc9MTN9MTM9PSgwfHcpJiYoZmVbbCs1Mzc+PjBdPTEpLGFbKGw9bCs1NjB8MCk+PjJdPWFbZj4+Ml0sYVtsKzQ+PjJdPWFbZis0Pj4yXSxhW2wrOD4+Ml09YVtmKzg+PjJdLGFbbCsxMj4+Ml09YVtmKzEyPj4yXSxsZT1i''@;'; put 'put ''fSxmdW5jdGlvbiBLeihsLGMsZil7ZmVbNTM4KyhsfD0wKT4+MF09MCxmZVtsKzU0MT4+MF09MH0sZnVuY3Rpb24gd2IobCxjLGYpe30sZnVuY3Rpb24gJHoobCxjLGYpe2Z8PTA7dmFyIGIscD0wLG09MCxBPTAsdz0wO2I9MHxhWyhsfD0wKT4+Ml0sKGN8PTApPzB8KGM9MHxuUyhjLDEzODgy''@;'; put 'put ''MSkpJiYodz0wfHJGKGMsMCksdHcoYykscD01KToodz0wfHJGKDB8YVsxNTY0N10sMCkscD01KSw1PT0oMHxwKSYmMHx3JiYoMHwoYz0wfGFbKG09YisxNjh8MCk+PjJdKSYmKDAhPSgwfChwPTB8YVtiKzE3Mj4+Ml0pKSYmMCE9KDB8KEE9MHxhW3ArND4+Ml0pKSYmKENvWzEyNyZBXShjKSxj''@;'; put 'put ''PTB8YVttPj4yXSksZnVuY3Rpb24gZHAobCl7dmFyIGM9MCxmPTAscD0wO2M9MHxhWzgrKGY9MHxhWyhwPTE2KyhsfD0wKXwwKT4+Ml0pPj4yXTtkb3tpZihjKXtpZigoZj0wfGFbYys4OD4+Ml0pJiYoRnJlKGYpLCEoYz0wfGFbOCsoZj0wfGFbcD4+Ml0pPj4yXSkpKXtjPWY7YnJlYWt9RnQo''@;'; put 'put ''MHxhW2MrOTI+PjJdKSxjPTB8YVtwPj4yXX1lbHNlIGM9Zn13aGlsZSgwKTtGdCgwfGFbYys4Pj4yXSksYVs4KyhwPTB8YVtwPj4yXSk+PjJdPTAsSWMoMHxhW3ArMTI+PjJdKSxsMihsLDAsMTM3NDgzKX0oYyksQzEoMHxhW20+PjJdKSksJGkodywwLDEzNzQ4MywyODAsMSksJGkodywxLDEz''@;'; put 'put ''NzQ0NywzMDQsMSksJGkodywyLDEzNzQ2MCwxNzYsMSksYVttPj4yXT13LGFbMTQ0KygwfGFbdysxNj4+Ml0pPj4yXT1iLC0xIT0oMHxPVChiLHcsZikpJiYoYVtsKzU4MD4+Ml09MCxhW2wrNTc2Pj4yXT0wLGZlW2wrNTM3Pj4wXT0xKSl9LGZ1bmN0aW9uIE05KGwsYyxmKXtjfD0wLGZ8PTA7''@;'; put 'put ''dmFyIEEscD0wLG09MCx3PTAsYj0wOzAhPSgwfChwPTB8YVsobT0xNjArKEE9MHxhWyhsfD0wKT4+Ml0pfDApPj4yXSkpJiYwPT0oMHxhW0ErMTY0Pj4yXSk/KHc9MHxhWyhiPUErMTkyfDApPj4yXSxhW20+PjJdPTAsYVtiPj4yXT0wLG09dyk6KG09MCxwPTApLGZ1bmN0aW9uIENyZShsLGMs''@;'; put 'put ''ZixwKXtwfD0wO3ZhciBtLEEsYix3PTA7Yj1sZSxsZT1sZSsxNnwwLEE9YixtPTB8YVs2MCsoY3w9MCk+PjJdLElUKGx8PTAsZnw9MCksYVs1NisoYz0wfGFbbCsxNjQ+PjJdKT4+Ml09MHxrOShjLDB8YVtjKzUyPj4yXSksMCE9KDB8aDAobSwxMzc0ODMsMCwxKSkmJjAhPSgwfGFbOCsoMHxh''@;'; put 'put ''W20rMTY+PjJdKT4+Ml0pfHw2NzEwODg2NCZhW2MrMTUyPj4yXT93PTU6KFhtKDk4OTExLEEpLGM9LTEpLDU9PSgwfHcpJiYoZnVuY3Rpb24gaHJlKGwsYyl7Y3w9MDt2YXIgZj0wLHA9MDsoZj0wfGFbKHA9MTYwKyhsfD0wKXwwKT4+Ml0pPyhwPTB8YVs0Njk5OV0pJiYoKGY9MHxhW3ArND4+''@;'; put 'put ''Ml0pfHwoZj0wfHZyKDYzMiksYVs0KygwfGFbNDY5OTldKT4+Ml09ZikpOihmPTB8dnIoNjMyKSxhW3A+PjJdPWYsYVtsKzE2ND4+Ml09ZiksYVs0Njk5OV09ZixhW2YrMzI+PjJdPWMsYVtmPj4yXT1sfShsLHApLHc9MHxnMihsLG0pLFM5KGMpLGZyZShjKSxzRihsKSxjPXcpLGxlPWJ9KEEs''@;'; put 'put ''MHxhW0ErMTY4Pj4yXSxjLGYpLDB8cCYmKGFbMTYwKyhiPTB8YVtsPj4yXSk+PjJdPXAsYVtiKzE5Mj4+Ml09bSl9LGZ1bmN0aW9uIGJjKGwsYyxmKXtGdChjfD0wKX0sZnVuY3Rpb24gQUIobCxjLGYpe05sKDB8YVs4KyhjfD0wKT4+Ml0pLEZ0KGMpfSxmdW5jdGlvbiBLYihsLGMsZil7RnQo''@;'; put 'put ''Y3w9MCl9LHVDLEttLGZ1bmN0aW9uIHpyKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIHA9MDtmb3IoYVs0Njk1Nl09Y3w9MCxmPTB8TXMobCxjKTtmOylwPTB8VnMobCxmLGMpLEttKGwsZiwwKSxmPXA7bWlbNjMmYVsocD0wfGFbbCs0MD4+Ml0pPj4yXV0ocCwxODc4MDgsMiksbWlbNjMmYVsocD0w''@;'; put 'put ''fGFbbCszNj4+Ml0pPj4yXV0ocCwxODc4MDgsMil9LHhvLGZ1bmN0aW9uIE1jKGwsYyxmKXtIaShjfD0wLGZ8PTApfSxmdW5jdGlvbiBoayhsLGMsZil7Y3w9MCxmfD0wO3ZhciBwPTAsbT0wLEE9MCx3PTA7Zm9yKGw9MTkyKygwfGFbMTYrKGx8PTApPj4yXSl8MCxwPTAsdz0wO2w9MHxhW2w+''@;'; put 'put ''PjJdOyl7Zm9yKG09MHxhWzE4MCsoQT0wfGFbbCsxNj4+Ml0pPj4yXSxsPTA7MHxhW20rKGw8PDIpPj4yXTspbD1sKzF8MCxwPXArMXwwO2w9QSsxNjR8MCx3PXcrMXwwfWFbYz4+Ml09dyxhW2Y+PjJdPXB9LGZ1bmN0aW9uIGJOKGwsYyxmKXtGdCgwfGFbKGN8PTApPj4yXSksRnQoMHxhW2Mr''@;'; put 'put ''ND4+Ml0pLEZ0KGMpfSxlNCxmdW5jdGlvbiBLdShsLGMsZil7bHw9MCxmfD0wO3ZhciB3LGIsayxNLHA9MCxtPTAsQT0wO2ZvcihNPWxlLGxlPWxlKzMyfDAsdz1NLGgyKE0rMTZ8MCxjfD0wKSxiPWMrMzJ8MCxrPWMrMzZ8MCxtPTA7ISgoMHxtKT49KDB8YVtiPj4yXSkpOykoMHwocD0wfGFb''@;'; put 'put ''MjArKEE9MHxhWygwfGFbaz4+Ml0pKyhtPDwyKT4+Ml0pPj4yXSkpPT0oMHxjKSYmKHA9MHxhW0ErMjQ+PjJdKSxDaSh3LEEscCksdjMobCxmLEEsMCksbT1tKzF8MDthW2w+PjJdPTErKDB8YVtsPj4yXSksYVtmKzI0Pj4yXT1jLGFbZisyMD4+Ml09YyxsZT1NfSxmdW5jdGlvbiBXeihsLGMs''@;'; put 'put ''Zil7bHw9MCxjfD0wO3ZhciB3LGIscD0wLG09MCxBPTAsaz0wO2ZvcihiPTIwKyhmfD0wKXwwLHc9ZisyNHwwLGY9MDshKCgwfGYpPj0oMHxsKSk7KXtmb3IobT0wfGFbYysoZjw8Myk+PjJdLEE9MHxhW2MrKGY8PDMpKzQ+PjJdLHA9MDshKCgwfHApPj0oMHxtKSk7KUdNKDB8bDYoMHxhWygw''@;'; put 'put ''PT0oMHxmZVsoaz1BKyg1NipwfDApfDApPj4wXSk/Yjp3KT4+Ml0sayksaykscD1wKzF8MDtmPWYrMXwwfX0sZnVuY3Rpb24gakUobCxjLGYpeyhmdW5jdGlvbiBiQihsKXt2YXIgYztzd2l0Y2goYz04OCsobHw9MCl8MCwwfGZlW2wrOTI+PjBdKXtjYXNlIDE6WkUoMHxhW2M+PjJdKTticmVh''@;'; put 'put ''aztjYXNlIDI6SlIoMHxhW2M+PjJdKX1LOChsKSxGdChsKX0pKDB8YVs4KyhjfD0wKT4+Ml0pLEZ0KGMpfSxmdW5jdGlvbiB5QihsLGMsZil7RnQoMHxhWzgrKGN8PTApPj4yXSksRnQoYyl9LGZ1bmN0aW9uIHpFKGwsYyxmKXtsfD0wLGZ8PTA7dmFyIG0scD0wLEE9MDtpZigobD0wfGl0Wyht''@;'; put 'put ''PTEyKyhjfD0wKXwwKT4+MV0pPDwxNj4+MTYpe2ZvcihmPTAscD0wfGFbKEE9Yys4fDApPj4yXTshKCgwfGYpPj0obDw8MTY+PjE2fDApKTspRnQoMHxhW3A+PjJdKSxmPWYrMXwwLHA9cCs1NnwwLGw9MHxpdFttPj4xXTtGdCgwfGFbQT4+Ml0pfUZ0KGMpfSxmdW5jdGlvbiBDQihsLGMsZil7''@;'; put 'put ''bHw9MCxjfD0wLGZ8PTA7ZG97aWYoMHx5MChjLDE0MDYwMykpe2lmKDB8eTAoYywxNDA2MDkpJiYwfHkwKGMsMTQwNjEyKSl7aWYoISgwfHkwKGMsMTQwNjE1KSkpe2ZlWzE4OTY2Ml09MSxhWzQ3Mzk5XT0wfFNCKGYpLGFbNDc0MDldPTI4NzticmVha31pZighKDB8eTAoYywxNDA2MjMpKSl7''@;'; put 'put ''YVs0NzM5OV09MHxUZChsLGYsMCksYVs0NzQwOV09Mjg4O2JyZWFrfWlmKCEoMHx5MChjLDE0MDYyOCkpKXthWzQ3Mzk5XT0wfFRkKGwsMCwxKSxhWzQ3NDA5XT0yOTA7YnJlYWt9aWYoISgwfHkwKGMsMTQwNjQ0KSkpe2FbNDczOTldPTB8VGQobCwwLDMyKSxhWzQ3NDA5XT0yOTU7YnJlYWt9''@;'; put 'put ''aWYoISgwfHkwKGMsMTQwNjMwKSkpe2FbNDczOTldPTB8VGQobCwwLDQpLGFbNDc0MDldPTI5MTticmVha31pZighKDB8eTAoYywxNDA2MzIpKSl7YVs0NzM5OV09MHxUZChsLDAsNjQpLGFbNDc0MDldPTI5MjticmVha31pZighKDB8eTAoYywxNDA2MzQpKSl7YVs0NzM5OV09MHxUZChsLDAs''@;'; put 'put ''MiksYVs0NzQwOV09Mjg5O2JyZWFrfWlmKCEoMHx5MChjLDE0MDYzNikpKXthWzQ3Mzk5XT0wfFRkKGwsMCw4KSxhWzQ3NDA5XT0yOTM7YnJlYWt9aWYoISgwfHkwKGMsMTQwNjQwKSkpe2FbNDczOTldPTB8VGQobCwwLDE2KSxhWzQ3NDA5XT0yOTQ7YnJlYWt9aWYoISgwfHkwKGMsMTQwNjQ2''@;'; put 'put ''KSkpe2xHKGYpLGFbNDc0MDldPTI4MzticmVha31pZighKDB8eTAoYywxNDA2NDkpKSl7YVs0NzQwOV09Mjc3O2JyZWFrfWlmKCEoMHx5MChjLDE0MDY1MikpKXthWzQ3NDA5XT0yODA7YnJlYWt9aWYoISgwfHkwKGMsMTQwNjU1KSkpe2FbNDczOTldPTB8UUUoZiksYVs0NzQwOV09Mjg1O2Jy''@;'; put 'put ''ZWFrfWlmKDB8eTAoYywxNDA2MTgpKXtZRShjKTticmVha31hWzQ3NDA5XT0yNjI7YnJlYWt9ZmVbMTg5NjYyXT0wLGFbNDc0MDldPTI2MH1lbHNlIGFbNDczOTldPTB8VUUoZiksZmVbMTg5NjYyXT0wLGFbNDc0MDldPTI4Nn13aGlsZSgwKX0sZnVuY3Rpb24gV0UobCxjLGYpe2x8PTAsY3w9''@;'; put 'put ''MCxmfD0wO3ZhciBwPTAsbT0wLEE9MDtpZigwfGZlWzE4OTY2Ml0pe2ZvcihsPTA7ZjspQT1jKzF8MCwoMjU1JihtPTB8ZmVbYz4+MF0pKT4zMSYmKChwPTB8YVs0KyhjPTB8YVs0NzQxMF0pPj4yXSk+Pj4wPj0oMHxhW2MrOD4+Ml0pPj4+MCYmKFEwKGMsMSksYz1wPTB8YVs0NzQxMF0scD0w''@;'; put 'put ''fGFbcCs0Pj4yXSksYVtjKzQ+PjJdPXArMSxmZVtwPj4wXT1tLGw9bCsxfDApLGM9QSxmPWYrLTF8MDswfGwmJihhWzQ3NDA5XT0yNjcpfX0sTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAs''@;'; put 'put ''TTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTAsTTBdLGN3PVtmYyxmdW5jdGlvbiBlN2UobCxjLGYscCxtLEEpe2x8PTAscD0rcCxBfD0wO3ZhciBELFIsRyx3PTAsYj0wLGs9MCxNPTA7Rz1sZSxs''@;'; put 'put ''ZT1sZSs5NnwwLFI9RyxEPSh3PStfWzgrKGZ8PTApPj4zXSkqKGs9KG09K20pPjQ/LjA4NzUqbTouMzUpLGsqPWI9K19bZj4+M10sX1soTT1HKzgwfDApPj4zXT1iPShwPStfWyhjfD0wKT4+M10pK2IsX1tNKzg+PjNdPXcrPW09K19bYys4Pj4zXSxmPVIrNjR8MCwzMiZBPyhhW2Y+PjJdPWFb''@;'; put 'put ''Yz4+Ml0sYVtmKzQ+PjJdPWFbYys0Pj4yXSxhW2YrOD4+Ml09YVtjKzg+PjJdLGFbZisxMj4+Ml09YVtjKzEyPj4yXSxhW1I+PjJdPWFbYz4+Ml0sYVtSKzQ+PjJdPWFbYys0Pj4yXSxhW1IrOD4+Ml09YVtjKzg+PjJdLGFbUisxMj4+Ml09YVtjKzEyPj4yXSxhWyhjPVIrMzJ8MCk+PjJdPWFb''@;'; put 'put ''TT4+Ml0sYVtjKzQ+PjJdPWFbTSs0Pj4yXSxhW2MrOD4+Ml09YVtNKzg+PjJdLGFbYysxMj4+Ml09YVtNKzEyPj4yXSk6KGFbZj4+Ml09YVtNPj4yXSxhW2YrND4+Ml09YVtNKzQ+PjJdLGFbZis4Pj4yXT1hW00rOD4+Ml0sYVtmKzEyPj4yXT1hW00rMTI+PjJdLGFbUj4+Ml09YVtNPj4yXSxh''@;'; put 'put ''W1IrND4+Ml09YVtNKzQ+PjJdLGFbUis4Pj4yXT1hW00rOD4+Ml0sYVtSKzEyPj4yXT1hW00rMTI+PjJdLGFbKE09UiszMnwwKT4+Ml09YVtjPj4yXSxhW00rND4+Ml09YVtjKzQ+PjJdLGFbTSs4Pj4yXT1hW2MrOD4+Ml0sYVtNKzEyPj4yXT1hW2MrMTI+PjJdLG09dyxwPWIpLF9bUisxNj4+''@;'; put 'put ''M109cCtELF9bUisyND4+M109bS1rLF9bUis0OD4+M109cC1ELF9bUis1Nj4+M109bStrO2Rve2lmKCEoNjQmQSkpe2lmKDEyOCZBKXtrYShsLFIrMzJ8MCwzLEE+Pj40JjFeMSk7YnJlYWt9a2EobCxSKzE2fDAsMyxBPj4+NCYxXjEpO2JyZWFrfWthKGwsUiwzLEE+Pj40JjFeMSl9d2hpbGUo''@;'; put 'put ''MCk7bGU9R30sZnVuY3Rpb24gRzMobCxjLGYscCxtLEEpe2x8PTA7dmFyIEQsUixHLExlLFJlLEhlLHc9MCxiPTAsaz0wLE09MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxWZT0wO0hlPWxlLGxlPWxlKzE2MHwwLFJlPUhlLExlPShxPSEoKHE9NCoocD0rcCkpPChtPSttKSl8KFZlPTA9PSgz''@;'; put 'put ''MiYoQXw9MCl8MCkpPy40NTptL3EqLjQ1KSoocGU9LShPZT0rX1s4KyhmfD0wKT4+M10pKSxxKj1iZT0rX1tmPj4zXSxwZSo9Z2U9IShtPjEpfFZlPzA6LjA1KihtKy0xKS9wLGdlKj1iZSxfWyhEPUhlKzE0NHwwKT4+M109cD0oRz0rX1soY3w9MCk+PjNdKStiZSxfW0QrOD4+M109bT1PZSso''@;'; put 'put ''Uj0rX1tjKzg+PjNdKSxiZT0uNSpiZStHLE9lPS41Kk9lK1IsZj1SZSsxMjh8MCxWZT8oYVtmPj4yXT1hW0Q+PjJdLGFbZis0Pj4yXT1hW0QrND4+Ml0sYVtmKzg+PjJdPWFbRCs4Pj4yXSxhW2YrMTI+PjJdPWFbRCsxMj4+Ml0sYVtSZT4+Ml09YVtEPj4yXSxhW1JlKzQ+PjJdPWFbRCs0Pj4y''@;'; put 'put ''XSxhW1JlKzg+PjJdPWFbRCs4Pj4yXSxhW1JlKzEyPj4yXT1hW0QrMTI+PjJdLGFbKFZlPVJlKzY0fDApPj4yXT1hW2M+PjJdLGFbVmUrND4+Ml09YVtjKzQ+PjJdLGFbVmUrOD4+Ml09YVtjKzg+PjJdLGFbVmUrMTI+PjJdPWFbYysxMj4+Ml0sdz1SLGI9RyxrPVIsTT1HLG09UixwPUcpOihh''@;'; put 'put ''W2Y+PjJdPWFbYz4+Ml0sYVtmKzQ+PjJdPWFbYys0Pj4yXSxhW2YrOD4+Ml09YVtjKzg+PjJdLGFbZisxMj4+Ml09YVtjKzEyPj4yXSxhW1JlPj4yXT1hW2M+PjJdLGFbUmUrND4+Ml09YVtjKzQ+PjJdLGFbUmUrOD4+Ml09YVtjKzg+PjJdLGFbUmUrMTI+PjJdPWFbYysxMj4+Ml0sYVsoVmU9''@;'; put 'put ''UmUrNjR8MCk+PjJdPWFbRD4+Ml0sYVtWZSs0Pj4yXT1hW0QrND4+Ml0sYVtWZSs4Pj4yXT1hW0QrOD4+Ml0sYVtWZSsxMj4+Ml09YVtEKzEyPj4yXSx3PW0rZ2UsYj1wK3BlLGs9bS1nZSxNPXAtcGUpLF9bUmUrMTY+PjNdPXAtTGUsX1tSZSsyND4+M109bS1xLF9bUmUrMzI+PjNdPWJlLXBl''@;'; put 'put ''LF9bUmUrNDA+PjNdPU9lLWdlLF9bUmUrNDg+PjNdPU0sX1tSZSs1Nj4+M109ayxfW1JlKzgwPj4zXT1iLF9bUmUrODg+PjNdPXcsX1tSZSs5Nj4+M109YmUrcGUsX1tSZSsxMDQ+PjNdPU9lK2dlLF9bUmUrMTEyPj4zXT1wK0xlLF9bUmUrMTIwPj4zXT1tK3E7ZG97aWYoISg2NCZBKSl7aWYo''@;'; put 'put ''MTI4JkEpe2thKGwsUmUrNDh8MCw2LDEpO2JyZWFrfWthKGwsUmUsOSwxKTticmVha31rYShsLFJlLDYsMSl9d2hpbGUoMCk7bGU9SGV9LGZ1bmN0aW9uIEFGKGwsYyxmLHAsbSxBKXtsfD0wLHA9K3AsbT0rbSxBfD0wO3ZhciB3LGIsRCxSLEcscSxnZSxiZSxrPTAsTT0wLHBlPTA7cT1sZSxs''@;'; put 'put ''ZT1sZSs2NHwwLHA9KGs9K19bKGN8PTApPj4zXSkrKGdlPStfWyhmfD0wKT4+M10pLG09KE09K19bYys4Pj4zXSkrKGJlPStfW2YrOD4+M10pLHc9aysuMipnZSxiPU0rLjIqYmUsays9LjYqZ2UsTSs9LjYqYmUsX1soRz1xKT4+M109dy1iZSxfW0crOD4+M109YitnZSxfWyhEPUcrMTZ8MCk+''@;'; put 'put ''PjNdPXcrYmUsX1soUj1HKzI0fDApPj4zXT1iLWdlLF9bRyszMj4+M109aytiZSxfW0crNDA+PjNdPU0tZ2UsX1tHKzQ4Pj4zXT1rLWJlLF9bRys1Nj4+M109TStnZSw2NCZBPyhmPTMsQT0wLHBlPTMpOjEyOCZBfDAmJihmPTIsQT0xLHBlPTMpLDM9PSgwfHBlKSYmKF9bRysoQTw8NCk+PjNd''@;'; put 'put ''PXcsX1tHKyhBPDw0KSs4Pj4zXT1iLF9bRysoZjw8NCk+PjNdPWssX1tHKyhmPDw0KSs4Pj4zXT1NKSxrYShsLEcsNCwxKSxhW0c+PjJdPWFbYz4+Ml0sYVtHKzQ+PjJdPWFbYys0Pj4yXSxhW0crOD4+Ml09YVtjKzg+PjJdLGFbRysxMj4+Ml09YVtjKzEyPj4yXSxfW0Q+PjNdPXAsX1tSPj4z''@;'; put 'put ''XT1tLFdvKGwsRywyKSxsZT1xfSxmdW5jdGlvbiBIcmUobCxjLGYscCxtLEEpe2x8PTAscD0rcCxtPSttLEF8PTA7dmFyIGssTSxELFIscSxwZSxnZSxiZSx3PTAsYj0wLEc9MDtSPWxlLGxlPWxlKzY0fDAscGU9LS40KihiPStfWzgrKGZ8PTApPj4zXSkscT0uNCoodz0rX1tmPj4zXSkscD0o''@;'; put 'put ''YmU9K19bKGN8PTApPj4zXSkrLjgqdyxtPShnZT0rX1tjKzg+PjNdKSsuOCpiLHc9YmUrdyxiPWdlK2IsX1soRD1SKT4+M109YmUrcGUsX1soaz1EKzh8MCk+PjNdPWdlK3EsX1soZj1EKzE2fDApPj4zXT1iZS1wZSxfWyhNPUQrMjR8MCk+PjNdPWdlLXEsX1tEKzMyPj4zXT1wLXBlLF9bRCs0''@;'; put 'put ''MD4+M109bS1xLF9bRCs0OD4+M109cCtwZSxfW0QrNTY+PjNdPW0rcSw2NCZBPyhhW0Q+PjJdPWFbYz4+Ml0sYVtEKzQ+PjJdPWFbYys0Pj4yXSxhW0QrOD4+Ml09YVtjKzg+PjJdLGFbRCsxMj4+Ml09YVtjKzEyPj4yXSxmPTMsRz01KToxMjgmQXwwJiYoYVtmPj4yXT1hW2M+PjJdLGFbZis0''@;'; put 'put ''Pj4yXT1hW2MrND4+Ml0sYVtmKzg+PjJdPWFbYys4Pj4yXSxhW2YrMTI+PjJdPWFbYysxMj4+Ml0sZj0yLEc9NSksNT09KDB8RykmJihfW0QrKGY8PDQpPj4zXT1wLF9bRCsoZjw8NCkrOD4+M109bSksa2EobCxELDQsQT4+PjQmMV4xKSxfW0Q+PjNdPXAsX1trPj4zXT1tLF9bRCsxNj4+M109''@;'; put 'put ''dyxfW00+PjNdPWIsV28obCxELDIpLGxlPVJ9LGZ1bmN0aW9uIE5yZShsLGMsZixwLG0sQSl7dmFyIHcsYixrLE0sRCxSLEcscTtsfD0wLHA9K3AsbT0rbSxBfD0wLGI9bGUsbGU9bGUrODB8MCxrPS0uMzMzMzMzMzMzMzMzMzMzMyooRD0rX1s4KyhmfD0wKT4+M10pLG09LjMzMzMzMzMzMzMz''@;'; put 'put ''MzMzMzMqKEc9K19bZj4+M10pLE09KHE9K19bKGN8PTApPj4zXSkrLjUqRyxwPShSPStfW2MrOD4+M10pKy41KkQsZj0odz1iKSs2NHwwLF9bdys2ND4+M109cStHLF9bdys3Mj4+M109UitELGFbdz4+Ml09YVtmPj4yXSxhW3crND4+Ml09YVtmKzQ+PjJdLGFbdys4Pj4yXT1hW2YrOD4+Ml0s''@;'; put 'put ''YVt3KzEyPj4yXT1hW2YrMTI+PjJdLF9bdysxNj4+M109TStrLF9bdysyND4+M109cCttLGFbKGY9dyszMnwwKT4+Ml09YVtjPj4yXSxhW2YrND4+Ml09YVtjKzQ+PjJdLGFbZis4Pj4yXT1hW2MrOD4+Ml0sYVtmKzEyPj4yXT1hW2MrMTI+PjJdLF9bdys0OD4+M109TS1rLF9bdys1Nj4+M109''@;'; put 'put ''cC1tO2Rve2lmKCEoNjQmQSkpe2lmKGY9QT4+PjQmMV4xLDEyOCZBKXtrYShsLHcsMyxmKTticmVha31rYShsLHcsNCxmKTticmVha31rYShsLGYsMyxBPj4+NCYxXjEpfXdoaWxlKDApO2xlPWJ9LGZ1bmN0aW9uIFZyZShsLGMsZixwLG0sQSl7bHw9MCxjfD0wLHA9K3AsbT0rbSxBfD0wO3Zh''@;'; put 'put ''ciB3LGIsayxELE09MDt3PWxlLGxlPWxlKzMyfDAsYj13LHA9LjUqK0QwKCsoKG09K19bOCsoZnw9MCk+PjNdKSptKyhNPStfW2Y+PjNdKSpNKSksX1tiPj4zXT0oRD0rX1tjPj4zXSkrKE0qPS41KS1wLF9bYis4Pj4zXT0oaz0rX1tjKzg+PjNdKS1wKyhtKj0uNSksX1tiKzE2Pj4zXT1EK3Ar''@;'; put 'put ''TSxfW2IrMjQ+PjNdPWsrcCttLCR1KGwsYiwyLEE+Pj40JjFeMSksbGU9d30sZnVuY3Rpb24ganJlKGwsYyxmLHAsbSxBKXtsfD0wLHA9K3AsQXw9MDt2YXIgayxHLHEscGUsZ2UsYmUsdz0wLGI9MCxNPTAsRD0wLFI9MDtiZT1sZSxsZT1sZSsxMTJ8MCxxPWJlKzQ4fDAsZ2U9YmUsRz0rX1so''@;'; put 'put ''Y3w9MCk+PjNdLHc9K19bYys4Pj4zXSxwPShNPStfWzgrKGZ8PTApPj4zXSkqKEQ9KG09K20pPjQ/LjEyNSptOi41KSxtPShSPStfW2Y+PjNdKSpELGFbKHBlPWJlKzE2fDApPj4yXT1hW2M+PjJdLGFbcGUrND4+Ml09YVtjKzQ+PjJdLGFbcGUrOD4+Ml09YVtjKzg+PjJdLGFbcGUrMTI+PjJd''@;'; put 'put ''PWFbYysxMj4+Ml0sX1twZSsxNj4+M109UitHLF9bcGUrMjQ+PjNdPU0rdyxfW3E+PjNdPUQqKFItTSkrRyxfW3ErOD4+M109az0oYj1EKihNK1IpKSt3LF9bcSs0OD4+M109YitHLF9bcSs1Nj4+M109dz1EKihNLVIpK3csTT0oUj0tLjk1KnApK20rRyxEPTEuMzMzMzMzMzMzMzMzMzMzMypt''@;'; put 'put ''LDMyJkE/KGI9Mi4zMzMzMzMzMzMzMzMzMzMqbSx3Kz1wKj0xLjMzMzMzMzMzMzMzMzMzMzMsbT1rK3AscD1NK0QpOihiPS0uMzMzMzMzMzMzMzMzMzMzMjYqbSx3LT1wKj0xLjMzMzMzMzMzMzMzMzMzMzMsbT1rLXAscD1NLUQpLF9bcSsxNj4+M109cCxfW3ErMjQ+PjNdPW0sX1txKzMyPj4z''@;'; put 'put ''XT1iLVIrRyxfW3ErNDA+PjNdPXcsV28obCxwZSwyKSw2NCZBP3d1KGdlLHEsMywuNSwwLHEpOjEyOCZBfDAmJnd1KGdlLHEsMywuNSxxLDApLFFmKGwscSw0LDAsMCwwKSxsZT1iZX0sZnVuY3Rpb24gTEMobCxjLGYscCxtLEEpe3ZhciB3O2x8PTAscD0rcCxtPSttLEF8PTAsQT1sZSxsZT1s''@;'; put 'put ''ZSszMnwwLHA9K19bKGZ8PTApPj4zXSsgK19bKGN8PTApPj4zXSxtPStfW2YrOD4+M10rICtfW2MrOD4+M10sYVsodz1BKT4+Ml09YVtjPj4yXSxhW3crND4+Ml09YVtjKzQ+PjJdLGFbdys4Pj4yXT1hW2MrOD4+Ml0sYVt3KzEyPj4yXT1hW2MrMTI+PjJdLF9bdysxNj4+M109cCxfW3crMjQ+''@;'; put 'put ''PjNdPW0sV28obCx3LDIpLGxlPUF9LGZjLGZjLGZjLGZjLGZjLGZjLGZjXSxSYz1bZnVuY3Rpb24gYVMobCxjLGYscCl7dzIoMTcpfSxmdW5jdGlvbiBYZChsLGMsZixwKXtjfD0wLGZ8PTAscHw9MCx6VChsfD0wKSxOQyhsKSxwPygzPT0oMXxwKT9URihsLHAsYyxmKTpHVChsKSxWQyhsLDgw''@;'; put 'put ''LGMsZikpOlZDKGwsMTEyLGMsZil9LGZ1bmN0aW9uIG1pZShsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgbSxBLHcsYixrLE0sRCxHLHEsUj0wO209bGUsbGU9bGUrOTZ8MCxBPW0rOHwwLEQ9fn4rX1sxNTIrKHE9MHxhWzE2KyhsfD0wKT4+Ml0pPj4zXSxNPTB8YVtxKzE2Pj4yXSxrPTB8''@;'; put 'put ''YVtxKzU2Pj4yXSxiPTB8YVs0NjcxMF0sdTcocSxSPW0rODB8MCxHPW0pLFI9MHxhW1I+PjJdLHc9K19bRz4+M10sYVtBPj4yXT0yLGFbQSs0Pj4yXT0zLGFbQSs4Pj4yXT1SLGFbQSsxMj4+Ml09RCxhW0ErMTY+PjJdPU0sYVtBKzIwPj4yXT1rLGFbQSsyND4+Ml09YixhW0ErMjg+PjJdPTAs''@;'; put 'put ''YVtBKzMyPj4yXT0wfHA/MjA6LTEsX1tBKzQwPj4zXT13LGFbQSs0OD4+Ml09MCxhW0ErNTI+PjJdPTAsYVtBKzU2Pj4yXT0wLGFbQSs2MD4+Ml09MCxhW0ErNjQ+PjJdPTAsYVtBKzY4Pj4yXT1mKzEsT3IobCw2ODMzMSxBKSxPRihsLGMsZiwxKSxsZT1tfSxmdW5jdGlvbiBDaWUobCxjLGYs''@;'; put 'put ''cCl7Y3w9MCxmfD0wLHB8PTA7dmFyIG0sQSx3LGIsayxNLEQsRyxxLFI9MDttPWxlLGxlPWxlKzk2fDAsQT1tKzh8MCxEPX5+K19bMTUyKyhxPTB8YVsxNisobHw9MCk+PjJdKT4+M10sTT0wfGFbcSsxNj4+Ml0saz0wfGFbcSs1Nj4+Ml0sYj0wfGFbNDY3MTZdLCRUKHEsUj1tKzgwfDAsRz1t''@;'; put 'put ''KSxSPTB8YVtSPj4yXSx3PStfW0c+PjNdLGFbQT4+Ml09MixhW0ErND4+Ml09MyxhW0ErOD4+Ml09UixhW0ErMTI+PjJdPUQsYVtBKzE2Pj4yXT1NLGFbQSsyMD4+Ml09ayxhW0ErMjQ+PjJdPWIsYVtBKzI4Pj4yXT0wLGFbQSszMj4+Ml09MHxwPzIwOi0xLF9bQSs0MD4+M109dyxhW0ErNDg+''@;'; put 'put ''PjJdPTAsYVtBKzUyPj4yXT0wLGFbQSs1Nj4+Ml09MCxhW0ErNjA+PjJdPTAsYVtBKzY0Pj4yXT0wLGFbQSs2OD4+Ml09ZisxLE9yKGwsNjgzMzEsQSksV1cobCxjLGYsMSksbGU9bX0sZnVuY3Rpb24geGllKGwsYyxmLHApe3ZhciBtO2x8PTAsY3w9MCxwfD0wLGM9bGUsbGU9bGUrMTZ8MCxh''@;'; put 'put ''WyhtPWMpPj4yXT1mfD0wLGFbbSs0Pj4yXT1wLE9yKGwsNjk1ODEsbSksbGU9Y30sZnVuY3Rpb24gS1cobCxjLGYscCl7Y3w9MCxmfD0wO3ZhciB3LGIsbT0wLEE9MDtpZihiPWxlLGxlPWxlKzE2fDAsdz1iLEE9MTYrKGx8PTApfDAsMHwocHw9MCkmJitfWzgwKyhtPTB8YVtBPj4yXSk+PjNd''@;'; put 'put ''Pi41KXtmb3IoYXAobCxtKzU2fDApLEVuKGwsNjg4NTIpLGFbdz4+Ml09YVtjPj4yXSxhW3crND4+Ml09YVtjKzQ+PjJdLGFbdys4Pj4yXT1hW2MrOD4+Ml0sYVt3KzEyPj4yXT1hW2MrMTI+PjJdLG5oKGwsdyksRW4obCw2ODg2MSkscD0xOyEoKDB8cCk+PSgwfGYpKTspYVt3Pj4yXT1hWyht''@;'; put 'put ''PWMrKHA8PDQpfDApPj4yXSxhW3crND4+Ml09YVttKzQ+PjJdLGFbdys4Pj4yXT1hW20rOD4+Ml0sYVt3KzEyPj4yXT1hW20rMTI+PjJdLG5oKGwsdyksRW4obCw2ODg3MCkscD1wKzF8MDtFbihsLDY4ODk3KX1pZigrX1s0MCsoMHxhW0E+PjJdKT4+M10+LjUpe2ZvcihHQShsKSxhcChsLDE2''@;'; put 'put ''KygwfGFbQT4+Ml0pfDApLEVuKGwsNjg4NTIpLGFbdz4+Ml09YVtjPj4yXSxhW3crND4+Ml09YVtjKzQ+PjJdLGFbdys4Pj4yXT1hW2MrOD4+Ml0sYVt3KzEyPj4yXT1hW2MrMTI+PjJdLG5oKGwsdyksRW4obCw2ODg2MSkscD0xOyEoKDB8cCk+PSgwfGYpKTspYVt3Pj4yXT1hWyhBPWMrKHA8''@;'; put 'put ''PDQpfDApPj4yXSxhW3crND4+Ml09YVtBKzQ+PjJdLGFbdys4Pj4yXT1hW0ErOD4+Ml0sYVt3KzEyPj4yXT1hW0ErMTI+PjJdLG5oKGwsdyksRW4obCw2ODg3MCkscD1wKzF8MDtFbihsLDY4OTEzKX1sZT1ifSxmdW5jdGlvbiBwN2UobCxjLGYscCl7YzcobHw9MCxjfD0wLDAsMTAxNTEwLDB8''@;'; put 'put ''YVs4KygwfGFbbCsxNj4+Ml0pPj4yXSksRW4obCw3NjM4OCl9LGZ1bmN0aW9uIGI3ZShsLGMsZixwKXtsfD0wLGN8PTAsZnw9MDt2YXIgbT0wO3N3aXRjaCgwfChwfD0wKSl7Y2FzZSAyOm09MHx0WShsLGMsZik7YnJlYWs7Y2FzZSAzOm09MHxuWShsKTticmVhaztkZWZhdWx0Om09MH1mb3Io''@;'; put 'put ''RW4obCw3Mzk5OSksTkYobCxwLG0pLEVuKGwsNzM0MTQpLG09MDshKCgwfG0pPj0oMHxmKSk7KVpzKGwsK19bYysobTw8NCk+PjNdKSxFbihsLDEwMDk5OSksWnMobCwtK19bYysobTw8NCkrOD4+M10pLEVuKGwsMTAyNjA0KSxtPW0rMXwwO1pzKGwsK19bYz4+M10pLEVuKGwsMTAwOTk5KSxa''@;'; put 'put ''cyhsLC0rX1tjKzg+PjNdKSxFbihsLDczNDI0KX0sZnVuY3Rpb24gVDdlKGwsYyxmLHApe3ZhciBtLEEsdyxiO2lmKGN8PTAsZnw9MCxwfD0wLGI9bGUsbGU9bGUrNDh8MCxtPWIsMHxhWyh3PTE0NCsoQT0wfGFbMTYrKGx8PTApPj4yXSl8MCk+PjJdKXtlSShsKSxFbihsLDc1MjkyKSx6Myhs''@;'; put 'put ''LGMsZiksRW4obCw3NTE1NSk7ZG97aWYoIXApe2lmKDB8YVs0NjcyM10pe0VuKGwsMTM3MTk4KTticmVha31FbihsLDk3MzA5KTticmVha31mPUErNTZ8MCxwPShjPW0pKzQwfDA7ZG97YVtjPj4yXT1hW2Y+PjJdLGM9Yys0fDAsZj1mKzR8MH13aGlsZSgoMHxjKTwoMHxwKSk7V0EobCxtKX13''@;'; put 'put ''aGlsZSgwKTsxPT0oMHxhWzQ2NzIzXSkmJihhWzQ2NzIzXT0wKSxFbihsLDc1MjY2KSxacyhsLCtfW0ErMTUyPj4zXSksRW4obCw3NTMwOSksZj1BKzE2fDAscD0oYz1tKSs0MHwwO2Rve2FbYz4+Ml09YVtmPj4yXSxjPWMrNHwwLGY9Zis0fDB9d2hpbGUoKDB8Yyk8KDB8cCkpO1dBKGwsbSks''@;'; put 'put ''MT09KDB8KGM9MHxhW3c+PjJdKSkmJihFbihsLDc1MTYzKSxjPTB8YVt3Pj4yXSksMj09KDB8YykmJkVuKGwsNzUxNzIpLHRJKGwpLEVuKGwsMTUzNTk5KX1sZT1ifSxmdW5jdGlvbiB6aWUobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIGIsayxNLEQsbT0wLEE9MCx3PTA7Zm9yKE09bGUs''@;'; put 'put ''bGU9bGUrNDh8MCxrPU0rMjR8MCxiPU0rOHwwLEE9TSxFbihsfD0wLDc1NTExKSxEPTB8YVs0NjcyN10sYVtBPj4yXT1hWzQ2NzI2XSxhW0ErND4+Ml09RCxPcihsLDc1NzY0LEEpLGlZKGwscCksRW4obCw3NTc4OCksbkkobCksRW4obCw3NTc5MSksQT1mKy0xfDAscD0wOyEoKDB8cCk+PSgw''@;'; put 'put ''fGYpKTspdz0rX1tjKyhwPDw0KT4+M10sbT0rKCgwfGFbNDY3MjddKT4+PjApLStfW2MrKHA8PDQpKzg+PjNdLHA/KF9baz4+M109dyxfW2srOD4+M109bSxPcihsLDc1ODg0LGspKTooRW4obCw3NTgxOCksX1tiPj4zXT13LF9bYis4Pj4zXT1tLE9yKGwsNzU4ODQsYiksRW4obCw3NTg5NSkp''@;'; put 'put ''LCgwfHApPT0oMHxBKSYmRW4obCw3NTg5OCkscD1wKzF8MDtFbihsLDc1NjI3KSxsZT1NfSxmdW5jdGlvbiB6N2UobCxjLGYscCl7dmFyIG0sQTtsfD0wLGZ8PTAscHw9MCxtPWxlLGxlPWxlKzE2fDAsYVsoQT1tKT4+Ml09Y3w9MCxhW0ErND4+Ml09ZixhW0ErOD4+Ml09cCxPcihsLDc5MzU3''@;'; put 'put ''LEEpLGpuWzQ2NzI4XT0rKDB8QXIoZiwtMTApKSxsZT1tfSxmdW5jdGlvbiBYN2UobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIEQsUixHLHEscGUsZ2UsYmUsT2UsTGUsSGUsVmUscWUscnQsV2UsU3Qsa3Qsc3QsRXQsY3QsYnQsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsUmU9MCxhdD0w''@;'; put 'put ''LFp0PTAsYW49MCxTbj0wLEhuPTA7YnQ9bGUsbGU9bGUrMzM2fDAscnQ9YnQrMjk2fDAsY3Q9YnQrMjg4fDAsWnQ9YnQrMjcyfDAsRXQ9YnQrMjY0fDAsc3Q9YnQrMjQwfDAsYXQ9YnQrMjMyfDAscWU9YnQrMjA4fDAsVmU9YnQrMTg0fDAsTGU9YnQrMTYwfDAsT2U9YnQrMTUyfDAsYmU9YnQr''@;'; put 'put ''MTM2fDAsZ2U9YnQrMTI4fDAscGU9YnQrOTZ8MCxxPWJ0Kzg4fDAsRz1idCs1NnwwLG09YnQrNDh8MCxrPWJ0KzI0fDAsYj1idCxFbihsfD0wLDc4NzgyKSxqbls0NjcyOV09K2puWzQ2NzI4XS0yLGFuPStfWyhSPWwrNDk2fDApPj4zXSxfW2I+PjNdPStfWyhEPWwrNDg4fDApPj4zXSxfW2Ir''@;'; put 'put ''OD4+M109YW4sX1tiKzE2Pj4zXT0xLGI9MHxFYShsLDc4Mjc3LGIpLGFuPSsoMHxhWyhIZT1sKzM2MHwwKT4+Ml0pLF9baz4+M109MCxfW2srOD4+M109MCxfW2srMTY+PjNdPWFuLGs9MHxFYShsLDc4MzA5LGspLGFuPStqbls0NjcyOV0tMixfW3J0Pj4zXT0wLF9bcnQrOD4+M109MCxfW3J0''@;'; put 'put ''KzE2Pj4zXT1hbixNPTB8RWEobCw3ODM0MSxydCksdz0xNisoMHxhWyhXZT1sKzE2fDApPj4yXSl8MCxSZT0oQT1ydCkrNDB8MDtkb3thW0E+PjJdPWFbdz4+Ml0sQT1BKzR8MCx3PXcrNHwwfXdoaWxlKCgwfEEpPCgwfFJlKSk7Zm9yKHc9MHxZQShsLHJ0LDApLGFbbT4+Ml09Nzg0MDQsYVtt''@;'; put 'put ''KzQ+PjJdPWYrMSxTdD1sKzUwNHwwLGt0PWwrNTEyfDAsQT0wLG09MHxFYShsLDc4MzczLG0pOyEoKDB8QSk+PSgwfGYpKTspSG49K19ba3Q+PjNdKyArX1tjKyhBPDw0KSs4Pj4zXSxhbj0rX1sxNTIrKDB8YVtXZT4+Ml0pPj4zXSxfW0c+PjNdPStfW1N0Pj4zXSsgK19bYysoQTw8NCk+PjNd''@;'; put 'put ''LF9bRys4Pj4zXT1IbixfW0crMTY+PjNdPTAsX1tHKzI0Pj4zXT1hbixTbj0wfEVhKGwsNzg0MTgsRyksYVtxPj4yXT1tLGFbcSs0Pj4yXT1TbixSZT0wfEVhKGwsNzg0NDcscSksRnQoU24pLEZ0KG0pLEE9QSsxfDAsbT1SZTtpZihhbj0rX1trdD4+M10rICtfW2MrOD4+M10sSG49K19bMTUy''@;'; put 'put ''KygwfGFbV2U+PjJdKT4+M10sX1twZT4+M109K19bU3Q+PjNdKyArX1tjPj4zXSxfW3BlKzg+PjNdPWFuLF9bcGUrMTY+PjNdPTAsX1twZSsyND4+M109SG4sUmU9MHxFYShsLDc4NDE4LHBlKSxhW2dlPj4yXT1tLGFbZ2UrND4+Ml09UmUsU249MHxFYShsLDc4NDQ3LGdlKSxGdChSZSksRnQo''@;'; put 'put ''bSksYVtiZT4+Ml09YixhW2JlKzQ+PjJdPWssYVtiZSs4Pj4yXT1NLGFbYmUrMTI+PjJdPXcsUmU9MHxFYShsLDc4Nzk3LGJlKSxhW09lPj4yXT1TbixhW09lKzQ+PjJdPVJlLFNuPTB8RWEobCw3ODUwMixPZSksRnQoUmUpLEVuKGwsU24pLEZ0KGIpLEZ0KGspLEZ0KE0pLEZ0KHcpLEZ0KFNu''@;'; put 'put ''KSwwfHApe0huPStfW1I+PjNdLF9bTGU+PjNdPStfW0Q+PjNdLF9bTGUrOD4+M109SG4sX1tMZSsxNj4+M109MSxNPTB8RWEobCw3ODI3NyxMZSksSG49KygwfGFbSGU+PjJdKSxfW1ZlPj4zXT0wLF9bVmUrOD4+M109MCxfW1ZlKzE2Pj4zXT1IbixrPTB8RWEobCw3ODMwOSxWZSksSG49K2pu''@;'; put 'put ''WzQ2NzI5XS0yLF9bcWU+PjNdPTAsX1txZSs4Pj4zXT0wLF9bcWUrMTY+PjNdPUhuLGI9MHxFYShsLDc4MzQxLHFlKSx3PTU2KygwfGFbV2U+PjJdKXwwLFJlPShBPXJ0KSs0MHwwO2Rve2FbQT4+Ml09YVt3Pj4yXSxBPUErNHwwLHc9dys0fDB9d2hpbGUoKDB8QSk8KDB8UmUpKTtmb3Iodz0w''@;'; put 'put ''fFlBKGwscnQsLjI1KSxhW2F0Pj4yXT1mLEE9MCxtPTB8RWEobCw3ODg0MixhdCk7ISgoMHxBKT49KDB8ZikpOylIbj0rX1trdD4+M10rICtfW2MrKEE8PDQpKzg+PjNdLF9bc3Q+PjNdPStfW1N0Pj4zXSsgK19bYysoQTw8NCk+PjNdLF9bc3QrOD4+M109SG4sX1tzdCsxNj4+M109MCxhdD0w''@;'; put 'put ''fEVhKGwsNzg4NTcsc3QpLGFbRXQ+PjJdPW0sYVtFdCs0Pj4yXT1hdCxTbj0wfEVhKGwsNzg4NzksRXQpLEZ0KGF0KSxGdChtKSxBPUErMXwwLG09U247YVtadD4+Ml09TSxhW1p0KzQ+PjJdPWssYVtadCs4Pj4yXT1iLGFbWnQrMTI+PjJdPXcsWnQ9MHxFYShsLDc4ODg5LFp0KSxhW2N0Pj4y''@;'; put 'put ''XT1tLGFbY3QrND4+Ml09WnQsU249MHxFYShsLDc4NTAyLGN0KSxGdChadCksRW4obCxTbiksRnQoTSksRnQoayksRnQoYiksRnQodyksRnQoU24pfWxlPWJ0fSxmdW5jdGlvbiBVaWUobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTAscD1sZSxsZT1sZSsxNnwwLFZGKDB8YVsxNisobHw9MCk+PjJd''@;'; put 'put ''LHArOHwwLHApLHVZKGwsYyxmLDEpLGxlPXB9LGZ1bmN0aW9uICRpZShsLGMsZixwKXtjfD0wLHB8PTA7dmFyIEEsdyxiLGssTSxELFIsbT0wO1I9bGUsbGU9bGUrOTZ8MCxEPVIrNTZ8MCxNPVIrMzJ8MCxrPVIsYj0rX1sxNisoZnw9MCk+PjNdLSh3PStfW2Y+PjNdKSxBPShtPStfW2YrMjQ+''@;'; put 'put ''PjNdKS0rX1tmKzg+PjNdLChsfD0wKXx8UHIoMTExMjgyLDg0NDA3LDUzLDg0ODYwKSxjfHxQcigxMTEzMTIsODQ0MDcsNTQsODQ4NjApLDB8YVsocD1jKzh8MCk+PjJdfHxQcigxMTEzMTUsODQ0MDcsNTUsODQ4NjApLEVuKGwsODQ4NzkpLEVuKGwsMHxhW3A+PjJdKSxtPS1tLDB8YVsocD1s''@;'; put 'put ''KzM2MHwwKT4+Ml0/KF9baz4+M109QSxfW2srOD4+M109YixfW2srMTY+PjNdPXcsX1trKzI0Pj4zXT1tLE9yKGwsODQ4OTksayksYVtNPj4yXT1hW3A+PjJdLF9bTSs4Pj4zXT13LF9bTSsxNj4+M109bSxPcihsLDg0OTc4LE0pKTooX1tEPj4zXT1iLF9bRCs4Pj4zXT1BLF9bRCsxNj4+M109''@;'; put 'put ''dyxfW0QrMjQ+PjNdPW0sT3IobCw4NTAwOCxEKSksRW4obCw4NTA4NyksbGU9Un0sZnVuY3Rpb24gWWgobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIG0sQSx3LGI9MCxrPTAsTT0wO2lmKHc9bGUsbGU9bGUrMTI4fDAsQT13KzgwfDAsbT13LChsfD0wKXx8UHIoMTExMjgyLDg0NDA3LDk3''@;'; put 'put ''LDg0NzUxKSxjfHxQcigxMTEzMTIsODQ0MDcsOTgsODQ3NTEpLHA9MHxhW2MrOD4+Ml0pcmV0dXJuIGI9fn4oKE09K19bZj4+M10pKyhNPj0wPy41Oi0uNSkpLGM9fn4oKE09K19bZis4Pj4zXSkrKE0+PTA/LjU6LS41KSksaz1+figoTT0rX1tmKzE2Pj4zXSkrKE0+PTA/LjU6LS41KSksZj1+''@;'; put 'put ''figoTT0rX1tmKzI0Pj4zXSkrKE0+PTA/LjU6LS41KSksYVttPj4yXT0yLGFbbSs0Pj4yXT01LGFbbSs4Pj4yXT0wLGFbbSsxMj4+Ml09MCxhW20rMTY+PjJdPTAsYVttKzIwPj4yXT0tMSxhW20rMjQ+PjJdPTEsYVttKzI4Pj4yXT0tMSxhW20rMzI+PjJdPTAsX1ttKzQwPj4zXT0wLGFbbSs0''@;'; put 'put ''OD4+Ml09MCxhW20rNTI+PjJdPTAsYVttKzU2Pj4yXT0wLGFbbSs2MD4+Ml09MCxhW20rNjQ+PjJdPTAsYVttKzY4Pj4yXT01LGFbbSs3Mj4+Ml09MCxhW20rNzY+PjJdPXAsT3IobCw4NDc3MCxtKSxhW0E+PjJdPWIsYVtBKzQ+PjJdPWMsYVtBKzg+PjJdPWIsYVtBKzEyPj4yXT1mLGFbQSsx''@;'; put 'put ''Nj4+Ml09ayxhW0ErMjA+PjJdPWYsYVtBKzI0Pj4yXT1rLGFbQSsyOD4+Ml09YyxhW0ErMzI+PjJdPWIsYVtBKzM2Pj4yXT1jLE9yKGwsODQ4MjgsQSksdm9pZChsZT13KTtQcigxMTEzMTUsODQ0MDcsOTksODQ3NTEpfSxmdW5jdGlvbiBKQShsLGMsZixwKXt2YXIgbSxBO2lmKGN8PTAsZnw9''@;'; put 'put ''MCxwfD0wLEE9bGUsbGU9bGUrODB8MCxtPUErNDh8MCwobHw9MCl8fFByKDExMTI4Miw4NDQwNywxMjEsODQ1NjIpLChwPTB8YVtsKzE2Pj4yXSl8fFByKDk5OTAyLDg0NDA3LDEyMyw4NDU2MiksY3x8UHIoMTExMzEyLDg0NDA3LDEyNCw4NDU2MiksMHxhWyhmPWMrOHwwKT4+Ml18fFByKDEx''@;'; put 'put ''MTMxNSw4NDQwNywxMjUsODQ1NjIpLDB8YVtwKzg+PjJdKXJldHVybiBPcihsLDg0NTgyLEEpLE9yKGwsODQ1OTEsQSs4fDApLE9yKGwsODQ2MTgsQSsxNnwwKSxPcihsLDg0NjQzLEErMjR8MCksT3IobCw4NDY3MixBKzMyfDApLE9yKGwsODQ3MDAsQSs0MHwwKSxhW20+PjJdPWFbZj4+Ml0s''@;'; put 'put ''T3IobCw4NDcwNyxtKSxPcihsLDg0NzQ2LEErNTZ8MCksT3IobCwxMTEwMDgsQSs2NHwwKSx2b2lkKGxlPUEpO1ByKDEzODg3OSw4NDQwNywxMjgsODQ1NjIpfSxmdW5jdGlvbiBLaWUobCxjLGYscCl7Y3w9MCxmfD0wLHB8PTA7dmFyIHcsYixrLE0sRCxtPTAsQT0wLFI9MDtEPWxlLGxlPWxl''@;'; put 'put ''KzExMnwwLE09RCsyNHwwLGs9RCsxNnwwLGI9RCxBPUQrMjh8MCwobHw9MCl8fFByKDExMTI4Miw4NDQwNywxNTMsODQ0ODgpLGN8fFByKDExMTMxMiw4NDQwNywxNTQsODQ0ODgpLDB8YVtjKzg+PjJdfHxQcigxMTEzMTUsODQ0MDcsMTU1LDg0NDg4KSwwfGFbKHc9Yys1MnwwKT4+Ml0/MTAw''@;'; put 'put ''PT0oMHwobT0wfGFbKHA9Yys2MHwwKT4+Ml0pKT9tPTE4OihDb1sxMjcmbV0oYyksYVt3Pj4yXT0wLGFbcD4+Ml09MCxhW2MrNTY+PjJdPTAsbT0xMCk6bT0xMDtkb3tpZigxMD09KDB8bSkpe2lmKCEoKDB8Z3JlKGMpKTw8MjQ+PjI0KSlicmVhaztwPTB8WSQoMHxhW2MrMjA+PjJdKSw2PT0o''@;'; put 'put ''LTImYVtjKzI0Pj4yXXwwKT8oVCQocCxBKSxhW2MrNTY+PjJdPUE9MHxhW0ErMzY+PjJdLHA9MHxOdWUoMCxBLDEsMSxwLDApLGFbdz4+Ml09cCxmZVtjKzE2Pj4wXT0xKTpwPTB8YVt3Pj4yXSwwfHAmJihhW2MrNjA+PjJdPTEwMCksWUcoYyksMHxhW3c+PjJdJiYobT0xOCl9fXdoaWxlKDAp''@;'; put 'put ''OzE4PT0oMHxtKSYmKFI9K19bZis4Pj4zXS0rKDB8YVtjKzM2Pj4yXSksX1tiPj4zXT0rX1tmPj4zXS0rKDB8YVtjKzMyPj4yXSksX1tiKzg+PjNdPVIsT3IobCw4NDUwNixiKSwwfGZlW2MrMTY+PjBdP05RKGwsYyk6KGFbaz4+Ml09YVtjKzEyPj4yXSxPcihsLDg0NTM3LGspKSxPcihsLDg0''@;'; put 'put ''NTUyLE0pKSxsZT1EfSxmdW5jdGlvbiBRQShsLGMsZixwKXtjfD0wLGZ8PTAscHw9MDt2YXIgdyxiLGssRCxSLEcscSxnZSxiZSxtPTAsQT0wLE09MCxwZT0wLE9lPTA7aWYoYmU9bGUsbGU9bGUrMTYwfDAsZ2U9YmUrMTUyfDAscGU9YmUrMTM2fDAscT1iZSsxMjB8MCxrPWJlKzExMnwwLEQ9''@;'; put 'put ''YmUrMTA0fDAsTT1iZSs4OHwwLGI9YmUrNzJ8MCx3PWJlKzY0fDAsUj1iZSwobHw9MCl8fFByKDExMTI4Miw4NDQwNywyMTIsODQ0MjYpLGN8fFByKDExMTMxMiw4NDQwNywyMTMsODQ0MjYpLDB8YVsoRz1jKzh8MCk+PjJdfHxQcigxMTEzMTUsODQ0MDcsMjE0LDg0NDI2KSwwfGFbYys1Mj4+''@;'; put 'put ''Ml0pe2lmKGFbUj4+Ml09YVtmPj4yXSxhW1IrND4+Ml09YVtmKzQ+PjJdLGFbUis4Pj4yXT1hW2YrOD4+Ml0sYVtSKzEyPj4yXT1hW2YrMTI+PjJdLGFbKGM9UiszMnwwKT4+Ml09YVsoZj1mKzE2fDApPj4yXSxhW2MrND4+Ml09YVtmKzQ+PjJdLGFbYys4Pj4yXT1hW2YrOD4+Ml0sYVtjKzEy''@;'; put 'put ''Pj4yXT1hW2YrMTI+PjJdLF9bUisxNj4+M109bT0rX1tSPj4zXSxfW1IrMjQ+PjNdPStfW1IrNDA+PjNdLF9bUis0OD4+M109K19bYz4+M10sX1tSKzU2Pj4zXT1BPStfW1IrOD4+M10scDw8MjQ+PjI0KXtmb3IoT3IobCw4NDQ0Nyx3KSxjPTA7NCE9KDB8Yyk7KU9lPStfW1IrKGM8PDQpKzg+''@;'; put 'put ''PjNdLF9bYj4+M109K19bUisoYzw8NCk+PjNdLF9bYis4Pj4zXT1PZSxPcihsLDg0NDUwLGIpLGM9YysxfDA7X1tNPj4zXT1tLF9bTSs4Pj4zXT1BLE9yKGwsODQ0NTAsTSksTT0wfGFbRz4+Ml0sYVtEPj4yXT00LGFbRCs0Pj4yXT1NLE9yKGwsODQ0NTcsRCl9Zm9yKE9yKGwsODQ0NDcsayks''@;'; put 'put ''Yz0wOzQhPSgwfGMpOylPZT0rX1tSKyhjPDw0KSs4Pj4zXSxfW3E+PjNdPStfW1IrKGM8PDQpPj4zXSxfW3ErOD4+M109T2UsT3IobCw4NDQ1MCxxKSxjPWMrMXwwO19bcGU+PjNdPW0sX1twZSs4Pj4zXT1BLE9yKGwsODQ0NTAscGUpLHBlPTB8YVtHPj4yXSxhW2dlPj4yXT00LGFbZ2UrND4+''@;'; put 'put ''Ml09cGUsT3IobCw4NDQ3MixnZSl9bGU9YmV9LGZ1bmN0aW9uIGNZKGwsYyxmLHApe30sZnVuY3Rpb24gb2llKGwsYyxmLHApe3ZhciBtLEEsdztjfD0wLGZ8PTAscHw9MCxwPWxlLGxlPWxlKzEwNDB8MCx3PXAsbT1wKzE2fDAsdW8oQT0wfGFbMTE0MTYrKGFbMTIrKDB8YVsxNisobHw9MCk+''@;'; put 'put ''PjJdKT4+Ml08PDIpPj4yXSw2NzAxMyksYVt3Pj4yXT1hW2Y+PjJdLGFbdys0Pj4yXT1hW2YrND4+Ml0sYVt3Kzg+PjJdPWFbZis4Pj4yXSxhW3crMTI+PjJdPWFbZisxMj4+Ml0sQjUoQSx3KSxXaChtLCtfW2YrMTY+PjNdLStfW2Y+PjNdKSx1byhBLG0pLFdoKG0sK19bZisyND4+M10tK19b''@;'; put 'put ''Zis4Pj4zXSksdW8oQSxtKSxQNShsLDE5NTA1OSwwfGFbYys4Pj4yXSksbGU9cH0sZnVuY3Rpb24gWGllKGwsYyxmLHApe3B8PTA7dmFyIG0sdyxiLGssQT0wO3A9bGUsbGU9bGUrNDh8MCxrPStfWzE2KyhmfD0wKT4+M10tKHc9K19bZj4+M10pLGI9KEE9K19bZisyND4+M10pLStfW2YrOD4+''@;'; put 'put ''M10sQT0rKH5+KCtfWzIzMisobHw9MCk+PjNdLStfW2wrMjE2Pj4zXSk+Pj4wKS1BLGFbKG09cCk+PjJdPWFbOCsoY3w9MCk+PjJdLF9bbSs4Pj4zXT1rLF9bbSsxNj4+M109YixfW20rMjQ+PjNdPXcsX1ttKzMyPj4zXT1BLE9yKGwsODQzMTAsbSksRW4obCw4NDQwMiksbGU9cH0sZnVuY3Rp''@;'; put 'put ''b24gYUkobCxjLGYscCl7dmFyIG0sQSx3LGIsaztsfD0wLGZ8PTAscHw9MCxwPWxlLGxlPWxlKzMyfDAsbT1wKzh8MCxhWyhiPXApPj4yXT1rPTB8YVsoYz04KyhjfD0wKXwwKT4+Ml0sYVtiKzQ+PjJdPWssT3IobCw4NDIyMyxiKSx3PS41KigrX1tmPj4zXSsgK19bZisxNj4+M10pLEE9LjUq''@;'; put 'put ''KCtfW2YrOD4+M10rICtfW2YrMjQ+PjNdKSxhW20+PjJdPWFbYz4+Ml0sX1ttKzg+PjNdPXcsX1ttKzE2Pj4zXT1BLE9yKGwsODQyNjUsbSksbGU9cH0sZnVuY3Rpb24gbjcobCxjLGYscCl7MD09KDEmKGZ8PTApfDApJiEwJiZlMChsfD0wLGYpfSxmdW5jdGlvbiBHYWUobCxjLGYscCl7bHw9''@;'; put 'put ''MCxjfD0wLHB8PTA7dmFyIGssRCxSLG09MCxBPTAsdz0wLGI9MCxNPTA7aWYoUj1sZSxsZT1sZSs4MHwwLGs9Uis0MHwwLG09UixEPVIrNjR8MCxBPVIrNTZ8MCwwfGZlWyhmfD0wKT4+MF0pe3c9MD09KDB8cCk/MTA2MzU2OnAsYVtEPj4yXT0xNSxwPTB8YVsoYj1jKzE2fDApPj4yXTtkb3tp''@;'; put 'put ''ZigwfGZlWzgyKygwfGFbcCsxMDQ+PjJdKT4+MF0pe2lmKCEocD0wfHJHKGMsZixEKSkpe3A9MHxhW2I+PjJdLE09ODticmVha30wfG1rKGMscCxtLHcsMHxhW0Q+PjJdLDApJiYoYVtrPj4yXT0wfHRpKGMpLGFbays0Pj4yXT1mLGFbays4Pj4yXT13LCRyKDAsMTA2MzU4LGspKX1lbHNlIE09''@;'; put 'put ''OH13aGlsZSgwKTs4PT0oMHxNKSYmKDE2NjQ9PSgwfGFbOCsoMHxhW3ArOD4+Ml0pPj4yXSk/QT0wOihhW0E+PjJdPWMsYVtBKzQ+PjJdPTApLDB8bWsoYywwLG0sZiwwfGFbRD4+Ml0sQSkmJmVKKGMsZikpLGFbbSszNj4+Ml09MCxBPWwrNDB8MDtkb3thW2w+PjJdPWFbbT4+Ml0sbD1sKzR8''@;'; put 'put ''MCxtPW0rNHwwfXdoaWxlKCgwfGwpPCgwfEEpKX1lbHNle209NDIwOCxBPWwrNDB8MDtkb3thW2w+PjJdPWFbbT4+Ml0sbD1sKzR8MCxtPW0rNHwwfXdoaWxlKCgwfGwpPCgwfEEpKX1sZT1SfSxmdW5jdGlvbiBjTihsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgYixrLG09MCxBPTAsdz0w''@;'; put 'put ''O2lmKGs9bGUsbGU9bGUrNjR8MCxiPWsrNDB8MCxtPWssMHxmZVsoZnw9MCk+PjBdKXtwPTA9PSgwfHApPzEwNjM1NjpwLCh3PTB8aUooQT0wfGFbMTIrKDB8YVtjKzE2Pj4yXSk+PjJdLGYpKT8wfG1rKGMsdysxNnwwLG0scCwwfFh0W3crNjU+PjBdLDApJiYoYVtiPj4yXT0wfHRpKGMpLGFb''@;'; put 'put ''Yis0Pj4yXT1mLGFbYis4Pj4yXT1wLCRyKDAsMTA2MzU4LGIpKTowfG1rKGMsQSsxNnwwLG0sZiwxNSwwKSYmZUooYyxmKSxwPWwrNDB8MDtkb3thW2w+PjJdPWFbbT4+Ml0sbD1sKzR8MCxtPW0rNHwwfXdoaWxlKCgwfGwpPCgwfHApKX1lbHNle209NDIwOCxwPWwrNDB8MDtkb3thW2w+PjJd''@;'; put 'put ''PWFbbT4+Ml0sbD1sKzR8MCxtPW0rNHwwfXdoaWxlKCgwfGwpPCgwfHApKX1sZT1rfSxoaixmdW5jdGlvbiBOMWUobCxjLGYscCl7Y3w9MCxmfD0wO3ZhciB3LGIsbT0wLEE9MDtmb3Iodz03MisobHw9MCl8MCxiPTQrKHB8PTApfDA7ISgoZi1jfDApPD0xKTspe3N3aXRjaChtPTB8ZmVbYysx''@;'; put 'put ''Pj4wXSwwfChsPShsPTB8ZmVbYz4+MF0pPDwyND4+MjQ/MHxmMChsLG0pOjB8WHRbdysoMjU1Jm0pPj4wXSkpe2Nhc2UgNTpkZWZhdWx0OmM9YysyfDA7YnJlYWs7Y2FzZSA2OmM9YyszfDA7YnJlYWs7Y2FzZSA3OmM9Yys0fDA7YnJlYWs7Y2FzZSAxMDphW2I+PjJdPS0xLGFbcD4+Ml09MSso''@;'; put 'put ''MHxhW3A+PjJdKSxjPWMrMnwwO2JyZWFrO2Nhc2UgOTphW3A+PjJdPTErKDB8YVtwPj4yXSksKGYtKEE9YysyfDApfDApPjE/KG09MHxmZVtjKzM+PjBdLGM9MTA9PSgwfChsPShsPTB8ZmVbQT4+MF0pPDwyND4+MjQ/MHxmMChsLG0pOjB8WHRbdysoMjU1Jm0pPj4wXSkpP2MrNHwwOkEpOmM9''@;'; put 'put ''QSxhW2I+PjJdPS0xfWFbYj4+Ml09MSsoMHxhW2I+PjJdKX19LGZ1bmN0aW9uIEo5ZShsLGMsZixwKXtjfD0wLGZ8PTA7dmFyIHcsYixtPTAsQT0wO2Zvcih3PTcyKyhsfD0wKXwwLGI9NCsocHw9MCl8MDshKChmLWN8MCk8PTEpOyl7c3dpdGNoKG09MHxmZVtjPj4wXSwwfChsPShsPTB8ZmVb''@;'; put 'put ''YysxPj4wXSk8PDI0Pj4yND8wfGYwKGwsbSk6MHxYdFt3KygyNTUmbSk+PjBdKSl7Y2FzZSA1OmRlZmF1bHQ6Yz1jKzJ8MDticmVhaztjYXNlIDY6Yz1jKzN8MDticmVhaztjYXNlIDc6Yz1jKzR8MDticmVhaztjYXNlIDEwOmFbYj4+Ml09LTEsYVtwPj4yXT0xKygwfGFbcD4+Ml0pLGM9Yysy''@;'; put 'put ''fDA7YnJlYWs7Y2FzZSA5OmFbcD4+Ml09MSsoMHxhW3A+PjJdKSwoZi0oQT1jKzJ8MCl8MCk+MT8obT0wfGZlW0E+PjBdLGM9MTA9PSgwfChsPShsPTB8ZmVbYyszPj4wXSk8PDI0Pj4yND8wfGYwKGwsbSk6MHxYdFt3KygyNTUmbSk+PjBdKSk/Yys0fDA6QSk6Yz1BLGFbYj4+Ml09LTF9YVti''@;'; put 'put ''Pj4yXT0xKygwfGFbYj4+Ml0pfX0seDEsZnVuY3Rpb24gRnMobCxjLGYscCl7bHw9MCxmfD0wLHB8PTA7dmFyIGIsayxNLEQsbT0wLEE9MCx3PTA7Zm9yKEQ9bGUsbGU9bGUrMzJ8MCxiPUQsaDIoRCsxNnwwLGN8PTApLGs9YyszMnwwLE09YyszNnwwLG09MDshKCgwfG0pPj0oMHxhW2s+PjJd''@;'; put 'put ''KSk7KXtBPTB8YVsoMHxhW00+PjJdKSsobTw8Mik+PjJdO2Rve2lmKCEoMHxmZVtBKzM2Pj4wXSkpe2lmKCgwfCh3PTB8YVtBKzIwPj4yXSkpPT0oMHxjKSl7Q2koYixBLDB8YVtBKzI0Pj4yXSksdjMobCxwLEEsMCk7YnJlYWt9Q2koYixBLHcpLHYzKGwsZixBLDApO2JyZWFrfX13aGlsZSgw''@;'; put 'put ''KTttPW0rMXwwfWFbbD4+Ml09MisoMHxhW2w+PjJdKSxsZT1EfSxmdW5jdGlvbiBIcyhsLGMsZixwKXtsfD0wLGN8PTAscHw9MDt2YXIgcWUscnQsV2UsYXQsU3Qsa3QsRXQsbT0wLEE9MCx3PTAsYj0wLGs9MCxNPTAsRD0wLFI9MCxHPTAscT0wLHBlPTAsZ2U9MCxiZT0wLE9lPTAsTGU9MCxS''@;'; put 'put ''ZT0wLEhlPTAsVmU9MCxzdD0wO2ZvcihFdD1sZSxsZT1sZSsxMjh8MCxXZT1FdCs2NHwwLE09RXQrNDh8MCxhdD1FdCszMnwwLFN0PUV0KzE2fDAsa3Q9RXQsbT0wLEE9Znw9MDtBOyltPW0rMXwwLEE9MHxhW0ErOD4+Ml07Zm9yKHJ0PTB8dnIoKDU2Km18MCktMTEyfDApLGFbV2UrNTI+PjJd''@;'; put 'put ''PTAsYVtXZSs0OD4+Ml09MCxBPTB8YVs4KyhmPTB8YVsocWU9Zis4fDApPj4yXSk+PjJdLDEmYVsobT0wfGFbZisyMD4+Ml0pPj4yXSYmKG09MHxhW2YrMjQ+PjJdKSxDaShNLGYsbSksdz1mLEc9ZixSPTAsRD0rX1tNPj4zXSxWZT0wLGs9MCxSZT0rX1tNKzg+PjNdOzB8YVsoSGU9QSs4fDAp''@;'; put 'put ''Pj4yXTspe2lmKFRFKGMsT2U9MHxnYih3LEEpLDB8YVtHKzEyPj4yXSksKDB8ZmVbKGdlPUcrMzZ8MCk+PjBdKT09KDB8ZmVbKGJlPUErMzZ8MCk+PjBdKT8oMHxhW0hlPj4yXSk9PSgwfHApPyhDaShTdCxBLE9lKSxmPVN0LHN0PTEyKToodz1HLGY9VmUsYj1SZSk6KGgyKGF0LE9lKSxmPWF0''@;'; put 'put ''LHN0PTEyKSwxMj09KDB8c3QpKXtzdD0wLExlPStfW2Y+PjNdLGI9K19bZis4Pj4zXSxxPSgwfEcpPT0oMHxhW3FlPj4yXSksKHBlPShmPTB8ZmVbZ2U+PjBdKTw8MjQ+PjI0PT0wKT8oZj0wfGZlW2JlPj4wXT8oMHxhW0ErMjA+PjJdKT09KDB8T2UpPzQ6MjowLE09T2UrNDh8MCxHPW0rNDh8''@;'; put 'put ''MCx3PW0rNDB8MCxtPXE/MDpSPkQ/NDoyKTooZj1mPDwyND4+MjQ9PSgwfGZlW2JlPj4wXSk/MDooMHxhW0ErMjA+PjJdKT09KDB8T2UpPzE6MyxNPU9lKzQwfDAsRz1tKzQwfDAsdz1tKzQ4fDAsbT1xPzA6az5SZT8xOjMpLGI5KFdlLDEmcGUsK19bdz4+M10sK19bRz4+M10sK19bTT4+M10s''@;'; put 'put ''bSxmKSxHPVZlKzF8MCxmPVdlLHc9NTYrKG09cnQrKDU2KlZlfDApfDApfDA7ZG97YVttPj4yXT1hW2Y+PjJdLG09bSs0fDAsZj1mKzR8MH13aGlsZSgoMHxtKTwoMHx3KSk7aWYoKDB8ZmVbZ2U+PjBdKSE9KDB8ZmVbYmU+PjBdKSYmKDB8YVtIZT4+Ml0pPT0oMHxwKSl7Q2koa3QsQSxPZSks''@;'; put 'put ''Zj1PZSs0MHwwLG09T2UrNDh8MCxiOShXZSwxJihNPTA9PSgwfGZlW2JlPj4wXSkpLCtfWyhNP2Y6bSk+PjNdLFI9K19bKE0/bTpmKT4+M10sUixNP0Q+TGU/NDoyOlJlPmI/MTozLDApLE09VmUrMnwwLGY9V2Usdz01NisobT1ydCsoNTYqR3wwKXwwKXwwO2Rve2FbbT4+Ml09YVtmPj4yXSxt''@;'; put 'put ''PW0rNHwwLGY9Zis0fDB9d2hpbGUoKDB8bSk8KDB8dykpO209T2Usdz1BLFI9RCxEPUxlLGY9TSxrPVJlfWVsc2UgbT1PZSx3PUEsUj1ELEQ9TGUsZj1HLGs9UmV9T2U9QSxBPTB8YVtIZT4+Ml0sRz13LFZlPWYsUmU9Yix3PU9lfWZvcihBPTB8VWEocnQsNTYqVmV8MCksZj1WZSstMXwwLG09''@;'; put 'put ''MDshKCgwfG0pPj0oMHxWZSkpOykoMHxtKT4wJiYoYVtBKyg1NiptfDApKzQ4Pj4yXT1BKyg1NioobSstMXwwKXwwKSksKDB8bSk8KDB8Zik/KGFbQSsoNTYqbXwwKSs1Mj4+Ml09QSsoNTYqKHN0PW0rMXwwKXwwKSxtPXN0KTptPW0rMXwwO2FbbD4+Ml09VmUsYVtsKzQ+PjJdPUEsbGU9RXR9''@;'; put 'put ''LGZ1bmN0aW9uIFFLKGwsYyxmLHApe2hqKDU4NTg0LGN8PTAsZnw9MCxwfD0wKX1dLHA4PVtNcCxmdW5jdGlvbiBCRihsLGMsZixwLG0pe3ZhciBBO0pUKGx8PTAsMHxhWzI2NCsoQT0wfGFbbCsxNj4+Ml0pPj4yXSwwfGFbQSsyNzI+PjJdLDB8YVtBKzI2OD4+Ml0sY3w9MCxmfD0wLHB8PTAs''@;'; put 'put ''bXw9MCl9LGZ1bmN0aW9uIE9pZShsLGMsZixwLG0pe2x8PTAsZnw9MCxwfD0wO3ZhciBBPTA7cD1sZSxsZT1sZSsxNnwwLGY9cCwwfChjfD0wKSYmMHxhWyhBPTI3MisoMHxhW2wrMTY+PjJdKXwwKT4+Ml0mJihFbihsLDY5MDE0KSx6MyhsLDB8YVtBPj4yXSwyKSxFbihsLDY5MDI1KSxhW2Y+''@;'; put 'put ''PjJdPTB8bk4oYywwfGFbNDY3MjBdKSxPcihsLDY5MDI5LGYpKSxsZT1wfSxmdW5jdGlvbiBoN2UobCxjLGYscCxtKXtjfD0wLGZ8PTAscHw9MDt2YXIgQSx3LGssTSxELGI9MDtEPWxlLGxlPWxlKzMyfDAsQT1EKzE2fDAsTT1EKzh8MCxrPUQsdz0xNisobHw9MCl8MCwwfChtfD0wKSYmK19b''@;'; put 'put ''ODArKGI9MHxhW3c+PjJdKT4+M10+LjUmJihhcChsLGIrNTZ8MCksRW4obCw4NDQ0NyksejMobCxmLHApLEVuKGwsMTAyNjA0KSxhW0E+PjJdPWFbZj4+Ml0sYVtBKzQ+PjJdPWFbZis0Pj4yXSxhW0ErOD4+Ml09YVtmKzg+PjJdLGFbQSsxMj4+Ml09YVtmKzEyPj4yXSxuaChsLEEpLGFbaz4+''@;'; put 'put ''Ml09cCxhW2srND4+Ml09YyxPcihsLDY4NzY2LGspKSwrX1s0MCsoMHxhW3c+PjJdKT4+M10+LjUmJihHQShsKSxhcChsLDE2KygwfGFbdz4+Ml0pfDApLEVuKGwsODQ0NDcpLHozKGwsZixwKSxFbihsLDEwMjYwNCksYVtBPj4yXT1hW2Y+PjJdLGFbQSs0Pj4yXT1hW2YrND4+Ml0sYVtBKzg+''@;'; put 'put ''PjJdPWFbZis4Pj4yXSxhW0ErMTI+PjJdPWFbZisxMj4+Ml0sbmgobCxBKSxhW00+PjJdPXAsYVtNKzQ+PjJdPWMsT3IobCw2ODc4MixNKSksbGU9RH0sZnVuY3Rpb24gTmllKGwsYyxmLHAsbSl7Y3w9MCxmfD0wLHB8PTAsbXw9MCxFbihsfD0wLDc0NTE5KSwwfG0mJihFbihsLDc0NTIyKSxF''@;'; put 'put ''bihsLDB8TTEobSkpLEVuKGwsOTg3NDQpKSxFbihsLDc0NDEyKSxFbihsLDc2MzQ5KSwwfGMmJjB8ZmVbYz4+MF0mJihFbihsLDc0NTMwKSxFbihsLGMpLEVuKGwsOTg3NDQpKSwwfGYmJjB8ZmVbZj4+MF0mJihFbihsLDc0NTQ0KSxFbihsLDB8ekgoZiwxKSksRW4obCw5ODc0NCkpLDB8cCYm''@;'; put 'put ''MHxmZVtwPj4wXSYmKEVuKGwsNzQ1NTkpLEVuKGwsMHxNMShwKSksRW4obCw5ODc0NCkpLEVuKGwsNzYzODgpfSxmdW5jdGlvbiBQN2UobCxjLGYscCxtKXt2YXIgQSx3LGI7Y3w9MCxmfD0wLHB8PTAsbXw9MCxiPWxlLGxlPWxlKzMyfDAsdz1iKzE2fDAsQT1iKzh8MCxtPWIsRW4obHw9MCw3''@;'; put 'put ''NjM0OSksMHxjJiYwfGZlW2M+PjBdJiYoYVttPj4yXT0wfG5pKGMpLE9yKGwsNzYzNTIsbSkpLDB8ZiYmMHxmZVtmPj4wXSYmKGFbQT4+Ml09MHxuaShmKSxPcihsLDc2MzYzLEEpKSwwfHAmJjB8ZmVbcD4+MF0mJihhW3c+PjJdPTB8bmkocCksT3IobCw3NjM3NSx3KSksRW4obCw3NjM4OCks''@;'; put 'put ''bGU9Yn0sZnVuY3Rpb24gQlUobCxjLGYscCxtKXtwfD0wO3ZhciBSLEcscGUsZ2UsTGUsQT0wLHc9MCxiPTAsaz0wLE09MCxEPTAscT0wLGJlPTAsT2U9MDtmb3IoUj0xPT0oMHwobXw9MCkpLEc9MTYrKGdlPTB8YVsoMHxhWygwfGFbMTk2KygwfGFbKExlPTE2KyhsfD0wKXwwKT4+Ml0pPj4y''@;'; put 'put ''XSkrKChjfD0wKTw8NikrND4+Ml0pKygoZnw9MCk8PDIpPj4yXSl8MCxEPXBlPWYrMXwwOzspe2lmKCgwfEQpPigwfHApKXtBPXAsT2U9cGU7YnJlYWt9TT0xNisocT0wfGFbKDB8YVsoMHxhWzE5NisoMHxhW0xlPj4yXSk+PjJdKSsoYzw8NikrND4+Ml0pKyhEPDwyKT4+Ml0pfDA7ZTpkb3tp''@;'; put 'put ''ZihSKWZvcig7Oyl7aWYoIShrPTB8YVthWzE4MCsoZj0wfGFbTT4+Ml0pPj4yXT4+Ml0pKWJyZWFrIGU7Zm9yKHc9MHxhWzE4MCsoMHxhW0c+PjJdKT4+Ml0sYj1rKy00OHwwLG09MDs7KXtpZighKGY9MHxhW3crKG08PDIpPj4yXSkpe2JlPTg7YnJlYWt9aWYoKDB8YVsoMj09KDMmYVtmPj4y''@;'; put 'put ''XXwwKT9mOmYrLTQ4fDApKzQwPj4yXSk9PSgwfGFbKDI9PSgzJmFbaz4+Ml18MCk/azpiKSs0MD4+Ml0pKWJyZWFrO209bSsxfDB9Zm9yKDg9PSgwfGJlKSYmKGJlPTAsZj0wfEpjKGdlLDB8YVsoMj09KDMmYVtrPj4yXXwwKT9rOmIpKzQwPj4yXSxrKSk7bT0wfGFbYVsxNzIrKDB8YVtNPj4y''@;'; put 'put ''XSk+PjJdPj4yXTspejYobSxmKSxZMyhtKTtZMyhrKX1lbHNlIGZvcig7Oyl7aWYoIShrPTB8YVthWzE3MisoZj0wfGFbTT4+Ml0pPj4yXT4+Ml0pKWJyZWFrIGU7Zm9yKHc9MHxhWzE3MisoMHxhW0c+PjJdKT4+Ml0sYj1rKzQ4fDAsbT0wOzspe2lmKCEoZj0wfGFbdysobTw8Mik+PjJdKSl7''@;'; put 'put ''YmU9MTc7YnJlYWt9aWYoKDB8YVsoMz09KDMmYVtmPj4yXXwwKT9mOmYrNDh8MCkrNDA+PjJdKT09KDB8YVsoMz09KDMmYVtrPj4yXXwwKT9rOmIpKzQwPj4yXSkpYnJlYWs7bT1tKzF8MH1mb3IoMTc9PSgwfGJlKSYmKGJlPTAsZj0wfEpjKDB8YVsoMz09KDMmYVtrPj4yXXwwKT9rOmIpKzQw''@;'; put 'put ''Pj4yXSxnZSxrKSk7bT0wfGFbYVsxODArKDB8YVtNPj4yXSk+PjJdPj4yXTspejYobSxmKSxZMyhtKTtZMyhrKX19d2hpbGUoMCk7aWYoKDB8YVtmKzE3Nj4+Ml0pIT0oMC0oMHxhW2YrMTg0Pj4yXSl8MCkpe2JlPTIzO2JyZWFrfWZJKGwscSksRD1EKzF8MH1mb3IoMjM9PSgwfGJlKSYmUHIo''@;'; put 'put ''ODgzMTMsODgzNTcsMTE1LDg4MzY0KTshKCgwfChBPUErMXwwKSk+PSgwfGFbKG09KGY9MHxhWzE5NisoMHxhW0xlPj4yXSk+PjJdKSsoYzw8Nil8MCk+PjJdKSk7KWFbKHA9MHxhW2YrKGM8PDYpKzQ+PjJdKSsoT2U8PDIpPj4yXT1iZT0wfGFbcCsoQTw8Mik+PjJdLGFbMjM2KygwfGFbYmUr''@;'; put 'put ''MTY+PjJdKT4+Ml09T2UsT2U9T2UrMXwwO2FbbT4+Ml09T2UsYVsoMHxhW2YrKGM8PDYpKzQ+PjJdKSsoT2U8PDIpPj4yXT0wfSxlVyxmdW5jdGlvbiBnZihsLGMsZixwLG0pe2x8PTAsY3w9MCxmfD0wLHB8PTAsbXw9MDt2YXIgYixNLEQsUixHLHEscGUsZ2UsYmUsT2UsUmUsSGUscWUsQT0w''@;'; put 'put ''LHc9MCxrPTAsTGU9MCxWZT0wLHJ0PTAsV2U9MCxhdD0wLFN0PTAsa3Q9MDtmb3IocWU9bGUsbGU9bGUrMjI0fDAsRD1xZSsxNzZ8MCxNPXFlKzIwOHwwLEhlPXFlKzE2MHwwLFZlPXFlKzEyOHwwLGs9cWUrOTZ8MCxiZT1xZSs2NHwwLFI9cWUrMzJ8MCxfWyhMZT0oT2U9cWUpKzh8MCk+PjNd''@;'; put 'put ''PTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MixfW09lPj4zXT0xNzk3NjkzMTM0ODYyMzE1N2UyOTIsX1soUmU9T2UrMjR8MCk+PjNdPS0xNzk3NjkzMTM0ODYyMzE1N2UyOTIsX1soRz1PZSsxNnwwKT4+M109LTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MixfdSgxMTAxODMsbCksYVtEPj4yXT0xMCxhW0Qr''@;'; put 'put ''ND4+Ml09MTAsVDAobCwxMTA1ODksRCksX3UoMTM4MjY1LGwpLHc9Yys0fDAsYj1jKzEyfDAscT1iZSs4fDAscGU9YmUrMTZ8MCxnZT1iZSsyNHwwLEE9MDshKCgwfEEpPj0oMHxhW3c+PjJdKSk7KWFbYmU+PjJdPWFbKFN0PSgwfGFbYj4+Ml0pKyg3MipBfDApKzQwfDApPj4yXSxhW2JlKzQ+''@;'; put 'put ''PjJdPWFbU3QrND4+Ml0sYVtiZSs4Pj4yXT1hW1N0Kzg+PjJdLGFbYmUrMTI+PjJdPWFbU3QrMTI+PjJdLGFbYmUrMTY+PjJdPWFbU3QrMTY+PjJdLGFbYmUrMjA+PjJdPWFbU3QrMjA+PjJdLGFbYmUrMjQ+PjJdPWFbU3QrMjQ+PjJdLGFbYmUrMjg+PjJdPWFbU3QrMjg+PjJdLGF0PStfW3E+''@;'; put 'put ''PjNdLFdlPStfW3BlPj4zXSxydD0rX1tnZT4+M10sX1trPj4zXT0rX1tiZT4+M10sX1trKzg+PjNdPWF0LF9baysxNj4+M109V2UsX1trKzI0Pj4zXT1ydCxUMChsLDEzODI4NCxrKSxBPUErMXwwO2ZvcihBPTA7ISgoMHxBKT49KDB8ZikpOylTdD0wfGFbbSsoQTw8MykrND4+Ml0sYVtNPj4y''@;'; put 'put ''XT1hWyhrPXArKEE8PDMpfDApPj4yXSxhW00rND4+Ml09YVtrKzQ+PjJdLGFbRD4+Ml09YVtPZT4+Ml0sYVtEKzQ+PjJdPWFbT2UrND4+Ml0sYVtEKzg+PjJdPWFbT2UrOD4+Ml0sYVtEKzEyPj4yXT1hW09lKzEyPj4yXSxhW0QrMTY+PjJdPWFbT2UrMTY+PjJdLGFbRCsyMD4+Ml09YVtPZSsy''@;'; put 'put ''MD4+Ml0sYVtEKzI0Pj4yXT1hW09lKzI0Pj4yXSxhW0QrMjg+PjJdPWFbT2UrMjg+PjJdLFl6KFIsbCxTdCxNLGMsRCksYVtPZT4+Ml09YVtSPj4yXSxhW09lKzQ+PjJdPWFbUis0Pj4yXSxhW09lKzg+PjJdPWFbUis4Pj4yXSxhW09lKzEyPj4yXT1hW1IrMTI+PjJdLGFbT2UrMTY+PjJdPWFb''@;'; put 'put ''UisxNj4+Ml0sYVtPZSsyMD4+Ml09YVtSKzIwPj4yXSxhW09lKzI0Pj4yXT1hW1IrMjQ+PjJdLGFbT2UrMjg+PjJdPWFbUisyOD4+Ml0sQT1BKzF8MDtmb3IoX3UoMTEwNjA2LGwpLHc9Yys4fDAsQT0wOyEoKDB8QSk+PSgwfGFbYz4+Ml0pKTspYVtiZT4+Ml09YVsoU3Q9KDB8YVt3Pj4yXSkr''@;'; put 'put ''KDcyKkF8MCkrNDB8MCk+PjJdLGFbYmUrND4+Ml09YVtTdCs0Pj4yXSxhW2JlKzg+PjJdPWFbU3QrOD4+Ml0sYVtiZSsxMj4+Ml09YVtTdCsxMj4+Ml0sYVtiZSsxNj4+Ml09YVtTdCsxNj4+Ml0sYVtiZSsyMD4+Ml09YVtTdCsyMD4+Ml0sYVtiZSsyND4+Ml09YVtTdCsyND4+Ml0sYVtiZSsy''@;'; put 'put ''OD4+Ml09YVtTdCsyOD4+Ml0scnQ9K19bcT4+M10sV2U9K19bcGU+PjNdLGF0PStfW2dlPj4zXSxfW1ZlPj4zXT1rdD0rX1tiZT4+M10sX1tWZSs4Pj4zXT1ydCxfW1ZlKzE2Pj4zXT1XZSxfW1ZlKzI0Pj4zXT1hdCxUMChsLDEzODMyMSxWZSksX1tPZT4+M109K19bKCtfW09lPj4zXTxrdD9P''@;'; put 'put ''ZTpiZSk+PjNdLF9bTGU+PjNdPStfWygrX1tMZT4+M108cnQ/T2U6YmUpKzg+PjNdLF9bRz4+M109K19bKCtfW0c+PjNdPldlP09lOmJlKSsxNj4+M10sX1tSZT4+M109K19bKCtfW1JlPj4zXT5hdD9PZTpiZSkrMjQ+PjNdLEE9QSsxfDA7TGU9fn4oK19bTGU+PjNdKzEwKSxWZT1+figrX1tH''@;'; put 'put ''Pj4zXSsxMCksU3Q9fn4oK19bUmU+PjNdKzEwKSxhW0hlPj4yXT1+figrX1tPZT4+M10rMTApLGFbSGUrND4+Ml09TGUsYVtIZSs4Pj4yXT1WZSxhW0hlKzEyPj4yXT1TdCxUMChsLDExMDYzMSxIZSksbGU9cWV9LE1wLE1wLE1wLE1wLE1wLE1wLE1wXSxodj1bc3csZnVuY3Rpb24gbjdlKGws''@;'; put 'put ''YyxmLHAsbSxBKXtjfD0wLGZ8PTAsQXw9MCx6VChsfD0wKSxOQyhsKSxBPygzPT0oMXxBKT9URihsLEEsYyxmKTpHVChsKSxWQyhsLDk4LGMsZikpOlZDKGwsNjYsYyxmKX0sZnVuY3Rpb24gdmllKGwsYyxmLHAsbSxBKXtjfD0wLHB8PTAsbXw9MCxBfD0wO3ZhciBNLEQscSxwZSxnZSxiZSxP''@;'; put 'put ''ZSxMZSxSZSxIZSxWZSxxZSxydCxXZSxhdCx3PTAsYj0wLGs9MCxSPTAsRz0wLFN0PTAsa3Q9MCxzdD0wO2ZvcihhdD1sZSxsZT1sZSsxOTJ8MCxXZT1hdCsxNzZ8MCxxZT1hdCsxNjh8MCxydD1hdCsxMDR8MCxWZT1hdCs5NnwwLHc9YXQrODh8MCxPZT1hdCsxODB8MCxMZT1hdCs4MHwwLFJl''@;'; put 'put ''PWF0KzE2fDAsSGU9YXQscT1+fitfWzE1MisocD0wfGFbKG09MTYrKGx8PTApfDApPj4yXSk+PjNdLHBlPTB8YVtwKzE2Pj4yXSxnZT0wfGFbNDY3MTBdLCgwfChmfD0wKSk8PTMmJlByKDY3ODgyLDY3ODg5LDM2MCw2NzkwOSksYmU9MHxGMCgxNDArKDE0MCpmfDApfDApLHU3KHAsT2UsTGUp''@;'; put 'put ''LEE/KFI9NSxiPTB8YVs1NisoMHxhW20+PjJdKT4+Ml0saz0yMCk6KFI9NCxiPTAsaz0tMSksX1soRD1SZSs0OHwwKT4+M109a3Q9K19bYz4+M10sX1tSZSs1Nj4+M109U3Q9K19bYys4Pj4zXSxhW3c+PjJdPX5+KGt0KyhrdD49MD8uNTotLjUpKSxhW3crND4+Ml09fn4oU3QrKFN0Pj0wPy41''@;'; put 'put ''Oi0uNSkpLE09SGUrOHwwLHA9YmUrKDB8b28oYmUsODEwOTksdykpfDAsRz0xLEE9MDshKCgwfCh3PUErM3wwKSk+PSgwfGYpKTspe2ZvcihhW1JlPj4yXT1hW0Q+PjJdLGFbUmUrND4+Ml09YVtEKzQ+PjJdLGFbUmUrOD4+Ml09YVtEKzg+PjJdLGFbUmUrMTI+PjJdPWFbRCsxMj4+Ml0sbT0x''@;'; put 'put ''Ozspe2lmKDQ9PSgwfG0pKXttPTE7YnJlYWt9X1tSZSsobTw8NCk+PjNdPStfW2MrKChzdD1tK0F8MCk8PDQpPj4zXSxfW1JlKyhtPDw0KSs4Pj4zXT0rX1tjKyhzdDw8NCkrOD4+M10sbT1tKzF8MH1mb3IoOzchPSgwfG0pOyl3dShIZSxSZSwzLC4xNjY2NjY2NjY2NjY2NjY2NiorKDB8bSks''@;'; put 'put ''MCwwKSxrdD0rX1tNPj4zXSxhW1ZlPj4yXT1+figoU3Q9K19bSGU+PjNdKSsoU3Q+PTA/LjU6LS41KSksYVtWZSs0Pj4yXT1+fihrdCsoa3Q+PTA/LjU6LS41KSksbT1tKzF8MCxwPXArKDB8b28ocCw4MTA5OSxWZSkpfDA7Rz1HKzZ8MCxBPXd9Zm9yKG09MHxhW09lPj4yXSxrdD0rX1tMZT4+''@;'; put 'put ''M10sYVtydD4+Ml09MyxhW3J0KzQ+PjJdPVIsYVtydCs4Pj4yXT1tLGFbcnQrMTI+PjJdPXEsYVtydCsxNj4+Ml09cGUsYVtydCsyMD4+Ml09YixhW3J0KzI0Pj4yXT1nZSxhW3J0KzI4Pj4yXT0wLGFbcnQrMzI+PjJdPWssX1tydCs0MD4+M109a3QsYVtydCs0OD4+Ml09MCxhW3J0KzUyPj4y''@;'; put 'put ''XT0wLGFbcnQrNTY+PjJdPTAsYVtydCs2MD4+Ml09RyxPcihsLDY4MzgyLHJ0KSxhW3FlPj4yXT1iZSxPcihsLDgxMTA2LHFlKSxGdChiZSksbT1HKy0xfDAscD0wOyEoKDB8cCk+PSgwfEcpKTspYVtXZT4+Ml09MCE9KDB8KDB8cCklKDB8bSkpJjEsT3IobCw4MTExMSxXZSkscD1wKzF8MDtF''@;'; put 'put ''bihsLDE1MzU5OSksbGU9YXR9LGZ1bmN0aW9uIHpXKGwsYyxmLHAsbSxBKXtjfD0wLHB8PTAsbXw9MCxBfD0wO3ZhciBNLEQscSxwZSxnZSxiZSxPZSxMZSxSZSxIZSxWZSxxZSxydCxXZSxhdCx3PTAsYj0wLGs9MCxSPTAsRz0wLFN0PTAsa3Q9MCxzdD0wO2ZvcihhdD1sZSxsZT1sZSsxOTJ8''@;'; put 'put ''MCxXZT1hdCsxNzZ8MCxxZT1hdCsxNjh8MCxydD1hdCsxMDR8MCxWZT1hdCs5NnwwLG09YXQrODh8MCxPZT1hdCsxODB8MCxMZT1hdCs4MHwwLFJlPWF0KzE2fDAsSGU9YXQscT1+fitfWzE1MisoRz0wfGFbKHA9MTYrKGx8PTApfDApPj4yXSk+PjNdLHBlPTB8YVtHKzE2Pj4yXSxnZT0wfGFb''@;'; put 'put ''NDY3MTZdLGJlPTB8RjAoMTQwKygxNDAqKGZ8PTApfDApfDApLCRUKEcsT2UsTGUpLEE/KFI9NSxiPTB8YVs1NisoMHxhW3A+PjJdKT4+Ml0saz0yMCk6KFI9NCxiPTAsaz0tMSksX1soRD1SZSs0OHwwKT4+M109a3Q9K19bYz4+M10sX1tSZSs1Nj4+M109U3Q9K19bYys4Pj4zXSxhW20+PjJd''@;'; put 'put ''PX5+KGt0KyhrdD49MD8uNTotLjUpKSxhW20rND4+Ml09fn4oU3QrKFN0Pj0wPy41Oi0uNSkpLE09SGUrOHwwLHA9YmUrKDB8b28oYmUsODEwOTksbSkpfDAsRz0xLEE9MDshKCgwfCh3PUErM3wwKSk+PSgwfGYpKTspe2ZvcihhW1JlPj4yXT1hW0Q+PjJdLGFbUmUrND4+Ml09YVtEKzQ+PjJd''@;'; put 'put ''LGFbUmUrOD4+Ml09YVtEKzg+PjJdLGFbUmUrMTI+PjJdPWFbRCsxMj4+Ml0sbT0xOzspe2lmKDQ9PSgwfG0pKXttPTE7YnJlYWt9X1tSZSsobTw8NCk+PjNdPStfW2MrKChzdD1tK0F8MCk8PDQpPj4zXSxfW1JlKyhtPDw0KSs4Pj4zXT0rX1tjKyhzdDw8NCkrOD4+M10sbT1tKzF8MH1mb3Io''@;'; put 'put ''OzchPSgwfG0pOyl3dShIZSxSZSwzLC4xNjY2NjY2NjY2NjY2NjY2NiorKDB8bSksMCwwKSxrdD0rX1tNPj4zXSxhW1ZlPj4yXT1+figoU3Q9K19bSGU+PjNdKSsoU3Q+PTA/LjU6LS41KSksYVtWZSs0Pj4yXT1+fihrdCsoa3Q+PTA/LjU6LS41KSksbT1tKzF8MCxwPXArKDB8b28ocCw4MTA5''@;'; put 'put ''OSxWZSkpfDA7Rz1HKzZ8MCxBPXd9Zm9yKG09MHxhW09lPj4yXSxrdD0rX1tMZT4+M10sYVtydD4+Ml09MyxhW3J0KzQ+PjJdPVIsYVtydCs4Pj4yXT1tLGFbcnQrMTI+PjJdPXEsYVtydCsxNj4+Ml09cGUsYVtydCsyMD4+Ml09YixhW3J0KzI0Pj4yXT1nZSxhW3J0KzI4Pj4yXT0wLGFbcnQr''@;'; put 'put ''MzI+PjJdPWssX1tydCs0MD4+M109a3QsYVtydCs0OD4+Ml09MCxhW3J0KzUyPj4yXT0wLGFbcnQrNTY+PjJdPTAsYVtydCs2MD4+Ml09RyxPcihsLDY4MzgyLHJ0KSxhW3FlPj4yXT1iZSxPcihsLDgxMTA2LHFlKSxGdChiZSksbT1HKy0xfDAscD0wOyEoKDB8cCk+PSgwfEcpKTspYVtXZT4+''@;'; put 'put ''Ml09MCE9KDB8KDB8cCklKDB8bSkpJjEsT3IobCw4MTExMSxXZSkscD1wKzF8MDtFbihsLDE1MzU5OSksbGU9YXR9LGZ1bmN0aW9uICRXKGwsYyxmLHAsbSxBKXtjfD0wLGZ8PTAscHw9MCxtfD0wO3ZhciB3LGssYj0wO2lmKGs9bGUsbGU9bGUrMTZ8MCxtPWssdz0xNisobHw9MCl8MCwwfChB''@;'; put 'put ''fD0wKSYmK19bODArKGI9MHxhW3c+PjJdKT4+M10+LjUpe2ZvcihhcChsLGIrNTZ8MCksRW4obCw2ODg1MiksYVttPj4yXT1hW2M+PjJdLGFbbSs0Pj4yXT1hW2MrND4+Ml0sYVttKzg+PjJdPWFbYys4Pj4yXSxhW20rMTI+PjJdPWFbYysxMj4+Ml0sbmgobCxtKSxFbihsLDY4ODYxKSxwPTE7''@;'; put 'put ''ISgoMHxwKT49KDB8ZikpOyl6MyhsLGMrKHA8PDQpfDAsMyksRW4obCw2ODg4NykscD1wKzN8MDtFbihsLDY4ODk3KX1pZigrX1s0MCsoMHxhW3c+PjJdKT4+M10+LjUpe2ZvcihHQShsKSxhcChsLDE2KygwfGFbdz4+Ml0pfDApLEVuKGwsNjg4NTIpLGFbbT4+Ml09YVtjPj4yXSxhW20rND4+''@;'; put 'put ''Ml09YVtjKzQ+PjJdLGFbbSs4Pj4yXT1hW2MrOD4+Ml0sYVttKzEyPj4yXT1hW2MrMTI+PjJdLG5oKGwsbSksRW4obCw2ODg2MSkscD0xOyEoKDB8cCk+PSgwfGYpKTspejMobCxjKyhwPDw0KXwwLDMpLEVuKGwsNjg4ODcpLHA9cCszfDA7RW4obCw2ODg3OSl9bGU9a30sZnVuY3Rpb24gXzdl''@;'; put 'put ''KGwsYyxmLHAsbSxBKXtzd2l0Y2goY3w9MCxmfD0wLHB8PTAsbXw9MCxtPTB8YVsxNisobHw9MCk+PjJdLDB8KEF8PTApKXtjYXNlIDI6cD0wfHRZKGwsYyxmKTticmVhaztjYXNlIDM6cD0wfG5ZKGwpO2JyZWFrO2RlZmF1bHQ6cD0wfUVuKGwsNzM1OTQpLDUxMiZpdFttKzI2MD4+MV0mJihF''@;'; put 'put ''bihsLDczNjAwKSxFbihsLDB8TTEoMHxhW20rMjEyPj4yXSkpLEVuKGwsNzM2MDYpKSxORihsLEEscCksRW4obCw3MzYxMSksZnVuY3Rpb24gazdlKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgQSx3LHA9MCxtPTA7Zm9yKHc9bGUsbGU9bGUrMTZ8MCxBPXcscD03NyxtPTA7ISgoMHxtKT49''@;'; put 'put ''KDB8ZikpOylhW0E+PjJdPXAsT3IobCw3MzYxNixBKSxacyhsLCtfW2MrKG08PDQpPj4zXSksRW4obCwxMDA5OTkpLFpzKGwsLStfW2MrKG08PDQpKzg+PjNdKSxwPTA9PSgwfG0pPzY3OjMyLG09bSsxfDA7bGU9d30obCxjLGYpLEVuKGwsNzM0MjQpfSxmdW5jdGlvbiBJN2UobCxjLGYscCxt''@;'; put 'put ''LEEpe3ZhciB3LGIsayxNO2lmKGN8PTAsZnw9MCxwfD0wLG18PTAsQXw9MCxNPWxlLGxlPWxlKzQ4fDAsdz1NLDB8YVsoaz0xNDQrKGI9MHxhWzE2KyhsfD0wKT4+Ml0pfDApPj4yXSl7ZUkobCksRW4obCw3NTE0MSksejMobCxjLGYpLEVuKGwsNzUxNTUpLG09YisxNnwwLEE9KHA9dykrNDB8''@;'; put 'put ''MDtkb3thW3A+PjJdPWFbbT4+Ml0scD1wKzR8MCxtPW0rNHwwfXdoaWxlKCgwfHApPCgwfEEpKTtXQShsLHcpLEVuKGwsNzUyNjYpLFpzKGwsK19bYisxNTI+PjNdKSwxPT0oMHwocD0wfGFbaz4+Ml0pKSYmKEVuKGwsNzUxNjMpLHA9MHxhW2s+PjJdKSwyPT0oMHxwKSYmRW4obCw3NTE3Miks''@;'; put 'put ''RW4obCw3NTI3NSksdEkobCksRW4obCwxNTM1OTkpfWxlPU19LGZ1bmN0aW9uIGY3KGwsYyxmLHAsbSxBKXt2YXIgdztjfD0wLGZ8PTAscHw9MCxtfD0wLEF8PTAsbT1sZSxsZT1sZSsxNnwwLHA9bSxFbihsfD0wLDc1NTExKSx3PTB8YVs0NjcyN10sYVtwPj4yXT1hWzQ2NzI2XSxhW3ArND4+''@;'; put 'put ''Ml09dyxPcihsLDc1NzY0LHApLGlZKGwsQSksRW4obCw3NTc4OCksbkkobCksRW4obCw3NTc5MSksZnVuY3Rpb24gb1kobCxjLGYpe2x8PTAsY3w9MCxmfD0wO3ZhciBBLHcscD0wLG09MCxiPTAsaz0wO2Zvcih3PWxlLGxlPWxlKzMyfDAsQT13LHA9NzU4MTgsbT0wOyEoKDB8bSk+PSgwfGYp''@;'; put 'put ''KTspaz0rX1tjKyhtPDw0KT4+M10sYj0rKCgwfGFbNDY3MjddKT4+PjApLStfW2MrKG08PDQpKzg+PjNdLGFbQT4+Ml09cCxfW0ErOD4+M109ayxfW0ErMTY+PjNdPWIsT3IobCw3NTgyMSxBKSxwPTA9PSgwfG0pPzc1ODM0OjE5NTA1OSxtPW0rMXwwO0VuKGwsOTg3NDQpLGxlPXd9KGwsYyxm''@;'; put 'put ''KSxFbihsLDc1ODA0KSxsZT1tfSxmdW5jdGlvbiBLN2UobCxjLGYscCxtLEEpe2N8PTAsZnw9MCxwfD0wLG18PTAsQXw9MDt2YXIgTSxELFIsRyxnZSxiZSxPZSxMZSxSZSxIZSxWZSxxZSxydCx3PTAsYj0wLGs9MCxxPTAscGU9MCxXZT0wLGF0PTA7cnQ9bGUsbGU9bGUrMjA4fDAscD1ydCsx''@;'; put 'put ''NjB8MCxxZT1ydCsxNTJ8MCxWZT1ydCsxMzZ8MCxIZT1ydCsxMjh8MCxSZT1ydCs5NnwwLExlPXJ0Kzg4fDAsT2U9cnQrNTZ8MCxiPXJ0KzQ4fDAscGU9cnQrMjR8MCxxPXJ0LEVuKGx8PTAsNzg3MDkpLGpuWzQ2NzI5XT0ram5bNDY3MjhdLTQsV2U9K19bbCs0OTY+PjNdLF9bcT4+M109K19b''@;'; put 'put ''bCs0ODg+PjNdLF9bcSs4Pj4zXT1XZSxfW3ErMTY+PjNdPTEscT0wfEVhKGwsNzgyNzcscSksV2U9KygwfGFbbCszNjA+PjJdKSxfW3BlPj4zXT0wLF9bcGUrOD4+M109MCxfW3BlKzE2Pj4zXT1XZSxwZT0wfEVhKGwsNzgzMDkscGUpLFdlPStqbls0NjcyOV0tMixfW3A+PjNdPTAsX1twKzg+''@;'; put 'put ''PjNdPTAsX1twKzE2Pj4zXT1XZSxnZT0wfEVhKGwsNzgzNDEscCksQT01NisoMHxhWyhiZT1sKzE2fDApPj4yXSl8MCx3PShtPXApKzQwfDA7ZG97YVttPj4yXT1hW0E+PjJdLG09bSs0fDAsQT1BKzR8MH13aGlsZSgoMHxtKTwoMHx3KSk7Zm9yKE09MHxZQShsLHAsMCksYVtiPj4yXT03ODcy''@;'; put 'put ''MyxhW2IrND4+Ml09ZisyLEQ9bCs1MDR8MCxSPWwrNTEyfDAsRz1mKy0xfDAsaz0wLHA9MHxFYShsLDc4MzczLGIpOyEoKDB8ayk+PSgwfGYpKTspYXQ9K19bUj4+M10rICtfWyhBPWMrKGs8PDQpKzh8MCk+PjNdLFdlPStfWzE1MisoMHxhW2JlPj4yXSk+PjNdLF9bT2U+PjNdPStfW0Q+PjNd''@;'; put 'put ''KyArX1sobT1jKyhrPDw0KXwwKT4+M10sX1tPZSs4Pj4zXT1hdCxfW09lKzE2Pj4zXT0wLF9bT2UrMjQ+PjNdPVdlLGI9MHxFYShsLDc4NDE4LE9lKSxhW0xlPj4yXT1wLGFbTGUrND4+Ml09Yix3PTB8RWEobCw3ODQ0NyxMZSksRnQoYiksRnQocCksMD09KDB8ayl8KDB8ayk9PSgwfEcpPyhX''@;'; put 'put ''ZT0rX1tSPj4zXSsgK19bQT4+M10sYXQ9K19bMTUyKygwfGFbYmU+PjJdKT4+M10sX1tSZT4+M109K19bRD4+M10rICtfW20+PjNdLF9bUmUrOD4+M109V2UsX1tSZSsxNj4+M109MCxfW1JlKzI0Pj4zXT1hdCxiPTB8RWEobCw3ODQxOCxSZSksYVtIZT4+Ml09dyxhW0hlKzQ+PjJdPWIscD0w''@;'; put 'put ''fEVhKGwsNzg0NDcsSGUpLEZ0KGIpLEZ0KHcpKTpwPXcsaz1rKzF8MDthW1ZlPj4yXT1xLGFbVmUrND4+Ml09cGUsYVtWZSs4Pj4yXT1nZSxhW1ZlKzEyPj4yXT1NLGM9MHxFYShsLDc4NzMyLFZlKSxhW3FlPj4yXT1wLGFbcWUrND4+Ml09YyxmPTB8RWEobCw3ODUwMixxZSksRnQoYyksRW4o''@;'; put 'put ''bCxmKSxGdChxKSxGdChwZSksRnQoZ2UpLEZ0KE0pLEZ0KGYpLGxlPXJ0fSxmdW5jdGlvbiBRaWUobCxjLGYscCxtLEEpe2N8PTAscHw9MCxtfD0wLEF8PTA7dmFyIHcsYixELFIsRyxxLGdlLGJlLGs9MCxNPTAscGU9MCxPZT0wLExlPTAsUmU9MDtmb3IoYmU9bGUsbGU9bGUrMTI4fDAsZ2U9''@;'; put 'put ''YmUrMTEyfDAscT1iZSsxMDR8MCxHPWJlKzk2fDAscD1iZSs4OHwwLEQ9YmUrMTZ8MCxSPWJlLGs9MHxhWzE2KyhsfD0wKT4+Ml0sYj0wfEYwKDE0MCsoMTQwKihmfD0wKXwwKXwwKSxWRihrLGJlKzExNnwwLGJlKzgwfDApLF9bKGs9RCs0OHwwKT4+M109TGU9K19bYz4+M10sX1tEKzU2Pj4z''@;'; put 'put ''XT1PZT0rX1tjKzg+PjNdLGFbcD4+Ml09fn4oTGUrKExlPj0wPy41Oi0uNSkpLGFbcCs0Pj4yXT1+fihPZSsoT2U+PTA/LjU6LS41KSksdz1SKzh8MCxwPWIrKDB8b28oYiw4MTA5OSxwKSl8MCxwZT0xLEE9MDshKCgwfChNPUErM3wwKSk+PSgwfGYpKTspe2ZvcihhW0Q+PjJdPWFbaz4+Ml0s''@;'; put 'put ''YVtEKzQ+PjJdPWFbays0Pj4yXSxhW0QrOD4+Ml09YVtrKzg+PjJdLGFbRCsxMj4+Ml09YVtrKzEyPj4yXSxtPTE7Oyl7aWYoND09KDB8bSkpe209MTticmVha31fW0QrKG08PDQpPj4zXT0rX1tjKygoUmU9bStBfDApPDw0KT4+M10sX1tEKyhtPDw0KSs4Pj4zXT0rX1tjKyhSZTw8NCkrOD4+''@;'; put 'put ''M10sbT1tKzF8MH1mb3IoOzchPSgwfG0pOyl3dShSLEQsMywuMTY2NjY2NjY2NjY2NjY2NjYqKygwfG0pLDAsMCksTGU9K19bdz4+M10sYVtHPj4yXT1+figoT2U9K19bUj4+M10pKyhPZT49MD8uNTotLjUpKSxhW0crND4+Ml09fn4oTGUrKExlPj0wPy41Oi0uNSkpLG09bSsxfDAscD1wKygw''@;'; put 'put ''fG9vKHAsODEwOTksRykpfDA7cGU9cGUrNnwwLEE9TX1mb3IoYVtxPj4yXT1iLE9yKGwsODExMDYscSksRnQoYiksbT1wZSstMXwwLHA9MDshKCgwfHApPj0oMHxwZSkpOylhW2dlPj4yXT0wIT0oMHwoMHxwKSUoMHxtKSkmMSxPcihsLDgxMTExLGdlKSxwPXArMXwwO0VuKGwsMTUzNTk5KSxs''@;'; put 'put ''ZT1iZX0sZnVuY3Rpb24gX2QobCxjLGYscCxtLEEpe2N8PTAsZnw9MCxwfD0wLG18PTA7dmFyIExlLFJlLEhlLFN0LGt0LFp0LGN0LGJ0LGFuLEhuLHc9MCxiPTAsaz0wLE09MCxEPTAsUj0wLEc9MCxxPTAscGU9MCxnZT0wLGJlPTAsT2U9MCxWZT0wLHFlPTAscnQ9MCxXZT0wLGF0PTAsRXQ9''@;'; put 'put ''MCx1cj0wLEhyPTAsRXI9MDtmb3IoSG49bGUsbGU9bGUrMTEyfDAsa3Q9SG4rODh8MCxTdD1Ibis3MnwwLGJ0PUhuKzU2fDAsYW49SG4rNDB8MCxMZT0wPT0oMHwoQXw9MCkpLFJlPShjdD1IbikrOHwwLEhlPTgrKFp0PUhuKzE2fDApfDAsT2U9MCxrPTAsTT0wLEQ9MCxSPTAsQT0wOyEoKDB8''@;'; put 'put ''T2UpPj0oMHxmKSk7KXtmb3IocWU9NDgrKFZlPTB8YVttKyhPZTw8MykrND4+Ml0pfDAsV2U9MTYrKDB8YVsocnQ9VmUrMTZ8MCk+PjJdKXwwLGFbU3Q+PjJdPWFbKGJlPTE2KygwfGFbMTYrKDB8YVsoMz09KDMmYVtWZT4+Ml18MCk/VmU6cWUpKzQwPj4yXSk+PjJdKXwwKT4+Ml0sYVtTdCs0''@;'; put 'put ''Pj4yXT1hW2JlKzQ+PjJdLGFbU3QrOD4+Ml09YVtiZSs4Pj4yXSxhW1N0KzEyPj4yXT1hW2JlKzEyPj4yXSxhW2t0Pj4yXT1hW1dlPj4yXSxhW2t0KzQ+PjJdPWFbV2UrND4+Ml0sYVtrdCs4Pj4yXT1hW1dlKzg+PjJdLGFba3QrMTI+PjJdPWFbV2UrMTI+PjJdLGZiKGJ0LFN0LGt0KSxhW1p0''@;'; put 'put ''Pj4yXT1hW2J0Pj4yXSxhW1p0KzQ+PjJdPWFbYnQrND4+Ml0sYVtadCs4Pj4yXT1hW2J0Kzg+PjJdLGFbWnQrMTI+PjJdPWFbYnQrMTI+PjJdLFdlPVZlKy00OHwwLGdlPTU2KygwfGFbcnQ+PjJdKXwwLGFbU3Q+PjJdPWFbKGJlPTE2KygwfGFbMTYrKDB8YVsoMj09KDMmYVtWZT4+Ml18MCk/''@;'; put 'put ''VmU6V2UpKzQwPj4yXSk+PjJdKXwwKT4+Ml0sYVtTdCs0Pj4yXT1hW2JlKzQ+PjJdLGFbU3QrOD4+Ml09YVtiZSs4Pj4yXSxhW1N0KzEyPj4yXT1hW2JlKzEyPj4yXSxhW2t0Pj4yXT1hW2dlPj4yXSxhW2t0KzQ+PjJdPWFbZ2UrND4+Ml0sYVtrdCs4Pj4yXT1hW2dlKzg+PjJdLGFba3QrMTI+''@;'; put 'put ''PjJdPWFbZ2UrMTI+PjJdLGZiKGFuLFN0LGt0KSxhW2N0Pj4yXT1hW2FuPj4yXSxhW2N0KzQ+PjJdPWFbYW4rND4+Ml0sYVtjdCs4Pj4yXT1hW2FuKzg+PjJdLGFbY3QrMTI+PjJdPWFbYW4rMTI+PjJdLGJlPTB8YVtwKyhPZTw8MykrND4+Ml0sYXQ9MSsocGU9MyooZ2U9MHxhW3ArKE9lPDwz''@;'; put 'put ''KT4+Ml0pfDApfDAsKDB8cGUpPj0oMHxNKSYmKDB8ayYmRnQoQSksaz1SPTB8UW4oYXQ8PDQpLE09YXQsRD1SLEE9UiksMHxmZVtiZT4+MF0/KHc9K0NkKGJlLGMpLGI9K19bSGU+PjNdKTooYj0rKDB8bTMoYmUsYykpLHc9K19bWnQ+PjNdKSxxPWsrMTZ8MCxfW2srMTY+PjNdPXcsX1trKzI0''@;'; put 'put ''Pj4zXT1iLGFbUj4+Ml09YVtxPj4yXSxhW1IrND4+Ml09YVtxKzQ+PjJdLGFbUis4Pj4yXT1hW3ErOD4+Ml0sYVtSKzEyPj4yXT1hW3ErMTI+PjJdLHE9MSxHPWJlLHBlPTI7ISgoMHxxKT49KDB8Z2UpKTspMHxmZVsoRz1iZSsoNTYqcXwwKXwwKT4+MF0/dz0rQ2QoRyxjKTpiPSsoMHxtMyhH''@;'; put 'put ''LGMpKSx1cj1rKyhwZSsyPDw0KXwwLEVyPWsrKHBlKzE8PDQpfDAsX1soSHI9aysocGU8PDQpfDApPj4zXT13LF9baysocGU8PDQpKzg+PjNdPWIsYVtFcj4+Ml09YVtIcj4+Ml0sYVtFcis0Pj4yXT1hW0hyKzQ+PjJdLGFbRXIrOD4+Ml09YVtIcis4Pj4yXSxhW0VyKzEyPj4yXT1hW0hyKzEy''@;'; put 'put ''Pj4yXSxhW3VyPj4yXT1hW0hyPj4yXSxhW3VyKzQ+PjJdPWFbSHIrND4+Ml0sYVt1cis4Pj4yXT1hW0hyKzg+PjJdLGFbdXIrMTI+PjJdPWFbSHIrMTI+PjJdLHE9cSsxfDAscGU9cGUrM3wwOzB8ZmVbRz4+MF0/KHc9K0NkKEcsYyksYj0rX1tSZT4+M10pOihiPSsoMHxtMyhHLGMpKSx3PStf''@;'; put 'put ''W2N0Pj4zXSksRXI9aysocGU8PDQpfDAsX1soSHI9aysoKHVyPXBlKzF8MCk8PDQpfDApPj4zXT13LF9baysodXI8PDQpKzg+PjNdPWIsYVtFcj4+Ml09YVtIcj4+Ml0sYVtFcis0Pj4yXT1hW0hyKzQ+PjJdLGFbRXIrOD4+Ml09YVtIcis4Pj4yXSxhW0VyKzEyPj4yXT1hW0hyKzEyPj4yXSxB''@;'; put 'put ''dShWZSwwfGFbKDI9PSgzJmFbVmU+PjJdfDApP1ZlOldlKSs0MD4+Ml0sayxhdCwyNTY4MCksIUxlJiYwfChFdD0wfGFbOTYrKDB8YVtydD4+Ml0pPj4yXSkmJjA9PSgwfGZlW0V0KzgxPj4wXSkmJihhW1N0Pj4yXT1hW1p0Pj4yXSxhW1N0KzQ+PjJdPWFbWnQrND4+Ml0sYVtTdCs4Pj4yXT1h''@;'; put 'put ''W1p0Kzg+PjJdLGFbU3QrMTI+PjJdPWFbWnQrMTI+PjJdLGFba3Q+PjJdPWFbY3Q+PjJdLGFba3QrND4+Ml09YVtjdCs0Pj4yXSxhW2t0Kzg+PjJdPWFbY3QrOD4+Ml0sYVtrdCsxMj4+Ml09YVtjdCsxMj4+Ml0sdGcoMCxWZSkpLE9lPU9lKzF8MH1GdChEKSxsZT1Ibn0sc3csc3csc3csc3cs''@;'; put 'put ''c3ddLGxTPVtmdW5jdGlvbiB6cyhsLGMsZixwLG0sQSx3LGIsayl7dzIoMjApfV07cmV0dXJue19fX2Vycm5vX2xvY2F0aW9uOmZ1bmN0aW9uIHRzKCl7cmV0dXJuIDE5MDU3Mn0sX19fbXVsZGkzOml3LF9fX3VkaXZkaTM6b3csX19fdXJlbWRpMzppUyxfYml0c2hpZnQ2NEFzaHI6TEwsX2Jp''@;'; put 'put ''dHNoaWZ0NjRMc2hyOndsLF9iaXRzaGlmdDY0U2hsOlpvLF9kdGV4dHJhY3Q6UDMsX2ZyZWU6RnQsX2h0b25zOmZ1bmN0aW9uIGdjZShsKXtyZXR1cm4gMHxmdW5jdGlvbiBtY2UobCl7cmV0dXJuIDB8bWZlKDB8KGx8PTApKX0obHw9MCl9LF9pNjRBZGQ6emwsX2k2NFN1YnRyYWN0OlNwLF9s''@;'; put 'put ''bHZtX2Jzd2FwX2kxNjptZmUsX2xsdm1fYnN3YXBfaTMyOkRzLF9tYWxsb2M6RjAsX21lbWFsaWduOmZ1bmN0aW9uIEZ1ZShsLGMpe3JldHVybiBjfD0wLChsfD0wKT4+PjA8OT8wfChjPTB8RjAoYykpOihjPTB8ZnVuY3Rpb24geUFlKGwsYyl7Y3w9MDt2YXIgQSxmPTAscD0wLG09MCx3PTAs''@;'; put 'put ''Yj0wO2lmKChsPShsfD0wKT4+PjA+MTY/bDoxNikrLTEmbClmb3IoZj0xNjs7KXtpZighKGY+Pj4wPGw+Pj4wKSl7bD1mO2JyZWFrfWY8PD0xfWlmKCgtNjQtbHwwKT4+PjA8PWM+Pj4wKXJldHVybiBhWzQ3NjQzXT0xMiwwO2lmKCEoZj0wfEYwKDEyKyhBPWM+Pj4wPDExPzE2OmMrMTEmLTgp''@;'; put 'put ''K2x8MCkpKXJldHVybiAwO209ZistOHwwO2Rve2lmKGwrLTEmZil7aWYocD0oKHA9KGYrbCstMSYwLWwpLTh8MCktKGM9bSl8MCk+Pj4wPjE1P3A6cCtsfDAsZj0oLTgmKGI9MHxhWyhsPWYrLTR8MCk+PjJdKSktKGM9cC1jfDApfDAsMyZiKXthWyhiPXArNHwwKT4+Ml09ZnwxJmFbYj4+Ml18''@;'; put 'put ''MixhWyhmPXArZis0fDApPj4yXT0xfGFbZj4+Ml0sYVtsPj4yXT1jfDEmYVtsPj4yXXwyLGFbYj4+Ml09MXxhW2I+PjJdLGRMKG0sYyksbD1wLGM9cDticmVha31hW3A+PjJdPSgwfGFbbT4+Ml0pK2MsYVtwKzQ+PjJdPWYsbD1wLGM9cDticmVha31sPW0sYz1tfXdoaWxlKDApO3JldHVybiAz''@;'; put 'put ''JihmPTB8YVsobD1sKzR8MCk+PjJdKXwwJiYodz0tOCZmKT4+PjA+KEErMTZ8MCk+Pj4wJiYoYj13LUF8MCxtPWMrQXwwLGFbbD4+Ml09QXwxJmZ8MixhW20rND4+Ml09M3xiLGFbKHc9Yyt3KzR8MCk+PjJdPTF8YVt3Pj4yXSxkTChtLGIpKSwwfGMrOH0obCxjKSwwfGMpfSxfbWVtY3B5Omdv''@;'; put 'put ''LF9tZW1tb3ZlOnIxLF9tZW1zZXQ6dTIsX3JlYWxsb2M6VWEsX3NhdmVTZXRqbXA6UGYsX3Nicms6eTIsX3Rlc3RTZXRqbXA6Z2ksX3ZpekNyZWF0ZUZpbGU6ZnVuY3Rpb24gdGllKGwsYyl7STQoMCwwfChsfD0wKSwwfChjfD0wKSl9LF92aXpMYXN0RXJyb3JNZXNzYWdlOmZ1bmN0aW9uIGtX''@;'; put 'put ''KCl7cmV0dXJuIDB8YVs0NjY1NF19LF92aXpSZW5kZXJGcm9tU3RyaW5nOmZ1bmN0aW9uIE5vKGwsYyxmKXtsfD0wLGN8PTAsZnw9MDt2YXIgbSxBLHcsYixwPTA7Zm9yKGI9bGUsbGU9bGUrMTZ8MCxBPWIsYVsobT1iKzR8MCk+PjJdPTAsUlQodz0wfEtHKCksMTA5NzYpLFJUKHcsMTcyMjAp''@;'; put 'put ''LFJUKHcsMTc0NDApLGZ1bmN0aW9uIGhUKGwpe3ZhciBjO2M9MHxhWzQ2OTM2XSxhWzQ2OTM2XT1sfD0wfSgxKSxmdW5jdGlvbiBmVChsKXt2YXIgYztjPTB8YVs0NjkzNV0sYVs0NjkzNV09bHw9MH0oMTgpO2w9MHx3ZShsKSxwPTB8YVttPj4yXSxsOykwfHB8fChPVCh3LGwsZiksa3JlKHcs''@;'; put 'put ''bCxjLG0sQSkpLGw9MTk1MDU5O3JldHVybiBsZT1iLDB8cH0sZHluQ2FsbF9kOmZ1bmN0aW9uIHZmZShsKXtyZXR1cm4raDhbMSYobHw9MCldKCl9LGR5bkNhbGxfZGRkZDpmdW5jdGlvbiBPYyhsLGMsZixwKXtyZXR1cm4rdXdbNyYobHw9MCldKCsoYz0rYyksKyhmPStmKSwrKHA9K3ApKX0s''@;'; put 'put ''ZHluQ2FsbF9kaTpmdW5jdGlvbiBKJChsLGMpe3JldHVybitycVsxJihsfD0wKV0oMHwoY3w9MCkpfSxkeW5DYWxsX2k6ZnVuY3Rpb24gczQobCl7cmV0dXJuIDB8JDFbMyYobHw9MCldKCl9LGR5bkNhbGxfaWk6ZnVuY3Rpb24gdTQobCxjKXtyZXR1cm4gMHxfb1s2MyYobHw9MCldKDB8KGN8''@;'; put 'put ''PTApKX0sZHluQ2FsbF9paWk6ZnVuY3Rpb24gQWZlKGwsYyxmKXtyZXR1cm4gMHxCaVsxMjcmKGx8PTApXSgwfChjfD0wKSwwfChmfD0wKSl9LGR5bkNhbGxfaWlpZGQ6ZnVuY3Rpb24geWZlKGwsYyxmLHAsbSl7cmV0dXJuIDB8ZDhbMyYobHw9MCldKDB8KGN8PTApLDB8KGZ8PTApLCsocD0r''@;'; put 'put ''cCksKyhtPSttKSl9LGR5bkNhbGxfaWlpaTpmdW5jdGlvbiBVaihsLGMsZixwKXtyZXR1cm4gMHxtaVs2MyYobHw9MCldKDB8KGN8PTApLDB8KGZ8PTApLDB8KHB8PTApKX0sZHluQ2FsbF9paWlpaTpmdW5jdGlvbiBucyhsLGMsZixwLG0pe3JldHVybiAwfHEwWzEyNyYobHw9MCldKDB8KGN8''@;'; put 'put ''PTApLDB8KGZ8PTApLDB8KHB8PTApLDB8KG18PTApKX0sZHluQ2FsbF9paWlpaWk6ZnVuY3Rpb24gY3YobCxjLGYscCxtLEEpe3JldHVybiAwfFIyWzEyNyYobHw9MCldKDB8KGN8PTApLDB8KGZ8PTApLDB8KHB8PTApLDB8KG18PTApLDB8KEF8PTApKX0sZHluQ2FsbF9paWlpaWlpOmZ1bmN0''@;'; put 'put ''aW9uIHdmZShsLGMsZixwLG0sQSx3KXtyZXR1cm4gMHxvM1sxJihsfD0wKV0oMHwoY3w9MCksMHwoZnw9MCksMHwocHw9MCksMHwobXw9MCksMHwoQXw9MCksMHwod3w9MCkpfSxkeW5DYWxsX2lpaWlpaWlpaWlpOmZ1bmN0aW9uIGJmZShsLGMsZixwLG0sQSx3LGIsayxNLEQpe3JldHVybiAw''@;'; put 'put ''fEtqWzMmKGx8PTApXSgwfChjfD0wKSwwfChmfD0wKSwwfChwfD0wKSwwfChtfD0wKSwwfChBfD0wKSwwfCh3fD0wKSwwfChifD0wKSwwfChrfD0wKSwwfChNfD0wKSwwfChEfD0wKSl9LGR5bkNhbGxfdjpmdW5jdGlvbiBYJChsKXtpcVsxNSYobHw9MCldKCl9LGR5bkNhbGxfdmk6ZnVuY3Rp''@;'; put 'put ''b24gb1MobCxjKXtDb1sxMjcmKGx8PTApXSgwfChjfD0wKSl9LGR5bkNhbGxfdmlpOmZ1bmN0aW9uIE9MKGwsYyxmKXtHc1s2MyYobHw9MCldKDB8KGN8PTApLDB8KGZ8PTApKX0sZHluQ2FsbF92aWlpOmZ1bmN0aW9uIEskKGwsYyxmLHApe2RsWzEyNyYobHw9MCldKDB8KGN8PTApLDB8KGZ8''@;'; put 'put ''PTApLDB8KHB8PTApKX0sZHluQ2FsbF92aWlpZGRpOmZ1bmN0aW9uICQkKGwsYyxmLHAsbSxBLHcpe2N3WzE1JihsfD0wKV0oMHwoY3w9MCksMHwoZnw9MCksMHwocHw9MCksKyhtPSttKSwrKEE9K0EpLDB8KHd8PTApKX0sZHluQ2FsbF92aWlpaTpmdW5jdGlvbiBxJChsLGMsZixwLG0pe1Jj''@;'; put 'put ''WzMxJihsfD0wKV0oMHwoY3w9MCksMHwoZnw9MCksMHwocHw9MCksMHwobXw9MCkpfSxkeW5DYWxsX3ZpaWlpaTpmdW5jdGlvbiBhdyhsLGMsZixwLG0sQSl7cDhbMTUmKGx8PTApXSgwfChjfD0wKSwwfChmfD0wKSwwfChwfD0wKSwwfChtfD0wKSwwfChBfD0wKSl9LGR5bkNhbGxfdmlpaWlp''@;'; put 'put ''aTpmdW5jdGlvbiBsdyhsLGMsZixwLG0sQSx3KXtodlsxNSYobHw9MCldKDB8KGN8PTApLDB8KGZ8PTApLDB8KHB8PTApLDB8KG18PTApLDB8KEF8PTApLDB8KHd8PTApKX0sZHluQ2FsbF92aWlpaWlpaWlpOmZ1bmN0aW9uIFFqKGwsYyxmLHAsbSxBLHcsYixrLE0pe2xTWzAmKGx8PTApXSgw''@;'; put 'put ''fChjfD0wKSwwfChmfD0wKSwwfChwfD0wKSwwfChtfD0wKSwwfChBfD0wKSwwfCh3fD0wKSwwfChifD0wKSwwfChrfD0wKSwwfChNfD0wKSl9LGVzdGFibGlzaFN0YWNrU3BhY2U6ZnVuY3Rpb24gcXJlKGwsYyl7bGU9bHw9MCwwfSxnZXRUZW1wUmV0MDpmdW5jdGlvbiBlaWUoKXtyZXR1cm4g''@;'; put 'put ''MHxEbn0scnVuUG9zdFNldHM6ZnVuY3Rpb24gcGZlKCl7fSxzZXRUZW1wUmV0MDpmdW5jdGlvbiBDVyhsKXtEbj1sfD0wfSxzZXRUaHJldzpmdW5jdGlvbiBfVyhsLGMpe01ufHwoTW49bHw9MCx4bj1jfD0wKX0sc3RhY2tBbGxvYzpmdW5jdGlvbiAkcmUobCl7dmFyIGM7cmV0dXJuIGM9bGUs''@;'; put 'put ''bGU9MTUrKGxlPWxlKyhsfD0wKXwwKSYtMTYsMHxjfSxzdGFja1Jlc3RvcmU6ZnVuY3Rpb24gbGMobCl7bGU9bHw9MH0sc3RhY2tTYXZlOmZ1bmN0aW9uIGJXKCl7cmV0dXJuIDB8bGV9fX0oai5hc21HbG9iYWxBcmcsai5hc21MaWJyYXJ5QXJnLG9uKSxlYj0oai5fX19lcnJub19sb2NhdGlv''@;'; put 'put ''bj1Lby5fX19lcnJub19sb2NhdGlvbixqLl9fX211bGRpMz1Lby5fX19tdWxkaTMsai5fX191ZGl2ZGkzPUtvLl9fX3VkaXZkaTMsai5fX191cmVtZGkzPUtvLl9fX3VyZW1kaTMsai5fYml0c2hpZnQ2NEFzaHI9S28uX2JpdHNoaWZ0NjRBc2hyLGouX2JpdHNoaWZ0NjRMc2hyPUtvLl9iaXRz''@;'; put 'put ''aGlmdDY0THNocixqLl9iaXRzaGlmdDY0U2hsPUtvLl9iaXRzaGlmdDY0U2hsLGouX2R0ZXh0cmFjdD1Lby5fZHRleHRyYWN0LGouX2ZyZWU9S28uX2ZyZWUpLHpwPShqLl9odG9ucz1Lby5faHRvbnMsai5faTY0QWRkPUtvLl9pNjRBZGQsai5faTY0U3VidHJhY3Q9S28uX2k2NFN1YnRyYWN0''@;'; put 'put ''LGouX2xsdm1fYnN3YXBfaTE2PUtvLl9sbHZtX2Jzd2FwX2kxNixqLl9sbHZtX2Jzd2FwX2kzMj1Lby5fbGx2bV9ic3dhcF9pMzIsai5fbWFsbG9jPUtvLl9tYWxsb2MpLFdnPWouX21lbWFsaWduPUtvLl9tZW1hbGlnbixZZz0oai5fbWVtY3B5PUtvLl9tZW1jcHksai5fbWVtbW92ZT1Lby5f''@;'; put 'put ''bWVtbW92ZSxqLl9tZW1zZXQ9S28uX21lbXNldCksUWc9KGouX3JlYWxsb2M9S28uX3JlYWxsb2Msai5fc2F2ZVNldGptcD1Lby5fc2F2ZVNldGptcCxqLl9zYnJrPUtvLl9zYnJrLGouX3Rlc3RTZXRqbXA9S28uX3Rlc3RTZXRqbXAsai5fdml6Q3JlYXRlRmlsZT1Lby5fdml6Q3JlYXRlRmls''@;'; put 'put ''ZSxqLl92aXpMYXN0RXJyb3JNZXNzYWdlPUtvLl92aXpMYXN0RXJyb3JNZXNzYWdlLGouX3ZpelJlbmRlckZyb21TdHJpbmc9S28uX3ZpelJlbmRlckZyb21TdHJpbmcsai5lc3RhYmxpc2hTdGFja1NwYWNlPUtvLmVzdGFibGlzaFN0YWNrU3BhY2Usai5nZXRUZW1wUmV0MD1Lby5nZXRUZW1w''@;'; put 'put ''UmV0MCxqLnJ1blBvc3RTZXRzPUtvLnJ1blBvc3RTZXRzLGouc2V0VGVtcFJldDA9S28uc2V0VGVtcFJldDAsai5zZXRUaHJldz1Lby5zZXRUaHJldyxqLnN0YWNrQWxsb2M9S28uc3RhY2tBbGxvYyksV3A9ai5zdGFja1Jlc3RvcmU9S28uc3RhY2tSZXN0b3JlLFFzPWouc3RhY2tTYXZlPUtv''@;'; put 'put ''LnN0YWNrU2F2ZTtpZihqLmR5bkNhbGxfZD1Lby5keW5DYWxsX2Qsai5keW5DYWxsX2RkZGQ9S28uZHluQ2FsbF9kZGRkLGouZHluQ2FsbF9kaT1Lby5keW5DYWxsX2RpLGouZHluQ2FsbF9pPUtvLmR5bkNhbGxfaSxqLmR5bkNhbGxfaWk9S28uZHluQ2FsbF9paSxqLmR5bkNhbGxfaWlpPUtv''@;'; put 'put ''LmR5bkNhbGxfaWlpLGouZHluQ2FsbF9paWlkZD1Lby5keW5DYWxsX2lpaWRkLGouZHluQ2FsbF9paWlpPUtvLmR5bkNhbGxfaWlpaSxqLmR5bkNhbGxfaWlpaWk9S28uZHluQ2FsbF9paWlpaSxqLmR5bkNhbGxfaWlpaWlpPUtvLmR5bkNhbGxfaWlpaWlpLGouZHluQ2FsbF9paWlpaWlpPUtv''@;'; put 'put ''LmR5bkNhbGxfaWlpaWlpaSxqLmR5bkNhbGxfaWlpaWlpaWlpaWk9S28uZHluQ2FsbF9paWlpaWlpaWlpaSxqLmR5bkNhbGxfdj1Lby5keW5DYWxsX3Ysai5keW5DYWxsX3ZpPUtvLmR5bkNhbGxfdmksai5keW5DYWxsX3ZpaT1Lby5keW5DYWxsX3ZpaSxqLmR5bkNhbGxfdmlpaT1Lby5keW5D''@;'; put 'put ''YWxsX3ZpaWksai5keW5DYWxsX3ZpaWlkZGk9S28uZHluQ2FsbF92aWlpZGRpLGouZHluQ2FsbF92aWlpaT1Lby5keW5DYWxsX3ZpaWlpLGouZHluQ2FsbF92aWlpaWk9S28uZHluQ2FsbF92aWlpaWksai5keW5DYWxsX3ZpaWlpaWk9S28uZHluQ2FsbF92aWlpaWlpLGouZHluQ2FsbF92aWlp''@;'; put 'put ''aWlpaWlpPUtvLmR5bkNhbGxfdmlpaWlpaWlpaSxqLmFzbT1LbyxqLmNjYWxsPXgsai5Qb2ludGVyX3N0cmluZ2lmeT1GLGouVVRGOFRvU3RyaW5nPURlLEVvKWlmKGNhKEVvKXx8KCJmdW5jdGlvbiI9PXR5cGVvZiBqLmxvY2F0ZUZpbGU/RW89ai5sb2NhdGVGaWxlKEVvKTpqLm1lbW9yeUlu''@;'; put 'put ''aXRpYWxpemVyUHJlZml4VVJMJiYoRW89ai5tZW1vcnlJbml0aWFsaXplclByZWZpeFVSTCtFbykpLE58fHRlKXt2YXIgTjE9ai5yZWFkQmluYXJ5KEVvKTt0dC5zZXQoTjEsVGUpfWVsc2V7bGV0IGR0PWZ1bmN0aW9uKCl7ai5yZWFkQXN5bmMoRW8sX2gsZnVuY3Rpb24oKXt0aHJvdyJjb3Vs''@;'; put 'put ''ZCBub3QgbG9hZCBtZW1vcnkgaW5pdGlhbGl6ZXIgIitFb30pfTtEaSgpO3ZhciBfaD1mdW5jdGlvbihJdCl7SXQuYnl0ZUxlbmd0aCYmKEl0PW5ldyBVaW50OEFycmF5KEl0KSksdHQuc2V0KEl0LFRlKSxqLm1lbW9yeUluaXRpYWxpemVyUmVxdWVzdCYmZGVsZXRlIGoubWVtb3J5SW5pdGlh''@;'; put 'put ''bGl6ZXJSZXF1ZXN0LnJlc3BvbnNlLFcwKCl9LHZkPVV1KEVvKTtpZih2ZClfaCh2ZC5idWZmZXIpO2Vsc2UgaWYoai5tZW1vcnlJbml0aWFsaXplclJlcXVlc3Qpe2xldCBJdD1mdW5jdGlvbigpe3ZhciBQdD1qLm1lbW9yeUluaXRpYWxpemVyUmVxdWVzdCxmZT1QdC5yZXNwb25zZTtpZigy''@;'; put 'put ''MDAhPT1QdC5zdGF0dXMmJjAhPT1QdC5zdGF0dXMpe3ZhciBpdD1VdShqLm1lbW9yeUluaXRpYWxpemVyUmVxdWVzdFVSTCk7aWYoIWl0KXJldHVybiBjb25zb2xlLndhcm4oImEgcHJvYmxlbSBzZWVtcyB0byBoYXZlIGhhcHBlbmVkIHdpdGggTW9kdWxlLm1lbW9yeUluaXRpYWxpemVyUmVx''@;'; put 'put ''dWVzdCwgc3RhdHVzOiAiK1B0LnN0YXR1cysiLCByZXRyeWluZyAiK0VvKSx2b2lkIGR0KCk7ZmU9aXQuYnVmZmVyfV9oKGZlKX07ai5tZW1vcnlJbml0aWFsaXplclJlcXVlc3QucmVzcG9uc2U/c2V0VGltZW91dChJdCwwKTpqLm1lbW9yeUluaXRpYWxpemVyUmVxdWVzdC5hZGRFdmVudExp''@;'; put 'put ''c3RlbmVyKCJsb2FkIixJdCl9ZWxzZSBkdCgpfWZ1bmN0aW9uIENhKGR0KXt0aGlzLm5hbWU9IkV4aXRTdGF0dXMiLHRoaXMubWVzc2FnZT0iUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgiK2R0KyIpIix0aGlzLnN0YXR1cz1kdH1mdW5jdGlvbiBxZyhkdCl7ZnVuY3Rpb24gSXQoKXtq''@;'; put 'put ''LmNhbGxlZFJ1bnx8KGouY2FsbGVkUnVuPSEwLCFNZSYmKEtuKCksTnQoKSxqLm9uUnVudGltZUluaXRpYWxpemVkJiZqLm9uUnVudGltZUluaXRpYWxpemVkKCksVW4oKSkpfWR0PWR0fHxqLmFyZ3VtZW50cyxuMD4wfHwocG4oKSxuMD4wKXx8ai5jYWxsZWRSdW58fChqLnNldFN0YXR1cz8o''@;'; put 'put ''ai5zZXRTdGF0dXMoIlJ1bm5pbmcuLi4iKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe2ouc2V0U3RhdHVzKCIiKX0sMSksSXQoKX0sMSkpOkl0KCkpfWZ1bmN0aW9uIGliKGR0LEl0KXtJdCYmai5ub0V4aXRSdW50aW1lJiYwPT09ZHR8fChqLm5vRXhpdFJ1''@;'; put 'put ''bnRpbWV8fChNZT0hMCxnbj0kZyxzbigpLGoub25FeGl0JiZqLm9uRXhpdChkdCkpLE4mJnByb2Nlc3MuZXhpdChkdCksai5xdWl0KGR0LG5ldyBDYShkdCkpKX1mdW5jdGlvbiBmMihkdCl7dGhyb3cgai5vbkFib3J0JiZqLm9uQWJvcnQoZHQpLHZvaWQgMCE9PWR0PyhqLnByaW50KGR0KSxq''@;'; put 'put ''LnByaW50RXJyKGR0KSxkdD1KU09OLnN0cmluZ2lmeShkdCkpOmR0PSIiLE1lPSEwLCJhYm9ydCgiK2R0KyIpLiBCdWlsZCB3aXRoIC1zIEFTU0VSVElPTlM9MSBmb3IgbW9yZSBpbmZvLiJ9aWYoKENhLnByb3RvdHlwZT1uZXcgRXJyb3IpLmNvbnN0cnVjdG9yPUNhLG0wPWZ1bmN0aW9uIGR0''@;'; put 'put ''KCl7ai5jYWxsZWRSdW58fHFnKCksai5jYWxsZWRSdW58fChtMD1kdCl9LGoucnVuPXFnLGouZXhpdD1pYixqLmFib3J0PWYyLGoucHJlSW5pdClmb3IoImZ1bmN0aW9uIj09dHlwZW9mIGoucHJlSW5pdCYmKGoucHJlSW5pdD1bai5wcmVJbml0XSk7ai5wcmVJbml0Lmxlbmd0aD4wOylqLnBy''@;'; put 'put ''ZUluaXQucG9wKCkoKTtyZXR1cm4gai5ub0V4aXRSdW50aW1lPSEwLHFnKCksan07ZnVuY3Rpb24gRShRKXt2YXIgSyxqPWFyZ3VtZW50cy5sZW5ndGg8PTF8fHZvaWQgMD09PWFyZ3VtZW50c1sxXT97fTphcmd1bWVudHNbMV0scmU9dm9pZCAwPT09ai5mb3JtYXQ/InN2ZyI6ai5mb3JtYXQs''@;'; put 'put ''YWU9dm9pZCAwPT09ai5lbmdpbmU/ImRvdCI6ai5lbmdpbmUsWT1qLnNjYWxlLFc9ai50b3RhbE1lbW9yeSxOPXZvaWQgMD09PWouZmlsZXM/W106ai5maWxlcyx0ZT12b2lkIDA9PT1qLmltYWdlcz9bXTpqLmltYWdlcztmb3IoSz0wO0s8dGUubGVuZ3RoO0srKylOLnB1c2goe3BhdGg6dGVb''@;'; put 'put ''S10ucGF0aCxkYXRhOic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz5cbjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0''@;'; put 'put ''ZCI+XG48c3ZnIHdpZHRoPSInK3RlW0tdLndpZHRoKyciIGhlaWdodD0iJyt0ZVtLXS5oZWlnaHQrJyI+PC9zdmc+J30pO3JldHVybiJwbmctaW1hZ2UtZWxlbWVudCI9PXJlP0Uuc3ZnWG1sVG9QbmdJbWFnZUVsZW1lbnQoRWUoUSwic3ZnIixhZSxXLE4pLFkpOkVlKFEscmUsYWUsVyxOKX1m''@;'; put 'put ''dW5jdGlvbiBFZShRLGoscmUsYWUsWSl7dmFyIE4sVz1CKHtUT1RBTF9NRU1PUlk6YWV9KTtmb3IoTj0wO048WS5sZW5ndGg7TisrKVcuY2NhbGwoInZpekNyZWF0ZUZpbGUiLCJudW1iZXIiLFsic3RyaW5nIiwic3RyaW5nIl0sW1lbTl0ucGF0aCxZW05dLmRhdGFdKTt2YXIgdGU9Vy5jY2Fs''@;'; put 'put ''bCgidml6UmVuZGVyRnJvbVN0cmluZyIsIm51bWJlciIsWyJzdHJpbmciLCJzdHJpbmciLCJzdHJpbmciXSxbUSxqLHJlXSksSz1XLlBvaW50ZXJfc3RyaW5naWZ5KHRlKSxKPVcuY2NhbGwoInZpekxhc3RFcnJvck1lc3NhZ2UiLCJudW1iZXIiLFtdLFtdKSxzZT1XLlBvaW50ZXJfc3RyaW5n''@;'; put 'put ''aWZ5KEopO2lmKCIiIT1zZSl0aHJvdyBuZXcgRXJyb3Ioc2UpO3JldHVybiBLfUUuc3ZnWG1sVG9QbmdJbWFnZUVsZW1lbnQ9ZnVuY3Rpb24oUSxqLHJlKXt2b2lkIDA9PT1qJiYoaj0iZGV2aWNlUGl4ZWxSYXRpbyJpbiB3aW5kb3cmJndpbmRvdy5kZXZpY2VQaXhlbFJhdGlvPjE/d2luZG93''@;'; put 'put ''LmRldmljZVBpeGVsUmF0aW86MSk7dmFyIGFlPW5ldyBJbWFnZTt0cnl7aWYoIm9iamVjdCI9PXR5cGVvZiBmYWJyaWMmJmZhYnJpYy5sb2FkU1ZHRnJvbVN0cmluZylmYWJyaWMubG9hZFNWR0Zyb21TdHJpbmcoUSxmdW5jdGlvbihXLE4pe2lmKDA9PVcubGVuZ3RoKXtpZih2b2lkIDAhPT1y''@;'; put 'put ''ZSlyZXR1cm4gdm9pZCByZShuZXcgRXJyb3IoIkVycm9yIGxvYWRpbmcgU1ZHIHdpdGggRmFicmljIikpO3Rocm93IG5ldyBFcnJvcigiRXJyb3IgbG9hZGluZyBTVkcgd2l0aCBGYWJyaWMiKX12YXIgdGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7dGUud2lkdGg9Ti53aWR0''@;'; put 'put ''aCx0ZS5oZWlnaHQ9Ti5oZWlnaHQ7dmFyIEs9bmV3IGZhYnJpYy5DYW52YXModGUse2VuYWJsZVJldGluYVNjYWxpbmc6ITF9KSxKPWZhYnJpYy51dGlsLmdyb3VwU1ZHRWxlbWVudHMoVyxOKTtLLmFkZChKKS5yZW5kZXJBbGwoKSxhZS5zcmM9Sy50b0RhdGFVUkwoe211bHRpcGxpZXI6an0p''@;'; put 'put ''LGFlLndpZHRoPU4ud2lkdGgsYWUuaGVpZ2h0PU4uaGVpZ2h0LHZvaWQgMCE9PXJlJiZyZShudWxsLGFlKX0pO2Vsc2V7dmFyIFk9bmV3IEltYWdlO1kub25sb2FkPWZ1bmN0aW9uKCl7dmFyIFc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Vy53aWR0aD1ZLndpZHRoKmosVy5o''@;'; put 'put ''ZWlnaHQ9WS5oZWlnaHQqaixXLmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKFksMCwwLFcud2lkdGgsVy5oZWlnaHQpLGFlLnNyYz1XLnRvRGF0YVVSTCgiaW1hZ2UvcG5nIiksYWUud2lkdGg9WS53aWR0aCxhZS5oZWlnaHQ9WS5oZWlnaHQsdm9pZCAwIT09cmUmJnJlKG51bGwsYWUpfSxZ''@;'; put 'put ''Lm9uZXJyb3I9ZnVuY3Rpb24oVyl7dmFyIE47aWYoTj0iZXJyb3IiaW4gVz9XLmVycm9yOm5ldyBFcnJvcigiRXJyb3IgbG9hZGluZyBTVkciKSx2b2lkIDA9PT1yZSl0aHJvdyBOO3JlKE4pfSxZLnNyYz0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwiK2Z1bmN0aW9uIFUoUSl7cmV0dXJu''@;'; put 'put ''IGJ0b2EoZW5jb2RlVVJJQ29tcG9uZW50KFEpLnJlcGxhY2UoLyUoWzAtOUEtRl17Mn0pL2csZnVuY3Rpb24oaixyZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoIjB4IityZSl9KSl9KFEpfX1jYXRjaChXKXtpZih2b2lkIDA9PT1yZSl0aHJvdyBXO3JlKFcpfWlmKHZvaWQgMD09PXJl''@;'; put 'put ''KXJldHVybiBhZX0sRS5zdmdYbWxUb1BuZ0Jhc2U2ND1mdW5jdGlvbihRLGoscmUpe0Uuc3ZnWG1sVG9QbmdJbWFnZUVsZW1lbnQoUSxqLGZ1bmN0aW9uKGFlLFkpe2FlP3JlKGFlKTpyZShudWxsLFkuc3JjLnNsaWNlKDIyKSl9KX0sWGUuZXhwb3J0cz1FfSgpfSw4ODU4MzooKT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0IjshZnVuY3Rpb24oQ3Qpe2NvbnN0IGZ0PUN0LnBlcmZvcm1hbmNlO2Z1bmN0aW9uIEh0KG1uKXtmdCYmZnQubWFyayYmZnQubWFyayhtbil9ZnVuY3Rpb24gR2UobW4sdW4pe2Z0JiZmdC5tZWFzdXJlJiZmdC5tZWFzdXJlKG1uLHVuKX1IdCgiWm9uZSIpO2NvbnN0IFVlPUN0Ll9f''@;'; put 'put ''Wm9uZV9zeW1ib2xfcHJlZml4fHwiX196b25lX3N5bWJvbF9fIjtmdW5jdGlvbiB5dChtbil7cmV0dXJuIFVlK21ufWNvbnN0IGp0PSEwPT09Q3RbeXQoImZvcmNlRHVwbGljYXRlWm9uZUNoZWNrIildO2lmKEN0LlpvbmUpe2lmKGp0fHwiZnVuY3Rpb24iIT10eXBlb2YgQ3QuWm9uZS5fX3N5''@;'; put 'put ''bWJvbF9fKXRocm93IG5ldyBFcnJvcigiWm9uZSBhbHJlYWR5IGxvYWRlZC4iKTtyZXR1cm4gQ3QuWm9uZX1sZXQgSnQ9KCgpPT57Y2xhc3MgbW57Y29uc3RydWN0b3IoY24sX24pe3RoaXMuX3BhcmVudD1jbix0aGlzLl9uYW1lPV9uP19uLm5hbWV8fCJ1bm5hbWVkIjoiPHJvb3Q+Iix0aGlz''@;'; put 'put ''Ll9wcm9wZXJ0aWVzPV9uJiZfbi5wcm9wZXJ0aWVzfHx7fSx0aGlzLl96b25lRGVsZWdhdGU9bmV3IGRuKHRoaXMsdGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJlbnQuX3pvbmVEZWxlZ2F0ZSxfbil9c3RhdGljIGFzc2VydFpvbmVQYXRjaGVkKCl7aWYoQ3QuUHJvbWlzZSE9PXduLlpvbmVBd2Fy''@;'; put 'put ''ZVByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJab25lLmpzIGhhcyBkZXRlY3RlZCB0aGF0IFpvbmVBd2FyZVByb21pc2UgYCh3aW5kb3d8Z2xvYmFsKS5Qcm9taXNlYCBoYXMgYmVlbiBvdmVyd3JpdHRlbi5cbk1vc3QgbGlrZWx5IGNhdXNlIGlzIHRoYXQgYSBQcm9taXNlIHBvbHlmaWxsIGhh''@;'; put 'put ''cyBiZWVuIGxvYWRlZCBhZnRlciBab25lLmpzIChQb2x5ZmlsbGluZyBQcm9taXNlIGFwaSBpcyBub3QgbmVjZXNzYXJ5IHdoZW4gem9uZS5qcyBpcyBsb2FkZWQuIElmIHlvdSBtdXN0IGxvYWQgb25lLCBkbyBzbyBiZWZvcmUgbG9hZGluZyB6b25lLmpzLikiKX1zdGF0aWMgZ2V0IHJvb3Qo''@;'; put 'put ''KXtsZXQgY249bW4uY3VycmVudDtmb3IoO2NuLnBhcmVudDspY249Y24ucGFyZW50O3JldHVybiBjbn1zdGF0aWMgZ2V0IGN1cnJlbnQoKXtyZXR1cm4gem4uem9uZX1zdGF0aWMgZ2V0IGN1cnJlbnRUYXNrKCl7cmV0dXJuIFRyfXN0YXRpYyBfX2xvYWRfcGF0Y2goY24sX24sR3Q9ITEpe2lm''@;'; put 'put ''KHduLmhhc093blByb3BlcnR5KGNuKSl7aWYoIUd0JiZqdCl0aHJvdyBFcnJvcigiQWxyZWFkeSBsb2FkZWQgcGF0Y2g6ICIrY24pfWVsc2UgaWYoIUN0WyJfX1pvbmVfZGlzYWJsZV8iK2NuXSl7Y29uc3Qga249IlpvbmU6IitjbjtIdChrbiksd25bY25dPV9uKEN0LG1uLHRuKSxHZShrbixr''@;'; put 'put ''bil9fWdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5fcGFyZW50fWdldCBuYW1lKCl7cmV0dXJuIHRoaXMuX25hbWV9Z2V0KGNuKXtjb25zdCBfbj10aGlzLmdldFpvbmVXaXRoKGNuKTtpZihfbilyZXR1cm4gX24uX3Byb3BlcnRpZXNbY25dfWdldFpvbmVXaXRoKGNuKXtsZXQgX249dGhpcztm''@;'; put 'put ''b3IoO19uOyl7aWYoX24uX3Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoY24pKXJldHVybiBfbjtfbj1fbi5fcGFyZW50fXJldHVybiBudWxsfWZvcmsoY24pe2lmKCFjbil0aHJvdyBuZXcgRXJyb3IoIlpvbmVTcGVjIHJlcXVpcmVkISIpO3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuZm9y''@;'; put 'put ''ayh0aGlzLGNuKX13cmFwKGNuLF9uKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgY24pdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RpbmcgZnVuY3Rpb24gZ290OiAiK2NuKTtjb25zdCBHdD10aGlzLl96b25lRGVsZWdhdGUuaW50ZXJjZXB0KHRoaXMsY24sX24pLGtuPXRoaXM7cmV0dXJuIGZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIGtuLnJ1bkd1YXJkZWQoR3QsdGhpcyxhcmd1bWVudHMsX24pfX1ydW4oY24sX24sR3Qsa24pe3puPXtwYXJlbnQ6em4sem9uZTp0aGlzfTt0cnl7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcyxjbixfbixHdCxrbil9ZmluYWxseXt6bj16bi5wYXJl''@;'; put 'put ''bnR9fXJ1bkd1YXJkZWQoY24sX249bnVsbCxHdCxrbil7em49e3BhcmVudDp6bix6b25lOnRoaXN9O3RyeXt0cnl7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcyxjbixfbixHdCxrbil9Y2F0Y2goVm4pe2lmKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlz''@;'; put 'put ''LFZuKSl0aHJvdyBWbn19ZmluYWxseXt6bj16bi5wYXJlbnR9fXJ1blRhc2soY24sX24sR3Qpe2lmKGNuLnpvbmUhPXRoaXMpdGhyb3cgbmV3IEVycm9yKCJBIHRhc2sgY2FuIG9ubHkgYmUgcnVuIGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246ICIrKGNuLnpvbmV8fHByKS5u''@;'; put 'put ''YW1lKyI7IEV4ZWN1dGlvbjogIit0aGlzLm5hbWUrIikiKTtpZihjbi5zdGF0ZT09PW5yJiYoY24udHlwZT09PVVufHxjbi50eXBlPT09c24pKXJldHVybjtjb25zdCBrbj1jbi5zdGF0ZSE9V3Q7a24mJmNuLl90cmFuc2l0aW9uVG8oV3QscW4pLGNuLnJ1bkNvdW50Kys7Y29uc3QgVm49VHI7''@;'; put 'put ''VHI9Y24sem49e3BhcmVudDp6bix6b25lOnRoaXN9O3RyeXtjbi50eXBlPT1zbiYmY24uZGF0YSYmIWNuLmRhdGEuaXNQZXJpb2RpYyYmKGNuLmNhbmNlbEZuPXZvaWQgMCk7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlVGFzayh0aGlzLGNuLF9uLEd0KX1jYXRjaChlbil7''@;'; put 'put ''aWYodGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsZW4pKXRocm93IGVufX1maW5hbGx5e2NuLnN0YXRlIT09bnImJmNuLnN0YXRlIT09S24mJihjbi50eXBlPT1Vbnx8Y24uZGF0YSYmY24uZGF0YS5pc1BlcmlvZGljP2tuJiZjbi5fdHJhbnNpdGlvblRvKHFuLFd0KTooY24u''@;'; put 'put ''cnVuQ291bnQ9MCx0aGlzLl91cGRhdGVUYXNrQ291bnQoY24sLTEpLGtuJiZjbi5fdHJhbnNpdGlvblRvKG5yLFd0LG5yKSkpLHpuPXpuLnBhcmVudCxUcj1Wbn19c2NoZWR1bGVUYXNrKGNuKXtpZihjbi56b25lJiZjbi56b25lIT09dGhpcyl7bGV0IEd0PXRoaXM7Zm9yKDtHdDspe2lmKEd0''@;'; put 'put ''PT09Y24uem9uZSl0aHJvdyBFcnJvcihgY2FuIG5vdCByZXNjaGVkdWxlIHRhc2sgdG8gJHt0aGlzLm5hbWV9IHdoaWNoIGlzIGRlc2NlbmRhbnRzIG9mIHRoZSBvcmlnaW5hbCB6b25lICR7Y24uem9uZS5uYW1lfWApO0d0PUd0LnBhcmVudH19Y24uX3RyYW5zaXRpb25UbyhBbixucik7Y29u''@;'; put 'put ''c3QgX249W107Y24uX3pvbmVEZWxlZ2F0ZXM9X24sY24uX3pvbmU9dGhpczt0cnl7Y249dGhpcy5fem9uZURlbGVnYXRlLnNjaGVkdWxlVGFzayh0aGlzLGNuKX1jYXRjaChHdCl7dGhyb3cgY24uX3RyYW5zaXRpb25UbyhLbixBbixuciksdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9y''@;'; put 'put ''KHRoaXMsR3QpLEd0fXJldHVybiBjbi5fem9uZURlbGVnYXRlcz09PV9uJiZ0aGlzLl91cGRhdGVUYXNrQ291bnQoY24sMSksY24uc3RhdGU9PUFuJiZjbi5fdHJhbnNpdGlvblRvKHFuLEFuKSxjbn1zY2hlZHVsZU1pY3JvVGFzayhjbixfbixHdCxrbil7cmV0dXJuIHRoaXMuc2NoZWR1bGVU''@;'; put 'put ''YXNrKG5ldyB5bihOdCxjbixfbixHdCxrbix2b2lkIDApKX1zY2hlZHVsZU1hY3JvVGFzayhjbixfbixHdCxrbixWbil7cmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyB5bihzbixjbixfbixHdCxrbixWbikpfXNjaGVkdWxlRXZlbnRUYXNrKGNuLF9uLEd0LGtuLFZuKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5zY2hlZHVsZVRhc2sobmV3IHluKFVuLGNuLF9uLEd0LGtuLFZuKSl9Y2FuY2VsVGFzayhjbil7aWYoY24uem9uZSE9dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkEgdGFzayBjYW4gb25seSBiZSBjYW5jZWxsZWQgaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVhdGlvbjogIisoY24uem9u''@;'; put 'put ''ZXx8cHIpLm5hbWUrIjsgRXhlY3V0aW9uOiAiK3RoaXMubmFtZSsiKSIpO2NuLl90cmFuc2l0aW9uVG8ocG4scW4sV3QpO3RyeXt0aGlzLl96b25lRGVsZWdhdGUuY2FuY2VsVGFzayh0aGlzLGNuKX1jYXRjaChfbil7dGhyb3cgY24uX3RyYW5zaXRpb25UbyhLbixwbiksdGhpcy5fem9uZURl''@;'; put 'put ''bGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsX24pLF9ufXJldHVybiB0aGlzLl91cGRhdGVUYXNrQ291bnQoY24sLTEpLGNuLl90cmFuc2l0aW9uVG8obnIscG4pLGNuLnJ1bkNvdW50PTAsY259X3VwZGF0ZVRhc2tDb3VudChjbixfbil7Y29uc3QgR3Q9Y24uX3pvbmVEZWxlZ2F0ZXM7LTE9PV9u''@;'; put 'put ''JiYoY24uX3pvbmVEZWxlZ2F0ZXM9bnVsbCk7Zm9yKGxldCBrbj0wO2tuPEd0Lmxlbmd0aDtrbisrKUd0W2tuXS5fdXBkYXRlVGFza0NvdW50KGNuLnR5cGUsX24pfX1yZXR1cm4gbW4uX19zeW1ib2xfXz15dCxtbn0pKCk7Y29uc3QgZ249e25hbWU6IiIsb25IYXNUYXNrOihtbix1bixjbixf''@;'; put 'put ''bik9Pm1uLmhhc1Rhc2soY24sX24pLG9uU2NoZWR1bGVUYXNrOihtbix1bixjbixfbik9Pm1uLnNjaGVkdWxlVGFzayhjbixfbiksb25JbnZva2VUYXNrOihtbix1bixjbixfbixHdCxrbik9Pm1uLmludm9rZVRhc2soY24sX24sR3Qsa24pLG9uQ2FuY2VsVGFzazoobW4sdW4sY24sX24pPT5t''@;'; put 'put ''bi5jYW5jZWxUYXNrKGNuLF9uKX07Y2xhc3MgZG57Y29uc3RydWN0b3IodW4sY24sX24pe3RoaXMuX3Rhc2tDb3VudHM9e21pY3JvVGFzazowLG1hY3JvVGFzazowLGV2ZW50VGFzazowfSx0aGlzLnpvbmU9dW4sdGhpcy5fcGFyZW50RGVsZWdhdGU9Y24sdGhpcy5fZm9ya1pTPV9uJiYoX24m''@;'; put 'put ''Jl9uLm9uRm9yaz9fbjpjbi5fZm9ya1pTKSx0aGlzLl9mb3JrRGxndD1fbiYmKF9uLm9uRm9yaz9jbjpjbi5fZm9ya0RsZ3QpLHRoaXMuX2ZvcmtDdXJyWm9uZT1fbiYmKF9uLm9uRm9yaz90aGlzLnpvbmU6Y24uX2ZvcmtDdXJyWm9uZSksdGhpcy5faW50ZXJjZXB0WlM9X24mJihfbi5vbklu''@;'; put 'put ''dGVyY2VwdD9fbjpjbi5faW50ZXJjZXB0WlMpLHRoaXMuX2ludGVyY2VwdERsZ3Q9X24mJihfbi5vbkludGVyY2VwdD9jbjpjbi5faW50ZXJjZXB0RGxndCksdGhpcy5faW50ZXJjZXB0Q3VyclpvbmU9X24mJihfbi5vbkludGVyY2VwdD90aGlzLnpvbmU6Y24uX2ludGVyY2VwdEN1cnJab25l''@;'; put 'put ''KSx0aGlzLl9pbnZva2VaUz1fbiYmKF9uLm9uSW52b2tlP19uOmNuLl9pbnZva2VaUyksdGhpcy5faW52b2tlRGxndD1fbiYmKF9uLm9uSW52b2tlP2NuOmNuLl9pbnZva2VEbGd0KSx0aGlzLl9pbnZva2VDdXJyWm9uZT1fbiYmKF9uLm9uSW52b2tlP3RoaXMuem9uZTpjbi5faW52b2tlQ3Vy''@;'; put 'put ''clpvbmUpLHRoaXMuX2hhbmRsZUVycm9yWlM9X24mJihfbi5vbkhhbmRsZUVycm9yP19uOmNuLl9oYW5kbGVFcnJvclpTKSx0aGlzLl9oYW5kbGVFcnJvckRsZ3Q9X24mJihfbi5vbkhhbmRsZUVycm9yP2NuOmNuLl9oYW5kbGVFcnJvckRsZ3QpLHRoaXMuX2hhbmRsZUVycm9yQ3VyclpvbmU9''@;'; put 'put ''X24mJihfbi5vbkhhbmRsZUVycm9yP3RoaXMuem9uZTpjbi5faGFuZGxlRXJyb3JDdXJyWm9uZSksdGhpcy5fc2NoZWR1bGVUYXNrWlM9X24mJihfbi5vblNjaGVkdWxlVGFzaz9fbjpjbi5fc2NoZWR1bGVUYXNrWlMpLHRoaXMuX3NjaGVkdWxlVGFza0RsZ3Q9X24mJihfbi5vblNjaGVkdWxl''@;'; put 'put ''VGFzaz9jbjpjbi5fc2NoZWR1bGVUYXNrRGxndCksdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmU9X24mJihfbi5vblNjaGVkdWxlVGFzaz90aGlzLnpvbmU6Y24uX3NjaGVkdWxlVGFza0N1cnJab25lKSx0aGlzLl9pbnZva2VUYXNrWlM9X24mJihfbi5vbkludm9rZVRhc2s/X246Y24uX2lu''@;'; put 'put ''dm9rZVRhc2taUyksdGhpcy5faW52b2tlVGFza0RsZ3Q9X24mJihfbi5vbkludm9rZVRhc2s/Y246Y24uX2ludm9rZVRhc2tEbGd0KSx0aGlzLl9pbnZva2VUYXNrQ3VyclpvbmU9X24mJihfbi5vbkludm9rZVRhc2s/dGhpcy56b25lOmNuLl9pbnZva2VUYXNrQ3VyclpvbmUpLHRoaXMuX2Nh''@;'; put 'put ''bmNlbFRhc2taUz1fbiYmKF9uLm9uQ2FuY2VsVGFzaz9fbjpjbi5fY2FuY2VsVGFza1pTKSx0aGlzLl9jYW5jZWxUYXNrRGxndD1fbiYmKF9uLm9uQ2FuY2VsVGFzaz9jbjpjbi5fY2FuY2VsVGFza0RsZ3QpLHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZT1fbiYmKF9uLm9uQ2FuY2VsVGFzaz90''@;'; put 'put ''aGlzLnpvbmU6Y24uX2NhbmNlbFRhc2tDdXJyWm9uZSksdGhpcy5faGFzVGFza1pTPW51bGwsdGhpcy5faGFzVGFza0RsZ3Q9bnVsbCx0aGlzLl9oYXNUYXNrRGxndE93bmVyPW51bGwsdGhpcy5faGFzVGFza0N1cnJab25lPW51bGw7Y29uc3QgR3Q9X24mJl9uLm9uSGFzVGFzazsoR3R8fGNu''@;'; put 'put ''JiZjbi5faGFzVGFza1pTKSYmKHRoaXMuX2hhc1Rhc2taUz1HdD9fbjpnbix0aGlzLl9oYXNUYXNrRGxndD1jbix0aGlzLl9oYXNUYXNrRGxndE93bmVyPXRoaXMsdGhpcy5faGFzVGFza0N1cnJab25lPXVuLF9uLm9uU2NoZWR1bGVUYXNrfHwodGhpcy5fc2NoZWR1bGVUYXNrWlM9Z24sdGhp''@;'; put 'put ''cy5fc2NoZWR1bGVUYXNrRGxndD1jbix0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZT10aGlzLnpvbmUpLF9uLm9uSW52b2tlVGFza3x8KHRoaXMuX2ludm9rZVRhc2taUz1nbix0aGlzLl9pbnZva2VUYXNrRGxndD1jbix0aGlzLl9pbnZva2VUYXNrQ3VyclpvbmU9dGhpcy56b25lKSxfbi5v''@;'; put 'put ''bkNhbmNlbFRhc2t8fCh0aGlzLl9jYW5jZWxUYXNrWlM9Z24sdGhpcy5fY2FuY2VsVGFza0RsZ3Q9Y24sdGhpcy5fY2FuY2VsVGFza0N1cnJab25lPXRoaXMuem9uZSkpfWZvcmsodW4sY24pe3JldHVybiB0aGlzLl9mb3JrWlM/dGhpcy5fZm9ya1pTLm9uRm9yayh0aGlzLl9mb3JrRGxndCx0''@;'; put 'put ''aGlzLnpvbmUsdW4sY24pOm5ldyBKdCh1bixjbil9aW50ZXJjZXB0KHVuLGNuLF9uKXtyZXR1cm4gdGhpcy5faW50ZXJjZXB0WlM/dGhpcy5faW50ZXJjZXB0WlMub25JbnRlcmNlcHQodGhpcy5faW50ZXJjZXB0RGxndCx0aGlzLl9pbnRlcmNlcHRDdXJyWm9uZSx1bixjbixfbik6Y259aW52''@;'; put 'put ''b2tlKHVuLGNuLF9uLEd0LGtuKXtyZXR1cm4gdGhpcy5faW52b2tlWlM/dGhpcy5faW52b2tlWlMub25JbnZva2UodGhpcy5faW52b2tlRGxndCx0aGlzLl9pbnZva2VDdXJyWm9uZSx1bixjbixfbixHdCxrbik6Y24uYXBwbHkoX24sR3QpfWhhbmRsZUVycm9yKHVuLGNuKXtyZXR1cm4hdGhp''@;'; put 'put ''cy5faGFuZGxlRXJyb3JaU3x8dGhpcy5faGFuZGxlRXJyb3JaUy5vbkhhbmRsZUVycm9yKHRoaXMuX2hhbmRsZUVycm9yRGxndCx0aGlzLl9oYW5kbGVFcnJvckN1cnJab25lLHVuLGNuKX1zY2hlZHVsZVRhc2sodW4sY24pe2xldCBfbj1jbjtpZih0aGlzLl9zY2hlZHVsZVRhc2taUyl0aGlz''@;'; put 'put ''Ll9oYXNUYXNrWlMmJl9uLl96b25lRGVsZWdhdGVzLnB1c2godGhpcy5faGFzVGFza0RsZ3RPd25lciksX249dGhpcy5fc2NoZWR1bGVUYXNrWlMub25TY2hlZHVsZVRhc2sodGhpcy5fc2NoZWR1bGVUYXNrRGxndCx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSx1bixjbiksX258fChfbj1j''@;'; put 'put ''bik7ZWxzZSBpZihjbi5zY2hlZHVsZUZuKWNuLnNjaGVkdWxlRm4oY24pO2Vsc2V7aWYoY24udHlwZSE9TnQpdGhyb3cgbmV3IEVycm9yKCJUYXNrIGlzIG1pc3Npbmcgc2NoZWR1bGVGbi4iKTt4cihjbil9cmV0dXJuIF9ufWludm9rZVRhc2sodW4sY24sX24sR3Qpe3JldHVybiB0aGlzLl9p''@;'; put 'put ''bnZva2VUYXNrWlM/dGhpcy5faW52b2tlVGFza1pTLm9uSW52b2tlVGFzayh0aGlzLl9pbnZva2VUYXNrRGxndCx0aGlzLl9pbnZva2VUYXNrQ3VyclpvbmUsdW4sY24sX24sR3QpOmNuLmNhbGxiYWNrLmFwcGx5KF9uLEd0KX1jYW5jZWxUYXNrKHVuLGNuKXtsZXQgX247aWYodGhpcy5fY2Fu''@;'; put 'put ''Y2VsVGFza1pTKV9uPXRoaXMuX2NhbmNlbFRhc2taUy5vbkNhbmNlbFRhc2sodGhpcy5fY2FuY2VsVGFza0RsZ3QsdGhpcy5fY2FuY2VsVGFza0N1cnJab25lLHVuLGNuKTtlbHNle2lmKCFjbi5jYW5jZWxGbil0aHJvdyBFcnJvcigiVGFzayBpcyBub3QgY2FuY2VsYWJsZSIpO19uPWNuLmNh''@;'; put 'put ''bmNlbEZuKGNuKX1yZXR1cm4gX259aGFzVGFzayh1bixjbil7dHJ5e3RoaXMuX2hhc1Rhc2taUyYmdGhpcy5faGFzVGFza1pTLm9uSGFzVGFzayh0aGlzLl9oYXNUYXNrRGxndCx0aGlzLl9oYXNUYXNrQ3VyclpvbmUsdW4sY24pfWNhdGNoKF9uKXt0aGlzLmhhbmRsZUVycm9yKHVuLF9uKX19''@;'; put 'put ''X3VwZGF0ZVRhc2tDb3VudCh1bixjbil7Y29uc3QgX249dGhpcy5fdGFza0NvdW50cyxHdD1fblt1bl0sa249X25bdW5dPUd0K2NuO2lmKGtuPDApdGhyb3cgbmV3IEVycm9yKCJNb3JlIHRhc2tzIGV4ZWN1dGVkIHRoZW4gd2VyZSBzY2hlZHVsZWQuIik7MCE9R3QmJjAhPWtufHx0aGlzLmhh''@;'; put 'put ''c1Rhc2sodGhpcy56b25lLHttaWNyb1Rhc2s6X24ubWljcm9UYXNrPjAsbWFjcm9UYXNrOl9uLm1hY3JvVGFzaz4wLGV2ZW50VGFzazpfbi5ldmVudFRhc2s+MCxjaGFuZ2U6dW59KX19Y2xhc3MgeW57Y29uc3RydWN0b3IodW4sY24sX24sR3Qsa24sVm4pe2lmKHRoaXMuX3pvbmU9bnVsbCx0''@;'; put 'put ''aGlzLnJ1bkNvdW50PTAsdGhpcy5fem9uZURlbGVnYXRlcz1udWxsLHRoaXMuX3N0YXRlPSJub3RTY2hlZHVsZWQiLHRoaXMudHlwZT11bix0aGlzLnNvdXJjZT1jbix0aGlzLmRhdGE9R3QsdGhpcy5zY2hlZHVsZUZuPWtuLHRoaXMuY2FuY2VsRm49Vm4sIV9uKXRocm93IG5ldyBFcnJvcigi''@;'; put 'put ''Y2FsbGJhY2sgaXMgbm90IGRlZmluZWQiKTt0aGlzLmNhbGxiYWNrPV9uO2NvbnN0IGVuPXRoaXM7dGhpcy5pbnZva2U9dW49PT1VbiYmR3QmJkd0LnVzZUc/eW4uaW52b2tlVGFzazpmdW5jdGlvbigpe3JldHVybiB5bi5pbnZva2VUYXNrLmNhbGwoQ3QsZW4sdGhpcyxhcmd1bWVudHMpfX1z''@;'; put 'put ''dGF0aWMgaW52b2tlVGFzayh1bixjbixfbil7dW58fCh1bj10aGlzKSxCbisrO3RyeXtyZXR1cm4gdW4ucnVuQ291bnQrKyx1bi56b25lLnJ1blRhc2sodW4sY24sX24pfWZpbmFsbHl7MT09Qm4mJnF0KCksQm4tLX19Z2V0IHpvbmUoKXtyZXR1cm4gdGhpcy5fem9uZX1nZXQgc3RhdGUoKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5fc3RhdGV9Y2FuY2VsU2NoZWR1bGVSZXF1ZXN0KCl7dGhpcy5fdHJhbnNpdGlvblRvKG5yLEFuKX1fdHJhbnNpdGlvblRvKHVuLGNuLF9uKXtpZih0aGlzLl9zdGF0ZSE9PWNuJiZ0aGlzLl9zdGF0ZSE9PV9uKXRocm93IG5ldyBFcnJvcihgJHt0aGlzLnR5cGV9ICcke3Ro''@;'; put 'put ''aXMuc291cmNlfSc6IGNhbiBub3QgdHJhbnNpdGlvbiB0byAnJHt1bn0nLCBleHBlY3Rpbmcgc3RhdGUgJyR7Y259JyR7X24/IiBvciAnIitfbisiJyI6IiJ9LCB3YXMgJyR7dGhpcy5fc3RhdGV9Jy5gKTt0aGlzLl9zdGF0ZT11bix1bj09bnImJih0aGlzLl96b25lRGVsZWdhdGVzPW51bGwp''@;'; put 'put ''fXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuZGF0YSYmdm9pZCAwIT09dGhpcy5kYXRhLmhhbmRsZUlkP3RoaXMuZGF0YS5oYW5kbGVJZC50b1N0cmluZygpOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0aGlzKX10b0pTT04oKXtyZXR1cm57dHlwZTp0aGlzLnR5cGUsc3RhdGU6dGhp''@;'; put 'put ''cy5zdGF0ZSxzb3VyY2U6dGhpcy5zb3VyY2Usem9uZTp0aGlzLnpvbmUubmFtZSxydW5Db3VudDp0aGlzLnJ1bkNvdW50fX19Y29uc3QgbG49eXQoInNldFRpbWVvdXQiKSxObj15dCgiUHJvbWlzZSIpLGJuPXl0KCJ0aGVuIik7bGV0IFhuLGVyPVtdLHNyPSExO2Z1bmN0aW9uIEZyKG1uKXtp''@;'; put 'put ''ZihYbnx8Q3RbTm5dJiYoWG49Q3RbTm5dLnJlc29sdmUoMCkpLFhuKXtsZXQgdW49WG5bYm5dO3VufHwodW49WG4udGhlbiksdW4uY2FsbChYbixtbil9ZWxzZSBDdFtsbl0obW4sMCl9ZnVuY3Rpb24geHIobW4pezA9PT1CbiYmMD09PWVyLmxlbmd0aCYmRnIocXQpLG1uJiZlci5wdXNoKG1u''@;'; put 'put ''KX1mdW5jdGlvbiBxdCgpe2lmKCFzcil7Zm9yKHNyPSEwO2VyLmxlbmd0aDspe2NvbnN0IG1uPWVyO2VyPVtdO2ZvcihsZXQgdW49MDt1bjxtbi5sZW5ndGg7dW4rKyl7Y29uc3QgY249bW5bdW5dO3RyeXtjbi56b25lLnJ1blRhc2soY24sbnVsbCxudWxsKX1jYXRjaChfbil7dG4ub25Vbmhh''@;'; put 'put ''bmRsZWRFcnJvcihfbil9fX10bi5taWNyb3Rhc2tEcmFpbkRvbmUoKSxzcj0hMX19Y29uc3QgcHI9e25hbWU6Ik5PIFpPTkUifSxucj0ibm90U2NoZWR1bGVkIixBbj0ic2NoZWR1bGluZyIscW49InNjaGVkdWxlZCIsV3Q9InJ1bm5pbmciLHBuPSJjYW5jZWxpbmciLEtuPSJ1bmtub3duIixO''@;'; put 'put ''dD0ibWljcm9UYXNrIixzbj0ibWFjcm9UYXNrIixVbj0iZXZlbnRUYXNrIix3bj17fSx0bj17c3ltYm9sOnl0LGN1cnJlbnRab25lRnJhbWU6KCk9PnpuLG9uVW5oYW5kbGVkRXJyb3I6a3IsbWljcm90YXNrRHJhaW5Eb25lOmtyLHNjaGVkdWxlTWljcm9UYXNrOnhyLHNob3dVbmNhdWdodEVy''@;'; put 'put ''cm9yOigpPT4hSnRbeXQoImlnbm9yZUNvbnNvbGVFcnJvclVuY2F1Z2h0RXJyb3IiKV0scGF0Y2hFdmVudFRhcmdldDooKT0+W10scGF0Y2hPblByb3BlcnRpZXM6a3IscGF0Y2hNZXRob2Q6KCk9PmtyLGJpbmRBcmd1bWVudHM6KCk9PltdLHBhdGNoVGhlbjooKT0+a3IscGF0Y2hNYWNyb1Rh''@;'; put 'put ''c2s6KCk9PmtyLHBhdGNoRXZlbnRQcm90b3R5cGU6KCk9PmtyLGlzSUVPckVkZ2U6KCk9PiExLGdldEdsb2JhbE9iamVjdHM6KCk9Pnt9LE9iamVjdERlZmluZVByb3BlcnR5OigpPT5rcixPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6KCk9Pnt9LE9iamVjdENyZWF0ZTooKT0+e30s''@;'; put 'put ''QXJyYXlTbGljZTooKT0+W10scGF0Y2hDbGFzczooKT0+a3Isd3JhcFdpdGhDdXJyZW50Wm9uZTooKT0+a3IsZmlsdGVyUHJvcGVydGllczooKT0+W10sYXR0YWNoT3JpZ2luVG9QYXRjaGVkOigpPT5rcixfcmVkZWZpbmVQcm9wZXJ0eTooKT0+a3IscGF0Y2hDYWxsYmFja3M6KCk9PmtyLG5h''@;'; put 'put ''dGl2ZVNjaGVkdWxlTWljcm9UYXNrOkZyfTtsZXQgem49e3BhcmVudDpudWxsLHpvbmU6bmV3IEp0KG51bGwsbnVsbCl9LFRyPW51bGwsQm49MDtmdW5jdGlvbiBrcigpe31HZSgiWm9uZSIsIlpvbmUiKSxDdC5ab25lPUp0fSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93fHwi''@;'; put 'put ''dW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGZ8fGdsb2JhbCk7Y29uc3QgWGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixKZT1PYmplY3QuZGVmaW5lUHJvcGVydHksTD1PYmplY3QuZ2V0UHJvdG90eXBlT2YsbWU9T2JqZWN0LmNyZWF0ZSxCPUFycmF5LnByb3RvdHlwZS5z''@;'; put 'put ''bGljZSxFPSJhZGRFdmVudExpc3RlbmVyIixFZT0icmVtb3ZlRXZlbnRMaXN0ZW5lciIsVT1ab25lLl9fc3ltYm9sX18oRSksUT1ab25lLl9fc3ltYm9sX18oRWUpLGo9InRydWUiLHJlPSJmYWxzZSIsYWU9Wm9uZS5fX3N5bWJvbF9fKCIiKTtmdW5jdGlvbiBZKEN0LGZ0KXtyZXR1cm4gWm9u''@;'; put 'put ''ZS5jdXJyZW50LndyYXAoQ3QsZnQpfWZ1bmN0aW9uIFcoQ3QsZnQsSHQsR2UsVWUpe3JldHVybiBab25lLmN1cnJlbnQuc2NoZWR1bGVNYWNyb1Rhc2soQ3QsZnQsSHQsR2UsVWUpfWNvbnN0IE49Wm9uZS5fX3N5bWJvbF9fLHRlPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LEs9dGU/d2lu''@;'; put 'put ''ZG93OnZvaWQgMCxKPXRlJiZLfHwib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGZ8fGdsb2JhbDtmdW5jdGlvbiBvZShDdCxmdCl7Zm9yKGxldCBIdD1DdC5sZW5ndGgtMTtIdD49MDtIdC0tKSJmdW5jdGlvbiI9PXR5cGVvZiBDdFtIdF0mJihDdFtIdF09WShDdFtIdF0sZnQrIl8iK0h0KSk7''@;'; put 'put ''cmV0dXJuIEN0fWZ1bmN0aW9uIGRlKEN0KXtyZXR1cm4hQ3R8fCExIT09Q3Qud3JpdGFibGUmJiEoImZ1bmN0aW9uIj09dHlwZW9mIEN0LmdldCYmdm9pZCAwPT09Q3Quc2V0KX1jb25zdCB2ZT0idW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmIGluc3RhbmNlb2Yg''@;'; put 'put ''V29ya2VyR2xvYmFsU2NvcGUsQWU9ISgibnciaW4gSikmJnZvaWQgMCE9PUoucHJvY2VzcyYmIltvYmplY3QgcHJvY2Vzc10iPT09e30udG9TdHJpbmcuY2FsbChKLnByb2Nlc3MpLGtlPSFBZSYmIXZlJiYhKCF0ZXx8IUsuSFRNTEVsZW1lbnQpLFNlPXZvaWQgMCE9PUoucHJvY2VzcyYmIltv''@;'; put 'put ''YmplY3QgcHJvY2Vzc10iPT09e30udG9TdHJpbmcuY2FsbChKLnByb2Nlc3MpJiYhdmUmJiEoIXRlfHwhSy5IVE1MRWxlbWVudCksSWU9e30sVGU9ZnVuY3Rpb24oQ3Qpe2lmKCEoQ3Q9Q3R8fEouZXZlbnQpKXJldHVybjtsZXQgZnQ9SWVbQ3QudHlwZV07ZnR8fChmdD1JZVtDdC50eXBlXT1O''@;'; put 'put ''KCJPTl9QUk9QRVJUWSIrQ3QudHlwZSkpO2NvbnN0IEh0PXRoaXN8fEN0LnRhcmdldHx8SixHZT1IdFtmdF07bGV0IFVlO2lmKGtlJiZIdD09PUsmJiJlcnJvciI9PT1DdC50eXBlKXtjb25zdCB5dD1DdDtVZT1HZSYmR2UuY2FsbCh0aGlzLHl0Lm1lc3NhZ2UseXQuZmlsZW5hbWUseXQubGlu''@;'; put 'put ''ZW5vLHl0LmNvbG5vLHl0LmVycm9yKSwhMD09PVVlJiZDdC5wcmV2ZW50RGVmYXVsdCgpfWVsc2UgVWU9R2UmJkdlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxudWxsIT1VZSYmIVVlJiZDdC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBVZX07ZnVuY3Rpb24gTWUoQ3QsZnQsSHQpe2xldCBHZT1Y''@;'; put 'put ''ZShDdCxmdCk7aWYoIUdlJiZIdCYmWGUoSHQsZnQpJiYoR2U9e2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksIUdlfHwhR2UuY29uZmlndXJhYmxlKXJldHVybjtjb25zdCBVZT1OKCJvbiIrZnQrInBhdGNoZWQiKTtpZihDdC5oYXNPd25Qcm9wZXJ0eShVZSkmJkN0W1VlXSlyZXR1''@;'; put 'put ''cm47ZGVsZXRlIEdlLndyaXRhYmxlLGRlbGV0ZSBHZS52YWx1ZTtjb25zdCB5dD1HZS5nZXQsanQ9R2Uuc2V0LEp0PWZ0LnNsaWNlKDIpO2xldCBnbj1JZVtKdF07Z258fChnbj1JZVtKdF09TigiT05fUFJPUEVSVFkiK0p0KSksR2Uuc2V0PWZ1bmN0aW9uKGRuKXtsZXQgeW49dGhpczsheW4m''@;'; put 'put ''JkN0PT09SiYmKHluPUopLHluJiYoImZ1bmN0aW9uIj09dHlwZW9mIHluW2duXSYmeW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihKdCxUZSksanQmJmp0LmNhbGwoeW4sbnVsbCkseW5bZ25dPWRuLCJmdW5jdGlvbiI9PXR5cGVvZiBkbiYmeW4uYWRkRXZlbnRMaXN0ZW5lcihKdCxUZSwhMSkpfSxH''@;'; put 'put ''ZS5nZXQ9ZnVuY3Rpb24oKXtsZXQgZG49dGhpcztpZighZG4mJkN0PT09SiYmKGRuPUopLCFkbilyZXR1cm4gbnVsbDtjb25zdCB5bj1kbltnbl07aWYoeW4pcmV0dXJuIHluO2lmKHl0KXtsZXQgbG49eXQuY2FsbCh0aGlzKTtpZihsbilyZXR1cm4gR2Uuc2V0LmNhbGwodGhpcyxsbiksImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIGRuLnJlbW92ZUF0dHJpYnV0ZSYmZG4ucmVtb3ZlQXR0cmlidXRlKGZ0KSxsbn1yZXR1cm4gbnVsbH0sSmUoQ3QsZnQsR2UpLEN0W1VlXT0hMH1mdW5jdGlvbiBoZShDdCxmdCxIdCl7aWYoZnQpZm9yKGxldCBHZT0wO0dlPGZ0Lmxlbmd0aDtHZSsrKU1lKEN0LCJv''@;'; put 'put ''biIrZnRbR2VdLEh0KTtlbHNle2NvbnN0IEdlPVtdO2Zvcihjb25zdCBVZSBpbiBDdCkib24iPT1VZS5zbGljZSgwLDIpJiZHZS5wdXNoKFVlKTtmb3IobGV0IFVlPTA7VWU8R2UubGVuZ3RoO1VlKyspTWUoQ3QsR2VbVWVdLEh0KX19Y29uc3QgTz1OKCJvcmlnaW5hbEluc3RhbmNlIik7ZnVu''@;'; put 'put ''Y3Rpb24geihDdCl7Y29uc3QgZnQ9SltDdF07aWYoIWZ0KXJldHVybjtKW04oQ3QpXT1mdCxKW0N0XT1mdW5jdGlvbigpe2NvbnN0IFVlPW9lKGFyZ3VtZW50cyxDdCk7c3dpdGNoKFVlLmxlbmd0aCl7Y2FzZSAwOnRoaXNbT109bmV3IGZ0O2JyZWFrO2Nhc2UgMTp0aGlzW09dPW5ldyBmdChV''@;'; put 'put ''ZVswXSk7YnJlYWs7Y2FzZSAyOnRoaXNbT109bmV3IGZ0KFVlWzBdLFVlWzFdKTticmVhaztjYXNlIDM6dGhpc1tPXT1uZXcgZnQoVWVbMF0sVWVbMV0sVWVbMl0pO2JyZWFrO2Nhc2UgNDp0aGlzW09dPW5ldyBmdChVZVswXSxVZVsxXSxVZVsyXSxVZVszXSk7YnJlYWs7ZGVmYXVsdDp0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIkFyZyBsaXN0IHRvbyBsb25nLiIpfX0seChKW0N0XSxmdCk7Y29uc3QgSHQ9bmV3IGZ0KGZ1bmN0aW9uKCl7fSk7bGV0IEdlO2ZvcihHZSBpbiBIdCkiWE1MSHR0cFJlcXVlc3QiPT09Q3QmJiJyZXNwb25zZUJsb2IiPT09R2V8fGZ1bmN0aW9uKFVlKXsiZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgSHRbVWVdP0pbQ3RdLnByb3RvdHlwZVtVZV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tPXVtVZV0uYXBwbHkodGhpc1tPXSxhcmd1bWVudHMpfTpKZShKW0N0XS5wcm90b3R5cGUsVWUse3NldDpmdW5jdGlvbih5dCl7ImZ1bmN0aW9uIj09dHlwZW9mIHl0Pyh0aGlzW09dW1Vl''@;'; put 'put ''XT1ZKHl0LEN0KyIuIitVZSkseCh0aGlzW09dW1VlXSx5dCkpOnRoaXNbT11bVWVdPXl0fSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tPXVtVZV19fSl9KEdlKTtmb3IoR2UgaW4gZnQpInByb3RvdHlwZSIhPT1HZSYmZnQuaGFzT3duUHJvcGVydHkoR2UpJiYoSltDdF1bR2VdPWZ0W0dl''@;'; put 'put ''XSl9ZnVuY3Rpb24gZWUoQ3QsZnQsSHQpe2xldCBHZT1DdDtmb3IoO0dlJiYhR2UuaGFzT3duUHJvcGVydHkoZnQpOylHZT1MKEdlKTshR2UmJkN0W2Z0XSYmKEdlPUN0KTtjb25zdCBVZT1OKGZ0KTtsZXQgeXQ9bnVsbDtpZihHZSYmKCEoeXQ9R2VbVWVdKXx8IUdlLmhhc093blByb3BlcnR5''@;'; put 'put ''KFVlKSkmJih5dD1HZVtVZV09R2VbZnRdLGRlKEdlJiZYZShHZSxmdCkpKSl7Y29uc3QgSnQ9SHQoeXQsVWUsZnQpO0dlW2Z0XT1mdW5jdGlvbigpe3JldHVybiBKdCh0aGlzLGFyZ3VtZW50cyl9LHgoR2VbZnRdLHl0KX1yZXR1cm4geXR9ZnVuY3Rpb24gbmUoQ3QsZnQsSHQpe2xldCBHZT1u''@;'; put 'put ''dWxsO2Z1bmN0aW9uIFVlKHl0KXtjb25zdCBqdD15dC5kYXRhO3JldHVybiBqdC5hcmdzW2p0LmNiSWR4XT1mdW5jdGlvbigpe3l0Lmludm9rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LEdlLmFwcGx5KGp0LnRhcmdldCxqdC5hcmdzKSx5dH1HZT1lZShDdCxmdCx5dD0+ZnVuY3Rpb24oanQs''@;'; put 'put ''SnQpe2NvbnN0IGduPUh0KGp0LEp0KTtyZXR1cm4gZ24uY2JJZHg+PTAmJiJmdW5jdGlvbiI9PXR5cGVvZiBKdFtnbi5jYklkeF0/Vyhnbi5uYW1lLEp0W2duLmNiSWR4XSxnbixVZSk6eXQuYXBwbHkoanQsSnQpfSl9ZnVuY3Rpb24geChDdCxmdCl7Q3RbTigiT3JpZ2luYWxEZWxlZ2F0ZSIp''@;'; put 'put ''XT1mdH1sZXQgUD0hMSxWPSExO2Z1bmN0aW9uIFMoKXtpZihQKXJldHVybiBWO1A9ITA7dHJ5e2NvbnN0IEN0PUsubmF2aWdhdG9yLnVzZXJBZ2VudDsoLTEhPT1DdC5pbmRleE9mKCJNU0lFICIpfHwtMSE9PUN0LmluZGV4T2YoIlRyaWRlbnQvIil8fC0xIT09Q3QuaW5kZXhPZigiRWRnZS8i''@;'; put 'put ''KSkmJihWPSEwKX1jYXRjaChDdCl7fXJldHVybiBWfVpvbmUuX19sb2FkX3BhdGNoKCJab25lQXdhcmVQcm9taXNlIiwoQ3QsZnQsSHQpPT57Y29uc3QgR2U9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixVZT1PYmplY3QuZGVmaW5lUHJvcGVydHksanQ9SHQuc3ltYm9sLEp0PVtd''@;'; put 'put ''LGduPSEwPT09Q3RbanQoIkRJU0FCTEVfV1JBUFBJTkdfVU5DQVVHSFRfUFJPTUlTRV9SRUpFQ1RJT04iKV0sZG49anQoIlByb21pc2UiKSx5bj1qdCgidGhlbiIpO0h0Lm9uVW5oYW5kbGVkRXJyb3I9ZW49PntpZihIdC5zaG93VW5jYXVnaHRFcnJvcigpKXtjb25zdCBJbj1lbiYmZW4ucmVq''@;'; put 'put ''ZWN0aW9uO0luP2NvbnNvbGUuZXJyb3IoIlVuaGFuZGxlZCBQcm9taXNlIHJlamVjdGlvbjoiLEluIGluc3RhbmNlb2YgRXJyb3I/SW4ubWVzc2FnZTpJbiwiOyBab25lOiIsZW4uem9uZS5uYW1lLCI7IFRhc2s6Iixlbi50YXNrJiZlbi50YXNrLnNvdXJjZSwiOyBWYWx1ZToiLEluLEluIGlu''@;'; put 'put ''c3RhbmNlb2YgRXJyb3I/SW4uc3RhY2s6dm9pZCAwKTpjb25zb2xlLmVycm9yKGVuKX19LEh0Lm1pY3JvdGFza0RyYWluRG9uZT0oKT0+e2Zvcig7SnQubGVuZ3RoOyl7Y29uc3QgZW49SnQuc2hpZnQoKTt0cnl7ZW4uem9uZS5ydW5HdWFyZGVkKCgpPT57dGhyb3cgZW4udGhyb3dPcmlnaW5h''@;'; put 'put ''bD9lbi5yZWplY3Rpb246ZW59KX1jYXRjaChJbil7Ym4oSW4pfX19O2NvbnN0IE5uPWp0KCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIpO2Z1bmN0aW9uIGJuKGVuKXtIdC5vblVuaGFuZGxlZEVycm9yKGVuKTt0cnl7Y29uc3QgSW49ZnRbTm5dOyJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBJbiYmSW4uY2FsbCh0aGlzLGVuKX1jYXRjaChJbil7fX1mdW5jdGlvbiBlcihlbil7cmV0dXJuIGVuJiZlbi50aGVufWZ1bmN0aW9uIHNyKGVuKXtyZXR1cm4gZW59ZnVuY3Rpb24gWG4oZW4pe3JldHVybiBjbi5yZWplY3QoZW4pfWNvbnN0IEZyPWp0KCJzdGF0ZSIpLHhyPWp0KCJ2YWx1''@;'; put 'put ''ZSIpLHF0PWp0KCJmaW5hbGx5IikscHI9anQoInBhcmVudFByb21pc2VWYWx1ZSIpLG5yPWp0KCJwYXJlbnRQcm9taXNlU3RhdGUiKSxxbj1udWxsLHBuPSExO2Z1bmN0aW9uIE50KGVuLEluKXtyZXR1cm4gSm49Pnt0cnl7dG4oZW4sSW4sSm4pfWNhdGNoKG9yKXt0bihlbiwhMSxvcil9fX1j''@;'; put 'put ''b25zdCBzbj1mdW5jdGlvbigpe2xldCBlbj0hMTtyZXR1cm4gZnVuY3Rpb24oSm4pe3JldHVybiBmdW5jdGlvbigpe2VufHwoZW49ITAsSm4uYXBwbHkobnVsbCxhcmd1bWVudHMpKX19fSx3bj1qdCgiY3VycmVudFRhc2tUcmFjZSIpO2Z1bmN0aW9uIHRuKGVuLEluLEpuKXtjb25zdCBvcj1z''@;'; put 'put ''bigpO2lmKGVuPT09Sm4pdGhyb3cgbmV3IFR5cGVFcnJvcigiUHJvbWlzZSByZXNvbHZlZCB3aXRoIGl0c2VsZiIpO2lmKGVuW0ZyXT09PXFuKXtsZXQgZ3I9bnVsbDt0cnl7KCJvYmplY3QiPT10eXBlb2YgSm58fCJmdW5jdGlvbiI9PXR5cGVvZiBKbikmJihncj1KbiYmSm4udGhlbil9Y2F0''@;'; put 'put ''Y2goS3Ipe3JldHVybiBvcigoKT0+e3RuKGVuLCExLEtyKX0pKCksZW59aWYoSW4hPT1wbiYmSm4gaW5zdGFuY2VvZiBjbiYmSm4uaGFzT3duUHJvcGVydHkoRnIpJiZKbi5oYXNPd25Qcm9wZXJ0eSh4cikmJkpuW0ZyXSE9PXFuKVRyKEpuKSx0bihlbixKbltGcl0sSm5beHJdKTtlbHNlIGlm''@;'; put 'put ''KEluIT09cG4mJiJmdW5jdGlvbiI9PXR5cGVvZiBncil0cnl7Z3IuY2FsbChKbixvcihOdChlbixJbikpLG9yKE50KGVuLCExKSkpfWNhdGNoKEtyKXtvcigoKT0+e3RuKGVuLCExLEtyKX0pKCl9ZWxzZXtlbltGcl09SW47Y29uc3QgS3I9ZW5beHJdO2lmKGVuW3hyXT1KbixlbltxdF09PT1x''@;'; put 'put ''dCYmITA9PT1JbiYmKGVuW0ZyXT1lbltucl0sZW5beHJdPWVuW3ByXSksSW49PT1wbiYmSm4gaW5zdGFuY2VvZiBFcnJvcil7Y29uc3QgVnI9ZnQuY3VycmVudFRhc2smJmZ0LmN1cnJlbnRUYXNrLmRhdGEmJmZ0LmN1cnJlbnRUYXNrLmRhdGEuX19jcmVhdGlvblRyYWNlX187VnImJlVlKEpu''@;'; put 'put ''LHduLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCx2YWx1ZTpWcn0pfWZvcihsZXQgVnI9MDtWcjxLci5sZW5ndGg7KUJuKGVuLEtyW1ZyKytdLEtyW1ZyKytdLEtyW1ZyKytdLEtyW1ZyKytdKTtpZigwPT1Lci5sZW5ndGgmJkluPT1wbil7ZW5bRnJdPTA7bGV0''@;'; put 'put ''IFZyPUpuO3RyeXt0aHJvdyBuZXcgRXJyb3IoIlVuY2F1Z2h0IChpbiBwcm9taXNlKTogIitmdW5jdGlvbiB5dChlbil7cmV0dXJuIGVuJiZlbi50b1N0cmluZz09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc/KGVuLmNvbnN0cnVjdG9yJiZlbi5jb25zdHJ1Y3Rvci5uYW1lfHwiIikrIjog''@;'; put 'put ''IitKU09OLnN0cmluZ2lmeShlbik6ZW4/ZW4udG9TdHJpbmcoKTpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZW4pfShKbikrKEpuJiZKbi5zdGFjaz8iXG4iK0puLnN0YWNrOiIiKSl9Y2F0Y2goaWkpe1ZyPWlpfWduJiYoVnIudGhyb3dPcmlnaW5hbD0hMCksVnIucmVqZWN0aW9u''@;'; put 'put ''PUpuLFZyLnByb21pc2U9ZW4sVnIuem9uZT1mdC5jdXJyZW50LFZyLnRhc2s9ZnQuY3VycmVudFRhc2ssSnQucHVzaChWciksSHQuc2NoZWR1bGVNaWNyb1Rhc2soKX19fXJldHVybiBlbn1jb25zdCB6bj1qdCgicmVqZWN0aW9uSGFuZGxlZEhhbmRsZXIiKTtmdW5jdGlvbiBUcihlbil7aWYo''@;'; put 'put ''MD09PWVuW0ZyXSl7dHJ5e2NvbnN0IEluPWZ0W3puXTtJbiYmImZ1bmN0aW9uIj09dHlwZW9mIEluJiZJbi5jYWxsKHRoaXMse3JlamVjdGlvbjplblt4cl0scHJvbWlzZTplbn0pfWNhdGNoKEluKXt9ZW5bRnJdPXBuO2ZvcihsZXQgSW49MDtJbjxKdC5sZW5ndGg7SW4rKyllbj09PUp0W0lu''@;'; put 'put ''XS5wcm9taXNlJiZKdC5zcGxpY2UoSW4sMSl9fWZ1bmN0aW9uIEJuKGVuLEluLEpuLG9yLGdyKXtUcihlbik7Y29uc3QgS3I9ZW5bRnJdLFZyPUtyPyJmdW5jdGlvbiI9PXR5cGVvZiBvcj9vcjpzcjoiZnVuY3Rpb24iPT10eXBlb2YgZ3I/Z3I6WG47SW4uc2NoZWR1bGVNaWNyb1Rhc2soIlBy''@;'; put 'put ''b21pc2UudGhlbiIsKCk9Pnt0cnl7Y29uc3QgaWk9ZW5beHJdLFJyPSEhSm4mJnF0PT09Sm5bcXRdO1JyJiYoSm5bcHJdPWlpLEpuW25yXT1Lcik7Y29uc3QgbGk9SW4ucnVuKFZyLHZvaWQgMCxSciYmVnIhPT1YbiYmVnIhPT1zcj9bXTpbaWldKTt0bihKbiwhMCxsaSl9Y2F0Y2goaWkpe3Ru''@;'; put 'put ''KEpuLCExLGlpKX19LEpuKX1jb25zdCBtbj1mdW5jdGlvbigpe30sdW49Q3QuQWdncmVnYXRlRXJyb3I7Y2xhc3MgY257c3RhdGljIHRvU3RyaW5nKCl7cmV0dXJuImZ1bmN0aW9uIFpvbmVBd2FyZVByb21pc2UoKSB7IFtuYXRpdmUgY29kZV0gfSJ9c3RhdGljIHJlc29sdmUoSW4pe3JldHVy''@;'; put 'put ''biB0bihuZXcgdGhpcyhudWxsKSwhMCxJbil9c3RhdGljIHJlamVjdChJbil7cmV0dXJuIHRuKG5ldyB0aGlzKG51bGwpLHBuLEluKX1zdGF0aWMgYW55KEluKXtpZighSW58fCJmdW5jdGlvbiIhPXR5cGVvZiBJbltTeW1ib2wuaXRlcmF0b3JdKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcg''@;'; put 'put ''dW4oW10sIkFsbCBwcm9taXNlcyB3ZXJlIHJlamVjdGVkIikpO2NvbnN0IEpuPVtdO2xldCBvcj0wO3RyeXtmb3IobGV0IFZyIG9mIEluKW9yKyssSm4ucHVzaChjbi5yZXNvbHZlKFZyKSl9Y2F0Y2goVnIpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgdW4oW10sIkFsbCBwcm9taXNlcyB3''@;'; put 'put ''ZXJlIHJlamVjdGVkIikpfWlmKDA9PT1vcilyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IHVuKFtdLCJBbGwgcHJvbWlzZXMgd2VyZSByZWplY3RlZCIpKTtsZXQgZ3I9ITE7Y29uc3QgS3I9W107cmV0dXJuIG5ldyBjbigoVnIsaWkpPT57Zm9yKGxldCBScj0wO1JyPEpuLmxlbmd0aDtScisr''@;'; put 'put ''KUpuW1JyXS50aGVuKGxpPT57Z3J8fChncj0hMCxWcihsaSkpfSxsaT0+e0tyLnB1c2gobGkpLG9yLS0sMD09PW9yJiYoZ3I9ITAsaWkobmV3IHVuKEtyLCJBbGwgcHJvbWlzZXMgd2VyZSByZWplY3RlZCIpKSl9KX0pfXN0YXRpYyByYWNlKEluKXtsZXQgSm4sb3IsZ3I9bmV3IHRoaXMoKGlp''@;'; put 'put ''LFJyKT0+e0puPWlpLG9yPVJyfSk7ZnVuY3Rpb24gS3IoaWkpe0puKGlpKX1mdW5jdGlvbiBWcihpaSl7b3IoaWkpfWZvcihsZXQgaWkgb2YgSW4pZXIoaWkpfHwoaWk9dGhpcy5yZXNvbHZlKGlpKSksaWkudGhlbihLcixWcik7cmV0dXJuIGdyfXN0YXRpYyBhbGwoSW4pe3JldHVybiBjbi5h''@;'; put 'put ''bGxXaXRoQ2FsbGJhY2soSW4pfXN0YXRpYyBhbGxTZXR0bGVkKEluKXtyZXR1cm4odGhpcyYmdGhpcy5wcm90b3R5cGUgaW5zdGFuY2VvZiBjbj90aGlzOmNuKS5hbGxXaXRoQ2FsbGJhY2soSW4se3RoZW5DYWxsYmFjazpvcj0+KHtzdGF0dXM6ImZ1bGZpbGxlZCIsdmFsdWU6b3J9KSxlcnJv''@;'; put 'put ''ckNhbGxiYWNrOm9yPT4oe3N0YXR1czoicmVqZWN0ZWQiLHJlYXNvbjpvcn0pfSl9c3RhdGljIGFsbFdpdGhDYWxsYmFjayhJbixKbil7bGV0IG9yLGdyLEtyPW5ldyB0aGlzKChsaSxNaSk9Pntvcj1saSxncj1NaX0pLFZyPTIsaWk9MDtjb25zdCBScj1bXTtmb3IobGV0IGxpIG9mIEluKXtl''@;'; put 'put ''cihsaSl8fChsaT10aGlzLnJlc29sdmUobGkpKTtjb25zdCBNaT1paTt0cnl7bGkudGhlbihvMD0+e1JyW01pXT1Kbj9Kbi50aGVuQ2FsbGJhY2sobzApOm8wLFZyLS0sMD09PVZyJiZvcihScil9LG8wPT57Sm4/KFJyW01pXT1Kbi5lcnJvckNhbGxiYWNrKG8wKSxWci0tLDA9PT1WciYmb3Io''@;'; put 'put ''UnIpKTpncihvMCl9KX1jYXRjaChvMCl7Z3IobzApfVZyKyssaWkrK31yZXR1cm4gVnItPTIsMD09PVZyJiZvcihSciksS3J9Y29uc3RydWN0b3IoSW4pe2NvbnN0IEpuPXRoaXM7aWYoIShKbiBpbnN0YW5jZW9mIGNuKSl0aHJvdyBuZXcgRXJyb3IoIk11c3QgYmUgYW4gaW5zdGFuY2VvZiBQ''@;'; put 'put ''cm9taXNlLiIpO0puW0ZyXT1xbixKblt4cl09W107dHJ5e2NvbnN0IG9yPXNuKCk7SW4mJkluKG9yKE50KEpuLCEwKSksb3IoTnQoSm4scG4pKSl9Y2F0Y2gob3Ipe3RuKEpuLCExLG9yKX19Z2V0W1N5bWJvbC50b1N0cmluZ1RhZ10oKXtyZXR1cm4iUHJvbWlzZSJ9Z2V0W1N5bWJvbC5zcGVj''@;'; put 'put ''aWVzXSgpe3JldHVybiBjbn10aGVuKEluLEpuKXt2YXIgb3I7bGV0IGdyPW51bGw9PT0ob3I9dGhpcy5jb25zdHJ1Y3Rvcil8fHZvaWQgMD09PW9yP3ZvaWQgMDpvcltTeW1ib2wuc3BlY2llc107KCFncnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGdyKSYmKGdyPXRoaXMuY29uc3RydWN0b3J8fGNu''@;'; put 'put ''KTtjb25zdCBLcj1uZXcgZ3IobW4pLFZyPWZ0LmN1cnJlbnQ7cmV0dXJuIHRoaXNbRnJdPT1xbj90aGlzW3hyXS5wdXNoKFZyLEtyLEluLEpuKTpCbih0aGlzLFZyLEtyLEluLEpuKSxLcn1jYXRjaChJbil7cmV0dXJuIHRoaXMudGhlbihudWxsLEluKX1maW5hbGx5KEluKXt2YXIgSm47bGV0''@;'; put 'put ''IG9yPW51bGw9PT0oSm49dGhpcy5jb25zdHJ1Y3Rvcil8fHZvaWQgMD09PUpuP3ZvaWQgMDpKbltTeW1ib2wuc3BlY2llc107KCFvcnx8ImZ1bmN0aW9uIiE9dHlwZW9mIG9yKSYmKG9yPWNuKTtjb25zdCBncj1uZXcgb3IobW4pO2dyW3F0XT1xdDtjb25zdCBLcj1mdC5jdXJyZW50O3JldHVy''@;'; put 'put ''biB0aGlzW0ZyXT09cW4/dGhpc1t4cl0ucHVzaChLcixncixJbixJbik6Qm4odGhpcyxLcixncixJbixJbiksZ3J9fWNuLnJlc29sdmU9Y24ucmVzb2x2ZSxjbi5yZWplY3Q9Y24ucmVqZWN0LGNuLnJhY2U9Y24ucmFjZSxjbi5hbGw9Y24uYWxsO2NvbnN0IF9uPUN0W2RuXT1DdC5Qcm9taXNl''@;'; put 'put ''O0N0LlByb21pc2U9Y247Y29uc3QgR3Q9anQoInRoZW5QYXRjaGVkIik7ZnVuY3Rpb24ga24oZW4pe2NvbnN0IEluPWVuLnByb3RvdHlwZSxKbj1HZShJbiwidGhlbiIpO2lmKEpuJiYoITE9PT1Kbi53cml0YWJsZXx8IUpuLmNvbmZpZ3VyYWJsZSkpcmV0dXJuO2NvbnN0IG9yPUluLnRoZW47''@;'; put 'put ''SW5beW5dPW9yLGVuLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGdyLEtyKXtyZXR1cm4gbmV3IGNuKChpaSxScik9Pntvci5jYWxsKHRoaXMsaWksUnIpfSkudGhlbihncixLcil9LGVuW0d0XT0hMH1yZXR1cm4gSHQucGF0Y2hUaGVuPWtuLF9uJiYoa24oX24pLGVlKEN0LCJmZXRjaCIsZW49''@;'; put 'put ''PmZ1bmN0aW9uIFZuKGVuKXtyZXR1cm4gZnVuY3Rpb24oSW4sSm4pe2xldCBvcj1lbi5hcHBseShJbixKbik7aWYob3IgaW5zdGFuY2VvZiBjbilyZXR1cm4gb3I7bGV0IGdyPW9yLmNvbnN0cnVjdG9yO3JldHVybiBncltHdF18fGtuKGdyKSxvcn19KGVuKSkpLFByb21pc2VbZnQuX19zeW1i''@;'; put 'put ''b2xfXygidW5jYXVnaHRQcm9taXNlRXJyb3JzIildPUp0LGNufSksWm9uZS5fX2xvYWRfcGF0Y2goInRvU3RyaW5nIixDdD0+e2NvbnN0IGZ0PUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyxIdD1OKCJPcmlnaW5hbERlbGVnYXRlIiksR2U9TigiUHJvbWlzZSIpLFVlPU4oIkVycm9yIiks''@;'; put 'put ''eXQ9ZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcyl7Y29uc3QgZG49dGhpc1tIdF07aWYoZG4pcmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGRuP2Z0LmNhbGwoZG4pOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkbik7aWYodGhpcz09PVByb21pc2Upe2NvbnN0''@;'; put 'put ''IHluPUN0W0dlXTtpZih5bilyZXR1cm4gZnQuY2FsbCh5bil9aWYodGhpcz09PUVycm9yKXtjb25zdCB5bj1DdFtVZV07aWYoeW4pcmV0dXJuIGZ0LmNhbGwoeW4pfX1yZXR1cm4gZnQuY2FsbCh0aGlzKX07eXRbSHRdPWZ0LEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz15dDtjb25zdCBq''@;'; put 'put ''dD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO09iamVjdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgUHJvbWlzZSYmdGhpcyBpbnN0YW5jZW9mIFByb21pc2U/IltvYmplY3QgUHJvbWlzZV0iOmp0LmNhbGwodGhpcyl9fSk7bGV0IEY9''@;'; put 'put ''ITE7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cpdHJ5e2NvbnN0IEN0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe0Y9ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLEN0LEN0KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0''@;'; put 'put ''ZW5lcigidGVzdCIsQ3QsQ3QpfWNhdGNoKEN0KXtGPSExfWNvbnN0IHllPXt1c2VHOiEwfSxDZT17fSxEZT17fSxQZT1uZXcgUmVnRXhwKCJeIithZSsiKFxcdyspKHRydWV8ZmFsc2UpJCIpLFFlPU4oInByb3BhZ2F0aW9uU3RvcHBlZCIpO2Z1bmN0aW9uICRlKEN0LGZ0KXtjb25zdCBIdD0o''@;'; put 'put ''ZnQ/ZnQoQ3QpOkN0KStyZSxHZT0oZnQ/ZnQoQ3QpOkN0KStqLFVlPWFlK0h0LHl0PWFlK0dlO0NlW0N0XT17fSxDZVtDdF1bcmVdPVVlLENlW0N0XVtqXT15dH1mdW5jdGlvbiBndChDdCxmdCxIdCxHZSl7Y29uc3QgVWU9R2UmJkdlLmFkZHx8RSx5dD1HZSYmR2Uucm18fEVlLGp0PUdlJiZH''@;'; put 'put ''ZS5saXN0ZW5lcnN8fCJldmVudExpc3RlbmVycyIsSnQ9R2UmJkdlLnJtQWxsfHwicmVtb3ZlQWxsTGlzdGVuZXJzIixnbj1OKFVlKSxkbj0iLiIrVWUrIjoiLE5uPWZ1bmN0aW9uKHhyLHF0LHByKXtpZih4ci5pc1JlbW92ZWQpcmV0dXJuO2NvbnN0IG5yPXhyLmNhbGxiYWNrO2xldCBBbjsi''@;'; put 'put ''b2JqZWN0Ij09dHlwZW9mIG5yJiZuci5oYW5kbGVFdmVudCYmKHhyLmNhbGxiYWNrPVd0PT5uci5oYW5kbGVFdmVudChXdCkseHIub3JpZ2luYWxEZWxlZ2F0ZT1ucik7dHJ5e3hyLmludm9rZSh4cixxdCxbcHJdKX1jYXRjaChXdCl7QW49V3R9Y29uc3QgcW49eHIub3B0aW9ucztyZXR1cm4g''@;'; put 'put ''cW4mJiJvYmplY3QiPT10eXBlb2YgcW4mJnFuLm9uY2UmJnF0W3l0XS5jYWxsKHF0LHByLnR5cGUseHIub3JpZ2luYWxEZWxlZ2F0ZT94ci5vcmlnaW5hbERlbGVnYXRlOnhyLmNhbGxiYWNrLHFuKSxBbn07ZnVuY3Rpb24gYm4oeHIscXQscHIpe2lmKCEocXQ9cXR8fEN0LmV2ZW50KSlyZXR1''@;'; put 'put ''cm47Y29uc3QgbnI9eHJ8fHF0LnRhcmdldHx8Q3QsQW49bnJbQ2VbcXQudHlwZV1bcHI/ajpyZV1dO2lmKEFuKXtjb25zdCBxbj1bXTtpZigxPT09QW4ubGVuZ3RoKXtjb25zdCBXdD1ObihBblswXSxucixxdCk7V3QmJnFuLnB1c2goV3QpfWVsc2V7Y29uc3QgV3Q9QW4uc2xpY2UoKTtmb3Io''@;'; put 'put ''bGV0IHBuPTA7cG48V3QubGVuZ3RoJiYoIXF0fHwhMCE9PXF0W1FlXSk7cG4rKyl7Y29uc3QgS249Tm4oV3RbcG5dLG5yLHF0KTtLbiYmcW4ucHVzaChLbil9fWlmKDE9PT1xbi5sZW5ndGgpdGhyb3cgcW5bMF07Zm9yKGxldCBXdD0wO1d0PHFuLmxlbmd0aDtXdCsrKXtjb25zdCBwbj1xbltX''@;'; put 'put ''dF07ZnQubmF0aXZlU2NoZWR1bGVNaWNyb1Rhc2soKCk9Pnt0aHJvdyBwbn0pfX19Y29uc3QgZXI9ZnVuY3Rpb24oeHIpe3JldHVybiBibih0aGlzLHhyLCExKX0sc3I9ZnVuY3Rpb24oeHIpe3JldHVybiBibih0aGlzLHhyLCEwKX07ZnVuY3Rpb24gWG4oeHIscXQpe2lmKCF4cilyZXR1cm4h''@;'; put 'put ''MTtsZXQgcHI9ITA7cXQmJnZvaWQgMCE9PXF0LnVzZUcmJihwcj1xdC51c2VHKTtjb25zdCBucj1xdCYmcXQudmg7bGV0IEFuPSEwO3F0JiZ2b2lkIDAhPT1xdC5jaGtEdXAmJihBbj1xdC5jaGtEdXApO2xldCBxbj0hMTtxdCYmdm9pZCAwIT09cXQucnQmJihxbj1xdC5ydCk7bGV0IFd0PXhy''@;'; put 'put ''O2Zvcig7V3QmJiFXdC5oYXNPd25Qcm9wZXJ0eShVZSk7KVd0PUwoV3QpO2lmKCFXdCYmeHJbVWVdJiYoV3Q9eHIpLCFXdHx8V3RbZ25dKXJldHVybiExO2NvbnN0IHBuPXF0JiZxdC5ldmVudE5hbWVUb1N0cmluZyxLbj17fSxOdD1XdFtnbl09V3RbVWVdLHNuPVd0W04oeXQpXT1XdFt5dF0s''@;'; put 'put ''VW49V3RbTihqdCldPVd0W2p0XSx3bj1XdFtOKEp0KV09V3RbSnRdO2xldCB0bjtmdW5jdGlvbiB6bihKbixvcil7cmV0dXJuIUYmJiJvYmplY3QiPT10eXBlb2YgSm4mJkpuPyEhSm4uY2FwdHVyZTpGJiZvcj8iYm9vbGVhbiI9PXR5cGVvZiBKbj97Y2FwdHVyZTpKbixwYXNzaXZlOiEwfTpK''@;'; put 'put ''bj8ib2JqZWN0Ij09dHlwZW9mIEpuJiYhMSE9PUpuLnBhc3NpdmU/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LEpuKSx7cGFzc2l2ZTohMH0pOkpuOntwYXNzaXZlOiEwfTpKbn1xdCYmcXQucHJlcGVuZCYmKHRuPVd0W04ocXQucHJlcGVuZCldPVd0W3F0LnByZXBlbmRdKTtjb25z''@;'; put 'put ''dCBjbj1wcj9mdW5jdGlvbihKbil7aWYoIUtuLmlzRXhpc3RpbmcpcmV0dXJuIE50LmNhbGwoS24udGFyZ2V0LEtuLmV2ZW50TmFtZSxLbi5jYXB0dXJlP3NyOmVyLEtuLm9wdGlvbnMpfTpmdW5jdGlvbihKbil7cmV0dXJuIE50LmNhbGwoS24udGFyZ2V0LEtuLmV2ZW50TmFtZSxKbi5pbnZv''@;'; put 'put ''a2UsS24ub3B0aW9ucyl9LF9uPXByP2Z1bmN0aW9uKEpuKXtpZighSm4uaXNSZW1vdmVkKXtjb25zdCBvcj1DZVtKbi5ldmVudE5hbWVdO2xldCBncjtvciYmKGdyPW9yW0puLmNhcHR1cmU/ajpyZV0pO2NvbnN0IEtyPWdyJiZKbi50YXJnZXRbZ3JdO2lmKEtyKWZvcihsZXQgVnI9MDtWcjxL''@;'; put 'put ''ci5sZW5ndGg7VnIrKylpZihLcltWcl09PT1Kbil7S3Iuc3BsaWNlKFZyLDEpLEpuLmlzUmVtb3ZlZD0hMCwwPT09S3IubGVuZ3RoJiYoSm4uYWxsUmVtb3ZlZD0hMCxKbi50YXJnZXRbZ3JdPW51bGwpO2JyZWFrfX1pZihKbi5hbGxSZW1vdmVkKXJldHVybiBzbi5jYWxsKEpuLnRhcmdldCxK''@;'; put 'put ''bi5ldmVudE5hbWUsSm4uY2FwdHVyZT9zcjplcixKbi5vcHRpb25zKX06ZnVuY3Rpb24oSm4pe3JldHVybiBzbi5jYWxsKEpuLnRhcmdldCxKbi5ldmVudE5hbWUsSm4uaW52b2tlLEpuLm9wdGlvbnMpfSxrbj1xdCYmcXQuZGlmZj9xdC5kaWZmOmZ1bmN0aW9uKEpuLG9yKXtjb25zdCBncj10''@;'; put 'put ''eXBlb2Ygb3I7cmV0dXJuImZ1bmN0aW9uIj09PWdyJiZKbi5jYWxsYmFjaz09PW9yfHwib2JqZWN0Ij09PWdyJiZKbi5vcmlnaW5hbERlbGVnYXRlPT09b3J9LFZuPVpvbmVbTigiVU5QQVRDSEVEX0VWRU5UUyIpXSxlbj1DdFtOKCJQQVNTSVZFX0VWRU5UUyIpXSxJbj1mdW5jdGlvbihKbixv''@;'; put 'put ''cixncixLcixWcj0hMSxpaT0hMSl7cmV0dXJuIGZ1bmN0aW9uKCl7Y29uc3QgUnI9dGhpc3x8Q3Q7bGV0IGxpPWFyZ3VtZW50c1swXTtxdCYmcXQudHJhbnNmZXJFdmVudE5hbWUmJihsaT1xdC50cmFuc2ZlckV2ZW50TmFtZShsaSkpO2xldCBNaT1hcmd1bWVudHNbMV07aWYoIU1pKXJldHVy''@;'; put 'put ''biBKbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoQWUmJiJ1bmNhdWdodEV4Y2VwdGlvbiI9PT1saSlyZXR1cm4gSm4uYXBwbHkodGhpcyxhcmd1bWVudHMpO2xldCBvMD0hMTtpZigiZnVuY3Rpb24iIT10eXBlb2YgTWkpe2lmKCFNaS5oYW5kbGVFdmVudClyZXR1cm4gSm4uYXBwbHkodGhp''@;'; put 'put ''cyxhcmd1bWVudHMpO28wPSEwfWlmKG5yJiYhbnIoSm4sTWksUnIsYXJndW1lbnRzKSlyZXR1cm47Y29uc3QgbjA9RiYmISFlbiYmLTEhPT1lbi5pbmRleE9mKGxpKSxkMD16bihhcmd1bWVudHNbMl0sbjApO2lmKFZuKWZvcihsZXQgQWk9MDtBaTxWbi5sZW5ndGg7QWkrKylpZihsaT09PVZu''@;'; put 'put ''W0FpXSlyZXR1cm4gbjA/Sm4uY2FsbChScixsaSxNaSxkMCk6Sm4uYXBwbHkodGhpcyxhcmd1bWVudHMpO2NvbnN0IG0wPSEhZDAmJigiYm9vbGVhbiI9PXR5cGVvZiBkMHx8ZDAuY2FwdHVyZSksRzA9ISghZDB8fCJvYmplY3QiIT10eXBlb2YgZDApJiZkMC5vbmNlLERpPVpvbmUuY3VycmVu''@;'; put 'put ''dDtsZXQgVzA9Q2VbbGldO1cwfHwoJGUobGkscG4pLFcwPUNlW2xpXSk7Y29uc3QgRW89VzBbbTA/ajpyZV07bGV0IGxsLHFvPVJyW0VvXSxjYT0hMTtpZihxbyl7aWYoY2E9ITAsQW4pZm9yKGxldCBBaT0wO0FpPHFvLmxlbmd0aDtBaSsrKWlmKGtuKHFvW0FpXSxNaSkpcmV0dXJufWVsc2Ug''@;'; put 'put ''cW89UnJbRW9dPVtdO2NvbnN0IFFpPVJyLmNvbnN0cnVjdG9yLm5hbWUsTWE9RGVbUWldO01hJiYobGw9TWFbbGldKSxsbHx8KGxsPVFpK29yKyhwbj9wbihsaSk6bGkpKSxLbi5vcHRpb25zPWQwLEcwJiYoS24ub3B0aW9ucy5vbmNlPSExKSxLbi50YXJnZXQ9UnIsS24uY2FwdHVyZT1tMCxL''@;'; put 'put ''bi5ldmVudE5hbWU9bGksS24uaXNFeGlzdGluZz1jYTtjb25zdCBubD1wcj95ZTp2b2lkIDA7bmwmJihubC50YXNrRGF0YT1Lbik7Y29uc3QgZ2w9RGkuc2NoZWR1bGVFdmVudFRhc2sobGwsTWksbmwsZ3IsS3IpO3JldHVybiBLbi50YXJnZXQ9bnVsbCxubCYmKG5sLnRhc2tEYXRhPW51bGwp''@;'; put 'put ''LEcwJiYoZDAub25jZT0hMCksIUYmJiJib29sZWFuIj09dHlwZW9mIGdsLm9wdGlvbnN8fChnbC5vcHRpb25zPWQwKSxnbC50YXJnZXQ9UnIsZ2wuY2FwdHVyZT1tMCxnbC5ldmVudE5hbWU9bGksbzAmJihnbC5vcmlnaW5hbERlbGVnYXRlPU1pKSxpaT9xby51bnNoaWZ0KGdsKTpxby5wdXNo''@;'; put 'put ''KGdsKSxWcj9Scjp2b2lkIDB9fTtyZXR1cm4gV3RbVWVdPUluKE50LGRuLGNuLF9uLHFuKSx0biYmKFd0LnByZXBlbmRMaXN0ZW5lcj1Jbih0biwiLnByZXBlbmRMaXN0ZW5lcjoiLGZ1bmN0aW9uKEpuKXtyZXR1cm4gdG4uY2FsbChLbi50YXJnZXQsS24uZXZlbnROYW1lLEpuLmludm9rZSxL''@;'; put 'put ''bi5vcHRpb25zKX0sX24scW4sITApKSxXdFt5dF09ZnVuY3Rpb24oKXtjb25zdCBKbj10aGlzfHxDdDtsZXQgb3I9YXJndW1lbnRzWzBdO3F0JiZxdC50cmFuc2ZlckV2ZW50TmFtZSYmKG9yPXF0LnRyYW5zZmVyRXZlbnROYW1lKG9yKSk7Y29uc3QgZ3I9YXJndW1lbnRzWzJdLEtyPSEhZ3Im''@;'; put 'put ''JigiYm9vbGVhbiI9PXR5cGVvZiBncnx8Z3IuY2FwdHVyZSksVnI9YXJndW1lbnRzWzFdO2lmKCFWcilyZXR1cm4gc24uYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKG5yJiYhbnIoc24sVnIsSm4sYXJndW1lbnRzKSlyZXR1cm47Y29uc3QgaWk9Q2Vbb3JdO2xldCBScjtpaSYmKFJyPWlpW0ty''@;'; put 'put ''P2o6cmVdKTtjb25zdCBsaT1SciYmSm5bUnJdO2lmKGxpKWZvcihsZXQgTWk9MDtNaTxsaS5sZW5ndGg7TWkrKyl7Y29uc3QgbzA9bGlbTWldO2lmKGtuKG8wLFZyKSlyZXR1cm4gbGkuc3BsaWNlKE1pLDEpLG8wLmlzUmVtb3ZlZD0hMCwwPT09bGkubGVuZ3RoJiYobzAuYWxsUmVtb3ZlZD0h''@;'; put 'put ''MCxKbltScl09bnVsbCwic3RyaW5nIj09dHlwZW9mIG9yKSYmKEpuW2FlKyJPTl9QUk9QRVJUWSIrb3JdPW51bGwpLG8wLnpvbmUuY2FuY2VsVGFzayhvMCkscW4/Sm46dm9pZCAwfXJldHVybiBzbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LFd0W2p0XT1mdW5jdGlvbigpe2NvbnN0IEpuPXRo''@;'; put 'put ''aXN8fEN0O2xldCBvcj1hcmd1bWVudHNbMF07cXQmJnF0LnRyYW5zZmVyRXZlbnROYW1lJiYob3I9cXQudHJhbnNmZXJFdmVudE5hbWUob3IpKTtjb25zdCBncj1bXSxLcj13dChKbixwbj9wbihvcik6b3IpO2ZvcihsZXQgVnI9MDtWcjxLci5sZW5ndGg7VnIrKyl7Y29uc3QgaWk9S3JbVnJd''@;'; put 'put ''O2dyLnB1c2goaWkub3JpZ2luYWxEZWxlZ2F0ZT9paS5vcmlnaW5hbERlbGVnYXRlOmlpLmNhbGxiYWNrKX1yZXR1cm4gZ3J9LFd0W0p0XT1mdW5jdGlvbigpe2NvbnN0IEpuPXRoaXN8fEN0O2xldCBvcj1hcmd1bWVudHNbMF07aWYob3Ipe3F0JiZxdC50cmFuc2ZlckV2ZW50TmFtZSYmKG9y''@;'; put 'put ''PXF0LnRyYW5zZmVyRXZlbnROYW1lKG9yKSk7Y29uc3QgZ3I9Q2Vbb3JdO2lmKGdyKXtjb25zdCBpaT1KbltncltyZV1dLFJyPUpuW2dyW2pdXTtpZihpaSl7Y29uc3QgbGk9aWkuc2xpY2UoKTtmb3IobGV0IE1pPTA7TWk8bGkubGVuZ3RoO01pKyspe2NvbnN0IG8wPWxpW01pXTt0aGlzW3l0''@;'; put 'put ''XS5jYWxsKHRoaXMsb3IsbzAub3JpZ2luYWxEZWxlZ2F0ZT9vMC5vcmlnaW5hbERlbGVnYXRlOm8wLmNhbGxiYWNrLG8wLm9wdGlvbnMpfX1pZihScil7Y29uc3QgbGk9UnIuc2xpY2UoKTtmb3IobGV0IE1pPTA7TWk8bGkubGVuZ3RoO01pKyspe2NvbnN0IG8wPWxpW01pXTt0aGlzW3l0XS5j''@;'; put 'put ''YWxsKHRoaXMsb3IsbzAub3JpZ2luYWxEZWxlZ2F0ZT9vMC5vcmlnaW5hbERlbGVnYXRlOm8wLmNhbGxiYWNrLG8wLm9wdGlvbnMpfX19fWVsc2V7Y29uc3QgZ3I9T2JqZWN0LmtleXMoSm4pO2ZvcihsZXQgS3I9MDtLcjxnci5sZW5ndGg7S3IrKyl7Y29uc3QgaWk9UGUuZXhlYyhncltLcl0p''@;'; put 'put ''O2xldCBScj1paSYmaWlbMV07UnImJiJyZW1vdmVMaXN0ZW5lciIhPT1SciYmdGhpc1tKdF0uY2FsbCh0aGlzLFJyKX10aGlzW0p0XS5jYWxsKHRoaXMsInJlbW92ZUxpc3RlbmVyIil9aWYocW4pcmV0dXJuIHRoaXN9LHgoV3RbVWVdLE50KSx4KFd0W3l0XSxzbiksd24mJngoV3RbSnRdLHdu''@;'; put 'put ''KSxVbiYmeChXdFtqdF0sVW4pLCEwfWxldCBGcj1bXTtmb3IobGV0IHhyPTA7eHI8SHQubGVuZ3RoO3hyKyspRnJbeHJdPVhuKEh0W3hyXSxHZSk7cmV0dXJuIEZyfWZ1bmN0aW9uIHd0KEN0LGZ0KXtpZighZnQpe2NvbnN0IHl0PVtdO2ZvcihsZXQganQgaW4gQ3Qpe2NvbnN0IEp0PVBlLmV4''@;'; put 'put ''ZWMoanQpO2xldCBnbj1KdCYmSnRbMV07aWYoZ24mJighZnR8fGduPT09ZnQpKXtjb25zdCBkbj1DdFtqdF07aWYoZG4pZm9yKGxldCB5bj0wO3luPGRuLmxlbmd0aDt5bisrKXl0LnB1c2goZG5beW5dKX19cmV0dXJuIHl0fWxldCBIdD1DZVtmdF07SHR8fCgkZShmdCksSHQ9Q2VbZnRdKTtj''@;'; put 'put ''b25zdCBHZT1DdFtIdFtyZV1dLFVlPUN0W0h0W2pdXTtyZXR1cm4gR2U/VWU/R2UuY29uY2F0KFVlKTpHZS5zbGljZSgpOlVlP1VlLnNsaWNlKCk6W119ZnVuY3Rpb24gbXQoQ3QsZnQpe2NvbnN0IEh0PUN0LkV2ZW50O0h0JiZIdC5wcm90b3R5cGUmJmZ0LnBhdGNoTWV0aG9kKEh0LnByb3Rv''@;'; put 'put ''dHlwZSwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIixHZT0+ZnVuY3Rpb24oVWUseXQpe1VlW1FlXT0hMCxHZSYmR2UuYXBwbHkoVWUseXQpfSl9ZnVuY3Rpb24gdnQoQ3QsZnQsSHQsR2UsVWUpe2NvbnN0IHl0PVpvbmUuX19zeW1ib2xfXyhHZSk7aWYoZnRbeXRdKXJldHVybjtjb25zdCBq''@;'; put 'put ''dD1mdFt5dF09ZnRbR2VdO2Z0W0dlXT1mdW5jdGlvbihKdCxnbixkbil7cmV0dXJuIGduJiZnbi5wcm90b3R5cGUmJlVlLmZvckVhY2goZnVuY3Rpb24oeW4pe2NvbnN0IGxuPWAke0h0fS4ke0dlfTo6YCt5bixObj1nbi5wcm90b3R5cGU7dHJ5e2lmKE5uLmhhc093blByb3BlcnR5KHluKSl7''@;'; put 'put ''Y29uc3QgYm49Q3QuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE5uLHluKTtibiYmYm4udmFsdWU/KGJuLnZhbHVlPUN0LndyYXBXaXRoQ3VycmVudFpvbmUoYm4udmFsdWUsbG4pLEN0Ll9yZWRlZmluZVByb3BlcnR5KGduLnByb3RvdHlwZSx5bixibikpOk5uW3luXSYmKE5uW3lu''@;'; put 'put ''XT1DdC53cmFwV2l0aEN1cnJlbnRab25lKE5uW3luXSxsbikpfWVsc2UgTm5beW5dJiYoTm5beW5dPUN0LndyYXBXaXRoQ3VycmVudFpvbmUoTm5beW5dLGxuKSl9Y2F0Y2goYm4pe319KSxqdC5jYWxsKGZ0LEp0LGduLGRuKX0sQ3QuYXR0YWNoT3JpZ2luVG9QYXRjaGVkKGZ0W0dlXSxqdCl9''@;'; put 'put ''ZnVuY3Rpb24gQXQoQ3QsZnQsSHQpe2lmKCFIdHx8MD09PUh0Lmxlbmd0aClyZXR1cm4gZnQ7Y29uc3QgR2U9SHQuZmlsdGVyKHl0PT55dC50YXJnZXQ9PT1DdCk7aWYoIUdlfHwwPT09R2UubGVuZ3RoKXJldHVybiBmdDtjb25zdCBVZT1HZVswXS5pZ25vcmVQcm9wZXJ0aWVzO3JldHVybiBm''@;'; put 'put ''dC5maWx0ZXIoeXQ9Pi0xPT09VWUuaW5kZXhPZih5dCkpfWZ1bmN0aW9uIGh0KEN0LGZ0LEh0LEdlKXtDdCYmaGUoQ3QsQXQoQ3QsZnQsSHQpLEdlKX1mdW5jdGlvbiBCdChDdCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEN0KS5maWx0ZXIoZnQ9PmZ0LnN0YXJ0c1dpdGgo''@;'; put 'put ''Im9uIikmJmZ0Lmxlbmd0aD4yKS5tYXAoZnQ9PmZ0LnN1YnN0cmluZygyKSl9Wm9uZS5fX2xvYWRfcGF0Y2goInV0aWwiLChDdCxmdCxIdCk9Pntjb25zdCBHZT1CdChDdCk7SHQucGF0Y2hPblByb3BlcnRpZXM9aGUsSHQucGF0Y2hNZXRob2Q9ZWUsSHQuYmluZEFyZ3VtZW50cz1vZSxIdC5w''@;'; put 'put ''YXRjaE1hY3JvVGFzaz1uZTtjb25zdCBVZT1mdC5fX3N5bWJvbF9fKCJCTEFDS19MSVNURURfRVZFTlRTIikseXQ9ZnQuX19zeW1ib2xfXygiVU5QQVRDSEVEX0VWRU5UUyIpO0N0W3l0XSYmKEN0W1VlXT1DdFt5dF0pLEN0W1VlXSYmKGZ0W1VlXT1mdFt5dF09Q3RbVWVdKSxIdC5wYXRjaEV2''@;'; put 'put ''ZW50UHJvdG90eXBlPW10LEh0LnBhdGNoRXZlbnRUYXJnZXQ9Z3QsSHQuaXNJRU9yRWRnZT1TLEh0Lk9iamVjdERlZmluZVByb3BlcnR5PUplLEh0Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcj1YZSxIdC5PYmplY3RDcmVhdGU9bWUsSHQuQXJyYXlTbGljZT1CLEh0LnBhdGNoQ2xh''@;'; put 'put ''c3M9eixIdC53cmFwV2l0aEN1cnJlbnRab25lPVksSHQuZmlsdGVyUHJvcGVydGllcz1BdCxIdC5hdHRhY2hPcmlnaW5Ub1BhdGNoZWQ9eCxIdC5fcmVkZWZpbmVQcm9wZXJ0eT1PYmplY3QuZGVmaW5lUHJvcGVydHksSHQucGF0Y2hDYWxsYmFja3M9dnQsSHQuZ2V0R2xvYmFsT2JqZWN0cz0o''@;'; put 'put ''KT0+KHtnbG9iYWxTb3VyY2VzOkRlLHpvbmVTeW1ib2xFdmVudE5hbWVzOkNlLGV2ZW50TmFtZXM6R2UsaXNCcm93c2VyOmtlLGlzTWl4OlNlLGlzTm9kZTpBZSxUUlVFX1NUUjpqLEZBTFNFX1NUUjpyZSxaT05FX1NZTUJPTF9QUkVGSVg6YWUsQUREX0VWRU5UX0xJU1RFTkVSX1NUUjpFLFJF''@;'; put 'put ''TU9WRV9FVkVOVF9MSVNURU5FUl9TVFI6RWV9KX0pO2NvbnN0IF90PU4oInpvbmVUYXNrIik7ZnVuY3Rpb24gdHQoQ3QsZnQsSHQsR2Upe2xldCBVZT1udWxsLHl0PW51bGw7SHQrPUdlO2NvbnN0IGp0PXt9O2Z1bmN0aW9uIEp0KGRuKXtjb25zdCB5bj1kbi5kYXRhO3JldHVybiB5bi5hcmdz''@;'; put 'put ''WzBdPWZ1bmN0aW9uKCl7cmV0dXJuIGRuLmludm9rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHluLmhhbmRsZUlkPVVlLmFwcGx5KEN0LHluLmFyZ3MpLGRufWZ1bmN0aW9uIGduKGRuKXtyZXR1cm4geXQuY2FsbChDdCxkbi5kYXRhLmhhbmRsZUlkKX1VZT1lZShDdCxmdCs9R2UsZG49PmZ1''@;'; put 'put ''bmN0aW9uKHluLGxuKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbG5bMF0pe2NvbnN0IE5uPXtpc1BlcmlvZGljOiJJbnRlcnZhbCI9PT1HZSxkZWxheToiVGltZW91dCI9PT1HZXx8IkludGVydmFsIj09PUdlP2xuWzFdfHwwOnZvaWQgMCxhcmdzOmxufSxibj1sblswXTtsblswXT1mdW5jdGlv''@;'; put 'put ''bigpe3RyeXtyZXR1cm4gYm4uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7Tm4uaXNQZXJpb2RpY3x8KCJudW1iZXIiPT10eXBlb2YgTm4uaGFuZGxlSWQ/ZGVsZXRlIGp0W05uLmhhbmRsZUlkXTpObi5oYW5kbGVJZCYmKE5uLmhhbmRsZUlkW190XT1udWxsKSl9fTtjb25zdCBlcj1X''@;'; put 'put ''KGZ0LGxuWzBdLE5uLEp0LGduKTtpZighZXIpcmV0dXJuIGVyO2NvbnN0IHNyPWVyLmRhdGEuaGFuZGxlSWQ7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBzcj9qdFtzcl09ZXI6c3ImJihzcltfdF09ZXIpLHNyJiZzci5yZWYmJnNyLnVucmVmJiYiZnVuY3Rpb24iPT10eXBlb2Ygc3IucmVmJiYi''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2Ygc3IudW5yZWYmJihlci5yZWY9c3IucmVmLmJpbmQoc3IpLGVyLnVucmVmPXNyLnVucmVmLmJpbmQoc3IpKSwibnVtYmVyIj09dHlwZW9mIHNyfHxzcj9zcjplcn1yZXR1cm4gZG4uYXBwbHkoQ3QsbG4pfSkseXQ9ZWUoQ3QsSHQsZG49PmZ1bmN0aW9uKHluLGxu''@;'; put 'put ''KXtjb25zdCBObj1sblswXTtsZXQgYm47Im51bWJlciI9PXR5cGVvZiBObj9ibj1qdFtObl06KGJuPU5uJiZObltfdF0sYm58fChibj1ObikpLGJuJiYic3RyaW5nIj09dHlwZW9mIGJuLnR5cGU/Im5vdFNjaGVkdWxlZCIhPT1ibi5zdGF0ZSYmKGJuLmNhbmNlbEZuJiZibi5kYXRhLmlzUGVy''@;'; put 'put ''aW9kaWN8fDA9PT1ibi5ydW5Db3VudCkmJigibnVtYmVyIj09dHlwZW9mIE5uP2RlbGV0ZSBqdFtObl06Tm4mJihObltfdF09bnVsbCksYm4uem9uZS5jYW5jZWxUYXNrKGJuKSk6ZG4uYXBwbHkoQ3QsbG4pfSl9Wm9uZS5fX2xvYWRfcGF0Y2goImxlZ2FjeSIsQ3Q9Pntjb25zdCBmdD1DdFta''@;'; put 'put ''b25lLl9fc3ltYm9sX18oImxlZ2FjeVBhdGNoIildO2Z0JiZmdCgpfSksWm9uZS5fX2xvYWRfcGF0Y2goInF1ZXVlTWljcm90YXNrIiwoQ3QsZnQsSHQpPT57SHQucGF0Y2hNZXRob2QoQ3QsInF1ZXVlTWljcm90YXNrIixHZT0+ZnVuY3Rpb24oVWUseXQpe2Z0LmN1cnJlbnQuc2NoZWR1bGVN''@;'; put 'put ''aWNyb1Rhc2soInF1ZXVlTWljcm90YXNrIix5dFswXSl9KX0pLFpvbmUuX19sb2FkX3BhdGNoKCJ0aW1lcnMiLEN0PT57Y29uc3QgSHQ9ImNsZWFyIjt0dChDdCwic2V0IixIdCwiVGltZW91dCIpLHR0KEN0LCJzZXQiLEh0LCJJbnRlcnZhbCIpLHR0KEN0LCJzZXQiLEh0LCJJbW1lZGlhdGUi''@;'; put 'put ''KX0pLFpvbmUuX19sb2FkX3BhdGNoKCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLEN0PT57dHQoQ3QsInJlcXVlc3QiLCJjYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpLHR0KEN0LCJtb3pSZXF1ZXN0IiwibW96Q2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKSx0dChDdCwid2Via2l0UmVxdWVzdCIs''@;'; put 'put ''IndlYmtpdENhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIil9KSxab25lLl9fbG9hZF9wYXRjaCgiYmxvY2tpbmciLChDdCxmdCk9Pntjb25zdCBIdD1bImFsZXJ0IiwicHJvbXB0IiwiY29uZmlybSJdO2ZvcihsZXQgR2U9MDtHZTxIdC5sZW5ndGg7R2UrKyllZShDdCxIdFtHZV0sKHl0LGp0LEp0''@;'; put 'put ''KT0+ZnVuY3Rpb24oZ24sZG4pe3JldHVybiBmdC5jdXJyZW50LnJ1bih5dCxDdCxkbixKdCl9KX0pLFpvbmUuX19sb2FkX3BhdGNoKCJFdmVudFRhcmdldCIsKEN0LGZ0LEh0KT0+eyhmdW5jdGlvbiBMdChDdCxmdCl7ZnQucGF0Y2hFdmVudFByb3RvdHlwZShDdCxmdCl9KShDdCxIdCksZnVu''@;'; put 'put ''Y3Rpb24gbHQoQ3QsZnQpe2lmKFpvbmVbZnQuc3ltYm9sKCJwYXRjaEV2ZW50VGFyZ2V0IildKXJldHVybjtjb25zdHtldmVudE5hbWVzOkh0LHpvbmVTeW1ib2xFdmVudE5hbWVzOkdlLFRSVUVfU1RSOlVlLEZBTFNFX1NUUjp5dCxaT05FX1NZTUJPTF9QUkVGSVg6anR9PWZ0LmdldEdsb2Jh''@;'; put 'put ''bE9iamVjdHMoKTtmb3IobGV0IGduPTA7Z248SHQubGVuZ3RoO2duKyspe2NvbnN0IGRuPUh0W2duXSxObj1qdCsoZG4reXQpLGJuPWp0KyhkbitVZSk7R2VbZG5dPXt9LEdlW2RuXVt5dF09Tm4sR2VbZG5dW1VlXT1ibn1jb25zdCBKdD1DdC5FdmVudFRhcmdldDtKdCYmSnQucHJvdG90eXBl''@;'; put 'put ''JiZmdC5wYXRjaEV2ZW50VGFyZ2V0KEN0LGZ0LFtKdCYmSnQucHJvdG90eXBlXSl9KEN0LEh0KTtjb25zdCBHZT1DdC5YTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0O0dlJiZHZS5wcm90b3R5cGUmJkh0LnBhdGNoRXZlbnRUYXJnZXQoQ3QsSHQsW0dlLnByb3RvdHlwZV0pfSksWm9uZS5fX2xv''@;'; put 'put ''YWRfcGF0Y2goIk11dGF0aW9uT2JzZXJ2ZXIiLChDdCxmdCxIdCk9Pnt6KCJNdXRhdGlvbk9ic2VydmVyIikseigiV2ViS2l0TXV0YXRpb25PYnNlcnZlciIpfSksWm9uZS5fX2xvYWRfcGF0Y2goIkludGVyc2VjdGlvbk9ic2VydmVyIiwoQ3QsZnQsSHQpPT57eigiSW50ZXJzZWN0aW9uT2Jz''@;'; put 'put ''ZXJ2ZXIiKX0pLFpvbmUuX19sb2FkX3BhdGNoKCJGaWxlUmVhZGVyIiwoQ3QsZnQsSHQpPT57eigiRmlsZVJlYWRlciIpfSksWm9uZS5fX2xvYWRfcGF0Y2goIm9uX3Byb3BlcnR5IiwoQ3QsZnQsSHQpPT57IWZ1bmN0aW9uIG9uKEN0LGZ0KXtpZihBZSYmIVNlfHxab25lW0N0LnN5bWJvbCgi''@;'; put 'put ''cGF0Y2hFdmVudHMiKV0pcmV0dXJuO2NvbnN0IEh0PWZ0Ll9fWm9uZV9pZ25vcmVfb25fcHJvcGVydGllcztsZXQgR2U9W107aWYoa2Upe2NvbnN0IFVlPXdpbmRvdztHZT1HZS5jb25jYXQoWyJEb2N1bWVudCIsIlNWR0VsZW1lbnQiLCJFbGVtZW50IiwiSFRNTEVsZW1lbnQiLCJIVE1MQm9k''@;'; put 'put ''eUVsZW1lbnQiLCJIVE1MTWVkaWFFbGVtZW50IiwiSFRNTEZyYW1lU2V0RWxlbWVudCIsIkhUTUxGcmFtZUVsZW1lbnQiLCJIVE1MSUZyYW1lRWxlbWVudCIsIkhUTUxNYXJxdWVlRWxlbWVudCIsIldvcmtlciJdKTtjb25zdCB5dD1mdW5jdGlvbiBUKCl7dHJ5e2NvbnN0IEN0PUsubmF2aWdh''@;'; put 'put ''dG9yLnVzZXJBZ2VudDtpZigtMSE9PUN0LmluZGV4T2YoIk1TSUUgIil8fC0xIT09Q3QuaW5kZXhPZigiVHJpZGVudC8iKSlyZXR1cm4hMH1jYXRjaChDdCl7fXJldHVybiExfSgpP1t7dGFyZ2V0OlVlLGlnbm9yZVByb3BlcnRpZXM6WyJlcnJvciJdfV06W107aHQoVWUsQnQoVWUpLEh0JiZI''@;'; put 'put ''dC5jb25jYXQoeXQpLEwoVWUpKX1HZT1HZS5jb25jYXQoWyJYTUxIdHRwUmVxdWVzdCIsIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQiLCJJREJJbmRleCIsIklEQlJlcXVlc3QiLCJJREJPcGVuREJSZXF1ZXN0IiwiSURCRGF0YWJhc2UiLCJJREJUcmFuc2FjdGlvbiIsIklEQkN1cnNvciIs''@;'; put 'put ''IldlYlNvY2tldCJdKTtmb3IobGV0IFVlPTA7VWU8R2UubGVuZ3RoO1VlKyspe2NvbnN0IHl0PWZ0W0dlW1VlXV07eXQmJnl0LnByb3RvdHlwZSYmaHQoeXQucHJvdG90eXBlLEJ0KHl0LnByb3RvdHlwZSksSHQpfX0oSHQsQ3QpfSksWm9uZS5fX2xvYWRfcGF0Y2goImN1c3RvbUVsZW1lbnRz''@;'; put 'put ''IiwoQ3QsZnQsSHQpPT57IWZ1bmN0aW9uIGV0KEN0LGZ0KXtjb25zdHtpc0Jyb3dzZXI6SHQsaXNNaXg6R2V9PWZ0LmdldEdsb2JhbE9iamVjdHMoKTsoSHR8fEdlKSYmQ3QuY3VzdG9tRWxlbWVudHMmJiJjdXN0b21FbGVtZW50cyJpbiBDdCYmZnQucGF0Y2hDYWxsYmFja3MoZnQsQ3QuY3Vz''@;'; put 'put ''dG9tRWxlbWVudHMsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIixbImNvbm5lY3RlZENhbGxiYWNrIiwiZGlzY29ubmVjdGVkQ2FsbGJhY2siLCJhZG9wdGVkQ2FsbGJhY2siLCJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2siXSl9KEN0LEh0KX0pLFpvbmUuX19sb2FkX3BhdGNoKCJYSFIiLChD''@;'; put 'put ''dCxmdCk9PnshZnVuY3Rpb24gZ24oZG4pe2NvbnN0IHluPWRuLlhNTEh0dHBSZXF1ZXN0O2lmKCF5bilyZXR1cm47Y29uc3QgbG49eW4ucHJvdG90eXBlO2xldCBibj1sbltVXSxlcj1sbltRXTtpZighYm4pe2NvbnN0IEtuPWRuLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7aWYoS24pe2Nv''@;'; put 'put ''bnN0IE50PUtuLnByb3RvdHlwZTtibj1OdFtVXSxlcj1OdFtRXX19Y29uc3Qgc3I9InJlYWR5c3RhdGVjaGFuZ2UiLFhuPSJzY2hlZHVsZWQiO2Z1bmN0aW9uIEZyKEtuKXtjb25zdCBOdD1Lbi5kYXRhLHNuPU50LnRhcmdldDtzblt5dF09ITEsc25bSnRdPSExO2NvbnN0IFVuPXNuW1VlXTti''@;'; put 'put ''bnx8KGJuPXNuW1VdLGVyPXNuW1FdKSxVbiYmZXIuY2FsbChzbixzcixVbik7Y29uc3Qgd249c25bVWVdPSgpPT57aWYoc24ucmVhZHlTdGF0ZT09PXNuLkRPTkUpaWYoIU50LmFib3J0ZWQmJnNuW3l0XSYmS24uc3RhdGU9PT1Ybil7Y29uc3Qgem49c25bZnQuX19zeW1ib2xfXygibG9hZGZh''@;'; put 'put ''bHNlIildO2lmKDAhPT1zbi5zdGF0dXMmJnpuJiZ6bi5sZW5ndGg+MCl7Y29uc3QgVHI9S24uaW52b2tlO0tuLmludm9rZT1mdW5jdGlvbigpe2NvbnN0IEJuPXNuW2Z0Ll9fc3ltYm9sX18oImxvYWRmYWxzZSIpXTtmb3IobGV0IGtyPTA7a3I8Qm4ubGVuZ3RoO2tyKyspQm5ba3JdPT09S24m''@;'; put 'put ''JkJuLnNwbGljZShrciwxKTshTnQuYWJvcnRlZCYmS24uc3RhdGU9PT1YbiYmVHIuY2FsbChLbil9LHpuLnB1c2goS24pfWVsc2UgS24uaW52b2tlKCl9ZWxzZSFOdC5hYm9ydGVkJiYhMT09PXNuW3l0XSYmKHNuW0p0XT0hMCl9O3JldHVybiBibi5jYWxsKHNuLHNyLHduKSxzbltIdF18fChz''@;'; put 'put ''bltIdF09S24pLFd0LmFwcGx5KHNuLE50LmFyZ3MpLHNuW3l0XT0hMCxLbn1mdW5jdGlvbiB4cigpe31mdW5jdGlvbiBxdChLbil7Y29uc3QgTnQ9S24uZGF0YTtyZXR1cm4gTnQuYWJvcnRlZD0hMCxwbi5hcHBseShOdC50YXJnZXQsTnQuYXJncyl9Y29uc3QgcHI9ZWUobG4sIm9wZW4iLCgp''@;'; put 'put ''PT5mdW5jdGlvbihLbixOdCl7cmV0dXJuIEtuW0dlXT0wPT1OdFsyXSxLbltqdF09TnRbMV0scHIuYXBwbHkoS24sTnQpfSksQW49TigiZmV0Y2hUYXNrQWJvcnRpbmciKSxxbj1OKCJmZXRjaFRhc2tTY2hlZHVsaW5nIiksV3Q9ZWUobG4sInNlbmQiLCgpPT5mdW5jdGlvbihLbixOdCl7aWYo''@;'; put 'put ''ITA9PT1mdC5jdXJyZW50W3FuXXx8S25bR2VdKXJldHVybiBXdC5hcHBseShLbixOdCk7e2NvbnN0IHNuPXt0YXJnZXQ6S24sdXJsOktuW2p0XSxpc1BlcmlvZGljOiExLGFyZ3M6TnQsYWJvcnRlZDohMX0sVW49VygiWE1MSHR0cFJlcXVlc3Quc2VuZCIseHIsc24sRnIscXQpO0tuJiYhMD09''@;'; put 'put ''PUtuW0p0XSYmIXNuLmFib3J0ZWQmJlVuLnN0YXRlPT09WG4mJlVuLmludm9rZSgpfX0pLHBuPWVlKGxuLCJhYm9ydCIsKCk9PmZ1bmN0aW9uKEtuLE50KXtjb25zdCBzbj1mdW5jdGlvbiBObihLbil7cmV0dXJuIEtuW0h0XX0oS24pO2lmKHNuJiYic3RyaW5nIj09dHlwZW9mIHNuLnR5cGUp''@;'; put 'put ''e2lmKG51bGw9PXNuLmNhbmNlbEZufHxzbi5kYXRhJiZzbi5kYXRhLmFib3J0ZWQpcmV0dXJuO3NuLnpvbmUuY2FuY2VsVGFzayhzbil9ZWxzZSBpZighMD09PWZ0LmN1cnJlbnRbQW5dKXJldHVybiBwbi5hcHBseShLbixOdCl9KX0oQ3QpO2NvbnN0IEh0PU4oInhoclRhc2siKSxHZT1OKCJ4''@;'; put 'put ''aHJTeW5jIiksVWU9TigieGhyTGlzdGVuZXIiKSx5dD1OKCJ4aHJTY2hlZHVsZWQiKSxqdD1OKCJ4aHJVUkwiKSxKdD1OKCJ4aHJFcnJvckJlZm9yZVNjaGVkdWxlZCIpfSksWm9uZS5fX2xvYWRfcGF0Y2goImdlb2xvY2F0aW9uIixDdD0+e0N0Lm5hdmlnYXRvciYmQ3QubmF2aWdhdG9yLmdl''@;'; put 'put ''b2xvY2F0aW9uJiZmdW5jdGlvbiBjZShDdCxmdCl7Y29uc3QgSHQ9Q3QuY29uc3RydWN0b3IubmFtZTtmb3IobGV0IEdlPTA7R2U8ZnQubGVuZ3RoO0dlKyspe2NvbnN0IFVlPWZ0W0dlXSx5dD1DdFtVZV07aWYoeXQpe2lmKCFkZShYZShDdCxVZSkpKWNvbnRpbnVlO0N0W1VlXT0oSnQ9Pntj''@;'; put 'put ''b25zdCBnbj1mdW5jdGlvbigpe3JldHVybiBKdC5hcHBseSh0aGlzLG9lKGFyZ3VtZW50cyxIdCsiLiIrVWUpKX07cmV0dXJuIHgoZ24sSnQpLGdufSkoeXQpfX19KEN0Lm5hdmlnYXRvci5nZW9sb2NhdGlvbixbImdldEN1cnJlbnRQb3NpdGlvbiIsIndhdGNoUG9zaXRpb24iXSl9KSxab25l''@;'; put 'put ''Ll9fbG9hZF9wYXRjaCgiUHJvbWlzZVJlamVjdGlvbkV2ZW50IiwoQ3QsZnQpPT57ZnVuY3Rpb24gSHQoR2Upe3JldHVybiBmdW5jdGlvbihVZSl7d3QoQ3QsR2UpLmZvckVhY2goanQ9Pntjb25zdCBKdD1DdC5Qcm9taXNlUmVqZWN0aW9uRXZlbnQ7aWYoSnQpe2NvbnN0IGduPW5ldyBKdChH''@;'; put 'put ''ZSx7cHJvbWlzZTpVZS5wcm9taXNlLHJlYXNvbjpVZS5yZWplY3Rpb259KTtqdC5pbnZva2UoZ24pfX0pfX1DdC5Qcm9taXNlUmVqZWN0aW9uRXZlbnQmJihmdFtOKCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIpXT1IdCgidW5oYW5kbGVkcmVqZWN0aW9uIiksZnRbTigicmVq''@;'; put 'put ''ZWN0aW9uSGFuZGxlZEhhbmRsZXIiKV09SHQoInJlamVjdGlvbmhhbmRsZWQiKSl9KX0sNTQyNjE6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0IG1lPUwoMTIwMzApO0ludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHM9ZnVuY3Rpb24oZGUpe2xldCB2ZT10''@;'; put 'put ''aGlzLnJlc29sdmVkT3B0aW9ucygpLEFlPWZ1bmN0aW9uIGNlKGRlKXt2YXIgVGUsTWUsaGUsTyx6LHZlPWRlLmF2YWlsYWJsZUZvcm1hdHMsQWU9ZGUudGltZUZvcm1hdHMsa2U9ZGUuZGF0ZUZvcm1hdHMsU2U9ZGUubWVkaXVtLEllPVtdLGVlPVtdLG5lPVtdO2Z1bmN0aW9uIHgoUCxWKXt2''@;'; put 'put ''YXIgVD1uZXcgQXJyYXkoKFAubWF0Y2goL00vZyl8fFtdKS5sZW5ndGgrMSksUz1uZXcgQXJyYXkoKFAubWF0Y2goL0UvZyl8fFtdKS5sZW5ndGgrMSk7cmV0dXJuIFQubGVuZ3RoPjImJihWPVYucmVwbGFjZSgvKE18TCkrLyxULmpvaW4oIiQxIikpKSxTLmxlbmd0aD4yJiYoVj1WLnJlcGxh''@;'; put 'put ''Y2UoLyhbRWVjXSkrLyxTLmpvaW4oIiQxIikpKSxWfWZvcihUZSBpbiB2ZSl2ZS5oYXNPd25Qcm9wZXJ0eShUZSkmJigoaGU9b2UoTWU9eChUZSx2ZVtUZV0pKSkmJihJZS5wdXNoKGhlKSxKKGhlKT9uZS5wdXNoKE1lKTpzZShoZSkmJmVlLnB1c2goTWUpKSk7Zm9yKE89MDtPPGVlLmxlbmd0''@;'; put 'put ''aDtPKz0xKWZvcih6PTA7ejxuZS5sZW5ndGg7eis9MSkoaGU9b2UoTWU9U2UucmVwbGFjZSgiezB9IixlZVtPXSkucmVwbGFjZSgiezF9IixuZVt6XSkucmVwbGFjZSgvXlssXHNdK3xbLFxzXSskL2dpLCIiKSkpJiZJZS5wdXNoKGhlKTtmb3IoVGUgaW4gQWUpQWUuaGFzT3duUHJvcGVydHko''@;'; put 'put ''VGUpJiYoKGhlPW9lKE1lPXgoVGUsQWVbVGVdKSkpJiZJZS5wdXNoKGhlKSk7Zm9yKFRlIGluIGtlKWtlLmhhc093blByb3BlcnR5KFRlKSYmKChoZT1vZShNZT14KFRlLGtlW1RlXSkpKSYmSWUucHVzaChoZSkpO3JldHVybiBJZX0obWUuZGF0ZS5mb3JtYXRzKSxrZT17fTtmb3IodmFyIFNl''@;'; put 'put ''IGluIFEpRS5jYWxsKFEsU2UpJiYoa2VbIltbIitTZSsiXV0iXT12ZVtTZV0pO2xldCBUZT1mdW5jdGlvbiBqKGRlLHZlLEFlKXtmb3IodmFyIGVlLHo9LTEvMCxuZT0wLHg9dmUubGVuZ3RoO25lPHg7KXt2YXIgUD12ZVtuZV0sVj0wO2Zvcih2YXIgVCBpbiBRKWlmKEUuY2FsbChRLFQpKXt2''@;'; put 'put ''YXIgUz1kZVsiW1siK1QrIl1dIl0sRj1FLmNhbGwoUCxUKT9QW1RdOnZvaWQgMDtpZih2b2lkIDA9PT1TJiZ2b2lkIDAhPT1GKVYtPTIwO2Vsc2UgaWYodm9pZCAwIT09UyYmdm9pZCAwPT09RilWLT0xMjA7ZWxzZXt2YXIgeWU9WyIyLWRpZ2l0IiwibnVtZXJpYyIsIm5hcnJvdyIsInNob3J0''@;'; put 'put ''IiwibG9uZyJdLENlPUVlLmNhbGwoeWUsUyksRGU9RWUuY2FsbCh5ZSxGKSxQZT1NYXRoLm1heChNYXRoLm1pbihEZS1DZSwyKSwtMik7QWUmJigoIm51bWVyaWMiPT09U3x8IjItZGlnaXQiPT09UykmJiJudW1lcmljIiE9PUYmJiIyLWRpZ2l0IiE9PUZ8fCJudW1lcmljIiE9PVMmJiIyLWRp''@;'; put 'put ''Z2l0IiE9PVMmJigiMi1kaWdpdCI9PT1GfHwibnVtZXJpYyI9PT1GKSkmJihWLT04KSwyPT09UGU/Vi09NjoxPT09UGU/Vi09MzotMT09PVBlP1YtPTY6LTI9PT1QZSYmKFYtPTgpfX1WPnomJih6PVYsZWU9UCksbmUrK31yZXR1cm4gZWV9KGtlLEFlKTtyZXR1cm4gZnVuY3Rpb24gQihkZSx2''@;'; put 'put ''ZSl7aWYoIWlzRmluaXRlKHZlKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB2YWxpZCBkYXRlIHBhc3NlZCB0byBmb3JtYXRUb1BhcnRzIik7Zm9yKHZhciBlZSxBZT0iZW4tVVMiLGtlPWRlLnBhdHRlcm4sVGU9KG5ldyBJbnRsLk51bWJlckZvcm1hdChbQWVdLHt1c2VHcm91cGlu''@;'; put 'put ''ZzohMX0pLG5ldyBJbnRsLk51bWJlckZvcm1hdChbQWVdLHttaW5pbXVtSW50ZWdlckRpZ2l0czoyLHVzZUdyb3VwaW5nOiExfSksZnVuY3Rpb24gcmUoZGUsdmUsQWUpe3ZhciBrZT1uZXcgRGF0ZShkZSksU2U9ImdldCIrKEFlfHwiIik7cmV0dXJueyJbW3dlZWtkYXldXSI6a2VbU2UrIkRh''@;'; put 'put ''eSJdKCksIltbZXJhXV0iOisoa2VbU2UrIkZ1bGxZZWFyIl0oKT49MCksIltbeWVhcl1dIjprZVtTZSsiRnVsbFllYXIiXSgpLCJbW21vbnRoXV0iOmtlW1NlKyJNb250aCJdKCksIltbZGF5XV0iOmtlW1NlKyJEYXRlIl0oKSwiW1tob3VyXV0iOmtlW1NlKyJIb3VycyJdKCksIltbbWludXRl''@;'; put 'put ''XV0iOmtlW1NlKyJNaW51dGVzIl0oKSwiW1tzZWNvbmRdXSI6a2VbU2UrIlNlY29uZHMiXSgpLCJbW2luRFNUXV0iOiExfX0odmUpKSxNZT0iZ3JlZ29yeSIsaGU9bWUuZGF0ZS5jYWxlbmRhcnMsTz1bXSx6PS97KFtefV0rKX0vZyxuZT0wO251bGwhPT0oZWU9ei5leGVjKGtlKSk7KXtuZTxl''@;'; put 'put ''ZS5pbmRleCYmTy5wdXNoKHt0eXBlOiJzZXBhcmF0b3IiLHZhbHVlOmtlLnN1YnN0cihuZSxlZS5pbmRleC1uZSl9KTt2YXIgeD1lZVsxXSxQPW51bGw7aWYoRS5jYWxsKGRlLHgpKXt2YXIgVixUPWRlW3hdLFM9VGVbIltbIit4KyJdXSJdO2lmKCJ5ZWFyIj09PXgmJlM8PTA/Uz0xLVM6Im1v''@;'; put 'put ''bnRoIj09PXg/UysrOiJob3VyIj09PXgmJiEwPT09ZGVbIltbaG91cjEyXV0iXSYmKFY9KFMlPTEyKSE9PVRlWyJbWyIreCsiXV0iXSwwPT09UyYmITA9PT1kZVsiW1tob3VyTm8wXV0iXSYmKFM9MTIpKSwibnVtZXJpYyI9PT1UKVA9UztlbHNlIGlmKCIyLWRpZ2l0Ij09PVQpKFA9UykubGVu''@;'; put 'put ''Z3RoPjImJihQPVAuc2xpY2UoLTIpKTtlbHNlIGlmKFQgaW4gVSlzd2l0Y2goeCl7Y2FzZSJtb250aCI6UD1hZShoZSxNZSwibW9udGhzIixULFRlWyJbWyIreCsiXV0iXSk7YnJlYWs7Y2FzZSJ3ZWVrZGF5Ijp0cnl7UD1hZShoZSxNZSwiZGF5cyIsVCxUZVsiW1siK3grIl1dIl0pfWNhdGNo''@;'; put 'put ''KEYpe3Rocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgd2Vla2RheSBkYXRhIGZvciBsb2NhbGUgIitBZSl9YnJlYWs7Y2FzZSJ0aW1lWm9uZU5hbWUiOlA9IiI7YnJlYWs7ZGVmYXVsdDpQPVRlWyJbWyIreCsiXV0iXX19ZWxzZSJhbXBtIj09PXgmJihQPWFlKGhlLE1lLCJkYXlQZXJp''@;'; put 'put ''b2RzIixWPyJwbSI6ImFtIikpO251bGwhPT1QJiYoTy5wdXNoKHt0eXBlOmVlWzFdLHZhbHVlOlB9KSxuZT1lZS5pbmRleCtlZVswXS5sZW5ndGgpfXJldHVybiBuZTxrZS5sZW5ndGgmJk8ucHVzaCh7dHlwZToic2VwYXJhdG9yIix2YWx1ZTprZS5zdWJzdHIobmUpfSksT30oVGUsZGUpfTt2''@;'; put 'put ''YXIgRT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEVlPUFycmF5LnByb3RvdHlwZS5pbmRleE9mLFU9T2JqZWN0LmNyZWF0ZShudWxsLHtuYXJyb3c6e30sc2hvcnQ6e30sbG9uZzp7fX0pLFE9e3dlZWtkYXk6WyJuYXJyb3ciLCJzaG9ydCIsImxvbmciXSxlcmE6WyJuYXJyb3ci''@;'; put 'put ''LCJzaG9ydCIsImxvbmciXSx5ZWFyOlsiMi1kaWdpdCIsIm51bWVyaWMiXSxtb250aDpbIjItZGlnaXQiLCJudW1lcmljIiwibmFycm93Iiwic2hvcnQiLCJsb25nIl0sZGF5OlsiMi1kaWdpdCIsIm51bWVyaWMiXSxob3VyOlsiMi1kaWdpdCIsIm51bWVyaWMiXSxtaW51dGU6WyIyLWRpZ2l0''@;'; put 'put ''IiwibnVtZXJpYyJdLHNlY29uZDpbIjItZGlnaXQiLCJudW1lcmljIl0sdGltZVpvbmVOYW1lOlsic2hvcnQiLCJsb25nIl19O2Z1bmN0aW9uIGFlKGRlLHZlLEFlLGtlLFNlKXt2YXIgSWU9ZGVbdmVdJiZkZVt2ZV1bQWVdP2RlW3ZlXVtBZV06ZGUuZ3JlZ29yeVtBZV0sVGU9e25hcnJvdzpb''@;'; put 'put ''InNob3J0IiwibG9uZyJdLHNob3J0OlsibG9uZyIsIm5hcnJvdyJdLGxvbmc6WyJzaG9ydCIsIm5hcnJvdyJdfSxNZT1FLmNhbGwoSWUsa2UpP0llW2tlXTpFLmNhbGwoSWUsVGVba2VdWzBdKT9JZVtUZVtrZV1bMF1dOkllW1RlW2tlXVsxXV07cmV0dXJuIG51bGwhPVNlP01lW1NlXTpNZX12''@;'; put 'put ''YXIgWT0vKD86W0VlY117MSw2fXxHezEsNX18KD86W3lZdV0rfFV7MSw1fSl8W01MXXsxLDV9fGR7MSwyfXxhfFtoa0hLXXsxLDJ9fG17MSwyfXxzezEsMn18ensxLDR9KSg/PShbXiddKidbXiddKicpKlteJ10qJCkvZyxXPS9bUXhYVk92WkFTamdGRHdXSVFxSF0vLE49e21vbnRoOlsibnVt''@;'; put 'put ''ZXJpYyIsIjItZGlnaXQiLCJzaG9ydCIsImxvbmciLCJuYXJyb3ciXSx3ZWVrZGF5Olsic2hvcnQiLCJzaG9ydCIsInNob3J0IiwibG9uZyIsIm5hcnJvdyJdLGVyYTpbInNob3J0Iiwic2hvcnQiLCJzaG9ydCIsImxvbmciLCJuYXJyb3ciXX0sdGU9WyJ3ZWVrZGF5IiwiZXJhIiwieWVhciIs''@;'; put 'put ''Im1vbnRoIiwiZGF5Il0sSz1bImhvdXIiLCJtaW51dGUiLCJzZWNvbmQiLCJ0aW1lWm9uZU5hbWUiXTtmdW5jdGlvbiBKKGRlKXtmb3IodmFyIHZlPTA7dmU8Sy5sZW5ndGg7dmUrPTEpaWYoZGUuaGFzT3duUHJvcGVydHkoS1t2ZV0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHNlKGRl''@;'; put 'put ''KXtmb3IodmFyIHZlPTA7dmU8dGUubGVuZ3RoO3ZlKz0xKWlmKGRlLmhhc093blByb3BlcnR5KHRlW3ZlXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gb2UoZGUpe2lmKCFXLnRlc3QoZGUpKXt2YXIgdmU9e307cmV0dXJuIHZlLnBhdHRlcm49ZGUucmVwbGFjZShZLGZ1bmN0aW9uKEFl''@;'; put 'put ''KXtzd2l0Y2goQWUuY2hhckF0KDApKXtjYXNlIkUiOmNhc2UiZSI6Y2FzZSJjIjpyZXR1cm4gdmUud2Vla2RheT1OLndlZWtkYXlbQWUubGVuZ3RoLTFdLCJ7d2Vla2RheX0iO2Nhc2UiRyI6cmV0dXJuIHZlLmVyYT1OLmVyYVtBZS5sZW5ndGgtMV0sIntlcmF9IjtjYXNlInkiOmNhc2UiWSI6''@;'; put 'put ''Y2FzZSJ1IjpjYXNlIlUiOnJldHVybiB2ZS55ZWFyPTI9PT1BZS5sZW5ndGg/IjItZGlnaXQiOiJudW1lcmljIiwie3llYXJ9IjtjYXNlIk0iOmNhc2UiTCI6cmV0dXJuIHZlLm1vbnRoPU4ubW9udGhbQWUubGVuZ3RoLTFdLCJ7bW9udGh9IjtjYXNlImQiOnJldHVybiB2ZS5kYXk9Mj09PUFl''@;'; put 'put ''Lmxlbmd0aD8iMi1kaWdpdCI6Im51bWVyaWMiLCJ7ZGF5fSI7Y2FzZSJhIjpyZXR1cm4ie2FtcG19IjtjYXNlImgiOmNhc2UiSCI6Y2FzZSJrIjpjYXNlIksiOnJldHVybiB2ZS5ob3VyPTI9PT1BZS5sZW5ndGg/IjItZGlnaXQiOiJudW1lcmljIiwie2hvdXJ9IjtjYXNlIm0iOnJldHVybiB2''@;'; put 'put ''ZS5taW51dGU9Mj09PUFlLmxlbmd0aD8iMi1kaWdpdCI6Im51bWVyaWMiLCJ7bWludXRlfSI7Y2FzZSJzIjpyZXR1cm4gdmUuc2Vjb25kPTI9PT1BZS5sZW5ndGg/IjItZGlnaXQiOiJudW1lcmljIiwie3NlY29uZH0iO2Nhc2UieiI6cmV0dXJuIHZlLnRpbWVab25lTmFtZT1BZS5sZW5ndGg8''@;'; put 'put ''ND8ic2hvcnQiOiJsb25nIiwie3RpbWVab25lTmFtZX0ifX0pLHZlLnBhdHRlcm49dmUucGF0dGVybi5yZXBsYWNlKC8nKFteJ10qKScvZyxmdW5jdGlvbihBZSxrZSl7cmV0dXJuIGtlfHwiJyJ9KSx2ZS5wYXR0ZXJuLmluZGV4T2YoInthbXBtfSIpPi0xJiYodmUuaG91cjEyPSEwLHZlLnBh''@;'; put 'put ''dHRlcm4xMj12ZS5wYXR0ZXJuLHZlLnBhdHRlcm49dmUucGF0dGVybi5yZXBsYWNlKCJ7YW1wbX0iLCIiKS5yZXBsYWNlKC9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZywiIikpLHZlfX19LDgyNjkxOihYZSxKZSxMKT0+e0woMzkxMTUpLEwoMjA3NzQpLEwoMzA1MjIpLEwo''@;'; put 'put ''NTgyOTUpLEwoODc4NDIpLEwoNTAxMTApLEwoMjAwNzUpLEwoMjQzMzYpLEwoMTkzNzEpLEwoOTg4MzcpLEwoMjY3NzMpLEwoMTU3NDUpLEwoMzMwNTcpLEwoMzc1MCksTCgyMzM2OSksTCg5OTU2NCksTCgzMmUzKSxMKDQ4OTc3KSxMKDUyMzEwKSxMKDk0ODk5KSxMKDMxODQyKSxMKDU2OTk3''@;'; put 'put ''KSxMKDI1NjQ1KX0sNzY3NzooWGUsSmUsTCk9PntMKDgxODIyKSxMKDE5OTc3KSxMKDkxMDMxKSxMKDQ2MzMxKSxMKDQxNTYwKSxYZS5leHBvcnRzPURhdGV9LDg4ODEzOihYZSxKZSxMKT0+e0woMzk3MzApLEwoNjA1OSksTCg0ODM3NyksTCgyNTY0NSl9LDE3ODc4OihYZSxKZSxMKT0+e0wo''@;'; put 'put ''OTYyNTMpLEwoMzkxMTUpLEwoOTExODEpLEwoODg0MTYpLEwoMjU2NDUpfSwxNjM0MzooWGUsSmUsTCk9PntMKDc2NTAzKSxMKDY2Nzg2KSxMKDUwOTMyKSxMKDU3NTI2KSxMKDIxNTkxKSxMKDkwNzMpLEwoODAzNDcpLEwoMzA1NzkpLEwoNDY2OSksTCg2NzcxMCksTCg0NTc4OSksTCgzMzUx''@;'; put 'put ''NCksTCg5OTk3OCksTCg1ODQ3MiksTCg4Njk0NiksTCgzNTA2OCksTCg0MTMpLEwoMjU2NDUpfSw2MjMxNDooWGUsSmUsTCk9PntMKDExMjQ2KSxMKDMwNzI2KSxMKDE5MDEpLEwoNzU5NzIpLEwoNTM0MDMpLEwoOTI1MTYpLEwoNDkzNzEpLEwoODY0NzkpLEwoOTE3MzYpLEwoNTE4ODkpLEwo''@;'; put 'put ''NjUxNzcpLEwoODEyNDYpLEwoMjU2NDUpfSw3NzY1NzooWGUsSmUsTCk9PntMKDk1NzY3KSxMKDY4MTMyKSxMKDQ4Mzg4KSxMKDM3NDcwKSxMKDk0ODgyKSxMKDQxNTIwKSxMKDI3NDc2KSxMKDc5NjIyKSxMKDg5Mzc1KSxMKDQzNTMzKSxMKDg0NjcyKSxMKDY0MTU3KSxMKDM1MDk1KSxMKDQ5''@;'; put 'put ''ODkyKSxMKDc1MTE1KSxMKDk5MTc2KSxMKDY4ODM4KSxMKDk2MjUzKSxMKDI1NjQ1KX0sNTE3NzE6KFhlLEplLEwpPT57TCg2NDI5OSksTCgyNTY0NSl9LDUzMTA6KFhlLEplLEwpPT57TCg3MTA4NCksTCgyNTY0NSl9LDQzNDk5OihYZSxKZSxMKT0+e0woMjE1NzIpLEwoODIxMzkpLEwoMTA2''@;'; put 'put ''ODUpLEwoODU1MzUpLEwoMTczNDcpLEwoODMwNDkpLEwoOTY2MzMpLEwoNjg5ODkpLEwoNzgyNzApLEwoNjQ1MTApLEwoNzM5ODQpLEwoNzU3NjkpLEwoNTAwNTUpLEwoOTYwMTQpLEwoMjU2NDUpfSwyOTEzMjooWGUsSmUsTCk9PntMKDgzOTQ2KSxMKDE4MjY5KSxMKDY2MTA4KSxMKDc2Nzc0''@;'; put 'put ''KSxMKDIxNDY2KSxMKDU5MzU3KSxMKDc2MTQyKSxMKDUxODc2KSxMKDI1NjQ1KX0sNTIyOTg6KFhlLEplLEwpPT57TCg5NjI1MyksTCgzOTExNSksTCg5MTE4MSksTCg5ODE4NCksTCgyNTY0NSl9LDY4MTQ4OihYZSxKZSxMKT0+e0woNTAxOTEpLEwoOTgzMDYpLEwoNjQ1NjQpLEwoMzkxMTUp''@;'; put 'put ''LEwoMjk1MzkpLEwoOTY2MjApLEwoNjI4NTApLEwoMTA4MjMpLEwoMTc3MzIpLEwoNDA4NTYpLEwoODA3MDMpLEwoOTE1MzkpLEwoNTI5MiksTCg0NTE3NyksTCg3MzY5NCksTCgzNzY0OCksTCgyNzc5NSksTCg0NTMxKSxMKDIzNjA1KSxMKDY3ODApLEwoNjk5MzcpLEwoMTA1MTEpLEwoMjE0''@;'; put 'put ''NjYpLEwoNTkzNTcpLEwoNzYxNDIpLEwoNTE4NzYpLEwoMjU2NDUpfSw0MjQ0OihYZSxKZSxMKT0+e0woOTU3NjcpLEwoOTYyNTMpLEwoMjU2NDUpfSw2Nzc5NTooWGUsSmUsTCk9PntMKDUzMzY0KSxMKDUxNDMyKSxMKDI2NTYyKSxMKDg0NDE2KSxMKDk4NjgxKSxMKDMyMjEzKSxMKDYzNDcx''@;'; put 'put ''KSxMKDQzMjkpLEwoMjUxNTkpLEwoMjU2NDUpfSwyNDk2MzpYZT0+e1hlLmV4cG9ydHM9ZnVuY3Rpb24oSmUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBKZSl0aHJvdyBUeXBlRXJyb3IoSmUrIiBpcyBub3QgYSBmdW5jdGlvbiEiKTtyZXR1cm4gSmV9fSw4MzM2NTooWGUsSmUsTCk9Pnt2YXIg''@;'; put 'put ''bWU9TCg5MjAzMik7WGUuZXhwb3J0cz1mdW5jdGlvbihCLEUpe2lmKCJudW1iZXIiIT10eXBlb2YgQiYmIk51bWJlciIhPW1lKEIpKXRocm93IFR5cGVFcnJvcihFKTtyZXR1cm4rQn19LDE3NzIyOihYZSxKZSxMKT0+e3ZhciBtZT1MKDg2MzE0KSgidW5zY29wYWJsZXMiKSxCPUFycmF5LnBy''@;'; put 'put ''b3RvdHlwZTtudWxsPT1CW21lXSYmTCg4NzcyOCkoQixtZSx7fSksWGUuZXhwb3J0cz1mdW5jdGlvbihFKXtCW21lXVtFXT0hMH19LDc2NzkzOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgyNDQ5NikoITApO1hlLmV4cG9ydHM9ZnVuY3Rpb24oQixFLEVlKXtyZXR1cm4gRSso''@;'; put 'put ''RWU/bWUoQixFKS5sZW5ndGg6MSl9fSw4MzMyODpYZT0+e1hlLmV4cG9ydHM9ZnVuY3Rpb24oSmUsTCxtZSxCKXtpZighKEplIGluc3RhbmNlb2YgTCl8fHZvaWQgMCE9PUImJkIgaW4gSmUpdGhyb3cgVHlwZUVycm9yKG1lKyI6IGluY29ycmVjdCBpbnZvY2F0aW9uISIpO3JldHVybiBKZX19''@;'; put 'put ''LDI3MDA3OihYZSxKZSxMKT0+e3ZhciBtZT1MKDU1Mjg2KTtYZS5leHBvcnRzPWZ1bmN0aW9uKEIpe2lmKCFtZShCKSl0aHJvdyBUeXBlRXJyb3IoQisiIGlzIG5vdCBhbiBvYmplY3QhIik7cmV0dXJuIEJ9fSw1MjE2OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgyMDUwOCks''@;'; put 'put ''Qj1MKDkyMzM3KSxFPUwoMTA4NzUpO1hlLmV4cG9ydHM9W10uY29weVdpdGhpbnx8ZnVuY3Rpb24oVSxRKXt2YXIgaj1tZSh0aGlzKSxyZT1FKGoubGVuZ3RoKSxhZT1CKFUscmUpLFk9QihRLHJlKSxXPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwLE49TWF0aC5taW4o''@;'; put 'put ''KHZvaWQgMD09PVc/cmU6QihXLHJlKSktWSxyZS1hZSksdGU9MTtmb3IoWTxhZSYmYWU8WStOJiYodGU9LTEsWSs9Ti0xLGFlKz1OLTEpO04tLSA+MDspWSBpbiBqP2pbYWVdPWpbWV06ZGVsZXRlIGpbYWVdLGFlKz10ZSxZKz10ZTtyZXR1cm4gan19LDQ2ODUyOihYZSxKZSxMKT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgbWU9TCgyMDUwOCksQj1MKDkyMzM3KSxFPUwoMTA4NzUpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oVSl7Zm9yKHZhciBRPW1lKHRoaXMpLGo9RShRLmxlbmd0aCkscmU9YXJndW1lbnRzLmxlbmd0aCxhZT1CKHJlPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxqKSxZPXJlPjI/YXJn''@;'; put 'put ''dW1lbnRzWzJdOnZvaWQgMCxXPXZvaWQgMD09PVk/ajpCKFksaik7Vz5hZTspUVthZSsrXT1VO3JldHVybiBRfX0sOTQ5MDooWGUsSmUsTCk9Pnt2YXIgbWU9TCgzNTMxKTtYZS5leHBvcnRzPWZ1bmN0aW9uKEIsRSl7dmFyIEVlPVtdO3JldHVybiBtZShCLCExLEVlLnB1c2gsRWUsRSksRWV9''@;'; put 'put ''fSw3OTMxNTooWGUsSmUsTCk9Pnt2YXIgbWU9TCgyMjExMCksQj1MKDEwODc1KSxFPUwoOTIzMzcpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oRWUpe3JldHVybiBmdW5jdGlvbihVLFEsail7dmFyIFcscmU9bWUoVSksYWU9QihyZS5sZW5ndGgpLFk9RShqLGFlKTtpZihFZSYmUSE9USl7Zm9yKDth''@;'; put 'put ''ZT5ZOylpZigoVz1yZVtZKytdKSE9VylyZXR1cm4hMH1lbHNlIGZvcig7YWU+WTtZKyspaWYoKEVlfHxZIGluIHJlKSYmcmVbWV09PT1RKXJldHVybiBFZXx8WXx8MDtyZXR1cm4hRWUmJi0xfX19LDEwMDUwOihYZSxKZSxMKT0+e3ZhciBtZT1MKDc0MSksQj1MKDQ5Nzk3KSxFPUwoMjA1MDgp''@;'; put 'put ''LEVlPUwoMTA4NzUpLFU9TCgxNjg4Nik7WGUuZXhwb3J0cz1mdW5jdGlvbihRLGope3ZhciByZT0xPT1RLGFlPTI9PVEsWT0zPT1RLFc9ND09USxOPTY9PVEsdGU9NT09UXx8TixLPWp8fFU7cmV0dXJuIGZ1bmN0aW9uKEosc2Usb2Upe2Zvcih2YXIgSWUsVGUsY2U9RShKKSxkZT1CKGNlKSx2''@;'; put 'put ''ZT1tZShzZSxvZSwzKSxBZT1FZShkZS5sZW5ndGgpLGtlPTAsU2U9cmU/SyhKLEFlKTphZT9LKEosMCk6dm9pZCAwO0FlPmtlO2tlKyspaWYoKHRlfHxrZSBpbiBkZSkmJihUZT12ZShJZT1kZVtrZV0sa2UsY2UpLFEpKWlmKHJlKVNlW2tlXT1UZTtlbHNlIGlmKFRlKXN3aXRjaChRKXtjYXNl''@;'; put 'put ''IDM6cmV0dXJuITA7Y2FzZSA1OnJldHVybiBJZTtjYXNlIDY6cmV0dXJuIGtlO2Nhc2UgMjpTZS5wdXNoKEllKX1lbHNlIGlmKFcpcmV0dXJuITE7cmV0dXJuIE4/LTE6WXx8Vz9XOlNlfX19LDM3NjI4OihYZSxKZSxMKT0+e3ZhciBtZT1MKDI0OTYzKSxCPUwoMjA1MDgpLEU9TCg0OTc5Nyks''@;'; put 'put ''RWU9TCgxMDg3NSk7WGUuZXhwb3J0cz1mdW5jdGlvbihVLFEsaixyZSxhZSl7bWUoUSk7dmFyIFk9QihVKSxXPUUoWSksTj1FZShZLmxlbmd0aCksdGU9YWU/Ti0xOjAsSz1hZT8tMToxO2lmKGo8Milmb3IoOzspe2lmKHRlIGluIFcpe3JlPVdbdGVdLHRlKz1LO2JyZWFrfWlmKHRlKz1LLGFl''@;'; put 'put ''P3RlPDA6Tjw9dGUpdGhyb3cgVHlwZUVycm9yKCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIil9Zm9yKDthZT90ZT49MDpOPnRlO3RlKz1LKXRlIGluIFcmJihyZT1RKHJlLFdbdGVdLHRlLFkpKTtyZXR1cm4gcmV9fSw0MjczNjooWGUsSmUsTCk9Pnt2YXIg''@;'; put 'put ''bWU9TCg1NTI4NiksQj1MKDQzMDIpLEU9TCg4NjMxNCkoInNwZWNpZXMiKTtYZS5leHBvcnRzPWZ1bmN0aW9uKEVlKXt2YXIgVTtyZXR1cm4gQihFZSkmJigiZnVuY3Rpb24iPT10eXBlb2YoVT1FZS5jb25zdHJ1Y3RvcikmJihVPT09QXJyYXl8fEIoVS5wcm90b3R5cGUpKSYmKFU9dm9pZCAw''@;'; put 'put ''KSxtZShVKSYmbnVsbD09PShVPVVbRV0pJiYoVT12b2lkIDApKSx2b2lkIDA9PT1VP0FycmF5OlV9fSwxNjg4NjooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0MjczNik7WGUuZXhwb3J0cz1mdW5jdGlvbihCLEUpe3JldHVybiBuZXcobWUoQikpKEUpfX0sMzQzOTg6KFhlLEplLEwpPT57InVzZSBz''@;'; put 'put ''dHJpY3QiO3ZhciBtZT1MKDI0OTYzKSxCPUwoNTUyODYpLEU9TCg5NzI0MiksRWU9W10uc2xpY2UsVT17fSxRPWZ1bmN0aW9uKGoscmUsYWUpe2lmKCEocmUgaW4gVSkpe2Zvcih2YXIgWT1bXSxXPTA7VzxyZTtXKyspWVtXXT0iYVsiK1crIl0iO1VbcmVdPUZ1bmN0aW9uKCJGLGEiLCJyZXR1''@;'; put 'put ''cm4gbmV3IEYoIitZLmpvaW4oIiwiKSsiKSIpfXJldHVybiBVW3JlXShqLGFlKX07WGUuZXhwb3J0cz1GdW5jdGlvbi5iaW5kfHxmdW5jdGlvbihyZSl7dmFyIGFlPW1lKHRoaXMpLFk9RWUuY2FsbChhcmd1bWVudHMsMSksVz1mdW5jdGlvbigpe3ZhciBOPVkuY29uY2F0KEVlLmNhbGwoYXJn''@;'; put 'put ''dW1lbnRzKSk7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBXP1EoYWUsTi5sZW5ndGgsTik6RShhZSxOLHJlKX07cmV0dXJuIEIoYWUucHJvdG90eXBlKSYmKFcucHJvdG90eXBlPWFlLnByb3RvdHlwZSksV319LDQxNDg4OihYZSxKZSxMKT0+e3ZhciBtZT1MKDkyMDMyKSxCPUwoODYzMTQpKCJ0''@;'; put 'put ''b1N0cmluZ1RhZyIpLEU9IkFyZ3VtZW50cyI9PW1lKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk7WGUuZXhwb3J0cz1mdW5jdGlvbihVKXt2YXIgUSxqLHJlO3JldHVybiB2b2lkIDA9PT1VPyJVbmRlZmluZWQiOm51bGw9PT1VPyJOdWxsIjoic3RyaW5nIj09dHlwZW9mKGo9ZnVu''@;'; put 'put ''Y3Rpb24oVSxRKXt0cnl7cmV0dXJuIFVbUV19Y2F0Y2goail7fX0oUT1PYmplY3QoVSksQikpP2o6RT9tZShRKToiT2JqZWN0Ij09KHJlPW1lKFEpKSYmImZ1bmN0aW9uIj09dHlwZW9mIFEuY2FsbGVlPyJBcmd1bWVudHMiOnJlfX0sOTIwMzI6WGU9Pnt2YXIgSmU9e30udG9TdHJpbmc7WGUu''@;'; put 'put ''ZXhwb3J0cz1mdW5jdGlvbihMKXtyZXR1cm4gSmUuY2FsbChMKS5zbGljZSg4LC0xKX19LDk4MjQ6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDk5Mjc1KS5mLEI9TCg0MjUwMyksRT1MKDI0NDA4KSxFZT1MKDc0MSksVT1MKDgzMzI4KSxRPUwoMzUzMSksaj1MKDQyOTIzKSxy''@;'; put 'put ''ZT1MKDE1NDM2KSxhZT1MKDI5NzQpLFk9TCg2NzA1NyksVz1MKDg0NzI4KS5mYXN0S2V5LE49TCgxNjE2KSx0ZT1ZPyJfcyI6InNpemUiLEs9ZnVuY3Rpb24oSixzZSl7dmFyIGNlLG9lPVcoc2UpO2lmKCJGIiE9PW9lKXJldHVybiBKLl9pW29lXTtmb3IoY2U9Si5fZjtjZTtjZT1jZS5uKWlm''@;'; put 'put ''KGNlLms9PXNlKXJldHVybiBjZX07WGUuZXhwb3J0cz17Z2V0Q29uc3RydWN0b3I6ZnVuY3Rpb24oSixzZSxvZSxjZSl7dmFyIGRlPUooZnVuY3Rpb24odmUsQWUpe1UodmUsZGUsc2UsIl9pIiksdmUuX3Q9c2UsdmUuX2k9QihudWxsKSx2ZS5fZj12b2lkIDAsdmUuX2w9dm9pZCAwLHZlW3Rl''@;'; put 'put ''XT0wLG51bGwhPUFlJiZRKEFlLG9lLHZlW2NlXSx2ZSl9KTtyZXR1cm4gRShkZS5wcm90b3R5cGUse2NsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciBBZT1OKHRoaXMsc2UpLGtlPUFlLl9pLFNlPUFlLl9mO1NlO1NlPVNlLm4pU2Uucj0hMCxTZS5wJiYoU2UucD1TZS5wLm49dm9pZCAwKSxkZWxl''@;'; put 'put ''dGUga2VbU2UuaV07QWUuX2Y9QWUuX2w9dm9pZCAwLEFlW3RlXT0wfSxkZWxldGU6ZnVuY3Rpb24odmUpe3ZhciBBZT1OKHRoaXMsc2UpLGtlPUsoQWUsdmUpO2lmKGtlKXt2YXIgU2U9a2UubixJZT1rZS5wO2RlbGV0ZSBBZS5faVtrZS5pXSxrZS5yPSEwLEllJiYoSWUubj1TZSksU2UmJihT''@;'; put 'put ''ZS5wPUllKSxBZS5fZj09a2UmJihBZS5fZj1TZSksQWUuX2w9PWtlJiYoQWUuX2w9SWUpLEFlW3RlXS0tfXJldHVybiEha2V9LGZvckVhY2g6ZnVuY3Rpb24oQWUpe04odGhpcyxzZSk7Zm9yKHZhciBTZSxrZT1FZShBZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwz''@;'; put 'put ''KTtTZT1TZT9TZS5uOnRoaXMuX2Y7KWZvcihrZShTZS52LFNlLmssdGhpcyk7U2UmJlNlLnI7KVNlPVNlLnB9LGhhczpmdW5jdGlvbihBZSl7cmV0dXJuISFLKE4odGhpcyxzZSksQWUpfX0pLFkmJm1lKGRlLnByb3RvdHlwZSwic2l6ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBOKHRoaXMs''@;'; put 'put ''c2UpW3RlXX19KSxkZX0sZGVmOmZ1bmN0aW9uKEosc2Usb2Upe3ZhciBkZSx2ZSxjZT1LKEosc2UpO3JldHVybiBjZT9jZS52PW9lOihKLl9sPWNlPXtpOnZlPVcoc2UsITApLGs6c2UsdjpvZSxwOmRlPUouX2wsbjp2b2lkIDAscjohMX0sSi5fZnx8KEouX2Y9Y2UpLGRlJiYoZGUubj1jZSks''@;'; put 'put ''Slt0ZV0rKywiRiIhPT12ZSYmKEouX2lbdmVdPWNlKSksSn0sZ2V0RW50cnk6SyxzZXRTdHJvbmc6ZnVuY3Rpb24oSixzZSxvZSl7aihKLHNlLGZ1bmN0aW9uKGNlLGRlKXt0aGlzLl90PU4oY2Usc2UpLHRoaXMuX2s9ZGUsdGhpcy5fbD12b2lkIDB9LGZ1bmN0aW9uKCl7Zm9yKHZhciBjZT10''@;'; put 'put ''aGlzLGRlPWNlLl9rLHZlPWNlLl9sO3ZlJiZ2ZS5yOyl2ZT12ZS5wO3JldHVybiBjZS5fdCYmKGNlLl9sPXZlPXZlP3ZlLm46Y2UuX3QuX2YpP3JlKDAsImtleXMiPT1kZT92ZS5rOiJ2YWx1ZXMiPT1kZT92ZS52Olt2ZS5rLHZlLnZdKTooY2UuX3Q9dm9pZCAwLHJlKDEpKX0sb2U/ImVudHJp''@;'; put 'put ''ZXMiOiJ2YWx1ZXMiLCFvZSwhMCksYWUoc2UpfX19LDIzNjU3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgyNDQwOCksQj1MKDg0NzI4KS5nZXRXZWFrLEU9TCgyNzAwNyksRWU9TCg1NTI4NiksVT1MKDgzMzI4KSxRPUwoMzUzMSksaj1MKDEwMDUwKSxyZT1MKDc5MTgxKSxh''@;'; put 'put ''ZT1MKDE2MTYpLFk9aig1KSxXPWooNiksTj0wLHRlPWZ1bmN0aW9uKHNlKXtyZXR1cm4gc2UuX2x8fChzZS5fbD1uZXcgSyl9LEs9ZnVuY3Rpb24oKXt0aGlzLmE9W119LEo9ZnVuY3Rpb24oc2Usb2Upe3JldHVybiBZKHNlLmEsZnVuY3Rpb24oY2Upe3JldHVybiBjZVswXT09PW9lfSl9O0su''@;'; put 'put ''cHJvdG90eXBlPXtnZXQ6ZnVuY3Rpb24oc2Upe3ZhciBvZT1KKHRoaXMsc2UpO2lmKG9lKXJldHVybiBvZVsxXX0saGFzOmZ1bmN0aW9uKHNlKXtyZXR1cm4hIUoodGhpcyxzZSl9LHNldDpmdW5jdGlvbihzZSxvZSl7dmFyIGNlPUoodGhpcyxzZSk7Y2U/Y2VbMV09b2U6dGhpcy5hLnB1c2go''@;'; put 'put ''W3NlLG9lXSl9LGRlbGV0ZTpmdW5jdGlvbihzZSl7dmFyIG9lPVcodGhpcy5hLGZ1bmN0aW9uKGNlKXtyZXR1cm4gY2VbMF09PT1zZX0pO3JldHVybn5vZSYmdGhpcy5hLnNwbGljZShvZSwxKSwhIX5vZX19LFhlLmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKHNlLG9lLGNlLGRl''@;'; put 'put ''KXt2YXIgdmU9c2UoZnVuY3Rpb24oQWUsa2Upe1UoQWUsdmUsb2UsIl9pIiksQWUuX3Q9b2UsQWUuX2k9TisrLEFlLl9sPXZvaWQgMCxudWxsIT1rZSYmUShrZSxjZSxBZVtkZV0sQWUpfSk7cmV0dXJuIG1lKHZlLnByb3RvdHlwZSx7ZGVsZXRlOmZ1bmN0aW9uKEFlKXtpZighRWUoQWUpKXJl''@;'; put 'put ''dHVybiExO3ZhciBrZT1CKEFlKTtyZXR1cm4hMD09PWtlP3RlKGFlKHRoaXMsb2UpKS5kZWxldGUoQWUpOmtlJiZyZShrZSx0aGlzLl9pKSYmZGVsZXRlIGtlW3RoaXMuX2ldfSxoYXM6ZnVuY3Rpb24oa2Upe2lmKCFFZShrZSkpcmV0dXJuITE7dmFyIFNlPUIoa2UpO3JldHVybiEwPT09U2U/''@;'; put 'put ''dGUoYWUodGhpcyxvZSkpLmhhcyhrZSk6U2UmJnJlKFNlLHRoaXMuX2kpfX0pLHZlfSxkZWY6ZnVuY3Rpb24oc2Usb2UsY2Upe3ZhciBkZT1CKEUob2UpLCEwKTtyZXR1cm4hMD09PWRlP3RlKHNlKS5zZXQob2UsY2UpOmRlW3NlLl9pXT1jZSxzZX0sdWZzdG9yZTp0ZX19LDQ1Nzk1OihYZSxK''@;'; put 'put ''ZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgzODE2KSxCPUwoNDI5ODUpLEU9TCg3NzIzNCksRWU9TCgyNDQwOCksVT1MKDg0NzI4KSxRPUwoMzUzMSksaj1MKDgzMzI4KSxyZT1MKDU1Mjg2KSxhZT1MKDc0MjUzKSxZPUwoNzQ2MiksVz1MKDIyOTQzKSxOPUwoNDAyNjYpO1hlLmV4cG9y''@;'; put 'put ''dHM9ZnVuY3Rpb24odGUsSyxKLHNlLG9lLGNlKXt2YXIgZGU9bWVbdGVdLHZlPWRlLEFlPW9lPyJzZXQiOiJhZGQiLGtlPXZlJiZ2ZS5wcm90b3R5cGUsU2U9e30sSWU9ZnVuY3Rpb24oZWUpe3ZhciBuZT1rZVtlZV07RShrZSxlZSwiZGVsZXRlIj09ZWU/ZnVuY3Rpb24oeCl7cmV0dXJuIShj''@;'; put 'put ''ZSYmIXJlKHgpKSYmbmUuY2FsbCh0aGlzLDA9PT14PzA6eCl9OiJoYXMiPT1lZT9mdW5jdGlvbihQKXtyZXR1cm4hKGNlJiYhcmUoUCkpJiZuZS5jYWxsKHRoaXMsMD09PVA/MDpQKX06ImdldCI9PWVlP2Z1bmN0aW9uKFApe3JldHVybiBjZSYmIXJlKFApP3ZvaWQgMDpuZS5jYWxsKHRoaXMs''@;'; put 'put ''MD09PVA/MDpQKX06ImFkZCI9PWVlP2Z1bmN0aW9uKFApe3JldHVybiBuZS5jYWxsKHRoaXMsMD09PVA/MDpQKSx0aGlzfTpmdW5jdGlvbihQLFYpe3JldHVybiBuZS5jYWxsKHRoaXMsMD09PVA/MDpQLFYpLHRoaXN9KX07aWYoImZ1bmN0aW9uIj09dHlwZW9mIHZlJiYoY2V8fGtlLmZvckVh''@;'; put 'put ''Y2gmJiFhZShmdW5jdGlvbigpeyhuZXcgdmUpLmVudHJpZXMoKS5uZXh0KCl9KSkpe3ZhciBUZT1uZXcgdmUsTWU9VGVbQWVdKGNlP3t9Oi0wLDEpIT1UZSxoZT1hZShmdW5jdGlvbigpe1RlLmhhcygxKX0pLE89WShmdW5jdGlvbihlZSl7bmV3IHZlKGVlKX0pLHo9IWNlJiZhZShmdW5jdGlv''@;'; put 'put ''bigpe2Zvcih2YXIgZWU9bmV3IHZlLG5lPTU7bmUtLTspZWVbQWVdKG5lLG5lKTtyZXR1cm4hZWUuaGFzKC0wKX0pO098fCgodmU9SyhmdW5jdGlvbihlZSxuZSl7aihlZSx2ZSx0ZSk7dmFyIHg9TihuZXcgZGUsZWUsdmUpO3JldHVybiBudWxsIT1uZSYmUShuZSxvZSx4W0FlXSx4KSx4fSkp''@;'; put 'put ''LnByb3RvdHlwZT1rZSxrZS5jb25zdHJ1Y3Rvcj12ZSksKGhlfHx6KSYmKEllKCJkZWxldGUiKSxJZSgiaGFzIiksb2UmJkllKCJnZXQiKSksKHp8fE1lKSYmSWUoQWUpLGNlJiZrZS5jbGVhciYmZGVsZXRlIGtlLmNsZWFyfWVsc2UgdmU9c2UuZ2V0Q29uc3RydWN0b3IoSyx0ZSxvZSxBZSks''@;'; put 'put ''RWUodmUucHJvdG90eXBlLEopLFUuTkVFRD0hMDtyZXR1cm4gVyh2ZSx0ZSksU2VbdGVdPXZlLEIoQi5HK0IuVytCLkYqKHZlIT1kZSksU2UpLGNlfHxzZS5zZXRTdHJvbmcodmUsdGUsb2UpLHZlfX0sMjU2NDU6WGU9Pnt2YXIgSmU9WGUuZXhwb3J0cz17dmVyc2lvbjoiMi42LjEyIn07Im51''@;'; put 'put ''bWJlciI9PXR5cGVvZiBfX2UmJihfX2U9SmUpfSw5MjgxMTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoOTkyNzUpLEI9TCg5MDY4MSk7WGUuZXhwb3J0cz1mdW5jdGlvbihFLEVlLFUpe0VlIGluIEU/bWUuZihFLEVlLEIoMCxVKSk6RVtFZV09VX19LDc0MTooWGUsSmUsTCk9''@;'; put 'put ''Pnt2YXIgbWU9TCgyNDk2Myk7WGUuZXhwb3J0cz1mdW5jdGlvbihCLEUsRWUpe2lmKG1lKEIpLHZvaWQgMD09PUUpcmV0dXJuIEI7c3dpdGNoKEVlKXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKFUpe3JldHVybiBCLmNhbGwoRSxVKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihVLFEpe3JldHVy''@;'; put 'put ''biBCLmNhbGwoRSxVLFEpfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKFUsUSxqKXtyZXR1cm4gQi5jYWxsKEUsVSxRLGopfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gQi5hcHBseShFLGFyZ3VtZW50cyl9fX0sNTM1Mzc6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDc0MjUz''@;'; put 'put ''KSxCPURhdGUucHJvdG90eXBlLmdldFRpbWUsRT1EYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyxFZT1mdW5jdGlvbihVKXtyZXR1cm4gVT45P1U6IjAiK1V9O1hlLmV4cG9ydHM9bWUoZnVuY3Rpb24oKXtyZXR1cm4iMDM4NS0wNy0yNVQwNzowNjozOS45OTlaIiE9RS5jYWxsKG5ldyBEYXRl''@;'; put 'put ''KC01MDAwMDAwMDAwMDAwMSkpfSl8fCFtZShmdW5jdGlvbigpe0UuY2FsbChuZXcgRGF0ZShOYU4pKX0pP2Z1bmN0aW9uKCl7aWYoIWlzRmluaXRlKEIuY2FsbCh0aGlzKSkpdGhyb3cgUmFuZ2VFcnJvcigiSW52YWxpZCB0aW1lIHZhbHVlIik7dmFyIFE9dGhpcyxqPVEuZ2V0VVRDRnVsbFll''@;'; put 'put ''YXIoKSxyZT1RLmdldFVUQ01pbGxpc2Vjb25kcygpLGFlPWo8MD8iLSI6aj45OTk5PyIrIjoiIjtyZXR1cm4gYWUrKCIwMDAwMCIrTWF0aC5hYnMoaikpLnNsaWNlKGFlPy02Oi00KSsiLSIrRWUoUS5nZXRVVENNb250aCgpKzEpKyItIitFZShRLmdldFVUQ0RhdGUoKSkrIlQiK0VlKFEuZ2V0''@;'; put 'put ''VVRDSG91cnMoKSkrIjoiK0VlKFEuZ2V0VVRDTWludXRlcygpKSsiOiIrRWUoUS5nZXRVVENTZWNvbmRzKCkpKyIuIisocmU+OTk/cmU6IjAiK0VlKHJlKSkrIloifTpFfSw4NzA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDI3MDA3KSxCPUwoMjE2ODkpLEU9Im51bWJlciI7''@;'; put 'put ''WGUuZXhwb3J0cz1mdW5jdGlvbihFZSl7aWYoInN0cmluZyIhPT1FZSYmRWUhPT1FJiYiZGVmYXVsdCIhPT1FZSl0aHJvdyBUeXBlRXJyb3IoIkluY29ycmVjdCBoaW50Iik7cmV0dXJuIEIobWUodGhpcyksRWUhPUUpfX0sOTEzNTU6WGU9PntYZS5leHBvcnRzPWZ1bmN0aW9uKEplKXtpZihu''@;'; put 'put ''dWxsPT1KZSl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNhbGwgbWV0aG9kIG9uICAiK0plKTtyZXR1cm4gSmV9fSw2NzA1NzooWGUsSmUsTCk9PntYZS5leHBvcnRzPSFMKDc0MjUzKShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sImEiLHtnZXQ6ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gN319KS5hfSl9LDYyNDU3OihYZSxKZSxMKT0+e3ZhciBtZT1MKDU1Mjg2KSxCPUwoMzgxNikuZG9jdW1lbnQsRT1tZShCKSYmbWUoQi5jcmVhdGVFbGVtZW50KTtYZS5leHBvcnRzPWZ1bmN0aW9uKEVlKXtyZXR1cm4gRT9CLmNyZWF0ZUVsZW1lbnQoRWUpOnt9fX0sNzQ0''@;'; put 'put ''MzA6WGU9PntYZS5leHBvcnRzPSJjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YiLnNwbGl0KCIsIil9LDU1NDE6KFhlLEplLEwpPT57dmFyIG1lPUwoNDcxODQpLEI9TCg2''@;'; put 'put ''NDU0OCksRT1MKDE0NjgyKTtYZS5leHBvcnRzPWZ1bmN0aW9uKEVlKXt2YXIgVT1tZShFZSksUT1CLmY7aWYoUSlmb3IodmFyIFksaj1RKEVlKSxyZT1FLmYsYWU9MDtqLmxlbmd0aD5hZTspcmUuY2FsbChFZSxZPWpbYWUrK10pJiZVLnB1c2goWSk7cmV0dXJuIFV9fSw0Mjk4NTooWGUsSmUs''@;'; put 'put ''TCk9Pnt2YXIgbWU9TCgzODE2KSxCPUwoMjU2NDUpLEU9TCg4NzcyOCksRWU9TCg3NzIzNCksVT1MKDc0MSksUT0icHJvdG90eXBlIixqPWZ1bmN0aW9uKHJlLGFlLFkpe3ZhciBkZSx2ZSxBZSxrZSxXPXJlJmouRixOPXJlJmouRyxLPXJlJmouUCxKPXJlJmouQixzZT1OP21lOnJlJmouUz9t''@;'; put 'put ''ZVthZV18fChtZVthZV09e30pOihtZVthZV18fHt9KVtRXSxvZT1OP0I6QlthZV18fChCW2FlXT17fSksY2U9b2VbUV18fChvZVtRXT17fSk7Zm9yKGRlIGluIE4mJihZPWFlKSxZKUFlPSgodmU9IVcmJnNlJiZ2b2lkIDAhPT1zZVtkZV0pP3NlOlkpW2RlXSxrZT1KJiZ2ZT9VKEFlLG1lKTpL''@;'; put 'put ''JiYiZnVuY3Rpb24iPT10eXBlb2YgQWU/VShGdW5jdGlvbi5jYWxsLEFlKTpBZSxzZSYmRWUoc2UsZGUsQWUscmUmai5VKSxvZVtkZV0hPUFlJiZFKG9lLGRlLGtlKSxLJiZjZVtkZV0hPUFlJiYoY2VbZGVdPUFlKX07bWUuY29yZT1CLGouRj0xLGouRz0yLGouUz00LGouUD04LGouQj0xNixq''@;'; put 'put ''Llc9MzIsai5VPTY0LGouUj0xMjgsWGUuZXhwb3J0cz1qfSw4ODUyOihYZSxKZSxMKT0+e3ZhciBtZT1MKDg2MzE0KSgibWF0Y2giKTtYZS5leHBvcnRzPWZ1bmN0aW9uKEIpe3ZhciBFPS8uLzt0cnl7Ii8uLyJbQl0oRSl9Y2F0Y2goRWUpe3RyeXtyZXR1cm4gRVttZV09ITEsISIvLi8iW0Jd''@;'; put 'put ''KEUpfWNhdGNoKFUpe319cmV0dXJuITB9fSw3NDI1MzpYZT0+e1hlLmV4cG9ydHM9ZnVuY3Rpb24oSmUpe3RyeXtyZXR1cm4hIUplKCl9Y2F0Y2goTCl7cmV0dXJuITB9fX0sMjgwODI6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0woMTgyNjkpO3ZhciBtZT1MKDc3MjM0KSxCPUwoODc3Mjgp''@;'; put 'put ''LEU9TCg3NDI1MyksRWU9TCg5MTM1NSksVT1MKDg2MzE0KSxRPUwoMjExNjUpLGo9VSgic3BlY2llcyIpLHJlPSFFKGZ1bmN0aW9uKCl7dmFyIFk9Ly4vO3JldHVybiBZLmV4ZWM9ZnVuY3Rpb24oKXt2YXIgVz1bXTtyZXR1cm4gVy5ncm91cHM9e2E6IjcifSxXfSwiNyIhPT0iIi5yZXBsYWNl''@;'; put 'put ''KFksIiQ8YT4iKX0pLGFlPWZ1bmN0aW9uKCl7dmFyIFk9Lyg/OikvLFc9WS5leGVjO1kuZXhlYz1mdW5jdGlvbigpe3JldHVybiBXLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07dmFyIE49ImFiIi5zcGxpdChZKTtyZXR1cm4gMj09PU4ubGVuZ3RoJiYiYSI9PT1OWzBdJiYiYiI9PT1OWzFdfSgp''@;'; put 'put ''O1hlLmV4cG9ydHM9ZnVuY3Rpb24oWSxXLE4pe3ZhciB0ZT1VKFkpLEs9IUUoZnVuY3Rpb24oKXt2YXIgdmU9e307cmV0dXJuIHZlW3RlXT1mdW5jdGlvbigpe3JldHVybiA3fSw3IT0iIltZXSh2ZSl9KSxKPUs/IUUoZnVuY3Rpb24oKXt2YXIgdmU9ITEsQWU9L2EvO3JldHVybiBBZS5leGVj''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuIHZlPSEwLG51bGx9LCJzcGxpdCI9PT1ZJiYoQWUuY29uc3RydWN0b3I9e30sQWUuY29uc3RydWN0b3Jbal09ZnVuY3Rpb24oKXtyZXR1cm4gQWV9KSxBZVt0ZV0oIiIpLCF2ZX0pOnZvaWQgMDtpZighS3x8IUp8fCJyZXBsYWNlIj09PVkmJiFyZXx8InNwbGl0''@;'; put 'put ''Ij09PVkmJiFhZSl7dmFyIHNlPS8uL1t0ZV0sb2U9TihFZSx0ZSwiIltZXSxmdW5jdGlvbihBZSxrZSxTZSxJZSxUZSl7cmV0dXJuIGtlLmV4ZWM9PT1RP0smJiFUZT97ZG9uZTohMCx2YWx1ZTpzZS5jYWxsKGtlLFNlLEllKX06e2RvbmU6ITAsdmFsdWU6QWUuY2FsbChTZSxrZSxJZSl9Ontk''@;'; put 'put ''b25lOiExfX0pLGRlPW9lWzFdO21lKFN0cmluZy5wcm90b3R5cGUsWSxvZVswXSksQihSZWdFeHAucHJvdG90eXBlLHRlLDI9PVc/ZnVuY3Rpb24odmUsQWUpe3JldHVybiBkZS5jYWxsKHZlLHRoaXMsQWUpfTpmdW5jdGlvbih2ZSl7cmV0dXJuIGRlLmNhbGwodmUsdGhpcyl9KX19fSw1MzIx''@;'; put 'put ''ODooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoMjcwMDcpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgQj1tZSh0aGlzKSxFPSIiO3JldHVybiBCLmdsb2JhbCYmKEUrPSJnIiksQi5pZ25vcmVDYXNlJiYoRSs9ImkiKSxCLm11bHRpbGluZSYmKEUrPSJtIiksQi51bmljb2Rl''@;'; put 'put ''JiYoRSs9InUiKSxCLnN0aWNreSYmKEUrPSJ5IiksRX19LDM1MzE6KFhlLEplLEwpPT57dmFyIG1lPUwoNzQxKSxCPUwoMjg4NTEpLEU9TCg4NjU1NSksRWU9TCgyNzAwNyksVT1MKDEwODc1KSxRPUwoNjkwMDIpLGo9e30scmU9e30sYWU9WGUuZXhwb3J0cz1mdW5jdGlvbihZLFcsTix0ZSxL''@;'; put 'put ''KXt2YXIgY2UsZGUsdmUsQWUsSj1LP2Z1bmN0aW9uKCl7cmV0dXJuIFl9OlEoWSksc2U9bWUoTix0ZSxXPzI6MSksb2U9MDtpZigiZnVuY3Rpb24iIT10eXBlb2YgSil0aHJvdyBUeXBlRXJyb3IoWSsiIGlzIG5vdCBpdGVyYWJsZSEiKTtpZihFKEopKXtmb3IoY2U9VShZLmxlbmd0aCk7Y2U+''@;'; put 'put ''b2U7b2UrKylpZigoQWU9Vz9zZShFZShkZT1ZW29lXSlbMF0sZGVbMV0pOnNlKFlbb2VdKSk9PT1qfHxBZT09PXJlKXJldHVybiBBZX1lbHNlIGZvcih2ZT1KLmNhbGwoWSk7IShkZT12ZS5uZXh0KCkpLmRvbmU7KWlmKChBZT1CKHZlLHNlLGRlLnZhbHVlLFcpKT09PWp8fEFlPT09cmUpcmV0''@;'; put 'put ''dXJuIEFlfTthZS5CUkVBSz1qLGFlLlJFVFVSTj1yZX0sNDAwMTg6KFhlLEplLEwpPT57WGUuZXhwb3J0cz1MKDM4MjUpKCJuYXRpdmUtZnVuY3Rpb24tdG8tc3RyaW5nIixGdW5jdGlvbi50b1N0cmluZyl9LDM4MTY6WGU9Pnt2YXIgSmU9WGUuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9m''@;'; put 'put ''IHdpbmRvdyYmd2luZG93Lk1hdGg9PU1hdGg/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZi5NYXRoPT1NYXRoP3NlbGY6RnVuY3Rpb24oInJldHVybiB0aGlzIikoKTsibnVtYmVyIj09dHlwZW9mIF9fZyYmKF9fZz1KZSl9LDc5MTgxOlhlPT57dmFyIEplPXt9Lmhhc093''@;'; put 'put ''blByb3BlcnR5O1hlLmV4cG9ydHM9ZnVuY3Rpb24oTCxtZSl7cmV0dXJuIEplLmNhbGwoTCxtZSl9fSw4NzcyODooWGUsSmUsTCk9Pnt2YXIgbWU9TCg5OTI3NSksQj1MKDkwNjgxKTtYZS5leHBvcnRzPUwoNjcwNTcpP2Z1bmN0aW9uKEUsRWUsVSl7cmV0dXJuIG1lLmYoRSxFZSxCKDEsVSkp''@;'; put 'put ''fTpmdW5jdGlvbihFLEVlLFUpe3JldHVybiBFW0VlXT1VLEV9fSw0MDYzOTooWGUsSmUsTCk9Pnt2YXIgbWU9TCgzODE2KS5kb2N1bWVudDtYZS5leHBvcnRzPW1lJiZtZS5kb2N1bWVudEVsZW1lbnR9LDE3MzQ6KFhlLEplLEwpPT57WGUuZXhwb3J0cz0hTCg2NzA1NykmJiFMKDc0MjUzKShm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoTCg2MjQ1NykoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSw0MDI2NjooWGUsSmUsTCk9Pnt2YXIgbWU9TCg1NTI4NiksQj1MKDI3Mzc1KS5zZXQ7WGUuZXhwb3J0cz1mdW5jdGlvbihF''@;'; put 'put ''LEVlLFUpe3ZhciBqLFE9RWUuY29uc3RydWN0b3I7cmV0dXJuIFEhPT1VJiYiZnVuY3Rpb24iPT10eXBlb2YgUSYmKGo9US5wcm90b3R5cGUpIT09VS5wcm90b3R5cGUmJm1lKGopJiZCJiZCKEUsaiksRX19LDk3MjQyOlhlPT57WGUuZXhwb3J0cz1mdW5jdGlvbihKZSxMLG1lKXt2YXIgQj12''@;'; put 'put ''b2lkIDA9PT1tZTtzd2l0Y2goTC5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gQj9KZSgpOkplLmNhbGwobWUpO2Nhc2UgMTpyZXR1cm4gQj9KZShMWzBdKTpKZS5jYWxsKG1lLExbMF0pO2Nhc2UgMjpyZXR1cm4gQj9KZShMWzBdLExbMV0pOkplLmNhbGwobWUsTFswXSxMWzFdKTtjYXNlIDM6cmV0''@;'; put 'put ''dXJuIEI/SmUoTFswXSxMWzFdLExbMl0pOkplLmNhbGwobWUsTFswXSxMWzFdLExbMl0pO2Nhc2UgNDpyZXR1cm4gQj9KZShMWzBdLExbMV0sTFsyXSxMWzNdKTpKZS5jYWxsKG1lLExbMF0sTFsxXSxMWzJdLExbM10pfXJldHVybiBKZS5hcHBseShtZSxMKX19LDQ5Nzk3OihYZSxKZSxMKT0+''@;'; put 'put ''e3ZhciBtZT1MKDkyMDMyKTtYZS5leHBvcnRzPU9iamVjdCgieiIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApP09iamVjdDpmdW5jdGlvbihCKXtyZXR1cm4iU3RyaW5nIj09bWUoQik/Qi5zcGxpdCgiIik6T2JqZWN0KEIpfX0sODY1NTU6KFhlLEplLEwpPT57dmFyIG1lPUwoODcyMzQpLEI9''@;'; put 'put ''TCg4NjMxNCkoIml0ZXJhdG9yIiksRT1BcnJheS5wcm90b3R5cGU7WGUuZXhwb3J0cz1mdW5jdGlvbihFZSl7cmV0dXJuIHZvaWQgMCE9PUVlJiYobWUuQXJyYXk9PT1FZXx8RVtCXT09PUVlKX19LDQzMDI6KFhlLEplLEwpPT57dmFyIG1lPUwoOTIwMzIpO1hlLmV4cG9ydHM9QXJyYXkuaXNB''@;'; put 'put ''cnJheXx8ZnVuY3Rpb24oRSl7cmV0dXJuIkFycmF5Ij09bWUoRSl9fSwxODM2NzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg1NTI4NiksQj1NYXRoLmZsb29yO1hlLmV4cG9ydHM9ZnVuY3Rpb24oRWUpe3JldHVybiFtZShFZSkmJmlzRmluaXRlKEVlKSYmQihFZSk9PT1FZX19LDU1Mjg2OlhlPT57''@;'; put 'put ''WGUuZXhwb3J0cz1mdW5jdGlvbihKZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBKZT9udWxsIT09SmU6ImZ1bmN0aW9uIj09dHlwZW9mIEplfX0sNTUzNjQ6KFhlLEplLEwpPT57dmFyIG1lPUwoNTUyODYpLEI9TCg5MjAzMiksRT1MKDg2MzE0KSgibWF0Y2giKTtYZS5leHBvcnRzPWZ1bmN0''@;'; put 'put ''aW9uKEVlKXt2YXIgVTtyZXR1cm4gbWUoRWUpJiYodm9pZCAwIT09KFU9RWVbRV0pPyEhVToiUmVnRXhwIj09QihFZSkpfX0sMjg4NTE6KFhlLEplLEwpPT57dmFyIG1lPUwoMjcwMDcpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oQixFLEVlLFUpe3RyeXtyZXR1cm4gVT9FKG1lKEVlKVswXSxFZVsx''@;'; put 'put ''XSk6RShFZSl9Y2F0Y2goail7dmFyIFE9Qi5yZXR1cm47dGhyb3cgdm9pZCAwIT09USYmbWUoUS5jYWxsKEIpKSxqfX19LDQ5OTg4OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg0MjUwMyksQj1MKDkwNjgxKSxFPUwoMjI5NDMpLEVlPXt9O0woODc3MjgpKEVlLEwoODYzMTQp''@;'; put 'put ''KCJpdGVyYXRvciIpLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxYZS5leHBvcnRzPWZ1bmN0aW9uKFUsUSxqKXtVLnByb3RvdHlwZT1tZShFZSx7bmV4dDpCKDEsail9KSxFKFUsUSsiIEl0ZXJhdG9yIil9fSw0MjkyMzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoNDQ2MSks''@;'; put 'put ''Qj1MKDQyOTg1KSxFPUwoNzcyMzQpLEVlPUwoODc3MjgpLFU9TCg4NzIzNCksUT1MKDQ5OTg4KSxqPUwoMjI5NDMpLHJlPUwoNDY4KSxhZT1MKDg2MzE0KSgiaXRlcmF0b3IiKSxZPSEoW10ua2V5cyYmIm5leHQiaW5bXS5rZXlzKCkpLE49ImtleXMiLHRlPSJ2YWx1ZXMiLEs9ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gdGhpc307WGUuZXhwb3J0cz1mdW5jdGlvbihKLHNlLG9lLGNlLGRlLHZlLEFlKXtRKG9lLHNlLGNlKTt2YXIgbmUseCxQLGtlPWZ1bmN0aW9uKFYpe2lmKCFZJiZWIGluIE1lKXJldHVybiBNZVtWXTtzd2l0Y2goVil7Y2FzZSBOOmNhc2UgdGU6cmV0dXJuIGZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIG5ldyBvZSh0aGlzLFYpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG9lKHRoaXMsVil9fSxTZT1zZSsiIEl0ZXJhdG9yIixJZT1kZT09dGUsVGU9ITEsTWU9Si5wcm90b3R5cGUsaGU9TWVbYWVdfHxNZVsiQEBpdGVyYXRvciJdfHxkZSYmTWVbZGVdLE89aGV8fGtlKGRl''@;'; put 'put ''KSx6PWRlP0llP2tlKCJlbnRyaWVzIik6Tzp2b2lkIDAsZWU9IkFycmF5Ij09c2UmJk1lLmVudHJpZXN8fGhlO2lmKGVlJiYoUD1yZShlZS5jYWxsKG5ldyBKKSkpIT09T2JqZWN0LnByb3RvdHlwZSYmUC5uZXh0JiYoaihQLFNlLCEwKSwhbWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBQW2FlXSYm''@;'; put 'put ''RWUoUCxhZSxLKSksSWUmJmhlJiZoZS5uYW1lIT09dGUmJihUZT0hMCxPPWZ1bmN0aW9uKCl7cmV0dXJuIGhlLmNhbGwodGhpcyl9KSwoIW1lfHxBZSkmJihZfHxUZXx8IU1lW2FlXSkmJkVlKE1lLGFlLE8pLFVbc2VdPU8sVVtTZV09SyxkZSlpZihuZT17dmFsdWVzOkllP086a2UodGUpLGtl''@;'; put 'put ''eXM6dmU/TzprZShOKSxlbnRyaWVzOnp9LEFlKWZvcih4IGluIG5lKXggaW4gTWV8fEUoTWUseCxuZVt4XSk7ZWxzZSBCKEIuUCtCLkYqKFl8fFRlKSxzZSxuZSk7cmV0dXJuIG5lfX0sNzQ2MjooWGUsSmUsTCk9Pnt2YXIgbWU9TCg4NjMxNCkoIml0ZXJhdG9yIiksQj0hMTt0cnl7dmFyIEU9''@;'; put 'put ''WzddW21lXSgpO0UucmV0dXJuPWZ1bmN0aW9uKCl7Qj0hMH0sQXJyYXkuZnJvbShFLGZ1bmN0aW9uKCl7dGhyb3cgMn0pfWNhdGNoKEVlKXt9WGUuZXhwb3J0cz1mdW5jdGlvbihFZSxVKXtpZighVSYmIUIpcmV0dXJuITE7dmFyIFE9ITE7dHJ5e3ZhciBqPVs3XSxyZT1qW21lXSgpO3JlLm5l''@;'; put 'put ''eHQ9ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTpRPSEwfX0salttZV09ZnVuY3Rpb24oKXtyZXR1cm4gcmV9LEVlKGopfWNhdGNoKGFlKXt9cmV0dXJuIFF9fSwxNTQzNjpYZT0+e1hlLmV4cG9ydHM9ZnVuY3Rpb24oSmUsTCl7cmV0dXJue3ZhbHVlOkwsZG9uZTohIUplfX19LDg3MjM0OlhlPT57''@;'; put 'put ''WGUuZXhwb3J0cz17fX0sNDQ2MTpYZT0+e1hlLmV4cG9ydHM9ITF9LDEzMDg2OlhlPT57dmFyIEplPU1hdGguZXhwbTE7WGUuZXhwb3J0cz0hSmV8fEplKDEwKT4yMjAyNS40NjU3OTQ4MDY3MTh8fEplKDEwKTwyMjAyNS40NjU3OTQ4MDY3MTh8fC0yZS0xNyE9SmUoLTJlLTE3KT9mdW5jdGlv''@;'; put 'put ''bihtZSl7cmV0dXJuIDA9PShtZT0rbWUpP21lOm1lPi0xZS02JiZtZTwxZS02P21lK21lKm1lLzI6TWF0aC5leHAobWUpLTF9OkplfSwzNDkzNDooWGUsSmUsTCk9Pnt2YXIgbWU9TCg2MTgwMSksQj1NYXRoLnBvdyxFPUIoMiwtNTIpLEVlPUIoMiwtMjMpLFU9QigyLDEyNykqKDItRWUpLFE9''@;'; put 'put ''QigyLC0xMjYpO1hlLmV4cG9ydHM9TWF0aC5mcm91bmR8fGZ1bmN0aW9uKGFlKXt2YXIgTix0ZSxZPU1hdGguYWJzKGFlKSxXPW1lKGFlKTtyZXR1cm4gWTxRP1cqKFkvUS9FZSsxL0UtMS9FKSpRKkVlOih0ZT0oTj0oMStFZS9FKSpZKS0oTi1ZKSk+VXx8dGUhPXRlP1cqKDEvMCk6Vyp0ZX19''@;'; put 'put ''LDQ2MjA2OlhlPT57WGUuZXhwb3J0cz1NYXRoLmxvZzFwfHxmdW5jdGlvbihMKXtyZXR1cm4oTD0rTCk+LTFlLTgmJkw8MWUtOD9MLUwqTC8yOk1hdGgubG9nKDErTCl9fSw2MTgwMTpYZT0+e1hlLmV4cG9ydHM9TWF0aC5zaWdufHxmdW5jdGlvbihMKXtyZXR1cm4gMD09KEw9K0wpfHxMIT1M''@;'; put 'put ''P0w6TDwwPy0xOjF9fSw4NDcyODooWGUsSmUsTCk9Pnt2YXIgbWU9TCg5Mzk1MykoIm1ldGEiKSxCPUwoNTUyODYpLEU9TCg3OTE4MSksRWU9TCg5OTI3NSkuZixVPTAsUT1PYmplY3QuaXNFeHRlbnNpYmxlfHxmdW5jdGlvbigpe3JldHVybiEwfSxqPSFMKDc0MjUzKShmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBRKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpfSkscmU9ZnVuY3Rpb24odGUpe0VlKHRlLG1lLHt2YWx1ZTp7aToiTyIrICsrVSx3Ont9fX0pfSxOPVhlLmV4cG9ydHM9e0tFWTptZSxORUVEOiExLGZhc3RLZXk6ZnVuY3Rpb24odGUsSyl7aWYoIUIodGUpKXJldHVybiJzeW1i''@;'; put 'put ''b2wiPT10eXBlb2YgdGU/dGU6KCJzdHJpbmciPT10eXBlb2YgdGU/IlMiOiJQIikrdGU7aWYoIUUodGUsbWUpKXtpZighUSh0ZSkpcmV0dXJuIkYiO2lmKCFLKXJldHVybiJFIjtyZSh0ZSl9cmV0dXJuIHRlW21lXS5pfSxnZXRXZWFrOmZ1bmN0aW9uKHRlLEspe2lmKCFFKHRlLG1lKSl7aWYo''@;'; put 'put ''IVEodGUpKXJldHVybiEwO2lmKCFLKXJldHVybiExO3JlKHRlKX1yZXR1cm4gdGVbbWVdLnd9LG9uRnJlZXplOmZ1bmN0aW9uKHRlKXtyZXR1cm4gaiYmTi5ORUVEJiZRKHRlKSYmIUUodGUsbWUpJiZyZSh0ZSksdGV9fX0sNTAxMzM6KFhlLEplLEwpPT57dmFyIG1lPUwoODg0MTYpLEI9TCg0''@;'; put 'put ''Mjk4NSksRT1MKDM4MjUpKCJtZXRhZGF0YSIpLEVlPUUuc3RvcmV8fChFLnN0b3JlPW5ldyhMKDMwMTQ3KSkpLFU9ZnVuY3Rpb24oTix0ZSxLKXt2YXIgSj1FZS5nZXQoTik7aWYoIUope2lmKCFLKXJldHVybjtFZS5zZXQoTixKPW5ldyBtZSl9dmFyIHNlPUouZ2V0KHRlKTtpZighc2Upe2lm''@;'; put 'put ''KCFLKXJldHVybjtKLnNldCh0ZSxzZT1uZXcgbWUpfXJldHVybiBzZX07WGUuZXhwb3J0cz17c3RvcmU6RWUsbWFwOlUsaGFzOmZ1bmN0aW9uKE4sdGUsSyl7dmFyIEo9VSh0ZSxLLCExKTtyZXR1cm4gdm9pZCAwIT09SiYmSi5oYXMoTil9LGdldDpmdW5jdGlvbihOLHRlLEspe3ZhciBKPVUo''@;'; put 'put ''dGUsSywhMSk7cmV0dXJuIHZvaWQgMD09PUo/dm9pZCAwOkouZ2V0KE4pfSxzZXQ6ZnVuY3Rpb24oTix0ZSxLLEope1UoSyxKLCEwKS5zZXQoTix0ZSl9LGtleXM6ZnVuY3Rpb24oTix0ZSl7dmFyIEs9VShOLHRlLCExKSxKPVtdO3JldHVybiBLJiZLLmZvckVhY2goZnVuY3Rpb24oc2Usb2Up''@;'; put 'put ''e0oucHVzaChvZSl9KSxKfSxrZXk6ZnVuY3Rpb24oTil7cmV0dXJuIHZvaWQgMD09PU58fCJzeW1ib2wiPT10eXBlb2YgTj9OOlN0cmluZyhOKX0sZXhwOmZ1bmN0aW9uKE4pe0IoQi5TLCJSZWZsZWN0IixOKX19fSwzNTM0NTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoNjcw''@;'; put 'put ''NTcpLEI9TCg0NzE4NCksRT1MKDY0NTQ4KSxFZT1MKDE0NjgyKSxVPUwoMjA1MDgpLFE9TCg0OTc5Nyksaj1PYmplY3QuYXNzaWduO1hlLmV4cG9ydHM9IWp8fEwoNzQyNTMpKGZ1bmN0aW9uKCl7dmFyIHJlPXt9LGFlPXt9LFk9U3ltYm9sKCksVz0iYWJjZGVmZ2hpamtsbW5vcHFyc3QiO3Jl''@;'; put 'put ''dHVybiByZVtZXT03LFcuc3BsaXQoIiIpLmZvckVhY2goZnVuY3Rpb24oTil7YWVbTl09Tn0pLDchPWooe30scmUpW1ldfHxPYmplY3Qua2V5cyhqKHt9LGFlKSkuam9pbigiIikhPVd9KT9mdW5jdGlvbihhZSxZKXtmb3IodmFyIFc9VShhZSksTj1hcmd1bWVudHMubGVuZ3RoLHRlPTEsSz1F''@;'; put 'put ''LmYsSj1FZS5mO04+dGU7KWZvcih2YXIgdmUsc2U9UShhcmd1bWVudHNbdGUrK10pLG9lPUs/QihzZSkuY29uY2F0KEsoc2UpKTpCKHNlKSxjZT1vZS5sZW5ndGgsZGU9MDtjZT5kZTspdmU9b2VbZGUrK10sKCFtZXx8Si5jYWxsKHNlLHZlKSkmJihXW3ZlXT1zZVt2ZV0pO3JldHVybiBXfTpq''@;'; put 'put ''fSw0MjUwMzooWGUsSmUsTCk9Pnt2YXIgbWU9TCgyNzAwNyksQj1MKDM1NTg4KSxFPUwoNzQ0MzApLEVlPUwoNjkzMzUpKCJJRV9QUk9UTyIpLFU9ZnVuY3Rpb24oKXt9LFE9InByb3RvdHlwZSIsaj1mdW5jdGlvbigpe3ZhciBOLHJlPUwoNjI0NTcpKCJpZnJhbWUiKSxhZT1FLmxlbmd0aDtm''@;'; put 'put ''b3IocmUuc3R5bGUuZGlzcGxheT0ibm9uZSIsTCg0MDYzOSkuYXBwZW5kQ2hpbGQocmUpLHJlLnNyYz0iamF2YXNjcmlwdDoiLChOPXJlLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKSxOLndyaXRlKCI8c2NyaXB0PmRvY3VtZW50LkY9T2JqZWN0PFwvc2NyaXB0PiIpLE4uY2xvc2Uo''@;'; put 'put ''KSxqPU4uRjthZS0tOylkZWxldGUgaltRXVtFW2FlXV07cmV0dXJuIGooKX07WGUuZXhwb3J0cz1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbihhZSxZKXt2YXIgVztyZXR1cm4gbnVsbCE9PWFlPyhVW1FdPW1lKGFlKSxXPW5ldyBVLFVbUV09bnVsbCxXW0VlXT1hZSk6Vz1qKCksdm9pZCAwPT09''@;'; put 'put ''WT9XOkIoVyxZKX19LDk5Mjc1OihYZSxKZSxMKT0+e3ZhciBtZT1MKDI3MDA3KSxCPUwoMTczNCksRT1MKDIxNjg5KSxFZT1PYmplY3QuZGVmaW5lUHJvcGVydHk7SmUuZj1MKDY3MDU3KT9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oUSxqLHJlKXtpZihtZShRKSxqPUUoaiwhMCks''@;'; put 'put ''bWUocmUpLEIpdHJ5e3JldHVybiBFZShRLGoscmUpfWNhdGNoKGFlKXt9aWYoImdldCJpbiByZXx8InNldCJpbiByZSl0aHJvdyBUeXBlRXJyb3IoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkISIpO3JldHVybiJ2YWx1ZSJpbiByZSYmKFFbal09cmUudmFsdWUpLFF9fSwzNTU4ODooWGUsSmUs''@;'; put 'put ''TCk9Pnt2YXIgbWU9TCg5OTI3NSksQj1MKDI3MDA3KSxFPUwoNDcxODQpO1hlLmV4cG9ydHM9TCg2NzA1Nyk/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24oVSxRKXtCKFUpO2Zvcih2YXIgWSxqPUUoUSkscmU9ai5sZW5ndGgsYWU9MDtyZT5hZTspbWUuZihVLFk9althZSsrXSxR''@;'; put 'put ''W1ldKTtyZXR1cm4gVX19LDE4NjkzOihYZSxKZSxMKT0+e3ZhciBtZT1MKDE0NjgyKSxCPUwoOTA2ODEpLEU9TCgyMjExMCksRWU9TCgyMTY4OSksVT1MKDc5MTgxKSxRPUwoMTczNCksaj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO0plLmY9TCg2NzA1Nyk/ajpmdW5jdGlvbihh''@;'; put 'put ''ZSxZKXtpZihhZT1FKGFlKSxZPUVlKFksITApLFEpdHJ5e3JldHVybiBqKGFlLFkpfWNhdGNoKFcpe31pZihVKGFlLFkpKXJldHVybiBCKCFtZS5mLmNhbGwoYWUsWSksYWVbWV0pfX0sMzkzMjc6KFhlLEplLEwpPT57dmFyIG1lPUwoMjIxMTApLEI9TCgyMDYxNikuZixFPXt9LnRvU3RyaW5n''@;'; put 'put ''LEVlPSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzP09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdyk6W107WGUuZXhwb3J0cy5mPWZ1bmN0aW9uKGope3JldHVybiBFZSYmIltvYmplY3QgV2luZG93XSI9PUUuY2FsbChq''@;'; put 'put ''KT9mdW5jdGlvbihRKXt0cnl7cmV0dXJuIEIoUSl9Y2F0Y2goail7cmV0dXJuIEVlLnNsaWNlKCl9fShqKTpCKG1lKGopKX19LDIwNjE2OihYZSxKZSxMKT0+e3ZhciBtZT1MKDYwMTg5KSxCPUwoNzQ0MzApLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7SmUuZj1PYmplY3QuZ2V0T3du''@;'; put 'put ''UHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24oRWUpe3JldHVybiBtZShFZSxCKX19LDY0NTQ4OihYZSxKZSk9PntKZS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LDQ2ODooWGUsSmUsTCk9Pnt2YXIgbWU9TCg3OTE4MSksQj1MKDIwNTA4KSxFPUwoNjkzMzUpKCJJRV9QUk9UTyIpLEVl''@;'; put 'put ''PU9iamVjdC5wcm90b3R5cGU7WGUuZXhwb3J0cz1PYmplY3QuZ2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKFUpe3JldHVybiBVPUIoVSksbWUoVSxFKT9VW0VdOiJmdW5jdGlvbiI9PXR5cGVvZiBVLmNvbnN0cnVjdG9yJiZVIGluc3RhbmNlb2YgVS5jb25zdHJ1Y3Rvcj9VLmNvbnN0cnVjdG9y''@;'; put 'put ''LnByb3RvdHlwZTpVIGluc3RhbmNlb2YgT2JqZWN0P0VlOm51bGx9fSw2MDE4OTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg3OTE4MSksQj1MKDIyMTEwKSxFPUwoNzkzMTUpKCExKSxFZT1MKDY5MzM1KSgiSUVfUFJPVE8iKTtYZS5leHBvcnRzPWZ1bmN0aW9uKFUsUSl7dmFyIFksaj1CKFUpLHJl''@;'; put 'put ''PTAsYWU9W107Zm9yKFkgaW4gailZIT1FZSYmbWUoaixZKSYmYWUucHVzaChZKTtmb3IoO1EubGVuZ3RoPnJlOyltZShqLFk9UVtyZSsrXSkmJih+RShhZSxZKXx8YWUucHVzaChZKSk7cmV0dXJuIGFlfX0sNDcxODQ6KFhlLEplLEwpPT57dmFyIG1lPUwoNjAxODkpLEI9TCg3NDQzMCk7WGUu''@;'; put 'put ''ZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24oRWUpe3JldHVybiBtZShFZSxCKX19LDE0NjgyOihYZSxKZSk9PntKZS5mPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlfSwzMzE2MDooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0Mjk4NSksQj1MKDI1NjQ1KSxFPUwoNzQyNTMpO1hlLmV4cG9ydHM9''@;'; put 'put ''ZnVuY3Rpb24oRWUsVSl7dmFyIFE9KEIuT2JqZWN0fHx7fSlbRWVdfHxPYmplY3RbRWVdLGo9e307altFZV09VShRKSxtZShtZS5TK21lLkYqRShmdW5jdGlvbigpe1EoMSl9KSwiT2JqZWN0IixqKX19LDU3NjQzOihYZSxKZSxMKT0+e3ZhciBtZT1MKDIwNjE2KSxCPUwoNjQ1NDgpLEU9TCgy''@;'; put 'put ''NzAwNyksRWU9TCgzODE2KS5SZWZsZWN0O1hlLmV4cG9ydHM9RWUmJkVlLm93bktleXN8fGZ1bmN0aW9uKFEpe3ZhciBqPW1lLmYoRShRKSkscmU9Qi5mO3JldHVybiByZT9qLmNvbmNhdChyZShRKSk6an19LDQ3NzQzOihYZSxKZSxMKT0+e3ZhciBtZT1MKDM4MTYpLnBhcnNlRmxvYXQsQj1M''@;'; put 'put ''KDI5NTk5KS50cmltO1hlLmV4cG9ydHM9MS9tZShMKDg0NjQ0KSsiLTAiKSE9LTEvMD9mdW5jdGlvbihFZSl7dmFyIFU9QihTdHJpbmcoRWUpLDMpLFE9bWUoVSk7cmV0dXJuIDA9PT1RJiYiLSI9PVUuY2hhckF0KDApPy0wOlF9Om1lfSw1NTk2MDooWGUsSmUsTCk9Pnt2YXIgbWU9TCgzODE2''@;'; put 'put ''KS5wYXJzZUludCxCPUwoMjk1OTkpLnRyaW0sRT1MKDg0NjQ0KSxFZT0vXlstK10/MFt4WF0vO1hlLmV4cG9ydHM9OCE9PW1lKEUrIjA4Iil8fDIyIT09bWUoRSsiMHgxNiIpP2Z1bmN0aW9uKFEsail7dmFyIHJlPUIoU3RyaW5nKFEpLDMpO3JldHVybiBtZShyZSxqPj4+MHx8KEVlLnRlc3Qo''@;'; put 'put ''cmUpPzE2OjEwKSl9Om1lfSw5MDY4MTpYZT0+e1hlLmV4cG9ydHM9ZnVuY3Rpb24oSmUsTCl7cmV0dXJue2VudW1lcmFibGU6ISgxJkplKSxjb25maWd1cmFibGU6ISgyJkplKSx3cml0YWJsZTohKDQmSmUpLHZhbHVlOkx9fX0sMjQ0MDg6KFhlLEplLEwpPT57dmFyIG1lPUwoNzcyMzQpO1hl''@;'; put 'put ''LmV4cG9ydHM9ZnVuY3Rpb24oQixFLEVlKXtmb3IodmFyIFUgaW4gRSltZShCLFUsRVtVXSxFZSk7cmV0dXJuIEJ9fSw3NzIzNDooWGUsSmUsTCk9Pnt2YXIgbWU9TCgzODE2KSxCPUwoODc3MjgpLEU9TCg3OTE4MSksRWU9TCg5Mzk1MykoInNyYyIpLFU9TCg0MDAxOCksUT0idG9TdHJpbmci''@;'; put 'put ''LGo9KCIiK1UpLnNwbGl0KFEpO0woMjU2NDUpLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24ocmUpe3JldHVybiBVLmNhbGwocmUpfSwoWGUuZXhwb3J0cz1mdW5jdGlvbihyZSxhZSxZLFcpe3ZhciBOPSJmdW5jdGlvbiI9PXR5cGVvZiBZO04mJihFKFksIm5hbWUiKXx8QihZLCJuYW1lIixhZSkp''@;'; put 'put ''LHJlW2FlXSE9PVkmJihOJiYoRShZLEVlKXx8QihZLEVlLHJlW2FlXT8iIityZVthZV06ai5qb2luKFN0cmluZyhhZSkpKSkscmU9PT1tZT9yZVthZV09WTpXP3JlW2FlXT9yZVthZV09WTpCKHJlLGFlLFkpOihkZWxldGUgcmVbYWVdLEIocmUsYWUsWSkpKX0pKEZ1bmN0aW9uLnByb3RvdHlw''@;'; put 'put ''ZSxRLGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMmJnRoaXNbRWVdfHxVLmNhbGwodGhpcyl9KX0sMjc3ODc6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDQxNDg4KSxCPVJlZ0V4cC5wcm90b3R5cGUuZXhlYztYZS5leHBvcnRzPWZ1bmN0aW9uKEUs''@;'; put 'put ''RWUpe3ZhciBVPUUuZXhlYztpZigiZnVuY3Rpb24iPT10eXBlb2YgVSl7dmFyIFE9VS5jYWxsKEUsRWUpO2lmKCJvYmplY3QiIT10eXBlb2YgUSl0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWdFeHAgZXhlYyBtZXRob2QgcmV0dXJuZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYW4gT2JqZWN0IG9y''@;'; put 'put ''IG51bGwiKTtyZXR1cm4gUX1pZigiUmVnRXhwIiE9PW1lKEUpKXRocm93IG5ldyBUeXBlRXJyb3IoIlJlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXIiKTtyZXR1cm4gQi5jYWxsKEUsRWUpfX0sMjExNjU6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBhZSxZ''@;'; put 'put ''LG1lPUwoNTMyMTgpLEI9UmVnRXhwLnByb3RvdHlwZS5leGVjLEU9U3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlLEVlPUIsVT0ibGFzdEluZGV4IixRPShZPS9iKi9nLEIuY2FsbChhZT0vYS8sImEiKSxCLmNhbGwoWSwiYSIpLDAhPT1hZVtVXXx8MCE9PVlbVV0pLGo9dm9pZCAwIT09LygpPz8v''@;'; put 'put ''LmV4ZWMoIiIpWzFdOyhRfHxqKSYmKEVlPWZ1bmN0aW9uKFkpe3ZhciBOLHRlLEssSixXPXRoaXM7cmV0dXJuIGomJih0ZT1uZXcgUmVnRXhwKCJeIitXLnNvdXJjZSsiJCg/IVxccykiLG1lLmNhbGwoVykpKSxRJiYoTj1XW1VdKSxLPUIuY2FsbChXLFkpLFEmJksmJihXW1VdPVcuZ2xvYmFs''@;'; put 'put ''P0suaW5kZXgrS1swXS5sZW5ndGg6TiksaiYmSyYmSy5sZW5ndGg+MSYmRS5jYWxsKEtbMF0sdGUsZnVuY3Rpb24oKXtmb3IoSj0xO0o8YXJndW1lbnRzLmxlbmd0aC0yO0orKyl2b2lkIDA9PT1hcmd1bWVudHNbSl0mJihLW0pdPXZvaWQgMCl9KSxLfSksWGUuZXhwb3J0cz1FZX0sMjcxOTU6''@;'; put 'put ''WGU9PntYZS5leHBvcnRzPU9iamVjdC5pc3x8ZnVuY3Rpb24oTCxtZSl7cmV0dXJuIEw9PT1tZT8wIT09THx8MS9MPT0xL21lOkwhPUwmJm1lIT1tZX19LDI3Mzc1OihYZSxKZSxMKT0+e3ZhciBtZT1MKDU1Mjg2KSxCPUwoMjcwMDcpLEU9ZnVuY3Rpb24oRWUsVSl7aWYoQihFZSksIW1lKFUp''@;'; put 'put ''JiZudWxsIT09VSl0aHJvdyBUeXBlRXJyb3IoVSsiOiBjYW4ndCBzZXQgYXMgcHJvdG90eXBlISIpfTtYZS5leHBvcnRzPXtzZXQ6T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKEVlLFUsUSl7dHJ5eyhRPUwoNzQxKShGdW5jdGlvbi5jYWxsLEwoMTg2''@;'; put 'put ''OTMpLmYoT2JqZWN0LnByb3RvdHlwZSwiX19wcm90b19fIikuc2V0LDIpKShFZSxbXSksVT0hKEVlIGluc3RhbmNlb2YgQXJyYXkpfWNhdGNoKGope1U9ITB9cmV0dXJuIGZ1bmN0aW9uKHJlLGFlKXtyZXR1cm4gRShyZSxhZSksVT9yZS5fX3Byb3RvX189YWU6UShyZSxhZSkscmV9fSh7fSwh''@;'; put 'put ''MSk6dm9pZCAwKSxjaGVjazpFfX0sMjk3NDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoMzgxNiksQj1MKDk5Mjc1KSxFPUwoNjcwNTcpLEVlPUwoODYzMTQpKCJzcGVjaWVzIik7WGUuZXhwb3J0cz1mdW5jdGlvbihVKXt2YXIgUT1tZVtVXTtFJiZRJiYhUVtFZV0mJkIuZihR''@;'; put 'put ''LEVlLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSl9fSwyMjk0MzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg5OTI3NSkuZixCPUwoNzkxODEpLEU9TCg4NjMxNCkoInRvU3RyaW5nVGFnIik7WGUuZXhwb3J0cz1mdW5jdGlvbihFZSxVLFEpe0VlJiYhQihFZT1R''@;'; put 'put ''P0VlOkVlLnByb3RvdHlwZSxFKSYmbWUoRWUsRSx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOlV9KX19LDY5MzM1OihYZSxKZSxMKT0+e3ZhciBtZT1MKDM4MjUpKCJrZXlzIiksQj1MKDkzOTUzKTtYZS5leHBvcnRzPWZ1bmN0aW9uKEUpe3JldHVybiBtZVtFXXx8KG1lW0VdPUIoRSkpfX0sMzgy''@;'; put 'put ''NTooWGUsSmUsTCk9Pnt2YXIgbWU9TCgyNTY0NSksQj1MKDM4MTYpLEU9Il9fY29yZS1qc19zaGFyZWRfXyIsRWU9QltFXXx8KEJbRV09e30pOyhYZS5leHBvcnRzPWZ1bmN0aW9uKFUsUSl7cmV0dXJuIEVlW1VdfHwoRWVbVV09dm9pZCAwIT09UT9ROnt9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1''@;'; put 'put ''c2goe3ZlcnNpb246bWUudmVyc2lvbixtb2RlOkwoNDQ2MSk/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiXHhhOSAyMDIwIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIn0pfSw1ODM2NDooWGUsSmUsTCk9Pnt2YXIgbWU9TCgyNzAwNyksQj1MKDI0OTYzKSxFPUwoODYzMTQpKCJz''@;'; put 'put ''cGVjaWVzIik7WGUuZXhwb3J0cz1mdW5jdGlvbihFZSxVKXt2YXIgaixRPW1lKEVlKS5jb25zdHJ1Y3RvcjtyZXR1cm4gdm9pZCAwPT09UXx8bnVsbD09KGo9bWUoUSlbRV0pP1U6QihqKX19LDc3NzE3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg3NDI1Myk7WGUuZXhwb3J0''@;'; put 'put ''cz1mdW5jdGlvbihCLEUpe3JldHVybiEhQiYmbWUoZnVuY3Rpb24oKXtFP0IuY2FsbChudWxsLGZ1bmN0aW9uKCl7fSwxKTpCLmNhbGwobnVsbCl9KX19LDI0NDk2OihYZSxKZSxMKT0+e3ZhciBtZT1MKDgxNDY3KSxCPUwoOTEzNTUpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oRSl7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uKEVlLFUpe3ZhciBhZSxZLFE9U3RyaW5nKEIoRWUpKSxqPW1lKFUpLHJlPVEubGVuZ3RoO3JldHVybiBqPDB8fGo+PXJlP0U/IiI6dm9pZCAwOihhZT1RLmNoYXJDb2RlQXQoaikpPDU1Mjk2fHxhZT41NjMxOXx8aisxPT09cmV8fChZPVEuY2hhckNvZGVBdChqKzEpKTw1NjMyMHx8''@;'; put 'put ''WT41NzM0Mz9FP1EuY2hhckF0KGopOmFlOkU/US5zbGljZShqLGorMik6WS01NjMyMCsoYWUtNTUyOTY8PDEwKSs2NTUzNn19fSw0MjA5NDooWGUsSmUsTCk9Pnt2YXIgbWU9TCg1NTM2NCksQj1MKDkxMzU1KTtYZS5leHBvcnRzPWZ1bmN0aW9uKEUsRWUsVSl7aWYobWUoRWUpKXRocm93IFR5''@;'; put 'put ''cGVFcnJvcigiU3RyaW5nIyIrVSsiIGRvZXNuJ3QgYWNjZXB0IHJlZ2V4ISIpO3JldHVybiBTdHJpbmcoQihFKSl9fSwyOTM5NTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0Mjk4NSksQj1MKDc0MjUzKSxFPUwoOTEzNTUpLEVlPS8iL2csVT1mdW5jdGlvbihRLGoscmUsYWUpe3ZhciBZPVN0cmlu''@;'; put 'put ''ZyhFKFEpKSxXPSI8IitqO3JldHVybiIiIT09cmUmJihXKz0iICIrcmUrJz0iJytTdHJpbmcoYWUpLnJlcGxhY2UoRWUsIiZxdW90OyIpKyciJyksVysiPiIrWSsiPC8iK2orIj4ifTtYZS5leHBvcnRzPWZ1bmN0aW9uKFEsail7dmFyIHJlPXt9O3JlW1FdPWooVSksbWUobWUuUCttZS5GKkIo''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgYWU9IiJbUV0oJyInKTtyZXR1cm4gYWUhPT1hZS50b0xvd2VyQ2FzZSgpfHxhZS5zcGxpdCgnIicpLmxlbmd0aD4zfSksIlN0cmluZyIscmUpfX0sNjg1OTU6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDgxNDY3KSxCPUwoOTEzNTUpO1hlLmV4cG9y''@;'; put 'put ''dHM9ZnVuY3Rpb24oRWUpe3ZhciBVPVN0cmluZyhCKHRoaXMpKSxRPSIiLGo9bWUoRWUpO2lmKGo8MHx8aj09MS8wKXRocm93IFJhbmdlRXJyb3IoIkNvdW50IGNhbid0IGJlIG5lZ2F0aXZlIik7Zm9yKDtqPjA7KGo+Pj49MSkmJihVKz1VKSkxJmomJihRKz1VKTtyZXR1cm4gUX19LDI5NTk5''@;'; put 'put ''OihYZSxKZSxMKT0+e3ZhciBtZT1MKDQyOTg1KSxCPUwoOTEzNTUpLEU9TCg3NDI1MyksRWU9TCg4NDY0NCksVT0iWyIrRWUrIl0iLGo9UmVnRXhwKCJeIitVK1UrIioiKSxyZT1SZWdFeHAoVStVKyIqJCIpLGFlPWZ1bmN0aW9uKFcsTix0ZSl7dmFyIEs9e30sSj1FKGZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuISFFZVtXXSgpfHwiXHUyMDBiXHg4NSIhPSJcdTIwMGJceDg1IltXXSgpfSksc2U9S1tXXT1KP04oWSk6RWVbV107dGUmJihLW3RlXT1zZSksbWUobWUuUCttZS5GKkosIlN0cmluZyIsSyl9LFk9YWUudHJpbT1mdW5jdGlvbihXLE4pe3JldHVybiBXPVN0cmluZyhCKFcpKSwxJk4mJihX''@;'; put 'put ''PVcucmVwbGFjZShqLCIiKSksMiZOJiYoVz1XLnJlcGxhY2UocmUsIiIpKSxXfTtYZS5leHBvcnRzPWFlfSw4NDY0NDpYZT0+e1hlLmV4cG9ydHM9Ilx0XG5cdlxmXHIgXHhhMFx1MTY4MFx1MTgwZVx1MjAwMFx1MjAwMVx1MjAwMlx1MjAwM1x1MjAwNFx1MjAwNVx1MjAwNlx1MjAwN1x1MjAw''@;'; put 'put ''OFx1MjAwOVx1MjAwYVx1MjAyZlx1MjA1Zlx1MzAwMFx1MjAyOFx1MjAyOVx1ZmVmZiJ9LDkyMzM3OihYZSxKZSxMKT0+e3ZhciBtZT1MKDgxNDY3KSxCPU1hdGgubWF4LEU9TWF0aC5taW47WGUuZXhwb3J0cz1mdW5jdGlvbihFZSxVKXtyZXR1cm4oRWU9bWUoRWUpKTwwP0IoRWUrVSwwKTpF''@;'; put 'put ''KEVlLFUpfX0sODE0Njc6WGU9Pnt2YXIgSmU9TWF0aC5jZWlsLEw9TWF0aC5mbG9vcjtYZS5leHBvcnRzPWZ1bmN0aW9uKG1lKXtyZXR1cm4gaXNOYU4obWU9K21lKT8wOihtZT4wP0w6SmUpKG1lKX19LDIyMTEwOihYZSxKZSxMKT0+e3ZhciBtZT1MKDQ5Nzk3KSxCPUwoOTEzNTUpO1hlLmV4''@;'; put 'put ''cG9ydHM9ZnVuY3Rpb24oRSl7cmV0dXJuIG1lKEIoRSkpfX0sMTA4NzU6KFhlLEplLEwpPT57dmFyIG1lPUwoODE0NjcpLEI9TWF0aC5taW47WGUuZXhwb3J0cz1mdW5jdGlvbihFKXtyZXR1cm4gRT4wP0IobWUoRSksOTAwNzE5OTI1NDc0MDk5MSk6MH19LDIwNTA4OihYZSxKZSxMKT0+e3Zh''@;'; put 'put ''ciBtZT1MKDkxMzU1KTtYZS5leHBvcnRzPWZ1bmN0aW9uKEIpe3JldHVybiBPYmplY3QobWUoQikpfX0sMjE2ODk6KFhlLEplLEwpPT57dmFyIG1lPUwoNTUyODYpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oQixFKXtpZighbWUoQikpcmV0dXJuIEI7dmFyIEVlLFU7aWYoRSYmImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mKEVlPUIudG9TdHJpbmcpJiYhbWUoVT1FZS5jYWxsKEIpKXx8ImZ1bmN0aW9uIj09dHlwZW9mKEVlPUIudmFsdWVPZikmJiFtZShVPUVlLmNhbGwoQikpfHwhRSYmImZ1bmN0aW9uIj09dHlwZW9mKEVlPUIudG9TdHJpbmcpJiYhbWUoVT1FZS5jYWxsKEIpKSlyZXR1cm4gVTt0aHJv''@;'; put 'put ''dyBUeXBlRXJyb3IoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfX0sOTM5NTM6WGU9Pnt2YXIgSmU9MCxMPU1hdGgucmFuZG9tKCk7WGUuZXhwb3J0cz1mdW5jdGlvbihtZSl7cmV0dXJuIlN5bWJvbCgiLmNvbmNhdCh2b2lkIDA9PT1tZT8iIjptZSwiKV8iLCgr''@;'; put 'put ''K0plK0wpLnRvU3RyaW5nKDM2KSl9fSwxNjE2OihYZSxKZSxMKT0+e3ZhciBtZT1MKDU1Mjg2KTtYZS5leHBvcnRzPWZ1bmN0aW9uKEIsRSl7aWYoIW1lKEIpfHxCLl90IT09RSl0aHJvdyBUeXBlRXJyb3IoIkluY29tcGF0aWJsZSByZWNlaXZlciwgIitFKyIgcmVxdWlyZWQhIik7cmV0dXJu''@;'; put 'put ''IEJ9fSwzNjA3NDooWGUsSmUsTCk9Pnt2YXIgbWU9TCgzODE2KSxCPUwoMjU2NDUpLEU9TCg0NDYxKSxFZT1MKDI4Nzg3KSxVPUwoOTkyNzUpLmY7WGUuZXhwb3J0cz1mdW5jdGlvbihRKXt2YXIgaj1CLlN5bWJvbHx8KEIuU3ltYm9sPUU/e306bWUuU3ltYm9sfHx7fSk7Il8iIT1RLmNoYXJB''@;'; put 'put ''dCgwKSYmIShRIGluIGopJiZVKGosUSx7dmFsdWU6RWUuZihRKX0pfX0sMjg3ODc6KFhlLEplLEwpPT57SmUuZj1MKDg2MzE0KX0sODYzMTQ6KFhlLEplLEwpPT57dmFyIG1lPUwoMzgyNSkoIndrcyIpLEI9TCg5Mzk1MyksRT1MKDM4MTYpLlN5bWJvbCxFZT0iZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''RTsoWGUuZXhwb3J0cz1mdW5jdGlvbihRKXtyZXR1cm4gbWVbUV18fChtZVtRXT1FZSYmRVtRXXx8KEVlP0U6QikoIlN5bWJvbC4iK1EpKX0pLnN0b3JlPW1lfSw2OTAwMjooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0MTQ4OCksQj1MKDg2MzE0KSgiaXRlcmF0b3IiKSxFPUwoODcyMzQpO1hlLmV4''@;'; put 'put ''cG9ydHM9TCgyNTY0NSkuZ2V0SXRlcmF0b3JNZXRob2Q9ZnVuY3Rpb24oRWUpe2lmKG51bGwhPUVlKXJldHVybiBFZVtCXXx8RWVbIkBAaXRlcmF0b3IiXXx8RVttZShFZSldfX0sMzJlMzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0Mjk4NSk7bWUobWUuUCwiQXJyYXkiLHtjb3B5V2l0aGluOkwo''@;'; put 'put ''NTIxNil9KSxMKDE3NzIyKSgiY29weVdpdGhpbiIpfSwxNTc0NTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoNDI5ODUpLEI9TCgxMDA1MCkoNCk7bWUobWUuUCttZS5GKiFMKDc3NzE3KShbXS5ldmVyeSwhMCksIkFycmF5Iix7ZXZlcnk6ZnVuY3Rpb24oRWUpe3JldHVybiBC''@;'; put 'put ''KHRoaXMsRWUsYXJndW1lbnRzWzFdKX19KX0sNDg5Nzc6KFhlLEplLEwpPT57dmFyIG1lPUwoNDI5ODUpO21lKG1lLlAsIkFycmF5Iix7ZmlsbDpMKDQ2ODUyKX0pLEwoMTc3MjIpKCJmaWxsIil9LDk4ODM3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg0Mjk4NSksQj1MKDEw''@;'; put 'put ''MDUwKSgyKTttZShtZS5QK21lLkYqIUwoNzc3MTcpKFtdLmZpbHRlciwhMCksIkFycmF5Iix7ZmlsdGVyOmZ1bmN0aW9uKEVlKXtyZXR1cm4gQih0aGlzLEVlLGFyZ3VtZW50c1sxXSl9fSl9LDk0ODk5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg0Mjk4NSksQj1MKDEwMDUw''@;'; put 'put ''KSg2KSxFPSJmaW5kSW5kZXgiLEVlPSEwO0UgaW5bXSYmQXJyYXkoMSlbRV0oZnVuY3Rpb24oKXtFZT0hMX0pLG1lKG1lLlArbWUuRipFZSwiQXJyYXkiLHtmaW5kSW5kZXg6ZnVuY3Rpb24oUSl7cmV0dXJuIEIodGhpcyxRLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAw''@;'; put 'put ''KX19KSxMKDE3NzIyKShFKX0sNTIzMTA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDQyOTg1KSxCPUwoMTAwNTApKDUpLEU9ImZpbmQiLEVlPSEwO0UgaW5bXSYmQXJyYXkoMSlbRV0oZnVuY3Rpb24oKXtFZT0hMX0pLG1lKG1lLlArbWUuRipFZSwiQXJyYXkiLHtmaW5kOmZ1''@;'; put 'put ''bmN0aW9uKFEpe3JldHVybiBCKHRoaXMsUSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksTCgxNzcyMikoRSl9LDI0MzM2OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg0Mjk4NSksQj1MKDEwMDUwKSgwKSxFPUwoNzc3MTcpKFtdLmZvckVhY2gs''@;'; put 'put ''ITApO21lKG1lLlArbWUuRiohRSwiQXJyYXkiLHtmb3JFYWNoOmZ1bmN0aW9uKFUpe3JldHVybiBCKHRoaXMsVSxhcmd1bWVudHNbMV0pfX0pfSwzMDUyMjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoNzQxKSxCPUwoNDI5ODUpLEU9TCgyMDUwOCksRWU9TCgyODg1MSksVT1M''@;'; put 'put ''KDg2NTU1KSxRPUwoMTA4NzUpLGo9TCg5MjgxMSkscmU9TCg2OTAwMik7QihCLlMrQi5GKiFMKDc0NjIpKGZ1bmN0aW9uKGFlKXtBcnJheS5mcm9tKGFlKX0pLCJBcnJheSIse2Zyb206ZnVuY3Rpb24oWSl7dmFyIGNlLGRlLHZlLEFlLFc9RShZKSxOPSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlz''@;'; put 'put ''P3RoaXM6QXJyYXksdGU9YXJndW1lbnRzLmxlbmd0aCxLPXRlPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxKPXZvaWQgMCE9PUssc2U9MCxvZT1yZShXKTtpZihKJiYoSz1tZShLLHRlPjI/YXJndW1lbnRzWzJdOnZvaWQgMCwyKSksbnVsbD09b2V8fE49PUFycmF5JiZVKG9lKSlmb3IoZGU9bmV3''@;'; put 'put ''IE4oY2U9UShXLmxlbmd0aCkpO2NlPnNlO3NlKyspaihkZSxzZSxKP0soV1tzZV0sc2UpOldbc2VdKTtlbHNlIGZvcihBZT1vZS5jYWxsKFcpLGRlPW5ldyBOOyEodmU9QWUubmV4dCgpKS5kb25lO3NlKyspaihkZSxzZSxKP0VlKEFlLEssW3ZlLnZhbHVlLHNlXSwhMCk6dmUudmFsdWUpO3Jl''@;'; put 'put ''dHVybiBkZS5sZW5ndGg9c2UsZGV9fSl9LDIzMzY5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg0Mjk4NSksQj1MKDc5MzE1KSghMSksRT1bXS5pbmRleE9mLEVlPSEhRSYmMS9bMV0uaW5kZXhPZigxLC0wKTwwO21lKG1lLlArbWUuRiooRWV8fCFMKDc3NzE3KShFKSksIkFy''@;'; put 'put ''cmF5Iix7aW5kZXhPZjpmdW5jdGlvbihRKXtyZXR1cm4gRWU/RS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDA6Qih0aGlzLFEsYXJndW1lbnRzWzFdKX19KX0sMjA3NzQ6KFhlLEplLEwpPT57dmFyIG1lPUwoNDI5ODUpO21lKG1lLlMsIkFycmF5Iix7aXNBcnJheTpMKDQzMDIpfSl9LDU2OTk3''@;'; put 'put ''OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgxNzcyMiksQj1MKDE1NDM2KSxFPUwoODcyMzQpLEVlPUwoMjIxMTApO1hlLmV4cG9ydHM9TCg0MjkyMykoQXJyYXksIkFycmF5IixmdW5jdGlvbihVLFEpe3RoaXMuX3Q9RWUoVSksdGhpcy5faT0wLHRoaXMuX2s9UX0sZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgVT10aGlzLl90LFE9dGhpcy5fayxqPXRoaXMuX2krKztyZXR1cm4hVXx8aj49VS5sZW5ndGg/KHRoaXMuX3Q9dm9pZCAwLEIoMSkpOkIoMCwia2V5cyI9PVE/ajoidmFsdWVzIj09UT9VW2pdOltqLFVbal1dKX0sInZhbHVlcyIpLEUuQXJndW1lbnRzPUUuQXJyYXksbWUoImtl''@;'; put 'put ''eXMiKSxtZSgidmFsdWVzIiksbWUoImVudHJpZXMiKX0sODc4NDI6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDQyOTg1KSxCPUwoMjIxMTApLEU9W10uam9pbjttZShtZS5QK21lLkYqKEwoNDk3OTcpIT1PYmplY3R8fCFMKDc3NzE3KShFKSksIkFycmF5Iix7am9pbjpmdW5j''@;'; put 'put ''dGlvbihVKXtyZXR1cm4gRS5jYWxsKEIodGhpcyksdm9pZCAwPT09VT8iLCI6VSl9fSl9LDk5NTY0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg0Mjk4NSksQj1MKDIyMTEwKSxFPUwoODE0NjcpLEVlPUwoMTA4NzUpLFU9W10ubGFzdEluZGV4T2YsUT0hIVUmJjEvWzFdLmxh''@;'; put 'put ''c3RJbmRleE9mKDEsLTApPDA7bWUobWUuUCttZS5GKihRfHwhTCg3NzcxNykoVSkpLCJBcnJheSIse2xhc3RJbmRleE9mOmZ1bmN0aW9uKHJlKXtpZihRKXJldHVybiBVLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8MDt2YXIgYWU9Qih0aGlzKSxZPUVlKGFlLmxlbmd0aCksVz1ZLTE7Zm9yKGFy''@;'; put 'put ''Z3VtZW50cy5sZW5ndGg+MSYmKFc9TWF0aC5taW4oVyxFKGFyZ3VtZW50c1sxXSkpKSxXPDAmJihXPVkrVyk7Vz49MDtXLS0paWYoVyBpbiBhZSYmYWVbV109PT1yZSlyZXR1cm4gV3x8MDtyZXR1cm4tMX19KX0sMTkzNzE6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDQyOTg1''@;'; put 'put ''KSxCPUwoMTAwNTApKDEpO21lKG1lLlArbWUuRiohTCg3NzcxNykoW10ubWFwLCEwKSwiQXJyYXkiLHttYXA6ZnVuY3Rpb24oRWUpe3JldHVybiBCKHRoaXMsRWUsYXJndW1lbnRzWzFdKX19KX0sNTgyOTU6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDQyOTg1KSxCPUwoOTI4''@;'; put 'put ''MTEpO21lKG1lLlMrbWUuRipMKDc0MjUzKShmdW5jdGlvbigpe2Z1bmN0aW9uIEUoKXt9cmV0dXJuIShBcnJheS5vZi5jYWxsKEUpaW5zdGFuY2VvZiBFKX0pLCJBcnJheSIse29mOmZ1bmN0aW9uKCl7Zm9yKHZhciBFZT0wLFU9YXJndW1lbnRzLmxlbmd0aCxRPW5ldygiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgdGhpcz90aGlzOkFycmF5KShVKTtVPkVlOylCKFEsRWUsYXJndW1lbnRzW0VlKytdKTtyZXR1cm4gUS5sZW5ndGg9VSxRfX0pfSwzNzUwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg0Mjk4NSksQj1MKDM3NjI4KTttZShtZS5QK21lLkYqIUwoNzc3MTcpKFtdLnJl''@;'; put 'put ''ZHVjZVJpZ2h0LCEwKSwiQXJyYXkiLHtyZWR1Y2VSaWdodDpmdW5jdGlvbihFZSl7cmV0dXJuIEIodGhpcyxFZSxhcmd1bWVudHMubGVuZ3RoLGFyZ3VtZW50c1sxXSwhMCl9fSl9LDMzMDU3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg0Mjk4NSksQj1MKDM3NjI4KTttZSht''@;'; put 'put ''ZS5QK21lLkYqIUwoNzc3MTcpKFtdLnJlZHVjZSwhMCksIkFycmF5Iix7cmVkdWNlOmZ1bmN0aW9uKEVlKXtyZXR1cm4gQih0aGlzLEVlLGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzWzFdLCExKX19KX0sNTAxMTA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDQyOTg1KSxC''@;'; put 'put ''PUwoNDA2MzkpLEU9TCg5MjAzMiksRWU9TCg5MjMzNyksVT1MKDEwODc1KSxRPVtdLnNsaWNlO21lKG1lLlArbWUuRipMKDc0MjUzKShmdW5jdGlvbigpe0ImJlEuY2FsbChCKX0pLCJBcnJheSIse3NsaWNlOmZ1bmN0aW9uKHJlLGFlKXt2YXIgWT1VKHRoaXMubGVuZ3RoKSxXPUUodGhpcyk7''@;'; put 'put ''aWYoYWU9dm9pZCAwPT09YWU/WTphZSwiQXJyYXkiPT1XKXJldHVybiBRLmNhbGwodGhpcyxyZSxhZSk7Zm9yKHZhciBOPUVlKHJlLFkpLHRlPUVlKGFlLFkpLEs9VSh0ZS1OKSxKPW5ldyBBcnJheShLKSxzZT0wO3NlPEs7c2UrKylKW3NlXT0iU3RyaW5nIj09Vz90aGlzLmNoYXJBdChOK3Nl''@;'; put 'put ''KTp0aGlzW04rc2VdO3JldHVybiBKfX0pfSwyNjc3MzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoNDI5ODUpLEI9TCgxMDA1MCkoMyk7bWUobWUuUCttZS5GKiFMKDc3NzE3KShbXS5zb21lLCEwKSwiQXJyYXkiLHtzb21lOmZ1bmN0aW9uKEVlKXtyZXR1cm4gQih0aGlzLEVl''@;'; put 'put ''LGFyZ3VtZW50c1sxXSl9fSl9LDIwMDc1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg0Mjk4NSksQj1MKDI0OTYzKSxFPUwoMjA1MDgpLEVlPUwoNzQyNTMpLFU9W10uc29ydCxRPVsxLDIsM107bWUobWUuUCttZS5GKihFZShmdW5jdGlvbigpe1Euc29ydCh2b2lkIDApfSl8''@;'; put 'put ''fCFFZShmdW5jdGlvbigpe1Euc29ydChudWxsKX0pfHwhTCg3NzcxNykoVSkpLCJBcnJheSIse3NvcnQ6ZnVuY3Rpb24ocmUpe3JldHVybiB2b2lkIDA9PT1yZT9VLmNhbGwoRSh0aGlzKSk6VS5jYWxsKEUodGhpcyksQihyZSkpfX0pfSwzMTg0MjooWGUsSmUsTCk9PntMKDI5NzQpKCJBcnJh''@;'; put 'put ''eSIpfSw4MTgyMjooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0Mjk4NSk7bWUobWUuUywiRGF0ZSIse25vdzpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfX0pfSw5MTAzMTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0Mjk4NSksQj1MKDUzNTM3KTttZShtZS5QK21lLkYqKERhdGUu''@;'; put 'put ''cHJvdG90eXBlLnRvSVNPU3RyaW5nIT09QiksIkRhdGUiLHt0b0lTT1N0cmluZzpCfSl9LDE5OTc3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg0Mjk4NSksQj1MKDIwNTA4KSxFPUwoMjE2ODkpO21lKG1lLlArbWUuRipMKDc0MjUzKShmdW5jdGlvbigpe3JldHVybiBudWxs''@;'; put 'put ''IT09bmV3IERhdGUoTmFOKS50b0pTT04oKXx8MSE9PURhdGUucHJvdG90eXBlLnRvSlNPTi5jYWxsKHt0b0lTT1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAxfX0pfSksIkRhdGUiLHt0b0pTT046ZnVuY3Rpb24oVSl7dmFyIFE9Qih0aGlzKSxqPUUoUSk7cmV0dXJuIm51bWJlciIhPXR5cGVv''@;'; put 'put ''ZiBqfHxpc0Zpbml0ZShqKT9RLnRvSVNPU3RyaW5nKCk6bnVsbH19KX0sNDE1NjA6KFhlLEplLEwpPT57dmFyIG1lPUwoODYzMTQpKCJ0b1ByaW1pdGl2ZSIpLEI9RGF0ZS5wcm90b3R5cGU7bWUgaW4gQnx8TCg4NzcyOCkoQixtZSxMKDg3MCkpfSw0NjMzMTooWGUsSmUsTCk9Pnt2YXIgbWU9''@;'; put 'put ''RGF0ZS5wcm90b3R5cGUsQj0iSW52YWxpZCBEYXRlIixFPSJ0b1N0cmluZyIsRWU9bWVbRV0sVT1tZS5nZXRUaW1lO25ldyBEYXRlKE5hTikrIiIhPUImJkwoNzcyMzQpKG1lLEUsZnVuY3Rpb24oKXt2YXIgaj1VLmNhbGwodGhpcyk7cmV0dXJuIGo9PWo/RWUuY2FsbCh0aGlzKTpCfSl9LDM5''@;'; put 'put ''NzMwOihYZSxKZSxMKT0+e3ZhciBtZT1MKDQyOTg1KTttZShtZS5QLCJGdW5jdGlvbiIse2JpbmQ6TCgzNDM5OCl9KX0sNDgzNzc6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDU1Mjg2KSxCPUwoNDY4KSxFPUwoODYzMTQpKCJoYXNJbnN0YW5jZSIpLEVlPUZ1bmN0aW9uLnBy''@;'; put 'put ''b3RvdHlwZTtFIGluIEVlfHxMKDk5Mjc1KS5mKEVlLEUse3ZhbHVlOmZ1bmN0aW9uKFUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzfHwhbWUoVSkpcmV0dXJuITE7aWYoIW1lKHRoaXMucHJvdG90eXBlKSlyZXR1cm4gVSBpbnN0YW5jZW9mIHRoaXM7Zm9yKDtVPUIoVSk7KWlmKHRoaXMu''@;'; put 'put ''cHJvdG90eXBlPT09VSlyZXR1cm4hMDtyZXR1cm4hMX19KX0sNjA1OTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg5OTI3NSkuZixCPUZ1bmN0aW9uLnByb3RvdHlwZSxFPS9eXHMqZnVuY3Rpb24gKFteIChdKikvOyJuYW1lImluIEJ8fEwoNjcwNTcpJiZtZShCLCJuYW1lIix7Y29uZmlndXJhYmxl''@;'; put 'put ''OiEwLGdldDpmdW5jdGlvbigpe3RyeXtyZXR1cm4oIiIrdGhpcykubWF0Y2goRSlbMV19Y2F0Y2goVSl7cmV0dXJuIiJ9fX0pfSw4ODQxNjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoOTgyNCksQj1MKDE2MTYpLEU9Ik1hcCI7WGUuZXhwb3J0cz1MKDQ1Nzk1KShFLGZ1bmN0''@;'; put 'put ''aW9uKEVlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gRWUodGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7Z2V0OmZ1bmN0aW9uKFUpe3ZhciBRPW1lLmdldEVudHJ5KEIodGhpcyxFKSxVKTtyZXR1cm4gUSYmUS52fSxzZXQ6ZnVuY3Rpb24oVSxRKXty''@;'; put 'put ''ZXR1cm4gbWUuZGVmKEIodGhpcyxFKSwwPT09VT8wOlUsUSl9fSxtZSwhMCl9LDc2NTAzOihYZSxKZSxMKT0+e3ZhciBtZT1MKDQyOTg1KSxCPUwoNDYyMDYpLEU9TWF0aC5zcXJ0LEVlPU1hdGguYWNvc2g7bWUobWUuUyttZS5GKiEoRWUmJjcxMD09TWF0aC5mbG9vcihFZShOdW1iZXIuTUFY''@;'; put 'put ''X1ZBTFVFKSkmJkVlKDEvMCk9PTEvMCksIk1hdGgiLHthY29zaDpmdW5jdGlvbihRKXtyZXR1cm4oUT0rUSk8MT9OYU46UT45NDkwNjI2NS42MjQyNTE1Nj9NYXRoLmxvZyhRKStNYXRoLkxOMjpCKFEtMStFKFEtMSkqRShRKzEpKX19KX0sNjY3ODY6KFhlLEplLEwpPT57dmFyIG1lPUwoNDI5''@;'; put 'put ''ODUpLEI9TWF0aC5hc2luaDttZShtZS5TK21lLkYqIShCJiYxL0IoMCk+MCksIk1hdGgiLHthc2luaDpmdW5jdGlvbiBFKEVlKXtyZXR1cm4gaXNGaW5pdGUoRWU9K0VlKSYmMCE9RWU/RWU8MD8tRSgtRWUpOk1hdGgubG9nKEVlK01hdGguc3FydChFZSpFZSsxKSk6RWV9fSl9LDUwOTMyOihY''@;'; put 'put ''ZSxKZSxMKT0+e3ZhciBtZT1MKDQyOTg1KSxCPU1hdGguYXRhbmg7bWUobWUuUyttZS5GKiEoQiYmMS9CKC0wKTwwKSwiTWF0aCIse2F0YW5oOmZ1bmN0aW9uKEVlKXtyZXR1cm4gMD09KEVlPStFZSk/RWU6TWF0aC5sb2coKDErRWUpLygxLUVlKSkvMn19KX0sNTc1MjY6KFhlLEplLEwpPT57''@;'; put 'put ''dmFyIG1lPUwoNDI5ODUpLEI9TCg2MTgwMSk7bWUobWUuUywiTWF0aCIse2NicnQ6ZnVuY3Rpb24oRWUpe3JldHVybiBCKEVlPStFZSkqTWF0aC5wb3coTWF0aC5hYnMoRWUpLDEvMyl9fSl9LDIxNTkxOihYZSxKZSxMKT0+e3ZhciBtZT1MKDQyOTg1KTttZShtZS5TLCJNYXRoIix7Y2x6MzI6''@;'; put 'put ''ZnVuY3Rpb24oRSl7cmV0dXJuKEU+Pj49MCk/MzEtTWF0aC5mbG9vcihNYXRoLmxvZyhFKy41KSpNYXRoLkxPRzJFKTozMn19KX0sOTA3MzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0Mjk4NSksQj1NYXRoLmV4cDttZShtZS5TLCJNYXRoIix7Y29zaDpmdW5jdGlvbihFZSl7cmV0dXJuKEIoRWU9''@;'; put 'put ''K0VlKStCKC1FZSkpLzJ9fSl9LDgwMzQ3OihYZSxKZSxMKT0+e3ZhciBtZT1MKDQyOTg1KSxCPUwoMTMwODYpO21lKG1lLlMrbWUuRiooQiE9TWF0aC5leHBtMSksIk1hdGgiLHtleHBtMTpCfSl9LDMwNTc5OihYZSxKZSxMKT0+e3ZhciBtZT1MKDQyOTg1KTttZShtZS5TLCJNYXRoIix7ZnJv''@;'; put 'put ''dW5kOkwoMzQ5MzQpfSl9LDQ2Njk6KFhlLEplLEwpPT57dmFyIG1lPUwoNDI5ODUpLEI9TWF0aC5hYnM7bWUobWUuUywiTWF0aCIse2h5cG90OmZ1bmN0aW9uKEVlLFUpe2Zvcih2YXIgWSxXLFE9MCxqPTAscmU9YXJndW1lbnRzLmxlbmd0aCxhZT0wO2o8cmU7KWFlPChZPUIoYXJndW1lbnRz''@;'; put 'put ''W2orK10pKT8oUT1RKihXPWFlL1kpKlcrMSxhZT1ZKTpRKz1ZPjA/KFc9WS9hZSkqVzpZO3JldHVybiBhZT09PTEvMD8xLzA6YWUqTWF0aC5zcXJ0KFEpfX0pfSw2NzcxMDooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0Mjk4NSksQj1NYXRoLmltdWw7bWUobWUuUyttZS5GKkwoNzQyNTMpKGZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuLTUhPUIoNDI5NDk2NzI5NSw1KXx8MiE9Qi5sZW5ndGh9KSwiTWF0aCIse2ltdWw6ZnVuY3Rpb24oRWUsVSl7dmFyIFE9NjU1MzUsaj0rRWUscmU9K1UsYWU9USZqLFk9USZyZTtyZXR1cm4gMHxhZSpZKygoUSZqPj4+MTYpKlkrYWUqKFEmcmU+Pj4xNik8PDE2Pj4+MCl9''@;'; put 'put ''fSl9LDQ1Nzg5OihYZSxKZSxMKT0+e3ZhciBtZT1MKDQyOTg1KTttZShtZS5TLCJNYXRoIix7bG9nMTA6ZnVuY3Rpb24oRSl7cmV0dXJuIE1hdGgubG9nKEUpKk1hdGguTE9HMTBFfX0pfSwzMzUxNDooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0Mjk4NSk7bWUobWUuUywiTWF0aCIse2xvZzFwOkwo''@;'; put 'put ''NDYyMDYpfSl9LDk5OTc4OihYZSxKZSxMKT0+e3ZhciBtZT1MKDQyOTg1KTttZShtZS5TLCJNYXRoIix7bG9nMjpmdW5jdGlvbihFKXtyZXR1cm4gTWF0aC5sb2coRSkvTWF0aC5MTjJ9fSl9LDU4NDcyOihYZSxKZSxMKT0+e3ZhciBtZT1MKDQyOTg1KTttZShtZS5TLCJNYXRoIix7c2lnbjpM''@;'; put 'put ''KDYxODAxKX0pfSw4Njk0NjooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0Mjk4NSksQj1MKDEzMDg2KSxFPU1hdGguZXhwO21lKG1lLlMrbWUuRipMKDc0MjUzKShmdW5jdGlvbigpe3JldHVybi0yZS0xNyE9IU1hdGguc2luaCgtMmUtMTcpfSksIk1hdGgiLHtzaW5oOmZ1bmN0aW9uKFUpe3JldHVy''@;'; put 'put ''biBNYXRoLmFicyhVPStVKTwxPyhCKFUpLUIoLVUpKS8yOihFKFUtMSktRSgtVS0xKSkqKE1hdGguRS8yKX19KX0sMzUwNjg6KFhlLEplLEwpPT57dmFyIG1lPUwoNDI5ODUpLEI9TCgxMzA4NiksRT1NYXRoLmV4cDttZShtZS5TLCJNYXRoIix7dGFuaDpmdW5jdGlvbihVKXt2YXIgUT1CKFU9''@;'; put 'put ''K1UpLGo9QigtVSk7cmV0dXJuIFE9PTEvMD8xOmo9PTEvMD8tMTooUS1qKS8oRShVKStFKC1VKSl9fSl9LDQxMzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0Mjk4NSk7bWUobWUuUywiTWF0aCIse3RydW5jOmZ1bmN0aW9uKEUpe3JldHVybihFPjA/TWF0aC5mbG9vcjpNYXRoLmNlaWwpKEUpfX0p''@;'; put 'put ''fSwxMTI0NjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoMzgxNiksQj1MKDc5MTgxKSxFPUwoOTIwMzIpLEVlPUwoNDAyNjYpLFU9TCgyMTY4OSksUT1MKDc0MjUzKSxqPUwoMjA2MTYpLmYscmU9TCgxODY5MykuZixhZT1MKDk5Mjc1KS5mLFk9TCgyOTU5OSkudHJpbSxXPSJO''@;'; put 'put ''dW1iZXIiLE49bWVbV10sdGU9TixLPU4ucHJvdG90eXBlLEo9RShMKDQyNTAzKShLKSk9PVcsc2U9InRyaW0iaW4gU3RyaW5nLnByb3RvdHlwZSxvZT1mdW5jdGlvbihBZSl7dmFyIGtlPVUoQWUsITEpO2lmKCJzdHJpbmciPT10eXBlb2Yga2UmJmtlLmxlbmd0aD4yKXt2YXIgSWUsVGUsTWUs''@;'; put 'put ''U2U9KGtlPXNlP2tlLnRyaW0oKTpZKGtlLDMpKS5jaGFyQ29kZUF0KDApO2lmKDQzPT09U2V8fDQ1PT09U2Upe2lmKDg4PT09KEllPWtlLmNoYXJDb2RlQXQoMikpfHwxMjA9PT1JZSlyZXR1cm4gTmFOfWVsc2UgaWYoNDg9PT1TZSl7c3dpdGNoKGtlLmNoYXJDb2RlQXQoMSkpe2Nhc2UgNjY6''@;'; put 'put ''Y2FzZSA5ODpUZT0yLE1lPTQ5O2JyZWFrO2Nhc2UgNzk6Y2FzZSAxMTE6VGU9OCxNZT01NTticmVhaztkZWZhdWx0OnJldHVybitrZX1mb3IodmFyIGVlLGhlPWtlLnNsaWNlKDIpLE89MCx6PWhlLmxlbmd0aDtPPHo7TysrKWlmKChlZT1oZS5jaGFyQ29kZUF0KE8pKTw0OHx8ZWU+TWUpcmV0''@;'; put 'put ''dXJuIE5hTjtyZXR1cm4gcGFyc2VJbnQoaGUsVGUpfX1yZXR1cm4ra2V9O2lmKCFOKCIgMG8xIil8fCFOKCIwYjEiKXx8TigiKzB4MSIpKXtOPWZ1bmN0aW9uKGtlKXt2YXIgU2U9YXJndW1lbnRzLmxlbmd0aDwxPzA6a2UsSWU9dGhpcztyZXR1cm4gSWUgaW5zdGFuY2VvZiBOJiYoSj9RKGZ1''@;'; put 'put ''bmN0aW9uKCl7Sy52YWx1ZU9mLmNhbGwoSWUpfSk6RShJZSkhPVcpP0VlKG5ldyB0ZShvZShTZSkpLEllLE4pOm9lKFNlKX07Zm9yKHZhciB2ZSxjZT1MKDY3MDU3KT9qKHRlKToiTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksRVBT''@;'; put 'put ''SUxPTixpc0Zpbml0ZSxpc0ludGVnZXIsaXNOYU4saXNTYWZlSW50ZWdlcixNQVhfU0FGRV9JTlRFR0VSLE1JTl9TQUZFX0lOVEVHRVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXIiLnNwbGl0KCIsIiksZGU9MDtjZS5sZW5ndGg+ZGU7ZGUrKylCKHRlLHZlPWNlW2RlXSkmJiFCKE4s''@;'; put 'put ''dmUpJiZhZShOLHZlLHJlKHRlLHZlKSk7Ti5wcm90b3R5cGU9SyxLLmNvbnN0cnVjdG9yPU4sTCg3NzIzNCkobWUsVyxOKX19LDc1OTcyOihYZSxKZSxMKT0+e3ZhciBtZT1MKDQyOTg1KTttZShtZS5TLCJOdW1iZXIiLHtFUFNJTE9OOk1hdGgucG93KDIsLTUyKX0pfSw1MzQwMzooWGUsSmUs''@;'; put 'put ''TCk9Pnt2YXIgbWU9TCg0Mjk4NSksQj1MKDM4MTYpLmlzRmluaXRlO21lKG1lLlMsIk51bWJlciIse2lzRmluaXRlOmZ1bmN0aW9uKEVlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIEVlJiZCKEVlKX19KX0sOTI1MTY6KFhlLEplLEwpPT57dmFyIG1lPUwoNDI5ODUpO21lKG1lLlMsIk51bWJl''@;'; put 'put ''ciIse2lzSW50ZWdlcjpMKDE4MzY3KX0pfSw0OTM3MTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0Mjk4NSk7bWUobWUuUywiTnVtYmVyIix7aXNOYU46ZnVuY3Rpb24oRSl7cmV0dXJuIEUhPUV9fSl9LDg2NDc5OihYZSxKZSxMKT0+e3ZhciBtZT1MKDQyOTg1KSxCPUwoMTgzNjcpLEU9TWF0aC5h''@;'; put 'put ''YnM7bWUobWUuUywiTnVtYmVyIix7aXNTYWZlSW50ZWdlcjpmdW5jdGlvbihVKXtyZXR1cm4gQihVKSYmRShVKTw9OTAwNzE5OTI1NDc0MDk5MX19KX0sOTE3MzY6KFhlLEplLEwpPT57dmFyIG1lPUwoNDI5ODUpO21lKG1lLlMsIk51bWJlciIse01BWF9TQUZFX0lOVEVHRVI6OTAwNzE5OTI1''@;'; put 'put ''NDc0MDk5MX0pfSw1MTg4OTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0Mjk4NSk7bWUobWUuUywiTnVtYmVyIix7TUlOX1NBRkVfSU5URUdFUjotOTAwNzE5OTI1NDc0MDk5MX0pfSw2NTE3NzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0Mjk4NSksQj1MKDQ3NzQzKTttZShtZS5TK21lLkYqKE51bWJl''@;'; put 'put ''ci5wYXJzZUZsb2F0IT1CKSwiTnVtYmVyIix7cGFyc2VGbG9hdDpCfSl9LDgxMjQ2OihYZSxKZSxMKT0+e3ZhciBtZT1MKDQyOTg1KSxCPUwoNTU5NjApO21lKG1lLlMrbWUuRiooTnVtYmVyLnBhcnNlSW50IT1CKSwiTnVtYmVyIix7cGFyc2VJbnQ6Qn0pfSwzMDcyNjooWGUsSmUsTCk9Pnsi''@;'; put 'put ''dXNlIHN0cmljdCI7dmFyIG1lPUwoNDI5ODUpLEI9TCg4MTQ2NyksRT1MKDgzMzY1KSxFZT1MKDY4NTk1KSxVPTEuLnRvRml4ZWQsUT1NYXRoLmZsb29yLGo9WzAsMCwwLDAsMCwwXSxyZT0iTnVtYmVyLnRvRml4ZWQ6IGluY29ycmVjdCBpbnZvY2F0aW9uISIsWT1mdW5jdGlvbihKLHNlKXtm''@;'; put 'put ''b3IodmFyIG9lPS0xLGNlPXNlOysrb2U8NjspaltvZV09KGNlKz1KKmpbb2VdKSUxZTcsY2U9UShjZS8xZTcpfSxXPWZ1bmN0aW9uKEope2Zvcih2YXIgc2U9NixvZT0wOy0tc2U+PTA7KWpbc2VdPVEoKG9lKz1qW3NlXSkvSiksb2U9b2UlSioxZTd9LE49ZnVuY3Rpb24oKXtmb3IodmFyIEo9''@;'; put 'put ''NixzZT0iIjstLUo+PTA7KWlmKCIiIT09c2V8fDA9PT1KfHwwIT09altKXSl7dmFyIG9lPVN0cmluZyhqW0pdKTtzZT0iIj09PXNlP29lOnNlK0VlLmNhbGwoIjAiLDctb2UubGVuZ3RoKStvZX1yZXR1cm4gc2V9LHRlPWZ1bmN0aW9uKEosc2Usb2Upe3JldHVybiAwPT09c2U/b2U6c2UlMj09''@;'; put 'put ''MT90ZShKLHNlLTEsb2UqSik6dGUoSipKLHNlLzIsb2UpfTttZShtZS5QK21lLkYqKCEhVSYmKCIwLjAwMCIhPT04ZS01LnRvRml4ZWQoMyl8fCIxIiE9PS45LnRvRml4ZWQoMCl8fCIxLjI1IiE9PTEuMjU1LnRvRml4ZWQoMil8fCIxMDAwMDAwMDAwMDAwMDAwMTI4IiE9PSgweGRlMGI2YjNh''@;'; put 'put ''NzY0MDA4MCkudG9GaXhlZCgwKSl8fCFMKDc0MjUzKShmdW5jdGlvbigpe1UuY2FsbCh7fSl9KSksIk51bWJlciIse3RvRml4ZWQ6ZnVuY3Rpb24oc2Upe3ZhciBBZSxrZSxTZSxJZSxvZT1FKHRoaXMscmUpLGNlPUIoc2UpLGRlPSIiLHZlPSIwIjtpZihjZTwwfHxjZT4yMCl0aHJvdyBSYW5n''@;'; put 'put ''ZUVycm9yKHJlKTtpZihvZSE9b2UpcmV0dXJuIk5hTiI7aWYob2U8PS0xZTIxfHxvZT49MWUyMSlyZXR1cm4gU3RyaW5nKG9lKTtpZihvZTwwJiYoZGU9Ii0iLG9lPS1vZSksb2U+MWUtMjEpaWYoQWU9ZnVuY3Rpb24oSil7Zm9yKHZhciBzZT0wLG9lPUo7b2U+PTQwOTY7KXNlKz0xMixvZS89''@;'; put 'put ''NDA5Njtmb3IoO29lPj0yOylzZSs9MSxvZS89MjtyZXR1cm4gc2V9KG9lKnRlKDIsNjksMSkpLTY5LGtlPUFlPDA/b2UqdGUoMiwtQWUsMSk6b2UvdGUoMixBZSwxKSxrZSo9NDUwMzU5OTYyNzM3MDQ5NiwoQWU9NTItQWUpPjApe2ZvcihZKDAsa2UpLFNlPWNlO1NlPj03OylZKDFlNywwKSxT''@;'; put 'put ''ZS09Nztmb3IoWSh0ZSgxMCxTZSwxKSwwKSxTZT1BZS0xO1NlPj0yMzspVygxPDwyMyksU2UtPTIzO1coMTw8U2UpLFkoMSwxKSxXKDIpLHZlPU4oKX1lbHNlIFkoMCxrZSksWSgxPDwtQWUsMCksdmU9TigpK0VlLmNhbGwoIjAiLGNlKTtyZXR1cm4gdmU9Y2U+MD9kZSsoKEllPXZlLmxlbmd0''@;'; put 'put ''aCk8PWNlPyIwLiIrRWUuY2FsbCgiMCIsY2UtSWUpK3ZlOnZlLnNsaWNlKDAsSWUtY2UpKyIuIit2ZS5zbGljZShJZS1jZSkpOmRlK3ZlfX0pfSwxOTAxOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg0Mjk4NSksQj1MKDc0MjUzKSxFPUwoODMzNjUpLEVlPTEuLnRvUHJlY2lz''@;'; put 'put ''aW9uO21lKG1lLlArbWUuRiooQihmdW5jdGlvbigpe3JldHVybiIxIiE9PUVlLmNhbGwoMSx2b2lkIDApfSl8fCFCKGZ1bmN0aW9uKCl7RWUuY2FsbCh7fSl9KSksIk51bWJlciIse3RvUHJlY2lzaW9uOmZ1bmN0aW9uKFEpe3ZhciBqPUUodGhpcywiTnVtYmVyI3RvUHJlY2lzaW9uOiBpbmNv''@;'; put 'put ''cnJlY3QgaW52b2NhdGlvbiEiKTtyZXR1cm4gdm9pZCAwPT09UT9FZS5jYWxsKGopOkVlLmNhbGwoaixRKX19KX0sNzUxMTU6KFhlLEplLEwpPT57dmFyIG1lPUwoNDI5ODUpO21lKG1lLlMrbWUuRiwiT2JqZWN0Iix7YXNzaWduOkwoMzUzNDUpfSl9LDY4MTMyOihYZSxKZSxMKT0+e3ZhciBt''@;'; put 'put ''ZT1MKDQyOTg1KTttZShtZS5TLCJPYmplY3QiLHtjcmVhdGU6TCg0MjUwMyl9KX0sMzc0NzA6KFhlLEplLEwpPT57dmFyIG1lPUwoNDI5ODUpO21lKG1lLlMrbWUuRiohTCg2NzA1NyksIk9iamVjdCIse2RlZmluZVByb3BlcnRpZXM6TCgzNTU4OCl9KX0sNDgzODg6KFhlLEplLEwpPT57dmFy''@;'; put 'put ''IG1lPUwoNDI5ODUpO21lKG1lLlMrbWUuRiohTCg2NzA1NyksIk9iamVjdCIse2RlZmluZVByb3BlcnR5OkwoOTkyNzUpLmZ9KX0sODkzNzU6KFhlLEplLEwpPT57dmFyIG1lPUwoNTUyODYpLEI9TCg4NDcyOCkub25GcmVlemU7TCgzMzE2MCkoImZyZWV6ZSIsZnVuY3Rpb24oRSl7cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uKFUpe3JldHVybiBFJiZtZShVKT9FKEIoVSkpOlV9fSl9LDk0ODgyOihYZSxKZSxMKT0+e3ZhciBtZT1MKDIyMTEwKSxCPUwoMTg2OTMpLmY7TCgzMzE2MCkoImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oRWUsVSl7cmV0dXJu''@;'; put 'put ''IEIobWUoRWUpLFUpfX0pfSw3OTYyMjooWGUsSmUsTCk9PntMKDMzMTYwKSgiZ2V0T3duUHJvcGVydHlOYW1lcyIsZnVuY3Rpb24oKXtyZXR1cm4gTCgzOTMyNykuZn0pfSw0MTUyMDooWGUsSmUsTCk9Pnt2YXIgbWU9TCgyMDUwOCksQj1MKDQ2OCk7TCgzMzE2MCkoImdldFByb3RvdHlwZU9m''@;'; put 'put ''IixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihFZSl7cmV0dXJuIEIobWUoRWUpKX19KX0sNDk4OTI6KFhlLEplLEwpPT57dmFyIG1lPUwoNTUyODYpO0woMzMxNjApKCJpc0V4dGVuc2libGUiLGZ1bmN0aW9uKEIpe3JldHVybiBmdW5jdGlvbihFZSl7cmV0dXJuISFtZShFZSkmJighQnx8''@;'; put 'put ''QihFZSkpfX0pfSw2NDE1NzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg1NTI4Nik7TCgzMzE2MCkoImlzRnJvemVuIixmdW5jdGlvbihCKXtyZXR1cm4gZnVuY3Rpb24oRWUpe3JldHVybiFtZShFZSl8fCEhQiYmQihFZSl9fSl9LDM1MDk1OihYZSxKZSxMKT0+e3ZhciBtZT1MKDU1Mjg2KTtMKDMz''@;'; put 'put ''MTYwKSgiaXNTZWFsZWQiLGZ1bmN0aW9uKEIpe3JldHVybiBmdW5jdGlvbihFZSl7cmV0dXJuIW1lKEVlKXx8ISFCJiZCKEVlKX19KX0sOTkxNzY6KFhlLEplLEwpPT57dmFyIG1lPUwoNDI5ODUpO21lKG1lLlMsIk9iamVjdCIse2lzOkwoMjcxOTUpfSl9LDI3NDc2OihYZSxKZSxMKT0+e3Zh''@;'; put 'put ''ciBtZT1MKDIwNTA4KSxCPUwoNDcxODQpO0woMzMxNjApKCJrZXlzIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihFZSl7cmV0dXJuIEIobWUoRWUpKX19KX0sODQ2NzI6KFhlLEplLEwpPT57dmFyIG1lPUwoNTUyODYpLEI9TCg4NDcyOCkub25GcmVlemU7TCgzMzE2MCkoInByZXZlbnRF''@;'; put 'put ''eHRlbnNpb25zIixmdW5jdGlvbihFKXtyZXR1cm4gZnVuY3Rpb24oVSl7cmV0dXJuIEUmJm1lKFUpP0UoQihVKSk6VX19KX0sNDM1MzM6KFhlLEplLEwpPT57dmFyIG1lPUwoNTUyODYpLEI9TCg4NDcyOCkub25GcmVlemU7TCgzMzE2MCkoInNlYWwiLGZ1bmN0aW9uKEUpe3JldHVybiBmdW5j''@;'; put 'put ''dGlvbihVKXtyZXR1cm4gRSYmbWUoVSk/RShCKFUpKTpVfX0pfSw2ODgzODooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0Mjk4NSk7bWUobWUuUywiT2JqZWN0Iix7c2V0UHJvdG90eXBlT2Y6TCgyNzM3NSkuc2V0fSl9LDk2MjUzOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg0MTQ4''@;'; put 'put ''OCksQj17fTtCW0woODYzMTQpKCJ0b1N0cmluZ1RhZyIpXT0ieiIsQisiIiE9IltvYmplY3Qgel0iJiZMKDc3MjM0KShPYmplY3QucHJvdG90eXBlLCJ0b1N0cmluZyIsZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCAiK21lKHRoaXMpKyJdIn0sITApfSw2NDI5OTooWGUsSmUsTCk9Pnt2YXIg''@;'; put 'put ''bWU9TCg0Mjk4NSksQj1MKDQ3NzQzKTttZShtZS5HK21lLkYqKHBhcnNlRmxvYXQhPUIpLHtwYXJzZUZsb2F0OkJ9KX0sNzEwODQ6KFhlLEplLEwpPT57dmFyIG1lPUwoNDI5ODUpLEI9TCg1NTk2MCk7bWUobWUuRyttZS5GKihwYXJzZUludCE9Qikse3BhcnNlSW50OkJ9KX0sMjE1NzI6KFhl''@;'; put 'put ''LEplLEwpPT57dmFyIG1lPUwoNDI5ODUpLEI9TCgyNDk2MyksRT1MKDI3MDA3KSxFZT0oTCgzODE2KS5SZWZsZWN0fHx7fSkuYXBwbHksVT1GdW5jdGlvbi5hcHBseTttZShtZS5TK21lLkYqIUwoNzQyNTMpKGZ1bmN0aW9uKCl7RWUoZnVuY3Rpb24oKXt9KX0pLCJSZWZsZWN0Iix7YXBwbHk6''@;'; put 'put ''ZnVuY3Rpb24oaixyZSxhZSl7dmFyIFk9QihqKSxXPUUoYWUpO3JldHVybiBFZT9FZShZLHJlLFcpOlUuY2FsbChZLHJlLFcpfX0pfSw4MjEzOTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0Mjk4NSksQj1MKDQyNTAzKSxFPUwoMjQ5NjMpLEVlPUwoMjcwMDcpLFU9TCg1NTI4NiksUT1MKDc0MjUz''@;'; put 'put ''KSxqPUwoMzQzOTgpLHJlPShMKDM4MTYpLlJlZmxlY3R8fHt9KS5jb25zdHJ1Y3QsYWU9UShmdW5jdGlvbigpe2Z1bmN0aW9uIFcoKXt9cmV0dXJuIShyZShmdW5jdGlvbigpe30sW10sVylpbnN0YW5jZW9mIFcpfSksWT0hUShmdW5jdGlvbigpe3JlKGZ1bmN0aW9uKCl7fSl9KTttZShtZS5T''@;'; put 'put ''K21lLkYqKGFlfHxZKSwiUmVmbGVjdCIse2NvbnN0cnVjdDpmdW5jdGlvbihOLHRlKXtFKE4pLEVlKHRlKTt2YXIgSz1hcmd1bWVudHMubGVuZ3RoPDM/TjpFKGFyZ3VtZW50c1syXSk7aWYoWSYmIWFlKXJldHVybiByZShOLHRlLEspO2lmKE49PUspe3N3aXRjaCh0ZS5sZW5ndGgpe2Nhc2Ug''@;'; put 'put ''MDpyZXR1cm4gbmV3IE47Y2FzZSAxOnJldHVybiBuZXcgTih0ZVswXSk7Y2FzZSAyOnJldHVybiBuZXcgTih0ZVswXSx0ZVsxXSk7Y2FzZSAzOnJldHVybiBuZXcgTih0ZVswXSx0ZVsxXSx0ZVsyXSk7Y2FzZSA0OnJldHVybiBuZXcgTih0ZVswXSx0ZVsxXSx0ZVsyXSx0ZVszXSl9dmFyIEo9''@;'; put 'put ''W251bGxdO3JldHVybiBKLnB1c2guYXBwbHkoSix0ZSksbmV3KGouYXBwbHkoTixKKSl9dmFyIHNlPUsucHJvdG90eXBlLG9lPUIoVShzZSk/c2U6T2JqZWN0LnByb3RvdHlwZSksY2U9RnVuY3Rpb24uYXBwbHkuY2FsbChOLG9lLHRlKTtyZXR1cm4gVShjZSk/Y2U6b2V9fSl9LDEwNjg1OihY''@;'; put 'put ''ZSxKZSxMKT0+e3ZhciBtZT1MKDk5Mjc1KSxCPUwoNDI5ODUpLEU9TCgyNzAwNyksRWU9TCgyMTY4OSk7QihCLlMrQi5GKkwoNzQyNTMpKGZ1bmN0aW9uKCl7UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShtZS5mKHt9LDEse3ZhbHVlOjF9KSwxLHt2YWx1ZToyfSl9KSwiUmVmbGVjdCIse2RlZmlu''@;'; put 'put ''ZVByb3BlcnR5OmZ1bmN0aW9uKFEsaixyZSl7RShRKSxqPUVlKGosITApLEUocmUpO3RyeXtyZXR1cm4gbWUuZihRLGoscmUpLCEwfWNhdGNoKGFlKXtyZXR1cm4hMX19fSl9LDg1NTM1OihYZSxKZSxMKT0+e3ZhciBtZT1MKDQyOTg1KSxCPUwoMTg2OTMpLmYsRT1MKDI3MDA3KTttZShtZS5T''@;'; put 'put ''LCJSZWZsZWN0Iix7ZGVsZXRlUHJvcGVydHk6ZnVuY3Rpb24oVSxRKXt2YXIgaj1CKEUoVSksUSk7cmV0dXJuIShqJiYhai5jb25maWd1cmFibGUpJiZkZWxldGUgVVtRXX19KX0sMTczNDc6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDQyOTg1KSxCPUwoMjcwMDcpLEU9ZnVu''@;'; put 'put ''Y3Rpb24oRWUpe3RoaXMuX3Q9QihFZSksdGhpcy5faT0wO3ZhciBRLFU9dGhpcy5faz1bXTtmb3IoUSBpbiBFZSlVLnB1c2goUSl9O0woNDk5ODgpKEUsIk9iamVjdCIsZnVuY3Rpb24oKXt2YXIgUSxVPXRoaXMuX2s7ZG97aWYodGhpcy5faT49VS5sZW5ndGgpcmV0dXJue3ZhbHVlOnZvaWQg''@;'; put 'put ''MCxkb25lOiEwfX13aGlsZSghKChRPVVbdGhpcy5faSsrXSlpbiB0aGlzLl90KSk7cmV0dXJue3ZhbHVlOlEsZG9uZTohMX19KSxtZShtZS5TLCJSZWZsZWN0Iix7ZW51bWVyYXRlOmZ1bmN0aW9uKFUpe3JldHVybiBuZXcgRShVKX19KX0sOTY2MzM6KFhlLEplLEwpPT57dmFyIG1lPUwoMTg2''@;'; put 'put ''OTMpLEI9TCg0Mjk4NSksRT1MKDI3MDA3KTtCKEIuUywiUmVmbGVjdCIse2dldE93blByb3BlcnR5RGVzY3JpcHRvcjpmdW5jdGlvbihVLFEpe3JldHVybiBtZS5mKEUoVSksUSl9fSl9LDY4OTg5OihYZSxKZSxMKT0+e3ZhciBtZT1MKDQyOTg1KSxCPUwoNDY4KSxFPUwoMjcwMDcpO21lKG1l''@;'; put 'put ''LlMsIlJlZmxlY3QiLHtnZXRQcm90b3R5cGVPZjpmdW5jdGlvbihVKXtyZXR1cm4gQihFKFUpKX19KX0sODMwNDk6KFhlLEplLEwpPT57dmFyIG1lPUwoMTg2OTMpLEI9TCg0NjgpLEU9TCg3OTE4MSksRWU9TCg0Mjk4NSksVT1MKDU1Mjg2KSxRPUwoMjcwMDcpO0VlKEVlLlMsIlJlZmxlY3Qi''@;'; put 'put ''LHtnZXQ6ZnVuY3Rpb24gaihyZSxhZSl7dmFyIFcsTixZPWFyZ3VtZW50cy5sZW5ndGg8Mz9yZTphcmd1bWVudHNbMl07cmV0dXJuIFEocmUpPT09WT9yZVthZV06KFc9bWUuZihyZSxhZSkpP0UoVywidmFsdWUiKT9XLnZhbHVlOnZvaWQgMCE9PVcuZ2V0P1cuZ2V0LmNhbGwoWSk6dm9pZCAw''@;'; put 'put ''OlUoTj1CKHJlKSk/aihOLGFlLFkpOnZvaWQgMH19KX0sNzgyNzA6KFhlLEplLEwpPT57dmFyIG1lPUwoNDI5ODUpO21lKG1lLlMsIlJlZmxlY3QiLHtoYXM6ZnVuY3Rpb24oRSxFZSl7cmV0dXJuIEVlIGluIEV9fSl9LDY0NTEwOihYZSxKZSxMKT0+e3ZhciBtZT1MKDQyOTg1KSxCPUwoMjcw''@;'; put 'put ''MDcpLEU9T2JqZWN0LmlzRXh0ZW5zaWJsZTttZShtZS5TLCJSZWZsZWN0Iix7aXNFeHRlbnNpYmxlOmZ1bmN0aW9uKFUpe3JldHVybiBCKFUpLCFFfHxFKFUpfX0pfSw3Mzk4NDooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0Mjk4NSk7bWUobWUuUywiUmVmbGVjdCIse293bktleXM6TCg1NzY0Myl9''@;'; put 'put ''KX0sNzU3Njk6KFhlLEplLEwpPT57dmFyIG1lPUwoNDI5ODUpLEI9TCgyNzAwNyksRT1PYmplY3QucHJldmVudEV4dGVuc2lvbnM7bWUobWUuUywiUmVmbGVjdCIse3ByZXZlbnRFeHRlbnNpb25zOmZ1bmN0aW9uKFUpe0IoVSk7dHJ5e3JldHVybiBFJiZFKFUpLCEwfWNhdGNoKFEpe3JldHVy''@;'; put 'put ''biExfX19KX0sOTYwMTQ6KFhlLEplLEwpPT57dmFyIG1lPUwoNDI5ODUpLEI9TCgyNzM3NSk7QiYmbWUobWUuUywiUmVmbGVjdCIse3NldFByb3RvdHlwZU9mOmZ1bmN0aW9uKEVlLFUpe0IuY2hlY2soRWUsVSk7dHJ5e3JldHVybiBCLnNldChFZSxVKSwhMH1jYXRjaChRKXtyZXR1cm4hMX19''@;'; put 'put ''fSl9LDUwMDU1OihYZSxKZSxMKT0+e3ZhciBtZT1MKDk5Mjc1KSxCPUwoMTg2OTMpLEU9TCg0NjgpLEVlPUwoNzkxODEpLFU9TCg0Mjk4NSksUT1MKDkwNjgxKSxqPUwoMjcwMDcpLHJlPUwoNTUyODYpO1UoVS5TLCJSZWZsZWN0Iix7c2V0OmZ1bmN0aW9uIGFlKFksVyxOKXt2YXIgSixzZSx0''@;'; put 'put ''ZT1hcmd1bWVudHMubGVuZ3RoPDQ/WTphcmd1bWVudHNbM10sSz1CLmYoaihZKSxXKTtpZighSyl7aWYocmUoc2U9RShZKSkpcmV0dXJuIGFlKHNlLFcsTix0ZSk7Sz1RKDApfWlmKEVlKEssInZhbHVlIikpe2lmKCExPT09Sy53cml0YWJsZXx8IXJlKHRlKSlyZXR1cm4hMTtpZihKPUIuZih0''@;'; put 'put ''ZSxXKSl7aWYoSi5nZXR8fEouc2V0fHwhMT09PUoud3JpdGFibGUpcmV0dXJuITE7Si52YWx1ZT1OLG1lLmYodGUsVyxKKX1lbHNlIG1lLmYodGUsVyxRKDAsTikpO3JldHVybiEwfXJldHVybiB2b2lkIDAhPT1LLnNldCYmKEsuc2V0LmNhbGwodGUsTiksITApfX0pfSw4Mzk0NjooWGUsSmUs''@;'; put 'put ''TCk9Pnt2YXIgbWU9TCgzODE2KSxCPUwoNDAyNjYpLEU9TCg5OTI3NSkuZixFZT1MKDIwNjE2KS5mLFU9TCg1NTM2NCksUT1MKDUzMjE4KSxqPW1lLlJlZ0V4cCxyZT1qLGFlPWoucHJvdG90eXBlLFk9L2EvZyxXPS9hL2csTj1uZXcgaihZKSE9PVk7aWYoTCg2NzA1NykmJighTnx8TCg3NDI1''@;'; put 'put ''MykoZnVuY3Rpb24oKXtyZXR1cm4gV1tMKDg2MzE0KSgibWF0Y2giKV09ITEsaihZKSE9WXx8aihXKT09V3x8Ii9hL2kiIT1qKFksImkiKX0pKSl7aj1mdW5jdGlvbihvZSxjZSl7dmFyIGRlPXRoaXMgaW5zdGFuY2VvZiBqLHZlPVUob2UpLEFlPXZvaWQgMD09PWNlO3JldHVybiFkZSYmdmUm''@;'; put 'put ''Jm9lLmNvbnN0cnVjdG9yPT09aiYmQWU/b2U6QihOP25ldyByZSh2ZSYmIUFlP29lLnNvdXJjZTpvZSxjZSk6cmUoKHZlPW9lIGluc3RhbmNlb2Ygaik/b2Uuc291cmNlOm9lLHZlJiZBZT9RLmNhbGwob2UpOmNlKSxkZT90aGlzOmFlLGopfTtmb3IodmFyIHRlPWZ1bmN0aW9uKHNlKXtzZSBp''@;'; put 'put ''biBqfHxFKGosc2Use2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcmVbc2VdfSxzZXQ6ZnVuY3Rpb24ob2Upe3JlW3NlXT1vZX19KX0sSz1FZShyZSksSj0wO0subGVuZ3RoPko7KXRlKEtbSisrXSk7YWUuY29uc3RydWN0b3I9aixqLnByb3RvdHlwZT1hZSxMKDc3MjM0''@;'; put 'put ''KShtZSwiUmVnRXhwIixqKX1MKDI5NzQpKCJSZWdFeHAiKX0sMTgyNjk6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDIxMTY1KTtMKDQyOTg1KSh7dGFyZ2V0OiJSZWdFeHAiLHByb3RvOiEwLGZvcmNlZDptZSE9PS8uLy5leGVjfSx7ZXhlYzptZX0pfSw3Njc3NDooWGUsSmUs''@;'; put 'put ''TCk9PntMKDY3MDU3KSYmImciIT0vLi9nLmZsYWdzJiZMKDk5Mjc1KS5mKFJlZ0V4cC5wcm90b3R5cGUsImZsYWdzIix7Y29uZmlndXJhYmxlOiEwLGdldDpMKDUzMjE4KX0pfSwyMTQ2NjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoMjcwMDcpLEI9TCgxMDg3NSksRT1MKDc2''@;'; put 'put ''NzkzKSxFZT1MKDI3Nzg3KTtMKDI4MDgyKSgibWF0Y2giLDEsZnVuY3Rpb24oVSxRLGoscmUpe3JldHVybltmdW5jdGlvbihZKXt2YXIgVz1VKHRoaXMpLE49bnVsbD09WT92b2lkIDA6WVtRXTtyZXR1cm4gdm9pZCAwIT09Tj9OLmNhbGwoWSxXKTpuZXcgUmVnRXhwKFkpW1FdKFN0cmluZyhX''@;'; put 'put ''KSl9LGZ1bmN0aW9uKGFlKXt2YXIgWT1yZShqLGFlLHRoaXMpO2lmKFkuZG9uZSlyZXR1cm4gWS52YWx1ZTt2YXIgVz1tZShhZSksTj1TdHJpbmcodGhpcyk7aWYoIVcuZ2xvYmFsKXJldHVybiBFZShXLE4pO3ZhciB0ZT1XLnVuaWNvZGU7Vy5sYXN0SW5kZXg9MDtmb3IodmFyIHNlLEs9W10s''@;'; put 'put ''Sj0wO251bGwhPT0oc2U9RWUoVyxOKSk7KXt2YXIgb2U9U3RyaW5nKHNlWzBdKTtLW0pdPW9lLCIiPT09b2UmJihXLmxhc3RJbmRleD1FKE4sQihXLmxhc3RJbmRleCksdGUpKSxKKyt9cmV0dXJuIDA9PT1KP251bGw6S31dfSl9LDU5MzU3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''bWU9TCgyNzAwNyksQj1MKDIwNTA4KSxFPUwoMTA4NzUpLEVlPUwoODE0NjcpLFU9TCg3Njc5MyksUT1MKDI3Nzg3KSxqPU1hdGgubWF4LHJlPU1hdGgubWluLGFlPU1hdGguZmxvb3IsWT0vXCQoWyQmYCddfFxkXGQ/fDxbXj5dKj4pL2csVz0vXCQoWyQmYCddfFxkXGQ/KS9nLE49ZnVuY3Rp''@;'; put 'put ''b24odGUpe3JldHVybiB2b2lkIDA9PT10ZT90ZTpTdHJpbmcodGUpfTtMKDI4MDgyKSgicmVwbGFjZSIsMixmdW5jdGlvbih0ZSxLLEosc2Upe3JldHVybltmdW5jdGlvbihkZSx2ZSl7dmFyIEFlPXRlKHRoaXMpLGtlPW51bGw9PWRlP3ZvaWQgMDpkZVtLXTtyZXR1cm4gdm9pZCAwIT09a2U/''@;'; put 'put ''a2UuY2FsbChkZSxBZSx2ZSk6Si5jYWxsKFN0cmluZyhBZSksZGUsdmUpfSxmdW5jdGlvbihjZSxkZSl7dmFyIHZlPXNlKEosY2UsdGhpcyxkZSk7aWYodmUuZG9uZSlyZXR1cm4gdmUudmFsdWU7dmFyIEFlPW1lKGNlKSxrZT1TdHJpbmcodGhpcyksU2U9ImZ1bmN0aW9uIj09dHlwZW9mIGRl''@;'; put 'put ''O1NlfHwoZGU9U3RyaW5nKGRlKSk7dmFyIEllPUFlLmdsb2JhbDtpZihJZSl7dmFyIFRlPUFlLnVuaWNvZGU7QWUubGFzdEluZGV4PTB9Zm9yKHZhciBNZT1bXTs7KXt2YXIgaGU9UShBZSxrZSk7aWYobnVsbD09PWhlfHwoTWUucHVzaChoZSksIUllKSlicmVhazsiIj09PVN0cmluZyhoZVsw''@;'; put 'put ''XSkmJihBZS5sYXN0SW5kZXg9VShrZSxFKEFlLmxhc3RJbmRleCksVGUpKX1mb3IodmFyIHo9IiIsZWU9MCxuZT0wO25lPE1lLmxlbmd0aDtuZSsrKXtoZT1NZVtuZV07Zm9yKHZhciB4PVN0cmluZyhoZVswXSksUD1qKHJlKEVlKGhlLmluZGV4KSxrZS5sZW5ndGgpLDApLFY9W10sVD0xO1Q8''@;'; put 'put ''aGUubGVuZ3RoO1QrKylWLnB1c2goTihoZVtUXSkpO3ZhciBTPWhlLmdyb3VwcztpZihTZSl7dmFyIEY9W3hdLmNvbmNhdChWLFAsa2UpO3ZvaWQgMCE9PVMmJkYucHVzaChTKTt2YXIgeWU9U3RyaW5nKGRlLmFwcGx5KHZvaWQgMCxGKSl9ZWxzZSB5ZT1vZSh4LGtlLFAsVixTLGRlKTtQPj1l''@;'; put 'put ''ZSYmKHorPWtlLnNsaWNlKGVlLFApK3llLGVlPVAreC5sZW5ndGgpfXJldHVybiB6K2tlLnNsaWNlKGVlKX1dO2Z1bmN0aW9uIG9lKGNlLGRlLHZlLEFlLGtlLFNlKXt2YXIgSWU9dmUrY2UubGVuZ3RoLFRlPUFlLmxlbmd0aCxNZT1XO3JldHVybiB2b2lkIDAhPT1rZSYmKGtlPUIoa2UpLE1l''@;'; put 'put ''PVkpLEouY2FsbChTZSxNZSxmdW5jdGlvbihoZSxPKXt2YXIgejtzd2l0Y2goTy5jaGFyQXQoMCkpe2Nhc2UiJCI6cmV0dXJuIiQiO2Nhc2UiJiI6cmV0dXJuIGNlO2Nhc2UiYCI6cmV0dXJuIGRlLnNsaWNlKDAsdmUpO2Nhc2UiJyI6cmV0dXJuIGRlLnNsaWNlKEllKTtjYXNlIjwiOno9a2Vb''@;'; put 'put ''Ty5zbGljZSgxLC0xKV07YnJlYWs7ZGVmYXVsdDp2YXIgZWU9K087aWYoMD09PWVlKXJldHVybiBoZTtpZihlZT5UZSl7dmFyIG5lPWFlKGVlLzEwKTtyZXR1cm4gMD09PW5lP2hlOm5lPD1UZT92b2lkIDA9PT1BZVtuZS0xXT9PLmNoYXJBdCgxKTpBZVtuZS0xXStPLmNoYXJBdCgxKTpoZX16''@;'; put 'put ''PUFlW2VlLTFdfXJldHVybiB2b2lkIDA9PT16PyIiOnp9KX19KX0sNzYxNDI6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDI3MDA3KSxCPUwoMjcxOTUpLEU9TCgyNzc4Nyk7TCgyODA4MikoInNlYXJjaCIsMSxmdW5jdGlvbihFZSxVLFEsail7cmV0dXJuW2Z1bmN0aW9uKGFl''@;'; put 'put ''KXt2YXIgWT1FZSh0aGlzKSxXPW51bGw9PWFlP3ZvaWQgMDphZVtVXTtyZXR1cm4gdm9pZCAwIT09Vz9XLmNhbGwoYWUsWSk6bmV3IFJlZ0V4cChhZSlbVV0oU3RyaW5nKFkpKX0sZnVuY3Rpb24ocmUpe3ZhciBhZT1qKFEscmUsdGhpcyk7aWYoYWUuZG9uZSlyZXR1cm4gYWUudmFsdWU7dmFy''@;'; put 'put ''IFk9bWUocmUpLFc9U3RyaW5nKHRoaXMpLE49WS5sYXN0SW5kZXg7QihOLDApfHwoWS5sYXN0SW5kZXg9MCk7dmFyIHRlPUUoWSxXKTtyZXR1cm4gQihZLmxhc3RJbmRleCxOKXx8KFkubGFzdEluZGV4PU4pLG51bGw9PT10ZT8tMTp0ZS5pbmRleH1dfSl9LDUxODc2OihYZSxKZSxMKT0+eyJ1''@;'; put 'put ''c2Ugc3RyaWN0Ijt2YXIgbWU9TCg1NTM2NCksQj1MKDI3MDA3KSxFPUwoNTgzNjQpLEVlPUwoNzY3OTMpLFU9TCgxMDg3NSksUT1MKDI3Nzg3KSxqPUwoMjExNjUpLHJlPUwoNzQyNTMpLGFlPU1hdGgubWluLFk9W10ucHVzaCxXPSJzcGxpdCIsTj0ibGVuZ3RoIix0ZT0ibGFzdEluZGV4IixL''@;'; put 'put ''PTQyOTQ5NjcyOTUsSj0hcmUoZnVuY3Rpb24oKXtSZWdFeHAoSywieSIpfSk7TCgyODA4MikoInNwbGl0IiwyLGZ1bmN0aW9uKHNlLG9lLGNlLGRlKXt2YXIgdmU7cmV0dXJuIHZlPSJjIj09ImFiYmMiW1ddKC8oYikqLylbMV18fDQhPSJ0ZXN0IltXXSgvKD86KS8sLTEpW05dfHwyIT0iYWIi''@;'; put 'put ''W1ddKC8oPzphYikqLylbTl18fDQhPSIuIltXXSgvKC4/KSguPykvKVtOXXx8Ii4iW1ddKC8oKSgpLylbTl0+MXx8IiJbV10oLy4/LylbTl0/ZnVuY3Rpb24oQWUsa2Upe3ZhciBTZT1TdHJpbmcodGhpcyk7aWYodm9pZCAwPT09QWUmJjA9PT1rZSlyZXR1cm5bXTtpZighbWUoQWUpKXJldHVy''@;'; put 'put ''biBjZS5jYWxsKFNlLEFlLGtlKTtmb3IodmFyIHosZWUsbmUsSWU9W10sTWU9MCxoZT12b2lkIDA9PT1rZT9LOmtlPj4+MCxPPW5ldyBSZWdFeHAoQWUuc291cmNlLChBZS5pZ25vcmVDYXNlPyJpIjoiIikrKEFlLm11bHRpbGluZT8ibSI6IiIpKyhBZS51bmljb2RlPyJ1IjoiIikrKEFlLnN0''@;'; put 'put ''aWNreT8ieSI6IiIpKyJnIik7KHo9ai5jYWxsKE8sU2UpKSYmISgoZWU9T1t0ZV0pPk1lJiYoSWUucHVzaChTZS5zbGljZShNZSx6LmluZGV4KSkseltOXT4xJiZ6LmluZGV4PFNlW05dJiZZLmFwcGx5KEllLHouc2xpY2UoMSkpLG5lPXpbMF1bTl0sTWU9ZWUsSWVbTl0+PWhlKSk7KU9bdGVd''@;'; put 'put ''PT09ei5pbmRleCYmT1t0ZV0rKztyZXR1cm4gTWU9PT1TZVtOXT8obmV8fCFPLnRlc3QoIiIpKSYmSWUucHVzaCgiIik6SWUucHVzaChTZS5zbGljZShNZSkpLEllW05dPmhlP0llLnNsaWNlKDAsaGUpOkllfToiMCJbV10odm9pZCAwLDApW05dP2Z1bmN0aW9uKEFlLGtlKXtyZXR1cm4gdm9p''@;'; put 'put ''ZCAwPT09QWUmJjA9PT1rZT9bXTpjZS5jYWxsKHRoaXMsQWUsa2UpfTpjZSxbZnVuY3Rpb24oa2UsU2Upe3ZhciBJZT1zZSh0aGlzKSxUZT1udWxsPT1rZT92b2lkIDA6a2Vbb2VdO3JldHVybiB2b2lkIDAhPT1UZT9UZS5jYWxsKGtlLEllLFNlKTp2ZS5jYWxsKFN0cmluZyhJZSksa2UsU2Up''@;'; put 'put ''fSxmdW5jdGlvbihBZSxrZSl7dmFyIFNlPWRlKHZlLEFlLHRoaXMsa2UsdmUhPT1jZSk7aWYoU2UuZG9uZSlyZXR1cm4gU2UudmFsdWU7dmFyIEllPUIoQWUpLFRlPVN0cmluZyh0aGlzKSxNZT1FKEllLFJlZ0V4cCksaGU9SWUudW5pY29kZSx6PW5ldyBNZShKP0llOiJeKD86IitJZS5zb3Vy''@;'; put 'put ''Y2UrIikiLChJZS5pZ25vcmVDYXNlPyJpIjoiIikrKEllLm11bHRpbGluZT8ibSI6IiIpKyhJZS51bmljb2RlPyJ1IjoiIikrKEo/InkiOiJnIikpLGVlPXZvaWQgMD09PWtlP0s6a2U+Pj4wO2lmKDA9PT1lZSlyZXR1cm5bXTtpZigwPT09VGUubGVuZ3RoKXJldHVybiBudWxsPT09USh6LFRl''@;'; put 'put ''KT9bVGVdOltdO2Zvcih2YXIgbmU9MCx4PTAsUD1bXTt4PFRlLmxlbmd0aDspe3oubGFzdEluZGV4PUo/eDowO3ZhciBULFY9USh6LEo/VGU6VGUuc2xpY2UoeCkpO2lmKG51bGw9PT1WfHwoVD1hZShVKHoubGFzdEluZGV4KyhKPzA6eCkpLFRlLmxlbmd0aCkpPT09bmUpeD1FZShUZSx4LGhl''@;'; put 'put ''KTtlbHNle2lmKFAucHVzaChUZS5zbGljZShuZSx4KSksUC5sZW5ndGg9PT1lZSlyZXR1cm4gUDtmb3IodmFyIFM9MTtTPD1WLmxlbmd0aC0xO1MrKylpZihQLnB1c2goVltTXSksUC5sZW5ndGg9PT1lZSlyZXR1cm4gUDt4PW5lPVR9fXJldHVybiBQLnB1c2goVGUuc2xpY2UobmUpKSxQfV19''@;'; put 'put ''KX0sNjYxMDg6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0woNzY3NzQpO3ZhciBtZT1MKDI3MDA3KSxCPUwoNTMyMTgpLEU9TCg2NzA1NyksRWU9InRvU3RyaW5nIixVPS8uL1tFZV0sUT1mdW5jdGlvbihqKXtMKDc3MjM0KShSZWdFeHAucHJvdG90eXBlLEVlLGosITApfTtMKDc0MjUzKShm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiIvYS9iIiE9VS5jYWxsKHtzb3VyY2U6ImEiLGZsYWdzOiJiIn0pfSk/UShmdW5jdGlvbigpe3ZhciByZT1tZSh0aGlzKTtyZXR1cm4iLyIuY29uY2F0KHJlLnNvdXJjZSwiLyIsImZsYWdzImluIHJlP3JlLmZsYWdzOiFFJiZyZSBpbnN0YW5jZW9mIFJlZ0V4cD9C''@;'; put 'put ''LmNhbGwocmUpOnZvaWQgMCl9KTpVLm5hbWUhPUVlJiZRKGZ1bmN0aW9uKCl7cmV0dXJuIFUuY2FsbCh0aGlzKX0pfSw5ODE4NDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoOTgyNCksQj1MKDE2MTYpO1hlLmV4cG9ydHM9TCg0NTc5NSkoIlNldCIsZnVuY3Rpb24oRWUpe3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbigpe3JldHVybiBFZSh0aGlzLGFyZ3VtZW50cy5sZW5ndGg+MD9hcmd1bWVudHNbMF06dm9pZCAwKX19LHthZGQ6ZnVuY3Rpb24oVSl7cmV0dXJuIG1lLmRlZihCKHRoaXMsIlNldCIpLFU9MD09PVU/MDpVLFUpfX0sbWUpfSw0MDg1NjooWGUsSmUsTCk9PnsidXNlIHN0''@;'; put 'put ''cmljdCI7TCgyOTM5NSkoImFuY2hvciIsZnVuY3Rpb24obWUpe3JldHVybiBmdW5jdGlvbihFKXtyZXR1cm4gbWUodGhpcywiYSIsIm5hbWUiLEUpfX0pfSw4MDcwMzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TCgyOTM5NSkoImJpZyIsZnVuY3Rpb24obWUpe3JldHVybiBmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBtZSh0aGlzLCJiaWciLCIiLCIiKX19KX0sOTE1Mzk6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0woMjkzOTUpKCJibGluayIsZnVuY3Rpb24obWUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBtZSh0aGlzLCJibGluayIsIiIsIiIpfX0pfSw1MjkyOihYZSxKZSxMKT0+eyJ1''@;'; put 'put ''c2Ugc3RyaWN0IjtMKDI5Mzk1KSgiYm9sZCIsZnVuY3Rpb24obWUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBtZSh0aGlzLCJiIiwiIiwiIil9fSl9LDI5NTM5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg0Mjk4NSksQj1MKDI0NDk2KSghMSk7bWUobWUuUCwiU3RyaW5n''@;'; put 'put ''Iix7Y29kZVBvaW50QXQ6ZnVuY3Rpb24oRWUpe3JldHVybiBCKHRoaXMsRWUpfX0pfSw5NjYyMDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoNDI5ODUpLEI9TCgxMDg3NSksRT1MKDQyMDk0KSxFZT0iZW5kc1dpdGgiLFU9IiJbRWVdO21lKG1lLlArbWUuRipMKDg4NTIpKEVl''@;'; put 'put ''KSwiU3RyaW5nIix7ZW5kc1dpdGg6ZnVuY3Rpb24oail7dmFyIHJlPUUodGhpcyxqLEVlKSxhZT1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxZPUIocmUubGVuZ3RoKSxXPXZvaWQgMD09PWFlP1k6TWF0aC5taW4oQihhZSksWSksTj1TdHJpbmcoaik7cmV0dXJuIFU/''@;'; put 'put ''VS5jYWxsKHJlLE4sVyk6cmUuc2xpY2UoVy1OLmxlbmd0aCxXKT09PU59fSl9LDQ1MTc3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMKDI5Mzk1KSgiZml4ZWQiLGZ1bmN0aW9uKG1lKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbWUodGhpcywidHQiLCIiLCIiKX19KX0sNzM2OTQ6KFhl''@;'; put 'put ''LEplLEwpPT57InVzZSBzdHJpY3QiO0woMjkzOTUpKCJmb250Y29sb3IiLGZ1bmN0aW9uKG1lKXtyZXR1cm4gZnVuY3Rpb24oRSl7cmV0dXJuIG1lKHRoaXMsImZvbnQiLCJjb2xvciIsRSl9fSl9LDM3NjQ4OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMKDI5Mzk1KSgiZm9udHNpemUiLGZ1''@;'; put 'put ''bmN0aW9uKG1lKXtyZXR1cm4gZnVuY3Rpb24oRSl7cmV0dXJuIG1lKHRoaXMsImZvbnQiLCJzaXplIixFKX19KX0sNTAxOTE6KFhlLEplLEwpPT57dmFyIG1lPUwoNDI5ODUpLEI9TCg5MjMzNyksRT1TdHJpbmcuZnJvbUNoYXJDb2RlLEVlPVN0cmluZy5mcm9tQ29kZVBvaW50O21lKG1lLlMr''@;'; put 'put ''bWUuRiooISFFZSYmMSE9RWUubGVuZ3RoKSwiU3RyaW5nIix7ZnJvbUNvZGVQb2ludDpmdW5jdGlvbihRKXtmb3IodmFyIFksaj1bXSxyZT1hcmd1bWVudHMubGVuZ3RoLGFlPTA7cmU+YWU7KXtpZihZPSthcmd1bWVudHNbYWUrK10sQihZLDExMTQxMTEpIT09WSl0aHJvdyBSYW5nZUVycm9y''@;'; put 'put ''KFkrIiBpcyBub3QgYSB2YWxpZCBjb2RlIHBvaW50Iik7ai5wdXNoKFk8NjU1MzY/RShZKTpFKDU1Mjk2KygoWS09NjU1MzYpPj4xMCksWSUxMDI0KzU2MzIwKSl9cmV0dXJuIGouam9pbigiIil9fSl9LDYyODUwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg0Mjk4NSksQj1M''@;'; put 'put ''KDQyMDk0KSxFPSJpbmNsdWRlcyI7bWUobWUuUCttZS5GKkwoODg1MikoRSksIlN0cmluZyIse2luY2x1ZGVzOmZ1bmN0aW9uKFUpe3JldHVybiEhfkIodGhpcyxVLEUpLmluZGV4T2YoVSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSl9LDI3Nzk1OihYZSxKZSxM''@;'; put 'put ''KT0+eyJ1c2Ugc3RyaWN0IjtMKDI5Mzk1KSgiaXRhbGljcyIsZnVuY3Rpb24obWUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBtZSh0aGlzLCJpIiwiIiwiIil9fSl9LDM5MTE1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgyNDQ5NikoITApO0woNDI5MjMpKFN0cmluZywi''@;'; put 'put ''U3RyaW5nIixmdW5jdGlvbihCKXt0aGlzLl90PVN0cmluZyhCKSx0aGlzLl9pPTB9LGZ1bmN0aW9uKCl7dmFyIEVlLEI9dGhpcy5fdCxFPXRoaXMuX2k7cmV0dXJuIEU+PUIubGVuZ3RoP3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06KEVlPW1lKEIsRSksdGhpcy5faSs9RWUubGVuZ3RoLHt2YWx1''@;'; put 'put ''ZTpFZSxkb25lOiExfSl9KX0sNDUzMTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TCgyOTM5NSkoImxpbmsiLGZ1bmN0aW9uKG1lKXtyZXR1cm4gZnVuY3Rpb24oRSl7cmV0dXJuIG1lKHRoaXMsImEiLCJocmVmIixFKX19KX0sOTgzMDY6KFhlLEplLEwpPT57dmFyIG1lPUwoNDI5ODUpLEI9''@;'; put 'put ''TCgyMjExMCksRT1MKDEwODc1KTttZShtZS5TLCJTdHJpbmciLHtyYXc6ZnVuY3Rpb24oVSl7Zm9yKHZhciBRPUIoVS5yYXcpLGo9RShRLmxlbmd0aCkscmU9YXJndW1lbnRzLmxlbmd0aCxhZT1bXSxZPTA7aj5ZOylhZS5wdXNoKFN0cmluZyhRW1krK10pKSxZPHJlJiZhZS5wdXNoKFN0cmlu''@;'; put 'put ''Zyhhcmd1bWVudHNbWV0pKTtyZXR1cm4gYWUuam9pbigiIil9fSl9LDEwODIzOihYZSxKZSxMKT0+e3ZhciBtZT1MKDQyOTg1KTttZShtZS5QLCJTdHJpbmciLHtyZXBlYXQ6TCg2ODU5NSl9KX0sMjM2MDU6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0woMjkzOTUpKCJzbWFsbCIsZnVuY3Rp''@;'; put 'put ''b24obWUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBtZSh0aGlzLCJzbWFsbCIsIiIsIiIpfX0pfSwxNzczMjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoNDI5ODUpLEI9TCgxMDg3NSksRT1MKDQyMDk0KSxFZT0ic3RhcnRzV2l0aCIsVT0iIltFZV07bWUobWUuUCttZS5G''@;'; put 'put ''KkwoODg1MikoRWUpLCJTdHJpbmciLHtzdGFydHNXaXRoOmZ1bmN0aW9uKGope3ZhciByZT1FKHRoaXMsaixFZSksYWU9QihNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxyZS5sZW5ndGgpKSxZPVN0cmluZyhqKTtyZXR1cm4gVT9VLmNhbGwocmUsWSxh''@;'; put 'put ''ZSk6cmUuc2xpY2UoYWUsYWUrWS5sZW5ndGgpPT09WX19KX0sNjc4MDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TCgyOTM5NSkoInN0cmlrZSIsZnVuY3Rpb24obWUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBtZSh0aGlzLCJzdHJpa2UiLCIiLCIiKX19KX0sNjk5Mzc6KFhlLEplLEwp''@;'; put 'put ''PT57InVzZSBzdHJpY3QiO0woMjkzOTUpKCJzdWIiLGZ1bmN0aW9uKG1lKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbWUodGhpcywic3ViIiwiIiwiIil9fSl9LDEwNTExOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMKDI5Mzk1KSgic3VwIixmdW5jdGlvbihtZSl7cmV0dXJuIGZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIG1lKHRoaXMsInN1cCIsIiIsIiIpfX0pfSw2NDU2NDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7TCgyOTU5OSkoInRyaW0iLGZ1bmN0aW9uKG1lKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbWUodGhpcywzKX19KX0sOTU3Njc6KFhlLEplLEwpPT57InVzZSBzdHJp''@;'; put 'put ''Y3QiO3ZhciBtZT1MKDM4MTYpLEI9TCg3OTE4MSksRT1MKDY3MDU3KSxFZT1MKDQyOTg1KSxVPUwoNzcyMzQpLFE9TCg4NDcyOCkuS0VZLGo9TCg3NDI1MykscmU9TCgzODI1KSxhZT1MKDIyOTQzKSxZPUwoOTM5NTMpLFc9TCg4NjMxNCksTj1MKDI4Nzg3KSx0ZT1MKDM2MDc0KSxLPUwoNTU0''@;'; put 'put ''MSksSj1MKDQzMDIpLHNlPUwoMjcwMDcpLG9lPUwoNTUyODYpLGNlPUwoMjA1MDgpLGRlPUwoMjIxMTApLHZlPUwoMjE2ODkpLEFlPUwoOTA2ODEpLGtlPUwoNDI1MDMpLFNlPUwoMzkzMjcpLEllPUwoMTg2OTMpLFRlPUwoNjQ1NDgpLE1lPUwoOTkyNzUpLGhlPUwoNDcxODQpLE89SWUuZix6''@;'; put 'put ''PU1lLmYsZWU9U2UuZixuZT1tZS5TeW1ib2wseD1tZS5KU09OLFA9eCYmeC5zdHJpbmdpZnksVj0icHJvdG90eXBlIixUPVcoIl9oaWRkZW4iKSxTPVcoInRvUHJpbWl0aXZlIiksRj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSx5ZT1yZSgic3ltYm9sLXJlZ2lzdHJ5IiksQ2U9cmUoInN5bWJv''@;'; put 'put ''bHMiKSxEZT1yZSgib3Atc3ltYm9scyIpLFBlPU9iamVjdFtWXSxRZT0iZnVuY3Rpb24iPT10eXBlb2YgbmUmJiEhVGUuZiwkZT1tZS5RT2JqZWN0LGd0PSEkZXx8ISRlW1ZdfHwhJGVbVl0uZmluZENoaWxkLHd0PUUmJmooZnVuY3Rpb24oKXtyZXR1cm4gNyE9a2Uoeih7fSwiYSIse2dldDpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB6KHRoaXMsImEiLHt2YWx1ZTo3fSkuYX19KSkuYX0pP2Z1bmN0aW9uKEdlLFVlLHl0KXt2YXIganQ9TyhQZSxVZSk7anQmJmRlbGV0ZSBQZVtVZV0seihHZSxVZSx5dCksanQmJkdlIT09UGUmJnooUGUsVWUsanQpfTp6LG10PWZ1bmN0aW9uKEdlKXt2YXIgVWU9''@;'; put 'put ''Q2VbR2VdPWtlKG5lW1ZdKTtyZXR1cm4gVWUuX2s9R2UsVWV9LHZ0PVFlJiYic3ltYm9sIj09dHlwZW9mIG5lLml0ZXJhdG9yP2Z1bmN0aW9uKEdlKXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIEdlfTpmdW5jdGlvbihHZSl7cmV0dXJuIEdlIGluc3RhbmNlb2YgbmV9LEF0PWZ1bmN0aW9uKFVl''@;'; put 'put ''LHl0LGp0KXtyZXR1cm4gVWU9PT1QZSYmQXQoRGUseXQsanQpLHNlKFVlKSx5dD12ZSh5dCwhMCksc2UoanQpLEIoQ2UseXQpPyhqdC5lbnVtZXJhYmxlPyhCKFVlLFQpJiZVZVtUXVt5dF0mJihVZVtUXVt5dF09ITEpLGp0PWtlKGp0LHtlbnVtZXJhYmxlOkFlKDAsITEpfSkpOihCKFVlLFQp''@;'; put 'put ''fHx6KFVlLFQsQWUoMSx7fSkpLFVlW1RdW3l0XT0hMCksd3QoVWUseXQsanQpKTp6KFVlLHl0LGp0KX0saHQ9ZnVuY3Rpb24oVWUseXQpe3NlKFVlKTtmb3IodmFyIGRuLGp0PUsoeXQ9ZGUoeXQpKSxKdD0wLGduPWp0Lmxlbmd0aDtnbj5KdDspQXQoVWUsZG49anRbSnQrK10seXRbZG5dKTty''@;'; put 'put ''ZXR1cm4gVWV9LG9uPWZ1bmN0aW9uKFVlKXt2YXIgeXQ9Ri5jYWxsKHRoaXMsVWU9dmUoVWUsITApKTtyZXR1cm4hKHRoaXM9PT1QZSYmQihDZSxVZSkmJiFCKERlLFVlKSkmJighKHl0fHwhQih0aGlzLFVlKXx8IUIoQ2UsVWUpfHxCKHRoaXMsVCkmJnRoaXNbVF1bVWVdKXx8eXQpfSxfdD1m''@;'; put 'put ''dW5jdGlvbihVZSx5dCl7aWYoVWU9ZGUoVWUpLHl0PXZlKHl0LCEwKSxVZSE9PVBlfHwhQihDZSx5dCl8fEIoRGUseXQpKXt2YXIganQ9TyhVZSx5dCk7cmV0dXJuIGp0JiZCKENlLHl0KSYmIShCKFVlLFQpJiZVZVtUXVt5dF0pJiYoanQuZW51bWVyYWJsZT0hMCksanR9fSx0dD1mdW5jdGlv''@;'; put 'put ''bihVZSl7Zm9yKHZhciBnbix5dD1lZShkZShVZSkpLGp0PVtdLEp0PTA7eXQubGVuZ3RoPkp0OykhQihDZSxnbj15dFtKdCsrXSkmJmduIT1UJiZnbiE9USYmanQucHVzaChnbik7cmV0dXJuIGp0fSxldD1mdW5jdGlvbihVZSl7Zm9yKHZhciBkbix5dD1VZT09PVBlLGp0PWVlKHl0P0RlOmRl''@;'; put 'put ''KFVlKSksSnQ9W10sZ249MDtqdC5sZW5ndGg+Z247KUIoQ2UsZG49anRbZ24rK10pJiYoIXl0fHxCKFBlLGRuKSkmJkp0LnB1c2goQ2VbZG5dKTtyZXR1cm4gSnR9O1FlfHwoVSgobmU9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgbmUpdGhyb3cgVHlwZUVycm9yKCJTeW1ib2wgaXMg''@;'; put 'put ''bm90IGEgY29uc3RydWN0b3IhIik7dmFyIFVlPVkoYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApLHl0PWZ1bmN0aW9uKGp0KXt0aGlzPT09UGUmJnl0LmNhbGwoRGUsanQpLEIodGhpcyxUKSYmQih0aGlzW1RdLFVlKSYmKHRoaXNbVF1bVWVdPSExKSx3dCh0aGlzLFVl''@;'; put 'put ''LEFlKDEsanQpKX07cmV0dXJuIEUmJmd0JiZ3dChQZSxVZSx7Y29uZmlndXJhYmxlOiEwLHNldDp5dH0pLG10KFVlKX0pW1ZdLCJ0b1N0cmluZyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fa30pLEllLmY9X3QsTWUuZj1BdCxMKDIwNjE2KS5mPVNlLmY9dHQsTCgxNDY4MikuZj1vbixUZS5m''@;'; put 'put ''PWV0LEUmJiFMKDQ0NjEpJiZVKFBlLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsb24sITApLE4uZj1mdW5jdGlvbihHZSl7cmV0dXJuIG10KFcoR2UpKX0pLEVlKEVlLkcrRWUuVytFZS5GKiFRZSx7U3ltYm9sOm5lfSk7Zm9yKHZhciBsdD0iaGFzSW5zdGFuY2UsaXNDb25jYXRTcHJlYWRhYmxl''@;'; put 'put ''LGl0ZXJhdG9yLG1hdGNoLHJlcGxhY2Usc2VhcmNoLHNwZWNpZXMsc3BsaXQsdG9QcmltaXRpdmUsdG9TdHJpbmdUYWcsdW5zY29wYWJsZXMiLnNwbGl0KCIsIiksTHQ9MDtsdC5sZW5ndGg+THQ7KVcobHRbTHQrK10pO2Zvcih2YXIgQ3Q9aGUoVy5zdG9yZSksZnQ9MDtDdC5sZW5ndGg+ZnQ7''@;'; put 'put ''KXRlKEN0W2Z0KytdKTtFZShFZS5TK0VlLkYqIVFlLCJTeW1ib2wiLHtmb3I6ZnVuY3Rpb24oR2Upe3JldHVybiBCKHllLEdlKz0iIik/eWVbR2VdOnllW0dlXT1uZShHZSl9LGtleUZvcjpmdW5jdGlvbihVZSl7aWYoIXZ0KFVlKSl0aHJvdyBUeXBlRXJyb3IoVWUrIiBpcyBub3QgYSBzeW1i''@;'; put 'put ''b2whIik7Zm9yKHZhciB5dCBpbiB5ZSlpZih5ZVt5dF09PT1VZSlyZXR1cm4geXR9LHVzZVNldHRlcjpmdW5jdGlvbigpe2d0PSEwfSx1c2VTaW1wbGU6ZnVuY3Rpb24oKXtndD0hMX19KSxFZShFZS5TK0VlLkYqIVFlLCJPYmplY3QiLHtjcmVhdGU6ZnVuY3Rpb24oVWUseXQpe3JldHVybiB2''@;'; put 'put ''b2lkIDA9PT15dD9rZShVZSk6aHQoa2UoVWUpLHl0KX0sZGVmaW5lUHJvcGVydHk6QXQsZGVmaW5lUHJvcGVydGllczpodCxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6X3QsZ2V0T3duUHJvcGVydHlOYW1lczp0dCxnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ZXR9KTt2YXIgSHQ9aihmdW5jdGlv''@;'; put 'put ''bigpe1RlLmYoMSl9KTtFZShFZS5TK0VlLkYqSHQsIk9iamVjdCIse2dldE93blByb3BlcnR5U3ltYm9sczpmdW5jdGlvbihVZSl7cmV0dXJuIFRlLmYoY2UoVWUpKX19KSx4JiZFZShFZS5TK0VlLkYqKCFRZXx8aihmdW5jdGlvbigpe3ZhciBHZT1uZSgpO3JldHVybiJbbnVsbF0iIT1QKFtH''@;'; put 'put ''ZV0pfHwie30iIT1QKHthOkdlfSl8fCJ7fSIhPVAoT2JqZWN0KEdlKSl9KSksIkpTT04iLHtzdHJpbmdpZnk6ZnVuY3Rpb24oVWUpe2Zvcih2YXIgSnQsZ24seXQ9W1VlXSxqdD0xO2FyZ3VtZW50cy5sZW5ndGg+anQ7KXl0LnB1c2goYXJndW1lbnRzW2p0KytdKTtpZihnbj1KdD15dFsxXSwo''@;'; put 'put ''b2UoSnQpfHx2b2lkIDAhPT1VZSkmJiF2dChVZSkpcmV0dXJuIEooSnQpfHwoSnQ9ZnVuY3Rpb24oZG4seW4pe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBnbiYmKHluPWduLmNhbGwodGhpcyxkbix5bikpLCF2dCh5bikpcmV0dXJuIHlufSkseXRbMV09SnQsUC5hcHBseSh4LHl0KX19KSxuZVtW''@;'; put 'put ''XVtTXXx8TCg4NzcyOCkobmVbVl0sUyxuZVtWXS52YWx1ZU9mKSxhZShuZSwiU3ltYm9sIiksYWUoTWF0aCwiTWF0aCIsITApLGFlKG1lLkpTT04sIkpTT04iLCEwKX0sMzAxNDc6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBKLG1lPUwoMzgxNiksQj1MKDEwMDUwKSgwKSxFPUwoNzcy''@;'; put 'put ''MzQpLEVlPUwoODQ3MjgpLFU9TCgzNTM0NSksUT1MKDIzNjU3KSxqPUwoNTUyODYpLHJlPUwoMTYxNiksYWU9TCgxNjE2KSxZPSFtZS5BY3RpdmVYT2JqZWN0JiYiQWN0aXZlWE9iamVjdCJpbiBtZSxXPSJXZWFrTWFwIixOPUVlLmdldFdlYWssdGU9T2JqZWN0LmlzRXh0ZW5zaWJsZSxLPVEu''@;'; put 'put ''dWZzdG9yZSxzZT1mdW5jdGlvbihkZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGRlKHRoaXMsYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApfX0sb2U9e2dldDpmdW5jdGlvbih2ZSl7aWYoaih2ZSkpe3ZhciBBZT1OKHZlKTtyZXR1cm4hMD09PUFlP0socmUodGhp''@;'; put 'put ''cyxXKSkuZ2V0KHZlKTpBZT9BZVt0aGlzLl9pXTp2b2lkIDB9fSxzZXQ6ZnVuY3Rpb24odmUsQWUpe3JldHVybiBRLmRlZihyZSh0aGlzLFcpLHZlLEFlKX19LGNlPVhlLmV4cG9ydHM9TCg0NTc5NSkoVyxzZSxvZSxRLCEwLCEwKTthZSYmWSYmKFUoKEo9US5nZXRDb25zdHJ1Y3RvcihzZSxX''@;'; put 'put ''KSkucHJvdG90eXBlLG9lKSxFZS5ORUVEPSEwLEIoWyJkZWxldGUiLCJoYXMiLCJnZXQiLCJzZXQiXSxmdW5jdGlvbihkZSl7dmFyIHZlPWNlLnByb3RvdHlwZSxBZT12ZVtkZV07RSh2ZSxkZSxmdW5jdGlvbihrZSxTZSl7aWYoaihrZSkmJiF0ZShrZSkpe3RoaXMuX2Z8fCh0aGlzLl9mPW5l''@;'; put 'put ''dyBKKTt2YXIgSWU9dGhpcy5fZltkZV0oa2UsU2UpO3JldHVybiJzZXQiPT1kZT90aGlzOkllfXJldHVybiBBZS5jYWxsKHRoaXMsa2UsU2UpfSl9KSl9LDUzMzY0OihYZSxKZSxMKT0+e3ZhciBtZT1MKDUwMTMzKSxCPUwoMjcwMDcpLEU9bWUua2V5LEVlPW1lLnNldDttZS5leHAoe2RlZmlu''@;'; put 'put ''ZU1ldGFkYXRhOmZ1bmN0aW9uKFEsaixyZSxhZSl7RWUoUSxqLEIocmUpLEUoYWUpKX19KX0sNTE0MzI6KFhlLEplLEwpPT57dmFyIG1lPUwoNTAxMzMpLEI9TCgyNzAwNyksRT1tZS5rZXksRWU9bWUubWFwLFU9bWUuc3RvcmU7bWUuZXhwKHtkZWxldGVNZXRhZGF0YTpmdW5jdGlvbihqLHJl''@;'; put 'put ''KXt2YXIgYWU9YXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDpFKGFyZ3VtZW50c1syXSksWT1FZShCKHJlKSxhZSwhMSk7aWYodm9pZCAwPT09WXx8IVkuZGVsZXRlKGopKXJldHVybiExO2lmKFkuc2l6ZSlyZXR1cm4hMDt2YXIgVz1VLmdldChyZSk7cmV0dXJuIFcuZGVsZXRlKGFlKSwhIVcu''@;'; put 'put ''c2l6ZXx8VS5kZWxldGUocmUpfX0pfSw4NDQxNjooWGUsSmUsTCk9Pnt2YXIgbWU9TCg5ODE4NCksQj1MKDk0OTApLEU9TCg1MDEzMyksRWU9TCgyNzAwNyksVT1MKDQ2OCksUT1FLmtleXMsaj1FLmtleSxyZT1mdW5jdGlvbihhZSxZKXt2YXIgVz1RKGFlLFkpLE49VShhZSk7aWYobnVsbD09''@;'; put 'put ''PU4pcmV0dXJuIFc7dmFyIHRlPXJlKE4sWSk7cmV0dXJuIHRlLmxlbmd0aD9XLmxlbmd0aD9CKG5ldyBtZShXLmNvbmNhdCh0ZSkpKTp0ZTpXfTtFLmV4cCh7Z2V0TWV0YWRhdGFLZXlzOmZ1bmN0aW9uKFkpe3JldHVybiByZShFZShZKSxhcmd1bWVudHMubGVuZ3RoPDI/dm9pZCAwOmooYXJn''@;'; put 'put ''dW1lbnRzWzFdKSl9fSl9LDI2NTYyOihYZSxKZSxMKT0+e3ZhciBtZT1MKDUwMTMzKSxCPUwoMjcwMDcpLEU9TCg0NjgpLEVlPW1lLmhhcyxVPW1lLmdldCxRPW1lLmtleSxqPWZ1bmN0aW9uKHJlLGFlLFkpe2lmKEVlKHJlLGFlLFkpKXJldHVybiBVKHJlLGFlLFkpO3ZhciBOPUUoYWUpO3Jl''@;'; put 'put ''dHVybiBudWxsIT09Tj9qKHJlLE4sWSk6dm9pZCAwfTttZS5leHAoe2dldE1ldGFkYXRhOmZ1bmN0aW9uKGFlLFkpe3JldHVybiBqKGFlLEIoWSksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDpRKGFyZ3VtZW50c1syXSkpfX0pfSwzMjIxMzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg1MDEzMyks''@;'; put 'put ''Qj1MKDI3MDA3KSxFPW1lLmtleXMsRWU9bWUua2V5O21lLmV4cCh7Z2V0T3duTWV0YWRhdGFLZXlzOmZ1bmN0aW9uKFEpe3JldHVybiBFKEIoUSksYXJndW1lbnRzLmxlbmd0aDwyP3ZvaWQgMDpFZShhcmd1bWVudHNbMV0pKX19KX0sOTg2ODE6KFhlLEplLEwpPT57dmFyIG1lPUwoNTAxMzMp''@;'; put 'put ''LEI9TCgyNzAwNyksRT1tZS5nZXQsRWU9bWUua2V5O21lLmV4cCh7Z2V0T3duTWV0YWRhdGE6ZnVuY3Rpb24oUSxqKXtyZXR1cm4gRShRLEIoaiksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDpFZShhcmd1bWVudHNbMl0pKX19KX0sNjM0NzE6KFhlLEplLEwpPT57dmFyIG1lPUwoNTAxMzMp''@;'; put 'put ''LEI9TCgyNzAwNyksRT1MKDQ2OCksRWU9bWUuaGFzLFU9bWUua2V5LFE9ZnVuY3Rpb24oaixyZSxhZSl7aWYoRWUoaixyZSxhZSkpcmV0dXJuITA7dmFyIFc9RShyZSk7cmV0dXJuIG51bGwhPT1XJiZRKGosVyxhZSl9O21lLmV4cCh7aGFzTWV0YWRhdGE6ZnVuY3Rpb24ocmUsYWUpe3JldHVy''@;'; put 'put ''biBRKHJlLEIoYWUpLGFyZ3VtZW50cy5sZW5ndGg8Mz92b2lkIDA6VShhcmd1bWVudHNbMl0pKX19KX0sNDMyOTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg1MDEzMyksQj1MKDI3MDA3KSxFPW1lLmhhcyxFZT1tZS5rZXk7bWUuZXhwKHtoYXNPd25NZXRhZGF0YTpmdW5jdGlvbihRLGope3JldHVy''@;'; put 'put ''biBFKFEsQihqKSxhcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOkVlKGFyZ3VtZW50c1syXSkpfX0pfSwyNTE1OTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg1MDEzMyksQj1MKDI3MDA3KSxFPUwoMjQ5NjMpLEVlPW1lLmtleSxVPW1lLnNldDttZS5leHAoe21ldGFkYXRhOmZ1bmN0aW9uKGoscmUp''@;'; put 'put ''e3JldHVybiBmdW5jdGlvbihZLFcpe1UoaixyZSwodm9pZCAwIT09Vz9COkUpKFkpLEVlKFcpKX19fSl9LDkxMTgxOihYZSxKZSxMKT0+e2Zvcih2YXIgbWU9TCg1Njk5NyksQj1MKDQ3MTg0KSxFPUwoNzcyMzQpLEVlPUwoMzgxNiksVT1MKDg3NzI4KSxRPUwoODcyMzQpLGo9TCg4NjMxNCks''@;'; put 'put ''cmU9aigiaXRlcmF0b3IiKSxhZT1qKCJ0b1N0cmluZ1RhZyIpLFk9US5BcnJheSxXPXtDU1NSdWxlTGlzdDohMCxDU1NTdHlsZURlY2xhcmF0aW9uOiExLENTU1ZhbHVlTGlzdDohMSxDbGllbnRSZWN0TGlzdDohMSxET01SZWN0TGlzdDohMSxET01TdHJpbmdMaXN0OiExLERPTVRva2VuTGlz''@;'; put 'put ''dDohMCxEYXRhVHJhbnNmZXJJdGVtTGlzdDohMSxGaWxlTGlzdDohMSxIVE1MQWxsQ29sbGVjdGlvbjohMSxIVE1MQ29sbGVjdGlvbjohMSxIVE1MRm9ybUVsZW1lbnQ6ITEsSFRNTFNlbGVjdEVsZW1lbnQ6ITEsTWVkaWFMaXN0OiEwLE1pbWVUeXBlQXJyYXk6ITEsTmFtZWROb2RlTWFwOiEx''@;'; put 'put ''LE5vZGVMaXN0OiEwLFBhaW50UmVxdWVzdExpc3Q6ITEsUGx1Z2luOiExLFBsdWdpbkFycmF5OiExLFNWR0xlbmd0aExpc3Q6ITEsU1ZHTnVtYmVyTGlzdDohMSxTVkdQYXRoU2VnTGlzdDohMSxTVkdQb2ludExpc3Q6ITEsU1ZHU3RyaW5nTGlzdDohMSxTVkdUcmFuc2Zvcm1MaXN0OiExLFNv''@;'; put 'put ''dXJjZUJ1ZmZlckxpc3Q6ITEsU3R5bGVTaGVldExpc3Q6ITAsVGV4dFRyYWNrQ3VlTGlzdDohMSxUZXh0VHJhY2tMaXN0OiExLFRvdWNoTGlzdDohMX0sTj1CKFcpLHRlPTA7dGU8Ti5sZW5ndGg7dGUrKyl7dmFyIGNlLEs9Tlt0ZV0sSj1XW0tdLHNlPUVlW0tdLG9lPXNlJiZzZS5wcm90b3R5''@;'; put 'put ''cGU7aWYob2UmJihvZVtyZV18fFUob2UscmUsWSksb2VbYWVdfHxVKG9lLGFlLEspLFFbS109WSxKKSlmb3IoY2UgaW4gbWUpb2VbY2VdfHxFKG9lLGNlLG1lW2NlXSwhMCl9fSw4MTQ1MDooWGUsSmUsTCk9Pnt2YXIgbWU9TCgxMjAxNCksQj1MKDk0Njc2KSxFPVR5cGVFcnJvcjtYZS5leHBv''@;'; put 'put ''cnRzPWZ1bmN0aW9uKEVlKXtpZihtZShFZSkpcmV0dXJuIEVlO3Rocm93IEUoQihFZSkrIiBpcyBub3QgYSBmdW5jdGlvbiIpfX0sNTY1ODE6KFhlLEplLEwpPT57dmFyIG1lPUwoNDk0NTMpLEI9TCg5NDY3NiksRT1UeXBlRXJyb3I7WGUuZXhwb3J0cz1mdW5jdGlvbihFZSl7aWYobWUoRWUp''@;'; put 'put ''KXJldHVybiBFZTt0aHJvdyBFKEIoRWUpKyIgaXMgbm90IGEgY29uc3RydWN0b3IiKX19LDcwMDg6KFhlLEplLEwpPT57dmFyIG1lPUwoMTIwMTQpLEI9U3RyaW5nLEU9VHlwZUVycm9yO1hlLmV4cG9ydHM9ZnVuY3Rpb24oRWUpe2lmKCJvYmplY3QiPT10eXBlb2YgRWV8fG1lKEVlKSlyZXR1''@;'; put 'put ''cm4gRWU7dGhyb3cgRSgiQ2FuJ3Qgc2V0ICIrQihFZSkrIiBhcyBhIHByb3RvdHlwZSIpfX0sNzQ5NjU6KFhlLEplLEwpPT57dmFyIG1lPUwoMjU0NiksQj1MKDc0NDEwKSxFPUwoNTExODMpLmYsRWU9bWUoInVuc2NvcGFibGVzIiksVT1BcnJheS5wcm90b3R5cGU7bnVsbD09VVtFZV0mJkUo''@;'; put 'put ''VSxFZSx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOkIobnVsbCl9KSxYZS5leHBvcnRzPWZ1bmN0aW9uKFEpe1VbRWVdW1FdPSEwfX0sNjE2NzY6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDc1MDU4KS5jaGFyQXQ7WGUuZXhwb3J0cz1mdW5jdGlvbihCLEUsRWUpe3JldHVybiBF''@;'; put 'put ''KyhFZT9tZShCLEUpLmxlbmd0aDoxKX19LDk1MjA0OihYZSxKZSxMKT0+e3ZhciBtZT1MKDM3NDc0KSxCPVR5cGVFcnJvcjtYZS5leHBvcnRzPWZ1bmN0aW9uKEUsRWUpe2lmKG1lKEVlLEUpKXJldHVybiBFO3Rocm93IEIoIkluY29ycmVjdCBpbnZvY2F0aW9uIil9fSw1ODY0NzooWGUsSmUs''@;'; put 'put ''TCk9Pnt2YXIgbWU9TCg3MTQ5NiksQj1TdHJpbmcsRT1UeXBlRXJyb3I7WGUuZXhwb3J0cz1mdW5jdGlvbihFZSl7aWYobWUoRWUpKXJldHVybiBFZTt0aHJvdyBFKEIoRWUpKyIgaXMgbm90IGFuIG9iamVjdCIpfX0sNjI3ODk6KFhlLEplLEwpPT57dmFyIG1lPUwoMjM1MjMpO1hlLmV4cG9y''@;'; put 'put ''dHM9bWUoZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIpe3ZhciBCPW5ldyBBcnJheUJ1ZmZlcig4KTtPYmplY3QuaXNFeHRlbnNpYmxlKEIpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiYSIse3ZhbHVlOjh9KX19KX0sNTcxNzk6KFhlLEplLEwpPT57InVz''@;'; put 'put ''ZSBzdHJpY3QiO3ZhciBtZT1MKDY4MDcxKSxCPUwoNzYxNjMpLEU9TCg1NDQ1MCk7WGUuZXhwb3J0cz1mdW5jdGlvbihVKXtmb3IodmFyIFE9bWUodGhpcyksaj1FKFEpLHJlPWFyZ3VtZW50cy5sZW5ndGgsYWU9QihyZT4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsaiksWT1yZT4yP2FyZ3VtZW50''@;'; put 'put ''c1syXTp2b2lkIDAsVz12b2lkIDA9PT1ZP2o6QihZLGopO1c+YWU7KVFbYWUrK109VTtyZXR1cm4gUX19LDM3MzE5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg5NTY2OSkuZm9yRWFjaCxFPUwoNjMxMjQpKCJmb3JFYWNoIik7WGUuZXhwb3J0cz1FP1tdLmZvckVhY2g6ZnVu''@;'; put 'put ''Y3Rpb24oVSl7cmV0dXJuIG1lKHRoaXMsVSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSw2NjY2NjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoODU0OSksQj1MKDM1NjIpLEU9TCg2ODA3MSksRWU9TCgxODc2KSxVPUwoOTcxMDYpLFE9TCg0OTQ1''@;'; put 'put ''Myksaj1MKDU0NDUwKSxyZT1MKDk1MDA0KSxhZT1MKDEyOTg5KSxZPUwoNjYyODgpLFc9QXJyYXk7WGUuZXhwb3J0cz1mdW5jdGlvbih0ZSl7dmFyIEs9RSh0ZSksSj1RKHRoaXMpLHNlPWFyZ3VtZW50cy5sZW5ndGgsb2U9c2U+MT9hcmd1bWVudHNbMV06dm9pZCAwLGNlPXZvaWQgMCE9PW9l''@;'; put 'put ''O2NlJiYob2U9bWUob2Usc2U+Mj9hcmd1bWVudHNbMl06dm9pZCAwKSk7dmFyIEFlLGtlLFNlLEllLFRlLE1lLGRlPVkoSyksdmU9MDtpZighZGV8fHRoaXM9PT1XJiZVKGRlKSlmb3IoQWU9aihLKSxrZT1KP25ldyB0aGlzKEFlKTpXKEFlKTtBZT52ZTt2ZSsrKU1lPWNlP29lKEtbdmVdLHZl''@;'; put 'put ''KTpLW3ZlXSxyZShrZSx2ZSxNZSk7ZWxzZSBmb3IoVGU9KEllPWFlKEssZGUpKS5uZXh0LGtlPUo/bmV3IHRoaXM6W107IShTZT1CKFRlLEllKSkuZG9uZTt2ZSsrKU1lPWNlP0VlKEllLG9lLFtTZS52YWx1ZSx2ZV0sITApOlNlLnZhbHVlLHJlKGtlLHZlLE1lKTtyZXR1cm4ga2UubGVuZ3Ro''@;'; put 'put ''PXZlLGtlfX0sMzYzMDU6KFhlLEplLEwpPT57dmFyIG1lPUwoNTAzMjcpLEI9TCg3NjE2MyksRT1MKDU0NDUwKSxFZT1mdW5jdGlvbihVKXtyZXR1cm4gZnVuY3Rpb24oUSxqLHJlKXt2YXIgTixhZT1tZShRKSxZPUUoYWUpLFc9QihyZSxZKTtpZihVJiZqIT1qKXtmb3IoO1k+VzspaWYoKE49''@;'; put 'put ''YWVbVysrXSkhPU4pcmV0dXJuITB9ZWxzZSBmb3IoO1k+VztXKyspaWYoKFV8fFcgaW4gYWUpJiZhZVtXXT09PWopcmV0dXJuIFV8fFd8fDA7cmV0dXJuIVUmJi0xfX07WGUuZXhwb3J0cz17aW5jbHVkZXM6RWUoITApLGluZGV4T2Y6RWUoITEpfX0sOTU2Njk6KFhlLEplLEwpPT57dmFyIG1l''@;'; put 'put ''PUwoODU0OSksQj1MKDY2MTMpLEU9TCg1NjYwNyksRWU9TCg2ODA3MSksVT1MKDU0NDUwKSxRPUwoMzE4NTcpLGo9QihbXS5wdXNoKSxyZT1mdW5jdGlvbihhZSl7dmFyIFk9MT09YWUsVz0yPT1hZSxOPTM9PWFlLHRlPTQ9PWFlLEs9Nj09YWUsSj03PT1hZSxzZT01PT1hZXx8SztyZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24ob2UsY2UsZGUsdmUpe2Zvcih2YXIgTyx6LEFlPUVlKG9lKSxrZT1FKEFlKSxTZT1tZShjZSxkZSksSWU9VShrZSksVGU9MCxNZT12ZXx8USxoZT1ZP01lKG9lLEllKTpXfHxKP01lKG9lLDApOnZvaWQgMDtJZT5UZTtUZSsrKWlmKChzZXx8VGUgaW4ga2UpJiYoej1TZShPPWtl''@;'; put 'put ''W1RlXSxUZSxBZSksYWUpKWlmKFkpaGVbVGVdPXo7ZWxzZSBpZih6KXN3aXRjaChhZSl7Y2FzZSAzOnJldHVybiEwO2Nhc2UgNTpyZXR1cm4gTztjYXNlIDY6cmV0dXJuIFRlO2Nhc2UgMjpqKGhlLE8pfWVsc2Ugc3dpdGNoKGFlKXtjYXNlIDQ6cmV0dXJuITE7Y2FzZSA3OmooaGUsTyl9cmV0''@;'; put 'put ''dXJuIEs/LTE6Tnx8dGU/dGU6aGV9fTtYZS5leHBvcnRzPXtmb3JFYWNoOnJlKDApLG1hcDpyZSgxKSxmaWx0ZXI6cmUoMiksc29tZTpyZSgzKSxldmVyeTpyZSg0KSxmaW5kOnJlKDUpLGZpbmRJbmRleDpyZSg2KSxmaWx0ZXJSZWplY3Q6cmUoNyl9fSw5NjIyOihYZSxKZSxMKT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgbWU9TCgxMTMwNiksQj1MKDUwMzI3KSxFPUwoNDA3MDIpLEVlPUwoNTQ0NTApLFU9TCg2MzEyNCksUT1NYXRoLm1pbixqPVtdLmxhc3RJbmRleE9mLHJlPSEhaiYmMS9bMV0ubGFzdEluZGV4T2YoMSwtMCk8MCxhZT1VKCJsYXN0SW5kZXhPZiIpO1hlLmV4cG9ydHM9cmV8''@;'; put 'put ''fCFhZT9mdW5jdGlvbihOKXtpZihyZSlyZXR1cm4gbWUoaix0aGlzLGFyZ3VtZW50cyl8fDA7dmFyIHRlPUIodGhpcyksSz1FZSh0ZSksSj1LLTE7Zm9yKGFyZ3VtZW50cy5sZW5ndGg+MSYmKEo9UShKLEUoYXJndW1lbnRzWzFdKSkpLEo8MCYmKEo9SytKKTtKPj0wO0otLSlpZihKIGluIHRl''@;'; put 'put ''JiZ0ZVtKXT09PU4pcmV0dXJuIEp8fDA7cmV0dXJuLTF9Omp9LDUxMjk4OihYZSxKZSxMKT0+e3ZhciBtZT1MKDIzNTIzKSxCPUwoMjU0NiksRT1MKDI5Mzg1KSxFZT1CKCJzcGVjaWVzIik7WGUuZXhwb3J0cz1mdW5jdGlvbihVKXtyZXR1cm4gRT49NTF8fCFtZShmdW5jdGlvbigpe3ZhciBR''@;'; put 'put ''PVtdO3JldHVybihRLmNvbnN0cnVjdG9yPXt9KVtFZV09ZnVuY3Rpb24oKXtyZXR1cm57Zm9vOjF9fSwxIT09UVtVXShCb29sZWFuKS5mb299KX19LDYzMTI0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgyMzUyMyk7WGUuZXhwb3J0cz1mdW5jdGlvbihCLEUpe3ZhciBFZT1b''@;'; put 'put ''XVtCXTtyZXR1cm4hIUVlJiZtZShmdW5jdGlvbigpe0VlLmNhbGwobnVsbCxFfHxmdW5jdGlvbigpe3JldHVybiAxfSwxKX0pfX0sNzM3NjA6KFhlLEplLEwpPT57dmFyIG1lPUwoODE0NTApLEI9TCg2ODA3MSksRT1MKDU2NjA3KSxFZT1MKDU0NDUwKSxVPVR5cGVFcnJvcixRPWZ1bmN0aW9u''@;'; put 'put ''KGope3JldHVybiBmdW5jdGlvbihyZSxhZSxZLFcpe21lKGFlKTt2YXIgTj1CKHJlKSx0ZT1FKE4pLEs9RWUoTiksSj1qP0stMTowLHNlPWo/LTE6MTtpZihZPDIpZm9yKDs7KXtpZihKIGluIHRlKXtXPXRlW0pdLEorPXNlO2JyZWFrfWlmKEorPXNlLGo/SjwwOks8PUopdGhyb3cgVSgiUmVk''@;'; put 'put ''dWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpfWZvcig7aj9KPj0wOks+SjtKKz1zZSlKIGluIHRlJiYoVz1hZShXLHRlW0pdLEosTikpO3JldHVybiBXfX07WGUuZXhwb3J0cz17bGVmdDpRKCExKSxyaWdodDpRKCEwKX19LDEwODcyOihYZSxKZSxMKT0+e3ZhciBt''@;'; put 'put ''ZT1MKDc2MTYzKSxCPUwoNTQ0NTApLEU9TCg5NTAwNCksRWU9QXJyYXksVT1NYXRoLm1heDtYZS5leHBvcnRzPWZ1bmN0aW9uKFEsaixyZSl7Zm9yKHZhciBhZT1CKFEpLFk9bWUoaixhZSksVz1tZSh2b2lkIDA9PT1yZT9hZTpyZSxhZSksTj1FZShVKFctWSwwKSksdGU9MDtZPFc7WSsrLHRl''@;'; put 'put ''KyspRShOLHRlLFFbWV0pO3JldHVybiBOLmxlbmd0aD10ZSxOfX0sNDA5MzA6KFhlLEplLEwpPT57dmFyIG1lPUwoNjYxMyk7WGUuZXhwb3J0cz1tZShbXS5zbGljZSl9LDMyNTk0OihYZSxKZSxMKT0+e3ZhciBtZT1MKDEwODcyKSxCPU1hdGguZmxvb3IsRT1mdW5jdGlvbihRLGope3ZhciBy''@;'; put 'put ''ZT1RLmxlbmd0aCxhZT1CKHJlLzIpO3JldHVybiByZTw4P0VlKFEsaik6VShRLEUobWUoUSwwLGFlKSxqKSxFKG1lKFEsYWUpLGopLGopfSxFZT1mdW5jdGlvbihRLGope2Zvcih2YXIgWSxXLHJlPVEubGVuZ3RoLGFlPTE7YWU8cmU7KXtmb3IoVz1hZSxZPVFbYWVdO1cmJmooUVtXLTFdLFkp''@;'; put 'put ''PjA7KVFbV109UVstLVddO1chPT1hZSsrJiYoUVtXXT1ZKX1yZXR1cm4gUX0sVT1mdW5jdGlvbihRLGoscmUsYWUpe2Zvcih2YXIgWT1qLmxlbmd0aCxXPXJlLmxlbmd0aCxOPTAsdGU9MDtOPFl8fHRlPFc7KVFbTit0ZV09TjxZJiZ0ZTxXP2FlKGpbTl0scmVbdGVdKTw9MD9qW04rK106cmVb''@;'; put 'put ''dGUrK106TjxZP2pbTisrXTpyZVt0ZSsrXTtyZXR1cm4gUX07WGUuZXhwb3J0cz1FfSw1NzgzNTooWGUsSmUsTCk9Pnt2YXIgbWU9TCgyOTEwNiksQj1MKDQ5NDUzKSxFPUwoNzE0OTYpLFU9TCgyNTQ2KSgic3BlY2llcyIpLFE9QXJyYXk7WGUuZXhwb3J0cz1mdW5jdGlvbihqKXt2YXIgcmU7''@;'; put 'put ''cmV0dXJuIG1lKGopJiYoQihyZT1qLmNvbnN0cnVjdG9yKSYmKHJlPT09UXx8bWUocmUucHJvdG90eXBlKSl8fEUocmUpJiZudWxsPT09KHJlPXJlW1VdKSkmJihyZT12b2lkIDApLHZvaWQgMD09PXJlP1E6cmV9fSwzMTg1NzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg1NzgzNSk7WGUuZXhwb3J0''@;'; put 'put ''cz1mdW5jdGlvbihCLEUpe3JldHVybiBuZXcobWUoQikpKDA9PT1FPzA6RSl9fSwxODc2OihYZSxKZSxMKT0+e3ZhciBtZT1MKDU4NjQ3KSxCPUwoODAzMDcpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oRSxFZSxVLFEpe3RyeXtyZXR1cm4gUT9FZShtZShVKVswXSxVWzFdKTpFZShVKX1jYXRjaChq''@;'; put 'put ''KXtCKEUsInRocm93IixqKX19fSwyNzc5MjooWGUsSmUsTCk9Pnt2YXIgQj1MKDI1NDYpKCJpdGVyYXRvciIpLEU9ITE7dHJ5e3ZhciBFZT0wLFU9e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTohIUVlKyt9fSxyZXR1cm46ZnVuY3Rpb24oKXtFPSEwfX07VVtCXT1mdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzfSxBcnJheS5mcm9tKFUsZnVuY3Rpb24oKXt0aHJvdyAyfSl9Y2F0Y2goUSl7fVhlLmV4cG9ydHM9ZnVuY3Rpb24oUSxqKXtpZighaiYmIUUpcmV0dXJuITE7dmFyIHJlPSExO3RyeXt2YXIgYWU9e307YWVbQl09ZnVuY3Rpb24oKXtyZXR1cm57bmV4dDpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybntkb25lOnJlPSEwfX19fSxRKGFlKX1jYXRjaChZKXt9cmV0dXJuIHJlfX0sOTQ3MjM6KFhlLEplLEwpPT57dmFyIG1lPUwoNjYxMyksQj1tZSh7fS50b1N0cmluZyksRT1tZSgiIi5zbGljZSk7WGUuZXhwb3J0cz1mdW5jdGlvbihFZSl7cmV0dXJuIEUoQihFZSksOCwtMSl9fSw3OTUy''@;'; put 'put ''MDooWGUsSmUsTCk9Pnt2YXIgbWU9TCgyNzQ5MCksQj1MKDEyMDE0KSxFPUwoOTQ3MjMpLFU9TCgyNTQ2KSgidG9TdHJpbmdUYWciKSxRPU9iamVjdCxqPSJBcmd1bWVudHMiPT1FKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk7WGUuZXhwb3J0cz1tZT9FOmZ1bmN0aW9uKGFlKXt2''@;'; put 'put ''YXIgWSxXLE47cmV0dXJuIHZvaWQgMD09PWFlPyJVbmRlZmluZWQiOm51bGw9PT1hZT8iTnVsbCI6InN0cmluZyI9PXR5cGVvZihXPWZ1bmN0aW9uKGFlLFkpe3RyeXtyZXR1cm4gYWVbWV19Y2F0Y2goVyl7fX0oWT1RKGFlKSxVKSk/VzpqP0UoWSk6Ik9iamVjdCI9PShOPUUoWSkpJiZCKFku''@;'; put 'put ''Y2FsbGVlKT8iQXJndW1lbnRzIjpOfX0sNDUxNDA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDUxMTgzKS5mLEI9TCg3NDQxMCksRT1MKDc0MDY5KSxFZT1MKDg1NDkpLFU9TCg5NTIwNCksUT1MKDI2NTQzKSxqPUwoMzg0OTcpLHJlPUwoNjgzMTUpLGFlPUwoODU2MjQpLFk9''@;'; put 'put ''TCg3MTgzMikuZmFzdEtleSxXPUwoNzI3KSxOPVcuc2V0LHRlPVcuZ2V0dGVyRm9yO1hlLmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKEssSixzZSxvZSl7dmFyIGNlPUsoZnVuY3Rpb24oU2UsSWUpe1UoU2UsZGUpLE4oU2Use3R5cGU6SixpbmRleDpCKG51bGwpLGZpcnN0OnZv''@;'; put 'put ''aWQgMCxsYXN0OnZvaWQgMCxzaXplOjB9KSxhZXx8KFNlLnNpemU9MCksbnVsbCE9SWUmJlEoSWUsU2Vbb2VdLHt0aGF0OlNlLEFTX0VOVFJJRVM6c2V9KX0pLGRlPWNlLnByb3RvdHlwZSx2ZT10ZShKKSxBZT1mdW5jdGlvbihTZSxJZSxUZSl7dmFyIE8seixNZT12ZShTZSksaGU9a2UoU2Us''@;'; put 'put ''SWUpO3JldHVybiBoZT9oZS52YWx1ZT1UZTooTWUubGFzdD1oZT17aW5kZXg6ej1ZKEllLCEwKSxrZXk6SWUsdmFsdWU6VGUscHJldmlvdXM6Tz1NZS5sYXN0LG5leHQ6dm9pZCAwLHJlbW92ZWQ6ITF9LE1lLmZpcnN0fHwoTWUuZmlyc3Q9aGUpLE8mJihPLm5leHQ9aGUpLGFlP01lLnNpemUr''@;'; put 'put ''KzpTZS5zaXplKyssIkYiIT09eiYmKE1lLmluZGV4W3pdPWhlKSksU2V9LGtlPWZ1bmN0aW9uKFNlLEllKXt2YXIgaGUsVGU9dmUoU2UpLE1lPVkoSWUpO2lmKCJGIiE9PU1lKXJldHVybiBUZS5pbmRleFtNZV07Zm9yKGhlPVRlLmZpcnN0O2hlO2hlPWhlLm5leHQpaWYoaGUua2V5PT1JZSly''@;'; put 'put ''ZXR1cm4gaGV9O3JldHVybiBFKGRlLHtjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgVGU9dmUodGhpcyksTWU9VGUuaW5kZXgsaGU9VGUuZmlyc3Q7aGU7KWhlLnJlbW92ZWQ9ITAsaGUucHJldmlvdXMmJihoZS5wcmV2aW91cz1oZS5wcmV2aW91cy5uZXh0PXZvaWQgMCksZGVsZXRlIE1lW2hl''@;'; put 'put ''LmluZGV4XSxoZT1oZS5uZXh0O1RlLmZpcnN0PVRlLmxhc3Q9dm9pZCAwLGFlP1RlLnNpemU9MDp0aGlzLnNpemU9MH0sZGVsZXRlOmZ1bmN0aW9uKFNlKXt2YXIgVGU9dmUodGhpcyksTWU9a2UodGhpcyxTZSk7aWYoTWUpe3ZhciBoZT1NZS5uZXh0LE89TWUucHJldmlvdXM7ZGVsZXRlIFRl''@;'; put 'put ''LmluZGV4W01lLmluZGV4XSxNZS5yZW1vdmVkPSEwLE8mJihPLm5leHQ9aGUpLGhlJiYoaGUucHJldmlvdXM9TyksVGUuZmlyc3Q9PU1lJiYoVGUuZmlyc3Q9aGUpLFRlLmxhc3Q9PU1lJiYoVGUubGFzdD1PKSxhZT9UZS5zaXplLS06dGhpcy5zaXplLS19cmV0dXJuISFNZX0sZm9yRWFjaDpm''@;'; put 'put ''dW5jdGlvbihJZSl7Zm9yKHZhciBoZSxUZT12ZSh0aGlzKSxNZT1FZShJZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCk7aGU9aGU/aGUubmV4dDpUZS5maXJzdDspZm9yKE1lKGhlLnZhbHVlLGhlLmtleSx0aGlzKTtoZSYmaGUucmVtb3ZlZDspaGU9aGUucHJldmlv''@;'; put 'put ''dXN9LGhhczpmdW5jdGlvbihJZSl7cmV0dXJuISFrZSh0aGlzLEllKX19KSxFKGRlLHNlP3tnZXQ6ZnVuY3Rpb24oSWUpe3ZhciBUZT1rZSh0aGlzLEllKTtyZXR1cm4gVGUmJlRlLnZhbHVlfSxzZXQ6ZnVuY3Rpb24oSWUsVGUpe3JldHVybiBBZSh0aGlzLDA9PT1JZT8wOkllLFRlKX19Onth''@;'; put 'put ''ZGQ6ZnVuY3Rpb24oSWUpe3JldHVybiBBZSh0aGlzLEllPTA9PT1JZT8wOkllLEllKX19KSxhZSYmbWUoZGUsInNpemUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdmUodGhpcykuc2l6ZX19KSxjZX0sc2V0U3Ryb25nOmZ1bmN0aW9uKEssSixzZSl7dmFyIG9lPUorIiBJdGVyYXRvciIsY2U9''@;'; put 'put ''dGUoSiksZGU9dGUob2UpO2ooSyxKLGZ1bmN0aW9uKHZlLEFlKXtOKHRoaXMse3R5cGU6b2UsdGFyZ2V0OnZlLHN0YXRlOmNlKHZlKSxraW5kOkFlLGxhc3Q6dm9pZCAwfSl9LGZ1bmN0aW9uKCl7Zm9yKHZhciB2ZT1kZSh0aGlzKSxBZT12ZS5raW5kLGtlPXZlLmxhc3Q7a2UmJmtlLnJlbW92''@;'; put 'put ''ZWQ7KWtlPWtlLnByZXZpb3VzO3JldHVybiB2ZS50YXJnZXQmJih2ZS5sYXN0PWtlPWtlP2tlLm5leHQ6dmUuc3RhdGUuZmlyc3QpPyJrZXlzIj09QWU/e3ZhbHVlOmtlLmtleSxkb25lOiExfToidmFsdWVzIj09QWU/e3ZhbHVlOmtlLnZhbHVlLGRvbmU6ITF9Ont2YWx1ZTpba2Uua2V5LGtl''@;'; put 'put ''LnZhbHVlXSxkb25lOiExfToodmUudGFyZ2V0PXZvaWQgMCx7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KX0sc2U/ImVudHJpZXMiOiJ2YWx1ZXMiLCFzZSwhMCkscmUoSil9fX0sNDI5Njk6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDY2MTMpLEI9TCg3NDA2OSksRT1MKDcxODMy''@;'; put 'put ''KS5nZXRXZWFrRGF0YSxFZT1MKDU4NjQ3KSxVPUwoNzE0OTYpLFE9TCg5NTIwNCksaj1MKDI2NTQzKSxyZT1MKDk1NjY5KSxhZT1MKDQ4ODExKSxZPUwoNzI3KSxXPVkuc2V0LE49WS5nZXR0ZXJGb3IsdGU9cmUuZmluZCxLPXJlLmZpbmRJbmRleCxKPW1lKFtdLnNwbGljZSksc2U9MCxvZT1m''@;'; put 'put ''dW5jdGlvbih2ZSl7cmV0dXJuIHZlLmZyb3plbnx8KHZlLmZyb3plbj1uZXcgY2UpfSxjZT1mdW5jdGlvbigpe3RoaXMuZW50cmllcz1bXX0sZGU9ZnVuY3Rpb24odmUsQWUpe3JldHVybiB0ZSh2ZS5lbnRyaWVzLGZ1bmN0aW9uKGtlKXtyZXR1cm4ga2VbMF09PT1BZX0pfTtjZS5wcm90b3R5''@;'; put 'put ''cGU9e2dldDpmdW5jdGlvbih2ZSl7dmFyIEFlPWRlKHRoaXMsdmUpO2lmKEFlKXJldHVybiBBZVsxXX0saGFzOmZ1bmN0aW9uKHZlKXtyZXR1cm4hIWRlKHRoaXMsdmUpfSxzZXQ6ZnVuY3Rpb24odmUsQWUpe3ZhciBrZT1kZSh0aGlzLHZlKTtrZT9rZVsxXT1BZTp0aGlzLmVudHJpZXMucHVz''@;'; put 'put ''aChbdmUsQWVdKX0sZGVsZXRlOmZ1bmN0aW9uKHZlKXt2YXIgQWU9Syh0aGlzLmVudHJpZXMsZnVuY3Rpb24oa2Upe3JldHVybiBrZVswXT09PXZlfSk7cmV0dXJufkFlJiZKKHRoaXMuZW50cmllcyxBZSwxKSwhIX5BZX19LFhlLmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKHZl''@;'; put 'put ''LEFlLGtlLFNlKXt2YXIgSWU9dmUoZnVuY3Rpb24oTyx6KXtRKE8sVGUpLFcoTyx7dHlwZTpBZSxpZDpzZSsrLGZyb3plbjp2b2lkIDB9KSxudWxsIT16JiZqKHosT1tTZV0se3RoYXQ6TyxBU19FTlRSSUVTOmtlfSl9KSxUZT1JZS5wcm90b3R5cGUsTWU9TihBZSksaGU9ZnVuY3Rpb24oTyx6''@;'; put 'put ''LGVlKXt2YXIgbmU9TWUoTykseD1FKEVlKHopLCEwKTtyZXR1cm4hMD09PXg/b2UobmUpLnNldCh6LGVlKTp4W25lLmlkXT1lZSxPfTtyZXR1cm4gQihUZSx7ZGVsZXRlOmZ1bmN0aW9uKE8pe3ZhciB6PU1lKHRoaXMpO2lmKCFVKE8pKXJldHVybiExO3ZhciBlZT1FKE8pO3JldHVybiEwPT09''@;'; put 'put ''ZWU/b2UoeikuZGVsZXRlKE8pOmVlJiZhZShlZSx6LmlkKSYmZGVsZXRlIGVlW3ouaWRdfSxoYXM6ZnVuY3Rpb24oeil7dmFyIGVlPU1lKHRoaXMpO2lmKCFVKHopKXJldHVybiExO3ZhciBuZT1FKHopO3JldHVybiEwPT09bmU/b2UoZWUpLmhhcyh6KTpuZSYmYWUobmUsZWUuaWQpfX0pLEIo''@;'; put 'put ''VGUsa2U/e2dldDpmdW5jdGlvbih6KXt2YXIgZWU9TWUodGhpcyk7aWYoVSh6KSl7dmFyIG5lPUUoeik7cmV0dXJuITA9PT1uZT9vZShlZSkuZ2V0KHopOm5lP25lW2VlLmlkXTp2b2lkIDB9fSxzZXQ6ZnVuY3Rpb24oeixlZSl7cmV0dXJuIGhlKHRoaXMseixlZSl9fTp7YWRkOmZ1bmN0aW9u''@;'; put 'put ''KHope3JldHVybiBoZSh0aGlzLHosITApfX0pLEllfX19LDQ2ODU3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg4NTY0OCksQj1MKDcwNzA1KSxFPUwoNjYxMyksRWU9TCg2NzUwNyksVT1MKDI1NjY2KSxRPUwoNzE4MzIpLGo9TCgyNjU0MykscmU9TCg5NTIwNCksYWU9TCgx''@;'; put 'put ''MjAxNCksWT1MKDcxNDk2KSxXPUwoMjM1MjMpLE49TCgyNzc5MiksdGU9TCg1NTk2OCksSz1MKDUxODQ5KTtYZS5leHBvcnRzPWZ1bmN0aW9uKEosc2Usb2Upe3ZhciBjZT0tMSE9PUouaW5kZXhPZigiTWFwIiksZGU9LTEhPT1KLmluZGV4T2YoIldlYWsiKSx2ZT1jZT8ic2V0IjoiYWRkIixB''@;'; put 'put ''ZT1CW0pdLGtlPUFlJiZBZS5wcm90b3R5cGUsU2U9QWUsSWU9e30sVGU9ZnVuY3Rpb24oeCl7dmFyIFA9RShrZVt4XSk7VShrZSx4LCJhZGQiPT14P2Z1bmN0aW9uKFQpe3JldHVybiBQKHRoaXMsMD09PVQ/MDpUKSx0aGlzfToiZGVsZXRlIj09eD9mdW5jdGlvbihWKXtyZXR1cm4hKGRlJiYh''@;'; put 'put ''WShWKSkmJlAodGhpcywwPT09Vj8wOlYpfToiZ2V0Ij09eD9mdW5jdGlvbihUKXtyZXR1cm4gZGUmJiFZKFQpP3ZvaWQgMDpQKHRoaXMsMD09PVQ/MDpUKX06ImhhcyI9PXg/ZnVuY3Rpb24oVCl7cmV0dXJuIShkZSYmIVkoVCkpJiZQKHRoaXMsMD09PVQ/MDpUKX06ZnVuY3Rpb24oVCxTKXty''@;'; put 'put ''ZXR1cm4gUCh0aGlzLDA9PT1UPzA6VCxTKSx0aGlzfSl9O2lmKEVlKEosIWFlKEFlKXx8IShkZXx8a2UuZm9yRWFjaCYmIVcoZnVuY3Rpb24oKXsobmV3IEFlKS5lbnRyaWVzKCkubmV4dCgpfSkpKSlTZT1vZS5nZXRDb25zdHJ1Y3RvcihzZSxKLGNlLHZlKSxRLmVuYWJsZSgpO2Vsc2UgaWYo''@;'; put 'put ''RWUoSiwhMCkpe3ZhciBoZT1uZXcgU2UsTz1oZVt2ZV0oZGU/e306LTAsMSkhPWhlLHo9VyhmdW5jdGlvbigpe2hlLmhhcygxKX0pLGVlPU4oZnVuY3Rpb24oeCl7bmV3IEFlKHgpfSksbmU9IWRlJiZXKGZ1bmN0aW9uKCl7Zm9yKHZhciB4PW5ldyBBZSxQPTU7UC0tOyl4W3ZlXShQLFApO3Jl''@;'; put 'put ''dHVybiF4LmhhcygtMCl9KTtlZXx8KChTZT1zZShmdW5jdGlvbih4LFApe3JlKHgsa2UpO3ZhciBWPUsobmV3IEFlLHgsU2UpO3JldHVybiBudWxsIT1QJiZqKFAsVlt2ZV0se3RoYXQ6VixBU19FTlRSSUVTOmNlfSksVn0pKS5wcm90b3R5cGU9a2Usa2UuY29uc3RydWN0b3I9U2UpLCh6fHxu''@;'; put 'put ''ZSkmJihUZSgiZGVsZXRlIiksVGUoImhhcyIpLGNlJiZUZSgiZ2V0IikpLChuZXx8TykmJlRlKHZlKSxkZSYma2UuY2xlYXImJmRlbGV0ZSBrZS5jbGVhcn1yZXR1cm4gSWVbSl09U2UsbWUoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxmb3JjZWQ6U2UhPUFlfSxJZSksdGUoU2UsSiksZGV8''@;'; put 'put ''fG9lLnNldFN0cm9uZyhTZSxKLGNlKSxTZX19LDc3NTQ4OihYZSxKZSxMKT0+e3ZhciBtZT1MKDQ4ODExKSxCPUwoMjExOTkpLEU9TCg0Nzk4NyksRWU9TCg1MTE4Myk7WGUuZXhwb3J0cz1mdW5jdGlvbihVLFEsail7Zm9yKHZhciByZT1CKFEpLGFlPUVlLmYsWT1FLmYsVz0wO1c8cmUubGVu''@;'; put 'put ''Z3RoO1crKyl7dmFyIE49cmVbV107IW1lKFUsTikmJighanx8IW1lKGosTikpJiZhZShVLE4sWShRLE4pKX19fSw3NjU3MTooWGUsSmUsTCk9Pnt2YXIgQj1MKDI1NDYpKCJtYXRjaCIpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oRSl7dmFyIEVlPS8uLzt0cnl7Ii8uLyJbRV0oRWUpfWNhdGNoKFUp''@;'; put 'put ''e3RyeXtyZXR1cm4gRWVbQl09ITEsIi8uLyJbRV0oRWUpfWNhdGNoKFEpe319cmV0dXJuITF9fSw0NjA4NjooWGUsSmUsTCk9Pnt2YXIgbWU9TCgyMzUyMyk7WGUuZXhwb3J0cz0hbWUoZnVuY3Rpb24oKXtmdW5jdGlvbiBCKCl7fXJldHVybiBCLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1udWxs''@;'; put 'put ''LE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgQikhPT1CLnByb3RvdHlwZX0pfSw5NTExMDooWGUsSmUsTCk9Pnt2YXIgbWU9TCg2NjEzKSxCPUwoMjQ1NzIpLEU9TCg5MjEpLEVlPS8iL2csVT1tZSgiIi5yZXBsYWNlKTtYZS5leHBvcnRzPWZ1bmN0aW9uKFEsaixyZSxhZSl7dmFyIFk9RShC''@;'; put 'put ''KFEpKSxXPSI8IitqO3JldHVybiIiIT09cmUmJihXKz0iICIrcmUrJz0iJytVKEUoYWUpLEVlLCImcXVvdDsiKSsnIicpLFcrIj4iK1krIjwvIitqKyI+In19LDk3ODk1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCgxODU0NikuSXRlcmF0b3JQcm90b3R5cGUsQj1MKDc0NDEw''@;'; put 'put ''KSxFPUwoNzM5MjApLEVlPUwoNTU5NjgpLFU9TCg5NTI1NyksUT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtYZS5leHBvcnRzPWZ1bmN0aW9uKGoscmUsYWUsWSl7dmFyIFc9cmUrIiBJdGVyYXRvciI7cmV0dXJuIGoucHJvdG90eXBlPUIobWUse25leHQ6RSgrIVksYWUpfSksRWUoaixXLCEx''@;'; put 'put ''LCEwKSxVW1ddPVEsan19LDE2MDE3OihYZSxKZSxMKT0+e3ZhciBtZT1MKDg1NjI0KSxCPUwoNTExODMpLEU9TCg3MzkyMCk7WGUuZXhwb3J0cz1tZT9mdW5jdGlvbihFZSxVLFEpe3JldHVybiBCLmYoRWUsVSxFKDEsUSkpfTpmdW5jdGlvbihFZSxVLFEpe3JldHVybiBFZVtVXT1RLEVlfX0s''@;'; put 'put ''NzM5MjA6WGU9PntYZS5leHBvcnRzPWZ1bmN0aW9uKEplLEwpe3JldHVybntlbnVtZXJhYmxlOiEoMSZKZSksY29uZmlndXJhYmxlOiEoMiZKZSksd3JpdGFibGU6ISg0JkplKSx2YWx1ZTpMfX19LDk1MDA0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg4NDA5NCksQj1MKDUx''@;'; put 'put ''MTgzKSxFPUwoNzM5MjApO1hlLmV4cG9ydHM9ZnVuY3Rpb24oRWUsVSxRKXt2YXIgaj1tZShVKTtqIGluIEVlP0IuZihFZSxqLEUoMCxRKSk6RWVbal09UX19LDI1NjY2OihYZSxKZSxMKT0+e3ZhciBtZT1MKDEyMDE0KSxCPUwoNTExODMpLEU9TCgzNDQ2OCksRWU9TCg3MzQ3MCk7WGUuZXhw''@;'; put 'put ''b3J0cz1mdW5jdGlvbihVLFEsaixyZSl7cmV8fChyZT17fSk7dmFyIGFlPXJlLmVudW1lcmFibGUsWT12b2lkIDAhPT1yZS5uYW1lP3JlLm5hbWU6UTtpZihtZShqKSYmRShqLFkscmUpLHJlLmdsb2JhbClhZT9VW1FdPWo6RWUoUSxqKTtlbHNle3RyeXtyZS51bnNhZmU/VVtRXSYmKGFlPSEw''@;'; put 'put ''KTpkZWxldGUgVVtRXX1jYXRjaChXKXt9YWU/VVtRXT1qOkIuZihVLFEse3ZhbHVlOmosZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6IXJlLm5vbkNvbmZpZ3VyYWJsZSx3cml0YWJsZTohcmUubm9uV3JpdGFibGV9KX1yZXR1cm4gVX19LDc0MDY5OihYZSxKZSxMKT0+e3ZhciBtZT1MKDI1''@;'; put 'put ''NjY2KTtYZS5leHBvcnRzPWZ1bmN0aW9uKEIsRSxFZSl7Zm9yKHZhciBVIGluIEUpbWUoQixVLEVbVV0sRWUpO3JldHVybiBCfX0sNzM0NzA6KFhlLEplLEwpPT57dmFyIG1lPUwoNzA3MDUpLEI9T2JqZWN0LmRlZmluZVByb3BlcnR5O1hlLmV4cG9ydHM9ZnVuY3Rpb24oRSxFZSl7dHJ5e0Io''@;'; put 'put ''bWUsRSx7dmFsdWU6RWUsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSl9Y2F0Y2goVSl7bWVbRV09RWV9cmV0dXJuIEVlfX0sMzg0OTc6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDg1NjQ4KSxCPUwoMzU2MiksRT1MKDEwMDE3KSxFZT1MKDEzODY5KSxVPUwoMTIwMTQp''@;'; put 'put ''LFE9TCg5Nzg5NSksaj1MKDgyNzMzKSxyZT1MKDE5NTg3KSxhZT1MKDU1OTY4KSxZPUwoMTYwMTcpLFc9TCgyNTY2NiksTj1MKDI1NDYpLHRlPUwoOTUyNTcpLEs9TCgxODU0NiksSj1FZS5QUk9QRVIsc2U9RWUuQ09ORklHVVJBQkxFLG9lPUsuSXRlcmF0b3JQcm90b3R5cGUsY2U9Sy5CVUdH''@;'; put 'put ''WV9TQUZBUklfSVRFUkFUT1JTLGRlPU4oIml0ZXJhdG9yIiksQWU9InZhbHVlcyIsa2U9ImVudHJpZXMiLFNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O1hlLmV4cG9ydHM9ZnVuY3Rpb24oSWUsVGUsTWUsaGUsTyx6LGVlKXtRKE1lLFRlLGhlKTt2YXIgeWUsQ2UsRGUsbmU9ZnVuY3Rpb24o''@;'; put 'put ''UGUpe2lmKFBlPT09TyYmUylyZXR1cm4gUztpZighY2UmJlBlIGluIFYpcmV0dXJuIFZbUGVdO3N3aXRjaChQZSl7Y2FzZSJrZXlzIjpjYXNlIEFlOmNhc2Uga2U6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBNZSh0aGlzLFBlKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBN''@;'; put 'put ''ZSh0aGlzKX19LHg9VGUrIiBJdGVyYXRvciIsUD0hMSxWPUllLnByb3RvdHlwZSxUPVZbZGVdfHxWWyJAQGl0ZXJhdG9yIl18fE8mJlZbT10sUz0hY2UmJlR8fG5lKE8pLEY9IkFycmF5Ij09VGUmJlYuZW50cmllc3x8VDtpZihGJiYoeWU9aihGLmNhbGwobmV3IEllKSkpIT09T2JqZWN0LnBy''@;'; put 'put ''b3RvdHlwZSYmeWUubmV4dCYmKCFFJiZqKHllKSE9PW9lJiYocmU/cmUoeWUsb2UpOlUoeWVbZGVdKXx8Vyh5ZSxkZSxTZSkpLGFlKHllLHgsITAsITApLEUmJih0ZVt4XT1TZSkpLEomJk89PUFlJiZUJiZULm5hbWUhPT1BZSYmKCFFJiZzZT9ZKFYsIm5hbWUiLEFlKTooUD0hMCxTPWZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIEIoVCx0aGlzKX0pKSxPKWlmKENlPXt2YWx1ZXM6bmUoQWUpLGtleXM6ej9TOm5lKCJrZXlzIiksZW50cmllczpuZShrZSl9LGVlKWZvcihEZSBpbiBDZSkoY2V8fFB8fCEoRGUgaW4gVikpJiZXKFYsRGUsQ2VbRGVdKTtlbHNlIG1lKHt0YXJnZXQ6VGUscHJvdG86ITAs''@;'; put 'put ''Zm9yY2VkOmNlfHxQfSxDZSk7cmV0dXJuKCFFfHxlZSkmJlZbZGVdIT09UyYmVyhWLGRlLFMse25hbWU6T30pLHRlW1RlXT1TLENlfX0sMzkyMzU6KFhlLEplLEwpPT57dmFyIG1lPUwoOTI3MzMpLEI9TCg0ODgxMSksRT1MKDI4MTEpLEVlPUwoNTExODMpLmY7WGUuZXhwb3J0cz1mdW5jdGlv''@;'; put 'put ''bihVKXt2YXIgUT1tZS5TeW1ib2x8fChtZS5TeW1ib2w9e30pO0IoUSxVKXx8RWUoUSxVLHt2YWx1ZTpFLmYoVSl9KX19LDQ2Mjg6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDk0Njc2KSxCPVR5cGVFcnJvcjtYZS5leHBvcnRzPWZ1bmN0aW9uKEUsRWUpe2lmKCFkZWxldGUg''@;'; put 'put ''RVtFZV0pdGhyb3cgQigiQ2Fubm90IGRlbGV0ZSBwcm9wZXJ0eSAiK21lKEVlKSsiIG9mICIrbWUoRSkpfX0sODU2MjQ6KFhlLEplLEwpPT57dmFyIG1lPUwoMjM1MjMpO1hlLmV4cG9ydHM9IW1lKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwxLHtnZXQ6''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gN319KVsxXX0pfSw0NjMxMzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg3MDcwNSksQj1MKDcxNDk2KSxFPW1lLmRvY3VtZW50LEVlPUIoRSkmJkIoRS5jcmVhdGVFbGVtZW50KTtYZS5leHBvcnRzPWZ1bmN0aW9uKFUpe3JldHVybiBFZT9FLmNyZWF0ZUVsZW1lbnQo''@;'; put 'put ''VSk6e319fSwyMzEyNDpYZT0+e3ZhciBKZT1UeXBlRXJyb3I7WGUuZXhwb3J0cz1mdW5jdGlvbihtZSl7aWYobWU+OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyBKZSgiTWF4aW11bSBhbGxvd2VkIGluZGV4IGV4Y2VlZGVkIik7cmV0dXJuIG1lfX0sMTkyMzE6WGU9PntYZS5leHBvcnRzPXtDU1NS''@;'; put 'put ''dWxlTGlzdDowLENTU1N0eWxlRGVjbGFyYXRpb246MCxDU1NWYWx1ZUxpc3Q6MCxDbGllbnRSZWN0TGlzdDowLERPTVJlY3RMaXN0OjAsRE9NU3RyaW5nTGlzdDowLERPTVRva2VuTGlzdDoxLERhdGFUcmFuc2Zlckl0ZW1MaXN0OjAsRmlsZUxpc3Q6MCxIVE1MQWxsQ29sbGVjdGlvbjowLEhU''@;'; put 'put ''TUxDb2xsZWN0aW9uOjAsSFRNTEZvcm1FbGVtZW50OjAsSFRNTFNlbGVjdEVsZW1lbnQ6MCxNZWRpYUxpc3Q6MCxNaW1lVHlwZUFycmF5OjAsTmFtZWROb2RlTWFwOjAsTm9kZUxpc3Q6MSxQYWludFJlcXVlc3RMaXN0OjAsUGx1Z2luOjAsUGx1Z2luQXJyYXk6MCxTVkdMZW5ndGhMaXN0OjAs''@;'; put 'put ''U1ZHTnVtYmVyTGlzdDowLFNWR1BhdGhTZWdMaXN0OjAsU1ZHUG9pbnRMaXN0OjAsU1ZHU3RyaW5nTGlzdDowLFNWR1RyYW5zZm9ybUxpc3Q6MCxTb3VyY2VCdWZmZXJMaXN0OjAsU3R5bGVTaGVldExpc3Q6MCxUZXh0VHJhY2tDdWVMaXN0OjAsVGV4dFRyYWNrTGlzdDowLFRvdWNoTGlzdDow''@;'; put 'put ''fX0sMjk5MTA6KFhlLEplLEwpPT57dmFyIEI9TCg0NjMxMykoInNwYW4iKS5jbGFzc0xpc3QsRT1CJiZCLmNvbnN0cnVjdG9yJiZCLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtYZS5leHBvcnRzPUU9PT1PYmplY3QucHJvdG90eXBlP3ZvaWQgMDpFfSw3NTcwNjooWGUsSmUsTCk9Pnt2YXIgQj1M''@;'; put 'put ''KDc3ODM5KS5tYXRjaCgvZmlyZWZveFwvKFxkKykvaSk7WGUuZXhwb3J0cz0hIUImJitCWzFdfSw5ODg2OihYZSxKZSxMKT0+e3ZhciBtZT1MKDc3ODM5KTtYZS5leHBvcnRzPS9NU0lFfFRyaWRlbnQvLnRlc3QobWUpfSw3ODUyMDooWGUsSmUsTCk9Pnt2YXIgbWU9TCg3NzgzOSk7WGUuZXhw''@;'; put 'put ''b3J0cz0vKD86aXBhZHxpcGhvbmV8aXBvZCkuKmFwcGxld2Via2l0L2kudGVzdChtZSl9LDg3MjQ0OihYZSxKZSxMKT0+e3ZhciBtZT1MKDk0NzIzKSxCPUwoNzA3MDUpO1hlLmV4cG9ydHM9InByb2Nlc3MiPT1tZShCLnByb2Nlc3MpfSw3NzgzOTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0NjY5''@;'; put 'put ''Myk7WGUuZXhwb3J0cz1tZSgibmF2aWdhdG9yIiwidXNlckFnZW50Iil8fCIifSwyOTM4NTooWGUsSmUsTCk9Pnt2YXIgaixyZSxtZT1MKDcwNzA1KSxCPUwoNzc4MzkpLEU9bWUucHJvY2VzcyxFZT1tZS5EZW5vLFU9RSYmRS52ZXJzaW9uc3x8RWUmJkVlLnZlcnNpb24sUT1VJiZVLnY4O1Em''@;'; put 'put ''JihyZT0oaj1RLnNwbGl0KCIuIikpWzBdPjAmJmpbMF08ND8xOisoalswXStqWzFdKSksIXJlJiZCJiYoIShqPUIubWF0Y2goL0VkZ2VcLyhcZCspLykpfHxqWzFdPj03NCkmJihqPUIubWF0Y2goL0Nocm9tZVwvKFxkKykvKSkmJihyZT0ralsxXSksWGUuZXhwb3J0cz1yZX0sOTYzNDooWGUs''@;'; put 'put ''SmUsTCk9Pnt2YXIgQj1MKDc3ODM5KS5tYXRjaCgvQXBwbGVXZWJLaXRcLyhcZCspXC4vKTtYZS5leHBvcnRzPSEhQiYmK0JbMV19LDQ3ODMzOlhlPT57WGUuZXhwb3J0cz1bImNvbnN0cnVjdG9yIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFi''@;'; put 'put ''bGUiLCJ0b0xvY2FsZVN0cmluZyIsInRvU3RyaW5nIiwidmFsdWVPZiJdfSw4NTY0ODooWGUsSmUsTCk9Pnt2YXIgbWU9TCg3MDcwNSksQj1MKDQ3OTg3KS5mLEU9TCgxNjAxNyksRWU9TCgyNTY2NiksVT1MKDczNDcwKSxRPUwoNzc1NDgpLGo9TCg2NzUwNyk7WGUuZXhwb3J0cz1mdW5jdGlv''@;'; put 'put ''bihyZSxhZSl7dmFyIEssSixzZSxvZSxjZSxZPXJlLnRhcmdldCxXPXJlLmdsb2JhbCxOPXJlLnN0YXQ7aWYoSz1XP21lOk4/bWVbWV18fFUoWSx7fSk6KG1lW1ldfHx7fSkucHJvdG90eXBlKWZvcihKIGluIGFlKXtpZihvZT1hZVtKXSxzZT1yZS5kb250Q2FsbEdldFNldD8oY2U9QihLLEop''@;'; put 'put ''KSYmY2UudmFsdWU6S1tKXSwhaihXP0o6WSsoTj8iLiI6IiMiKStKLHJlLmZvcmNlZCkmJnZvaWQgMCE9PXNlKXtpZih0eXBlb2Ygb2U9PXR5cGVvZiBzZSljb250aW51ZTtRKG9lLHNlKX0ocmUuc2hhbXx8c2UmJnNlLnNoYW0pJiZFKG9lLCJzaGFtIiwhMCksRWUoSyxKLG9lLHJlKX19fSwy''@;'; put 'put ''MzUyMzpYZT0+e1hlLmV4cG9ydHM9ZnVuY3Rpb24oSmUpe3RyeXtyZXR1cm4hIUplKCl9Y2F0Y2goTCl7cmV0dXJuITB9fX0sMjI4MTQ6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0woNDI3NjApO3ZhciBtZT1MKDY2MTMpLEI9TCgyNTY2NiksRT1MKDIyMjM0KSxFZT1MKDIzNTIzKSxVPUwo''@;'; put 'put ''MjU0NiksUT1MKDE2MDE3KSxqPVUoInNwZWNpZXMiKSxyZT1SZWdFeHAucHJvdG90eXBlO1hlLmV4cG9ydHM9ZnVuY3Rpb24oYWUsWSxXLE4pe3ZhciB0ZT1VKGFlKSxLPSFFZShmdW5jdGlvbigpe3ZhciBjZT17fTtyZXR1cm4gY2VbdGVdPWZ1bmN0aW9uKCl7cmV0dXJuIDd9LDchPSIiW2Fl''@;'; put 'put ''XShjZSl9KSxKPUsmJiFFZShmdW5jdGlvbigpe3ZhciBjZT0hMSxkZT0vYS87cmV0dXJuInNwbGl0Ij09PWFlJiYoKGRlPXt9KS5jb25zdHJ1Y3Rvcj17fSxkZS5jb25zdHJ1Y3RvcltqXT1mdW5jdGlvbigpe3JldHVybiBkZX0sZGUuZmxhZ3M9IiIsZGVbdGVdPS8uL1t0ZV0pLGRlLmV4ZWM9''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gY2U9ITAsbnVsbH0sZGVbdGVdKCIiKSwhY2V9KTtpZighS3x8IUp8fFcpe3ZhciBzZT1tZSgvLi9bdGVdKSxvZT1ZKHRlLCIiW2FlXSxmdW5jdGlvbihjZSxkZSx2ZSxBZSxrZSl7dmFyIFNlPW1lKGNlKSxJZT1kZS5leGVjO3JldHVybiBJZT09PUV8fEllPT09''@;'; put 'put ''cmUuZXhlYz9LJiYha2U/e2RvbmU6ITAsdmFsdWU6c2UoZGUsdmUsQWUpfTp7ZG9uZTohMCx2YWx1ZTpTZSh2ZSxkZSxBZSl9Ontkb25lOiExfX0pO0IoU3RyaW5nLnByb3RvdHlwZSxhZSxvZVswXSksQihyZSx0ZSxvZVsxXSl9TiYmUShyZVt0ZV0sInNoYW0iLCEwKX19LDEyNTY2OihYZSxK''@;'; put 'put ''ZSxMKT0+e3ZhciBtZT1MKDIzNTIzKTtYZS5leHBvcnRzPSFtZShmdW5jdGlvbigpe3JldHVybiBPYmplY3QuaXNFeHRlbnNpYmxlKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpfSl9LDExMzA2OihYZSxKZSxMKT0+e3ZhciBtZT1MKDM2NTYxKSxCPUZ1bmN0aW9uLnByb3RvdHlwZSxF''@;'; put 'put ''PUIuYXBwbHksRWU9Qi5jYWxsO1hlLmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmFwcGx5fHwobWU/RWUuYmluZChFKTpmdW5jdGlvbigpe3JldHVybiBFZS5hcHBseShFLGFyZ3VtZW50cyl9KX0sODU0OTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg2NjEzKSxCPUwo''@;'; put 'put ''ODE0NTApLEU9TCgzNjU2MSksRWU9bWUobWUuYmluZCk7WGUuZXhwb3J0cz1mdW5jdGlvbihVLFEpe3JldHVybiBCKFUpLHZvaWQgMD09PVE/VTpFP0VlKFUsUSk6ZnVuY3Rpb24oKXtyZXR1cm4gVS5hcHBseShRLGFyZ3VtZW50cyl9fX0sMzY1NjE6KFhlLEplLEwpPT57dmFyIG1lPUwoMjM1''@;'; put 'put ''MjMpO1hlLmV4cG9ydHM9IW1lKGZ1bmN0aW9uKCl7dmFyIEI9ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgQnx8Qi5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIil9KX0sNjk4OTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoNjYxMyksQj1M''@;'; put 'put ''KDgxNDUwKSxFPUwoNzE0OTYpLEVlPUwoNDg4MTEpLFU9TCg0MDkzMCksUT1MKDM2NTYxKSxqPUZ1bmN0aW9uLHJlPW1lKFtdLmNvbmNhdCksYWU9bWUoW10uam9pbiksWT17fSxXPWZ1bmN0aW9uKE4sdGUsSyl7aWYoIUVlKFksdGUpKXtmb3IodmFyIEo9W10sc2U9MDtzZTx0ZTtzZSsrKUpb''@;'; put 'put ''c2VdPSJhWyIrc2UrIl0iO1lbdGVdPWooIkMsYSIsInJldHVybiBuZXcgQygiK2FlKEosIiwiKSsiKSIpfXJldHVybiBZW3RlXShOLEspfTtYZS5leHBvcnRzPVE/ai5iaW5kOmZ1bmN0aW9uKHRlKXt2YXIgSz1CKHRoaXMpLEo9Sy5wcm90b3R5cGUsc2U9VShhcmd1bWVudHMsMSksb2U9ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgZGU9cmUoc2UsVShhcmd1bWVudHMpKTtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG9lP1coSyxkZS5sZW5ndGgsZGUpOksuYXBwbHkodGUsZGUpfTtyZXR1cm4gRShKKSYmKG9lLnByb3RvdHlwZT1KKSxvZX19LDM1NjI6KFhlLEplLEwpPT57dmFyIG1lPUwoMzY1NjEpLEI9''@;'; put 'put ''RnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7WGUuZXhwb3J0cz1tZT9CLmJpbmQoQik6ZnVuY3Rpb24oKXtyZXR1cm4gQi5hcHBseShCLGFyZ3VtZW50cyl9fSwxMzg2OTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg4NTYyNCksQj1MKDQ4ODExKSxFPUZ1bmN0aW9uLnByb3RvdHlwZSxFZT1tZSYmT2Jq''@;'; put 'put ''ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixVPUIoRSwibmFtZSIpLFE9VSYmInNvbWV0aGluZyI9PT1mdW5jdGlvbigpe30ubmFtZSxqPVUmJighbWV8fG1lJiZFZShFLCJuYW1lIikuY29uZmlndXJhYmxlKTtYZS5leHBvcnRzPXtFWElTVFM6VSxQUk9QRVI6USxDT05GSUdVUkFCTEU6''@;'; put 'put ''an19LDY2MTM6KFhlLEplLEwpPT57dmFyIG1lPUwoMzY1NjEpLEI9RnVuY3Rpb24ucHJvdG90eXBlLEVlPUIuY2FsbCxVPW1lJiZCLmJpbmQuYmluZChFZSxFZSk7WGUuZXhwb3J0cz1tZT9mdW5jdGlvbihRKXtyZXR1cm4gUSYmVShRKX06ZnVuY3Rpb24oUSl7cmV0dXJuIFEmJmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIEVlLmFwcGx5KFEsYXJndW1lbnRzKX19fSw0NjY5MzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg3MDcwNSksQj1MKDEyMDE0KSxFPWZ1bmN0aW9uKEVlKXtyZXR1cm4gQihFZSk/RWU6dm9pZCAwfTtYZS5leHBvcnRzPWZ1bmN0aW9uKEVlLFUpe3JldHVybiBhcmd1bWVudHMubGVu''@;'; put 'put ''Z3RoPDI/RShtZVtFZV0pOm1lW0VlXSYmbWVbRWVdW1VdfX0sNjYyODg6KFhlLEplLEwpPT57dmFyIG1lPUwoNzk1MjApLEI9TCgyMDk0OCksRT1MKDk1MjU3KSxVPUwoMjU0NikoIml0ZXJhdG9yIik7WGUuZXhwb3J0cz1mdW5jdGlvbihRKXtpZihudWxsIT1RKXJldHVybiBCKFEsVSl8fEIo''@;'; put 'put ''USwiQEBpdGVyYXRvciIpfHxFW21lKFEpXX19LDEyOTg5OihYZSxKZSxMKT0+e3ZhciBtZT1MKDM1NjIpLEI9TCg4MTQ1MCksRT1MKDU4NjQ3KSxFZT1MKDk0Njc2KSxVPUwoNjYyODgpLFE9VHlwZUVycm9yO1hlLmV4cG9ydHM9ZnVuY3Rpb24oaixyZSl7dmFyIGFlPWFyZ3VtZW50cy5sZW5n''@;'; put 'put ''dGg8Mj9VKGopOnJlO2lmKEIoYWUpKXJldHVybiBFKG1lKGFlLGopKTt0aHJvdyBRKEVlKGopKyIgaXMgbm90IGl0ZXJhYmxlIil9fSwyMDk0ODooWGUsSmUsTCk9Pnt2YXIgbWU9TCg4MTQ1MCk7WGUuZXhwb3J0cz1mdW5jdGlvbihCLEUpe3ZhciBFZT1CW0VdO3JldHVybiBudWxsPT1FZT92''@;'; put 'put ''b2lkIDA6bWUoRWUpfX0sNjMzODI6KFhlLEplLEwpPT57dmFyIG1lPUwoNjYxMyksQj1MKDY4MDcxKSxFPU1hdGguZmxvb3IsRWU9bWUoIiIuY2hhckF0KSxVPW1lKCIiLnJlcGxhY2UpLFE9bWUoIiIuc2xpY2UpLGo9L1wkKFskJidgXXxcZHsxLDJ9fDxbXj5dKj4pL2cscmU9L1wkKFskJidg''@;'; put 'put ''XXxcZHsxLDJ9KS9nO1hlLmV4cG9ydHM9ZnVuY3Rpb24oYWUsWSxXLE4sdGUsSyl7dmFyIEo9VythZS5sZW5ndGgsc2U9Ti5sZW5ndGgsb2U9cmU7cmV0dXJuIHZvaWQgMCE9PXRlJiYodGU9Qih0ZSksb2U9aiksVShLLG9lLGZ1bmN0aW9uKGNlLGRlKXt2YXIgdmU7c3dpdGNoKEVlKGRlLDAp''@;'; put 'put ''KXtjYXNlIiQiOnJldHVybiIkIjtjYXNlIiYiOnJldHVybiBhZTtjYXNlImAiOnJldHVybiBRKFksMCxXKTtjYXNlIiciOnJldHVybiBRKFksSik7Y2FzZSI8Ijp2ZT10ZVtRKGRlLDEsLTEpXTticmVhaztkZWZhdWx0OnZhciBBZT0rZGU7aWYoMD09PUFlKXJldHVybiBjZTtpZihBZT5zZSl7''@;'; put 'put ''dmFyIGtlPUUoQWUvMTApO3JldHVybiAwPT09a2U/Y2U6a2U8PXNlP3ZvaWQgMD09PU5ba2UtMV0/RWUoZGUsMSk6TltrZS0xXStFZShkZSwxKTpjZX12ZT1OW0FlLTFdfXJldHVybiB2b2lkIDA9PT12ZT8iIjp2ZX0pfX0sNzA3MDU6WGU9Pnt2YXIgSmU9ZnVuY3Rpb24oTCl7cmV0dXJuIEwm''@;'; put 'put ''JkwuTWF0aD09TWF0aCYmTH07WGUuZXhwb3J0cz1KZSgib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMpfHxKZSgib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93KXx8SmUoIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmKXx8SmUoIm9iamVjdCI9PXR5cGVvZiBn''@;'; put 'put ''bG9iYWwmJmdsb2JhbCl8fGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCl8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl9LDQ4ODExOihYZSxKZSxMKT0+e3ZhciBtZT1MKDY2MTMpLEI9TCg2ODA3MSksRT1tZSh7fS5oYXNPd25Qcm9wZXJ0eSk7WGUuZXhwb3J0cz1PYmplY3QuaGFzT3dufHxm''@;'; put 'put ''dW5jdGlvbihVLFEpe3JldHVybiBFKEIoVSksUSl9fSwxOTkwOTpYZT0+e1hlLmV4cG9ydHM9e319LDU5NDA2OihYZSxKZSxMKT0+e3ZhciBtZT1MKDQ2NjkzKTtYZS5leHBvcnRzPW1lKCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIpfSw5NDY3NTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg4''@;'; put 'put ''NTYyNCksQj1MKDIzNTIzKSxFPUwoNDYzMTMpO1hlLmV4cG9ydHM9IW1lJiYhQihmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoRSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LDU2NjA3OihYZSxKZSxMKT0+e3ZhciBtZT1MKDY2''@;'; put 'put ''MTMpLEI9TCgyMzUyMyksRT1MKDk0NzIzKSxFZT1PYmplY3QsVT1tZSgiIi5zcGxpdCk7WGUuZXhwb3J0cz1CKGZ1bmN0aW9uKCl7cmV0dXJuIUVlKCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCl9KT9mdW5jdGlvbihRKXtyZXR1cm4iU3RyaW5nIj09RShRKT9VKFEsIiIpOkVlKFEpfTpF''@;'; put 'put ''ZX0sNTE4NDk6KFhlLEplLEwpPT57dmFyIG1lPUwoMTIwMTQpLEI9TCg3MTQ5NiksRT1MKDE5NTg3KTtYZS5leHBvcnRzPWZ1bmN0aW9uKEVlLFUsUSl7dmFyIGoscmU7cmV0dXJuIEUmJm1lKGo9VS5jb25zdHJ1Y3RvcikmJmohPT1RJiZCKHJlPWoucHJvdG90eXBlKSYmcmUhPT1RLnByb3Rv''@;'; put 'put ''dHlwZSYmRShFZSxyZSksRWV9fSw1NzM3MTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg2NjEzKSxCPUwoMTIwMTQpLEU9TCg4MTA2OSksRWU9bWUoRnVuY3Rpb24udG9TdHJpbmcpO0IoRS5pbnNwZWN0U291cmNlKXx8KEUuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbihVKXtyZXR1cm4gRWUoVSl9KSxY''@;'; put 'put ''ZS5leHBvcnRzPUUuaW5zcGVjdFNvdXJjZX0sNzE4MzI6KFhlLEplLEwpPT57dmFyIG1lPUwoODU2NDgpLEI9TCg2NjEzKSxFPUwoMTk5MDkpLEVlPUwoNzE0OTYpLFU9TCg0ODgxMSksUT1MKDUxMTgzKS5mLGo9TCg3NTQzMSkscmU9TCgzNTgwOCksYWU9TCg1NTIxOCksWT1MKDUyODEwKSxX''@;'; put 'put ''PUwoMTI1NjYpLE49ITEsdGU9WSgibWV0YSIpLEs9MCxKPWZ1bmN0aW9uKEFlKXtRKEFlLHRlLHt2YWx1ZTp7b2JqZWN0SUQ6Ik8iK0srKyx3ZWFrRGF0YTp7fX19KX0sdmU9WGUuZXhwb3J0cz17ZW5hYmxlOmZ1bmN0aW9uKCl7dmUuZW5hYmxlPWZ1bmN0aW9uKCl7fSxOPSEwO3ZhciBBZT1q''@;'; put 'put ''LmYsa2U9QihbXS5zcGxpY2UpLFNlPXt9O1NlW3RlXT0xLEFlKFNlKS5sZW5ndGgmJihqLmY9ZnVuY3Rpb24oSWUpe2Zvcih2YXIgVGU9QWUoSWUpLE1lPTAsaGU9VGUubGVuZ3RoO01lPGhlO01lKyspaWYoVGVbTWVdPT09dGUpe2tlKFRlLE1lLDEpO2JyZWFrfXJldHVybiBUZX0sbWUoe3Rh''@;'; put 'put ''cmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDohMH0se2dldE93blByb3BlcnR5TmFtZXM6cmUuZn0pKX0sZmFzdEtleTpmdW5jdGlvbihBZSxrZSl7aWYoIUVlKEFlKSlyZXR1cm4ic3ltYm9sIj09dHlwZW9mIEFlP0FlOigic3RyaW5nIj09dHlwZW9mIEFlPyJTIjoiUCIpK0FlO2lmKCFV''@;'; put 'put ''KEFlLHRlKSl7aWYoIWFlKEFlKSlyZXR1cm4iRiI7aWYoIWtlKXJldHVybiJFIjtKKEFlKX1yZXR1cm4gQWVbdGVdLm9iamVjdElEfSxnZXRXZWFrRGF0YTpmdW5jdGlvbihBZSxrZSl7aWYoIVUoQWUsdGUpKXtpZighYWUoQWUpKXJldHVybiEwO2lmKCFrZSlyZXR1cm4hMTtKKEFlKX1yZXR1''@;'; put 'put ''cm4gQWVbdGVdLndlYWtEYXRhfSxvbkZyZWV6ZTpmdW5jdGlvbihBZSl7cmV0dXJuIFcmJk4mJmFlKEFlKSYmIVUoQWUsdGUpJiZKKEFlKSxBZX19O0VbdGVdPSEwfSw3Mjc6KFhlLEplLEwpPT57dmFyIHRlLEssSixtZT1MKDgwODA2KSxCPUwoNzA3MDUpLEU9TCg2NjEzKSxFZT1MKDcxNDk2''@;'; put 'put ''KSxVPUwoMTYwMTcpLFE9TCg0ODgxMSksaj1MKDgxMDY5KSxyZT1MKDI3MjMwKSxhZT1MKDE5OTA5KSxZPSJPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCIsVz1CLlR5cGVFcnJvcjtpZihtZXx8ai5zdGF0ZSl7dmFyIGNlPWouc3RhdGV8fChqLnN0YXRlPW5ldygwLEIuV2Vha01hcCkpLGRl''@;'; put 'put ''PUUoY2UuZ2V0KSx2ZT1FKGNlLmhhcyksQWU9RShjZS5zZXQpO3RlPWZ1bmN0aW9uKFNlLEllKXtpZih2ZShjZSxTZSkpdGhyb3cgbmV3IFcoWSk7cmV0dXJuIEllLmZhY2FkZT1TZSxBZShjZSxTZSxJZSksSWV9LEs9ZnVuY3Rpb24oU2Upe3JldHVybiBkZShjZSxTZSl8fHt9fSxKPWZ1bmN0''@;'; put 'put ''aW9uKFNlKXtyZXR1cm4gdmUoY2UsU2UpfX1lbHNle3ZhciBrZT1yZSgic3RhdGUiKTthZVtrZV09ITAsdGU9ZnVuY3Rpb24oU2UsSWUpe2lmKFEoU2Usa2UpKXRocm93IG5ldyBXKFkpO3JldHVybiBJZS5mYWNhZGU9U2UsVShTZSxrZSxJZSksSWV9LEs9ZnVuY3Rpb24oU2Upe3JldHVybiBR''@;'; put 'put ''KFNlLGtlKT9TZVtrZV06e319LEo9ZnVuY3Rpb24oU2Upe3JldHVybiBRKFNlLGtlKX19WGUuZXhwb3J0cz17c2V0OnRlLGdldDpLLGhhczpKLGVuZm9yY2U6ZnVuY3Rpb24oU2Upe3JldHVybiBKKFNlKT9LKFNlKTp0ZShTZSx7fSl9LGdldHRlckZvcjpmdW5jdGlvbihTZSl7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uKEllKXt2YXIgVGU7aWYoIUVlKEllKXx8KFRlPUsoSWUpKS50eXBlIT09U2UpdGhyb3cgVygiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAiK1NlKyIgcmVxdWlyZWQiKTtyZXR1cm4gVGV9fX19LDk3MTA2OihYZSxKZSxMKT0+e3ZhciBtZT1MKDI1NDYpLEI9TCg5NTI1NyksRT1tZSgi''@;'; put 'put ''aXRlcmF0b3IiKSxFZT1BcnJheS5wcm90b3R5cGU7WGUuZXhwb3J0cz1mdW5jdGlvbihVKXtyZXR1cm4gdm9pZCAwIT09VSYmKEIuQXJyYXk9PT1VfHxFZVtFXT09PVUpfX0sMjkxMDY6KFhlLEplLEwpPT57dmFyIG1lPUwoOTQ3MjMpO1hlLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rp''@;'; put 'put ''b24oRSl7cmV0dXJuIkFycmF5Ij09bWUoRSl9fSwxMjAxNDpYZT0+e1hlLmV4cG9ydHM9ZnVuY3Rpb24oSmUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBKZX19LDQ5NDUzOihYZSxKZSxMKT0+e3ZhciBtZT1MKDY2MTMpLEI9TCgyMzUyMyksRT1MKDEyMDE0KSxFZT1MKDc5NTIwKSxVPUwo''@;'; put 'put ''NDY2OTMpLFE9TCg1NzM3MSksaj1mdW5jdGlvbigpe30scmU9W10sYWU9VSgiUmVmbGVjdCIsImNvbnN0cnVjdCIpLFk9L15ccyooPzpjbGFzc3xmdW5jdGlvbilcYi8sVz1tZShZLmV4ZWMpLE49IVkuZXhlYyhqKSx0ZT1mdW5jdGlvbihzZSl7aWYoIUUoc2UpKXJldHVybiExO3RyeXtyZXR1''@;'; put 'put ''cm4gYWUoaixyZSxzZSksITB9Y2F0Y2gob2Upe3JldHVybiExfX0sSz1mdW5jdGlvbihzZSl7aWYoIUUoc2UpKXJldHVybiExO3N3aXRjaChFZShzZSkpe2Nhc2UiQXN5bmNGdW5jdGlvbiI6Y2FzZSJHZW5lcmF0b3JGdW5jdGlvbiI6Y2FzZSJBc3luY0dlbmVyYXRvckZ1bmN0aW9uIjpyZXR1''@;'; put 'put ''cm4hMX10cnl7cmV0dXJuIE58fCEhVyhZLFEoc2UpKX1jYXRjaChvZSl7cmV0dXJuITB9fTtLLnNoYW09ITAsWGUuZXhwb3J0cz0hYWV8fEIoZnVuY3Rpb24oKXt2YXIgSjtyZXR1cm4gdGUodGUuY2FsbCl8fCF0ZShPYmplY3QpfHwhdGUoZnVuY3Rpb24oKXtKPSEwfSl8fEp9KT9LOnRlfSwx''@;'; put 'put ''NDEyNTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0ODgxMSk7WGUuZXhwb3J0cz1mdW5jdGlvbihCKXtyZXR1cm4gdm9pZCAwIT09QiYmKG1lKEIsInZhbHVlIil8fG1lKEIsIndyaXRhYmxlIikpfX0sNjc1MDc6KFhlLEplLEwpPT57dmFyIG1lPUwoMjM1MjMpLEI9TCgxMjAxNCksRT0vI3xcLnBy''@;'; put 'put ''b3RvdHlwZVwuLyxFZT1mdW5jdGlvbihhZSxZKXt2YXIgVz1RW1UoYWUpXTtyZXR1cm4gVz09cmV8fFchPWomJihCKFkpP21lKFkpOiEhWSl9LFU9RWUubm9ybWFsaXplPWZ1bmN0aW9uKGFlKXtyZXR1cm4gU3RyaW5nKGFlKS5yZXBsYWNlKEUsIi4iKS50b0xvd2VyQ2FzZSgpfSxRPUVlLmRh''@;'; put 'put ''dGE9e30saj1FZS5OQVRJVkU9Ik4iLHJlPUVlLlBPTFlGSUxMPSJQIjtYZS5leHBvcnRzPUVlfSwzMDQyOihYZSxKZSxMKT0+e3ZhciBtZT1MKDcxNDk2KSxCPU1hdGguZmxvb3I7WGUuZXhwb3J0cz1OdW1iZXIuaXNJbnRlZ2VyfHxmdW5jdGlvbihFZSl7cmV0dXJuIW1lKEVlKSYmaXNGaW5p''@;'; put 'put ''dGUoRWUpJiZCKEVlKT09PUVlfX0sNzE0OTY6KFhlLEplLEwpPT57dmFyIG1lPUwoMTIwMTQpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oQil7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBCP251bGwhPT1COm1lKEIpfX0sMTAwMTc6WGU9PntYZS5leHBvcnRzPSExfSw0MTgwNDooWGUsSmUsTCk9Pnt2''@;'; put 'put ''YXIgbWU9TCg3MTQ5NiksQj1MKDk0NzIzKSxFZT1MKDI1NDYpKCJtYXRjaCIpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oVSl7dmFyIFE7cmV0dXJuIG1lKFUpJiYodm9pZCAwIT09KFE9VVtFZV0pPyEhUToiUmVnRXhwIj09QihVKSl9fSw2OTc1OihYZSxKZSxMKT0+e3ZhciBtZT1MKDQ2NjkzKSxC''@;'; put 'put ''PUwoMTIwMTQpLEU9TCgzNzQ3NCksRWU9TCgyMzk2MSksVT1PYmplY3Q7WGUuZXhwb3J0cz1FZT9mdW5jdGlvbihRKXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIFF9OmZ1bmN0aW9uKFEpe3ZhciBqPW1lKCJTeW1ib2wiKTtyZXR1cm4gQihqKSYmRShqLnByb3RvdHlwZSxVKFEpKX19LDI2NTQz''@;'; put 'put ''OihYZSxKZSxMKT0+e3ZhciBtZT1MKDg1NDkpLEI9TCgzNTYyKSxFPUwoNTg2NDcpLEVlPUwoOTQ2NzYpLFU9TCg5NzEwNiksUT1MKDU0NDUwKSxqPUwoMzc0NzQpLHJlPUwoMTI5ODkpLGFlPUwoNjYyODgpLFk9TCg4MDMwNyksVz1UeXBlRXJyb3IsTj1mdW5jdGlvbihLLEope3RoaXMuc3Rv''@;'; put 'put ''cHBlZD1LLHRoaXMucmVzdWx0PUp9LHRlPU4ucHJvdG90eXBlO1hlLmV4cG9ydHM9ZnVuY3Rpb24oSyxKLHNlKXt2YXIgU2UsSWUsVGUsTWUsaGUsTyx6LGNlPSEoIXNlfHwhc2UuQVNfRU5UUklFUyksZGU9ISghc2V8fCFzZS5JU19SRUNPUkQpLHZlPSEoIXNlfHwhc2UuSVNfSVRFUkFUT1Ip''@;'; put 'put ''LEFlPSEoIXNlfHwhc2UuSU5URVJSVVBURUQpLGtlPW1lKEosc2UmJnNlLnRoYXQpLGVlPWZ1bmN0aW9uKHgpe3JldHVybiBTZSYmWShTZSwibm9ybWFsIix4KSxuZXcgTighMCx4KX0sbmU9ZnVuY3Rpb24oeCl7cmV0dXJuIGNlPyhFKHgpLEFlP2tlKHhbMF0seFsxXSxlZSk6a2UoeFswXSx4''@;'; put 'put ''WzFdKSk6QWU/a2UoeCxlZSk6a2UoeCl9O2lmKGRlKVNlPUsuaXRlcmF0b3I7ZWxzZSBpZih2ZSlTZT1LO2Vsc2V7aWYoIShJZT1hZShLKSkpdGhyb3cgVyhFZShLKSsiIGlzIG5vdCBpdGVyYWJsZSIpO2lmKFUoSWUpKXtmb3IoVGU9MCxNZT1RKEspO01lPlRlO1RlKyspaWYoKGhlPW5lKEtb''@;'; put 'put ''VGVdKSkmJmoodGUsaGUpKXJldHVybiBoZTtyZXR1cm4gbmV3IE4oITEpfVNlPXJlKEssSWUpfWZvcihPPWRlP0submV4dDpTZS5uZXh0OyEoej1CKE8sU2UpKS5kb25lOyl7dHJ5e2hlPW5lKHoudmFsdWUpfWNhdGNoKHgpe1koU2UsInRocm93Iix4KX1pZigib2JqZWN0Ij09dHlwZW9mIGhl''@;'; put 'put ''JiZoZSYmaih0ZSxoZSkpcmV0dXJuIGhlfXJldHVybiBuZXcgTighMSl9fSw4MDMwNzooWGUsSmUsTCk9Pnt2YXIgbWU9TCgzNTYyKSxCPUwoNTg2NDcpLEU9TCgyMDk0OCk7WGUuZXhwb3J0cz1mdW5jdGlvbihFZSxVLFEpe3ZhciBqLHJlO0IoRWUpO3RyeXtpZighKGo9RShFZSwicmV0dXJu''@;'; put 'put ''IikpKXtpZigidGhyb3ciPT09VSl0aHJvdyBRO3JldHVybiBRfWo9bWUoaixFZSl9Y2F0Y2goYWUpe3JlPSEwLGo9YWV9aWYoInRocm93Ij09PVUpdGhyb3cgUTtpZihyZSl0aHJvdyBqO3JldHVybiBCKGopLFF9fSwxODU0NjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIFksVyxOLG1l''@;'; put 'put ''PUwoMjM1MjMpLEI9TCgxMjAxNCksRT1MKDc0NDEwKSxFZT1MKDgyNzMzKSxVPUwoMjU2NjYpLFE9TCgyNTQ2KSxqPUwoMTAwMTcpLHJlPVEoIml0ZXJhdG9yIiksYWU9ITE7W10ua2V5cyYmKCJuZXh0ImluKE49W10ua2V5cygpKT8oVz1FZShFZShOKSkpIT09T2JqZWN0LnByb3RvdHlwZSYm''@;'; put 'put ''KFk9Vyk6YWU9ITApLG51bGw9PVl8fG1lKGZ1bmN0aW9uKCl7dmFyIEs9e307cmV0dXJuIFlbcmVdLmNhbGwoSykhPT1LfSk/WT17fTpqJiYoWT1FKFkpKSxCKFlbcmVdKXx8VShZLHJlLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxYZS5leHBvcnRzPXtJdGVyYXRvclByb3RvdHlwZTpZLEJV''@;'; put 'put ''R0dZX1NBRkFSSV9JVEVSQVRPUlM6YWV9fSw5NTI1NzpYZT0+e1hlLmV4cG9ydHM9e319LDU0NDUwOihYZSxKZSxMKT0+e3ZhciBtZT1MKDY1MzE2KTtYZS5leHBvcnRzPWZ1bmN0aW9uKEIpe3JldHVybiBtZShCLmxlbmd0aCl9fSwzNDQ2ODooWGUsSmUsTCk9Pnt2YXIgbWU9TCgyMzUyMyks''@;'; put 'put ''Qj1MKDEyMDE0KSxFPUwoNDg4MTEpLEVlPUwoODU2MjQpLFU9TCgxMzg2OSkuQ09ORklHVVJBQkxFLFE9TCg1NzM3MSksaj1MKDcyNykscmU9ai5lbmZvcmNlLGFlPWouZ2V0LFk9T2JqZWN0LmRlZmluZVByb3BlcnR5LFc9RWUmJiFtZShmdW5jdGlvbigpe3JldHVybiA4IT09WShmdW5jdGlv''@;'; put 'put ''bigpe30sImxlbmd0aCIse3ZhbHVlOjh9KS5sZW5ndGh9KSxOPVN0cmluZyhTdHJpbmcpLnNwbGl0KCJTdHJpbmciKSx0ZT1YZS5leHBvcnRzPWZ1bmN0aW9uKEssSixzZSl7IlN5bWJvbCgiPT09U3RyaW5nKEopLnNsaWNlKDAsNykmJihKPSJbIitTdHJpbmcoSikucmVwbGFjZSgvXlN5bWJv''@;'; put 'put ''bFwoKFteKV0qKVwpLywiJDEiKSsiXSIpLHNlJiZzZS5nZXR0ZXImJihKPSJnZXQgIitKKSxzZSYmc2Uuc2V0dGVyJiYoSj0ic2V0ICIrSiksKCFFKEssIm5hbWUiKXx8VSYmSy5uYW1lIT09SikmJihFZT9ZKEssIm5hbWUiLHt2YWx1ZTpKLGNvbmZpZ3VyYWJsZTohMH0pOksubmFtZT1KKSxX''@;'; put 'put ''JiZzZSYmRShzZSwiYXJpdHkiKSYmSy5sZW5ndGghPT1zZS5hcml0eSYmWShLLCJsZW5ndGgiLHt2YWx1ZTpzZS5hcml0eX0pO3RyeXtzZSYmRShzZSwiY29uc3RydWN0b3IiKSYmc2UuY29uc3RydWN0b3I/RWUmJlkoSywicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KTpLLnByb3RvdHlwZSYm''@;'; put 'put ''KEsucHJvdG90eXBlPXZvaWQgMCl9Y2F0Y2goY2Upe312YXIgb2U9cmUoSyk7cmV0dXJuIEUob2UsInNvdXJjZSIpfHwob2Uuc291cmNlPU4uam9pbigic3RyaW5nIj09dHlwZW9mIEo/SjoiIikpLEt9O0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz10ZShmdW5jdGlvbigpe3JldHVybiBC''@;'; put 'put ''KHRoaXMpJiZhZSh0aGlzKS5zb3VyY2V8fFEodGhpcyl9LCJ0b1N0cmluZyIpfSw4NDc0NDpYZT0+e3ZhciBKZT1NYXRoLmNlaWwsTD1NYXRoLmZsb29yO1hlLmV4cG9ydHM9TWF0aC50cnVuY3x8ZnVuY3Rpb24oQil7dmFyIEU9K0I7cmV0dXJuKEU+MD9MOkplKShFKX19LDM5NDY2OihYZSxK''@;'; put 'put ''ZSxMKT0+e3ZhciBtZT1MKDgyNzcwKTtYZS5leHBvcnRzPW1lJiYhIVN5bWJvbC5mb3ImJiEhU3ltYm9sLmtleUZvcn0sODI3NzA6KFhlLEplLEwpPT57dmFyIG1lPUwoMjkzODUpLEI9TCgyMzUyMyk7WGUuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFCKGZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIEU9U3ltYm9sKCk7cmV0dXJuIVN0cmluZyhFKXx8IShPYmplY3QoRSlpbnN0YW5jZW9mIFN5bWJvbCl8fCFTeW1ib2wuc2hhbSYmbWUmJm1lPDQxfSl9LDgwODA2OihYZSxKZSxMKT0+e3ZhciBtZT1MKDcwNzA1KSxCPUwoMTIwMTQpLEU9TCg1NzM3MSksRWU9bWUuV2Vha01h''@;'; put 'put ''cDtYZS5leHBvcnRzPUIoRWUpJiYvbmF0aXZlIGNvZGUvLnRlc3QoRShFZSkpfSw0MTk2MTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0MTgwNCksQj1UeXBlRXJyb3I7WGUuZXhwb3J0cz1mdW5jdGlvbihFKXtpZihtZShFKSl0aHJvdyBCKCJUaGUgbWV0aG9kIGRvZXNuJ3QgYWNjZXB0IHJlZ3Vs''@;'; put 'put ''YXIgZXhwcmVzc2lvbnMiKTtyZXR1cm4gRX19LDQ3OTU5OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg4NTYyNCksQj1MKDY2MTMpLEU9TCgzNTYyKSxFZT1MKDIzNTIzKSxVPUwoMTQ1NDUpLFE9TCg1NTM0KSxqPUwoNDY5MDEpLHJlPUwoNjgwNzEpLGFlPUwoNTY2MDcpLFk9''@;'; put 'put ''T2JqZWN0LmFzc2lnbixXPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxOPUIoW10uY29uY2F0KTtYZS5leHBvcnRzPSFZfHxFZShmdW5jdGlvbigpe2lmKG1lJiYxIT09WSh7YjoxfSxZKFcoe30sImEiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe1codGhpcywiYiIse3ZhbHVlOjMsZW51''@;'; put 'put ''bWVyYWJsZTohMX0pfX0pLHtiOjJ9KSkuYilyZXR1cm4hMDt2YXIgdGU9e30sSz17fSxKPVN5bWJvbCgpLHNlPSJhYmNkZWZnaGlqa2xtbm9wcXJzdCI7cmV0dXJuIHRlW0pdPTcsc2Uuc3BsaXQoIiIpLmZvckVhY2goZnVuY3Rpb24ob2Upe0tbb2VdPW9lfSksNyE9WSh7fSx0ZSlbSl18fFUo''@;'; put 'put ''WSh7fSxLKSkuam9pbigiIikhPXNlfSk/ZnVuY3Rpb24oSyxKKXtmb3IodmFyIHNlPXJlKEspLG9lPWFyZ3VtZW50cy5sZW5ndGgsY2U9MSxkZT1RLmYsdmU9ai5mO29lPmNlOylmb3IodmFyIFRlLEFlPWFlKGFyZ3VtZW50c1tjZSsrXSksa2U9ZGU/TihVKEFlKSxkZShBZSkpOlUoQWUpLFNl''@;'; put 'put ''PWtlLmxlbmd0aCxJZT0wO1NlPkllOylUZT1rZVtJZSsrXSwoIW1lfHxFKHZlLEFlLFRlKSkmJihzZVtUZV09QWVbVGVdKTtyZXR1cm4gc2V9Oll9LDc0NDEwOihYZSxKZSxMKT0+e3ZhciBvZSxtZT1MKDU4NjQ3KSxCPUwoNzczMjgpLEU9TCg0NzgzMyksRWU9TCgxOTkwOSksVT1MKDU5NDA2''@;'; put 'put ''KSxRPUwoNDYzMTMpLGo9TCgyNzIzMCksWT0icHJvdG90eXBlIixXPSJzY3JpcHQiLE49aigiSUVfUFJPVE8iKSx0ZT1mdW5jdGlvbigpe30sSz1mdW5jdGlvbihkZSl7cmV0dXJuIjwiK1crIj4iK2RlKyI8LyIrVysiPiJ9LEo9ZnVuY3Rpb24oZGUpe2RlLndyaXRlKEsoIiIpKSxkZS5jbG9z''@;'; put 'put ''ZSgpO3ZhciB2ZT1kZS5wYXJlbnRXaW5kb3cuT2JqZWN0O3JldHVybiBkZT1udWxsLHZlfSxjZT1mdW5jdGlvbigpe3RyeXtvZT1uZXcgQWN0aXZlWE9iamVjdCgiaHRtbGZpbGUiKX1jYXRjaCh2ZSl7fWNlPSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuZG9tYWluJiZv''@;'; put 'put ''ZT9KKG9lKTpmdW5jdGlvbigpe3ZhciBBZSxkZT1RKCJpZnJhbWUiKTtyZXR1cm4gZGUuc3R5bGUuZGlzcGxheT0ibm9uZSIsVS5hcHBlbmRDaGlsZChkZSksZGUuc3JjPVN0cmluZygiamF2YXNjcmlwdDoiKSwoQWU9ZGUuY29udGVudFdpbmRvdy5kb2N1bWVudCkub3BlbigpLEFlLndyaXRl''@;'; put 'put ''KEsoImRvY3VtZW50LkY9T2JqZWN0IikpLEFlLmNsb3NlKCksQWUuRn0oKTpKKG9lKTtmb3IodmFyIGRlPUUubGVuZ3RoO2RlLS07KWRlbGV0ZSBjZVtZXVtFW2RlXV07cmV0dXJuIGNlKCl9O0VlW05dPSEwLFhlLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24odmUsQWUpe3ZhciBr''@;'; put 'put ''ZTtyZXR1cm4gbnVsbCE9PXZlPyh0ZVtZXT1tZSh2ZSksa2U9bmV3IHRlLHRlW1ldPW51bGwsa2VbTl09dmUpOmtlPWNlKCksdm9pZCAwPT09QWU/a2U6Qi5mKGtlLEFlKX19LDc3MzI4OihYZSxKZSxMKT0+e3ZhciBtZT1MKDg1NjI0KSxCPUwoMjAxMTgpLEU9TCg1MTE4MyksRWU9TCg1ODY0''@;'; put 'put ''NyksVT1MKDUwMzI3KSxRPUwoMTQ1NDUpO0plLmY9bWUmJiFCP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKHJlLGFlKXtFZShyZSk7Zm9yKHZhciBLLFk9VShhZSksVz1RKGFlKSxOPVcubGVuZ3RoLHRlPTA7Tj50ZTspRS5mKHJlLEs9V1t0ZSsrXSxZW0tdKTtyZXR1cm4gcmV9''@;'; put 'put ''fSw1MTE4MzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg4NTYyNCksQj1MKDk0Njc1KSxFPUwoMjAxMTgpLEVlPUwoNTg2NDcpLFU9TCg4NDA5NCksUT1UeXBlRXJyb3Isaj1PYmplY3QuZGVmaW5lUHJvcGVydHkscmU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixhZT0iZW51bWVyYWJs''@;'; put 'put ''ZSIsWT0iY29uZmlndXJhYmxlIixXPSJ3cml0YWJsZSI7SmUuZj1tZT9FP2Z1bmN0aW9uKHRlLEssSil7aWYoRWUodGUpLEs9VShLKSxFZShKKSwiZnVuY3Rpb24iPT10eXBlb2YgdGUmJiJwcm90b3R5cGUiPT09SyYmInZhbHVlImluIEomJlcgaW4gSiYmIUpbV10pe3ZhciBzZT1yZSh0ZSxL''@;'; put 'put ''KTtzZSYmc2VbV10mJih0ZVtLXT1KLnZhbHVlLEo9e2NvbmZpZ3VyYWJsZTpZIGluIEo/SltZXTpzZVtZXSxlbnVtZXJhYmxlOmFlIGluIEo/SlthZV06c2VbYWVdLHdyaXRhYmxlOiExfSl9cmV0dXJuIGoodGUsSyxKKX06ajpmdW5jdGlvbih0ZSxLLEope2lmKEVlKHRlKSxLPVUoSyksRWUo''@;'; put 'put ''SiksQil0cnl7cmV0dXJuIGoodGUsSyxKKX1jYXRjaChzZSl7fWlmKCJnZXQiaW4gSnx8InNldCJpbiBKKXRocm93IFEoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7cmV0dXJuInZhbHVlImluIEomJih0ZVtLXT1KLnZhbHVlKSx0ZX19LDQ3OTg3OihYZSxKZSxMKT0+e3ZhciBtZT1MKDg1''@;'; put 'put ''NjI0KSxCPUwoMzU2MiksRT1MKDQ2OTAxKSxFZT1MKDczOTIwKSxVPUwoNTAzMjcpLFE9TCg4NDA5NCksaj1MKDQ4ODExKSxyZT1MKDk0Njc1KSxhZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO0plLmY9bWU/YWU6ZnVuY3Rpb24oVyxOKXtpZihXPVUoVyksTj1RKE4pLHJlKXRy''@;'; put 'put ''eXtyZXR1cm4gYWUoVyxOKX1jYXRjaCh0ZSl7fWlmKGooVyxOKSlyZXR1cm4gRWUoIUIoRS5mLFcsTiksV1tOXSl9fSwzNTgwODooWGUsSmUsTCk9Pnt2YXIgbWU9TCg5NDcyMyksQj1MKDUwMzI3KSxFPUwoNzU0MzEpLmYsRWU9TCgxMDg3MiksVT0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYm''@;'; put 'put ''d2luZG93JiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcz9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpOltdO1hlLmV4cG9ydHMuZj1mdW5jdGlvbihyZSl7cmV0dXJuIFUmJiJXaW5kb3ciPT1tZShyZSk/ZnVuY3Rpb24oail7dHJ5e3JldHVybiBFKGopfWNhdGNoKHJlKXty''@;'; put 'put ''ZXR1cm4gRWUoVSl9fShyZSk6RShCKHJlKSl9fSw3NTQzMTooWGUsSmUsTCk9Pnt2YXIgbWU9TCgyNDk2NyksRT1MKDQ3ODMzKS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO0plLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKFUpe3JldHVybiBtZShVLEUpfX0s''@;'; put 'put ''NTUzNDooWGUsSmUpPT57SmUuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSw4MjczMzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0ODgxMSksQj1MKDEyMDE0KSxFPUwoNjgwNzEpLEVlPUwoMjcyMzApLFU9TCg0NjA4NiksUT1FZSgiSUVfUFJPVE8iKSxqPU9iamVjdCxyZT1qLnByb3Rv''@;'; put 'put ''dHlwZTtYZS5leHBvcnRzPVU/ai5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihhZSl7dmFyIFk9RShhZSk7aWYobWUoWSxRKSlyZXR1cm4gWVtRXTt2YXIgVz1ZLmNvbnN0cnVjdG9yO3JldHVybiBCKFcpJiZZIGluc3RhbmNlb2YgVz9XLnByb3RvdHlwZTpZIGluc3RhbmNlb2Ygaj9yZTpudWxs''@;'; put 'put ''fX0sNTUyMTg6KFhlLEplLEwpPT57dmFyIG1lPUwoMjM1MjMpLEI9TCg3MTQ5NiksRT1MKDk0NzIzKSxFZT1MKDYyNzg5KSxVPU9iamVjdC5pc0V4dGVuc2libGUsUT1tZShmdW5jdGlvbigpe1UoMSl9KTtYZS5leHBvcnRzPVF8fEVlP2Z1bmN0aW9uKHJlKXtyZXR1cm4hKCFCKHJlKXx8RWUm''@;'; put 'put ''JiJBcnJheUJ1ZmZlciI9PUUocmUpKSYmKCFVfHxVKHJlKSl9OlV9LDM3NDc0OihYZSxKZSxMKT0+e3ZhciBtZT1MKDY2MTMpO1hlLmV4cG9ydHM9bWUoe30uaXNQcm90b3R5cGVPZil9LDI0OTY3OihYZSxKZSxMKT0+e3ZhciBtZT1MKDY2MTMpLEI9TCg0ODgxMSksRT1MKDUwMzI3KSxFZT1M''@;'; put 'put ''KDM2MzA1KS5pbmRleE9mLFU9TCgxOTkwOSksUT1tZShbXS5wdXNoKTtYZS5leHBvcnRzPWZ1bmN0aW9uKGoscmUpe3ZhciBOLGFlPUUoaiksWT0wLFc9W107Zm9yKE4gaW4gYWUpIUIoVSxOKSYmQihhZSxOKSYmUShXLE4pO2Zvcig7cmUubGVuZ3RoPlk7KUIoYWUsTj1yZVtZKytdKSYmKH5F''@;'; put 'put ''ZShXLE4pfHxRKFcsTikpO3JldHVybiBXfX0sMTQ1NDU6KFhlLEplLEwpPT57dmFyIG1lPUwoMjQ5NjcpLEI9TCg0NzgzMyk7WGUuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24oRWUpe3JldHVybiBtZShFZSxCKX19LDQ2OTAxOihYZSxKZSk9PnsidXNlIHN0cmljdCI7dmFyIEw9e30u''@;'; put 'put ''cHJvcGVydHlJc0VudW1lcmFibGUsbWU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixCPW1lJiYhTC5jYWxsKHsxOjJ9LDEpO0plLmY9Qj9mdW5jdGlvbihFZSl7dmFyIFU9bWUodGhpcyxFZSk7cmV0dXJuISFVJiZVLmVudW1lcmFibGV9Okx9LDE5NTg3OihYZSxKZSxMKT0+e3Zh''@;'; put 'put ''ciBtZT1MKDY2MTMpLEI9TCg1ODY0NyksRT1MKDcwMDgpO1hlLmV4cG9ydHM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIFEsRWU9ITEsVT17fTt0cnl7KFE9bWUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJv''@;'; put 'put ''dG90eXBlLCJfX3Byb3RvX18iKS5zZXQpKShVLFtdKSxFZT1VIGluc3RhbmNlb2YgQXJyYXl9Y2F0Y2goail7fXJldHVybiBmdW5jdGlvbihyZSxhZSl7cmV0dXJuIEIocmUpLEUoYWUpLEVlP1EocmUsYWUpOnJlLl9fcHJvdG9fXz1hZSxyZX19KCk6dm9pZCAwKX0sNDQ1ODI6KFhlLEplLEwp''@;'; put 'put ''PT57dmFyIG1lPUwoODU2MjQpLEI9TCg2NjEzKSxFPUwoMTQ1NDUpLEVlPUwoNTAzMjcpLFE9QihMKDQ2OTAxKS5mKSxqPUIoW10ucHVzaCkscmU9ZnVuY3Rpb24oYWUpe3JldHVybiBmdW5jdGlvbihZKXtmb3IodmFyIHNlLFc9RWUoWSksTj1FKFcpLHRlPU4ubGVuZ3RoLEs9MCxKPVtdO3Rl''@;'; put 'put ''Pks7KXNlPU5bSysrXSwoIW1lfHxRKFcsc2UpKSYmaihKLGFlP1tzZSxXW3NlXV06V1tzZV0pO3JldHVybiBKfX07WGUuZXhwb3J0cz17ZW50cmllczpyZSghMCksdmFsdWVzOnJlKCExKX19LDc3MDU6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDI3NDkwKSxCPUwoNzk1MjAp''@;'; put 'put ''O1hlLmV4cG9ydHM9bWU/e30udG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCAiK0IodGhpcykrIl0ifX0sNjM0MTU6KFhlLEplLEwpPT57dmFyIG1lPUwoMzU2MiksQj1MKDEyMDE0KSxFPUwoNzE0OTYpLEVlPVR5cGVFcnJvcjtYZS5leHBvcnRzPWZ1bmN0aW9uKFUsUSl7dmFy''@;'; put 'put ''IGoscmU7aWYoInN0cmluZyI9PT1RJiZCKGo9VS50b1N0cmluZykmJiFFKHJlPW1lKGosVSkpfHxCKGo9VS52YWx1ZU9mKSYmIUUocmU9bWUoaixVKSl8fCJzdHJpbmciIT09USYmQihqPVUudG9TdHJpbmcpJiYhRShyZT1tZShqLFUpKSlyZXR1cm4gcmU7dGhyb3cgRWUoIkNhbid0IGNvbnZl''@;'; put 'put ''cnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfX0sMjExOTk6KFhlLEplLEwpPT57dmFyIG1lPUwoNDY2OTMpLEI9TCg2NjEzKSxFPUwoNzU0MzEpLEVlPUwoNTUzNCksVT1MKDU4NjQ3KSxRPUIoW10uY29uY2F0KTtYZS5leHBvcnRzPW1lKCJSZWZsZWN0Iiwib3duS2V5cyIpfHxmdW5j''@;'; put 'put ''dGlvbihyZSl7dmFyIGFlPUUuZihVKHJlKSksWT1FZS5mO3JldHVybiBZP1EoYWUsWShyZSkpOmFlfX0sOTI3MzM6KFhlLEplLEwpPT57dmFyIG1lPUwoNzA3MDUpO1hlLmV4cG9ydHM9bWV9LDc4ODA6KFhlLEplLEwpPT57dmFyIG1lPUwoNTExODMpLmY7WGUuZXhwb3J0cz1mdW5jdGlvbihC''@;'; put 'put ''LEUsRWUpe0VlIGluIEJ8fG1lKEIsRWUse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRVtFZV19LHNldDpmdW5jdGlvbihVKXtFW0VlXT1VfX0pfX0sNTgxMjY6KFhlLEplLEwpPT57dmFyIG1lPUwoMzU2MiksQj1MKDU4NjQ3KSxFPUwoMTIwMTQpLEVlPUwoOTQ3MjMp''@;'; put 'put ''LFU9TCgyMjIzNCksUT1UeXBlRXJyb3I7WGUuZXhwb3J0cz1mdW5jdGlvbihqLHJlKXt2YXIgYWU9ai5leGVjO2lmKEUoYWUpKXt2YXIgWT1tZShhZSxqLHJlKTtyZXR1cm4gbnVsbCE9PVkmJkIoWSksWX1pZigiUmVnRXhwIj09PUVlKGopKXJldHVybiBtZShVLGoscmUpO3Rocm93IFEoIlJl''@;'; put 'put ''Z0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXIiKX19LDIyMjM0OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIga2UsU2UsbWU9TCgzNTYyKSxCPUwoNjYxMyksRT1MKDkyMSksRWU9TCg0ODcyNSksVT1MKDk3MTg5KSxRPUwoNjg4MzUpLGo9TCg3NDQxMCkscmU9''@;'; put 'put ''TCg3MjcpLmdldCxhZT1MKDQzMTg2KSxZPUwoNTE5NDkpLFc9USgibmF0aXZlLXN0cmluZy1yZXBsYWNlIixTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpLE49UmVnRXhwLnByb3RvdHlwZS5leGVjLHRlPU4sSz1CKCIiLmNoYXJBdCksSj1CKCIiLmluZGV4T2YpLHNlPUIoIiIucmVwbGFjZSks''@;'; put 'put ''b2U9QigiIi5zbGljZSksY2U9KFNlPS9iKi9nLG1lKE4sa2U9L2EvLCJhIiksbWUoTixTZSwiYSIpLDAhPT1rZS5sYXN0SW5kZXh8fDAhPT1TZS5sYXN0SW5kZXgpLGRlPVUuQlJPS0VOX0NBUkVULHZlPXZvaWQgMCE9PS8oKT8/Ly5leGVjKCIiKVsxXTsoY2V8fHZlfHxkZXx8YWV8fFkpJiYo''@;'; put 'put ''dGU9ZnVuY3Rpb24oU2Upe3ZhciBPLHosZWUsbmUseCxQLFYsSWU9dGhpcyxUZT1yZShJZSksTWU9RShTZSksaGU9VGUucmF3O2lmKGhlKXJldHVybiBoZS5sYXN0SW5kZXg9SWUubGFzdEluZGV4LE89bWUodGUsaGUsTWUpLEllLmxhc3RJbmRleD1oZS5sYXN0SW5kZXgsTzt2YXIgVD1UZS5n''@;'; put 'put ''cm91cHMsUz1kZSYmSWUuc3RpY2t5LEY9bWUoRWUsSWUpLHllPUllLnNvdXJjZSxDZT0wLERlPU1lO2lmKFMmJihGPXNlKEYsInkiLCIiKSwtMT09PUooRiwiZyIpJiYoRis9ImciKSxEZT1vZShNZSxJZS5sYXN0SW5kZXgpLEllLmxhc3RJbmRleD4wJiYoIUllLm11bHRpbGluZXx8SWUubXVs''@;'; put 'put ''dGlsaW5lJiYiXG4iIT09SyhNZSxJZS5sYXN0SW5kZXgtMSkpJiYoeWU9Iig/OiAiK3llKyIpIixEZT0iICIrRGUsQ2UrKyksej1uZXcgUmVnRXhwKCJeKD86Iit5ZSsiKSIsRikpLHZlJiYoej1uZXcgUmVnRXhwKCJeIit5ZSsiJCg/IVxccykiLEYpKSxjZSYmKGVlPUllLmxhc3RJbmRleCks''@;'; put 'put ''bmU9bWUoTixTP3o6SWUsRGUpLFM/bmU/KG5lLmlucHV0PW9lKG5lLmlucHV0LENlKSxuZVswXT1vZShuZVswXSxDZSksbmUuaW5kZXg9SWUubGFzdEluZGV4LEllLmxhc3RJbmRleCs9bmVbMF0ubGVuZ3RoKTpJZS5sYXN0SW5kZXg9MDpjZSYmbmUmJihJZS5sYXN0SW5kZXg9SWUuZ2xvYmFs''@;'; put 'put ''P25lLmluZGV4K25lWzBdLmxlbmd0aDplZSksdmUmJm5lJiZuZS5sZW5ndGg+MSYmbWUoVyxuZVswXSx6LGZ1bmN0aW9uKCl7Zm9yKHg9MTt4PGFyZ3VtZW50cy5sZW5ndGgtMjt4Kyspdm9pZCAwPT09YXJndW1lbnRzW3hdJiYobmVbeF09dm9pZCAwKX0pLG5lJiZUKWZvcihuZS5ncm91cHM9''@;'; put 'put ''UD1qKG51bGwpLHg9MDt4PFQubGVuZ3RoO3grKylQWyhWPVRbeF0pWzBdXT1uZVtWWzFdXTtyZXR1cm4gbmV9KSxYZS5leHBvcnRzPXRlfSw0ODcyNTooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoNTg2NDcpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgQj1tZSh0aGlzKSxF''@;'; put 'put ''PSIiO3JldHVybiBCLmhhc0luZGljZXMmJihFKz0iZCIpLEIuZ2xvYmFsJiYoRSs9ImciKSxCLmlnbm9yZUNhc2UmJihFKz0iaSIpLEIubXVsdGlsaW5lJiYoRSs9Im0iKSxCLmRvdEFsbCYmKEUrPSJzIiksQi51bmljb2RlJiYoRSs9InUiKSxCLnVuaWNvZGVTZXRzJiYoRSs9InYiKSxCLnN0''@;'; put 'put ''aWNreSYmKEUrPSJ5IiksRX19LDgxNjIwOihYZSxKZSxMKT0+e3ZhciBtZT1MKDM1NjIpLEI9TCg0ODgxMSksRT1MKDM3NDc0KSxFZT1MKDQ4NzI1KSxVPVJlZ0V4cC5wcm90b3R5cGU7WGUuZXhwb3J0cz1mdW5jdGlvbihRKXt2YXIgaj1RLmZsYWdzO3JldHVybiB2b2lkIDAhPT1qfHwiZmxh''@;'; put 'put ''Z3MiaW4gVXx8QihRLCJmbGFncyIpfHwhRShVLFEpP2o6bWUoRWUsUSl9fSw5NzE4OTooWGUsSmUsTCk9Pnt2YXIgbWU9TCgyMzUyMyksRT1MKDcwNzA1KS5SZWdFeHAsRWU9bWUoZnVuY3Rpb24oKXt2YXIgaj1FKCJhIiwieSIpO3JldHVybiBqLmxhc3RJbmRleD0yLG51bGwhPWouZXhlYygi''@;'; put 'put ''YWJjZCIpfSksVT1FZXx8bWUoZnVuY3Rpb24oKXtyZXR1cm4hRSgiYSIsInkiKS5zdGlja3l9KSxRPUVlfHxtZShmdW5jdGlvbigpe3ZhciBqPUUoIl5yIiwiZ3kiKTtyZXR1cm4gai5sYXN0SW5kZXg9MixudWxsIT1qLmV4ZWMoInN0ciIpfSk7WGUuZXhwb3J0cz17QlJPS0VOX0NBUkVUOlEs''@;'; put 'put ''TUlTU0VEX1NUSUNLWTpVLFVOU1VQUE9SVEVEX1k6RWV9fSw0MzE4NjooWGUsSmUsTCk9Pnt2YXIgbWU9TCgyMzUyMyksRT1MKDcwNzA1KS5SZWdFeHA7WGUuZXhwb3J0cz1tZShmdW5jdGlvbigpe3ZhciBFZT1FKCIuIiwicyIpO3JldHVybiEoRWUuZG90QWxsJiZFZS5leGVjKCJcbiIpJiYi''@;'; put 'put ''cyI9PT1FZS5mbGFncyl9KX0sNTE5NDk6KFhlLEplLEwpPT57dmFyIG1lPUwoMjM1MjMpLEU9TCg3MDcwNSkuUmVnRXhwO1hlLmV4cG9ydHM9bWUoZnVuY3Rpb24oKXt2YXIgRWU9RSgiKD88YT5iKSIsImciKTtyZXR1cm4iYiIhPT1FZS5leGVjKCJiIikuZ3JvdXBzLmF8fCJiYyIhPT0iYiIu''@;'; put 'put ''cmVwbGFjZShFZSwiJDxhPmMiKX0pfSwyNDU3MjpYZT0+e3ZhciBKZT1UeXBlRXJyb3I7WGUuZXhwb3J0cz1mdW5jdGlvbihMKXtpZihudWxsPT1MKXRocm93IEplKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiK0wpO3JldHVybiBMfX0sNTU4ODE6WGU9PntYZS5leHBvcnRzPU9iamVjdC5pc3x8''@;'; put 'put ''ZnVuY3Rpb24oTCxtZSl7cmV0dXJuIEw9PT1tZT8wIT09THx8MS9MPT0xL21lOkwhPUwmJm1lIT1tZX19LDk1ODk1OihYZSxKZSxMKT0+e3ZhciBtZT1MKDcwNzA1KSxCPUwoMTEzMDYpLEU9TCgxMjAxNCksRWU9TCg3NzgzOSksVT1MKDQwOTMwKSxRPUwoNzk1NDUpLGo9L01TSUUgLlwuLy50''@;'; put 'put ''ZXN0KEVlKSxyZT1tZS5GdW5jdGlvbixhZT1mdW5jdGlvbihZKXtyZXR1cm4gaj9mdW5jdGlvbihXLE4pe3ZhciB0ZT1RKGFyZ3VtZW50cy5sZW5ndGgsMSk+MixLPUUoVyk/VzpyZShXKSxKPXRlP1UoYXJndW1lbnRzLDIpOnZvaWQgMDtyZXR1cm4gWSh0ZT9mdW5jdGlvbigpe0IoSyx0aGlz''@;'; put 'put ''LEopfTpLLE4pfTpZfTtYZS5leHBvcnRzPXtzZXRUaW1lb3V0OmFlKG1lLnNldFRpbWVvdXQpLHNldEludGVydmFsOmFlKG1lLnNldEludGVydmFsKX19LDY4MzE1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg0NjY5MyksQj1MKDUxMTgzKSxFPUwoMjU0NiksRWU9TCg4NTYy''@;'; put 'put ''NCksVT1FKCJzcGVjaWVzIik7WGUuZXhwb3J0cz1mdW5jdGlvbihRKXt2YXIgaj1tZShRKTtFZSYmaiYmIWpbVV0mJigwLEIuZikoaixVLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSl9fSw1NTk2ODooWGUsSmUsTCk9Pnt2YXIgbWU9TCg1MTE4MykuZixC''@;'; put 'put ''PUwoNDg4MTEpLEVlPUwoMjU0NikoInRvU3RyaW5nVGFnIik7WGUuZXhwb3J0cz1mdW5jdGlvbihVLFEsail7VSYmIWomJihVPVUucHJvdG90eXBlKSxVJiYhQihVLEVlKSYmbWUoVSxFZSx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOlF9KX19LDI3MjMwOihYZSxKZSxMKT0+e3ZhciBtZT1MKDY4''@;'; put 'put ''ODM1KSxCPUwoNTI4MTApLEU9bWUoImtleXMiKTtYZS5leHBvcnRzPWZ1bmN0aW9uKEVlKXtyZXR1cm4gRVtFZV18fChFW0VlXT1CKEVlKSl9fSw4MTA2OTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg3MDcwNSksQj1MKDczNDcwKSxFPSJfX2NvcmUtanNfc2hhcmVkX18iLEVlPW1lW0VdfHxCKEUs''@;'; put 'put ''e30pO1hlLmV4cG9ydHM9RWV9LDY4ODM1OihYZSxKZSxMKT0+e3ZhciBtZT1MKDEwMDE3KSxCPUwoODEwNjkpOyhYZS5leHBvcnRzPWZ1bmN0aW9uKEUsRWUpe3JldHVybiBCW0VdfHwoQltFXT12b2lkIDAhPT1FZT9FZTp7fSl9KSgidmVyc2lvbnMiLFtdKS5wdXNoKHt2ZXJzaW9uOiIzLjI0''@;'; put 'put ''LjEiLG1vZGU6bWU/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiXHhhOSAyMDE0LTIwMjIgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkiLGxpY2Vuc2U6Imh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMjQuMS9MSUNFTlNFIixzb3VyY2U6Imh0dHBz''@;'; put 'put ''Oi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzIn0pfSw5MTM6KFhlLEplLEwpPT57dmFyIG1lPUwoNTg2NDcpLEI9TCg1NjU4MSksRWU9TCgyNTQ2KSgic3BlY2llcyIpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oVSxRKXt2YXIgcmUsaj1tZShVKS5jb25zdHJ1Y3RvcjtyZXR1cm4gdm9pZCAw''@;'; put 'put ''PT09anx8bnVsbD09KHJlPW1lKGopW0VlXSk/UTpCKHJlKX19LDk3ODE4OihYZSxKZSxMKT0+e3ZhciBtZT1MKDIzNTIzKTtYZS5leHBvcnRzPWZ1bmN0aW9uKEIpe3JldHVybiBtZShmdW5jdGlvbigpe3ZhciBFPSIiW0JdKCciJyk7cmV0dXJuIEUhPT1FLnRvTG93ZXJDYXNlKCl8fEUuc3Bs''@;'; put 'put ''aXQoJyInKS5sZW5ndGg+M30pfX0sNzUwNTg6KFhlLEplLEwpPT57dmFyIG1lPUwoNjYxMyksQj1MKDQwNzAyKSxFPUwoOTIxKSxFZT1MKDI0NTcyKSxVPW1lKCIiLmNoYXJBdCksUT1tZSgiIi5jaGFyQ29kZUF0KSxqPW1lKCIiLnNsaWNlKSxyZT1mdW5jdGlvbihhZSl7cmV0dXJuIGZ1bmN0''@;'; put 'put ''aW9uKFksVyl7dmFyIEosc2UsTj1FKEVlKFkpKSx0ZT1CKFcpLEs9Ti5sZW5ndGg7cmV0dXJuIHRlPDB8fHRlPj1LP2FlPyIiOnZvaWQgMDooSj1RKE4sdGUpKTw1NTI5Nnx8Sj41NjMxOXx8dGUrMT09PUt8fChzZT1RKE4sdGUrMSkpPDU2MzIwfHxzZT41NzM0Mz9hZT9VKE4sdGUpOko6YWU/''@;'; put 'put ''aihOLHRlLHRlKzIpOnNlLTU2MzIwKyhKLTU1Mjk2PDwxMCkrNjU1MzZ9fTtYZS5leHBvcnRzPXtjb2RlQXQ6cmUoITEpLGNoYXJBdDpyZSghMCl9fSw3MjIxMDooWGUsSmUsTCk9Pnt2YXIgbWU9TCg3NzgzOSk7WGUuZXhwb3J0cz0vVmVyc2lvblwvMTAoPzpcLlxkKyl7MSwyfSg/OiBbXHcu''@;'; put 'put ''L10rKT8oPzogTW9iaWxlXC9cdyspPyBTYWZhcmlcLy8udGVzdChtZSl9LDIxMjg1OihYZSxKZSxMKT0+e3ZhciBtZT1MKDY2MTMpLEI9TCg2NTMxNiksRT1MKDkyMSksRWU9TCg0NTk2MCksVT1MKDI0NTcyKSxRPW1lKEVlKSxqPW1lKCIiLnNsaWNlKSxyZT1NYXRoLmNlaWwsYWU9ZnVuY3Rp''@;'; put 'put ''b24oWSl7cmV0dXJuIGZ1bmN0aW9uKFcsTix0ZSl7dmFyIGNlLGRlLEs9RShVKFcpKSxKPUIoTiksc2U9Sy5sZW5ndGgsb2U9dm9pZCAwPT09dGU/IiAiOkUodGUpO3JldHVybiBKPD1zZXx8IiI9PW9lP0s6KChkZT1RKG9lLHJlKChjZT1KLXNlKS9vZS5sZW5ndGgpKSkubGVuZ3RoPmNlJiYo''@;'; put 'put ''ZGU9aihkZSwwLGNlKSksWT9LK2RlOmRlK0spfX07WGUuZXhwb3J0cz17c3RhcnQ6YWUoITEpLGVuZDphZSghMCl9fSw0NTk2MDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoNDA3MDIpLEI9TCg5MjEpLEU9TCgyNDU3MiksRWU9UmFuZ2VFcnJvcjtYZS5leHBvcnRzPWZ1bmN0''@;'; put 'put ''aW9uKFEpe3ZhciBqPUIoRSh0aGlzKSkscmU9IiIsYWU9bWUoUSk7aWYoYWU8MHx8YWU9PTEvMCl0aHJvdyBFZSgiV3JvbmcgbnVtYmVyIG9mIHJlcGV0aXRpb25zIik7Zm9yKDthZT4wOyhhZT4+Pj0xKSYmKGorPWopKTEmYWUmJihyZSs9aik7cmV0dXJuIHJlfX0sNDU3MTI6KFhlLEplLEwp''@;'; put 'put ''PT57dmFyIG1lPUwoMTM4NjkpLlBST1BFUixCPUwoMjM1MjMpLEU9TCg3Nzg2Myk7WGUuZXhwb3J0cz1mdW5jdGlvbihVKXtyZXR1cm4gQihmdW5jdGlvbigpe3JldHVybiEhRVtVXSgpfHwiXHUyMDBiXHg4NVx1MTgwZSIhPT0iXHUyMDBiXHg4NVx1MTgwZSJbVV0oKXx8bWUmJkVbVV0ubmFt''@;'; put 'put ''ZSE9PVV9KX19LDkzMTY2OihYZSxKZSxMKT0+e3ZhciBtZT1MKDY2MTMpLEI9TCgyNDU3MiksRT1MKDkyMSksRWU9TCg3Nzg2MyksVT1tZSgiIi5yZXBsYWNlKSxRPSJbIitFZSsiXSIsaj1SZWdFeHAoIl4iK1ErUSsiKiIpLHJlPVJlZ0V4cChRK1ErIiokIiksYWU9ZnVuY3Rpb24oWSl7cmV0''@;'; put 'put ''dXJuIGZ1bmN0aW9uKFcpe3ZhciBOPUUoQihXKSk7cmV0dXJuIDEmWSYmKE49VShOLGosIiIpKSwyJlkmJihOPVUoTixyZSwiIikpLE59fTtYZS5leHBvcnRzPXtzdGFydDphZSgxKSxlbmQ6YWUoMiksdHJpbTphZSgzKX19LDE0NDk4OihYZSxKZSxMKT0+e3ZhciBtZT1MKDM1NjIpLEI9TCg0''@;'; put 'put ''NjY5MyksRT1MKDI1NDYpLEVlPUwoMjU2NjYpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgVT1CKCJTeW1ib2wiKSxRPVUmJlUucHJvdG90eXBlLGo9USYmUS52YWx1ZU9mLHJlPUUoInRvUHJpbWl0aXZlIik7USYmIVFbcmVdJiZFZShRLHJlLGZ1bmN0aW9uKGFlKXtyZXR1cm4gbWUoaix0''@;'; put 'put ''aGlzKX0se2FyaXR5OjF9KX19LDU1MjYxOihYZSxKZSxMKT0+e3ZhciBTZSxJZSxUZSxNZSxtZT1MKDcwNzA1KSxCPUwoMTEzMDYpLEU9TCg4NTQ5KSxFZT1MKDEyMDE0KSxVPUwoNDg4MTEpLFE9TCgyMzUyMyksaj1MKDU5NDA2KSxyZT1MKDQwOTMwKSxhZT1MKDQ2MzEzKSxZPUwoNzk1NDUp''@;'; put 'put ''LFc9TCg3ODUyMCksTj1MKDg3MjQ0KSx0ZT1tZS5zZXRJbW1lZGlhdGUsSz1tZS5jbGVhckltbWVkaWF0ZSxKPW1lLnByb2Nlc3Msc2U9bWUuRGlzcGF0Y2gsb2U9bWUuRnVuY3Rpb24sY2U9bWUuTWVzc2FnZUNoYW5uZWwsZGU9bWUuU3RyaW5nLHZlPTAsQWU9e30sa2U9Im9ucmVhZHlzdGF0''@;'; put 'put ''ZWNoYW5nZSI7dHJ5e1NlPW1lLmxvY2F0aW9ufWNhdGNoKG5lKXt9dmFyIGhlPWZ1bmN0aW9uKG5lKXtpZihVKEFlLG5lKSl7dmFyIHg9QWVbbmVdO2RlbGV0ZSBBZVtuZV0seCgpfX0sTz1mdW5jdGlvbihuZSl7cmV0dXJuIGZ1bmN0aW9uKCl7aGUobmUpfX0sej1mdW5jdGlvbihuZSl7aGUo''@;'; put 'put ''bmUuZGF0YSl9LGVlPWZ1bmN0aW9uKG5lKXttZS5wb3N0TWVzc2FnZShkZShuZSksU2UucHJvdG9jb2wrIi8vIitTZS5ob3N0KX07KCF0ZXx8IUspJiYodGU9ZnVuY3Rpb24oeCl7WShhcmd1bWVudHMubGVuZ3RoLDEpO3ZhciBQPUVlKHgpP3g6b2UoeCksVj1yZShhcmd1bWVudHMsMSk7cmV0''@;'; put 'put ''dXJuIEFlWysrdmVdPWZ1bmN0aW9uKCl7QihQLHZvaWQgMCxWKX0sSWUodmUpLHZlfSxLPWZ1bmN0aW9uKHgpe2RlbGV0ZSBBZVt4XX0sTj9JZT1mdW5jdGlvbihuZSl7Si5uZXh0VGljayhPKG5lKSl9OnNlJiZzZS5ub3c/SWU9ZnVuY3Rpb24obmUpe3NlLm5vdyhPKG5lKSl9OmNlJiYhVz8o''@;'; put 'put ''TWU9KFRlPW5ldyBjZSkucG9ydDIsVGUucG9ydDEub25tZXNzYWdlPXosSWU9RShNZS5wb3N0TWVzc2FnZSxNZSkpOm1lLmFkZEV2ZW50TGlzdGVuZXImJkVlKG1lLnBvc3RNZXNzYWdlKSYmIW1lLmltcG9ydFNjcmlwdHMmJlNlJiYiZmlsZToiIT09U2UucHJvdG9jb2wmJiFRKGVlKT8oSWU9''@;'; put 'put ''ZWUsbWUuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIseiwhMSkpOkllPWtlIGluIGFlKCJzY3JpcHQiKT9mdW5jdGlvbihuZSl7ai5hcHBlbmRDaGlsZChhZSgic2NyaXB0IikpW2tlXT1mdW5jdGlvbigpe2oucmVtb3ZlQ2hpbGQodGhpcyksaGUobmUpfX06ZnVuY3Rpb24obmUpe3NldFRp''@;'; put 'put ''bWVvdXQoTyhuZSksMCl9KSxYZS5leHBvcnRzPXtzZXQ6dGUsY2xlYXI6S319LDE0MjY6KFhlLEplLEwpPT57dmFyIG1lPUwoNjYxMyk7WGUuZXhwb3J0cz1tZSgxLi52YWx1ZU9mKX0sNzYxNjM6KFhlLEplLEwpPT57dmFyIG1lPUwoNDA3MDIpLEI9TWF0aC5tYXgsRT1NYXRoLm1pbjtYZS5l''@;'; put 'put ''eHBvcnRzPWZ1bmN0aW9uKEVlLFUpe3ZhciBRPW1lKEVlKTtyZXR1cm4gUTwwP0IoUStVLDApOkUoUSxVKX19LDUwMzI3OihYZSxKZSxMKT0+e3ZhciBtZT1MKDU2NjA3KSxCPUwoMjQ1NzIpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oRSl7cmV0dXJuIG1lKEIoRSkpfX0sNDA3MDI6KFhlLEplLEwp''@;'; put 'put ''PT57dmFyIG1lPUwoODQ3NDQpO1hlLmV4cG9ydHM9ZnVuY3Rpb24oQil7dmFyIEU9K0I7cmV0dXJuIEUhPUV8fDA9PT1FPzA6bWUoRSl9fSw2NTMxNjooWGUsSmUsTCk9Pnt2YXIgbWU9TCg0MDcwMiksQj1NYXRoLm1pbjtYZS5leHBvcnRzPWZ1bmN0aW9uKEUpe3JldHVybiBFPjA/QihtZShF''@;'; put 'put ''KSw5MDA3MTk5MjU0NzQwOTkxKTowfX0sNjgwNzE6KFhlLEplLEwpPT57dmFyIG1lPUwoMjQ1NzIpLEI9T2JqZWN0O1hlLmV4cG9ydHM9ZnVuY3Rpb24oRSl7cmV0dXJuIEIobWUoRSkpfX0sNzU1Mzc6KFhlLEplLEwpPT57dmFyIG1lPUwoMzU2MiksQj1MKDcxNDk2KSxFPUwoNjk3NSksRWU9''@;'; put 'put ''TCgyMDk0OCksVT1MKDYzNDE1KSxRPUwoMjU0Niksaj1UeXBlRXJyb3IscmU9USgidG9QcmltaXRpdmUiKTtYZS5leHBvcnRzPWZ1bmN0aW9uKGFlLFkpe2lmKCFCKGFlKXx8RShhZSkpcmV0dXJuIGFlO3ZhciBOLFc9RWUoYWUscmUpO2lmKFcpe2lmKHZvaWQgMD09PVkmJihZPSJkZWZhdWx0''@;'; put 'put ''IiksTj1tZShXLGFlLFkpLCFCKE4pfHxFKE4pKXJldHVybiBOO3Rocm93IGooIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfXJldHVybiB2b2lkIDA9PT1ZJiYoWT0ibnVtYmVyIiksVShhZSxZKX19LDg0MDk0OihYZSxKZSxMKT0+e3ZhciBtZT1MKDc1NTM3KSxC''@;'; put 'put ''PUwoNjk3NSk7WGUuZXhwb3J0cz1mdW5jdGlvbihFKXt2YXIgRWU9bWUoRSwic3RyaW5nIik7cmV0dXJuIEIoRWUpP0VlOkVlKyIifX0sMjc0OTA6KFhlLEplLEwpPT57dmFyIEU9e307RVtMKDI1NDYpKCJ0b1N0cmluZ1RhZyIpXT0ieiIsWGUuZXhwb3J0cz0iW29iamVjdCB6XSI9PT1TdHJp''@;'; put 'put ''bmcoRSl9LDkyMTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg3OTUyMCksQj1TdHJpbmc7WGUuZXhwb3J0cz1mdW5jdGlvbihFKXtpZigiU3ltYm9sIj09PW1lKEUpKXRocm93IFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmciKTtyZXR1cm4gQihFKX19''@;'; put 'put ''LDk0Njc2OlhlPT57dmFyIEplPVN0cmluZztYZS5leHBvcnRzPWZ1bmN0aW9uKEwpe3RyeXtyZXR1cm4gSmUoTCl9Y2F0Y2gobWUpe3JldHVybiJPYmplY3QifX19LDUyODEwOihYZSxKZSxMKT0+e3ZhciBtZT1MKDY2MTMpLEI9MCxFPU1hdGgucmFuZG9tKCksRWU9bWUoMS4udG9TdHJpbmcp''@;'; put 'put ''O1hlLmV4cG9ydHM9ZnVuY3Rpb24oVSl7cmV0dXJuIlN5bWJvbCgiKyh2b2lkIDA9PT1VPyIiOlUpKyIpXyIrRWUoKytCK0UsMzYpfX0sMjM5NjE6KFhlLEplLEwpPT57dmFyIG1lPUwoODI3NzApO1hlLmV4cG9ydHM9bWUmJiFTeW1ib2wuc2hhbSYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wu''@;'; put 'put ''aXRlcmF0b3J9LDIwMTE4OihYZSxKZSxMKT0+e3ZhciBtZT1MKDg1NjI0KSxCPUwoMjM1MjMpO1hlLmV4cG9ydHM9bWUmJkIoZnVuY3Rpb24oKXtyZXR1cm4gNDIhPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbigpe30sInByb3RvdHlwZSIse3ZhbHVlOjQyLHdyaXRhYmxlOiExfSku''@;'; put 'put ''cHJvdG90eXBlfSl9LDc5NTQ1OlhlPT57dmFyIEplPVR5cGVFcnJvcjtYZS5leHBvcnRzPWZ1bmN0aW9uKEwsbWUpe2lmKEw8bWUpdGhyb3cgSmUoIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7cmV0dXJuIEx9fSwyODExOihYZSxKZSxMKT0+e3ZhciBtZT1MKDI1NDYpO0plLmY9bWV9LDI1NDY6''@;'; put 'put ''KFhlLEplLEwpPT57dmFyIG1lPUwoNzA3MDUpLEI9TCg2ODgzNSksRT1MKDQ4ODExKSxFZT1MKDUyODEwKSxVPUwoODI3NzApLFE9TCgyMzk2MSksaj1CKCJ3a3MiKSxyZT1tZS5TeW1ib2wsYWU9cmUmJnJlLmZvcixZPVE/cmU6cmUmJnJlLndpdGhvdXRTZXR0ZXJ8fEVlO1hlLmV4cG9ydHM9''@;'; put 'put ''ZnVuY3Rpb24oVyl7aWYoIUUoaixXKXx8IVUmJiJzdHJpbmciIT10eXBlb2YgaltXXSl7dmFyIE49IlN5bWJvbC4iK1c7altXXT1VJiZFKHJlLFcpP3JlW1ddOlEmJmFlP2FlKE4pOlkoTil9cmV0dXJuIGpbV119fSw3Nzg2MzpYZT0+e1hlLmV4cG9ydHM9Ilx0XG5cdlxmXHIgXHhhMFx1MTY4''@;'; put 'put ''MFx1MjAwMFx1MjAwMVx1MjAwMlx1MjAwM1x1MjAwNFx1MjAwNVx1MjAwNlx1MjAwN1x1MjAwOFx1MjAwOVx1MjAwYVx1MjAyZlx1MjA1Zlx1MzAwMFx1MjAyOFx1MjAyOVx1ZmVmZiJ9LDMxMTIzOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg4NTY0OCksQj1MKDIzNTIzKSxF''@;'; put 'put ''PUwoMjkxMDYpLEVlPUwoNzE0OTYpLFU9TCg2ODA3MSksUT1MKDU0NDUwKSxqPUwoMjMxMjQpLHJlPUwoOTUwMDQpLGFlPUwoMzE4NTcpLFk9TCg1MTI5OCksVz1MKDI1NDYpLE49TCgyOTM4NSksdGU9VygiaXNDb25jYXRTcHJlYWRhYmxlIiksSz1OPj01MXx8IUIoZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''Y2U9W107cmV0dXJuIGNlW3RlXT0hMSxjZS5jb25jYXQoKVswXSE9PWNlfSksSj1ZKCJjb25jYXQiKSxzZT1mdW5jdGlvbihjZSl7aWYoIUVlKGNlKSlyZXR1cm4hMTt2YXIgZGU9Y2VbdGVdO3JldHVybiB2b2lkIDAhPT1kZT8hIWRlOkUoY2UpfTttZSh7dGFyZ2V0OiJBcnJheSIscHJvdG86''@;'; put 'put ''ITAsYXJpdHk6MSxmb3JjZWQ6IUt8fCFKfSx7Y29uY2F0OmZ1bmN0aW9uKGRlKXt2YXIgU2UsSWUsVGUsTWUsaGUsdmU9VSh0aGlzKSxBZT1hZSh2ZSwwKSxrZT0wO2ZvcihTZT0tMSxUZT1hcmd1bWVudHMubGVuZ3RoO1NlPFRlO1NlKyspaWYoc2UoaGU9LTE9PT1TZT92ZTphcmd1bWVudHNb''@;'; put 'put ''U2VdKSlmb3IoTWU9UShoZSksaihrZStNZSksSWU9MDtJZTxNZTtJZSsrLGtlKyspSWUgaW4gaGUmJnJlKEFlLGtlLGhlW0llXSk7ZWxzZSBqKGtlKzEpLHJlKEFlLGtlKyssaGUpO3JldHVybiBBZS5sZW5ndGg9a2UsQWV9fSl9LDI0ODA6KFhlLEplLEwpPT57dmFyIG1lPUwoODU2NDgpLEI9''@;'; put 'put ''TCg1NzE3OSksRT1MKDc0OTY1KTttZSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITB9LHtmaWxsOkJ9KSxFKCJmaWxsIil9LDM0NzcwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg4NTY0OCksQj1MKDk1NjY5KS5maWx0ZXI7bWUoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZv''@;'; put 'put ''cmNlZDohTCg1MTI5OCkoImZpbHRlciIpfSx7ZmlsdGVyOmZ1bmN0aW9uKFEpe3JldHVybiBCKHRoaXMsUSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSl9LDM1ODEwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg4NTY0OCksQj1MKDk1NjY5KS5m''@;'; put 'put ''aW5kSW5kZXgsRT1MKDc0OTY1KSxFZT0iZmluZEluZGV4IixVPSEwO0VlIGluW10mJkFycmF5KDEpW0VlXShmdW5jdGlvbigpe1U9ITF9KSxtZSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOlV9LHtmaW5kSW5kZXg6ZnVuY3Rpb24oail7cmV0dXJuIEIodGhpcyxqLGFyZ3VtZW50''@;'; put 'put ''cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSxFKEVlKX0sNTQ2Nzk6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDg1NjQ4KSxCPUwoOTU2NjkpLmZpbmQsRT1MKDc0OTY1KSxFZT0iZmluZCIsVT0hMDtFZSBpbltdJiZBcnJheSgxKVtFZV0oZnVuY3Rpb24oKXtV''@;'; put 'put ''PSExfSksbWUoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDpVfSx7ZmluZDpmdW5jdGlvbihqKXtyZXR1cm4gQih0aGlzLGosYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pLEUoRWUpfSw2OTEwOihYZSxKZSxMKT0+e3ZhciBtZT1MKDg1NjQ4KSxCPUwo''@;'; put 'put ''NjY2NjYpO21lKHt0YXJnZXQ6IkFycmF5IixzdGF0OiEwLGZvcmNlZDohTCgyNzc5MikoZnVuY3Rpb24oVSl7QXJyYXkuZnJvbShVKX0pfSx7ZnJvbTpCfSl9LDEzNDAwOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg4NTY0OCksQj1MKDM2MzA1KS5pbmNsdWRlcyxFPUwoMjM1''@;'; put 'put ''MjMpLEVlPUwoNzQ5NjUpO21lKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6RShmdW5jdGlvbigpe3JldHVybiFBcnJheSgxKS5pbmNsdWRlcygpfSl9LHtpbmNsdWRlczpmdW5jdGlvbihqKXtyZXR1cm4gQih0aGlzLGosYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2''@;'; put 'put ''b2lkIDApfX0pLEVlKCJpbmNsdWRlcyIpfSw2Mzk2NzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoODU2NDgpLEI9TCg2NjEzKSxFPUwoMzYzMDUpLmluZGV4T2YsRWU9TCg2MzEyNCksVT1CKFtdLmluZGV4T2YpLFE9ISFVJiYxL1UoWzFdLDEsLTApPDAsaj1FZSgiaW5kZXhP''@;'; put 'put ''ZiIpO21lKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6UXx8IWp9LHtpbmRleE9mOmZ1bmN0aW9uKGFlKXt2YXIgWT1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMDtyZXR1cm4gUT9VKHRoaXMsYWUsWSl8fDA6RSh0aGlzLGFlLFkpfX0pfSw1Nzk0MzooWGUs''@;'; put 'put ''SmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoNTAzMjcpLEI9TCg3NDk2NSksRT1MKDk1MjU3KSxFZT1MKDcyNyksVT1MKDUxMTgzKS5mLFE9TCgzODQ5Nyksaj1MKDEwMDE3KSxyZT1MKDg1NjI0KSxhZT0iQXJyYXkgSXRlcmF0b3IiLFk9RWUuc2V0LFc9RWUuZ2V0dGVyRm9yKGFlKTtY''@;'; put 'put ''ZS5leHBvcnRzPVEoQXJyYXksIkFycmF5IixmdW5jdGlvbih0ZSxLKXtZKHRoaXMse3R5cGU6YWUsdGFyZ2V0Om1lKHRlKSxpbmRleDowLGtpbmQ6S30pfSxmdW5jdGlvbigpe3ZhciB0ZT1XKHRoaXMpLEs9dGUudGFyZ2V0LEo9dGUua2luZCxzZT10ZS5pbmRleCsrO3JldHVybiFLfHxzZT49''@;'; put 'put ''Sy5sZW5ndGg/KHRlLnRhcmdldD12b2lkIDAse3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk6ImtleXMiPT1KP3t2YWx1ZTpzZSxkb25lOiExfToidmFsdWVzIj09Sj97dmFsdWU6S1tzZV0sZG9uZTohMX06e3ZhbHVlOltzZSxLW3NlXV0sZG9uZTohMX19LCJ2YWx1ZXMiKTt2YXIgTj1FLkFyZ3Vt''@;'; put 'put ''ZW50cz1FLkFycmF5O2lmKEIoImtleXMiKSxCKCJ2YWx1ZXMiKSxCKCJlbnRyaWVzIiksIWomJnJlJiYidmFsdWVzIiE9PU4ubmFtZSl0cnl7VShOLCJuYW1lIix7dmFsdWU6InZhbHVlcyJ9KX1jYXRjaCh0ZSl7fX0sNzY3NDk6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDg1''@;'; put 'put ''NjQ4KSxCPUwoNjYxMyksRT1MKDU2NjA3KSxFZT1MKDUwMzI3KSxVPUwoNjMxMjQpLFE9QihbXS5qb2luKSxqPUUhPU9iamVjdCxyZT1VKCJqb2luIiwiLCIpO21lKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6anx8IXJlfSx7am9pbjpmdW5jdGlvbihZKXtyZXR1cm4gUShFZSh0''@;'; put 'put ''aGlzKSx2b2lkIDA9PT1ZPyIsIjpZKX19KX0sNTgwOihYZSxKZSxMKT0+e3ZhciBtZT1MKDg1NjQ4KSxCPUwoOTYyMik7bWUoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDpCIT09W10ubGFzdEluZGV4T2Z9LHtsYXN0SW5kZXhPZjpCfSl9LDgzMDI4OihYZSxKZSxMKT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgbWU9TCg4NTY0OCksQj1MKDk1NjY5KS5tYXA7bWUoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohTCg1MTI5OCkoIm1hcCIpfSx7bWFwOmZ1bmN0aW9uKFEpe3JldHVybiBCKHRoaXMsUSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9''@;'; put 'put ''fSl9LDcxNzcyOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg4NTY0OCksQj1MKDczNzYwKS5sZWZ0LEU9TCg2MzEyNCksRWU9TCgyOTM4NSksVT1MKDg3MjQ0KTttZSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFFKCJyZWR1Y2UiKXx8IVUmJkVlPjc5JiZFZTw4''@;'; put 'put ''M30se3JlZHVjZTpmdW5jdGlvbihhZSl7dmFyIFk9YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gQih0aGlzLGFlLFksWT4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSw4MzU5MDooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoODU2NDgpLEI9TCg2NjEzKSxFPUwoMjkxMDYpLEVl''@;'; put 'put ''PUIoW10ucmV2ZXJzZSksVT1bMSwyXTttZSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOlN0cmluZyhVKT09PVN0cmluZyhVLnJldmVyc2UoKSl9LHtyZXZlcnNlOmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcykmJih0aGlzLmxlbmd0aD10aGlzLmxlbmd0aCksRWUodGhpcyl9fSl9''@;'; put 'put ''LDk3MDg3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg4NTY0OCksQj1MKDI5MTA2KSxFPUwoNDk0NTMpLEVlPUwoNzE0OTYpLFU9TCg3NjE2MyksUT1MKDU0NDUwKSxqPUwoNTAzMjcpLHJlPUwoOTUwMDQpLGFlPUwoMjU0NiksWT1MKDUxMjk4KSxXPUwoNDA5MzApLE49WSgi''@;'; put 'put ''c2xpY2UiKSx0ZT1hZSgic3BlY2llcyIpLEs9QXJyYXksSj1NYXRoLm1heDttZSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFOfSx7c2xpY2U6ZnVuY3Rpb24ob2UsY2Upe3ZhciBTZSxJZSxUZSxkZT1qKHRoaXMpLHZlPVEoZGUpLEFlPVUob2UsdmUpLGtlPVUodm9pZCAwPT09''@;'; put 'put ''Y2U/dmU6Y2UsdmUpO2lmKEIoZGUpJiYoKEUoU2U9ZGUuY29uc3RydWN0b3IpJiYoU2U9PT1LfHxCKFNlLnByb3RvdHlwZSkpfHxFZShTZSkmJm51bGw9PT0oU2U9U2VbdGVdKSkmJihTZT12b2lkIDApLFNlPT09S3x8dm9pZCAwPT09U2UpKXJldHVybiBXKGRlLEFlLGtlKTtmb3IoSWU9bmV3''@;'; put 'put ''KHZvaWQgMD09PVNlP0s6U2UpKEooa2UtQWUsMCkpLFRlPTA7QWU8a2U7QWUrKyxUZSsrKUFlIGluIGRlJiZyZShJZSxUZSxkZVtBZV0pO3JldHVybiBJZS5sZW5ndGg9VGUsSWV9fSl9LDEzMjc4OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg4NTY0OCksQj1MKDY2MTMpLEU9''@;'; put 'put ''TCg4MTQ1MCksRWU9TCg2ODA3MSksVT1MKDU0NDUwKSxRPUwoNDYyOCksaj1MKDkyMSkscmU9TCgyMzUyMyksYWU9TCgzMjU5NCksWT1MKDYzMTI0KSxXPUwoNzU3MDYpLE49TCg5ODg2KSx0ZT1MKDI5Mzg1KSxLPUwoOTYzNCksSj1bXSxzZT1CKEouc29ydCksb2U9QihKLnB1c2gpLGNlPXJl''@;'; put 'put ''KGZ1bmN0aW9uKCl7Si5zb3J0KHZvaWQgMCl9KSxkZT1yZShmdW5jdGlvbigpe0ouc29ydChudWxsKX0pLHZlPVkoInNvcnQiKSxBZT0hcmUoZnVuY3Rpb24oKXtpZih0ZSlyZXR1cm4gdGU8NzA7aWYoIShXJiZXPjMpKXtpZihOKXJldHVybiEwO2lmKEspcmV0dXJuIEs8NjAzO3ZhciBUZSxN''@;'; put 'put ''ZSxoZSxPLEllPSIiO2ZvcihUZT02NTtUZTw3NjtUZSsrKXtzd2l0Y2goTWU9U3RyaW5nLmZyb21DaGFyQ29kZShUZSksVGUpe2Nhc2UgNjY6Y2FzZSA2OTpjYXNlIDcwOmNhc2UgNzI6aGU9MzticmVhaztjYXNlIDY4OmNhc2UgNzE6aGU9NDticmVhaztkZWZhdWx0OmhlPTJ9Zm9yKE89MDtP''@;'; put 'put ''PDQ3O08rKylKLnB1c2goe2s6TWUrTyx2OmhlfSl9Zm9yKEouc29ydChmdW5jdGlvbih6LGVlKXtyZXR1cm4gZWUudi16LnZ9KSxPPTA7TzxKLmxlbmd0aDtPKyspTWU9SltPXS5rLmNoYXJBdCgwKSxJZS5jaGFyQXQoSWUubGVuZ3RoLTEpIT09TWUmJihJZSs9TWUpO3JldHVybiJER0JFRkhB''@;'; put 'put ''Q0lKSyIhPT1JZX19KTttZSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOmNlfHwhZGV8fCF2ZXx8IUFlfSx7c29ydDpmdW5jdGlvbihUZSl7dm9pZCAwIT09VGUmJkUoVGUpO3ZhciBNZT1FZSh0aGlzKTtpZihBZSlyZXR1cm4gdm9pZCAwPT09VGU/c2UoTWUpOnNlKE1lLFRlKTt2''@;'; put 'put ''YXIgeixlZSxoZT1bXSxPPVUoTWUpO2ZvcihlZT0wO2VlPE87ZWUrKyllZSBpbiBNZSYmb2UoaGUsTWVbZWVdKTtmb3IoYWUoaGUsZnVuY3Rpb24oSWUpe3JldHVybiBmdW5jdGlvbihUZSxNZSl7cmV0dXJuIHZvaWQgMD09PU1lPy0xOnZvaWQgMD09PVRlPzE6dm9pZCAwIT09SWU/K0llKFRl''@;'; put 'put ''LE1lKXx8MDpqKFRlKT5qKE1lKT8xOi0xfX0oVGUpKSx6PWhlLmxlbmd0aCxlZT0wO2VlPHo7KU1lW2VlXT1oZVtlZSsrXTtmb3IoO2VlPE87KVEoTWUsZWUrKyk7cmV0dXJuIE1lfX0pfSw1MjMxMzooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoODU2NDgpLEI9TCg2ODA3MSks''@;'; put 'put ''RT1MKDc2MTYzKSxFZT1MKDQwNzAyKSxVPUwoNTQ0NTApLFE9TCgyMzEyNCksaj1MKDMxODU3KSxyZT1MKDk1MDA0KSxhZT1MKDQ2MjgpLFc9TCg1MTI5OCkoInNwbGljZSIpLE49TWF0aC5tYXgsdGU9TWF0aC5taW47bWUoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohV30se3Nw''@;'; put 'put ''bGljZTpmdW5jdGlvbihKLHNlKXt2YXIgQWUsa2UsU2UsSWUsVGUsTWUsb2U9Qih0aGlzKSxjZT1VKG9lKSxkZT1FKEosY2UpLHZlPWFyZ3VtZW50cy5sZW5ndGg7Zm9yKDA9PT12ZT9BZT1rZT0wOjE9PT12ZT8oQWU9MCxrZT1jZS1kZSk6KEFlPXZlLTIsa2U9dGUoTihFZShzZSksMCksY2Ut''@;'; put 'put ''ZGUpKSxRKGNlK0FlLWtlKSxTZT1qKG9lLGtlKSxJZT0wO0llPGtlO0llKyspKFRlPWRlK0llKWluIG9lJiZyZShTZSxJZSxvZVtUZV0pO2lmKFNlLmxlbmd0aD1rZSxBZTxrZSl7Zm9yKEllPWRlO0llPGNlLWtlO0llKyspTWU9SWUrQWUsKFRlPUllK2tlKWluIG9lP29lW01lXT1vZVtUZV06''@;'; put 'put ''YWUob2UsTWUpO2ZvcihJZT1jZTtJZT5jZS1rZStBZTtJZS0tKWFlKG9lLEllLTEpfWVsc2UgaWYoQWU+a2UpZm9yKEllPWNlLWtlO0llPmRlO0llLS0pTWU9SWUrQWUtMSwoVGU9SWUra2UtMSlpbiBvZT9vZVtNZV09b2VbVGVdOmFlKG9lLE1lKTtmb3IoSWU9MDtJZTxBZTtJZSsrKW9lW0ll''@;'; put 'put ''K2RlXT1hcmd1bWVudHNbSWUrMl07cmV0dXJuIG9lLmxlbmd0aD1jZS1rZStBZSxTZX19KX0sMTgxNTg6KFhlLEplLEwpPT57dmFyIG1lPUwoODU2MjQpLEI9TCgxMzg2OSkuRVhJU1RTLEU9TCg2NjEzKSxFZT1MKDUxMTgzKS5mLFU9RnVuY3Rpb24ucHJvdG90eXBlLFE9RShVLnRvU3RyaW5n''@;'; put 'put ''KSxqPS9mdW5jdGlvblxiKD86XHN8XC9cKltcU1xzXSo/XCpcL3xcL1wvW15cblxyXSpbXG5ccl0rKSooW15ccygvXSopLyxyZT1FKGouZXhlYyk7bWUmJiFCJiZFZShVLCJuYW1lIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3RyeXtyZXR1cm4gcmUoaixRKHRoaXMpKVsxXX1j''@;'; put 'put ''YXRjaChZKXtyZXR1cm4iIn19fSl9LDEzMDA2OihYZSxKZSxMKT0+e3ZhciBtZT1MKDg1NjQ4KSxCPUwoNDY2OTMpLEU9TCgxMTMwNiksRWU9TCgzNTYyKSxVPUwoNjYxMyksUT1MKDIzNTIzKSxqPUwoMjkxMDYpLHJlPUwoMTIwMTQpLGFlPUwoNzE0OTYpLFk9TCg2OTc1KSxXPUwoNDA5MzAp''@;'; put 'put ''LE49TCg4Mjc3MCksdGU9QigiSlNPTiIsInN0cmluZ2lmeSIpLEs9VSgvLi8uZXhlYyksSj1VKCIiLmNoYXJBdCksc2U9VSgiIi5jaGFyQ29kZUF0KSxvZT1VKCIiLnJlcGxhY2UpLGNlPVUoMS4udG9TdHJpbmcpLGRlPS9bXHVEODAwLVx1REZGRl0vZyx2ZT0vXltcdUQ4MDAtXHVEQkZGXSQv''@;'; put 'put ''LEFlPS9eW1x1REMwMC1cdURGRkZdJC8sa2U9IU58fFEoZnVuY3Rpb24oKXt2YXIgTWU9QigiU3ltYm9sIikoKTtyZXR1cm4iW251bGxdIiE9dGUoW01lXSl8fCJ7fSIhPXRlKHthOk1lfSl8fCJ7fSIhPXRlKE9iamVjdChNZSkpfSksU2U9UShmdW5jdGlvbigpe3JldHVybiciXFx1ZGYwNlxc''@;'; put 'put ''dWQ4MzQiJyE9PXRlKCJcdWRmMDZcdWQ4MzQiKXx8JyJcXHVkZWFkIichPT10ZSgiXHVkZWFkIil9KSxJZT1mdW5jdGlvbihNZSxoZSl7dmFyIE89Vyhhcmd1bWVudHMpLHo9aGU7aWYoKGFlKGhlKXx8dm9pZCAwIT09TWUpJiYhWShNZSkpcmV0dXJuIGooaGUpfHwoaGU9ZnVuY3Rpb24oZWUs''@;'; put 'put ''bmUpe2lmKHJlKHopJiYobmU9RWUoeix0aGlzLGVlLG5lKSksIVkobmUpKXJldHVybiBuZX0pLE9bMV09aGUsRSh0ZSxudWxsLE8pfSxUZT1mdW5jdGlvbihNZSxoZSxPKXt2YXIgej1KKE8saGUtMSksZWU9SihPLGhlKzEpO3JldHVybiBLKHZlLE1lKSYmIUsoQWUsZWUpfHxLKEFlLE1lKSYm''@;'; put 'put ''IUsodmUseik/IlxcdSIrY2Uoc2UoTWUsMCksMTYpOk1lfTt0ZSYmbWUoe3RhcmdldDoiSlNPTiIsc3RhdDohMCxhcml0eTozLGZvcmNlZDprZXx8U2V9LHtzdHJpbmdpZnk6ZnVuY3Rpb24oaGUsTyx6KXt2YXIgZWU9Vyhhcmd1bWVudHMpLG5lPUUoa2U/SWU6dGUsbnVsbCxlZSk7cmV0dXJu''@;'; put 'put ''IFNlJiYic3RyaW5nIj09dHlwZW9mIG5lP29lKG5lLGRlLFRlKTpuZX19KX0sODg3NjI6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO0woNDY4NTcpKCJNYXAiLGZ1bmN0aW9uKEUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsYXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06''@;'; put 'put ''dm9pZCAwKX19LEwoNDUxNDApKX0sOTY2NDooWGUsSmUsTCk9PntMKDg4NzYyKX0sNjQ5NTI6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDg1NjI0KSxCPUwoNzA3MDUpLEU9TCg2NjEzKSxFZT1MKDY3NTA3KSxVPUwoMjU2NjYpLFE9TCg0ODgxMSksaj1MKDUxODQ5KSxyZT1M''@;'; put 'put ''KDM3NDc0KSxhZT1MKDY5NzUpLFk9TCg3NTUzNyksVz1MKDIzNTIzKSxOPUwoNzU0MzEpLmYsdGU9TCg0Nzk4NykuZixLPUwoNTExODMpLmYsSj1MKDE0MjYpLHNlPUwoOTMxNjYpLnRyaW0sb2U9Ik51bWJlciIsY2U9QltvZV0sZGU9Y2UucHJvdG90eXBlLHZlPUIuVHlwZUVycm9yLEFlPUUo''@;'; put 'put ''IiIuc2xpY2UpLGtlPUUoIiIuY2hhckNvZGVBdCksU2U9ZnVuY3Rpb24oeil7dmFyIGVlPVkoeiwibnVtYmVyIik7cmV0dXJuImJpZ2ludCI9PXR5cGVvZiBlZT9lZTpJZShlZSl9LEllPWZ1bmN0aW9uKHope3ZhciBuZSx4LFAsVixULFMsRix5ZSxlZT1ZKHosIm51bWJlciIpO2lmKGFlKGVl''@;'; put 'put ''KSl0aHJvdyB2ZSgiQ2Fubm90IGNvbnZlcnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBudW1iZXIiKTtpZigic3RyaW5nIj09dHlwZW9mIGVlJiZlZS5sZW5ndGg+MilpZihlZT1zZShlZSksNDM9PT0obmU9a2UoZWUsMCkpfHw0NT09PW5lKXtpZig4OD09PSh4PWtlKGVlLDIpKXx8MTIwPT09eCly''@;'; put 'put ''ZXR1cm4gTmFOfWVsc2UgaWYoNDg9PT1uZSl7c3dpdGNoKGtlKGVlLDEpKXtjYXNlIDY2OmNhc2UgOTg6UD0yLFY9NDk7YnJlYWs7Y2FzZSA3OTpjYXNlIDExMTpQPTgsVj01NTticmVhaztkZWZhdWx0OnJldHVybitlZX1mb3IoUz0oVD1BZShlZSwyKSkubGVuZ3RoLEY9MDtGPFM7RisrKWlm''@;'; put 'put ''KCh5ZT1rZShULEYpKTw0OHx8eWU+VilyZXR1cm4gTmFOO3JldHVybiBwYXJzZUludChULFApfXJldHVybitlZX07aWYoRWUob2UsIWNlKCIgMG8xIil8fCFjZSgiMGIxIil8fGNlKCIrMHgxIikpKXtmb3IodmFyIE8sVGU9ZnVuY3Rpb24oZWUpe3ZhciBuZT1hcmd1bWVudHMubGVuZ3RoPDE/''@;'; put 'put ''MDpjZShTZShlZSkpLHg9dGhpcztyZXR1cm4gcmUoZGUseCkmJlcoZnVuY3Rpb24oKXtKKHgpfSk/aihPYmplY3QobmUpLHgsVGUpOm5lfSxNZT1tZT9OKGNlKToiTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksRVBTSUxPTixNQVhf''@;'; put 'put ''U0FGRV9JTlRFR0VSLE1JTl9TQUZFX0lOVEVHRVIsaXNGaW5pdGUsaXNJbnRlZ2VyLGlzTmFOLGlzU2FmZUludGVnZXIscGFyc2VGbG9hdCxwYXJzZUludCxmcm9tU3RyaW5nLHJhbmdlIi5zcGxpdCgiLCIpLGhlPTA7TWUubGVuZ3RoPmhlO2hlKyspUShjZSxPPU1lW2hlXSkmJiFRKFRlLE8p''@;'; put 'put ''JiZLKFRlLE8sdGUoY2UsTykpO1RlLnByb3RvdHlwZT1kZSxkZS5jb25zdHJ1Y3Rvcj1UZSxVKEIsb2UsVGUse2NvbnN0cnVjdG9yOiEwfSl9fSw3MDg2NDooWGUsSmUsTCk9PntMKDg1NjQ4KSh7dGFyZ2V0OiJOdW1iZXIiLHN0YXQ6ITB9LHtpc0ludGVnZXI6TCgzMDQyKX0pfSw0MjE0MDoo''@;'; put 'put ''WGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoODU2NDgpLEI9TCg2NjEzKSxFPUwoNDA3MDIpLEVlPUwoMTQyNiksVT1MKDQ1OTYwKSxRPUwoMjM1MjMpLGo9UmFuZ2VFcnJvcixyZT1TdHJpbmcsYWU9TWF0aC5mbG9vcixZPUIoVSksVz1CKCIiLnNsaWNlKSxOPUIoMS4udG9GaXhl''@;'; put 'put ''ZCksdGU9ZnVuY3Rpb24oZGUsdmUsQWUpe3JldHVybiAwPT09dmU/QWU6dmUlMj09MT90ZShkZSx2ZS0xLEFlKmRlKTp0ZShkZSpkZSx2ZS8yLEFlKX0sSj1mdW5jdGlvbihkZSx2ZSxBZSl7Zm9yKHZhciBrZT0tMSxTZT1BZTsrK2tlPDY7KWRlW2tlXT0oU2UrPXZlKmRlW2tlXSklMWU3LFNl''@;'; put 'put ''PWFlKFNlLzFlNyl9LHNlPWZ1bmN0aW9uKGRlLHZlKXtmb3IodmFyIEFlPTYsa2U9MDstLUFlPj0wOylkZVtBZV09YWUoKGtlKz1kZVtBZV0pL3ZlKSxrZT1rZSV2ZSoxZTd9LG9lPWZ1bmN0aW9uKGRlKXtmb3IodmFyIHZlPTYsQWU9IiI7LS12ZT49MDspaWYoIiIhPT1BZXx8MD09PXZlfHww''@;'; put 'put ''IT09ZGVbdmVdKXt2YXIga2U9cmUoZGVbdmVdKTtBZT0iIj09PUFlP2tlOkFlK1koIjAiLDcta2UubGVuZ3RoKStrZX1yZXR1cm4gQWV9O21lKHt0YXJnZXQ6Ik51bWJlciIscHJvdG86ITAsZm9yY2VkOlEoZnVuY3Rpb24oKXtyZXR1cm4iMC4wMDAiIT09Tig4ZS01LDMpfHwiMSIhPT1OKC45''@;'; put 'put ''LDApfHwiMS4yNSIhPT1OKDEuMjU1LDIpfHwiMTAwMDAwMDAwMDAwMDAwMDEyOCIhPT1OKDB4ZGUwYjZiM2E3NjQwMDgwLDApfSl8fCFRKGZ1bmN0aW9uKCl7Tih7fSl9KX0se3RvRml4ZWQ6ZnVuY3Rpb24odmUpe3ZhciBNZSxoZSxPLHosQWU9RWUodGhpcyksa2U9RSh2ZSksU2U9WzAsMCww''@;'; put 'put ''LDAsMCwwXSxJZT0iIixUZT0iMCI7aWYoa2U8MHx8a2U+MjApdGhyb3cgaigiSW5jb3JyZWN0IGZyYWN0aW9uIGRpZ2l0cyIpO2lmKEFlIT1BZSlyZXR1cm4iTmFOIjtpZihBZTw9LTFlMjF8fEFlPj0xZTIxKXJldHVybiByZShBZSk7aWYoQWU8MCYmKEllPSItIixBZT0tQWUpLEFlPjFlLTIx''@;'; put 'put ''KWlmKE1lPWZ1bmN0aW9uKGRlKXtmb3IodmFyIHZlPTAsQWU9ZGU7QWU+PTQwOTY7KXZlKz0xMixBZS89NDA5Njtmb3IoO0FlPj0yOyl2ZSs9MSxBZS89MjtyZXR1cm4gdmV9KEFlKnRlKDIsNjksMSkpLTY5LGhlPU1lPDA/QWUqdGUoMiwtTWUsMSk6QWUvdGUoMixNZSwxKSxoZSo9NDUwMzU5''@;'; put 'put ''OTYyNzM3MDQ5NiwoTWU9NTItTWUpPjApe2ZvcihKKFNlLDAsaGUpLE89a2U7Tz49NzspSihTZSwxZTcsMCksTy09Nztmb3IoSihTZSx0ZSgxMCxPLDEpLDApLE89TWUtMTtPPj0yMzspc2UoU2UsMTw8MjMpLE8tPTIzO3NlKFNlLDE8PE8pLEooU2UsMSwxKSxzZShTZSwyKSxUZT1vZShTZSl9''@;'; put 'put ''ZWxzZSBKKFNlLDAsaGUpLEooU2UsMTw8LU1lLDApLFRlPW9lKFNlKStZKCIwIixrZSk7cmV0dXJuIFRlPWtlPjA/SWUrKCh6PVRlLmxlbmd0aCk8PWtlPyIwLiIrWSgiMCIsa2UteikrVGU6VyhUZSwwLHota2UpKyIuIitXKFRlLHota2UpKTpJZStUZX19KX0sMzM0NzA6KFhlLEplLEwpPT57''@;'; put 'put ''dmFyIG1lPUwoODU2NDgpLEI9TCg0Nzk1OSk7bWUoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGFyaXR5OjIsZm9yY2VkOk9iamVjdC5hc3NpZ24hPT1CfSx7YXNzaWduOkJ9KX0sODI3NTY6KFhlLEplLEwpPT57dmFyIG1lPUwoODU2NDgpLEI9TCgxMjU2NiksRT1MKDIzNTIzKSxFZT1MKDcx''@;'; put 'put ''NDk2KSxVPUwoNzE4MzIpLm9uRnJlZXplLFE9T2JqZWN0LmZyZWV6ZTttZSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOkUoZnVuY3Rpb24oKXtRKDEpfSksc2hhbTohQn0se2ZyZWV6ZTpmdW5jdGlvbihhZSl7cmV0dXJuIFEmJkVlKGFlKT9RKFUoYWUpKTphZX19KX0sNTQ3NDA6''@;'; put 'put ''KFhlLEplLEwpPT57dmFyIG1lPUwoODU2NDgpLEI9TCgyMzUyMyksRT1MKDUwMzI3KSxFZT1MKDQ3OTg3KS5mLFU9TCg4NTYyNCksUT1CKGZ1bmN0aW9uKCl7RWUoMSl9KTttZSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFVfHxRLHNoYW06IVV9LHtnZXRPd25Qcm9wZXJ0eURl''@;'; put 'put ''c2NyaXB0b3I6ZnVuY3Rpb24oYWUsWSl7cmV0dXJuIEVlKEUoYWUpLFkpfX0pfSw1NTYxNTooWGUsSmUsTCk9Pnt2YXIgbWU9TCg4NTY0OCksQj1MKDg1NjI0KSxFPUwoMjExOTkpLEVlPUwoNTAzMjcpLFU9TCg0Nzk4NyksUT1MKDk1MDA0KTttZSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAs''@;'; put 'put ''c2hhbTohQn0se2dldE93blByb3BlcnR5RGVzY3JpcHRvcnM6ZnVuY3Rpb24ocmUpe2Zvcih2YXIgSyxKLGFlPUVlKHJlKSxZPVUuZixXPUUoYWUpLE49e30sdGU9MDtXLmxlbmd0aD50ZTspdm9pZCAwIT09KEo9WShhZSxLPVdbdGUrK10pKSYmUShOLEssSik7cmV0dXJuIE59fSl9LDQzOTk6''@;'; put 'put ''KFhlLEplLEwpPT57dmFyIG1lPUwoODU2NDgpLEI9TCgyMzUyMyksRT1MKDM1ODA4KS5mO21lKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6QihmdW5jdGlvbigpe3JldHVybiFPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcygxKX0pfSx7Z2V0T3duUHJvcGVydHlOYW1lczpFfSl9''@;'; put 'put ''LDYzMTk4OihYZSxKZSxMKT0+e3ZhciBtZT1MKDg1NjQ4KSxCPUwoODI3NzApLEU9TCgyMzUyMyksRWU9TCg1NTM0KSxVPUwoNjgwNzEpO21lKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6IUJ8fEUoZnVuY3Rpb24oKXtFZS5mKDEpfSl9LHtnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6''@;'; put 'put ''ZnVuY3Rpb24ocmUpe3ZhciBhZT1FZS5mO3JldHVybiBhZT9hZShVKHJlKSk6W119fSl9LDI4NzY0OihYZSxKZSxMKT0+e3ZhciBtZT1MKDg1NjQ4KSxCPUwoMjM1MjMpLEU9TCg2ODA3MSksRWU9TCg4MjczMyksVT1MKDQ2MDg2KTttZSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2Vk''@;'; put 'put ''OkIoZnVuY3Rpb24oKXtFZSgxKX0pLHNoYW06IVV9LHtnZXRQcm90b3R5cGVPZjpmdW5jdGlvbihyZSl7cmV0dXJuIEVlKEUocmUpKX19KX0sOTYyNTE6KFhlLEplLEwpPT57dmFyIG1lPUwoODU2NDgpLEI9TCg2ODA3MSksRT1MKDE0NTQ1KTttZSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAs''@;'; put 'put ''Zm9yY2VkOkwoMjM1MjMpKGZ1bmN0aW9uKCl7RSgxKX0pfSx7a2V5czpmdW5jdGlvbihqKXtyZXR1cm4gRShCKGopKX19KX0sMTYxNjE6KFhlLEplLEwpPT57TCg4NTY0OCkoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwfSx7c2V0UHJvdG90eXBlT2Y6TCgxOTU4Nyl9KX0sMjA2NDc6KFhlLEpl''@;'; put 'put ''LEwpPT57dmFyIG1lPUwoMjc0OTApLEI9TCgyNTY2NiksRT1MKDc3MDUpO21lfHxCKE9iamVjdC5wcm90b3R5cGUsInRvU3RyaW5nIixFLHt1bnNhZmU6ITB9KX0sODM4NTc6KFhlLEplLEwpPT57dmFyIG1lPUwoODU2NDgpLEI9TCg0NDU4MikudmFsdWVzO21lKHt0YXJnZXQ6Ik9iamVjdCIs''@;'; put 'put ''c3RhdDohMH0se3ZhbHVlczpmdW5jdGlvbihFZSl7cmV0dXJuIEIoRWUpfX0pfSw5MTY4MzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg4NTY0OCksQj1MKDQ2NjkzKSxFPUwoMTEzMDYpLEVlPUwoNjk4OSksVT1MKDU2NTgxKSxRPUwoNTg2NDcpLGo9TCg3MTQ5NikscmU9TCg3NDQxMCksYWU9TCgy''@;'; put 'put ''MzUyMyksWT1CKCJSZWZsZWN0IiwiY29uc3RydWN0IiksVz1PYmplY3QucHJvdG90eXBlLE49W10ucHVzaCx0ZT1hZShmdW5jdGlvbigpe2Z1bmN0aW9uIHNlKCl7fXJldHVybiEoWShmdW5jdGlvbigpe30sW10sc2UpaW5zdGFuY2VvZiBzZSl9KSxLPSFhZShmdW5jdGlvbigpe1koZnVuY3Rp''@;'; put 'put ''b24oKXt9KX0pLEo9dGV8fEs7bWUoe3RhcmdldDoiUmVmbGVjdCIsc3RhdDohMCxmb3JjZWQ6SixzaGFtOkp9LHtjb25zdHJ1Y3Q6ZnVuY3Rpb24ob2UsY2Upe1Uob2UpLFEoY2UpO3ZhciBkZT1hcmd1bWVudHMubGVuZ3RoPDM/b2U6VShhcmd1bWVudHNbMl0pO2lmKEsmJiF0ZSlyZXR1cm4g''@;'; put 'put ''WShvZSxjZSxkZSk7aWYob2U9PWRlKXtzd2l0Y2goY2UubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyBvZTtjYXNlIDE6cmV0dXJuIG5ldyBvZShjZVswXSk7Y2FzZSAyOnJldHVybiBuZXcgb2UoY2VbMF0sY2VbMV0pO2Nhc2UgMzpyZXR1cm4gbmV3IG9lKGNlWzBdLGNlWzFdLGNlWzJdKTtj''@;'; put 'put ''YXNlIDQ6cmV0dXJuIG5ldyBvZShjZVswXSxjZVsxXSxjZVsyXSxjZVszXSl9dmFyIHZlPVtudWxsXTtyZXR1cm4gRShOLHZlLGNlKSxuZXcoRShFZSxvZSx2ZSkpfXZhciBBZT1kZS5wcm90b3R5cGUsa2U9cmUoaihBZSk/QWU6VyksU2U9RShvZSxrZSxjZSk7cmV0dXJuIGooU2UpP1NlOmtl''@;'; put 'put ''fX0pfSwyMDI3MzooWGUsSmUsTCk9Pnt2YXIgbWU9TCg4NTY0OCksQj1MKDM1NjIpLEU9TCg3MTQ5NiksRWU9TCg1ODY0NyksVT1MKDE0MTI1KSxRPUwoNDc5ODcpLGo9TCg4MjczMyk7bWUoe3RhcmdldDoiUmVmbGVjdCIsc3RhdDohMH0se2dldDpmdW5jdGlvbiByZShhZSxZKXt2YXIgTix0''@;'; put 'put ''ZSxXPWFyZ3VtZW50cy5sZW5ndGg8Mz9hZTphcmd1bWVudHNbMl07cmV0dXJuIEVlKGFlKT09PVc/YWVbWV06KE49US5mKGFlLFkpKT9VKE4pP04udmFsdWU6dm9pZCAwPT09Ti5nZXQ/dm9pZCAwOkIoTi5nZXQsVyk6RSh0ZT1qKGFlKSk/cmUodGUsWSxXKTp2b2lkIDB9fSl9LDE2ODI1OihY''@;'; put 'put ''ZSxKZSxMKT0+e3ZhciBtZT1MKDg1NjI0KSxCPUwoNzA3MDUpLEU9TCg2NjEzKSxFZT1MKDY3NTA3KSxVPUwoNTE4NDkpLFE9TCgxNjAxNyksaj1MKDc1NDMxKS5mLHJlPUwoMzc0NzQpLGFlPUwoNDE4MDQpLFk9TCg5MjEpLFc9TCg4MTYyMCksTj1MKDk3MTg5KSx0ZT1MKDc4ODApLEs9TCgy''@;'; put 'put ''NTY2NiksSj1MKDIzNTIzKSxzZT1MKDQ4ODExKSxvZT1MKDcyNykuZW5mb3JjZSxjZT1MKDY4MzE1KSxkZT1MKDI1NDYpLHZlPUwoNDMxODYpLEFlPUwoNTE5NDkpLGtlPWRlKCJtYXRjaCIpLFNlPUIuUmVnRXhwLEllPVNlLnByb3RvdHlwZSxUZT1CLlN5bnRheEVycm9yLE1lPUUoSWUuZXhl''@;'; put 'put ''YyksaGU9RSgiIi5jaGFyQXQpLE89RSgiIi5yZXBsYWNlKSx6PUUoIiIuaW5kZXhPZiksZWU9RSgiIi5zbGljZSksbmU9L15cPzxbXlxzXGQhIyUmKis8PT5AXl1bXlxzISMlJiorPD0+QF5dKj4vLHg9L2EvZyxQPS9hL2csVj1uZXcgU2UoeCkhPT14LFQ9Ti5NSVNTRURfU1RJQ0tZLFM9Ti5V''@;'; put 'put ''TlNVUFBPUlRFRF9ZO2lmKEVlKCJSZWdFeHAiLG1lJiYoIVZ8fFR8fHZlfHxBZXx8SihmdW5jdGlvbigpe3JldHVybiBQW2tlXT0hMSxTZSh4KSE9eHx8U2UoUCk9PVB8fCIvYS9pIiE9U2UoeCwiaSIpfSkpKSl7Zm9yKHZhciBEZT1mdW5jdGlvbihndCx3dCl7dmFyIG9uLF90LHR0LGV0LGx0''@;'; put 'put ''LEx0LG10PXJlKEllLHRoaXMpLHZ0PWFlKGd0KSxBdD12b2lkIDA9PT13dCxodD1bXSxCdD1ndDtpZighbXQmJnZ0JiZBdCYmZ3QuY29uc3RydWN0b3I9PT1EZSlyZXR1cm4gZ3Q7aWYoKHZ0fHxyZShJZSxndCkpJiYoZ3Q9Z3Quc291cmNlLEF0JiYod3Q9VyhCdCkpKSxndD12b2lkIDA9PT1n''@;'; put 'put ''dD8iIjpZKGd0KSx3dD12b2lkIDA9PT13dD8iIjpZKHd0KSxCdD1ndCx2ZSYmImRvdEFsbCJpbiB4JiYoX3Q9ISF3dCYmeih3dCwicyIpPi0xKSYmKHd0PU8od3QsL3MvZywiIikpLG9uPXd0LFQmJiJzdGlja3kiaW4geCYmKHR0PSEhd3QmJnood3QsInkiKT4tMSkmJlMmJih3dD1PKHd0LC95''@;'; put 'put ''L2csIiIpKSxBZSYmKGV0PWZ1bmN0aW9uKCRlKXtmb3IodmFyIHR0LGd0PSRlLmxlbmd0aCx3dD0wLG10PSIiLHZ0PVtdLEF0PXt9LGh0PSExLEJ0PSExLG9uPTAsX3Q9IiI7d3Q8PWd0O3d0Kyspe2lmKCJcXCI9PT0odHQ9aGUoJGUsd3QpKSl0dCs9aGUoJGUsKyt3dCk7ZWxzZSBpZigiXSI9''@;'; put 'put ''PT10dClodD0hMTtlbHNlIGlmKCFodClzd2l0Y2goITApe2Nhc2UiWyI9PT10dDpodD0hMDticmVhaztjYXNlIigiPT09dHQ6TWUobmUsZWUoJGUsd3QrMSkpJiYod3QrPTIsQnQ9ITApLG10Kz10dCxvbisrO2NvbnRpbnVlO2Nhc2UiPiI9PT10dCYmQnQ6aWYoIiI9PT1fdHx8c2UoQXQsX3Qp''@;'; put 'put ''KXRocm93IG5ldyBUZSgiSW52YWxpZCBjYXB0dXJlIGdyb3VwIG5hbWUiKTtBdFtfdF09ITAsdnRbdnQubGVuZ3RoXT1bX3Qsb25dLEJ0PSExLF90PSIiO2NvbnRpbnVlfUJ0P190Kz10dDptdCs9dHR9cmV0dXJuW210LHZ0XX0oZ3QpLGd0PWV0WzBdLGh0PWV0WzFdKSxsdD1VKFNlKGd0LHd0''@;'; put 'put ''KSxtdD90aGlzOkllLERlKSwoX3R8fHR0fHxodC5sZW5ndGgpJiYoTHQ9b2UobHQpLF90JiYoTHQuZG90QWxsPSEwLEx0LnJhdz1EZShmdW5jdGlvbigkZSl7Zm9yKHZhciBBdCxndD0kZS5sZW5ndGgsd3Q9MCxtdD0iIix2dD0hMTt3dDw9Z3Q7d3QrKykiXFwiIT09KEF0PWhlKCRlLHd0KSk/''@;'; put 'put ''dnR8fCIuIiE9PUF0PygiWyI9PT1BdD92dD0hMDoiXSI9PT1BdCYmKHZ0PSExKSxtdCs9QXQpOm10Kz0iW1xcc1xcU10iOm10Kz1BdCtoZSgkZSwrK3d0KTtyZXR1cm4gbXR9KGd0KSxvbikpLHR0JiYoTHQuc3RpY2t5PSEwKSxodC5sZW5ndGgmJihMdC5ncm91cHM9aHQpKSxndCE9PUJ0KXRy''@;'; put 'put ''eXtRKGx0LCJzb3VyY2UiLCIiPT09QnQ/Iig/OikiOkJ0KX1jYXRjaChDdCl7fXJldHVybiBsdH0sUGU9aihTZSksUWU9MDtQZS5sZW5ndGg+UWU7KXRlKERlLFNlLFBlW1FlKytdKTtJZS5jb25zdHJ1Y3Rvcj1EZSxEZS5wcm90b3R5cGU9SWUsSyhCLCJSZWdFeHAiLERlLHtjb25zdHJ1Y3Rv''@;'; put 'put ''cjohMH0pfWNlKCJSZWdFeHAiKX0sNDI3NjA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDg1NjQ4KSxCPUwoMjIyMzQpO21lKHt0YXJnZXQ6IlJlZ0V4cCIscHJvdG86ITAsZm9yY2VkOi8uLy5leGVjIT09Qn0se2V4ZWM6Qn0pfSwzMDU3MTooWGUsSmUsTCk9PnsidXNlIHN0''@;'; put 'put ''cmljdCI7dmFyIG1lPUwoMTM4NjkpLlBST1BFUixCPUwoMjU2NjYpLEU9TCg1ODY0NyksRWU9TCg5MjEpLFU9TCgyMzUyMyksUT1MKDgxNjIwKSxqPSJ0b1N0cmluZyIsYWU9UmVnRXhwLnByb3RvdHlwZVtqXTsoVShmdW5jdGlvbigpe3JldHVybiIvYS9iIiE9YWUuY2FsbCh7c291cmNlOiJh''@;'; put 'put ''IixmbGFnczoiYiJ9KX0pfHxtZSYmYWUubmFtZSE9aikmJkIoUmVnRXhwLnByb3RvdHlwZSxqLGZ1bmN0aW9uKCl7dmFyIHRlPUUodGhpcyk7cmV0dXJuIi8iK0VlKHRlLnNvdXJjZSkrIi8iK0VlKFEodGUpKX0se3Vuc2FmZTohMH0pfSw4MDA2OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtM''@;'; put 'put ''KDQ2ODU3KSgiU2V0IixmdW5jdGlvbihFKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSxMKDQ1MTQwKSl9LDE4MzIzOihYZSxKZSxMKT0+e0woODAwNil9LDE2NjYxOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0''@;'; put 'put ''Ijt2YXIgbWU9TCg4NTY0OCksQj1MKDc1MDU4KS5jb2RlQXQ7bWUoe3RhcmdldDoiU3RyaW5nIixwcm90bzohMH0se2NvZGVQb2ludEF0OmZ1bmN0aW9uKEVlKXtyZXR1cm4gQih0aGlzLEVlKX19KX0sMzc0OTk6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBKLG1lPUwoODU2NDgpLEI9''@;'; put 'put ''TCg2NjEzKSxFPUwoNDc5ODcpLmYsRWU9TCg2NTMxNiksVT1MKDkyMSksUT1MKDQxOTYxKSxqPUwoMjQ1NzIpLHJlPUwoNzY1NzEpLGFlPUwoMTAwMTcpLFk9QigiIi5lbmRzV2l0aCksVz1CKCIiLnNsaWNlKSxOPU1hdGgubWluLHRlPXJlKCJlbmRzV2l0aCIpO21lKHt0YXJnZXQ6IlN0cmlu''@;'; put 'put ''ZyIscHJvdG86ITAsZm9yY2VkOiEoIWFlJiYhdGUmJihKPUUoU3RyaW5nLnByb3RvdHlwZSwiZW5kc1dpdGgiKSxKJiYhSi53cml0YWJsZSl8fHRlKX0se2VuZHNXaXRoOmZ1bmN0aW9uKHNlKXt2YXIgb2U9VShqKHRoaXMpKTtRKHNlKTt2YXIgY2U9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3Vt''@;'; put 'put ''ZW50c1sxXTp2b2lkIDAsZGU9b2UubGVuZ3RoLHZlPXZvaWQgMD09PWNlP2RlOk4oRWUoY2UpLGRlKSxBZT1VKHNlKTtyZXR1cm4gWT9ZKG9lLEFlLHZlKTpXKG9lLHZlLUFlLmxlbmd0aCx2ZSk9PT1BZX19KX0sNDUxMzU6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDg1NjQ4''@;'; put 'put ''KSxCPUwoNjYxMyksRT1MKDQxOTYxKSxFZT1MKDI0NTcyKSxVPUwoOTIxKSxRPUwoNzY1NzEpLGo9QigiIi5pbmRleE9mKTttZSh7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDohUSgiaW5jbHVkZXMiKX0se2luY2x1ZGVzOmZ1bmN0aW9uKGFlKXtyZXR1cm4hIX5qKFUoRWUodGhp''@;'; put 'put ''cykpLFUoRShhZSkpLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KX0sNTM5NTA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDc1MDU4KS5jaGFyQXQsQj1MKDkyMSksRT1MKDcyNyksRWU9TCgzODQ5NyksVT0iU3RyaW5nIEl0ZXJhdG9yIixRPUUu''@;'; put 'put ''c2V0LGo9RS5nZXR0ZXJGb3IoVSk7RWUoU3RyaW5nLCJTdHJpbmciLGZ1bmN0aW9uKHJlKXtRKHRoaXMse3R5cGU6VSxzdHJpbmc6QihyZSksaW5kZXg6MH0pfSxmdW5jdGlvbigpe3ZhciBOLGFlPWoodGhpcyksWT1hZS5zdHJpbmcsVz1hZS5pbmRleDtyZXR1cm4gVz49WS5sZW5ndGg/e3Zh''@;'; put 'put ''bHVlOnZvaWQgMCxkb25lOiEwfTooTj1tZShZLFcpLGFlLmluZGV4Kz1OLmxlbmd0aCx7dmFsdWU6Tixkb25lOiExfSl9KX0sNDkyOTU6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDg1NjQ4KSxCPUwoOTUxMTApO21lKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2Vk''@;'; put 'put ''OkwoOTc4MTgpKCJsaW5rIil9LHtsaW5rOmZ1bmN0aW9uKFUpe3JldHVybiBCKHRoaXMsImEiLCJocmVmIixVKX19KX0sMjc2MjooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoMzU2MiksQj1MKDIyODE0KSxFPUwoNTg2NDcpLEVlPUwoNjUzMTYpLFU9TCg5MjEpLFE9TCgyNDU3''@;'; put 'put ''Miksaj1MKDIwOTQ4KSxyZT1MKDYxNjc2KSxhZT1MKDU4MTI2KTtCKCJtYXRjaCIsZnVuY3Rpb24oWSxXLE4pe3JldHVybltmdW5jdGlvbihLKXt2YXIgSj1RKHRoaXMpLHNlPW51bGw9PUs/dm9pZCAwOmooSyxZKTtyZXR1cm4gc2U/bWUoc2UsSyxKKTpuZXcgUmVnRXhwKEspW1ldKFUoSikp''@;'; put 'put ''fSxmdW5jdGlvbih0ZSl7dmFyIEs9RSh0aGlzKSxKPVUodGUpLHNlPU4oVyxLLEopO2lmKHNlLmRvbmUpcmV0dXJuIHNlLnZhbHVlO2lmKCFLLmdsb2JhbClyZXR1cm4gYWUoSyxKKTt2YXIgb2U9Sy51bmljb2RlO0subGFzdEluZGV4PTA7Zm9yKHZhciB2ZSxjZT1bXSxkZT0wO251bGwhPT0o''@;'; put 'put ''dmU9YWUoSyxKKSk7KXt2YXIgQWU9VSh2ZVswXSk7Y2VbZGVdPUFlLCIiPT09QWUmJihLLmxhc3RJbmRleD1yZShKLEVlKEsubGFzdEluZGV4KSxvZSkpLGRlKyt9cmV0dXJuIDA9PT1kZT9udWxsOmNlfV19KX0sNzgyNDY6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDg1NjQ4''@;'; put 'put ''KSxCPUwoMjEyODUpLnN0YXJ0O21lKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOkwoNzIyMTApfSx7cGFkU3RhcnQ6ZnVuY3Rpb24oVSl7cmV0dXJuIEIodGhpcyxVLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KX0sMTA0MTQ6KFhlLEplLEwpPT57''@;'; put 'put ''InVzZSBzdHJpY3QiO3ZhciBtZT1MKDExMzA2KSxCPUwoMzU2MiksRT1MKDY2MTMpLEVlPUwoMjI4MTQpLFU9TCgyMzUyMyksUT1MKDU4NjQ3KSxqPUwoMTIwMTQpLHJlPUwoNDA3MDIpLGFlPUwoNjUzMTYpLFk9TCg5MjEpLFc9TCgyNDU3MiksTj1MKDYxNjc2KSx0ZT1MKDIwOTQ4KSxLPUwo''@;'; put 'put ''NjMzODIpLEo9TCg1ODEyNiksb2U9TCgyNTQ2KSgicmVwbGFjZSIpLGNlPU1hdGgubWF4LGRlPU1hdGgubWluLHZlPUUoW10uY29uY2F0KSxBZT1FKFtdLnB1c2gpLGtlPUUoIiIuaW5kZXhPZiksU2U9RSgiIi5zbGljZSksSWU9ZnVuY3Rpb24oTyl7cmV0dXJuIHZvaWQgMD09PU8/TzpTdHJp''@;'; put 'put ''bmcoTyl9LFRlPSIkMCI9PT0iYSIucmVwbGFjZSgvLi8sIiQwIiksTWU9ISEvLi9bb2VdJiYiIj09PS8uL1tvZV0oImEiLCIkMCIpO0VlKCJyZXBsYWNlIixmdW5jdGlvbihPLHosZWUpe3ZhciBuZT1NZT8iJCI6IiQwIjtyZXR1cm5bZnVuY3Rpb24oUCxWKXt2YXIgVD1XKHRoaXMpLFM9bnVs''@;'; put 'put ''bD09UD92b2lkIDA6dGUoUCxvZSk7cmV0dXJuIFM/QihTLFAsVCxWKTpCKHosWShUKSxQLFYpfSxmdW5jdGlvbih4LFApe3ZhciBWPVEodGhpcyksVD1ZKHgpO2lmKCJzdHJpbmciPT10eXBlb2YgUCYmLTE9PT1rZShQLG5lKSYmLTE9PT1rZShQLCIkPCIpKXt2YXIgUz1lZSh6LFYsVCxQKTtp''@;'; put 'put ''ZihTLmRvbmUpcmV0dXJuIFMudmFsdWV9dmFyIEY9aihQKTtGfHwoUD1ZKFApKTt2YXIgeWU9Vi5nbG9iYWw7aWYoeWUpe3ZhciBDZT1WLnVuaWNvZGU7Vi5sYXN0SW5kZXg9MH1mb3IodmFyIERlPVtdOzspe3ZhciBQZT1KKFYsVCk7aWYobnVsbD09PVBlfHwoQWUoRGUsUGUpLCF5ZSkpYnJl''@;'; put 'put ''YWs7IiI9PT1ZKFBlWzBdKSYmKFYubGFzdEluZGV4PU4oVCxhZShWLmxhc3RJbmRleCksQ2UpKX1mb3IodmFyICRlPSIiLGd0PTAsd3Q9MDt3dDxEZS5sZW5ndGg7d3QrKyl7Zm9yKHZhciBtdD1ZKChQZT1EZVt3dF0pWzBdKSx2dD1jZShkZShyZShQZS5pbmRleCksVC5sZW5ndGgpLDApLEF0''@;'; put 'put ''PVtdLGh0PTE7aHQ8UGUubGVuZ3RoO2h0KyspQWUoQXQsSWUoUGVbaHRdKSk7dmFyIEJ0PVBlLmdyb3VwcztpZihGKXt2YXIgb249dmUoW210XSxBdCx2dCxUKTt2b2lkIDAhPT1CdCYmQWUob24sQnQpO3ZhciBfdD1ZKG1lKFAsdm9pZCAwLG9uKSl9ZWxzZSBfdD1LKG10LFQsdnQsQXQsQnQs''@;'; put 'put ''UCk7dnQ+PWd0JiYoJGUrPVNlKFQsZ3QsdnQpK190LGd0PXZ0K210Lmxlbmd0aCl9cmV0dXJuICRlK1NlKFQsZ3QpfV19LCEhVShmdW5jdGlvbigpe3ZhciBPPS8uLztyZXR1cm4gTy5leGVjPWZ1bmN0aW9uKCl7dmFyIHo9W107cmV0dXJuIHouZ3JvdXBzPXthOiI3In0sen0sIjciIT09IiIu''@;'; put 'put ''cmVwbGFjZShPLCIkPGE+Iil9KXx8IVRlfHxNZSl9LDc3OTQ6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDM1NjIpLEI9TCgyMjgxNCksRT1MKDU4NjQ3KSxFZT1MKDI0NTcyKSxVPUwoNTU4ODEpLFE9TCg5MjEpLGo9TCgyMDk0OCkscmU9TCg1ODEyNik7Qigic2VhcmNoIixm''@;'; put 'put ''dW5jdGlvbihhZSxZLFcpe3JldHVybltmdW5jdGlvbih0ZSl7dmFyIEs9RWUodGhpcyksSj1udWxsPT10ZT92b2lkIDA6aih0ZSxhZSk7cmV0dXJuIEo/bWUoSix0ZSxLKTpuZXcgUmVnRXhwKHRlKVthZV0oUShLKSl9LGZ1bmN0aW9uKE4pe3ZhciB0ZT1FKHRoaXMpLEs9UShOKSxKPVcoWSx0''@;'; put 'put ''ZSxLKTtpZihKLmRvbmUpcmV0dXJuIEoudmFsdWU7dmFyIHNlPXRlLmxhc3RJbmRleDtVKHNlLDApfHwodGUubGFzdEluZGV4PTApO3ZhciBvZT1yZSh0ZSxLKTtyZXR1cm4gVSh0ZS5sYXN0SW5kZXgsc2UpfHwodGUubGFzdEluZGV4PXNlKSxudWxsPT09b2U/LTE6b2UuaW5kZXh9XX0pfSw2''@;'; put 'put ''NDQxODooWGUsSmUsTCk9PnsidXNlIHN0cmljdCI7dmFyIG1lPUwoMTEzMDYpLEI9TCgzNTYyKSxFPUwoNjYxMyksRWU9TCgyMjgxNCksVT1MKDQxODA0KSxRPUwoNTg2NDcpLGo9TCgyNDU3MikscmU9TCg5MTMpLGFlPUwoNjE2NzYpLFk9TCg2NTMxNiksVz1MKDkyMSksTj1MKDIwOTQ4KSx0''@;'; put 'put ''ZT1MKDEwODcyKSxLPUwoNTgxMjYpLEo9TCgyMjIzNCksc2U9TCg5NzE4OSksb2U9TCgyMzUyMyksY2U9c2UuVU5TVVBQT1JURURfWSxkZT00Mjk0OTY3Mjk1LHZlPU1hdGgubWluLEFlPVtdLnB1c2gsa2U9RSgvLi8uZXhlYyksU2U9RShBZSksSWU9RSgiIi5zbGljZSk7RWUoInNwbGl0Iixm''@;'; put 'put ''dW5jdGlvbihNZSxoZSxPKXt2YXIgejtyZXR1cm4gej0iYyI9PSJhYmJjIi5zcGxpdCgvKGIpKi8pWzFdfHw0IT0idGVzdCIuc3BsaXQoLyg/OikvLC0xKS5sZW5ndGh8fDIhPSJhYiIuc3BsaXQoLyg/OmFiKSovKS5sZW5ndGh8fDQhPSIuIi5zcGxpdCgvKC4/KSguPykvKS5sZW5ndGh8fCIu''@;'; put 'put ''Ii5zcGxpdCgvKCkoKS8pLmxlbmd0aD4xfHwiIi5zcGxpdCgvLj8vKS5sZW5ndGg/ZnVuY3Rpb24oZWUsbmUpe3ZhciB4PVcoaih0aGlzKSksUD12b2lkIDA9PT1uZT9kZTpuZT4+PjA7aWYoMD09PVApcmV0dXJuW107aWYodm9pZCAwPT09ZWUpcmV0dXJuW3hdO2lmKCFVKGVlKSlyZXR1cm4g''@;'; put 'put ''QihoZSx4LGVlLFApO2Zvcih2YXIgeWUsQ2UsRGUsVj1bXSxTPTAsRj1uZXcgUmVnRXhwKGVlLnNvdXJjZSwoZWUuaWdub3JlQ2FzZT8iaSI6IiIpKyhlZS5tdWx0aWxpbmU/Im0iOiIiKSsoZWUudW5pY29kZT8idSI6IiIpKyhlZS5zdGlja3k/InkiOiIiKSsiZyIpOyh5ZT1CKEosRix4KSkm''@;'; put 'put ''JiEoKENlPUYubGFzdEluZGV4KT5TJiYoU2UoVixJZSh4LFMseWUuaW5kZXgpKSx5ZS5sZW5ndGg+MSYmeWUuaW5kZXg8eC5sZW5ndGgmJm1lKEFlLFYsdGUoeWUsMSkpLERlPXllWzBdLmxlbmd0aCxTPUNlLFYubGVuZ3RoPj1QKSk7KUYubGFzdEluZGV4PT09eWUuaW5kZXgmJkYubGFzdElu''@;'; put 'put ''ZGV4Kys7cmV0dXJuIFM9PT14Lmxlbmd0aD8oRGV8fCFrZShGLCIiKSkmJlNlKFYsIiIpOlNlKFYsSWUoeCxTKSksVi5sZW5ndGg+UD90ZShWLDAsUCk6Vn06IjAiLnNwbGl0KHZvaWQgMCwwKS5sZW5ndGg/ZnVuY3Rpb24oZWUsbmUpe3JldHVybiB2b2lkIDA9PT1lZSYmMD09PW5lP1tdOkIo''@;'; put 'put ''aGUsdGhpcyxlZSxuZSl9OmhlLFtmdW5jdGlvbihuZSx4KXt2YXIgUD1qKHRoaXMpLFY9bnVsbD09bmU/dm9pZCAwOk4obmUsTWUpO3JldHVybiBWP0IoVixuZSxQLHgpOkIoeixXKFApLG5lLHgpfSxmdW5jdGlvbihlZSxuZSl7dmFyIHg9USh0aGlzKSxQPVcoZWUpLFY9Tyh6LHgsUCxuZSx6''@;'; put 'put ''IT09aGUpO2lmKFYuZG9uZSlyZXR1cm4gVi52YWx1ZTt2YXIgVD1yZSh4LFJlZ0V4cCksUz14LnVuaWNvZGUseWU9bmV3IFQoY2U/Il4oPzoiK3guc291cmNlKyIpIjp4LCh4Lmlnbm9yZUNhc2U/ImkiOiIiKSsoeC5tdWx0aWxpbmU/Im0iOiIiKSsoeC51bmljb2RlPyJ1IjoiIikrKGNlPyJn''@;'; put 'put ''IjoieSIpKSxDZT12b2lkIDA9PT1uZT9kZTpuZT4+PjA7aWYoMD09PUNlKXJldHVybltdO2lmKDA9PT1QLmxlbmd0aClyZXR1cm4gbnVsbD09PUsoeWUsUCk/W1BdOltdO2Zvcih2YXIgRGU9MCxQZT0wLFFlPVtdO1BlPFAubGVuZ3RoOyl7eWUubGFzdEluZGV4PWNlPzA6UGU7dmFyIGd0LCRl''@;'; put 'put ''PUsoeWUsY2U/SWUoUCxQZSk6UCk7aWYobnVsbD09PSRlfHwoZ3Q9dmUoWSh5ZS5sYXN0SW5kZXgrKGNlP1BlOjApKSxQLmxlbmd0aCkpPT09RGUpUGU9YWUoUCxQZSxTKTtlbHNle2lmKFNlKFFlLEllKFAsRGUsUGUpKSxRZS5sZW5ndGg9PT1DZSlyZXR1cm4gUWU7Zm9yKHZhciB3dD0xO3d0''@;'; put 'put ''PD0kZS5sZW5ndGgtMTt3dCsrKWlmKFNlKFFlLCRlW3d0XSksUWUubGVuZ3RoPT09Q2UpcmV0dXJuIFFlO1BlPURlPWd0fX1yZXR1cm4gU2UoUWUsSWUoUCxEZSkpLFFlfV19LCEhb2UoZnVuY3Rpb24oKXt2YXIgTWU9Lyg/OikvLGhlPU1lLmV4ZWM7TWUuZXhlYz1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3ZhciBPPSJhYiIuc3BsaXQoTWUpO3JldHVybiAyIT09Ty5sZW5ndGh8fCJhIiE9PU9bMF18fCJiIiE9PU9bMV19KSxjZSl9LDg1NzM1OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSixtZT1MKDg1NjQ4KSxCPUwoNjYxMyksRT1MKDQ3''@;'; put 'put ''OTg3KS5mLEVlPUwoNjUzMTYpLFU9TCg5MjEpLFE9TCg0MTk2MSksaj1MKDI0NTcyKSxyZT1MKDc2NTcxKSxhZT1MKDEwMDE3KSxZPUIoIiIuc3RhcnRzV2l0aCksVz1CKCIiLnNsaWNlKSxOPU1hdGgubWluLHRlPXJlKCJzdGFydHNXaXRoIik7bWUoe3RhcmdldDoiU3RyaW5nIixwcm90bzoh''@;'; put 'put ''MCxmb3JjZWQ6ISghYWUmJiF0ZSYmKEo9RShTdHJpbmcucHJvdG90eXBlLCJzdGFydHNXaXRoIiksSiYmIUoud3JpdGFibGUpfHx0ZSl9LHtzdGFydHNXaXRoOmZ1bmN0aW9uKHNlKXt2YXIgb2U9VShqKHRoaXMpKTtRKHNlKTt2YXIgY2U9RWUoTihhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1l''@;'; put 'put ''bnRzWzFdOnZvaWQgMCxvZS5sZW5ndGgpKSxkZT1VKHNlKTtyZXR1cm4gWT9ZKG9lLGRlLGNlKTpXKG9lLGNlLGNlK2RlLmxlbmd0aCk9PT1kZX19KX0sODM2MjA6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDg1NjQ4KSxCPUwoOTMxNjYpLnRyaW07bWUoe3RhcmdldDoiU3Ry''@;'; put 'put ''aW5nIixwcm90bzohMCxmb3JjZWQ6TCg0NTcxMikoInRyaW0iKX0se3RyaW06ZnVuY3Rpb24oKXtyZXR1cm4gQih0aGlzKX19KX0sNDQ2NDY6KFhlLEplLEwpPT57InVzZSBzdHJpY3QiO3ZhciBtZT1MKDg1NjQ4KSxCPUwoNzA3MDUpLEU9TCgzNTYyKSxFZT1MKDY2MTMpLFU9TCgxMDAxNyks''@;'; put 'put ''UT1MKDg1NjI0KSxqPUwoODI3NzApLHJlPUwoMjM1MjMpLGFlPUwoNDg4MTEpLFk9TCgzNzQ3NCksVz1MKDU4NjQ3KSxOPUwoNTAzMjcpLHRlPUwoODQwOTQpLEs9TCg5MjEpLEo9TCg3MzkyMCksc2U9TCg3NDQxMCksb2U9TCgxNDU0NSksY2U9TCg3NTQzMSksZGU9TCgzNTgwOCksdmU9TCg1''@;'; put 'put ''NTM0KSxBZT1MKDQ3OTg3KSxrZT1MKDUxMTgzKSxTZT1MKDc3MzI4KSxJZT1MKDQ2OTAxKSxUZT1MKDI1NjY2KSxNZT1MKDY4ODM1KSxoZT1MKDI3MjMwKSxPPUwoMTk5MDkpLHo9TCg1MjgxMCksZWU9TCgyNTQ2KSxuZT1MKDI4MTEpLHg9TCgzOTIzNSksUD1MKDE0NDk4KSxWPUwoNTU5Njgp''@;'; put 'put ''LFQ9TCg3MjcpLFM9TCg5NTY2OSkuZm9yRWFjaCxGPWhlKCJoaWRkZW4iKSx5ZT0iU3ltYm9sIixDZT0icHJvdG90eXBlIixEZT1ULnNldCxQZT1ULmdldHRlckZvcih5ZSksUWU9T2JqZWN0W0NlXSwkZT1CLlN5bWJvbCxndD0kZSYmJGVbQ2VdLHd0PUIuVHlwZUVycm9yLG10PUIuUU9iamVj''@;'; put 'put ''dCx2dD1BZS5mLEF0PWtlLmYsaHQ9ZGUuZixCdD1JZS5mLG9uPUVlKFtdLnB1c2gpLF90PU1lKCJzeW1ib2xzIiksdHQ9TWUoIm9wLXN5bWJvbHMiKSxldD1NZSgid2tzIiksbHQ9IW10fHwhbXRbQ2VdfHwhbXRbQ2VdLmZpbmRDaGlsZCxMdD1RJiZyZShmdW5jdGlvbigpe3JldHVybiA3IT1z''@;'; put 'put ''ZShBdCh7fSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiBBdCh0aGlzLCJhIix7dmFsdWU6N30pLmF9fSkpLmF9KT9mdW5jdGlvbihnbixkbix5bil7dmFyIGxuPXZ0KFFlLGRuKTtsbiYmZGVsZXRlIFFlW2RuXSxBdChnbixkbix5biksbG4mJmduIT09UWUmJkF0KFFlLGRuLGxuKX06QXQs''@;'; put 'put ''Q3Q9ZnVuY3Rpb24oZ24sZG4pe3ZhciB5bj1fdFtnbl09c2UoZ3QpO3JldHVybiBEZSh5bix7dHlwZTp5ZSx0YWc6Z24sZGVzY3JpcHRpb246ZG59KSxRfHwoeW4uZGVzY3JpcHRpb249ZG4pLHlufSxmdD1mdW5jdGlvbihkbix5bixsbil7ZG49PT1RZSYmZnQodHQseW4sbG4pLFcoZG4pO3Zh''@;'; put 'put ''ciBObj10ZSh5bik7cmV0dXJuIFcobG4pLGFlKF90LE5uKT8obG4uZW51bWVyYWJsZT8oYWUoZG4sRikmJmRuW0ZdW05uXSYmKGRuW0ZdW05uXT0hMSksbG49c2UobG4se2VudW1lcmFibGU6SigwLCExKX0pKTooYWUoZG4sRil8fEF0KGRuLEYsSigxLHt9KSksZG5bRl1bTm5dPSEwKSxMdChk''@;'; put 'put ''bixObixsbikpOkF0KGRuLE5uLGxuKX0sSHQ9ZnVuY3Rpb24oZG4seW4pe1coZG4pO3ZhciBsbj1OKHluKSxObj1vZShsbikuY29uY2F0KEp0KGxuKSk7cmV0dXJuIFMoTm4sZnVuY3Rpb24oYm4peyghUXx8RShVZSxsbixibikpJiZmdChkbixibixsbltibl0pfSksZG59LFVlPWZ1bmN0aW9u''@;'; put 'put ''KGRuKXt2YXIgeW49dGUoZG4pLGxuPUUoQnQsdGhpcyx5bik7cmV0dXJuISh0aGlzPT09UWUmJmFlKF90LHluKSYmIWFlKHR0LHluKSkmJighKGxufHwhYWUodGhpcyx5bil8fCFhZShfdCx5bil8fGFlKHRoaXMsRikmJnRoaXNbRl1beW5dKXx8bG4pfSx5dD1mdW5jdGlvbihkbix5bil7dmFy''@;'; put 'put ''IGxuPU4oZG4pLE5uPXRlKHluKTtpZihsbiE9PVFlfHwhYWUoX3QsTm4pfHxhZSh0dCxObikpe3ZhciBibj12dChsbixObik7cmV0dXJuIGJuJiZhZShfdCxObikmJiEoYWUobG4sRikmJmxuW0ZdW05uXSkmJihibi5lbnVtZXJhYmxlPSEwKSxibn19LGp0PWZ1bmN0aW9uKGRuKXt2YXIgeW49''@;'; put 'put ''aHQoTihkbikpLGxuPVtdO3JldHVybiBTKHluLGZ1bmN0aW9uKE5uKXshYWUoX3QsTm4pJiYhYWUoTyxObikmJm9uKGxuLE5uKX0pLGxufSxKdD1mdW5jdGlvbihnbil7dmFyIGRuPWduPT09UWUseW49aHQoZG4/dHQ6TihnbikpLGxuPVtdO3JldHVybiBTKHluLGZ1bmN0aW9uKE5uKXthZShf''@;'; put 'put ''dCxObikmJighZG58fGFlKFFlLE5uKSkmJm9uKGxuLF90W05uXSl9KSxsbn07anx8KFRlKGd0PSgkZT1mdW5jdGlvbigpe2lmKFkoZ3QsdGhpcykpdGhyb3cgd3QoIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciIpO3ZhciBkbj1hcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVu''@;'; put 'put ''dHNbMF0/Syhhcmd1bWVudHNbMF0pOnZvaWQgMCx5bj16KGRuKSxsbj1mdW5jdGlvbihObil7dGhpcz09PVFlJiZFKGxuLHR0LE5uKSxhZSh0aGlzLEYpJiZhZSh0aGlzW0ZdLHluKSYmKHRoaXNbRl1beW5dPSExKSxMdCh0aGlzLHluLEooMSxObikpfTtyZXR1cm4gUSYmbHQmJkx0KFFlLHlu''@;'; put 'put ''LHtjb25maWd1cmFibGU6ITAsc2V0OmxufSksQ3QoeW4sZG4pfSlbQ2VdLCJ0b1N0cmluZyIsZnVuY3Rpb24oKXtyZXR1cm4gUGUodGhpcykudGFnfSksVGUoJGUsIndpdGhvdXRTZXR0ZXIiLGZ1bmN0aW9uKGduKXtyZXR1cm4gQ3QoeihnbiksZ24pfSksSWUuZj1VZSxrZS5mPWZ0LFNlLmY9''@;'; put 'put ''SHQsQWUuZj15dCxjZS5mPWRlLmY9anQsdmUuZj1KdCxuZS5mPWZ1bmN0aW9uKGduKXtyZXR1cm4gQ3QoZWUoZ24pLGduKX0sUSYmKEF0KGd0LCJkZXNjcmlwdGlvbiIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUGUodGhpcykuZGVzY3JpcHRpb259fSksVXx8VGUo''@;'; put 'put ''UWUsInByb3BlcnR5SXNFbnVtZXJhYmxlIixVZSx7dW5zYWZlOiEwfSkpKSxtZSh7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLHdyYXA6ITAsZm9yY2VkOiFqLHNoYW06IWp9LHtTeW1ib2w6JGV9KSxTKG9lKGV0KSxmdW5jdGlvbihnbil7eChnbil9KSxtZSh7dGFyZ2V0OnllLHN0YXQ6ITAs''@;'; put 'put ''Zm9yY2VkOiFqfSx7dXNlU2V0dGVyOmZ1bmN0aW9uKCl7bHQ9ITB9LHVzZVNpbXBsZTpmdW5jdGlvbigpe2x0PSExfX0pLG1lKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6IWosc2hhbTohUX0se2NyZWF0ZTpmdW5jdGlvbihkbix5bil7cmV0dXJuIHZvaWQgMD09PXluP3NlKGRu''@;'; put 'put ''KTpIdChzZShkbikseW4pfSxkZWZpbmVQcm9wZXJ0eTpmdCxkZWZpbmVQcm9wZXJ0aWVzOkh0LGdldE93blByb3BlcnR5RGVzY3JpcHRvcjp5dH0pLG1lKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6IWp9LHtnZXRPd25Qcm9wZXJ0eU5hbWVzOmp0fSksUCgpLFYoJGUseWUpLE9b''@;'; put 'put ''Rl09ITB9LDg2NDI3OihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbWU9TCg4NTY0OCksQj1MKDg1NjI0KSxFPUwoNzA3MDUpLEVlPUwoNjYxMyksVT1MKDQ4ODExKSxRPUwoMTIwMTQpLGo9TCgzNzQ3NCkscmU9TCg5MjEpLGFlPUwoNTExODMpLmYsWT1MKDc3NTQ4KSxXPUUuU3ltYm9s''@;'; put 'put ''LE49VyYmVy5wcm90b3R5cGU7aWYoQiYmUShXKSYmKCEoImRlc2NyaXB0aW9uImluIE4pfHx2b2lkIDAhPT1XKCkuZGVzY3JpcHRpb24pKXt2YXIgdGU9e30sSz1mdW5jdGlvbigpe3ZhciBrZT1hcmd1bWVudHMubGVuZ3RoPDF8fHZvaWQgMD09PWFyZ3VtZW50c1swXT92b2lkIDA6cmUoYXJn''@;'; put 'put ''dW1lbnRzWzBdKSxTZT1qKE4sdGhpcyk/bmV3IFcoa2UpOnZvaWQgMD09PWtlP1coKTpXKGtlKTtyZXR1cm4iIj09PWtlJiYodGVbU2VdPSEwKSxTZX07WShLLFcpLEsucHJvdG90eXBlPU4sTi5jb25zdHJ1Y3Rvcj1LO3ZhciBKPSJTeW1ib2wodGVzdCkiPT1TdHJpbmcoVygidGVzdCIpKSxz''@;'; put 'put ''ZT1FZShOLnRvU3RyaW5nKSxvZT1FZShOLnZhbHVlT2YpLGNlPS9eU3ltYm9sXCgoLiopXClbXildKyQvLGRlPUVlKCIiLnJlcGxhY2UpLHZlPUVlKCIiLnNsaWNlKTthZShOLCJkZXNjcmlwdGlvbiIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt2YXIga2U9b2UodGhpcyksU2U9''@;'; put 'put ''c2Uoa2UpO2lmKFUodGUsa2UpKXJldHVybiIiO3ZhciBJZT1KP3ZlKFNlLDcsLTEpOmRlKFNlLGNlLCIkMSIpO3JldHVybiIiPT09SWU/dm9pZCAwOkllfX0pLG1lKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsZm9yY2VkOiEwfSx7U3ltYm9sOkt9KX19LDc4NzkwOihYZSxKZSxMKT0+e3Zh''@;'; put 'put ''ciBtZT1MKDg1NjQ4KSxCPUwoNDY2OTMpLEU9TCg0ODgxMSksRWU9TCg5MjEpLFU9TCg2ODgzNSksUT1MKDM5NDY2KSxqPVUoInN0cmluZy10by1zeW1ib2wtcmVnaXN0cnkiKSxyZT1VKCJzeW1ib2wtdG8tc3RyaW5nLXJlZ2lzdHJ5Iik7bWUoe3RhcmdldDoiU3ltYm9sIixzdGF0OiEwLGZv''@;'; put 'put ''cmNlZDohUX0se2ZvcjpmdW5jdGlvbihhZSl7dmFyIFk9RWUoYWUpO2lmKEUoaixZKSlyZXR1cm4galtZXTt2YXIgVz1CKCJTeW1ib2wiKShZKTtyZXR1cm4galtZXT1XLHJlW1ddPVksV319KX0sMzM1ODM6KFhlLEplLEwpPT57TCgzOTIzNSkoIml0ZXJhdG9yIil9LDI2NTc6KFhlLEplLEwp''@;'; put 'put ''PT57TCg0NDY0NiksTCg3ODc5MCksTCgyODU0MCksTCgxMzAwNiksTCg2MzE5OCl9LDI4NTQwOihYZSxKZSxMKT0+e3ZhciBtZT1MKDg1NjQ4KSxCPUwoNDg4MTEpLEU9TCg2OTc1KSxFZT1MKDk0Njc2KSxVPUwoNjg4MzUpLFE9TCgzOTQ2Niksaj1VKCJzeW1ib2wtdG8tc3RyaW5nLXJlZ2lz''@;'; put 'put ''dHJ5Iik7bWUoe3RhcmdldDoiU3ltYm9sIixzdGF0OiEwLGZvcmNlZDohUX0se2tleUZvcjpmdW5jdGlvbihhZSl7aWYoIUUoYWUpKXRocm93IFR5cGVFcnJvcihFZShhZSkrIiBpcyBub3QgYSBzeW1ib2wiKTtpZihCKGosYWUpKXJldHVybiBqW2FlXX19KX0sMTkzMDg6KFhlLEplLEwpPT57''@;'; put 'put ''InVzZSBzdHJpY3QiO3ZhciBOLG1lPUwoNzA3MDUpLEI9TCg2NjEzKSxFPUwoNzQwNjkpLEVlPUwoNzE4MzIpLFU9TCg0Njg1NyksUT1MKDQyOTY5KSxqPUwoNzE0OTYpLHJlPUwoNTUyMTgpLGFlPUwoNzI3KS5lbmZvcmNlLFk9TCg4MDgwNiksVz0hbWUuQWN0aXZlWE9iamVjdCYmIkFjdGl2''@;'; put 'put ''ZVhPYmplY3QiaW4gbWUsdGU9ZnVuY3Rpb24odmUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB2ZSh0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSxLPVUoIldlYWtNYXAiLHRlLFEpO2lmKFkmJlcpe049US5nZXRDb25zdHJ1Y3Rvcih0ZSwiV2Vha01hcCIs''@;'; put 'put ''ITApLEVlLmVuYWJsZSgpO3ZhciBKPUsucHJvdG90eXBlLHNlPUIoSi5kZWxldGUpLG9lPUIoSi5oYXMpLGNlPUIoSi5nZXQpLGRlPUIoSi5zZXQpO0UoSix7ZGVsZXRlOmZ1bmN0aW9uKHZlKXtpZihqKHZlKSYmIXJlKHZlKSl7dmFyIEFlPWFlKHRoaXMpO3JldHVybiBBZS5mcm96ZW58fChB''@;'; put 'put ''ZS5mcm96ZW49bmV3IE4pLHNlKHRoaXMsdmUpfHxBZS5mcm96ZW4uZGVsZXRlKHZlKX1yZXR1cm4gc2UodGhpcyx2ZSl9LGhhczpmdW5jdGlvbihBZSl7aWYoaihBZSkmJiFyZShBZSkpe3ZhciBrZT1hZSh0aGlzKTtyZXR1cm4ga2UuZnJvemVufHwoa2UuZnJvemVuPW5ldyBOKSxvZSh0aGlz''@;'; put 'put ''LEFlKXx8a2UuZnJvemVuLmhhcyhBZSl9cmV0dXJuIG9lKHRoaXMsQWUpfSxnZXQ6ZnVuY3Rpb24oQWUpe2lmKGooQWUpJiYhcmUoQWUpKXt2YXIga2U9YWUodGhpcyk7cmV0dXJuIGtlLmZyb3plbnx8KGtlLmZyb3plbj1uZXcgTiksb2UodGhpcyxBZSk/Y2UodGhpcyxBZSk6a2UuZnJvemVu''@;'; put 'put ''LmdldChBZSl9cmV0dXJuIGNlKHRoaXMsQWUpfSxzZXQ6ZnVuY3Rpb24oQWUsa2Upe2lmKGooQWUpJiYhcmUoQWUpKXt2YXIgU2U9YWUodGhpcyk7U2UuZnJvemVufHwoU2UuZnJvemVuPW5ldyBOKSxvZSh0aGlzLEFlKT9kZSh0aGlzLEFlLGtlKTpTZS5mcm96ZW4uc2V0KEFlLGtlKX1lbHNl''@;'; put 'put ''IGRlKHRoaXMsQWUsa2UpO3JldHVybiB0aGlzfX0pfX0sNjUxMjU6KFhlLEplLEwpPT57TCgxOTMwOCl9LDk4MzczOihYZSxKZSxMKT0+eyJ1c2Ugc3RyaWN0IjtMKDQ2ODU3KSgiV2Vha1NldCIsZnVuY3Rpb24oRSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyxhcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoP2FyZ3VtZW50c1swXTp2b2lkIDApfX0sTCg0Mjk2OSkpfSwzODE4MzooWGUsSmUsTCk9PntMKDk4MzczKX0sMjI0OTY6KFhlLEplLEwpPT57dmFyIG1lPUwoODU2NDgpLEI9TCg3MDcwNSksRT1MKDU1MjYxKS5jbGVhcjttZSh7Z2xvYmFsOiEwLGJpbmQ6ITAsZW51bWVyYWJsZToh''@;'; put 'put ''MCxmb3JjZWQ6Qi5jbGVhckltbWVkaWF0ZSE9PUV9LHtjbGVhckltbWVkaWF0ZTpFfSl9LDU4NTk0OihYZSxKZSxMKT0+e3ZhciBtZT1MKDcwNzA1KSxCPUwoMTkyMzEpLEU9TCgyOTkxMCksRWU9TCgzNzMxOSksVT1MKDE2MDE3KSxRPWZ1bmN0aW9uKHJlKXtpZihyZSYmcmUuZm9yRWFjaCE9''@;'; put 'put ''PUVlKXRyeXtVKHJlLCJmb3JFYWNoIixFZSl9Y2F0Y2goYWUpe3JlLmZvckVhY2g9RWV9fTtmb3IodmFyIGogaW4gQilCW2pdJiZRKG1lW2pdJiZtZVtqXS5wcm90b3R5cGUpO1EoRSl9LDU4MjcyOihYZSxKZSxMKT0+e3ZhciBtZT1MKDcwNzA1KSxCPUwoMTkyMzEpLEU9TCgyOTkxMCksRWU9''@;'; put 'put ''TCg1Nzk0MyksVT1MKDE2MDE3KSxRPUwoMjU0Niksaj1RKCJpdGVyYXRvciIpLHJlPVEoInRvU3RyaW5nVGFnIiksYWU9RWUudmFsdWVzLFk9ZnVuY3Rpb24oTix0ZSl7aWYoTil7aWYoTltqXSE9PWFlKXRyeXtVKE4saixhZSl9Y2F0Y2goSil7TltqXT1hZX1pZihOW3JlXXx8VShOLHJlLHRl''@;'; put 'put ''KSxCW3RlXSlmb3IodmFyIEsgaW4gRWUpaWYoTltLXSE9PUVlW0tdKXRyeXtVKE4sSyxFZVtLXSl9Y2F0Y2goSil7TltLXT1FZVtLXX19fTtmb3IodmFyIFcgaW4gQilZKG1lW1ddJiZtZVtXXS5wcm90b3R5cGUsVyk7WShFLCJET01Ub2tlbkxpc3QiKX0sOTE5NDU6KFhlLEplLEwpPT57TCgy''@;'; put 'put ''MjQ5NiksTCgzNDQ0Myl9LDM0NDQzOihYZSxKZSxMKT0+e3ZhciBtZT1MKDg1NjQ4KSxCPUwoNzA3MDUpLEU9TCg1NTI2MSkuc2V0O21lKHtnbG9iYWw6ITAsYmluZDohMCxlbnVtZXJhYmxlOiEwLGZvcmNlZDpCLnNldEltbWVkaWF0ZSE9PUV9LHtzZXRJbW1lZGlhdGU6RX0pfSw1NjY3MDoo''@;'; put 'put ''WGUsSmUsTCk9Pnt2YXIgbWU9TCg4NTY0OCksQj1MKDcwNzA1KSxFPUwoOTU4OTUpLnNldEludGVydmFsO21lKHtnbG9iYWw6ITAsYmluZDohMCxmb3JjZWQ6Qi5zZXRJbnRlcnZhbCE9PUV9LHtzZXRJbnRlcnZhbDpFfSl9LDU5MTcyOihYZSxKZSxMKT0+e3ZhciBtZT1MKDg1NjQ4KSxCPUwo''@;'; put 'put ''NzA3MDUpLEU9TCg5NTg5NSkuc2V0VGltZW91dDttZSh7Z2xvYmFsOiEwLGJpbmQ6ITAsZm9yY2VkOkIuc2V0VGltZW91dCE9PUV9LHtzZXRUaW1lb3V0OkV9KX0sNTgzMjQ6KFhlLEplLEwpPT57TCg1NjY3MCksTCg1OTE3Mil9LDQ2NzAwOihYZSxKZSxMKT0+e3ZhciBtZT17Ii4vYWYiOjI3''@;'; put 'put ''MDg4LCIuL2FmLmpzIjoyNzA4OCwiLi9hciI6MTcwMzgsIi4vYXItZHoiOjUyNTAyLCIuL2FyLWR6LmpzIjo1MjUwMiwiLi9hci1rdyI6MzAxMjgsIi4vYXIta3cuanMiOjMwMTI4LCIuL2FyLWx5Ijo4NDUxOSwiLi9hci1seS5qcyI6ODQ1MTksIi4vYXItbWEiOjY1NDQzLCIuL2FyLW1hLmpz''@;'; put 'put ''Ijo2NTQ0MywiLi9hci1zYSI6MTc2NDIsIi4vYXItc2EuanMiOjE3NjQyLCIuL2FyLXRuIjo2ODU5MiwiLi9hci10bi5qcyI6Njg1OTIsIi4vYXIuanMiOjE3MDM4LCIuL2F6Ijo1MTIxMywiLi9hei5qcyI6NTEyMTMsIi4vYmUiOjY5MTkxLCIuL2JlLmpzIjo2OTE5MSwiLi9iZyI6OTAzMjIs''@;'; put 'put ''Ii4vYmcuanMiOjkwMzIyLCIuL2JtIjoyODA0MiwiLi9ibS5qcyI6MjgwNDIsIi4vYm4iOjU5NjIwLCIuL2JuLWJkIjo2NTkwMywiLi9ibi1iZC5qcyI6NjU5MDMsIi4vYm4uanMiOjU5NjIwLCIuL2JvIjo2OTY0NSwiLi9iby5qcyI6Njk2NDUsIi4vYnIiOjQ1MDIwLCIuL2JyLmpzIjo0NTAy''@;'; put 'put ''MCwiLi9icyI6NjQ3OTIsIi4vYnMuanMiOjY0NzkyLCIuL2NhIjo0Nzk4MCwiLi9jYS5qcyI6NDc5ODAsIi4vY3MiOjQ3MzIyLCIuL2NzLmpzIjo0NzMyMiwiLi9jdiI6OTAzNjUsIi4vY3YuanMiOjkwMzY1LCIuL2N5IjozMjA5MiwiLi9jeS5qcyI6MzIwOTIsIi4vZGEiOjc3Mzg3LCIuL2Rh''@;'; put 'put ''LmpzIjo3NzM4NywiLi9kZSI6NTQzMDcsIi4vZGUtYXQiOjI5NDU5LCIuL2RlLWF0LmpzIjoyOTQ1OSwiLi9kZS1jaCI6NjcyNDMsIi4vZGUtY2guanMiOjY3MjQzLCIuL2RlLmpzIjo1NDMwNywiLi9kdiI6Mzk2NTksIi4vZHYuanMiOjM5NjU5LCIuL2VsIjozNDYwLCIuL2VsLmpzIjozNDYw''@;'; put 'put ''LCIuL2VuLWF1Ijo5NDM2OSwiLi9lbi1hdS5qcyI6OTQzNjksIi4vZW4tY2EiOjYwNTMwLCIuL2VuLWNhLmpzIjo2MDUzMCwiLi9lbi1nYiI6OTk5OCwiLi9lbi1nYi5qcyI6OTk5OCwiLi9lbi1pZSI6MTMzOTEsIi4vZW4taWUuanMiOjEzMzkxLCIuL2VuLWlsIjo3NTQxNCwiLi9lbi1pbC5q''@;'; put 'put ''cyI6NzU0MTQsIi4vZW4taW4iOjE5NjE1LCIuL2VuLWluLmpzIjoxOTYxNSwiLi9lbi1ueiI6MjEyNDgsIi4vZW4tbnouanMiOjIxMjQ4LCIuL2VuLXNnIjoxMzc2NywiLi9lbi1zZy5qcyI6MTM3NjcsIi4vZW8iOjg0NTMwLCIuL2VvLmpzIjo4NDUzMCwiLi9lcyI6ODY4NjYsIi4vZXMtZG8i''@;'; put 'put ''OjE4OTQ0LCIuL2VzLWRvLmpzIjoxODk0NCwiLi9lcy1teCI6MjkxMTYsIi4vZXMtbXguanMiOjI5MTE2LCIuL2VzLXVzIjo4MzYwOSwiLi9lcy11cy5qcyI6ODM2MDksIi4vZXMuanMiOjg2ODY2LCIuL2V0Ijo5NjcyNSwiLi9ldC5qcyI6OTY3MjUsIi4vZXUiOjY3OTMxLCIuL2V1LmpzIjo2''@;'; put 'put ''NzkzMSwiLi9mYSI6NTY0MTcsIi4vZmEuanMiOjU2NDE3LCIuL2ZpIjoyMDk0NCwiLi9maS5qcyI6MjA5NDQsIi4vZmlsIjo2MTc2NiwiLi9maWwuanMiOjYxNzY2LCIuL2ZvIjo5NTg2NywiLi9mby5qcyI6OTU4NjcsIi4vZnIiOjE2MzYsIi4vZnItY2EiOjE2ODQ4LCIuL2ZyLWNhLmpzIjox''@;'; put 'put ''Njg0OCwiLi9mci1jaCI6Nzc3NzMsIi4vZnItY2guanMiOjc3NzczLCIuL2ZyLmpzIjoxNjM2LCIuL2Z5IjoxNDk0MCwiLi9meS5qcyI6MTQ5NDAsIi4vZ2EiOjkxNDAyLCIuL2dhLmpzIjo5MTQwMiwiLi9nZCI6NDY5MjQsIi4vZ2QuanMiOjQ2OTI0LCIuL2dsIjoxNjM5OCwiLi9nbC5qcyI6''@;'; put 'put ''MTYzOTgsIi4vZ29tLWRldmEiOjcyNDU3LCIuL2dvbS1kZXZhLmpzIjo3MjQ1NywiLi9nb20tbGF0biI6NTI1NDUsIi4vZ29tLWxhdG4uanMiOjUyNTQ1LCIuL2d1Ijo0MjY0MSwiLi9ndS5qcyI6NDI2NDEsIi4vaGUiOjc1MzYsIi4vaGUuanMiOjc1MzYsIi4vaGkiOjk2MzM1LCIuL2hpLmpz''@;'; put 'put ''Ijo5NjMzNSwiLi9ociI6NzQ1OCwiLi9oci5qcyI6NzQ1OCwiLi9odSI6NTY1NDAsIi4vaHUuanMiOjU2NTQwLCIuL2h5LWFtIjo2NTI4MywiLi9oeS1hbS5qcyI6NjUyODMsIi4vaWQiOjk4NzgwLCIuL2lkLmpzIjo5ODc4MCwiLi9pcyI6MTQyMDUsIi4vaXMuanMiOjE0MjA1LCIuL2l0Ijoz''@;'; put 'put ''NDIxMSwiLi9pdC1jaCI6Mjk5ODUsIi4vaXQtY2guanMiOjI5OTg1LCIuL2l0LmpzIjozNDIxMSwiLi9qYSI6MzEwMDMsIi4vamEuanMiOjMxMDAzLCIuL2p2Ijo2MDQyMCwiLi9qdi5qcyI6NjA0MjAsIi4va2EiOjQwODUxLCIuL2thLmpzIjo0MDg1MSwiLi9rayI6MTYwNzQsIi4va2suanMi''@;'; put 'put ''OjE2MDc0LCIuL2ttIjo1MzM0MywiLi9rbS5qcyI6NTMzNDMsIi4va24iOjQ0Nzk5LCIuL2tuLmpzIjo0NDc5OSwiLi9rbyI6MTM1NDksIi4va28uanMiOjEzNTQ5LCIuL2t1Ijo5MTAzNywiLi9rdS5qcyI6OTEwMzcsIi4va3kiOjkzMTI1LCIuL2t5LmpzIjo5MzEyNSwiLi9sYiI6Njk1ODYs''@;'; put 'put ''Ii4vbGIuanMiOjY5NTg2LCIuL2xvIjozMjM0OSwiLi9sby5qcyI6MzIzNDksIi4vbHQiOjkyNDAwLCIuL2x0LmpzIjo5MjQwMCwiLi9sdiI6Mzk5OTEsIi4vbHYuanMiOjM5OTkxLCIuL21lIjoyODQ3NywiLi9tZS5qcyI6Mjg0NzcsIi4vbWkiOjU1MTE4LCIuL21pLmpzIjo1NTExOCwiLi9t''@;'; put 'put ''ayI6MTU5NDMsIi4vbWsuanMiOjE1OTQzLCIuL21sIjoxMzg0OSwiLi9tbC5qcyI6MTM4NDksIi4vbW4iOjMxOTc3LCIuL21uLmpzIjozMTk3NywiLi9tciI6NjYxODQsIi4vbXIuanMiOjY2MTg0LCIuL21zIjo3MDQ4NSwiLi9tcy1teSI6NjQ1MjQsIi4vbXMtbXkuanMiOjY0NTI0LCIuL21z''@;'; put 'put ''LmpzIjo3MDQ4NSwiLi9tdCI6MzY2ODEsIi4vbXQuanMiOjM2NjgxLCIuL215Ijo1MjAyNCwiLi9teS5qcyI6NTIwMjQsIi4vbmIiOjQyNjg4LCIuL25iLmpzIjo0MjY4OCwiLi9uZSI6Njg5MTQsIi4vbmUuanMiOjY4OTE0LCIuL25sIjoxMTc1OCwiLi9ubC1iZSI6NTIyNzIsIi4vbmwtYmUu''@;'; put 'put ''anMiOjUyMjcyLCIuL25sLmpzIjoxMTc1OCwiLi9ubiI6NDE1MTAsIi4vbm4uanMiOjQxNTEwLCIuL29jLWxuYyI6NTI3OTcsIi4vb2MtbG5jLmpzIjo1Mjc5NywiLi9wYS1pbiI6Mzc5NDQsIi4vcGEtaW4uanMiOjM3OTQ0LCIuL3BsIjoxNjA1LCIuL3BsLmpzIjoxNjA1LCIuL3B0Ijo1NDIy''@;'; put 'put ''NSwiLi9wdC1iciI6NzM4NDAsIi4vcHQtYnIuanMiOjczODQwLCIuL3B0LmpzIjo1NDIyNSwiLi9ybyI6NDUxMjgsIi4vcm8uanMiOjQ1MTI4LCIuL3J1IjozNTEyNywiLi9ydS5qcyI6MzUxMjcsIi4vc2QiOjMyNTI1LCIuL3NkLmpzIjozMjUyNSwiLi9zZSI6NTk4OTMsIi4vc2UuanMiOjU5''@;'; put 'put ''ODkzLCIuL3NpIjozMzEyMywiLi9zaS5qcyI6MzMxMjMsIi4vc2siOjU5NjM1LCIuL3NrLmpzIjo1OTYzNSwiLi9zbCI6NzgxMDYsIi4vc2wuanMiOjc4MTA2LCIuL3NxIjo4ODc5OSwiLi9zcS5qcyI6ODg3OTksIi4vc3IiOjk3OTQ5LCIuL3NyLWN5cmwiOjUyODcyLCIuL3NyLWN5cmwuanMi''@;'; put 'put ''OjUyODcyLCIuL3NyLmpzIjo5Nzk0OSwiLi9zcyI6ODYxNjcsIi4vc3MuanMiOjg2MTY3LCIuL3N2IjozOTcxMywiLi9zdi5qcyI6Mzk3MTMsIi4vc3ciOjQxOTgyLCIuL3N3LmpzIjo0MTk4MiwiLi90YSI6MjI3MzIsIi4vdGEuanMiOjIyNzMyLCIuL3RlIjo0MzYzNiwiLi90ZS5qcyI6NDM2''@;'; put 'put ''MzYsIi4vdGV0IjoyMTE1LCIuL3RldC5qcyI6MjExNSwiLi90ZyI6Njk4MDEsIi4vdGcuanMiOjY5ODAxLCIuL3RoIjoyODY4LCIuL3RoLmpzIjoyODY4LCIuL3RrIjozMTMxMCwiLi90ay5qcyI6MzEzMTAsIi4vdGwtcGgiOjIyMzYwLCIuL3RsLXBoLmpzIjoyMjM2MCwiLi90bGgiOjY2NjQ1''@;'; put 'put ''LCIuL3RsaC5qcyI6NjY2NDUsIi4vdHIiOjk4Mzc0LCIuL3RyLmpzIjo5ODM3NCwiLi90emwiOjI1NiwiLi90emwuanMiOjI1NiwiLi90em0iOjYxNTk1LCIuL3R6bS1sYXRuIjo2MTYzMSwiLi90em0tbGF0bi5qcyI6NjE2MzEsIi4vdHptLmpzIjo2MTU5NSwiLi91Zy1jbiI6NjA1MCwiLi91''@;'; put 'put ''Zy1jbi5qcyI6NjA1MCwiLi91ayI6NjU2MTAsIi4vdWsuanMiOjY1NjEwLCIuL3VyIjo4NjA3NywiLi91ci5qcyI6ODYwNzcsIi4vdXoiOjIyODYyLCIuL3V6LWxhdG4iOjEyMjA3LCIuL3V6LWxhdG4uanMiOjEyMjA3LCIuL3V6LmpzIjoyMjg2MiwiLi92aSI6NDgwOTMsIi4vdmkuanMiOjQ4''@;'; put 'put ''MDkzLCIuL3gtcHNldWRvIjoyNTU5MCwiLi94LXBzZXVkby5qcyI6MjU1OTAsIi4veW8iOjkwNTgsIi4veW8uanMiOjkwNTgsIi4vemgtY24iOjc3OTA4LCIuL3poLWNuLmpzIjo3NzkwOCwiLi96aC1oayI6ODg2NywiLi96aC1oay5qcyI6ODg2NywiLi96aC1tbyI6MzExMzMsIi4vemgtbW8u''@;'; put 'put ''anMiOjMxMTMzLCIuL3poLXR3Ijo4MzI5MSwiLi96aC10dy5qcyI6ODMyOTF9O2Z1bmN0aW9uIEIoRWUpe3ZhciBVPUUoRWUpO3JldHVybiBMKFUpfWZ1bmN0aW9uIEUoRWUpe2lmKCFMLm8obWUsRWUpKXt2YXIgVT1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitFZSsiJyIpO3Ro''@;'; put 'put ''cm93IFUuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsVX1yZXR1cm4gbWVbRWVdfUIua2V5cz1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhtZSl9LEIucmVzb2x2ZT1FLFhlLmV4cG9ydHM9QixCLmlkPTQ2NzAwfSw3ODc3MzooKT0+e30sODA5NTA6KCk9Pnt9LDQ2NjAxOigpPT57fSw4''@;'; put 'put ''NjIzOigpPT57fSw3NzQ4OigpPT57fSw4NTU2ODooKT0+e30sMTk1Mjc6KCk9Pnt9LDY5MzMxOigpPT57fSw1NjYxOTooKT0+e30sNzcxMDg6KCk9Pnt9LDUyMzYxOigpPT57fSw5NDYxNjooKT0+e30sMzUxNTk6KCk9Pnt9LDc1NzAxOigpPT57fSwxNzE1NjpYZT0+e2Z1bmN0aW9uIEplKG1l''@;'; put 'put ''LEIsRSxFZSxVLFEsail7dHJ5e3ZhciByZT1tZVtRXShqKSxhZT1yZS52YWx1ZX1jYXRjaChZKXtyZXR1cm4gdm9pZCBFKFkpfXJlLmRvbmU/QihhZSk6UHJvbWlzZS5yZXNvbHZlKGFlKS50aGVuKEVlLFUpfVhlLmV4cG9ydHM9ZnVuY3Rpb24gTChtZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IEI9dGhpcyxFPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oRWUsVSl7dmFyIFE9bWUuYXBwbHkoQixFKTtmdW5jdGlvbiBqKGFlKXtKZShRLEVlLFUsaixyZSwibmV4dCIsYWUpfWZ1bmN0aW9uIHJlKGFlKXtKZShRLEVlLFUsaixyZSwidGhyb3ciLGFlKX1qKHZvaWQg''@;'; put 'put ''MCl9KX19LFhlLmV4cG9ydHMuX19lc01vZHVsZT0hMCxYZS5leHBvcnRzLmRlZmF1bHQ9WGUuZXhwb3J0c30sNDQ5NDY6WGU9PnsidXNlIHN0cmljdCI7WGUuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImFlcy0xMjgtZWNiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MCwibW9kZSI6''@;'; put 'put ''IkVDQiIsInR5cGUiOiJibG9jayJ9LCJhZXMtMTkyLWVjYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjAsIm1vZGUiOiJFQ0IiLCJ0eXBlIjoiYmxvY2sifSwiYWVzLTI1Ni1lY2IiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjowLCJtb2RlIjoiRUNCIiwidHlwZSI6''@;'; put 'put ''ImJsb2NrIn0sImFlcy0xMjgtY2JjIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJDQkMiLCJ0eXBlIjoiYmxvY2sifSwiYWVzLTE5Mi1jYmMiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJh''@;'; put 'put ''ZXMtMjU2LWNiYyI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlczEyOCI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlczE5MiI6eyJjaXBoZXIi''@;'; put 'put ''OiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlczI1NiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlcy0xMjgtY2ZiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4''@;'; put 'put ''LCJpdiI6MTYsIm1vZGUiOiJDRkIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xOTItY2ZiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJDRkIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0yNTYtY2ZiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYs''@;'; put 'put ''Im1vZGUiOiJDRkIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xMjgtY2ZiOCI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ0ZCOCIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTE5Mi1jZmI4Ijp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUi''@;'; put 'put ''OiJDRkI4IiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMjU2LWNmYjgiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNGQjgiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xMjgtY2ZiMSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ0ZC''@;'; put 'put ''MSIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTE5Mi1jZmIxIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJDRkIxIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMjU2LWNmYjEiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNGQjEiLCJ0''@;'; put 'put ''eXBlIjoic3RyZWFtIn0sImFlcy0xMjgtb2ZiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJPRkIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xOTItb2ZiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJPRkIiLCJ0eXBlIjoic3Ry''@;'; put 'put ''ZWFtIn0sImFlcy0yNTYtb2ZiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJPRkIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xMjgtY3RyIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJDVFIiLCJ0eXBlIjoic3RyZWFtIn0sImFl''@;'; put 'put ''cy0xOTItY3RyIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJDVFIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0yNTYtY3RyIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJDVFIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xMjgtZ2Nt''@;'; put 'put ''Ijp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTIsIm1vZGUiOiJHQ00iLCJ0eXBlIjoiYXV0aCJ9LCJhZXMtMTkyLWdjbSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjEyLCJtb2RlIjoiR0NNIiwidHlwZSI6ImF1dGgifSwiYWVzLTI1Ni1nY20iOnsiY2lwaGVyIjoi''@;'; put 'put ''QUVTIiwia2V5IjoyNTYsIml2IjoxMiwibW9kZSI6IkdDTSIsInR5cGUiOiJhdXRoIn19Jyl9LDc1MjA3OlhlPT57InVzZSBzdHJpY3QiO1hlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJzaGEyMjRXaXRoUlNBRW5jcnlwdGlvbiI6eyJzaWduIjoicnNhIiwiaGFzaCI6InNoYTIyNCIsImlkIjoi''@;'; put 'put ''MzAyZDMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjA0MDUwMDA0MWMifSwiUlNBLVNIQTIyNCI6eyJzaWduIjoiZWNkc2EvcnNhIiwiaGFzaCI6InNoYTIyNCIsImlkIjoiMzAyZDMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjA0MDUwMDA0MWMifSwic2hhMjU2V2l0aFJTQUVuY3J5cHRpb24iOnsi''@;'; put 'put ''c2lnbiI6InJzYSIsImhhc2giOiJzaGEyNTYiLCJpZCI6IjMwMzEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAwNDIwIn0sIlJTQS1TSEEyNTYiOnsic2lnbiI6ImVjZHNhL3JzYSIsImhhc2giOiJzaGEyNTYiLCJpZCI6IjMwMzEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAw''@;'; put 'put ''NDIwIn0sInNoYTM4NFdpdGhSU0FFbmNyeXB0aW9uIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoic2hhMzg0IiwiaWQiOiIzMDQxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDIwNTAwMDQzMCJ9LCJSU0EtU0hBMzg0Ijp7InNpZ24iOiJlY2RzYS9yc2EiLCJoYXNoIjoic2hhMzg0IiwiaWQiOiIz''@;'; put 'put ''MDQxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDIwNTAwMDQzMCJ9LCJzaGE1MTJXaXRoUlNBRW5jcnlwdGlvbiI6eyJzaWduIjoicnNhIiwiaGFzaCI6InNoYTUxMiIsImlkIjoiMzA1MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAzMDUwMDA0NDAifSwiUlNBLVNIQTUxMiI6eyJzaWduIjoi''@;'; put 'put ''ZWNkc2EvcnNhIiwiaGFzaCI6InNoYTUxMiIsImlkIjoiMzA1MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAzMDUwMDA0NDAifSwiUlNBLVNIQTEiOnsic2lnbiI6InJzYSIsImhhc2giOiJzaGExIiwiaWQiOiIzMDIxMzAwOTA2MDUyYjBlMDMwMjFhMDUwMDA0MTQifSwiZWNkc2Etd2l0aC1T''@;'; put 'put ''SEExIjp7InNpZ24iOiJlY2RzYSIsImhhc2giOiJzaGExIiwiaWQiOiIifSwic2hhMjU2Ijp7InNpZ24iOiJlY2RzYSIsImhhc2giOiJzaGEyNTYiLCJpZCI6IiJ9LCJzaGEyMjQiOnsic2lnbiI6ImVjZHNhIiwiaGFzaCI6InNoYTIyNCIsImlkIjoiIn0sInNoYTM4NCI6eyJzaWduIjoiZWNk''@;'; put 'put ''c2EiLCJoYXNoIjoic2hhMzg0IiwiaWQiOiIifSwic2hhNTEyIjp7InNpZ24iOiJlY2RzYSIsImhhc2giOiJzaGE1MTIiLCJpZCI6IiJ9LCJEU0EtU0hBIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMSIsImlkIjoiIn0sIkRTQS1TSEExIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMSIs''@;'; put 'put ''ImlkIjoiIn0sIkRTQSI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTEiLCJpZCI6IiJ9LCJEU0EtV0lUSC1TSEEyMjQiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEyMjQiLCJpZCI6IiJ9LCJEU0EtU0hBMjI0Ijp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMjI0IiwiaWQiOiIifSwiRFNB''@;'; put 'put ''LVdJVEgtU0hBMjU2Ijp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMjU2IiwiaWQiOiIifSwiRFNBLVNIQTI1NiI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTI1NiIsImlkIjoiIn0sIkRTQS1XSVRILVNIQTM4NCI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTM4NCIsImlkIjoiIn0sIkRT''@;'; put 'put ''QS1TSEEzODQiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEzODQiLCJpZCI6IiJ9LCJEU0EtV0lUSC1TSEE1MTIiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGE1MTIiLCJpZCI6IiJ9LCJEU0EtU0hBNTEyIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhNTEyIiwiaWQiOiIifSwiRFNBLVJJ''@;'; put 'put ''UEVNRDE2MCI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InJtZDE2MCIsImlkIjoiIn0sInJpcGVtZDE2MFdpdGhSU0EiOnsic2lnbiI6InJzYSIsImhhc2giOiJybWQxNjAiLCJpZCI6IjMwMjEzMDA5MDYwNTJiMjQwMzAyMDEwNTAwMDQxNCJ9LCJSU0EtUklQRU1EMTYwIjp7InNpZ24iOiJyc2Ei''@;'; put 'put ''LCJoYXNoIjoicm1kMTYwIiwiaWQiOiIzMDIxMzAwOTA2MDUyYjI0MDMwMjAxMDUwMDA0MTQifSwibWQ1V2l0aFJTQUVuY3J5cHRpb24iOnsic2lnbiI6InJzYSIsImhhc2giOiJtZDUiLCJpZCI6IjMwMjAzMDBjMDYwODJhODY0ODg2ZjcwZDAyMDUwNTAwMDQxMCJ9LCJSU0EtTUQ1Ijp7InNp''@;'; put 'put ''Z24iOiJyc2EiLCJoYXNoIjoibWQ1IiwiaWQiOiIzMDIwMzAwYzA2MDgyYTg2NDg4NmY3MGQwMjA1MDUwMDA0MTAifX0nKX0sMTMwODpYZT0+eyJ1c2Ugc3RyaWN0IjtYZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siMS4zLjEzMi4wLjEwIjoic2VjcDI1NmsxIiwiMS4zLjEzMi4wLjMzIjoicDIy''@;'; put 'put ''NCIsIjEuMi44NDAuMTAwNDUuMy4xLjEiOiJwMTkyIiwiMS4yLjg0MC4xMDA0NS4zLjEuNyI6InAyNTYiLCIxLjMuMTMyLjAuMzQiOiJwMzg0IiwiMS4zLjEzMi4wLjM1IjoicDUyMSJ9Jyl9LDI5Nzk5OlhlPT57InVzZSBzdHJpY3QiO1hlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJtb2RwMSI6''@;'; put 'put ''eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1''@;'; put 'put ''ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzYTM2MjBmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHAyIjp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEw''@;'; put 'put ''ODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNjUzODFmZmZmZmZmZmZm''@;'; put 'put ''ZmZmZmZmIn0sIm1vZHA1Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQz''@;'; put 'put ''NzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1''@;'; put 'put ''NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTIzNzMyN2ZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDE0Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2Mjhi''@;'; put 'put ''ODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5''@;'; put 'put ''ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMy''@;'; put 'put ''OTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWNhYTY4ZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwMTUiOnsiZ2VuIjoiMDIi''@;'; put 'put ''LCJwcmltZSI6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1''@;'; put 'put ''ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJi''@;'; put 'put ''OWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4''@;'; put 'put ''ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNl''@;'; put 'put ''Yzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5M2FkMmNhZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwMTYiOnsiZ2VuIjoiMDIiLCJwcmltZSI6ImZmZmZmZmZmZmZmZmZm''@;'; put 'put ''ZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJm''@;'; put 'put ''ZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRl''@;'; put 'put ''NGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3''@;'; put 'put ''YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2Ji''@;'; put 'put ''ZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJiYzJk''@;'; put 'put ''YjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1YzkzNDA2''@;'; put 'put ''MzE5OWZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDE3Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFi''@;'; put 'put ''MzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYz''@;'; put 'put ''ZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1''@;'; put 'put ''NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5''@;'; put 'put ''ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcx''@;'; put 'put ''OWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYy''@;'; put 'put ''MTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwMjg0OTIzNmMzZmFiNGQyN2M3MDI2YzFkNGRjYjI2MDI2NDZkZWM5NzUxZTc2M2RiYTM3YmRmOGZmOTQwNmFkOWU1MzBlZTVkYjM4MmY0MTMwMDFhZWIwNmE1M2VkOTAyN2Q4''@;'; put 'put ''MzExNzk3MjdiMDg2NWE4OTE4ZGEzZWRiZWJjZjliMTRlZDQ0Y2U2Y2JhY2VkNGJiMWJkYjdmMTQ0N2U2Y2MyNTRiMzMyMDUxNTEyYmQ3YWY0MjZmYjhmNDAxMzc4Y2QyYmY1OTgzY2EwMWM2NGI5MmVjZjAzMmVhMTVkMTcyMWQwM2Y0ODJkN2NlNmU3NGZlZjZkNTVlNzAyZjQ2OTgwYzgyYjVh''@;'; put 'put ''ODQwMzE5MDBiMWM5ZTU5ZTdjOTdmYmVjN2U4ZjMyM2E5N2E3ZTM2Y2M4OGJlMGYxZDQ1YjdmZjU4NWFjNTRiZDQwN2IyMmI0MTU0YWFjYzhmNmQ3ZWJmNDhlMWQ4MTRjYzVlZDIwZjgwMzdlMGE3OTcxNWVlZjI5YmUzMjgwNmExZDU4YmI3YzVkYTc2ZjU1MGFhM2Q4YTFmYmZmMGViMTljY2Ix''@;'; put 'put ''YTMxM2Q1NWNkYTU2YzllYzJlZjI5NjMyMzg3ZmU4ZDc2ZTNjMDQ2ODA0M2U4ZjY2M2Y0ODYwZWUxMmJmMmQ1YjBiNzQ3NGQ2ZTY5NGY5MWU2ZGNjNDAyNGZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDE4Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4''@;'; put 'put ''YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRl''@;'; put 'put ''ZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZj''@;'; put 'put ''MDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYx''@;'; put 'put ''Y2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZj''@;'; put 'put ''NzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVm''@;'; put 'put ''YzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwMjg0OTIzNmMzZmFiNGQy''@;'; put 'put ''N2M3MDI2YzFkNGRjYjI2MDI2NDZkZWM5NzUxZTc2M2RiYTM3YmRmOGZmOTQwNmFkOWU1MzBlZTVkYjM4MmY0MTMwMDFhZWIwNmE1M2VkOTAyN2Q4MzExNzk3MjdiMDg2NWE4OTE4ZGEzZWRiZWJjZjliMTRlZDQ0Y2U2Y2JhY2VkNGJiMWJkYjdmMTQ0N2U2Y2MyNTRiMzMyMDUxNTEyYmQ3YWY0''@;'; put 'put ''MjZmYjhmNDAxMzc4Y2QyYmY1OTgzY2EwMWM2NGI5MmVjZjAzMmVhMTVkMTcyMWQwM2Y0ODJkN2NlNmU3NGZlZjZkNTVlNzAyZjQ2OTgwYzgyYjVhODQwMzE5MDBiMWM5ZTU5ZTdjOTdmYmVjN2U4ZjMyM2E5N2E3ZTM2Y2M4OGJlMGYxZDQ1YjdmZjU4NWFjNTRiZDQwN2IyMmI0MTU0YWFjYzhm''@;'; put 'put ''NmQ3ZWJmNDhlMWQ4MTRjYzVlZDIwZjgwMzdlMGE3OTcxNWVlZjI5YmUzMjgwNmExZDU4YmI3YzVkYTc2ZjU1MGFhM2Q4YTFmYmZmMGViMTljY2IxYTMxM2Q1NWNkYTU2YzllYzJlZjI5NjMyMzg3ZmU4ZDc2ZTNjMDQ2ODA0M2U4ZjY2M2Y0ODYwZWUxMmJmMmQ1YjBiNzQ3NGQ2ZTY5NGY5MWU2''@;'; put 'put ''ZGJlMTE1OTc0YTM5MjZmMTJmZWU1ZTQzODc3N2NiNmE5MzJkZjhjZDhiZWM0ZDA3M2I5MzFiYTNiYzgzMmI2OGQ5ZGQzMDA3NDFmYTdiZjhhZmM0N2VkMjU3NmY2OTM2YmE0MjQ2NjNhYWI2MzljNWFlNGY1NjgzNDIzYjQ3NDJiZjFjOTc4MjM4ZjE2Y2JlMzlkNjUyZGUzZmRiOGJlZmM4NDhh''@;'; put 'put ''ZDkyMjIyMmUwNGE0MDM3YzA3MTNlYjU3YTgxYTIzZjBjNzM0NzNmYzY0NmNlYTMwNmI0YmNiYzg4NjJmODM4NWRkZmE5ZDRiN2ZhMmMwODdlODc5NjgzMzAzZWQ1YmRkM2EwNjJiM2NmNWIzYTI3OGE2NmQyYTEzZjgzZjQ0ZjgyZGRmMzEwZWUwNzRhYjZhMzY0NTk3ZTg5OWEwMjU1ZGMxNjRm''@;'; put 'put ''MzFjYzUwODQ2ODUxZGY5YWI0ODE5NWRlZDdlYTFiMWQ1MTBiZDdlZTc0ZDczZmFmMzZiYzMxZWNmYTI2ODM1OTA0NmY0ZWI4NzlmOTI0MDA5NDM4YjQ4MWM2Y2Q3ODg5YTAwMmVkNWVlMzgyYmM5MTkwZGE2ZmMwMjZlNDc5NTU4ZTQ0NzU2NzdlOWFhOWUzMDUwZTI3NjU2OTRkZmM4MWY1NmU4''@;'; put 'put ''ODBiOTZlNzE2MGM5ODBkZDk4ZWRkM2RmZmZmZmZmZmZmZmZmZmZmZiJ9fScpfSwxODU5NzpYZT0+eyJ1c2Ugc3RyaWN0IjtYZS5leHBvcnRzPXtpODoiNi41LjQifX0sNjM0ODA6WGU9PnsidXNlIHN0cmljdCI7WGUuZXhwb3J0cz1KU09OLnBhcnNlKCdbWyI4NzQwIiwiXHU0M2YwXHU0YzMy''@;'; put 'put ''XHU0NjAzXHU0NWE2XHU0NTc4XHV7MjcyNjd9XHU0ZDc3XHU0NWIzXHV7MjdjYjF9XHU0Y2UyXHV7MjdjYzV9XHUzYjk1XHU0NzM2XHU0NzQ0XHU0YzQ3XHU0YzQwXHV7MjQyYmZ9XHV7MjM2MTd9XHV7MjczNTJ9XHV7MjZlOGJ9XHV7MjcwZDJ9XHU0YzU3XHV7MmEzNTF9XHU0NzRmXHU0NWRh''@;'; put 'put ''XHU0Yzg1XHV7MjdjNmN9XHU0ZDA3XHU0YWE0XHU0NmExXHV7MjZiMjN9XHU3MjI1XHV7MjVhNTR9XHV7MjFhNjN9XHV7MjNlMDZ9XHV7MjNmNjF9XHU2NjRkXHU1NmZiIl0sWyI4NzY3IiwiXHU3ZDk1XHU1OTFkXHV7MjhiYjl9XHUzZGY0XHU5NzM0XHV7MjdiZWZ9XHU1YmRiXHV7MjFkNWV9''@;'; put 'put ''XHU1YWE0XHUzNjI1XHV7MjllYjB9XHU1YWQxXHU1YmI3XHU1Y2ZjXHU2NzZlXHU4NTkzXHV7Mjk5NDV9XHU3NDYxXHU3NDlkXHUzODc1XHV7MjFkNTN9XHV7MjM2OWV9XHV7MjYwMjF9XHUzZWVjIl0sWyI4N2ExIiwiXHV7MjU4ZGV9XHUzYWY1XHU3YWZjXHU5Zjk3XHV7MjQxNjF9XHV7Mjg5''@;'; put 'put ''MGR9XHV7MjMxZWF9XHV7MjBhOGF9XHV7MjMyNWV9XHU0MzBhXHU4NDg0XHU5Zjk2XHU5NDJmXHU0OTMwXHU4NjEzXHU1ODk2XHU5NzRhXHU5MjE4XHU3OWQwXHU3YTMyXHU2NjYwXHU2YTI5XHU4ODlkXHU3NDRjXHU3YmM1XHU2NzgyXHU3YTJjXHU1MjRmXHU5MDQ2XHUzNGU2XHU3M2M0XHV7''@;'; put 'put ''MjVkYjl9XHU3NGM2XHU5ZmM3XHU1N2IzXHU0OTJmXHU1NDRjXHU0MTMxXHV7MjM2OGV9XHU1ODE4XHU3YTcyXHV7MjdiNjV9XHU4YjhmXHU0NmFlXHV7MjZlODh9XHU0MTgxXHV7MjVkOTl9XHU3YmFlXHV7MjI0YmN9XHU5ZmM4XHV7MjI0YzF9XHV7MjI0Yzl9XHV7MjI0Y2N9XHU5ZmM5XHU4''@;'; put 'put ''NTA0XHV7MjM1YmJ9XHU0MGI0XHU5ZmNhXHU0NGUxXHV7MmFkZmZ9XHU2MmMxXHU3MDZlXHU5ZmNiIl0sWyI4ODQwIiwiXHUzMWMwIiw0LCJcdXsyMDEwY31cdTMxYzVcdXsyMDBkMX1cdXsyMDBjZH1cdTMxYzZcdTMxYzdcdXsyMDBjYn1cdXsyMWZlOH1cdTMxYzhcdXsyMDBjYX1cdTMxYzlc''@;'; put 'put ''dTMxY2FcdTMxY2JcdTMxY2NcdXsyMDEwZX1cdTMxY2RcdTMxY2VcdTAxMDBceGMxXHUwMWNkXHhjMFx1MDExMlx4YzlcdTAxMWFceGM4XHUwMTRjXHhkM1x1MDFkMVx4ZDJcdTBmZmZceGNhXHUwMzA0XHUxZWJlXHUwZmZmXHhjYVx1MDMwY1x1MWVjMFx4Y2FcdTAxMDFceGUxXHUwMWNlXHhl''@;'; put 'put ''MFx1MDI1MVx1MDExM1x4ZTlcdTAxMWJceGU4XHUwMTJiXHhlZFx1MDFkMFx4ZWNcdTAxNGRceGYzXHUwMWQyXHhmMlx1MDE2Ylx4ZmFcdTAxZDRceGY5XHUwMWQ2XHUwMWQ4XHUwMWRhIl0sWyI4OGExIiwiXHUwMWRjXHhmY1x1MGZmZlx4ZWFcdTAzMDRcdTFlYmZcdTBmZmZceGVhXHUwMzBj''@;'; put 'put ''XHUxZWMxXHhlYVx1MDI2MVx1MjNkYVx1MjNkYiJdLFsiODk0MCIsIlx1ezJhM2E5fVx1ezIxMTQ1fSJdLFsiODk0MyIsIlx1NjUwYSJdLFsiODk0NiIsIlx1NGUzZFx1NmVkZFx1OWQ0ZVx1OTFkZiJdLFsiODk0YyIsIlx1ezI3NzM1fVx1NjQ5MVx1NGYxYVx1NGYyOFx1NGZhOFx1NTE1Nlx1''@;'; put 'put ''NTE3NFx1NTE5Y1x1NTFlNFx1NTJhMVx1NTJhOFx1NTMzYlx1NTM0ZVx1NTNkMVx1NTNkOFx1NTZlMlx1NThmMFx1NTkwNFx1NTkwN1x1NTkzMlx1NTkzNFx1NWI2Nlx1NWI5ZVx1NWI5Zlx1NWM5YVx1NWU4Nlx1NjAzYlx1NjU4OVx1NjdmZVx1NjgwNFx1Njg2NVx1NmQ0ZVx1NzBiY1x1NzUz''@;'; put 'put ''NVx1N2VhNFx1N2VhY1x1N2ViYVx1N2VjN1x1N2VjZlx1N2VkZlx1N2YwNlx1N2YzN1x1ODI3YVx1ODJjZlx1ODM2Zlx1ODljNlx1OGJiZVx1OGJlMlx1OGY2Nlx1OGY2N1x1OGY2ZSJdLFsiODlhMSIsIlx1NzQxMVx1N2NmY1x1N2RjZFx1Njk0Nlx1N2FjOVx1NTIyNyJdLFsiODlhYiIsIlx1''@;'; put 'put ''OTE4Y1x1NzhiOFx1OTE1ZVx1ODBiYyJdLFsiODliMCIsIlx1OGQwYlx1ODBmNlx1ezIwOWU3fSJdLFsiODliNSIsIlx1ODA5Zlx1OWVjN1x1NGNjZFx1OWRjOVx1OWUwY1x1NGMzZVx1ezI5ZGY2fVx1ezI3MDBlfVx1OWUwYVx1ezJhMTMzfVx1MzVjMSJdLFsiODljMSIsIlx1NmU5YVx1ODIz''@;'; put 'put ''ZVx1NzUxOSJdLFsiODljNSIsIlx1NDkxMVx1OWE2Y1x1OWE4Zlx1OWY5OVx1Nzk4N1x1ezI4NDZjfVx1ezIxZGNhfVx1ezIwNWQwfVx1ezIyYWU2fVx1NGUyNFx1NGU4MVx1NGU4MFx1NGU4N1x1NGViZlx1NGVlYlx1NGYzN1x1MzQ0Y1x1NGZiZFx1M2U0OFx1NTAwM1x1NTA4OFx1MzQ3ZFx1''@;'; put 'put ''MzQ5M1x1MzRhNVx1NTE4Nlx1NTkwNVx1NTFkYlx1NTFmY1x1NTIwNVx1NGU4OVx1NTI3OVx1NTI5MFx1NTMyN1x1MzVjN1x1NTNhOVx1MzU1MVx1NTNiMFx1MzU1M1x1NTNjMlx1NTQyM1x1MzU2ZFx1MzU3Mlx1MzY4MVx1NTQ5M1x1NTRhM1x1NTRiNFx1NTRiOVx1NTRkMFx1NTRlZlx1NTUx''@;'; put 'put ''OFx1NTUyM1x1NTUyOFx1MzU5OFx1NTUzZlx1MzVhNVx1MzViZlx1NTVkN1x1MzVjNSJdLFsiOGE0MCIsIlx1ezI3ZDg0fVx1NTUyNSJdLFsiOGE0MyIsIlx1ezIwYzQyfVx1ezIwZDE1fVx1ezI1MTJifVx1NTU5MFx1ezIyY2M2fVx1MzllY1x1ezIwMzQxfVx1OGU0Nlx1ezI0ZGI4fVx1ezI5''@;'; put 'put ''NGU1fVx1NDA1M1x1ezI4MGJlfVx1Nzc3YVx1ezIyYzM4fVx1M2EzNFx1NDdkNVx1ezI4MTVkfVx1ezI2OWYyfVx1ezI0ZGVhfVx1NjRkZFx1ezIwZDdjfVx1ezIwZmI0fVx1ezIwY2Q1fVx1ezIxMGY0fVx1NjQ4ZFx1OGU3ZVx1ezIwZTk2fVx1ezIwYzBifVx1ezIwZjY0fVx1ezIyY2E5fVx1''@;'; put 'put ''ezI4MjU2fVx1ezI0NGQzfSJdLFsiOGE2NCIsIlx1ezIwZDQ2fVx1ezI5YTRkfVx1ezI4MGU5fVx1NDdmNFx1ezI0ZWE3fVx1ezIyY2MyfVx1OWFiMlx1M2E2N1x1ezI5NWY0fVx1M2ZlZFx1MzUwNlx1ezI1MmM3fVx1ezI5N2Q0fVx1ezI3OGM4fVx1ezIyZDQ0fVx1OWQ2ZVx1OTgxNSJdLFsi''@;'; put 'put ''OGE3NiIsIlx1NDNkOVx1ezI2MGE1fVx1NjRiNFx1NTRlM1x1ezIyZDRjfVx1ezIyYmNhfVx1ezIxMDc3fVx1MzlmYlx1ezIxMDZmfSJdLFsiOGFhMSIsIlx1ezI2NmRhfVx1ezI2NzE2fVx1ezI3OWEwfVx1NjRlYVx1ezI1MDUyfVx1ezIwYzQzfVx1OGU2OFx1ezIyMWExfVx1ezI4YjRjfVx1''@;'; put 'put ''ezIwNzMxfSJdLFsiOGFhYyIsIlx1NDgwYlx1ezIwMWE5fVx1M2ZmYVx1NTg3M1x1ezIyZDhkfSJdLFsiOGFiMiIsIlx1ezI0NWM4fVx1ezIwNGZjfVx1ezI2MDk3fVx1ezIwZjRjfVx1ezIwZDk2fVx1NTU3OVx1NDBiYlx1NDNiYSJdLFsiOGFiYiIsIlx1NGFiNFx1ezIyYTY2fVx1ezIxMDlk''@;'; put 'put ''fVx1ODFhYVx1OThmNVx1ezIwZDljfVx1NjM3OVx1MzlmZVx1ezIyNzc1fVx1OGRjMFx1NTZhMVx1NjQ3Y1x1M2U0MyJdLFsiOGFjOSIsIlx1ezJhNjAxfVx1ezIwZTA5fVx1ezIyYWNmfVx1ezIyY2M5fSJdLFsiOGFjZSIsIlx1ezIxMGM4fVx1ezIzOWMyfVx1Mzk5Mlx1M2EwNlx1ezI4Mjli''@;'; put 'put ''fVx1MzU3OFx1ezI1ZTQ5fVx1ezIyMGM3fVx1NTY1Mlx1ezIwZjMxfVx1ezIyY2IyfVx1ezI5NzIwfVx1MzRiY1x1NmMzZFx1ezI0ZTNifSJdLFsiOGFkZiIsIlx1ezI3NTc0fVx1ezIyZThifVx1ezIyMjA4fVx1ezJhNjVifVx1ezI4Y2NkfVx1ezIwZTdhfVx1ezIwYzM0fVx1ezI2ODFjfVx1''@;'; put 'put ''N2Y5M1x1ezIxMGNmfVx1ezIyODAzfVx1ezIyOTM5fVx1MzVmYlx1ezI1MWUzfVx1ezIwZThjfVx1ezIwZjhkfVx1ezIwZWFhfVx1M2Y5M1x1ezIwZjMwfVx1ezIwZDQ3fVx1ezIxMTRmfVx1ezIwZTRjfSJdLFsiOGFmNiIsIlx1ezIwZWFifVx1ezIwYmE5fVx1ezIwZDQ4fVx1ezIxMGMwfVx1''@;'; put 'put ''ezIxMTNkfVx1M2ZmOVx1ezIyNjk2fVx1NjQzMlx1ezIwZmFkfSJdLFsiOGI0MCIsIlx1ezIzM2Y0fVx1ezI3NjM5fVx1ezIyYmNlfVx1ezIwZDdlfVx1ezIwZDdmfVx1ezIyYzUxfVx1ezIyYzU1fVx1M2ExOFx1ezIwZTk4fVx1ezIxMGM3fVx1ezIwZjJlfVx1ezJhNjMyfVx1ezI2YjUwfVx1''@;'; put 'put ''ezI4Y2QyfVx1ezI4ZDk5fVx1ezI4Y2NhfVx1OTVhYVx1NTRjY1x1ODJjNFx1NTViOSJdLFsiOGI1NSIsIlx1ezI5ZWMzfVx1OWMyNlx1OWFiNlx1ezI3NzVlfVx1ezIyZGVlfVx1NzE0MFx1ODE2ZFx1ODBlY1x1NWMxY1x1ezI2NTcyfVx1ODEzNFx1Mzc5N1x1NTM1Zlx1ezI4MGJkfVx1OTFi''@;'; put 'put ''Nlx1ezIwZWZhfVx1ezIwZTBmfVx1ezIwZTc3fVx1ezIwZWZifVx1MzVkZFx1ezI0ZGVifVx1MzYwOVx1ezIwY2Q2fVx1NTZhZlx1ezIyN2I1fVx1ezIxMGM5fVx1ezIwZTEwfVx1ezIwZTc4fVx1ezIxMDc4fVx1ezIxMTQ4fVx1ezI4MjA3fVx1ezIxNDU1fVx1ezIwZTc5fVx1ezI0ZTUwfVx1''@;'; put 'put ''ezIyZGE0fVx1NWE1NFx1ezIxMDFkfVx1ezIxMDFlfVx1ezIxMGY1fVx1ezIxMGY2fVx1NTc5Y1x1ezIwZTExfSJdLFsiOGJhMSIsIlx1ezI3Njk0fVx1ezI4MmNkfVx1ezIwZmI1fVx1ezIwZTdifVx1ezI1MTdlfVx1MzcwM1x1ezIwZmI2fVx1ezIxMTgwfVx1ezI1MmQ4fVx1ezJhMmJkfVx1''@;'; put 'put ''ezI0OWRhfVx1ezIxODNhfVx1ezI0MTc3fVx1ezI4MjdjfVx1NTg5OVx1NTI2OFx1MzYxYVx1ezI1NzNkfVx1N2JiMlx1NWI2OFx1NDgwMFx1NGIyY1x1OWYyN1x1NDllN1x1OWMxZlx1OWI4ZFx1ezI1Yjc0fVx1ezIzMTNkfVx1NTVmYlx1MzVmMlx1NTY4OVx1NGUyOFx1NTkwMlx1ezIxYmMx''@;'; put 'put ''fVx1ezJmODc4fVx1OTc1MVx1ezIwMDg2fVx1NGU1Ylx1NGViYlx1MzUzZVx1NWMyM1x1NWY1MVx1NWZjNFx1MzhmYVx1NjI0Y1x1NjUzNVx1NmI3YVx1NmMzNVx1NmMzYVx1NzA2Y1x1NzIyYlx1NGUyY1x1NzJhZFx1ezI0OGU5fVx1N2Y1Mlx1NzkzYlx1N2NmOVx1N2Y1M1x1ezI2MjZhfVx1''@;'; put 'put ''MzRjMSJdLFsiOGJkZSIsIlx1ezI2MzRifVx1ODAwMlx1ODA4MFx1ezI2NjEyfVx1ezI2OTUxfVx1NTM1ZFx1ODg2NFx1ODljMVx1ezI3OGIyfVx1OGJhMFx1OGQxZFx1OTQ4NVx1OTU3OFx1OTU3Zlx1OTVlOFx1ezI4ZTBmfVx1OTdlNlx1OTg3NVx1OThjZVx1OThkZVx1OTk2M1x1ezI5ODEw''@;'; put 'put ''fVx1OWM3Y1x1OWUxZlx1OWVjNFx1NmI2Zlx1ZjkwN1x1NGUzN1x1ezIwMDg3fVx1OTYxZFx1NjIzN1x1OTRhMiJdLFsiOGM0MCIsIlx1NTAzYlx1NmRmZVx1ezI5YzczfVx1OWZhNlx1M2RjOVx1ODg4Zlx1ezI0MTRlfVx1NzA3N1x1NWNmNVx1NGIyMFx1ezI1MWNkfVx1MzU1OVx1ezI1ZDMw''@;'; put 'put ''fVx1NjEyMlx1ezI4YTMyfVx1OGZhN1x1OTFmNlx1NzE5MVx1NjcxOVx1NzNiYVx1ezIzMjgxfVx1ezJhMTA3fVx1M2M4Ylx1ezIxOTgwfVx1NGIxMFx1NzhlNFx1NzQwMlx1NTFhZVx1ezI4NzBmfVx1NDAwOVx1NmE2M1x1ezJhMmJhfVx1NDIyM1x1ODYwZlx1ezIwYTZmfVx1N2EyYVx1ezI5''@;'; put 'put ''OTQ3fVx1ezI4YWVhfVx1OTc1NVx1NzA0ZFx1NTMyNFx1ezIyMDdlfVx1OTNmNFx1NzZkOVx1ezI4OWUzfVx1OWZhN1x1NzdkZFx1NGVhM1x1NGZmMFx1NTBiY1x1NGUyZlx1NGYxN1x1OWZhOFx1NTQzNFx1N2Q4Ylx1NTg5Mlx1NThkMFx1ezIxZGI2fVx1NWU5Mlx1NWU5OVx1NWZjMlx1ezIy''@;'; put 'put ''NzEyfVx1NjU4YiJdLFsiOGNhMSIsIlx1ezIzM2Y5fVx1NjkxOVx1NmE0M1x1ezIzYzYzfVx1NmNmZiJdLFsiOGNhNyIsIlx1NzIwMFx1ezI0NTA1fVx1NzM4Y1x1M2VkYlx1ezI0YTEzfVx1NWIxNVx1NzRiOVx1OGI4M1x1ezI1Y2E0fVx1ezI1Njk1fVx1N2E5M1x1N2JlY1x1N2NjM1x1N2U2''@;'; put 'put ''Y1x1ODJmOFx1ODU5N1x1OWZhOVx1ODg5MFx1OWZhYVx1OGViOVx1OWZhYlx1OGZjZlx1ODU1Zlx1OTllMFx1OTIyMVx1OWZhY1x1ezI4ZGI5fVx1ezIxNDNmfVx1NDA3MVx1NDJhMlx1NWExYSJdLFsiOGNjOSIsIlx1OTg2OFx1Njc2Ylx1NDI3Nlx1NTczZCJdLFsiOGNjZSIsIlx1ODVkNlx1''@;'; put 'put ''ezI0OTdifVx1ODJiZlx1ezI3MTBkfVx1NGM4MVx1ezI2ZDc0fVx1NWQ3Ylx1ezI2YjE1fVx1ezI2ZmJlfVx1OWZhZFx1OWZhZVx1NWI5Nlx1OWZhZlx1NjZlN1x1N2U1Ylx1NmU1N1x1NzljYVx1M2Q4OFx1NDRjM1x1ezIzMjU2fVx1ezIyNzk2fVx1NDM5YVx1NDUzNiJdLFsiOGNlNiIsIlx1''@;'; put 'put ''NWNkNVx1ezIzYjFhfVx1OGFmOVx1NWM3OFx1M2QxMlx1ezIzNTUxfVx1NWQ3OFx1OWZiMlx1NzE1N1x1NDU1OFx1ezI0MGVjfVx1ezIxZTIzfVx1NGM3N1x1Mzk3OFx1MzQ0YVx1ezIwMWE0fVx1ezI2YzQxfVx1OGFjY1x1NGZiNFx1ezIwMjM5fVx1NTliZlx1ODE2Y1x1OTg1Nlx1ezI5OGZh''@;'; put 'put ''fVx1NWYzYiJdLFsiOGQ0MCIsIlx1ezIwYjlmfSJdLFsiOGQ0MiIsIlx1ezIyMWMxfVx1ezI4OTZkfVx1NDEwMlx1NDZiYlx1ezI5MDc5fVx1M2YwN1x1OWZiM1x1ezJhMWI1fVx1NDBmOFx1MzdkNlx1NDZmN1x1ezI2YzQ2fVx1NDE3Y1x1ezI4NmIyfVx1ezI3M2ZmfVx1NDU2ZFx1MzhkNFx1''@;'; put 'put ''ezI1NDlhfVx1NDU2MVx1NDUxYlx1NGQ4OVx1NGM3Ylx1NGQ3Nlx1NDVlYVx1M2ZjOFx1ezI0YjBmfVx1MzY2MVx1NDRkZVx1NDRiZFx1NDFlZFx1NWQzZVx1NWQ0OFx1NWQ1Nlx1M2RmY1x1MzgwZlx1NWRhNFx1NWRiOVx1MzgyMFx1MzgzOFx1NWU0Mlx1NWViZFx1NWYyNVx1NWY4M1x1Mzkw''@;'; put 'put ''OFx1MzkxNFx1MzkzZlx1Mzk0ZFx1NjBkN1x1NjEzZFx1NWNlNVx1Mzk4OVx1NjFiN1x1NjFiOVx1NjFjZlx1MzliOFx1NjIyY1x1NjI5MFx1NjJlNVx1NjMxOFx1MzlmOFx1NTZiMSJdLFsiOGRhMSIsIlx1M2EwM1x1NjNlMlx1NjNmYlx1NjQwN1x1NjQ1YVx1M2E0Ylx1NjRjMFx1NWQxNVx1''@;'; put 'put ''NTYyMVx1OWY5Zlx1M2E5N1x1NjU4Nlx1M2FiZFx1NjVmZlx1NjY1M1x1M2FmMlx1NjY5Mlx1M2IyMlx1NjcxNlx1M2I0Mlx1NjdhNFx1NjgwMFx1M2I1OFx1Njg0YVx1Njg4NFx1M2I3Mlx1M2I3MVx1M2I3Ylx1NjkwOVx1Njk0M1x1NzI1Y1x1Njk2NFx1Njk5Zlx1Njk4NVx1M2JiY1x1Njlk''@;'; put 'put ''Nlx1M2JkZFx1NmE2NVx1NmE3NFx1NmE3MVx1NmE4Mlx1M2JlY1x1NmE5OVx1M2JmMlx1NmFhYlx1NmFiNVx1NmFkNFx1NmFmNlx1NmI4MVx1NmJjMVx1NmJlYVx1NmM3NVx1NmNhYVx1M2NjYlx1NmQwMlx1NmQwNlx1NmQyNlx1NmQ4MVx1M2NlZlx1NmRhNFx1NmRiMVx1NmUxNVx1NmUxOFx1''@;'; put 'put ''NmUyOVx1NmU4Nlx1ezI4OWMwfVx1NmViYlx1NmVlMlx1NmVkYVx1OWY3Zlx1NmVlOFx1NmVlOVx1NmYyNFx1NmYzNFx1M2Q0Nlx1ezIzZjQxfVx1NmY4MVx1NmZiZVx1M2Q2YVx1M2Q3NVx1NzFiN1x1NWM5OVx1M2Q4YVx1NzAyY1x1M2Q5MVx1NzA1MFx1NzA1NFx1NzA2Zlx1NzA3Zlx1NzA4''@;'; put 'put ''OVx1ezIwMzI1fVx1NDNjMVx1MzVmMVx1ezIwZWQ4fSJdLFsiOGU0MCIsIlx1ezIzZWQ3fVx1NTdiZVx1ezI2ZWQzfVx1NzEzZVx1ezI1N2UwfVx1MzY0ZVx1NjlhMlx1ezI4YmU5fVx1NWI3NFx1N2E0OVx1ezI1OGUxfVx1ezI5NGQ5fVx1N2E2NVx1N2E3ZFx1ezI1OWFjfVx1N2FiYlx1N2Fi''@;'; put 'put ''MFx1N2FjMlx1N2FjM1x1NzFkMVx1ezI2NDhkfVx1NDFjYVx1N2FkYVx1N2FkZFx1N2FlYVx1NDFlZlx1NTRiMlx1ezI1YzAxfVx1N2IwYlx1N2I1NVx1N2IyOVx1ezI1MzBlfVx1ezI1Y2ZlfVx1N2JhMlx1N2I2Zlx1ODM5Y1x1ezI1YmI0fVx1ezI2YzdmfVx1N2JkMFx1ODQyMVx1N2I5Mlx1''@;'; put 'put ''N2JiOFx1ezI1ZDIwfVx1M2RhZFx1ezI1YzY1fVx1ODQ5Mlx1N2JmYVx1N2MwNlx1N2MzNVx1ezI1Y2MxfVx1N2M0NFx1N2M4M1x1ezI0ODgyfVx1N2NhNlx1NjY3ZFx1ezI0NTc4fVx1N2NjOVx1N2NjN1x1N2NlNlx1N2M3NFx1N2NmM1x1N2NmNVx1N2NjZSJdLFsiOGVhMSIsIlx1N2U2N1x1''@;'; put 'put ''NDUxZFx1ezI2ZTQ0fVx1N2Q1ZFx1ezI2ZWQ2fVx1NzQ4ZFx1N2Q4OVx1N2RhYlx1NzEzNVx1N2RiM1x1N2RkMlx1ezI0MDU3fVx1ezI2MDI5fVx1N2RlNFx1M2QxM1x1N2RmNVx1ezIxN2Y5fVx1N2RlNVx1ezI4MzZkfVx1N2UxZFx1ezI2MTIxfVx1ezI2MTVhfVx1N2U2ZVx1N2U5Mlx1NDMy''@;'; put 'put ''Ylx1OTQ2Y1x1N2UyN1x1N2Y0MFx1N2Y0MVx1N2Y0N1x1NzkzNlx1ezI2MmQwfVx1OTllMVx1N2Y5N1x1ezI2MzUxfVx1N2ZhM1x1ezIxNjYxfVx1ezIwMDY4fVx1NDU1Y1x1ezIzNzY2fVx1NDUwM1x1ezI4MzNhfVx1N2ZmYVx1ezI2NDg5fVx1ODAwNVx1ODAwOFx1ODAxZFx1ODAyOFx1ODAy''@;'; put 'put ''Zlx1ezJhMDg3fVx1ezI2Y2MzfVx1ODAzYlx1ODAzY1x1ODA2MVx1ezIyNzE0fVx1NDk4OVx1ezI2NjI2fVx1ezIzZGUzfVx1ezI2NmU4fVx1NjcyNVx1ODBhN1x1ezI4YTQ4fVx1ODEwN1x1ODExYVx1NThiMFx1ezIyNmY2fVx1NmM3Zlx1ezI2NDk4fVx1ezI0ZmI4fVx1NjRlN1x1ezIxNDhh''@;'; put 'put ''fVx1ODIxOFx1ezIxODVlfVx1NmE1M1x1ezI0YTY1fVx1ezI0YTk1fVx1NDQ3YVx1ODIyOVx1ezIwYjBkfVx1ezI2YTUyfVx1ezIzZDdlfVx1NGZmOVx1ezIxNGZkfVx1ODRlMlx1ODM2Mlx1ezI2YjBhfVx1ezI0OWE3fVx1ezIzNTMwfVx1ezIxNzczfVx1ezIzZGY4fVx1ODJhYVx1NjkxYlx1''@;'; put 'put ''ezJmOTk0fVx1NDFkYiJdLFsiOGY0MCIsIlx1ODU0Ylx1ODJkMFx1ODMxYVx1ezIwZTE2fVx1ezIxN2I0fVx1MzZjMVx1ezIzMTdkfVx1ezIzNTVhfVx1ODI3Ylx1ODJlMlx1ODMxOFx1ezIzZThifVx1ezI2ZGEzfVx1ezI2YjA1fVx1ezI2Yjk3fVx1ezIzNWNlfVx1M2RiZlx1ODMxZFx1NTVl''@;'; put 'put ''Y1x1ODM4NVx1NDUwYlx1ezI2ZGE1fVx1ODNhY1x1ODNjMVx1ODNkM1x1MzQ3ZVx1ezI2ZWQ0fVx1NmE1N1x1ODU1YVx1MzQ5Nlx1ezI2ZTQyfVx1ezIyZWVmfVx1ODQ1OFx1ezI1YmU0fVx1ODQ3MVx1M2RkM1x1NDRlNFx1NmFhN1x1ODQ0YVx1ezIzY2I1fVx1Nzk1OFx1ODRhOFx1ezI2Yjk2''@;'; put 'put ''fVx1ezI2ZTc3fVx1ezI2ZTQzfVx1ODRkZVx1ODQwZlx1ODM5MVx1NDRhMFx1ODQ5M1x1ODRlNFx1ezI1YzkxfVx1NDI0MFx1ezI1Y2MwfVx1NDU0M1x1ODUzNFx1NWFmMlx1ezI2ZTk5fVx1NDUyN1x1ODU3M1x1NDUxNlx1NjdiZlx1ODYxNiJdLFsiOGZhMSIsIlx1ezI4NjI1fVx1ezI4NjNi''@;'; put 'put ''fVx1ODVjMVx1ezI3MDg4fVx1ODYwMlx1ezIxNTgyfVx1ezI3MGNkfVx1ezJmOWIyfVx1NDU2YVx1ODYyOFx1MzY0OFx1ezIxOGEyfVx1NTNmN1x1ezI3MzlhfVx1ODY3ZVx1ODc3MVx1ezJhMGY4fVx1ODdlZVx1ezIyYzI3fVx1ODdiMVx1ODdkYVx1ODgwZlx1NTY2MVx1ODY2Y1x1Njg1Nlx1''@;'; put 'put ''NDYwZlx1ODg0NVx1ODg0Nlx1ezI3NWUwfVx1ezIzZGI5fVx1ezI3NWU0fVx1ODg1ZVx1ODg5Y1x1NDY1Ylx1ODhiNFx1ODhiNVx1NjNjMVx1ODhjNVx1Nzc3N1x1ezI3NzBmfVx1ODk4N1x1ODk4YVx1ODlhNlx1ODlhOVx1ODlhN1x1ODliY1x1ezI4YTI1fVx1ODllN1x1ezI3OTI0fVx1ezI3''@;'; put 'put ''YWJkfVx1OGE5Y1x1Nzc5M1x1OTFmZVx1OGE5MFx1ezI3YTU5fVx1N2FlOVx1ezI3YjNhfVx1ezIzZjhmfVx1NDcxM1x1ezI3YjM4fVx1NzE3Y1x1OGIwY1x1OGIxZlx1ezI1NDMwfVx1ezI1NTY1fVx1OGIzZlx1OGI0Y1x1OGI0ZFx1OGFhOVx1ezI0YTdhfVx1OGI5MFx1OGI5Ylx1OGFhZlx1''@;'; put 'put ''ezIxNmRmfVx1NDYxNVx1ODg0Zlx1OGM5Ylx1ezI3ZDU0fVx1ezI3ZDhmfVx1ezJmOWQ0fVx1MzcyNVx1ezI3ZDUzfVx1OGNkNlx1ezI3ZDk4fVx1ezI3ZGJkfVx1OGQxMlx1OGQwM1x1ezIxOTEwfVx1OGNkYlx1NzA1Y1x1OGQxMVx1ezI0Y2M5fVx1M2VkMFx1OGQ3NyJdLFsiOTA0MCIsIlx1''@;'; put 'put ''OGRhOVx1ezI4MDAyfVx1ezIxMDE0fVx1ezI0OThhfVx1M2I3Y1x1ezI4MWJjfVx1ezI3MTBjfVx1N2FlN1x1OGVhZFx1OGViNlx1OGVjM1x1OTJkNFx1OGYxOVx1OGYyZFx1ezI4MzY1fVx1ezI4NDEyfVx1OGZhNVx1OTMwM1x1ezJhMjlmfVx1ezIwYTUwfVx1OGZiM1x1NDkyYVx1ezI4OWRl''@;'; put 'put ''fVx1ezI4NTNkfVx1ezIzZGJifVx1NWVmOFx1ezIzMjYyfVx1OGZmOVx1ezJhMDE0fVx1ezI4NmJjfVx1ezI4NTAxfVx1ezIyMzI1fVx1Mzk4MFx1ezI2ZWQ3fVx1OTAzN1x1ezI4NTNjfVx1ezI3YWJlfVx1OTA2MVx1ezI4NTZjfVx1ezI4NjBifVx1OTBhOFx1ezI4NzEzfVx1OTBjNFx1ezI4''@;'; put 'put ''NmU2fVx1OTBhZVx1OTBmZFx1OTE2N1x1M2FmMFx1OTFhOVx1OTFjNFx1N2NhY1x1ezI4OTMzfVx1ezIxZTg5fVx1OTIwZVx1NmM5Zlx1OTI0MVx1OTI2Mlx1ezI1NWI5fVx1OTJiOVx1ezI4YWM2fVx1ezIzYzlifVx1ezI4YjBjfVx1ezI1NWRifSJdLFsiOTBhMSIsIlx1ezIwZDMxfVx1OTMy''@;'; put 'put ''Y1x1OTM2Ylx1ezI4YWUxfVx1ezI4YmVifVx1NzA4Zlx1NWFjM1x1ezI4YWUyfVx1ezI4YWU1fVx1NDk2NVx1OTI0NFx1ezI4YmVjfVx1ezI4YzM5fVx1ezI4YmZmfVx1OTM3M1x1OTQ1Ylx1OGViY1x1OTU4NVx1OTVhNlx1OTQyNlx1OTVhMFx1NmZmNlx1NDJiOVx1ezIyNjdhfVx1ezI4NmQ4''@;'; put 'put ''fVx1ezIxMjdjfVx1ezIzZTJlfVx1NDlkZlx1NmMxY1x1OTY3Ylx1OTY5Nlx1NDE2Y1x1OTZhM1x1ezI2ZWQ1fVx1NjFkYVx1OTZiNlx1NzhmNVx1ezI4YWUwfVx1OTZiZFx1NTNjY1x1NDlhMVx1ezI2Y2I4fVx1ezIwMjc0fVx1ezI2NDEwfVx1ezI5MGFmfVx1ezI5MGU1fVx1ezI0YWQxfVx1''@;'; put 'put ''ezIxOTE1fVx1ezIzMzBhfVx1OTczMVx1ODY0Mlx1OTczNlx1NGEwZlx1NDUzZFx1NDU4NVx1ezI0YWU5fVx1NzA3NVx1NWI0MVx1OTcxYlx1OTc1Y1x1ezI5MWQ1fVx1OTc1N1x1NWI0YVx1ezI5MWVifVx1OTc1Zlx1OTQyNVx1NTBkMFx1ezIzMGI3fVx1ezIzMGJjfVx1OTc4OVx1OTc5Zlx1''@;'; put 'put ''OTdiMVx1OTdiZVx1OTdjMFx1OTdkMlx1OTdlMFx1ezI1NDZjfVx1OTdlZVx1NzQxY1x1ezI5NDMzfVx1OTdmZlx1OTdmNVx1ezI5NDFkfVx1ezI3OTdhfVx1NGFkMVx1OTgzNFx1OTgzM1x1OTg0Ylx1OTg2Nlx1M2IwZVx1ezI3MTc1fVx1M2Q1MVx1ezIwNjMwfVx1ezI0MTVjfSJdLFsiOTE0''@;'; put 'put ''MCIsIlx1ezI1NzA2fVx1OThjYVx1OThiN1x1OThjOFx1OThjN1x1NGFmZlx1ezI2ZDI3fVx1ezIxNmQzfVx1NTViMFx1OThlMVx1OThlNlx1OThlY1x1OTM3OFx1OTkzOVx1ezI0YTI5fVx1NGI3Mlx1ezI5ODU3fVx1ezI5OTA1fVx1OTlmNVx1OWEwY1x1OWEzYlx1OWExMFx1OWE1OFx1ezI1''@;'; put 'put ''NzI1fVx1MzZjNFx1ezI5MGIxfVx1ezI5YmQ1fVx1OWFlMFx1OWFlMlx1ezI5YjA1fVx1OWFmNFx1NGMwZVx1OWIxNFx1OWIyZFx1ezI4NjAwfVx1NTAzNFx1OWIzNFx1ezI2OWE4fVx1MzhjM1x1ezIzMDdkfVx1OWI1MFx1OWI0MFx1ezI5ZDNlfVx1NWE0NVx1ezIxODYzfVx1OWI4ZVx1ezI0''@;'; put 'put ''MjRifVx1OWMwMlx1OWJmZlx1OWMwY1x1ezI5ZTY4fVx1OWRkNFx1ezI5ZmI3fVx1ezJhMTkyfVx1ezJhMWFifVx1ezJhMGUxfVx1ezJhMTIzfVx1ezJhMWRmfVx1OWQ3ZVx1OWQ4M1x1ezJhMTM0fVx1OWUwZVx1Njg4OCJdLFsiOTFhMSIsIlx1OWRjNFx1ezIyMTVifVx1ezJhMTkzfVx1ezJh''@;'; put 'put ''MjIwfVx1ezIxOTNifVx1ezJhMjMzfVx1OWQzOVx1ezJhMGI5fVx1ezJhMmI0fVx1OWU5MFx1OWU5NVx1OWU5ZVx1OWVhMlx1NGQzNFx1OWVhYVx1OWVhZlx1ezI0MzY0fVx1OWVjMVx1M2I2MFx1MzllNVx1M2QxZFx1NGYzMlx1MzdiZVx1ezI4YzJifVx1OWYwMlx1OWYwOFx1NGI5Nlx1OTQy''@;'; put 'put ''NFx1ezI2ZGEyfVx1OWYxN1x1OWYxNlx1OWYzOVx1NTY5Zlx1NTY4YVx1OWY0NVx1OTliOFx1ezI5MDhifVx1OTdmMlx1ODQ3Zlx1OWY2Mlx1OWY2OVx1N2FkY1x1OWY4ZVx1NzIxNlx1NGJiZVx1ezI0OTc1fVx1ezI0OWJifVx1NzE3N1x1ezI0OWY4fVx1ezI0MzQ4fVx1ezI0YTUxfVx1NzM5''@;'; put 'put ''ZVx1ezI4YmRhfVx1ezIxOGZhfVx1Nzk5Zlx1ezI4OTdlfVx1ezI4ZTM2fVx1OTM2OVx1OTNmM1x1ezI4YTQ0fVx1OTJlY1x1OTM4MVx1OTNjYlx1ezI4OTZjfVx1ezI0NGI5fVx1NzIxN1x1M2VlYlx1Nzc3Mlx1N2E0M1x1NzBkMFx1ezI0NDczfVx1ezI0M2Y4fVx1NzE3ZVx1ezIxN2VmfVx1''@;'; put 'put ''NzBhM1x1ezIxOGJlfVx1ezIzNTk5fVx1M2VjN1x1ezIxODg1fVx1ezI1NDJmfVx1ezIxN2Y4fVx1MzcyMlx1ezIxNmZifVx1ezIxODM5fVx1MzZlMVx1ezIxNzc0fVx1ezIxOGQxfVx1ezI1ZjRifVx1MzcyM1x1ezIxNmMwfVx1NTc1Ylx1ezI0YTI1fVx1ezIxM2ZlfVx1ezIxMmE4fSJdLFsi''@;'; put 'put ''OTI0MCIsIlx1ezIxM2M2fVx1ezIxNGI2fVx1ODUwM1x1ezIzNmE2fVx1ODUwM1x1ODQ1NVx1ezI0OTk0fVx1ezI3MTY1fVx1ezIzZTMxfVx1ezI1NTVjfVx1ezIzZWZifVx1ezI3MDUyfVx1NDRmNFx1ezIzNmVlfVx1ezI5OTlkfVx1ezI2ZjI2fVx1NjdmOVx1MzczM1x1M2MxNVx1M2RlN1x1''@;'; put 'put ''NTg2Y1x1ezIxOTIyfVx1NjgxMFx1NDA1N1x1ezIzNzNmfVx1ezI0MGUxfVx1ezI0MDhifVx1ezI0MTBmfVx1ezI2YzIxfVx1NTRjYlx1NTY5ZVx1ezI2NmIxfVx1NTY5Mlx1ezIwZmRmfVx1ezIwYmE4fVx1ezIwZTBkfVx1OTNjNlx1ezI4YjEzfVx1OTM5Y1x1NGVmOFx1NTEyYlx1MzgxOVx1''@;'; put 'put ''ezI0NDM2fVx1NGViY1x1ezIwNDY1fVx1ezIwMzdmfVx1NGY0Ylx1NGY4YVx1ezI1NjUxfVx1NWE2OFx1ezIwMWFifVx1ezIwM2NifVx1Mzk5OVx1ezIwMzBhfVx1ezIwNDE0fVx1MzQzNVx1NGYyOVx1ezIwMmMwfVx1ezI4ZWIzfVx1ezIwMjc1fVx1OGFkYVx1ezIwMjBjfVx1NGU5OCJdLFsi''@;'; put 'put ''OTJhMSIsIlx1NTBjZFx1NTEwZFx1NGZhMlx1NGYwM1x1ezI0YTBlfVx1ezIzZThhfVx1NGY0Mlx1NTAyZVx1NTA2Y1x1NTA4MVx1NGZjY1x1NGZlNVx1NTA1OFx1NTBmY1x1NTE1OVx1NTE1Ylx1NTE1ZFx1NTE1ZVx1NmU3Nlx1ezIzNTk1fVx1ezIzZTM5fVx1ezIzZWJmfVx1NmQ3Mlx1ezIx''@;'; put 'put ''ODg0fVx1ezIzZTg5fVx1NTFhOFx1NTFjM1x1ezIwNWUwfVx1NDRkZFx1ezIwNGEzfVx1ezIwNDkyfVx1ezIwNDkxfVx1OGQ3YVx1ezI4YTljfVx1ezIwNzBlfVx1NTI1OVx1NTJhNFx1ezIwODczfVx1NTJlMVx1OTM2ZVx1NDY3YVx1NzE4Y1x1ezI0MzhjfVx1ezIwYzIwfVx1ezI0OWFjfVx1''@;'; put 'put ''ezIxMGU0fVx1NjlkMVx1ezIwZTFkfVx1NzQ3OVx1M2VkZVx1NzQ5OVx1NzQxNFx1NzQ1Nlx1NzM5OFx1NGI4ZVx1ezI0YWJjfVx1ezI0MDhkfVx1NTNkMFx1MzU4NFx1NzIwZlx1ezI0MGM5fVx1NTViNFx1ezIwMzQ1fVx1NTRjZFx1ezIwYmM2fVx1NTcxZFx1OTI1ZFx1OTZmNFx1OTM2Nlx1''@;'; put 'put ''NTdkZFx1NTc4ZFx1NTc3Zlx1MzYzZVx1NThjYlx1NWE5OVx1ezI4YTQ2fVx1ezIxNmZhfVx1ezIxNzZmfVx1ezIxNzEwfVx1NWEyY1x1NTliOFx1OTI4Zlx1NWE3ZVx1NWFjZlx1NWExMlx1ezI1OTQ2fVx1ezIxOWYzfVx1ezIxODYxfVx1ezI0Mjk1fVx1MzZmNVx1NmQwNVx1NzQ0M1x1NWEy''@;'; put 'put ''MVx1ezI1ZTgzfSJdLFsiOTM0MCIsIlx1NWE4MVx1ezI4YmQ3fVx1ezIwNDEzfVx1OTNlMFx1NzQ4Y1x1ezIxMzAzfVx1NzEwNVx1NDk3Mlx1OTQwOFx1ezI4OWZifVx1OTNiZFx1MzdhMFx1NWMxZVx1NWM5ZVx1NWU1ZVx1NWU0OFx1ezIxOTk2fVx1ezIxOTdjfVx1ezIzYWVlfVx1NWVjZFx1''@;'; put 'put ''NWI0Zlx1ezIxOTAzfVx1ezIxOTA0fVx1MzcwMVx1ezIxOGEwfVx1MzZkZFx1ezIxNmZlfVx1MzZkM1x1ODEyYVx1ezI4YTQ3fVx1ezIxZGJhfVx1ezIzNDcyfVx1ezI4OWE4fVx1NWYwY1x1NWYwZVx1ezIxOTI3fVx1ezIxN2FifVx1NWE2Ylx1ezIxNzNifVx1NWI0NFx1ODYxNFx1ezI3NWZk''@;'; put 'put ''fVx1ODg2MFx1NjA3ZVx1ezIyODYwfVx1ezIyNjJifVx1NWZkYlx1M2ViOFx1ezIyNWFmfVx1ezIyNWJlfVx1ezI5MDg4fVx1ezI2ZjczfVx1NjFjMFx1ezIwMDNlfVx1ezIwMDQ2fVx1ezIyNjFifVx1NjE5OVx1NjE5OFx1NjA3NVx1ezIyYzlifVx1ezIyZDA3fVx1ezI0NmQ0fVx1ezI5MTRk''@;'; put 'put ''fSJdLFsiOTNhMSIsIlx1NjQ3MVx1ezI0NjY1fVx1ezIyYjZhfVx1M2EyOVx1ezIyYjIyfVx1ezIzNDUwfVx1ezI5OGVhfVx1ezIyZTc4fVx1NjMzN1x1ezJhNDVifVx1NjRiNlx1NjMzMVx1NjNkMVx1ezI0OWUzfVx1ezIyZDY3fVx1NjJhNFx1ezIyY2ExfVx1NjQzYlx1NjU2Ylx1Njk3Mlx1''@;'; put 'put ''M2JmNFx1ezIzMDhlfVx1ezIzMmFkfVx1ezI0OTg5fVx1ezIzMmFifVx1NTUwZFx1ezIzMmUwfVx1ezIxOGQ5fVx1ezI5NDNmfVx1NjZjZVx1ezIzMjg5fVx1ezIzMWIzfVx1M2FlMFx1NDE5MFx1ezI1NTg0fVx1ezI4YjIyfVx1ezI1NThmfVx1ezIxNmZjfVx1ezI1NTVifVx1ezI1NDI1fVx1''@;'; put 'put ''NzhlZVx1ezIzMTAzfVx1ezIxODJhfVx1ezIzMjM0fVx1MzQ2NFx1ezIzMjBmfVx1ezIzMTgyfVx1ezI0MmM5fVx1NjY4ZVx1ezI2ZDI0fVx1NjY2Ylx1NGI5M1x1NjYzMFx1ezI3ODcwfVx1ezIxZGVifVx1NjY2M1x1ezIzMmQyfVx1ezIzMmUxfVx1NjYxZVx1ezI1ODcyfVx1MzhkMVx1ezIz''@;'; put 'put ''ODNhfVx1ezIzN2JjfVx1M2I5OVx1ezIzN2EyfVx1ezIzM2ZlfVx1NzRkMFx1M2I5Nlx1Njc4Zlx1ezI0NjJhfVx1NjhiNlx1NjgxZVx1M2JjNFx1NmFiZVx1Mzg2M1x1ezIzN2Q1fVx1ezI0NDg3fVx1NmEzM1x1NmE1Mlx1NmFjOVx1NmIwNVx1ezIxOTEyfVx1NjUxMVx1Njg5OFx1NmE0Y1x1''@;'; put 'put ''M2JkN1x1NmE3YVx1NmI1N1x1ezIzZmMwfVx1ezIzYzlhfVx1OTNhMFx1OTJmMlx1ezI4YmVhfVx1ezI4YWNifSJdLFsiOTQ0MCIsIlx1OTI4OVx1ezI4MDFlfVx1ezI4OWRjfVx1OTQ2N1x1NmRhNVx1NmYwYlx1ezI0OWVjfVx1NmQ2N1x1ezIzZjdmfVx1M2Q4Zlx1NmUwNFx1ezI0MDNjfVx1''@;'; put 'put ''NWEzZFx1NmUwYVx1NTg0N1x1NmQyNFx1Nzg0Mlx1NzEzYlx1ezI0MzFhfVx1ezI0Mjc2fVx1NzBmMVx1NzI1MFx1NzI4N1x1NzI5NFx1ezI0NzhmfVx1ezI0NzI1fVx1NTE3OVx1ezI0YWE0fVx1ezIwNWVifVx1NzQ3YVx1ezIzZWY4fVx1ezIzNjVmfVx1ezI0YTRhfVx1ezI0OTE3fVx1ezI1''@;'; put 'put ''ZmUxfVx1M2YwNlx1M2ViMVx1ezI0YWRmfVx1ezI4YzIzfVx1ezIzZjM1fVx1NjBhN1x1M2VmM1x1NzRjY1x1NzQzY1x1OTM4N1x1NzQzN1x1NDQ5Zlx1ezI2ZGVhfVx1NDU1MVx1NzU4M1x1M2Y2M1x1ezI0Y2Q5fVx1ezI0ZDA2fVx1M2Y1OFx1NzU1NVx1NzY3M1x1ezJhNWM2fVx1M2IxOVx1''@;'; put 'put ''NzQ2OFx1ezI4YWNjfVx1ezI0OWFifVx1ezI0OThlfVx1M2FmYiJdLFsiOTRhMSIsIlx1M2RjZFx1ezI0YTRlfVx1M2VmZlx1ezI0OWM1fVx1ezI0OGYzfVx1OTFmYVx1NTczMlx1OTM0Mlx1ezI4YWUzfVx1ezIxODY0fVx1NTBkZlx1ezI1MjIxfVx1ezI1MWU3fVx1Nzc3OFx1ezIzMjMyfVx1''@;'; put 'put ''NzcwZVx1NzcwZlx1Nzc3Ylx1ezI0Njk3fVx1ezIzNzgxfVx1M2E1ZVx1ezI0OGYwfVx1NzQzOFx1NzQ5Ylx1M2ViZlx1ezI0YWJhfVx1ezI0YWM3fVx1NDBjOFx1ezI0YTk2fVx1ezI2MWFlfVx1OTMwN1x1ezI1NTgxfVx1NzgxZVx1Nzg4ZFx1Nzg4OFx1NzhkMlx1NzNkMFx1Nzk1OVx1ezI3''@;'; put 'put ''NzQxfVx1ezI1NmUzfVx1NDEwZVx1Nzk5Ylx1ODQ5Nlx1NzlhNVx1NmEyZFx1ezIzZWZhfVx1N2EzYVx1NzlmNFx1NDE2ZVx1ezIxNmU2fVx1NDEzMlx1OTIzNVx1NzlmMVx1ezIwZDRjfVx1ezI0OThjfVx1ezIwMjk5fVx1ezIzZGJhfVx1ezIxNzZlfVx1MzU5N1x1NTU2Ylx1MzU3MFx1MzZh''@;'; put 'put ''YVx1ezIwMWQ0fVx1ezIwYzBkfVx1N2FlMlx1NWE1OVx1ezIyNmY1fVx1ezI1YWFmfVx1ezI1YTljfVx1NWEwZFx1ezIwMjVifVx1NzhmMFx1NWEyYVx1ezI1YmM2fVx1N2FmZVx1NDFmOVx1N2M1ZFx1N2M2ZFx1NDIxMVx1ezI1YmIzfVx1ezI1ZWJjfVx1ezI1ZWE2fVx1N2NjZFx1ezI0OWY5''@;'; put 'put ''fVx1ezIxN2IwfVx1N2M4ZVx1N2M3Y1x1N2NhZVx1NmFiMlx1N2RkY1x1N2UwN1x1N2RkM1x1N2Y0ZVx1ezI2MjYxfSJdLFsiOTU0MCIsIlx1ezI2MTVjfVx1ezI3YjQ4fVx1N2Q5N1x1ezI1ZTgyfVx1NDI2YVx1ezI2Yjc1fVx1ezIwOTE2fVx1NjdkNlx1ezIwMDRlfVx1ezIzNWNmfVx1NTdj''@;'; put 'put ''NFx1ezI2NDEyfVx1ezI2M2Y4fVx1ezI0OTYyfVx1N2ZkZFx1N2IyN1x1ezIwODJjfVx1ezI1YWU5fVx1ezI1ZDQzfVx1N2IwY1x1ezI1ZTBlfVx1OTllNlx1ODY0NVx1OWE2M1x1NmExY1x1ezIzNDNmfVx1MzllMlx1ezI0OWY3fVx1ezI2NWFkfVx1OWExZlx1ezI2NWEwfVx1ODQ4MFx1ezI3''@;'; put 'put ''MTI3fVx1ezI2Y2QxfVx1NDRlYVx1ODEzN1x1NDQwMlx1ODBjNlx1ODEwOVx1ODE0Mlx1ezI2N2I0fVx1OThjM1x1ezI2YTQyfVx1ODI2Mlx1ODI2NVx1ezI2YTUxfVx1ODQ1M1x1ezI2ZGE3fVx1ODYxMFx1ezI3MjFifVx1NWE4Nlx1NDE3Zlx1ezIxODQwfVx1NWIyYlx1ezIxOGExfVx1NWFl''@;'; put 'put ''NFx1ezIxOGQ4fVx1ODZhMFx1ezJmOWJjfVx1ezIzZDhmfVx1ODgyZFx1ezI3NDIyfVx1NWEwMiJdLFsiOTVhMSIsIlx1ODg2ZVx1NGY0NVx1ODg4N1x1ODhiZlx1ODhlNlx1ODk2NVx1ODk0ZFx1ezI1NjgzfVx1ODk1NFx1ezI3Nzg1fVx1ezI3Nzg0fVx1ezI4YmY1fVx1ezI4YmQ5fVx1ezI4''@;'; put 'put ''YjljfVx1ezI4OWY5fVx1M2VhZFx1ODRhM1x1NDZmNVx1NDZjZlx1MzdmMlx1OGEzZFx1OGExY1x1ezI5NDQ4fVx1NWY0ZFx1OTIyYlx1ezI0Mjg0fVx1NjVkNFx1NzEyOVx1NzBjNFx1ezIxODQ1fVx1OWQ2ZFx1OGM5Zlx1OGNlOVx1ezI3ZGRjfVx1NTk5YVx1NzdjM1x1NTlmMFx1NDM2ZVx1''@;'; put 'put ''MzZkNFx1OGUyYVx1OGVhN1x1ezI0YzA5fVx1OGYzMFx1OGY0YVx1NDJmNFx1NmM1OFx1NmZiYlx1ezIyMzIxfVx1NDg5Ylx1NmY3OVx1NmU4Ylx1ezIxN2RhfVx1OWJlOVx1MzZiNVx1ezI0OTJmfVx1OTBiYlx1OTA5N1x1NTU3MVx1NDkwNlx1OTFiYlx1OTQwNFx1ezI4YTRifVx1NDA2Mlx1''@;'; put 'put ''ezI4YWZjfVx1OTQyN1x1ezI4YzFkfVx1ezI4YzNifVx1ODRlNVx1OGEyYlx1OTU5OVx1OTVhN1x1OTU5N1x1OTU5Nlx1ezI4ZDM0fVx1NzQ0NVx1M2VjMlx1ezI0OGZmfVx1ezI0YTQyfVx1ezI0M2VhfVx1M2VlN1x1ezIzMjI1fVx1OTY4Zlx1ezI4ZWU3fVx1ezI4ZTY2fVx1ezI4ZTY1fVx1''@;'; put 'put ''M2VjY1x1ezI0OWVkfVx1ezI0YTc4fVx1ezIzZmVlfVx1NzQxMlx1NzQ2Ylx1M2VmY1x1OTc0MVx1ezI5MGIwfSJdLFsiOTY0MCIsIlx1Njg0N1x1NGExZFx1ezI5MDkzfVx1ezI1N2RmfVx1OTc1ZFx1OTM2OFx1ezI4OTg5fVx1ezI4YzI2fVx1ezI4YjJmfVx1ezI2M2JlfVx1OTJiYVx1NWIx''@;'; put 'put ''MVx1OGI2OVx1NDkzY1x1NzNmOVx1ezI0MjFifVx1OTc5Ylx1OTc3MVx1OTkzOFx1ezIwZjI2fVx1NWRjMVx1ezI4YmM1fVx1ezI0YWIyfVx1OTgxZlx1ezI5NGRhfVx1OTJmNlx1ezI5NWQ3fVx1OTFlNVx1NDRjMFx1ezI4YjUwfVx1ezI0YTY3fVx1ezI4YjY0fVx1OThkY1x1ezI4YTQ1fVx1''@;'; put 'put ''M2YwMFx1OTIyYVx1NDkyNVx1ODQxNFx1OTkzYlx1OTk0ZFx1ezI3YjA2fVx1M2RmZFx1OTk5Ylx1NGI2Zlx1OTlhYVx1OWE1Y1x1ezI4YjY1fVx1ezI1OGM4fVx1NmE4Zlx1OWEyMVx1NWFmZVx1OWEyZlx1ezI5OGYxfVx1NGI5MFx1ezI5OTQ4fVx1OTliY1x1NGJiZFx1NGI5N1x1OTM3ZFx1''@;'; put 'put ''NTg3Mlx1ezIxMzAyfVx1NTgyMlx1ezI0OWI4fSJdLFsiOTZhMSIsIlx1ezIxNGU4fVx1Nzg0NFx1ezIyNzFmfVx1ezIzZGI4fVx1NjhjNVx1M2Q3ZFx1OTQ1OFx1MzkyN1x1NjE1MFx1ezIyNzgxfVx1ezIyOTZifVx1NjEwN1x1OWM0Zlx1OWM1M1x1OWM3Ylx1OWMzNVx1OWMxMFx1OWI3Zlx1''@;'; put 'put ''OWJjZlx1ezI5ZTJkfVx1OWI5Zlx1ezJhMWY1fVx1ezJhMGZlfVx1OWQyMVx1NGNhZVx1ezI0MTA0fVx1OWUxOFx1NGNiMFx1OWQwY1x1ezJhMWI0fVx1ezJhMGVkfVx1ezJhMGYzfVx1ezI5OTJmfVx1OWRhNVx1ODRiZFx1ezI2ZTEyfVx1ezI2ZmRmfVx1ezI2YjgyfVx1ODVmY1x1NDUzM1x1''@;'; put 'put ''ezI2ZGE0fVx1ezI2ZTg0fVx1ezI2ZGYwfVx1ODQyMFx1ODVlZVx1ezI2ZTAwfVx1ezIzN2Q3fVx1ezI2MDY0fVx1NzllMlx1ezIzNTljfVx1ezIzNjQwfVx1NDkyZFx1ezI0OWRlfVx1M2Q2Mlx1OTNkYlx1OTJiZVx1OTM0OFx1ezIwMmJmfVx1NzhiOVx1OTI3N1x1OTQ0ZFx1NGZlNFx1MzQ0''@;'; put 'put ''MFx1OTA2NFx1ezI1NTVkfVx1NzgzZFx1Nzg1NFx1NzhiNlx1Nzg0Ylx1ezIxNzU3fVx1ezIzMWM5fVx1ezI0OTQxfVx1MzY5YVx1NGY3Mlx1NmZkYVx1NmZkOVx1NzAxZVx1NzAxZVx1NTQxNFx1ezI0MWI1fVx1NTdiYlx1NThmM1x1NTc4YVx1OWQxNlx1NTdkN1x1NzEzNFx1MzRhZlx1ezI0''@;'; put 'put ''MWFjfVx1NzFlYlx1ezI2YzQwfVx1ezI0Zjk3fVx1NWIyOFx1ezIxN2I1fVx1ezI4YTQ5fSJdLFsiOTc0MCIsIlx1NjEwY1x1NWFjZVx1NWEwYlx1NDJiY1x1ezI0NDg4fVx1MzcyY1x1NGI3Ylx1ezI4OWZjfVx1OTNiYlx1OTNiOFx1ezIxOGQ2fVx1ezIwZjFkfVx1ODQ3Mlx1ezI2Y2MwfVx1''@;'; put 'put ''ezIxNDEzfVx1ezI0MmZhfVx1ezIyYzI2fVx1ezI0M2MxfVx1NTk5NFx1ezIzZGI3fVx1ezI2NzQxfVx1N2RhOFx1ezI2MTVifVx1ezI2MGE0fVx1ezI0OWI5fVx1ezI0OThifVx1ezI4OWZhfVx1OTJlNVx1NzNlMlx1M2VlOVx1NzRiNFx1ezI4YjYzfVx1ezIxODlmfVx1M2VlMVx1ezI0YWIz''@;'; put 'put ''fVx1NmFkOFx1NzNmM1x1NzNmYlx1M2VkNlx1ezI0YTNlfVx1ezI0YTk0fVx1ezIxN2Q5fVx1ezI0YTY2fVx1ezIwM2E3fVx1ezIxNDI0fVx1ezI0OWU1fVx1NzQ0OFx1ezI0OTE2fVx1NzBhNVx1ezI0OTc2fVx1OTI4NFx1NzNlNlx1OTM1Zlx1ezIwNGZlfVx1OTMzMVx1ezI4YWNlfVx1ezI4''@;'; put 'put ''YTE2fVx1OTM4Nlx1ezI4YmU3fVx1ezI1NWQ1fVx1NDkzNVx1ezI4YTgyfVx1NzE2YiJdLFsiOTdhMSIsIlx1ezI0OTQzfVx1ezIwY2ZmfVx1NTZhNFx1ezIwNjFhfVx1ezIwYmVifVx1ezIwY2I4fVx1NTUwMlx1NzljNFx1ezIxN2ZhfVx1N2RmZVx1ezIxNmMyfVx1ezI0YTUwfVx1ezIxODUy''@;'; put 'put ''fVx1NDUyZVx1OTQwMVx1MzcwYVx1ezI4YWMwfVx1ezI0OWFkfVx1NTliMFx1ezIxOGJmfVx1ezIxODgzfVx1ezI3NDg0fVx1NWFhMVx1MzZlMlx1ezIzZDVifVx1MzZiMFx1OTI1Zlx1NWE3OVx1ezI4YTgxfVx1ezIxODYyfVx1OTM3NFx1M2NjZFx1ezIwYWI0fVx1NGE5Nlx1Mzk4YVx1NTBm''@;'; put 'put ''NFx1M2Q2OVx1M2Q0Y1x1ezIxMzljfVx1NzE3NVx1NDJmYlx1ezI4MjE4fVx1NmUwZlx1ezI5MGU0fVx1NDRlYlx1NmQ1N1x1ezI3ZTRmfVx1NzA2N1x1NmNhZlx1M2NkNlx1ezIzZmVkfVx1ezIzZTJkfVx1NmUwMlx1NmYwY1x1M2Q2Zlx1ezIwM2Y1fVx1NzU1MVx1MzZiY1x1MzRjOFx1NDY4''@;'; put 'put ''MFx1M2VkYVx1NDg3MVx1NTljNFx1OTI2ZVx1NDkzZVx1OGY0MVx1ezI4YzFjfVx1ezI2YmMwfVx1NTgxMlx1NTdjOFx1MzZkNlx1ezIxNDUyfVx1NzBmZVx1ezI0MzYyfVx1ezI0YTcxfVx1ezIyZmUzfVx1ezIxMmIwfVx1ezIyM2JkfVx1NjhiOVx1Njk2N1x1ezIxMzk4fVx1ezIzNGU1fVx1''@;'; put 'put ''ezI3YmY0fVx1ezIzNmRmfVx1ezI4YTgzfVx1ezIzN2Q2fVx1ezIzM2ZhfVx1ezI0YzlmfVx1NmExYVx1ezIzNmFkfVx1ezI2Y2I3fVx1ODQzZVx1NDRkZlx1NDRjZSJdLFsiOTg0MCIsIlx1ezI2ZDI2fVx1ezI2ZDUxfVx1ezI2YzgyfVx1ezI2ZmRlfVx1NmYxN1x1ezI3MTA5fVx1ODMzZFx1''@;'; put 'put ''ezIxNzNhfVx1ODNlZFx1ezI2YzgwfVx1ezI3MDUzfVx1ezIxN2RifVx1NTk4OVx1NWE4Mlx1ezIxN2IzfVx1NWE2MVx1NWE3MVx1ezIxOTA1fVx1ezI0MWZjfVx1MzcyZFx1NTllZlx1ezIxNzNjfVx1MzZjN1x1NzE4ZVx1OTM5MFx1NjY5YVx1ezI0MmE1fVx1NWE2ZVx1NWEyYlx1ezI0Mjkz''@;'; put 'put ''fVx1NmEyYlx1ezIzZWY5fVx1ezI3NzM2fVx1ezI0NDVifVx1ezI0MmNhfVx1NzExZFx1ezI0MjU5fVx1ezI4OWUxfVx1NGZiMFx1ezI2ZDI4fVx1NWNjMlx1ezI0NGNlfVx1ezI3ZTRkfVx1ezI0M2JkfVx1NmEwY1x1ezI0MjU2fVx1ezIxMzA0fVx1NzBhNlx1NzEzM1x1ezI0M2U5fVx1M2Rh''@;'; put 'put ''NVx1NmNkZlx1ezJmODI1fVx1ezI0YTRmfVx1N2U2NVx1NTllYlx1NWQyZlx1M2RmM1x1NWY1Y1x1ezI0YTVkfVx1ezIxN2RmfVx1N2RhNFx1ODQyNiJdLFsiOThhMSIsIlx1NTQ4NVx1ezIzYWZhfVx1ezIzMzAwfVx1ezIwMjE0fVx1NTc3ZVx1ezIwOGQ1fVx1ezIwNjE5fVx1M2ZlNVx1ezIx''@;'; put 'put ''ZjllfVx1ezJhMmI2fVx1NzAwM1x1ezI5MTVifVx1NWQ3MFx1NzM4Zlx1N2NkM1x1ezI4YTU5fVx1ezI5NDIwfVx1NGZjOFx1N2ZlN1x1NzJjZFx1NzMxMFx1ezI3YWY0fVx1NzMzOFx1NzMzOVx1ezI1NmY2fVx1NzM0MVx1NzM0OFx1M2VhOVx1ezI3YjE4fVx1OTA2Y1x1NzFmNVx1ezI0OGYy''@;'; put 'put ''fVx1NzNlMVx1ODFmNlx1M2VjYVx1NzcwY1x1M2VkMVx1NmNhMlx1NTZmZFx1NzQxOVx1NzQxZVx1NzQxZlx1M2VlMlx1M2VmMFx1M2VmNFx1M2VmYVx1NzRkM1x1M2YwZVx1M2Y1M1x1NzU0Mlx1NzU2ZFx1NzU3Mlx1NzU4ZFx1M2Y3Y1x1NzVjOFx1NzVkY1x1M2ZjMFx1NzY0ZFx1M2ZkN1x1''@;'; put 'put ''NzY3NFx1M2ZkY1x1NzY3YVx1ezI0ZjVjfVx1NzE4OFx1NTYyM1x1ODk4MFx1NTg2OVx1NDAxZFx1Nzc0M1x1NDAzOVx1Njc2MVx1NDA0NVx1MzVkYlx1Nzc5OFx1NDA2YVx1NDA2Zlx1NWM1ZVx1NzdiZVx1NzdjYlx1NThmMlx1NzgxOFx1NzBiOVx1NzgxY1x1NDBhOFx1NzgzOVx1Nzg0N1x1''@;'; put 'put ''Nzg1MVx1Nzg2Nlx1ODQ0OFx1ezI1NTM1fVx1NzkzM1x1NjgwM1x1NzkzMlx1NDEwMyJdLFsiOTk0MCIsIlx1NDEwOVx1Nzk5MVx1Nzk5OVx1OGZiYlx1N2EwNlx1OGZiY1x1NDE2N1x1N2E5MVx1NDFiMlx1N2FiY1x1ODI3OVx1NDFjNFx1N2FjZlx1N2FkYlx1NDFjZlx1NGUyMVx1N2I2Mlx1''@;'; put 'put ''N2I2Y1x1N2I3Ylx1N2MxMlx1N2MxYlx1NDI2MFx1NDI3YVx1N2M3Ylx1N2M5Y1x1NDI4Y1x1N2NiOFx1NDI5NFx1N2NlZFx1OGY5M1x1NzBjMFx1ezIwY2NmfVx1N2RjZlx1N2RkNFx1N2RkMFx1N2RmZFx1N2ZhZVx1N2ZiNFx1NzI5Zlx1NDM5N1x1ODAyMFx1ODAyNVx1N2IzOVx1ODAyZVx1''@;'; put 'put ''ODAzMVx1ODA1NFx1M2RjY1x1NTdiNFx1NzBhMFx1ODBiN1x1ODBlOVx1NDNlZFx1ODEwY1x1NzMyYVx1ODEwZVx1ODExMlx1NzU2MFx1ODExNFx1NDQwMVx1M2IzOVx1ODE1Nlx1ODE1OVx1ODE1YSJdLFsiOTlhMSIsIlx1NDQxM1x1NTgzYVx1ODE3Y1x1ODE4NFx1NDQyNVx1ODE5M1x1NDQy''@;'; put 'put ''ZFx1ODFhNVx1NTdlZlx1ODFjMVx1ODFlNFx1ODI1NFx1NDQ4Zlx1ODJhNlx1ODI3Nlx1ODJjYVx1ODJkOFx1ODJmZlx1NDRiMFx1ODM1N1x1OTY2OVx1Njk4YVx1ODQwNVx1NzBmNVx1ODQ2NFx1NjBlM1x1ODQ4OFx1NDUwNFx1ODRiZVx1ODRlMVx1ODRmOFx1ODUxMFx1ODUzOFx1ODU1Mlx1''@;'; put 'put ''NDUzYlx1ODU2Zlx1ODU3MFx1ODVlMFx1NDU3N1x1ODY3Mlx1ODY5Mlx1ODZiMlx1ODZlZlx1OTY0NVx1ODc4Ylx1NDYwNlx1NDYxN1x1ODhhZVx1ODhmZlx1ODkyNFx1ODk0N1x1ODk5MVx1ezI3OTY3fVx1OGEyOVx1OGEzOFx1OGE5NFx1OGFiNFx1OGM1MVx1OGNkNFx1OGNmMlx1OGQxY1x1''@;'; put 'put ''NDc5OFx1NTg1Zlx1OGRjM1x1NDdlZFx1NGVlZVx1OGUzYVx1NTVkOFx1NTc1NFx1OGU3MVx1NTVmNVx1OGViMFx1NDgzN1x1OGVjZVx1OGVlMlx1OGVlNFx1OGVlZFx1OGVmMlx1OGZiN1x1OGZjMVx1OGZjYVx1OGZjY1x1OTAzM1x1OTljNFx1NDhhZFx1OThlMFx1OTIxM1x1NDkxZVx1OTIy''@;'; put 'put ''OFx1OTI1OFx1OTI2Ylx1OTJiMVx1OTJhZVx1OTJiZiJdLFsiOWE0MCIsIlx1OTJlM1x1OTJlYlx1OTJmM1x1OTJmNFx1OTJmZFx1OTM0M1x1OTM4NFx1OTNhZFx1NDk0NVx1NDk1MVx1OWViZlx1OTQxN1x1NTMwMVx1OTQxZFx1OTQyZFx1OTQzZVx1NDk2YVx1OTQ1NFx1OTQ3OVx1OTUyZFx1''@;'; put 'put ''OTVhMlx1NDlhN1x1OTVmNFx1OTYzM1x1NDllNVx1NjdhMFx1NGEyNFx1OTc0MFx1NGEzNVx1OTdiMlx1OTdjMlx1NTY1NFx1NGFlNFx1NjBlOFx1OThiOVx1NGIxOVx1OThmMVx1NTg0NFx1OTkwZVx1OTkxOVx1NTFiNFx1OTkxY1x1OTkzN1x1OTk0Mlx1OTk1ZFx1OTk2Mlx1NGI3MFx1OTlj''@;'; put 'put ''NVx1NGI5ZFx1OWEzY1x1OWIwZlx1N2E4M1x1OWI2OVx1OWI4MVx1OWJkZFx1OWJmMVx1OWJmNFx1NGM2ZFx1OWMyMFx1Mzc2Zlx1ezIxYmMyfVx1OWQ0OVx1OWMzYSJdLFsiOWFhMSIsIlx1OWVmZVx1NTY1MFx1OWQ5M1x1OWRiZFx1OWRjMFx1OWRmY1x1OTRmNlx1OGZiNlx1OWU3Ylx1OWVh''@;'; put 'put ''Y1x1OWViMVx1OWViZFx1OWVjNlx1OTRkY1x1OWVlMlx1OWVmMVx1OWVmOFx1N2FjOFx1OWY0NFx1ezIwMDk0fVx1ezIwMmI3fVx1ezIwM2EwfVx1NjkxYVx1OTRjM1x1NTlhY1x1ezIwNGQ3fVx1NTg0MFx1OTRjMVx1MzdiOVx1ezIwNWQ1fVx1ezIwNjE1fVx1ezIwNjc2fVx1ezIxNmJhfVx1''@;'; put 'put ''NTc1N1x1NzE3M1x1ezIwYWMyfVx1ezIwYWNkfVx1ezIwYmJmfVx1NTQ2YVx1ezJmODNifVx1ezIwYmNifVx1NTQ5ZVx1ezIwYmZifVx1ezIwYzNifVx1ezIwYzUzfVx1ezIwYzY1fVx1ezIwYzdjfVx1NjBlN1x1ezIwYzhkfVx1NTY3YVx1ezIwY2I1fVx1ezIwY2RkfVx1ezIwY2VkfVx1ezIw''@;'; put 'put ''ZDZmfVx1ezIwZGIyfVx1ezIwZGM4fVx1Njk1NVx1OWMyZlx1ODdhNVx1ezIwZTA0fVx1ezIwZTBlfVx1ezIwZWQ3fVx1ezIwZjkwfVx1ezIwZjJkfVx1ezIwZTczfVx1NWMyMFx1ezIwZmJjfVx1NWUwYlx1ezIxMDVjfVx1ezIxMDRmfVx1ezIxMDc2fVx1NjcxZVx1ezIxMDdifVx1ezIxMDg4''@;'; put 'put ''fVx1ezIxMDk2fVx1MzY0N1x1ezIxMGJmfVx1ezIxMGQzfVx1ezIxMTJmfVx1ezIxMTNifVx1NTM2NFx1ODRhZFx1ezIxMmUzfVx1ezIxMzc1fVx1ezIxMzM2fVx1OGI4MVx1ezIxNTc3fVx1ezIxNjE5fVx1ezIxN2MzfVx1ezIxN2M3fVx1NGU3OFx1NzBiYlx1ezIxODJkfVx1ezIxOTZhfSJd''@;'; put 'put ''LFsiOWI0MCIsIlx1ezIxYTJkfVx1ezIxYTQ1fVx1ezIxYzJhfVx1ezIxYzcwfVx1ezIxY2FjfVx1ezIxZWM4fVx1NjJjM1x1ezIxZWQ1fVx1ezIxZjE1fVx1NzE5OFx1Njg1NVx1ezIyMDQ1fVx1NjllOVx1MzZjOFx1ezIyMjdjfVx1ezIyM2Q3fVx1ezIyM2ZhfVx1ezIyNzJhfVx1ezIyODcx''@;'; put 'put ''fVx1ezIyOTRmfVx1ODJmZFx1ezIyOTY3fVx1ezIyOTkzfVx1ezIyYWQ1fVx1ODlhNVx1ezIyYWU4fVx1OGZhMFx1ezIyYjBlfVx1OTdiOFx1ezIyYjNmfVx1OTg0N1x1OWFiZFx1ezIyYzRjfSJdLFsiOWI2MiIsIlx1ezIyYzg4fVx1ezIyY2I3fVx1ezI1YmU4fVx1ezIyZDA4fVx1ezIyZDEy''@;'; put 'put ''fVx1ezIyZGI3fVx1ezIyZDk1fVx1ezIyZTQyfVx1ezIyZjc0fVx1ezIyZmNjfVx1ezIzMDMzfVx1ezIzMDY2fVx1ezIzMzFmfVx1ezIzM2RlfVx1NWZiMVx1NjY0OFx1NjZiZlx1ezI3YTc5fVx1ezIzNTY3fVx1ezIzNWYzfVx1NzIwMVx1ezI0OWJhfVx1NzdkN1x1ezIzNjFhfVx1ezIzNzE2''@;'; put 'put ''fVx1N2U4N1x1ezIwMzQ2fVx1NThiNVx1NjcwZSJdLFsiOWJhMSIsIlx1NjkxOFx1ezIzYWE3fVx1ezI3NjU3fVx1ezI1ZmUyfVx1ezIzZTExfVx1ezIzZWI5fVx1ezI3NWZlfVx1ezIyMDlhfVx1NDhkMFx1NGFiOFx1ezI0MTE5fVx1ezI4YTlhfVx1ezI0MmVlfVx1ezI0MzBkfVx1ezI0MDNi''@;'; put 'put ''fVx1ezI0MzM0fVx1ezI0Mzk2fVx1ezI0YTQ1fVx1ezIwNWNhfVx1NTFkMlx1ezIwNjExfVx1NTk5Zlx1ezIxZWE4fVx1M2JiZVx1ezIzY2ZmfVx1ezI0NDA0fVx1ezI0NGQ2fVx1NTc4OFx1ezI0Njc0fVx1Mzk5Ylx1ezI0NzJmfVx1ezI4NWU4fVx1ezI5OWM5fVx1Mzc2Mlx1ezIyMWMzfVx1''@;'; put 'put ''OGI1ZVx1ezI4YjRlfVx1OTlkNlx1ezI0ODEyfVx1ezI0OGZifVx1ezI0YTE1fVx1NzIwOVx1ezI0YWMwfVx1ezIwYzc4fVx1NTk2NVx1ezI0ZWE1fVx1ezI0Zjg2fVx1ezIwNzc5fVx1OGVkYVx1ezI1MDJjfVx1NTI4Zlx1NTczZlx1NzE3MVx1ezI1Mjk5fVx1ezI1NDE5fVx1ezIzZjRhfVx1''@;'; put 'put ''ezI0YWE3fVx1NTViY1x1ezI1NDQ2fVx1ezI1NDZlfVx1ezI2YjUyfVx1OTFkNFx1MzQ3M1x1ezI1NTNmfVx1ezI3NjMyfVx1ezI1NTVlfVx1NDcxOFx1ezI1NTYyfVx1ezI1NTY2fVx1ezI1N2M3fVx1ezI0OTNmfVx1ezI1ODVkfVx1NTA2Nlx1MzRmYlx1ezIzM2NjfVx1NjBkZVx1ezI1OTAz''@;'; put 'put ''fVx1NDc3Y1x1ezI4OTQ4fVx1ezI1YWFlfVx1ezI1Yjg5fVx1ezI1YzA2fVx1ezIxZDkwfVx1NTdhMVx1NzE1MVx1NmZiNlx1ezI2MTAyfVx1ezI3YzEyfVx1OTA1Nlx1ezI2MWIyfVx1ezI0ZjlhfVx1OGI2Mlx1ezI2NDAyfVx1ezI2NDRhfSJdLFsiOWM0MCIsIlx1NWQ1Ylx1ezI2YmY3fVx1''@;'; put 'put ''OGYzNlx1ezI2NDg0fVx1ezIxOTFjfVx1OGFlYVx1ezI0OWY2fVx1ezI2NDg4fVx1ezIzZmVmfVx1ezI2NTEyfVx1NGJjMFx1ezI2NWJmfVx1ezI2NmI1fVx1ezIyNzFifVx1OTQ2NVx1ezI1N2UxfVx1NjE5NVx1NWEyN1x1ezJmOGNkfVx1NGZiYlx1NTZiOVx1ezI0NTIxfVx1ezI2NmZjfVx1''@;'; put 'put ''NGU2YVx1ezI0OTM0fVx1OTY1Nlx1NmQ4Zlx1ezI2Y2JkfVx1MzYxOFx1ODk3N1x1ezI2Nzk5fVx1ezI2ODZlfVx1ezI2NDExfVx1ezI2ODVlfVx1NzFkZlx1ezI2OGM3fVx1N2I0Mlx1ezI5MGMwfVx1ezIwYTExfVx1ezI2OTI2fVx1OTEwNFx1ezI2OTM5fVx1N2E0NVx1OWRmMFx1ezI2OWZh''@;'; put 'put ''fVx1OWEyNlx1ezI2YTJkfVx1MzY1Zlx1ezI2NDY5fVx1ezIwMDIxfVx1Nzk4M1x1ezI2YTM0fVx1ezI2YjVifVx1NWQyY1x1ezIzNTE5fVx1ODNjZlx1ezI2YjlkfVx1NDZkMFx1ezI2Y2E0fVx1NzUzYlx1ODg2NVx1ezI2ZGFlfVx1NThiNiJdLFsiOWNhMSIsIlx1MzcxY1x1ezIyNThkfVx1''@;'; put 'put ''ezI3MDRifVx1ezI3MWNkfVx1M2M1NFx1ezI3MjgwfVx1ezI3Mjg1fVx1OTI4MVx1ezIyMTdhfVx1ezI3MjhifVx1OTMzMFx1ezI3MmU2fVx1ezI0OWQwfVx1NmMzOVx1OTQ5Zlx1ezI3NDUwfVx1ezIwZWY4fVx1ODgyN1x1ODhmNVx1ezIyOTI2fVx1ezI4NDczfVx1ezIxN2IxfVx1NmViOFx1''@;'; put 'put ''ezI0YTJhfVx1ezIxODIwfVx1MzlhNFx1MzZiOVx1NWMxMFx1NzllM1x1NDUzZlx1NjZiNlx1ezI5Y2FkfVx1ezI5OGE0fVx1ODk0M1x1ezI3N2NjfVx1ezI3ODU4fVx1NTZkNlx1NDBkZlx1ezIxNjBhfVx1MzlhMVx1ezIzNzJmfVx1ezI4MGU4fVx1ezIxM2M1fVx1NzFhZFx1ODM2Nlx1ezI3''@;'; put 'put ''OWRkfVx1ezI5MWE4fVx1NWE2N1x1NGNiN1x1ezI3MGFmfVx1ezI4OWFifVx1ezI3OWZkfVx1ezI3YTBhfVx1ezI3YjBifVx1ezI3ZDY2fVx1ezI0MTdhfVx1N2I0M1x1Nzk3ZVx1ezI4MDA5fVx1NmZiNVx1ezJhMmRmfVx1NmEwM1x1ezI4MzE4fVx1NTNhMlx1ezI2ZTA3fVx1OTNiZlx1Njgz''@;'; put 'put ''Nlx1OTc1ZFx1ezI4MTZmfVx1ezI4MDIzfVx1ezI2OWI1fVx1ezIxM2VkfVx1ezIzMjJmfVx1ezI4MDQ4fVx1NWQ4NVx1ezI4YzMwfVx1ezI4MDgzfVx1NTcxNVx1OTgyM1x1ezI4OTQ5fVx1NWRhYlx1ezI0OTg4fVx1NjViZVx1NjlkNVx1NTNkMlx1ezI0YWE1fVx1ezIzZjgxfVx1M2MxMVx1''@;'; put 'put ''NjczNlx1ezI4MDkwfVx1ezI4MGY0fVx1ezI4MTJlfVx1ezIxZmExfVx1ezI4MTRmfSJdLFsiOWQ0MCIsIlx1ezI4MTg5fVx1ezI4MWFmfVx1ezI4MjFhfVx1ezI4MzA2fVx1ezI4MzJmfVx1ezI4MzhhfVx1MzVjYVx1ezI4NDY4fVx1ezI4NmFhfVx1NDhmYVx1NjNlNlx1ezI4OTU2fVx1Nzgw''@;'; put 'put ''OFx1OTI1NVx1ezI4OWI4fVx1NDNmMlx1ezI4OWU3fVx1NDNkZlx1ezI4OWU4fVx1ezI4YjQ2fVx1ezI4YmQ0fVx1NTlmOFx1ezI4YzA5fVx1OGYwYlx1ezI4ZmM1fVx1ezI5MGVjfVx1N2I1MVx1ezI5MTEwfVx1ezI5MTNjfVx1M2RmN1x1ezI5MTVlfVx1ezI0YWNhfVx1OGZkMFx1NzI4Zlx1''@;'; put 'put ''NTY4Ylx1ezI5NGU3fVx1ezI5NWU5fVx1ezI5NWIwfVx1ezI5NWI4fVx1ezI5NzMyfVx1ezI5OGQxfVx1ezI5OTQ5fVx1ezI5OTZhfVx1ezI5OWMzfVx1ezI5YTI4fVx1ezI5YjBlfVx1ezI5ZDVhfVx1ezI5ZDlifVx1N2U5Zlx1ezI5ZWY4fVx1ezI5ZjIzfVx1NGNhNFx1OTU0N1x1ezJhMjkz''@;'; put 'put ''fVx1NzFhMlx1ezJhMmZmfVx1NGQ5MVx1OTAxMlx1ezJhNWNifVx1NGQ5Y1x1ezIwYzljfVx1OGZiZVx1NTVjMSJdLFsiOWRhMSIsIlx1OGZiYVx1ezIyNGIwfVx1OGZiOVx1ezI0YTkzfVx1NDUwOVx1N2U3Zlx1NmY1Nlx1NmFiMVx1NGVlYVx1MzRlNFx1ezI4YjJjfVx1ezI3ODlkfVx1Mzcz''@;'; put 'put ''YVx1OGU4MFx1ezIxN2Y1fVx1ezI4MDI0fVx1ezI4YjZjfVx1ezI4Yjk5fVx1ezI3YTNlfVx1ezI2NmFmfVx1M2RlYlx1ezI3NjU1fVx1ezIzY2I3fVx1ezI1NjM1fVx1ezI1OTU2fVx1NGU5YVx1ezI1ZTgxfVx1ezI2MjU4fVx1NTZiZlx1ezIwZTZkfVx1OGUwZVx1NWI2ZFx1ezIzZTg4fVx1''@;'; put 'put ''ezI0YzllfVx1NjNkZVx1NjJkMFx1ezIxN2Y2fVx1ezIxODdifVx1NjUzMFx1NTYyZFx1ezI1YzRhfVx1NTQxYVx1ezI1MzExfVx1M2RjNlx1ezI5ZDk4fVx1NGM3ZFx1NTYyMlx1NTYxZVx1N2Y0OVx1ezI1ZWQ4fVx1NTk3NVx1ezIzZDQwfVx1ODc3MFx1NGUxY1x1ezIwZmVhfVx1ezIwZDQ5''@;'; put 'put ''fVx1ezIzNmJhfVx1ODExN1x1OWQ1ZVx1OGQxOFx1NzYzYlx1OWM0NVx1NzY0ZVx1NzdiOVx1OTM0NVx1NTQzMlx1ODE0OFx1ODJmN1x1NTYyNVx1ODEzMlx1ODQxOFx1ODBiZFx1NTVlYVx1Nzk2Mlx1NTY0M1x1NTQxNlx1ezIwZTlkfVx1MzVjZVx1NTYwNVx1NTVmMVx1NjZmMVx1ezI4MmUy''@;'; put 'put ''fVx1MzYyZFx1NzUzNFx1NTVmMFx1NTViYVx1NTQ5N1x1NTU3Mlx1ezIwYzQxfVx1ezIwYzk2fVx1NWVkMFx1ezI1MTQ4fVx1ezIwZTc2fVx1ezIyYzYyfSJdLFsiOWU0MCIsIlx1ezIwZWEyfVx1OWVhYlx1N2Q1YVx1NTVkZVx1ezIxMDc1fVx1NjI5ZFx1OTc2ZFx1NTQ5NFx1OGNjZFx1NzFm''@;'; put 'put ''Nlx1OTE3Nlx1NjNmY1x1NjNiOVx1NjNmZVx1NTU2OVx1ezIyYjQzfVx1OWM3Mlx1ezIyZWIzfVx1NTE5YVx1MzRkZlx1ezIwZGE3fVx1NTFhN1x1NTQ0ZFx1NTUxZVx1NTUxM1x1NzY2Nlx1OGUyZFx1ezI2ODhhfVx1NzViMVx1ODBiNlx1ODgwNFx1ODc4Nlx1ODhjN1x1ODFiNlx1ODQxY1x1''@;'; put 'put ''ezIxMGMxfVx1NDRlY1x1NzMwNFx1ezI0NzA2fVx1NWI5MFx1ODMwYlx1ezI2ODkzfVx1NTY3Ylx1ezIyNmY0fVx1ezI3ZDJmfVx1ezI0MWEzfVx1ezI3ZDczfVx1ezI2ZWQwfVx1ezI3MmI2fVx1OTE3MFx1ezIxMWQ5fVx1OTIwOFx1ezIzY2ZjfVx1ezJhNmE5fVx1ezIwZWFjfVx1ezIwZWY5''@;'; put 'put ''fVx1NzI2Nlx1ezIxY2EyfVx1NDc0ZVx1ezI0ZmMyfVx1ezI3ZmY5fVx1ezIwZmVifVx1NDBmYSJdLFsiOWVhMSIsIlx1OWM1ZFx1NjUxZlx1ezIyZGEwfVx1NDhmM1x1ezI0N2UwfVx1ezI5ZDdjfVx1ezIwZmVjfVx1ezIwZTBhfVx1NjA2Mlx1ezI3NWEzfVx1ezIwZmVkfSJdLFsiOWVhZCIs''@;'; put 'put ''Ilx1ezI2MDQ4fVx1ezIxMTg3fVx1NzFhM1x1N2U4ZVx1OWQ1MFx1NGUxYVx1NGUwNFx1MzU3N1x1NWIwZFx1NmNiMlx1NTM2N1x1MzZhY1x1MzlkY1x1NTM3ZFx1MzZhNVx1ezI0NjE4fVx1NTg5YVx1ezI0YjZlfVx1ODIyZFx1NTQ0Ylx1NTdhYVx1ezI1YTk1fVx1ezIwOTc5fSJdLFsiOWVj''@;'; put 'put ''NSIsIlx1M2E1Mlx1ezIyNDY1fVx1NzM3NFx1ezI5ZWFjfVx1NGQwOVx1OWJlZFx1ezIzY2ZlfVx1ezI5ZjMwfVx1NGM1Ylx1ezI0ZmE5fVx1ezI5NTllfVx1ezI5ZmRlfVx1ODQ1Y1x1ezIzZGI2fVx1ezI3MmIyfVx1ezI2N2IzfVx1ezIzNzIwfVx1NjMyZVx1N2QyNVx1ezIzZWY3fVx1ezIz''@;'; put 'put ''ZTJjfVx1M2EyYVx1OTAwOFx1NTJjY1x1M2U3NFx1MzY3YVx1NDVlOVx1ezIwNDhlfVx1NzY0MFx1NWFmMFx1ezIwZWI2fVx1Nzg3YVx1ezI3ZjJlfVx1NThhN1x1NDBiZlx1NTY3Y1x1OWI4Ylx1NWQ3NFx1NzY1NFx1ezJhNDM0fVx1OWU4NVx1NGNlMVx1NzVmOVx1MzdmYlx1NjExOVx1ezIz''@;'; put 'put ''MGRhfVx1ezI0M2YyfSJdLFsiOWVmNSIsIlx1NTY1ZFx1ezIxMmE5fVx1NTdhN1x1ezI0OTYzfVx1ezI5ZTA2fVx1NTIzNFx1ezI3MGFlfVx1MzVhZFx1NmM0YVx1OWQ3YyJdLFsiOWY0MCIsIlx1N2M1Nlx1OWIzOVx1NTdkZVx1ezIxNzZjfVx1NWM1M1x1NjRkM1x1ezI5NGQwfVx1ezI2MzM1''@;'; put 'put ''fVx1ezI3MTY0fVx1ODZhZFx1ezIwZDI4fVx1ezI2ZDIyfVx1ezI0YWUyfVx1ezIwZDcxfSJdLFsiOWY0ZiIsIlx1NTFmZVx1ezIxZjBmfVx1NWQ4ZVx1OTcwM1x1ezIxZGQxfVx1OWU4MVx1OTA0Y1x1N2IxZlx1OWIwMlx1NWNkMVx1N2JhM1x1NjI2OFx1NjMzNVx1OWFmZlx1N2JjZlx1OWIy''@;'; put 'put ''YVx1N2M3ZVx1OWIyZVx1N2M0Mlx1N2M4Nlx1OWMxNVx1N2JmY1x1OWIwOVx1OWYxN1x1OWMxYlx1ezI0OTNlfVx1OWY1YVx1NTU3M1x1NWJjM1x1NGZmZFx1OWU5OFx1NGZmMlx1NTI2MFx1M2UwNlx1NTJkMVx1NTc2N1x1NTA1Nlx1NTliN1x1NWUxMlx1OTdjOFx1OWRhYlx1OGY1Y1x1NTQ2''@;'; put 'put ''OVx1OTdiNFx1OTk0MFx1OTdiYVx1NTMyY1x1NjEzMCJdLFsiOWZhMSIsIlx1NjkyY1x1NTNkYVx1OWMwYVx1OWQwMlx1NGMzYlx1OTY0MVx1Njk4MFx1NTBhNlx1NzU0Nlx1ezIxNzZkfVx1OTlkYVx1NTI3MyJdLFsiOWZhZSIsIlx1OTE1OVx1OTY4MVx1OTE1YyJdLFsiOWZiMiIsIlx1OTE1''@;'; put 'put ''MVx1ezI4ZTk3fVx1NjM3Zlx1ezI2ZDIzfVx1NmFjYVx1NTYxMVx1OTE4ZVx1NzU3YVx1NjI4NVx1ezIwM2ZjfVx1NzM0Zlx1N2M3MFx1ezI1YzIxfVx1ezIzY2ZkfSJdLFsiOWZjMSIsIlx1ezI0OTE5fVx1NzZkNlx1OWI5ZFx1NGUyYVx1ezIwY2Q0fVx1ODNiZVx1ODg0MiJdLFsiOWZjOSIs''@;'; put 'put ''Ilx1NWM0YVx1NjljMFx1NTBlZFx1NTc3YVx1NTIxZlx1NWRmNVx1NGVjZVx1NmMzMVx1ezIwMWYyfVx1NGYzOVx1NTQ5Y1x1NTRkYVx1NTI5YVx1OGQ4Mlx1MzVmZVx1NWYwY1x1MzVmMyJdLFsiOWZkYiIsIlx1NmI1Mlx1OTE3Y1x1OWZhNVx1OWI5N1x1OTgyZVx1OThiNFx1OWFiYVx1OWVh''@;'; put 'put ''OFx1OWU4NFx1NzE3YVx1N2IxNCJdLFsiOWZlNyIsIlx1NmJmYVx1ODgxOFx1N2Y3OCJdLFsiOWZlYiIsIlx1NTYyMFx1ezJhNjRhfVx1OGU3N1x1OWY1MyJdLFsiOWZmMCIsIlx1OGRkNFx1OGU0Zlx1OWUxY1x1OGUwMVx1NjI4Mlx1ezI4MzdkfVx1OGUyOFx1OGU3NVx1N2FkM1x1ezI0YTc3''@;'; put 'put ''fVx1N2EzZVx1NzhkOFx1NmNlYVx1OGE2N1x1NzYwNyJdLFsiYTA0MCIsIlx1ezI4YTVhfVx1OWYyNlx1NmNjZVx1ODdkNlx1NzVjM1x1ezJhMmIyfVx1Nzg1M1x1ezJmODQwfVx1OGQwY1x1NzJlMlx1NzM3MVx1OGIyZFx1NzMwMlx1NzRmMVx1OGNlYlx1ezI0YWJifVx1ODYyZlx1NWZiYVx1''@;'; put 'put ''ODhhMFx1NDRiNyJdLFsiYTA1NSIsIlx1ezIxODNifVx1ezI2ZTA1fSJdLFsiYTA1OCIsIlx1OGE3ZVx1ezIyNTFifSJdLFsiYTA1YiIsIlx1NjBmZFx1NzY2N1x1OWFkN1x1OWQ0NFx1OTM2ZVx1OWI4Zlx1ODdmNSJdLFsiYTA2MyIsIlx1ODgwZlx1OGNmN1x1NzMyY1x1OTcyMVx1OWJiMFx1''@;'; put 'put ''MzVkNlx1NzJiMlx1NGMwN1x1N2M1MVx1OTk0YVx1ezI2MTU5fVx1NjE1OVx1NGMwNFx1OWU5Nlx1NjE3ZCJdLFsiYTA3MyIsIlx1NTc1Zlx1NjE2Zlx1NjJhNlx1NjIzOVx1NjJjZVx1M2E1Y1x1NjFlMlx1NTNhYVx1ezIzM2Y1fVx1NjM2NFx1NjgwMlx1MzVkMiJdLFsiYTBhMSIsIlx1NWQ1''@;'; put 'put ''N1x1ezI4YmMyfVx1OGZkYVx1ezI4ZTM5fSJdLFsiYTBhNiIsIlx1NTBkOVx1ezIxZDQ2fVx1NzkwNlx1NTMzMlx1OTYzOFx1ezIwZjNifVx1NDA2NSJdLFsiYTBhZSIsIlx1NzdmZSJdLFsiYTBiMCIsIlx1N2NjMlx1ezI1ZjFhfVx1N2NkYVx1N2EyZFx1ODA2Nlx1ODA2M1x1N2Q0ZFx1NzUw''@;'; put 'put ''NVx1NzRmMlx1ODk5NFx1ODIxYVx1NjcwY1x1ODA2Mlx1ezI3NDg2fVx1ODA1Ylx1NzRmMFx1ODEwM1x1NzcyNFx1ODk4OVx1ezI2N2NjfVx1NzU1M1x1ezI2ZWQxfVx1ODdhOVx1ODdjZVx1ODFjOFx1ODc4Y1x1OGE0OVx1OGNhZFx1OGI0M1x1NzcyYlx1NzRmOFx1ODRkYVx1MzYzNVx1Njli''@;'; put 'put ''Mlx1OGRhNiJdLFsiYTBkNCIsIlx1ODlhOVx1NzQ2OFx1NmRiOVx1ODdjMVx1ezI0MDExfVx1NzRlN1x1M2RkYlx1NzE3Nlx1NjBhNFx1NjE5Y1x1M2NkMVx1NzE2Mlx1NjA3NyJdLFsiYTBlMiIsIlx1N2Y3MVx1ezI4YjJkfVx1NzI1MFx1NjBlOVx1NGI3ZVx1NTIyMFx1M2MxOFx1ezIzY2M3''@;'; put 'put ''fVx1ezI1ZWQ3fVx1ezI3NjU2fVx1ezI1NTMxfVx1ezIxOTQ0fVx1ezIxMmZlfVx1ezI5OTAzfVx1ezI2ZGRjfVx1ezI3MGFkfVx1NWNjMVx1ezI2MWFkfVx1ezI4YTBmfVx1ezIzNjc3fVx1ezIwMGVlfVx1ezI2ODQ2fVx1ezI0ZjBlfVx1NDU2Mlx1NWIxZlx1ezI2MzRjfVx1OWY1MFx1OWVh''@;'; put 'put ''Nlx1ezI2MjZifSJdLFsiYTNjMCIsIlx1MjQwMCIsMzEsIlx1MjQyMSJdLFsiYzZhMSIsIlx1MjQ2MCIsOSwiXHUyNDc0Iiw5LCJcdTIxNzAiLDksIlx1NGUzNlx1NGUzZlx1NGU4NVx1NGVhMFx1NTE4Mlx1NTE5Nlx1NTFhYlx1NTJmOVx1NTMzOFx1NTM2OVx1NTNiNlx1NTkwYVx1NWI4MFx1''@;'; put 'put ''NWRkYlx1MmYzM1x1NWU3Zlx1NWVmNFx1NWY1MFx1NWY2MVx1NjUzNFx1NjVlMFx1NzU5Mlx1NzY3Nlx1OGZiNVx1OTZiNlx4YThcdTAyYzZcdTMwZmRcdTMwZmVcdTMwOWRcdTMwOWVcdTMwMDNcdTRlZGRcdTMwMDVcdTMwMDZcdTMwMDdcdTMwZmNcdWZmM2JcdWZmM2RcdTI3M2RcdTMwNDEi''@;'; put 'put ''LDIzXSxbImM3NDAiLCJcdTMwNTkiLDU4LCJcdTMwYTFcdTMwYTJcdTMwYTNcdTMwYTQiXSxbImM3YTEiLCJcdTMwYTUiLDgxLCJcdTA0MTAiLDUsIlx1MDQwMVx1MDQxNiIsNF0sWyJjODQwIiwiXHUwNDFiIiwyNiwiXHUwNDUxXHUwNDM2IiwyNSwiXHUyMWU3XHUyMWI4XHUyMWI5XHUzMWNm''@;'; put 'put ''XHV7MjAwY2N9XHU0ZTVhXHV7MjAwOGF9XHU1MjAyXHU0NDkxIl0sWyJjOGExIiwiXHU5ZmIwXHU1MTg4XHU5ZmIxXHV7Mjc2MDd9Il0sWyJjOGNkIiwiXHVmZmUyXHVmZmU0XHVmZjA3XHVmZjAyXHUzMjMxXHUyMTE2XHUyMTIxXHUzMDliXHUzMDljXHUyZTgwXHUyZTg0XHUyZTg2XHUyZTg3''@;'; put 'put ''XHUyZTg4XHUyZThhXHUyZThjXHUyZThkXHUyZTk1XHUyZTljXHUyZTlkXHUyZWE1XHUyZWE3XHUyZWFhXHUyZWFjXHUyZWFlXHUyZWI2XHUyZWJjXHUyZWJlXHUyZWM2XHUyZWNhXHUyZWNjXHUyZWNkXHUyZWNmXHUyZWQ2XHUyZWQ3XHUyZWRlXHUyZWUzIl0sWyJjOGY1IiwiXHUwMjgzXHUw''@;'; put 'put ''MjUwXHUwMjViXHUwMjU0XHUwMjc1XHUwMTUzXHhmOFx1MDE0Ylx1MDI4YVx1MDI2YSJdLFsiZjlmZSIsIlx1ZmZlZCJdLFsiZmE0MCIsIlx1ezIwNTQ3fVx1OTJkYlx1ezIwNWRmfVx1ezIzZmM1fVx1ODU0Y1x1NDJiNVx1NzNlZlx1NTFiNVx1MzY0OVx1ezI0OTQyfVx1ezI4OWU0fVx1OTM0''@;'; put 'put ''NFx1ezIxOWRifVx1ODJlZVx1ezIzY2M4fVx1NzgzY1x1Njc0NFx1NjJkZlx1ezI0OTMzfVx1ezI4OWFhfVx1ezIwMmEwfVx1ezI2YmIzfVx1ezIxMzA1fVx1NGZhYlx1ezIyNGVkfVx1NTAwOFx1ezI2ZDI5fVx1ezI3YTg0fVx1ezIzNjAwfVx1ezI0YWIxfVx1ezIyNTEzfVx1NTAyOVx1ezIw''@;'; put 'put ''MzdlfVx1NWZhNFx1ezIwMzgwfVx1ezIwMzQ3fVx1NmVkYlx1ezIwNDFmfVx1NTA3ZFx1NTEwMVx1MzQ3YVx1NTEwZVx1OTg2Y1x1Mzc0M1x1ODQxNlx1ezI0OWE0fVx1ezIwNDg3fVx1NTE2MFx1ezIzM2I0fVx1NTE2YVx1ezIwYmZmfVx1ezIyMGZjfVx1ezIwMmU1fVx1ezIyNTMwfVx1ezIw''@;'; put 'put ''NThlfVx1ezIzMjMzfVx1ezIxOTgzfVx1NWI4Mlx1ODc3ZFx1ezIwNWIzfVx1ezIzYzk5fVx1NTFiMlx1NTFiOCJdLFsiZmFhMSIsIlx1OWQzNFx1NTFjOVx1NTFjZlx1NTFkMVx1M2NkY1x1NTFkM1x1ezI0YWE2fVx1NTFiM1x1NTFlMlx1NTM0Mlx1NTFlZFx1ODNjZFx1NjkzZVx1ezIzNzJk''@;'; put 'put ''fVx1NWY3Ylx1NTIwYlx1NTIyNlx1NTIzY1x1NTJiNVx1NTI1N1x1NTI5NFx1NTJiOVx1NTJjNVx1N2MxNVx1ODU0Mlx1NTJlMFx1ODYwZFx1ezI2YjEzfVx1NTMwNVx1ezI4YWRlfVx1NTU0OVx1NmVkOVx1ezIzZjgwfVx1ezIwOTU0fVx1ezIzZmVjfVx1NTMzM1x1NTM0NFx1ezIwYmUyfVx1''@;'; put 'put ''NmNjYlx1ezIxNzI2fVx1NjgxYlx1NzNkNVx1NjA0YVx1M2VhYVx1MzhjY1x1ezIxNmU4fVx1NzFkZFx1NDRhMlx1NTM2ZFx1NTM3NFx1ezI4NmFifVx1NTM3ZVx1NTM3Zlx1ezIxNTk2fVx1ezIxNjEzfVx1NzdlNlx1NTM5M1x1ezI4YTlifVx1NTNhMFx1NTNhYlx1NTNhZVx1NzNhN1x1ezI1''@;'; put 'put ''NzcyfVx1M2Y1OVx1NzM5Y1x1NTNjMVx1NTNjNVx1NmM0OVx1NGU0OVx1NTdmZVx1NTNkOVx1M2FhYlx1ezIwYjhmfVx1NTNlMFx1ezIzZmVifVx1ezIyZGEzfVx1NTNmNlx1ezIwYzc3fVx1NTQxM1x1NzA3OVx1NTUyYlx1NjY1N1x1NmQ1Ylx1NTQ2ZFx1ezI2YjUzfVx1ezIwZDc0fVx1NTU1''@;'; put 'put ''ZFx1NTQ4Zlx1NTRhNFx1NDdhNlx1ezIxNzBkfVx1ezIwZWRkfVx1M2RiNFx1ezIwZDRkfSJdLFsiZmI0MCIsIlx1ezI4OWJjfVx1ezIyNjk4fVx1NTU0N1x1NGNlZFx1NTQyZlx1NzQxN1x1NTU4Nlx1NTVhOVx1NTYwNVx1ezIxOGQ3fVx1ezI0MDNhfVx1NDU1Mlx1ezI0NDM1fVx1NjZiM1x1''@;'; put 'put ''ezIxMGI0fVx1NTYzN1x1NjZjZFx1ezIzMjhhfVx1NjZhNFx1NjZhZFx1NTY0ZFx1NTY0Zlx1NzhmMVx1NTZmMVx1OTc4N1x1NTNmZVx1NTcwMFx1NTZlZlx1NTZlZFx1ezI4YjY2fVx1MzYyM1x1ezIxMjRmfVx1NTc0Nlx1ezI0MWE1fVx1NmM2ZVx1NzA4Ylx1NTc0Mlx1MzZiMVx1ezI2Yzdl''@;'; put 'put ''fVx1NTdlNlx1ezIxNDE2fVx1NTgwM1x1ezIxNDU0fVx1ezI0MzYzfVx1NTgyNlx1ezI0YmY1fVx1NTg1Y1x1NThhYVx1MzU2MVx1NThlMFx1NThkY1x1ezIxMjNjfVx1NThmYlx1NWJmZlx1NTc0M1x1ezJhMTUwfVx1ezI0Mjc4fVx1OTNkM1x1MzVhMVx1NTkxZlx1NjhhNlx1MzZjM1x1NmU1''@;'; put 'put ''OSJdLFsiZmJhMSIsIlx1ezIxNjNlfVx1NWEyNFx1NTU1M1x1ezIxNjkyfVx1ODUwNVx1NTljOVx1ezIwZDRlfVx1ezI2YzgxfVx1ezI2ZDJhfVx1ezIxN2RjfVx1NTlkOVx1ezIxN2ZifVx1ezIxN2IyfVx1ezI2ZGE2fVx1NmQ3MVx1ezIxODI4fVx1ezIxNmQ1fVx1NTlmOVx1ezI2ZTQ1fVx1''@;'; put 'put ''NWFhYlx1NWE2M1x1MzZlNlx1ezI0OWE5fVx1NWE3N1x1MzcwOFx1NWE5Nlx1NzQ2NVx1NWFkM1x1ezI2ZmExfVx1ezIyNTU0fVx1M2Q4NVx1ezIxOTExfVx1MzczMlx1ezIxNmI4fVx1NWU4M1x1NTJkMFx1NWI3Nlx1NjU4OFx1NWI3Y1x1ezI3YTBlfVx1NDAwNFx1NDg1ZFx1ezIwMjA0fVx1''@;'; put 'put ''NWJkNVx1NjE2MFx1ezIxYTM0fVx1ezI1OWNjfVx1ezIwNWE1fVx1NWJmM1x1NWI5ZFx1NGQxMFx1NWMwNVx1ezIxYjQ0fVx1NWMxM1x1NzNjZVx1NWMxNFx1ezIxY2E1fVx1ezI2YjI4fVx1NWM0OVx1NDhkZFx1NWM4NVx1NWNlOVx1NWNlZlx1NWQ4Ylx1ezIxZGY5fVx1ezIxZTM3fVx1NWQx''@;'; put 'put ''MFx1NWQxOFx1NWQ0Nlx1ezIxZWE0fVx1NWNiYVx1NWRkN1x1ODJmY1x1MzgyZFx1ezI0OTAxfVx1ezIyMDQ5fVx1ezIyMTczfVx1ODI4N1x1MzgzNlx1M2JjMlx1NWUyZVx1NmE4YVx1NWU3NVx1NWU3YVx1ezI0NGJjfVx1ezIwY2QzfVx1NTNhNlx1NGViN1x1NWVkMFx1NTNhOFx1ezIxNzcx''@;'; put 'put ''fVx1NWUwOVx1NWVmNFx1ezI4NDgyfSJdLFsiZmM0MCIsIlx1NWVmOVx1NWVmYlx1MzhhMFx1NWVmY1x1NjgzZVx1OTQxYlx1NWYwZFx1ezIwMWMxfVx1ezJmODk0fVx1M2FkZVx1NDhhZVx1ezIxMzNhfVx1NWYzYVx1ezI2ODg4fVx1ezIyM2QwfVx1NWY1OFx1ezIyNDcxfVx1NWY2M1x1OTdi''@;'; put 'put ''ZFx1ezI2ZTZlfVx1NWY3Mlx1OTM0MFx1ezI4YTM2fVx1NWZhN1x1NWRiNlx1M2Q1Zlx1ezI1MjUwfVx1ezIxZjZhfVx1ezI3MGY4fVx1ezIyNjY4fVx1OTFkNlx1ezIwMjllfVx1ezI4YTI5fVx1NjAzMVx1NjY4NVx1ezIxODc3fVx1Mzk2M1x1M2RjN1x1MzYzOVx1NTc5MFx1ezIyN2I0fVx1''@;'; put 'put ''Nzk3MVx1M2U0MFx1NjA5ZVx1NjBhNFx1NjBiM1x1ezI0OTgyfVx1ezI0OThmfVx1ezI3YTUzfVx1NzRhNFx1NTBlMVx1NWFhMFx1NjE2NFx1ODQyNFx1NjE0Mlx1ezJmOGE2fVx1ezI2ZWQyfVx1NjE4MVx1NTFmNFx1ezIwNjU2fVx1NjE4N1x1NWJhYVx1ezIzZmI3fSJdLFsiZmNhMSIsIlx1''@;'; put 'put ''ezIyODVmfVx1NjFkM1x1ezI4YjlkfVx1ezI5OTVkfVx1NjFkMFx1MzkzMlx1ezIyOTgwfVx1ezIyOGMxfVx1NjAyM1x1NjE1Y1x1NjUxZVx1NjM4Ylx1ezIwMTE4fVx1NjJjNVx1ezIxNzcwfVx1NjJkNVx1ezIyZTBkfVx1NjM2Y1x1ezI0OWRmfVx1M2ExN1x1NjQzOFx1NjNmOFx1ezIxMzhl''@;'; put 'put ''fVx1ezIxN2ZjfVx1NjQ5MFx1NmY4YVx1ezIyZTM2fVx1OTgxNFx1ezI0MDhjfVx1ezI1NzFkfVx1NjRlMVx1NjRlNVx1OTQ3Ylx1M2E2Nlx1NjQzYVx1M2E1N1x1NjU0ZFx1NmYxNlx1ezI0YTI4fVx1ezI0YTIzfVx1NjU4NVx1NjU2ZFx1NjU1Zlx1ezIzMDdlfVx1NjViNVx1ezI0OTQwfVx1''@;'; put 'put ''NGIzN1x1NjVkMVx1NDBkOFx1ezIxODI5fVx1NjVlMFx1NjVlM1x1NWZkZlx1ezIzNDAwfVx1NjYxOFx1ezIzMWY3fVx1ezIzMWY4fVx1NjY0NFx1ezIzMWE0fVx1ezIzMWE1fVx1NjY0Ylx1ezIwZTc1fVx1NjY2N1x1ezI1MWU2fVx1NjY3M1x1NjY3NFx1ezIxZTNkfVx1ezIzMjMxfVx1ezI4''@;'; put 'put ''NWY0fVx1ezIzMWM4fVx1ezI1MzEzfVx1NzdjNVx1ezIyOGY3fVx1OTlhNFx1NjcwMlx1ezI0MzljfVx1ezI0YTIxfVx1M2IyYlx1NjlmYVx1ezIzN2MyfVx1Njc1ZVx1Njc2N1x1Njc2Mlx1ezI0MWNkfVx1ezI5MGVkfVx1NjdkN1x1NDRlOVx1NjgyMlx1NmU1MFx1OTIzY1x1NjgwMVx1ezIz''@;'; put 'put ''M2U2fVx1ezI2ZGEwfVx1Njg1ZCJdLFsiZmQ0MCIsIlx1ezIzNDZmfVx1NjllMVx1NmEwYlx1ezI4YWRmfVx1Njk3M1x1NjhjM1x1ezIzNWNkfVx1NjkwMVx1NjkwMFx1M2QzMlx1M2EwMVx1ezIzNjNjfVx1M2I4MFx1NjdhY1x1Njk2MVx1ezI4YTRhfVx1NDJmY1x1NjkzNlx1Njk5OFx1M2Jh''@;'; put 'put ''MVx1ezIwM2M5fVx1ODM2M1x1NTA5MFx1NjlmOVx1ezIzNjU5fVx1ezIyMTJhfVx1NmE0NVx1ezIzNzAzfVx1NmE5ZFx1M2JmM1x1NjdiMVx1NmFjOFx1ezI5MTljfVx1M2MwZFx1NmIxZFx1ezIwOTIzfVx1NjBkZVx1NmIzNVx1NmI3NFx1ezIyN2NkfVx1NmViNVx1ezIzYWRifVx1ezIwM2I1''@;'; put 'put ''fVx1ezIxOTU4fVx1Mzc0MFx1NTQyMVx1ezIzYjVhfVx1NmJlMVx1ezIzZWZjfVx1NmJkY1x1NmMzN1x1ezIyNDhifVx1ezI0OGYxfVx1ezI2YjUxfVx1NmM1YVx1ODIyNlx1NmM3OVx1ezIzZGJjfVx1NDRjNVx1ezIzZGJkfVx1ezI0MWE0fVx1ezI0OTBjfVx1ezI0OTAwfSJdLFsiZmRhMSIs''@;'; put 'put ''Ilx1ezIzY2M5fVx1MzZlNVx1M2NlYlx1ezIwZDMyfVx1OWI4M1x1ezIzMWY5fVx1ezIyNDkxfVx1N2Y4Zlx1NjgzN1x1ezI2ZDI1fVx1ezI2ZGExfVx1ezI2ZGVifVx1NmQ5Nlx1NmQ1Y1x1NmU3Y1x1NmYwNFx1ezI0OTdmfVx1ezI0MDg1fVx1ezI2ZTcyfVx1ODUzM1x1ezI2Zjc0fVx1NTFj''@;'; put 'put ''N1x1NmM5Y1x1NmUxZFx1ODQyZVx1ezI4YjIxfVx1NmUyZlx1ezIzZTJmfVx1NzQ1M1x1ezIzZjgyfVx1NzljY1x1NmU0Zlx1NWE5MVx1ezIzMDRifVx1NmZmOFx1MzcwZFx1NmY5ZFx1ezIzZTMwfVx1NmVmYVx1ezIxNDk3fVx1ezI0MDNkfVx1NDU1NVx1OTNmMFx1NmY0NFx1NmY1Y1x1M2Q0''@;'; put 'put ''ZVx1NmY3NFx1ezI5MTcwfVx1M2QzYlx1NmY5Zlx1ezI0MTQ0fVx1NmZkM1x1ezI0MDkxfVx1ezI0MTU1fVx1ezI0MDM5fVx1ezIzZmYwfVx1ezIzZmI0fVx1ezI0MTNmfVx1NTFkZlx1ezI0MTU2fVx1ezI0MTU3fVx1ezI0MTQwfVx1ezI2MWRkfVx1NzA0Ylx1NzA3ZVx1NzBhN1x1NzA4MVx1''@;'; put 'put ''NzBjY1x1NzBkNVx1NzBkNlx1NzBkZlx1NDEwNFx1M2RlOFx1NzFiNFx1NzE5Nlx1ezI0Mjc3fVx1NzEyYlx1NzE0NVx1NWE4OFx1NzE0YVx1NzE2ZVx1NWM5Y1x1ezI0MzY1fVx1NzE0Zlx1OTM2Mlx1ezI0MmMxfVx1NzEyY1x1ezI0NDVhfVx1ezI0YTI3fVx1ezI0YTIyfVx1NzFiYVx1ezI4''@;'; put 'put ''YmU4fVx1NzBiZFx1NzIwZSJdLFsiZmU0MCIsIlx1OTQ0Mlx1NzIxNVx1NTkxMVx1OTQ0M1x1NzIyNFx1OTM0MVx1ezI1NjA1fVx1NzIyZVx1NzI0MFx1ezI0OTc0fVx1NjhiZFx1NzI1NVx1NzI1N1x1M2U1NVx1ezIzMDQ0fVx1NjgwZFx1NmYzZFx1NzI4Mlx1NzMyYVx1NzMyYlx1ezI0ODIz''@;'; put 'put ''fVx1ezI4ODJifVx1NDhlZFx1ezI4ODA0fVx1NzMyOFx1NzMyZVx1NzNjZlx1NzNhYVx1ezIwYzNhfVx1ezI2YTJlfVx1NzNjOVx1NzQ0OVx1ezI0MWUyfVx1ezIxNmU3fVx1ezI0YTI0fVx1NjYyM1x1MzZjNVx1ezI0OWI3fVx1ezI0OThkfVx1ezI0OWZifVx1NzNmN1x1NzQxNVx1NjkwM1x1''@;'; put 'put ''ezI0YTI2fVx1NzQzOVx1ezIwNWMzfVx1M2VkN1x1NzQ1Y1x1ezIyOGFkfVx1NzQ2MFx1ezI4ZWIyfVx1NzQ0N1x1NzNlNFx1NzQ3Nlx1ODNiOVx1NzQ2Y1x1MzczMFx1NzQ3NFx1OTNmMVx1NmEyY1x1NzQ4Mlx1NDk1M1x1ezI0YThjfSJdLFsiZmVhMSIsIlx1ezI0MTVmfVx1ezI0YTc5fVx1''@;'; put 'put ''ezI4YjhmfVx1NWI0Nlx1ezI4YzAzfVx1ezIxODllfVx1NzRjOFx1ezIxOTg4fVx1NzUwZVx1NzRlOVx1NzUxZVx1ezI4ZWQ5fVx1ezIxYTRifVx1NWJkN1x1ezI4ZWFjfVx1OTM4NVx1NzU0ZFx1NzU0YVx1NzU2N1x1NzU2ZVx1ezI0ZjgyfVx1M2YwNFx1ezI0ZDEzfVx1NzU4ZVx1NzQ1ZFx1''@;'; put 'put ''NzU5ZVx1NzViNFx1NzYwMlx1NzYyY1x1NzY1MVx1NzY0Zlx1NzY2Zlx1NzY3Nlx1ezI2M2Y1fVx1NzY5MFx1ODFlZlx1MzdmOFx1ezI2OTExfVx1ezI2OTBlfVx1NzZhMVx1NzZhNVx1NzZiN1x1NzZjY1x1ezI2ZjlmfVx1ODQ2Mlx1ezI1MDlkfVx1ezI1MTdkfVx1ezIxZTFjfVx1NzcxZVx1''@;'; put 'put ''NzcyNlx1Nzc0MFx1NjRhZlx1ezI1MjIwfVx1Nzc1OFx1ezIzMmFjfVx1NzdhZlx1ezI4OTY0fVx1ezI4OTY4fVx1ezIxNmMxfVx1NzdmNFx1NzgwOVx1ezIxMzc2fVx1ezI0YTEyfVx1NjhjYVx1NzhhZlx1NzhjN1x1NzhkM1x1OTZhNVx1NzkyZVx1ezI1NWUwfVx1NzhkN1x1NzkzNFx1Nzhi''@;'; put 'put ''MVx1ezI3NjBjfVx1OGZiOFx1ODg4NFx1ezI4YjJifVx1ezI2MDgzfVx1ezIyNjFjfVx1Nzk4Nlx1ODkwMFx1NjkwMlx1Nzk4MFx1ezI1ODU3fVx1Nzk5ZFx1ezI3YjM5fVx1NzkzY1x1NzlhOVx1NmUyYVx1ezI3MTI2fVx1M2VhOFx1NzljNlx1ezI5MTBkfVx1NzlkNCJdXScpfSwxMzMzNjpY''@;'; put 'put ''ZT0+eyJ1c2Ugc3RyaWN0IjtYZS5leHBvcnRzPUpTT04ucGFyc2UoJ1tbIjAiLCJcXHUwMDAwIiwxMjcsIlx1MjBhYyJdLFsiODE0MCIsIlx1NGUwMlx1NGUwNFx1NGUwNVx1NGUwNlx1NGUwZlx1NGUxMlx1NGUxN1x1NGUxZlx1NGUyMFx1NGUyMVx1NGUyM1x1NGUyNlx1NGUyOVx1NGUyZVx1''@;'; put 'put ''NGUyZlx1NGUzMVx1NGUzM1x1NGUzNVx1NGUzN1x1NGUzY1x1NGU0MFx1NGU0MVx1NGU0Mlx1NGU0NFx1NGU0Nlx1NGU0YVx1NGU1MVx1NGU1NVx1NGU1N1x1NGU1YVx1NGU1Ylx1NGU2Mlx1NGU2M1x1NGU2NFx1NGU2NVx1NGU2N1x1NGU2OFx1NGU2YSIsNSwiXHU0ZTcyXHU0ZTc0Iiw5LCJc''@;'; put 'put ''dTRlN2YiLDYsIlx1NGU4N1x1NGU4YSJdLFsiODE4MCIsIlx1NGU5MFx1NGU5Nlx1NGU5N1x1NGU5OVx1NGU5Y1x1NGU5ZFx1NGU5ZVx1NGVhM1x1NGVhYVx1NGVhZlx1NGViMFx1NGViMVx1NGViNFx1NGViNlx1NGViN1x1NGViOFx1NGViOVx1NGViY1x1NGViZFx1NGViZVx1NGVjOFx1NGVj''@;'; put 'put ''Y1x1NGVjZlx1NGVkMFx1NGVkMlx1NGVkYVx1NGVkYlx1NGVkY1x1NGVlMFx1NGVlMlx1NGVlNlx1NGVlN1x1NGVlOVx1NGVlZFx1NGVlZVx1NGVlZlx1NGVmMVx1NGVmNFx1NGVmOFx1NGVmOVx1NGVmYVx1NGVmY1x1NGVmZVx1NGYwMFx1NGYwMiIsNiwiXHU0ZjBiXHU0ZjBjXHU0ZjEyIiw0''@;'; put 'put ''LCJcdTRmMWNcdTRmMWRcdTRmMjFcdTRmMjNcdTRmMjhcdTRmMjlcdTRmMmNcdTRmMmRcdTRmMmVcdTRmMzFcdTRmMzNcdTRmMzVcdTRmMzdcdTRmMzlcdTRmM2JcdTRmM2UiLDQsIlx1NGY0NFx1NGY0NVx1NGY0NyIsNSwiXHU0ZjUyXHU0ZjU0XHU0ZjU2XHU0ZjYxXHU0ZjYyXHU0ZjY2XHU0''@;'; put 'put ''ZjY4XHU0ZjZhXHU0ZjZiXHU0ZjZkXHU0ZjZlXHU0ZjcxXHU0ZjcyXHU0Zjc1XHU0Zjc3XHU0Zjc4XHU0Zjc5XHU0ZjdhXHU0ZjdkXHU0ZjgwXHU0ZjgxXHU0ZjgyXHU0Zjg1XHU0Zjg2XHU0Zjg3XHU0ZjhhXHU0ZjhjXHU0ZjhlXHU0ZjkwXHU0ZjkyXHU0ZjkzXHU0Zjk1XHU0Zjk2XHU0Zjk4''@;'; put 'put ''XHU0Zjk5XHU0ZjlhXHU0ZjljXHU0ZjllXHU0ZjlmXHU0ZmExXHU0ZmEyIl0sWyI4MjQwIiwiXHU0ZmE0XHU0ZmFiXHU0ZmFkXHU0ZmIwIiw0LCJcdTRmYjYiLDgsIlx1NGZjMFx1NGZjMVx1NGZjMlx1NGZjNlx1NGZjN1x1NGZjOFx1NGZjOVx1NGZjYlx1NGZjY1x1NGZjZFx1NGZkMiIsNCwi''@;'; put 'put ''XHU0ZmQ5XHU0ZmRiXHU0ZmUwXHU0ZmUyXHU0ZmU0XHU0ZmU1XHU0ZmU3XHU0ZmViXHU0ZmVjXHU0ZmYwXHU0ZmYyXHU0ZmY0XHU0ZmY1XHU0ZmY2XHU0ZmY3XHU0ZmY5XHU0ZmZiXHU0ZmZjXHU0ZmZkXHU0ZmZmIiwxMV0sWyI4MjgwIiwiXHU1MDBiXHU1MDBlXHU1MDEwXHU1MDExXHU1MDEz''@;'; put 'put ''XHU1MDE1XHU1MDE2XHU1MDE3XHU1MDFiXHU1MDFkXHU1MDFlXHU1MDIwXHU1MDIyXHU1MDIzXHU1MDI0XHU1MDI3XHU1MDJiXHU1MDJmIiwxMCwiXHU1MDNiXHU1MDNkXHU1MDNmXHU1MDQwXHU1MDQxXHU1MDQyXHU1MDQ0XHU1MDQ1XHU1MDQ2XHU1MDQ5XHU1MDRhXHU1MDRiXHU1MDRkXHU1''@;'; put 'put ''MDUwIiw0LCJcdTUwNTZcdTUwNTdcdTUwNThcdTUwNTlcdTUwNWJcdTUwNWQiLDcsIlx1NTA2NiIsNSwiXHU1MDZkIiw4LCJcdTUwNzhcdTUwNzlcdTUwN2FcdTUwN2NcdTUwN2RcdTUwODFcdTUwODJcdTUwODNcdTUwODRcdTUwODZcdTUwODdcdTUwODlcdTUwOGFcdTUwOGJcdTUwOGNcdTUw''@;'; put 'put ''OGUiLDIwLCJcdTUwYTRcdTUwYTZcdTUwYWFcdTUwYWJcdTUwYWQiLDQsIlx1NTBiMyIsNiwiXHU1MGJjIl0sWyI4MzQwIiwiXHU1MGJkIiwxNywiXHU1MGQwIiw1LCJcdTUwZDdcdTUwZDhcdTUwZDlcdTUwZGIiLDEwLCJcdTUwZThcdTUwZTlcdTUwZWFcdTUwZWJcdTUwZWZcdTUwZjBcdTUw''@;'; put 'put ''ZjFcdTUwZjJcdTUwZjRcdTUwZjYiLDQsIlx1NTBmYyIsOSwiXHU1MTA4Il0sWyI4MzgwIiwiXHU1MTA5XHU1MTBhXHU1MTBjIiw1LCJcdTUxMTMiLDEzLCJcdTUxMjIiLDI4LCJcdTUxNDJcdTUxNDdcdTUxNGFcdTUxNGNcdTUxNGVcdTUxNGZcdTUxNTBcdTUxNTJcdTUxNTNcdTUxNTdcdTUx''@;'; put 'put ''NThcdTUxNTlcdTUxNWJcdTUxNWQiLDQsIlx1NTE2M1x1NTE2NFx1NTE2Nlx1NTE2N1x1NTE2OVx1NTE2YVx1NTE2Zlx1NTE3Mlx1NTE3YVx1NTE3ZVx1NTE3Zlx1NTE4M1x1NTE4NFx1NTE4Nlx1NTE4N1x1NTE4YVx1NTE4Ylx1NTE4ZVx1NTE4Zlx1NTE5MFx1NTE5MVx1NTE5M1x1NTE5NFx1''@;'; put 'put ''NTE5OFx1NTE5YVx1NTE5ZFx1NTE5ZVx1NTE5Zlx1NTFhMVx1NTFhM1x1NTFhNiIsNCwiXHU1MWFkXHU1MWFlXHU1MWI0XHU1MWI4XHU1MWI5XHU1MWJhXHU1MWJlXHU1MWJmXHU1MWMxXHU1MWMyXHU1MWMzXHU1MWM1XHU1MWM4XHU1MWNhXHU1MWNkXHU1MWNlXHU1MWQwXHU1MWQyIiw1XSxb''@;'; put 'put ''Ijg0NDAiLCJcdTUxZDhcdTUxZDlcdTUxZGFcdTUxZGNcdTUxZGVcdTUxZGZcdTUxZTJcdTUxZTNcdTUxZTUiLDUsIlx1NTFlY1x1NTFlZVx1NTFmMVx1NTFmMlx1NTFmNFx1NTFmN1x1NTFmZVx1NTIwNFx1NTIwNVx1NTIwOVx1NTIwYlx1NTIwY1x1NTIwZlx1NTIxMFx1NTIxM1x1NTIxNFx1''@;'; put 'put ''NTIxNVx1NTIxY1x1NTIxZVx1NTIxZlx1NTIyMVx1NTIyMlx1NTIyM1x1NTIyNVx1NTIyNlx1NTIyN1x1NTIyYVx1NTIyY1x1NTIyZlx1NTIzMVx1NTIzMlx1NTIzNFx1NTIzNVx1NTIzY1x1NTIzZVx1NTI0NCIsNSwiXHU1MjRiXHU1MjRlXHU1MjRmXHU1MjUyXHU1MjUzXHU1MjU1XHU1MjU3''@;'; put 'put ''XHU1MjU4Il0sWyI4NDgwIiwiXHU1MjU5XHU1MjVhXHU1MjViXHU1MjVkXHU1MjVmXHU1MjYwXHU1MjYyXHU1MjYzXHU1MjY0XHU1MjY2XHU1MjY4XHU1MjZiXHU1MjZjXHU1MjZkXHU1MjZlXHU1MjcwXHU1MjcxXHU1MjczIiw5LCJcdTUyN2VcdTUyODBcdTUyODMiLDQsIlx1NTI4OSIsNiwi''@;'; put 'put ''XHU1MjkxXHU1MjkyXHU1Mjk0Iiw2LCJcdTUyOWNcdTUyYTRcdTUyYTVcdTUyYTZcdTUyYTdcdTUyYWVcdTUyYWZcdTUyYjBcdTUyYjQiLDksIlx1NTJjMFx1NTJjMVx1NTJjMlx1NTJjNFx1NTJjNVx1NTJjNlx1NTJjOFx1NTJjYVx1NTJjY1x1NTJjZFx1NTJjZVx1NTJjZlx1NTJkMVx1NTJk''@;'; put 'put ''M1x1NTJkNFx1NTJkNVx1NTJkN1x1NTJkOSIsNSwiXHU1MmUwXHU1MmUxXHU1MmUyXHU1MmUzXHU1MmU1IiwxMCwiXHU1MmYxIiw3LCJcdTUyZmJcdTUyZmNcdTUyZmRcdTUzMDFcdTUzMDJcdTUzMDNcdTUzMDRcdTUzMDdcdTUzMDlcdTUzMGFcdTUzMGJcdTUzMGNcdTUzMGUiXSxbIjg1NDAi''@;'; put 'put ''LCJcdTUzMTFcdTUzMTJcdTUzMTNcdTUzMTRcdTUzMThcdTUzMWJcdTUzMWNcdTUzMWVcdTUzMWZcdTUzMjJcdTUzMjRcdTUzMjVcdTUzMjdcdTUzMjhcdTUzMjlcdTUzMmJcdTUzMmNcdTUzMmRcdTUzMmYiLDksIlx1NTMzY1x1NTMzZFx1NTM0MFx1NTM0Mlx1NTM0NFx1NTM0Nlx1NTM0Ylx1''@;'; put 'put ''NTM0Y1x1NTM0ZFx1NTM1MFx1NTM1NFx1NTM1OFx1NTM1OVx1NTM1Ylx1NTM1ZFx1NTM2NVx1NTM2OFx1NTM2YVx1NTM2Y1x1NTM2ZFx1NTM3Mlx1NTM3Nlx1NTM3OVx1NTM3Ylx1NTM3Y1x1NTM3ZFx1NTM3ZVx1NTM4MFx1NTM4MVx1NTM4M1x1NTM4N1x1NTM4OFx1NTM4YVx1NTM4ZVx1NTM4''@;'; put 'put ''ZiJdLFsiODU4MCIsIlx1NTM5MCIsNCwiXHU1Mzk2XHU1Mzk3XHU1Mzk5XHU1MzliXHU1MzljXHU1MzllXHU1M2EwXHU1M2ExXHU1M2E0XHU1M2E3XHU1M2FhXHU1M2FiXHU1M2FjXHU1M2FkXHU1M2FmIiw2LCJcdTUzYjdcdTUzYjhcdTUzYjlcdTUzYmFcdTUzYmNcdTUzYmRcdTUzYmVcdTUz''@;'; put 'put ''YzBcdTUzYzMiLDQsIlx1NTNjZVx1NTNjZlx1NTNkMFx1NTNkMlx1NTNkM1x1NTNkNVx1NTNkYVx1NTNkY1x1NTNkZFx1NTNkZVx1NTNlMVx1NTNlMlx1NTNlN1x1NTNmNFx1NTNmYVx1NTNmZVx1NTNmZlx1NTQwMFx1NTQwMlx1NTQwNVx1NTQwN1x1NTQwYlx1NTQxNFx1NTQxOFx1NTQxOVx1''@;'; put 'put ''NTQxYVx1NTQxY1x1NTQyMlx1NTQyNFx1NTQyNVx1NTQyYVx1NTQzMFx1NTQzM1x1NTQzNlx1NTQzN1x1NTQzYVx1NTQzZFx1NTQzZlx1NTQ0MVx1NTQ0Mlx1NTQ0NFx1NTQ0NVx1NTQ0N1x1NTQ0OVx1NTQ0Y1x1NTQ0ZFx1NTQ0ZVx1NTQ0Zlx1NTQ1MVx1NTQ1YVx1NTQ1ZCIsNCwiXHU1NDYz''@;'; put 'put ''XHU1NDY1XHU1NDY3XHU1NDY5Iiw3LCJcdTU0NzRcdTU0NzlcdTU0N2FcdTU0N2VcdTU0N2ZcdTU0ODFcdTU0ODNcdTU0ODVcdTU0ODdcdTU0ODhcdTU0ODlcdTU0OGFcdTU0OGRcdTU0OTFcdTU0OTNcdTU0OTdcdTU0OThcdTU0OWNcdTU0OWVcdTU0OWZcdTU0YTBcdTU0YTEiXSxbIjg2NDAi''@;'; put 'put ''LCJcdTU0YTJcdTU0YTVcdTU0YWVcdTU0YjBcdTU0YjJcdTU0YjVcdTU0YjZcdTU0YjdcdTU0YjlcdTU0YmFcdTU0YmNcdTU0YmVcdTU0YzNcdTU0YzVcdTU0Y2FcdTU0Y2JcdTU0ZDZcdTU0ZDhcdTU0ZGJcdTU0ZTAiLDQsIlx1NTRlYlx1NTRlY1x1NTRlZlx1NTRmMFx1NTRmMVx1NTRmNCIs''@;'; put 'put ''NSwiXHU1NGZiXHU1NGZlXHU1NTAwXHU1NTAyXHU1NTAzXHU1NTA0XHU1NTA1XHU1NTA4XHU1NTBhIiw0LCJcdTU1MTJcdTU1MTNcdTU1MTUiLDUsIlx1NTUxY1x1NTUxZFx1NTUxZVx1NTUxZlx1NTUyMVx1NTUyNVx1NTUyNiJdLFsiODY4MCIsIlx1NTUyOFx1NTUyOVx1NTUyYlx1NTUyZFx1''@;'; put 'put ''NTUzMlx1NTUzNFx1NTUzNVx1NTUzNlx1NTUzOFx1NTUzOVx1NTUzYVx1NTUzYlx1NTUzZFx1NTU0MFx1NTU0Mlx1NTU0NVx1NTU0N1x1NTU0OFx1NTU0YiIsNCwiXHU1NTUxXHU1NTUyXHU1NTUzXHU1NTU0XHU1NTU3Iiw0LCJcdTU1NWRcdTU1NWVcdTU1NWZcdTU1NjBcdTU1NjJcdTU1NjNc''@;'; put 'put ''dTU1NjhcdTU1NjlcdTU1NmJcdTU1NmYiLDUsIlx1NTU3OVx1NTU3YVx1NTU3ZFx1NTU3Zlx1NTU4NVx1NTU4Nlx1NTU4Y1x1NTU4ZFx1NTU4ZVx1NTU5MFx1NTU5Mlx1NTU5M1x1NTU5NVx1NTU5Nlx1NTU5N1x1NTU5YVx1NTU5Ylx1NTU5ZVx1NTVhMCIsNiwiXHU1NWE4Iiw4LCJcdTU1YjJc''@;'; put 'put ''dTU1YjRcdTU1YjZcdTU1YjhcdTU1YmFcdTU1YmNcdTU1YmYiLDQsIlx1NTVjNlx1NTVjN1x1NTVjOFx1NTVjYVx1NTVjYlx1NTVjZVx1NTVjZlx1NTVkMFx1NTVkNVx1NTVkNyIsNCwiXHU1NWRlXHU1NWUwXHU1NWUyXHU1NWU3XHU1NWU5XHU1NWVkXHU1NWVlXHU1NWYwXHU1NWYxXHU1NWY0''@;'; put 'put ''XHU1NWY2XHU1NWY4Iiw0LCJcdTU1ZmZcdTU2MDJcdTU2MDNcdTU2MDRcdTU2MDUiXSxbIjg3NDAiLCJcdTU2MDZcdTU2MDdcdTU2MGFcdTU2MGJcdTU2MGRcdTU2MTAiLDcsIlx1NTYxOVx1NTYxYVx1NTYxY1x1NTYxZFx1NTYyMFx1NTYyMVx1NTYyMlx1NTYyNVx1NTYyNlx1NTYyOFx1NTYy''@;'; put 'put ''OVx1NTYyYVx1NTYyYlx1NTYyZVx1NTYyZlx1NTYzMFx1NTYzM1x1NTYzNVx1NTYzN1x1NTYzOFx1NTYzYVx1NTYzY1x1NTYzZFx1NTYzZVx1NTY0MCIsMTEsIlx1NTY0ZiIsNCwiXHU1NjU1XHU1NjU2XHU1NjVhXHU1NjViXHU1NjVkIiw0XSxbIjg3ODAiLCJcdTU2NjNcdTU2NjVcdTU2NjZc''@;'; put 'put ''dTU2NjdcdTU2NmRcdTU2NmVcdTU2NmZcdTU2NzBcdTU2NzJcdTU2NzNcdTU2NzRcdTU2NzVcdTU2NzdcdTU2NzhcdTU2NzlcdTU2N2FcdTU2N2QiLDcsIlx1NTY4NyIsNiwiXHU1NjkwXHU1NjkxXHU1NjkyXHU1Njk0IiwxNCwiXHU1NmE0IiwxMCwiXHU1NmIwIiw2LCJcdTU2YjhcdTU2Yjlc''@;'; put 'put ''dTU2YmFcdTU2YmJcdTU2YmQiLDEyLCJcdTU2Y2IiLDgsIlx1NTZkNVx1NTZkNlx1NTZkOFx1NTZkOVx1NTZkY1x1NTZlM1x1NTZlNSIsNSwiXHU1NmVjXHU1NmVlXHU1NmVmXHU1NmYyXHU1NmYzXHU1NmY2XHU1NmY3XHU1NmY4XHU1NmZiXHU1NmZjXHU1NzAwXHU1NzAxXHU1NzAyXHU1NzA1''@;'; put 'put ''XHU1NzA3XHU1NzBiIiw2XSxbIjg4NDAiLCJcdTU3MTIiLDksIlx1NTcxZFx1NTcxZVx1NTcyMFx1NTcyMVx1NTcyMlx1NTcyNFx1NTcyNVx1NTcyNlx1NTcyN1x1NTcyYlx1NTczMVx1NTczMlx1NTczNCIsNCwiXHU1NzNjXHU1NzNkXHU1NzNmXHU1NzQxXHU1NzQzXHU1NzQ0XHU1NzQ1XHU1''@;'; put 'put ''NzQ2XHU1NzQ4XHU1NzQ5XHU1NzRiXHU1NzUyIiw0LCJcdTU3NThcdTU3NTlcdTU3NjJcdTU3NjNcdTU3NjVcdTU3NjdcdTU3NmNcdTU3NmVcdTU3NzBcdTU3NzFcdTU3NzJcdTU3NzRcdTU3NzVcdTU3NzhcdTU3NzlcdTU3N2FcdTU3N2RcdTU3N2VcdTU3N2ZcdTU3ODAiXSxbIjg4ODAiLCJc''@;'; put 'put ''dTU3ODFcdTU3ODdcdTU3ODhcdTU3ODlcdTU3OGFcdTU3OGQiLDQsIlx1NTc5NCIsNiwiXHU1NzljXHU1NzlkXHU1NzllXHU1NzlmXHU1N2E1XHU1N2E4XHU1N2FhXHU1N2FjXHU1N2FmXHU1N2IwXHU1N2IxXHU1N2IzXHU1N2I1XHU1N2I2XHU1N2I3XHU1N2I5Iiw4LCJcdTU3YzQiLDYsIlx1''@;'; put 'put ''NTdjY1x1NTdjZFx1NTdkMFx1NTdkMVx1NTdkM1x1NTdkNlx1NTdkN1x1NTdkYlx1NTdkY1x1NTdkZVx1NTdlMVx1NTdlMlx1NTdlM1x1NTdlNSIsNywiXHU1N2VlXHU1N2YwXHU1N2YxXHU1N2YyXHU1N2YzXHU1N2Y1XHU1N2Y2XHU1N2Y3XHU1N2ZiXHU1N2ZjXHU1N2ZlXHU1N2ZmXHU1ODAx''@;'; put 'put ''XHU1ODAzXHU1ODA0XHU1ODA1XHU1ODA4XHU1ODA5XHU1ODBhXHU1ODBjXHU1ODBlXHU1ODBmXHU1ODEwXHU1ODEyXHU1ODEzXHU1ODE0XHU1ODE2XHU1ODE3XHU1ODE4XHU1ODFhXHU1ODFiXHU1ODFjXHU1ODFkXHU1ODFmXHU1ODIyXHU1ODIzXHU1ODI1Iiw0LCJcdTU4MmIiLDQsIlx1NTgz''@;'; put 'put ''MVx1NTgzMlx1NTgzM1x1NTgzNFx1NTgzNiIsN10sWyI4OTQwIiwiXHU1ODNlIiw1LCJcdTU4NDUiLDYsIlx1NTg0ZVx1NTg0Zlx1NTg1MFx1NTg1Mlx1NTg1M1x1NTg1NVx1NTg1Nlx1NTg1N1x1NTg1OSIsNCwiXHU1ODVmIiw1LCJcdTU4NjYiLDQsIlx1NTg2ZCIsMTYsIlx1NTg3Zlx1NTg4''@;'; put 'put ''Mlx1NTg4NFx1NTg4Nlx1NTg4N1x1NTg4OFx1NTg4YVx1NTg4Ylx1NTg4YyJdLFsiODk4MCIsIlx1NTg4ZCIsNCwiXHU1ODk0Iiw0LCJcdTU4OWJcdTU4OWNcdTU4OWRcdTU4YTAiLDcsIlx1NThhYSIsMTcsIlx1NThiZFx1NThiZVx1NThiZlx1NThjMFx1NThjMlx1NThjM1x1NThjNFx1NThj''@;'; put 'put ''NiIsMTAsIlx1NThkMlx1NThkM1x1NThkNFx1NThkNiIsMTMsIlx1NThlNSIsNSwiXHU1OGVkXHU1OGVmXHU1OGYxXHU1OGYyXHU1OGY0XHU1OGY1XHU1OGY3XHU1OGY4XHU1OGZhIiw3LCJcdTU5MDNcdTU5MDVcdTU5MDZcdTU5MDgiLDQsIlx1NTkwZVx1NTkxMFx1NTkxMVx1NTkxMlx1NTkx''@;'; put 'put ''M1x1NTkxN1x1NTkxOFx1NTkxYlx1NTkxZFx1NTkxZVx1NTkyMFx1NTkyMVx1NTkyMlx1NTkyM1x1NTkyNlx1NTkyOFx1NTkyY1x1NTkzMFx1NTkzMlx1NTkzM1x1NTkzNVx1NTkzNlx1NTkzYiJdLFsiOGE0MCIsIlx1NTkzZFx1NTkzZVx1NTkzZlx1NTk0MFx1NTk0M1x1NTk0NVx1NTk0Nlx1''@;'; put 'put ''NTk0YVx1NTk0Y1x1NTk0ZFx1NTk1MFx1NTk1Mlx1NTk1M1x1NTk1OVx1NTk1YiIsNCwiXHU1OTYxXHU1OTYzXHU1OTY0XHU1OTY2IiwxMiwiXHU1OTc1XHU1OTc3XHU1OTdhXHU1OTdiXHU1OTdjXHU1OTdlXHU1OTdmXHU1OTgwXHU1OTg1XHU1OTg5XHU1OThiXHU1OThjXHU1OThlXHU1OThm''@;'; put 'put ''XHU1OTkwXHU1OTkxXHU1OTk0XHU1OTk1XHU1OTk4XHU1OTlhXHU1OTliXHU1OTljXHU1OTlkXHU1OTlmXHU1OWEwXHU1OWExXHU1OWEyXHU1OWE2Il0sWyI4YTgwIiwiXHU1OWE3XHU1OWFjXHU1OWFkXHU1OWIwXHU1OWIxXHU1OWIzIiw1LCJcdTU5YmFcdTU5YmNcdTU5YmRcdTU5YmYiLDYs''@;'; put 'put ''Ilx1NTljN1x1NTljOFx1NTljOVx1NTljY1x1NTljZFx1NTljZVx1NTljZlx1NTlkNVx1NTlkNlx1NTlkOVx1NTlkYlx1NTlkZSIsNCwiXHU1OWU0XHU1OWU2XHU1OWU3XHU1OWU5XHU1OWVhXHU1OWViXHU1OWVkIiwxMSwiXHU1OWZhXHU1OWZjXHU1OWZkXHU1OWZlXHU1YTAwXHU1YTAyXHU1''@;'; put 'put ''YTBhXHU1YTBiXHU1YTBkXHU1YTBlXHU1YTBmXHU1YTEwXHU1YTEyXHU1YTE0XHU1YTE1XHU1YTE2XHU1YTE3XHU1YTE5XHU1YTFhXHU1YTFiXHU1YTFkXHU1YTFlXHU1YTIxXHU1YTIyXHU1YTI0XHU1YTI2XHU1YTI3XHU1YTI4XHU1YTJhIiw2LCJcdTVhMzNcdTVhMzVcdTVhMzciLDQsIlx1''@;'; put 'put ''NWEzZFx1NWEzZVx1NWEzZlx1NWE0MSIsNCwiXHU1YTQ3XHU1YTQ4XHU1YTRiIiw5LCJcdTVhNTZcdTVhNTdcdTVhNThcdTVhNTlcdTVhNWIiLDVdLFsiOGI0MCIsIlx1NWE2MVx1NWE2M1x1NWE2NFx1NWE2NVx1NWE2Nlx1NWE2OFx1NWE2OVx1NWE2YiIsOCwiXHU1YTc4XHU1YTc5XHU1YTdi''@;'; put 'put ''XHU1YTdjXHU1YTdkXHU1YTdlXHU1YTgwIiwxNywiXHU1YTkzIiw2LCJcdTVhOWMiLDEzLCJcdTVhYWJcdTVhYWMiXSxbIjhiODAiLCJcdTVhYWQiLDQsIlx1NWFiNFx1NWFiNlx1NWFiN1x1NWFiOSIsNCwiXHU1YWJmXHU1YWMwXHU1YWMzIiw1LCJcdTVhY2FcdTVhY2JcdTVhY2QiLDQsIlx1''@;'; put 'put ''NWFkM1x1NWFkNVx1NWFkN1x1NWFkOVx1NWFkYVx1NWFkYlx1NWFkZFx1NWFkZVx1NWFkZlx1NWFlMlx1NWFlNFx1NWFlNVx1NWFlN1x1NWFlOFx1NWFlYVx1NWFlYyIsNCwiXHU1YWYyIiwyMiwiXHU1YjBhIiwxMSwiXHU1YjE4IiwyNSwiXHU1YjMzXHU1YjM1XHU1YjM2XHU1YjM4Iiw3LCJc''@;'; put 'put ''dTViNDEiLDZdLFsiOGM0MCIsIlx1NWI0OCIsNywiXHU1YjUyXHU1YjU2XHU1YjVlXHU1YjYwXHU1YjYxXHU1YjY3XHU1YjY4XHU1YjZiXHU1YjZkXHU1YjZlXHU1YjZmXHU1YjcyXHU1Yjc0XHU1Yjc2XHU1Yjc3XHU1Yjc4XHU1Yjc5XHU1YjdiXHU1YjdjXHU1YjdlXHU1YjdmXHU1YjgyXHU1''@;'; put 'put ''Yjg2XHU1YjhhXHU1YjhkXHU1YjhlXHU1YjkwXHU1YjkxXHU1YjkyXHU1Yjk0XHU1Yjk2XHU1YjlmXHU1YmE3XHU1YmE4XHU1YmE5XHU1YmFjXHU1YmFkXHU1YmFlXHU1YmFmXHU1YmIxXHU1YmIyXHU1YmI3XHU1YmJhXHU1YmJiXHU1YmJjXHU1YmMwXHU1YmMxXHU1YmMzXHU1YmM4XHU1YmM5''@;'; put 'put ''XHU1YmNhXHU1YmNiXHU1YmNkXHU1YmNlXHU1YmNmIl0sWyI4YzgwIiwiXHU1YmQxXHU1YmQ0Iiw4LCJcdTViZTBcdTViZTJcdTViZTNcdTViZTZcdTViZTdcdTViZTkiLDQsIlx1NWJlZlx1NWJmMSIsNiwiXHU1YmZkXHU1YmZlXHU1YzAwXHU1YzAyXHU1YzAzXHU1YzA1XHU1YzA3XHU1YzA4''@;'; put 'put ''XHU1YzBiXHU1YzBjXHU1YzBkXHU1YzBlXHU1YzEwXHU1YzEyXHU1YzEzXHU1YzE3XHU1YzE5XHU1YzFiXHU1YzFlXHU1YzFmXHU1YzIwXHU1YzIxXHU1YzIzXHU1YzI2XHU1YzI4XHU1YzI5XHU1YzJhXHU1YzJiXHU1YzJkXHU1YzJlXHU1YzJmXHU1YzMwXHU1YzMyXHU1YzMzXHU1YzM1XHU1''@;'; put 'put ''YzM2XHU1YzM3XHU1YzQzXHU1YzQ0XHU1YzQ2XHU1YzQ3XHU1YzRjXHU1YzRkXHU1YzUyXHU1YzUzXHU1YzU0XHU1YzU2XHU1YzU3XHU1YzU4XHU1YzVhXHU1YzViXHU1YzVjXHU1YzVkXHU1YzVmXHU1YzYyXHU1YzY0XHU1YzY3Iiw2LCJcdTVjNzBcdTVjNzIiLDYsIlx1NWM3Ylx1NWM3Y1x1''@;'; put 'put ''NWM3ZFx1NWM3ZVx1NWM4MFx1NWM4MyIsNCwiXHU1Yzg5XHU1YzhhXHU1YzhiXHU1YzhlXHU1YzhmXHU1YzkyXHU1YzkzXHU1Yzk1XHU1YzlkIiw0LCJcdTVjYTQiLDRdLFsiOGQ0MCIsIlx1NWNhYVx1NWNhZVx1NWNhZlx1NWNiMFx1NWNiMlx1NWNiNFx1NWNiNlx1NWNiOVx1NWNiYVx1NWNi''@;'; put 'put ''Ylx1NWNiY1x1NWNiZVx1NWNjMFx1NWNjMlx1NWNjM1x1NWNjNSIsNSwiXHU1Y2NjIiw1LCJcdTVjZDMiLDUsIlx1NWNkYSIsNiwiXHU1Y2UyXHU1Y2UzXHU1Y2U3XHU1Y2U5XHU1Y2ViXHU1Y2VjXHU1Y2VlXHU1Y2VmXHU1Y2YxIiw5LCJcdTVjZmMiLDRdLFsiOGQ4MCIsIlx1NWQwMVx1NWQw''@;'; put 'put ''NFx1NWQwNVx1NWQwOCIsNSwiXHU1ZDBmIiw0LCJcdTVkMTVcdTVkMTdcdTVkMThcdTVkMTlcdTVkMWFcdTVkMWNcdTVkMWRcdTVkMWYiLDQsIlx1NWQyNVx1NWQyOFx1NWQyYVx1NWQyYlx1NWQyY1x1NWQyZiIsNCwiXHU1ZDM1Iiw3LCJcdTVkM2YiLDcsIlx1NWQ0OFx1NWQ0OVx1NWQ0ZCIs''@;'; put 'put ''MTAsIlx1NWQ1OVx1NWQ1YVx1NWQ1Y1x1NWQ1ZSIsMTAsIlx1NWQ2YVx1NWQ2ZFx1NWQ2ZVx1NWQ3MFx1NWQ3MVx1NWQ3Mlx1NWQ3M1x1NWQ3NSIsMTIsIlx1NWQ4MyIsMjEsIlx1NWQ5YVx1NWQ5Ylx1NWQ5Y1x1NWQ5ZVx1NWQ5Zlx1NWRhMCJdLFsiOGU0MCIsIlx1NWRhMSIsMjEsIlx1NWRi''@;'; put 'put ''OCIsMTIsIlx1NWRjNiIsNiwiXHU1ZGNlIiwxMiwiXHU1ZGRjXHU1ZGRmXHU1ZGUwXHU1ZGUzXHU1ZGU0XHU1ZGVhXHU1ZGVjXHU1ZGVkIl0sWyI4ZTgwIiwiXHU1ZGYwXHU1ZGY1XHU1ZGY2XHU1ZGY4Iiw0LCJcdTVkZmZcdTVlMDBcdTVlMDRcdTVlMDdcdTVlMDlcdTVlMGFcdTVlMGJcdTVl''@;'; put 'put ''MGRcdTVlMGVcdTVlMTJcdTVlMTNcdTVlMTdcdTVlMWUiLDcsIlx1NWUyOCIsNCwiXHU1ZTJmXHU1ZTMwXHU1ZTMyIiw0LCJcdTVlMzlcdTVlM2FcdTVlM2VcdTVlM2ZcdTVlNDBcdTVlNDFcdTVlNDNcdTVlNDYiLDUsIlx1NWU0ZCIsNiwiXHU1ZTU2Iiw0LCJcdTVlNWNcdTVlNWRcdTVlNWZc''@;'; put 'put ''dTVlNjBcdTVlNjMiLDE0LCJcdTVlNzVcdTVlNzdcdTVlNzlcdTVlN2VcdTVlODFcdTVlODJcdTVlODNcdTVlODVcdTVlODhcdTVlODlcdTVlOGNcdTVlOGRcdTVlOGVcdTVlOTJcdTVlOThcdTVlOWJcdTVlOWRcdTVlYTFcdTVlYTJcdTVlYTNcdTVlYTRcdTVlYTgiLDQsIlx1NWVhZSIsNCwi''@;'; put 'put ''XHU1ZWI0XHU1ZWJhXHU1ZWJiXHU1ZWJjXHU1ZWJkXHU1ZWJmIiw2XSxbIjhmNDAiLCJcdTVlYzZcdTVlYzdcdTVlYzhcdTVlY2IiLDUsIlx1NWVkNFx1NWVkNVx1NWVkN1x1NWVkOFx1NWVkOVx1NWVkYVx1NWVkYyIsMTEsIlx1NWVlOVx1NWVlYiIsOCwiXHU1ZWY1XHU1ZWY4XHU1ZWY5XHU1''@;'; put 'put ''ZWZiXHU1ZWZjXHU1ZWZkXHU1ZjA1XHU1ZjA2XHU1ZjA3XHU1ZjA5XHU1ZjBjXHU1ZjBkXHU1ZjBlXHU1ZjEwXHU1ZjEyXHU1ZjE0XHU1ZjE2XHU1ZjE5XHU1ZjFhXHU1ZjFjXHU1ZjFkXHU1ZjFlXHU1ZjIxXHU1ZjIyXHU1ZjIzXHU1ZjI0Il0sWyI4ZjgwIiwiXHU1ZjI4XHU1ZjJiXHU1ZjJj''@;'; put 'put ''XHU1ZjJlXHU1ZjMwXHU1ZjMyIiw2LCJcdTVmM2JcdTVmM2RcdTVmM2VcdTVmM2ZcdTVmNDEiLDE0LCJcdTVmNTFcdTVmNTRcdTVmNTlcdTVmNWFcdTVmNWJcdTVmNWNcdTVmNWVcdTVmNWZcdTVmNjBcdTVmNjNcdTVmNjVcdTVmNjdcdTVmNjhcdTVmNmJcdTVmNmVcdTVmNmZcdTVmNzJcdTVm''@;'; put 'put ''NzRcdTVmNzVcdTVmNzZcdTVmNzhcdTVmN2FcdTVmN2RcdTVmN2VcdTVmN2ZcdTVmODNcdTVmODZcdTVmOGRcdTVmOGVcdTVmOGZcdTVmOTFcdTVmOTNcdTVmOTRcdTVmOTZcdTVmOWFcdTVmOWJcdTVmOWRcdTVmOWVcdTVmOWZcdTVmYTBcdTVmYTIiLDUsIlx1NWZhOVx1NWZhYlx1NWZhY1x1''@;'; put 'put ''NWZhZiIsNSwiXHU1ZmI2XHU1ZmI4XHU1ZmI5XHU1ZmJhXHU1ZmJiXHU1ZmJlIiw0LCJcdTVmYzdcdTVmYzhcdTVmY2FcdTVmY2JcdTVmY2VcdTVmZDNcdTVmZDRcdTVmZDVcdTVmZGFcdTVmZGJcdTVmZGNcdTVmZGVcdTVmZGZcdTVmZTJcdTVmZTNcdTVmZTVcdTVmZTZcdTVmZThcdTVmZTlc''@;'; put 'put ''dTVmZWNcdTVmZWZcdTVmZjBcdTVmZjJcdTVmZjNcdTVmZjRcdTVmZjZcdTVmZjdcdTVmZjlcdTVmZmFcdTVmZmNcdTYwMDciXSxbIjkwNDAiLCJcdTYwMDhcdTYwMDlcdTYwMGJcdTYwMGNcdTYwMTBcdTYwMTFcdTYwMTNcdTYwMTdcdTYwMThcdTYwMWFcdTYwMWVcdTYwMWZcdTYwMjJcdTYw''@;'; put 'put ''MjNcdTYwMjRcdTYwMmNcdTYwMmRcdTYwMmVcdTYwMzAiLDQsIlx1NjAzNiIsNCwiXHU2MDNkXHU2MDNlXHU2MDQwXHU2MDQ0Iiw2LCJcdTYwNGNcdTYwNGVcdTYwNGZcdTYwNTFcdTYwNTNcdTYwNTRcdTYwNTZcdTYwNTdcdTYwNThcdTYwNWJcdTYwNWNcdTYwNWVcdTYwNWZcdTYwNjBcdTYw''@;'; put 'put ''NjFcdTYwNjVcdTYwNjZcdTYwNmVcdTYwNzFcdTYwNzJcdTYwNzRcdTYwNzVcdTYwNzdcdTYwN2VcdTYwODAiXSxbIjkwODAiLCJcdTYwODFcdTYwODJcdTYwODVcdTYwODZcdTYwODdcdTYwODhcdTYwOGFcdTYwOGJcdTYwOGVcdTYwOGZcdTYwOTBcdTYwOTFcdTYwOTNcdTYwOTVcdTYwOTdc''@;'; put 'put ''dTYwOThcdTYwOTlcdTYwOWNcdTYwOWVcdTYwYTFcdTYwYTJcdTYwYTRcdTYwYTVcdTYwYTdcdTYwYTlcdTYwYWFcdTYwYWVcdTYwYjBcdTYwYjNcdTYwYjVcdTYwYjZcdTYwYjdcdTYwYjlcdTYwYmFcdTYwYmQiLDcsIlx1NjBjN1x1NjBjOFx1NjBjOVx1NjBjYyIsNCwiXHU2MGQyXHU2MGQz''@;'; put 'put ''XHU2MGQ0XHU2MGQ2XHU2MGQ3XHU2MGQ5XHU2MGRiXHU2MGRlXHU2MGUxIiw0LCJcdTYwZWFcdTYwZjFcdTYwZjJcdTYwZjVcdTYwZjdcdTYwZjhcdTYwZmIiLDQsIlx1NjEwMlx1NjEwM1x1NjEwNFx1NjEwNVx1NjEwN1x1NjEwYVx1NjEwYlx1NjEwY1x1NjExMCIsNCwiXHU2MTE2XHU2MTE3''@;'; put 'put ''XHU2MTE4XHU2MTE5XHU2MTFiXHU2MTFjXHU2MTFkXHU2MTFlXHU2MTIxXHU2MTIyXHU2MTI1XHU2MTI4XHU2MTI5XHU2MTJhXHU2MTJjIiwxOCwiXHU2MTQwIiw2XSxbIjkxNDAiLCJcdTYxNDdcdTYxNDlcdTYxNGJcdTYxNGRcdTYxNGZcdTYxNTBcdTYxNTJcdTYxNTNcdTYxNTRcdTYxNTYi''@;'; put 'put ''LDYsIlx1NjE1ZVx1NjE1Zlx1NjE2MFx1NjE2MVx1NjE2M1x1NjE2NFx1NjE2NVx1NjE2Nlx1NjE2OSIsNiwiXHU2MTcxXHU2MTcyXHU2MTczXHU2MTc0XHU2MTc2XHU2MTc4IiwxOCwiXHU2MThjXHU2MThkXHU2MThmIiw0LCJcdTYxOTUiXSxbIjkxODAiLCJcdTYxOTYiLDYsIlx1NjE5ZSIs''@;'; put 'put ''OCwiXHU2MWFhXHU2MWFiXHU2MWFkIiw5LCJcdTYxYjgiLDUsIlx1NjFiZlx1NjFjMFx1NjFjMVx1NjFjMyIsNCwiXHU2MWM5XHU2MWNjIiw0LCJcdTYxZDNcdTYxZDUiLDE2LCJcdTYxZTciLDEzLCJcdTYxZjYiLDgsIlx1NjIwMCIsNSwiXHU2MjA3XHU2MjA5XHU2MjEzXHU2MjE0XHU2MjE5''@;'; put 'put ''XHU2MjFjXHU2MjFkXHU2MjFlXHU2MjIwXHU2MjIzXHU2MjI2XHU2MjI3XHU2MjI4XHU2MjI5XHU2MjJiXHU2MjJkXHU2MjJmXHU2MjMwXHU2MjMxXHU2MjMyXHU2MjM1XHU2MjM2XHU2MjM4Iiw0LCJcdTYyNDJcdTYyNDRcdTYyNDVcdTYyNDZcdTYyNGEiXSxbIjkyNDAiLCJcdTYyNGZcdTYy''@;'; put 'put ''NTBcdTYyNTVcdTYyNTZcdTYyNTdcdTYyNTlcdTYyNWFcdTYyNWMiLDYsIlx1NjI2NFx1NjI2NVx1NjI2OFx1NjI3MVx1NjI3Mlx1NjI3NFx1NjI3NVx1NjI3N1x1NjI3OFx1NjI3YVx1NjI3Ylx1NjI3ZFx1NjI4MVx1NjI4Mlx1NjI4M1x1NjI4NVx1NjI4Nlx1NjI4N1x1NjI4OFx1NjI4YiIs''@;'; put 'put ''NSwiXHU2Mjk0XHU2Mjk5XHU2MjljXHU2MjlkXHU2MjllXHU2MmEzXHU2MmE2XHU2MmE3XHU2MmE5XHU2MmFhXHU2MmFkXHU2MmFlXHU2MmFmXHU2MmIwXHU2MmIyXHU2MmIzXHU2MmI0XHU2MmI2XHU2MmI3XHU2MmI4XHU2MmJhXHU2MmJlXHU2MmMwXHU2MmMxIl0sWyI5MjgwIiwiXHU2MmMz''@;'; put 'put ''XHU2MmNiXHU2MmNmXHU2MmQxXHU2MmQ1XHU2MmRkXHU2MmRlXHU2MmUwXHU2MmUxXHU2MmU0XHU2MmVhXHU2MmViXHU2MmYwXHU2MmYyXHU2MmY1XHU2MmY4XHU2MmY5XHU2MmZhXHU2MmZiXHU2MzAwXHU2MzAzXHU2MzA0XHU2MzA1XHU2MzA2XHU2MzBhXHU2MzBiXHU2MzBjXHU2MzBkXHU2''@;'; put 'put ''MzBmXHU2MzEwXHU2MzEyXHU2MzEzXHU2MzE0XHU2MzE1XHU2MzE3XHU2MzE4XHU2MzE5XHU2MzFjXHU2MzI2XHU2MzI3XHU2MzI5XHU2MzJjXHU2MzJkXHU2MzJlXHU2MzMwXHU2MzMxXHU2MzMzIiw1LCJcdTYzM2JcdTYzM2NcdTYzM2VcdTYzM2ZcdTYzNDBcdTYzNDFcdTYzNDRcdTYzNDdc''@;'; put 'put ''dTYzNDhcdTYzNGFcdTYzNTFcdTYzNTJcdTYzNTNcdTYzNTRcdTYzNTYiLDcsIlx1NjM2MFx1NjM2NFx1NjM2NVx1NjM2Nlx1NjM2OFx1NjM2YVx1NjM2Ylx1NjM2Y1x1NjM2Zlx1NjM3MFx1NjM3Mlx1NjM3M1x1NjM3NFx1NjM3NVx1NjM3OFx1NjM3OVx1NjM3Y1x1NjM3ZFx1NjM3ZVx1NjM3''@;'; put 'put ''Zlx1NjM4MVx1NjM4M1x1NjM4NFx1NjM4NVx1NjM4Nlx1NjM4Ylx1NjM4ZFx1NjM5MVx1NjM5M1x1NjM5NFx1NjM5NVx1NjM5N1x1NjM5OSIsNiwiXHU2M2ExXHU2M2E0XHU2M2E2XHU2M2FiXHU2M2FmXHU2M2IxXHU2M2IyXHU2M2I1XHU2M2I2XHU2M2I5XHU2M2JiXHU2M2JkXHU2M2JmXHU2''@;'; put 'put ''M2MwIl0sWyI5MzQwIiwiXHU2M2MxXHU2M2MyXHU2M2MzXHU2M2M1XHU2M2M3XHU2M2M4XHU2M2NhXHU2M2NiXHU2M2NjXHU2M2QxXHU2M2QzXHU2M2Q0XHU2M2Q1XHU2M2Q3Iiw2LCJcdTYzZGZcdTYzZTJcdTYzZTQiLDQsIlx1NjNlYlx1NjNlY1x1NjNlZVx1NjNlZlx1NjNmMFx1NjNmMVx1''@;'; put 'put ''NjNmM1x1NjNmNVx1NjNmN1x1NjNmOVx1NjNmYVx1NjNmYlx1NjNmY1x1NjNmZVx1NjQwM1x1NjQwNFx1NjQwNiIsNCwiXHU2NDBkXHU2NDBlXHU2NDExXHU2NDEyXHU2NDE1Iiw1LCJcdTY0MWRcdTY0MWZcdTY0MjJcdTY0MjNcdTY0MjQiXSxbIjkzODAiLCJcdTY0MjVcdTY0MjdcdTY0Mjhc''@;'; put 'put ''dTY0MjlcdTY0MmJcdTY0MmUiLDUsIlx1NjQzNSIsNCwiXHU2NDNiXHU2NDNjXHU2NDNlXHU2NDQwXHU2NDQyXHU2NDQzXHU2NDQ5XHU2NDRiIiw2LCJcdTY0NTNcdTY0NTVcdTY0NTZcdTY0NTdcdTY0NTkiLDQsIlx1NjQ1ZiIsNywiXHU2NDY4XHU2NDZhXHU2NDZiXHU2NDZjXHU2NDZlIiw5''@;'; put 'put ''LCJcdTY0N2IiLDYsIlx1NjQ4M1x1NjQ4Nlx1NjQ4OCIsOCwiXHU2NDkzXHU2NDk0XHU2NDk3XHU2NDk4XHU2NDlhXHU2NDliXHU2NDljXHU2NDlkXHU2NDlmIiw0LCJcdTY0YTVcdTY0YTZcdTY0YTdcdTY0YThcdTY0YWFcdTY0YWJcdTY0YWZcdTY0YjFcdTY0YjJcdTY0YjNcdTY0YjRcdTY0''@;'; put 'put ''YjZcdTY0YjlcdTY0YmJcdTY0YmRcdTY0YmVcdTY0YmZcdTY0YzFcdTY0YzNcdTY0YzRcdTY0YzYiLDYsIlx1NjRjZlx1NjRkMVx1NjRkM1x1NjRkNFx1NjRkNVx1NjRkNlx1NjRkOVx1NjRkYSJdLFsiOTQ0MCIsIlx1NjRkYlx1NjRkY1x1NjRkZFx1NjRkZlx1NjRlMFx1NjRlMVx1NjRlM1x1''@;'; put 'put ''NjRlNVx1NjRlNyIsMjQsIlx1NjUwMSIsNywiXHU2NTBhIiw3LCJcdTY1MTMiLDQsIlx1NjUxOSIsOF0sWyI5NDgwIiwiXHU2NTIyXHU2NTIzXHU2NTI0XHU2NTI2Iiw0LCJcdTY1MmNcdTY1MmRcdTY1MzBcdTY1MzFcdTY1MzJcdTY1MzNcdTY1MzdcdTY1M2FcdTY1M2NcdTY1M2RcdTY1NDAi''@;'; put 'put ''LDQsIlx1NjU0Nlx1NjU0N1x1NjU0YVx1NjU0Ylx1NjU0ZFx1NjU0ZVx1NjU1MFx1NjU1Mlx1NjU1M1x1NjU1NFx1NjU1N1x1NjU1OFx1NjU1YVx1NjU1Y1x1NjU1Zlx1NjU2MFx1NjU2MVx1NjU2NFx1NjU2NVx1NjU2N1x1NjU2OFx1NjU2OVx1NjU2YVx1NjU2ZFx1NjU2ZVx1NjU2Zlx1NjU3''@;'; put 'put ''MVx1NjU3M1x1NjU3NVx1NjU3Nlx1NjU3OCIsMTQsIlx1NjU4OFx1NjU4OVx1NjU4YVx1NjU4ZFx1NjU4ZVx1NjU4Zlx1NjU5Mlx1NjU5NFx1NjU5NVx1NjU5Nlx1NjU5OFx1NjU5YVx1NjU5ZFx1NjU5ZVx1NjVhMFx1NjVhMlx1NjVhM1x1NjVhNlx1NjVhOFx1NjVhYVx1NjVhY1x1NjVhZVx1''@;'; put 'put ''NjViMSIsNywiXHU2NWJhXHU2NWJiXHU2NWJlXHU2NWJmXHU2NWMwXHU2NWMyXHU2NWM3XHU2NWM4XHU2NWM5XHU2NWNhXHU2NWNkXHU2NWQwXHU2NWQxXHU2NWQzXHU2NWQ0XHU2NWQ1XHU2NWQ4Iiw3LCJcdTY1ZTFcdTY1ZTNcdTY1ZTRcdTY1ZWFcdTY1ZWIiXSxbIjk1NDAiLCJcdTY1ZjJc''@;'; put 'put ''dTY1ZjNcdTY1ZjRcdTY1ZjVcdTY1ZjhcdTY1ZjlcdTY1ZmIiLDQsIlx1NjYwMVx1NjYwNFx1NjYwNVx1NjYwN1x1NjYwOFx1NjYwOVx1NjYwYlx1NjYwZFx1NjYxMFx1NjYxMVx1NjYxMlx1NjYxNlx1NjYxN1x1NjYxOFx1NjYxYVx1NjYxYlx1NjYxY1x1NjYxZVx1NjYyMVx1NjYyMlx1NjYy''@;'; put 'put ''M1x1NjYyNFx1NjYyNlx1NjYyOVx1NjYyYVx1NjYyYlx1NjYyY1x1NjYyZVx1NjYzMFx1NjYzMlx1NjYzM1x1NjYzNyIsNCwiXHU2NjNkXHU2NjNmXHU2NjQwXHU2NjQyXHU2NjQ0Iiw2LCJcdTY2NGRcdTY2NGVcdTY2NTBcdTY2NTFcdTY2NTgiXSxbIjk1ODAiLCJcdTY2NTlcdTY2NWJcdTY2''@;'; put 'put ''NWNcdTY2NWRcdTY2NWVcdTY2NjBcdTY2NjJcdTY2NjNcdTY2NjVcdTY2NjdcdTY2NjkiLDQsIlx1NjY3MVx1NjY3Mlx1NjY3M1x1NjY3NVx1NjY3OFx1NjY3OVx1NjY3Ylx1NjY3Y1x1NjY3ZFx1NjY3Zlx1NjY4MFx1NjY4MVx1NjY4M1x1NjY4NVx1NjY4Nlx1NjY4OFx1NjY4OVx1NjY4YVx1''@;'; put 'put ''NjY4Ylx1NjY4ZFx1NjY4ZVx1NjY4Zlx1NjY5MFx1NjY5Mlx1NjY5M1x1NjY5NFx1NjY5NVx1NjY5OCIsNCwiXHU2NjllIiw4LCJcdTY2YTkiLDQsIlx1NjZhZiIsNCwiXHU2NmI1XHU2NmI2XHU2NmI3XHU2NmI4XHU2NmJhXHU2NmJiXHU2NmJjXHU2NmJkXHU2NmJmIiwyNSwiXHU2NmRhXHU2''@;'; put 'put ''NmRlIiw3LCJcdTY2ZTdcdTY2ZThcdTY2ZWEiLDUsIlx1NjZmMVx1NjZmNVx1NjZmNlx1NjZmOFx1NjZmYVx1NjZmYlx1NjZmZFx1NjcwMVx1NjcwMlx1NjcwMyJdLFsiOTY0MCIsIlx1NjcwNFx1NjcwNVx1NjcwNlx1NjcwN1x1NjcwY1x1NjcwZVx1NjcwZlx1NjcxMVx1NjcxMlx1NjcxM1x1''@;'; put 'put ''NjcxNlx1NjcxOFx1NjcxOVx1NjcxYVx1NjcxY1x1NjcxZVx1NjcyMCIsNSwiXHU2NzI3XHU2NzI5XHU2NzJlXHU2NzMwXHU2NzMyXHU2NzMzXHU2NzM2XHU2NzM3XHU2NzM4XHU2NzM5XHU2NzNiXHU2NzNjXHU2NzNlXHU2NzNmXHU2NzQxXHU2NzQ0XHU2NzQ1XHU2NzQ3XHU2NzRhXHU2NzRi''@;'; put 'put ''XHU2NzRkXHU2NzUyXHU2NzU0XHU2NzU1XHU2NzU3Iiw0LCJcdTY3NWRcdTY3NjJcdTY3NjNcdTY3NjRcdTY3NjZcdTY3NjdcdTY3NmJcdTY3NmNcdTY3NmVcdTY3NzFcdTY3NzRcdTY3NzYiXSxbIjk2ODAiLCJcdTY3NzhcdTY3NzlcdTY3N2FcdTY3N2JcdTY3N2RcdTY3ODBcdTY3ODJcdTY3''@;'; put 'put ''ODNcdTY3ODVcdTY3ODZcdTY3ODhcdTY3OGFcdTY3OGNcdTY3OGRcdTY3OGVcdTY3OGZcdTY3OTFcdTY3OTJcdTY3OTNcdTY3OTRcdTY3OTZcdTY3OTlcdTY3OWJcdTY3OWZcdTY3YTBcdTY3YTFcdTY3YTRcdTY3YTZcdTY3YTlcdTY3YWNcdTY3YWVcdTY3YjFcdTY3YjJcdTY3YjRcdTY3Yjki''@;'; put 'put ''LDcsIlx1NjdjMlx1NjdjNSIsOSwiXHU2N2Q1XHU2N2Q2XHU2N2Q3XHU2N2RiXHU2N2RmXHU2N2UxXHU2N2UzXHU2N2U0XHU2N2U2XHU2N2U3XHU2N2U4XHU2N2VhXHU2N2ViXHU2N2VkXHU2N2VlXHU2N2YyXHU2N2Y1Iiw3LCJcdTY3ZmVcdTY4MDFcdTY4MDJcdTY4MDNcdTY4MDRcdTY4MDZc''@;'; put 'put ''dTY4MGRcdTY4MTBcdTY4MTJcdTY4MTRcdTY4MTVcdTY4MTgiLDQsIlx1NjgxZVx1NjgxZlx1NjgyMFx1NjgyMiIsNiwiXHU2ODJiIiw2LCJcdTY4MzRcdTY4MzVcdTY4MzZcdTY4M2FcdTY4M2JcdTY4M2ZcdTY4NDdcdTY4NGJcdTY4NGRcdTY4NGZcdTY4NTJcdTY4NTYiLDVdLFsiOTc0MCIs''@;'; put 'put ''Ilx1Njg1Y1x1Njg1ZFx1Njg1ZVx1Njg1Zlx1Njg2YVx1Njg2YyIsNywiXHU2ODc1XHU2ODc4Iiw4LCJcdTY4ODJcdTY4ODRcdTY4ODciLDcsIlx1Njg5MFx1Njg5MVx1Njg5Mlx1Njg5NFx1Njg5NVx1Njg5Nlx1Njg5OCIsOSwiXHU2OGEzXHU2OGE0XHU2OGE1XHU2OGE5XHU2OGFhXHU2OGFi''@;'; put 'put ''XHU2OGFjXHU2OGFlXHU2OGIxXHU2OGIyXHU2OGI0XHU2OGI2XHU2OGI3XHU2OGI4Il0sWyI5NzgwIiwiXHU2OGI5Iiw2LCJcdTY4YzFcdTY4YzMiLDUsIlx1NjhjYVx1NjhjY1x1NjhjZVx1NjhjZlx1NjhkMFx1NjhkMVx1NjhkM1x1NjhkNFx1NjhkNlx1NjhkN1x1NjhkOVx1NjhkYiIsNCwi''@;'; put 'put ''XHU2OGUxXHU2OGUyXHU2OGU0Iiw5LCJcdTY4ZWZcdTY4ZjJcdTY4ZjNcdTY4ZjRcdTY4ZjZcdTY4ZjdcdTY4ZjhcdTY4ZmJcdTY4ZmRcdTY4ZmVcdTY4ZmZcdTY5MDBcdTY5MDJcdTY5MDNcdTY5MDRcdTY5MDYiLDQsIlx1NjkwY1x1NjkwZlx1NjkxMVx1NjkxMyIsMTEsIlx1NjkyMVx1Njky''@;'; put 'put ''Mlx1NjkyM1x1NjkyNSIsNywiXHU2OTJlXHU2OTJmXHU2OTMxXHU2OTMyXHU2OTMzXHU2OTM1XHU2OTM2XHU2OTM3XHU2OTM4XHU2OTNhXHU2OTNiXHU2OTNjXHU2OTNlXHU2OTQwXHU2OTQxXHU2OTQzIiwxNiwiXHU2OTU1XHU2OTU2XHU2OTU4XHU2OTU5XHU2OTViXHU2OTVjXHU2OTVmIl0s''@;'; put 'put ''WyI5ODQwIiwiXHU2OTYxXHU2OTYyXHU2OTY0XHU2OTY1XHU2OTY3XHU2OTY4XHU2OTY5XHU2OTZhXHU2OTZjXHU2OTZkXHU2OTZmXHU2OTcwXHU2OTcyIiw0LCJcdTY5N2FcdTY5N2JcdTY5N2RcdTY5N2VcdTY5N2ZcdTY5ODFcdTY5ODNcdTY5ODVcdTY5OGFcdTY5OGJcdTY5OGNcdTY5OGUi''@;'; put 'put ''LDUsIlx1Njk5Nlx1Njk5N1x1Njk5OVx1Njk5YVx1Njk5ZCIsOSwiXHU2OWE5XHU2OWFhXHU2OWFjXHU2OWFlXHU2OWFmXHU2OWIwXHU2OWIyXHU2OWIzXHU2OWI1XHU2OWI2XHU2OWI4XHU2OWI5XHU2OWJhXHU2OWJjXHU2OWJkIl0sWyI5ODgwIiwiXHU2OWJlXHU2OWJmXHU2OWMwXHU2OWMy''@;'; put 'put ''Iiw3LCJcdTY5Y2JcdTY5Y2RcdTY5Y2ZcdTY5ZDFcdTY5ZDJcdTY5ZDNcdTY5ZDUiLDUsIlx1NjlkY1x1NjlkZFx1NjlkZVx1NjllMSIsMTEsIlx1NjllZVx1NjllZlx1NjlmMFx1NjlmMVx1NjlmMyIsOSwiXHU2OWZlXHU2YTAwIiw5LCJcdTZhMGIiLDExLCJcdTZhMTkiLDUsIlx1NmEyMFx1''@;'; put 'put ''NmEyMiIsNSwiXHU2YTI5XHU2YTJiXHU2YTJjXHU2YTJkXHU2YTJlXHU2YTMwXHU2YTMyXHU2YTMzXHU2YTM0XHU2YTM2Iiw2LCJcdTZhM2YiLDQsIlx1NmE0NVx1NmE0Nlx1NmE0OCIsNywiXHU2YTUxIiw2LCJcdTZhNWEiXSxbIjk5NDAiLCJcdTZhNWMiLDQsIlx1NmE2Mlx1NmE2M1x1NmE2''@;'; put 'put ''NFx1NmE2NiIsMTAsIlx1NmE3MiIsNiwiXHU2YTdhXHU2YTdiXHU2YTdkXHU2YTdlXHU2YTdmXHU2YTgxXHU2YTgyXHU2YTgzXHU2YTg1Iiw4LCJcdTZhOGZcdTZhOTIiLDQsIlx1NmE5OCIsNywiXHU2YWExIiw1XSxbIjk5ODAiLCJcdTZhYTdcdTZhYThcdTZhYWFcdTZhYWQiLDExNCwiXHU2''@;'; put 'put ''YjI1XHU2YjI2XHU2YjI4Iiw2XSxbIjlhNDAiLCJcdTZiMmZcdTZiMzBcdTZiMzFcdTZiMzNcdTZiMzRcdTZiMzVcdTZiMzZcdTZiMzhcdTZiM2JcdTZiM2NcdTZiM2RcdTZiM2ZcdTZiNDBcdTZiNDFcdTZiNDJcdTZiNDRcdTZiNDVcdTZiNDhcdTZiNGFcdTZiNGJcdTZiNGQiLDExLCJcdTZi''@;'; put 'put ''NWEiLDcsIlx1NmI2OFx1NmI2OVx1NmI2YiIsMTMsIlx1NmI3YVx1NmI3ZFx1NmI3ZVx1NmI3Zlx1NmI4MFx1NmI4NVx1NmI4OCJdLFsiOWE4MCIsIlx1NmI4Y1x1NmI4ZVx1NmI4Zlx1NmI5MFx1NmI5MVx1NmI5NFx1NmI5NVx1NmI5N1x1NmI5OFx1NmI5OVx1NmI5YyIsNCwiXHU2YmEyIiw3''@;'; put 'put ''LCJcdTZiYWIiLDcsIlx1NmJiNlx1NmJiOCIsNiwiXHU2YmMwXHU2YmMzXHU2YmM0XHU2YmM2Iiw0LCJcdTZiY2NcdTZiY2VcdTZiZDBcdTZiZDFcdTZiZDhcdTZiZGFcdTZiZGMiLDQsIlx1NmJlMiIsNywiXHU2YmVjXHU2YmVkXHU2YmVlXHU2YmYwXHU2YmYxXHU2YmYyXHU2YmY0XHU2YmY2''@;'; put 'put ''XHU2YmY3XHU2YmY4XHU2YmZhXHU2YmZiXHU2YmZjXHU2YmZlIiw2LCJcdTZjMDgiLDQsIlx1NmMwZVx1NmMxMlx1NmMxN1x1NmMxY1x1NmMxZFx1NmMxZVx1NmMyMFx1NmMyM1x1NmMyNVx1NmMyYlx1NmMyY1x1NmMyZFx1NmMzMVx1NmMzM1x1NmMzNlx1NmMzN1x1NmMzOVx1NmMzYVx1NmMz''@;'; put 'put ''Ylx1NmMzY1x1NmMzZVx1NmMzZlx1NmM0M1x1NmM0NFx1NmM0NVx1NmM0OFx1NmM0YiIsNCwiXHU2YzUxXHU2YzUyXHU2YzUzXHU2YzU2XHU2YzU4Il0sWyI5YjQwIiwiXHU2YzU5XHU2YzVhXHU2YzYyXHU2YzYzXHU2YzY1XHU2YzY2XHU2YzY3XHU2YzZiIiw0LCJcdTZjNzFcdTZjNzNcdTZj''@;'; put 'put ''NzVcdTZjNzdcdTZjNzhcdTZjN2FcdTZjN2JcdTZjN2NcdTZjN2ZcdTZjODBcdTZjODRcdTZjODdcdTZjOGFcdTZjOGJcdTZjOGRcdTZjOGVcdTZjOTFcdTZjOTJcdTZjOTVcdTZjOTZcdTZjOTdcdTZjOThcdTZjOWFcdTZjOWNcdTZjOWRcdTZjOWVcdTZjYTBcdTZjYTJcdTZjYThcdTZjYWNc''@;'; put 'put ''dTZjYWZcdTZjYjBcdTZjYjRcdTZjYjVcdTZjYjZcdTZjYjdcdTZjYmFcdTZjYzBcdTZjYzFcdTZjYzJcdTZjYzNcdTZjYzZcdTZjYzdcdTZjYzhcdTZjY2JcdTZjY2RcdTZjY2VcdTZjY2ZcdTZjZDFcdTZjZDJcdTZjZDgiXSxbIjliODAiLCJcdTZjZDlcdTZjZGFcdTZjZGNcdTZjZGRcdTZj''@;'; put 'put ''ZGZcdTZjZTRcdTZjZTZcdTZjZTdcdTZjZTlcdTZjZWNcdTZjZWRcdTZjZjJcdTZjZjRcdTZjZjlcdTZjZmZcdTZkMDBcdTZkMDJcdTZkMDNcdTZkMDVcdTZkMDZcdTZkMDhcdTZkMDlcdTZkMGFcdTZkMGRcdTZkMGZcdTZkMTBcdTZkMTFcdTZkMTNcdTZkMTRcdTZkMTVcdTZkMTZcdTZkMThc''@;'; put 'put ''dTZkMWNcdTZkMWRcdTZkMWYiLDUsIlx1NmQyNlx1NmQyOFx1NmQyOVx1NmQyY1x1NmQyZFx1NmQyZlx1NmQzMFx1NmQzNFx1NmQzNlx1NmQzN1x1NmQzOFx1NmQzYVx1NmQzZlx1NmQ0MFx1NmQ0Mlx1NmQ0NFx1NmQ0OVx1NmQ0Y1x1NmQ1MFx1NmQ1NVx1NmQ1Nlx1NmQ1N1x1NmQ1OFx1NmQ1''@;'; put 'put ''Ylx1NmQ1ZFx1NmQ1Zlx1NmQ2MVx1NmQ2Mlx1NmQ2NFx1NmQ2NVx1NmQ2N1x1NmQ2OFx1NmQ2Ylx1NmQ2Y1x1NmQ2ZFx1NmQ3MFx1NmQ3MVx1NmQ3Mlx1NmQ3M1x1NmQ3NVx1NmQ3Nlx1NmQ3OVx1NmQ3YVx1NmQ3Ylx1NmQ3ZCIsNCwiXHU2ZDgzXHU2ZDg0XHU2ZDg2XHU2ZDg3XHU2ZDhhXHU2''@;'; put 'put ''ZDhiXHU2ZDhkXHU2ZDhmXHU2ZDkwXHU2ZDkyXHU2ZDk2Iiw0LCJcdTZkOWNcdTZkYTJcdTZkYTVcdTZkYWNcdTZkYWRcdTZkYjBcdTZkYjFcdTZkYjNcdTZkYjRcdTZkYjZcdTZkYjdcdTZkYjkiLDUsIlx1NmRjMVx1NmRjMlx1NmRjM1x1NmRjOFx1NmRjOVx1NmRjYSJdLFsiOWM0MCIsIlx1''@;'; put 'put ''NmRjZFx1NmRjZVx1NmRjZlx1NmRkMFx1NmRkMlx1NmRkM1x1NmRkNFx1NmRkNVx1NmRkN1x1NmRkYVx1NmRkYlx1NmRkY1x1NmRkZlx1NmRlMlx1NmRlM1x1NmRlNVx1NmRlN1x1NmRlOFx1NmRlOVx1NmRlYVx1NmRlZFx1NmRlZlx1NmRmMFx1NmRmMlx1NmRmNFx1NmRmNVx1NmRmNlx1NmRm''@;'; put 'put ''OFx1NmRmYVx1NmRmZCIsNywiXHU2ZTA2XHU2ZTA3XHU2ZTA4XHU2ZTA5XHU2ZTBiXHU2ZTBmXHU2ZTEyXHU2ZTEzXHU2ZTE1XHU2ZTE4XHU2ZTE5XHU2ZTFiXHU2ZTFjXHU2ZTFlXHU2ZTFmXHU2ZTIyXHU2ZTI2XHU2ZTI3XHU2ZTI4XHU2ZTJhXHU2ZTJjXHU2ZTJlXHU2ZTMwXHU2ZTMxXHU2''@;'; put 'put ''ZTMzXHU2ZTM1Il0sWyI5YzgwIiwiXHU2ZTM2XHU2ZTM3XHU2ZTM5XHU2ZTNiIiw3LCJcdTZlNDUiLDcsIlx1NmU0Zlx1NmU1MFx1NmU1MVx1NmU1Mlx1NmU1NVx1NmU1N1x1NmU1OVx1NmU1YVx1NmU1Y1x1NmU1ZFx1NmU1ZVx1NmU2MCIsMTAsIlx1NmU2Y1x1NmU2ZFx1NmU2ZiIsMTQsIlx1''@;'; put 'put ''NmU4MFx1NmU4MVx1NmU4Mlx1NmU4NFx1NmU4N1x1NmU4OFx1NmU4YSIsNCwiXHU2ZTkxIiw2LCJcdTZlOTlcdTZlOWFcdTZlOWJcdTZlOWRcdTZlOWVcdTZlYTBcdTZlYTFcdTZlYTNcdTZlYTRcdTZlYTZcdTZlYThcdTZlYTlcdTZlYWJcdTZlYWNcdTZlYWRcdTZlYWVcdTZlYjBcdTZlYjNc''@;'; put 'put ''dTZlYjVcdTZlYjhcdTZlYjlcdTZlYmNcdTZlYmVcdTZlYmZcdTZlYzBcdTZlYzNcdTZlYzRcdTZlYzVcdTZlYzZcdTZlYzhcdTZlYzlcdTZlY2FcdTZlY2NcdTZlY2RcdTZlY2VcdTZlZDBcdTZlZDJcdTZlZDZcdTZlZDhcdTZlZDlcdTZlZGJcdTZlZGNcdTZlZGRcdTZlZTNcdTZlZTdcdTZl''@;'; put 'put ''ZWEiLDVdLFsiOWQ0MCIsIlx1NmVmMFx1NmVmMVx1NmVmMlx1NmVmM1x1NmVmNVx1NmVmNlx1NmVmN1x1NmVmOFx1NmVmYSIsNywiXHU2ZjAzXHU2ZjA0XHU2ZjA1XHU2ZjA3XHU2ZjA4XHU2ZjBhIiw0LCJcdTZmMTBcdTZmMTFcdTZmMTJcdTZmMTYiLDksIlx1NmYyMVx1NmYyMlx1NmYyM1x1''@;'; put 'put ''NmYyNVx1NmYyNlx1NmYyN1x1NmYyOFx1NmYyY1x1NmYyZVx1NmYzMFx1NmYzMlx1NmYzNFx1NmYzNVx1NmYzNyIsNiwiXHU2ZjNmXHU2ZjQwXHU2ZjQxXHU2ZjQyIl0sWyI5ZDgwIiwiXHU2ZjQzXHU2ZjQ0XHU2ZjQ1XHU2ZjQ4XHU2ZjQ5XHU2ZjRhXHU2ZjRjXHU2ZjRlIiw5LCJcdTZmNTlc''@;'; put 'put ''dTZmNWFcdTZmNWJcdTZmNWRcdTZmNWZcdTZmNjBcdTZmNjFcdTZmNjNcdTZmNjRcdTZmNjVcdTZmNjciLDUsIlx1NmY2Zlx1NmY3MFx1NmY3MVx1NmY3M1x1NmY3NVx1NmY3Nlx1NmY3N1x1NmY3OVx1NmY3Ylx1NmY3ZCIsNiwiXHU2Zjg1XHU2Zjg2XHU2Zjg3XHU2ZjhhXHU2ZjhiXHU2Zjhm''@;'; put 'put ''IiwxMiwiXHU2ZjlkXHU2ZjllXHU2ZjlmXHU2ZmEwXHU2ZmEyIiw0LCJcdTZmYTgiLDEwLCJcdTZmYjRcdTZmYjVcdTZmYjdcdTZmYjhcdTZmYmEiLDUsIlx1NmZjMVx1NmZjMyIsNSwiXHU2ZmNhIiw2LCJcdTZmZDMiLDEwLCJcdTZmZGZcdTZmZTJcdTZmZTNcdTZmZTRcdTZmZTUiXSxbIjll''@;'; put 'put ''NDAiLCJcdTZmZTYiLDcsIlx1NmZmMCIsMzIsIlx1NzAxMiIsNywiXHU3MDFjIiw2LCJcdTcwMjQiLDZdLFsiOWU4MCIsIlx1NzAyYiIsOSwiXHU3MDM2XHU3MDM3XHU3MDM4XHU3MDNhIiwxNywiXHU3MDRkXHU3MDRlXHU3MDUwIiwxMywiXHU3MDVmIiwxMSwiXHU3MDZlXHU3MDcxXHU3MDcy''@;'; put 'put ''XHU3MDczXHU3MDc0XHU3MDc3XHU3MDc5XHU3MDdhXHU3MDdiXHU3MDdkXHU3MDgxXHU3MDgyXHU3MDgzXHU3MDg0XHU3MDg2XHU3MDg3XHU3MDg4XHU3MDhiXHU3MDhjXHU3MDhkXHU3MDhmXHU3MDkwXHU3MDkxXHU3MDkzXHU3MDk3XHU3MDk4XHU3MDlhXHU3MDliXHU3MDllIiwxMiwiXHU3''@;'; put 'put ''MGIwXHU3MGIyXHU3MGI0XHU3MGI1XHU3MGI2XHU3MGJhXHU3MGJlXHU3MGJmXHU3MGM0XHU3MGM1XHU3MGM2XHU3MGM3XHU3MGM5XHU3MGNiIiwxMiwiXHU3MGRhIl0sWyI5ZjQwIiwiXHU3MGRjXHU3MGRkXHU3MGRlXHU3MGUwXHU3MGUxXHU3MGUyXHU3MGUzXHU3MGU1XHU3MGVhXHU3MGVl''@;'; put 'put ''XHU3MGYwIiw2LCJcdTcwZjhcdTcwZmFcdTcwZmJcdTcwZmNcdTcwZmUiLDEwLCJcdTcxMGIiLDQsIlx1NzExMVx1NzExMlx1NzExNFx1NzExN1x1NzExYiIsMTAsIlx1NzEyNyIsNywiXHU3MTMyXHU3MTMzXHU3MTM0Il0sWyI5ZjgwIiwiXHU3MTM1XHU3MTM3IiwxMywiXHU3MTQ2XHU3MTQ3''@;'; put 'put ''XHU3MTQ4XHU3MTQ5XHU3MTRiXHU3MTRkXHU3MTRmIiwxMiwiXHU3MTVkXHU3MTVmIiw0LCJcdTcxNjVcdTcxNjkiLDQsIlx1NzE2Zlx1NzE3MFx1NzE3MVx1NzE3NFx1NzE3NVx1NzE3Nlx1NzE3N1x1NzE3OVx1NzE3Ylx1NzE3Y1x1NzE3ZSIsNSwiXHU3MTg1Iiw0LCJcdTcxOGJcdTcxOGNc''@;'; put 'put ''dTcxOGRcdTcxOGVcdTcxOTBcdTcxOTFcdTcxOTJcdTcxOTNcdTcxOTVcdTcxOTZcdTcxOTdcdTcxOWEiLDQsIlx1NzFhMSIsNiwiXHU3MWE5XHU3MWFhXHU3MWFiXHU3MWFkIiw1LCJcdTcxYjRcdTcxYjZcdTcxYjdcdTcxYjhcdTcxYmEiLDgsIlx1NzFjNCIsOSwiXHU3MWNmIiw0XSxbImEw''@;'; put 'put ''NDAiLCJcdTcxZDYiLDksIlx1NzFlMVx1NzFlMlx1NzFlM1x1NzFlNFx1NzFlNlx1NzFlOCIsNSwiXHU3MWVmIiw5LCJcdTcxZmEiLDExLCJcdTcyMDciLDE5XSxbImEwODAiLCJcdTcyMWJcdTcyMWNcdTcyMWUiLDksIlx1NzIyOVx1NzIyYlx1NzIyZFx1NzIyZVx1NzIyZlx1NzIzMlx1NzIz''@;'; put 'put ''M1x1NzIzNFx1NzIzYVx1NzIzY1x1NzIzZVx1NzI0MCIsNiwiXHU3MjQ5XHU3MjRhXHU3MjRiXHU3MjRlXHU3MjRmXHU3MjUwXHU3MjUxXHU3MjUzXHU3MjU0XHU3MjU1XHU3MjU3XHU3MjU4XHU3MjVhXHU3MjVjXHU3MjVlXHU3MjYwXHU3MjYzXHU3MjY0XHU3MjY1XHU3MjY4XHU3MjZhXHU3''@;'; put 'put ''MjZiXHU3MjZjXHU3MjZkXHU3MjcwXHU3MjcxXHU3MjczXHU3Mjc0XHU3Mjc2XHU3Mjc3XHU3Mjc4XHU3MjdiXHU3MjdjXHU3MjdkXHU3MjgyXHU3MjgzXHU3Mjg1Iiw0LCJcdTcyOGNcdTcyOGVcdTcyOTBcdTcyOTFcdTcyOTMiLDExLCJcdTcyYTAiLDExLCJcdTcyYWVcdTcyYjFcdTcyYjJc''@;'; put 'put ''dTcyYjNcdTcyYjVcdTcyYmEiLDYsIlx1NzJjNVx1NzJjNlx1NzJjN1x1NzJjOVx1NzJjYVx1NzJjYlx1NzJjY1x1NzJjZlx1NzJkMVx1NzJkM1x1NzJkNFx1NzJkNVx1NzJkNlx1NzJkOFx1NzJkYVx1NzJkYiJdLFsiYTFhMSIsIlx1MzAwMFx1MzAwMVx1MzAwMlx4YjdcdTAyYzlcdTAyYzdc''@;'; put 'put ''eGE4XHUzMDAzXHUzMDA1XHUyMDE0XHVmZjVlXHUyMDE2XHUyMDI2XHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUzMDE0XHUzMDE1XHUzMDA4Iiw3LCJcdTMwMTZcdTMwMTdcdTMwMTBcdTMwMTFceGIxXHhkN1x4ZjdcdTIyMzZcdTIyMjdcdTIyMjhcdTIyMTFcdTIyMGZcdTIyMmFcdTIyMjlc''@;'; put 'put ''dTIyMDhcdTIyMzdcdTIyMWFcdTIyYTVcdTIyMjVcdTIyMjBcdTIzMTJcdTIyOTlcdTIyMmJcdTIyMmVcdTIyNjFcdTIyNGNcdTIyNDhcdTIyM2RcdTIyMWRcdTIyNjBcdTIyNmVcdTIyNmZcdTIyNjRcdTIyNjVcdTIyMWVcdTIyMzVcdTIyMzRcdTI2NDJcdTI2NDBceGIwXHUyMDMyXHUyMDMz''@;'; put 'put ''XHUyMTAzXHVmZjA0XHhhNFx1ZmZlMFx1ZmZlMVx1MjAzMFx4YTdcdTIxMTZcdTI2MDZcdTI2MDVcdTI1Y2JcdTI1Y2ZcdTI1Y2VcdTI1YzdcdTI1YzZcdTI1YTFcdTI1YTBcdTI1YjNcdTI1YjJcdTIwM2JcdTIxOTJcdTIxOTBcdTIxOTFcdTIxOTNcdTMwMTMiXSxbImEyYTEiLCJcdTIxNzAi''@;'; put 'put ''LDldLFsiYTJiMSIsIlx1MjQ4OCIsMTksIlx1MjQ3NCIsMTksIlx1MjQ2MCIsOV0sWyJhMmU1IiwiXHUzMjIwIiw5XSxbImEyZjEiLCJcdTIxNjAiLDExXSxbImEzYTEiLCJcdWZmMDFcdWZmMDJcdWZmMDNcdWZmZTVcdWZmMDUiLDg4LCJcdWZmZTMiXSxbImE0YTEiLCJcdTMwNDEiLDgyXSxb''@;'; put 'put ''ImE1YTEiLCJcdTMwYTEiLDg1XSxbImE2YTEiLCJcdTAzOTEiLDE2LCJcdTAzYTMiLDZdLFsiYTZjMSIsIlx1MDNiMSIsMTYsIlx1MDNjMyIsNl0sWyJhNmUwIiwiXHVmZTM1XHVmZTM2XHVmZTM5XHVmZTNhXHVmZTNmXHVmZTQwXHVmZTNkXHVmZTNlXHVmZTQxXHVmZTQyXHVmZTQzXHVmZTQ0''@;'; put 'put ''Il0sWyJhNmVlIiwiXHVmZTNiXHVmZTNjXHVmZTM3XHVmZTM4XHVmZTMxIl0sWyJhNmY0IiwiXHVmZTMzXHVmZTM0Il0sWyJhN2ExIiwiXHUwNDEwIiw1LCJcdTA0MDFcdTA0MTYiLDI1XSxbImE3ZDEiLCJcdTA0MzAiLDUsIlx1MDQ1MVx1MDQzNiIsMjVdLFsiYTg0MCIsIlx1MDJjYVx1MDJj''@;'; put 'put ''Ylx1MDJkOVx1MjAxM1x1MjAxNVx1MjAyNVx1MjAzNVx1MjEwNVx1MjEwOVx1MjE5Nlx1MjE5N1x1MjE5OFx1MjE5OVx1MjIxNVx1MjIxZlx1MjIyM1x1MjI1Mlx1MjI2Nlx1MjI2N1x1MjJiZlx1MjU1MCIsMzUsIlx1MjU4MSIsNl0sWyJhODgwIiwiXHUyNTg4Iiw3LCJcdTI1OTNcdTI1OTRc''@;'; put 'put ''dTI1OTVcdTI1YmNcdTI1YmRcdTI1ZTJcdTI1ZTNcdTI1ZTRcdTI1ZTVcdTI2MDlcdTIyOTVcdTMwMTJcdTMwMWRcdTMwMWUiXSxbImE4YTEiLCJcdTAxMDFceGUxXHUwMWNlXHhlMFx1MDExM1x4ZTlcdTAxMWJceGU4XHUwMTJiXHhlZFx1MDFkMFx4ZWNcdTAxNGRceGYzXHUwMWQyXHhmMlx1''@;'; put 'put ''MDE2Ylx4ZmFcdTAxZDRceGY5XHUwMWQ2XHUwMWQ4XHUwMWRhXHUwMWRjXHhmY1x4ZWFcdTAyNTEiXSxbImE4YmQiLCJcdTAxNDRcdTAxNDgiXSxbImE4YzAiLCJcdTAyNjEiXSxbImE4YzUiLCJcdTMxMDUiLDM2XSxbImE5NDAiLCJcdTMwMjEiLDgsIlx1MzJhM1x1MzM4ZVx1MzM4Zlx1MzM5''@;'; put 'put ''Y1x1MzM5ZFx1MzM5ZVx1MzNhMVx1MzNjNFx1MzNjZVx1MzNkMVx1MzNkMlx1MzNkNVx1ZmUzMFx1ZmZlMlx1ZmZlNCJdLFsiYTk1OSIsIlx1MjEyMVx1MzIzMSJdLFsiYTk1YyIsIlx1MjAxMCJdLFsiYTk2MCIsIlx1MzBmY1x1MzA5Ylx1MzA5Y1x1MzBmZFx1MzBmZVx1MzAwNlx1MzA5ZFx1''@;'; put 'put ''MzA5ZVx1ZmU0OSIsOSwiXHVmZTU0XHVmZTU1XHVmZTU2XHVmZTU3XHVmZTU5Iiw4XSxbImE5ODAiLCJcdWZlNjIiLDQsIlx1ZmU2OFx1ZmU2OVx1ZmU2YVx1ZmU2YiJdLFsiYTk5NiIsIlx1MzAwNyJdLFsiYTlhNCIsIlx1MjUwMCIsNzVdLFsiYWE0MCIsIlx1NzJkY1x1NzJkZFx1NzJkZlx1''@;'; put 'put ''NzJlMiIsNSwiXHU3MmVhXHU3MmViXHU3MmY1XHU3MmY2XHU3MmY5XHU3MmZkXHU3MmZlXHU3MmZmXHU3MzAwXHU3MzAyXHU3MzA0Iiw1LCJcdTczMGJcdTczMGNcdTczMGRcdTczMGZcdTczMTBcdTczMTFcdTczMTJcdTczMTRcdTczMThcdTczMTlcdTczMWFcdTczMWZcdTczMjBcdTczMjNc''@;'; put 'put ''dTczMjRcdTczMjZcdTczMjdcdTczMjhcdTczMmRcdTczMmZcdTczMzBcdTczMzJcdTczMzNcdTczMzVcdTczMzZcdTczM2FcdTczM2JcdTczM2NcdTczM2RcdTczNDAiLDhdLFsiYWE4MCIsIlx1NzM0OVx1NzM0YVx1NzM0Ylx1NzM0Y1x1NzM0ZVx1NzM0Zlx1NzM1MVx1NzM1M1x1NzM1NFx1''@;'; put 'put ''NzM1NVx1NzM1Nlx1NzM1OCIsNywiXHU3MzYxIiwxMCwiXHU3MzZlXHU3MzcwXHU3MzcxIl0sWyJhYjQwIiwiXHU3MzcyIiwxMSwiXHU3MzdmIiw0LCJcdTczODVcdTczODZcdTczODhcdTczOGFcdTczOGNcdTczOGRcdTczOGZcdTczOTBcdTczOTJcdTczOTNcdTczOTRcdTczOTVcdTczOTdc''@;'; put 'put ''dTczOThcdTczOTlcdTczOWFcdTczOWNcdTczOWRcdTczOWVcdTczYTBcdTczYTFcdTczYTMiLDUsIlx1NzNhYVx1NzNhY1x1NzNhZFx1NzNiMVx1NzNiNFx1NzNiNVx1NzNiNlx1NzNiOFx1NzNiOVx1NzNiY1x1NzNiZFx1NzNiZVx1NzNiZlx1NzNjMVx1NzNjMyIsNF0sWyJhYjgwIiwiXHU3''@;'; put 'put ''M2NiXHU3M2NjXHU3M2NlXHU3M2QyIiw2LCJcdTczZGFcdTczZGJcdTczZGNcdTczZGRcdTczZGZcdTczZTFcdTczZTJcdTczZTNcdTczZTRcdTczZTZcdTczZThcdTczZWFcdTczZWJcdTczZWNcdTczZWVcdTczZWZcdTczZjBcdTczZjFcdTczZjMiLDRdLFsiYWM0MCIsIlx1NzNmOCIsMTAs''@;'; put 'put ''Ilx1NzQwNFx1NzQwN1x1NzQwOFx1NzQwYlx1NzQwY1x1NzQwZFx1NzQwZVx1NzQxMSIsOCwiXHU3NDFjIiw1LCJcdTc0MjNcdTc0MjRcdTc0MjdcdTc0MjlcdTc0MmJcdTc0MmRcdTc0MmZcdTc0MzFcdTc0MzJcdTc0MzciLDQsIlx1NzQzZFx1NzQzZVx1NzQzZlx1NzQ0MFx1NzQ0MiIsMTFd''@;'; put 'put ''LFsiYWM4MCIsIlx1NzQ0ZSIsNiwiXHU3NDU2XHU3NDU4XHU3NDVkXHU3NDYwIiwxMiwiXHU3NDZlXHU3NDZmXHU3NDcxIiw0LCJcdTc0NzhcdTc0NzlcdTc0N2EiXSxbImFkNDAiLCJcdTc0N2JcdTc0N2NcdTc0N2RcdTc0N2ZcdTc0ODJcdTc0ODRcdTc0ODVcdTc0ODZcdTc0ODhcdTc0ODlc''@;'; put 'put ''dTc0OGFcdTc0OGNcdTc0OGRcdTc0OGZcdTc0OTEiLDEwLCJcdTc0OWRcdTc0OWYiLDcsIlx1NzRhYSIsMTUsIlx1NzRiYiIsMTJdLFsiYWQ4MCIsIlx1NzRjOCIsOSwiXHU3NGQzIiw4LCJcdTc0ZGRcdTc0ZGZcdTc0ZTFcdTc0ZTVcdTc0ZTciLDYsIlx1NzRmMFx1NzRmMVx1NzRmMiJdLFsi''@;'; put 'put ''YWU0MCIsIlx1NzRmM1x1NzRmNVx1NzRmOCIsNiwiXHU3NTAwXHU3NTAxXHU3NTAyXHU3NTAzXHU3NTA1Iiw3LCJcdTc1MGVcdTc1MTBcdTc1MTJcdTc1MTRcdTc1MTVcdTc1MTZcdTc1MTdcdTc1MWJcdTc1MWRcdTc1MWVcdTc1MjAiLDQsIlx1NzUyNlx1NzUyN1x1NzUyYVx1NzUyZVx1NzUz''@;'; put 'put ''NFx1NzUzNlx1NzUzOVx1NzUzY1x1NzUzZFx1NzUzZlx1NzU0MVx1NzU0Mlx1NzU0M1x1NzU0NFx1NzU0Nlx1NzU0N1x1NzU0OVx1NzU0YVx1NzU0ZFx1NzU1MFx1NzU1MVx1NzU1Mlx1NzU1M1x1NzU1NVx1NzU1Nlx1NzU1N1x1NzU1OCJdLFsiYWU4MCIsIlx1NzU1ZCIsNywiXHU3NTY3XHU3''@;'; put 'put ''NTY4XHU3NTY5XHU3NTZiIiw2LCJcdTc1NzNcdTc1NzVcdTc1NzZcdTc1NzdcdTc1N2EiLDQsIlx1NzU4MFx1NzU4MVx1NzU4Mlx1NzU4NFx1NzU4NVx1NzU4NyJdLFsiYWY0MCIsIlx1NzU4OFx1NzU4OVx1NzU4YVx1NzU4Y1x1NzU4ZFx1NzU4ZVx1NzU5MFx1NzU5M1x1NzU5NVx1NzU5OFx1''@;'; put 'put ''NzU5Ylx1NzU5Y1x1NzU5ZVx1NzVhMlx1NzVhNiIsNCwiXHU3NWFkXHU3NWI2XHU3NWI3XHU3NWJhXHU3NWJiXHU3NWJmXHU3NWMwXHU3NWMxXHU3NWM2XHU3NWNiXHU3NWNjXHU3NWNlXHU3NWNmXHU3NWQwXHU3NWQxXHU3NWQzXHU3NWQ3XHU3NWQ5XHU3NWRhXHU3NWRjXHU3NWRkXHU3NWRm''@;'; put 'put ''XHU3NWUwXHU3NWUxXHU3NWU1XHU3NWU5XHU3NWVjXHU3NWVkXHU3NWVlXHU3NWVmXHU3NWYyXHU3NWYzXHU3NWY1XHU3NWY2XHU3NWY3XHU3NWY4XHU3NWZhXHU3NWZiXHU3NWZkXHU3NWZlXHU3NjAyXHU3NjA0XHU3NjA2XHU3NjA3Il0sWyJhZjgwIiwiXHU3NjA4XHU3NjA5XHU3NjBiXHU3''@;'; put 'put ''NjBkXHU3NjBlXHU3NjBmXHU3NjExXHU3NjEyXHU3NjEzXHU3NjE0XHU3NjE2XHU3NjFhXHU3NjFjXHU3NjFkXHU3NjFlXHU3NjIxXHU3NjIzXHU3NjI3XHU3NjI4XHU3NjJjXHU3NjJlXHU3NjJmXHU3NjMxXHU3NjMyXHU3NjM2XHU3NjM3XHU3NjM5XHU3NjNhXHU3NjNiXHU3NjNkXHU3NjQx''@;'; put 'put ''XHU3NjQyXHU3NjQ0Il0sWyJiMDQwIiwiXHU3NjQ1Iiw2LCJcdTc2NGUiLDUsIlx1NzY1NVx1NzY1NyIsNCwiXHU3NjVkXHU3NjVmXHU3NjYwXHU3NjYxXHU3NjYyXHU3NjY0Iiw2LCJcdTc2NmNcdTc2NmRcdTc2NmVcdTc2NzAiLDcsIlx1NzY3OVx1NzY3YVx1NzY3Y1x1NzY3Zlx1NzY4MFx1''@;'; put 'put ''NzY4MVx1NzY4M1x1NzY4NVx1NzY4OVx1NzY4YVx1NzY4Y1x1NzY4ZFx1NzY4Zlx1NzY5MFx1NzY5Mlx1NzY5NFx1NzY5NVx1NzY5N1x1NzY5OFx1NzY5YVx1NzY5YiJdLFsiYjA4MCIsIlx1NzY5YyIsNywiXHU3NmE1Iiw4LCJcdTc2YWZcdTc2YjBcdTc2YjNcdTc2YjUiLDksIlx1NzZjMFx1''@;'; put 'put ''NzZjMVx1NzZjM1x1NTU0YVx1OTYzZlx1NTdjM1x1NjMyOFx1NTRjZVx1NTUwOVx1NTRjMFx1NzY5MVx1NzY0Y1x1ODUzY1x1NzdlZVx1ODI3ZVx1Nzg4ZFx1NzIzMVx1OTY5OFx1OTc4ZFx1NmMyOFx1NWI4OVx1NGZmYVx1NjMwOVx1NjY5N1x1NWNiOFx1ODBmYVx1Njg0OFx1ODBhZVx1NjYw''@;'; put 'put ''Mlx1NzZjZVx1NTFmOVx1NjU1Nlx1NzFhY1x1N2ZmMVx1ODg4NFx1NTBiMlx1NTk2NVx1NjFjYVx1NmZiM1x1ODJhZFx1NjM0Y1x1NjI1Mlx1NTNlZFx1NTQyN1x1N2IwNlx1NTE2Ylx1NzVhNFx1NWRmNFx1NjJkNFx1OGRjYlx1OTc3Nlx1NjI4YVx1ODAxOVx1NTc1ZFx1OTczOFx1N2Y2Mlx1''@;'; put 'put ''NzIzOFx1NzY3ZFx1NjdjZlx1NzY3ZVx1NjQ0Nlx1NGY3MFx1OGQyNVx1NjJkY1x1N2ExN1x1NjU5MVx1NzNlZFx1NjQyY1x1NjI3M1x1ODIyY1x1OTg4MVx1Njc3Zlx1NzI0OFx1NjI2ZVx1NjJjY1x1NGYzNFx1NzRlM1x1NTM0YVx1NTI5ZVx1N2VjYVx1OTBhNlx1NWUyZVx1Njg4Nlx1Njk5''@;'; put 'put ''Y1x1ODE4MFx1N2VkMVx1NjhkMlx1NzhjNVx1ODY4Y1x1OTU1MVx1NTA4ZFx1OGMyNFx1ODJkZVx1ODBkZVx1NTMwNVx1ODkxMlx1NTI2NSJdLFsiYjE0MCIsIlx1NzZjNFx1NzZjN1x1NzZjOVx1NzZjYlx1NzZjY1x1NzZkM1x1NzZkNVx1NzZkOVx1NzZkYVx1NzZkY1x1NzZkZFx1NzZkZVx1''@;'; put 'put ''NzZlMCIsNCwiXHU3NmU2Iiw3LCJcdTc2ZjBcdTc2ZjNcdTc2ZjVcdTc2ZjZcdTc2ZjdcdTc2ZmFcdTc2ZmJcdTc2ZmRcdTc2ZmZcdTc3MDBcdTc3MDJcdTc3MDNcdTc3MDVcdTc3MDZcdTc3MGFcdTc3MGNcdTc3MGUiLDEwLCJcdTc3MWJcdTc3MWNcdTc3MWRcdTc3MWVcdTc3MjFcdTc3MjNc''@;'; put 'put ''dTc3MjRcdTc3MjVcdTc3MjdcdTc3MmFcdTc3MmIiXSxbImIxODAiLCJcdTc3MmNcdTc3MmVcdTc3MzAiLDQsIlx1NzczOVx1NzczYlx1NzczZFx1NzczZVx1NzczZlx1Nzc0Mlx1Nzc0NFx1Nzc0NVx1Nzc0Nlx1Nzc0OCIsNywiXHU3NzUyIiw3LCJcdTc3NWNcdTg1ODRcdTk2ZjlcdTRmZGRc''@;'; put 'put ''dTU4MjFcdTk5NzFcdTViOWRcdTYyYjFcdTYyYTVcdTY2YjRcdThjNzlcdTljOGRcdTcyMDZcdTY3NmZcdTc4OTFcdTYwYjJcdTUzNTFcdTUzMTdcdThmODhcdTgwY2NcdThkMWRcdTk0YTFcdTUwMGRcdTcyYzhcdTU5MDdcdTYwZWJcdTcxMTlcdTg4YWJcdTU5NTRcdTgyZWZcdTY3MmNcdTdi''@;'; put 'put ''MjhcdTVkMjlcdTdlZjdcdTc1MmRcdTZjZjVcdThlNjZcdThmZjhcdTkwM2NcdTlmM2JcdTZiZDRcdTkxMTlcdTdiMTRcdTVmN2NcdTc4YTdcdTg0ZDZcdTg1M2RcdTZiZDVcdTZiZDlcdTZiZDZcdTVlMDFcdTVlODdcdTc1ZjlcdTk1ZWRcdTY1NWRcdTVmMGFcdTVmYzVcdThmOWZcdTU4YzFc''@;'; put 'put ''dTgxYzJcdTkwN2ZcdTk2NWJcdTk3YWRcdThmYjlcdTdmMTZcdThkMmNcdTYyNDFcdTRmYmZcdTUzZDhcdTUzNWVcdThmYThcdThmYTlcdThmYWJcdTkwNGRcdTY4MDdcdTVmNmFcdTgxOThcdTg4NjhcdTljZDZcdTYxOGJcdTUyMmJcdTc2MmFcdTVmNmNcdTY1OGNcdTZmZDJcdTZlZThcdTVi''@;'; put 'put ''YmVcdTY0NDhcdTUxNzVcdTUxYjBcdTY3YzRcdTRlMTlcdTc5YzlcdTk5N2NcdTcwYjMiXSxbImIyNDAiLCJcdTc3NWRcdTc3NWVcdTc3NWZcdTc3NjBcdTc3NjRcdTc3NjdcdTc3NjlcdTc3NmFcdTc3NmQiLDExLCJcdTc3N2FcdTc3N2JcdTc3N2NcdTc3ODFcdTc3ODJcdTc3ODNcdTc3ODYi''@;'; put 'put ''LDUsIlx1Nzc4Zlx1Nzc5MFx1Nzc5MyIsMTEsIlx1NzdhMVx1NzdhM1x1NzdhNFx1NzdhNlx1NzdhOFx1NzdhYlx1NzdhZFx1NzdhZVx1NzdhZlx1NzdiMVx1NzdiMlx1NzdiNFx1NzdiNiIsNF0sWyJiMjgwIiwiXHU3N2JjXHU3N2JlXHU3N2MwIiwxMiwiXHU3N2NlIiw4LCJcdTc3ZDhcdTc3''@;'; put 'put ''ZDlcdTc3ZGFcdTc3ZGQiLDQsIlx1NzdlNFx1NzVjNVx1NWU3Nlx1NzNiYlx1ODNlMFx1NjRhZFx1NjJlOFx1OTRiNVx1NmNlMlx1NTM1YVx1NTJjM1x1NjQwZlx1OTRjMlx1N2I5NFx1NGYyZlx1NWUxYlx1ODIzNlx1ODExNlx1ODE4YVx1NmUyNFx1NmNjYVx1OWE3M1x1NjM1NVx1NTM1Y1x1''@;'; put 'put ''NTRmYVx1ODg2NVx1NTdlMFx1NGUwZFx1NWUwM1x1NmI2NVx1N2MzZlx1OTBlOFx1NjAxNlx1NjRlNlx1NzMxY1x1ODhjMVx1Njc1MFx1NjI0ZFx1OGQyMlx1Nzc2Y1x1OGUyOVx1OTFjN1x1NWY2OVx1ODNkY1x1ODUyMVx1OTkxMFx1NTNjMlx1ODY5NVx1NmI4Ylx1NjBlZFx1NjBlOFx1NzA3''@;'; put 'put ''Zlx1ODJjZFx1ODIzMVx1NGVkM1x1NmNhN1x1ODVjZlx1NjRjZFx1N2NkOVx1NjlmZFx1NjZmOVx1ODM0OVx1NTM5NVx1N2I1Nlx1NGZhN1x1NTE4Y1x1NmQ0Ylx1NWM0Mlx1OGU2ZFx1NjNkMlx1NTNjOVx1ODMyY1x1ODMzNlx1NjdlNVx1NzhiNFx1NjQzZFx1NWJkZlx1NWM5NFx1NWRlZVx1''@;'; put 'put ''OGJlN1x1NjJjNlx1NjdmNFx1OGM3YVx1NjQwMFx1NjNiYVx1ODc0OVx1OTk4Ylx1OGMxN1x1N2YyMFx1OTRmMlx1NGVhN1x1OTYxMFx1OThhNFx1NjYwY1x1NzMxNiJdLFsiYjM0MCIsIlx1NzdlNlx1NzdlOFx1NzdlYVx1NzdlZlx1NzdmMFx1NzdmMVx1NzdmMlx1NzdmNFx1NzdmNVx1Nzdm''@;'; put 'put ''N1x1NzdmOVx1NzdmYVx1NzdmYlx1NzdmY1x1NzgwMyIsNSwiXHU3ODBhXHU3ODBiXHU3ODBlXHU3ODBmXHU3ODEwXHU3ODEzXHU3ODE1XHU3ODE5XHU3ODFiXHU3ODFlXHU3ODIwXHU3ODIxXHU3ODIyXHU3ODI0XHU3ODI4XHU3ODJhXHU3ODJiXHU3ODJlXHU3ODJmXHU3ODMxXHU3ODMyXHU3''@;'; put 'put ''ODMzXHU3ODM1XHU3ODM2XHU3ODNkXHU3ODNmXHU3ODQxXHU3ODQyXHU3ODQzXHU3ODQ0XHU3ODQ2XHU3ODQ4XHU3ODQ5XHU3ODRhXHU3ODRiXHU3ODRkXHU3ODRmXHU3ODUxXHU3ODUzXHU3ODU0XHU3ODU4XHU3ODU5XHU3ODVhIl0sWyJiMzgwIiwiXHU3ODViXHU3ODVjXHU3ODVlIiwxMSwi''@;'; put 'put ''XHU3ODZmIiw3LCJcdTc4NzhcdTc4NzlcdTc4N2FcdTc4N2JcdTc4N2QiLDYsIlx1NTczYVx1NWMxZFx1NWUzOFx1OTU3Zlx1NTA3Zlx1ODBhMFx1NTM4Mlx1NjU1ZVx1NzU0NVx1NTUzMVx1NTAyMVx1OGQ4NVx1NjI4NFx1OTQ5ZVx1NjcxZFx1NTYzMlx1NmY2ZVx1NWRlMlx1NTQzNVx1NzA5''@;'; put 'put ''Mlx1OGY2Nlx1NjI2Zlx1NjRhNFx1NjNhM1x1NWY3Ylx1NmY4OFx1OTBmNFx1ODFlM1x1OGZiMFx1NWMxOFx1NjY2OFx1NWZmMVx1NmM4OVx1OTY0OFx1OGQ4MVx1ODg2Y1x1NjQ5MVx1NzlmMFx1NTdjZVx1NmE1OVx1NjIxMFx1NTQ0OFx1NGU1OFx1N2EwYlx1NjBlOVx1NmY4NFx1OGJkYVx1''@;'; put 'put ''NjI3Zlx1OTAxZVx1OWE4Ylx1NzllNFx1NTQwM1x1NzVmNFx1NjMwMVx1NTMxOVx1NmM2MFx1OGZkZlx1NWYxYlx1OWE3MFx1ODAzYlx1OWY3Zlx1NGY4OFx1NWMzYVx1OGQ2NFx1N2ZjNVx1NjVhNVx1NzBiZFx1NTE0NVx1NTFiMlx1ODY2Ylx1NWQwN1x1NWJhMFx1NjJiZFx1OTE2Y1x1NzU3''@;'; put 'put ''NFx1OGUwY1x1N2EyMFx1NjEwMVx1N2I3OVx1NGVjN1x1N2VmOFx1Nzc4NVx1NGUxMVx1ODFlZFx1NTIxZFx1NTFmYVx1NmE3MVx1NTNhOFx1OGU4N1x1OTUwNFx1OTZjZlx1NmVjMVx1OTY2NFx1Njk1YSJdLFsiYjQ0MCIsIlx1Nzg4NFx1Nzg4NVx1Nzg4Nlx1Nzg4OFx1Nzg4YVx1Nzg4Ylx1''@;'; put 'put ''Nzg4Zlx1Nzg5MFx1Nzg5Mlx1Nzg5NFx1Nzg5NVx1Nzg5Nlx1Nzg5OVx1Nzg5ZFx1Nzg5ZVx1NzhhMFx1NzhhMlx1NzhhNFx1NzhhNlx1NzhhOCIsNywiXHU3OGI1XHU3OGI2XHU3OGI3XHU3OGI4XHU3OGJhXHU3OGJiXHU3OGJjXHU3OGJkXHU3OGJmXHU3OGMwXHU3OGMyXHU3OGMzXHU3OGM0''@;'; put 'put ''XHU3OGM2XHU3OGM3XHU3OGM4XHU3OGNjXHU3OGNkXHU3OGNlXHU3OGNmXHU3OGQxXHU3OGQyXHU3OGQzXHU3OGQ2XHU3OGQ3XHU3OGQ4XHU3OGRhIiw5XSxbImI0ODAiLCJcdTc4ZTRcdTc4ZTVcdTc4ZTZcdTc4ZTdcdTc4ZTlcdTc4ZWFcdTc4ZWJcdTc4ZWQiLDQsIlx1NzhmM1x1NzhmNVx1''@;'; put 'put ''NzhmNlx1NzhmOFx1NzhmOVx1NzhmYiIsNSwiXHU3OTAyXHU3OTAzXHU3OTA0XHU3OTA2Iiw2LCJcdTc4NDBcdTUwYThcdTc3ZDdcdTY0MTBcdTg5ZTZcdTU5MDRcdTYzZTNcdTVkZGRcdTdhN2ZcdTY5M2RcdTRmMjBcdTgyMzlcdTU1OThcdTRlMzJcdTc1YWVcdTdhOTdcdTVlNjJcdTVlOGFc''@;'; put 'put ''dTk1ZWZcdTUyMWJcdTU0MzlcdTcwOGFcdTYzNzZcdTk1MjRcdTU3ODJcdTY2MjVcdTY5M2ZcdTkxODdcdTU1MDdcdTZkZjNcdTdlYWZcdTg4MjJcdTYyMzNcdTdlZjBcdTc1YjVcdTgzMjhcdTc4YzFcdTk2Y2NcdThmOWVcdTYxNDhcdTc0ZjdcdThiY2RcdTZiNjRcdTUyM2FcdThkNTBcdTZi''@;'; put 'put ''MjFcdTgwNmFcdTg0NzFcdTU2ZjFcdTUzMDZcdTRlY2VcdTRlMWJcdTUxZDFcdTdjOTdcdTkxOGJcdTdjMDdcdTRmYzNcdThlN2ZcdTdiZTFcdTdhOWNcdTY0NjdcdTVkMTRcdTUwYWNcdTgxMDZcdTc2MDFcdTdjYjlcdTZkZWNcdTdmZTBcdTY3NTFcdTViNThcdTViZjhcdTc4Y2JcdTY0YWVc''@;'; put 'put ''dTY0MTNcdTYzYWFcdTYzMmJcdTk1MTlcdTY0MmRcdThmYmVcdTdiNTRcdTc2MjlcdTYyNTNcdTU5MjdcdTU0NDZcdTZiNzlcdTUwYTNcdTYyMzRcdTVlMjZcdTZiODZcdTRlZTNcdThkMzdcdTg4OGJcdTVmODVcdTkwMmUiXSxbImI1NDAiLCJcdTc5MGQiLDUsIlx1NzkxNCIsOSwiXHU3OTFm''@;'; put 'put ''Iiw0LCJcdTc5MjUiLDE0LCJcdTc5MzUiLDQsIlx1NzkzZFx1NzkzZlx1Nzk0Mlx1Nzk0M1x1Nzk0NFx1Nzk0NVx1Nzk0N1x1Nzk0YSIsOCwiXHU3OTU0XHU3OTU1XHU3OTU4XHU3OTU5XHU3OTYxXHU3OTYzIl0sWyJiNTgwIiwiXHU3OTY0XHU3OTY2XHU3OTY5XHU3OTZhXHU3OTZiXHU3OTZj''@;'; put 'put ''XHU3OTZlXHU3OTcwIiw2LCJcdTc5NzlcdTc5N2IiLDQsIlx1Nzk4Mlx1Nzk4M1x1Nzk4Nlx1Nzk4N1x1Nzk4OFx1Nzk4OVx1Nzk4Ylx1Nzk4Y1x1Nzk4ZFx1Nzk4ZVx1Nzk5MFx1Nzk5MVx1Nzk5Mlx1NjAyMFx1ODAzZFx1NjJjNVx1NGUzOVx1NTM1NVx1OTBmOFx1NjNiOFx1ODBjNlx1NjVl''@;'; put 'put ''Nlx1NmMyZVx1NGY0Nlx1NjBlZVx1NmRlMVx1OGJkZVx1NWYzOVx1ODZjYlx1NWY1M1x1NjMyMVx1NTE1YVx1ODM2MVx1Njg2M1x1NTIwMFx1NjM2M1x1OGU0OFx1NTAxMlx1NWM5Ylx1Nzk3N1x1NWJmY1x1NTIzMFx1N2EzYlx1NjBiY1x1OTA1M1x1NzZkN1x1NWZiN1x1NWY5N1x1NzY4NFx1''@;'; put 'put ''OGU2Y1x1NzA2Zlx1NzY3Ylx1N2I0OVx1NzdhYVx1NTFmM1x1OTA5M1x1NTgyNFx1NGY0ZVx1NmVmNFx1OGZlYVx1NjU0Y1x1N2IxYlx1NzJjNFx1NmRhNFx1N2ZkZlx1NWFlMVx1NjJiNVx1NWU5NVx1NTczMFx1ODQ4Mlx1N2IyY1x1NWUxZFx1NWYxZlx1OTAxMlx1N2YxNFx1OThhMFx1NjM4''@;'; put 'put ''Mlx1NmVjN1x1Nzg5OFx1NzBiOVx1NTE3OFx1OTc1Ylx1NTdhYlx1NzUzNVx1NGY0M1x1NzUzOFx1NWU5N1x1NjBlNlx1NTk2MFx1NmRjMFx1NmJiZlx1Nzg4OVx1NTNmY1x1OTZkNVx1NTFjYlx1NTIwMVx1NjM4OVx1NTQwYVx1OTQ5M1x1OGMwM1x1OGRjY1x1NzIzOVx1Nzg5Zlx1ODc3Nlx1''@;'; put 'put ''OGZlZFx1OGMwZFx1NTNlMCJdLFsiYjY0MCIsIlx1Nzk5MyIsNiwiXHU3OTliIiwxMSwiXHU3OWE4IiwxMCwiXHU3OWI0Iiw0LCJcdTc5YmNcdTc5YmZcdTc5YzJcdTc5YzRcdTc5YzVcdTc5YzdcdTc5YzhcdTc5Y2FcdTc5Y2NcdTc5Y2VcdTc5Y2ZcdTc5ZDBcdTc5ZDNcdTc5ZDRcdTc5ZDZc''@;'; put 'put ''dTc5ZDdcdTc5ZDkiLDUsIlx1NzllMFx1NzllMVx1NzllMlx1NzllNVx1NzllOFx1NzllYSJdLFsiYjY4MCIsIlx1NzllY1x1NzllZVx1NzlmMSIsNiwiXHU3OWY5XHU3OWZhXHU3OWZjXHU3OWZlXHU3OWZmXHU3YTAxXHU3YTA0XHU3YTA1XHU3YTA3XHU3YTA4XHU3YTA5XHU3YTBhXHU3YTBj''@;'; put 'put ''XHU3YTBmIiw0LCJcdTdhMTVcdTdhMTZcdTdhMThcdTdhMTlcdTdhMWJcdTdhMWNcdTRlMDFcdTc2ZWZcdTUzZWVcdTk0ODlcdTk4NzZcdTlmMGVcdTk1MmRcdTViOWFcdThiYTJcdTRlMjJcdTRlMWNcdTUxYWNcdTg0NjNcdTYxYzJcdTUyYThcdTY4MGJcdTRmOTdcdTYwNmJcdTUxYmJcdTZk''@;'; put 'put ''MWVcdTUxNWNcdTYyOTZcdTY1OTdcdTk2NjFcdThjNDZcdTkwMTdcdTc1ZDhcdTkwZmRcdTc3NjNcdTZiZDJcdTcyOGFcdTcyZWNcdThiZmJcdTU4MzVcdTc3NzlcdThkNGNcdTY3NWNcdTk1NDBcdTgwOWFcdTVlYTZcdTZlMjFcdTU5OTJcdTdhZWZcdTc3ZWRcdTk1M2JcdTZiYjVcdTY1YWRc''@;'; put 'put ''dTdmMGVcdTU4MDZcdTUxNTFcdTk2MWZcdTViZjlcdTU4YTlcdTU0MjhcdThlNzJcdTY1NjZcdTk4N2ZcdTU2ZTRcdTk0OWRcdTc2ZmVcdTkwNDFcdTYzODdcdTU0YzZcdTU5MWFcdTU5M2FcdTU3OWJcdThlYjJcdTY3MzVcdThkZmFcdTgyMzVcdTUyNDFcdTYwZjBcdTU4MTVcdTg2ZmVcdTVj''@;'; put 'put ''ZThcdTllNDVcdTRmYzRcdTk4OWRcdThiYjlcdTVhMjVcdTYwNzZcdTUzODRcdTYyN2NcdTkwNGZcdTkxMDJcdTk5N2ZcdTYwNjlcdTgwMGNcdTUxM2ZcdTgwMzNcdTVjMTRcdTk5NzVcdTZkMzFcdTRlOGMiXSxbImI3NDAiLCJcdTdhMWRcdTdhMWZcdTdhMjFcdTdhMjJcdTdhMjQiLDE0LCJc''@;'; put 'put ''dTdhMzRcdTdhMzVcdTdhMzZcdTdhMzhcdTdhM2FcdTdhM2VcdTdhNDAiLDUsIlx1N2E0NyIsOSwiXHU3YTUyIiw0LCJcdTdhNTgiLDE2XSxbImI3ODAiLCJcdTdhNjkiLDYsIlx1N2E3MVx1N2E3Mlx1N2E3M1x1N2E3NVx1N2E3Ylx1N2E3Y1x1N2E3ZFx1N2E3ZVx1N2E4Mlx1N2E4NVx1N2E4''@;'; put 'put ''N1x1N2E4OVx1N2E4YVx1N2E4Ylx1N2E4Y1x1N2E4ZVx1N2E4Zlx1N2E5MFx1N2E5M1x1N2E5NFx1N2E5OVx1N2E5YVx1N2E5Ylx1N2E5ZVx1N2FhMVx1N2FhMlx1OGQzMFx1NTNkMVx1N2Y1YVx1N2I0Zlx1NGYxMFx1NGU0Zlx1OTYwMFx1NmNkNVx1NzNkMFx1ODVlOVx1NWUwNlx1NzU2YVx1''@;'; put 'put ''N2ZmYlx1NmEwYVx1NzdmZVx1OTQ5Mlx1N2U0MVx1NTFlMVx1NzBlNlx1NTNjZFx1OGZkNFx1ODMwM1x1OGQyOVx1NzJhZlx1OTk2ZFx1NmNkYlx1NTc0YVx1ODJiM1x1NjViOVx1ODBhYVx1NjIzZlx1OTYzMlx1NTlhOFx1NGVmZlx1OGJiZlx1N2ViYVx1NjUzZVx1ODNmMlx1OTc1ZVx1NTU2''@;'; put 'put ''MVx1OThkZVx1ODBhNVx1NTMyYVx1OGJmZFx1NTQyMFx1ODBiYVx1NWU5Zlx1NmNiOFx1OGQzOVx1ODJhY1x1OTE1YVx1NTQyOVx1NmMxYlx1NTIwNlx1N2ViN1x1NTc1Zlx1NzExYVx1NmM3ZVx1N2M4OVx1NTk0Ylx1NGVmZFx1NWZmZlx1NjEyNFx1N2NhYVx1NGUzMFx1NWMwMVx1NjdhYlx1''@;'; put 'put ''ODcwMlx1NWNmMFx1OTUwYlx1OThjZVx1NzVhZlx1NzBmZFx1OTAyMlx1NTFhZlx1N2YxZFx1OGJiZFx1NTk0OVx1NTFlNFx1NGY1Ylx1NTQyNlx1NTkyYlx1NjU3N1x1ODBhNFx1NWI3NVx1NjI3Nlx1NjJjMlx1OGY5MFx1NWU0NVx1NmMxZlx1N2IyNlx1NGYwZlx1NGZkOFx1NjcwZCJdLFsi''@;'; put 'put ''Yjg0MCIsIlx1N2FhM1x1N2FhNFx1N2FhN1x1N2FhOVx1N2FhYVx1N2FhYlx1N2FhZSIsNCwiXHU3YWI0IiwxMCwiXHU3YWMwIiwxMCwiXHU3YWNjIiw5LCJcdTdhZDdcdTdhZDhcdTdhZGFcdTdhZGJcdTdhZGNcdTdhZGRcdTdhZTFcdTdhZTJcdTdhZTRcdTdhZTciLDUsIlx1N2FlZVx1N2Fm''@;'; put 'put ''MFx1N2FmMVx1N2FmMlx1N2FmMyJdLFsiYjg4MCIsIlx1N2FmNCIsNCwiXHU3YWZiXHU3YWZjXHU3YWZlXHU3YjAwXHU3YjAxXHU3YjAyXHU3YjA1XHU3YjA3XHU3YjA5XHU3YjBjXHU3YjBkXHU3YjBlXHU3YjEwXHU3YjEyXHU3YjEzXHU3YjE2XHU3YjE3XHU3YjE4XHU3YjFhXHU3YjFjXHU3''@;'; put 'put ''YjFkXHU3YjFmXHU3YjIxXHU3YjIyXHU3YjIzXHU3YjI3XHU3YjI5XHU3YjJkXHU2ZDZlXHU2ZGFhXHU3OThmXHU4OGIxXHU1ZjE3XHU3NTJiXHU2MjlhXHU4Zjg1XHU0ZmVmXHU5MWRjXHU2NWE3XHU4MTJmXHU4MTUxXHU1ZTljXHU4MTUwXHU4ZDc0XHU1MjZmXHU4OTg2XHU4ZDRiXHU1OTBk''@;'; put 'put ''XHU1MDg1XHU0ZWQ4XHU5NjFjXHU3MjM2XHU4MTc5XHU4ZDFmXHU1YmNjXHU4YmEzXHU5NjQ0XHU1OTg3XHU3ZjFhXHU1NDkwXHU1Njc2XHU1NjBlXHU4YmU1XHU2NTM5XHU2OTgyXHU5NDk5XHU3NmQ2XHU2ZTg5XHU1ZTcyXHU3NTE4XHU2NzQ2XHU2N2QxXHU3YWZmXHU4MDlkXHU4ZDc2XHU2''@;'; put 'put ''MTFmXHU3OWM2XHU2NTYyXHU4ZDYzXHU1MTg4XHU1MjFhXHU5NGEyXHU3ZjM4XHU4MDliXHU3ZWIyXHU1Yzk3XHU2ZTJmXHU2NzYwXHU3YmQ5XHU3NjhiXHU5YWQ4XHU4MThmXHU3Zjk0XHU3Y2Q1XHU2NDFlXHU5NTUwXHU3YTNmXHU1NDRhXHU1NGU1XHU2YjRjXHU2NDAxXHU2MjA4XHU5ZTNk''@;'; put 'put ''XHU4MGYzXHU3NTk5XHU1MjcyXHU5NzY5XHU4NDViXHU2ODNjXHU4NmU0XHU5NjAxXHU5Njk0XHU5NGVjXHU0ZTJhXHU1NDA0XHU3ZWQ5XHU2ODM5XHU4ZGRmXHU4MDE1XHU2NmY0XHU1ZTlhXHU3ZmI5Il0sWyJiOTQwIiwiXHU3YjJmXHU3YjMwXHU3YjMyXHU3YjM0XHU3YjM1XHU3YjM2XHU3''@;'; put 'put ''YjM3XHU3YjM5XHU3YjNiXHU3YjNkXHU3YjNmIiw1LCJcdTdiNDZcdTdiNDhcdTdiNGFcdTdiNGRcdTdiNGVcdTdiNTNcdTdiNTVcdTdiNTdcdTdiNTlcdTdiNWNcdTdiNWVcdTdiNWZcdTdiNjFcdTdiNjMiLDEwLCJcdTdiNmZcdTdiNzBcdTdiNzNcdTdiNzRcdTdiNzZcdTdiNzhcdTdiN2Fc''@;'; put 'put ''dTdiN2NcdTdiN2RcdTdiN2ZcdTdiODFcdTdiODJcdTdiODNcdTdiODRcdTdiODYiLDYsIlx1N2I4ZVx1N2I4ZiJdLFsiYjk4MCIsIlx1N2I5MVx1N2I5Mlx1N2I5M1x1N2I5Nlx1N2I5OFx1N2I5OVx1N2I5YVx1N2I5Ylx1N2I5ZVx1N2I5Zlx1N2JhMFx1N2JhM1x1N2JhNFx1N2JhNVx1N2Jh''@;'; put 'put ''ZVx1N2JhZlx1N2JiMFx1N2JiMlx1N2JiM1x1N2JiNVx1N2JiNlx1N2JiN1x1N2JiOSIsNywiXHU3YmMyXHU3YmMzXHU3YmM0XHU1N2MyXHU4MDNmXHU2ODk3XHU1ZGU1XHU2NTNiXHU1MjlmXHU2MDZkXHU5ZjlhXHU0ZjliXHU4ZWFjXHU1MTZjXHU1YmFiXHU1ZjEzXHU1ZGU5XHU2YzVlXHU2''@;'; put 'put ''MmYxXHU4ZDIxXHU1MTcxXHU5NGE5XHU1MmZlXHU2YzlmXHU4MmRmXHU3MmQ3XHU1N2EyXHU2Nzg0XHU4ZDJkXHU1OTFmXHU4ZjljXHU4M2M3XHU1NDk1XHU3YjhkXHU0ZjMwXHU2Y2JkXHU1YjY0XHU1OWQxXHU5ZjEzXHU1M2U0XHU4NmNhXHU5YWE4XHU4YzM3XHU4MGExXHU2NTQ1XHU5ODdl''@;'; put 'put ''XHU1NmZhXHU5NmM3XHU1MjJlXHU3NGRjXHU1MjUwXHU1YmUxXHU2MzAyXHU4OTAyXHU0ZTU2XHU2MmQwXHU2MDJhXHU2OGZhXHU1MTczXHU1Yjk4XHU1MWEwXHU4OWMyXHU3YmExXHU5OTg2XHU3ZjUwXHU2MGVmXHU3MDRjXHU4ZDJmXHU1MTQ5XHU1ZTdmXHU5MDFiXHU3NDcwXHU4OWM0XHU1''@;'; put 'put ''NzJkXHU3ODQ1XHU1ZjUyXHU5ZjlmXHU5NWZhXHU4ZjY4XHU5YjNjXHU4YmUxXHU3Njc4XHU2ODQyXHU2N2RjXHU4ZGVhXHU4ZDM1XHU1MjNkXHU4ZjhhXHU2ZWRhXHU2OGNkXHU5NTA1XHU5MGVkXHU1NmZkXHU2NzljXHU4OGY5XHU4ZmM3XHU1NGM4Il0sWyJiYTQwIiwiXHU3YmM1XHU3YmM4''@;'; put 'put ''XHU3YmM5XHU3YmNhXHU3YmNiXHU3YmNkXHU3YmNlXHU3YmNmXHU3YmQwXHU3YmQyXHU3YmQ0Iiw0LCJcdTdiZGJcdTdiZGNcdTdiZGVcdTdiZGZcdTdiZTBcdTdiZTJcdTdiZTNcdTdiZTRcdTdiZTdcdTdiZThcdTdiZTlcdTdiZWJcdTdiZWNcdTdiZWRcdTdiZWZcdTdiZjBcdTdiZjIiLDQs''@;'; put 'put ''Ilx1N2JmOFx1N2JmOVx1N2JmYVx1N2JmYlx1N2JmZFx1N2JmZiIsNywiXHU3YzA4XHU3YzA5XHU3YzBhXHU3YzBkXHU3YzBlXHU3YzEwIiw1LCJcdTdjMTdcdTdjMThcdTdjMTkiXSxbImJhODAiLCJcdTdjMWEiLDQsIlx1N2MyMCIsNSwiXHU3YzI4XHU3YzI5XHU3YzJiIiwxMiwiXHU3YzM5''@;'; put 'put ''Iiw1LCJcdTdjNDJcdTlhYjhcdTViNjlcdTZkNzdcdTZjMjZcdTRlYTVcdTViYjNcdTlhODdcdTkxNjNcdTYxYThcdTkwYWZcdTk3ZTlcdTU0MmJcdTZkYjVcdTViZDJcdTUxZmRcdTU1OGFcdTdmNTVcdTdmZjBcdTY0YmNcdTYzNGRcdTY1ZjFcdTYxYmVcdTYwOGRcdTcxMGFcdTZjNTdcdTZj''@;'; put 'put ''NDlcdTU5MmZcdTY3NmRcdTgyMmFcdTU4ZDVcdTU2OGVcdThjNmFcdTZiZWJcdTkwZGRcdTU5N2RcdTgwMTdcdTUzZjdcdTZkNjlcdTU0NzVcdTU1OWRcdTgzNzdcdTgzY2ZcdTY4MzhcdTc5YmVcdTU0OGNcdTRmNTVcdTU0MDhcdTc2ZDJcdThjODlcdTk2MDJcdTZjYjNcdTZkYjhcdThkNmJc''@;'; put 'put ''dTg5MTBcdTllNjRcdThkM2FcdTU2M2ZcdTllZDFcdTc1ZDVcdTVmODhcdTcyZTBcdTYwNjhcdTU0ZmNcdTRlYThcdTZhMmFcdTg4NjFcdTYwNTJcdThmNzBcdTU0YzRcdTcwZDhcdTg2NzlcdTllM2ZcdTZkMmFcdTViOGZcdTVmMThcdTdlYTJcdTU1ODlcdTRmYWZcdTczMzRcdTU0M2NcdTUz''@;'; put 'put ''OWFcdTUwMTlcdTU0MGVcdTU0N2NcdTRlNGVcdTVmZmRcdTc0NWFcdTU4ZjZcdTg0NmJcdTgwZTFcdTg3NzRcdTcyZDBcdTdjY2FcdTZlNTYiXSxbImJiNDAiLCJcdTdjNDMiLDksIlx1N2M0ZSIsMzYsIlx1N2M3NSIsNSwiXHU3YzdlIiw5XSxbImJiODAiLCJcdTdjODhcdTdjOGEiLDYsIlx1''@;'; put 'put ''N2M5M1x1N2M5NFx1N2M5Nlx1N2M5OVx1N2M5YVx1N2M5Ylx1N2NhMFx1N2NhMVx1N2NhM1x1N2NhNlx1N2NhN1x1N2NhOFx1N2NhOVx1N2NhYlx1N2NhY1x1N2NhZFx1N2NhZlx1N2NiMFx1N2NiNCIsNCwiXHU3Y2JhXHU3Y2JiXHU1ZjI3XHU4NjRlXHU1NTJjXHU2MmE0XHU0ZTkyXHU2Y2Fh''@;'; put 'put ''XHU2MjM3XHU4MmIxXHU1NGQ3XHU1MzRlXHU3MzNlXHU2ZWQxXHU3NTNiXHU1MjEyXHU1MzE2XHU4YmRkXHU2OWQwXHU1ZjhhXHU2MDAwXHU2ZGVlXHU1NzRmXHU2YjIyXHU3M2FmXHU2ODUzXHU4ZmQ4XHU3ZjEzXHU2MzYyXHU2MGEzXHU1NTI0XHU3NWVhXHU4YzYyXHU3MTE1XHU2ZGEzXHU1''@;'; put 'put ''YmE2XHU1ZTdiXHU4MzUyXHU2MTRjXHU5ZWM0XHU3OGZhXHU4NzU3XHU3YzI3XHU3Njg3XHU1MWYwXHU2MGY2XHU3MTRjXHU2NjQzXHU1ZTRjXHU2MDRkXHU4YzBlXHU3MDcwXHU2MzI1XHU4Zjg5XHU1ZmJkXHU2MDYyXHU4NmQ0XHU1NmRlXHU2YmMxXHU2MDk0XHU2MTY3XHU1MzQ5XHU2MGUw''@;'; put 'put ''XHU2NjY2XHU4ZDNmXHU3OWZkXHU0ZjFhXHU3MGU5XHU2YzQ3XHU4YmIzXHU4YmYyXHU3ZWQ4XHU4MzY0XHU2NjBmXHU1YTVhXHU5YjQyXHU2ZDUxXHU2ZGY3XHU4YzQxXHU2ZDNiXHU0ZjE5XHU3MDZiXHU4M2I3XHU2MjE2XHU2MGQxXHU5NzBkXHU4ZDI3XHU3OTc4XHU1MWZiXHU1NzNlXHU1''@;'; put 'put ''N2ZhXHU2NzNhXHU3NTc4XHU3YTNkXHU3OWVmXHU3Yjk1Il0sWyJiYzQwIiwiXHU3Y2JmXHU3Y2MwXHU3Y2MyXHU3Y2MzXHU3Y2M0XHU3Y2M2XHU3Y2M5XHU3Y2NiXHU3Y2NlIiw2LCJcdTdjZDhcdTdjZGFcdTdjZGJcdTdjZGRcdTdjZGVcdTdjZTEiLDYsIlx1N2NlOSIsNSwiXHU3Y2YwIiw3''@;'; put 'put ''LCJcdTdjZjlcdTdjZmFcdTdjZmMiLDEzLCJcdTdkMGIiLDVdLFsiYmM4MCIsIlx1N2QxMSIsMTQsIlx1N2QyMVx1N2QyM1x1N2QyNFx1N2QyNVx1N2QyNlx1N2QyOFx1N2QyOVx1N2QyYVx1N2QyY1x1N2QyZFx1N2QyZVx1N2QzMCIsNiwiXHU4MDhjXHU5OTY1XHU4ZmY5XHU2ZmMwXHU4YmE1''@;'; put 'put ''XHU5ZTIxXHU1OWVjXHU3ZWU5XHU3ZjA5XHU1NDA5XHU2NzgxXHU2OGQ4XHU4ZjkxXHU3YzRkXHU5NmM2XHU1M2NhXHU2MDI1XHU3NWJlXHU2YzcyXHU1MzczXHU1YWM5XHU3ZWE3XHU2MzI0XHU1MWUwXHU4MTBhXHU1ZGYxXHU4NGRmXHU2MjgwXHU1MTgwXHU1YjYzXHU0ZjBlXHU3OTZkXHU1''@;'; put 'put ''MjQyXHU2MGI4XHU2ZDRlXHU1YmM0XHU1YmMyXHU4YmExXHU4YmIwXHU2NWUyXHU1ZmNjXHU5NjQ1XHU1OTkzXHU3ZWU3XHU3ZWFhXHU1NjA5XHU2N2I3XHU1OTM5XHU0ZjczXHU1YmI2XHU1MmEwXHU4MzVhXHU5ODhhXHU4ZDNlXHU3NTMyXHU5NGJlXHU1MDQ3XHU3YTNjXHU0ZWY3XHU2N2I2''@;'; put 'put ''XHU5YTdlXHU1YWMxXHU2YjdjXHU3NmQxXHU1NzVhXHU1YzE2XHU3YjNhXHU5NWY0XHU3MTRlXHU1MTdjXHU4MGE5XHU4MjcwXHU1OTc4XHU3ZjA0XHU4MzI3XHU2OGMwXHU2N2VjXHU3OGIxXHU3ODc3XHU2MmUzXHU2MzYxXHU3YjgwXHU0ZmVkXHU1MjZhXHU1MWNmXHU4MzUwXHU2OWRiXHU5''@;'; put 'put ''Mjc0XHU4ZGY1XHU4ZDMxXHU4OWMxXHU5NTJlXHU3YmFkXHU0ZWY2Il0sWyJiZDQwIiwiXHU3ZDM3Iiw1NCwiXHU3ZDZmIiw3XSxbImJkODAiLCJcdTdkNzgiLDMyLCJcdTUwNjVcdTgyMzBcdTUyNTFcdTk5NmZcdTZlMTBcdTZlODVcdTZkYTdcdTVlZmFcdTUwZjVcdTU5ZGNcdTVjMDZcdTZk''@;'; put 'put ''NDZcdTZjNWZcdTc1ODZcdTg0OGJcdTY4NjhcdTU5NTZcdThiYjJcdTUzMjBcdTkxNzFcdTk2NGRcdTg1NDlcdTY5MTJcdTc5MDFcdTcxMjZcdTgwZjZcdTRlYTRcdTkwY2FcdTZkNDdcdTlhODRcdTVhMDdcdTU2YmNcdTY0MDVcdTk0ZjBcdTc3ZWJcdTRmYTVcdTgxMWFcdTcyZTFcdTg5ZDJc''@;'; put 'put ''dTk5N2FcdTdmMzRcdTdlZGVcdTUyN2ZcdTY1NTlcdTkxNzVcdThmN2ZcdThmODNcdTUzZWJcdTdhOTZcdTYzZWRcdTYzYTVcdTc2ODZcdTc5ZjhcdTg4NTdcdTk2MzZcdTYyMmFcdTUyYWJcdTgyODJcdTY4NTRcdTY3NzBcdTYzNzdcdTc3NmJcdTdhZWRcdTZkMDFcdTdlZDNcdTg5ZTNcdTU5''@;'; put 'put ''ZDBcdTYyMTJcdTg1YzlcdTgyYTVcdTc1NGNcdTUwMWZcdTRlY2JcdTc1YTVcdThiZWJcdTVjNGFcdTVkZmVcdTdiNGJcdTY1YTRcdTkxZDFcdTRlY2FcdTZkMjVcdTg5NWZcdTdkMjdcdTk1MjZcdTRlYzVcdThjMjhcdThmZGJcdTk3NzNcdTY2NGJcdTc5ODFcdThmZDFcdTcwZWNcdTZkNzgi''@;'; put 'put ''XSxbImJlNDAiLCJcdTdkOTkiLDEyLCJcdTdkYTciLDYsIlx1N2RhZiIsNDJdLFsiYmU4MCIsIlx1N2RkYSIsMzIsIlx1NWMzZFx1NTJiMlx1ODM0Nlx1NTE2Mlx1ODMwZVx1Nzc1Ylx1NjY3Nlx1OWNiOFx1NGVhY1x1NjBjYVx1N2NiZVx1N2NiM1x1N2VjZlx1NGU5NVx1OGI2Nlx1NjY2Zlx1''@;'; put 'put ''OTg4OFx1OTc1OVx1NTg4M1x1NjU2Y1x1OTU1Y1x1NWY4NFx1NzVjOVx1OTc1Nlx1N2FkZlx1N2FkZVx1NTFjMFx1NzBhZlx1N2E5OFx1NjNlYVx1N2E3Nlx1N2VhMFx1NzM5Nlx1OTdlZFx1NGU0NVx1NzA3OFx1NGU1ZFx1OTE1Mlx1NTNhOVx1NjU1MVx1NjVlN1x1ODFmY1x1ODIwNVx1NTQ4''@;'; put 'put ''ZVx1NWMzMVx1NzU5YVx1OTdhMFx1NjJkOFx1NzJkOVx1NzViZFx1NWM0NVx1OWE3OVx1ODNjYVx1NWM0MFx1NTQ4MFx1NzdlOVx1NGUzZVx1NmNhZVx1ODA1YVx1NjJkMlx1NjM2ZVx1NWRlOFx1NTE3N1x1OGRkZFx1OGUxZVx1OTUyZlx1NGZmMVx1NTNlNVx1NjBlN1x1NzBhY1x1NTI2N1x1''@;'; put 'put ''NjM1MFx1OWU0M1x1NWExZlx1NTAyNlx1NzczN1x1NTM3N1x1N2VlMlx1NjQ4NVx1NjUyYlx1NjI4OVx1NjM5OFx1NTAxNFx1NzIzNVx1ODljOVx1NTFiM1x1OGJjMFx1N2VkZFx1NTc0N1x1ODNjY1x1OTRhN1x1NTE5Ylx1NTQxYlx1NWNmYiJdLFsiYmY0MCIsIlx1N2RmYiIsNjJdLFsiYmY4''@;'; put 'put ''MCIsIlx1N2UzYVx1N2UzYyIsNCwiXHU3ZTQyIiw0LCJcdTdlNDgiLDIxLCJcdTRmY2FcdTdhZTNcdTZkNWFcdTkwZTFcdTlhOGZcdTU1ODBcdTU0OTZcdTUzNjFcdTU0YWZcdTVmMDBcdTYzZTlcdTY5NzdcdTUxZWZcdTYxNjhcdTUyMGFcdTU4MmFcdTUyZDhcdTU3NGVcdTc4MGRcdTc3MGJc''@;'; put 'put ''dTVlYjdcdTYxNzdcdTdjZTBcdTYyNWJcdTYyOTdcdTRlYTJcdTcwOTVcdTgwMDNcdTYyZjdcdTcwZTRcdTk3NjBcdTU3NzdcdTgyZGJcdTY3ZWZcdTY4ZjVcdTc4ZDVcdTk4OTdcdTc5ZDFcdTU4ZjNcdTU0YjNcdTUzZWZcdTZlMzRcdTUxNGJcdTUyM2JcdTViYTJcdThiZmVcdTgwYWZcdTU1''@;'; put 'put ''NDNcdTU3YTZcdTYwNzNcdTU3NTFcdTU0MmRcdTdhN2FcdTYwNTBcdTViNTRcdTYzYTdcdTYyYTBcdTUzZTNcdTYyNjNcdTViYzdcdTY3YWZcdTU0ZWRcdTdhOWZcdTgyZTZcdTkxNzdcdTVlOTNcdTg4ZTRcdTU5MzhcdTU3YWVcdTYzMGVcdThkZThcdTgwZWZcdTU3NTdcdTdiNzdcdTRmYTlc''@;'; put 'put ''dTVmZWJcdTViYmRcdTZiM2VcdTUzMjFcdTdiNTBcdTcyYzJcdTY4NDZcdTc3ZmZcdTc3MzZcdTY1ZjdcdTUxYjVcdTRlOGZcdTc2ZDRcdTVjYmZcdTdhYTVcdTg0NzVcdTU5NGVcdTliNDFcdTUwODAiXSxbImMwNDAiLCJcdTdlNWUiLDM1LCJcdTdlODMiLDIzLCJcdTdlOWNcdTdlOWRcdTdl''@;'; put 'put ''OWUiXSxbImMwODAiLCJcdTdlYWVcdTdlYjRcdTdlYmJcdTdlYmNcdTdlZDZcdTdlZTRcdTdlZWNcdTdlZjlcdTdmMGFcdTdmMTBcdTdmMWVcdTdmMzdcdTdmMzlcdTdmM2IiLDYsIlx1N2Y0M1x1N2Y0NiIsOSwiXHU3ZjUyXHU3ZjUzXHU5OTg4XHU2MTI3XHU2ZTgzXHU1NzY0XHU2NjA2XHU2''@;'; put 'put ''MzQ2XHU1NmYwXHU2MmVjXHU2MjY5XHU1ZWQzXHU5NjE0XHU1NzgzXHU2MmM5XHU1NTg3XHU4NzIxXHU4MTRhXHU4ZmEzXHU1NTY2XHU4M2IxXHU2NzY1XHU4ZDU2XHU4NGRkXHU1YTZhXHU2ODBmXHU2MmU2XHU3YmVlXHU5NjExXHU1MTcwXHU2ZjljXHU4YzMwXHU2M2ZkXHU4OWM4XHU2MWQy''@;'; put 'put ''XHU3ZjA2XHU3MGMyXHU2ZWU1XHU3NDA1XHU2OTk0XHU3MmZjXHU1ZWNhXHU5MGNlXHU2NzE3XHU2ZDZhXHU2MzVlXHU1MmIzXHU3MjYyXHU4MDAxXHU0ZjZjXHU1OWU1XHU5MTZhXHU3MGQ5XHU2ZDlkXHU1MmQyXHU0ZTUwXHU5NmY3XHU5NTZkXHU4NTdlXHU3OGNhXHU3ZDJmXHU1MTIxXHU1''@;'; put 'put ''NzkyXHU2NGMyXHU4MDhiXHU3YzdiXHU2Y2VhXHU2OGYxXHU2OTVlXHU1MWI3XHU1Mzk4XHU2OGE4XHU3MjgxXHU5ZWNlXHU3YmYxXHU3MmY4XHU3OWJiXHU2ZjEzXHU3NDA2XHU2NzRlXHU5MWNjXHU5Y2E0XHU3OTNjXHU4Mzg5XHU4MzU0XHU1NDBmXHU2ODE3XHU0ZTNkXHU1Mzg5XHU1MmIx''@;'; put 'put ''XHU3ODNlXHU1Mzg2XHU1MjI5XHU1MDg4XHU0ZjhiXHU0ZmQwIl0sWyJjMTQwIiwiXHU3ZjU2XHU3ZjU5XHU3ZjViXHU3ZjVjXHU3ZjVkXHU3ZjVlXHU3ZjYwXHU3ZjYzIiw0LCJcdTdmNmJcdTdmNmNcdTdmNmRcdTdmNmZcdTdmNzBcdTdmNzNcdTdmNzVcdTdmNzZcdTdmNzdcdTdmNzhcdTdm''@;'; put 'put ''N2FcdTdmN2JcdTdmN2NcdTdmN2RcdTdmN2ZcdTdmODBcdTdmODIiLDcsIlx1N2Y4Ylx1N2Y4ZFx1N2Y4ZiIsNCwiXHU3Zjk1Iiw0LCJcdTdmOWJcdTdmOWNcdTdmYTBcdTdmYTJcdTdmYTNcdTdmYTVcdTdmYTZcdTdmYTgiLDYsIlx1N2ZiMSJdLFsiYzE4MCIsIlx1N2ZiMyIsNCwiXHU3ZmJh''@;'; put 'put ''XHU3ZmJiXHU3ZmJlXHU3ZmMwXHU3ZmMyXHU3ZmMzXHU3ZmM0XHU3ZmM2XHU3ZmM3XHU3ZmM4XHU3ZmM5XHU3ZmNiXHU3ZmNkXHU3ZmNmIiw0LCJcdTdmZDZcdTdmZDdcdTdmZDkiLDUsIlx1N2ZlMlx1N2ZlM1x1NzVlMlx1N2FjYlx1N2M5Mlx1NmNhNVx1OTZiNlx1NTI5Ylx1NzQ4M1x1NTRl''@;'; put 'put ''OVx1NGZlOVx1ODA1NFx1ODNiMlx1OGZkZVx1OTU3MFx1NWVjOVx1NjAxY1x1NmQ5Zlx1NWUxOFx1NjU1Ylx1ODEzOFx1OTRmZVx1NjA0Ylx1NzBiY1x1N2VjM1x1N2NhZVx1NTFjOVx1Njg4MVx1N2NiMVx1ODI2Zlx1NGUyNFx1OGY4Nlx1OTFjZlx1NjY3ZVx1NGVhZVx1OGMwNVx1NjRhOVx1''@;'; put 'put ''ODA0YVx1NTBkYVx1NzU5N1x1NzFjZVx1NWJlNVx1OGZiZFx1NmY2Nlx1NGU4Nlx1NjQ4Mlx1OTU2M1x1NWVkNlx1NjU5OVx1NTIxN1x1ODhjMlx1NzBjOFx1NTJhM1x1NzMwZVx1NzQzM1x1Njc5N1x1NzhmN1x1OTcxNlx1NGUzNFx1OTBiYlx1OWNkZVx1NmRjYlx1NTFkYlx1OGQ0MVx1NTQx''@;'; put 'put ''ZFx1NjJjZVx1NzNiMlx1ODNmMVx1OTZmNlx1OWY4NFx1OTRjM1x1NGYzNlx1N2Y5YVx1NTFjY1x1NzA3NVx1OTY3NVx1NWNhZFx1OTg4Nlx1NTNlNlx1NGVlNFx1NmU5Y1x1NzQwOVx1NjliNFx1Nzg2Ylx1OTk4Zlx1NzU1OVx1NTIxOFx1NzYyNFx1NmQ0MVx1NjdmM1x1NTE2ZFx1OWY5OVx1''@;'; put 'put ''ODA0Ylx1NTQ5OVx1N2IzY1x1N2FiZiJdLFsiYzI0MCIsIlx1N2ZlNFx1N2ZlN1x1N2ZlOFx1N2ZlYVx1N2ZlYlx1N2ZlY1x1N2ZlZFx1N2ZlZlx1N2ZmMlx1N2ZmNCIsNiwiXHU3ZmZkXHU3ZmZlXHU3ZmZmXHU4MDAyXHU4MDA3XHU4MDA4XHU4MDA5XHU4MDBhXHU4MDBlXHU4MDBmXHU4MDEx''@;'; put 'put ''XHU4MDEzXHU4MDFhXHU4MDFiXHU4MDFkXHU4MDFlXHU4MDFmXHU4MDIxXHU4MDIzXHU4MDI0XHU4MDJiIiw1LCJcdTgwMzJcdTgwMzRcdTgwMzlcdTgwM2FcdTgwM2NcdTgwM2VcdTgwNDBcdTgwNDFcdTgwNDRcdTgwNDVcdTgwNDdcdTgwNDhcdTgwNDlcdTgwNGVcdTgwNGZcdTgwNTBcdTgw''@;'; put 'put ''NTFcdTgwNTNcdTgwNTVcdTgwNTZcdTgwNTciXSxbImMyODAiLCJcdTgwNTlcdTgwNWIiLDEzLCJcdTgwNmIiLDUsIlx1ODA3MiIsMTEsIlx1OTY4Nlx1NTc4NFx1NjJlMlx1OTY0N1x1Njk3Y1x1NWEwNFx1NjQwMlx1N2JkM1x1NmYwZlx1OTY0Ylx1ODJhNlx1NTM2Mlx1OTg4NVx1NWU5MFx1''@;'; put 'put ''NzA4OVx1NjNiM1x1NTM2NFx1ODY0Zlx1OWM4MVx1OWU5M1x1Nzg4Y1x1OTczMlx1OGRlZlx1OGQ0Mlx1OWU3Zlx1NmY1ZVx1Nzk4NFx1NWY1NVx1OTY0Nlx1NjIyZVx1OWE3NFx1NTQxNVx1OTRkZFx1NGZhM1x1NjVjNVx1NWM2NVx1NWM2MVx1N2YxNVx1ODY1MVx1NmMyZlx1NWY4Ylx1NzM4''@;'; put 'put ''N1x1NmVlNFx1N2VmZlx1NWNlNlx1NjMxYlx1NWI2YVx1NmVlNlx1NTM3NVx1NGU3MVx1NjNhMFx1NzU2NVx1NjJhMVx1OGY2ZVx1NGYyNlx1NGVkMVx1NmNhNlx1N2ViNlx1OGJiYVx1ODQxZFx1ODdiYVx1N2Y1N1x1OTAzYlx1OTUyM1x1N2JhOVx1OWFhMVx1ODhmOFx1ODQzZFx1NmQxYlx1''@;'; put 'put ''OWE4Nlx1N2VkY1x1NTk4OFx1OWViYlx1NzM5Ylx1NzgwMVx1ODY4Mlx1OWE2Y1x1OWE4Mlx1NTYxYlx1NTQxN1x1NTdjYlx1NGU3MFx1OWVhNlx1NTM1Nlx1OGZjOFx1ODEwOVx1Nzc5Mlx1OTk5Mlx1ODZlZVx1NmVlMVx1ODUxM1x1NjZmY1x1NjE2Mlx1NmYyYiJdLFsiYzM0MCIsIlx1ODA3''@;'; put 'put ''ZVx1ODA4MVx1ODA4Mlx1ODA4NVx1ODA4OFx1ODA4YVx1ODA4ZCIsNSwiXHU4MDk0XHU4MDk1XHU4MDk3XHU4MDk5XHU4MDllXHU4MGEzXHU4MGE2XHU4MGE3XHU4MGE4XHU4MGFjXHU4MGIwXHU4MGIzXHU4MGI1XHU4MGI2XHU4MGI4XHU4MGI5XHU4MGJiXHU4MGM1XHU4MGM3Iiw0LCJcdTgw''@;'; put 'put ''Y2YiLDYsIlx1ODBkOFx1ODBkZlx1ODBlMFx1ODBlMlx1ODBlM1x1ODBlNlx1ODBlZVx1ODBmNVx1ODBmN1x1ODBmOVx1ODBmYlx1ODBmZVx1ODBmZlx1ODEwMFx1ODEwMVx1ODEwM1x1ODEwNFx1ODEwNVx1ODEwN1x1ODEwOFx1ODEwYiJdLFsiYzM4MCIsIlx1ODEwY1x1ODExNVx1ODExN1x1''@;'; put 'put ''ODExOVx1ODExYlx1ODExY1x1ODExZFx1ODExZiIsMTIsIlx1ODEyZFx1ODEyZVx1ODEzMFx1ODEzM1x1ODEzNFx1ODEzNVx1ODEzN1x1ODEzOSIsNCwiXHU4MTNmXHU4YzI5XHU4MjkyXHU4MzJiXHU3NmYyXHU2YzEzXHU1ZmQ5XHU4M2JkXHU3MzJiXHU4MzA1XHU5NTFhXHU2YmRiXHU3N2Ri''@;'; put 'put ''XHU5NGM2XHU1MzZmXHU4MzAyXHU1MTkyXHU1ZTNkXHU4YzhjXHU4ZDM4XHU0ZTQ4XHU3M2FiXHU2NzlhXHU2ODg1XHU5MTc2XHU5NzA5XHU3MTY0XHU2Y2ExXHU3NzA5XHU1YTkyXHU5NTQxXHU2YmNmXHU3ZjhlXHU2NjI3XHU1YmQwXHU1OWI5XHU1YTlhXHU5NWU4XHU5NWY3XHU0ZWVjXHU4''@;'; put 'put ''NDBjXHU4NDk5XHU2YWFjXHU3NmRmXHU5NTMwXHU3MzFiXHU2OGE2XHU1YjVmXHU3NzJmXHU5MTlhXHU5NzYxXHU3Y2RjXHU4ZmY3XHU4YzFjXHU1ZjI1XHU3YzczXHU3OWQ4XHU4OWM1XHU2Y2NjXHU4NzFjXHU1YmM2XHU1ZTQyXHU2OGM5XHU3NzIwXHU3ZWY1XHU1MTk1XHU1MTRkXHU1MmM5''@;'; put 'put ''XHU1YTI5XHU3ZjA1XHU5NzYyXHU4MmQ3XHU2M2NmXHU3Nzg0XHU4NWQwXHU3OWQyXHU2ZTNhXHU1ZTk5XHU1OTk5XHU4NTExXHU3MDZkXHU2YzExXHU2MmJmXHU3NmJmXHU2NTRmXHU2MGFmXHU5NWZkXHU2NjBlXHU4NzlmXHU5ZTIzXHU5NGVkXHU1NDBkXHU1NDdkXHU4YzJjXHU2NDc4Il0s''@;'; put 'put ''WyJjNDQwIiwiXHU4MTQwIiw1LCJcdTgxNDdcdTgxNDlcdTgxNGRcdTgxNGVcdTgxNGZcdTgxNTJcdTgxNTZcdTgxNTdcdTgxNThcdTgxNWIiLDQsIlx1ODE2MVx1ODE2Mlx1ODE2M1x1ODE2NFx1ODE2Nlx1ODE2OFx1ODE2YVx1ODE2Ylx1ODE2Y1x1ODE2Zlx1ODE3Mlx1ODE3M1x1ODE3NVx1''@;'; put 'put ''ODE3Nlx1ODE3N1x1ODE3OFx1ODE4MVx1ODE4MyIsNCwiXHU4MTg5XHU4MThiXHU4MThjXHU4MThkXHU4MThlXHU4MTkwXHU4MTkyIiw1LCJcdTgxOTlcdTgxOWFcdTgxOWUiLDQsIlx1ODFhNFx1ODFhNSJdLFsiYzQ4MCIsIlx1ODFhN1x1ODFhOVx1ODFhYiIsNywiXHU4MWI0Iiw1LCJcdTgx''@;'; put 'put ''YmNcdTgxYmRcdTgxYmVcdTgxYmZcdTgxYzRcdTgxYzVcdTgxYzdcdTgxYzhcdTgxYzlcdTgxY2JcdTgxY2QiLDYsIlx1NjQ3OVx1ODYxMVx1NmEyMVx1ODE5Y1x1NzhlOFx1NjQ2OVx1OWI1NFx1NjJiOVx1NjcyYlx1ODNhYlx1NThhOFx1OWVkOFx1NmNhYlx1NmYyMFx1NWJkZVx1OTY0Y1x1''@;'; put 'put ''OGMwYlx1NzI1Zlx1NjdkMFx1NjJjN1x1NzI2MVx1NGVhOVx1NTljNlx1NmJjZFx1NTg5M1x1NjZhZVx1NWU1NVx1NTJkZlx1NjE1NVx1NjcyOFx1NzZlZVx1Nzc2Nlx1NzI2N1x1N2E0Nlx1NjJmZlx1NTRlYVx1NTQ1MFx1OTRhMFx1OTBhM1x1NWExY1x1N2ViM1x1NmMxNlx1NGU0M1x1NTk3''@;'; put 'put ''Nlx1ODAxMFx1NTk0OFx1NTM1N1x1NzUzN1x1OTZiZVx1NTZjYVx1NjMyMFx1ODExMVx1NjA3Y1x1OTVmOVx1NmRkNlx1NTQ2Mlx1OTk4MVx1NTE4NVx1NWFlOVx1ODBmZFx1NTlhZVx1OTcxM1x1NTAyYVx1NmNlNVx1NWMzY1x1NjJkZlx1NGY2MFx1NTMzZlx1ODE3Ylx1OTAwNlx1NmViYVx1''@;'; put 'put ''ODUyYlx1NjJjOFx1NWU3NFx1NzhiZVx1NjRiNVx1NjM3Ylx1NWZmNVx1NWExOFx1OTE3Zlx1OWUxZlx1NWMzZlx1NjM0Zlx1ODA0Mlx1NWI3ZFx1NTU2ZVx1OTU0YVx1OTU0ZFx1NmQ4NVx1NjBhOFx1NjdlMFx1NzJkZVx1NTFkZFx1NWI4MSJdLFsiYzU0MCIsIlx1ODFkNCIsMTQsIlx1ODFl''@;'; put 'put ''NFx1ODFlNVx1ODFlNlx1ODFlOFx1ODFlOVx1ODFlYlx1ODFlZSIsNCwiXHU4MWY1Iiw1LCJcdTgxZmRcdTgxZmZcdTgyMDNcdTgyMDciLDQsIlx1ODIwZVx1ODIwZlx1ODIxMVx1ODIxM1x1ODIxNSIsNSwiXHU4MjFkXHU4MjIwXHU4MjI0XHU4MjI1XHU4MjI2XHU4MjI3XHU4MjI5XHU4MjJl''@;'; put 'put ''XHU4MjMyXHU4MjNhXHU4MjNjXHU4MjNkXHU4MjNmIl0sWyJjNTgwIiwiXHU4MjQwXHU4MjQxXHU4MjQyXHU4MjQzXHU4MjQ1XHU4MjQ2XHU4MjQ4XHU4MjRhXHU4MjRjXHU4MjRkXHU4MjRlXHU4MjUwIiw3LCJcdTgyNTlcdTgyNWJcdTgyNWNcdTgyNWRcdTgyNWVcdTgyNjAiLDcsIlx1ODI2''@;'; put 'put ''OVx1NjJlN1x1NmNkZVx1NzI1Ylx1NjI2ZFx1OTRhZVx1N2ViZFx1ODExM1x1NmQ1M1x1NTE5Y1x1NWYwNFx1NTk3NFx1NTJhYVx1NjAxMlx1NTk3M1x1NjY5Nlx1ODY1MFx1NzU5Zlx1NjMyYVx1NjFlNlx1N2NlZlx1OGJmYVx1NTRlNlx1NmIyN1x1OWUyNVx1NmJiNFx1ODVkNVx1NTQ1NVx1''@;'; put 'put ''NTA3Nlx1NmNhNFx1NTU2YVx1OGRiNFx1NzIyY1x1NWUxNVx1NjAxNVx1NzQzNlx1NjJjZFx1NjM5Mlx1NzI0Y1x1NWY5OFx1NmU0M1x1NmQzZVx1NjUwMFx1NmY1OFx1NzZkOFx1NzhkMFx1NzZmY1x1NzU1NFx1NTIyNFx1NTNkYlx1NGU1M1x1NWU5ZVx1NjVjMVx1ODAyYVx1ODBkNlx1NjI5''@;'; put 'put ''Ylx1NTQ4Nlx1NTIyOFx1NzBhZVx1ODg4ZFx1OGRkMVx1NmNlMVx1NTQ3OFx1ODBkYVx1NTdmOVx1ODhmNFx1OGQ1NFx1OTY2YVx1OTE0ZFx1NGY2OVx1NmM5Ylx1NTViN1x1NzZjNlx1NzgzMFx1NjJhOFx1NzBmOVx1NmY4ZVx1NWY2ZFx1ODRlY1x1NjhkYVx1Nzg3Y1x1N2JmN1x1ODFhOFx1''@;'; put 'put ''NjcwYlx1OWU0Zlx1NjM2N1x1NzhiMFx1NTc2Zlx1NzgxMlx1OTczOVx1NjI3OVx1NjJhYlx1NTI4OFx1NzQzNVx1NmJkNyJdLFsiYzY0MCIsIlx1ODI2YVx1ODI2Ylx1ODI2Y1x1ODI2ZFx1ODI3MVx1ODI3NVx1ODI3Nlx1ODI3N1x1ODI3OFx1ODI3Ylx1ODI3Y1x1ODI4MFx1ODI4MVx1ODI4''@;'; put 'put ''M1x1ODI4NVx1ODI4Nlx1ODI4N1x1ODI4OVx1ODI4Y1x1ODI5MFx1ODI5M1x1ODI5NFx1ODI5NVx1ODI5Nlx1ODI5YVx1ODI5Ylx1ODI5ZVx1ODJhMFx1ODJhMlx1ODJhM1x1ODJhN1x1ODJiMlx1ODJiNVx1ODJiNlx1ODJiYVx1ODJiYlx1ODJiY1x1ODJiZlx1ODJjMFx1ODJjMlx1ODJjM1x1''@;'; put 'put ''ODJjNVx1ODJjNlx1ODJjOVx1ODJkMFx1ODJkNlx1ODJkOVx1ODJkYVx1ODJkZFx1ODJlMlx1ODJlN1x1ODJlOFx1ODJlOVx1ODJlYVx1ODJlY1x1ODJlZFx1ODJlZVx1ODJmMFx1ODJmMlx1ODJmM1x1ODJmNVx1ODJmNlx1ODJmOCJdLFsiYzY4MCIsIlx1ODJmYVx1ODJmYyIsNCwiXHU4MzBh''@;'; put 'put ''XHU4MzBiXHU4MzBkXHU4MzEwXHU4MzEyXHU4MzEzXHU4MzE2XHU4MzE4XHU4MzE5XHU4MzFkIiw5LCJcdTgzMjlcdTgzMmFcdTgzMmVcdTgzMzBcdTgzMzJcdTgzMzdcdTgzM2JcdTgzM2RcdTU1NjRcdTgxM2VcdTc1YjJcdTc2YWVcdTUzMzlcdTc1ZGVcdTUwZmJcdTVjNDFcdThiNmNcdTdi''@;'; put 'put ''YzdcdTUwNGZcdTcyNDdcdTlhOTdcdTk4ZDhcdTZmMDJcdTc0ZTJcdTc5NjhcdTY0ODdcdTc3YTVcdTYyZmNcdTk4OTFcdThkMmJcdTU0YzFcdTgwNThcdTRlNTJcdTU3NmFcdTgyZjlcdTg0MGRcdTVlNzNcdTUxZWRcdTc0ZjZcdThiYzRcdTVjNGZcdTU3NjFcdTZjZmNcdTk4ODdcdTVhNDZc''@;'; put 'put ''dTc4MzRcdTliNDRcdThmZWJcdTdjOTVcdTUyNTZcdTYyNTFcdTk0ZmFcdTRlYzZcdTgzODZcdTg0NjFcdTgzZTlcdTg0YjJcdTU3ZDRcdTY3MzRcdTU3MDNcdTY2NmVcdTZkNjZcdThjMzFcdTY2ZGRcdTcwMTFcdTY3MWZcdTZiM2FcdTY4MTZcdTYyMWFcdTU5YmJcdTRlMDNcdTUxYzRcdTZm''@;'; put 'put ''MDZcdTY3ZDJcdTZjOGZcdTUxNzZcdTY4Y2JcdTU5NDdcdTZiNjdcdTc1NjZcdTVkMGVcdTgxMTBcdTlmNTBcdTY1ZDdcdTc5NDhcdTc5NDFcdTlhOTFcdThkNzdcdTVjODJcdTRlNWVcdTRmMDFcdTU0MmZcdTU5NTFcdTc4MGNcdTU2NjhcdTZjMTRcdThmYzRcdTVmMDNcdTZjN2RcdTZjZTNc''@;'; put 'put ''dThiYWJcdTYzOTAiXSxbImM3NDAiLCJcdTgzM2VcdTgzM2ZcdTgzNDFcdTgzNDJcdTgzNDRcdTgzNDVcdTgzNDhcdTgzNGEiLDQsIlx1ODM1M1x1ODM1NSIsNCwiXHU4MzVkXHU4MzYyXHU4MzcwIiw2LCJcdTgzNzlcdTgzN2FcdTgzN2UiLDYsIlx1ODM4N1x1ODM4OFx1ODM4YVx1ODM4Ylx1''@;'; put 'put ''ODM4Y1x1ODM4ZFx1ODM4Zlx1ODM5MFx1ODM5MVx1ODM5NFx1ODM5NVx1ODM5Nlx1ODM5N1x1ODM5OVx1ODM5YVx1ODM5ZFx1ODM5Zlx1ODNhMSIsNiwiXHU4M2FjXHU4M2FkXHU4M2FlIl0sWyJjNzgwIiwiXHU4M2FmXHU4M2I1XHU4M2JiXHU4M2JlXHU4M2JmXHU4M2MyXHU4M2MzXHU4M2M0''@;'; put 'put ''XHU4M2M2XHU4M2M4XHU4M2M5XHU4M2NiXHU4M2NkXHU4M2NlXHU4M2QwXHU4M2QxXHU4M2QyXHU4M2QzXHU4M2Q1XHU4M2Q3XHU4M2Q5XHU4M2RhXHU4M2RiXHU4M2RlXHU4M2UyXHU4M2UzXHU4M2U0XHU4M2U2XHU4M2U3XHU4M2U4XHU4M2ViXHU4M2VjXHU4M2VkXHU2MDcwXHU2ZDNkXHU3''@;'; put 'put ''Mjc1XHU2MjY2XHU5NDhlXHU5NGM1XHU1MzQzXHU4ZmMxXHU3YjdlXHU0ZWRmXHU4YzI2XHU0ZTdlXHU5ZWQ0XHU5NGIxXHU5NGIzXHU1MjRkXHU2ZjVjXHU5MDYzXHU2ZDQ1XHU4YzM0XHU1ODExXHU1ZDRjXHU2YjIwXHU2YjQ5XHU2N2FhXHU1NDViXHU4MTU0XHU3ZjhjXHU1ODk5XHU4NTM3''@;'; put 'put ''XHU1ZjNhXHU2MmEyXHU2YTQ3XHU5NTM5XHU2NTcyXHU2MDg0XHU2ODY1XHU3N2E3XHU0ZTU0XHU0ZmE4XHU1ZGU3XHU5Nzk4XHU2NGFjXHU3ZmQ4XHU1Y2VkXHU0ZmNmXHU3YThkXHU1MjA3XHU4MzA0XHU0ZTE0XHU2MDJmXHU3YTgzXHU5NGE2XHU0ZmI1XHU0ZWIyXHU3OWU2XHU3NDM0XHU1''@;'; put 'put ''MmU0XHU4MmI5XHU2NGQyXHU3OWJkXHU1YmRkXHU2YzgxXHU5NzUyXHU4ZjdiXHU2YzIyXHU1MDNlXHU1MzdmXHU2ZTA1XHU2NGNlXHU2Njc0XHU2YzMwXHU2MGM1XHU5ODc3XHU4YmY3XHU1ZTg2XHU3NDNjXHU3YTc3XHU3OWNiXHU0ZTE4XHU5MGIxXHU3NDAzXHU2YzQyXHU1NmRhXHU5MTRi''@;'; put 'put ''XHU2Y2M1XHU4ZDhiXHU1MzNhXHU4NmM2XHU2NmYyXHU4ZWFmXHU1YzQ4XHU5YTcxXHU2ZTIwIl0sWyJjODQwIiwiXHU4M2VlXHU4M2VmXHU4M2YzIiw0LCJcdTgzZmFcdTgzZmJcdTgzZmNcdTgzZmVcdTgzZmZcdTg0MDBcdTg0MDJcdTg0MDVcdTg0MDdcdTg0MDhcdTg0MDlcdTg0MGFcdTg0''@;'; put 'put ''MTBcdTg0MTIiLDUsIlx1ODQxOVx1ODQxYVx1ODQxYlx1ODQxZSIsNSwiXHU4NDI5Iiw3LCJcdTg0MzIiLDUsIlx1ODQzOVx1ODQzYVx1ODQzYlx1ODQzZSIsNywiXHU4NDQ3XHU4NDQ4XHU4NDQ5Il0sWyJjODgwIiwiXHU4NDRhIiw2LCJcdTg0NTIiLDQsIlx1ODQ1OFx1ODQ1ZFx1ODQ1ZVx1''@;'; put 'put ''ODQ1Zlx1ODQ2MFx1ODQ2Mlx1ODQ2NCIsNCwiXHU4NDZhXHU4NDZlXHU4NDZmXHU4NDcwXHU4NDcyXHU4NDc0XHU4NDc3XHU4NDc5XHU4NDdiXHU4NDdjXHU1M2Q2XHU1YTM2XHU5ZjhiXHU4ZGEzXHU1M2JiXHU1NzA4XHU5OGE3XHU2NzQzXHU5MTliXHU2Y2M5XHU1MTY4XHU3NWNhXHU2MmYz''@;'; put 'put ''XHU3MmFjXHU1MjM4XHU1MjlkXHU3ZjNhXHU3MDk0XHU3NjM4XHU1Mzc0XHU5ZTRhXHU2OWI3XHU3ODZlXHU5NmMwXHU4OGQ5XHU3ZmE0XHU3MTM2XHU3MWMzXHU1MTg5XHU2N2QzXHU3NGU0XHU1OGU0XHU2NTE4XHU1NmI3XHU4YmE5XHU5OTc2XHU2MjcwXHU3ZWQ1XHU2MGY5XHU3MGVkXHU1''@;'; put 'put ''OGVjXHU0ZWMxXHU0ZWJhXHU1ZmNkXHU5N2U3XHU0ZWZiXHU4YmE0XHU1MjAzXHU1OThhXHU3ZWFiXHU2MjU0XHU0ZWNkXHU2NWU1XHU2MjBlXHU4MzM4XHU4NGM5XHU4MzYzXHU4NzhkXHU3MTk0XHU2ZWI2XHU1YmI5XHU3ZWQyXHU1MTk3XHU2M2M5XHU2N2Q0XHU4MDg5XHU4MzM5XHU4ODE1''@;'; put 'put ''XHU1MTEyXHU1YjdhXHU1OTgyXHU4ZmIxXHU0ZTczXHU2YzVkXHU1MTY1XHU4OTI1XHU4ZjZmXHU5NjJlXHU4NTRhXHU3NDVlXHU5NTEwXHU5NWYwXHU2ZGE2XHU4MmU1XHU1ZjMxXHU2NDkyXHU2ZDEyXHU4NDI4XHU4MTZlXHU5Y2MzXHU1ODVlXHU4ZDViXHU0ZTA5XHU1M2MxIl0sWyJjOTQw''@;'; put 'put ''IiwiXHU4NDdkIiw0LCJcdTg0ODNcdTg0ODRcdTg0ODVcdTg0ODZcdTg0OGFcdTg0OGRcdTg0OGYiLDcsIlx1ODQ5OFx1ODQ5YVx1ODQ5Ylx1ODQ5ZFx1ODQ5ZVx1ODQ5Zlx1ODRhMFx1ODRhMiIsMTIsIlx1ODRiMFx1ODRiMVx1ODRiM1x1ODRiNVx1ODRiNlx1ODRiN1x1ODRiYlx1ODRiY1x1''@;'; put 'put ''ODRiZVx1ODRjMFx1ODRjMlx1ODRjM1x1ODRjNVx1ODRjNlx1ODRjN1x1ODRjOFx1ODRjYlx1ODRjY1x1ODRjZVx1ODRjZlx1ODRkMlx1ODRkNFx1ODRkNVx1ODRkNyJdLFsiYzk4MCIsIlx1ODRkOCIsNCwiXHU4NGRlXHU4NGUxXHU4NGUyXHU4NGU0XHU4NGU3Iiw0LCJcdTg0ZWRcdTg0ZWVc''@;'; put 'put ''dTg0ZWZcdTg0ZjEiLDEwLCJcdTg0ZmRcdTg0ZmVcdTg1MDBcdTg1MDFcdTg1MDJcdTRmMWVcdTY1NjNcdTY4NTFcdTU1ZDNcdTRlMjdcdTY0MTRcdTlhOWFcdTYyNmJcdTVhYzJcdTc0NWZcdTgyNzJcdTZkYTlcdTY4ZWVcdTUwZTdcdTgzOGVcdTc4MDJcdTY3NDBcdTUyMzlcdTZjOTlcdTdl''@;'; put 'put ''YjFcdTUwYmJcdTU1NjVcdTcxNWVcdTdiNWJcdTY2NTJcdTczY2FcdTgyZWJcdTY3NDlcdTVjNzFcdTUyMjBcdTcxN2RcdTg4NmJcdTk1ZWFcdTk2NTVcdTY0YzVcdThkNjFcdTgxYjNcdTU1ODRcdTZjNTVcdTYyNDdcdTdmMmVcdTU4OTJcdTRmMjRcdTU1NDZcdThkNGZcdTY2NGNcdTRlMGFc''@;'; put 'put ''dTVjMWFcdTg4ZjNcdTY4YTJcdTYzNGVcdTdhMGRcdTcwZTdcdTgyOGRcdTUyZmFcdTk3ZjZcdTVjMTFcdTU0ZThcdTkwYjVcdTdlY2RcdTU5NjJcdThkNGFcdTg2YzdcdTgyMGNcdTgyMGRcdThkNjZcdTY0NDRcdTVjMDRcdTYxNTFcdTZkODlcdTc5M2VcdThiYmVcdTc4MzdcdTc1MzNcdTU0''@;'; put 'put ''N2JcdTRmMzhcdThlYWJcdTZkZjFcdTVhMjBcdTdlYzVcdTc5NWVcdTZjODhcdTViYTFcdTVhNzZcdTc1MWFcdTgwYmVcdTYxNGVcdTZlMTdcdTU4ZjBcdTc1MWZcdTc1MjVcdTcyNzJcdTUzNDdcdTdlZjMiXSxbImNhNDAiLCJcdTg1MDMiLDgsIlx1ODUwZFx1ODUwZVx1ODUwZlx1ODUxMFx1''@;'; put 'put ''ODUxMlx1ODUxNFx1ODUxNVx1ODUxNlx1ODUxOFx1ODUxOVx1ODUxYlx1ODUxY1x1ODUxZFx1ODUxZVx1ODUyMFx1ODUyMiIsOCwiXHU4NTJkIiw5LCJcdTg1M2UiLDQsIlx1ODU0NFx1ODU0NVx1ODU0Nlx1ODU0N1x1ODU0YiIsMTBdLFsiY2E4MCIsIlx1ODU1N1x1ODU1OFx1ODU1YVx1ODU1''@;'; put 'put ''Ylx1ODU1Y1x1ODU1ZFx1ODU1ZiIsNCwiXHU4NTY1XHU4NTY2XHU4NTY3XHU4NTY5Iiw4LCJcdTg1NzNcdTg1NzVcdTg1NzZcdTg1NzdcdTg1NzhcdTg1N2NcdTg1N2RcdTg1N2ZcdTg1ODBcdTg1ODFcdTc3MDFcdTc2ZGJcdTUyNjlcdTgwZGNcdTU3MjNcdTVlMDhcdTU5MzFcdTcyZWVcdTY1''@;'; put 'put ''YmRcdTZlN2ZcdThiZDdcdTVjMzhcdTg2NzFcdTUzNDFcdTc3ZjNcdTYyZmVcdTY1ZjZcdTRlYzBcdTk4ZGZcdTg2ODBcdTViOWVcdThiYzZcdTUzZjJcdTc3ZTJcdTRmN2ZcdTVjNGVcdTlhNzZcdTU5Y2JcdTVmMGZcdTc5M2FcdTU4ZWJcdTRlMTZcdTY3ZmZcdTRlOGJcdTYyZWRcdThhOTNc''@;'; put 'put ''dTkwMWRcdTUyYmZcdTY2MmZcdTU1ZGNcdTU2NmNcdTkwMDJcdTRlZDVcdTRmOGRcdTkxY2FcdTk5NzBcdTZjMGZcdTVlMDJcdTYwNDNcdTViYTRcdTg5YzZcdThiZDVcdTY1MzZcdTYyNGJcdTk5OTZcdTViODhcdTViZmZcdTYzODhcdTU1MmVcdTUzZDdcdTc2MjZcdTUxN2RcdTg1MmNcdTY3''@;'; put 'put ''YTJcdTY4YjNcdTZiOGFcdTYyOTJcdThmOTNcdTUzZDRcdTgyMTJcdTZkZDFcdTc1OGZcdTRlNjZcdThkNGVcdTViNzBcdTcxOWZcdTg1YWZcdTY2OTFcdTY2ZDlcdTdmNzJcdTg3MDBcdTllY2RcdTlmMjBcdTVjNWVcdTY3MmZcdThmZjBcdTY4MTFcdTY3NWZcdTYyMGRcdTdhZDZcdTU4ODVc''@;'; put 'put ''dTVlYjZcdTY1NzBcdTZmMzEiXSxbImNiNDAiLCJcdTg1ODJcdTg1ODNcdTg1ODZcdTg1ODgiLDYsIlx1ODU5MCIsMTAsIlx1ODU5ZCIsNiwiXHU4NWE1XHU4NWE2XHU4NWE3XHU4NWE5XHU4NWFiXHU4NWFjXHU4NWFkXHU4NWIxIiw1LCJcdTg1YjhcdTg1YmEiLDYsIlx1ODVjMiIsNiwiXHU4''@;'; put 'put ''NWNhIiw0LCJcdTg1ZDFcdTg1ZDIiXSxbImNiODAiLCJcdTg1ZDRcdTg1ZDYiLDUsIlx1ODVkZCIsNiwiXHU4NWU1XHU4NWU2XHU4NWU3XHU4NWU4XHU4NWVhIiwxNCwiXHU2MDU1XHU1MjM3XHU4MDBkXHU2NDU0XHU4ODcwXHU3NTI5XHU1ZTA1XHU2ODEzXHU2MmY0XHU5NzFjXHU1M2NjXHU3''@;'; put 'put ''MjNkXHU4YzAxXHU2YzM0XHU3NzYxXHU3YTBlXHU1NDJlXHU3N2FjXHU5ODdhXHU4MjFjXHU4YmY0XHU3ODU1XHU2NzE0XHU3MGMxXHU2NWFmXHU2NDk1XHU1NjM2XHU2MDFkXHU3OWMxXHU1M2Y4XHU0ZTFkXHU2YjdiXHU4MDg2XHU1YmZhXHU1NWUzXHU1NmRiXHU0ZjNhXHU0ZjNjXHU5OTcy''@;'; put 'put ''XHU1ZGYzXHU2NzdlXHU4MDM4XHU2MDAyXHU5ODgyXHU5MDAxXHU1YjhiXHU4YmJjXHU4YmY1XHU2NDFjXHU4MjU4XHU2NGRlXHU1NWZkXHU4MmNmXHU5MTY1XHU0ZmQ3XHU3ZDIwXHU5MDFmXHU3YzlmXHU1MGYzXHU1ODUxXHU2ZWFmXHU1YmJmXHU4YmM5XHU4MDgzXHU5MTc4XHU4NDljXHU3''@;'; put 'put ''Yjk3XHU4NjdkXHU5NjhiXHU5NjhmXHU3ZWU1XHU5YWQzXHU3ODhlXHU1YzgxXHU3YTU3XHU5MDQyXHU5NmE3XHU3OTVmXHU1YjU5XHU2MzVmXHU3YjBiXHU4NGQxXHU2OGFkXHU1NTA2XHU3ZjI5XHU3NDEwXHU3ZDIyXHU5NTAxXHU2MjQwXHU1ODRjXHU0ZWQ2XHU1YjgzXHU1OTc5XHU1ODU0''@;'; put 'put ''Il0sWyJjYzQwIiwiXHU4NWY5XHU4NWZhXHU4NWZjXHU4NWZkXHU4NWZlXHU4NjAwIiw0LCJcdTg2MDYiLDEwLCJcdTg2MTJcdTg2MTNcdTg2MTRcdTg2MTVcdTg2MTciLDE1LCJcdTg2MjhcdTg2MmEiLDEzLCJcdTg2MzlcdTg2M2FcdTg2M2JcdTg2M2RcdTg2M2VcdTg2M2ZcdTg2NDAiXSxb''@;'; put 'put ''ImNjODAiLCJcdTg2NDEiLDExLCJcdTg2NTJcdTg2NTNcdTg2NTUiLDQsIlx1ODY1Ylx1ODY1Y1x1ODY1ZFx1ODY1Zlx1ODY2MFx1ODY2MVx1ODY2MyIsNywiXHU3MzZkXHU2MzFlXHU4ZTRiXHU4ZTBmXHU4MGNlXHU4MmQ0XHU2MmFjXHU1M2YwXHU2Y2YwXHU5MTVlXHU1OTJhXHU2MDAxXHU2''@;'; put 'put ''YzcwXHU1NzRkXHU2NDRhXHU4ZDJhXHU3NjJiXHU2ZWU5XHU1NzViXHU2YTgwXHU3NWYwXHU2ZjZkXHU4YzJkXHU4YzA4XHU1NzY2XHU2YmVmXHU4ODkyXHU3OGIzXHU2M2EyXHU1M2Y5XHU3MGFkXHU2YzY0XHU1ODU4XHU2NDJhXHU1ODAyXHU2OGUwXHU4MTliXHU1NTEwXHU3Y2Q2XHU1MDE4''@;'; put 'put ''XHU4ZWJhXHU2ZGNjXHU4ZDlmXHU3MGViXHU2MzhmXHU2ZDliXHU2ZWQ0XHU3ZWU2XHU4NDA0XHU2ODQzXHU5MDAzXHU2ZGQ4XHU5Njc2XHU4YmE4XHU1OTU3XHU3Mjc5XHU4NWU0XHU4MTdlXHU3NWJjXHU4YThhXHU2OGFmXHU1MjU0XHU4ZTIyXHU5NTExXHU2M2QwXHU5ODk4XHU4ZTQ0XHU1''@;'; put 'put ''NTdjXHU0ZjUzXHU2NmZmXHU1NjhmXHU2MGQ1XHU2ZDk1XHU1MjQzXHU1YzQ5XHU1OTI5XHU2ZGZiXHU1ODZiXHU3NTMwXHU3NTFjXHU2MDZjXHU4MjE0XHU4MTQ2XHU2MzExXHU2NzYxXHU4ZmUyXHU3NzNhXHU4ZGYzXHU4ZDM0XHU5NGMxXHU1ZTE2XHU1Mzg1XHU1NDJjXHU3MGMzIl0sWyJj''@;'; put 'put ''ZDQwIiwiXHU4NjZkXHU4NjZmXHU4NjcwXHU4NjcyIiw2LCJcdTg2ODMiLDYsIlx1ODY4ZSIsNCwiXHU4Njk0XHU4Njk2Iiw1LCJcdTg2OWUiLDQsIlx1ODZhNVx1ODZhNlx1ODZhYlx1ODZhZFx1ODZhZVx1ODZiMlx1ODZiM1x1ODZiN1x1ODZiOFx1ODZiOVx1ODZiYiIsNCwiXHU4NmMxXHU4''@;'; put 'put ''NmMyXHU4NmMzXHU4NmM1XHU4NmM4XHU4NmNjXHU4NmNkXHU4NmQyXHU4NmQzXHU4NmQ1XHU4NmQ2XHU4NmQ3XHU4NmRhXHU4NmRjIl0sWyJjZDgwIiwiXHU4NmRkXHU4NmUwXHU4NmUxXHU4NmUyXHU4NmUzXHU4NmU1XHU4NmU2XHU4NmU3XHU4NmU4XHU4NmVhXHU4NmViXHU4NmVjXHU4NmVm''@;'; put 'put ''XHU4NmY1XHU4NmY2XHU4NmY3XHU4NmZhXHU4NmZiXHU4NmZjXHU4NmZkXHU4NmZmXHU4NzAxXHU4NzA0XHU4NzA1XHU4NzA2XHU4NzBiXHU4NzBjXHU4NzBlXHU4NzBmXHU4NzEwXHU4NzExXHU4NzE0XHU4NzE2XHU2YzQwXHU1ZWY3XHU1MDVjXHU0ZWFkXHU1ZWFkXHU2MzNhXHU4MjQ3XHU5''@;'; put 'put ''MDFhXHU2ODUwXHU5MTZlXHU3N2IzXHU1NDBjXHU5NGRjXHU1ZjY0XHU3YWU1XHU2ODc2XHU2MzQ1XHU3YjUyXHU3ZWRmXHU3NWRiXHU1MDc3XHU2Mjk1XHU1OTM0XHU5MDBmXHU1MWY4XHU3OWMzXHU3YTgxXHU1NmZlXHU1ZjkyXHU5MDE0XHU2ZDgyXHU1YzYwXHU1NzFmXHU1NDEwXHU1MTU0''@;'; put 'put ''XHU2ZTRkXHU1NmUyXHU2M2E4XHU5ODkzXHU4MTdmXHU4NzE1XHU4OTJhXHU5MDAwXHU1NDFlXHU1YzZmXHU4MWMwXHU2MmQ2XHU2MjU4XHU4MTMxXHU5ZTM1XHU5NjQwXHU5YTZlXHU5YTdjXHU2OTJkXHU1OWE1XHU2MmQzXHU1NTNlXHU2MzE2XHU1NGM3XHU4NmQ5XHU2ZDNjXHU1YTAzXHU3''@;'; put 'put ''NGU2XHU4ODljXHU2YjZhXHU1OTE2XHU4YzRjXHU1ZjJmXHU2ZTdlXHU3M2E5XHU5ODdkXHU0ZTM4XHU3MGY3XHU1YjhjXHU3ODk3XHU2MzNkXHU2NjVhXHU3Njk2XHU2MGNiXHU1YjliXHU1YTQ5XHU0ZTA3XHU4MTU1XHU2YzZhXHU3MzhiXHU0ZWExXHU2Nzg5XHU3ZjUxXHU1ZjgwXHU2NWZh''@;'; put 'put ''XHU2NzFiXHU1ZmQ4XHU1OTg0XHU1YTAxIl0sWyJjZTQwIiwiXHU4NzE5XHU4NzFiXHU4NzFkXHU4NzFmXHU4NzIwXHU4NzI0XHU4NzI2XHU4NzI3XHU4NzI4XHU4NzJhXHU4NzJiXHU4NzJjXHU4NzJkXHU4NzJmXHU4NzMwXHU4NzMyXHU4NzMzXHU4NzM1XHU4NzM2XHU4NzM4XHU4NzM5XHU4''@;'; put 'put ''NzNhXHU4NzNjXHU4NzNkXHU4NzQwIiw2LCJcdTg3NGFcdTg3NGJcdTg3NGRcdTg3NGZcdTg3NTBcdTg3NTFcdTg3NTJcdTg3NTRcdTg3NTVcdTg3NTZcdTg3NThcdTg3NWEiLDUsIlx1ODc2MVx1ODc2Mlx1ODc2NiIsNywiXHU4NzZmXHU4NzcxXHU4NzcyXHU4NzczXHU4Nzc1Il0sWyJjZTgw''@;'; put 'put ''IiwiXHU4Nzc3XHU4Nzc4XHU4Nzc5XHU4NzdhXHU4NzdmXHU4NzgwXHU4NzgxXHU4Nzg0XHU4Nzg2XHU4Nzg3XHU4Nzg5XHU4NzhhXHU4NzhjXHU4NzhlIiw0LCJcdTg3OTRcdTg3OTVcdTg3OTZcdTg3OTgiLDYsIlx1ODdhMCIsNCwiXHU1ZGNkXHU1ZmFlXHU1MzcxXHU5N2U2XHU4ZmRkXHU2''@;'; put 'put ''ODQ1XHU1NmY0XHU1NTJmXHU2MGRmXHU0ZTNhXHU2ZjRkXHU3ZWY0XHU4MmM3XHU4NDBlXHU1OWQ0XHU0ZjFmXHU0ZjJhXHU1YzNlXHU3ZWFjXHU2NzJhXHU4NTFhXHU1NDczXHU3NTRmXHU4MGMzXHU1NTgyXHU5YjRmXHU0ZjRkXHU2ZTJkXHU4YzEzXHU1YzA5XHU2MTcwXHU1MzZiXHU3NjFm''@;'; put 'put ''XHU2ZTI5XHU4NjhhXHU2NTg3XHU5NWZiXHU3ZWI5XHU1NDNiXHU3YTMzXHU3ZDBhXHU5NWVlXHU1NWUxXHU3ZmMxXHU3NGVlXHU2MzFkXHU4NzE3XHU2ZGExXHU3YTlkXHU2MjExXHU2NWExXHU1MzY3XHU2M2UxXHU2YzgzXHU1ZGViXHU1NDVjXHU5NGE4XHU0ZTRjXHU2YzYxXHU4YmVjXHU1''@;'; put 'put ''YzRiXHU2NWUwXHU4MjljXHU2OGE3XHU1NDNlXHU1NDM0XHU2YmNiXHU2YjY2XHU0ZTk0XHU2MzQyXHU1MzQ4XHU4MjFlXHU0ZjBkXHU0ZmFlXHU1NzVlXHU2MjBhXHU5NmZlXHU2NjY0XHU3MjY5XHU1MmZmXHU1MmExXHU2MDlmXHU4YmVmXHU2NjE0XHU3MTk5XHU2NzkwXHU4OTdmXHU3ODUy''@;'; put 'put ''XHU3N2ZkXHU2NjcwXHU1NjNiXHU1NDM4XHU5NTIxXHU3MjdhIl0sWyJjZjQwIiwiXHU4N2E1XHU4N2E2XHU4N2E3XHU4N2E5XHU4N2FhXHU4N2FlXHU4N2IwXHU4N2IxXHU4N2IyXHU4N2I0XHU4N2I2XHU4N2I3XHU4N2I4XHU4N2I5XHU4N2JiXHU4N2JjXHU4N2JlXHU4N2JmXHU4N2MxIiw0''@;'; put 'put ''LCJcdTg3YzdcdTg3YzhcdTg3YzlcdTg3Y2MiLDQsIlx1ODdkNCIsNiwiXHU4N2RjXHU4N2RkXHU4N2RlXHU4N2RmXHU4N2UxXHU4N2UyXHU4N2UzXHU4N2U0XHU4N2U2XHU4N2U3XHU4N2U4XHU4N2U5XHU4N2ViXHU4N2VjXHU4N2VkXHU4N2VmIiw5XSxbImNmODAiLCJcdTg3ZmFcdTg3ZmJc''@;'; put 'put ''dTg3ZmNcdTg3ZmRcdTg3ZmZcdTg4MDBcdTg4MDFcdTg4MDJcdTg4MDQiLDUsIlx1ODgwYiIsNywiXHU4ODE0XHU4ODE3XHU4ODE4XHU4ODE5XHU4ODFhXHU4ODFjIiw0LCJcdTg4MjNcdTdhMDBcdTYwNmZcdTVlMGNcdTYwODlcdTgxOWRcdTU5MTVcdTYwZGNcdTcxODRcdTcwZWZcdTZlYWFc''@;'; put 'put ''dTZjNTBcdTcyODBcdTZhODRcdTg4YWRcdTVlMmRcdTRlNjBcdTVhYjNcdTU1OWNcdTk0ZTNcdTZkMTdcdTdjZmJcdTk2OTlcdTYyMGZcdTdlYzZcdTc3OGVcdTg2N2VcdTUzMjNcdTk3MWVcdThmOTZcdTY2ODdcdTVjZTFcdTRmYTBcdTcyZWRcdTRlMGJcdTUzYTZcdTU5MGZcdTU0MTNcdTYz''@;'; put 'put ''ODBcdTk1MjhcdTUxNDhcdTRlZDlcdTljOWNcdTdlYTRcdTU0YjhcdThkMjRcdTg4NTRcdTgyMzdcdTk1ZjJcdTZkOGVcdTVmMjZcdTVhY2NcdTY2M2VcdTk2NjlcdTczYjBcdTczMmVcdTUzYmZcdTgxN2FcdTk5ODVcdTdmYTFcdTViYWFcdTk2NzdcdTk2NTBcdTdlYmZcdTc2ZjhcdTUzYTJc''@;'; put 'put ''dTk1NzZcdTk5OTlcdTdiYjFcdTg5NDRcdTZlNThcdTRlNjFcdTdmZDRcdTc5NjVcdThiZTZcdTYwZjNcdTU0Y2RcdTRlYWJcdTk4NzlcdTVkZjdcdTZhNjFcdTUwY2ZcdTU0MTFcdThjNjFcdTg0MjdcdTc4NWRcdTk3MDRcdTUyNGFcdTU0ZWVcdTU2YTNcdTk1MDBcdTZkODhcdTViYjVcdTZk''@;'; put 'put ''YzZcdTY2NTMiXSxbImQwNDAiLCJcdTg4MjQiLDEzLCJcdTg4MzMiLDUsIlx1ODgzYVx1ODgzYlx1ODgzZFx1ODgzZVx1ODgzZlx1ODg0MVx1ODg0Mlx1ODg0M1x1ODg0NiIsNSwiXHU4ODRlIiw1LCJcdTg4NTVcdTg4NTZcdTg4NThcdTg4NWEiLDYsIlx1ODg2Nlx1ODg2N1x1ODg2YVx1ODg2''@;'; put 'put ''ZFx1ODg2Zlx1ODg3MVx1ODg3M1x1ODg3NFx1ODg3NVx1ODg3Nlx1ODg3OFx1ODg3OVx1ODg3YSJdLFsiZDA4MCIsIlx1ODg3Ylx1ODg3Y1x1ODg4MFx1ODg4M1x1ODg4Nlx1ODg4N1x1ODg4OVx1ODg4YVx1ODg4Y1x1ODg4ZVx1ODg4Zlx1ODg5MFx1ODg5MVx1ODg5M1x1ODg5NFx1ODg5NVx1''@;'; put 'put ''ODg5NyIsNCwiXHU4ODlkIiw0LCJcdTg4YTNcdTg4YTUiLDUsIlx1NWMwZlx1NWI1ZFx1NjgyMVx1ODA5Nlx1NTU3OFx1N2IxMVx1NjU0OFx1Njk1NFx1NGU5Ylx1NmI0N1x1ODc0ZVx1OTc4Ylx1NTM0Zlx1NjMxZlx1NjQzYVx1OTBhYVx1NjU5Y1x1ODBjMVx1OGMxMFx1NTE5OVx1NjhiMFx1''@;'; put 'put ''NTM3OFx1ODdmOVx1NjFjOFx1NmNjNFx1NmNmYlx1OGMyMlx1NWM1MVx1ODVhYVx1ODJhZlx1OTUwY1x1NmIyM1x1OGY5Ylx1NjViMFx1NWZmYlx1NWZjM1x1NGZlMVx1ODg0NVx1NjYxZlx1ODE2NVx1NzMyOVx1NjBmYVx1NTE3NFx1NTIxMVx1NTc4Ylx1NWY2Mlx1OTBhMlx1ODg0Y1x1OTE5''@;'; put 'put ''Mlx1NWU3OFx1Njc0Zlx1NjAyN1x1NTlkM1x1NTE0NFx1NTFmNlx1ODBmOFx1NTMwOFx1NmM3OVx1OTZjNFx1NzE4YVx1NGYxMVx1NGZlZVx1N2Y5ZVx1NjczZFx1NTVjNVx1OTUwOFx1NzljMFx1ODg5Nlx1N2VlM1x1NTg5Zlx1NjIwY1x1OTcwMFx1ODY1YVx1NTYxOFx1OTg3Ylx1NWY5MFx1''@;'; put 'put ''OGJiOFx1ODRjNFx1OTE1N1x1NTNkOVx1NjVlZFx1NWU4Zlx1NzU1Y1x1NjA2NFx1N2Q2ZVx1NWE3Zlx1N2VlYVx1N2VlZFx1OGY2OVx1NTVhN1x1NWJhM1x1NjBhY1x1NjVjYlx1NzM4NCJdLFsiZDE0MCIsIlx1ODhhY1x1ODhhZVx1ODhhZlx1ODhiMFx1ODhiMiIsNCwiXHU4OGI4XHU4OGI5''@;'; put 'put ''XHU4OGJhXHU4OGJiXHU4OGJkXHU4OGJlXHU4OGJmXHU4OGMwXHU4OGMzXHU4OGM0XHU4OGM3XHU4OGM4XHU4OGNhXHU4OGNiXHU4OGNjXHU4OGNkXHU4OGNmXHU4OGQwXHU4OGQxXHU4OGQzXHU4OGQ2XHU4OGQ3XHU4OGRhIiw0LCJcdTg4ZTBcdTg4ZTFcdTg4ZTZcdTg4ZTdcdTg4ZTkiLDYs''@;'; put 'put ''Ilx1ODhmMlx1ODhmNVx1ODhmNlx1ODhmN1x1ODhmYVx1ODhmYlx1ODhmZFx1ODhmZlx1ODkwMFx1ODkwMVx1ODkwMyIsNV0sWyJkMTgwIiwiXHU4OTA5XHU4OTBiIiw0LCJcdTg5MTFcdTg5MTQiLDQsIlx1ODkxYyIsNCwiXHU4OTIyXHU4OTIzXHU4OTI0XHU4OTI2XHU4OTI3XHU4OTI4XHU4''@;'; put 'put ''OTI5XHU4OTJjXHU4OTJkXHU4OTJlXHU4OTJmXHU4OTMxXHU4OTMyXHU4OTMzXHU4OTM1XHU4OTM3XHU5MDA5XHU3NjYzXHU3NzI5XHU3ZWRhXHU5Nzc0XHU4NTliXHU1YjY2XHU3YTc0XHU5NmVhXHU4ODQwXHU1MmNiXHU3MThmXHU1ZmFhXHU2NWVjXHU4YmUyXHU1YmZiXHU5YTZmXHU1ZGUx''@;'; put 'put ''XHU2Yjg5XHU2YzViXHU4YmFkXHU4YmFmXHU5MDBhXHU4ZmM1XHU1MzhiXHU2MmJjXHU5ZTI2XHU5ZTJkXHU1NDQwXHU0ZTJiXHU4MmJkXHU3MjU5XHU4NjljXHU1ZDE2XHU4ODU5XHU2ZGFmXHU5NmM1XHU1NGQxXHU0ZTlhXHU4YmI2XHU3MTA5XHU1NGJkXHU5NjA5XHU3MGRmXHU2ZGY5XHU3''@;'; put 'put ''NmQwXHU0ZTI1XHU3ODE0XHU4NzEyXHU1Y2E5XHU1ZWY2XHU4YTAwXHU5ODljXHU5NjBlXHU3MDhlXHU2Y2JmXHU1OTQ0XHU2M2E5XHU3NzNjXHU4ODRkXHU2ZjE0XHU4MjczXHU1ODMwXHU3MWQ1XHU1MzhjXHU3ODFhXHU5NmMxXHU1NTAxXHU1ZjY2XHU3MTMwXHU1YmI0XHU4YzFhXHU5YThj''@;'; put 'put ''XHU2YjgzXHU1OTJlXHU5ZTJmXHU3OWU3XHU2NzY4XHU2MjZjXHU0ZjZmXHU3NWExXHU3ZjhhXHU2ZDBiXHU5NjMzXHU2YzI3XHU0ZWYwXHU3NWQyXHU1MTdiXHU2ODM3XHU2ZjNlXHU5MDgwXHU4MTcwXHU1OTk2XHU3NDc2Il0sWyJkMjQwIiwiXHU4OTM4Iiw4LCJcdTg5NDJcdTg5NDNcdTg5''@;'; put 'put ''NDUiLDI0LCJcdTg5NjAiLDUsIlx1ODk2NyIsMTksIlx1ODk3YyJdLFsiZDI4MCIsIlx1ODk3ZFx1ODk3ZVx1ODk4MFx1ODk4Mlx1ODk4NFx1ODk4NVx1ODk4NyIsMjYsIlx1NjQ0N1x1NWMyN1x1OTA2NVx1N2E5MVx1OGMyM1x1NTlkYVx1NTRhY1x1ODIwMFx1ODM2Zlx1ODk4MVx1ODAwMFx1''@;'; put 'put ''NjkzMFx1NTY0ZVx1ODAzNlx1NzIzN1x1OTFjZVx1NTFiNlx1NGU1Zlx1OTg3NVx1NjM5Nlx1NGUxYVx1NTNmNlx1NjZmM1x1ODE0Ylx1NTkxY1x1NmRiMlx1NGUwMFx1NThmOVx1NTMzYlx1NjNkNlx1OTRmMVx1NGY5ZFx1NGYwYVx1ODg2M1x1OTg5MFx1NTkzN1x1OTA1N1x1NzlmYlx1NGVl''@;'; put 'put ''YVx1ODBmMFx1NzU5MVx1NmM4Mlx1NWI5Y1x1NTllOFx1NWY1ZFx1NjkwNVx1ODY4MVx1NTAxYVx1NWRmMlx1NGU1OVx1NzdlM1x1NGVlNVx1ODI3YVx1NjI5MVx1NjYxM1x1OTA5MVx1NWM3OVx1NGViZlx1NWY3OVx1ODFjNlx1OTAzOFx1ODA4NFx1NzVhYlx1NGVhNlx1ODhkNFx1NjEwZlx1''@;'; put 'put ''NmJjNVx1NWZjNlx1NGU0OVx1NzZjYVx1NmVhMlx1OGJlM1x1OGJhZVx1OGMwYVx1OGJkMVx1NWYwMlx1N2ZmY1x1N2ZjY1x1N2VjZVx1ODMzNVx1ODM2Ylx1NTZlMFx1NmJiN1x1OTdmM1x1OTYzNFx1NTlmYlx1NTQxZlx1OTRmNlx1NmRlYlx1NWJjNVx1OTk2ZVx1NWMzOVx1NWYxNVx1OTY5''@;'; put 'put ''MCJdLFsiZDM0MCIsIlx1ODlhMiIsMzAsIlx1ODljM1x1ODljZFx1ODlkM1x1ODlkNFx1ODlkNVx1ODlkN1x1ODlkOFx1ODlkOVx1ODlkYlx1ODlkZFx1ODlkZlx1ODllMFx1ODllMVx1ODllMlx1ODllNFx1ODllN1x1ODllOFx1ODllOVx1ODllYVx1ODllY1x1ODllZFx1ODllZVx1ODlmMFx1''@;'; put 'put ''ODlmMVx1ODlmMlx1ODlmNCIsNl0sWyJkMzgwIiwiXHU4OWZiIiw0LCJcdThhMDEiLDUsIlx1OGEwOCIsMjEsIlx1NTM3MFx1ODJmMVx1NmEzMVx1NWE3NFx1OWU3MFx1NWU5NFx1N2YyOFx1ODNiOVx1ODQyNFx1ODQyNVx1ODM2N1x1ODc0N1x1OGZjZVx1OGQ2Mlx1NzZjOFx1NWY3MVx1OTg5''@;'; put 'put ''Nlx1Nzg2Y1x1NjYyMFx1NTRkZlx1NjJlNVx1NGY2M1x1ODFjM1x1NzVjOFx1NWViOFx1OTZjZFx1OGUwYVx1ODZmOVx1NTQ4Zlx1NmNmM1x1NmQ4Y1x1NmMzOFx1NjA3Zlx1NTJjN1x1NzUyOFx1NWU3ZFx1NGYxOFx1NjBhMFx1NWZlN1x1NWMyNFx1NzUzMVx1OTBhZVx1OTRjMFx1NzJiOVx1''@;'; put 'put ''NmNiOVx1NmUzOFx1OTE0OVx1NjcwOVx1NTNjYlx1NTNmM1x1NGY1MVx1OTFjOVx1OGJmMVx1NTNjOFx1NWU3Y1x1OGZjMlx1NmRlNFx1NGU4ZVx1NzZjMlx1Njk4Nlx1ODY1ZVx1NjExYVx1ODIwNlx1NGY1OVx1NGZkZVx1OTAzZVx1OWM3Y1x1NjEwOVx1NmUxZFx1NmUxNFx1OTY4NVx1NGU4''@;'; put 'put ''OFx1NWEzMVx1OTZlOFx1NGUwZVx1NWM3Zlx1NzliOVx1NWI4N1x1OGJlZFx1N2ZiZFx1NzM4OVx1NTdkZlx1ODI4Ylx1OTBjMVx1NTQwMVx1OTA0N1x1NTViYlx1NWNlYVx1NWZhMVx1NjEwOFx1NmIzMlx1NzJmMVx1ODBiMlx1OGE4OSJdLFsiZDQ0MCIsIlx1OGExZSIsMzEsIlx1OGEzZiIs''@;'; put 'put ''OCwiXHU4YTQ5IiwyMV0sWyJkNDgwIiwiXHU4YTVmIiwyNSwiXHU4YTdhIiw2LCJcdTZkNzRcdTViZDNcdTg4ZDVcdTk4ODRcdThjNmJcdTlhNmRcdTllMzNcdTZlMGFcdTUxYTRcdTUxNDNcdTU3YTNcdTg4ODFcdTUzOWZcdTYzZjRcdThmOTVcdTU2ZWRcdTU0NThcdTU3MDZcdTczM2ZcdTZl''@;'; put 'put ''OTBcdTdmMThcdThmZGNcdTgyZDFcdTYxM2ZcdTYwMjhcdTk2NjJcdTY2ZjBcdTdlYTZcdThkOGFcdThkYzNcdTk0YTVcdTVjYjNcdTdjYTRcdTY3MDhcdTYwYTZcdTk2MDVcdTgwMThcdTRlOTFcdTkwZTdcdTUzMDBcdTk2NjhcdTUxNDFcdThmZDBcdTg1NzRcdTkxNWRcdTY2NTVcdTk3ZjVc''@;'; put 'put ''dTViNTVcdTUzMWRcdTc4MzhcdTY3NDJcdTY4M2RcdTU0YzlcdTcwN2VcdTViYjBcdThmN2RcdTUxOGRcdTU3MjhcdTU0YjFcdTY1MTJcdTY2ODJcdThkNWVcdThkNDNcdTgxMGZcdTg0NmNcdTkwNmRcdTdjZGZcdTUxZmZcdTg1ZmJcdTY3YTNcdTY1ZTlcdTZmYTFcdTg2YTRcdThlODFcdTU2''@;'; put 'put ''NmFcdTkwMjBcdTc2ODJcdTcwNzZcdTcxZTVcdThkMjNcdTYyZTlcdTUyMTlcdTZjZmRcdThkM2NcdTYwMGVcdTU4OWVcdTYxOGVcdTY2ZmVcdThkNjBcdTYyNGVcdTU1YjNcdTZlMjNcdTY3MmRcdThmNjciXSxbImQ1NDAiLCJcdThhODEiLDcsIlx1OGE4YiIsNywiXHU4YTk0Iiw0Nl0sWyJk''@;'; put 'put ''NTgwIiwiXHU4YWMzIiwzMiwiXHU5NGUxXHU5NWY4XHU3NzI4XHU2ODA1XHU2OWE4XHU1NDhiXHU0ZTRkXHU3MGI4XHU4YmM4XHU2NDU4XHU2NThiXHU1Yjg1XHU3YTg0XHU1MDNhXHU1YmU4XHU3N2JiXHU2YmUxXHU4YTc5XHU3Yzk4XHU2Y2JlXHU3NmNmXHU2NWE5XHU4Zjk3XHU1ZDJkXHU1''@;'; put 'put ''YzU1XHU4NjM4XHU2ODA4XHU1MzYwXHU2MjE4XHU3YWQ5XHU2ZTViXHU3ZWZkXHU2YTFmXHU3YWUwXHU1ZjcwXHU2ZjMzXHU1ZjIwXHU2MzhjXHU2ZGE4XHU2NzU2XHU0ZTA4XHU1ZTEwXHU4ZDI2XHU0ZWQ3XHU4MGMwXHU3NjM0XHU5NjljXHU2MmRiXHU2NjJkXHU2MjdlXHU2Y2JjXHU4ZDc1''@;'; put 'put ''XHU3MTY3XHU3ZjY5XHU1MTQ2XHU4MDg3XHU1M2VjXHU5MDZlXHU2Mjk4XHU1NGYyXHU4NmYwXHU4Zjk5XHU4MDA1XHU5NTE3XHU4NTE3XHU4ZmQ5XHU2ZDU5XHU3M2NkXHU2NTlmXHU3NzFmXHU3NTA0XHU3ODI3XHU4MWZiXHU4ZDFlXHU5NDg4XHU0ZmE2XHU2Nzk1XHU3NWI5XHU4YmNhXHU5''@;'; put 'put ''NzA3XHU2MzJmXHU5NTQ3XHU5NjM1XHU4NGI4XHU2MzIzXHU3NzQxXHU1ZjgxXHU3MmYwXHU0ZTg5XHU2MDE0XHU2NTc0XHU2MmVmXHU2YjYzXHU2NTNmIl0sWyJkNjQwIiwiXHU4YWU0IiwzNCwiXHU4YjA4IiwyN10sWyJkNjgwIiwiXHU4YjI0XHU4YjI1XHU4YjI3IiwzMCwiXHU1ZTI3XHU3''@;'; put 'put ''NWM3XHU5MGQxXHU4YmMxXHU4MjlkXHU2NzlkXHU2NTJmXHU1NDMxXHU4NzE4XHU3N2U1XHU4MGEyXHU4MTAyXHU2YzQxXHU0ZTRiXHU3ZWM3XHU4MDRjXHU3NmY0XHU2OTBkXHU2Yjk2XHU2MjY3XHU1MDNjXHU0Zjg0XHU1NzQwXHU2MzA3XHU2YjYyXHU4ZGJlXHU1M2VhXHU2NWU4XHU3ZWI4''@;'; put 'put ''XHU1ZmQ3XHU2MzFhXHU2M2I3XHU4MWYzXHU4MWY0XHU3ZjZlXHU1ZTFjXHU1Y2Q5XHU1MjM2XHU2NjdhXHU3OWU5XHU3YTFhXHU4ZDI4XHU3MDk5XHU3NWQ0XHU2ZWRlXHU2Y2JiXHU3YTkyXHU0ZTJkXHU3NmM1XHU1ZmUwXHU5NDlmXHU4ODc3XHU3ZWM4XHU3OWNkXHU4MGJmXHU5MWNkXHU0''@;'; put 'put ''ZWYyXHU0ZjE3XHU4MjFmXHU1NDY4XHU1ZGRlXHU2ZDMyXHU4YmNjXHU3Y2E1XHU4Zjc0XHU4MDk4XHU1ZTFhXHU1NDkyXHU3NmIxXHU1Yjk5XHU2NjNjXHU5YWE0XHU3M2UwXHU2ODJhXHU4NmRiXHU2NzMxXHU3MzJhXHU4YmY4XHU4YmRiXHU5MDEwXHU3YWY5XHU3MGRiXHU3MTZlXHU2MmM0''@;'; put 'put ''XHU3N2E5XHU1NjMxXHU0ZTNiXHU4NDU3XHU2N2YxXHU1MmE5XHU4NmMwXHU4ZDJlXHU5NGY4XHU3YjUxIl0sWyJkNzQwIiwiXHU4YjQ2IiwzMSwiXHU4YjY3Iiw0LCJcdThiNmQiLDI1XSxbImQ3ODAiLCJcdThiODciLDI0LCJcdThiYWNcdThiYjFcdThiYmJcdThiYzdcdThiZDBcdThiZWFc''@;'; put 'put ''dThjMDlcdThjMWVcdTRmNGZcdTZjZThcdTc5NWRcdTlhN2JcdTYyOTNcdTcyMmFcdTYyZmRcdTRlMTNcdTc4MTZcdThmNmNcdTY0YjBcdThkNWFcdTdiYzZcdTY4NjlcdTVlODRcdTg4YzVcdTU5ODZcdTY0OWVcdTU4ZWVcdTcyYjZcdTY5MGVcdTk1MjVcdThmZmRcdThkNThcdTU3NjBcdTdm''@;'; put 'put ''MDBcdThjMDZcdTUxYzZcdTYzNDlcdTYyZDlcdTUzNTNcdTY4NGNcdTc0MjJcdTgzMDFcdTkxNGNcdTU1NDRcdTc3NDBcdTcwN2NcdTZkNGFcdTUxNzlcdTU0YThcdThkNDRcdTU5ZmZcdTZlY2JcdTZkYzRcdTViNWNcdTdkMmJcdTRlZDRcdTdjN2RcdTZlZDNcdTViNTBcdTgxZWFcdTZlMGRc''@;'; put 'put ''dTViNTdcdTliMDNcdTY4ZDVcdThlMmFcdTViOTdcdTdlZmNcdTYwM2JcdTdlYjVcdTkwYjlcdThkNzBcdTU5NGZcdTYzY2RcdTc5ZGZcdThkYjNcdTUzNTJcdTY1Y2ZcdTc5NTZcdThiYzVcdTk2M2JcdTdlYzRcdTk0YmJcdTdlODJcdTU2MzRcdTkxODlcdTY3MDBcdTdmNmFcdTVjMGFcdTkw''@;'; put 'put ''NzVcdTY2MjhcdTVkZTZcdTRmNTBcdTY3ZGVcdTUwNWFcdTRmNWNcdTU3NTBcdTVlYTciXSxbImQ4NDAiLCJcdThjMzgiLDgsIlx1OGM0Mlx1OGM0M1x1OGM0NFx1OGM0NVx1OGM0OFx1OGM0YVx1OGM0Ylx1OGM0ZCIsNywiXHU4YzU2XHU4YzU3XHU4YzU4XHU4YzU5XHU4YzViIiw1LCJcdThj''@;'; put 'put ''NjMiLDYsIlx1OGM2YyIsNiwiXHU4Yzc0XHU4Yzc1XHU4Yzc2XHU4Yzc3XHU4YzdiIiw2LCJcdThjODNcdThjODRcdThjODZcdThjODciXSxbImQ4ODAiLCJcdThjODhcdThjOGJcdThjOGQiLDYsIlx1OGM5NVx1OGM5Nlx1OGM5N1x1OGM5OSIsMjAsIlx1NGU4ZFx1NGUwY1x1NTE0MFx1NGUx''@;'; put 'put ''MFx1NWVmZlx1NTM0NVx1NGUxNVx1NGU5OFx1NGUxZVx1OWIzMlx1NWI2Y1x1NTY2OVx1NGUyOFx1NzliYVx1NGUzZlx1NTMxNVx1NGU0N1x1NTkyZFx1NzIzYlx1NTM2ZVx1NmMxMFx1NTZkZlx1ODBlNFx1OTk5N1x1NmJkM1x1Nzc3ZVx1OWYxN1x1NGUzNlx1NGU5Zlx1OWYxMFx1NGU1Y1x1''@;'; put 'put ''NGU2OVx1NGU5M1x1ODI4OFx1NWI1Ylx1NTU2Y1x1NTYwZlx1NGVjNFx1NTM4ZFx1NTM5ZFx1NTNhM1x1NTNhNVx1NTNhZVx1OTc2NVx1OGQ1ZFx1NTMxYVx1NTNmNVx1NTMyNlx1NTMyZVx1NTMzZVx1OGQ1Y1x1NTM2Nlx1NTM2M1x1NTIwMlx1NTIwOFx1NTIwZVx1NTIyZFx1NTIzM1x1NTIz''@;'; put 'put ''Zlx1NTI0MFx1NTI0Y1x1NTI1ZVx1NTI2MVx1NTI1Y1x1ODRhZlx1NTI3ZFx1NTI4Mlx1NTI4MVx1NTI5MFx1NTI5M1x1NTE4Mlx1N2Y1NFx1NGViYlx1NGVjM1x1NGVjOVx1NGVjMlx1NGVlOFx1NGVlMVx1NGVlYlx1NGVkZVx1NGYxYlx1NGVmM1x1NGYyMlx1NGY2NFx1NGVmNVx1NGYyNVx1''@;'; put 'put ''NGYyN1x1NGYwOVx1NGYyYlx1NGY1ZVx1NGY2N1x1NjUzOFx1NGY1YVx1NGY1ZCJdLFsiZDk0MCIsIlx1OGNhZSIsNjJdLFsiZDk4MCIsIlx1OGNlZCIsMzIsIlx1NGY1Zlx1NGY1N1x1NGYzMlx1NGYzZFx1NGY3Nlx1NGY3NFx1NGY5MVx1NGY4OVx1NGY4M1x1NGY4Zlx1NGY3ZVx1NGY3Ylx1''@;'; put 'put ''NGZhYVx1NGY3Y1x1NGZhY1x1NGY5NFx1NGZlNlx1NGZlOFx1NGZlYVx1NGZjNVx1NGZkYVx1NGZlM1x1NGZkY1x1NGZkMVx1NGZkZlx1NGZmOFx1NTAyOVx1NTA0Y1x1NGZmM1x1NTAyY1x1NTAwZlx1NTAyZVx1NTAyZFx1NGZmZVx1NTAxY1x1NTAwY1x1NTAyNVx1NTAyOFx1NTA3ZVx1NTA0''@;'; put 'put ''M1x1NTA1NVx1NTA0OFx1NTA0ZVx1NTA2Y1x1NTA3Ylx1NTBhNVx1NTBhN1x1NTBhOVx1NTBiYVx1NTBkNlx1NTEwNlx1NTBlZFx1NTBlY1x1NTBlNlx1NTBlZVx1NTEwN1x1NTEwYlx1NGVkZFx1NmMzZFx1NGY1OFx1NGY2NVx1NGZjZVx1OWZhMFx1NmM0Nlx1N2M3NFx1NTE2ZVx1NWRmZFx1''@;'; put 'put ''OWVjOVx1OTk5OFx1NTE4MVx1NTkxNFx1NTJmOVx1NTMwZFx1OGEwN1x1NTMxMFx1NTFlYlx1NTkxOVx1NTE1NVx1NGVhMFx1NTE1Nlx1NGViM1x1ODg2ZVx1ODhhNFx1NGViNVx1ODExNFx1ODhkMlx1Nzk4MFx1NWIzNFx1ODgwM1x1N2ZiOFx1NTFhYlx1NTFiMVx1NTFiZFx1NTFiYyJdLFsi''@;'; put 'put ''ZGE0MCIsIlx1OGQwZSIsMTQsIlx1OGQyMFx1OGQ1MVx1OGQ1Mlx1OGQ1N1x1OGQ1Zlx1OGQ2NVx1OGQ2OFx1OGQ2OVx1OGQ2YVx1OGQ2Y1x1OGQ2ZVx1OGQ2Zlx1OGQ3MVx1OGQ3Mlx1OGQ3OCIsOCwiXHU4ZDgyXHU4ZDgzXHU4ZDg2XHU4ZDg3XHU4ZDg4XHU4ZDg5XHU4ZDhjIiw0LCJcdThk''@;'; put 'put ''OTJcdThkOTNcdThkOTUiLDksIlx1OGRhMFx1OGRhMSJdLFsiZGE4MCIsIlx1OGRhMlx1OGRhNCIsMTIsIlx1OGRiMlx1OGRiNlx1OGRiN1x1OGRiOVx1OGRiYlx1OGRiZFx1OGRjMFx1OGRjMVx1OGRjMlx1OGRjNVx1OGRjN1x1OGRjOFx1OGRjOVx1OGRjYVx1OGRjZFx1OGRkMFx1OGRkMlx1''@;'; put 'put ''OGRkM1x1OGRkNFx1NTFjN1x1NTE5Nlx1NTFhMlx1NTFhNVx1OGJhMFx1OGJhNlx1OGJhN1x1OGJhYVx1OGJiNFx1OGJiNVx1OGJiN1x1OGJjMlx1OGJjM1x1OGJjYlx1OGJjZlx1OGJjZVx1OGJkMlx1OGJkM1x1OGJkNFx1OGJkNlx1OGJkOFx1OGJkOVx1OGJkY1x1OGJkZlx1OGJlMFx1OGJl''@;'; put 'put ''NFx1OGJlOFx1OGJlOVx1OGJlZVx1OGJmMFx1OGJmM1x1OGJmNlx1OGJmOVx1OGJmY1x1OGJmZlx1OGMwMFx1OGMwMlx1OGMwNFx1OGMwN1x1OGMwY1x1OGMwZlx1OGMxMVx1OGMxMlx1OGMxNFx1OGMxNVx1OGMxNlx1OGMxOVx1OGMxYlx1OGMxOFx1OGMxZFx1OGMxZlx1OGMyMFx1OGMyMVx1''@;'; put 'put ''OGMyNVx1OGMyN1x1OGMyYVx1OGMyYlx1OGMyZVx1OGMyZlx1OGMzMlx1OGMzM1x1OGMzNVx1OGMzNlx1NTM2OVx1NTM3YVx1OTYxZFx1OTYyMlx1OTYyMVx1OTYzMVx1OTYyYVx1OTYzZFx1OTYzY1x1OTY0Mlx1OTY0OVx1OTY1NFx1OTY1Zlx1OTY2N1x1OTY2Y1x1OTY3Mlx1OTY3NFx1OTY4''@;'; put 'put ''OFx1OTY4ZFx1OTY5N1x1OTZiMFx1OTA5N1x1OTA5Ylx1OTA5ZFx1OTA5OVx1OTBhY1x1OTBhMVx1OTBiNFx1OTBiM1x1OTBiNlx1OTBiYSJdLFsiZGI0MCIsIlx1OGRkNVx1OGRkOFx1OGRkOVx1OGRkY1x1OGRlMFx1OGRlMVx1OGRlMlx1OGRlNVx1OGRlNlx1OGRlN1x1OGRlOVx1OGRlZFx1''@;'; put 'put ''OGRlZVx1OGRmMFx1OGRmMVx1OGRmMlx1OGRmNFx1OGRmNlx1OGRmY1x1OGRmZSIsNiwiXHU4ZTA2XHU4ZTA3XHU4ZTA4XHU4ZTBiXHU4ZTBkXHU4ZTBlXHU4ZTEwXHU4ZTExXHU4ZTEyXHU4ZTEzXHU4ZTE1Iiw3LCJcdThlMjBcdThlMjFcdThlMjQiLDQsIlx1OGUyYlx1OGUyZFx1OGUzMFx1''@;'; put 'put ''OGUzMlx1OGUzM1x1OGUzNFx1OGUzNlx1OGUzN1x1OGUzOFx1OGUzYlx1OGUzY1x1OGUzZSJdLFsiZGI4MCIsIlx1OGUzZlx1OGU0M1x1OGU0NVx1OGU0Nlx1OGU0YyIsNCwiXHU4ZTUzIiw1LCJcdThlNWEiLDExLCJcdThlNjdcdThlNjhcdThlNmFcdThlNmJcdThlNmVcdThlNzFcdTkwYjhc''@;'; put 'put ''dTkwYjBcdTkwY2ZcdTkwYzVcdTkwYmVcdTkwZDBcdTkwYzRcdTkwYzdcdTkwZDNcdTkwZTZcdTkwZTJcdTkwZGNcdTkwZDdcdTkwZGJcdTkwZWJcdTkwZWZcdTkwZmVcdTkxMDRcdTkxMjJcdTkxMWVcdTkxMjNcdTkxMzFcdTkxMmZcdTkxMzlcdTkxNDNcdTkxNDZcdTUyMGRcdTU5NDJcdTUy''@;'; put 'put ''YTJcdTUyYWNcdTUyYWRcdTUyYmVcdTU0ZmZcdTUyZDBcdTUyZDZcdTUyZjBcdTUzZGZcdTcxZWVcdTc3Y2RcdTVlZjRcdTUxZjVcdTUxZmNcdTliMmZcdTUzYjZcdTVmMDFcdTc1NWFcdTVkZWZcdTU3NGNcdTU3YTlcdTU3YTFcdTU4N2VcdTU4YmNcdTU4YzVcdTU4ZDFcdTU3MjlcdTU3MmNc''@;'; put 'put ''dTU3MmFcdTU3MzNcdTU3MzlcdTU3MmVcdTU3MmZcdTU3NWNcdTU3M2JcdTU3NDJcdTU3NjlcdTU3ODVcdTU3NmJcdTU3ODZcdTU3N2NcdTU3N2JcdTU3NjhcdTU3NmRcdTU3NzZcdTU3NzNcdTU3YWRcdTU3YTRcdTU3OGNcdTU3YjJcdTU3Y2ZcdTU3YTdcdTU3YjRcdTU3OTNcdTU3YTBcdTU3''@;'; put 'put ''ZDVcdTU3ZDhcdTU3ZGFcdTU3ZDlcdTU3ZDJcdTU3YjhcdTU3ZjRcdTU3ZWZcdTU3ZjhcdTU3ZTRcdTU3ZGQiXSxbImRjNDAiLCJcdThlNzNcdThlNzVcdThlNzciLDQsIlx1OGU3ZFx1OGU3ZVx1OGU4MFx1OGU4Mlx1OGU4M1x1OGU4NFx1OGU4Nlx1OGU4OCIsNiwiXHU4ZTkxXHU4ZTkyXHU4''@;'; put 'put ''ZTkzXHU4ZTk1Iiw2LCJcdThlOWRcdThlOWYiLDExLCJcdThlYWRcdThlYWVcdThlYjBcdThlYjFcdThlYjMiLDYsIlx1OGViYiIsN10sWyJkYzgwIiwiXHU4ZWMzIiwxMCwiXHU4ZWNmIiwyMSwiXHU1ODBiXHU1ODBkXHU1N2ZkXHU1N2VkXHU1ODAwXHU1ODFlXHU1ODE5XHU1ODQ0XHU1ODIw''@;'; put 'put ''XHU1ODY1XHU1ODZjXHU1ODgxXHU1ODg5XHU1ODlhXHU1ODgwXHU5OWE4XHU5ZjE5XHU2MWZmXHU4Mjc5XHU4MjdkXHU4MjdmXHU4MjhmXHU4MjhhXHU4MmE4XHU4Mjg0XHU4MjhlXHU4MjkxXHU4Mjk3XHU4Mjk5XHU4MmFiXHU4MmI4XHU4MmJlXHU4MmIwXHU4MmM4XHU4MmNhXHU4MmUzXHU4''@;'; put 'put ''Mjk4XHU4MmI3XHU4MmFlXHU4MmNiXHU4MmNjXHU4MmMxXHU4MmE5XHU4MmI0XHU4MmExXHU4MmFhXHU4MjlmXHU4MmM0XHU4MmNlXHU4MmE0XHU4MmUxXHU4MzA5XHU4MmY3XHU4MmU0XHU4MzBmXHU4MzA3XHU4MmRjXHU4MmY0XHU4MmQyXHU4MmQ4XHU4MzBjXHU4MmZiXHU4MmQzXHU4MzEx''@;'; put 'put ''XHU4MzFhXHU4MzA2XHU4MzE0XHU4MzE1XHU4MmUwXHU4MmQ1XHU4MzFjXHU4MzUxXHU4MzViXHU4MzVjXHU4MzA4XHU4MzkyXHU4MzNjXHU4MzM0XHU4MzMxXHU4MzliXHU4MzVlXHU4MzJmXHU4MzRmXHU4MzQ3XHU4MzQzXHU4MzVmXHU4MzQwXHU4MzE3XHU4MzYwXHU4MzJkXHU4MzNhXHU4''@;'; put 'put ''MzMzXHU4MzY2XHU4MzY1Il0sWyJkZDQwIiwiXHU4ZWU1Iiw2Ml0sWyJkZDgwIiwiXHU4ZjI0IiwzMiwiXHU4MzY4XHU4MzFiXHU4MzY5XHU4MzZjXHU4MzZhXHU4MzZkXHU4MzZlXHU4M2IwXHU4Mzc4XHU4M2IzXHU4M2I0XHU4M2EwXHU4M2FhXHU4MzkzXHU4MzljXHU4Mzg1XHU4MzdjXHU4''@;'; put 'put ''M2I2XHU4M2E5XHU4MzdkXHU4M2I4XHU4MzdiXHU4Mzk4XHU4MzllXHU4M2E4XHU4M2JhXHU4M2JjXHU4M2MxXHU4NDAxXHU4M2U1XHU4M2Q4XHU1ODA3XHU4NDE4XHU4NDBiXHU4M2RkXHU4M2ZkXHU4M2Q2XHU4NDFjXHU4NDM4XHU4NDExXHU4NDA2XHU4M2Q0XHU4M2RmXHU4NDBmXHU4NDAz''@;'; put 'put ''XHU4M2Y4XHU4M2Y5XHU4M2VhXHU4M2M1XHU4M2MwXHU4NDI2XHU4M2YwXHU4M2UxXHU4NDVjXHU4NDUxXHU4NDVhXHU4NDU5XHU4NDczXHU4NDg3XHU4NDg4XHU4NDdhXHU4NDg5XHU4NDc4XHU4NDNjXHU4NDQ2XHU4NDY5XHU4NDc2XHU4NDhjXHU4NDhlXHU4NDMxXHU4NDZkXHU4NGMxXHU4''@;'; put 'put ''NGNkXHU4NGQwXHU4NGU2XHU4NGJkXHU4NGQzXHU4NGNhXHU4NGJmXHU4NGJhXHU4NGUwXHU4NGExXHU4NGI5XHU4NGI0XHU4NDk3XHU4NGU1XHU4NGUzXHU4NTBjXHU3NTBkXHU4NTM4XHU4NGYwXHU4NTM5XHU4NTFmXHU4NTNhIl0sWyJkZTQwIiwiXHU4ZjQ1IiwzMiwiXHU4ZjZhXHU4Zjgw''@;'; put 'put ''XHU4ZjhjXHU4ZjkyXHU4ZjlkXHU4ZmEwXHU4ZmExXHU4ZmEyXHU4ZmE0XHU4ZmE1XHU4ZmE2XHU4ZmE3XHU4ZmFhXHU4ZmFjXHU4ZmFkXHU4ZmFlXHU4ZmFmXHU4ZmIyXHU4ZmIzXHU4ZmI0XHU4ZmI1XHU4ZmI3XHU4ZmI4XHU4ZmJhXHU4ZmJiXHU4ZmJjXHU4ZmJmXHU4ZmMwXHU4ZmMzXHU4''@;'; put 'put ''ZmM2Il0sWyJkZTgwIiwiXHU4ZmM5Iiw0LCJcdThmY2ZcdThmZDJcdThmZDZcdThmZDdcdThmZGFcdThmZTBcdThmZTFcdThmZTNcdThmZTdcdThmZWNcdThmZWZcdThmZjFcdThmZjJcdThmZjRcdThmZjVcdThmZjZcdThmZmFcdThmZmJcdThmZmNcdThmZmVcdThmZmZcdTkwMDdcdTkwMDhc''@;'; put 'put ''dTkwMGNcdTkwMGVcdTkwMTNcdTkwMTVcdTkwMThcdTg1NTZcdTg1M2JcdTg0ZmZcdTg0ZmNcdTg1NTlcdTg1NDhcdTg1NjhcdTg1NjRcdTg1NWVcdTg1N2FcdTc3YTJcdTg1NDNcdTg1NzJcdTg1N2JcdTg1YTRcdTg1YThcdTg1ODdcdTg1OGZcdTg1NzlcdTg1YWVcdTg1OWNcdTg1ODVcdTg1''@;'; put 'put ''YjlcdTg1YjdcdTg1YjBcdTg1ZDNcdTg1YzFcdTg1ZGNcdTg1ZmZcdTg2MjdcdTg2MDVcdTg2MjlcdTg2MTZcdTg2M2NcdTVlZmVcdTVmMDhcdTU5M2NcdTU5NDFcdTgwMzdcdTU5NTVcdTU5NWFcdTU5NThcdTUzMGZcdTVjMjJcdTVjMjVcdTVjMmNcdTVjMzRcdTYyNGNcdTYyNmFcdTYyOWZc''@;'; put 'put ''dTYyYmJcdTYyY2FcdTYyZGFcdTYyZDdcdTYyZWVcdTYzMjJcdTYyZjZcdTYzMzlcdTYzNGJcdTYzNDNcdTYzYWRcdTYzZjZcdTYzNzFcdTYzN2FcdTYzOGVcdTYzYjRcdTYzNmRcdTYzYWNcdTYzOGFcdTYzNjlcdTYzYWVcdTYzYmNcdTYzZjJcdTYzZjhcdTYzZTBcdTYzZmZcdTYzYzRcdTYz''@;'; put 'put ''ZGVcdTYzY2VcdTY0NTJcdTYzYzZcdTYzYmVcdTY0NDVcdTY0NDFcdTY0MGJcdTY0MWJcdTY0MjBcdTY0MGNcdTY0MjZcdTY0MjFcdTY0NWVcdTY0ODRcdTY0NmRcdTY0OTYiXSxbImRmNDAiLCJcdTkwMTlcdTkwMWNcdTkwMjNcdTkwMjRcdTkwMjVcdTkwMjciLDUsIlx1OTAzMCIsNCwiXHU5''@;'; put 'put ''MDM3XHU5MDM5XHU5MDNhXHU5MDNkXHU5MDNmXHU5MDQwXHU5MDQzXHU5MDQ1XHU5MDQ2XHU5MDQ4Iiw0LCJcdTkwNGVcdTkwNTRcdTkwNTVcdTkwNTZcdTkwNTlcdTkwNWFcdTkwNWMiLDUsIlx1OTA2NFx1OTA2Nlx1OTA2N1x1OTA2OVx1OTA2YVx1OTA2Ylx1OTA2Y1x1OTA2ZiIsNCwiXHU5''@;'; put 'put ''MDc2Iiw2LCJcdTkwN2VcdTkwODEiXSxbImRmODAiLCJcdTkwODRcdTkwODVcdTkwODZcdTkwODdcdTkwODlcdTkwOGFcdTkwOGMiLDQsIlx1OTA5Mlx1OTA5NFx1OTA5Nlx1OTA5OFx1OTA5YVx1OTA5Y1x1OTA5ZVx1OTA5Zlx1OTBhMFx1OTBhNFx1OTBhNVx1OTBhN1x1OTBhOFx1OTBhOVx1''@;'; put 'put ''OTBhYlx1OTBhZFx1OTBiMlx1OTBiN1x1OTBiY1x1OTBiZFx1OTBiZlx1OTBjMFx1NjQ3YVx1NjRiN1x1NjRiOFx1NjQ5OVx1NjRiYVx1NjRjMFx1NjRkMFx1NjRkN1x1NjRlNFx1NjRlMlx1NjUwOVx1NjUyNVx1NjUyZVx1NWYwYlx1NWZkMlx1NzUxOVx1NWYxMVx1NTM1Zlx1NTNmMVx1NTNm''@;'; put 'put ''ZFx1NTNlOVx1NTNlOFx1NTNmYlx1NTQxMlx1NTQxNlx1NTQwNlx1NTQ0Ylx1NTQ1Mlx1NTQ1M1x1NTQ1NFx1NTQ1Nlx1NTQ0M1x1NTQyMVx1NTQ1N1x1NTQ1OVx1NTQyM1x1NTQzMlx1NTQ4Mlx1NTQ5NFx1NTQ3N1x1NTQ3MVx1NTQ2NFx1NTQ5YVx1NTQ5Ylx1NTQ4NFx1NTQ3Nlx1NTQ2Nlx1''@;'; put 'put ''NTQ5ZFx1NTRkMFx1NTRhZFx1NTRjMlx1NTRiNFx1NTRkMlx1NTRhN1x1NTRhNlx1NTRkM1x1NTRkNFx1NTQ3Mlx1NTRhM1x1NTRkNVx1NTRiYlx1NTRiZlx1NTRjY1x1NTRkOVx1NTRkYVx1NTRkY1x1NTRhOVx1NTRhYVx1NTRhNFx1NTRkZFx1NTRjZlx1NTRkZVx1NTUxYlx1NTRlN1x1NTUy''@;'; put 'put ''MFx1NTRmZFx1NTUxNFx1NTRmM1x1NTUyMlx1NTUyM1x1NTUwZlx1NTUxMVx1NTUyN1x1NTUyYVx1NTU2N1x1NTU4Zlx1NTViNVx1NTU0OVx1NTU2ZFx1NTU0MVx1NTU1NVx1NTUzZlx1NTU1MFx1NTUzYyJdLFsiZTA0MCIsIlx1OTBjMlx1OTBjM1x1OTBjNlx1OTBjOFx1OTBjOVx1OTBjYlx1''@;'; put 'put ''OTBjY1x1OTBjZFx1OTBkMlx1OTBkNFx1OTBkNVx1OTBkNlx1OTBkOFx1OTBkOVx1OTBkYVx1OTBkZVx1OTBkZlx1OTBlMFx1OTBlM1x1OTBlNFx1OTBlNVx1OTBlOVx1OTBlYVx1OTBlY1x1OTBlZVx1OTBmMFx1OTBmMVx1OTBmMlx1OTBmM1x1OTBmNVx1OTBmNlx1OTBmN1x1OTBmOVx1OTBm''@;'; put 'put ''YVx1OTBmYlx1OTBmY1x1OTBmZlx1OTEwMFx1OTEwMVx1OTEwM1x1OTEwNSIsMTksIlx1OTExYVx1OTExYlx1OTExYyJdLFsiZTA4MCIsIlx1OTExZFx1OTExZlx1OTEyMFx1OTEyMVx1OTEyNCIsMTAsIlx1OTEzMFx1OTEzMiIsNiwiXHU5MTNhIiw4LCJcdTkxNDRcdTU1MzdcdTU1NTZcdTU1''@;'; put 'put ''NzVcdTU1NzZcdTU1NzdcdTU1MzNcdTU1MzBcdTU1NWNcdTU1OGJcdTU1ZDJcdTU1ODNcdTU1YjFcdTU1YjlcdTU1ODhcdTU1ODFcdTU1OWZcdTU1N2VcdTU1ZDZcdTU1OTFcdTU1N2JcdTU1ZGZcdTU1YmRcdTU1YmVcdTU1OTRcdTU1OTlcdTU1ZWFcdTU1ZjdcdTU1YzlcdTU2MWZcdTU1ZDFc''@;'; put 'put ''dTU1ZWJcdTU1ZWNcdTU1ZDRcdTU1ZTZcdTU1ZGRcdTU1YzRcdTU1ZWZcdTU1ZTVcdTU1ZjJcdTU1ZjNcdTU1Y2NcdTU1Y2RcdTU1ZThcdTU1ZjVcdTU1ZTRcdThmOTRcdTU2MWVcdTU2MDhcdTU2MGNcdTU2MDFcdTU2MjRcdTU2MjNcdTU1ZmVcdTU2MDBcdTU2MjdcdTU2MmRcdTU2NThcdTU2''@;'; put 'put ''MzlcdTU2NTdcdTU2MmNcdTU2NGRcdTU2NjJcdTU2NTlcdTU2NWNcdTU2NGNcdTU2NTRcdTU2ODZcdTU2NjRcdTU2NzFcdTU2NmJcdTU2N2JcdTU2N2NcdTU2ODVcdTU2OTNcdTU2YWZcdTU2ZDRcdTU2ZDdcdTU2ZGRcdTU2ZTFcdTU2ZjVcdTU2ZWJcdTU2ZjlcdTU2ZmZcdTU3MDRcdTU3MGFc''@;'; put 'put ''dTU3MDlcdTU3MWNcdTVlMGZcdTVlMTlcdTVlMTRcdTVlMTFcdTVlMzFcdTVlM2JcdTVlM2MiXSxbImUxNDAiLCJcdTkxNDVcdTkxNDdcdTkxNDhcdTkxNTFcdTkxNTNcdTkxNTRcdTkxNTVcdTkxNTZcdTkxNThcdTkxNTlcdTkxNWJcdTkxNWNcdTkxNWZcdTkxNjBcdTkxNjZcdTkxNjdcdTkx''@;'; put 'put ''NjhcdTkxNmJcdTkxNmRcdTkxNzNcdTkxN2FcdTkxN2JcdTkxN2NcdTkxODAiLDQsIlx1OTE4Nlx1OTE4OFx1OTE4YVx1OTE4ZVx1OTE4Zlx1OTE5MyIsNiwiXHU5MTljIiw1LCJcdTkxYTQiLDUsIlx1OTFhYlx1OTFhY1x1OTFiMFx1OTFiMVx1OTFiMlx1OTFiM1x1OTFiNlx1OTFiN1x1OTFi''@;'; put 'put ''OFx1OTFiOVx1OTFiYiJdLFsiZTE4MCIsIlx1OTFiYyIsMTAsIlx1OTFjOFx1OTFjYlx1OTFkMFx1OTFkMiIsOSwiXHU5MWRkIiw4LCJcdTVlMzdcdTVlNDRcdTVlNTRcdTVlNWJcdTVlNWVcdTVlNjFcdTVjOGNcdTVjN2FcdTVjOGRcdTVjOTBcdTVjOTZcdTVjODhcdTVjOThcdTVjOTlcdTVj''@;'; put 'put ''OTFcdTVjOWFcdTVjOWNcdTVjYjVcdTVjYTJcdTVjYmRcdTVjYWNcdTVjYWJcdTVjYjFcdTVjYTNcdTVjYzFcdTVjYjdcdTVjYzRcdTVjZDJcdTVjZTRcdTVjY2JcdTVjZTVcdTVkMDJcdTVkMDNcdTVkMjdcdTVkMjZcdTVkMmVcdTVkMjRcdTVkMWVcdTVkMDZcdTVkMWJcdTVkNThcdTVkM2Vc''@;'; put 'put ''dTVkMzRcdTVkM2RcdTVkNmNcdTVkNWJcdTVkNmZcdTVkNWRcdTVkNmJcdTVkNGJcdTVkNGFcdTVkNjlcdTVkNzRcdTVkODJcdTVkOTlcdTVkOWRcdThjNzNcdTVkYjdcdTVkYzVcdTVmNzNcdTVmNzdcdTVmODJcdTVmODdcdTVmODlcdTVmOGNcdTVmOTVcdTVmOTlcdTVmOWNcdTVmYThcdTVm''@;'; put 'put ''YWRcdTVmYjVcdTVmYmNcdTg4NjJcdTVmNjFcdTcyYWRcdTcyYjBcdTcyYjRcdTcyYjdcdTcyYjhcdTcyYzNcdTcyYzFcdTcyY2VcdTcyY2RcdTcyZDJcdTcyZThcdTcyZWZcdTcyZTlcdTcyZjJcdTcyZjRcdTcyZjdcdTczMDFcdTcyZjNcdTczMDNcdTcyZmEiXSxbImUyNDAiLCJcdTkxZTYi''@;'; put 'put ''LDYyXSxbImUyODAiLCJcdTkyMjUiLDMyLCJcdTcyZmJcdTczMTdcdTczMTNcdTczMjFcdTczMGFcdTczMWVcdTczMWRcdTczMTVcdTczMjJcdTczMzlcdTczMjVcdTczMmNcdTczMzhcdTczMzFcdTczNTBcdTczNGRcdTczNTdcdTczNjBcdTczNmNcdTczNmZcdTczN2VcdTgyMWJcdTU5MjVc''@;'; put 'put ''dTk4ZTdcdTU5MjRcdTU5MDJcdTk5NjNcdTk5NjciLDUsIlx1OTk3NFx1OTk3N1x1OTk3ZFx1OTk4MFx1OTk4NFx1OTk4N1x1OTk4YVx1OTk4ZFx1OTk5MFx1OTk5MVx1OTk5M1x1OTk5NFx1OTk5NVx1NWU4MFx1NWU5MVx1NWU4Ylx1NWU5Nlx1NWVhNVx1NWVhMFx1NWViOVx1NWViNVx1NWVi''@;'; put 'put ''ZVx1NWViM1x1OGQ1M1x1NWVkMlx1NWVkMVx1NWVkYlx1NWVlOFx1NWVlYVx1ODFiYVx1NWZjNFx1NWZjOVx1NWZkNlx1NWZjZlx1NjAwM1x1NWZlZVx1NjAwNFx1NWZlMVx1NWZlNFx1NWZmZVx1NjAwNVx1NjAwNlx1NWZlYVx1NWZlZFx1NWZmOFx1NjAxOVx1NjAzNVx1NjAyNlx1NjAxYlx1''@;'; put 'put ''NjAwZlx1NjAwZFx1NjAyOVx1NjAyYlx1NjAwYVx1NjAzZlx1NjAyMVx1NjA3OFx1NjA3OVx1NjA3Ylx1NjA3YVx1NjA0MiJdLFsiZTM0MCIsIlx1OTI0NiIsNDUsIlx1OTI3NSIsMTZdLFsiZTM4MCIsIlx1OTI4NiIsNywiXHU5MjhmIiwyNCwiXHU2MDZhXHU2MDdkXHU2MDk2XHU2MDlhXHU2''@;'; put 'put ''MGFkXHU2MDlkXHU2MDgzXHU2MDkyXHU2MDhjXHU2MDliXHU2MGVjXHU2MGJiXHU2MGIxXHU2MGRkXHU2MGQ4XHU2MGM2XHU2MGRhXHU2MGI0XHU2MTIwXHU2MTI2XHU2MTE1XHU2MTIzXHU2MGY0XHU2MTAwXHU2MTBlXHU2MTJiXHU2MTRhXHU2MTc1XHU2MWFjXHU2MTk0XHU2MWE3XHU2MWI3''@;'; put 'put ''XHU2MWQ0XHU2MWY1XHU1ZmRkXHU5NmIzXHU5NWU5XHU5NWViXHU5NWYxXHU5NWYzXHU5NWY1XHU5NWY2XHU5NWZjXHU5NWZlXHU5NjAzXHU5NjA0XHU5NjA2XHU5NjA4XHU5NjBhXHU5NjBiXHU5NjBjXHU5NjBkXHU5NjBmXHU5NjEyXHU5NjE1XHU5NjE2XHU5NjE3XHU5NjE5XHU5NjFhXHU0''@;'; put 'put ''ZTJjXHU3MjNmXHU2MjE1XHU2YzM1XHU2YzU0XHU2YzVjXHU2YzRhXHU2Y2EzXHU2Yzg1XHU2YzkwXHU2Yzk0XHU2YzhjXHU2YzY4XHU2YzY5XHU2Yzc0XHU2Yzc2XHU2Yzg2XHU2Y2E5XHU2Y2QwXHU2Y2Q0XHU2Y2FkXHU2Y2Y3XHU2Y2Y4XHU2Y2YxXHU2Y2Q3XHU2Y2IyXHU2Y2UwXHU2Y2Q2''@;'; put 'put ''XHU2Y2ZhXHU2Y2ViXHU2Y2VlXHU2Y2IxXHU2Y2QzXHU2Y2VmXHU2Y2ZlIl0sWyJlNDQwIiwiXHU5MmE4Iiw1LCJcdTkyYWYiLDI0LCJcdTkyYzkiLDMxXSxbImU0ODAiLCJcdTkyZTkiLDMyLCJcdTZkMzlcdTZkMjdcdTZkMGNcdTZkNDNcdTZkNDhcdTZkMDdcdTZkMDRcdTZkMTlcdTZkMGVc''@;'; put 'put ''dTZkMmJcdTZkNGRcdTZkMmVcdTZkMzVcdTZkMWFcdTZkNGZcdTZkNTJcdTZkNTRcdTZkMzNcdTZkOTFcdTZkNmZcdTZkOWVcdTZkYTBcdTZkNWVcdTZkOTNcdTZkOTRcdTZkNWNcdTZkNjBcdTZkN2NcdTZkNjNcdTZlMWFcdTZkYzdcdTZkYzVcdTZkZGVcdTZlMGVcdTZkYmZcdTZkZTBcdTZl''@;'; put 'put ''MTFcdTZkZTZcdTZkZGRcdTZkZDlcdTZlMTZcdTZkYWJcdTZlMGNcdTZkYWVcdTZlMmJcdTZlNmVcdTZlNGVcdTZlNmJcdTZlYjJcdTZlNWZcdTZlODZcdTZlNTNcdTZlNTRcdTZlMzJcdTZlMjVcdTZlNDRcdTZlZGZcdTZlYjFcdTZlOThcdTZlZTBcdTZmMmRcdTZlZTJcdTZlYTVcdTZlYTdc''@;'; put 'put ''dTZlYmRcdTZlYmJcdTZlYjdcdTZlZDdcdTZlYjRcdTZlY2ZcdTZlOGZcdTZlYzJcdTZlOWZcdTZmNjJcdTZmNDZcdTZmNDdcdTZmMjRcdTZmMTVcdTZlZjlcdTZmMmZcdTZmMzZcdTZmNGJcdTZmNzRcdTZmMmFcdTZmMDlcdTZmMjlcdTZmODlcdTZmOGRcdTZmOGNcdTZmNzhcdTZmNzJcdTZm''@;'; put 'put ''N2NcdTZmN2FcdTZmZDEiXSxbImU1NDAiLCJcdTkzMGEiLDUxLCJcdTkzM2YiLDEwXSxbImU1ODAiLCJcdTkzNGEiLDMxLCJcdTkzNmJcdTZmYzlcdTZmYTdcdTZmYjlcdTZmYjZcdTZmYzJcdTZmZTFcdTZmZWVcdTZmZGVcdTZmZTBcdTZmZWZcdTcwMWFcdTcwMjNcdTcwMWJcdTcwMzlcdTcw''@;'; put 'put ''MzVcdTcwNGZcdTcwNWVcdTViODBcdTViODRcdTViOTVcdTViOTNcdTViYTVcdTViYjhcdTc1MmZcdTlhOWVcdTY0MzRcdTViZTRcdTViZWVcdTg5MzBcdTViZjBcdThlNDdcdThiMDdcdThmYjZcdThmZDNcdThmZDVcdThmZTVcdThmZWVcdThmZTRcdThmZTlcdThmZTZcdThmZjNcdThmZThc''@;'; put 'put ''dTkwMDVcdTkwMDRcdTkwMGJcdTkwMjZcdTkwMTFcdTkwMGRcdTkwMTZcdTkwMjFcdTkwMzVcdTkwMzZcdTkwMmRcdTkwMmZcdTkwNDRcdTkwNTFcdTkwNTJcdTkwNTBcdTkwNjhcdTkwNThcdTkwNjJcdTkwNWJcdTY2YjlcdTkwNzRcdTkwN2RcdTkwODJcdTkwODhcdTkwODNcdTkwOGJcdTVm''@;'; put 'put ''NTBcdTVmNTdcdTVmNTZcdTVmNThcdTVjM2JcdTU0YWJcdTVjNTBcdTVjNTlcdTViNzFcdTVjNjNcdTVjNjZcdTdmYmNcdTVmMmFcdTVmMjlcdTVmMmRcdTgyNzRcdTVmM2NcdTliM2JcdTVjNmVcdTU5ODFcdTU5ODNcdTU5OGRcdTU5YTlcdTU5YWFcdTU5YTMiXSxbImU2NDAiLCJcdTkzNmMi''@;'; put 'put ''LDM0LCJcdTkzOTAiLDI3XSxbImU2ODAiLCJcdTkzYWMiLDI5LCJcdTkzY2JcdTkzY2NcdTkzY2RcdTU5OTdcdTU5Y2FcdTU5YWJcdTU5OWVcdTU5YTRcdTU5ZDJcdTU5YjJcdTU5YWZcdTU5ZDdcdTU5YmVcdTVhMDVcdTVhMDZcdTU5ZGRcdTVhMDhcdTU5ZTNcdTU5ZDhcdTU5ZjlcdTVhMGNc''@;'; put 'put ''dTVhMDlcdTVhMzJcdTVhMzRcdTVhMTFcdTVhMjNcdTVhMTNcdTVhNDBcdTVhNjdcdTVhNGFcdTVhNTVcdTVhM2NcdTVhNjJcdTVhNzVcdTgwZWNcdTVhYWFcdTVhOWJcdTVhNzdcdTVhN2FcdTVhYmVcdTVhZWJcdTVhYjJcdTVhZDJcdTVhZDRcdTVhYjhcdTVhZTBcdTVhZTNcdTVhZjFcdTVh''@;'; put 'put ''ZDZcdTVhZTZcdTVhZDhcdTVhZGNcdTViMDlcdTViMTdcdTViMTZcdTViMzJcdTViMzdcdTViNDBcdTVjMTVcdTVjMWNcdTViNWFcdTViNjVcdTViNzNcdTViNTFcdTViNTNcdTViNjJcdTlhNzVcdTlhNzdcdTlhNzhcdTlhN2FcdTlhN2ZcdTlhN2RcdTlhODBcdTlhODFcdTlhODVcdTlhODhc''@;'; put 'put ''dTlhOGFcdTlhOTBcdTlhOTJcdTlhOTNcdTlhOTZcdTlhOThcdTlhOWJcdTlhOWNcdTlhOWRcdTlhOWZcdTlhYTBcdTlhYTJcdTlhYTNcdTlhYTVcdTlhYTdcdTdlOWZcdTdlYTFcdTdlYTNcdTdlYTVcdTdlYThcdTdlYTkiXSxbImU3NDAiLCJcdTkzY2UiLDcsIlx1OTNkNyIsNTRdLFsiZTc4''@;'; put 'put ''MCIsIlx1OTQwZSIsMzIsIlx1N2VhZFx1N2ViMFx1N2ViZVx1N2VjMFx1N2VjMVx1N2VjMlx1N2VjOVx1N2VjYlx1N2VjY1x1N2VkMFx1N2VkNFx1N2VkN1x1N2VkYlx1N2VlMFx1N2VlMVx1N2VlOFx1N2VlYlx1N2VlZVx1N2VlZlx1N2VmMVx1N2VmMlx1N2YwZFx1N2VmNlx1N2VmYVx1N2Vm''@;'; put 'put ''Ylx1N2VmZVx1N2YwMVx1N2YwMlx1N2YwM1x1N2YwN1x1N2YwOFx1N2YwYlx1N2YwY1x1N2YwZlx1N2YxMVx1N2YxMlx1N2YxN1x1N2YxOVx1N2YxY1x1N2YxYlx1N2YxZlx1N2YyMSIsNiwiXHU3ZjJhXHU3ZjJiXHU3ZjJjXHU3ZjJkXHU3ZjJmIiw0LCJcdTdmMzVcdTVlN2FcdTc1N2ZcdTVk''@;'; put 'put ''ZGJcdTc1M2VcdTkwOTVcdTczOGVcdTczOTFcdTczYWVcdTczYTJcdTczOWZcdTczY2ZcdTczYzJcdTczZDFcdTczYjdcdTczYjNcdTczYzBcdTczYzlcdTczYzhcdTczZTVcdTczZDlcdTk4N2NcdTc0MGFcdTczZTlcdTczZTdcdTczZGVcdTczYmFcdTczZjJcdTc0MGZcdTc0MmFcdTc0NWJc''@;'; put 'put ''dTc0MjZcdTc0MjVcdTc0MjhcdTc0MzBcdTc0MmVcdTc0MmMiXSxbImU4NDAiLCJcdTk0MmYiLDE0LCJcdTk0M2YiLDQzLCJcdTk0NmNcdTk0NmRcdTk0NmVcdTk0NmYiXSxbImU4ODAiLCJcdTk0NzAiLDIwLCJcdTk0OTFcdTk0OTZcdTk0OThcdTk0YzdcdTk0Y2ZcdTk0ZDNcdTk0ZDRcdTk0''@;'; put 'put ''ZGFcdTk0ZTZcdTk0ZmJcdTk1MWNcdTk1MjBcdTc0MWJcdTc0MWFcdTc0NDFcdTc0NWNcdTc0NTdcdTc0NTVcdTc0NTlcdTc0NzdcdTc0NmRcdTc0N2VcdTc0OWNcdTc0OGVcdTc0ODBcdTc0ODFcdTc0ODdcdTc0OGJcdTc0OWVcdTc0YThcdTc0YTlcdTc0OTBcdTc0YTdcdTc0ZDJcdTc0YmFc''@;'; put 'put ''dTk3ZWFcdTk3ZWJcdTk3ZWNcdTY3NGNcdTY3NTNcdTY3NWVcdTY3NDhcdTY3NjlcdTY3YTVcdTY3ODdcdTY3NmFcdTY3NzNcdTY3OThcdTY3YTdcdTY3NzVcdTY3YThcdTY3OWVcdTY3YWRcdTY3OGJcdTY3NzdcdTY3N2NcdTY3ZjBcdTY4MDlcdTY3ZDhcdTY4MGFcdTY3ZTlcdTY3YjBcdTY4''@;'; put 'put ''MGNcdTY3ZDlcdTY3YjVcdTY3ZGFcdTY3YjNcdTY3ZGRcdTY4MDBcdTY3YzNcdTY3YjhcdTY3ZTJcdTY4MGVcdTY3YzFcdTY3ZmRcdTY4MzJcdTY4MzNcdTY4NjBcdTY4NjFcdTY4NGVcdTY4NjJcdTY4NDRcdTY4NjRcdTY4ODNcdTY4MWRcdTY4NTVcdTY4NjZcdTY4NDFcdTY4NjdcdTY4NDBc''@;'; put 'put ''dTY4M2VcdTY4NGFcdTY4NDlcdTY4MjlcdTY4YjVcdTY4OGZcdTY4NzRcdTY4NzdcdTY4OTNcdTY4NmJcdTY4YzJcdTY5NmVcdTY4ZmNcdTY5MWZcdTY5MjBcdTY4ZjkiXSxbImU5NDAiLCJcdTk1MjdcdTk1MzNcdTk1M2RcdTk1NDNcdTk1NDhcdTk1NGJcdTk1NTVcdTk1NWFcdTk1NjBcdTk1''@;'; put 'put ''NmVcdTk1NzRcdTk1NzVcdTk1NzciLDcsIlx1OTU4MCIsNDJdLFsiZTk4MCIsIlx1OTVhYiIsMzIsIlx1NjkyNFx1NjhmMFx1NjkwYlx1NjkwMVx1Njk1N1x1NjhlM1x1NjkxMFx1Njk3MVx1NjkzOVx1Njk2MFx1Njk0Mlx1Njk1ZFx1Njk4NFx1Njk2Ylx1Njk4MFx1Njk5OFx1Njk3OFx1Njkz''@;'; put 'put ''NFx1NjljY1x1Njk4N1x1Njk4OFx1NjljZVx1Njk4OVx1Njk2Nlx1Njk2M1x1Njk3OVx1Njk5Ylx1NjlhN1x1NjliYlx1NjlhYlx1NjlhZFx1NjlkNFx1NjliMVx1NjljMVx1NjljYVx1NjlkZlx1Njk5NVx1NjllMFx1Njk4ZFx1NjlmZlx1NmEyZlx1NjllZFx1NmExN1x1NmExOFx1NmE2NVx1''@;'; put 'put ''NjlmMlx1NmE0NFx1NmEzZVx1NmFhMFx1NmE1MFx1NmE1Ylx1NmEzNVx1NmE4ZVx1NmE3OVx1NmEzZFx1NmEyOFx1NmE1OFx1NmE3Y1x1NmE5MVx1NmE5MFx1NmFhOVx1NmE5N1x1NmFhYlx1NzMzN1x1NzM1Mlx1NmI4MVx1NmI4Mlx1NmI4N1x1NmI4NFx1NmI5Mlx1NmI5M1x1NmI4ZFx1NmI5''@;'; put 'put ''YVx1NmI5Ylx1NmJhMVx1NmJhYVx1OGY2Ylx1OGY2ZFx1OGY3MVx1OGY3Mlx1OGY3M1x1OGY3NVx1OGY3Nlx1OGY3OFx1OGY3N1x1OGY3OVx1OGY3YVx1OGY3Y1x1OGY3ZVx1OGY4MVx1OGY4Mlx1OGY4NFx1OGY4N1x1OGY4YiJdLFsiZWE0MCIsIlx1OTVjYyIsMjcsIlx1OTVlY1x1OTVmZlx1''@;'; put 'put ''OTYwN1x1OTYxM1x1OTYxOFx1OTYxYlx1OTYxZVx1OTYyMFx1OTYyMyIsNiwiXHU5NjJiXHU5NjJjXHU5NjJkXHU5NjJmXHU5NjMwXHU5NjM3XHU5NjM4XHU5NjM5XHU5NjNhXHU5NjNlXHU5NjQxXHU5NjQzXHU5NjRhXHU5NjRlXHU5NjRmXHU5NjUxXHU5NjUyXHU5NjUzXHU5NjU2XHU5NjU3''@;'; put 'put ''Il0sWyJlYTgwIiwiXHU5NjU4XHU5NjU5XHU5NjVhXHU5NjVjXHU5NjVkXHU5NjVlXHU5NjYwXHU5NjYzXHU5NjY1XHU5NjY2XHU5NjZiXHU5NjZkIiw0LCJcdTk2NzNcdTk2NzgiLDEyLCJcdTk2ODdcdTk2ODlcdTk2OGFcdThmOGRcdThmOGVcdThmOGZcdThmOThcdThmOWFcdThlY2VcdTYy''@;'; put 'put ''MGJcdTYyMTdcdTYyMWJcdTYyMWZcdTYyMjJcdTYyMjFcdTYyMjVcdTYyMjRcdTYyMmNcdTgxZTdcdTc0ZWZcdTc0ZjRcdTc0ZmZcdTc1MGZcdTc1MTFcdTc1MTNcdTY1MzRcdTY1ZWVcdTY1ZWZcdTY1ZjBcdTY2MGFcdTY2MTlcdTY3NzJcdTY2MDNcdTY2MTVcdTY2MDBcdTcwODVcdTY2Zjdc''@;'; put 'put ''dTY2MWRcdTY2MzRcdTY2MzFcdTY2MzZcdTY2MzVcdTgwMDZcdTY2NWZcdTY2NTRcdTY2NDFcdTY2NGZcdTY2NTZcdTY2NjFcdTY2NTdcdTY2NzdcdTY2ODRcdTY2OGNcdTY2YTdcdTY2OWRcdTY2YmVcdTY2ZGJcdTY2ZGNcdTY2ZTZcdTY2ZTlcdThkMzJcdThkMzNcdThkMzZcdThkM2JcdThk''@;'; put 'put ''M2RcdThkNDBcdThkNDVcdThkNDZcdThkNDhcdThkNDlcdThkNDdcdThkNGRcdThkNTVcdThkNTlcdTg5YzdcdTg5Y2FcdTg5Y2JcdTg5Y2NcdTg5Y2VcdTg5Y2ZcdTg5ZDBcdTg5ZDFcdTcyNmVcdTcyOWZcdTcyNWRcdTcyNjZcdTcyNmZcdTcyN2VcdTcyN2ZcdTcyODRcdTcyOGJcdTcyOGRc''@;'; put 'put ''dTcyOGZcdTcyOTJcdTYzMDhcdTYzMzJcdTYzYjAiXSxbImViNDAiLCJcdTk2OGNcdTk2OGVcdTk2OTFcdTk2OTJcdTk2OTNcdTk2OTVcdTk2OTZcdTk2OWFcdTk2OWJcdTk2OWQiLDksIlx1OTZhOCIsNywiXHU5NmIxXHU5NmIyXHU5NmI0XHU5NmI1XHU5NmI3XHU5NmI4XHU5NmJhXHU5NmJi''@;'; put 'put ''XHU5NmJmXHU5NmMyXHU5NmMzXHU5NmM4XHU5NmNhXHU5NmNiXHU5NmQwXHU5NmQxXHU5NmQzXHU5NmQ0XHU5NmQ2Iiw5LCJcdTk2ZTEiLDYsIlx1OTZlYiJdLFsiZWI4MCIsIlx1OTZlY1x1OTZlZFx1OTZlZVx1OTZmMFx1OTZmMVx1OTZmMlx1OTZmNFx1OTZmNVx1OTZmOFx1OTZmYVx1OTZm''@;'; put 'put ''Ylx1OTZmY1x1OTZmZFx1OTZmZlx1OTcwMlx1OTcwM1x1OTcwNVx1OTcwYVx1OTcwYlx1OTcwY1x1OTcxMFx1OTcxMVx1OTcxMlx1OTcxNFx1OTcxNVx1OTcxNyIsNCwiXHU5NzFkXHU5NzFmXHU5NzIwXHU2NDNmXHU2NGQ4XHU4MDA0XHU2YmVhXHU2YmYzXHU2YmZkXHU2YmY1XHU2YmY5XHU2''@;'; put 'put ''YzA1XHU2YzA3XHU2YzA2XHU2YzBkXHU2YzE1XHU2YzE4XHU2YzE5XHU2YzFhXHU2YzIxXHU2YzI5XHU2YzI0XHU2YzJhXHU2YzMyXHU2NTM1XHU2NTU1XHU2NTZiXHU3MjRkXHU3MjUyXHU3MjU2XHU3MjMwXHU4NjYyXHU1MjE2XHU4MDlmXHU4MDljXHU4MDkzXHU4MGJjXHU2NzBhXHU4MGJk''@;'; put 'put ''XHU4MGIxXHU4MGFiXHU4MGFkXHU4MGI0XHU4MGI3XHU4MGU3XHU4MGU4XHU4MGU5XHU4MGVhXHU4MGRiXHU4MGMyXHU4MGM0XHU4MGQ5XHU4MGNkXHU4MGQ3XHU2NzEwXHU4MGRkXHU4MGViXHU4MGYxXHU4MGY0XHU4MGVkXHU4MTBkXHU4MTBlXHU4MGYyXHU4MGZjXHU2NzE1XHU4MTEyXHU4''@;'; put 'put ''YzVhXHU4MTM2XHU4MTFlXHU4MTJjXHU4MTE4XHU4MTMyXHU4MTQ4XHU4MTRjXHU4MTUzXHU4MTc0XHU4MTU5XHU4MTVhXHU4MTcxXHU4MTYwXHU4MTY5XHU4MTdjXHU4MTdkXHU4MTZkXHU4MTY3XHU1ODRkXHU1YWI1XHU4MTg4XHU4MTgyXHU4MTkxXHU2ZWQ1XHU4MWEzXHU4MWFhXHU4MWNj''@;'; put 'put ''XHU2NzI2XHU4MWNhXHU4MWJiIl0sWyJlYzQwIiwiXHU5NzIxIiw4LCJcdTk3MmJcdTk3MmNcdTk3MmVcdTk3MmZcdTk3MzFcdTk3MzMiLDQsIlx1OTczYVx1OTczYlx1OTczY1x1OTczZFx1OTczZiIsMTgsIlx1OTc1NFx1OTc1NVx1OTc1N1x1OTc1OFx1OTc1YVx1OTc1Y1x1OTc1ZFx1OTc1''@;'; put 'put ''Zlx1OTc2M1x1OTc2NFx1OTc2Nlx1OTc2N1x1OTc2OFx1OTc2YSIsN10sWyJlYzgwIiwiXHU5NzcyXHU5Nzc1XHU5Nzc3Iiw0LCJcdTk3N2QiLDcsIlx1OTc4NiIsNCwiXHU5NzhjXHU5NzhlXHU5NzhmXHU5NzkwXHU5NzkzXHU5Nzk1XHU5Nzk2XHU5Nzk3XHU5Nzk5Iiw0LCJcdTgxYzFcdTgx''@;'; put 'put ''YTZcdTZiMjRcdTZiMzdcdTZiMzlcdTZiNDNcdTZiNDZcdTZiNTlcdTk4ZDFcdTk4ZDJcdTk4ZDNcdTk4ZDVcdTk4ZDlcdTk4ZGFcdTZiYjNcdTVmNDBcdTZiYzJcdTg5ZjNcdTY1OTBcdTlmNTFcdTY1OTNcdTY1YmNcdTY1YzZcdTY1YzRcdTY1YzNcdTY1Y2NcdTY1Y2VcdTY1ZDJcdTY1ZDZc''@;'; put 'put ''dTcwODBcdTcwOWNcdTcwOTZcdTcwOWRcdTcwYmJcdTcwYzBcdTcwYjdcdTcwYWJcdTcwYjFcdTcwZThcdTcwY2FcdTcxMTBcdTcxMTNcdTcxMTZcdTcxMmZcdTcxMzFcdTcxNzNcdTcxNWNcdTcxNjhcdTcxNDVcdTcxNzJcdTcxNGFcdTcxNzhcdTcxN2FcdTcxOThcdTcxYjNcdTcxYjVcdTcx''@;'; put 'put ''YThcdTcxYTBcdTcxZTBcdTcxZDRcdTcxZTdcdTcxZjlcdTcyMWRcdTcyMjhcdTcwNmNcdTcxMThcdTcxNjZcdTcxYjlcdTYyM2VcdTYyM2RcdTYyNDNcdTYyNDhcdTYyNDlcdTc5M2JcdTc5NDBcdTc5NDZcdTc5NDlcdTc5NWJcdTc5NWNcdTc5NTNcdTc5NWFcdTc5NjJcdTc5NTdcdTc5NjBc''@;'; put 'put ''dTc5NmZcdTc5NjdcdTc5N2FcdTc5ODVcdTc5OGFcdTc5OWFcdTc5YTdcdTc5YjNcdTVmZDFcdTVmZDAiXSxbImVkNDAiLCJcdTk3OWVcdTk3OWZcdTk3YTFcdTk3YTJcdTk3YTQiLDYsIlx1OTdhY1x1OTdhZVx1OTdiMFx1OTdiMVx1OTdiM1x1OTdiNSIsNDZdLFsiZWQ4MCIsIlx1OTdlNFx1''@;'; put 'put ''OTdlNVx1OTdlOFx1OTdlZSIsNCwiXHU5N2Y0XHU5N2Y3IiwyMywiXHU2MDNjXHU2MDVkXHU2MDVhXHU2MDY3XHU2MDQxXHU2MDU5XHU2MDYzXHU2MGFiXHU2MTA2XHU2MTBkXHU2MTVkXHU2MWE5XHU2MTlkXHU2MWNiXHU2MWQxXHU2MjA2XHU4MDgwXHU4MDdmXHU2YzkzXHU2Y2Y2XHU2ZGZj''@;'; put 'put ''XHU3N2Y2XHU3N2Y4XHU3ODAwXHU3ODA5XHU3ODE3XHU3ODE4XHU3ODExXHU2NWFiXHU3ODJkXHU3ODFjXHU3ODFkXHU3ODM5XHU3ODNhXHU3ODNiXHU3ODFmXHU3ODNjXHU3ODI1XHU3ODJjXHU3ODIzXHU3ODI5XHU3ODRlXHU3ODZkXHU3ODU2XHU3ODU3XHU3ODI2XHU3ODUwXHU3ODQ3XHU3''@;'; put 'put ''ODRjXHU3ODZhXHU3ODliXHU3ODkzXHU3ODlhXHU3ODg3XHU3ODljXHU3OGExXHU3OGEzXHU3OGIyXHU3OGI5XHU3OGE1XHU3OGQ0XHU3OGQ5XHU3OGM5XHU3OGVjXHU3OGYyXHU3OTA1XHU3OGY0XHU3OTEzXHU3OTI0XHU3OTFlXHU3OTM0XHU5ZjliXHU5ZWY5XHU5ZWZiXHU5ZWZjXHU3NmYx''@;'; put 'put ''XHU3NzA0XHU3NzBkXHU3NmY5XHU3NzA3XHU3NzA4XHU3NzFhXHU3NzIyXHU3NzE5XHU3NzJkXHU3NzI2XHU3NzM1XHU3NzM4XHU3NzUwXHU3NzUxXHU3NzQ3XHU3NzQzXHU3NzVhXHU3NzY4Il0sWyJlZTQwIiwiXHU5ODBmIiw2Ml0sWyJlZTgwIiwiXHU5ODRlIiwzMiwiXHU3NzYyXHU3NzY1''@;'; put 'put ''XHU3NzdmXHU3NzhkXHU3NzdkXHU3NzgwXHU3NzhjXHU3NzkxXHU3NzlmXHU3N2EwXHU3N2IwXHU3N2I1XHU3N2JkXHU3NTNhXHU3NTQwXHU3NTRlXHU3NTRiXHU3NTQ4XHU3NTViXHU3NTcyXHU3NTc5XHU3NTgzXHU3ZjU4XHU3ZjYxXHU3ZjVmXHU4YTQ4XHU3ZjY4XHU3Zjc0XHU3ZjcxXHU3''@;'; put 'put ''Zjc5XHU3ZjgxXHU3ZjdlXHU3NmNkXHU3NmU1XHU4ODMyXHU5NDg1XHU5NDg2XHU5NDg3XHU5NDhiXHU5NDhhXHU5NDhjXHU5NDhkXHU5NDhmXHU5NDkwXHU5NDk0XHU5NDk3XHU5NDk1XHU5NDlhXHU5NDliXHU5NDljXHU5NGEzXHU5NGE0XHU5NGFiXHU5NGFhXHU5NGFkXHU5NGFjXHU5NGFm''@;'; put 'put ''XHU5NGIwXHU5NGIyXHU5NGI0XHU5NGI2Iiw0LCJcdTk0YmNcdTk0YmRcdTk0YmZcdTk0YzRcdTk0YzgiLDYsIlx1OTRkMFx1OTRkMVx1OTRkMlx1OTRkNVx1OTRkNlx1OTRkN1x1OTRkOVx1OTRkOFx1OTRkYlx1OTRkZVx1OTRkZlx1OTRlMFx1OTRlMlx1OTRlNFx1OTRlNVx1OTRlN1x1OTRl''@;'; put 'put ''OFx1OTRlYSJdLFsiZWY0MCIsIlx1OTg2ZiIsNSwiXHU5ODhiXHU5ODhlXHU5ODkyXHU5ODk1XHU5ODk5XHU5OGEzXHU5OGE4IiwzNywiXHU5OGNmXHU5OGQwXHU5OGQ0XHU5OGQ2XHU5OGQ3XHU5OGRiXHU5OGRjXHU5OGRkXHU5OGUwIiw0XSxbImVmODAiLCJcdTk4ZTVcdTk4ZTZcdTk4ZTki''@;'; put 'put ''LDMwLCJcdTk0ZTlcdTk0ZWJcdTk0ZWVcdTk0ZWZcdTk0ZjNcdTk0ZjRcdTk0ZjVcdTk0ZjdcdTk0ZjlcdTk0ZmNcdTk0ZmRcdTk0ZmZcdTk1MDNcdTk1MDJcdTk1MDZcdTk1MDdcdTk1MDlcdTk1MGFcdTk1MGRcdTk1MGVcdTk1MGZcdTk1MTIiLDQsIlx1OTUxOFx1OTUxYlx1OTUxZFx1OTUx''@;'; put 'put ''ZVx1OTUxZlx1OTUyMlx1OTUyYVx1OTUyYlx1OTUyOVx1OTUyY1x1OTUzMVx1OTUzMlx1OTUzNFx1OTUzNlx1OTUzN1x1OTUzOFx1OTUzY1x1OTUzZVx1OTUzZlx1OTU0Mlx1OTUzNVx1OTU0NFx1OTU0NVx1OTU0Nlx1OTU0OVx1OTU0Y1x1OTU0ZVx1OTU0Zlx1OTU1Mlx1OTU1M1x1OTU1NFx1''@;'; put 'put ''OTU1Nlx1OTU1N1x1OTU1OFx1OTU1OVx1OTU1Ylx1OTU1ZVx1OTU1Zlx1OTU1ZFx1OTU2MVx1OTU2Mlx1OTU2NCIsOCwiXHU5NTZmXHU5NTcxXHU5NTcyXHU5NTczXHU5NTNhXHU3N2U3XHU3N2VjXHU5NmM5XHU3OWQ1XHU3OWVkXHU3OWUzXHU3OWViXHU3YTA2XHU1ZDQ3XHU3YTAzXHU3YTAy''@;'; put 'put ''XHU3YTFlXHU3YTE0Il0sWyJmMDQwIiwiXHU5OTA4Iiw0LCJcdTk5MGVcdTk5MGZcdTk5MTEiLDI4LCJcdTk5MmYiLDI2XSxbImYwODAiLCJcdTk5NGEiLDksIlx1OTk1NiIsMTIsIlx1OTk2NFx1OTk2Nlx1OTk3M1x1OTk3OFx1OTk3OVx1OTk3Ylx1OTk3ZVx1OTk4Mlx1OTk4M1x1OTk4OVx1''@;'; put 'put ''N2EzOVx1N2EzN1x1N2E1MVx1OWVjZlx1OTlhNVx1N2E3MFx1NzY4OFx1NzY4ZVx1NzY5M1x1NzY5OVx1NzZhNFx1NzRkZVx1NzRlMFx1NzUyY1x1OWUyMFx1OWUyMlx1OWUyOCIsNCwiXHU5ZTMyXHU5ZTMxXHU5ZTM2XHU5ZTM4XHU5ZTM3XHU5ZTM5XHU5ZTNhXHU5ZTNlXHU5ZTQxXHU5ZTQy''@;'; put 'put ''XHU5ZTQ0XHU5ZTQ2XHU5ZTQ3XHU5ZTQ4XHU5ZTQ5XHU5ZTRiXHU5ZTRjXHU5ZTRlXHU5ZTUxXHU5ZTU1XHU5ZTU3XHU5ZTVhXHU5ZTViXHU5ZTVjXHU5ZTVlXHU5ZTYzXHU5ZTY2Iiw2LCJcdTllNzFcdTllNmRcdTllNzNcdTc1OTJcdTc1OTRcdTc1OTZcdTc1YTBcdTc1OWRcdTc1YWNcdTc1''@;'; put 'put ''YTNcdTc1YjNcdTc1YjRcdTc1YjhcdTc1YzRcdTc1YjFcdTc1YjBcdTc1YzNcdTc1YzJcdTc1ZDZcdTc1Y2RcdTc1ZTNcdTc1ZThcdTc1ZTZcdTc1ZTRcdTc1ZWJcdTc1ZTdcdTc2MDNcdTc1ZjFcdTc1ZmNcdTc1ZmZcdTc2MTBcdTc2MDBcdTc2MDVcdTc2MGNcdTc2MTdcdTc2MGFcdTc2MjVc''@;'; put 'put ''dTc2MThcdTc2MTVcdTc2MTkiXSxbImYxNDAiLCJcdTk5OGNcdTk5OGVcdTk5OWEiLDEwLCJcdTk5YTZcdTk5YTdcdTk5YTkiLDQ3XSxbImYxODAiLCJcdTk5ZDkiLDMyLCJcdTc2MWJcdTc2M2NcdTc2MjJcdTc2MjBcdTc2NDBcdTc2MmRcdTc2MzBcdTc2M2ZcdTc2MzVcdTc2NDNcdTc2M2Vc''@;'; put 'put ''dTc2MzNcdTc2NGRcdTc2NWVcdTc2NTRcdTc2NWNcdTc2NTZcdTc2NmJcdTc2NmZcdTdmY2FcdTdhZTZcdTdhNzhcdTdhNzlcdTdhODBcdTdhODZcdTdhODhcdTdhOTVcdTdhYTZcdTdhYTBcdTdhYWNcdTdhYThcdTdhYWRcdTdhYjNcdTg4NjRcdTg4NjlcdTg4NzJcdTg4N2RcdTg4N2ZcdTg4''@;'; put 'put ''ODJcdTg4YTJcdTg4YzZcdTg4YjdcdTg4YmNcdTg4YzlcdTg4ZTJcdTg4Y2VcdTg4ZTNcdTg4ZTVcdTg4ZjFcdTg5MWFcdTg4ZmNcdTg4ZThcdTg4ZmVcdTg4ZjBcdTg5MjFcdTg5MTlcdTg5MTNcdTg5MWJcdTg5MGFcdTg5MzRcdTg5MmJcdTg5MzZcdTg5NDFcdTg5NjZcdTg5N2JcdTc1OGJc''@;'; put 'put ''dTgwZTVcdTc2YjJcdTc2YjRcdTc3ZGNcdTgwMTJcdTgwMTRcdTgwMTZcdTgwMWNcdTgwMjBcdTgwMjJcdTgwMjVcdTgwMjZcdTgwMjdcdTgwMjlcdTgwMjhcdTgwMzFcdTgwMGJcdTgwMzVcdTgwNDNcdTgwNDZcdTgwNGRcdTgwNTJcdTgwNjlcdTgwNzFcdTg5ODNcdTk4NzhcdTk4ODBcdTk4''@;'; put 'put ''ODMiXSxbImYyNDAiLCJcdTk5ZmEiLDYyXSxbImYyODAiLCJcdTlhMzkiLDMyLCJcdTk4ODlcdTk4OGNcdTk4OGRcdTk4OGZcdTk4OTRcdTk4OWFcdTk4OWJcdTk4OWVcdTk4OWZcdTk4YTFcdTk4YTJcdTk4YTVcdTk4YTZcdTg2NGRcdTg2NTRcdTg2NmNcdTg2NmVcdTg2N2ZcdTg2N2FcdTg2''@;'; put 'put ''N2NcdTg2N2JcdTg2YThcdTg2OGRcdTg2OGJcdTg2YWNcdTg2OWRcdTg2YTdcdTg2YTNcdTg2YWFcdTg2OTNcdTg2YTlcdTg2YjZcdTg2YzRcdTg2YjVcdTg2Y2VcdTg2YjBcdTg2YmFcdTg2YjFcdTg2YWZcdTg2YzlcdTg2Y2ZcdTg2YjRcdTg2ZTlcdTg2ZjFcdTg2ZjJcdTg2ZWRcdTg2ZjNc''@;'; put 'put ''dTg2ZDBcdTg3MTNcdTg2ZGVcdTg2ZjRcdTg2ZGZcdTg2ZDhcdTg2ZDFcdTg3MDNcdTg3MDdcdTg2ZjhcdTg3MDhcdTg3MGFcdTg3MGRcdTg3MDlcdTg3MjNcdTg3M2JcdTg3MWVcdTg3MjVcdTg3MmVcdTg3MWFcdTg3M2VcdTg3NDhcdTg3MzRcdTg3MzFcdTg3MjlcdTg3MzdcdTg3M2ZcdTg3''@;'; put 'put ''ODJcdTg3MjJcdTg3N2RcdTg3N2VcdTg3N2JcdTg3NjBcdTg3NzBcdTg3NGNcdTg3NmVcdTg3OGJcdTg3NTNcdTg3NjNcdTg3N2NcdTg3NjRcdTg3NTlcdTg3NjVcdTg3OTNcdTg3YWZcdTg3YThcdTg3ZDIiXSxbImYzNDAiLCJcdTlhNWEiLDE3LCJcdTlhNzJcdTlhODNcdTlhODlcdTlhOGRc''@;'; put 'put ''dTlhOGVcdTlhOTRcdTlhOTVcdTlhOTlcdTlhYTZcdTlhYTkiLDYsIlx1OWFiMlx1OWFiM1x1OWFiNFx1OWFiNVx1OWFiOVx1OWFiYlx1OWFiZFx1OWFiZVx1OWFiZlx1OWFjM1x1OWFjNFx1OWFjNiIsNCwiXHU5YWNkXHU5YWNlXHU5YWNmXHU5YWQwXHU5YWQyXHU5YWQ0XHU5YWQ1XHU5YWQ2''@;'; put 'put ''XHU5YWQ3XHU5YWQ5XHU5YWRhXHU5YWRiXHU5YWRjIl0sWyJmMzgwIiwiXHU5YWRkXHU5YWRlXHU5YWUwXHU5YWUyXHU5YWUzXHU5YWU0XHU5YWU1XHU5YWU3XHU5YWU4XHU5YWU5XHU5YWVhXHU5YWVjXHU5YWVlXHU5YWYwIiw4LCJcdTlhZmFcdTlhZmMiLDYsIlx1OWIwNFx1OWIwNVx1OWIw''@;'; put 'put ''Nlx1ODdjNlx1ODc4OFx1ODc4NVx1ODdhZFx1ODc5N1x1ODc4M1x1ODdhYlx1ODdlNVx1ODdhY1x1ODdiNVx1ODdiM1x1ODdjYlx1ODdkM1x1ODdiZFx1ODdkMVx1ODdjMFx1ODdjYVx1ODdkYlx1ODdlYVx1ODdlMFx1ODdlZVx1ODgxNlx1ODgxM1x1ODdmZVx1ODgwYVx1ODgxYlx1ODgyMVx1''@;'; put 'put ''ODgzOVx1ODgzY1x1N2YzNlx1N2Y0Mlx1N2Y0NFx1N2Y0NVx1ODIxMFx1N2FmYVx1N2FmZFx1N2IwOFx1N2IwM1x1N2IwNFx1N2IxNVx1N2IwYVx1N2IyYlx1N2IwZlx1N2I0N1x1N2IzOFx1N2IyYVx1N2IxOVx1N2IyZVx1N2IzMVx1N2IyMFx1N2IyNVx1N2IyNFx1N2IzM1x1N2IzZVx1N2Ix''@;'; put 'put ''ZVx1N2I1OFx1N2I1YVx1N2I0NVx1N2I3NVx1N2I0Y1x1N2I1ZFx1N2I2MFx1N2I2ZVx1N2I3Ylx1N2I2Mlx1N2I3Mlx1N2I3MVx1N2I5MFx1N2JhNlx1N2JhN1x1N2JiOFx1N2JhY1x1N2I5ZFx1N2JhOFx1N2I4NVx1N2JhYVx1N2I5Y1x1N2JhMlx1N2JhYlx1N2JiNFx1N2JkMVx1N2JjMVx1''@;'; put 'put ''N2JjY1x1N2JkZFx1N2JkYVx1N2JlNVx1N2JlNlx1N2JlYVx1N2MwY1x1N2JmZVx1N2JmY1x1N2MwZlx1N2MxNlx1N2MwYiJdLFsiZjQ0MCIsIlx1OWIwN1x1OWIwOSIsNSwiXHU5YjEwXHU5YjExXHU5YjEyXHU5YjE0IiwxMCwiXHU5YjIwXHU5YjIxXHU5YjIyXHU5YjI0IiwxMCwiXHU5YjMw''@;'; put 'put ''XHU5YjMxXHU5YjMzIiw3LCJcdTliM2RcdTliM2VcdTliM2ZcdTliNDBcdTliNDZcdTliNGFcdTliNGJcdTliNGNcdTliNGVcdTliNTBcdTliNTJcdTliNTNcdTliNTUiLDVdLFsiZjQ4MCIsIlx1OWI1YiIsMzIsIlx1N2MxZlx1N2MyYVx1N2MyNlx1N2MzOFx1N2M0MVx1N2M0MFx1ODFmZVx1''@;'; put 'put ''ODIwMVx1ODIwMlx1ODIwNFx1ODFlY1x1ODg0NFx1ODIyMVx1ODIyMlx1ODIyM1x1ODIyZFx1ODIyZlx1ODIyOFx1ODIyYlx1ODIzOFx1ODIzYlx1ODIzM1x1ODIzNFx1ODIzZVx1ODI0NFx1ODI0OVx1ODI0Ylx1ODI0Zlx1ODI1YVx1ODI1Zlx1ODI2OFx1ODg3ZVx1ODg4NVx1ODg4OFx1ODhk''@;'; put 'put ''OFx1ODhkZlx1ODk1ZVx1N2Y5ZFx1N2Y5Zlx1N2ZhN1x1N2ZhZlx1N2ZiMFx1N2ZiMlx1N2M3Y1x1NjU0OVx1N2M5MVx1N2M5ZFx1N2M5Y1x1N2M5ZVx1N2NhMlx1N2NiMlx1N2NiY1x1N2NiZFx1N2NjMVx1N2NjN1x1N2NjY1x1N2NjZFx1N2NjOFx1N2NjNVx1N2NkN1x1N2NlOFx1ODI2ZVx1''@;'; put 'put ''NjZhOFx1N2ZiZlx1N2ZjZVx1N2ZkNVx1N2ZlNVx1N2ZlMVx1N2ZlNlx1N2ZlOVx1N2ZlZVx1N2ZmM1x1N2NmOFx1N2Q3N1x1N2RhNlx1N2RhZVx1N2U0N1x1N2U5Ylx1OWViOFx1OWViNFx1OGQ3M1x1OGQ4NFx1OGQ5NFx1OGQ5MVx1OGRiMVx1OGQ2N1x1OGQ2ZFx1OGM0N1x1OGM0OVx1OTE0''@;'; put 'put ''YVx1OTE1MFx1OTE0ZVx1OTE0Zlx1OTE2NCJdLFsiZjU0MCIsIlx1OWI3YyIsNjJdLFsiZjU4MCIsIlx1OWJiYiIsMzIsIlx1OTE2Mlx1OTE2MVx1OTE3MFx1OTE2OVx1OTE2Zlx1OTE3ZFx1OTE3ZVx1OTE3Mlx1OTE3NFx1OTE3OVx1OTE4Y1x1OTE4NVx1OTE5MFx1OTE4ZFx1OTE5MVx1OTFh''@;'; put 'put ''Mlx1OTFhM1x1OTFhYVx1OTFhZFx1OTFhZVx1OTFhZlx1OTFiNVx1OTFiNFx1OTFiYVx1OGM1NVx1OWU3ZVx1OGRiOFx1OGRlYlx1OGUwNVx1OGU1OVx1OGU2OVx1OGRiNVx1OGRiZlx1OGRiY1x1OGRiYVx1OGRjNFx1OGRkNlx1OGRkN1x1OGRkYVx1OGRkZVx1OGRjZVx1OGRjZlx1OGRkYlx1''@;'; put 'put ''OGRjNlx1OGRlY1x1OGRmN1x1OGRmOFx1OGRlM1x1OGRmOVx1OGRmYlx1OGRlNFx1OGUwOVx1OGRmZFx1OGUxNFx1OGUxZFx1OGUxZlx1OGUyY1x1OGUyZVx1OGUyM1x1OGUyZlx1OGUzYVx1OGU0MFx1OGUzOVx1OGUzNVx1OGUzZFx1OGUzMVx1OGU0OVx1OGU0MVx1OGU0Mlx1OGU1MVx1OGU1''@;'; put 'put ''Mlx1OGU0YVx1OGU3MFx1OGU3Nlx1OGU3Y1x1OGU2Zlx1OGU3NFx1OGU4NVx1OGU4Zlx1OGU5NFx1OGU5MFx1OGU5Y1x1OGU5ZVx1OGM3OFx1OGM4Mlx1OGM4YVx1OGM4NVx1OGM5OFx1OGM5NFx1NjU5Ylx1ODlkNlx1ODlkZVx1ODlkYVx1ODlkYyJdLFsiZjY0MCIsIlx1OWJkYyIsNjJdLFsi''@;'; put 'put ''ZjY4MCIsIlx1OWMxYiIsMzIsIlx1ODllNVx1ODllYlx1ODllZlx1OGEzZVx1OGIyNlx1OTc1M1x1OTZlOVx1OTZmM1x1OTZlZlx1OTcwNlx1OTcwMVx1OTcwOFx1OTcwZlx1OTcwZVx1OTcyYVx1OTcyZFx1OTczMFx1OTczZVx1OWY4MFx1OWY4M1x1OWY4NSIsNSwiXHU5ZjhjXHU5ZWZlXHU5''@;'; put 'put ''ZjBiXHU5ZjBkXHU5NmI5XHU5NmJjXHU5NmJkXHU5NmNlXHU5NmQyXHU3N2JmXHU5NmUwXHU5MjhlXHU5MmFlXHU5MmM4XHU5MzNlXHU5MzZhXHU5M2NhXHU5MzhmXHU5NDNlXHU5NDZiXHU5YzdmXHU5YzgyXHU5Yzg1XHU5Yzg2XHU5Yzg3XHU5Yzg4XHU3YTIzXHU5YzhiXHU5YzhlXHU5Yzkw''@;'; put 'put ''XHU5YzkxXHU5YzkyXHU5Yzk0XHU5Yzk1XHU5YzlhXHU5YzliXHU5YzllIiw1LCJcdTljYTUiLDQsIlx1OWNhYlx1OWNhZFx1OWNhZVx1OWNiMCIsNywiXHU5Y2JhXHU5Y2JiXHU5Y2JjXHU5Y2JkXHU5Y2M0XHU5Y2M1XHU5Y2M2XHU5Y2M3XHU5Y2NhXHU5Y2NiIl0sWyJmNzQwIiwiXHU5YzNj''@;'; put 'put ''Iiw2Ml0sWyJmNzgwIiwiXHU5YzdiXHU5YzdkXHU5YzdlXHU5YzgwXHU5YzgzXHU5Yzg0XHU5Yzg5XHU5YzhhXHU5YzhjXHU5YzhmXHU5YzkzXHU5Yzk2XHU5Yzk3XHU5Yzk4XHU5Yzk5XHU5YzlkXHU5Y2FhXHU5Y2FjXHU5Y2FmXHU5Y2I5XHU5Y2JlIiw0LCJcdTljYzhcdTljYzlcdTljZDFc''@;'; put 'put ''dTljZDJcdTljZGFcdTljZGJcdTljZTBcdTljZTFcdTljY2MiLDQsIlx1OWNkM1x1OWNkNFx1OWNkNVx1OWNkN1x1OWNkOFx1OWNkOVx1OWNkY1x1OWNkZFx1OWNkZlx1OWNlMlx1OTc3Y1x1OTc4NVx1OTc5MVx1OTc5Mlx1OTc5NFx1OTdhZlx1OTdhYlx1OTdhM1x1OTdiMlx1OTdiNFx1OWFi''@;'; put 'put ''MVx1OWFiMFx1OWFiN1x1OWU1OFx1OWFiNlx1OWFiYVx1OWFiY1x1OWFjMVx1OWFjMFx1OWFjNVx1OWFjMlx1OWFjYlx1OWFjY1x1OWFkMVx1OWI0NVx1OWI0M1x1OWI0N1x1OWI0OVx1OWI0OFx1OWI0ZFx1OWI1MVx1OThlOFx1OTkwZFx1OTkyZVx1OTk1NVx1OTk1NFx1OWFkZlx1OWFlMVx1''@;'; put 'put ''OWFlNlx1OWFlZlx1OWFlYlx1OWFmYlx1OWFlZFx1OWFmOVx1OWIwOFx1OWIwZlx1OWIxM1x1OWIxZlx1OWIyM1x1OWViZFx1OWViZVx1N2UzYlx1OWU4Mlx1OWU4N1x1OWU4OFx1OWU4Ylx1OWU5Mlx1OTNkNlx1OWU5ZFx1OWU5Zlx1OWVkYlx1OWVkY1x1OWVkZFx1OWVlMFx1OWVkZlx1OWVl''@;'; put 'put ''Mlx1OWVlOVx1OWVlN1x1OWVlNVx1OWVlYVx1OWVlZlx1OWYyMlx1OWYyY1x1OWYyZlx1OWYzOVx1OWYzN1x1OWYzZFx1OWYzZVx1OWY0NCJdLFsiZjg0MCIsIlx1OWNlMyIsNjJdLFsiZjg4MCIsIlx1OWQyMiIsMzJdLFsiZjk0MCIsIlx1OWQ0MyIsNjJdLFsiZjk4MCIsIlx1OWQ4MiIsMzJd''@;'; put 'put ''LFsiZmE0MCIsIlx1OWRhMyIsNjJdLFsiZmE4MCIsIlx1OWRlMiIsMzJdLFsiZmI0MCIsIlx1OWUwMyIsMjcsIlx1OWUyNFx1OWUyN1x1OWUyZVx1OWUzMFx1OWUzNFx1OWUzYlx1OWUzY1x1OWU0MFx1OWU0ZFx1OWU1MFx1OWU1Mlx1OWU1M1x1OWU1NFx1OWU1Nlx1OWU1OVx1OWU1ZFx1OWU1''@;'; put 'put ''Zlx1OWU2MFx1OWU2MVx1OWU2Mlx1OWU2NVx1OWU2ZVx1OWU2Zlx1OWU3Mlx1OWU3NCIsOSwiXHU5ZTgwIl0sWyJmYjgwIiwiXHU5ZTgxXHU5ZTgzXHU5ZTg0XHU5ZTg1XHU5ZTg2XHU5ZTg5XHU5ZThhXHU5ZThjIiw1LCJcdTllOTQiLDgsIlx1OWU5ZVx1OWVhMCIsNSwiXHU5ZWE3XHU5ZWE4''@;'; put 'put ''XHU5ZWE5XHU5ZWFhIl0sWyJmYzQwIiwiXHU5ZWFiIiw4LCJcdTllYjVcdTllYjZcdTllYjdcdTllYjlcdTllYmFcdTllYmNcdTllYmYiLDQsIlx1OWVjNVx1OWVjNlx1OWVjN1x1OWVjOFx1OWVjYVx1OWVjYlx1OWVjY1x1OWVkMFx1OWVkMlx1OWVkM1x1OWVkNVx1OWVkNlx1OWVkN1x1OWVk''@;'; put 'put ''OVx1OWVkYVx1OWVkZVx1OWVlMVx1OWVlM1x1OWVlNFx1OWVlNlx1OWVlOFx1OWVlYlx1OWVlY1x1OWVlZFx1OWVlZVx1OWVmMCIsOCwiXHU5ZWZhXHU5ZWZkXHU5ZWZmIiw2XSxbImZjODAiLCJcdTlmMDYiLDQsIlx1OWYwY1x1OWYwZlx1OWYxMVx1OWYxMlx1OWYxNFx1OWYxNVx1OWYxNlx1''@;'; put 'put ''OWYxOFx1OWYxYSIsNSwiXHU5ZjIxXHU5ZjIzIiw4LCJcdTlmMmRcdTlmMmVcdTlmMzBcdTlmMzEiXSxbImZkNDAiLCJcdTlmMzIiLDQsIlx1OWYzOFx1OWYzYVx1OWYzY1x1OWYzZiIsNCwiXHU5ZjQ1IiwxMCwiXHU5ZjUyIiwzOF0sWyJmZDgwIiwiXHU5Zjc5Iiw1LCJcdTlmODFcdTlmODJc''@;'; put 'put ''dTlmOGQiLDExLCJcdTlmOWNcdTlmOWRcdTlmOWVcdTlmYTEiLDQsIlx1ZjkyY1x1Zjk3OVx1Zjk5NVx1ZjllN1x1ZjlmMSJdLFsiZmU0MCIsIlx1ZmEwY1x1ZmEwZFx1ZmEwZVx1ZmEwZlx1ZmExMVx1ZmExM1x1ZmExNFx1ZmExOFx1ZmExZlx1ZmEyMFx1ZmEyMVx1ZmEyM1x1ZmEyNFx1ZmEy''@;'; put 'put ''N1x1ZmEyOFx1ZmEyOSJdXScpfSw3NzM0ODpYZT0+eyJ1c2Ugc3RyaWN0IjtYZS5leHBvcnRzPUpTT04ucGFyc2UoJ1tbIjAiLCJcXHUwMDAwIiwxMjddLFsiODE0MSIsIlx1YWMwMlx1YWMwM1x1YWMwNVx1YWMwNlx1YWMwYiIsNCwiXHVhYzE4XHVhYzFlXHVhYzFmXHVhYzIxXHVhYzIyXHVh''@;'; put 'put ''YzIzXHVhYzI1Iiw2LCJcdWFjMmVcdWFjMzJcdWFjMzNcdWFjMzQiXSxbIjgxNjEiLCJcdWFjMzVcdWFjMzZcdWFjMzdcdWFjM2FcdWFjM2JcdWFjM2RcdWFjM2VcdWFjM2ZcdWFjNDEiLDksIlx1YWM0Y1x1YWM0ZSIsNSwiXHVhYzU1Il0sWyI4MTgxIiwiXHVhYzU2XHVhYzU3XHVhYzU5XHVh''@;'; put 'put ''YzVhXHVhYzViXHVhYzVkIiwxOCwiXHVhYzcyXHVhYzczXHVhYzc1XHVhYzc2XHVhYzc5XHVhYzdiIiw0LCJcdWFjODJcdWFjODdcdWFjODhcdWFjOGRcdWFjOGVcdWFjOGZcdWFjOTFcdWFjOTJcdWFjOTNcdWFjOTUiLDYsIlx1YWM5ZVx1YWNhMiIsNSwiXHVhY2FiXHVhY2FkXHVhY2FlXHVh''@;'; put 'put ''Y2IxIiw2LCJcdWFjYmFcdWFjYmVcdWFjYmZcdWFjYzBcdWFjYzJcdWFjYzNcdWFjYzVcdWFjYzZcdWFjYzdcdWFjYzlcdWFjY2FcdWFjY2JcdWFjY2QiLDcsIlx1YWNkNlx1YWNkOCIsNywiXHVhY2UyXHVhY2UzXHVhY2U1XHVhY2U2XHVhY2U5XHVhY2ViXHVhY2VkXHVhY2VlXHVhY2YyXHVh''@;'; put 'put ''Y2Y0XHVhY2Y3Iiw0LCJcdWFjZmVcdWFjZmZcdWFkMDFcdWFkMDJcdWFkMDNcdWFkMDVcdWFkMDciLDQsIlx1YWQwZVx1YWQxMFx1YWQxMlx1YWQxMyJdLFsiODI0MSIsIlx1YWQxNFx1YWQxNVx1YWQxNlx1YWQxN1x1YWQxOVx1YWQxYVx1YWQxYlx1YWQxZFx1YWQxZVx1YWQxZlx1YWQyMSIs''@;'; put 'put ''NywiXHVhZDJhXHVhZDJiXHVhZDJlIiw1XSxbIjgyNjEiLCJcdWFkMzZcdWFkMzdcdWFkMzlcdWFkM2FcdWFkM2JcdWFkM2QiLDYsIlx1YWQ0Nlx1YWQ0OFx1YWQ0YSIsNSwiXHVhZDUxXHVhZDUyXHVhZDUzXHVhZDU1XHVhZDU2XHVhZDU3Il0sWyI4MjgxIiwiXHVhZDU5Iiw3LCJcdWFkNjJc''@;'; put 'put ''dWFkNjQiLDcsIlx1YWQ2ZVx1YWQ2Zlx1YWQ3MVx1YWQ3Mlx1YWQ3N1x1YWQ3OFx1YWQ3OVx1YWQ3YVx1YWQ3ZVx1YWQ4MFx1YWQ4MyIsNCwiXHVhZDhhXHVhZDhiXHVhZDhkXHVhZDhlXHVhZDhmXHVhZDkxIiwxMCwiXHVhZDllIiw1LCJcdWFkYTUiLDE3LCJcdWFkYjgiLDcsIlx1YWRjMlx1''@;'; put 'put ''YWRjM1x1YWRjNVx1YWRjNlx1YWRjN1x1YWRjOSIsNiwiXHVhZGQyXHVhZGQ0Iiw3LCJcdWFkZGRcdWFkZGVcdWFkZGZcdWFkZTFcdWFkZTJcdWFkZTNcdWFkZTUiLDE4XSxbIjgzNDEiLCJcdWFkZmFcdWFkZmJcdWFkZmRcdWFkZmVcdWFlMDIiLDUsIlx1YWUwYVx1YWUwY1x1YWUwZSIsNSwi''@;'; put 'put ''XHVhZTE1Iiw3XSxbIjgzNjEiLCJcdWFlMWQiLDE4LCJcdWFlMzJcdWFlMzNcdWFlMzVcdWFlMzZcdWFlMzlcdWFlM2JcdWFlM2MiXSxbIjgzODEiLCJcdWFlM2RcdWFlM2VcdWFlM2ZcdWFlNDJcdWFlNDRcdWFlNDdcdWFlNDhcdWFlNDlcdWFlNGJcdWFlNGZcdWFlNTFcdWFlNTJcdWFlNTNc''@;'; put 'put ''dWFlNTVcdWFlNTciLDQsIlx1YWU1ZVx1YWU2Mlx1YWU2M1x1YWU2NFx1YWU2Nlx1YWU2N1x1YWU2YVx1YWU2Ylx1YWU2ZFx1YWU2ZVx1YWU2Zlx1YWU3MSIsNiwiXHVhZTdhXHVhZTdlIiw1LCJcdWFlODYiLDUsIlx1YWU4ZCIsNDYsIlx1YWViZlx1YWVjMVx1YWVjMlx1YWVjM1x1YWVjNSIs''@;'; put 'put ''NiwiXHVhZWNlXHVhZWQyIiw1LCJcdWFlZGFcdWFlZGJcdWFlZGQiLDhdLFsiODQ0MSIsIlx1YWVlNlx1YWVlN1x1YWVlOVx1YWVlYVx1YWVlY1x1YWVlZSIsNSwiXHVhZWY1XHVhZWY2XHVhZWY3XHVhZWY5XHVhZWZhXHVhZWZiXHVhZWZkIiw4XSxbIjg0NjEiLCJcdWFmMDZcdWFmMDlcdWFm''@;'; put 'put ''MGFcdWFmMGJcdWFmMGNcdWFmMGVcdWFmMGZcdWFmMTEiLDE4XSxbIjg0ODEiLCJcdWFmMjQiLDcsIlx1YWYyZVx1YWYyZlx1YWYzMVx1YWYzM1x1YWYzNSIsNiwiXHVhZjNlXHVhZjQwXHVhZjQ0XHVhZjQ1XHVhZjQ2XHVhZjQ3XHVhZjRhIiw1LCJcdWFmNTEiLDEwLCJcdWFmNWUiLDUsIlx1''@;'; put 'put ''YWY2NiIsMTgsIlx1YWY3YSIsNSwiXHVhZjgxXHVhZjgyXHVhZjgzXHVhZjg1XHVhZjg2XHVhZjg3XHVhZjg5Iiw2LCJcdWFmOTJcdWFmOTNcdWFmOTRcdWFmOTYiLDUsIlx1YWY5ZCIsMjYsIlx1YWZiYVx1YWZiYlx1YWZiZFx1YWZiZSJdLFsiODU0MSIsIlx1YWZiZlx1YWZjMSIsNSwiXHVh''@;'; put 'put ''ZmNhXHVhZmNjXHVhZmNmIiw0LCJcdWFmZDUiLDYsIlx1YWZkZCIsNF0sWyI4NTYxIiwiXHVhZmUyIiw1LCJcdWFmZWEiLDUsIlx1YWZmMlx1YWZmM1x1YWZmNVx1YWZmNlx1YWZmN1x1YWZmOSIsNiwiXHViMDAyXHViMDAzIl0sWyI4NTgxIiwiXHViMDA1Iiw2LCJcdWIwMGRcdWIwMGVcdWIw''@;'; put 'put ''MGZcdWIwMTFcdWIwMTJcdWIwMTNcdWIwMTUiLDYsIlx1YjAxZSIsOSwiXHViMDI5IiwyNiwiXHViMDQ2XHViMDQ3XHViMDQ5XHViMDRiXHViMDRkXHViMDRmXHViMDUwXHViMDUxXHViMDUyXHViMDU2XHViMDU4XHViMDVhXHViMDViXHViMDVjXHViMDVlIiwyOSwiXHViMDdlXHViMDdmXHVi''@;'; put 'put ''MDgxXHViMDgyXHViMDgzXHViMDg1Iiw2LCJcdWIwOGVcdWIwOTBcdWIwOTIiLDUsIlx1YjA5Ylx1YjA5ZFx1YjA5ZVx1YjBhM1x1YjBhNCJdLFsiODY0MSIsIlx1YjBhNVx1YjBhNlx1YjBhN1x1YjBhYVx1YjBiMFx1YjBiMlx1YjBiNlx1YjBiN1x1YjBiOVx1YjBiYVx1YjBiYlx1YjBiZCIs''@;'; put 'put ''NiwiXHViMGM2XHViMGNhIiw1LCJcdWIwZDIiXSxbIjg2NjEiLCJcdWIwZDNcdWIwZDVcdWIwZDZcdWIwZDdcdWIwZDkiLDYsIlx1YjBlMVx1YjBlMlx1YjBlM1x1YjBlNFx1YjBlNiIsMTBdLFsiODY4MSIsIlx1YjBmMSIsMjIsIlx1YjEwYVx1YjEwZFx1YjEwZVx1YjEwZlx1YjExMVx1YjEx''@;'; put 'put ''NFx1YjExNVx1YjExNlx1YjExN1x1YjExYVx1YjExZSIsNCwiXHViMTI2XHViMTI3XHViMTI5XHViMTJhXHViMTJiXHViMTJkIiw2LCJcdWIxMzZcdWIxM2EiLDUsIlx1YjE0Mlx1YjE0M1x1YjE0NVx1YjE0Nlx1YjE0N1x1YjE0OSIsNiwiXHViMTUyXHViMTUzXHViMTU2XHViMTU3XHViMTU5''@;'; put 'put ''XHViMTVhXHViMTViXHViMTVkXHViMTVlXHViMTVmXHViMTYxIiwyMiwiXHViMTdhXHViMTdiXHViMTdkXHViMTdlXHViMTdmXHViMTgxXHViMTgzIiw0LCJcdWIxOGFcdWIxOGNcdWIxOGVcdWIxOGZcdWIxOTBcdWIxOTFcdWIxOTVcdWIxOTZcdWIxOTdcdWIxOTlcdWIxOWFcdWIxOWJcdWIx''@;'; put 'put ''OWQiXSxbIjg3NDEiLCJcdWIxOWUiLDksIlx1YjFhOSIsMTVdLFsiODc2MSIsIlx1YjFiOSIsMTgsIlx1YjFjZFx1YjFjZVx1YjFjZlx1YjFkMVx1YjFkMlx1YjFkM1x1YjFkNSJdLFsiODc4MSIsIlx1YjFkNiIsNSwiXHViMWRlXHViMWUwIiw3LCJcdWIxZWFcdWIxZWJcdWIxZWRcdWIxZWVc''@;'; put 'put ''dWIxZWZcdWIxZjEiLDcsIlx1YjFmYVx1YjFmY1x1YjFmZSIsNSwiXHViMjA2XHViMjA3XHViMjA5XHViMjBhXHViMjBkIiw2LCJcdWIyMTZcdWIyMThcdWIyMWEiLDUsIlx1YjIyMSIsMTgsIlx1YjIzNSIsNiwiXHViMjNkIiwyNiwiXHViMjU5XHViMjVhXHViMjViXHViMjVkXHViMjVlXHVi''@;'; put 'put ''MjVmXHViMjYxIiw2LCJcdWIyNmEiLDRdLFsiODg0MSIsIlx1YjI2ZiIsNCwiXHViMjc2Iiw1LCJcdWIyN2QiLDYsIlx1YjI4Nlx1YjI4N1x1YjI4OFx1YjI4YSIsNF0sWyI4ODYxIiwiXHViMjhmXHViMjkyXHViMjkzXHViMjk1XHViMjk2XHViMjk3XHViMjliIiw0LCJcdWIyYTJcdWIyYTRc''@;'; put 'put ''dWIyYTdcdWIyYThcdWIyYTlcdWIyYWJcdWIyYWRcdWIyYWVcdWIyYWZcdWIyYjFcdWIyYjJcdWIyYjNcdWIyYjVcdWIyYjZcdWIyYjciXSxbIjg4ODEiLCJcdWIyYjgiLDE1LCJcdWIyY2FcdWIyY2JcdWIyY2RcdWIyY2VcdWIyY2ZcdWIyZDFcdWIyZDMiLDQsIlx1YjJkYVx1YjJkY1x1YjJk''@;'; put 'put ''ZVx1YjJkZlx1YjJlMFx1YjJlMVx1YjJlM1x1YjJlN1x1YjJlOVx1YjJlYVx1YjJmMFx1YjJmMVx1YjJmMlx1YjJmNlx1YjJmY1x1YjJmZFx1YjJmZVx1YjMwMlx1YjMwM1x1YjMwNVx1YjMwNlx1YjMwN1x1YjMwOSIsNiwiXHViMzEyXHViMzE2Iiw1LCJcdWIzMWQiLDU0LCJcdWIzNTdcdWIz''@;'; put 'put ''NTlcdWIzNWFcdWIzNWRcdWIzNjBcdWIzNjFcdWIzNjJcdWIzNjMiXSxbIjg5NDEiLCJcdWIzNjZcdWIzNjhcdWIzNmFcdWIzNmNcdWIzNmRcdWIzNmZcdWIzNzJcdWIzNzNcdWIzNzVcdWIzNzZcdWIzNzdcdWIzNzkiLDYsIlx1YjM4Mlx1YjM4NiIsNSwiXHViMzhkIl0sWyI4OTYxIiwiXHVi''@;'; put 'put ''MzhlXHViMzhmXHViMzkxXHViMzkyXHViMzkzXHViMzk1IiwxMCwiXHViM2EyIiw1LCJcdWIzYTlcdWIzYWFcdWIzYWJcdWIzYWQiXSxbIjg5ODEiLCJcdWIzYWUiLDIxLCJcdWIzYzZcdWIzYzdcdWIzYzlcdWIzY2FcdWIzY2RcdWIzY2ZcdWIzZDFcdWIzZDJcdWIzZDNcdWIzZDZcdWIzZDhc''@;'; put 'put ''dWIzZGFcdWIzZGNcdWIzZGVcdWIzZGZcdWIzZTFcdWIzZTJcdWIzZTNcdWIzZTVcdWIzZTZcdWIzZTdcdWIzZTkiLDE4LCJcdWIzZmQiLDE4LCJcdWI0MTEiLDYsIlx1YjQxOVx1YjQxYVx1YjQxYlx1YjQxZFx1YjQxZVx1YjQxZlx1YjQyMSIsNiwiXHViNDJhXHViNDJjIiw3LCJcdWI0MzUi''@;'; put 'put ''LDE1XSxbIjhhNDEiLCJcdWI0NDUiLDEwLCJcdWI0NTJcdWI0NTNcdWI0NTVcdWI0NTZcdWI0NTdcdWI0NTkiLDYsIlx1YjQ2Mlx1YjQ2NFx1YjQ2NiJdLFsiOGE2MSIsIlx1YjQ2NyIsNCwiXHViNDZkIiwxOCwiXHViNDgxXHViNDgyIl0sWyI4YTgxIiwiXHViNDgzIiw0LCJcdWI0ODkiLDE5''@;'; put 'put ''LCJcdWI0OWUiLDUsIlx1YjRhNVx1YjRhNlx1YjRhN1x1YjRhOVx1YjRhYVx1YjRhYlx1YjRhZCIsNywiXHViNGI2XHViNGI4XHViNGJhIiw1LCJcdWI0YzFcdWI0YzJcdWI0YzNcdWI0YzVcdWI0YzZcdWI0YzdcdWI0YzkiLDYsIlx1YjRkMVx1YjRkMlx1YjRkM1x1YjRkNFx1YjRkNiIsNSwi''@;'; put 'put ''XHViNGRlXHViNGRmXHViNGUxXHViNGUyXHViNGU1XHViNGU3Iiw0LCJcdWI0ZWVcdWI0ZjBcdWI0ZjIiLDUsIlx1YjRmOSIsMjYsIlx1YjUxNlx1YjUxN1x1YjUxOVx1YjUxYVx1YjUxZCJdLFsiOGI0MSIsIlx1YjUxZSIsNSwiXHViNTI2XHViNTJiIiw0LCJcdWI1MzJcdWI1MzNcdWI1MzVc''@;'; put 'put ''dWI1MzZcdWI1MzdcdWI1MzkiLDYsIlx1YjU0Mlx1YjU0NiJdLFsiOGI2MSIsIlx1YjU0N1x1YjU0OFx1YjU0OVx1YjU0YVx1YjU0ZVx1YjU0Zlx1YjU1MVx1YjU1Mlx1YjU1M1x1YjU1NSIsNiwiXHViNTVlXHViNTYyIiw4XSxbIjhiODEiLCJcdWI1NmIiLDUyLCJcdWI1YTJcdWI1YTNcdWI1''@;'; put 'put ''YTVcdWI1YTZcdWI1YTdcdWI1YTlcdWI1YWNcdWI1YWRcdWI1YWVcdWI1YWZcdWI1YjJcdWI1YjYiLDQsIlx1YjViZVx1YjViZlx1YjVjMVx1YjVjMlx1YjVjM1x1YjVjNSIsNiwiXHViNWNlXHViNWQyIiw1LCJcdWI1ZDkiLDE4LCJcdWI1ZWQiLDE4XSxbIjhjNDEiLCJcdWI2MDAiLDE1LCJc''@;'; put 'put ''dWI2MTJcdWI2MTNcdWI2MTVcdWI2MTZcdWI2MTdcdWI2MTkiLDRdLFsiOGM2MSIsIlx1YjYxZSIsNiwiXHViNjI2Iiw1LCJcdWI2MmQiLDYsIlx1YjYzNSIsNV0sWyI4YzgxIiwiXHViNjNiIiwxMiwiXHViNjQ5IiwyNiwiXHViNjY1XHViNjY2XHViNjY3XHViNjY5Iiw1MCwiXHViNjllXHVi''@;'; put 'put ''NjlmXHViNmExXHViNmEyXHViNmEzXHViNmE1Iiw1LCJcdWI2YWRcdWI2YWVcdWI2YWZcdWI2YjBcdWI2YjIiLDE2XSxbIjhkNDEiLCJcdWI2YzMiLDE2LCJcdWI2ZDUiLDhdLFsiOGQ2MSIsIlx1YjZkZSIsMTcsIlx1YjZmMVx1YjZmMlx1YjZmM1x1YjZmNVx1YjZmNlx1YjZmN1x1YjZmOVx1''@;'; put 'put ''YjZmYSJdLFsiOGQ4MSIsIlx1YjZmYiIsNCwiXHViNzAyXHViNzAzXHViNzA0XHViNzA2IiwzMywiXHViNzJhXHViNzJiXHViNzJkXHViNzJlXHViNzMxIiw2LCJcdWI3M2FcdWI3M2MiLDcsIlx1Yjc0NVx1Yjc0Nlx1Yjc0N1x1Yjc0OVx1Yjc0YVx1Yjc0Ylx1Yjc0ZCIsNiwiXHViNzU2Iiw5''@;'; put 'put ''LCJcdWI3NjFcdWI3NjJcdWI3NjNcdWI3NjVcdWI3NjZcdWI3NjdcdWI3NjkiLDYsIlx1Yjc3Mlx1Yjc3NFx1Yjc3NiIsNSwiXHViNzdlXHViNzdmXHViNzgxXHViNzgyXHViNzgzXHViNzg1Iiw2LCJcdWI3OGVcdWI3OTNcdWI3OTRcdWI3OTVcdWI3OWFcdWI3OWJcdWI3OWRcdWI3OWUiXSxb''@;'; put 'put ''IjhlNDEiLCJcdWI3OWZcdWI3YTEiLDYsIlx1YjdhYVx1YjdhZSIsNSwiXHViN2I2XHViN2I3XHViN2I5Iiw4XSxbIjhlNjEiLCJcdWI3YzIiLDQsIlx1YjdjOFx1YjdjYSIsMTldLFsiOGU4MSIsIlx1YjdkZSIsMTMsIlx1YjdlZVx1YjdlZlx1YjdmMVx1YjdmMlx1YjdmM1x1YjdmNSIsNiwi''@;'; put 'put ''XHViN2ZlXHViODAyIiw0LCJcdWI4MGFcdWI4MGJcdWI4MGRcdWI4MGVcdWI4MGZcdWI4MTEiLDYsIlx1YjgxYVx1YjgxY1x1YjgxZSIsNSwiXHViODI2XHViODI3XHViODI5XHViODJhXHViODJiXHViODJkIiw2LCJcdWI4MzZcdWI4M2EiLDUsIlx1Yjg0MVx1Yjg0Mlx1Yjg0M1x1Yjg0NSIs''@;'; put 'put ''MTEsIlx1Yjg1Mlx1Yjg1NCIsNywiXHViODVlXHViODVmXHViODYxXHViODYyXHViODYzXHViODY1Iiw2LCJcdWI4NmVcdWI4NzBcdWI4NzIiLDUsIlx1Yjg3OVx1Yjg3YVx1Yjg3Ylx1Yjg3ZCIsN10sWyI4ZjQxIiwiXHViODg1Iiw3LCJcdWI4OGUiLDE3XSxbIjhmNjEiLCJcdWI4YTAiLDcs''@;'; put 'put ''Ilx1YjhhOSIsNiwiXHViOGIxXHViOGIyXHViOGIzXHViOGI1XHViOGI2XHViOGI3XHViOGI5Iiw0XSxbIjhmODEiLCJcdWI4YmVcdWI4YmZcdWI4YzJcdWI4YzRcdWI4YzYiLDUsIlx1YjhjZFx1YjhjZVx1YjhjZlx1YjhkMVx1YjhkMlx1YjhkM1x1YjhkNSIsNywiXHViOGRlXHViOGUwXHVi''@;'; put 'put ''OGUyIiw1LCJcdWI4ZWFcdWI4ZWJcdWI4ZWRcdWI4ZWVcdWI4ZWZcdWI4ZjEiLDYsIlx1YjhmYVx1YjhmY1x1YjhmZSIsNSwiXHViOTA1IiwxOCwiXHViOTE5Iiw2LCJcdWI5MjEiLDI2LCJcdWI5M2VcdWI5M2ZcdWI5NDFcdWI5NDJcdWI5NDNcdWI5NDUiLDYsIlx1Yjk0ZFx1Yjk0ZVx1Yjk1''@;'; put 'put ''MFx1Yjk1MiIsNV0sWyI5MDQxIiwiXHViOTVhXHViOTViXHViOTVkXHViOTVlXHViOTVmXHViOTYxIiw2LCJcdWI5NmFcdWI5NmNcdWI5NmUiLDUsIlx1Yjk3Nlx1Yjk3N1x1Yjk3OVx1Yjk3YVx1Yjk3Ylx1Yjk3ZCJdLFsiOTA2MSIsIlx1Yjk3ZSIsNSwiXHViOTg2XHViOTg4XHViOThiXHVi''@;'; put 'put ''OThjXHViOThmIiwxNV0sWyI5MDgxIiwiXHViOTlmIiwxMiwiXHViOWFlXHViOWFmXHViOWIxXHViOWIyXHViOWIzXHViOWI1Iiw2LCJcdWI5YmVcdWI5YzBcdWI5YzIiLDUsIlx1YjljYVx1YjljYlx1YjljZFx1YjlkMyIsNCwiXHViOWRhXHViOWRjXHViOWRmXHViOWUwXHViOWUyXHViOWU2''@;'; put 'put ''XHViOWU3XHViOWU5XHViOWVhXHViOWViXHViOWVkIiw2LCJcdWI5ZjZcdWI5ZmIiLDQsIlx1YmEwMiIsNSwiXHViYTA5IiwxMSwiXHViYTE2IiwzMywiXHViYTNhXHViYTNiXHViYTNkXHViYTNlXHViYTNmXHViYTQxXHViYTQzXHViYTQ0XHViYTQ1XHViYTQ2Il0sWyI5MTQxIiwiXHViYTQ3''@;'; put 'put ''XHViYTRhXHViYTRjXHViYTRmXHViYTUwXHViYTUxXHViYTUyXHViYTU2XHViYTU3XHViYTU5XHViYTVhXHViYTViXHViYTVkIiw2LCJcdWJhNjZcdWJhNmEiLDVdLFsiOTE2MSIsIlx1YmE3Mlx1YmE3M1x1YmE3NVx1YmE3Nlx1YmE3N1x1YmE3OSIsOSwiXHViYTg2XHViYTg4XHViYTg5XHVi''@;'; put 'put ''YThhXHViYThiXHViYThkIiw1XSxbIjkxODEiLCJcdWJhOTMiLDIwLCJcdWJhYWFcdWJhYWRcdWJhYWVcdWJhYWZcdWJhYjFcdWJhYjMiLDQsIlx1YmFiYVx1YmFiY1x1YmFiZSIsNSwiXHViYWM1XHViYWM2XHViYWM3XHViYWM5IiwxNCwiXHViYWRhIiwzMywiXHViYWZkXHViYWZlXHViYWZm''@;'; put 'put ''XHViYjAxXHViYjAyXHViYjAzXHViYjA1Iiw3LCJcdWJiMGVcdWJiMTBcdWJiMTIiLDUsIlx1YmIxOVx1YmIxYVx1YmIxYlx1YmIxZFx1YmIxZVx1YmIxZlx1YmIyMSIsNl0sWyI5MjQxIiwiXHViYjI4XHViYjJhXHViYjJjIiw3LCJcdWJiMzdcdWJiMzlcdWJiM2FcdWJiM2YiLDQsIlx1YmI0''@;'; put 'put ''Nlx1YmI0OFx1YmI0YVx1YmI0Ylx1YmI0Y1x1YmI0ZVx1YmI1MVx1YmI1MiJdLFsiOTI2MSIsIlx1YmI1M1x1YmI1NVx1YmI1Nlx1YmI1N1x1YmI1OSIsNywiXHViYjYyXHViYjY0Iiw3LCJcdWJiNmQiLDRdLFsiOTI4MSIsIlx1YmI3MiIsMjEsIlx1YmI4OVx1YmI4YVx1YmI4Ylx1YmI4ZFx1''@;'; put 'put ''YmI4ZVx1YmI4Zlx1YmI5MSIsMTgsIlx1YmJhNVx1YmJhNlx1YmJhN1x1YmJhOVx1YmJhYVx1YmJhYlx1YmJhZCIsNiwiXHViYmI1XHViYmI2XHViYmI4Iiw3LCJcdWJiYzFcdWJiYzJcdWJiYzNcdWJiYzVcdWJiYzZcdWJiYzdcdWJiYzkiLDYsIlx1YmJkMVx1YmJkMlx1YmJkNCIsMzUsIlx1''@;'; put 'put ''YmJmYVx1YmJmYlx1YmJmZFx1YmJmZVx1YmMwMSJdLFsiOTM0MSIsIlx1YmMwMyIsNCwiXHViYzBhXHViYzBlXHViYzEwXHViYzEyXHViYzEzXHViYzE5XHViYzFhXHViYzIwXHViYzIxXHViYzIyXHViYzIzXHViYzI2XHViYzI4XHViYzJhXHViYzJiXHViYzJjXHViYzJlXHViYzJmXHViYzMy''@;'; put 'put ''XHViYzMzXHViYzM1Il0sWyI5MzYxIiwiXHViYzM2XHViYzM3XHViYzM5Iiw2LCJcdWJjNDJcdWJjNDZcdWJjNDdcdWJjNDhcdWJjNGFcdWJjNGJcdWJjNGVcdWJjNGZcdWJjNTEiLDhdLFsiOTM4MSIsIlx1YmM1YVx1YmM1Ylx1YmM1Y1x1YmM1ZSIsMzcsIlx1YmM4Nlx1YmM4N1x1YmM4OVx1''@;'; put 'put ''YmM4YVx1YmM4ZFx1YmM4ZiIsNCwiXHViYzk2XHViYzk4XHViYzliIiw0LCJcdWJjYTJcdWJjYTNcdWJjYTVcdWJjYTZcdWJjYTkiLDYsIlx1YmNiMlx1YmNiNiIsNSwiXHViY2JlXHViY2JmXHViY2MxXHViY2MyXHViY2MzXHViY2M1Iiw3LCJcdWJjY2VcdWJjZDJcdWJjZDNcdWJjZDRcdWJj''@;'; put 'put ''ZDZcdWJjZDdcdWJjZDlcdWJjZGFcdWJjZGJcdWJjZGQiLDIyLCJcdWJjZjdcdWJjZjlcdWJjZmFcdWJjZmJcdWJjZmQiXSxbIjk0NDEiLCJcdWJjZmUiLDUsIlx1YmQwNlx1YmQwOFx1YmQwYSIsNSwiXHViZDExXHViZDEyXHViZDEzXHViZDE1Iiw4XSxbIjk0NjEiLCJcdWJkMWUiLDUsIlx1''@;'; put 'put ''YmQyNSIsNiwiXHViZDJkIiwxMl0sWyI5NDgxIiwiXHViZDNhIiw1LCJcdWJkNDEiLDYsIlx1YmQ0YVx1YmQ0Ylx1YmQ0ZFx1YmQ0ZVx1YmQ0Zlx1YmQ1MSIsNiwiXHViZDVhIiw5LCJcdWJkNjVcdWJkNjZcdWJkNjdcdWJkNjkiLDIyLCJcdWJkODJcdWJkODNcdWJkODVcdWJkODZcdWJkOGIi''@;'; put 'put ''LDQsIlx1YmQ5Mlx1YmQ5NFx1YmQ5Nlx1YmQ5N1x1YmQ5OFx1YmQ5Ylx1YmQ5ZCIsNiwiXHViZGE1IiwxMCwiXHViZGIxIiw2LCJcdWJkYjkiLDI0XSxbIjk1NDEiLCJcdWJkZDJcdWJkZDNcdWJkZDZcdWJkZDdcdWJkZDlcdWJkZGFcdWJkZGJcdWJkZGQiLDExLCJcdWJkZWEiLDUsIlx1YmRm''@;'; put 'put ''MSJdLFsiOTU2MSIsIlx1YmRmMlx1YmRmM1x1YmRmNVx1YmRmNlx1YmRmN1x1YmRmOSIsNiwiXHViZTAxXHViZTAyXHViZTA0XHViZTA2Iiw1LCJcdWJlMGVcdWJlMGZcdWJlMTFcdWJlMTJcdWJlMTMiXSxbIjk1ODEiLCJcdWJlMTUiLDYsIlx1YmUxZVx1YmUyMCIsMzUsIlx1YmU0Nlx1YmU0''@;'; put 'put ''N1x1YmU0OVx1YmU0YVx1YmU0Ylx1YmU0ZFx1YmU0ZiIsNCwiXHViZTU2XHViZTU4XHViZTVjXHViZTVkXHViZTVlXHViZTVmXHViZTYyXHViZTYzXHViZTY1XHViZTY2XHViZTY3XHViZTY5XHViZTZiIiw0LCJcdWJlNzJcdWJlNzYiLDQsIlx1YmU3ZVx1YmU3Zlx1YmU4MVx1YmU4Mlx1YmU4''@;'; put 'put ''M1x1YmU4NSIsNiwiXHViZThlXHViZTkyIiw1LCJcdWJlOWEiLDEzLCJcdWJlYTkiLDE0XSxbIjk2NDEiLCJcdWJlYjgiLDIzLCJcdWJlZDJcdWJlZDMiXSxbIjk2NjEiLCJcdWJlZDVcdWJlZDZcdWJlZDkiLDYsIlx1YmVlMVx1YmVlMlx1YmVlNiIsNSwiXHViZWVkIiw4XSxbIjk2ODEiLCJc''@;'; put 'put ''dWJlZjYiLDEwLCJcdWJmMDIiLDUsIlx1YmYwYSIsMTMsIlx1YmYxYVx1YmYxZSIsMzMsIlx1YmY0Mlx1YmY0M1x1YmY0NVx1YmY0Nlx1YmY0N1x1YmY0OSIsNiwiXHViZjUyXHViZjUzXHViZjU0XHViZjU2Iiw0NF0sWyI5NzQxIiwiXHViZjgzIiwxNiwiXHViZjk1Iiw4XSxbIjk3NjEiLCJc''@;'; put 'put ''dWJmOWUiLDE3LCJcdWJmYjEiLDddLFsiOTc4MSIsIlx1YmZiOSIsMTEsIlx1YmZjNiIsNSwiXHViZmNlXHViZmNmXHViZmQxXHViZmQyXHViZmQzXHViZmQ1Iiw2LCJcdWJmZGRcdWJmZGVcdWJmZTBcdWJmZTIiLDg5LCJcdWMwM2RcdWMwM2VcdWMwM2YiXSxbIjk4NDEiLCJcdWMwNDAiLDE2''@;'; put 'put ''LCJcdWMwNTIiLDUsIlx1YzA1OVx1YzA1YVx1YzA1YiJdLFsiOTg2MSIsIlx1YzA1ZFx1YzA1ZVx1YzA1Zlx1YzA2MSIsNiwiXHVjMDZhIiwxNV0sWyI5ODgxIiwiXHVjMDdhIiwyMSwiXHVjMDkyXHVjMDkzXHVjMDk1XHVjMDk2XHVjMDk3XHVjMDk5Iiw2LCJcdWMwYTJcdWMwYTRcdWMwYTYi''@;'; put 'put ''LDUsIlx1YzBhZVx1YzBiMVx1YzBiMlx1YzBiNyIsNCwiXHVjMGJlXHVjMGMyXHVjMGMzXHVjMGM0XHVjMGM2XHVjMGM3XHVjMGNhXHVjMGNiXHVjMGNkXHVjMGNlXHVjMGNmXHVjMGQxIiw2LCJcdWMwZGFcdWMwZGUiLDUsIlx1YzBlNlx1YzBlN1x1YzBlOVx1YzBlYVx1YzBlYlx1YzBlZCIs''@;'; put 'put ''NiwiXHVjMGY2XHVjMGY4XHVjMGZhIiw1LCJcdWMxMDFcdWMxMDJcdWMxMDNcdWMxMDVcdWMxMDZcdWMxMDdcdWMxMDkiLDYsIlx1YzExMVx1YzExMlx1YzExM1x1YzExNFx1YzExNiIsNSwiXHVjMTIxXHVjMTIyXHVjMTI1XHVjMTI4XHVjMTI5XHVjMTJhXHVjMTJiXHVjMTJlIl0sWyI5OTQx''@;'; put 'put ''IiwiXHVjMTMyXHVjMTMzXHVjMTM0XHVjMTM1XHVjMTM3XHVjMTNhXHVjMTNiXHVjMTNkXHVjMTNlXHVjMTNmXHVjMTQxIiw2LCJcdWMxNGFcdWMxNGUiLDUsIlx1YzE1Nlx1YzE1NyJdLFsiOTk2MSIsIlx1YzE1OVx1YzE1YVx1YzE1Ylx1YzE1ZCIsNiwiXHVjMTY2XHVjMTZhIiw1LCJcdWMx''@;'; put 'put ''NzFcdWMxNzJcdWMxNzNcdWMxNzVcdWMxNzZcdWMxNzdcdWMxNzlcdWMxN2FcdWMxN2IiXSxbIjk5ODEiLCJcdWMxN2MiLDgsIlx1YzE4NiIsNSwiXHVjMThmXHVjMTkxXHVjMTkyXHVjMTkzXHVjMTk1XHVjMTk3Iiw0LCJcdWMxOWVcdWMxYTBcdWMxYTJcdWMxYTNcdWMxYTRcdWMxYTZcdWMx''@;'; put 'put ''YTdcdWMxYWFcdWMxYWJcdWMxYWRcdWMxYWVcdWMxYWZcdWMxYjEiLDExLCJcdWMxYmUiLDUsIlx1YzFjNVx1YzFjNlx1YzFjN1x1YzFjOVx1YzFjYVx1YzFjYlx1YzFjZCIsNiwiXHVjMWQ1XHVjMWQ2XHVjMWQ5Iiw2LCJcdWMxZTFcdWMxZTJcdWMxZTNcdWMxZTVcdWMxZTZcdWMxZTdcdWMx''@;'; put 'put ''ZTkiLDYsIlx1YzFmMlx1YzFmNCIsNywiXHVjMWZlXHVjMWZmXHVjMjAxXHVjMjAyXHVjMjAzXHVjMjA1Iiw2LCJcdWMyMGVcdWMyMTBcdWMyMTIiLDUsIlx1YzIxYVx1YzIxYlx1YzIxZFx1YzIxZVx1YzIyMVx1YzIyMlx1YzIyMyJdLFsiOWE0MSIsIlx1YzIyNFx1YzIyNVx1YzIyNlx1YzIy''@;'; put 'put ''N1x1YzIyYVx1YzIyY1x1YzIyZVx1YzIzMFx1YzIzM1x1YzIzNSIsMTZdLFsiOWE2MSIsIlx1YzI0Nlx1YzI0N1x1YzI0OSIsNiwiXHVjMjUyXHVjMjUzXHVjMjU1XHVjMjU2XHVjMjU3XHVjMjU5Iiw2LCJcdWMyNjFcdWMyNjJcdWMyNjNcdWMyNjRcdWMyNjYiXSxbIjlhODEiLCJcdWMyNjci''@;'; put 'put ''LDQsIlx1YzI2ZVx1YzI2Zlx1YzI3MVx1YzI3Mlx1YzI3M1x1YzI3NSIsNiwiXHVjMjdlXHVjMjgwXHVjMjgyIiw1LCJcdWMyOGEiLDUsIlx1YzI5MSIsNiwiXHVjMjk5XHVjMjlhXHVjMjljXHVjMjllIiw1LCJcdWMyYTZcdWMyYTdcdWMyYTlcdWMyYWFcdWMyYWJcdWMyYWUiLDUsIlx1YzJi''@;'; put 'put ''Nlx1YzJiOFx1YzJiYSIsMzMsIlx1YzJkZVx1YzJkZlx1YzJlMVx1YzJlMlx1YzJlNSIsNSwiXHVjMmVlXHVjMmYwXHVjMmYyXHVjMmYzXHVjMmY0XHVjMmY1XHVjMmY3XHVjMmZhXHVjMmZkXHVjMmZlXHVjMmZmXHVjMzAxIiw2LCJcdWMzMGFcdWMzMGJcdWMzMGVcdWMzMGYiXSxbIjliNDEi''@;'; put 'put ''LCJcdWMzMTBcdWMzMTFcdWMzMTJcdWMzMTZcdWMzMTdcdWMzMTlcdWMzMWFcdWMzMWJcdWMzMWQiLDYsIlx1YzMyNlx1YzMyN1x1YzMyYSIsOF0sWyI5YjYxIiwiXHVjMzMzIiwxNywiXHVjMzQ2Iiw3XSxbIjliODEiLCJcdWMzNGUiLDI1LCJcdWMzNmFcdWMzNmJcdWMzNmRcdWMzNmVcdWMz''@;'; put 'put ''NmZcdWMzNzFcdWMzNzMiLDQsIlx1YzM3YVx1YzM3Ylx1YzM3ZSIsNSwiXHVjMzg1XHVjMzg2XHVjMzg3XHVjMzg5XHVjMzhhXHVjMzhiXHVjMzhkIiw1MCwiXHVjM2MxIiwyMiwiXHVjM2RhIl0sWyI5YzQxIiwiXHVjM2RiXHVjM2RkXHVjM2RlXHVjM2UxXHVjM2UzIiw0LCJcdWMzZWFcdWMz''@;'; put 'put ''ZWJcdWMzZWNcdWMzZWUiLDUsIlx1YzNmNlx1YzNmN1x1YzNmOSIsNV0sWyI5YzYxIiwiXHVjM2ZmIiw4LCJcdWM0MDkiLDYsIlx1YzQxMSIsOV0sWyI5YzgxIiwiXHVjNDFiIiw4LCJcdWM0MjUiLDYsIlx1YzQyZFx1YzQyZVx1YzQyZlx1YzQzMVx1YzQzMlx1YzQzM1x1YzQzNSIsNiwiXHVj''@;'; put 'put ''NDNlIiw5LCJcdWM0NDkiLDI2LCJcdWM0NjZcdWM0NjdcdWM0NjlcdWM0NmFcdWM0NmJcdWM0NmQiLDYsIlx1YzQ3Nlx1YzQ3N1x1YzQ3OFx1YzQ3YSIsNSwiXHVjNDgxIiwxOCwiXHVjNDk1Iiw2LCJcdWM0OWQiLDEyXSxbIjlkNDEiLCJcdWM0YWEiLDEzLCJcdWM0YjlcdWM0YmFcdWM0YmJc''@;'; put 'put ''dWM0YmQiLDhdLFsiOWQ2MSIsIlx1YzRjNiIsMjVdLFsiOWQ4MSIsIlx1YzRlMCIsOCwiXHVjNGVhIiw1LCJcdWM0ZjJcdWM0ZjNcdWM0ZjVcdWM0ZjZcdWM0ZjdcdWM0ZjlcdWM0ZmJcdWM0ZmNcdWM0ZmRcdWM0ZmVcdWM1MDIiLDksIlx1YzUwZFx1YzUwZVx1YzUwZlx1YzUxMVx1YzUxMlx1''@;'; put 'put ''YzUxM1x1YzUxNSIsNiwiXHVjNTFkIiwxMCwiXHVjNTJhXHVjNTJiXHVjNTJkXHVjNTJlXHVjNTJmXHVjNTMxIiw2LCJcdWM1M2FcdWM1M2NcdWM1M2UiLDUsIlx1YzU0Nlx1YzU0N1x1YzU0Ylx1YzU0Zlx1YzU1MFx1YzU1MVx1YzU1Mlx1YzU1Nlx1YzU1YVx1YzU1Ylx1YzU1Y1x1YzU1Zlx1''@;'; put 'put ''YzU2Mlx1YzU2M1x1YzU2NVx1YzU2Nlx1YzU2N1x1YzU2OSIsNiwiXHVjNTcyXHVjNTc2Iiw1LCJcdWM1N2VcdWM1N2ZcdWM1ODFcdWM1ODJcdWM1ODNcdWM1ODVcdWM1ODZcdWM1ODhcdWM1ODlcdWM1OGFcdWM1OGJcdWM1OGVcdWM1OTBcdWM1OTJcdWM1OTNcdWM1OTQiXSxbIjllNDEiLCJc''@;'; put 'put ''dWM1OTZcdWM1OTlcdWM1OWFcdWM1OWJcdWM1OWRcdWM1OWVcdWM1OWZcdWM1YTEiLDcsIlx1YzVhYSIsOSwiXHVjNWI2Il0sWyI5ZTYxIiwiXHVjNWI3XHVjNWJhXHVjNWJmIiw0LCJcdWM1Y2JcdWM1Y2RcdWM1Y2ZcdWM1ZDJcdWM1ZDNcdWM1ZDVcdWM1ZDZcdWM1ZDdcdWM1ZDkiLDYsIlx1''@;'; put 'put ''YzVlMlx1YzVlNFx1YzVlNlx1YzVlNyJdLFsiOWU4MSIsIlx1YzVlOFx1YzVlOVx1YzVlYVx1YzVlYlx1YzVlZlx1YzVmMVx1YzVmMlx1YzVmM1x1YzVmNVx1YzVmOFx1YzVmOVx1YzVmYVx1YzVmYlx1YzYwMlx1YzYwM1x1YzYwNFx1YzYwOVx1YzYwYVx1YzYwYlx1YzYwZFx1YzYwZVx1YzYw''@;'; put 'put ''Zlx1YzYxMSIsNiwiXHVjNjFhXHVjNjFkIiw2LCJcdWM2MjZcdWM2MjdcdWM2MjlcdWM2MmFcdWM2MmJcdWM2MmZcdWM2MzFcdWM2MzJcdWM2MzZcdWM2MzhcdWM2M2FcdWM2M2NcdWM2M2RcdWM2M2VcdWM2M2ZcdWM2NDJcdWM2NDNcdWM2NDVcdWM2NDZcdWM2NDdcdWM2NDkiLDYsIlx1YzY1''@;'; put 'put ''Mlx1YzY1NiIsNSwiXHVjNjVlXHVjNjVmXHVjNjYxIiwxMCwiXHVjNjZkXHVjNjZlXHVjNjcwXHVjNjcyIiw1LCJcdWM2N2FcdWM2N2JcdWM2N2RcdWM2N2VcdWM2N2ZcdWM2ODEiLDYsIlx1YzY4YVx1YzY4Y1x1YzY4ZSIsNSwiXHVjNjk2XHVjNjk3XHVjNjk5XHVjNjlhXHVjNjliXHVjNjlk''@;'; put 'put ''Iiw2LCJcdWM2YTYiXSxbIjlmNDEiLCJcdWM2YThcdWM2YWEiLDUsIlx1YzZiMlx1YzZiM1x1YzZiNVx1YzZiNlx1YzZiN1x1YzZiYiIsNCwiXHVjNmMyXHVjNmM0XHVjNmM2Iiw1LCJcdWM2Y2UiXSxbIjlmNjEiLCJcdWM2Y2ZcdWM2ZDFcdWM2ZDJcdWM2ZDNcdWM2ZDUiLDYsIlx1YzZkZVx1''@;'; put 'put ''YzZkZlx1YzZlMiIsNSwiXHVjNmVhXHVjNmViXHVjNmVkXHVjNmVlXHVjNmVmXHVjNmYxXHVjNmYyIl0sWyI5ZjgxIiwiXHVjNmYzIiw0LCJcdWM2ZmFcdWM2ZmJcdWM2ZmNcdWM2ZmUiLDUsIlx1YzcwNlx1YzcwN1x1YzcwOVx1YzcwYVx1YzcwYlx1YzcwZCIsNiwiXHVjNzE2XHVjNzE4XHVj''@;'; put 'put ''NzFhIiw1LCJcdWM3MjJcdWM3MjNcdWM3MjVcdWM3MjZcdWM3MjdcdWM3MjkiLDYsIlx1YzczMlx1YzczNFx1YzczNlx1YzczOFx1YzczOVx1YzczYVx1YzczYlx1YzczZVx1YzczZlx1Yzc0MVx1Yzc0Mlx1Yzc0M1x1Yzc0NSIsNCwiXHVjNzRiXHVjNzRlXHVjNzUwXHVjNzU5XHVjNzVhXHVj''@;'; put 'put ''NzViXHVjNzVkXHVjNzVlXHVjNzVmXHVjNzYxIiw2LCJcdWM3NjlcdWM3NmFcdWM3NmMiLDcsIlx1Yzc3Nlx1Yzc3N1x1Yzc3OVx1Yzc3YVx1Yzc3Ylx1Yzc3Zlx1Yzc4MFx1Yzc4MVx1Yzc4Mlx1Yzc4Nlx1Yzc4Ylx1Yzc4Y1x1Yzc4ZFx1Yzc4Zlx1Yzc5Mlx1Yzc5M1x1Yzc5NVx1Yzc5OVx1''@;'; put 'put ''Yzc5YiIsNCwiXHVjN2EyXHVjN2E3Iiw0LCJcdWM3YWVcdWM3YWZcdWM3YjFcdWM3YjJcdWM3YjNcdWM3YjVcdWM3YjZcdWM3YjciXSxbImEwNDEiLCJcdWM3YjhcdWM3YjlcdWM3YmFcdWM3YmJcdWM3YmVcdWM3YzIiLDUsIlx1YzdjYVx1YzdjYlx1YzdjZFx1YzdjZlx1YzdkMSIsNiwiXHVj''@;'; put 'put ''N2Q5XHVjN2RhXHVjN2RiXHVjN2RjIl0sWyJhMDYxIiwiXHVjN2RlIiw1LCJcdWM3ZTVcdWM3ZTZcdWM3ZTdcdWM3ZTlcdWM3ZWFcdWM3ZWJcdWM3ZWQiLDEzXSxbImEwODEiLCJcdWM3ZmIiLDQsIlx1YzgwMlx1YzgwM1x1YzgwNVx1YzgwNlx1YzgwN1x1YzgwOVx1YzgwYiIsNCwiXHVjODEy''@;'; put 'put ''XHVjODE0XHVjODE3Iiw0LCJcdWM4MWVcdWM4MWZcdWM4MjFcdWM4MjJcdWM4MjNcdWM4MjUiLDYsIlx1YzgyZVx1YzgzMFx1YzgzMiIsNSwiXHVjODM5XHVjODNhXHVjODNiXHVjODNkXHVjODNlXHVjODNmXHVjODQxIiw2LCJcdWM4NGFcdWM4NGJcdWM4NGUiLDUsIlx1Yzg1NSIsMjYsIlx1''@;'; put 'put ''Yzg3Mlx1Yzg3M1x1Yzg3NVx1Yzg3Nlx1Yzg3N1x1Yzg3OVx1Yzg3YiIsNCwiXHVjODgyXHVjODg0XHVjODg4XHVjODg5XHVjODhhXHVjODhlIiw1LCJcdWM4OTUiLDcsIlx1Yzg5ZVx1YzhhMFx1YzhhMlx1YzhhM1x1YzhhNCJdLFsiYTE0MSIsIlx1YzhhNVx1YzhhNlx1YzhhN1x1YzhhOSIs''@;'; put 'put ''MTgsIlx1YzhiZVx1YzhiZlx1YzhjMFx1YzhjMSJdLFsiYTE2MSIsIlx1YzhjMlx1YzhjM1x1YzhjNVx1YzhjNlx1YzhjN1x1YzhjOVx1YzhjYVx1YzhjYlx1YzhjZCIsNiwiXHVjOGQ2XHVjOGQ4XHVjOGRhIiw1LCJcdWM4ZTJcdWM4ZTNcdWM4ZTUiXSxbImExODEiLCJcdWM4ZTYiLDE0LCJc''@;'; put 'put ''dWM4ZjYiLDUsIlx1YzhmZVx1YzhmZlx1YzkwMVx1YzkwMlx1YzkwM1x1YzkwNyIsNCwiXHVjOTBlXHUzMDAwXHUzMDAxXHUzMDAyXHhiN1x1MjAyNVx1MjAyNlx4YThcdTMwMDNceGFkXHUyMDE1XHUyMjI1XHVmZjNjXHUyMjNjXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUzMDE0XHUzMDE1''@;'; put 'put ''XHUzMDA4Iiw5LCJceGIxXHhkN1x4ZjdcdTIyNjBcdTIyNjRcdTIyNjVcdTIyMWVcdTIyMzRceGIwXHUyMDMyXHUyMDMzXHUyMTAzXHUyMTJiXHVmZmUwXHVmZmUxXHVmZmU1XHUyNjQyXHUyNjQwXHUyMjIwXHUyMmE1XHUyMzEyXHUyMjAyXHUyMjA3XHUyMjYxXHUyMjUyXHhhN1x1MjAzYlx1''@;'; put 'put ''MjYwNlx1MjYwNVx1MjVjYlx1MjVjZlx1MjVjZVx1MjVjN1x1MjVjNlx1MjVhMVx1MjVhMFx1MjViM1x1MjViMlx1MjViZFx1MjViY1x1MjE5Mlx1MjE5MFx1MjE5MVx1MjE5M1x1MjE5NFx1MzAxM1x1MjI2YVx1MjI2Ylx1MjIxYVx1MjIzZFx1MjIxZFx1MjIzNVx1MjIyYlx1MjIyY1x1MjIw''@;'; put 'put ''OFx1MjIwYlx1MjI4Nlx1MjI4N1x1MjI4Mlx1MjI4M1x1MjIyYVx1MjIyOVx1MjIyN1x1MjIyOFx1ZmZlMiJdLFsiYTI0MSIsIlx1YzkxMFx1YzkxMiIsNSwiXHVjOTE5IiwxOF0sWyJhMjYxIiwiXHVjOTJkIiw2LCJcdWM5MzUiLDE4XSxbImEyODEiLCJcdWM5NDgiLDcsIlx1Yzk1Mlx1Yzk1''@;'; put 'put ''M1x1Yzk1NVx1Yzk1Nlx1Yzk1N1x1Yzk1OSIsNiwiXHVjOTYyXHVjOTY0Iiw3LCJcdWM5NmRcdWM5NmVcdWM5NmZcdTIxZDJcdTIxZDRcdTIyMDBcdTIyMDNceGI0XHVmZjVlXHUwMmM3XHUwMmQ4XHUwMmRkXHUwMmRhXHUwMmQ5XHhiOFx1MDJkYlx4YTFceGJmXHUwMmQwXHUyMjJlXHUyMjEx''@;'; put 'put ''XHUyMjBmXHhhNFx1MjEwOVx1MjAzMFx1MjVjMVx1MjVjMFx1MjViN1x1MjViNlx1MjY2NFx1MjY2MFx1MjY2MVx1MjY2NVx1MjY2N1x1MjY2M1x1MjI5OVx1MjVjOFx1MjVhM1x1MjVkMFx1MjVkMVx1MjU5Mlx1MjVhNFx1MjVhNVx1MjVhOFx1MjVhN1x1MjVhNlx1MjVhOVx1MjY2OFx1MjYw''@;'; put 'put ''Zlx1MjYwZVx1MjYxY1x1MjYxZVx4YjZcdTIwMjBcdTIwMjFcdTIxOTVcdTIxOTdcdTIxOTlcdTIxOTZcdTIxOThcdTI2NmRcdTI2NjlcdTI2NmFcdTI2NmNcdTMyN2ZcdTMyMWNcdTIxMTZcdTMzYzdcdTIxMjJcdTMzYzJcdTMzZDhcdTIxMjFcdTIwYWNceGFlIl0sWyJhMzQxIiwiXHVjOTcx''@;'; put 'put ''XHVjOTcyXHVjOTczXHVjOTc1Iiw2LCJcdWM5N2QiLDEwLCJcdWM5OGFcdWM5OGJcdWM5OGRcdWM5OGVcdWM5OGYiXSxbImEzNjEiLCJcdWM5OTEiLDYsIlx1Yzk5YVx1Yzk5Y1x1Yzk5ZSIsMTZdLFsiYTM4MSIsIlx1YzlhZiIsMTYsIlx1YzljMlx1YzljM1x1YzljNVx1YzljNlx1YzljOVx1''@;'; put 'put ''YzljYiIsNCwiXHVjOWQyXHVjOWQ0XHVjOWQ3XHVjOWQ4XHVjOWRiXHVmZjAxIiw1OCwiXHVmZmU2XHVmZjNkIiwzMiwiXHVmZmUzIl0sWyJhNDQxIiwiXHVjOWRlXHVjOWRmXHVjOWUxXHVjOWUzXHVjOWU1XHVjOWU2XHVjOWU4XHVjOWU5XHVjOWVhXHVjOWViXHVjOWVlXHVjOWYyIiw1LCJc''@;'; put 'put ''dWM5ZmFcdWM5ZmJcdWM5ZmRcdWM5ZmVcdWM5ZmZcdWNhMDFcdWNhMDJcdWNhMDNcdWNhMDQiXSxbImE0NjEiLCJcdWNhMDVcdWNhMDZcdWNhMDdcdWNhMGFcdWNhMGUiLDUsIlx1Y2ExNVx1Y2ExNlx1Y2ExN1x1Y2ExOSIsMTJdLFsiYTQ4MSIsIlx1Y2EyNlx1Y2EyN1x1Y2EyOFx1Y2EyYSIs''@;'; put 'put ''MjgsIlx1MzEzMSIsOTNdLFsiYTU0MSIsIlx1Y2E0NyIsNCwiXHVjYTRlXHVjYTRmXHVjYTUxXHVjYTUyXHVjYTUzXHVjYTU1Iiw2LCJcdWNhNWVcdWNhNjIiLDUsIlx1Y2E2OVx1Y2E2YSJdLFsiYTU2MSIsIlx1Y2E2YiIsMTcsIlx1Y2E3ZSIsNSwiXHVjYTg1XHVjYTg2Il0sWyJhNTgxIiwi''@;'; put 'put ''XHVjYTg3IiwxNiwiXHVjYTk5IiwxNCwiXHUyMTcwIiw5XSxbImE1YjAiLCJcdTIxNjAiLDldLFsiYTVjMSIsIlx1MDM5MSIsMTYsIlx1MDNhMyIsNl0sWyJhNWUxIiwiXHUwM2IxIiwxNiwiXHUwM2MzIiw2XSxbImE2NDEiLCJcdWNhYTgiLDE5LCJcdWNhYmVcdWNhYmZcdWNhYzFcdWNhYzJc''@;'; put 'put ''dWNhYzNcdWNhYzUiXSxbImE2NjEiLCJcdWNhYzYiLDUsIlx1Y2FjZVx1Y2FkMFx1Y2FkMlx1Y2FkNFx1Y2FkNVx1Y2FkNlx1Y2FkN1x1Y2FkYSIsNSwiXHVjYWUxIiw2XSxbImE2ODEiLCJcdWNhZThcdWNhZTlcdWNhZWFcdWNhZWJcdWNhZWQiLDYsIlx1Y2FmNSIsMTgsIlx1Y2IwOVx1Y2Iw''@;'; put 'put ''YVx1MjUwMFx1MjUwMlx1MjUwY1x1MjUxMFx1MjUxOFx1MjUxNFx1MjUxY1x1MjUyY1x1MjUyNFx1MjUzNFx1MjUzY1x1MjUwMVx1MjUwM1x1MjUwZlx1MjUxM1x1MjUxYlx1MjUxN1x1MjUyM1x1MjUzM1x1MjUyYlx1MjUzYlx1MjU0Ylx1MjUyMFx1MjUyZlx1MjUyOFx1MjUzN1x1MjUzZlx1''@;'; put 'put ''MjUxZFx1MjUzMFx1MjUyNVx1MjUzOFx1MjU0Mlx1MjUxMlx1MjUxMVx1MjUxYVx1MjUxOVx1MjUxNlx1MjUxNVx1MjUwZVx1MjUwZFx1MjUxZVx1MjUxZlx1MjUyMVx1MjUyMlx1MjUyNlx1MjUyN1x1MjUyOVx1MjUyYVx1MjUyZFx1MjUyZVx1MjUzMVx1MjUzMlx1MjUzNVx1MjUzNlx1MjUz''@;'; put 'put ''OVx1MjUzYVx1MjUzZFx1MjUzZVx1MjU0MFx1MjU0MVx1MjU0MyIsN10sWyJhNzQxIiwiXHVjYjBiIiw0LCJcdWNiMTFcdWNiMTJcdWNiMTNcdWNiMTVcdWNiMTZcdWNiMTdcdWNiMTkiLDYsIlx1Y2IyMiIsN10sWyJhNzYxIiwiXHVjYjJhIiwyMiwiXHVjYjQyXHVjYjQzXHVjYjQ0Il0sWyJh''@;'; put 'put ''NzgxIiwiXHVjYjQ1XHVjYjQ2XHVjYjQ3XHVjYjRhXHVjYjRiXHVjYjRkXHVjYjRlXHVjYjRmXHVjYjUxIiw2LCJcdWNiNWFcdWNiNWJcdWNiNWNcdWNiNWUiLDUsIlx1Y2I2NSIsNywiXHUzMzk1XHUzMzk2XHUzMzk3XHUyMTEzXHUzMzk4XHUzM2M0XHUzM2EzXHUzM2E0XHUzM2E1XHUzM2E2''@;'; put 'put ''XHUzMzk5Iiw5LCJcdTMzY2FcdTMzOGRcdTMzOGVcdTMzOGZcdTMzY2ZcdTMzODhcdTMzODlcdTMzYzhcdTMzYTdcdTMzYThcdTMzYjAiLDksIlx1MzM4MCIsNCwiXHUzM2JhIiw1LCJcdTMzOTAiLDQsIlx1MjEyNlx1MzNjMFx1MzNjMVx1MzM4YVx1MzM4Ylx1MzM4Y1x1MzNkNlx1MzNjNVx1''@;'; put 'put ''MzNhZFx1MzNhZVx1MzNhZlx1MzNkYlx1MzNhOVx1MzNhYVx1MzNhYlx1MzNhY1x1MzNkZFx1MzNkMFx1MzNkM1x1MzNjM1x1MzNjOVx1MzNkY1x1MzNjNiJdLFsiYTg0MSIsIlx1Y2I2ZCIsMTAsIlx1Y2I3YSIsMTRdLFsiYTg2MSIsIlx1Y2I4OSIsMTgsIlx1Y2I5ZCIsNl0sWyJhODgxIiwi''@;'; put 'put ''XHVjYmE0IiwxOSwiXHVjYmI5IiwxMSwiXHhjNlx4ZDBceGFhXHUwMTI2Il0sWyJhOGE2IiwiXHUwMTMyIl0sWyJhOGE4IiwiXHUwMTNmXHUwMTQxXHhkOFx1MDE1Mlx4YmFceGRlXHUwMTY2XHUwMTRhIl0sWyJhOGIxIiwiXHUzMjYwIiwyNywiXHUyNGQwIiwyNSwiXHUyNDYwIiwxNCwiXHhi''@;'; put 'put ''ZFx1MjE1M1x1MjE1NFx4YmNceGJlXHUyMTViXHUyMTVjXHUyMTVkXHUyMTVlIl0sWyJhOTQxIiwiXHVjYmM1IiwxNCwiXHVjYmQ1IiwxMF0sWyJhOTYxIiwiXHVjYmUwXHVjYmUxXHVjYmUyXHVjYmUzXHVjYmU1XHVjYmU2XHVjYmU4XHVjYmVhIiwxOF0sWyJhOTgxIiwiXHVjYmZkIiwxNCwi''@;'; put 'put ''XHVjYzBlXHVjYzBmXHVjYzExXHVjYzEyXHVjYzEzXHVjYzE1Iiw2LCJcdWNjMWVcdWNjMWZcdWNjMjBcdWNjMjNcdWNjMjRceGU2XHUwMTExXHhmMFx1MDEyN1x1MDEzMVx1MDEzM1x1MDEzOFx1MDE0MFx1MDE0Mlx4ZjhcdTAxNTNceGRmXHhmZVx1MDE2N1x1MDE0Ylx1MDE0OVx1MzIwMCIs''@;'; put 'put ''MjcsIlx1MjQ5YyIsMjUsIlx1MjQ3NCIsMTQsIlx4YjlceGIyXHhiM1x1MjA3NFx1MjA3Zlx1MjA4MVx1MjA4Mlx1MjA4M1x1MjA4NCJdLFsiYWE0MSIsIlx1Y2MyNVx1Y2MyNlx1Y2MyYVx1Y2MyYlx1Y2MyZFx1Y2MyZlx1Y2MzMSIsNiwiXHVjYzNhXHVjYzNmIiw0LCJcdWNjNDZcdWNjNDdc''@;'; put 'put ''dWNjNDlcdWNjNGFcdWNjNGJcdWNjNGRcdWNjNGUiXSxbImFhNjEiLCJcdWNjNGYiLDQsIlx1Y2M1Nlx1Y2M1YSIsNSwiXHVjYzYxXHVjYzYyXHVjYzYzXHVjYzY1XHVjYzY3XHVjYzY5Iiw2LCJcdWNjNzFcdWNjNzIiXSxbImFhODEiLCJcdWNjNzNcdWNjNzRcdWNjNzYiLDI5LCJcdTMwNDEi''@;'; put 'put ''LDgyXSxbImFiNDEiLCJcdWNjOTRcdWNjOTVcdWNjOTZcdWNjOTdcdWNjOWFcdWNjOWJcdWNjOWRcdWNjOWVcdWNjOWZcdWNjYTEiLDYsIlx1Y2NhYVx1Y2NhZSIsNSwiXHVjY2I2XHVjY2I3XHVjY2I5Il0sWyJhYjYxIiwiXHVjY2JhXHVjY2JiXHVjY2JkIiw2LCJcdWNjYzZcdWNjYzhcdWNj''@;'; put 'put ''Y2EiLDUsIlx1Y2NkMVx1Y2NkMlx1Y2NkM1x1Y2NkNSIsNV0sWyJhYjgxIiwiXHVjY2RiIiw4LCJcdWNjZTUiLDYsIlx1Y2NlZFx1Y2NlZVx1Y2NlZlx1Y2NmMSIsMTIsIlx1MzBhMSIsODVdLFsiYWM0MSIsIlx1Y2NmZVx1Y2NmZlx1Y2QwMFx1Y2QwMiIsNSwiXHVjZDBhXHVjZDBiXHVjZDBk''@;'; put 'put ''XHVjZDBlXHVjZDBmXHVjZDExIiw2LCJcdWNkMWFcdWNkMWNcdWNkMWVcdWNkMWZcdWNkMjAiXSxbImFjNjEiLCJcdWNkMjFcdWNkMjJcdWNkMjNcdWNkMjVcdWNkMjZcdWNkMjdcdWNkMjlcdWNkMmFcdWNkMmJcdWNkMmQiLDExLCJcdWNkM2EiLDRdLFsiYWM4MSIsIlx1Y2QzZiIsMjgsIlx1''@;'; put 'put ''Y2Q1ZFx1Y2Q1ZVx1Y2Q1Zlx1MDQxMCIsNSwiXHUwNDAxXHUwNDE2IiwyNV0sWyJhY2QxIiwiXHUwNDMwIiw1LCJcdTA0NTFcdTA0MzYiLDI1XSxbImFkNDEiLCJcdWNkNjFcdWNkNjJcdWNkNjNcdWNkNjUiLDYsIlx1Y2Q2ZVx1Y2Q3MFx1Y2Q3MiIsNSwiXHVjZDc5Iiw3XSxbImFkNjEiLCJc''@;'; put 'put ''dWNkODEiLDYsIlx1Y2Q4OSIsMTAsIlx1Y2Q5Nlx1Y2Q5N1x1Y2Q5OVx1Y2Q5YVx1Y2Q5Ylx1Y2Q5ZFx1Y2Q5ZVx1Y2Q5ZiJdLFsiYWQ4MSIsIlx1Y2RhMFx1Y2RhMVx1Y2RhMlx1Y2RhM1x1Y2RhNlx1Y2RhOFx1Y2RhYSIsNSwiXHVjZGIxIiwxOCwiXHVjZGM1Il0sWyJhZTQxIiwiXHVjZGM2''@;'; put 'put ''Iiw1LCJcdWNkY2RcdWNkY2VcdWNkY2ZcdWNkZDEiLDE2XSxbImFlNjEiLCJcdWNkZTIiLDUsIlx1Y2RlOVx1Y2RlYVx1Y2RlYlx1Y2RlZFx1Y2RlZVx1Y2RlZlx1Y2RmMSIsNiwiXHVjZGZhXHVjZGZjXHVjZGZlIiw0XSxbImFlODEiLCJcdWNlMDNcdWNlMDVcdWNlMDZcdWNlMDdcdWNlMDlc''@;'; put 'put ''dWNlMGFcdWNlMGJcdWNlMGQiLDYsIlx1Y2UxNVx1Y2UxNlx1Y2UxN1x1Y2UxOFx1Y2UxYSIsNSwiXHVjZTIyXHVjZTIzXHVjZTI1XHVjZTI2XHVjZTI3XHVjZTI5XHVjZTJhXHVjZTJiIl0sWyJhZjQxIiwiXHVjZTJjXHVjZTJkXHVjZTJlXHVjZTJmXHVjZTMyXHVjZTM0XHVjZTM2IiwxOV0s''@;'; put 'put ''WyJhZjYxIiwiXHVjZTRhIiwxMywiXHVjZTVhXHVjZTViXHVjZTVkXHVjZTVlXHVjZTYyIiw1LCJcdWNlNmFcdWNlNmMiXSxbImFmODEiLCJcdWNlNmUiLDUsIlx1Y2U3Nlx1Y2U3N1x1Y2U3OVx1Y2U3YVx1Y2U3Ylx1Y2U3ZCIsNiwiXHVjZTg2XHVjZTg4XHVjZThhIiw1LCJcdWNlOTJcdWNl''@;'; put 'put ''OTNcdWNlOTVcdWNlOTZcdWNlOTdcdWNlOTkiXSxbImIwNDEiLCJcdWNlOWEiLDUsIlx1Y2VhMlx1Y2VhNiIsNSwiXHVjZWFlIiwxMl0sWyJiMDYxIiwiXHVjZWJiIiw1LCJcdWNlYzIiLDE5XSxbImIwODEiLCJcdWNlZDYiLDEzLCJcdWNlZTZcdWNlZTdcdWNlZTlcdWNlZWFcdWNlZWQiLDYs''@;'; put 'put ''Ilx1Y2VmNlx1Y2VmYSIsNSwiXHVhYzAwXHVhYzAxXHVhYzA0XHVhYzA3XHVhYzA4XHVhYzA5XHVhYzBhXHVhYzEwIiw3LCJcdWFjMTkiLDQsIlx1YWMyMFx1YWMyNFx1YWMyY1x1YWMyZFx1YWMyZlx1YWMzMFx1YWMzMVx1YWMzOFx1YWMzOVx1YWMzY1x1YWM0MFx1YWM0Ylx1YWM0ZFx1YWM1''@;'; put 'put ''NFx1YWM1OFx1YWM1Y1x1YWM3MFx1YWM3MVx1YWM3NFx1YWM3N1x1YWM3OFx1YWM3YVx1YWM4MFx1YWM4MVx1YWM4M1x1YWM4NFx1YWM4NVx1YWM4Nlx1YWM4OVx1YWM4YVx1YWM4Ylx1YWM4Y1x1YWM5MFx1YWM5NFx1YWM5Y1x1YWM5ZFx1YWM5Zlx1YWNhMFx1YWNhMVx1YWNhOFx1YWNhOVx1''@;'; put 'put ''YWNhYVx1YWNhY1x1YWNhZlx1YWNiMFx1YWNiOFx1YWNiOVx1YWNiYlx1YWNiY1x1YWNiZFx1YWNjMVx1YWNjNFx1YWNjOFx1YWNjY1x1YWNkNVx1YWNkN1x1YWNlMFx1YWNlMVx1YWNlNFx1YWNlN1x1YWNlOFx1YWNlYVx1YWNlY1x1YWNlZlx1YWNmMFx1YWNmMVx1YWNmM1x1YWNmNVx1YWNm''@;'; put 'put ''Nlx1YWNmY1x1YWNmZFx1YWQwMFx1YWQwNFx1YWQwNiJdLFsiYjE0MSIsIlx1Y2YwMlx1Y2YwM1x1Y2YwNVx1Y2YwNlx1Y2YwN1x1Y2YwOSIsNiwiXHVjZjEyXHVjZjE0XHVjZjE2Iiw1LCJcdWNmMWRcdWNmMWVcdWNmMWZcdWNmMjFcdWNmMjJcdWNmMjMiXSxbImIxNjEiLCJcdWNmMjUiLDYs''@;'; put 'put ''Ilx1Y2YyZVx1Y2YzMiIsNSwiXHVjZjM5IiwxMV0sWyJiMTgxIiwiXHVjZjQ1IiwxNCwiXHVjZjU2XHVjZjU3XHVjZjU5XHVjZjVhXHVjZjViXHVjZjVkIiw2LCJcdWNmNjZcdWNmNjhcdWNmNmFcdWNmNmJcdWNmNmNcdWFkMGNcdWFkMGRcdWFkMGZcdWFkMTFcdWFkMThcdWFkMWNcdWFkMjBc''@;'; put 'put ''dWFkMjlcdWFkMmNcdWFkMmRcdWFkMzRcdWFkMzVcdWFkMzhcdWFkM2NcdWFkNDRcdWFkNDVcdWFkNDdcdWFkNDlcdWFkNTBcdWFkNTRcdWFkNThcdWFkNjFcdWFkNjNcdWFkNmNcdWFkNmRcdWFkNzBcdWFkNzNcdWFkNzRcdWFkNzVcdWFkNzZcdWFkN2JcdWFkN2NcdWFkN2RcdWFkN2ZcdWFk''@;'; put 'put ''ODFcdWFkODJcdWFkODhcdWFkODlcdWFkOGNcdWFkOTBcdWFkOWNcdWFkOWRcdWFkYTRcdWFkYjdcdWFkYzBcdWFkYzFcdWFkYzRcdWFkYzhcdWFkZDBcdWFkZDFcdWFkZDNcdWFkZGNcdWFkZTBcdWFkZTRcdWFkZjhcdWFkZjlcdWFkZmNcdWFkZmZcdWFlMDBcdWFlMDFcdWFlMDhcdWFlMDlc''@;'; put 'put ''dWFlMGJcdWFlMGRcdWFlMTRcdWFlMzBcdWFlMzFcdWFlMzRcdWFlMzdcdWFlMzhcdWFlM2FcdWFlNDBcdWFlNDFcdWFlNDNcdWFlNDVcdWFlNDZcdWFlNGFcdWFlNGNcdWFlNGRcdWFlNGVcdWFlNTBcdWFlNTRcdWFlNTZcdWFlNWNcdWFlNWRcdWFlNWZcdWFlNjBcdWFlNjFcdWFlNjVcdWFl''@;'; put 'put ''NjhcdWFlNjlcdWFlNmNcdWFlNzBcdWFlNzgiXSxbImIyNDEiLCJcdWNmNmRcdWNmNmVcdWNmNmZcdWNmNzJcdWNmNzNcdWNmNzVcdWNmNzZcdWNmNzdcdWNmNzkiLDYsIlx1Y2Y4MVx1Y2Y4Mlx1Y2Y4M1x1Y2Y4NFx1Y2Y4NiIsNSwiXHVjZjhkIl0sWyJiMjYxIiwiXHVjZjhlIiwxOCwiXHVj''@;'; put 'put ''ZmEyIiw1LCJcdWNmYTkiXSxbImIyODEiLCJcdWNmYWEiLDUsIlx1Y2ZiMSIsMTgsIlx1Y2ZjNSIsNiwiXHVhZTc5XHVhZTdiXHVhZTdjXHVhZTdkXHVhZTg0XHVhZTg1XHVhZThjXHVhZWJjXHVhZWJkXHVhZWJlXHVhZWMwXHVhZWM0XHVhZWNjXHVhZWNkXHVhZWNmXHVhZWQwXHVhZWQxXHVh''@;'; put 'put ''ZWQ4XHVhZWQ5XHVhZWRjXHVhZWU4XHVhZWViXHVhZWVkXHVhZWY0XHVhZWY4XHVhZWZjXHVhZjA3XHVhZjA4XHVhZjBkXHVhZjEwXHVhZjJjXHVhZjJkXHVhZjMwXHVhZjMyXHVhZjM0XHVhZjNjXHVhZjNkXHVhZjNmXHVhZjQxXHVhZjQyXHVhZjQzXHVhZjQ4XHVhZjQ5XHVhZjUwXHVhZjVj''@;'; put 'put ''XHVhZjVkXHVhZjY0XHVhZjY1XHVhZjc5XHVhZjgwXHVhZjg0XHVhZjg4XHVhZjkwXHVhZjkxXHVhZjk1XHVhZjljXHVhZmI4XHVhZmI5XHVhZmJjXHVhZmMwXHVhZmM3XHVhZmM4XHVhZmM5XHVhZmNiXHVhZmNkXHVhZmNlXHVhZmQ0XHVhZmRjXHVhZmU4XHVhZmU5XHVhZmYwXHVhZmYxXHVh''@;'; put 'put ''ZmY0XHVhZmY4XHViMDAwXHViMDAxXHViMDA0XHViMDBjXHViMDEwXHViMDE0XHViMDFjXHViMDFkXHViMDI4XHViMDQ0XHViMDQ1XHViMDQ4XHViMDRhXHViMDRjXHViMDRlXHViMDUzXHViMDU0XHViMDU1XHViMDU3XHViMDU5Il0sWyJiMzQxIiwiXHVjZmNjIiwxOSwiXHVjZmUyXHVjZmUz''@;'; put 'put ''XHVjZmU1XHVjZmU2XHVjZmU3XHVjZmU5Il0sWyJiMzYxIiwiXHVjZmVhIiw1LCJcdWNmZjJcdWNmZjRcdWNmZjYiLDUsIlx1Y2ZmZFx1Y2ZmZVx1Y2ZmZlx1ZDAwMVx1ZDAwMlx1ZDAwM1x1ZDAwNSIsNV0sWyJiMzgxIiwiXHVkMDBiIiw1LCJcdWQwMTIiLDUsIlx1ZDAxOSIsMTksIlx1YjA1''@;'; put 'put ''ZFx1YjA3Y1x1YjA3ZFx1YjA4MFx1YjA4NFx1YjA4Y1x1YjA4ZFx1YjA4Zlx1YjA5MVx1YjA5OFx1YjA5OVx1YjA5YVx1YjA5Y1x1YjA5Zlx1YjBhMFx1YjBhMVx1YjBhMlx1YjBhOFx1YjBhOVx1YjBhYiIsNCwiXHViMGIxXHViMGIzXHViMGI0XHViMGI1XHViMGI4XHViMGJjXHViMGM0XHVi''@;'; put 'put ''MGM1XHViMGM3XHViMGM4XHViMGM5XHViMGQwXHViMGQxXHViMGQ0XHViMGQ4XHViMGUwXHViMGU1XHViMTA4XHViMTA5XHViMTBiXHViMTBjXHViMTEwXHViMTEyXHViMTEzXHViMTE4XHViMTE5XHViMTFiXHViMTFjXHViMTFkXHViMTIzXHViMTI0XHViMTI1XHViMTI4XHViMTJjXHViMTM0''@;'; put 'put ''XHViMTM1XHViMTM3XHViMTM4XHViMTM5XHViMTQwXHViMTQxXHViMTQ0XHViMTQ4XHViMTUwXHViMTUxXHViMTU0XHViMTU1XHViMTU4XHViMTVjXHViMTYwXHViMTc4XHViMTc5XHViMTdjXHViMTgwXHViMTgyXHViMTg4XHViMTg5XHViMThiXHViMThkXHViMTkyXHViMTkzXHViMTk0XHVi''@;'; put 'put ''MTk4XHViMTljXHViMWE4XHViMWNjXHViMWQwXHViMWQ0XHViMWRjXHViMWRkIl0sWyJiNDQxIiwiXHVkMDJlIiw1LCJcdWQwMzZcdWQwMzdcdWQwMzlcdWQwM2FcdWQwM2JcdWQwM2QiLDYsIlx1ZDA0Nlx1ZDA0OFx1ZDA0YSIsNV0sWyJiNDYxIiwiXHVkMDUxXHVkMDUyXHVkMDUzXHVkMDU1''@;'; put 'put ''XHVkMDU2XHVkMDU3XHVkMDU5Iiw2LCJcdWQwNjEiLDEwLCJcdWQwNmVcdWQwNmYiXSxbImI0ODEiLCJcdWQwNzFcdWQwNzJcdWQwNzNcdWQwNzUiLDYsIlx1ZDA3ZVx1ZDA3Zlx1ZDA4MFx1ZDA4MiIsMTgsIlx1YjFkZlx1YjFlOFx1YjFlOVx1YjFlY1x1YjFmMFx1YjFmOVx1YjFmYlx1YjFm''@;'; put 'put ''ZFx1YjIwNFx1YjIwNVx1YjIwOFx1YjIwYlx1YjIwY1x1YjIxNFx1YjIxNVx1YjIxN1x1YjIxOVx1YjIyMFx1YjIzNFx1YjIzY1x1YjI1OFx1YjI1Y1x1YjI2MFx1YjI2OFx1YjI2OVx1YjI3NFx1YjI3NVx1YjI3Y1x1YjI4NFx1YjI4NVx1YjI4OVx1YjI5MFx1YjI5MVx1YjI5NFx1YjI5OFx1''@;'; put 'put ''YjI5OVx1YjI5YVx1YjJhMFx1YjJhMVx1YjJhM1x1YjJhNVx1YjJhNlx1YjJhYVx1YjJhY1x1YjJiMFx1YjJiNFx1YjJjOFx1YjJjOVx1YjJjY1x1YjJkMFx1YjJkMlx1YjJkOFx1YjJkOVx1YjJkYlx1YjJkZFx1YjJlMlx1YjJlNFx1YjJlNVx1YjJlNlx1YjJlOFx1YjJlYiIsNCwiXHViMmYz''@;'; put 'put ''XHViMmY0XHViMmY1XHViMmY3Iiw0LCJcdWIyZmZcdWIzMDBcdWIzMDFcdWIzMDRcdWIzMDhcdWIzMTBcdWIzMTFcdWIzMTNcdWIzMTRcdWIzMTVcdWIzMWNcdWIzNTRcdWIzNTVcdWIzNTZcdWIzNThcdWIzNWJcdWIzNWNcdWIzNWVcdWIzNWZcdWIzNjRcdWIzNjUiXSxbImI1NDEiLCJcdWQw''@;'; put 'put ''OTUiLDE0LCJcdWQwYTZcdWQwYTdcdWQwYTlcdWQwYWFcdWQwYWJcdWQwYWQiLDVdLFsiYjU2MSIsIlx1ZDBiM1x1ZDBiNlx1ZDBiOFx1ZDBiYSIsNSwiXHVkMGMyXHVkMGMzXHVkMGM1XHVkMGM2XHVkMGM3XHVkMGNhIiw1LCJcdWQwZDJcdWQwZDYiLDRdLFsiYjU4MSIsIlx1ZDBkYlx1ZDBk''@;'; put 'put ''ZVx1ZDBkZlx1ZDBlMVx1ZDBlMlx1ZDBlM1x1ZDBlNSIsNiwiXHVkMGVlXHVkMGYyIiw1LCJcdWQwZjkiLDExLCJcdWIzNjdcdWIzNjlcdWIzNmJcdWIzNmVcdWIzNzBcdWIzNzFcdWIzNzRcdWIzNzhcdWIzODBcdWIzODFcdWIzODNcdWIzODRcdWIzODVcdWIzOGNcdWIzOTBcdWIzOTRcdWIz''@;'; put 'put ''YTBcdWIzYTFcdWIzYThcdWIzYWNcdWIzYzRcdWIzYzVcdWIzYzhcdWIzY2JcdWIzY2NcdWIzY2VcdWIzZDBcdWIzZDRcdWIzZDVcdWIzZDdcdWIzZDlcdWIzZGJcdWIzZGRcdWIzZTBcdWIzZTRcdWIzZThcdWIzZmNcdWI0MTBcdWI0MThcdWI0MWNcdWI0MjBcdWI0MjhcdWI0MjlcdWI0MmJc''@;'; put 'put ''dWI0MzRcdWI0NTBcdWI0NTFcdWI0NTRcdWI0NThcdWI0NjBcdWI0NjFcdWI0NjNcdWI0NjVcdWI0NmNcdWI0ODBcdWI0ODhcdWI0OWRcdWI0YTRcdWI0YThcdWI0YWNcdWI0YjVcdWI0YjdcdWI0YjlcdWI0YzBcdWI0YzRcdWI0YzhcdWI0ZDBcdWI0ZDVcdWI0ZGNcdWI0ZGRcdWI0ZTBcdWI0''@;'; put 'put ''ZTNcdWI0ZTRcdWI0ZTZcdWI0ZWNcdWI0ZWRcdWI0ZWZcdWI0ZjFcdWI0ZjhcdWI1MTRcdWI1MTVcdWI1MThcdWI1MWJcdWI1MWNcdWI1MjRcdWI1MjVcdWI1MjdcdWI1MjhcdWI1MjlcdWI1MmFcdWI1MzBcdWI1MzFcdWI1MzRcdWI1MzgiXSxbImI2NDEiLCJcdWQxMDUiLDcsIlx1ZDEwZSIs''@;'; put 'put ''MTddLFsiYjY2MSIsIlx1ZDEyMCIsMTUsIlx1ZDEzMlx1ZDEzM1x1ZDEzNVx1ZDEzNlx1ZDEzN1x1ZDEzOVx1ZDEzYlx1ZDEzY1x1ZDEzZFx1ZDEzZSJdLFsiYjY4MSIsIlx1ZDEzZlx1ZDE0Mlx1ZDE0NiIsNSwiXHVkMTRlXHVkMTRmXHVkMTUxXHVkMTUyXHVkMTUzXHVkMTU1Iiw2LCJcdWQx''@;'; put 'put ''NWVcdWQxNjBcdWQxNjIiLDUsIlx1ZDE2OVx1ZDE2YVx1ZDE2Ylx1ZDE2ZFx1YjU0MFx1YjU0MVx1YjU0M1x1YjU0NFx1YjU0NVx1YjU0Ylx1YjU0Y1x1YjU0ZFx1YjU1MFx1YjU1NFx1YjU1Y1x1YjU1ZFx1YjU1Zlx1YjU2MFx1YjU2MVx1YjVhMFx1YjVhMVx1YjVhNFx1YjVhOFx1YjVhYVx1''@;'; put 'put ''YjVhYlx1YjViMFx1YjViMVx1YjViM1x1YjViNFx1YjViNVx1YjViYlx1YjViY1x1YjViZFx1YjVjMFx1YjVjNFx1YjVjY1x1YjVjZFx1YjVjZlx1YjVkMFx1YjVkMVx1YjVkOFx1YjVlY1x1YjYxMFx1YjYxMVx1YjYxNFx1YjYxOFx1YjYyNVx1YjYyY1x1YjYzNFx1YjY0OFx1YjY2NFx1YjY2''@;'; put 'put ''OFx1YjY5Y1x1YjY5ZFx1YjZhMFx1YjZhNFx1YjZhYlx1YjZhY1x1YjZiMVx1YjZkNFx1YjZmMFx1YjZmNFx1YjZmOFx1YjcwMFx1YjcwMVx1YjcwNVx1YjcyOFx1YjcyOVx1YjcyY1x1YjcyZlx1YjczMFx1YjczOFx1YjczOVx1YjczYlx1Yjc0NFx1Yjc0OFx1Yjc0Y1x1Yjc1NFx1Yjc1NVx1''@;'; put 'put ''Yjc2MFx1Yjc2NFx1Yjc2OFx1Yjc3MFx1Yjc3MVx1Yjc3M1x1Yjc3NVx1Yjc3Y1x1Yjc3ZFx1Yjc4MFx1Yjc4NFx1Yjc4Y1x1Yjc4ZFx1Yjc4Zlx1Yjc5MFx1Yjc5MVx1Yjc5Mlx1Yjc5Nlx1Yjc5NyJdLFsiYjc0MSIsIlx1ZDE2ZSIsMTMsIlx1ZDE3ZCIsNiwiXHVkMTg1XHVkMTg2XHVkMTg3''@;'; put 'put ''XHVkMTg5XHVkMThhIl0sWyJiNzYxIiwiXHVkMThiIiwyMCwiXHVkMWEyXHVkMWEzXHVkMWE1XHVkMWE2XHVkMWE3Il0sWyJiNzgxIiwiXHVkMWE5Iiw2LCJcdWQxYjJcdWQxYjRcdWQxYjZcdWQxYjdcdWQxYjhcdWQxYjlcdWQxYmJcdWQxYmRcdWQxYmVcdWQxYmZcdWQxYzEiLDE0LCJcdWI3''@;'; put 'put ''OThcdWI3OTlcdWI3OWNcdWI3YTBcdWI3YThcdWI3YTlcdWI3YWJcdWI3YWNcdWI3YWRcdWI3YjRcdWI3YjVcdWI3YjhcdWI3YzdcdWI3YzlcdWI3ZWNcdWI3ZWRcdWI3ZjBcdWI3ZjRcdWI3ZmNcdWI3ZmRcdWI3ZmZcdWI4MDBcdWI4MDFcdWI4MDdcdWI4MDhcdWI4MDlcdWI4MGNcdWI4MTBc''@;'; put 'put ''dWI4MThcdWI4MTlcdWI4MWJcdWI4MWRcdWI4MjRcdWI4MjVcdWI4MjhcdWI4MmNcdWI4MzRcdWI4MzVcdWI4MzdcdWI4MzhcdWI4MzlcdWI4NDBcdWI4NDRcdWI4NTFcdWI4NTNcdWI4NWNcdWI4NWRcdWI4NjBcdWI4NjRcdWI4NmNcdWI4NmRcdWI4NmZcdWI4NzFcdWI4NzhcdWI4N2NcdWI4''@;'; put 'put ''OGRcdWI4YThcdWI4YjBcdWI4YjRcdWI4YjhcdWI4YzBcdWI4YzFcdWI4YzNcdWI4YzVcdWI4Y2NcdWI4ZDBcdWI4ZDRcdWI4ZGRcdWI4ZGZcdWI4ZTFcdWI4ZThcdWI4ZTlcdWI4ZWNcdWI4ZjBcdWI4ZjhcdWI4ZjlcdWI4ZmJcdWI4ZmRcdWI5MDRcdWI5MThcdWI5MjBcdWI5M2NcdWI5M2Rc''@;'; put 'put ''dWI5NDBcdWI5NDRcdWI5NGNcdWI5NGZcdWI5NTFcdWI5NThcdWI5NTlcdWI5NWNcdWI5NjBcdWI5NjhcdWI5NjkiXSxbImI4NDEiLCJcdWQxZDAiLDcsIlx1ZDFkOSIsMTddLFsiYjg2MSIsIlx1ZDFlYiIsOCwiXHVkMWY1XHVkMWY2XHVkMWY3XHVkMWY5IiwxM10sWyJiODgxIiwiXHVkMjA4''@;'; put 'put ''XHVkMjBhIiw1LCJcdWQyMTEiLDI0LCJcdWI5NmJcdWI5NmRcdWI5NzRcdWI5NzVcdWI5NzhcdWI5N2NcdWI5ODRcdWI5ODVcdWI5ODdcdWI5ODlcdWI5OGFcdWI5OGRcdWI5OGVcdWI5YWNcdWI5YWRcdWI5YjBcdWI5YjRcdWI5YmNcdWI5YmRcdWI5YmZcdWI5YzFcdWI5YzhcdWI5YzlcdWI5''@;'; put 'put ''Y2NcdWI5Y2UiLDQsIlx1YjlkOFx1YjlkOVx1YjlkYlx1YjlkZFx1YjlkZVx1YjllMVx1YjllM1x1YjllNFx1YjllNVx1YjllOFx1YjllY1x1YjlmNFx1YjlmNVx1YjlmN1x1YjlmOFx1YjlmOVx1YjlmYVx1YmEwMFx1YmEwMVx1YmEwOFx1YmExNVx1YmEzOFx1YmEzOVx1YmEzY1x1YmE0MFx1''@;'; put 'put ''YmE0Mlx1YmE0OFx1YmE0OVx1YmE0Ylx1YmE0ZFx1YmE0ZVx1YmE1M1x1YmE1NFx1YmE1NVx1YmE1OFx1YmE1Y1x1YmE2NFx1YmE2NVx1YmE2N1x1YmE2OFx1YmE2OVx1YmE3MFx1YmE3MVx1YmE3NFx1YmE3OFx1YmE4M1x1YmE4NFx1YmE4NVx1YmE4N1x1YmE4Y1x1YmFhOFx1YmFhOVx1YmFh''@;'; put 'put ''Ylx1YmFhY1x1YmFiMFx1YmFiMlx1YmFiOFx1YmFiOVx1YmFiYlx1YmFiZFx1YmFjNFx1YmFjOFx1YmFkOFx1YmFkOVx1YmFmYyJdLFsiYjk0MSIsIlx1ZDIyYVx1ZDIyYlx1ZDIyZVx1ZDIyZlx1ZDIzMVx1ZDIzMlx1ZDIzM1x1ZDIzNSIsNiwiXHVkMjNlXHVkMjQwXHVkMjQyIiw1LCJcdWQy''@;'; put 'put ''NDlcdWQyNGFcdWQyNGJcdWQyNGMiXSxbImI5NjEiLCJcdWQyNGQiLDE0LCJcdWQyNWQiLDYsIlx1ZDI2NVx1ZDI2Nlx1ZDI2N1x1ZDI2OCJdLFsiYjk4MSIsIlx1ZDI2OSIsMjIsIlx1ZDI4Mlx1ZDI4M1x1ZDI4NVx1ZDI4Nlx1ZDI4N1x1ZDI4OVx1ZDI4YVx1ZDI4Ylx1ZDI4Y1x1YmIwMFx1''@;'; put 'put ''YmIwNFx1YmIwZFx1YmIwZlx1YmIxMVx1YmIxOFx1YmIxY1x1YmIyMFx1YmIyOVx1YmIyYlx1YmIzNFx1YmIzNVx1YmIzNlx1YmIzOFx1YmIzYlx1YmIzY1x1YmIzZFx1YmIzZVx1YmI0NFx1YmI0NVx1YmI0N1x1YmI0OVx1YmI0ZFx1YmI0Zlx1YmI1MFx1YmI1NFx1YmI1OFx1YmI2MVx1YmI2''@;'; put 'put ''M1x1YmI2Y1x1YmI4OFx1YmI4Y1x1YmI5MFx1YmJhNFx1YmJhOFx1YmJhY1x1YmJiNFx1YmJiN1x1YmJjMFx1YmJjNFx1YmJjOFx1YmJkMFx1YmJkM1x1YmJmOFx1YmJmOVx1YmJmY1x1YmJmZlx1YmMwMFx1YmMwMlx1YmMwOFx1YmMwOVx1YmMwYlx1YmMwY1x1YmMwZFx1YmMwZlx1YmMxMVx1''@;'; put 'put ''YmMxNCIsNCwiXHViYzFiIiw0LCJcdWJjMjRcdWJjMjVcdWJjMjdcdWJjMjlcdWJjMmRcdWJjMzBcdWJjMzFcdWJjMzRcdWJjMzhcdWJjNDBcdWJjNDFcdWJjNDNcdWJjNDRcdWJjNDVcdWJjNDlcdWJjNGNcdWJjNGRcdWJjNTBcdWJjNWRcdWJjODRcdWJjODVcdWJjODhcdWJjOGJcdWJjOGNc''@;'; put 'put ''dWJjOGVcdWJjOTRcdWJjOTVcdWJjOTciXSxbImJhNDEiLCJcdWQyOGRcdWQyOGVcdWQyOGZcdWQyOTJcdWQyOTNcdWQyOTRcdWQyOTYiLDUsIlx1ZDI5ZFx1ZDI5ZVx1ZDI5Zlx1ZDJhMVx1ZDJhMlx1ZDJhM1x1ZDJhNSIsNiwiXHVkMmFkIl0sWyJiYTYxIiwiXHVkMmFlXHVkMmFmXHVkMmIw''@;'; put 'put ''XHVkMmIyIiw1LCJcdWQyYmFcdWQyYmJcdWQyYmRcdWQyYmVcdWQyYzFcdWQyYzMiLDQsIlx1ZDJjYVx1ZDJjYyIsNV0sWyJiYTgxIiwiXHVkMmQyXHVkMmQzXHVkMmQ1XHVkMmQ2XHVkMmQ3XHVkMmQ5XHVkMmRhXHVkMmRiXHVkMmRkIiw2LCJcdWQyZTYiLDksIlx1ZDJmMlx1ZDJmM1x1ZDJm''@;'; put 'put ''NVx1ZDJmNlx1ZDJmN1x1ZDJmOVx1ZDJmYVx1YmM5OVx1YmM5YVx1YmNhMFx1YmNhMVx1YmNhNFx1YmNhN1x1YmNhOFx1YmNiMFx1YmNiMVx1YmNiM1x1YmNiNFx1YmNiNVx1YmNiY1x1YmNiZFx1YmNjMFx1YmNjNFx1YmNjZFx1YmNjZlx1YmNkMFx1YmNkMVx1YmNkNVx1YmNkOFx1YmNkY1x1''@;'; put 'put ''YmNmNFx1YmNmNVx1YmNmNlx1YmNmOFx1YmNmY1x1YmQwNFx1YmQwNVx1YmQwN1x1YmQwOVx1YmQxMFx1YmQxNFx1YmQyNFx1YmQyY1x1YmQ0MFx1YmQ0OFx1YmQ0OVx1YmQ0Y1x1YmQ1MFx1YmQ1OFx1YmQ1OVx1YmQ2NFx1YmQ2OFx1YmQ4MFx1YmQ4MVx1YmQ4NFx1YmQ4N1x1YmQ4OFx1YmQ4''@;'; put 'put ''OVx1YmQ4YVx1YmQ5MFx1YmQ5MVx1YmQ5M1x1YmQ5NVx1YmQ5OVx1YmQ5YVx1YmQ5Y1x1YmRhNFx1YmRiMFx1YmRiOFx1YmRkNFx1YmRkNVx1YmRkOFx1YmRkY1x1YmRlOVx1YmRmMFx1YmRmNFx1YmRmOFx1YmUwMFx1YmUwM1x1YmUwNVx1YmUwY1x1YmUwZFx1YmUxMFx1YmUxNFx1YmUxY1x1''@;'; put 'put ''YmUxZFx1YmUxZlx1YmU0NFx1YmU0NVx1YmU0OFx1YmU0Y1x1YmU0ZVx1YmU1NFx1YmU1NVx1YmU1N1x1YmU1OVx1YmU1YVx1YmU1Ylx1YmU2MFx1YmU2MVx1YmU2NCJdLFsiYmI0MSIsIlx1ZDJmYiIsNCwiXHVkMzAyXHVkMzA0XHVkMzA2Iiw1LCJcdWQzMGZcdWQzMTFcdWQzMTJcdWQzMTNc''@;'; put 'put ''dWQzMTVcdWQzMTciLDQsIlx1ZDMxZVx1ZDMyMlx1ZDMyMyJdLFsiYmI2MSIsIlx1ZDMyNFx1ZDMyNlx1ZDMyN1x1ZDMyYVx1ZDMyYlx1ZDMyZFx1ZDMyZVx1ZDMyZlx1ZDMzMSIsNiwiXHVkMzNhXHVkMzNlIiw1LCJcdWQzNDZcdWQzNDdcdWQzNDhcdWQzNDkiXSxbImJiODEiLCJcdWQzNGEi''@;'; put 'put ''LDMxLCJcdWJlNjhcdWJlNmFcdWJlNzBcdWJlNzFcdWJlNzNcdWJlNzRcdWJlNzVcdWJlN2JcdWJlN2NcdWJlN2RcdWJlODBcdWJlODRcdWJlOGNcdWJlOGRcdWJlOGZcdWJlOTBcdWJlOTFcdWJlOThcdWJlOTlcdWJlYThcdWJlZDBcdWJlZDFcdWJlZDRcdWJlZDdcdWJlZDhcdWJlZTBcdWJl''@;'; put 'put ''ZTNcdWJlZTRcdWJlZTVcdWJlZWNcdWJmMDFcdWJmMDhcdWJmMDlcdWJmMThcdWJmMTlcdWJmMWJcdWJmMWNcdWJmMWRcdWJmNDBcdWJmNDFcdWJmNDRcdWJmNDhcdWJmNTBcdWJmNTFcdWJmNTVcdWJmOTRcdWJmYjBcdWJmYzVcdWJmY2NcdWJmY2RcdWJmZDBcdWJmZDRcdWJmZGNcdWJmZGZc''@;'; put 'put ''dWJmZTFcdWMwM2NcdWMwNTFcdWMwNThcdWMwNWNcdWMwNjBcdWMwNjhcdWMwNjlcdWMwOTBcdWMwOTFcdWMwOTRcdWMwOThcdWMwYTBcdWMwYTFcdWMwYTNcdWMwYTVcdWMwYWNcdWMwYWRcdWMwYWZcdWMwYjBcdWMwYjNcdWMwYjRcdWMwYjVcdWMwYjZcdWMwYmNcdWMwYmRcdWMwYmZcdWMw''@;'; put 'put ''YzBcdWMwYzFcdWMwYzVcdWMwYzhcdWMwYzlcdWMwY2NcdWMwZDBcdWMwZDhcdWMwZDlcdWMwZGJcdWMwZGNcdWMwZGRcdWMwZTQiXSxbImJjNDEiLCJcdWQzNmEiLDE3LCJcdWQzN2VcdWQzN2ZcdWQzODFcdWQzODJcdWQzODNcdWQzODVcdWQzODZcdWQzODciXSxbImJjNjEiLCJcdWQzODhc''@;'; put 'put ''dWQzODlcdWQzOGFcdWQzOGJcdWQzOGVcdWQzOTIiLDUsIlx1ZDM5YVx1ZDM5Ylx1ZDM5ZFx1ZDM5ZVx1ZDM5Zlx1ZDNhMSIsNiwiXHVkM2FhXHVkM2FjXHVkM2FlIl0sWyJiYzgxIiwiXHVkM2FmIiw0LCJcdWQzYjVcdWQzYjZcdWQzYjdcdWQzYjlcdWQzYmFcdWQzYmJcdWQzYmQiLDYsIlx1''@;'; put 'put ''ZDNjNlx1ZDNjN1x1ZDNjYSIsNSwiXHVkM2QxIiw1LCJcdWMwZTVcdWMwZThcdWMwZWNcdWMwZjRcdWMwZjVcdWMwZjdcdWMwZjlcdWMxMDBcdWMxMDRcdWMxMDhcdWMxMTBcdWMxMTVcdWMxMWMiLDQsIlx1YzEyM1x1YzEyNFx1YzEyNlx1YzEyN1x1YzEyY1x1YzEyZFx1YzEyZlx1YzEzMFx1''@;'; put 'put ''YzEzMVx1YzEzNlx1YzEzOFx1YzEzOVx1YzEzY1x1YzE0MFx1YzE0OFx1YzE0OVx1YzE0Ylx1YzE0Y1x1YzE0ZFx1YzE1NFx1YzE1NVx1YzE1OFx1YzE1Y1x1YzE2NFx1YzE2NVx1YzE2N1x1YzE2OFx1YzE2OVx1YzE3MFx1YzE3NFx1YzE3OFx1YzE4NVx1YzE4Y1x1YzE4ZFx1YzE4ZVx1YzE5''@;'; put 'put ''MFx1YzE5NFx1YzE5Nlx1YzE5Y1x1YzE5ZFx1YzE5Zlx1YzFhMVx1YzFhNVx1YzFhOFx1YzFhOVx1YzFhY1x1YzFiMFx1YzFiZFx1YzFjNFx1YzFjOFx1YzFjY1x1YzFkNFx1YzFkN1x1YzFkOFx1YzFlMFx1YzFlNFx1YzFlOFx1YzFmMFx1YzFmMVx1YzFmM1x1YzFmY1x1YzFmZFx1YzIwMFx1''@;'; put 'put ''YzIwNFx1YzIwY1x1YzIwZFx1YzIwZlx1YzIxMVx1YzIxOFx1YzIxOVx1YzIxY1x1YzIxZlx1YzIyMFx1YzIyOFx1YzIyOVx1YzIyYlx1YzIyZCJdLFsiYmQ0MSIsIlx1ZDNkN1x1ZDNkOSIsNywiXHVkM2UyXHVkM2U0Iiw3LCJcdWQzZWVcdWQzZWZcdWQzZjFcdWQzZjJcdWQzZjNcdWQzZjVc''@;'; put 'put ''dWQzZjZcdWQzZjciXSxbImJkNjEiLCJcdWQzZjhcdWQzZjlcdWQzZmFcdWQzZmJcdWQzZmVcdWQ0MDBcdWQ0MDIiLDUsIlx1ZDQwOSIsMTNdLFsiYmQ4MSIsIlx1ZDQxNyIsNSwiXHVkNDFlIiwyNSwiXHVjMjJmXHVjMjMxXHVjMjMyXHVjMjM0XHVjMjQ4XHVjMjUwXHVjMjUxXHVjMjU0XHVj''@;'; put 'put ''MjU4XHVjMjYwXHVjMjY1XHVjMjZjXHVjMjZkXHVjMjcwXHVjMjc0XHVjMjdjXHVjMjdkXHVjMjdmXHVjMjgxXHVjMjg4XHVjMjg5XHVjMjkwXHVjMjk4XHVjMjliXHVjMjlkXHVjMmE0XHVjMmE1XHVjMmE4XHVjMmFjXHVjMmFkXHVjMmI0XHVjMmI1XHVjMmI3XHVjMmI5XHVjMmRjXHVjMmRk''@;'; put 'put ''XHVjMmUwXHVjMmUzXHVjMmU0XHVjMmViXHVjMmVjXHVjMmVkXHVjMmVmXHVjMmYxXHVjMmY2XHVjMmY4XHVjMmY5XHVjMmZiXHVjMmZjXHVjMzAwXHVjMzA4XHVjMzA5XHVjMzBjXHVjMzBkXHVjMzEzXHVjMzE0XHVjMzE1XHVjMzE4XHVjMzFjXHVjMzI0XHVjMzI1XHVjMzI4XHVjMzI5XHVj''@;'; put 'put ''MzQ1XHVjMzY4XHVjMzY5XHVjMzZjXHVjMzcwXHVjMzcyXHVjMzc4XHVjMzc5XHVjMzdjXHVjMzdkXHVjMzg0XHVjMzg4XHVjMzhjXHVjM2MwXHVjM2Q4XHVjM2Q5XHVjM2RjXHVjM2RmXHVjM2UwXHVjM2UyXHVjM2U4XHVjM2U5XHVjM2VkXHVjM2Y0XHVjM2Y1XHVjM2Y4XHVjNDA4XHVjNDEw''@;'; put 'put ''XHVjNDI0XHVjNDJjXHVjNDMwIl0sWyJiZTQxIiwiXHVkNDM4Iiw3LCJcdWQ0NDFcdWQ0NDJcdWQ0NDNcdWQ0NDUiLDE0XSxbImJlNjEiLCJcdWQ0NTQiLDcsIlx1ZDQ1ZFx1ZDQ1ZVx1ZDQ1Zlx1ZDQ2MVx1ZDQ2Mlx1ZDQ2M1x1ZDQ2NSIsNywiXHVkNDZlXHVkNDcwXHVkNDcxXHVkNDcyIl0s''@;'; put 'put ''WyJiZTgxIiwiXHVkNDczIiw0LCJcdWQ0N2FcdWQ0N2JcdWQ0N2RcdWQ0N2VcdWQ0ODFcdWQ0ODMiLDQsIlx1ZDQ4YVx1ZDQ4Y1x1ZDQ4ZSIsNSwiXHVkNDk1Iiw4LCJcdWM0MzRcdWM0M2NcdWM0M2RcdWM0NDhcdWM0NjRcdWM0NjVcdWM0NjhcdWM0NmNcdWM0NzRcdWM0NzVcdWM0NzlcdWM0''@;'; put 'put ''ODBcdWM0OTRcdWM0OWNcdWM0YjhcdWM0YmNcdWM0ZTlcdWM0ZjBcdWM0ZjFcdWM0ZjRcdWM0ZjhcdWM0ZmFcdWM0ZmZcdWM1MDBcdWM1MDFcdWM1MGNcdWM1MTBcdWM1MTRcdWM1MWNcdWM1MjhcdWM1MjlcdWM1MmNcdWM1MzBcdWM1MzhcdWM1MzlcdWM1M2JcdWM1M2RcdWM1NDRcdWM1NDVc''@;'; put 'put ''dWM1NDhcdWM1NDlcdWM1NGFcdWM1NGNcdWM1NGRcdWM1NGVcdWM1NTNcdWM1NTRcdWM1NTVcdWM1NTdcdWM1NThcdWM1NTlcdWM1NWRcdWM1NWVcdWM1NjBcdWM1NjFcdWM1NjRcdWM1NjhcdWM1NzBcdWM1NzFcdWM1NzNcdWM1NzRcdWM1NzVcdWM1N2NcdWM1N2RcdWM1ODBcdWM1ODRcdWM1''@;'; put 'put ''ODdcdWM1OGNcdWM1OGRcdWM1OGZcdWM1OTFcdWM1OTVcdWM1OTdcdWM1OThcdWM1OWNcdWM1YTBcdWM1YTlcdWM1YjRcdWM1YjVcdWM1YjhcdWM1YjlcdWM1YmJcdWM1YmNcdWM1YmRcdWM1YmVcdWM1YzQiLDYsIlx1YzVjY1x1YzVjZSJdLFsiYmY0MSIsIlx1ZDQ5ZSIsMTAsIlx1ZDRhYSIs''@;'; put 'put ''MTRdLFsiYmY2MSIsIlx1ZDRiOSIsMTgsIlx1ZDRjZFx1ZDRjZVx1ZDRjZlx1ZDRkMVx1ZDRkMlx1ZDRkM1x1ZDRkNSJdLFsiYmY4MSIsIlx1ZDRkNiIsNSwiXHVkNGRkXHVkNGRlXHVkNGUwIiw3LCJcdWQ0ZTlcdWQ0ZWFcdWQ0ZWJcdWQ0ZWRcdWQ0ZWVcdWQ0ZWZcdWQ0ZjEiLDYsIlx1ZDRm''@;'; put 'put ''OVx1ZDRmYVx1ZDRmY1x1YzVkMFx1YzVkMVx1YzVkNFx1YzVkOFx1YzVlMFx1YzVlMVx1YzVlM1x1YzVlNVx1YzVlY1x1YzVlZFx1YzVlZVx1YzVmMFx1YzVmNFx1YzVmNlx1YzVmN1x1YzVmYyIsNSwiXHVjNjA1XHVjNjA2XHVjNjA3XHVjNjA4XHVjNjBjXHVjNjEwXHVjNjE4XHVjNjE5XHVj''@;'; put 'put ''NjFiXHVjNjFjXHVjNjI0XHVjNjI1XHVjNjI4XHVjNjJjXHVjNjJkXHVjNjJlXHVjNjMwXHVjNjMzXHVjNjM0XHVjNjM1XHVjNjM3XHVjNjM5XHVjNjNiXHVjNjQwXHVjNjQxXHVjNjQ0XHVjNjQ4XHVjNjUwXHVjNjUxXHVjNjUzXHVjNjU0XHVjNjU1XHVjNjVjXHVjNjVkXHVjNjYwXHVjNjZj''@;'; put 'put ''XHVjNjZmXHVjNjcxXHVjNjc4XHVjNjc5XHVjNjdjXHVjNjgwXHVjNjg4XHVjNjg5XHVjNjhiXHVjNjhkXHVjNjk0XHVjNjk1XHVjNjk4XHVjNjljXHVjNmE0XHVjNmE1XHVjNmE3XHVjNmE5XHVjNmIwXHVjNmIxXHVjNmI0XHVjNmI4XHVjNmI5XHVjNmJhXHVjNmMwXHVjNmMxXHVjNmMzXHVj''@;'; put 'put ''NmM1XHVjNmNjXHVjNmNkXHVjNmQwXHVjNmQ0XHVjNmRjXHVjNmRkXHVjNmUwXHVjNmUxXHVjNmU4Il0sWyJjMDQxIiwiXHVkNGZlIiw1LCJcdWQ1MDVcdWQ1MDZcdWQ1MDdcdWQ1MDlcdWQ1MGFcdWQ1MGJcdWQ1MGQiLDYsIlx1ZDUxNlx1ZDUxOCIsNV0sWyJjMDYxIiwiXHVkNTFlIiwyNV0s''@;'; put 'put ''WyJjMDgxIiwiXHVkNTM4XHVkNTM5XHVkNTNhXHVkNTNiXHVkNTNlXHVkNTNmXHVkNTQxXHVkNTQyXHVkNTQzXHVkNTQ1Iiw2LCJcdWQ1NGVcdWQ1NTBcdWQ1NTIiLDUsIlx1ZDU1YVx1ZDU1Ylx1ZDU1ZFx1ZDU1ZVx1ZDU1Zlx1ZDU2MVx1ZDU2Mlx1ZDU2M1x1YzZlOVx1YzZlY1x1YzZmMFx1''@;'; put 'put ''YzZmOFx1YzZmOVx1YzZmZFx1YzcwNFx1YzcwNVx1YzcwOFx1YzcwY1x1YzcxNFx1YzcxNVx1YzcxN1x1YzcxOVx1YzcyMFx1YzcyMVx1YzcyNFx1YzcyOFx1YzczMFx1YzczMVx1YzczM1x1YzczNVx1YzczN1x1YzczY1x1YzczZFx1Yzc0MFx1Yzc0NFx1Yzc0YVx1Yzc0Y1x1Yzc0ZFx1Yzc0''@;'; put 'put ''Zlx1Yzc1MSIsNywiXHVjNzVjXHVjNzYwXHVjNzY4XHVjNzZiXHVjNzc0XHVjNzc1XHVjNzc4XHVjNzdjXHVjNzdkXHVjNzdlXHVjNzgzXHVjNzg0XHVjNzg1XHVjNzg3XHVjNzg4XHVjNzg5XHVjNzhhXHVjNzhlXHVjNzkwXHVjNzkxXHVjNzk0XHVjNzk2XHVjNzk3XHVjNzk4XHVjNzlhXHVj''@;'; put 'put ''N2EwXHVjN2ExXHVjN2EzXHVjN2E0XHVjN2E1XHVjN2E2XHVjN2FjXHVjN2FkXHVjN2IwXHVjN2I0XHVjN2JjXHVjN2JkXHVjN2JmXHVjN2MwXHVjN2MxXHVjN2M4XHVjN2M5XHVjN2NjXHVjN2NlXHVjN2QwXHVjN2Q4XHVjN2RkXHVjN2U0XHVjN2U4XHVjN2VjXHVjODAwXHVjODAxXHVjODA0''@;'; put 'put ''XHVjODA4XHVjODBhIl0sWyJjMTQxIiwiXHVkNTY0XHVkNTY2XHVkNTY3XHVkNTZhXHVkNTZjXHVkNTZlIiw1LCJcdWQ1NzZcdWQ1NzdcdWQ1NzlcdWQ1N2FcdWQ1N2JcdWQ1N2QiLDYsIlx1ZDU4Nlx1ZDU4YVx1ZDU4YiJdLFsiYzE2MSIsIlx1ZDU4Y1x1ZDU4ZFx1ZDU4ZVx1ZDU4Zlx1ZDU5''@;'; put 'put ''MSIsMTksIlx1ZDVhNlx1ZDVhNyJdLFsiYzE4MSIsIlx1ZDVhOCIsMzEsIlx1YzgxMFx1YzgxMVx1YzgxM1x1YzgxNVx1YzgxNlx1YzgxY1x1YzgxZFx1YzgyMFx1YzgyNFx1YzgyY1x1YzgyZFx1YzgyZlx1YzgzMVx1YzgzOFx1YzgzY1x1Yzg0MFx1Yzg0OFx1Yzg0OVx1Yzg0Y1x1Yzg0ZFx1''@;'; put 'put ''Yzg1NFx1Yzg3MFx1Yzg3MVx1Yzg3NFx1Yzg3OFx1Yzg3YVx1Yzg4MFx1Yzg4MVx1Yzg4M1x1Yzg4NVx1Yzg4Nlx1Yzg4N1x1Yzg4Ylx1Yzg4Y1x1Yzg4ZFx1Yzg5NFx1Yzg5ZFx1Yzg5Zlx1YzhhMVx1YzhhOFx1YzhiY1x1YzhiZFx1YzhjNFx1YzhjOFx1YzhjY1x1YzhkNFx1YzhkNVx1Yzhk''@;'; put 'put ''N1x1YzhkOVx1YzhlMFx1YzhlMVx1YzhlNFx1YzhmNVx1YzhmY1x1YzhmZFx1YzkwMFx1YzkwNFx1YzkwNVx1YzkwNlx1YzkwY1x1YzkwZFx1YzkwZlx1YzkxMVx1YzkxOFx1YzkyY1x1YzkzNFx1Yzk1MFx1Yzk1MVx1Yzk1NFx1Yzk1OFx1Yzk2MFx1Yzk2MVx1Yzk2M1x1Yzk2Y1x1Yzk3MFx1''@;'; put 'put ''Yzk3NFx1Yzk3Y1x1Yzk4OFx1Yzk4OVx1Yzk4Y1x1Yzk5MFx1Yzk5OFx1Yzk5OVx1Yzk5Ylx1Yzk5ZFx1YzljMFx1YzljMVx1YzljNFx1YzljN1x1YzljOFx1YzljYVx1YzlkMFx1YzlkMVx1YzlkMyJdLFsiYzI0MSIsIlx1ZDVjYVx1ZDVjYlx1ZDVjZFx1ZDVjZVx1ZDVjZlx1ZDVkMVx1ZDVk''@;'; put 'put ''MyIsNCwiXHVkNWRhXHVkNWRjXHVkNWRlIiw1LCJcdWQ1ZTZcdWQ1ZTdcdWQ1ZTlcdWQ1ZWFcdWQ1ZWJcdWQ1ZWRcdWQ1ZWUiXSxbImMyNjEiLCJcdWQ1ZWYiLDQsIlx1ZDVmNlx1ZDVmOFx1ZDVmYSIsNSwiXHVkNjAyXHVkNjAzXHVkNjA1XHVkNjA2XHVkNjA3XHVkNjA5Iiw2LCJcdWQ2MTIi''@;'; put 'put ''XSxbImMyODEiLCJcdWQ2MTYiLDUsIlx1ZDYxZFx1ZDYxZVx1ZDYxZlx1ZDYyMVx1ZDYyMlx1ZDYyM1x1ZDYyNSIsNywiXHVkNjJlIiw5LCJcdWQ2M2FcdWQ2M2JcdWM5ZDVcdWM5ZDZcdWM5ZDlcdWM5ZGFcdWM5ZGNcdWM5ZGRcdWM5ZTBcdWM5ZTJcdWM5ZTRcdWM5ZTdcdWM5ZWNcdWM5ZWRc''@;'; put 'put ''dWM5ZWZcdWM5ZjBcdWM5ZjFcdWM5ZjhcdWM5ZjlcdWM5ZmNcdWNhMDBcdWNhMDhcdWNhMDlcdWNhMGJcdWNhMGNcdWNhMGRcdWNhMTRcdWNhMThcdWNhMjlcdWNhNGNcdWNhNGRcdWNhNTBcdWNhNTRcdWNhNWNcdWNhNWRcdWNhNWZcdWNhNjBcdWNhNjFcdWNhNjhcdWNhN2RcdWNhODRcdWNh''@;'; put 'put ''OThcdWNhYmNcdWNhYmRcdWNhYzBcdWNhYzRcdWNhY2NcdWNhY2RcdWNhY2ZcdWNhZDFcdWNhZDNcdWNhZDhcdWNhZDlcdWNhZTBcdWNhZWNcdWNhZjRcdWNiMDhcdWNiMTBcdWNiMTRcdWNiMThcdWNiMjBcdWNiMjFcdWNiNDFcdWNiNDhcdWNiNDlcdWNiNGNcdWNiNTBcdWNiNThcdWNiNTlc''@;'; put 'put ''dWNiNWRcdWNiNjRcdWNiNzhcdWNiNzlcdWNiOWNcdWNiYjhcdWNiZDRcdWNiZTRcdWNiZTdcdWNiZTlcdWNjMGNcdWNjMGRcdWNjMTBcdWNjMTRcdWNjMWNcdWNjMWRcdWNjMjFcdWNjMjJcdWNjMjdcdWNjMjhcdWNjMjlcdWNjMmNcdWNjMmVcdWNjMzBcdWNjMzhcdWNjMzlcdWNjM2IiXSxb''@;'; put 'put ''ImMzNDEiLCJcdWQ2M2RcdWQ2M2VcdWQ2M2ZcdWQ2NDFcdWQ2NDJcdWQ2NDNcdWQ2NDRcdWQ2NDZcdWQ2NDdcdWQ2NGFcdWQ2NGNcdWQ2NGVcdWQ2NGZcdWQ2NTBcdWQ2NTJcdWQ2NTNcdWQ2NTZcdWQ2NTdcdWQ2NTlcdWQ2NWFcdWQ2NWJcdWQ2NWQiLDRdLFsiYzM2MSIsIlx1ZDY2MiIsNCwi''@;'; put 'put ''XHVkNjY4XHVkNjZhIiw1LCJcdWQ2NzJcdWQ2NzNcdWQ2NzUiLDExXSxbImMzODEiLCJcdWQ2ODFcdWQ2ODJcdWQ2ODRcdWQ2ODYiLDUsIlx1ZDY4ZVx1ZDY4Zlx1ZDY5MVx1ZDY5Mlx1ZDY5M1x1ZDY5NSIsNywiXHVkNjllXHVkNmEwXHVkNmEyIiw1LCJcdWQ2YTlcdWQ2YWFcdWNjM2NcdWNj''@;'; put 'put ''M2RcdWNjM2VcdWNjNDRcdWNjNDVcdWNjNDhcdWNjNGNcdWNjNTRcdWNjNTVcdWNjNTdcdWNjNThcdWNjNTlcdWNjNjBcdWNjNjRcdWNjNjZcdWNjNjhcdWNjNzBcdWNjNzVcdWNjOThcdWNjOTlcdWNjOWNcdWNjYTBcdWNjYThcdWNjYTlcdWNjYWJcdWNjYWNcdWNjYWRcdWNjYjRcdWNjYjVc''@;'; put 'put ''dWNjYjhcdWNjYmNcdWNjYzRcdWNjYzVcdWNjYzdcdWNjYzlcdWNjZDBcdWNjZDRcdWNjZTRcdWNjZWNcdWNjZjBcdWNkMDFcdWNkMDhcdWNkMDlcdWNkMGNcdWNkMTBcdWNkMThcdWNkMTlcdWNkMWJcdWNkMWRcdWNkMjRcdWNkMjhcdWNkMmNcdWNkMzlcdWNkNWNcdWNkNjBcdWNkNjRcdWNk''@;'; put 'put ''NmNcdWNkNmRcdWNkNmZcdWNkNzFcdWNkNzhcdWNkODhcdWNkOTRcdWNkOTVcdWNkOThcdWNkOWNcdWNkYTRcdWNkYTVcdWNkYTdcdWNkYTlcdWNkYjBcdWNkYzRcdWNkY2NcdWNkZDBcdWNkZThcdWNkZWNcdWNkZjBcdWNkZjhcdWNkZjlcdWNkZmJcdWNkZmRcdWNlMDRcdWNlMDhcdWNlMGNc''@;'; put 'put ''dWNlMTRcdWNlMTlcdWNlMjBcdWNlMjFcdWNlMjRcdWNlMjhcdWNlMzBcdWNlMzFcdWNlMzNcdWNlMzUiXSxbImM0NDEiLCJcdWQ2YWJcdWQ2YWRcdWQ2YWVcdWQ2YWZcdWQ2YjEiLDcsIlx1ZDZiYVx1ZDZiYyIsNywiXHVkNmM2XHVkNmM3XHVkNmM5XHVkNmNhXHVkNmNiIl0sWyJjNDYxIiwi''@;'; put 'put ''XHVkNmNkXHVkNmNlXHVkNmNmXHVkNmQwXHVkNmQyXHVkNmQzXHVkNmQ1XHVkNmQ2XHVkNmQ4XHVkNmRhIiw1LCJcdWQ2ZTFcdWQ2ZTJcdWQ2ZTNcdWQ2ZTVcdWQ2ZTZcdWQ2ZTdcdWQ2ZTkiLDRdLFsiYzQ4MSIsIlx1ZDZlZVx1ZDZlZlx1ZDZmMVx1ZDZmMlx1ZDZmM1x1ZDZmNFx1ZDZmNiIs''@;'; put 'put ''NSwiXHVkNmZlXHVkNmZmXHVkNzAxXHVkNzAyXHVkNzAzXHVkNzA1IiwxMSwiXHVkNzEyXHVkNzEzXHVkNzE0XHVjZTU4XHVjZTU5XHVjZTVjXHVjZTVmXHVjZTYwXHVjZTYxXHVjZTY4XHVjZTY5XHVjZTZiXHVjZTZkXHVjZTc0XHVjZTc1XHVjZTc4XHVjZTdjXHVjZTg0XHVjZTg1XHVjZTg3''@;'; put 'put ''XHVjZTg5XHVjZTkwXHVjZTkxXHVjZTk0XHVjZTk4XHVjZWEwXHVjZWExXHVjZWEzXHVjZWE0XHVjZWE1XHVjZWFjXHVjZWFkXHVjZWMxXHVjZWU0XHVjZWU1XHVjZWU4XHVjZWViXHVjZWVjXHVjZWY0XHVjZWY1XHVjZWY3XHVjZWY4XHVjZWY5XHVjZjAwXHVjZjAxXHVjZjA0XHVjZjA4XHVj''@;'; put 'put ''ZjEwXHVjZjExXHVjZjEzXHVjZjE1XHVjZjFjXHVjZjIwXHVjZjI0XHVjZjJjXHVjZjJkXHVjZjJmXHVjZjMwXHVjZjMxXHVjZjM4XHVjZjU0XHVjZjU1XHVjZjU4XHVjZjVjXHVjZjY0XHVjZjY1XHVjZjY3XHVjZjY5XHVjZjcwXHVjZjcxXHVjZjc0XHVjZjc4XHVjZjgwXHVjZjg1XHVjZjhj''@;'; put 'put ''XHVjZmExXHVjZmE4XHVjZmIwXHVjZmM0XHVjZmUwXHVjZmUxXHVjZmU0XHVjZmU4XHVjZmYwXHVjZmYxXHVjZmYzXHVjZmY1XHVjZmZjXHVkMDAwXHVkMDA0XHVkMDExXHVkMDE4XHVkMDJkXHVkMDM0XHVkMDM1XHVkMDM4XHVkMDNjIl0sWyJjNTQxIiwiXHVkNzE1XHVkNzE2XHVkNzE3XHVk''@;'; put 'put ''NzFhXHVkNzFiXHVkNzFkXHVkNzFlXHVkNzFmXHVkNzIxIiw2LCJcdWQ3MmFcdWQ3MmNcdWQ3MmUiLDUsIlx1ZDczNlx1ZDczN1x1ZDczOSJdLFsiYzU2MSIsIlx1ZDczYVx1ZDczYlx1ZDczZCIsNiwiXHVkNzQ1XHVkNzQ2XHVkNzQ4XHVkNzRhIiw1LCJcdWQ3NTJcdWQ3NTNcdWQ3NTVcdWQ3''@;'; put 'put ''NWEiLDRdLFsiYzU4MSIsIlx1ZDc1Zlx1ZDc2Mlx1ZDc2NFx1ZDc2Nlx1ZDc2N1x1ZDc2OFx1ZDc2YVx1ZDc2Ylx1ZDc2ZFx1ZDc2ZVx1ZDc2Zlx1ZDc3MVx1ZDc3Mlx1ZDc3M1x1ZDc3NSIsNiwiXHVkNzdlXHVkNzdmXHVkNzgwXHVkNzgyIiw1LCJcdWQ3OGFcdWQ3OGJcdWQwNDRcdWQwNDVc''@;'; put 'put ''dWQwNDdcdWQwNDlcdWQwNTBcdWQwNTRcdWQwNThcdWQwNjBcdWQwNmNcdWQwNmRcdWQwNzBcdWQwNzRcdWQwN2NcdWQwN2RcdWQwODFcdWQwYTRcdWQwYTVcdWQwYThcdWQwYWNcdWQwYjRcdWQwYjVcdWQwYjdcdWQwYjlcdWQwYzBcdWQwYzFcdWQwYzRcdWQwYzhcdWQwYzlcdWQwZDBcdWQw''@;'; put 'put ''ZDFcdWQwZDNcdWQwZDRcdWQwZDVcdWQwZGNcdWQwZGRcdWQwZTBcdWQwZTRcdWQwZWNcdWQwZWRcdWQwZWZcdWQwZjBcdWQwZjFcdWQwZjhcdWQxMGRcdWQxMzBcdWQxMzFcdWQxMzRcdWQxMzhcdWQxM2FcdWQxNDBcdWQxNDFcdWQxNDNcdWQxNDRcdWQxNDVcdWQxNGNcdWQxNGRcdWQxNTBc''@;'; put 'put ''dWQxNTRcdWQxNWNcdWQxNWRcdWQxNWZcdWQxNjFcdWQxNjhcdWQxNmNcdWQxN2NcdWQxODRcdWQxODhcdWQxYTBcdWQxYTFcdWQxYTRcdWQxYThcdWQxYjBcdWQxYjFcdWQxYjNcdWQxYjVcdWQxYmFcdWQxYmNcdWQxYzBcdWQxZDhcdWQxZjRcdWQxZjhcdWQyMDdcdWQyMDlcdWQyMTBcdWQy''@;'; put 'put ''MmNcdWQyMmRcdWQyMzBcdWQyMzRcdWQyM2NcdWQyM2RcdWQyM2ZcdWQyNDFcdWQyNDhcdWQyNWMiXSxbImM2NDEiLCJcdWQ3OGRcdWQ3OGVcdWQ3OGZcdWQ3OTEiLDYsIlx1ZDc5YVx1ZDc5Y1x1ZDc5ZSIsNV0sWyJjNmExIiwiXHVkMjY0XHVkMjgwXHVkMjgxXHVkMjg0XHVkMjg4XHVkMjkw''@;'; put 'put ''XHVkMjkxXHVkMjk1XHVkMjljXHVkMmEwXHVkMmE0XHVkMmFjXHVkMmIxXHVkMmI4XHVkMmI5XHVkMmJjXHVkMmJmXHVkMmMwXHVkMmMyXHVkMmM4XHVkMmM5XHVkMmNiXHVkMmQ0XHVkMmQ4XHVkMmRjXHVkMmU0XHVkMmU1XHVkMmYwXHVkMmYxXHVkMmY0XHVkMmY4XHVkMzAwXHVkMzAxXHVk''@;'; put 'put ''MzAzXHVkMzA1XHVkMzBjXHVkMzBkXHVkMzBlXHVkMzEwXHVkMzE0XHVkMzE2XHVkMzFjXHVkMzFkXHVkMzFmXHVkMzIwXHVkMzIxXHVkMzI1XHVkMzI4XHVkMzI5XHVkMzJjXHVkMzMwXHVkMzM4XHVkMzM5XHVkMzNiXHVkMzNjXHVkMzNkXHVkMzQ0XHVkMzQ1XHVkMzdjXHVkMzdkXHVkMzgw''@;'; put 'put ''XHVkMzg0XHVkMzhjXHVkMzhkXHVkMzhmXHVkMzkwXHVkMzkxXHVkMzk4XHVkMzk5XHVkMzljXHVkM2EwXHVkM2E4XHVkM2E5XHVkM2FiXHVkM2FkXHVkM2I0XHVkM2I4XHVkM2JjXHVkM2M0XHVkM2M1XHVkM2M4XHVkM2M5XHVkM2QwXHVkM2Q4XHVkM2UxXHVkM2UzXHVkM2VjXHVkM2VkXHVk''@;'; put 'put ''M2YwXHVkM2Y0XHVkM2ZjXHVkM2ZkXHVkM2ZmXHVkNDAxIl0sWyJjN2ExIiwiXHVkNDA4XHVkNDFkXHVkNDQwXHVkNDQ0XHVkNDVjXHVkNDYwXHVkNDY0XHVkNDZkXHVkNDZmXHVkNDc4XHVkNDc5XHVkNDdjXHVkNDdmXHVkNDgwXHVkNDgyXHVkNDg4XHVkNDg5XHVkNDhiXHVkNDhkXHVkNDk0''@;'; put 'put ''XHVkNGE5XHVkNGNjXHVkNGQwXHVkNGQ0XHVkNGRjXHVkNGRmXHVkNGU4XHVkNGVjXHVkNGYwXHVkNGY4XHVkNGZiXHVkNGZkXHVkNTA0XHVkNTA4XHVkNTBjXHVkNTE0XHVkNTE1XHVkNTE3XHVkNTNjXHVkNTNkXHVkNTQwXHVkNTQ0XHVkNTRjXHVkNTRkXHVkNTRmXHVkNTUxXHVkNTU4XHVk''@;'; put 'put ''NTU5XHVkNTVjXHVkNTYwXHVkNTY1XHVkNTY4XHVkNTY5XHVkNTZiXHVkNTZkXHVkNTc0XHVkNTc1XHVkNTc4XHVkNTdjXHVkNTg0XHVkNTg1XHVkNTg3XHVkNTg4XHVkNTg5XHVkNTkwXHVkNWE1XHVkNWM4XHVkNWM5XHVkNWNjXHVkNWQwXHVkNWQyXHVkNWQ4XHVkNWQ5XHVkNWRiXHVkNWRk''@;'; put 'put ''XHVkNWU0XHVkNWU1XHVkNWU4XHVkNWVjXHVkNWY0XHVkNWY1XHVkNWY3XHVkNWY5XHVkNjAwXHVkNjAxXHVkNjA0XHVkNjA4XHVkNjEwXHVkNjExXHVkNjEzXHVkNjE0XHVkNjE1XHVkNjFjXHVkNjIwIl0sWyJjOGExIiwiXHVkNjI0XHVkNjJkXHVkNjM4XHVkNjM5XHVkNjNjXHVkNjQwXHVk''@;'; put 'put ''NjQ1XHVkNjQ4XHVkNjQ5XHVkNjRiXHVkNjRkXHVkNjUxXHVkNjU0XHVkNjU1XHVkNjU4XHVkNjVjXHVkNjY3XHVkNjY5XHVkNjcwXHVkNjcxXHVkNjc0XHVkNjgzXHVkNjg1XHVkNjhjXHVkNjhkXHVkNjkwXHVkNjk0XHVkNjlkXHVkNjlmXHVkNmExXHVkNmE4XHVkNmFjXHVkNmIwXHVkNmI5''@;'; put 'put ''XHVkNmJiXHVkNmM0XHVkNmM1XHVkNmM4XHVkNmNjXHVkNmQxXHVkNmQ0XHVkNmQ3XHVkNmQ5XHVkNmUwXHVkNmU0XHVkNmU4XHVkNmYwXHVkNmY1XHVkNmZjXHVkNmZkXHVkNzAwXHVkNzA0XHVkNzExXHVkNzE4XHVkNzE5XHVkNzFjXHVkNzIwXHVkNzI4XHVkNzI5XHVkNzJiXHVkNzJkXHVk''@;'; put 'put ''NzM0XHVkNzM1XHVkNzM4XHVkNzNjXHVkNzQ0XHVkNzQ3XHVkNzQ5XHVkNzUwXHVkNzUxXHVkNzU0XHVkNzU2XHVkNzU3XHVkNzU4XHVkNzU5XHVkNzYwXHVkNzYxXHVkNzYzXHVkNzY1XHVkNzY5XHVkNzZjXHVkNzcwXHVkNzc0XHVkNzdjXHVkNzdkXHVkNzgxXHVkNzg4XHVkNzg5XHVkNzhj''@;'; put 'put ''XHVkNzkwXHVkNzk4XHVkNzk5XHVkNzliXHVkNzlkIl0sWyJjYWExIiwiXHU0ZjNkXHU0ZjczXHU1MDQ3XHU1MGY5XHU1MmEwXHU1M2VmXHU1NDc1XHU1NGU1XHU1NjA5XHU1YWMxXHU1YmI2XHU2Njg3XHU2N2I2XHU2N2I3XHU2N2VmXHU2YjRjXHU3M2MyXHU3NWMyXHU3YTNjXHU4MmRiXHU4''@;'; put 'put ''MzA0XHU4ODU3XHU4ODg4XHU4YTM2XHU4Y2M4XHU4ZGNmXHU4ZWZiXHU4ZmU2XHU5OWQ1XHU1MjNiXHU1Mzc0XHU1NDA0XHU2MDZhXHU2MTY0XHU2YmJjXHU3M2NmXHU4MTFhXHU4OWJhXHU4OWQyXHU5NWEzXHU0ZjgzXHU1MjBhXHU1OGJlXHU1OTc4XHU1OWU2XHU1ZTcyXHU1ZTc5XHU2MWM3''@;'; put 'put ''XHU2M2MwXHU2NzQ2XHU2N2VjXHU2ODdmXHU2Zjk3XHU3NjRlXHU3NzBiXHU3OGY1XHU3YTA4XHU3YWZmXHU3YzIxXHU4MDlkXHU4MjZlXHU4MjcxXHU4YWViXHU5NTkzXHU0ZTZiXHU1NTlkXHU2NmY3XHU2ZTM0XHU3OGEzXHU3YWVkXHU4NDViXHU4OTEwXHU4NzRlXHU5N2E4XHU1MmQ4XHU1''@;'; put 'put ''NzRlXHU1ODJhXHU1ZDRjXHU2MTFmXHU2MWJlXHU2MjIxXHU2NTYyXHU2N2QxXHU2YTQ0XHU2ZTFiXHU3NTE4XHU3NWIzXHU3NmUzXHU3N2IwXHU3ZDNhXHU5MGFmXHU5NDUxXHU5NDUyXHU5Zjk1Il0sWyJjYmExIiwiXHU1MzIzXHU1Y2FjXHU3NTMyXHU4MGRiXHU5MjQwXHU5NTk4XHU1MjVi''@;'; put 'put ''XHU1ODA4XHU1OWRjXHU1Y2ExXHU1ZDE3XHU1ZWI3XHU1ZjNhXHU1ZjRhXHU2MTc3XHU2YzVmXHU3NTdhXHU3NTg2XHU3Y2UwXHU3ZDczXHU3ZGIxXHU3ZjhjXHU4MTU0XHU4MjIxXHU4NTkxXHU4OTQxXHU4YjFiXHU5MmZjXHU5NjRkXHU5YzQ3XHU0ZWNiXHU0ZWY3XHU1MDBiXHU1MWYxXHU1''@;'; put 'put ''ODRmXHU2MTM3XHU2MTNlXHU2MTY4XHU2NTM5XHU2OWVhXHU2ZjExXHU3NWE1XHU3Njg2XHU3NmQ2XHU3Yjg3XHU4MmE1XHU4NGNiXHVmOTAwXHU5M2E3XHU5NThiXHU1NTgwXHU1YmEyXHU1NzUxXHVmOTAxXHU3Y2IzXHU3ZmI5XHU5MWI1XHU1MDI4XHU1M2JiXHU1YzQ1XHU1ZGU4XHU2MmQy''@;'; put 'put ''XHU2MzZlXHU2NGRhXHU2NGU3XHU2ZTIwXHU3MGFjXHU3OTViXHU4ZGRkXHU4ZTFlXHVmOTAyXHU5MDdkXHU5MjQ1XHU5MmY4XHU0ZTdlXHU0ZWY2XHU1MDY1XHU1ZGZlXHU1ZWZhXHU2MTA2XHU2OTU3XHU4MTcxXHU4NjU0XHU4ZTQ3XHU5Mzc1XHU5YTJiXHU0ZTVlXHU1MDkxXHU2NzcwXHU2''@;'; put 'put ''ODQwXHU1MTA5XHU1MjhkXHU1MjkyXHU2YWEyIl0sWyJjY2ExIiwiXHU3N2JjXHU5MjEwXHU5ZWQ0XHU1MmFiXHU2MDJmXHU4ZmYyXHU1MDQ4XHU2MWE5XHU2M2VkXHU2NGNhXHU2ODNjXHU2YTg0XHU2ZmMwXHU4MTg4XHU4OWExXHU5Njk0XHU1ODA1XHU3MjdkXHU3MmFjXHU3NTA0XHU3ZDc5''@;'; put 'put ''XHU3ZTZkXHU4MGE5XHU4OThiXHU4Yjc0XHU5MDYzXHU5ZDUxXHU2Mjg5XHU2YzdhXHU2ZjU0XHU3ZDUwXHU3ZjNhXHU4YTIzXHU1MTdjXHU2MTRhXHU3YjlkXHU4YjE5XHU5MjU3XHU5MzhjXHU0ZWFjXHU0ZmQzXHU1MDFlXHU1MGJlXHU1MTA2XHU1MmMxXHU1MmNkXHU1MzdmXHU1NzcwXHU1''@;'; put 'put ''ODgzXHU1ZTlhXHU1ZjkxXHU2MTc2XHU2MWFjXHU2NGNlXHU2NTZjXHU2NjZmXHU2NmJiXHU2NmY0XHU2ODk3XHU2ZDg3XHU3MDg1XHU3MGYxXHU3NDlmXHU3NGE1XHU3NGNhXHU3NWQ5XHU3ODZjXHU3OGVjXHU3YWRmXHU3YWY2XHU3ZDQ1XHU3ZDkzXHU4MDE1XHU4MDNmXHU4MTFiXHU4Mzk2''@;'; put 'put ''XHU4YjY2XHU4ZjE1XHU5MDE1XHU5M2UxXHU5ODAzXHU5ODM4XHU5YTVhXHU5YmU4XHU0ZmMyXHU1NTUzXHU1ODNhXHU1OTUxXHU1YjYzXHU1YzQ2XHU2MGI4XHU2MjEyXHU2ODQyXHU2OGIwIl0sWyJjZGExIiwiXHU2OGU4XHU2ZWFhXHU3NTRjXHU3Njc4XHU3OGNlXHU3YTNkXHU3Y2ZiXHU3''@;'; put 'put ''ZTZiXHU3ZTdjXHU4YTA4XHU4YWExXHU4YzNmXHU5NjhlXHU5ZGM0XHU1M2U0XHU1M2U5XHU1NDRhXHU1NDcxXHU1NmZhXHU1OWQxXHU1YjY0XHU1YzNiXHU1ZWFiXHU2MmY3XHU2NTM3XHU2NTQ1XHU2NTcyXHU2NmEwXHU2N2FmXHU2OWMxXHU2Y2JkXHU3NWZjXHU3NjkwXHU3NzdlXHU3YTNm''@;'; put 'put ''XHU3Zjk0XHU4MDAzXHU4MGExXHU4MThmXHU4MmU2XHU4MmZkXHU4M2YwXHU4NWMxXHU4ODMxXHU4OGI0XHU4YWE1XHVmOTAzXHU4ZjljXHU5MzJlXHU5NmM3XHU5ODY3XHU5YWQ4XHU5ZjEzXHU1NGVkXHU2NTliXHU2NmYyXHU2ODhmXHU3YTQwXHU4YzM3XHU5ZDYwXHU1NmYwXHU1NzY0XHU1''@;'; put 'put ''ZDExXHU2NjA2XHU2OGIxXHU2OGNkXHU2ZWZlXHU3NDI4XHU4ODllXHU5YmU0XHU2YzY4XHVmOTA0XHU5YWE4XHU0ZjliXHU1MTZjXHU1MTcxXHU1MjlmXHU1YjU0XHU1ZGU1XHU2MDUwXHU2MDZkXHU2MmYxXHU2M2E3XHU2NTNiXHU3M2Q5XHU3YTdhXHU4NmEzXHU4Y2EyXHU5NzhmXHU0ZTMy''@;'; put 'put ''XHU1YmUxXHU2MjA4XHU2NzljXHU3NGRjIl0sWyJjZWExIiwiXHU3OWQxXHU4M2QzXHU4YTg3XHU4YWIyXHU4ZGU4XHU5MDRlXHU5MzRiXHU5ODQ2XHU1ZWQzXHU2OWU4XHU4NWZmXHU5MGVkXHVmOTA1XHU1MWEwXHU1Yjk4XHU1YmVjXHU2MTYzXHU2OGZhXHU2YjNlXHU3MDRjXHU3NDJmXHU3''@;'; put 'put ''NGQ4XHU3YmExXHU3ZjUwXHU4M2M1XHU4OWMwXHU4Y2FiXHU5NWRjXHU5OTI4XHU1MjJlXHU2MDVkXHU2MmVjXHU5MDAyXHU0ZjhhXHU1MTQ5XHU1MzIxXHU1OGQ5XHU1ZWUzXHU2NmUwXHU2ZDM4XHU3MDlhXHU3MmMyXHU3M2Q2XHU3YjUwXHU4MGYxXHU5NDViXHU1MzY2XHU2MzliXHU3ZjZi''@;'; put 'put ''XHU0ZTU2XHU1MDgwXHU1ODRhXHU1OGRlXHU2MDJhXHU2MTI3XHU2MmQwXHU2OWQwXHU5YjQxXHU1YjhmXHU3ZDE4XHU4MGIxXHU4ZjVmXHU0ZWE0XHU1MGQxXHU1NGFjXHU1NWFjXHU1YjBjXHU1ZGEwXHU1ZGU3XHU2NTJhXHU2NTRlXHU2ODIxXHU2YTRiXHU3MmUxXHU3NjhlXHU3N2VmXHU3''@;'; put 'put ''ZDVlXHU3ZmY5XHU4MWEwXHU4NTRlXHU4NmRmXHU4ZjAzXHU4ZjRlXHU5MGNhXHU5OTAzXHU5YTU1XHU5YmFiXHU0ZTE4XHU0ZTQ1XHU0ZTVkXHU0ZWM3XHU0ZmYxXHU1MTc3XHU1MmZlIl0sWyJjZmExIiwiXHU1MzQwXHU1M2UzXHU1M2U1XHU1NDhlXHU1NjE0XHU1Nzc1XHU1N2EyXHU1YmM3''@;'; put 'put ''XHU1ZDg3XHU1ZWQwXHU2MWZjXHU2MmQ4XHU2NTUxXHU2N2I4XHU2N2U5XHU2OWNiXHU2YjUwXHU2YmM2XHU2YmVjXHU2YzQyXHU2ZTlkXHU3MDc4XHU3MmQ3XHU3Mzk2XHU3NDAzXHU3N2JmXHU3N2U5XHU3YTc2XHU3ZDdmXHU4MDA5XHU4MWZjXHU4MjA1XHU4MjBhXHU4MmRmXHU4ODYyXHU4''@;'; put 'put ''YjMzXHU4Y2ZjXHU4ZWMwXHU5MDExXHU5MGIxXHU5MjY0XHU5MmI2XHU5OWQyXHU5YTQ1XHU5Y2U5XHU5ZGQ3XHU5ZjljXHU1NzBiXHU1YzQwXHU4M2NhXHU5N2EwXHU5N2FiXHU5ZWI0XHU1NDFiXHU3YTk4XHU3ZmE0XHU4OGQ5XHU4ZWNkXHU5MGUxXHU1ODAwXHU1YzQ4XHU2Mzk4XHU3YTlm''@;'; put 'put ''XHU1YmFlXHU1ZjEzXHU3YTc5XHU3YWFlXHU4MjhlXHU4ZWFjXHU1MDI2XHU1MjM4XHU1MmY4XHU1Mzc3XHU1NzA4XHU2MmYzXHU2MzcyXHU2YjBhXHU2ZGMzXHU3NzM3XHU1M2E1XHU3MzU3XHU4NTY4XHU4ZTc2XHU5NWQ1XHU2NzNhXHU2YWMzXHU2ZjcwXHU4YTZkXHU4ZWNjXHU5OTRiXHVm''@;'; put 'put ''OTA2XHU2Njc3XHU2Yjc4XHU4Y2I0Il0sWyJkMGExIiwiXHU5YjNjXHVmOTA3XHU1M2ViXHU1NzJkXHU1OTRlXHU2M2M2XHU2OWZiXHU3M2VhXHU3ODQ1XHU3YWJhXHU3YWM1XHU3Y2ZlXHU4NDc1XHU4OThmXHU4ZDczXHU5MDM1XHU5NWE4XHU1MmZiXHU1NzQ3XHU3NTQ3XHU3YjYwXHU4M2Nj''@;'; put 'put ''XHU5MjFlXHVmOTA4XHU2YTU4XHU1MTRiXHU1MjRiXHU1Mjg3XHU2MjFmXHU2OGQ4XHU2OTc1XHU5Njk5XHU1MGM1XHU1MmE0XHU1MmU0XHU2MWMzXHU2NWE0XHU2ODM5XHU2OWZmXHU3NDdlXHU3YjRiXHU4MmI5XHU4M2ViXHU4OWIyXHU4YjM5XHU4ZmQxXHU5OTQ5XHVmOTA5XHU0ZWNhXHU1''@;'; put 'put ''OTk3XHU2NGQyXHU2NjExXHU2YThlXHU3NDM0XHU3OTgxXHU3OWJkXHU4MmE5XHU4ODdlXHU4ODdmXHU4OTVmXHVmOTBhXHU5MzI2XHU0ZjBiXHU1M2NhXHU2MDI1XHU2MjcxXHU2YzcyXHU3ZDFhXHU3ZDY2XHU0ZTk4XHU1MTYyXHU3N2RjXHU4MGFmXHU0ZjAxXHU0ZjBlXHU1MTc2XHU1MTgw''@;'; put 'put ''XHU1NWRjXHU1NjY4XHU1NzNiXHU1N2ZhXHU1N2ZjXHU1OTE0XHU1OTQ3XHU1OTkzXHU1YmM0XHU1YzkwXHU1ZDBlXHU1ZGYxXHU1ZTdlXHU1ZmNjXHU2MjgwXHU2NWQ3XHU2NWUzIl0sWyJkMWExIiwiXHU2NzFlXHU2NzFmXHU2NzVlXHU2OGNiXHU2OGM0XHU2YTVmXHU2YjNhXHU2YzIzXHU2''@;'; put 'put ''YzdkXHU2YzgyXHU2ZGM3XHU3Mzk4XHU3NDI2XHU3NDJhXHU3NDgyXHU3NGEzXHU3NTc4XHU3NTdmXHU3ODgxXHU3OGVmXHU3OTQxXHU3OTQ3XHU3OTQ4XHU3OTdhXHU3Yjk1XHU3ZDAwXHU3ZGJhXHU3Zjg4XHU4MDA2XHU4MDJkXHU4MDhjXHU4YTE4XHU4YjRmXHU4YzQ4XHU4ZDc3XHU5MzIx''@;'; put 'put ''XHU5MzI0XHU5OGUyXHU5OTUxXHU5YTBlXHU5YTBmXHU5YTY1XHU5ZTkyXHU3ZGNhXHU0Zjc2XHU1NDA5XHU2MmVlXHU2ODU0XHU5MWQxXHU1NWFiXHU1MTNhXHVmOTBiXHVmOTBjXHU1YTFjXHU2MWU2XHVmOTBkXHU2MmNmXHU2MmZmXHVmOTBlIiw1LCJcdTkwYTNcdWY5MTQiLDQsIlx1OGFm''@;'; put 'put ''ZVx1ZjkxOVx1ZjkxYVx1ZjkxYlx1ZjkxY1x1NjY5Nlx1ZjkxZFx1NzE1Nlx1ZjkxZVx1ZjkxZlx1OTZlM1x1ZjkyMFx1NjM0Zlx1NjM3YVx1NTM1N1x1ZjkyMVx1Njc4Zlx1Njk2MFx1NmU3M1x1ZjkyMlx1NzUzN1x1ZjkyM1x1ZjkyNFx1ZjkyNSJdLFsiZDJhMSIsIlx1N2QwZFx1ZjkyNlx1''@;'; put 'put ''ZjkyN1x1ODg3Mlx1NTZjYVx1NWExOFx1ZjkyOCIsNCwiXHU0ZTQzXHVmOTJkXHU1MTY3XHU1OTQ4XHU2N2YwXHU4MDEwXHVmOTJlXHU1OTczXHU1ZTc0XHU2NDlhXHU3OWNhXHU1ZmY1XHU2MDZjXHU2MmM4XHU2MzdiXHU1YmU3XHU1YmQ3XHU1MmFhXHVmOTJmXHU1OTc0XHU1ZjI5XHU2MDEy''@;'; put 'put ''XHVmOTMwXHVmOTMxXHVmOTMyXHU3NDU5XHVmOTMzIiw1LCJcdTk5ZDFcdWY5MzkiLDEwLCJcdTZmYzNcdWY5NDRcdWY5NDVcdTgxYmZcdThmYjJcdTYwZjFcdWY5NDZcdWY5NDdcdTgxNjZcdWY5NDhcdWY5NDlcdTVjM2ZcdWY5NGEiLDcsIlx1NWFlOVx1OGEyNVx1Njc3Ylx1N2QxMFx1Zjk1''@;'; put 'put ''MiIsNSwiXHU4MGZkXHVmOTU4XHVmOTU5XHU1YzNjXHU2Y2U1XHU1MzNmXHU2ZWJhXHU1OTFhXHU4MzM2Il0sWyJkM2ExIiwiXHU0ZTM5XHU0ZWI2XHU0ZjQ2XHU1NWFlXHU1NzE4XHU1OGM3XHU1ZjU2XHU2NWI3XHU2NWU2XHU2YTgwXHU2YmI1XHU2ZTRkXHU3N2VkXHU3YWVmXHU3YzFlXHU3''@;'; put 'put ''ZGRlXHU4NmNiXHU4ODkyXHU5MTMyXHU5MzViXHU2NGJiXHU2ZmJlXHU3MzdhXHU3NWI4XHU5MDU0XHU1NTU2XHU1NzRkXHU2MWJhXHU2NGQ0XHU2NmM3XHU2ZGUxXHU2ZTViXHU2ZjZkXHU2ZmI5XHU3NWYwXHU4MDQzXHU4MWJkXHU4NTQxXHU4OTgzXHU4YWM3XHU4YjVhXHU5MzFmXHU2Yzkz''@;'; put 'put ''XHU3NTUzXHU3YjU0XHU4ZTBmXHU5MDVkXHU1NTEwXHU1ODAyXHU1ODU4XHU1ZTYyXHU2MjA3XHU2NDllXHU2OGUwXHU3NTc2XHU3Y2Q2XHU4N2IzXHU5ZWU4XHU0ZWUzXHU1Nzg4XHU1NzZlXHU1OTI3XHU1YzBkXHU1Y2IxXHU1ZTM2XHU1Zjg1XHU2MjM0XHU2NGUxXHU3M2IzXHU4MWZhXHU4''@;'; put 'put ''ODhiXHU4Y2I4XHU5NjhhXHU5ZWRiXHU1Yjg1XHU1ZmI3XHU2MGIzXHU1MDEyXHU1MjAwXHU1MjMwXHU1NzE2XHU1ODM1XHU1ODU3XHU1YzBlXHU1YzYwXHU1Y2Y2XHU1ZDhiXHU1ZWE2XHU1ZjkyXHU2MGJjXHU2MzExXHU2Mzg5XHU2NDE3XHU2ODQzIl0sWyJkNGExIiwiXHU2OGY5XHU2YWMy''@;'; put 'put ''XHU2ZGQ4XHU2ZTIxXHU2ZWQ0XHU2ZmU0XHU3MWZlXHU3NmRjXHU3Nzc5XHU3OWIxXHU3YTNiXHU4NDA0XHU4OWE5XHU4Y2VkXHU4ZGYzXHU4ZTQ4XHU5MDAzXHU5MDE0XHU5MDUzXHU5MGZkXHU5MzRkXHU5Njc2XHU5N2RjXHU2YmQyXHU3MDA2XHU3MjU4XHU3MmEyXHU3MzY4XHU3NzYzXHU3''@;'; put 'put ''OWJmXHU3YmU0XHU3ZTliXHU4YjgwXHU1OGE5XHU2MGM3XHU2NTY2XHU2NWZkXHU2NmJlXHU2YzhjXHU3MTFlXHU3MWM5XHU4YzVhXHU5ODEzXHU0ZTZkXHU3YTgxXHU0ZWRkXHU1MWFjXHU1MWNkXHU1MmQ1XHU1NDBjXHU2MWE3XHU2NzcxXHU2ODUwXHU2OGRmXHU2ZDFlXHU2ZjdjXHU3NWJj''@;'; put 'put ''XHU3N2IzXHU3YWU1XHU4MGY0XHU4NDYzXHU5Mjg1XHU1MTVjXHU2NTk3XHU2NzVjXHU2NzkzXHU3NWQ4XHU3YWM3XHU4MzczXHVmOTVhXHU4YzQ2XHU5MDE3XHU5ODJkXHU1YzZmXHU4MWMwXHU4MjlhXHU5MDQxXHU5MDZmXHU5MjBkXHU1Zjk3XHU1ZDlkXHU2YTU5XHU3MWM4XHU3NjdiXHU3''@;'; put 'put ''YjQ5XHU4NWU0XHU4YjA0XHU5MTI3XHU5YTMwXHU1NTg3XHU2MWY2XHVmOTViXHU3NjY5XHU3Zjg1Il0sWyJkNWExIiwiXHU4NjNmXHU4N2JhXHU4OGY4XHU5MDhmXHVmOTVjXHU2ZDFiXHU3MGQ5XHU3M2RlXHU3ZDYxXHU4NDNkXHVmOTVkXHU5MTZhXHU5OWYxXHVmOTVlXHU0ZTgyXHU1Mzc1''@;'; put 'put ''XHU2YjA0XHU2YjEyXHU3MDNlXHU3MjFiXHU4NjJkXHU5ZTFlXHU1MjRjXHU4ZmEzXHU1ZDUwXHU2NGU1XHU2NTJjXHU2YjE2XHU2ZmViXHU3YzQzXHU3ZTljXHU4NWNkXHU4OTY0XHU4OWJkXHU2MmM5XHU4MWQ4XHU4ODFmXHU1ZWNhXHU2NzE3XHU2ZDZhXHU3MmZjXHU3NDA1XHU3NDZmXHU4''@;'; put 'put ''NzgyXHU5MGRlXHU0Zjg2XHU1ZDBkXHU1ZmEwXHU4NDBhXHU1MWI3XHU2M2EwXHU3NTY1XHU0ZWFlXHU1MDA2XHU1MTY5XHU1MWM5XHU2ODgxXHU2YTExXHU3Y2FlXHU3Y2IxXHU3Y2U3XHU4MjZmXHU4YWQyXHU4ZjFiXHU5MWNmXHU0ZmI2XHU1MTM3XHU1MmY1XHU1NDQyXHU1ZWVjXHU2MTZl''@;'; put 'put ''XHU2MjNlXHU2NWM1XHU2YWRhXHU2ZmZlXHU3OTJhXHU4NWRjXHU4ODIzXHU5NWFkXHU5YTYyXHU5YTZhXHU5ZTk3XHU5ZWNlXHU1MjliXHU2NmM2XHU2Yjc3XHU3MDFkXHU3OTJiXHU4ZjYyXHU5NzQyXHU2MTkwXHU2MjAwXHU2NTIzXHU2ZjIzIl0sWyJkNmExIiwiXHU3MTQ5XHU3NDg5XHU3''@;'; put 'put ''ZGY0XHU4MDZmXHU4NGVlXHU4ZjI2XHU5MDIzXHU5MzRhXHU1MWJkXHU1MjE3XHU1MmEzXHU2ZDBjXHU3MGM4XHU4OGMyXHU1ZWM5XHU2NTgyXHU2YmFlXHU2ZmMyXHU3YzNlXHU3Mzc1XHU0ZWU0XHU0ZjM2XHU1NmY5XHVmOTVmXHU1Y2JhXHU1ZGJhXHU2MDFjXHU3M2IyXHU3YjJkXHU3Zjlh''@;'; put 'put ''XHU3ZmNlXHU4MDQ2XHU5MDFlXHU5MjM0XHU5NmY2XHU5NzQ4XHU5ODE4XHU5ZjYxXHU0ZjhiXHU2ZmE3XHU3OWFlXHU5MWI0XHU5NmI3XHU1MmRlXHVmOTYwXHU2NDg4XHU2NGM0XHU2YWQzXHU2ZjVlXHU3MDE4XHU3MjEwXHU3NmU3XHU4MDAxXHU4NjA2XHU4NjVjXHU4ZGVmXHU4ZjA1XHU5''@;'; put 'put ''NzMyXHU5YjZmXHU5ZGZhXHU5ZTc1XHU3ODhjXHU3OTdmXHU3ZGEwXHU4M2M5XHU5MzA0XHU5ZTdmXHU5ZTkzXHU4YWQ2XHU1OGRmXHU1ZjA0XHU2NzI3XHU3MDI3XHU3NGNmXHU3YzYwXHU4MDdlXHU1MTIxXHU3MDI4XHU3MjYyXHU3OGNhXHU4Y2MyXHU4Y2RhXHU4Y2Y0XHU5NmY3XHU0ZTg2''@;'; put 'put ''XHU1MGRhXHU1YmVlXHU1ZWQ2XHU2NTk5XHU3MWNlXHU3NjQyXHU3N2FkXHU4MDRhXHU4NGZjIl0sWyJkN2ExIiwiXHU5MDdjXHU5YjI3XHU5ZjhkXHU1OGQ4XHU1YTQxXHU1YzYyXHU2YTEzXHU2ZGRhXHU2ZjBmXHU3NjNiXHU3ZDJmXHU3ZTM3XHU4NTFlXHU4OTM4XHU5M2U0XHU5NjRiXHU1''@;'; put 'put ''Mjg5XHU2NWQyXHU2N2YzXHU2OWI0XHU2ZDQxXHU2ZTljXHU3MDBmXHU3NDA5XHU3NDYwXHU3NTU5XHU3NjI0XHU3ODZiXHU4YjJjXHU5ODVlXHU1MTZkXHU2MjJlXHU5Njc4XHU0Zjk2XHU1MDJiXHU1ZDE5XHU2ZGVhXHU3ZGI4XHU4ZjJhXHU1ZjhiXHU2MTQ0XHU2ODE3XHVmOTYxXHU5Njg2''@;'; put 'put ''XHU1MmQyXHU4MDhiXHU1MWRjXHU1MWNjXHU2OTVlXHU3YTFjXHU3ZGJlXHU4M2YxXHU5Njc1XHU0ZmRhXHU1MjI5XHU1Mzk4XHU1NDBmXHU1NTBlXHU1YzY1XHU2MGE3XHU2NzRlXHU2OGE4XHU2ZDZjXHU3MjgxXHU3MmY4XHU3NDA2XHU3NDgzXHVmOTYyXHU3NWUyXHU3YzZjXHU3Zjc5XHU3''@;'; put 'put ''ZmI4XHU4Mzg5XHU4OGNmXHU4OGUxXHU5MWNjXHU5MWQwXHU5NmUyXHU5YmM5XHU1NDFkXHU2ZjdlXHU3MWQwXHU3NDk4XHU4NWZhXHU4ZWFhXHU5NmEzXHU5YzU3XHU5ZTlmXHU2Nzk3XHU2ZGNiXHU3NDMzXHU4MWU4XHU5NzE2XHU3ODJjIl0sWyJkOGExIiwiXHU3YWNiXHU3YjIwXHU3Yzky''@;'; put 'put ''XHU2NDY5XHU3NDZhXHU3NWYyXHU3OGJjXHU3OGU4XHU5OWFjXHU5YjU0XHU5ZWJiXHU1YmRlXHU1ZTU1XHU2ZjIwXHU4MTljXHU4M2FiXHU5MDg4XHU0ZTA3XHU1MzRkXHU1YTI5XHU1ZGQyXHU1ZjRlXHU2MTYyXHU2MzNkXHU2NjY5XHU2NmZjXHU2ZWZmXHU2ZjJiXHU3MDYzXHU3NzllXHU4''@;'; put 'put ''NDJjXHU4NTEzXHU4ODNiXHU4ZjEzXHU5OTQ1XHU5YzNiXHU1NTFjXHU2MmI5XHU2NzJiXHU2Y2FiXHU4MzA5XHU4OTZhXHU5NzdhXHU0ZWExXHU1OTg0XHU1ZmQ4XHU1ZmQ5XHU2NzFiXHU3ZGIyXHU3ZjU0XHU4MjkyXHU4MzJiXHU4M2JkXHU4ZjFlXHU5MDk5XHU1N2NiXHU1OWI5XHU1YTky''@;'; put 'put ''XHU1YmQwXHU2NjI3XHU2NzlhXHU2ODg1XHU2YmNmXHU3MTY0XHU3Zjc1XHU4Y2I3XHU4Y2UzXHU5MDgxXHU5YjQ1XHU4MTA4XHU4YzhhXHU5NjRjXHU5YTQwXHU5ZWE1XHU1YjVmXHU2YzEzXHU3MzFiXHU3NmYyXHU3NmRmXHU4NDBjXHU1MWFhXHU4OTkzXHU1MTRkXHU1MTk1XHU1MmM5XHU2''@;'; put 'put ''OGM5XHU2Yzk0XHU3NzA0XHU3NzIwXHU3ZGJmXHU3ZGVjXHU5NzYyXHU5ZWI1XHU2ZWM1Il0sWyJkOWExIiwiXHU4NTExXHU1MWE1XHU1NDBkXHU1NDdkXHU2NjBlXHU2NjlkXHU2OTI3XHU2ZTlmXHU3NmJmXHU3NzkxXHU4MzE3XHU4NGMyXHU4NzlmXHU5MTY5XHU5Mjk4XHU5Y2Y0XHU4ODgy''@;'; put 'put ''XHU0ZmFlXHU1MTkyXHU1MmRmXHU1OWM2XHU1ZTNkXHU2MTU1XHU2NDc4XHU2NDc5XHU2NmFlXHU2N2QwXHU2YTIxXHU2YmNkXHU2YmRiXHU3MjVmXHU3MjYxXHU3NDQxXHU3NzM4XHU3N2RiXHU4MDE3XHU4MmJjXHU4MzA1XHU4YjAwXHU4YjI4XHU4YzhjXHU2NzI4XHU2YzkwXHU3MjY3XHU3''@;'; put 'put ''NmVlXHU3NzY2XHU3YTQ2XHU5ZGE5XHU2YjdmXHU2YzkyXHU1OTIyXHU2NzI2XHU4NDk5XHU1MzZmXHU1ODkzXHU1OTk5XHU1ZWRmXHU2M2NmXHU2NjM0XHU2NzczXHU2ZTNhXHU3MzJiXHU3YWQ3XHU4MmQ3XHU5MzI4XHU1MmQ5XHU1ZGViXHU2MWFlXHU2MWNiXHU2MjBhXHU2MmM3XHU2NGFi''@;'; put 'put ''XHU2NWUwXHU2OTU5XHU2YjY2XHU2YmNiXHU3MTIxXHU3M2Y3XHU3NTVkXHU3ZTQ2XHU4MjFlXHU4MzAyXHU4NTZhXHU4YWEzXHU4Y2JmXHU5NzI3XHU5ZDYxXHU1OGE4XHU5ZWQ4XHU1MDExXHU1MjBlXHU1NDNiXHU1NTRmXHU2NTg3Il0sWyJkYWExIiwiXHU2Yzc2XHU3ZDBhXHU3ZDBiXHU4''@;'; put 'put ''MDVlXHU4NjhhXHU5NTgwXHU5NmVmXHU1MmZmXHU2Yzk1XHU3MjY5XHU1NDczXHU1YTlhXHU1YzNlXHU1ZDRiXHU1ZjRjXHU1ZmFlXHU2NzJhXHU2OGI2XHU2OTYzXHU2ZTNjXHU2ZTQ0XHU3NzA5XHU3YzczXHU3ZjhlXHU4NTg3XHU4YjBlXHU4ZmY3XHU5NzYxXHU5ZWY0XHU1Y2I3XHU2MGI2''@;'; put 'put ''XHU2MTBkXHU2MWFiXHU2NTRmXHU2NWZiXHU2NWZjXHU2YzExXHU2Y2VmXHU3MzlmXHU3M2M5XHU3ZGUxXHU5NTk0XHU1YmM2XHU4NzFjXHU4YjEwXHU1MjVkXHU1MzVhXHU2MmNkXHU2NDBmXHU2NGIyXHU2NzM0XHU2YTM4XHU2Y2NhXHU3M2MwXHU3NDllXHU3Yjk0XHU3Yzk1XHU3ZTFiXHU4''@;'; put 'put ''MThhXHU4MjM2XHU4NTg0XHU4ZmViXHU5NmY5XHU5OWMxXHU0ZjM0XHU1MzRhXHU1M2NkXHU1M2RiXHU2MmNjXHU2NDJjXHU2NTAwXHU2NTkxXHU2OWMzXHU2Y2VlXHU2ZjU4XHU3M2VkXHU3NTU0XHU3NjIyXHU3NmU0XHU3NmZjXHU3OGQwXHU3OGZiXHU3OTJjXHU3ZDQ2XHU4MjJjXHU4N2Uw''@;'; put 'put ''XHU4ZmQ0XHU5ODEyXHU5OGVmXHU1MmMzXHU2MmQ0XHU2NGE1XHU2ZTI0XHU2ZjUxIl0sWyJkYmExIiwiXHU3NjdjXHU4ZGNiXHU5MWIxXHU5MjYyXHU5YWVlXHU5YjQzXHU1MDIzXHU1MDhkXHU1NzRhXHU1OWE4XHU1YzI4XHU1ZTQ3XHU1Zjc3XHU2MjNmXHU2NTNlXHU2NWI5XHU2NWMxXHU2''@;'; put 'put ''NjA5XHU2NzhiXHU2OTljXHU2ZWMyXHU3OGM1XHU3ZDIxXHU4MGFhXHU4MTgwXHU4MjJiXHU4MmIzXHU4NGExXHU4NjhjXHU4YTJhXHU4YjE3XHU5MGE2XHU5NjMyXHU5ZjkwXHU1MDBkXHU0ZmYzXHVmOTYzXHU1N2Y5XHU1Zjk4XHU2MmRjXHU2MzkyXHU2NzZmXHU2ZTQzXHU3MTE5XHU3NmMz''@;'; put 'put ''XHU4MGNjXHU4MGRhXHU4OGY0XHU4OGY1XHU4OTE5XHU4Y2UwXHU4ZjI5XHU5MTRkXHU5NjZhXHU0ZjJmXHU0ZjcwXHU1ZTFiXHU2N2NmXHU2ODIyXHU3NjdkXHU3NjdlXHU5YjQ0XHU1ZTYxXHU2YTBhXHU3MTY5XHU3MWQ0XHU3NTZhXHVmOTY0XHU3ZTQxXHU4NTQzXHU4NWU5XHU5OGRjXHU0''@;'; put 'put ''ZjEwXHU3YjRmXHU3ZjcwXHU5NWE1XHU1MWUxXHU1ZTA2XHU2OGI1XHU2YzNlXHU2YzRlXHU2Y2RiXHU3MmFmXHU3YmM0XHU4MzAzXHU2Y2Q1XHU3NDNhXHU1MGZiXHU1Mjg4XHU1OGMxXHU2NGQ4XHU2YTk3XHU3NGE3XHU3NjU2Il0sWyJkY2ExIiwiXHU3OGE3XHU4NjE3XHU5NWUyXHU5NzM5''@;'; put 'put ''XHVmOTY1XHU1MzVlXHU1ZjAxXHU4YjhhXHU4ZmE4XHU4ZmFmXHU5MDhhXHU1MjI1XHU3N2E1XHU5YzQ5XHU5ZjA4XHU0ZTE5XHU1MDAyXHU1MTc1XHU1YzViXHU1ZTc3XHU2NjFlXHU2NjNhXHU2N2M0XHU2OGM1XHU3MGIzXHU3NTAxXHU3NWM1XHU3OWM5XHU3YWRkXHU4ZjI3XHU5OTIwXHU5''@;'; put 'put ''YTA4XHU0ZmRkXHU1ODIxXHU1ODMxXHU1YmY2XHU2NjZlXHU2YjY1XHU2ZDExXHU2ZTdhXHU2ZjdkXHU3M2U0XHU3NTJiXHU4M2U5XHU4OGRjXHU4OTEzXHU4YjVjXHU4ZjE0XHU0ZjBmXHU1MGQ1XHU1MzEwXHU1MzVjXHU1YjkzXHU1ZmE5XHU2NzBkXHU3OThmXHU4MTc5XHU4MzJmXHU4NTE0''@;'; put 'put ''XHU4OTA3XHU4OTg2XHU4ZjM5XHU4ZjNiXHU5OWE1XHU5YzEyXHU2NzJjXHU0ZTc2XHU0ZmY4XHU1OTQ5XHU1YzAxXHU1Y2VmXHU1Y2YwXHU2MzY3XHU2OGQyXHU3MGZkXHU3MWEyXHU3NDJiXHU3ZTJiXHU4NGVjXHU4NzAyXHU5MDIyXHU5MmQyXHU5Y2YzXHU0ZTBkXHU0ZWQ4XHU0ZmVmXHU1''@;'; put 'put ''MDg1XHU1MjU2XHU1MjZmXHU1NDI2XHU1NDkwXHU1N2UwXHU1OTJiXHU1YTY2Il0sWyJkZGExIiwiXHU1YjVhXHU1Yjc1XHU1YmNjXHU1ZTljXHVmOTY2XHU2Mjc2XHU2NTc3XHU2NWE3XHU2ZDZlXHU2ZWE1XHU3MjM2XHU3YjI2XHU3YzNmXHU3ZjM2XHU4MTUwXHU4MTUxXHU4MTlhXHU4MjQw''@;'; put 'put ''XHU4Mjk5XHU4M2E5XHU4YTAzXHU4Y2EwXHU4Y2U2XHU4Y2ZiXHU4ZDc0XHU4ZGJhXHU5MGU4XHU5MWRjXHU5NjFjXHU5NjQ0XHU5OWQ5XHU5Y2U3XHU1MzE3XHU1MjA2XHU1NDI5XHU1Njc0XHU1OGIzXHU1OTU0XHU1OTZlXHU1ZmZmXHU2MWE0XHU2MjZlXHU2NjEwXHU2YzdlXHU3MTFhXHU3''@;'; put 'put ''NmM2XHU3Yzg5XHU3Y2RlXHU3ZDFiXHU4MmFjXHU4Y2MxXHU5NmYwXHVmOTY3XHU0ZjViXHU1ZjE3XHU1ZjdmXHU2MmMyXHU1ZDI5XHU2NzBiXHU2OGRhXHU3ODdjXHU3ZTQzXHU5ZDZjXHU0ZTE1XHU1MDk5XHU1MzE1XHU1MzJhXHU1MzUxXHU1OTgzXHU1YTYyXHU1ZTg3XHU2MGIyXHU2MThh''@;'; put 'put ''XHU2MjQ5XHU2Mjc5XHU2NTkwXHU2Nzg3XHU2OWE3XHU2YmQ0XHU2YmQ2XHU2YmQ3XHU2YmQ4XHU2Y2I4XHVmOTY4XHU3NDM1XHU3NWZhXHU3ODEyXHU3ODkxXHU3OWQ1XHU3OWQ4XHU3YzgzXHU3ZGNiXHU3ZmUxXHU4MGE1Il0sWyJkZWExIiwiXHU4MTNlXHU4MWMyXHU4M2YyXHU4NzFhXHU4''@;'; put 'put ''OGU4XHU4YWI5XHU4YjZjXHU4Y2JiXHU5MTE5XHU5NzVlXHU5OGRiXHU5ZjNiXHU1NmFjXHU1YjJhXHU1ZjZjXHU2NThjXHU2YWIzXHU2YmFmXHU2ZDVjXHU2ZmYxXHU3MDE1XHU3MjVkXHU3M2FkXHU4Y2E3XHU4Y2QzXHU5ODNiXHU2MTkxXHU2YzM3XHU4MDU4XHU5YTAxXHU0ZTRkXHU0ZThi''@;'; put 'put ''XHU0ZTliXHU0ZWQ1XHU0ZjNhXHU0ZjNjXHU0ZjdmXHU0ZmRmXHU1MGZmXHU1M2YyXHU1M2Y4XHU1NTA2XHU1NWUzXHU1NmRiXHU1OGViXHU1OTYyXHU1YTExXHU1YmViXHU1YmZhXHU1YzA0XHU1ZGYzXHU1ZTJiXHU1Zjk5XHU2MDFkXHU2MzY4XHU2NTljXHU2NWFmXHU2N2Y2XHU2N2ZiXHU2''@;'; put 'put ''OGFkXHU2YjdiXHU2Yzk5XHU2Y2Q3XHU2ZTIzXHU3MDA5XHU3MzQ1XHU3ODAyXHU3OTNlXHU3OTQwXHU3OTYwXHU3OWMxXHU3YmU5XHU3ZDE3XHU3ZDcyXHU4MDg2XHU4MjBkXHU4MzhlXHU4NGQxXHU4NmM3XHU4OGRmXHU4YTUwXHU4YTVlXHU4YjFkXHU4Y2RjXHU4ZDY2XHU4ZmFkXHU5MGFh''@;'; put 'put ''XHU5OGZjXHU5OWRmXHU5ZTlkXHU1MjRhXHVmOTY5XHU2NzE0XHVmOTZhIl0sWyJkZmExIiwiXHU1MDk4XHU1MjJhXHU1YzcxXHU2NTYzXHU2YzU1XHU3M2NhXHU3NTIzXHU3NTlkXHU3Yjk3XHU4NDljXHU5MTc4XHU5NzMwXHU0ZTc3XHU2NDkyXHU2YmJhXHU3MTVlXHU4NWE5XHU0ZTA5XHVm''@;'; put 'put ''OTZiXHU2NzQ5XHU2OGVlXHU2ZTE3XHU4MjlmXHU4NTE4XHU4ODZiXHU2M2Y3XHU2ZjgxXHU5MjEyXHU5OGFmXHU0ZTBhXHU1MGI3XHU1MGNmXHU1MTFmXHU1NTQ2XHU1NWFhXHU1NjE3XHU1YjQwXHU1YzE5XHU1Y2UwXHU1ZTM4XHU1ZThhXHU1ZWEwXHU1ZWMyXHU2MGYzXHU2ODUxXHU2YTYx''@;'; put 'put ''XHU2ZTU4XHU3MjNkXHU3MjQwXHU3MmMwXHU3NmY4XHU3OTY1XHU3YmIxXHU3ZmQ0XHU4OGYzXHU4OWY0XHU4YTczXHU4YzYxXHU4Y2RlXHU5NzFjXHU1ODVlXHU3NGJkXHU4Y2ZkXHU1NWM3XHVmOTZjXHU3YTYxXHU3ZDIyXHU4MjcyXHU3MjcyXHU3NTFmXHU3NTI1XHVmOTZkXHU3YjE5XHU1''@;'; put 'put ''ODg1XHU1OGZiXHU1ZGJjXHU1ZThmXHU1ZWI2XHU1ZjkwXHU2MDU1XHU2MjkyXHU2MzdmXHU2NTRkXHU2NjkxXHU2NmQ5XHU2NmY4XHU2ODE2XHU2OGYyXHU3MjgwXHU3NDVlXHU3YjZlXHU3ZDZlXHU3ZGQ2XHU3ZjcyIl0sWyJlMGExIiwiXHU4MGU1XHU4MjEyXHU4NWFmXHU4OTdmXHU4YTkz''@;'; put 'put ''XHU5MDFkXHU5MmU0XHU5ZWNkXHU5ZjIwXHU1OTE1XHU1OTZkXHU1ZTJkXHU2MGRjXHU2NjE0XHU2NjczXHU2NzkwXHU2YzUwXHU2ZGM1XHU2ZjVmXHU3N2YzXHU3OGE5XHU4NGM2XHU5MWNiXHU5MzJiXHU0ZWQ5XHU1MGNhXHU1MTQ4XHU1NTg0XHU1YjBiXHU1YmEzXHU2MjQ3XHU2NTdlXHU2''@;'; put 'put ''NWNiXHU2ZTMyXHU3MTdkXHU3NDAxXHU3NDQ0XHU3NDg3XHU3NGJmXHU3NjZjXHU3OWFhXHU3ZGRhXHU3ZTU1XHU3ZmE4XHU4MTdhXHU4MWIzXHU4MjM5XHU4NjFhXHU4N2VjXHU4YTc1XHU4ZGUzXHU5MDc4XHU5MjkxXHU5NDI1XHU5OTRkXHU5YmFlXHU1MzY4XHU1YzUxXHU2OTU0XHU2Y2M0''@;'; put 'put ''XHU2ZDI5XHU2ZTJiXHU4MjBjXHU4NTliXHU4OTNiXHU4YTJkXHU4YWFhXHU5NmVhXHU5ZjY3XHU1MjYxXHU2NmI5XHU2YmIyXHU3ZTk2XHU4N2ZlXHU4ZDBkXHU5NTgzXHU5NjVkXHU2NTFkXHU2ZDg5XHU3MWVlXHVmOTZlXHU1N2NlXHU1OWQzXHU1YmFjXHU2MDI3XHU2MGZhXHU2MjEwXHU2''@;'; put 'put ''NjFmXHU2NjVmXHU3MzI5XHU3M2Y5XHU3NmRiXHU3NzAxXHU3YjZjIl0sWyJlMWExIiwiXHU4MDU2XHU4MDcyXHU4MTY1XHU4YWEwXHU5MTkyXHU0ZTE2XHU1MmUyXHU2YjcyXHU2ZDE3XHU3YTA1XHU3YjM5XHU3ZDMwXHVmOTZmXHU4Y2IwXHU1M2VjXHU1NjJmXHU1ODUxXHU1YmI1XHU1YzBm''@;'; put 'put ''XHU1YzExXHU1ZGUyXHU2MjQwXHU2MzgzXHU2NDE0XHU2NjJkXHU2OGIzXHU2Y2JjXHU2ZDg4XHU2ZWFmXHU3MDFmXHU3MGE0XHU3MWQyXHU3NTI2XHU3NThmXHU3NThlXHU3NjE5XHU3YjExXHU3YmUwXHU3YzJiXHU3ZDIwXHU3ZDM5XHU4NTJjXHU4NTZkXHU4NjA3XHU4YTM0XHU5MDBkXHU5''@;'; put 'put ''MDYxXHU5MGI1XHU5MmI3XHU5N2Y2XHU5YTM3XHU0ZmQ3XHU1YzZjXHU2NzVmXHU2ZDkxXHU3YzlmXHU3ZThjXHU4YjE2XHU4ZDE2XHU5MDFmXHU1YjZiXHU1ZGZkXHU2NDBkXHU4NGMwXHU5MDVjXHU5OGUxXHU3Mzg3XHU1YjhiXHU2MDlhXHU2NzdlXHU2ZGRlXHU4YTFmXHU4YWE2XHU5MDAx''@;'; put 'put ''XHU5ODBjXHU1MjM3XHVmOTcwXHU3MDUxXHU3ODhlXHU5Mzk2XHU4ODcwXHU5MWQ3XHU0ZmVlXHU1M2Q3XHU1NWZkXHU1NmRhXHU1NzgyXHU1OGZkXHU1YWMyXHU1Yjg4XHU1Y2FiXHU1Y2MwXHU1ZTI1XHU2MTAxIl0sWyJlMmExIiwiXHU2MjBkXHU2MjRiXHU2Mzg4XHU2NDFjXHU2NTM2XHU2''@;'; put 'put ''NTc4XHU2YTM5XHU2YjhhXHU2YzM0XHU2ZDE5XHU2ZjMxXHU3MWU3XHU3MmU5XHU3Mzc4XHU3NDA3XHU3NGIyXHU3NjI2XHU3NzYxXHU3OWMwXHU3YTU3XHU3YWVhXHU3Y2I5XHU3ZDhmXHU3ZGFjXHU3ZTYxXHU3ZjllXHU4MTI5XHU4MzMxXHU4NDkwXHU4NGRhXHU4NWVhXHU4ODk2XHU4YWIw''@;'; put 'put ''XHU4YjkwXHU4ZjM4XHU5MDQyXHU5MDgzXHU5MTZjXHU5Mjk2XHU5MmI5XHU5NjhiXHU5NmE3XHU5NmE4XHU5NmQ2XHU5NzAwXHU5ODA4XHU5OTk2XHU5YWQzXHU5YjFhXHU1M2Q0XHU1ODdlXHU1OTE5XHU1YjcwXHU1YmJmXHU2ZGQxXHU2ZjVhXHU3MTlmXHU3NDIxXHU3NGI5XHU4MDg1XHU4''@;'; put 'put ''M2ZkXHU1ZGUxXHU1Zjg3XHU1ZmFhXHU2MDQyXHU2NWVjXHU2ODEyXHU2OTZmXHU2YTUzXHU2Yjg5XHU2ZDM1XHU2ZGYzXHU3M2UzXHU3NmZlXHU3N2FjXHU3YjRkXHU3ZDE0XHU4MTIzXHU4MjFjXHU4MzQwXHU4NGY0XHU4NTYzXHU4YTYyXHU4YWM0XHU5MTg3XHU5MzFlXHU5ODA2XHU5OWI0''@;'; put 'put ''XHU2MjBjXHU4ODUzXHU4ZmYwXHU5MjY1XHU1ZDA3XHU1ZDI3Il0sWyJlM2ExIiwiXHU1ZDY5XHU3NDVmXHU4MTlkXHU4NzY4XHU2ZmQ1XHU2MmZlXHU3ZmQyXHU4OTM2XHU4OTcyXHU0ZTFlXHU0ZTU4XHU1MGU3XHU1MmRkXHU1MzQ3XHU2MjdmXHU2NjA3XHU3ZTY5XHU4ODA1XHU5NjVlXHU0''@;'; put 'put ''ZjhkXHU1MzE5XHU1NjM2XHU1OWNiXHU1YWE0XHU1YzM4XHU1YzRlXHU1YzRkXHU1ZTAyXHU1ZjExXHU2MDQzXHU2NWJkXHU2NjJmXHU2NjQyXHU2N2JlXHU2N2Y0XHU3MzFjXHU3N2UyXHU3OTNhXHU3ZmM1XHU4NDk0XHU4NGNkXHU4OTk2XHU4YTY2XHU4YTY5XHU4YWUxXHU4YzU1XHU4Yzdh''@;'; put 'put ''XHU1N2Y0XHU1YmQ0XHU1ZjBmXHU2MDZmXHU2MmVkXHU2OTBkXHU2Yjk2XHU2ZTVjXHU3MTg0XHU3YmQyXHU4NzU1XHU4YjU4XHU4ZWZlXHU5OGRmXHU5OGZlXHU0ZjM4XHU0ZjgxXHU0ZmUxXHU1NDdiXHU1YTIwXHU1YmI4XHU2MTNjXHU2NWIwXHU2NjY4XHU3MWZjXHU3NTMzXHU3OTVlXHU3''@;'; put 'put ''ZDMzXHU4MTRlXHU4MWUzXHU4Mzk4XHU4NWFhXHU4NWNlXHU4NzAzXHU4YTBhXHU4ZWFiXHU4ZjliXHVmOTcxXHU4ZmM1XHU1OTMxXHU1YmE0XHU1YmU2XHU2MDg5XHU1YmU5XHU1YzBiXHU1ZmMzXHU2YzgxIl0sWyJlNGExIiwiXHVmOTcyXHU2ZGYxXHU3MDBiXHU3NTFhXHU4MmFmXHU4YWY2''@;'; put 'put ''XHU0ZWMwXHU1MzQxXHVmOTczXHU5NmQ5XHU2YzBmXHU0ZTllXHU0ZmM0XHU1MTUyXHU1NTVlXHU1YTI1XHU1Y2U4XHU2MjExXHU3MjU5XHU4MmJkXHU4M2FhXHU4NmZlXHU4ODU5XHU4YTFkXHU5NjNmXHU5NmM1XHU5OTEzXHU5ZDA5XHU5ZDVkXHU1ODBhXHU1Y2IzXHU1ZGJkXHU1ZTQ0XHU2''@;'; put 'put ''MGUxXHU2MTE1XHU2M2UxXHU2YTAyXHU2ZTI1XHU5MTAyXHU5MzU0XHU5ODRlXHU5YzEwXHU5Zjc3XHU1Yjg5XHU1Y2I4XHU2MzA5XHU2NjRmXHU2ODQ4XHU3NzNjXHU5NmMxXHU5NzhkXHU5ODU0XHU5YjlmXHU2NWExXHU4YjAxXHU4ZWNiXHU5NWJjXHU1NTM1XHU1Y2E5XHU1ZGQ2XHU1ZWI1''@;'; put 'put ''XHU2Njk3XHU3NjRjXHU4M2Y0XHU5NWM3XHU1OGQzXHU2MmJjXHU3MmNlXHU5ZDI4XHU0ZWYwXHU1OTJlXHU2MDBmXHU2NjNiXHU2YjgzXHU3OWU3XHU5ZDI2XHU1MzkzXHU1NGMwXHU1N2MzXHU1ZDE2XHU2MTFiXHU2NmQ2XHU2ZGFmXHU3ODhkXHU4MjdlXHU5Njk4XHU5NzQ0XHU1Mzg0XHU2''@;'; put 'put ''MjdjXHU2Mzk2XHU2ZGIyXHU3ZTBhXHU4MTRiXHU5ODRkIl0sWyJlNWExIiwiXHU2YWZiXHU3ZjRjXHU5ZGFmXHU5ZTFhXHU0ZTVmXHU1MDNiXHU1MWI2XHU1OTFjXHU2MGY5XHU2M2Y2XHU2OTMwXHU3MjNhXHU4MDM2XHVmOTc0XHU5MWNlXHU1ZjMxXHVmOTc1XHVmOTc2XHU3ZDA0XHU4MmU1''@;'; put 'put ''XHU4NDZmXHU4NGJiXHU4NWU1XHU4ZThkXHVmOTc3XHU0ZjZmXHVmOTc4XHVmOTc5XHU1OGU0XHU1YjQzXHU2MDU5XHU2M2RhXHU2NTE4XHU2NTZkXHU2Njk4XHVmOTdhXHU2OTRhXHU2YTIzXHU2ZDBiXHU3MDAxXHU3MTZjXHU3NWQyXHU3NjBkXHU3OWIzXHU3YTcwXHVmOTdiXHU3ZjhhXHVm''@;'; put 'put ''OTdjXHU4OTQ0XHVmOTdkXHU4YjkzXHU5MWMwXHU5NjdkXHVmOTdlXHU5OTBhXHU1NzA0XHU1ZmExXHU2NWJjXHU2ZjAxXHU3NjAwXHU3OWE2XHU4YTllXHU5OWFkXHU5YjVhXHU5ZjZjXHU1MTA0XHU2MWI2XHU2MjkxXHU2YThkXHU4MWM2XHU1MDQzXHU1ODMwXHU1ZjY2XHU3MTA5XHU4YTAw''@;'; put 'put ''XHU4YWZhXHU1YjdjXHU4NjE2XHU0ZmZhXHU1MTNjXHU1NmI0XHU1OTQ0XHU2M2E5XHU2ZGY5XHU1ZGFhXHU2OTZkXHU1MTg2XHU0ZTg4XHU0ZjU5XHVmOTdmXHVmOTgwXHVmOTgxXHU1OTgyXHVmOTgyIl0sWyJlNmExIiwiXHVmOTgzXHU2YjVmXHU2YzVkXHVmOTg0XHU3NGI1XHU3OTE2XHVm''@;'; put 'put ''OTg1XHU4MjA3XHU4MjQ1XHU4MzM5XHU4ZjNmXHU4ZjVkXHVmOTg2XHU5OTE4XHVmOTg3XHVmOTg4XHVmOTg5XHU0ZWE2XHVmOThhXHU1N2RmXHU1Zjc5XHU2NjEzXHVmOThiXHVmOThjXHU3NWFiXHU3ZTc5XHU4YjZmXHVmOThkXHU5MDA2XHU5YTViXHU1NmE1XHU1ODI3XHU1OWY4XHU1YTFm''@;'; put 'put ''XHU1YmI0XHVmOThlXHU1ZWY2XHVmOThmXHVmOTkwXHU2MzUwXHU2MzNiXHVmOTkxXHU2OTNkXHU2Yzg3XHU2Y2JmXHU2ZDhlXHU2ZDkzXHU2ZGY1XHU2ZjE0XHVmOTkyXHU3MGRmXHU3MTM2XHU3MTU5XHVmOTkzXHU3MWMzXHU3MWQ1XHVmOTk0XHU3ODRmXHU3ODZmXHVmOTk1XHU3Yjc1XHU3''@;'; put 'put ''ZGUzXHVmOTk2XHU3ZTJmXHVmOTk3XHU4ODRkXHU4ZWRmXHVmOTk4XHVmOTk5XHVmOTlhXHU5MjViXHVmOTliXHU5Y2Y2XHVmOTljXHVmOTlkXHVmOTllXHU2MDg1XHU2ZDg1XHVmOTlmXHU3MWIxXHVmOWEwXHVmOWExXHU5NWIxXHU1M2FkXHVmOWEyXHVmOWEzXHVmOWE0XHU2N2QzXHVmOWE1''@;'; put 'put ''XHU3MDhlXHU3MTMwXHU3NDMwXHU4Mjc2XHU4MmQyIl0sWyJlN2ExIiwiXHVmOWE2XHU5NWJiXHU5YWU1XHU5ZTdkXHU2NmM0XHVmOWE3XHU3MWMxXHU4NDQ5XHVmOWE4XHVmOWE5XHU1ODRiXHVmOWFhXHVmOWFiXHU1ZGI4XHU1ZjcxXHVmOWFjXHU2NjIwXHU2NjhlXHU2OTc5XHU2OWFlXHU2''@;'; put 'put ''YzM4XHU2Y2YzXHU2ZTM2XHU2ZjQxXHU2ZmRhXHU3MDFiXHU3MDJmXHU3MTUwXHU3MWRmXHU3MzcwXHVmOWFkXHU3NDViXHVmOWFlXHU3NGQ0XHU3NmM4XHU3YTRlXHU3ZTkzXHVmOWFmXHVmOWIwXHU4MmYxXHU4YTYwXHU4ZmNlXHVmOWIxXHU5MzQ4XHVmOWIyXHU5NzE5XHVmOWIzXHVmOWI0''@;'; put 'put ''XHU0ZTQyXHU1MDJhXHVmOWI1XHU1MjA4XHU1M2UxXHU2NmYzXHU2YzZkXHU2ZmNhXHU3MzBhXHU3NzdmXHU3YTYyXHU4MmFlXHU4NWRkXHU4NjAyXHVmOWI2XHU4OGQ0XHU4YTYzXHU4YjdkXHU4YzZiXHVmOWI3XHU5MmIzXHVmOWI4XHU5NzEzXHU5ODEwXHU0ZTk0XHU0ZjBkXHU0ZmM5XHU1''@;'; put 'put ''MGIyXHU1MzQ4XHU1NDNlXHU1NDMzXHU1NWRhXHU1ODYyXHU1OGJhXHU1OTY3XHU1YTFiXHU1YmU0XHU2MDlmXHVmOWI5XHU2MWNhXHU2NTU2XHU2NWZmXHU2NjY0XHU2OGE3XHU2YzVhXHU2ZmIzIl0sWyJlOGExIiwiXHU3MGNmXHU3MWFjXHU3MzUyXHU3YjdkXHU4NzA4XHU4YWE0XHU5YzMy''@;'; put 'put ''XHU5ZjA3XHU1YzRiXHU2YzgzXHU3MzQ0XHU3Mzg5XHU5MjNhXHU2ZWFiXHU3NDY1XHU3NjFmXHU3YTY5XHU3ZTE1XHU4NjBhXHU1MTQwXHU1OGM1XHU2NGMxXHU3NGVlXHU3NTE1XHU3NjcwXHU3ZmMxXHU5MDk1XHU5NmNkXHU5OTU0XHU2ZTI2XHU3NGU2XHU3YWE5XHU3YWFhXHU4MWU1XHU4''@;'; put 'put ''NmQ5XHU4Nzc4XHU4YTFiXHU1YTQ5XHU1YjhjXHU1YjliXHU2OGExXHU2OTAwXHU2ZDYzXHU3M2E5XHU3NDEzXHU3NDJjXHU3ODk3XHU3ZGU5XHU3ZmViXHU4MTE4XHU4MTU1XHU4MzllXHU4YzRjXHU5NjJlXHU5ODExXHU2NmYwXHU1ZjgwXHU2NWZhXHU2Nzg5XHU2YzZhXHU3MzhiXHU1MDJk''@;'; put 'put ''XHU1YTAzXHU2YjZhXHU3N2VlXHU1OTE2XHU1ZDZjXHU1ZGNkXHU3MzI1XHU3NTRmXHVmOWJhXHVmOWJiXHU1MGU1XHU1MWY5XHU1ODJmXHU1OTJkXHU1OTk2XHU1OWRhXHU1YmU1XHVmOWJjXHVmOWJkXHU1ZGEyXHU2MmQ3XHU2NDE2XHU2NDkzXHU2NGZlXHVmOWJlXHU2NmRjXHVmOWJmXHU2''@;'; put 'put ''YTQ4XHVmOWMwXHU3MWZmXHU3NDY0XHVmOWMxIl0sWyJlOWExIiwiXHU3YTg4XHU3YWFmXHU3ZTQ3XHU3ZTVlXHU4MDAwXHU4MTcwXHVmOWMyXHU4N2VmXHU4OTgxXHU4YjIwXHU5MDU5XHVmOWMzXHU5MDgwXHU5OTUyXHU2MTdlXHU2YjMyXHU2ZDc0XHU3ZTFmXHU4OTI1XHU4ZmIxXHU0ZmQx''@;'; put 'put ''XHU1MGFkXHU1MTk3XHU1MmM3XHU1N2M3XHU1ODg5XHU1YmI5XHU1ZWI4XHU2MTQyXHU2OTk1XHU2ZDhjXHU2ZTY3XHU2ZWI2XHU3MTk0XHU3NDYyXHU3NTI4XHU3NTJjXHU4MDczXHU4MzM4XHU4NGM5XHU4ZTBhXHU5Mzk0XHU5M2RlXHVmOWM0XHU0ZThlXHU0ZjUxXHU1MDc2XHU1MTJhXHU1''@;'; put 'put ''M2M4XHU1M2NiXHU1M2YzXHU1Yjg3XHU1YmQzXHU1YzI0XHU2MTFhXHU2MTgyXHU2NWY0XHU3MjViXHU3Mzk3XHU3NDQwXHU3NmMyXHU3OTUwXHU3OTkxXHU3OWI5XHU3ZDA2XHU3ZmJkXHU4MjhiXHU4NWQ1XHU4NjVlXHU4ZmMyXHU5MDQ3XHU5MGY1XHU5MWVhXHU5Njg1XHU5NmU4XHU5NmU5''@;'; put 'put ''XHU1MmQ2XHU1ZjY3XHU2NWVkXHU2NjMxXHU2ODJmXHU3MTVjXHU3YTM2XHU5MGMxXHU5ODBhXHU0ZTkxXHVmOWM1XHU2YTUyXHU2YjllXHU2ZjkwXHU3MTg5XHU4MDE4XHU4MmI4XHU4NTUzIl0sWyJlYWExIiwiXHU5MDRiXHU5Njk1XHU5NmYyXHU5N2ZiXHU4NTFhXHU5YjMxXHU0ZTkwXHU3''@;'; put 'put ''MThhXHU5NmM0XHU1MTQzXHU1MzlmXHU1NGUxXHU1NzEzXHU1NzEyXHU1N2EzXHU1YTliXHU1YWM0XHU1YmMzXHU2MDI4XHU2MTNmXHU2M2Y0XHU2Yzg1XHU2ZDM5XHU2ZTcyXHU2ZTkwXHU3MjMwXHU3MzNmXHU3NDU3XHU4MmQxXHU4ODgxXHU4ZjQ1XHU5MDYwXHVmOWM2XHU5NjYyXHU5ODU4''@;'; put 'put ''XHU5ZDFiXHU2NzA4XHU4ZDhhXHU5MjVlXHU0ZjRkXHU1MDQ5XHU1MGRlXHU1MzcxXHU1NzBkXHU1OWQ0XHU1YTAxXHU1YzA5XHU2MTcwXHU2NjkwXHU2ZTJkXHU3MjMyXHU3NDRiXHU3ZGVmXHU4MGMzXHU4NDBlXHU4NDY2XHU4NTNmXHU4NzVmXHU4ODViXHU4OTE4XHU4YjAyXHU5MDU1XHU5''@;'; put 'put ''N2NiXHU5YjRmXHU0ZTczXHU0ZjkxXHU1MTEyXHU1MTZhXHVmOWM3XHU1NTJmXHU1NWE5XHU1YjdhXHU1YmE1XHU1ZTdjXHU1ZTdkXHU1ZWJlXHU2MGEwXHU2MGRmXHU2MTA4XHU2MTA5XHU2M2M0XHU2NTM4XHU2NzA5XHVmOWM4XHU2N2Q0XHU2N2RhXHVmOWM5XHU2OTYxXHU2OTYyXHU2Y2I5''@;'; put 'put ''XHU2ZDI3XHVmOWNhXHU2ZTM4XHVmOWNiIl0sWyJlYmExIiwiXHU2ZmUxXHU3MzM2XHU3MzM3XHVmOWNjXHU3NDVjXHU3NTMxXHVmOWNkXHU3NjUyXHVmOWNlXHVmOWNmXHU3ZGFkXHU4MWZlXHU4NDM4XHU4OGQ1XHU4YTk4XHU4YWRiXHU4YWVkXHU4ZTMwXHU4ZTQyXHU5MDRhXHU5MDNlXHU5''@;'; put 'put ''MDdhXHU5MTQ5XHU5MWM5XHU5MzZlXHVmOWQwXHVmOWQxXHU1ODA5XHVmOWQyXHU2YmQzXHU4MDg5XHU4MGIyXHVmOWQzXHVmOWQ0XHU1MTQxXHU1OTZiXHU1YzM5XHVmOWQ1XHVmOWQ2XHU2ZjY0XHU3M2E3XHU4MGU0XHU4ZDA3XHVmOWQ3XHU5MjE3XHU5NThmXHVmOWQ4XHVmOWQ5XHVmOWRh''@;'; put 'put ''XHVmOWRiXHU4MDdmXHU2MjBlXHU3MDFjXHU3ZDY4XHU4NzhkXHVmOWRjXHU1N2EwXHU2MDY5XHU2MTQ3XHU2YmI3XHU4YWJlXHU5MjgwXHU5NmIxXHU0ZTU5XHU1NDFmXHU2ZGViXHU4NTJkXHU5NjcwXHU5N2YzXHU5OGVlXHU2M2Q2XHU2Y2UzXHU5MDkxXHU1MWRkXHU2MWM5XHU4MWJhXHU5''@;'; put 'put ''ZGY5XHU0ZjlkXHU1MDFhXHU1MTAwXHU1YjljXHU2MTBmXHU2MWZmXHU2NGVjXHU2OTA1XHU2YmM1XHU3NTkxXHU3N2UzXHU3ZmE5XHU4MjY0XHU4NThmXHU4N2ZiXHU4ODYzXHU4YWJjIl0sWyJlY2ExIiwiXHU4YjcwXHU5MWFiXHU0ZThjXHU0ZWU1XHU0ZjBhXHVmOWRkXHVmOWRlXHU1OTM3''@;'; put 'put ''XHU1OWU4XHVmOWRmXHU1ZGYyXHU1ZjFiXHU1ZjViXHU2MDIxXHVmOWUwXHVmOWUxXHVmOWUyXHVmOWUzXHU3MjNlXHU3M2U1XHVmOWU0XHU3NTcwXHU3NWNkXHVmOWU1XHU3OWZiXHVmOWU2XHU4MDBjXHU4MDMzXHU4MDg0XHU4MmUxXHU4MzUxXHVmOWU3XHVmOWU4XHU4Y2JkXHU4Y2IzXHU5''@;'; put 'put ''MDg3XHVmOWU5XHVmOWVhXHU5OGY0XHU5OTBjXHVmOWViXHVmOWVjXHU3MDM3XHU3NmNhXHU3ZmNhXHU3ZmNjXHU3ZmZjXHU4YjFhXHU0ZWJhXHU0ZWMxXHU1MjAzXHU1MzcwXHVmOWVkXHU1NGJkXHU1NmUwXHU1OWZiXHU1YmM1XHU1ZjE1XHU1ZmNkXHU2ZTZlXHVmOWVlXHVmOWVmXHU3ZDZh''@;'; put 'put ''XHU4MzM1XHVmOWYwXHU4NjkzXHU4YThkXHVmOWYxXHU5NzZkXHU5Nzc3XHVmOWYyXHVmOWYzXHU0ZTAwXHU0ZjVhXHU0ZjdlXHU1OGY5XHU2NWU1XHU2ZWEyXHU5MDM4XHU5M2IwXHU5OWI5XHU0ZWZiXHU1OGVjXHU1OThhXHU1OWQ5XHU2MDQxXHVmOWY0XHVmOWY1XHU3YTE0XHVmOWY2XHU4''@;'; put 'put ''MzRmXHU4Y2MzXHU1MTY1XHU1MzQ0Il0sWyJlZGExIiwiXHVmOWY3XHVmOWY4XHVmOWY5XHU0ZWNkXHU1MjY5XHU1YjU1XHU4MmJmXHU0ZWQ0XHU1MjNhXHU1NGE4XHU1OWM5XHU1OWZmXHU1YjUwXHU1YjU3XHU1YjVjXHU2MDYzXHU2MTQ4XHU2ZWNiXHU3MDk5XHU3MTZlXHU3Mzg2XHU3NGY3''@;'; put 'put ''XHU3NWI1XHU3OGMxXHU3ZDJiXHU4MDA1XHU4MWVhXHU4MzI4XHU4NTE3XHU4NWM5XHU4YWVlXHU4Y2M3XHU5NmNjXHU0ZjVjXHU1MmZhXHU1NmJjXHU2NWFiXHU2NjI4XHU3MDdjXHU3MGI4XHU3MjM1XHU3ZGJkXHU4MjhkXHU5MTRjXHU5NmMwXHU5ZDcyXHU1YjcxXHU2OGU3XHU2Yjk4XHU2''@;'; put 'put ''ZjdhXHU3NmRlXHU1YzkxXHU2NmFiXHU2ZjViXHU3YmI0XHU3YzJhXHU4ODM2XHU5NmRjXHU0ZTA4XHU0ZWQ3XHU1MzIwXHU1ODM0XHU1OGJiXHU1OGVmXHU1OTZjXHU1YzA3XHU1ZTMzXHU1ZTg0XHU1ZjM1XHU2MzhjXHU2NmIyXHU2NzU2XHU2YTFmXHU2YWEzXHU2YjBjXHU2ZjNmXHU3MjQ2''@;'; put 'put ''XHVmOWZhXHU3MzUwXHU3NDhiXHU3YWUwXHU3Y2E3XHU4MTc4XHU4MWRmXHU4MWU3XHU4MzhhXHU4NDZjXHU4NTIzXHU4NTk0XHU4NWNmXHU4OGRkXHU4ZDEzXHU5MWFjXHU5NTc3Il0sWyJlZWExIiwiXHU5NjljXHU1MThkXHU1NGM5XHU1NzI4XHU1YmIwXHU2MjRkXHU2NzUwXHU2ODNkXHU2''@;'; put 'put ''ODkzXHU2ZTNkXHU2ZWQzXHU3MDdkXHU3ZTIxXHU4OGMxXHU4Y2ExXHU4ZjA5XHU5ZjRiXHU5ZjRlXHU3MjJkXHU3YjhmXHU4YWNkXHU5MzFhXHU0ZjQ3XHU0ZjRlXHU1MTMyXHU1NDgwXHU1OWQwXHU1ZTk1XHU2MmI1XHU2Nzc1XHU2OTZlXHU2YTE3XHU2Y2FlXHU2ZTFhXHU3MmQ5XHU3MzJh''@;'; put 'put ''XHU3NWJkXHU3YmI4XHU3ZDM1XHU4MmU3XHU4M2Y5XHU4NDU3XHU4NWY3XHU4YTViXHU4Y2FmXHU4ZTg3XHU5MDE5XHU5MGI4XHU5NmNlXHU5ZjVmXHU1MmUzXHU1NDBhXHU1YWUxXHU1YmMyXHU2NDU4XHU2NTc1XHU2ZWY0XHU3MmM0XHVmOWZiXHU3Njg0XHU3YTRkXHU3YjFiXHU3YzRkXHU3''@;'; put 'put ''ZTNlXHU3ZmRmXHU4MzdiXHU4YjJiXHU4Y2NhXHU4ZDY0XHU4ZGUxXHU4ZTVmXHU4ZmVhXHU4ZmY5XHU5MDY5XHU5M2QxXHU0ZjQzXHU0ZjdhXHU1MGIzXHU1MTY4XHU1MTc4XHU1MjRkXHU1MjZhXHU1ODYxXHU1ODdjXHU1OTYwXHU1YzA4XHU1YzU1XHU1ZWRiXHU2MDliXHU2MjMwXHU2ODEz''@;'; put 'put ''XHU2YmJmXHU2YzA4XHU2ZmIxIl0sWyJlZmExIiwiXHU3MTRlXHU3NDIwXHU3NTMwXHU3NTM4XHU3NTUxXHU3NjcyXHU3YjRjXHU3YjhiXHU3YmFkXHU3YmM2XHU3ZThmXHU4YTZlXHU4ZjNlXHU4ZjQ5XHU5MjNmXHU5MjkzXHU5MzIyXHU5NDJiXHU5NmZiXHU5ODVhXHU5ODZiXHU5OTFlXHU1''@;'; put 'put ''MjA3XHU2MjJhXHU2Mjk4XHU2ZDU5XHU3NjY0XHU3YWNhXHU3YmMwXHU3ZDc2XHU1MzYwXHU1Y2JlXHU1ZTk3XHU2ZjM4XHU3MGI5XHU3Yzk4XHU5NzExXHU5YjhlXHU5ZWRlXHU2M2E1XHU2NDdhXHU4Nzc2XHU0ZTAxXHU0ZTk1XHU0ZWFkXHU1MDVjXHU1MDc1XHU1NDQ4XHU1OWMzXHU1Yjlh''@;'; put 'put ''XHU1ZTQwXHU1ZWFkXHU1ZWY3XHU1ZjgxXHU2MGM1XHU2MzNhXHU2NTNmXHU2NTc0XHU2NWNjXHU2Njc2XHU2Njc4XHU2N2ZlXHU2OTY4XHU2YTg5XHU2YjYzXHU2YzQwXHU2ZGMwXHU2ZGU4XHU2ZTFmXHU2ZTVlXHU3MDFlXHU3MGExXHU3MzhlXHU3M2ZkXHU3NTNhXHU3NzViXHU3ODg3XHU3''@;'; put 'put ''OThlXHU3YTBiXHU3YTdkXHU3Y2JlXHU3ZDhlXHU4MjQ3XHU4YTAyXHU4YWVhXHU4YzllXHU5MTJkXHU5MTRhXHU5MWQ4XHU5MjY2XHU5MmNjXHU5MzIwXHU5NzA2XHU5NzU2Il0sWyJmMGExIiwiXHU5NzVjXHU5ODAyXHU5ZjBlXHU1MjM2XHU1MjkxXHU1NTdjXHU1ODI0XHU1ZTFkXHU1ZjFm''@;'; put 'put ''XHU2MDhjXHU2M2QwXHU2OGFmXHU2ZmRmXHU3OTZkXHU3YjJjXHU4MWNkXHU4NWJhXHU4OGZkXHU4YWY4XHU4ZTQ0XHU5MThkXHU5NjY0XHU5NjliXHU5NzNkXHU5ODRjXHU5ZjRhXHU0ZmNlXHU1MTQ2XHU1MWNiXHU1MmE5XHU1NjMyXHU1ZjE0XHU1ZjZiXHU2M2FhXHU2NGNkXHU2NWU5XHU2''@;'; put 'put ''NjQxXHU2NmZhXHU2NmY5XHU2NzFkXHU2ODlkXHU2OGQ3XHU2OWZkXHU2ZjE1XHU2ZjZlXHU3MTY3XHU3MWU1XHU3MjJhXHU3NGFhXHU3NzNhXHU3OTU2XHU3OTVhXHU3OWRmXHU3YTIwXHU3YTk1XHU3Yzk3XHU3Y2RmXHU3ZDQ0XHU3ZTcwXHU4MDg3XHU4NWZiXHU4NmE0XHU4YTU0XHU4YWJm''@;'; put 'put ''XHU4ZDk5XHU4ZTgxXHU5MDIwXHU5MDZkXHU5MWUzXHU5NjNiXHU5NmQ1XHU5Y2U1XHU2NWNmXHU3YzA3XHU4ZGIzXHU5M2MzXHU1YjU4XHU1YzBhXHU1MzUyXHU2MmQ5XHU3MzFkXHU1MDI3XHU1Yjk3XHU1ZjllXHU2MGIwXHU2MTZiXHU2OGQ1XHU2ZGQ5XHU3NDJlXHU3YTJlXHU3ZDQyXHU3''@;'; put 'put ''ZDljXHU3ZTMxXHU4MTZiIl0sWyJmMWExIiwiXHU4ZTJhXHU4ZTM1XHU5MzdlXHU5NDE4XHU0ZjUwXHU1NzUwXHU1ZGU2XHU1ZWE3XHU2MzJiXHU3ZjZhXHU0ZTNiXHU0ZjRmXHU0ZjhmXHU1MDVhXHU1OWRkXHU4MGM0XHU1NDZhXHU1NDY4XHU1NWZlXHU1OTRmXHU1Yjk5XHU1ZGRlXHU1ZWRh''@;'; put 'put ''XHU2NjVkXHU2NzMxXHU2N2YxXHU2ODJhXHU2Y2U4XHU2ZDMyXHU2ZTRhXHU2ZjhkXHU3MGI3XHU3M2UwXHU3NTg3XHU3YzRjXHU3ZDAyXHU3ZDJjXHU3ZGEyXHU4MjFmXHU4NmRiXHU4YTNiXHU4YTg1XHU4ZDcwXHU4ZThhXHU4ZjMzXHU5MDMxXHU5MTRlXHU5MTUyXHU5NDQ0XHU5OWQwXHU3''@;'; put 'put ''YWY5XHU3Y2E1XHU0ZmNhXHU1MTAxXHU1MWM2XHU1N2M4XHU1YmVmXHU1Y2ZiXHU2NjU5XHU2YTNkXHU2ZDVhXHU2ZTk2XHU2ZmVjXHU3MTBjXHU3NTZmXHU3YWUzXHU4ODIyXHU5MDIxXHU5MDc1XHU5NmNiXHU5OWZmXHU4MzAxXHU0ZTJkXHU0ZWYyXHU4ODQ2XHU5MWNkXHU1MzdkXHU2YWRi''@;'; put 'put ''XHU2OTZiXHU2YzQxXHU4NDdhXHU1ODllXHU2MThlXHU2NmZlXHU2MmVmXHU3MGRkXHU3NTExXHU3NWM3XHU3ZTUyXHU4NGI4XHU4YjQ5XHU4ZDA4XHU0ZTRiXHU1M2VhIl0sWyJmMmExIiwiXHU1NGFiXHU1NzMwXHU1NzQwXHU1ZmQ3XHU2MzAxXHU2MzA3XHU2NDZmXHU2NTJmXHU2NWU4XHU2''@;'; put 'put ''NjdhXHU2NzlkXHU2N2IzXHU2YjYyXHU2YzYwXHU2YzlhXHU2ZjJjXHU3N2U1XHU3ODI1XHU3OTQ5XHU3OTU3XHU3ZDE5XHU4MGEyXHU4MTAyXHU4MWYzXHU4MjlkXHU4MmI3XHU4NzE4XHU4YThjXHVmOWZjXHU4ZDA0XHU4ZGJlXHU5MDcyXHU3NmY0XHU3YTE5XHU3YTM3XHU3ZTU0XHU4MDc3''@;'; put 'put ''XHU1NTA3XHU1NWQ0XHU1ODc1XHU2MzJmXHU2NDIyXHU2NjQ5XHU2NjRiXHU2ODZkXHU2OTliXHU2Yjg0XHU2ZDI1XHU2ZWIxXHU3M2NkXHU3NDY4XHU3NGExXHU3NTViXHU3NWI5XHU3NmUxXHU3NzFlXHU3NzhiXHU3OWU2XHU3ZTA5XHU3ZTFkXHU4MWZiXHU4NTJmXHU4ODk3XHU4YTNhXHU4''@;'; put 'put ''Y2QxXHU4ZWViXHU4ZmIwXHU5MDMyXHU5M2FkXHU5NjYzXHU5NjczXHU5NzA3XHU0Zjg0XHU1M2YxXHU1OWVhXHU1YWM5XHU1ZTE5XHU2ODRlXHU3NGM2XHU3NWJlXHU3OWU5XHU3YTkyXHU4MWEzXHU4NmVkXHU4Y2VhXHU4ZGNjXHU4ZmVkXHU2NTlmXHU2NzE1XHVmOWZkXHU1N2Y3XHU2ZjU3''@;'; put 'put ''XHU3ZGRkXHU4ZjJmIl0sWyJmM2ExIiwiXHU5M2Y2XHU5NmM2XHU1ZmI1XHU2MWYyXHU2Zjg0XHU0ZTE0XHU0Zjk4XHU1MDFmXHU1M2M5XHU1NWRmXHU1ZDZmXHU1ZGVlXHU2YjIxXHU2YjY0XHU3OGNiXHU3YjlhXHVmOWZlXHU4ZTQ5XHU4ZWNhXHU5MDZlXHU2MzQ5XHU2NDNlXHU3NzQwXHU3''@;'; put 'put ''YTg0XHU5MzJmXHU5NDdmXHU5ZjZhXHU2NGIwXHU2ZmFmXHU3MWU2XHU3NGE4XHU3NGRhXHU3YWM0XHU3YzEyXHU3ZTgyXHU3Y2IyXHU3ZTk4XHU4YjlhXHU4ZDBhXHU5NDdkXHU5OTEwXHU5OTRjXHU1MjM5XHU1YmRmXHU2NGU2XHU2NzJkXHU3ZDJlXHU1MGVkXHU1M2MzXHU1ODc5XHU2MTU4''@;'; put 'put ''XHU2MTU5XHU2MWZhXHU2NWFjXHU3YWQ5XHU4YjkyXHU4Yjk2XHU1MDA5XHU1MDIxXHU1Mjc1XHU1NTMxXHU1YTNjXHU1ZWUwXHU1ZjcwXHU2MTM0XHU2NTVlXHU2NjBjXHU2NjM2XHU2NmEyXHU2OWNkXHU2ZWM0XHU2ZjMyXHU3MzE2XHU3NjIxXHU3YTkzXHU4MTM5XHU4MjU5XHU4M2Q2XHU4''@;'; put 'put ''NGJjXHU1MGI1XHU1N2YwXHU1YmMwXHU1YmU4XHU1ZjY5XHU2M2ExXHU3ODI2XHU3ZGI1XHU4M2RjXHU4NTIxXHU5MWM3XHU5MWY1XHU1MThhXHU2N2Y1XHU3YjU2Il0sWyJmNGExIiwiXHU4Y2FjXHU1MWM0XHU1OWJiXHU2MGJkXHU4NjU1XHU1MDFjXHVmOWZmXHU1MjU0XHU1YzNhXHU2MTdk''@;'; put 'put ''XHU2MjFhXHU2MmQzXHU2NGYyXHU2NWE1XHU2ZWNjXHU3NjIwXHU4MTBhXHU4ZTYwXHU5NjVmXHU5NmJiXHU0ZWRmXHU1MzQzXHU1NTk4XHU1OTI5XHU1ZGRkXHU2NGM1XHU2Y2M5XHU2ZGZhXHU3Mzk0XHU3YTdmXHU4MjFiXHU4NWE2XHU4Y2U0XHU4ZTEwXHU5MDc3XHU5MWU3XHU5NWUxXHU5''@;'; put 'put ''NjIxXHU5N2M2XHU1MWY4XHU1NGYyXHU1NTg2XHU1ZmI5XHU2NGE0XHU2Zjg4XHU3ZGI0XHU4ZjFmXHU4ZjRkXHU5NDM1XHU1MGM5XHU1YzE2XHU2Y2JlXHU2ZGZiXHU3NTFiXHU3N2JiXHU3YzNkXHU3YzY0XHU4YTc5XHU4YWMyXHU1ODFlXHU1OWJlXHU1ZTE2XHU2Mzc3XHU3MjUyXHU3NThh''@;'; put 'put ''XHU3NzZiXHU4YWRjXHU4Y2JjXHU4ZjEyXHU1ZWYzXHU2Njc0XHU2ZGY4XHU4MDdkXHU4M2MxXHU4YWNiXHU5NzUxXHU5YmQ2XHVmYTAwXHU1MjQzXHU2NmZmXHU2ZDk1XHU2ZWVmXHU3ZGUwXHU4YWU2XHU5MDJlXHU5MDVlXHU5YWQ0XHU1MjFkXHU1MjdmXHU1NGU4XHU2MTk0XHU2Mjg0XHU2''@;'; put 'put ''MmRiXHU2OGEyIl0sWyJmNWExIiwiXHU2OTEyXHU2OTVhXHU2YTM1XHU3MDkyXHU3MTI2XHU3ODVkXHU3OTAxXHU3OTBlXHU3OWQyXHU3YTBkXHU4MDk2XHU4Mjc4XHU4MmQ1XHU4MzQ5XHU4NTQ5XHU4YzgyXHU4ZDg1XHU5MTYyXHU5MThiXHU5MWFlXHU0ZmMzXHU1NmQxXHU3MWVkXHU3N2Q3''@;'; put 'put ''XHU4NzAwXHU4OWY4XHU1YmY4XHU1ZmQ2XHU2NzUxXHU5MGE4XHU1M2UyXHU1ODVhXHU1YmY1XHU2MGE0XHU2MTgxXHU2NDYwXHU3ZTNkXHU4MDcwXHU4NTI1XHU5MjgzXHU2NGFlXHU1MGFjXHU1ZDE0XHU2NzAwXHU1ODljXHU2MmJkXHU2M2E4XHU2OTBlXHU2OTc4XHU2YTFlXHU2ZTZiXHU3''@;'; put 'put ''NmJhXHU3OWNiXHU4MmJiXHU4NDI5XHU4YWNmXHU4ZGE4XHU4ZmZkXHU5MTEyXHU5MTRiXHU5MTljXHU5MzEwXHU5MzE4XHU5MzlhXHU5NmRiXHU5YTM2XHU5YzBkXHU0ZTExXHU3NTVjXHU3OTVkXHU3YWZhXHU3YjUxXHU3YmM5XHU3ZTJlXHU4NGM0XHU4ZTU5XHU4ZTc0XHU4ZWY4XHU5MDEw''@;'; put 'put ''XHU2NjI1XHU2OTNmXHU3NDQzXHU1MWZhXHU2NzJlXHU5ZWRjXHU1MTQ1XHU1ZmUwXHU2Yzk2XHU4N2YyXHU4ODVkXHU4ODc3XHU2MGI0XHU4MWI1XHU4NDAzIl0sWyJmNmExIiwiXHU4ZDA1XHU1M2Q2XHU1NDM5XHU1NjM0XHU1YTM2XHU1YzMxXHU3MDhhXHU3ZmUwXHU4MDVhXHU4MTA2XHU4''@;'; put 'put ''MWVkXHU4ZGEzXHU5MTg5XHU5YTVmXHU5ZGYyXHU1MDc0XHU0ZWM0XHU1M2EwXHU2MGZiXHU2ZTJjXHU1YzY0XHU0Zjg4XHU1MDI0XHU1NWU0XHU1Y2Q5XHU1ZTVmXHU2MDY1XHU2ODk0XHU2Y2JiXHU2ZGM0XHU3MWJlXHU3NWQ0XHU3NWY0XHU3NjYxXHU3YTFhXHU3YTQ5XHU3ZGM3XHU3ZGZi''@;'; put 'put ''XHU3ZjZlXHU4MWY0XHU4NmE5XHU4ZjFjXHU5NmM5XHU5OWIzXHU5ZjUyXHU1MjQ3XHU1MmM1XHU5OGVkXHU4OWFhXHU0ZTAzXHU2N2QyXHU2ZjA2XHU0ZmI1XHU1YmUyXHU2Nzk1XHU2Yzg4XHU2ZDc4XHU3NDFiXHU3ODI3XHU5MWRkXHU5MzdjXHU4N2M0XHU3OWU0XHU3YTMxXHU1ZmViXHU0''@;'; put 'put ''ZWQ2XHU1NGE0XHU1NTNlXHU1OGFlXHU1OWE1XHU2MGYwXHU2MjUzXHU2MmQ2XHU2NzM2XHU2OTU1XHU4MjM1XHU5NjQwXHU5OWIxXHU5OWRkXHU1MDJjXHU1MzUzXHU1NTQ0XHU1NzdjXHVmYTAxXHU2MjU4XHVmYTAyXHU2NGUyXHU2NjZiXHU2N2RkXHU2ZmMxXHU2ZmVmXHU3NDIyXHU3NDM4''@;'; put 'put ''XHU4YTE3Il0sWyJmN2ExIiwiXHU5NDM4XHU1NDUxXHU1NjA2XHU1NzY2XHU1ZjQ4XHU2MTlhXHU2YjRlXHU3MDU4XHU3MGFkXHU3ZGJiXHU4YTk1XHU1OTZhXHU4MTJiXHU2M2EyXHU3NzA4XHU4MDNkXHU4Y2FhXHU1ODU0XHU2NDJkXHU2OWJiXHU1Yjk1XHU1ZTExXHU2ZTZmXHVmYTAzXHU4''@;'; put 'put ''NTY5XHU1MTRjXHU1M2YwXHU1OTJhXHU2MDIwXHU2MTRiXHU2Yjg2XHU2YzcwXHU2Y2YwXHU3YjFlXHU4MGNlXHU4MmQ0XHU4ZGM2XHU5MGIwXHU5OGIxXHVmYTA0XHU2NGM3XHU2ZmE0XHU2NDkxXHU2NTA0XHU1MTRlXHU1NDEwXHU1NzFmXHU4YTBlXHU2MTVmXHU2ODc2XHVmYTA1XHU3NWRi''@;'; put 'put ''XHU3YjUyXHU3ZDcxXHU5MDFhXHU1ODA2XHU2OWNjXHU4MTdmXHU4OTJhXHU5MDAwXHU5ODM5XHU1MDc4XHU1OTU3XHU1OWFjXHU2Mjk1XHU5MDBmXHU5YjJhXHU2MTVkXHU3Mjc5XHU5NWQ2XHU1NzYxXHU1YTQ2XHU1ZGY0XHU2MjhhXHU2NGFkXHU2NGZhXHU2Nzc3XHU2Y2UyXHU2ZDNlXHU3''@;'; put 'put ''MjJjXHU3NDM2XHU3ODM0XHU3Zjc3XHU4MmFkXHU4ZGRiXHU5ODE3XHU1MjI0XHU1NzQyXHU2NzdmXHU3MjQ4XHU3NGUzXHU4Y2E5XHU4ZmE2XHU5MjExIl0sWyJmOGExIiwiXHU5NjJhXHU1MTZiXHU1M2VkXHU2MzRjXHU0ZjY5XHU1NTA0XHU2MDk2XHU2NTU3XHU2YzliXHU2ZDdmXHU3MjRj''@;'; put 'put ''XHU3MmZkXHU3YTE3XHU4OTg3XHU4YzlkXHU1ZjZkXHU2ZjhlXHU3MGY5XHU4MWE4XHU2MTBlXHU0ZmJmXHU1MDRmXHU2MjQxXHU3MjQ3XHU3YmM3XHU3ZGU4XHU3ZmU5XHU5MDRkXHU5N2FkXHU5YTE5XHU4Y2I2XHU1NzZhXHU1ZTczXHU2N2IwXHU4NDBkXHU4YTU1XHU1NDIwXHU1YjE2XHU1''@;'; put 'put ''ZTYzXHU1ZWUyXHU1ZjBhXHU2NTgzXHU4MGJhXHU4NTNkXHU5NTg5XHU5NjViXHU0ZjQ4XHU1MzA1XHU1MzBkXHU1MzBmXHU1NDg2XHU1NGZhXHU1NzAzXHU1ZTAzXHU2MDE2XHU2MjliXHU2MmIxXHU2MzU1XHVmYTA2XHU2Y2UxXHU2ZDY2XHU3NWIxXHU3ODMyXHU4MGRlXHU4MTJmXHU4MmRl''@;'; put 'put ''XHU4NDYxXHU4NGIyXHU4ODhkXHU4OTEyXHU5MDBiXHU5MmVhXHU5OGZkXHU5YjkxXHU1ZTQ1XHU2NmI0XHU2NmRkXHU3MDExXHU3MjA2XHVmYTA3XHU0ZmY1XHU1MjdkXHU1ZjZhXHU2MTUzXHU2NzUzXHU2YTE5XHU2ZjAyXHU3NGUyXHU3OTY4XHU4ODY4XHU4Yzc5XHU5OGM3XHU5OGM0XHU5''@;'; put 'put ''YTQzIl0sWyJmOWExIiwiXHU1NGMxXHU3YTFmXHU2OTUzXHU4YWY3XHU4YzRhXHU5OGE4XHU5OWFlXHU1ZjdjXHU2MmFiXHU3NWIyXHU3NmFlXHU4OGFiXHU5MDdmXHU5NjQyXHU1MzM5XHU1ZjNjXHU1ZmM1XHU2Y2NjXHU3M2NjXHU3NTYyXHU3NThiXHU3YjQ2XHU4MmZlXHU5OTlkXHU0ZTRm''@;'; put 'put ''XHU5MDNjXHU0ZTBiXHU0ZjU1XHU1M2E2XHU1OTBmXHU1ZWM4XHU2NjMwXHU2Y2IzXHU3NDU1XHU4Mzc3XHU4NzY2XHU4Y2MwXHU5MDUwXHU5NzFlXHU5YzE1XHU1OGQxXHU1Yjc4XHU4NjUwXHU4YjE0XHU5ZGI0XHU1YmQyXHU2MDY4XHU2MDhkXHU2NWYxXHU2YzU3XHU2ZjIyXHU2ZmEzXHU3''@;'; put 'put ''MDFhXHU3ZjU1XHU3ZmYwXHU5NTkxXHU5NTkyXHU5NjUwXHU5N2QzXHU1MjcyXHU4ZjQ0XHU1MWZkXHU1NDJiXHU1NGI4XHU1NTYzXHU1NThhXHU2YWJiXHU2ZGI1XHU3ZGQ4XHU4MjY2XHU5MjljXHU5Njc3XHU5ZTc5XHU1NDA4XHU1NGM4XHU3NmQyXHU4NmU0XHU5NWE0XHU5NWQ0XHU5NjVj''@;'; put 'put ''XHU0ZWEyXHU0ZjA5XHU1OWVlXHU1YWU2XHU1ZGY3XHU2MDUyXHU2Mjk3XHU2NzZkXHU2ODQxXHU2Yzg2XHU2ZTJmXHU3ZjM4XHU4MDliXHU4MjJhIl0sWyJmYWExIiwiXHVmYTA4XHVmYTA5XHU5ODA1XHU0ZWE1XHU1MDU1XHU1NGIzXHU1NzkzXHU1OTVhXHU1YjY5XHU1YmIzXHU2MWM4XHU2''@;'; put 'put ''OTc3XHU2ZDc3XHU3MDIzXHU4N2Y5XHU4OWUzXHU4YTcyXHU4YWU3XHU5MDgyXHU5OWVkXHU5YWI4XHU1MmJlXHU2ODM4XHU1MDE2XHU1ZTc4XHU2NzRmXHU4MzQ3XHU4ODRjXHU0ZWFiXHU1NDExXHU1NmFlXHU3M2U2XHU5MTE1XHU5N2ZmXHU5OTA5XHU5OTU3XHU5OTk5XHU1NjUzXHU1ODlm''@;'; put 'put ''XHU4NjViXHU4YTMxXHU2MWIyXHU2YWY2XHU3MzdiXHU4ZWQyXHU2YjQ3XHU5NmFhXHU5YTU3XHU1OTU1XHU3MjAwXHU4ZDZiXHU5NzY5XHU0ZmQ0XHU1Y2Y0XHU1ZjI2XHU2MWY4XHU2NjViXHU2Y2ViXHU3MGFiXHU3Mzg0XHU3M2I5XHU3M2ZlXHU3NzI5XHU3NzRkXHU3ZDQzXHU3ZDYyXHU3''@;'; put 'put ''ZTIzXHU4MjM3XHU4ODUyXHVmYTBhXHU4Y2UyXHU5MjQ5XHU5ODZmXHU1YjUxXHU3YTc0XHU4ODQwXHU5ODAxXHU1YWNjXHU0ZmUwXHU1MzU0XHU1OTNlXHU1Y2ZkXHU2MzNlXHU2ZDc5XHU3MmY5XHU4MTA1XHU4MTA3XHU4M2EyXHU5MmNmXHU5ODMwXHU0ZWE4XHU1MTQ0XHU1MjExXHU1Nzhi''@;'; put 'put ''Il0sWyJmYmExIiwiXHU1ZjYyXHU2Y2MyXHU2ZWNlXHU3MDA1XHU3MDUwXHU3MGFmXHU3MTkyXHU3M2U5XHU3NDY5XHU4MzRhXHU4N2EyXHU4ODYxXHU5MDA4XHU5MGEyXHU5M2EzXHU5OWE4XHU1MTZlXHU1ZjU3XHU2MGUwXHU2MTY3XHU2NmIzXHU4NTU5XHU4ZTRhXHU5MWFmXHU5NzhiXHU0''@;'; put 'put ''ZTRlXHU0ZTkyXHU1NDdjXHU1OGQ1XHU1OGZhXHU1OTdkXHU1Y2I1XHU1ZjI3XHU2MjM2XHU2MjQ4XHU2NjBhXHU2NjY3XHU2YmViXHU2ZDY5XHU2ZGNmXHU2ZTU2XHU2ZWY4XHU2Zjk0XHU2ZmUwXHU2ZmU5XHU3MDVkXHU3MmQwXHU3NDI1XHU3NDVhXHU3NGUwXHU3NjkzXHU3OTVjXHU3Y2Nh''@;'; put 'put ''XHU3ZTFlXHU4MGUxXHU4MmE2XHU4NDZiXHU4NGJmXHU4NjRlXHU4NjVmXHU4Nzc0XHU4Yjc3XHU4YzZhXHU5M2FjXHU5ODAwXHU5ODY1XHU2MGQxXHU2MjE2XHU5MTc3XHU1YTVhXHU2NjBmXHU2ZGY3XHU2ZTNlXHU3NDNmXHU5YjQyXHU1ZmZkXHU2MGRhXHU3YjBmXHU1NGM0XHU1ZjE4XHU2''@;'; put 'put ''YzVlXHU2Y2QzXHU2ZDJhXHU3MGQ4XHU3ZDA1XHU4Njc5XHU4YTBjXHU5ZDNiXHU1MzE2XHU1NDhjXHU1YjA1XHU2YTNhXHU3MDZiXHU3NTc1Il0sWyJmY2ExIiwiXHU3OThkXHU3OWJlXHU4MmIxXHU4M2VmXHU4YTcxXHU4YjQxXHU4Y2E4XHU5Nzc0XHVmYTBiXHU2NGY0XHU2NTJiXHU3OGJh''@;'; put 'put ''XHU3OGJiXHU3YTZiXHU0ZTM4XHU1NTlhXHU1OTUwXHU1YmE2XHU1ZTdiXHU2MGEzXHU2M2RiXHU2YjYxXHU2NjY1XHU2ODUzXHU2ZTE5XHU3MTY1XHU3NGIwXHU3ZDA4XHU5MDg0XHU5YTY5XHU5YzI1XHU2ZDNiXHU2ZWQxXHU3MzNlXHU4YzQxXHU5NWNhXHU1MWYwXHU1ZTRjXHU1ZmE4XHU2''@;'; put 'put ''MDRkXHU2MGY2XHU2MTMwXHU2MTRjXHU2NjQzXHU2NjQ0XHU2OWE1XHU2Y2MxXHU2ZTVmXHU2ZWM5XHU2ZjYyXHU3MTRjXHU3NDljXHU3Njg3XHU3YmMxXHU3YzI3XHU4MzUyXHU4NzU3XHU5MDUxXHU5NjhkXHU5ZWMzXHU1MzJmXHU1NmRlXHU1ZWZiXHU1ZjhhXHU2MDYyXHU2MDk0XHU2MWY3''@;'; put 'put ''XHU2NjY2XHU2NzAzXHU2YTljXHU2ZGVlXHU2ZmFlXHU3MDcwXHU3MzZhXHU3ZTZhXHU4MWJlXHU4MzM0XHU4NmQ0XHU4YWE4XHU4Y2M0XHU1MjgzXHU3MzcyXHU1Yjk2XHU2YTZiXHU5NDA0XHU1NGVlXHU1Njg2XHU1YjVkXHU2NTQ4XHU2NTg1XHU2NmM5XHU2ODlmXHU2ZDhkXHU2ZGM2Il0s''@;'; put 'put ''WyJmZGExIiwiXHU3MjNiXHU4MGI0XHU5MTc1XHU5YTRkXHU0ZmFmXHU1MDE5XHU1MzlhXHU1NDBlXHU1NDNjXHU1NTg5XHU1NWM1XHU1ZTNmXHU1ZjhjXHU2NzNkXHU3MTY2XHU3M2RkXHU5MDA1XHU1MmRiXHU1MmYzXHU1ODY0XHU1OGNlXHU3MTA0XHU3MThmXHU3MWZiXHU4NWIwXHU4YTEz''@;'; put 'put ''XHU2Njg4XHU4NWE4XHU1NWE3XHU2Njg0XHU3MTRhXHU4NDMxXHU1MzQ5XHU1NTk5XHU2YmMxXHU1ZjU5XHU1ZmJkXHU2M2VlXHU2Njg5XHU3MTQ3XHU4YWYxXHU4ZjFkXHU5ZWJlXHU0ZjExXHU2NDNhXHU3MGNiXHU3NTY2XHU4NjY3XHU2MDY0XHU4YjRlXHU5ZGY4XHU1MTQ3XHU1MWY2XHU1''@;'; put 'put ''MzA4XHU2ZDM2XHU4MGY4XHU5ZWQxXHU2NjE1XHU2YjIzXHU3MDk4XHU3NWQ1XHU1NDAzXHU1Yzc5XHU3ZDA3XHU4YTE2XHU2YjIwXHU2YjNkXHU2YjQ2XHU1NDM4XHU2MDcwXHU2ZDNkXHU3ZmQ1XHU4MjA4XHU1MGQ2XHU1MWRlXHU1NTljXHU1NjZiXHU1NmNkXHU1OWVjXHU1YjA5XHU1ZTBj''@;'; put 'put ''XHU2MTk5XHU2MTk4XHU2MjMxXHU2NjVlXHU2NmU2XHU3MTk5XHU3MWI5XHU3MWJhXHU3MmE3XHU3OWE3XHU3YTAwXHU3ZmIyXHU4YTcwIl1dJyl9LDc0Mjg0OlhlPT57InVzZSBzdHJpY3QiO1hlLmV4cG9ydHM9SlNPTi5wYXJzZSgnW1siMCIsIlxcdTAwMDAiLDEyN10sWyJhMTQwIiwiXHUz''@;'; put 'put ''MDAwXHVmZjBjXHUzMDAxXHUzMDAyXHVmZjBlXHUyMDI3XHVmZjFiXHVmZjFhXHVmZjFmXHVmZjAxXHVmZTMwXHUyMDI2XHUyMDI1XHVmZTUwXHVmZTUxXHVmZTUyXHhiN1x1ZmU1NFx1ZmU1NVx1ZmU1Nlx1ZmU1N1x1ZmY1Y1x1MjAxM1x1ZmUzMVx1MjAxNFx1ZmUzM1x1MjU3NFx1ZmUzNFx1''@;'; put 'put ''ZmU0Zlx1ZmYwOFx1ZmYwOVx1ZmUzNVx1ZmUzNlx1ZmY1Ylx1ZmY1ZFx1ZmUzN1x1ZmUzOFx1MzAxNFx1MzAxNVx1ZmUzOVx1ZmUzYVx1MzAxMFx1MzAxMVx1ZmUzYlx1ZmUzY1x1MzAwYVx1MzAwYlx1ZmUzZFx1ZmUzZVx1MzAwOFx1MzAwOVx1ZmUzZlx1ZmU0MFx1MzAwY1x1MzAwZFx1ZmU0''@;'; put 'put ''MVx1ZmU0Mlx1MzAwZVx1MzAwZlx1ZmU0M1x1ZmU0NFx1ZmU1OVx1ZmU1YSJdLFsiYTFhMSIsIlx1ZmU1Ylx1ZmU1Y1x1ZmU1ZFx1ZmU1ZVx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MzAxZFx1MzAxZVx1MjAzNVx1MjAzMlx1ZmYwM1x1ZmYwNlx1ZmYwYVx1MjAzYlx4YTdcdTMwMDNcdTI1''@;'; put 'put ''Y2JcdTI1Y2ZcdTI1YjNcdTI1YjJcdTI1Y2VcdTI2MDZcdTI2MDVcdTI1YzdcdTI1YzZcdTI1YTFcdTI1YTBcdTI1YmRcdTI1YmNcdTMyYTNcdTIxMDVceGFmXHVmZmUzXHVmZjNmXHUwMmNkXHVmZTQ5XHVmZTRhXHVmZTRkXHVmZTRlXHVmZTRiXHVmZTRjXHVmZTVmXHVmZTYwXHVmZTYxXHVm''@;'; put 'put ''ZjBiXHVmZjBkXHhkN1x4ZjdceGIxXHUyMjFhXHVmZjFjXHVmZjFlXHVmZjFkXHUyMjY2XHUyMjY3XHUyMjYwXHUyMjFlXHUyMjUyXHUyMjYxXHVmZTYyIiw0LCJcdWZmNWVcdTIyMjlcdTIyMmFcdTIyYTVcdTIyMjBcdTIyMWZcdTIyYmZcdTMzZDJcdTMzZDFcdTIyMmJcdTIyMmVcdTIyMzVc''@;'; put 'put ''dTIyMzRcdTI2NDBcdTI2NDJcdTIyOTVcdTIyOTlcdTIxOTFcdTIxOTNcdTIxOTBcdTIxOTJcdTIxOTZcdTIxOTdcdTIxOTlcdTIxOThcdTIyMjVcdTIyMjNcdWZmMGYiXSxbImEyNDAiLCJcdWZmM2NcdTIyMTVcdWZlNjhcdWZmMDRcdWZmZTVcdTMwMTJcdWZmZTBcdWZmZTFcdWZmMDVcdWZm''@;'; put 'put ''MjBcdTIxMDNcdTIxMDlcdWZlNjlcdWZlNmFcdWZlNmJcdTMzZDVcdTMzOWNcdTMzOWRcdTMzOWVcdTMzY2VcdTMzYTFcdTMzOGVcdTMzOGZcdTMzYzRceGIwXHU1MTU5XHU1MTViXHU1MTVlXHU1MTVkXHU1MTYxXHU1MTYzXHU1NWU3XHU3NGU5XHU3Y2NlXHUyNTgxIiw3LCJcdTI1OGZcdTI1''@;'; put 'put ''OGVcdTI1OGRcdTI1OGNcdTI1OGJcdTI1OGFcdTI1ODlcdTI1M2NcdTI1MzRcdTI1MmNcdTI1MjRcdTI1MWNcdTI1OTRcdTI1MDBcdTI1MDJcdTI1OTVcdTI1MGNcdTI1MTBcdTI1MTRcdTI1MThcdTI1NmQiXSxbImEyYTEiLCJcdTI1NmVcdTI1NzBcdTI1NmZcdTI1NTBcdTI1NWVcdTI1NmFc''@;'; put 'put ''dTI1NjFcdTI1ZTJcdTI1ZTNcdTI1ZTVcdTI1ZTRcdTI1NzFcdTI1NzJcdTI1NzNcdWZmMTAiLDksIlx1MjE2MCIsOSwiXHUzMDIxIiw4LCJcdTUzNDFcdTUzNDRcdTUzNDVcdWZmMjEiLDI1LCJcdWZmNDEiLDIxXSxbImEzNDAiLCJcdWZmNTdcdWZmNThcdWZmNTlcdWZmNWFcdTAzOTEiLDE2''@;'; put 'put ''LCJcdTAzYTMiLDYsIlx1MDNiMSIsMTYsIlx1MDNjMyIsNiwiXHUzMTA1IiwxMF0sWyJhM2ExIiwiXHUzMTEwIiwyNSwiXHUwMmQ5XHUwMmM5XHUwMmNhXHUwMmM3XHUwMmNiIl0sWyJhM2UxIiwiXHUyMGFjIl0sWyJhNDQwIiwiXHU0ZTAwXHU0ZTU5XHU0ZTAxXHU0ZTAzXHU0ZTQzXHU0ZTVk''@;'; put 'put ''XHU0ZTg2XHU0ZThjXHU0ZWJhXHU1MTNmXHU1MTY1XHU1MTZiXHU1MWUwXHU1MjAwXHU1MjAxXHU1MjliXHU1MzE1XHU1MzQxXHU1MzVjXHU1M2M4XHU0ZTA5XHU0ZTBiXHU0ZTA4XHU0ZTBhXHU0ZTJiXHU0ZTM4XHU1MWUxXHU0ZTQ1XHU0ZTQ4XHU0ZTVmXHU0ZTVlXHU0ZThlXHU0ZWExXHU1''@;'; put 'put ''MTQwXHU1MjAzXHU1MmZhXHU1MzQzXHU1M2M5XHU1M2UzXHU1NzFmXHU1OGViXHU1OTE1XHU1OTI3XHU1OTczXHU1YjUwXHU1YjUxXHU1YjUzXHU1YmY4XHU1YzBmXHU1YzIyXHU1YzM4XHU1YzcxXHU1ZGRkXHU1ZGU1XHU1ZGYxXHU1ZGYyXHU1ZGYzXHU1ZGZlXHU1ZTcyXHU1ZWZlXHU1ZjBi''@;'; put 'put ''XHU1ZjEzXHU2MjRkIl0sWyJhNGExIiwiXHU0ZTExXHU0ZTEwXHU0ZTBkXHU0ZTJkXHU0ZTMwXHU0ZTM5XHU0ZTRiXHU1YzM5XHU0ZTg4XHU0ZTkxXHU0ZTk1XHU0ZTkyXHU0ZTk0XHU0ZWEyXHU0ZWMxXHU0ZWMwXHU0ZWMzXHU0ZWM2XHU0ZWM3XHU0ZWNkXHU0ZWNhXHU0ZWNiXHU0ZWM0XHU1''@;'; put 'put ''MTQzXHU1MTQxXHU1MTY3XHU1MTZkXHU1MTZlXHU1MTZjXHU1MTk3XHU1MWY2XHU1MjA2XHU1MjA3XHU1MjA4XHU1MmZiXHU1MmZlXHU1MmZmXHU1MzE2XHU1MzM5XHU1MzQ4XHU1MzQ3XHU1MzQ1XHU1MzVlXHU1Mzg0XHU1M2NiXHU1M2NhXHU1M2NkXHU1OGVjXHU1OTI5XHU1OTJiXHU1OTJh''@;'; put 'put ''XHU1OTJkXHU1YjU0XHU1YzExXHU1YzI0XHU1YzNhXHU1YzZmXHU1ZGY0XHU1ZTdiXHU1ZWZmXHU1ZjE0XHU1ZjE1XHU1ZmMzXHU2MjA4XHU2MjM2XHU2MjRiXHU2MjRlXHU2NTJmXHU2NTg3XHU2NTk3XHU2NWE0XHU2NWI5XHU2NWU1XHU2NmYwXHU2NzA4XHU2NzI4XHU2YjIwXHU2YjYyXHU2''@;'; put 'put ''Yjc5XHU2YmNiXHU2YmQ0XHU2YmRiXHU2YzBmXHU2YzM0XHU3MDZiXHU3MjJhXHU3MjM2XHU3MjNiXHU3MjQ3XHU3MjU5XHU3MjViXHU3MmFjXHU3MzhiXHU0ZTE5Il0sWyJhNTQwIiwiXHU0ZTE2XHU0ZTE1XHU0ZTE0XHU0ZTE4XHU0ZTNiXHU0ZTRkXHU0ZTRmXHU0ZTRlXHU0ZWU1XHU0ZWQ4''@;'; put 'put ''XHU0ZWQ0XHU0ZWQ1XHU0ZWQ2XHU0ZWQ3XHU0ZWUzXHU0ZWU0XHU0ZWQ5XHU0ZWRlXHU1MTQ1XHU1MTQ0XHU1MTg5XHU1MThhXHU1MWFjXHU1MWY5XHU1MWZhXHU1MWY4XHU1MjBhXHU1MmEwXHU1MjlmXHU1MzA1XHU1MzA2XHU1MzE3XHU1MzFkXHU0ZWRmXHU1MzRhXHU1MzQ5XHU1MzYxXHU1''@;'; put 'put ''MzYwXHU1MzZmXHU1MzZlXHU1M2JiXHU1M2VmXHU1M2U0XHU1M2YzXHU1M2VjXHU1M2VlXHU1M2U5XHU1M2U4XHU1M2ZjXHU1M2Y4XHU1M2Y1XHU1M2ViXHU1M2U2XHU1M2VhXHU1M2YyXHU1M2YxXHU1M2YwXHU1M2U1XHU1M2VkXHU1M2ZiXHU1NmRiXHU1NmRhXHU1OTE2Il0sWyJhNWExIiwi''@;'; put 'put ''XHU1OTJlXHU1OTMxXHU1OTc0XHU1OTc2XHU1YjU1XHU1YjgzXHU1YzNjXHU1ZGU4XHU1ZGU3XHU1ZGU2XHU1ZTAyXHU1ZTAzXHU1ZTczXHU1ZTdjXHU1ZjAxXHU1ZjE4XHU1ZjE3XHU1ZmM1XHU2MjBhXHU2MjUzXHU2MjU0XHU2MjUyXHU2MjUxXHU2NWE1XHU2NWU2XHU2NzJlXHU2NzJjXHU2''@;'; put 'put ''NzJhXHU2NzJiXHU2NzJkXHU2YjYzXHU2YmNkXHU2YzExXHU2YzEwXHU2YzM4XHU2YzQxXHU2YzQwXHU2YzNlXHU3MmFmXHU3Mzg0XHU3Mzg5XHU3NGRjXHU3NGU2XHU3NTE4XHU3NTFmXHU3NTI4XHU3NTI5XHU3NTMwXHU3NTMxXHU3NTMyXHU3NTMzXHU3NThiXHU3NjdkXHU3NmFlXHU3NmJm''@;'; put 'put ''XHU3NmVlXHU3N2RiXHU3N2UyXHU3N2YzXHU3OTNhXHU3OWJlXHU3YTc0XHU3YWNiXHU0ZTFlXHU0ZTFmXHU0ZTUyXHU0ZTUzXHU0ZTY5XHU0ZTk5XHU0ZWE0XHU0ZWE2XHU0ZWE1XHU0ZWZmXHU0ZjA5XHU0ZjE5XHU0ZjBhXHU0ZjE1XHU0ZjBkXHU0ZjEwXHU0ZjExXHU0ZjBmXHU0ZWYyXHU0''@;'; put 'put ''ZWY2XHU0ZWZiXHU0ZWYwXHU0ZWYzXHU0ZWZkXHU0ZjAxXHU0ZjBiXHU1MTQ5XHU1MTQ3XHU1MTQ2XHU1MTQ4XHU1MTY4Il0sWyJhNjQwIiwiXHU1MTcxXHU1MThkXHU1MWIwXHU1MjE3XHU1MjExXHU1MjEyXHU1MjBlXHU1MjE2XHU1MmEzXHU1MzA4XHU1MzIxXHU1MzIwXHU1MzcwXHU1Mzcx''@;'; put 'put ''XHU1NDA5XHU1NDBmXHU1NDBjXHU1NDBhXHU1NDEwXHU1NDAxXHU1NDBiXHU1NDA0XHU1NDExXHU1NDBkXHU1NDA4XHU1NDAzXHU1NDBlXHU1NDA2XHU1NDEyXHU1NmUwXHU1NmRlXHU1NmRkXHU1NzMzXHU1NzMwXHU1NzI4XHU1NzJkXHU1NzJjXHU1NzJmXHU1NzI5XHU1OTE5XHU1OTFhXHU1''@;'; put 'put ''OTM3XHU1OTM4XHU1OTg0XHU1OTc4XHU1OTgzXHU1OTdkXHU1OTc5XHU1OTgyXHU1OTgxXHU1YjU3XHU1YjU4XHU1Yjg3XHU1Yjg4XHU1Yjg1XHU1Yjg5XHU1YmZhXHU1YzE2XHU1Yzc5XHU1ZGRlXHU1ZTA2XHU1ZTc2XHU1ZTc0Il0sWyJhNmExIiwiXHU1ZjBmXHU1ZjFiXHU1ZmQ5XHU1ZmQ2''@;'; put 'put ''XHU2MjBlXHU2MjBjXHU2MjBkXHU2MjEwXHU2MjYzXHU2MjViXHU2MjU4XHU2NTM2XHU2NWU5XHU2NWU4XHU2NWVjXHU2NWVkXHU2NmYyXHU2NmYzXHU2NzA5XHU2NzNkXHU2NzM0XHU2NzMxXHU2NzM1XHU2YjIxXHU2YjY0XHU2YjdiXHU2YzE2XHU2YzVkXHU2YzU3XHU2YzU5XHU2YzVmXHU2''@;'; put 'put ''YzYwXHU2YzUwXHU2YzU1XHU2YzYxXHU2YzViXHU2YzRkXHU2YzRlXHU3MDcwXHU3MjVmXHU3MjVkXHU3NjdlXHU3YWY5XHU3YzczXHU3Y2Y4XHU3ZjM2XHU3ZjhhXHU3ZmJkXHU4MDAxXHU4MDAzXHU4MDBjXHU4MDEyXHU4MDMzXHU4MDdmXHU4MDg5XHU4MDhiXHU4MDhjXHU4MWUzXHU4MWVh''@;'; put 'put ''XHU4MWYzXHU4MWZjXHU4MjBjXHU4MjFiXHU4MjFmXHU4MjZlXHU4MjcyXHU4MjdlXHU4NjZiXHU4ODQwXHU4ODRjXHU4ODYzXHU4OTdmXHU5NjIxXHU0ZTMyXHU0ZWE4XHU0ZjRkXHU0ZjRmXHU0ZjQ3XHU0ZjU3XHU0ZjVlXHU0ZjM0XHU0ZjViXHU0ZjU1XHU0ZjMwXHU0ZjUwXHU0ZjUxXHU0''@;'; put 'put ''ZjNkXHU0ZjNhXHU0ZjM4XHU0ZjQzXHU0ZjU0XHU0ZjNjXHU0ZjQ2XHU0ZjYzIl0sWyJhNzQwIiwiXHU0ZjVjXHU0ZjYwXHU0ZjJmXHU0ZjRlXHU0ZjM2XHU0ZjU5XHU0ZjVkXHU0ZjQ4XHU0ZjVhXHU1MTRjXHU1MTRiXHU1MTRkXHU1MTc1XHU1MWI2XHU1MWI3XHU1MjI1XHU1MjI0XHU1MjI5''@;'; put 'put ''XHU1MjJhXHU1MjI4XHU1MmFiXHU1MmE5XHU1MmFhXHU1MmFjXHU1MzIzXHU1MzczXHU1Mzc1XHU1NDFkXHU1NDJkXHU1NDFlXHU1NDNlXHU1NDI2XHU1NDRlXHU1NDI3XHU1NDQ2XHU1NDQzXHU1NDMzXHU1NDQ4XHU1NDQyXHU1NDFiXHU1NDI5XHU1NDRhXHU1NDM5XHU1NDNiXHU1NDM4XHU1''@;'; put 'put ''NDJlXHU1NDM1XHU1NDM2XHU1NDIwXHU1NDNjXHU1NDQwXHU1NDMxXHU1NDJiXHU1NDFmXHU1NDJjXHU1NmVhXHU1NmYwXHU1NmU0XHU1NmViXHU1NzRhXHU1NzUxXHU1NzQwXHU1NzRkIl0sWyJhN2ExIiwiXHU1NzQ3XHU1NzRlXHU1NzNlXHU1NzUwXHU1NzRmXHU1NzNiXHU1OGVmXHU1OTNl''@;'; put 'put ''XHU1OTlkXHU1OTkyXHU1OWE4XHU1OTllXHU1OWEzXHU1OTk5XHU1OTk2XHU1OThkXHU1OWE0XHU1OTkzXHU1OThhXHU1OWE1XHU1YjVkXHU1YjVjXHU1YjVhXHU1YjViXHU1YjhjXHU1YjhiXHU1YjhmXHU1YzJjXHU1YzQwXHU1YzQxXHU1YzNmXHU1YzNlXHU1YzkwXHU1YzkxXHU1Yzk0XHU1''@;'; put 'put ''YzhjXHU1ZGViXHU1ZTBjXHU1ZThmXHU1ZTg3XHU1ZThhXHU1ZWY3XHU1ZjA0XHU1ZjFmXHU1ZjY0XHU1ZjYyXHU1Zjc3XHU1Zjc5XHU1ZmQ4XHU1ZmNjXHU1ZmQ3XHU1ZmNkXHU1ZmYxXHU1ZmViXHU1ZmY4XHU1ZmVhXHU2MjEyXHU2MjExXHU2Mjg0XHU2Mjk3XHU2Mjk2XHU2MjgwXHU2Mjc2''@;'; put 'put ''XHU2Mjg5XHU2MjZkXHU2MjhhXHU2MjdjXHU2MjdlXHU2Mjc5XHU2MjczXHU2MjkyXHU2MjZmXHU2Mjk4XHU2MjZlXHU2Mjk1XHU2MjkzXHU2MjkxXHU2Mjg2XHU2NTM5XHU2NTNiXHU2NTM4XHU2NWYxXHU2NmY0XHU2NzVmXHU2NzRlXHU2NzRmXHU2NzUwXHU2NzUxXHU2NzVjXHU2NzU2XHU2''@;'; put 'put ''NzVlXHU2NzQ5XHU2NzQ2XHU2NzYwIl0sWyJhODQwIiwiXHU2NzUzXHU2NzU3XHU2YjY1XHU2YmNmXHU2YzQyXHU2YzVlXHU2Yzk5XHU2YzgxXHU2Yzg4XHU2Yzg5XHU2Yzg1XHU2YzliXHU2YzZhXHU2YzdhXHU2YzkwXHU2YzcwXHU2YzhjXHU2YzY4XHU2Yzk2XHU2YzkyXHU2YzdkXHU2Yzgz''@;'; put 'put ''XHU2YzcyXHU2YzdlXHU2Yzc0XHU2Yzg2XHU2Yzc2XHU2YzhkXHU2Yzk0XHU2Yzk4XHU2YzgyXHU3MDc2XHU3MDdjXHU3MDdkXHU3MDc4XHU3MjYyXHU3MjYxXHU3MjYwXHU3MmM0XHU3MmMyXHU3Mzk2XHU3NTJjXHU3NTJiXHU3NTM3XHU3NTM4XHU3NjgyXHU3NmVmXHU3N2UzXHU3OWMxXHU3''@;'; put 'put ''OWMwXHU3OWJmXHU3YTc2XHU3Y2ZiXHU3ZjU1XHU4MDk2XHU4MDkzXHU4MDlkXHU4MDk4XHU4MDliXHU4MDlhXHU4MGIyXHU4MjZmXHU4MjkyIl0sWyJhOGExIiwiXHU4MjhiXHU4MjhkXHU4OThiXHU4OWQyXHU4YTAwXHU4YzM3XHU4YzQ2XHU4YzU1XHU4YzlkXHU4ZDY0XHU4ZDcwXHU4ZGIz''@;'; put 'put ''XHU4ZWFiXHU4ZWNhXHU4ZjliXHU4ZmIwXHU4ZmMyXHU4ZmM2XHU4ZmM1XHU4ZmM0XHU1ZGUxXHU5MDkxXHU5MGEyXHU5MGFhXHU5MGE2XHU5MGEzXHU5MTQ5XHU5MWM2XHU5MWNjXHU5NjMyXHU5NjJlXHU5NjMxXHU5NjJhXHU5NjJjXHU0ZTI2XHU0ZTU2XHU0ZTczXHU0ZThiXHU0ZTliXHU0''@;'; put 'put ''ZTllXHU0ZWFiXHU0ZWFjXHU0ZjZmXHU0ZjlkXHU0ZjhkXHU0ZjczXHU0ZjdmXHU0ZjZjXHU0ZjliXHU0ZjhiXHU0Zjg2XHU0ZjgzXHU0ZjcwXHU0Zjc1XHU0Zjg4XHU0ZjY5XHU0ZjdiXHU0Zjk2XHU0ZjdlXHU0ZjhmXHU0ZjkxXHU0ZjdhXHU1MTU0XHU1MTUyXHU1MTU1XHU1MTY5XHU1MTc3''@;'; put 'put ''XHU1MTc2XHU1MTc4XHU1MWJkXHU1MWZkXHU1MjNiXHU1MjM4XHU1MjM3XHU1MjNhXHU1MjMwXHU1MjJlXHU1MjM2XHU1MjQxXHU1MmJlXHU1MmJiXHU1MzUyXHU1MzU0XHU1MzUzXHU1MzUxXHU1MzY2XHU1Mzc3XHU1Mzc4XHU1Mzc5XHU1M2Q2XHU1M2Q0XHU1M2Q3XHU1NDczXHU1NDc1Il0s''@;'; put 'put ''WyJhOTQwIiwiXHU1NDk2XHU1NDc4XHU1NDk1XHU1NDgwXHU1NDdiXHU1NDc3XHU1NDg0XHU1NDkyXHU1NDg2XHU1NDdjXHU1NDkwXHU1NDcxXHU1NDc2XHU1NDhjXHU1NDlhXHU1NDYyXHU1NDY4XHU1NDhiXHU1NDdkXHU1NDhlXHU1NmZhXHU1NzgzXHU1Nzc3XHU1NzZhXHU1NzY5XHU1NzYx''@;'; put 'put ''XHU1NzY2XHU1NzY0XHU1NzdjXHU1OTFjXHU1OTQ5XHU1OTQ3XHU1OTQ4XHU1OTQ0XHU1OTU0XHU1OWJlXHU1OWJiXHU1OWQ0XHU1OWI5XHU1OWFlXHU1OWQxXHU1OWM2XHU1OWQwXHU1OWNkXHU1OWNiXHU1OWQzXHU1OWNhXHU1OWFmXHU1OWIzXHU1OWQyXHU1OWM1XHU1YjVmXHU1YjY0XHU1''@;'; put 'put ''YjYzXHU1Yjk3XHU1YjlhXHU1Yjk4XHU1YjljXHU1Yjk5XHU1YjliXHU1YzFhXHU1YzQ4XHU1YzQ1Il0sWyJhOWExIiwiXHU1YzQ2XHU1Y2I3XHU1Y2ExXHU1Y2I4XHU1Y2E5XHU1Y2FiXHU1Y2IxXHU1Y2IzXHU1ZTE4XHU1ZTFhXHU1ZTE2XHU1ZTE1XHU1ZTFiXHU1ZTExXHU1ZTc4XHU1ZTlh''@;'; put 'put ''XHU1ZTk3XHU1ZTljXHU1ZTk1XHU1ZTk2XHU1ZWY2XHU1ZjI2XHU1ZjI3XHU1ZjI5XHU1ZjgwXHU1ZjgxXHU1ZjdmXHU1ZjdjXHU1ZmRkXHU1ZmUwXHU1ZmZkXHU1ZmY1XHU1ZmZmXHU2MDBmXHU2MDE0XHU2MDJmXHU2MDM1XHU2MDE2XHU2MDJhXHU2MDE1XHU2MDIxXHU2MDI3XHU2MDI5XHU2''@;'; put 'put ''MDJiXHU2MDFiXHU2MjE2XHU2MjE1XHU2MjNmXHU2MjNlXHU2MjQwXHU2MjdmXHU2MmM5XHU2MmNjXHU2MmM0XHU2MmJmXHU2MmMyXHU2MmI5XHU2MmQyXHU2MmRiXHU2MmFiXHU2MmQzXHU2MmQ0XHU2MmNiXHU2MmM4XHU2MmE4XHU2MmJkXHU2MmJjXHU2MmQwXHU2MmQ5XHU2MmM3XHU2MmNk''@;'; put 'put ''XHU2MmI1XHU2MmRhXHU2MmIxXHU2MmQ4XHU2MmQ2XHU2MmQ3XHU2MmM2XHU2MmFjXHU2MmNlXHU2NTNlXHU2NWE3XHU2NWJjXHU2NWZhXHU2NjE0XHU2NjEzXHU2NjBjXHU2NjA2XHU2NjAyXHU2NjBlXHU2NjAwXHU2NjBmXHU2NjE1XHU2NjBhIl0sWyJhYTQwIiwiXHU2NjA3XHU2NzBkXHU2''@;'; put 'put ''NzBiXHU2NzZkXHU2NzhiXHU2Nzk1XHU2NzcxXHU2NzljXHU2NzczXHU2Nzc3XHU2Nzg3XHU2NzlkXHU2Nzk3XHU2NzZmXHU2NzcwXHU2NzdmXHU2Nzg5XHU2NzdlXHU2NzkwXHU2Nzc1XHU2NzlhXHU2NzkzXHU2NzdjXHU2NzZhXHU2NzcyXHU2YjIzXHU2YjY2XHU2YjY3XHU2YjdmXHU2YzEz''@;'; put 'put ''XHU2YzFiXHU2Y2UzXHU2Y2U4XHU2Y2YzXHU2Y2IxXHU2Y2NjXHU2Y2U1XHU2Y2IzXHU2Y2JkXHU2Y2JlXHU2Y2JjXHU2Y2UyXHU2Y2FiXHU2Y2Q1XHU2Y2QzXHU2Y2I4XHU2Y2M0XHU2Y2I5XHU2Y2MxXHU2Y2FlXHU2Y2Q3XHU2Y2M1XHU2Y2YxXHU2Y2JmXHU2Y2JiXHU2Y2UxXHU2Y2RiXHU2''@;'; put 'put ''Y2NhXHU2Y2FjXHU2Y2VmXHU2Y2RjXHU2Y2Q2XHU2Y2UwIl0sWyJhYWExIiwiXHU3MDk1XHU3MDhlXHU3MDkyXHU3MDhhXHU3MDk5XHU3MjJjXHU3MjJkXHU3MjM4XHU3MjQ4XHU3MjY3XHU3MjY5XHU3MmMwXHU3MmNlXHU3MmQ5XHU3MmQ3XHU3MmQwXHU3M2E5XHU3M2E4XHU3MzlmXHU3M2Fi''@;'; put 'put ''XHU3M2E1XHU3NTNkXHU3NTlkXHU3NTk5XHU3NTlhXHU3Njg0XHU3NmMyXHU3NmYyXHU3NmY0XHU3N2U1XHU3N2ZkXHU3OTNlXHU3OTQwXHU3OTQxXHU3OWM5XHU3OWM4XHU3YTdhXHU3YTc5XHU3YWZhXHU3Y2ZlXHU3ZjU0XHU3ZjhjXHU3ZjhiXHU4MDA1XHU4MGJhXHU4MGE1XHU4MGEyXHU4''@;'; put 'put ''MGIxXHU4MGExXHU4MGFiXHU4MGE5XHU4MGI0XHU4MGFhXHU4MGFmXHU4MWU1XHU4MWZlXHU4MjBkXHU4MmIzXHU4MjlkXHU4Mjk5XHU4MmFkXHU4MmJkXHU4MjlmXHU4MmI5XHU4MmIxXHU4MmFjXHU4MmE1XHU4MmFmXHU4MmI4XHU4MmEzXHU4MmIwXHU4MmJlXHU4MmI3XHU4NjRlXHU4Njcx''@;'; put 'put ''XHU1MjFkXHU4ODY4XHU4ZWNiXHU4ZmNlXHU4ZmQ0XHU4ZmQxXHU5MGI1XHU5MGI4XHU5MGIxXHU5MGI2XHU5MWM3XHU5MWQxXHU5NTc3XHU5NTgwXHU5NjFjXHU5NjQwXHU5NjNmXHU5NjNiXHU5NjQ0Il0sWyJhYjQwIiwiXHU5NjQyXHU5NmI5XHU5NmU4XHU5NzUyXHU5NzVlXHU0ZTlmXHU0''@;'; put 'put ''ZWFkXHU0ZWFlXHU0ZmUxXHU0ZmI1XHU0ZmFmXHU0ZmJmXHU0ZmUwXHU0ZmQxXHU0ZmNmXHU0ZmRkXHU0ZmMzXHU0ZmI2XHU0ZmQ4XHU0ZmRmXHU0ZmNhXHU0ZmQ3XHU0ZmFlXHU0ZmQwXHU0ZmM0XHU0ZmMyXHU0ZmRhXHU0ZmNlXHU0ZmRlXHU0ZmI3XHU1MTU3XHU1MTkyXHU1MTkxXHU1MWEw''@;'; put 'put ''XHU1MjRlXHU1MjQzXHU1MjRhXHU1MjRkXHU1MjRjXHU1MjRiXHU1MjQ3XHU1MmM3XHU1MmM5XHU1MmMzXHU1MmMxXHU1MzBkXHU1MzU3XHU1MzdiXHU1MzlhXHU1M2RiXHU1NGFjXHU1NGMwXHU1NGE4XHU1NGNlXHU1NGM5XHU1NGI4XHU1NGE2XHU1NGIzXHU1NGM3XHU1NGMyXHU1NGJkXHU1''@;'; put 'put ''NGFhXHU1NGMxIl0sWyJhYmExIiwiXHU1NGM0XHU1NGM4XHU1NGFmXHU1NGFiXHU1NGIxXHU1NGJiXHU1NGE5XHU1NGE3XHU1NGJmXHU1NmZmXHU1NzgyXHU1NzhiXHU1N2EwXHU1N2EzXHU1N2EyXHU1N2NlXHU1N2FlXHU1NzkzXHU1OTU1XHU1OTUxXHU1OTRmXHU1OTRlXHU1OTUwXHU1OWRj''@;'; put 'put ''XHU1OWQ4XHU1OWZmXHU1OWUzXHU1OWU4XHU1YTAzXHU1OWU1XHU1OWVhXHU1OWRhXHU1OWU2XHU1YTAxXHU1OWZiXHU1YjY5XHU1YmEzXHU1YmE2XHU1YmE0XHU1YmEyXHU1YmE1XHU1YzAxXHU1YzRlXHU1YzRmXHU1YzRkXHU1YzRiXHU1Y2Q5XHU1Y2QyXHU1ZGY3XHU1ZTFkXHU1ZTI1XHU1''@;'; put 'put ''ZTFmXHU1ZTdkXHU1ZWEwXHU1ZWE2XHU1ZWZhXHU1ZjA4XHU1ZjJkXHU1ZjY1XHU1Zjg4XHU1Zjg1XHU1ZjhhXHU1ZjhiXHU1Zjg3XHU1ZjhjXHU1Zjg5XHU2MDEyXHU2MDFkXHU2MDIwXHU2MDI1XHU2MDBlXHU2MDI4XHU2MDRkXHU2MDcwXHU2MDY4XHU2MDYyXHU2MDQ2XHU2MDQzXHU2MDZj''@;'; put 'put ''XHU2MDZiXHU2MDZhXHU2MDY0XHU2MjQxXHU2MmRjXHU2MzE2XHU2MzA5XHU2MmZjXHU2MmVkXHU2MzAxXHU2MmVlXHU2MmZkXHU2MzA3XHU2MmYxXHU2MmY3Il0sWyJhYzQwIiwiXHU2MmVmXHU2MmVjXHU2MmZlXHU2MmY0XHU2MzExXHU2MzAyXHU2NTNmXHU2NTQ1XHU2NWFiXHU2NWJkXHU2''@;'; put 'put ''NWUyXHU2NjI1XHU2NjJkXHU2NjIwXHU2NjI3XHU2NjJmXHU2NjFmXHU2NjI4XHU2NjMxXHU2NjI0XHU2NmY3XHU2N2ZmXHU2N2QzXHU2N2YxXHU2N2Q0XHU2N2QwXHU2N2VjXHU2N2I2XHU2N2FmXHU2N2Y1XHU2N2U5XHU2N2VmXHU2N2M0XHU2N2QxXHU2N2I0XHU2N2RhXHU2N2U1XHU2N2I4''@;'; put 'put ''XHU2N2NmXHU2N2RlXHU2N2YzXHU2N2IwXHU2N2Q5XHU2N2UyXHU2N2RkXHU2N2QyXHU2YjZhXHU2YjgzXHU2Yjg2XHU2YmI1XHU2YmQyXHU2YmQ3XHU2YzFmXHU2Y2M5XHU2ZDBiXHU2ZDMyXHU2ZDJhXHU2ZDQxXHU2ZDI1XHU2ZDBjXHU2ZDMxXHU2ZDFlXHU2ZDE3Il0sWyJhY2ExIiwiXHU2''@;'; put 'put ''ZDNiXHU2ZDNkXHU2ZDNlXHU2ZDM2XHU2ZDFiXHU2Y2Y1XHU2ZDM5XHU2ZDI3XHU2ZDM4XHU2ZDI5XHU2ZDJlXHU2ZDM1XHU2ZDBlXHU2ZDJiXHU3MGFiXHU3MGJhXHU3MGIzXHU3MGFjXHU3MGFmXHU3MGFkXHU3MGI4XHU3MGFlXHU3MGE0XHU3MjMwXHU3MjcyXHU3MjZmXHU3Mjc0XHU3MmU5''@;'; put 'put ''XHU3MmUwXHU3MmUxXHU3M2I3XHU3M2NhXHU3M2JiXHU3M2IyXHU3M2NkXHU3M2MwXHU3M2IzXHU3NTFhXHU3NTJkXHU3NTRmXHU3NTRjXHU3NTRlXHU3NTRiXHU3NWFiXHU3NWE0XHU3NWE1XHU3NWEyXHU3NWEzXHU3Njc4XHU3Njg2XHU3Njg3XHU3Njg4XHU3NmM4XHU3NmM2XHU3NmMzXHU3''@;'; put 'put ''NmM1XHU3NzAxXHU3NmY5XHU3NmY4XHU3NzA5XHU3NzBiXHU3NmZlXHU3NmZjXHU3NzA3XHU3N2RjXHU3ODAyXHU3ODE0XHU3ODBjXHU3ODBkXHU3OTQ2XHU3OTQ5XHU3OTQ4XHU3OTQ3XHU3OWI5XHU3OWJhXHU3OWQxXHU3OWQyXHU3OWNiXHU3YTdmXHU3YTgxXHU3YWZmXHU3YWZkXHU3Yzdk''@;'; put 'put ''XHU3ZDAyXHU3ZDA1XHU3ZDAwXHU3ZDA5XHU3ZDA3XHU3ZDA0XHU3ZDA2XHU3ZjM4XHU3ZjhlXHU3ZmJmXHU4MDA0Il0sWyJhZDQwIiwiXHU4MDEwXHU4MDBkXHU4MDExXHU4MDM2XHU4MGQ2XHU4MGU1XHU4MGRhXHU4MGMzXHU4MGM0XHU4MGNjXHU4MGUxXHU4MGRiXHU4MGNlXHU4MGRlXHU4''@;'; put 'put ''MGU0XHU4MGRkXHU4MWY0XHU4MjIyXHU4MmU3XHU4MzAzXHU4MzA1XHU4MmUzXHU4MmRiXHU4MmU2XHU4MzA0XHU4MmU1XHU4MzAyXHU4MzA5XHU4MmQyXHU4MmQ3XHU4MmYxXHU4MzAxXHU4MmRjXHU4MmQ0XHU4MmQxXHU4MmRlXHU4MmQzXHU4MmRmXHU4MmVmXHU4MzA2XHU4NjUwXHU4Njc5''@;'; put 'put ''XHU4NjdiXHU4NjdhXHU4ODRkXHU4ODZiXHU4OTgxXHU4OWQ0XHU4YTA4XHU4YTAyXHU4YTAzXHU4YzllXHU4Y2EwXHU4ZDc0XHU4ZDczXHU4ZGI0XHU4ZWNkXHU4ZWNjXHU4ZmYwXHU4ZmU2XHU4ZmUyXHU4ZmVhXHU4ZmU1Il0sWyJhZGExIiwiXHU4ZmVkXHU4ZmViXHU4ZmU0XHU4ZmU4XHU5''@;'; put 'put ''MGNhXHU5MGNlXHU5MGMxXHU5MGMzXHU5MTRiXHU5MTRhXHU5MWNkXHU5NTgyXHU5NjUwXHU5NjRiXHU5NjRjXHU5NjRkXHU5NzYyXHU5NzY5XHU5N2NiXHU5N2VkXHU5N2YzXHU5ODAxXHU5OGE4XHU5OGRiXHU5OGRmXHU5OTk2XHU5OTk5XHU0ZTU4XHU0ZWIzXHU1MDBjXHU1MDBkXHU1MDIz''@;'; put 'put ''XHU0ZmVmXHU1MDI2XHU1MDI1XHU0ZmY4XHU1MDI5XHU1MDE2XHU1MDA2XHU1MDNjXHU1MDFmXHU1MDFhXHU1MDEyXHU1MDExXHU0ZmZhXHU1MDAwXHU1MDE0XHU1MDI4XHU0ZmYxXHU1MDIxXHU1MDBiXHU1MDE5XHU1MDE4XHU0ZmYzXHU0ZmVlXHU1MDJkXHU1MDJhXHU0ZmZlXHU1MDJiXHU1''@;'; put 'put ''MDA5XHU1MTdjXHU1MWE0XHU1MWE1XHU1MWEyXHU1MWNkXHU1MWNjXHU1MWM2XHU1MWNiXHU1MjU2XHU1MjVjXHU1MjU0XHU1MjViXHU1MjVkXHU1MzJhXHU1MzdmXHU1MzlmXHU1MzlkXHU1M2RmXHU1NGU4XHU1NTEwXHU1NTAxXHU1NTM3XHU1NGZjXHU1NGU1XHU1NGYyXHU1NTA2XHU1NGZh''@;'; put 'put ''XHU1NTE0XHU1NGU5XHU1NGVkXHU1NGUxXHU1NTA5XHU1NGVlXHU1NGVhIl0sWyJhZTQwIiwiXHU1NGU2XHU1NTI3XHU1NTA3XHU1NGZkXHU1NTBmXHU1NzAzXHU1NzA0XHU1N2MyXHU1N2Q0XHU1N2NiXHU1N2MzXHU1ODA5XHU1OTBmXHU1OTU3XHU1OTU4XHU1OTVhXHU1YTExXHU1YTE4XHU1''@;'; put 'put ''YTFjXHU1YTFmXHU1YTFiXHU1YTEzXHU1OWVjXHU1YTIwXHU1YTIzXHU1YTI5XHU1YTI1XHU1YTBjXHU1YTA5XHU1YjZiXHU1YzU4XHU1YmIwXHU1YmIzXHU1YmI2XHU1YmI0XHU1YmFlXHU1YmI1XHU1YmI5XHU1YmI4XHU1YzA0XHU1YzUxXHU1YzU1XHU1YzUwXHU1Y2VkXHU1Y2ZkXHU1Y2Zi''@;'; put 'put ''XHU1Y2VhXHU1Y2U4XHU1Y2YwXHU1Y2Y2XHU1ZDAxXHU1Y2Y0XHU1ZGVlXHU1ZTJkXHU1ZTJiXHU1ZWFiXHU1ZWFkXHU1ZWE3XHU1ZjMxXHU1ZjkyXHU1ZjkxXHU1ZjkwXHU2MDU5Il0sWyJhZWExIiwiXHU2MDYzXHU2MDY1XHU2MDUwXHU2MDU1XHU2MDZkXHU2MDY5XHU2MDZmXHU2MDg0XHU2''@;'; put 'put ''MDlmXHU2MDlhXHU2MDhkXHU2MDk0XHU2MDhjXHU2MDg1XHU2MDk2XHU2MjQ3XHU2MmYzXHU2MzA4XHU2MmZmXHU2MzRlXHU2MzNlXHU2MzJmXHU2MzU1XHU2MzQyXHU2MzQ2XHU2MzRmXHU2MzQ5XHU2MzNhXHU2MzUwXHU2MzNkXHU2MzJhXHU2MzJiXHU2MzI4XHU2MzRkXHU2MzRjXHU2NTQ4''@;'; put 'put ''XHU2NTQ5XHU2NTk5XHU2NWMxXHU2NWM1XHU2NjQyXHU2NjQ5XHU2NjRmXHU2NjQzXHU2NjUyXHU2NjRjXHU2NjQ1XHU2NjQxXHU2NmY4XHU2NzE0XHU2NzE1XHU2NzE3XHU2ODIxXHU2ODM4XHU2ODQ4XHU2ODQ2XHU2ODUzXHU2ODM5XHU2ODQyXHU2ODU0XHU2ODI5XHU2OGIzXHU2ODE3XHU2''@;'; put 'put ''ODRjXHU2ODUxXHU2ODNkXHU2N2Y0XHU2ODUwXHU2ODQwXHU2ODNjXHU2ODQzXHU2ODJhXHU2ODQ1XHU2ODEzXHU2ODE4XHU2ODQxXHU2YjhhXHU2Yjg5XHU2YmI3XHU2YzIzXHU2YzI3XHU2YzI4XHU2YzI2XHU2YzI0XHU2Y2YwXHU2ZDZhXHU2ZDk1XHU2ZDg4XHU2ZDg3XHU2ZDY2XHU2ZDc4''@;'; put 'put ''XHU2ZDc3XHU2ZDU5XHU2ZDkzIl0sWyJhZjQwIiwiXHU2ZDZjXHU2ZDg5XHU2ZDZlXHU2ZDVhXHU2ZDc0XHU2ZDY5XHU2ZDhjXHU2ZDhhXHU2ZDc5XHU2ZDg1XHU2ZDY1XHU2ZDk0XHU3MGNhXHU3MGQ4XHU3MGU0XHU3MGQ5XHU3MGM4XHU3MGNmXHU3MjM5XHU3Mjc5XHU3MmZjXHU3MmY5XHU3''@;'; put 'put ''MmZkXHU3MmY4XHU3MmY3XHU3Mzg2XHU3M2VkXHU3NDA5XHU3M2VlXHU3M2UwXHU3M2VhXHU3M2RlXHU3NTU0XHU3NTVkXHU3NTVjXHU3NTVhXHU3NTU5XHU3NWJlXHU3NWM1XHU3NWM3XHU3NWIyXHU3NWIzXHU3NWJkXHU3NWJjXHU3NWI5XHU3NWMyXHU3NWI4XHU3NjhiXHU3NmIwXHU3NmNh''@;'; put 'put ''XHU3NmNkXHU3NmNlXHU3NzI5XHU3NzFmXHU3NzIwXHU3NzI4XHU3N2U5XHU3ODMwXHU3ODI3XHU3ODM4XHU3ODFkXHU3ODM0XHU3ODM3Il0sWyJhZmExIiwiXHU3ODI1XHU3ODJkXHU3ODIwXHU3ODFmXHU3ODMyXHU3OTU1XHU3OTUwXHU3OTYwXHU3OTVmXHU3OTU2XHU3OTVlXHU3OTVkXHU3''@;'; put 'put ''OTU3XHU3OTVhXHU3OWU0XHU3OWUzXHU3OWU3XHU3OWRmXHU3OWU2XHU3OWU5XHU3OWQ4XHU3YTg0XHU3YTg4XHU3YWQ5XHU3YjA2XHU3YjExXHU3Yzg5XHU3ZDIxXHU3ZDE3XHU3ZDBiXHU3ZDBhXHU3ZDIwXHU3ZDIyXHU3ZDE0XHU3ZDEwXHU3ZDE1XHU3ZDFhXHU3ZDFjXHU3ZDBkXHU3ZDE5''@;'; put 'put ''XHU3ZDFiXHU3ZjNhXHU3ZjVmXHU3Zjk0XHU3ZmM1XHU3ZmMxXHU4MDA2XHU4MDE4XHU4MDE1XHU4MDE5XHU4MDE3XHU4MDNkXHU4MDNmXHU4MGYxXHU4MTAyXHU4MGYwXHU4MTA1XHU4MGVkXHU4MGY0XHU4MTA2XHU4MGY4XHU4MGYzXHU4MTA4XHU4MGZkXHU4MTBhXHU4MGZjXHU4MGVmXHU4''@;'; put 'put ''MWVkXHU4MWVjXHU4MjAwXHU4MjEwXHU4MjJhXHU4MjJiXHU4MjI4XHU4MjJjXHU4MmJiXHU4MzJiXHU4MzUyXHU4MzU0XHU4MzRhXHU4MzM4XHU4MzUwXHU4MzQ5XHU4MzM1XHU4MzM0XHU4MzRmXHU4MzMyXHU4MzM5XHU4MzM2XHU4MzE3XHU4MzQwXHU4MzMxXHU4MzI4XHU4MzQzIl0sWyJi''@;'; put 'put ''MDQwIiwiXHU4NjU0XHU4NjhhXHU4NmFhXHU4NjkzXHU4NmE0XHU4NmE5XHU4NjhjXHU4NmEzXHU4NjljXHU4ODcwXHU4ODc3XHU4ODgxXHU4ODgyXHU4ODdkXHU4ODc5XHU4YTE4XHU4YTEwXHU4YTBlXHU4YTBjXHU4YTE1XHU4YTBhXHU4YTE3XHU4YTEzXHU4YTE2XHU4YTBmXHU4YTExXHU4''@;'; put 'put ''YzQ4XHU4YzdhXHU4Yzc5XHU4Y2ExXHU4Y2EyXHU4ZDc3XHU4ZWFjXHU4ZWQyXHU4ZWQ0XHU4ZWNmXHU4ZmIxXHU5MDAxXHU5MDA2XHU4ZmY3XHU5MDAwXHU4ZmZhXHU4ZmY0XHU5MDAzXHU4ZmZkXHU5MDA1XHU4ZmY4XHU5MDk1XHU5MGUxXHU5MGRkXHU5MGUyXHU5MTUyXHU5MTRkXHU5MTRj''@;'; put 'put ''XHU5MWQ4XHU5MWRkXHU5MWQ3XHU5MWRjXHU5MWQ5XHU5NTgzXHU5NjYyXHU5NjYzXHU5NjYxIl0sWyJiMGExIiwiXHU5NjViXHU5NjVkXHU5NjY0XHU5NjU4XHU5NjVlXHU5NmJiXHU5OGUyXHU5OWFjXHU5YWE4XHU5YWQ4XHU5YjI1XHU5YjMyXHU5YjNjXHU0ZTdlXHU1MDdhXHU1MDdkXHU1''@;'; put 'put ''MDVjXHU1MDQ3XHU1MDQzXHU1MDRjXHU1MDVhXHU1MDQ5XHU1MDY1XHU1MDc2XHU1MDRlXHU1MDU1XHU1MDc1XHU1MDc0XHU1MDc3XHU1MDRmXHU1MDBmXHU1MDZmXHU1MDZkXHU1MTVjXHU1MTk1XHU1MWYwXHU1MjZhXHU1MjZmXHU1MmQyXHU1MmQ5XHU1MmQ4XHU1MmQ1XHU1MzEwXHU1MzBm''@;'; put 'put ''XHU1MzE5XHU1MzNmXHU1MzQwXHU1MzNlXHU1M2MzXHU2NmZjXHU1NTQ2XHU1NTZhXHU1NTY2XHU1NTQ0XHU1NTVlXHU1NTYxXHU1NTQzXHU1NTRhXHU1NTMxXHU1NTU2XHU1NTRmXHU1NTU1XHU1NTJmXHU1NTY0XHU1NTM4XHU1NTJlXHU1NTVjXHU1NTJjXHU1NTYzXHU1NTMzXHU1NTQxXHU1''@;'; put 'put ''NTU3XHU1NzA4XHU1NzBiXHU1NzA5XHU1N2RmXHU1ODA1XHU1ODBhXHU1ODA2XHU1N2UwXHU1N2U0XHU1N2ZhXHU1ODAyXHU1ODM1XHU1N2Y3XHU1N2Y5XHU1OTIwXHU1OTYyXHU1YTM2XHU1YTQxXHU1YTQ5XHU1YTY2XHU1YTZhXHU1YTQwIl0sWyJiMTQwIiwiXHU1YTNjXHU1YTYyXHU1YTVh''@;'; put 'put ''XHU1YTQ2XHU1YTRhXHU1YjcwXHU1YmM3XHU1YmM1XHU1YmM0XHU1YmMyXHU1YmJmXHU1YmM2XHU1YzA5XHU1YzA4XHU1YzA3XHU1YzYwXHU1YzVjXHU1YzVkXHU1ZDA3XHU1ZDA2XHU1ZDBlXHU1ZDFiXHU1ZDE2XHU1ZDIyXHU1ZDExXHU1ZDI5XHU1ZDE0XHU1ZDE5XHU1ZDI0XHU1ZDI3XHU1''@;'; put 'put ''ZDE3XHU1ZGUyXHU1ZTM4XHU1ZTM2XHU1ZTMzXHU1ZTM3XHU1ZWI3XHU1ZWI4XHU1ZWI2XHU1ZWI1XHU1ZWJlXHU1ZjM1XHU1ZjM3XHU1ZjU3XHU1ZjZjXHU1ZjY5XHU1ZjZiXHU1Zjk3XHU1Zjk5XHU1ZjllXHU1Zjk4XHU1ZmExXHU1ZmEwXHU1ZjljXHU2MDdmXHU2MGEzXHU2MDg5XHU2MGEw''@;'; put 'put ''XHU2MGE4XHU2MGNiXHU2MGI0XHU2MGU2XHU2MGJkIl0sWyJiMWExIiwiXHU2MGM1XHU2MGJiXHU2MGI1XHU2MGRjXHU2MGJjXHU2MGQ4XHU2MGQ1XHU2MGM2XHU2MGRmXHU2MGI4XHU2MGRhXHU2MGM3XHU2MjFhXHU2MjFiXHU2MjQ4XHU2M2EwXHU2M2E3XHU2MzcyXHU2Mzk2XHU2M2EyXHU2''@;'; put 'put ''M2E1XHU2Mzc3XHU2MzY3XHU2Mzk4XHU2M2FhXHU2MzcxXHU2M2E5XHU2Mzg5XHU2MzgzXHU2MzliXHU2MzZiXHU2M2E4XHU2Mzg0XHU2Mzg4XHU2Mzk5XHU2M2ExXHU2M2FjXHU2MzkyXHU2MzhmXHU2MzgwXHU2MzdiXHU2MzY5XHU2MzY4XHU2MzdhXHU2NTVkXHU2NTU2XHU2NTUxXHU2NTU5''@;'; put 'put ''XHU2NTU3XHU1NTVmXHU2NTRmXHU2NTU4XHU2NTU1XHU2NTU0XHU2NTljXHU2NTliXHU2NWFjXHU2NWNmXHU2NWNiXHU2NWNjXHU2NWNlXHU2NjVkXHU2NjVhXHU2NjY0XHU2NjY4XHU2NjY2XHU2NjVlXHU2NmY5XHU1MmQ3XHU2NzFiXHU2ODgxXHU2OGFmXHU2OGEyXHU2ODkzXHU2OGI1XHU2''@;'; put 'put ''ODdmXHU2ODc2XHU2OGIxXHU2OGE3XHU2ODk3XHU2OGIwXHU2ODgzXHU2OGM0XHU2OGFkXHU2ODg2XHU2ODg1XHU2ODk0XHU2ODlkXHU2OGE4XHU2ODlmXHU2OGExXHU2ODgyXHU2YjMyXHU2YmJhIl0sWyJiMjQwIiwiXHU2YmViXHU2YmVjXHU2YzJiXHU2ZDhlXHU2ZGJjXHU2ZGYzXHU2ZGQ5''@;'; put 'put ''XHU2ZGIyXHU2ZGUxXHU2ZGNjXHU2ZGU0XHU2ZGZiXHU2ZGZhXHU2ZTA1XHU2ZGM3XHU2ZGNiXHU2ZGFmXHU2ZGQxXHU2ZGFlXHU2ZGRlXHU2ZGY5XHU2ZGI4XHU2ZGY3XHU2ZGY1XHU2ZGM1XHU2ZGQyXHU2ZTFhXHU2ZGI1XHU2ZGRhXHU2ZGViXHU2ZGQ4XHU2ZGVhXHU2ZGYxXHU2ZGVlXHU2''@;'; put 'put ''ZGU4XHU2ZGM2XHU2ZGM0XHU2ZGFhXHU2ZGVjXHU2ZGJmXHU2ZGU2XHU3MGY5XHU3MTA5XHU3MTBhXHU3MGZkXHU3MGVmXHU3MjNkXHU3MjdkXHU3MjgxXHU3MzFjXHU3MzFiXHU3MzE2XHU3MzEzXHU3MzE5XHU3Mzg3XHU3NDA1XHU3NDBhXHU3NDAzXHU3NDA2XHU3M2ZlXHU3NDBkXHU3NGUw''@;'; put 'put ''XHU3NGY2Il0sWyJiMmExIiwiXHU3NGY3XHU3NTFjXHU3NTIyXHU3NTY1XHU3NTY2XHU3NTYyXHU3NTcwXHU3NThmXHU3NWQ0XHU3NWQ1XHU3NWI1XHU3NWNhXHU3NWNkXHU3NjhlXHU3NmQ0XHU3NmQyXHU3NmRiXHU3NzM3XHU3NzNlXHU3NzNjXHU3NzM2XHU3NzM4XHU3NzNhXHU3ODZiXHU3''@;'; put 'put ''ODQzXHU3ODRlXHU3OTY1XHU3OTY4XHU3OTZkXHU3OWZiXHU3YTkyXHU3YTk1XHU3YjIwXHU3YjI4XHU3YjFiXHU3YjJjXHU3YjI2XHU3YjE5XHU3YjFlXHU3YjJlXHU3YzkyXHU3Yzk3XHU3Yzk1XHU3ZDQ2XHU3ZDQzXHU3ZDcxXHU3ZDJlXHU3ZDM5XHU3ZDNjXHU3ZDQwXHU3ZDMwXHU3ZDMz''@;'; put 'put ''XHU3ZDQ0XHU3ZDJmXHU3ZDQyXHU3ZDMyXHU3ZDMxXHU3ZjNkXHU3ZjllXHU3ZjlhXHU3ZmNjXHU3ZmNlXHU3ZmQyXHU4MDFjXHU4MDRhXHU4MDQ2XHU4MTJmXHU4MTE2XHU4MTIzXHU4MTJiXHU4MTI5XHU4MTMwXHU4MTI0XHU4MjAyXHU4MjM1XHU4MjM3XHU4MjM2XHU4MjM5XHU4MzhlXHU4''@;'; put 'put ''MzllXHU4Mzk4XHU4Mzc4XHU4M2EyXHU4Mzk2XHU4M2JkXHU4M2FiXHU4MzkyXHU4MzhhXHU4MzkzXHU4Mzg5XHU4M2EwXHU4Mzc3XHU4MzdiXHU4MzdjIl0sWyJiMzQwIiwiXHU4Mzg2XHU4M2E3XHU4NjU1XHU1ZjZhXHU4NmM3XHU4NmMwXHU4NmI2XHU4NmM0XHU4NmI1XHU4NmM2XHU4NmNi''@;'; put 'put ''XHU4NmIxXHU4NmFmXHU4NmM5XHU4ODUzXHU4ODllXHU4ODg4XHU4OGFiXHU4ODkyXHU4ODk2XHU4ODhkXHU4ODhiXHU4OTkzXHU4OThmXHU4YTJhXHU4YTFkXHU4YTIzXHU4YTI1XHU4YTMxXHU4YTJkXHU4YTFmXHU4YTFiXHU4YTIyXHU4YzQ5XHU4YzVhXHU4Y2E5XHU4Y2FjXHU4Y2FiXHU4''@;'; put 'put ''Y2E4XHU4Y2FhXHU4Y2E3XHU4ZDY3XHU4ZDY2XHU4ZGJlXHU4ZGJhXHU4ZWRiXHU4ZWRmXHU5MDE5XHU5MDBkXHU5MDFhXHU5MDE3XHU5MDIzXHU5MDFmXHU5MDFkXHU5MDEwXHU5MDE1XHU5MDFlXHU5MDIwXHU5MDBmXHU5MDIyXHU5MDE2XHU5MDFiXHU5MDE0Il0sWyJiM2ExIiwiXHU5MGU4''@;'; put 'put ''XHU5MGVkXHU5MGZkXHU5MTU3XHU5MWNlXHU5MWY1XHU5MWU2XHU5MWUzXHU5MWU3XHU5MWVkXHU5MWU5XHU5NTg5XHU5NjZhXHU5Njc1XHU5NjczXHU5Njc4XHU5NjcwXHU5Njc0XHU5Njc2XHU5Njc3XHU5NjZjXHU5NmMwXHU5NmVhXHU5NmU5XHU3YWUwXHU3YWRmXHU5ODAyXHU5ODAzXHU5''@;'; put 'put ''YjVhXHU5Y2U1XHU5ZTc1XHU5ZTdmXHU5ZWE1XHU5ZWJiXHU1MGEyXHU1MDhkXHU1MDg1XHU1MDk5XHU1MDkxXHU1MDgwXHU1MDk2XHU1MDk4XHU1MDlhXHU2NzAwXHU1MWYxXHU1MjcyXHU1Mjc0XHU1Mjc1XHU1MjY5XHU1MmRlXHU1MmRkXHU1MmRiXHU1MzVhXHU1M2E1XHU1NTdiXHU1NTgw''@;'; put 'put ''XHU1NWE3XHU1NTdjXHU1NThhXHU1NTlkXHU1NTk4XHU1NTgyXHU1NTljXHU1NWFhXHU1NTk0XHU1NTg3XHU1NThiXHU1NTgzXHU1NWIzXHU1NWFlXHU1NTlmXHU1NTNlXHU1NWIyXHU1NTlhXHU1NWJiXHU1NWFjXHU1NWIxXHU1NTdlXHU1NTg5XHU1NWFiXHU1NTk5XHU1NzBkXHU1ODJmXHU1''@;'; put 'put ''ODJhXHU1ODM0XHU1ODI0XHU1ODMwXHU1ODMxXHU1ODIxXHU1ODFkXHU1ODIwXHU1OGY5XHU1OGZhXHU1OTYwIl0sWyJiNDQwIiwiXHU1YTc3XHU1YTlhXHU1YTdmXHU1YTkyXHU1YTliXHU1YWE3XHU1YjczXHU1YjcxXHU1YmQyXHU1YmNjXHU1YmQzXHU1YmQwXHU1YzBhXHU1YzBiXHU1YzMx''@;'; put 'put ''XHU1ZDRjXHU1ZDUwXHU1ZDM0XHU1ZDQ3XHU1ZGZkXHU1ZTQ1XHU1ZTNkXHU1ZTQwXHU1ZTQzXHU1ZTdlXHU1ZWNhXHU1ZWMxXHU1ZWMyXHU1ZWM0XHU1ZjNjXHU1ZjZkXHU1ZmE5XHU1ZmFhXHU1ZmE4XHU2MGQxXHU2MGUxXHU2MGIyXHU2MGI2XHU2MGUwXHU2MTFjXHU2MTIzXHU2MGZhXHU2''@;'; put 'put ''MTE1XHU2MGYwXHU2MGZiXHU2MGY0XHU2MTY4XHU2MGYxXHU2MTBlXHU2MGY2XHU2MTA5XHU2MTAwXHU2MTEyXHU2MjFmXHU2MjQ5XHU2M2EzXHU2MzhjXHU2M2NmXHU2M2MwXHU2M2U5XHU2M2M5XHU2M2M2XHU2M2NkIl0sWyJiNGExIiwiXHU2M2QyXHU2M2UzXHU2M2QwXHU2M2UxXHU2M2Q2''@;'; put 'put ''XHU2M2VkXHU2M2VlXHU2Mzc2XHU2M2Y0XHU2M2VhXHU2M2RiXHU2NDUyXHU2M2RhXHU2M2Y5XHU2NTVlXHU2NTY2XHU2NTYyXHU2NTYzXHU2NTkxXHU2NTkwXHU2NWFmXHU2NjZlXHU2NjcwXHU2Njc0XHU2Njc2XHU2NjZmXHU2NjkxXHU2NjdhXHU2NjdlXHU2Njc3XHU2NmZlXHU2NmZmXHU2''@;'; put 'put ''NzFmXHU2NzFkXHU2OGZhXHU2OGQ1XHU2OGUwXHU2OGQ4XHU2OGQ3XHU2OTA1XHU2OGRmXHU2OGY1XHU2OGVlXHU2OGU3XHU2OGY5XHU2OGQyXHU2OGYyXHU2OGUzXHU2OGNiXHU2OGNkXHU2OTBkXHU2OTEyXHU2OTBlXHU2OGM5XHU2OGRhXHU2OTZlXHU2OGZiXHU2YjNlXHU2YjNhXHU2YjNk''@;'; put 'put ''XHU2Yjk4XHU2Yjk2XHU2YmJjXHU2YmVmXHU2YzJlXHU2YzJmXHU2YzJjXHU2ZTJmXHU2ZTM4XHU2ZTU0XHU2ZTIxXHU2ZTMyXHU2ZTY3XHU2ZTRhXHU2ZTIwXHU2ZTI1XHU2ZTIzXHU2ZTFiXHU2ZTViXHU2ZTU4XHU2ZTI0XHU2ZTU2XHU2ZTZlXHU2ZTJkXHU2ZTI2XHU2ZTZmXHU2ZTM0XHU2''@;'; put 'put ''ZTRkXHU2ZTNhXHU2ZTJjXHU2ZTQzXHU2ZTFkXHU2ZTNlXHU2ZWNiIl0sWyJiNTQwIiwiXHU2ZTg5XHU2ZTE5XHU2ZTRlXHU2ZTYzXHU2ZTQ0XHU2ZTcyXHU2ZTY5XHU2ZTVmXHU3MTE5XHU3MTFhXHU3MTI2XHU3MTMwXHU3MTIxXHU3MTM2XHU3MTZlXHU3MTFjXHU3MjRjXHU3Mjg0XHU3Mjgw''@;'; put 'put ''XHU3MzM2XHU3MzI1XHU3MzM0XHU3MzI5XHU3NDNhXHU3NDJhXHU3NDMzXHU3NDIyXHU3NDI1XHU3NDM1XHU3NDM2XHU3NDM0XHU3NDJmXHU3NDFiXHU3NDI2XHU3NDI4XHU3NTI1XHU3NTI2XHU3NTZiXHU3NTZhXHU3NWUyXHU3NWRiXHU3NWUzXHU3NWQ5XHU3NWQ4XHU3NWRlXHU3NWUwXHU3''@;'; put 'put ''NjdiXHU3NjdjXHU3Njk2XHU3NjkzXHU3NmI0XHU3NmRjXHU3NzRmXHU3N2VkXHU3ODVkXHU3ODZjXHU3ODZmXHU3YTBkXHU3YTA4XHU3YTBiXHU3YTA1XHU3YTAwXHU3YTk4Il0sWyJiNWExIiwiXHU3YTk3XHU3YTk2XHU3YWU1XHU3YWUzXHU3YjQ5XHU3YjU2XHU3YjQ2XHU3YjUwXHU3YjUy''@;'; put 'put ''XHU3YjU0XHU3YjRkXHU3YjRiXHU3YjRmXHU3YjUxXHU3YzlmXHU3Y2E1XHU3ZDVlXHU3ZDUwXHU3ZDY4XHU3ZDU1XHU3ZDJiXHU3ZDZlXHU3ZDcyXHU3ZDYxXHU3ZDY2XHU3ZDYyXHU3ZDcwXHU3ZDczXHU1NTg0XHU3ZmQ0XHU3ZmQ1XHU4MDBiXHU4MDUyXHU4MDg1XHU4MTU1XHU4MTU0XHU4''@;'; put 'put ''MTRiXHU4MTUxXHU4MTRlXHU4MTM5XHU4MTQ2XHU4MTNlXHU4MTRjXHU4MTUzXHU4MTc0XHU4MjEyXHU4MjFjXHU4M2U5XHU4NDAzXHU4M2Y4XHU4NDBkXHU4M2UwXHU4M2M1XHU4NDBiXHU4M2MxXHU4M2VmXHU4M2YxXHU4M2Y0XHU4NDU3XHU4NDBhXHU4M2YwXHU4NDBjXHU4M2NjXHU4M2Zk''@;'; put 'put ''XHU4M2YyXHU4M2NhXHU4NDM4XHU4NDBlXHU4NDA0XHU4M2RjXHU4NDA3XHU4M2Q0XHU4M2RmXHU4NjViXHU4NmRmXHU4NmQ5XHU4NmVkXHU4NmQ0XHU4NmRiXHU4NmU0XHU4NmQwXHU4NmRlXHU4ODU3XHU4OGMxXHU4OGMyXHU4OGIxXHU4OTgzXHU4OTk2XHU4YTNiXHU4YTYwXHU4YTU1XHU4''@;'; put 'put ''YTVlXHU4YTNjXHU4YTQxIl0sWyJiNjQwIiwiXHU4YTU0XHU4YTViXHU4YTUwXHU4YTQ2XHU4YTM0XHU4YTNhXHU4YTM2XHU4YTU2XHU4YzYxXHU4YzgyXHU4Y2FmXHU4Y2JjXHU4Y2IzXHU4Y2JkXHU4Y2MxXHU4Y2JiXHU4Y2MwXHU4Y2I0XHU4Y2I3XHU4Y2I2XHU4Y2JmXHU4Y2I4XHU4ZDhh''@;'; put 'put ''XHU4ZDg1XHU4ZDgxXHU4ZGNlXHU4ZGRkXHU4ZGNiXHU4ZGRhXHU4ZGQxXHU4ZGNjXHU4ZGRiXHU4ZGM2XHU4ZWZiXHU4ZWY4XHU4ZWZjXHU4ZjljXHU5MDJlXHU5MDM1XHU5MDMxXHU5MDM4XHU5MDMyXHU5MDM2XHU5MTAyXHU5MGY1XHU5MTA5XHU5MGZlXHU5MTYzXHU5MTY1XHU5MWNmXHU5''@;'; put 'put ''MjE0XHU5MjE1XHU5MjIzXHU5MjA5XHU5MjFlXHU5MjBkXHU5MjEwXHU5MjA3XHU5MjExXHU5NTk0XHU5NThmXHU5NThiXHU5NTkxIl0sWyJiNmExIiwiXHU5NTkzXHU5NTkyXHU5NThlXHU5NjhhXHU5NjhlXHU5NjhiXHU5NjdkXHU5Njg1XHU5Njg2XHU5NjhkXHU5NjcyXHU5Njg0XHU5NmMx''@;'; put 'put ''XHU5NmM1XHU5NmM0XHU5NmM2XHU5NmM3XHU5NmVmXHU5NmYyXHU5N2NjXHU5ODA1XHU5ODA2XHU5ODA4XHU5OGU3XHU5OGVhXHU5OGVmXHU5OGU5XHU5OGYyXHU5OGVkXHU5OWFlXHU5OWFkXHU5ZWMzXHU5ZWNkXHU5ZWQxXHU0ZTgyXHU1MGFkXHU1MGI1XHU1MGIyXHU1MGIzXHU1MGM1XHU1''@;'; put 'put ''MGJlXHU1MGFjXHU1MGI3XHU1MGJiXHU1MGFmXHU1MGM3XHU1MjdmXHU1Mjc3XHU1MjdkXHU1MmRmXHU1MmU2XHU1MmU0XHU1MmUyXHU1MmUzXHU1MzJmXHU1NWRmXHU1NWU4XHU1NWQzXHU1NWU2XHU1NWNlXHU1NWRjXHU1NWM3XHU1NWQxXHU1NWUzXHU1NWU0XHU1NWVmXHU1NWRhXHU1NWUx''@;'; put 'put ''XHU1NWM1XHU1NWM2XHU1NWU1XHU1NWM5XHU1NzEyXHU1NzEzXHU1ODVlXHU1ODUxXHU1ODU4XHU1ODU3XHU1ODVhXHU1ODU0XHU1ODZiXHU1ODRjXHU1ODZkXHU1ODRhXHU1ODYyXHU1ODUyXHU1ODRiXHU1OTY3XHU1YWMxXHU1YWM5XHU1YWNjXHU1YWJlXHU1YWJkXHU1YWJjIl0sWyJiNzQw''@;'; put 'put ''IiwiXHU1YWIzXHU1YWMyXHU1YWIyXHU1ZDY5XHU1ZDZmXHU1ZTRjXHU1ZTc5XHU1ZWM5XHU1ZWM4XHU1ZjEyXHU1ZjU5XHU1ZmFjXHU1ZmFlXHU2MTFhXHU2MTBmXHU2MTQ4XHU2MTFmXHU2MGYzXHU2MTFiXHU2MGY5XHU2MTAxXHU2MTA4XHU2MTRlXHU2MTRjXHU2MTQ0XHU2MTRkXHU2MTNl''@;'; put 'put ''XHU2MTM0XHU2MTI3XHU2MTBkXHU2MTA2XHU2MTM3XHU2MjIxXHU2MjIyXHU2NDEzXHU2NDNlXHU2NDFlXHU2NDJhXHU2NDJkXHU2NDNkXHU2NDJjXHU2NDBmXHU2NDFjXHU2NDE0XHU2NDBkXHU2NDM2XHU2NDE2XHU2NDE3XHU2NDA2XHU2NTZjXHU2NTlmXHU2NWIwXHU2Njk3XHU2Njg5XHU2''@;'; put 'put ''Njg3XHU2Njg4XHU2Njk2XHU2Njg0XHU2Njk4XHU2NjhkXHU2NzAzXHU2OTk0XHU2OTZkIl0sWyJiN2ExIiwiXHU2OTVhXHU2OTc3XHU2OTYwXHU2OTU0XHU2OTc1XHU2OTMwXHU2OTgyXHU2OTRhXHU2OTY4XHU2OTZiXHU2OTVlXHU2OTUzXHU2OTc5XHU2OTg2XHU2OTVkXHU2OTYzXHU2OTVi''@;'; put 'put ''XHU2YjQ3XHU2YjcyXHU2YmMwXHU2YmJmXHU2YmQzXHU2YmZkXHU2ZWEyXHU2ZWFmXHU2ZWQzXHU2ZWI2XHU2ZWMyXHU2ZTkwXHU2ZTlkXHU2ZWM3XHU2ZWM1XHU2ZWE1XHU2ZTk4XHU2ZWJjXHU2ZWJhXHU2ZWFiXHU2ZWQxXHU2ZTk2XHU2ZTljXHU2ZWM0XHU2ZWQ0XHU2ZWFhXHU2ZWE3XHU2''@;'; put 'put ''ZWI0XHU3MTRlXHU3MTU5XHU3MTY5XHU3MTY0XHU3MTQ5XHU3MTY3XHU3MTVjXHU3MTZjXHU3MTY2XHU3MTRjXHU3MTY1XHU3MTVlXHU3MTQ2XHU3MTY4XHU3MTU2XHU3MjNhXHU3MjUyXHU3MzM3XHU3MzQ1XHU3MzNmXHU3MzNlXHU3NDZmXHU3NDVhXHU3NDU1XHU3NDVmXHU3NDVlXHU3NDQx''@;'; put 'put ''XHU3NDNmXHU3NDU5XHU3NDViXHU3NDVjXHU3NTc2XHU3NTc4XHU3NjAwXHU3NWYwXHU3NjAxXHU3NWYyXHU3NWYxXHU3NWZhXHU3NWZmXHU3NWY0XHU3NWYzXHU3NmRlXHU3NmRmXHU3NzViXHU3NzZiXHU3NzY2XHU3NzVlXHU3NzYzIl0sWyJiODQwIiwiXHU3Nzc5XHU3NzZhXHU3NzZjXHU3''@;'; put 'put ''NzVjXHU3NzY1XHU3NzY4XHU3NzYyXHU3N2VlXHU3ODhlXHU3OGIwXHU3ODk3XHU3ODk4XHU3ODhjXHU3ODg5XHU3ODdjXHU3ODkxXHU3ODkzXHU3ODdmXHU3OTdhXHU3OTdmXHU3OTgxXHU4NDJjXHU3OWJkXHU3YTFjXHU3YTFhXHU3YTIwXHU3YTE0XHU3YTFmXHU3YTFlXHU3YTlmXHU3YWEw''@;'; put 'put ''XHU3Yjc3XHU3YmMwXHU3YjYwXHU3YjZlXHU3YjY3XHU3Y2IxXHU3Y2IzXHU3Y2I1XHU3ZDkzXHU3ZDc5XHU3ZDkxXHU3ZDgxXHU3ZDhmXHU3ZDViXHU3ZjZlXHU3ZjY5XHU3ZjZhXHU3ZjcyXHU3ZmE5XHU3ZmE4XHU3ZmE0XHU4MDU2XHU4MDU4XHU4MDg2XHU4MDg0XHU4MTcxXHU4MTcwXHU4''@;'; put 'put ''MTc4XHU4MTY1XHU4MTZlXHU4MTczXHU4MTZiIl0sWyJiOGExIiwiXHU4MTc5XHU4MTdhXHU4MTY2XHU4MjA1XHU4MjQ3XHU4NDgyXHU4NDc3XHU4NDNkXHU4NDMxXHU4NDc1XHU4NDY2XHU4NDZiXHU4NDQ5XHU4NDZjXHU4NDViXHU4NDNjXHU4NDM1XHU4NDYxXHU4NDYzXHU4NDY5XHU4NDZk''@;'; put 'put ''XHU4NDQ2XHU4NjVlXHU4NjVjXHU4NjVmXHU4NmY5XHU4NzEzXHU4NzA4XHU4NzA3XHU4NzAwXHU4NmZlXHU4NmZiXHU4NzAyXHU4NzAzXHU4NzA2XHU4NzBhXHU4ODU5XHU4OGRmXHU4OGQ0XHU4OGQ5XHU4OGRjXHU4OGQ4XHU4OGRkXHU4OGUxXHU4OGNhXHU4OGQ1XHU4OGQyXHU4OTljXHU4''@;'; put 'put ''OWUzXHU4YTZiXHU4YTcyXHU4YTczXHU4YTY2XHU4YTY5XHU4YTcwXHU4YTg3XHU4YTdjXHU4YTYzXHU4YWEwXHU4YTcxXHU4YTg1XHU4YTZkXHU4YTYyXHU4YTZlXHU4YTZjXHU4YTc5XHU4YTdiXHU4YTNlXHU4YTY4XHU4YzYyXHU4YzhhXHU4Yzg5XHU4Y2NhXHU4Y2M3XHU4Y2M4XHU4Y2M0''@;'; put 'put ''XHU4Y2IyXHU4Y2MzXHU4Y2MyXHU4Y2M1XHU4ZGUxXHU4ZGRmXHU4ZGU4XHU4ZGVmXHU4ZGYzXHU4ZGZhXHU4ZGVhXHU4ZGU0XHU4ZGU2XHU4ZWIyXHU4ZjAzXHU4ZjA5XHU4ZWZlXHU4ZjBhIl0sWyJiOTQwIiwiXHU4ZjlmXHU4ZmIyXHU5MDRiXHU5MDRhXHU5MDUzXHU5MDQyXHU5MDU0XHU5''@;'; put 'put ''MDNjXHU5MDU1XHU5MDUwXHU5MDQ3XHU5MDRmXHU5MDRlXHU5MDRkXHU5MDUxXHU5MDNlXHU5MDQxXHU5MTEyXHU5MTE3XHU5MTZjXHU5MTZhXHU5MTY5XHU5MWM5XHU5MjM3XHU5MjU3XHU5MjM4XHU5MjNkXHU5MjQwXHU5MjNlXHU5MjViXHU5MjRiXHU5MjY0XHU5MjUxXHU5MjM0XHU5MjQ5''@;'; put 'put ''XHU5MjRkXHU5MjQ1XHU5MjM5XHU5MjNmXHU5MjVhXHU5NTk4XHU5Njk4XHU5Njk0XHU5Njk1XHU5NmNkXHU5NmNiXHU5NmM5XHU5NmNhXHU5NmY3XHU5NmZiXHU5NmY5XHU5NmY2XHU5NzU2XHU5Nzc0XHU5Nzc2XHU5ODEwXHU5ODExXHU5ODEzXHU5ODBhXHU5ODEyXHU5ODBjXHU5OGZjXHU5''@;'; put 'put ''OGY0Il0sWyJiOWExIiwiXHU5OGZkXHU5OGZlXHU5OWIzXHU5OWIxXHU5OWI0XHU5YWUxXHU5Y2U5XHU5ZTgyXHU5ZjBlXHU5ZjEzXHU5ZjIwXHU1MGU3XHU1MGVlXHU1MGU1XHU1MGQ2XHU1MGVkXHU1MGRhXHU1MGQ1XHU1MGNmXHU1MGQxXHU1MGYxXHU1MGNlXHU1MGU5XHU1MTYyXHU1MWYz''@;'; put 'put ''XHU1MjgzXHU1MjgyXHU1MzMxXHU1M2FkXHU1NWZlXHU1NjAwXHU1NjFiXHU1NjE3XHU1NWZkXHU1NjE0XHU1NjA2XHU1NjA5XHU1NjBkXHU1NjBlXHU1NWY3XHU1NjE2XHU1NjFmXHU1NjA4XHU1NjEwXHU1NWY2XHU1NzE4XHU1NzE2XHU1ODc1XHU1ODdlXHU1ODgzXHU1ODkzXHU1ODhhXHU1''@;'; put 'put ''ODc5XHU1ODg1XHU1ODdkXHU1OGZkXHU1OTI1XHU1OTIyXHU1OTI0XHU1OTZhXHU1OTY5XHU1YWUxXHU1YWU2XHU1YWU5XHU1YWQ3XHU1YWQ2XHU1YWQ4XHU1YWUzXHU1Yjc1XHU1YmRlXHU1YmU3XHU1YmUxXHU1YmU1XHU1YmU2XHU1YmU4XHU1YmUyXHU1YmU0XHU1YmRmXHU1YzBkXHU1YzYy''@;'; put 'put ''XHU1ZDg0XHU1ZDg3XHU1ZTViXHU1ZTYzXHU1ZTU1XHU1ZTU3XHU1ZTU0XHU1ZWQzXHU1ZWQ2XHU1ZjBhXHU1ZjQ2XHU1ZjcwXHU1ZmI5XHU2MTQ3Il0sWyJiYTQwIiwiXHU2MTNmXHU2MTRiXHU2MTc3XHU2MTYyXHU2MTYzXHU2MTVmXHU2MTVhXHU2MTU4XHU2MTc1XHU2MjJhXHU2NDg3XHU2''@;'; put 'put ''NDU4XHU2NDU0XHU2NGE0XHU2NDc4XHU2NDVmXHU2NDdhXHU2NDUxXHU2NDY3XHU2NDM0XHU2NDZkXHU2NDdiXHU2NTcyXHU2NWExXHU2NWQ3XHU2NWQ2XHU2NmEyXHU2NmE4XHU2NjlkXHU2OTljXHU2OWE4XHU2OTk1XHU2OWMxXHU2OWFlXHU2OWQzXHU2OWNiXHU2OTliXHU2OWI3XHU2OWJi''@;'; put 'put ''XHU2OWFiXHU2OWI0XHU2OWQwXHU2OWNkXHU2OWFkXHU2OWNjXHU2OWE2XHU2OWMzXHU2OWEzXHU2YjQ5XHU2YjRjXHU2YzMzXHU2ZjMzXHU2ZjE0XHU2ZWZlXHU2ZjEzXHU2ZWY0XHU2ZjI5XHU2ZjNlXHU2ZjIwXHU2ZjJjXHU2ZjBmXHU2ZjAyXHU2ZjIyIl0sWyJiYWExIiwiXHU2ZWZmXHU2''@;'; put 'put ''ZWVmXHU2ZjA2XHU2ZjMxXHU2ZjM4XHU2ZjMyXHU2ZjIzXHU2ZjE1XHU2ZjJiXHU2ZjJmXHU2Zjg4XHU2ZjJhXHU2ZWVjXHU2ZjAxXHU2ZWYyXHU2ZWNjXHU2ZWY3XHU3MTk0XHU3MTk5XHU3MTdkXHU3MThhXHU3MTg0XHU3MTkyXHU3MjNlXHU3MjkyXHU3Mjk2XHU3MzQ0XHU3MzUwXHU3NDY0''@;'; put 'put ''XHU3NDYzXHU3NDZhXHU3NDcwXHU3NDZkXHU3NTA0XHU3NTkxXHU3NjI3XHU3NjBkXHU3NjBiXHU3NjA5XHU3NjEzXHU3NmUxXHU3NmUzXHU3Nzg0XHU3NzdkXHU3NzdmXHU3NzYxXHU3OGMxXHU3ODlmXHU3OGE3XHU3OGIzXHU3OGE5XHU3OGEzXHU3OThlXHU3OThmXHU3OThkXHU3YTJlXHU3''@;'; put 'put ''YTMxXHU3YWFhXHU3YWE5XHU3YWVkXHU3YWVmXHU3YmExXHU3Yjk1XHU3YjhiXHU3Yjc1XHU3Yjk3XHU3YjlkXHU3Yjk0XHU3YjhmXHU3YmI4XHU3Yjg3XHU3Yjg0XHU3Y2I5XHU3Y2JkXHU3Y2JlXHU3ZGJiXHU3ZGIwXHU3ZDljXHU3ZGJkXHU3ZGJlXHU3ZGEwXHU3ZGNhXHU3ZGI0XHU3ZGIy''@;'; put 'put ''XHU3ZGIxXHU3ZGJhXHU3ZGEyXHU3ZGJmXHU3ZGI1XHU3ZGI4XHU3ZGFkXHU3ZGQyXHU3ZGM3XHU3ZGFjIl0sWyJiYjQwIiwiXHU3ZjcwXHU3ZmUwXHU3ZmUxXHU3ZmRmXHU4MDVlXHU4MDVhXHU4MDg3XHU4MTUwXHU4MTgwXHU4MThmXHU4MTg4XHU4MThhXHU4MTdmXHU4MTgyXHU4MWU3XHU4''@;'; put 'put ''MWZhXHU4MjA3XHU4MjE0XHU4MjFlXHU4MjRiXHU4NGM5XHU4NGJmXHU4NGM2XHU4NGM0XHU4NDk5XHU4NDllXHU4NGIyXHU4NDljXHU4NGNiXHU4NGI4XHU4NGMwXHU4NGQzXHU4NDkwXHU4NGJjXHU4NGQxXHU4NGNhXHU4NzNmXHU4NzFjXHU4NzNiXHU4NzIyXHU4NzI1XHU4NzM0XHU4NzE4''@;'; put 'put ''XHU4NzU1XHU4NzM3XHU4NzI5XHU4OGYzXHU4OTAyXHU4OGY0XHU4OGY5XHU4OGY4XHU4OGZkXHU4OGU4XHU4OTFhXHU4OGVmXHU4YWE2XHU4YThjXHU4YTllXHU4YWEzXHU4YThkXHU4YWExXHU4YTkzXHU4YWE0Il0sWyJiYmExIiwiXHU4YWFhXHU4YWE1XHU4YWE4XHU4YTk4XHU4YTkxXHU4''@;'; put 'put ''YTlhXHU4YWE3XHU4YzZhXHU4YzhkXHU4YzhjXHU4Y2QzXHU4Y2QxXHU4Y2QyXHU4ZDZiXHU4ZDk5XHU4ZDk1XHU4ZGZjXHU4ZjE0XHU4ZjEyXHU4ZjE1XHU4ZjEzXHU4ZmEzXHU5MDYwXHU5MDU4XHU5MDVjXHU5MDYzXHU5MDU5XHU5MDVlXHU5MDYyXHU5MDVkXHU5MDViXHU5MTE5XHU5MTE4''@;'; put 'put ''XHU5MTFlXHU5MTc1XHU5MTc4XHU5MTc3XHU5MTc0XHU5Mjc4XHU5MjgwXHU5Mjg1XHU5Mjk4XHU5Mjk2XHU5MjdiXHU5MjkzXHU5MjljXHU5MmE4XHU5MjdjXHU5MjkxXHU5NWExXHU5NWE4XHU5NWE5XHU5NWEzXHU5NWE1XHU5NWE0XHU5Njk5XHU5NjljXHU5NjliXHU5NmNjXHU5NmQyXHU5''@;'; put 'put ''NzAwXHU5NzdjXHU5Nzg1XHU5N2Y2XHU5ODE3XHU5ODE4XHU5OGFmXHU5OGIxXHU5OTAzXHU5OTA1XHU5OTBjXHU5OTA5XHU5OWMxXHU5YWFmXHU5YWIwXHU5YWU2XHU5YjQxXHU5YjQyXHU5Y2Y0XHU5Y2Y2XHU5Y2YzXHU5ZWJjXHU5ZjNiXHU5ZjRhXHU1MTA0XHU1MTAwXHU1MGZiXHU1MGY1''@;'; put 'put ''XHU1MGY5XHU1MTAyXHU1MTA4XHU1MTA5XHU1MTA1XHU1MWRjIl0sWyJiYzQwIiwiXHU1Mjg3XHU1Mjg4XHU1Mjg5XHU1MjhkXHU1MjhhXHU1MmYwXHU1M2IyXHU1NjJlXHU1NjNiXHU1NjM5XHU1NjMyXHU1NjNmXHU1NjM0XHU1NjI5XHU1NjUzXHU1NjRlXHU1NjU3XHU1Njc0XHU1NjM2XHU1''@;'; put 'put ''NjJmXHU1NjMwXHU1ODgwXHU1ODlmXHU1ODllXHU1OGIzXHU1ODljXHU1OGFlXHU1OGE5XHU1OGE2XHU1OTZkXHU1YjA5XHU1YWZiXHU1YjBiXHU1YWY1XHU1YjBjXHU1YjA4XHU1YmVlXHU1YmVjXHU1YmU5XHU1YmViXHU1YzY0XHU1YzY1XHU1ZDlkXHU1ZDk0XHU1ZTYyXHU1ZTVmXHU1ZTYx''@;'; put 'put ''XHU1ZWUyXHU1ZWRhXHU1ZWRmXHU1ZWRkXHU1ZWUzXHU1ZWUwXHU1ZjQ4XHU1ZjcxXHU1ZmI3XHU1ZmI1XHU2MTc2XHU2MTY3XHU2MTZlXHU2MTVkXHU2MTU1XHU2MTgyIl0sWyJiY2ExIiwiXHU2MTdjXHU2MTcwXHU2MTZiXHU2MTdlXHU2MWE3XHU2MTkwXHU2MWFiXHU2MThlXHU2MWFjXHU2''@;'; put 'put ''MTlhXHU2MWE0XHU2MTk0XHU2MWFlXHU2MjJlXHU2NDY5XHU2NDZmXHU2NDc5XHU2NDllXHU2NGIyXHU2NDg4XHU2NDkwXHU2NGIwXHU2NGE1XHU2NDkzXHU2NDk1XHU2NGE5XHU2NDkyXHU2NGFlXHU2NGFkXHU2NGFiXHU2NDlhXHU2NGFjXHU2NDk5XHU2NGEyXHU2NGIzXHU2NTc1XHU2NTc3''@;'; put 'put ''XHU2NTc4XHU2NmFlXHU2NmFiXHU2NmI0XHU2NmIxXHU2YTIzXHU2YTFmXHU2OWU4XHU2YTAxXHU2YTFlXHU2YTE5XHU2OWZkXHU2YTIxXHU2YTEzXHU2YTBhXHU2OWYzXHU2YTAyXHU2YTA1XHU2OWVkXHU2YTExXHU2YjUwXHU2YjRlXHU2YmE0XHU2YmM1XHU2YmM2XHU2ZjNmXHU2ZjdjXHU2''@;'; put 'put ''Zjg0XHU2ZjUxXHU2ZjY2XHU2ZjU0XHU2Zjg2XHU2ZjZkXHU2ZjViXHU2Zjc4XHU2ZjZlXHU2ZjhlXHU2ZjdhXHU2ZjcwXHU2ZjY0XHU2Zjk3XHU2ZjU4XHU2ZWQ1XHU2ZjZmXHU2ZjYwXHU2ZjVmXHU3MTlmXHU3MWFjXHU3MWIxXHU3MWE4XHU3MjU2XHU3MjliXHU3MzRlXHU3MzU3XHU3NDY5''@;'; put 'put ''XHU3NDhiXHU3NDgzIl0sWyJiZDQwIiwiXHU3NDdlXHU3NDgwXHU3NTdmXHU3NjIwXHU3NjI5XHU3NjFmXHU3NjI0XHU3NjI2XHU3NjIxXHU3NjIyXHU3NjlhXHU3NmJhXHU3NmU0XHU3NzhlXHU3Nzg3XHU3NzhjXHU3NzkxXHU3NzhiXHU3OGNiXHU3OGM1XHU3OGJhXHU3OGNhXHU3OGJlXHU3''@;'; put 'put ''OGQ1XHU3OGJjXHU3OGQwXHU3YTNmXHU3YTNjXHU3YTQwXHU3YTNkXHU3YTM3XHU3YTNiXHU3YWFmXHU3YWFlXHU3YmFkXHU3YmIxXHU3YmM0XHU3YmI0XHU3YmM2XHU3YmM3XHU3YmMxXHU3YmEwXHU3YmNjXHU3Y2NhXHU3ZGUwXHU3ZGY0XHU3ZGVmXHU3ZGZiXHU3ZGQ4XHU3ZGVjXHU3ZGRk''@;'; put 'put ''XHU3ZGU4XHU3ZGUzXHU3ZGRhXHU3ZGRlXHU3ZGU5XHU3ZDllXHU3ZGQ5XHU3ZGYyXHU3ZGY5XHU3Zjc1XHU3Zjc3XHU3ZmFmIl0sWyJiZGExIiwiXHU3ZmU5XHU4MDI2XHU4MTliXHU4MTljXHU4MTlkXHU4MWEwXHU4MTlhXHU4MTk4XHU4NTE3XHU4NTNkXHU4NTFhXHU4NGVlXHU4NTJjXHU4''@;'; put 'put ''NTJkXHU4NTEzXHU4NTExXHU4NTIzXHU4NTIxXHU4NTE0XHU4NGVjXHU4NTI1XHU4NGZmXHU4NTA2XHU4NzgyXHU4Nzc0XHU4Nzc2XHU4NzYwXHU4NzY2XHU4Nzc4XHU4NzY4XHU4NzU5XHU4NzU3XHU4NzRjXHU4NzUzXHU4ODViXHU4ODVkXHU4OTEwXHU4OTA3XHU4OTEyXHU4OTEzXHU4OTE1''@;'; put 'put ''XHU4OTBhXHU4YWJjXHU4YWQyXHU4YWM3XHU4YWM0XHU4YTk1XHU4YWNiXHU4YWY4XHU4YWIyXHU4YWM5XHU4YWMyXHU4YWJmXHU4YWIwXHU4YWQ2XHU4YWNkXHU4YWI2XHU4YWI5XHU4YWRiXHU4YzRjXHU4YzRlXHU4YzZjXHU4Y2UwXHU4Y2RlXHU4Y2U2XHU4Y2U0XHU4Y2VjXHU4Y2VkXHU4''@;'; put 'put ''Y2UyXHU4Y2UzXHU4Y2RjXHU4Y2VhXHU4Y2UxXHU4ZDZkXHU4ZDlmXHU4ZGEzXHU4ZTJiXHU4ZTEwXHU4ZTFkXHU4ZTIyXHU4ZTBmXHU4ZTI5XHU4ZTFmXHU4ZTIxXHU4ZTFlXHU4ZWJhXHU4ZjFkXHU4ZjFiXHU4ZjFmXHU4ZjI5XHU4ZjI2XHU4ZjJhXHU4ZjFjXHU4ZjFlIl0sWyJiZTQwIiwi''@;'; put 'put ''XHU4ZjI1XHU5MDY5XHU5MDZlXHU5MDY4XHU5MDZkXHU5MDc3XHU5MTMwXHU5MTJkXHU5MTI3XHU5MTMxXHU5MTg3XHU5MTg5XHU5MThiXHU5MTgzXHU5MmM1XHU5MmJiXHU5MmI3XHU5MmVhXHU5MmFjXHU5MmU0XHU5MmMxXHU5MmIzXHU5MmJjXHU5MmQyXHU5MmM3XHU5MmYwXHU5MmIyXHU5''@;'; put 'put ''NWFkXHU5NWIxXHU5NzA0XHU5NzA2XHU5NzA3XHU5NzA5XHU5NzYwXHU5NzhkXHU5NzhiXHU5NzhmXHU5ODIxXHU5ODJiXHU5ODFjXHU5OGIzXHU5OTBhXHU5OTEzXHU5OTEyXHU5OTE4XHU5OWRkXHU5OWQwXHU5OWRmXHU5OWRiXHU5OWQxXHU5OWQ1XHU5OWQyXHU5OWQ5XHU5YWI3XHU5YWVl''@;'; put 'put ''XHU5YWVmXHU5YjI3XHU5YjQ1XHU5YjQ0XHU5Yjc3XHU5YjZmXHU5ZDA2XHU5ZDA5Il0sWyJiZWExIiwiXHU5ZDAzXHU5ZWE5XHU5ZWJlXHU5ZWNlXHU1OGE4XHU5ZjUyXHU1MTEyXHU1MTE4XHU1MTE0XHU1MTEwXHU1MTE1XHU1MTgwXHU1MWFhXHU1MWRkXHU1MjkxXHU1MjkzXHU1MmYzXHU1''@;'; put 'put ''NjU5XHU1NjZiXHU1Njc5XHU1NjY5XHU1NjY0XHU1Njc4XHU1NjZhXHU1NjY4XHU1NjY1XHU1NjcxXHU1NjZmXHU1NjZjXHU1NjYyXHU1Njc2XHU1OGMxXHU1OGJlXHU1OGM3XHU1OGM1XHU1OTZlXHU1YjFkXHU1YjM0XHU1Yjc4XHU1YmYwXHU1YzBlXHU1ZjRhXHU2MWIyXHU2MTkxXHU2MWE5''@;'; put 'put ''XHU2MThhXHU2MWNkXHU2MWI2XHU2MWJlXHU2MWNhXHU2MWM4XHU2MjMwXHU2NGM1XHU2NGMxXHU2NGNiXHU2NGJiXHU2NGJjXHU2NGRhXHU2NGM0XHU2NGM3XHU2NGMyXHU2NGNkXHU2NGJmXHU2NGQyXHU2NGQ0XHU2NGJlXHU2NTc0XHU2NmM2XHU2NmM5XHU2NmI5XHU2NmM0XHU2NmM3XHU2''@;'; put 'put ''NmI4XHU2YTNkXHU2YTM4XHU2YTNhXHU2YTU5XHU2YTZiXHU2YTU4XHU2YTM5XHU2YTQ0XHU2YTYyXHU2YTYxXHU2YTRiXHU2YTQ3XHU2YTM1XHU2YTVmXHU2YTQ4XHU2YjU5XHU2Yjc3XHU2YzA1XHU2ZmMyXHU2ZmIxXHU2ZmExIl0sWyJiZjQwIiwiXHU2ZmMzXHU2ZmE0XHU2ZmMxXHU2ZmE3''@;'; put 'put ''XHU2ZmIzXHU2ZmMwXHU2ZmI5XHU2ZmI2XHU2ZmE2XHU2ZmEwXHU2ZmI0XHU3MWJlXHU3MWM5XHU3MWQwXHU3MWQyXHU3MWM4XHU3MWQ1XHU3MWI5XHU3MWNlXHU3MWQ5XHU3MWRjXHU3MWMzXHU3MWM0XHU3MzY4XHU3NDljXHU3NGEzXHU3NDk4XHU3NDlmXHU3NDllXHU3NGUyXHU3NTBjXHU3''@;'; put 'put ''NTBkXHU3NjM0XHU3NjM4XHU3NjNhXHU3NmU3XHU3NmU1XHU3N2EwXHU3NzllXHU3NzlmXHU3N2E1XHU3OGU4XHU3OGRhXHU3OGVjXHU3OGU3XHU3OWE2XHU3YTRkXHU3YTRlXHU3YTQ2XHU3YTRjXHU3YTRiXHU3YWJhXHU3YmQ5XHU3YzExXHU3YmM5XHU3YmU0XHU3YmRiXHU3YmUxXHU3YmU5''@;'; put 'put ''XHU3YmU2XHU3Y2Q1XHU3Y2Q2XHU3ZTBhIl0sWyJiZmExIiwiXHU3ZTExXHU3ZTA4XHU3ZTFiXHU3ZTIzXHU3ZTFlXHU3ZTFkXHU3ZTA5XHU3ZTEwXHU3Zjc5XHU3ZmIyXHU3ZmYwXHU3ZmYxXHU3ZmVlXHU4MDI4XHU4MWIzXHU4MWE5XHU4MWE4XHU4MWZiXHU4MjA4XHU4MjU4XHU4MjU5XHU4''@;'; put 'put ''NTRhXHU4NTU5XHU4NTQ4XHU4NTY4XHU4NTY5XHU4NTQzXHU4NTQ5XHU4NTZkXHU4NTZhXHU4NTVlXHU4NzgzXHU4NzlmXHU4NzllXHU4N2EyXHU4NzhkXHU4ODYxXHU4OTJhXHU4OTMyXHU4OTI1XHU4OTJiXHU4OTIxXHU4OWFhXHU4OWE2XHU4YWU2XHU4YWZhXHU4YWViXHU4YWYxXHU4YjAw''@;'; put 'put ''XHU4YWRjXHU4YWU3XHU4YWVlXHU4YWZlXHU4YjAxXHU4YjAyXHU4YWY3XHU4YWVkXHU4YWYzXHU4YWY2XHU4YWZjXHU4YzZiXHU4YzZkXHU4YzkzXHU4Y2Y0XHU4ZTQ0XHU4ZTMxXHU4ZTM0XHU4ZTQyXHU4ZTM5XHU4ZTM1XHU4ZjNiXHU4ZjJmXHU4ZjM4XHU4ZjMzXHU4ZmE4XHU4ZmE2XHU5''@;'; put 'put ''MDc1XHU5MDc0XHU5MDc4XHU5MDcyXHU5MDdjXHU5MDdhXHU5MTM0XHU5MTkyXHU5MzIwXHU5MzM2XHU5MmY4XHU5MzMzXHU5MzJmXHU5MzIyXHU5MmZjXHU5MzJiXHU5MzA0XHU5MzFhIl0sWyJjMDQwIiwiXHU5MzEwXHU5MzI2XHU5MzIxXHU5MzE1XHU5MzJlXHU5MzE5XHU5NWJiXHU5NmE3''@;'; put 'put ''XHU5NmE4XHU5NmFhXHU5NmQ1XHU5NzBlXHU5NzExXHU5NzE2XHU5NzBkXHU5NzEzXHU5NzBmXHU5NzViXHU5NzVjXHU5NzY2XHU5Nzk4XHU5ODMwXHU5ODM4XHU5ODNiXHU5ODM3XHU5ODJkXHU5ODM5XHU5ODI0XHU5OTEwXHU5OTI4XHU5OTFlXHU5OTFiXHU5OTIxXHU5OTFhXHU5OWVkXHU5''@;'; put 'put ''OWUyXHU5OWYxXHU5YWI4XHU5YWJjXHU5YWZiXHU5YWVkXHU5YjI4XHU5YjkxXHU5ZDE1XHU5ZDIzXHU5ZDI2XHU5ZDI4XHU5ZDEyXHU5ZDFiXHU5ZWQ4XHU5ZWQ0XHU5ZjhkXHU5ZjljXHU1MTJhXHU1MTFmXHU1MTIxXHU1MTMyXHU1MmY1XHU1NjhlXHU1NjgwXHU1NjkwXHU1Njg1XHU1Njg3''@;'; put 'put ''Il0sWyJjMGExIiwiXHU1NjhmXHU1OGQ1XHU1OGQzXHU1OGQxXHU1OGNlXHU1YjMwXHU1YjJhXHU1YjI0XHU1YjdhXHU1YzM3XHU1YzY4XHU1ZGJjXHU1ZGJhXHU1ZGJkXHU1ZGI4XHU1ZTZiXHU1ZjRjXHU1ZmJkXHU2MWM5XHU2MWMyXHU2MWM3XHU2MWU2XHU2MWNiXHU2MjMyXHU2MjM0XHU2''@;'; put 'put ''NGNlXHU2NGNhXHU2NGQ4XHU2NGUwXHU2NGYwXHU2NGU2XHU2NGVjXHU2NGYxXHU2NGUyXHU2NGVkXHU2NTgyXHU2NTgzXHU2NmQ5XHU2NmQ2XHU2YTgwXHU2YTk0XHU2YTg0XHU2YWEyXHU2YTljXHU2YWRiXHU2YWEzXHU2YTdlXHU2YTk3XHU2YTkwXHU2YWEwXHU2YjVjXHU2YmFlXHU2YmRh''@;'; put 'put ''XHU2YzA4XHU2ZmQ4XHU2ZmYxXHU2ZmRmXHU2ZmUwXHU2ZmRiXHU2ZmU0XHU2ZmViXHU2ZmVmXHU2ZjgwXHU2ZmVjXHU2ZmUxXHU2ZmU5XHU2ZmQ1XHU2ZmVlXHU2ZmYwXHU3MWU3XHU3MWRmXHU3MWVlXHU3MWU2XHU3MWU1XHU3MWVkXHU3MWVjXHU3MWY0XHU3MWUwXHU3MjM1XHU3MjQ2XHU3''@;'; put 'put ''MzcwXHU3MzcyXHU3NGE5XHU3NGIwXHU3NGE2XHU3NGE4XHU3NjQ2XHU3NjQyXHU3NjRjXHU3NmVhXHU3N2IzXHU3N2FhXHU3N2IwXHU3N2FjIl0sWyJjMTQwIiwiXHU3N2E3XHU3N2FkXHU3N2VmXHU3OGY3XHU3OGZhXHU3OGY0XHU3OGVmXHU3OTAxXHU3OWE3XHU3OWFhXHU3YTU3XHU3YWJm''@;'; put 'put ''XHU3YzA3XHU3YzBkXHU3YmZlXHU3YmY3XHU3YzBjXHU3YmUwXHU3Y2UwXHU3Y2RjXHU3Y2RlXHU3Y2UyXHU3Y2RmXHU3Y2Q5XHU3Y2RkXHU3ZTJlXHU3ZTNlXHU3ZTQ2XHU3ZTM3XHU3ZTMyXHU3ZTQzXHU3ZTJiXHU3ZTNkXHU3ZTMxXHU3ZTQ1XHU3ZTQxXHU3ZTM0XHU3ZTM5XHU3ZTQ4XHU3''@;'; put 'put ''ZTM1XHU3ZTNmXHU3ZTJmXHU3ZjQ0XHU3ZmYzXHU3ZmZjXHU4MDcxXHU4MDcyXHU4MDcwXHU4MDZmXHU4MDczXHU4MWM2XHU4MWMzXHU4MWJhXHU4MWMyXHU4MWMwXHU4MWJmXHU4MWJkXHU4MWM5XHU4MWJlXHU4MWU4XHU4MjA5XHU4MjcxXHU4NWFhIl0sWyJjMWExIiwiXHU4NTg0XHU4NTdl''@;'; put 'put ''XHU4NTljXHU4NTkxXHU4NTk0XHU4NWFmXHU4NTliXHU4NTg3XHU4NWE4XHU4NThhXHU4NjY3XHU4N2MwXHU4N2QxXHU4N2IzXHU4N2QyXHU4N2M2XHU4N2FiXHU4N2JiXHU4N2JhXHU4N2M4XHU4N2NiXHU4OTNiXHU4OTM2XHU4OTQ0XHU4OTM4XHU4OTNkXHU4OWFjXHU4YjBlXHU4YjE3XHU4''@;'; put 'put ''YjE5XHU4YjFiXHU4YjBhXHU4YjIwXHU4YjFkXHU4YjA0XHU4YjEwXHU4YzQxXHU4YzNmXHU4YzczXHU4Y2ZhXHU4Y2ZkXHU4Y2ZjXHU4Y2Y4XHU4Y2ZiXHU4ZGE4XHU4ZTQ5XHU4ZTRiXHU4ZTQ4XHU4ZTRhXHU4ZjQ0XHU4ZjNlXHU4ZjQyXHU4ZjQ1XHU4ZjNmXHU5MDdmXHU5MDdkXHU5MDg0''@;'; put 'put ''XHU5MDgxXHU5MDgyXHU5MDgwXHU5MTM5XHU5MWEzXHU5MTllXHU5MTljXHU5MzRkXHU5MzgyXHU5MzI4XHU5Mzc1XHU5MzRhXHU5MzY1XHU5MzRiXHU5MzE4XHU5MzdlXHU5MzZjXHU5MzViXHU5MzcwXHU5MzVhXHU5MzU0XHU5NWNhXHU5NWNiXHU5NWNjXHU5NWM4XHU5NWM2XHU5NmIxXHU5''@;'; put 'put ''NmI4XHU5NmQ2XHU5NzFjXHU5NzFlXHU5N2EwXHU5N2QzXHU5ODQ2XHU5OGI2XHU5OTM1XHU5YTAxIl0sWyJjMjQwIiwiXHU5OWZmXHU5YmFlXHU5YmFiXHU5YmFhXHU5YmFkXHU5ZDNiXHU5ZDNmXHU5ZThiXHU5ZWNmXHU5ZWRlXHU5ZWRjXHU5ZWRkXHU5ZWRiXHU5ZjNlXHU5ZjRiXHU1M2Uy''@;'; put 'put ''XHU1Njk1XHU1NmFlXHU1OGQ5XHU1OGQ4XHU1YjM4XHU1ZjVkXHU2MWUzXHU2MjMzXHU2NGY0XHU2NGYyXHU2NGZlXHU2NTA2XHU2NGZhXHU2NGZiXHU2NGY3XHU2NWI3XHU2NmRjXHU2NzI2XHU2YWIzXHU2YWFjXHU2YWMzXHU2YWJiXHU2YWI4XHU2YWMyXHU2YWFlXHU2YWFmXHU2YjVmXHU2''@;'; put 'put ''Yjc4XHU2YmFmXHU3MDA5XHU3MDBiXHU2ZmZlXHU3MDA2XHU2ZmZhXHU3MDExXHU3MDBmXHU3MWZiXHU3MWZjXHU3MWZlXHU3MWY4XHU3Mzc3XHU3Mzc1XHU3NGE3XHU3NGJmXHU3NTE1XHU3NjU2XHU3NjU4Il0sWyJjMmExIiwiXHU3NjUyXHU3N2JkXHU3N2JmXHU3N2JiXHU3N2JjXHU3OTBl''@;'; put 'put ''XHU3OWFlXHU3YTYxXHU3YTYyXHU3YTYwXHU3YWM0XHU3YWM1XHU3YzJiXHU3YzI3XHU3YzJhXHU3YzFlXHU3YzIzXHU3YzIxXHU3Y2U3XHU3ZTU0XHU3ZTU1XHU3ZTVlXHU3ZTVhXHU3ZTYxXHU3ZTUyXHU3ZTU5XHU3ZjQ4XHU3ZmY5XHU3ZmZiXHU4MDc3XHU4MDc2XHU4MWNkXHU4MWNmXHU4''@;'; put 'put ''MjBhXHU4NWNmXHU4NWE5XHU4NWNkXHU4NWQwXHU4NWM5XHU4NWIwXHU4NWJhXHU4NWI5XHU4NWE2XHU4N2VmXHU4N2VjXHU4N2YyXHU4N2UwXHU4OTg2XHU4OWIyXHU4OWY0XHU4YjI4XHU4YjM5XHU4YjJjXHU4YjJiXHU4YzUwXHU4ZDA1XHU4ZTU5XHU4ZTYzXHU4ZTY2XHU4ZTY0XHU4ZTVm''@;'; put 'put ''XHU4ZTU1XHU4ZWMwXHU4ZjQ5XHU4ZjRkXHU5MDg3XHU5MDgzXHU5MDg4XHU5MWFiXHU5MWFjXHU5MWQwXHU5Mzk0XHU5MzhhXHU5Mzk2XHU5M2EyXHU5M2IzXHU5M2FlXHU5M2FjXHU5M2IwXHU5Mzk4XHU5MzlhXHU5Mzk3XHU5NWQ0XHU5NWQ2XHU5NWQwXHU5NWQ1XHU5NmUyXHU5NmRjXHU5''@;'; put 'put ''NmQ5XHU5NmRiXHU5NmRlXHU5NzI0XHU5N2EzXHU5N2E2Il0sWyJjMzQwIiwiXHU5N2FkXHU5N2Y5XHU5ODRkXHU5ODRmXHU5ODRjXHU5ODRlXHU5ODUzXHU5OGJhXHU5OTNlXHU5OTNmXHU5OTNkXHU5OTJlXHU5OWE1XHU5YTBlXHU5YWMxXHU5YjAzXHU5YjA2XHU5YjRmXHU5YjRlXHU5YjRk''@;'; put 'put ''XHU5YmNhXHU5YmM5XHU5YmZkXHU5YmM4XHU5YmMwXHU5ZDUxXHU5ZDVkXHU5ZDYwXHU5ZWUwXHU5ZjE1XHU5ZjJjXHU1MTMzXHU1NmE1XHU1OGRlXHU1OGRmXHU1OGUyXHU1YmY1XHU5ZjkwXHU1ZWVjXHU2MWYyXHU2MWY3XHU2MWY2XHU2MWY1XHU2NTAwXHU2NTBmXHU2NmUwXHU2NmRkXHU2''@;'; put 'put ''YWU1XHU2YWRkXHU2YWRhXHU2YWQzXHU3MDFiXHU3MDFmXHU3MDI4XHU3MDFhXHU3MDFkXHU3MDE1XHU3MDE4XHU3MjA2XHU3MjBkXHU3MjU4XHU3MmEyXHU3Mzc4Il0sWyJjM2ExIiwiXHU3MzdhXHU3NGJkXHU3NGNhXHU3NGUzXHU3NTg3XHU3NTg2XHU3NjVmXHU3NjYxXHU3N2M3XHU3OTE5''@;'; put 'put ''XHU3OWIxXHU3YTZiXHU3YTY5XHU3YzNlXHU3YzNmXHU3YzM4XHU3YzNkXHU3YzM3XHU3YzQwXHU3ZTZiXHU3ZTZkXHU3ZTc5XHU3ZTY5XHU3ZTZhXHU3Zjg1XHU3ZTczXHU3ZmI2XHU3ZmI5XHU3ZmI4XHU4MWQ4XHU4NWU5XHU4NWRkXHU4NWVhXHU4NWQ1XHU4NWU0XHU4NWU1XHU4NWY3XHU4''@;'; put 'put ''N2ZiXHU4ODA1XHU4ODBkXHU4N2Y5XHU4N2ZlXHU4OTYwXHU4OTVmXHU4OTU2XHU4OTVlXHU4YjQxXHU4YjVjXHU4YjU4XHU4YjQ5XHU4YjVhXHU4YjRlXHU4YjRmXHU4YjQ2XHU4YjU5XHU4ZDA4XHU4ZDBhXHU4ZTdjXHU4ZTcyXHU4ZTg3XHU4ZTc2XHU4ZTZjXHU4ZTdhXHU4ZTc0XHU4ZjU0''@;'; put 'put ''XHU4ZjRlXHU4ZmFkXHU5MDhhXHU5MDhiXHU5MWIxXHU5MWFlXHU5M2UxXHU5M2QxXHU5M2RmXHU5M2MzXHU5M2M4XHU5M2RjXHU5M2RkXHU5M2Q2XHU5M2UyXHU5M2NkXHU5M2Q4XHU5M2U0XHU5M2Q3XHU5M2U4XHU5NWRjXHU5NmI0XHU5NmUzXHU5NzJhXHU5NzI3XHU5NzYxXHU5N2RjXHU5''@;'; put 'put ''N2ZiXHU5ODVlIl0sWyJjNDQwIiwiXHU5ODU4XHU5ODViXHU5OGJjXHU5OTQ1XHU5OTQ5XHU5YTE2XHU5YTE5XHU5YjBkXHU5YmU4XHU5YmU3XHU5YmQ2XHU5YmRiXHU5ZDg5XHU5ZDYxXHU5ZDcyXHU5ZDZhXHU5ZDZjXHU5ZTkyXHU5ZTk3XHU5ZTkzXHU5ZWI0XHU1MmY4XHU1NmE4XHU1NmI3''@;'; put 'put ''XHU1NmI2XHU1NmI0XHU1NmJjXHU1OGU0XHU1YjQwXHU1YjQzXHU1YjdkXHU1YmY2XHU1ZGM5XHU2MWY4XHU2MWZhXHU2NTE4XHU2NTE0XHU2NTE5XHU2NmU2XHU2NzI3XHU2YWVjXHU3MDNlXHU3MDMwXHU3MDMyXHU3MjEwXHU3MzdiXHU3NGNmXHU3NjYyXHU3NjY1XHU3OTI2XHU3OTJhXHU3''@;'; put 'put ''OTJjXHU3OTJiXHU3YWM3XHU3YWY2XHU3YzRjXHU3YzQzXHU3YzRkXHU3Y2VmXHU3Y2YwXHU4ZmFlXHU3ZTdkXHU3ZTdjIl0sWyJjNGExIiwiXHU3ZTgyXHU3ZjRjXHU4MDAwXHU4MWRhXHU4MjY2XHU4NWZiXHU4NWY5XHU4NjExXHU4NWZhXHU4NjA2XHU4NjBiXHU4NjA3XHU4NjBhXHU4ODE0''@;'; put 'put ''XHU4ODE1XHU4OTY0XHU4OWJhXHU4OWY4XHU4YjcwXHU4YjZjXHU4YjY2XHU4YjZmXHU4YjVmXHU4YjZiXHU4ZDBmXHU4ZDBkXHU4ZTg5XHU4ZTgxXHU4ZTg1XHU4ZTgyXHU5MWI0XHU5MWNiXHU5NDE4XHU5NDAzXHU5M2ZkXHU5NWUxXHU5NzMwXHU5OGM0XHU5OTUyXHU5OTUxXHU5OWE4XHU5''@;'; put 'put ''YTJiXHU5YTMwXHU5YTM3XHU5YTM1XHU5YzEzXHU5YzBkXHU5ZTc5XHU5ZWI1XHU5ZWU4XHU5ZjJmXHU5ZjVmXHU5ZjYzXHU5ZjYxXHU1MTM3XHU1MTM4XHU1NmMxXHU1NmMwXHU1NmMyXHU1OTE0XHU1YzZjXHU1ZGNkXHU2MWZjXHU2MWZlXHU2NTFkXHU2NTFjXHU2NTk1XHU2NmU5XHU2YWZi''@;'; put 'put ''XHU2YjA0XHU2YWZhXHU2YmIyXHU3MDRjXHU3MjFiXHU3MmE3XHU3NGQ2XHU3NGQ0XHU3NjY5XHU3N2QzXHU3YzUwXHU3ZThmXHU3ZThjXHU3ZmJjXHU4NjE3XHU4NjJkXHU4NjFhXHU4ODIzXHU4ODIyXHU4ODIxXHU4ODFmXHU4OTZhXHU4OTZjXHU4OWJkXHU4Yjc0Il0sWyJjNTQwIiwiXHU4''@;'; put 'put ''Yjc3XHU4YjdkXHU4ZDEzXHU4ZThhXHU4ZThkXHU4ZThiXHU4ZjVmXHU4ZmFmXHU5MWJhXHU5NDJlXHU5NDMzXHU5NDM1XHU5NDNhXHU5NDM4XHU5NDMyXHU5NDJiXHU5NWUyXHU5NzM4XHU5NzM5XHU5NzMyXHU5N2ZmXHU5ODY3XHU5ODY1XHU5OTU3XHU5YTQ1XHU5YTQzXHU5YTQwXHU5YTNl''@;'; put 'put ''XHU5YWNmXHU5YjU0XHU5YjUxXHU5YzJkXHU5YzI1XHU5ZGFmXHU5ZGI0XHU5ZGMyXHU5ZGI4XHU5ZTlkXHU5ZWVmXHU5ZjE5XHU5ZjVjXHU5ZjY2XHU5ZjY3XHU1MTNjXHU1MTNiXHU1NmM4XHU1NmNhXHU1NmM5XHU1YjdmXHU1ZGQ0XHU1ZGQyXHU1ZjRlXHU2MWZmXHU2NTI0XHU2YjBhXHU2''@;'; put 'put ''YjYxXHU3MDUxXHU3MDU4XHU3MzgwXHU3NGU0XHU3NThhXHU3NjZlXHU3NjZjIl0sWyJjNWExIiwiXHU3OWIzXHU3YzYwXHU3YzVmXHU4MDdlXHU4MDdkXHU4MWRmXHU4OTcyXHU4OTZmXHU4OWZjXHU4YjgwXHU4ZDE2XHU4ZDE3XHU4ZTkxXHU4ZTkzXHU4ZjYxXHU5MTQ4XHU5NDQ0XHU5NDUx''@;'; put 'put ''XHU5NDUyXHU5NzNkXHU5NzNlXHU5N2MzXHU5N2MxXHU5ODZiXHU5OTU1XHU5YTU1XHU5YTRkXHU5YWQyXHU5YjFhXHU5YzQ5XHU5YzMxXHU5YzNlXHU5YzNiXHU5ZGQzXHU5ZGQ3XHU5ZjM0XHU5ZjZjXHU5ZjZhXHU5Zjk0XHU1NmNjXHU1ZGQ2XHU2MjAwXHU2NTIzXHU2NTJiXHU2NTJhXHU2''@;'; put 'put ''NmVjXHU2YjEwXHU3NGRhXHU3YWNhXHU3YzY0XHU3YzYzXHU3YzY1XHU3ZTkzXHU3ZTk2XHU3ZTk0XHU4MWUyXHU4NjM4XHU4NjNmXHU4ODMxXHU4YjhhXHU5MDkwXHU5MDhmXHU5NDYzXHU5NDYwXHU5NDY0XHU5NzY4XHU5ODZmXHU5OTVjXHU5YTVhXHU5YTViXHU5YTU3XHU5YWQzXHU5YWQ0''@;'; put 'put ''XHU5YWQxXHU5YzU0XHU5YzU3XHU5YzU2XHU5ZGU1XHU5ZTlmXHU5ZWY0XHU1NmQxXHU1OGU5XHU2NTJjXHU3MDVlXHU3NjcxXHU3NjcyXHU3N2Q3XHU3ZjUwXHU3Zjg4XHU4ODM2XHU4ODM5XHU4ODYyXHU4YjkzXHU4YjkyIl0sWyJjNjQwIiwiXHU4Yjk2XHU4Mjc3XHU4ZDFiXHU5MWMwXHU5''@;'; put 'put ''NDZhXHU5NzQyXHU5NzQ4XHU5NzQ0XHU5N2M2XHU5ODcwXHU5YTVmXHU5YjIyXHU5YjU4XHU5YzVmXHU5ZGY5XHU5ZGZhXHU5ZTdjXHU5ZTdkXHU5ZjA3XHU5Zjc3XHU5ZjcyXHU1ZWYzXHU2YjE2XHU3MDYzXHU3YzZjXHU3YzZlXHU4ODNiXHU4OWMwXHU4ZWExXHU5MWMxXHU5NDcyXHU5NDcw''@;'; put 'put ''XHU5ODcxXHU5OTVlXHU5YWQ2XHU5YjIzXHU5ZWNjXHU3MDY0XHU3N2RhXHU4YjlhXHU5NDc3XHU5N2M5XHU5YTYyXHU5YTY1XHU3ZTljXHU4YjljXHU4ZWFhXHU5MWM1XHU5NDdkXHU5NDdlXHU5NDdjXHU5Yzc3XHU5Yzc4XHU5ZWY3XHU4YzU0XHU5NDdmXHU5ZTFhXHU3MjI4XHU5YTZhXHU5''@;'; put 'put ''YjMxXHU5ZTFiXHU5ZTFlXHU3YzcyIl0sWyJjOTQwIiwiXHU0ZTQyXHU0ZTVjXHU1MWY1XHU1MzFhXHU1MzgyXHU0ZTA3XHU0ZTBjXHU0ZTQ3XHU0ZThkXHU1NmQ3XHVmYTBjXHU1YzZlXHU1ZjczXHU0ZTBmXHU1MTg3XHU0ZTBlXHU0ZTJlXHU0ZTkzXHU0ZWMyXHU0ZWM5XHU0ZWM4XHU1MTk4''@;'; put 'put ''XHU1MmZjXHU1MzZjXHU1M2I5XHU1NzIwXHU1OTAzXHU1OTJjXHU1YzEwXHU1ZGZmXHU2NWUxXHU2YmIzXHU2YmNjXHU2YzE0XHU3MjNmXHU0ZTMxXHU0ZTNjXHU0ZWU4XHU0ZWRjXHU0ZWU5XHU0ZWUxXHU0ZWRkXHU0ZWRhXHU1MjBjXHU1MzFjXHU1MzRjXHU1NzIyXHU1NzIzXHU1OTE3XHU1''@;'; put 'put ''OTJmXHU1YjgxXHU1Yjg0XHU1YzEyXHU1YzNiXHU1Yzc0XHU1YzczXHU1ZTA0XHU1ZTgwXHU1ZTgyXHU1ZmM5XHU2MjA5XHU2MjUwXHU2YzE1Il0sWyJjOWExIiwiXHU2YzM2XHU2YzQzXHU2YzNmXHU2YzNiXHU3MmFlXHU3MmIwXHU3MzhhXHU3OWI4XHU4MDhhXHU5NjFlXHU0ZjBlXHU0ZjE4''@;'; put 'put ''XHU0ZjJjXHU0ZWY1XHU0ZjE0XHU0ZWYxXHU0ZjAwXHU0ZWY3XHU0ZjA4XHU0ZjFkXHU0ZjAyXHU0ZjA1XHU0ZjIyXHU0ZjEzXHU0ZjA0XHU0ZWY0XHU0ZjEyXHU1MWIxXHU1MjEzXHU1MjA5XHU1MjEwXHU1MmE2XHU1MzIyXHU1MzFmXHU1MzRkXHU1MzhhXHU1NDA3XHU1NmUxXHU1NmRmXHU1''@;'; put 'put ''NzJlXHU1NzJhXHU1NzM0XHU1OTNjXHU1OTgwXHU1OTdjXHU1OTg1XHU1OTdiXHU1OTdlXHU1OTc3XHU1OTdmXHU1YjU2XHU1YzE1XHU1YzI1XHU1YzdjXHU1YzdhXHU1YzdiXHU1YzdlXHU1ZGRmXHU1ZTc1XHU1ZTg0XHU1ZjAyXHU1ZjFhXHU1Zjc0XHU1ZmQ1XHU1ZmQ0XHU1ZmNmXHU2MjVj''@;'; put 'put ''XHU2MjVlXHU2MjY0XHU2MjYxXHU2MjY2XHU2MjYyXHU2MjU5XHU2MjYwXHU2MjVhXHU2MjY1XHU2NWVmXHU2NWVlXHU2NzNlXHU2NzM5XHU2NzM4XHU2NzNiXHU2NzNhXHU2NzNmXHU2NzNjXHU2NzMzXHU2YzE4XHU2YzQ2XHU2YzUyXHU2YzVjXHU2YzRmXHU2YzRhXHU2YzU0XHU2YzRiIl0s''@;'; put 'put ''WyJjYTQwIiwiXHU2YzRjXHU3MDcxXHU3MjVlXHU3MmI0XHU3MmI1XHU3MzhlXHU3NTJhXHU3NjdmXHU3YTc1XHU3ZjUxXHU4Mjc4XHU4MjdjXHU4MjgwXHU4MjdkXHU4MjdmXHU4NjRkXHU4OTdlXHU5MDk5XHU5MDk3XHU5MDk4XHU5MDliXHU5MDk0XHU5NjIyXHU5NjI0XHU5NjIwXHU5NjIz''@;'; put 'put ''XHU0ZjU2XHU0ZjNiXHU0ZjYyXHU0ZjQ5XHU0ZjUzXHU0ZjY0XHU0ZjNlXHU0ZjY3XHU0ZjUyXHU0ZjVmXHU0ZjQxXHU0ZjU4XHU0ZjJkXHU0ZjMzXHU0ZjNmXHU0ZjYxXHU1MThmXHU1MWI5XHU1MjFjXHU1MjFlXHU1MjIxXHU1MmFkXHU1MmFlXHU1MzA5XHU1MzYzXHU1MzcyXHU1MzhlXHU1''@;'; put 'put ''MzhmXHU1NDMwXHU1NDM3XHU1NDJhXHU1NDU0XHU1NDQ1XHU1NDE5XHU1NDFjXHU1NDI1XHU1NDE4Il0sWyJjYWExIiwiXHU1NDNkXHU1NDRmXHU1NDQxXHU1NDI4XHU1NDI0XHU1NDQ3XHU1NmVlXHU1NmU3XHU1NmU1XHU1NzQxXHU1NzQ1XHU1NzRjXHU1NzQ5XHU1NzRiXHU1NzUyXHU1OTA2''@;'; put 'put ''XHU1OTQwXHU1OWE2XHU1OTk4XHU1OWEwXHU1OTk3XHU1OThlXHU1OWEyXHU1OTkwXHU1OThmXHU1OWE3XHU1OWExXHU1YjhlXHU1YjkyXHU1YzI4XHU1YzJhXHU1YzhkXHU1YzhmXHU1Yzg4XHU1YzhiXHU1Yzg5XHU1YzkyXHU1YzhhXHU1Yzg2XHU1YzkzXHU1Yzk1XHU1ZGUwXHU1ZTBhXHU1''@;'; put 'put ''ZTBlXHU1ZThiXHU1ZTg5XHU1ZThjXHU1ZTg4XHU1ZThkXHU1ZjA1XHU1ZjFkXHU1Zjc4XHU1Zjc2XHU1ZmQyXHU1ZmQxXHU1ZmQwXHU1ZmVkXHU1ZmU4XHU1ZmVlXHU1ZmYzXHU1ZmUxXHU1ZmU0XHU1ZmUzXHU1ZmZhXHU1ZmVmXHU1ZmY3XHU1ZmZiXHU2MDAwXHU1ZmY0XHU2MjNhXHU2Mjgz''@;'; put 'put ''XHU2MjhjXHU2MjhlXHU2MjhmXHU2Mjk0XHU2Mjg3XHU2MjcxXHU2MjdiXHU2MjdhXHU2MjcwXHU2MjgxXHU2Mjg4XHU2Mjc3XHU2MjdkXHU2MjcyXHU2Mjc0XHU2NTM3XHU2NWYwXHU2NWY0XHU2NWYzXHU2NWYyXHU2NWY1XHU2NzQ1XHU2NzQ3Il0sWyJjYjQwIiwiXHU2NzU5XHU2NzU1XHU2''@;'; put 'put ''NzRjXHU2NzQ4XHU2NzVkXHU2NzRkXHU2NzVhXHU2NzRiXHU2YmQwXHU2YzE5XHU2YzFhXHU2Yzc4XHU2YzY3XHU2YzZiXHU2Yzg0XHU2YzhiXHU2YzhmXHU2YzcxXHU2YzZmXHU2YzY5XHU2YzlhXHU2YzZkXHU2Yzg3XHU2Yzk1XHU2YzljXHU2YzY2XHU2YzczXHU2YzY1XHU2YzdiXHU2Yzhl''@;'; put 'put ''XHU3MDc0XHU3MDdhXHU3MjYzXHU3MmJmXHU3MmJkXHU3MmMzXHU3MmM2XHU3MmMxXHU3MmJhXHU3MmM1XHU3Mzk1XHU3Mzk3XHU3MzkzXHU3Mzk0XHU3MzkyXHU3NTNhXHU3NTM5XHU3NTk0XHU3NTk1XHU3NjgxXHU3OTNkXHU4MDM0XHU4MDk1XHU4MDk5XHU4MDkwXHU4MDkyXHU4MDljXHU4''@;'; put 'put ''MjkwXHU4MjhmXHU4Mjg1XHU4MjhlXHU4MjkxXHU4MjkzIl0sWyJjYmExIiwiXHU4MjhhXHU4MjgzXHU4Mjg0XHU4Yzc4XHU4ZmM5XHU4ZmJmXHU5MDlmXHU5MGExXHU5MGE1XHU5MDllXHU5MGE3XHU5MGEwXHU5NjMwXHU5NjI4XHU5NjJmXHU5NjJkXHU0ZTMzXHU0Zjk4XHU0ZjdjXHU0Zjg1''@;'; put 'put ''XHU0ZjdkXHU0ZjgwXHU0Zjg3XHU0Zjc2XHU0Zjc0XHU0Zjg5XHU0Zjg0XHU0Zjc3XHU0ZjRjXHU0Zjk3XHU0ZjZhXHU0ZjlhXHU0Zjc5XHU0ZjgxXHU0Zjc4XHU0ZjkwXHU0ZjljXHU0Zjk0XHU0ZjllXHU0ZjkyXHU0ZjgyXHU0Zjk1XHU0ZjZiXHU0ZjZlXHU1MTllXHU1MWJjXHU1MWJlXHU1''@;'; put 'put ''MjM1XHU1MjMyXHU1MjMzXHU1MjQ2XHU1MjMxXHU1MmJjXHU1MzBhXHU1MzBiXHU1MzNjXHU1MzkyXHU1Mzk0XHU1NDg3XHU1NDdmXHU1NDgxXHU1NDkxXHU1NDgyXHU1NDg4XHU1NDZiXHU1NDdhXHU1NDdlXHU1NDY1XHU1NDZjXHU1NDc0XHU1NDY2XHU1NDhkXHU1NDZmXHU1NDYxXHU1NDYw''@;'; put 'put ''XHU1NDk4XHU1NDYzXHU1NDY3XHU1NDY0XHU1NmY3XHU1NmY5XHU1NzZmXHU1NzcyXHU1NzZkXHU1NzZiXHU1NzcxXHU1NzcwXHU1Nzc2XHU1NzgwXHU1Nzc1XHU1NzdiXHU1NzczXHU1Nzc0XHU1NzYyIl0sWyJjYzQwIiwiXHU1NzY4XHU1NzdkXHU1OTBjXHU1OTQ1XHU1OWI1XHU1OWJhXHU1''@;'; put 'put ''OWNmXHU1OWNlXHU1OWIyXHU1OWNjXHU1OWMxXHU1OWI2XHU1OWJjXHU1OWMzXHU1OWQ2XHU1OWIxXHU1OWJkXHU1OWMwXHU1OWM4XHU1OWI0XHU1OWM3XHU1YjYyXHU1YjY1XHU1YjkzXHU1Yjk1XHU1YzQ0XHU1YzQ3XHU1Y2FlXHU1Y2E0XHU1Y2EwXHU1Y2I1XHU1Y2FmXHU1Y2E4XHU1Y2Fj''@;'; put 'put ''XHU1YzlmXHU1Y2EzXHU1Y2FkXHU1Y2EyXHU1Y2FhXHU1Y2E3XHU1YzlkXHU1Y2E1XHU1Y2I2XHU1Y2IwXHU1Y2E2XHU1ZTE3XHU1ZTE0XHU1ZTE5XHU1ZjI4XHU1ZjIyXHU1ZjIzXHU1ZjI0XHU1ZjU0XHU1ZjgyXHU1ZjdlXHU1ZjdkXHU1ZmRlXHU1ZmU1XHU2MDJkXHU2MDI2XHU2MDE5XHU2''@;'; put 'put ''MDMyXHU2MDBiIl0sWyJjY2ExIiwiXHU2MDM0XHU2MDBhXHU2MDE3XHU2MDMzXHU2MDFhXHU2MDFlXHU2MDJjXHU2MDIyXHU2MDBkXHU2MDEwXHU2MDJlXHU2MDEzXHU2MDExXHU2MDBjXHU2MDA5XHU2MDFjXHU2MjE0XHU2MjNkXHU2MmFkXHU2MmI0XHU2MmQxXHU2MmJlXHU2MmFhXHU2MmI2''@;'; put 'put ''XHU2MmNhXHU2MmFlXHU2MmIzXHU2MmFmXHU2MmJiXHU2MmE5XHU2MmIwXHU2MmI4XHU2NTNkXHU2NWE4XHU2NWJiXHU2NjA5XHU2NWZjXHU2NjA0XHU2NjEyXHU2NjA4XHU2NWZiXHU2NjAzXHU2NjBiXHU2NjBkXHU2NjA1XHU2NWZkXHU2NjExXHU2NjEwXHU2NmY2XHU2NzBhXHU2Nzg1XHU2''@;'; put 'put ''NzZjXHU2NzhlXHU2NzkyXHU2Nzc2XHU2NzdiXHU2Nzk4XHU2Nzg2XHU2Nzg0XHU2Nzc0XHU2NzhkXHU2NzhjXHU2NzdhXHU2NzlmXHU2NzkxXHU2Nzk5XHU2NzgzXHU2NzdkXHU2NzgxXHU2Nzc4XHU2Nzc5XHU2Nzk0XHU2YjI1XHU2YjgwXHU2YjdlXHU2YmRlXHU2YzFkXHU2YzkzXHU2Y2Vj''@;'; put 'put ''XHU2Y2ViXHU2Y2VlXHU2Y2Q5XHU2Y2I2XHU2Y2Q0XHU2Y2FkXHU2Y2U3XHU2Y2I3XHU2Y2QwXHU2Y2MyXHU2Y2JhXHU2Y2MzXHU2Y2M2XHU2Y2VkXHU2Y2YyIl0sWyJjZDQwIiwiXHU2Y2QyXHU2Y2RkXHU2Y2I0XHU2YzhhXHU2YzlkXHU2YzgwXHU2Y2RlXHU2Y2MwXHU2ZDMwXHU2Y2NkXHU2''@;'; put 'put ''Y2M3XHU2Y2IwXHU2Y2Y5XHU2Y2NmXHU2Y2U5XHU2Y2QxXHU3MDk0XHU3MDk4XHU3MDg1XHU3MDkzXHU3MDg2XHU3MDg0XHU3MDkxXHU3MDk2XHU3MDgyXHU3MDlhXHU3MDgzXHU3MjZhXHU3MmQ2XHU3MmNiXHU3MmQ4XHU3MmM5XHU3MmRjXHU3MmQyXHU3MmQ0XHU3MmRhXHU3MmNjXHU3MmQx''@;'; put 'put ''XHU3M2E0XHU3M2ExXHU3M2FkXHU3M2E2XHU3M2EyXHU3M2EwXHU3M2FjXHU3MzlkXHU3NGRkXHU3NGU4XHU3NTNmXHU3NTQwXHU3NTNlXHU3NThjXHU3NTk4XHU3NmFmXHU3NmYzXHU3NmYxXHU3NmYwXHU3NmY1XHU3N2Y4XHU3N2ZjXHU3N2Y5XHU3N2ZiXHU3N2ZhIl0sWyJjZGExIiwiXHU3''@;'; put 'put ''N2Y3XHU3OTQyXHU3OTNmXHU3OWM1XHU3YTc4XHU3YTdiXHU3YWZiXHU3Yzc1XHU3Y2ZkXHU4MDM1XHU4MDhmXHU4MGFlXHU4MGEzXHU4MGI4XHU4MGI1XHU4MGFkXHU4MjIwXHU4MmEwXHU4MmMwXHU4MmFiXHU4MjlhXHU4Mjk4XHU4MjliXHU4MmI1XHU4MmE3XHU4MmFlXHU4MmJjXHU4Mjll''@;'; put 'put ''XHU4MmJhXHU4MmI0XHU4MmE4XHU4MmExXHU4MmE5XHU4MmMyXHU4MmE0XHU4MmMzXHU4MmI2XHU4MmEyXHU4NjcwXHU4NjZmXHU4NjZkXHU4NjZlXHU4YzU2XHU4ZmQyXHU4ZmNiXHU4ZmQzXHU4ZmNkXHU4ZmQ2XHU4ZmQ1XHU4ZmQ3XHU5MGIyXHU5MGI0XHU5MGFmXHU5MGIzXHU5MGIwXHU5''@;'; put 'put ''NjM5XHU5NjNkXHU5NjNjXHU5NjNhXHU5NjQzXHU0ZmNkXHU0ZmM1XHU0ZmQzXHU0ZmIyXHU0ZmM5XHU0ZmNiXHU0ZmMxXHU0ZmQ0XHU0ZmRjXHU0ZmQ5XHU0ZmJiXHU0ZmIzXHU0ZmRiXHU0ZmM3XHU0ZmQ2XHU0ZmJhXHU0ZmMwXHU0ZmI5XHU0ZmVjXHU1MjQ0XHU1MjQ5XHU1MmMwXHU1MmMy''@;'; put 'put ''XHU1MzNkXHU1MzdjXHU1Mzk3XHU1Mzk2XHU1Mzk5XHU1Mzk4XHU1NGJhXHU1NGExXHU1NGFkXHU1NGE1XHU1NGNmIl0sWyJjZTQwIiwiXHU1NGMzXHU4MzBkXHU1NGI3XHU1NGFlXHU1NGQ2XHU1NGI2XHU1NGM1XHU1NGM2XHU1NGEwXHU1NDcwXHU1NGJjXHU1NGEyXHU1NGJlXHU1NDcyXHU1''@;'; put 'put ''NGRlXHU1NGIwXHU1N2I1XHU1NzllXHU1NzlmXHU1N2E0XHU1NzhjXHU1Nzk3XHU1NzlkXHU1NzliXHU1Nzk0XHU1Nzk4XHU1NzhmXHU1Nzk5XHU1N2E1XHU1NzlhXHU1Nzk1XHU1OGY0XHU1OTBkXHU1OTUzXHU1OWUxXHU1OWRlXHU1OWVlXHU1YTAwXHU1OWYxXHU1OWRkXHU1OWZhXHU1OWZk''@;'; put 'put ''XHU1OWZjXHU1OWY2XHU1OWU0XHU1OWYyXHU1OWY3XHU1OWRiXHU1OWU5XHU1OWYzXHU1OWY1XHU1OWUwXHU1OWZlXHU1OWY0XHU1OWVkXHU1YmE4XHU1YzRjXHU1Y2QwXHU1Y2Q4XHU1Y2NjXHU1Y2Q3XHU1Y2NiXHU1Y2RiIl0sWyJjZWExIiwiXHU1Y2RlXHU1Y2RhXHU1Y2M5XHU1Y2M3XHU1''@;'; put 'put ''Y2NhXHU1Y2Q2XHU1Y2QzXHU1Y2Q0XHU1Y2NmXHU1Y2M4XHU1Y2M2XHU1Y2NlXHU1Y2RmXHU1Y2Y4XHU1ZGY5XHU1ZTIxXHU1ZTIyXHU1ZTIzXHU1ZTIwXHU1ZTI0XHU1ZWIwXHU1ZWE0XHU1ZWEyXHU1ZTliXHU1ZWEzXHU1ZWE1XHU1ZjA3XHU1ZjJlXHU1ZjU2XHU1Zjg2XHU2MDM3XHU2MDM5''@;'; put 'put ''XHU2MDU0XHU2MDcyXHU2MDVlXHU2MDQ1XHU2MDUzXHU2MDQ3XHU2MDQ5XHU2MDViXHU2MDRjXHU2MDQwXHU2MDQyXHU2MDVmXHU2MDI0XHU2MDQ0XHU2MDU4XHU2MDY2XHU2MDZlXHU2MjQyXHU2MjQzXHU2MmNmXHU2MzBkXHU2MzBiXHU2MmY1XHU2MzBlXHU2MzAzXHU2MmViXHU2MmY5XHU2''@;'; put 'put ''MzBmXHU2MzBjXHU2MmY4XHU2MmY2XHU2MzAwXHU2MzEzXHU2MzE0XHU2MmZhXHU2MzE1XHU2MmZiXHU2MmYwXHU2NTQxXHU2NTQzXHU2NWFhXHU2NWJmXHU2NjM2XHU2NjIxXHU2NjMyXHU2NjM1XHU2NjFjXHU2NjI2XHU2NjIyXHU2NjMzXHU2NjJiXHU2NjNhXHU2NjFkXHU2NjM0XHU2NjM5''@;'; put 'put ''XHU2NjJlXHU2NzBmXHU2NzEwXHU2N2MxXHU2N2YyXHU2N2M4XHU2N2JhIl0sWyJjZjQwIiwiXHU2N2RjXHU2N2JiXHU2N2Y4XHU2N2Q4XHU2N2MwXHU2N2I3XHU2N2M1XHU2N2ViXHU2N2U0XHU2N2RmXHU2N2I1XHU2N2NkXHU2N2IzXHU2N2Y3XHU2N2Y2XHU2N2VlXHU2N2UzXHU2N2MyXHU2''@;'; put 'put ''N2I5XHU2N2NlXHU2N2U3XHU2N2YwXHU2N2IyXHU2N2ZjXHU2N2M2XHU2N2VkXHU2N2NjXHU2N2FlXHU2N2U2XHU2N2RiXHU2N2ZhXHU2N2M5XHU2N2NhXHU2N2MzXHU2N2VhXHU2N2NiXHU2YjI4XHU2YjgyXHU2Yjg0XHU2YmI2XHU2YmQ2XHU2YmQ4XHU2YmUwXHU2YzIwXHU2YzIxXHU2ZDI4''@;'; put 'put ''XHU2ZDM0XHU2ZDJkXHU2ZDFmXHU2ZDNjXHU2ZDNmXHU2ZDEyXHU2ZDBhXHU2Y2RhXHU2ZDMzXHU2ZDA0XHU2ZDE5XHU2ZDNhXHU2ZDFhXHU2ZDExXHU2ZDAwXHU2ZDFkXHU2ZDQyIl0sWyJjZmExIiwiXHU2ZDAxXHU2ZDE4XHU2ZDM3XHU2ZDAzXHU2ZDBmXHU2ZDQwXHU2ZDA3XHU2ZDIwXHU2''@;'; put 'put ''ZDJjXHU2ZDA4XHU2ZDIyXHU2ZDA5XHU2ZDEwXHU3MGI3XHU3MDlmXHU3MGJlXHU3MGIxXHU3MGIwXHU3MGExXHU3MGI0XHU3MGI1XHU3MGE5XHU3MjQxXHU3MjQ5XHU3MjRhXHU3MjZjXHU3MjcwXHU3MjczXHU3MjZlXHU3MmNhXHU3MmU0XHU3MmU4XHU3MmViXHU3MmRmXHU3MmVhXHU3MmU2''@;'; put 'put ''XHU3MmUzXHU3Mzg1XHU3M2NjXHU3M2MyXHU3M2M4XHU3M2M1XHU3M2I5XHU3M2I2XHU3M2I1XHU3M2I0XHU3M2ViXHU3M2JmXHU3M2M3XHU3M2JlXHU3M2MzXHU3M2M2XHU3M2I4XHU3M2NiXHU3NGVjXHU3NGVlXHU3NTJlXHU3NTQ3XHU3NTQ4XHU3NWE3XHU3NWFhXHU3Njc5XHU3NmM0XHU3''@;'; put 'put ''NzA4XHU3NzAzXHU3NzA0XHU3NzA1XHU3NzBhXHU3NmY3XHU3NmZiXHU3NmZhXHU3N2U3XHU3N2U4XHU3ODA2XHU3ODExXHU3ODEyXHU3ODA1XHU3ODEwXHU3ODBmXHU3ODBlXHU3ODA5XHU3ODAzXHU3ODEzXHU3OTRhXHU3OTRjXHU3OTRiXHU3OTQ1XHU3OTQ0XHU3OWQ1XHU3OWNkXHU3OWNm''@;'; put 'put ''XHU3OWQ2XHU3OWNlXHU3YTgwIl0sWyJkMDQwIiwiXHU3YTdlXHU3YWQxXHU3YjAwXHU3YjAxXHU3YzdhXHU3Yzc4XHU3Yzc5XHU3YzdmXHU3YzgwXHU3YzgxXHU3ZDAzXHU3ZDA4XHU3ZDAxXHU3ZjU4XHU3ZjkxXHU3ZjhkXHU3ZmJlXHU4MDA3XHU4MDBlXHU4MDBmXHU4MDE0XHU4MDM3XHU4''@;'; put 'put ''MGQ4XHU4MGM3XHU4MGUwXHU4MGQxXHU4MGM4XHU4MGMyXHU4MGQwXHU4MGM1XHU4MGUzXHU4MGQ5XHU4MGRjXHU4MGNhXHU4MGQ1XHU4MGM5XHU4MGNmXHU4MGQ3XHU4MGU2XHU4MGNkXHU4MWZmXHU4MjIxXHU4Mjk0XHU4MmQ5XHU4MmZlXHU4MmY5XHU4MzA3XHU4MmU4XHU4MzAwXHU4MmQ1''@;'; put 'put ''XHU4MzNhXHU4MmViXHU4MmQ2XHU4MmY0XHU4MmVjXHU4MmUxXHU4MmYyXHU4MmY1XHU4MzBjXHU4MmZiXHU4MmY2XHU4MmYwXHU4MmVhIl0sWyJkMGExIiwiXHU4MmU0XHU4MmUwXHU4MmZhXHU4MmYzXHU4MmVkXHU4Njc3XHU4Njc0XHU4NjdjXHU4NjczXHU4ODQxXHU4ODRlXHU4ODY3XHU4''@;'; put 'put ''ODZhXHU4ODY5XHU4OWQzXHU4YTA0XHU4YTA3XHU4ZDcyXHU4ZmUzXHU4ZmUxXHU4ZmVlXHU4ZmUwXHU5MGYxXHU5MGJkXHU5MGJmXHU5MGQ1XHU5MGM1XHU5MGJlXHU5MGM3XHU5MGNiXHU5MGM4XHU5MWQ0XHU5MWQzXHU5NjU0XHU5NjRmXHU5NjUxXHU5NjUzXHU5NjRhXHU5NjRlXHU1MDFl''@;'; put 'put ''XHU1MDA1XHU1MDA3XHU1MDEzXHU1MDIyXHU1MDMwXHU1MDFiXHU0ZmY1XHU0ZmY0XHU1MDMzXHU1MDM3XHU1MDJjXHU0ZmY2XHU0ZmY3XHU1MDE3XHU1MDFjXHU1MDIwXHU1MDI3XHU1MDM1XHU1MDJmXHU1MDMxXHU1MDBlXHU1MTVhXHU1MTk0XHU1MTkzXHU1MWNhXHU1MWM0XHU1MWM1XHU1''@;'; put 'put ''MWM4XHU1MWNlXHU1MjYxXHU1MjVhXHU1MjUyXHU1MjVlXHU1MjVmXHU1MjU1XHU1MjYyXHU1MmNkXHU1MzBlXHU1MzllXHU1NTI2XHU1NGUyXHU1NTE3XHU1NTEyXHU1NGU3XHU1NGYzXHU1NGU0XHU1NTFhXHU1NGZmXHU1NTA0XHU1NTA4XHU1NGViXHU1NTExXHU1NTA1XHU1NGYxIl0sWyJk''@;'; put 'put ''MTQwIiwiXHU1NTBhXHU1NGZiXHU1NGY3XHU1NGY4XHU1NGUwXHU1NTBlXHU1NTAzXHU1NTBiXHU1NzAxXHU1NzAyXHU1N2NjXHU1ODMyXHU1N2Q1XHU1N2QyXHU1N2JhXHU1N2M2XHU1N2JkXHU1N2JjXHU1N2I4XHU1N2I2XHU1N2JmXHU1N2M3XHU1N2QwXHU1N2I5XHU1N2MxXHU1OTBlXHU1''@;'; put 'put ''OTRhXHU1YTE5XHU1YTE2XHU1YTJkXHU1YTJlXHU1YTE1XHU1YTBmXHU1YTE3XHU1YTBhXHU1YTFlXHU1YTMzXHU1YjZjXHU1YmE3XHU1YmFkXHU1YmFjXHU1YzAzXHU1YzU2XHU1YzU0XHU1Y2VjXHU1Y2ZmXHU1Y2VlXHU1Y2YxXHU1Y2Y3XHU1ZDAwXHU1Y2Y5XHU1ZTI5XHU1ZTI4XHU1ZWE4''@;'; put 'put ''XHU1ZWFlXHU1ZWFhXHU1ZWFjXHU1ZjMzXHU1ZjMwXHU1ZjY3XHU2MDVkXHU2MDVhXHU2MDY3Il0sWyJkMWExIiwiXHU2MDQxXHU2MGEyXHU2MDg4XHU2MDgwXHU2MDkyXHU2MDgxXHU2MDlkXHU2MDgzXHU2MDk1XHU2MDliXHU2MDk3XHU2MDg3XHU2MDljXHU2MDhlXHU2MjE5XHU2MjQ2XHU2''@;'; put 'put ''MmYyXHU2MzEwXHU2MzU2XHU2MzJjXHU2MzQ0XHU2MzQ1XHU2MzM2XHU2MzQzXHU2M2U0XHU2MzM5XHU2MzRiXHU2MzRhXHU2MzNjXHU2MzI5XHU2MzQxXHU2MzM0XHU2MzU4XHU2MzU0XHU2MzU5XHU2MzJkXHU2MzQ3XHU2MzMzXHU2MzVhXHU2MzUxXHU2MzM4XHU2MzU3XHU2MzQwXHU2MzQ4''@;'; put 'put ''XHU2NTRhXHU2NTQ2XHU2NWM2XHU2NWMzXHU2NWM0XHU2NWMyXHU2NjRhXHU2NjVmXHU2NjQ3XHU2NjUxXHU2NzEyXHU2NzEzXHU2ODFmXHU2ODFhXHU2ODQ5XHU2ODMyXHU2ODMzXHU2ODNiXHU2ODRiXHU2ODRmXHU2ODE2XHU2ODMxXHU2ODFjXHU2ODM1XHU2ODJiXHU2ODJkXHU2ODJmXHU2''@;'; put 'put ''ODRlXHU2ODQ0XHU2ODM0XHU2ODFkXHU2ODEyXHU2ODE0XHU2ODI2XHU2ODI4XHU2ODJlXHU2ODRkXHU2ODNhXHU2ODI1XHU2ODIwXHU2YjJjXHU2YjJmXHU2YjJkXHU2YjMxXHU2YjM0XHU2YjZkXHU4MDgyXHU2Yjg4XHU2YmU2XHU2YmU0Il0sWyJkMjQwIiwiXHU2YmU4XHU2YmUzXHU2YmUy''@;'; put 'put ''XHU2YmU3XHU2YzI1XHU2ZDdhXHU2ZDYzXHU2ZDY0XHU2ZDc2XHU2ZDBkXHU2ZDYxXHU2ZDkyXHU2ZDU4XHU2ZDYyXHU2ZDZkXHU2ZDZmXHU2ZDkxXHU2ZDhkXHU2ZGVmXHU2ZDdmXHU2ZDg2XHU2ZDVlXHU2ZDY3XHU2ZDYwXHU2ZDk3XHU2ZDcwXHU2ZDdjXHU2ZDVmXHU2ZDgyXHU2ZDk4XHU2''@;'; put 'put ''ZDJmXHU2ZDY4XHU2ZDhiXHU2ZDdlXHU2ZDgwXHU2ZDg0XHU2ZDE2XHU2ZDgzXHU2ZDdiXHU2ZDdkXHU2ZDc1XHU2ZDkwXHU3MGRjXHU3MGQzXHU3MGQxXHU3MGRkXHU3MGNiXHU3ZjM5XHU3MGUyXHU3MGQ3XHU3MGQyXHU3MGRlXHU3MGUwXHU3MGQ0XHU3MGNkXHU3MGM1XHU3MGM2XHU3MGM3''@;'; put 'put ''XHU3MGRhXHU3MGNlXHU3MGUxXHU3MjQyXHU3Mjc4Il0sWyJkMmExIiwiXHU3Mjc3XHU3Mjc2XHU3MzAwXHU3MmZhXHU3MmY0XHU3MmZlXHU3MmY2XHU3MmYzXHU3MmZiXHU3MzAxXHU3M2QzXHU3M2Q5XHU3M2U1XHU3M2Q2XHU3M2JjXHU3M2U3XHU3M2UzXHU3M2U5XHU3M2RjXHU3M2QyXHU3''@;'; put 'put ''M2RiXHU3M2Q0XHU3M2RkXHU3M2RhXHU3M2Q3XHU3M2Q4XHU3M2U4XHU3NGRlXHU3NGRmXHU3NGY0XHU3NGY1XHU3NTIxXHU3NTViXHU3NTVmXHU3NWIwXHU3NWMxXHU3NWJiXHU3NWM0XHU3NWMwXHU3NWJmXHU3NWI2XHU3NWJhXHU3NjhhXHU3NmM5XHU3NzFkXHU3NzFiXHU3NzEwXHU3NzEz''@;'; put 'put ''XHU3NzEyXHU3NzIzXHU3NzExXHU3NzE1XHU3NzE5XHU3NzFhXHU3NzIyXHU3NzI3XHU3ODIzXHU3ODJjXHU3ODIyXHU3ODM1XHU3ODJmXHU3ODI4XHU3ODJlXHU3ODJiXHU3ODIxXHU3ODI5XHU3ODMzXHU3ODJhXHU3ODMxXHU3OTU0XHU3OTViXHU3OTRmXHU3OTVjXHU3OTUzXHU3OTUyXHU3''@;'; put 'put ''OTUxXHU3OWViXHU3OWVjXHU3OWUwXHU3OWVlXHU3OWVkXHU3OWVhXHU3OWRjXHU3OWRlXHU3OWRkXHU3YTg2XHU3YTg5XHU3YTg1XHU3YThiXHU3YThjXHU3YThhXHU3YTg3XHU3YWQ4XHU3YjEwIl0sWyJkMzQwIiwiXHU3YjA0XHU3YjEzXHU3YjA1XHU3YjBmXHU3YjA4XHU3YjBhXHU3YjBl''@;'; put 'put ''XHU3YjA5XHU3YjEyXHU3Yzg0XHU3YzkxXHU3YzhhXHU3YzhjXHU3Yzg4XHU3YzhkXHU3Yzg1XHU3ZDFlXHU3ZDFkXHU3ZDExXHU3ZDBlXHU3ZDE4XHU3ZDE2XHU3ZDEzXHU3ZDFmXHU3ZDEyXHU3ZDBmXHU3ZDBjXHU3ZjVjXHU3ZjYxXHU3ZjVlXHU3ZjYwXHU3ZjVkXHU3ZjViXHU3Zjk2XHU3''@;'; put 'put ''ZjkyXHU3ZmMzXHU3ZmMyXHU3ZmMwXHU4MDE2XHU4MDNlXHU4MDM5XHU4MGZhXHU4MGYyXHU4MGY5XHU4MGY1XHU4MTAxXHU4MGZiXHU4MTAwXHU4MjAxXHU4MjJmXHU4MjI1XHU4MzMzXHU4MzJkXHU4MzQ0XHU4MzE5XHU4MzUxXHU4MzI1XHU4MzU2XHU4MzNmXHU4MzQxXHU4MzI2XHU4MzFj''@;'; put 'put ''XHU4MzIyIl0sWyJkM2ExIiwiXHU4MzQyXHU4MzRlXHU4MzFiXHU4MzJhXHU4MzA4XHU4MzNjXHU4MzRkXHU4MzE2XHU4MzI0XHU4MzIwXHU4MzM3XHU4MzJmXHU4MzI5XHU4MzQ3XHU4MzQ1XHU4MzRjXHU4MzUzXHU4MzFlXHU4MzJjXHU4MzRiXHU4MzI3XHU4MzQ4XHU4NjUzXHU4NjUyXHU4''@;'; put 'put ''NmEyXHU4NmE4XHU4Njk2XHU4NjhkXHU4NjkxXHU4NjllXHU4Njg3XHU4Njk3XHU4Njg2XHU4NjhiXHU4NjlhXHU4Njg1XHU4NmE1XHU4Njk5XHU4NmExXHU4NmE3XHU4Njk1XHU4Njk4XHU4NjhlXHU4NjlkXHU4NjkwXHU4Njk0XHU4ODQzXHU4ODQ0XHU4ODZkXHU4ODc1XHU4ODc2XHU4ODcy''@;'; put 'put ''XHU4ODgwXHU4ODcxXHU4ODdmXHU4ODZmXHU4ODgzXHU4ODdlXHU4ODc0XHU4ODdjXHU4YTEyXHU4YzQ3XHU4YzU3XHU4YzdiXHU4Y2E0XHU4Y2EzXHU4ZDc2XHU4ZDc4XHU4ZGI1XHU4ZGI3XHU4ZGI2XHU4ZWQxXHU4ZWQzXHU4ZmZlXHU4ZmY1XHU5MDAyXHU4ZmZmXHU4ZmZiXHU5MDA0XHU4''@;'; put 'put ''ZmZjXHU4ZmY2XHU5MGQ2XHU5MGUwXHU5MGQ5XHU5MGRhXHU5MGUzXHU5MGRmXHU5MGU1XHU5MGQ4XHU5MGRiXHU5MGQ3XHU5MGRjXHU5MGU0XHU5MTUwIl0sWyJkNDQwIiwiXHU5MTRlXHU5MTRmXHU5MWQ1XHU5MWUyXHU5MWRhXHU5NjVjXHU5NjVmXHU5NmJjXHU5OGUzXHU5YWRmXHU5YjJm''@;'; put 'put ''XHU0ZTdmXHU1MDcwXHU1MDZhXHU1MDYxXHU1MDVlXHU1MDYwXHU1MDUzXHU1MDRiXHU1MDVkXHU1MDcyXHU1MDQ4XHU1MDRkXHU1MDQxXHU1MDViXHU1MDRhXHU1MDYyXHU1MDE1XHU1MDQ1XHU1MDVmXHU1MDY5XHU1MDZiXHU1MDYzXHU1MDY0XHU1MDQ2XHU1MDQwXHU1MDZlXHU1MDczXHU1''@;'; put 'put ''MDU3XHU1MDUxXHU1MWQwXHU1MjZiXHU1MjZkXHU1MjZjXHU1MjZlXHU1MmQ2XHU1MmQzXHU1MzJkXHU1MzljXHU1NTc1XHU1NTc2XHU1NTNjXHU1NTRkXHU1NTUwXHU1NTM0XHU1NTJhXHU1NTUxXHU1NTYyXHU1NTM2XHU1NTM1XHU1NTMwXHU1NTUyXHU1NTQ1Il0sWyJkNGExIiwiXHU1NTBj''@;'; put 'put ''XHU1NTMyXHU1NTY1XHU1NTRlXHU1NTM5XHU1NTQ4XHU1NTJkXHU1NTNiXHU1NTQwXHU1NTRiXHU1NzBhXHU1NzA3XHU1N2ZiXHU1ODE0XHU1N2UyXHU1N2Y2XHU1N2RjXHU1N2Y0XHU1ODAwXHU1N2VkXHU1N2ZkXHU1ODA4XHU1N2Y4XHU1ODBiXHU1N2YzXHU1N2NmXHU1ODA3XHU1N2VlXHU1''@;'; put 'put ''N2UzXHU1N2YyXHU1N2U1XHU1N2VjXHU1N2UxXHU1ODBlXHU1N2ZjXHU1ODEwXHU1N2U3XHU1ODAxXHU1ODBjXHU1N2YxXHU1N2U5XHU1N2YwXHU1ODBkXHU1ODA0XHU1OTVjXHU1YTYwXHU1YTU4XHU1YTU1XHU1YTY3XHU1YTVlXHU1YTM4XHU1YTM1XHU1YTZkXHU1YTUwXHU1YTVmXHU1YTY1''@;'; put 'put ''XHU1YTZjXHU1YTUzXHU1YTY0XHU1YTU3XHU1YTQzXHU1YTVkXHU1YTUyXHU1YTQ0XHU1YTViXHU1YTQ4XHU1YThlXHU1YTNlXHU1YTRkXHU1YTM5XHU1YTRjXHU1YTcwXHU1YTY5XHU1YTQ3XHU1YTUxXHU1YTU2XHU1YTQyXHU1YTVjXHU1YjcyXHU1YjZlXHU1YmMxXHU1YmMwXHU1YzU5XHU1''@;'; put 'put ''ZDFlXHU1ZDBiXHU1ZDFkXHU1ZDFhXHU1ZDIwXHU1ZDBjXHU1ZDI4XHU1ZDBkXHU1ZDI2XHU1ZDI1XHU1ZDBmIl0sWyJkNTQwIiwiXHU1ZDMwXHU1ZDEyXHU1ZDIzXHU1ZDFmXHU1ZDJlXHU1ZTNlXHU1ZTM0XHU1ZWIxXHU1ZWI0XHU1ZWI5XHU1ZWIyXHU1ZWIzXHU1ZjM2XHU1ZjM4XHU1Zjli''@;'; put 'put ''XHU1Zjk2XHU1ZjlmXHU2MDhhXHU2MDkwXHU2MDg2XHU2MGJlXHU2MGIwXHU2MGJhXHU2MGQzXHU2MGQ0XHU2MGNmXHU2MGU0XHU2MGQ5XHU2MGRkXHU2MGM4XHU2MGIxXHU2MGRiXHU2MGI3XHU2MGNhXHU2MGJmXHU2MGMzXHU2MGNkXHU2MGMwXHU2MzMyXHU2MzY1XHU2MzhhXHU2MzgyXHU2''@;'; put 'put ''MzdkXHU2M2JkXHU2MzllXHU2M2FkXHU2MzlkXHU2Mzk3XHU2M2FiXHU2MzhlXHU2MzZmXHU2Mzg3XHU2MzkwXHU2MzZlXHU2M2FmXHU2Mzc1XHU2MzljXHU2MzZkXHU2M2FlXHU2MzdjXHU2M2E0XHU2MzNiXHU2MzlmIl0sWyJkNWExIiwiXHU2Mzc4XHU2Mzg1XHU2MzgxXHU2MzkxXHU2Mzhk''@;'; put 'put ''XHU2MzcwXHU2NTUzXHU2NWNkXHU2NjY1XHU2NjYxXHU2NjViXHU2NjU5XHU2NjVjXHU2NjYyXHU2NzE4XHU2ODc5XHU2ODg3XHU2ODkwXHU2ODljXHU2ODZkXHU2ODZlXHU2OGFlXHU2OGFiXHU2OTU2XHU2ODZmXHU2OGEzXHU2OGFjXHU2OGE5XHU2ODc1XHU2ODc0XHU2OGIyXHU2ODhmXHU2''@;'; put 'put ''ODc3XHU2ODkyXHU2ODdjXHU2ODZiXHU2ODcyXHU2OGFhXHU2ODgwXHU2ODcxXHU2ODdlXHU2ODliXHU2ODk2XHU2ODhiXHU2OGEwXHU2ODg5XHU2OGE0XHU2ODc4XHU2ODdiXHU2ODkxXHU2ODhjXHU2ODhhXHU2ODdkXHU2YjM2XHU2YjMzXHU2YjM3XHU2YjM4XHU2YjkxXHU2YjhmXHU2Yjhk''@;'; put 'put ''XHU2YjhlXHU2YjhjXHU2YzJhXHU2ZGMwXHU2ZGFiXHU2ZGI0XHU2ZGIzXHU2ZTc0XHU2ZGFjXHU2ZGU5XHU2ZGUyXHU2ZGI3XHU2ZGY2XHU2ZGQ0XHU2ZTAwXHU2ZGM4XHU2ZGUwXHU2ZGRmXHU2ZGQ2XHU2ZGJlXHU2ZGU1XHU2ZGRjXHU2ZGRkXHU2ZGRiXHU2ZGY0XHU2ZGNhXHU2ZGJkXHU2''@;'; put 'put ''ZGVkXHU2ZGYwXHU2ZGJhXHU2ZGQ1XHU2ZGMyXHU2ZGNmXHU2ZGM5Il0sWyJkNjQwIiwiXHU2ZGQwXHU2ZGYyXHU2ZGQzXHU2ZGZkXHU2ZGQ3XHU2ZGNkXHU2ZGUzXHU2ZGJiXHU3MGZhXHU3MTBkXHU3MGY3XHU3MTE3XHU3MGY0XHU3MTBjXHU3MGYwXHU3MTA0XHU3MGYzXHU3MTEwXHU3MGZj''@;'; put 'put ''XHU3MGZmXHU3MTA2XHU3MTEzXHU3MTAwXHU3MGY4XHU3MGY2XHU3MTBiXHU3MTAyXHU3MTBlXHU3MjdlXHU3MjdiXHU3MjdjXHU3MjdmXHU3MzFkXHU3MzE3XHU3MzA3XHU3MzExXHU3MzE4XHU3MzBhXHU3MzA4XHU3MmZmXHU3MzBmXHU3MzFlXHU3Mzg4XHU3M2Y2XHU3M2Y4XHU3M2Y1XHU3''@;'; put 'put ''NDA0XHU3NDAxXHU3M2ZkXHU3NDA3XHU3NDAwXHU3M2ZhXHU3M2ZjXHU3M2ZmXHU3NDBjXHU3NDBiXHU3M2Y0XHU3NDA4XHU3NTY0XHU3NTYzXHU3NWNlXHU3NWQyXHU3NWNmIl0sWyJkNmExIiwiXHU3NWNiXHU3NWNjXHU3NWQxXHU3NWQwXHU3NjhmXHU3Njg5XHU3NmQzXHU3NzM5XHU3NzJm''@;'; put 'put ''XHU3NzJkXHU3NzMxXHU3NzMyXHU3NzM0XHU3NzMzXHU3NzNkXHU3NzI1XHU3NzNiXHU3NzM1XHU3ODQ4XHU3ODUyXHU3ODQ5XHU3ODRkXHU3ODRhXHU3ODRjXHU3ODI2XHU3ODQ1XHU3ODUwXHU3OTY0XHU3OTY3XHU3OTY5XHU3OTZhXHU3OTYzXHU3OTZiXHU3OTYxXHU3OWJiXHU3OWZhXHU3''@;'; put 'put ''OWY4XHU3OWY2XHU3OWY3XHU3YThmXHU3YTk0XHU3YTkwXHU3YjM1XHU3YjQ3XHU3YjM0XHU3YjI1XHU3YjMwXHU3YjIyXHU3YjI0XHU3YjMzXHU3YjE4XHU3YjJhXHU3YjFkXHU3YjMxXHU3YjJiXHU3YjJkXHU3YjJmXHU3YjMyXHU3YjM4XHU3YjFhXHU3YjIzXHU3Yzk0XHU3Yzk4XHU3Yzk2''@;'; put 'put ''XHU3Y2EzXHU3ZDM1XHU3ZDNkXHU3ZDM4XHU3ZDM2XHU3ZDNhXHU3ZDQ1XHU3ZDJjXHU3ZDI5XHU3ZDQxXHU3ZDQ3XHU3ZDNlXHU3ZDNmXHU3ZDRhXHU3ZDNiXHU3ZDI4XHU3ZjYzXHU3Zjk1XHU3ZjljXHU3ZjlkXHU3ZjliXHU3ZmNhXHU3ZmNiXHU3ZmNkXHU3ZmQwXHU3ZmQxXHU3ZmM3XHU3''@;'; put 'put ''ZmNmXHU3ZmM5XHU4MDFmIl0sWyJkNzQwIiwiXHU4MDFlXHU4MDFiXHU4MDQ3XHU4MDQzXHU4MDQ4XHU4MTE4XHU4MTI1XHU4MTE5XHU4MTFiXHU4MTJkXHU4MTFmXHU4MTJjXHU4MTFlXHU4MTIxXHU4MTE1XHU4MTI3XHU4MTFkXHU4MTIyXHU4MjExXHU4MjM4XHU4MjMzXHU4MjNhXHU4MjM0''@;'; put 'put ''XHU4MjMyXHU4Mjc0XHU4MzkwXHU4M2EzXHU4M2E4XHU4MzhkXHU4MzdhXHU4MzczXHU4M2E0XHU4Mzc0XHU4MzhmXHU4MzgxXHU4Mzk1XHU4Mzk5XHU4Mzc1XHU4Mzk0XHU4M2E5XHU4MzdkXHU4MzgzXHU4MzhjXHU4MzlkXHU4MzliXHU4M2FhXHU4MzhiXHU4MzdlXHU4M2E1XHU4M2FmXHU4''@;'; put 'put ''Mzg4XHU4Mzk3XHU4M2IwXHU4MzdmXHU4M2E2XHU4Mzg3XHU4M2FlXHU4Mzc2XHU4MzlhXHU4NjU5XHU4NjU2XHU4NmJmXHU4NmI3Il0sWyJkN2ExIiwiXHU4NmMyXHU4NmMxXHU4NmM1XHU4NmJhXHU4NmIwXHU4NmM4XHU4NmI5XHU4NmIzXHU4NmI4XHU4NmNjXHU4NmI0XHU4NmJiXHU4NmJj''@;'; put 'put ''XHU4NmMzXHU4NmJkXHU4NmJlXHU4ODUyXHU4ODg5XHU4ODk1XHU4OGE4XHU4OGEyXHU4OGFhXHU4ODlhXHU4ODkxXHU4OGExXHU4ODlmXHU4ODk4XHU4OGE3XHU4ODk5XHU4ODliXHU4ODk3XHU4OGE0XHU4OGFjXHU4ODhjXHU4ODkzXHU4ODhlXHU4OTgyXHU4OWQ2XHU4OWQ5XHU4OWQ1XHU4''@;'; put 'put ''YTMwXHU4YTI3XHU4YTJjXHU4YTFlXHU4YzM5XHU4YzNiXHU4YzVjXHU4YzVkXHU4YzdkXHU4Y2E1XHU4ZDdkXHU4ZDdiXHU4ZDc5XHU4ZGJjXHU4ZGMyXHU4ZGI5XHU4ZGJmXHU4ZGMxXHU4ZWQ4XHU4ZWRlXHU4ZWRkXHU4ZWRjXHU4ZWQ3XHU4ZWUwXHU4ZWUxXHU5MDI0XHU5MDBiXHU5MDEx''@;'; put 'put ''XHU5MDFjXHU5MDBjXHU5MDIxXHU5MGVmXHU5MGVhXHU5MGYwXHU5MGY0XHU5MGYyXHU5MGYzXHU5MGQ0XHU5MGViXHU5MGVjXHU5MGU5XHU5MTU2XHU5MTU4XHU5MTVhXHU5MTUzXHU5MTU1XHU5MWVjXHU5MWY0XHU5MWYxXHU5MWYzXHU5MWY4XHU5MWU0XHU5MWY5XHU5MWVhIl0sWyJkODQw''@;'; put 'put ''IiwiXHU5MWViXHU5MWY3XHU5MWU4XHU5MWVlXHU5NTdhXHU5NTg2XHU5NTg4XHU5NjdjXHU5NjZkXHU5NjZiXHU5NjcxXHU5NjZmXHU5NmJmXHU5NzZhXHU5ODA0XHU5OGU1XHU5OTk3XHU1MDliXHU1MDk1XHU1MDk0XHU1MDllXHU1MDhiXHU1MGEzXHU1MDgzXHU1MDhjXHU1MDhlXHU1MDlk''@;'; put 'put ''XHU1MDY4XHU1MDljXHU1MDkyXHU1MDgyXHU1MDg3XHU1MTVmXHU1MWQ0XHU1MzEyXHU1MzExXHU1M2E0XHU1M2E3XHU1NTkxXHU1NWE4XHU1NWE1XHU1NWFkXHU1NTc3XHU1NjQ1XHU1NWEyXHU1NTkzXHU1NTg4XHU1NThmXHU1NWI1XHU1NTgxXHU1NWEzXHU1NTkyXHU1NWE0XHU1NTdkXHU1''@;'; put 'put ''NThjXHU1NWE2XHU1NTdmXHU1NTk1XHU1NWExXHU1NThlXHU1NzBjXHU1ODI5XHU1ODM3Il0sWyJkOGExIiwiXHU1ODE5XHU1ODFlXHU1ODI3XHU1ODIzXHU1ODI4XHU1N2Y1XHU1ODQ4XHU1ODI1XHU1ODFjXHU1ODFiXHU1ODMzXHU1ODNmXHU1ODM2XHU1ODJlXHU1ODM5XHU1ODM4XHU1ODJk''@;'; put 'put ''XHU1ODJjXHU1ODNiXHU1OTYxXHU1YWFmXHU1YTk0XHU1YTlmXHU1YTdhXHU1YWEyXHU1YTllXHU1YTc4XHU1YWE2XHU1YTdjXHU1YWE1XHU1YWFjXHU1YTk1XHU1YWFlXHU1YTM3XHU1YTg0XHU1YThhXHU1YTk3XHU1YTgzXHU1YThiXHU1YWE5XHU1YTdiXHU1YTdkXHU1YThjXHU1YTljXHU1''@;'; put 'put ''YThmXHU1YTkzXHU1YTlkXHU1YmVhXHU1YmNkXHU1YmNiXHU1YmQ0XHU1YmQxXHU1YmNhXHU1YmNlXHU1YzBjXHU1YzMwXHU1ZDM3XHU1ZDQzXHU1ZDZiXHU1ZDQxXHU1ZDRiXHU1ZDNmXHU1ZDM1XHU1ZDUxXHU1ZDRlXHU1ZDU1XHU1ZDMzXHU1ZDNhXHU1ZDUyXHU1ZDNkXHU1ZDMxXHU1ZDU5''@;'; put 'put ''XHU1ZDQyXHU1ZDM5XHU1ZDQ5XHU1ZDM4XHU1ZDNjXHU1ZDMyXHU1ZDM2XHU1ZDQwXHU1ZDQ1XHU1ZTQ0XHU1ZTQxXHU1ZjU4XHU1ZmE2XHU1ZmE1XHU1ZmFiXHU2MGM5XHU2MGI5XHU2MGNjXHU2MGUyXHU2MGNlXHU2MGM0XHU2MTE0Il0sWyJkOTQwIiwiXHU2MGYyXHU2MTBhXHU2MTE2XHU2''@;'; put 'put ''MTA1XHU2MGY1XHU2MTEzXHU2MGY4XHU2MGZjXHU2MGZlXHU2MGMxXHU2MTAzXHU2MTE4XHU2MTFkXHU2MTEwXHU2MGZmXHU2MTA0XHU2MTBiXHU2MjRhXHU2Mzk0XHU2M2IxXHU2M2IwXHU2M2NlXHU2M2U1XHU2M2U4XHU2M2VmXHU2M2MzXHU2NDlkXHU2M2YzXHU2M2NhXHU2M2UwXHU2M2Y2''@;'; put 'put ''XHU2M2Q1XHU2M2YyXHU2M2Y1XHU2NDYxXHU2M2RmXHU2M2JlXHU2M2RkXHU2M2RjXHU2M2M0XHU2M2Q4XHU2M2QzXHU2M2MyXHU2M2M3XHU2M2NjXHU2M2NiXHU2M2M4XHU2M2YwXHU2M2Q3XHU2M2Q5XHU2NTMyXHU2NTY3XHU2NTZhXHU2NTY0XHU2NTVjXHU2NTY4XHU2NTY1XHU2NThjXHU2''@;'; put 'put ''NTlkXHU2NTllXHU2NWFlXHU2NWQwXHU2NWQyIl0sWyJkOWExIiwiXHU2NjdjXHU2NjZjXHU2NjdiXHU2NjgwXHU2NjcxXHU2Njc5XHU2NjZhXHU2NjcyXHU2NzAxXHU2OTBjXHU2OGQzXHU2OTA0XHU2OGRjXHU2OTJhXHU2OGVjXHU2OGVhXHU2OGYxXHU2OTBmXHU2OGQ2XHU2OGY3XHU2OGVi''@;'; put 'put ''XHU2OGU0XHU2OGY2XHU2OTEzXHU2OTEwXHU2OGYzXHU2OGUxXHU2OTA3XHU2OGNjXHU2OTA4XHU2OTcwXHU2OGI0XHU2OTExXHU2OGVmXHU2OGM2XHU2OTE0XHU2OGY4XHU2OGQwXHU2OGZkXHU2OGZjXHU2OGU4XHU2OTBiXHU2OTBhXHU2OTE3XHU2OGNlXHU2OGM4XHU2OGRkXHU2OGRlXHU2''@;'; put 'put ''OGU2XHU2OGY0XHU2OGQxXHU2OTA2XHU2OGQ0XHU2OGU5XHU2OTE1XHU2OTI1XHU2OGM3XHU2YjM5XHU2YjNiXHU2YjNmXHU2YjNjXHU2Yjk0XHU2Yjk3XHU2Yjk5XHU2Yjk1XHU2YmJkXHU2YmYwXHU2YmYyXHU2YmYzXHU2YzMwXHU2ZGZjXHU2ZTQ2XHU2ZTQ3XHU2ZTFmXHU2ZTQ5XHU2ZTg4''@;'; put 'put ''XHU2ZTNjXHU2ZTNkXHU2ZTQ1XHU2ZTYyXHU2ZTJiXHU2ZTNmXHU2ZTQxXHU2ZTVkXHU2ZTczXHU2ZTFjXHU2ZTMzXHU2ZTRiXHU2ZTQwXHU2ZTUxXHU2ZTNiXHU2ZTAzXHU2ZTJlXHU2ZTVlIl0sWyJkYTQwIiwiXHU2ZTY4XHU2ZTVjXHU2ZTYxXHU2ZTMxXHU2ZTI4XHU2ZTYwXHU2ZTcxXHU2''@;'; put 'put ''ZTZiXHU2ZTM5XHU2ZTIyXHU2ZTMwXHU2ZTUzXHU2ZTY1XHU2ZTI3XHU2ZTc4XHU2ZTY0XHU2ZTc3XHU2ZTU1XHU2ZTc5XHU2ZTUyXHU2ZTY2XHU2ZTM1XHU2ZTM2XHU2ZTVhXHU3MTIwXHU3MTFlXHU3MTJmXHU3MGZiXHU3MTJlXHU3MTMxXHU3MTIzXHU3MTI1XHU3MTIyXHU3MTMyXHU3MTFm''@;'; put 'put ''XHU3MTI4XHU3MTNhXHU3MTFiXHU3MjRiXHU3MjVhXHU3Mjg4XHU3Mjg5XHU3Mjg2XHU3Mjg1XHU3MjhiXHU3MzEyXHU3MzBiXHU3MzMwXHU3MzIyXHU3MzMxXHU3MzMzXHU3MzI3XHU3MzMyXHU3MzJkXHU3MzI2XHU3MzIzXHU3MzM1XHU3MzBjXHU3NDJlXHU3NDJjXHU3NDMwXHU3NDJiXHU3''@;'; put 'put ''NDE2Il0sWyJkYWExIiwiXHU3NDFhXHU3NDIxXHU3NDJkXHU3NDMxXHU3NDI0XHU3NDIzXHU3NDFkXHU3NDI5XHU3NDIwXHU3NDMyXHU3NGZiXHU3NTJmXHU3NTZmXHU3NTZjXHU3NWU3XHU3NWRhXHU3NWUxXHU3NWU2XHU3NWRkXHU3NWRmXHU3NWU0XHU3NWQ3XHU3Njk1XHU3NjkyXHU3NmRh''@;'; put 'put ''XHU3NzQ2XHU3NzQ3XHU3NzQ0XHU3NzRkXHU3NzQ1XHU3NzRhXHU3NzRlXHU3NzRiXHU3NzRjXHU3N2RlXHU3N2VjXHU3ODYwXHU3ODY0XHU3ODY1XHU3ODVjXHU3ODZkXHU3ODcxXHU3ODZhXHU3ODZlXHU3ODcwXHU3ODY5XHU3ODY4XHU3ODVlXHU3ODYyXHU3OTc0XHU3OTczXHU3OTcyXHU3''@;'; put 'put ''OTcwXHU3YTAyXHU3YTBhXHU3YTAzXHU3YTBjXHU3YTA0XHU3YTk5XHU3YWU2XHU3YWU0XHU3YjRhXHU3YjNiXHU3YjQ0XHU3YjQ4XHU3YjRjXHU3YjRlXHU3YjQwXHU3YjU4XHU3YjQ1XHU3Y2EyXHU3YzllXHU3Y2E4XHU3Y2ExXHU3ZDU4XHU3ZDZmXHU3ZDYzXHU3ZDUzXHU3ZDU2XHU3ZDY3''@;'; put 'put ''XHU3ZDZhXHU3ZDRmXHU3ZDZkXHU3ZDVjXHU3ZDZiXHU3ZDUyXHU3ZDU0XHU3ZDY5XHU3ZDUxXHU3ZDVmXHU3ZDRlXHU3ZjNlXHU3ZjNmXHU3ZjY1Il0sWyJkYjQwIiwiXHU3ZjY2XHU3ZmEyXHU3ZmEwXHU3ZmExXHU3ZmQ3XHU4MDUxXHU4MDRmXHU4MDUwXHU4MGZlXHU4MGQ0XHU4MTQzXHU4''@;'; put 'put ''MTRhXHU4MTUyXHU4MTRmXHU4MTQ3XHU4MTNkXHU4MTRkXHU4MTNhXHU4MWU2XHU4MWVlXHU4MWY3XHU4MWY4XHU4MWY5XHU4MjA0XHU4MjNjXHU4MjNkXHU4MjNmXHU4Mjc1XHU4MzNiXHU4M2NmXHU4M2Y5XHU4NDIzXHU4M2MwXHU4M2U4XHU4NDEyXHU4M2U3XHU4M2U0XHU4M2ZjXHU4M2Y2''@;'; put 'put ''XHU4NDEwXHU4M2M2XHU4M2M4XHU4M2ViXHU4M2UzXHU4M2JmXHU4NDAxXHU4M2RkXHU4M2U1XHU4M2Q4XHU4M2ZmXHU4M2UxXHU4M2NiXHU4M2NlXHU4M2Q2XHU4M2Y1XHU4M2M5XHU4NDA5XHU4NDBmXHU4M2RlXHU4NDExXHU4NDA2XHU4M2MyXHU4M2YzIl0sWyJkYmExIiwiXHU4M2Q1XHU4''@;'; put 'put ''M2ZhXHU4M2M3XHU4M2QxXHU4M2VhXHU4NDEzXHU4M2MzXHU4M2VjXHU4M2VlXHU4M2M0XHU4M2ZiXHU4M2Q3XHU4M2UyXHU4NDFiXHU4M2RiXHU4M2ZlXHU4NmQ4XHU4NmUyXHU4NmU2XHU4NmQzXHU4NmUzXHU4NmRhXHU4NmVhXHU4NmRkXHU4NmViXHU4NmRjXHU4NmVjXHU4NmU5XHU4NmQ3''@;'; put 'put ''XHU4NmU4XHU4NmQxXHU4ODQ4XHU4ODU2XHU4ODU1XHU4OGJhXHU4OGQ3XHU4OGI5XHU4OGI4XHU4OGMwXHU4OGJlXHU4OGI2XHU4OGJjXHU4OGI3XHU4OGJkXHU4OGIyXHU4OTAxXHU4OGM5XHU4OTk1XHU4OTk4XHU4OTk3XHU4OWRkXHU4OWRhXHU4OWRiXHU4YTRlXHU4YTRkXHU4YTM5XHU4''@;'; put 'put ''YTU5XHU4YTQwXHU4YTU3XHU4YTU4XHU4YTQ0XHU4YTQ1XHU4YTUyXHU4YTQ4XHU4YTUxXHU4YTRhXHU4YTRjXHU4YTRmXHU4YzVmXHU4YzgxXHU4YzgwXHU4Y2JhXHU4Y2JlXHU4Y2IwXHU4Y2I5XHU4Y2I1XHU4ZDg0XHU4ZDgwXHU4ZDg5XHU4ZGQ4XHU4ZGQzXHU4ZGNkXHU4ZGM3XHU4ZGQ2''@;'; put 'put ''XHU4ZGRjXHU4ZGNmXHU4ZGQ1XHU4ZGQ5XHU4ZGM4XHU4ZGQ3XHU4ZGM1XHU4ZWVmXHU4ZWY3XHU4ZWZhIl0sWyJkYzQwIiwiXHU4ZWY5XHU4ZWU2XHU4ZWVlXHU4ZWU1XHU4ZWY1XHU4ZWU3XHU4ZWU4XHU4ZWY2XHU4ZWViXHU4ZWYxXHU4ZWVjXHU4ZWY0XHU4ZWU5XHU5MDJkXHU5MDM0XHU5''@;'; put 'put ''MDJmXHU5MTA2XHU5MTJjXHU5MTA0XHU5MGZmXHU5MGZjXHU5MTA4XHU5MGY5XHU5MGZiXHU5MTAxXHU5MTAwXHU5MTA3XHU5MTA1XHU5MTAzXHU5MTYxXHU5MTY0XHU5MTVmXHU5MTYyXHU5MTYwXHU5MjAxXHU5MjBhXHU5MjI1XHU5MjAzXHU5MjFhXHU5MjI2XHU5MjBmXHU5MjBjXHU5MjAw''@;'; put 'put ''XHU5MjEyXHU5MWZmXHU5MWZkXHU5MjA2XHU5MjA0XHU5MjI3XHU5MjAyXHU5MjFjXHU5MjI0XHU5MjE5XHU5MjE3XHU5MjA1XHU5MjE2XHU5NTdiXHU5NThkXHU5NThjXHU5NTkwXHU5Njg3XHU5NjdlXHU5Njg4Il0sWyJkY2ExIiwiXHU5Njg5XHU5NjgzXHU5NjgwXHU5NmMyXHU5NmM4XHU5''@;'; put 'put ''NmMzXHU5NmYxXHU5NmYwXHU5NzZjXHU5NzcwXHU5NzZlXHU5ODA3XHU5OGE5XHU5OGViXHU5Y2U2XHU5ZWY5XHU0ZTgzXHU0ZTg0XHU0ZWI2XHU1MGJkXHU1MGJmXHU1MGM2XHU1MGFlXHU1MGM0XHU1MGNhXHU1MGI0XHU1MGM4XHU1MGMyXHU1MGIwXHU1MGMxXHU1MGJhXHU1MGIxXHU1MGNi''@;'; put 'put ''XHU1MGM5XHU1MGI2XHU1MGI4XHU1MWQ3XHU1MjdhXHU1Mjc4XHU1MjdiXHU1MjdjXHU1NWMzXHU1NWRiXHU1NWNjXHU1NWQwXHU1NWNiXHU1NWNhXHU1NWRkXHU1NWMwXHU1NWQ0XHU1NWM0XHU1NWU5XHU1NWJmXHU1NWQyXHU1NThkXHU1NWNmXHU1NWQ1XHU1NWUyXHU1NWQ2XHU1NWM4XHU1''@;'; put 'put ''NWYyXHU1NWNkXHU1NWQ5XHU1NWMyXHU1NzE0XHU1ODUzXHU1ODY4XHU1ODY0XHU1ODRmXHU1ODRkXHU1ODQ5XHU1ODZmXHU1ODU1XHU1ODRlXHU1ODVkXHU1ODU5XHU1ODY1XHU1ODViXHU1ODNkXHU1ODYzXHU1ODcxXHU1OGZjXHU1YWM3XHU1YWM0XHU1YWNiXHU1YWJhXHU1YWI4XHU1YWIx''@;'; put 'put ''XHU1YWI1XHU1YWIwXHU1YWJmXHU1YWM4XHU1YWJiXHU1YWM2Il0sWyJkZDQwIiwiXHU1YWI3XHU1YWMwXHU1YWNhXHU1YWI0XHU1YWI2XHU1YWNkXHU1YWI5XHU1YTkwXHU1YmQ2XHU1YmQ4XHU1YmQ5XHU1YzFmXHU1YzMzXHU1ZDcxXHU1ZDYzXHU1ZDRhXHU1ZDY1XHU1ZDcyXHU1ZDZjXHU1''@;'; put 'put ''ZDVlXHU1ZDY4XHU1ZDY3XHU1ZDYyXHU1ZGYwXHU1ZTRmXHU1ZTRlXHU1ZTRhXHU1ZTRkXHU1ZTRiXHU1ZWM1XHU1ZWNjXHU1ZWM2XHU1ZWNiXHU1ZWM3XHU1ZjQwXHU1ZmFmXHU1ZmFkXHU2MGY3XHU2MTQ5XHU2MTRhXHU2MTJiXHU2MTQ1XHU2MTM2XHU2MTMyXHU2MTJlXHU2MTQ2XHU2MTJm''@;'; put 'put ''XHU2MTRmXHU2MTI5XHU2MTQwXHU2MjIwXHU5MTY4XHU2MjIzXHU2MjI1XHU2MjI0XHU2M2M1XHU2M2YxXHU2M2ViXHU2NDEwXHU2NDEyXHU2NDA5XHU2NDIwXHU2NDI0Il0sWyJkZGExIiwiXHU2NDMzXHU2NDQzXHU2NDFmXHU2NDE1XHU2NDE4XHU2NDM5XHU2NDM3XHU2NDIyXHU2NDIzXHU2''@;'; put 'put ''NDBjXHU2NDI2XHU2NDMwXHU2NDI4XHU2NDQxXHU2NDM1XHU2NDJmXHU2NDBhXHU2NDFhXHU2NDQwXHU2NDI1XHU2NDI3XHU2NDBiXHU2M2U3XHU2NDFiXHU2NDJlXHU2NDIxXHU2NDBlXHU2NTZmXHU2NTkyXHU2NWQzXHU2Njg2XHU2NjhjXHU2Njk1XHU2NjkwXHU2NjhiXHU2NjhhXHU2Njk5''@;'; put 'put ''XHU2Njk0XHU2Njc4XHU2NzIwXHU2OTY2XHU2OTVmXHU2OTM4XHU2OTRlXHU2OTYyXHU2OTcxXHU2OTNmXHU2OTQ1XHU2OTZhXHU2OTM5XHU2OTQyXHU2OTU3XHU2OTU5XHU2OTdhXHU2OTQ4XHU2OTQ5XHU2OTM1XHU2OTZjXHU2OTMzXHU2OTNkXHU2OTY1XHU2OGYwXHU2OTc4XHU2OTM0XHU2''@;'; put 'put ''OTY5XHU2OTQwXHU2OTZmXHU2OTQ0XHU2OTc2XHU2OTU4XHU2OTQxXHU2OTc0XHU2OTRjXHU2OTNiXHU2OTRiXHU2OTM3XHU2OTVjXHU2OTRmXHU2OTUxXHU2OTMyXHU2OTUyXHU2OTJmXHU2OTdiXHU2OTNjXHU2YjQ2XHU2YjQ1XHU2YjQzXHU2YjQyXHU2YjQ4XHU2YjQxXHU2YjliXHVmYTBk''@;'; put 'put ''XHU2YmZiXHU2YmZjIl0sWyJkZTQwIiwiXHU2YmY5XHU2YmY3XHU2YmY4XHU2ZTliXHU2ZWQ2XHU2ZWM4XHU2ZThmXHU2ZWMwXHU2ZTlmXHU2ZTkzXHU2ZTk0XHU2ZWEwXHU2ZWIxXHU2ZWI5XHU2ZWM2XHU2ZWQyXHU2ZWJkXHU2ZWMxXHU2ZTllXHU2ZWM5XHU2ZWI3XHU2ZWIwXHU2ZWNkXHU2''@;'; put 'put ''ZWE2XHU2ZWNmXHU2ZWIyXHU2ZWJlXHU2ZWMzXHU2ZWRjXHU2ZWQ4XHU2ZTk5XHU2ZTkyXHU2ZThlXHU2ZThkXHU2ZWE0XHU2ZWExXHU2ZWJmXHU2ZWIzXHU2ZWQwXHU2ZWNhXHU2ZTk3XHU2ZWFlXHU2ZWEzXHU3MTQ3XHU3MTU0XHU3MTUyXHU3MTYzXHU3MTYwXHU3MTQxXHU3MTVkXHU3MTYy''@;'; put 'put ''XHU3MTcyXHU3MTc4XHU3MTZhXHU3MTYxXHU3MTQyXHU3MTU4XHU3MTQzXHU3MTRiXHU3MTcwXHU3MTVmXHU3MTUwXHU3MTUzIl0sWyJkZWExIiwiXHU3MTQ0XHU3MTRkXHU3MTVhXHU3MjRmXHU3MjhkXHU3MjhjXHU3MjkxXHU3MjkwXHU3MjhlXHU3MzNjXHU3MzQyXHU3MzNiXHU3MzNhXHU3''@;'; put 'put ''MzQwXHU3MzRhXHU3MzQ5XHU3NDQ0XHU3NDRhXHU3NDRiXHU3NDUyXHU3NDUxXHU3NDU3XHU3NDQwXHU3NDRmXHU3NDUwXHU3NDRlXHU3NDQyXHU3NDQ2XHU3NDRkXHU3NDU0XHU3NGUxXHU3NGZmXHU3NGZlXHU3NGZkXHU3NTFkXHU3NTc5XHU3NTc3XHU2OTgzXHU3NWVmXHU3NjBmXHU3NjAz''@;'; put 'put ''XHU3NWY3XHU3NWZlXHU3NWZjXHU3NWY5XHU3NWY4XHU3NjEwXHU3NWZiXHU3NWY2XHU3NWVkXHU3NWY1XHU3NWZkXHU3Njk5XHU3NmI1XHU3NmRkXHU3NzU1XHU3NzVmXHU3NzYwXHU3NzUyXHU3NzU2XHU3NzVhXHU3NzY5XHU3NzY3XHU3NzU0XHU3NzU5XHU3NzZkXHU3N2UwXHU3ODg3XHU3''@;'; put 'put ''ODlhXHU3ODk0XHU3ODhmXHU3ODg0XHU3ODk1XHU3ODg1XHU3ODg2XHU3OGExXHU3ODgzXHU3ODc5XHU3ODk5XHU3ODgwXHU3ODk2XHU3ODdiXHU3OTdjXHU3OTgyXHU3OTdkXHU3OTc5XHU3YTExXHU3YTE4XHU3YTE5XHU3YTEyXHU3YTE3XHU3YTE1XHU3YTIyXHU3YTEzIl0sWyJkZjQwIiwi''@;'; put 'put ''XHU3YTFiXHU3YTEwXHU3YWEzXHU3YWEyXHU3YTllXHU3YWViXHU3YjY2XHU3YjY0XHU3YjZkXHU3Yjc0XHU3YjY5XHU3YjcyXHU3YjY1XHU3YjczXHU3YjcxXHU3YjcwXHU3YjYxXHU3Yjc4XHU3Yjc2XHU3YjYzXHU3Y2IyXHU3Y2I0XHU3Y2FmXHU3ZDg4XHU3ZDg2XHU3ZDgwXHU3ZDhkXHU3''@;'; put 'put ''ZDdmXHU3ZDg1XHU3ZDdhXHU3ZDhlXHU3ZDdiXHU3ZDgzXHU3ZDdjXHU3ZDhjXHU3ZDk0XHU3ZDg0XHU3ZDdkXHU3ZDkyXHU3ZjZkXHU3ZjZiXHU3ZjY3XHU3ZjY4XHU3ZjZjXHU3ZmE2XHU3ZmE1XHU3ZmE3XHU3ZmRiXHU3ZmRjXHU4MDIxXHU4MTY0XHU4MTYwXHU4MTc3XHU4MTVjXHU4MTY5''@;'; put 'put ''XHU4MTViXHU4MTYyXHU4MTcyXHU2NzIxXHU4MTVlXHU4MTc2XHU4MTY3XHU4MTZmIl0sWyJkZmExIiwiXHU4MTQ0XHU4MTYxXHU4MjFkXHU4MjQ5XHU4MjQ0XHU4MjQwXHU4MjQyXHU4MjQ1XHU4NGYxXHU4NDNmXHU4NDU2XHU4NDc2XHU4NDc5XHU4NDhmXHU4NDhkXHU4NDY1XHU4NDUxXHU4''@;'; put 'put ''NDQwXHU4NDg2XHU4NDY3XHU4NDMwXHU4NDRkXHU4NDdkXHU4NDVhXHU4NDU5XHU4NDc0XHU4NDczXHU4NDVkXHU4NTA3XHU4NDVlXHU4NDM3XHU4NDNhXHU4NDM0XHU4NDdhXHU4NDQzXHU4NDc4XHU4NDMyXHU4NDQ1XHU4NDI5XHU4M2Q5XHU4NDRiXHU4NDJmXHU4NDQyXHU4NDJkXHU4NDVm''@;'; put 'put ''XHU4NDcwXHU4NDM5XHU4NDRlXHU4NDRjXHU4NDUyXHU4NDZmXHU4NGM1XHU4NDhlXHU4NDNiXHU4NDQ3XHU4NDM2XHU4NDMzXHU4NDY4XHU4NDdlXHU4NDQ0XHU4NDJiXHU4NDYwXHU4NDU0XHU4NDZlXHU4NDUwXHU4NzBiXHU4NzA0XHU4NmY3XHU4NzBjXHU4NmZhXHU4NmQ2XHU4NmY1XHU4''@;'; put 'put ''NzRkXHU4NmY4XHU4NzBlXHU4NzA5XHU4NzAxXHU4NmY2XHU4NzBkXHU4NzA1XHU4OGQ2XHU4OGNiXHU4OGNkXHU4OGNlXHU4OGRlXHU4OGRiXHU4OGRhXHU4OGNjXHU4OGQwXHU4OTg1XHU4OTliXHU4OWRmXHU4OWU1XHU4OWU0Il0sWyJlMDQwIiwiXHU4OWUxXHU4OWUwXHU4OWUyXHU4OWRj''@;'; put 'put ''XHU4OWU2XHU4YTc2XHU4YTg2XHU4YTdmXHU4YTYxXHU4YTNmXHU4YTc3XHU4YTgyXHU4YTg0XHU4YTc1XHU4YTgzXHU4YTgxXHU4YTc0XHU4YTdhXHU4YzNjXHU4YzRiXHU4YzRhXHU4YzY1XHU4YzY0XHU4YzY2XHU4Yzg2XHU4Yzg0XHU4Yzg1XHU4Y2NjXHU4ZDY4XHU4ZDY5XHU4ZDkxXHU4''@;'; put 'put ''ZDhjXHU4ZDhlXHU4ZDhmXHU4ZDhkXHU4ZDkzXHU4ZDk0XHU4ZDkwXHU4ZDkyXHU4ZGYwXHU4ZGUwXHU4ZGVjXHU4ZGYxXHU4ZGVlXHU4ZGQwXHU4ZGU5XHU4ZGUzXHU4ZGUyXHU4ZGU3XHU4ZGYyXHU4ZGViXHU4ZGY0XHU4ZjA2XHU4ZWZmXHU4ZjAxXHU4ZjAwXHU4ZjA1XHU4ZjA3XHU4ZjA4''@;'; put 'put ''XHU4ZjAyXHU4ZjBiXHU5MDUyXHU5MDNmIl0sWyJlMGExIiwiXHU5MDQ0XHU5MDQ5XHU5MDNkXHU5MTEwXHU5MTBkXHU5MTBmXHU5MTExXHU5MTE2XHU5MTE0XHU5MTBiXHU5MTBlXHU5MTZlXHU5MTZmXHU5MjQ4XHU5MjUyXHU5MjMwXHU5MjNhXHU5MjY2XHU5MjMzXHU5MjY1XHU5MjVlXHU5''@;'; put 'put ''MjgzXHU5MjJlXHU5MjRhXHU5MjQ2XHU5MjZkXHU5MjZjXHU5MjRmXHU5MjYwXHU5MjY3XHU5MjZmXHU5MjM2XHU5MjYxXHU5MjcwXHU5MjMxXHU5MjU0XHU5MjYzXHU5MjUwXHU5MjcyXHU5MjRlXHU5MjUzXHU5MjRjXHU5MjU2XHU5MjMyXHU5NTlmXHU5NTljXHU5NTllXHU5NTliXHU5Njky''@;'; put 'put ''XHU5NjkzXHU5NjkxXHU5Njk3XHU5NmNlXHU5NmZhXHU5NmZkXHU5NmY4XHU5NmY1XHU5NzczXHU5Nzc3XHU5Nzc4XHU5NzcyXHU5ODBmXHU5ODBkXHU5ODBlXHU5OGFjXHU5OGY2XHU5OGY5XHU5OWFmXHU5OWIyXHU5OWIwXHU5OWI1XHU5YWFkXHU5YWFiXHU5YjViXHU5Y2VhXHU5Y2VkXHU5''@;'; put 'put ''Y2U3XHU5ZTgwXHU5ZWZkXHU1MGU2XHU1MGQ0XHU1MGQ3XHU1MGU4XHU1MGYzXHU1MGRiXHU1MGVhXHU1MGRkXHU1MGU0XHU1MGQzXHU1MGVjXHU1MGYwXHU1MGVmXHU1MGUzXHU1MGUwIl0sWyJlMTQwIiwiXHU1MWQ4XHU1MjgwXHU1MjgxXHU1MmU5XHU1MmViXHU1MzMwXHU1M2FjXHU1NjI3''@;'; put 'put ''XHU1NjE1XHU1NjBjXHU1NjEyXHU1NWZjXHU1NjBmXHU1NjFjXHU1NjAxXHU1NjEzXHU1NjAyXHU1NWZhXHU1NjFkXHU1NjA0XHU1NWZmXHU1NWY5XHU1ODg5XHU1ODdjXHU1ODkwXHU1ODk4XHU1ODg2XHU1ODgxXHU1ODdmXHU1ODc0XHU1ODhiXHU1ODdhXHU1ODg3XHU1ODkxXHU1ODhlXHU1''@;'; put 'put ''ODc2XHU1ODgyXHU1ODg4XHU1ODdiXHU1ODk0XHU1ODhmXHU1OGZlXHU1OTZiXHU1YWRjXHU1YWVlXHU1YWU1XHU1YWQ1XHU1YWVhXHU1YWRhXHU1YWVkXHU1YWViXHU1YWYzXHU1YWUyXHU1YWUwXHU1YWRiXHU1YWVjXHU1YWRlXHU1YWRkXHU1YWQ5XHU1YWU4XHU1YWRmXHU1Yjc3XHU1YmUw''@;'; put 'put ''Il0sWyJlMWExIiwiXHU1YmUzXHU1YzYzXHU1ZDgyXHU1ZDgwXHU1ZDdkXHU1ZDg2XHU1ZDdhXHU1ZDgxXHU1ZDc3XHU1ZDhhXHU1ZDg5XHU1ZDg4XHU1ZDdlXHU1ZDdjXHU1ZDhkXHU1ZDc5XHU1ZDdmXHU1ZTU4XHU1ZTU5XHU1ZTUzXHU1ZWQ4XHU1ZWQxXHU1ZWQ3XHU1ZWNlXHU1ZWRjXHU1''@;'; put 'put ''ZWQ1XHU1ZWQ5XHU1ZWQyXHU1ZWQ0XHU1ZjQ0XHU1ZjQzXHU1ZjZmXHU1ZmI2XHU2MTJjXHU2MTI4XHU2MTQxXHU2MTVlXHU2MTcxXHU2MTczXHU2MTUyXHU2MTUzXHU2MTcyXHU2MTZjXHU2MTgwXHU2MTc0XHU2MTU0XHU2MTdhXHU2MTViXHU2MTY1XHU2MTNiXHU2MTZhXHU2MTYxXHU2MTU2''@;'; put 'put ''XHU2MjI5XHU2MjI3XHU2MjJiXHU2NDJiXHU2NDRkXHU2NDViXHU2NDVkXHU2NDc0XHU2NDc2XHU2NDcyXHU2NDczXHU2NDdkXHU2NDc1XHU2NDY2XHU2NGE2XHU2NDRlXHU2NDgyXHU2NDVlXHU2NDVjXHU2NDRiXHU2NDUzXHU2NDYwXHU2NDUwXHU2NDdmXHU2NDNmXHU2NDZjXHU2NDZiXHU2''@;'; put 'put ''NDU5XHU2NDY1XHU2NDc3XHU2NTczXHU2NWEwXHU2NmExXHU2NmEwXHU2NjlmXHU2NzA1XHU2NzA0XHU2NzIyXHU2OWIxXHU2OWI2XHU2OWM5Il0sWyJlMjQwIiwiXHU2OWEwXHU2OWNlXHU2OTk2XHU2OWIwXHU2OWFjXHU2OWJjXHU2OTkxXHU2OTk5XHU2OThlXHU2OWE3XHU2OThkXHU2OWE5''@;'; put 'put ''XHU2OWJlXHU2OWFmXHU2OWJmXHU2OWM0XHU2OWJkXHU2OWE0XHU2OWQ0XHU2OWI5XHU2OWNhXHU2OTlhXHU2OWNmXHU2OWIzXHU2OTkzXHU2OWFhXHU2OWExXHU2OTllXHU2OWQ5XHU2OTk3XHU2OTkwXHU2OWMyXHU2OWI1XHU2OWE1XHU2OWM2XHU2YjRhXHU2YjRkXHU2YjRiXHU2YjllXHU2''@;'; put 'put ''YjlmXHU2YmEwXHU2YmMzXHU2YmM0XHU2YmZlXHU2ZWNlXHU2ZWY1XHU2ZWYxXHU2ZjAzXHU2ZjI1XHU2ZWY4XHU2ZjM3XHU2ZWZiXHU2ZjJlXHU2ZjA5XHU2ZjRlXHU2ZjE5XHU2ZjFhXHU2ZjI3XHU2ZjE4XHU2ZjNiXHU2ZjEyXHU2ZWVkXHU2ZjBhIl0sWyJlMmExIiwiXHU2ZjM2XHU2Zjcz''@;'; put 'put ''XHU2ZWY5XHU2ZWVlXHU2ZjJkXHU2ZjQwXHU2ZjMwXHU2ZjNjXHU2ZjM1XHU2ZWViXHU2ZjA3XHU2ZjBlXHU2ZjQzXHU2ZjA1XHU2ZWZkXHU2ZWY2XHU2ZjM5XHU2ZjFjXHU2ZWZjXHU2ZjNhXHU2ZjFmXHU2ZjBkXHU2ZjFlXHU2ZjA4XHU2ZjIxXHU3MTg3XHU3MTkwXHU3MTg5XHU3MTgwXHU3''@;'; put 'put ''MTg1XHU3MTgyXHU3MThmXHU3MTdiXHU3MTg2XHU3MTgxXHU3MTk3XHU3MjQ0XHU3MjUzXHU3Mjk3XHU3Mjk1XHU3MjkzXHU3MzQzXHU3MzRkXHU3MzUxXHU3MzRjXHU3NDYyXHU3NDczXHU3NDcxXHU3NDc1XHU3NDcyXHU3NDY3XHU3NDZlXHU3NTAwXHU3NTAyXHU3NTAzXHU3NTdkXHU3NTkw''@;'; put 'put ''XHU3NjE2XHU3NjA4XHU3NjBjXHU3NjE1XHU3NjExXHU3NjBhXHU3NjE0XHU3NmI4XHU3NzgxXHU3NzdjXHU3Nzg1XHU3NzgyXHU3NzZlXHU3NzgwXHU3NzZmXHU3NzdlXHU3NzgzXHU3OGIyXHU3OGFhXHU3OGI0XHU3OGFkXHU3OGE4XHU3ODdlXHU3OGFiXHU3ODllXHU3OGE1XHU3OGEwXHU3''@;'; put 'put ''OGFjXHU3OGEyXHU3OGE0XHU3OTk4XHU3OThhXHU3OThiXHU3OTk2XHU3OTk1XHU3OTk0XHU3OTkzIl0sWyJlMzQwIiwiXHU3OTk3XHU3OTg4XHU3OTkyXHU3OTkwXHU3YTJiXHU3YTRhXHU3YTMwXHU3YTJmXHU3YTI4XHU3YTI2XHU3YWE4XHU3YWFiXHU3YWFjXHU3YWVlXHU3Yjg4XHU3Yjlj''@;'; put 'put ''XHU3YjhhXHU3YjkxXHU3YjkwXHU3Yjk2XHU3YjhkXHU3YjhjXHU3YjliXHU3YjhlXHU3Yjg1XHU3Yjk4XHU1Mjg0XHU3Yjk5XHU3YmE0XHU3YjgyXHU3Y2JiXHU3Y2JmXHU3Y2JjXHU3Y2JhXHU3ZGE3XHU3ZGI3XHU3ZGMyXHU3ZGEzXHU3ZGFhXHU3ZGMxXHU3ZGMwXHU3ZGM1XHU3ZDlkXHU3''@;'; put 'put ''ZGNlXHU3ZGM0XHU3ZGM2XHU3ZGNiXHU3ZGNjXHU3ZGFmXHU3ZGI5XHU3ZDk2XHU3ZGJjXHU3ZDlmXHU3ZGE2XHU3ZGFlXHU3ZGE5XHU3ZGExXHU3ZGM5XHU3ZjczXHU3ZmUyXHU3ZmUzXHU3ZmU1XHU3ZmRlIl0sWyJlM2ExIiwiXHU4MDI0XHU4MDVkXHU4MDVjXHU4MTg5XHU4MTg2XHU4MTgz''@;'; put 'put ''XHU4MTg3XHU4MThkXHU4MThjXHU4MThiXHU4MjE1XHU4NDk3XHU4NGE0XHU4NGExXHU4NDlmXHU4NGJhXHU4NGNlXHU4NGMyXHU4NGFjXHU4NGFlXHU4NGFiXHU4NGI5XHU4NGI0XHU4NGMxXHU4NGNkXHU4NGFhXHU4NDlhXHU4NGIxXHU4NGQwXHU4NDlkXHU4NGE3XHU4NGJiXHU4NGEyXHU4''@;'; put 'put ''NDk0XHU4NGM3XHU4NGNjXHU4NDliXHU4NGE5XHU4NGFmXHU4NGE4XHU4NGQ2XHU4NDk4XHU4NGI2XHU4NGNmXHU4NGEwXHU4NGQ3XHU4NGQ0XHU4NGQyXHU4NGRiXHU4NGIwXHU4NDkxXHU4NjYxXHU4NzMzXHU4NzIzXHU4NzI4XHU4NzZiXHU4NzQwXHU4NzJlXHU4NzFlXHU4NzIxXHU4NzE5''@;'; put 'put ''XHU4NzFiXHU4NzQzXHU4NzJjXHU4NzQxXHU4NzNlXHU4NzQ2XHU4NzIwXHU4NzMyXHU4NzJhXHU4NzJkXHU4NzNjXHU4NzEyXHU4NzNhXHU4NzMxXHU4NzM1XHU4NzQyXHU4NzI2XHU4NzI3XHU4NzM4XHU4NzI0XHU4NzFhXHU4NzMwXHU4NzExXHU4OGY3XHU4OGU3XHU4OGYxXHU4OGYyXHU4''@;'; put 'put ''OGZhXHU4OGZlXHU4OGVlXHU4OGZjXHU4OGY2XHU4OGZiIl0sWyJlNDQwIiwiXHU4OGYwXHU4OGVjXHU4OGViXHU4OTlkXHU4OWExXHU4OTlmXHU4OTllXHU4OWU5XHU4OWViXHU4OWU4XHU4YWFiXHU4YTk5XHU4YThiXHU4YTkyXHU4YThmXHU4YTk2XHU4YzNkXHU4YzY4XHU4YzY5XHU4Y2Q1''@;'; put 'put ''XHU4Y2NmXHU4Y2Q3XHU4ZDk2XHU4ZTA5XHU4ZTAyXHU4ZGZmXHU4ZTBkXHU4ZGZkXHU4ZTBhXHU4ZTAzXHU4ZTA3XHU4ZTA2XHU4ZTA1XHU4ZGZlXHU4ZTAwXHU4ZTA0XHU4ZjEwXHU4ZjExXHU4ZjBlXHU4ZjBkXHU5MTIzXHU5MTFjXHU5MTIwXHU5MTIyXHU5MTFmXHU5MTFkXHU5MTFhXHU5''@;'; put 'put ''MTI0XHU5MTIxXHU5MTFiXHU5MTdhXHU5MTcyXHU5MTc5XHU5MTczXHU5MmE1XHU5MmE0XHU5Mjc2XHU5MjliXHU5MjdhXHU5MmEwXHU5Mjk0XHU5MmFhXHU5MjhkIl0sWyJlNGExIiwiXHU5MmE2XHU5MjlhXHU5MmFiXHU5Mjc5XHU5Mjk3XHU5MjdmXHU5MmEzXHU5MmVlXHU5MjhlXHU5Mjgy''@;'; put 'put ''XHU5Mjk1XHU5MmEyXHU5MjdkXHU5Mjg4XHU5MmExXHU5MjhhXHU5Mjg2XHU5MjhjXHU5Mjk5XHU5MmE3XHU5MjdlXHU5Mjg3XHU5MmE5XHU5MjlkXHU5MjhiXHU5MjJkXHU5NjllXHU5NmExXHU5NmZmXHU5NzU4XHU5NzdkXHU5NzdhXHU5NzdlXHU5NzgzXHU5NzgwXHU5NzgyXHU5NzdiXHU5''@;'; put 'put ''Nzg0XHU5NzgxXHU5NzdmXHU5N2NlXHU5N2NkXHU5ODE2XHU5OGFkXHU5OGFlXHU5OTAyXHU5OTAwXHU5OTA3XHU5OTlkXHU5OTljXHU5OWMzXHU5OWI5XHU5OWJiXHU5OWJhXHU5OWMyXHU5OWJkXHU5OWM3XHU5YWIxXHU5YWUzXHU5YWU3XHU5YjNlXHU5YjNmXHU5YjYwXHU5YjYxXHU5YjVm''@;'; put 'put ''XHU5Y2YxXHU5Y2YyXHU5Y2Y1XHU5ZWE3XHU1MGZmXHU1MTAzXHU1MTMwXHU1MGY4XHU1MTA2XHU1MTA3XHU1MGY2XHU1MGZlXHU1MTBiXHU1MTBjXHU1MGZkXHU1MTBhXHU1MjhiXHU1MjhjXHU1MmYxXHU1MmVmXHU1NjQ4XHU1NjQyXHU1NjRjXHU1NjM1XHU1NjQxXHU1NjRhXHU1NjQ5XHU1''@;'; put 'put ''NjQ2XHU1NjU4Il0sWyJlNTQwIiwiXHU1NjVhXHU1NjQwXHU1NjMzXHU1NjNkXHU1NjJjXHU1NjNlXHU1NjM4XHU1NjJhXHU1NjNhXHU1NzFhXHU1OGFiXHU1ODlkXHU1OGIxXHU1OGEwXHU1OGEzXHU1OGFmXHU1OGFjXHU1OGE1XHU1OGExXHU1OGZmXHU1YWZmXHU1YWY0XHU1YWZkXHU1YWY3''@;'; put 'put ''XHU1YWY2XHU1YjAzXHU1YWY4XHU1YjAyXHU1YWY5XHU1YjAxXHU1YjA3XHU1YjA1XHU1YjBmXHU1YzY3XHU1ZDk5XHU1ZDk3XHU1ZDlmXHU1ZDkyXHU1ZGEyXHU1ZDkzXHU1ZDk1XHU1ZGEwXHU1ZDljXHU1ZGExXHU1ZDlhXHU1ZDllXHU1ZTY5XHU1ZTVkXHU1ZTYwXHU1ZTVjXHU3ZGYzXHU1''@;'; put 'put ''ZWRiXHU1ZWRlXHU1ZWUxXHU1ZjQ5XHU1ZmIyXHU2MThiXHU2MTgzXHU2MTc5XHU2MWIxXHU2MWIwXHU2MWEyXHU2MTg5Il0sWyJlNWExIiwiXHU2MTliXHU2MTkzXHU2MWFmXHU2MWFkXHU2MTlmXHU2MTkyXHU2MWFhXHU2MWExXHU2MThkXHU2MTY2XHU2MWIzXHU2MjJkXHU2NDZlXHU2NDcw''@;'; put 'put ''XHU2NDk2XHU2NGEwXHU2NDg1XHU2NDk3XHU2NDljXHU2NDhmXHU2NDhiXHU2NDhhXHU2NDhjXHU2NGEzXHU2NDlmXHU2NDY4XHU2NGIxXHU2NDk4XHU2NTc2XHU2NTdhXHU2NTc5XHU2NTdiXHU2NWIyXHU2NWIzXHU2NmI1XHU2NmIwXHU2NmE5XHU2NmIyXHU2NmI3XHU2NmFhXHU2NmFmXHU2''@;'; put 'put ''YTAwXHU2YTA2XHU2YTE3XHU2OWU1XHU2OWY4XHU2YTE1XHU2OWYxXHU2OWU0XHU2YTIwXHU2OWZmXHU2OWVjXHU2OWUyXHU2YTFiXHU2YTFkXHU2OWZlXHU2YTI3XHU2OWYyXHU2OWVlXHU2YTE0XHU2OWY3XHU2OWU3XHU2YTQwXHU2YTA4XHU2OWU2XHU2OWZiXHU2YTBkXHU2OWZjXHU2OWVi''@;'; put 'put ''XHU2YTA5XHU2YTA0XHU2YTE4XHU2YTI1XHU2YTBmXHU2OWY2XHU2YTI2XHU2YTA3XHU2OWY0XHU2YTE2XHU2YjUxXHU2YmE1XHU2YmEzXHU2YmEyXHU2YmE2XHU2YzAxXHU2YzAwXHU2YmZmXHU2YzAyXHU2ZjQxXHU2ZjI2XHU2ZjdlXHU2Zjg3XHU2ZmM2XHU2ZjkyIl0sWyJlNjQwIiwiXHU2''@;'; put 'put ''ZjhkXHU2Zjg5XHU2ZjhjXHU2ZjYyXHU2ZjRmXHU2Zjg1XHU2ZjVhXHU2Zjk2XHU2Zjc2XHU2ZjZjXHU2ZjgyXHU2ZjU1XHU2ZjcyXHU2ZjUyXHU2ZjUwXHU2ZjU3XHU2Zjk0XHU2ZjkzXHU2ZjVkXHU2ZjAwXHU2ZjYxXHU2ZjZiXHU2ZjdkXHU2ZjY3XHU2ZjkwXHU2ZjUzXHU2ZjhiXHU2ZjY5''@;'; put 'put ''XHU2ZjdmXHU2Zjk1XHU2ZjYzXHU2Zjc3XHU2ZjZhXHU2ZjdiXHU3MWIyXHU3MWFmXHU3MTliXHU3MWIwXHU3MWEwXHU3MTlhXHU3MWE5XHU3MWI1XHU3MTlkXHU3MWE1XHU3MTllXHU3MWE0XHU3MWExXHU3MWFhXHU3MTljXHU3MWE3XHU3MWIzXHU3Mjk4XHU3MjlhXHU3MzU4XHU3MzUyXHU3''@;'; put 'put ''MzVlXHU3MzVmXHU3MzYwXHU3MzVkXHU3MzViXHU3MzYxXHU3MzVhXHU3MzU5Il0sWyJlNmExIiwiXHU3MzYyXHU3NDg3XHU3NDg5XHU3NDhhXHU3NDg2XHU3NDgxXHU3NDdkXHU3NDg1XHU3NDg4XHU3NDdjXHU3NDc5XHU3NTA4XHU3NTA3XHU3NTdlXHU3NjI1XHU3NjFlXHU3NjE5XHU3NjFk''@;'; put 'put ''XHU3NjFjXHU3NjIzXHU3NjFhXHU3NjI4XHU3NjFiXHU3NjljXHU3NjlkXHU3NjllXHU3NjliXHU3NzhkXHU3NzhmXHU3Nzg5XHU3Nzg4XHU3OGNkXHU3OGJiXHU3OGNmXHU3OGNjXHU3OGQxXHU3OGNlXHU3OGQ0XHU3OGM4XHU3OGMzXHU3OGM0XHU3OGM5XHU3OTlhXHU3OWExXHU3OWEwXHU3''@;'; put 'put ''OTljXHU3OWEyXHU3OTliXHU2Yjc2XHU3YTM5XHU3YWIyXHU3YWI0XHU3YWIzXHU3YmI3XHU3YmNiXHU3YmJlXHU3YmFjXHU3YmNlXHU3YmFmXHU3YmI5XHU3YmNhXHU3YmI1XHU3Y2M1XHU3Y2M4XHU3Y2NjXHU3Y2NiXHU3ZGY3XHU3ZGRiXHU3ZGVhXHU3ZGU3XHU3ZGQ3XHU3ZGUxXHU3ZTAz''@;'; put 'put ''XHU3ZGZhXHU3ZGU2XHU3ZGY2XHU3ZGYxXHU3ZGYwXHU3ZGVlXHU3ZGRmXHU3Zjc2XHU3ZmFjXHU3ZmIwXHU3ZmFkXHU3ZmVkXHU3ZmViXHU3ZmVhXHU3ZmVjXHU3ZmU2XHU3ZmU4XHU4MDY0XHU4MDY3XHU4MWEzXHU4MTlmIl0sWyJlNzQwIiwiXHU4MTllXHU4MTk1XHU4MWEyXHU4MTk5XHU4''@;'; put 'put ''MTk3XHU4MjE2XHU4MjRmXHU4MjUzXHU4MjUyXHU4MjUwXHU4MjRlXHU4MjUxXHU4NTI0XHU4NTNiXHU4NTBmXHU4NTAwXHU4NTI5XHU4NTBlXHU4NTA5XHU4NTBkXHU4NTFmXHU4NTBhXHU4NTI3XHU4NTFjXHU4NGZiXHU4NTJiXHU4NGZhXHU4NTA4XHU4NTBjXHU4NGY0XHU4NTJhXHU4NGYy''@;'; put 'put ''XHU4NTE1XHU4NGY3XHU4NGViXHU4NGYzXHU4NGZjXHU4NTEyXHU4NGVhXHU4NGU5XHU4NTE2XHU4NGZlXHU4NTI4XHU4NTFkXHU4NTJlXHU4NTAyXHU4NGZkXHU4NTFlXHU4NGY2XHU4NTMxXHU4NTI2XHU4NGU3XHU4NGU4XHU4NGYwXHU4NGVmXHU4NGY5XHU4NTE4XHU4NTIwXHU4NTMwXHU4''@;'; put 'put ''NTBiXHU4NTE5XHU4NTJmXHU4NjYyIl0sWyJlN2ExIiwiXHU4NzU2XHU4NzYzXHU4NzY0XHU4Nzc3XHU4N2UxXHU4NzczXHU4NzU4XHU4NzU0XHU4NzViXHU4NzUyXHU4NzYxXHU4NzVhXHU4NzUxXHU4NzVlXHU4NzZkXHU4NzZhXHU4NzUwXHU4NzRlXHU4NzVmXHU4NzVkXHU4NzZmXHU4NzZj''@;'; put 'put ''XHU4NzdhXHU4NzZlXHU4NzVjXHU4NzY1XHU4NzRmXHU4NzdiXHU4Nzc1XHU4NzYyXHU4NzY3XHU4NzY5XHU4ODVhXHU4OTA1XHU4OTBjXHU4OTE0XHU4OTBiXHU4OTE3XHU4OTE4XHU4OTE5XHU4OTA2XHU4OTE2XHU4OTExXHU4OTBlXHU4OTA5XHU4OWEyXHU4OWE0XHU4OWEzXHU4OWVkXHU4''@;'; put 'put ''OWYwXHU4OWVjXHU4YWNmXHU4YWM2XHU4YWI4XHU4YWQzXHU4YWQxXHU4YWQ0XHU4YWQ1XHU4YWJiXHU4YWQ3XHU4YWJlXHU4YWMwXHU4YWM1XHU4YWQ4XHU4YWMzXHU4YWJhXHU4YWJkXHU4YWQ5XHU4YzNlXHU4YzRkXHU4YzhmXHU4Y2U1XHU4Y2RmXHU4Y2Q5XHU4Y2U4XHU4Y2RhXHU4Y2Rk''@;'; put 'put ''XHU4Y2U3XHU4ZGEwXHU4ZDljXHU4ZGExXHU4ZDliXHU4ZTIwXHU4ZTIzXHU4ZTI1XHU4ZTI0XHU4ZTJlXHU4ZTE1XHU4ZTFiXHU4ZTE2XHU4ZTExXHU4ZTE5XHU4ZTI2XHU4ZTI3Il0sWyJlODQwIiwiXHU4ZTE0XHU4ZTEyXHU4ZTE4XHU4ZTEzXHU4ZTFjXHU4ZTE3XHU4ZTFhXHU4ZjJjXHU4''@;'; put 'put ''ZjI0XHU4ZjE4XHU4ZjFhXHU4ZjIwXHU4ZjIzXHU4ZjE2XHU4ZjE3XHU5MDczXHU5MDcwXHU5MDZmXHU5MDY3XHU5MDZiXHU5MTJmXHU5MTJiXHU5MTI5XHU5MTJhXHU5MTMyXHU5MTI2XHU5MTJlXHU5MTg1XHU5MTg2XHU5MThhXHU5MTgxXHU5MTgyXHU5MTg0XHU5MTgwXHU5MmQwXHU5MmMz''@;'; put 'put ''XHU5MmM0XHU5MmMwXHU5MmQ5XHU5MmI2XHU5MmNmXHU5MmYxXHU5MmRmXHU5MmQ4XHU5MmU5XHU5MmQ3XHU5MmRkXHU5MmNjXHU5MmVmXHU5MmMyXHU5MmU4XHU5MmNhXHU5MmM4XHU5MmNlXHU5MmU2XHU5MmNkXHU5MmQ1XHU5MmM5XHU5MmUwXHU5MmRlXHU5MmU3XHU5MmQxXHU5MmQzIl0s''@;'; put 'put ''WyJlOGExIiwiXHU5MmI1XHU5MmUxXHU5MmM2XHU5MmI0XHU5NTdjXHU5NWFjXHU5NWFiXHU5NWFlXHU5NWIwXHU5NmE0XHU5NmEyXHU5NmQzXHU5NzA1XHU5NzA4XHU5NzAyXHU5NzVhXHU5NzhhXHU5NzhlXHU5Nzg4XHU5N2QwXHU5N2NmXHU5ODFlXHU5ODFkXHU5ODI2XHU5ODI5XHU5ODI4''@;'; put 'put ''XHU5ODIwXHU5ODFiXHU5ODI3XHU5OGIyXHU5OTA4XHU5OGZhXHU5OTExXHU5OTE0XHU5OTE2XHU5OTE3XHU5OTE1XHU5OWRjXHU5OWNkXHU5OWNmXHU5OWQzXHU5OWQ0XHU5OWNlXHU5OWM5XHU5OWQ2XHU5OWQ4XHU5OWNiXHU5OWQ3XHU5OWNjXHU5YWIzXHU5YWVjXHU5YWViXHU5YWYzXHU5''@;'; put 'put ''YWYyXHU5YWYxXHU5YjQ2XHU5YjQzXHU5YjY3XHU5Yjc0XHU5YjcxXHU5YjY2XHU5Yjc2XHU5Yjc1XHU5YjcwXHU5YjY4XHU5YjY0XHU5YjZjXHU5Y2ZjXHU5Y2ZhXHU5Y2ZkXHU5Y2ZmXHU5Y2Y3XHU5ZDA3XHU5ZDAwXHU5Y2Y5XHU5Y2ZiXHU5ZDA4XHU5ZDA1XHU5ZDA0XHU5ZTgzXHU5ZWQz''@;'; put 'put ''XHU5ZjBmXHU5ZjEwXHU1MTFjXHU1MTEzXHU1MTE3XHU1MTFhXHU1MTExXHU1MWRlXHU1MzM0XHU1M2UxXHU1NjcwXHU1NjYwXHU1NjZlIl0sWyJlOTQwIiwiXHU1NjczXHU1NjY2XHU1NjYzXHU1NjZkXHU1NjcyXHU1NjVlXHU1Njc3XHU1NzFjXHU1NzFiXHU1OGM4XHU1OGJkXHU1OGM5XHU1''@;'; put 'put ''OGJmXHU1OGJhXHU1OGMyXHU1OGJjXHU1OGM2XHU1YjE3XHU1YjE5XHU1YjFiXHU1YjIxXHU1YjE0XHU1YjEzXHU1YjEwXHU1YjE2XHU1YjI4XHU1YjFhXHU1YjIwXHU1YjFlXHU1YmVmXHU1ZGFjXHU1ZGIxXHU1ZGE5XHU1ZGE3XHU1ZGI1XHU1ZGIwXHU1ZGFlXHU1ZGFhXHU1ZGE4XHU1ZGIy''@;'; put 'put ''XHU1ZGFkXHU1ZGFmXHU1ZGI0XHU1ZTY3XHU1ZTY4XHU1ZTY2XHU1ZTZmXHU1ZWU5XHU1ZWU3XHU1ZWU2XHU1ZWU4XHU1ZWU1XHU1ZjRiXHU1ZmJjXHU2MTlkXHU2MWE4XHU2MTk2XHU2MWM1XHU2MWI0XHU2MWM2XHU2MWMxXHU2MWNjXHU2MWJhIl0sWyJlOWExIiwiXHU2MWJmXHU2MWI4XHU2''@;'; put 'put ''MThjXHU2NGQ3XHU2NGQ2XHU2NGQwXHU2NGNmXHU2NGM5XHU2NGJkXHU2NDg5XHU2NGMzXHU2NGRiXHU2NGYzXHU2NGQ5XHU2NTMzXHU2NTdmXHU2NTdjXHU2NWEyXHU2NmM4XHU2NmJlXHU2NmMwXHU2NmNhXHU2NmNiXHU2NmNmXHU2NmJkXHU2NmJiXHU2NmJhXHU2NmNjXHU2NzIzXHU2YTM0''@;'; put 'put ''XHU2YTY2XHU2YTQ5XHU2YTY3XHU2YTMyXHU2YTY4XHU2YTNlXHU2YTVkXHU2YTZkXHU2YTc2XHU2YTViXHU2YTUxXHU2YTI4XHU2YTVhXHU2YTNiXHU2YTNmXHU2YTQxXHU2YTZhXHU2YTY0XHU2YTUwXHU2YTRmXHU2YTU0XHU2YTZmXHU2YTY5XHU2YTYwXHU2YTNjXHU2YTVlXHU2YTU2XHU2''@;'; put 'put ''YTU1XHU2YTRkXHU2YTRlXHU2YTQ2XHU2YjU1XHU2YjU0XHU2YjU2XHU2YmE3XHU2YmFhXHU2YmFiXHU2YmM4XHU2YmM3XHU2YzA0XHU2YzAzXHU2YzA2XHU2ZmFkXHU2ZmNiXHU2ZmEzXHU2ZmM3XHU2ZmJjXHU2ZmNlXHU2ZmM4XHU2ZjVlXHU2ZmM0XHU2ZmJkXHU2ZjllXHU2ZmNhXHU2ZmE4''@;'; put 'put ''XHU3MDA0XHU2ZmE1XHU2ZmFlXHU2ZmJhXHU2ZmFjXHU2ZmFhXHU2ZmNmXHU2ZmJmXHU2ZmI4Il0sWyJlYTQwIiwiXHU2ZmEyXHU2ZmM5XHU2ZmFiXHU2ZmNkXHU2ZmFmXHU2ZmIyXHU2ZmIwXHU3MWM1XHU3MWMyXHU3MWJmXHU3MWI4XHU3MWQ2XHU3MWMwXHU3MWMxXHU3MWNiXHU3MWQ0XHU3''@;'; put 'put ''MWNhXHU3MWM3XHU3MWNmXHU3MWJkXHU3MWQ4XHU3MWJjXHU3MWM2XHU3MWRhXHU3MWRiXHU3MjlkXHU3MjllXHU3MzY5XHU3MzY2XHU3MzY3XHU3MzZjXHU3MzY1XHU3MzZiXHU3MzZhXHU3NDdmXHU3NDlhXHU3NGEwXHU3NDk0XHU3NDkyXHU3NDk1XHU3NGExXHU3NTBiXHU3NTgwXHU3NjJm''@;'; put 'put ''XHU3NjJkXHU3NjMxXHU3NjNkXHU3NjMzXHU3NjNjXHU3NjM1XHU3NjMyXHU3NjMwXHU3NmJiXHU3NmU2XHU3NzlhXHU3NzlkXHU3N2ExXHU3NzljXHU3NzliXHU3N2EyXHU3N2EzXHU3Nzk1XHU3Nzk5Il0sWyJlYWExIiwiXHU3Nzk3XHU3OGRkXHU3OGU5XHU3OGU1XHU3OGVhXHU3OGRlXHU3''@;'; put 'put ''OGUzXHU3OGRiXHU3OGUxXHU3OGUyXHU3OGVkXHU3OGRmXHU3OGUwXHU3OWE0XHU3YTQ0XHU3YTQ4XHU3YTQ3XHU3YWI2XHU3YWI4XHU3YWI1XHU3YWIxXHU3YWI3XHU3YmRlXHU3YmUzXHU3YmU3XHU3YmRkXHU3YmQ1XHU3YmU1XHU3YmRhXHU3YmU4XHU3YmY5XHU3YmQ0XHU3YmVhXHU3YmUy''@;'; put 'put ''XHU3YmRjXHU3YmViXHU3YmQ4XHU3YmRmXHU3Y2QyXHU3Y2Q0XHU3Y2Q3XHU3Y2QwXHU3Y2QxXHU3ZTEyXHU3ZTIxXHU3ZTE3XHU3ZTBjXHU3ZTFmXHU3ZTIwXHU3ZTEzXHU3ZTBlXHU3ZTFjXHU3ZTE1XHU3ZTFhXHU3ZTIyXHU3ZTBiXHU3ZTBmXHU3ZTE2XHU3ZTBkXHU3ZTE0XHU3ZTI1XHU3''@;'; put 'put ''ZTI0XHU3ZjQzXHU3ZjdiXHU3ZjdjXHU3ZjdhXHU3ZmIxXHU3ZmVmXHU4MDJhXHU4MDI5XHU4MDZjXHU4MWIxXHU4MWE2XHU4MWFlXHU4MWI5XHU4MWI1XHU4MWFiXHU4MWIwXHU4MWFjXHU4MWI0XHU4MWIyXHU4MWI3XHU4MWE3XHU4MWYyXHU4MjU1XHU4MjU2XHU4MjU3XHU4NTU2XHU4NTQ1''@;'; put 'put ''XHU4NTZiXHU4NTRkXHU4NTUzXHU4NTYxXHU4NTU4Il0sWyJlYjQwIiwiXHU4NTQwXHU4NTQ2XHU4NTY0XHU4NTQxXHU4NTYyXHU4NTQ0XHU4NTUxXHU4NTQ3XHU4NTYzXHU4NTNlXHU4NTViXHU4NTcxXHU4NTRlXHU4NTZlXHU4NTc1XHU4NTU1XHU4NTY3XHU4NTYwXHU4NThjXHU4NTY2XHU4''@;'; put 'put ''NTVkXHU4NTU0XHU4NTY1XHU4NTZjXHU4NjYzXHU4NjY1XHU4NjY0XHU4NzliXHU4NzhmXHU4Nzk3XHU4NzkzXHU4NzkyXHU4Nzg4XHU4NzgxXHU4Nzk2XHU4Nzk4XHU4Nzc5XHU4Nzg3XHU4N2EzXHU4Nzg1XHU4NzkwXHU4NzkxXHU4NzlkXHU4Nzg0XHU4Nzk0XHU4NzljXHU4NzlhXHU4Nzg5''@;'; put 'put ''XHU4OTFlXHU4OTI2XHU4OTMwXHU4OTJkXHU4OTJlXHU4OTI3XHU4OTMxXHU4OTIyXHU4OTI5XHU4OTIzXHU4OTJmXHU4OTJjXHU4OTFmXHU4OWYxXHU4YWUwIl0sWyJlYmExIiwiXHU4YWUyXHU4YWYyXHU4YWY0XHU4YWY1XHU4YWRkXHU4YjE0XHU4YWU0XHU4YWRmXHU4YWYwXHU4YWM4XHU4''@;'; put 'put ''YWRlXHU4YWUxXHU4YWU4XHU4YWZmXHU4YWVmXHU4YWZiXHU4YzkxXHU4YzkyXHU4YzkwXHU4Y2Y1XHU4Y2VlXHU4Y2YxXHU4Y2YwXHU4Y2YzXHU4ZDZjXHU4ZDZlXHU4ZGE1XHU4ZGE3XHU4ZTMzXHU4ZTNlXHU4ZTM4XHU4ZTQwXHU4ZTQ1XHU4ZTM2XHU4ZTNjXHU4ZTNkXHU4ZTQxXHU4ZTMw''@;'; put 'put ''XHU4ZTNmXHU4ZWJkXHU4ZjM2XHU4ZjJlXHU4ZjM1XHU4ZjMyXHU4ZjM5XHU4ZjM3XHU4ZjM0XHU5MDc2XHU5MDc5XHU5MDdiXHU5MDg2XHU5MGZhXHU5MTMzXHU5MTM1XHU5MTM2XHU5MTkzXHU5MTkwXHU5MTkxXHU5MThkXHU5MThmXHU5MzI3XHU5MzFlXHU5MzA4XHU5MzFmXHU5MzA2XHU5''@;'; put 'put ''MzBmXHU5MzdhXHU5MzM4XHU5MzNjXHU5MzFiXHU5MzIzXHU5MzEyXHU5MzAxXHU5MzQ2XHU5MzJkXHU5MzBlXHU5MzBkXHU5MmNiXHU5MzFkXHU5MmZhXHU5MzI1XHU5MzEzXHU5MmY5XHU5MmY3XHU5MzM0XHU5MzAyXHU5MzI0XHU5MmZmXHU5MzI5XHU5MzM5XHU5MzM1XHU5MzJhXHU5MzE0''@;'; put 'put ''XHU5MzBjIl0sWyJlYzQwIiwiXHU5MzBiXHU5MmZlXHU5MzA5XHU5MzAwXHU5MmZiXHU5MzE2XHU5NWJjXHU5NWNkXHU5NWJlXHU5NWI5XHU5NWJhXHU5NWI2XHU5NWJmXHU5NWI1XHU5NWJkXHU5NmE5XHU5NmQ0XHU5NzBiXHU5NzEyXHU5NzEwXHU5Nzk5XHU5Nzk3XHU5Nzk0XHU5N2YwXHU5''@;'; put 'put ''N2Y4XHU5ODM1XHU5ODJmXHU5ODMyXHU5OTI0XHU5OTFmXHU5OTI3XHU5OTI5XHU5OTllXHU5OWVlXHU5OWVjXHU5OWU1XHU5OWU0XHU5OWYwXHU5OWUzXHU5OWVhXHU5OWU5XHU5OWU3XHU5YWI5XHU5YWJmXHU5YWI0XHU5YWJiXHU5YWY2XHU5YWZhXHU5YWY5XHU5YWY3XHU5YjMzXHU5Yjgw''@;'; put 'put ''XHU5Yjg1XHU5Yjg3XHU5YjdjXHU5YjdlXHU5YjdiXHU5YjgyXHU5YjkzXHU5YjkyXHU5YjkwXHU5YjdhXHU5Yjk1Il0sWyJlY2ExIiwiXHU5YjdkXHU5Yjg4XHU5ZDI1XHU5ZDE3XHU5ZDIwXHU5ZDFlXHU5ZDE0XHU5ZDI5XHU5ZDFkXHU5ZDE4XHU5ZDIyXHU5ZDEwXHU5ZDE5XHU5ZDFmXHU5''@;'; put 'put ''ZTg4XHU5ZTg2XHU5ZTg3XHU5ZWFlXHU5ZWFkXHU5ZWQ1XHU5ZWQ2XHU5ZWZhXHU5ZjEyXHU5ZjNkXHU1MTI2XHU1MTI1XHU1MTIyXHU1MTI0XHU1MTIwXHU1MTI5XHU1MmY0XHU1NjkzXHU1NjhjXHU1NjhkXHU1Njg2XHU1Njg0XHU1NjgzXHU1NjdlXHU1NjgyXHU1NjdmXHU1NjgxXHU1OGQ2''@;'; put 'put ''XHU1OGQ0XHU1OGNmXHU1OGQyXHU1YjJkXHU1YjI1XHU1YjMyXHU1YjIzXHU1YjJjXHU1YjI3XHU1YjI2XHU1YjJmXHU1YjJlXHU1YjdiXHU1YmYxXHU1YmYyXHU1ZGI3XHU1ZTZjXHU1ZTZhXHU1ZmJlXHU1ZmJiXHU2MWMzXHU2MWI1XHU2MWJjXHU2MWU3XHU2MWUwXHU2MWU1XHU2MWU0XHU2''@;'; put 'put ''MWU4XHU2MWRlXHU2NGVmXHU2NGU5XHU2NGUzXHU2NGViXHU2NGU0XHU2NGU4XHU2NTgxXHU2NTgwXHU2NWI2XHU2NWRhXHU2NmQyXHU2YThkXHU2YTk2XHU2YTgxXHU2YWE1XHU2YTg5XHU2YTlmXHU2YTliXHU2YWExXHU2YTllXHU2YTg3XHU2YTkzXHU2YThlIl0sWyJlZDQwIiwiXHU2YTk1''@;'; put 'put ''XHU2YTgzXHU2YWE4XHU2YWE0XHU2YTkxXHU2YTdmXHU2YWE2XHU2YTlhXHU2YTg1XHU2YThjXHU2YTkyXHU2YjViXHU2YmFkXHU2YzA5XHU2ZmNjXHU2ZmE5XHU2ZmY0XHU2ZmQ0XHU2ZmUzXHU2ZmRjXHU2ZmVkXHU2ZmU3XHU2ZmU2XHU2ZmRlXHU2ZmYyXHU2ZmRkXHU2ZmUyXHU2ZmU4XHU3''@;'; put 'put ''MWUxXHU3MWYxXHU3MWU4XHU3MWYyXHU3MWU0XHU3MWYwXHU3MWUyXHU3MzczXHU3MzZlXHU3MzZmXHU3NDk3XHU3NGIyXHU3NGFiXHU3NDkwXHU3NGFhXHU3NGFkXHU3NGIxXHU3NGE1XHU3NGFmXHU3NTEwXHU3NTExXHU3NTEyXHU3NTBmXHU3NTg0XHU3NjQzXHU3NjQ4XHU3NjQ5XHU3NjQ3''@;'; put 'put ''XHU3NmE0XHU3NmU5XHU3N2I1XHU3N2FiXHU3N2IyXHU3N2I3XHU3N2I2Il0sWyJlZGExIiwiXHU3N2I0XHU3N2IxXHU3N2E4XHU3N2YwXHU3OGYzXHU3OGZkXHU3OTAyXHU3OGZiXHU3OGZjXHU3OGYyXHU3OTA1XHU3OGY5XHU3OGZlXHU3OTA0XHU3OWFiXHU3OWE4XHU3YTVjXHU3YTViXHU3''@;'; put 'put ''YTU2XHU3YTU4XHU3YTU0XHU3YTVhXHU3YWJlXHU3YWMwXHU3YWMxXHU3YzA1XHU3YzBmXHU3YmYyXHU3YzAwXHU3YmZmXHU3YmZiXHU3YzBlXHU3YmY0XHU3YzBiXHU3YmYzXHU3YzAyXHU3YzA5XHU3YzAzXHU3YzAxXHU3YmY4XHU3YmZkXHU3YzA2XHU3YmYwXHU3YmYxXHU3YzEwXHU3YzBh''@;'; put 'put ''XHU3Y2U4XHU3ZTJkXHU3ZTNjXHU3ZTQyXHU3ZTMzXHU5ODQ4XHU3ZTM4XHU3ZTJhXHU3ZTQ5XHU3ZTQwXHU3ZTQ3XHU3ZTI5XHU3ZTRjXHU3ZTMwXHU3ZTNiXHU3ZTM2XHU3ZTQ0XHU3ZTNhXHU3ZjQ1XHU3ZjdmXHU3ZjdlXHU3ZjdkXHU3ZmY0XHU3ZmYyXHU4MDJjXHU4MWJiXHU4MWM0XHU4''@;'; put 'put ''MWNjXHU4MWNhXHU4MWM1XHU4MWM3XHU4MWJjXHU4MWU5XHU4MjViXHU4MjVhXHU4MjVjXHU4NTgzXHU4NTgwXHU4NThmXHU4NWE3XHU4NTk1XHU4NWEwXHU4NThiXHU4NWEzXHU4NTdiXHU4NWE0XHU4NTlhXHU4NTllIl0sWyJlZTQwIiwiXHU4NTc3XHU4NTdjXHU4NTg5XHU4NWExXHU4NTdh''@;'; put 'put ''XHU4NTc4XHU4NTU3XHU4NThlXHU4NTk2XHU4NTg2XHU4NThkXHU4NTk5XHU4NTlkXHU4NTgxXHU4NWEyXHU4NTgyXHU4NTg4XHU4NTg1XHU4NTc5XHU4NTc2XHU4NTk4XHU4NTkwXHU4NTlmXHU4NjY4XHU4N2JlXHU4N2FhXHU4N2FkXHU4N2M1XHU4N2IwXHU4N2FjXHU4N2I5XHU4N2I1XHU4''@;'; put 'put ''N2JjXHU4N2FlXHU4N2M5XHU4N2MzXHU4N2MyXHU4N2NjXHU4N2I3XHU4N2FmXHU4N2M0XHU4N2NhXHU4N2I0XHU4N2I2XHU4N2JmXHU4N2I4XHU4N2JkXHU4N2RlXHU4N2IyXHU4OTM1XHU4OTMzXHU4OTNjXHU4OTNlXHU4OTQxXHU4OTUyXHU4OTM3XHU4OTQyXHU4OWFkXHU4OWFmXHU4OWFl''@;'; put 'put ''XHU4OWYyXHU4OWYzXHU4YjFlIl0sWyJlZWExIiwiXHU4YjE4XHU4YjE2XHU4YjExXHU4YjA1XHU4YjBiXHU4YjIyXHU4YjBmXHU4YjEyXHU4YjE1XHU4YjA3XHU4YjBkXHU4YjA4XHU4YjA2XHU4YjFjXHU4YjEzXHU4YjFhXHU4YzRmXHU4YzcwXHU4YzcyXHU4YzcxXHU4YzZmXHU4Yzk1XHU4''@;'; put 'put ''Yzk0XHU4Y2Y5XHU4ZDZmXHU4ZTRlXHU4ZTRkXHU4ZTUzXHU4ZTUwXHU4ZTRjXHU4ZTQ3XHU4ZjQzXHU4ZjQwXHU5MDg1XHU5MDdlXHU5MTM4XHU5MTlhXHU5MWEyXHU5MTliXHU5MTk5XHU5MTlmXHU5MWExXHU5MTlkXHU5MWEwXHU5M2ExXHU5MzgzXHU5M2FmXHU5MzY0XHU5MzU2XHU5MzQ3''@;'; put 'put ''XHU5MzdjXHU5MzU4XHU5MzVjXHU5Mzc2XHU5MzQ5XHU5MzUwXHU5MzUxXHU5MzYwXHU5MzZkXHU5MzhmXHU5MzRjXHU5MzZhXHU5Mzc5XHU5MzU3XHU5MzU1XHU5MzUyXHU5MzRmXHU5MzcxXHU5Mzc3XHU5MzdiXHU5MzYxXHU5MzVlXHU5MzYzXHU5MzY3XHU5MzgwXHU5MzRlXHU5MzU5XHU5''@;'; put 'put ''NWM3XHU5NWMwXHU5NWM5XHU5NWMzXHU5NWM1XHU5NWI3XHU5NmFlXHU5NmIwXHU5NmFjXHU5NzIwXHU5NzFmXHU5NzE4XHU5NzFkXHU5NzE5XHU5NzlhXHU5N2ExXHU5NzljIl0sWyJlZjQwIiwiXHU5NzllXHU5NzlkXHU5N2Q1XHU5N2Q0XHU5N2YxXHU5ODQxXHU5ODQ0XHU5ODRhXHU5ODQ5''@;'; put 'put ''XHU5ODQ1XHU5ODQzXHU5OTI1XHU5OTJiXHU5OTJjXHU5OTJhXHU5OTMzXHU5OTMyXHU5OTJmXHU5OTJkXHU5OTMxXHU5OTMwXHU5OTk4XHU5OWEzXHU5OWExXHU5YTAyXHU5OWZhXHU5OWY0XHU5OWY3XHU5OWY5XHU5OWY4XHU5OWY2XHU5OWZiXHU5OWZkXHU5OWZlXHU5OWZjXHU5YTAzXHU5''@;'; put 'put ''YWJlXHU5YWZlXHU5YWZkXHU5YjAxXHU5YWZjXHU5YjQ4XHU5YjlhXHU5YmE4XHU5YjllXHU5YjliXHU5YmE2XHU5YmExXHU5YmE1XHU5YmE0XHU5Yjg2XHU5YmEyXHU5YmEwXHU5YmFmXHU5ZDMzXHU5ZDQxXHU5ZDY3XHU5ZDM2XHU5ZDJlXHU5ZDJmXHU5ZDMxXHU5ZDM4XHU5ZDMwIl0sWyJl''@;'; put 'put ''ZmExIiwiXHU5ZDQ1XHU5ZDQyXHU5ZDQzXHU5ZDNlXHU5ZDM3XHU5ZDQwXHU5ZDNkXHU3ZmY1XHU5ZDJkXHU5ZThhXHU5ZTg5XHU5ZThkXHU5ZWIwXHU5ZWM4XHU5ZWRhXHU5ZWZiXHU5ZWZmXHU5ZjI0XHU5ZjIzXHU5ZjIyXHU5ZjU0XHU5ZmEwXHU1MTMxXHU1MTJkXHU1MTJlXHU1Njk4XHU1''@;'; put 'put ''NjljXHU1Njk3XHU1NjlhXHU1NjlkXHU1Njk5XHU1OTcwXHU1YjNjXHU1YzY5XHU1YzZhXHU1ZGMwXHU1ZTZkXHU1ZTZlXHU2MWQ4XHU2MWRmXHU2MWVkXHU2MWVlXHU2MWYxXHU2MWVhXHU2MWYwXHU2MWViXHU2MWQ2XHU2MWU5XHU2NGZmXHU2NTA0XHU2NGZkXHU2NGY4XHU2NTAxXHU2NTAz''@;'; put 'put ''XHU2NGZjXHU2NTk0XHU2NWRiXHU2NmRhXHU2NmRiXHU2NmQ4XHU2YWM1XHU2YWI5XHU2YWJkXHU2YWUxXHU2YWM2XHU2YWJhXHU2YWI2XHU2YWI3XHU2YWM3XHU2YWI0XHU2YWFkXHU2YjVlXHU2YmM5XHU2YzBiXHU3MDA3XHU3MDBjXHU3MDBkXHU3MDAxXHU3MDA1XHU3MDE0XHU3MDBlXHU2''@;'; put 'put ''ZmZmXHU3MDAwXHU2ZmZiXHU3MDI2XHU2ZmZjXHU2ZmY3XHU3MDBhXHU3MjAxXHU3MWZmXHU3MWY5XHU3MjAzXHU3MWZkXHU3Mzc2Il0sWyJmMDQwIiwiXHU3NGI4XHU3NGMwXHU3NGI1XHU3NGMxXHU3NGJlXHU3NGI2XHU3NGJiXHU3NGMyXHU3NTE0XHU3NTEzXHU3NjVjXHU3NjY0XHU3NjU5''@;'; put 'put ''XHU3NjUwXHU3NjUzXHU3NjU3XHU3NjVhXHU3NmE2XHU3NmJkXHU3NmVjXHU3N2MyXHU3N2JhXHU3OGZmXHU3OTBjXHU3OTEzXHU3OTE0XHU3OTA5XHU3OTEwXHU3OTEyXHU3OTExXHU3OWFkXHU3OWFjXHU3YTVmXHU3YzFjXHU3YzI5XHU3YzE5XHU3YzIwXHU3YzFmXHU3YzJkXHU3YzFkXHU3''@;'; put 'put ''YzI2XHU3YzI4XHU3YzIyXHU3YzI1XHU3YzMwXHU3ZTVjXHU3ZTUwXHU3ZTU2XHU3ZTYzXHU3ZTU4XHU3ZTYyXHU3ZTVmXHU3ZTUxXHU3ZTYwXHU3ZTU3XHU3ZTUzXHU3ZmI1XHU3ZmIzXHU3ZmY3XHU3ZmY4XHU4MDc1XHU4MWQxXHU4MWQyIl0sWyJmMGExIiwiXHU4MWQwXHU4MjVmXHU4MjVl''@;'; put 'put ''XHU4NWI0XHU4NWM2XHU4NWMwXHU4NWMzXHU4NWMyXHU4NWIzXHU4NWI1XHU4NWJkXHU4NWM3XHU4NWM0XHU4NWJmXHU4NWNiXHU4NWNlXHU4NWM4XHU4NWM1XHU4NWIxXHU4NWI2XHU4NWQyXHU4NjI0XHU4NWI4XHU4NWI3XHU4NWJlXHU4NjY5XHU4N2U3XHU4N2U2XHU4N2UyXHU4N2RiXHU4''@;'; put 'put ''N2ViXHU4N2VhXHU4N2U1XHU4N2RmXHU4N2YzXHU4N2U0XHU4N2Q0XHU4N2RjXHU4N2QzXHU4N2VkXHU4N2Q4XHU4N2UzXHU4N2E0XHU4N2Q3XHU4N2Q5XHU4ODAxXHU4N2Y0XHU4N2U4XHU4N2RkXHU4OTUzXHU4OTRiXHU4OTRmXHU4OTRjXHU4OTQ2XHU4OTUwXHU4OTUxXHU4OTQ5XHU4YjJh''@;'; put 'put ''XHU4YjI3XHU4YjIzXHU4YjMzXHU4YjMwXHU4YjM1XHU4YjQ3XHU4YjJmXHU4YjNjXHU4YjNlXHU4YjMxXHU4YjI1XHU4YjM3XHU4YjI2XHU4YjM2XHU4YjJlXHU4YjI0XHU4YjNiXHU4YjNkXHU4YjNhXHU4YzQyXHU4Yzc1XHU4Yzk5XHU4Yzk4XHU4Yzk3XHU4Y2ZlXHU4ZDA0XHU4ZDAyXHU4''@;'; put 'put ''ZDAwXHU4ZTVjXHU4ZTYyXHU4ZTYwXHU4ZTU3XHU4ZTU2XHU4ZTVlXHU4ZTY1XHU4ZTY3Il0sWyJmMTQwIiwiXHU4ZTViXHU4ZTVhXHU4ZTYxXHU4ZTVkXHU4ZTY5XHU4ZTU0XHU4ZjQ2XHU4ZjQ3XHU4ZjQ4XHU4ZjRiXHU5MTI4XHU5MTNhXHU5MTNiXHU5MTNlXHU5MWE4XHU5MWE1XHU5MWE3''@;'; put 'put ''XHU5MWFmXHU5MWFhXHU5M2I1XHU5MzhjXHU5MzkyXHU5M2I3XHU5MzliXHU5MzlkXHU5Mzg5XHU5M2E3XHU5MzhlXHU5M2FhXHU5MzllXHU5M2E2XHU5Mzk1XHU5Mzg4XHU5Mzk5XHU5MzlmXHU5MzhkXHU5M2IxXHU5MzkxXHU5M2IyXHU5M2E0XHU5M2E4XHU5M2I0XHU5M2EzXHU5M2E1XHU5''@;'; put 'put ''NWQyXHU5NWQzXHU5NWQxXHU5NmIzXHU5NmQ3XHU5NmRhXHU1ZGMyXHU5NmRmXHU5NmQ4XHU5NmRkXHU5NzIzXHU5NzIyXHU5NzI1XHU5N2FjXHU5N2FlXHU5N2E4XHU5N2FiXHU5N2E0XHU5N2FhIl0sWyJmMWExIiwiXHU5N2EyXHU5N2E1XHU5N2Q3XHU5N2Q5XHU5N2Q2XHU5N2Q4XHU5N2Zh''@;'; put 'put ''XHU5ODUwXHU5ODUxXHU5ODUyXHU5OGI4XHU5OTQxXHU5OTNjXHU5OTNhXHU5YTBmXHU5YTBiXHU5YTA5XHU5YTBkXHU5YTA0XHU5YTExXHU5YTBhXHU5YTA1XHU5YTA3XHU5YTA2XHU5YWMwXHU5YWRjXHU5YjA4XHU5YjA0XHU5YjA1XHU5YjI5XHU5YjM1XHU5YjRhXHU5YjRjXHU5YjRiXHU5''@;'; put 'put ''YmM3XHU5YmM2XHU5YmMzXHU5YmJmXHU5YmMxXHU5YmI1XHU5YmI4XHU5YmQzXHU5YmI2XHU5YmM0XHU5YmI5XHU5YmJkXHU5ZDVjXHU5ZDUzXHU5ZDRmXHU5ZDRhXHU5ZDViXHU5ZDRiXHU5ZDU5XHU5ZDU2XHU5ZDRjXHU5ZDU3XHU5ZDUyXHU5ZDU0XHU5ZDVmXHU5ZDU4XHU5ZDVhXHU5ZThl''@;'; put 'put ''XHU5ZThjXHU5ZWRmXHU5ZjAxXHU5ZjAwXHU5ZjE2XHU5ZjI1XHU5ZjJiXHU5ZjJhXHU5ZjI5XHU5ZjI4XHU5ZjRjXHU5ZjU1XHU1MTM0XHU1MTM1XHU1Mjk2XHU1MmY3XHU1M2I0XHU1NmFiXHU1NmFkXHU1NmE2XHU1NmE3XHU1NmFhXHU1NmFjXHU1OGRhXHU1OGRkXHU1OGRiXHU1OTEyXHU1''@;'; put 'put ''YjNkXHU1YjNlXHU1YjNmXHU1ZGMzXHU1ZTcwIl0sWyJmMjQwIiwiXHU1ZmJmXHU2MWZiXHU2NTA3XHU2NTEwXHU2NTBkXHU2NTA5XHU2NTBjXHU2NTBlXHU2NTg0XHU2NWRlXHU2NWRkXHU2NmRlXHU2YWU3XHU2YWUwXHU2YWNjXHU2YWQxXHU2YWQ5XHU2YWNiXHU2YWRmXHU2YWRjXHU2YWQw''@;'; put 'put ''XHU2YWViXHU2YWNmXHU2YWNkXHU2YWRlXHU2YjYwXHU2YmIwXHU2YzBjXHU3MDE5XHU3MDI3XHU3MDIwXHU3MDE2XHU3MDJiXHU3MDIxXHU3MDIyXHU3MDIzXHU3MDI5XHU3MDE3XHU3MDI0XHU3MDFjXHU3MDJhXHU3MjBjXHU3MjBhXHU3MjA3XHU3MjAyXHU3MjA1XHU3MmE1XHU3MmE2XHU3''@;'; put 'put ''MmE0XHU3MmEzXHU3MmExXHU3NGNiXHU3NGM1XHU3NGI3XHU3NGMzXHU3NTE2XHU3NjYwXHU3N2M5XHU3N2NhXHU3N2M0XHU3N2YxXHU3OTFkXHU3OTFiIl0sWyJmMmExIiwiXHU3OTIxXHU3OTFjXHU3OTE3XHU3OTFlXHU3OWIwXHU3YTY3XHU3YTY4XHU3YzMzXHU3YzNjXHU3YzM5XHU3YzJj''@;'; put 'put ''XHU3YzNiXHU3Y2VjXHU3Y2VhXHU3ZTc2XHU3ZTc1XHU3ZTc4XHU3ZTcwXHU3ZTc3XHU3ZTZmXHU3ZTdhXHU3ZTcyXHU3ZTc0XHU3ZTY4XHU3ZjRiXHU3ZjRhXHU3ZjgzXHU3Zjg2XHU3ZmI3XHU3ZmZkXHU3ZmZlXHU4MDc4XHU4MWQ3XHU4MWQ1XHU4MjY0XHU4MjYxXHU4MjYzXHU4NWViXHU4''@;'; put 'put ''NWYxXHU4NWVkXHU4NWQ5XHU4NWUxXHU4NWU4XHU4NWRhXHU4NWQ3XHU4NWVjXHU4NWYyXHU4NWY4XHU4NWQ4XHU4NWRmXHU4NWUzXHU4NWRjXHU4NWQxXHU4NWYwXHU4NWU2XHU4NWVmXHU4NWRlXHU4NWUyXHU4ODAwXHU4N2ZhXHU4ODAzXHU4N2Y2XHU4N2Y3XHU4ODA5XHU4ODBjXHU4ODBi''@;'; put 'put ''XHU4ODA2XHU4N2ZjXHU4ODA4XHU4N2ZmXHU4ODBhXHU4ODAyXHU4OTYyXHU4OTVhXHU4OTViXHU4OTU3XHU4OTYxXHU4OTVjXHU4OTU4XHU4OTVkXHU4OTU5XHU4OTg4XHU4OWI3XHU4OWI2XHU4OWY2XHU4YjUwXHU4YjQ4XHU4YjRhXHU4YjQwXHU4YjUzXHU4YjU2XHU4YjU0XHU4YjRiXHU4''@;'; put 'put ''YjU1Il0sWyJmMzQwIiwiXHU4YjUxXHU4YjQyXHU4YjUyXHU4YjU3XHU4YzQzXHU4Yzc3XHU4Yzc2XHU4YzlhXHU4ZDA2XHU4ZDA3XHU4ZDA5XHU4ZGFjXHU4ZGFhXHU4ZGFkXHU4ZGFiXHU4ZTZkXHU4ZTc4XHU4ZTczXHU4ZTZhXHU4ZTZmXHU4ZTdiXHU4ZWMyXHU4ZjUyXHU4ZjUxXHU4ZjRm''@;'; put 'put ''XHU4ZjUwXHU4ZjUzXHU4ZmI0XHU5MTQwXHU5MTNmXHU5MWIwXHU5MWFkXHU5M2RlXHU5M2M3XHU5M2NmXHU5M2MyXHU5M2RhXHU5M2QwXHU5M2Y5XHU5M2VjXHU5M2NjXHU5M2Q5XHU5M2E5XHU5M2U2XHU5M2NhXHU5M2Q0XHU5M2VlXHU5M2UzXHU5M2Q1XHU5M2M0XHU5M2NlXHU5M2MwXHU5''@;'; put 'put ''M2QyXHU5M2U3XHU5NTdkXHU5NWRhXHU5NWRiXHU5NmUxXHU5NzI5XHU5NzJiXHU5NzJjXHU5NzI4XHU5NzI2Il0sWyJmM2ExIiwiXHU5N2IzXHU5N2I3XHU5N2I2XHU5N2RkXHU5N2RlXHU5N2RmXHU5ODVjXHU5ODU5XHU5ODVkXHU5ODU3XHU5OGJmXHU5OGJkXHU5OGJiXHU5OGJlXHU5OTQ4''@;'; put 'put ''XHU5OTQ3XHU5OTQzXHU5OWE2XHU5OWE3XHU5YTFhXHU5YTE1XHU5YTI1XHU5YTFkXHU5YTI0XHU5YTFiXHU5YTIyXHU5YTIwXHU5YTI3XHU5YTIzXHU5YTFlXHU5YTFjXHU5YTE0XHU5YWMyXHU5YjBiXHU5YjBhXHU5YjBlXHU5YjBjXHU5YjM3XHU5YmVhXHU5YmViXHU5YmUwXHU5YmRlXHU5''@;'; put 'put ''YmU0XHU5YmU2XHU5YmUyXHU5YmYwXHU5YmQ0XHU5YmQ3XHU5YmVjXHU5YmRjXHU5YmQ5XHU5YmU1XHU5YmQ1XHU5YmUxXHU5YmRhXHU5ZDc3XHU5ZDgxXHU5ZDhhXHU5ZDg0XHU5ZDg4XHU5ZDcxXHU5ZDgwXHU5ZDc4XHU5ZDg2XHU5ZDhiXHU5ZDhjXHU5ZDdkXHU5ZDZiXHU5ZDc0XHU5ZDc1''@;'; put 'put ''XHU5ZDcwXHU5ZDY5XHU5ZDg1XHU5ZDczXHU5ZDdiXHU5ZDgyXHU5ZDZmXHU5ZDc5XHU5ZDdmXHU5ZDg3XHU5ZDY4XHU5ZTk0XHU5ZTkxXHU5ZWMwXHU5ZWZjXHU5ZjJkXHU5ZjQwXHU5ZjQxXHU5ZjRkXHU5ZjU2XHU5ZjU3XHU5ZjU4XHU1MzM3XHU1NmIyIl0sWyJmNDQwIiwiXHU1NmI1XHU1''@;'; put 'put ''NmIzXHU1OGUzXHU1YjQ1XHU1ZGM2XHU1ZGM3XHU1ZWVlXHU1ZWVmXHU1ZmMwXHU1ZmMxXHU2MWY5XHU2NTE3XHU2NTE2XHU2NTE1XHU2NTEzXHU2NWRmXHU2NmU4XHU2NmUzXHU2NmU0XHU2YWYzXHU2YWYwXHU2YWVhXHU2YWU4XHU2YWY5XHU2YWYxXHU2YWVlXHU2YWVmXHU3MDNjXHU3MDM1''@;'; put 'put ''XHU3MDJmXHU3MDM3XHU3MDM0XHU3MDMxXHU3MDQyXHU3MDM4XHU3MDNmXHU3MDNhXHU3MDM5XHU3MDQwXHU3MDNiXHU3MDMzXHU3MDQxXHU3MjEzXHU3MjE0XHU3MmE4XHU3MzdkXHU3MzdjXHU3NGJhXHU3NmFiXHU3NmFhXHU3NmJlXHU3NmVkXHU3N2NjXHU3N2NlXHU3N2NmXHU3N2NkXHU3''@;'; put 'put ''N2YyXHU3OTI1XHU3OTIzXHU3OTI3XHU3OTI4XHU3OTI0XHU3OTI5Il0sWyJmNGExIiwiXHU3OWIyXHU3YTZlXHU3YTZjXHU3YTZkXHU3YWY3XHU3YzQ5XHU3YzQ4XHU3YzRhXHU3YzQ3XHU3YzQ1XHU3Y2VlXHU3ZTdiXHU3ZTdlXHU3ZTgxXHU3ZTgwXHU3ZmJhXHU3ZmZmXHU4MDc5XHU4MWRi''@;'; put 'put ''XHU4MWQ5XHU4MjBiXHU4MjY4XHU4MjY5XHU4NjIyXHU4NWZmXHU4NjAxXHU4NWZlXHU4NjFiXHU4NjAwXHU4NWY2XHU4NjA0XHU4NjA5XHU4NjA1XHU4NjBjXHU4NWZkXHU4ODE5XHU4ODEwXHU4ODExXHU4ODE3XHU4ODEzXHU4ODE2XHU4OTYzXHU4OTY2XHU4OWI5XHU4OWY3XHU4YjYwXHU4''@;'; put 'put ''YjZhXHU4YjVkXHU4YjY4XHU4YjYzXHU4YjY1XHU4YjY3XHU4YjZkXHU4ZGFlXHU4ZTg2XHU4ZTg4XHU4ZTg0XHU4ZjU5XHU4ZjU2XHU4ZjU3XHU4ZjU1XHU4ZjU4XHU4ZjVhXHU5MDhkXHU5MTQzXHU5MTQxXHU5MWI3XHU5MWI1XHU5MWIyXHU5MWIzXHU5NDBiXHU5NDEzXHU5M2ZiXHU5NDIw''@;'; put 'put ''XHU5NDBmXHU5NDE0XHU5M2ZlXHU5NDE1XHU5NDEwXHU5NDI4XHU5NDE5XHU5NDBkXHU5M2Y1XHU5NDAwXHU5M2Y3XHU5NDA3XHU5NDBlXHU5NDE2XHU5NDEyXHU5M2ZhXHU5NDA5XHU5M2Y4XHU5NDBhXHU5M2ZmIl0sWyJmNTQwIiwiXHU5M2ZjXHU5NDBjXHU5M2Y2XHU5NDExXHU5NDA2XHU5''@;'; put 'put ''NWRlXHU5NWUwXHU5NWRmXHU5NzJlXHU5NzJmXHU5N2I5XHU5N2JiXHU5N2ZkXHU5N2ZlXHU5ODYwXHU5ODYyXHU5ODYzXHU5ODVmXHU5OGMxXHU5OGMyXHU5OTUwXHU5OTRlXHU5OTU5XHU5OTRjXHU5OTRiXHU5OTUzXHU5YTMyXHU5YTM0XHU5YTMxXHU5YTJjXHU5YTJhXHU5YTM2XHU5YTI5''@;'; put 'put ''XHU5YTJlXHU5YTM4XHU5YTJkXHU5YWM3XHU5YWNhXHU5YWM2XHU5YjEwXHU5YjEyXHU5YjExXHU5YzBiXHU5YzA4XHU5YmY3XHU5YzA1XHU5YzEyXHU5YmY4XHU5YzQwXHU5YzA3XHU5YzBlXHU5YzA2XHU5YzE3XHU5YzE0XHU5YzA5XHU5ZDlmXHU5ZDk5XHU5ZGE0XHU5ZDlkXHU5ZDkyXHU5''@;'; put 'put ''ZDk4XHU5ZDkwXHU5ZDliIl0sWyJmNWExIiwiXHU5ZGEwXHU5ZDk0XHU5ZDljXHU5ZGFhXHU5ZDk3XHU5ZGExXHU5ZDlhXHU5ZGEyXHU5ZGE4XHU5ZDllXHU5ZGEzXHU5ZGJmXHU5ZGE5XHU5ZDk2XHU5ZGE2XHU5ZGE3XHU5ZTk5XHU5ZTliXHU5ZTlhXHU5ZWU1XHU5ZWU0XHU5ZWU3XHU5ZWU2''@;'; put 'put ''XHU5ZjMwXHU5ZjJlXHU5ZjViXHU5ZjYwXHU5ZjVlXHU5ZjVkXHU5ZjU5XHU5ZjkxXHU1MTNhXHU1MTM5XHU1Mjk4XHU1Mjk3XHU1NmMzXHU1NmJkXHU1NmJlXHU1YjQ4XHU1YjQ3XHU1ZGNiXHU1ZGNmXHU1ZWYxXHU2MWZkXHU2NTFiXHU2YjAyXHU2YWZjXHU2YjAzXHU2YWY4XHU2YjAwXHU3''@;'; put 'put ''MDQzXHU3MDQ0XHU3MDRhXHU3MDQ4XHU3MDQ5XHU3MDQ1XHU3MDQ2XHU3MjFkXHU3MjFhXHU3MjE5XHU3MzdlXHU3NTE3XHU3NjZhXHU3N2QwXHU3OTJkXHU3OTMxXHU3OTJmXHU3YzU0XHU3YzUzXHU3Y2YyXHU3ZThhXHU3ZTg3XHU3ZTg4XHU3ZThiXHU3ZTg2XHU3ZThkXHU3ZjRkXHU3ZmJi''@;'; put 'put ''XHU4MDMwXHU4MWRkXHU4NjE4XHU4NjJhXHU4NjI2XHU4NjFmXHU4NjIzXHU4NjFjXHU4NjE5XHU4NjI3XHU4NjJlXHU4NjIxXHU4NjIwXHU4NjI5XHU4NjFlXHU4NjI1Il0sWyJmNjQwIiwiXHU4ODI5XHU4ODFkXHU4ODFiXHU4ODIwXHU4ODI0XHU4ODFjXHU4ODJiXHU4ODRhXHU4OTZkXHU4''@;'; put 'put ''OTY5XHU4OTZlXHU4OTZiXHU4OWZhXHU4Yjc5XHU4Yjc4XHU4YjQ1XHU4YjdhXHU4YjdiXHU4ZDEwXHU4ZDE0XHU4ZGFmXHU4ZThlXHU4ZThjXHU4ZjVlXHU4ZjViXHU4ZjVkXHU5MTQ2XHU5MTQ0XHU5MTQ1XHU5MWI5XHU5NDNmXHU5NDNiXHU5NDM2XHU5NDI5XHU5NDNkXHU5NDNjXHU5NDMw''@;'; put 'put ''XHU5NDM5XHU5NDJhXHU5NDM3XHU5NDJjXHU5NDQwXHU5NDMxXHU5NWU1XHU5NWU0XHU5NWUzXHU5NzM1XHU5NzNhXHU5N2JmXHU5N2UxXHU5ODY0XHU5OGM5XHU5OGM2XHU5OGMwXHU5OTU4XHU5OTU2XHU5YTM5XHU5YTNkXHU5YTQ2XHU5YTQ0XHU5YTQyXHU5YTQxXHU5YTNhIl0sWyJmNmEx''@;'; put 'put ''IiwiXHU5YTNmXHU5YWNkXHU5YjE1XHU5YjE3XHU5YjE4XHU5YjE2XHU5YjNhXHU5YjUyXHU5YzJiXHU5YzFkXHU5YzFjXHU5YzJjXHU5YzIzXHU5YzI4XHU5YzI5XHU5YzI0XHU5YzIxXHU5ZGI3XHU5ZGI2XHU5ZGJjXHU5ZGMxXHU5ZGM3XHU5ZGNhXHU5ZGNmXHU5ZGJlXHU5ZGM1XHU5ZGMz''@;'; put 'put ''XHU5ZGJiXHU5ZGI1XHU5ZGNlXHU5ZGI5XHU5ZGJhXHU5ZGFjXHU5ZGM4XHU5ZGIxXHU5ZGFkXHU5ZGNjXHU5ZGIzXHU5ZGNkXHU5ZGIyXHU5ZTdhXHU5ZTljXHU5ZWViXHU5ZWVlXHU5ZWVkXHU5ZjFiXHU5ZjE4XHU5ZjFhXHU5ZjMxXHU5ZjRlXHU5ZjY1XHU5ZjY0XHU5ZjkyXHU0ZWI5XHU1''@;'; put 'put ''NmM2XHU1NmM1XHU1NmNiXHU1OTcxXHU1YjRiXHU1YjRjXHU1ZGQ1XHU1ZGQxXHU1ZWYyXHU2NTIxXHU2NTIwXHU2NTI2XHU2NTIyXHU2YjBiXHU2YjA4XHU2YjA5XHU2YzBkXHU3MDU1XHU3MDU2XHU3MDU3XHU3MDUyXHU3MjFlXHU3MjFmXHU3MmE5XHU3MzdmXHU3NGQ4XHU3NGQ1XHU3NGQ5''@;'; put 'put ''XHU3NGQ3XHU3NjZkXHU3NmFkXHU3OTM1XHU3OWI0XHU3YTcwXHU3YTcxXHU3YzU3XHU3YzVjXHU3YzU5XHU3YzViXHU3YzVhIl0sWyJmNzQwIiwiXHU3Y2Y0XHU3Y2YxXHU3ZTkxXHU3ZjRmXHU3Zjg3XHU4MWRlXHU4MjZiXHU4NjM0XHU4NjM1XHU4NjMzXHU4NjJjXHU4NjMyXHU4NjM2XHU4''@;'; put 'put ''ODJjXHU4ODI4XHU4ODI2XHU4ODJhXHU4ODI1XHU4OTcxXHU4OWJmXHU4OWJlXHU4OWZiXHU4YjdlXHU4Yjg0XHU4YjgyXHU4Yjg2XHU4Yjg1XHU4YjdmXHU4ZDE1XHU4ZTk1XHU4ZTk0XHU4ZTlhXHU4ZTkyXHU4ZTkwXHU4ZTk2XHU4ZTk3XHU4ZjYwXHU4ZjYyXHU5MTQ3XHU5NDRjXHU5NDUw''@;'; put 'put ''XHU5NDRhXHU5NDRiXHU5NDRmXHU5NDQ3XHU5NDQ1XHU5NDQ4XHU5NDQ5XHU5NDQ2XHU5NzNmXHU5N2UzXHU5ODZhXHU5ODY5XHU5OGNiXHU5OTU0XHU5OTViXHU5YTRlXHU5YTUzXHU5YTU0XHU5YTRjXHU5YTRmXHU5YTQ4XHU5YTRhIl0sWyJmN2ExIiwiXHU5YTQ5XHU5YTUyXHU5YTUwXHU5''@;'; put 'put ''YWQwXHU5YjE5XHU5YjJiXHU5YjNiXHU5YjU2XHU5YjU1XHU5YzQ2XHU5YzQ4XHU5YzNmXHU5YzQ0XHU5YzM5XHU5YzMzXHU5YzQxXHU5YzNjXHU5YzM3XHU5YzM0XHU5YzMyXHU5YzNkXHU5YzM2XHU5ZGRiXHU5ZGQyXHU5ZGRlXHU5ZGRhXHU5ZGNiXHU5ZGQwXHU5ZGRjXHU5ZGQxXHU5ZGRm''@;'; put 'put ''XHU5ZGU5XHU5ZGQ5XHU5ZGQ4XHU5ZGQ2XHU5ZGY1XHU5ZGQ1XHU5ZGRkXHU5ZWI2XHU5ZWYwXHU5ZjM1XHU5ZjMzXHU5ZjMyXHU5ZjQyXHU5ZjZiXHU5Zjk1XHU5ZmEyXHU1MTNkXHU1Mjk5XHU1OGU4XHU1OGU3XHU1OTcyXHU1YjRkXHU1ZGQ4XHU4ODJmXHU1ZjRmXHU2MjAxXHU2MjAzXHU2''@;'; put 'put ''MjA0XHU2NTI5XHU2NTI1XHU2NTk2XHU2NmViXHU2YjExXHU2YjEyXHU2YjBmXHU2YmNhXHU3MDViXHU3MDVhXHU3MjIyXHU3MzgyXHU3MzgxXHU3MzgzXHU3NjcwXHU3N2Q0XHU3YzY3XHU3YzY2XHU3ZTk1XHU4MjZjXHU4NjNhXHU4NjQwXHU4NjM5XHU4NjNjXHU4NjMxXHU4NjNiXHU4NjNl''@;'; put 'put ''XHU4ODMwXHU4ODMyXHU4ODJlXHU4ODMzXHU4OTc2XHU4OTc0XHU4OTczXHU4OWZlIl0sWyJmODQwIiwiXHU4YjhjXHU4YjhlXHU4YjhiXHU4Yjg4XHU4YzQ1XHU4ZDE5XHU4ZTk4XHU4ZjY0XHU4ZjYzXHU5MWJjXHU5NDYyXHU5NDU1XHU5NDVkXHU5NDU3XHU5NDVlXHU5N2M0XHU5N2M1XHU5''@;'; put 'put ''ODAwXHU5YTU2XHU5YTU5XHU5YjFlXHU5YjFmXHU5YjIwXHU5YzUyXHU5YzU4XHU5YzUwXHU5YzRhXHU5YzRkXHU5YzRiXHU5YzU1XHU5YzU5XHU5YzRjXHU5YzRlXHU5ZGZiXHU5ZGY3XHU5ZGVmXHU5ZGUzXHU5ZGViXHU5ZGY4XHU5ZGU0XHU5ZGY2XHU5ZGUxXHU5ZGVlXHU5ZGU2XHU5ZGYy''@;'; put 'put ''XHU5ZGYwXHU5ZGUyXHU5ZGVjXHU5ZGY0XHU5ZGYzXHU5ZGU4XHU5ZGVkXHU5ZWMyXHU5ZWQwXHU5ZWYyXHU5ZWYzXHU5ZjA2XHU5ZjFjXHU5ZjM4XHU5ZjM3XHU5ZjM2XHU5ZjQzXHU5ZjRmIl0sWyJmOGExIiwiXHU5ZjcxXHU5ZjcwXHU5ZjZlXHU5ZjZmXHU1NmQzXHU1NmNkXHU1YjRlXHU1''@;'; put 'put ''YzZkXHU2NTJkXHU2NmVkXHU2NmVlXHU2YjEzXHU3MDVmXHU3MDYxXHU3MDVkXHU3MDYwXHU3MjIzXHU3NGRiXHU3NGU1XHU3N2Q1XHU3OTM4XHU3OWI3XHU3OWI2XHU3YzZhXHU3ZTk3XHU3Zjg5XHU4MjZkXHU4NjQzXHU4ODM4XHU4ODM3XHU4ODM1XHU4ODRiXHU4Yjk0XHU4Yjk1XHU4ZTll''@;'; put 'put ''XHU4ZTlmXHU4ZWEwXHU4ZTlkXHU5MWJlXHU5MWJkXHU5MWMyXHU5NDZiXHU5NDY4XHU5NDY5XHU5NmU1XHU5NzQ2XHU5NzQzXHU5NzQ3XHU5N2M3XHU5N2U1XHU5YTVlXHU5YWQ1XHU5YjU5XHU5YzYzXHU5YzY3XHU5YzY2XHU5YzYyXHU5YzVlXHU5YzYwXHU5ZTAyXHU5ZGZlXHU5ZTA3XHU5''@;'; put 'put ''ZTAzXHU5ZTA2XHU5ZTA1XHU5ZTAwXHU5ZTAxXHU5ZTA5XHU5ZGZmXHU5ZGZkXHU5ZTA0XHU5ZWEwXHU5ZjFlXHU5ZjQ2XHU5Zjc0XHU5Zjc1XHU5Zjc2XHU1NmQ0XHU2NTJlXHU2NWI4XHU2YjE4XHU2YjE5XHU2YjE3XHU2YjFhXHU3MDYyXHU3MjI2XHU3MmFhXHU3N2Q4XHU3N2Q5XHU3OTM5''@;'; put 'put ''XHU3YzY5XHU3YzZiXHU3Y2Y2XHU3ZTlhIl0sWyJmOTQwIiwiXHU3ZTk4XHU3ZTliXHU3ZTk5XHU4MWUwXHU4MWUxXHU4NjQ2XHU4NjQ3XHU4NjQ4XHU4OTc5XHU4OTdhXHU4OTdjXHU4OTdiXHU4OWZmXHU4Yjk4XHU4Yjk5XHU4ZWE1XHU4ZWE0XHU4ZWEzXHU5NDZlXHU5NDZkXHU5NDZmXHU5''@;'; put 'put ''NDcxXHU5NDczXHU5NzQ5XHU5ODcyXHU5OTVmXHU5YzY4XHU5YzZlXHU5YzZkXHU5ZTBiXHU5ZTBkXHU5ZTEwXHU5ZTBmXHU5ZTEyXHU5ZTExXHU5ZWExXHU5ZWY1XHU5ZjA5XHU5ZjQ3XHU5Zjc4XHU5ZjdiXHU5ZjdhXHU5Zjc5XHU1NzFlXHU3MDY2XHU3YzZmXHU4ODNjXHU4ZGIyXHU4ZWE2''@;'; put 'put ''XHU5MWMzXHU5NDc0XHU5NDc4XHU5NDc2XHU5NDc1XHU5YTYwXHU5Yzc0XHU5YzczXHU5YzcxXHU5Yzc1XHU5ZTE0XHU5ZTEzXHU5ZWY2XHU5ZjBhIl0sWyJmOWExIiwiXHU5ZmE0XHU3MDY4XHU3MDY1XHU3Y2Y3XHU4NjZhXHU4ODNlXHU4ODNkXHU4ODNmXHU4YjllXHU4YzljXHU4ZWE5XHU4''@;'; put 'put ''ZWM5XHU5NzRiXHU5ODczXHU5ODc0XHU5OGNjXHU5OTYxXHU5OWFiXHU5YTY0XHU5YTY2XHU5YTY3XHU5YjI0XHU5ZTE1XHU5ZTE3XHU5ZjQ4XHU2MjA3XHU2YjFlXHU3MjI3XHU4NjRjXHU4ZWE4XHU5NDgyXHU5NDgwXHU5NDgxXHU5YTY5XHU5YTY4XHU5YjJlXHU5ZTE5XHU3MjI5XHU4NjRi''@;'; put 'put ''XHU4YjlmXHU5NDgzXHU5Yzc5XHU5ZWI3XHU3Njc1XHU5YTZiXHU5YzdhXHU5ZTFkXHU3MDY5XHU3MDZhXHU5ZWE0XHU5ZjdlXHU5ZjQ5XHU5Zjk4XHU3ODgxXHU5MmI5XHU4OGNmXHU1OGJiXHU2MDUyXHU3Y2E3XHU1YWZhXHUyNTU0XHUyNTY2XHUyNTU3XHUyNTYwXHUyNTZjXHUyNTYzXHUy''@;'; put 'put ''NTVhXHUyNTY5XHUyNTVkXHUyNTUyXHUyNTY0XHUyNTU1XHUyNTVlXHUyNTZhXHUyNTYxXHUyNTU4XHUyNTY3XHUyNTViXHUyNTUzXHUyNTY1XHUyNTU2XHUyNTVmXHUyNTZiXHUyNTYyXHUyNTU5XHUyNTY4XHUyNTVjXHUyNTUxXHUyNTUwXHUyNTZkXHUyNTZlXHUyNTcwXHUyNTZmXHUyNTkz''@;'; put 'put ''Il1dJyl9LDMxNTMyOlhlPT57InVzZSBzdHJpY3QiO1hlLmV4cG9ydHM9SlNPTi5wYXJzZSgnW1siMCIsIlxcdTAwMDAiLDEyN10sWyI4ZWExIiwiXHVmZjYxIiw2Ml0sWyJhMWExIiwiXHUzMDAwXHUzMDAxXHUzMDAyXHVmZjBjXHVmZjBlXHUzMGZiXHVmZjFhXHVmZjFiXHVmZjFmXHVmZjAx''@;'; put 'put ''XHUzMDliXHUzMDljXHhiNFx1ZmY0MFx4YThcdWZmM2VcdWZmZTNcdWZmM2ZcdTMwZmRcdTMwZmVcdTMwOWRcdTMwOWVcdTMwMDNcdTRlZGRcdTMwMDVcdTMwMDZcdTMwMDdcdTMwZmNcdTIwMTVcdTIwMTBcdWZmMGZcdWZmM2NcdWZmNWVcdTIyMjVcdWZmNWNcdTIwMjZcdTIwMjVcdTIwMThc''@;'; put 'put ''dTIwMTlcdTIwMWNcdTIwMWRcdWZmMDhcdWZmMDlcdTMwMTRcdTMwMTVcdWZmM2JcdWZmM2RcdWZmNWJcdWZmNWRcdTMwMDgiLDksIlx1ZmYwYlx1ZmYwZFx4YjFceGQ3XHhmN1x1ZmYxZFx1MjI2MFx1ZmYxY1x1ZmYxZVx1MjI2Nlx1MjI2N1x1MjIxZVx1MjIzNFx1MjY0Mlx1MjY0MFx4YjBc''@;'; put 'put ''dTIwMzJcdTIwMzNcdTIxMDNcdWZmZTVcdWZmMDRcdWZmZTBcdWZmZTFcdWZmMDVcdWZmMDNcdWZmMDZcdWZmMGFcdWZmMjBceGE3XHUyNjA2XHUyNjA1XHUyNWNiXHUyNWNmXHUyNWNlXHUyNWM3Il0sWyJhMmExIiwiXHUyNWM2XHUyNWExXHUyNWEwXHUyNWIzXHUyNWIyXHUyNWJkXHUyNWJj''@;'; put 'put ''XHUyMDNiXHUzMDEyXHUyMTkyXHUyMTkwXHUyMTkxXHUyMTkzXHUzMDEzIl0sWyJhMmJhIiwiXHUyMjA4XHUyMjBiXHUyMjg2XHUyMjg3XHUyMjgyXHUyMjgzXHUyMjJhXHUyMjI5Il0sWyJhMmNhIiwiXHUyMjI3XHUyMjI4XHVmZmUyXHUyMWQyXHUyMWQ0XHUyMjAwXHUyMjAzIl0sWyJhMmRj''@;'; put 'put ''IiwiXHUyMjIwXHUyMmE1XHUyMzEyXHUyMjAyXHUyMjA3XHUyMjYxXHUyMjUyXHUyMjZhXHUyMjZiXHUyMjFhXHUyMjNkXHUyMjFkXHUyMjM1XHUyMjJiXHUyMjJjIl0sWyJhMmYyIiwiXHUyMTJiXHUyMDMwXHUyNjZmXHUyNjZkXHUyNjZhXHUyMDIwXHUyMDIxXHhiNiJdLFsiYTJmZSIsIlx1''@;'; put 'put ''MjVlZiJdLFsiYTNiMCIsIlx1ZmYxMCIsOV0sWyJhM2MxIiwiXHVmZjIxIiwyNV0sWyJhM2UxIiwiXHVmZjQxIiwyNV0sWyJhNGExIiwiXHUzMDQxIiw4Ml0sWyJhNWExIiwiXHUzMGExIiw4NV0sWyJhNmExIiwiXHUwMzkxIiwxNiwiXHUwM2EzIiw2XSxbImE2YzEiLCJcdTAzYjEiLDE2LCJc''@;'; put 'put ''dTAzYzMiLDZdLFsiYTdhMSIsIlx1MDQxMCIsNSwiXHUwNDAxXHUwNDE2IiwyNV0sWyJhN2QxIiwiXHUwNDMwIiw1LCJcdTA0NTFcdTA0MzYiLDI1XSxbImE4YTEiLCJcdTI1MDBcdTI1MDJcdTI1MGNcdTI1MTBcdTI1MThcdTI1MTRcdTI1MWNcdTI1MmNcdTI1MjRcdTI1MzRcdTI1M2NcdTI1''@;'; put 'put ''MDFcdTI1MDNcdTI1MGZcdTI1MTNcdTI1MWJcdTI1MTdcdTI1MjNcdTI1MzNcdTI1MmJcdTI1M2JcdTI1NGJcdTI1MjBcdTI1MmZcdTI1MjhcdTI1MzdcdTI1M2ZcdTI1MWRcdTI1MzBcdTI1MjVcdTI1MzhcdTI1NDIiXSxbImFkYTEiLCJcdTI0NjAiLDE5LCJcdTIxNjAiLDldLFsiYWRjMCIs''@;'; put 'put ''Ilx1MzM0OVx1MzMxNFx1MzMyMlx1MzM0ZFx1MzMxOFx1MzMyN1x1MzMwM1x1MzMzNlx1MzM1MVx1MzM1N1x1MzMwZFx1MzMyNlx1MzMyM1x1MzMyYlx1MzM0YVx1MzMzYlx1MzM5Y1x1MzM5ZFx1MzM5ZVx1MzM4ZVx1MzM4Zlx1MzNjNFx1MzNhMSJdLFsiYWRkZiIsIlx1MzM3Ylx1MzAxZFx1''@;'; put 'put ''MzAxZlx1MjExNlx1MzNjZFx1MjEyMVx1MzJhNCIsNCwiXHUzMjMxXHUzMjMyXHUzMjM5XHUzMzdlXHUzMzdkXHUzMzdjXHUyMjUyXHUyMjYxXHUyMjJiXHUyMjJlXHUyMjExXHUyMjFhXHUyMmE1XHUyMjIwXHUyMjFmXHUyMmJmXHUyMjM1XHUyMjI5XHUyMjJhIl0sWyJiMGExIiwiXHU0ZTlj''@;'; put 'put ''XHU1NTE2XHU1YTAzXHU5NjNmXHU1NGMwXHU2MTFiXHU2MzI4XHU1OWY2XHU5MDIyXHU4NDc1XHU4MzFjXHU3YTUwXHU2MGFhXHU2M2UxXHU2ZTI1XHU2NWVkXHU4NDY2XHU4MmE2XHU5YmY1XHU2ODkzXHU1NzI3XHU2NWExXHU2MjcxXHU1YjliXHU1OWQwXHU4NjdiXHU5OGY0XHU3ZDYyXHU3''@;'; put 'put ''ZGJlXHU5YjhlXHU2MjE2XHU3YzlmXHU4OGI3XHU1Yjg5XHU1ZWI1XHU2MzA5XHU2Njk3XHU2ODQ4XHU5NWM3XHU5NzhkXHU2NzRmXHU0ZWU1XHU0ZjBhXHU0ZjRkXHU0ZjlkXHU1MDQ5XHU1NmYyXHU1OTM3XHU1OWQ0XHU1YTAxXHU1YzA5XHU2MGRmXHU2MTBmXHU2MTcwXHU2NjEzXHU2OTA1''@;'; put 'put ''XHU3MGJhXHU3NTRmXHU3NTcwXHU3OWZiXHU3ZGFkXHU3ZGVmXHU4MGMzXHU4NDBlXHU4ODYzXHU4YjAyXHU5MDU1XHU5MDdhXHU1MzNiXHU0ZTk1XHU0ZWE1XHU1N2RmXHU4MGIyXHU5MGMxXHU3OGVmXHU0ZTAwXHU1OGYxXHU2ZWEyXHU5MDM4XHU3YTMyXHU4MzI4XHU4MjhiXHU5YzJmXHU1''@;'; put 'put ''MTQxXHU1MzcwXHU1NGJkXHU1NGUxXHU1NmUwXHU1OWZiXHU1ZjE1XHU5OGYyXHU2ZGViXHU4MGU0XHU4NTJkIl0sWyJiMWExIiwiXHU5NjYyXHU5NjcwXHU5NmEwXHU5N2ZiXHU1NDBiXHU1M2YzXHU1Yjg3XHU3MGNmXHU3ZmJkXHU4ZmMyXHU5NmU4XHU1MzZmXHU5ZDVjXHU3YWJhXHU0ZTEx''@;'; put 'put ''XHU3ODkzXHU4MWZjXHU2ZTI2XHU1NjE4XHU1NTA0XHU2YjFkXHU4NTFhXHU5YzNiXHU1OWU1XHU1M2E5XHU2ZDY2XHU3NGRjXHU5NThmXHU1NjQyXHU0ZTkxXHU5MDRiXHU5NmYyXHU4MzRmXHU5OTBjXHU1M2UxXHU1NWI2XHU1YjMwXHU1ZjcxXHU2NjIwXHU2NmYzXHU2ODA0XHU2YzM4XHU2''@;'; put 'put ''Y2YzXHU2ZDI5XHU3NDViXHU3NmM4XHU3YTRlXHU5ODM0XHU4MmYxXHU4ODViXHU4YTYwXHU5MmVkXHU2ZGIyXHU3NWFiXHU3NmNhXHU5OWM1XHU2MGE2XHU4YjAxXHU4ZDhhXHU5NWIyXHU2OThlXHU1M2FkXHU1MTg2XHU1NzEyXHU1ODMwXHU1OTQ0XHU1YmI0XHU1ZWY2XHU2MDI4XHU2M2E5''@;'; put 'put ''XHU2M2Y0XHU2Y2JmXHU2ZjE0XHU3MDhlXHU3MTE0XHU3MTU5XHU3MWQ1XHU3MzNmXHU3ZTAxXHU4Mjc2XHU4MmQxXHU4NTk3XHU5MDYwXHU5MjViXHU5ZDFiXHU1ODY5XHU2NWJjXHU2YzVhXHU3NTI1XHU1MWY5XHU1OTJlXHU1OTY1XHU1ZjgwXHU1ZmRjIl0sWyJiMmExIiwiXHU2MmJjXHU2''@;'; put 'put ''NWZhXHU2YTJhXHU2YjI3XHU2YmI0XHU3MzhiXHU3ZmMxXHU4OTU2XHU5ZDJjXHU5ZDBlXHU5ZWM0XHU1Y2ExXHU2Yzk2XHU4MzdiXHU1MTA0XHU1YzRiXHU2MWI2XHU4MWM2XHU2ODc2XHU3MjYxXHU0ZTU5XHU0ZmZhXHU1Mzc4XHU2MDY5XHU2ZTI5XHU3YTRmXHU5N2YzXHU0ZTBiXHU1MzE2''@;'; put 'put ''XHU0ZWVlXHU0ZjU1XHU0ZjNkXHU0ZmExXHU0ZjczXHU1MmEwXHU1M2VmXHU1NjA5XHU1OTBmXHU1YWMxXHU1YmI2XHU1YmUxXHU3OWQxXHU2Njg3XHU2NzljXHU2N2I2XHU2YjRjXHU2Y2IzXHU3MDZiXHU3M2MyXHU3OThkXHU3OWJlXHU3YTNjXHU3Yjg3XHU4MmIxXHU4MmRiXHU4MzA0XHU4''@;'; put 'put ''Mzc3XHU4M2VmXHU4M2QzXHU4NzY2XHU4YWIyXHU1NjI5XHU4Y2E4XHU4ZmU2XHU5MDRlXHU5NzFlXHU4NjhhXHU0ZmM0XHU1Y2U4XHU2MjExXHU3MjU5XHU3NTNiXHU4MWU1XHU4MmJkXHU4NmZlXHU4Y2MwXHU5NmM1XHU5OTEzXHU5OWQ1XHU0ZWNiXHU0ZjFhXHU4OWUzXHU1NmRlXHU1ODRh''@;'; put 'put ''XHU1OGNhXHU1ZWZiXHU1ZmViXHU2MDJhXHU2MDk0XHU2MDYyXHU2MWQwXHU2MjEyXHU2MmQwXHU2NTM5Il0sWyJiM2ExIiwiXHU5YjQxXHU2NjY2XHU2OGIwXHU2ZDc3XHU3MDcwXHU3NTRjXHU3Njg2XHU3ZDc1XHU4MmE1XHU4N2Y5XHU5NThiXHU5NjhlXHU4YzlkXHU1MWYxXHU1MmJlXHU1''@;'; put 'put ''OTE2XHU1NGIzXHU1YmIzXHU1ZDE2XHU2MTY4XHU2OTgyXHU2ZGFmXHU3ODhkXHU4NGNiXHU4ODU3XHU4YTcyXHU5M2E3XHU5YWI4XHU2ZDZjXHU5OWE4XHU4NmQ5XHU1N2EzXHU2N2ZmXHU4NmNlXHU5MjBlXHU1MjgzXHU1Njg3XHU1NDA0XHU1ZWQzXHU2MmUxXHU2NGI5XHU2ODNjXHU2ODM4''@;'; put 'put ''XHU2YmJiXHU3MzcyXHU3OGJhXHU3YTZiXHU4OTlhXHU4OWQyXHU4ZDZiXHU4ZjAzXHU5MGVkXHU5NWEzXHU5Njk0XHU5NzY5XHU1YjY2XHU1Y2IzXHU2OTdkXHU5ODRkXHU5ODRlXHU2MzliXHU3YjIwXHU2YTJiXHU2YTdmXHU2OGI2XHU5YzBkXHU2ZjVmXHU1MjcyXHU1NTlkXHU2MDcwXHU2''@;'; put 'put ''MmVjXHU2ZDNiXHU2ZTA3XHU2ZWQxXHU4NDViXHU4OTEwXHU4ZjQ0XHU0ZTE0XHU5YzM5XHU1M2Y2XHU2OTFiXHU2YTNhXHU5Nzg0XHU2ODJhXHU1MTVjXHU3YWMzXHU4NGIyXHU5MWRjXHU5MzhjXHU1NjViXHU5ZDI4XHU2ODIyXHU4MzA1XHU4NDMxIl0sWyJiNGExIiwiXHU3Y2E1XHU1MjA4''@;'; put 'put ''XHU4MmM1XHU3NGU2XHU0ZTdlXHU0ZjgzXHU1MWEwXHU1YmQyXHU1MjBhXHU1MmQ4XHU1MmU3XHU1ZGZiXHU1NTlhXHU1ODJhXHU1OWU2XHU1YjhjXHU1Yjk4XHU1YmRiXHU1ZTcyXHU1ZTc5XHU2MGEzXHU2MTFmXHU2MTYzXHU2MWJlXHU2M2RiXHU2NTYyXHU2N2QxXHU2ODUzXHU2OGZhXHU2''@;'; put 'put ''YjNlXHU2YjUzXHU2YzU3XHU2ZjIyXHU2Zjk3XHU2ZjQ1XHU3NGIwXHU3NTE4XHU3NmUzXHU3NzBiXHU3YWZmXHU3YmExXHU3YzIxXHU3ZGU5XHU3ZjM2XHU3ZmYwXHU4MDlkXHU4MjY2XHU4MzllXHU4OWIzXHU4YWNjXHU4Y2FiXHU5MDg0XHU5NDUxXHU5NTkzXHU5NTkxXHU5NWEyXHU5NjY1''@;'; put 'put ''XHU5N2QzXHU5OTI4XHU4MjE4XHU0ZTM4XHU1NDJiXHU1Y2I4XHU1ZGNjXHU3M2E5XHU3NjRjXHU3NzNjXHU1Y2E5XHU3ZmViXHU4ZDBiXHU5NmMxXHU5ODExXHU5ODU0XHU5ODU4XHU0ZjAxXHU0ZjBlXHU1MzcxXHU1NTljXHU1NjY4XHU1N2ZhXHU1OTQ3XHU1YjA5XHU1YmM0XHU1YzkwXHU1''@;'; put 'put ''ZTBjXHU1ZTdlXHU1ZmNjXHU2M2VlXHU2NzNhXHU2NWQ3XHU2NWUyXHU2NzFmXHU2OGNiXHU2OGM0Il0sWyJiNWExIiwiXHU2YTVmXHU1ZTMwXHU2YmM1XHU2YzE3XHU2YzdkXHU3NTdmXHU3OTQ4XHU1YjYzXHU3YTAwXHU3ZDAwXHU1ZmJkXHU4OThmXHU4YTE4XHU4Y2I0XHU4ZDc3XHU4ZWNj''@;'; put 'put ''XHU4ZjFkXHU5OGUyXHU5YTBlXHU5YjNjXHU0ZTgwXHU1MDdkXHU1MTAwXHU1OTkzXHU1YjljXHU2MjJmXHU2MjgwXHU2NGVjXHU2YjNhXHU3MmEwXHU3NTkxXHU3OTQ3XHU3ZmE5XHU4N2ZiXHU4YWJjXHU4YjcwXHU2M2FjXHU4M2NhXHU5N2EwXHU1NDA5XHU1NDAzXHU1NWFiXHU2ODU0XHU2''@;'; put 'put ''YTU4XHU4YTcwXHU3ODI3XHU2Nzc1XHU5ZWNkXHU1Mzc0XHU1YmEyXHU4MTFhXHU4NjUwXHU5MDA2XHU0ZTE4XHU0ZTQ1XHU0ZWM3XHU0ZjExXHU1M2NhXHU1NDM4XHU1YmFlXHU1ZjEzXHU2MDI1XHU2NTUxXHU2NzNkXHU2YzQyXHU2YzcyXHU2Y2UzXHU3MDc4XHU3NDAzXHU3YTc2XHU3YWFl''@;'; put 'put ''XHU3YjA4XHU3ZDFhXHU3Y2ZlXHU3ZDY2XHU2NWU3XHU3MjViXHU1M2JiXHU1YzQ1XHU1ZGU4XHU2MmQyXHU2MmUwXHU2MzE5XHU2ZTIwXHU4NjVhXHU4YTMxXHU4ZGRkXHU5MmY4XHU2ZjAxXHU3OWE2XHU5YjVhXHU0ZWE4XHU0ZWFiXHU0ZWFjIl0sWyJiNmExIiwiXHU0ZjliXHU0ZmEwXHU1''@;'; put 'put ''MGQxXHU1MTQ3XHU3YWY2XHU1MTcxXHU1MWY2XHU1MzU0XHU1MzIxXHU1MzdmXHU1M2ViXHU1NWFjXHU1ODgzXHU1Y2UxXHU1ZjM3XHU1ZjRhXHU2MDJmXHU2MDUwXHU2MDZkXHU2MzFmXHU2NTU5XHU2YTRiXHU2Y2MxXHU3MmMyXHU3MmVkXHU3N2VmXHU4MGY4XHU4MTA1XHU4MjA4XHU4NTRl''@;'; put 'put ''XHU5MGY3XHU5M2UxXHU5N2ZmXHU5OTU3XHU5YTVhXHU0ZWYwXHU1MWRkXHU1YzJkXHU2NjgxXHU2OTZkXHU1YzQwXHU2NmYyXHU2OTc1XHU3Mzg5XHU2ODUwXHU3YzgxXHU1MGM1XHU1MmU0XHU1NzQ3XHU1ZGZlXHU5MzI2XHU2NWE0XHU2YjIzXHU2YjNkXHU3NDM0XHU3OTgxXHU3OWJkXHU3''@;'; put 'put ''YjRiXHU3ZGNhXHU4MmI5XHU4M2NjXHU4ODdmXHU4OTVmXHU4YjM5XHU4ZmQxXHU5MWQxXHU1NDFmXHU5MjgwXHU0ZTVkXHU1MDM2XHU1M2U1XHU1MzNhXHU3MmQ3XHU3Mzk2XHU3N2U5XHU4MmU2XHU4ZWFmXHU5OWM2XHU5OWM4XHU5OWQyXHU1MTc3XHU2MTFhXHU4NjVlXHU1NWIwXHU3YTdh''@;'; put 'put ''XHU1MDc2XHU1YmQzXHU5MDQ3XHU5Njg1XHU0ZTMyXHU2YWRiXHU5MWU3XHU1YzUxXHU1YzQ4Il0sWyJiN2ExIiwiXHU2Mzk4XHU3YTlmXHU2YzkzXHU5Nzc0XHU4ZjYxXHU3YWFhXHU3MThhXHU5Njg4XHU3YzgyXHU2ODE3XHU3ZTcwXHU2ODUxXHU5MzZjXHU1MmYyXHU1NDFiXHU4NWFiXHU4''@;'; put 'put ''YTEzXHU3ZmE0XHU4ZWNkXHU5MGUxXHU1MzY2XHU4ODg4XHU3OTQxXHU0ZmMyXHU1MGJlXHU1MjExXHU1MTQ0XHU1NTUzXHU1NzJkXHU3M2VhXHU1NzhiXHU1OTUxXHU1ZjYyXHU1Zjg0XHU2MDc1XHU2MTc2XHU2MTY3XHU2MWE5XHU2M2IyXHU2NDNhXHU2NTZjXHU2NjZmXHU2ODQyXHU2ZTEz''@;'; put 'put ''XHU3NTY2XHU3YTNkXHU3Y2ZiXHU3ZDRjXHU3ZDk5XHU3ZTRiXHU3ZjZiXHU4MzBlXHU4MzRhXHU4NmNkXHU4YTA4XHU4YTYzXHU4YjY2XHU4ZWZkXHU5ODFhXHU5ZDhmXHU4MmI4XHU4ZmNlXHU5YmU4XHU1Mjg3XHU2MjFmXHU2NDgzXHU2ZmMwXHU5Njk5XHU2ODQxXHU1MDkxXHU2YjIwXHU2''@;'; put 'put ''YzdhXHU2ZjU0XHU3YTc0XHU3ZDUwXHU4ODQwXHU4YTIzXHU2NzA4XHU0ZWY2XHU1MDM5XHU1MDI2XHU1MDY1XHU1MTdjXHU1MjM4XHU1MjYzXHU1NWE3XHU1NzBmXHU1ODA1XHU1YWNjXHU1ZWZhXHU2MWIyXHU2MWY4XHU2MmYzXHU2MzcyIl0sWyJiOGExIiwiXHU2OTFjXHU2YTI5XHU3Mjdk''@;'; put 'put ''XHU3MmFjXHU3MzJlXHU3ODE0XHU3ODZmXHU3ZDc5XHU3NzBjXHU4MGE5XHU4OThiXHU4YjE5XHU4Y2UyXHU4ZWQyXHU5MDYzXHU5Mzc1XHU5NjdhXHU5ODU1XHU5YTEzXHU5ZTc4XHU1MTQzXHU1MzlmXHU1M2IzXHU1ZTdiXHU1ZjI2XHU2ZTFiXHU2ZTkwXHU3Mzg0XHU3M2ZlXHU3ZDQzXHU4''@;'; put 'put ''MjM3XHU4YTAwXHU4YWZhXHU5NjUwXHU0ZTRlXHU1MDBiXHU1M2U0XHU1NDdjXHU1NmZhXHU1OWQxXHU1YjY0XHU1ZGYxXHU1ZWFiXHU1ZjI3XHU2MjM4XHU2NTQ1XHU2N2FmXHU2ZTU2XHU3MmQwXHU3Y2NhXHU4OGI0XHU4MGExXHU4MGUxXHU4M2YwXHU4NjRlXHU4YTg3XHU4ZGU4XHU5MjM3''@;'; put 'put ''XHU5NmM3XHU5ODY3XHU5ZjEzXHU0ZTk0XHU0ZTkyXHU0ZjBkXHU1MzQ4XHU1NDQ5XHU1NDNlXHU1YTJmXHU1ZjhjXHU1ZmExXHU2MDlmXHU2OGE3XHU2YThlXHU3NDVhXHU3ODgxXHU4YTllXHU4YWE0XHU4Yjc3XHU5MTkwXHU0ZTVlXHU5YmM5XHU0ZWE0XHU0ZjdjXHU0ZmFmXHU1MDE5XHU1''@;'; put 'put ''MDE2XHU1MTQ5XHU1MTZjXHU1MjlmXHU1MmI5XHU1MmZlXHU1MzlhXHU1M2UzXHU1NDExIl0sWyJiOWExIiwiXHU1NDBlXHU1NTg5XHU1NzUxXHU1N2EyXHU1OTdkXHU1YjU0XHU1YjVkXHU1YjhmXHU1ZGU1XHU1ZGU3XHU1ZGY3XHU1ZTc4XHU1ZTgzXHU1ZTlhXHU1ZWI3XHU1ZjE4XHU2MDUy''@;'; put 'put ''XHU2MTRjXHU2Mjk3XHU2MmQ4XHU2M2E3XHU2NTNiXHU2NjAyXHU2NjQzXHU2NmY0XHU2NzZkXHU2ODIxXHU2ODk3XHU2OWNiXHU2YzVmXHU2ZDJhXHU2ZDY5XHU2ZTJmXHU2ZTlkXHU3NTMyXHU3Njg3XHU3ODZjXHU3YTNmXHU3Y2UwXHU3ZDA1XHU3ZDE4XHU3ZDVlXHU3ZGIxXHU4MDE1XHU4''@;'; put 'put ''MDAzXHU4MGFmXHU4MGIxXHU4MTU0XHU4MThmXHU4MjJhXHU4MzUyXHU4ODRjXHU4ODYxXHU4YjFiXHU4Y2EyXHU4Y2ZjXHU5MGNhXHU5MTc1XHU5MjcxXHU3ODNmXHU5MmZjXHU5NWE0XHU5NjRkXHU5ODA1XHU5OTk5XHU5YWQ4XHU5ZDNiXHU1MjViXHU1MmFiXHU1M2Y3XHU1NDA4XHU1OGQ1''@;'; put 'put ''XHU2MmY3XHU2ZmUwXHU4YzZhXHU4ZjVmXHU5ZWI5XHU1MTRiXHU1MjNiXHU1NDRhXHU1NmZkXHU3YTQwXHU5MTc3XHU5ZDYwXHU5ZWQyXHU3MzQ0XHU2ZjA5XHU4MTcwXHU3NTExXHU1ZmZkXHU2MGRhXHU5YWE4XHU3MmRiXHU4ZmJjIl0sWyJiYWExIiwiXHU2YjY0XHU5ODAzXHU0ZWNhXHU1''@;'; put 'put ''NmYwXHU1NzY0XHU1OGJlXHU1YTVhXHU2MDY4XHU2MWM3XHU2NjBmXHU2NjA2XHU2ODM5XHU2OGIxXHU2ZGY3XHU3NWQ1XHU3ZDNhXHU4MjZlXHU5YjQyXHU0ZTliXHU0ZjUwXHU1M2M5XHU1NTA2XHU1ZDZmXHU1ZGU2XHU1ZGVlXHU2N2ZiXHU2Yzk5XHU3NDczXHU3ODAyXHU4YTUwXHU5Mzk2''@;'; put 'put ''XHU4OGRmXHU1NzUwXHU1ZWE3XHU2MzJiXHU1MGI1XHU1MGFjXHU1MThkXHU2NzAwXHU1NGM5XHU1ODVlXHU1OWJiXHU1YmIwXHU1ZjY5XHU2MjRkXHU2M2ExXHU2ODNkXHU2YjczXHU2ZTA4XHU3MDdkXHU5MWM3XHU3MjgwXHU3ODE1XHU3ODI2XHU3OTZkXHU2NThlXHU3ZDMwXHU4M2RjXHU4''@;'; put 'put ''OGMxXHU4ZjA5XHU5NjliXHU1MjY0XHU1NzI4XHU2NzUwXHU3ZjZhXHU4Y2ExXHU1MWI0XHU1NzQyXHU5NjJhXHU1ODNhXHU2OThhXHU4MGI0XHU1NGIyXHU1ZDBlXHU1N2ZjXHU3ODk1XHU5ZGZhXHU0ZjVjXHU1MjRhXHU1NDhiXHU2NDNlXHU2NjI4XHU2NzE0XHU2N2Y1XHU3YTg0XHU3YjU2''@;'; put 'put ''XHU3ZDIyXHU5MzJmXHU2ODVjXHU5YmFkXHU3YjM5XHU1MzE5XHU1MThhXHU1MjM3Il0sWyJiYmExIiwiXHU1YmRmXHU2MmY2XHU2NGFlXHU2NGU2XHU2NzJkXHU2YmJhXHU4NWE5XHU5NmQxXHU3NjkwXHU5YmQ2XHU2MzRjXHU5MzA2XHU5YmFiXHU3NmJmXHU2NjUyXHU0ZTA5XHU1MDk4XHU1''@;'; put 'put ''M2MyXHU1YzcxXHU2MGU4XHU2NDkyXHU2NTYzXHU2ODVmXHU3MWU2XHU3M2NhXHU3NTIzXHU3Yjk3XHU3ZTgyXHU4Njk1XHU4YjgzXHU4Y2RiXHU5MTc4XHU5OTEwXHU2NWFjXHU2NmFiXHU2YjhiXHU0ZWQ1XHU0ZWQ0XHU0ZjNhXHU0ZjdmXHU1MjNhXHU1M2Y4XHU1M2YyXHU1NWUzXHU1NmRi''@;'; put 'put ''XHU1OGViXHU1OWNiXHU1OWM5XHU1OWZmXHU1YjUwXHU1YzRkXHU1ZTAyXHU1ZTJiXHU1ZmQ3XHU2MDFkXHU2MzA3XHU2NTJmXHU1YjVjXHU2NWFmXHU2NWJkXHU2NWU4XHU2NzlkXHU2YjYyXHU2YjdiXHU2YzBmXHU3MzQ1XHU3OTQ5XHU3OWMxXHU3Y2Y4XHU3ZDE5XHU3ZDJiXHU4MGEyXHU4''@;'; put 'put ''MTAyXHU4MWYzXHU4OTk2XHU4YTVlXHU4YTY5XHU4YTY2XHU4YThjXHU4YWVlXHU4Y2M3XHU4Y2RjXHU5NmNjXHU5OGZjXHU2YjZmXHU0ZThiXHU0ZjNjXHU0ZjhkXHU1MTUwXHU1YjU3XHU1YmZhXHU2MTQ4XHU2MzAxXHU2NjQyIl0sWyJiY2ExIiwiXHU2YjIxXHU2ZWNiXHU2Y2JiXHU3MjNl''@;'; put 'put ''XHU3NGJkXHU3NWQ0XHU3OGMxXHU3OTNhXHU4MDBjXHU4MDMzXHU4MWVhXHU4NDk0XHU4ZjllXHU2YzUwXHU5ZTdmXHU1ZjBmXHU4YjU4XHU5ZDJiXHU3YWZhXHU4ZWY4XHU1YjhkXHU5NmViXHU0ZTAzXHU1M2YxXHU1N2Y3XHU1OTMxXHU1YWM5XHU1YmE0XHU2MDg5XHU2ZTdmXHU2ZjA2XHU3''@;'; put 'put ''NWJlXHU4Y2VhXHU1YjlmXHU4NTAwXHU3YmUwXHU1MDcyXHU2N2Y0XHU4MjlkXHU1YzYxXHU4NTRhXHU3ZTFlXHU4MjBlXHU1MTk5XHU1YzA0XHU2MzY4XHU4ZDY2XHU2NTljXHU3MTZlXHU3OTNlXHU3ZDE3XHU4MDA1XHU4YjFkXHU4ZWNhXHU5MDZlXHU4NmM3XHU5MGFhXHU1MDFmXHU1MmZh''@;'; put 'put ''XHU1YzNhXHU2NzUzXHU3MDdjXHU3MjM1XHU5MTRjXHU5MWM4XHU5MzJiXHU4MmU1XHU1YmMyXHU1ZjMxXHU2MGY5XHU0ZTNiXHU1M2Q2XHU1Yjg4XHU2MjRiXHU2NzMxXHU2YjhhXHU3MmU5XHU3M2UwXHU3YTJlXHU4MTZiXHU4ZGEzXHU5MTUyXHU5OTk2XHU1MTEyXHU1M2Q3XHU1NDZhXHU1''@;'; put 'put ''YmZmXHU2Mzg4XHU2YTM5XHU3ZGFjXHU5NzAwXHU1NmRhXHU1M2NlXHU1NDY4Il0sWyJiZGExIiwiXHU1Yjk3XHU1YzMxXHU1ZGRlXHU0ZmVlXHU2MTAxXHU2MmZlXHU2ZDMyXHU3OWMwXHU3OWNiXHU3ZDQyXHU3ZTRkXHU3ZmQyXHU4MWVkXHU4MjFmXHU4NDkwXHU4ODQ2XHU4OTcyXHU4Yjkw''@;'; put 'put ''XHU4ZTc0XHU4ZjJmXHU5MDMxXHU5MTRiXHU5MTZjXHU5NmM2XHU5MTljXHU0ZWMwXHU0ZjRmXHU1MTQ1XHU1MzQxXHU1ZjkzXHU2MjBlXHU2N2Q0XHU2YzQxXHU2ZTBiXHU3MzYzXHU3ZTI2XHU5MWNkXHU5MjgzXHU1M2Q0XHU1OTE5XHU1YmJmXHU2ZGQxXHU3OTVkXHU3ZTJlXHU3YzliXHU1''@;'; put 'put ''ODdlXHU3MTlmXHU1MWZhXHU4ODUzXHU4ZmYwXHU0ZmNhXHU1Y2ZiXHU2NjI1XHU3N2FjXHU3YWUzXHU4MjFjXHU5OWZmXHU1MWM2XHU1ZmFhXHU2NWVjXHU2OTZmXHU2Yjg5XHU2ZGYzXHU2ZTk2XHU2ZjY0XHU3NmZlXHU3ZDE0XHU1ZGUxXHU5MDc1XHU5MTg3XHU5ODA2XHU1MWU2XHU1MjFk''@;'; put 'put ''XHU2MjQwXHU2NjkxXHU2NmQ5XHU2ZTFhXHU1ZWI2XHU3ZGQyXHU3ZjcyXHU2NmY4XHU4NWFmXHU4NWY3XHU4YWY4XHU1MmE5XHU1M2Q5XHU1OTczXHU1ZThmXHU1ZjkwXHU2MDU1XHU5MmU0XHU5NjY0XHU1MGI3XHU1MTFmIl0sWyJiZWExIiwiXHU1MmRkXHU1MzIwXHU1MzQ3XHU1M2VjXHU1''@;'; put 'put ''NGU4XHU1NTQ2XHU1NTMxXHU1NjE3XHU1OTY4XHU1OWJlXHU1YTNjXHU1YmI1XHU1YzA2XHU1YzBmXHU1YzExXHU1YzFhXHU1ZTg0XHU1ZThhXHU1ZWUwXHU1ZjcwXHU2MjdmXHU2Mjg0XHU2MmRiXHU2MzhjXHU2Mzc3XHU2NjA3XHU2NjBjXHU2NjJkXHU2Njc2XHU2NzdlXHU2OGEyXHU2YTFm''@;'; put 'put ''XHU2YTM1XHU2Y2JjXHU2ZDg4XHU2ZTA5XHU2ZTU4XHU3MTNjXHU3MTI2XHU3MTY3XHU3NWM3XHU3NzAxXHU3ODVkXHU3OTAxXHU3OTY1XHU3OWYwXHU3YWUwXHU3YjExXHU3Y2E3XHU3ZDM5XHU4MDk2XHU4M2Q2XHU4NDhiXHU4NTQ5XHU4ODVkXHU4OGYzXHU4YTFmXHU4YTNjXHU4YTU0XHU4''@;'; put 'put ''YTczXHU4YzYxXHU4Y2RlXHU5MWE0XHU5MjY2XHU5MzdlXHU5NDE4XHU5NjljXHU5Nzk4XHU0ZTBhXHU0ZTA4XHU0ZTFlXHU0ZTU3XHU1MTk3XHU1MjcwXHU1N2NlXHU1ODM0XHU1OGNjXHU1YjIyXHU1ZTM4XHU2MGM1XHU2NGZlXHU2NzYxXHU2NzU2XHU2ZDQ0XHU3MmI2XHU3NTczXHU3YTYz''@;'; put 'put ''XHU4NGI4XHU4YjcyXHU5MWI4XHU5MzIwXHU1NjMxXHU1N2Y0XHU5OGZlIl0sWyJiZmExIiwiXHU2MmVkXHU2OTBkXHU2Yjk2XHU3MWVkXHU3ZTU0XHU4MDc3XHU4MjcyXHU4OWU2XHU5OGRmXHU4NzU1XHU4ZmIxXHU1YzNiXHU0ZjM4XHU0ZmUxXHU0ZmI1XHU1NTA3XHU1YTIwXHU1YmRkXHU1''@;'; put 'put ''YmU5XHU1ZmMzXHU2MTRlXHU2MzJmXHU2NWIwXHU2NjRiXHU2OGVlXHU2OTliXHU2ZDc4XHU2ZGYxXHU3NTMzXHU3NWI5XHU3NzFmXHU3OTVlXHU3OWU2XHU3ZDMzXHU4MWUzXHU4MmFmXHU4NWFhXHU4OWFhXHU4YTNhXHU4ZWFiXHU4ZjliXHU5MDMyXHU5MWRkXHU5NzA3XHU0ZWJhXHU0ZWMx''@;'; put 'put ''XHU1MjAzXHU1ODc1XHU1OGVjXHU1YzBiXHU3NTFhXHU1YzNkXHU4MTRlXHU4YTBhXHU4ZmM1XHU5NjYzXHU5NzZkXHU3YjI1XHU4YWNmXHU5ODA4XHU5MTYyXHU1NmYzXHU1M2E4XHU5MDE3XHU1NDM5XHU1NzgyXHU1ZTI1XHU2M2E4XHU2YzM0XHU3MDhhXHU3NzYxXHU3YzhiXHU3ZmUwXHU4''@;'; put 'put ''ODcwXHU5MDQyXHU5MTU0XHU5MzEwXHU5MzE4XHU5NjhmXHU3NDVlXHU5YWM0XHU1ZDA3XHU1ZDY5XHU2NTcwXHU2N2EyXHU4ZGE4XHU5NmRiXHU2MzZlXHU2NzQ5XHU2OTE5XHU4M2M1XHU5ODE3XHU5NmMwXHU4OGZlIl0sWyJjMGExIiwiXHU2Zjg0XHU2NDdhXHU1YmY4XHU0ZTE2XHU3MDJj''@;'; put 'put ''XHU3NTVkXHU2NjJmXHU1MWM0XHU1MjM2XHU1MmUyXHU1OWQzXHU1ZjgxXHU2MDI3XHU2MjEwXHU2NTNmXHU2NTc0XHU2NjFmXHU2Njc0XHU2OGYyXHU2ODE2XHU2YjYzXHU2ZTA1XHU3MjcyXHU3NTFmXHU3NmRiXHU3Y2JlXHU4MDU2XHU1OGYwXHU4OGZkXHU4OTdmXHU4YWEwXHU4YTkzXHU4''@;'; put 'put ''YWNiXHU5MDFkXHU5MTkyXHU5NzUyXHU5NzU5XHU2NTg5XHU3YTBlXHU4MTA2XHU5NmJiXHU1ZTJkXHU2MGRjXHU2MjFhXHU2NWE1XHU2NjE0XHU2NzkwXHU3N2YzXHU3YTRkXHU3YzRkXHU3ZTNlXHU4MTBhXHU4Y2FjXHU4ZDY0XHU4ZGUxXHU4ZTVmXHU3OGE5XHU1MjA3XHU2MmQ5XHU2M2E1''@;'; put 'put ''XHU2NDQyXHU2Mjk4XHU4YTJkXHU3YTgzXHU3YmMwXHU4YWFjXHU5NmVhXHU3ZDc2XHU4MjBjXHU4NzQ5XHU0ZWQ5XHU1MTQ4XHU1MzQzXHU1MzYwXHU1YmEzXHU1YzAyXHU1YzE2XHU1ZGRkXHU2MjI2XHU2MjQ3XHU2NGIwXHU2ODEzXHU2ODM0XHU2Y2M5XHU2ZDQ1XHU2ZDE3XHU2N2QzXHU2''@;'; put 'put ''ZjVjXHU3MTRlXHU3MTdkXHU2NWNiXHU3YTdmXHU3YmFkXHU3ZGRhIl0sWyJjMWExIiwiXHU3ZTRhXHU3ZmE4XHU4MTdhXHU4MjFiXHU4MjM5XHU4NWE2XHU4YTZlXHU4Y2NlXHU4ZGY1XHU5MDc4XHU5MDc3XHU5MmFkXHU5MjkxXHU5NTgzXHU5YmFlXHU1MjRkXHU1NTg0XHU2ZjM4XHU3MTM2''@;'; put 'put ''XHU1MTY4XHU3OTg1XHU3ZTU1XHU4MWIzXHU3Y2NlXHU1NjRjXHU1ODUxXHU1Y2E4XHU2M2FhXHU2NmZlXHU2NmZkXHU2OTVhXHU3MmQ5XHU3NThmXHU3NThlXHU3OTBlXHU3OTU2XHU3OWRmXHU3Yzk3XHU3ZDIwXHU3ZDQ0XHU4NjA3XHU4YTM0XHU5NjNiXHU5MDYxXHU5ZjIwXHU1MGU3XHU1''@;'; put 'put ''Mjc1XHU1M2NjXHU1M2UyXHU1MDA5XHU1NWFhXHU1OGVlXHU1OTRmXHU3MjNkXHU1YjhiXHU1YzY0XHU1MzFkXHU2MGUzXHU2MGYzXHU2MzVjXHU2MzgzXHU2MzNmXHU2M2JiXHU2NGNkXHU2NWU5XHU2NmY5XHU1ZGUzXHU2OWNkXHU2OWZkXHU2ZjE1XHU3MWU1XHU0ZTg5XHU3NWU5XHU3NmY4''@;'; put 'put ''XHU3YTkzXHU3Y2RmXHU3ZGNmXHU3ZDljXHU4MDYxXHU4MzQ5XHU4MzU4XHU4NDZjXHU4NGJjXHU4NWZiXHU4OGM1XHU4ZDcwXHU5MDAxXHU5MDZkXHU5Mzk3XHU5NzFjXHU5YTEyXHU1MGNmXHU1ODk3XHU2MThlIl0sWyJjMmExIiwiXHU4MWQzXHU4NTM1XHU4ZDA4XHU5MDIwXHU0ZmMzXHU1''@;'; put 'put ''MDc0XHU1MjQ3XHU1MzczXHU2MDZmXHU2MzQ5XHU2NzVmXHU2ZTJjXHU4ZGIzXHU5MDFmXHU0ZmQ3XHU1YzVlXHU4Y2NhXHU2NWNmXHU3ZDlhXHU1MzUyXHU4ODk2XHU1MTc2XHU2M2MzXHU1YjU4XHU1YjZiXHU1YzBhXHU2NDBkXHU2NzUxXHU5MDVjXHU0ZWQ2XHU1OTFhXHU1OTJhXHU2Yzcw''@;'; put 'put ''XHU4YTUxXHU1NTNlXHU1ODE1XHU1OWE1XHU2MGYwXHU2MjUzXHU2N2MxXHU4MjM1XHU2OTU1XHU5NjQwXHU5OWM0XHU5YTI4XHU0ZjUzXHU1ODA2XHU1YmZlXHU4MDEwXHU1Y2IxXHU1ZTJmXHU1Zjg1XHU2MDIwXHU2MTRiXHU2MjM0XHU2NmZmXHU2Y2YwXHU2ZWRlXHU4MGNlXHU4MTdmXHU4''@;'; put 'put ''MmQ0XHU4ODhiXHU4Y2I4XHU5MDAwXHU5MDJlXHU5NjhhXHU5ZWRiXHU5YmRiXHU0ZWUzXHU1M2YwXHU1OTI3XHU3YjJjXHU5MThkXHU5ODRjXHU5ZGY5XHU2ZWRkXHU3MDI3XHU1MzUzXHU1NTQ0XHU1Yjg1XHU2MjU4XHU2MjllXHU2MmQzXHU2Y2EyXHU2ZmVmXHU3NDIyXHU4YTE3XHU5NDM4''@;'; put 'put ''XHU2ZmMxXHU4YWZlXHU4MzM4XHU1MWU3XHU4NmY4XHU1M2VhIl0sWyJjM2ExIiwiXHU1M2U5XHU0ZjQ2XHU5MDU0XHU4ZmIwXHU1OTZhXHU4MTMxXHU1ZGZkXHU3YWVhXHU4ZmJmXHU2OGRhXHU4YzM3XHU3MmY4XHU5YzQ4XHU2YTNkXHU4YWIwXHU0ZTM5XHU1MzU4XHU1NjA2XHU1NzY2XHU2''@;'; put 'put ''MmM1XHU2M2EyXHU2NWU2XHU2YjRlXHU2ZGUxXHU2ZTViXHU3MGFkXHU3N2VkXHU3YWVmXHU3YmFhXHU3ZGJiXHU4MDNkXHU4MGM2XHU4NmNiXHU4YTk1XHU5MzViXHU1NmUzXHU1OGM3XHU1ZjNlXHU2NWFkXHU2Njk2XHU2YTgwXHU2YmI1XHU3NTM3XHU4YWM3XHU1MDI0XHU3N2U1XHU1NzMw''@;'; put 'put ''XHU1ZjFiXHU2MDY1XHU2NjdhXHU2YzYwXHU3NWY0XHU3YTFhXHU3ZjZlXHU4MWY0XHU4NzE4XHU5MDQ1XHU5OWIzXHU3YmM5XHU3NTVjXHU3YWY5XHU3YjUxXHU4NGM0XHU5MDEwXHU3OWU5XHU3YTkyXHU4MzM2XHU1YWUxXHU3NzQwXHU0ZTJkXHU0ZWYyXHU1Yjk5XHU1ZmUwXHU2MmJkXHU2''@;'; put 'put ''NjNjXHU2N2YxXHU2Y2U4XHU4NjZiXHU4ODc3XHU4YTNiXHU5MTRlXHU5MmYzXHU5OWQwXHU2YTE3XHU3MDI2XHU3MzJhXHU4MmU3XHU4NDU3XHU4Y2FmXHU0ZTAxXHU1MTQ2XHU1MWNiXHU1NThiXHU1YmY1Il0sWyJjNGExIiwiXHU1ZTE2XHU1ZTMzXHU1ZTgxXHU1ZjE0XHU1ZjM1XHU1ZjZi''@;'; put 'put ''XHU1ZmI0XHU2MWYyXHU2MzExXHU2NmEyXHU2NzFkXHU2ZjZlXHU3MjUyXHU3NTNhXHU3NzNhXHU4MDc0XHU4MTM5XHU4MTc4XHU4Nzc2XHU4YWJmXHU4YWRjXHU4ZDg1XHU4ZGYzXHU5MjlhXHU5NTc3XHU5ODAyXHU5Y2U1XHU1MmM1XHU2MzU3XHU3NmY0XHU2NzE1XHU2Yzg4XHU3M2NkXHU4''@;'; put 'put ''Y2MzXHU5M2FlXHU5NjczXHU2ZDI1XHU1ODljXHU2OTBlXHU2OWNjXHU4ZmZkXHU5MzlhXHU3NWRiXHU5MDFhXHU1ODVhXHU2ODAyXHU2M2I0XHU2OWZiXHU0ZjQzXHU2ZjJjXHU2N2Q4XHU4ZmJiXHU4NTI2XHU3ZGI0XHU5MzU0XHU2OTNmXHU2ZjcwXHU1NzZhXHU1OGY3XHU1YjJjXHU3ZDJj''@;'; put 'put ''XHU3MjJhXHU1NDBhXHU5MWUzXHU5ZGI0XHU0ZWFkXHU0ZjRlXHU1MDVjXHU1MDc1XHU1MjQzXHU4YzllXHU1NDQ4XHU1ODI0XHU1YjlhXHU1ZTFkXHU1ZTk1XHU1ZWFkXHU1ZWY3XHU1ZjFmXHU2MDhjXHU2MmI1XHU2MzNhXHU2M2QwXHU2OGFmXHU2YzQwXHU3ODg3XHU3OThlXHU3YTBiXHU3''@;'; put 'put ''ZGUwXHU4MjQ3XHU4YTAyXHU4YWU2XHU4ZTQ0XHU5MDEzIl0sWyJjNWExIiwiXHU5MGI4XHU5MTJkXHU5MWQ4XHU5ZjBlXHU2Y2U1XHU2NDU4XHU2NGUyXHU2NTc1XHU2ZWY0XHU3Njg0XHU3YjFiXHU5MDY5XHU5M2QxXHU2ZWJhXHU1NGYyXHU1ZmI5XHU2NGE0XHU4ZjRkXHU4ZmVkXHU5MjQ0''@;'; put 'put ''XHU1MTc4XHU1ODZiXHU1OTI5XHU1YzU1XHU1ZTk3XHU2ZGZiXHU3ZThmXHU3NTFjXHU4Y2JjXHU4ZWUyXHU5ODViXHU3MGI5XHU0ZjFkXHU2YmJmXHU2ZmIxXHU3NTMwXHU5NmZiXHU1MTRlXHU1NDEwXHU1ODM1XHU1ODU3XHU1OWFjXHU1YzYwXHU1ZjkyXHU2NTk3XHU2NzVjXHU2ZTIxXHU3''@;'; put 'put ''NjdiXHU4M2RmXHU4Y2VkXHU5MDE0XHU5MGZkXHU5MzRkXHU3ODI1XHU3ODNhXHU1MmFhXHU1ZWE2XHU1NzFmXHU1OTc0XHU2MDEyXHU1MDEyXHU1MTVhXHU1MWFjXHU1MWNkXHU1MjAwXHU1NTEwXHU1ODU0XHU1ODU4XHU1OTU3XHU1Yjk1XHU1Y2Y2XHU1ZDhiXHU2MGJjXHU2Mjk1XHU2NDJk''@;'; put 'put ''XHU2NzcxXHU2ODQzXHU2OGJjXHU2OGRmXHU3NmQ3XHU2ZGQ4XHU2ZTZmXHU2ZDliXHU3MDZmXHU3MWM4XHU1ZjUzXHU3NWQ4XHU3OTc3XHU3YjQ5XHU3YjU0XHU3YjUyXHU3Y2Q2XHU3ZDcxXHU1MjMwIl0sWyJjNmExIiwiXHU4NDYzXHU4NTY5XHU4NWU0XHU4YTBlXHU4YjA0XHU4YzQ2XHU4''@;'; put 'put ''ZTBmXHU5MDAzXHU5MDBmXHU5NDE5XHU5Njc2XHU5ODJkXHU5YTMwXHU5NWQ4XHU1MGNkXHU1MmQ1XHU1NDBjXHU1ODAyXHU1YzBlXHU2MWE3XHU2NDllXHU2ZDFlXHU3N2IzXHU3YWU1XHU4MGY0XHU4NDA0XHU5MDUzXHU5Mjg1XHU1Y2UwXHU5ZDA3XHU1MzNmXHU1Zjk3XHU1ZmIzXHU2ZDlj''@;'; put 'put ''XHU3Mjc5XHU3NzYzXHU3OWJmXHU3YmU0XHU2YmQyXHU3MmVjXHU4YWFkXHU2ODAzXHU2YTYxXHU1MWY4XHU3YTgxXHU2OTM0XHU1YzRhXHU5Y2Y2XHU4MmViXHU1YmM1XHU5MTQ5XHU3MDFlXHU1Njc4XHU1YzZmXHU2MGM3XHU2NTY2XHU2YzhjXHU4YzVhXHU5MDQxXHU5ODEzXHU1NDUxXHU2''@;'; put 'put ''NmM3XHU5MjBkXHU1OTQ4XHU5MGEzXHU1MTg1XHU0ZTRkXHU1MWVhXHU4NTk5XHU4YjBlXHU3MDU4XHU2MzdhXHU5MzRiXHU2OTYyXHU5OWI0XHU3ZTA0XHU3NTc3XHU1MzU3XHU2OTYwXHU4ZWRmXHU5NmUzXHU2YzVkXHU0ZThjXHU1YzNjXHU1ZjEwXHU4ZmU5XHU1MzAyXHU4Y2QxXHU4MDg5''@;'; put 'put ''XHU4Njc5XHU1ZWZmXHU2NWU1XHU0ZTczXHU1MTY1Il0sWyJjN2ExIiwiXHU1OTgyXHU1YzNmXHU5N2VlXHU0ZWZiXHU1OThhXHU1ZmNkXHU4YThkXHU2ZmUxXHU3OWIwXHU3OTYyXHU1YmU3XHU4NDcxXHU3MzJiXHU3MWIxXHU1ZTc0XHU1ZmY1XHU2MzdiXHU2NDlhXHU3MWMzXHU3Yzk4XHU0''@;'; put 'put ''ZTQzXHU1ZWZjXHU0ZTRiXHU1N2RjXHU1NmEyXHU2MGE5XHU2ZmMzXHU3ZDBkXHU4MGZkXHU4MTMzXHU4MWJmXHU4ZmIyXHU4OTk3XHU4NmE0XHU1ZGY0XHU2MjhhXHU2NGFkXHU4OTg3XHU2Nzc3XHU2Y2UyXHU2ZDNlXHU3NDM2XHU3ODM0XHU1YTQ2XHU3Zjc1XHU4MmFkXHU5OWFjXHU0ZmYz''@;'; put 'put ''XHU1ZWMzXHU2MmRkXHU2MzkyXHU2NTU3XHU2NzZmXHU3NmMzXHU3MjRjXHU4MGNjXHU4MGJhXHU4ZjI5XHU5MTRkXHU1MDBkXHU1N2Y5XHU1YTkyXHU2ODg1XHU2OTczXHU3MTY0XHU3MmZkXHU4Y2I3XHU1OGYyXHU4Y2UwXHU5NjZhXHU5MDE5XHU4NzdmXHU3OWU0XHU3N2U3XHU4NDI5XHU0''@;'; put 'put ''ZjJmXHU1MjY1XHU1MzVhXHU2MmNkXHU2N2NmXHU2Y2NhXHU3NjdkXHU3Yjk0XHU3Yzk1XHU4MjM2XHU4NTg0XHU4ZmViXHU2NmRkXHU2ZjIwXHU3MjA2XHU3ZTFiXHU4M2FiXHU5OWMxXHU5ZWE2Il0sWyJjOGExIiwiXHU1MWZkXHU3YmIxXHU3ODcyXHU3YmI4XHU4MDg3XHU3YjQ4XHU2YWU4''@;'; put 'put ''XHU1ZTYxXHU4MDhjXHU3NTUxXHU3NTYwXHU1MTZiXHU5MjYyXHU2ZThjXHU3NjdhXHU5MTk3XHU5YWVhXHU0ZjEwXHU3ZjcwXHU2MjljXHU3YjRmXHU5NWE1XHU5Y2U5XHU1NjdhXHU1ODU5XHU4NmU0XHU5NmJjXHU0ZjM0XHU1MjI0XHU1MzRhXHU1M2NkXHU1M2RiXHU1ZTA2XHU2NDJjXHU2''@;'; put 'put ''NTkxXHU2NzdmXHU2YzNlXHU2YzRlXHU3MjQ4XHU3MmFmXHU3M2VkXHU3NTU0XHU3ZTQxXHU4MjJjXHU4NWU5XHU4Y2E5XHU3YmM0XHU5MWM2XHU3MTY5XHU5ODEyXHU5OGVmXHU2MzNkXHU2NjY5XHU3NTZhXHU3NmU0XHU3OGQwXHU4NTQzXHU4NmVlXHU1MzJhXHU1MzUxXHU1NDI2XHU1OTgz''@;'; put 'put ''XHU1ZTg3XHU1ZjdjXHU2MGIyXHU2MjQ5XHU2Mjc5XHU2MmFiXHU2NTkwXHU2YmQ0XHU2Y2NjXHU3NWIyXHU3NmFlXHU3ODkxXHU3OWQ4XHU3ZGNiXHU3Zjc3XHU4MGE1XHU4OGFiXHU4YWI5XHU4Y2JiXHU5MDdmXHU5NzVlXHU5OGRiXHU2YTBiXHU3YzM4XHU1MDk5XHU1YzNlXHU1ZmFlXHU2''@;'; put 'put ''Nzg3XHU2YmQ4XHU3NDM1XHU3NzA5XHU3ZjhlIl0sWyJjOWExIiwiXHU5ZjNiXHU2N2NhXHU3YTE3XHU1MzM5XHU3NThiXHU5YWVkXHU1ZjY2XHU4MTlkXHU4M2YxXHU4MDk4XHU1ZjNjXHU1ZmM1XHU3NTYyXHU3YjQ2XHU5MDNjXHU2ODY3XHU1OWViXHU1YTliXHU3ZDEwXHU3NjdlXHU4YjJj''@;'; put 'put ''XHU0ZmY1XHU1ZjZhXHU2YTE5XHU2YzM3XHU2ZjAyXHU3NGUyXHU3OTY4XHU4ODY4XHU4YTU1XHU4Yzc5XHU1ZWRmXHU2M2NmXHU3NWM1XHU3OWQyXHU4MmQ3XHU5MzI4XHU5MmYyXHU4NDljXHU4NmVkXHU5YzJkXHU1NGMxXHU1ZjZjXHU2NThjXHU2ZDVjXHU3MDE1XHU4Y2E3XHU4Y2QzXHU5''@;'; put 'put ''ODNiXHU2NTRmXHU3NGY2XHU0ZTBkXHU0ZWQ4XHU1N2UwXHU1OTJiXHU1YTY2XHU1YmNjXHU1MWE4XHU1ZTAzXHU1ZTljXHU2MDE2XHU2Mjc2XHU2NTc3XHU2NWE3XHU2NjZlXHU2ZDZlXHU3MjM2XHU3YjI2XHU4MTUwXHU4MTlhXHU4Mjk5XHU4YjVjXHU4Y2EwXHU4Y2U2XHU4ZDc0XHU5NjFj''@;'; put 'put ''XHU5NjQ0XHU0ZmFlXHU2NGFiXHU2YjY2XHU4MjFlXHU4NDYxXHU4NTZhXHU5MGU4XHU1YzAxXHU2OTUzXHU5OGE4XHU4NDdhXHU4NTU3XHU0ZjBmXHU1MjZmXHU1ZmE5XHU1ZTQ1XHU2NzBkIl0sWyJjYWExIiwiXHU3OThmXHU4MTc5XHU4OTA3XHU4OTg2XHU2ZGY1XHU1ZjE3XHU2MjU1XHU2''@;'; put 'put ''Y2I4XHU0ZWNmXHU3MjY5XHU5YjkyXHU1MjA2XHU1NDNiXHU1Njc0XHU1OGIzXHU2MWE0XHU2MjZlXHU3MTFhXHU1OTZlXHU3Yzg5XHU3Y2RlXHU3ZDFiXHU5NmYwXHU2NTg3XHU4MDVlXHU0ZTE5XHU0Zjc1XHU1MTc1XHU1ODQwXHU1ZTYzXHU1ZTczXHU1ZjBhXHU2N2M0XHU0ZTI2XHU4NTNk''@;'; put 'put ''XHU5NTg5XHU5NjViXHU3YzczXHU5ODAxXHU1MGZiXHU1OGMxXHU3NjU2XHU3OGE3XHU1MjI1XHU3N2E1XHU4NTExXHU3Yjg2XHU1MDRmXHU1OTA5XHU3MjQ3XHU3YmM3XHU3ZGU4XHU4ZmJhXHU4ZmQ0XHU5MDRkXHU0ZmJmXHU1MmM5XHU1YTI5XHU1ZjAxXHU5N2FkXHU0ZmRkXHU4MjE3XHU5''@;'; put 'put ''MmVhXHU1NzAzXHU2MzU1XHU2YjY5XHU3NTJiXHU4OGRjXHU4ZjE0XHU3YTQyXHU1MmRmXHU1ODkzXHU2MTU1XHU2MjBhXHU2NmFlXHU2YmNkXHU3YzNmXHU4M2U5XHU1MDIzXHU0ZmY4XHU1MzA1XHU1NDQ2XHU1ODMxXHU1OTQ5XHU1YjlkXHU1Y2YwXHU1Y2VmXHU1ZDI5XHU1ZTk2XHU2MmIx''@;'; put 'put ''XHU2MzY3XHU2NTNlXHU2NWI5XHU2NzBiIl0sWyJjYmExIiwiXHU2Y2Q1XHU2Y2UxXHU3MGY5XHU3ODMyXHU3ZTJiXHU4MGRlXHU4MmIzXHU4NDBjXHU4NGVjXHU4NzAyXHU4OTEyXHU4YTJhXHU4YzRhXHU5MGE2XHU5MmQyXHU5OGZkXHU5Y2YzXHU5ZDZjXHU0ZTRmXHU0ZWExXHU1MDhkXHU1''@;'; put 'put ''MjU2XHU1NzRhXHU1OWE4XHU1ZTNkXHU1ZmQ4XHU1ZmQ5XHU2MjNmXHU2NmI0XHU2NzFiXHU2N2QwXHU2OGQyXHU1MTkyXHU3ZDIxXHU4MGFhXHU4MWE4XHU4YjAwXHU4YzhjXHU4Y2JmXHU5MjdlXHU5NjMyXHU1NDIwXHU5ODJjXHU1MzE3XHU1MGQ1XHU1MzVjXHU1OGE4XHU2NGIyXHU2NzM0''@;'; put 'put ''XHU3MjY3XHU3NzY2XHU3YTQ2XHU5MWU2XHU1MmMzXHU2Y2ExXHU2Yjg2XHU1ODAwXHU1ZTRjXHU1OTU0XHU2NzJjXHU3ZmZiXHU1MWUxXHU3NmM2XHU2NDY5XHU3OGU4XHU5YjU0XHU5ZWJiXHU1N2NiXHU1OWI5XHU2NjI3XHU2NzlhXHU2YmNlXHU1NGU5XHU2OWQ5XHU1ZTU1XHU4MTljXHU2''@;'; put 'put ''Nzk1XHU5YmFhXHU2N2ZlXHU5YzUyXHU2ODVkXHU0ZWE2XHU0ZmUzXHU1M2M4XHU2MmI5XHU2NzJiXHU2Y2FiXHU4ZmM0XHU0ZmFkXHU3ZTZkXHU5ZWJmXHU0ZTA3XHU2MTYyXHU2ZTgwIl0sWyJjY2ExIiwiXHU2ZjJiXHU4NTEzXHU1NDczXHU2NzJhXHU5YjQ1XHU1ZGYzXHU3Yjk1XHU1Y2Fj''@;'; put 'put ''XHU1YmM2XHU4NzFjXHU2ZTRhXHU4NGQxXHU3YTE0XHU4MTA4XHU1OTk5XHU3YzhkXHU2YzExXHU3NzIwXHU1MmQ5XHU1OTIyXHU3MTIxXHU3MjVmXHU3N2RiXHU5NzI3XHU5ZDYxXHU2OTBiXHU1YTdmXHU1YTE4XHU1MWE1XHU1NDBkXHU1NDdkXHU2NjBlXHU3NmRmXHU4ZmY3XHU5Mjk4XHU5''@;'; put 'put ''Y2Y0XHU1OWVhXHU3MjVkXHU2ZWM1XHU1MTRkXHU2OGM5XHU3ZGJmXHU3ZGVjXHU5NzYyXHU5ZWJhXHU2NDc4XHU2YTIxXHU4MzAyXHU1OTg0XHU1YjVmXHU2YmRiXHU3MzFiXHU3NmYyXHU3ZGIyXHU4MDE3XHU4NDk5XHU1MTMyXHU2NzI4XHU5ZWQ5XHU3NmVlXHU2NzYyXHU1MmZmXHU5OTA1''@;'; put 'put ''XHU1YzI0XHU2MjNiXHU3YzdlXHU4Y2IwXHU1NTRmXHU2MGI2XHU3ZDBiXHU5NTgwXHU1MzAxXHU0ZTVmXHU1MWI2XHU1OTFjXHU3MjNhXHU4MDM2XHU5MWNlXHU1ZjI1XHU3N2UyXHU1Mzg0XHU1Zjc5XHU3ZDA0XHU4NWFjXHU4YTMzXHU4ZThkXHU5NzU2XHU2N2YzXHU4NWFlXHU5NDUzXHU2''@;'; put 'put ''MTA5XHU2MTA4XHU2Y2I5XHU3NjUyIl0sWyJjZGExIiwiXHU4YWVkXHU4ZjM4XHU1NTJmXHU0ZjUxXHU1MTJhXHU1MmM3XHU1M2NiXHU1YmE1XHU1ZTdkXHU2MGEwXHU2MTgyXHU2M2Q2XHU2NzA5XHU2N2RhXHU2ZTY3XHU2ZDhjXHU3MzM2XHU3MzM3XHU3NTMxXHU3OTUwXHU4OGQ1XHU4YTk4''@;'; put 'put ''XHU5MDRhXHU5MDkxXHU5MGY1XHU5NmM0XHU4NzhkXHU1OTE1XHU0ZTg4XHU0ZjU5XHU0ZTBlXHU4YTg5XHU4ZjNmXHU5ODEwXHU1MGFkXHU1ZTdjXHU1OTk2XHU1YmI5XHU1ZWI4XHU2M2RhXHU2M2ZhXHU2NGMxXHU2NmRjXHU2OTRhXHU2OWQ4XHU2ZDBiXHU2ZWI2XHU3MTk0XHU3NTI4XHU3''@;'; put 'put ''YWFmXHU3ZjhhXHU4MDAwXHU4NDQ5XHU4NGM5XHU4OTgxXHU4YjIxXHU4ZTBhXHU5MDY1XHU5NjdkXHU5OTBhXHU2MTdlXHU2MjkxXHU2YjMyXHU2YzgzXHU2ZDc0XHU3ZmNjXHU3ZmZjXHU2ZGMwXHU3Zjg1XHU4N2JhXHU4OGY4XHU2NzY1XHU4M2IxXHU5ODNjXHU5NmY3XHU2ZDFiXHU3ZDYx''@;'; put 'put ''XHU4NDNkXHU5MTZhXHU0ZTcxXHU1Mzc1XHU1ZDUwXHU2YjA0XHU2ZmViXHU4NWNkXHU4NjJkXHU4OWE3XHU1MjI5XHU1NDBmXHU1YzY1XHU2NzRlXHU2OGE4XHU3NDA2XHU3NDgzIl0sWyJjZWExIiwiXHU3NWUyXHU4OGNmXHU4OGUxXHU5MWNjXHU5NmUyXHU5Njc4XHU1ZjhiXHU3Mzg3XHU3''@;'; put 'put ''YWNiXHU4NDRlXHU2M2EwXHU3NTY1XHU1Mjg5XHU2ZDQxXHU2ZTljXHU3NDA5XHU3NTU5XHU3ODZiXHU3YzkyXHU5Njg2XHU3YWRjXHU5ZjhkXHU0ZmI2XHU2MTZlXHU2NWM1XHU4NjVjXHU0ZTg2XHU0ZWFlXHU1MGRhXHU0ZTIxXHU1MWNjXHU1YmVlXHU2NTk5XHU2ODgxXHU2ZGJjXHU3MzFm''@;'; put 'put ''XHU3NjQyXHU3N2FkXHU3YTFjXHU3Y2U3XHU4MjZmXHU4YWQyXHU5MDdjXHU5MWNmXHU5Njc1XHU5ODE4XHU1MjliXHU3ZGQxXHU1MDJiXHU1Mzk4XHU2Nzk3XHU2ZGNiXHU3MWQwXHU3NDMzXHU4MWU4XHU4ZjJhXHU5NmEzXHU5YzU3XHU5ZTlmXHU3NDYwXHU1ODQxXHU2ZDk5XHU3ZDJmXHU5''@;'; put 'put ''ODVlXHU0ZWU0XHU0ZjM2XHU0ZjhiXHU1MWI3XHU1MmIxXHU1ZGJhXHU2MDFjXHU3M2IyXHU3OTNjXHU4MmQzXHU5MjM0XHU5NmI3XHU5NmY2XHU5NzBhXHU5ZTk3XHU5ZjYyXHU2NmE2XHU2Yjc0XHU1MjE3XHU1MmEzXHU3MGM4XHU4OGMyXHU1ZWM5XHU2MDRiXHU2MTkwXHU2ZjIzXHU3MTQ5''@;'; put 'put ''XHU3YzNlXHU3ZGY0XHU4MDZmIl0sWyJjZmExIiwiXHU4NGVlXHU5MDIzXHU5MzJjXHU1NDQyXHU5YjZmXHU2YWQzXHU3MDg5XHU4Y2MyXHU4ZGVmXHU5NzMyXHU1MmI0XHU1YTQxXHU1ZWNhXHU1ZjA0XHU2NzE3XHU2OTdjXHU2OTk0XHU2ZDZhXHU2ZjBmXHU3MjYyXHU3MmZjXHU3YmVkXHU4''@;'; put 'put ''MDAxXHU4MDdlXHU4NzRiXHU5MGNlXHU1MTZkXHU5ZTkzXHU3OTg0XHU4MDhiXHU5MzMyXHU4YWQ2XHU1MDJkXHU1NDhjXHU4YTcxXHU2YjZhXHU4Y2M0XHU4MTA3XHU2MGQxXHU2N2EwXHU5ZGYyXHU0ZTk5XHU0ZTk4XHU5YzEwXHU4YTZiXHU4NWMxXHU4NTY4XHU2OTAwXHU2ZTdlXHU3ODk3''@;'; put 'put ''XHU4MTU1Il0sWyJkMGExIiwiXHU1ZjBjXHU0ZTEwXHU0ZTE1XHU0ZTJhXHU0ZTMxXHU0ZTM2XHU0ZTNjXHU0ZTNmXHU0ZTQyXHU0ZTU2XHU0ZTU4XHU0ZTgyXHU0ZTg1XHU4YzZiXHU0ZThhXHU4MjEyXHU1ZjBkXHU0ZThlXHU0ZTllXHU0ZTlmXHU0ZWEwXHU0ZWEyXHU0ZWIwXHU0ZWIzXHU0''@;'; put 'put ''ZWI2XHU0ZWNlXHU0ZWNkXHU0ZWM0XHU0ZWM2XHU0ZWMyXHU0ZWQ3XHU0ZWRlXHU0ZWVkXHU0ZWRmXHU0ZWY3XHU0ZjA5XHU0ZjVhXHU0ZjMwXHU0ZjViXHU0ZjVkXHU0ZjU3XHU0ZjQ3XHU0Zjc2XHU0Zjg4XHU0ZjhmXHU0Zjk4XHU0ZjdiXHU0ZjY5XHU0ZjcwXHU0ZjkxXHU0ZjZmXHU0Zjg2''@;'; put 'put ''XHU0Zjk2XHU1MTE4XHU0ZmQ0XHU0ZmRmXHU0ZmNlXHU0ZmQ4XHU0ZmRiXHU0ZmQxXHU0ZmRhXHU0ZmQwXHU0ZmU0XHU0ZmU1XHU1MDFhXHU1MDI4XHU1MDE0XHU1MDJhXHU1MDI1XHU1MDA1XHU0ZjFjXHU0ZmY2XHU1MDIxXHU1MDI5XHU1MDJjXHU0ZmZlXHU0ZmVmXHU1MDExXHU1MDA2XHU1''@;'; put 'put ''MDQzXHU1MDQ3XHU2NzAzXHU1MDU1XHU1MDUwXHU1MDQ4XHU1MDVhXHU1MDU2XHU1MDZjXHU1MDc4XHU1MDgwXHU1MDlhXHU1MDg1XHU1MGI0XHU1MGIyIl0sWyJkMWExIiwiXHU1MGM5XHU1MGNhXHU1MGIzXHU1MGMyXHU1MGQ2XHU1MGRlXHU1MGU1XHU1MGVkXHU1MGUzXHU1MGVlXHU1MGY5''@;'; put 'put ''XHU1MGY1XHU1MTA5XHU1MTAxXHU1MTAyXHU1MTE2XHU1MTE1XHU1MTE0XHU1MTFhXHU1MTIxXHU1MTNhXHU1MTM3XHU1MTNjXHU1MTNiXHU1MTNmXHU1MTQwXHU1MTUyXHU1MTRjXHU1MTU0XHU1MTYyXHU3YWY4XHU1MTY5XHU1MTZhXHU1MTZlXHU1MTgwXHU1MTgyXHU1NmQ4XHU1MThjXHU1''@;'; put 'put ''MTg5XHU1MThmXHU1MTkxXHU1MTkzXHU1MTk1XHU1MTk2XHU1MWE0XHU1MWE2XHU1MWEyXHU1MWE5XHU1MWFhXHU1MWFiXHU1MWIzXHU1MWIxXHU1MWIyXHU1MWIwXHU1MWI1XHU1MWJkXHU1MWM1XHU1MWM5XHU1MWRiXHU1MWUwXHU4NjU1XHU1MWU5XHU1MWVkXHU1MWYwXHU1MWY1XHU1MWZl''@;'; put 'put ''XHU1MjA0XHU1MjBiXHU1MjE0XHU1MjBlXHU1MjI3XHU1MjJhXHU1MjJlXHU1MjMzXHU1MjM5XHU1MjRmXHU1MjQ0XHU1MjRiXHU1MjRjXHU1MjVlXHU1MjU0XHU1MjZhXHU1Mjc0XHU1MjY5XHU1MjczXHU1MjdmXHU1MjdkXHU1MjhkXHU1Mjk0XHU1MjkyXHU1MjcxXHU1Mjg4XHU1MjkxXHU4''@;'; put 'put ''ZmE4Il0sWyJkMmExIiwiXHU4ZmE3XHU1MmFjXHU1MmFkXHU1MmJjXHU1MmI1XHU1MmMxXHU1MmNkXHU1MmQ3XHU1MmRlXHU1MmUzXHU1MmU2XHU5OGVkXHU1MmUwXHU1MmYzXHU1MmY1XHU1MmY4XHU1MmY5XHU1MzA2XHU1MzA4XHU3NTM4XHU1MzBkXHU1MzEwXHU1MzBmXHU1MzE1XHU1MzFh''@;'; put 'put ''XHU1MzIzXHU1MzJmXHU1MzMxXHU1MzMzXHU1MzM4XHU1MzQwXHU1MzQ2XHU1MzQ1XHU0ZTE3XHU1MzQ5XHU1MzRkXHU1MWQ2XHU1MzVlXHU1MzY5XHU1MzZlXHU1OTE4XHU1MzdiXHU1Mzc3XHU1MzgyXHU1Mzk2XHU1M2EwXHU1M2E2XHU1M2E1XHU1M2FlXHU1M2IwXHU1M2I2XHU1M2MzXHU3''@;'; put 'put ''YzEyXHU5NmQ5XHU1M2RmXHU2NmZjXHU3MWVlXHU1M2VlXHU1M2U4XHU1M2VkXHU1M2ZhXHU1NDAxXHU1NDNkXHU1NDQwXHU1NDJjXHU1NDJkXHU1NDNjXHU1NDJlXHU1NDM2XHU1NDI5XHU1NDFkXHU1NDRlXHU1NDhmXHU1NDc1XHU1NDhlXHU1NDVmXHU1NDcxXHU1NDc3XHU1NDcwXHU1NDky''@;'; put 'put ''XHU1NDdiXHU1NDgwXHU1NDc2XHU1NDg0XHU1NDkwXHU1NDg2XHU1NGM3XHU1NGEyXHU1NGI4XHU1NGE1XHU1NGFjXHU1NGM0XHU1NGM4XHU1NGE4Il0sWyJkM2ExIiwiXHU1NGFiXHU1NGMyXHU1NGE0XHU1NGJlXHU1NGJjXHU1NGQ4XHU1NGU1XHU1NGU2XHU1NTBmXHU1NTE0XHU1NGZkXHU1''@;'; put 'put ''NGVlXHU1NGVkXHU1NGZhXHU1NGUyXHU1NTM5XHU1NTQwXHU1NTYzXHU1NTRjXHU1NTJlXHU1NTVjXHU1NTQ1XHU1NTU2XHU1NTU3XHU1NTM4XHU1NTMzXHU1NTVkXHU1NTk5XHU1NTgwXHU1NGFmXHU1NThhXHU1NTlmXHU1NTdiXHU1NTdlXHU1NTk4XHU1NTllXHU1NWFlXHU1NTdjXHU1NTgz''@;'; put 'put ''XHU1NWE5XHU1NTg3XHU1NWE4XHU1NWRhXHU1NWM1XHU1NWRmXHU1NWM0XHU1NWRjXHU1NWU0XHU1NWQ0XHU1NjE0XHU1NWY3XHU1NjE2XHU1NWZlXHU1NWZkXHU1NjFiXHU1NWY5XHU1NjRlXHU1NjUwXHU3MWRmXHU1NjM0XHU1NjM2XHU1NjMyXHU1NjM4XHU1NjZiXHU1NjY0XHU1NjJmXHU1''@;'; put 'put ''NjZjXHU1NjZhXHU1Njg2XHU1NjgwXHU1NjhhXHU1NmEwXHU1Njk0XHU1NjhmXHU1NmE1XHU1NmFlXHU1NmI2XHU1NmI0XHU1NmMyXHU1NmJjXHU1NmMxXHU1NmMzXHU1NmMwXHU1NmM4XHU1NmNlXHU1NmQxXHU1NmQzXHU1NmQ3XHU1NmVlXHU1NmY5XHU1NzAwXHU1NmZmXHU1NzA0XHU1NzA5''@;'; put 'put ''Il0sWyJkNGExIiwiXHU1NzA4XHU1NzBiXHU1NzBkXHU1NzEzXHU1NzE4XHU1NzE2XHU1NWM3XHU1NzFjXHU1NzI2XHU1NzM3XHU1NzM4XHU1NzRlXHU1NzNiXHU1NzQwXHU1NzRmXHU1NzY5XHU1N2MwXHU1Nzg4XHU1NzYxXHU1NzdmXHU1Nzg5XHU1NzkzXHU1N2EwXHU1N2IzXHU1N2E0XHU1''@;'; put 'put ''N2FhXHU1N2IwXHU1N2MzXHU1N2M2XHU1N2Q0XHU1N2QyXHU1N2QzXHU1ODBhXHU1N2Q2XHU1N2UzXHU1ODBiXHU1ODE5XHU1ODFkXHU1ODcyXHU1ODIxXHU1ODYyXHU1ODRiXHU1ODcwXHU2YmMwXHU1ODUyXHU1ODNkXHU1ODc5XHU1ODg1XHU1OGI5XHU1ODlmXHU1OGFiXHU1OGJhXHU1OGRl''@;'; put 'put ''XHU1OGJiXHU1OGI4XHU1OGFlXHU1OGM1XHU1OGQzXHU1OGQxXHU1OGQ3XHU1OGQ5XHU1OGQ4XHU1OGU1XHU1OGRjXHU1OGU0XHU1OGRmXHU1OGVmXHU1OGZhXHU1OGY5XHU1OGZiXHU1OGZjXHU1OGZkXHU1OTAyXHU1OTBhXHU1OTEwXHU1OTFiXHU2OGE2XHU1OTI1XHU1OTJjXHU1OTJkXHU1''@;'; put 'put ''OTMyXHU1OTM4XHU1OTNlXHU3YWQyXHU1OTU1XHU1OTUwXHU1OTRlXHU1OTVhXHU1OTU4XHU1OTYyXHU1OTYwXHU1OTY3XHU1OTZjXHU1OTY5Il0sWyJkNWExIiwiXHU1OTc4XHU1OTgxXHU1OTlkXHU0ZjVlXHU0ZmFiXHU1OWEzXHU1OWIyXHU1OWM2XHU1OWU4XHU1OWRjXHU1OThkXHU1OWQ5''@;'; put 'put ''XHU1OWRhXHU1YTI1XHU1YTFmXHU1YTExXHU1YTFjXHU1YTA5XHU1YTFhXHU1YTQwXHU1YTZjXHU1YTQ5XHU1YTM1XHU1YTM2XHU1YTYyXHU1YTZhXHU1YTlhXHU1YWJjXHU1YWJlXHU1YWNiXHU1YWMyXHU1YWJkXHU1YWUzXHU1YWQ3XHU1YWU2XHU1YWU5XHU1YWQ2XHU1YWZhXHU1YWZiXHU1''@;'; put 'put ''YjBjXHU1YjBiXHU1YjE2XHU1YjMyXHU1YWQwXHU1YjJhXHU1YjM2XHU1YjNlXHU1YjQzXHU1YjQ1XHU1YjQwXHU1YjUxXHU1YjU1XHU1YjVhXHU1YjViXHU1YjY1XHU1YjY5XHU1YjcwXHU1YjczXHU1Yjc1XHU1Yjc4XHU2NTg4XHU1YjdhXHU1YjgwXHU1YjgzXHU1YmE2XHU1YmI4XHU1YmMz''@;'; put 'put ''XHU1YmM3XHU1YmM5XHU1YmQ0XHU1YmQwXHU1YmU0XHU1YmU2XHU1YmUyXHU1YmRlXHU1YmU1XHU1YmViXHU1YmYwXHU1YmY2XHU1YmYzXHU1YzA1XHU1YzA3XHU1YzA4XHU1YzBkXHU1YzEzXHU1YzIwXHU1YzIyXHU1YzI4XHU1YzM4XHU1YzM5XHU1YzQxXHU1YzQ2XHU1YzRlXHU1YzUzIl0s''@;'; put 'put ''WyJkNmExIiwiXHU1YzUwXHU1YzRmXHU1YjcxXHU1YzZjXHU1YzZlXHU0ZTYyXHU1Yzc2XHU1Yzc5XHU1YzhjXHU1YzkxXHU1Yzk0XHU1OTliXHU1Y2FiXHU1Y2JiXHU1Y2I2XHU1Y2JjXHU1Y2I3XHU1Y2M1XHU1Y2JlXHU1Y2M3XHU1Y2Q5XHU1Y2U5XHU1Y2ZkXHU1Y2ZhXHU1Y2VkXHU1ZDhj''@;'; put 'put ''XHU1Y2VhXHU1ZDBiXHU1ZDE1XHU1ZDE3XHU1ZDVjXHU1ZDFmXHU1ZDFiXHU1ZDExXHU1ZDE0XHU1ZDIyXHU1ZDFhXHU1ZDE5XHU1ZDE4XHU1ZDRjXHU1ZDUyXHU1ZDRlXHU1ZDRiXHU1ZDZjXHU1ZDczXHU1ZDc2XHU1ZDg3XHU1ZDg0XHU1ZDgyXHU1ZGEyXHU1ZDlkXHU1ZGFjXHU1ZGFlXHU1''@;'; put 'put ''ZGJkXHU1ZDkwXHU1ZGI3XHU1ZGJjXHU1ZGM5XHU1ZGNkXHU1ZGQzXHU1ZGQyXHU1ZGQ2XHU1ZGRiXHU1ZGViXHU1ZGYyXHU1ZGY1XHU1ZTBiXHU1ZTFhXHU1ZTE5XHU1ZTExXHU1ZTFiXHU1ZTM2XHU1ZTM3XHU1ZTQ0XHU1ZTQzXHU1ZTQwXHU1ZTRlXHU1ZTU3XHU1ZTU0XHU1ZTVmXHU1ZTYy''@;'; put 'put ''XHU1ZTY0XHU1ZTQ3XHU1ZTc1XHU1ZTc2XHU1ZTdhXHU5ZWJjXHU1ZTdmXHU1ZWEwXHU1ZWMxXHU1ZWMyXHU1ZWM4XHU1ZWQwXHU1ZWNmIl0sWyJkN2ExIiwiXHU1ZWQ2XHU1ZWUzXHU1ZWRkXHU1ZWRhXHU1ZWRiXHU1ZWUyXHU1ZWUxXHU1ZWU4XHU1ZWU5XHU1ZWVjXHU1ZWYxXHU1ZWYzXHU1''@;'; put 'put ''ZWYwXHU1ZWY0XHU1ZWY4XHU1ZWZlXHU1ZjAzXHU1ZjA5XHU1ZjVkXHU1ZjVjXHU1ZjBiXHU1ZjExXHU1ZjE2XHU1ZjI5XHU1ZjJkXHU1ZjM4XHU1ZjQxXHU1ZjQ4XHU1ZjRjXHU1ZjRlXHU1ZjJmXHU1ZjUxXHU1ZjU2XHU1ZjU3XHU1ZjU5XHU1ZjYxXHU1ZjZkXHU1ZjczXHU1Zjc3XHU1Zjgz''@;'; put 'put ''XHU1ZjgyXHU1ZjdmXHU1ZjhhXHU1Zjg4XHU1ZjkxXHU1Zjg3XHU1ZjllXHU1Zjk5XHU1Zjk4XHU1ZmEwXHU1ZmE4XHU1ZmFkXHU1ZmJjXHU1ZmQ2XHU1ZmZiXHU1ZmU0XHU1ZmY4XHU1ZmYxXHU1ZmRkXHU2MGIzXHU1ZmZmXHU2MDIxXHU2MDYwXHU2MDE5XHU2MDEwXHU2MDI5XHU2MDBlXHU2''@;'; put 'put ''MDMxXHU2MDFiXHU2MDE1XHU2MDJiXHU2MDI2XHU2MDBmXHU2MDNhXHU2MDVhXHU2MDQxXHU2MDZhXHU2MDc3XHU2MDVmXHU2MDRhXHU2MDQ2XHU2MDRkXHU2MDYzXHU2MDQzXHU2MDY0XHU2MDQyXHU2MDZjXHU2MDZiXHU2MDU5XHU2MDgxXHU2MDhkXHU2MGU3XHU2MDgzXHU2MDlhIl0sWyJk''@;'; put 'put ''OGExIiwiXHU2MDg0XHU2MDliXHU2MDk2XHU2MDk3XHU2MDkyXHU2MGE3XHU2MDhiXHU2MGUxXHU2MGI4XHU2MGUwXHU2MGQzXHU2MGI0XHU1ZmYwXHU2MGJkXHU2MGM2XHU2MGI1XHU2MGQ4XHU2MTRkXHU2MTE1XHU2MTA2XHU2MGY2XHU2MGY3XHU2MTAwXHU2MGY0XHU2MGZhXHU2MTAzXHU2''@;'; put 'put ''MTIxXHU2MGZiXHU2MGYxXHU2MTBkXHU2MTBlXHU2MTQ3XHU2MTNlXHU2MTI4XHU2MTI3XHU2MTRhXHU2MTNmXHU2MTNjXHU2MTJjXHU2MTM0XHU2MTNkXHU2MTQyXHU2MTQ0XHU2MTczXHU2MTc3XHU2MTU4XHU2MTU5XHU2MTVhXHU2MTZiXHU2MTc0XHU2MTZmXHU2MTY1XHU2MTcxXHU2MTVm''@;'; put 'put ''XHU2MTVkXHU2MTUzXHU2MTc1XHU2MTk5XHU2MTk2XHU2MTg3XHU2MWFjXHU2MTk0XHU2MTlhXHU2MThhXHU2MTkxXHU2MWFiXHU2MWFlXHU2MWNjXHU2MWNhXHU2MWM5XHU2MWY3XHU2MWM4XHU2MWMzXHU2MWM2XHU2MWJhXHU2MWNiXHU3Zjc5XHU2MWNkXHU2MWU2XHU2MWUzXHU2MWY2XHU2''@;'; put 'put ''MWZhXHU2MWY0XHU2MWZmXHU2MWZkXHU2MWZjXHU2MWZlXHU2MjAwXHU2MjA4XHU2MjA5XHU2MjBkXHU2MjBjXHU2MjE0XHU2MjFiIl0sWyJkOWExIiwiXHU2MjFlXHU2MjIxXHU2MjJhXHU2MjJlXHU2MjMwXHU2MjMyXHU2MjMzXHU2MjQxXHU2MjRlXHU2MjVlXHU2MjYzXHU2MjViXHU2MjYw''@;'; put 'put ''XHU2MjY4XHU2MjdjXHU2MjgyXHU2Mjg5XHU2MjdlXHU2MjkyXHU2MjkzXHU2Mjk2XHU2MmQ0XHU2MjgzXHU2Mjk0XHU2MmQ3XHU2MmQxXHU2MmJiXHU2MmNmXHU2MmZmXHU2MmM2XHU2NGQ0XHU2MmM4XHU2MmRjXHU2MmNjXHU2MmNhXHU2MmMyXHU2MmM3XHU2MjliXHU2MmM5XHU2MzBjXHU2''@;'; put 'put ''MmVlXHU2MmYxXHU2MzI3XHU2MzAyXHU2MzA4XHU2MmVmXHU2MmY1XHU2MzUwXHU2MzNlXHU2MzRkXHU2NDFjXHU2MzRmXHU2Mzk2XHU2MzhlXHU2MzgwXHU2M2FiXHU2Mzc2XHU2M2EzXHU2MzhmXHU2Mzg5XHU2MzlmXHU2M2I1XHU2MzZiXHU2MzY5XHU2M2JlXHU2M2U5XHU2M2MwXHU2M2M2''@;'; put 'put ''XHU2M2UzXHU2M2M5XHU2M2QyXHU2M2Y2XHU2M2M0XHU2NDE2XHU2NDM0XHU2NDA2XHU2NDEzXHU2NDI2XHU2NDM2XHU2NTFkXHU2NDE3XHU2NDI4XHU2NDBmXHU2NDY3XHU2NDZmXHU2NDc2XHU2NDRlXHU2NTJhXHU2NDk1XHU2NDkzXHU2NGE1XHU2NGE5XHU2NDg4XHU2NGJjIl0sWyJkYWEx''@;'; put 'put ''IiwiXHU2NGRhXHU2NGQyXHU2NGM1XHU2NGM3XHU2NGJiXHU2NGQ4XHU2NGMyXHU2NGYxXHU2NGU3XHU4MjA5XHU2NGUwXHU2NGUxXHU2MmFjXHU2NGUzXHU2NGVmXHU2NTJjXHU2NGY2XHU2NGY0XHU2NGYyXHU2NGZhXHU2NTAwXHU2NGZkXHU2NTE4XHU2NTFjXHU2NTA1XHU2NTI0XHU2NTIz''@;'; put 'put ''XHU2NTJiXHU2NTM0XHU2NTM1XHU2NTM3XHU2NTM2XHU2NTM4XHU3NTRiXHU2NTQ4XHU2NTU2XHU2NTU1XHU2NTRkXHU2NTU4XHU2NTVlXHU2NTVkXHU2NTcyXHU2NTc4XHU2NTgyXHU2NTgzXHU4YjhhXHU2NTliXHU2NTlmXHU2NWFiXHU2NWI3XHU2NWMzXHU2NWM2XHU2NWMxXHU2NWM0XHU2''@;'; put 'put ''NWNjXHU2NWQyXHU2NWRiXHU2NWQ5XHU2NWUwXHU2NWUxXHU2NWYxXHU2NzcyXHU2NjBhXHU2NjAzXHU2NWZiXHU2NzczXHU2NjM1XHU2NjM2XHU2NjM0XHU2NjFjXHU2NjRmXHU2NjQ0XHU2NjQ5XHU2NjQxXHU2NjVlXHU2NjVkXHU2NjY0XHU2NjY3XHU2NjY4XHU2NjVmXHU2NjYyXHU2Njcw''@;'; put 'put ''XHU2NjgzXHU2Njg4XHU2NjhlXHU2Njg5XHU2Njg0XHU2Njk4XHU2NjlkXHU2NmMxXHU2NmI5XHU2NmM5XHU2NmJlXHU2NmJjIl0sWyJkYmExIiwiXHU2NmM0XHU2NmI4XHU2NmQ2XHU2NmRhXHU2NmUwXHU2NjNmXHU2NmU2XHU2NmU5XHU2NmYwXHU2NmY1XHU2NmY3XHU2NzBmXHU2NzE2XHU2''@;'; put 'put ''NzFlXHU2NzI2XHU2NzI3XHU5NzM4XHU2NzJlXHU2NzNmXHU2NzM2XHU2NzQxXHU2NzM4XHU2NzM3XHU2NzQ2XHU2NzVlXHU2NzYwXHU2NzU5XHU2NzYzXHU2NzY0XHU2Nzg5XHU2NzcwXHU2N2E5XHU2NzdjXHU2NzZhXHU2NzhjXHU2NzhiXHU2N2E2XHU2N2ExXHU2Nzg1XHU2N2I3XHU2N2Vm''@;'; put 'put ''XHU2N2I0XHU2N2VjXHU2N2IzXHU2N2U5XHU2N2I4XHU2N2U0XHU2N2RlXHU2N2RkXHU2N2UyXHU2N2VlXHU2N2I5XHU2N2NlXHU2N2M2XHU2N2U3XHU2YTljXHU2ODFlXHU2ODQ2XHU2ODI5XHU2ODQwXHU2ODRkXHU2ODMyXHU2ODRlXHU2OGIzXHU2ODJiXHU2ODU5XHU2ODYzXHU2ODc3XHU2''@;'; put 'put ''ODdmXHU2ODlmXHU2ODhmXHU2OGFkXHU2ODk0XHU2ODlkXHU2ODliXHU2ODgzXHU2YWFlXHU2OGI5XHU2ODc0XHU2OGI1XHU2OGEwXHU2OGJhXHU2OTBmXHU2ODhkXHU2ODdlXHU2OTAxXHU2OGNhXHU2OTA4XHU2OGQ4XHU2OTIyXHU2OTI2XHU2OGUxXHU2OTBjXHU2OGNkIl0sWyJkY2ExIiwi''@;'; put 'put ''XHU2OGQ0XHU2OGU3XHU2OGQ1XHU2OTM2XHU2OTEyXHU2OTA0XHU2OGQ3XHU2OGUzXHU2OTI1XHU2OGY5XHU2OGUwXHU2OGVmXHU2OTI4XHU2OTJhXHU2OTFhXHU2OTIzXHU2OTIxXHU2OGM2XHU2OTc5XHU2OTc3XHU2OTVjXHU2OTc4XHU2OTZiXHU2OTU0XHU2OTdlXHU2OTZlXHU2OTM5XHU2''@;'; put 'put ''OTc0XHU2OTNkXHU2OTU5XHU2OTMwXHU2OTYxXHU2OTVlXHU2OTVkXHU2OTgxXHU2OTZhXHU2OWIyXHU2OWFlXHU2OWQwXHU2OWJmXHU2OWMxXHU2OWQzXHU2OWJlXHU2OWNlXHU1YmU4XHU2OWNhXHU2OWRkXHU2OWJiXHU2OWMzXHU2OWE3XHU2YTJlXHU2OTkxXHU2OWEwXHU2OTljXHU2OTk1''@;'; put 'put ''XHU2OWI0XHU2OWRlXHU2OWU4XHU2YTAyXHU2YTFiXHU2OWZmXHU2YjBhXHU2OWY5XHU2OWYyXHU2OWU3XHU2YTA1XHU2OWIxXHU2YTFlXHU2OWVkXHU2YTE0XHU2OWViXHU2YTBhXHU2YTEyXHU2YWMxXHU2YTIzXHU2YTEzXHU2YTQ0XHU2YTBjXHU2YTcyXHU2YTM2XHU2YTc4XHU2YTQ3XHU2''@;'; put 'put ''YTYyXHU2YTU5XHU2YTY2XHU2YTQ4XHU2YTM4XHU2YTIyXHU2YTkwXHU2YThkXHU2YWEwXHU2YTg0XHU2YWEyXHU2YWEzIl0sWyJkZGExIiwiXHU2YTk3XHU4NjE3XHU2YWJiXHU2YWMzXHU2YWMyXHU2YWI4XHU2YWIzXHU2YWFjXHU2YWRlXHU2YWQxXHU2YWRmXHU2YWFhXHU2YWRhXHU2YWVh''@;'; put 'put ''XHU2YWZiXHU2YjA1XHU4NjE2XHU2YWZhXHU2YjEyXHU2YjE2XHU5YjMxXHU2YjFmXHU2YjM4XHU2YjM3XHU3NmRjXHU2YjM5XHU5OGVlXHU2YjQ3XHU2YjQzXHU2YjQ5XHU2YjUwXHU2YjU5XHU2YjU0XHU2YjViXHU2YjVmXHU2YjYxXHU2Yjc4XHU2Yjc5XHU2YjdmXHU2YjgwXHU2Yjg0XHU2''@;'; put 'put ''YjgzXHU2YjhkXHU2Yjk4XHU2Yjk1XHU2YjllXHU2YmE0XHU2YmFhXHU2YmFiXHU2YmFmXHU2YmIyXHU2YmIxXHU2YmIzXHU2YmI3XHU2YmJjXHU2YmM2XHU2YmNiXHU2YmQzXHU2YmRmXHU2YmVjXHU2YmViXHU2YmYzXHU2YmVmXHU5ZWJlXHU2YzA4XHU2YzEzXHU2YzE0XHU2YzFiXHU2YzI0''@;'; put 'put ''XHU2YzIzXHU2YzVlXHU2YzU1XHU2YzYyXHU2YzZhXHU2YzgyXHU2YzhkXHU2YzlhXHU2YzgxXHU2YzliXHU2YzdlXHU2YzY4XHU2YzczXHU2YzkyXHU2YzkwXHU2Y2M0XHU2Y2YxXHU2Y2QzXHU2Y2JkXHU2Y2Q3XHU2Y2M1XHU2Y2RkXHU2Y2FlXHU2Y2IxXHU2Y2JlIl0sWyJkZWExIiwiXHU2''@;'; put 'put ''Y2JhXHU2Y2RiXHU2Y2VmXHU2Y2Q5XHU2Y2VhXHU2ZDFmXHU4ODRkXHU2ZDM2XHU2ZDJiXHU2ZDNkXHU2ZDM4XHU2ZDE5XHU2ZDM1XHU2ZDMzXHU2ZDEyXHU2ZDBjXHU2ZDYzXHU2ZDkzXHU2ZDY0XHU2ZDVhXHU2ZDc5XHU2ZDU5XHU2ZDhlXHU2ZDk1XHU2ZmU0XHU2ZDg1XHU2ZGY5XHU2ZTE1''@;'; put 'put ''XHU2ZTBhXHU2ZGI1XHU2ZGM3XHU2ZGU2XHU2ZGI4XHU2ZGM2XHU2ZGVjXHU2ZGRlXHU2ZGNjXHU2ZGU4XHU2ZGQyXHU2ZGM1XHU2ZGZhXHU2ZGQ5XHU2ZGU0XHU2ZGQ1XHU2ZGVhXHU2ZGVlXHU2ZTJkXHU2ZTZlXHU2ZTJlXHU2ZTE5XHU2ZTcyXHU2ZTVmXHU2ZTNlXHU2ZTIzXHU2ZTZiXHU2''@;'; put 'put ''ZTJiXHU2ZTc2XHU2ZTRkXHU2ZTFmXHU2ZTQzXHU2ZTNhXHU2ZTRlXHU2ZTI0XHU2ZWZmXHU2ZTFkXHU2ZTM4XHU2ZTgyXHU2ZWFhXHU2ZTk4XHU2ZWM5XHU2ZWI3XHU2ZWQzXHU2ZWJkXHU2ZWFmXHU2ZWM0XHU2ZWIyXHU2ZWQ0XHU2ZWQ1XHU2ZThmXHU2ZWE1XHU2ZWMyXHU2ZTlmXHU2ZjQx''@;'; put 'put ''XHU2ZjExXHU3MDRjXHU2ZWVjXHU2ZWY4XHU2ZWZlXHU2ZjNmXHU2ZWYyXHU2ZjMxXHU2ZWVmXHU2ZjMyXHU2ZWNjIl0sWyJkZmExIiwiXHU2ZjNlXHU2ZjEzXHU2ZWY3XHU2Zjg2XHU2ZjdhXHU2Zjc4XHU2ZjgxXHU2ZjgwXHU2ZjZmXHU2ZjViXHU2ZmYzXHU2ZjZkXHU2ZjgyXHU2ZjdjXHU2''@;'; put 'put ''ZjU4XHU2ZjhlXHU2ZjkxXHU2ZmMyXHU2ZjY2XHU2ZmIzXHU2ZmEzXHU2ZmExXHU2ZmE0XHU2ZmI5XHU2ZmM2XHU2ZmFhXHU2ZmRmXHU2ZmQ1XHU2ZmVjXHU2ZmQ0XHU2ZmQ4XHU2ZmYxXHU2ZmVlXHU2ZmRiXHU3MDA5XHU3MDBiXHU2ZmZhXHU3MDExXHU3MDAxXHU3MDBmXHU2ZmZlXHU3MDFi''@;'; put 'put ''XHU3MDFhXHU2Zjc0XHU3MDFkXHU3MDE4XHU3MDFmXHU3MDMwXHU3MDNlXHU3MDMyXHU3MDUxXHU3MDYzXHU3MDk5XHU3MDkyXHU3MGFmXHU3MGYxXHU3MGFjXHU3MGI4XHU3MGIzXHU3MGFlXHU3MGRmXHU3MGNiXHU3MGRkXHU3MGQ5XHU3MTA5XHU3MGZkXHU3MTFjXHU3MTE5XHU3MTY1XHU3''@;'; put 'put ''MTU1XHU3MTg4XHU3MTY2XHU3MTYyXHU3MTRjXHU3MTU2XHU3MTZjXHU3MThmXHU3MWZiXHU3MTg0XHU3MTk1XHU3MWE4XHU3MWFjXHU3MWQ3XHU3MWI5XHU3MWJlXHU3MWQyXHU3MWM5XHU3MWQ0XHU3MWNlXHU3MWUwXHU3MWVjXHU3MWU3XHU3MWY1XHU3MWZjIl0sWyJlMGExIiwiXHU3MWY5''@;'; put 'put ''XHU3MWZmXHU3MjBkXHU3MjEwXHU3MjFiXHU3MjI4XHU3MjJkXHU3MjJjXHU3MjMwXHU3MjMyXHU3MjNiXHU3MjNjXHU3MjNmXHU3MjQwXHU3MjQ2XHU3MjRiXHU3MjU4XHU3Mjc0XHU3MjdlXHU3MjgyXHU3MjgxXHU3Mjg3XHU3MjkyXHU3Mjk2XHU3MmEyXHU3MmE3XHU3MmI5XHU3MmIyXHU3''@;'; put 'put ''MmMzXHU3MmM2XHU3MmM0XHU3MmNlXHU3MmQyXHU3MmUyXHU3MmUwXHU3MmUxXHU3MmY5XHU3MmY3XHU1MDBmXHU3MzE3XHU3MzBhXHU3MzFjXHU3MzE2XHU3MzFkXHU3MzM0XHU3MzJmXHU3MzI5XHU3MzI1XHU3MzNlXHU3MzRlXHU3MzRmXHU5ZWQ4XHU3MzU3XHU3MzZhXHU3MzY4XHU3Mzcw''@;'; put 'put ''XHU3Mzc4XHU3Mzc1XHU3MzdiXHU3MzdhXHU3M2M4XHU3M2IzXHU3M2NlXHU3M2JiXHU3M2MwXHU3M2U1XHU3M2VlXHU3M2RlXHU3NGEyXHU3NDA1XHU3NDZmXHU3NDI1XHU3M2Y4XHU3NDMyXHU3NDNhXHU3NDU1XHU3NDNmXHU3NDVmXHU3NDU5XHU3NDQxXHU3NDVjXHU3NDY5XHU3NDcwXHU3''@;'; put 'put ''NDYzXHU3NDZhXHU3NDc2XHU3NDdlXHU3NDhiXHU3NDllXHU3NGE3XHU3NGNhXHU3NGNmXHU3NGQ0XHU3M2YxIl0sWyJlMWExIiwiXHU3NGUwXHU3NGUzXHU3NGU3XHU3NGU5XHU3NGVlXHU3NGYyXHU3NGYwXHU3NGYxXHU3NGY4XHU3NGY3XHU3NTA0XHU3NTAzXHU3NTA1XHU3NTBjXHU3NTBl''@;'; put 'put ''XHU3NTBkXHU3NTE1XHU3NTEzXHU3NTFlXHU3NTI2XHU3NTJjXHU3NTNjXHU3NTQ0XHU3NTRkXHU3NTRhXHU3NTQ5XHU3NTViXHU3NTQ2XHU3NTVhXHU3NTY5XHU3NTY0XHU3NTY3XHU3NTZiXHU3NTZkXHU3NTc4XHU3NTc2XHU3NTg2XHU3NTg3XHU3NTc0XHU3NThhXHU3NTg5XHU3NTgyXHU3''@;'; put 'put ''NTk0XHU3NTlhXHU3NTlkXHU3NWE1XHU3NWEzXHU3NWMyXHU3NWIzXHU3NWMzXHU3NWI1XHU3NWJkXHU3NWI4XHU3NWJjXHU3NWIxXHU3NWNkXHU3NWNhXHU3NWQyXHU3NWQ5XHU3NWUzXHU3NWRlXHU3NWZlXHU3NWZmXHU3NWZjXHU3NjAxXHU3NWYwXHU3NWZhXHU3NWYyXHU3NWYzXHU3NjBi''@;'; put 'put ''XHU3NjBkXHU3NjA5XHU3NjFmXHU3NjI3XHU3NjIwXHU3NjIxXHU3NjIyXHU3NjI0XHU3NjM0XHU3NjMwXHU3NjNiXHU3NjQ3XHU3NjQ4XHU3NjQ2XHU3NjVjXHU3NjU4XHU3NjYxXHU3NjYyXHU3NjY4XHU3NjY5XHU3NjZhXHU3NjY3XHU3NjZjXHU3NjcwIl0sWyJlMmExIiwiXHU3NjcyXHU3''@;'; put 'put ''Njc2XHU3Njc4XHU3NjdjXHU3NjgwXHU3NjgzXHU3Njg4XHU3NjhiXHU3NjhlXHU3Njk2XHU3NjkzXHU3Njk5XHU3NjlhXHU3NmIwXHU3NmI0XHU3NmI4XHU3NmI5XHU3NmJhXHU3NmMyXHU3NmNkXHU3NmQ2XHU3NmQyXHU3NmRlXHU3NmUxXHU3NmU1XHU3NmU3XHU3NmVhXHU4NjJmXHU3NmZi''@;'; put 'put ''XHU3NzA4XHU3NzA3XHU3NzA0XHU3NzI5XHU3NzI0XHU3NzFlXHU3NzI1XHU3NzI2XHU3NzFiXHU3NzM3XHU3NzM4XHU3NzQ3XHU3NzVhXHU3NzY4XHU3NzZiXHU3NzViXHU3NzY1XHU3NzdmXHU3NzdlXHU3Nzc5XHU3NzhlXHU3NzhiXHU3NzkxXHU3N2EwXHU3NzllXHU3N2IwXHU3N2I2XHU3''@;'; put 'put ''N2I5XHU3N2JmXHU3N2JjXHU3N2JkXHU3N2JiXHU3N2M3XHU3N2NkXHU3N2Q3XHU3N2RhXHU3N2RjXHU3N2UzXHU3N2VlXHU3N2ZjXHU3ODBjXHU3ODEyXHU3OTI2XHU3ODIwXHU3OTJhXHU3ODQ1XHU3ODhlXHU3ODc0XHU3ODg2XHU3ODdjXHU3ODlhXHU3ODhjXHU3OGEzXHU3OGI1XHU3OGFh''@;'; put 'put ''XHU3OGFmXHU3OGQxXHU3OGM2XHU3OGNiXHU3OGQ0XHU3OGJlXHU3OGJjXHU3OGM1XHU3OGNhXHU3OGVjIl0sWyJlM2ExIiwiXHU3OGU3XHU3OGRhXHU3OGZkXHU3OGY0XHU3OTA3XHU3OTEyXHU3OTExXHU3OTE5XHU3OTJjXHU3OTJiXHU3OTQwXHU3OTYwXHU3OTU3XHU3OTVmXHU3OTVhXHU3''@;'; put 'put ''OTU1XHU3OTUzXHU3OTdhXHU3OTdmXHU3OThhXHU3OTlkXHU3OWE3XHU5ZjRiXHU3OWFhXHU3OWFlXHU3OWIzXHU3OWI5XHU3OWJhXHU3OWM5XHU3OWQ1XHU3OWU3XHU3OWVjXHU3OWUxXHU3OWUzXHU3YTA4XHU3YTBkXHU3YTE4XHU3YTE5XHU3YTIwXHU3YTFmXHU3OTgwXHU3YTMxXHU3YTNi''@;'; put 'put ''XHU3YTNlXHU3YTM3XHU3YTQzXHU3YTU3XHU3YTQ5XHU3YTYxXHU3YTYyXHU3YTY5XHU5ZjlkXHU3YTcwXHU3YTc5XHU3YTdkXHU3YTg4XHU3YTk3XHU3YTk1XHU3YTk4XHU3YTk2XHU3YWE5XHU3YWM4XHU3YWIwXHU3YWI2XHU3YWM1XHU3YWM0XHU3YWJmXHU5MDgzXHU3YWM3XHU3YWNhXHU3''@;'; put 'put ''YWNkXHU3YWNmXHU3YWQ1XHU3YWQzXHU3YWQ5XHU3YWRhXHU3YWRkXHU3YWUxXHU3YWUyXHU3YWU2XHU3YWVkXHU3YWYwXHU3YjAyXHU3YjBmXHU3YjBhXHU3YjA2XHU3YjMzXHU3YjE4XHU3YjE5XHU3YjFlXHU3YjM1XHU3YjI4XHU3YjM2XHU3YjUwIl0sWyJlNGExIiwiXHU3YjdhXHU3YjA0''@;'; put 'put ''XHU3YjRkXHU3YjBiXHU3YjRjXHU3YjQ1XHU3Yjc1XHU3YjY1XHU3Yjc0XHU3YjY3XHU3YjcwXHU3YjcxXHU3YjZjXHU3YjZlXHU3YjlkXHU3Yjk4XHU3YjlmXHU3YjhkXHU3YjljXHU3YjlhXHU3YjhiXHU3YjkyXHU3YjhmXHU3YjVkXHU3Yjk5XHU3YmNiXHU3YmMxXHU3YmNjXHU3YmNmXHU3''@;'; put 'put ''YmI0XHU3YmM2XHU3YmRkXHU3YmU5XHU3YzExXHU3YzE0XHU3YmU2XHU3YmU1XHU3YzYwXHU3YzAwXHU3YzA3XHU3YzEzXHU3YmYzXHU3YmY3XHU3YzE3XHU3YzBkXHU3YmY2XHU3YzIzXHU3YzI3XHU3YzJhXHU3YzFmXHU3YzM3XHU3YzJiXHU3YzNkXHU3YzRjXHU3YzQzXHU3YzU0XHU3YzRm''@;'; put 'put ''XHU3YzQwXHU3YzUwXHU3YzU4XHU3YzVmXHU3YzY0XHU3YzU2XHU3YzY1XHU3YzZjXHU3Yzc1XHU3YzgzXHU3YzkwXHU3Y2E0XHU3Y2FkXHU3Y2EyXHU3Y2FiXHU3Y2ExXHU3Y2E4XHU3Y2IzXHU3Y2IyXHU3Y2IxXHU3Y2FlXHU3Y2I5XHU3Y2JkXHU3Y2MwXHU3Y2M1XHU3Y2MyXHU3Y2Q4XHU3''@;'; put 'put ''Y2QyXHU3Y2RjXHU3Y2UyXHU5YjNiXHU3Y2VmXHU3Y2YyXHU3Y2Y0XHU3Y2Y2XHU3Y2ZhXHU3ZDA2Il0sWyJlNWExIiwiXHU3ZDAyXHU3ZDFjXHU3ZDE1XHU3ZDBhXHU3ZDQ1XHU3ZDRiXHU3ZDJlXHU3ZDMyXHU3ZDNmXHU3ZDM1XHU3ZDQ2XHU3ZDczXHU3ZDU2XHU3ZDRlXHU3ZDcyXHU3ZDY4''@;'; put 'put ''XHU3ZDZlXHU3ZDRmXHU3ZDYzXHU3ZDkzXHU3ZDg5XHU3ZDViXHU3ZDhmXHU3ZDdkXHU3ZDliXHU3ZGJhXHU3ZGFlXHU3ZGEzXHU3ZGI1XHU3ZGM3XHU3ZGJkXHU3ZGFiXHU3ZTNkXHU3ZGEyXHU3ZGFmXHU3ZGRjXHU3ZGI4XHU3ZDlmXHU3ZGIwXHU3ZGQ4XHU3ZGRkXHU3ZGU0XHU3ZGRlXHU3''@;'; put 'put ''ZGZiXHU3ZGYyXHU3ZGUxXHU3ZTA1XHU3ZTBhXHU3ZTIzXHU3ZTIxXHU3ZTEyXHU3ZTMxXHU3ZTFmXHU3ZTA5XHU3ZTBiXHU3ZTIyXHU3ZTQ2XHU3ZTY2XHU3ZTNiXHU3ZTM1XHU3ZTM5XHU3ZTQzXHU3ZTM3XHU3ZTMyXHU3ZTNhXHU3ZTY3XHU3ZTVkXHU3ZTU2XHU3ZTVlXHU3ZTU5XHU3ZTVh''@;'; put 'put ''XHU3ZTc5XHU3ZTZhXHU3ZTY5XHU3ZTdjXHU3ZTdiXHU3ZTgzXHU3ZGQ1XHU3ZTdkXHU4ZmFlXHU3ZTdmXHU3ZTg4XHU3ZTg5XHU3ZThjXHU3ZTkyXHU3ZTkwXHU3ZTkzXHU3ZTk0XHU3ZTk2XHU3ZThlXHU3ZTliXHU3ZTljXHU3ZjM4XHU3ZjNhIl0sWyJlNmExIiwiXHU3ZjQ1XHU3ZjRjXHU3''@;'; put 'put ''ZjRkXHU3ZjRlXHU3ZjUwXHU3ZjUxXHU3ZjU1XHU3ZjU0XHU3ZjU4XHU3ZjVmXHU3ZjYwXHU3ZjY4XHU3ZjY5XHU3ZjY3XHU3Zjc4XHU3ZjgyXHU3Zjg2XHU3ZjgzXHU3Zjg4XHU3Zjg3XHU3ZjhjXHU3Zjk0XHU3ZjllXHU3ZjlkXHU3ZjlhXHU3ZmEzXHU3ZmFmXHU3ZmIyXHU3ZmI5XHU3ZmFl''@;'; put 'put ''XHU3ZmI2XHU3ZmI4XHU4YjcxXHU3ZmM1XHU3ZmM2XHU3ZmNhXHU3ZmQ1XHU3ZmQ0XHU3ZmUxXHU3ZmU2XHU3ZmU5XHU3ZmYzXHU3ZmY5XHU5OGRjXHU4MDA2XHU4MDA0XHU4MDBiXHU4MDEyXHU4MDE4XHU4MDE5XHU4MDFjXHU4MDIxXHU4MDI4XHU4MDNmXHU4MDNiXHU4MDRhXHU4MDQ2XHU4''@;'; put 'put ''MDUyXHU4MDU4XHU4MDVhXHU4MDVmXHU4MDYyXHU4MDY4XHU4MDczXHU4MDcyXHU4MDcwXHU4MDc2XHU4MDc5XHU4MDdkXHU4MDdmXHU4MDg0XHU4MDg2XHU4MDg1XHU4MDliXHU4MDkzXHU4MDlhXHU4MGFkXHU1MTkwXHU4MGFjXHU4MGRiXHU4MGU1XHU4MGQ5XHU4MGRkXHU4MGM0XHU4MGRh''@;'; put 'put ''XHU4MGQ2XHU4MTA5XHU4MGVmXHU4MGYxXHU4MTFiXHU4MTI5XHU4MTIzXHU4MTJmXHU4MTRiIl0sWyJlN2ExIiwiXHU5NjhiXHU4MTQ2XHU4MTNlXHU4MTUzXHU4MTUxXHU4MGZjXHU4MTcxXHU4MTZlXHU4MTY1XHU4MTY2XHU4MTc0XHU4MTgzXHU4MTg4XHU4MThhXHU4MTgwXHU4MTgyXHU4''@;'; put 'put ''MWEwXHU4MTk1XHU4MWE0XHU4MWEzXHU4MTVmXHU4MTkzXHU4MWE5XHU4MWIwXHU4MWI1XHU4MWJlXHU4MWI4XHU4MWJkXHU4MWMwXHU4MWMyXHU4MWJhXHU4MWM5XHU4MWNkXHU4MWQxXHU4MWQ5XHU4MWQ4XHU4MWM4XHU4MWRhXHU4MWRmXHU4MWUwXHU4MWU3XHU4MWZhXHU4MWZiXHU4MWZl''@;'; put 'put ''XHU4MjAxXHU4MjAyXHU4MjA1XHU4MjA3XHU4MjBhXHU4MjBkXHU4MjEwXHU4MjE2XHU4MjI5XHU4MjJiXHU4MjM4XHU4MjMzXHU4MjQwXHU4MjU5XHU4MjU4XHU4MjVkXHU4MjVhXHU4MjVmXHU4MjY0XHU4MjYyXHU4MjY4XHU4MjZhXHU4MjZiXHU4MjJlXHU4MjcxXHU4Mjc3XHU4Mjc4XHU4''@;'; put 'put ''MjdlXHU4MjhkXHU4MjkyXHU4MmFiXHU4MjlmXHU4MmJiXHU4MmFjXHU4MmUxXHU4MmUzXHU4MmRmXHU4MmQyXHU4MmY0XHU4MmYzXHU4MmZhXHU4MzkzXHU4MzAzXHU4MmZiXHU4MmY5XHU4MmRlXHU4MzA2XHU4MmRjXHU4MzA5XHU4MmQ5Il0sWyJlOGExIiwiXHU4MzM1XHU4MzM0XHU4MzE2''@;'; put 'put ''XHU4MzMyXHU4MzMxXHU4MzQwXHU4MzM5XHU4MzUwXHU4MzQ1XHU4MzJmXHU4MzJiXHU4MzE3XHU4MzE4XHU4Mzg1XHU4MzlhXHU4M2FhXHU4MzlmXHU4M2EyXHU4Mzk2XHU4MzIzXHU4MzhlXHU4Mzg3XHU4MzhhXHU4MzdjXHU4M2I1XHU4MzczXHU4Mzc1XHU4M2EwXHU4Mzg5XHU4M2E4XHU4''@;'; put 'put ''M2Y0XHU4NDEzXHU4M2ViXHU4M2NlXHU4M2ZkXHU4NDAzXHU4M2Q4XHU4NDBiXHU4M2MxXHU4M2Y3XHU4NDA3XHU4M2UwXHU4M2YyXHU4NDBkXHU4NDIyXHU4NDIwXHU4M2JkXHU4NDM4XHU4NTA2XHU4M2ZiXHU4NDZkXHU4NDJhXHU4NDNjXHU4NTVhXHU4NDg0XHU4NDc3XHU4NDZiXHU4NGFk''@;'; put 'put ''XHU4NDZlXHU4NDgyXHU4NDY5XHU4NDQ2XHU4NDJjXHU4NDZmXHU4NDc5XHU4NDM1XHU4NGNhXHU4NDYyXHU4NGI5XHU4NGJmXHU4NDlmXHU4NGQ5XHU4NGNkXHU4NGJiXHU4NGRhXHU4NGQwXHU4NGMxXHU4NGM2XHU4NGQ2XHU4NGExXHU4NTIxXHU4NGZmXHU4NGY0XHU4NTE3XHU4NTE4XHU4''@;'; put 'put ''NTJjXHU4NTFmXHU4NTE1XHU4NTE0XHU4NGZjXHU4NTQwXHU4NTYzXHU4NTU4XHU4NTQ4Il0sWyJlOWExIiwiXHU4NTQxXHU4NjAyXHU4NTRiXHU4NTU1XHU4NTgwXHU4NWE0XHU4NTg4XHU4NTkxXHU4NThhXHU4NWE4XHU4NTZkXHU4NTk0XHU4NTliXHU4NWVhXHU4NTg3XHU4NTljXHU4NTc3''@;'; put 'put ''XHU4NTdlXHU4NTkwXHU4NWM5XHU4NWJhXHU4NWNmXHU4NWI5XHU4NWQwXHU4NWQ1XHU4NWRkXHU4NWU1XHU4NWRjXHU4NWY5XHU4NjBhXHU4NjEzXHU4NjBiXHU4NWZlXHU4NWZhXHU4NjA2XHU4NjIyXHU4NjFhXHU4NjMwXHU4NjNmXHU4NjRkXHU0ZTU1XHU4NjU0XHU4NjVmXHU4NjY3XHU4''@;'; put 'put ''NjcxXHU4NjkzXHU4NmEzXHU4NmE5XHU4NmFhXHU4NjhiXHU4NjhjXHU4NmI2XHU4NmFmXHU4NmM0XHU4NmM2XHU4NmIwXHU4NmM5XHU4ODIzXHU4NmFiXHU4NmQ0XHU4NmRlXHU4NmU5XHU4NmVjXHU4NmRmXHU4NmRiXHU4NmVmXHU4NzEyXHU4NzA2XHU4NzA4XHU4NzAwXHU4NzAzXHU4NmZi''@;'; put 'put ''XHU4NzExXHU4NzA5XHU4NzBkXHU4NmY5XHU4NzBhXHU4NzM0XHU4NzNmXHU4NzM3XHU4NzNiXHU4NzI1XHU4NzI5XHU4NzFhXHU4NzYwXHU4NzVmXHU4Nzc4XHU4NzRjXHU4NzRlXHU4Nzc0XHU4NzU3XHU4NzY4XHU4NzZlXHU4NzU5Il0sWyJlYWExIiwiXHU4NzUzXHU4NzYzXHU4NzZhXHU4''@;'; put 'put ''ODA1XHU4N2EyXHU4NzlmXHU4NzgyXHU4N2FmXHU4N2NiXHU4N2JkXHU4N2MwXHU4N2QwXHU5NmQ2XHU4N2FiXHU4N2M0XHU4N2IzXHU4N2M3XHU4N2M2XHU4N2JiXHU4N2VmXHU4N2YyXHU4N2UwXHU4ODBmXHU4ODBkXHU4N2ZlXHU4N2Y2XHU4N2Y3XHU4ODBlXHU4N2QyXHU4ODExXHU4ODE2''@;'; put 'put ''XHU4ODE1XHU4ODIyXHU4ODIxXHU4ODMxXHU4ODM2XHU4ODM5XHU4ODI3XHU4ODNiXHU4ODQ0XHU4ODQyXHU4ODUyXHU4ODU5XHU4ODVlXHU4ODYyXHU4ODZiXHU4ODgxXHU4ODdlXHU4ODllXHU4ODc1XHU4ODdkXHU4OGI1XHU4ODcyXHU4ODgyXHU4ODk3XHU4ODkyXHU4OGFlXHU4ODk5XHU4''@;'; put 'put ''OGEyXHU4ODhkXHU4OGE0XHU4OGIwXHU4OGJmXHU4OGIxXHU4OGMzXHU4OGM0XHU4OGQ0XHU4OGQ4XHU4OGQ5XHU4OGRkXHU4OGY5XHU4OTAyXHU4OGZjXHU4OGY0XHU4OGU4XHU4OGYyXHU4OTA0XHU4OTBjXHU4OTBhXHU4OTEzXHU4OTQzXHU4OTFlXHU4OTI1XHU4OTJhXHU4OTJiXHU4OTQx''@;'; put 'put ''XHU4OTQ0XHU4OTNiXHU4OTM2XHU4OTM4XHU4OTRjXHU4OTFkXHU4OTYwXHU4OTVlIl0sWyJlYmExIiwiXHU4OTY2XHU4OTY0XHU4OTZkXHU4OTZhXHU4OTZmXHU4OTc0XHU4OTc3XHU4OTdlXHU4OTgzXHU4OTg4XHU4OThhXHU4OTkzXHU4OTk4XHU4OWExXHU4OWE5XHU4OWE2XHU4OWFjXHU4''@;'; put 'put ''OWFmXHU4OWIyXHU4OWJhXHU4OWJkXHU4OWJmXHU4OWMwXHU4OWRhXHU4OWRjXHU4OWRkXHU4OWU3XHU4OWY0XHU4OWY4XHU4YTAzXHU4YTE2XHU4YTEwXHU4YTBjXHU4YTFiXHU4YTFkXHU4YTI1XHU4YTM2XHU4YTQxXHU4YTViXHU4YTUyXHU4YTQ2XHU4YTQ4XHU4YTdjXHU4YTZkXHU4YTZj''@;'; put 'put ''XHU4YTYyXHU4YTg1XHU4YTgyXHU4YTg0XHU4YWE4XHU4YWExXHU4YTkxXHU4YWE1XHU4YWE2XHU4YTlhXHU4YWEzXHU4YWM0XHU4YWNkXHU4YWMyXHU4YWRhXHU4YWViXHU4YWYzXHU4YWU3XHU4YWU0XHU4YWYxXHU4YjE0XHU4YWUwXHU4YWUyXHU4YWY3XHU4YWRlXHU4YWRiXHU4YjBjXHU4''@;'; put 'put ''YjA3XHU4YjFhXHU4YWUxXHU4YjE2XHU4YjEwXHU4YjE3XHU4YjIwXHU4YjMzXHU5N2FiXHU4YjI2XHU4YjJiXHU4YjNlXHU4YjI4XHU4YjQxXHU4YjRjXHU4YjRmXHU4YjRlXHU4YjQ5XHU4YjU2XHU4YjViXHU4YjVhXHU4YjZiIl0sWyJlY2ExIiwiXHU4YjVmXHU4YjZjXHU4YjZmXHU4Yjc0''@;'; put 'put ''XHU4YjdkXHU4YjgwXHU4YjhjXHU4YjhlXHU4YjkyXHU4YjkzXHU4Yjk2XHU4Yjk5XHU4YjlhXHU4YzNhXHU4YzQxXHU4YzNmXHU4YzQ4XHU4YzRjXHU4YzRlXHU4YzUwXHU4YzU1XHU4YzYyXHU4YzZjXHU4Yzc4XHU4YzdhXHU4YzgyXHU4Yzg5XHU4Yzg1XHU4YzhhXHU4YzhkXHU4YzhlXHU4''@;'; put 'put ''Yzk0XHU4YzdjXHU4Yzk4XHU2MjFkXHU4Y2FkXHU4Y2FhXHU4Y2JkXHU4Y2IyXHU4Y2IzXHU4Y2FlXHU4Y2I2XHU4Y2M4XHU4Y2MxXHU4Y2U0XHU4Y2UzXHU4Y2RhXHU4Y2ZkXHU4Y2ZhXHU4Y2ZiXHU4ZDA0XHU4ZDA1XHU4ZDBhXHU4ZDA3XHU4ZDBmXHU4ZDBkXHU4ZDEwXHU5ZjRlXHU4ZDEz''@;'; put 'put ''XHU4Y2NkXHU4ZDE0XHU4ZDE2XHU4ZDY3XHU4ZDZkXHU4ZDcxXHU4ZDczXHU4ZDgxXHU4ZDk5XHU4ZGMyXHU4ZGJlXHU4ZGJhXHU4ZGNmXHU4ZGRhXHU4ZGQ2XHU4ZGNjXHU4ZGRiXHU4ZGNiXHU4ZGVhXHU4ZGViXHU4ZGRmXHU4ZGUzXHU4ZGZjXHU4ZTA4XHU4ZTA5XHU4ZGZmXHU4ZTFkXHU4''@;'; put 'put ''ZTFlXHU4ZTEwXHU4ZTFmXHU4ZTQyXHU4ZTM1XHU4ZTMwXHU4ZTM0XHU4ZTRhIl0sWyJlZGExIiwiXHU4ZTQ3XHU4ZTQ5XHU4ZTRjXHU4ZTUwXHU4ZTQ4XHU4ZTU5XHU4ZTY0XHU4ZTYwXHU4ZTJhXHU4ZTYzXHU4ZTU1XHU4ZTc2XHU4ZTcyXHU4ZTdjXHU4ZTgxXHU4ZTg3XHU4ZTg1XHU4ZTg0''@;'; put 'put ''XHU4ZThiXHU4ZThhXHU4ZTkzXHU4ZTkxXHU4ZTk0XHU4ZTk5XHU4ZWFhXHU4ZWExXHU4ZWFjXHU4ZWIwXHU4ZWM2XHU4ZWIxXHU4ZWJlXHU4ZWM1XHU4ZWM4XHU4ZWNiXHU4ZWRiXHU4ZWUzXHU4ZWZjXHU4ZWZiXHU4ZWViXHU4ZWZlXHU4ZjBhXHU4ZjA1XHU4ZjE1XHU4ZjEyXHU4ZjE5XHU4''@;'; put 'put ''ZjEzXHU4ZjFjXHU4ZjFmXHU4ZjFiXHU4ZjBjXHU4ZjI2XHU4ZjMzXHU4ZjNiXHU4ZjM5XHU4ZjQ1XHU4ZjQyXHU4ZjNlXHU4ZjRjXHU4ZjQ5XHU4ZjQ2XHU4ZjRlXHU4ZjU3XHU4ZjVjXHU4ZjYyXHU4ZjYzXHU4ZjY0XHU4ZjljXHU4ZjlmXHU4ZmEzXHU4ZmFkXHU4ZmFmXHU4ZmI3XHU4ZmRh''@;'; put 'put ''XHU4ZmU1XHU4ZmUyXHU4ZmVhXHU4ZmVmXHU5MDg3XHU4ZmY0XHU5MDA1XHU4ZmY5XHU4ZmZhXHU5MDExXHU5MDE1XHU5MDIxXHU5MDBkXHU5MDFlXHU5MDE2XHU5MDBiXHU5MDI3XHU5MDM2XHU5MDM1XHU5MDM5XHU4ZmY4Il0sWyJlZWExIiwiXHU5MDRmXHU5MDUwXHU5MDUxXHU5MDUyXHU5''@;'; put 'put ''MDBlXHU5MDQ5XHU5MDNlXHU5MDU2XHU5MDU4XHU5MDVlXHU5MDY4XHU5MDZmXHU5MDc2XHU5NmE4XHU5MDcyXHU5MDgyXHU5MDdkXHU5MDgxXHU5MDgwXHU5MDhhXHU5MDg5XHU5MDhmXHU5MGE4XHU5MGFmXHU5MGIxXHU5MGI1XHU5MGUyXHU5MGU0XHU2MjQ4XHU5MGRiXHU5MTAyXHU5MTEy''@;'; put 'put ''XHU5MTE5XHU5MTMyXHU5MTMwXHU5MTRhXHU5MTU2XHU5MTU4XHU5MTYzXHU5MTY1XHU5MTY5XHU5MTczXHU5MTcyXHU5MThiXHU5MTg5XHU5MTgyXHU5MWEyXHU5MWFiXHU5MWFmXHU5MWFhXHU5MWI1XHU5MWI0XHU5MWJhXHU5MWMwXHU5MWMxXHU5MWM5XHU5MWNiXHU5MWQwXHU5MWQ2XHU5''@;'; put 'put ''MWRmXHU5MWUxXHU5MWRiXHU5MWZjXHU5MWY1XHU5MWY2XHU5MjFlXHU5MWZmXHU5MjE0XHU5MjJjXHU5MjE1XHU5MjExXHU5MjVlXHU5MjU3XHU5MjQ1XHU5MjQ5XHU5MjY0XHU5MjQ4XHU5Mjk1XHU5MjNmXHU5MjRiXHU5MjUwXHU5MjljXHU5Mjk2XHU5MjkzXHU5MjliXHU5MjVhXHU5MmNm''@;'; put 'put ''XHU5MmI5XHU5MmI3XHU5MmU5XHU5MzBmXHU5MmZhXHU5MzQ0XHU5MzJlIl0sWyJlZmExIiwiXHU5MzE5XHU5MzIyXHU5MzFhXHU5MzIzXHU5MzNhXHU5MzM1XHU5MzNiXHU5MzVjXHU5MzYwXHU5MzdjXHU5MzZlXHU5MzU2XHU5M2IwXHU5M2FjXHU5M2FkXHU5Mzk0XHU5M2I5XHU5M2Q2XHU5''@;'; put 'put ''M2Q3XHU5M2U4XHU5M2U1XHU5M2Q4XHU5M2MzXHU5M2RkXHU5M2QwXHU5M2M4XHU5M2U0XHU5NDFhXHU5NDE0XHU5NDEzXHU5NDAzXHU5NDA3XHU5NDEwXHU5NDM2XHU5NDJiXHU5NDM1XHU5NDIxXHU5NDNhXHU5NDQxXHU5NDUyXHU5NDQ0XHU5NDViXHU5NDYwXHU5NDYyXHU5NDVlXHU5NDZh''@;'; put 'put ''XHU5MjI5XHU5NDcwXHU5NDc1XHU5NDc3XHU5NDdkXHU5NDVhXHU5NDdjXHU5NDdlXHU5NDgxXHU5NDdmXHU5NTgyXHU5NTg3XHU5NThhXHU5NTk0XHU5NTk2XHU5NTk4XHU5NTk5XHU5NWEwXHU5NWE4XHU5NWE3XHU5NWFkXHU5NWJjXHU5NWJiXHU5NWI5XHU5NWJlXHU5NWNhXHU2ZmY2XHU5''@;'; put 'put ''NWMzXHU5NWNkXHU5NWNjXHU5NWQ1XHU5NWQ0XHU5NWQ2XHU5NWRjXHU5NWUxXHU5NWU1XHU5NWUyXHU5NjIxXHU5NjI4XHU5NjJlXHU5NjJmXHU5NjQyXHU5NjRjXHU5NjRmXHU5NjRiXHU5Njc3XHU5NjVjXHU5NjVlIl0sWyJmMGExIiwiXHU5NjVkXHU5NjVmXHU5NjY2XHU5NjcyXHU5NjZj''@;'; put 'put ''XHU5NjhkXHU5Njk4XHU5Njk1XHU5Njk3XHU5NmFhXHU5NmE3XHU5NmIxXHU5NmIyXHU5NmIwXHU5NmI0XHU5NmI2XHU5NmI4XHU5NmI5XHU5NmNlXHU5NmNiXHU5NmM5XHU5NmNkXHU4OTRkXHU5NmRjXHU5NzBkXHU5NmQ1XHU5NmY5XHU5NzA0XHU5NzA2XHU5NzA4XHU5NzEzXHU5NzBlXHU5''@;'; put 'put ''NzExXHU5NzBmXHU5NzE2XHU5NzE5XHU5NzI0XHU5NzJhXHU5NzMwXHU5NzM5XHU5NzNkXHU5NzNlXHU5NzQ0XHU5NzQ2XHU5NzQ4XHU5NzQyXHU5NzQ5XHU5NzVjXHU5NzYwXHU5NzY0XHU5NzY2XHU5NzY4XHU1MmQyXHU5NzZiXHU5NzcxXHU5Nzc5XHU5Nzg1XHU5NzdjXHU5NzgxXHU5Nzdh''@;'; put 'put ''XHU5Nzg2XHU5NzhiXHU5NzhmXHU5NzkwXHU5NzljXHU5N2E4XHU5N2E2XHU5N2EzXHU5N2IzXHU5N2I0XHU5N2MzXHU5N2M2XHU5N2M4XHU5N2NiXHU5N2RjXHU5N2VkXHU5ZjRmXHU5N2YyXHU3YWRmXHU5N2Y2XHU5N2Y1XHU5ODBmXHU5ODBjXHU5ODM4XHU5ODI0XHU5ODIxXHU5ODM3XHU5''@;'; put 'put ''ODNkXHU5ODQ2XHU5ODRmXHU5ODRiXHU5ODZiXHU5ODZmXHU5ODcwIl0sWyJmMWExIiwiXHU5ODcxXHU5ODc0XHU5ODczXHU5OGFhXHU5OGFmXHU5OGIxXHU5OGI2XHU5OGM0XHU5OGMzXHU5OGM2XHU5OGU5XHU5OGViXHU5OTAzXHU5OTA5XHU5OTEyXHU5OTE0XHU5OTE4XHU5OTIxXHU5OTFk''@;'; put 'put ''XHU5OTFlXHU5OTI0XHU5OTIwXHU5OTJjXHU5OTJlXHU5OTNkXHU5OTNlXHU5OTQyXHU5OTQ5XHU5OTQ1XHU5OTUwXHU5OTRiXHU5OTUxXHU5OTUyXHU5OTRjXHU5OTU1XHU5OTk3XHU5OTk4XHU5OWE1XHU5OWFkXHU5OWFlXHU5OWJjXHU5OWRmXHU5OWRiXHU5OWRkXHU5OWQ4XHU5OWQxXHU5''@;'; put 'put ''OWVkXHU5OWVlXHU5OWYxXHU5OWYyXHU5OWZiXHU5OWY4XHU5YTAxXHU5YTBmXHU5YTA1XHU5OWUyXHU5YTE5XHU5YTJiXHU5YTM3XHU5YTQ1XHU5YTQyXHU5YTQwXHU5YTQzXHU5YTNlXHU5YTU1XHU5YTRkXHU5YTViXHU5YTU3XHU5YTVmXHU5YTYyXHU5YTY1XHU5YTY0XHU5YTY5XHU5YTZi''@;'; put 'put ''XHU5YTZhXHU5YWFkXHU5YWIwXHU5YWJjXHU5YWMwXHU5YWNmXHU5YWQxXHU5YWQzXHU5YWQ0XHU5YWRlXHU5YWRmXHU5YWUyXHU5YWUzXHU5YWU2XHU5YWVmXHU5YWViXHU5YWVlXHU5YWY0XHU5YWYxXHU5YWY3Il0sWyJmMmExIiwiXHU5YWZiXHU5YjA2XHU5YjE4XHU5YjFhXHU5YjFmXHU5''@;'; put 'put ''YjIyXHU5YjIzXHU5YjI1XHU5YjI3XHU5YjI4XHU5YjI5XHU5YjJhXHU5YjJlXHU5YjJmXHU5YjMyXHU5YjQ0XHU5YjQzXHU5YjRmXHU5YjRkXHU5YjRlXHU5YjUxXHU5YjU4XHU5Yjc0XHU5YjkzXHU5YjgzXHU5YjkxXHU5Yjk2XHU5Yjk3XHU5YjlmXHU5YmEwXHU5YmE4XHU5YmI0XHU5YmMw''@;'; put 'put ''XHU5YmNhXHU5YmI5XHU5YmM2XHU5YmNmXHU5YmQxXHU5YmQyXHU5YmUzXHU5YmUyXHU5YmU0XHU5YmQ0XHU5YmUxXHU5YzNhXHU5YmYyXHU5YmYxXHU5YmYwXHU5YzE1XHU5YzE0XHU5YzA5XHU5YzEzXHU5YzBjXHU5YzA2XHU5YzA4XHU5YzEyXHU5YzBhXHU5YzA0XHU5YzJlXHU5YzFiXHU5''@;'; put 'put ''YzI1XHU5YzI0XHU5YzIxXHU5YzMwXHU5YzQ3XHU5YzMyXHU5YzQ2XHU5YzNlXHU5YzVhXHU5YzYwXHU5YzY3XHU5Yzc2XHU5Yzc4XHU5Y2U3XHU5Y2VjXHU5Y2YwXHU5ZDA5XHU5ZDA4XHU5Y2ViXHU5ZDAzXHU5ZDA2XHU5ZDJhXHU5ZDI2XHU5ZGFmXHU5ZDIzXHU5ZDFmXHU5ZDQ0XHU5ZDE1''@;'; put 'put ''XHU5ZDEyXHU5ZDQxXHU5ZDNmXHU5ZDNlXHU5ZDQ2XHU5ZDQ4Il0sWyJmM2ExIiwiXHU5ZDVkXHU5ZDVlXHU5ZDY0XHU5ZDUxXHU5ZDUwXHU5ZDU5XHU5ZDcyXHU5ZDg5XHU5ZDg3XHU5ZGFiXHU5ZDZmXHU5ZDdhXHU5ZDlhXHU5ZGE0XHU5ZGE5XHU5ZGIyXHU5ZGM0XHU5ZGMxXHU5ZGJiXHU5''@;'; put 'put ''ZGI4XHU5ZGJhXHU5ZGM2XHU5ZGNmXHU5ZGMyXHU5ZGQ5XHU5ZGQzXHU5ZGY4XHU5ZGU2XHU5ZGVkXHU5ZGVmXHU5ZGZkXHU5ZTFhXHU5ZTFiXHU5ZTFlXHU5ZTc1XHU5ZTc5XHU5ZTdkXHU5ZTgxXHU5ZTg4XHU5ZThiXHU5ZThjXHU5ZTkyXHU5ZTk1XHU5ZTkxXHU5ZTlkXHU5ZWE1XHU5ZWE5''@;'; put 'put ''XHU5ZWI4XHU5ZWFhXHU5ZWFkXHU5NzYxXHU5ZWNjXHU5ZWNlXHU5ZWNmXHU5ZWQwXHU5ZWQ0XHU5ZWRjXHU5ZWRlXHU5ZWRkXHU5ZWUwXHU5ZWU1XHU5ZWU4XHU5ZWVmXHU5ZWY0XHU5ZWY2XHU5ZWY3XHU5ZWY5XHU5ZWZiXHU5ZWZjXHU5ZWZkXHU5ZjA3XHU5ZjA4XHU3NmI3XHU5ZjE1XHU5''@;'; put 'put ''ZjIxXHU5ZjJjXHU5ZjNlXHU5ZjRhXHU5ZjUyXHU5ZjU0XHU5ZjYzXHU5ZjVmXHU5ZjYwXHU5ZjYxXHU5ZjY2XHU5ZjY3XHU5ZjZjXHU5ZjZhXHU5Zjc3XHU5ZjcyXHU5Zjc2XHU5Zjk1XHU5ZjljXHU5ZmEwIl0sWyJmNGExIiwiXHU1ODJmXHU2OWM3XHU5MDU5XHU3NDY0XHU1MWRjXHU3MTk5''@;'; put 'put ''Il0sWyJmOWExIiwiXHU3ZThhXHU4OTFjXHU5MzQ4XHU5Mjg4XHU4NGRjXHU0ZmM5XHU3MGJiXHU2NjMxXHU2OGM4XHU5MmY5XHU2NmZiXHU1ZjQ1XHU0ZTI4XHU0ZWUxXHU0ZWZjXHU0ZjAwXHU0ZjAzXHU0ZjM5XHU0ZjU2XHU0ZjkyXHU0ZjhhXHU0ZjlhXHU0Zjk0XHU0ZmNkXHU1MDQwXHU1''@;'; put 'put ''MDIyXHU0ZmZmXHU1MDFlXHU1MDQ2XHU1MDcwXHU1MDQyXHU1MDk0XHU1MGY0XHU1MGQ4XHU1MTRhXHU1MTY0XHU1MTlkXHU1MWJlXHU1MWVjXHU1MjE1XHU1MjljXHU1MmE2XHU1MmMwXHU1MmRiXHU1MzAwXHU1MzA3XHU1MzI0XHU1MzcyXHU1MzkzXHU1M2IyXHU1M2RkXHVmYTBlXHU1NDlj''@;'; put 'put ''XHU1NDhhXHU1NGE5XHU1NGZmXHU1NTg2XHU1NzU5XHU1NzY1XHU1N2FjXHU1N2M4XHU1N2M3XHVmYTBmXHVmYTEwXHU1ODllXHU1OGIyXHU1OTBiXHU1OTUzXHU1OTViXHU1OTVkXHU1OTYzXHU1OWE0XHU1OWJhXHU1YjU2XHU1YmMwXHU3NTJmXHU1YmQ4XHU1YmVjXHU1YzFlXHU1Y2E2XHU1''@;'; put 'put ''Y2JhXHU1Y2Y1XHU1ZDI3XHU1ZDUzXHVmYTExXHU1ZDQyXHU1ZDZkXHU1ZGI4XHU1ZGI5XHU1ZGQwXHU1ZjIxXHU1ZjM0XHU1ZjY3XHU1ZmI3Il0sWyJmYWExIiwiXHU1ZmRlXHU2MDVkXHU2MDg1XHU2MDhhXHU2MGRlXHU2MGQ1XHU2MTIwXHU2MGYyXHU2MTExXHU2MTM3XHU2MTMwXHU2MTk4''@;'; put 'put ''XHU2MjEzXHU2MmE2XHU2M2Y1XHU2NDYwXHU2NDlkXHU2NGNlXHU2NTRlXHU2NjAwXHU2NjE1XHU2NjNiXHU2NjA5XHU2NjJlXHU2NjFlXHU2NjI0XHU2NjY1XHU2NjU3XHU2NjU5XHVmYTEyXHU2NjczXHU2Njk5XHU2NmEwXHU2NmIyXHU2NmJmXHU2NmZhXHU2NzBlXHVmOTI5XHU2NzY2XHU2''@;'; put 'put ''N2JiXHU2ODUyXHU2N2MwXHU2ODAxXHU2ODQ0XHU2OGNmXHVmYTEzXHU2OTY4XHVmYTE0XHU2OTk4XHU2OWUyXHU2YTMwXHU2YTZiXHU2YTQ2XHU2YTczXHU2YTdlXHU2YWUyXHU2YWU0XHU2YmQ2XHU2YzNmXHU2YzVjXHU2Yzg2XHU2YzZmXHU2Y2RhXHU2ZDA0XHU2ZDg3XHU2ZDZmXHU2ZDk2''@;'; put 'put ''XHU2ZGFjXHU2ZGNmXHU2ZGY4XHU2ZGYyXHU2ZGZjXHU2ZTM5XHU2ZTVjXHU2ZTI3XHU2ZTNjXHU2ZWJmXHU2Zjg4XHU2ZmI1XHU2ZmY1XHU3MDA1XHU3MDA3XHU3MDI4XHU3MDg1XHU3MGFiXHU3MTBmXHU3MTA0XHU3MTVjXHU3MTQ2XHU3MTQ3XHVmYTE1XHU3MWMxXHU3MWZlXHU3MmIxIl0s''@;'; put 'put ''WyJmYmExIiwiXHU3MmJlXHU3MzI0XHVmYTE2XHU3Mzc3XHU3M2JkXHU3M2M5XHU3M2Q2XHU3M2UzXHU3M2QyXHU3NDA3XHU3M2Y1XHU3NDI2XHU3NDJhXHU3NDI5XHU3NDJlXHU3NDYyXHU3NDg5XHU3NDlmXHU3NTAxXHU3NTZmXHU3NjgyXHU3NjljXHU3NjllXHU3NjliXHU3NmE2XHVmYTE3''@;'; put 'put ''XHU3NzQ2XHU1MmFmXHU3ODIxXHU3ODRlXHU3ODY0XHU3ODdhXHU3OTMwXHVmYTE4XHVmYTE5XHVmYTFhXHU3OTk0XHVmYTFiXHU3OTliXHU3YWQxXHU3YWU3XHVmYTFjXHU3YWViXHU3YjllXHVmYTFkXHU3ZDQ4XHU3ZDVjXHU3ZGI3XHU3ZGEwXHU3ZGQ2XHU3ZTUyXHU3ZjQ3XHU3ZmExXHVm''@;'; put 'put ''YTFlXHU4MzAxXHU4MzYyXHU4MzdmXHU4M2M3XHU4M2Y2XHU4NDQ4XHU4NGI0XHU4NTUzXHU4NTU5XHU4NTZiXHVmYTFmXHU4NWIwXHVmYTIwXHVmYTIxXHU4ODA3XHU4OGY1XHU4YTEyXHU4YTM3XHU4YTc5XHU4YWE3XHU4YWJlXHU4YWRmXHVmYTIyXHU4YWY2XHU4YjUzXHU4YjdmXHU4Y2Yw''@;'; put 'put ''XHU4Y2Y0XHU4ZDEyXHU4ZDc2XHVmYTIzXHU4ZWNmXHVmYTI0XHVmYTI1XHU5MDY3XHU5MGRlXHVmYTI2XHU5MTE1XHU5MTI3XHU5MWRhIl0sWyJmY2ExIiwiXHU5MWQ3XHU5MWRlXHU5MWVkXHU5MWVlXHU5MWU0XHU5MWU1XHU5MjA2XHU5MjEwXHU5MjBhXHU5MjNhXHU5MjQwXHU5MjNjXHU5''@;'; put 'put ''MjRlXHU5MjU5XHU5MjUxXHU5MjM5XHU5MjY3XHU5MmE3XHU5Mjc3XHU5Mjc4XHU5MmU3XHU5MmQ3XHU5MmQ5XHU5MmQwXHVmYTI3XHU5MmQ1XHU5MmUwXHU5MmQzXHU5MzI1XHU5MzIxXHU5MmZiXHVmYTI4XHU5MzFlXHU5MmZmXHU5MzFkXHU5MzAyXHU5MzcwXHU5MzU3XHU5M2E0XHU5M2M2''@;'; put 'put ''XHU5M2RlXHU5M2Y4XHU5NDMxXHU5NDQ1XHU5NDQ4XHU5NTkyXHVmOWRjXHVmYTI5XHU5NjlkXHU5NmFmXHU5NzMzXHU5NzNiXHU5NzQzXHU5NzRkXHU5NzRmXHU5NzUxXHU5NzU1XHU5ODU3XHU5ODY1XHVmYTJhXHVmYTJiXHU5OTI3XHVmYTJjXHU5OTllXHU5YTRlXHU5YWQ5XHU5YWRjXHU5''@;'; put 'put ''Yjc1XHU5YjcyXHU5YjhmXHU5YmIxXHU5YmJiXHU5YzAwXHU5ZDcwXHU5ZDZiXHVmYTJkXHU5ZTE5XHU5ZWQxIl0sWyJmY2YxIiwiXHUyMTcwIiw5LCJcdWZmZTJcdWZmZTRcdWZmMDdcdWZmMDIiXSxbIjhmYTJhZiIsIlx1MDJkOFx1MDJjN1x4YjhcdTAyZDlcdTAyZGRceGFmXHUwMmRiXHUw''@;'; put 'put ''MmRhXHVmZjVlXHUwMzg0XHUwMzg1Il0sWyI4ZmEyYzIiLCJceGExXHhhNlx4YmYiXSxbIjhmYTJlYiIsIlx4YmFceGFhXHhhOVx4YWVcdTIxMjJceGE0XHUyMTE2Il0sWyI4ZmE2ZTEiLCJcdTAzODZcdTAzODhcdTAzODlcdTAzOGFcdTAzYWEiXSxbIjhmYTZlNyIsIlx1MDM4YyJdLFsiOGZh''@;'; put 'put ''NmU5IiwiXHUwMzhlXHUwM2FiIl0sWyI4ZmE2ZWMiLCJcdTAzOGYiXSxbIjhmYTZmMSIsIlx1MDNhY1x1MDNhZFx1MDNhZVx1MDNhZlx1MDNjYVx1MDM5MFx1MDNjY1x1MDNjMlx1MDNjZFx1MDNjYlx1MDNiMFx1MDNjZSJdLFsiOGZhN2MyIiwiXHUwNDAyIiwxMCwiXHUwNDBlXHUwNDBmIl0s''@;'; put 'put ''WyI4ZmE3ZjIiLCJcdTA0NTIiLDEwLCJcdTA0NWVcdTA0NWYiXSxbIjhmYTlhMSIsIlx4YzZcdTAxMTAiXSxbIjhmYTlhNCIsIlx1MDEyNiJdLFsiOGZhOWE2IiwiXHUwMTMyIl0sWyI4ZmE5YTgiLCJcdTAxNDFcdTAxM2YiXSxbIjhmYTlhYiIsIlx1MDE0YVx4ZDhcdTAxNTIiXSxbIjhmYTlh''@;'; put 'put ''ZiIsIlx1MDE2Nlx4ZGUiXSxbIjhmYTljMSIsIlx4ZTZcdTAxMTFceGYwXHUwMTI3XHUwMTMxXHUwMTMzXHUwMTM4XHUwMTQyXHUwMTQwXHUwMTQ5XHUwMTRiXHhmOFx1MDE1M1x4ZGZcdTAxNjdceGZlIl0sWyI4ZmFhYTEiLCJceGMxXHhjMFx4YzRceGMyXHUwMTAyXHUwMWNkXHUwMTAwXHUw''@;'; put 'put ''MTA0XHhjNVx4YzNcdTAxMDZcdTAxMDhcdTAxMGNceGM3XHUwMTBhXHUwMTBlXHhjOVx4YzhceGNiXHhjYVx1MDExYVx1MDExNlx1MDExMlx1MDExOCJdLFsiOGZhYWJhIiwiXHUwMTFjXHUwMTFlXHUwMTIyXHUwMTIwXHUwMTI0XHhjZFx4Y2NceGNmXHhjZVx1MDFjZlx1MDEzMFx1MDEyYVx1''@;'; put 'put ''MDEyZVx1MDEyOFx1MDEzNFx1MDEzNlx1MDEzOVx1MDEzZFx1MDEzYlx1MDE0M1x1MDE0N1x1MDE0NVx4ZDFceGQzXHhkMlx4ZDZceGQ0XHUwMWQxXHUwMTUwXHUwMTRjXHhkNVx1MDE1NFx1MDE1OFx1MDE1Nlx1MDE1YVx1MDE1Y1x1MDE2MFx1MDE1ZVx1MDE2NFx1MDE2Mlx4ZGFceGQ5XHhk''@;'; put 'put ''Y1x4ZGJcdTAxNmNcdTAxZDNcdTAxNzBcdTAxNmFcdTAxNzJcdTAxNmVcdTAxNjhcdTAxZDdcdTAxZGJcdTAxZDlcdTAxZDVcdTAxNzRceGRkXHUwMTc4XHUwMTc2XHUwMTc5XHUwMTdkXHUwMTdiIl0sWyI4ZmFiYTEiLCJceGUxXHhlMFx4ZTRceGUyXHUwMTAzXHUwMWNlXHUwMTAxXHUwMTA1''@;'; put 'put ''XHhlNVx4ZTNcdTAxMDdcdTAxMDlcdTAxMGRceGU3XHUwMTBiXHUwMTBmXHhlOVx4ZThceGViXHhlYVx1MDExYlx1MDExN1x1MDExM1x1MDExOVx1MDFmNVx1MDExZFx1MDExZiJdLFsiOGZhYmJkIiwiXHUwMTIxXHUwMTI1XHhlZFx4ZWNceGVmXHhlZVx1MDFkMCJdLFsiOGZhYmM1IiwiXHUw''@;'; put 'put ''MTJiXHUwMTJmXHUwMTI5XHUwMTM1XHUwMTM3XHUwMTNhXHUwMTNlXHUwMTNjXHUwMTQ0XHUwMTQ4XHUwMTQ2XHhmMVx4ZjNceGYyXHhmNlx4ZjRcdTAxZDJcdTAxNTFcdTAxNGRceGY1XHUwMTU1XHUwMTU5XHUwMTU3XHUwMTViXHUwMTVkXHUwMTYxXHUwMTVmXHUwMTY1XHUwMTYzXHhmYVx4''@;'; put 'put ''ZjlceGZjXHhmYlx1MDE2ZFx1MDFkNFx1MDE3MVx1MDE2Ylx1MDE3M1x1MDE2Zlx1MDE2OVx1MDFkOFx1MDFkY1x1MDFkYVx1MDFkNlx1MDE3NVx4ZmRceGZmXHUwMTc3XHUwMTdhXHUwMTdlXHUwMTdjIl0sWyI4ZmIwYTEiLCJcdTRlMDJcdTRlMDRcdTRlMDVcdTRlMGNcdTRlMTJcdTRlMWZc''@;'; put 'put ''dTRlMjNcdTRlMjRcdTRlMjhcdTRlMmJcdTRlMmVcdTRlMmZcdTRlMzBcdTRlMzVcdTRlNDBcdTRlNDFcdTRlNDRcdTRlNDdcdTRlNTFcdTRlNWFcdTRlNWNcdTRlNjNcdTRlNjhcdTRlNjlcdTRlNzRcdTRlNzVcdTRlNzlcdTRlN2ZcdTRlOGRcdTRlOTZcdTRlOTdcdTRlOWRcdTRlYWZcdTRl''@;'; put 'put ''YjlcdTRlYzNcdTRlZDBcdTRlZGFcdTRlZGJcdTRlZTBcdTRlZTFcdTRlZTJcdTRlZThcdTRlZWZcdTRlZjFcdTRlZjNcdTRlZjVcdTRlZmRcdTRlZmVcdTRlZmZcdTRmMDBcdTRmMDJcdTRmMDNcdTRmMDhcdTRmMGJcdTRmMGNcdTRmMTJcdTRmMTVcdTRmMTZcdTRmMTdcdTRmMTlcdTRmMmVc''@;'; put 'put ''dTRmMzFcdTRmNjBcdTRmMzNcdTRmMzVcdTRmMzdcdTRmMzlcdTRmM2JcdTRmM2VcdTRmNDBcdTRmNDJcdTRmNDhcdTRmNDlcdTRmNGJcdTRmNGNcdTRmNTJcdTRmNTRcdTRmNTZcdTRmNThcdTRmNWZcdTRmNjNcdTRmNmFcdTRmNmNcdTRmNmVcdTRmNzFcdTRmNzdcdTRmNzhcdTRmNzlcdTRm''@;'; put 'put ''N2FcdTRmN2RcdTRmN2VcdTRmODFcdTRmODJcdTRmODQiXSxbIjhmYjFhMSIsIlx1NGY4NVx1NGY4OVx1NGY4YVx1NGY4Y1x1NGY4ZVx1NGY5MFx1NGY5Mlx1NGY5M1x1NGY5NFx1NGY5N1x1NGY5OVx1NGY5YVx1NGY5ZVx1NGY5Zlx1NGZiMlx1NGZiN1x1NGZiOVx1NGZiYlx1NGZiY1x1NGZi''@;'; put 'put ''ZFx1NGZiZVx1NGZjMFx1NGZjMVx1NGZjNVx1NGZjNlx1NGZjOFx1NGZjOVx1NGZjYlx1NGZjY1x1NGZjZFx1NGZjZlx1NGZkMlx1NGZkY1x1NGZlMFx1NGZlMlx1NGZmMFx1NGZmMlx1NGZmY1x1NGZmZFx1NGZmZlx1NTAwMFx1NTAwMVx1NTAwNFx1NTAwN1x1NTAwYVx1NTAwY1x1NTAwZVx1''@;'; put 'put ''NTAxMFx1NTAxM1x1NTAxN1x1NTAxOFx1NTAxYlx1NTAxY1x1NTAxZFx1NTAxZVx1NTAyMlx1NTAyN1x1NTAyZVx1NTAzMFx1NTAzMlx1NTAzM1x1NTAzNVx1NTA0MFx1NTA0MVx1NTA0Mlx1NTA0NVx1NTA0Nlx1NTA0YVx1NTA0Y1x1NTA0ZVx1NTA1MVx1NTA1Mlx1NTA1M1x1NTA1N1x1NTA1''@;'; put 'put ''OVx1NTA1Zlx1NTA2MFx1NTA2Mlx1NTA2M1x1NTA2Nlx1NTA2N1x1NTA2YVx1NTA2ZFx1NTA3MFx1NTA3MVx1NTAzYlx1NTA4MVx1NTA4M1x1NTA4NFx1NTA4Nlx1NTA4YVx1NTA4ZVx1NTA4Zlx1NTA5MCJdLFsiOGZiMmExIiwiXHU1MDkyXHU1MDkzXHU1MDk0XHU1MDk2XHU1MDliXHU1MDlj''@;'; put 'put ''XHU1MDllIiw0LCJcdTUwYWFcdTUwYWZcdTUwYjBcdTUwYjlcdTUwYmFcdTUwYmRcdTUwYzBcdTUwYzNcdTUwYzRcdTUwYzdcdTUwY2NcdTUwY2VcdTUwZDBcdTUwZDNcdTUwZDRcdTUwZDhcdTUwZGNcdTUwZGRcdTUwZGZcdTUwZTJcdTUwZTRcdTUwZTZcdTUwZThcdTUwZTlcdTUwZWZcdTUw''@;'; put 'put ''ZjFcdTUwZjZcdTUwZmFcdTUwZmVcdTUxMDNcdTUxMDZcdTUxMDdcdTUxMDhcdTUxMGJcdTUxMGNcdTUxMGRcdTUxMGVcdTUwZjJcdTUxMTBcdTUxMTdcdTUxMTlcdTUxMWJcdTUxMWNcdTUxMWRcdTUxMWVcdTUxMjNcdTUxMjdcdTUxMjhcdTUxMmNcdTUxMmRcdTUxMmZcdTUxMzFcdTUxMzNc''@;'; put 'put ''dTUxMzRcdTUxMzVcdTUxMzhcdTUxMzlcdTUxNDJcdTUxNGFcdTUxNGZcdTUxNTNcdTUxNTVcdTUxNTdcdTUxNThcdTUxNWZcdTUxNjRcdTUxNjZcdTUxN2VcdTUxODNcdTUxODRcdTUxOGJcdTUxOGVcdTUxOThcdTUxOWRcdTUxYTFcdTUxYTNcdTUxYWRcdTUxYjhcdTUxYmFcdTUxYmNcdTUx''@;'; put 'put ''YmVcdTUxYmZcdTUxYzIiXSxbIjhmYjNhMSIsIlx1NTFjOFx1NTFjZlx1NTFkMVx1NTFkMlx1NTFkM1x1NTFkNVx1NTFkOFx1NTFkZVx1NTFlMlx1NTFlNVx1NTFlZVx1NTFmMlx1NTFmM1x1NTFmNFx1NTFmN1x1NTIwMVx1NTIwMlx1NTIwNVx1NTIxMlx1NTIxM1x1NTIxNVx1NTIxNlx1NTIx''@;'; put 'put ''OFx1NTIyMlx1NTIyOFx1NTIzMVx1NTIzMlx1NTIzNVx1NTIzY1x1NTI0NVx1NTI0OVx1NTI1NVx1NTI1N1x1NTI1OFx1NTI1YVx1NTI1Y1x1NTI1Zlx1NTI2MFx1NTI2MVx1NTI2Nlx1NTI2ZVx1NTI3N1x1NTI3OFx1NTI3OVx1NTI4MFx1NTI4Mlx1NTI4NVx1NTI4YVx1NTI4Y1x1NTI5M1x1''@;'; put 'put ''NTI5NVx1NTI5Nlx1NTI5N1x1NTI5OFx1NTI5YVx1NTI5Y1x1NTJhNFx1NTJhNVx1NTJhNlx1NTJhN1x1NTJhZlx1NTJiMFx1NTJiNlx1NTJiN1x1NTJiOFx1NTJiYVx1NTJiYlx1NTJiZFx1NTJjMFx1NTJjNFx1NTJjNlx1NTJjOFx1NTJjY1x1NTJjZlx1NTJkMVx1NTJkNFx1NTJkNlx1NTJk''@;'; put 'put ''Ylx1NTJkY1x1NTJlMVx1NTJlNVx1NTJlOFx1NTJlOVx1NTJlYVx1NTJlY1x1NTJmMFx1NTJmMVx1NTJmNFx1NTJmNlx1NTJmN1x1NTMwMFx1NTMwM1x1NTMwYVx1NTMwYiJdLFsiOGZiNGExIiwiXHU1MzBjXHU1MzExXHU1MzEzXHU1MzE4XHU1MzFiXHU1MzFjXHU1MzFlXHU1MzFmXHU1MzI1''@;'; put 'put ''XHU1MzI3XHU1MzI4XHU1MzI5XHU1MzJiXHU1MzJjXHU1MzJkXHU1MzMwXHU1MzMyXHU1MzM1XHU1MzNjXHU1MzNkXHU1MzNlXHU1MzQyXHU1MzRjXHU1MzRiXHU1MzU5XHU1MzViXHU1MzYxXHU1MzYzXHU1MzY1XHU1MzZjXHU1MzZkXHU1MzcyXHU1Mzc5XHU1MzdlXHU1MzgzXHU1Mzg3XHU1''@;'; put 'put ''Mzg4XHU1MzhlXHU1MzkzXHU1Mzk0XHU1Mzk5XHU1MzlkXHU1M2ExXHU1M2E0XHU1M2FhXHU1M2FiXHU1M2FmXHU1M2IyXHU1M2I0XHU1M2I1XHU1M2I3XHU1M2I4XHU1M2JhXHU1M2JkXHU1M2MwXHU1M2M1XHU1M2NmXHU1M2QyXHU1M2QzXHU1M2Q1XHU1M2RhXHU1M2RkXHU1M2RlXHU1M2Uw''@;'; put 'put ''XHU1M2U2XHU1M2U3XHU1M2Y1XHU1NDAyXHU1NDEzXHU1NDFhXHU1NDIxXHU1NDI3XHU1NDI4XHU1NDJhXHU1NDJmXHU1NDMxXHU1NDM0XHU1NDM1XHU1NDQzXHU1NDQ0XHU1NDQ3XHU1NDRkXHU1NDRmXHU1NDVlXHU1NDYyXHU1NDY0XHU1NDY2XHU1NDY3XHU1NDY5XHU1NDZiXHU1NDZkXHU1''@;'; put 'put ''NDZlXHU1NDc0XHU1NDdmIl0sWyI4ZmI1YTEiLCJcdTU0ODFcdTU0ODNcdTU0ODVcdTU0ODhcdTU0ODlcdTU0OGRcdTU0OTFcdTU0OTVcdTU0OTZcdTU0OWNcdTU0OWZcdTU0YTFcdTU0YTZcdTU0YTdcdTU0YTlcdTU0YWFcdTU0YWRcdTU0YWVcdTU0YjFcdTU0YjdcdTU0YjlcdTU0YmFcdTU0''@;'; put 'put ''YmJcdTU0YmZcdTU0YzZcdTU0Y2FcdTU0Y2RcdTU0Y2VcdTU0ZTBcdTU0ZWFcdTU0ZWNcdTU0ZWZcdTU0ZjZcdTU0ZmNcdTU0ZmVcdTU0ZmZcdTU1MDBcdTU1MDFcdTU1MDVcdTU1MDhcdTU1MDlcdTU1MGNcdTU1MGRcdTU1MGVcdTU1MTVcdTU1MmFcdTU1MmJcdTU1MzJcdTU1MzVcdTU1MzZc''@;'; put 'put ''dTU1M2JcdTU1M2NcdTU1M2RcdTU1NDFcdTU1NDdcdTU1NDlcdTU1NGFcdTU1NGRcdTU1NTBcdTU1NTFcdTU1NThcdTU1NWFcdTU1NWJcdTU1NWVcdTU1NjBcdTU1NjFcdTU1NjRcdTU1NjZcdTU1N2ZcdTU1ODFcdTU1ODJcdTU1ODZcdTU1ODhcdTU1OGVcdTU1OGZcdTU1OTFcdTU1OTJcdTU1''@;'; put 'put ''OTNcdTU1OTRcdTU1OTdcdTU1YTNcdTU1YTRcdTU1YWRcdTU1YjJcdTU1YmZcdTU1YzFcdTU1YzNcdTU1YzZcdTU1YzlcdTU1Y2JcdTU1Y2NcdTU1Y2VcdTU1ZDFcdTU1ZDIiXSxbIjhmYjZhMSIsIlx1NTVkM1x1NTVkN1x1NTVkOFx1NTVkYlx1NTVkZVx1NTVlMlx1NTVlOVx1NTVmNlx1NTVm''@;'; put 'put ''Zlx1NTYwNVx1NTYwOFx1NTYwYVx1NTYwZCIsNSwiXHU1NjE5XHU1NjJjXHU1NjMwXHU1NjMzXHU1NjM1XHU1NjM3XHU1NjM5XHU1NjNiXHU1NjNjXHU1NjNkXHU1NjNmXHU1NjQwXHU1NjQxXHU1NjQzXHU1NjQ0XHU1NjQ2XHU1NjQ5XHU1NjRiXHU1NjRkXHU1NjRmXHU1NjU0XHU1NjVlXHU1''@;'; put 'put ''NjYwXHU1NjYxXHU1NjYyXHU1NjYzXHU1NjY2XHU1NjY5XHU1NjZkXHU1NjZmXHU1NjcxXHU1NjcyXHU1Njc1XHU1Njg0XHU1Njg1XHU1Njg4XHU1NjhiXHU1NjhjXHU1Njk1XHU1Njk5XHU1NjlhXHU1NjlkXHU1NjllXHU1NjlmXHU1NmE2XHU1NmE3XHU1NmE4XHU1NmE5XHU1NmFiXHU1NmFj''@;'; put 'put ''XHU1NmFkXHU1NmIxXHU1NmIzXHU1NmI3XHU1NmJlXHU1NmM1XHU1NmM5XHU1NmNhXHU1NmNiXHU1NmNmXHU1NmQwXHU1NmNjXHU1NmNkXHU1NmQ5XHU1NmRjXHU1NmRkXHU1NmRmXHU1NmUxXHU1NmU0Iiw0LCJcdTU2ZjFcdTU2ZWJcdTU2ZWQiXSxbIjhmYjdhMSIsIlx1NTZmNlx1NTZmN1x1''@;'; put 'put ''NTcwMVx1NTcwMlx1NTcwN1x1NTcwYVx1NTcwY1x1NTcxMVx1NTcxNVx1NTcxYVx1NTcxYlx1NTcxZFx1NTcyMFx1NTcyMlx1NTcyM1x1NTcyNFx1NTcyNVx1NTcyOVx1NTcyYVx1NTcyY1x1NTcyZVx1NTcyZlx1NTczM1x1NTczNFx1NTczZFx1NTczZVx1NTczZlx1NTc0NVx1NTc0Nlx1NTc0''@;'; put 'put ''Y1x1NTc0ZFx1NTc1Mlx1NTc2Mlx1NTc2NVx1NTc2N1x1NTc2OFx1NTc2Ylx1NTc2ZCIsNCwiXHU1NzczXHU1Nzc0XHU1Nzc1XHU1Nzc3XHU1Nzc5XHU1NzdhXHU1NzdiXHU1NzdjXHU1NzdlXHU1NzgxXHU1NzgzXHU1NzhjXHU1Nzk0XHU1Nzk3XHU1Nzk5XHU1NzlhXHU1NzljXHU1NzlkXHU1''@;'; put 'put ''NzllXHU1NzlmXHU1N2ExXHU1Nzk1XHU1N2E3XHU1N2E4XHU1N2E5XHU1N2FjXHU1N2I4XHU1N2JkXHU1N2M3XHU1N2M4XHU1N2NjXHU1N2NmXHU1N2Q1XHU1N2RkXHU1N2RlXHU1N2U0XHU1N2U2XHU1N2U3XHU1N2U5XHU1N2VkXHU1N2YwXHU1N2Y1XHU1N2Y2XHU1N2Y4XHU1N2ZkXHU1N2Zl''@;'; put 'put ''XHU1N2ZmXHU1ODAzXHU1ODA0XHU1ODA4XHU1ODA5XHU1N2UxIl0sWyI4ZmI4YTEiLCJcdTU4MGNcdTU4MGRcdTU4MWJcdTU4MWVcdTU4MWZcdTU4MjBcdTU4MjZcdTU4MjdcdTU4MmRcdTU4MzJcdTU4MzlcdTU4M2ZcdTU4NDlcdTU4NGNcdTU4NGRcdTU4NGZcdTU4NTBcdTU4NTVcdTU4NWZc''@;'; put 'put ''dTU4NjFcdTU4NjRcdTU4NjdcdTU4NjhcdTU4NzhcdTU4N2NcdTU4N2ZcdTU4ODBcdTU4ODFcdTU4ODdcdTU4ODhcdTU4ODlcdTU4OGFcdTU4OGNcdTU4OGRcdTU4OGZcdTU4OTBcdTU4OTRcdTU4OTZcdTU4OWRcdTU4YTBcdTU4YTFcdTU4YTJcdTU4YTZcdTU4YTlcdTU4YjFcdTU4YjJcdTU4''@;'; put 'put ''YzRcdTU4YmNcdTU4YzJcdTU4YzhcdTU4Y2RcdTU4Y2VcdTU4ZDBcdTU4ZDJcdTU4ZDRcdTU4ZDZcdTU4ZGFcdTU4ZGRcdTU4ZTFcdTU4ZTJcdTU4ZTlcdTU4ZjNcdTU5MDVcdTU5MDZcdTU5MGJcdTU5MGNcdTU5MTJcdTU5MTNcdTU5MTRcdTg2NDFcdTU5MWRcdTU5MjFcdTU5MjNcdTU5MjRc''@;'; put 'put ''dTU5MjhcdTU5MmZcdTU5MzBcdTU5MzNcdTU5MzVcdTU5MzZcdTU5M2ZcdTU5NDNcdTU5NDZcdTU5NTJcdTU5NTNcdTU5NTlcdTU5NWJcdTU5NWRcdTU5NWVcdTU5NWZcdTU5NjFcdTU5NjNcdTU5NmJcdTU5NmQiXSxbIjhmYjlhMSIsIlx1NTk2Zlx1NTk3Mlx1NTk3NVx1NTk3Nlx1NTk3OVx1''@;'; put 'put ''NTk3Ylx1NTk3Y1x1NTk4Ylx1NTk4Y1x1NTk4ZVx1NTk5Mlx1NTk5NVx1NTk5N1x1NTk5Zlx1NTlhNFx1NTlhN1x1NTlhZFx1NTlhZVx1NTlhZlx1NTliMFx1NTliM1x1NTliN1x1NTliYVx1NTliY1x1NTljMVx1NTljM1x1NTljNFx1NTljOFx1NTljYVx1NTljZFx1NTlkMlx1NTlkZFx1NTlk''@;'; put 'put ''ZVx1NTlkZlx1NTllM1x1NTllNFx1NTllN1x1NTllZVx1NTllZlx1NTlmMVx1NTlmMlx1NTlmNFx1NTlmN1x1NWEwMFx1NWEwNFx1NWEwY1x1NWEwZFx1NWEwZVx1NWExMlx1NWExM1x1NWExZVx1NWEyM1x1NWEyNFx1NWEyN1x1NWEyOFx1NWEyYVx1NWEyZFx1NWEzMFx1NWE0NFx1NWE0NVx1''@;'; put 'put ''NWE0N1x1NWE0OFx1NWE0Y1x1NWE1MFx1NWE1NVx1NWE1ZVx1NWE2M1x1NWE2NVx1NWE2N1x1NWE2ZFx1NWE3N1x1NWE3YVx1NWE3Ylx1NWE3ZVx1NWE4Ylx1NWE5MFx1NWE5M1x1NWE5Nlx1NWE5OVx1NWE5Y1x1NWE5ZVx1NWE5Zlx1NWFhMFx1NWFhMlx1NWFhN1x1NWFhY1x1NWFiMVx1NWFi''@;'; put 'put ''Mlx1NWFiM1x1NWFiNVx1NWFiOFx1NWFiYVx1NWFiYlx1NWFiZiJdLFsiOGZiYWExIiwiXHU1YWM0XHU1YWM2XHU1YWM4XHU1YWNmXHU1YWRhXHU1YWRjXHU1YWUwXHU1YWU1XHU1YWVhXHU1YWVlXHU1YWY1XHU1YWY2XHU1YWZkXHU1YjAwXHU1YjAxXHU1YjA4XHU1YjE3XHU1YjM0XHU1YjE5''@;'; put 'put ''XHU1YjFiXHU1YjFkXHU1YjIxXHU1YjI1XHU1YjJkXHU1YjM4XHU1YjQxXHU1YjRiXHU1YjRjXHU1YjUyXHU1YjU2XHU1YjVlXHU1YjY4XHU1YjZlXHU1YjZmXHU1YjdjXHU1YjdkXHU1YjdlXHU1YjdmXHU1YjgxXHU1Yjg0XHU1Yjg2XHU1YjhhXHU1YjhlXHU1YjkwXHU1YjkxXHU1YjkzXHU1''@;'; put 'put ''Yjk0XHU1Yjk2XHU1YmE4XHU1YmE5XHU1YmFjXHU1YmFkXHU1YmFmXHU1YmIxXHU1YmIyXHU1YmI3XHU1YmJhXHU1YmJjXHU1YmMwXHU1YmMxXHU1YmNkXHU1YmNmXHU1YmQ2Iiw0LCJcdTViZTBcdTViZWZcdTViZjFcdTViZjRcdTViZmRcdTVjMGNcdTVjMTdcdTVjMWVcdTVjMWZcdTVjMjNc''@;'; put 'put ''dTVjMjZcdTVjMjlcdTVjMmJcdTVjMmNcdTVjMmVcdTVjMzBcdTVjMzJcdTVjMzVcdTVjMzZcdTVjNTlcdTVjNWFcdTVjNWNcdTVjNjJcdTVjNjNcdTVjNjdcdTVjNjhcdTVjNjkiXSxbIjhmYmJhMSIsIlx1NWM2ZFx1NWM3MFx1NWM3NFx1NWM3NVx1NWM3YVx1NWM3Ylx1NWM3Y1x1NWM3ZFx1''@;'; put 'put ''NWM4N1x1NWM4OFx1NWM4YVx1NWM4Zlx1NWM5Mlx1NWM5ZFx1NWM5Zlx1NWNhMFx1NWNhMlx1NWNhM1x1NWNhNlx1NWNhYVx1NWNiMlx1NWNiNFx1NWNiNVx1NWNiYVx1NWNjOVx1NWNjYlx1NWNkMlx1NWNkZFx1NWNkN1x1NWNlZVx1NWNmMVx1NWNmMlx1NWNmNFx1NWQwMVx1NWQwNlx1NWQw''@;'; put 'put ''ZFx1NWQxMlx1NWQyYlx1NWQyM1x1NWQyNFx1NWQyNlx1NWQyN1x1NWQzMVx1NWQzNFx1NWQzOVx1NWQzZFx1NWQzZlx1NWQ0Mlx1NWQ0M1x1NWQ0Nlx1NWQ0OFx1NWQ1NVx1NWQ1MVx1NWQ1OVx1NWQ0YVx1NWQ1Zlx1NWQ2MFx1NWQ2MVx1NWQ2Mlx1NWQ2NFx1NWQ2YVx1NWQ2ZFx1NWQ3MFx1''@;'; put 'put ''NWQ3OVx1NWQ3YVx1NWQ3ZVx1NWQ3Zlx1NWQ4MVx1NWQ4M1x1NWQ4OFx1NWQ4YVx1NWQ5Mlx1NWQ5M1x1NWQ5NFx1NWQ5NVx1NWQ5OVx1NWQ5Ylx1NWQ5Zlx1NWRhMFx1NWRhN1x1NWRhYlx1NWRiMFx1NWRiNFx1NWRiOFx1NWRiOVx1NWRjM1x1NWRjN1x1NWRjYlx1NWRkMFx1NWRjZVx1NWRk''@;'; put 'put ''OFx1NWRkOVx1NWRlMFx1NWRlNCJdLFsiOGZiY2ExIiwiXHU1ZGU5XHU1ZGY4XHU1ZGY5XHU1ZTAwXHU1ZTA3XHU1ZTBkXHU1ZTEyXHU1ZTE0XHU1ZTE1XHU1ZTE4XHU1ZTFmXHU1ZTIwXHU1ZTJlXHU1ZTI4XHU1ZTMyXHU1ZTM1XHU1ZTNlXHU1ZTRiXHU1ZTUwXHU1ZTQ5XHU1ZTUxXHU1ZTU2''@;'; put 'put ''XHU1ZTU4XHU1ZTViXHU1ZTVjXHU1ZTVlXHU1ZTY4XHU1ZTZhIiw0LCJcdTVlNzBcdTVlODBcdTVlOGJcdTVlOGVcdTVlYTJcdTVlYTRcdTVlYTVcdTVlYThcdTVlYWFcdTVlYWNcdTVlYjFcdTVlYjNcdTVlYmRcdTVlYmVcdTVlYmZcdTVlYzZcdTVlY2NcdTVlY2JcdTVlY2VcdTVlZDFcdTVl''@;'; put 'put ''ZDJcdTVlZDRcdTVlZDVcdTVlZGNcdTVlZGVcdTVlZTVcdTVlZWJcdTVmMDJcdTVmMDZcdTVmMDdcdTVmMDhcdTVmMGVcdTVmMTlcdTVmMWNcdTVmMWRcdTVmMjFcdTVmMjJcdTVmMjNcdTVmMjRcdTVmMjhcdTVmMmJcdTVmMmNcdTVmMmVcdTVmMzBcdTVmMzRcdTVmMzZcdTVmM2JcdTVmM2Rc''@;'; put 'put ''dTVmM2ZcdTVmNDBcdTVmNDRcdTVmNDVcdTVmNDdcdTVmNGRcdTVmNTBcdTVmNTRcdTVmNThcdTVmNWJcdTVmNjBcdTVmNjNcdTVmNjRcdTVmNjciXSxbIjhmYmRhMSIsIlx1NWY2Zlx1NWY3Mlx1NWY3NFx1NWY3NVx1NWY3OFx1NWY3YVx1NWY3ZFx1NWY3ZVx1NWY4OVx1NWY4ZFx1NWY4Zlx1''@;'; put 'put ''NWY5Nlx1NWY5Y1x1NWY5ZFx1NWZhMlx1NWZhN1x1NWZhYlx1NWZhNFx1NWZhY1x1NWZhZlx1NWZiMFx1NWZiMVx1NWZiOFx1NWZjNFx1NWZjN1x1NWZjOFx1NWZjOVx1NWZjYlx1NWZkMCIsNCwiXHU1ZmRlXHU1ZmUxXHU1ZmUyXHU1ZmU4XHU1ZmU5XHU1ZmVhXHU1ZmVjXHU1ZmVkXHU1ZmVl''@;'; put 'put ''XHU1ZmVmXHU1ZmYyXHU1ZmYzXHU1ZmY2XHU1ZmZhXHU1ZmZjXHU2MDA3XHU2MDBhXHU2MDBkXHU2MDEzXHU2MDE0XHU2MDE3XHU2MDE4XHU2MDFhXHU2MDFmXHU2MDI0XHU2MDJkXHU2MDMzXHU2MDM1XHU2MDQwXHU2MDQ3XHU2MDQ4XHU2MDQ5XHU2MDRjXHU2MDUxXHU2MDU0XHU2MDU2XHU2''@;'; put 'put ''MDU3XHU2MDVkXHU2MDYxXHU2MDY3XHU2MDcxXHU2MDdlXHU2MDdmXHU2MDgyXHU2MDg2XHU2MDg4XHU2MDhhXHU2MDhlXHU2MDkxXHU2MDkzXHU2MDk1XHU2MDk4XHU2MDlkXHU2MDllXHU2MGEyXHU2MGE0XHU2MGE1XHU2MGE4XHU2MGIwXHU2MGIxXHU2MGI3Il0sWyI4ZmJlYTEiLCJcdTYw''@;'; put 'put ''YmJcdTYwYmVcdTYwYzJcdTYwYzRcdTYwYzhcdTYwYzlcdTYwY2FcdTYwY2JcdTYwY2VcdTYwY2ZcdTYwZDRcdTYwZDVcdTYwZDlcdTYwZGJcdTYwZGRcdTYwZGVcdTYwZTJcdTYwZTVcdTYwZjJcdTYwZjVcdTYwZjhcdTYwZmNcdTYwZmRcdTYxMDJcdTYxMDdcdTYxMGFcdTYxMGNcdTYxMTAi''@;'; put 'put ''LDQsIlx1NjExNlx1NjExN1x1NjExOVx1NjExY1x1NjExZVx1NjEyMlx1NjEyYVx1NjEyYlx1NjEzMFx1NjEzMVx1NjEzNVx1NjEzNlx1NjEzN1x1NjEzOVx1NjE0MVx1NjE0NVx1NjE0Nlx1NjE0OVx1NjE1ZVx1NjE2MFx1NjE2Y1x1NjE3Mlx1NjE3OFx1NjE3Ylx1NjE3Y1x1NjE3Zlx1NjE4''@;'; put 'put ''MFx1NjE4MVx1NjE4M1x1NjE4NFx1NjE4Ylx1NjE4ZFx1NjE5Mlx1NjE5M1x1NjE5N1x1NjE5OFx1NjE5Y1x1NjE5ZFx1NjE5Zlx1NjFhMFx1NjFhNVx1NjFhOFx1NjFhYVx1NjFhZFx1NjFiOFx1NjFiOVx1NjFiY1x1NjFjMFx1NjFjMVx1NjFjMlx1NjFjZVx1NjFjZlx1NjFkNVx1NjFkY1x1''@;'; put 'put ''NjFkZFx1NjFkZVx1NjFkZlx1NjFlMVx1NjFlMlx1NjFlN1x1NjFlOVx1NjFlNSJdLFsiOGZiZmExIiwiXHU2MWVjXHU2MWVkXHU2MWVmXHU2MjAxXHU2MjAzXHU2MjA0XHU2MjA3XHU2MjEzXHU2MjE1XHU2MjFjXHU2MjIwXHU2MjIyXHU2MjIzXHU2MjI3XHU2MjI5XHU2MjJiXHU2MjM5XHU2''@;'; put 'put ''MjNkXHU2MjQyXHU2MjQzXHU2MjQ0XHU2MjQ2XHU2MjRjXHU2MjUwXHU2MjUxXHU2MjUyXHU2MjU0XHU2MjU2XHU2MjVhXHU2MjVjXHU2MjY0XHU2MjZkXHU2MjZmXHU2MjczXHU2MjdhXHU2MjdkXHU2MjhkXHU2MjhlXHU2MjhmXHU2MjkwXHU2MmE2XHU2MmE4XHU2MmIzXHU2MmI2XHU2MmI3''@;'; put 'put ''XHU2MmJhXHU2MmJlXHU2MmJmXHU2MmM0XHU2MmNlXHU2MmQ1XHU2MmQ2XHU2MmRhXHU2MmVhXHU2MmYyXHU2MmY0XHU2MmZjXHU2MmZkXHU2MzAzXHU2MzA0XHU2MzBhXHU2MzBiXHU2MzBkXHU2MzEwXHU2MzEzXHU2MzE2XHU2MzE4XHU2MzI5XHU2MzJhXHU2MzJkXHU2MzM1XHU2MzM2XHU2''@;'; put 'put ''MzM5XHU2MzNjXHU2MzQxXHU2MzQyXHU2MzQzXHU2MzQ0XHU2MzQ2XHU2MzRhXHU2MzRiXHU2MzRlXHU2MzUyXHU2MzUzXHU2MzU0XHU2MzU4XHU2MzViXHU2MzY1XHU2MzY2XHU2MzZjXHU2MzZkXHU2MzcxXHU2Mzc0XHU2Mzc1Il0sWyI4ZmMwYTEiLCJcdTYzNzhcdTYzN2NcdTYzN2RcdTYz''@;'; put 'put ''N2ZcdTYzODJcdTYzODRcdTYzODdcdTYzOGFcdTYzOTBcdTYzOTRcdTYzOTVcdTYzOTlcdTYzOWFcdTYzOWVcdTYzYTRcdTYzYTZcdTYzYWRcdTYzYWVcdTYzYWZcdTYzYmRcdTYzYzFcdTYzYzVcdTYzYzhcdTYzY2VcdTYzZDFcdTYzZDNcdTYzZDRcdTYzZDVcdTYzZGNcdTYzZTBcdTYzZTVc''@;'; put 'put ''dTYzZWFcdTYzZWNcdTYzZjJcdTYzZjNcdTYzZjVcdTYzZjhcdTYzZjlcdTY0MDlcdTY0MGFcdTY0MTBcdTY0MTJcdTY0MTRcdTY0MThcdTY0MWVcdTY0MjBcdTY0MjJcdTY0MjRcdTY0MjVcdTY0MjlcdTY0MmFcdTY0MmZcdTY0MzBcdTY0MzVcdTY0M2RcdTY0M2ZcdTY0NGJcdTY0NGZcdTY0''@;'; put 'put ''NTFcdTY0NTJcdTY0NTNcdTY0NTRcdTY0NWFcdTY0NWJcdTY0NWNcdTY0NWRcdTY0NWZcdTY0NjBcdTY0NjFcdTY0NjNcdTY0NmRcdTY0NzNcdTY0NzRcdTY0N2JcdTY0N2RcdTY0ODVcdTY0ODdcdTY0OGZcdTY0OTBcdTY0OTFcdTY0OThcdTY0OTlcdTY0OWJcdTY0OWRcdTY0OWZcdTY0YTFc''@;'; put 'put ''dTY0YTNcdTY0YTZcdTY0YThcdTY0YWNcdTY0YjNcdTY0YmRcdTY0YmVcdTY0YmYiXSxbIjhmYzFhMSIsIlx1NjRjNFx1NjRjOVx1NjRjYVx1NjRjYlx1NjRjY1x1NjRjZVx1NjRkMFx1NjRkMVx1NjRkNVx1NjRkN1x1NjRlNFx1NjRlNVx1NjRlOVx1NjRlYVx1NjRlZFx1NjRmMFx1NjRmNVx1''@;'; put 'put ''NjRmN1x1NjRmYlx1NjRmZlx1NjUwMVx1NjUwNFx1NjUwOFx1NjUwOVx1NjUwYVx1NjUwZlx1NjUxM1x1NjUxNFx1NjUxNlx1NjUxOVx1NjUxYlx1NjUxZVx1NjUxZlx1NjUyMlx1NjUyNlx1NjUyOVx1NjUyZVx1NjUzMVx1NjUzYVx1NjUzY1x1NjUzZFx1NjU0M1x1NjU0N1x1NjU0OVx1NjU1''@;'; put 'put ''MFx1NjU1Mlx1NjU1NFx1NjU1Zlx1NjU2MFx1NjU2N1x1NjU2Ylx1NjU3YVx1NjU3ZFx1NjU4MVx1NjU4NVx1NjU4YVx1NjU5Mlx1NjU5NVx1NjU5OFx1NjU5ZFx1NjVhMFx1NjVhM1x1NjVhNlx1NjVhZVx1NjViMlx1NjViM1x1NjViNFx1NjViZlx1NjVjMlx1NjVjOFx1NjVjOVx1NjVjZVx1''@;'; put 'put ''NjVkMFx1NjVkNFx1NjVkNlx1NjVkOFx1NjVkZlx1NjVmMFx1NjVmMlx1NjVmNFx1NjVmNVx1NjVmOVx1NjVmZVx1NjVmZlx1NjYwMFx1NjYwNFx1NjYwOFx1NjYwOVx1NjYwZFx1NjYxMVx1NjYxMlx1NjYxNVx1NjYxNlx1NjYxZCJdLFsiOGZjMmExIiwiXHU2NjFlXHU2NjIxXHU2NjIyXHU2''@;'; put 'put ''NjIzXHU2NjI0XHU2NjI2XHU2NjI5XHU2NjJhXHU2NjJiXHU2NjJjXHU2NjJlXHU2NjMwXHU2NjMxXHU2NjMzXHU2NjM5XHU2NjM3XHU2NjQwXHU2NjQ1XHU2NjQ2XHU2NjRhXHU2NjRjXHU2NjUxXHU2NjRlXHU2NjU3XHU2NjU4XHU2NjU5XHU2NjViXHU2NjVjXHU2NjYwXHU2NjYxXHU2NmZi''@;'; put 'put ''XHU2NjZhXHU2NjZiXHU2NjZjXHU2NjdlXHU2NjczXHU2Njc1XHU2NjdmXHU2Njc3XHU2Njc4XHU2Njc5XHU2NjdiXHU2NjgwXHU2NjdjXHU2NjhiXHU2NjhjXHU2NjhkXHU2NjkwXHU2NjkyXHU2Njk5XHU2NjlhXHU2NjliXHU2NjljXHU2NjlmXHU2NmEwXHU2NmE0XHU2NmFkXHU2NmIxXHU2''@;'; put 'put ''NmIyXHU2NmI1XHU2NmJiXHU2NmJmXHU2NmMwXHU2NmMyXHU2NmMzXHU2NmM4XHU2NmNjXHU2NmNlXHU2NmNmXHU2NmQ0XHU2NmRiXHU2NmRmXHU2NmU4XHU2NmViXHU2NmVjXHU2NmVlXHU2NmZhXHU2NzA1XHU2NzA3XHU2NzBlXHU2NzEzXHU2NzE5XHU2NzFjXHU2NzIwXHU2NzIyXHU2NzMz''@;'; put 'put ''XHU2NzNlXHU2NzQ1XHU2NzQ3XHU2NzQ4XHU2NzRjXHU2NzU0XHU2NzU1XHU2NzVkIl0sWyI4ZmMzYTEiLCJcdTY3NjZcdTY3NmNcdTY3NmVcdTY3NzRcdTY3NzZcdTY3N2JcdTY3ODFcdTY3ODRcdTY3OGVcdTY3OGZcdTY3OTFcdTY3OTNcdTY3OTZcdTY3OThcdTY3OTlcdTY3OWJcdTY3YjBc''@;'; put 'put ''dTY3YjFcdTY3YjJcdTY3YjVcdTY3YmJcdTY3YmNcdTY3YmRcdTY3ZjlcdTY3YzBcdTY3YzJcdTY3YzNcdTY3YzVcdTY3YzhcdTY3YzlcdTY3ZDJcdTY3ZDdcdTY3ZDlcdTY3ZGNcdTY3ZTFcdTY3ZTZcdTY3ZjBcdTY3ZjJcdTY3ZjZcdTY3ZjdcdTY4NTJcdTY4MTRcdTY4MTlcdTY4MWRcdTY4''@;'; put 'put ''MWZcdTY4MjhcdTY4MjdcdTY4MmNcdTY4MmRcdTY4MmZcdTY4MzBcdTY4MzFcdTY4MzNcdTY4M2JcdTY4M2ZcdTY4NDRcdTY4NDVcdTY4NGFcdTY4NGNcdTY4NTVcdTY4NTdcdTY4NThcdTY4NWJcdTY4NmJcdTY4NmUiLDQsIlx1Njg3NVx1Njg3OVx1Njg3YVx1Njg3Ylx1Njg3Y1x1Njg4Mlx1''@;'; put 'put ''Njg4NFx1Njg4Nlx1Njg4OFx1Njg5Nlx1Njg5OFx1Njg5YVx1Njg5Y1x1NjhhMVx1NjhhM1x1NjhhNVx1NjhhOVx1NjhhYVx1NjhhZVx1NjhiMlx1NjhiYlx1NjhjNVx1NjhjOFx1NjhjY1x1NjhjZiJdLFsiOGZjNGExIiwiXHU2OGQwXHU2OGQxXHU2OGQzXHU2OGQ2XHU2OGQ5XHU2OGRjXHU2''@;'; put 'put ''OGRkXHU2OGU1XHU2OGU4XHU2OGVhXHU2OGViXHU2OGVjXHU2OGVkXHU2OGYwXHU2OGYxXHU2OGY1XHU2OGY2XHU2OGZiXHU2OGZjXHU2OGZkXHU2OTA2XHU2OTA5XHU2OTBhXHU2OTEwXHU2OTExXHU2OTEzXHU2OTE2XHU2OTE3XHU2OTMxXHU2OTMzXHU2OTM1XHU2OTM4XHU2OTNiXHU2OTQy''@;'; put 'put ''XHU2OTQ1XHU2OTQ5XHU2OTRlXHU2OTU3XHU2OTViXHU2OTYzXHU2OTY0XHU2OTY1XHU2OTY2XHU2OTY4XHU2OTY5XHU2OTZjXHU2OTcwXHU2OTcxXHU2OTcyXHU2OTdhXHU2OTdiXHU2OTdmXHU2OTgwXHU2OThkXHU2OTkyXHU2OTk2XHU2OTk4XHU2OWExXHU2OWE1XHU2OWE2XHU2OWE4XHU2''@;'; put 'put ''OWFiXHU2OWFkXHU2OWFmXHU2OWI3XHU2OWI4XHU2OWJhXHU2OWJjXHU2OWM1XHU2OWM4XHU2OWQxXHU2OWQ2XHU2OWQ3XHU2OWUyXHU2OWU1XHU2OWVlXHU2OWVmXHU2OWYxXHU2OWYzXHU2OWY1XHU2OWZlXHU2YTAwXHU2YTAxXHU2YTAzXHU2YTBmXHU2YTExXHU2YTE1XHU2YTFhXHU2YTFk''@;'; put 'put ''XHU2YTIwXHU2YTI0XHU2YTI4XHU2YTMwXHU2YTMyIl0sWyI4ZmM1YTEiLCJcdTZhMzRcdTZhMzdcdTZhM2JcdTZhM2VcdTZhM2ZcdTZhNDVcdTZhNDZcdTZhNDlcdTZhNGFcdTZhNGVcdTZhNTBcdTZhNTFcdTZhNTJcdTZhNTVcdTZhNTZcdTZhNWJcdTZhNjRcdTZhNjdcdTZhNmFcdTZhNzFc''@;'; put 'put ''dTZhNzNcdTZhN2VcdTZhODFcdTZhODNcdTZhODZcdTZhODdcdTZhODlcdTZhOGJcdTZhOTFcdTZhOWJcdTZhOWRcdTZhOWVcdTZhOWZcdTZhYTVcdTZhYWJcdTZhYWZcdTZhYjBcdTZhYjFcdTZhYjRcdTZhYmRcdTZhYmVcdTZhYmZcdTZhYzZcdTZhYzlcdTZhYzhcdTZhY2NcdTZhZDBcdTZh''@;'; put 'put ''ZDRcdTZhZDVcdTZhZDZcdTZhZGNcdTZhZGRcdTZhZTRcdTZhZTdcdTZhZWNcdTZhZjBcdTZhZjFcdTZhZjJcdTZhZmNcdTZhZmRcdTZiMDJcdTZiMDNcdTZiMDZcdTZiMDdcdTZiMDlcdTZiMGZcdTZiMTBcdTZiMTFcdTZiMTdcdTZiMWJcdTZiMWVcdTZiMjRcdTZiMjhcdTZiMmJcdTZiMmNc''@;'; put 'put ''dTZiMmZcdTZiMzVcdTZiMzZcdTZiM2JcdTZiM2ZcdTZiNDZcdTZiNGFcdTZiNGRcdTZiNTJcdTZiNTZcdTZiNThcdTZiNWRcdTZiNjBcdTZiNjdcdTZiNmJcdTZiNmVcdTZiNzBcdTZiNzVcdTZiN2QiXSxbIjhmYzZhMSIsIlx1NmI3ZVx1NmI4Mlx1NmI4NVx1NmI5N1x1NmI5Ylx1NmI5Zlx1''@;'; put 'put ''NmJhMFx1NmJhMlx1NmJhM1x1NmJhOFx1NmJhOVx1NmJhY1x1NmJhZFx1NmJhZVx1NmJiMFx1NmJiOFx1NmJiOVx1NmJiZFx1NmJiZVx1NmJjM1x1NmJjNFx1NmJjOVx1NmJjY1x1NmJkNlx1NmJkYVx1NmJlMVx1NmJlM1x1NmJlNlx1NmJlN1x1NmJlZVx1NmJmMVx1NmJmN1x1NmJmOVx1NmJm''@;'; put 'put ''Zlx1NmMwMlx1NmMwNFx1NmMwNVx1NmMwOVx1NmMwZFx1NmMwZVx1NmMxMFx1NmMxMlx1NmMxOVx1NmMxZlx1NmMyNlx1NmMyN1x1NmMyOFx1NmMyY1x1NmMyZVx1NmMzM1x1NmMzNVx1NmMzNlx1NmMzYVx1NmMzYlx1NmMzZlx1NmM0YVx1NmM0Ylx1NmM0ZFx1NmM0Zlx1NmM1Mlx1NmM1NFx1''@;'; put 'put ''NmM1OVx1NmM1Ylx1NmM1Y1x1NmM2Ylx1NmM2ZFx1NmM2Zlx1NmM3NFx1NmM3Nlx1NmM3OFx1NmM3OVx1NmM3Ylx1NmM4NVx1NmM4Nlx1NmM4N1x1NmM4OVx1NmM5NFx1NmM5NVx1NmM5N1x1NmM5OFx1NmM5Y1x1NmM5Zlx1NmNiMFx1NmNiMlx1NmNiNFx1NmNjMlx1NmNjNlx1NmNjZFx1NmNj''@;'; put 'put ''Zlx1NmNkMFx1NmNkMVx1NmNkMlx1NmNkNFx1NmNkNiJdLFsiOGZjN2ExIiwiXHU2Y2RhXHU2Y2RjXHU2Y2UwXHU2Y2U3XHU2Y2U5XHU2Y2ViXHU2Y2VjXHU2Y2VlXHU2Y2YyXHU2Y2Y0XHU2ZDA0XHU2ZDA3XHU2ZDBhXHU2ZDBlXHU2ZDBmXHU2ZDExXHU2ZDEzXHU2ZDFhXHU2ZDI2XHU2ZDI3''@;'; put 'put ''XHU2ZDI4XHU2YzY3XHU2ZDJlXHU2ZDJmXHU2ZDMxXHU2ZDM5XHU2ZDNjXHU2ZDNmXHU2ZDU3XHU2ZDVlXHU2ZDVmXHU2ZDYxXHU2ZDY1XHU2ZDY3XHU2ZDZmXHU2ZDcwXHU2ZDdjXHU2ZDgyXHU2ZDg3XHU2ZDkxXHU2ZDkyXHU2ZDk0XHU2ZDk2XHU2ZDk3XHU2ZDk4XHU2ZGFhXHU2ZGFjXHU2''@;'; put 'put ''ZGI0XHU2ZGI3XHU2ZGI5XHU2ZGJkXHU2ZGJmXHU2ZGM0XHU2ZGM4XHU2ZGNhXHU2ZGNlXHU2ZGNmXHU2ZGQ2XHU2ZGRiXHU2ZGRkXHU2ZGRmXHU2ZGUwXHU2ZGUyXHU2ZGU1XHU2ZGU5XHU2ZGVmXHU2ZGYwXHU2ZGY0XHU2ZGY2XHU2ZGZjXHU2ZTAwXHU2ZTA0XHU2ZTFlXHU2ZTIyXHU2ZTI3''@;'; put 'put ''XHU2ZTMyXHU2ZTM2XHU2ZTM5XHU2ZTNiXHU2ZTNjXHU2ZTQ0XHU2ZTQ1XHU2ZTQ4XHU2ZTQ5XHU2ZTRiXHU2ZTRmXHU2ZTUxXHU2ZTUyXHU2ZTUzXHU2ZTU0XHU2ZTU3XHU2ZTVjXHU2ZTVkXHU2ZTVlIl0sWyI4ZmM4YTEiLCJcdTZlNjJcdTZlNjNcdTZlNjhcdTZlNzNcdTZlN2JcdTZlN2Rc''@;'; put 'put ''dTZlOGRcdTZlOTNcdTZlOTlcdTZlYTBcdTZlYTdcdTZlYWRcdTZlYWVcdTZlYjFcdTZlYjNcdTZlYmJcdTZlYmZcdTZlYzBcdTZlYzFcdTZlYzNcdTZlYzdcdTZlYzhcdTZlY2FcdTZlY2RcdTZlY2VcdTZlY2ZcdTZlZWJcdTZlZWRcdTZlZWVcdTZlZjlcdTZlZmJcdTZlZmRcdTZmMDRcdTZm''@;'; put 'put ''MDhcdTZmMGFcdTZmMGNcdTZmMGRcdTZmMTZcdTZmMThcdTZmMWFcdTZmMWJcdTZmMjZcdTZmMjlcdTZmMmFcdTZmMmZcdTZmMzBcdTZmMzNcdTZmMzZcdTZmM2JcdTZmM2NcdTZmMmRcdTZmNGZcdTZmNTFcdTZmNTJcdTZmNTNcdTZmNTdcdTZmNTlcdTZmNWFcdTZmNWRcdTZmNWVcdTZmNjFc''@;'; put 'put ''dTZmNjJcdTZmNjhcdTZmNmNcdTZmN2RcdTZmN2VcdTZmODNcdTZmODdcdTZmODhcdTZmOGJcdTZmOGNcdTZmOGRcdTZmOTBcdTZmOTJcdTZmOTNcdTZmOTRcdTZmOTZcdTZmOWFcdTZmOWZcdTZmYTBcdTZmYTVcdTZmYTZcdTZmYTdcdTZmYThcdTZmYWVcdTZmYWZcdTZmYjBcdTZmYjVcdTZm''@;'; put 'put ''YjZcdTZmYmNcdTZmYzVcdTZmYzdcdTZmYzhcdTZmY2EiXSxbIjhmYzlhMSIsIlx1NmZkYVx1NmZkZVx1NmZlOFx1NmZlOVx1NmZmMFx1NmZmNVx1NmZmOVx1NmZmY1x1NmZmZFx1NzAwMFx1NzAwNVx1NzAwNlx1NzAwN1x1NzAwZFx1NzAxN1x1NzAyMFx1NzAyM1x1NzAyZlx1NzAzNFx1NzAz''@;'; put 'put ''N1x1NzAzOVx1NzAzY1x1NzA0M1x1NzA0NFx1NzA0OFx1NzA0OVx1NzA0YVx1NzA0Ylx1NzA1NFx1NzA1NVx1NzA1ZFx1NzA1ZVx1NzA0ZVx1NzA2NFx1NzA2NVx1NzA2Y1x1NzA2ZVx1NzA3NVx1NzA3Nlx1NzA3ZVx1NzA4MVx1NzA4NVx1NzA4Nlx1NzA5NCIsNCwiXHU3MDliXHU3MGE0XHU3''@;'; put 'put ''MGFiXHU3MGIwXHU3MGIxXHU3MGI0XHU3MGI3XHU3MGNhXHU3MGQxXHU3MGQzXHU3MGQ0XHU3MGQ1XHU3MGQ2XHU3MGQ4XHU3MGRjXHU3MGU0XHU3MGZhXHU3MTAzIiw0LCJcdTcxMGJcdTcxMGNcdTcxMGZcdTcxMWVcdTcxMjBcdTcxMmJcdTcxMmRcdTcxMmZcdTcxMzBcdTcxMzFcdTcxMzhc''@;'; put 'put ''dTcxNDFcdTcxNDVcdTcxNDZcdTcxNDdcdTcxNGFcdTcxNGJcdTcxNTBcdTcxNTJcdTcxNTdcdTcxNWFcdTcxNWNcdTcxNWVcdTcxNjAiXSxbIjhmY2FhMSIsIlx1NzE2OFx1NzE3OVx1NzE4MFx1NzE4NVx1NzE4N1x1NzE4Y1x1NzE5Mlx1NzE5YVx1NzE5Ylx1NzFhMFx1NzFhMlx1NzFhZlx1''@;'; put 'put ''NzFiMFx1NzFiMlx1NzFiM1x1NzFiYVx1NzFiZlx1NzFjMFx1NzFjMVx1NzFjNFx1NzFjYlx1NzFjY1x1NzFkM1x1NzFkNlx1NzFkOVx1NzFkYVx1NzFkY1x1NzFmOFx1NzFmZVx1NzIwMFx1NzIwN1x1NzIwOFx1NzIwOVx1NzIxM1x1NzIxN1x1NzIxYVx1NzIxZFx1NzIxZlx1NzIyNFx1NzIy''@;'; put 'put ''Ylx1NzIyZlx1NzIzNFx1NzIzOFx1NzIzOVx1NzI0MVx1NzI0Mlx1NzI0M1x1NzI0NVx1NzI0ZVx1NzI0Zlx1NzI1MFx1NzI1M1x1NzI1NVx1NzI1Nlx1NzI1YVx1NzI1Y1x1NzI1ZVx1NzI2MFx1NzI2M1x1NzI2OFx1NzI2Ylx1NzI2ZVx1NzI2Zlx1NzI3MVx1NzI3N1x1NzI3OFx1NzI3Ylx1''@;'; put 'put ''NzI3Y1x1NzI3Zlx1NzI4NFx1NzI4OVx1NzI4ZFx1NzI4ZVx1NzI5M1x1NzI5Ylx1NzJhOFx1NzJhZFx1NzJhZVx1NzJiMVx1NzJiNFx1NzJiZVx1NzJjMVx1NzJjN1x1NzJjOVx1NzJjY1x1NzJkNVx1NzJkNlx1NzJkOFx1NzJkZlx1NzJlNVx1NzJmM1x1NzJmNFx1NzJmYVx1NzJmYiJdLFsi''@;'; put 'put ''OGZjYmExIiwiXHU3MmZlXHU3MzAyXHU3MzA0XHU3MzA1XHU3MzA3XHU3MzBiXHU3MzBkXHU3MzEyXHU3MzEzXHU3MzE4XHU3MzE5XHU3MzFlXHU3MzIyXHU3MzI0XHU3MzI3XHU3MzI4XHU3MzJjXHU3MzMxXHU3MzMyXHU3MzM1XHU3MzNhXHU3MzNiXHU3MzNkXHU3MzQzXHU3MzRkXHU3MzUw''@;'; put 'put ''XHU3MzUyXHU3MzU2XHU3MzU4XHU3MzVkXHU3MzVlXHU3MzVmXHU3MzYwXHU3MzY2XHU3MzY3XHU3MzY5XHU3MzZiXHU3MzZjXHU3MzZlXHU3MzZmXHU3MzcxXHU3Mzc3XHU3Mzc5XHU3MzdjXHU3MzgwXHU3MzgxXHU3MzgzXHU3Mzg1XHU3Mzg2XHU3MzhlXHU3MzkwXHU3MzkzXHU3Mzk1XHU3''@;'; put 'put ''Mzk3XHU3Mzk4XHU3MzljXHU3MzllXHU3MzlmXHU3M2EwXHU3M2EyXHU3M2E1XHU3M2E2XHU3M2FhXHU3M2FiXHU3M2FkXHU3M2I1XHU3M2I3XHU3M2I5XHU3M2JjXHU3M2JkXHU3M2JmXHU3M2M1XHU3M2M2XHU3M2M5XHU3M2NiXHU3M2NjXHU3M2NmXHU3M2QyXHU3M2QzXHU3M2Q2XHU3M2Q5''@;'; put 'put ''XHU3M2RkXHU3M2UxXHU3M2UzXHU3M2U2XHU3M2U3XHU3M2U5XHU3M2Y0XHU3M2Y1XHU3M2Y3XHU3M2Y5XHU3M2ZhXHU3M2ZiXHU3M2ZkIl0sWyI4ZmNjYTEiLCJcdTczZmZcdTc0MDBcdTc0MDFcdTc0MDRcdTc0MDdcdTc0MGFcdTc0MTFcdTc0MWFcdTc0MWJcdTc0MjRcdTc0MjZcdTc0Mjgi''@;'; put 'put ''LDksIlx1NzQzOVx1NzQ0MFx1NzQ0M1x1NzQ0NFx1NzQ0Nlx1NzQ0N1x1NzQ0Ylx1NzQ0ZFx1NzQ1MVx1NzQ1Mlx1NzQ1N1x1NzQ1ZFx1NzQ2Mlx1NzQ2Nlx1NzQ2N1x1NzQ2OFx1NzQ2Ylx1NzQ2ZFx1NzQ2ZVx1NzQ3MVx1NzQ3Mlx1NzQ4MFx1NzQ4MVx1NzQ4NVx1NzQ4Nlx1NzQ4N1x1NzQ4''@;'; put 'put ''OVx1NzQ4Zlx1NzQ5MFx1NzQ5MVx1NzQ5Mlx1NzQ5OFx1NzQ5OVx1NzQ5YVx1NzQ5Y1x1NzQ5Zlx1NzRhMFx1NzRhMVx1NzRhM1x1NzRhNlx1NzRhOFx1NzRhOVx1NzRhYVx1NzRhYlx1NzRhZVx1NzRhZlx1NzRiMVx1NzRiMlx1NzRiNVx1NzRiOVx1NzRiYlx1NzRiZlx1NzRjOFx1NzRjOVx1''@;'; put 'put ''NzRjY1x1NzRkMFx1NzRkM1x1NzRkOFx1NzRkYVx1NzRkYlx1NzRkZVx1NzRkZlx1NzRlNFx1NzRlOFx1NzRlYVx1NzRlYlx1NzRlZlx1NzRmNFx1NzRmYVx1NzRmYlx1NzRmY1x1NzRmZlx1NzUwNiJdLFsiOGZjZGExIiwiXHU3NTEyXHU3NTE2XHU3NTE3XHU3NTIwXHU3NTIxXHU3NTI0XHU3''@;'; put 'put ''NTI3XHU3NTI5XHU3NTJhXHU3NTJmXHU3NTM2XHU3NTM5XHU3NTNkXHU3NTNlXHU3NTNmXHU3NTQwXHU3NTQzXHU3NTQ3XHU3NTQ4XHU3NTRlXHU3NTUwXHU3NTUyXHU3NTU3XHU3NTVlXHU3NTVmXHU3NTYxXHU3NTZmXHU3NTcxXHU3NTc5Iiw1LCJcdTc1ODFcdTc1ODVcdTc1OTBcdTc1OTJc''@;'; put 'put ''dTc1OTNcdTc1OTVcdTc1OTlcdTc1OWNcdTc1YTJcdTc1YTRcdTc1YjRcdTc1YmFcdTc1YmZcdTc1YzBcdTc1YzFcdTc1YzRcdTc1YzZcdTc1Y2NcdTc1Y2VcdTc1Y2ZcdTc1ZDdcdTc1ZGNcdTc1ZGZcdTc1ZTBcdTc1ZTFcdTc1ZTRcdTc1ZTdcdTc1ZWNcdTc1ZWVcdTc1ZWZcdTc1ZjFcdTc1''@;'; put 'put ''ZjlcdTc2MDBcdTc2MDJcdTc2MDNcdTc2MDRcdTc2MDdcdTc2MDhcdTc2MGFcdTc2MGNcdTc2MGZcdTc2MTJcdTc2MTNcdTc2MTVcdTc2MTZcdTc2MTlcdTc2MWJcdTc2MWNcdTc2MWRcdTc2MWVcdTc2MjNcdTc2MjVcdTc2MjZcdTc2MjlcdTc2MmRcdTc2MzJcdTc2MzNcdTc2MzVcdTc2Mzhc''@;'; put 'put ''dTc2MzkiXSxbIjhmY2VhMSIsIlx1NzYzYVx1NzYzY1x1NzY0YVx1NzY0MFx1NzY0MVx1NzY0M1x1NzY0NFx1NzY0NVx1NzY0OVx1NzY0Ylx1NzY1NVx1NzY1OVx1NzY1Zlx1NzY2NFx1NzY2NVx1NzY2ZFx1NzY2ZVx1NzY2Zlx1NzY3MVx1NzY3NFx1NzY4MVx1NzY4NVx1NzY4Y1x1NzY4ZFx1''@;'; put 'put ''NzY5NVx1NzY5Ylx1NzY5Y1x1NzY5ZFx1NzY5Zlx1NzZhMFx1NzZhMiIsNiwiXHU3NmFhXHU3NmFkXHU3NmJkXHU3NmMxXHU3NmM1XHU3NmM5XHU3NmNiXHU3NmNjXHU3NmNlXHU3NmQ0XHU3NmQ5XHU3NmUwXHU3NmU2XHU3NmU4XHU3NmVjXHU3NmYwXHU3NmYxXHU3NmY2XHU3NmY5XHU3NmZj''@;'; put 'put ''XHU3NzAwXHU3NzA2XHU3NzBhXHU3NzBlXHU3NzEyXHU3NzE0XHU3NzE1XHU3NzE3XHU3NzE5XHU3NzFhXHU3NzFjXHU3NzIyXHU3NzI4XHU3NzJkXHU3NzJlXHU3NzJmXHU3NzM0XHU3NzM1XHU3NzM2XHU3NzM5XHU3NzNkXHU3NzNlXHU3NzQyXHU3NzQ1XHU3NzQ2XHU3NzRhXHU3NzRkXHU3''@;'; put 'put ''NzRlXHU3NzRmXHU3NzUyXHU3NzU2XHU3NzU3XHU3NzVjXHU3NzVlXHU3NzVmXHU3NzYwXHU3NzYyIl0sWyI4ZmNmYTEiLCJcdTc3NjRcdTc3NjdcdTc3NmFcdTc3NmNcdTc3NzBcdTc3NzJcdTc3NzNcdTc3NzRcdTc3N2FcdTc3N2RcdTc3ODBcdTc3ODRcdTc3OGNcdTc3OGRcdTc3OTRcdTc3''@;'; put 'put ''OTVcdTc3OTZcdTc3OWFcdTc3OWZcdTc3YTJcdTc3YTdcdTc3YWFcdTc3YWVcdTc3YWZcdTc3YjFcdTc3YjVcdTc3YmVcdTc3YzNcdTc3YzlcdTc3ZDFcdTc3ZDJcdTc3ZDVcdTc3ZDlcdTc3ZGVcdTc3ZGZcdTc3ZTBcdTc3ZTRcdTc3ZTZcdTc3ZWFcdTc3ZWNcdTc3ZjBcdTc3ZjFcdTc3ZjRc''@;'; put 'put ''dTc3ZjhcdTc3ZmJcdTc4MDVcdTc4MDZcdTc4MDlcdTc4MGRcdTc4MGVcdTc4MTFcdTc4MWRcdTc4MjFcdTc4MjJcdTc4MjNcdTc4MmRcdTc4MmVcdTc4MzBcdTc4MzVcdTc4MzdcdTc4NDNcdTc4NDRcdTc4NDdcdTc4NDhcdTc4NGNcdTc4NGVcdTc4NTJcdTc4NWNcdTc4NWVcdTc4NjBcdTc4''@;'; put 'put ''NjFcdTc4NjNcdTc4NjRcdTc4NjhcdTc4NmFcdTc4NmVcdTc4N2FcdTc4N2VcdTc4OGFcdTc4OGZcdTc4OTRcdTc4OThcdTc4YTFcdTc4OWRcdTc4OWVcdTc4OWZcdTc4YTRcdTc4YThcdTc4YWNcdTc4YWRcdTc4YjBcdTc4YjFcdTc4YjJcdTc4YjMiXSxbIjhmZDBhMSIsIlx1NzhiYlx1Nzhi''@;'; put 'put ''ZFx1NzhiZlx1NzhjN1x1NzhjOFx1NzhjOVx1NzhjY1x1NzhjZVx1NzhkMlx1NzhkM1x1NzhkNVx1NzhkNlx1NzhlNFx1NzhkYlx1NzhkZlx1NzhlMFx1NzhlMVx1NzhlNlx1NzhlYVx1NzhmMlx1NzhmM1x1NzkwMFx1NzhmNlx1NzhmN1x1NzhmYVx1NzhmYlx1NzhmZlx1NzkwNlx1NzkwY1x1''@;'; put 'put ''NzkxMFx1NzkxYVx1NzkxY1x1NzkxZVx1NzkxZlx1NzkyMFx1NzkyNVx1NzkyN1x1NzkyOVx1NzkyZFx1NzkzMVx1NzkzNFx1NzkzNVx1NzkzYlx1NzkzZFx1NzkzZlx1Nzk0NFx1Nzk0NVx1Nzk0Nlx1Nzk0YVx1Nzk0Ylx1Nzk0Zlx1Nzk1MVx1Nzk1NFx1Nzk1OFx1Nzk1Ylx1Nzk1Y1x1Nzk2''@;'; put 'put ''N1x1Nzk2OVx1Nzk2Ylx1Nzk3Mlx1Nzk3OVx1Nzk3Ylx1Nzk3Y1x1Nzk3ZVx1Nzk4Ylx1Nzk4Y1x1Nzk5MVx1Nzk5M1x1Nzk5NFx1Nzk5NVx1Nzk5Nlx1Nzk5OFx1Nzk5Ylx1Nzk5Y1x1NzlhMVx1NzlhOFx1NzlhOVx1NzlhYlx1NzlhZlx1NzliMVx1NzliNFx1NzliOFx1NzliYlx1NzljMlx1''@;'; put 'put ''NzljNFx1NzljN1x1NzljOFx1NzljYVx1NzljZlx1NzlkNFx1NzlkNlx1NzlkYVx1NzlkZFx1NzlkZSJdLFsiOGZkMWExIiwiXHU3OWUwXHU3OWUyXHU3OWU1XHU3OWVhXHU3OWViXHU3OWVkXHU3OWYxXHU3OWY4XHU3OWZjXHU3YTAyXHU3YTAzXHU3YTA3XHU3YTA5XHU3YTBhXHU3YTBjXHU3''@;'; put 'put ''YTExXHU3YTE1XHU3YTFiXHU3YTFlXHU3YTIxXHU3YTI3XHU3YTJiXHU3YTJkXHU3YTJmXHU3YTMwXHU3YTM0XHU3YTM1XHU3YTM4XHU3YTM5XHU3YTNhXHU3YTQ0XHU3YTQ1XHU3YTQ3XHU3YTQ4XHU3YTRjXHU3YTU1XHU3YTU2XHU3YTU5XHU3YTVjXHU3YTVkXHU3YTVmXHU3YTYwXHU3YTY1''@;'; put 'put ''XHU3YTY3XHU3YTZhXHU3YTZkXHU3YTc1XHU3YTc4XHU3YTdlXHU3YTgwXHU3YTgyXHU3YTg1XHU3YTg2XHU3YThhXHU3YThiXHU3YTkwXHU3YTkxXHU3YTk0XHU3YTllXHU3YWEwXHU3YWEzXHU3YWFjXHU3YWIzXHU3YWI1XHU3YWI5XHU3YWJiXHU3YWJjXHU3YWM2XHU3YWM5XHU3YWNjXHU3''@;'; put 'put ''YWNlXHU3YWQxXHU3YWRiXHU3YWU4XHU3YWU5XHU3YWViXHU3YWVjXHU3YWYxXHU3YWY0XHU3YWZiXHU3YWZkXHU3YWZlXHU3YjA3XHU3YjE0XHU3YjFmXHU3YjIzXHU3YjI3XHU3YjI5XHU3YjJhXHU3YjJiXHU3YjJkXHU3YjJlXHU3YjJmXHU3YjMwIl0sWyI4ZmQyYTEiLCJcdTdiMzFcdTdi''@;'; put 'put ''MzRcdTdiM2RcdTdiM2ZcdTdiNDBcdTdiNDFcdTdiNDdcdTdiNGVcdTdiNTVcdTdiNjBcdTdiNjRcdTdiNjZcdTdiNjlcdTdiNmFcdTdiNmRcdTdiNmZcdTdiNzJcdTdiNzNcdTdiNzdcdTdiODRcdTdiODlcdTdiOGVcdTdiOTBcdTdiOTFcdTdiOTZcdTdiOWJcdTdiOWVcdTdiYTBcdTdiYTVc''@;'; put 'put ''dTdiYWNcdTdiYWZcdTdiYjBcdTdiYjJcdTdiYjVcdTdiYjZcdTdiYmFcdTdiYmJcdTdiYmNcdTdiYmRcdTdiYzJcdTdiYzVcdTdiYzhcdTdiY2FcdTdiZDRcdTdiZDZcdTdiZDdcdTdiZDlcdTdiZGFcdTdiZGJcdTdiZThcdTdiZWFcdTdiZjJcdTdiZjRcdTdiZjVcdTdiZjhcdTdiZjlcdTdi''@;'; put 'put ''ZmFcdTdiZmNcdTdiZmVcdTdjMDFcdTdjMDJcdTdjMDNcdTdjMDRcdTdjMDZcdTdjMDlcdTdjMGJcdTdjMGNcdTdjMGVcdTdjMGZcdTdjMTlcdTdjMWJcdTdjMjBcdTdjMjVcdTdjMjZcdTdjMjhcdTdjMmNcdTdjMzFcdTdjMzNcdTdjMzRcdTdjMzZcdTdjMzlcdTdjM2FcdTdjNDZcdTdjNGFc''@;'; put 'put ''dTdjNTVcdTdjNTFcdTdjNTJcdTdjNTNcdTdjNTkiLDVdLFsiOGZkM2ExIiwiXHU3YzYxXHU3YzYzXHU3YzY3XHU3YzY5XHU3YzZkXHU3YzZlXHU3YzcwXHU3YzcyXHU3Yzc5XHU3YzdjXHU3YzdkXHU3Yzg2XHU3Yzg3XHU3YzhmXHU3Yzk0XHU3YzllXHU3Y2EwXHU3Y2E2XHU3Y2IwXHU3Y2I2''@;'; put 'put ''XHU3Y2I3XHU3Y2JhXHU3Y2JiXHU3Y2JjXHU3Y2JmXHU3Y2M0XHU3Y2M3XHU3Y2M4XHU3Y2M5XHU3Y2NkXHU3Y2NmXHU3Y2QzXHU3Y2Q0XHU3Y2Q1XHU3Y2Q3XHU3Y2Q5XHU3Y2RhXHU3Y2RkXHU3Y2U2XHU3Y2U5XHU3Y2ViXHU3Y2Y1XHU3ZDAzXHU3ZDA3XHU3ZDA4XHU3ZDA5XHU3ZDBmXHU3''@;'; put 'put ''ZDExXHU3ZDEyXHU3ZDEzXHU3ZDE2XHU3ZDFkXHU3ZDFlXHU3ZDIzXHU3ZDI2XHU3ZDJhXHU3ZDJkXHU3ZDMxXHU3ZDNjXHU3ZDNkXHU3ZDNlXHU3ZDQwXHU3ZDQxXHU3ZDQ3XHU3ZDQ4XHU3ZDRkXHU3ZDUxXHU3ZDUzXHU3ZDU3XHU3ZDU5XHU3ZDVhXHU3ZDVjXHU3ZDVkXHU3ZDY1XHU3ZDY3''@;'; put 'put ''XHU3ZDZhXHU3ZDcwXHU3ZDc4XHU3ZDdhXHU3ZDdiXHU3ZDdmXHU3ZDgxXHU3ZDgyXHU3ZDgzXHU3ZDg1XHU3ZDg2XHU3ZDg4XHU3ZDhiXHU3ZDhjXHU3ZDhkXHU3ZDkxXHU3ZDk2XHU3ZDk3XHU3ZDlkIl0sWyI4ZmQ0YTEiLCJcdTdkOWVcdTdkYTZcdTdkYTdcdTdkYWFcdTdkYjNcdTdkYjZc''@;'; put 'put ''dTdkYjdcdTdkYjlcdTdkYzIiLDQsIlx1N2RjY1x1N2RjZFx1N2RjZVx1N2RkN1x1N2RkOVx1N2UwMFx1N2RlMlx1N2RlNVx1N2RlNlx1N2RlYVx1N2RlYlx1N2RlZFx1N2RmMVx1N2RmNVx1N2RmNlx1N2RmOVx1N2RmYVx1N2UwOFx1N2UxMFx1N2UxMVx1N2UxNVx1N2UxN1x1N2UxY1x1N2Ux''@;'; put 'put ''ZFx1N2UyMFx1N2UyN1x1N2UyOFx1N2UyY1x1N2UyZFx1N2UyZlx1N2UzM1x1N2UzNlx1N2UzZlx1N2U0NFx1N2U0NVx1N2U0N1x1N2U0ZVx1N2U1MFx1N2U1Mlx1N2U1OFx1N2U1Zlx1N2U2MVx1N2U2Mlx1N2U2NVx1N2U2Ylx1N2U2ZVx1N2U2Zlx1N2U3M1x1N2U3OFx1N2U3ZVx1N2U4MVx1''@;'; put 'put ''N2U4Nlx1N2U4N1x1N2U4YVx1N2U4ZFx1N2U5MVx1N2U5NVx1N2U5OFx1N2U5YVx1N2U5ZFx1N2U5ZVx1N2YzY1x1N2YzYlx1N2YzZFx1N2YzZVx1N2YzZlx1N2Y0M1x1N2Y0NFx1N2Y0N1x1N2Y0Zlx1N2Y1Mlx1N2Y1M1x1N2Y1Ylx1N2Y1Y1x1N2Y1ZFx1N2Y2MVx1N2Y2M1x1N2Y2NFx1N2Y2''@;'; put 'put ''NVx1N2Y2Nlx1N2Y2ZCJdLFsiOGZkNWExIiwiXHU3ZjcxXHU3ZjdkXHU3ZjdlXHU3ZjdmXHU3ZjgwXHU3ZjhiXHU3ZjhkXHU3ZjhmXHU3ZjkwXHU3ZjkxXHU3Zjk2XHU3Zjk3XHU3ZjljXHU3ZmExXHU3ZmEyXHU3ZmE2XHU3ZmFhXHU3ZmFkXHU3ZmI0XHU3ZmJjXHU3ZmJmXHU3ZmMwXHU3ZmMz''@;'; put 'put ''XHU3ZmM4XHU3ZmNlXHU3ZmNmXHU3ZmRiXHU3ZmRmXHU3ZmUzXHU3ZmU1XHU3ZmU4XHU3ZmVjXHU3ZmVlXHU3ZmVmXHU3ZmYyXHU3ZmZhXHU3ZmZkXHU3ZmZlXHU3ZmZmXHU4MDA3XHU4MDA4XHU4MDBhXHU4MDBkXHU4MDBlXHU4MDBmXHU4MDExXHU4MDEzXHU4MDE0XHU4MDE2XHU4MDFkXHU4''@;'; put 'put ''MDFlXHU4MDFmXHU4MDIwXHU4MDI0XHU4MDI2XHU4MDJjXHU4MDJlXHU4MDMwXHU4MDM0XHU4MDM1XHU4MDM3XHU4MDM5XHU4MDNhXHU4MDNjXHU4MDNlXHU4MDQwXHU4MDQ0XHU4MDYwXHU4MDY0XHU4MDY2XHU4MDZkXHU4MDcxXHU4MDc1XHU4MDgxXHU4MDg4XHU4MDhlXHU4MDljXHU4MDll''@;'; put 'put ''XHU4MGE2XHU4MGE3XHU4MGFiXHU4MGI4XHU4MGI5XHU4MGM4XHU4MGNkXHU4MGNmXHU4MGQyXHU4MGQ0XHU4MGQ1XHU4MGQ3XHU4MGQ4XHU4MGUwXHU4MGVkXHU4MGVlIl0sWyI4ZmQ2YTEiLCJcdTgwZjBcdTgwZjJcdTgwZjNcdTgwZjZcdTgwZjlcdTgwZmFcdTgwZmVcdTgxMDNcdTgxMGJc''@;'; put 'put ''dTgxMTZcdTgxMTdcdTgxMThcdTgxMWNcdTgxMWVcdTgxMjBcdTgxMjRcdTgxMjdcdTgxMmNcdTgxMzBcdTgxMzVcdTgxM2FcdTgxM2NcdTgxNDVcdTgxNDdcdTgxNGFcdTgxNGNcdTgxNTJcdTgxNTdcdTgxNjBcdTgxNjFcdTgxNjdcdTgxNjhcdTgxNjlcdTgxNmRcdTgxNmZcdTgxNzdcdTgx''@;'; put 'put ''ODFcdTgxOTBcdTgxODRcdTgxODVcdTgxODZcdTgxOGJcdTgxOGVcdTgxOTZcdTgxOThcdTgxOWJcdTgxOWVcdTgxYTJcdTgxYWVcdTgxYjJcdTgxYjRcdTgxYmJcdTgxY2JcdTgxYzNcdTgxYzVcdTgxY2FcdTgxY2VcdTgxY2ZcdTgxZDVcdTgxZDdcdTgxZGJcdTgxZGRcdTgxZGVcdTgxZTFc''@;'; put 'put ''dTgxZTRcdTgxZWJcdTgxZWNcdTgxZjBcdTgxZjFcdTgxZjJcdTgxZjVcdTgxZjZcdTgxZjhcdTgxZjlcdTgxZmRcdTgxZmZcdTgyMDBcdTgyMDNcdTgyMGZcdTgyMTNcdTgyMTRcdTgyMTlcdTgyMWFcdTgyMWRcdTgyMjFcdTgyMjJcdTgyMjhcdTgyMzJcdTgyMzRcdTgyM2FcdTgyNDNcdTgy''@;'; put 'put ''NDRcdTgyNDVcdTgyNDYiXSxbIjhmZDdhMSIsIlx1ODI0Ylx1ODI0ZVx1ODI0Zlx1ODI1MVx1ODI1Nlx1ODI1Y1x1ODI2MFx1ODI2M1x1ODI2N1x1ODI2ZFx1ODI3NFx1ODI3Ylx1ODI3ZFx1ODI3Zlx1ODI4MFx1ODI4MVx1ODI4M1x1ODI4NFx1ODI4N1x1ODI4OVx1ODI4YVx1ODI4ZVx1ODI5''@;'; put 'put ''MVx1ODI5NFx1ODI5Nlx1ODI5OFx1ODI5YVx1ODI5Ylx1ODJhMFx1ODJhMVx1ODJhM1x1ODJhNFx1ODJhN1x1ODJhOFx1ODJhOVx1ODJhYVx1ODJhZVx1ODJiMFx1ODJiMlx1ODJiNFx1ODJiN1x1ODJiYVx1ODJiY1x1ODJiZVx1ODJiZlx1ODJjNlx1ODJkMFx1ODJkNVx1ODJkYVx1ODJlMFx1''@;'; put 'put ''ODJlMlx1ODJlNFx1ODJlOFx1ODJlYVx1ODJlZFx1ODJlZlx1ODJmNlx1ODJmN1x1ODJmZFx1ODJmZVx1ODMwMFx1ODMwMVx1ODMwN1x1ODMwOFx1ODMwYVx1ODMwYlx1ODM1NFx1ODMxYlx1ODMxZFx1ODMxZVx1ODMxZlx1ODMyMVx1ODMyMlx1ODMyY1x1ODMyZFx1ODMyZVx1ODMzMFx1ODMz''@;'; put 'put ''M1x1ODMzN1x1ODMzYVx1ODMzY1x1ODMzZFx1ODM0Mlx1ODM0M1x1ODM0NFx1ODM0N1x1ODM0ZFx1ODM0ZVx1ODM1MVx1ODM1NVx1ODM1Nlx1ODM1N1x1ODM3MFx1ODM3OCJdLFsiOGZkOGExIiwiXHU4MzdkXHU4MzdmXHU4MzgwXHU4MzgyXHU4Mzg0XHU4Mzg2XHU4MzhkXHU4MzkyXHU4Mzk0''@;'; put 'put ''XHU4Mzk1XHU4Mzk4XHU4Mzk5XHU4MzliXHU4MzljXHU4MzlkXHU4M2E2XHU4M2E3XHU4M2E5XHU4M2FjXHU4M2JlXHU4M2JmXHU4M2MwXHU4M2M3XHU4M2M5XHU4M2NmXHU4M2QwXHU4M2QxXHU4M2Q0XHU4M2RkXHU4MzUzXHU4M2U4XHU4M2VhXHU4M2Y2XHU4M2Y4XHU4M2Y5XHU4M2ZjXHU4''@;'; put 'put ''NDAxXHU4NDA2XHU4NDBhXHU4NDBmXHU4NDExXHU4NDE1XHU4NDE5XHU4M2FkXHU4NDJmXHU4NDM5XHU4NDQ1XHU4NDQ3XHU4NDQ4XHU4NDRhXHU4NDRkXHU4NDRmXHU4NDUxXHU4NDUyXHU4NDU2XHU4NDU4XHU4NDU5XHU4NDVhXHU4NDVjXHU4NDYwXHU4NDY0XHU4NDY1XHU4NDY3XHU4NDZh''@;'; put 'put ''XHU4NDcwXHU4NDczXHU4NDc0XHU4NDc2XHU4NDc4XHU4NDdjXHU4NDdkXHU4NDgxXHU4NDg1XHU4NDkyXHU4NDkzXHU4NDk1XHU4NDllXHU4NGE2XHU4NGE4XHU4NGE5XHU4NGFhXHU4NGFmXHU4NGIxXHU4NGI0XHU4NGJhXHU4NGJkXHU4NGJlXHU4NGMwXHU4NGMyXHU4NGM3XHU4NGM4XHU4''@;'; put 'put ''NGNjXHU4NGNmXHU4NGQzIl0sWyI4ZmQ5YTEiLCJcdTg0ZGNcdTg0ZTdcdTg0ZWFcdTg0ZWZcdTg0ZjBcdTg0ZjFcdTg0ZjJcdTg0ZjdcdTg1MzJcdTg0ZmFcdTg0ZmJcdTg0ZmRcdTg1MDJcdTg1MDNcdTg1MDdcdTg1MGNcdTg1MGVcdTg1MTBcdTg1MWNcdTg1MWVcdTg1MjJcdTg1MjNcdTg1''@;'; put 'put ''MjRcdTg1MjVcdTg1MjdcdTg1MmFcdTg1MmJcdTg1MmZcdTg1MzNcdTg1MzRcdTg1MzZcdTg1M2ZcdTg1NDZcdTg1NGYiLDQsIlx1ODU1Nlx1ODU1OVx1ODU1YyIsNiwiXHU4NTY0XHU4NTZiXHU4NTZmXHU4NTc5XHU4NTdhXHU4NTdiXHU4NTdkXHU4NTdmXHU4NTgxXHU4NTg1XHU4NTg2XHU4''@;'; put 'put ''NTg5XHU4NThiXHU4NThjXHU4NThmXHU4NTkzXHU4NTk4XHU4NTlkXHU4NTlmXHU4NWEwXHU4NWEyXHU4NWE1XHU4NWE3XHU4NWI0XHU4NWI2XHU4NWI3XHU4NWI4XHU4NWJjXHU4NWJkXHU4NWJlXHU4NWJmXHU4NWMyXHU4NWM3XHU4NWNhXHU4NWNiXHU4NWNlXHU4NWFkXHU4NWQ4XHU4NWRh''@;'; put 'put ''XHU4NWRmXHU4NWUwXHU4NWU2XHU4NWU4XHU4NWVkXHU4NWYzXHU4NWY2XHU4NWZjIl0sWyI4ZmRhYTEiLCJcdTg1ZmZcdTg2MDBcdTg2MDRcdTg2MDVcdTg2MGRcdTg2MGVcdTg2MTBcdTg2MTFcdTg2MTJcdTg2MThcdTg2MTlcdTg2MWJcdTg2MWVcdTg2MjFcdTg2MjdcdTg2MjlcdTg2MzZc''@;'; put 'put ''dTg2MzhcdTg2M2FcdTg2M2NcdTg2M2RcdTg2NDBcdTg2NDJcdTg2NDZcdTg2NTJcdTg2NTNcdTg2NTZcdTg2NTdcdTg2NThcdTg2NTlcdTg2NWRcdTg2NjAiLDQsIlx1ODY2OVx1ODY2Y1x1ODY2Zlx1ODY3NVx1ODY3Nlx1ODY3N1x1ODY3YVx1ODY4ZFx1ODY5MVx1ODY5Nlx1ODY5OFx1ODY5''@;'; put 'put ''YVx1ODY5Y1x1ODZhMVx1ODZhNlx1ODZhN1x1ODZhOFx1ODZhZFx1ODZiMVx1ODZiM1x1ODZiNFx1ODZiNVx1ODZiN1x1ODZiOFx1ODZiOVx1ODZiZlx1ODZjMFx1ODZjMVx1ODZjM1x1ODZjNVx1ODZkMVx1ODZkMlx1ODZkNVx1ODZkN1x1ODZkYVx1ODZkY1x1ODZlMFx1ODZlM1x1ODZlNVx1''@;'; put 'put ''ODZlN1x1ODY4OFx1ODZmYVx1ODZmY1x1ODZmZFx1ODcwNFx1ODcwNVx1ODcwN1x1ODcwYlx1ODcwZVx1ODcwZlx1ODcxMFx1ODcxM1x1ODcxNFx1ODcxOVx1ODcxZVx1ODcxZlx1ODcyMVx1ODcyMyJdLFsiOGZkYmExIiwiXHU4NzI4XHU4NzJlXHU4NzJmXHU4NzMxXHU4NzMyXHU4NzM5XHU4''@;'; put 'put ''NzNhXHU4NzNjXHU4NzNkXHU4NzNlXHU4NzQwXHU4NzQzXHU4NzQ1XHU4NzRkXHU4NzU4XHU4NzVkXHU4NzYxXHU4NzY0XHU4NzY1XHU4NzZmXHU4NzcxXHU4NzcyXHU4NzdiXHU4NzgzIiw2LCJcdTg3OGJcdTg3OGNcdTg3OTBcdTg3OTNcdTg3OTVcdTg3OTdcdTg3OThcdTg3OTlcdTg3OWVc''@;'; put 'put ''dTg3YTBcdTg3YTNcdTg3YTdcdTg3YWNcdTg3YWRcdTg3YWVcdTg3YjFcdTg3YjVcdTg3YmVcdTg3YmZcdTg3YzFcdTg3YzhcdTg3YzlcdTg3Y2FcdTg3Y2VcdTg3ZDVcdTg3ZDZcdTg3ZDlcdTg3ZGFcdTg3ZGNcdTg3ZGZcdTg3ZTJcdTg3ZTNcdTg3ZTRcdTg3ZWFcdTg3ZWJcdTg3ZWRcdTg3''@;'; put 'put ''ZjFcdTg3ZjNcdTg3ZjhcdTg3ZmFcdTg3ZmZcdTg4MDFcdTg4MDNcdTg4MDZcdTg4MDlcdTg4MGFcdTg4MGJcdTg4MTBcdTg4MTlcdTg4MTJcdTg4MTNcdTg4MTRcdTg4MThcdTg4MWFcdTg4MWJcdTg4MWNcdTg4MWVcdTg4MWZcdTg4MjhcdTg4MmRcdTg4MmVcdTg4MzBcdTg4MzJcdTg4MzUi''@;'; put 'put ''XSxbIjhmZGNhMSIsIlx1ODgzYVx1ODgzY1x1ODg0MVx1ODg0M1x1ODg0NVx1ODg0OFx1ODg0OVx1ODg0YVx1ODg0Ylx1ODg0ZVx1ODg1MVx1ODg1NVx1ODg1Nlx1ODg1OFx1ODg1YVx1ODg1Y1x1ODg1Zlx1ODg2MFx1ODg2NFx1ODg2OVx1ODg3MVx1ODg3OVx1ODg3Ylx1ODg4MFx1ODg5OFx1''@;'; put 'put ''ODg5YVx1ODg5Ylx1ODg5Y1x1ODg5Zlx1ODhhMFx1ODhhOFx1ODhhYVx1ODhiYVx1ODhiZFx1ODhiZVx1ODhjMFx1ODhjYSIsNCwiXHU4OGQxXHU4OGQyXHU4OGQzXHU4OGRiXHU4OGRlXHU4OGU3XHU4OGVmXHU4OGYwXHU4OGYxXHU4OGY1XHU4OGY3XHU4OTAxXHU4OTA2XHU4OTBkXHU4OTBl''@;'; put 'put ''XHU4OTBmXHU4OTE1XHU4OTE2XHU4OTE4XHU4OTE5XHU4OTFhXHU4OTFjXHU4OTIwXHU4OTI2XHU4OTI3XHU4OTI4XHU4OTMwXHU4OTMxXHU4OTMyXHU4OTM1XHU4OTM5XHU4OTNhXHU4OTNlXHU4OTQwXHU4OTQyXHU4OTQ1XHU4OTQ2XHU4OTQ5XHU4OTRmXHU4OTUyXHU4OTU3XHU4OTVhXHU4''@;'; put 'put ''OTViXHU4OTVjXHU4OTYxXHU4OTYyXHU4OTYzXHU4OTZiXHU4OTZlXHU4OTcwXHU4OTczXHU4OTc1XHU4OTdhIl0sWyI4ZmRkYTEiLCJcdTg5N2JcdTg5N2NcdTg5N2RcdTg5ODlcdTg5OGRcdTg5OTBcdTg5OTRcdTg5OTVcdTg5OWJcdTg5OWNcdTg5OWZcdTg5YTBcdTg5YTVcdTg5YjBcdTg5''@;'; put 'put ''YjRcdTg5YjVcdTg5YjZcdTg5YjdcdTg5YmNcdTg5ZDQiLDQsIlx1ODllNVx1ODllOVx1ODllYlx1ODllZFx1ODlmMVx1ODlmM1x1ODlmNlx1ODlmOVx1ODlmZFx1ODlmZlx1OGEwNFx1OGEwNVx1OGEwN1x1OGEwZlx1OGExMVx1OGExMlx1OGExNFx1OGExNVx1OGExZVx1OGEyMFx1OGEyMlx1''@;'; put 'put ''OGEyNFx1OGEyNlx1OGEyYlx1OGEyY1x1OGEyZlx1OGEzNVx1OGEzN1x1OGEzZFx1OGEzZVx1OGE0MFx1OGE0M1x1OGE0NVx1OGE0N1x1OGE0OVx1OGE0ZFx1OGE0ZVx1OGE1M1x1OGE1Nlx1OGE1N1x1OGE1OFx1OGE1Y1x1OGE1ZFx1OGE2MVx1OGE2NVx1OGE2N1x1OGE3NVx1OGE3Nlx1OGE3''@;'; put 'put ''N1x1OGE3OVx1OGE3YVx1OGE3Ylx1OGE3ZVx1OGE3Zlx1OGE4MFx1OGE4M1x1OGE4Nlx1OGE4Ylx1OGE4Zlx1OGE5MFx1OGE5Mlx1OGE5Nlx1OGE5N1x1OGE5OVx1OGE5Zlx1OGFhN1x1OGFhOVx1OGFhZVx1OGFhZlx1OGFiMyJdLFsiOGZkZWExIiwiXHU4YWI2XHU4YWI3XHU4YWJiXHU4YWJl''@;'; put 'put ''XHU4YWMzXHU4YWM2XHU4YWM4XHU4YWM5XHU4YWNhXHU4YWQxXHU4YWQzXHU4YWQ0XHU4YWQ1XHU4YWQ3XHU4YWRkXHU4YWRmXHU4YWVjXHU4YWYwXHU4YWY0XHU4YWY1XHU4YWY2XHU4YWZjXHU4YWZmXHU4YjA1XHU4YjA2XHU4YjBiXHU4YjExXHU4YjFjXHU4YjFlXHU4YjFmXHU4YjBhXHU4''@;'; put 'put ''YjJkXHU4YjMwXHU4YjM3XHU4YjNjXHU4YjQyIiw0LCJcdThiNDhcdThiNTJcdThiNTNcdThiNTRcdThiNTlcdThiNGRcdThiNWVcdThiNjNcdThiNmRcdThiNzZcdThiNzhcdThiNzlcdThiN2NcdThiN2VcdThiODFcdThiODRcdThiODVcdThiOGJcdThiOGRcdThiOGZcdThiOTRcdThiOTVc''@;'; put 'put ''dThiOWNcdThiOWVcdThiOWZcdThjMzhcdThjMzlcdThjM2RcdThjM2VcdThjNDVcdThjNDdcdThjNDlcdThjNGJcdThjNGZcdThjNTFcdThjNTNcdThjNTRcdThjNTdcdThjNThcdThjNWJcdThjNWRcdThjNTlcdThjNjNcdThjNjRcdThjNjZcdThjNjhcdThjNjlcdThjNmRcdThjNzNcdThj''@;'; put 'put ''NzVcdThjNzZcdThjN2JcdThjN2VcdThjODYiXSxbIjhmZGZhMSIsIlx1OGM4N1x1OGM4Ylx1OGM5MFx1OGM5Mlx1OGM5M1x1OGM5OVx1OGM5Ylx1OGM5Y1x1OGNhNFx1OGNiOVx1OGNiYVx1OGNjNVx1OGNjNlx1OGNjOVx1OGNjYlx1OGNjZlx1OGNkNlx1OGNkNVx1OGNkOVx1OGNkZFx1OGNl''@;'; put 'put ''MVx1OGNlOFx1OGNlY1x1OGNlZlx1OGNmMFx1OGNmMlx1OGNmNVx1OGNmN1x1OGNmOFx1OGNmZVx1OGNmZlx1OGQwMVx1OGQwM1x1OGQwOVx1OGQxMlx1OGQxN1x1OGQxYlx1OGQ2NVx1OGQ2OVx1OGQ2Y1x1OGQ2ZVx1OGQ3Zlx1OGQ4Mlx1OGQ4NFx1OGQ4OFx1OGQ4ZFx1OGQ5MFx1OGQ5MVx1''@;'; put 'put ''OGQ5NVx1OGQ5ZVx1OGQ5Zlx1OGRhMFx1OGRhNlx1OGRhYlx1OGRhY1x1OGRhZlx1OGRiMlx1OGRiNVx1OGRiN1x1OGRiOVx1OGRiYlx1OGRjMFx1OGRjNVx1OGRjNlx1OGRjN1x1OGRjOFx1OGRjYVx1OGRjZVx1OGRkMVx1OGRkNFx1OGRkNVx1OGRkN1x1OGRkOVx1OGRlNFx1OGRlNVx1OGRl''@;'; put 'put ''N1x1OGRlY1x1OGRmMFx1OGRiY1x1OGRmMVx1OGRmMlx1OGRmNFx1OGRmZFx1OGUwMVx1OGUwNFx1OGUwNVx1OGUwNlx1OGUwYlx1OGUxMVx1OGUxNFx1OGUxNlx1OGUyMFx1OGUyMVx1OGUyMiJdLFsiOGZlMGExIiwiXHU4ZTIzXHU4ZTI2XHU4ZTI3XHU4ZTMxXHU4ZTMzXHU4ZTM2XHU4ZTM3''@;'; put 'put ''XHU4ZTM4XHU4ZTM5XHU4ZTNkXHU4ZTQwXHU4ZTQxXHU4ZTRiXHU4ZTRkXHU4ZTRlXHU4ZTRmXHU4ZTU0XHU4ZTViXHU4ZTVjXHU4ZTVkXHU4ZTVlXHU4ZTYxXHU4ZTYyXHU4ZTY5XHU4ZTZjXHU4ZTZkXHU4ZTZmXHU4ZTcwXHU4ZTcxXHU4ZTc5XHU4ZTdhXHU4ZTdiXHU4ZTgyXHU4ZTgzXHU4''@;'; put 'put ''ZTg5XHU4ZTkwXHU4ZTkyXHU4ZTk1XHU4ZTlhXHU4ZTliXHU4ZTlkXHU4ZTllXHU4ZWEyXHU4ZWE3XHU4ZWE5XHU4ZWFkXHU4ZWFlXHU4ZWIzXHU4ZWI1XHU4ZWJhXHU4ZWJiXHU4ZWMwXHU4ZWMxXHU4ZWMzXHU4ZWM0XHU4ZWM3XHU4ZWNmXHU4ZWQxXHU4ZWQ0XHU4ZWRjXHU4ZWU4XHU4ZWVl''@;'; put 'put ''XHU4ZWYwXHU4ZWYxXHU4ZWY3XHU4ZWY5XHU4ZWZhXHU4ZWVkXHU4ZjAwXHU4ZjAyXHU4ZjA3XHU4ZjA4XHU4ZjBmXHU4ZjEwXHU4ZjE2XHU4ZjE3XHU4ZjE4XHU4ZjFlXHU4ZjIwXHU4ZjIxXHU4ZjIzXHU4ZjI1XHU4ZjI3XHU4ZjI4XHU4ZjJjXHU4ZjJkXHU4ZjJlXHU4ZjM0XHU4ZjM1XHU4''@;'; put 'put ''ZjM2XHU4ZjM3XHU4ZjNhXHU4ZjQwXHU4ZjQxIl0sWyI4ZmUxYTEiLCJcdThmNDNcdThmNDdcdThmNGZcdThmNTEiLDQsIlx1OGY1OFx1OGY1ZFx1OGY1ZVx1OGY2NVx1OGY5ZFx1OGZhMFx1OGZhMVx1OGZhNFx1OGZhNVx1OGZhNlx1OGZiNVx1OGZiNlx1OGZiOFx1OGZiZVx1OGZjMFx1OGZj''@;'; put 'put ''MVx1OGZjNlx1OGZjYVx1OGZjYlx1OGZjZFx1OGZkMFx1OGZkMlx1OGZkM1x1OGZkNVx1OGZlMFx1OGZlM1x1OGZlNFx1OGZlOFx1OGZlZVx1OGZmMVx1OGZmNVx1OGZmNlx1OGZmYlx1OGZmZVx1OTAwMlx1OTAwNFx1OTAwOFx1OTAwY1x1OTAxOFx1OTAxYlx1OTAyOFx1OTAyOVx1OTAyZlx1''@;'; put 'put ''OTAyYVx1OTAyY1x1OTAyZFx1OTAzM1x1OTAzNFx1OTAzN1x1OTAzZlx1OTA0M1x1OTA0NFx1OTA0Y1x1OTA1Ylx1OTA1ZFx1OTA2Mlx1OTA2Nlx1OTA2N1x1OTA2Y1x1OTA3MFx1OTA3NFx1OTA3OVx1OTA4NVx1OTA4OFx1OTA4Ylx1OTA4Y1x1OTA4ZVx1OTA5MFx1OTA5NVx1OTA5N1x1OTA5''@;'; put 'put ''OFx1OTA5OVx1OTA5Ylx1OTBhMFx1OTBhMVx1OTBhMlx1OTBhNVx1OTBiMFx1OTBiMlx1OTBiM1x1OTBiNFx1OTBiNlx1OTBiZFx1OTBjY1x1OTBiZVx1OTBjMyJdLFsiOGZlMmExIiwiXHU5MGM0XHU5MGM1XHU5MGM3XHU5MGM4XHU5MGQ1XHU5MGQ3XHU5MGQ4XHU5MGQ5XHU5MGRjXHU5MGRk''@;'; put 'put ''XHU5MGRmXHU5MGU1XHU5MGQyXHU5MGY2XHU5MGViXHU5MGVmXHU5MGYwXHU5MGY0XHU5MGZlXHU5MGZmXHU5MTAwXHU5MTA0XHU5MTA1XHU5MTA2XHU5MTA4XHU5MTBkXHU5MTEwXHU5MTE0XHU5MTE2XHU5MTE3XHU5MTE4XHU5MTFhXHU5MTFjXHU5MTFlXHU5MTIwXHU5MTI1XHU5MTIyXHU5''@;'; put 'put ''MTIzXHU5MTI3XHU5MTI5XHU5MTJlXHU5MTJmXHU5MTMxXHU5MTM0XHU5MTM2XHU5MTM3XHU5MTM5XHU5MTNhXHU5MTNjXHU5MTNkXHU5MTQzXHU5MTQ3XHU5MTQ4XHU5MTRmXHU5MTUzXHU5MTU3XHU5MTU5XHU5MTVhXHU5MTViXHU5MTYxXHU5MTY0XHU5MTY3XHU5MTZkXHU5MTc0XHU5MTc5''@;'; put 'put ''XHU5MTdhXHU5MTdiXHU5MTgxXHU5MTgzXHU5MTg1XHU5MTg2XHU5MThhXHU5MThlXHU5MTkxXHU5MTkzXHU5MTk0XHU5MTk1XHU5MTk4XHU5MTllXHU5MWExXHU5MWE2XHU5MWE4XHU5MWFjXHU5MWFkXHU5MWFlXHU5MWIwXHU5MWIxXHU5MWIyXHU5MWIzXHU5MWI2XHU5MWJiXHU5MWJjXHU5''@;'; put 'put ''MWJkXHU5MWJmIl0sWyI4ZmUzYTEiLCJcdTkxYzJcdTkxYzNcdTkxYzVcdTkxZDNcdTkxZDRcdTkxZDdcdTkxZDlcdTkxZGFcdTkxZGVcdTkxZTRcdTkxZTVcdTkxZTlcdTkxZWFcdTkxZWMiLDUsIlx1OTFmN1x1OTFmOVx1OTFmYlx1OTFmZFx1OTIwMFx1OTIwMVx1OTIwNFx1OTIwNVx1OTIw''@;'; put 'put ''Nlx1OTIwN1x1OTIwOVx1OTIwYVx1OTIwY1x1OTIxMFx1OTIxMlx1OTIxM1x1OTIxNlx1OTIxOFx1OTIxY1x1OTIxZFx1OTIyM1x1OTIyNFx1OTIyNVx1OTIyNlx1OTIyOFx1OTIyZVx1OTIyZlx1OTIzMFx1OTIzM1x1OTIzNVx1OTIzNlx1OTIzOFx1OTIzOVx1OTIzYVx1OTIzY1x1OTIzZVx1''@;'; put 'put ''OTI0MFx1OTI0Mlx1OTI0M1x1OTI0Nlx1OTI0N1x1OTI0YVx1OTI0ZFx1OTI0ZVx1OTI0Zlx1OTI1MVx1OTI1OFx1OTI1OVx1OTI1Y1x1OTI1ZFx1OTI2MFx1OTI2MVx1OTI2NVx1OTI2N1x1OTI2OFx1OTI2OVx1OTI2ZVx1OTI2Zlx1OTI3MFx1OTI3NSIsNCwiXHU5MjdiXHU5MjdjXHU5Mjdk''@;'; put 'put ''XHU5MjdmXHU5Mjg4XHU5Mjg5XHU5MjhhXHU5MjhkXHU5MjhlXHU5MjkyXHU5Mjk3Il0sWyI4ZmU0YTEiLCJcdTkyOTlcdTkyOWZcdTkyYTBcdTkyYTRcdTkyYTVcdTkyYTdcdTkyYThcdTkyYWJcdTkyYWZcdTkyYjJcdTkyYjZcdTkyYjhcdTkyYmFcdTkyYmJcdTkyYmNcdTkyYmRcdTkyYmYi''@;'; put 'put ''LDQsIlx1OTJjNVx1OTJjNlx1OTJjN1x1OTJjOFx1OTJjYlx1OTJjY1x1OTJjZFx1OTJjZVx1OTJkMFx1OTJkM1x1OTJkNVx1OTJkN1x1OTJkOFx1OTJkOVx1OTJkY1x1OTJkZFx1OTJkZlx1OTJlMFx1OTJlMVx1OTJlM1x1OTJlNVx1OTJlN1x1OTJlOFx1OTJlY1x1OTJlZVx1OTJmMFx1OTJm''@;'; put 'put ''OVx1OTJmYlx1OTJmZlx1OTMwMFx1OTMwMlx1OTMwOFx1OTMwZFx1OTMxMVx1OTMxNFx1OTMxNVx1OTMxY1x1OTMxZFx1OTMxZVx1OTMxZlx1OTMyMVx1OTMyNFx1OTMyNVx1OTMyN1x1OTMyOVx1OTMyYVx1OTMzM1x1OTMzNFx1OTMzNlx1OTMzN1x1OTM0N1x1OTM0OFx1OTM0OVx1OTM1MFx1''@;'; put 'put ''OTM1MVx1OTM1Mlx1OTM1NVx1OTM1N1x1OTM1OFx1OTM1YVx1OTM1ZVx1OTM2NFx1OTM2NVx1OTM2N1x1OTM2OVx1OTM2YVx1OTM2ZFx1OTM2Zlx1OTM3MFx1OTM3MVx1OTM3M1x1OTM3NFx1OTM3NiJdLFsiOGZlNWExIiwiXHU5MzdhXHU5MzdkXHU5MzdmXHU5MzgwXHU5MzgxXHU5MzgyXHU5''@;'; put 'put ''Mzg4XHU5MzhhXHU5MzhiXHU5MzhkXHU5MzhmXHU5MzkyXHU5Mzk1XHU5Mzk4XHU5MzliXHU5MzllXHU5M2ExXHU5M2EzXHU5M2E0XHU5M2E2XHU5M2E4XHU5M2FiXHU5M2I0XHU5M2I1XHU5M2I2XHU5M2JhXHU5M2E5XHU5M2MxXHU5M2M0XHU5M2M1XHU5M2M2XHU5M2M3XHU5M2M5Iiw0LCJc''@;'; put 'put ''dTkzZDNcdTkzZDlcdTkzZGNcdTkzZGVcdTkzZGZcdTkzZTJcdTkzZTZcdTkzZTdcdTkzZjlcdTkzZjdcdTkzZjhcdTkzZmFcdTkzZmJcdTkzZmRcdTk0MDFcdTk0MDJcdTk0MDRcdTk0MDhcdTk0MDlcdTk0MGRcdTk0MGVcdTk0MGZcdTk0MTVcdTk0MTZcdTk0MTdcdTk0MWZcdTk0MmVcdTk0''@;'; put 'put ''MmZcdTk0MzFcdTk0MzJcdTk0MzNcdTk0MzRcdTk0M2JcdTk0M2ZcdTk0M2RcdTk0NDNcdTk0NDVcdTk0NDhcdTk0NGFcdTk0NGNcdTk0NTVcdTk0NTlcdTk0NWNcdTk0NWZcdTk0NjFcdTk0NjNcdTk0NjhcdTk0NmJcdTk0NmRcdTk0NmVcdTk0NmZcdTk0NzFcdTk0NzJcdTk0ODRcdTk0ODNc''@;'; put 'put ''dTk1NzhcdTk1NzkiXSxbIjhmZTZhMSIsIlx1OTU3ZVx1OTU4NFx1OTU4OFx1OTU4Y1x1OTU4ZFx1OTU4ZVx1OTU5ZFx1OTU5ZVx1OTU5Zlx1OTVhMVx1OTVhNlx1OTVhOVx1OTVhYlx1OTVhY1x1OTViNFx1OTViNlx1OTViYVx1OTViZFx1OTViZlx1OTVjNlx1OTVjOFx1OTVjOVx1OTVjYlx1''@;'; put 'put ''OTVkMFx1OTVkMVx1OTVkMlx1OTVkM1x1OTVkOVx1OTVkYVx1OTVkZFx1OTVkZVx1OTVkZlx1OTVlMFx1OTVlNFx1OTVlNlx1OTYxZFx1OTYxZVx1OTYyMlx1OTYyNFx1OTYyNVx1OTYyNlx1OTYyY1x1OTYzMVx1OTYzM1x1OTYzN1x1OTYzOFx1OTYzOVx1OTYzYVx1OTYzY1x1OTYzZFx1OTY0''@;'; put 'put ''MVx1OTY1Mlx1OTY1NFx1OTY1Nlx1OTY1N1x1OTY1OFx1OTY2MVx1OTY2ZVx1OTY3NFx1OTY3Ylx1OTY3Y1x1OTY3ZVx1OTY3Zlx1OTY4MVx1OTY4Mlx1OTY4M1x1OTY4NFx1OTY4OVx1OTY5MVx1OTY5Nlx1OTY5YVx1OTY5ZFx1OTY5Zlx1OTZhNFx1OTZhNVx1OTZhNlx1OTZhOVx1OTZhZVx1''@;'; put 'put ''OTZhZlx1OTZiM1x1OTZiYVx1OTZjYVx1OTZkMlx1NWRiMlx1OTZkOFx1OTZkYVx1OTZkZFx1OTZkZVx1OTZkZlx1OTZlOVx1OTZlZlx1OTZmMVx1OTZmYVx1OTcwMiJdLFsiOGZlN2ExIiwiXHU5NzAzXHU5NzA1XHU5NzA5XHU5NzFhXHU5NzFiXHU5NzFkXHU5NzIxXHU5NzIyXHU5NzIzXHU5''@;'; put 'put ''NzI4XHU5NzMxXHU5NzMzXHU5NzQxXHU5NzQzXHU5NzRhXHU5NzRlXHU5NzRmXHU5NzU1XHU5NzU3XHU5NzU4XHU5NzVhXHU5NzViXHU5NzYzXHU5NzY3XHU5NzZhXHU5NzZlXHU5NzczXHU5Nzc2XHU5Nzc3XHU5Nzc4XHU5NzdiXHU5NzdkXHU5NzdmXHU5NzgwXHU5Nzg5XHU5Nzk1XHU5Nzk2''@;'; put 'put ''XHU5Nzk3XHU5Nzk5XHU5NzlhXHU5NzllXHU5NzlmXHU5N2EyXHU5N2FjXHU5N2FlXHU5N2IxXHU5N2IyXHU5N2I1XHU5N2I2XHU5N2I4XHU5N2I5XHU5N2JhXHU5N2JjXHU5N2JlXHU5N2JmXHU5N2MxXHU5N2M0XHU5N2M1XHU5N2M3XHU5N2M5XHU5N2NhXHU5N2NjXHU5N2NkXHU5N2NlXHU5''@;'; put 'put ''N2QwXHU5N2QxXHU5N2Q0XHU5N2Q3XHU5N2Q4XHU5N2Q5XHU5N2RkXHU5N2RlXHU5N2UwXHU5N2RiXHU5N2UxXHU5N2U0XHU5N2VmXHU5N2YxXHU5N2Y0XHU5N2Y3XHU5N2Y4XHU5N2ZhXHU5ODA3XHU5ODBhXHU5ODE5XHU5ODBkXHU5ODBlXHU5ODE0XHU5ODE2XHU5ODFjXHU5ODFlXHU5ODIw''@;'; put 'put ''XHU5ODIzXHU5ODI2Il0sWyI4ZmU4YTEiLCJcdTk4MmJcdTk4MmVcdTk4MmZcdTk4MzBcdTk4MzJcdTk4MzNcdTk4MzVcdTk4MjVcdTk4M2VcdTk4NDRcdTk4NDdcdTk4NGFcdTk4NTFcdTk4NTJcdTk4NTNcdTk4NTZcdTk4NTdcdTk4NTlcdTk4NWFcdTk4NjJcdTk4NjNcdTk4NjVcdTk4NjZc''@;'; put 'put ''dTk4NmFcdTk4NmNcdTk4YWJcdTk4YWRcdTk4YWVcdTk4YjBcdTk4YjRcdTk4YjdcdTk4YjhcdTk4YmFcdTk4YmJcdTk4YmZcdTk4YzJcdTk4YzVcdTk4YzhcdTk4Y2NcdTk4ZTFcdTk4ZTNcdTk4ZTVcdTk4ZTZcdTk4ZTdcdTk4ZWFcdTk4ZjNcdTk4ZjZcdTk5MDJcdTk5MDdcdTk5MDhcdTk5''@;'; put 'put ''MTFcdTk5MTVcdTk5MTZcdTk5MTdcdTk5MWFcdTk5MWJcdTk5MWNcdTk5MWZcdTk5MjJcdTk5MjZcdTk5MjdcdTk5MmJcdTk5MzEiLDQsIlx1OTkzOVx1OTkzYVx1OTkzYlx1OTkzY1x1OTk0MFx1OTk0MVx1OTk0Nlx1OTk0N1x1OTk0OFx1OTk0ZFx1OTk0ZVx1OTk1NFx1OTk1OFx1OTk1OVx1''@;'; put 'put ''OTk1Ylx1OTk1Y1x1OTk1ZVx1OTk1Zlx1OTk2MFx1OTk5Ylx1OTk5ZFx1OTk5Zlx1OTlhNlx1OTliMFx1OTliMVx1OTliMlx1OTliNSJdLFsiOGZlOWExIiwiXHU5OWI5XHU5OWJhXHU5OWJkXHU5OWJmXHU5OWMzXHU5OWM5XHU5OWQzXHU5OWQ0XHU5OWQ5XHU5OWRhXHU5OWRjXHU5OWRlXHU5''@;'; put 'put ''OWU3XHU5OWVhXHU5OWViXHU5OWVjXHU5OWYwXHU5OWY0XHU5OWY1XHU5OWY5XHU5OWZkXHU5OWZlXHU5YTAyXHU5YTAzXHU5YTA0XHU5YTBiXHU5YTBjXHU5YTEwXHU5YTExXHU5YTE2XHU5YTFlXHU5YTIwXHU5YTIyXHU5YTIzXHU5YTI0XHU5YTI3XHU5YTJkXHU5YTJlXHU5YTMzXHU5YTM1''@;'; put 'put ''XHU5YTM2XHU5YTM4XHU5YTQ3XHU5YTQxXHU5YTQ0XHU5YTRhXHU5YTRiXHU5YTRjXHU5YTRlXHU5YTUxXHU5YTU0XHU5YTU2XHU5YTVkXHU5YWFhXHU5YWFjXHU5YWFlXHU5YWFmXHU5YWIyXHU5YWI0XHU5YWI1XHU5YWI2XHU5YWI5XHU5YWJiXHU5YWJlXHU5YWJmXHU5YWMxXHU5YWMzXHU5''@;'; put 'put ''YWM2XHU5YWM4XHU5YWNlXHU5YWQwXHU5YWQyXHU5YWQ1XHU5YWQ2XHU5YWQ3XHU5YWRiXHU5YWRjXHU5YWUwXHU5YWU0XHU5YWU1XHU5YWU3XHU5YWU5XHU5YWVjXHU5YWYyXHU5YWYzXHU5YWY1XHU5YWY5XHU5YWZhXHU5YWZkXHU5YWZmIiw0XSxbIjhmZWFhMSIsIlx1OWIwNFx1OWIwNVx1''@;'; put 'put ''OWIwOFx1OWIwOVx1OWIwYlx1OWIwY1x1OWIwZFx1OWIwZVx1OWIxMFx1OWIxMlx1OWIxNlx1OWIxOVx1OWIxYlx1OWIxY1x1OWIyMFx1OWIyNlx1OWIyYlx1OWIyZFx1OWIzM1x1OWIzNFx1OWIzNVx1OWIzN1x1OWIzOVx1OWIzYVx1OWIzZFx1OWI0OFx1OWI0Ylx1OWI0Y1x1OWI1NVx1OWI1''@;'; put 'put ''Nlx1OWI1N1x1OWI1Ylx1OWI1ZVx1OWI2MVx1OWI2M1x1OWI2NVx1OWI2Nlx1OWI2OFx1OWI2YSIsNCwiXHU5YjczXHU5Yjc1XHU5Yjc3XHU5Yjc4XHU5Yjc5XHU5YjdmXHU5YjgwXHU5Yjg0XHU5Yjg1XHU5Yjg2XHU5Yjg3XHU5Yjg5XHU5YjhhXHU5YjhiXHU5YjhkXHU5YjhmXHU5YjkwXHU5''@;'; put 'put ''Yjk0XHU5YjlhXHU5YjlkXHU5YjllXHU5YmE2XHU5YmE3XHU5YmE5XHU5YmFjXHU5YmIwXHU5YmIxXHU5YmIyXHU5YmI3XHU5YmI4XHU5YmJiXHU5YmJjXHU5YmJlXHU5YmJmXHU5YmMxXHU5YmM3XHU5YmM4XHU5YmNlXHU5YmQwXHU5YmQ3XHU5YmQ4XHU5YmRkXHU5YmRmXHU5YmU1XHU5YmU3''@;'; put 'put ''XHU5YmVhXHU5YmViXHU5YmVmXHU5YmYzXHU5YmY3XHU5YmY4Il0sWyI4ZmViYTEiLCJcdTliZjlcdTliZmFcdTliZmRcdTliZmZcdTljMDBcdTljMDJcdTljMGJcdTljMGZcdTljMTFcdTljMTZcdTljMThcdTljMTlcdTljMWFcdTljMWNcdTljMWVcdTljMjJcdTljMjNcdTljMjYiLDQsIlx1''@;'; put 'put ''OWMzMVx1OWMzNVx1OWMzNlx1OWMzN1x1OWMzZFx1OWM0MVx1OWM0M1x1OWM0NFx1OWM0NVx1OWM0OVx1OWM0YVx1OWM0ZVx1OWM0Zlx1OWM1MFx1OWM1M1x1OWM1NFx1OWM1Nlx1OWM1OFx1OWM1Ylx1OWM1ZFx1OWM1ZVx1OWM1Zlx1OWM2M1x1OWM2OVx1OWM2YVx1OWM1Y1x1OWM2Ylx1OWM2''@;'; put 'put ''OFx1OWM2ZVx1OWM3MFx1OWM3Mlx1OWM3NVx1OWM3N1x1OWM3Ylx1OWNlNlx1OWNmMlx1OWNmN1x1OWNmOVx1OWQwYlx1OWQwMlx1OWQxMVx1OWQxN1x1OWQxOFx1OWQxY1x1OWQxZFx1OWQxZVx1OWQyZlx1OWQzMFx1OWQzMlx1OWQzM1x1OWQzNFx1OWQzYVx1OWQzY1x1OWQ0NVx1OWQzZFx1''@;'; put 'put ''OWQ0Mlx1OWQ0M1x1OWQ0N1x1OWQ0YVx1OWQ1M1x1OWQ1NFx1OWQ1Zlx1OWQ2M1x1OWQ2Mlx1OWQ2NVx1OWQ2OVx1OWQ2YVx1OWQ2Ylx1OWQ3MFx1OWQ3Nlx1OWQ3N1x1OWQ3YiJdLFsiOGZlY2ExIiwiXHU5ZDdjXHU5ZDdlXHU5ZDgzXHU5ZDg0XHU5ZDg2XHU5ZDhhXHU5ZDhkXHU5ZDhlXHU5''@;'; put 'put ''ZDkyXHU5ZDkzXHU5ZDk1XHU5ZDk2XHU5ZDk3XHU5ZDk4XHU5ZGExXHU5ZGFhXHU5ZGFjXHU5ZGFlXHU5ZGIxXHU5ZGI1XHU5ZGI5XHU5ZGJjXHU5ZGJmXHU5ZGMzXHU5ZGM3XHU5ZGM5XHU5ZGNhXHU5ZGQ0XHU5ZGQ1XHU5ZGQ2XHU5ZGQ3XHU5ZGRhXHU5ZGRlXHU5ZGRmXHU5ZGUwXHU5ZGU1''@;'; put 'put ''XHU5ZGU3XHU5ZGU5XHU5ZGViXHU5ZGVlXHU5ZGYwXHU5ZGYzXHU5ZGY0XHU5ZGZlXHU5ZTBhXHU5ZTAyXHU5ZTA3XHU5ZTBlXHU5ZTEwXHU5ZTExXHU5ZTEyXHU5ZTE1XHU5ZTE2XHU5ZTE5XHU5ZTFjXHU5ZTFkXHU5ZTdhXHU5ZTdiXHU5ZTdjXHU5ZTgwXHU5ZTgyXHU5ZTgzXHU5ZTg0XHU5''@;'; put 'put ''ZTg1XHU5ZTg3XHU5ZThlXHU5ZThmXHU5ZTk2XHU5ZTk4XHU5ZTliXHU5ZTllXHU5ZWE0XHU5ZWE4XHU5ZWFjXHU5ZWFlXHU5ZWFmXHU5ZWIwXHU5ZWIzXHU5ZWI0XHU5ZWI1XHU5ZWM2XHU5ZWM4XHU5ZWNiXHU5ZWQ1XHU5ZWRmXHU5ZWU0XHU5ZWU3XHU5ZWVjXHU5ZWVkXHU5ZWVlXHU5ZWYw''@;'; put 'put ''XHU5ZWYxXHU5ZWYyXHU5ZWY1Il0sWyI4ZmVkYTEiLCJcdTllZjhcdTllZmZcdTlmMDJcdTlmMDNcdTlmMDlcdTlmMGZcdTlmMTBcdTlmMTFcdTlmMTJcdTlmMTRcdTlmMTZcdTlmMTdcdTlmMTlcdTlmMWFcdTlmMWJcdTlmMWZcdTlmMjJcdTlmMjZcdTlmMmFcdTlmMmJcdTlmMmZcdTlmMzFc''@;'; put 'put ''dTlmMzJcdTlmMzRcdTlmMzdcdTlmMzlcdTlmM2FcdTlmM2NcdTlmM2RcdTlmM2ZcdTlmNDFcdTlmNDMiLDQsIlx1OWY1M1x1OWY1NVx1OWY1Nlx1OWY1N1x1OWY1OFx1OWY1YVx1OWY1ZFx1OWY1ZVx1OWY2OFx1OWY2OVx1OWY2ZCIsNCwiXHU5ZjczXHU5Zjc1XHU5ZjdhXHU5ZjdkXHU5Zjhm''@;'; put 'put ''XHU5ZjkwXHU5ZjkxXHU5ZjkyXHU5Zjk0XHU5Zjk2XHU5Zjk3XHU5ZjllXHU5ZmExXHU5ZmEyXHU5ZmEzXHU5ZmE1Il1dJyl9LDM2MjU4OlhlPT57InVzZSBzdHJpY3QiO1hlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJ1Q2hhcnMiOlsxMjgsMTY1LDE2OSwxNzgsMTg0LDIxNiwyMjYsMjM1LDIz''@;'; put 'put ''OCwyNDQsMjQ4LDI1MSwyNTMsMjU4LDI3NiwyODQsMzAwLDMyNSwzMjksMzM0LDM2NCw0NjMsNDY1LDQ2Nyw0NjksNDcxLDQ3Myw0NzUsNDc3LDUwNiw1OTQsNjEwLDcxMiw3MTYsNzMwLDkzMCw5MzgsOTYyLDk3MCwxMDI2LDExMDQsMTEwNiw4MjA5LDgyMTUsODIxOCw4MjIyLDgyMzEsODI0''@;'; put 'put ''MSw4MjQ0LDgyNDYsODI1Miw4MzY1LDg0NTIsODQ1NCw4NDU4LDg0NzEsODQ4Miw4NTU2LDg1NzAsODU5Niw4NjAyLDg3MTMsODcyMCw4NzIyLDg3MjYsODczMSw4NzM3LDg3NDAsODc0Miw4NzQ4LDg3NTEsODc2MCw4NzY2LDg3NzcsODc4MSw4Nzg3LDg4MDIsODgwOCw4ODE2LDg4NTQsODg1''@;'; put 'put ''OCw4ODcwLDg4OTYsODk3OSw5MzIyLDkzNzIsOTU0OCw5NTg4LDk2MTYsOTYyMiw5NjM0LDk2NTIsOTY2Miw5NjcyLDk2NzYsOTY4MCw5NzAyLDk3MzUsOTczOCw5NzkzLDk3OTUsMTE5MDYsMTE5MDksMTE5MTMsMTE5MTcsMTE5MjgsMTE5NDQsMTE5NDcsMTE5NTEsMTE5NTYsMTE5NjAsMTE5''@;'; put 'put ''NjQsMTE5NzksMTIyODQsMTIyOTIsMTIzMTIsMTIzMTksMTIzMzAsMTIzNTEsMTI0MzYsMTI0NDcsMTI1MzUsMTI1NDMsMTI1ODYsMTI4NDIsMTI4NTAsMTI5NjQsMTMyMDAsMTMyMTUsMTMyMTgsMTMyNTMsMTMyNjMsMTMyNjcsMTMyNzAsMTMzODQsMTM0MjgsMTM3MjcsMTM4MzksMTM4NTEs''@;'; put 'put ''MTQ2MTcsMTQ3MDMsMTQ4MDEsMTQ4MTYsMTQ5NjQsMTUxODMsMTU0NzEsMTU1ODUsMTY0NzEsMTY3MzYsMTcyMDgsMTczMjUsMTczMzAsMTczNzQsMTc2MjMsMTc5OTcsMTgwMTgsMTgyMTIsMTgyMTgsMTgzMDEsMTgzMTgsMTg3NjAsMTg4MTEsMTg4MTQsMTg4MjAsMTg4MjMsMTg4NDQsMTg4''@;'; put 'put ''NDgsMTg4NzIsMTk1NzYsMTk2MjAsMTk3MzgsMTk4ODcsNDA4NzAsNTkyNDQsNTkzMzYsNTkzNjcsNTk0MTMsNTk0MTcsNTk0MjMsNTk0MzEsNTk0MzcsNTk0NDMsNTk0NTIsNTk0NjAsNTk0NzgsNTk0OTMsNjM3ODksNjM4NjYsNjM4OTQsNjM5NzYsNjM5ODYsNjQwMTYsNjQwMTgsNjQwMjEs''@;'; put 'put ''NjQwMjUsNjQwMzQsNjQwMzcsNjQwNDIsNjUwNzQsNjUwOTMsNjUxMDcsNjUxMTIsNjUxMjcsNjUxMzIsNjUzNzUsNjU1MTAsNjU1MzZdLCJnYkNoYXJzIjpbMCwzNiwzOCw0NSw1MCw4MSw4OSw5NSw5NiwxMDAsMTAzLDEwNCwxMDUsMTA5LDEyNiwxMzMsMTQ4LDE3MiwxNzUsMTc5LDIwOCwz''@;'; put 'put ''MDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDM0MSw0MjgsNDQzLDU0NCw1NDUsNTU4LDc0MSw3NDIsNzQ5LDc1MCw4MDUsODE5LDgyMCw3OTIyLDc5MjQsNzkyNSw3OTI3LDc5MzQsNzk0Myw3OTQ0LDc5NDUsNzk1MCw4MDYyLDgxNDgsODE0OSw4MTUyLDgxNjQsODE3NCw4MjM2LDgy''@;'; put 'put ''NDAsODI2Miw4MjY0LDgzNzQsODM4MCw4MzgxLDgzODQsODM4OCw4MzkwLDgzOTIsODM5Myw4Mzk0LDgzOTYsODQwMSw4NDA2LDg0MTYsODQxOSw4NDI0LDg0MzcsODQzOSw4NDQ1LDg0ODIsODQ4NSw4NDk2LDg1MjEsODYwMyw4OTM2LDg5NDYsOTA0Niw5MDUwLDkwNjMsOTA2Niw5MDc2LDkw''@;'; put 'put ''OTIsOTEwMCw5MTA4LDkxMTEsOTExMyw5MTMxLDkxNjIsOTE2NCw5MjE4LDkyMTksMTEzMjksMTEzMzEsMTEzMzQsMTEzMzYsMTEzNDYsMTEzNjEsMTEzNjMsMTEzNjYsMTEzNzAsMTEzNzIsMTEzNzUsMTEzODksMTE2ODIsMTE2ODYsMTE2ODcsMTE2OTIsMTE2OTQsMTE3MTQsMTE3MTYsMTE3''@;'; put 'put ''MjMsMTE3MjUsMTE3MzAsMTE3MzYsMTE5ODIsMTE5ODksMTIxMDIsMTIzMzYsMTIzNDgsMTIzNTAsMTIzODQsMTIzOTMsMTIzOTUsMTIzOTcsMTI1MTAsMTI1NTMsMTI4NTEsMTI5NjIsMTI5NzMsMTM3MzgsMTM4MjMsMTM5MTksMTM5MzMsMTQwODAsMTQyOTgsMTQ1ODUsMTQ2OTgsMTU1ODMs''@;'; put 'put ''MTU4NDcsMTYzMTgsMTY0MzQsMTY0MzgsMTY0ODEsMTY3MjksMTcxMDIsMTcxMjIsMTczMTUsMTczMjAsMTc0MDIsMTc0MTgsMTc4NTksMTc5MDksMTc5MTEsMTc5MTUsMTc5MTYsMTc5MzYsMTc5MzksMTc5NjEsMTg2NjQsMTg3MDMsMTg4MTQsMTg5NjIsMTkwNDMsMzM0NjksMzM0NzAsMzM0''@;'; put 'put ''NzEsMzM0ODQsMzM0ODUsMzM0OTAsMzM0OTcsMzM1MDEsMzM1MDUsMzM1MTMsMzM1MjAsMzM1MzYsMzM1NTAsMzc4NDUsMzc5MjEsMzc5NDgsMzgwMjksMzgwMzgsMzgwNjQsMzgwNjUsMzgwNjYsMzgwNjksMzgwNzUsMzgwNzYsMzgwNzgsMzkxMDgsMzkxMDksMzkxMTMsMzkxMTQsMzkxMTUs''@;'; put 'put ''MzkxMTYsMzkyNjUsMzkzOTQsMTg5MDAwXX0nKX0sNDQzNDY6WGU9PnsidXNlIHN0cmljdCI7WGUuZXhwb3J0cz1KU09OLnBhcnNlKCdbWyJhMTQwIiwiXHVlNGM2Iiw2Ml0sWyJhMTgwIiwiXHVlNTA1IiwzMl0sWyJhMjQwIiwiXHVlNTI2Iiw2Ml0sWyJhMjgwIiwiXHVlNTY1IiwzMl0sWyJh''@;'; put 'put ''MmFiIiwiXHVlNzY2Iiw1XSxbImEyZTMiLCJcdTIwYWNcdWU3NmQiXSxbImEyZWYiLCJcdWU3NmVcdWU3NmYiXSxbImEyZmQiLCJcdWU3NzBcdWU3NzEiXSxbImEzNDAiLCJcdWU1ODYiLDYyXSxbImEzODAiLCJcdWU1YzUiLDMxLCJcdTMwMDAiXSxbImE0NDAiLCJcdWU1ZTYiLDYyXSxbImE0''@;'; put 'put ''ODAiLCJcdWU2MjUiLDMyXSxbImE0ZjQiLCJcdWU3NzIiLDEwXSxbImE1NDAiLCJcdWU2NDYiLDYyXSxbImE1ODAiLCJcdWU2ODUiLDMyXSxbImE1ZjciLCJcdWU3N2QiLDddLFsiYTY0MCIsIlx1ZTZhNiIsNjJdLFsiYTY4MCIsIlx1ZTZlNSIsMzJdLFsiYTZiOSIsIlx1ZTc4NSIsN10sWyJh''@;'; put 'put ''NmQ5IiwiXHVlNzhkIiw2XSxbImE2ZWMiLCJcdWU3OTRcdWU3OTUiXSxbImE2ZjMiLCJcdWU3OTYiXSxbImE2ZjYiLCJcdWU3OTciLDhdLFsiYTc0MCIsIlx1ZTcwNiIsNjJdLFsiYTc4MCIsIlx1ZTc0NSIsMzJdLFsiYTdjMiIsIlx1ZTdhMCIsMTRdLFsiYTdmMiIsIlx1ZTdhZiIsMTJdLFsi''@;'; put 'put ''YTg5NiIsIlx1ZTdiYyIsMTBdLFsiYThiYyIsIlx1ZTdjNyJdLFsiYThiZiIsIlx1MDFmOSJdLFsiYThjMSIsIlx1ZTdjOVx1ZTdjYVx1ZTdjYlx1ZTdjYyJdLFsiYThlYSIsIlx1ZTdjZCIsMjBdLFsiYTk1OCIsIlx1ZTdlMiJdLFsiYTk1YiIsIlx1ZTdlMyJdLFsiYTk1ZCIsIlx1ZTdlNFx1''@;'; put 'put ''ZTdlNVx1ZTdlNiJdLFsiYTk4OSIsIlx1MzAzZVx1MmZmMCIsMTFdLFsiYTk5NyIsIlx1ZTdmNCIsMTJdLFsiYTlmMCIsIlx1ZTgwMSIsMTRdLFsiYWFhMSIsIlx1ZTAwMCIsOTNdLFsiYWJhMSIsIlx1ZTA1ZSIsOTNdLFsiYWNhMSIsIlx1ZTBiYyIsOTNdLFsiYWRhMSIsIlx1ZTExYSIsOTNd''@;'; put 'put ''LFsiYWVhMSIsIlx1ZTE3OCIsOTNdLFsiYWZhMSIsIlx1ZTFkNiIsOTNdLFsiZDdmYSIsIlx1ZTgxMCIsNF0sWyJmOGExIiwiXHVlMjM0Iiw5M10sWyJmOWExIiwiXHVlMjkyIiw5M10sWyJmYWExIiwiXHVlMmYwIiw5M10sWyJmYmExIiwiXHVlMzRlIiw5M10sWyJmY2ExIiwiXHVlM2FjIiw5''@;'; put 'put ''M10sWyJmZGExIiwiXHVlNDBhIiw5M10sWyJmZTUwIiwiXHUyZTgxXHVlODE2XHVlODE3XHVlODE4XHUyZTg0XHUzNDczXHUzNDQ3XHUyZTg4XHUyZThiXHVlODFlXHUzNTllXHUzNjFhXHUzNjBlXHUyZThjXHUyZTk3XHUzOTZlXHUzOTE4XHVlODI2XHUzOWNmXHUzOWRmXHUzYTczXHUzOWQw''@;'; put 'put ''XHVlODJiXHVlODJjXHUzYjRlXHUzYzZlXHUzY2UwXHUyZWE3XHVlODMxXHVlODMyXHUyZWFhXHU0MDU2XHU0MTVmXHUyZWFlXHU0MzM3XHUyZWIzXHUyZWI2XHUyZWI3XHVlODNiXHU0M2IxXHU0M2FjXHUyZWJiXHU0M2RkXHU0NGQ2XHU0NjYxXHU0NjRjXHVlODQzIl0sWyJmZTgwIiwiXHU0''@;'; put 'put ''NzIzXHU0NzI5XHU0NzdjXHU0NzhkXHUyZWNhXHU0OTQ3XHU0OTdhXHU0OTdkXHU0OTgyXHU0OTgzXHU0OTg1XHU0OTg2XHU0OTlmXHU0OTliXHU0OWI3XHU0OWI2XHVlODU0XHVlODU1XHU0Y2EzXHU0YzlmXHU0Y2EwXHU0Y2ExXHU0Yzc3XHU0Y2EyXHU0ZDEzIiw2LCJcdTRkYWVcdWU4NjRc''@;'; put 'put ''dWU0NjgiLDkzXV0nKX0sMjcwMTQ6WGU9PnsidXNlIHN0cmljdCI7WGUuZXhwb3J0cz1KU09OLnBhcnNlKCdbWyIwIiwiXFx1MDAwMCIsMTI4XSxbImExIiwiXHVmZjYxIiw2Ml0sWyI4MTQwIiwiXHUzMDAwXHUzMDAxXHUzMDAyXHVmZjBjXHVmZjBlXHUzMGZiXHVmZjFhXHVmZjFiXHVmZjFm''@;'; put 'put ''XHVmZjAxXHUzMDliXHUzMDljXHhiNFx1ZmY0MFx4YThcdWZmM2VcdWZmZTNcdWZmM2ZcdTMwZmRcdTMwZmVcdTMwOWRcdTMwOWVcdTMwMDNcdTRlZGRcdTMwMDVcdTMwMDZcdTMwMDdcdTMwZmNcdTIwMTVcdTIwMTBcdWZmMGZcdWZmM2NcdWZmNWVcdTIyMjVcdWZmNWNcdTIwMjZcdTIwMjVc''@;'; put 'put ''dTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdWZmMDhcdWZmMDlcdTMwMTRcdTMwMTVcdWZmM2JcdWZmM2RcdWZmNWJcdWZmNWRcdTMwMDgiLDksIlx1ZmYwYlx1ZmYwZFx4YjFceGQ3Il0sWyI4MTgwIiwiXHhmN1x1ZmYxZFx1MjI2MFx1ZmYxY1x1ZmYxZVx1MjI2Nlx1MjI2N1x1MjIxZVx1MjIz''@;'; put 'put ''NFx1MjY0Mlx1MjY0MFx4YjBcdTIwMzJcdTIwMzNcdTIxMDNcdWZmZTVcdWZmMDRcdWZmZTBcdWZmZTFcdWZmMDVcdWZmMDNcdWZmMDZcdWZmMGFcdWZmMjBceGE3XHUyNjA2XHUyNjA1XHUyNWNiXHUyNWNmXHUyNWNlXHUyNWM3XHUyNWM2XHUyNWExXHUyNWEwXHUyNWIzXHUyNWIyXHUyNWJk''@;'; put 'put ''XHUyNWJjXHUyMDNiXHUzMDEyXHUyMTkyXHUyMTkwXHUyMTkxXHUyMTkzXHUzMDEzIl0sWyI4MWI4IiwiXHUyMjA4XHUyMjBiXHUyMjg2XHUyMjg3XHUyMjgyXHUyMjgzXHUyMjJhXHUyMjI5Il0sWyI4MWM4IiwiXHUyMjI3XHUyMjI4XHVmZmUyXHUyMWQyXHUyMWQ0XHUyMjAwXHUyMjAzIl0s''@;'; put 'put ''WyI4MWRhIiwiXHUyMjIwXHUyMmE1XHUyMzEyXHUyMjAyXHUyMjA3XHUyMjYxXHUyMjUyXHUyMjZhXHUyMjZiXHUyMjFhXHUyMjNkXHUyMjFkXHUyMjM1XHUyMjJiXHUyMjJjIl0sWyI4MWYwIiwiXHUyMTJiXHUyMDMwXHUyNjZmXHUyNjZkXHUyNjZhXHUyMDIwXHUyMDIxXHhiNiJdLFsiODFm''@;'; put 'put ''YyIsIlx1MjVlZiJdLFsiODI0ZiIsIlx1ZmYxMCIsOV0sWyI4MjYwIiwiXHVmZjIxIiwyNV0sWyI4MjgxIiwiXHVmZjQxIiwyNV0sWyI4MjlmIiwiXHUzMDQxIiw4Ml0sWyI4MzQwIiwiXHUzMGExIiw2Ml0sWyI4MzgwIiwiXHUzMGUwIiwyMl0sWyI4MzlmIiwiXHUwMzkxIiwxNiwiXHUwM2Ez''@;'; put 'put ''Iiw2XSxbIjgzYmYiLCJcdTAzYjEiLDE2LCJcdTAzYzMiLDZdLFsiODQ0MCIsIlx1MDQxMCIsNSwiXHUwNDAxXHUwNDE2IiwyNV0sWyI4NDcwIiwiXHUwNDMwIiw1LCJcdTA0NTFcdTA0MzYiLDddLFsiODQ4MCIsIlx1MDQzZSIsMTddLFsiODQ5ZiIsIlx1MjUwMFx1MjUwMlx1MjUwY1x1MjUx''@;'; put 'put ''MFx1MjUxOFx1MjUxNFx1MjUxY1x1MjUyY1x1MjUyNFx1MjUzNFx1MjUzY1x1MjUwMVx1MjUwM1x1MjUwZlx1MjUxM1x1MjUxYlx1MjUxN1x1MjUyM1x1MjUzM1x1MjUyYlx1MjUzYlx1MjU0Ylx1MjUyMFx1MjUyZlx1MjUyOFx1MjUzN1x1MjUzZlx1MjUxZFx1MjUzMFx1MjUyNVx1MjUzOFx1''@;'; put 'put ''MjU0MiJdLFsiODc0MCIsIlx1MjQ2MCIsMTksIlx1MjE2MCIsOV0sWyI4NzVmIiwiXHUzMzQ5XHUzMzE0XHUzMzIyXHUzMzRkXHUzMzE4XHUzMzI3XHUzMzAzXHUzMzM2XHUzMzUxXHUzMzU3XHUzMzBkXHUzMzI2XHUzMzIzXHUzMzJiXHUzMzRhXHUzMzNiXHUzMzljXHUzMzlkXHUzMzllXHUz''@;'; put 'put ''MzhlXHUzMzhmXHUzM2M0XHUzM2ExIl0sWyI4NzdlIiwiXHUzMzdiIl0sWyI4NzgwIiwiXHUzMDFkXHUzMDFmXHUyMTE2XHUzM2NkXHUyMTIxXHUzMmE0Iiw0LCJcdTMyMzFcdTMyMzJcdTMyMzlcdTMzN2VcdTMzN2RcdTMzN2NcdTIyNTJcdTIyNjFcdTIyMmJcdTIyMmVcdTIyMTFcdTIyMWFc''@;'; put 'put ''dTIyYTVcdTIyMjBcdTIyMWZcdTIyYmZcdTIyMzVcdTIyMjlcdTIyMmEiXSxbIjg4OWYiLCJcdTRlOWNcdTU1MTZcdTVhMDNcdTk2M2ZcdTU0YzBcdTYxMWJcdTYzMjhcdTU5ZjZcdTkwMjJcdTg0NzVcdTgzMWNcdTdhNTBcdTYwYWFcdTYzZTFcdTZlMjVcdTY1ZWRcdTg0NjZcdTgyYTZcdTli''@;'; put 'put ''ZjVcdTY4OTNcdTU3MjdcdTY1YTFcdTYyNzFcdTViOWJcdTU5ZDBcdTg2N2JcdTk4ZjRcdTdkNjJcdTdkYmVcdTliOGVcdTYyMTZcdTdjOWZcdTg4YjdcdTViODlcdTVlYjVcdTYzMDlcdTY2OTdcdTY4NDhcdTk1YzdcdTk3OGRcdTY3NGZcdTRlZTVcdTRmMGFcdTRmNGRcdTRmOWRcdTUwNDlc''@;'; put 'put ''dTU2ZjJcdTU5MzdcdTU5ZDRcdTVhMDFcdTVjMDlcdTYwZGZcdTYxMGZcdTYxNzBcdTY2MTNcdTY5MDVcdTcwYmFcdTc1NGZcdTc1NzBcdTc5ZmJcdTdkYWRcdTdkZWZcdTgwYzNcdTg0MGVcdTg4NjNcdThiMDJcdTkwNTVcdTkwN2FcdTUzM2JcdTRlOTVcdTRlYTVcdTU3ZGZcdTgwYjJcdTkw''@;'; put 'put ''YzFcdTc4ZWZcdTRlMDBcdTU4ZjFcdTZlYTJcdTkwMzhcdTdhMzJcdTgzMjhcdTgyOGJcdTljMmZcdTUxNDFcdTUzNzBcdTU0YmRcdTU0ZTFcdTU2ZTBcdTU5ZmJcdTVmMTVcdTk4ZjJcdTZkZWJcdTgwZTRcdTg1MmQiXSxbIjg5NDAiLCJcdTk2NjJcdTk2NzBcdTk2YTBcdTk3ZmJcdTU0MGJc''@;'; put 'put ''dTUzZjNcdTViODdcdTcwY2ZcdTdmYmRcdThmYzJcdTk2ZThcdTUzNmZcdTlkNWNcdTdhYmFcdTRlMTFcdTc4OTNcdTgxZmNcdTZlMjZcdTU2MThcdTU1MDRcdTZiMWRcdTg1MWFcdTljM2JcdTU5ZTVcdTUzYTlcdTZkNjZcdTc0ZGNcdTk1OGZcdTU2NDJcdTRlOTFcdTkwNGJcdTk2ZjJcdTgz''@;'; put 'put ''NGZcdTk5MGNcdTUzZTFcdTU1YjZcdTViMzBcdTVmNzFcdTY2MjBcdTY2ZjNcdTY4MDRcdTZjMzhcdTZjZjNcdTZkMjlcdTc0NWJcdTc2YzhcdTdhNGVcdTk4MzRcdTgyZjFcdTg4NWJcdThhNjBcdTkyZWRcdTZkYjJcdTc1YWJcdTc2Y2FcdTk5YzVcdTYwYTZcdThiMDFcdThkOGFcdTk1YjJc''@;'; put 'put ''dTY5OGVcdTUzYWRcdTUxODYiXSxbIjg5ODAiLCJcdTU3MTJcdTU4MzBcdTU5NDRcdTViYjRcdTVlZjZcdTYwMjhcdTYzYTlcdTYzZjRcdTZjYmZcdTZmMTRcdTcwOGVcdTcxMTRcdTcxNTlcdTcxZDVcdTczM2ZcdTdlMDFcdTgyNzZcdTgyZDFcdTg1OTdcdTkwNjBcdTkyNWJcdTlkMWJcdTU4''@;'; put 'put ''NjlcdTY1YmNcdTZjNWFcdTc1MjVcdTUxZjlcdTU5MmVcdTU5NjVcdTVmODBcdTVmZGNcdTYyYmNcdTY1ZmFcdTZhMmFcdTZiMjdcdTZiYjRcdTczOGJcdTdmYzFcdTg5NTZcdTlkMmNcdTlkMGVcdTllYzRcdTVjYTFcdTZjOTZcdTgzN2JcdTUxMDRcdTVjNGJcdTYxYjZcdTgxYzZcdTY4NzZc''@;'; put 'put ''dTcyNjFcdTRlNTlcdTRmZmFcdTUzNzhcdTYwNjlcdTZlMjlcdTdhNGZcdTk3ZjNcdTRlMGJcdTUzMTZcdTRlZWVcdTRmNTVcdTRmM2RcdTRmYTFcdTRmNzNcdTUyYTBcdTUzZWZcdTU2MDlcdTU5MGZcdTVhYzFcdTViYjZcdTViZTFcdTc5ZDFcdTY2ODdcdTY3OWNcdTY3YjZcdTZiNGNcdTZj''@;'; put 'put ''YjNcdTcwNmJcdTczYzJcdTc5OGRcdTc5YmVcdTdhM2NcdTdiODdcdTgyYjFcdTgyZGJcdTgzMDRcdTgzNzdcdTgzZWZcdTgzZDNcdTg3NjZcdThhYjJcdTU2MjlcdThjYThcdThmZTZcdTkwNGVcdTk3MWVcdTg2OGFcdTRmYzRcdTVjZThcdTYyMTFcdTcyNTlcdTc1M2JcdTgxZTVcdTgyYmRc''@;'; put 'put ''dTg2ZmVcdThjYzBcdTk2YzVcdTk5MTNcdTk5ZDVcdTRlY2JcdTRmMWFcdTg5ZTNcdTU2ZGVcdTU4NGFcdTU4Y2FcdTVlZmJcdTVmZWJcdTYwMmFcdTYwOTRcdTYwNjJcdTYxZDBcdTYyMTJcdTYyZDBcdTY1MzkiXSxbIjhhNDAiLCJcdTliNDFcdTY2NjZcdTY4YjBcdTZkNzdcdTcwNzBcdTc1''@;'; put 'put ''NGNcdTc2ODZcdTdkNzVcdTgyYTVcdTg3ZjlcdTk1OGJcdTk2OGVcdThjOWRcdTUxZjFcdTUyYmVcdTU5MTZcdTU0YjNcdTViYjNcdTVkMTZcdTYxNjhcdTY5ODJcdTZkYWZcdTc4OGRcdTg0Y2JcdTg4NTdcdThhNzJcdTkzYTdcdTlhYjhcdTZkNmNcdTk5YThcdTg2ZDlcdTU3YTNcdTY3ZmZc''@;'; put 'put ''dTg2Y2VcdTkyMGVcdTUyODNcdTU2ODdcdTU0MDRcdTVlZDNcdTYyZTFcdTY0YjlcdTY4M2NcdTY4MzhcdTZiYmJcdTczNzJcdTc4YmFcdTdhNmJcdTg5OWFcdTg5ZDJcdThkNmJcdThmMDNcdTkwZWRcdTk1YTNcdTk2OTRcdTk3NjlcdTViNjZcdTVjYjNcdTY5N2RcdTk4NGRcdTk4NGVcdTYz''@;'; put 'put ''OWJcdTdiMjBcdTZhMmIiXSxbIjhhODAiLCJcdTZhN2ZcdTY4YjZcdTljMGRcdTZmNWZcdTUyNzJcdTU1OWRcdTYwNzBcdTYyZWNcdTZkM2JcdTZlMDdcdTZlZDFcdTg0NWJcdTg5MTBcdThmNDRcdTRlMTRcdTljMzlcdTUzZjZcdTY5MWJcdTZhM2FcdTk3ODRcdTY4MmFcdTUxNWNcdTdhYzNc''@;'; put 'put ''dTg0YjJcdTkxZGNcdTkzOGNcdTU2NWJcdTlkMjhcdTY4MjJcdTgzMDVcdTg0MzFcdTdjYTVcdTUyMDhcdTgyYzVcdTc0ZTZcdTRlN2VcdTRmODNcdTUxYTBcdTViZDJcdTUyMGFcdTUyZDhcdTUyZTdcdTVkZmJcdTU1OWFcdTU4MmFcdTU5ZTZcdTViOGNcdTViOThcdTViZGJcdTVlNzJcdTVl''@;'; put 'put ''NzlcdTYwYTNcdTYxMWZcdTYxNjNcdTYxYmVcdTYzZGJcdTY1NjJcdTY3ZDFcdTY4NTNcdTY4ZmFcdTZiM2VcdTZiNTNcdTZjNTdcdTZmMjJcdTZmOTdcdTZmNDVcdTc0YjBcdTc1MThcdTc2ZTNcdTc3MGJcdTdhZmZcdTdiYTFcdTdjMjFcdTdkZTlcdTdmMzZcdTdmZjBcdTgwOWRcdTgyNjZc''@;'; put 'put ''dTgzOWVcdTg5YjNcdThhY2NcdThjYWJcdTkwODRcdTk0NTFcdTk1OTNcdTk1OTFcdTk1YTJcdTk2NjVcdTk3ZDNcdTk5MjhcdTgyMThcdTRlMzhcdTU0MmJcdTVjYjhcdTVkY2NcdTczYTlcdTc2NGNcdTc3M2NcdTVjYTlcdTdmZWJcdThkMGJcdTk2YzFcdTk4MTFcdTk4NTRcdTk4NThcdTRm''@;'; put 'put ''MDFcdTRmMGVcdTUzNzFcdTU1OWNcdTU2NjhcdTU3ZmFcdTU5NDdcdTViMDlcdTViYzRcdTVjOTBcdTVlMGNcdTVlN2VcdTVmY2NcdTYzZWVcdTY3M2FcdTY1ZDdcdTY1ZTJcdTY3MWZcdTY4Y2JcdTY4YzQiXSxbIjhiNDAiLCJcdTZhNWZcdTVlMzBcdTZiYzVcdTZjMTdcdTZjN2RcdTc1N2Zc''@;'; put 'put ''dTc5NDhcdTViNjNcdTdhMDBcdTdkMDBcdTVmYmRcdTg5OGZcdThhMThcdThjYjRcdThkNzdcdThlY2NcdThmMWRcdTk4ZTJcdTlhMGVcdTliM2NcdTRlODBcdTUwN2RcdTUxMDBcdTU5OTNcdTViOWNcdTYyMmZcdTYyODBcdTY0ZWNcdTZiM2FcdTcyYTBcdTc1OTFcdTc5NDdcdTdmYTlcdTg3''@;'; put 'put ''ZmJcdThhYmNcdThiNzBcdTYzYWNcdTgzY2FcdTk3YTBcdTU0MDlcdTU0MDNcdTU1YWJcdTY4NTRcdTZhNThcdThhNzBcdTc4MjdcdTY3NzVcdTllY2RcdTUzNzRcdTViYTJcdTgxMWFcdTg2NTBcdTkwMDZcdTRlMThcdTRlNDVcdTRlYzdcdTRmMTFcdTUzY2FcdTU0MzhcdTViYWVcdTVmMTNc''@;'; put 'put ''dTYwMjVcdTY1NTEiXSxbIjhiODAiLCJcdTY3M2RcdTZjNDJcdTZjNzJcdTZjZTNcdTcwNzhcdTc0MDNcdTdhNzZcdTdhYWVcdTdiMDhcdTdkMWFcdTdjZmVcdTdkNjZcdTY1ZTdcdTcyNWJcdTUzYmJcdTVjNDVcdTVkZThcdTYyZDJcdTYyZTBcdTYzMTlcdTZlMjBcdTg2NWFcdThhMzFcdThk''@;'; put 'put ''ZGRcdTkyZjhcdTZmMDFcdTc5YTZcdTliNWFcdTRlYThcdTRlYWJcdTRlYWNcdTRmOWJcdTRmYTBcdTUwZDFcdTUxNDdcdTdhZjZcdTUxNzFcdTUxZjZcdTUzNTRcdTUzMjFcdTUzN2ZcdTUzZWJcdTU1YWNcdTU4ODNcdTVjZTFcdTVmMzdcdTVmNGFcdTYwMmZcdTYwNTBcdTYwNmRcdTYzMWZc''@;'; put 'put ''dTY1NTlcdTZhNGJcdTZjYzFcdTcyYzJcdTcyZWRcdTc3ZWZcdTgwZjhcdTgxMDVcdTgyMDhcdTg1NGVcdTkwZjdcdTkzZTFcdTk3ZmZcdTk5NTdcdTlhNWFcdTRlZjBcdTUxZGRcdTVjMmRcdTY2ODFcdTY5NmRcdTVjNDBcdTY2ZjJcdTY5NzVcdTczODlcdTY4NTBcdTdjODFcdTUwYzVcdTUy''@;'; put 'put ''ZTRcdTU3NDdcdTVkZmVcdTkzMjZcdTY1YTRcdTZiMjNcdTZiM2RcdTc0MzRcdTc5ODFcdTc5YmRcdTdiNGJcdTdkY2FcdTgyYjlcdTgzY2NcdTg4N2ZcdTg5NWZcdThiMzlcdThmZDFcdTkxZDFcdTU0MWZcdTkyODBcdTRlNWRcdTUwMzZcdTUzZTVcdTUzM2FcdTcyZDdcdTczOTZcdTc3ZTlc''@;'; put 'put ''dTgyZTZcdThlYWZcdTk5YzZcdTk5YzhcdTk5ZDJcdTUxNzdcdTYxMWFcdTg2NWVcdTU1YjBcdTdhN2FcdTUwNzZcdTViZDNcdTkwNDdcdTk2ODVcdTRlMzJcdTZhZGJcdTkxZTdcdTVjNTFcdTVjNDgiXSxbIjhjNDAiLCJcdTYzOThcdTdhOWZcdTZjOTNcdTk3NzRcdThmNjFcdTdhYWFcdTcx''@;'; put 'put ''OGFcdTk2ODhcdTdjODJcdTY4MTdcdTdlNzBcdTY4NTFcdTkzNmNcdTUyZjJcdTU0MWJcdTg1YWJcdThhMTNcdTdmYTRcdThlY2RcdTkwZTFcdTUzNjZcdTg4ODhcdTc5NDFcdTRmYzJcdTUwYmVcdTUyMTFcdTUxNDRcdTU1NTNcdTU3MmRcdTczZWFcdTU3OGJcdTU5NTFcdTVmNjJcdTVmODRc''@;'; put 'put ''dTYwNzVcdTYxNzZcdTYxNjdcdTYxYTlcdTYzYjJcdTY0M2FcdTY1NmNcdTY2NmZcdTY4NDJcdTZlMTNcdTc1NjZcdTdhM2RcdTdjZmJcdTdkNGNcdTdkOTlcdTdlNGJcdTdmNmJcdTgzMGVcdTgzNGFcdTg2Y2RcdThhMDhcdThhNjNcdThiNjZcdThlZmRcdTk4MWFcdTlkOGZcdTgyYjhcdThm''@;'; put 'put ''Y2VcdTliZTgiXSxbIjhjODAiLCJcdTUyODdcdTYyMWZcdTY0ODNcdTZmYzBcdTk2OTlcdTY4NDFcdTUwOTFcdTZiMjBcdTZjN2FcdTZmNTRcdTdhNzRcdTdkNTBcdTg4NDBcdThhMjNcdTY3MDhcdTRlZjZcdTUwMzlcdTUwMjZcdTUwNjVcdTUxN2NcdTUyMzhcdTUyNjNcdTU1YTdcdTU3MGZc''@;'; put 'put ''dTU4MDVcdTVhY2NcdTVlZmFcdTYxYjJcdTYxZjhcdTYyZjNcdTYzNzJcdTY5MWNcdTZhMjlcdTcyN2RcdTcyYWNcdTczMmVcdTc4MTRcdTc4NmZcdTdkNzlcdTc3MGNcdTgwYTlcdTg5OGJcdThiMTlcdThjZTJcdThlZDJcdTkwNjNcdTkzNzVcdTk2N2FcdTk4NTVcdTlhMTNcdTllNzhcdTUx''@;'; put 'put ''NDNcdTUzOWZcdTUzYjNcdTVlN2JcdTVmMjZcdTZlMWJcdTZlOTBcdTczODRcdTczZmVcdTdkNDNcdTgyMzdcdThhMDBcdThhZmFcdTk2NTBcdTRlNGVcdTUwMGJcdTUzZTRcdTU0N2NcdTU2ZmFcdTU5ZDFcdTViNjRcdTVkZjFcdTVlYWJcdTVmMjdcdTYyMzhcdTY1NDVcdTY3YWZcdTZlNTZc''@;'; put 'put ''dTcyZDBcdTdjY2FcdTg4YjRcdTgwYTFcdTgwZTFcdTgzZjBcdTg2NGVcdThhODdcdThkZThcdTkyMzdcdTk2YzdcdTk4NjdcdTlmMTNcdTRlOTRcdTRlOTJcdTRmMGRcdTUzNDhcdTU0NDlcdTU0M2VcdTVhMmZcdTVmOGNcdTVmYTFcdTYwOWZcdTY4YTdcdTZhOGVcdTc0NWFcdTc4ODFcdThh''@;'; put 'put ''OWVcdThhYTRcdThiNzdcdTkxOTBcdTRlNWVcdTliYzlcdTRlYTRcdTRmN2NcdTRmYWZcdTUwMTlcdTUwMTZcdTUxNDlcdTUxNmNcdTUyOWZcdTUyYjlcdTUyZmVcdTUzOWFcdTUzZTNcdTU0MTEiXSxbIjhkNDAiLCJcdTU0MGVcdTU1ODlcdTU3NTFcdTU3YTJcdTU5N2RcdTViNTRcdTViNWRc''@;'; put 'put ''dTViOGZcdTVkZTVcdTVkZTdcdTVkZjdcdTVlNzhcdTVlODNcdTVlOWFcdTVlYjdcdTVmMThcdTYwNTJcdTYxNGNcdTYyOTdcdTYyZDhcdTYzYTdcdTY1M2JcdTY2MDJcdTY2NDNcdTY2ZjRcdTY3NmRcdTY4MjFcdTY4OTdcdTY5Y2JcdTZjNWZcdTZkMmFcdTZkNjlcdTZlMmZcdTZlOWRcdTc1''@;'; put 'put ''MzJcdTc2ODdcdTc4NmNcdTdhM2ZcdTdjZTBcdTdkMDVcdTdkMThcdTdkNWVcdTdkYjFcdTgwMTVcdTgwMDNcdTgwYWZcdTgwYjFcdTgxNTRcdTgxOGZcdTgyMmFcdTgzNTJcdTg4NGNcdTg4NjFcdThiMWJcdThjYTJcdThjZmNcdTkwY2FcdTkxNzVcdTkyNzFcdTc4M2ZcdTkyZmNcdTk1YTRc''@;'; put 'put ''dTk2NGQiXSxbIjhkODAiLCJcdTk4MDVcdTk5OTlcdTlhZDhcdTlkM2JcdTUyNWJcdTUyYWJcdTUzZjdcdTU0MDhcdTU4ZDVcdTYyZjdcdTZmZTBcdThjNmFcdThmNWZcdTllYjlcdTUxNGJcdTUyM2JcdTU0NGFcdTU2ZmRcdTdhNDBcdTkxNzdcdTlkNjBcdTllZDJcdTczNDRcdTZmMDlcdTgx''@;'; put 'put ''NzBcdTc1MTFcdTVmZmRcdTYwZGFcdTlhYThcdTcyZGJcdThmYmNcdTZiNjRcdTk4MDNcdTRlY2FcdTU2ZjBcdTU3NjRcdTU4YmVcdTVhNWFcdTYwNjhcdTYxYzdcdTY2MGZcdTY2MDZcdTY4MzlcdTY4YjFcdTZkZjdcdTc1ZDVcdTdkM2FcdTgyNmVcdTliNDJcdTRlOWJcdTRmNTBcdTUzYzlc''@;'; put 'put ''dTU1MDZcdTVkNmZcdTVkZTZcdTVkZWVcdTY3ZmJcdTZjOTlcdTc0NzNcdTc4MDJcdThhNTBcdTkzOTZcdTg4ZGZcdTU3NTBcdTVlYTdcdTYzMmJcdTUwYjVcdTUwYWNcdTUxOGRcdTY3MDBcdTU0YzlcdTU4NWVcdTU5YmJcdTViYjBcdTVmNjlcdTYyNGRcdTYzYTFcdTY4M2RcdTZiNzNcdTZl''@;'; put 'put ''MDhcdTcwN2RcdTkxYzdcdTcyODBcdTc4MTVcdTc4MjZcdTc5NmRcdTY1OGVcdTdkMzBcdTgzZGNcdTg4YzFcdThmMDlcdTk2OWJcdTUyNjRcdTU3MjhcdTY3NTBcdTdmNmFcdThjYTFcdTUxYjRcdTU3NDJcdTk2MmFcdTU4M2FcdTY5OGFcdTgwYjRcdTU0YjJcdTVkMGVcdTU3ZmNcdTc4OTVc''@;'; put 'put ''dTlkZmFcdTRmNWNcdTUyNGFcdTU0OGJcdTY0M2VcdTY2MjhcdTY3MTRcdTY3ZjVcdTdhODRcdTdiNTZcdTdkMjJcdTkzMmZcdTY4NWNcdTliYWRcdTdiMzlcdTUzMTlcdTUxOGFcdTUyMzciXSxbIjhlNDAiLCJcdTViZGZcdTYyZjZcdTY0YWVcdTY0ZTZcdTY3MmRcdTZiYmFcdTg1YTlcdTk2''@;'; put 'put ''ZDFcdTc2OTBcdTliZDZcdTYzNGNcdTkzMDZcdTliYWJcdTc2YmZcdTY2NTJcdTRlMDlcdTUwOThcdTUzYzJcdTVjNzFcdTYwZThcdTY0OTJcdTY1NjNcdTY4NWZcdTcxZTZcdTczY2FcdTc1MjNcdTdiOTdcdTdlODJcdTg2OTVcdThiODNcdThjZGJcdTkxNzhcdTk5MTBcdTY1YWNcdTY2YWJc''@;'; put 'put ''dTZiOGJcdTRlZDVcdTRlZDRcdTRmM2FcdTRmN2ZcdTUyM2FcdTUzZjhcdTUzZjJcdTU1ZTNcdTU2ZGJcdTU4ZWJcdTU5Y2JcdTU5YzlcdTU5ZmZcdTViNTBcdTVjNGRcdTVlMDJcdTVlMmJcdTVmZDdcdTYwMWRcdTYzMDdcdTY1MmZcdTViNWNcdTY1YWZcdTY1YmRcdTY1ZThcdTY3OWRcdTZi''@;'; put 'put ''NjIiXSxbIjhlODAiLCJcdTZiN2JcdTZjMGZcdTczNDVcdTc5NDlcdTc5YzFcdTdjZjhcdTdkMTlcdTdkMmJcdTgwYTJcdTgxMDJcdTgxZjNcdTg5OTZcdThhNWVcdThhNjlcdThhNjZcdThhOGNcdThhZWVcdThjYzdcdThjZGNcdTk2Y2NcdTk4ZmNcdTZiNmZcdTRlOGJcdTRmM2NcdTRmOGRc''@;'; put 'put ''dTUxNTBcdTViNTdcdTViZmFcdTYxNDhcdTYzMDFcdTY2NDJcdTZiMjFcdTZlY2JcdTZjYmJcdTcyM2VcdTc0YmRcdTc1ZDRcdTc4YzFcdTc5M2FcdTgwMGNcdTgwMzNcdTgxZWFcdTg0OTRcdThmOWVcdTZjNTBcdTllN2ZcdTVmMGZcdThiNThcdTlkMmJcdTdhZmFcdThlZjhcdTViOGRcdTk2''@;'; put 'put ''ZWJcdTRlMDNcdTUzZjFcdTU3ZjdcdTU5MzFcdTVhYzlcdTViYTRcdTYwODlcdTZlN2ZcdTZmMDZcdTc1YmVcdThjZWFcdTViOWZcdTg1MDBcdTdiZTBcdTUwNzJcdTY3ZjRcdTgyOWRcdTVjNjFcdTg1NGFcdTdlMWVcdTgyMGVcdTUxOTlcdTVjMDRcdTYzNjhcdThkNjZcdTY1OWNcdTcxNmVc''@;'; put 'put ''dTc5M2VcdTdkMTdcdTgwMDVcdThiMWRcdThlY2FcdTkwNmVcdTg2YzdcdTkwYWFcdTUwMWZcdTUyZmFcdTVjM2FcdTY3NTNcdTcwN2NcdTcyMzVcdTkxNGNcdTkxYzhcdTkzMmJcdTgyZTVcdTViYzJcdTVmMzFcdTYwZjlcdTRlM2JcdTUzZDZcdTViODhcdTYyNGJcdTY3MzFcdTZiOGFcdTcy''@;'; put 'put ''ZTlcdTczZTBcdTdhMmVcdTgxNmJcdThkYTNcdTkxNTJcdTk5OTZcdTUxMTJcdTUzZDdcdTU0NmFcdTViZmZcdTYzODhcdTZhMzlcdTdkYWNcdTk3MDBcdTU2ZGFcdTUzY2VcdTU0NjgiXSxbIjhmNDAiLCJcdTViOTdcdTVjMzFcdTVkZGVcdTRmZWVcdTYxMDFcdTYyZmVcdTZkMzJcdTc5YzBc''@;'; put 'put ''dTc5Y2JcdTdkNDJcdTdlNGRcdTdmZDJcdTgxZWRcdTgyMWZcdTg0OTBcdTg4NDZcdTg5NzJcdThiOTBcdThlNzRcdThmMmZcdTkwMzFcdTkxNGJcdTkxNmNcdTk2YzZcdTkxOWNcdTRlYzBcdTRmNGZcdTUxNDVcdTUzNDFcdTVmOTNcdTYyMGVcdTY3ZDRcdTZjNDFcdTZlMGJcdTczNjNcdTdl''@;'; put 'put ''MjZcdTkxY2RcdTkyODNcdTUzZDRcdTU5MTlcdTViYmZcdTZkZDFcdTc5NWRcdTdlMmVcdTdjOWJcdTU4N2VcdTcxOWZcdTUxZmFcdTg4NTNcdThmZjBcdTRmY2FcdTVjZmJcdTY2MjVcdTc3YWNcdTdhZTNcdTgyMWNcdTk5ZmZcdTUxYzZcdTVmYWFcdTY1ZWNcdTY5NmZcdTZiODlcdTZkZjMi''@;'; put 'put ''XSxbIjhmODAiLCJcdTZlOTZcdTZmNjRcdTc2ZmVcdTdkMTRcdTVkZTFcdTkwNzVcdTkxODdcdTk4MDZcdTUxZTZcdTUyMWRcdTYyNDBcdTY2OTFcdTY2ZDlcdTZlMWFcdTVlYjZcdTdkZDJcdTdmNzJcdTY2ZjhcdTg1YWZcdTg1ZjdcdThhZjhcdTUyYTlcdTUzZDlcdTU5NzNcdTVlOGZcdTVm''@;'; put 'put ''OTBcdTYwNTVcdTkyZTRcdTk2NjRcdTUwYjdcdTUxMWZcdTUyZGRcdTUzMjBcdTUzNDdcdTUzZWNcdTU0ZThcdTU1NDZcdTU1MzFcdTU2MTdcdTU5NjhcdTU5YmVcdTVhM2NcdTViYjVcdTVjMDZcdTVjMGZcdTVjMTFcdTVjMWFcdTVlODRcdTVlOGFcdTVlZTBcdTVmNzBcdTYyN2ZcdTYyODRc''@;'; put 'put ''dTYyZGJcdTYzOGNcdTYzNzdcdTY2MDdcdTY2MGNcdTY2MmRcdTY2NzZcdTY3N2VcdTY4YTJcdTZhMWZcdTZhMzVcdTZjYmNcdTZkODhcdTZlMDlcdTZlNThcdTcxM2NcdTcxMjZcdTcxNjdcdTc1YzdcdTc3MDFcdTc4NWRcdTc5MDFcdTc5NjVcdTc5ZjBcdTdhZTBcdTdiMTFcdTdjYTdcdTdk''@;'; put 'put ''MzlcdTgwOTZcdTgzZDZcdTg0OGJcdTg1NDlcdTg4NWRcdTg4ZjNcdThhMWZcdThhM2NcdThhNTRcdThhNzNcdThjNjFcdThjZGVcdTkxYTRcdTkyNjZcdTkzN2VcdTk0MThcdTk2OWNcdTk3OThcdTRlMGFcdTRlMDhcdTRlMWVcdTRlNTdcdTUxOTdcdTUyNzBcdTU3Y2VcdTU4MzRcdTU4Y2Nc''@;'; put 'put ''dTViMjJcdTVlMzhcdTYwYzVcdTY0ZmVcdTY3NjFcdTY3NTZcdTZkNDRcdTcyYjZcdTc1NzNcdTdhNjNcdTg0YjhcdThiNzJcdTkxYjhcdTkzMjBcdTU2MzFcdTU3ZjRcdTk4ZmUiXSxbIjkwNDAiLCJcdTYyZWRcdTY5MGRcdTZiOTZcdTcxZWRcdTdlNTRcdTgwNzdcdTgyNzJcdTg5ZTZcdTk4''@;'; put 'put ''ZGZcdTg3NTVcdThmYjFcdTVjM2JcdTRmMzhcdTRmZTFcdTRmYjVcdTU1MDdcdTVhMjBcdTViZGRcdTViZTlcdTVmYzNcdTYxNGVcdTYzMmZcdTY1YjBcdTY2NGJcdTY4ZWVcdTY5OWJcdTZkNzhcdTZkZjFcdTc1MzNcdTc1YjlcdTc3MWZcdTc5NWVcdTc5ZTZcdTdkMzNcdTgxZTNcdTgyYWZc''@;'; put 'put ''dTg1YWFcdTg5YWFcdThhM2FcdThlYWJcdThmOWJcdTkwMzJcdTkxZGRcdTk3MDdcdTRlYmFcdTRlYzFcdTUyMDNcdTU4NzVcdTU4ZWNcdTVjMGJcdTc1MWFcdTVjM2RcdTgxNGVcdThhMGFcdThmYzVcdTk2NjNcdTk3NmRcdTdiMjVcdThhY2ZcdTk4MDhcdTkxNjJcdTU2ZjNcdTUzYTgiXSxb''@;'; put 'put ''IjkwODAiLCJcdTkwMTdcdTU0MzlcdTU3ODJcdTVlMjVcdTYzYThcdTZjMzRcdTcwOGFcdTc3NjFcdTdjOGJcdTdmZTBcdTg4NzBcdTkwNDJcdTkxNTRcdTkzMTBcdTkzMThcdTk2OGZcdTc0NWVcdTlhYzRcdTVkMDdcdTVkNjlcdTY1NzBcdTY3YTJcdThkYThcdTk2ZGJcdTYzNmVcdTY3NDlc''@;'; put 'put ''dTY5MTlcdTgzYzVcdTk4MTdcdTk2YzBcdTg4ZmVcdTZmODRcdTY0N2FcdTViZjhcdTRlMTZcdTcwMmNcdTc1NWRcdTY2MmZcdTUxYzRcdTUyMzZcdTUyZTJcdTU5ZDNcdTVmODFcdTYwMjdcdTYyMTBcdTY1M2ZcdTY1NzRcdTY2MWZcdTY2NzRcdTY4ZjJcdTY4MTZcdTZiNjNcdTZlMDVcdTcy''@;'; put 'put ''NzJcdTc1MWZcdTc2ZGJcdTdjYmVcdTgwNTZcdTU4ZjBcdTg4ZmRcdTg5N2ZcdThhYTBcdThhOTNcdThhY2JcdTkwMWRcdTkxOTJcdTk3NTJcdTk3NTlcdTY1ODlcdTdhMGVcdTgxMDZcdTk2YmJcdTVlMmRcdTYwZGNcdTYyMWFcdTY1YTVcdTY2MTRcdTY3OTBcdTc3ZjNcdTdhNGRcdTdjNGRc''@;'; put 'put ''dTdlM2VcdTgxMGFcdThjYWNcdThkNjRcdThkZTFcdThlNWZcdTc4YTlcdTUyMDdcdTYyZDlcdTYzYTVcdTY0NDJcdTYyOThcdThhMmRcdTdhODNcdTdiYzBcdThhYWNcdTk2ZWFcdTdkNzZcdTgyMGNcdTg3NDlcdTRlZDlcdTUxNDhcdTUzNDNcdTUzNjBcdTViYTNcdTVjMDJcdTVjMTZcdTVk''@;'; put 'put ''ZGRcdTYyMjZcdTYyNDdcdTY0YjBcdTY4MTNcdTY4MzRcdTZjYzlcdTZkNDVcdTZkMTdcdTY3ZDNcdTZmNWNcdTcxNGVcdTcxN2RcdTY1Y2JcdTdhN2ZcdTdiYWRcdTdkZGEiXSxbIjkxNDAiLCJcdTdlNGFcdTdmYThcdTgxN2FcdTgyMWJcdTgyMzlcdTg1YTZcdThhNmVcdThjY2VcdThkZjVc''@;'; put 'put ''dTkwNzhcdTkwNzdcdTkyYWRcdTkyOTFcdTk1ODNcdTliYWVcdTUyNGRcdTU1ODRcdTZmMzhcdTcxMzZcdTUxNjhcdTc5ODVcdTdlNTVcdTgxYjNcdTdjY2VcdTU2NGNcdTU4NTFcdTVjYThcdTYzYWFcdTY2ZmVcdTY2ZmRcdTY5NWFcdTcyZDlcdTc1OGZcdTc1OGVcdTc5MGVcdTc5NTZcdTc5''@;'; put 'put ''ZGZcdTdjOTdcdTdkMjBcdTdkNDRcdTg2MDdcdThhMzRcdTk2M2JcdTkwNjFcdTlmMjBcdTUwZTdcdTUyNzVcdTUzY2NcdTUzZTJcdTUwMDlcdTU1YWFcdTU4ZWVcdTU5NGZcdTcyM2RcdTViOGJcdTVjNjRcdTUzMWRcdTYwZTNcdTYwZjNcdTYzNWNcdTYzODNcdTYzM2ZcdTYzYmIiXSxbIjkx''@;'; put 'put ''ODAiLCJcdTY0Y2RcdTY1ZTlcdTY2ZjlcdTVkZTNcdTY5Y2RcdTY5ZmRcdTZmMTVcdTcxZTVcdTRlODlcdTc1ZTlcdTc2ZjhcdTdhOTNcdTdjZGZcdTdkY2ZcdTdkOWNcdTgwNjFcdTgzNDlcdTgzNThcdTg0NmNcdTg0YmNcdTg1ZmJcdTg4YzVcdThkNzBcdTkwMDFcdTkwNmRcdTkzOTdcdTk3''@;'; put 'put ''MWNcdTlhMTJcdTUwY2ZcdTU4OTdcdTYxOGVcdTgxZDNcdTg1MzVcdThkMDhcdTkwMjBcdTRmYzNcdTUwNzRcdTUyNDdcdTUzNzNcdTYwNmZcdTYzNDlcdTY3NWZcdTZlMmNcdThkYjNcdTkwMWZcdTRmZDdcdTVjNWVcdThjY2FcdTY1Y2ZcdTdkOWFcdTUzNTJcdTg4OTZcdTUxNzZcdTYzYzNc''@;'; put 'put ''dTViNThcdTViNmJcdTVjMGFcdTY0MGRcdTY3NTFcdTkwNWNcdTRlZDZcdTU5MWFcdTU5MmFcdTZjNzBcdThhNTFcdTU1M2VcdTU4MTVcdTU5YTVcdTYwZjBcdTYyNTNcdTY3YzFcdTgyMzVcdTY5NTVcdTk2NDBcdTk5YzRcdTlhMjhcdTRmNTNcdTU4MDZcdTViZmVcdTgwMTBcdTVjYjFcdTVl''@;'; put 'put ''MmZcdTVmODVcdTYwMjBcdTYxNGJcdTYyMzRcdTY2ZmZcdTZjZjBcdTZlZGVcdTgwY2VcdTgxN2ZcdTgyZDRcdTg4OGJcdThjYjhcdTkwMDBcdTkwMmVcdTk2OGFcdTllZGJcdTliZGJcdTRlZTNcdTUzZjBcdTU5MjdcdTdiMmNcdTkxOGRcdTk4NGNcdTlkZjlcdTZlZGRcdTcwMjdcdTUzNTNc''@;'; put 'put ''dTU1NDRcdTViODVcdTYyNThcdTYyOWVcdTYyZDNcdTZjYTJcdTZmZWZcdTc0MjJcdThhMTdcdTk0MzhcdTZmYzFcdThhZmVcdTgzMzhcdTUxZTdcdTg2ZjhcdTUzZWEiXSxbIjkyNDAiLCJcdTUzZTlcdTRmNDZcdTkwNTRcdThmYjBcdTU5NmFcdTgxMzFcdTVkZmRcdTdhZWFcdThmYmZcdTY4''@;'; put 'put ''ZGFcdThjMzdcdTcyZjhcdTljNDhcdTZhM2RcdThhYjBcdTRlMzlcdTUzNThcdTU2MDZcdTU3NjZcdTYyYzVcdTYzYTJcdTY1ZTZcdTZiNGVcdTZkZTFcdTZlNWJcdTcwYWRcdTc3ZWRcdTdhZWZcdTdiYWFcdTdkYmJcdTgwM2RcdTgwYzZcdTg2Y2JcdThhOTVcdTkzNWJcdTU2ZTNcdTU4Yzdc''@;'; put 'put ''dTVmM2VcdTY1YWRcdTY2OTZcdTZhODBcdTZiYjVcdTc1MzdcdThhYzdcdTUwMjRcdTc3ZTVcdTU3MzBcdTVmMWJcdTYwNjVcdTY2N2FcdTZjNjBcdTc1ZjRcdTdhMWFcdTdmNmVcdTgxZjRcdTg3MThcdTkwNDVcdTk5YjNcdTdiYzlcdTc1NWNcdTdhZjlcdTdiNTFcdTg0YzQiXSxbIjkyODAi''@;'; put 'put ''LCJcdTkwMTBcdTc5ZTlcdTdhOTJcdTgzMzZcdTVhZTFcdTc3NDBcdTRlMmRcdTRlZjJcdTViOTlcdTVmZTBcdTYyYmRcdTY2M2NcdTY3ZjFcdTZjZThcdTg2NmJcdTg4NzdcdThhM2JcdTkxNGVcdTkyZjNcdTk5ZDBcdTZhMTdcdTcwMjZcdTczMmFcdTgyZTdcdTg0NTdcdThjYWZcdTRlMDFc''@;'; put 'put ''dTUxNDZcdTUxY2JcdTU1OGJcdTViZjVcdTVlMTZcdTVlMzNcdTVlODFcdTVmMTRcdTVmMzVcdTVmNmJcdTVmYjRcdTYxZjJcdTYzMTFcdTY2YTJcdTY3MWRcdTZmNmVcdTcyNTJcdTc1M2FcdTc3M2FcdTgwNzRcdTgxMzlcdTgxNzhcdTg3NzZcdThhYmZcdThhZGNcdThkODVcdThkZjNcdTky''@;'; put 'put ''OWFcdTk1NzdcdTk4MDJcdTljZTVcdTUyYzVcdTYzNTdcdTc2ZjRcdTY3MTVcdTZjODhcdTczY2RcdThjYzNcdTkzYWVcdTk2NzNcdTZkMjVcdTU4OWNcdTY5MGVcdTY5Y2NcdThmZmRcdTkzOWFcdTc1ZGJcdTkwMWFcdTU4NWFcdTY4MDJcdTYzYjRcdTY5ZmJcdTRmNDNcdTZmMmNcdTY3ZDhc''@;'; put 'put ''dThmYmJcdTg1MjZcdTdkYjRcdTkzNTRcdTY5M2ZcdTZmNzBcdTU3NmFcdTU4ZjdcdTViMmNcdTdkMmNcdTcyMmFcdTU0MGFcdTkxZTNcdTlkYjRcdTRlYWRcdTRmNGVcdTUwNWNcdTUwNzVcdTUyNDNcdThjOWVcdTU0NDhcdTU4MjRcdTViOWFcdTVlMWRcdTVlOTVcdTVlYWRcdTVlZjdcdTVm''@;'; put 'put ''MWZcdTYwOGNcdTYyYjVcdTYzM2FcdTYzZDBcdTY4YWZcdTZjNDBcdTc4ODdcdTc5OGVcdTdhMGJcdTdkZTBcdTgyNDdcdThhMDJcdThhZTZcdThlNDRcdTkwMTMiXSxbIjkzNDAiLCJcdTkwYjhcdTkxMmRcdTkxZDhcdTlmMGVcdTZjZTVcdTY0NThcdTY0ZTJcdTY1NzVcdTZlZjRcdTc2ODRc''@;'; put 'put ''dTdiMWJcdTkwNjlcdTkzZDFcdTZlYmFcdTU0ZjJcdTVmYjlcdTY0YTRcdThmNGRcdThmZWRcdTkyNDRcdTUxNzhcdTU4NmJcdTU5MjlcdTVjNTVcdTVlOTdcdTZkZmJcdTdlOGZcdTc1MWNcdThjYmNcdThlZTJcdTk4NWJcdTcwYjlcdTRmMWRcdTZiYmZcdTZmYjFcdTc1MzBcdTk2ZmJcdTUx''@;'; put 'put ''NGVcdTU0MTBcdTU4MzVcdTU4NTdcdTU5YWNcdTVjNjBcdTVmOTJcdTY1OTdcdTY3NWNcdTZlMjFcdTc2N2JcdTgzZGZcdThjZWRcdTkwMTRcdTkwZmRcdTkzNGRcdTc4MjVcdTc4M2FcdTUyYWFcdTVlYTZcdTU3MWZcdTU5NzRcdTYwMTJcdTUwMTJcdTUxNWFcdTUxYWMiXSxbIjkzODAiLCJc''@;'; put 'put ''dTUxY2RcdTUyMDBcdTU1MTBcdTU4NTRcdTU4NThcdTU5NTdcdTViOTVcdTVjZjZcdTVkOGJcdTYwYmNcdTYyOTVcdTY0MmRcdTY3NzFcdTY4NDNcdTY4YmNcdTY4ZGZcdTc2ZDdcdTZkZDhcdTZlNmZcdTZkOWJcdTcwNmZcdTcxYzhcdTVmNTNcdTc1ZDhcdTc5NzdcdTdiNDlcdTdiNTRcdTdi''@;'; put 'put ''NTJcdTdjZDZcdTdkNzFcdTUyMzBcdTg0NjNcdTg1NjlcdTg1ZTRcdThhMGVcdThiMDRcdThjNDZcdThlMGZcdTkwMDNcdTkwMGZcdTk0MTlcdTk2NzZcdTk4MmRcdTlhMzBcdTk1ZDhcdTUwY2RcdTUyZDVcdTU0MGNcdTU4MDJcdTVjMGVcdTYxYTdcdTY0OWVcdTZkMWVcdTc3YjNcdTdhZTVc''@;'; put 'put ''dTgwZjRcdTg0MDRcdTkwNTNcdTkyODVcdTVjZTBcdTlkMDdcdTUzM2ZcdTVmOTdcdTVmYjNcdTZkOWNcdTcyNzlcdTc3NjNcdTc5YmZcdTdiZTRcdTZiZDJcdTcyZWNcdThhYWRcdTY4MDNcdTZhNjFcdTUxZjhcdTdhODFcdTY5MzRcdTVjNGFcdTljZjZcdTgyZWJcdTViYzVcdTkxNDlcdTcw''@;'; put 'put ''MWVcdTU2NzhcdTVjNmZcdTYwYzdcdTY1NjZcdTZjOGNcdThjNWFcdTkwNDFcdTk4MTNcdTU0NTFcdTY2YzdcdTkyMGRcdTU5NDhcdTkwYTNcdTUxODVcdTRlNGRcdTUxZWFcdTg1OTlcdThiMGVcdTcwNThcdTYzN2FcdTkzNGJcdTY5NjJcdTk5YjRcdTdlMDRcdTc1NzdcdTUzNTdcdTY5NjBc''@;'; put 'put ''dThlZGZcdTk2ZTNcdTZjNWRcdTRlOGNcdTVjM2NcdTVmMTBcdThmZTlcdTUzMDJcdThjZDFcdTgwODlcdTg2NzlcdTVlZmZcdTY1ZTVcdTRlNzNcdTUxNjUiXSxbIjk0NDAiLCJcdTU5ODJcdTVjM2ZcdTk3ZWVcdTRlZmJcdTU5OGFcdTVmY2RcdThhOGRcdTZmZTFcdTc5YjBcdTc5NjJcdTVi''@;'; put 'put ''ZTdcdTg0NzFcdTczMmJcdTcxYjFcdTVlNzRcdTVmZjVcdTYzN2JcdTY0OWFcdTcxYzNcdTdjOThcdTRlNDNcdTVlZmNcdTRlNGJcdTU3ZGNcdTU2YTJcdTYwYTlcdTZmYzNcdTdkMGRcdTgwZmRcdTgxMzNcdTgxYmZcdThmYjJcdTg5OTdcdTg2YTRcdTVkZjRcdTYyOGFcdTY0YWRcdTg5ODdc''@;'; put 'put ''dTY3NzdcdTZjZTJcdTZkM2VcdTc0MzZcdTc4MzRcdTVhNDZcdTdmNzVcdTgyYWRcdTk5YWNcdTRmZjNcdTVlYzNcdTYyZGRcdTYzOTJcdTY1NTdcdTY3NmZcdTc2YzNcdTcyNGNcdTgwY2NcdTgwYmFcdThmMjlcdTkxNGRcdTUwMGRcdTU3ZjlcdTVhOTJcdTY4ODUiXSxbIjk0ODAiLCJcdTY5''@;'; put 'put ''NzNcdTcxNjRcdTcyZmRcdThjYjdcdTU4ZjJcdThjZTBcdTk2NmFcdTkwMTlcdTg3N2ZcdTc5ZTRcdTc3ZTdcdTg0MjlcdTRmMmZcdTUyNjVcdTUzNWFcdTYyY2RcdTY3Y2ZcdTZjY2FcdTc2N2RcdTdiOTRcdTdjOTVcdTgyMzZcdTg1ODRcdThmZWJcdTY2ZGRcdTZmMjBcdTcyMDZcdTdlMWJc''@;'; put 'put ''dTgzYWJcdTk5YzFcdTllYTZcdTUxZmRcdTdiYjFcdTc4NzJcdTdiYjhcdTgwODdcdTdiNDhcdTZhZThcdTVlNjFcdTgwOGNcdTc1NTFcdTc1NjBcdTUxNmJcdTkyNjJcdTZlOGNcdTc2N2FcdTkxOTdcdTlhZWFcdTRmMTBcdTdmNzBcdTYyOWNcdTdiNGZcdTk1YTVcdTljZTlcdTU2N2FcdTU4''@;'; put 'put ''NTlcdTg2ZTRcdTk2YmNcdTRmMzRcdTUyMjRcdTUzNGFcdTUzY2RcdTUzZGJcdTVlMDZcdTY0MmNcdTY1OTFcdTY3N2ZcdTZjM2VcdTZjNGVcdTcyNDhcdTcyYWZcdTczZWRcdTc1NTRcdTdlNDFcdTgyMmNcdTg1ZTlcdThjYTlcdTdiYzRcdTkxYzZcdTcxNjlcdTk4MTJcdTk4ZWZcdTYzM2Rc''@;'; put 'put ''dTY2NjlcdTc1NmFcdTc2ZTRcdTc4ZDBcdTg1NDNcdTg2ZWVcdTUzMmFcdTUzNTFcdTU0MjZcdTU5ODNcdTVlODdcdTVmN2NcdTYwYjJcdTYyNDlcdTYyNzlcdTYyYWJcdTY1OTBcdTZiZDRcdTZjY2NcdTc1YjJcdTc2YWVcdTc4OTFcdTc5ZDhcdTdkY2JcdTdmNzdcdTgwYTVcdTg4YWJcdThh''@;'; put 'put ''YjlcdThjYmJcdTkwN2ZcdTk3NWVcdTk4ZGJcdTZhMGJcdTdjMzhcdTUwOTlcdTVjM2VcdTVmYWVcdTY3ODdcdTZiZDhcdTc0MzVcdTc3MDlcdTdmOGUiXSxbIjk1NDAiLCJcdTlmM2JcdTY3Y2FcdTdhMTdcdTUzMzlcdTc1OGJcdTlhZWRcdTVmNjZcdTgxOWRcdTgzZjFcdTgwOThcdTVmM2Nc''@;'; put 'put ''dTVmYzVcdTc1NjJcdTdiNDZcdTkwM2NcdTY4NjdcdTU5ZWJcdTVhOWJcdTdkMTBcdTc2N2VcdThiMmNcdTRmZjVcdTVmNmFcdTZhMTlcdTZjMzdcdTZmMDJcdTc0ZTJcdTc5NjhcdTg4NjhcdThhNTVcdThjNzlcdTVlZGZcdTYzY2ZcdTc1YzVcdTc5ZDJcdTgyZDdcdTkzMjhcdTkyZjJcdTg0''@;'; put 'put ''OWNcdTg2ZWRcdTljMmRcdTU0YzFcdTVmNmNcdTY1OGNcdTZkNWNcdTcwMTVcdThjYTdcdThjZDNcdTk4M2JcdTY1NGZcdTc0ZjZcdTRlMGRcdTRlZDhcdTU3ZTBcdTU5MmJcdTVhNjZcdTViY2NcdTUxYThcdTVlMDNcdTVlOWNcdTYwMTZcdTYyNzZcdTY1NzciXSxbIjk1ODAiLCJcdTY1YTdc''@;'; put 'put ''dTY2NmVcdTZkNmVcdTcyMzZcdTdiMjZcdTgxNTBcdTgxOWFcdTgyOTlcdThiNWNcdThjYTBcdThjZTZcdThkNzRcdTk2MWNcdTk2NDRcdTRmYWVcdTY0YWJcdTZiNjZcdTgyMWVcdTg0NjFcdTg1NmFcdTkwZThcdTVjMDFcdTY5NTNcdTk4YThcdTg0N2FcdTg1NTdcdTRmMGZcdTUyNmZcdTVm''@;'; put 'put ''YTlcdTVlNDVcdTY3MGRcdTc5OGZcdTgxNzlcdTg5MDdcdTg5ODZcdTZkZjVcdTVmMTdcdTYyNTVcdTZjYjhcdTRlY2ZcdTcyNjlcdTliOTJcdTUyMDZcdTU0M2JcdTU2NzRcdTU4YjNcdTYxYTRcdTYyNmVcdTcxMWFcdTU5NmVcdTdjODlcdTdjZGVcdTdkMWJcdTk2ZjBcdTY1ODdcdTgwNWVc''@;'; put 'put ''dTRlMTlcdTRmNzVcdTUxNzVcdTU4NDBcdTVlNjNcdTVlNzNcdTVmMGFcdTY3YzRcdTRlMjZcdTg1M2RcdTk1ODlcdTk2NWJcdTdjNzNcdTk4MDFcdTUwZmJcdTU4YzFcdTc2NTZcdTc4YTdcdTUyMjVcdTc3YTVcdTg1MTFcdTdiODZcdTUwNGZcdTU5MDlcdTcyNDdcdTdiYzdcdTdkZThcdThm''@;'; put 'put ''YmFcdThmZDRcdTkwNGRcdTRmYmZcdTUyYzlcdTVhMjlcdTVmMDFcdTk3YWRcdTRmZGRcdTgyMTdcdTkyZWFcdTU3MDNcdTYzNTVcdTZiNjlcdTc1MmJcdTg4ZGNcdThmMTRcdTdhNDJcdTUyZGZcdTU4OTNcdTYxNTVcdTYyMGFcdTY2YWVcdTZiY2RcdTdjM2ZcdTgzZTlcdTUwMjNcdTRmZjhc''@;'; put 'put ''dTUzMDVcdTU0NDZcdTU4MzFcdTU5NDlcdTViOWRcdTVjZjBcdTVjZWZcdTVkMjlcdTVlOTZcdTYyYjFcdTYzNjdcdTY1M2VcdTY1YjlcdTY3MGIiXSxbIjk2NDAiLCJcdTZjZDVcdTZjZTFcdTcwZjlcdTc4MzJcdTdlMmJcdTgwZGVcdTgyYjNcdTg0MGNcdTg0ZWNcdTg3MDJcdTg5MTJcdThh''@;'; put 'put ''MmFcdThjNGFcdTkwYTZcdTkyZDJcdTk4ZmRcdTljZjNcdTlkNmNcdTRlNGZcdTRlYTFcdTUwOGRcdTUyNTZcdTU3NGFcdTU5YThcdTVlM2RcdTVmZDhcdTVmZDlcdTYyM2ZcdTY2YjRcdTY3MWJcdTY3ZDBcdTY4ZDJcdTUxOTJcdTdkMjFcdTgwYWFcdTgxYThcdThiMDBcdThjOGNcdThjYmZc''@;'; put 'put ''dTkyN2VcdTk2MzJcdTU0MjBcdTk4MmNcdTUzMTdcdTUwZDVcdTUzNWNcdTU4YThcdTY0YjJcdTY3MzRcdTcyNjdcdTc3NjZcdTdhNDZcdTkxZTZcdTUyYzNcdTZjYTFcdTZiODZcdTU4MDBcdTVlNGNcdTU5NTRcdTY3MmNcdTdmZmJcdTUxZTFcdTc2YzYiXSxbIjk2ODAiLCJcdTY0NjlcdTc4''@;'; put 'put ''ZThcdTliNTRcdTllYmJcdTU3Y2JcdTU5YjlcdTY2MjdcdTY3OWFcdTZiY2VcdTU0ZTlcdTY5ZDlcdTVlNTVcdTgxOWNcdTY3OTVcdTliYWFcdTY3ZmVcdTljNTJcdTY4NWRcdTRlYTZcdTRmZTNcdTUzYzhcdTYyYjlcdTY3MmJcdTZjYWJcdThmYzRcdTRmYWRcdTdlNmRcdTllYmZcdTRlMDdc''@;'; put 'put ''dTYxNjJcdTZlODBcdTZmMmJcdTg1MTNcdTU0NzNcdTY3MmFcdTliNDVcdTVkZjNcdTdiOTVcdTVjYWNcdTViYzZcdTg3MWNcdTZlNGFcdTg0ZDFcdTdhMTRcdTgxMDhcdTU5OTlcdTdjOGRcdTZjMTFcdTc3MjBcdTUyZDlcdTU5MjJcdTcxMjFcdTcyNWZcdTc3ZGJcdTk3MjdcdTlkNjFcdTY5''@;'; put 'put ''MGJcdTVhN2ZcdTVhMThcdTUxYTVcdTU0MGRcdTU0N2RcdTY2MGVcdTc2ZGZcdThmZjdcdTkyOThcdTljZjRcdTU5ZWFcdTcyNWRcdTZlYzVcdTUxNGRcdTY4YzlcdTdkYmZcdTdkZWNcdTk3NjJcdTllYmFcdTY0NzhcdTZhMjFcdTgzMDJcdTU5ODRcdTViNWZcdTZiZGJcdTczMWJcdTc2ZjJc''@;'; put 'put ''dTdkYjJcdTgwMTdcdTg0OTlcdTUxMzJcdTY3MjhcdTllZDlcdTc2ZWVcdTY3NjJcdTUyZmZcdTk5MDVcdTVjMjRcdTYyM2JcdTdjN2VcdThjYjBcdTU1NGZcdTYwYjZcdTdkMGJcdTk1ODBcdTUzMDFcdTRlNWZcdTUxYjZcdTU5MWNcdTcyM2FcdTgwMzZcdTkxY2VcdTVmMjVcdTc3ZTJcdTUz''@;'; put 'put ''ODRcdTVmNzlcdTdkMDRcdTg1YWNcdThhMzNcdThlOGRcdTk3NTZcdTY3ZjNcdTg1YWVcdTk0NTNcdTYxMDlcdTYxMDhcdTZjYjlcdTc2NTIiXSxbIjk3NDAiLCJcdThhZWRcdThmMzhcdTU1MmZcdTRmNTFcdTUxMmFcdTUyYzdcdTUzY2JcdTViYTVcdTVlN2RcdTYwYTBcdTYxODJcdTYzZDZc''@;'; put 'put ''dTY3MDlcdTY3ZGFcdTZlNjdcdTZkOGNcdTczMzZcdTczMzdcdTc1MzFcdTc5NTBcdTg4ZDVcdThhOThcdTkwNGFcdTkwOTFcdTkwZjVcdTk2YzRcdTg3OGRcdTU5MTVcdTRlODhcdTRmNTlcdTRlMGVcdThhODlcdThmM2ZcdTk4MTBcdTUwYWRcdTVlN2NcdTU5OTZcdTViYjlcdTVlYjhcdTYz''@;'; put 'put ''ZGFcdTYzZmFcdTY0YzFcdTY2ZGNcdTY5NGFcdTY5ZDhcdTZkMGJcdTZlYjZcdTcxOTRcdTc1MjhcdTdhYWZcdTdmOGFcdTgwMDBcdTg0NDlcdTg0YzlcdTg5ODFcdThiMjFcdThlMGFcdTkwNjVcdTk2N2RcdTk5MGFcdTYxN2VcdTYyOTFcdTZiMzIiXSxbIjk3ODAiLCJcdTZjODNcdTZkNzRc''@;'; put 'put ''dTdmY2NcdTdmZmNcdTZkYzBcdTdmODVcdTg3YmFcdTg4ZjhcdTY3NjVcdTgzYjFcdTk4M2NcdTk2ZjdcdTZkMWJcdTdkNjFcdTg0M2RcdTkxNmFcdTRlNzFcdTUzNzVcdTVkNTBcdTZiMDRcdTZmZWJcdTg1Y2RcdTg2MmRcdTg5YTdcdTUyMjlcdTU0MGZcdTVjNjVcdTY3NGVcdTY4YThcdTc0''@;'; put 'put ''MDZcdTc0ODNcdTc1ZTJcdTg4Y2ZcdTg4ZTFcdTkxY2NcdTk2ZTJcdTk2NzhcdTVmOGJcdTczODdcdTdhY2JcdTg0NGVcdTYzYTBcdTc1NjVcdTUyODlcdTZkNDFcdTZlOWNcdTc0MDlcdTc1NTlcdTc4NmJcdTdjOTJcdTk2ODZcdTdhZGNcdTlmOGRcdTRmYjZcdTYxNmVcdTY1YzVcdTg2NWNc''@;'; put 'put ''dTRlODZcdTRlYWVcdTUwZGFcdTRlMjFcdTUxY2NcdTViZWVcdTY1OTlcdTY4ODFcdTZkYmNcdTczMWZcdTc2NDJcdTc3YWRcdTdhMWNcdTdjZTdcdTgyNmZcdThhZDJcdTkwN2NcdTkxY2ZcdTk2NzVcdTk4MThcdTUyOWJcdTdkZDFcdTUwMmJcdTUzOThcdTY3OTdcdTZkY2JcdTcxZDBcdTc0''@;'; put 'put ''MzNcdTgxZThcdThmMmFcdTk2YTNcdTljNTdcdTllOWZcdTc0NjBcdTU4NDFcdTZkOTlcdTdkMmZcdTk4NWVcdTRlZTRcdTRmMzZcdTRmOGJcdTUxYjdcdTUyYjFcdTVkYmFcdTYwMWNcdTczYjJcdTc5M2NcdTgyZDNcdTkyMzRcdTk2YjdcdTk2ZjZcdTk3MGFcdTllOTdcdTlmNjJcdTY2YTZc''@;'; put 'put ''dTZiNzRcdTUyMTdcdTUyYTNcdTcwYzhcdTg4YzJcdTVlYzlcdTYwNGJcdTYxOTBcdTZmMjNcdTcxNDlcdTdjM2VcdTdkZjRcdTgwNmYiXSxbIjk4NDAiLCJcdTg0ZWVcdTkwMjNcdTkzMmNcdTU0NDJcdTliNmZcdTZhZDNcdTcwODlcdThjYzJcdThkZWZcdTk3MzJcdTUyYjRcdTVhNDFcdTVl''@;'; put 'put ''Y2FcdTVmMDRcdTY3MTdcdTY5N2NcdTY5OTRcdTZkNmFcdTZmMGZcdTcyNjJcdTcyZmNcdTdiZWRcdTgwMDFcdTgwN2VcdTg3NGJcdTkwY2VcdTUxNmRcdTllOTNcdTc5ODRcdTgwOGJcdTkzMzJcdThhZDZcdTUwMmRcdTU0OGNcdThhNzFcdTZiNmFcdThjYzRcdTgxMDdcdTYwZDFcdTY3YTBc''@;'; put 'put ''dTlkZjJcdTRlOTlcdTRlOThcdTljMTBcdThhNmJcdTg1YzFcdTg1NjhcdTY5MDBcdTZlN2VcdTc4OTdcdTgxNTUiXSxbIjk4OWYiLCJcdTVmMGNcdTRlMTBcdTRlMTVcdTRlMmFcdTRlMzFcdTRlMzZcdTRlM2NcdTRlM2ZcdTRlNDJcdTRlNTZcdTRlNThcdTRlODJcdTRlODVcdThjNmJcdTRl''@;'; put 'put ''OGFcdTgyMTJcdTVmMGRcdTRlOGVcdTRlOWVcdTRlOWZcdTRlYTBcdTRlYTJcdTRlYjBcdTRlYjNcdTRlYjZcdTRlY2VcdTRlY2RcdTRlYzRcdTRlYzZcdTRlYzJcdTRlZDdcdTRlZGVcdTRlZWRcdTRlZGZcdTRlZjdcdTRmMDlcdTRmNWFcdTRmMzBcdTRmNWJcdTRmNWRcdTRmNTdcdTRmNDdc''@;'; put 'put ''dTRmNzZcdTRmODhcdTRmOGZcdTRmOThcdTRmN2JcdTRmNjlcdTRmNzBcdTRmOTFcdTRmNmZcdTRmODZcdTRmOTZcdTUxMThcdTRmZDRcdTRmZGZcdTRmY2VcdTRmZDhcdTRmZGJcdTRmZDFcdTRmZGFcdTRmZDBcdTRmZTRcdTRmZTVcdTUwMWFcdTUwMjhcdTUwMTRcdTUwMmFcdTUwMjVcdTUw''@;'; put 'put ''MDVcdTRmMWNcdTRmZjZcdTUwMjFcdTUwMjlcdTUwMmNcdTRmZmVcdTRmZWZcdTUwMTFcdTUwMDZcdTUwNDNcdTUwNDdcdTY3MDNcdTUwNTVcdTUwNTBcdTUwNDhcdTUwNWFcdTUwNTZcdTUwNmNcdTUwNzhcdTUwODBcdTUwOWFcdTUwODVcdTUwYjRcdTUwYjIiXSxbIjk5NDAiLCJcdTUwYzlc''@;'; put 'put ''dTUwY2FcdTUwYjNcdTUwYzJcdTUwZDZcdTUwZGVcdTUwZTVcdTUwZWRcdTUwZTNcdTUwZWVcdTUwZjlcdTUwZjVcdTUxMDlcdTUxMDFcdTUxMDJcdTUxMTZcdTUxMTVcdTUxMTRcdTUxMWFcdTUxMjFcdTUxM2FcdTUxMzdcdTUxM2NcdTUxM2JcdTUxM2ZcdTUxNDBcdTUxNTJcdTUxNGNcdTUx''@;'; put 'put ''NTRcdTUxNjJcdTdhZjhcdTUxNjlcdTUxNmFcdTUxNmVcdTUxODBcdTUxODJcdTU2ZDhcdTUxOGNcdTUxODlcdTUxOGZcdTUxOTFcdTUxOTNcdTUxOTVcdTUxOTZcdTUxYTRcdTUxYTZcdTUxYTJcdTUxYTlcdTUxYWFcdTUxYWJcdTUxYjNcdTUxYjFcdTUxYjJcdTUxYjBcdTUxYjVcdTUxYmRc''@;'; put 'put ''dTUxYzVcdTUxYzlcdTUxZGJcdTUxZTBcdTg2NTVcdTUxZTlcdTUxZWQiXSxbIjk5ODAiLCJcdTUxZjBcdTUxZjVcdTUxZmVcdTUyMDRcdTUyMGJcdTUyMTRcdTUyMGVcdTUyMjdcdTUyMmFcdTUyMmVcdTUyMzNcdTUyMzlcdTUyNGZcdTUyNDRcdTUyNGJcdTUyNGNcdTUyNWVcdTUyNTRcdTUy''@;'; put 'put ''NmFcdTUyNzRcdTUyNjlcdTUyNzNcdTUyN2ZcdTUyN2RcdTUyOGRcdTUyOTRcdTUyOTJcdTUyNzFcdTUyODhcdTUyOTFcdThmYThcdThmYTdcdTUyYWNcdTUyYWRcdTUyYmNcdTUyYjVcdTUyYzFcdTUyY2RcdTUyZDdcdTUyZGVcdTUyZTNcdTUyZTZcdTk4ZWRcdTUyZTBcdTUyZjNcdTUyZjVc''@;'; put 'put ''dTUyZjhcdTUyZjlcdTUzMDZcdTUzMDhcdTc1MzhcdTUzMGRcdTUzMTBcdTUzMGZcdTUzMTVcdTUzMWFcdTUzMjNcdTUzMmZcdTUzMzFcdTUzMzNcdTUzMzhcdTUzNDBcdTUzNDZcdTUzNDVcdTRlMTdcdTUzNDlcdTUzNGRcdTUxZDZcdTUzNWVcdTUzNjlcdTUzNmVcdTU5MThcdTUzN2JcdTUz''@;'; put 'put ''NzdcdTUzODJcdTUzOTZcdTUzYTBcdTUzYTZcdTUzYTVcdTUzYWVcdTUzYjBcdTUzYjZcdTUzYzNcdTdjMTJcdTk2ZDlcdTUzZGZcdTY2ZmNcdTcxZWVcdTUzZWVcdTUzZThcdTUzZWRcdTUzZmFcdTU0MDFcdTU0M2RcdTU0NDBcdTU0MmNcdTU0MmRcdTU0M2NcdTU0MmVcdTU0MzZcdTU0Mjlc''@;'; put 'put ''dTU0MWRcdTU0NGVcdTU0OGZcdTU0NzVcdTU0OGVcdTU0NWZcdTU0NzFcdTU0NzdcdTU0NzBcdTU0OTJcdTU0N2JcdTU0ODBcdTU0NzZcdTU0ODRcdTU0OTBcdTU0ODZcdTU0YzdcdTU0YTJcdTU0YjhcdTU0YTVcdTU0YWNcdTU0YzRcdTU0YzhcdTU0YTgiXSxbIjlhNDAiLCJcdTU0YWJcdTU0''@;'; put 'put ''YzJcdTU0YTRcdTU0YmVcdTU0YmNcdTU0ZDhcdTU0ZTVcdTU0ZTZcdTU1MGZcdTU1MTRcdTU0ZmRcdTU0ZWVcdTU0ZWRcdTU0ZmFcdTU0ZTJcdTU1MzlcdTU1NDBcdTU1NjNcdTU1NGNcdTU1MmVcdTU1NWNcdTU1NDVcdTU1NTZcdTU1NTdcdTU1MzhcdTU1MzNcdTU1NWRcdTU1OTlcdTU1ODBc''@;'; put 'put ''dTU0YWZcdTU1OGFcdTU1OWZcdTU1N2JcdTU1N2VcdTU1OThcdTU1OWVcdTU1YWVcdTU1N2NcdTU1ODNcdTU1YTlcdTU1ODdcdTU1YThcdTU1ZGFcdTU1YzVcdTU1ZGZcdTU1YzRcdTU1ZGNcdTU1ZTRcdTU1ZDRcdTU2MTRcdTU1ZjdcdTU2MTZcdTU1ZmVcdTU1ZmRcdTU2MWJcdTU1ZjlcdTU2''@;'; put 'put ''NGVcdTU2NTBcdTcxZGZcdTU2MzRcdTU2MzZcdTU2MzJcdTU2MzgiXSxbIjlhODAiLCJcdTU2NmJcdTU2NjRcdTU2MmZcdTU2NmNcdTU2NmFcdTU2ODZcdTU2ODBcdTU2OGFcdTU2YTBcdTU2OTRcdTU2OGZcdTU2YTVcdTU2YWVcdTU2YjZcdTU2YjRcdTU2YzJcdTU2YmNcdTU2YzFcdTU2YzNc''@;'; put 'put ''dTU2YzBcdTU2YzhcdTU2Y2VcdTU2ZDFcdTU2ZDNcdTU2ZDdcdTU2ZWVcdTU2ZjlcdTU3MDBcdTU2ZmZcdTU3MDRcdTU3MDlcdTU3MDhcdTU3MGJcdTU3MGRcdTU3MTNcdTU3MThcdTU3MTZcdTU1YzdcdTU3MWNcdTU3MjZcdTU3MzdcdTU3MzhcdTU3NGVcdTU3M2JcdTU3NDBcdTU3NGZcdTU3''@;'; put 'put ''NjlcdTU3YzBcdTU3ODhcdTU3NjFcdTU3N2ZcdTU3ODlcdTU3OTNcdTU3YTBcdTU3YjNcdTU3YTRcdTU3YWFcdTU3YjBcdTU3YzNcdTU3YzZcdTU3ZDRcdTU3ZDJcdTU3ZDNcdTU4MGFcdTU3ZDZcdTU3ZTNcdTU4MGJcdTU4MTlcdTU4MWRcdTU4NzJcdTU4MjFcdTU4NjJcdTU4NGJcdTU4NzBc''@;'; put 'put ''dTZiYzBcdTU4NTJcdTU4M2RcdTU4NzlcdTU4ODVcdTU4YjlcdTU4OWZcdTU4YWJcdTU4YmFcdTU4ZGVcdTU4YmJcdTU4YjhcdTU4YWVcdTU4YzVcdTU4ZDNcdTU4ZDFcdTU4ZDdcdTU4ZDlcdTU4ZDhcdTU4ZTVcdTU4ZGNcdTU4ZTRcdTU4ZGZcdTU4ZWZcdTU4ZmFcdTU4ZjlcdTU4ZmJcdTU4''@;'; put 'put ''ZmNcdTU4ZmRcdTU5MDJcdTU5MGFcdTU5MTBcdTU5MWJcdTY4YTZcdTU5MjVcdTU5MmNcdTU5MmRcdTU5MzJcdTU5MzhcdTU5M2VcdTdhZDJcdTU5NTVcdTU5NTBcdTU5NGVcdTU5NWFcdTU5NThcdTU5NjJcdTU5NjBcdTU5NjdcdTU5NmNcdTU5NjkiXSxbIjliNDAiLCJcdTU5NzhcdTU5ODFc''@;'; put 'put ''dTU5OWRcdTRmNWVcdTRmYWJcdTU5YTNcdTU5YjJcdTU5YzZcdTU5ZThcdTU5ZGNcdTU5OGRcdTU5ZDlcdTU5ZGFcdTVhMjVcdTVhMWZcdTVhMTFcdTVhMWNcdTVhMDlcdTVhMWFcdTVhNDBcdTVhNmNcdTVhNDlcdTVhMzVcdTVhMzZcdTVhNjJcdTVhNmFcdTVhOWFcdTVhYmNcdTVhYmVcdTVh''@;'; put 'put ''Y2JcdTVhYzJcdTVhYmRcdTVhZTNcdTVhZDdcdTVhZTZcdTVhZTlcdTVhZDZcdTVhZmFcdTVhZmJcdTViMGNcdTViMGJcdTViMTZcdTViMzJcdTVhZDBcdTViMmFcdTViMzZcdTViM2VcdTViNDNcdTViNDVcdTViNDBcdTViNTFcdTViNTVcdTViNWFcdTViNWJcdTViNjVcdTViNjlcdTViNzBc''@;'; put 'put ''dTViNzNcdTViNzVcdTViNzhcdTY1ODhcdTViN2FcdTViODAiXSxbIjliODAiLCJcdTViODNcdTViYTZcdTViYjhcdTViYzNcdTViYzdcdTViYzlcdTViZDRcdTViZDBcdTViZTRcdTViZTZcdTViZTJcdTViZGVcdTViZTVcdTViZWJcdTViZjBcdTViZjZcdTViZjNcdTVjMDVcdTVjMDdcdTVj''@;'; put 'put ''MDhcdTVjMGRcdTVjMTNcdTVjMjBcdTVjMjJcdTVjMjhcdTVjMzhcdTVjMzlcdTVjNDFcdTVjNDZcdTVjNGVcdTVjNTNcdTVjNTBcdTVjNGZcdTViNzFcdTVjNmNcdTVjNmVcdTRlNjJcdTVjNzZcdTVjNzlcdTVjOGNcdTVjOTFcdTVjOTRcdTU5OWJcdTVjYWJcdTVjYmJcdTVjYjZcdTVjYmNc''@;'; put 'put ''dTVjYjdcdTVjYzVcdTVjYmVcdTVjYzdcdTVjZDlcdTVjZTlcdTVjZmRcdTVjZmFcdTVjZWRcdTVkOGNcdTVjZWFcdTVkMGJcdTVkMTVcdTVkMTdcdTVkNWNcdTVkMWZcdTVkMWJcdTVkMTFcdTVkMTRcdTVkMjJcdTVkMWFcdTVkMTlcdTVkMThcdTVkNGNcdTVkNTJcdTVkNGVcdTVkNGJcdTVk''@;'; put 'put ''NmNcdTVkNzNcdTVkNzZcdTVkODdcdTVkODRcdTVkODJcdTVkYTJcdTVkOWRcdTVkYWNcdTVkYWVcdTVkYmRcdTVkOTBcdTVkYjdcdTVkYmNcdTVkYzlcdTVkY2RcdTVkZDNcdTVkZDJcdTVkZDZcdTVkZGJcdTVkZWJcdTVkZjJcdTVkZjVcdTVlMGJcdTVlMWFcdTVlMTlcdTVlMTFcdTVlMWJc''@;'; put 'put ''dTVlMzZcdTVlMzdcdTVlNDRcdTVlNDNcdTVlNDBcdTVlNGVcdTVlNTdcdTVlNTRcdTVlNWZcdTVlNjJcdTVlNjRcdTVlNDdcdTVlNzVcdTVlNzZcdTVlN2FcdTllYmNcdTVlN2ZcdTVlYTBcdTVlYzFcdTVlYzJcdTVlYzhcdTVlZDBcdTVlY2YiXSxbIjljNDAiLCJcdTVlZDZcdTVlZTNcdTVl''@;'; put 'put ''ZGRcdTVlZGFcdTVlZGJcdTVlZTJcdTVlZTFcdTVlZThcdTVlZTlcdTVlZWNcdTVlZjFcdTVlZjNcdTVlZjBcdTVlZjRcdTVlZjhcdTVlZmVcdTVmMDNcdTVmMDlcdTVmNWRcdTVmNWNcdTVmMGJcdTVmMTFcdTVmMTZcdTVmMjlcdTVmMmRcdTVmMzhcdTVmNDFcdTVmNDhcdTVmNGNcdTVmNGVc''@;'; put 'put ''dTVmMmZcdTVmNTFcdTVmNTZcdTVmNTdcdTVmNTlcdTVmNjFcdTVmNmRcdTVmNzNcdTVmNzdcdTVmODNcdTVmODJcdTVmN2ZcdTVmOGFcdTVmODhcdTVmOTFcdTVmODdcdTVmOWVcdTVmOTlcdTVmOThcdTVmYTBcdTVmYThcdTVmYWRcdTVmYmNcdTVmZDZcdTVmZmJcdTVmZTRcdTVmZjhcdTVm''@;'; put 'put ''ZjFcdTVmZGRcdTYwYjNcdTVmZmZcdTYwMjFcdTYwNjAiXSxbIjljODAiLCJcdTYwMTlcdTYwMTBcdTYwMjlcdTYwMGVcdTYwMzFcdTYwMWJcdTYwMTVcdTYwMmJcdTYwMjZcdTYwMGZcdTYwM2FcdTYwNWFcdTYwNDFcdTYwNmFcdTYwNzdcdTYwNWZcdTYwNGFcdTYwNDZcdTYwNGRcdTYwNjNc''@;'; put 'put ''dTYwNDNcdTYwNjRcdTYwNDJcdTYwNmNcdTYwNmJcdTYwNTlcdTYwODFcdTYwOGRcdTYwZTdcdTYwODNcdTYwOWFcdTYwODRcdTYwOWJcdTYwOTZcdTYwOTdcdTYwOTJcdTYwYTdcdTYwOGJcdTYwZTFcdTYwYjhcdTYwZTBcdTYwZDNcdTYwYjRcdTVmZjBcdTYwYmRcdTYwYzZcdTYwYjVcdTYw''@;'; put 'put ''ZDhcdTYxNGRcdTYxMTVcdTYxMDZcdTYwZjZcdTYwZjdcdTYxMDBcdTYwZjRcdTYwZmFcdTYxMDNcdTYxMjFcdTYwZmJcdTYwZjFcdTYxMGRcdTYxMGVcdTYxNDdcdTYxM2VcdTYxMjhcdTYxMjdcdTYxNGFcdTYxM2ZcdTYxM2NcdTYxMmNcdTYxMzRcdTYxM2RcdTYxNDJcdTYxNDRcdTYxNzNc''@;'; put 'put ''dTYxNzdcdTYxNThcdTYxNTlcdTYxNWFcdTYxNmJcdTYxNzRcdTYxNmZcdTYxNjVcdTYxNzFcdTYxNWZcdTYxNWRcdTYxNTNcdTYxNzVcdTYxOTlcdTYxOTZcdTYxODdcdTYxYWNcdTYxOTRcdTYxOWFcdTYxOGFcdTYxOTFcdTYxYWJcdTYxYWVcdTYxY2NcdTYxY2FcdTYxYzlcdTYxZjdcdTYx''@;'; put 'put ''YzhcdTYxYzNcdTYxYzZcdTYxYmFcdTYxY2JcdTdmNzlcdTYxY2RcdTYxZTZcdTYxZTNcdTYxZjZcdTYxZmFcdTYxZjRcdTYxZmZcdTYxZmRcdTYxZmNcdTYxZmVcdTYyMDBcdTYyMDhcdTYyMDlcdTYyMGRcdTYyMGNcdTYyMTRcdTYyMWIiXSxbIjlkNDAiLCJcdTYyMWVcdTYyMjFcdTYyMmFc''@;'; put 'put ''dTYyMmVcdTYyMzBcdTYyMzJcdTYyMzNcdTYyNDFcdTYyNGVcdTYyNWVcdTYyNjNcdTYyNWJcdTYyNjBcdTYyNjhcdTYyN2NcdTYyODJcdTYyODlcdTYyN2VcdTYyOTJcdTYyOTNcdTYyOTZcdTYyZDRcdTYyODNcdTYyOTRcdTYyZDdcdTYyZDFcdTYyYmJcdTYyY2ZcdTYyZmZcdTYyYzZcdTY0''@;'; put 'put ''ZDRcdTYyYzhcdTYyZGNcdTYyY2NcdTYyY2FcdTYyYzJcdTYyYzdcdTYyOWJcdTYyYzlcdTYzMGNcdTYyZWVcdTYyZjFcdTYzMjdcdTYzMDJcdTYzMDhcdTYyZWZcdTYyZjVcdTYzNTBcdTYzM2VcdTYzNGRcdTY0MWNcdTYzNGZcdTYzOTZcdTYzOGVcdTYzODBcdTYzYWJcdTYzNzZcdTYzYTNc''@;'; put 'put ''dTYzOGZcdTYzODlcdTYzOWZcdTYzYjVcdTYzNmIiXSxbIjlkODAiLCJcdTYzNjlcdTYzYmVcdTYzZTlcdTYzYzBcdTYzYzZcdTYzZTNcdTYzYzlcdTYzZDJcdTYzZjZcdTYzYzRcdTY0MTZcdTY0MzRcdTY0MDZcdTY0MTNcdTY0MjZcdTY0MzZcdTY1MWRcdTY0MTdcdTY0MjhcdTY0MGZcdTY0''@;'; put 'put ''NjdcdTY0NmZcdTY0NzZcdTY0NGVcdTY1MmFcdTY0OTVcdTY0OTNcdTY0YTVcdTY0YTlcdTY0ODhcdTY0YmNcdTY0ZGFcdTY0ZDJcdTY0YzVcdTY0YzdcdTY0YmJcdTY0ZDhcdTY0YzJcdTY0ZjFcdTY0ZTdcdTgyMDlcdTY0ZTBcdTY0ZTFcdTYyYWNcdTY0ZTNcdTY0ZWZcdTY1MmNcdTY0ZjZc''@;'; put 'put ''dTY0ZjRcdTY0ZjJcdTY0ZmFcdTY1MDBcdTY0ZmRcdTY1MThcdTY1MWNcdTY1MDVcdTY1MjRcdTY1MjNcdTY1MmJcdTY1MzRcdTY1MzVcdTY1MzdcdTY1MzZcdTY1MzhcdTc1NGJcdTY1NDhcdTY1NTZcdTY1NTVcdTY1NGRcdTY1NThcdTY1NWVcdTY1NWRcdTY1NzJcdTY1NzhcdTY1ODJcdTY1''@;'; put 'put ''ODNcdThiOGFcdTY1OWJcdTY1OWZcdTY1YWJcdTY1YjdcdTY1YzNcdTY1YzZcdTY1YzFcdTY1YzRcdTY1Y2NcdTY1ZDJcdTY1ZGJcdTY1ZDlcdTY1ZTBcdTY1ZTFcdTY1ZjFcdTY3NzJcdTY2MGFcdTY2MDNcdTY1ZmJcdTY3NzNcdTY2MzVcdTY2MzZcdTY2MzRcdTY2MWNcdTY2NGZcdTY2NDRc''@;'; put 'put ''dTY2NDlcdTY2NDFcdTY2NWVcdTY2NWRcdTY2NjRcdTY2NjdcdTY2NjhcdTY2NWZcdTY2NjJcdTY2NzBcdTY2ODNcdTY2ODhcdTY2OGVcdTY2ODlcdTY2ODRcdTY2OThcdTY2OWRcdTY2YzFcdTY2YjlcdTY2YzlcdTY2YmVcdTY2YmMiXSxbIjllNDAiLCJcdTY2YzRcdTY2YjhcdTY2ZDZcdTY2''@;'; put 'put ''ZGFcdTY2ZTBcdTY2M2ZcdTY2ZTZcdTY2ZTlcdTY2ZjBcdTY2ZjVcdTY2ZjdcdTY3MGZcdTY3MTZcdTY3MWVcdTY3MjZcdTY3MjdcdTk3MzhcdTY3MmVcdTY3M2ZcdTY3MzZcdTY3NDFcdTY3MzhcdTY3MzdcdTY3NDZcdTY3NWVcdTY3NjBcdTY3NTlcdTY3NjNcdTY3NjRcdTY3ODlcdTY3NzBc''@;'; put 'put ''dTY3YTlcdTY3N2NcdTY3NmFcdTY3OGNcdTY3OGJcdTY3YTZcdTY3YTFcdTY3ODVcdTY3YjdcdTY3ZWZcdTY3YjRcdTY3ZWNcdTY3YjNcdTY3ZTlcdTY3YjhcdTY3ZTRcdTY3ZGVcdTY3ZGRcdTY3ZTJcdTY3ZWVcdTY3YjlcdTY3Y2VcdTY3YzZcdTY3ZTdcdTZhOWNcdTY4MWVcdTY4NDZcdTY4''@;'; put 'put ''MjlcdTY4NDBcdTY4NGRcdTY4MzJcdTY4NGUiXSxbIjllODAiLCJcdTY4YjNcdTY4MmJcdTY4NTlcdTY4NjNcdTY4NzdcdTY4N2ZcdTY4OWZcdTY4OGZcdTY4YWRcdTY4OTRcdTY4OWRcdTY4OWJcdTY4ODNcdTZhYWVcdTY4YjlcdTY4NzRcdTY4YjVcdTY4YTBcdTY4YmFcdTY5MGZcdTY4OGRc''@;'; put 'put ''dTY4N2VcdTY5MDFcdTY4Y2FcdTY5MDhcdTY4ZDhcdTY5MjJcdTY5MjZcdTY4ZTFcdTY5MGNcdTY4Y2RcdTY4ZDRcdTY4ZTdcdTY4ZDVcdTY5MzZcdTY5MTJcdTY5MDRcdTY4ZDdcdTY4ZTNcdTY5MjVcdTY4ZjlcdTY4ZTBcdTY4ZWZcdTY5MjhcdTY5MmFcdTY5MWFcdTY5MjNcdTY5MjFcdTY4''@;'; put 'put ''YzZcdTY5NzlcdTY5NzdcdTY5NWNcdTY5NzhcdTY5NmJcdTY5NTRcdTY5N2VcdTY5NmVcdTY5MzlcdTY5NzRcdTY5M2RcdTY5NTlcdTY5MzBcdTY5NjFcdTY5NWVcdTY5NWRcdTY5ODFcdTY5NmFcdTY5YjJcdTY5YWVcdTY5ZDBcdTY5YmZcdTY5YzFcdTY5ZDNcdTY5YmVcdTY5Y2VcdTViZThc''@;'; put 'put ''dTY5Y2FcdTY5ZGRcdTY5YmJcdTY5YzNcdTY5YTdcdTZhMmVcdTY5OTFcdTY5YTBcdTY5OWNcdTY5OTVcdTY5YjRcdTY5ZGVcdTY5ZThcdTZhMDJcdTZhMWJcdTY5ZmZcdTZiMGFcdTY5ZjlcdTY5ZjJcdTY5ZTdcdTZhMDVcdTY5YjFcdTZhMWVcdTY5ZWRcdTZhMTRcdTY5ZWJcdTZhMGFcdTZh''@;'; put 'put ''MTJcdTZhYzFcdTZhMjNcdTZhMTNcdTZhNDRcdTZhMGNcdTZhNzJcdTZhMzZcdTZhNzhcdTZhNDdcdTZhNjJcdTZhNTlcdTZhNjZcdTZhNDhcdTZhMzhcdTZhMjJcdTZhOTBcdTZhOGRcdTZhYTBcdTZhODRcdTZhYTJcdTZhYTMiXSxbIjlmNDAiLCJcdTZhOTdcdTg2MTdcdTZhYmJcdTZhYzNc''@;'; put 'put ''dTZhYzJcdTZhYjhcdTZhYjNcdTZhYWNcdTZhZGVcdTZhZDFcdTZhZGZcdTZhYWFcdTZhZGFcdTZhZWFcdTZhZmJcdTZiMDVcdTg2MTZcdTZhZmFcdTZiMTJcdTZiMTZcdTliMzFcdTZiMWZcdTZiMzhcdTZiMzdcdTc2ZGNcdTZiMzlcdTk4ZWVcdTZiNDdcdTZiNDNcdTZiNDlcdTZiNTBcdTZi''@;'; put 'put ''NTlcdTZiNTRcdTZiNWJcdTZiNWZcdTZiNjFcdTZiNzhcdTZiNzlcdTZiN2ZcdTZiODBcdTZiODRcdTZiODNcdTZiOGRcdTZiOThcdTZiOTVcdTZiOWVcdTZiYTRcdTZiYWFcdTZiYWJcdTZiYWZcdTZiYjJcdTZiYjFcdTZiYjNcdTZiYjdcdTZiYmNcdTZiYzZcdTZiY2JcdTZiZDNcdTZiZGZc''@;'; put 'put ''dTZiZWNcdTZiZWJcdTZiZjNcdTZiZWYiXSxbIjlmODAiLCJcdTllYmVcdTZjMDhcdTZjMTNcdTZjMTRcdTZjMWJcdTZjMjRcdTZjMjNcdTZjNWVcdTZjNTVcdTZjNjJcdTZjNmFcdTZjODJcdTZjOGRcdTZjOWFcdTZjODFcdTZjOWJcdTZjN2VcdTZjNjhcdTZjNzNcdTZjOTJcdTZjOTBcdTZj''@;'; put 'put ''YzRcdTZjZjFcdTZjZDNcdTZjYmRcdTZjZDdcdTZjYzVcdTZjZGRcdTZjYWVcdTZjYjFcdTZjYmVcdTZjYmFcdTZjZGJcdTZjZWZcdTZjZDlcdTZjZWFcdTZkMWZcdTg4NGRcdTZkMzZcdTZkMmJcdTZkM2RcdTZkMzhcdTZkMTlcdTZkMzVcdTZkMzNcdTZkMTJcdTZkMGNcdTZkNjNcdTZkOTNc''@;'; put 'put ''dTZkNjRcdTZkNWFcdTZkNzlcdTZkNTlcdTZkOGVcdTZkOTVcdTZmZTRcdTZkODVcdTZkZjlcdTZlMTVcdTZlMGFcdTZkYjVcdTZkYzdcdTZkZTZcdTZkYjhcdTZkYzZcdTZkZWNcdTZkZGVcdTZkY2NcdTZkZThcdTZkZDJcdTZkYzVcdTZkZmFcdTZkZDlcdTZkZTRcdTZkZDVcdTZkZWFcdTZk''@;'; put 'put ''ZWVcdTZlMmRcdTZlNmVcdTZlMmVcdTZlMTlcdTZlNzJcdTZlNWZcdTZlM2VcdTZlMjNcdTZlNmJcdTZlMmJcdTZlNzZcdTZlNGRcdTZlMWZcdTZlNDNcdTZlM2FcdTZlNGVcdTZlMjRcdTZlZmZcdTZlMWRcdTZlMzhcdTZlODJcdTZlYWFcdTZlOThcdTZlYzlcdTZlYjdcdTZlZDNcdTZlYmRc''@;'; put 'put ''dTZlYWZcdTZlYzRcdTZlYjJcdTZlZDRcdTZlZDVcdTZlOGZcdTZlYTVcdTZlYzJcdTZlOWZcdTZmNDFcdTZmMTFcdTcwNGNcdTZlZWNcdTZlZjhcdTZlZmVcdTZmM2ZcdTZlZjJcdTZmMzFcdTZlZWZcdTZmMzJcdTZlY2MiXSxbImUwNDAiLCJcdTZmM2VcdTZmMTNcdTZlZjdcdTZmODZcdTZm''@;'; put 'put ''N2FcdTZmNzhcdTZmODFcdTZmODBcdTZmNmZcdTZmNWJcdTZmZjNcdTZmNmRcdTZmODJcdTZmN2NcdTZmNThcdTZmOGVcdTZmOTFcdTZmYzJcdTZmNjZcdTZmYjNcdTZmYTNcdTZmYTFcdTZmYTRcdTZmYjlcdTZmYzZcdTZmYWFcdTZmZGZcdTZmZDVcdTZmZWNcdTZmZDRcdTZmZDhcdTZmZjFc''@;'; put 'put ''dTZmZWVcdTZmZGJcdTcwMDlcdTcwMGJcdTZmZmFcdTcwMTFcdTcwMDFcdTcwMGZcdTZmZmVcdTcwMWJcdTcwMWFcdTZmNzRcdTcwMWRcdTcwMThcdTcwMWZcdTcwMzBcdTcwM2VcdTcwMzJcdTcwNTFcdTcwNjNcdTcwOTlcdTcwOTJcdTcwYWZcdTcwZjFcdTcwYWNcdTcwYjhcdTcwYjNcdTcw''@;'; put 'put ''YWVcdTcwZGZcdTcwY2JcdTcwZGQiXSxbImUwODAiLCJcdTcwZDlcdTcxMDlcdTcwZmRcdTcxMWNcdTcxMTlcdTcxNjVcdTcxNTVcdTcxODhcdTcxNjZcdTcxNjJcdTcxNGNcdTcxNTZcdTcxNmNcdTcxOGZcdTcxZmJcdTcxODRcdTcxOTVcdTcxYThcdTcxYWNcdTcxZDdcdTcxYjlcdTcxYmVc''@;'; put 'put ''dTcxZDJcdTcxYzlcdTcxZDRcdTcxY2VcdTcxZTBcdTcxZWNcdTcxZTdcdTcxZjVcdTcxZmNcdTcxZjlcdTcxZmZcdTcyMGRcdTcyMTBcdTcyMWJcdTcyMjhcdTcyMmRcdTcyMmNcdTcyMzBcdTcyMzJcdTcyM2JcdTcyM2NcdTcyM2ZcdTcyNDBcdTcyNDZcdTcyNGJcdTcyNThcdTcyNzRcdTcy''@;'; put 'put ''N2VcdTcyODJcdTcyODFcdTcyODdcdTcyOTJcdTcyOTZcdTcyYTJcdTcyYTdcdTcyYjlcdTcyYjJcdTcyYzNcdTcyYzZcdTcyYzRcdTcyY2VcdTcyZDJcdTcyZTJcdTcyZTBcdTcyZTFcdTcyZjlcdTcyZjdcdTUwMGZcdTczMTdcdTczMGFcdTczMWNcdTczMTZcdTczMWRcdTczMzRcdTczMmZc''@;'; put 'put ''dTczMjlcdTczMjVcdTczM2VcdTczNGVcdTczNGZcdTllZDhcdTczNTdcdTczNmFcdTczNjhcdTczNzBcdTczNzhcdTczNzVcdTczN2JcdTczN2FcdTczYzhcdTczYjNcdTczY2VcdTczYmJcdTczYzBcdTczZTVcdTczZWVcdTczZGVcdTc0YTJcdTc0MDVcdTc0NmZcdTc0MjVcdTczZjhcdTc0''@;'; put 'put ''MzJcdTc0M2FcdTc0NTVcdTc0M2ZcdTc0NWZcdTc0NTlcdTc0NDFcdTc0NWNcdTc0NjlcdTc0NzBcdTc0NjNcdTc0NmFcdTc0NzZcdTc0N2VcdTc0OGJcdTc0OWVcdTc0YTdcdTc0Y2FcdTc0Y2ZcdTc0ZDRcdTczZjEiXSxbImUxNDAiLCJcdTc0ZTBcdTc0ZTNcdTc0ZTdcdTc0ZTlcdTc0ZWVc''@;'; put 'put ''dTc0ZjJcdTc0ZjBcdTc0ZjFcdTc0ZjhcdTc0ZjdcdTc1MDRcdTc1MDNcdTc1MDVcdTc1MGNcdTc1MGVcdTc1MGRcdTc1MTVcdTc1MTNcdTc1MWVcdTc1MjZcdTc1MmNcdTc1M2NcdTc1NDRcdTc1NGRcdTc1NGFcdTc1NDlcdTc1NWJcdTc1NDZcdTc1NWFcdTc1NjlcdTc1NjRcdTc1NjdcdTc1''@;'; put 'put ''NmJcdTc1NmRcdTc1NzhcdTc1NzZcdTc1ODZcdTc1ODdcdTc1NzRcdTc1OGFcdTc1ODlcdTc1ODJcdTc1OTRcdTc1OWFcdTc1OWRcdTc1YTVcdTc1YTNcdTc1YzJcdTc1YjNcdTc1YzNcdTc1YjVcdTc1YmRcdTc1YjhcdTc1YmNcdTc1YjFcdTc1Y2RcdTc1Y2FcdTc1ZDJcdTc1ZDlcdTc1ZTNc''@;'; put 'put ''dTc1ZGVcdTc1ZmVcdTc1ZmYiXSxbImUxODAiLCJcdTc1ZmNcdTc2MDFcdTc1ZjBcdTc1ZmFcdTc1ZjJcdTc1ZjNcdTc2MGJcdTc2MGRcdTc2MDlcdTc2MWZcdTc2MjdcdTc2MjBcdTc2MjFcdTc2MjJcdTc2MjRcdTc2MzRcdTc2MzBcdTc2M2JcdTc2NDdcdTc2NDhcdTc2NDZcdTc2NWNcdTc2''@;'; put 'put ''NThcdTc2NjFcdTc2NjJcdTc2NjhcdTc2NjlcdTc2NmFcdTc2NjdcdTc2NmNcdTc2NzBcdTc2NzJcdTc2NzZcdTc2NzhcdTc2N2NcdTc2ODBcdTc2ODNcdTc2ODhcdTc2OGJcdTc2OGVcdTc2OTZcdTc2OTNcdTc2OTlcdTc2OWFcdTc2YjBcdTc2YjRcdTc2YjhcdTc2YjlcdTc2YmFcdTc2YzJc''@;'; put 'put ''dTc2Y2RcdTc2ZDZcdTc2ZDJcdTc2ZGVcdTc2ZTFcdTc2ZTVcdTc2ZTdcdTc2ZWFcdTg2MmZcdTc2ZmJcdTc3MDhcdTc3MDdcdTc3MDRcdTc3MjlcdTc3MjRcdTc3MWVcdTc3MjVcdTc3MjZcdTc3MWJcdTc3MzdcdTc3MzhcdTc3NDdcdTc3NWFcdTc3NjhcdTc3NmJcdTc3NWJcdTc3NjVcdTc3''@;'; put 'put ''N2ZcdTc3N2VcdTc3NzlcdTc3OGVcdTc3OGJcdTc3OTFcdTc3YTBcdTc3OWVcdTc3YjBcdTc3YjZcdTc3YjlcdTc3YmZcdTc3YmNcdTc3YmRcdTc3YmJcdTc3YzdcdTc3Y2RcdTc3ZDdcdTc3ZGFcdTc3ZGNcdTc3ZTNcdTc3ZWVcdTc3ZmNcdTc4MGNcdTc4MTJcdTc5MjZcdTc4MjBcdTc5MmFc''@;'; put 'put ''dTc4NDVcdTc4OGVcdTc4NzRcdTc4ODZcdTc4N2NcdTc4OWFcdTc4OGNcdTc4YTNcdTc4YjVcdTc4YWFcdTc4YWZcdTc4ZDFcdTc4YzZcdTc4Y2JcdTc4ZDRcdTc4YmVcdTc4YmNcdTc4YzVcdTc4Y2FcdTc4ZWMiXSxbImUyNDAiLCJcdTc4ZTdcdTc4ZGFcdTc4ZmRcdTc4ZjRcdTc5MDdcdTc5''@;'; put 'put ''MTJcdTc5MTFcdTc5MTlcdTc5MmNcdTc5MmJcdTc5NDBcdTc5NjBcdTc5NTdcdTc5NWZcdTc5NWFcdTc5NTVcdTc5NTNcdTc5N2FcdTc5N2ZcdTc5OGFcdTc5OWRcdTc5YTdcdTlmNGJcdTc5YWFcdTc5YWVcdTc5YjNcdTc5YjlcdTc5YmFcdTc5YzlcdTc5ZDVcdTc5ZTdcdTc5ZWNcdTc5ZTFc''@;'; put 'put ''dTc5ZTNcdTdhMDhcdTdhMGRcdTdhMThcdTdhMTlcdTdhMjBcdTdhMWZcdTc5ODBcdTdhMzFcdTdhM2JcdTdhM2VcdTdhMzdcdTdhNDNcdTdhNTdcdTdhNDlcdTdhNjFcdTdhNjJcdTdhNjlcdTlmOWRcdTdhNzBcdTdhNzlcdTdhN2RcdTdhODhcdTdhOTdcdTdhOTVcdTdhOThcdTdhOTZcdTdh''@;'; put 'put ''YTlcdTdhYzhcdTdhYjAiXSxbImUyODAiLCJcdTdhYjZcdTdhYzVcdTdhYzRcdTdhYmZcdTkwODNcdTdhYzdcdTdhY2FcdTdhY2RcdTdhY2ZcdTdhZDVcdTdhZDNcdTdhZDlcdTdhZGFcdTdhZGRcdTdhZTFcdTdhZTJcdTdhZTZcdTdhZWRcdTdhZjBcdTdiMDJcdTdiMGZcdTdiMGFcdTdiMDZc''@;'; put 'put ''dTdiMzNcdTdiMThcdTdiMTlcdTdiMWVcdTdiMzVcdTdiMjhcdTdiMzZcdTdiNTBcdTdiN2FcdTdiMDRcdTdiNGRcdTdiMGJcdTdiNGNcdTdiNDVcdTdiNzVcdTdiNjVcdTdiNzRcdTdiNjdcdTdiNzBcdTdiNzFcdTdiNmNcdTdiNmVcdTdiOWRcdTdiOThcdTdiOWZcdTdiOGRcdTdiOWNcdTdi''@;'; put 'put ''OWFcdTdiOGJcdTdiOTJcdTdiOGZcdTdiNWRcdTdiOTlcdTdiY2JcdTdiYzFcdTdiY2NcdTdiY2ZcdTdiYjRcdTdiYzZcdTdiZGRcdTdiZTlcdTdjMTFcdTdjMTRcdTdiZTZcdTdiZTVcdTdjNjBcdTdjMDBcdTdjMDdcdTdjMTNcdTdiZjNcdTdiZjdcdTdjMTdcdTdjMGRcdTdiZjZcdTdjMjNc''@;'; put 'put ''dTdjMjdcdTdjMmFcdTdjMWZcdTdjMzdcdTdjMmJcdTdjM2RcdTdjNGNcdTdjNDNcdTdjNTRcdTdjNGZcdTdjNDBcdTdjNTBcdTdjNThcdTdjNWZcdTdjNjRcdTdjNTZcdTdjNjVcdTdjNmNcdTdjNzVcdTdjODNcdTdjOTBcdTdjYTRcdTdjYWRcdTdjYTJcdTdjYWJcdTdjYTFcdTdjYThcdTdj''@;'; put 'put ''YjNcdTdjYjJcdTdjYjFcdTdjYWVcdTdjYjlcdTdjYmRcdTdjYzBcdTdjYzVcdTdjYzJcdTdjZDhcdTdjZDJcdTdjZGNcdTdjZTJcdTliM2JcdTdjZWZcdTdjZjJcdTdjZjRcdTdjZjZcdTdjZmFcdTdkMDYiXSxbImUzNDAiLCJcdTdkMDJcdTdkMWNcdTdkMTVcdTdkMGFcdTdkNDVcdTdkNGJc''@;'; put 'put ''dTdkMmVcdTdkMzJcdTdkM2ZcdTdkMzVcdTdkNDZcdTdkNzNcdTdkNTZcdTdkNGVcdTdkNzJcdTdkNjhcdTdkNmVcdTdkNGZcdTdkNjNcdTdkOTNcdTdkODlcdTdkNWJcdTdkOGZcdTdkN2RcdTdkOWJcdTdkYmFcdTdkYWVcdTdkYTNcdTdkYjVcdTdkYzdcdTdkYmRcdTdkYWJcdTdlM2RcdTdk''@;'; put 'put ''YTJcdTdkYWZcdTdkZGNcdTdkYjhcdTdkOWZcdTdkYjBcdTdkZDhcdTdkZGRcdTdkZTRcdTdkZGVcdTdkZmJcdTdkZjJcdTdkZTFcdTdlMDVcdTdlMGFcdTdlMjNcdTdlMjFcdTdlMTJcdTdlMzFcdTdlMWZcdTdlMDlcdTdlMGJcdTdlMjJcdTdlNDZcdTdlNjZcdTdlM2JcdTdlMzVcdTdlMzlc''@;'; put 'put ''dTdlNDNcdTdlMzciXSxbImUzODAiLCJcdTdlMzJcdTdlM2FcdTdlNjdcdTdlNWRcdTdlNTZcdTdlNWVcdTdlNTlcdTdlNWFcdTdlNzlcdTdlNmFcdTdlNjlcdTdlN2NcdTdlN2JcdTdlODNcdTdkZDVcdTdlN2RcdThmYWVcdTdlN2ZcdTdlODhcdTdlODlcdTdlOGNcdTdlOTJcdTdlOTBcdTdl''@;'; put 'put ''OTNcdTdlOTRcdTdlOTZcdTdlOGVcdTdlOWJcdTdlOWNcdTdmMzhcdTdmM2FcdTdmNDVcdTdmNGNcdTdmNGRcdTdmNGVcdTdmNTBcdTdmNTFcdTdmNTVcdTdmNTRcdTdmNThcdTdmNWZcdTdmNjBcdTdmNjhcdTdmNjlcdTdmNjdcdTdmNzhcdTdmODJcdTdmODZcdTdmODNcdTdmODhcdTdmODdc''@;'; put 'put ''dTdmOGNcdTdmOTRcdTdmOWVcdTdmOWRcdTdmOWFcdTdmYTNcdTdmYWZcdTdmYjJcdTdmYjlcdTdmYWVcdTdmYjZcdTdmYjhcdThiNzFcdTdmYzVcdTdmYzZcdTdmY2FcdTdmZDVcdTdmZDRcdTdmZTFcdTdmZTZcdTdmZTlcdTdmZjNcdTdmZjlcdTk4ZGNcdTgwMDZcdTgwMDRcdTgwMGJcdTgw''@;'; put 'put ''MTJcdTgwMThcdTgwMTlcdTgwMWNcdTgwMjFcdTgwMjhcdTgwM2ZcdTgwM2JcdTgwNGFcdTgwNDZcdTgwNTJcdTgwNThcdTgwNWFcdTgwNWZcdTgwNjJcdTgwNjhcdTgwNzNcdTgwNzJcdTgwNzBcdTgwNzZcdTgwNzlcdTgwN2RcdTgwN2ZcdTgwODRcdTgwODZcdTgwODVcdTgwOWJcdTgwOTNc''@;'; put 'put ''dTgwOWFcdTgwYWRcdTUxOTBcdTgwYWNcdTgwZGJcdTgwZTVcdTgwZDlcdTgwZGRcdTgwYzRcdTgwZGFcdTgwZDZcdTgxMDlcdTgwZWZcdTgwZjFcdTgxMWJcdTgxMjlcdTgxMjNcdTgxMmZcdTgxNGIiXSxbImU0NDAiLCJcdTk2OGJcdTgxNDZcdTgxM2VcdTgxNTNcdTgxNTFcdTgwZmNcdTgx''@;'; put 'put ''NzFcdTgxNmVcdTgxNjVcdTgxNjZcdTgxNzRcdTgxODNcdTgxODhcdTgxOGFcdTgxODBcdTgxODJcdTgxYTBcdTgxOTVcdTgxYTRcdTgxYTNcdTgxNWZcdTgxOTNcdTgxYTlcdTgxYjBcdTgxYjVcdTgxYmVcdTgxYjhcdTgxYmRcdTgxYzBcdTgxYzJcdTgxYmFcdTgxYzlcdTgxY2RcdTgxZDFc''@;'; put 'put ''dTgxZDlcdTgxZDhcdTgxYzhcdTgxZGFcdTgxZGZcdTgxZTBcdTgxZTdcdTgxZmFcdTgxZmJcdTgxZmVcdTgyMDFcdTgyMDJcdTgyMDVcdTgyMDdcdTgyMGFcdTgyMGRcdTgyMTBcdTgyMTZcdTgyMjlcdTgyMmJcdTgyMzhcdTgyMzNcdTgyNDBcdTgyNTlcdTgyNThcdTgyNWRcdTgyNWFcdTgy''@;'; put 'put ''NWZcdTgyNjQiXSxbImU0ODAiLCJcdTgyNjJcdTgyNjhcdTgyNmFcdTgyNmJcdTgyMmVcdTgyNzFcdTgyNzdcdTgyNzhcdTgyN2VcdTgyOGRcdTgyOTJcdTgyYWJcdTgyOWZcdTgyYmJcdTgyYWNcdTgyZTFcdTgyZTNcdTgyZGZcdTgyZDJcdTgyZjRcdTgyZjNcdTgyZmFcdTgzOTNcdTgzMDNc''@;'; put 'put ''dTgyZmJcdTgyZjlcdTgyZGVcdTgzMDZcdTgyZGNcdTgzMDlcdTgyZDlcdTgzMzVcdTgzMzRcdTgzMTZcdTgzMzJcdTgzMzFcdTgzNDBcdTgzMzlcdTgzNTBcdTgzNDVcdTgzMmZcdTgzMmJcdTgzMTdcdTgzMThcdTgzODVcdTgzOWFcdTgzYWFcdTgzOWZcdTgzYTJcdTgzOTZcdTgzMjNcdTgz''@;'; put 'put ''OGVcdTgzODdcdTgzOGFcdTgzN2NcdTgzYjVcdTgzNzNcdTgzNzVcdTgzYTBcdTgzODlcdTgzYThcdTgzZjRcdTg0MTNcdTgzZWJcdTgzY2VcdTgzZmRcdTg0MDNcdTgzZDhcdTg0MGJcdTgzYzFcdTgzZjdcdTg0MDdcdTgzZTBcdTgzZjJcdTg0MGRcdTg0MjJcdTg0MjBcdTgzYmRcdTg0Mzhc''@;'; put 'put ''dTg1MDZcdTgzZmJcdTg0NmRcdTg0MmFcdTg0M2NcdTg1NWFcdTg0ODRcdTg0NzdcdTg0NmJcdTg0YWRcdTg0NmVcdTg0ODJcdTg0NjlcdTg0NDZcdTg0MmNcdTg0NmZcdTg0NzlcdTg0MzVcdTg0Y2FcdTg0NjJcdTg0YjlcdTg0YmZcdTg0OWZcdTg0ZDlcdTg0Y2RcdTg0YmJcdTg0ZGFcdTg0''@;'; put 'put ''ZDBcdTg0YzFcdTg0YzZcdTg0ZDZcdTg0YTFcdTg1MjFcdTg0ZmZcdTg0ZjRcdTg1MTdcdTg1MThcdTg1MmNcdTg1MWZcdTg1MTVcdTg1MTRcdTg0ZmNcdTg1NDBcdTg1NjNcdTg1NThcdTg1NDgiXSxbImU1NDAiLCJcdTg1NDFcdTg2MDJcdTg1NGJcdTg1NTVcdTg1ODBcdTg1YTRcdTg1ODhc''@;'; put 'put ''dTg1OTFcdTg1OGFcdTg1YThcdTg1NmRcdTg1OTRcdTg1OWJcdTg1ZWFcdTg1ODdcdTg1OWNcdTg1NzdcdTg1N2VcdTg1OTBcdTg1YzlcdTg1YmFcdTg1Y2ZcdTg1YjlcdTg1ZDBcdTg1ZDVcdTg1ZGRcdTg1ZTVcdTg1ZGNcdTg1ZjlcdTg2MGFcdTg2MTNcdTg2MGJcdTg1ZmVcdTg1ZmFcdTg2''@;'; put 'put ''MDZcdTg2MjJcdTg2MWFcdTg2MzBcdTg2M2ZcdTg2NGRcdTRlNTVcdTg2NTRcdTg2NWZcdTg2NjdcdTg2NzFcdTg2OTNcdTg2YTNcdTg2YTlcdTg2YWFcdTg2OGJcdTg2OGNcdTg2YjZcdTg2YWZcdTg2YzRcdTg2YzZcdTg2YjBcdTg2YzlcdTg4MjNcdTg2YWJcdTg2ZDRcdTg2ZGVcdTg2ZTlc''@;'; put 'put ''dTg2ZWMiXSxbImU1ODAiLCJcdTg2ZGZcdTg2ZGJcdTg2ZWZcdTg3MTJcdTg3MDZcdTg3MDhcdTg3MDBcdTg3MDNcdTg2ZmJcdTg3MTFcdTg3MDlcdTg3MGRcdTg2ZjlcdTg3MGFcdTg3MzRcdTg3M2ZcdTg3MzdcdTg3M2JcdTg3MjVcdTg3MjlcdTg3MWFcdTg3NjBcdTg3NWZcdTg3NzhcdTg3''@;'; put 'put ''NGNcdTg3NGVcdTg3NzRcdTg3NTdcdTg3NjhcdTg3NmVcdTg3NTlcdTg3NTNcdTg3NjNcdTg3NmFcdTg4MDVcdTg3YTJcdTg3OWZcdTg3ODJcdTg3YWZcdTg3Y2JcdTg3YmRcdTg3YzBcdTg3ZDBcdTk2ZDZcdTg3YWJcdTg3YzRcdTg3YjNcdTg3YzdcdTg3YzZcdTg3YmJcdTg3ZWZcdTg3ZjJc''@;'; put 'put ''dTg3ZTBcdTg4MGZcdTg4MGRcdTg3ZmVcdTg3ZjZcdTg3ZjdcdTg4MGVcdTg3ZDJcdTg4MTFcdTg4MTZcdTg4MTVcdTg4MjJcdTg4MjFcdTg4MzFcdTg4MzZcdTg4MzlcdTg4MjdcdTg4M2JcdTg4NDRcdTg4NDJcdTg4NTJcdTg4NTlcdTg4NWVcdTg4NjJcdTg4NmJcdTg4ODFcdTg4N2VcdTg4''@;'; put 'put ''OWVcdTg4NzVcdTg4N2RcdTg4YjVcdTg4NzJcdTg4ODJcdTg4OTdcdTg4OTJcdTg4YWVcdTg4OTlcdTg4YTJcdTg4OGRcdTg4YTRcdTg4YjBcdTg4YmZcdTg4YjFcdTg4YzNcdTg4YzRcdTg4ZDRcdTg4ZDhcdTg4ZDlcdTg4ZGRcdTg4ZjlcdTg5MDJcdTg4ZmNcdTg4ZjRcdTg4ZThcdTg4ZjJc''@;'; put 'put ''dTg5MDRcdTg5MGNcdTg5MGFcdTg5MTNcdTg5NDNcdTg5MWVcdTg5MjVcdTg5MmFcdTg5MmJcdTg5NDFcdTg5NDRcdTg5M2JcdTg5MzZcdTg5MzhcdTg5NGNcdTg5MWRcdTg5NjBcdTg5NWUiXSxbImU2NDAiLCJcdTg5NjZcdTg5NjRcdTg5NmRcdTg5NmFcdTg5NmZcdTg5NzRcdTg5NzdcdTg5''@;'; put 'put ''N2VcdTg5ODNcdTg5ODhcdTg5OGFcdTg5OTNcdTg5OThcdTg5YTFcdTg5YTlcdTg5YTZcdTg5YWNcdTg5YWZcdTg5YjJcdTg5YmFcdTg5YmRcdTg5YmZcdTg5YzBcdTg5ZGFcdTg5ZGNcdTg5ZGRcdTg5ZTdcdTg5ZjRcdTg5ZjhcdThhMDNcdThhMTZcdThhMTBcdThhMGNcdThhMWJcdThhMWRc''@;'; put 'put ''dThhMjVcdThhMzZcdThhNDFcdThhNWJcdThhNTJcdThhNDZcdThhNDhcdThhN2NcdThhNmRcdThhNmNcdThhNjJcdThhODVcdThhODJcdThhODRcdThhYThcdThhYTFcdThhOTFcdThhYTVcdThhYTZcdThhOWFcdThhYTNcdThhYzRcdThhY2RcdThhYzJcdThhZGFcdThhZWJcdThhZjNcdThh''@;'; put 'put ''ZTciXSxbImU2ODAiLCJcdThhZTRcdThhZjFcdThiMTRcdThhZTBcdThhZTJcdThhZjdcdThhZGVcdThhZGJcdThiMGNcdThiMDdcdThiMWFcdThhZTFcdThiMTZcdThiMTBcdThiMTdcdThiMjBcdThiMzNcdTk3YWJcdThiMjZcdThiMmJcdThiM2VcdThiMjhcdThiNDFcdThiNGNcdThiNGZc''@;'; put 'put ''dThiNGVcdThiNDlcdThiNTZcdThiNWJcdThiNWFcdThiNmJcdThiNWZcdThiNmNcdThiNmZcdThiNzRcdThiN2RcdThiODBcdThiOGNcdThiOGVcdThiOTJcdThiOTNcdThiOTZcdThiOTlcdThiOWFcdThjM2FcdThjNDFcdThjM2ZcdThjNDhcdThjNGNcdThjNGVcdThjNTBcdThjNTVcdThj''@;'; put 'put ''NjJcdThjNmNcdThjNzhcdThjN2FcdThjODJcdThjODlcdThjODVcdThjOGFcdThjOGRcdThjOGVcdThjOTRcdThjN2NcdThjOThcdTYyMWRcdThjYWRcdThjYWFcdThjYmRcdThjYjJcdThjYjNcdThjYWVcdThjYjZcdThjYzhcdThjYzFcdThjZTRcdThjZTNcdThjZGFcdThjZmRcdThjZmFc''@;'; put 'put ''dThjZmJcdThkMDRcdThkMDVcdThkMGFcdThkMDdcdThkMGZcdThkMGRcdThkMTBcdTlmNGVcdThkMTNcdThjY2RcdThkMTRcdThkMTZcdThkNjdcdThkNmRcdThkNzFcdThkNzNcdThkODFcdThkOTlcdThkYzJcdThkYmVcdThkYmFcdThkY2ZcdThkZGFcdThkZDZcdThkY2NcdThkZGJcdThk''@;'; put 'put ''Y2JcdThkZWFcdThkZWJcdThkZGZcdThkZTNcdThkZmNcdThlMDhcdThlMDlcdThkZmZcdThlMWRcdThlMWVcdThlMTBcdThlMWZcdThlNDJcdThlMzVcdThlMzBcdThlMzRcdThlNGEiXSxbImU3NDAiLCJcdThlNDdcdThlNDlcdThlNGNcdThlNTBcdThlNDhcdThlNTlcdThlNjRcdThlNjBc''@;'; put 'put ''dThlMmFcdThlNjNcdThlNTVcdThlNzZcdThlNzJcdThlN2NcdThlODFcdThlODdcdThlODVcdThlODRcdThlOGJcdThlOGFcdThlOTNcdThlOTFcdThlOTRcdThlOTlcdThlYWFcdThlYTFcdThlYWNcdThlYjBcdThlYzZcdThlYjFcdThlYmVcdThlYzVcdThlYzhcdThlY2JcdThlZGJcdThl''@;'; put 'put ''ZTNcdThlZmNcdThlZmJcdThlZWJcdThlZmVcdThmMGFcdThmMDVcdThmMTVcdThmMTJcdThmMTlcdThmMTNcdThmMWNcdThmMWZcdThmMWJcdThmMGNcdThmMjZcdThmMzNcdThmM2JcdThmMzlcdThmNDVcdThmNDJcdThmM2VcdThmNGNcdThmNDlcdThmNDZcdThmNGVcdThmNTdcdThmNWMi''@;'; put 'put ''XSxbImU3ODAiLCJcdThmNjJcdThmNjNcdThmNjRcdThmOWNcdThmOWZcdThmYTNcdThmYWRcdThmYWZcdThmYjdcdThmZGFcdThmZTVcdThmZTJcdThmZWFcdThmZWZcdTkwODdcdThmZjRcdTkwMDVcdThmZjlcdThmZmFcdTkwMTFcdTkwMTVcdTkwMjFcdTkwMGRcdTkwMWVcdTkwMTZcdTkw''@;'; put 'put ''MGJcdTkwMjdcdTkwMzZcdTkwMzVcdTkwMzlcdThmZjhcdTkwNGZcdTkwNTBcdTkwNTFcdTkwNTJcdTkwMGVcdTkwNDlcdTkwM2VcdTkwNTZcdTkwNThcdTkwNWVcdTkwNjhcdTkwNmZcdTkwNzZcdTk2YThcdTkwNzJcdTkwODJcdTkwN2RcdTkwODFcdTkwODBcdTkwOGFcdTkwODlcdTkwOGZc''@;'; put 'put ''dTkwYThcdTkwYWZcdTkwYjFcdTkwYjVcdTkwZTJcdTkwZTRcdTYyNDhcdTkwZGJcdTkxMDJcdTkxMTJcdTkxMTlcdTkxMzJcdTkxMzBcdTkxNGFcdTkxNTZcdTkxNThcdTkxNjNcdTkxNjVcdTkxNjlcdTkxNzNcdTkxNzJcdTkxOGJcdTkxODlcdTkxODJcdTkxYTJcdTkxYWJcdTkxYWZcdTkx''@;'; put 'put ''YWFcdTkxYjVcdTkxYjRcdTkxYmFcdTkxYzBcdTkxYzFcdTkxYzlcdTkxY2JcdTkxZDBcdTkxZDZcdTkxZGZcdTkxZTFcdTkxZGJcdTkxZmNcdTkxZjVcdTkxZjZcdTkyMWVcdTkxZmZcdTkyMTRcdTkyMmNcdTkyMTVcdTkyMTFcdTkyNWVcdTkyNTdcdTkyNDVcdTkyNDlcdTkyNjRcdTkyNDhc''@;'; put 'put ''dTkyOTVcdTkyM2ZcdTkyNGJcdTkyNTBcdTkyOWNcdTkyOTZcdTkyOTNcdTkyOWJcdTkyNWFcdTkyY2ZcdTkyYjlcdTkyYjdcdTkyZTlcdTkzMGZcdTkyZmFcdTkzNDRcdTkzMmUiXSxbImU4NDAiLCJcdTkzMTlcdTkzMjJcdTkzMWFcdTkzMjNcdTkzM2FcdTkzMzVcdTkzM2JcdTkzNWNcdTkz''@;'; put 'put ''NjBcdTkzN2NcdTkzNmVcdTkzNTZcdTkzYjBcdTkzYWNcdTkzYWRcdTkzOTRcdTkzYjlcdTkzZDZcdTkzZDdcdTkzZThcdTkzZTVcdTkzZDhcdTkzYzNcdTkzZGRcdTkzZDBcdTkzYzhcdTkzZTRcdTk0MWFcdTk0MTRcdTk0MTNcdTk0MDNcdTk0MDdcdTk0MTBcdTk0MzZcdTk0MmJcdTk0MzVc''@;'; put 'put ''dTk0MjFcdTk0M2FcdTk0NDFcdTk0NTJcdTk0NDRcdTk0NWJcdTk0NjBcdTk0NjJcdTk0NWVcdTk0NmFcdTkyMjlcdTk0NzBcdTk0NzVcdTk0NzdcdTk0N2RcdTk0NWFcdTk0N2NcdTk0N2VcdTk0ODFcdTk0N2ZcdTk1ODJcdTk1ODdcdTk1OGFcdTk1OTRcdTk1OTZcdTk1OThcdTk1OTkiXSxb''@;'; put 'put ''ImU4ODAiLCJcdTk1YTBcdTk1YThcdTk1YTdcdTk1YWRcdTk1YmNcdTk1YmJcdTk1YjlcdTk1YmVcdTk1Y2FcdTZmZjZcdTk1YzNcdTk1Y2RcdTk1Y2NcdTk1ZDVcdTk1ZDRcdTk1ZDZcdTk1ZGNcdTk1ZTFcdTk1ZTVcdTk1ZTJcdTk2MjFcdTk2MjhcdTk2MmVcdTk2MmZcdTk2NDJcdTk2NGNc''@;'; put 'put ''dTk2NGZcdTk2NGJcdTk2NzdcdTk2NWNcdTk2NWVcdTk2NWRcdTk2NWZcdTk2NjZcdTk2NzJcdTk2NmNcdTk2OGRcdTk2OThcdTk2OTVcdTk2OTdcdTk2YWFcdTk2YTdcdTk2YjFcdTk2YjJcdTk2YjBcdTk2YjRcdTk2YjZcdTk2YjhcdTk2YjlcdTk2Y2VcdTk2Y2JcdTk2YzlcdTk2Y2RcdTg5''@;'; put 'put ''NGRcdTk2ZGNcdTk3MGRcdTk2ZDVcdTk2ZjlcdTk3MDRcdTk3MDZcdTk3MDhcdTk3MTNcdTk3MGVcdTk3MTFcdTk3MGZcdTk3MTZcdTk3MTlcdTk3MjRcdTk3MmFcdTk3MzBcdTk3MzlcdTk3M2RcdTk3M2VcdTk3NDRcdTk3NDZcdTk3NDhcdTk3NDJcdTk3NDlcdTk3NWNcdTk3NjBcdTk3NjRc''@;'; put 'put ''dTk3NjZcdTk3NjhcdTUyZDJcdTk3NmJcdTk3NzFcdTk3NzlcdTk3ODVcdTk3N2NcdTk3ODFcdTk3N2FcdTk3ODZcdTk3OGJcdTk3OGZcdTk3OTBcdTk3OWNcdTk3YThcdTk3YTZcdTk3YTNcdTk3YjNcdTk3YjRcdTk3YzNcdTk3YzZcdTk3YzhcdTk3Y2JcdTk3ZGNcdTk3ZWRcdTlmNGZcdTk3''@;'; put 'put ''ZjJcdTdhZGZcdTk3ZjZcdTk3ZjVcdTk4MGZcdTk4MGNcdTk4MzhcdTk4MjRcdTk4MjFcdTk4MzdcdTk4M2RcdTk4NDZcdTk4NGZcdTk4NGJcdTk4NmJcdTk4NmZcdTk4NzAiXSxbImU5NDAiLCJcdTk4NzFcdTk4NzRcdTk4NzNcdTk4YWFcdTk4YWZcdTk4YjFcdTk4YjZcdTk4YzRcdTk4YzNc''@;'; put 'put ''dTk4YzZcdTk4ZTlcdTk4ZWJcdTk5MDNcdTk5MDlcdTk5MTJcdTk5MTRcdTk5MThcdTk5MjFcdTk5MWRcdTk5MWVcdTk5MjRcdTk5MjBcdTk5MmNcdTk5MmVcdTk5M2RcdTk5M2VcdTk5NDJcdTk5NDlcdTk5NDVcdTk5NTBcdTk5NGJcdTk5NTFcdTk5NTJcdTk5NGNcdTk5NTVcdTk5OTdcdTk5''@;'; put 'put ''OThcdTk5YTVcdTk5YWRcdTk5YWVcdTk5YmNcdTk5ZGZcdTk5ZGJcdTk5ZGRcdTk5ZDhcdTk5ZDFcdTk5ZWRcdTk5ZWVcdTk5ZjFcdTk5ZjJcdTk5ZmJcdTk5ZjhcdTlhMDFcdTlhMGZcdTlhMDVcdTk5ZTJcdTlhMTlcdTlhMmJcdTlhMzdcdTlhNDVcdTlhNDJcdTlhNDBcdTlhNDMiXSxbImU5''@;'; put 'put ''ODAiLCJcdTlhM2VcdTlhNTVcdTlhNGRcdTlhNWJcdTlhNTdcdTlhNWZcdTlhNjJcdTlhNjVcdTlhNjRcdTlhNjlcdTlhNmJcdTlhNmFcdTlhYWRcdTlhYjBcdTlhYmNcdTlhYzBcdTlhY2ZcdTlhZDFcdTlhZDNcdTlhZDRcdTlhZGVcdTlhZGZcdTlhZTJcdTlhZTNcdTlhZTZcdTlhZWZcdTlh''@;'; put 'put ''ZWJcdTlhZWVcdTlhZjRcdTlhZjFcdTlhZjdcdTlhZmJcdTliMDZcdTliMThcdTliMWFcdTliMWZcdTliMjJcdTliMjNcdTliMjVcdTliMjdcdTliMjhcdTliMjlcdTliMmFcdTliMmVcdTliMmZcdTliMzJcdTliNDRcdTliNDNcdTliNGZcdTliNGRcdTliNGVcdTliNTFcdTliNThcdTliNzRc''@;'; put 'put ''dTliOTNcdTliODNcdTliOTFcdTliOTZcdTliOTdcdTliOWZcdTliYTBcdTliYThcdTliYjRcdTliYzBcdTliY2FcdTliYjlcdTliYzZcdTliY2ZcdTliZDFcdTliZDJcdTliZTNcdTliZTJcdTliZTRcdTliZDRcdTliZTFcdTljM2FcdTliZjJcdTliZjFcdTliZjBcdTljMTVcdTljMTRcdTlj''@;'; put 'put ''MDlcdTljMTNcdTljMGNcdTljMDZcdTljMDhcdTljMTJcdTljMGFcdTljMDRcdTljMmVcdTljMWJcdTljMjVcdTljMjRcdTljMjFcdTljMzBcdTljNDdcdTljMzJcdTljNDZcdTljM2VcdTljNWFcdTljNjBcdTljNjdcdTljNzZcdTljNzhcdTljZTdcdTljZWNcdTljZjBcdTlkMDlcdTlkMDhc''@;'; put 'put ''dTljZWJcdTlkMDNcdTlkMDZcdTlkMmFcdTlkMjZcdTlkYWZcdTlkMjNcdTlkMWZcdTlkNDRcdTlkMTVcdTlkMTJcdTlkNDFcdTlkM2ZcdTlkM2VcdTlkNDZcdTlkNDgiXSxbImVhNDAiLCJcdTlkNWRcdTlkNWVcdTlkNjRcdTlkNTFcdTlkNTBcdTlkNTlcdTlkNzJcdTlkODlcdTlkODdcdTlk''@;'; put 'put ''YWJcdTlkNmZcdTlkN2FcdTlkOWFcdTlkYTRcdTlkYTlcdTlkYjJcdTlkYzRcdTlkYzFcdTlkYmJcdTlkYjhcdTlkYmFcdTlkYzZcdTlkY2ZcdTlkYzJcdTlkZDlcdTlkZDNcdTlkZjhcdTlkZTZcdTlkZWRcdTlkZWZcdTlkZmRcdTllMWFcdTllMWJcdTllMWVcdTllNzVcdTllNzlcdTllN2Rc''@;'; put 'put ''dTllODFcdTllODhcdTllOGJcdTllOGNcdTllOTJcdTllOTVcdTllOTFcdTllOWRcdTllYTVcdTllYTlcdTllYjhcdTllYWFcdTllYWRcdTk3NjFcdTllY2NcdTllY2VcdTllY2ZcdTllZDBcdTllZDRcdTllZGNcdTllZGVcdTllZGRcdTllZTBcdTllZTVcdTllZThcdTllZWYiXSxbImVhODAi''@;'; put 'put ''LCJcdTllZjRcdTllZjZcdTllZjdcdTllZjlcdTllZmJcdTllZmNcdTllZmRcdTlmMDdcdTlmMDhcdTc2YjdcdTlmMTVcdTlmMjFcdTlmMmNcdTlmM2VcdTlmNGFcdTlmNTJcdTlmNTRcdTlmNjNcdTlmNWZcdTlmNjBcdTlmNjFcdTlmNjZcdTlmNjdcdTlmNmNcdTlmNmFcdTlmNzdcdTlmNzJc''@;'; put 'put ''dTlmNzZcdTlmOTVcdTlmOWNcdTlmYTBcdTU4MmZcdTY5YzdcdTkwNTlcdTc0NjRcdTUxZGNcdTcxOTkiXSxbImVkNDAiLCJcdTdlOGFcdTg5MWNcdTkzNDhcdTkyODhcdTg0ZGNcdTRmYzlcdTcwYmJcdTY2MzFcdTY4YzhcdTkyZjlcdTY2ZmJcdTVmNDVcdTRlMjhcdTRlZTFcdTRlZmNcdTRm''@;'; put 'put ''MDBcdTRmMDNcdTRmMzlcdTRmNTZcdTRmOTJcdTRmOGFcdTRmOWFcdTRmOTRcdTRmY2RcdTUwNDBcdTUwMjJcdTRmZmZcdTUwMWVcdTUwNDZcdTUwNzBcdTUwNDJcdTUwOTRcdTUwZjRcdTUwZDhcdTUxNGFcdTUxNjRcdTUxOWRcdTUxYmVcdTUxZWNcdTUyMTVcdTUyOWNcdTUyYTZcdTUyYzBc''@;'; put 'put ''dTUyZGJcdTUzMDBcdTUzMDdcdTUzMjRcdTUzNzJcdTUzOTNcdTUzYjJcdTUzZGRcdWZhMGVcdTU0OWNcdTU0OGFcdTU0YTlcdTU0ZmZcdTU1ODZcdTU3NTlcdTU3NjVcdTU3YWNcdTU3YzhcdTU3YzdcdWZhMGYiXSxbImVkODAiLCJcdWZhMTBcdTU4OWVcdTU4YjJcdTU5MGJcdTU5NTNcdTU5''@;'; put 'put ''NWJcdTU5NWRcdTU5NjNcdTU5YTRcdTU5YmFcdTViNTZcdTViYzBcdTc1MmZcdTViZDhcdTViZWNcdTVjMWVcdTVjYTZcdTVjYmFcdTVjZjVcdTVkMjdcdTVkNTNcdWZhMTFcdTVkNDJcdTVkNmRcdTVkYjhcdTVkYjlcdTVkZDBcdTVmMjFcdTVmMzRcdTVmNjdcdTVmYjdcdTVmZGVcdTYwNWRc''@;'; put 'put ''dTYwODVcdTYwOGFcdTYwZGVcdTYwZDVcdTYxMjBcdTYwZjJcdTYxMTFcdTYxMzdcdTYxMzBcdTYxOThcdTYyMTNcdTYyYTZcdTYzZjVcdTY0NjBcdTY0OWRcdTY0Y2VcdTY1NGVcdTY2MDBcdTY2MTVcdTY2M2JcdTY2MDlcdTY2MmVcdTY2MWVcdTY2MjRcdTY2NjVcdTY2NTdcdTY2NTlcdWZh''@;'; put 'put ''MTJcdTY2NzNcdTY2OTlcdTY2YTBcdTY2YjJcdTY2YmZcdTY2ZmFcdTY3MGVcdWY5MjlcdTY3NjZcdTY3YmJcdTY4NTJcdTY3YzBcdTY4MDFcdTY4NDRcdTY4Y2ZcdWZhMTNcdTY5NjhcdWZhMTRcdTY5OThcdTY5ZTJcdTZhMzBcdTZhNmJcdTZhNDZcdTZhNzNcdTZhN2VcdTZhZTJcdTZhZTRc''@;'; put 'put ''dTZiZDZcdTZjM2ZcdTZjNWNcdTZjODZcdTZjNmZcdTZjZGFcdTZkMDRcdTZkODdcdTZkNmZcdTZkOTZcdTZkYWNcdTZkY2ZcdTZkZjhcdTZkZjJcdTZkZmNcdTZlMzlcdTZlNWNcdTZlMjdcdTZlM2NcdTZlYmZcdTZmODhcdTZmYjVcdTZmZjVcdTcwMDVcdTcwMDdcdTcwMjhcdTcwODVcdTcw''@;'; put 'put ''YWJcdTcxMGZcdTcxMDRcdTcxNWNcdTcxNDZcdTcxNDdcdWZhMTVcdTcxYzFcdTcxZmVcdTcyYjEiXSxbImVlNDAiLCJcdTcyYmVcdTczMjRcdWZhMTZcdTczNzdcdTczYmRcdTczYzlcdTczZDZcdTczZTNcdTczZDJcdTc0MDdcdTczZjVcdTc0MjZcdTc0MmFcdTc0MjlcdTc0MmVcdTc0NjJc''@;'; put 'put ''dTc0ODlcdTc0OWZcdTc1MDFcdTc1NmZcdTc2ODJcdTc2OWNcdTc2OWVcdTc2OWJcdTc2YTZcdWZhMTdcdTc3NDZcdTUyYWZcdTc4MjFcdTc4NGVcdTc4NjRcdTc4N2FcdTc5MzBcdWZhMThcdWZhMTlcdWZhMWFcdTc5OTRcdWZhMWJcdTc5OWJcdTdhZDFcdTdhZTdcdWZhMWNcdTdhZWJcdTdi''@;'; put 'put ''OWVcdWZhMWRcdTdkNDhcdTdkNWNcdTdkYjdcdTdkYTBcdTdkZDZcdTdlNTJcdTdmNDdcdTdmYTFcdWZhMWVcdTgzMDFcdTgzNjJcdTgzN2ZcdTgzYzdcdTgzZjZcdTg0NDhcdTg0YjRcdTg1NTNcdTg1NTkiXSxbImVlODAiLCJcdTg1NmJcdWZhMWZcdTg1YjBcdWZhMjBcdWZhMjFcdTg4MDdc''@;'; put 'put ''dTg4ZjVcdThhMTJcdThhMzdcdThhNzlcdThhYTdcdThhYmVcdThhZGZcdWZhMjJcdThhZjZcdThiNTNcdThiN2ZcdThjZjBcdThjZjRcdThkMTJcdThkNzZcdWZhMjNcdThlY2ZcdWZhMjRcdWZhMjVcdTkwNjdcdTkwZGVcdWZhMjZcdTkxMTVcdTkxMjdcdTkxZGFcdTkxZDdcdTkxZGVcdTkx''@;'; put 'put ''ZWRcdTkxZWVcdTkxZTRcdTkxZTVcdTkyMDZcdTkyMTBcdTkyMGFcdTkyM2FcdTkyNDBcdTkyM2NcdTkyNGVcdTkyNTlcdTkyNTFcdTkyMzlcdTkyNjdcdTkyYTdcdTkyNzdcdTkyNzhcdTkyZTdcdTkyZDdcdTkyZDlcdTkyZDBcdWZhMjdcdTkyZDVcdTkyZTBcdTkyZDNcdTkzMjVcdTkzMjFc''@;'; put 'put ''dTkyZmJcdWZhMjhcdTkzMWVcdTkyZmZcdTkzMWRcdTkzMDJcdTkzNzBcdTkzNTdcdTkzYTRcdTkzYzZcdTkzZGVcdTkzZjhcdTk0MzFcdTk0NDVcdTk0NDhcdTk1OTJcdWY5ZGNcdWZhMjlcdTk2OWRcdTk2YWZcdTk3MzNcdTk3M2JcdTk3NDNcdTk3NGRcdTk3NGZcdTk3NTFcdTk3NTVcdTk4''@;'; put 'put ''NTdcdTk4NjVcdWZhMmFcdWZhMmJcdTk5MjdcdWZhMmNcdTk5OWVcdTlhNGVcdTlhZDlcdTlhZGNcdTliNzVcdTliNzJcdTliOGZcdTliYjFcdTliYmJcdTljMDBcdTlkNzBcdTlkNmJcdWZhMmRcdTllMTlcdTllZDEiXSxbImVlZWYiLCJcdTIxNzAiLDksIlx1ZmZlMlx1ZmZlNFx1ZmYwN1x1''@;'; put 'put ''ZmYwMiJdLFsiZjA0MCIsIlx1ZTAwMCIsNjJdLFsiZjA4MCIsIlx1ZTAzZiIsMTI0XSxbImYxNDAiLCJcdWUwYmMiLDYyXSxbImYxODAiLCJcdWUwZmIiLDEyNF0sWyJmMjQwIiwiXHVlMTc4Iiw2Ml0sWyJmMjgwIiwiXHVlMWI3IiwxMjRdLFsiZjM0MCIsIlx1ZTIzNCIsNjJdLFsiZjM4MCIs''@;'; put 'put ''Ilx1ZTI3MyIsMTI0XSxbImY0NDAiLCJcdWUyZjAiLDYyXSxbImY0ODAiLCJcdWUzMmYiLDEyNF0sWyJmNTQwIiwiXHVlM2FjIiw2Ml0sWyJmNTgwIiwiXHVlM2ViIiwxMjRdLFsiZjY0MCIsIlx1ZTQ2OCIsNjJdLFsiZjY4MCIsIlx1ZTRhNyIsMTI0XSxbImY3NDAiLCJcdWU1MjQiLDYyXSxb''@;'; put 'put ''ImY3ODAiLCJcdWU1NjMiLDEyNF0sWyJmODQwIiwiXHVlNWUwIiw2Ml0sWyJmODgwIiwiXHVlNjFmIiwxMjRdLFsiZjk0MCIsIlx1ZTY5YyJdLFsiZmE0MCIsIlx1MjE3MCIsOSwiXHUyMTYwIiw5LCJcdWZmZTJcdWZmZTRcdWZmMDdcdWZmMDJcdTMyMzFcdTIxMTZcdTIxMjFcdTIyMzVcdTdl''@;'; put 'put ''OGFcdTg5MWNcdTkzNDhcdTkyODhcdTg0ZGNcdTRmYzlcdTcwYmJcdTY2MzFcdTY4YzhcdTkyZjlcdTY2ZmJcdTVmNDVcdTRlMjhcdTRlZTFcdTRlZmNcdTRmMDBcdTRmMDNcdTRmMzlcdTRmNTZcdTRmOTJcdTRmOGFcdTRmOWFcdTRmOTRcdTRmY2RcdTUwNDBcdTUwMjJcdTRmZmZcdTUwMWVc''@;'; put 'put ''dTUwNDZcdTUwNzBcdTUwNDJcdTUwOTRcdTUwZjRcdTUwZDhcdTUxNGEiXSxbImZhODAiLCJcdTUxNjRcdTUxOWRcdTUxYmVcdTUxZWNcdTUyMTVcdTUyOWNcdTUyYTZcdTUyYzBcdTUyZGJcdTUzMDBcdTUzMDdcdTUzMjRcdTUzNzJcdTUzOTNcdTUzYjJcdTUzZGRcdWZhMGVcdTU0OWNcdTU0''@;'; put 'put ''OGFcdTU0YTlcdTU0ZmZcdTU1ODZcdTU3NTlcdTU3NjVcdTU3YWNcdTU3YzhcdTU3YzdcdWZhMGZcdWZhMTBcdTU4OWVcdTU4YjJcdTU5MGJcdTU5NTNcdTU5NWJcdTU5NWRcdTU5NjNcdTU5YTRcdTU5YmFcdTViNTZcdTViYzBcdTc1MmZcdTViZDhcdTViZWNcdTVjMWVcdTVjYTZcdTVjYmFc''@;'; put 'put ''dTVjZjVcdTVkMjdcdTVkNTNcdWZhMTFcdTVkNDJcdTVkNmRcdTVkYjhcdTVkYjlcdTVkZDBcdTVmMjFcdTVmMzRcdTVmNjdcdTVmYjdcdTVmZGVcdTYwNWRcdTYwODVcdTYwOGFcdTYwZGVcdTYwZDVcdTYxMjBcdTYwZjJcdTYxMTFcdTYxMzdcdTYxMzBcdTYxOThcdTYyMTNcdTYyYTZcdTYz''@;'; put 'put ''ZjVcdTY0NjBcdTY0OWRcdTY0Y2VcdTY1NGVcdTY2MDBcdTY2MTVcdTY2M2JcdTY2MDlcdTY2MmVcdTY2MWVcdTY2MjRcdTY2NjVcdTY2NTdcdTY2NTlcdWZhMTJcdTY2NzNcdTY2OTlcdTY2YTBcdTY2YjJcdTY2YmZcdTY2ZmFcdTY3MGVcdWY5MjlcdTY3NjZcdTY3YmJcdTY4NTJcdTY3YzBc''@;'; put 'put ''dTY4MDFcdTY4NDRcdTY4Y2ZcdWZhMTNcdTY5NjhcdWZhMTRcdTY5OThcdTY5ZTJcdTZhMzBcdTZhNmJcdTZhNDZcdTZhNzNcdTZhN2VcdTZhZTJcdTZhZTRcdTZiZDZcdTZjM2ZcdTZjNWNcdTZjODZcdTZjNmZcdTZjZGFcdTZkMDRcdTZkODdcdTZkNmYiXSxbImZiNDAiLCJcdTZkOTZcdTZk''@;'; put 'put ''YWNcdTZkY2ZcdTZkZjhcdTZkZjJcdTZkZmNcdTZlMzlcdTZlNWNcdTZlMjdcdTZlM2NcdTZlYmZcdTZmODhcdTZmYjVcdTZmZjVcdTcwMDVcdTcwMDdcdTcwMjhcdTcwODVcdTcwYWJcdTcxMGZcdTcxMDRcdTcxNWNcdTcxNDZcdTcxNDdcdWZhMTVcdTcxYzFcdTcxZmVcdTcyYjFcdTcyYmVc''@;'; put 'put ''dTczMjRcdWZhMTZcdTczNzdcdTczYmRcdTczYzlcdTczZDZcdTczZTNcdTczZDJcdTc0MDdcdTczZjVcdTc0MjZcdTc0MmFcdTc0MjlcdTc0MmVcdTc0NjJcdTc0ODlcdTc0OWZcdTc1MDFcdTc1NmZcdTc2ODJcdTc2OWNcdTc2OWVcdTc2OWJcdTc2YTZcdWZhMTdcdTc3NDZcdTUyYWZcdTc4''@;'; put 'put ''MjFcdTc4NGVcdTc4NjRcdTc4N2FcdTc5MzBcdWZhMThcdWZhMTkiXSxbImZiODAiLCJcdWZhMWFcdTc5OTRcdWZhMWJcdTc5OWJcdTdhZDFcdTdhZTdcdWZhMWNcdTdhZWJcdTdiOWVcdWZhMWRcdTdkNDhcdTdkNWNcdTdkYjdcdTdkYTBcdTdkZDZcdTdlNTJcdTdmNDdcdTdmYTFcdWZhMWVc''@;'; put 'put ''dTgzMDFcdTgzNjJcdTgzN2ZcdTgzYzdcdTgzZjZcdTg0NDhcdTg0YjRcdTg1NTNcdTg1NTlcdTg1NmJcdWZhMWZcdTg1YjBcdWZhMjBcdWZhMjFcdTg4MDdcdTg4ZjVcdThhMTJcdThhMzdcdThhNzlcdThhYTdcdThhYmVcdThhZGZcdWZhMjJcdThhZjZcdThiNTNcdThiN2ZcdThjZjBcdThj''@;'; put 'put ''ZjRcdThkMTJcdThkNzZcdWZhMjNcdThlY2ZcdWZhMjRcdWZhMjVcdTkwNjdcdTkwZGVcdWZhMjZcdTkxMTVcdTkxMjdcdTkxZGFcdTkxZDdcdTkxZGVcdTkxZWRcdTkxZWVcdTkxZTRcdTkxZTVcdTkyMDZcdTkyMTBcdTkyMGFcdTkyM2FcdTkyNDBcdTkyM2NcdTkyNGVcdTkyNTlcdTkyNTFc''@;'; put 'put ''dTkyMzlcdTkyNjdcdTkyYTdcdTkyNzdcdTkyNzhcdTkyZTdcdTkyZDdcdTkyZDlcdTkyZDBcdWZhMjdcdTkyZDVcdTkyZTBcdTkyZDNcdTkzMjVcdTkzMjFcdTkyZmJcdWZhMjhcdTkzMWVcdTkyZmZcdTkzMWRcdTkzMDJcdTkzNzBcdTkzNTdcdTkzYTRcdTkzYzZcdTkzZGVcdTkzZjhcdTk0''@;'; put 'put ''MzFcdTk0NDVcdTk0NDhcdTk1OTJcdWY5ZGNcdWZhMjlcdTk2OWRcdTk2YWZcdTk3MzNcdTk3M2JcdTk3NDNcdTk3NGRcdTk3NGZcdTk3NTFcdTk3NTVcdTk4NTdcdTk4NjVcdWZhMmFcdWZhMmJcdTk5MjdcdWZhMmNcdTk5OWVcdTlhNGVcdTlhZDkiXSxbImZjNDAiLCJcdTlhZGNcdTliNzVc''@;'; put 'put ''dTliNzJcdTliOGZcdTliYjFcdTliYmJcdTljMDBcdTlkNzBcdTlkNmJcdWZhMmRcdTllMTlcdTllZDEiXV0nKX0sMjI1NjI6WGU9PnsidXNlIHN0cmljdCI7WGUuZXhwb3J0cz1KU09OLnBhcnNlKCd7IjIuMTYuODQwLjEuMTAxLjMuNC4xLjEiOiJhZXMtMTI4LWVjYiIsIjIuMTYuODQwLjEu''@;'; put 'put ''MTAxLjMuNC4xLjIiOiJhZXMtMTI4LWNiYyIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjMiOiJhZXMtMTI4LW9mYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQiOiJhZXMtMTI4LWNmYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIxIjoiYWVzLTE5Mi1lY2IiLCIyLjE2Ljg0MC4xLjEwMS4zLjQu''@;'; put 'put ''MS4yMiI6ImFlcy0xOTItY2JjIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjMiOiJhZXMtMTkyLW9mYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjI0IjoiYWVzLTE5Mi1jZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MSI6ImFlcy0yNTYtZWNiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDIi''@;'; put 'put ''OiJhZXMtMjU2LWNiYyIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQzIjoiYWVzLTI1Ni1vZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40NCI6ImFlcy0yNTYtY2ZiIn0nKX0sMTIwMzA6WGU9PnsidXNlIHN0cmljdCI7WGUuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImxvY2FsZSI6ImVuIiwiZGF0''@;'; put 'put ''ZSI6eyJjYSI6WyJncmVnb3J5IiwiYnVkZGhpc3QiLCJjaGluZXNlIiwiY29wdGljIiwiZGFuZ2kiLCJldGhpb2FhIiwiZXRoaW9waWMiLCJnZW5lcmljIiwiaGVicmV3IiwiaW5kaWFuIiwiaXNsYW1pYyIsImlzbGFtaWNjIiwiamFwYW5lc2UiLCJwZXJzaWFuIiwicm9jIl0sImhvdXJObzAi''@;'; put 'put ''OnRydWUsImhvdXIxMiI6dHJ1ZSwiZm9ybWF0cyI6eyJzaG9ydCI6InsxfSwgezB9IiwibWVkaXVtIjoiezF9LCB7MH0iLCJmdWxsIjoiezF9IFwnYXRcJyB7MH0iLCJsb25nIjoiezF9IFwnYXRcJyB7MH0iLCJhdmFpbGFibGVGb3JtYXRzIjp7ImQiOiJkIiwiRSI6ImNjYyIsIkVkIjoiZCBF''@;'; put 'put ''IiwiRWhtIjoiRSBoOm1tIGEiLCJFSG0iOiJFIEhIOm1tIiwiRWhtcyI6IkUgaDptbTpzcyBhIiwiRUhtcyI6IkUgSEg6bW06c3MiLCJHeSI6InkgRyIsIkd5TU1NIjoiTU1NIHkgRyIsIkd5TU1NZCI6Ik1NTSBkLCB5IEciLCJHeU1NTUVkIjoiRSwgTU1NIGQsIHkgRyIsImgiOiJoIGEiLCJI''@;'; put 'put ''IjoiSEgiLCJobSI6Img6bW0gYSIsIkhtIjoiSEg6bW0iLCJobXMiOiJoOm1tOnNzIGEiLCJIbXMiOiJISDptbTpzcyIsImhtc3YiOiJoOm1tOnNzIGEgdiIsIkhtc3YiOiJISDptbTpzcyB2IiwiaG12IjoiaDptbSBhIHYiLCJIbXYiOiJISDptbSB2IiwiTSI6IkwiLCJNZCI6Ik0vZCIsIk1F''@;'; put 'put ''ZCI6IkUsIE0vZCIsIk1NTSI6IkxMTCIsIk1NTWQiOiJNTU0gZCIsIk1NTUVkIjoiRSwgTU1NIGQiLCJNTU1NZCI6Ik1NTU0gZCIsIm1zIjoibW06c3MiLCJ5IjoieSIsInlNIjoiTS95IiwieU1kIjoiTS9kL3kiLCJ5TUVkIjoiRSwgTS9kL3kiLCJ5TU1NIjoiTU1NIHkiLCJ5TU1NZCI6Ik1N''@;'; put 'put ''TSBkLCB5IiwieU1NTUVkIjoiRSwgTU1NIGQsIHkiLCJ5TU1NTSI6Ik1NTU0geSIsInlRUVEiOiJRUVEgeSIsInlRUVFRIjoiUVFRUSB5In0sImRhdGVGb3JtYXRzIjp7InlNTU1NRUVFRWQiOiJFRUVFLCBNTU1NIGQsIHkiLCJ5TU1NTWQiOiJNTU1NIGQsIHkiLCJ5TU1NZCI6Ik1NTSBkLCB5''@;'; put 'put ''IiwieU1kIjoiTS9kL3l5In0sInRpbWVGb3JtYXRzIjp7ImhtbXNzenp6eiI6Img6bW06c3MgYSB6enp6IiwiaG1zeiI6Img6bW06c3MgYSB6IiwiaG1zIjoiaDptbTpzcyBhIiwiaG0iOiJoOm1tIGEifX0sImNhbGVuZGFycyI6eyJidWRkaGlzdCI6eyJtb250aHMiOnsibmFycm93IjpbIkoi''@;'; put 'put ''LCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdLCJzaG9ydCI6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSwibG9uZyI6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIs''@;'; put 'put ''IkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJU''@;'; put 'put ''aHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiQkUiXSwic2hvcnQiOlsiQkUiXSwibG9uZyI6WyJCRSJdfSwiZGF5UGVyaW9kcyI6''@;'; put 'put ''eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwiY2hpbmVzZSI6eyJtb250aHMiOnsibmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLCJzaG9ydCI6WyJNbzEiLCJNbzIiLCJNbzMiLCJNbzQiLCJNbzUiLCJNbzYiLCJNbzciLCJNbzgiLCJN''@;'; put 'put ''bzkiLCJNbzEwIiwiTW8xMSIsIk1vMTIiXSwibG9uZyI6WyJNb250aDEiLCJNb250aDIiLCJNb250aDMiLCJNb250aDQiLCJNb250aDUiLCJNb250aDYiLCJNb250aDciLCJNb250aDgiLCJNb250aDkiLCJNb250aDEwIiwiTW9udGgxMSIsIk1vbnRoMTIiXX0sImRheXMiOnsibmFycm93Ijpb''@;'; put 'put ''IlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImRh''@;'; put 'put ''eVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sImNvcHRpYyI6eyJtb250aHMiOnsibmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiIsIjEzIl0sInNob3J0IjpbIlRvdXQiLCJCYWJhIiwiSGF0b3IiLCJLaWFoayIsIlRvYmEi''@;'; put 'put ''LCJBbXNoaXIiLCJCYXJhbWhhdCIsIkJhcmFtb3VkYSIsIkJhc2hhbnMiLCJQYW9uYSIsIkVwZXAiLCJNZXNyYSIsIk5hc2llIl0sImxvbmciOlsiVG91dCIsIkJhYmEiLCJIYXRvciIsIktpYWhrIiwiVG9iYSIsIkFtc2hpciIsIkJhcmFtaGF0IiwiQmFyYW1vdWRhIiwiQmFzaGFucyIsIlBh''@;'; put 'put ''b25hIiwiRXBlcCIsIk1lc3JhIiwiTmFzaWUiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIs''@;'; put 'put ''IldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsibmFycm93IjpbIkVSQTAiLCJFUkExIl0sInNob3J0IjpbIkVSQTAiLCJFUkExIl0sImxvbmciOlsiRVJBMCIsIkVSQTEiXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sImRh''@;'; put 'put ''bmdpIjp7Im1vbnRocyI6eyJuYXJyb3ciOlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sInNob3J0IjpbIk1vMSIsIk1vMiIsIk1vMyIsIk1vNCIsIk1vNSIsIk1vNiIsIk1vNyIsIk1vOCIsIk1vOSIsIk1vMTAiLCJNbzExIiwiTW8xMiJdLCJs''@;'; put 'put ''b25nIjpbIk1vbnRoMSIsIk1vbnRoMiIsIk1vbnRoMyIsIk1vbnRoNCIsIk1vbnRoNSIsIk1vbnRoNiIsIk1vbnRoNyIsIk1vbnRoOCIsIk1vbnRoOSIsIk1vbnRoMTAiLCJNb250aDExIiwiTW9udGgxMiJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJd''@;'; put 'put ''LCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQ''@;'; put 'put ''TSJ9fSwiZXRoaW9waWMiOnsibW9udGhzIjp7Im5hcnJvdyI6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiLCIxMyJdLCJzaG9ydCI6WyJNZXNrZXJlbSIsIlRla2VtdCIsIkhlZGFyIiwiVGFoc2FzIiwiVGVyIiwiWWVrYXRpdCIsIk1lZ2FiaXQi''@;'; put 'put ''LCJNaWF6aWEiLCJHZW5ib3QiLCJTZW5lIiwiSGFtbGUiLCJOZWhhc3NlIiwiUGFndW1lbiJdLCJsb25nIjpbIk1lc2tlcmVtIiwiVGVrZW10IiwiSGVkYXIiLCJUYWhzYXMiLCJUZXIiLCJZZWthdGl0IiwiTWVnYWJpdCIsIk1pYXppYSIsIkdlbmJvdCIsIlNlbmUiLCJIYW1sZSIsIk5laGFz''@;'; put 'put ''c2UiLCJQYWd1bWVuIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJU''@;'; put 'put ''aHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJFUkEwIiwiRVJBMSJdLCJzaG9ydCI6WyJFUkEwIiwiRVJBMSJdLCJsb25nIjpbIkVSQTAiLCJFUkExIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJldGhpb2FhIjp7Im1vbnRo''@;'; put 'put ''cyI6eyJuYXJyb3ciOlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIiwiMTMiXSwic2hvcnQiOlsiTWVza2VyZW0iLCJUZWtlbXQiLCJIZWRhciIsIlRhaHNhcyIsIlRlciIsIllla2F0aXQiLCJNZWdhYml0IiwiTWlhemlhIiwiR2VuYm90IiwiU2Vu''@;'; put 'put ''ZSIsIkhhbWxlIiwiTmVoYXNzZSIsIlBhZ3VtZW4iXSwibG9uZyI6WyJNZXNrZXJlbSIsIlRla2VtdCIsIkhlZGFyIiwiVGFoc2FzIiwiVGVyIiwiWWVrYXRpdCIsIk1lZ2FiaXQiLCJNaWF6aWEiLCJHZW5ib3QiLCJTZW5lIiwiSGFtbGUiLCJOZWhhc3NlIiwiUGFndW1lbiJdfSwiZGF5cyI6''@;'; put 'put ''eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1''@;'; put 'put ''cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiRVJBMCJdLCJzaG9ydCI6WyJFUkEwIl0sImxvbmciOlsiRVJBMCJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwiZ2VuZXJpYyI6eyJtb250aHMiOnsibmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4''@;'; put 'put ''IiwiOSIsIjEwIiwiMTEiLCIxMiJdLCJzaG9ydCI6WyJNMDEiLCJNMDIiLCJNMDMiLCJNMDQiLCJNMDUiLCJNMDYiLCJNMDciLCJNMDgiLCJNMDkiLCJNMTAiLCJNMTEiLCJNMTIiXSwibG9uZyI6WyJNMDEiLCJNMDIiLCJNMDMiLCJNMDQiLCJNMDUiLCJNMDYiLCJNMDciLCJNMDgiLCJNMDki''@;'; put 'put ''LCJNMTAiLCJNMTEiLCJNMTIiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2Rh''@;'; put 'put ''eSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsibmFycm93IjpbIkVSQTAiLCJFUkExIl0sInNob3J0IjpbIkVSQTAiLCJFUkExIl0sImxvbmciOlsiRVJBMCIsIkVSQTEiXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sImdyZWdvcnkiOnsi''@;'; put 'put ''bW9udGhzIjp7Im5hcnJvdyI6WyJKIiwiRiIsIk0iLCJBIiwiTSIsIkoiLCJKIiwiQSIsIlMiLCJPIiwiTiIsIkQiXSwic2hvcnQiOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sImxvbmciOlsiSmFudWFy''@;'; put 'put ''eSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3Vu''@;'; put 'put ''IiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsibmFycm93IjpbIkIiLCJBIiwiQkNFIiwiQ0UiXSwic2hvcnQi''@;'; put 'put ''OlsiQkMiLCJBRCIsIkJDRSIsIkNFIl0sImxvbmciOlsiQmVmb3JlIENocmlzdCIsIkFubm8gRG9taW5pIiwiQmVmb3JlIENvbW1vbiBFcmEiLCJDb21tb24gRXJhIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJoZWJyZXciOnsibW9udGhzIjp7Im5hcnJvdyI6WyIx''@;'; put 'put ''IiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiLCIxMyIsIjciXSwic2hvcnQiOlsiVGlzaHJpIiwiSGVzaHZhbiIsIktpc2xldiIsIlRldmV0IiwiU2hldmF0IiwiQWRhciBJIiwiQWRhciIsIk5pc2FuIiwiSXlhciIsIlNpdmFuIiwiVGFtdXoiLCJBdiIs''@;'; put 'put ''IkVsdWwiLCJBZGFyIElJIl0sImxvbmciOlsiVGlzaHJpIiwiSGVzaHZhbiIsIktpc2xldiIsIlRldmV0IiwiU2hldmF0IiwiQWRhciBJIiwiQWRhciIsIk5pc2FuIiwiSXlhciIsIlNpdmFuIiwiVGFtdXoiLCJBdiIsIkVsdWwiLCJBZGFyIElJIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwi''@;'; put 'put ''TSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7''@;'; put 'put ''Im5hcnJvdyI6WyJBTSJdLCJzaG9ydCI6WyJBTSJdLCJsb25nIjpbIkFNIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJpbmRpYW4iOnsibW9udGhzIjp7Im5hcnJvdyI6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSwi''@;'; put 'put ''c2hvcnQiOlsiQ2hhaXRyYSIsIlZhaXNha2hhIiwiSnlhaXN0aGEiLCJBc2FkaGEiLCJTcmF2YW5hIiwiQmhhZHJhIiwiQXN2aW5hIiwiS2FydGlrYSIsIkFncmFoYXlhbmEiLCJQYXVzYSIsIk1hZ2hhIiwiUGhhbGd1bmEiXSwibG9uZyI6WyJDaGFpdHJhIiwiVmFpc2FraGEiLCJKeWFpc3Ro''@;'; put 'put ''YSIsIkFzYWRoYSIsIlNyYXZhbmEiLCJCaGFkcmEiLCJBc3ZpbmEiLCJLYXJ0aWthIiwiQWdyYWhheWFuYSIsIlBhdXNhIiwiTWFnaGEiLCJQaGFsZ3VuYSJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUi''@;'; put 'put ''LCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiU2FrYSJdLCJzaG9ydCI6WyJTYWthIl0sImxvbmciOlsiU2FrYSJd''@;'; put 'put ''fSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwiaXNsYW1pYyI6eyJtb250aHMiOnsibmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLCJzaG9ydCI6WyJNdWguIiwiU2FmLiIsIlJhYi4gSSIsIlJhYi4gSUkiLCJK''@;'; put 'put ''dW0uIEkiLCJKdW0uIElJIiwiUmFqLiIsIlNoYS4iLCJSYW0uIiwiU2hhdy4iLCJEaHVcdTAyYmJsLVEuIiwiRGh1XHUwMmJibC1ILiJdLCJsb25nIjpbIk11aGFycmFtIiwiU2FmYXIiLCJSYWJpXHUwMmJiIEkiLCJSYWJpXHUwMmJiIElJIiwiSnVtYWRhIEkiLCJKdW1hZGEgSUkiLCJSYWph''@;'; put 'put ''YiIsIlNoYVx1MDJiYmJhbiIsIlJhbWFkYW4iLCJTaGF3d2FsIiwiRGh1XHUwMmJibC1RaVx1MDJiYmRhaCIsIkRodVx1MDJiYmwtSGlqamFoIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIs''@;'; put 'put ''IlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJBSCJdLCJzaG9ydCI6WyJBSCJdLCJsb25nIjpbIkFIIl19LCJkYXlQZXJpb2Rz''@;'; put 'put ''Ijp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJpc2xhbWljYyI6eyJtb250aHMiOnsibmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLCJzaG9ydCI6WyJNdWguIiwiU2FmLiIsIlJhYi4gSSIsIlJhYi4gSUkiLCJKdW0uIEkiLCJKdW0u''@;'; put 'put ''IElJIiwiUmFqLiIsIlNoYS4iLCJSYW0uIiwiU2hhdy4iLCJEaHVcdTAyYmJsLVEuIiwiRGh1XHUwMmJibC1ILiJdLCJsb25nIjpbIk11aGFycmFtIiwiU2FmYXIiLCJSYWJpXHUwMmJiIEkiLCJSYWJpXHUwMmJiIElJIiwiSnVtYWRhIEkiLCJKdW1hZGEgSUkiLCJSYWphYiIsIlNoYVx1MDJi''@;'; put 'put ''YmJhbiIsIlJhbWFkYW4iLCJTaGF3d2FsIiwiRGh1XHUwMmJibC1RaVx1MDJiYmRhaCIsIkRodVx1MDJiYmwtSGlqamFoIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIs''@;'; put 'put ''IlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJBSCJdLCJzaG9ydCI6WyJBSCJdLCJsb25nIjpbIkFIIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0i''@;'; put 'put ''LCJwbSI6IlBNIn19LCJqYXBhbmVzZSI6eyJtb250aHMiOnsibmFycm93IjpbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdLCJzaG9ydCI6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJO''@;'; put 'put ''b3YiLCJEZWMiXSwibG9uZyI6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIs''@;'; put 'put ''IlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsi''@;'; put 'put ''VGFpa2EgKDY0NVx1MjAxMzY1MCkiLCJIYWt1Y2hpICg2NTBcdTIwMTM2NzEpIiwiSGFrdWhcdTAxNGQgKDY3Mlx1MjAxMzY4NikiLCJTaHVjaFx1MDE0ZCAoNjg2XHUyMDEzNzAxKSIsIlRhaWhcdTAxNGQgKDcwMVx1MjAxMzcwNCkiLCJLZWl1biAoNzA0XHUyMDEzNzA4KSIsIldhZFx1MDE0''@;'; put 'put ''ZCAoNzA4XHUyMDEzNzE1KSIsIlJlaWtpICg3MTVcdTIwMTM3MTcpIiwiWVx1MDE0ZHJcdTAxNGQgKDcxN1x1MjAxMzcyNCkiLCJKaW5raSAoNzI0XHUyMDEzNzI5KSIsIlRlbnB5XHUwMTRkICg3MjlcdTIwMTM3NDkpIiwiVGVucHlcdTAxNGQta2FtcFx1MDE0ZCAoNzQ5LTc0OSkiLCJUZW5w''@;'; put 'put ''eVx1MDE0ZC1zaFx1MDE0ZGhcdTAxNGQgKDc0OS03NTcpIiwiVGVucHlcdTAxNGQtaFx1MDE0ZGppICg3NTctNzY1KSIsIlRlbnB5XHUwMTRkLWppbmdvICg3NjUtNzY3KSIsIkppbmdvLWtlaXVuICg3NjctNzcwKSIsIkhcdTAxNGRraSAoNzcwXHUyMDEzNzgwKSIsIlRlbi1cdTAxNGQgKDc4''@;'; put 'put ''MS03ODIpIiwiRW5yeWFrdSAoNzgyXHUyMDEzODA2KSIsIkRhaWRcdTAxNGQgKDgwNlx1MjAxMzgxMCkiLCJLXHUwMTRkbmluICg4MTBcdTIwMTM4MjQpIiwiVGVuY2hcdTAxNGQgKDgyNFx1MjAxMzgzNCkiLCJKXHUwMTRkd2EgKDgzNFx1MjAxMzg0OCkiLCJLYWpcdTAxNGQgKDg0OFx1MjAx''@;'; put 'put ''Mzg1MSkiLCJOaW5qdSAoODUxXHUyMDEzODU0KSIsIlNhaWtcdTAxNGQgKDg1NFx1MjAxMzg1NykiLCJUZW4tYW4gKDg1Ny04NTkpIiwiSlx1MDE0ZGdhbiAoODU5XHUyMDEzODc3KSIsIkdhbmd5XHUwMTRkICg4NzdcdTIwMTM4ODUpIiwiTmlubmEgKDg4NVx1MjAxMzg4OSkiLCJLYW5weVx1''@;'; put 'put ''MDE0ZCAoODg5XHUyMDEzODk4KSIsIlNoXHUwMTRkdGFpICg4OThcdTIwMTM5MDEpIiwiRW5naSAoOTAxXHUyMDEzOTIzKSIsIkVuY2hcdTAxNGQgKDkyM1x1MjAxMzkzMSkiLCJKXHUwMTRkaGVpICg5MzFcdTIwMTM5MzgpIiwiVGVuZ3lcdTAxNGQgKDkzOFx1MjAxMzk0NykiLCJUZW5yeWFr''@;'; put 'put ''dSAoOTQ3XHUyMDEzOTU3KSIsIlRlbnRva3UgKDk1N1x1MjAxMzk2MSkiLCJcdTAxNGN3YSAoOTYxXHUyMDEzOTY0KSIsIktcdTAxNGRoXHUwMTRkICg5NjRcdTIwMTM5NjgpIiwiQW5uYSAoOTY4XHUyMDEzOTcwKSIsIlRlbnJva3UgKDk3MFx1MjAxMzk3MykiLCJUZW5cdTIwMTllbiAoOTcz''@;'; put 'put ''XHUyMDEzOTc2KSIsIkpcdTAxNGRnZW4gKDk3Nlx1MjAxMzk3OCkiLCJUZW5nZW4gKDk3OFx1MjAxMzk4MykiLCJFaWthbiAoOTgzXHUyMDEzOTg1KSIsIkthbm5hICg5ODVcdTIwMTM5ODcpIiwiRWllbiAoOTg3XHUyMDEzOTg5KSIsIkVpc28gKDk4OVx1MjAxMzk5MCkiLCJTaFx1MDE0ZHJ5''@;'; put 'put ''YWt1ICg5OTBcdTIwMTM5OTUpIiwiQ2hcdTAxNGR0b2t1ICg5OTVcdTIwMTM5OTkpIiwiQ2hcdTAxNGRoXHUwMTRkICg5OTlcdTIwMTMxMDA0KSIsIkthbmtcdTAxNGQgKDEwMDRcdTIwMTMxMDEyKSIsIkNoXHUwMTRkd2EgKDEwMTJcdTIwMTMxMDE3KSIsIkthbm5pbiAoMTAxN1x1MjAxMzEw''@;'; put 'put ''MjEpIiwiSmlhbiAoMTAyMVx1MjAxMzEwMjQpIiwiTWFuanUgKDEwMjRcdTIwMTMxMDI4KSIsIkNoXHUwMTRkZ2VuICgxMDI4XHUyMDEzMTAzNykiLCJDaFx1MDE0ZHJ5YWt1ICgxMDM3XHUyMDEzMTA0MCkiLCJDaFx1MDE0ZGt5XHUwMTZiICgxMDQwXHUyMDEzMTA0NCkiLCJLYW50b2t1ICgx''@;'; put 'put ''MDQ0XHUyMDEzMTA0NikiLCJFaXNoXHUwMTRkICgxMDQ2XHUyMDEzMTA1MykiLCJUZW5naSAoMTA1M1x1MjAxMzEwNTgpIiwiS1x1MDE0ZGhlaSAoMTA1OFx1MjAxMzEwNjUpIiwiSmlyeWFrdSAoMTA2NVx1MjAxMzEwNjkpIiwiRW5reVx1MDE2YiAoMTA2OVx1MjAxMzEwNzQpIiwiU2hcdTAx''@;'; put 'put ''NGRobyAoMTA3NFx1MjAxMzEwNzcpIiwiU2hcdTAxNGRyeWFrdSAoMTA3N1x1MjAxMzEwODEpIiwiRWloXHUwMTRkICgxMDgxXHUyMDEzMTA4NCkiLCJcdTAxNGN0b2t1ICgxMDg0XHUyMDEzMTA4NykiLCJLYW5qaSAoMTA4N1x1MjAxMzEwOTQpIiwiS2FoXHUwMTRkICgxMDk0XHUyMDEzMTA5''@;'; put 'put ''NikiLCJFaWNoXHUwMTRkICgxMDk2XHUyMDEzMTA5NykiLCJKXHUwMTRkdG9rdSAoMTA5N1x1MjAxMzEwOTkpIiwiS1x1MDE0ZHdhICgxMDk5XHUyMDEzMTEwNCkiLCJDaFx1MDE0ZGppICgxMTA0XHUyMDEzMTEwNikiLCJLYXNoXHUwMTRkICgxMTA2XHUyMDEzMTEwOCkiLCJUZW5uaW4gKDEx''@;'; put 'put ''MDhcdTIwMTMxMTEwKSIsIlRlbi1laSAoMTExMC0xMTEzKSIsIkVpa3lcdTAxNmIgKDExMTNcdTIwMTMxMTE4KSIsIkdlblx1MjAxOWVpICgxMTE4XHUyMDEzMTEyMCkiLCJIXHUwMTRkYW4gKDExMjBcdTIwMTMxMTI0KSIsIlRlbmppICgxMTI0XHUyMDEzMTEyNikiLCJEYWlqaSAoMTEyNlx1''@;'; put 'put ''MjAxMzExMzEpIiwiVGVuc2hcdTAxNGQgKDExMzFcdTIwMTMxMTMyKSIsIkNoXHUwMTRkc2hcdTAxNGQgKDExMzJcdTIwMTMxMTM1KSIsIkhcdTAxNGRlbiAoMTEzNVx1MjAxMzExNDEpIiwiRWlqaSAoMTE0MVx1MjAxMzExNDIpIiwiS1x1MDE0ZGppICgxMTQyXHUyMDEzMTE0NCkiLCJUZW5c''@;'; put 'put ''dTIwMTl5XHUwMTRkICgxMTQ0XHUyMDEzMTE0NSkiLCJLeVx1MDE2YmFuICgxMTQ1XHUyMDEzMTE1MSkiLCJOaW5wZWkgKDExNTFcdTIwMTMxMTU0KSIsIkt5XHUwMTZianUgKDExNTRcdTIwMTMxMTU2KSIsIkhcdTAxNGRnZW4gKDExNTZcdTIwMTMxMTU5KSIsIkhlaWppICgxMTU5XHUyMDEz''@;'; put 'put ''MTE2MCkiLCJFaXJ5YWt1ICgxMTYwXHUyMDEzMTE2MSkiLCJcdTAxNGNobyAoMTE2MVx1MjAxMzExNjMpIiwiQ2hcdTAxNGRrYW4gKDExNjNcdTIwMTMxMTY1KSIsIkVpbWFuICgxMTY1XHUyMDEzMTE2NikiLCJOaW5cdTIwMTlhbiAoMTE2Nlx1MjAxMzExNjkpIiwiS2FcdTAxNGQgKDExNjlc''@;'; put 'put ''dTIwMTMxMTcxKSIsIlNoXHUwMTRkYW4gKDExNzFcdTIwMTMxMTc1KSIsIkFuZ2VuICgxMTc1XHUyMDEzMTE3NykiLCJKaXNoXHUwMTRkICgxMTc3XHUyMDEzMTE4MSkiLCJZXHUwMTRkd2EgKDExODFcdTIwMTMxMTgyKSIsIkp1ZWkgKDExODJcdTIwMTMxMTg0KSIsIkdlbnJ5YWt1ICgxMTg0''@;'; put 'put ''XHUyMDEzMTE4NSkiLCJCdW5qaSAoMTE4NVx1MjAxMzExOTApIiwiS2Vua3lcdTAxNmIgKDExOTBcdTIwMTMxMTk5KSIsIlNoXHUwMTRkamkgKDExOTlcdTIwMTMxMjAxKSIsIktlbm5pbiAoMTIwMVx1MjAxMzEyMDQpIiwiR2Vua3lcdTAxNmIgKDEyMDRcdTIwMTMxMjA2KSIsIktlblx1MjAx''@;'; put 'put ''OWVpICgxMjA2XHUyMDEzMTIwNykiLCJKXHUwMTRkZ2VuICgxMjA3XHUyMDEzMTIxMSkiLCJLZW5yeWFrdSAoMTIxMVx1MjAxMzEyMTMpIiwiS2VucFx1MDE0ZCAoMTIxM1x1MjAxMzEyMTkpIiwiSlx1MDE0ZGt5XHUwMTZiICgxMjE5XHUyMDEzMTIyMikiLCJKXHUwMTRkXHUwMTRkICgxMjIy''@;'; put 'put ''XHUyMDEzMTIyNCkiLCJHZW5uaW4gKDEyMjRcdTIwMTMxMjI1KSIsIkthcm9rdSAoMTIyNVx1MjAxMzEyMjcpIiwiQW50ZWkgKDEyMjdcdTIwMTMxMjI5KSIsIkthbmtpICgxMjI5XHUyMDEzMTIzMikiLCJKXHUwMTRkZWkgKDEyMzJcdTIwMTMxMjMzKSIsIlRlbnB1a3UgKDEyMzNcdTIwMTMx''@;'; put 'put ''MjM0KSIsIkJ1bnJ5YWt1ICgxMjM0XHUyMDEzMTIzNSkiLCJLYXRlaSAoMTIzNVx1MjAxMzEyMzgpIiwiUnlha3VuaW4gKDEyMzhcdTIwMTMxMjM5KSIsIkVuXHUyMDE5XHUwMTRkICgxMjM5XHUyMDEzMTI0MCkiLCJOaW5qaSAoMTI0MFx1MjAxMzEyNDMpIiwiS2FuZ2VuICgxMjQzXHUyMDEz''@;'; put 'put ''MTI0NykiLCJIXHUwMTRkamkgKDEyNDdcdTIwMTMxMjQ5KSIsIktlbmNoXHUwMTRkICgxMjQ5XHUyMDEzMTI1NikiLCJLXHUwMTRkZ2VuICgxMjU2XHUyMDEzMTI1NykiLCJTaFx1MDE0ZGthICgxMjU3XHUyMDEzMTI1OSkiLCJTaFx1MDE0ZGdlbiAoMTI1OVx1MjAxMzEyNjApIiwiQnVuXHUy''@;'; put 'put ''MDE5XHUwMTRkICgxMjYwXHUyMDEzMTI2MSkiLCJLXHUwMTRkY2hcdTAxNGQgKDEyNjFcdTIwMTMxMjY0KSIsIkJ1blx1MjAxOWVpICgxMjY0XHUyMDEzMTI3NSkiLCJLZW5qaSAoMTI3NVx1MjAxMzEyNzgpIiwiS1x1MDE0ZGFuICgxMjc4XHUyMDEzMTI4OCkiLCJTaFx1MDE0ZFx1MDE0ZCAo''@;'; put 'put ''MTI4OFx1MjAxMzEyOTMpIiwiRWluaW4gKDEyOTNcdTIwMTMxMjk5KSIsIlNoXHUwMTRkYW4gKDEyOTlcdTIwMTMxMzAyKSIsIktlbmdlbiAoMTMwMlx1MjAxMzEzMDMpIiwiS2FnZW4gKDEzMDNcdTIwMTMxMzA2KSIsIlRva3VqaSAoMTMwNlx1MjAxMzEzMDgpIiwiRW5reVx1MDE0ZCAoMTMw''@;'; put 'put ''OFx1MjAxMzEzMTEpIiwiXHUwMTRjY2hcdTAxNGQgKDEzMTFcdTIwMTMxMzEyKSIsIlNoXHUwMTRkd2EgKDEzMTJcdTIwMTMxMzE3KSIsIkJ1bnBcdTAxNGQgKDEzMTdcdTIwMTMxMzE5KSIsIkdlblx1MDE0ZCAoMTMxOVx1MjAxMzEzMjEpIiwiR2Vua1x1MDE0ZCAoMTMyMVx1MjAxMzEzMjQp''@;'; put 'put ''IiwiU2hcdTAxNGRjaFx1MDE2YiAoMTMyNFx1MjAxMzEzMjYpIiwiS2FyeWFrdSAoMTMyNlx1MjAxMzEzMjkpIiwiR2VudG9rdSAoMTMyOVx1MjAxMzEzMzEpIiwiR2Vua1x1MDE0ZCAoMTMzMVx1MjAxMzEzMzQpIiwiS2VubXUgKDEzMzRcdTIwMTMxMzM2KSIsIkVuZ2VuICgxMzM2XHUyMDEz''@;'; put 'put ''MTM0MCkiLCJLXHUwMTRka29rdSAoMTM0MFx1MjAxMzEzNDYpIiwiU2hcdTAxNGRoZWkgKDEzNDZcdTIwMTMxMzcwKSIsIktlbnRva3UgKDEzNzBcdTIwMTMxMzcyKSIsIkJ1bmNoXHUwMTZiICgxMzcyXHUyMDEzMTM3NSkiLCJUZW5qdSAoMTM3NVx1MjAxMzEzNzkpIiwiS1x1MDE0ZHJ5YWt1''@;'; put 'put ''ICgxMzc5XHUyMDEzMTM4MSkiLCJLXHUwMTRkd2EgKDEzODFcdTIwMTMxMzg0KSIsIkdlbmNoXHUwMTZiICgxMzg0XHUyMDEzMTM5MikiLCJNZWl0b2t1ICgxMzg0XHUyMDEzMTM4NykiLCJLYWtlaSAoMTM4N1x1MjAxMzEzODkpIiwiS1x1MDE0ZFx1MDE0ZCAoMTM4OVx1MjAxMzEzOTApIiwi''@;'; put 'put ''TWVpdG9rdSAoMTM5MFx1MjAxMzEzOTQpIiwiXHUwMTRjZWkgKDEzOTRcdTIwMTMxNDI4KSIsIlNoXHUwMTRkY2hcdTAxNGQgKDE0MjhcdTIwMTMxNDI5KSIsIkVpa3lcdTAxNGQgKDE0MjlcdTIwMTMxNDQxKSIsIktha2l0c3UgKDE0NDFcdTIwMTMxNDQ0KSIsIkJ1blx1MjAxOWFuICgxNDQ0''@;'; put 'put ''XHUyMDEzMTQ0OSkiLCJIXHUwMTRkdG9rdSAoMTQ0OVx1MjAxMzE0NTIpIiwiS3lcdTAxNGR0b2t1ICgxNDUyXHUyMDEzMTQ1NSkiLCJLXHUwMTRkc2hcdTAxNGQgKDE0NTVcdTIwMTMxNDU3KSIsIkNoXHUwMTRkcm9rdSAoMTQ1N1x1MjAxMzE0NjApIiwiS2Fuc2hcdTAxNGQgKDE0NjBcdTIw''@;'; put 'put ''MTMxNDY2KSIsIkJ1bnNoXHUwMTRkICgxNDY2XHUyMDEzMTQ2NykiLCJcdTAxNGNuaW4gKDE0NjdcdTIwMTMxNDY5KSIsIkJ1bm1laSAoMTQ2OVx1MjAxMzE0ODcpIiwiQ2hcdTAxNGRreVx1MDE0ZCAoMTQ4N1x1MjAxMzE0ODkpIiwiRW50b2t1ICgxNDg5XHUyMDEzMTQ5MikiLCJNZWlcdTAx''@;'; put 'put ''NGQgKDE0OTJcdTIwMTMxNTAxKSIsIkJ1bmtpICgxNTAxXHUyMDEzMTUwNCkiLCJFaXNoXHUwMTRkICgxNTA0XHUyMDEzMTUyMSkiLCJUYWllaSAoMTUyMVx1MjAxMzE1MjgpIiwiS3lcdTAxNGRyb2t1ICgxNTI4XHUyMDEzMTUzMikiLCJUZW5idW4gKDE1MzJcdTIwMTMxNTU1KSIsIktcdTAx''@;'; put 'put ''NGRqaSAoMTU1NVx1MjAxMzE1NTgpIiwiRWlyb2t1ICgxNTU4XHUyMDEzMTU3MCkiLCJHZW5raSAoMTU3MFx1MjAxMzE1NzMpIiwiVGVuc2hcdTAxNGQgKDE1NzNcdTIwMTMxNTkyKSIsIkJ1bnJva3UgKDE1OTJcdTIwMTMxNTk2KSIsIktlaWNoXHUwMTRkICgxNTk2XHUyMDEzMTYxNSkiLCJH''@;'; put 'put ''ZW5uYSAoMTYxNVx1MjAxMzE2MjQpIiwiS2FuXHUyMDE5ZWkgKDE2MjRcdTIwMTMxNjQ0KSIsIlNoXHUwMTRkaG8gKDE2NDRcdTIwMTMxNjQ4KSIsIktlaWFuICgxNjQ4XHUyMDEzMTY1MikiLCJKXHUwMTRkXHUwMTRkICgxNjUyXHUyMDEzMTY1NSkiLCJNZWlyZWtpICgxNjU1XHUyMDEzMTY1''@;'; put 'put ''OCkiLCJNYW5qaSAoMTY1OFx1MjAxMzE2NjEpIiwiS2FuYnVuICgxNjYxXHUyMDEzMTY3MykiLCJFbnBcdTAxNGQgKDE2NzNcdTIwMTMxNjgxKSIsIlRlbm5hICgxNjgxXHUyMDEzMTY4NCkiLCJKXHUwMTRka3lcdTAxNGQgKDE2ODRcdTIwMTMxNjg4KSIsIkdlbnJva3UgKDE2ODhcdTIwMTMx''@;'; put 'put ''NzA0KSIsIkhcdTAxNGRlaSAoMTcwNFx1MjAxMzE3MTEpIiwiU2hcdTAxNGR0b2t1ICgxNzExXHUyMDEzMTcxNikiLCJLeVx1MDE0ZGhcdTAxNGQgKDE3MTZcdTIwMTMxNzM2KSIsIkdlbmJ1biAoMTczNlx1MjAxMzE3NDEpIiwiS2FucFx1MDE0ZCAoMTc0MVx1MjAxMzE3NDQpIiwiRW5reVx1''@;'; put 'put ''MDE0ZCAoMTc0NFx1MjAxMzE3NDgpIiwiS2FuXHUyMDE5ZW4gKDE3NDhcdTIwMTMxNzUxKSIsIkhcdTAxNGRyZWtpICgxNzUxXHUyMDEzMTc2NCkiLCJNZWl3YSAoMTc2NFx1MjAxMzE3NzIpIiwiQW5cdTIwMTllaSAoMTc3Mlx1MjAxMzE3ODEpIiwiVGVubWVpICgxNzgxXHUyMDEzMTc4OSki''@;'; put 'put ''LCJLYW5zZWkgKDE3ODlcdTIwMTMxODAxKSIsIkt5XHUwMTRkd2EgKDE4MDFcdTIwMTMxODA0KSIsIkJ1bmthICgxODA0XHUyMDEzMTgxOCkiLCJCdW5zZWkgKDE4MThcdTIwMTMxODMwKSIsIlRlbnBcdTAxNGQgKDE4MzBcdTIwMTMxODQ0KSIsIktcdTAxNGRrYSAoMTg0NFx1MjAxMzE4NDgp''@;'; put 'put ''IiwiS2FlaSAoMTg0OFx1MjAxMzE4NTQpIiwiQW5zZWkgKDE4NTRcdTIwMTMxODYwKSIsIk1hblx1MjAxOWVuICgxODYwXHUyMDEzMTg2MSkiLCJCdW5reVx1MDE2YiAoMTg2MVx1MjAxMzE4NjQpIiwiR2VuamkgKDE4NjRcdTIwMTMxODY1KSIsIktlaVx1MDE0ZCAoMTg2NVx1MjAxMzE4Njgp''@;'; put 'put ''IiwiTSIsIlQiLCJTIiwiSCJdLCJzaG9ydCI6WyJUYWlrYSAoNjQ1XHUyMDEzNjUwKSIsIkhha3VjaGkgKDY1MFx1MjAxMzY3MSkiLCJIYWt1aFx1MDE0ZCAoNjcyXHUyMDEzNjg2KSIsIlNodWNoXHUwMTRkICg2ODZcdTIwMTM3MDEpIiwiVGFpaFx1MDE0ZCAoNzAxXHUyMDEzNzA0KSIsIktl''@;'; put 'put ''aXVuICg3MDRcdTIwMTM3MDgpIiwiV2FkXHUwMTRkICg3MDhcdTIwMTM3MTUpIiwiUmVpa2kgKDcxNVx1MjAxMzcxNykiLCJZXHUwMTRkclx1MDE0ZCAoNzE3XHUyMDEzNzI0KSIsIkppbmtpICg3MjRcdTIwMTM3MjkpIiwiVGVucHlcdTAxNGQgKDcyOVx1MjAxMzc0OSkiLCJUZW5weVx1MDE0''@;'; put 'put ''ZC1rYW1wXHUwMTRkICg3NDktNzQ5KSIsIlRlbnB5XHUwMTRkLXNoXHUwMTRkaFx1MDE0ZCAoNzQ5LTc1NykiLCJUZW5weVx1MDE0ZC1oXHUwMTRkamkgKDc1Ny03NjUpIiwiVGVucHlcdTAxNGQtamluZ28gKDc2NS03NjcpIiwiSmluZ28ta2VpdW4gKDc2Ny03NzApIiwiSFx1MDE0ZGtpICg3''@;'; put 'put ''NzBcdTIwMTM3ODApIiwiVGVuLVx1MDE0ZCAoNzgxLTc4MikiLCJFbnJ5YWt1ICg3ODJcdTIwMTM4MDYpIiwiRGFpZFx1MDE0ZCAoODA2XHUyMDEzODEwKSIsIktcdTAxNGRuaW4gKDgxMFx1MjAxMzgyNCkiLCJUZW5jaFx1MDE0ZCAoODI0XHUyMDEzODM0KSIsIkpcdTAxNGR3YSAoODM0XHUy''@;'; put 'put ''MDEzODQ4KSIsIkthalx1MDE0ZCAoODQ4XHUyMDEzODUxKSIsIk5pbmp1ICg4NTFcdTIwMTM4NTQpIiwiU2Fpa1x1MDE0ZCAoODU0XHUyMDEzODU3KSIsIlRlbi1hbiAoODU3LTg1OSkiLCJKXHUwMTRkZ2FuICg4NTlcdTIwMTM4NzcpIiwiR2FuZ3lcdTAxNGQgKDg3N1x1MjAxMzg4NSkiLCJO''@;'; put 'put ''aW5uYSAoODg1XHUyMDEzODg5KSIsIkthbnB5XHUwMTRkICg4ODlcdTIwMTM4OTgpIiwiU2hcdTAxNGR0YWkgKDg5OFx1MjAxMzkwMSkiLCJFbmdpICg5MDFcdTIwMTM5MjMpIiwiRW5jaFx1MDE0ZCAoOTIzXHUyMDEzOTMxKSIsIkpcdTAxNGRoZWkgKDkzMVx1MjAxMzkzOCkiLCJUZW5neVx1''@;'; put 'put ''MDE0ZCAoOTM4XHUyMDEzOTQ3KSIsIlRlbnJ5YWt1ICg5NDdcdTIwMTM5NTcpIiwiVGVudG9rdSAoOTU3XHUyMDEzOTYxKSIsIlx1MDE0Y3dhICg5NjFcdTIwMTM5NjQpIiwiS1x1MDE0ZGhcdTAxNGQgKDk2NFx1MjAxMzk2OCkiLCJBbm5hICg5NjhcdTIwMTM5NzApIiwiVGVucm9rdSAoOTcw''@;'; put 'put ''XHUyMDEzOTczKSIsIlRlblx1MjAxOWVuICg5NzNcdTIwMTM5NzYpIiwiSlx1MDE0ZGdlbiAoOTc2XHUyMDEzOTc4KSIsIlRlbmdlbiAoOTc4XHUyMDEzOTgzKSIsIkVpa2FuICg5ODNcdTIwMTM5ODUpIiwiS2FubmEgKDk4NVx1MjAxMzk4NykiLCJFaWVuICg5ODdcdTIwMTM5ODkpIiwiRWlz''@;'; put 'put ''byAoOTg5XHUyMDEzOTkwKSIsIlNoXHUwMTRkcnlha3UgKDk5MFx1MjAxMzk5NSkiLCJDaFx1MDE0ZHRva3UgKDk5NVx1MjAxMzk5OSkiLCJDaFx1MDE0ZGhcdTAxNGQgKDk5OVx1MjAxMzEwMDQpIiwiS2Fua1x1MDE0ZCAoMTAwNFx1MjAxMzEwMTIpIiwiQ2hcdTAxNGR3YSAoMTAxMlx1MjAx''@;'; put 'put ''MzEwMTcpIiwiS2FubmluICgxMDE3XHUyMDEzMTAyMSkiLCJKaWFuICgxMDIxXHUyMDEzMTAyNCkiLCJNYW5qdSAoMTAyNFx1MjAxMzEwMjgpIiwiQ2hcdTAxNGRnZW4gKDEwMjhcdTIwMTMxMDM3KSIsIkNoXHUwMTRkcnlha3UgKDEwMzdcdTIwMTMxMDQwKSIsIkNoXHUwMTRka3lcdTAxNmIg''@;'; put 'put ''KDEwNDBcdTIwMTMxMDQ0KSIsIkthbnRva3UgKDEwNDRcdTIwMTMxMDQ2KSIsIkVpc2hcdTAxNGQgKDEwNDZcdTIwMTMxMDUzKSIsIlRlbmdpICgxMDUzXHUyMDEzMTA1OCkiLCJLXHUwMTRkaGVpICgxMDU4XHUyMDEzMTA2NSkiLCJKaXJ5YWt1ICgxMDY1XHUyMDEzMTA2OSkiLCJFbmt5XHUw''@;'; put 'put ''MTZiICgxMDY5XHUyMDEzMTA3NCkiLCJTaFx1MDE0ZGhvICgxMDc0XHUyMDEzMTA3NykiLCJTaFx1MDE0ZHJ5YWt1ICgxMDc3XHUyMDEzMTA4MSkiLCJFaWhcdTAxNGQgKDEwODFcdTIwMTMxMDg0KSIsIlx1MDE0Y3Rva3UgKDEwODRcdTIwMTMxMDg3KSIsIkthbmppICgxMDg3XHUyMDEzMTA5''@;'; put 'put ''NCkiLCJLYWhcdTAxNGQgKDEwOTRcdTIwMTMxMDk2KSIsIkVpY2hcdTAxNGQgKDEwOTZcdTIwMTMxMDk3KSIsIkpcdTAxNGR0b2t1ICgxMDk3XHUyMDEzMTA5OSkiLCJLXHUwMTRkd2EgKDEwOTlcdTIwMTMxMTA0KSIsIkNoXHUwMTRkamkgKDExMDRcdTIwMTMxMTA2KSIsIkthc2hcdTAxNGQg''@;'; put 'put ''KDExMDZcdTIwMTMxMTA4KSIsIlRlbm5pbiAoMTEwOFx1MjAxMzExMTApIiwiVGVuLWVpICgxMTEwLTExMTMpIiwiRWlreVx1MDE2YiAoMTExM1x1MjAxMzExMTgpIiwiR2VuXHUyMDE5ZWkgKDExMThcdTIwMTMxMTIwKSIsIkhcdTAxNGRhbiAoMTEyMFx1MjAxMzExMjQpIiwiVGVuamkgKDEx''@;'; put 'put ''MjRcdTIwMTMxMTI2KSIsIkRhaWppICgxMTI2XHUyMDEzMTEzMSkiLCJUZW5zaFx1MDE0ZCAoMTEzMVx1MjAxMzExMzIpIiwiQ2hcdTAxNGRzaFx1MDE0ZCAoMTEzMlx1MjAxMzExMzUpIiwiSFx1MDE0ZGVuICgxMTM1XHUyMDEzMTE0MSkiLCJFaWppICgxMTQxXHUyMDEzMTE0MikiLCJLXHUw''@;'; put 'put ''MTRkamkgKDExNDJcdTIwMTMxMTQ0KSIsIlRlblx1MjAxOXlcdTAxNGQgKDExNDRcdTIwMTMxMTQ1KSIsIkt5XHUwMTZiYW4gKDExNDVcdTIwMTMxMTUxKSIsIk5pbnBlaSAoMTE1MVx1MjAxMzExNTQpIiwiS3lcdTAxNmJqdSAoMTE1NFx1MjAxMzExNTYpIiwiSFx1MDE0ZGdlbiAoMTE1Nlx1''@;'; put 'put ''MjAxMzExNTkpIiwiSGVpamkgKDExNTlcdTIwMTMxMTYwKSIsIkVpcnlha3UgKDExNjBcdTIwMTMxMTYxKSIsIlx1MDE0Y2hvICgxMTYxXHUyMDEzMTE2MykiLCJDaFx1MDE0ZGthbiAoMTE2M1x1MjAxMzExNjUpIiwiRWltYW4gKDExNjVcdTIwMTMxMTY2KSIsIk5pblx1MjAxOWFuICgxMTY2''@;'; put 'put ''XHUyMDEzMTE2OSkiLCJLYVx1MDE0ZCAoMTE2OVx1MjAxMzExNzEpIiwiU2hcdTAxNGRhbiAoMTE3MVx1MjAxMzExNzUpIiwiQW5nZW4gKDExNzVcdTIwMTMxMTc3KSIsIkppc2hcdTAxNGQgKDExNzdcdTIwMTMxMTgxKSIsIllcdTAxNGR3YSAoMTE4MVx1MjAxMzExODIpIiwiSnVlaSAoMTE4''@;'; put 'put ''Mlx1MjAxMzExODQpIiwiR2Vucnlha3UgKDExODRcdTIwMTMxMTg1KSIsIkJ1bmppICgxMTg1XHUyMDEzMTE5MCkiLCJLZW5reVx1MDE2YiAoMTE5MFx1MjAxMzExOTkpIiwiU2hcdTAxNGRqaSAoMTE5OVx1MjAxMzEyMDEpIiwiS2VubmluICgxMjAxXHUyMDEzMTIwNCkiLCJHZW5reVx1MDE2''@;'; put 'put ''YiAoMTIwNFx1MjAxMzEyMDYpIiwiS2VuXHUyMDE5ZWkgKDEyMDZcdTIwMTMxMjA3KSIsIkpcdTAxNGRnZW4gKDEyMDdcdTIwMTMxMjExKSIsIktlbnJ5YWt1ICgxMjExXHUyMDEzMTIxMykiLCJLZW5wXHUwMTRkICgxMjEzXHUyMDEzMTIxOSkiLCJKXHUwMTRka3lcdTAxNmIgKDEyMTlcdTIw''@;'; put 'put ''MTMxMjIyKSIsIkpcdTAxNGRcdTAxNGQgKDEyMjJcdTIwMTMxMjI0KSIsIkdlbm5pbiAoMTIyNFx1MjAxMzEyMjUpIiwiS2Fyb2t1ICgxMjI1XHUyMDEzMTIyNykiLCJBbnRlaSAoMTIyN1x1MjAxMzEyMjkpIiwiS2Fua2kgKDEyMjlcdTIwMTMxMjMyKSIsIkpcdTAxNGRlaSAoMTIzMlx1MjAx''@;'; put 'put ''MzEyMzMpIiwiVGVucHVrdSAoMTIzM1x1MjAxMzEyMzQpIiwiQnVucnlha3UgKDEyMzRcdTIwMTMxMjM1KSIsIkthdGVpICgxMjM1XHUyMDEzMTIzOCkiLCJSeWFrdW5pbiAoMTIzOFx1MjAxMzEyMzkpIiwiRW5cdTIwMTlcdTAxNGQgKDEyMzlcdTIwMTMxMjQwKSIsIk5pbmppICgxMjQwXHUy''@;'; put 'put ''MDEzMTI0MykiLCJLYW5nZW4gKDEyNDNcdTIwMTMxMjQ3KSIsIkhcdTAxNGRqaSAoMTI0N1x1MjAxMzEyNDkpIiwiS2VuY2hcdTAxNGQgKDEyNDlcdTIwMTMxMjU2KSIsIktcdTAxNGRnZW4gKDEyNTZcdTIwMTMxMjU3KSIsIlNoXHUwMTRka2EgKDEyNTdcdTIwMTMxMjU5KSIsIlNoXHUwMTRk''@;'; put 'put ''Z2VuICgxMjU5XHUyMDEzMTI2MCkiLCJCdW5cdTIwMTlcdTAxNGQgKDEyNjBcdTIwMTMxMjYxKSIsIktcdTAxNGRjaFx1MDE0ZCAoMTI2MVx1MjAxMzEyNjQpIiwiQnVuXHUyMDE5ZWkgKDEyNjRcdTIwMTMxMjc1KSIsIktlbmppICgxMjc1XHUyMDEzMTI3OCkiLCJLXHUwMTRkYW4gKDEyNzhc''@;'; put 'put ''dTIwMTMxMjg4KSIsIlNoXHUwMTRkXHUwMTRkICgxMjg4XHUyMDEzMTI5MykiLCJFaW5pbiAoMTI5M1x1MjAxMzEyOTkpIiwiU2hcdTAxNGRhbiAoMTI5OVx1MjAxMzEzMDIpIiwiS2VuZ2VuICgxMzAyXHUyMDEzMTMwMykiLCJLYWdlbiAoMTMwM1x1MjAxMzEzMDYpIiwiVG9rdWppICgxMzA2''@;'; put 'put ''XHUyMDEzMTMwOCkiLCJFbmt5XHUwMTRkICgxMzA4XHUyMDEzMTMxMSkiLCJcdTAxNGNjaFx1MDE0ZCAoMTMxMVx1MjAxMzEzMTIpIiwiU2hcdTAxNGR3YSAoMTMxMlx1MjAxMzEzMTcpIiwiQnVucFx1MDE0ZCAoMTMxN1x1MjAxMzEzMTkpIiwiR2VuXHUwMTRkICgxMzE5XHUyMDEzMTMyMSki''@;'; put 'put ''LCJHZW5rXHUwMTRkICgxMzIxXHUyMDEzMTMyNCkiLCJTaFx1MDE0ZGNoXHUwMTZiICgxMzI0XHUyMDEzMTMyNikiLCJLYXJ5YWt1ICgxMzI2XHUyMDEzMTMyOSkiLCJHZW50b2t1ICgxMzI5XHUyMDEzMTMzMSkiLCJHZW5rXHUwMTRkICgxMzMxXHUyMDEzMTMzNCkiLCJLZW5tdSAoMTMzNFx1''@;'; put 'put ''MjAxMzEzMzYpIiwiRW5nZW4gKDEzMzZcdTIwMTMxMzQwKSIsIktcdTAxNGRrb2t1ICgxMzQwXHUyMDEzMTM0NikiLCJTaFx1MDE0ZGhlaSAoMTM0Nlx1MjAxMzEzNzApIiwiS2VudG9rdSAoMTM3MFx1MjAxMzEzNzIpIiwiQnVuY2hcdTAxNmIgKDEzNzJcdTIwMTMxMzc1KSIsIlRlbmp1ICgx''@;'; put 'put ''Mzc1XHUyMDEzMTM3OSkiLCJLXHUwMTRkcnlha3UgKDEzNzlcdTIwMTMxMzgxKSIsIktcdTAxNGR3YSAoMTM4MVx1MjAxMzEzODQpIiwiR2VuY2hcdTAxNmIgKDEzODRcdTIwMTMxMzkyKSIsIk1laXRva3UgKDEzODRcdTIwMTMxMzg3KSIsIktha2VpICgxMzg3XHUyMDEzMTM4OSkiLCJLXHUw''@;'; put 'put ''MTRkXHUwMTRkICgxMzg5XHUyMDEzMTM5MCkiLCJNZWl0b2t1ICgxMzkwXHUyMDEzMTM5NCkiLCJcdTAxNGNlaSAoMTM5NFx1MjAxMzE0MjgpIiwiU2hcdTAxNGRjaFx1MDE0ZCAoMTQyOFx1MjAxMzE0MjkpIiwiRWlreVx1MDE0ZCAoMTQyOVx1MjAxMzE0NDEpIiwiS2FraXRzdSAoMTQ0MVx1''@;'; put 'put ''MjAxMzE0NDQpIiwiQnVuXHUyMDE5YW4gKDE0NDRcdTIwMTMxNDQ5KSIsIkhcdTAxNGR0b2t1ICgxNDQ5XHUyMDEzMTQ1MikiLCJLeVx1MDE0ZHRva3UgKDE0NTJcdTIwMTMxNDU1KSIsIktcdTAxNGRzaFx1MDE0ZCAoMTQ1NVx1MjAxMzE0NTcpIiwiQ2hcdTAxNGRyb2t1ICgxNDU3XHUyMDEz''@;'; put 'put ''MTQ2MCkiLCJLYW5zaFx1MDE0ZCAoMTQ2MFx1MjAxMzE0NjYpIiwiQnVuc2hcdTAxNGQgKDE0NjZcdTIwMTMxNDY3KSIsIlx1MDE0Y25pbiAoMTQ2N1x1MjAxMzE0NjkpIiwiQnVubWVpICgxNDY5XHUyMDEzMTQ4NykiLCJDaFx1MDE0ZGt5XHUwMTRkICgxNDg3XHUyMDEzMTQ4OSkiLCJFbnRv''@;'; put 'put ''a3UgKDE0ODlcdTIwMTMxNDkyKSIsIk1laVx1MDE0ZCAoMTQ5Mlx1MjAxMzE1MDEpIiwiQnVua2kgKDE1MDFcdTIwMTMxNTA0KSIsIkVpc2hcdTAxNGQgKDE1MDRcdTIwMTMxNTIxKSIsIlRhaWVpICgxNTIxXHUyMDEzMTUyOCkiLCJLeVx1MDE0ZHJva3UgKDE1MjhcdTIwMTMxNTMyKSIsIlRl''@;'; put 'put ''bmJ1biAoMTUzMlx1MjAxMzE1NTUpIiwiS1x1MDE0ZGppICgxNTU1XHUyMDEzMTU1OCkiLCJFaXJva3UgKDE1NThcdTIwMTMxNTcwKSIsIkdlbmtpICgxNTcwXHUyMDEzMTU3MykiLCJUZW5zaFx1MDE0ZCAoMTU3M1x1MjAxMzE1OTIpIiwiQnVucm9rdSAoMTU5Mlx1MjAxMzE1OTYpIiwiS2Vp''@;'; put 'put ''Y2hcdTAxNGQgKDE1OTZcdTIwMTMxNjE1KSIsIkdlbm5hICgxNjE1XHUyMDEzMTYyNCkiLCJLYW5cdTIwMTllaSAoMTYyNFx1MjAxMzE2NDQpIiwiU2hcdTAxNGRobyAoMTY0NFx1MjAxMzE2NDgpIiwiS2VpYW4gKDE2NDhcdTIwMTMxNjUyKSIsIkpcdTAxNGRcdTAxNGQgKDE2NTJcdTIwMTMx''@;'; put 'put ''NjU1KSIsIk1laXJla2kgKDE2NTVcdTIwMTMxNjU4KSIsIk1hbmppICgxNjU4XHUyMDEzMTY2MSkiLCJLYW5idW4gKDE2NjFcdTIwMTMxNjczKSIsIkVucFx1MDE0ZCAoMTY3M1x1MjAxMzE2ODEpIiwiVGVubmEgKDE2ODFcdTIwMTMxNjg0KSIsIkpcdTAxNGRreVx1MDE0ZCAoMTY4NFx1MjAx''@;'; put 'put ''MzE2ODgpIiwiR2Vucm9rdSAoMTY4OFx1MjAxMzE3MDQpIiwiSFx1MDE0ZGVpICgxNzA0XHUyMDEzMTcxMSkiLCJTaFx1MDE0ZHRva3UgKDE3MTFcdTIwMTMxNzE2KSIsIkt5XHUwMTRkaFx1MDE0ZCAoMTcxNlx1MjAxMzE3MzYpIiwiR2VuYnVuICgxNzM2XHUyMDEzMTc0MSkiLCJLYW5wXHUw''@;'; put 'put ''MTRkICgxNzQxXHUyMDEzMTc0NCkiLCJFbmt5XHUwMTRkICgxNzQ0XHUyMDEzMTc0OCkiLCJLYW5cdTIwMTllbiAoMTc0OFx1MjAxMzE3NTEpIiwiSFx1MDE0ZHJla2kgKDE3NTFcdTIwMTMxNzY0KSIsIk1laXdhICgxNzY0XHUyMDEzMTc3MikiLCJBblx1MjAxOWVpICgxNzcyXHUyMDEzMTc4''@;'; put 'put ''MSkiLCJUZW5tZWkgKDE3ODFcdTIwMTMxNzg5KSIsIkthbnNlaSAoMTc4OVx1MjAxMzE4MDEpIiwiS3lcdTAxNGR3YSAoMTgwMVx1MjAxMzE4MDQpIiwiQnVua2EgKDE4MDRcdTIwMTMxODE4KSIsIkJ1bnNlaSAoMTgxOFx1MjAxMzE4MzApIiwiVGVucFx1MDE0ZCAoMTgzMFx1MjAxMzE4NDQp''@;'; put 'put ''IiwiS1x1MDE0ZGthICgxODQ0XHUyMDEzMTg0OCkiLCJLYWVpICgxODQ4XHUyMDEzMTg1NCkiLCJBbnNlaSAoMTg1NFx1MjAxMzE4NjApIiwiTWFuXHUyMDE5ZW4gKDE4NjBcdTIwMTMxODYxKSIsIkJ1bmt5XHUwMTZiICgxODYxXHUyMDEzMTg2NCkiLCJHZW5qaSAoMTg2NFx1MjAxMzE4NjUp''@;'; put 'put ''IiwiS2VpXHUwMTRkICgxODY1XHUyMDEzMTg2OCkiLCJNZWlqaSIsIlRhaXNoXHUwMTRkIiwiU2hcdTAxNGR3YSIsIkhlaXNlaSJdLCJsb25nIjpbIlRhaWthICg2NDVcdTIwMTM2NTApIiwiSGFrdWNoaSAoNjUwXHUyMDEzNjcxKSIsIkhha3VoXHUwMTRkICg2NzJcdTIwMTM2ODYpIiwiU2h1''@;'; put 'put ''Y2hcdTAxNGQgKDY4Nlx1MjAxMzcwMSkiLCJUYWloXHUwMTRkICg3MDFcdTIwMTM3MDQpIiwiS2VpdW4gKDcwNFx1MjAxMzcwOCkiLCJXYWRcdTAxNGQgKDcwOFx1MjAxMzcxNSkiLCJSZWlraSAoNzE1XHUyMDEzNzE3KSIsIllcdTAxNGRyXHUwMTRkICg3MTdcdTIwMTM3MjQpIiwiSmlua2kg''@;'; put 'put ''KDcyNFx1MjAxMzcyOSkiLCJUZW5weVx1MDE0ZCAoNzI5XHUyMDEzNzQ5KSIsIlRlbnB5XHUwMTRkLWthbXBcdTAxNGQgKDc0OS03NDkpIiwiVGVucHlcdTAxNGQtc2hcdTAxNGRoXHUwMTRkICg3NDktNzU3KSIsIlRlbnB5XHUwMTRkLWhcdTAxNGRqaSAoNzU3LTc2NSkiLCJUZW5weVx1MDE0''@;'; put 'put ''ZC1qaW5nbyAoNzY1LTc2NykiLCJKaW5nby1rZWl1biAoNzY3LTc3MCkiLCJIXHUwMTRka2kgKDc3MFx1MjAxMzc4MCkiLCJUZW4tXHUwMTRkICg3ODEtNzgyKSIsIkVucnlha3UgKDc4Mlx1MjAxMzgwNikiLCJEYWlkXHUwMTRkICg4MDZcdTIwMTM4MTApIiwiS1x1MDE0ZG5pbiAoODEwXHUy''@;'; put 'put ''MDEzODI0KSIsIlRlbmNoXHUwMTRkICg4MjRcdTIwMTM4MzQpIiwiSlx1MDE0ZHdhICg4MzRcdTIwMTM4NDgpIiwiS2FqXHUwMTRkICg4NDhcdTIwMTM4NTEpIiwiTmluanUgKDg1MVx1MjAxMzg1NCkiLCJTYWlrXHUwMTRkICg4NTRcdTIwMTM4NTcpIiwiVGVuLWFuICg4NTctODU5KSIsIkpc''@;'; put 'put ''dTAxNGRnYW4gKDg1OVx1MjAxMzg3NykiLCJHYW5neVx1MDE0ZCAoODc3XHUyMDEzODg1KSIsIk5pbm5hICg4ODVcdTIwMTM4ODkpIiwiS2FucHlcdTAxNGQgKDg4OVx1MjAxMzg5OCkiLCJTaFx1MDE0ZHRhaSAoODk4XHUyMDEzOTAxKSIsIkVuZ2kgKDkwMVx1MjAxMzkyMykiLCJFbmNoXHUw''@;'; put 'put ''MTRkICg5MjNcdTIwMTM5MzEpIiwiSlx1MDE0ZGhlaSAoOTMxXHUyMDEzOTM4KSIsIlRlbmd5XHUwMTRkICg5MzhcdTIwMTM5NDcpIiwiVGVucnlha3UgKDk0N1x1MjAxMzk1NykiLCJUZW50b2t1ICg5NTdcdTIwMTM5NjEpIiwiXHUwMTRjd2EgKDk2MVx1MjAxMzk2NCkiLCJLXHUwMTRkaFx1''@;'; put 'put ''MDE0ZCAoOTY0XHUyMDEzOTY4KSIsIkFubmEgKDk2OFx1MjAxMzk3MCkiLCJUZW5yb2t1ICg5NzBcdTIwMTM5NzMpIiwiVGVuXHUyMDE5ZW4gKDk3M1x1MjAxMzk3NikiLCJKXHUwMTRkZ2VuICg5NzZcdTIwMTM5NzgpIiwiVGVuZ2VuICg5NzhcdTIwMTM5ODMpIiwiRWlrYW4gKDk4M1x1MjAx''@;'; put 'put ''Mzk4NSkiLCJLYW5uYSAoOTg1XHUyMDEzOTg3KSIsIkVpZW4gKDk4N1x1MjAxMzk4OSkiLCJFaXNvICg5ODlcdTIwMTM5OTApIiwiU2hcdTAxNGRyeWFrdSAoOTkwXHUyMDEzOTk1KSIsIkNoXHUwMTRkdG9rdSAoOTk1XHUyMDEzOTk5KSIsIkNoXHUwMTRkaFx1MDE0ZCAoOTk5XHUyMDEzMTAw''@;'; put 'put ''NCkiLCJLYW5rXHUwMTRkICgxMDA0XHUyMDEzMTAxMikiLCJDaFx1MDE0ZHdhICgxMDEyXHUyMDEzMTAxNykiLCJLYW5uaW4gKDEwMTdcdTIwMTMxMDIxKSIsIkppYW4gKDEwMjFcdTIwMTMxMDI0KSIsIk1hbmp1ICgxMDI0XHUyMDEzMTAyOCkiLCJDaFx1MDE0ZGdlbiAoMTAyOFx1MjAxMzEw''@;'; put 'put ''MzcpIiwiQ2hcdTAxNGRyeWFrdSAoMTAzN1x1MjAxMzEwNDApIiwiQ2hcdTAxNGRreVx1MDE2YiAoMTA0MFx1MjAxMzEwNDQpIiwiS2FudG9rdSAoMTA0NFx1MjAxMzEwNDYpIiwiRWlzaFx1MDE0ZCAoMTA0Nlx1MjAxMzEwNTMpIiwiVGVuZ2kgKDEwNTNcdTIwMTMxMDU4KSIsIktcdTAxNGRo''@;'; put 'put ''ZWkgKDEwNThcdTIwMTMxMDY1KSIsIkppcnlha3UgKDEwNjVcdTIwMTMxMDY5KSIsIkVua3lcdTAxNmIgKDEwNjlcdTIwMTMxMDc0KSIsIlNoXHUwMTRkaG8gKDEwNzRcdTIwMTMxMDc3KSIsIlNoXHUwMTRkcnlha3UgKDEwNzdcdTIwMTMxMDgxKSIsIkVpaFx1MDE0ZCAoMTA4MVx1MjAxMzEw''@;'; put 'put ''ODQpIiwiXHUwMTRjdG9rdSAoMTA4NFx1MjAxMzEwODcpIiwiS2FuamkgKDEwODdcdTIwMTMxMDk0KSIsIkthaFx1MDE0ZCAoMTA5NFx1MjAxMzEwOTYpIiwiRWljaFx1MDE0ZCAoMTA5Nlx1MjAxMzEwOTcpIiwiSlx1MDE0ZHRva3UgKDEwOTdcdTIwMTMxMDk5KSIsIktcdTAxNGR3YSAoMTA5''@;'; put 'put ''OVx1MjAxMzExMDQpIiwiQ2hcdTAxNGRqaSAoMTEwNFx1MjAxMzExMDYpIiwiS2FzaFx1MDE0ZCAoMTEwNlx1MjAxMzExMDgpIiwiVGVubmluICgxMTA4XHUyMDEzMTExMCkiLCJUZW4tZWkgKDExMTAtMTExMykiLCJFaWt5XHUwMTZiICgxMTEzXHUyMDEzMTExOCkiLCJHZW5cdTIwMTllaSAo''@;'; put 'put ''MTExOFx1MjAxMzExMjApIiwiSFx1MDE0ZGFuICgxMTIwXHUyMDEzMTEyNCkiLCJUZW5qaSAoMTEyNFx1MjAxMzExMjYpIiwiRGFpamkgKDExMjZcdTIwMTMxMTMxKSIsIlRlbnNoXHUwMTRkICgxMTMxXHUyMDEzMTEzMikiLCJDaFx1MDE0ZHNoXHUwMTRkICgxMTMyXHUyMDEzMTEzNSkiLCJI''@;'; put 'put ''XHUwMTRkZW4gKDExMzVcdTIwMTMxMTQxKSIsIkVpamkgKDExNDFcdTIwMTMxMTQyKSIsIktcdTAxNGRqaSAoMTE0Mlx1MjAxMzExNDQpIiwiVGVuXHUyMDE5eVx1MDE0ZCAoMTE0NFx1MjAxMzExNDUpIiwiS3lcdTAxNmJhbiAoMTE0NVx1MjAxMzExNTEpIiwiTmlucGVpICgxMTUxXHUyMDEz''@;'; put 'put ''MTE1NCkiLCJLeVx1MDE2Ymp1ICgxMTU0XHUyMDEzMTE1NikiLCJIXHUwMTRkZ2VuICgxMTU2XHUyMDEzMTE1OSkiLCJIZWlqaSAoMTE1OVx1MjAxMzExNjApIiwiRWlyeWFrdSAoMTE2MFx1MjAxMzExNjEpIiwiXHUwMTRjaG8gKDExNjFcdTIwMTMxMTYzKSIsIkNoXHUwMTRka2FuICgxMTYz''@;'; put 'put ''XHUyMDEzMTE2NSkiLCJFaW1hbiAoMTE2NVx1MjAxMzExNjYpIiwiTmluXHUyMDE5YW4gKDExNjZcdTIwMTMxMTY5KSIsIkthXHUwMTRkICgxMTY5XHUyMDEzMTE3MSkiLCJTaFx1MDE0ZGFuICgxMTcxXHUyMDEzMTE3NSkiLCJBbmdlbiAoMTE3NVx1MjAxMzExNzcpIiwiSmlzaFx1MDE0ZCAo''@;'; put 'put ''MTE3N1x1MjAxMzExODEpIiwiWVx1MDE0ZHdhICgxMTgxXHUyMDEzMTE4MikiLCJKdWVpICgxMTgyXHUyMDEzMTE4NCkiLCJHZW5yeWFrdSAoMTE4NFx1MjAxMzExODUpIiwiQnVuamkgKDExODVcdTIwMTMxMTkwKSIsIktlbmt5XHUwMTZiICgxMTkwXHUyMDEzMTE5OSkiLCJTaFx1MDE0ZGpp''@;'; put 'put ''ICgxMTk5XHUyMDEzMTIwMSkiLCJLZW5uaW4gKDEyMDFcdTIwMTMxMjA0KSIsIkdlbmt5XHUwMTZiICgxMjA0XHUyMDEzMTIwNikiLCJLZW5cdTIwMTllaSAoMTIwNlx1MjAxMzEyMDcpIiwiSlx1MDE0ZGdlbiAoMTIwN1x1MjAxMzEyMTEpIiwiS2Vucnlha3UgKDEyMTFcdTIwMTMxMjEzKSIs''@;'; put 'put ''IktlbnBcdTAxNGQgKDEyMTNcdTIwMTMxMjE5KSIsIkpcdTAxNGRreVx1MDE2YiAoMTIxOVx1MjAxMzEyMjIpIiwiSlx1MDE0ZFx1MDE0ZCAoMTIyMlx1MjAxMzEyMjQpIiwiR2VubmluICgxMjI0XHUyMDEzMTIyNSkiLCJLYXJva3UgKDEyMjVcdTIwMTMxMjI3KSIsIkFudGVpICgxMjI3XHUy''@;'; put 'put ''MDEzMTIyOSkiLCJLYW5raSAoMTIyOVx1MjAxMzEyMzIpIiwiSlx1MDE0ZGVpICgxMjMyXHUyMDEzMTIzMykiLCJUZW5wdWt1ICgxMjMzXHUyMDEzMTIzNCkiLCJCdW5yeWFrdSAoMTIzNFx1MjAxMzEyMzUpIiwiS2F0ZWkgKDEyMzVcdTIwMTMxMjM4KSIsIlJ5YWt1bmluICgxMjM4XHUyMDEz''@;'; put 'put ''MTIzOSkiLCJFblx1MjAxOVx1MDE0ZCAoMTIzOVx1MjAxMzEyNDApIiwiTmluamkgKDEyNDBcdTIwMTMxMjQzKSIsIkthbmdlbiAoMTI0M1x1MjAxMzEyNDcpIiwiSFx1MDE0ZGppICgxMjQ3XHUyMDEzMTI0OSkiLCJLZW5jaFx1MDE0ZCAoMTI0OVx1MjAxMzEyNTYpIiwiS1x1MDE0ZGdlbiAo''@;'; put 'put ''MTI1Nlx1MjAxMzEyNTcpIiwiU2hcdTAxNGRrYSAoMTI1N1x1MjAxMzEyNTkpIiwiU2hcdTAxNGRnZW4gKDEyNTlcdTIwMTMxMjYwKSIsIkJ1blx1MjAxOVx1MDE0ZCAoMTI2MFx1MjAxMzEyNjEpIiwiS1x1MDE0ZGNoXHUwMTRkICgxMjYxXHUyMDEzMTI2NCkiLCJCdW5cdTIwMTllaSAoMTI2''@;'; put 'put ''NFx1MjAxMzEyNzUpIiwiS2VuamkgKDEyNzVcdTIwMTMxMjc4KSIsIktcdTAxNGRhbiAoMTI3OFx1MjAxMzEyODgpIiwiU2hcdTAxNGRcdTAxNGQgKDEyODhcdTIwMTMxMjkzKSIsIkVpbmluICgxMjkzXHUyMDEzMTI5OSkiLCJTaFx1MDE0ZGFuICgxMjk5XHUyMDEzMTMwMikiLCJLZW5nZW4g''@;'; put 'put ''KDEzMDJcdTIwMTMxMzAzKSIsIkthZ2VuICgxMzAzXHUyMDEzMTMwNikiLCJUb2t1amkgKDEzMDZcdTIwMTMxMzA4KSIsIkVua3lcdTAxNGQgKDEzMDhcdTIwMTMxMzExKSIsIlx1MDE0Y2NoXHUwMTRkICgxMzExXHUyMDEzMTMxMikiLCJTaFx1MDE0ZHdhICgxMzEyXHUyMDEzMTMxNykiLCJC''@;'; put 'put ''dW5wXHUwMTRkICgxMzE3XHUyMDEzMTMxOSkiLCJHZW5cdTAxNGQgKDEzMTlcdTIwMTMxMzIxKSIsIkdlbmtcdTAxNGQgKDEzMjFcdTIwMTMxMzI0KSIsIlNoXHUwMTRkY2hcdTAxNmIgKDEzMjRcdTIwMTMxMzI2KSIsIkthcnlha3UgKDEzMjZcdTIwMTMxMzI5KSIsIkdlbnRva3UgKDEzMjlc''@;'; put 'put ''dTIwMTMxMzMxKSIsIkdlbmtcdTAxNGQgKDEzMzFcdTIwMTMxMzM0KSIsIktlbm11ICgxMzM0XHUyMDEzMTMzNikiLCJFbmdlbiAoMTMzNlx1MjAxMzEzNDApIiwiS1x1MDE0ZGtva3UgKDEzNDBcdTIwMTMxMzQ2KSIsIlNoXHUwMTRkaGVpICgxMzQ2XHUyMDEzMTM3MCkiLCJLZW50b2t1ICgx''@;'; put 'put ''MzcwXHUyMDEzMTM3MikiLCJCdW5jaFx1MDE2YiAoMTM3Mlx1MjAxMzEzNzUpIiwiVGVuanUgKDEzNzVcdTIwMTMxMzc5KSIsIktcdTAxNGRyeWFrdSAoMTM3OVx1MjAxMzEzODEpIiwiS1x1MDE0ZHdhICgxMzgxXHUyMDEzMTM4NCkiLCJHZW5jaFx1MDE2YiAoMTM4NFx1MjAxMzEzOTIpIiwi''@;'; put 'put ''TWVpdG9rdSAoMTM4NFx1MjAxMzEzODcpIiwiS2FrZWkgKDEzODdcdTIwMTMxMzg5KSIsIktcdTAxNGRcdTAxNGQgKDEzODlcdTIwMTMxMzkwKSIsIk1laXRva3UgKDEzOTBcdTIwMTMxMzk0KSIsIlx1MDE0Y2VpICgxMzk0XHUyMDEzMTQyOCkiLCJTaFx1MDE0ZGNoXHUwMTRkICgxNDI4XHUy''@;'; put 'put ''MDEzMTQyOSkiLCJFaWt5XHUwMTRkICgxNDI5XHUyMDEzMTQ0MSkiLCJLYWtpdHN1ICgxNDQxXHUyMDEzMTQ0NCkiLCJCdW5cdTIwMTlhbiAoMTQ0NFx1MjAxMzE0NDkpIiwiSFx1MDE0ZHRva3UgKDE0NDlcdTIwMTMxNDUyKSIsIkt5XHUwMTRkdG9rdSAoMTQ1Mlx1MjAxMzE0NTUpIiwiS1x1''@;'; put 'put ''MDE0ZHNoXHUwMTRkICgxNDU1XHUyMDEzMTQ1NykiLCJDaFx1MDE0ZHJva3UgKDE0NTdcdTIwMTMxNDYwKSIsIkthbnNoXHUwMTRkICgxNDYwXHUyMDEzMTQ2NikiLCJCdW5zaFx1MDE0ZCAoMTQ2Nlx1MjAxMzE0NjcpIiwiXHUwMTRjbmluICgxNDY3XHUyMDEzMTQ2OSkiLCJCdW5tZWkgKDE0''@;'; put 'put ''NjlcdTIwMTMxNDg3KSIsIkNoXHUwMTRka3lcdTAxNGQgKDE0ODdcdTIwMTMxNDg5KSIsIkVudG9rdSAoMTQ4OVx1MjAxMzE0OTIpIiwiTWVpXHUwMTRkICgxNDkyXHUyMDEzMTUwMSkiLCJCdW5raSAoMTUwMVx1MjAxMzE1MDQpIiwiRWlzaFx1MDE0ZCAoMTUwNFx1MjAxMzE1MjEpIiwiVGFp''@;'; put 'put ''ZWkgKDE1MjFcdTIwMTMxNTI4KSIsIkt5XHUwMTRkcm9rdSAoMTUyOFx1MjAxMzE1MzIpIiwiVGVuYnVuICgxNTMyXHUyMDEzMTU1NSkiLCJLXHUwMTRkamkgKDE1NTVcdTIwMTMxNTU4KSIsIkVpcm9rdSAoMTU1OFx1MjAxMzE1NzApIiwiR2Vua2kgKDE1NzBcdTIwMTMxNTczKSIsIlRlbnNo''@;'; put 'put ''XHUwMTRkICgxNTczXHUyMDEzMTU5MikiLCJCdW5yb2t1ICgxNTkyXHUyMDEzMTU5NikiLCJLZWljaFx1MDE0ZCAoMTU5Nlx1MjAxMzE2MTUpIiwiR2VubmEgKDE2MTVcdTIwMTMxNjI0KSIsIkthblx1MjAxOWVpICgxNjI0XHUyMDEzMTY0NCkiLCJTaFx1MDE0ZGhvICgxNjQ0XHUyMDEzMTY0''@;'; put 'put ''OCkiLCJLZWlhbiAoMTY0OFx1MjAxMzE2NTIpIiwiSlx1MDE0ZFx1MDE0ZCAoMTY1Mlx1MjAxMzE2NTUpIiwiTWVpcmVraSAoMTY1NVx1MjAxMzE2NTgpIiwiTWFuamkgKDE2NThcdTIwMTMxNjYxKSIsIkthbmJ1biAoMTY2MVx1MjAxMzE2NzMpIiwiRW5wXHUwMTRkICgxNjczXHUyMDEzMTY4''@;'; put 'put ''MSkiLCJUZW5uYSAoMTY4MVx1MjAxMzE2ODQpIiwiSlx1MDE0ZGt5XHUwMTRkICgxNjg0XHUyMDEzMTY4OCkiLCJHZW5yb2t1ICgxNjg4XHUyMDEzMTcwNCkiLCJIXHUwMTRkZWkgKDE3MDRcdTIwMTMxNzExKSIsIlNoXHUwMTRkdG9rdSAoMTcxMVx1MjAxMzE3MTYpIiwiS3lcdTAxNGRoXHUw''@;'; put 'put ''MTRkICgxNzE2XHUyMDEzMTczNikiLCJHZW5idW4gKDE3MzZcdTIwMTMxNzQxKSIsIkthbnBcdTAxNGQgKDE3NDFcdTIwMTMxNzQ0KSIsIkVua3lcdTAxNGQgKDE3NDRcdTIwMTMxNzQ4KSIsIkthblx1MjAxOWVuICgxNzQ4XHUyMDEzMTc1MSkiLCJIXHUwMTRkcmVraSAoMTc1MVx1MjAxMzE3''@;'; put 'put ''NjQpIiwiTWVpd2EgKDE3NjRcdTIwMTMxNzcyKSIsIkFuXHUyMDE5ZWkgKDE3NzJcdTIwMTMxNzgxKSIsIlRlbm1laSAoMTc4MVx1MjAxMzE3ODkpIiwiS2Fuc2VpICgxNzg5XHUyMDEzMTgwMSkiLCJLeVx1MDE0ZHdhICgxODAxXHUyMDEzMTgwNCkiLCJCdW5rYSAoMTgwNFx1MjAxMzE4MTgp''@;'; put 'put ''IiwiQnVuc2VpICgxODE4XHUyMDEzMTgzMCkiLCJUZW5wXHUwMTRkICgxODMwXHUyMDEzMTg0NCkiLCJLXHUwMTRka2EgKDE4NDRcdTIwMTMxODQ4KSIsIkthZWkgKDE4NDhcdTIwMTMxODU0KSIsIkFuc2VpICgxODU0XHUyMDEzMTg2MCkiLCJNYW5cdTIwMTllbiAoMTg2MFx1MjAxMzE4NjEp''@;'; put 'put ''IiwiQnVua3lcdTAxNmIgKDE4NjFcdTIwMTMxODY0KSIsIkdlbmppICgxODY0XHUyMDEzMTg2NSkiLCJLZWlcdTAxNGQgKDE4NjVcdTIwMTMxODY4KSIsIk1laWppIiwiVGFpc2hcdTAxNGQiLCJTaFx1MDE0ZHdhIiwiSGVpc2VpIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBN''@;'; put 'put ''In19LCJwZXJzaWFuIjp7Im1vbnRocyI6eyJuYXJyb3ciOlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sInNob3J0IjpbIkZhcnZhcmRpbiIsIk9yZGliZWhlc2h0IiwiS2hvcmRhZCIsIlRpciIsIk1vcmRhZCIsIlNoYWhyaXZhciIsIk1laHIi''@;'; put 'put ''LCJBYmFuIiwiQXphciIsIkRleSIsIkJhaG1hbiIsIkVzZmFuZCJdLCJsb25nIjpbIkZhcnZhcmRpbiIsIk9yZGliZWhlc2h0IiwiS2hvcmRhZCIsIlRpciIsIk1vcmRhZCIsIlNoYWhyaXZhciIsIk1laHIiLCJBYmFuIiwiQXphciIsIkRleSIsIkJhaG1hbiIsIkVzZmFuZCJdfSwiZGF5cyI6''@;'; put 'put ''eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1''@;'; put 'put ''cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiQVAiXSwic2hvcnQiOlsiQVAiXSwibG9uZyI6WyJBUCJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwicm9jIjp7Im1vbnRocyI6eyJuYXJyb3ciOlsiSiIsIkYiLCJNIiwiQSIsIk0iLCJKIiwiSiIsIkEiLCJTIiwiTyIs''@;'; put 'put ''Ik4iLCJEIl0sInNob3J0IjpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLCJsb25nIjpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIs''@;'; put 'put ''IlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1v''@;'; put 'put ''bmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJCZWZvcmUgUi5PLkMuIiwiTWluZ3VvIl0sInNob3J0IjpbIkJlZm9yZSBSLk8uQy4iLCJNaW5ndW8iXSwibG9uZyI6WyJCZWZvcmUgUi5PLkMuIiwi''@;'; put 'put ''TWluZ3VvIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19fX0sIm51bWJlciI6eyJudSI6WyJsYXRuIl0sInBhdHRlcm5zIjp7ImRlY2ltYWwiOnsicG9zaXRpdmVQYXR0ZXJuIjoie251bWJlcn0iLCJuZWdhdGl2ZVBhdHRlcm4iOiJ7bWludXNTaWdufXtudW1iZXJ9In0s''@;'; put 'put ''ImN1cnJlbmN5Ijp7InBvc2l0aXZlUGF0dGVybiI6IntjdXJyZW5jeX17bnVtYmVyfSIsIm5lZ2F0aXZlUGF0dGVybiI6InttaW51c1NpZ259e2N1cnJlbmN5fXtudW1iZXJ9In0sInBlcmNlbnQiOnsicG9zaXRpdmVQYXR0ZXJuIjoie251bWJlcn17cGVyY2VudFNpZ259IiwibmVnYXRpdmVQ''@;'; put 'put ''YXR0ZXJuIjoie21pbnVzU2lnbn17bnVtYmVyfXtwZXJjZW50U2lnbn0ifX0sInN5bWJvbHMiOnsibGF0biI6eyJkZWNpbWFsIjoiLiIsImdyb3VwIjoiLCIsIm5hbiI6Ik5hTiIsInBsdXNTaWduIjoiKyIsIm1pbnVzU2lnbiI6Ii0iLCJwZXJjZW50U2lnbiI6IiUiLCJpbmZpbml0eSI6Ilx1''@;'; put 'put ''MjIxZSJ9fSwiY3VycmVuY2llcyI6eyJBVUQiOiJBJCIsIkJSTCI6IlIkIiwiQ0FEIjoiQ0EkIiwiQ05ZIjoiQ05ceGE1IiwiRVVSIjoiXHUyMGFjIiwiR0JQIjoiXHhhMyIsIkhLRCI6IkhLJCIsIklMUyI6Ilx1MjBhYSIsIklOUiI6Ilx1MjBiOSIsIkpQWSI6Ilx4YTUiLCJLUlciOiJcdTIw''@;'; put 'put ''YTkiLCJNWE4iOiJNWCQiLCJOWkQiOiJOWiQiLCJUV0QiOiJOVCQiLCJVU0QiOiIkIiwiVk5EIjoiXHUyMGFiIiwiWEFGIjoiRkNGQSIsIlhDRCI6IkVDJCIsIlhPRiI6IkNGQSIsIlhQRiI6IkNGUEYifX19Jyl9fSxYZT0+e1hlKFhlLnM9NjA5MzIpfV0pOw=='';'; put 'run;'; put '%sasjsout(JS64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=runtime.61e771b472ecb588-js; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''KCgpPT57InVzZSBzdHJpY3QiO3ZhciBlLHM9e30sdj17fTtmdW5jdGlvbiBhKGUpe3ZhciBuPXZbZV07aWYodm9pZCAwIT09bilyZXR1cm4gbi5leHBvcnRzO3ZhciByPXZbZV09e2lkOmUsbG9hZGVkOiExLGV4cG9ydHM6e319O3JldHVybiBzW2VdLmNhbGwoci5leHBvcnRzLHIsci5leHBv''@;'; put 'put ''cnRzLGEpLHIubG9hZGVkPSEwLHIuZXhwb3J0c31hLm09cyxlPVtdLGEuTz0obixyLG8sbCk9PntpZighcil7dmFyIHU9MS8wO2Zvcih0PTA7dDxlLmxlbmd0aDt0Kyspe2Zvcih2YXJbcixvLGxdPWVbdF0sZD0hMCxmPTA7ZjxyLmxlbmd0aDtmKyspKCExJmx8fHU+PWwpJiZPYmplY3Qua2V5''@;'; put 'put ''cyhhLk8pLmV2ZXJ5KHA9PmEuT1twXShyW2ZdKSk/ci5zcGxpY2UoZi0tLDEpOihkPSExLGw8dSYmKHU9bCkpO2lmKGQpe2Uuc3BsaWNlKHQtLSwxKTt2YXIgYz1vKCk7dm9pZCAwIT09YyYmKG49Yyl9fXJldHVybiBufWw9bHx8MDtmb3IodmFyIHQ9ZS5sZW5ndGg7dD4wJiZlW3QtMV1bMl0+''@;'; put 'put ''bDt0LS0pZVt0XT1lW3QtMV07ZVt0XT1bcixvLGxdfSxhLm49ZT0+e3ZhciBuPWUmJmUuX19lc01vZHVsZT8oKT0+ZS5kZWZhdWx0OigpPT5lO3JldHVybiBhLmQobix7YTpufSksbn0sYS5kPShlLG4pPT57Zm9yKHZhciByIGluIG4pYS5vKG4scikmJiFhLm8oZSxyKSYmT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6bltyXX0pfSxhLm89KGUsbik9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pLGEucj1lPT57InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sYS5ubWQ9ZT0+KGUucGF0aHM9W10sZS5jaGlsZHJlbnx8KGUuY2hpbGRyZW49W10pLGUpLCgoKT0+e3ZhciBlPXs2NjY6''@;'; put 'put ''MH07YS5PLmo9bz0+MD09PWVbb107dmFyIG49KG8sbCk9Pnt2YXIgZixjLFt0LHUsZF09bCxpPTA7aWYodC5zb21lKF89PjAhPT1lW19dKSl7Zm9yKGYgaW4gdSlhLm8odSxmKSYmKGEubVtmXT11W2ZdKTtpZihkKXZhciBiPWQoYSl9Zm9yKG8mJm8obCk7aTx0Lmxlbmd0aDtpKyspYS5vKGUs''@;'; put 'put ''Yz10W2ldKSYmZVtjXSYmZVtjXVswXSgpLGVbY109MDtyZXR1cm4gYS5PKGIpfSxyPXNlbGYud2VicGFja0NodW5rZGF0YWNvbnRyb2xsZXI9c2VsZi53ZWJwYWNrQ2h1bmtkYXRhY29udHJvbGxlcnx8W107ci5mb3JFYWNoKG4uYmluZChudWxsLDApKSxyLnB1c2g9bi5iaW5kKG51bGwsci5w''@;'; put 'put ''dXNoLmJpbmQocikpfSkoKX0pKCk7'';'; put 'run;'; put '%sasjsout(JS64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=scripts.7cb1e94e2ffad0cd-js; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''KGZ1bmN0aW9uKFgsRjEsayl7InVzZSBzdHJpY3QiOyhmdW5jdGlvbihBKXt2YXIgZT17fTtmdW5jdGlvbiBsKHIpe2lmKGVbcl0pcmV0dXJuIGVbcl0uZXhwb3J0czt2YXIgYT1lW3JdPXtpOnIsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gQVtyXS5jYWxsKGEuZXhwb3J0cyxhLGEuZXhwb3J0''@;'; put 'put ''cyxsKSxhLmw9ITAsYS5leHBvcnRzfWwubT1BLGwuYz1lLGwuZD1mdW5jdGlvbihyLGEsYyl7bC5vKHIsYSl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLGEse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDpjfSl9LGwubj1mdW5jdGlvbihyKXt2YXIgYT1yJiZyLl9fZXNNb2R1''@;'; put 'put ''bGU/ZnVuY3Rpb24oKXtyZXR1cm4gci5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiByfTtyZXR1cm4gbC5kKGEsImEiLGEpLGF9LGwubz1mdW5jdGlvbihyLGEpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixhKX0sbC5wPSIiLGwobC5zPTEyOSl9KShb''@;'; put 'put ''ZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMiksYT1sKDI2KSxjPWwoMTEpLG89bCgxMiksaD1sKDE4KSxmPSJwcm90b3R5cGUiLGc9ZnVuY3Rpb24odSxwLHYpe3ZhciBILEMsVixTLF89dSZnLkYsYj11JmcuRyxNPXUmZy5QLHg9dSZnLkIsRT1iP3I6dSZnLlM/cltwXXx8KHJbcF09e30pOihy''@;'; put 'put ''W3BdfHx7fSlbZl0sdz1iP2E6YVtwXXx8KGFbcF09e30pLE49d1tmXXx8KHdbZl09e30pO2ZvcihIIGluIGImJih2PXApLHYpVj0oKEM9IV8mJkUmJkVbSF0hPT1rKT9FOnYpW0hdLFM9eCYmQz9oKFYscik6TSYmImZ1bmN0aW9uIj09dHlwZW9mIFY/aChGdW5jdGlvbi5jYWxsLFYpOlYsRSYm''@;'; put 'put ''byhFLEgsVix1JmcuVSksd1tIXSE9ViYmYyh3LEgsUyksTSYmTltIXSE9ViYmKE5bSF09Vil9O3IuY29yZT1hLGcuRj0xLGcuRz0yLGcuUz00LGcuUD04LGcuQj0xNixnLlc9MzIsZy5VPTY0LGcuUj0xMjgsQS5leHBvcnRzPWd9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDQpO0EuZXhwb3J0''@;'; put 'put ''cz1mdW5jdGlvbihhKXtpZighcihhKSl0aHJvdyBUeXBlRXJyb3IoYSsiIGlzIG5vdCBhbiBvYmplY3QhIik7cmV0dXJuIGF9fSxmdW5jdGlvbihBLGUpe3ZhciBsPUEuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93Lk1hdGg9PU1hdGg/d2luZG93OiJ1bmRlZmlu''@;'; put 'put ''ZWQiIT10eXBlb2Ygc2VsZiYmc2VsZi5NYXRoPT1NYXRoP3NlbGY6RnVuY3Rpb24oInJldHVybiB0aGlzIikoKTsibnVtYmVyIj09dHlwZW9mIEYxJiYoRjE9bCl9LGZ1bmN0aW9uKEEsZSl7QS5leHBvcnRzPWZ1bmN0aW9uKGwpe3RyeXtyZXR1cm4hIWwoKX1jYXRjaChyKXtyZXR1cm4hMH19''@;'; put 'put ''fSxmdW5jdGlvbihBLGUpe0EuZXhwb3J0cz1mdW5jdGlvbihsKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGw/bnVsbCE9PWw6ImZ1bmN0aW9uIj09dHlwZW9mIGx9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg0NykoIndrcyIpLGE9bCgzMyksYz1sKDIpLlN5bWJvbCxvPSJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBjOyhBLmV4cG9ydHM9ZnVuY3Rpb24oaCl7cmV0dXJuIHJbaF18fChyW2hdPW8mJmNbaF18fChvP2M6YSkoIlN5bWJvbC4iK2gpKX0pLnN0b3JlPXJ9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDIwKSxhPU1hdGgubWluO0EuZXhwb3J0cz1mdW5jdGlvbihjKXtyZXR1cm4gMDxj''@;'; put 'put ''P2EocihjKSw5MDA3MTk5MjU0NzQwOTkxKTowfX0sZnVuY3Rpb24oQSxlLGwpe0EuZXhwb3J0cz0hbCgzKShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIg''@;'; put 'put ''cj1sKDEpLGE9bCg5MyksYz1sKDIyKSxvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtlLmY9bCg3KT9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oZixnLHUpe2lmKHIoZiksZz1jKGcsITApLHIodSksYSl0cnl7cmV0dXJuIG8oZixnLHUpfWNhdGNoKHApe31pZigiZ2V0ImluIHV8fCJz''@;'; put 'put ''ZXQiaW4gdSl0aHJvdyBUeXBlRXJyb3IoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkISIpO3JldHVybiJ2YWx1ZSJpbiB1JiYoZltnXT11LnZhbHVlKSxmfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMjMpO0EuZXhwb3J0cz1mdW5jdGlvbihhKXtyZXR1cm4gT2JqZWN0KHIoYSkpfX0sZnVu''@;'; put 'put ''Y3Rpb24oQSxlKXtBLmV4cG9ydHM9ZnVuY3Rpb24obCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGwpdGhyb3cgVHlwZUVycm9yKGwrIiBpcyBub3QgYSBmdW5jdGlvbiEiKTtyZXR1cm4gbH19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDgpLGE9bCgzMik7QS5leHBvcnRzPWwoNyk/ZnVuY3Rp''@;'; put 'put ''b24oYyxvLGgpe3JldHVybiByLmYoYyxvLGEoMSxoKSl9OmZ1bmN0aW9uKGMsbyxoKXtyZXR1cm4gY1tvXT1oLGN9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyKSxhPWwoMTEpLGM9bCgxNCksbz1sKDMzKSgic3JjIiksaD1sKDEzMSksZj0idG9TdHJpbmciLGc9KCIiK2gpLnNwbGl0KGYp''@;'; put 'put ''O2woMjYpLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24odSl7cmV0dXJuIGguY2FsbCh1KX0sKEEuZXhwb3J0cz1mdW5jdGlvbih1LHAsdixIKXt2YXIgQz0iZnVuY3Rpb24iPT10eXBlb2YgdjtDJiYoYyh2LCJuYW1lIil8fGEodiwibmFtZSIscCkpLHVbcF0hPT12JiYoQyYmKGModixvKXx8YSh2''@;'; put 'put ''LG8sdVtwXT8iIit1W3BdOmcuam9pbihTdHJpbmcocCkpKSksdT09PXI/dVtwXT12Okg/dVtwXT91W3BdPXY6YSh1LHAsdik6KGRlbGV0ZSB1W3BdLGEodSxwLHYpKSl9KShGdW5jdGlvbi5wcm90b3R5cGUsZixmdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzJiZ0aGlz''@;'; put 'put ''W29dfHxoLmNhbGwodGhpcyl9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDMpLGM9bCgyMyksbz0vIi9nLGg9ZnVuY3Rpb24oZixnLHUscCl7dmFyIHY9U3RyaW5nKGMoZikpLEg9IjwiK2c7cmV0dXJuIiIhPT11JiYoSCs9IiAiK3UrJz0iJytTdHJpbmcocCkucmVwbGFjZShv''@;'; put 'put ''LCImcXVvdDsiKSsnIicpLEgrIj4iK3YrIjwvIitnKyI+In07QS5leHBvcnRzPWZ1bmN0aW9uKGYsZyl7dmFyIHU9e307dVtmXT1nKGgpLHIoci5QK3IuRiphKGZ1bmN0aW9uKCl7dmFyIHA9IiJbZl0oJyInKTtyZXR1cm4gcCE9PXAudG9Mb3dlckNhc2UoKXx8MzxwLnNwbGl0KCciJykubGVu''@;'; put 'put ''Z3RofSksIlN0cmluZyIsdSl9fSxmdW5jdGlvbihBLGUpe3ZhciBsPXt9Lmhhc093blByb3BlcnR5O0EuZXhwb3J0cz1mdW5jdGlvbihyLGEpe3JldHVybiBsLmNhbGwocixhKX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDQ4KSxhPWwoMjMpO0EuZXhwb3J0cz1mdW5jdGlvbihjKXtyZXR1''@;'; put 'put ''cm4gcihhKGMpKX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDQ5KSxhPWwoMzIpLGM9bCgxNSksbz1sKDIyKSxoPWwoMTQpLGY9bCg5MyksZz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2UuZj1sKDcpP2c6ZnVuY3Rpb24ocCx2KXtpZihwPWMocCksdj1vKHYsITApLGYpdHJ5''@;'; put 'put ''e3JldHVybiBnKHAsdil9Y2F0Y2goSCl7fWlmKGgocCx2KSlyZXR1cm4gYSghci5mLmNhbGwocCx2KSxwW3ZdKX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDE0KSxhPWwoOSksYz1sKDY4KSgiSUVfUFJPVE8iKSxvPU9iamVjdC5wcm90b3R5cGU7QS5leHBvcnRzPU9iamVjdC5nZXRQcm90''@;'; put 'put ''b3R5cGVPZnx8ZnVuY3Rpb24oaCl7cmV0dXJuIGg9YShoKSxyKGgsYyk/aFtjXToiZnVuY3Rpb24iPT10eXBlb2YgaC5jb25zdHJ1Y3RvciYmaCBpbnN0YW5jZW9mIGguY29uc3RydWN0b3I/aC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6aCBpbnN0YW5jZW9mIE9iamVjdD9vOm51bGx9fSxmdW5j''@;'; put 'put ''dGlvbihBLGUsbCl7dmFyIHI9bCgxMCk7QS5leHBvcnRzPWZ1bmN0aW9uKGEsYyxvKXtpZihyKGEpLGM9PT1rKXJldHVybiBhO3N3aXRjaChvKXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGgpe3JldHVybiBhLmNhbGwoYyxoKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihoLGYpe3JldHVybiBh''@;'; put 'put ''LmNhbGwoYyxoLGYpfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKGgsZixnKXtyZXR1cm4gYS5jYWxsKGMsaCxmLGcpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShjLGFyZ3VtZW50cyl9fX0sZnVuY3Rpb24oQSxlKXt2YXIgbD17fS50b1N0cmluZztBLmV4cG9ydHM9ZnVuY3Rp''@;'; put 'put ''b24ocil7cmV0dXJuIGwuY2FsbChyKS5zbGljZSg4LC0xKX19LGZ1bmN0aW9uKEEsZSl7dmFyIGw9TWF0aC5jZWlsLHI9TWF0aC5mbG9vcjtBLmV4cG9ydHM9ZnVuY3Rpb24oYSl7cmV0dXJuIGlzTmFOKGE9K2EpPzA6KDA8YT9yOmwpKGEpfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMyk7''@;'; put 'put ''QS5leHBvcnRzPWZ1bmN0aW9uKGEsYyl7cmV0dXJuISFhJiZyKGZ1bmN0aW9uKCl7Yz9hLmNhbGwobnVsbCxmdW5jdGlvbigpe30sMSk6YS5jYWxsKG51bGwpfSl9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg0KTtBLmV4cG9ydHM9ZnVuY3Rpb24oYSxjKXtpZighcihhKSlyZXR1cm4gYTt2''@;'; put 'put ''YXIgbyxoO2lmKGMmJiJmdW5jdGlvbiI9PXR5cGVvZihvPWEudG9TdHJpbmcpJiYhcihoPW8uY2FsbChhKSl8fCJmdW5jdGlvbiI9PXR5cGVvZihvPWEudmFsdWVPZikmJiFyKGg9by5jYWxsKGEpKXx8IWMmJiJmdW5jdGlvbiI9PXR5cGVvZihvPWEudG9TdHJpbmcpJiYhcihoPW8uY2FsbChh''@;'; put 'put ''KSkpcmV0dXJuIGg7dGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX19LGZ1bmN0aW9uKEEsZSl7QS5leHBvcnRzPWZ1bmN0aW9uKGwpe2lmKGw9PWspdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgIitsKTtyZXR1''@;'; put 'put ''cm4gbH19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgyNiksYz1sKDMpO0EuZXhwb3J0cz1mdW5jdGlvbihvLGgpe3ZhciBmPShhLk9iamVjdHx8e30pW29dfHxPYmplY3Rbb10sZz17fTtnW29dPWgoZikscihyLlMrci5GKmMoZnVuY3Rpb24oKXtmKDEpfSksIk9iamVjdCIsZyl9''@;'; put 'put ''fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxOCksYT1sKDQ4KSxjPWwoOSksbz1sKDYpLGg9bCg4NCk7QS5leHBvcnRzPWZ1bmN0aW9uKGYsZyl7dmFyIHU9MT09ZixwPTI9PWYsdj0zPT1mLEg9ND09ZixDPTY9PWYsVj01PT1mfHxDLFM9Z3x8aDtyZXR1cm4gZnVuY3Rpb24oXyxiLE0pe2Zv''@;'; put 'put ''cih2YXIgeCxFLHc9YyhfKSxOPWEodyksST1yKGIsTSwzKSxXPW8oTi5sZW5ndGgpLE89MCxCPXU/UyhfLFcpOnA/UyhfLDApOms7TzxXO08rKylpZigoVnx8TyBpbiBOKSYmKEU9SSh4PU5bT10sTyx3KSxmKSlpZih1KUJbT109RTtlbHNlIGlmKEUpc3dpdGNoKGYpe2Nhc2UgMzpyZXR1cm4h''@;'; put 'put ''MDtjYXNlIDU6cmV0dXJuIHg7Y2FzZSA2OnJldHVybiBPO2Nhc2UgMjpCLnB1c2goeCl9ZWxzZSBpZihIKXJldHVybiExO3JldHVybiBDPy0xOnZ8fEg/SDpCfX19LGZ1bmN0aW9uKEEsZSl7dmFyIGw9QS5leHBvcnRzPXt2ZXJzaW9uOiIyLjYuMTEifTsibnVtYmVyIj09dHlwZW9mIFgmJihY''@;'; put 'put ''PWwpfSxmdW5jdGlvbihBLGUsbCl7aWYobCg3KSl7dmFyIHI9bCgyOSksYT1sKDIpLGM9bCgzKSxvPWwoMCksaD1sKDYyKSxmPWwoOTIpLGc9bCgxOCksdT1sKDM5KSxwPWwoMzIpLHY9bCgxMSksSD1sKDQxKSxDPWwoMjApLFY9bCg2KSxTPWwoMTIyKSxfPWwoMzUpLGI9bCgyMiksTT1sKDE0''@;'; put 'put ''KSx4PWwoNDQpLEU9bCg0KSx3PWwoOSksTj1sKDgxKSxJPWwoMzYpLFc9bCgxNyksTz1sKDM3KS5mLEI9bCg4MyksUj1sKDMzKSxsMT1sKDUpLGExPWwoMjUpLGgxPWwoNTIpLHUxPWwoNTEpLHAxPWwoODYpLHYxPWwoNDYpLEUxPWwoNTcpLGo9bCgzOCksYzE9bCg4NSksVjE9bCgxMTApLF8x''@;'; put 'put ''PWwoOCksUT1sKDE2KSxzMT1fMS5mLG0xPVEuZixiMT1hLlJhbmdlRXJyb3IsQjE9YS5UeXBlRXJyb3IsJD1hLlVpbnQ4QXJyYXksej0iQXJyYXlCdWZmZXIiLHk9IlNoYXJlZCIreixEPSJCWVRFU19QRVJfRUxFTUVOVCIsWj0icHJvdG90eXBlIixUPUFycmF5W1pdLFA9Zi5BcnJheUJ1ZmZl''@;'; put 'put ''cixlMT1mLkRhdGFWaWV3LHIxPWExKDApLFoxPWExKDIpLFk9YTEoMykscT1hMSg0KSxKPWExKDUpLEExPWExKDYpLE4xPWgxKCEwKSxTMT1oMSghMSksbjE9cDEudmFsdWVzLGkxPXAxLmtleXMsZjE9cDEuZW50cmllcyx4MT1ULmxhc3RJbmRleE9mLEkxPVQucmVkdWNlLEoxPVQucmVkdWNl''@;'; put 'put ''UmlnaHQsdDA9VC5qb2luLGYwPVQuc29ydCxNMD1ULnNsaWNlLF8wPVQudG9TdHJpbmcsaTI9VC50b0xvY2FsZVN0cmluZyx6MD1sMSgiaXRlcmF0b3IiKSxVMD1sMSgidG9TdHJpbmdUYWciKSxLMD1SKCJ0eXBlZF9jb25zdHJ1Y3RvciIpLGswPVIoImRlZl9jb25zdHJ1Y3RvciIpLHUyPWgu''@;'; put 'put ''Q09OU1RSLFgwPWguVFlQRUQsa3Q9aC5WSUVXLGEyPSJXcm9uZyBsZW5ndGghIixEMj1hMSgxLGZ1bmN0aW9uKHcxLGQxKXtyZXR1cm4gUTAodTEodzEsdzFbazBdKSxkMSl9KSxwMj1jKGZ1bmN0aW9uKCl7cmV0dXJuIDE9PT1uZXcgJChuZXcgVWludDE2QXJyYXkoWzFdKS5idWZmZXIpWzBd''@;'; put 'put ''fSksT3Q9ISEkJiYhISRbWl0uc2V0JiZjKGZ1bmN0aW9uKCl7bmV3ICQoMSkuc2V0KHt9KX0pLGYyPWZ1bmN0aW9uKHcxLGQxKXt2YXIgRDE9Qyh3MSk7aWYoRDE8MHx8RDElZDEpdGhyb3cgYjEoIldyb25nIG9mZnNldCEiKTtyZXR1cm4gRDF9LFkxPWZ1bmN0aW9uKHcxKXtpZihFKHcxKSYm''@;'; put 'put ''WDAgaW4gdzEpcmV0dXJuIHcxO3Rocm93IEIxKHcxKyIgaXMgbm90IGEgdHlwZWQgYXJyYXkhIil9LFEwPWZ1bmN0aW9uKHcxLGQxKXtpZighRSh3MSl8fCEoSzAgaW4gdzEpKXRocm93IEIxKCJJdCBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvciEiKTtyZXR1cm4gbmV3IHcxKGQx''@;'; put 'put ''KX0sZzI9ZnVuY3Rpb24odzEsZDEpe3JldHVybiBFMih1MSh3MSx3MVtrMF0pLGQxKX0sRTI9ZnVuY3Rpb24odzEsZDEpe2Zvcih2YXIgRDE9MCxQMT1kMS5sZW5ndGgsUjE9UTAodzEsUDEpO0QxPFAxOylSMVtEMV09ZDFbRDErK107cmV0dXJuIFIxfSxBMj1mdW5jdGlvbih3MSxkMSxEMSl7''@;'; put 'put ''czEodzEsZDEse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kW0QxXX19KX0sVDI9ZnVuY3Rpb24oZDEpe3ZhciBEMSxQMSxSMSxkMCxxMSxnMSx5MT13KGQxKSxXMD1hcmd1bWVudHMubGVuZ3RoLE8wPTE8VzA/YXJndW1lbnRzWzFdOmssSzE9TzAhPT1rLGUwPUIoeTEpO2lmKGUwIT1r''@;'; put 'put ''JiYhTihlMCkpe2ZvcihnMT1lMC5jYWxsKHkxKSxSMT1bXSxEMT0wOyEocTE9ZzEubmV4dCgpKS5kb25lO0QxKyspUjEucHVzaChxMS52YWx1ZSk7eTE9UjF9Zm9yKEsxJiYyPFcwJiYoTzA9ZyhPMCxhcmd1bWVudHNbMl0sMikpLEQxPTAsUDE9Vih5MS5sZW5ndGgpLGQwPVEwKHRoaXMsUDEp''@;'; put 'put ''O0QxPFAxO0QxKyspZDBbRDFdPUsxP08wKHkxW0QxXSxEMSk6eTFbRDFdO3JldHVybiBkMH0sWDI9ZnVuY3Rpb24oKXtmb3IodmFyIGQxPTAsRDE9YXJndW1lbnRzLmxlbmd0aCxQMT1RMCh0aGlzLEQxKTtkMTxEMTspUDFbZDFdPWFyZ3VtZW50c1tkMSsrXTtyZXR1cm4gUDF9LFEyPSEhJCYm''@;'; put 'put ''YyhmdW5jdGlvbigpe2kyLmNhbGwobmV3ICQoMSkpfSksTjI9ZnVuY3Rpb24oKXtyZXR1cm4gaTIuYXBwbHkoUTI/TTAuY2FsbChZMSh0aGlzKSk6WTEodGhpcyksYXJndW1lbnRzKX0sSjI9e2NvcHlXaXRoaW46ZnVuY3Rpb24oZDEsRDEpe3JldHVybiBWMS5jYWxsKFkxKHRoaXMpLGQxLEQx''@;'; put 'put ''LDI8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMl06ayl9LGV2ZXJ5OmZ1bmN0aW9uKGQxKXtyZXR1cm4gcShZMSh0aGlzKSxkMSwxPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzFdOmspfSxmaWxsOmZ1bmN0aW9uKGQxKXtyZXR1cm4gYzEuYXBwbHkoWTEodGhpcyksYXJndW1lbnRz''@;'; put 'put ''KX0sZmlsdGVyOmZ1bmN0aW9uKGQxKXtyZXR1cm4gZzIodGhpcyxaMShZMSh0aGlzKSxkMSwxPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzFdOmspKX0sZmluZDpmdW5jdGlvbihkMSl7cmV0dXJuIEooWTEodGhpcyksZDEsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTprKX0s''@;'; put 'put ''ZmluZEluZGV4OmZ1bmN0aW9uKGQxKXtyZXR1cm4gQTEoWTEodGhpcyksZDEsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTprKX0sZm9yRWFjaDpmdW5jdGlvbihkMSl7cjEoWTEodGhpcyksZDEsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTprKX0saW5kZXhPZjpmdW5j''@;'; put 'put ''dGlvbihkMSl7cmV0dXJuIFMxKFkxKHRoaXMpLGQxLDE8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06ayl9LGluY2x1ZGVzOmZ1bmN0aW9uKGQxKXtyZXR1cm4gTjEoWTEodGhpcyksZDEsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTprKX0sam9pbjpmdW5jdGlvbihkMSl7''@;'; put 'put ''cmV0dXJuIHQwLmFwcGx5KFkxKHRoaXMpLGFyZ3VtZW50cyl9LGxhc3RJbmRleE9mOmZ1bmN0aW9uKGQxKXtyZXR1cm4geDEuYXBwbHkoWTEodGhpcyksYXJndW1lbnRzKX0sbWFwOmZ1bmN0aW9uKGQxKXtyZXR1cm4gRDIoWTEodGhpcyksZDEsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50''@;'; put 'put ''c1sxXTprKX0scmVkdWNlOmZ1bmN0aW9uKGQxKXtyZXR1cm4gSTEuYXBwbHkoWTEodGhpcyksYXJndW1lbnRzKX0scmVkdWNlUmlnaHQ6ZnVuY3Rpb24oZDEpe3JldHVybiBKMS5hcHBseShZMSh0aGlzKSxhcmd1bWVudHMpfSxyZXZlcnNlOmZ1bmN0aW9uKCl7Zm9yKHZhciBkMSxEMT10aGlz''@;'; put 'put ''LFAxPVkxKEQxKS5sZW5ndGgsUjE9TWF0aC5mbG9vcihQMS8yKSxkMD0wO2QwPFIxOylkMT1EMVtkMF0sRDFbZDArK109RDFbLS1QMV0sRDFbUDFdPWQxO3JldHVybiBEMX0sc29tZTpmdW5jdGlvbihkMSl7cmV0dXJuIFkoWTEodGhpcyksZDEsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50''@;'; put 'put ''c1sxXTprKX0sc29ydDpmdW5jdGlvbihkMSl7cmV0dXJuIGYwLmNhbGwoWTEodGhpcyksZDEpfSxzdWJhcnJheTpmdW5jdGlvbihkMSxEMSl7dmFyIFAxPVkxKHRoaXMpLFIxPVAxLmxlbmd0aCxkMD1fKGQxLFIxKTtyZXR1cm4gbmV3KHUxKFAxLFAxW2swXSkpKFAxLmJ1ZmZlcixQMS5ieXRl''@;'; put 'put ''T2Zmc2V0K2QwKlAxLkJZVEVTX1BFUl9FTEVNRU5ULFYoKEQxPT09az9SMTpfKEQxLFIxKSktZDApKX19LEYyPWZ1bmN0aW9uKGQxLEQxKXtyZXR1cm4gZzIodGhpcyxNMC5jYWxsKFkxKHRoaXMpLGQxLEQxKSl9LEkyPWZ1bmN0aW9uKGQxKXtZMSh0aGlzKTt2YXIgRDE9ZjIoYXJndW1lbnRz''@;'; put 'put ''WzFdLDEpLFAxPXRoaXMubGVuZ3RoLFIxPXcoZDEpLGQwPVYoUjEubGVuZ3RoKSxxMT0wO2lmKFAxPGQwK0QxKXRocm93IGIxKGEyKTtmb3IoO3ExPGQwOyl0aGlzW0QxK3ExXT1SMVtxMSsrXX0sWjA9e2VudHJpZXM6ZnVuY3Rpb24oKXtyZXR1cm4gZjEuY2FsbChZMSh0aGlzKSl9LGtleXM6''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gaTEuY2FsbChZMSh0aGlzKSl9LHZhbHVlczpmdW5jdGlvbigpe3JldHVybiBuMS5jYWxsKFkxKHRoaXMpKX19LGsyPWZ1bmN0aW9uKHcxLGQxKXtyZXR1cm4gRSh3MSkmJncxW1gwXSYmInN5bWJvbCIhPXR5cGVvZiBkMSYmZDEgaW4gdzEmJlN0cmluZygrZDEp''@;'; put 'put ''PT1TdHJpbmcoZDEpfSx0dD1mdW5jdGlvbihkMSxEMSl7cmV0dXJuIGsyKGQxLEQxPWIoRDEsITApKT9wKDIsZDFbRDFdKTptMShkMSxEMSl9LEEwPWZ1bmN0aW9uKGQxLEQxLFAxKXtyZXR1cm4hKGsyKGQxLEQxPWIoRDEsITApKSYmRShQMSkmJk0oUDEsInZhbHVlIikpfHxNKFAxLCJnZXQi''@;'; put 'put ''KXx8TShQMSwic2V0Iil8fFAxLmNvbmZpZ3VyYWJsZXx8TShQMSwid3JpdGFibGUiKSYmIVAxLndyaXRhYmxlfHxNKFAxLCJlbnVtZXJhYmxlIikmJiFQMS5lbnVtZXJhYmxlP3MxKGQxLEQxLFAxKTooZDFbRDFdPVAxLnZhbHVlLGQxKX07dTJ8fChRLmY9dHQsXzEuZj1BMCksbyhvLlMrby5G''@;'; put 'put ''KiF1MiwiT2JqZWN0Iix7Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOnR0LGRlZmluZVByb3BlcnR5OkEwfSksYyhmdW5jdGlvbigpe18wLmNhbGwoe30pfSkmJihfMD1pMj1mdW5jdGlvbigpe3JldHVybiB0MC5jYWxsKHRoaXMpfSk7dmFyIHcwPUgoe30sSjIpO0godzAsWjApLHYodzAsejAs''@;'; put 'put ''WjAudmFsdWVzKSxIKHcwLHtzbGljZTpGMixzZXQ6STIsY29uc3RydWN0b3I6ZnVuY3Rpb24oKXt9LHRvU3RyaW5nOl8wLHRvTG9jYWxlU3RyaW5nOk4yfSksQTIodzAsImJ1ZmZlciIsImIiKSxBMih3MCwiYnl0ZU9mZnNldCIsIm8iKSxBMih3MCwiYnl0ZUxlbmd0aCIsImwiKSxBMih3MCwi''@;'; put 'put ''bGVuZ3RoIiwiZSIpLHMxKHcwLFUwLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tYMF19fSksQS5leHBvcnRzPWZ1bmN0aW9uKHcxLGQxLEQxLFAxKXt2YXIgUjE9dzErKChQMT0hIVAxKT8iQ2xhbXBlZCI6IiIpKyJBcnJheSIsZDA9ImdldCIrdzEscTE9InNldCIrdzEsZzE9YVtSMV0s''@;'; put 'put ''eTE9ZzF8fHt9LFcwPWcxJiZXKGcxKSxPMD17fSxLMT1nMSYmZzFbWl0sZTA9ZnVuY3Rpb24oZzAsWDEpe3MxKGcwLFgxLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oSDA9dGhpcy5fZCkudltkMF0oWDEqZDErSDAubyxwMik7dmFyIEgwfSxzZXQ6ZnVuY3Rpb24oSDApe3JldHVybiBEMD1YMSx1''@;'; put 'put ''MD1IMCx4MD10aGlzLl9kLFAxJiYodTA9KHUwPU1hdGgucm91bmQodTApKTwwPzA6MjU1PHUwPzI1NToyNTUmdTApLHZvaWQgeDAudltxMV0oRDAqZDEreDAubyx1MCxwMik7dmFyIEQwLHUwLHgwfSxlbnVtZXJhYmxlOiEwfSl9O2cxJiZoLkFCVj9jKGZ1bmN0aW9uKCl7ZzEoMSl9KSYmYyhm''@;'; put 'put ''dW5jdGlvbigpe25ldyBnMSgtMSl9KSYmRTEoZnVuY3Rpb24oZzApe25ldyBnMSxuZXcgZzEobnVsbCksbmV3IGcxKDEuNSksbmV3IGcxKGcwKX0sITApfHwoZzE9RDEoZnVuY3Rpb24oZzAsWDEsSDAsRDApe3ZhciB1MDtyZXR1cm4gdShnMCxnMSxSMSksRShYMSk/WDEgaW5zdGFuY2VvZiBQ''@;'; put 'put ''fHwodTA9eChYMSkpPT16fHx1MD09eT9EMCE9PWs/bmV3IHkxKFgxLGYyKEgwLGQxKSxEMCk6SDAhPT1rP25ldyB5MShYMSxmMihIMCxkMSkpOm5ldyB5MShYMSk6WDAgaW4gWDE/RTIoZzEsWDEpOlQyLmNhbGwoZzEsWDEpOm5ldyB5MShTKFgxKSl9KSxyMShXMCE9PUZ1bmN0aW9uLnByb3Rv''@;'; put 'put ''dHlwZT9PKHkxKS5jb25jYXQoTyhXMCkpOk8oeTEpLGZ1bmN0aW9uKGcwKXtnMCBpbiBnMXx8dihnMSxnMCx5MVtnMF0pfSksZzFbWl09SzEscnx8KEsxLmNvbnN0cnVjdG9yPWcxKSk6KGcxPUQxKGZ1bmN0aW9uKGcwLFgxLEgwLEQwKXt1KGcwLGcxLFIxLCJfZCIpO3ZhciB1MCx4MCxCMCxQ''@;'; put 'put ''Mix2Mj0wLHIyPTA7aWYoRShYMSkpe2lmKCEoWDEgaW5zdGFuY2VvZiBQfHwoUDI9eChYMSkpPT16fHxQMj09eSkpcmV0dXJuIFgwIGluIFgxP0UyKGcxLFgxKTpUMi5jYWxsKGcxLFgxKTt1MD1YMSxyMj1mMihIMCxkMSk7dmFyIHMwPVgxLmJ5dGVMZW5ndGg7aWYoRDA9PT1rKXtpZihzMCVk''@;'; put 'put ''MXx8KHgwPXMwLXIyKTwwKXRocm93IGIxKGEyKX1lbHNlIGlmKHMwPCh4MD1WKEQwKSpkMSkrcjIpdGhyb3cgYjEoYTIpO0IwPXgwL2QxfWVsc2UgQjA9UyhYMSksdTA9bmV3IFAoeDA9QjAqZDEpO2Zvcih2KGcwLCJfZCIse2I6dTAsbzpyMixsOngwLGU6QjAsdjpuZXcgZTEodTApfSk7djI8''@;'; put 'put ''QjA7KWUwKGcwLHYyKyspfSksSzE9ZzFbWl09SSh3MCksdihLMSwiY29uc3RydWN0b3IiLGcxKSk7dmFyIEowPUsxW3owXSxQMD0hIUowJiYoInZhbHVlcyI9PUowLm5hbWV8fEowLm5hbWU9PWspLE8yPVowLnZhbHVlczt2KGcxLEswLCEwKSx2KEsxLFgwLFIxKSx2KEsxLGt0LCEwKSx2KEsx''@;'; put 'put ''LGswLGcxKSwoUDE/bmV3IGcxKDEpW1UwXT09UjE6VTAgaW4gSzEpfHxzMShLMSxVMCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFIxfX0pLG8oby5HK28uVytvLkYqKChPMFtSMV09ZzEpIT15MSksTzApLG8oby5TLFIxLHtCWVRFU19QRVJfRUxFTUVOVDpkMX0pLG8oby5TK28uRipjKGZ1bmN0''@;'; put 'put ''aW9uKCl7eTEub2YuY2FsbChnMSwxKX0pLFIxLHtmcm9tOlQyLG9mOlgyfSksRCBpbiBLMXx8dihLMSxELGQxKSxvKG8uUCxSMSxKMiksaihSMSksbyhvLlArby5GKk90LFIxLHtzZXQ6STJ9KSxvKG8uUCtvLkYqIVAwLFIxLFowKSxyfHxLMS50b1N0cmluZz09XzB8fChLMS50b1N0cmluZz1f''@;'; put 'put ''MCksbyhvLlArby5GKmMoZnVuY3Rpb24oKXtuZXcgZzEoMSkuc2xpY2UoKX0pLFIxLHtzbGljZTpGMn0pLG8oby5QK28uRiooYyhmdW5jdGlvbigpe3JldHVyblsxLDJdLnRvTG9jYWxlU3RyaW5nKCkhPW5ldyBnMShbMSwyXSkudG9Mb2NhbGVTdHJpbmcoKX0pfHwhYyhmdW5jdGlvbigpe0sx''@;'; put 'put ''LnRvTG9jYWxlU3RyaW5nLmNhbGwoWzEsMl0pfSkpLFIxLHt0b0xvY2FsZVN0cmluZzpOMn0pLHYxW1IxXT1QMD9KMDpPMixyfHxQMHx8dihLMSx6MCxPMil9fWVsc2UgQS5leHBvcnRzPWZ1bmN0aW9uKCl7fX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMTE2KSxhPWwoMCksYz1sKDQ3KSgi''@;'; put 'put ''bWV0YWRhdGEiKSxvPWMuc3RvcmV8fChjLnN0b3JlPW5ldyhsKDExOSkpKSxoPWZ1bmN0aW9uKGYsZyx1KXt2YXIgcD1vLmdldChmKTtpZighcCl7aWYoIXUpcmV0dXJuIGs7by5zZXQoZixwPW5ldyByKX12YXIgdj1wLmdldChnKTtpZighdil7aWYoIXUpcmV0dXJuIGs7cC5zZXQoZyx2PW5l''@;'; put 'put ''dyByKX1yZXR1cm4gdn07QS5leHBvcnRzPXtzdG9yZTpvLG1hcDpoLGhhczpmdW5jdGlvbihmLGcsdSl7dmFyIHA9aChnLHUsITEpO3JldHVybiBwIT09ayYmcC5oYXMoZil9LGdldDpmdW5jdGlvbihmLGcsdSl7dmFyIHA9aChnLHUsITEpO3JldHVybiBwPT09az9rOnAuZ2V0KGYpfSxzZXQ6''@;'; put 'put ''ZnVuY3Rpb24oZixnLHUscCl7aCh1LHAsITApLnNldChmLGcpfSxrZXlzOmZ1bmN0aW9uKGYsZyl7dmFyIHU9aChmLGcsITEpLHA9W107cmV0dXJuIHUmJnUuZm9yRWFjaChmdW5jdGlvbih2LEgpe3AucHVzaChIKX0pLHB9LGtleTpmdW5jdGlvbihmKXtyZXR1cm4gZj09PWt8fCJzeW1ib2wi''@;'; put 'put ''PT10eXBlb2YgZj9mOlN0cmluZyhmKX0sZXhwOmZ1bmN0aW9uKGYpe2EoYS5TLCJSZWZsZWN0IixmKX19fSxmdW5jdGlvbihBLGUpe0EuZXhwb3J0cz0hMX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMzMpKCJtZXRhIiksYT1sKDQpLGM9bCgxNCksbz1sKDgpLmYsaD0wLGY9T2JqZWN0Lmlz''@;'; put 'put ''RXh0ZW5zaWJsZXx8ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZz0hbCgzKShmdW5jdGlvbigpe3JldHVybiBmKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpfSksdT1mdW5jdGlvbih2KXtvKHYscix7dmFsdWU6e2k6Ik8iKyArK2gsdzp7fX19KX0scD1BLmV4cG9ydHM9e0tFWTpyLE5FRUQ6''@;'; put 'put ''ITEsZmFzdEtleTpmdW5jdGlvbih2LEgpe2lmKCFhKHYpKXJldHVybiJzeW1ib2wiPT10eXBlb2Ygdj92Oigic3RyaW5nIj09dHlwZW9mIHY/IlMiOiJQIikrdjtpZighYyh2LHIpKXtpZighZih2KSlyZXR1cm4iRiI7aWYoIUgpcmV0dXJuIkUiO3Uodil9cmV0dXJuIHZbcl0uaX0sZ2V0V2Vh''@;'; put 'put ''azpmdW5jdGlvbih2LEgpe2lmKCFjKHYscikpe2lmKCFmKHYpKXJldHVybiEwO2lmKCFIKXJldHVybiExO3Uodil9cmV0dXJuIHZbcl0ud30sb25GcmVlemU6ZnVuY3Rpb24odil7cmV0dXJuIGcmJnAuTkVFRCYmZih2KSYmIWModixyKSYmdSh2KSx2fX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIg''@;'; put 'put ''cj1sKDUpKCJ1bnNjb3BhYmxlcyIpLGE9QXJyYXkucHJvdG90eXBlO2Fbcl09PWsmJmwoMTEpKGEscix7fSksQS5leHBvcnRzPWZ1bmN0aW9uKGMpe2Fbcl1bY109ITB9fSxmdW5jdGlvbihBLGUpe0EuZXhwb3J0cz1mdW5jdGlvbihsLHIpe3JldHVybntlbnVtZXJhYmxlOiEoMSZsKSxjb25m''@;'; put 'put ''aWd1cmFibGU6ISgyJmwpLHdyaXRhYmxlOiEoNCZsKSx2YWx1ZTpyfX19LGZ1bmN0aW9uKEEsZSl7dmFyIGw9MCxyPU1hdGgucmFuZG9tKCk7QS5leHBvcnRzPWZ1bmN0aW9uKGEpe3JldHVybiJTeW1ib2woIi5jb25jYXQoYT09PWs/IiI6YSwiKV8iLCgrK2wrcikudG9TdHJpbmcoMzYpKX19''@;'; put 'put ''LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDk1KSxhPWwoNjkpO0EuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24obyl7cmV0dXJuIHIobyxhKX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDIwKSxhPU1hdGgubWF4LGM9TWF0aC5taW47QS5leHBvcnRzPWZ1bmN0aW9uKG8saCl7cmV0''@;'; put 'put ''dXJuKG89cihvKSk8MD9hKG8raCwwKTpjKG8saCl9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxKSxhPWwoOTYpLGM9bCg2OSksbz1sKDY4KSgiSUVfUFJPVE8iKSxoPWZ1bmN0aW9uKCl7fSxmPSJwcm90b3R5cGUiLGc9ZnVuY3Rpb24oKXt2YXIgdSxwPWwoNjYpKCJpZnJhbWUiKSx2PWMu''@;'; put 'put ''bGVuZ3RoO2ZvcihwLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGwoNzApLmFwcGVuZENoaWxkKHApLHAuc3JjPSJqYXZhc2NyaXB0OiIsKHU9cC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksdS53cml0ZSgiPHNjcmlwdD5kb2N1bWVudC5GPU9iamVjdDxcL3NjcmlwdD4iKSx1LmNsb3Nl''@;'; put 'put ''KCksZz11LkY7di0tOylkZWxldGUgZ1tmXVtjW3ZdXTtyZXR1cm4gZygpfTtBLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24ocCx2KXt2YXIgSDtyZXR1cm4gbnVsbCE9PXA/KGhbZl09cihwKSxIPW5ldyBoLGhbZl09bnVsbCxIW29dPXApOkg9ZygpLHY9PT1rP0g6YShILHYpfX0s''@;'; put 'put ''ZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoOTUpLGE9bCg2OSkuY29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKG8pe3JldHVybiByKG8sYSl9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyKSxhPWwoOCksYz1sKDcp''@;'; put 'put ''LG89bCg1KSgic3BlY2llcyIpO0EuZXhwb3J0cz1mdW5jdGlvbihoKXt2YXIgZj1yW2hdO2MmJmYmJiFmW29dJiZhLmYoZixvLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSl9fSxmdW5jdGlvbihBLGUpe0EuZXhwb3J0cz1mdW5jdGlvbihsLHIsYSxjKXtp''@;'; put 'put ''ZighKGwgaW5zdGFuY2VvZiByKXx8YyE9PWsmJmMgaW4gbCl0aHJvdyBUeXBlRXJyb3IoYSsiOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEiKTtyZXR1cm4gbH19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDE4KSxhPWwoMTA4KSxjPWwoODEpLG89bCgxKSxoPWwoNiksZj1sKDgzKSxnPXt9LHU9''@;'; put 'put ''e307KGU9QS5leHBvcnRzPWZ1bmN0aW9uKHAsdixILEMsVil7dmFyIFMsXyxiLE0seD1WP2Z1bmN0aW9uKCl7cmV0dXJuIHB9OmYocCksRT1yKEgsQyx2PzI6MSksdz0wO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB4KXRocm93IFR5cGVFcnJvcihwKyIgaXMgbm90IGl0ZXJhYmxlISIpO2lmKGMo''@;'; put 'put ''eCkpe2ZvcihTPWgocC5sZW5ndGgpO3c8Uzt3KyspaWYoKE09dj9FKG8oXz1wW3ddKVswXSxfWzFdKTpFKHBbd10pKT09PWd8fE09PT11KXJldHVybiBNfWVsc2UgZm9yKGI9eC5jYWxsKHApOyEoXz1iLm5leHQoKSkuZG9uZTspaWYoKE09YShiLEUsXy52YWx1ZSx2KSk9PT1nfHxNPT09dSly''@;'; put 'put ''ZXR1cm4gTX0pLkJSRUFLPWcsZS5SRVRVUk49dX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMTIpO0EuZXhwb3J0cz1mdW5jdGlvbihhLGMsbyl7Zm9yKHZhciBoIGluIGMpcihhLGgsY1toXSxvKTtyZXR1cm4gYX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDQpO0EuZXhwb3J0cz1mdW5j''@;'; put 'put ''dGlvbihhLGMpe2lmKCFyKGEpfHxhLl90IT09Yyl0aHJvdyBUeXBlRXJyb3IoIkluY29tcGF0aWJsZSByZWNlaXZlciwgIitjKyIgcmVxdWlyZWQhIik7cmV0dXJuIGF9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg4KS5mLGE9bCgxNCksYz1sKDUpKCJ0b1N0cmluZ1RhZyIpO0EuZXhwb3J0''@;'; put 'put ''cz1mdW5jdGlvbihvLGgsZil7byYmIWEobz1mP286by5wcm90b3R5cGUsYykmJnIobyxjLHtjb25maWd1cmFibGU6ITAsdmFsdWU6aH0pfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMTkpLGE9bCg1KSgidG9TdHJpbmdUYWciKSxjPSJBcmd1bWVudHMiPT1yKGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IGFyZ3VtZW50c30oKSk7QS5leHBvcnRzPWZ1bmN0aW9uKG8pe3ZhciBoLGYsZztyZXR1cm4gbz09PWs/IlVuZGVmaW5lZCI6bnVsbD09PW8/Ik51bGwiOiJzdHJpbmciPT10eXBlb2YoZj1mdW5jdGlvbih1LHApe3RyeXtyZXR1cm4gdVtwXX1jYXRjaCh2KXt9fShoPU9iamVjdChvKSxhKSk/''@;'; put 'put ''ZjpjP3IoaCk6Ik9iamVjdCI9PShnPXIoaCkpJiYiZnVuY3Rpb24iPT10eXBlb2YgaC5jYWxsZWU/IkFyZ3VtZW50cyI6Z319LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgyMyksYz1sKDMpLG89bCg3MyksaD0iWyIrbysiXSIsZj1SZWdFeHAoIl4iK2graCsiKiIpLGc9UmVnRXhw''@;'; put 'put ''KGgraCsiKiQiKSx1PWZ1bmN0aW9uKHYsSCxDKXt2YXIgVj17fSxTPWMoZnVuY3Rpb24oKXtyZXR1cm4hIW9bdl0oKXx8Ilx1MjAwYlx4ODUiIT0iXHUyMDBiXHg4NSJbdl0oKX0pLF89Vlt2XT1TP0gocCk6b1t2XTtDJiYoVltDXT1fKSxyKHIuUCtyLkYqUywiU3RyaW5nIixWKX0scD11LnRy''@;'; put 'put ''aW09ZnVuY3Rpb24odixIKXtyZXR1cm4gdj1TdHJpbmcoYSh2KSksMSZIJiYodj12LnJlcGxhY2UoZiwiIikpLDImSCYmKHY9di5yZXBsYWNlKGcsIiIpKSx2fTtBLmV4cG9ydHM9dX0sZnVuY3Rpb24oQSxlKXtBLmV4cG9ydHM9e319LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDI2KSxhPWwo''@;'; put 'put ''MiksYz0iX19jb3JlLWpzX3NoYXJlZF9fIixvPWFbY118fChhW2NdPXt9KTsoQS5leHBvcnRzPWZ1bmN0aW9uKGgsZil7cmV0dXJuIG9baF18fChvW2hdPWYhPT1rP2Y6e30pfSkoInZlcnNpb25zIixbXSkucHVzaCh7dmVyc2lvbjpyLnZlcnNpb24sbW9kZTpsKDI5KT8icHVyZSI6Imdsb2Jh''@;'; put 'put ''bCIsY29weXJpZ2h0OiJceGE5IDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkifSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDE5KTtBLmV4cG9ydHM9T2JqZWN0KCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCk/T2JqZWN0OmZ1bmN0aW9uKGEpe3JldHVybiJTdHJpbmci''@;'; put 'put ''PT1yKGEpP2Euc3BsaXQoIiIpOk9iamVjdChhKX19LGZ1bmN0aW9uKEEsZSl7ZS5mPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxKTtBLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgYT1yKHRoaXMpLGM9IiI7cmV0dXJuIGEuZ2xvYmFsJiYoYys9Imci''@;'; put 'put ''KSxhLmlnbm9yZUNhc2UmJihjKz0iaSIpLGEubXVsdGlsaW5lJiYoYys9Im0iKSxhLnVuaWNvZGUmJihjKz0idSIpLGEuc3RpY2t5JiYoYys9InkiKSxjfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMSksYT1sKDEwKSxjPWwoNSkoInNwZWNpZXMiKTtBLmV4cG9ydHM9ZnVuY3Rpb24obyxo''@;'; put 'put ''KXt2YXIgZixnPXIobykuY29uc3RydWN0b3I7cmV0dXJuIGc9PT1rfHwoZj1yKGcpW2NdKT09az9oOmEoZil9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxNSksYT1sKDYpLGM9bCgzNSk7QS5leHBvcnRzPWZ1bmN0aW9uKG8pe3JldHVybiBmdW5jdGlvbihoLGYsZyl7dmFyIHUscD1yKGgp''@;'; put 'put ''LHY9YShwLmxlbmd0aCksSD1jKGcsdik7aWYobyYmZiE9Zil7Zm9yKDtIPHY7KWlmKCh1PXBbSCsrXSkhPXUpcmV0dXJuITB9ZWxzZSBmb3IoO0g8djtIKyspaWYoKG98fEggaW4gcCkmJnBbSF09PT1mKXJldHVybiBvfHxIfHwwO3JldHVybiFvJiYtMX19fSxmdW5jdGlvbihBLGUpe2UuZj1P''@;'; put 'put ''YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxOSk7QS5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGMpe3JldHVybiJBcnJheSI9PXIoYyl9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyMCksYT1sKDIzKTtBLmV4cG9ydHM9ZnVu''@;'; put 'put ''Y3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKG8saCl7dmFyIGYsZyx1PVN0cmluZyhhKG8pKSxwPXIoaCksdj11Lmxlbmd0aDtyZXR1cm4gcDwwfHx2PD1wP2M/IiI6azooZj11LmNoYXJDb2RlQXQocCkpPDU1Mjk2fHw1NjMxOTxmfHxwKzE9PT12fHwoZz11LmNoYXJDb2RlQXQocCsxKSk8NTYz''@;'; put 'put ''MjB8fDU3MzQzPGc/Yz91LmNoYXJBdChwKTpmOmM/dS5zbGljZShwLHArMik6Zy01NjMyMCsoZi01NTI5Njw8MTApKzY1NTM2fX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDQpLGE9bCgxOSksYz1sKDUpKCJtYXRjaCIpO0EuZXhwb3J0cz1mdW5jdGlvbihvKXt2YXIgaDtyZXR1cm4gcihv''@;'; put 'put ''KSYmKChoPW9bY10pIT09az8hIWg6IlJlZ0V4cCI9PWEobykpfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNSkoIml0ZXJhdG9yIiksYT0hMTt0cnl7dmFyIGM9WzddW3JdKCk7Yy5yZXR1cm49ZnVuY3Rpb24oKXthPSEwfSxBcnJheS5mcm9tKGMsZnVuY3Rpb24oKXt0aHJvdyAyfSl9Y2F0''@;'; put 'put ''Y2gobyl7fUEuZXhwb3J0cz1mdW5jdGlvbihvLGgpe2lmKCFoJiYhYSlyZXR1cm4hMTt2YXIgZj0hMTt0cnl7dmFyIGc9WzddLHU9Z1tyXSgpO3UubmV4dD1mdW5jdGlvbigpe3JldHVybntkb25lOmY9ITB9fSxnW3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHV9LG8oZyl9Y2F0Y2gocCl7fXJldHVy''@;'; put 'put ''biBmfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNDQpLGE9UmVnRXhwLnByb3RvdHlwZS5leGVjO0EuZXhwb3J0cz1mdW5jdGlvbihjLG8pe3ZhciBoPWMuZXhlYztpZigiZnVuY3Rpb24iPT10eXBlb2YgaCl7dmFyIGY9aC5jYWxsKGMsbyk7aWYoIm9iamVjdCIhPXR5cGVvZiBmKXRocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIlJlZ0V4cCBleGVjIG1ldGhvZCByZXR1cm5lZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBhbiBPYmplY3Qgb3IgbnVsbCIpO3JldHVybiBmfWlmKCJSZWdFeHAiIT09cihjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWdFeHAjZXhlYyBjYWxsZWQgb24gaW5jb21wYXRp''@;'; put 'put ''YmxlIHJlY2VpdmVyIik7cmV0dXJuIGEuY2FsbChjLG8pfX0sZnVuY3Rpb24oQSxlLGwpe2woMTEyKTt2YXIgcj1sKDEyKSxhPWwoMTEpLGM9bCgzKSxvPWwoMjMpLGg9bCg1KSxmPWwoODcpLGc9aCgic3BlY2llcyIpLHU9IWMoZnVuY3Rpb24oKXt2YXIgdj0vLi87cmV0dXJuIHYuZXhlYz1m''@;'; put 'put ''dW5jdGlvbigpe3ZhciBIPVtdO3JldHVybiBILmdyb3Vwcz17YToiNyJ9LEh9LCI3IiE9PSIiLnJlcGxhY2UodiwiJDxhPiIpfSkscD1mdW5jdGlvbigpe3ZhciB2PS8oPzopLyxIPXYuZXhlYzt2LmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gSC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3ZhciBD''@;'; put 'put ''PSJhYiIuc3BsaXQodik7cmV0dXJuIDI9PT1DLmxlbmd0aCYmImEiPT09Q1swXSYmImIiPT09Q1sxXX0oKTtBLmV4cG9ydHM9ZnVuY3Rpb24odixILEMpe3ZhciBWPWgodiksUz0hYyhmdW5jdGlvbigpe3ZhciBFPXt9O3JldHVybiBFW1ZdPWZ1bmN0aW9uKCl7cmV0dXJuIDd9LDchPSIiW3Zd''@;'; put 'put ''KEUpfSksXz1TPyFjKGZ1bmN0aW9uKCl7dmFyIEU9ITEsdz0vYS87cmV0dXJuIHcuZXhlYz1mdW5jdGlvbigpe3JldHVybiBFPSEwLG51bGx9LCJzcGxpdCI9PT12JiYody5jb25zdHJ1Y3Rvcj17fSx3LmNvbnN0cnVjdG9yW2ddPWZ1bmN0aW9uKCl7cmV0dXJuIHd9KSx3W1ZdKCIiKSwhRX0p''@;'; put 'put ''Oms7aWYoIVN8fCFffHwicmVwbGFjZSI9PT12JiYhdXx8InNwbGl0Ij09PXYmJiFwKXt2YXIgYj0vLi9bVl0sTT1DKG8sViwiIlt2XSxmdW5jdGlvbih3LE4sSSxXLE8pe3JldHVybiBOLmV4ZWM9PT1mP1MmJiFPP3tkb25lOiEwLHZhbHVlOmIuY2FsbChOLEksVyl9Ontkb25lOiEwLHZhbHVl''@;'; put 'put ''OncuY2FsbChJLE4sVyl9Ontkb25lOiExfX0pLHg9TVsxXTtyKFN0cmluZy5wcm90b3R5cGUsdixNWzBdKSxhKFJlZ0V4cC5wcm90b3R5cGUsViwyPT1IP2Z1bmN0aW9uKEUsdyl7cmV0dXJuIHguY2FsbChFLHRoaXMsdyl9OmZ1bmN0aW9uKEUpe3JldHVybiB4LmNhbGwoRSx0aGlzKX0pfX19''@;'; put 'put ''LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDIpLm5hdmlnYXRvcjtBLmV4cG9ydHM9ciYmci51c2VyQWdlbnR8fCIifSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyKSxhPWwoMCksYz1sKDEyKSxvPWwoNDEpLGg9bCgzMCksZj1sKDQwKSxnPWwoMzkpLHU9bCg0KSxwPWwoMyksdj1sKDU3KSxI''@;'; put 'put ''PWwoNDMpLEM9bCg3Mik7QS5leHBvcnRzPWZ1bmN0aW9uKFYsUyxfLGIsTSx4KXt2YXIgRT1yW1ZdLHc9RSxOPU0/InNldCI6ImFkZCIsST13JiZ3LnByb3RvdHlwZSxXPXt9LE89ZnVuY3Rpb24odTEpe3ZhciBwMT1JW3UxXTtjKEksdTEsImRlbGV0ZSI9PXUxP2Z1bmN0aW9uKHYxKXtyZXR1''@;'; put 'put ''cm4hKHgmJiF1KHYxKSkmJnAxLmNhbGwodGhpcywwPT09djE/MDp2MSl9OiJoYXMiPT11MT9mdW5jdGlvbihFMSl7cmV0dXJuISh4JiYhdShFMSkpJiZwMS5jYWxsKHRoaXMsMD09PUUxPzA6RTEpfToiZ2V0Ij09dTE/ZnVuY3Rpb24oRTEpe3JldHVybiB4JiYhdShFMSk/azpwMS5jYWxsKHRo''@;'; put 'put ''aXMsMD09PUUxPzA6RTEpfToiYWRkIj09dTE/ZnVuY3Rpb24oRTEpe3JldHVybiBwMS5jYWxsKHRoaXMsMD09PUUxPzA6RTEpLHRoaXN9OmZ1bmN0aW9uKEUxLGope3JldHVybiBwMS5jYWxsKHRoaXMsMD09PUUxPzA6RTEsaiksdGhpc30pfTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdyYmKHh8''@;'; put 'put ''fEkuZm9yRWFjaCYmIXAoZnVuY3Rpb24oKXsobmV3IHcpLmVudHJpZXMoKS5uZXh0KCl9KSkpe3ZhciBCPW5ldyB3LFI9QltOXSh4P3t9Oi0wLDEpIT1CLGwxPXAoZnVuY3Rpb24oKXtCLmhhcygxKX0pLGExPXYoZnVuY3Rpb24odTEpe25ldyB3KHUxKX0pLGgxPSF4JiZwKGZ1bmN0aW9uKCl7''@;'; put 'put ''Zm9yKHZhciB1MT1uZXcgdyxwMT01O3AxLS07KXUxW05dKHAxLHAxKTtyZXR1cm4hdTEuaGFzKC0wKX0pO2ExfHwoKCh3PVMoZnVuY3Rpb24odTEscDEpe2codTEsdyxWKTt2YXIgdjE9QyhuZXcgRSx1MSx3KTtyZXR1cm4gcDEhPWsmJmYocDEsTSx2MVtOXSx2MSksdjF9KSkucHJvdG90eXBl''@;'; put 'put ''PUkpLmNvbnN0cnVjdG9yPXcpLChsMXx8aDEpJiYoTygiZGVsZXRlIiksTygiaGFzIiksTSYmTygiZ2V0IikpLChoMXx8UikmJk8oTikseCYmSS5jbGVhciYmZGVsZXRlIEkuY2xlYXJ9ZWxzZSB3PWIuZ2V0Q29uc3RydWN0b3IoUyxWLE0sTiksbyh3LnByb3RvdHlwZSxfKSxoLk5FRUQ9ITA7''@;'; put 'put ''cmV0dXJuIEgodyxWKSxhKGEuRythLlcrYS5GKigoV1tWXT13KSE9RSksVykseHx8Yi5zZXRTdHJvbmcodyxWLE0pLHd9fSxmdW5jdGlvbihBLGUsbCl7Zm9yKHZhciByLGE9bCgyKSxjPWwoMTEpLG89bCgzMyksaD1vKCJ0eXBlZF9hcnJheSIpLGY9bygidmlldyIpLGc9ISghYS5BcnJheUJ1''@;'; put 'put ''ZmZlcnx8IWEuRGF0YVZpZXcpLHU9ZyxwPTAsdj0iSW50OEFycmF5LFVpbnQ4QXJyYXksVWludDhDbGFtcGVkQXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXkiLnNwbGl0KCIsIik7cDw5Oykocj1hW3Zb''@;'; put 'put ''cCsrXV0pPyhjKHIucHJvdG90eXBlLGgsITApLGMoci5wcm90b3R5cGUsZiwhMCkpOnU9ITE7QS5leHBvcnRzPXtBQlY6ZyxDT05TVFI6dSxUWVBFRDpoLFZJRVc6Zn19LGZ1bmN0aW9uKEEsZSxsKXtBLmV4cG9ydHM9bCgyOSl8fCFsKDMpKGZ1bmN0aW9uKCl7dmFyIHI9TWF0aC5yYW5kb20o''@;'; put 'put ''KTtfX2RlZmluZVNldHRlcl9fLmNhbGwobnVsbCxyLGZ1bmN0aW9uKCl7fSksZGVsZXRlIGwoMilbcl19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7QS5leHBvcnRzPWZ1bmN0aW9uKGEpe3Ioci5TLGEse29mOmZ1bmN0aW9uKCl7Zm9yKHZhciBvPWFyZ3VtZW50cy5sZW5ndGgsaD1u''@;'; put 'put ''ZXcgQXJyYXkobyk7by0tOyloW29dPWFyZ3VtZW50c1tvXTtyZXR1cm4gbmV3IHRoaXMoaCl9fSl9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMTApLGM9bCgxOCksbz1sKDQwKTtBLmV4cG9ydHM9ZnVuY3Rpb24oaCl7cihyLlMsaCx7ZnJvbTpmdW5jdGlvbihnKXt2YXIgdSxw''@;'; put 'put ''LHYsSCxDPWFyZ3VtZW50c1sxXTtyZXR1cm4gYSh0aGlzKSwodT1DIT09aykmJmEoQyksZz09az9uZXcgdGhpczoocD1bXSx1Pyh2PTAsSD1jKEMsYXJndW1lbnRzWzJdLDIpLG8oZywhMSxmdW5jdGlvbihWKXtwLnB1c2goSChWLHYrKykpfSkpOm8oZywhMSxwLnB1c2gscCksbmV3IHRoaXMo''@;'; put 'put ''cCkpfX0pfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNCksYT1sKDIpLmRvY3VtZW50LGM9cihhKSYmcihhLmNyZWF0ZUVsZW1lbnQpO0EuZXhwb3J0cz1mdW5jdGlvbihvKXtyZXR1cm4gYz9hLmNyZWF0ZUVsZW1lbnQobyk6e319fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyKSxhPWwo''@;'; put 'put ''MjYpLGM9bCgyOSksbz1sKDk0KSxoPWwoOCkuZjtBLmV4cG9ydHM9ZnVuY3Rpb24oZil7dmFyIGc9YS5TeW1ib2x8fChhLlN5bWJvbD1jP3t9OnIuU3ltYm9sfHx7fSk7Il8iPT1mLmNoYXJBdCgwKXx8ZiBpbiBnfHxoKGcsZix7dmFsdWU6by5mKGYpfSl9fSxmdW5jdGlvbihBLGUsbCl7dmFy''@;'; put 'put ''IHI9bCg0NykoImtleXMiKSxhPWwoMzMpO0EuZXhwb3J0cz1mdW5jdGlvbihjKXtyZXR1cm4gcltjXXx8KHJbY109YShjKSl9fSxmdW5jdGlvbihBLGUpe0EuZXhwb3J0cz0iY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xv''@;'; put 'put ''Y2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mIi5zcGxpdCgiLCIpfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyKS5kb2N1bWVudDtBLmV4cG9ydHM9ciYmci5kb2N1bWVudEVsZW1lbnR9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDQpLGE9bCgxKSxjPWZ1bmN0aW9uKG8saCl7aWYoYShv''@;'; put 'put ''KSwhcihoKSYmbnVsbCE9PWgpdGhyb3cgVHlwZUVycm9yKGgrIjogY2FuJ3Qgc2V0IGFzIHByb3RvdHlwZSEiKX07QS5leHBvcnRzPXtzZXQ6T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKG8saCxmKXt0cnl7KGY9bCgxOCkoRnVuY3Rpb24uY2FsbCxs''@;'; put 'put ''KDE2KS5mKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIpLnNldCwyKSkobyxbXSksaD0hKG8gaW5zdGFuY2VvZiBBcnJheSl9Y2F0Y2goZyl7aD0hMH1yZXR1cm4gZnVuY3Rpb24odSxwKXtyZXR1cm4gYyh1LHApLGg/dS5fX3Byb3RvX189cDpmKHUscCksdX19KHt9LCExKTprKSxjaGVj''@;'; put 'put ''azpjfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNCksYT1sKDcxKS5zZXQ7QS5leHBvcnRzPWZ1bmN0aW9uKGMsbyxoKXt2YXIgZixnPW8uY29uc3RydWN0b3I7cmV0dXJuIGchPT1oJiYiZnVuY3Rpb24iPT10eXBlb2YgZyYmKGY9Zy5wcm90b3R5cGUpIT09aC5wcm90b3R5cGUmJnIoZikm''@;'; put 'put ''JmEmJmEoYyxmKSxjfX0sZnVuY3Rpb24oQSxlKXtBLmV4cG9ydHM9Ilx0XG5cdlxmXHIgXHhhMFx1MTY4MFx1MTgwZVx1MjAwMFx1MjAwMVx1MjAwMlx1MjAwM1x1MjAwNFx1MjAwNVx1MjAwNlx1MjAwN1x1MjAwOFx1MjAwOVx1MjAwYVx1MjAyZlx1MjA1Zlx1MzAwMFx1MjAyOFx1MjAyOVx1''@;'; put 'put ''ZmVmZiJ9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDIwKSxhPWwoMjMpO0EuZXhwb3J0cz1mdW5jdGlvbihvKXt2YXIgaD1TdHJpbmcoYSh0aGlzKSksZj0iIixnPXIobyk7aWYoZzwwfHxnPT0xLzApdGhyb3cgUmFuZ2VFcnJvcigiQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUiKTtmb3IoOzA8''@;'; put 'put ''ZzsoZz4+Pj0xKSYmKGgrPWgpKTEmZyYmKGYrPWgpO3JldHVybiBmfX0sZnVuY3Rpb24oQSxlKXtBLmV4cG9ydHM9TWF0aC5zaWdufHxmdW5jdGlvbihyKXtyZXR1cm4gMD09KHI9K3IpfHxyIT1yP3I6cjwwPy0xOjF9fSxmdW5jdGlvbihBLGUpe3ZhciBsPU1hdGguZXhwbTE7QS5leHBvcnRz''@;'; put 'put ''PSFsfHwyMjAyNS40NjU3OTQ4MDY3MTg8bCgxMCl8fGwoMTApPDIyMDI1LjQ2NTc5NDgwNjcxOHx8LTJlLTE3IT1sKC0yZS0xNyk/ZnVuY3Rpb24oYSl7cmV0dXJuIDA9PShhPSthKT9hOi0xZS02PGEmJmE8MWUtNj9hK2EqYS8yOk1hdGguZXhwKGEpLTF9Omx9LGZ1bmN0aW9uKEEsZSxsKXt2''@;'; put 'put ''YXIgcj1sKDU2KSxhPWwoMjMpO0EuZXhwb3J0cz1mdW5jdGlvbihjLG8saCl7aWYocihvKSl0aHJvdyBUeXBlRXJyb3IoIlN0cmluZyMiK2grIiBkb2Vzbid0IGFjY2VwdCByZWdleCEiKTtyZXR1cm4gU3RyaW5nKGEoYykpfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNSkoIm1hdGNoIik7''@;'; put 'put ''QS5leHBvcnRzPWZ1bmN0aW9uKGEpe3ZhciBjPS8uLzt0cnl7Ii8uLyJbYV0oYyl9Y2F0Y2gobyl7dHJ5e3JldHVybiBjW3JdPSExLCEiLy4vIlthXShjKX1jYXRjaChoKXt9fXJldHVybiEwfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMjkpLGE9bCgwKSxjPWwoMTIpLG89bCgxMSksaD1s''@;'; put 'put ''KDQ2KSxmPWwoODApLGc9bCg0MyksdT1sKDE3KSxwPWwoNSkoIml0ZXJhdG9yIiksdj0hKFtdLmtleXMmJiJuZXh0ImluW10ua2V5cygpKSxIPSJ2YWx1ZXMiLEM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307QS5leHBvcnRzPWZ1bmN0aW9uKFYsUyxfLGIsTSx4LEUpe2YoXyxTLGIpO3ZhciB3''@;'; put 'put ''LE4sSSxXPWZ1bmN0aW9uKHYxKXtpZighdiYmdjEgaW4gbDEpcmV0dXJuIGwxW3YxXTtzd2l0Y2godjEpe2Nhc2Uia2V5cyI6Y2FzZSBIOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgXyh0aGlzLHYxKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfKHRoaXMsdjEpfX0sTz1T''@;'; put 'put ''KyIgSXRlcmF0b3IiLEI9TT09SCxSPSExLGwxPVYucHJvdG90eXBlLGExPWwxW3BdfHxsMVsiQEBpdGVyYXRvciJdfHxNJiZsMVtNXSxoMT1hMXx8VyhNKSx1MT1NP0I/VygiZW50cmllcyIpOmgxOmsscDE9IkFycmF5Ij09UyYmbDEuZW50cmllc3x8YTE7aWYocDEmJihJPXUocDEuY2FsbChu''@;'; put 'put ''ZXcgVikpKSE9PU9iamVjdC5wcm90b3R5cGUmJkkubmV4dCYmKGcoSSxPLCEwKSxyfHwiZnVuY3Rpb24iPT10eXBlb2YgSVtwXXx8byhJLHAsQykpLEImJmExJiZhMS5uYW1lIT09SCYmKFI9ITAsaDE9ZnVuY3Rpb24oKXtyZXR1cm4gYTEuY2FsbCh0aGlzKX0pLHImJiFFfHwhdiYmIVImJmwx''@;'; put 'put ''W3BdfHxvKGwxLHAsaDEpLGhbU109aDEsaFtPXT1DLE0paWYodz17dmFsdWVzOkI/aDE6VyhIKSxrZXlzOng/aDE6Vygia2V5cyIpLGVudHJpZXM6dTF9LEUpZm9yKE4gaW4gdylOIGluIGwxfHxjKGwxLE4sd1tOXSk7ZWxzZSBhKGEuUCthLkYqKHZ8fFIpLFMsdyk7cmV0dXJuIHd9fSxmdW5j''@;'; put 'put ''dGlvbihBLGUsbCl7dmFyIHI9bCgzNiksYT1sKDMyKSxjPWwoNDMpLG89e307bCgxMSkobyxsKDUpKCJpdGVyYXRvciIpLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxBLmV4cG9ydHM9ZnVuY3Rpb24oaCxmLGcpe2gucHJvdG90eXBlPXIobyx7bmV4dDphKDEsZyl9KSxjKGgsZisiIEl0ZXJh''@;'; put 'put ''dG9yIil9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg0NiksYT1sKDUpKCJpdGVyYXRvciIpLGM9QXJyYXkucHJvdG90eXBlO0EuZXhwb3J0cz1mdW5jdGlvbihvKXtyZXR1cm4gbyE9PWsmJihyLkFycmF5PT09b3x8Y1thXT09PW8pfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoOCksYT1s''@;'; put 'put ''KDMyKTtBLmV4cG9ydHM9ZnVuY3Rpb24oYyxvLGgpe28gaW4gYz9yLmYoYyxvLGEoMCxoKSk6Y1tvXT1ofX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNDQpLGE9bCg1KSgiaXRlcmF0b3IiKSxjPWwoNDYpO0EuZXhwb3J0cz1sKDI2KS5nZXRJdGVyYXRvck1ldGhvZD1mdW5jdGlvbihvKXtp''@;'; put 'put ''ZihvIT1rKXJldHVybiBvW2FdfHxvWyJAQGl0ZXJhdG9yIl18fGNbcihvKV19fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyMTMpO0EuZXhwb3J0cz1mdW5jdGlvbihhLGMpe3JldHVybiBuZXcocihhKSkoYyl9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg5KSxhPWwoMzUpLGM9bCg2KTtB''@;'; put 'put ''LmV4cG9ydHM9ZnVuY3Rpb24oaCl7Zm9yKHZhciBmPXIodGhpcyksZz1jKGYubGVuZ3RoKSx1PWFyZ3VtZW50cy5sZW5ndGgscD1hKDE8dT9hcmd1bWVudHNbMV06ayxnKSx2PTI8dT9hcmd1bWVudHNbMl06ayxIPXY9PT1rP2c6YSh2LGcpO3A8SDspZltwKytdPWg7cmV0dXJuIGZ9fSxmdW5j''@;'; put 'put ''dGlvbihBLGUsbCl7dmFyIHI9bCgzMSksYT1sKDExMSksYz1sKDQ2KSxvPWwoMTUpO0EuZXhwb3J0cz1sKDc5KShBcnJheSwiQXJyYXkiLGZ1bmN0aW9uKGgsZil7dGhpcy5fdD1vKGgpLHRoaXMuX2k9MCx0aGlzLl9rPWZ9LGZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5fdCxmPXRoaXMuX2ssZz10''@;'; put 'put ''aGlzLl9pKys7cmV0dXJuIWh8fGgubGVuZ3RoPD1nPyh0aGlzLl90PWssYSgxKSk6YSgwLCJrZXlzIj09Zj9nOiJ2YWx1ZXMiPT1mP2hbZ106W2csaFtnXV0pfSwidmFsdWVzIiksYy5Bcmd1bWVudHM9Yy5BcnJheSxyKCJrZXlzIikscigidmFsdWVzIikscigiZW50cmllcyIpfSxmdW5jdGlv''@;'; put 'put ''bihBLGUsbCl7dmFyIHIsYSxjPWwoNTApLG89UmVnRXhwLnByb3RvdHlwZS5leGVjLGg9U3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlLGY9byxnPSJsYXN0SW5kZXgiLHU9KGE9L2IqL2csby5jYWxsKHI9L2EvLCJhIiksby5jYWxsKGEsImEiKSwwIT09cltnXXx8MCE9PWFbZ10pLHA9LygpPz8v''@;'; put 'put ''LmV4ZWMoIiIpWzFdIT09azsodXx8cCkmJihmPWZ1bmN0aW9uKEgpe3ZhciBDLFYsUyxfLGI9dGhpcztyZXR1cm4gcCYmKFY9bmV3IFJlZ0V4cCgiXiIrYi5zb3VyY2UrIiQoPyFcXHMpIixjLmNhbGwoYikpKSx1JiYoQz1iW2ddKSxTPW8uY2FsbChiLEgpLHUmJlMmJihiW2ddPWIuZ2xvYmFs''@;'; put 'put ''P1MuaW5kZXgrU1swXS5sZW5ndGg6QykscCYmUyYmMTxTLmxlbmd0aCYmaC5jYWxsKFNbMF0sVixmdW5jdGlvbigpe2ZvcihfPTE7Xzxhcmd1bWVudHMubGVuZ3RoLTI7XysrKWFyZ3VtZW50c1tfXT09PWsmJihTW19dPWspfSksU30pLEEuZXhwb3J0cz1mfSxmdW5jdGlvbihBLGUsbCl7dmFy''@;'; put 'put ''IHI9bCg1NSkoITApO0EuZXhwb3J0cz1mdW5jdGlvbihhLGMsbyl7cmV0dXJuIGMrKG8/cihhLGMpLmxlbmd0aDoxKX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcixhLGMsbz1sKDE4KSxoPWwoMTAxKSxmPWwoNzApLGc9bCg2NiksdT1sKDIpLHA9dS5wcm9jZXNzLHY9dS5zZXRJbW1lZGlhdGUs''@;'; put 'put ''SD11LmNsZWFySW1tZWRpYXRlLEM9dS5NZXNzYWdlQ2hhbm5lbCxWPXUuRGlzcGF0Y2gsUz0wLF89e30sYj0ib25yZWFkeXN0YXRlY2hhbmdlIixNPWZ1bmN0aW9uKCl7dmFyIEU9K3RoaXM7aWYoXy5oYXNPd25Qcm9wZXJ0eShFKSl7dmFyIHc9X1tFXTtkZWxldGUgX1tFXSx3KCl9fSx4PWZ1''@;'; put 'put ''bmN0aW9uKEUpe00uY2FsbChFLmRhdGEpfTt2JiZIfHwodj1mdW5jdGlvbih3KXtmb3IodmFyIE49W10sST0xO0k8YXJndW1lbnRzLmxlbmd0aDspTi5wdXNoKGFyZ3VtZW50c1tJKytdKTtyZXR1cm4gX1srK1NdPWZ1bmN0aW9uKCl7aCgiZnVuY3Rpb24iPT10eXBlb2Ygdz93OkZ1bmN0aW9u''@;'; put 'put ''KHcpLE4pfSxyKFMpLFN9LEg9ZnVuY3Rpb24odyl7ZGVsZXRlIF9bd119LCJwcm9jZXNzIj09bCgxOSkocCk/cj1mdW5jdGlvbihFKXtwLm5leHRUaWNrKG8oTSxFLDEpKX06ViYmVi5ub3c/cj1mdW5jdGlvbihFKXtWLm5vdyhvKE0sRSwxKSl9OkM/KGM9KGE9bmV3IEMpLnBvcnQyLGEucG9y''@;'; put 'put ''dDEub25tZXNzYWdlPXgscj1vKGMucG9zdE1lc3NhZ2UsYywxKSk6dS5hZGRFdmVudExpc3RlbmVyJiYiZnVuY3Rpb24iPT10eXBlb2YgcG9zdE1lc3NhZ2UmJiF1LmltcG9ydFNjcmlwdHM/KHI9ZnVuY3Rpb24oRSl7dS5wb3N0TWVzc2FnZShFKyIiLCIqIil9LHUuYWRkRXZlbnRMaXN0ZW5l''@;'; put 'put ''cigibWVzc2FnZSIseCwhMSkpOnI9YiBpbiBnKCJzY3JpcHQiKT9mdW5jdGlvbihFKXtmLmFwcGVuZENoaWxkKGcoInNjcmlwdCIpKVtiXT1mdW5jdGlvbigpe2YucmVtb3ZlQ2hpbGQodGhpcyksTS5jYWxsKEUpfX06ZnVuY3Rpb24oRSl7c2V0VGltZW91dChvKE0sRSwxKSwwKX0pLEEuZXhw''@;'; put 'put ''b3J0cz17c2V0OnYsY2xlYXI6SH19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDIpLGE9bCg4OSkuc2V0LGM9ci5NdXRhdGlvbk9ic2VydmVyfHxyLldlYktpdE11dGF0aW9uT2JzZXJ2ZXIsbz1yLnByb2Nlc3MsaD1yLlByb21pc2UsZj0icHJvY2VzcyI9PWwoMTkpKG8pO0EuZXhwb3J0cz1m''@;'; put 'put ''dW5jdGlvbigpe3ZhciBnLHUscCx2PWZ1bmN0aW9uKCl7dmFyIFMsXztmb3IoZiYmKFM9by5kb21haW4pJiZTLmV4aXQoKTtnOyl7Xz1nLmZuLGc9Zy5uZXh0O3RyeXtfKCl9Y2F0Y2goYil7dGhyb3cgZz9wKCk6dT1rLGJ9fXU9ayxTJiZTLmVudGVyKCl9O2lmKGYpcD1mdW5jdGlvbigpe28u''@;'; put 'put ''bmV4dFRpY2sodil9O2Vsc2UgaWYoIWN8fHIubmF2aWdhdG9yJiZyLm5hdmlnYXRvci5zdGFuZGFsb25lKWlmKGgmJmgucmVzb2x2ZSl7dmFyIEg9aC5yZXNvbHZlKGspO3A9ZnVuY3Rpb24oKXtILnRoZW4odil9fWVsc2UgcD1mdW5jdGlvbigpe2EuY2FsbChyLHYpfTtlbHNle3ZhciBDPSEw''@;'; put 'put ''LFY9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpO25ldyBjKHYpLm9ic2VydmUoVix7Y2hhcmFjdGVyRGF0YTohMH0pLHA9ZnVuY3Rpb24oKXtWLmRhdGE9Qz0hQ319cmV0dXJuIGZ1bmN0aW9uKFMpe3ZhciBfPXtmbjpTLG5leHQ6a307dSYmKHUubmV4dD1fKSxnfHwoZz1fLHAoKSksdT1f''@;'; put 'put ''fX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDEwKTtmdW5jdGlvbiBhKGMpe3ZhciBvLGg7dGhpcy5wcm9taXNlPW5ldyBjKGZ1bmN0aW9uKGYsZyl7aWYobyE9PWt8fGghPT1rKXRocm93IFR5cGVFcnJvcigiQmFkIFByb21pc2UgY29uc3RydWN0b3IiKTtvPWYsaD1nfSksdGhpcy5yZXNv''@;'; put 'put ''bHZlPXIobyksdGhpcy5yZWplY3Q9cihoKX1BLmV4cG9ydHMuZj1mdW5jdGlvbihjKXtyZXR1cm4gbmV3IGEoYyl9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyKSxhPWwoNyksYz1sKDI5KSxvPWwoNjIpLGg9bCgxMSksZj1sKDQxKSxnPWwoMyksdT1sKDM5KSxwPWwoMjApLHY9bCg2KSxI''@;'; put 'put ''PWwoMTIyKSxDPWwoMzcpLmYsVj1sKDgpLmYsUz1sKDg1KSxfPWwoNDMpLGI9IkFycmF5QnVmZmVyIixNPSJEYXRhVmlldyIseD0icHJvdG90eXBlIixFPSJXcm9uZyBpbmRleCEiLHc9cltiXSxOPXJbTV0sST1yLk1hdGgsVz1yLlJhbmdlRXJyb3IsTz1yLkluZmluaXR5LEI9dyxSPUkuYWJz''@;'; put 'put ''LGwxPUkucG93LGExPUkuZmxvb3IsaDE9SS5sb2csdTE9SS5MTjIscDE9ImJ5dGVMZW5ndGgiLHYxPSJieXRlT2Zmc2V0IixFMT1hPyJfYiI6ImJ1ZmZlciIsaj1hPyJfbCI6cDEsYzE9YT8iX28iOnYxO2Z1bmN0aW9uIFYxKFkscSxKKXt2YXIgQTEsTjEsUzEsbjE9bmV3IEFycmF5KEopLGkx''@;'; put 'put ''PTgqSi1xLTEsZjE9KDE8PGkxKS0xLHgxPWYxPj4xLEkxPTIzPT09cT9sMSgyLC0yNCktbDEoMiwtNzcpOjAsSjE9MCx0MD1ZPDB8fDA9PT1ZJiYxL1k8MD8xOjA7Zm9yKChZPVIoWSkpIT1ZfHxZPT09Tz8oTjE9WSE9WT8xOjAsQTE9ZjEpOihBMT1hMShoMShZKS91MSksWSooUzE9bDEoMiwt''@;'; put 'put ''QTEpKTwxJiYoQTEtLSxTMSo9MiksMjw9KFkrPTE8PUExK3gxP0kxL1MxOkkxKmwxKDIsMS14MSkpKlMxJiYoQTErKyxTMS89MiksZjE8PUExK3gxPyhOMT0wLEExPWYxKToxPD1BMSt4MT8oTjE9KFkqUzEtMSkqbDEoMixxKSxBMSs9eDEpOihOMT1ZKmwxKDIseDEtMSkqbDEoMixxKSxBMT0w''@;'; put 'put ''KSk7ODw9cTtuMVtKMSsrXT0yNTUmTjEsTjEvPTI1NixxLT04KTtmb3IoQTE9QTE8PHF8TjEsaTErPXE7MDxpMTtuMVtKMSsrXT0yNTUmQTEsQTEvPTI1NixpMS09OCk7cmV0dXJuIG4xWy0tSjFdfD0xMjgqdDAsbjF9ZnVuY3Rpb24gXzEoWSxxLEope3ZhciBBMSxOMT04KkotcS0xLFMxPSgx''@;'; put 'put ''PDxOMSktMSxuMT1TMT4+MSxpMT1OMS03LGYxPUotMSx4MT1ZW2YxLS1dLEkxPTEyNyZ4MTtmb3IoeDE+Pj03OzA8aTE7STE9MjU2KkkxK1lbZjFdLGYxLS0saTEtPTgpO2ZvcihBMT1JMSYoMTw8LWkxKS0xLEkxPj49LWkxLGkxKz1xOzA8aTE7QTE9MjU2KkExK1lbZjFdLGYxLS0saTEtPTgp''@;'; put 'put ''O2lmKDA9PT1JMSlJMT0xLW4xO2Vsc2V7aWYoSTE9PT1TMSlyZXR1cm4gQTE/TmFOOngxPy1POk87QTErPWwxKDIscSksSTEtPW4xfXJldHVybih4MT8tMToxKSpBMSpsMSgyLEkxLXEpfWZ1bmN0aW9uIFEoWSl7cmV0dXJuIFlbM108PDI0fFlbMl08PDE2fFlbMV08PDh8WVswXX1mdW5jdGlv''@;'; put 'put ''biBzMShZKXtyZXR1cm5bMjU1JlldfWZ1bmN0aW9uIG0xKFkpe3JldHVyblsyNTUmWSxZPj44JjI1NV19ZnVuY3Rpb24gYjEoWSl7cmV0dXJuWzI1NSZZLFk+PjgmMjU1LFk+PjE2JjI1NSxZPj4yNCYyNTVdfWZ1bmN0aW9uIEIxKFkpe3JldHVybiBWMShZLDUyLDgpfWZ1bmN0aW9uICQoWSl7''@;'; put 'put ''cmV0dXJuIFYxKFksMjMsNCl9ZnVuY3Rpb24geihZLHEsSil7VihZW3hdLHEse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW0pdfX0pfWZ1bmN0aW9uIHkoWSxxLEosQTEpe3ZhciBOMT1IKCtKKTtpZihZW2pdPE4xK3EpdGhyb3cgVyhFKTt2YXIgUzE9TjErWVtjMV0sbjE9WVtFMV0uX2Iu''@;'; put 'put ''c2xpY2UoUzEsUzErcSk7cmV0dXJuIEExP24xOm4xLnJldmVyc2UoKX1mdW5jdGlvbiBEKFkscSxKLEExLE4xLFMxKXt2YXIgbjE9SCgrSik7aWYoWVtqXTxuMStxKXRocm93IFcoRSk7Zm9yKHZhciBpMT1ZW0UxXS5fYixmMT1uMStZW2MxXSx4MT1BMSgrTjEpLEkxPTA7STE8cTtJMSsrKWkx''@;'; put 'put ''W2YxK0kxXT14MVtTMT9JMTpxLUkxLTFdfWlmKG8uQUJWKXtpZighZyhmdW5jdGlvbigpe3coMSl9KXx8IWcoZnVuY3Rpb24oKXtuZXcgdygtMSl9KXx8ZyhmdW5jdGlvbigpe3JldHVybiBuZXcgdyxuZXcgdygxLjUpLG5ldyB3KE5hTiksdy5uYW1lIT1ifSkpe2Zvcih2YXIgWixUPSh3PWZ1''@;'; put 'put ''bmN0aW9uKHEpe3JldHVybiB1KHRoaXMsdyksbmV3IEIoSChxKSl9KVt4XT1CW3hdLFA9QyhCKSxlMT0wO2UxPFAubGVuZ3RoOykoWj1QW2UxKytdKWluIHd8fGgodyxaLEJbWl0pO2N8fChULmNvbnN0cnVjdG9yPXcpfXZhciByMT1uZXcgTihuZXcgdygyKSksWjE9Tlt4XS5zZXRJbnQ4O3Ix''@;'; put 'put ''LnNldEludDgoMCwyMTQ3NDgzNjQ4KSxyMS5zZXRJbnQ4KDEsMjE0NzQ4MzY0OSksIXIxLmdldEludDgoMCkmJnIxLmdldEludDgoMSl8fGYoTlt4XSx7c2V0SW50ODpmdW5jdGlvbihxLEope1oxLmNhbGwodGhpcyxxLEo8PDI0Pj4yNCl9LHNldFVpbnQ4OmZ1bmN0aW9uKHEsSil7WjEuY2Fs''@;'; put 'put ''bCh0aGlzLHEsSjw8MjQ+PjI0KX19LCEwKX1lbHNlIHc9ZnVuY3Rpb24ocSl7dSh0aGlzLHcsYik7dmFyIEo9SChxKTt0aGlzLl9iPVMuY2FsbChuZXcgQXJyYXkoSiksMCksdGhpc1tqXT1KfSxOPWZ1bmN0aW9uKHEsSixBMSl7dSh0aGlzLE4sTSksdShxLHcsTSk7dmFyIE4xPXFbal0sUzE9''@;'; put 'put ''cChKKTtpZihTMTwwfHxOMTxTMSl0aHJvdyBXKCJXcm9uZyBvZmZzZXQhIik7aWYoTjE8UzErKEExPUExPT09az9OMS1TMTp2KEExKSkpdGhyb3cgVygiV3JvbmcgbGVuZ3RoISIpO3RoaXNbRTFdPXEsdGhpc1tjMV09UzEsdGhpc1tqXT1BMX0sYSYmKHoodyxwMSwiX2wiKSx6KE4sImJ1ZmZl''@;'; put 'put ''ciIsIl9iIikseihOLHAxLCJfbCIpLHooTix2MSwiX28iKSksZihOW3hdLHtnZXRJbnQ4OmZ1bmN0aW9uKHEpe3JldHVybiB5KHRoaXMsMSxxKVswXTw8MjQ+PjI0fSxnZXRVaW50ODpmdW5jdGlvbihxKXtyZXR1cm4geSh0aGlzLDEscSlbMF19LGdldEludDE2OmZ1bmN0aW9uKHEpe3ZhciBK''@;'; put 'put ''PXkodGhpcywyLHEsYXJndW1lbnRzWzFdKTtyZXR1cm4oSlsxXTw8OHxKWzBdKTw8MTY+PjE2fSxnZXRVaW50MTY6ZnVuY3Rpb24ocSl7dmFyIEo9eSh0aGlzLDIscSxhcmd1bWVudHNbMV0pO3JldHVybiBKWzFdPDw4fEpbMF19LGdldEludDMyOmZ1bmN0aW9uKHEpe3JldHVybiBRKHkodGhp''@;'; put 'put ''cyw0LHEsYXJndW1lbnRzWzFdKSl9LGdldFVpbnQzMjpmdW5jdGlvbihxKXtyZXR1cm4gUSh5KHRoaXMsNCxxLGFyZ3VtZW50c1sxXSkpPj4+MH0sZ2V0RmxvYXQzMjpmdW5jdGlvbihxKXtyZXR1cm4gXzEoeSh0aGlzLDQscSxhcmd1bWVudHNbMV0pLDIzLDQpfSxnZXRGbG9hdDY0OmZ1bmN0''@;'; put 'put ''aW9uKHEpe3JldHVybiBfMSh5KHRoaXMsOCxxLGFyZ3VtZW50c1sxXSksNTIsOCl9LHNldEludDg6ZnVuY3Rpb24ocSxKKXtEKHRoaXMsMSxxLHMxLEopfSxzZXRVaW50ODpmdW5jdGlvbihxLEope0QodGhpcywxLHEsczEsSil9LHNldEludDE2OmZ1bmN0aW9uKHEsSil7RCh0aGlzLDIscSxt''@;'; put 'put ''MSxKLGFyZ3VtZW50c1syXSl9LHNldFVpbnQxNjpmdW5jdGlvbihxLEope0QodGhpcywyLHEsbTEsSixhcmd1bWVudHNbMl0pfSxzZXRJbnQzMjpmdW5jdGlvbihxLEope0QodGhpcyw0LHEsYjEsSixhcmd1bWVudHNbMl0pfSxzZXRVaW50MzI6ZnVuY3Rpb24ocSxKKXtEKHRoaXMsNCxxLGIx''@;'; put 'put ''LEosYXJndW1lbnRzWzJdKX0sc2V0RmxvYXQzMjpmdW5jdGlvbihxLEope0QodGhpcyw0LHEsJCxKLGFyZ3VtZW50c1syXSl9LHNldEZsb2F0NjQ6ZnVuY3Rpb24ocSxKKXtEKHRoaXMsOCxxLEIxLEosYXJndW1lbnRzWzJdKX19KTtfKHcsYiksXyhOLE0pLGgoTlt4XSxvLlZJRVcsITApLGVb''@;'; put 'put ''Yl09dyxlW01dPU59LGZ1bmN0aW9uKEEsZSxsKXtBLmV4cG9ydHM9IWwoNykmJiFsKDMpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShsKDY2KSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKEEsZSxsKXtlLmY9''@;'; put 'put ''bCg1KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMTQpLGE9bCgxNSksYz1sKDUyKSghMSksbz1sKDY4KSgiSUVfUFJPVE8iKTtBLmV4cG9ydHM9ZnVuY3Rpb24oaCxmKXt2YXIgZyx1PWEoaCkscD0wLHY9W107Zm9yKGcgaW4gdSlnIT1vJiZyKHUsZykmJnYucHVzaChnKTtmb3IoO3A8Zi5s''@;'; put 'put ''ZW5ndGg7KXIodSxnPWZbcCsrXSkmJih+Yyh2LGcpfHx2LnB1c2goZykpO3JldHVybiB2fX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoOCksYT1sKDEpLGM9bCgzNCk7QS5leHBvcnRzPWwoNyk/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24oaCxmKXthKGgpO2Zvcih2YXIgZyx1''@;'; put 'put ''PWMoZikscD11Lmxlbmd0aCx2PTA7djxwOylyLmYoaCxnPXVbdisrXSxmW2ddKTtyZXR1cm4gaH19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDE1KSxhPWwoMzcpLmYsYz17fS50b1N0cmluZyxvPSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cmJk9iamVjdC5nZXRPd25Qcm9wZXJ0''@;'; put 'put ''eU5hbWVzP09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdyk6W107QS5leHBvcnRzLmY9ZnVuY3Rpb24oZil7cmV0dXJuIG8mJiJbb2JqZWN0IFdpbmRvd10iPT1jLmNhbGwoZik/ZnVuY3Rpb24oZyl7dHJ5e3JldHVybiBhKGcpfWNhdGNoKHUpe3JldHVybiBvLnNsaWNlKCl9fShm''@;'; put 'put ''KTphKHIoZikpfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNyksYT1sKDM0KSxjPWwoNTMpLG89bCg0OSksaD1sKDkpLGY9bCg0OCksZz1PYmplY3QuYXNzaWduO0EuZXhwb3J0cz0hZ3x8bCgzKShmdW5jdGlvbigpe3ZhciB1PXt9LHA9e30sdj1TeW1ib2woKSxIPSJhYmNkZWZnaGlqa2xt''@;'; put 'put ''bm9wcXJzdCI7cmV0dXJuIHVbdl09NyxILnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKEMpe3BbQ109Q30pLDchPWcoe30sdSlbdl18fE9iamVjdC5rZXlzKGcoe30scCkpLmpvaW4oIiIpIT1IfSk/ZnVuY3Rpb24ocCx2KXtmb3IodmFyIEg9aChwKSxDPWFyZ3VtZW50cy5sZW5ndGgsVj0x''@;'; put 'put ''LFM9Yy5mLF89by5mO1Y8QzspZm9yKHZhciBiLE09Zihhcmd1bWVudHNbVisrXSkseD1TP2EoTSkuY29uY2F0KFMoTSkpOmEoTSksRT14Lmxlbmd0aCx3PTA7dzxFOyliPXhbdysrXSxyJiYhXy5jYWxsKE0sYil8fChIW2JdPU1bYl0pO3JldHVybiBIfTpnfSxmdW5jdGlvbihBLGUpe0EuZXhw''@;'; put 'put ''b3J0cz1PYmplY3QuaXN8fGZ1bmN0aW9uKHIsYSl7cmV0dXJuIHI9PT1hPzAhPT1yfHwxL3I9PTEvYTpyIT1yJiZhIT1hfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMTApLGE9bCg0KSxjPWwoMTAxKSxvPVtdLnNsaWNlLGg9e307QS5leHBvcnRzPUZ1bmN0aW9uLmJpbmR8fGZ1bmN0aW9u''@;'; put 'put ''KGcpe3ZhciB1PXIodGhpcykscD1vLmNhbGwoYXJndW1lbnRzLDEpLHY9ZnVuY3Rpb24oKXt2YXIgSD1wLmNvbmNhdChvLmNhbGwoYXJndW1lbnRzKSk7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiB2P2Z1bmN0aW9uKEMsVixTKXtpZighKFYgaW4gaCkpe2Zvcih2YXIgXz1bXSxiPTA7YjxWO2Ir''@;'; put 'put ''KylfW2JdPSJhWyIrYisiXSI7aFtWXT1GdW5jdGlvbigiRixhIiwicmV0dXJuIG5ldyBGKCIrXy5qb2luKCIsIikrIikiKX1yZXR1cm4gaFtWXShDLFMpfSh1LEgubGVuZ3RoLEgpOmModSxILGcpfTtyZXR1cm4gYSh1LnByb3RvdHlwZSkmJih2LnByb3RvdHlwZT11LnByb3RvdHlwZSksdn19''@;'; put 'put ''LGZ1bmN0aW9uKEEsZSl7QS5leHBvcnRzPWZ1bmN0aW9uKGwscixhKXt2YXIgYz1hPT09aztzd2l0Y2goci5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gYz9sKCk6bC5jYWxsKGEpO2Nhc2UgMTpyZXR1cm4gYz9sKHJbMF0pOmwuY2FsbChhLHJbMF0pO2Nhc2UgMjpyZXR1cm4gYz9sKHJbMF0sclsx''@;'; put 'put ''XSk6bC5jYWxsKGEsclswXSxyWzFdKTtjYXNlIDM6cmV0dXJuIGM/bChyWzBdLHJbMV0sclsyXSk6bC5jYWxsKGEsclswXSxyWzFdLHJbMl0pO2Nhc2UgNDpyZXR1cm4gYz9sKHJbMF0sclsxXSxyWzJdLHJbM10pOmwuY2FsbChhLHJbMF0sclsxXSxyWzJdLHJbM10pfXJldHVybiBsLmFwcGx5''@;'; put 'put ''KGEscil9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxOSk7QS5leHBvcnRzPWZ1bmN0aW9uKGEsYyl7aWYoIm51bWJlciIhPXR5cGVvZiBhJiYiTnVtYmVyIiE9cihhKSl0aHJvdyBUeXBlRXJyb3IoYyk7cmV0dXJuK2F9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg0KSxhPU1hdGguZmxv''@;'; put 'put ''b3I7QS5leHBvcnRzPWZ1bmN0aW9uKG8pe3JldHVybiFyKG8pJiZpc0Zpbml0ZShvKSYmYShvKT09PW99fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyKS5wYXJzZUZsb2F0LGE9bCg0NSkudHJpbTtBLmV4cG9ydHM9MS9yKGwoNzMpKyItMCIpIT0tMS8wP2Z1bmN0aW9uKG8pe3ZhciBoPWEo''@;'; put 'put ''U3RyaW5nKG8pLDMpLGY9cihoKTtyZXR1cm4gMD09PWYmJiItIj09aC5jaGFyQXQoMCk/LTA6Zn06cn0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMikucGFyc2VJbnQsYT1sKDQ1KS50cmltLGM9bCg3Myksbz0vXlstK10/MFt4WF0vO0EuZXhwb3J0cz04IT09cihjKyIwOCIpfHwyMiE9PXIo''@;'; put 'put ''YysiMHgxNiIpP2Z1bmN0aW9uKGYsZyl7dmFyIHU9YShTdHJpbmcoZiksMyk7cmV0dXJuIHIodSxnPj4+MHx8KG8udGVzdCh1KT8xNjoxMCkpfTpyfSxmdW5jdGlvbihBLGUpe0EuZXhwb3J0cz1NYXRoLmxvZzFwfHxmdW5jdGlvbihyKXtyZXR1cm4tMWUtODwocj0rcikmJnI8MWUtOD9yLXIq''@;'; put 'put ''ci8yOk1hdGgubG9nKDErcil9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg3NSksYT1NYXRoLnBvdyxjPWEoMiwtNTIpLG89YSgyLC0yMyksaD1hKDIsMTI3KSooMi1vKSxmPWEoMiwtMTI2KTtBLmV4cG9ydHM9TWF0aC5mcm91bmR8fGZ1bmN0aW9uKHUpe3ZhciBwLHYsSD1NYXRoLmFicyh1''@;'; put 'put ''KSxDPXIodSk7cmV0dXJuIEg8Zj9DKihIL2YvbysxL2MtMS9jKSpmKm86aDwodj0ocD0oMStvL2MpKkgpLShwLUgpKXx8diE9dj9DKigxLzApOkMqdn19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDEpO0EuZXhwb3J0cz1mdW5jdGlvbihhLGMsbyxoKXt0cnl7cmV0dXJuIGg/YyhyKG8pWzBd''@;'; put 'put ''LG9bMV0pOmMobyl9Y2F0Y2goZyl7dmFyIGY9YS5yZXR1cm47dGhyb3cgZiE9PWsmJnIoZi5jYWxsKGEpKSxnfX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDEwKSxhPWwoOSksYz1sKDQ4KSxvPWwoNik7QS5leHBvcnRzPWZ1bmN0aW9uKGgsZixnLHUscCl7cihmKTt2YXIgdj1hKGgpLEg9''@;'; put 'put ''Yyh2KSxDPW8odi5sZW5ndGgpLFY9cD9DLTE6MCxTPXA/LTE6MTtpZihnPDIpZm9yKDs7KXtpZihWIGluIEgpe3U9SFtWXSxWKz1TO2JyZWFrfWlmKFYrPVMscD9WPDA6Qzw9Vil0aHJvdyBUeXBlRXJyb3IoIlJlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKX1m''@;'; put 'put ''b3IoO3A/MDw9VjpWPEM7Vis9UylWIGluIEgmJih1PWYodSxIW1ZdLFYsdikpO3JldHVybiB1fX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoOSksYT1sKDM1KSxjPWwoNik7QS5leHBvcnRzPVtdLmNvcHlXaXRoaW58fGZ1bmN0aW9uKGgsZil7dmFyIGc9cih0aGlzKSx1PWMoZy5sZW5ndGgp''@;'; put 'put ''LHA9YShoLHUpLHY9YShmLHUpLEg9Mjxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1syXTprLEM9TWF0aC5taW4oKEg9PT1rP3U6YShILHUpKS12LHUtcCksVj0xO2Zvcih2PHAmJnA8ditDJiYoVj0tMSx2Kz1DLTEscCs9Qy0xKTswPEMtLTspdiBpbiBnP2dbcF09Z1t2XTpkZWxldGUgZ1tw''@;'; put 'put ''XSxwKz1WLHYrPVY7cmV0dXJuIGd9fSxmdW5jdGlvbihBLGUpe0EuZXhwb3J0cz1mdW5jdGlvbihsLHIpe3JldHVybnt2YWx1ZTpyLGRvbmU6ISFsfX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDg3KTtsKDApKHt0YXJnZXQ6IlJlZ0V4cCIscHJvdG86ITAsZm9yY2VkOnIhPT0vLi8uZXhl''@;'; put 'put ''Y30se2V4ZWM6cn0pfSxmdW5jdGlvbihBLGUsbCl7bCg3KSYmImciIT0vLi9nLmZsYWdzJiZsKDgpLmYoUmVnRXhwLnByb3RvdHlwZSwiZmxhZ3MiLHtjb25maWd1cmFibGU6ITAsZ2V0OmwoNTApfSl9LGZ1bmN0aW9uKEEsZSl7QS5leHBvcnRzPWZ1bmN0aW9uKGwpe3RyeXtyZXR1cm57ZToh''@;'; put 'put ''MSx2OmwoKX19Y2F0Y2gocil7cmV0dXJue2U6ITAsdjpyfX19fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxKSxhPWwoNCksYz1sKDkxKTtBLmV4cG9ydHM9ZnVuY3Rpb24obyxoKXtpZihyKG8pLGEoaCkmJmguY29uc3RydWN0b3I9PT1vKXJldHVybiBoO3ZhciBmPWMuZihvKTtyZXR1cm4o''@;'; put 'put ''MCxmLnJlc29sdmUpKGgpLGYucHJvbWlzZX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDExNyksYT1sKDQyKTtBLmV4cG9ydHM9bCg2MSkoIk1hcCIsZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGModGhpcywwPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOmsp''@;'; put 'put ''fX0se2dldDpmdW5jdGlvbihvKXt2YXIgaD1yLmdldEVudHJ5KGEodGhpcywiTWFwIiksbyk7cmV0dXJuIGgmJmgudn0sc2V0OmZ1bmN0aW9uKG8saCl7cmV0dXJuIHIuZGVmKGEodGhpcywiTWFwIiksMD09PW8/MDpvLGgpfX0sciwhMCl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDgpLmYs''@;'; put 'put ''YT1sKDM2KSxjPWwoNDEpLG89bCgxOCksaD1sKDM5KSxmPWwoNDApLGc9bCg3OSksdT1sKDExMSkscD1sKDM4KSx2PWwoNyksSD1sKDMwKS5mYXN0S2V5LEM9bCg0MiksVj12PyJfcyI6InNpemUiLFM9ZnVuY3Rpb24oXyxiKXt2YXIgTSx4PUgoYik7aWYoIkYiIT09eClyZXR1cm4gXy5faVt4''@;'; put 'put ''XTtmb3IoTT1fLl9mO007TT1NLm4paWYoTS5rPT1iKXJldHVybiBNfTtBLmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKF8sYixNLHgpe3ZhciBFPV8oZnVuY3Rpb24odyxOKXtoKHcsRSxiLCJfaSIpLHcuX3Q9Yix3Ll9pPWEobnVsbCksdy5fZj1rLHcuX2w9ayx3W1ZdPTAsTiE9''@;'; put 'put ''ayYmZihOLE0sd1t4XSx3KX0pO3JldHVybiBjKEUucHJvdG90eXBlLHtjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgTj1DKHRoaXMsYiksST1OLl9pLFc9Ti5fZjtXO1c9Vy5uKVcucj0hMCxXLnAmJihXLnA9Vy5wLm49ayksZGVsZXRlIElbVy5pXTtOLl9mPU4uX2w9ayxOW1ZdPTB9LGRlbGV0''@;'; put 'put ''ZTpmdW5jdGlvbih3KXt2YXIgTj1DKHRoaXMsYiksST1TKE4sdyk7aWYoSSl7dmFyIFc9SS5uLE89SS5wO2RlbGV0ZSBOLl9pW0kuaV0sSS5yPSEwLE8mJihPLm49VyksVyYmKFcucD1PKSxOLl9mPT1JJiYoTi5fZj1XKSxOLl9sPT1JJiYoTi5fbD1PKSxOW1ZdLS19cmV0dXJuISFJfSxmb3JF''@;'; put 'put ''YWNoOmZ1bmN0aW9uKE4pe0ModGhpcyxiKTtmb3IodmFyIEksVz1vKE4sMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTprLDMpO0k9ST9JLm46dGhpcy5fZjspZm9yKFcoSS52LEkuayx0aGlzKTtJJiZJLnI7KUk9SS5wfSxoYXM6ZnVuY3Rpb24oTil7cmV0dXJuISFTKEModGhpcyxi''@;'; put 'put ''KSxOKX19KSx2JiZyKEUucHJvdG90eXBlLCJzaXplIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEModGhpcyxiKVtWXX19KSxFfSxkZWY6ZnVuY3Rpb24oXyxiLE0pe3ZhciB4LEUsdz1TKF8sYik7cmV0dXJuIHc/dy52PU06KF8uX2w9dz17aTpFPUgoYiwhMCksazpiLHY6TSxwOng9Xy5fbCxu''@;'; put 'put ''OmsscjohMX0sXy5fZnx8KF8uX2Y9dykseCYmKHgubj13KSxfW1ZdKyssIkYiIT09RSYmKF8uX2lbRV09dykpLF99LGdldEVudHJ5OlMsc2V0U3Ryb25nOmZ1bmN0aW9uKF8sYixNKXtnKF8sYixmdW5jdGlvbih4LEUpe3RoaXMuX3Q9Qyh4LGIpLHRoaXMuX2s9RSx0aGlzLl9sPWt9LGZ1bmN0''@;'; put 'put ''aW9uKCl7Zm9yKHZhciB4PXRoaXMsRT14Ll9rLHc9eC5fbDt3JiZ3LnI7KXc9dy5wO3JldHVybiB4Ll90JiYoeC5fbD13PXc/dy5uOnguX3QuX2YpP3UoMCwia2V5cyI9PUU/dy5rOiJ2YWx1ZXMiPT1FP3cudjpbdy5rLHcudl0pOih4Ll90PWssdSgxKSl9LE0/ImVudHJpZXMiOiJ2YWx1ZXMi''@;'; put 'put ''LCFNLCEwKSxwKGIpfX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDExNyksYT1sKDQyKTtBLmV4cG9ydHM9bCg2MSkoIlNldCIsZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGModGhpcywwPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOmspfX0se2FkZDpmdW5j''@;'; put 'put ''dGlvbihvKXtyZXR1cm4gci5kZWYoYSh0aGlzLCJTZXQiKSxvPTA9PT1vPzA6byxvKX19LHIpfSxmdW5jdGlvbihBLGUsbCl7dmFyIHIsYT1sKDIpLGM9bCgyNSkoMCksbz1sKDEyKSxoPWwoMzApLGY9bCg5OCksZz1sKDEyMCksdT1sKDQpLHA9bCg0Miksdj1sKDQyKSxIPSFhLkFjdGl2ZVhP''@;'; put 'put ''YmplY3QmJiJBY3RpdmVYT2JqZWN0ImluIGEsQz0iV2Vha01hcCIsVj1oLmdldFdlYWssUz1PYmplY3QuaXNFeHRlbnNpYmxlLF89Zy51ZnN0b3JlLGI9ZnVuY3Rpb24oRSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcywwPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOmsp''@;'; put 'put ''fX0sTT17Z2V0OmZ1bmN0aW9uKHcpe2lmKHUodykpe3ZhciBOPVYodyk7cmV0dXJuITA9PT1OP18ocCh0aGlzLEMpKS5nZXQodyk6Tj9OW3RoaXMuX2ldOmt9fSxzZXQ6ZnVuY3Rpb24odyxOKXtyZXR1cm4gZy5kZWYocCh0aGlzLEMpLHcsTil9fSx4PUEuZXhwb3J0cz1sKDYxKShDLGIsTSxn''@;'; put 'put ''LCEwLCEwKTt2JiZIJiYoZigocj1nLmdldENvbnN0cnVjdG9yKGIsQykpLnByb3RvdHlwZSxNKSxoLk5FRUQ9ITAsYyhbImRlbGV0ZSIsImhhcyIsImdldCIsInNldCJdLGZ1bmN0aW9uKEUpe3ZhciB3PXgucHJvdG90eXBlLE49d1tFXTtvKHcsRSxmdW5jdGlvbihJLFcpe2lmKHUoSSkmJiFT''@;'; put 'put ''KEkpKXt0aGlzLl9mfHwodGhpcy5fZj1uZXcgcik7dmFyIE89dGhpcy5fZltFXShJLFcpO3JldHVybiJzZXQiPT1FP3RoaXM6T31yZXR1cm4gTi5jYWxsKHRoaXMsSSxXKX0pfSkpfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg0MSksYT1sKDMwKS5nZXRXZWFrLGM9bCgxKSxvPWwoNCksaD1s''@;'; put 'put ''KDM5KSxmPWwoNDApLGc9bCgyNSksdT1sKDE0KSxwPWwoNDIpLHY9Zyg1KSxIPWcoNiksQz0wLFY9ZnVuY3Rpb24oYil7cmV0dXJuIGIuX2x8fChiLl9sPW5ldyBTKX0sUz1mdW5jdGlvbigpe3RoaXMuYT1bXX0sXz1mdW5jdGlvbihiLE0pe3JldHVybiB2KGIuYSxmdW5jdGlvbih4KXtyZXR1''@;'; put 'put ''cm4geFswXT09PU19KX07Uy5wcm90b3R5cGU9e2dldDpmdW5jdGlvbihiKXt2YXIgTT1fKHRoaXMsYik7aWYoTSlyZXR1cm4gTVsxXX0saGFzOmZ1bmN0aW9uKGIpe3JldHVybiEhXyh0aGlzLGIpfSxzZXQ6ZnVuY3Rpb24oYixNKXt2YXIgeD1fKHRoaXMsYik7eD94WzFdPU06dGhpcy5hLnB1''@;'; put 'put ''c2goW2IsTV0pfSxkZWxldGU6ZnVuY3Rpb24oYil7dmFyIE09SCh0aGlzLmEsZnVuY3Rpb24oeCl7cmV0dXJuIHhbMF09PT1ifSk7cmV0dXJufk0mJnRoaXMuYS5zcGxpY2UoTSwxKSwhIX5NfX0sQS5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbihiLE0seCxFKXt2YXIgdz1iKGZ1''@;'; put 'put ''bmN0aW9uKE4sSSl7aChOLHcsTSwiX2kiKSxOLl90PU0sTi5faT1DKyssSSE9KE4uX2w9aykmJmYoSSx4LE5bRV0sTil9KTtyZXR1cm4gcih3LnByb3RvdHlwZSx7ZGVsZXRlOmZ1bmN0aW9uKE4pe2lmKCFvKE4pKXJldHVybiExO3ZhciBJPWEoTik7cmV0dXJuITA9PT1JP1YocCh0aGlzLE0p''@;'; put 'put ''KS5kZWxldGUoTik6SSYmdShJLHRoaXMuX2kpJiZkZWxldGUgSVt0aGlzLl9pXX0saGFzOmZ1bmN0aW9uKEkpe2lmKCFvKEkpKXJldHVybiExO3ZhciBXPWEoSSk7cmV0dXJuITA9PT1XP1YocCh0aGlzLE0pKS5oYXMoSSk6VyYmdShXLHRoaXMuX2kpfX0pLHd9LGRlZjpmdW5jdGlvbihiLE0s''@;'; put 'put ''eCl7dmFyIEU9YShjKE0pLCEwKTtyZXR1cm4hMD09PUU/VihiKS5zZXQoTSx4KTpFW2IuX2ldPXgsYn0sdWZzdG9yZTpWfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMzcpLGE9bCg1MyksYz1sKDEpLG89bCgyKS5SZWZsZWN0O0EuZXhwb3J0cz1vJiZvLm93bktleXN8fGZ1bmN0aW9uKGYp''@;'; put 'put ''e3ZhciBnPXIuZihjKGYpKSx1PWEuZjtyZXR1cm4gdT9nLmNvbmNhdCh1KGYpKTpnfX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMjApLGE9bCg2KTtBLmV4cG9ydHM9ZnVuY3Rpb24oYyl7aWYoYz09PWspcmV0dXJuIDA7dmFyIG89cihjKSxoPWEobyk7aWYobyE9PWgpdGhyb3cgUmFuZ2VF''@;'; put 'put ''cnJvcigiV3JvbmcgbGVuZ3RoISIpO3JldHVybiBofX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNTQpLGE9bCg0KSxjPWwoNiksbz1sKDE4KSxoPWwoNSkoImlzQ29uY2F0U3ByZWFkYWJsZSIpO0EuZXhwb3J0cz1mdW5jdGlvbiBmKGcsdSxwLHYsSCxDLFYsUyl7Zm9yKHZhciBfLGIsTT1I''@;'; put 'put ''LHg9MCxFPSEhViYmbyhWLFMsMyk7eDx2Oyl7aWYoeCBpbiBwKXtpZihfPUU/RShwW3hdLHgsdSk6cFt4XSxiPSExLGEoXykmJihiPShiPV9baF0pIT09az8hIWI6cihfKSksYiYmMDxDKU09ZihnLHUsXyxjKF8ubGVuZ3RoKSxNLEMtMSktMTtlbHNle2lmKDkwMDcxOTkyNTQ3NDA5OTE8PU0p''@;'; put 'put ''dGhyb3cgVHlwZUVycm9yKCk7Z1tNXT1ffU0rK314Kyt9cmV0dXJuIE19fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg2KSxhPWwoNzQpLGM9bCgyMyk7QS5leHBvcnRzPWZ1bmN0aW9uKG8saCxmLGcpe3ZhciB1PVN0cmluZyhjKG8pKSxwPXUubGVuZ3RoLHY9Zj09PWs/IiAiOlN0cmluZyhm''@;'; put 'put ''KSxIPXIoaCk7aWYoSDw9cHx8IiI9PXYpcmV0dXJuIHU7dmFyIEM9SC1wLFY9YS5jYWxsKHYsTWF0aC5jZWlsKEMvdi5sZW5ndGgpKTtyZXR1cm4gQzxWLmxlbmd0aCYmKFY9Vi5zbGljZSgwLEMpKSxnP1YrdTp1K1Z9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg3KSxhPWwoMzQpLGM9bCgx''@;'; put 'put ''NSksbz1sKDQ5KS5mO0EuZXhwb3J0cz1mdW5jdGlvbihoKXtyZXR1cm4gZnVuY3Rpb24oZil7Zm9yKHZhciBnLHU9YyhmKSxwPWEodSksdj1wLmxlbmd0aCxIPTAsQz1bXTtIPHY7KWc9cFtIKytdLHImJiFvLmNhbGwodSxnKXx8Qy5wdXNoKGg/W2csdVtnXV06dVtnXSk7cmV0dXJuIEN9fX0s''@;'; put 'put ''ZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNDQpLGE9bCgxMjcpO0EuZXhwb3J0cz1mdW5jdGlvbihjKXtyZXR1cm4gZnVuY3Rpb24oKXtpZihyKHRoaXMpIT1jKXRocm93IFR5cGVFcnJvcihjKyIjdG9KU09OIGlzbid0IGdlbmVyaWMiKTtyZXR1cm4gYSh0aGlzKX19fSxmdW5jdGlvbihBLGUs''@;'; put 'put ''bCl7dmFyIHI9bCg0MCk7QS5leHBvcnRzPWZ1bmN0aW9uKGEsYyl7dmFyIG89W107cmV0dXJuIHIoYSwhMSxvLnB1c2gsbyxjKSxvfX0sZnVuY3Rpb24oQSxlKXtBLmV4cG9ydHM9TWF0aC5zY2FsZXx8ZnVuY3Rpb24ocixhLGMsbyxoKXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGh8fHIh''@;'; put 'put ''PXJ8fGEhPWF8fGMhPWN8fG8hPW98fGghPWg/TmFOOnI9PT0xLzB8fHI9PT0tMS8wP3I6KHItYSkqKGgtbykvKGMtYSkrb319LGZ1bmN0aW9uKEEsZSxsKXtsKDEzMCksbCgxMzMpLGwoMTM0KSxsKDEzNSksbCgxMzYpLGwoMTM3KSxsKDEzOCksbCgxMzkpLGwoMTQwKSxsKDE0MSksbCgxNDIp''@;'; put 'put ''LGwoMTQzKSxsKDE0NCksbCgxNDUpLGwoMTQ2KSxsKDE0NyksbCgxNDgpLGwoMTQ5KSxsKDE1MCksbCgxNTEpLGwoMTUyKSxsKDE1MyksbCgxNTQpLGwoMTU1KSxsKDE1NiksbCgxNTcpLGwoMTU4KSxsKDE1OSksbCgxNjApLGwoMTYxKSxsKDE2MiksbCgxNjMpLGwoMTY0KSxsKDE2NSksbCgx''@;'; put 'put ''NjYpLGwoMTY3KSxsKDE2OCksbCgxNjkpLGwoMTcwKSxsKDE3MSksbCgxNzIpLGwoMTczKSxsKDE3NCksbCgxNzUpLGwoMTc2KSxsKDE3NyksbCgxNzgpLGwoMTc5KSxsKDE4MCksbCgxODEpLGwoMTgyKSxsKDE4MyksbCgxODQpLGwoMTg1KSxsKDE4NiksbCgxODcpLGwoMTg4KSxsKDE4OSks''@;'; put 'put ''bCgxOTApLGwoMTkxKSxsKDE5MiksbCgxOTMpLGwoMTk0KSxsKDE5NSksbCgxOTYpLGwoMTk3KSxsKDE5OCksbCgxOTkpLGwoMjAwKSxsKDIwMSksbCgyMDIpLGwoMjAzKSxsKDIwNCksbCgyMDUpLGwoMjA2KSxsKDIwNyksbCgyMDgpLGwoMjA5KSxsKDIxMCksbCgyMTEpLGwoMjEyKSxsKDIx''@;'; put 'put ''NCksbCgyMTUpLGwoMjE2KSxsKDIxNyksbCgyMTgpLGwoMjE5KSxsKDIyMCksbCgyMjEpLGwoMjIyKSxsKDIyMyksbCgyMjQpLGwoMjI1KSxsKDg2KSxsKDIyNiksbCgyMjcpLGwoMTEyKSxsKDIyOCksbCgxMTMpLGwoMjI5KSxsKDIzMCksbCgyMzEpLGwoMjMyKSxsKDIzMyksbCgxMTYpLGwo''@;'; put 'put ''MTE4KSxsKDExOSksbCgyMzQpLGwoMjM1KSxsKDIzNiksbCgyMzcpLGwoMjM4KSxsKDIzOSksbCgyNDApLGwoMjQxKSxsKDI0MiksbCgyNDMpLGwoMjQ0KSxsKDI0NSksbCgyNDYpLGwoMjQ3KSxsKDI0OCksbCgyNDkpLGwoMjUwKSxsKDI1MSksbCgyNTMpLGwoMjU0KSxsKDI1NiksbCgyNTcp''@;'; put 'put ''LGwoMjU4KSxsKDI1OSksbCgyNjApLGwoMjYxKSxsKDI2MiksbCgyNjMpLGwoMjY0KSxsKDI2NSksbCgyNjYpLGwoMjY3KSxsKDI2OCksbCgyNjkpLGwoMjcwKSxsKDI3MSksbCgyNzIpLGwoMjczKSxsKDI3NCksbCgyNzUpLGwoMjc2KSxsKDI3NyksbCgyNzgpLGwoMjc5KSxsKDI4MCksbCgy''@;'; put 'put ''ODEpLGwoMjgyKSxsKDI4MyksbCgyODQpLGwoMjg1KSxsKDI4NiksbCgyODcpLGwoMjg4KSxsKDI4OSksbCgyOTApLGwoMjkxKSxsKDI5MiksbCgyOTMpLGwoMjk0KSxsKDI5NSksbCgyOTYpLGwoMjk3KSxsKDI5OCksbCgyOTkpLGwoMzAwKSxsKDMwMSksbCgzMDIpLGwoMzAzKSxsKDMwNCks''@;'; put 'put ''bCgzMDUpLGwoMzA2KSxsKDMwNyksbCgzMDgpLGwoMzA5KSxsKDMxMCksbCgzMTEpLGwoMzEyKSxsKDMxMyksbCgzMTQpLGwoMzE1KSxsKDMxNiksbCgzMTcpLGwoMzE4KSxsKDMxOSksbCgzMjApLGwoMzIxKSxsKDMyMiksbCgzMjMpLGwoMzI0KSxBLmV4cG9ydHM9bCgzMjUpfSxmdW5jdGlv''@;'; put 'put ''bihBLGUsbCl7dmFyIHI9bCgyKSxhPWwoMTQpLGM9bCg3KSxvPWwoMCksaD1sKDEyKSxmPWwoMzApLktFWSxnPWwoMyksdT1sKDQ3KSxwPWwoNDMpLHY9bCgzMyksSD1sKDUpLEM9bCg5NCksVj1sKDY3KSxTPWwoMTMyKSxfPWwoNTQpLGI9bCgxKSxNPWwoNCkseD1sKDkpLEU9bCgxNSksdz1s''@;'; put 'put ''KDIyKSxOPWwoMzIpLEk9bCgzNiksVz1sKDk3KSxPPWwoMTYpLEI9bCg1MyksUj1sKDgpLGwxPWwoMzQpLGExPU8uZixoMT1SLmYsdTE9Vy5mLHAxPXIuU3ltYm9sLHYxPXIuSlNPTixFMT12MSYmdjEuc3RyaW5naWZ5LGo9InByb3RvdHlwZSIsYzE9SCgiX2hpZGRlbiIpLFYxPUgoInRvUHJp''@;'; put 'put ''bWl0aXZlIiksXzE9e30ucHJvcGVydHlJc0VudW1lcmFibGUsUT11KCJzeW1ib2wtcmVnaXN0cnkiKSxzMT11KCJzeW1ib2xzIiksbTE9dSgib3Atc3ltYm9scyIpLGIxPU9iamVjdFtqXSxCMT0iZnVuY3Rpb24iPT10eXBlb2YgcDEmJiEhQi5mLCQ9ci5RT2JqZWN0LHo9ISR8fCEkW2pdfHwh''@;'; put 'put ''JFtqXS5maW5kQ2hpbGQseT1jJiZnKGZ1bmN0aW9uKCl7cmV0dXJuIDchPUkoaDEoe30sImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaDEodGhpcywiYSIse3ZhbHVlOjd9KS5hfX0pKS5hfSk/ZnVuY3Rpb24objEsaTEsZjEpe3ZhciB4MT1hMShiMSxpMSk7eDEmJmRlbGV0ZSBiMVtpMV0s''@;'; put 'put ''aDEobjEsaTEsZjEpLHgxJiZuMSE9PWIxJiZoMShiMSxpMSx4MSl9OmgxLEQ9ZnVuY3Rpb24objEpe3ZhciBpMT1zMVtuMV09SShwMVtqXSk7cmV0dXJuIGkxLl9rPW4xLGkxfSxaPUIxJiYic3ltYm9sIj09dHlwZW9mIHAxLml0ZXJhdG9yP2Z1bmN0aW9uKG4xKXtyZXR1cm4ic3ltYm9sIj09''@;'; put 'put ''dHlwZW9mIG4xfTpmdW5jdGlvbihuMSl7cmV0dXJuIG4xIGluc3RhbmNlb2YgcDF9LFQ9ZnVuY3Rpb24oaTEsZjEseDEpe3JldHVybiBpMT09PWIxJiZUKG0xLGYxLHgxKSxiKGkxKSxmMT13KGYxLCEwKSxiKHgxKSxhKHMxLGYxKT8oeDEuZW51bWVyYWJsZT8oYShpMSxjMSkmJmkxW2MxXVtm''@;'; put 'put ''MV0mJihpMVtjMV1bZjFdPSExKSx4MT1JKHgxLHtlbnVtZXJhYmxlOk4oMCwhMSl9KSk6KGEoaTEsYzEpfHxoMShpMSxjMSxOKDEse30pKSxpMVtjMV1bZjFdPSEwKSx5KGkxLGYxLHgxKSk6aDEoaTEsZjEseDEpfSxQPWZ1bmN0aW9uKGkxLGYxKXtiKGkxKTtmb3IodmFyIHgxLEkxPVMoZjE9''@;'; put 'put ''RShmMSkpLEoxPTAsdDA9STEubGVuZ3RoO0oxPHQwOylUKGkxLHgxPUkxW0oxKytdLGYxW3gxXSk7cmV0dXJuIGkxfSxlMT1mdW5jdGlvbihpMSl7dmFyIGYxPV8xLmNhbGwodGhpcyxpMT13KGkxLCEwKSk7cmV0dXJuISh0aGlzPT09YjEmJmEoczEsaTEpJiYhYShtMSxpMSkpJiYoIShmMXx8''@;'; put 'put ''IWEodGhpcyxpMSl8fCFhKHMxLGkxKXx8YSh0aGlzLGMxKSYmdGhpc1tjMV1baTFdKXx8ZjEpfSxyMT1mdW5jdGlvbihpMSxmMSl7aWYoaTE9RShpMSksZjE9dyhmMSwhMCksaTEhPT1iMXx8IWEoczEsZjEpfHxhKG0xLGYxKSl7dmFyIHgxPWExKGkxLGYxKTtyZXR1cm4heDF8fCFhKHMxLGYx''@;'; put 'put ''KXx8YShpMSxjMSkmJmkxW2MxXVtmMV18fCh4MS5lbnVtZXJhYmxlPSEwKSx4MX19LFoxPWZ1bmN0aW9uKGkxKXtmb3IodmFyIGYxLHgxPXUxKEUoaTEpKSxJMT1bXSxKMT0wO0oxPHgxLmxlbmd0aDspYShzMSxmMT14MVtKMSsrXSl8fGYxPT1jMXx8ZjE9PWZ8fEkxLnB1c2goZjEpO3JldHVy''@;'; put 'put ''biBJMX0sWT1mdW5jdGlvbihpMSl7Zm9yKHZhciBmMSx4MT1pMT09PWIxLEkxPXUxKHgxP20xOkUoaTEpKSxKMT1bXSx0MD0wO3QwPEkxLmxlbmd0aDspIWEoczEsZjE9STFbdDArK10pfHx4MSYmIWEoYjEsZjEpfHxKMS5wdXNoKHMxW2YxXSk7cmV0dXJuIEoxfTtCMXx8KGgoKHAxPWZ1bmN0''@;'; put 'put ''aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIHAxKXRocm93IFR5cGVFcnJvcigiU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yISIpO3ZhciBpMT12KDA8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06ayksZjE9ZnVuY3Rpb24oeDEpe3RoaXM9PT1iMSYmZjEuY2FsbChtMSx4MSksYSh0''@;'; put 'put ''aGlzLGMxKSYmYSh0aGlzW2MxXSxpMSkmJih0aGlzW2MxXVtpMV09ITEpLHkodGhpcyxpMSxOKDEseDEpKX07cmV0dXJuIGMmJnomJnkoYjEsaTEse2NvbmZpZ3VyYWJsZTohMCxzZXQ6ZjF9KSxEKGkxKX0pW2pdLCJ0b1N0cmluZyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fa30pLE8uZj1y''@;'; put 'put ''MSxSLmY9VCxsKDM3KS5mPVcuZj1aMSxsKDQ5KS5mPWUxLEIuZj1ZLGMmJiFsKDI5KSYmaChiMSwicHJvcGVydHlJc0VudW1lcmFibGUiLGUxLCEwKSxDLmY9ZnVuY3Rpb24objEpe3JldHVybiBEKEgobjEpKX0pLG8oby5HK28uVytvLkYqIUIxLHtTeW1ib2w6cDF9KTtmb3IodmFyIHE9Imhh''@;'; put 'put ''c0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzIi5zcGxpdCgiLCIpLEo9MDtKPHEubGVuZ3RoOylIKHFbSisrXSk7Zm9yKHZhciBBMT1sMShILnN0''@;'; put 'put ''b3JlKSxOMT0wO04xPEExLmxlbmd0aDspVihBMVtOMSsrXSk7byhvLlMrby5GKiFCMSwiU3ltYm9sIix7Zm9yOmZ1bmN0aW9uKG4xKXtyZXR1cm4gYShRLG4xKz0iIik/UVtuMV06UVtuMV09cDEobjEpfSxrZXlGb3I6ZnVuY3Rpb24oaTEpe2lmKCFaKGkxKSl0aHJvdyBUeXBlRXJyb3IoaTEr''@;'; put 'put ''IiBpcyBub3QgYSBzeW1ib2whIik7Zm9yKHZhciBmMSBpbiBRKWlmKFFbZjFdPT09aTEpcmV0dXJuIGYxfSx1c2VTZXR0ZXI6ZnVuY3Rpb24oKXt6PSEwfSx1c2VTaW1wbGU6ZnVuY3Rpb24oKXt6PSExfX0pLG8oby5TK28uRiohQjEsIk9iamVjdCIse2NyZWF0ZTpmdW5jdGlvbihpMSxmMSl7''@;'; put 'put ''cmV0dXJuIGYxPT09az9JKGkxKTpQKEkoaTEpLGYxKX0sZGVmaW5lUHJvcGVydHk6VCxkZWZpbmVQcm9wZXJ0aWVzOlAsZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOnIxLGdldE93blByb3BlcnR5TmFtZXM6WjEsZ2V0T3duUHJvcGVydHlTeW1ib2xzOll9KTt2YXIgUzE9ZyhmdW5jdGlvbigp''@;'; put 'put ''e0IuZigxKX0pO28oby5TK28uRipTMSwiT2JqZWN0Iix7Z2V0T3duUHJvcGVydHlTeW1ib2xzOmZ1bmN0aW9uKGkxKXtyZXR1cm4gQi5mKHgoaTEpKX19KSx2MSYmbyhvLlMrby5GKighQjF8fGcoZnVuY3Rpb24oKXt2YXIgbjE9cDEoKTtyZXR1cm4iW251bGxdIiE9RTEoW24xXSl8fCJ7fSIh''@;'; put 'put ''PUUxKHthOm4xfSl8fCJ7fSIhPUUxKE9iamVjdChuMSkpfSkpLCJKU09OIix7c3RyaW5naWZ5OmZ1bmN0aW9uKGkxKXtmb3IodmFyIGYxLHgxLEkxPVtpMV0sSjE9MTtKMTxhcmd1bWVudHMubGVuZ3RoOylJMS5wdXNoKGFyZ3VtZW50c1tKMSsrXSk7aWYoeDE9ZjE9STFbMV0sKE0oZjEpfHxp''@;'; put 'put ''MSE9PWspJiYhWihpMSkpcmV0dXJuIF8oZjEpfHwoZjE9ZnVuY3Rpb24odDAsZjApe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB4MSYmKGYwPXgxLmNhbGwodGhpcyx0MCxmMCkpLCFaKGYwKSlyZXR1cm4gZjB9KSxJMVsxXT1mMSxFMS5hcHBseSh2MSxJMSl9fSkscDFbal1bVjFdfHxsKDExKShw''@;'; put 'put ''MVtqXSxWMSxwMVtqXS52YWx1ZU9mKSxwKHAxLCJTeW1ib2wiKSxwKE1hdGgsIk1hdGgiLCEwKSxwKHIuSlNPTiwiSlNPTiIsITApfSxmdW5jdGlvbihBLGUsbCl7QS5leHBvcnRzPWwoNDcpKCJuYXRpdmUtZnVuY3Rpb24tdG8tc3RyaW5nIixGdW5jdGlvbi50b1N0cmluZyl9LGZ1bmN0aW9u''@;'; put 'put ''KEEsZSxsKXt2YXIgcj1sKDM0KSxhPWwoNTMpLGM9bCg0OSk7QS5leHBvcnRzPWZ1bmN0aW9uKG8pe3ZhciBoPXIobyksZj1hLmY7aWYoZilmb3IodmFyIGcsdT1mKG8pLHA9Yy5mLHY9MDt2PHUubGVuZ3RoOylwLmNhbGwobyxnPXVbdisrXSkmJmgucHVzaChnKTtyZXR1cm4gaH19LGZ1bmN0''@;'; put 'put ''aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TK3IuRiohbCg3KSwiT2JqZWN0Iix7ZGVmaW5lUHJvcGVydHk6bCg4KS5mfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TK3IuRiohbCg3KSwiT2JqZWN0Iix7ZGVmaW5lUHJvcGVydGllczpsKDk2KX0pfSxmdW5jdGlvbihBLGUs''@;'; put 'put ''bCl7dmFyIHI9bCgxNSksYT1sKDE2KS5mO2woMjQpKCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG8saCl7cmV0dXJuIGEocihvKSxoKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk9iamVjdCIse2NyZWF0ZTpsKDM2''@;'; put 'put ''KX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg5KSxhPWwoMTcpO2woMjQpKCJnZXRQcm90b3R5cGVPZiIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obyl7cmV0dXJuIGEocihvKSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDkpLGE9bCgzNCk7bCgyNCkoImtleXMiLGZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG8pe3JldHVybiBhKHIobykpfX0pfSxmdW5jdGlvbihBLGUsbCl7bCgyNCkoImdldE93blByb3BlcnR5TmFtZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIGwoOTcpLmZ9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNCksYT1sKDMwKS5vbkZyZWV6ZTtsKDI0''@;'; put 'put ''KSgiZnJlZXplIixmdW5jdGlvbihjKXtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuIGMmJnIoaCk/YyhhKGgpKTpofX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg0KSxhPWwoMzApLm9uRnJlZXplO2woMjQpKCJzZWFsIixmdW5jdGlvbihjKXtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJu''@;'; put 'put ''IGMmJnIoaCk/YyhhKGgpKTpofX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg0KSxhPWwoMzApLm9uRnJlZXplO2woMjQpKCJwcmV2ZW50RXh0ZW5zaW9ucyIsZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKGgpe3JldHVybiBjJiZyKGgpP2MoYShoKSk6aH19KX0sZnVuY3Rpb24oQSxl''@;'; put 'put ''LGwpe3ZhciByPWwoNCk7bCgyNCkoImlzRnJvemVuIixmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24obyl7cmV0dXJuIXIobyl8fCEhYSYmYShvKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNCk7bCgyNCkoImlzU2VhbGVkIixmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24obyl7''@;'; put 'put ''cmV0dXJuIXIobyl8fCEhYSYmYShvKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNCk7bCgyNCkoImlzRXh0ZW5zaWJsZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKG8pe3JldHVybiEhcihvKSYmKCFhfHxhKG8pKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihy''@;'; put 'put ''LlMrci5GLCJPYmplY3QiLHthc3NpZ246bCg5OCl9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk9iamVjdCIse2lzOmwoOTkpfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJPYmplY3QiLHtzZXRQcm90b3R5cGVPZjpsKDcxKS5zZXR9KX0sZnVuY3Rp''@;'; put 'put ''b24oQSxlLGwpe3ZhciByPWwoNDQpLGE9e307YVtsKDUpKCJ0b1N0cmluZ1RhZyIpXT0ieiIsYSsiIiE9IltvYmplY3Qgel0iJiZsKDEyKShPYmplY3QucHJvdG90eXBlLCJ0b1N0cmluZyIsZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCAiK3IodGhpcykrIl0ifSwhMCl9LGZ1bmN0aW9uKEEs''@;'; put 'put ''ZSxsKXt2YXIgcj1sKDApO3Ioci5QLCJGdW5jdGlvbiIse2JpbmQ6bCgxMDApfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDgpLmYsYT1GdW5jdGlvbi5wcm90b3R5cGUsYz0vXlxzKmZ1bmN0aW9uIChbXiAoXSopLzsibmFtZSJpbiBhfHxsKDcpJiZyKGEsIm5hbWUiLHtjb25maWd1cmFi''@;'; put 'put ''bGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dHJ5e3JldHVybigiIit0aGlzKS5tYXRjaChjKVsxXX1jYXRjaChvKXtyZXR1cm4iIn19fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDQpLGE9bCgxNyksYz1sKDUpKCJoYXNJbnN0YW5jZSIpLG89RnVuY3Rpb24ucHJvdG90eXBlO2MgaW4gb3x8bCg4''@;'; put 'put ''KS5mKG8sYyx7dmFsdWU6ZnVuY3Rpb24oaCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXN8fCFyKGgpKXJldHVybiExO2lmKCFyKHRoaXMucHJvdG90eXBlKSlyZXR1cm4gaCBpbnN0YW5jZW9mIHRoaXM7Zm9yKDtoPWEoaCk7KWlmKHRoaXMucHJvdG90eXBlPT09aClyZXR1cm4hMDtyZXR1''@;'; put 'put ''cm4hMX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMiksYT1sKDE0KSxjPWwoMTkpLG89bCg3MiksaD1sKDIyKSxmPWwoMyksZz1sKDM3KS5mLHU9bCgxNikuZixwPWwoOCkuZix2PWwoNDUpLnRyaW0sSD0iTnVtYmVyIixDPXJbSF0sVj1DLFM9Qy5wcm90b3R5cGUsXz1jKGwoMzYpKFMp''@;'; put 'put ''KT09SCxiPSJ0cmltImluIFN0cmluZy5wcm90b3R5cGUsTT1mdW5jdGlvbihOKXt2YXIgST1oKE4sITEpO2lmKCJzdHJpbmciPT10eXBlb2YgSSYmMjxJLmxlbmd0aCl7dmFyIFcsTyxCLFI9KEk9Yj9JLnRyaW0oKTp2KEksMykpLmNoYXJDb2RlQXQoMCk7aWYoNDM9PT1SfHw0NT09PVIpe2lm''@;'; put 'put ''KDg4PT09KFc9SS5jaGFyQ29kZUF0KDIpKXx8MTIwPT09VylyZXR1cm4gTmFOfWVsc2UgaWYoNDg9PT1SKXtzd2l0Y2goSS5jaGFyQ29kZUF0KDEpKXtjYXNlIDY2OmNhc2UgOTg6Tz0yLEI9NDk7YnJlYWs7Y2FzZSA3OTpjYXNlIDExMTpPPTgsQj01NTticmVhaztkZWZhdWx0OnJldHVybitJ''@;'; put 'put ''fWZvcih2YXIgbDEsYTE9SS5zbGljZSgyKSxoMT0wLHUxPWExLmxlbmd0aDtoMTx1MTtoMSsrKWlmKChsMT1hMS5jaGFyQ29kZUF0KGgxKSk8NDh8fEI8bDEpcmV0dXJuIE5hTjtyZXR1cm4gcGFyc2VJbnQoYTEsTyl9fXJldHVybitJfTtpZighQygiIDBvMSIpfHwhQygiMGIxIil8fEMoIisw''@;'; put 'put ''eDEiKSl7Qz1mdW5jdGlvbihJKXt2YXIgVz1hcmd1bWVudHMubGVuZ3RoPDE/MDpJLE89dGhpcztyZXR1cm4gTyBpbnN0YW5jZW9mIEMmJihfP2YoZnVuY3Rpb24oKXtTLnZhbHVlT2YuY2FsbChPKX0pOmMoTykhPUgpP28obmV3IFYoTShXKSksTyxDKTpNKFcpfTtmb3IodmFyIHgsRT1sKDcp''@;'; put 'put ''P2coVik6Ik1BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLEVQU0lMT04saXNGaW5pdGUsaXNJbnRlZ2VyLGlzTmFOLGlzU2FmZUludGVnZXIsTUFYX1NBRkVfSU5URUdFUixNSU5fU0FGRV9JTlRFR0VSLHBhcnNlRmxvYXQscGFyc2VJ''@;'; put 'put ''bnQsaXNJbnRlZ2VyIi5zcGxpdCgiLCIpLHc9MDt3PEUubGVuZ3RoO3crKylhKFYseD1FW3ddKSYmIWEoQyx4KSYmcChDLHgsdShWLHgpKTsoQy5wcm90b3R5cGU9UykuY29uc3RydWN0b3I9QyxsKDEyKShyLEgsQyl9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMjApLGM9bCgx''@;'; put 'put ''MDIpLG89bCg3NCksaD0xLi50b0ZpeGVkLGY9TWF0aC5mbG9vcixnPVswLDAsMCwwLDAsMF0sdT0iTnVtYmVyLnRvRml4ZWQ6IGluY29ycmVjdCBpbnZvY2F0aW9uISIscD1mdW5jdGlvbihWLFMpe2Zvcih2YXIgXz0tMSxiPVM7KytfPDY7KWdbX109KGIrPVYqZ1tfXSklMWU3LGI9ZihiLzFl''@;'; put 'put ''Nyl9LHY9ZnVuY3Rpb24oVil7Zm9yKHZhciBTPTYsXz0wOzA8PS0tUzspZ1tTXT1mKChfKz1nW1NdKS9WKSxfPV8lVioxZTd9LEg9ZnVuY3Rpb24oKXtmb3IodmFyIFY9NixTPSIiOzA8PS0tVjspaWYoIiIhPT1TfHwwPT09Vnx8MCE9PWdbVl0pe3ZhciBfPVN0cmluZyhnW1ZdKTtTPSIiPT09''@;'; put 'put ''Uz9fOlMrby5jYWxsKCIwIiw3LV8ubGVuZ3RoKStffXJldHVybiBTfSxDPWZ1bmN0aW9uKFYsUyxfKXtyZXR1cm4gMD09PVM/XzpTJTI9PTE/QyhWLFMtMSxfKlYpOkMoVipWLFMvMixfKX07cihyLlArci5GKighIWgmJigiMC4wMDAiIT09OGUtNS50b0ZpeGVkKDMpfHwiMSIhPT0uOS50b0Zp''@;'; put 'put ''eGVkKDApfHwiMS4yNSIhPT0xLjI1NS50b0ZpeGVkKDIpfHwiMTAwMDAwMDAwMDAwMDAwMDEyOCIhPT0oMHhkZTBiNmIzYTc2NDAwODApLnRvRml4ZWQoMCkpfHwhbCgzKShmdW5jdGlvbigpe2guY2FsbCh7fSl9KSksIk51bWJlciIse3RvRml4ZWQ6ZnVuY3Rpb24oUyl7dmFyIF8sYixNLHgs''@;'; put 'put ''RT1jKHRoaXMsdSksdz1hKFMpLE49IiIsST0iMCI7aWYodzwwfHwyMDx3KXRocm93IFJhbmdlRXJyb3IodSk7aWYoRSE9RSlyZXR1cm4iTmFOIjtpZihFPD0tMWUyMXx8MWUyMTw9RSlyZXR1cm4gU3RyaW5nKEUpO2lmKEU8MCYmKE49Ii0iLEU9LUUpLDFlLTIxPEUpaWYoYj0oXz1mdW5jdGlv''@;'; put 'put ''bihXKXtmb3IodmFyIE89MCxCPVc7NDA5Njw9QjspTys9MTIsQi89NDA5Njtmb3IoOzI8PUI7KU8rPTEsQi89MjtyZXR1cm4gT30oRSpDKDIsNjksMSkpLTY5KTwwP0UqQygyLC1fLDEpOkUvQygyLF8sMSksYio9NDUwMzU5OTYyNzM3MDQ5NiwwPChfPTUyLV8pKXtmb3IocCgwLGIpLE09dzs3''@;'; put 'put ''PD1NOylwKDFlNywwKSxNLT03O2ZvcihwKEMoMTAsTSwxKSwwKSxNPV8tMTsyMzw9TTspdigxPDwyMyksTS09MjM7digxPDxNKSxwKDEsMSksdigyKSxJPUgoKX1lbHNlIHAoMCxiKSxwKDE8PC1fLDApLEk9SCgpK28uY2FsbCgiMCIsdyk7cmV0dXJuIDA8dz9OKygoeD1JLmxlbmd0aCk8PXc/''@;'; put 'put ''IjAuIitvLmNhbGwoIjAiLHcteCkrSTpJLnNsaWNlKDAseC13KSsiLiIrSS5zbGljZSh4LXcpKTpOK0l9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgzKSxjPWwoMTAyKSxvPTEuLnRvUHJlY2lzaW9uO3Ioci5QK3IuRiooYShmdW5jdGlvbigpe3JldHVybiIxIiE9PW8uY2Fs''@;'; put 'put ''bCgxLGspfSl8fCFhKGZ1bmN0aW9uKCl7by5jYWxsKHt9KX0pKSwiTnVtYmVyIix7dG9QcmVjaXNpb246ZnVuY3Rpb24oZil7dmFyIGc9Yyh0aGlzLCJOdW1iZXIjdG9QcmVjaXNpb246IGluY29ycmVjdCBpbnZvY2F0aW9uISIpO3JldHVybiBmPT09az9vLmNhbGwoZyk6by5jYWxsKGcsZil9''@;'; put 'put ''fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJOdW1iZXIiLHtFUFNJTE9OOk1hdGgucG93KDIsLTUyKX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMikuaXNGaW5pdGU7cihyLlMsIk51bWJlciIse2lzRmluaXRlOmZ1bmN0aW9uKG8pe3JldHVybiJudW1i''@;'; put 'put ''ZXIiPT10eXBlb2YgbyYmYShvKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk51bWJlciIse2lzSW50ZWdlcjpsKDEwMyl9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk51bWJlciIse2lzTmFOOmZ1bmN0aW9uKGMpe3JldHVybiBjIT1jfX0pfSxm''@;'; put 'put ''dW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMTAzKSxjPU1hdGguYWJzO3Ioci5TLCJOdW1iZXIiLHtpc1NhZmVJbnRlZ2VyOmZ1bmN0aW9uKGgpe3JldHVybiBhKGgpJiZjKGgpPD05MDA3MTk5MjU0NzQwOTkxfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKTtyKHIuUywiTnVt''@;'; put 'put ''YmVyIix7TUFYX1NBRkVfSU5URUdFUjo5MDA3MTk5MjU0NzQwOTkxfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJOdW1iZXIiLHtNSU5fU0FGRV9JTlRFR0VSOi05MDA3MTk5MjU0NzQwOTkxfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgxMDQpO3Ioci5T''@;'; put 'put ''K3IuRiooTnVtYmVyLnBhcnNlRmxvYXQhPWEpLCJOdW1iZXIiLHtwYXJzZUZsb2F0OmF9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDEwNSk7cihyLlMrci5GKihOdW1iZXIucGFyc2VJbnQhPWEpLCJOdW1iZXIiLHtwYXJzZUludDphfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIg''@;'; put 'put ''cj1sKDApLGE9bCgxMDUpO3Ioci5HK3IuRioocGFyc2VJbnQhPWEpLHtwYXJzZUludDphfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgxMDQpO3Ioci5HK3IuRioocGFyc2VGbG9hdCE9YSkse3BhcnNlRmxvYXQ6YX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwo''@;'; put 'put ''MTA2KSxjPU1hdGguc3FydCxvPU1hdGguYWNvc2g7cihyLlMrci5GKiEobyYmNzEwPT1NYXRoLmZsb29yKG8oTnVtYmVyLk1BWF9WQUxVRSkpJiZvKDEvMCk9PTEvMCksIk1hdGgiLHthY29zaDpmdW5jdGlvbihmKXtyZXR1cm4oZj0rZik8MT9OYU46OTQ5MDYyNjUuNjI0MjUxNTY8Zj9NYXRo''@;'; put 'put ''LmxvZyhmKStNYXRoLkxOMjphKGYtMStjKGYtMSkqYyhmKzEpKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1NYXRoLmFzaW5oO3Ioci5TK3IuRiohKGEmJjA8MS9hKDApKSwiTWF0aCIse2FzaW5oOmZ1bmN0aW9uIGMobyl7cmV0dXJuIGlzRmluaXRlKG89K28pJiYwIT1vP288''@;'; put 'put ''MD8tYygtbyk6TWF0aC5sb2cobytNYXRoLnNxcnQobypvKzEpKTpvfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPU1hdGguYXRhbmg7cihyLlMrci5GKiEoYSYmMS9hKC0wKTwwKSwiTWF0aCIse2F0YW5oOmZ1bmN0aW9uKG8pe3JldHVybiAwPT0obz0rbyk/bzpNYXRoLmxvZygo''@;'; put 'put ''MStvKS8oMS1vKSkvMn19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDc1KTtyKHIuUywiTWF0aCIse2NicnQ6ZnVuY3Rpb24obyl7cmV0dXJuIGEobz0rbykqTWF0aC5wb3coTWF0aC5hYnMobyksMS8zKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk1h''@;'; put 'put ''dGgiLHtjbHozMjpmdW5jdGlvbihjKXtyZXR1cm4oYz4+Pj0wKT8zMS1NYXRoLmZsb29yKE1hdGgubG9nKGMrLjUpKk1hdGguTE9HMkUpOjMyfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPU1hdGguZXhwO3Ioci5TLCJNYXRoIix7Y29zaDpmdW5jdGlvbihvKXtyZXR1cm4oYShv''@;'; put 'put ''PStvKSthKC1vKSkvMn19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDc2KTtyKHIuUytyLkYqKGEhPU1hdGguZXhwbTEpLCJNYXRoIix7ZXhwbTE6YX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKTtyKHIuUywiTWF0aCIse2Zyb3VuZDpsKDEwNyl9KX0sZnVuY3Rpb24o''@;'; put 'put ''QSxlLGwpe3ZhciByPWwoMCksYT1NYXRoLmFicztyKHIuUywiTWF0aCIse2h5cG90OmZ1bmN0aW9uKG8saCl7Zm9yKHZhciBmLGcsdT0wLHA9MCx2PWFyZ3VtZW50cy5sZW5ndGgsSD0wO3A8djspSDwoZj1hKGFyZ3VtZW50c1twKytdKSk/KHU9dSooZz1IL2YpKmcrMSxIPWYpOnUrPTA8Zj8o''@;'; put 'put ''Zz1mL0gpKmc6ZjtyZXR1cm4gSD09PTEvMD8xLzA6SCpNYXRoLnNxcnQodSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9TWF0aC5pbXVsO3Ioci5TK3IuRipsKDMpKGZ1bmN0aW9uKCl7cmV0dXJuLTUhPWEoNDI5NDk2NzI5NSw1KXx8MiE9YS5sZW5ndGh9KSwiTWF0aCIse2lt''@;'; put 'put ''dWw6ZnVuY3Rpb24obyxoKXt2YXIgZj02NTUzNSxnPStvLHU9K2gscD1mJmcsdj1mJnU7cmV0dXJuIDB8cCp2KygoZiZnPj4+MTYpKnYrcCooZiZ1Pj4+MTYpPDwxNj4+PjApfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKTtyKHIuUywiTWF0aCIse2xvZzEwOmZ1bmN0aW9uKGMpe3Jl''@;'; put 'put ''dHVybiBNYXRoLmxvZyhjKSpNYXRoLkxPRzEwRX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk1hdGgiLHtsb2cxcDpsKDEwNil9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk1hdGgiLHtsb2cyOmZ1bmN0aW9uKGMpe3JldHVybiBNYXRoLmxvZyhj''@;'; put 'put ''KS9NYXRoLkxOMn19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk1hdGgiLHtzaWduOmwoNzUpfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCg3NiksYz1NYXRoLmV4cDtyKHIuUytyLkYqbCgzKShmdW5jdGlvbigpe3JldHVybi0yZS0xNyE9IU1hdGguc2lu''@;'; put 'put ''aCgtMmUtMTcpfSksIk1hdGgiLHtzaW5oOmZ1bmN0aW9uKGgpe3JldHVybiBNYXRoLmFicyhoPStoKTwxPyhhKGgpLWEoLWgpKS8yOihjKGgtMSktYygtaC0xKSkqKE1hdGguRS8yKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDc2KSxjPU1hdGguZXhwO3Ioci5TLCJNYXRo''@;'; put 'put ''Iix7dGFuaDpmdW5jdGlvbihoKXt2YXIgZj1hKGg9K2gpLGc9YSgtaCk7cmV0dXJuIGY9PTEvMD8xOmc9PTEvMD8tMTooZi1nKS8oYyhoKStjKC1oKSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJNYXRoIix7dHJ1bmM6ZnVuY3Rpb24oYyl7cmV0dXJuKDA8Yz9NYXRo''@;'; put 'put ''LmZsb29yOk1hdGguY2VpbCkoYyl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgzNSksYz1TdHJpbmcuZnJvbUNoYXJDb2RlLG89U3RyaW5nLmZyb21Db2RlUG9pbnQ7cihyLlMrci5GKighIW8mJjEhPW8ubGVuZ3RoKSwiU3RyaW5nIix7ZnJvbUNvZGVQb2ludDpmdW5jdGlv''@;'; put 'put ''bihmKXtmb3IodmFyIGcsdT1bXSxwPWFyZ3VtZW50cy5sZW5ndGgsdj0wO3Y8cDspe2lmKGc9K2FyZ3VtZW50c1t2KytdLGEoZywxMTE0MTExKSE9PWcpdGhyb3cgUmFuZ2VFcnJvcihnKyIgaXMgbm90IGEgdmFsaWQgY29kZSBwb2ludCIpO3UucHVzaChnPDY1NTM2P2MoZyk6Yyg1NTI5Niso''@;'; put 'put ''KGctPTY1NTM2KT4+MTApLGclMTAyNCs1NjMyMCkpfXJldHVybiB1LmpvaW4oIiIpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMTUpLGM9bCg2KTtyKHIuUywiU3RyaW5nIix7cmF3OmZ1bmN0aW9uKGgpe2Zvcih2YXIgZj1hKGgucmF3KSxnPWMoZi5sZW5ndGgpLHU9YXJn''@;'; put 'put ''dW1lbnRzLmxlbmd0aCxwPVtdLHY9MDt2PGc7KXAucHVzaChTdHJpbmcoZlt2KytdKSksdjx1JiZwLnB1c2goU3RyaW5nKGFyZ3VtZW50c1t2XSkpO3JldHVybiBwLmpvaW4oIiIpfX0pfSxmdW5jdGlvbihBLGUsbCl7bCg0NSkoInRyaW0iLGZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiByKHRoaXMsMyl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCg1NSkoITEpO3Ioci5QLCJTdHJpbmciLHtjb2RlUG9pbnRBdDpmdW5jdGlvbihvKXtyZXR1cm4gYSh0aGlzLG8pfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoNiksYz1sKDc3KSxv''@;'; put 'put ''PSJlbmRzV2l0aCIsaD0iIltvXTtyKHIuUCtyLkYqbCg3OCkobyksIlN0cmluZyIse2VuZHNXaXRoOmZ1bmN0aW9uKGcpe3ZhciB1PWModGhpcyxnLG8pLHA9MTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTprLHY9YSh1Lmxlbmd0aCksSD1wPT09az92Ok1hdGgubWluKGEocCksdiks''@;'; put 'put ''Qz1TdHJpbmcoZyk7cmV0dXJuIGg/aC5jYWxsKHUsQyxIKTp1LnNsaWNlKEgtQy5sZW5ndGgsSCk9PT1DfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoNzcpLGM9ImluY2x1ZGVzIjtyKHIuUCtyLkYqbCg3OCkoYyksIlN0cmluZyIse2luY2x1ZGVzOmZ1bmN0aW9uKGgpe3Jl''@;'; put 'put ''dHVybiEhfmEodGhpcyxoLGMpLmluZGV4T2YoaCwxPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzFdOmspfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKTtyKHIuUCwiU3RyaW5nIix7cmVwZWF0OmwoNzQpfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCg2KSxjPWwo''@;'; put 'put ''NzcpLG89InN0YXJ0c1dpdGgiLGg9IiJbb107cihyLlArci5GKmwoNzgpKG8pLCJTdHJpbmciLHtzdGFydHNXaXRoOmZ1bmN0aW9uKGcpe3ZhciB1PWModGhpcyxnLG8pLHA9YShNYXRoLm1pbigxPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzFdOmssdS5sZW5ndGgpKSx2PVN0cmluZyhn''@;'; put 'put ''KTtyZXR1cm4gaD9oLmNhbGwodSx2LHApOnUuc2xpY2UocCxwK3YubGVuZ3RoKT09PXZ9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDU1KSghMCk7bCg3OSkoU3RyaW5nLCJTdHJpbmciLGZ1bmN0aW9uKGEpe3RoaXMuX3Q9U3RyaW5nKGEpLHRoaXMuX2k9MH0sZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''YSxjPXRoaXMuX3Qsbz10aGlzLl9pO3JldHVybiBjLmxlbmd0aDw9bz97dmFsdWU6ayxkb25lOiEwfTooYT1yKGMsbyksdGhpcy5faSs9YS5sZW5ndGgse3ZhbHVlOmEsZG9uZTohMX0pfSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDEzKSgiYW5jaG9yIixmdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24oYyl7cmV0dXJuIHIodGhpcywiYSIsIm5hbWUiLGMpfX0pfSxmdW5jdGlvbihBLGUsbCl7bCgxMykoImJpZyIsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcywiYmlnIiwiIiwiIil9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDEzKSgiYmxpbmsiLGZ1bmN0aW9u''@;'; put 'put ''KHIpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiByKHRoaXMsImJsaW5rIiwiIiwiIil9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDEzKSgiYm9sZCIsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcywiYiIsIiIsIiIpfX0pfSxmdW5jdGlvbihBLGUsbCl7bCgxMyko''@;'; put 'put ''ImZpeGVkIixmdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLCJ0dCIsIiIsIiIpfX0pfSxmdW5jdGlvbihBLGUsbCl7bCgxMykoImZvbnRjb2xvciIsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiByKHRoaXMsImZvbnQiLCJjb2xvciIsYyl9''@;'; put 'put ''fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDEzKSgiZm9udHNpemUiLGZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gcih0aGlzLCJmb250Iiwic2l6ZSIsYyl9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDEzKSgiaXRhbGljcyIsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIHIodGhpcywiaSIsIiIsIiIpfX0pfSxmdW5jdGlvbihBLGUsbCl7bCgxMykoImxpbmsiLGZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gcih0aGlzLCJhIiwiaHJlZiIsYyl9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDEzKSgic21hbGwiLGZ1bmN0aW9uKHIpe3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbigpe3JldHVybiByKHRoaXMsInNtYWxsIiwiIiwiIil9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDEzKSgic3RyaWtlIixmdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLCJzdHJpa2UiLCIiLCIiKX19KX0sZnVuY3Rpb24oQSxlLGwpe2woMTMp''@;'; put 'put ''KCJzdWIiLGZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiByKHRoaXMsInN1YiIsIiIsIiIpfX0pfSxmdW5jdGlvbihBLGUsbCl7bCgxMykoInN1cCIsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcywic3VwIiwiIiwiIil9fSl9LGZ1bmN0aW9u''@;'; put 'put ''KEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJBcnJheSIse2lzQXJyYXk6bCg1NCl9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMTgpLGE9bCgwKSxjPWwoOSksbz1sKDEwOCksaD1sKDgxKSxmPWwoNiksZz1sKDgyKSx1PWwoODMpO2EoYS5TK2EuRiohbCg1NykoZnVuY3Rpb24ocCl7QXJy''@;'; put 'put ''YXkuZnJvbShwKX0pLCJBcnJheSIse2Zyb206ZnVuY3Rpb24odil7dmFyIEgsQyxWLFMsXz1jKHYpLGI9ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXM/dGhpczpBcnJheSxNPWFyZ3VtZW50cy5sZW5ndGgseD0xPE0/YXJndW1lbnRzWzFdOmssRT14IT09ayx3PTAsTj11KF8pO2lmKEUmJih4PXIo''@;'; put 'put ''eCwyPE0/YXJndW1lbnRzWzJdOmssMikpLE49PWt8fGI9PUFycmF5JiZoKE4pKWZvcihDPW5ldyBiKEg9ZihfLmxlbmd0aCkpO3c8SDt3KyspZyhDLHcsRT94KF9bd10sdyk6X1t3XSk7ZWxzZSBmb3IoUz1OLmNhbGwoXyksQz1uZXcgYjshKFY9Uy5uZXh0KCkpLmRvbmU7dysrKWcoQyx3LEU/''@;'; put 'put ''byhTLHgsW1YudmFsdWUsd10sITApOlYudmFsdWUpO3JldHVybiBDLmxlbmd0aD13LEN9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCg4Mik7cihyLlMrci5GKmwoMykoZnVuY3Rpb24oKXtmdW5jdGlvbiBjKCl7fXJldHVybiEoQXJyYXkub2YuY2FsbChjKWluc3RhbmNlb2Yg''@;'; put 'put ''Yyl9KSwiQXJyYXkiLHtvZjpmdW5jdGlvbigpe2Zvcih2YXIgbz0wLGg9YXJndW1lbnRzLmxlbmd0aCxmPW5ldygiZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOkFycmF5KShoKTtvPGg7KWEoZixvLGFyZ3VtZW50c1tvKytdKTtyZXR1cm4gZi5sZW5ndGg9aCxmfX0pfSxmdW5jdGlvbihB''@;'; put 'put ''LGUsbCl7dmFyIHI9bCgwKSxhPWwoMTUpLGM9W10uam9pbjtyKHIuUCtyLkYqKGwoNDgpIT1PYmplY3R8fCFsKDIxKShjKSksIkFycmF5Iix7am9pbjpmdW5jdGlvbihoKXtyZXR1cm4gYy5jYWxsKGEodGhpcyksaD09PWs/IiwiOmgpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxh''@;'; put 'put ''PWwoNzApLGM9bCgxOSksbz1sKDM1KSxoPWwoNiksZj1bXS5zbGljZTtyKHIuUCtyLkYqbCgzKShmdW5jdGlvbigpe2EmJmYuY2FsbChhKX0pLCJBcnJheSIse3NsaWNlOmZ1bmN0aW9uKHUscCl7dmFyIHY9aCh0aGlzLmxlbmd0aCksSD1jKHRoaXMpO2lmKHA9cD09PWs/djpwLCJBcnJheSI9''@;'; put 'put ''PUgpcmV0dXJuIGYuY2FsbCh0aGlzLHUscCk7Zm9yKHZhciBDPW8odSx2KSxWPW8ocCx2KSxTPWgoVi1DKSxfPW5ldyBBcnJheShTKSxiPTA7YjxTO2IrKylfW2JdPSJTdHJpbmciPT1IP3RoaXMuY2hhckF0KEMrYik6dGhpc1tDK2JdO3JldHVybiBffX0pfSxmdW5jdGlvbihBLGUsbCl7dmFy''@;'; put 'put ''IHI9bCgwKSxhPWwoMTApLGM9bCg5KSxvPWwoMyksaD1bXS5zb3J0LGY9WzEsMiwzXTtyKHIuUCtyLkYqKG8oZnVuY3Rpb24oKXtmLnNvcnQoayl9KXx8IW8oZnVuY3Rpb24oKXtmLnNvcnQobnVsbCl9KXx8IWwoMjEpKGgpKSwiQXJyYXkiLHtzb3J0OmZ1bmN0aW9uKHUpe3JldHVybiB1PT09''@;'; put 'put ''az9oLmNhbGwoYyh0aGlzKSk6aC5jYWxsKGModGhpcyksYSh1KSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgyNSkoMCksYz1sKDIxKShbXS5mb3JFYWNoLCEwKTtyKHIuUCtyLkYqIWMsIkFycmF5Iix7Zm9yRWFjaDpmdW5jdGlvbihoKXtyZXR1cm4gYSh0aGlzLGgsYXJn''@;'; put 'put ''dW1lbnRzWzFdKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNCksYT1sKDU0KSxjPWwoNSkoInNwZWNpZXMiKTtBLmV4cG9ydHM9ZnVuY3Rpb24obyl7dmFyIGg7cmV0dXJuIGEobykmJigiZnVuY3Rpb24iIT10eXBlb2YoaD1vLmNvbnN0cnVjdG9yKXx8aCE9PUFycmF5JiYhYShoLnBy''@;'; put 'put ''b3RvdHlwZSl8fChoPWspLHIoaCkmJm51bGw9PT0oaD1oW2NdKSYmKGg9aykpLGg9PT1rP0FycmF5Omh9fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMjUpKDEpO3Ioci5QK3IuRiohbCgyMSkoW10ubWFwLCEwKSwiQXJyYXkiLHttYXA6ZnVuY3Rpb24obyl7cmV0dXJuIGEodGhp''@;'; put 'put ''cyxvLGFyZ3VtZW50c1sxXSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgyNSkoMik7cihyLlArci5GKiFsKDIxKShbXS5maWx0ZXIsITApLCJBcnJheSIse2ZpbHRlcjpmdW5jdGlvbihvKXtyZXR1cm4gYSh0aGlzLG8sYXJndW1lbnRzWzFdKX19KX0sZnVuY3Rpb24oQSxl''@;'; put 'put ''LGwpe3ZhciByPWwoMCksYT1sKDI1KSgzKTtyKHIuUCtyLkYqIWwoMjEpKFtdLnNvbWUsITApLCJBcnJheSIse3NvbWU6ZnVuY3Rpb24obyl7cmV0dXJuIGEodGhpcyxvLGFyZ3VtZW50c1sxXSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgyNSkoNCk7cihyLlArci5GKiFs''@;'; put 'put ''KDIxKShbXS5ldmVyeSwhMCksIkFycmF5Iix7ZXZlcnk6ZnVuY3Rpb24obyl7cmV0dXJuIGEodGhpcyxvLGFyZ3VtZW50c1sxXSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgxMDkpO3Ioci5QK3IuRiohbCgyMSkoW10ucmVkdWNlLCEwKSwiQXJyYXkiLHtyZWR1Y2U6ZnVu''@;'; put 'put ''Y3Rpb24obyl7cmV0dXJuIGEodGhpcyxvLGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzWzFdLCExKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDEwOSk7cihyLlArci5GKiFsKDIxKShbXS5yZWR1Y2VSaWdodCwhMCksIkFycmF5Iix7cmVkdWNlUmlnaHQ6ZnVuY3Rpb24o''@;'; put 'put ''byl7cmV0dXJuIGEodGhpcyxvLGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzWzFdLCEwKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDUyKSghMSksYz1bXS5pbmRleE9mLG89ISFjJiYxL1sxXS5pbmRleE9mKDEsLTApPDA7cihyLlArci5GKihvfHwhbCgyMSkoYykpLCJB''@;'; put 'put ''cnJheSIse2luZGV4T2Y6ZnVuY3Rpb24oZil7cmV0dXJuIG8/Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDA6YSh0aGlzLGYsYXJndW1lbnRzWzFdKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDE1KSxjPWwoMjApLG89bCg2KSxoPVtdLmxhc3RJbmRleE9mLGY9ISFoJiYx''@;'; put 'put ''L1sxXS5sYXN0SW5kZXhPZigxLC0wKTwwO3Ioci5QK3IuRiooZnx8IWwoMjEpKGgpKSwiQXJyYXkiLHtsYXN0SW5kZXhPZjpmdW5jdGlvbih1KXtpZihmKXJldHVybiBoLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8MDt2YXIgcD1hKHRoaXMpLHY9byhwLmxlbmd0aCksSD12LTE7Zm9yKDE8YXJn''@;'; put 'put ''dW1lbnRzLmxlbmd0aCYmKEg9TWF0aC5taW4oSCxjKGFyZ3VtZW50c1sxXSkpKSxIPDAmJihIPXYrSCk7MDw9SDtILS0paWYoSCBpbiBwJiZwW0hdPT09dSlyZXR1cm4gSHx8MDtyZXR1cm4tMX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlAsIkFycmF5Iix7Y29weVdpdGhp''@;'; put 'put ''bjpsKDExMCl9KSxsKDMxKSgiY29weVdpdGhpbiIpfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKTtyKHIuUCwiQXJyYXkiLHtmaWxsOmwoODUpfSksbCgzMSkoImZpbGwiKX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDI1KSg1KSxjPSJmaW5kIixvPSEwO2MgaW5bXSYmQXJy''@;'; put 'put ''YXkoMSlbY10oZnVuY3Rpb24oKXtvPSExfSkscihyLlArci5GKm8sIkFycmF5Iix7ZmluZDpmdW5jdGlvbihmKXtyZXR1cm4gYSh0aGlzLGYsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTprKX19KSxsKDMxKShjKX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDI1KSg2''@;'; put 'put ''KSxjPSJmaW5kSW5kZXgiLG89ITA7YyBpbltdJiZBcnJheSgxKVtjXShmdW5jdGlvbigpe289ITF9KSxyKHIuUCtyLkYqbywiQXJyYXkiLHtmaW5kSW5kZXg6ZnVuY3Rpb24oZil7cmV0dXJuIGEodGhpcyxmLDE8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06ayl9fSksbCgzMSkoYyl9''@;'; put 'put ''LGZ1bmN0aW9uKEEsZSxsKXtsKDM4KSgiQXJyYXkiKX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMiksYT1sKDcyKSxjPWwoOCkuZixvPWwoMzcpLmYsaD1sKDU2KSxmPWwoNTApLGc9ci5SZWdFeHAsdT1nLHA9Zy5wcm90b3R5cGUsdj0vYS9nLEg9L2EvZyxDPW5ldyBnKHYpIT09djtpZihs''@;'; put 'put ''KDcpJiYoIUN8fGwoMykoZnVuY3Rpb24oKXtyZXR1cm4gSFtsKDUpKCJtYXRjaCIpXT0hMSxnKHYpIT12fHxnKEgpPT1IfHwiL2EvaSIhPWcodiwiaSIpfSkpKXtnPWZ1bmN0aW9uKE0seCl7dmFyIEU9dGhpcyBpbnN0YW5jZW9mIGcsdz1oKE0pLE49eD09PWs7cmV0dXJuIUUmJncmJk0uY29u''@;'; put 'put ''c3RydWN0b3I9PT1nJiZOP006YShDP25ldyB1KHcmJiFOP00uc291cmNlOk0seCk6dSgodz1NIGluc3RhbmNlb2YgZyk/TS5zb3VyY2U6TSx3JiZOP2YuY2FsbChNKTp4KSxFP3RoaXM6cCxnKX07Zm9yKHZhciBWPWZ1bmN0aW9uKGIpe2IgaW4gZ3x8YyhnLGIse2NvbmZpZ3VyYWJsZTohMCxn''@;'; put 'put ''ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdVtiXX0sc2V0OmZ1bmN0aW9uKE0pe3VbYl09TX19KX0sUz1vKHUpLF89MDtfPFMubGVuZ3RoOylWKFNbXysrXSk7KHAuY29uc3RydWN0b3I9ZykucHJvdG90eXBlPXAsbCgxMikociwiUmVnRXhwIixnKX1sKDM4KSgiUmVnRXhwIil9LGZ1bmN0aW9uKEEs''@;'; put 'put ''ZSxsKXtsKDExMyk7dmFyIHI9bCgxKSxhPWwoNTApLGM9bCg3KSxvPSJ0b1N0cmluZyIsaD0vLi9bb10sZj1mdW5jdGlvbihnKXtsKDEyKShSZWdFeHAucHJvdG90eXBlLG8sZywhMCl9O2woMykoZnVuY3Rpb24oKXtyZXR1cm4iL2EvYiIhPWguY2FsbCh7c291cmNlOiJhIixmbGFnczoiYiJ9''@;'; put 'put ''KX0pP2YoZnVuY3Rpb24oKXt2YXIgdT1yKHRoaXMpO3JldHVybiIvIi5jb25jYXQodS5zb3VyY2UsIi8iLCJmbGFncyJpbiB1P3UuZmxhZ3M6IWMmJnUgaW5zdGFuY2VvZiBSZWdFeHA/YS5jYWxsKHUpOmspfSk6aC5uYW1lIT1vJiZmKGZ1bmN0aW9uKCl7cmV0dXJuIGguY2FsbCh0aGlzKX0p''@;'; put 'put ''fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxKSxhPWwoNiksYz1sKDg4KSxvPWwoNTgpO2woNTkpKCJtYXRjaCIsMSxmdW5jdGlvbihoLGYsZyx1KXtyZXR1cm5bZnVuY3Rpb24odil7dmFyIEg9aCh0aGlzKSxDPXY9PWs/azp2W2ZdO3JldHVybiBDIT09az9DLmNhbGwodixIKTpuZXcgUmVn''@;'; put 'put ''RXhwKHYpW2ZdKFN0cmluZyhIKSl9LGZ1bmN0aW9uKHApe3ZhciB2PXUoZyxwLHRoaXMpO2lmKHYuZG9uZSlyZXR1cm4gdi52YWx1ZTt2YXIgSD1yKHApLEM9U3RyaW5nKHRoaXMpO2lmKCFILmdsb2JhbClyZXR1cm4gbyhILEMpO2Zvcih2YXIgVixTPUgudW5pY29kZSxfPVtdLGI9SC5sYXN0''@;'; put 'put ''SW5kZXg9MDtudWxsIT09KFY9byhILEMpKTspe3ZhciBNPVN0cmluZyhWWzBdKTsiIj09PShfW2JdPU0pJiYoSC5sYXN0SW5kZXg9YyhDLGEoSC5sYXN0SW5kZXgpLFMpKSxiKyt9cmV0dXJuIDA9PT1iP251bGw6X31dfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDEpLGE9bCg5KSxjPWwo''@;'; put 'put ''Niksbz1sKDIwKSxoPWwoODgpLGY9bCg1OCksZz1NYXRoLm1heCx1PU1hdGgubWluLHA9TWF0aC5mbG9vcix2PS9cJChbJCZgJ118XGRcZD98PFtePl0qPikvZyxIPS9cJChbJCZgJ118XGRcZD8pL2c7bCg1OSkoInJlcGxhY2UiLDIsZnVuY3Rpb24oQyxWLFMsXyl7cmV0dXJuW2Z1bmN0aW9u''@;'; put 'put ''KHgsRSl7dmFyIHc9Qyh0aGlzKSxOPXg9PWs/azp4W1ZdO3JldHVybiBOIT09az9OLmNhbGwoeCx3LEUpOlMuY2FsbChTdHJpbmcodykseCxFKX0sZnVuY3Rpb24oTSx4KXt2YXIgRT1fKFMsTSx0aGlzLHgpO2lmKEUuZG9uZSlyZXR1cm4gRS52YWx1ZTt2YXIgdz1yKE0pLE49U3RyaW5nKHRo''@;'; put 'put ''aXMpLEk9ImZ1bmN0aW9uIj09dHlwZW9mIHg7SXx8KHg9U3RyaW5nKHgpKTt2YXIgVz13Lmdsb2JhbDtpZihXKXt2YXIgTz13LnVuaWNvZGU7dy5sYXN0SW5kZXg9MH1mb3IodmFyIEI9W107Oyl7dmFyIFI9Zih3LE4pO2lmKG51bGw9PT1SfHwoQi5wdXNoKFIpLCFXKSlicmVhazsiIj09PVN0''@;'; put 'put ''cmluZyhSWzBdKSYmKHcubGFzdEluZGV4PWgoTixjKHcubGFzdEluZGV4KSxPKSl9Zm9yKHZhciBsMSxhMT0iIixoMT0wLHUxPTA7dTE8Qi5sZW5ndGg7dTErKyl7Uj1CW3UxXTtmb3IodmFyIHAxPVN0cmluZyhSWzBdKSx2MT1nKHUobyhSLmluZGV4KSxOLmxlbmd0aCksMCksRTE9W10saj0x''@;'; put 'put ''O2o8Ui5sZW5ndGg7aisrKUUxLnB1c2goKGwxPVJbal0pPT09az9sMTpTdHJpbmcobDEpKTt2YXIgYzE9Ui5ncm91cHM7aWYoSSl7dmFyIFYxPVtwMV0uY29uY2F0KEUxLHYxLE4pO2MxIT09ayYmVjEucHVzaChjMSk7dmFyIF8xPVN0cmluZyh4LmFwcGx5KGssVjEpKX1lbHNlIF8xPWIocDEs''@;'; put 'put ''Tix2MSxFMSxjMSx4KTtoMTw9djEmJihhMSs9Ti5zbGljZShoMSx2MSkrXzEsaDE9djErcDEubGVuZ3RoKX1yZXR1cm4gYTErTi5zbGljZShoMSl9XTtmdW5jdGlvbiBiKE0seCxFLHcsTixJKXt2YXIgVz1FK00ubGVuZ3RoLE89dy5sZW5ndGgsQj1IO3JldHVybiBOIT09ayYmKE49YShOKSxC''@;'; put 'put ''PXYpLFMuY2FsbChJLEIsZnVuY3Rpb24oUixsMSl7dmFyIGExO3N3aXRjaChsMS5jaGFyQXQoMCkpe2Nhc2UiJCI6cmV0dXJuIiQiO2Nhc2UiJiI6cmV0dXJuIE07Y2FzZSJgIjpyZXR1cm4geC5zbGljZSgwLEUpO2Nhc2UiJyI6cmV0dXJuIHguc2xpY2UoVyk7Y2FzZSI8IjphMT1OW2wxLnNs''@;'; put 'put ''aWNlKDEsLTEpXTticmVhaztkZWZhdWx0OnZhciBoMT0rbDE7aWYoMD09PWgxKXJldHVybiBSO2lmKE88aDEpe3ZhciB1MT1wKGgxLzEwKTtyZXR1cm4gMD09PXUxP1I6dTE8PU8/d1t1MS0xXT09PWs/bDEuY2hhckF0KDEpOndbdTEtMV0rbDEuY2hhckF0KDEpOlJ9YTE9d1toMS0xXX1yZXR1''@;'; put 'put ''cm4gYTE9PT1rPyIiOmExfSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDEpLGE9bCg5OSksYz1sKDU4KTtsKDU5KSgic2VhcmNoIiwxLGZ1bmN0aW9uKG8saCxmLGcpe3JldHVybltmdW5jdGlvbihwKXt2YXIgdj1vKHRoaXMpLEg9cD09az9rOnBbaF07cmV0dXJuIEghPT1rP0guY2Fs''@;'; put 'put ''bChwLHYpOm5ldyBSZWdFeHAocClbaF0oU3RyaW5nKHYpKX0sZnVuY3Rpb24odSl7dmFyIHA9ZyhmLHUsdGhpcyk7aWYocC5kb25lKXJldHVybiBwLnZhbHVlO3ZhciB2PXIodSksSD1TdHJpbmcodGhpcyksQz12Lmxhc3RJbmRleDthKEMsMCl8fCh2Lmxhc3RJbmRleD0wKTt2YXIgVj1jKHYs''@;'; put 'put ''SCk7cmV0dXJuIGEodi5sYXN0SW5kZXgsQyl8fCh2Lmxhc3RJbmRleD1DKSxudWxsPT09Vj8tMTpWLmluZGV4fV19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoNTYpLGE9bCgxKSxjPWwoNTEpLG89bCg4OCksaD1sKDYpLGY9bCg1OCksZz1sKDg3KSx1PWwoMykscD1NYXRoLm1pbix2PVtd''@;'; put 'put ''LnB1c2gsSD0ic3BsaXQiLEM9Imxlbmd0aCIsVj0ibGFzdEluZGV4IixTPTQyOTQ5NjcyOTUsXz0hdShmdW5jdGlvbigpe1JlZ0V4cChTLCJ5Iil9KTtsKDU5KSgic3BsaXQiLDIsZnVuY3Rpb24oYixNLHgsRSl7dmFyIHc7cmV0dXJuIHc9ImMiPT0iYWJiYyJbSF0oLyhiKSovKVsxXXx8NCE9''@;'; put 'put ''InRlc3QiW0hdKC8oPzopLywtMSlbQ118fDIhPSJhYiJbSF0oLyg/OmFiKSovKVtDXXx8NCE9Ii4iW0hdKC8oLj8pKC4/KS8pW0NdfHwxPCIuIltIXSgvKCkoKS8pW0NdfHwiIltIXSgvLj8vKVtDXT9mdW5jdGlvbihOLEkpe3ZhciBXPVN0cmluZyh0aGlzKTtpZihOPT09ayYmMD09PUkpcmV0''@;'; put 'put ''dXJuW107aWYoIXIoTikpcmV0dXJuIHguY2FsbChXLE4sSSk7Zm9yKHZhciBPLEIsUixsMT1bXSxhMT0wLGgxPUk9PT1rP1M6ST4+PjAsdTE9bmV3IFJlZ0V4cChOLnNvdXJjZSwoTi5pZ25vcmVDYXNlPyJpIjoiIikrKE4ubXVsdGlsaW5lPyJtIjoiIikrKE4udW5pY29kZT8idSI6IiIpKyhO''@;'; put 'put ''LnN0aWNreT8ieSI6IiIpKyJnIik7KE89Zy5jYWxsKHUxLFcpKSYmIShhMTwoQj11MVtWXSkmJihsMS5wdXNoKFcuc2xpY2UoYTEsTy5pbmRleCkpLDE8T1tDXSYmTy5pbmRleDxXW0NdJiZ2LmFwcGx5KGwxLE8uc2xpY2UoMSkpLFI9T1swXVtDXSxhMT1CLGgxPD1sMVtDXSkpOyl1MVtWXT09''@;'; put 'put ''PU8uaW5kZXgmJnUxW1ZdKys7cmV0dXJuIGExPT09V1tDXT8hUiYmdTEudGVzdCgiIil8fGwxLnB1c2goIiIpOmwxLnB1c2goVy5zbGljZShhMSkpLGgxPGwxW0NdP2wxLnNsaWNlKDAsaDEpOmwxfToiMCJbSF0oaywwKVtDXT9mdW5jdGlvbihOLEkpe3JldHVybiBOPT09ayYmMD09PUk/W106''@;'; put 'put ''eC5jYWxsKHRoaXMsTixJKX06eCxbZnVuY3Rpb24oSSxXKXt2YXIgTz1iKHRoaXMpLEI9ST09az9rOklbTV07cmV0dXJuIEIhPT1rP0IuY2FsbChJLE8sVyk6dy5jYWxsKFN0cmluZyhPKSxJLFcpfSxmdW5jdGlvbihOLEkpe3ZhciBXPUUodyxOLHRoaXMsSSx3IT09eCk7aWYoVy5kb25lKXJl''@;'; put 'put ''dHVybiBXLnZhbHVlO3ZhciBPPWEoTiksQj1TdHJpbmcodGhpcyksUj1jKE8sUmVnRXhwKSxsMT1PLnVuaWNvZGUsYTE9bmV3IFIoXz9POiJeKD86IitPLnNvdXJjZSsiKSIsKE8uaWdub3JlQ2FzZT8iaSI6IiIpKyhPLm11bHRpbGluZT8ibSI6IiIpKyhPLnVuaWNvZGU/InUiOiIiKSsoXz8i''@;'; put 'put ''eSI6ImciKSksaDE9ST09PWs/UzpJPj4+MDtpZigwPT09aDEpcmV0dXJuW107aWYoMD09PUIubGVuZ3RoKXJldHVybiBudWxsPT09ZihhMSxCKT9bQl06W107Zm9yKHZhciB1MT0wLHAxPTAsdjE9W107cDE8Qi5sZW5ndGg7KXthMS5sYXN0SW5kZXg9Xz9wMTowO3ZhciBFMSxqPWYoYTEsXz9C''@;'; put 'put ''OkIuc2xpY2UocDEpKTtpZihudWxsPT09anx8KEUxPXAoaChhMS5sYXN0SW5kZXgrKF8/MDpwMSkpLEIubGVuZ3RoKSk9PT11MSlwMT1vKEIscDEsbDEpO2Vsc2V7aWYodjEucHVzaChCLnNsaWNlKHUxLHAxKSksdjEubGVuZ3RoPT09aDEpcmV0dXJuIHYxO2Zvcih2YXIgYzE9MTtjMTw9ai5s''@;'; put 'put ''ZW5ndGgtMTtjMSsrKWlmKHYxLnB1c2goaltjMV0pLHYxLmxlbmd0aD09PWgxKXJldHVybiB2MTtwMT11MT1FMX19cmV0dXJuIHYxLnB1c2goQi5zbGljZSh1MSkpLHYxfV19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByLGEsYyxvLGg9bCgyOSksZj1sKDIpLGc9bCgxOCksdT1sKDQ0KSxwPWwo''@;'; put 'put ''MCksdj1sKDQpLEg9bCgxMCksQz1sKDM5KSxWPWwoNDApLFM9bCg1MSksXz1sKDg5KS5zZXQsYj1sKDkwKSgpLE09bCg5MSkseD1sKDExNCksRT1sKDYwKSx3PWwoMTE1KSxOPSJQcm9taXNlIixJPWYuVHlwZUVycm9yLFc9Zi5wcm9jZXNzLE89VyYmVy52ZXJzaW9ucyxCPU8mJk8udjh8fCIi''@;'; put 'put ''LFI9ZltOXSxsMT0icHJvY2VzcyI9PXUoVyksYTE9ZnVuY3Rpb24oKXt9LGgxPWE9TS5mLHUxPSEhZnVuY3Rpb24oKXt0cnl7dmFyIFE9Ui5yZXNvbHZlKDEpLHMxPShRLmNvbnN0cnVjdG9yPXt9KVtsKDUpKCJzcGVjaWVzIildPWZ1bmN0aW9uKG0xKXttMShhMSxhMSl9O3JldHVybihsMXx8''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIFByb21pc2VSZWplY3Rpb25FdmVudCkmJlEudGhlbihhMSlpbnN0YW5jZW9mIHMxJiYwIT09Qi5pbmRleE9mKCI2LjYiKSYmLTE9PT1FLmluZGV4T2YoIkNocm9tZS82NiIpfWNhdGNoKG0xKXt9fSgpLHAxPWZ1bmN0aW9uKFEpe3ZhciBzMTtyZXR1cm4hKCF2''@;'; put 'put ''KFEpfHwiZnVuY3Rpb24iIT10eXBlb2YoczE9US50aGVuKSkmJnMxfSx2MT1mdW5jdGlvbihRLHMxKXtpZighUS5fbil7US5fbj0hMDt2YXIgbTE9US5fYztiKGZ1bmN0aW9uKCl7Zm9yKHZhciBiMT1RLl92LEIxPTE9PVEuX3MsJD0wLHo9ZnVuY3Rpb24oeSl7dmFyIEQsWixULFA9QjE/eS5v''@;'; put 'put ''azp5LmZhaWwsZTE9eS5yZXNvbHZlLHIxPXkucmVqZWN0LFoxPXkuZG9tYWluO3RyeXtQPyhCMXx8KDI9PVEuX2gmJmMxKFEpLFEuX2g9MSksITA9PT1QP0Q9YjE6KFoxJiZaMS5lbnRlcigpLEQ9UChiMSksWjEmJihaMS5leGl0KCksVD0hMCkpLEQ9PT15LnByb21pc2U/cjEoSSgiUHJvbWlz''@;'; put 'put ''ZS1jaGFpbiBjeWNsZSIpKTooWj1wMShEKSk/Wi5jYWxsKEQsZTEscjEpOmUxKEQpKTpyMShiMSl9Y2F0Y2goWSl7WjEmJiFUJiZaMS5leGl0KCkscjEoWSl9fTskPG0xLmxlbmd0aDspeihtMVskKytdKTtRLl9jPVtdLFEuX249ITEsczEmJiFRLl9oJiZFMShRKX0pfX0sRTE9ZnVuY3Rpb24o''@;'; put 'put ''USl7Xy5jYWxsKGYsZnVuY3Rpb24oKXt2YXIgczEsbTEsYjEsQjE9US5fdiwkPWooUSk7aWYoJCYmKHMxPXgoZnVuY3Rpb24oKXtsMT9XLmVtaXQoInVuaGFuZGxlZFJlamVjdGlvbiIsQjEsUSk6KG0xPWYub251bmhhbmRsZWRyZWplY3Rpb24pP20xKHtwcm9taXNlOlEscmVhc29uOkIxfSk6''@;'; put 'put ''KGIxPWYuY29uc29sZSkmJmIxLmVycm9yJiZiMS5lcnJvcigiVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uIixCMSl9KSxRLl9oPWwxfHxqKFEpPzI6MSksUS5fYT1rLCQmJnMxLmUpdGhyb3cgczEudn0pfSxqPWZ1bmN0aW9uKFEpe3JldHVybiAxIT09US5faCYmMD09PShRLl9hfHxRLl9j''@;'; put 'put ''KS5sZW5ndGh9LGMxPWZ1bmN0aW9uKFEpe18uY2FsbChmLGZ1bmN0aW9uKCl7dmFyIHMxO2wxP1cuZW1pdCgicmVqZWN0aW9uSGFuZGxlZCIsUSk6KHMxPWYub25yZWplY3Rpb25oYW5kbGVkKSYmczEoe3Byb21pc2U6USxyZWFzb246US5fdn0pfSl9LFYxPWZ1bmN0aW9uKFEpe3ZhciBzMT10''@;'; put 'put ''aGlzO3MxLl9kfHwoczEuX2Q9ITAsKHMxPXMxLl93fHxzMSkuX3Y9USxzMS5fcz0yLHMxLl9hfHwoczEuX2E9czEuX2Muc2xpY2UoKSksdjEoczEsITApKX0sXzE9ZnVuY3Rpb24oUSl7dmFyIHMxLG0xPXRoaXM7aWYoIW0xLl9kKXttMS5fZD0hMCxtMT1tMS5fd3x8bTE7dHJ5e2lmKG0xPT09''@;'; put 'put ''USl0aHJvdyBJKCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZiIpOyhzMT1wMShRKSk/YihmdW5jdGlvbigpe3ZhciBiMT17X3c6bTEsX2Q6ITF9O3RyeXtzMS5jYWxsKFEsZyhfMSxiMSwxKSxnKFYxLGIxLDEpKX1jYXRjaChCMSl7VjEuY2FsbChiMSxCMSl9fSk6KG0xLl92PVEs''@;'; put 'put ''bTEuX3M9MSx2MShtMSwhMSkpfWNhdGNoKGIxKXtWMS5jYWxsKHtfdzptMSxfZDohMX0sYjEpfX19O3UxfHwoUj1mdW5jdGlvbihzMSl7Qyh0aGlzLFIsTiwiX2giKSxIKHMxKSxyLmNhbGwodGhpcyk7dHJ5e3MxKGcoXzEsdGhpcywxKSxnKFYxLHRoaXMsMSkpfWNhdGNoKG0xKXtWMS5jYWxs''@;'; put 'put ''KHRoaXMsbTEpfX0sKHI9ZnVuY3Rpb24oczEpe3RoaXMuX2M9W10sdGhpcy5fYT1rLHRoaXMuX3M9MCx0aGlzLl9kPSExLHRoaXMuX3Y9ayx0aGlzLl9oPTAsdGhpcy5fbj0hMX0pLnByb3RvdHlwZT1sKDQxKShSLnByb3RvdHlwZSx7dGhlbjpmdW5jdGlvbihzMSxtMSl7dmFyIGIxPWgxKFMo''@;'; put 'put ''dGhpcyxSKSk7cmV0dXJuIGIxLm9rPSJmdW5jdGlvbiIhPXR5cGVvZiBzMXx8czEsYjEuZmFpbD0iZnVuY3Rpb24iPT10eXBlb2YgbTEmJm0xLGIxLmRvbWFpbj1sMT9XLmRvbWFpbjprLHRoaXMuX2MucHVzaChiMSksdGhpcy5fYSYmdGhpcy5fYS5wdXNoKGIxKSx0aGlzLl9zJiZ2MSh0aGlz''@;'; put 'put ''LCExKSxiMS5wcm9taXNlfSxjYXRjaDpmdW5jdGlvbihRKXtyZXR1cm4gdGhpcy50aGVuKGssUSl9fSksYz1mdW5jdGlvbigpe3ZhciBRPW5ldyByO3RoaXMucHJvbWlzZT1RLHRoaXMucmVzb2x2ZT1nKF8xLFEsMSksdGhpcy5yZWplY3Q9ZyhWMSxRLDEpfSxNLmY9aDE9ZnVuY3Rpb24oUSl7''@;'; put 'put ''cmV0dXJuIFE9PT1SfHxRPT09bz9uZXcgYyhRKTphKFEpfSkscChwLkcrcC5XK3AuRiohdTEse1Byb21pc2U6Un0pLGwoNDMpKFIsTiksbCgzOCkoTiksbz1sKDI2KVtOXSxwKHAuUytwLkYqIXUxLE4se3JlamVjdDpmdW5jdGlvbihzMSl7dmFyIG0xPWgxKHRoaXMpO3JldHVybigwLG0xLnJl''@;'; put 'put ''amVjdCkoczEpLG0xLnByb21pc2V9fSkscChwLlMrcC5GKihofHwhdTEpLE4se3Jlc29sdmU6ZnVuY3Rpb24oczEpe3JldHVybiB3KGgmJnRoaXM9PT1vP1I6dGhpcyxzMSl9fSkscChwLlMrcC5GKiEodTEmJmwoNTcpKGZ1bmN0aW9uKFEpe1IuYWxsKFEpLmNhdGNoKGExKX0pKSxOLHthbGw6''@;'; put 'put ''ZnVuY3Rpb24oczEpe3ZhciBtMT10aGlzLGIxPWgxKG0xKSxCMT1iMS5yZXNvbHZlLCQ9YjEucmVqZWN0LHo9eChmdW5jdGlvbigpe3ZhciB5PVtdLEQ9MCxaPTE7VihzMSwhMSxmdW5jdGlvbihUKXt2YXIgUD1EKyssZTE9ITE7eS5wdXNoKGspLForKyxtMS5yZXNvbHZlKFQpLnRoZW4oZnVu''@;'; put 'put ''Y3Rpb24ocjEpe2UxfHwoZTE9ITAseVtQXT1yMSwtLVp8fEIxKHkpKX0sJCl9KSwtLVp8fEIxKHkpfSk7cmV0dXJuIHouZSYmJCh6LnYpLGIxLnByb21pc2V9LHJhY2U6ZnVuY3Rpb24oczEpe3ZhciBtMT10aGlzLGIxPWgxKG0xKSxCMT1iMS5yZWplY3QsJD14KGZ1bmN0aW9uKCl7VihzMSwh''@;'; put 'put ''MSxmdW5jdGlvbih6KXttMS5yZXNvbHZlKHopLnRoZW4oYjEucmVzb2x2ZSxCMSl9KX0pO3JldHVybiAkLmUmJkIxKCQudiksYjEucHJvbWlzZX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMTIwKSxhPWwoNDIpLGM9IldlYWtTZXQiO2woNjEpKGMsZnVuY3Rpb24obyl7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIG8odGhpcywwPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOmspfX0se2FkZDpmdW5jdGlvbihoKXtyZXR1cm4gci5kZWYoYSh0aGlzLGMpLGgsITApfX0sciwhMSwhMCl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgxMCksYz1sKDEpLG89KGwo''@;'; put 'put ''MikuUmVmbGVjdHx8e30pLmFwcGx5LGg9RnVuY3Rpb24uYXBwbHk7cihyLlMrci5GKiFsKDMpKGZ1bmN0aW9uKCl7byhmdW5jdGlvbigpe30pfSksIlJlZmxlY3QiLHthcHBseTpmdW5jdGlvbihnLHUscCl7dmFyIHY9YShnKSxIPWMocCk7cmV0dXJuIG8/byh2LHUsSCk6aC5jYWxsKHYsdSxI''@;'; put 'put ''KX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDM2KSxjPWwoMTApLG89bCgxKSxoPWwoNCksZj1sKDMpLGc9bCgxMDApLHU9KGwoMikuUmVmbGVjdHx8e30pLmNvbnN0cnVjdCxwPWYoZnVuY3Rpb24oKXtmdW5jdGlvbiBIKCl7fXJldHVybiEodShmdW5jdGlvbigpe30sW10s''@;'; put 'put ''SClpbnN0YW5jZW9mIEgpfSksdj0hZihmdW5jdGlvbigpe3UoZnVuY3Rpb24oKXt9KX0pO3Ioci5TK3IuRioocHx8diksIlJlZmxlY3QiLHtjb25zdHJ1Y3Q6ZnVuY3Rpb24oQyxWKXtjKEMpLG8oVik7dmFyIFM9YXJndW1lbnRzLmxlbmd0aDwzP0M6Yyhhcmd1bWVudHNbMl0pO2lmKHYmJiFw''@;'; put 'put ''KXJldHVybiB1KEMsVixTKTtpZihDPT1TKXtzd2l0Y2goVi5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IEM7Y2FzZSAxOnJldHVybiBuZXcgQyhWWzBdKTtjYXNlIDI6cmV0dXJuIG5ldyBDKFZbMF0sVlsxXSk7Y2FzZSAzOnJldHVybiBuZXcgQyhWWzBdLFZbMV0sVlsyXSk7Y2FzZSA0OnJl''@;'; put 'put ''dHVybiBuZXcgQyhWWzBdLFZbMV0sVlsyXSxWWzNdKX12YXIgXz1bbnVsbF07cmV0dXJuIF8ucHVzaC5hcHBseShfLFYpLG5ldyhnLmFwcGx5KEMsXykpfXZhciBiPVMucHJvdG90eXBlLE09YShoKGIpP2I6T2JqZWN0LnByb3RvdHlwZSkseD1GdW5jdGlvbi5hcHBseS5jYWxsKEMsTSxWKTty''@;'; put 'put ''ZXR1cm4gaCh4KT94Ok19fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDgpLGE9bCgwKSxjPWwoMSksbz1sKDIyKTthKGEuUythLkYqbCgzKShmdW5jdGlvbigpe1JlZmxlY3QuZGVmaW5lUHJvcGVydHkoci5mKHt9LDEse3ZhbHVlOjF9KSwxLHt2YWx1ZToyfSl9KSwiUmVmbGVjdCIse2Rl''@;'; put 'put ''ZmluZVByb3BlcnR5OmZ1bmN0aW9uKGYsZyx1KXtjKGYpLGc9byhnLCEwKSxjKHUpO3RyeXtyZXR1cm4gci5mKGYsZyx1KSwhMH1jYXRjaChwKXtyZXR1cm4hMX19fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgxNikuZixjPWwoMSk7cihyLlMsIlJlZmxlY3QiLHtkZWxldGVQ''@;'; put 'put ''cm9wZXJ0eTpmdW5jdGlvbihoLGYpe3ZhciBnPWEoYyhoKSxmKTtyZXR1cm4hKGcmJiFnLmNvbmZpZ3VyYWJsZSkmJmRlbGV0ZSBoW2ZdfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMSksYz1mdW5jdGlvbihvKXt0aGlzLl90PWEobyksdGhpcy5faT0wO3ZhciBoLGY9dGhp''@;'; put 'put ''cy5faz1bXTtmb3IoaCBpbiBvKWYucHVzaChoKX07bCg4MCkoYywiT2JqZWN0IixmdW5jdGlvbigpe3ZhciBvLGg9dGhpcy5faztkb3tpZihoLmxlbmd0aDw9dGhpcy5faSlyZXR1cm57dmFsdWU6ayxkb25lOiEwfX13aGlsZSghKChvPWhbdGhpcy5faSsrXSlpbiB0aGlzLl90KSk7cmV0dXJu''@;'; put 'put ''e3ZhbHVlOm8sZG9uZTohMX19KSxyKHIuUywiUmVmbGVjdCIse2VudW1lcmF0ZTpmdW5jdGlvbihoKXtyZXR1cm4gbmV3IGMoaCl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDE2KSxhPWwoMTcpLGM9bCgxNCksbz1sKDApLGg9bCg0KSxmPWwoMSk7byhvLlMsIlJlZmxlY3QiLHtnZXQ6''@;'; put 'put ''ZnVuY3Rpb24gZyh1LHApe3ZhciB2LEgsQz1hcmd1bWVudHMubGVuZ3RoPDM/dTphcmd1bWVudHNbMl07cmV0dXJuIGYodSk9PT1DP3VbcF06KHY9ci5mKHUscCkpP2ModiwidmFsdWUiKT92LnZhbHVlOnYuZ2V0IT09az92LmdldC5jYWxsKEMpOms6aChIPWEodSkpP2coSCxwLEMpOnZvaWQg''@;'; put 'put ''MH19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMTYpLGE9bCgwKSxjPWwoMSk7YShhLlMsIlJlZmxlY3QiLHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ZnVuY3Rpb24oaCxmKXtyZXR1cm4gci5mKGMoaCksZil9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgxNyksYz1s''@;'; put 'put ''KDEpO3Ioci5TLCJSZWZsZWN0Iix7Z2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oaCl7cmV0dXJuIGEoYyhoKSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJSZWZsZWN0Iix7aGFzOmZ1bmN0aW9uKGMsbyl7cmV0dXJuIG8gaW4gY319KX0sZnVuY3Rpb24oQSxlLGwpe3Zh''@;'; put 'put ''ciByPWwoMCksYT1sKDEpLGM9T2JqZWN0LmlzRXh0ZW5zaWJsZTtyKHIuUywiUmVmbGVjdCIse2lzRXh0ZW5zaWJsZTpmdW5jdGlvbihoKXtyZXR1cm4gYShoKSwhY3x8YyhoKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIlJlZmxlY3QiLHtvd25LZXlzOmwoMTIxKX0p''@;'; put 'put ''fSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMSksYz1PYmplY3QucHJldmVudEV4dGVuc2lvbnM7cihyLlMsIlJlZmxlY3QiLHtwcmV2ZW50RXh0ZW5zaW9uczpmdW5jdGlvbihoKXthKGgpO3RyeXtyZXR1cm4gYyYmYyhoKSwhMH1jYXRjaChmKXtyZXR1cm4hMX19fSl9LGZ1bmN0''@;'; put 'put ''aW9uKEEsZSxsKXt2YXIgcj1sKDgpLGE9bCgxNiksYz1sKDE3KSxvPWwoMTQpLGg9bCgwKSxmPWwoMzIpLGc9bCgxKSx1PWwoNCk7aChoLlMsIlJlZmxlY3QiLHtzZXQ6ZnVuY3Rpb24gcCh2LEgsQyl7dmFyIFYsUyxfPWFyZ3VtZW50cy5sZW5ndGg8ND92OmFyZ3VtZW50c1szXSxiPWEuZihn''@;'; put 'put ''KHYpLEgpO2lmKCFiKXtpZih1KFM9Yyh2KSkpcmV0dXJuIHAoUyxILEMsXyk7Yj1mKDApfWlmKG8oYiwidmFsdWUiKSl7aWYoITE9PT1iLndyaXRhYmxlfHwhdShfKSlyZXR1cm4hMTtpZihWPWEuZihfLEgpKXtpZihWLmdldHx8Vi5zZXR8fCExPT09Vi53cml0YWJsZSlyZXR1cm4hMTtWLnZh''@;'; put 'put ''bHVlPUMsci5mKF8sSCxWKX1lbHNlIHIuZihfLEgsZigwLEMpKTtyZXR1cm4hMH1yZXR1cm4gYi5zZXQhPT1rJiYoYi5zZXQuY2FsbChfLEMpLCEwKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDcxKTthJiZyKHIuUywiUmVmbGVjdCIse3NldFByb3RvdHlwZU9mOmZ1bmN0''@;'; put 'put ''aW9uKG8saCl7YS5jaGVjayhvLGgpO3RyeXtyZXR1cm4gYS5zZXQobyxoKSwhMH1jYXRjaChmKXtyZXR1cm4hMX19fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJEYXRlIix7bm93OmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9fSl9LGZ1bmN0aW9u''@;'; put 'put ''KEEsZSxsKXt2YXIgcj1sKDApLGE9bCg5KSxjPWwoMjIpO3Ioci5QK3IuRipsKDMpKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1uZXcgRGF0ZShOYU4pLnRvSlNPTigpfHwxIT09RGF0ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoe3RvSVNPU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDF9fSl9''@;'; put 'put ''KSwiRGF0ZSIse3RvSlNPTjpmdW5jdGlvbihoKXt2YXIgZj1hKHRoaXMpLGc9YyhmKTtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIGd8fGlzRmluaXRlKGcpP2YudG9JU09TdHJpbmcoKTpudWxsfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMjUyKTtyKHIuUCtyLkYqKERhdGUu''@;'; put 'put ''cHJvdG90eXBlLnRvSVNPU3RyaW5nIT09YSksIkRhdGUiLHt0b0lTT1N0cmluZzphfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDMpLGE9RGF0ZS5wcm90b3R5cGUuZ2V0VGltZSxjPURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nLG89ZnVuY3Rpb24oaCl7cmV0dXJuIDk8aD9oOiIwIito''@;'; put 'put ''fTtBLmV4cG9ydHM9cihmdW5jdGlvbigpe3JldHVybiIwMzg1LTA3LTI1VDA3OjA2OjM5Ljk5OVoiIT1jLmNhbGwobmV3IERhdGUoLTUwMDAwMDAwMDAwMDAxKSl9KXx8IXIoZnVuY3Rpb24oKXtjLmNhbGwobmV3IERhdGUoTmFOKSl9KT9mdW5jdGlvbigpe2lmKCFpc0Zpbml0ZShhLmNhbGwo''@;'; put 'put ''dGhpcykpKXRocm93IFJhbmdlRXJyb3IoIkludmFsaWQgdGltZSB2YWx1ZSIpO3ZhciBmPXRoaXMsZz1mLmdldFVUQ0Z1bGxZZWFyKCksdT1mLmdldFVUQ01pbGxpc2Vjb25kcygpLHA9ZzwwPyItIjo5OTk5PGc/IisiOiIiO3JldHVybiBwKygiMDAwMDAiK01hdGguYWJzKGcpKS5zbGljZShw''@;'; put 'put ''Py02Oi00KSsiLSIrbyhmLmdldFVUQ01vbnRoKCkrMSkrIi0iK28oZi5nZXRVVENEYXRlKCkpKyJUIitvKGYuZ2V0VVRDSG91cnMoKSkrIjoiK28oZi5nZXRVVENNaW51dGVzKCkpKyI6IitvKGYuZ2V0VVRDU2Vjb25kcygpKSsiLiIrKDk5PHU/dToiMCIrbyh1KSkrIloifTpjfSxmdW5jdGlv''@;'; put 'put ''bihBLGUsbCl7dmFyIHI9RGF0ZS5wcm90b3R5cGUsYT0iSW52YWxpZCBEYXRlIixjPSJ0b1N0cmluZyIsbz1yW2NdLGg9ci5nZXRUaW1lO25ldyBEYXRlKE5hTikrIiIhPWEmJmwoMTIpKHIsYyxmdW5jdGlvbigpe3ZhciBnPWguY2FsbCh0aGlzKTtyZXR1cm4gZz09Zz9vLmNhbGwodGhpcyk6''@;'; put 'put ''YX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCg1KSgidG9QcmltaXRpdmUiKSxhPURhdGUucHJvdG90eXBlO3IgaW4gYXx8bCgxMSkoYSxyLGwoMjU1KSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDEpLGE9bCgyMik7QS5leHBvcnRzPWZ1bmN0aW9uKGMpe2lmKCJzdHJpbmciIT09YyYm''@;'; put 'put ''Im51bWJlciIhPT1jJiYiZGVmYXVsdCIhPT1jKXRocm93IFR5cGVFcnJvcigiSW5jb3JyZWN0IGhpbnQiKTtyZXR1cm4gYShyKHRoaXMpLCJudW1iZXIiIT1jKX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCg2MiksYz1sKDkyKSxvPWwoMSksaD1sKDM1KSxmPWwoNiksZz1sKDQp''@;'; put 'put ''LHU9bCgyKS5BcnJheUJ1ZmZlcixwPWwoNTEpLHY9Yy5BcnJheUJ1ZmZlcixIPWMuRGF0YVZpZXcsQz1hLkFCViYmdS5pc1ZpZXcsVj12LnByb3RvdHlwZS5zbGljZSxTPWEuVklFVyxfPSJBcnJheUJ1ZmZlciI7cihyLkcrci5XK3IuRioodSE9PXYpLHtBcnJheUJ1ZmZlcjp2fSkscihyLlMr''@;'; put 'put ''ci5GKiFhLkNPTlNUUixfLHtpc1ZpZXc6ZnVuY3Rpb24oTSl7cmV0dXJuIEMmJkMoTSl8fGcoTSkmJlMgaW4gTX19KSxyKHIuUCtyLlUrci5GKmwoMykoZnVuY3Rpb24oKXtyZXR1cm4hbmV3IHYoMikuc2xpY2UoMSxrKS5ieXRlTGVuZ3RofSksXyx7c2xpY2U6ZnVuY3Rpb24oTSx4KXtpZihW''@;'; put 'put ''IT09ayYmeD09PWspcmV0dXJuIFYuY2FsbChvKHRoaXMpLE0pO2Zvcih2YXIgRT1vKHRoaXMpLmJ5dGVMZW5ndGgsdz1oKE0sRSksTj1oKHg9PT1rP0U6eCxFKSxJPW5ldyhwKHRoaXMsdikpKGYoTi13KSksVz1uZXcgSCh0aGlzKSxPPW5ldyBIKEkpLEI9MDt3PE47KU8uc2V0VWludDgoQisr''@;'; put 'put ''LFcuZ2V0VWludDgodysrKSk7cmV0dXJuIEl9fSksbCgzOCkoXyl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5HK3IuVytyLkYqIWwoNjIpLkFCVix7RGF0YVZpZXc6bCg5MikuRGF0YVZpZXd9KX0sZnVuY3Rpb24oQSxlLGwpe2woMjcpKCJJbnQ4IiwxLGZ1bmN0aW9uKHIpe3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbihjLG8saCl7cmV0dXJuIHIodGhpcyxjLG8saCl9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDI3KSgiVWludDgiLDEsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKGMsbyxoKXtyZXR1cm4gcih0aGlzLGMsbyxoKX19KX0sZnVuY3Rpb24oQSxlLGwpe2woMjcpKCJVaW50''@;'; put 'put ''OCIsMSxmdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24oYyxvLGgpe3JldHVybiByKHRoaXMsYyxvLGgpfX0sITApfSxmdW5jdGlvbihBLGUsbCl7bCgyNykoIkludDE2IiwyLGZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbihjLG8saCl7cmV0dXJuIHIodGhpcyxjLG8saCl9fSl9LGZ1bmN0''@;'; put 'put ''aW9uKEEsZSxsKXtsKDI3KSgiVWludDE2IiwyLGZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbihjLG8saCl7cmV0dXJuIHIodGhpcyxjLG8saCl9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDI3KSgiSW50MzIiLDQsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKGMsbyxoKXtyZXR1cm4gcih0''@;'; put 'put ''aGlzLGMsbyxoKX19KX0sZnVuY3Rpb24oQSxlLGwpe2woMjcpKCJVaW50MzIiLDQsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKGMsbyxoKXtyZXR1cm4gcih0aGlzLGMsbyxoKX19KX0sZnVuY3Rpb24oQSxlLGwpe2woMjcpKCJGbG9hdDMyIiw0LGZ1bmN0aW9uKHIpe3JldHVybiBmdW5j''@;'; put 'put ''dGlvbihjLG8saCl7cmV0dXJuIHIodGhpcyxjLG8saCl9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDI3KSgiRmxvYXQ2NCIsOCxmdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24oYyxvLGgpe3JldHVybiByKHRoaXMsYyxvLGgpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoNTIp''@;'; put 'put ''KCEwKTtyKHIuUCwiQXJyYXkiLHtpbmNsdWRlczpmdW5jdGlvbihvKXtyZXR1cm4gYSh0aGlzLG8sMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTprKX19KSxsKDMxKSgiaW5jbHVkZXMiKX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDEyMyksYz1sKDkpLG89bCg2KSxo''@;'; put 'put ''PWwoMTApLGY9bCg4NCk7cihyLlAsIkFycmF5Iix7ZmxhdE1hcDpmdW5jdGlvbih1KXt2YXIgcCx2LEg9Yyh0aGlzKTtyZXR1cm4gaCh1KSxwPW8oSC5sZW5ndGgpLHY9ZihILDApLGEodixILEgscCwwLDEsdSxhcmd1bWVudHNbMV0pLHZ9fSksbCgzMSkoImZsYXRNYXAiKX0sZnVuY3Rpb24o''@;'; put 'put ''QSxlLGwpe3ZhciByPWwoMCksYT1sKDEyMyksYz1sKDkpLG89bCg2KSxoPWwoMjApLGY9bCg4NCk7cihyLlAsIkFycmF5Iix7ZmxhdHRlbjpmdW5jdGlvbigpe3ZhciB1PWFyZ3VtZW50c1swXSxwPWModGhpcyksdj1vKHAubGVuZ3RoKSxIPWYocCwwKTtyZXR1cm4gYShILHAscCx2LDAsdT09''@;'; put 'put ''PWs/MTpoKHUpKSxIfX0pLGwoMzEpKCJmbGF0dGVuIil9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCg1NSkoITApO3Ioci5QLCJTdHJpbmciLHthdDpmdW5jdGlvbihvKXtyZXR1cm4gYSh0aGlzLG8pfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMTI0KSxjPWwo''@;'; put 'put ''NjApLG89L1ZlcnNpb25cLzEwXC5cZCsoXC5cZCspPyggTW9iaWxlXC9cdyspPyBTYWZhcmlcLy8udGVzdChjKTtyKHIuUCtyLkYqbywiU3RyaW5nIix7cGFkU3RhcnQ6ZnVuY3Rpb24oZil7cmV0dXJuIGEodGhpcyxmLDE8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06aywhMCl9fSl9''@;'; put 'put ''LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApLGE9bCgxMjQpLGM9bCg2MCksbz0vVmVyc2lvblwvMTBcLlxkKyhcLlxkKyk/KCBNb2JpbGVcL1x3Kyk/IFNhZmFyaVwvLy50ZXN0KGMpO3Ioci5QK3IuRipvLCJTdHJpbmciLHtwYWRFbmQ6ZnVuY3Rpb24oZil7cmV0dXJuIGEodGhpcyxmLDE8''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06aywhMSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDQ1KSgidHJpbUxlZnQiLGZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiByKHRoaXMsMSl9fSwidHJpbVN0YXJ0Iil9LGZ1bmN0aW9uKEEsZSxsKXtsKDQ1KSgidHJpbVJp''@;'; put 'put ''Z2h0IixmdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLDIpfX0sInRyaW1FbmQiKX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDIzKSxjPWwoNiksbz1sKDU2KSxoPWwoNTApLGY9UmVnRXhwLnByb3RvdHlwZSxnPWZ1bmN0aW9uKHUscCl7dGhpcy5f''@;'; put 'put ''cj11LHRoaXMuX3M9cH07bCg4MCkoZywiUmVnRXhwIFN0cmluZyIsZnVuY3Rpb24oKXt2YXIgcD10aGlzLl9yLmV4ZWModGhpcy5fcyk7cmV0dXJue3ZhbHVlOnAsZG9uZTpudWxsPT09cH19KSxyKHIuUCwiU3RyaW5nIix7bWF0Y2hBbGw6ZnVuY3Rpb24ocCl7aWYoYSh0aGlzKSwhbyhwKSl0''@;'; put 'put ''aHJvdyBUeXBlRXJyb3IocCsiIGlzIG5vdCBhIHJlZ2V4cCEiKTt2YXIgdj1TdHJpbmcodGhpcyksSD0iZmxhZ3MiaW4gZj9TdHJpbmcocC5mbGFncyk6aC5jYWxsKHApLEM9bmV3IFJlZ0V4cChwLnNvdXJjZSx+SC5pbmRleE9mKCJnIik/SDoiZyIrSCk7cmV0dXJuIEMubGFzdEluZGV4PWMo''@;'; put 'put ''cC5sYXN0SW5kZXgpLG5ldyBnKEMsdil9fSl9LGZ1bmN0aW9uKEEsZSxsKXtsKDY3KSgiYXN5bmNJdGVyYXRvciIpfSxmdW5jdGlvbihBLGUsbCl7bCg2NykoIm9ic2VydmFibGUiKX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDEyMSksYz1sKDE1KSxvPWwoMTYpLGg9bCg4Mik7''@;'; put 'put ''cihyLlMsIk9iamVjdCIse2dldE93blByb3BlcnR5RGVzY3JpcHRvcnM6ZnVuY3Rpb24oZyl7Zm9yKHZhciB1LHAsdj1jKGcpLEg9by5mLEM9YSh2KSxWPXt9LFM9MDtTPEMubGVuZ3RoOykocD1IKHYsdT1DW1MrK10pKSE9PWsmJmgoVix1LHApO3JldHVybiBWfX0pfSxmdW5jdGlvbihBLGUs''@;'; put 'put ''bCl7dmFyIHI9bCgwKSxhPWwoMTI1KSghMSk7cihyLlMsIk9iamVjdCIse3ZhbHVlczpmdW5jdGlvbihvKXtyZXR1cm4gYShvKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDEyNSkoITApO3Ioci5TLCJPYmplY3QiLHtlbnRyaWVzOmZ1bmN0aW9uKG8pe3JldHVybiBhKG8p''@;'; put 'put ''fX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoOSksYz1sKDEwKSxvPWwoOCk7bCg3KSYmcihyLlArbCg2MyksIk9iamVjdCIse19fZGVmaW5lR2V0dGVyX186ZnVuY3Rpb24oZixnKXtvLmYoYSh0aGlzKSxmLHtnZXQ6YyhnKSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh''@;'; put 'put ''MH0pfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoOSksYz1sKDEwKSxvPWwoOCk7bCg3KSYmcihyLlArbCg2MyksIk9iamVjdCIse19fZGVmaW5lU2V0dGVyX186ZnVuY3Rpb24oZixnKXtvLmYoYSh0aGlzKSxmLHtzZXQ6YyhnKSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJs''@;'; put 'put ''ZTohMH0pfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoOSksYz1sKDIyKSxvPWwoMTcpLGg9bCgxNikuZjtsKDcpJiZyKHIuUCtsKDYzKSwiT2JqZWN0Iix7X19sb29rdXBHZXR0ZXJfXzpmdW5jdGlvbihnKXt2YXIgdSxwPWEodGhpcyksdj1jKGcsITApO2Rve2lmKHU9aChw''@;'; put 'put ''LHYpKXJldHVybiB1LmdldH13aGlsZShwPW8ocCkpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoOSksYz1sKDIyKSxvPWwoMTcpLGg9bCgxNikuZjtsKDcpJiZyKHIuUCtsKDYzKSwiT2JqZWN0Iix7X19sb29rdXBTZXR0ZXJfXzpmdW5jdGlvbihnKXt2YXIgdSxwPWEodGhp''@;'; put 'put ''cyksdj1jKGcsITApO2Rve2lmKHU9aChwLHYpKXJldHVybiB1LnNldH13aGlsZShwPW8ocCkpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKTtyKHIuUCtyLlIsIk1hcCIse3RvSlNPTjpsKDEyNikoIk1hcCIpfSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5QK3IuUiwi''@;'; put 'put ''U2V0Iix7dG9KU09OOmwoMTI2KSgiU2V0Iil9KX0sZnVuY3Rpb24oQSxlLGwpe2woNjQpKCJNYXAiKX0sZnVuY3Rpb24oQSxlLGwpe2woNjQpKCJTZXQiKX0sZnVuY3Rpb24oQSxlLGwpe2woNjQpKCJXZWFrTWFwIil9LGZ1bmN0aW9uKEEsZSxsKXtsKDY0KSgiV2Vha1NldCIpfSxmdW5jdGlv''@;'; put 'put ''bihBLGUsbCl7bCg2NSkoIk1hcCIpfSxmdW5jdGlvbihBLGUsbCl7bCg2NSkoIlNldCIpfSxmdW5jdGlvbihBLGUsbCl7bCg2NSkoIldlYWtNYXAiKX0sZnVuY3Rpb24oQSxlLGwpe2woNjUpKCJXZWFrU2V0Iil9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5HLHtnbG9iYWw6bCgy''@;'; put 'put ''KX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKTtyKHIuUywiU3lzdGVtIix7Z2xvYmFsOmwoMil9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDE5KTtyKHIuUywiRXJyb3IiLHtpc0Vycm9yOmZ1bmN0aW9uKG8pe3JldHVybiJFcnJvciI9PT1hKG8pfX0pfSxmdW5jdGlv''@;'; put 'put ''bihBLGUsbCl7dmFyIHI9bCgwKTtyKHIuUywiTWF0aCIse2NsYW1wOmZ1bmN0aW9uKGMsbyxoKXtyZXR1cm4gTWF0aC5taW4oaCxNYXRoLm1heChvLGMpKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk1hdGgiLHtERUdfUEVSX1JBRDpNYXRoLlBJLzE4MH0pfSxmdW5j''@;'; put 'put ''dGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPTE4MC9NYXRoLlBJO3Ioci5TLCJNYXRoIix7ZGVncmVlczpmdW5jdGlvbihvKXtyZXR1cm4gbyphfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMTI4KSxjPWwoMTA3KTtyKHIuUywiTWF0aCIse2ZzY2FsZTpmdW5jdGlvbihoLGYs''@;'; put 'put ''Zyx1LHApe3JldHVybiBjKGEoaCxmLGcsdSxwKSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJNYXRoIix7aWFkZGg6ZnVuY3Rpb24oYyxvLGgsZil7dmFyIGc9Yz4+PjAsdT1oPj4+MDtyZXR1cm4obz4+PjApKyhmPj4+MCkrKChnJnV8KGd8dSkmfihnK3U+Pj4wKSk+''@;'; put 'put ''Pj4zMSl8MH19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk1hdGgiLHtpc3ViaDpmdW5jdGlvbihjLG8saCxmKXt2YXIgZz1jPj4+MCx1PWg+Pj4wO3JldHVybihvPj4+MCktKGY+Pj4wKS0oKH5nJnV8fihnXnUpJmctdT4+PjApPj4+MzEpfDB9fSl9LGZ1bmN0aW9uKEEs''@;'; put 'put ''ZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJNYXRoIix7aW11bGg6ZnVuY3Rpb24oYyxvKXt2YXIgaD0rYyxmPStvLGc9NjU1MzUmaCx1PTY1NTM1JmYscD1oPj4xNix2PWY+PjE2LEg9KHAqdT4+PjApKyhnKnU+Pj4xNik7cmV0dXJuIHAqdisoSD4+MTYpKygoZyp2Pj4+MCkrKDY1NTM1JkgpPj4x''@;'; put 'put ''Nil9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJNYXRoIix7UkFEX1BFUl9ERUc6MTgwL01hdGguUEl9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1NYXRoLlBJLzE4MDtyKHIuUywiTWF0aCIse3JhZGlhbnM6ZnVuY3Rpb24obyl7cmV0dXJuIG8qYX19KX0s''@;'; put 'put ''ZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk1hdGgiLHtzY2FsZTpsKDEyOCl9KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCk7cihyLlMsIk1hdGgiLHt1bXVsaDpmdW5jdGlvbihjLG8pe3ZhciBoPStjLGY9K28sZz02NTUzNSZoLHU9NjU1MzUmZixwPWg+Pj4xNix2PWY+''@;'; put 'put ''Pj4xNixIPShwKnU+Pj4wKSsoZyp1Pj4+MTYpO3JldHVybiBwKnYrKEg+Pj4xNikrKChnKnY+Pj4wKSsoNjU1MzUmSCk+Pj4xNil9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDApO3Ioci5TLCJNYXRoIix7c2lnbmJpdDpmdW5jdGlvbihjKXtyZXR1cm4oYz0rYykhPWM/YzowPT1jPzEv''@;'; put 'put ''Yz09MS8wOjA8Y319KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDI2KSxjPWwoMiksbz1sKDUxKSxoPWwoMTE1KTtyKHIuUCtyLlIsIlByb21pc2UiLHtmaW5hbGx5OmZ1bmN0aW9uKGYpe3ZhciBnPW8odGhpcyxhLlByb21pc2V8fGMuUHJvbWlzZSksdT0iZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgZjtyZXR1cm4gdGhpcy50aGVuKHU/ZnVuY3Rpb24ocCl7cmV0dXJuIGgoZyxmKCkpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gcH0pfTpmLHU/ZnVuY3Rpb24ocCl7cmV0dXJuIGgoZyxmKCkpLnRoZW4oZnVuY3Rpb24oKXt0aHJvdyBwfSl9OmYpfX0pfSxmdW5jdGlvbihBLGUsbCl7''@;'; put 'put ''dmFyIHI9bCgwKSxhPWwoOTEpLGM9bCgxMTQpO3Ioci5TLCJQcm9taXNlIix7dHJ5OmZ1bmN0aW9uKG8pe3ZhciBoPWEuZih0aGlzKSxmPWMobyk7cmV0dXJuKGYuZT9oLnJlamVjdDpoLnJlc29sdmUpKGYudiksaC5wcm9taXNlfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyOCksYT1s''@;'; put 'put ''KDEpLGM9ci5rZXksbz1yLnNldDtyLmV4cCh7ZGVmaW5lTWV0YWRhdGE6ZnVuY3Rpb24oZixnLHUscCl7byhmLGcsYSh1KSxjKHApKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMjgpLGE9bCgxKSxjPXIua2V5LG89ci5tYXAsaD1yLnN0b3JlO3IuZXhwKHtkZWxldGVNZXRhZGF0YTpm''@;'; put 'put ''dW5jdGlvbihnLHUpe3ZhciBwPWFyZ3VtZW50cy5sZW5ndGg8Mz9rOmMoYXJndW1lbnRzWzJdKSx2PW8oYSh1KSxwLCExKTtpZih2PT09a3x8IXYuZGVsZXRlKGcpKXJldHVybiExO2lmKHYuc2l6ZSlyZXR1cm4hMDt2YXIgSD1oLmdldCh1KTtyZXR1cm4gSC5kZWxldGUocCksISFILnNpemV8''@;'; put 'put ''fGguZGVsZXRlKHUpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyOCksYT1sKDEpLGM9bCgxNyksbz1yLmhhcyxoPXIuZ2V0LGY9ci5rZXksZz1mdW5jdGlvbih1LHAsdil7aWYobyh1LHAsdikpcmV0dXJuIGgodSxwLHYpO3ZhciBIPWMocCk7cmV0dXJuIG51bGwhPT1IP2codSxILHYp''@;'; put 'put ''Omt9O3IuZXhwKHtnZXRNZXRhZGF0YTpmdW5jdGlvbihwLHYpe3JldHVybiBnKHAsYSh2KSxhcmd1bWVudHMubGVuZ3RoPDM/azpmKGFyZ3VtZW50c1syXSkpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgxMTgpLGE9bCgxMjcpLGM9bCgyOCksbz1sKDEpLGg9bCgxNyksZj1jLmtleXMs''@;'; put 'put ''Zz1jLmtleSx1PWZ1bmN0aW9uKHAsdil7dmFyIEg9ZihwLHYpLEM9aChwKTtpZihudWxsPT09QylyZXR1cm4gSDt2YXIgVj11KEMsdik7cmV0dXJuIFYubGVuZ3RoP0gubGVuZ3RoP2EobmV3IHIoSC5jb25jYXQoVikpKTpWOkh9O2MuZXhwKHtnZXRNZXRhZGF0YUtleXM6ZnVuY3Rpb24odil7''@;'; put 'put ''cmV0dXJuIHUobyh2KSxhcmd1bWVudHMubGVuZ3RoPDI/azpnKGFyZ3VtZW50c1sxXSkpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyOCksYT1sKDEpLGM9ci5nZXQsbz1yLmtleTtyLmV4cCh7Z2V0T3duTWV0YWRhdGE6ZnVuY3Rpb24oZixnKXtyZXR1cm4gYyhmLGEoZyksYXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aDwzP2s6byhhcmd1bWVudHNbMl0pKX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMjgpLGE9bCgxKSxjPXIua2V5cyxvPXIua2V5O3IuZXhwKHtnZXRPd25NZXRhZGF0YUtleXM6ZnVuY3Rpb24oZil7cmV0dXJuIGMoYShmKSxhcmd1bWVudHMubGVuZ3RoPDI/azpvKGFy''@;'; put 'put ''Z3VtZW50c1sxXSkpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyOCksYT1sKDEpLGM9bCgxNyksbz1yLmhhcyxoPXIua2V5LGY9ZnVuY3Rpb24oZyx1LHApe2lmKG8oZyx1LHApKXJldHVybiEwO3ZhciB2PWModSk7cmV0dXJuIG51bGwhPT12JiZmKGcsdixwKX07ci5leHAoe2hhc01l''@;'; put 'put ''dGFkYXRhOmZ1bmN0aW9uKHUscCl7cmV0dXJuIGYodSxhKHApLGFyZ3VtZW50cy5sZW5ndGg8Mz9rOmgoYXJndW1lbnRzWzJdKSl9fSl9LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDI4KSxhPWwoMSksYz1yLmhhcyxvPXIua2V5O3IuZXhwKHtoYXNPd25NZXRhZGF0YTpmdW5jdGlvbihmLGcp''@;'; put 'put ''e3JldHVybiBjKGYsYShnKSxhcmd1bWVudHMubGVuZ3RoPDM/azpvKGFyZ3VtZW50c1syXSkpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgyOCksYT1sKDEpLGM9bCgxMCksbz1yLmtleSxoPXIuc2V0O3IuZXhwKHttZXRhZGF0YTpmdW5jdGlvbihnLHUpe3JldHVybiBmdW5jdGlvbih2''@;'; put 'put ''LEgpe2goZyx1LChIIT09az9hOmMpKHYpLG8oSCkpfX19KX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDkwKSgpLGM9bCgyKS5wcm9jZXNzLG89InByb2Nlc3MiPT1sKDE5KShjKTtyKHIuRyx7YXNhcDpmdW5jdGlvbihmKXt2YXIgZz1vJiZjLmRvbWFpbjthKGc/Zy5iaW5kKGYp''@;'; put 'put ''OmYpfX0pfSxmdW5jdGlvbihBLGUsbCl7dmFyIHI9bCgwKSxhPWwoMiksYz1sKDI2KSxvPWwoOTApKCksaD1sKDUpKCJvYnNlcnZhYmxlIiksZj1sKDEwKSxnPWwoMSksdT1sKDM5KSxwPWwoNDEpLHY9bCgxMSksSD1sKDQwKSxDPUguUkVUVVJOLFY9ZnVuY3Rpb24odyl7cmV0dXJuIG51bGw9''@;'; put 'put ''PXc/azpmKHcpfSxTPWZ1bmN0aW9uKHcpe3ZhciBOPXcuX2M7TiYmKHcuX2M9ayxOKCkpfSxfPWZ1bmN0aW9uKHcpe3JldHVybiB3Ll9vPT09a30sYj1mdW5jdGlvbih3KXtfKHcpfHwody5fbz1rLFModykpfSxNPWZ1bmN0aW9uKHcsTil7Zyh3KSx0aGlzLl9jPWssdGhpcy5fbz13LHc9bmV3''@;'; put 'put ''IHgodGhpcyk7dHJ5e3ZhciBJPU4odyksVz1JO251bGwhPUkmJigiZnVuY3Rpb24iPT10eXBlb2YgSS51bnN1YnNjcmliZT9JPWZ1bmN0aW9uKCl7Vy51bnN1YnNjcmliZSgpfTpmKEkpLHRoaXMuX2M9SSl9Y2F0Y2goTyl7cmV0dXJuIHZvaWQgdy5lcnJvcihPKX1fKHRoaXMpJiZTKHRoaXMp''@;'; put 'put ''fTtNLnByb3RvdHlwZT1wKHt9LHt1bnN1YnNjcmliZTpmdW5jdGlvbigpe2IodGhpcyl9fSk7dmFyIHg9ZnVuY3Rpb24odyl7dGhpcy5fcz13fTt4LnByb3RvdHlwZT1wKHt9LHtuZXh0OmZ1bmN0aW9uKE4pe3ZhciBJPXRoaXMuX3M7aWYoIV8oSSkpe3ZhciBXPUkuX287dHJ5e3ZhciBPPVYo''@;'; put 'put ''Vy5uZXh0KTtpZihPKXJldHVybiBPLmNhbGwoVyxOKX1jYXRjaChCKXt0cnl7YihJKX1maW5hbGx5e3Rocm93IEJ9fX19LGVycm9yOmZ1bmN0aW9uKE4pe3ZhciBJPXRoaXMuX3M7aWYoXyhJKSl0aHJvdyBOO3ZhciBXPUkuX287SS5fbz1rO3RyeXt2YXIgTz1WKFcuZXJyb3IpO2lmKCFPKXRo''@;'; put 'put ''cm93IE47Tj1PLmNhbGwoVyxOKX1jYXRjaChCKXt0cnl7UyhJKX1maW5hbGx5e3Rocm93IEJ9fXJldHVybiBTKEkpLE59LGNvbXBsZXRlOmZ1bmN0aW9uKE4pe3ZhciBJPXRoaXMuX3M7aWYoIV8oSSkpe3ZhciBXPUkuX287SS5fbz1rO3RyeXt2YXIgTz1WKFcuY29tcGxldGUpO049Tz9PLmNh''@;'; put 'put ''bGwoVyxOKTprfWNhdGNoKEIpe3RyeXtTKEkpfWZpbmFsbHl7dGhyb3cgQn19cmV0dXJuIFMoSSksTn19fSk7dmFyIEU9ZnVuY3Rpb24oTil7dSh0aGlzLEUsIk9ic2VydmFibGUiLCJfZiIpLl9mPWYoTil9O3AoRS5wcm90b3R5cGUse3N1YnNjcmliZTpmdW5jdGlvbihOKXtyZXR1cm4gbmV3''@;'; put 'put ''IE0oTix0aGlzLl9mKX0sZm9yRWFjaDpmdW5jdGlvbihOKXt2YXIgST10aGlzO3JldHVybiBuZXcoYy5Qcm9taXNlfHxhLlByb21pc2UpKGZ1bmN0aW9uKFcsTyl7ZihOKTt2YXIgQj1JLnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbihSKXt0cnl7cmV0dXJuIE4oUil9Y2F0Y2gobDEpe08obDEp''@;'; put 'put ''LEIudW5zdWJzY3JpYmUoKX19LGVycm9yOk8sY29tcGxldGU6V30pfSl9fSkscChFLHtmcm9tOmZ1bmN0aW9uKE4pe3ZhciBJPSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzP3RoaXM6RSxXPVYoZyhOKVtoXSk7aWYoVyl7dmFyIE89ZyhXLmNhbGwoTikpO3JldHVybiBPLmNvbnN0cnVjdG9yPT09''@;'; put 'put ''ST9POm5ldyBJKGZ1bmN0aW9uKEIpe3JldHVybiBPLnN1YnNjcmliZShCKX0pfXJldHVybiBuZXcgSShmdW5jdGlvbihCKXt2YXIgUj0hMTtyZXR1cm4gbyhmdW5jdGlvbigpe2lmKCFSKXt0cnl7aWYoSChOLCExLGZ1bmN0aW9uKGwxKXtpZihCLm5leHQobDEpLFIpcmV0dXJuIEN9KT09PUMp''@;'; put 'put ''cmV0dXJufWNhdGNoKGwxKXtpZihSKXRocm93IGwxO3JldHVybiB2b2lkIEIuZXJyb3IobDEpfUIuY29tcGxldGUoKX19KSxmdW5jdGlvbigpe1I9ITB9fSl9LG9mOmZ1bmN0aW9uKCl7Zm9yKHZhciBOPTAsST1hcmd1bWVudHMubGVuZ3RoLFc9bmV3IEFycmF5KEkpO048STspV1tOXT1hcmd1''@;'; put 'put ''bWVudHNbTisrXTtyZXR1cm4gbmV3KCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzP3RoaXM6RSkoZnVuY3Rpb24oTyl7dmFyIEI9ITE7cmV0dXJuIG8oZnVuY3Rpb24oKXtpZighQil7Zm9yKHZhciBSPTA7UjxXLmxlbmd0aDsrK1IpaWYoTy5uZXh0KFdbUl0pLEIpcmV0dXJuO08uY29tcGxldGUo''@;'; put 'put ''KX19KSxmdW5jdGlvbigpe0I9ITB9fSl9fSksdihFLnByb3RvdHlwZSxoLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxyKHIuRyx7T2JzZXJ2YWJsZTpFfSksbCgzOCkoIk9ic2VydmFibGUiKX0sZnVuY3Rpb24oQSxlLGwpe3ZhciByPWwoMCksYT1sKDg5KTtyKHIuRytyLkIse3NldEltbWVk''@;'; put 'put ''aWF0ZTphLnNldCxjbGVhckltbWVkaWF0ZTphLmNsZWFyfSl9LGZ1bmN0aW9uKEEsZSxsKXtmb3IodmFyIHI9bCg4NiksYT1sKDM0KSxjPWwoMTIpLG89bCgyKSxoPWwoMTEpLGY9bCg0NiksZz1sKDUpLHU9ZygiaXRlcmF0b3IiKSxwPWcoInRvU3RyaW5nVGFnIiksdj1mLkFycmF5LEg9e0NT''@;'; put 'put ''U1J1bGVMaXN0OiEwLENTU1N0eWxlRGVjbGFyYXRpb246ITEsQ1NTVmFsdWVMaXN0OiExLENsaWVudFJlY3RMaXN0OiExLERPTVJlY3RMaXN0OiExLERPTVN0cmluZ0xpc3Q6ITEsRE9NVG9rZW5MaXN0OiEwLERhdGFUcmFuc2Zlckl0ZW1MaXN0OiExLEZpbGVMaXN0OiExLEhUTUxBbGxDb2xs''@;'; put 'put ''ZWN0aW9uOiExLEhUTUxDb2xsZWN0aW9uOiExLEhUTUxGb3JtRWxlbWVudDohMSxIVE1MU2VsZWN0RWxlbWVudDohMSxNZWRpYUxpc3Q6ITAsTWltZVR5cGVBcnJheTohMSxOYW1lZE5vZGVNYXA6ITEsTm9kZUxpc3Q6ITAsUGFpbnRSZXF1ZXN0TGlzdDohMSxQbHVnaW46ITEsUGx1Z2luQXJy''@;'; put 'put ''YXk6ITEsU1ZHTGVuZ3RoTGlzdDohMSxTVkdOdW1iZXJMaXN0OiExLFNWR1BhdGhTZWdMaXN0OiExLFNWR1BvaW50TGlzdDohMSxTVkdTdHJpbmdMaXN0OiExLFNWR1RyYW5zZm9ybUxpc3Q6ITEsU291cmNlQnVmZmVyTGlzdDohMSxTdHlsZVNoZWV0TGlzdDohMCxUZXh0VHJhY2tDdWVMaXN0''@;'; put 'put ''OiExLFRleHRUcmFja0xpc3Q6ITEsVG91Y2hMaXN0OiExfSxDPWEoSCksVj0wO1Y8Qy5sZW5ndGg7VisrKXt2YXIgUyxfPUNbVl0sYj1IW19dLE09b1tfXSx4PU0mJk0ucHJvdG90eXBlO2lmKHgmJih4W3VdfHxoKHgsdSx2KSx4W3BdfHxoKHgscCxfKSxmW19dPXYsYikpZm9yKFMgaW4gcil4''@;'; put 'put ''W1NdfHxjKHgsUyxyW1NdLCEwKX19LGZ1bmN0aW9uKEEsZSxsKXt2YXIgcj1sKDIpLGE9bCgwKSxjPWwoNjApLG89W10uc2xpY2UsaD0vTVNJRSAuXC4vLnRlc3QoYyksZj1mdW5jdGlvbihnKXtyZXR1cm4gZnVuY3Rpb24odSxwKXt2YXIgdj0yPGFyZ3VtZW50cy5sZW5ndGgsSD0hIXYmJm8u''@;'; put 'put ''Y2FsbChhcmd1bWVudHMsMik7cmV0dXJuIGcodj9mdW5jdGlvbigpeygiZnVuY3Rpb24iPT10eXBlb2YgdT91OkZ1bmN0aW9uKHUpKS5hcHBseSh0aGlzLEgpfTp1LHApfX07YShhLkcrYS5CK2EuRipoLHtzZXRUaW1lb3V0OmYoci5zZXRUaW1lb3V0KSxzZXRJbnRlcnZhbDpmKHIuc2V0SW50''@;'; put 'put ''ZXJ2YWwpfSl9XSksInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPVg6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoZnVuY3Rpb24oKXtyZXR1cm4gWH0pOkYxLmNvcmU9WH0pKDEsMSksd2luZG93Lk11''@;'; put 'put ''dGF0aW9uT2JzZXJ2ZXJ8fCh3aW5kb3cuTXV0YXRpb25PYnNlcnZlcj1mdW5jdGlvbihYKXtmdW5jdGlvbiBGMShDKXt0aGlzLmk9W10sdGhpcy5tPUN9ZnVuY3Rpb24gQShDKXt2YXIgUyxWPXt0eXBlOm51bGwsdGFyZ2V0Om51bGwsYWRkZWROb2RlczpbXSxyZW1vdmVkTm9kZXM6W10scHJl''@;'; put 'put ''dmlvdXNTaWJsaW5nOm51bGwsbmV4dFNpYmxpbmc6bnVsbCxhdHRyaWJ1dGVOYW1lOm51bGwsYXR0cmlidXRlTmFtZXNwYWNlOm51bGwsb2xkVmFsdWU6bnVsbH07Zm9yKFMgaW4gQylWW1NdIT09WCYmQ1tTXSE9PVgmJihWW1NdPUNbU10pO3JldHVybiBWfWZ1bmN0aW9uIGUoQyxWKXt2YXIg''@;'; put 'put ''Uz1vKEMsVik7cmV0dXJuIGZ1bmN0aW9uKF8pe3ZhciBiPV8ubGVuZ3RoO2lmKFYuYSYmMz09PUMubm9kZVR5cGUmJkMubm9kZVZhbHVlIT09Uy5hJiZfLnB1c2gobmV3IEEoe3R5cGU6ImNoYXJhY3RlckRhdGEiLHRhcmdldDpDLG9sZFZhbHVlOlMuYX0pKSxWLmImJlMuYiYmYShfLEMsUy5i''@;'; put 'put ''LFYuZiksVi5jfHxWLmcpdmFyIE09ZnVuY3Rpb24gYyhDLFYsUyxfKXtmdW5jdGlvbiBiKEUsdyxOLEksVyl7dmFyIEIsUixsMSxPPUUubGVuZ3RoLTE7Zm9yKFc9LX4oKE8tVykvMik7bDE9RS5wb3AoKTspQj1OW2wxLmpdLFI9SVtsMS5sXSxfLmMmJlcmJk1hdGguYWJzKGwxLmotbDEubCk+''@;'; put 'put ''PU8mJihDLnB1c2goQSh7dHlwZToiY2hpbGRMaXN0Iix0YXJnZXQ6dyxhZGRlZE5vZGVzOltCXSxyZW1vdmVkTm9kZXM6W0JdLG5leHRTaWJsaW5nOkIubmV4dFNpYmxpbmcscHJldmlvdXNTaWJsaW5nOkIucHJldmlvdXNTaWJsaW5nfSkpLFctLSksXy5iJiZSLmImJmEoQyxCLFIuYixfLmYp''@;'; put 'put ''LF8uYSYmMz09PUIubm9kZVR5cGUmJkIubm9kZVZhbHVlIT09Ui5hJiZDLnB1c2goQSh7dHlwZToiY2hhcmFjdGVyRGF0YSIsdGFyZ2V0OkIsb2xkVmFsdWU6Ui5hfSkpLF8uZyYmTShCLFIpfWZ1bmN0aW9uIE0oRSx3KXtmb3IodmFyIEIsUixsMSxhMSxoMSxOPUUuY2hpbGROb2RlcyxJPXcu''@;'; put 'put ''YyxXPU4ubGVuZ3RoLE89ST9JLmxlbmd0aDowLHUxPTAscDE9MCx2MT0wO3AxPFd8fHYxPE87KShhMT1OW3AxXSk9PT0oaDE9KGwxPUlbdjFdKSYmbDEubm9kZSk/KF8uYiYmbDEuYiYmYShDLGExLGwxLmIsXy5mKSxfLmEmJmwxLmEhPT1YJiZhMS5ub2RlVmFsdWUhPT1sMS5hJiZDLnB1c2go''@;'; put 'put ''QSh7dHlwZToiY2hhcmFjdGVyRGF0YSIsdGFyZ2V0OmExLG9sZFZhbHVlOmwxLmF9KSksUiYmYihSLEUsTixJLHUxKSxfLmcmJihhMS5jaGlsZE5vZGVzLmxlbmd0aHx8bDEuYyYmbDEuYy5sZW5ndGgpJiZNKGExLGwxKSxwMSsrLHYxKyspOih4PSEwLEJ8fChCPXt9LFI9W10pLGExJiYoQlts''@;'; put 'put ''MT1oKGExKV18fChCW2wxXT0hMCwtMT09PShsMT11KEksYTEsdjEsIm5vZGUiKSk/Xy5jJiYoQy5wdXNoKEEoe3R5cGU6ImNoaWxkTGlzdCIsdGFyZ2V0OkUsYWRkZWROb2RlczpbYTFdLG5leHRTaWJsaW5nOmExLm5leHRTaWJsaW5nLHByZXZpb3VzU2libGluZzphMS5wcmV2aW91c1NpYmxp''@;'; put 'put ''bmd9KSksdTErKyk6Ui5wdXNoKHtqOnAxLGw6bDF9KSkscDErKyksaDEmJmgxIT09TltwMV0mJihCW2wxPWgoaDEpXXx8KEJbbDFdPSEwLC0xPT09KGwxPXUoTixoMSxwMSkpP18uYyYmKEMucHVzaChBKHt0eXBlOiJjaGlsZExpc3QiLHRhcmdldDp3Lm5vZGUscmVtb3ZlZE5vZGVzOltoMV0s''@;'; put 'put ''bmV4dFNpYmxpbmc6SVt2MSsxXSxwcmV2aW91c1NpYmxpbmc6SVt2MS0xXX0pKSx1MS0tKTpSLnB1c2goe2o6bDEsbDp2MX0pKSx2MSsrKSk7UiYmYihSLEUsTixJLHUxKX12YXIgeDtyZXR1cm4gTShWLFMpLHh9KF8sQyxTLFYpOyhNfHxfLmxlbmd0aCE9PWIpJiYoUz1vKEMsVikpfX1mdW5j''@;'; put 'put ''dGlvbiBhKEMsVixTLF8pe2Zvcih2YXIgeCxFLGI9e30sTT1WLmF0dHJpYnV0ZXMsdz1NLmxlbmd0aDt3LS07KUU9KHg9TVt3XSkubmFtZSxfJiZfW0VdPT09WHx8KHYoVix4KSE9PVNbRV0mJkMucHVzaChBKHt0eXBlOiJhdHRyaWJ1dGVzIix0YXJnZXQ6VixhdHRyaWJ1dGVOYW1lOkUsb2xk''@;'; put 'put ''VmFsdWU6U1tFXSxhdHRyaWJ1dGVOYW1lc3BhY2U6eC5uYW1lc3BhY2VVUkl9KSksYltFXT0hMCk7Zm9yKEUgaW4gUyliW0VdfHxDLnB1c2goQSh7dGFyZ2V0OlYsdHlwZToiYXR0cmlidXRlcyIsYXR0cmlidXRlTmFtZTpFLG9sZFZhbHVlOlNbRV19KSl9ZnVuY3Rpb24gbyhDLFYpe3ZhciBT''@;'; put 'put ''PSEwO3JldHVybiBmdW5jdGlvbiBfKGIpe3ZhciBNPXtub2RlOmJ9O3JldHVybiFWLmF8fDMhPT1iLm5vZGVUeXBlJiY4IT09Yi5ub2RlVHlwZT8oVi5iJiZTJiYxPT09Yi5ub2RlVHlwZSYmKE0uYj1nKGIuYXR0cmlidXRlcyxmdW5jdGlvbih4LEUpe3JldHVybighVi5mfHxWLmZbRS5uYW1l''@;'; put 'put ''XSkmJih4W0UubmFtZV09dihiLEUpKSx4fSx7fSkpLFMmJihWLmN8fFYuYXx8Vi5iJiZWLmcpJiYoTS5jPWZ1bmN0aW9uIGYoQyxWKXtmb3IodmFyIFM9W10sXz0wO188Qy5sZW5ndGg7XysrKVNbX109VihDW19dLF8sQyk7cmV0dXJuIFN9KGIuY2hpbGROb2RlcyxfKSksUz1WLmcpOk0uYT1i''@;'; put 'put ''Lm5vZGVWYWx1ZSxNfShDKX1mdW5jdGlvbiBoKEMpe3RyeXtyZXR1cm4gQy5pZHx8KEMubW9faWQ9Qy5tb19pZHx8SCsrKX1jYXRjaChWKXt0cnl7cmV0dXJuIEMubm9kZVZhbHVlfWNhdGNoKFMpe3JldHVybiBIKyt9fX1mdW5jdGlvbiBnKEMsVixTKXtmb3IodmFyIF89MDtfPEMubGVuZ3Ro''@;'; put 'put ''O18rKylTPVYoUyxDW19dLF8sQyk7cmV0dXJuIFN9ZnVuY3Rpb24gdShDLFYsUyxfKXtmb3IoO1M8Qy5sZW5ndGg7UysrKWlmKChfP0NbU11bX106Q1tTXSk9PT1WKXJldHVybiBTO3JldHVybi0xfUYxLl9wZXJpb2Q9MzAsRjEucHJvdG90eXBlPXtvYnNlcnZlOmZ1bmN0aW9uKEMsVil7Zm9y''@;'; put 'put ''KHZhciBTPXtiOiEhKFYuYXR0cmlidXRlc3x8Vi5hdHRyaWJ1dGVGaWx0ZXJ8fFYuYXR0cmlidXRlT2xkVmFsdWUpLGM6ISFWLmNoaWxkTGlzdCxnOiEhVi5zdWJ0cmVlLGE6ISghVi5jaGFyYWN0ZXJEYXRhJiYhVi5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUpfSxfPXRoaXMuaSxiPTA7YjxfLmxl''@;'; put 'put ''bmd0aDtiKyspX1tiXS5zPT09QyYmXy5zcGxpY2UoYiwxKTtWLmF0dHJpYnV0ZUZpbHRlciYmKFMuZj1nKFYuYXR0cmlidXRlRmlsdGVyLGZ1bmN0aW9uKE0seCl7cmV0dXJuIE1beF09ITAsTX0se30pKSxfLnB1c2goe3M6QyxvOmUoQyxTKX0pLHRoaXMuaHx8ZnVuY3Rpb24gayhDKXshZnVu''@;'; put 'put ''Y3Rpb24gVigpe3ZhciBTPUMudGFrZVJlY29yZHMoKTtTLmxlbmd0aCYmQy5tKFMsQyksQy5oPXNldFRpbWVvdXQoVixGMS5fcGVyaW9kKX0oKX0odGhpcyl9LHRha2VSZWNvcmRzOmZ1bmN0aW9uKCl7Zm9yKHZhciBDPVtdLFY9dGhpcy5pLFM9MDtTPFYubGVuZ3RoO1MrKylWW1NdLm8oQyk7''@;'; put 'put ''cmV0dXJuIEN9LGRpc2Nvbm5lY3Q6ZnVuY3Rpb24oKXt0aGlzLmk9W10sY2xlYXJUaW1lb3V0KHRoaXMuaCksdGhpcy5oPW51bGx9fTt2YXIgcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpIik7cC5zdHlsZS50b3A9MDt2YXIgdj0ocD0ibnVsbCIhPXAuYXR0cmlidXRlcy5zdHlsZS52YWx1''@;'; put 'put ''ZSk/ZnVuY3Rpb24gbChDLFYpe3JldHVybiBWLnZhbHVlfTpmdW5jdGlvbiByKEMsVil7cmV0dXJuInN0eWxlIiE9PVYubmFtZT9WLnZhbHVlOkMuc3R5bGUuY3NzVGV4dH0sSD0xO3JldHVybiBGMX0odm9pZCAwKSksZnVuY3Rpb24oKXt2YXIgayxBLFg9e30sRjE9e307KGZ1bmN0aW9uKGss''@;'; put 'put ''QSl7ZnVuY3Rpb24gbCgpe3RoaXMuX2RlbGF5PTAsdGhpcy5fZW5kRGVsYXk9MCx0aGlzLl9maWxsPSJub25lIix0aGlzLl9pdGVyYXRpb25TdGFydD0wLHRoaXMuX2l0ZXJhdGlvbnM9MSx0aGlzLl9kdXJhdGlvbj0wLHRoaXMuX3BsYXliYWNrUmF0ZT0xLHRoaXMuX2RpcmVjdGlvbj0ibm9y''@;'; put 'put ''bWFsIix0aGlzLl9lYXNpbmc9ImxpbmVhciIsdGhpcy5fZWFzaW5nRnVuY3Rpb249d31mdW5jdGlvbiByKCl7cmV0dXJuIGsuaXNEZXByZWNhdGVkKCJJbnZhbGlkIHRpbWluZyBpbnB1dHMiLCIyMDE2LTAzLTAyIiwiVHlwZUVycm9yIGV4Y2VwdGlvbnMgd2lsbCBiZSB0aHJvd24gaW5zdGVh''@;'; put 'put ''ZC4iLCEwKX1mdW5jdGlvbiBhKGosYzEsVjEpe3ZhciBfMT1uZXcgbDtyZXR1cm4gYzEmJihfMS5maWxsPSJib3RoIixfMS5kdXJhdGlvbj0iYXV0byIpLCJudW1iZXIiIT10eXBlb2Yganx8aXNOYU4oaik/dm9pZCAwIT09aiYmT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaikuZm9yRWFj''@;'; put 'put ''aChmdW5jdGlvbihRKXtpZigiYXV0byIhPWpbUV0pe2lmKCgibnVtYmVyIj09dHlwZW9mIF8xW1FdfHwiZHVyYXRpb24iPT1RKSYmKCJudW1iZXIiIT10eXBlb2YgaltRXXx8aXNOYU4oaltRXSkpfHwiZmlsbCI9PVEmJi0xPT14LmluZGV4T2YoaltRXSl8fCJkaXJlY3Rpb24iPT1RJiYtMT09''@;'; put 'put ''RS5pbmRleE9mKGpbUV0pfHwicGxheWJhY2tSYXRlIj09USYmMSE9PWpbUV0mJmsuaXNEZXByZWNhdGVkKCJBbmltYXRpb25FZmZlY3RUaW1pbmcucGxheWJhY2tSYXRlIiwiMjAxNC0xMS0yOCIsIlVzZSBBbmltYXRpb24ucGxheWJhY2tSYXRlIGluc3RlYWQuIikpcmV0dXJuO18xW1FdPWpb''@;'; put 'put ''UV19fSk6XzEuZHVyYXRpb249aixfMX1mdW5jdGlvbiBoKGosYzEsVjEsXzEpe3JldHVybiBqPDB8fGo+MXx8VjE8MHx8VjE+MT93OmZ1bmN0aW9uKFEpe2Z1bmN0aW9uIHMxKEQsWixUKXtyZXR1cm4gMypEKigxLVQpKigxLVQpKlQrMypaKigxLVQpKlQqVCtUKlQqVH1pZihRPD0wKXt2YXIg''@;'; put 'put ''bTE9MDtyZXR1cm4gaj4wP20xPWMxL2o6IWMxJiZWMT4wJiYobTE9XzEvVjEpLG0xKlF9aWYoUT49MSl7dmFyIGIxPTA7cmV0dXJuIFYxPDE/YjE9KF8xLTEpLyhWMS0xKToxPT1WMSYmajwxJiYoYjE9KGMxLTEpLyhqLTEpKSwxK2IxKihRLTEpfWZvcih2YXIgQjE9MCwkPTE7QjE8JDspe3Zh''@;'; put 'put ''ciB6PShCMSskKS8yLHk9czEoaixWMSx6KTtpZihNYXRoLmFicyhRLXkpPDFlLTUpcmV0dXJuIHMxKGMxLF8xLHopO3k8UT9CMT16OiQ9en1yZXR1cm4gczEoYzEsXzEseil9fWZ1bmN0aW9uIGYoaixjMSl7cmV0dXJuIGZ1bmN0aW9uKFYxKXtpZihWMT49MSlyZXR1cm4gMTt2YXIgXzE9MS9q''@;'; put 'put ''O3JldHVybihWMSs9YzEqXzEpLVYxJV8xfX1mdW5jdGlvbiBnKGope0J8fChCPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlKSxCLmFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uPSIiLEIuYW5pbWF0aW9uVGltaW5nRnVuY3Rpb249ajt2YXIgYzE9Qi5hbmltYXRpb25UaW1pbmdG''@;'; put 'put ''dW5jdGlvbjtpZigiIj09YzEmJnIoKSl0aHJvdyBuZXcgVHlwZUVycm9yKGorIiBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgZWFzaW5nIik7cmV0dXJuIGMxfWZ1bmN0aW9uIHUoail7aWYoImxpbmVhciI9PWopcmV0dXJuIHc7dmFyIGMxPWwxLmV4ZWMoaik7aWYoYzEpcmV0dXJuIGguYXBw''@;'; put 'put ''bHkodGhpcyxjMS5zbGljZSgxKS5tYXAoTnVtYmVyKSk7dmFyIFYxPWExLmV4ZWMoaik7aWYoVjEpcmV0dXJuIGYoTnVtYmVyKFYxWzFdKSxXKTt2YXIgXzE9aDEuZXhlYyhqKTtyZXR1cm4gXzE/ZihOdW1iZXIoXzFbMV0pLHtzdGFydDpOLG1pZGRsZTpJLGVuZDpXfVtfMVsyXV0pOk9bal18''@;'; put 'put ''fHd9ZnVuY3Rpb24gSChqLGMxLFYxKXtpZihudWxsPT1jMSlyZXR1cm4gdTE7dmFyIF8xPVYxLmRlbGF5K2orVjEuZW5kRGVsYXk7cmV0dXJuIGMxPE1hdGgubWluKFYxLmRlbGF5LF8xKT9wMTpjMT49TWF0aC5taW4oVjEuZGVsYXkraixfMSk/djE6RTF9dmFyIHg9ImJhY2t3YXJkc3xmb3J3''@;'; put 'put ''YXJkc3xib3RofG5vbmUiLnNwbGl0KCJ8IiksRT0icmV2ZXJzZXxhbHRlcm5hdGV8YWx0ZXJuYXRlLXJldmVyc2UiLnNwbGl0KCJ8Iiksdz1mdW5jdGlvbihqKXtyZXR1cm4gan07bC5wcm90b3R5cGU9e19zZXRNZW1iZXI6ZnVuY3Rpb24oaixjMSl7dGhpc1siXyIral09YzEsdGhpcy5fZWZm''@;'; put 'put ''ZWN0JiYodGhpcy5fZWZmZWN0Ll90aW1pbmdJbnB1dFtqXT1jMSx0aGlzLl9lZmZlY3QuX3RpbWluZz1rLm5vcm1hbGl6ZVRpbWluZ0lucHV0KHRoaXMuX2VmZmVjdC5fdGltaW5nSW5wdXQpLHRoaXMuX2VmZmVjdC5hY3RpdmVEdXJhdGlvbj1rLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uKHRo''@;'; put 'put ''aXMuX2VmZmVjdC5fdGltaW5nKSx0aGlzLl9lZmZlY3QuX2FuaW1hdGlvbiYmdGhpcy5fZWZmZWN0Ll9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCkpfSxnZXQgcGxheWJhY2tSYXRlKCl7cmV0dXJuIHRoaXMuX3BsYXliYWNrUmF0ZX0sc2V0IGRlbGF5KGope3RoaXMu''@;'; put 'put ''X3NldE1lbWJlcigiZGVsYXkiLGopfSxnZXQgZGVsYXkoKXtyZXR1cm4gdGhpcy5fZGVsYXl9LHNldCBlbmREZWxheShqKXt0aGlzLl9zZXRNZW1iZXIoImVuZERlbGF5IixqKX0sZ2V0IGVuZERlbGF5KCl7cmV0dXJuIHRoaXMuX2VuZERlbGF5fSxzZXQgZmlsbChqKXt0aGlzLl9zZXRNZW1i''@;'; put 'put ''ZXIoImZpbGwiLGopfSxnZXQgZmlsbCgpe3JldHVybiB0aGlzLl9maWxsfSxzZXQgaXRlcmF0aW9uU3RhcnQoail7aWYoKGlzTmFOKGopfHxqPDApJiZyKCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiaXRlcmF0aW9uU3RhcnQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIsIHJlY2VpdmVk''@;'; put 'put ''OiAiK2opO3RoaXMuX3NldE1lbWJlcigiaXRlcmF0aW9uU3RhcnQiLGopfSxnZXQgaXRlcmF0aW9uU3RhcnQoKXtyZXR1cm4gdGhpcy5faXRlcmF0aW9uU3RhcnR9LHNldCBkdXJhdGlvbihqKXtpZigiYXV0byIhPWomJihpc05hTihqKXx8ajwwKSYmcigpKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''ImR1cmF0aW9uIG11c3QgYmUgbm9uLW5lZ2F0aXZlIG9yIGF1dG8sIHJlY2VpdmVkOiAiK2opO3RoaXMuX3NldE1lbWJlcigiZHVyYXRpb24iLGopfSxnZXQgZHVyYXRpb24oKXtyZXR1cm4gdGhpcy5fZHVyYXRpb259LHNldCBkaXJlY3Rpb24oail7dGhpcy5fc2V0TWVtYmVyKCJkaXJlY3Rp''@;'; put 'put ''b24iLGopfSxnZXQgZGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuX2RpcmVjdGlvbn0sc2V0IGVhc2luZyhqKXt0aGlzLl9lYXNpbmdGdW5jdGlvbj11KGcoaikpLHRoaXMuX3NldE1lbWJlcigiZWFzaW5nIixqKX0sZ2V0IGVhc2luZygpe3JldHVybiB0aGlzLl9lYXNpbmd9LHNldCBpdGVyYXRp''@;'; put 'put ''b25zKGope2lmKChpc05hTihqKXx8ajwwKSYmcigpKXRocm93IG5ldyBUeXBlRXJyb3IoIml0ZXJhdGlvbnMgbXVzdCBiZSBub24tbmVnYXRpdmUsIHJlY2VpdmVkOiAiK2opO3RoaXMuX3NldE1lbWJlcigiaXRlcmF0aW9ucyIsail9LGdldCBpdGVyYXRpb25zKCl7cmV0dXJuIHRoaXMuX2l0''@;'; put 'put ''ZXJhdGlvbnN9fTt2YXIgTj0xLEk9LjUsVz0wLE89e2Vhc2U6aCguMjUsLjEsLjI1LDEpLCJlYXNlLWluIjpoKC40MiwwLDEsMSksImVhc2Utb3V0IjpoKDAsMCwuNTgsMSksImVhc2UtaW4tb3V0IjpoKC40MiwwLC41OCwxKSwic3RlcC1zdGFydCI6ZigxLE4pLCJzdGVwLW1pZGRsZSI6Zigx''@;'; put 'put ''LEkpLCJzdGVwLWVuZCI6ZigxLFcpfSxCPW51bGwsUj0iXFxzKigtP1xcZCtcXC4/XFxkKnwtP1xcLlxcZCspXFxzKiIsbDE9bmV3IFJlZ0V4cCgiY3ViaWMtYmV6aWVyXFwoIitSKyIsIitSKyIsIitSKyIsIitSKyJcXCkiKSxhMT0vc3RlcHNcKFxzKihcZCspXHMqXCkvLGgxPS9zdGVwc1wo''@;'; put 'put ''XHMqKFxkKylccyosXHMqKHN0YXJ0fG1pZGRsZXxlbmQpXHMqXCkvLHUxPTAscDE9MSx2MT0yLEUxPTM7ay5jbG9uZVRpbWluZ0lucHV0PWZ1bmN0aW9uIGUoail7aWYoIm51bWJlciI9PXR5cGVvZiBqKXJldHVybiBqO3ZhciBjMT17fTtmb3IodmFyIFYxIGluIGopYzFbVjFdPWpbVjFdO3Jl''@;'; put 'put ''dHVybiBjMX0say5tYWtlVGltaW5nPWEsay5udW1lcmljVGltaW5nVG9PYmplY3Q9ZnVuY3Rpb24gYyhqKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGomJihqPWlzTmFOKGopP3tkdXJhdGlvbjowfTp7ZHVyYXRpb246an0pLGp9LGsubm9ybWFsaXplVGltaW5nSW5wdXQ9ZnVuY3Rpb24gbyhq''@;'; put 'put ''LGMxKXtyZXR1cm4gYShqPWsubnVtZXJpY1RpbWluZ1RvT2JqZWN0KGopLGMxKX0say5jYWxjdWxhdGVBY3RpdmVEdXJhdGlvbj1mdW5jdGlvbiBwKGope3JldHVybiBNYXRoLmFicyhmdW5jdGlvbiB2KGope3JldHVybiAwPT09ai5kdXJhdGlvbnx8MD09PWouaXRlcmF0aW9ucz8wOmouZHVy''@;'; put 'put ''YXRpb24qai5pdGVyYXRpb25zfShqKS9qLnBsYXliYWNrUmF0ZSl9LGsuY2FsY3VsYXRlSXRlcmF0aW9uUHJvZ3Jlc3M9ZnVuY3Rpb24gTShqLGMxLFYxKXt2YXIgXzE9SChqLGMxLFYxKSxRPWZ1bmN0aW9uIEMoaixjMSxWMSxfMSxRKXtzd2l0Y2goXzEpe2Nhc2UgcDE6cmV0dXJuImJhY2t3''@;'; put 'put ''YXJkcyI9PWMxfHwiYm90aCI9PWMxPzA6bnVsbDtjYXNlIEUxOnJldHVybiBWMS1RO2Nhc2UgdjE6cmV0dXJuImZvcndhcmRzIj09YzF8fCJib3RoIj09YzE/ajpudWxsO2Nhc2UgdTE6cmV0dXJuIG51bGx9fShqLFYxLmZpbGwsYzEsXzEsVjEuZGVsYXkpO2lmKG51bGw9PT1RKXJldHVybiBu''@;'; put 'put ''dWxsO3ZhciBzMT1mdW5jdGlvbiBWKGosYzEsVjEsXzEsUSl7dmFyIHMxPVE7cmV0dXJuIDA9PT1qP2MxIT09cDEmJihzMSs9VjEpOnMxKz1fMS9qLHMxfShWMS5kdXJhdGlvbixfMSxWMS5pdGVyYXRpb25zLFEsVjEuaXRlcmF0aW9uU3RhcnQpLG0xPWZ1bmN0aW9uIFMoaixjMSxWMSxfMSxR''@;'; put 'put ''LHMxKXt2YXIgbTE9aj09PTEvMD9jMSUxOmolMTtyZXR1cm4gMCE9PW0xfHxWMSE9PXYxfHwwPT09XzF8fDA9PT1RJiYwIT09czF8fChtMT0xKSxtMX0oczEsVjEuaXRlcmF0aW9uU3RhcnQsXzEsVjEuaXRlcmF0aW9ucyxRLFYxLmR1cmF0aW9uKSxiMT1mdW5jdGlvbiBfKGosYzEsVjEsXzEp''@;'; put 'put ''e3JldHVybiBqPT09djEmJmMxPT09MS8wPzEvMDoxPT09VjE/TWF0aC5mbG9vcihfMSktMTpNYXRoLmZsb29yKF8xKX0oXzEsVjEuaXRlcmF0aW9ucyxtMSxzMSksQjE9ZnVuY3Rpb24gYihqLGMxLFYxKXt2YXIgXzE9ajtpZigibm9ybWFsIiE9PWomJiJyZXZlcnNlIiE9PWope3ZhciBRPWMx''@;'; put 'put ''OyJhbHRlcm5hdGUtcmV2ZXJzZSI9PT1qJiYoUSs9MSksXzE9Im5vcm1hbCIsUSE9PTEvMCYmUSUyIT0wJiYoXzE9InJldmVyc2UiKX1yZXR1cm4ibm9ybWFsIj09PV8xP1YxOjEtVjF9KFYxLmRpcmVjdGlvbixiMSxtMSk7cmV0dXJuIFYxLl9lYXNpbmdGdW5jdGlvbihCMSl9LGsuY2FsY3Vs''@;'; put 'put ''YXRlUGhhc2U9SCxrLm5vcm1hbGl6ZUVhc2luZz1nLGsucGFyc2VFYXNpbmdGdW5jdGlvbj11fSkoWCksZnVuY3Rpb24oayxBKXtmdW5jdGlvbiBlKHUscCl7cmV0dXJuIHUgaW4gZyYmZ1t1XVtwXXx8cH1mdW5jdGlvbiByKHUscCx2KXtpZighZnVuY3Rpb24gbCh1KXtyZXR1cm4iZGlzcGxh''@;'; put 'put ''eSI9PT11fHwwPT09dS5sYXN0SW5kZXhPZigiYW5pbWF0aW9uIiwwKXx8MD09PXUubGFzdEluZGV4T2YoInRyYW5zaXRpb24iLDApfSh1KSl7dmFyIEg9b1t1XTtpZihIKWZvcih2YXIgQyBpbiBoLnN0eWxlW3VdPXAsSCl7dmFyIFY9SFtDXTt2W1ZdPWUoVixoLnN0eWxlW1ZdKX1lbHNlIHZb''@;'; put 'put ''dV09ZSh1LHApfX1mdW5jdGlvbiBhKHUpe3ZhciBwPVtdO2Zvcih2YXIgdiBpbiB1KWlmKCEodiBpblsiZWFzaW5nIiwib2Zmc2V0IiwiY29tcG9zaXRlIl0pKXt2YXIgSD11W3ZdO0FycmF5LmlzQXJyYXkoSCl8fChIPVtIXSk7Zm9yKHZhciBDLFY9SC5sZW5ndGgsUz0wO1M8VjtTKyspKEM9''@;'; put 'put ''e30pLm9mZnNldD0ib2Zmc2V0ImluIHU/dS5vZmZzZXQ6MT09Vj8xOlMvKFYtMSksImVhc2luZyJpbiB1JiYoQy5lYXNpbmc9dS5lYXNpbmcpLCJjb21wb3NpdGUiaW4gdSYmKEMuY29tcG9zaXRlPXUuY29tcG9zaXRlKSxDW3ZdPUhbU10scC5wdXNoKEMpfXJldHVybiBwLnNvcnQoZnVuY3Rp''@;'; put 'put ''b24oXyxiKXtyZXR1cm4gXy5vZmZzZXQtYi5vZmZzZXR9KSxwfXZhciBvPXtiYWNrZ3JvdW5kOlsiYmFja2dyb3VuZEltYWdlIiwiYmFja2dyb3VuZFBvc2l0aW9uIiwiYmFja2dyb3VuZFNpemUiLCJiYWNrZ3JvdW5kUmVwZWF0IiwiYmFja2dyb3VuZEF0dGFjaG1lbnQiLCJiYWNrZ3JvdW5k''@;'; put 'put ''T3JpZ2luIiwiYmFja2dyb3VuZENsaXAiLCJiYWNrZ3JvdW5kQ29sb3IiXSxib3JkZXI6WyJib3JkZXJUb3BDb2xvciIsImJvcmRlclRvcFN0eWxlIiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJSaWdodENvbG9yIiwiYm9yZGVyUmlnaHRTdHlsZSIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3Jk''@;'; put 'put ''ZXJCb3R0b21Db2xvciIsImJvcmRlckJvdHRvbVN0eWxlIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJib3JkZXJMZWZ0Q29sb3IiLCJib3JkZXJMZWZ0U3R5bGUiLCJib3JkZXJMZWZ0V2lkdGgiXSxib3JkZXJCb3R0b206WyJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRlckJvdHRvbVN0eWxlIiwi''@;'; put 'put ''Ym9yZGVyQm90dG9tQ29sb3IiXSxib3JkZXJDb2xvcjpbImJvcmRlclRvcENvbG9yIiwiYm9yZGVyUmlnaHRDb2xvciIsImJvcmRlckJvdHRvbUNvbG9yIiwiYm9yZGVyTGVmdENvbG9yIl0sYm9yZGVyTGVmdDpbImJvcmRlckxlZnRXaWR0aCIsImJvcmRlckxlZnRTdHlsZSIsImJvcmRlckxl''@;'; put 'put ''ZnRDb2xvciJdLGJvcmRlclJhZGl1czpbImJvcmRlclRvcExlZnRSYWRpdXMiLCJib3JkZXJUb3BSaWdodFJhZGl1cyIsImJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzIiwiYm9yZGVyQm90dG9tTGVmdFJhZGl1cyJdLGJvcmRlclJpZ2h0OlsiYm9yZGVyUmlnaHRXaWR0aCIsImJvcmRlclJpZ2h0''@;'; put 'put ''U3R5bGUiLCJib3JkZXJSaWdodENvbG9yIl0sYm9yZGVyVG9wOlsiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJUb3BTdHlsZSIsImJvcmRlclRvcENvbG9yIl0sYm9yZGVyV2lkdGg6WyJib3JkZXJUb3BXaWR0aCIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRl''@;'; put 'put ''ckxlZnRXaWR0aCJdLGZsZXg6WyJmbGV4R3JvdyIsImZsZXhTaHJpbmsiLCJmbGV4QmFzaXMiXSxmb250OlsiZm9udEZhbWlseSIsImZvbnRTaXplIiwiZm9udFN0eWxlIiwiZm9udFZhcmlhbnQiLCJmb250V2VpZ2h0IiwibGluZUhlaWdodCJdLG1hcmdpbjpbIm1hcmdpblRvcCIsIm1hcmdp''@;'; put 'put ''blJpZ2h0IiwibWFyZ2luQm90dG9tIiwibWFyZ2luTGVmdCJdLG91dGxpbmU6WyJvdXRsaW5lQ29sb3IiLCJvdXRsaW5lU3R5bGUiLCJvdXRsaW5lV2lkdGgiXSxwYWRkaW5nOlsicGFkZGluZ1RvcCIsInBhZGRpbmdSaWdodCIsInBhZGRpbmdCb3R0b20iLCJwYWRkaW5nTGVmdCJdfSxoPWRv''@;'; put 'put ''Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImRpdiIpLGY9e3RoaW46IjFweCIsbWVkaXVtOiIzcHgiLHRoaWNrOiI1cHgifSxnPXtib3JkZXJCb3R0b21XaWR0aDpmLGJvcmRlckxlZnRXaWR0aDpmLGJvcmRlclJpZ2h0V2lkdGg6Zixib3Jk''@;'; put 'put ''ZXJUb3BXaWR0aDpmLGZvbnRTaXplOnsieHgtc21hbGwiOiI2MCUiLCJ4LXNtYWxsIjoiNzUlIixzbWFsbDoiODklIixtZWRpdW06IjEwMCUiLGxhcmdlOiIxMjAlIiwieC1sYXJnZSI6IjE1MCUiLCJ4eC1sYXJnZSI6IjIwMCUifSxmb250V2VpZ2h0Ontub3JtYWw6IjQwMCIsYm9sZDoiNzAw''@;'; put 'put ''In0sb3V0bGluZVdpZHRoOmYsdGV4dFNoYWRvdzp7bm9uZToiMHB4IDBweCAwcHggdHJhbnNwYXJlbnQifSxib3hTaGFkb3c6e25vbmU6IjBweCAwcHggMHB4IDBweCB0cmFuc3BhcmVudCJ9fTtrLmNvbnZlcnRUb0FycmF5Rm9ybT1hLGsubm9ybWFsaXplS2V5ZnJhbWVzPWZ1bmN0aW9uIGMo''@;'; put 'put ''dSl7aWYobnVsbD09dSlyZXR1cm5bXTt3aW5kb3cuU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJkFycmF5LnByb3RvdHlwZS5mcm9tJiZ1W1N5bWJvbC5pdGVyYXRvcl0mJih1PUFycmF5LmZyb20odSkpLEFycmF5LmlzQXJyYXkodSl8fCh1PWEodSkpO2Zvcih2YXIgdj11Lm1hcChmdW5jdGlv''@;'; put 'put ''bihfKXt2YXIgYj17fTtmb3IodmFyIE0gaW4gXyl7dmFyIHg9X1tNXTtpZigib2Zmc2V0Ij09TSl7aWYobnVsbCE9eCl7aWYoeD1OdW1iZXIoeCksIWlzRmluaXRlKHgpKXRocm93IG5ldyBUeXBlRXJyb3IoIktleWZyYW1lIG9mZnNldHMgbXVzdCBiZSBudW1iZXJzLiIpO2lmKHg8MHx8eD4x''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoIktleWZyYW1lIG9mZnNldHMgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDEuIil9fWVsc2UgaWYoImNvbXBvc2l0ZSI9PU0pe2lmKCJhZGQiPT14fHwiYWNjdW11bGF0ZSI9PXgpdGhyb3d7dHlwZTpET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIsbmFt''@;'; put 'put ''ZToiTm90U3VwcG9ydGVkRXJyb3IiLG1lc3NhZ2U6ImFkZCBjb21wb3NpdGluZyBpcyBub3Qgc3VwcG9ydGVkIn07aWYoInJlcGxhY2UiIT14KXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgY29tcG9zaXRlIG1vZGUgIit4KyIuIil9ZWxzZSB4PSJlYXNpbmciPT1NP2subm9ybWFsaXpl''@;'; put 'put ''RWFzaW5nKHgpOiIiK3g7cihNLHgsYil9cmV0dXJuIG51bGw9PWIub2Zmc2V0JiYoYi5vZmZzZXQ9bnVsbCksbnVsbD09Yi5lYXNpbmcmJihiLmVhc2luZz0ibGluZWFyIiksYn0pLEg9ITAsQz0tMS8wLFY9MDtWPHYubGVuZ3RoO1YrKyl7dmFyIFM9dltWXS5vZmZzZXQ7aWYobnVsbCE9Uyl7''@;'; put 'put ''aWYoUzxDKXRocm93IG5ldyBUeXBlRXJyb3IoIktleWZyYW1lcyBhcmUgbm90IGxvb3NlbHkgc29ydGVkIGJ5IG9mZnNldC4gU29ydCBvciBzcGVjaWZ5IG9mZnNldHMuIik7Qz1TfWVsc2UgSD0hMX1yZXR1cm4gdj12LmZpbHRlcihmdW5jdGlvbihfKXtyZXR1cm4gXy5vZmZzZXQ+PTAmJl8u''@;'; put 'put ''b2Zmc2V0PD0xfSksSHx8ZnVuY3Rpb24gcCgpe3ZhciBfPXYubGVuZ3RoO251bGw9PXZbXy0xXS5vZmZzZXQmJih2W18tMV0ub2Zmc2V0PTEpLF8+MSYmbnVsbD09dlswXS5vZmZzZXQmJih2WzBdLm9mZnNldD0wKTtmb3IodmFyIGI9MCxNPXZbMF0ub2Zmc2V0LHg9MTt4PF87eCsrKXt2YXIg''@;'; put 'put ''RT12W3hdLm9mZnNldDtpZihudWxsIT1FKXtmb3IodmFyIHc9MTt3PHgtYjt3KyspdltiK3ddLm9mZnNldD1NKyhFLU0pKncvKHgtYik7Yj14LE09RX19fSgpLHZ9fShYKSxBPXt9LChrPVgpLmlzRGVwcmVjYXRlZD1mdW5jdGlvbihlLGwscixhKXt2YXIgYz1hPyJhcmUiOiJpcyIsbz1uZXcg''@;'; put 'put ''RGF0ZSxoPW5ldyBEYXRlKGwpO3JldHVybiBoLnNldE1vbnRoKGguZ2V0TW9udGgoKSszKSwhKG88aCYmKGUgaW4gQXx8Y29uc29sZS53YXJuKCJXZWIgQW5pbWF0aW9uczogIitlKyIgIitjKyIgZGVwcmVjYXRlZCBhbmQgd2lsbCBzdG9wIHdvcmtpbmcgb24gIitoLnRvRGF0ZVN0cmluZygp''@;'; put 'put ''KyIuICIrciksQVtlXT0hMCwxKSl9LGsuZGVwcmVjYXRlZD1mdW5jdGlvbihlLGwscixhKXt2YXIgYz1hPyJhcmUiOiJpcyI7aWYoay5pc0RlcHJlY2F0ZWQoZSxsLHIsYSkpdGhyb3cgbmV3IEVycm9yKGUrIiAiK2MrIiBubyBsb25nZXIgc3VwcG9ydGVkLiAiK3IpfSxmdW5jdGlvbigpe2lm''@;'; put 'put ''KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hbmltYXRlKXt2YXIgaz1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYW5pbWF0ZShbXSwwKSxBPSEwO2lmKGsmJihBPSExLCJwbGF5fGN1cnJlbnRUaW1lfHBhdXNlfHJldmVyc2V8cGxheWJhY2tSYXRlfGNhbmNlbHxmaW5pc2h8c3RhcnRUaW1l''@;'; put 'put ''fHBsYXlTdGF0ZSIuc3BsaXQoInwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZvaWQgMD09PWtbZV0mJihBPSEwKX0pKSwhQSlyZXR1cm59dmFyIGUsbDtlPVgsKGw9RjEpLmNvbnZlcnRFZmZlY3RJbnB1dD1mdW5jdGlvbihvKXt2YXIgZj1mdW5jdGlvbiBhKG8pe2Zvcih2YXIgaD17fSxmPTA7''@;'; put 'put ''ZjxvLmxlbmd0aDtmKyspZm9yKHZhciBnIGluIG9bZl0paWYoIm9mZnNldCIhPWcmJiJlYXNpbmciIT1nJiYiY29tcG9zaXRlIiE9Zyl7dmFyIHU9e29mZnNldDpvW2ZdLm9mZnNldCxlYXNpbmc6b1tmXS5lYXNpbmcsdmFsdWU6b1tmXVtnXX07aFtnXT1oW2ddfHxbXSxoW2ddLnB1c2godSl9''@;'; put 'put ''Zm9yKHZhciBwIGluIGgpe3ZhciB2PWhbcF07aWYoMCE9dlswXS5vZmZzZXR8fDEhPXZbdi5sZW5ndGgtMV0ub2Zmc2V0KXRocm93e3R5cGU6RE9NRXhjZXB0aW9uLk5PVF9TVVBQT1JURURfRVJSLG5hbWU6Ik5vdFN1cHBvcnRlZEVycm9yIixtZXNzYWdlOiJQYXJ0aWFsIGtleWZyYW1lcyBh''@;'; put 'put ''cmUgbm90IHN1cHBvcnRlZCJ9fXJldHVybiBofShlLm5vcm1hbGl6ZUtleWZyYW1lcyhvKSksZz1mdW5jdGlvbiBjKG8pe3ZhciBoPVtdO2Zvcih2YXIgZiBpbiBvKWZvcih2YXIgZz1vW2ZdLHU9MDt1PGcubGVuZ3RoLTE7dSsrKXt2YXIgcD11LHY9dSsxLEg9Z1twXS5vZmZzZXQsQz1nW3Zd''@;'; put 'put ''Lm9mZnNldCxWPUgsUz1DOzA9PXUmJihWPS0xLzAsMD09QyYmKHY9cCkpLHU9PWcubGVuZ3RoLTImJihTPTEvMCwxPT1IJiYocD12KSksaC5wdXNoKHthcHBseUZyb206VixhcHBseVRvOlMsc3RhcnRPZmZzZXQ6Z1twXS5vZmZzZXQsZW5kT2Zmc2V0Omdbdl0ub2Zmc2V0LGVhc2luZ0Z1bmN0''@;'; put 'put ''aW9uOmUucGFyc2VFYXNpbmdGdW5jdGlvbihnW3BdLmVhc2luZykscHJvcGVydHk6ZixpbnRlcnBvbGF0aW9uOmwucHJvcGVydHlJbnRlcnBvbGF0aW9uKGYsZ1twXS52YWx1ZSxnW3ZdLnZhbHVlKX0pfXJldHVybiBoLnNvcnQoZnVuY3Rpb24oXyxiKXtyZXR1cm4gXy5zdGFydE9mZnNldC1i''@;'; put 'put ''LnN0YXJ0T2Zmc2V0fSksaH0oZik7cmV0dXJuIGZ1bmN0aW9uKHUscCl7aWYobnVsbCE9cClnLmZpbHRlcihmdW5jdGlvbihIKXtyZXR1cm4gcD49SC5hcHBseUZyb20mJnA8SC5hcHBseVRvfSkuZm9yRWFjaChmdW5jdGlvbihIKXt2YXIgVj1ILmVuZE9mZnNldC1ILnN0YXJ0T2Zmc2V0LFM9''@;'; put 'put ''MD09Vj8wOkguZWFzaW5nRnVuY3Rpb24oKHAtSC5zdGFydE9mZnNldCkvVik7bC5hcHBseSh1LEgucHJvcGVydHksSC5pbnRlcnBvbGF0aW9uKFMpKX0pO2Vsc2UgZm9yKHZhciB2IGluIGYpIm9mZnNldCIhPXYmJiJlYXNpbmciIT12JiYiY29tcG9zaXRlIiE9diYmbC5jbGVhcih1LHYpfX0s''@;'; put 'put ''ZnVuY3Rpb24oZSxsLHIpe2Z1bmN0aW9uIGEodSl7cmV0dXJuIHUucmVwbGFjZSgvLSguKS9nLGZ1bmN0aW9uKHAsdil7cmV0dXJuIHYudG9VcHBlckNhc2UoKX0pfWZ1bmN0aW9uIGModSxwLHYpe2Zbdl09Zlt2XXx8W10sZlt2XS5wdXNoKFt1LHBdKX12YXIgZj17fTtsLmFkZFByb3BlcnRp''@;'; put 'put ''ZXNIYW5kbGVyPWZ1bmN0aW9uIG8odSxwLHYpe2Zvcih2YXIgSD0wO0g8di5sZW5ndGg7SCsrKWModSxwLGEodltIXSkpfTt2YXIgZz17YmFja2dyb3VuZENvbG9yOiJ0cmFuc3BhcmVudCIsYmFja2dyb3VuZFBvc2l0aW9uOiIwJSAwJSIsYm9yZGVyQm90dG9tQ29sb3I6ImN1cnJlbnRDb2xv''@;'; put 'put ''ciIsYm9yZGVyQm90dG9tTGVmdFJhZGl1czoiMHB4Iixib3JkZXJCb3R0b21SaWdodFJhZGl1czoiMHB4Iixib3JkZXJCb3R0b21XaWR0aDoiM3B4Iixib3JkZXJMZWZ0Q29sb3I6ImN1cnJlbnRDb2xvciIsYm9yZGVyTGVmdFdpZHRoOiIzcHgiLGJvcmRlclJpZ2h0Q29sb3I6ImN1cnJlbnRD''@;'; put 'put ''b2xvciIsYm9yZGVyUmlnaHRXaWR0aDoiM3B4Iixib3JkZXJTcGFjaW5nOiIycHgiLGJvcmRlclRvcENvbG9yOiJjdXJyZW50Q29sb3IiLGJvcmRlclRvcExlZnRSYWRpdXM6IjBweCIsYm9yZGVyVG9wUmlnaHRSYWRpdXM6IjBweCIsYm9yZGVyVG9wV2lkdGg6IjNweCIsYm90dG9tOiJhdXRv''@;'; put 'put ''IixjbGlwOiJyZWN0KDBweCwgMHB4LCAwcHgsIDBweCkiLGNvbG9yOiJibGFjayIsZm9udFNpemU6IjEwMCUiLGZvbnRXZWlnaHQ6IjQwMCIsaGVpZ2h0OiJhdXRvIixsZWZ0OiJhdXRvIixsZXR0ZXJTcGFjaW5nOiJub3JtYWwiLGxpbmVIZWlnaHQ6IjEyMCUiLG1hcmdpbkJvdHRvbToiMHB4''@;'; put 'put ''IixtYXJnaW5MZWZ0OiIwcHgiLG1hcmdpblJpZ2h0OiIwcHgiLG1hcmdpblRvcDoiMHB4IixtYXhIZWlnaHQ6Im5vbmUiLG1heFdpZHRoOiJub25lIixtaW5IZWlnaHQ6IjBweCIsbWluV2lkdGg6IjBweCIsb3BhY2l0eToiMS4wIixvdXRsaW5lQ29sb3I6ImludmVydCIsb3V0bGluZU9mZnNl''@;'; put 'put ''dDoiMHB4IixvdXRsaW5lV2lkdGg6IjNweCIscGFkZGluZ0JvdHRvbToiMHB4IixwYWRkaW5nTGVmdDoiMHB4IixwYWRkaW5nUmlnaHQ6IjBweCIscGFkZGluZ1RvcDoiMHB4IixyaWdodDoiYXV0byIsc3Ryb2tlRGFzaGFycmF5OiJub25lIixzdHJva2VEYXNob2Zmc2V0OiIwcHgiLHRleHRJ''@;'; put 'put ''bmRlbnQ6IjBweCIsdGV4dFNoYWRvdzoiMHB4IDBweCAwcHggdHJhbnNwYXJlbnQiLHRvcDoiYXV0byIsdHJhbnNmb3JtOiIiLHZlcnRpY2FsQWxpZ246IjBweCIsdmlzaWJpbGl0eToidmlzaWJsZSIsd2lkdGg6ImF1dG8iLHdvcmRTcGFjaW5nOiJub3JtYWwiLHpJbmRleDoiYXV0byJ9O2wu''@;'; put 'put ''cHJvcGVydHlJbnRlcnBvbGF0aW9uPWZ1bmN0aW9uIGgodSxwLHYpe3ZhciBIPXU7Ly0vLnRlc3QodSkmJiFlLmlzRGVwcmVjYXRlZCgiSHlwaGVuYXRlZCBwcm9wZXJ0eSBuYW1lcyIsIjIwMTYtMDMtMjIiLCJVc2UgY2FtZWxDYXNlIGluc3RlYWQuIiwhMCkmJihIPWEodSkpLCJpbml0aWFs''@;'; put 'put ''IiE9cCYmImluaXRpYWwiIT12fHwoImluaXRpYWwiPT1wJiYocD1nW0hdKSwiaW5pdGlhbCI9PXYmJih2PWdbSF0pKTtmb3IodmFyIEM9cD09dj9bXTpmW0hdLFY9MDtDJiZWPEMubGVuZ3RoO1YrKyl7dmFyIFM9Q1tWXVswXShwKSxfPUNbVl1bMF0odik7aWYodm9pZCAwIT09UyYmdm9pZCAw''@;'; put 'put ''IT09Xyl7dmFyIGI9Q1tWXVsxXShTLF8pO2lmKGIpe3ZhciBNPWwuSW50ZXJwb2xhdGlvbi5hcHBseShudWxsLGIpO3JldHVybiBmdW5jdGlvbih4KXtyZXR1cm4gMD09eD9wOjE9PXg/djpNKHgpfX19fXJldHVybiBsLkludGVycG9sYXRpb24oITEsITAsZnVuY3Rpb24oeCl7cmV0dXJuIHg/''@;'; put 'put ''djpwfSl9fShYLEYxKSxmdW5jdGlvbihlLGwscil7bC5LZXlmcmFtZUVmZmVjdD1mdW5jdGlvbihjLG8saCxmKXt2YXIgZyx1PWZ1bmN0aW9uIGEoYyl7dmFyIG89ZS5jYWxjdWxhdGVBY3RpdmVEdXJhdGlvbihjKSxoPWZ1bmN0aW9uKGYpe3JldHVybiBlLmNhbGN1bGF0ZUl0ZXJhdGlvblBy''@;'; put 'put ''b2dyZXNzKG8sZixjKX07cmV0dXJuIGguX3RvdGFsRHVyYXRpb249Yy5kZWxheStvK2MuZW5kRGVsYXksaH0oZS5ub3JtYWxpemVUaW1pbmdJbnB1dChoKSkscD1sLmNvbnZlcnRFZmZlY3RJbnB1dChvKSx2PWZ1bmN0aW9uKCl7cChjLGcpfTtyZXR1cm4gdi5fdXBkYXRlPWZ1bmN0aW9uKEgp''@;'; put 'put ''e3JldHVybiBudWxsIT09KGc9dShIKSl9LHYuX2NsZWFyPWZ1bmN0aW9uKCl7cChjLG51bGwpfSx2Ll9oYXNTYW1lVGFyZ2V0PWZ1bmN0aW9uKEgpe3JldHVybiBjPT09SH0sdi5fdGFyZ2V0PWMsdi5fdG90YWxEdXJhdGlvbj11Ll90b3RhbER1cmF0aW9uLHYuX2lkPWYsdn19KFgsRjEpLGZ1''@;'; put 'put ''bmN0aW9uKGUsbCl7ZnVuY3Rpb24gYShILEMsVil7Vi5lbnVtZXJhYmxlPSEwLFYuY29uZmlndXJhYmxlPSEwLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShILEMsVil9ZnVuY3Rpb24gYyhIKXt0aGlzLl9lbGVtZW50PUgsdGhpcy5fc3Vycm9nYXRlU3R5bGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVu''@;'; put 'put ''dE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiZGl2Iikuc3R5bGUsdGhpcy5fc3R5bGU9SC5zdHlsZSx0aGlzLl9sZW5ndGg9MCx0aGlzLl9pc0FuaW1hdGVkUHJvcGVydHk9e30sdGhpcy5fdXBkYXRlU3ZnVHJhbnNmb3JtQXR0cj1mdW5jdGlvbiByKEgsQyl7cmV0dXJuISgh''@;'; put 'put ''Qy5uYW1lc3BhY2VVUkl8fC0xPT1DLm5hbWVzcGFjZVVSSS5pbmRleE9mKCIvc3ZnIikpJiYoaCBpbiBIfHwoSFtoXT0vVHJpZGVudHxNU0lFfElFTW9iaWxlfEVkZ2V8QW5kcm9pZCA0L2kudGVzdChILm5hdmlnYXRvci51c2VyQWdlbnQpKSxIW2hdKX0od2luZG93LEgpLHRoaXMuX3NhdmVk''@;'; put 'put ''VHJhbnNmb3JtQXR0cj1udWxsO2Zvcih2YXIgQz0wO0M8dGhpcy5fc3R5bGUubGVuZ3RoO0MrKyl7dmFyIFY9dGhpcy5fc3R5bGVbQ107dGhpcy5fc3Vycm9nYXRlU3R5bGVbVl09dGhpcy5fc3R5bGVbVl19dGhpcy5fdXBkYXRlSW5kaWNlcygpfXZhciBoPSJfd2ViQW5pbWF0aW9uc1VwZGF0''@;'; put 'put ''ZVN2Z1RyYW5zZm9ybUF0dHIiLGY9e2Nzc1RleHQ6MSxsZW5ndGg6MSxwYXJlbnRSdWxlOjF9LGc9e2dldFByb3BlcnR5Q1NTVmFsdWU6MSxnZXRQcm9wZXJ0eVByaW9yaXR5OjEsZ2V0UHJvcGVydHlWYWx1ZToxLGl0ZW06MSxyZW1vdmVQcm9wZXJ0eToxLHNldFByb3BlcnR5OjF9LHU9e3Jl''@;'; put 'put ''bW92ZVByb3BlcnR5OjEsc2V0UHJvcGVydHk6MX07Zm9yKHZhciBwIGluIGMucHJvdG90eXBlPXtnZXQgY3NzVGV4dCgpe3JldHVybiB0aGlzLl9zdXJyb2dhdGVTdHlsZS5jc3NUZXh0fSxzZXQgY3NzVGV4dChIKXtmb3IodmFyIEM9e30sVj0wO1Y8dGhpcy5fc3Vycm9nYXRlU3R5bGUubGVu''@;'; put 'put ''Z3RoO1YrKylDW3RoaXMuX3N1cnJvZ2F0ZVN0eWxlW1ZdXT0hMDtmb3IodGhpcy5fc3Vycm9nYXRlU3R5bGUuY3NzVGV4dD1ILHRoaXMuX3VwZGF0ZUluZGljZXMoKSxWPTA7Vjx0aGlzLl9zdXJyb2dhdGVTdHlsZS5sZW5ndGg7VisrKUNbdGhpcy5fc3Vycm9nYXRlU3R5bGVbVl1dPSEwO2Zv''@;'; put 'put ''cih2YXIgUyBpbiBDKXRoaXMuX2lzQW5pbWF0ZWRQcm9wZXJ0eVtTXXx8dGhpcy5fc3R5bGUuc2V0UHJvcGVydHkoUyx0aGlzLl9zdXJyb2dhdGVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKFMpKX0sZ2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9zdXJyb2dhdGVTdHlsZS5sZW5ndGh9LGdldCBw''@;'; put 'put ''YXJlbnRSdWxlKCl7cmV0dXJuIHRoaXMuX3N0eWxlLnBhcmVudFJ1bGV9LF91cGRhdGVJbmRpY2VzOmZ1bmN0aW9uKCl7Zm9yKDt0aGlzLl9sZW5ndGg8dGhpcy5fc3Vycm9nYXRlU3R5bGUubGVuZ3RoOylPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyx0aGlzLl9sZW5ndGgse2NvbmZpZ3Vy''@;'; put 'put ''YWJsZTohMCxlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbihIKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3Vycm9nYXRlU3R5bGVbSF19fSh0aGlzLl9sZW5ndGgpfSksdGhpcy5fbGVuZ3RoKys7Zm9yKDt0aGlzLl9sZW5ndGg+dGhpcy5fc3Vycm9nYXRlU3R5bGUubGVuZ3Ro''@;'; put 'put ''Oyl0aGlzLl9sZW5ndGgtLSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyx0aGlzLl9sZW5ndGgse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOnZvaWQgMH0pfSxfc2V0OmZ1bmN0aW9uKEgsQyl7dGhpcy5fc3R5bGVbSF09Qyx0aGlzLl9pc0FuaW1hdGVkUHJvcGVydHlb''@;'; put 'put ''SF09ITAsdGhpcy5fdXBkYXRlU3ZnVHJhbnNmb3JtQXR0ciYmInRyYW5zZm9ybSI9PWUudW5wcmVmaXhlZFByb3BlcnR5TmFtZShIKSYmKG51bGw9PXRoaXMuX3NhdmVkVHJhbnNmb3JtQXR0ciYmKHRoaXMuX3NhdmVkVHJhbnNmb3JtQXR0cj10aGlzLl9lbGVtZW50LmdldEF0dHJpYnV0ZSgi''@;'; put 'put ''dHJhbnNmb3JtIikpLHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLGUudHJhbnNmb3JtVG9TdmdNYXRyaXgoQykpKX0sX2NsZWFyOmZ1bmN0aW9uKEgpe3RoaXMuX3N0eWxlW0hdPXRoaXMuX3N1cnJvZ2F0ZVN0eWxlW0hdLHRoaXMuX3VwZGF0ZVN2Z1RyYW5zZm9ybUF0''@;'; put 'put ''dHImJiJ0cmFuc2Zvcm0iPT1lLnVucHJlZml4ZWRQcm9wZXJ0eU5hbWUoSCkmJih0aGlzLl9zYXZlZFRyYW5zZm9ybUF0dHI/dGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdGhpcy5fc2F2ZWRUcmFuc2Zvcm1BdHRyKTp0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0''@;'; put 'put ''ZSgidHJhbnNmb3JtIiksdGhpcy5fc2F2ZWRUcmFuc2Zvcm1BdHRyPW51bGwpLGRlbGV0ZSB0aGlzLl9pc0FuaW1hdGVkUHJvcGVydHlbSF19fSxnKWMucHJvdG90eXBlW3BdPWZ1bmN0aW9uKEgsQyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIFY9dGhpcy5fc3Vycm9nYXRlU3R5bGVbSF0uYXBw''@;'; put 'put ''bHkodGhpcy5fc3Vycm9nYXRlU3R5bGUsYXJndW1lbnRzKTtyZXR1cm4gQyYmKHRoaXMuX2lzQW5pbWF0ZWRQcm9wZXJ0eVthcmd1bWVudHNbMF1dfHx0aGlzLl9zdHlsZVtIXS5hcHBseSh0aGlzLl9zdHlsZSxhcmd1bWVudHMpLHRoaXMuX3VwZGF0ZUluZGljZXMoKSksVn19KHAscCBpbiB1''@;'; put 'put ''KTtmb3IodmFyIHYgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlKXYgaW4gZnx8diBpbiBnfHxmdW5jdGlvbihIKXthKGMucHJvdG90eXBlLEgse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdXJyb2dhdGVTdHlsZVtIXX0sc2V0OmZ1bmN0aW9uKEMpe3RoaXMuX3N1cnJv''@;'; put 'put ''Z2F0ZVN0eWxlW0hdPUMsdGhpcy5fdXBkYXRlSW5kaWNlcygpLHRoaXMuX2lzQW5pbWF0ZWRQcm9wZXJ0eVtIXXx8KHRoaXMuX3N0eWxlW0hdPUMpfX0pfSh2KTtlLmFwcGx5PWZ1bmN0aW9uKEgsQyxWKXsoZnVuY3Rpb24gbyhIKXtpZighSC5fd2ViQW5pbWF0aW9uc1BhdGNoZWRTdHlsZSl7''@;'; put 'put ''dmFyIEM9bmV3IGMoSCk7dHJ5e2EoSCwic3R5bGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQ319KX1jYXRjaChWKXtILnN0eWxlLl9zZXQ9ZnVuY3Rpb24oUyxfKXtILnN0eWxlW1NdPV99LEguc3R5bGUuX2NsZWFyPWZ1bmN0aW9uKFMpe0guc3R5bGVbU109IiJ9fUguX3dlYkFuaW1hdGlv''@;'; put 'put ''bnNQYXRjaGVkU3R5bGU9SC5zdHlsZX19KShIKSxILnN0eWxlLl9zZXQoZS5wcm9wZXJ0eU5hbWUoQyksVil9LGUuY2xlYXI9ZnVuY3Rpb24oSCxDKXtILl93ZWJBbmltYXRpb25zUGF0Y2hlZFN0eWxlJiZILnN0eWxlLl9jbGVhcihlLnByb3BlcnR5TmFtZShDKSl9fShGMSksZnVuY3Rpb24o''@;'; put 'put ''ZSl7d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24obCxyKXt2YXIgYT0iIjtyZXR1cm4gciYmci5pZCYmKGE9ci5pZCksZS50aW1lbGluZS5fcGxheShlLktleWZyYW1lRWZmZWN0KHRoaXMsbCxyLGEpKX19KEYxKSxmdW5jdGlvbihlLGwpe2Z1bmN0aW9uIHIoYSxj''@;'; put 'put ''LG8pe2lmKCJudW1iZXIiPT10eXBlb2YgYSYmIm51bWJlciI9PXR5cGVvZiBjKXJldHVybiBhKigxLW8pK2MqbztpZigiYm9vbGVhbiI9PXR5cGVvZiBhJiYiYm9vbGVhbiI9PXR5cGVvZiBjKXJldHVybiBvPC41P2E6YztpZihhLmxlbmd0aD09Yy5sZW5ndGgpe2Zvcih2YXIgaD1bXSxmPTA7''@;'; put 'put ''ZjxhLmxlbmd0aDtmKyspaC5wdXNoKHIoYVtmXSxjW2ZdLG8pKTtyZXR1cm4gaH10aHJvdyJNaXNtYXRjaGVkIGludGVycG9sYXRpb24gYXJndW1lbnRzICIrYSsiOiIrY31lLkludGVycG9sYXRpb249ZnVuY3Rpb24oYSxjLG8pe3JldHVybiBmdW5jdGlvbihoKXtyZXR1cm4gbyhyKGEsYyxo''@;'; put 'put ''KSl9fX0oRjEpLGZ1bmN0aW9uKGUsbCl7dmFyIGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBvKGcsdSl7Zm9yKHZhciBwPVtbMCwwLDAsMF0sWzAsMCwwLDBdLFswLDAsMCwwXSxbMCwwLDAsMF1dLHY9MDt2PDQ7disrKWZvcih2YXIgSD0wO0g8NDtIKyspZm9yKHZhciBDPTA7Qzw0O0MrKylwW3Zd''@;'; put 'put ''W0hdKz11W3ZdW0NdKmdbQ11bSF07cmV0dXJuIHB9cmV0dXJuIGZ1bmN0aW9uIGYoZyx1LHAsdixIKXtmb3IodmFyIEM9W1sxLDAsMCwwXSxbMCwxLDAsMF0sWzAsMCwxLDBdLFswLDAsMCwxXV0sVj0wO1Y8NDtWKyspQ1tWXVszXT1IW1ZdO2ZvcihWPTA7VjwzO1YrKylmb3IodmFyIFM9MDtT''@;'; put 'put ''PDM7UysrKUNbM11bVl0rPWdbU10qQ1tTXVtWXTt2YXIgXz12WzBdLGI9dlsxXSxNPXZbMl0seD12WzNdLEU9W1sxLDAsMCwwXSxbMCwxLDAsMF0sWzAsMCwxLDBdLFswLDAsMCwxXV07RVswXVswXT0xLTIqKGIqYitNKk0pLEVbMF1bMV09MiooXypiLU0qeCksRVswXVsyXT0yKihfKk0rYip4''@;'; put 'put ''KSxFWzFdWzBdPTIqKF8qYitNKngpLEVbMV1bMV09MS0yKihfKl8rTSpNKSxFWzFdWzJdPTIqKGIqTS1fKngpLEVbMl1bMF09MiooXypNLWIqeCksRVsyXVsxXT0yKihiKk0rXyp4KSxFWzJdWzJdPTEtMiooXypfK2IqYiksQz1vKEMsRSk7dmFyIHc9W1sxLDAsMCwwXSxbMCwxLDAsMF0sWzAs''@;'; put 'put ''MCwxLDBdLFswLDAsMCwxXV07Zm9yKHBbMl0mJih3WzJdWzFdPXBbMl0sQz1vKEMsdykpLHBbMV0mJih3WzJdWzFdPTAsd1syXVswXT1wWzBdLEM9byhDLHcpKSxwWzBdJiYod1syXVswXT0wLHdbMV1bMF09cFswXSxDPW8oQyx3KSksVj0wO1Y8MztWKyspZm9yKFM9MDtTPDM7UysrKUNbVl1b''@;'; put 'put ''U10qPXVbVl07cmV0dXJuIGZ1bmN0aW9uIGgoZyl7cmV0dXJuIDA9PWdbMF1bMl0mJjA9PWdbMF1bM10mJjA9PWdbMV1bMl0mJjA9PWdbMV1bM10mJjA9PWdbMl1bMF0mJjA9PWdbMl1bMV0mJjE9PWdbMl1bMl0mJjA9PWdbMl1bM10mJjA9PWdbM11bMl0mJjE9PWdbM11bM119KEMpP1tDWzBd''@;'; put 'put ''WzBdLENbMF1bMV0sQ1sxXVswXSxDWzFdWzFdLENbM11bMF0sQ1szXVsxXV06Q1swXS5jb25jYXQoQ1sxXSxDWzJdLENbM10pfX0oKTtlLmNvbXBvc2VNYXRyaXg9YyxlLnF1YXQ9ZnVuY3Rpb24gYShvLGgsZil7dmFyIGc9ZS5kb3QobyxoKTtnPWZ1bmN0aW9uIHIobyxoLGYpe3JldHVybiBN''@;'; put 'put ''YXRoLm1heChNYXRoLm1pbihvLGYpLGgpfShnLC0xLDEpO3ZhciB1PVtdO2lmKDE9PT1nKXU9bztlbHNlIGZvcih2YXIgcD1NYXRoLmFjb3MoZyksdj0xKk1hdGguc2luKGYqcCkvTWF0aC5zcXJ0KDEtZypnKSxIPTA7SDw0O0grKyl1LnB1c2gob1tIXSooTWF0aC5jb3MoZipwKS1nKnYpK2hb''@;'; put 'put ''SF0qdik7cmV0dXJuIHV9fShGMSksZnVuY3Rpb24oZSxsLHIpe2Uuc2VxdWVuY2VOdW1iZXI9MDt2YXIgYT1mdW5jdGlvbihjLG8saCl7dGhpcy50YXJnZXQ9Yyx0aGlzLmN1cnJlbnRUaW1lPW8sdGhpcy50aW1lbGluZVRpbWU9aCx0aGlzLnR5cGU9ImZpbmlzaCIsdGhpcy5idWJibGVzPSEx''@;'; put 'put ''LHRoaXMuY2FuY2VsYWJsZT0hMSx0aGlzLmN1cnJlbnRUYXJnZXQ9Yyx0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITEsdGhpcy5ldmVudFBoYXNlPUV2ZW50LkFUX1RBUkdFVCx0aGlzLnRpbWVTdGFtcD1EYXRlLm5vdygpfTtsLkFuaW1hdGlvbj1mdW5jdGlvbihjKXt0aGlzLmlkPSIiLGMmJmMu''@;'; put 'put ''X2lkJiYodGhpcy5pZD1jLl9pZCksdGhpcy5fc2VxdWVuY2VOdW1iZXI9ZS5zZXF1ZW5jZU51bWJlcisrLHRoaXMuX2N1cnJlbnRUaW1lPTAsdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy5fcGF1c2VkPSExLHRoaXMuX3BsYXliYWNrUmF0ZT0xLHRoaXMuX2luVGltZWxpbmU9ITAsdGhpcy5f''@;'; put 'put ''ZmluaXNoZWRGbGFnPSEwLHRoaXMub25maW5pc2g9bnVsbCx0aGlzLl9maW5pc2hIYW5kbGVycz1bXSx0aGlzLl9lZmZlY3Q9Yyx0aGlzLl9pbkVmZmVjdD10aGlzLl9lZmZlY3QuX3VwZGF0ZSgwKSx0aGlzLl9pZGxlPSEwLHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz0hMX0sbC5BbmltYXRp''@;'; put 'put ''b24ucHJvdG90eXBlPXtfZW5zdXJlQWxpdmU6ZnVuY3Rpb24oKXt0aGlzLl9pbkVmZmVjdD10aGlzLl9lZmZlY3QuX3VwZGF0ZSh0aGlzLnBsYXliYWNrUmF0ZTwwJiYwPT09dGhpcy5jdXJyZW50VGltZT8tMTp0aGlzLmN1cnJlbnRUaW1lKSx0aGlzLl9pblRpbWVsaW5lfHwhdGhpcy5faW5F''@;'; put 'put ''ZmZlY3QmJnRoaXMuX2ZpbmlzaGVkRmxhZ3x8KHRoaXMuX2luVGltZWxpbmU9ITAsbC50aW1lbGluZS5fYW5pbWF0aW9ucy5wdXNoKHRoaXMpKX0sX3RpY2tDdXJyZW50VGltZTpmdW5jdGlvbihjLG8pe2MhPXRoaXMuX2N1cnJlbnRUaW1lJiYodGhpcy5fY3VycmVudFRpbWU9Yyx0aGlzLl9p''@;'; put 'put ''c0ZpbmlzaGVkJiYhbyYmKHRoaXMuX2N1cnJlbnRUaW1lPXRoaXMuX3BsYXliYWNrUmF0ZT4wP3RoaXMuX3RvdGFsRHVyYXRpb246MCksdGhpcy5fZW5zdXJlQWxpdmUoKSl9LGdldCBjdXJyZW50VGltZSgpe3JldHVybiB0aGlzLl9pZGxlfHx0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc/bnVs''@;'; put 'put ''bDp0aGlzLl9jdXJyZW50VGltZX0sc2V0IGN1cnJlbnRUaW1lKGMpe2M9K2MsaXNOYU4oYyl8fChsLnJlc3RhcnQoKSx0aGlzLl9wYXVzZWR8fG51bGw9PXRoaXMuX3N0YXJ0VGltZXx8KHRoaXMuX3N0YXJ0VGltZT10aGlzLl90aW1lbGluZS5jdXJyZW50VGltZS1jL3RoaXMuX3BsYXliYWNr''@;'; put 'put ''UmF0ZSksdGhpcy5fY3VycmVudFRpbWVQZW5kaW5nPSExLHRoaXMuX2N1cnJlbnRUaW1lIT1jJiYodGhpcy5faWRsZSYmKHRoaXMuX2lkbGU9ITEsdGhpcy5fcGF1c2VkPSEwKSx0aGlzLl90aWNrQ3VycmVudFRpbWUoYywhMCksbC5hcHBseURpcnRpZWRBbmltYXRpb24odGhpcykpKX0sZ2V0''@;'; put 'put ''IHN0YXJ0VGltZSgpe3JldHVybiB0aGlzLl9zdGFydFRpbWV9LHNldCBzdGFydFRpbWUoYyl7Yz0rYyxpc05hTihjKXx8dGhpcy5fcGF1c2VkfHx0aGlzLl9pZGxlfHwodGhpcy5fc3RhcnRUaW1lPWMsdGhpcy5fdGlja0N1cnJlbnRUaW1lKCh0aGlzLl90aW1lbGluZS5jdXJyZW50VGltZS10''@;'; put 'put ''aGlzLl9zdGFydFRpbWUpKnRoaXMucGxheWJhY2tSYXRlKSxsLmFwcGx5RGlydGllZEFuaW1hdGlvbih0aGlzKSl9LGdldCBwbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5fcGxheWJhY2tSYXRlfSxzZXQgcGxheWJhY2tSYXRlKGMpe2lmKGMhPXRoaXMuX3BsYXliYWNrUmF0ZSl7dmFyIG89''@;'; put 'put ''dGhpcy5jdXJyZW50VGltZTt0aGlzLl9wbGF5YmFja1JhdGU9Yyx0aGlzLl9zdGFydFRpbWU9bnVsbCwicGF1c2VkIiE9dGhpcy5wbGF5U3RhdGUmJiJpZGxlIiE9dGhpcy5wbGF5U3RhdGUmJih0aGlzLl9maW5pc2hlZEZsYWc9ITEsdGhpcy5faWRsZT0hMSx0aGlzLl9lbnN1cmVBbGl2ZSgp''@;'; put 'put ''LGwuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKHRoaXMpKSxudWxsIT1vJiYodGhpcy5jdXJyZW50VGltZT1vKX19LGdldCBfaXNGaW5pc2hlZCgpe3JldHVybiF0aGlzLl9pZGxlJiYodGhpcy5fcGxheWJhY2tSYXRlPjAmJnRoaXMuX2N1cnJlbnRUaW1lPj10aGlzLl90b3RhbER1cmF0aW9ufHx0''@;'; put 'put ''aGlzLl9wbGF5YmFja1JhdGU8MCYmdGhpcy5fY3VycmVudFRpbWU8PTApfSxnZXQgX3RvdGFsRHVyYXRpb24oKXtyZXR1cm4gdGhpcy5fZWZmZWN0Ll90b3RhbER1cmF0aW9ufSxnZXQgcGxheVN0YXRlKCl7cmV0dXJuIHRoaXMuX2lkbGU/ImlkbGUiOm51bGw9PXRoaXMuX3N0YXJ0VGltZSYm''@;'; put 'put ''IXRoaXMuX3BhdXNlZCYmMCE9dGhpcy5wbGF5YmFja1JhdGV8fHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz8icGVuZGluZyI6dGhpcy5fcGF1c2VkPyJwYXVzZWQiOnRoaXMuX2lzRmluaXNoZWQ/ImZpbmlzaGVkIjoicnVubmluZyJ9LF9yZXdpbmQ6ZnVuY3Rpb24oKXtpZih0aGlzLl9wbGF5''@;'; put 'put ''YmFja1JhdGU+PTApdGhpcy5fY3VycmVudFRpbWU9MDtlbHNle2lmKCEodGhpcy5fdG90YWxEdXJhdGlvbjwxLzApKXRocm93IG5ldyBET01FeGNlcHRpb24oIlVuYWJsZSB0byByZXdpbmQgbmVnYXRpdmUgcGxheWJhY2sgcmF0ZSBhbmltYXRpb24gd2l0aCBpbmZpbml0ZSBkdXJhdGlvbiIs''@;'; put 'put ''IkludmFsaWRTdGF0ZUVycm9yIik7dGhpcy5fY3VycmVudFRpbWU9dGhpcy5fdG90YWxEdXJhdGlvbn19LHBsYXk6ZnVuY3Rpb24oKXt0aGlzLl9wYXVzZWQ9ITEsKHRoaXMuX2lzRmluaXNoZWR8fHRoaXMuX2lkbGUpJiYodGhpcy5fcmV3aW5kKCksdGhpcy5fc3RhcnRUaW1lPW51bGwpLHRo''@;'; put 'put ''aXMuX2ZpbmlzaGVkRmxhZz0hMSx0aGlzLl9pZGxlPSExLHRoaXMuX2Vuc3VyZUFsaXZlKCksbC5hcHBseURpcnRpZWRBbmltYXRpb24odGhpcyl9LHBhdXNlOmZ1bmN0aW9uKCl7dGhpcy5faXNGaW5pc2hlZHx8dGhpcy5fcGF1c2VkfHx0aGlzLl9pZGxlP3RoaXMuX2lkbGUmJih0aGlzLl9y''@;'; put 'put ''ZXdpbmQoKSx0aGlzLl9pZGxlPSExKTp0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc9ITAsdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy5fcGF1c2VkPSEwfSxmaW5pc2g6ZnVuY3Rpb24oKXt0aGlzLl9pZGxlfHwodGhpcy5jdXJyZW50VGltZT10aGlzLl9wbGF5YmFja1JhdGU+MD90aGlzLl90''@;'; put 'put ''b3RhbER1cmF0aW9uOjAsdGhpcy5fc3RhcnRUaW1lPXRoaXMuX3RvdGFsRHVyYXRpb24tdGhpcy5jdXJyZW50VGltZSx0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc9ITEsbC5hcHBseURpcnRpZWRBbmltYXRpb24odGhpcykpfSxjYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLl9pbkVmZmVjdCYmKHRo''@;'; put 'put ''aXMuX2luRWZmZWN0PSExLHRoaXMuX2lkbGU9ITAsdGhpcy5fcGF1c2VkPSExLHRoaXMuX2ZpbmlzaGVkRmxhZz0hMCx0aGlzLl9jdXJyZW50VGltZT0wLHRoaXMuX3N0YXJ0VGltZT1udWxsLHRoaXMuX2VmZmVjdC5fdXBkYXRlKG51bGwpLGwuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKHRoaXMp''@;'; put 'put ''KX0scmV2ZXJzZTpmdW5jdGlvbigpe3RoaXMucGxheWJhY2tSYXRlKj0tMSx0aGlzLnBsYXkoKX0sYWRkRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihjLG8peyJmdW5jdGlvbiI9PXR5cGVvZiBvJiYiZmluaXNoIj09YyYmdGhpcy5fZmluaXNoSGFuZGxlcnMucHVzaChvKX0scmVtb3ZlRXZlbnRM''@;'; put 'put ''aXN0ZW5lcjpmdW5jdGlvbihjLG8pe2lmKCJmaW5pc2giPT1jKXt2YXIgaD10aGlzLl9maW5pc2hIYW5kbGVycy5pbmRleE9mKG8pO2g+PTAmJnRoaXMuX2ZpbmlzaEhhbmRsZXJzLnNwbGljZShoLDEpfX0sX2ZpcmVFdmVudHM6ZnVuY3Rpb24oYyl7aWYodGhpcy5faXNGaW5pc2hlZCl7aWYo''@;'; put 'put ''IXRoaXMuX2ZpbmlzaGVkRmxhZyl7dmFyIG89bmV3IGEodGhpcyx0aGlzLl9jdXJyZW50VGltZSxjKSxoPXRoaXMuX2ZpbmlzaEhhbmRsZXJzLmNvbmNhdCh0aGlzLm9uZmluaXNoP1t0aGlzLm9uZmluaXNoXTpbXSk7c2V0VGltZW91dChmdW5jdGlvbigpe2guZm9yRWFjaChmdW5jdGlvbihm''@;'; put 'put ''KXtmLmNhbGwoby50YXJnZXQsbyl9KX0sMCksdGhpcy5fZmluaXNoZWRGbGFnPSEwfX1lbHNlIHRoaXMuX2ZpbmlzaGVkRmxhZz0hMX0sX3RpY2s6ZnVuY3Rpb24oYyxvKXt0aGlzLl9pZGxlfHx0aGlzLl9wYXVzZWR8fChudWxsPT10aGlzLl9zdGFydFRpbWU/byYmKHRoaXMuc3RhcnRUaW1l''@;'; put 'put ''PWMtdGhpcy5fY3VycmVudFRpbWUvdGhpcy5wbGF5YmFja1JhdGUpOnRoaXMuX2lzRmluaXNoZWR8fHRoaXMuX3RpY2tDdXJyZW50VGltZSgoYy10aGlzLl9zdGFydFRpbWUpKnRoaXMucGxheWJhY2tSYXRlKSksbyYmKHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz0hMSx0aGlzLl9maXJlRXZl''@;'; put 'put ''bnRzKGMpKX0sZ2V0IF9uZWVkc1RpY2soKXtyZXR1cm4gdGhpcy5wbGF5U3RhdGUgaW57cGVuZGluZzoxLHJ1bm5pbmc6MX18fCF0aGlzLl9maW5pc2hlZEZsYWd9LF90YXJnZXRBbmltYXRpb25zOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5fZWZmZWN0Ll90YXJnZXQ7cmV0dXJuIGMuX2FjdGl2''@;'; put 'put ''ZUFuaW1hdGlvbnN8fChjLl9hY3RpdmVBbmltYXRpb25zPVtdKSxjLl9hY3RpdmVBbmltYXRpb25zfSxfbWFya1RhcmdldDpmdW5jdGlvbigpe3ZhciBjPXRoaXMuX3RhcmdldEFuaW1hdGlvbnMoKTstMT09PWMuaW5kZXhPZih0aGlzKSYmYy5wdXNoKHRoaXMpfSxfdW5tYXJrVGFyZ2V0OmZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIGM9dGhpcy5fdGFyZ2V0QW5pbWF0aW9ucygpLG89Yy5pbmRleE9mKHRoaXMpOy0xIT09byYmYy5zcGxpY2UobywxKX19fShYLEYxKSxmdW5jdGlvbihlLGwscil7ZnVuY3Rpb24gYShiKXt2YXIgTT11O3U9W10sYjxfLmN1cnJlbnRUaW1lJiYoYj1fLmN1cnJlbnRUaW1l''@;'; put 'put ''KSxfLl9hbmltYXRpb25zLnNvcnQoYyksXy5fYW5pbWF0aW9ucz1mKGIsITAsXy5fYW5pbWF0aW9ucylbMF0sTS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3hbMV0oYil9KSxoKCl9ZnVuY3Rpb24gYyhiLE0pe3JldHVybiBiLl9zZXF1ZW5jZU51bWJlci1NLl9zZXF1ZW5jZU51bWJlcn1mdW5jdGlv''@;'; put 'put ''biBvKCl7dGhpcy5fYW5pbWF0aW9ucz1bXSx0aGlzLmN1cnJlbnRUaW1lPXdpbmRvdy5wZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlLm5vdygpOjB9ZnVuY3Rpb24gaCgpe1YuZm9yRWFjaChmdW5jdGlvbihiKXtiKCl9KSxWLmxlbmd0aD0wfWZ1bmN0aW9uIGYoYixN''@;'; put 'put ''LHgpe1M9ITAsQz0hMSxsLnRpbWVsaW5lLmN1cnJlbnRUaW1lPWIsSD0hMTt2YXIgRT1bXSx3PVtdLE49W10sST1bXTtyZXR1cm4geC5mb3JFYWNoKGZ1bmN0aW9uKFcpe1cuX3RpY2soYixNKSxXLl9pbkVmZmVjdD8ody5wdXNoKFcuX2VmZmVjdCksVy5fbWFya1RhcmdldCgpKTooRS5wdXNo''@;'; put 'put ''KFcuX2VmZmVjdCksVy5fdW5tYXJrVGFyZ2V0KCkpLFcuX25lZWRzVGljayYmKEg9ITApO3ZhciBPPVcuX2luRWZmZWN0fHxXLl9uZWVkc1RpY2s7Vy5faW5UaW1lbGluZT1PLE8/Ti5wdXNoKFcpOkkucHVzaChXKX0pLFYucHVzaC5hcHBseShWLEUpLFYucHVzaC5hcHBseShWLHcpLEgmJnJl''@;'; put 'put ''cXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe30pLFM9ITEsW04sSV19dmFyIGc9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSx1PVtdLHA9MDt3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lPWZ1bmN0aW9uKGIpe3ZhciBNPXArKztyZXR1cm4gMD09dS5sZW5ndGgmJmcoYSks''@;'; put 'put ''dS5wdXNoKFtNLGJdKSxNfSx3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWU9ZnVuY3Rpb24oYil7dS5mb3JFYWNoKGZ1bmN0aW9uKE0pe01bMF09PWImJihNWzFdPWZ1bmN0aW9uKCl7fSl9KX0sby5wcm90b3R5cGU9e19wbGF5OmZ1bmN0aW9uKGIpe2IuX3RpbWluZz1lLm5vcm1hbGl6ZVRp''@;'; put 'put ''bWluZ0lucHV0KGIudGltaW5nKTt2YXIgTT1uZXcgbC5BbmltYXRpb24oYik7cmV0dXJuIE0uX2lkbGU9ITEsTS5fdGltZWxpbmU9dGhpcyx0aGlzLl9hbmltYXRpb25zLnB1c2goTSksbC5yZXN0YXJ0KCksbC5hcHBseURpcnRpZWRBbmltYXRpb24oTSksTX19O3ZhciBIPSExLEM9ITE7bC5y''@;'; put 'put ''ZXN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIEh8fChIPSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe30pLEM9ITApLEN9LGwuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uPWZ1bmN0aW9uKGIpe2lmKCFTKXtiLl9tYXJrVGFyZ2V0KCk7dmFyIE09Yi5fdGFyZ2V0QW5pbWF0aW9ucygp''@;'; put 'put ''O00uc29ydChjKSxmKGwudGltZWxpbmUuY3VycmVudFRpbWUsITEsTS5zbGljZSgpKVsxXS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBFPV8uX2FuaW1hdGlvbnMuaW5kZXhPZih4KTstMSE9PUUmJl8uX2FuaW1hdGlvbnMuc3BsaWNlKEUsMSl9KSxoKCl9fTt2YXIgVj1bXSxTPSExLF89bmV3''@;'; put 'put ''IG87bC50aW1lbGluZT1ffShYLEYxKSxmdW5jdGlvbihlLGwpe2Z1bmN0aW9uIHIodSxwKXtmb3IodmFyIHY9MCxIPTA7SDx1Lmxlbmd0aDtIKyspdis9dVtIXSpwW0hdO3JldHVybiB2fWZ1bmN0aW9uIGEodSxwKXtyZXR1cm5bdVswXSpwWzBdK3VbNF0qcFsxXSt1WzhdKnBbMl0rdVsxMl0q''@;'; put 'put ''cFszXSx1WzFdKnBbMF0rdVs1XSpwWzFdK3VbOV0qcFsyXSt1WzEzXSpwWzNdLHVbMl0qcFswXSt1WzZdKnBbMV0rdVsxMF0qcFsyXSt1WzE0XSpwWzNdLHVbM10qcFswXSt1WzddKnBbMV0rdVsxMV0qcFsyXSt1WzE1XSpwWzNdLHVbMF0qcFs0XSt1WzRdKnBbNV0rdVs4XSpwWzZdK3VbMTJd''@;'; put 'put ''KnBbN10sdVsxXSpwWzRdK3VbNV0qcFs1XSt1WzldKnBbNl0rdVsxM10qcFs3XSx1WzJdKnBbNF0rdVs2XSpwWzVdK3VbMTBdKnBbNl0rdVsxNF0qcFs3XSx1WzNdKnBbNF0rdVs3XSpwWzVdK3VbMTFdKnBbNl0rdVsxNV0qcFs3XSx1WzBdKnBbOF0rdVs0XSpwWzldK3VbOF0qcFsxMF0rdVsx''@;'; put 'put ''Ml0qcFsxMV0sdVsxXSpwWzhdK3VbNV0qcFs5XSt1WzldKnBbMTBdK3VbMTNdKnBbMTFdLHVbMl0qcFs4XSt1WzZdKnBbOV0rdVsxMF0qcFsxMF0rdVsxNF0qcFsxMV0sdVszXSpwWzhdK3VbN10qcFs5XSt1WzExXSpwWzEwXSt1WzE1XSpwWzExXSx1WzBdKnBbMTJdK3VbNF0qcFsxM10rdVs4''@;'; put 'put ''XSpwWzE0XSt1WzEyXSpwWzE1XSx1WzFdKnBbMTJdK3VbNV0qcFsxM10rdVs5XSpwWzE0XSt1WzEzXSpwWzE1XSx1WzJdKnBbMTJdK3VbNl0qcFsxM10rdVsxMF0qcFsxNF0rdVsxNF0qcFsxNV0sdVszXSpwWzEyXSt1WzddKnBbMTNdK3VbMTFdKnBbMTRdK3VbMTVdKnBbMTVdXX1mdW5jdGlv''@;'; put 'put ''biBjKHUpe3JldHVybigodS5kZWd8fDApLzM2MCsodS5ncmFkfHwwKS80MDArKHUudHVybnx8MCkpKigyKk1hdGguUEkpKyh1LnJhZHx8MCl9ZnVuY3Rpb24gbyh1KXtzd2l0Y2godS50KXtjYXNlInJvdGF0ZXgiOnZhciBiPWModS5kWzBdKTtyZXR1cm5bMSwwLDAsMCwwLE1hdGguY29zKGIp''@;'; put 'put ''LE1hdGguc2luKGIpLDAsMCwtTWF0aC5zaW4oYiksTWF0aC5jb3MoYiksMCwwLDAsMCwxXTtjYXNlInJvdGF0ZXkiOnJldHVybiBiPWModS5kWzBdKSxbTWF0aC5jb3MoYiksMCwtTWF0aC5zaW4oYiksMCwwLDEsMCwwLE1hdGguc2luKGIpLDAsTWF0aC5jb3MoYiksMCwwLDAsMCwxXTtjYXNl''@;'; put 'put ''InJvdGF0ZSI6Y2FzZSJyb3RhdGV6IjpyZXR1cm4gYj1jKHUuZFswXSksW01hdGguY29zKGIpLE1hdGguc2luKGIpLDAsMCwtTWF0aC5zaW4oYiksTWF0aC5jb3MoYiksMCwwLDAsMCwxLDAsMCwwLDAsMV07Y2FzZSJyb3RhdGUzZCI6dmFyIE09dS5kWzBdLHg9dS5kWzFdLEU9dS5kWzJdLHA9''@;'; put 'put ''KGI9Yyh1LmRbM10pLE0qTSt4KngrRSpFKTtpZigwPT09cClNPTEseD0wLEU9MDtlbHNlIGlmKDEhPT1wKXt2YXIgdj1NYXRoLnNxcnQocCk7TS89dix4Lz12LEUvPXZ9dmFyIEg9TWF0aC5zaW4oYi8yKSxDPUgqTWF0aC5jb3MoYi8yKSxWPUgqSDtyZXR1cm5bMS0yKih4KngrRSpFKSpWLDIq''@;'; put 'put ''KE0qeCpWK0UqQyksMiooTSpFKlYteCpDKSwwLDIqKE0qeCpWLUUqQyksMS0yKihNKk0rRSpFKSpWLDIqKHgqRSpWK00qQyksMCwyKihNKkUqVit4KkMpLDIqKHgqRSpWLU0qQyksMS0yKihNKk0reCp4KSpWLDAsMCwwLDAsMV07Y2FzZSJzY2FsZSI6cmV0dXJuW3UuZFswXSwwLDAsMCwwLHUu''@;'; put 'put ''ZFsxXSwwLDAsMCwwLDEsMCwwLDAsMCwxXTtjYXNlInNjYWxleCI6cmV0dXJuW3UuZFswXSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV07Y2FzZSJzY2FsZXkiOnJldHVyblsxLDAsMCwwLDAsdS5kWzBdLDAsMCwwLDAsMSwwLDAsMCwwLDFdO2Nhc2Uic2NhbGV6IjpyZXR1cm5bMSww''@;'; put 'put ''LDAsMCwwLDEsMCwwLDAsMCx1LmRbMF0sMCwwLDAsMCwxXTtjYXNlInNjYWxlM2QiOnJldHVyblt1LmRbMF0sMCwwLDAsMCx1LmRbMV0sMCwwLDAsMCx1LmRbMl0sMCwwLDAsMCwxXTtjYXNlInNrZXciOnZhciBTPWModS5kWzBdKSxfPWModS5kWzFdKTtyZXR1cm5bMSxNYXRoLnRhbihfKSww''@;'; put 'put ''LDAsTWF0aC50YW4oUyksMSwwLDAsMCwwLDEsMCwwLDAsMCwxXTtjYXNlInNrZXd4IjpyZXR1cm4gYj1jKHUuZFswXSksWzEsMCwwLDAsTWF0aC50YW4oYiksMSwwLDAsMCwwLDEsMCwwLDAsMCwxXTtjYXNlInNrZXd5IjpyZXR1cm4gYj1jKHUuZFswXSksWzEsTWF0aC50YW4oYiksMCwwLDAs''@;'; put 'put ''MSwwLDAsMCwwLDEsMCwwLDAsMCwxXTtjYXNlInRyYW5zbGF0ZSI6cmV0dXJuWzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLE09dS5kWzBdLnB4fHwwLHg9dS5kWzFdLnB4fHwwLDAsMV07Y2FzZSJ0cmFuc2xhdGV4IjpyZXR1cm5bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsTT11LmRbMF0ucHh8''@;'; put 'put ''fDAsMCwwLDFdO2Nhc2UidHJhbnNsYXRleSI6cmV0dXJuWzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAseD11LmRbMF0ucHh8fDAsMCwxXTtjYXNlInRyYW5zbGF0ZXoiOnJldHVyblsxLDAsMCwwLDAsMSwwLDAsMCwwLDEsMCwwLDAsRT11LmRbMF0ucHh8fDAsMV07Y2FzZSJ0cmFuc2xhdGUz''@;'; put 'put ''ZCI6cmV0dXJuWzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLE09dS5kWzBdLnB4fHwwLHg9dS5kWzFdLnB4fHwwLEU9dS5kWzJdLnB4fHwwLDFdO2Nhc2UicGVyc3BlY3RpdmUiOnJldHVyblsxLDAsMCwwLDAsMSwwLDAsMCwwLDEsdS5kWzBdLnB4Py0xL3UuZFswXS5weDowLDAsMCwwLDFdO2Nh''@;'; put 'put ''c2UibWF0cml4IjpyZXR1cm5bdS5kWzBdLHUuZFsxXSwwLDAsdS5kWzJdLHUuZFszXSwwLDAsMCwwLDEsMCx1LmRbNF0sdS5kWzVdLDAsMV07Y2FzZSJtYXRyaXgzZCI6cmV0dXJuIHUuZH19ZnVuY3Rpb24gaCh1KXtyZXR1cm4gMD09PXUubGVuZ3RoP1sxLDAsMCwwLDAsMSwwLDAsMCwwLDEs''@;'; put 'put ''MCwwLDAsMCwxXTp1Lm1hcChvKS5yZWR1Y2UoYSl9dmFyIGc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB1KE0pe3JldHVybiBNWzBdWzBdKk1bMV1bMV0qTVsyXVsyXStNWzFdWzBdKk1bMl1bMV0qTVswXVsyXStNWzJdWzBdKk1bMF1bMV0qTVsxXVsyXS1NWzBdWzJdKk1bMV1bMV0qTVsyXVswXS1N''@;'; put 'put ''WzFdWzJdKk1bMl1bMV0qTVswXVswXS1NWzJdWzJdKk1bMF1bMV0qTVsxXVswXX1mdW5jdGlvbiBDKE0pe3ZhciB4PVYoTSk7cmV0dXJuW01bMF0veCxNWzFdL3gsTVsyXS94XX1mdW5jdGlvbiBWKE0pe3JldHVybiBNYXRoLnNxcnQoTVswXSpNWzBdK01bMV0qTVsxXStNWzJdKk1bMl0pfWZ1''@;'; put 'put ''bmN0aW9uIFMoTSx4LEUsdyl7cmV0dXJuW0UqTVswXSt3KnhbMF0sRSpNWzFdK3cqeFsxXSxFKk1bMl0rdyp4WzJdXX1yZXR1cm4gZnVuY3Rpb24gYihNKXt2YXIgeD1bTS5zbGljZSgwLDQpLE0uc2xpY2UoNCw4KSxNLnNsaWNlKDgsMTIpLE0uc2xpY2UoMTIsMTYpXTtpZigxIT09eFszXVsz''@;'; put 'put ''XSlyZXR1cm4gbnVsbDtmb3IodmFyIEU9W10sdz0wO3c8NDt3KyspRS5wdXNoKHhbd10uc2xpY2UoKSk7Zm9yKHc9MDt3PDM7dysrKUVbd11bM109MDtpZigwPT09dShFKSlyZXR1cm4gbnVsbDt2YXIgTixJPVtdO3hbMF1bM118fHhbMV1bM118fHhbMl1bM10/KEkucHVzaCh4WzBdWzNdKSxJ''@;'; put 'put ''LnB1c2goeFsxXVszXSksSS5wdXNoKHhbMl1bM10pLEkucHVzaCh4WzNdWzNdKSxOPWZ1bmN0aW9uIEgoTSx4KXtmb3IodmFyIEU9W10sdz0wO3c8NDt3Kyspe2Zvcih2YXIgTj0wLEk9MDtJPDQ7SSsrKU4rPU1bSV0qeFtJXVt3XTtFLnB1c2goTil9cmV0dXJuIEV9KEksZnVuY3Rpb24gdihN''@;'; put 'put ''KXtyZXR1cm5bW01bMF1bMF0sTVsxXVswXSxNWzJdWzBdLE1bM11bMF1dLFtNWzBdWzFdLE1bMV1bMV0sTVsyXVsxXSxNWzNdWzFdXSxbTVswXVsyXSxNWzFdWzJdLE1bMl1bMl0sTVszXVsyXV0sW01bMF1bM10sTVsxXVszXSxNWzJdWzNdLE1bM11bM11dXX0oZnVuY3Rpb24gcChNKXtmb3Io''@;'; put 'put ''dmFyIHg9MS91KE0pLEU9TVswXVswXSx3PU1bMF1bMV0sTj1NWzBdWzJdLEk9TVsxXVswXSxXPU1bMV1bMV0sTz1NWzFdWzJdLEI9TVsyXVswXSxSPU1bMl1bMV0sbDE9TVsyXVsyXSxhMT1bWyhXKmwxLU8qUikqeCwoTipSLXcqbDEpKngsKHcqTy1OKlcpKngsMF0sWyhPKkItSSpsMSkqeCwo''@;'; put 'put ''RSpsMS1OKkIpKngsKE4qSS1FKk8pKngsMF0sWyhJKlItVypCKSp4LChCKnctRSpSKSp4LChFKlctdypJKSp4LDBdXSxoMT1bXSx1MT0wO3UxPDM7dTErKyl7Zm9yKHZhciBwMT0wLHYxPTA7djE8Mzt2MSsrKXAxKz1NWzNdW3YxXSphMVt2MV1bdTFdO2gxLnB1c2gocDEpfXJldHVybiBoMS5w''@;'; put 'put ''dXNoKDEpLGExLnB1c2goaDEpLGExfShFKSkpKTpOPVswLDAsMCwxXTt2YXIgVz14WzNdLnNsaWNlKDAsMyksTz1bXTtPLnB1c2goeFswXS5zbGljZSgwLDMpKTt2YXIgQj1bXTtCLnB1c2goVihPWzBdKSksT1swXT1DKE9bMF0pO3ZhciBSPVtdO08ucHVzaCh4WzFdLnNsaWNlKDAsMykpLFIu''@;'; put 'put ''cHVzaChyKE9bMF0sT1sxXSkpLE9bMV09UyhPWzFdLE9bMF0sMSwtUlswXSksQi5wdXNoKFYoT1sxXSkpLE9bMV09QyhPWzFdKSxSWzBdLz1CWzFdLE8ucHVzaCh4WzJdLnNsaWNlKDAsMykpLFIucHVzaChyKE9bMF0sT1syXSkpLE9bMl09UyhPWzJdLE9bMF0sMSwtUlsxXSksUi5wdXNoKHIo''@;'; put 'put ''T1sxXSxPWzJdKSksT1syXT1TKE9bMl0sT1sxXSwxLC1SWzJdKSxCLnB1c2goVihPWzJdKSksT1syXT1DKE9bMl0pLFJbMV0vPUJbMl0sUlsyXS89QlsyXTt2YXIgbDE9ZnVuY3Rpb24gXyhNLHgpe3JldHVybltNWzFdKnhbMl0tTVsyXSp4WzFdLE1bMl0qeFswXS1NWzBdKnhbMl0sTVswXSp4''@;'; put 'put ''WzFdLU1bMV0qeFswXV19KE9bMV0sT1syXSk7aWYocihPWzBdLGwxKTwwKWZvcih3PTA7dzwzO3crKylCW3ddKj0tMSxPW3ddWzBdKj0tMSxPW3ddWzFdKj0tMSxPW3ddWzJdKj0tMTt2YXIgYTEsaDEsdTE9T1swXVswXStPWzFdWzFdK09bMl1bMl0rMTtyZXR1cm4gdTE+MWUtND8oYTE9LjUv''@;'; put 'put ''TWF0aC5zcXJ0KHUxKSxoMT1bKE9bMl1bMV0tT1sxXVsyXSkqYTEsKE9bMF1bMl0tT1syXVswXSkqYTEsKE9bMV1bMF0tT1swXVsxXSkqYTEsLjI1L2ExXSk6T1swXVswXT5PWzFdWzFdJiZPWzBdWzBdPk9bMl1bMl0/aDE9Wy4yNSooYTE9MipNYXRoLnNxcnQoMStPWzBdWzBdLU9bMV1bMV0t''@;'; put 'put ''T1syXVsyXSkpLChPWzBdWzFdK09bMV1bMF0pL2ExLChPWzBdWzJdK09bMl1bMF0pL2ExLChPWzJdWzFdLU9bMV1bMl0pL2ExXTpPWzFdWzFdPk9bMl1bMl0/KGExPTIqTWF0aC5zcXJ0KDErT1sxXVsxXS1PWzBdWzBdLU9bMl1bMl0pLGgxPVsoT1swXVsxXStPWzFdWzBdKS9hMSwuMjUqYTEs''@;'; put 'put ''KE9bMV1bMl0rT1syXVsxXSkvYTEsKE9bMF1bMl0tT1syXVswXSkvYTFdKTooYTE9MipNYXRoLnNxcnQoMStPWzJdWzJdLU9bMF1bMF0tT1sxXVsxXSksaDE9WyhPWzBdWzJdK09bMl1bMF0pL2ExLChPWzFdWzJdK09bMl1bMV0pL2ExLC4yNSphMSwoT1sxXVswXS1PWzBdWzFdKS9hMV0pLFtX''@;'; put 'put ''LEIsUixoMSxOXX19KCk7ZS5kb3Q9cixlLm1ha2VNYXRyaXhEZWNvbXBvc2l0aW9uPWZ1bmN0aW9uIGYodSl7cmV0dXJuW2coaCh1KSldfSxlLnRyYW5zZm9ybUxpc3RUb01hdHJpeD1ofShGMSksZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbCh2LEgpe3ZhciBDPXYuZXhlYyhIKTtpZihDKXJldHVy''@;'; put 'put ''bltDPXYuaWdub3JlQ2FzZT9DWzBdLnRvTG93ZXJDYXNlKCk6Q1swXSxILnN1YnN0cihDLmxlbmd0aCldfWZ1bmN0aW9uIHIodixIKXt2YXIgQz12KEg9SC5yZXBsYWNlKC9eXHMqLywiIikpO2lmKEMpcmV0dXJuW0NbMF0sQ1sxXS5yZXBsYWNlKC9eXHMqLywiIildfWZ1bmN0aW9uIHUodixI''@;'; put 'put ''LEMsVixTKXtmb3IodmFyIF89W10sYj1bXSxNPVtdLHg9ZnVuY3Rpb24gbyh2LEgpe2Zvcih2YXIgQz12LFY9SDtDJiZWOylDPlY/QyU9VjpWJT1DO3JldHVybiB2KkgvKEMrVil9KFYubGVuZ3RoLFMubGVuZ3RoKSxFPTA7RTx4O0UrKyl7dmFyIHc9SChWW0UlVi5sZW5ndGhdLFNbRSVTLmxl''@;'; put 'put ''bmd0aF0pO2lmKCF3KXJldHVybjtfLnB1c2god1swXSksYi5wdXNoKHdbMV0pLE0ucHVzaCh3WzJdKX1yZXR1cm5bXyxiLGZ1bmN0aW9uKE4pe3ZhciBJPU4ubWFwKGZ1bmN0aW9uKFcsTyl7cmV0dXJuIE1bT10oVyl9KS5qb2luKEMpO3JldHVybiB2P3YoSSk6SX1dfWUuY29uc3VtZVRva2Vu''@;'; put 'put ''PWwsZS5jb25zdW1lVHJpbW1lZD1yLGUuY29uc3VtZVJlcGVhdGVkPWZ1bmN0aW9uIGEodixILEMpe3Y9ci5iaW5kKG51bGwsdik7Zm9yKHZhciBWPVtdOzspe3ZhciBTPXYoQyk7aWYoIVMpcmV0dXJuW1YsQ107aWYoVi5wdXNoKFNbMF0pLCEoUz1sKEgsQz1TWzFdKSl8fCIiPT1TWzFdKXJl''@;'; put 'put ''dHVybltWLENdO0M9U1sxXX19LGUuY29uc3VtZVBhcmVudGhlc2lzZWQ9ZnVuY3Rpb24gYyh2LEgpe2Zvcih2YXIgQz0wLFY9MDtWPEgubGVuZ3RoJiYoIS9cc3wsLy50ZXN0KEhbVl0pfHwwIT1DKTtWKyspaWYoIigiPT1IW1ZdKUMrKztlbHNlIGlmKCIpIj09SFtWXSYmKDA9PS0tQyYmVisr''@;'; put 'put ''LEM8PTApKWJyZWFrO3ZhciBTPXYoSC5zdWJzdHIoMCxWKSk7cmV0dXJuIG51bGw9PVM/dm9pZCAwOltTLEguc3Vic3RyKFYpXX0sZS5pZ25vcmU9ZnVuY3Rpb24gaCh2KXtyZXR1cm4gZnVuY3Rpb24oSCl7dmFyIEM9dihIKTtyZXR1cm4gQyYmKENbMF09dm9pZCAwKSxDfX0sZS5vcHRpb25h''@;'; put 'put ''bD1mdW5jdGlvbiBmKHYsSCl7cmV0dXJuIGZ1bmN0aW9uKEMpe3JldHVybiB2KEMpfHxbSCxDXX19LGUuY29uc3VtZUxpc3Q9ZnVuY3Rpb24gZyh2LEgpe2Zvcih2YXIgQz1bXSxWPTA7Vjx2Lmxlbmd0aDtWKyspe3ZhciBTPWUuY29uc3VtZVRyaW1tZWQodltWXSxIKTtpZighU3x8IiI9PVNb''@;'; put 'put ''MF0pcmV0dXJuO3ZvaWQgMCE9PVNbMF0mJkMucHVzaChTWzBdKSxIPVNbMV19aWYoIiI9PUgpcmV0dXJuIEN9LGUubWVyZ2VOZXN0ZWRSZXBlYXRlZD11LmJpbmQobnVsbCxudWxsKSxlLm1lcmdlV3JhcHBlZE5lc3RlZFJlcGVhdGVkPXUsZS5tZXJnZUxpc3Q9ZnVuY3Rpb24gcCh2LEgsQyl7''@;'; put 'put ''Zm9yKHZhciBWPVtdLFM9W10sXz1bXSxiPTAsTT0wO008Qy5sZW5ndGg7TSsrKWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBDW01dKXt2YXIgeD1DW01dKHZbYl0sSFtiKytdKTtWLnB1c2goeFswXSksUy5wdXNoKHhbMV0pLF8ucHVzaCh4WzJdKX1lbHNlIWZ1bmN0aW9uKEUpe1YucHVzaCghMSks''@;'; put 'put ''Uy5wdXNoKCExKSxfLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gQ1tFXX0pfShNKTtyZXR1cm5bVixTLGZ1bmN0aW9uKEUpe2Zvcih2YXIgdz0iIixOPTA7TjxFLmxlbmd0aDtOKyspdys9X1tOXShFW05dKTtyZXR1cm4gd31dfX0oRjEpLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGwoaCl7dmFyIGc9''@;'; put 'put ''e2luc2V0OiExLGxlbmd0aHM6W10sY29sb3I6bnVsbH0sdT1lLmNvbnN1bWVSZXBlYXRlZChmdW5jdGlvbiBmKHApe3ZhciB2PWUuY29uc3VtZVRva2VuKC9eaW5zZXQvaSxwKTtyZXR1cm4gdj8oZy5pbnNldD0hMCx2KToodj1lLmNvbnN1bWVMZW5ndGhPclBlcmNlbnQocCkpPyhnLmxlbmd0''@;'; put 'put ''aHMucHVzaCh2WzBdKSx2KToodj1lLmNvbnN1bWVDb2xvcihwKSk/KGcuY29sb3I9dlswXSx2KTp2b2lkIDB9LC9eLyxoKTtpZih1JiZ1WzBdLmxlbmd0aClyZXR1cm5bZyx1WzFdXX12YXIgbz1mdW5jdGlvbiBjKGgsZixnLHUpe2Z1bmN0aW9uIHAoXyl7cmV0dXJue2luc2V0Ol8sY29sb3I6''@;'; put 'put ''WzAsMCwwLDBdLGxlbmd0aHM6W3tweDowfSx7cHg6MH0se3B4OjB9LHtweDowfV19fWZvcih2YXIgdj1bXSxIPVtdLEM9MDtDPGcubGVuZ3RofHxDPHUubGVuZ3RoO0MrKyl7dmFyIFY9Z1tDXXx8cCh1W0NdLmluc2V0KSxTPXVbQ118fHAoZ1tDXS5pbnNldCk7di5wdXNoKFYpLEgucHVzaChT''@;'; put 'put ''KX1yZXR1cm4gZS5tZXJnZU5lc3RlZFJlcGVhdGVkKGgsZix2LEgpfS5iaW5kKG51bGwsZnVuY3Rpb24gYShoLGYpe2Zvcig7aC5sZW5ndGhzLmxlbmd0aDxNYXRoLm1heChoLmxlbmd0aHMubGVuZ3RoLGYubGVuZ3Rocy5sZW5ndGgpOyloLmxlbmd0aHMucHVzaCh7cHg6MH0pO2Zvcig7Zi5s''@;'; put 'put ''ZW5ndGhzLmxlbmd0aDxNYXRoLm1heChoLmxlbmd0aHMubGVuZ3RoLGYubGVuZ3Rocy5sZW5ndGgpOylmLmxlbmd0aHMucHVzaCh7cHg6MH0pO2lmKGguaW5zZXQ9PWYuaW5zZXQmJiEhaC5jb2xvcj09ISFmLmNvbG9yKXtmb3IodmFyIGcsdT1bXSxwPVtbXSwwXSx2PVtbXSwwXSxIPTA7SDxo''@;'; put 'put ''Lmxlbmd0aHMubGVuZ3RoO0grKyl7dmFyIEM9ZS5tZXJnZURpbWVuc2lvbnMoaC5sZW5ndGhzW0hdLGYubGVuZ3Roc1tIXSwyPT1IKTtwWzBdLnB1c2goQ1swXSksdlswXS5wdXNoKENbMV0pLHUucHVzaChDWzJdKX1pZihoLmNvbG9yJiZmLmNvbG9yKXt2YXIgVj1lLm1lcmdlQ29sb3JzKGgu''@;'; put 'put ''Y29sb3IsZi5jb2xvcik7cFsxXT1WWzBdLHZbMV09VlsxXSxnPVZbMl19cmV0dXJuW3AsdixmdW5jdGlvbihTKXtmb3IodmFyIF89aC5pbnNldD8iaW5zZXQgIjoiICIsYj0wO2I8dS5sZW5ndGg7YisrKV8rPXVbYl0oU1swXVtiXSkrIiAiO3JldHVybiBnJiYoXys9ZyhTWzFdKSksX31dfX0s''@;'; put 'put ''IiwgIik7ZS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihmdW5jdGlvbiByKGgpe3ZhciBmPWUuY29uc3VtZVJlcGVhdGVkKGwsL14sLyxoKTtpZihmJiYiIj09ZlsxXSlyZXR1cm4gZlswXX0sbyxbImJveC1zaGFkb3ciLCJ0ZXh0LXNoYWRvdyJdKX0oRjEpLGZ1bmN0aW9uKGUsbCl7ZnVuY3Rpb24g''@;'; put 'put ''cihIKXtyZXR1cm4gSC50b0ZpeGVkKDMpLnJlcGxhY2UoLzArJC8sIiIpLnJlcGxhY2UoL1wuJC8sIiIpfWZ1bmN0aW9uIGEoSCxDLFYpe3JldHVybiBNYXRoLm1pbihDLE1hdGgubWF4KEgsVikpfWZ1bmN0aW9uIGMoSCl7aWYoL15ccypbLStdPyhcZCpcLik/XGQrXHMqJC8udGVzdChIKSly''@;'; put 'put ''ZXR1cm4gTnVtYmVyKEgpfWZ1bmN0aW9uIGcoSCxDKXtyZXR1cm4gZnVuY3Rpb24oVixTKXtyZXR1cm5bVixTLGZ1bmN0aW9uKF8pe3JldHVybiByKGEoSCxDLF8pKX1dfX1mdW5jdGlvbiB1KEgpe3ZhciBDPUgudHJpbSgpLnNwbGl0KC9ccypbXHMsXVxzKi8pO2lmKDAhPT1DLmxlbmd0aCl7''@;'; put 'put ''Zm9yKHZhciBWPVtdLFM9MDtTPEMubGVuZ3RoO1MrKyl7dmFyIF89YyhDW1NdKTtpZih2b2lkIDA9PT1fKXJldHVybjtWLnB1c2goXyl9cmV0dXJuIFZ9fWUuY2xhbXA9YSxlLmFkZFByb3BlcnRpZXNIYW5kbGVyKHUsZnVuY3Rpb24gcChILEMpe2lmKEgubGVuZ3RoPT1DLmxlbmd0aClyZXR1''@;'; put 'put ''cm5bSCxDLGZ1bmN0aW9uKFYpe3JldHVybiBWLm1hcChyKS5qb2luKCIgIil9XX0sWyJzdHJva2UtZGFzaGFycmF5Il0pLGUuYWRkUHJvcGVydGllc0hhbmRsZXIoYyxnKDAsMS8wKSxbImJvcmRlci1pbWFnZS13aWR0aCIsImxpbmUtaGVpZ2h0Il0pLGUuYWRkUHJvcGVydGllc0hhbmRsZXIo''@;'; put 'put ''YyxnKDAsMSksWyJvcGFjaXR5Iiwic2hhcGUtaW1hZ2UtdGhyZXNob2xkIl0pLGUuYWRkUHJvcGVydGllc0hhbmRsZXIoYyxmdW5jdGlvbiBoKEgsQyl7aWYoMCE9SClyZXR1cm4gZygwLDEvMCkoSCxDKX0sWyJmbGV4LWdyb3ciLCJmbGV4LXNocmluayJdKSxlLmFkZFByb3BlcnRpZXNIYW5k''@;'; put 'put ''bGVyKGMsZnVuY3Rpb24gZihILEMpe3JldHVybltILEMsZnVuY3Rpb24oVil7cmV0dXJuIE1hdGgucm91bmQoYSgxLDEvMCxWKSl9XX0sWyJvcnBoYW5zIiwid2lkb3dzIl0pLGUuYWRkUHJvcGVydGllc0hhbmRsZXIoYyxmdW5jdGlvbiB2KEgsQyl7cmV0dXJuW0gsQyxNYXRoLnJvdW5kXX0s''@;'; put 'put ''WyJ6LWluZGV4Il0pLGUucGFyc2VOdW1iZXI9YyxlLnBhcnNlTnVtYmVyTGlzdD11LGUubWVyZ2VOdW1iZXJzPWZ1bmN0aW9uIG8oSCxDKXtyZXR1cm5bSCxDLHJdfSxlLm51bWJlclRvU3RyaW5nPXJ9KEYxKSxmdW5jdGlvbihlLGwpe2UuYWRkUHJvcGVydGllc0hhbmRsZXIoU3RyaW5nLGZ1''@;'; put 'put ''bmN0aW9uIHIoYSxjKXtpZigidmlzaWJsZSI9PWF8fCJ2aXNpYmxlIj09YylyZXR1cm5bMCwxLGZ1bmN0aW9uKG8pe3JldHVybiBvPD0wP2E6bz49MT9jOiJ2aXNpYmxlIn1dfSxbInZpc2liaWxpdHkiXSl9KEYxKSxmdW5jdGlvbihlLGwpe2Z1bmN0aW9uIHIoaCl7aD1oLnRyaW0oKSxvLmZp''@;'; put 'put ''bGxTdHlsZT0iIzAwMCIsby5maWxsU3R5bGU9aDt2YXIgZj1vLmZpbGxTdHlsZTtpZihvLmZpbGxTdHlsZT0iI2ZmZiIsby5maWxsU3R5bGU9aCxmPT1vLmZpbGxTdHlsZSl7by5maWxsUmVjdCgwLDAsMSwxKTt2YXIgZz1vLmdldEltYWdlRGF0YSgwLDAsMSwxKS5kYXRhO28uY2xlYXJSZWN0''@;'; put 'put ''KDAsMCwxLDEpO3ZhciB1PWdbM10vMjU1O3JldHVybltnWzBdKnUsZ1sxXSp1LGdbMl0qdSx1XX19ZnVuY3Rpb24gYShoLGYpe3JldHVybltoLGYsZnVuY3Rpb24oZyl7aWYoZ1szXSlmb3IodmFyIHA9MDtwPDM7cCsrKWdbcF09TWF0aC5yb3VuZChNYXRoLm1heCgwLE1hdGgubWluKDI1NSxn''@;'; put 'put ''W3BdL2dbM10pKSk7cmV0dXJuIGdbM109ZS5udW1iZXJUb1N0cmluZyhlLmNsYW1wKDAsMSxnWzNdKSksInJnYmEoIitnLmpvaW4oIiwiKSsiKSJ9XX12YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJjYW52YXMiKTtjLndpZHRo''@;'; put 'put ''PWMuaGVpZ2h0PTE7dmFyIG89Yy5nZXRDb250ZXh0KCIyZCIpO2UuYWRkUHJvcGVydGllc0hhbmRsZXIocixhLFsiYmFja2dyb3VuZC1jb2xvciIsImJvcmRlci1ib3R0b20tY29sb3IiLCJib3JkZXItbGVmdC1jb2xvciIsImJvcmRlci1yaWdodC1jb2xvciIsImJvcmRlci10b3AtY29sb3Ii''@;'; put 'put ''LCJjb2xvciIsImZpbGwiLCJmbG9vZC1jb2xvciIsImxpZ2h0aW5nLWNvbG9yIiwib3V0bGluZS1jb2xvciIsInN0b3AtY29sb3IiLCJzdHJva2UiLCJ0ZXh0LWRlY29yYXRpb24tY29sb3IiXSksZS5jb25zdW1lQ29sb3I9ZS5jb25zdW1lUGFyZW50aGVzaXNlZC5iaW5kKG51bGwsciksZS5t''@;'; put 'put ''ZXJnZUNvbG9ycz1hfShGMSksZnVuY3Rpb24oZSxsKXtmdW5jdGlvbiByKF8pe2Z1bmN0aW9uIGIoKXt2YXIgVz1JLmV4ZWMoXyk7Tj1XP1dbMF06dm9pZCAwfWZ1bmN0aW9uIHgoKXtpZigiKCIhPT1OKXJldHVybiBmdW5jdGlvbiBNKCl7dmFyIFc9TnVtYmVyKE4pO3JldHVybiBiKCksV30o''@;'; put 'put ''KTtiKCk7dmFyIFc9dygpO3JldHVybiIpIiE9PU4/TmFOOihiKCksVyl9ZnVuY3Rpb24gRSgpe2Zvcih2YXIgVz14KCk7IioiPT09Tnx8Ii8iPT09Tjspe3ZhciBPPU47YigpO3ZhciBCPXgoKTsiKiI9PT1PP1cqPUI6Vy89Qn1yZXR1cm4gV31mdW5jdGlvbiB3KCl7Zm9yKHZhciBXPUUoKTsi''@;'; put 'put ''KyI9PT1OfHwiLSI9PT1OOyl7dmFyIE89TjtiKCk7dmFyIEI9RSgpOyIrIj09PU8/Vys9QjpXLT1CfXJldHVybiBXfXZhciBOLEk9LyhbXCtcLVx3XC5dK3xbXChcKVwqXC9dKS9nO3JldHVybiBiKCksdygpfWZ1bmN0aW9uIGEoXyxiKXtpZigiMCI9PShiPWIudHJpbSgpLnRvTG93ZXJDYXNl''@;'; put 'put ''KCkpJiYicHgiLnNlYXJjaChfKT49MClyZXR1cm57cHg6MH07aWYoL15bXihdKiR8XmNhbGMvLnRlc3QoYikpe2I9Yi5yZXBsYWNlKC9jYWxjXCgvZywiKCIpO3ZhciBNPXt9O2I9Yi5yZXBsYWNlKF8sZnVuY3Rpb24oTyl7cmV0dXJuIE1bT109bnVsbCwiVSIrT30pO2Zvcih2YXIgeD0iVSgi''@;'; put 'put ''K18uc291cmNlKyIpIixFPWIucmVwbGFjZSgvWy0rXT8oXGQqXC4pP1xkKyhbRWVdWy0rXT9cZCspPy9nLCJOIikucmVwbGFjZShuZXcgUmVnRXhwKCJOIit4LCJnIiksIkQiKS5yZXBsYWNlKC9cc1srLV1ccy9nLCJPIikucmVwbGFjZSgvXHMvZywiIiksdz1bL05cKihEKS9nLC8oTnxEKVsq''@;'; put 'put ''XC9dTi9nLC8oTnxEKU9cMS9nLC9cKChOfEQpXCkvZ10sTj0wO048dy5sZW5ndGg7KXdbTl0udGVzdChFKT8oRT1FLnJlcGxhY2Uod1tOXSwiJDEiKSxOPTApOk4rKztpZigiRCI9PUUpe2Zvcih2YXIgSSBpbiBNKXt2YXIgVz1yKGIucmVwbGFjZShuZXcgUmVnRXhwKCJVIitJLCJnIiksIiIp''@;'; put 'put ''LnJlcGxhY2UobmV3IFJlZ0V4cCh4LCJnIiksIiowIikpO2lmKCFpc0Zpbml0ZShXKSlyZXR1cm47TVtJXT1XfXJldHVybiBNfX19ZnVuY3Rpb24gYyhfLGIpe3JldHVybiBvKF8sYiwhMCl9ZnVuY3Rpb24gbyhfLGIsTSl7dmFyIHgsRT1bXTtmb3IoeCBpbiBfKUUucHVzaCh4KTtmb3IoeCBp''@;'; put 'put ''biBiKUUuaW5kZXhPZih4KTwwJiZFLnB1c2goeCk7cmV0dXJuIF89RS5tYXAoZnVuY3Rpb24odyl7cmV0dXJuIF9bd118fDB9KSxiPUUubWFwKGZ1bmN0aW9uKHcpe3JldHVybiBiW3ddfHwwfSksW18sYixmdW5jdGlvbih3KXt2YXIgTj13Lm1hcChmdW5jdGlvbihJLFcpe3JldHVybiAxPT13''@;'; put 'put ''Lmxlbmd0aCYmTSYmKEk9TWF0aC5tYXgoSSwwKSksZS5udW1iZXJUb1N0cmluZyhJKStFW1ddfSkuam9pbigiICsgIik7cmV0dXJuIHcubGVuZ3RoPjE/ImNhbGMoIitOKyIpIjpOfV19dmFyIGg9InB4fGVtfGV4fGNofHJlbXx2d3x2aHx2bWlufHZtYXh8Y218bW18aW58cHR8cGMiLGY9YS5i''@;'; put 'put ''aW5kKG51bGwsbmV3IFJlZ0V4cChoLCJnIikpLGc9YS5iaW5kKG51bGwsbmV3IFJlZ0V4cChoKyJ8JSIsImciKSksdT1hLmJpbmQobnVsbCwvZGVnfHJhZHxncmFkfHR1cm4vZyk7ZS5wYXJzZUxlbmd0aD1mLGUucGFyc2VMZW5ndGhPclBlcmNlbnQ9ZyxlLmNvbnN1bWVMZW5ndGhPclBlcmNl''@;'; put 'put ''bnQ9ZS5jb25zdW1lUGFyZW50aGVzaXNlZC5iaW5kKG51bGwsZyksZS5wYXJzZUFuZ2xlPXUsZS5tZXJnZURpbWVuc2lvbnM9bzt2YXIgcD1lLmNvbnN1bWVQYXJlbnRoZXNpc2VkLmJpbmQobnVsbCxmKSx2PWUuY29uc3VtZVJlcGVhdGVkLmJpbmQodm9pZCAwLHAsL14vKSxIPWUuY29uc3Vt''@;'; put 'put ''ZVJlcGVhdGVkLmJpbmQodm9pZCAwLHYsL14sLyk7ZS5jb25zdW1lU2l6ZVBhaXJMaXN0PUg7dmFyIFY9ZS5tZXJnZU5lc3RlZFJlcGVhdGVkLmJpbmQodm9pZCAwLGMsIiAiKSxTPWUubWVyZ2VOZXN0ZWRSZXBlYXRlZC5iaW5kKHZvaWQgMCxWLCIsIik7ZS5tZXJnZU5vbk5lZ2F0aXZlU2l6''@;'; put 'put ''ZVBhaXI9VixlLmFkZFByb3BlcnRpZXNIYW5kbGVyKGZ1bmN0aW9uKF8pe3ZhciBiPUgoXyk7aWYoYiYmIiI9PWJbMV0pcmV0dXJuIGJbMF19LFMsWyJiYWNrZ3JvdW5kLXNpemUiXSksZS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihnLGMsWyJib3JkZXItYm90dG9tLXdpZHRoIiwiYm9yZGVyLWlt''@;'; put 'put ''YWdlLXdpZHRoIiwiYm9yZGVyLWxlZnQtd2lkdGgiLCJib3JkZXItcmlnaHQtd2lkdGgiLCJib3JkZXItdG9wLXdpZHRoIiwiZmxleC1iYXNpcyIsImZvbnQtc2l6ZSIsImhlaWdodCIsImxpbmUtaGVpZ2h0IiwibWF4LWhlaWdodCIsIm1heC13aWR0aCIsIm91dGxpbmUtd2lkdGgiLCJ3aWR0''@;'; put 'put ''aCJdKSxlLmFkZFByb3BlcnRpZXNIYW5kbGVyKGcsbyxbImJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMiLCJib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyIsImJvcmRlci10b3AtbGVmdC1yYWRpdXMiLCJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyIsImJvdHRvbSIsImxlZnQiLCJsZXR0ZXIt''@;'; put 'put ''c3BhY2luZyIsIm1hcmdpbi1ib3R0b20iLCJtYXJnaW4tbGVmdCIsIm1hcmdpbi1yaWdodCIsIm1hcmdpbi10b3AiLCJtaW4taGVpZ2h0IiwibWluLXdpZHRoIiwib3V0bGluZS1vZmZzZXQiLCJwYWRkaW5nLWJvdHRvbSIsInBhZGRpbmctbGVmdCIsInBhZGRpbmctcmlnaHQiLCJwYWRkaW5n''@;'; put 'put ''LXRvcCIsInBlcnNwZWN0aXZlIiwicmlnaHQiLCJzaGFwZS1tYXJnaW4iLCJzdHJva2UtZGFzaG9mZnNldCIsInRleHQtaW5kZW50IiwidG9wIiwidmVydGljYWwtYWxpZ24iLCJ3b3JkLXNwYWNpbmciXSl9KEYxKSxmdW5jdGlvbihlLGwpe2Z1bmN0aW9uIHIoZil7cmV0dXJuIGUuY29uc3Vt''@;'; put 'put ''ZUxlbmd0aE9yUGVyY2VudChmKXx8ZS5jb25zdW1lVG9rZW4oL15hdXRvLyxmKX1mdW5jdGlvbiBhKGYpe3ZhciBnPWUuY29uc3VtZUxpc3QoW2UuaWdub3JlKGUuY29uc3VtZVRva2VuLmJpbmQobnVsbCwvXnJlY3QvKSksZS5pZ25vcmUoZS5jb25zdW1lVG9rZW4uYmluZChudWxsLC9eXCgv''@;'; put 'put ''KSksZS5jb25zdW1lUmVwZWF0ZWQuYmluZChudWxsLHIsL14sLyksZS5pZ25vcmUoZS5jb25zdW1lVG9rZW4uYmluZChudWxsLC9eXCkvKSldLGYpO2lmKGcmJjQ9PWdbMF0ubGVuZ3RoKXJldHVybiBnWzBdfXZhciBoPWUubWVyZ2VXcmFwcGVkTmVzdGVkUmVwZWF0ZWQuYmluZChudWxsLGZ1''@;'; put 'put ''bmN0aW9uIG8oZil7cmV0dXJuInJlY3QoIitmKyIpIn0sZnVuY3Rpb24gYyhmLGcpe3JldHVybiJhdXRvIj09Znx8ImF1dG8iPT1nP1shMCwhMSxmdW5jdGlvbih1KXt2YXIgcD11P2Y6ZztpZigiYXV0byI9PXApcmV0dXJuImF1dG8iO3ZhciB2PWUubWVyZ2VEaW1lbnNpb25zKHAscCk7cmV0''@;'; put 'put ''dXJuIHZbMl0odlswXSl9XTplLm1lcmdlRGltZW5zaW9ucyhmLGcpfSwiLCAiKTtlLnBhcnNlQm94PWEsZS5tZXJnZUJveGVzPWgsZS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihhLGgsWyJjbGlwIl0pfShGMSksZnVuY3Rpb24oZSxsKXtmdW5jdGlvbiByKFYpe3JldHVybiBmdW5jdGlvbihTKXt2''@;'; put 'put ''YXIgXz0wO3JldHVybiBWLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYj09PXA/U1tfKytdOmJ9KX19ZnVuY3Rpb24gYShWKXtyZXR1cm4gVn1mdW5jdGlvbiBjKFYpe2lmKCJub25lIj09KFY9Vi50b0xvd2VyQ2FzZSgpLnRyaW0oKSkpcmV0dXJuW107Zm9yKHZhciBTLF89L1xzKihcdyspXCgo''@;'; put 'put ''W14pXSopXCkvZyxiPVtdLE09MDtTPV8uZXhlYyhWKTspe2lmKFMuaW5kZXghPU0pcmV0dXJuO009Uy5pbmRleCtTWzBdLmxlbmd0aDt2YXIgeD1TWzFdLEU9Q1t4XTtpZighRSlyZXR1cm47dmFyIHc9U1syXS5zcGxpdCgiLCIpLE49RVswXTtpZihOLmxlbmd0aDx3Lmxlbmd0aClyZXR1cm47''@;'; put 'put ''Zm9yKHZhciBJPVtdLFc9MDtXPE4ubGVuZ3RoO1crKyl7dmFyIE8sQj13W1ddLFI9TltXXTtpZih2b2lkIDA9PT0oTz1CP3tBOmZ1bmN0aW9uKGwxKXtyZXR1cm4iMCI9PWwxLnRyaW0oKT9IOmUucGFyc2VBbmdsZShsMSl9LE46ZS5wYXJzZU51bWJlcixUOmUucGFyc2VMZW5ndGhPclBlcmNl''@;'; put 'put ''bnQsTDplLnBhcnNlTGVuZ3RofVtSLnRvVXBwZXJDYXNlKCldKEIpOnthOkgsbjpJWzBdLHQ6dn1bUl0pKXJldHVybjtJLnB1c2goTyl9aWYoYi5wdXNoKHt0OngsZDpJfSksXy5sYXN0SW5kZXg9PVYubGVuZ3RoKXJldHVybiBifX1mdW5jdGlvbiBvKFYpe3JldHVybiBWLnRvRml4ZWQoNiku''@;'; put 'put ''cmVwbGFjZSgiLjAwMDAwMCIsIiIpfWZ1bmN0aW9uIGgoVixTKXtpZihWLmRlY29tcG9zaXRpb25QYWlyIT09Uyl7Vi5kZWNvbXBvc2l0aW9uUGFpcj1TO3ZhciBfPWUubWFrZU1hdHJpeERlY29tcG9zaXRpb24oVil9aWYoUy5kZWNvbXBvc2l0aW9uUGFpciE9PVYpe1MuZGVjb21wb3NpdGlv''@;'; put 'put ''blBhaXI9Vjt2YXIgYj1lLm1ha2VNYXRyaXhEZWNvbXBvc2l0aW9uKFMpfXJldHVybiBudWxsPT1fWzBdfHxudWxsPT1iWzBdP1tbITFdLFshMF0sZnVuY3Rpb24oTSl7cmV0dXJuIE0/U1swXS5kOlZbMF0uZH1dOihfWzBdLnB1c2goMCksYlswXS5wdXNoKDEpLFtfLGIsZnVuY3Rpb24oTSl7''@;'; put 'put ''dmFyIHg9ZS5xdWF0KF9bMF1bM10sYlswXVszXSxNWzVdKTtyZXR1cm4gZS5jb21wb3NlTWF0cml4KE1bMF0sTVsxXSxNWzJdLHgsTVs0XSkubWFwKG8pLmpvaW4oIiwiKX1dKX1mdW5jdGlvbiBmKFYpe3JldHVybiBWLnJlcGxhY2UoL1t4eV0vLCIiKX1mdW5jdGlvbiBnKFYpe3JldHVybiBW''@;'; put 'put ''LnJlcGxhY2UoLyh4fHl8enwzZCk/JC8sIjNkIil9dmFyIHA9bnVsbCx2PXtweDowfSxIPXtkZWc6MH0sQz17bWF0cml4OlsiTk5OTk5OIixbcCxwLDAsMCxwLHAsMCwwLDAsMCwxLDAscCxwLDAsMV0sYV0sbWF0cml4M2Q6WyJOTk5OTk5OTk5OTk5OTk5OIixhXSxyb3RhdGU6WyJBIl0scm90''@;'; put 'put ''YXRleDpbIkEiXSxyb3RhdGV5OlsiQSJdLHJvdGF0ZXo6WyJBIl0scm90YXRlM2Q6WyJOTk5BIl0scGVyc3BlY3RpdmU6WyJMIl0sc2NhbGU6WyJObiIscihbcCxwLDFdKSxhXSxzY2FsZXg6WyJOIixyKFtwLDEsMV0pLHIoW3AsMV0pXSxzY2FsZXk6WyJOIixyKFsxLHAsMV0pLHIoWzEscF0p''@;'; put 'put ''XSxzY2FsZXo6WyJOIixyKFsxLDEscF0pXSxzY2FsZTNkOlsiTk5OIixhXSxza2V3OlsiQWEiLG51bGwsYV0sc2tld3g6WyJBIixudWxsLHIoW3AsSF0pXSxza2V3eTpbIkEiLG51bGwscihbSCxwXSldLHRyYW5zbGF0ZTpbIlR0IixyKFtwLHAsdl0pLGFdLHRyYW5zbGF0ZXg6WyJUIixyKFtw''@;'; put 'put ''LHYsdl0pLHIoW3Asdl0pXSx0cmFuc2xhdGV5OlsiVCIscihbdixwLHZdKSxyKFt2LHBdKV0sdHJhbnNsYXRlejpbIkwiLHIoW3YsdixwXSldLHRyYW5zbGF0ZTNkOlsiVFRMIixhXX07ZS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihjLGZ1bmN0aW9uIHUoVixTKXt2YXIgXz1lLm1ha2VNYXRyaXhE''@;'; put 'put ''ZWNvbXBvc2l0aW9uJiYhMCxiPSExO2lmKCFWLmxlbmd0aHx8IVMubGVuZ3RoKXtWLmxlbmd0aHx8KGI9ITAsVj1TLFM9W10pO2Zvcih2YXIgTT0wO008Vi5sZW5ndGg7TSsrKXt2YXIgRT1WW01dLmQsdz0ic2NhbGUiPT0oeD1WW01dLnQpLnN1YnN0cigwLDUpPzE6MDtTLnB1c2goe3Q6eCxk''@;'; put 'put ''OkUubWFwKGZ1bmN0aW9uKFEpe2lmKCJudW1iZXIiPT10eXBlb2YgUSlyZXR1cm4gdzt2YXIgczE9e307Zm9yKHZhciBtMSBpbiBRKXMxW20xXT13O3JldHVybiBzMX0pfSl9fXZhciBRLHMxLEk9W10sVz1bXSxPPVtdO2lmKFYubGVuZ3RoIT1TLmxlbmd0aCl7aWYoIV8pcmV0dXJuO0k9WyhC''@;'; put 'put ''PWgoVixTKSlbMF1dLFc9W0JbMV1dLE89W1sibWF0cml4IixbQlsyXV1dXX1lbHNlIGZvcihNPTA7TTxWLmxlbmd0aDtNKyspe3ZhciB4LFI9VltNXS50LGwxPVNbTV0udCxhMT1WW01dLmQsaDE9U1tNXS5kLHUxPUNbUl0scDE9Q1tsMV07aWYoczE9bDEsInBlcnNwZWN0aXZlIj09KFE9Uikm''@;'; put 'put ''JiJwZXJzcGVjdGl2ZSI9PXMxfHwoIm1hdHJpeCI9PVF8fCJtYXRyaXgzZCI9PVEpJiYoIm1hdHJpeCI9PXMxfHwibWF0cml4M2QiPT1zMSkpe2lmKCFfKXJldHVybjt2YXIgQj1oKFtWW01dXSxbU1tNXV0pO0kucHVzaChCWzBdKSxXLnB1c2goQlsxXSksTy5wdXNoKFsibWF0cml4IixbQlsy''@;'; put 'put ''XV1dKX1lbHNle2lmKFI9PWwxKXg9UjtlbHNlIGlmKHUxWzJdJiZwMVsyXSYmZihSKT09ZihsMSkpeD1mKFIpLGExPXUxWzJdKGExKSxoMT1wMVsyXShoMSk7ZWxzZXtpZighdTFbMV18fCFwMVsxXXx8ZyhSKSE9ZyhsMSkpe2lmKCFfKXJldHVybjtJPVsoQj1oKFYsUykpWzBdXSxXPVtCWzFd''@;'; put 'put ''XSxPPVtbIm1hdHJpeCIsW0JbMl1dXV07YnJlYWt9eD1nKFIpLGExPXUxWzFdKGExKSxoMT1wMVsxXShoMSl9Zm9yKHZhciB2MT1bXSxFMT1bXSxqPVtdLGMxPTA7YzE8YTEubGVuZ3RoO2MxKyspQj0oIm51bWJlciI9PXR5cGVvZiBhMVtjMV0/ZS5tZXJnZU51bWJlcnM6ZS5tZXJnZURpbWVu''@;'; put 'put ''c2lvbnMpKGExW2MxXSxoMVtjMV0pLHYxW2MxXT1CWzBdLEUxW2MxXT1CWzFdLGoucHVzaChCWzJdKTtJLnB1c2godjEpLFcucHVzaChFMSksTy5wdXNoKFt4LGpdKX19aWYoYil7dmFyIF8xPUk7ST1XLFc9XzF9cmV0dXJuW0ksVyxmdW5jdGlvbihRKXtyZXR1cm4gUS5tYXAoZnVuY3Rpb24o''@;'; put 'put ''czEsbTEpe3ZhciBiMT1zMS5tYXAoZnVuY3Rpb24oQjEsJCl7cmV0dXJuIE9bbTFdWzFdWyRdKEIxKX0pLmpvaW4oIiwiKTtyZXR1cm4ibWF0cml4Ij09T1ttMV1bMF0mJjE2PT1iMS5zcGxpdCgiLCIpLmxlbmd0aCYmKE9bbTFdWzBdPSJtYXRyaXgzZCIpLE9bbTFdWzBdKyIoIitiMSsiKSJ9''@;'; put 'put ''KS5qb2luKCIgIil9XX0sWyJ0cmFuc2Zvcm0iXSksZS50cmFuc2Zvcm1Ub1N2Z01hdHJpeD1mdW5jdGlvbihWKXt2YXIgUz1lLnRyYW5zZm9ybUxpc3RUb01hdHJpeChjKFYpKTtyZXR1cm4ibWF0cml4KCIrbyhTWzBdKSsiICIrbyhTWzFdKSsiICIrbyhTWzRdKSsiICIrbyhTWzVdKSsiICIr''@;'; put 'put ''byhTWzEyXSkrIiAiK28oU1sxM10pKyIpIn19KEYxKSxmdW5jdGlvbihlKXtmdW5jdGlvbiByKGMpe3JldHVybiBjPTEwMCpNYXRoLnJvdW5kKGMvMTAwKSw0MDA9PT0oYz1lLmNsYW1wKDEwMCw5MDAsYykpPyJub3JtYWwiOjcwMD09PWM/ImJvbGQiOlN0cmluZyhjKX1lLmFkZFByb3BlcnRp''@;'; put 'put ''ZXNIYW5kbGVyKGZ1bmN0aW9uIGwoYyl7dmFyIG89TnVtYmVyKGMpO2lmKCEoaXNOYU4obyl8fG88MTAwfHxvPjkwMHx8byUxMDAhPTApKXJldHVybiBvfSxmdW5jdGlvbiBhKGMsbyl7cmV0dXJuW2MsbyxyXX0sWyJmb250LXdlaWdodCJdKX0oRjEpLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGwo''@;'; put 'put ''dSl7dmFyIHA9e307Zm9yKHZhciB2IGluIHUpcFt2XT0tdVt2XTtyZXR1cm4gcH1mdW5jdGlvbiByKHUpe3JldHVybiBlLmNvbnN1bWVUb2tlbigvXihsZWZ0fGNlbnRlcnxyaWdodHx0b3B8Ym90dG9tKVxiL2ksdSl8fGUuY29uc3VtZUxlbmd0aE9yUGVyY2VudCh1KX1mdW5jdGlvbiBhKHUs''@;'; put 'put ''cCl7dmFyIHY9ZS5jb25zdW1lUmVwZWF0ZWQociwvXi8scCk7aWYodiYmIiI9PXZbMV0pe3ZhciBIPXZbMF07aWYoSFswXT1IWzBdfHwiY2VudGVyIixIWzFdPUhbMV18fCJjZW50ZXIiLDM9PXUmJihIWzJdPUhbMl18fHtweDowfSksSC5sZW5ndGg9PXUpe2lmKC90b3B8Ym90dG9tLy50ZXN0''@;'; put 'put ''KEhbMF0pfHwvbGVmdHxyaWdodC8udGVzdChIWzFdKSl7dmFyIEM9SFswXTtIWzBdPUhbMV0sSFsxXT1DfWlmKC9sZWZ0fHJpZ2h0fGNlbnRlcnxPYmplY3QvLnRlc3QoSFswXSkmJi90b3B8Ym90dG9tfGNlbnRlcnxPYmplY3QvLnRlc3QoSFsxXSkpcmV0dXJuIEgubWFwKGZ1bmN0aW9uKFYp''@;'; put 'put ''e3JldHVybiJvYmplY3QiPT10eXBlb2YgVj9WOmhbVl19KX19fWZ1bmN0aW9uIGModSl7dmFyIHA9ZS5jb25zdW1lUmVwZWF0ZWQociwvXi8sdSk7aWYocCl7Zm9yKHZhciB2PXBbMF0sSD1beyIlIjo1MH0seyIlIjo1MH1dLEM9MCxWPSExLFM9MDtTPHYubGVuZ3RoO1MrKyl7dmFyIF89dltT''@;'; put 'put ''XTsic3RyaW5nIj09dHlwZW9mIF8/KFY9L2JvdHRvbXxyaWdodC8udGVzdChfKSxIW0M9e2xlZnQ6MCxyaWdodDowLGNlbnRlcjpDLHRvcDoxLGJvdHRvbToxfVtfXV09aFtfXSwiY2VudGVyIj09XyYmQysrKTooViYmKChfPWwoXykpWyIlIl09KF9bIiUiXXx8MCkrMTAwKSxIW0NdPV8sQysr''@;'; put 'put ''LFY9ITEpfXJldHVybltILHBbMV1dfX12YXIgaD17bGVmdDp7IiUiOjB9LGNlbnRlcjp7IiUiOjUwfSxyaWdodDp7IiUiOjEwMH0sdG9wOnsiJSI6MH0sYm90dG9tOnsiJSI6MTAwfX0sZj1lLm1lcmdlTmVzdGVkUmVwZWF0ZWQuYmluZChudWxsLGUubWVyZ2VEaW1lbnNpb25zLCIgIik7ZS5h''@;'; put 'put ''ZGRQcm9wZXJ0aWVzSGFuZGxlcihhLmJpbmQobnVsbCwzKSxmLFsidHJhbnNmb3JtLW9yaWdpbiJdKSxlLmFkZFByb3BlcnRpZXNIYW5kbGVyKGEuYmluZChudWxsLDIpLGYsWyJwZXJzcGVjdGl2ZS1vcmlnaW4iXSksZS5jb25zdW1lUG9zaXRpb249YyxlLm1lcmdlT2Zmc2V0TGlzdD1mO3Zh''@;'; put 'put ''ciBnPWUubWVyZ2VOZXN0ZWRSZXBlYXRlZC5iaW5kKG51bGwsZiwiLCAiKTtlLmFkZFByb3BlcnRpZXNIYW5kbGVyKGZ1bmN0aW9uIG8odSl7dmFyIHA9ZS5jb25zdW1lUmVwZWF0ZWQoYywvXiwvLHUpO2lmKHAmJiIiPT1wWzFdKXJldHVybiBwWzBdfSxnLFsiYmFja2dyb3VuZC1wb3NpdGlv''@;'; put 'put ''biIsIm9iamVjdC1wb3NpdGlvbiJdKX0oRjEpLGZ1bmN0aW9uKGUpe3ZhciBhPWUuY29uc3VtZVBhcmVudGhlc2lzZWQuYmluZChudWxsLGUucGFyc2VMZW5ndGhPclBlcmNlbnQpLGM9ZS5jb25zdW1lUmVwZWF0ZWQuYmluZCh2b2lkIDAsYSwvXi8pLG89ZS5tZXJnZU5lc3RlZFJlcGVhdGVk''@;'; put 'put ''LmJpbmQodm9pZCAwLGUubWVyZ2VEaW1lbnNpb25zLCIgIiksaD1lLm1lcmdlTmVzdGVkUmVwZWF0ZWQuYmluZCh2b2lkIDAsbywiLCIpO2UuYWRkUHJvcGVydGllc0hhbmRsZXIoZnVuY3Rpb24gbChmKXt2YXIgZz1lLmNvbnN1bWVUb2tlbigvXmNpcmNsZS8sZik7aWYoZyYmZ1swXSlyZXR1''@;'; put 'put ''cm5bImNpcmNsZSJdLmNvbmNhdChlLmNvbnN1bWVMaXN0KFtlLmlnbm9yZShlLmNvbnN1bWVUb2tlbi5iaW5kKHZvaWQgMCwvXlwoLykpLGEsZS5pZ25vcmUoZS5jb25zdW1lVG9rZW4uYmluZCh2b2lkIDAsL15hdC8pKSxlLmNvbnN1bWVQb3NpdGlvbixlLmlnbm9yZShlLmNvbnN1bWVUb2tl''@;'; put 'put ''bi5iaW5kKHZvaWQgMCwvXlwpLykpXSxnWzFdKSk7dmFyIHU9ZS5jb25zdW1lVG9rZW4oL15lbGxpcHNlLyxmKTtpZih1JiZ1WzBdKXJldHVyblsiZWxsaXBzZSJdLmNvbmNhdChlLmNvbnN1bWVMaXN0KFtlLmlnbm9yZShlLmNvbnN1bWVUb2tlbi5iaW5kKHZvaWQgMCwvXlwoLykpLGMsZS5p''@;'; put 'put ''Z25vcmUoZS5jb25zdW1lVG9rZW4uYmluZCh2b2lkIDAsL15hdC8pKSxlLmNvbnN1bWVQb3NpdGlvbixlLmlnbm9yZShlLmNvbnN1bWVUb2tlbi5iaW5kKHZvaWQgMCwvXlwpLykpXSx1WzFdKSk7dmFyIHA9ZS5jb25zdW1lVG9rZW4oL15wb2x5Z29uLyxmKTtyZXR1cm4gcCYmcFswXT9bInBv''@;'; put 'put ''bHlnb24iXS5jb25jYXQoZS5jb25zdW1lTGlzdChbZS5pZ25vcmUoZS5jb25zdW1lVG9rZW4uYmluZCh2b2lkIDAsL15cKC8pKSxlLm9wdGlvbmFsKGUuY29uc3VtZVRva2VuLmJpbmQodm9pZCAwLC9ebm9uemVyb1xzKix8XmV2ZW5vZGRccyosLyksIm5vbnplcm8sIiksZS5jb25zdW1lU2l6''@;'; put 'put ''ZVBhaXJMaXN0LGUuaWdub3JlKGUuY29uc3VtZVRva2VuLmJpbmQodm9pZCAwLC9eXCkvKSldLHBbMV0pKTp2b2lkIDB9LGZ1bmN0aW9uIHIoZixnKXtpZihmWzBdPT09Z1swXSlyZXR1cm4iY2lyY2xlIj09ZlswXT9lLm1lcmdlTGlzdChmLnNsaWNlKDEpLGcuc2xpY2UoMSksWyJjaXJjbGUo''@;'; put 'put ''IixlLm1lcmdlRGltZW5zaW9ucywiIGF0ICIsZS5tZXJnZU9mZnNldExpc3QsIikiXSk6ImVsbGlwc2UiPT1mWzBdP2UubWVyZ2VMaXN0KGYuc2xpY2UoMSksZy5zbGljZSgxKSxbImVsbGlwc2UoIixlLm1lcmdlTm9uTmVnYXRpdmVTaXplUGFpciwiIGF0ICIsZS5tZXJnZU9mZnNldExpc3Qs''@;'; put 'put ''IikiXSk6InBvbHlnb24iPT1mWzBdJiZmWzFdPT1nWzFdP2UubWVyZ2VMaXN0KGYuc2xpY2UoMiksZy5zbGljZSgyKSxbInBvbHlnb24oIixmWzFdLGgsIikiXSk6dm9pZCAwfSxbInNoYXBlLW91dHNpZGUiXSl9KEYxKSxmdW5jdGlvbihlLGwpe2Z1bmN0aW9uIHIobyxoKXtoLmNvbmNhdChb''@;'; put 'put ''b10pLmZvckVhY2goZnVuY3Rpb24oZil7ZiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUmJihhW29dPWYpLGNbZl09b30pfXZhciBhPXt9LGM9e307cigidHJhbnNmb3JtIixbIndlYmtpdFRyYW5zZm9ybSIsIm1zVHJhbnNmb3JtIl0pLHIoInRyYW5zZm9ybU9yaWdpbiIsWyJ3''@;'; put 'put ''ZWJraXRUcmFuc2Zvcm1PcmlnaW4iXSkscigicGVyc3BlY3RpdmUiLFsid2Via2l0UGVyc3BlY3RpdmUiXSkscigicGVyc3BlY3RpdmVPcmlnaW4iLFsid2Via2l0UGVyc3BlY3RpdmVPcmlnaW4iXSksZS5wcm9wZXJ0eU5hbWU9ZnVuY3Rpb24obyl7cmV0dXJuIGFbb118fG99LGUudW5wcmVm''@;'; put 'put ''aXhlZFByb3BlcnR5TmFtZT1mdW5jdGlvbihvKXtyZXR1cm4gY1tvXXx8b319KEYxKX0oKSxmdW5jdGlvbigpe2lmKHZvaWQgMD09PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLmFuaW1hdGUoW10pLm9uY2FuY2VsKXtpZih3aW5kb3cucGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5v''@;'; put 'put ''dyl2YXIgaz1mdW5jdGlvbigpe3JldHVybiBwZXJmb3JtYW5jZS5ub3coKX07ZWxzZSBrPWZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93KCl9O3ZhciBBPWZ1bmN0aW9uKGwscixhKXt0aGlzLnRhcmdldD1sLHRoaXMuY3VycmVudFRpbWU9cix0aGlzLnRpbWVsaW5lVGltZT1hLHRoaXMudHlw''@;'; put 'put ''ZT0iY2FuY2VsIix0aGlzLmJ1YmJsZXM9ITEsdGhpcy5jYW5jZWxhYmxlPSExLHRoaXMuY3VycmVudFRhcmdldD1sLHRoaXMuZGVmYXVsdFByZXZlbnRlZD0hMSx0aGlzLmV2ZW50UGhhc2U9RXZlbnQuQVRfVEFSR0VULHRoaXMudGltZVN0YW1wPURhdGUubm93KCl9LGU9d2luZG93LkVsZW1l''@;'; put 'put ''bnQucHJvdG90eXBlLmFuaW1hdGU7d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24obCxyKXt2YXIgYT1lLmNhbGwodGhpcyxsLHIpO2EuX2NhbmNlbEhhbmRsZXJzPVtdLGEub25jYW5jZWw9bnVsbDt2YXIgYz1hLmNhbmNlbDthLmNhbmNlbD1mdW5jdGlvbigpe2Mu''@;'; put 'put ''Y2FsbCh0aGlzKTt2YXIgZj1uZXcgQSh0aGlzLG51bGwsaygpKSxnPXRoaXMuX2NhbmNlbEhhbmRsZXJzLmNvbmNhdCh0aGlzLm9uY2FuY2VsP1t0aGlzLm9uY2FuY2VsXTpbXSk7c2V0VGltZW91dChmdW5jdGlvbigpe2cuZm9yRWFjaChmdW5jdGlvbih1KXt1LmNhbGwoZi50YXJnZXQsZil9''@;'; put 'put ''KX0sMCl9O3ZhciBvPWEuYWRkRXZlbnRMaXN0ZW5lcjthLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oZixnKXsiZnVuY3Rpb24iPT10eXBlb2YgZyYmImNhbmNlbCI9PWY/dGhpcy5fY2FuY2VsSGFuZGxlcnMucHVzaChnKTpvLmNhbGwodGhpcyxmLGcpfTt2YXIgaD1hLnJlbW92ZUV2ZW50''@;'; put 'put ''TGlzdGVuZXI7cmV0dXJuIGEucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihmLGcpe2lmKCJjYW5jZWwiPT1mKXt2YXIgdT10aGlzLl9jYW5jZWxIYW5kbGVycy5pbmRleE9mKGcpO3U+PTAmJnRoaXMuX2NhbmNlbEhhbmRsZXJzLnNwbGljZSh1LDEpfWVsc2UgaC5jYWxsKHRoaXMsZixn''@;'; put 'put ''KX0sYX19fSgpLGZ1bmN0aW9uKGspe3ZhciBBPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxlPW51bGwsbD0hMTt0cnl7dmFyIGE9IjAiPT1nZXRDb21wdXRlZFN0eWxlKEEpLmdldFByb3BlcnR5VmFsdWUoIm9wYWNpdHkiKT8iMSI6IjAiOyhlPUEuYW5pbWF0ZSh7b3BhY2l0eTpbYSxhXX0s''@;'; put 'put ''e2R1cmF0aW9uOjF9KSkuY3VycmVudFRpbWU9MCxsPWdldENvbXB1dGVkU3R5bGUoQSkuZ2V0UHJvcGVydHlWYWx1ZSgib3BhY2l0eSIpPT1hfWNhdGNoKG8pe31maW5hbGx5e2UmJmUuY2FuY2VsKCl9aWYoIWwpe3ZhciBjPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlO3dpbmRv''@;'; put 'put ''dy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKG8saCl7cmV0dXJuIHdpbmRvdy5TeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmQXJyYXkucHJvdG90eXBlLmZyb20mJm9bU3ltYm9sLml0ZXJhdG9yXSYmKG89QXJyYXkuZnJvbShvKSksQXJyYXkuaXNBcnJheShvKXx8bnVsbD09''@;'; put 'put ''PW98fChvPWsuY29udmVydFRvQXJyYXlGb3JtKG8pKSxjLmNhbGwodGhpcyxvLGgpfX19KFgpfSgpLGZ1bmN0aW9uKFgsRjEpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU/RjEoZXhwb3J0cyk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYm''@;'; put 'put ''ZGVmaW5lLmFtZD9kZWZpbmUoWyJleHBvcnRzIl0sRjEpOkYxKChYPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOlh8fHNlbGYpLm1hcmtlZD17fSl9KHRoaXMsZnVuY3Rpb24oWCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEYxKCQseil7Zm9yKHZhciB5PTA7eTx6''@;'; put 'put ''Lmxlbmd0aDt5Kyspe3ZhciBEPXpbeV07RC5lbnVtZXJhYmxlPUQuZW51bWVyYWJsZXx8ITEsRC5jb25maWd1cmFibGU9ITAsInZhbHVlImluIEQmJihELndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoJCxELmtleSxEKX19ZnVuY3Rpb24gaygkLHopeyhudWxsPT16fHx6PiQu''@;'; put 'put ''bGVuZ3RoKSYmKHo9JC5sZW5ndGgpO2Zvcih2YXIgeT0wLEQ9bmV3IEFycmF5KHopO3k8ejt5KyspRFt5XT0kW3ldO3JldHVybiBEfWZ1bmN0aW9uIEEoJCx6KXt2YXIgeSxEPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiYkW1N5bWJvbC5pdGVyYXRvcl18fCRbIkBAaXRlcmF0b3IiXTtp''@;'; put 'put ''ZihEKXJldHVybihEPUQuY2FsbCgkKSkubmV4dC5iaW5kKEQpO2lmKEFycmF5LmlzQXJyYXkoJCl8fChEPWZ1bmN0aW9uKFosVCl7aWYoWil7aWYoInN0cmluZyI9PXR5cGVvZiBaKXJldHVybiBrKFosVCk7dmFyIFA9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFopLnNsaWNlKDgs''@;'; put 'put ''LTEpO3JldHVybiJNYXAiPT09KFA9Ik9iamVjdCI9PT1QJiZaLmNvbnN0cnVjdG9yP1ouY29uc3RydWN0b3IubmFtZTpQKXx8IlNldCI9PT1QP0FycmF5LmZyb20oWik6IkFyZ3VtZW50cyI9PT1QfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChQKT9r''@;'; put 'put ''KFosVCk6dm9pZCAwfX0oJCkpfHx6JiYkJiYibnVtYmVyIj09dHlwZW9mICQubGVuZ3RoKXJldHVybiBEJiYoJD1EKSx5PTAsZnVuY3Rpb24oKXtyZXR1cm4geT49JC5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOiRbeSsrXX19O3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQg''@;'; put 'put ''YXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX1mdW5jdGlvbiBlKCl7cmV0dXJue2Jhc2VVcmw6bnVsbCxicmVh''@;'; put 'put ''a3M6ITEsZXh0ZW5zaW9uczpudWxsLGdmbTohMCxoZWFkZXJJZHM6ITAsaGVhZGVyUHJlZml4OiIiLGhpZ2hsaWdodDpudWxsLGxhbmdQcmVmaXg6Imxhbmd1YWdlLSIsbWFuZ2xlOiEwLHBlZGFudGljOiExLHJlbmRlcmVyOm51bGwsc2FuaXRpemU6ITEsc2FuaXRpemVyOm51bGwsc2lsZW50''@;'; put 'put ''OiExLHNtYXJ0TGlzdHM6ITEsc21hcnR5cGFudHM6ITEsdG9rZW5pemVyOm51bGwsd2Fsa1Rva2VuczpudWxsLHhodG1sOiExfX1mdW5jdGlvbiBsKCQpe3JldHVybiBoWyRdfVguZGVmYXVsdHM9e2Jhc2VVcmw6bnVsbCxicmVha3M6ITEsZXh0ZW5zaW9uczpudWxsLGdmbTohMCxoZWFkZXJJ''@;'; put 'put ''ZHM6ITAsaGVhZGVyUHJlZml4OiIiLGhpZ2hsaWdodDpudWxsLGxhbmdQcmVmaXg6Imxhbmd1YWdlLSIsbWFuZ2xlOiEwLHBlZGFudGljOiExLHJlbmRlcmVyOm51bGwsc2FuaXRpemU6ITEsc2FuaXRpemVyOm51bGwsc2lsZW50OiExLHNtYXJ0TGlzdHM6ITEsc21hcnR5cGFudHM6ITEsdG9r''@;'; put 'put ''ZW5pemVyOm51bGwsd2Fsa1Rva2VuczpudWxsLHhodG1sOiExfTt2YXIgcj0vWyY8PiInXS8sYT0vWyY8PiInXS9nLGM9L1s8PiInXXwmKD8hIz9cdys7KS8sbz0vWzw+IiddfCYoPyEjP1x3KzspL2csaD17IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7Iiwi''@;'; put 'put ''JyI6IiYjMzk7In07ZnVuY3Rpb24gZigkLHope2lmKHope2lmKHIudGVzdCgkKSlyZXR1cm4gJC5yZXBsYWNlKGEsbCl9ZWxzZSBpZihjLnRlc3QoJCkpcmV0dXJuICQucmVwbGFjZShvLGwpO3JldHVybiAkfXZhciBnPS8mKCMoPzpcZCspfCg/OiN4WzAtOUEtRmEtZl0rKXwoPzpcdyspKTs/''@;'; put 'put ''L2dpO2Z1bmN0aW9uIHUoJCl7cmV0dXJuICQucmVwbGFjZShnLGZ1bmN0aW9uKHoseSl7cmV0dXJuImNvbG9uIj09PSh5PXkudG9Mb3dlckNhc2UoKSk/IjoiOiIjIj09PXkuY2hhckF0KDApPyJ4Ij09PXkuY2hhckF0KDEpP1N0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoeS5zdWJzdHJp''@;'; put 'put ''bmcoMiksMTYpKTpTdHJpbmcuZnJvbUNoYXJDb2RlKCt5LnN1YnN0cmluZygxKSk6IiJ9KX12YXIgcD0vKF58W15cW10pXF4vZztmdW5jdGlvbiB2KCQseil7JD0ic3RyaW5nIj09dHlwZW9mICQ/JDokLnNvdXJjZSx6PXp8fCIiO3ZhciB5PXtyZXBsYWNlOmZ1bmN0aW9uKEQsWil7cmV0dXJu''@;'; put 'put ''IFo9KFo9Wi5zb3VyY2V8fFopLnJlcGxhY2UocCwiJDEiKSwkPSQucmVwbGFjZShELFopLHl9LGdldFJlZ2V4OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBSZWdFeHAoJCx6KX19O3JldHVybiB5fXZhciBIPS9bXlx3Ol0vZyxDPS9eJHxeW2Etel1bYS16MC05Ky4tXSo6fF5bPyNdL2k7ZnVuY3Rp''@;'; put 'put ''b24gVigkLHoseSl7aWYoJCl7dHJ5e0Q9ZGVjb2RlVVJJQ29tcG9uZW50KHUoeSkpLnJlcGxhY2UoSCwiIikudG9Mb3dlckNhc2UoKX1jYXRjaChaKXtyZXR1cm4gbnVsbH1pZigwPT09RC5pbmRleE9mKCJqYXZhc2NyaXB0OiIpfHwwPT09RC5pbmRleE9mKCJ2YnNjcmlwdDoiKXx8MD09PUQu''@;'; put 'put ''aW5kZXhPZigiZGF0YToiKSlyZXR1cm4gbnVsbH12YXIgRDt6JiYhQy50ZXN0KHkpJiYoJD15LFNbIiAiKyhEPXopXXx8KFNbIiAiK0RdPV8udGVzdChEKT9EKyIvIjp3KEQsIi8iLCEwKSksej0tMT09PShEPVNbIiAiK0RdKS5pbmRleE9mKCI6IikseT0iLy8iPT09JC5zdWJzdHJpbmcoMCwy''@;'; put 'put ''KT96PyQ6RC5yZXBsYWNlKGIsIiQxIikrJDoiLyI9PT0kLmNoYXJBdCgwKT96PyQ6RC5yZXBsYWNlKE0sIiQxIikrJDpEKyQpO3RyeXt5PWVuY29kZVVSSSh5KS5yZXBsYWNlKC8lMjUvZywiJSIpfWNhdGNoKFope3JldHVybiBudWxsfXJldHVybiB5fXZhciBTPXt9LF89L15bXjpdKzpcLypb''@;'; put 'put ''Xi9dKiQvLGI9L14oW146XSs6KVtcc1xTXSokLyxNPS9eKFteOl0rOlwvKlteL10qKVtcc1xTXSokLyxjMT17ZXhlYzpmdW5jdGlvbigpe319O2Z1bmN0aW9uIHgoJCl7Zm9yKHZhciB6LHksRD0xO0Q8YXJndW1lbnRzLmxlbmd0aDtEKyspZm9yKHkgaW4gej1hcmd1bWVudHNbRF0pT2JqZWN0''@;'; put 'put ''LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHoseSkmJigkW3ldPXpbeV0pO3JldHVybiAkfWZ1bmN0aW9uIEUoJCx6KXt2YXIgeT0kLnJlcGxhY2UoL1x8L2csZnVuY3Rpb24oWixULFApe2Zvcih2YXIgZTE9ITEscjE9VDswPD0tLXIxJiYiXFwiPT09UFtyMV07KWUxPSFlMTtyZXR1''@;'; put 'put ''cm4gZTE/InwiOiIgfCJ9KS5zcGxpdCgvIFx8LyksRD0wO2lmKHlbMF0udHJpbSgpfHx5LnNoaWZ0KCksMDx5Lmxlbmd0aCYmIXlbeS5sZW5ndGgtMV0udHJpbSgpJiZ5LnBvcCgpLHkubGVuZ3RoPnopeS5zcGxpY2Uoeik7ZWxzZSBmb3IoO3kubGVuZ3RoPHo7KXkucHVzaCgiIik7Zm9yKDtE''@;'; put 'put ''PHkubGVuZ3RoO0QrKyl5W0RdPXlbRF0udHJpbSgpLnJlcGxhY2UoL1xcXHwvZywifCIpO3JldHVybiB5fWZ1bmN0aW9uIHcoJCx6LHkpe3ZhciBEPSQubGVuZ3RoO2lmKDA9PT1EKXJldHVybiIiO2Zvcih2YXIgWj0wO1o8RDspe3ZhciBUPSQuY2hhckF0KEQtWi0xKTtpZihUIT09enx8eSl7''@;'; put 'put ''aWYoVD09PXp8fCF5KWJyZWFrO1orK31lbHNlIForK31yZXR1cm4gJC5zbGljZSgwLEQtWil9ZnVuY3Rpb24gTigkKXskJiYkLnNhbml0aXplJiYhJC5zaWxlbnQmJmNvbnNvbGUud2FybigibWFya2VkKCk6IHNhbml0aXplIGFuZCBzYW5pdGl6ZXIgcGFyYW1ldGVycyBhcmUgZGVwcmVjYXRl''@;'; put 'put ''ZCBzaW5jZSB2ZXJzaW9uIDAuNy4wLCBzaG91bGQgbm90IGJlIHVzZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBSZWFkIG1vcmUgaGVyZTogaHR0cHM6Ly9tYXJrZWQuanMub3JnLyMvVVNJTkdfQURWQU5DRUQubWQjb3B0aW9ucyIpfWZ1bmN0aW9uIEkoJCx6KXtpZih6''@;'; put 'put ''PDEpcmV0dXJuIiI7Zm9yKHZhciB5PSIiOzE8ejspMSZ6JiYoeSs9JCksej4+PTEsJCs9JDtyZXR1cm4geSskfWZ1bmN0aW9uIFcoJCxULHksRCl7dmFyIFo9VC5ocmVmLFA9KFQ9VC50aXRsZT9mKFQudGl0bGUpOm51bGwsJFsxXS5yZXBsYWNlKC9cXChbXFtcXV0pL2csIiQxIikpO3JldHVy''@;'; put 'put ''biIhIiE9PSRbMF0uY2hhckF0KDApPyhELnN0YXRlLmluTGluaz0hMCwkPXt0eXBlOiJsaW5rIixyYXc6eSxocmVmOlosdGl0bGU6VCx0ZXh0OlAsdG9rZW5zOkQuaW5saW5lVG9rZW5zKFAsW10pfSxELnN0YXRlLmluTGluaz0hMSwkKTp7dHlwZToiaW1hZ2UiLHJhdzp5LGhyZWY6Wix0aXRs''@;'; put 'put ''ZTpULHRleHQ6ZihQKX19dmFyIE89ZnVuY3Rpb24oKXtmdW5jdGlvbiAkKHkpe3RoaXMub3B0aW9ucz15fHxYLmRlZmF1bHRzfXZhciB6PSQucHJvdG90eXBlO3JldHVybiB6LnNwYWNlPWZ1bmN0aW9uKHkpe2lmKCh5PXRoaXMucnVsZXMuYmxvY2submV3bGluZS5leGVjKHkpKSYmMDx5WzBd''@;'; put 'put ''Lmxlbmd0aClyZXR1cm57dHlwZToic3BhY2UiLHJhdzp5WzBdfX0sei5jb2RlPWZ1bmN0aW9uKFope3ZhciBEO2lmKFo9dGhpcy5ydWxlcy5ibG9jay5jb2RlLmV4ZWMoWikpcmV0dXJuIEQ9WlswXS5yZXBsYWNlKC9eIHsxLDR9L2dtLCIiKSx7dHlwZToiY29kZSIscmF3OlpbMF0sY29kZUJs''@;'; put 'put ''b2NrU3R5bGU6ImluZGVudGVkIix0ZXh0OnRoaXMub3B0aW9ucy5wZWRhbnRpYz9EOncoRCwiXG4iKX19LHouZmVuY2VzPWZ1bmN0aW9uKFQpe3ZhciBELFo7aWYoVD10aGlzLnJ1bGVzLmJsb2NrLmZlbmNlcy5leGVjKFQpKXJldHVybiBaPWZ1bmN0aW9uKFAsZTEpe2lmKG51bGw9PT0oUD1Q''@;'; put 'put ''Lm1hdGNoKC9eKFxzKykoPzpgYGApLykpKXJldHVybiBlMTt2YXIgcjE9UFsxXTtyZXR1cm4gZTEuc3BsaXQoIlxuIikubWFwKGZ1bmN0aW9uKFoxKXt2YXIgWT1aMS5tYXRjaCgvXlxzKy8pO3JldHVybiBudWxsIT09WSYmWVswXS5sZW5ndGg+PXIxLmxlbmd0aD9aMS5zbGljZShyMS5sZW5n''@;'; put 'put ''dGgpOloxfSkuam9pbigiXG4iKX0oRD1UWzBdLFRbM118fCIiKSx7dHlwZToiY29kZSIscmF3OkQsbGFuZzpUWzJdJiZUWzJdLnRyaW0oKSx0ZXh0Olp9fSx6LmhlYWRpbmc9ZnVuY3Rpb24oVCl7dmFyIEQsWjtpZihUPXRoaXMucnVsZXMuYmxvY2suaGVhZGluZy5leGVjKFQpKXJldHVybiBE''@;'; put 'put ''PVRbMl0udHJpbSgpLC8jJC8udGVzdChEKSYmKFo9dyhELCIjIiksIXRoaXMub3B0aW9ucy5wZWRhbnRpYyYmWiYmIS8gJC8udGVzdChaKXx8KEQ9Wi50cmltKCkpKSx0aGlzLmxleGVyLmlubGluZSgoWj17dHlwZToiaGVhZGluZyIscmF3OlRbMF0sZGVwdGg6VFsxXS5sZW5ndGgsdGV4dDpE''@;'; put 'put ''LHRva2VuczpbXX0pLnRleHQsWi50b2tlbnMpLFp9LHouaHI9ZnVuY3Rpb24oeSl7aWYoeT10aGlzLnJ1bGVzLmJsb2NrLmhyLmV4ZWMoeSkpcmV0dXJue3R5cGU6ImhyIixyYXc6eVswXX19LHouYmxvY2txdW90ZT1mdW5jdGlvbihaKXt2YXIgRDtpZihaPXRoaXMucnVsZXMuYmxvY2suYmxv''@;'; put 'put ''Y2txdW90ZS5leGVjKFopKXJldHVybiBEPVpbMF0ucmVwbGFjZSgvXiAqPlsgXHRdPy9nbSwiIikse3R5cGU6ImJsb2NrcXVvdGUiLHJhdzpaWzBdLHRva2Vuczp0aGlzLmxleGVyLmJsb2NrVG9rZW5zKEQsW10pLHRleHQ6RH19LHoubGlzdD1mdW5jdGlvbih5KXt2YXIgRD10aGlzLnJ1bGVz''@;'; put 'put ''LmJsb2NrLmxpc3QuZXhlYyh5KTtpZihEKXt2YXIgWixULFAsZTEscjEsWjEsWSxxLEosQTEsTjEsUzE9MTwoaTE9RFsxXS50cmltKCkpLmxlbmd0aCxuMT17dHlwZToibGlzdCIscmF3OiIiLG9yZGVyZWQ6UzEsc3RhcnQ6UzE/K2kxLnNsaWNlKDAsLTEpOiIiLGxvb3NlOiExLGl0ZW1zOltd''@;'; put 'put ''fSxpMT1TMT8iXFxkezEsOX1cXCIraTEuc2xpY2UoLTEpOiJcXCIraTE7dGhpcy5vcHRpb25zLnBlZGFudGljJiYoaTE9UzE/aTE6IlsqKy1dIik7Zm9yKHZhciBmMT1uZXcgUmVnRXhwKCJeKCB7MCwzfSIraTErIikoKD86W1x0IF1bXlxcbl0qKT8oPzpcXG58JCkpIik7eSYmKE4xPSExLEQ9''@;'; put 'put ''ZjEuZXhlYyh5KSkmJiF0aGlzLnJ1bGVzLmJsb2NrLmhyLnRlc3QoeSk7KXtpZih5PXkuc3Vic3RyaW5nKChaPURbMF0pLmxlbmd0aCksWT1EWzJdLnNwbGl0KCJcbiIsMSlbMF0scT15LnNwbGl0KCJcbiIsMSlbMF0sdGhpcy5vcHRpb25zLnBlZGFudGljPyhlMT0yLEExPVkudHJpbUxlZnQo''@;'; put 'put ''KSk6KGUxPURbMl0uc2VhcmNoKC9bXiBdLyksQTE9WS5zbGljZShlMT00PGUxPzE6ZTEpLGUxKz1EWzFdLmxlbmd0aCkscjE9ITEsIVkmJi9eICokLy50ZXN0KHEpJiYoWis9cSsiXG4iLHk9eS5zdWJzdHJpbmcocS5sZW5ndGgrMSksTjE9ITApLCFOMSlmb3IodmFyIHgxPW5ldyBSZWdFeHAo''@;'; put 'put ''Il4gezAsIitNYXRoLm1pbigzLGUxLTEpKyJ9KD86WyorLV18XFxkezEsOX1bLildKSgoPzogW15cXG5dKik/KD86XFxufCQpKSIpLEkxPW5ldyBSZWdFeHAoIl4gezAsIitNYXRoLm1pbigzLGUxLTEpKyJ9KCg/Oi0gKil7Myx9fCg/Ol8gKil7Myx9fCg/OlxcKiAqKXszLH0pKD86XFxuK3wk''@;'; put 'put ''KSIpLEoxPW5ldyBSZWdFeHAoIl4gezAsIitNYXRoLm1pbigzLGUxLTEpKyJ9KD86YGBgfH5+fikiKSx0MD1uZXcgUmVnRXhwKCJeIHswLCIrTWF0aC5taW4oMyxlMS0xKSsifSMiKTt5JiYoWT1KPXkuc3BsaXQoIlxuIiwxKVswXSx0aGlzLm9wdGlvbnMucGVkYW50aWMmJihZPVkucmVwbGFj''@;'; put 'put ''ZSgvXiB7MSw0fSg/PSggezR9KSpbXiBdKS9nLCIgICIpKSwhSjEudGVzdChZKSkmJiF0MC50ZXN0KFkpJiYheDEudGVzdChZKSYmIUkxLnRlc3QoeSk7KXtpZihZLnNlYXJjaCgvW14gXS8pPj1lMXx8IVkudHJpbSgpKUExKz0iXG4iK1kuc2xpY2UoZTEpO2Vsc2V7aWYocjEpYnJlYWs7QTEr''@;'; put 'put ''PSJcbiIrWX1yMXx8WS50cmltKCl8fChyMT0hMCksWis9SisiXG4iLHk9eS5zdWJzdHJpbmcoSi5sZW5ndGgrMSl9bjEubG9vc2V8fChaMT9uMS5sb29zZT0hMDovXG4gKlxuICokLy50ZXN0KFopJiYoWjE9ITApKSx0aGlzLm9wdGlvbnMuZ2ZtJiYoVD0vXlxbWyB4WF1cXSAvLmV4ZWMoQTEp''@;'; put 'put ''KSYmKFA9IlsgXSAiIT09VFswXSxBMT1BMS5yZXBsYWNlKC9eXFtbIHhYXVxdICsvLCIiKSksbjEuaXRlbXMucHVzaCh7dHlwZToibGlzdF9pdGVtIixyYXc6Wix0YXNrOiEhVCxjaGVja2VkOlAsbG9vc2U6ITEsdGV4dDpBMX0pLG4xLnJhdys9Wn1uMS5pdGVtc1tuMS5pdGVtcy5sZW5ndGgt''@;'; put 'put ''MV0ucmF3PVoudHJpbVJpZ2h0KCksbjEuaXRlbXNbbjEuaXRlbXMubGVuZ3RoLTFdLnRleHQ9QTEudHJpbVJpZ2h0KCksbjEucmF3PW4xLnJhdy50cmltUmlnaHQoKTtmb3IodmFyIGYwPW4xLml0ZW1zLmxlbmd0aCxNMD0wO00wPGYwO00wKyspe3RoaXMubGV4ZXIuc3RhdGUudG9wPSExLG4x''@;'; put 'put ''Lml0ZW1zW00wXS50b2tlbnM9dGhpcy5sZXhlci5ibG9ja1Rva2VucyhuMS5pdGVtc1tNMF0udGV4dCxbXSk7dmFyIF8wPW4xLml0ZW1zW00wXS50b2tlbnMuZmlsdGVyKGZ1bmN0aW9uKHowKXtyZXR1cm4ic3BhY2UiPT09ejAudHlwZX0pLGkyPV8wLmV2ZXJ5KGZ1bmN0aW9uKHowKXtmb3Io''@;'; put 'put ''dmFyIFUwLEswPTAsazA9QSh6MC5yYXcuc3BsaXQoIiIpKTshKFUwPWswKCkpLmRvbmU7KWlmKCJcbiI9PT1VMC52YWx1ZSYmKEswKz0xKSwxPEswKXJldHVybiEwO3JldHVybiExfSk7IW4xLmxvb3NlJiZfMC5sZW5ndGgmJmkyJiYobjEubG9vc2U9ITAsbjEuaXRlbXNbTTBdLmxvb3NlPSEw''@;'; put 'put ''KX1yZXR1cm4gbjF9fSx6Lmh0bWw9ZnVuY3Rpb24oWil7dmFyIEQ7aWYoWj10aGlzLnJ1bGVzLmJsb2NrLmh0bWwuZXhlYyhaKSlyZXR1cm4gRD17dHlwZToiaHRtbCIscmF3OlpbMF0scHJlOiF0aGlzLm9wdGlvbnMuc2FuaXRpemVyJiYoInByZSI9PT1aWzFdfHwic2NyaXB0Ij09PVpbMV18''@;'; put 'put ''fCJzdHlsZSI9PT1aWzFdKSx0ZXh0OlpbMF19LHRoaXMub3B0aW9ucy5zYW5pdGl6ZSYmKEQudHlwZT0icGFyYWdyYXBoIixELnRleHQ9dGhpcy5vcHRpb25zLnNhbml0aXplcj90aGlzLm9wdGlvbnMuc2FuaXRpemVyKFpbMF0pOmYoWlswXSksRC50b2tlbnM9W10sdGhpcy5sZXhlci5pbmxp''@;'; put 'put ''bmUoRC50ZXh0LEQudG9rZW5zKSksRH0sei5kZWY9ZnVuY3Rpb24oeSl7aWYoeT10aGlzLnJ1bGVzLmJsb2NrLmRlZi5leGVjKHkpKXJldHVybiB5WzNdJiYoeVszXT15WzNdLnN1YnN0cmluZygxLHlbM10ubGVuZ3RoLTEpKSx7dHlwZToiZGVmIix0YWc6eVsxXS50b0xvd2VyQ2FzZSgpLnJl''@;'; put 'put ''cGxhY2UoL1xzKy9nLCIgIikscmF3OnlbMF0saHJlZjp5WzJdLHRpdGxlOnlbM119fSx6LnRhYmxlPWZ1bmN0aW9uKHkpe2lmKHk9dGhpcy5ydWxlcy5ibG9jay50YWJsZS5leGVjKHkpKXt2YXIgRD17dHlwZToidGFibGUiLGhlYWRlcjpFKHlbMV0pLm1hcChmdW5jdGlvbihaMSl7cmV0dXJu''@;'; put 'put ''e3RleHQ6WjF9fSksYWxpZ246eVsyXS5yZXBsYWNlKC9eICp8XHwgKiQvZywiIikuc3BsaXQoLyAqXHwgKi8pLHJvd3M6eVszXSYmeVszXS50cmltKCk/eVszXS5yZXBsYWNlKC9cblsgXHRdKiQvLCIiKS5zcGxpdCgiXG4iKTpbXX07aWYoRC5oZWFkZXIubGVuZ3RoPT09RC5hbGlnbi5sZW5n''@;'; put 'put ''dGgpe0QucmF3PXlbMF07Zm9yKHZhciBaLFQsUCxlMT1ELmFsaWduLmxlbmd0aCxyMT0wO3IxPGUxO3IxKyspRC5hbGlnbltyMV09L14gKi0rOiAqJC8udGVzdChELmFsaWduW3IxXSk/InJpZ2h0IjovXiAqOi0rOiAqJC8udGVzdChELmFsaWduW3IxXSk/ImNlbnRlciI6L14gKjotKyAqJC8u''@;'; put 'put ''dGVzdChELmFsaWduW3IxXSk/ImxlZnQiOm51bGw7Zm9yKGUxPUQucm93cy5sZW5ndGgscjE9MDtyMTxlMTtyMSsrKUQucm93c1tyMV09RShELnJvd3NbcjFdLEQuaGVhZGVyLmxlbmd0aCkubWFwKGZ1bmN0aW9uKFoxKXtyZXR1cm57dGV4dDpaMX19KTtmb3IoZTE9RC5oZWFkZXIubGVuZ3Ro''@;'; put 'put ''LFo9MDtaPGUxO1orKylELmhlYWRlcltaXS50b2tlbnM9W10sdGhpcy5sZXhlci5pbmxpbmUoRC5oZWFkZXJbWl0udGV4dCxELmhlYWRlcltaXS50b2tlbnMpO2ZvcihlMT1ELnJvd3MubGVuZ3RoLFo9MDtaPGUxO1orKylmb3IoUD1ELnJvd3NbWl0sVD0wO1Q8UC5sZW5ndGg7VCsrKVBbVF0u''@;'; put 'put ''dG9rZW5zPVtdLHRoaXMubGV4ZXIuaW5saW5lKFBbVF0udGV4dCxQW1RdLnRva2Vucyk7cmV0dXJuIER9fX0sei5saGVhZGluZz1mdW5jdGlvbihEKXtpZihEPXRoaXMucnVsZXMuYmxvY2subGhlYWRpbmcuZXhlYyhEKSlyZXR1cm4gRD17dHlwZToiaGVhZGluZyIscmF3OkRbMF0sZGVwdGg6''@;'; put 'put ''Ij0iPT09RFsyXS5jaGFyQXQoMCk/MToyLHRleHQ6RFsxXSx0b2tlbnM6W119LHRoaXMubGV4ZXIuaW5saW5lKEQudGV4dCxELnRva2VucyksRH0sei5wYXJhZ3JhcGg9ZnVuY3Rpb24oRCl7aWYoRD10aGlzLnJ1bGVzLmJsb2NrLnBhcmFncmFwaC5leGVjKEQpKXJldHVybiBEPXt0eXBlOiJw''@;'; put 'put ''YXJhZ3JhcGgiLHJhdzpEWzBdLHRleHQ6IlxuIj09PURbMV0uY2hhckF0KERbMV0ubGVuZ3RoLTEpP0RbMV0uc2xpY2UoMCwtMSk6RFsxXSx0b2tlbnM6W119LHRoaXMubGV4ZXIuaW5saW5lKEQudGV4dCxELnRva2VucyksRH0sei50ZXh0PWZ1bmN0aW9uKEQpe2lmKEQ9dGhpcy5ydWxlcy5i''@;'; put 'put ''bG9jay50ZXh0LmV4ZWMoRCkpcmV0dXJuIHRoaXMubGV4ZXIuaW5saW5lKChEPXt0eXBlOiJ0ZXh0IixyYXc6RFswXSx0ZXh0OkRbMF0sdG9rZW5zOltdfSkudGV4dCxELnRva2VucyksRH0sei5lc2NhcGU9ZnVuY3Rpb24oeSl7aWYoeT10aGlzLnJ1bGVzLmlubGluZS5lc2NhcGUuZXhlYyh5''@;'; put 'put ''KSlyZXR1cm57dHlwZToiZXNjYXBlIixyYXc6eVswXSx0ZXh0OmYoeVsxXSl9fSx6LnRhZz1mdW5jdGlvbih5KXtpZih5PXRoaXMucnVsZXMuaW5saW5lLnRhZy5leGVjKHkpKXJldHVybiF0aGlzLmxleGVyLnN0YXRlLmluTGluayYmL148YSAvaS50ZXN0KHlbMF0pP3RoaXMubGV4ZXIuc3Rh''@;'; put 'put ''dGUuaW5MaW5rPSEwOnRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rJiYvXjxcL2E+L2kudGVzdCh5WzBdKSYmKHRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rPSExKSwhdGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrJiYvXjwocHJlfGNvZGV8a2JkfHNjcmlwdCkoXHN8PikvaS50ZXN0KHlbMF0pP3Ro''@;'; put 'put ''aXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jaz0hMDp0aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2smJi9ePFwvKHByZXxjb2RlfGtiZHxzY3JpcHQpKFxzfD4pL2kudGVzdCh5WzBdKSYmKHRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jaz0hMSkse3R5cGU6dGhpcy5vcHRpb25zLnNhbml0aXpl''@;'; put 'put ''PyJ0ZXh0IjoiaHRtbCIscmF3OnlbMF0saW5MaW5rOnRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rLGluUmF3QmxvY2s6dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrLHRleHQ6dGhpcy5vcHRpb25zLnNhbml0aXplP3RoaXMub3B0aW9ucy5zYW5pdGl6ZXI/dGhpcy5vcHRpb25zLnNhbml0aXpl''@;'; put 'put ''cih5WzBdKTpmKHlbMF0pOnlbMF19fSx6Lmxpbms9ZnVuY3Rpb24oeSl7aWYoeT10aGlzLnJ1bGVzLmlubGluZS5saW5rLmV4ZWMoeSkpe3ZhciBEPXlbMl0udHJpbSgpO2lmKCF0aGlzLm9wdGlvbnMucGVkYW50aWMmJi9ePC8udGVzdChEKSl7aWYoIS8+JC8udGVzdChEKSlyZXR1cm47dmFy''@;'; put 'put ''IFQ9dyhELnNsaWNlKDAsLTEpLCJcXCIpO2lmKChELmxlbmd0aC1ULmxlbmd0aCklMj09MClyZXR1cm59ZWxzZS0xPChUPWZ1bmN0aW9uKGUxLHIxKXtpZigtMSE9PWUxLmluZGV4T2YoIigpIlsxXSkpZm9yKHZhciBaMT1lMS5sZW5ndGgsWT0wLHE9MDtxPFoxO3ErKylpZigiXFwiPT09ZTFb''@;'; put 'put ''cV0pcSsrO2Vsc2UgaWYoZTFbcV09PT0iKCkiWzBdKVkrKztlbHNlIGlmKGUxW3FdPT09IigpIlsxXSYmLS1ZPDApcmV0dXJuIHE7cmV0dXJuLTF9KHlbMl0pKSYmKFA9KDA9PT15WzBdLmluZGV4T2YoIiEiKT81OjQpK3lbMV0ubGVuZ3RoK1QseVsyXT15WzJdLnN1YnN0cmluZygwLFQpLHlb''@;'; put 'put ''MF09eVswXS5zdWJzdHJpbmcoMCxQKS50cmltKCkseVszXT0iIik7VD15WzJdO3ZhciBaLFA9IiI7cmV0dXJuIHRoaXMub3B0aW9ucy5wZWRhbnRpYz8oWj0vXihbXiciXSpbXlxzXSlccysoWyciXSkoLiopXDIvLmV4ZWMoVCkpJiYoVD1aWzFdLFA9WlszXSk6UD15WzNdP3lbM10uc2xpY2Uo''@;'; put 'put ''MSwtMSk6IiIsVD1ULnRyaW0oKSxXKHkse2hyZWY6KFQ9L148Ly50ZXN0KFQpP3RoaXMub3B0aW9ucy5wZWRhbnRpYyYmIS8+JC8udGVzdChEKT9ULnNsaWNlKDEpOlQuc2xpY2UoMSwtMSk6VCkmJlQucmVwbGFjZSh0aGlzLnJ1bGVzLmlubGluZS5fZXNjYXBlcywiJDEiKSx0aXRsZTpQJiZQ''@;'; put 'put ''LnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMsIiQxIil9LHlbMF0sdGhpcy5sZXhlcil9fSx6LnJlZmxpbms9ZnVuY3Rpb24oeSxEKXt2YXIgWjtpZigoWj10aGlzLnJ1bGVzLmlubGluZS5yZWZsaW5rLmV4ZWMoeSkpfHwoWj10aGlzLnJ1bGVzLmlubGluZS5ub2xpbmsuZXhl''@;'; put 'put ''Yyh5KSkpcmV0dXJuKHk9RFsoeT0oWlsyXXx8WlsxXSkucmVwbGFjZSgvXHMrL2csIiAiKSkudG9Mb3dlckNhc2UoKV0pJiZ5LmhyZWY/VyhaLHksWlswXSx0aGlzLmxleGVyKTp7dHlwZToidGV4dCIscmF3OkQ9WlswXS5jaGFyQXQoMCksdGV4dDpEfX0sei5lbVN0cm9uZz1mdW5jdGlvbih5''@;'; put 'put ''LEQsWil7dm9pZCAwPT09WiYmKFo9IiIpO3ZhciBUPXRoaXMucnVsZXMuaW5saW5lLmVtU3Ryb25nLmxEZWxpbS5leGVjKHkpO2lmKFQmJighVFszXXx8IVoubWF0Y2goLyg/OlswLTlBLVphLXpceEFBXHhCMlx4QjNceEI1XHhCOVx4QkFceEJDLVx4QkVceEMwLVx4RDZceEQ4LVx4RjZceEY4''@;'; put 'put ''LVx1MDJDMVx1MDJDNi1cdTAyRDFcdTAyRTAtXHUwMkU0XHUwMkVDXHUwMkVFXHUwMzcwLVx1MDM3NFx1MDM3Nlx1MDM3N1x1MDM3QS1cdTAzN0RcdTAzN0ZcdTAzODZcdTAzODgtXHUwMzhBXHUwMzhDXHUwMzhFLVx1MDNBMVx1MDNBMy1cdTAzRjVcdTAzRjctXHUwNDgxXHUwNDhBLVx1MDUy''@;'; put 'put ''Rlx1MDUzMS1cdTA1NTZcdTA1NTlcdTA1NjAtXHUwNTg4XHUwNUQwLVx1MDVFQVx1MDVFRi1cdTA1RjJcdTA2MjAtXHUwNjRBXHUwNjYwLVx1MDY2OVx1MDY2RVx1MDY2Rlx1MDY3MS1cdTA2RDNcdTA2RDVcdTA2RTVcdTA2RTZcdTA2RUUtXHUwNkZDXHUwNkZGXHUwNzEwXHUwNzEyLVx1MDcy''@;'; put 'put ''Rlx1MDc0RC1cdTA3QTVcdTA3QjFcdTA3QzAtXHUwN0VBXHUwN0Y0XHUwN0Y1XHUwN0ZBXHUwODAwLVx1MDgxNVx1MDgxQVx1MDgyNFx1MDgyOFx1MDg0MC1cdTA4NThcdTA4NjAtXHUwODZBXHUwODcwLVx1MDg4N1x1MDg4OS1cdTA4OEVcdTA4QTAtXHUwOEM5XHUwOTA0LVx1MDkzOVx1MDkz''@;'; put 'put ''RFx1MDk1MFx1MDk1OC1cdTA5NjFcdTA5NjYtXHUwOTZGXHUwOTcxLVx1MDk4MFx1MDk4NS1cdTA5OENcdTA5OEZcdTA5OTBcdTA5OTMtXHUwOUE4XHUwOUFBLVx1MDlCMFx1MDlCMlx1MDlCNi1cdTA5QjlcdTA5QkRcdTA5Q0VcdTA5RENcdTA5RERcdTA5REYtXHUwOUUxXHUwOUU2LVx1MDlG''@;'; put 'put ''MVx1MDlGNC1cdTA5RjlcdTA5RkNcdTBBMDUtXHUwQTBBXHUwQTBGXHUwQTEwXHUwQTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzJcdTBBMzNcdTBBMzVcdTBBMzZcdTBBMzhcdTBBMzlcdTBBNTktXHUwQTVDXHUwQTVFXHUwQTY2LVx1MEE2Rlx1MEE3Mi1cdTBBNzRcdTBBODUtXHUwQThE''@;'; put 'put ''XHUwQThGLVx1MEE5MVx1MEE5My1cdTBBQThcdTBBQUEtXHUwQUIwXHUwQUIyXHUwQUIzXHUwQUI1LVx1MEFCOVx1MEFCRFx1MEFEMFx1MEFFMFx1MEFFMVx1MEFFNi1cdTBBRUZcdTBBRjlcdTBCMDUtXHUwQjBDXHUwQjBGXHUwQjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBCMzJc''@;'; put 'put ''dTBCMzNcdTBCMzUtXHUwQjM5XHUwQjNEXHUwQjVDXHUwQjVEXHUwQjVGLVx1MEI2MVx1MEI2Ni1cdTBCNkZcdTBCNzEtXHUwQjc3XHUwQjgzXHUwQjg1LVx1MEI4QVx1MEI4RS1cdTBCOTBcdTBCOTItXHUwQjk1XHUwQjk5XHUwQjlBXHUwQjlDXHUwQjlFXHUwQjlGXHUwQkEzXHUwQkE0XHUw''@;'; put 'put ''QkE4LVx1MEJBQVx1MEJBRS1cdTBCQjlcdTBCRDBcdTBCRTYtXHUwQkYyXHUwQzA1LVx1MEMwQ1x1MEMwRS1cdTBDMTBcdTBDMTItXHUwQzI4XHUwQzJBLVx1MEMzOVx1MEMzRFx1MEM1OC1cdTBDNUFcdTBDNURcdTBDNjBcdTBDNjFcdTBDNjYtXHUwQzZGXHUwQzc4LVx1MEM3RVx1MEM4MFx1''@;'; put 'put ''MEM4NS1cdTBDOENcdTBDOEUtXHUwQzkwXHUwQzkyLVx1MENBOFx1MENBQS1cdTBDQjNcdTBDQjUtXHUwQ0I5XHUwQ0JEXHUwQ0REXHUwQ0RFXHUwQ0UwXHUwQ0UxXHUwQ0U2LVx1MENFRlx1MENGMVx1MENGMlx1MEQwNC1cdTBEMENcdTBEMEUtXHUwRDEwXHUwRDEyLVx1MEQzQVx1MEQzRFx1''@;'; put 'put ''MEQ0RVx1MEQ1NC1cdTBENTZcdTBENTgtXHUwRDYxXHUwRDY2LVx1MEQ3OFx1MEQ3QS1cdTBEN0ZcdTBEODUtXHUwRDk2XHUwRDlBLVx1MERCMVx1MERCMy1cdTBEQkJcdTBEQkRcdTBEQzAtXHUwREM2XHUwREU2LVx1MERFRlx1MEUwMS1cdTBFMzBcdTBFMzJcdTBFMzNcdTBFNDAtXHUwRTQ2''@;'; put 'put ''XHUwRTUwLVx1MEU1OVx1MEU4MVx1MEU4Mlx1MEU4NFx1MEU4Ni1cdTBFOEFcdTBFOEMtXHUwRUEzXHUwRUE1XHUwRUE3LVx1MEVCMFx1MEVCMlx1MEVCM1x1MEVCRFx1MEVDMC1cdTBFQzRcdTBFQzZcdTBFRDAtXHUwRUQ5XHUwRURDLVx1MEVERlx1MEYwMFx1MEYyMC1cdTBGMzNcdTBGNDAt''@;'; put 'put ''XHUwRjQ3XHUwRjQ5LVx1MEY2Q1x1MEY4OC1cdTBGOENcdTEwMDAtXHUxMDJBXHUxMDNGLVx1MTA0OVx1MTA1MC1cdTEwNTVcdTEwNUEtXHUxMDVEXHUxMDYxXHUxMDY1XHUxMDY2XHUxMDZFLVx1MTA3MFx1MTA3NS1cdTEwODFcdTEwOEVcdTEwOTAtXHUxMDk5XHUxMEEwLVx1MTBDNVx1MTBD''@;'; put 'put ''N1x1MTBDRFx1MTBEMC1cdTEwRkFcdTEwRkMtXHUxMjQ4XHUxMjRBLVx1MTI0RFx1MTI1MC1cdTEyNTZcdTEyNThcdTEyNUEtXHUxMjVEXHUxMjYwLVx1MTI4OFx1MTI4QS1cdTEyOERcdTEyOTAtXHUxMkIwXHUxMkIyLVx1MTJCNVx1MTJCOC1cdTEyQkVcdTEyQzBcdTEyQzItXHUxMkM1XHUx''@;'; put 'put ''MkM4LVx1MTJENlx1MTJEOC1cdTEzMTBcdTEzMTItXHUxMzE1XHUxMzE4LVx1MTM1QVx1MTM2OS1cdTEzN0NcdTEzODAtXHUxMzhGXHUxM0EwLVx1MTNGNVx1MTNGOC1cdTEzRkRcdTE0MDEtXHUxNjZDXHUxNjZGLVx1MTY3Rlx1MTY4MS1cdTE2OUFcdTE2QTAtXHUxNkVBXHUxNkVFLVx1MTZG''@;'; put 'put ''OFx1MTcwMC1cdTE3MTFcdTE3MUYtXHUxNzMxXHUxNzQwLVx1MTc1MVx1MTc2MC1cdTE3NkNcdTE3NkUtXHUxNzcwXHUxNzgwLVx1MTdCM1x1MTdEN1x1MTdEQ1x1MTdFMC1cdTE3RTlcdTE3RjAtXHUxN0Y5XHUxODEwLVx1MTgxOVx1MTgyMC1cdTE4NzhcdTE4ODAtXHUxODg0XHUxODg3LVx1''@;'; put 'put ''MThBOFx1MThBQVx1MThCMC1cdTE4RjVcdTE5MDAtXHUxOTFFXHUxOTQ2LVx1MTk2RFx1MTk3MC1cdTE5NzRcdTE5ODAtXHUxOUFCXHUxOUIwLVx1MTlDOVx1MTlEMC1cdTE5REFcdTFBMDAtXHUxQTE2XHUxQTIwLVx1MUE1NFx1MUE4MC1cdTFBODlcdTFBOTAtXHUxQTk5XHUxQUE3XHUxQjA1''@;'; put 'put ''LVx1MUIzM1x1MUI0NS1cdTFCNENcdTFCNTAtXHUxQjU5XHUxQjgzLVx1MUJBMFx1MUJBRS1cdTFCRTVcdTFDMDAtXHUxQzIzXHUxQzQwLVx1MUM0OVx1MUM0RC1cdTFDN0RcdTFDODAtXHUxQzg4XHUxQzkwLVx1MUNCQVx1MUNCRC1cdTFDQkZcdTFDRTktXHUxQ0VDXHUxQ0VFLVx1MUNGM1x1''@;'; put 'put ''MUNGNVx1MUNGNlx1MUNGQVx1MUQwMC1cdTFEQkZcdTFFMDAtXHUxRjE1XHUxRjE4LVx1MUYxRFx1MUYyMC1cdTFGNDVcdTFGNDgtXHUxRjREXHUxRjUwLVx1MUY1N1x1MUY1OVx1MUY1Qlx1MUY1RFx1MUY1Ri1cdTFGN0RcdTFGODAtXHUxRkI0XHUxRkI2LVx1MUZCQ1x1MUZCRVx1MUZDMi1c''@;'; put 'put ''dTFGQzRcdTFGQzYtXHUxRkNDXHUxRkQwLVx1MUZEM1x1MUZENi1cdTFGREJcdTFGRTAtXHUxRkVDXHUxRkYyLVx1MUZGNFx1MUZGNi1cdTFGRkNcdTIwNzBcdTIwNzFcdTIwNzQtXHUyMDc5XHUyMDdGLVx1MjA4OVx1MjA5MC1cdTIwOUNcdTIxMDJcdTIxMDdcdTIxMEEtXHUyMTEzXHUyMTE1''@;'; put 'put ''XHUyMTE5LVx1MjExRFx1MjEyNFx1MjEyNlx1MjEyOFx1MjEyQS1cdTIxMkRcdTIxMkYtXHUyMTM5XHUyMTNDLVx1MjEzRlx1MjE0NS1cdTIxNDlcdTIxNEVcdTIxNTAtXHUyMTg5XHUyNDYwLVx1MjQ5Qlx1MjRFQS1cdTI0RkZcdTI3NzYtXHUyNzkzXHUyQzAwLVx1MkNFNFx1MkNFQi1cdTJD''@;'; put 'put ''RUVcdTJDRjJcdTJDRjNcdTJDRkRcdTJEMDAtXHUyRDI1XHUyRDI3XHUyRDJEXHUyRDMwLVx1MkQ2N1x1MkQ2Rlx1MkQ4MC1cdTJEOTZcdTJEQTAtXHUyREE2XHUyREE4LVx1MkRBRVx1MkRCMC1cdTJEQjZcdTJEQjgtXHUyREJFXHUyREMwLVx1MkRDNlx1MkRDOC1cdTJEQ0VcdTJERDAtXHUy''@;'; put 'put ''REQ2XHUyREQ4LVx1MkRERVx1MkUyRlx1MzAwNS1cdTMwMDdcdTMwMjEtXHUzMDI5XHUzMDMxLVx1MzAzNVx1MzAzOC1cdTMwM0NcdTMwNDEtXHUzMDk2XHUzMDlELVx1MzA5Rlx1MzBBMS1cdTMwRkFcdTMwRkMtXHUzMEZGXHUzMTA1LVx1MzEyRlx1MzEzMS1cdTMxOEVcdTMxOTItXHUzMTk1''@;'; put 'put ''XHUzMUEwLVx1MzFCRlx1MzFGMC1cdTMxRkZcdTMyMjAtXHUzMjI5XHUzMjQ4LVx1MzI0Rlx1MzI1MS1cdTMyNUZcdTMyODAtXHUzMjg5XHUzMkIxLVx1MzJCRlx1MzQwMC1cdTREQkZcdTRFMDAtXHVBNDhDXHVBNEQwLVx1QTRGRFx1QTUwMC1cdUE2MENcdUE2MTAtXHVBNjJCXHVBNjQwLVx1''@;'; put 'put ''QTY2RVx1QTY3Ri1cdUE2OURcdUE2QTAtXHVBNkVGXHVBNzE3LVx1QTcxRlx1QTcyMi1cdUE3ODhcdUE3OEItXHVBN0NBXHVBN0QwXHVBN0QxXHVBN0QzXHVBN0Q1LVx1QTdEOVx1QTdGMi1cdUE4MDFcdUE4MDMtXHVBODA1XHVBODA3LVx1QTgwQVx1QTgwQy1cdUE4MjJcdUE4MzAtXHVBODM1''@;'; put 'put ''XHVBODQwLVx1QTg3M1x1QTg4Mi1cdUE4QjNcdUE4RDAtXHVBOEQ5XHVBOEYyLVx1QThGN1x1QThGQlx1QThGRFx1QThGRVx1QTkwMC1cdUE5MjVcdUE5MzAtXHVBOTQ2XHVBOTYwLVx1QTk3Q1x1QTk4NC1cdUE5QjJcdUE5Q0YtXHVBOUQ5XHVBOUUwLVx1QTlFNFx1QTlFNi1cdUE5RkVcdUFB''@;'; put 'put ''MDAtXHVBQTI4XHVBQTQwLVx1QUE0Mlx1QUE0NC1cdUFBNEJcdUFBNTAtXHVBQTU5XHVBQTYwLVx1QUE3Nlx1QUE3QVx1QUE3RS1cdUFBQUZcdUFBQjFcdUFBQjVcdUFBQjZcdUFBQjktXHVBQUJEXHVBQUMwXHVBQUMyXHVBQURCLVx1QUFERFx1QUFFMC1cdUFBRUFcdUFBRjItXHVBQUY0XHVB''@;'; put 'put ''QjAxLVx1QUIwNlx1QUIwOS1cdUFCMEVcdUFCMTEtXHVBQjE2XHVBQjIwLVx1QUIyNlx1QUIyOC1cdUFCMkVcdUFCMzAtXHVBQjVBXHVBQjVDLVx1QUI2OVx1QUI3MC1cdUFCRTJcdUFCRjAtXHVBQkY5XHVBQzAwLVx1RDdBM1x1RDdCMC1cdUQ3QzZcdUQ3Q0ItXHVEN0ZCXHVGOTAwLVx1RkE2''@;'; put 'put ''RFx1RkE3MC1cdUZBRDlcdUZCMDAtXHVGQjA2XHVGQjEzLVx1RkIxN1x1RkIxRFx1RkIxRi1cdUZCMjhcdUZCMkEtXHVGQjM2XHVGQjM4LVx1RkIzQ1x1RkIzRVx1RkI0MFx1RkI0MVx1RkI0M1x1RkI0NFx1RkI0Ni1cdUZCQjFcdUZCRDMtXHVGRDNEXHVGRDUwLVx1RkQ4Rlx1RkQ5Mi1cdUZE''@;'; put 'put ''QzdcdUZERjAtXHVGREZCXHVGRTcwLVx1RkU3NFx1RkU3Ni1cdUZFRkNcdUZGMTAtXHVGRjE5XHVGRjIxLVx1RkYzQVx1RkY0MS1cdUZGNUFcdUZGNjYtXHVGRkJFXHVGRkMyLVx1RkZDN1x1RkZDQS1cdUZGQ0ZcdUZGRDItXHVGRkQ3XHVGRkRBLVx1RkZEQ118XHVEODAwW1x1REMwMC1cdURD''@;'; put 'put ''MEJcdURDMEQtXHVEQzI2XHVEQzI4LVx1REMzQVx1REMzQ1x1REMzRFx1REMzRi1cdURDNERcdURDNTAtXHVEQzVEXHVEQzgwLVx1RENGQVx1REQwNy1cdUREMzNcdURENDAtXHVERDc4XHVERDhBXHVERDhCXHVERTgwLVx1REU5Q1x1REVBMC1cdURFRDBcdURFRTEtXHVERUZCXHVERjAwLVx1''@;'; put 'put ''REYyM1x1REYyRC1cdURGNEFcdURGNTAtXHVERjc1XHVERjgwLVx1REY5RFx1REZBMC1cdURGQzNcdURGQzgtXHVERkNGXHVERkQxLVx1REZENV18XHVEODAxW1x1REMwMC1cdURDOURcdURDQTAtXHVEQ0E5XHVEQ0IwLVx1RENEM1x1RENEOC1cdURDRkJcdUREMDAtXHVERDI3XHVERDMwLVx1''@;'; put 'put ''REQ2M1x1REQ3MC1cdUREN0FcdUREN0MtXHVERDhBXHVERDhDLVx1REQ5Mlx1REQ5NFx1REQ5NVx1REQ5Ny1cdUREQTFcdUREQTMtXHVEREIxXHVEREIzLVx1RERCOVx1RERCQlx1RERCQ1x1REUwMC1cdURGMzZcdURGNDAtXHVERjU1XHVERjYwLVx1REY2N1x1REY4MC1cdURGODVcdURGODct''@;'; put 'put ''XHVERkIwXHVERkIyLVx1REZCQV18XHVEODAyW1x1REMwMC1cdURDMDVcdURDMDhcdURDMEEtXHVEQzM1XHVEQzM3XHVEQzM4XHVEQzNDXHVEQzNGLVx1REM1NVx1REM1OC1cdURDNzZcdURDNzktXHVEQzlFXHVEQ0E3LVx1RENBRlx1RENFMC1cdURDRjJcdURDRjRcdURDRjVcdURDRkItXHVE''@;'; put 'put ''RDFCXHVERDIwLVx1REQzOVx1REQ4MC1cdUREQjdcdUREQkMtXHVERENGXHVEREQyLVx1REUwMFx1REUxMC1cdURFMTNcdURFMTUtXHVERTE3XHVERTE5LVx1REUzNVx1REU0MC1cdURFNDhcdURFNjAtXHVERTdFXHVERTgwLVx1REU5Rlx1REVDMC1cdURFQzdcdURFQzktXHVERUU0XHVERUVC''@;'; put 'put ''LVx1REVFRlx1REYwMC1cdURGMzVcdURGNDAtXHVERjU1XHVERjU4LVx1REY3Mlx1REY3OC1cdURGOTFcdURGQTktXHVERkFGXXxcdUQ4MDNbXHVEQzAwLVx1REM0OFx1REM4MC1cdURDQjJcdURDQzAtXHVEQ0YyXHVEQ0ZBLVx1REQyM1x1REQzMC1cdUREMzlcdURFNjAtXHVERTdFXHVERTgw''@;'; put 'put ''LVx1REVBOVx1REVCMFx1REVCMVx1REYwMC1cdURGMjdcdURGMzAtXHVERjQ1XHVERjUxLVx1REY1NFx1REY3MC1cdURGODFcdURGQjAtXHVERkNCXHVERkUwLVx1REZGNl18XHVEODA0W1x1REMwMy1cdURDMzdcdURDNTItXHVEQzZGXHVEQzcxXHVEQzcyXHVEQzc1XHVEQzgzLVx1RENBRlx1''@;'; put 'put ''RENEMC1cdURDRThcdURDRjAtXHVEQ0Y5XHVERDAzLVx1REQyNlx1REQzNi1cdUREM0ZcdURENDRcdURENDdcdURENTAtXHVERDcyXHVERDc2XHVERDgzLVx1RERCMlx1RERDMS1cdUREQzRcdURERDAtXHVERERBXHVERERDXHVEREUxLVx1RERGNFx1REUwMC1cdURFMTFcdURFMTMtXHVERTJC''@;'; put 'put ''XHVERTgwLVx1REU4Nlx1REU4OFx1REU4QS1cdURFOERcdURFOEYtXHVERTlEXHVERTlGLVx1REVBOFx1REVCMC1cdURFREVcdURFRjAtXHVERUY5XHVERjA1LVx1REYwQ1x1REYwRlx1REYxMFx1REYxMy1cdURGMjhcdURGMkEtXHVERjMwXHVERjMyXHVERjMzXHVERjM1LVx1REYzOVx1REYz''@;'; put 'put ''RFx1REY1MFx1REY1RC1cdURGNjFdfFx1RDgwNVtcdURDMDAtXHVEQzM0XHVEQzQ3LVx1REM0QVx1REM1MC1cdURDNTlcdURDNUYtXHVEQzYxXHVEQzgwLVx1RENBRlx1RENDNFx1RENDNVx1RENDN1x1RENEMC1cdURDRDlcdUREODAtXHVEREFFXHVEREQ4LVx1REREQlx1REUwMC1cdURFMkZc''@;'; put 'put ''dURFNDRcdURFNTAtXHVERTU5XHVERTgwLVx1REVBQVx1REVCOFx1REVDMC1cdURFQzlcdURGMDAtXHVERjFBXHVERjMwLVx1REYzQlx1REY0MC1cdURGNDZdfFx1RDgwNltcdURDMDAtXHVEQzJCXHVEQ0EwLVx1RENGMlx1RENGRi1cdUREMDZcdUREMDlcdUREMEMtXHVERDEzXHVERDE1XHVE''@;'; put 'put ''RDE2XHVERDE4LVx1REQyRlx1REQzRlx1REQ0MVx1REQ1MC1cdURENTlcdUREQTAtXHVEREE3XHVEREFBLVx1REREMFx1RERFMVx1RERFM1x1REUwMFx1REUwQi1cdURFMzJcdURFM0FcdURFNTBcdURFNUMtXHVERTg5XHVERTlEXHVERUIwLVx1REVGOF18XHVEODA3W1x1REMwMC1cdURDMDhc''@;'; put 'put ''dURDMEEtXHVEQzJFXHVEQzQwXHVEQzUwLVx1REM2Q1x1REM3Mi1cdURDOEZcdUREMDAtXHVERDA2XHVERDA4XHVERDA5XHVERDBCLVx1REQzMFx1REQ0Nlx1REQ1MC1cdURENTlcdURENjAtXHVERDY1XHVERDY3XHVERDY4XHVERDZBLVx1REQ4OVx1REQ5OFx1RERBMC1cdUREQTlcdURFRTAt''@;'; put 'put ''XHVERUYyXHVERkIwXHVERkMwLVx1REZENF18XHVEODA4W1x1REMwMC1cdURGOTldfFx1RDgwOVtcdURDMDAtXHVEQzZFXHVEQzgwLVx1REQ0M118XHVEODBCW1x1REY5MC1cdURGRjBdfFtcdUQ4MENcdUQ4MUMtXHVEODIwXHVEODIyXHVEODQwLVx1RDg2OFx1RDg2QS1cdUQ4NkNcdUQ4NkYt''@;'; put 'put ''XHVEODcyXHVEODc0LVx1RDg3OVx1RDg4MC1cdUQ4ODNdW1x1REMwMC1cdURGRkZdfFx1RDgwRFtcdURDMDAtXHVEQzJFXXxcdUQ4MTFbXHVEQzAwLVx1REU0Nl18XHVEODFBW1x1REMwMC1cdURFMzhcdURFNDAtXHVERTVFXHVERTYwLVx1REU2OVx1REU3MC1cdURFQkVcdURFQzAtXHVERUM5''@;'; put 'put ''XHVERUQwLVx1REVFRFx1REYwMC1cdURGMkZcdURGNDAtXHVERjQzXHVERjUwLVx1REY1OVx1REY1Qi1cdURGNjFcdURGNjMtXHVERjc3XHVERjdELVx1REY4Rl18XHVEODFCW1x1REU0MC1cdURFOTZcdURGMDAtXHVERjRBXHVERjUwXHVERjkzLVx1REY5Rlx1REZFMFx1REZFMVx1REZFM118''@;'; put 'put ''XHVEODIxW1x1REMwMC1cdURGRjddfFx1RDgyM1tcdURDMDAtXHVEQ0Q1XHVERDAwLVx1REQwOF18XHVEODJCW1x1REZGMC1cdURGRjNcdURGRjUtXHVERkZCXHVERkZEXHVERkZFXXxcdUQ4MkNbXHVEQzAwLVx1REQyMlx1REQ1MC1cdURENTJcdURENjQtXHVERDY3XHVERDcwLVx1REVGQl18''@;'; put 'put ''XHVEODJGW1x1REMwMC1cdURDNkFcdURDNzAtXHVEQzdDXHVEQzgwLVx1REM4OFx1REM5MC1cdURDOTldfFx1RDgzNFtcdURFRTAtXHVERUYzXHVERjYwLVx1REY3OF18XHVEODM1W1x1REMwMC1cdURDNTRcdURDNTYtXHVEQzlDXHVEQzlFXHVEQzlGXHVEQ0EyXHVEQ0E1XHVEQ0E2XHVEQ0E5''@;'; put 'put ''LVx1RENBQ1x1RENBRS1cdURDQjlcdURDQkJcdURDQkQtXHVEQ0MzXHVEQ0M1LVx1REQwNVx1REQwNy1cdUREMEFcdUREMEQtXHVERDE0XHVERDE2LVx1REQxQ1x1REQxRS1cdUREMzlcdUREM0ItXHVERDNFXHVERDQwLVx1REQ0NFx1REQ0Nlx1REQ0QS1cdURENTBcdURENTItXHVERUE1XHVE''@;'; put 'put ''RUE4LVx1REVDMFx1REVDMi1cdURFREFcdURFREMtXHVERUZBXHVERUZDLVx1REYxNFx1REYxNi1cdURGMzRcdURGMzYtXHVERjRFXHVERjUwLVx1REY2RVx1REY3MC1cdURGODhcdURGOEEtXHVERkE4XHVERkFBLVx1REZDMlx1REZDNC1cdURGQ0JcdURGQ0UtXHVERkZGXXxcdUQ4MzdbXHVE''@;'; put 'put ''RjAwLVx1REYxRV18XHVEODM4W1x1REQwMC1cdUREMkNcdUREMzctXHVERDNEXHVERDQwLVx1REQ0OVx1REQ0RVx1REU5MC1cdURFQURcdURFQzAtXHVERUVCXHVERUYwLVx1REVGOV18XHVEODM5W1x1REZFMC1cdURGRTZcdURGRTgtXHVERkVCXHVERkVEXHVERkVFXHVERkYwLVx1REZGRV18''@;'; put 'put ''XHVEODNBW1x1REMwMC1cdURDQzRcdURDQzctXHVEQ0NGXHVERDAwLVx1REQ0M1x1REQ0Qlx1REQ1MC1cdURENTldfFx1RDgzQltcdURDNzEtXHVEQ0FCXHVEQ0FELVx1RENBRlx1RENCMS1cdURDQjRcdUREMDEtXHVERDJEXHVERDJGLVx1REQzRFx1REUwMC1cdURFMDNcdURFMDUtXHVERTFG''@;'; put 'put ''XHVERTIxXHVERTIyXHVERTI0XHVERTI3XHVERTI5LVx1REUzMlx1REUzNC1cdURFMzdcdURFMzlcdURFM0JcdURFNDJcdURFNDdcdURFNDlcdURFNEJcdURFNEQtXHVERTRGXHVERTUxXHVERTUyXHVERTU0XHVERTU3XHVERTU5XHVERTVCXHVERTVEXHVERTVGXHVERTYxXHVERTYyXHVERTY0''@;'; put 'put ''XHVERTY3LVx1REU2QVx1REU2Qy1cdURFNzJcdURFNzQtXHVERTc3XHVERTc5LVx1REU3Q1x1REU3RVx1REU4MC1cdURFODlcdURFOEItXHVERTlCXHVERUExLVx1REVBM1x1REVBNS1cdURFQTlcdURFQUItXHVERUJCXXxcdUQ4M0NbXHVERDAwLVx1REQwQ118XHVEODNFW1x1REZGMC1cdURG''@;'; put 'put ''RjldfFx1RDg2OVtcdURDMDAtXHVERURGXHVERjAwLVx1REZGRl18XHVEODZEW1x1REMwMC1cdURGMzhcdURGNDAtXHVERkZGXXxcdUQ4NkVbXHVEQzAwLVx1REMxRFx1REMyMC1cdURGRkZdfFx1RDg3M1tcdURDMDAtXHVERUExXHVERUIwLVx1REZGRl18XHVEODdBW1x1REMwMC1cdURGRTBd''@;'; put 'put ''fFx1RDg3RVtcdURDMDAtXHVERTFEXXxcdUQ4ODRbXHVEQzAwLVx1REY0QV0pLykpJiYoIVRbMV0mJiFUWzJdfHwiIj09PVp8fHRoaXMucnVsZXMuaW5saW5lLnB1bmN0dWF0aW9uLmV4ZWMoWikpKXt2YXIgZTE9VFswXS5sZW5ndGgtMSxyMT1lMSxaMT0wLFk9IioiPT09VFswXVswXT90aGlz''@;'; put 'put ''LnJ1bGVzLmlubGluZS5lbVN0cm9uZy5yRGVsaW1Bc3Q6dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmcuckRlbGltVW5kO2ZvcihZLmxhc3RJbmRleD0wLEQ9RC5zbGljZSgtMSp5Lmxlbmd0aCtlMSk7bnVsbCE9KFQ9WS5leGVjKEQpKTspaWYocT1UWzFdfHxUWzJdfHxUWzNdfHxUWzRdfHxU''@;'; put 'put ''WzVdfHxUWzZdKWlmKHE9cS5sZW5ndGgsVFszXXx8VFs0XSlyMSs9cTtlbHNlIGlmKChUWzVdfHxUWzZdKSYmZTElMyYmISgoZTErcSklMykpWjErPXE7ZWxzZSBpZighKDA8KHIxLT1xKSkpe3ZhciBxPU1hdGgubWluKHEscStyMStaMSk7aWYoTWF0aC5taW4oZTEscSklMilyZXR1cm4gSj15''@;'; put 'put ''LnNsaWNlKDEsZTErVC5pbmRleCtxKSx7dHlwZToiZW0iLHJhdzp5LnNsaWNlKDAsZTErVC5pbmRleCtxKzEpLHRleHQ6Six0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmVUb2tlbnMoSixbXSl9O3ZhciBKPXkuc2xpY2UoMixlMStULmluZGV4K3EtMSk7cmV0dXJue3R5cGU6InN0cm9uZyIscmF3''@;'; put 'put ''Onkuc2xpY2UoMCxlMStULmluZGV4K3ErMSksdGV4dDpKLHRva2Vuczp0aGlzLmxleGVyLmlubGluZVRva2VucyhKLFtdKX19fX0sei5jb2Rlc3Bhbj1mdW5jdGlvbihQKXt2YXIgRCxaLFQ7aWYoUD10aGlzLnJ1bGVzLmlubGluZS5jb2RlLmV4ZWMoUCkpcmV0dXJuIFQ9UFsyXS5yZXBsYWNl''@;'; put 'put ''KC9cbi9nLCIgIiksRD0vW14gXS8udGVzdChUKSxaPS9eIC8udGVzdChUKSYmLyAkLy50ZXN0KFQpLFQ9ZihUPUQmJlo/VC5zdWJzdHJpbmcoMSxULmxlbmd0aC0xKTpULCEwKSx7dHlwZToiY29kZXNwYW4iLHJhdzpQWzBdLHRleHQ6VH19LHouYnI9ZnVuY3Rpb24oeSl7aWYoeT10aGlzLnJ1''@;'; put 'put ''bGVzLmlubGluZS5ici5leGVjKHkpKXJldHVybnt0eXBlOiJiciIscmF3OnlbMF19fSx6LmRlbD1mdW5jdGlvbih5KXtpZih5PXRoaXMucnVsZXMuaW5saW5lLmRlbC5leGVjKHkpKXJldHVybnt0eXBlOiJkZWwiLHJhdzp5WzBdLHRleHQ6eVsyXSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmVU''@;'; put 'put ''b2tlbnMoeVsyXSxbXSl9fSx6LmF1dG9saW5rPWZ1bmN0aW9uKFQsRCl7dmFyIFo7aWYoVD10aGlzLnJ1bGVzLmlubGluZS5hdXRvbGluay5leGVjKFQpKXJldHVybiBEPSJAIj09PVRbMl0/Im1haWx0bzoiKyhaPWYodGhpcy5vcHRpb25zLm1hbmdsZT9EKFRbMV0pOlRbMV0pKTpaPWYoVFsx''@;'; put 'put ''XSkse3R5cGU6ImxpbmsiLHJhdzpUWzBdLHRleHQ6WixocmVmOkQsdG9rZW5zOlt7dHlwZToidGV4dCIscmF3OlosdGV4dDpafV19fSx6LnVybD1mdW5jdGlvbih5LEQpe3ZhciBaLFQsUCxlMTtpZihaPXRoaXMucnVsZXMuaW5saW5lLnVybC5leGVjKHkpKXtpZigiQCI9PT1aWzJdKVA9Im1h''@;'; put 'put ''aWx0bzoiKyhUPWYodGhpcy5vcHRpb25zLm1hbmdsZT9EKFpbMF0pOlpbMF0pKTtlbHNle2Zvcig7ZTE9WlswXSxaWzBdPXRoaXMucnVsZXMuaW5saW5lLl9iYWNrcGVkYWwuZXhlYyhaWzBdKVswXSxlMSE9PVpbMF07KTtUPWYoWlswXSksUD0id3d3LiI9PT1aWzFdPyJodHRwOi8vIitUOlR9''@;'; put 'put ''cmV0dXJue3R5cGU6ImxpbmsiLHJhdzpaWzBdLHRleHQ6VCxocmVmOlAsdG9rZW5zOlt7dHlwZToidGV4dCIscmF3OlQsdGV4dDpUfV19fX0sei5pbmxpbmVUZXh0PWZ1bmN0aW9uKHksRCl7aWYoeT10aGlzLnJ1bGVzLmlubGluZS50ZXh0LmV4ZWMoeSkpcmV0dXJuIEQ9dGhpcy5sZXhlci5z''@;'; put 'put ''dGF0ZS5pblJhd0Jsb2NrP3RoaXMub3B0aW9ucy5zYW5pdGl6ZT90aGlzLm9wdGlvbnMuc2FuaXRpemVyP3RoaXMub3B0aW9ucy5zYW5pdGl6ZXIoeVswXSk6Zih5WzBdKTp5WzBdOmYodGhpcy5vcHRpb25zLnNtYXJ0eXBhbnRzP0QoeVswXSk6eVswXSkse3R5cGU6InRleHQiLHJhdzp5WzBd''@;'; put 'put ''LHRleHQ6RH19LCR9KCksQj17bmV3bGluZTovXig/OiAqKD86XG58JCkpKy8sY29kZTovXiggezR9W15cbl0rKD86XG4oPzogKig/OlxufCQpKSopPykrLyxmZW5jZXM6L14gezAsM30oYHszLH0oPz1bXmBcbl0qXG4pfH57Myx9KShbXlxuXSopXG4oPzp8KFtcc1xTXSo/KVxuKSg/OiB7MCwz''@;'; put 'put ''fVwxW35gXSogKig/PVxufCQpfCQpLyxocjovXiB7MCwzfSgoPzotW1x0IF0qKXszLH18KD86X1sgXHRdKil7Myx9fCg/OlwqWyBcdF0qKXszLH0pKD86XG4rfCQpLyxoZWFkaW5nOi9eIHswLDN9KCN7MSw2fSkoPz1cc3wkKSguKikoPzpcbit8JCkvLGJsb2NrcXVvdGU6L14oIHswLDN9PiA/''@;'; put 'put ''KHBhcmFncmFwaHxbXlxuXSopKD86XG58JCkpKy8sbGlzdDovXiggezAsM31idWxsKShbIFx0XVteXG5dKz8pPyg/OlxufCQpLyxodG1sOiJeIHswLDN9KD86PChzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhKVtcXHM+XVtcXHNcXFNdKj8oPzo8L1xcMT5bXlxcbl0qXFxuK3wkKXxjb21tZW50''@;'; put 'put ''W15cXG5dKihcXG4rfCQpfDxcXD9bXFxzXFxTXSo/KD86XFw/Plxcbip8JCl8PCFbQS1aXVtcXHNcXFNdKj8oPzo+XFxuKnwkKXw8IVxcW0NEQVRBXFxbW1xcc1xcU10qPyg/OlxcXVxcXT5cXG4qfCQpfDwvPyh0YWcpKD86ICt8XFxufC8/PilbXFxzXFxTXSo/KD86KD86XFxuICopK1xcbnwk''@;'; put 'put ''KXw8KD8hc2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYSkoW2Etel1bXFx3LV0qKSg/OmF0dHJpYnV0ZSkqPyAqLz8+KD89WyBcXHRdKig/OlxcbnwkKSlbXFxzXFxTXSo/KD86KD86XFxuICopK1xcbnwkKXw8Lyg/IXNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWEpW2Etel1bXFx3LV0qXFxzKj4o''@;'; put 'put ''Pz1bIFxcdF0qKD86XFxufCQpKVtcXHNcXFNdKj8oPzooPzpcXG4gKikrXFxufCQpKSIsZGVmOi9eIHswLDN9XFsobGFiZWwpXF06ICooPzpcbiAqKT88PyhbXlxzPl0rKT4/KD86KD86ICsoPzpcbiAqKT98ICpcbiAqKSh0aXRsZSkpPyAqKD86XG4rfCQpLyx0YWJsZTpjMSxsaGVhZGluZzov''@;'; put 'put ''XihbXlxuXSspXG4gezAsM30oPSt8LSspICooPzpcbit8JCkvLF9wYXJhZ3JhcGg6L14oW15cbl0rKD86XG4oPyFocnxoZWFkaW5nfGxoZWFkaW5nfGJsb2NrcXVvdGV8ZmVuY2VzfGxpc3R8aHRtbHx0YWJsZXwgK1xuKVteXG5dKykqKS8sdGV4dDovXlteXG5dKy8sX2xhYmVsOi8oPyFccypc''@;'; put 'put ''XSkoPzpcXC58W15cW1xdXFxdKSsvLF90aXRsZTovKD86Iig/OlxcIj98W14iXFxdKSoifCdbXidcbl0qKD86XG5bXidcbl0rKSpcbj8nfFwoW14oKV0qXCkpL30sUj0oQi5kZWY9dihCLmRlZikucmVwbGFjZSgibGFiZWwiLEIuX2xhYmVsKS5yZXBsYWNlKCJ0aXRsZSIsQi5fdGl0bGUpLmdl''@;'; put 'put ''dFJlZ2V4KCksQi5idWxsZXQ9Lyg/OlsqKy1dfFxkezEsOX1bLildKS8sQi5saXN0SXRlbVN0YXJ0PXYoL14oICopKGJ1bGwpICovKS5yZXBsYWNlKCJidWxsIixCLmJ1bGxldCkuZ2V0UmVnZXgoKSxCLmxpc3Q9dihCLmxpc3QpLnJlcGxhY2UoL2J1bGwvZyxCLmJ1bGxldCkucmVwbGFjZSgi''@;'; put 'put ''aHIiLCJcXG4rKD89XFwxPyg/Oig/Oi0gKil7Myx9fCg/Ol8gKil7Myx9fCg/OlxcKiAqKXszLH0pKD86XFxuK3wkKSkiKS5yZXBsYWNlKCJkZWYiLCJcXG4rKD89IitCLmRlZi5zb3VyY2UrIikiKS5nZXRSZWdleCgpLEIuX3RhZz0iYWRkcmVzc3xhcnRpY2xlfGFzaWRlfGJhc2V8YmFzZWZv''@;'; put 'put ''bnR8YmxvY2txdW90ZXxib2R5fGNhcHRpb258Y2VudGVyfGNvbHxjb2xncm91cHxkZHxkZXRhaWxzfGRpYWxvZ3xkaXJ8ZGl2fGRsfGR0fGZpZWxkc2V0fGZpZ2NhcHRpb258ZmlndXJlfGZvb3Rlcnxmb3JtfGZyYW1lfGZyYW1lc2V0fGhbMS02XXxoZWFkfGhlYWRlcnxocnxodG1sfGlmcmFt''@;'; put 'put ''ZXxsZWdlbmR8bGl8bGlua3xtYWlufG1lbnV8bWVudWl0ZW18bWV0YXxuYXZ8bm9mcmFtZXN8b2x8b3B0Z3JvdXB8b3B0aW9ufHB8cGFyYW18c2VjdGlvbnxzb3VyY2V8c3VtbWFyeXx0YWJsZXx0Ym9keXx0ZHx0Zm9vdHx0aHx0aGVhZHx0aXRsZXx0cnx0cmFja3x1bCIsQi5fY29tbWVudD0v''@;'; put 'put ''PCEtLSg/IS0/PilbXHNcU10qPyg/Oi0tPnwkKS8sQi5odG1sPXYoQi5odG1sLCJpIikucmVwbGFjZSgiY29tbWVudCIsQi5fY29tbWVudCkucmVwbGFjZSgidGFnIixCLl90YWcpLnJlcGxhY2UoImF0dHJpYnV0ZSIsLyArW2EtekEtWjpfXVtcdy46LV0qKD86ICo9ICoiW14iXG5dKiJ8ICo9''@;'; put 'put ''IConW14nXG5dKid8ICo9ICpbXlxzIic9PD5gXSspPy8pLmdldFJlZ2V4KCksQi5wYXJhZ3JhcGg9dihCLl9wYXJhZ3JhcGgpLnJlcGxhY2UoImhyIixCLmhyKS5yZXBsYWNlKCJoZWFkaW5nIiwiIHswLDN9I3sxLDZ9ICIpLnJlcGxhY2UoInxsaGVhZGluZyIsIiIpLnJlcGxhY2UoInx0YWJs''@;'; put 'put ''ZSIsIiIpLnJlcGxhY2UoImJsb2NrcXVvdGUiLCIgezAsM30+IikucmVwbGFjZSgiZmVuY2VzIiwiIHswLDN9KD86YHszLH0oPz1bXmBcXG5dKlxcbil8fnszLH0pW15cXG5dKlxcbiIpLnJlcGxhY2UoImxpc3QiLCIgezAsM30oPzpbKistXXwxWy4pXSkgIikucmVwbGFjZSgiaHRtbCIsIjwv''@;'; put 'put ''Pyg/OnRhZykoPzogK3xcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixCLl90YWcpLmdldFJlZ2V4KCksQi5ibG9ja3F1b3RlPXYoQi5ibG9ja3F1b3RlKS5yZXBsYWNlKCJwYXJhZ3JhcGgiLEIucGFyYWdyYXBoKS5nZXRSZWdleCgp''@;'; put 'put ''LEIubm9ybWFsPXgoe30sQiksQi5nZm09eCh7fSxCLm5vcm1hbCx7dGFibGU6Il4gKihbXlxcbiBdLipcXHwuKilcXG4gezAsM30oPzpcXHwgKik/KDo/LSs6PyAqKD86XFx8ICo6Py0rOj8gKikqKSg/OlxcfCAqKT8oPzpcXG4oKD86KD8hICpcXG58aHJ8aGVhZGluZ3xibG9ja3F1b3RlfGNv''@;'; put 'put ''ZGV8ZmVuY2VzfGxpc3R8aHRtbCkuKig/OlxcbnwkKSkqKVxcbip8JCkifSksQi5nZm0udGFibGU9dihCLmdmbS50YWJsZSkucmVwbGFjZSgiaHIiLEIuaHIpLnJlcGxhY2UoImhlYWRpbmciLCIgezAsM30jezEsNn0gIikucmVwbGFjZSgiYmxvY2txdW90ZSIsIiB7MCwzfT4iKS5yZXBsYWNl''@;'; put 'put ''KCJjb2RlIiwiIHs0fVteXFxuXSIpLnJlcGxhY2UoImZlbmNlcyIsIiB7MCwzfSg/OmB7Myx9KD89W15gXFxuXSpcXG4pfH57Myx9KVteXFxuXSpcXG4iKS5yZXBsYWNlKCJsaXN0IiwiIHswLDN9KD86WyorLV18MVsuKV0pICIpLnJlcGxhY2UoImh0bWwiLCI8Lz8oPzp0YWcpKD86ICt8XFxu''@;'; put 'put ''fC8/Pil8PCg/OnNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWF8IS0tKSIpLnJlcGxhY2UoInRhZyIsQi5fdGFnKS5nZXRSZWdleCgpLEIuZ2ZtLnBhcmFncmFwaD12KEIuX3BhcmFncmFwaCkucmVwbGFjZSgiaHIiLEIuaHIpLnJlcGxhY2UoImhlYWRpbmciLCIgezAsM30jezEsNn0gIikucmVw''@;'; put 'put ''bGFjZSgifGxoZWFkaW5nIiwiIikucmVwbGFjZSgidGFibGUiLEIuZ2ZtLnRhYmxlKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoImZlbmNlcyIsIiB7MCwzfSg/OmB7Myx9KD89W15gXFxuXSpcXG4pfH57Myx9KVteXFxuXSpcXG4iKS5yZXBsYWNlKCJsaXN0Iiwi''@;'; put 'put ''IHswLDN9KD86WyorLV18MVsuKV0pICIpLnJlcGxhY2UoImh0bWwiLCI8Lz8oPzp0YWcpKD86ICt8XFxufC8/Pil8PCg/OnNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWF8IS0tKSIpLnJlcGxhY2UoInRhZyIsQi5fdGFnKS5nZXRSZWdleCgpLEIucGVkYW50aWM9eCh7fSxCLm5vcm1hbCx7aHRt''@;'; put 'put ''bDp2KCJeICooPzpjb21tZW50ICooPzpcXG58XFxzKiQpfDwodGFnKVtcXHNcXFNdKz88L1xcMT4gKig/OlxcbnsyLH18XFxzKiQpfDx0YWcoPzpcIlteXCJdKlwifCdbXiddKid8XFxzW14nXCIvPlxcc10qKSo/Lz8+ICooPzpcXG57Mix9fFxccyokKSkiKS5yZXBsYWNlKCJjb21tZW50IixC''@;'; put 'put ''Ll9jb21tZW50KS5yZXBsYWNlKC90YWcvZywiKD8hKD86YXxlbXxzdHJvbmd8c21hbGx8c3xjaXRlfHF8ZGZufGFiYnJ8ZGF0YXx0aW1lfGNvZGV8dmFyfHNhbXB8a2JkfHN1YnxzdXB8aXxifHV8bWFya3xydWJ5fHJ0fHJwfGJkaXxiZG98c3Bhbnxicnx3YnJ8aW5zfGRlbHxpbWcpXFxiKVxc''@;'; put 'put ''dysoPyE6fFteXFx3XFxzQF0qQClcXGIiKS5nZXRSZWdleCgpLGRlZjovXiAqXFsoW15cXV0rKVxdOiAqPD8oW15ccz5dKyk+Pyg/OiArKFsiKF1bXlxuXStbIildKSk/ICooPzpcbit8JCkvLGhlYWRpbmc6L14oI3sxLDZ9KSguKikoPzpcbit8JCkvLGZlbmNlczpjMSxwYXJhZ3JhcGg6dihC''@;'; put 'put ''Lm5vcm1hbC5fcGFyYWdyYXBoKS5yZXBsYWNlKCJociIsQi5ocikucmVwbGFjZSgiaGVhZGluZyIsIiAqI3sxLDZ9ICpbXlxuXSIpLnJlcGxhY2UoImxoZWFkaW5nIixCLmxoZWFkaW5nKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoInxmZW5jZXMiLCIiKS5yZXBs''@;'; put 'put ''YWNlKCJ8bGlzdCIsIiIpLnJlcGxhY2UoInxodG1sIiwiIikuZ2V0UmVnZXgoKX0pLHtlc2NhcGU6L15cXChbISIjJCUmJygpKissXC0uLzo7PD0+P0BcW1xdXFxeX2B7fH1+XSkvLGF1dG9saW5rOi9ePChzY2hlbWU6W15cc1x4MDAtXHgxZjw+XSp8ZW1haWwpPi8sdXJsOmMxLHRhZzoiXmNv''@;'; put 'put ''bW1lbnR8XjwvW2EtekEtWl1bXFx3Oi1dKlxccyo+fF48W2EtekEtWl1bXFx3LV0qKD86YXR0cmlidXRlKSo/XFxzKi8/PnxePFxcP1tcXHNcXFNdKj9cXD8+fF48IVthLXpBLVpdK1xcc1tcXHNcXFNdKj8+fF48IVxcW0NEQVRBXFxbW1xcc1xcU10qP1xcXVxcXT4iLGxpbms6L14hP1xbKGxh''@;'; put 'put ''YmVsKVxdXChccyooaHJlZikoPzpccysodGl0bGUpKT9ccypcKS8scmVmbGluazovXiE/XFsobGFiZWwpXF1cWyhyZWYpXF0vLG5vbGluazovXiE/XFsocmVmKVxdKD86XFtcXSk/LyxyZWZsaW5rU2VhcmNoOiJyZWZsaW5rfG5vbGluayg/IVxcKCkiLGVtU3Ryb25nOntsRGVsaW06L14oPzpc''@;'; put 'put ''KisoPzooW3B1bmN0X10pfFteXHMqXSkpfF5fKyg/OihbcHVuY3QqXSl8KFteXHNfXSkpLyxyRGVsaW1Bc3Q6L15bXl8qXSo/XF9cX1teXypdKj9cKlteXypdKj8oPz1cX1xfKXxbXipdKyg/PVteKl0pfFtwdW5jdF9dKFwqKykoPz1bXHNdfCQpfFtecHVuY3QqX1xzXShcKispKD89W3B1bmN0''@;'; put 'put ''X1xzXXwkKXxbcHVuY3RfXHNdKFwqKykoPz1bXnB1bmN0Kl9cc10pfFtcc10oXCorKSg/PVtwdW5jdF9dKXxbcHVuY3RfXShcKispKD89W3B1bmN0X10pfFtecHVuY3QqX1xzXShcKispKD89W15wdW5jdCpfXHNdKS8sckRlbGltVW5kOi9eW15fKl0qP1wqXCpbXl8qXSo/XF9bXl8qXSo/KD89''@;'; put 'put ''XCpcKil8W15fXSsoPz1bXl9dKXxbcHVuY3QqXShcXyspKD89W1xzXXwkKXxbXnB1bmN0Kl9cc10oXF8rKSg/PVtwdW5jdCpcc118JCl8W3B1bmN0KlxzXShcXyspKD89W15wdW5jdCpfXHNdKXxbXHNdKFxfKykoPz1bcHVuY3QqXSl8W3B1bmN0Kl0oXF8rKSg/PVtwdW5jdCpdKS99LGNvZGU6''@;'; put 'put ''L14oYCspKFteYF18W15gXVtcc1xTXSo/W15gXSlcMSg/IWApLyxicjovXiggezIsfXxcXClcbig/IVxzKiQpLyxkZWw6YzEsdGV4dDovXihgK3xbXmBdKSg/Oig/PSB7Mix9XG4pfFtcc1xTXSo/KD86KD89W1xcPCFcW2AqX118XGJffCQpfFteIF0oPz0gezIsfVxuKSkpLyxwdW5jdHVhdGlv''@;'; put 'put ''bjovXihbXHNwdW5jdHVhdGlvbl0pL30pO2Z1bmN0aW9uIGwxKCQpe3JldHVybiAkLnJlcGxhY2UoLy0tLS9nLCJcdTIwMTQiKS5yZXBsYWNlKC8tLS9nLCJcdTIwMTMiKS5yZXBsYWNlKC8oXnxbLVx1MjAxNC8oXFt7IlxzXSknL2csIiQxXHUyMDE4IikucmVwbGFjZSgvJy9nLCJcdTIwMTki''@;'; put 'put ''KS5yZXBsYWNlKC8oXnxbLVx1MjAxNC8oXFt7XHUyMDE4XHNdKSIvZywiJDFcdTIwMWMiKS5yZXBsYWNlKC8iL2csIlx1MjAxZCIpLnJlcGxhY2UoL1wuezN9L2csIlx1MjAyNiIpfWZ1bmN0aW9uIGExKCQpe2Zvcih2YXIgeix5PSIiLEQ9JC5sZW5ndGgsWj0wO1o8RDtaKyspej0kLmNoYXJD''@;'; put 'put ''b2RlQXQoWikseSs9IiYjIisoej0uNTxNYXRoLnJhbmRvbSgpPyJ4Iit6LnRvU3RyaW5nKDE2KTp6KSsiOyI7cmV0dXJuIHl9Ui5fcHVuY3R1YXRpb249IiFcIiMkJSYnKCkrXFwtLiwvOjs8PT4/QFxcW1xcXWBee3x9fiIsUi5wdW5jdHVhdGlvbj12KFIucHVuY3R1YXRpb24pLnJlcGxhY2Uo''@;'; put 'put ''L3B1bmN0dWF0aW9uL2csUi5fcHVuY3R1YXRpb24pLmdldFJlZ2V4KCksUi5ibG9ja1NraXA9L1xbW15cXV0qP1xdXChbXlwpXSo/XCl8YFteYF0qP2B8PFtePl0qPz4vZyxSLmVzY2FwZWRFbVN0PS9cXFwqfFxcXy9nLFIuX2NvbW1lbnQ9dihCLl9jb21tZW50KS5yZXBsYWNlKCIoPzotLVx4''@;'; put 'put ''M2V8JCkiLCItLVx4M2UiKS5nZXRSZWdleCgpLFIuZW1TdHJvbmcubERlbGltPXYoUi5lbVN0cm9uZy5sRGVsaW0pLnJlcGxhY2UoL3B1bmN0L2csUi5fcHVuY3R1YXRpb24pLmdldFJlZ2V4KCksUi5lbVN0cm9uZy5yRGVsaW1Bc3Q9dihSLmVtU3Ryb25nLnJEZWxpbUFzdCwiZyIpLnJlcGxh''@;'; put 'put ''Y2UoL3B1bmN0L2csUi5fcHVuY3R1YXRpb24pLmdldFJlZ2V4KCksUi5lbVN0cm9uZy5yRGVsaW1VbmQ9dihSLmVtU3Ryb25nLnJEZWxpbVVuZCwiZyIpLnJlcGxhY2UoL3B1bmN0L2csUi5fcHVuY3R1YXRpb24pLmdldFJlZ2V4KCksUi5fZXNjYXBlcz0vXFwoWyEiIyQlJicoKSorLFwtLi86''@;'; put 'put ''Ozw9Pj9AXFtcXVxcXl9ge3x9fl0pL2csUi5fc2NoZW1lPS9bYS16QS1aXVthLXpBLVowLTkrLi1dezEsMzF9LyxSLl9lbWFpbD0vW2EtekEtWjAtOS4hIyQlJicqKy89P15fYHt8fX4tXSsoQClbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcLlthLXpB''@;'; put 'put ''LVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykrKD8hWy1fXSkvLFIuYXV0b2xpbms9dihSLmF1dG9saW5rKS5yZXBsYWNlKCJzY2hlbWUiLFIuX3NjaGVtZSkucmVwbGFjZSgiZW1haWwiLFIuX2VtYWlsKS5nZXRSZWdleCgpLFIuX2F0dHJpYnV0ZT0vXHMrW2EtekEt''@;'; put 'put ''WjpfXVtcdy46LV0qKD86XHMqPVxzKiJbXiJdKiJ8XHMqPVxzKidbXiddKid8XHMqPVxzKlteXHMiJz08PmBdKyk/LyxSLnRhZz12KFIudGFnKS5yZXBsYWNlKCJjb21tZW50IixSLl9jb21tZW50KS5yZXBsYWNlKCJhdHRyaWJ1dGUiLFIuX2F0dHJpYnV0ZSkuZ2V0UmVnZXgoKSxSLl9sYWJl''@;'; put 'put ''bD0vKD86XFsoPzpcXC58W15cW1xdXFxdKSpcXXxcXC58YFteYF0qYHxbXlxbXF1cXGBdKSo/LyxSLl9ocmVmPS88KD86XFwufFteXG48PlxcXSkrPnxbXlxzXHgwMC1ceDFmXSovLFIuX3RpdGxlPS8iKD86XFwiP3xbXiJcXF0pKiJ8Jyg/OlxcJz98W14nXFxdKSonfFwoKD86XFxcKT98W14p''@;'; put 'put ''XFxdKSpcKS8sUi5saW5rPXYoUi5saW5rKS5yZXBsYWNlKCJsYWJlbCIsUi5fbGFiZWwpLnJlcGxhY2UoImhyZWYiLFIuX2hyZWYpLnJlcGxhY2UoInRpdGxlIixSLl90aXRsZSkuZ2V0UmVnZXgoKSxSLnJlZmxpbms9dihSLnJlZmxpbmspLnJlcGxhY2UoImxhYmVsIixSLl9sYWJlbCkucmVw''@;'; put 'put ''bGFjZSgicmVmIixCLl9sYWJlbCkuZ2V0UmVnZXgoKSxSLm5vbGluaz12KFIubm9saW5rKS5yZXBsYWNlKCJyZWYiLEIuX2xhYmVsKS5nZXRSZWdleCgpLFIucmVmbGlua1NlYXJjaD12KFIucmVmbGlua1NlYXJjaCwiZyIpLnJlcGxhY2UoInJlZmxpbmsiLFIucmVmbGluaykucmVwbGFjZSgi''@;'; put 'put ''bm9saW5rIixSLm5vbGluaykuZ2V0UmVnZXgoKSxSLm5vcm1hbD14KHt9LFIpLFIucGVkYW50aWM9eCh7fSxSLm5vcm1hbCx7c3Ryb25nOntzdGFydDovXl9ffFwqXCovLG1pZGRsZTovXl9fKD89XFMpKFtcc1xTXSo/XFMpX18oPyFfKXxeXCpcKig/PVxTKShbXHNcU10qP1xTKVwqXCooPyFc''@;'; put 'put ''KikvLGVuZEFzdDovXCpcKig/IVwqKS9nLGVuZFVuZDovX18oPyFfKS9nfSxlbTp7c3RhcnQ6L15ffFwqLyxtaWRkbGU6L14oKVwqKD89XFMpKFtcc1xTXSo/XFMpXCooPyFcKil8Xl8oPz1cUykoW1xzXFNdKj9cUylfKD8hXykvLGVuZEFzdDovXCooPyFcKikvZyxlbmRVbmQ6L18oPyFfKS9n''@;'; put 'put ''fSxsaW5rOnYoL14hP1xbKGxhYmVsKVxdXCgoLio/KVwpLykucmVwbGFjZSgibGFiZWwiLFIuX2xhYmVsKS5nZXRSZWdleCgpLHJlZmxpbms6digvXiE/XFsobGFiZWwpXF1ccypcWyhbXlxdXSopXF0vKS5yZXBsYWNlKCJsYWJlbCIsUi5fbGFiZWwpLmdldFJlZ2V4KCl9KSxSLmdmbT14KHt9''@;'; put 'put ''LFIubm9ybWFsLHtlc2NhcGU6dihSLmVzY2FwZSkucmVwbGFjZSgiXSkiLCJ+fF0pIikuZ2V0UmVnZXgoKSxfZXh0ZW5kZWRfZW1haWw6L1tBLVphLXowLTkuXystXSsoQClbYS16QS1aMC05LV9dKyg/OlwuW2EtekEtWjAtOS1fXSpbYS16QS1aMC05XSkrKD8hWy1fXSkvLHVybDovXigoPzpm''@;'; put 'put ''dHB8aHR0cHM/KTpcL1wvfHd3d1wuKSg/OlthLXpBLVowLTlcLV0rXC4/KStbXlxzPF0qfF5lbWFpbC8sX2JhY2twZWRhbDovKD86W14/IS4sOjsqX34oKSZdK3xcKFteKV0qXCl8Jig/IVthLXpBLVowLTldKzskKXxbPyEuLDo7Kl9+KV0rKD8hJCkpKy8sZGVsOi9eKH5+PykoPz1bXlxzfl0p''@;'; put 'put ''KFtcc1xTXSo/W15cc35dKVwxKD89W15+XXwkKS8sdGV4dDovXihbYH5dK3xbXmB+XSkoPzooPz0gezIsfVxuKXwoPz1bYS16QS1aMC05LiEjJCUmJyorXC89P19ge1x8fX4tXStAKXxbXHNcU10qPyg/Oig/PVtcXDwhXFtgKn5fXXxcYl98aHR0cHM/OlwvXC98ZnRwOlwvXC98d3d3XC58JCl8''@;'; put 'put ''W14gXSg/PSB7Mix9XG4pfFteYS16QS1aMC05LiEjJCUmJyorXC89P19ge1x8fX4tXSg/PVthLXpBLVowLTkuISMkJSYnKitcLz0/X2B7XHx9fi1dK0ApKSkvfSksUi5nZm0udXJsPXYoUi5nZm0udXJsLCJpIikucmVwbGFjZSgiZW1haWwiLFIuZ2ZtLl9leHRlbmRlZF9lbWFpbCkuZ2V0UmVn''@;'; put 'put ''ZXgoKSxSLmJyZWFrcz14KHt9LFIuZ2ZtLHticjp2KFIuYnIpLnJlcGxhY2UoInsyLH0iLCIqIikuZ2V0UmVnZXgoKSx0ZXh0OnYoUi5nZm0udGV4dCkucmVwbGFjZSgiXFxiXyIsIlxcYl98IHsyLH1cXG4iKS5yZXBsYWNlKC9cezIsXH0vZywiKiIpLmdldFJlZ2V4KCl9KTt2YXIgaDE9ZnVu''@;'; put 'put ''Y3Rpb24oKXtmdW5jdGlvbiAkKFope3RoaXMudG9rZW5zPVtdLHRoaXMudG9rZW5zLmxpbmtzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5vcHRpb25zPVp8fFguZGVmYXVsdHMsdGhpcy5vcHRpb25zLnRva2VuaXplcj10aGlzLm9wdGlvbnMudG9rZW5pemVyfHxuZXcgTyx0aGlzLnRva2Vu''@;'; put 'put ''aXplcj10aGlzLm9wdGlvbnMudG9rZW5pemVyLHRoaXMudG9rZW5pemVyLm9wdGlvbnM9dGhpcy5vcHRpb25zLCh0aGlzLnRva2VuaXplci5sZXhlcj10aGlzKS5pbmxpbmVRdWV1ZT1bXSx0aGlzLnN0YXRlPXtpbkxpbms6ITEsaW5SYXdCbG9jazohMSx0b3A6ITB9LFo9e2Jsb2NrOkIubm9y''@;'; put 'put ''bWFsLGlubGluZTpSLm5vcm1hbH0sdGhpcy5vcHRpb25zLnBlZGFudGljPyhaLmJsb2NrPUIucGVkYW50aWMsWi5pbmxpbmU9Ui5wZWRhbnRpYyk6dGhpcy5vcHRpb25zLmdmbSYmKFouYmxvY2s9Qi5nZm0sWi5pbmxpbmU9dGhpcy5vcHRpb25zLmJyZWFrcz9SLmJyZWFrczpSLmdmbSksdGhp''@;'; put 'put ''cy50b2tlbml6ZXIucnVsZXM9Wn0kLmxleD1mdW5jdGlvbihaLFQpe3JldHVybiBuZXcgJChUKS5sZXgoWil9LCQubGV4SW5saW5lPWZ1bmN0aW9uKFosVCl7cmV0dXJuIG5ldyAkKFQpLmlubGluZVRva2VucyhaKX07dmFyIHksRD0kLnByb3RvdHlwZTtyZXR1cm4gRC5sZXg9ZnVuY3Rpb24o''@;'; put 'put ''Wil7dmFyIFQ7Zm9yKFo9Wi5yZXBsYWNlKC9cclxufFxyL2csIlxuIiksdGhpcy5ibG9ja1Rva2VucyhaLHRoaXMudG9rZW5zKTtUPXRoaXMuaW5saW5lUXVldWUuc2hpZnQoKTspdGhpcy5pbmxpbmVUb2tlbnMoVC5zcmMsVC50b2tlbnMpO3JldHVybiB0aGlzLnRva2Vuc30sRC5ibG9ja1Rv''@;'; put 'put ''a2Vucz1mdW5jdGlvbihaLFQpe3ZhciBQLGUxLHIxLFoxLFk9dGhpcztmb3Iodm9pZCAwPT09VCYmKFQ9W10pLFo9dGhpcy5vcHRpb25zLnBlZGFudGljP1oucmVwbGFjZSgvXHQvZywiICAgICIpLnJlcGxhY2UoL14gKyQvZ20sIiIpOloucmVwbGFjZSgvXiggKikoXHQrKS9nbSxmdW5jdGlv''@;'; put 'put ''bihKLEExLE4xKXtyZXR1cm4gQTErIiAgICAiLnJlcGVhdChOMS5sZW5ndGgpfSk7WjspaWYoISh0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuYmxvY2smJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLmJsb2NrLnNvbWUoZnVuY3Rpb24oSil7cmV0dXJu''@;'; put 'put ''ISEoUD1KLmNhbGwoe2xleGVyOll9LFosVCkpJiYoWj1aLnN1YnN0cmluZyhQLnJhdy5sZW5ndGgpLFQucHVzaChQKSwhMCl9KSkpaWYoUD10aGlzLnRva2VuaXplci5zcGFjZShaKSlaPVouc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksMT09PVAucmF3Lmxlbmd0aCYmMDxULmxlbmd0aD9UW1Qu''@;'; put 'put ''bGVuZ3RoLTFdLnJhdys9IlxuIjpULnB1c2goUCk7ZWxzZSBpZihQPXRoaXMudG9rZW5pemVyLmNvZGUoWikpWj1aLnN1YnN0cmluZyhQLnJhdy5sZW5ndGgpLCEoZTE9VFtULmxlbmd0aC0xXSl8fCJwYXJhZ3JhcGgiIT09ZTEudHlwZSYmInRleHQiIT09ZTEudHlwZT9ULnB1c2goUCk6KGUx''@;'; put 'put ''LnJhdys9IlxuIitQLnJhdyxlMS50ZXh0Kz0iXG4iK1AudGV4dCx0aGlzLmlubGluZVF1ZXVlW3RoaXMuaW5saW5lUXVldWUubGVuZ3RoLTFdLnNyYz1lMS50ZXh0KTtlbHNlIGlmKFA9dGhpcy50b2tlbml6ZXIuZmVuY2VzKFopKVo9Wi5zdWJzdHJpbmcoUC5yYXcubGVuZ3RoKSxULnB1c2go''@;'; put 'put ''UCk7ZWxzZSBpZihQPXRoaXMudG9rZW5pemVyLmhlYWRpbmcoWikpWj1aLnN1YnN0cmluZyhQLnJhdy5sZW5ndGgpLFQucHVzaChQKTtlbHNlIGlmKFA9dGhpcy50b2tlbml6ZXIuaHIoWikpWj1aLnN1YnN0cmluZyhQLnJhdy5sZW5ndGgpLFQucHVzaChQKTtlbHNlIGlmKFA9dGhpcy50b2tl''@;'; put 'put ''bml6ZXIuYmxvY2txdW90ZShaKSlaPVouc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksVC5wdXNoKFApO2Vsc2UgaWYoUD10aGlzLnRva2VuaXplci5saXN0KFopKVo9Wi5zdWJzdHJpbmcoUC5yYXcubGVuZ3RoKSxULnB1c2goUCk7ZWxzZSBpZihQPXRoaXMudG9rZW5pemVyLmh0bWwoWikpWj1a''@;'; put 'put ''LnN1YnN0cmluZyhQLnJhdy5sZW5ndGgpLFQucHVzaChQKTtlbHNlIGlmKFA9dGhpcy50b2tlbml6ZXIuZGVmKFopKVo9Wi5zdWJzdHJpbmcoUC5yYXcubGVuZ3RoKSwhKGUxPVRbVC5sZW5ndGgtMV0pfHwicGFyYWdyYXBoIiE9PWUxLnR5cGUmJiJ0ZXh0IiE9PWUxLnR5cGU/dGhpcy50b2tl''@;'; put 'put ''bnMubGlua3NbUC50YWddfHwodGhpcy50b2tlbnMubGlua3NbUC50YWddPXtocmVmOlAuaHJlZix0aXRsZTpQLnRpdGxlfSk6KGUxLnJhdys9IlxuIitQLnJhdyxlMS50ZXh0Kz0iXG4iK1AucmF3LHRoaXMuaW5saW5lUXVldWVbdGhpcy5pbmxpbmVRdWV1ZS5sZW5ndGgtMV0uc3JjPWUxLnRl''@;'; put 'put ''eHQpO2Vsc2UgaWYoUD10aGlzLnRva2VuaXplci50YWJsZShaKSlaPVouc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksVC5wdXNoKFApO2Vsc2UgaWYoUD10aGlzLnRva2VuaXplci5saGVhZGluZyhaKSlaPVouc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksVC5wdXNoKFApO2Vsc2UgaWYocjE9Wix0''@;'; put 'put ''aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuc3RhcnRCbG9jayYmZnVuY3Rpb24oKXt2YXIgSj0xLzAsQTE9Wi5zbGljZSgxKSxOMT12b2lkIDA7WS5vcHRpb25zLmV4dGVuc2lvbnMuc3RhcnRCbG9jay5mb3JFYWNoKGZ1bmN0aW9uKFMxKXsibnVtYmVy''@;'; put 'put ''Ij09dHlwZW9mKE4xPVMxLmNhbGwoe2xleGVyOnRoaXN9LEExKSkmJjA8PU4xJiYoSj1NYXRoLm1pbihKLE4xKSl9KSxKPDEvMCYmMDw9SiYmKHIxPVouc3Vic3RyaW5nKDAsSisxKSl9KCksdGhpcy5zdGF0ZS50b3AmJihQPXRoaXMudG9rZW5pemVyLnBhcmFncmFwaChyMSkpKWUxPVRbVC5s''@;'; put 'put ''ZW5ndGgtMV0sWjEmJiJwYXJhZ3JhcGgiPT09ZTEudHlwZT8oZTEucmF3Kz0iXG4iK1AucmF3LGUxLnRleHQrPSJcbiIrUC50ZXh0LHRoaXMuaW5saW5lUXVldWUucG9wKCksdGhpcy5pbmxpbmVRdWV1ZVt0aGlzLmlubGluZVF1ZXVlLmxlbmd0aC0xXS5zcmM9ZTEudGV4dCk6VC5wdXNoKFAp''@;'; put 'put ''LFoxPXIxLmxlbmd0aCE9PVoubGVuZ3RoLFo9Wi5zdWJzdHJpbmcoUC5yYXcubGVuZ3RoKTtlbHNlIGlmKFA9dGhpcy50b2tlbml6ZXIudGV4dChaKSlaPVouc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksKGUxPVRbVC5sZW5ndGgtMV0pJiYidGV4dCI9PT1lMS50eXBlPyhlMS5yYXcrPSJcbiIr''@;'; put 'put ''UC5yYXcsZTEudGV4dCs9IlxuIitQLnRleHQsdGhpcy5pbmxpbmVRdWV1ZS5wb3AoKSx0aGlzLmlubGluZVF1ZXVlW3RoaXMuaW5saW5lUXVldWUubGVuZ3RoLTFdLnNyYz1lMS50ZXh0KTpULnB1c2goUCk7ZWxzZSBpZihaKXt2YXIgcT0iSW5maW5pdGUgbG9vcCBvbiBieXRlOiAiK1ouY2hh''@;'; put 'put ''ckNvZGVBdCgwKTtpZih0aGlzLm9wdGlvbnMuc2lsZW50KXtjb25zb2xlLmVycm9yKHEpO2JyZWFrfXRocm93IG5ldyBFcnJvcihxKX1yZXR1cm4gdGhpcy5zdGF0ZS50b3A9ITAsVH0sRC5pbmxpbmU9ZnVuY3Rpb24oWixUKXt0aGlzLmlubGluZVF1ZXVlLnB1c2goe3NyYzpaLHRva2VuczpU''@;'; put 'put ''fSl9LEQuaW5saW5lVG9rZW5zPWZ1bmN0aW9uKFosVCl7dmFyIFAsZTEscjEsWjEsWSxxLEo9dGhpcyxBMT0odm9pZCAwPT09VCYmKFQ9W10pLFopO2lmKHRoaXMudG9rZW5zLmxpbmtzKXt2YXIgTjE9T2JqZWN0LmtleXModGhpcy50b2tlbnMubGlua3MpO2lmKDA8TjEubGVuZ3RoKWZvcig7''@;'; put 'put ''bnVsbCE9KFoxPXRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5yZWZsaW5rU2VhcmNoLmV4ZWMoQTEpKTspTjEuaW5jbHVkZXMoWjFbMF0uc2xpY2UoWjFbMF0ubGFzdEluZGV4T2YoIlsiKSsxLC0xKSkmJihBMT1BMS5zbGljZSgwLFoxLmluZGV4KSsiWyIrSSgiYSIsWjFbMF0ubGVuZ3Ro''@;'; put 'put ''LTIpKyJdIitBMS5zbGljZSh0aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUucmVmbGlua1NlYXJjaC5sYXN0SW5kZXgpKX1mb3IoO251bGwhPShaMT10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuYmxvY2tTa2lwLmV4ZWMoQTEpKTspQTE9QTEuc2xpY2UoMCxaMS5pbmRleCkrIlsiK0ko''@;'; put 'put ''ImEiLFoxWzBdLmxlbmd0aC0yKSsiXSIrQTEuc2xpY2UodGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLmJsb2NrU2tpcC5sYXN0SW5kZXgpO2Zvcig7bnVsbCE9KFoxPXRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5lc2NhcGVkRW1TdC5leGVjKEExKSk7KUExPUExLnNsaWNlKDAsWjEu''@;'; put 'put ''aW5kZXgpKyIrKyIrQTEuc2xpY2UodGhpcy50b2tlbml6ZXIucnVsZXMuaW5saW5lLmVzY2FwZWRFbVN0Lmxhc3RJbmRleCk7Zm9yKDtaOylpZihZfHwocT0iIiksWT0hMSwhKHRoaXMub3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5pbmxpbmUmJnRoaXMub3B0''@;'; put 'put ''aW9ucy5leHRlbnNpb25zLmlubGluZS5zb21lKGZ1bmN0aW9uKG4xKXtyZXR1cm4hIShQPW4xLmNhbGwoe2xleGVyOkp9LFosVCkpJiYoWj1aLnN1YnN0cmluZyhQLnJhdy5sZW5ndGgpLFQucHVzaChQKSwhMCl9KSkpaWYoUD10aGlzLnRva2VuaXplci5lc2NhcGUoWikpWj1aLnN1YnN0cmlu''@;'; put 'put ''ZyhQLnJhdy5sZW5ndGgpLFQucHVzaChQKTtlbHNlIGlmKFA9dGhpcy50b2tlbml6ZXIudGFnKFopKVo9Wi5zdWJzdHJpbmcoUC5yYXcubGVuZ3RoKSwoZTE9VFtULmxlbmd0aC0xXSkmJiJ0ZXh0Ij09PVAudHlwZSYmInRleHQiPT09ZTEudHlwZT8oZTEucmF3Kz1QLnJhdyxlMS50ZXh0Kz1Q''@;'; put 'put ''LnRleHQpOlQucHVzaChQKTtlbHNlIGlmKFA9dGhpcy50b2tlbml6ZXIubGluayhaKSlaPVouc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksVC5wdXNoKFApO2Vsc2UgaWYoUD10aGlzLnRva2VuaXplci5yZWZsaW5rKFosdGhpcy50b2tlbnMubGlua3MpKVo9Wi5zdWJzdHJpbmcoUC5yYXcubGVu''@;'; put 'put ''Z3RoKSwoZTE9VFtULmxlbmd0aC0xXSkmJiJ0ZXh0Ij09PVAudHlwZSYmInRleHQiPT09ZTEudHlwZT8oZTEucmF3Kz1QLnJhdyxlMS50ZXh0Kz1QLnRleHQpOlQucHVzaChQKTtlbHNlIGlmKFA9dGhpcy50b2tlbml6ZXIuZW1TdHJvbmcoWixBMSxxKSlaPVouc3Vic3RyaW5nKFAucmF3Lmxl''@;'; put 'put ''bmd0aCksVC5wdXNoKFApO2Vsc2UgaWYoUD10aGlzLnRva2VuaXplci5jb2Rlc3BhbihaKSlaPVouc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksVC5wdXNoKFApO2Vsc2UgaWYoUD10aGlzLnRva2VuaXplci5icihaKSlaPVouc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksVC5wdXNoKFApO2Vsc2Ug''@;'; put 'put ''aWYoUD10aGlzLnRva2VuaXplci5kZWwoWikpWj1aLnN1YnN0cmluZyhQLnJhdy5sZW5ndGgpLFQucHVzaChQKTtlbHNlIGlmKFA9dGhpcy50b2tlbml6ZXIuYXV0b2xpbmsoWixhMSkpWj1aLnN1YnN0cmluZyhQLnJhdy5sZW5ndGgpLFQucHVzaChQKTtlbHNlIGlmKCF0aGlzLnN0YXRlLmlu''@;'; put 'put ''TGluayYmKFA9dGhpcy50b2tlbml6ZXIudXJsKFosYTEpKSlaPVouc3Vic3RyaW5nKFAucmF3Lmxlbmd0aCksVC5wdXNoKFApO2Vsc2UgaWYocjE9Wix0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuc3RhcnRJbmxpbmUmJmZ1bmN0aW9uKCl7dmFyIG4x''@;'; put 'put ''PTEvMCxpMT1aLnNsaWNlKDEpLGYxPXZvaWQgMDtKLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydElubGluZS5mb3JFYWNoKGZ1bmN0aW9uKHgxKXsibnVtYmVyIj09dHlwZW9mKGYxPXgxLmNhbGwoe2xleGVyOnRoaXN9LGkxKSkmJjA8PWYxJiYobjE9TWF0aC5taW4objEsZjEpKX0pLG4xPDEv''@;'; put 'put ''MCYmMDw9bjEmJihyMT1aLnN1YnN0cmluZygwLG4xKzEpKX0oKSxQPXRoaXMudG9rZW5pemVyLmlubGluZVRleHQocjEsbDEpKVo9Wi5zdWJzdHJpbmcoUC5yYXcubGVuZ3RoKSwiXyIhPT1QLnJhdy5zbGljZSgtMSkmJihxPVAucmF3LnNsaWNlKC0xKSksWT0hMCwoZTE9VFtULmxlbmd0aC0x''@;'; put 'put ''XSkmJiJ0ZXh0Ij09PWUxLnR5cGU/KGUxLnJhdys9UC5yYXcsZTEudGV4dCs9UC50ZXh0KTpULnB1c2goUCk7ZWxzZSBpZihaKXt2YXIgUzE9IkluZmluaXRlIGxvb3Agb24gYnl0ZTogIitaLmNoYXJDb2RlQXQoMCk7aWYodGhpcy5vcHRpb25zLnNpbGVudCl7Y29uc29sZS5lcnJvcihTMSk7''@;'; put 'put ''YnJlYWt9dGhyb3cgbmV3IEVycm9yKFMxKX1yZXR1cm4gVH0sRD0kLCh5PVt7a2V5OiJydWxlcyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue2Jsb2NrOkIsaW5saW5lOlJ9fX1dKSYmRjEoRCx5KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSwkfSgp''@;'; put 'put ''LHUxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gJCh5KXt0aGlzLm9wdGlvbnM9eXx8WC5kZWZhdWx0c312YXIgej0kLnByb3RvdHlwZTtyZXR1cm4gei5jb2RlPWZ1bmN0aW9uKHksUCxaKXt2YXIgVDtyZXR1cm4gUD0oUHx8IiIpLm1hdGNoKC9cUyovKVswXSx0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0''@;'; put 'put ''JiZudWxsIT0oVD10aGlzLm9wdGlvbnMuaGlnaGxpZ2h0KHksUCkpJiZUIT09eSYmKFo9ITAseT1UKSx5PXkucmVwbGFjZSgvXG4kLywiIikrIlxuIixQPyc8cHJlPjxjb2RlIGNsYXNzPSInK3RoaXMub3B0aW9ucy5sYW5nUHJlZml4K2YoUCwhMCkrJyI+JysoWj95OmYoeSwhMCkpKyI8L2Nv''@;'; put 'put ''ZGU+PC9wcmU+XG4iOiI8cHJlPjxjb2RlPiIrKFo/eTpmKHksITApKSsiPC9jb2RlPjwvcHJlPlxuIn0sei5ibG9ja3F1b3RlPWZ1bmN0aW9uKHkpe3JldHVybiI8YmxvY2txdW90ZT5cbiIreSsiPC9ibG9ja3F1b3RlPlxuIn0sei5odG1sPWZ1bmN0aW9uKHkpe3JldHVybiB5fSx6LmhlYWRp''@;'; put 'put ''bmc9ZnVuY3Rpb24oeSxELFosVCl7cmV0dXJuIHRoaXMub3B0aW9ucy5oZWFkZXJJZHM/IjxoIitEKycgaWQ9IicrKHRoaXMub3B0aW9ucy5oZWFkZXJQcmVmaXgrVC5zbHVnKFopKSsnIj4nK3krIjwvaCIrRCsiPlxuIjoiPGgiK0QrIj4iK3krIjwvaCIrRCsiPlxuIn0sei5ocj1mdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiB0aGlzLm9wdGlvbnMueGh0bWw/Ijxoci8+XG4iOiI8aHI+XG4ifSx6Lmxpc3Q9ZnVuY3Rpb24oeSxELFope3ZhciBUPUQ/Im9sIjoidWwiO3JldHVybiI8IitUKyhEJiYxIT09Wj8nIHN0YXJ0PSInK1orJyInOiIiKSsiPlxuIit5KyI8LyIrVCsiPlxuIn0sei5saXN0aXRl''@;'; put 'put ''bT1mdW5jdGlvbih5KXtyZXR1cm4iPGxpPiIreSsiPC9saT5cbiJ9LHouY2hlY2tib3g9ZnVuY3Rpb24oeSl7cmV0dXJuIjxpbnB1dCAiKyh5PydjaGVja2VkPSIiICc6IiIpKydkaXNhYmxlZD0iIiB0eXBlPSJjaGVja2JveCInKyh0aGlzLm9wdGlvbnMueGh0bWw/IiAvIjoiIikrIj4gIn0s''@;'; put 'put ''ei5wYXJhZ3JhcGg9ZnVuY3Rpb24oeSl7cmV0dXJuIjxwPiIreSsiPC9wPlxuIn0sei50YWJsZT1mdW5jdGlvbih5LEQpe3JldHVybiI8dGFibGU+XG48dGhlYWQ+XG4iK3krIjwvdGhlYWQ+XG4iKyhEPUQmJiI8dGJvZHk+IitEKyI8L3Rib2R5PiIpKyI8L3RhYmxlPlxuIn0sei50YWJsZXJv''@;'; put 'put ''dz1mdW5jdGlvbih5KXtyZXR1cm4iPHRyPlxuIit5KyI8L3RyPlxuIn0sei50YWJsZWNlbGw9ZnVuY3Rpb24oeSxEKXt2YXIgWj1ELmhlYWRlcj8idGgiOiJ0ZCI7cmV0dXJuKEQuYWxpZ24/IjwiK1orJyBhbGlnbj0iJytELmFsaWduKyciPic6IjwiK1orIj4iKSt5KyI8LyIrWisiPlxuIn0s''@;'; put 'put ''ei5zdHJvbmc9ZnVuY3Rpb24oeSl7cmV0dXJuIjxzdHJvbmc+Iit5KyI8L3N0cm9uZz4ifSx6LmVtPWZ1bmN0aW9uKHkpe3JldHVybiI8ZW0+Iit5KyI8L2VtPiJ9LHouY29kZXNwYW49ZnVuY3Rpb24oeSl7cmV0dXJuIjxjb2RlPiIreSsiPC9jb2RlPiJ9LHouYnI9ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5vcHRpb25zLnhodG1sPyI8YnIvPiI6Ijxicj4ifSx6LmRlbD1mdW5jdGlvbih5KXtyZXR1cm4iPGRlbD4iK3krIjwvZGVsPiJ9LHoubGluaz1mdW5jdGlvbih5LEQsWil7cmV0dXJuIG51bGw9PT0oeT1WKHRoaXMub3B0aW9ucy5zYW5pdGl6ZSx0aGlzLm9wdGlvbnMuYmFzZVVy''@;'; put 'put ''bCx5KSk/WjooeT0nPGEgaHJlZj0iJytmKHkpKyciJyxEJiYoeSs9JyB0aXRsZT0iJytEKyciJykseSs9Ij4iK1orIjwvYT4iKX0sei5pbWFnZT1mdW5jdGlvbih5LEQsWil7cmV0dXJuIG51bGw9PT0oeT1WKHRoaXMub3B0aW9ucy5zYW5pdGl6ZSx0aGlzLm9wdGlvbnMuYmFzZVVybCx5KSk/''@;'; put 'put ''WjooeT0nPGltZyBzcmM9IicreSsnIiBhbHQ9IicrWisnIicsRCYmKHkrPScgdGl0bGU9IicrRCsnIicpLHkrPXRoaXMub3B0aW9ucy54aHRtbD8iLz4iOiI+Iil9LHoudGV4dD1mdW5jdGlvbih5KXtyZXR1cm4geX0sJH0oKSxwMT1mdW5jdGlvbigpe2Z1bmN0aW9uICQoKXt9dmFyIHo9JC5w''@;'; put 'put ''cm90b3R5cGU7cmV0dXJuIHouc3Ryb25nPWZ1bmN0aW9uKHkpe3JldHVybiB5fSx6LmVtPWZ1bmN0aW9uKHkpe3JldHVybiB5fSx6LmNvZGVzcGFuPWZ1bmN0aW9uKHkpe3JldHVybiB5fSx6LmRlbD1mdW5jdGlvbih5KXtyZXR1cm4geX0sei5odG1sPWZ1bmN0aW9uKHkpe3JldHVybiB5fSx6''@;'; put 'put ''LnRleHQ9ZnVuY3Rpb24oeSl7cmV0dXJuIHl9LHoubGluaz1mdW5jdGlvbih5LEQsWil7cmV0dXJuIiIrWn0sei5pbWFnZT1mdW5jdGlvbih5LEQsWil7cmV0dXJuIiIrWn0sei5icj1mdW5jdGlvbigpe3JldHVybiIifSwkfSgpLHYxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gJCgpe3RoaXMuc2Vl''@;'; put 'put ''bj17fX12YXIgej0kLnByb3RvdHlwZTtyZXR1cm4gei5zZXJpYWxpemU9ZnVuY3Rpb24oeSl7cmV0dXJuIHkudG9Mb3dlckNhc2UoKS50cmltKCkucmVwbGFjZSgvPFshXC9hLXpdLio/Pi9naSwiIikucmVwbGFjZSgvW1x1MjAwMC1cdTIwNkZcdTJFMDAtXHUyRTdGXFwnISIjJCUmKCkqKywu''@;'; put 'put ''Lzo7PD0+P0BbXF1eYHt8fX5dL2csIiIpLnJlcGxhY2UoL1xzL2csIi0iKX0sei5nZXROZXh0U2FmZVNsdWc9ZnVuY3Rpb24oeSxEKXt2YXIgWj15LFQ9MDtpZih0aGlzLnNlZW4uaGFzT3duUHJvcGVydHkoWikpZm9yKFQ9dGhpcy5zZWVuW3ldO1o9eSsiLSIrICsrVCx0aGlzLnNlZW4uaGFz''@;'; put 'put ''T3duUHJvcGVydHkoWik7KTtyZXR1cm4gRHx8KHRoaXMuc2Vlblt5XT1ULHRoaXMuc2VlbltaXT0wKSxafSx6LnNsdWc9ZnVuY3Rpb24oeSxEKXtyZXR1cm4gdm9pZCAwPT09RCYmKEQ9e30pLHk9dGhpcy5zZXJpYWxpemUoeSksdGhpcy5nZXROZXh0U2FmZVNsdWcoeSxELmRyeXJ1bil9LCR9''@;'; put 'put ''KCksRTE9ZnVuY3Rpb24oKXtmdW5jdGlvbiAkKHkpe3RoaXMub3B0aW9ucz15fHxYLmRlZmF1bHRzLHRoaXMub3B0aW9ucy5yZW5kZXJlcj10aGlzLm9wdGlvbnMucmVuZGVyZXJ8fG5ldyB1MSx0aGlzLnJlbmRlcmVyPXRoaXMub3B0aW9ucy5yZW5kZXJlcix0aGlzLnJlbmRlcmVyLm9wdGlv''@;'; put 'put ''bnM9dGhpcy5vcHRpb25zLHRoaXMudGV4dFJlbmRlcmVyPW5ldyBwMSx0aGlzLnNsdWdnZXI9bmV3IHYxfSQucGFyc2U9ZnVuY3Rpb24oeSxEKXtyZXR1cm4gbmV3ICQoRCkucGFyc2UoeSl9LCQucGFyc2VJbmxpbmU9ZnVuY3Rpb24oeSxEKXtyZXR1cm4gbmV3ICQoRCkucGFyc2VJbmxpbmUo''@;'; put 'put ''eSl9O3ZhciB6PSQucHJvdG90eXBlO3JldHVybiB6LnBhcnNlPWZ1bmN0aW9uKHksRCl7dm9pZCAwPT09RCYmKEQ9ITApO2Zvcih2YXIgWixULFAsZTEscjEsWjEsWSxxLEosQTEsTjEsUzEsbjEsaTEsZjEseDEsSTE9IiIsSjE9eS5sZW5ndGgsdDA9MDt0MDxKMTt0MCsrKWlmKHE9eVt0MF0s''@;'; put 'put ''dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVycyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW3EudHlwZV0mJighMSE9PSh4MT10aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnNbcS50eXBlXS5jYWxsKHtwYXJz''@;'; put 'put ''ZXI6dGhpc30scSkpfHwhWyJzcGFjZSIsImhyIiwiaGVhZGluZyIsImNvZGUiLCJ0YWJsZSIsImJsb2NrcXVvdGUiLCJsaXN0IiwiaHRtbCIsInBhcmFncmFwaCIsInRleHQiXS5pbmNsdWRlcyhxLnR5cGUpKSlJMSs9eDF8fCIiO2Vsc2Ugc3dpdGNoKHEudHlwZSl7Y2FzZSJzcGFjZSI6Y29u''@;'; put 'put ''dGludWU7Y2FzZSJociI6STErPXRoaXMucmVuZGVyZXIuaHIoKTtjb250aW51ZTtjYXNlImhlYWRpbmciOkkxKz10aGlzLnJlbmRlcmVyLmhlYWRpbmcodGhpcy5wYXJzZUlubGluZShxLnRva2VucykscS5kZXB0aCx1KHRoaXMucGFyc2VJbmxpbmUocS50b2tlbnMsdGhpcy50ZXh0UmVuZGVy''@;'; put 'put ''ZXIpKSx0aGlzLnNsdWdnZXIpO2NvbnRpbnVlO2Nhc2UiY29kZSI6STErPXRoaXMucmVuZGVyZXIuY29kZShxLnRleHQscS5sYW5nLHEuZXNjYXBlZCk7Y29udGludWU7Y2FzZSJ0YWJsZSI6Zm9yKFoxPUo9IiIsUD1xLmhlYWRlci5sZW5ndGgsWj0wO1o8UDtaKyspWjErPXRoaXMucmVuZGVy''@;'; put 'put ''ZXIudGFibGVjZWxsKHRoaXMucGFyc2VJbmxpbmUocS5oZWFkZXJbWl0udG9rZW5zKSx7aGVhZGVyOiEwLGFsaWduOnEuYWxpZ25bWl19KTtmb3IoSis9dGhpcy5yZW5kZXJlci50YWJsZXJvdyhaMSksWT0iIixQPXEucm93cy5sZW5ndGgsWj0wO1o8UDtaKyspe2ZvcihaMT0iIixlMT0ocjE9''@;'; put 'put ''cS5yb3dzW1pdKS5sZW5ndGgsVD0wO1Q8ZTE7VCsrKVoxKz10aGlzLnJlbmRlcmVyLnRhYmxlY2VsbCh0aGlzLnBhcnNlSW5saW5lKHIxW1RdLnRva2Vucykse2hlYWRlcjohMSxhbGlnbjpxLmFsaWduW1RdfSk7WSs9dGhpcy5yZW5kZXJlci50YWJsZXJvdyhaMSl9STErPXRoaXMucmVuZGVy''@;'; put 'put ''ZXIudGFibGUoSixZKTtjb250aW51ZTtjYXNlImJsb2NrcXVvdGUiOlk9dGhpcy5wYXJzZShxLnRva2VucyksSTErPXRoaXMucmVuZGVyZXIuYmxvY2txdW90ZShZKTtjb250aW51ZTtjYXNlImxpc3QiOmZvcihKPXEub3JkZXJlZCxmMD1xLnN0YXJ0LEExPXEubG9vc2UsUD1xLml0ZW1zLmxl''@;'; put 'put ''bmd0aCxZPSIiLFo9MDtaPFA7WisrKW4xPShTMT1xLml0ZW1zW1pdKS5jaGVja2VkLGkxPVMxLnRhc2ssTjE9IiIsUzEudGFzayYmKGYxPXRoaXMucmVuZGVyZXIuY2hlY2tib3gobjEpLEExPzA8UzEudG9rZW5zLmxlbmd0aCYmInBhcmFncmFwaCI9PT1TMS50b2tlbnNbMF0udHlwZT8oUzEu''@;'; put 'put ''dG9rZW5zWzBdLnRleHQ9ZjErIiAiK1MxLnRva2Vuc1swXS50ZXh0LFMxLnRva2Vuc1swXS50b2tlbnMmJjA8UzEudG9rZW5zWzBdLnRva2Vucy5sZW5ndGgmJiJ0ZXh0Ij09PVMxLnRva2Vuc1swXS50b2tlbnNbMF0udHlwZSYmKFMxLnRva2Vuc1swXS50b2tlbnNbMF0udGV4dD1mMSsiICIr''@;'; put 'put ''UzEudG9rZW5zWzBdLnRva2Vuc1swXS50ZXh0KSk6UzEudG9rZW5zLnVuc2hpZnQoe3R5cGU6InRleHQiLHRleHQ6ZjF9KTpOMSs9ZjEpLE4xKz10aGlzLnBhcnNlKFMxLnRva2VucyxBMSksWSs9dGhpcy5yZW5kZXJlci5saXN0aXRlbShOMSxpMSxuMSk7STErPXRoaXMucmVuZGVyZXIubGlz''@;'; put 'put ''dChZLEosZjApO2NvbnRpbnVlO2Nhc2UiaHRtbCI6STErPXRoaXMucmVuZGVyZXIuaHRtbChxLnRleHQpO2NvbnRpbnVlO2Nhc2UicGFyYWdyYXBoIjpJMSs9dGhpcy5yZW5kZXJlci5wYXJhZ3JhcGgodGhpcy5wYXJzZUlubGluZShxLnRva2VucykpO2NvbnRpbnVlO2Nhc2UidGV4dCI6Zm9y''@;'; put 'put ''KFk9cS50b2tlbnM/dGhpcy5wYXJzZUlubGluZShxLnRva2Vucyk6cS50ZXh0O3QwKzE8SjEmJiJ0ZXh0Ij09PXlbdDArMV0udHlwZTspWSs9IlxuIisoKHE9eVsrK3QwXSkudG9rZW5zP3RoaXMucGFyc2VJbmxpbmUocS50b2tlbnMpOnEudGV4dCk7STErPUQ/dGhpcy5yZW5kZXJlci5wYXJh''@;'; put 'put ''Z3JhcGgoWSk6WTtjb250aW51ZTtkZWZhdWx0OnZhciBmMD0nVG9rZW4gd2l0aCAiJytxLnR5cGUrJyIgdHlwZSB3YXMgbm90IGZvdW5kLic7aWYodGhpcy5vcHRpb25zLnNpbGVudClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKGYwKTt0aHJvdyBuZXcgRXJyb3IoZjApfXJldHVybiBJMX0s''@;'; put 'put ''ei5wYXJzZUlubGluZT1mdW5jdGlvbih5LEQpe0Q9RHx8dGhpcy5yZW5kZXJlcjtmb3IodmFyIFosVCxQPSIiLGUxPXkubGVuZ3RoLHIxPTA7cjE8ZTE7cjErKylpZihaPXlbcjFdLHRoaXMub3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnMmJnRo''@;'; put 'put ''aXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVyc1taLnR5cGVdJiYoITEhPT0oVD10aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnNbWi50eXBlXS5jYWxsKHtwYXJzZXI6dGhpc30sWikpfHwhWyJlc2NhcGUiLCJodG1sIiwibGluayIsImltYWdlIiwic3Ryb25nIiwiZW0iLCJj''@;'; put 'put ''b2Rlc3BhbiIsImJyIiwiZGVsIiwidGV4dCJdLmluY2x1ZGVzKFoudHlwZSkpKVArPVR8fCIiO2Vsc2Ugc3dpdGNoKFoudHlwZSl7Y2FzZSJlc2NhcGUiOmNhc2UidGV4dCI6UCs9RC50ZXh0KFoudGV4dCk7YnJlYWs7Y2FzZSJodG1sIjpQKz1ELmh0bWwoWi50ZXh0KTticmVhaztjYXNlImxp''@;'; put 'put ''bmsiOlArPUQubGluayhaLmhyZWYsWi50aXRsZSx0aGlzLnBhcnNlSW5saW5lKFoudG9rZW5zLEQpKTticmVhaztjYXNlImltYWdlIjpQKz1ELmltYWdlKFouaHJlZixaLnRpdGxlLFoudGV4dCk7YnJlYWs7Y2FzZSJzdHJvbmciOlArPUQuc3Ryb25nKHRoaXMucGFyc2VJbmxpbmUoWi50b2tl''@;'; put 'put ''bnMsRCkpO2JyZWFrO2Nhc2UiZW0iOlArPUQuZW0odGhpcy5wYXJzZUlubGluZShaLnRva2VucyxEKSk7YnJlYWs7Y2FzZSJjb2Rlc3BhbiI6UCs9RC5jb2Rlc3BhbihaLnRleHQpO2JyZWFrO2Nhc2UiYnIiOlArPUQuYnIoKTticmVhaztjYXNlImRlbCI6UCs9RC5kZWwodGhpcy5wYXJzZUlu''@;'; put 'put ''bGluZShaLnRva2VucyxEKSk7YnJlYWs7ZGVmYXVsdDp2YXIgWjE9J1Rva2VuIHdpdGggIicrWi50eXBlKyciIHR5cGUgd2FzIG5vdCBmb3VuZC4nO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcihaMSk7dGhyb3cgbmV3IEVycm9yKFoxKX1yZXR1cm4g''@;'; put 'put ''UH0sJH0oKTtmdW5jdGlvbiBqKCQseix5KXtpZihudWxsPT0kKXRocm93IG5ldyBFcnJvcigibWFya2VkKCk6IGlucHV0IHBhcmFtZXRlciBpcyB1bmRlZmluZWQgb3IgbnVsbCIpO2lmKCJzdHJpbmciIT10eXBlb2YgJCl0aHJvdyBuZXcgRXJyb3IoIm1hcmtlZCgpOiBpbnB1dCBwYXJhbWV0''@;'; put 'put ''ZXIgaXMgb2YgdHlwZSAiK09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCgkKSsiLCBzdHJpbmcgZXhwZWN0ZWQiKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgeiYmKHk9eix6PW51bGwpLE4oej14KHt9LGouZGVmYXVsdHMsenx8e30pKSx5KXt2YXIgRCxaPXouaGlnaGxpZ2h0O3RyeXtE''@;'; put 'put ''PWgxLmxleCgkLHopfWNhdGNoKHIxKXtyZXR1cm4geShyMSl9dmFyIFQ9ZnVuY3Rpb24ocjEpe3ZhciBaMTtpZighcjEpdHJ5e3oud2Fsa1Rva2VucyYmai53YWxrVG9rZW5zKEQsei53YWxrVG9rZW5zKSxaMT1FMS5wYXJzZShELHopfWNhdGNoKFkpe3IxPVl9cmV0dXJuIHouaGlnaGxpZ2h0''@;'; put 'put ''PVoscjE/eShyMSk6eShudWxsLFoxKX07aWYoIVp8fFoubGVuZ3RoPDN8fChkZWxldGUgei5oaWdobGlnaHQsIUQubGVuZ3RoKSlyZXR1cm4gVCgpO3ZhciBQPTA7cmV0dXJuIGoud2Fsa1Rva2VucyhELGZ1bmN0aW9uKHIxKXsiY29kZSI9PT1yMS50eXBlJiYoUCsrLHNldFRpbWVvdXQoZnVu''@;'; put 'put ''Y3Rpb24oKXtaKHIxLnRleHQscjEubGFuZyxmdW5jdGlvbihaMSxZKXtpZihaMSlyZXR1cm4gVChaMSk7bnVsbCE9WSYmWSE9PXIxLnRleHQmJihyMS50ZXh0PVkscjEuZXNjYXBlZD0hMCksMD09LS1QJiZUKCl9KX0sMCkpfSksdm9pZCgwPT09UCYmVCgpKX10cnl7dmFyIGUxPWgxLmxleCgk''@;'; put 'put ''LHopO3JldHVybiB6LndhbGtUb2tlbnMmJmoud2Fsa1Rva2VucyhlMSx6LndhbGtUb2tlbnMpLEUxLnBhcnNlKGUxLHopfWNhdGNoKHIxKXtpZihyMS5tZXNzYWdlKz0iXG5QbGVhc2UgcmVwb3J0IHRoaXMgdG8gaHR0cHM6Ly9naXRodWIuY29tL21hcmtlZGpzL21hcmtlZC4iLHouc2lsZW50''@;'; put 'put ''KXJldHVybiI8cD5BbiBlcnJvciBvY2N1cnJlZDo8L3A+PHByZT4iK2YocjEubWVzc2FnZSsiIiwhMCkrIjwvcHJlPiI7dGhyb3cgcjF9fWoub3B0aW9ucz1qLnNldE9wdGlvbnM9ZnVuY3Rpb24oJCl7cmV0dXJuIHgoai5kZWZhdWx0cywkKSxYLmRlZmF1bHRzPSQ9ai5kZWZhdWx0cyxqfSxq''@;'; put 'put ''LmdldERlZmF1bHRzPWUsai5kZWZhdWx0cz1YLmRlZmF1bHRzLGoudXNlPWZ1bmN0aW9uKCl7Zm9yKHZhciAkPWFyZ3VtZW50cy5sZW5ndGgsej1uZXcgQXJyYXkoJCkseT0wO3k8JDt5Kyspelt5XT1hcmd1bWVudHNbeV07dmFyIEQsWj14LmFwcGx5KHZvaWQgMCxbe31dLmNvbmNhdCh6KSks''@;'; put 'put ''VD1qLmRlZmF1bHRzLmV4dGVuc2lvbnN8fHtyZW5kZXJlcnM6e30sY2hpbGRUb2tlbnM6e319O3ouZm9yRWFjaChmdW5jdGlvbihQKXtpZihQLmV4dGVuc2lvbnMmJihEPSEwLFAuZXh0ZW5zaW9ucy5mb3JFYWNoKGZ1bmN0aW9uKEope2lmKCFKLm5hbWUpdGhyb3cgbmV3IEVycm9yKCJleHRl''@;'; put 'put ''bnNpb24gbmFtZSByZXF1aXJlZCIpO3ZhciBBMTtpZihKLnJlbmRlcmVyJiYoVC5yZW5kZXJlcnNbSi5uYW1lXT0oQTE9VC5yZW5kZXJlcnM/VC5yZW5kZXJlcnNbSi5uYW1lXTpudWxsKT9mdW5jdGlvbigpe2Zvcih2YXIgTjE9YXJndW1lbnRzLmxlbmd0aCxTMT1uZXcgQXJyYXkoTjEpLG4x''@;'; put 'put ''PTA7bjE8TjE7bjErKylTMVtuMV09YXJndW1lbnRzW24xXTt2YXIgaTE9Si5yZW5kZXJlci5hcHBseSh0aGlzLFMxKTtyZXR1cm4hMT09PWkxP0ExLmFwcGx5KHRoaXMsUzEpOmkxfTpKLnJlbmRlcmVyKSxKLnRva2VuaXplcil7aWYoIUoubGV2ZWx8fCJibG9jayIhPT1KLmxldmVsJiYiaW5s''@;'; put 'put ''aW5lIiE9PUoubGV2ZWwpdGhyb3cgbmV3IEVycm9yKCJleHRlbnNpb24gbGV2ZWwgbXVzdCBiZSAnYmxvY2snIG9yICdpbmxpbmUnIik7VFtKLmxldmVsXT9UW0oubGV2ZWxdLnVuc2hpZnQoSi50b2tlbml6ZXIpOlRbSi5sZXZlbF09W0oudG9rZW5pemVyXSxKLnN0YXJ0JiYoImJsb2NrIj09''@;'; put 'put ''PUoubGV2ZWw/VC5zdGFydEJsb2NrP1Quc3RhcnRCbG9jay5wdXNoKEouc3RhcnQpOlQuc3RhcnRCbG9jaz1bSi5zdGFydF06ImlubGluZSI9PT1KLmxldmVsJiYoVC5zdGFydElubGluZT9ULnN0YXJ0SW5saW5lLnB1c2goSi5zdGFydCk6VC5zdGFydElubGluZT1bSi5zdGFydF0pKX1KLmNo''@;'; put 'put ''aWxkVG9rZW5zJiYoVC5jaGlsZFRva2Vuc1tKLm5hbWVdPUouY2hpbGRUb2tlbnMpfSkpLFAucmVuZGVyZXIpe3ZhciBlMSxyMT1qLmRlZmF1bHRzLnJlbmRlcmVyfHxuZXcgdTE7Zm9yKGUxIGluIFAucmVuZGVyZXIpIWZ1bmN0aW9uKEope3ZhciBBMT1yMVtKXTtyMVtKXT1mdW5jdGlvbigp''@;'; put 'put ''e2Zvcih2YXIgTjE9YXJndW1lbnRzLmxlbmd0aCxTMT1uZXcgQXJyYXkoTjEpLG4xPTA7bjE8TjE7bjErKylTMVtuMV09YXJndW1lbnRzW24xXTt2YXIgaTE9UC5yZW5kZXJlcltKXS5hcHBseShyMSxTMSk7cmV0dXJuITE9PT1pMT9BMS5hcHBseShyMSxTMSk6aTF9fShlMSk7Wi5yZW5kZXJl''@;'; put 'put ''cj1yMX1pZihQLnRva2VuaXplcil7dmFyIFoxLFk9ai5kZWZhdWx0cy50b2tlbml6ZXJ8fG5ldyBPO2ZvcihaMSBpbiBQLnRva2VuaXplcikhZnVuY3Rpb24oSil7dmFyIEExPVlbSl07WVtKXT1mdW5jdGlvbigpe2Zvcih2YXIgTjE9YXJndW1lbnRzLmxlbmd0aCxTMT1uZXcgQXJyYXkoTjEp''@;'; put 'put ''LG4xPTA7bjE8TjE7bjErKylTMVtuMV09YXJndW1lbnRzW24xXTt2YXIgaTE9UC50b2tlbml6ZXJbSl0uYXBwbHkoWSxTMSk7cmV0dXJuITE9PT1pMT9BMS5hcHBseShZLFMxKTppMX19KFoxKTtaLnRva2VuaXplcj1ZfXZhciBxO1Aud2Fsa1Rva2VucyYmKHE9ai5kZWZhdWx0cy53YWxrVG9r''@;'; put 'put ''ZW5zLFoud2Fsa1Rva2Vucz1mdW5jdGlvbihKKXtQLndhbGtUb2tlbnMuY2FsbCh0aGlzLEopLHEmJnEuY2FsbCh0aGlzLEopfSksRCYmKFouZXh0ZW5zaW9ucz1UKSxqLnNldE9wdGlvbnMoWil9KX0sai53YWxrVG9rZW5zPWZ1bmN0aW9uKCQseil7Zm9yKHZhciB5LEQ9QSgkKTshKHk9RCgp''@;'; put 'put ''KS5kb25lOykhZnVuY3Rpb24oKXt2YXIgWj15LnZhbHVlO3N3aXRjaCh6LmNhbGwoaixaKSxaLnR5cGUpe2Nhc2UidGFibGUiOmZvcih2YXIgVD1BKFouaGVhZGVyKTshKFA9VCgpKS5kb25lOyl7dmFyIFA9UC52YWx1ZTtqLndhbGtUb2tlbnMoUC50b2tlbnMseil9Zm9yKHZhciBlMSxyMT1B''@;'; put 'put ''KFoucm93cyk7IShlMT1yMSgpKS5kb25lOylmb3IodmFyIFoxPUEoZTEudmFsdWUpOyEoWT1aMSgpKS5kb25lOyl7dmFyIFk9WS52YWx1ZTtqLndhbGtUb2tlbnMoWS50b2tlbnMseil9YnJlYWs7Y2FzZSJsaXN0IjpqLndhbGtUb2tlbnMoWi5pdGVtcyx6KTticmVhaztkZWZhdWx0OmouZGVm''@;'; put 'put ''YXVsdHMuZXh0ZW5zaW9ucyYmai5kZWZhdWx0cy5leHRlbnNpb25zLmNoaWxkVG9rZW5zJiZqLmRlZmF1bHRzLmV4dGVuc2lvbnMuY2hpbGRUb2tlbnNbWi50eXBlXT9qLmRlZmF1bHRzLmV4dGVuc2lvbnMuY2hpbGRUb2tlbnNbWi50eXBlXS5mb3JFYWNoKGZ1bmN0aW9uKHEpe2oud2Fsa1Rv''@;'; put 'put ''a2VucyhaW3FdLHopfSk6Wi50b2tlbnMmJmoud2Fsa1Rva2VucyhaLnRva2Vucyx6KX19KCl9LGoucGFyc2VJbmxpbmU9ZnVuY3Rpb24oJCx6KXtpZihudWxsPT0kKXRocm93IG5ldyBFcnJvcigibWFya2VkLnBhcnNlSW5saW5lKCk6IGlucHV0IHBhcmFtZXRlciBpcyB1bmRlZmluZWQgb3Ig''@;'; put 'put ''bnVsbCIpO2lmKCJzdHJpbmciIT10eXBlb2YgJCl0aHJvdyBuZXcgRXJyb3IoIm1hcmtlZC5wYXJzZUlubGluZSgpOiBpbnB1dCBwYXJhbWV0ZXIgaXMgb2YgdHlwZSAiK09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCgkKSsiLCBzdHJpbmcgZXhwZWN0ZWQiKTtOKHo9eCh7fSxqLmRl''@;'; put 'put ''ZmF1bHRzLHp8fHt9KSk7dHJ5e3ZhciB5PWgxLmxleElubGluZSgkLHopO3JldHVybiB6LndhbGtUb2tlbnMmJmoud2Fsa1Rva2Vucyh5LHoud2Fsa1Rva2VucyksRTEucGFyc2VJbmxpbmUoeSx6KX1jYXRjaChEKXtpZihELm1lc3NhZ2UrPSJcblBsZWFzZSByZXBvcnQgdGhpcyB0byBodHRw''@;'; put 'put ''czovL2dpdGh1Yi5jb20vbWFya2VkanMvbWFya2VkLiIsei5zaWxlbnQpcmV0dXJuIjxwPkFuIGVycm9yIG9jY3VycmVkOjwvcD48cHJlPiIrZihELm1lc3NhZ2UrIiIsITApKyI8L3ByZT4iO3Rocm93IER9fSxqLlBhcnNlcj1FMSxqLnBhcnNlcj1FMS5wYXJzZSxqLlJlbmRlcmVyPXUxLGou''@;'; put 'put ''VGV4dFJlbmRlcmVyPXAxLGouTGV4ZXI9aDEsai5sZXhlcj1oMS5sZXgsai5Ub2tlbml6ZXI9TyxqLlNsdWdnZXI9djEsYzE9KGoucGFyc2U9aikub3B0aW9uczt2YXIgVjE9ai5zZXRPcHRpb25zLF8xPWoudXNlLFE9ai53YWxrVG9rZW5zLHMxPWoucGFyc2VJbmxpbmUsbTE9aixiMT1FMS5w''@;'; put 'put ''YXJzZSxCMT1oMS5sZXg7WC5MZXhlcj1oMSxYLlBhcnNlcj1FMSxYLlJlbmRlcmVyPXUxLFguU2x1Z2dlcj12MSxYLlRleHRSZW5kZXJlcj1wMSxYLlRva2VuaXplcj1PLFguZ2V0RGVmYXVsdHM9ZSxYLmxleGVyPUIxLFgubWFya2VkPWosWC5vcHRpb25zPWMxLFgucGFyc2U9bTEsWC5wYXJz''@;'; put 'put ''ZUlubGluZT1zMSxYLnBhcnNlcj1iMSxYLnNldE9wdGlvbnM9VjEsWC51c2U9XzEsWC53YWxrVG9rZW5zPVEsT2JqZWN0LmRlZmluZVByb3BlcnR5KFgsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSksZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7IWZ1bmN0aW9uKCl7aWYodm9pZCAwPT09d2lu''@;'; put 'put ''ZG93LlJlZmxlY3R8fHZvaWQgMD09PXdpbmRvdy5jdXN0b21FbGVtZW50c3x8d2luZG93LmN1c3RvbUVsZW1lbnRzLnBvbHlmaWxsV3JhcEZsdXNoQ2FsbGJhY2spcmV0dXJuO2NvbnN0IFg9SFRNTEVsZW1lbnQ7d2luZG93LkhUTUxFbGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIFJlZmxlY3Qu''@;'; put 'put ''Y29uc3RydWN0KFgsW10sdGhpcy5jb25zdHJ1Y3Rvcil9LEhUTUxFbGVtZW50LnByb3RvdHlwZT1YLnByb3RvdHlwZSxIVE1MRWxlbWVudC5wcm90b3R5cGUuY29uc3RydWN0b3I9SFRNTEVsZW1lbnQsT2JqZWN0LnNldFByb3RvdHlwZU9mKEhUTUxFbGVtZW50LFgpfSgpfSgpLGZ1bmN0aW9u''@;'; put 'put ''KCl7InVzZSBzdHJpY3QiO3ZhciBYO2Z1bmN0aW9uIEYxKHQpe3ZhciBpPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGk8dC5sZW5ndGg/e2RvbmU6ITEsdmFsdWU6dFtpKytdfTp7ZG9uZTohMH19fXZhciBvLGs9ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVz''@;'; put 'put ''P09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbih0LGksbil7cmV0dXJuIHQ9PUFycmF5LnByb3RvdHlwZXx8dD09T2JqZWN0LnByb3RvdHlwZXx8KHRbaV09bi52YWx1ZSksdH0sZT1mdW5jdGlvbiBBKHQpe3Q9WyJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyx0''@;'; put 'put ''LCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmLCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdO2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7KytpKXt2YXIgbj10W2ldO2lmKG4mJm4uTWF0aD09TWF0aClyZXR1cm4gbn10aHJv''@;'; put 'put ''dyBFcnJvcigiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdCIpfSh0aGlzKTtmdW5jdGlvbiBsKHQsaSl7aWYoaSl0Ont2YXIgbj1lO3Q9dC5zcGxpdCgiLiIpO2Zvcih2YXIgcz0wO3M8dC5sZW5ndGgtMTtzKyspe3ZhciBkPXRbc107aWYoIShkIGluIG4pKWJyZWFrIHQ7bj1uW2RdfShpPWko''@;'; put 'put ''cz1uW3Q9dFt0Lmxlbmd0aC0xXV0pKSE9cyYmbnVsbCE9aSYmayhuLHQse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTppfSl9fWZ1bmN0aW9uIHIodCl7cmV0dXJuKHQ9e25leHQ6dH0pW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdH1mdW5jdGlv''@;'; put 'put ''biBhKHQpe3ZhciBpPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJnRbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gaT9pLmNhbGwodCk6e25leHQ6RjEodCl9fWZ1bmN0aW9uIGModCl7aWYoISh0IGluc3RhbmNlb2YgQXJyYXkpKXt0PWEodCk7Zm9yKHZhciBp''@;'; put 'put ''LG49W107IShpPXQubmV4dCgpKS5kb25lOyluLnB1c2goaS52YWx1ZSk7dD1ufXJldHVybiB0fWlmKGwoIlN5bWJvbCIsZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihkLG0pe3RoaXMuZz1kLGsodGhpcywiZGVzY3JpcHRpb24iLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6bX0p''@;'; put 'put ''fWlmKHQpcmV0dXJuIHQ7bi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nfTt2YXIgcz0wO3JldHVybiBmdW5jdGlvbiBpKGQpe2lmKHRoaXMgaW5zdGFuY2VvZiBpKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciIpO3Jl''@;'; put 'put ''dHVybiBuZXcgbigianNjb21wX3N5bWJvbF8iKyhkfHwiIikrIl8iK3MrKyxkKX19KSxsKCJTeW1ib2wuaXRlcmF0b3IiLGZ1bmN0aW9uKHQpe2lmKHQpcmV0dXJuIHQ7dD1TeW1ib2woIlN5bWJvbC5pdGVyYXRvciIpO2Zvcih2YXIgaT0iQXJyYXkgSW50OEFycmF5IFVpbnQ4QXJyYXkgVWlu''@;'; put 'put ''dDhDbGFtcGVkQXJyYXkgSW50MTZBcnJheSBVaW50MTZBcnJheSBJbnQzMkFycmF5IFVpbnQzMkFycmF5IEZsb2F0MzJBcnJheSBGbG9hdDY0QXJyYXkiLnNwbGl0KCIgIiksbj0wO248aS5sZW5ndGg7bisrKXt2YXIgcz1lW2lbbl1dOyJmdW5jdGlvbiI9PXR5cGVvZiBzJiYiZnVuY3Rpb24i''@;'; put 'put ''IT10eXBlb2Ygcy5wcm90b3R5cGVbdF0mJmsocy5wcm90b3R5cGUsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHIoRjEodGhpcykpfX0pfXJldHVybiB0fSksImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5zZXRQcm90b3R5cGVPZilvPU9i''@;'; put 'put ''amVjdC5zZXRQcm90b3R5cGVPZjtlbHNle3ZhciBoO3Q6e3ZhciBnPXt9O3RyeXtnLl9fcHJvdG9fXz17YTohMH0saD1nLmE7YnJlYWsgdH1jYXRjaCh0KXt9aD0hMX1vPWg/ZnVuY3Rpb24odCxpKXtpZih0Ll9fcHJvdG9fXz1pLHQuX19wcm90b19fIT09aSl0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KHQrIiBpcyBub3QgZXh0ZW5zaWJsZSIpO3JldHVybiB0fTpudWxsfXZhciB1PW87ZnVuY3Rpb24gcCgpe3RoaXMudT0hMSx0aGlzLmg9bnVsbCx0aGlzLkthPXZvaWQgMCx0aGlzLmc9MSx0aGlzLmRhPTAsdGhpcy5pPW51bGx9ZnVuY3Rpb24gdih0KXtpZih0LnUpdGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO3QudT0hMH1mdW5jdGlvbiBIKHQsaSl7dC5pPXtXYTppLCRhOiEwfSx0Lmc9dC5kYX1mdW5jdGlvbiBDKHQsaSl7cmV0dXJuIHQuZz0zLHt2YWx1ZTppfX1mdW5jdGlvbiBWKHQpe3RoaXMuZz1uZXcgcCx0aGlzLmg9dH1mdW5j''@;'; put 'put ''dGlvbiBfKHQsaSxuLHMpe3RyeXt2YXIgZD1pLmNhbGwodC5nLmgsbik7aWYoIShkIGluc3RhbmNlb2YgT2JqZWN0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgIitkKyIgaXMgbm90IGFuIG9iamVjdCIpO2lmKCFkLmRvbmUpcmV0dXJuIHQuZy51PSExLGQ7dmFyIG09''@;'; put 'put ''ZC52YWx1ZX1jYXRjaChMKXtyZXR1cm4gdC5nLmg9bnVsbCxIKHQuZyxMKSxiKHQpfXJldHVybiB0LmcuaD1udWxsLHMuY2FsbCh0LmcsbSksYih0KX1mdW5jdGlvbiBiKHQpe2Zvcig7dC5nLmc7KXRyeXt2YXIgaT10LmgodC5nKTtpZihpKXJldHVybiB0LmcudT0hMSx7dmFsdWU6aS52YWx1''@;'; put 'put ''ZSxkb25lOiExfX1jYXRjaChuKXt0LmcuS2E9dm9pZCAwLEgodC5nLG4pfWlmKHQuZy51PSExLHQuZy5pKXtpZihpPXQuZy5pLHQuZy5pPW51bGwsaS4kYSl0aHJvdyBpLldhO3JldHVybnt2YWx1ZTppLnJldHVybixkb25lOiEwfX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fWZ1bmN0''@;'; put 'put ''aW9uIE0odCl7dGhpcy5uZXh0PWZ1bmN0aW9uKGkpe3JldHVybiB2KHQuZyksdC5nLmg/aT1fKHQsdC5nLmgubmV4dCxpLHQuZy5PKToodC5nLk8oaSksaT1iKHQpKSxpfSx0aGlzLnRocm93PWZ1bmN0aW9uKGkpe3JldHVybiB2KHQuZyksdC5nLmg/aT1fKHQsdC5nLmgudGhyb3csaSx0Lmcu''@;'; put 'put ''Tyk6KEgodC5nLGkpLGk9Yih0KSksaX0sdGhpcy5yZXR1cm49ZnVuY3Rpb24oaSl7cmV0dXJuIGZ1bmN0aW9uIFModCxpKXt2KHQuZyk7dmFyIG49dC5nLmg7cmV0dXJuIG4/Xyh0LCJyZXR1cm4iaW4gbj9uLnJldHVybjpmdW5jdGlvbihzKXtyZXR1cm57dmFsdWU6cyxkb25lOiEwfX0saSx0''@;'; put 'put ''LmcucmV0dXJuKToodC5nLnJldHVybihpKSxiKHQpKX0odCxpKX0sdGhpc1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fWZ1bmN0aW9uIHgodCxpKXtyZXR1cm4gaT1uZXcgTShuZXcgVihpKSksdSYmdC5wcm90b3R5cGUmJnUoaSx0LnByb3RvdHlwZSksaX1wLnBy''@;'; put 'put ''b3RvdHlwZS5PPWZ1bmN0aW9uKHQpe3RoaXMuS2E9dH0scC5wcm90b3R5cGUucmV0dXJuPWZ1bmN0aW9uKHQpe3RoaXMuaT17cmV0dXJuOnR9LHRoaXMuZz10aGlzLmRhfSxBcnJheS5mcm9tfHwoQXJyYXkuZnJvbT1mdW5jdGlvbih0KXtyZXR1cm5bXS5zbGljZS5jYWxsKHQpfSksT2JqZWN0''@;'; put 'put ''LmFzc2lnbnx8KE9iamVjdC5hc3NpZ249ZnVuY3Rpb24odCl7Zm9yKHZhciBzLGk9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSksbj0wO248aS5sZW5ndGg7bisrKWlmKHM9aVtuXSlmb3IodmFyIGQ9dCxtPU9iamVjdC5rZXlzKHMpLEw9MDtMPG0ubGVuZ3RoO0wrKyl7dmFyIEY9bVtMXTtk''@;'; put 'put ''W0ZdPXNbRl19cmV0dXJuIHR9KTt2YXIgRT1zZXRUaW1lb3V0O2Z1bmN0aW9uIHcoKXt9ZnVuY3Rpb24gSSh0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBJKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJQcm9taXNlcyBtdXN0IGJlIGNvbnN0cnVjdGVkIHZpYSBuZXciKTtpZigiZnVuY3Rpb24iIT10''@;'; put 'put ''eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJub3QgYSBmdW5jdGlvbiIpO3RoaXMuTj0wLHRoaXMuRWE9ITEsdGhpcy5JPXZvaWQgMCx0aGlzLmJhPVtdLGExKHQsdGhpcyl9ZnVuY3Rpb24gVyh0LGkpe2Zvcig7Mz09PXQuTjspdD10Lkk7MD09PXQuTj90LmJhLnB1c2goaSk6KHQuRWE9''@;'; put 'put ''ITAsRTEoZnVuY3Rpb24oKXt2YXIgbj0xPT09dC5OP2kuYmI6aS5jYjtpZihudWxsPT09bikoMT09PXQuTj9POkIpKGkucHJvbWlzZSx0LkkpO2Vsc2V7dHJ5e3ZhciBzPW4odC5JKX1jYXRjaChkKXtyZXR1cm4gdm9pZCBCKGkucHJvbWlzZSxkKX1PKGkucHJvbWlzZSxzKX19KSl9ZnVuY3Rp''@;'; put 'put ''b24gTyh0LGkpe3RyeXtpZihpPT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJBIHByb21pc2UgY2Fubm90IGJlIHJlc29sdmVkIHdpdGggaXRzZWxmLiIpO2lmKGkmJigib2JqZWN0Ij09dHlwZW9mIGl8fCJmdW5jdGlvbiI9PXR5cGVvZiBpKSl7dmFyIG49aS50aGVuO2lmKGkgaW5zdGFuY2Vv''@;'; put 'put ''ZiBJKXJldHVybiB0Lk49Myx0Lkk9aSx2b2lkIFIodCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4pcmV0dXJuIHZvaWQgYTEoZnVuY3Rpb24gTih0LGkpe3JldHVybiBmdW5jdGlvbigpe3QuYXBwbHkoaSxhcmd1bWVudHMpfX0obixpKSx0KX10Lk49MSx0Lkk9aSxSKHQpfWNhdGNoKHMpe0Io''@;'; put 'put ''dCxzKX19ZnVuY3Rpb24gQih0LGkpe3QuTj0yLHQuST1pLFIodCl9ZnVuY3Rpb24gUih0KXsyPT09dC5OJiYwPT09dC5iYS5sZW5ndGgmJkUxKGZ1bmN0aW9uKCl7dC5FYXx8InVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZjb25zb2xlJiZjb25zb2xlLndhcm4oIlBvc3NpYmxlIFVuaGFu''@;'; put 'put ''ZGxlZCBQcm9taXNlIFJlamVjdGlvbjoiLHQuSSl9KTtmb3IodmFyIGk9MCxuPXQuYmEubGVuZ3RoO2k8bjtpKyspVyh0LHQuYmFbaV0pO3QuYmE9bnVsbH1mdW5jdGlvbiBsMSh0LGksbil7dGhpcy5iYj0iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGwsdGhpcy5jYj0iZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgaT9pOm51bGwsdGhpcy5wcm9taXNlPW59ZnVuY3Rpb24gYTEodCxpKXt2YXIgbj0hMTt0cnl7dChmdW5jdGlvbihzKXtufHwobj0hMCxPKGkscykpfSxmdW5jdGlvbihzKXtufHwobj0hMCxCKGkscykpfSl9Y2F0Y2gocyl7bnx8KG49ITAsQihpLHMpKX19ZnVuY3Rpb24gdTEodCl7''@;'; put 'put ''cmV0dXJuIHQmJiJvYmplY3QiPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3Rvcj09PUk/dDpuZXcgSShmdW5jdGlvbihpKXtpKHQpfSl9SS5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGhlbihudWxsLHQpfSxJLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKHQsaSl7dmFy''@;'; put 'put ''IG49bmV3IHRoaXMuY29uc3RydWN0b3Iodyk7cmV0dXJuIFcodGhpcyxuZXcgbDEodCxpLG4pKSxufSxJLnByb3RvdHlwZS5maW5hbGx5PWZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuY29uc3RydWN0b3I7cmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbihuKXtyZXR1cm4gaS5yZXNvbHZlKHQoKSku''@;'; put 'put ''dGhlbihmdW5jdGlvbigpe3JldHVybiBufSl9LGZ1bmN0aW9uKG4pe3JldHVybiBpLnJlc29sdmUodCgpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGkucmVqZWN0KG4pfSl9KX07dmFyIHQsaSxtLG4scyxkLEUxPSJmdW5jdGlvbiI9PXR5cGVvZiBzZXRJbW1lZGlhdGUmJmZ1bmN0aW9uKHQp''@;'; put 'put ''e3NldEltbWVkaWF0ZSh0KX18fGZ1bmN0aW9uKHQpe0UodCwwKX07aWYoIXdpbmRvdy5Qcm9taXNlKXt3aW5kb3cuUHJvbWlzZT1JLEkucHJvdG90eXBlLnRoZW49SS5wcm90b3R5cGUudGhlbixJLmFsbD1mdW5jdGlvbiBoMSh0KXtyZXR1cm4gbmV3IEkoZnVuY3Rpb24oaSxuKXtmdW5jdGlv''@;'; put 'put ''biBzKEYsRyl7dHJ5e2lmKEcmJigib2JqZWN0Ij09dHlwZW9mIEd8fCJmdW5jdGlvbiI9PXR5cGVvZiBHKSl7dmFyIFU9Ry50aGVuO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBVKXJldHVybiB2b2lkIFUuY2FsbChHLGZ1bmN0aW9uKEspe3MoRixLKX0sbil9ZFtGXT1HLDA9PS0tbSYmaShkKX1j''@;'; put 'put ''YXRjaChLKXtuKEspfX1pZighdHx8dm9pZCAwPT09dC5sZW5ndGgpcmV0dXJuIG4obmV3IFR5cGVFcnJvcigiUHJvbWlzZS5hbGwgYWNjZXB0cyBhbiBhcnJheSIpKTt2YXIgZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KTtpZigwPT09ZC5sZW5ndGgpcmV0dXJuIGkoW10pO2Zvcih2''@;'; put 'put ''YXIgbT1kLmxlbmd0aCxMPTA7TDxkLmxlbmd0aDtMKyspcyhMLGRbTF0pfSl9LEkucmFjZT1mdW5jdGlvbiB2MSh0KXtyZXR1cm4gbmV3IEkoZnVuY3Rpb24oaSxuKXtpZighdHx8dm9pZCAwPT09dC5sZW5ndGgpcmV0dXJuIG4obmV3IFR5cGVFcnJvcigiUHJvbWlzZS5yYWNlIGFjY2VwdHMg''@;'; put 'put ''YW4gYXJyYXkiKSk7Zm9yKHZhciBzPTAsZD10Lmxlbmd0aDtzPGQ7cysrKXUxKHRbc10pLnRoZW4oaSxuKX0pfSxJLnJlc29sdmU9dTEsSS5yZWplY3Q9ZnVuY3Rpb24gcDEodCl7cmV0dXJuIG5ldyBJKGZ1bmN0aW9uKGksbil7bih0KX0pfTt2YXIgaj1kb2N1bWVudC5jcmVhdGVUZXh0Tm9k''@;'; put 'put ''ZSgiIiksYzE9W107bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXtmb3IodmFyIHQ9YzEubGVuZ3RoLGk9MDtpPHQ7aSsrKWMxW2ldKCk7YzEuc3BsaWNlKDAsdCl9KS5vYnNlcnZlKGose2NoYXJhY3RlckRhdGE6ITB9KSxFMT1mdW5jdGlvbih0KXtjMS5wdXNoKHQpLGoudGV4dENv''@;'; put 'put ''bnRlbnQ9MDxqLnRleHRDb250ZW50Lmxlbmd0aD8iIjoiYSJ9fShmdW5jdGlvbih0LGkpe2lmKCEoaSBpbiB0KSl7dmFyIG49dHlwZW9mIGdsb2JhbD09dHlwZW9mIG4/d2luZG93Omdsb2JhbCxzPTAsZD1TdHJpbmcoTWF0aC5yYW5kb20oKSksbT0iX19ceDAxc3ltYm9sQEAiK2QsTD10Lmdl''@;'; put 'put ''dE93blByb3BlcnR5TmFtZXMsRj10LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixHPXQuY3JlYXRlLFU9dC5rZXlzLEs9dC5mcmVlemV8fHQsSDE9dC5kZWZpbmVQcm9wZXJ0eSxRMT10LmRlZmluZVByb3BlcnRpZXMsajE9Rih0LCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiksTTE9dC5wcm90b3R5''@;'; put 'put ''cGUsJDE9TTEuaGFzT3duUHJvcGVydHksejE9TTEucHJvcGVydHlJc0VudW1lcmFibGUsbzA9TTEudG9TdHJpbmcsazE9ZnVuY3Rpb24oQzEsVTEsaTApeyQxLmNhbGwoQzEsbSl8fEgxKEMxLG0se2VudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiExLHdyaXRhYmxlOiExLHZhbHVlOnt9fSks''@;'; put 'put ''QzFbbV1bIkBAIitVMV09aTB9LG0wPWZ1bmN0aW9uKEMxLFUxKXt2YXIgaTA9RyhDMSk7cmV0dXJuIEwoVTEpLmZvckVhY2goZnVuY3Rpb24obzEpe2UyLmNhbGwoVTEsbzEpJiZLMihpMCxvMSxVMVtvMV0pfSksaTB9LFQxPWZ1bmN0aW9uKCl7fSx0Mj1mdW5jdGlvbihDMSl7cmV0dXJuIEMx''@;'; put 'put ''IT1tJiYhJDEuY2FsbChJMCxDMSl9LEYwPWZ1bmN0aW9uKEMxKXtyZXR1cm4gQzEhPW0mJiQxLmNhbGwoSTAsQzEpfSxlMj1mdW5jdGlvbihDMSl7dmFyIFUxPVN0cmluZyhDMSk7cmV0dXJuIEYwKFUxKT8kMS5jYWxsKHRoaXMsVTEpJiYhIXRoaXNbbV0mJnRoaXNbbV1bIkBAIitVMV06ejEu''@;'; put 'put ''Y2FsbCh0aGlzLEMxKX0sdDE9ZnVuY3Rpb24oQzEpe3JldHVybiBIMShNMSxDMSx7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITAsZ2V0OlQxLHNldDpmdW5jdGlvbihVMSl7ZDIodGhpcyxDMSx7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6VTF9''@;'; put 'put ''KSxrMSh0aGlzLEMxLCEwKX19KSxJMFtDMV09SDEodChDMSksImNvbnN0cnVjdG9yIixVZSksSyhJMFtDMV0pfSxsMD1mdW5jdGlvbiBDMShVMSl7aWYodGhpcyBpbnN0YW5jZW9mIEMxKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciIpO3JldHVybiB0''@;'; put 'put ''MSgiX19ceDAxc3ltYm9sOiIuY29uY2F0KFUxfHwiIixkLCsrcykpfSxJMD1HKG51bGwpLFVlPXt2YWx1ZTpsMH0sVHQ9ZnVuY3Rpb24oQzEpe3JldHVybiBJMFtDMV19LEsyPWZ1bmN0aW9uKEMxLFUxLGkwKXt2YXIgbzE9U3RyaW5nKFUxKTtpZihGMChvMSkpe2lmKFUxPWQyLGkwLmVudW1l''@;'; put 'put ''cmFibGUpe3ZhciBMMT1HKGkwKTtMMS5lbnVtZXJhYmxlPSExfWVsc2UgTDE9aTA7VTEoQzEsbzEsTDEpLGsxKEMxLG8xLCEhaTAuZW51bWVyYWJsZSl9ZWxzZSBIMShDMSxVMSxpMCk7cmV0dXJuIEMxfSxOdD1mdW5jdGlvbihDMSl7cmV0dXJuIEwoQzEpLmZpbHRlcihGMCkubWFwKFR0KX07''@;'; put 'put ''ajEudmFsdWU9SzIsSDEodCwiZGVmaW5lUHJvcGVydHkiLGoxKSxqMS52YWx1ZT1OdCxIMSh0LGksajEpLGoxLnZhbHVlPWZ1bmN0aW9uKEMxKXtyZXR1cm4gTChDMSkuZmlsdGVyKHQyKX0sSDEodCwiZ2V0T3duUHJvcGVydHlOYW1lcyIsajEpLGoxLnZhbHVlPWZ1bmN0aW9uKEMxLFUxKXt2''@;'; put 'put ''YXIgaTA9TnQoVTEpO3JldHVybiBpMC5sZW5ndGg/VShVMSkuY29uY2F0KGkwKS5mb3JFYWNoKGZ1bmN0aW9uKG8xKXtlMi5jYWxsKFUxLG8xKSYmSzIoQzEsbzEsVTFbbzFdKX0pOlExKEMxLFUxKSxDMX0sSDEodCwiZGVmaW5lUHJvcGVydGllcyIsajEpLGoxLnZhbHVlPWUyLEgxKE0xLCJw''@;'; put 'put ''cm9wZXJ0eUlzRW51bWVyYWJsZSIsajEpLGoxLnZhbHVlPWwwLEgxKG4sIlN5bWJvbCIsajEpLGoxLnZhbHVlPWZ1bmN0aW9uKEMxKXtyZXR1cm4oQzE9Il9fXHgwMXN5bWJvbDoiLmNvbmNhdCgiX19ceDAxc3ltYm9sOiIsQzEsZCkpaW4gTTE/STBbQzFdOnQxKEMxKX0sSDEobDAsImZvciIs''@;'; put 'put ''ajEpLGoxLnZhbHVlPWZ1bmN0aW9uKEMxKXtpZih0MihDMSkpdGhyb3cgbmV3IFR5cGVFcnJvcihDMSsiIGlzIG5vdCBhIHN5bWJvbCIpO2lmKCQxLmNhbGwoSTAsQzEpJiYiX19ceDAxc3ltYm9sOiI9PT0oQzE9QzEuc2xpY2UoMTApKS5zbGljZSgwLDEwKSYmKEMxPUMxLnNsaWNlKDEwKSkh''@;'; put 'put ''PT1kKXJldHVybiAwPChDMT1DMS5zbGljZSgwLEMxLmxlbmd0aC1kLmxlbmd0aCkpLmxlbmd0aD9DMTp2b2lkIDB9LEgxKGwwLCJrZXlGb3IiLGoxKSxqMS52YWx1ZT1mdW5jdGlvbihDMSxVMSl7dmFyIGkwPUYoQzEsVTEpO3JldHVybiBpMCYmRjAoVTEpJiYoaTAuZW51bWVyYWJsZT1lMi5j''@;'; put 'put ''YWxsKEMxLFUxKSksaTB9LEgxKHQsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsajEpLGoxLnZhbHVlPWZ1bmN0aW9uKEMxLFUxKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGh8fHZvaWQgMD09PVUxP0coQzEpOm0wKEMxLFUxKX0sSDEodCwiY3JlYXRlIixqMSksajEudmFsdWU9ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgQzE9bzAuY2FsbCh0aGlzKTtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PUMxJiZGMCh0aGlzKT8iW29iamVjdCBTeW1ib2xdIjpDMX0sSDEoTTEsInRvU3RyaW5nIixqMSk7dHJ5e2lmKCEwIT09RyhIMSh7fSwiX19ceDAxc3ltYm9sOiIse2dldDpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBIMSh0aGlzLCJfX1x4MDFzeW1ib2w6Iix7dmFsdWU6ITB9KVsiX19ceDAxc3ltYm9sOiJdfX0pKVsiX19ceDAxc3ltYm9sOiJdKXRocm93IklFMTEiO3ZhciBkMj1IMX1jYXRjaChDMSl7ZDI9ZnVuY3Rpb24oVTEsaTAsbzEpe3ZhciBMMT1GKE0xLGkwKTtkZWxldGUgTTFbaTBdLEgx''@;'; put 'put ''KFUxLGkwLG8xKSxIMShNMSxpMCxMMSl9fX19KShPYmplY3QsImdldE93blByb3BlcnR5U3ltYm9scyIpLHQ9T2JqZWN0LGk9U3ltYm9sLG49dC5kZWZpbmVQcm9wZXJ0eSxkPShzPXQucHJvdG90eXBlKS50b1N0cmluZywiaXRlcmF0b3IgbWF0Y2ggcmVwbGFjZSBzZWFyY2ggc3BsaXQgaGFz''@;'; put 'put ''SW5zdGFuY2UgaXNDb25jYXRTcHJlYWRhYmxlIHVuc2NvcGFibGVzIHNwZWNpZXMgdG9QcmltaXRpdmUgdG9TdHJpbmdUYWciLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihMKXtMIGluIGl8fChuKGksTCx7dmFsdWU6aShMKX0pLCJ0b1N0cmluZ1RhZyI9PT1MJiYoKG09dC5nZXRPd25Q''@;'; put 'put ''cm9wZXJ0eURlc2NyaXB0b3IocywidG9TdHJpbmciKSkudmFsdWU9ZnVuY3Rpb24oKXt2YXIgRj1kLmNhbGwodGhpcyksRz1udWxsPT10aGlzP3RoaXM6dGhpc1tpLnRvU3RyaW5nVGFnXTtyZXR1cm4gbnVsbD09Rz9GOiJbb2JqZWN0ICIrRysiXSJ9LG4ocywidG9TdHJpbmciLG0pKSl9KSxm''@;'; put 'put ''dW5jdGlvbih0LGksbil7ZnVuY3Rpb24gcygpe3JldHVybiB0aGlzfWlbdF18fChpW3RdPWZ1bmN0aW9uKCl7dmFyIGQ9MCxtPXRoaXMsTD17bmV4dDpmdW5jdGlvbigpe3ZhciBGPW0ubGVuZ3RoPD1kO3JldHVybiBGP3tkb25lOkZ9Ontkb25lOkYsdmFsdWU6bVtkKytdfX19O3JldHVybiBM''@;'; put 'put ''W3RdPXMsTH0pLG5bdF18fChuW3RdPWZ1bmN0aW9uKCl7dmFyIGQ9U3RyaW5nLmZyb21Db2RlUG9pbnQsbT10aGlzLEw9MCxGPW0ubGVuZ3RoLEc9e25leHQ6ZnVuY3Rpb24oKXt2YXIgVT1GPD1MLEs9VT8iIjpkKG0uY29kZVBvaW50QXQoTCkpO3JldHVybiBMKz1LLmxlbmd0aCxVP3tkb25l''@;'; put 'put ''OlV9Ontkb25lOlUsdmFsdWU6S319fTtyZXR1cm4gR1t0XT1zLEd9KX0oU3ltYm9sLml0ZXJhdG9yLEFycmF5LnByb3RvdHlwZSxTdHJpbmcucHJvdG90eXBlKTt2YXIgVjE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIHZvaWQgMD09PXRoaXM/IltvYmplY3QgVW5kZWZpbmVkXSI6bnVsbD09PXRoaXM/IltvYmplY3QgTnVsbF0iOlYxLmNhbGwodGhpcyl9LE9iamVjdC5rZXlzPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5maWx0ZXIoZnVuY3Rpb24oaSl7cmV0''@;'; put 'put ''dXJuKGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGkpKSYmaS5lbnVtZXJhYmxlfSl9LFN0cmluZy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSYmU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdHx8KFN0cmluZy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5j''@;'; put 'put ''dGlvbiB0KCl7dmFyIGksbj10aGlzO3JldHVybiB4KHQsZnVuY3Rpb24ocyl7aWYoMT09cy5nJiYoaT0wKSwzIT1zLmcpcmV0dXJuIGk8bi5sZW5ndGg/cz1DKHMsbltpXSk6KHMuZz0wLHM9dm9pZCAwKSxzO2krKyxzLmc9Mn0pfSksU2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdfHwo''@;'; put 'put ''U2V0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uIHQoKXt2YXIgaSxzLG49dGhpcztyZXR1cm4geCh0LGZ1bmN0aW9uKGQpe2lmKDE9PWQuZyYmKGk9W10sbi5mb3JFYWNoKGZ1bmN0aW9uKG0pe2kucHVzaChtKX0pLHM9MCksMyE9ZC5nKXJldHVybiBzPGkubGVuZ3RoP2Q9''@;'; put 'put ''QyhkLGlbc10pOihkLmc9MCxkPXZvaWQgMCksZDtzKyssZC5nPTJ9KX0pLE1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXXx8KE1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbiB0KCl7dmFyIGkscyxuPXRoaXM7cmV0dXJuIHgodCxmdW5jdGlvbihkKXtpZigxPT1k''@;'; put 'put ''LmcmJihpPVtdLG4uZm9yRWFjaChmdW5jdGlvbihtLEwpe2kucHVzaChbTCxtXSl9KSxzPTApLDMhPWQuZylyZXR1cm4gczxpLmxlbmd0aD9kPUMoZCxpW3NdKTooZC5nPTAsZD12b2lkIDApLGQ7cysrLGQuZz0yfSl9KTt2YXIgXzE9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7aWYo''@;'; put 'put ''XzEuaW5pdEV2ZW50KCJmb28iLCEwLCEwKSxfMS5wcmV2ZW50RGVmYXVsdCgpLCFfMS5kZWZhdWx0UHJldmVudGVkKXt2YXIgUT1FdmVudC5wcm90b3R5cGUucHJldmVudERlZmF1bHQ7RXZlbnQucHJvdG90eXBlLnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxhYmxlJiYo''@;'; put 'put ''US5jYWxsKHRoaXMpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJkZWZhdWx0UHJldmVudGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9LGNvbmZpZ3VyYWJsZTohMH0pKX19dmFyIHMxPS9UcmlkZW50Ly50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO2lmKCF3aW5kb3cuRXZlbnR8''@;'; put 'put ''fHMxJiYiZnVuY3Rpb24iIT10eXBlb2Ygd2luZG93LkV2ZW50KXt2YXIgbTE9d2luZG93LkV2ZW50O2lmKHdpbmRvdy5FdmVudD1mdW5jdGlvbih0LGkpe2k9aXx8e307dmFyIG49ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7cmV0dXJuIG4uaW5pdEV2ZW50KHQsISFpLmJ1YmJsZXMs''@;'; put 'put ''ISFpLmNhbmNlbGFibGUpLG59LG0xKXtmb3IodmFyIGIxIGluIG0xKXdpbmRvdy5FdmVudFtiMV09bTFbYjFdO3dpbmRvdy5FdmVudC5wcm90b3R5cGU9bTEucHJvdG90eXBlfX1pZigoIXdpbmRvdy5DdXN0b21FdmVudHx8czEmJiJmdW5jdGlvbiIhPXR5cGVvZiB3aW5kb3cuQ3VzdG9tRXZl''@;'; put 'put ''bnQpJiYod2luZG93LkN1c3RvbUV2ZW50PWZ1bmN0aW9uKHQsaSl7aT1pfHx7fTt2YXIgbj1kb2N1bWVudC5jcmVhdGVFdmVudCgiQ3VzdG9tRXZlbnQiKTtyZXR1cm4gbi5pbml0Q3VzdG9tRXZlbnQodCwhIWkuYnViYmxlcywhIWkuY2FuY2VsYWJsZSxpLmRldGFpbCksbn0sd2luZG93LkN1''@;'; put 'put ''c3RvbUV2ZW50LnByb3RvdHlwZT13aW5kb3cuRXZlbnQucHJvdG90eXBlKSwhd2luZG93Lk1vdXNlRXZlbnR8fHMxJiYiZnVuY3Rpb24iIT10eXBlb2Ygd2luZG93Lk1vdXNlRXZlbnQpe3ZhciBCMT13aW5kb3cuTW91c2VFdmVudDtpZih3aW5kb3cuTW91c2VFdmVudD1mdW5jdGlvbih0LGkp''@;'; put 'put ''e2k9aXx8e307dmFyIG49ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTtyZXR1cm4gbi5pbml0TW91c2VFdmVudCh0LCEhaS5idWJibGVzLCEhaS5jYW5jZWxhYmxlLGkudmlld3x8d2luZG93LGkuZGV0YWlsLGkuc2NyZWVuWCxpLnNjcmVlblksaS5jbGllbnRYLGkuY2xpZW50''@;'; put 'put ''WSxpLmN0cmxLZXksaS5hbHRLZXksaS5zaGlmdEtleSxpLm1ldGFLZXksaS5idXR0b24saS5yZWxhdGVkVGFyZ2V0KSxufSxCMSlmb3IodmFyICQgaW4gQjEpd2luZG93Lk1vdXNlRXZlbnRbJF09QjFbJF07d2luZG93Lk1vdXNlRXZlbnQucHJvdG90eXBlPUIxLnByb3RvdHlwZX1PYmplY3Qu''@;'; put 'put ''Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE5vZGUucHJvdG90eXBlLCJiYXNlVVJJIil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwiYmFzZVVSSSIse2dldDpmdW5jdGlvbigpe3ZhciB0PSh0aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMpLnF1ZXJ5U2VsZWN0b3IoImJh''@;'; put 'put ''c2VbaHJlZl0iKTtyZXR1cm4gdCYmdC5ocmVmfHx3aW5kb3cubG9jYXRpb24uaHJlZn0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KTt2YXIgeix5LEQ9RWxlbWVudC5wcm90b3R5cGUsWj1udWxsIT09KHo9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihELCJhdHRyaWJ1''@;'; put 'put ''dGVzIikpJiZ2b2lkIDAhPT16P3o6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihOb2RlLnByb3RvdHlwZSwiYXR0cmlidXRlcyIpLFQ9bnVsbCE9PSh5PW51bGw9PVo/dm9pZCAwOlouZ2V0KSYmdm9pZCAwIT09eT95OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cmlidXRlc30s''@;'; put 'put ''UD1BcnJheS5wcm90b3R5cGUubWFwO0QuaGFzT3duUHJvcGVydHkoImdldEF0dHJpYnV0ZU5hbWVzIil8fChELmdldEF0dHJpYnV0ZU5hbWVzPWZ1bmN0aW9uKCl7cmV0dXJuIFAuY2FsbChULmNhbGwodGhpcyksZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZX0pfSk7dmFyIGUxLHIxPUVsZW1l''@;'; put 'put ''bnQucHJvdG90eXBlO3IxLmhhc093blByb3BlcnR5KCJtYXRjaGVzIil8fChyMS5tYXRjaGVzPW51bGwhPT0oZTE9cjEud2Via2l0TWF0Y2hlc1NlbGVjdG9yKSYmdm9pZCAwIT09ZTE/ZTE6cjEubXNNYXRjaGVzU2VsZWN0b3IpO3ZhciBaMT1Ob2RlLnByb3RvdHlwZS5hcHBlbmRDaGlsZDtm''@;'; put 'put ''dW5jdGlvbiBZKHQpeyh0PXQucHJvdG90eXBlKS5oYXNPd25Qcm9wZXJ0eSgiYXBwZW5kIil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJhcHBlbmQiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpmdW5jdGlvbihpKXtmb3IodmFyIG49W10scz0w''@;'; put 'put ''O3M8YXJndW1lbnRzLmxlbmd0aDsrK3MpbltzXT1hcmd1bWVudHNbc107Zm9yKHM9KG49YShuKSkubmV4dCgpOyFzLmRvbmU7cz1uLm5leHQoKSlaMS5jYWxsKHRoaXMsInN0cmluZyI9PXR5cGVvZihzPXMudmFsdWUpP2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKHMpOnMpfX0pfVkoRG9jdW1l''@;'; put 'put ''bnQpLFkoRG9jdW1lbnRGcmFnbWVudCksWShFbGVtZW50KTt2YXIgcSxKLEExPU5vZGUucHJvdG90eXBlLmluc2VydEJlZm9yZSxOMT1udWxsIT09KEo9bnVsbD09PShxPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTm9kZS5wcm90b3R5cGUsImZpcnN0Q2hpbGQiKSl8fHZvaWQg''@;'; put 'put ''MD09PXE/dm9pZCAwOnEuZ2V0KSYmdm9pZCAwIT09Sj9KOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlyc3RDaGlsZH07ZnVuY3Rpb24gUzEodCl7KHQ9dC5wcm90b3R5cGUpLmhhc093blByb3BlcnR5KCJwcmVwZW5kIil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcmVwZW5kIix7Y29u''@;'; put 'put ''ZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZnVuY3Rpb24oaSl7Zm9yKHZhciBuPVtdLHM9MDtzPGFyZ3VtZW50cy5sZW5ndGg7KytzKW5bc109YXJndW1lbnRzW3NdO3M9TjEuY2FsbCh0aGlzKTtmb3IodmFyIGQ9KG49YShuKSkubmV4dCgpOyFkLmRvbmU7''@;'; put 'put ''ZD1uLm5leHQoKSlBMS5jYWxsKHRoaXMsInN0cmluZyI9PXR5cGVvZihkPWQudmFsdWUpP2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKGQpOmQscyl9fSl9UzEoRG9jdW1lbnQpLFMxKERvY3VtZW50RnJhZ21lbnQpLFMxKEVsZW1lbnQpO3ZhciBuMSxpMSxmMT1Ob2RlLnByb3RvdHlwZS5hcHBl''@;'; put 'put ''bmRDaGlsZCx4MT1Ob2RlLnByb3RvdHlwZS5yZW1vdmVDaGlsZCxJMT1udWxsIT09KGkxPW51bGw9PT0objE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihOb2RlLnByb3RvdHlwZSwiZmlyc3RDaGlsZCIpKXx8dm9pZCAwPT09bjE/dm9pZCAwOm4xLmdldCkmJnZvaWQgMCE9PWkx''@;'; put 'put ''P2kxOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlyc3RDaGlsZH07ZnVuY3Rpb24gSjEodCl7KHQ9dC5wcm90b3R5cGUpLmhhc093blByb3BlcnR5KCJyZXBsYWNlQ2hpbGRyZW4iKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInJlcGxhY2VDaGlsZHJlbiIse2NvbmZpZ3VyYWJsZTohMCxl''@;'; put 'put ''bnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKGkpe2Zvcih2YXIgbj1bXSxzPTA7czxhcmd1bWVudHMubGVuZ3RoOysrcyluW3NdPWFyZ3VtZW50c1tzXTtmb3IoO251bGwhPT0ocz1JMS5jYWxsKHRoaXMpKTspeDEuY2FsbCh0aGlzLHMpO2ZvcihzPShuPWEobikpLm5l''@;'; put 'put ''eHQoKTshcy5kb25lO3M9bi5uZXh0KCkpZjEuY2FsbCh0aGlzLCJzdHJpbmciPT10eXBlb2Yocz1zLnZhbHVlKT9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzKTpzKX19KX1KMShEb2N1bWVudCksSjEoRG9jdW1lbnRGcmFnbWVudCksSjEoRWxlbWVudCk7dmFyIHQwLGYwLE0wLF8wLGkyPU5v''@;'; put 'put ''ZGUucHJvdG90eXBlLmluc2VydEJlZm9yZSx6MD1udWxsIT09KGYwPW51bGw9PT0odDA9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihOb2RlLnByb3RvdHlwZSwicGFyZW50Tm9kZSIpKXx8dm9pZCAwPT09dDA/dm9pZCAwOnQwLmdldCkmJnZvaWQgMCE9PWYwP2YwOmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMucGFyZW50Tm9kZX0sVTA9bnVsbCE9PShfMD1udWxsPT09KE0wPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTm9kZS5wcm90b3R5cGUsIm5leHRTaWJsaW5nIikpfHx2b2lkIDA9PT1NMD92b2lkIDA6TTAuZ2V0KSYmdm9pZCAwIT09XzA/XzA6ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gdGhpcy5uZXh0U2libGluZ307ZnVuY3Rpb24gSzAodCl7KHQ9dC5wcm90b3R5cGUpLmhhc093blByb3BlcnR5KCJhZnRlciIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiYWZ0ZXIiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbihpKXtmb3IodmFyIG49W10scz0wO3M8YXJndW1lbnRzLmxlbmd0aDsrK3MpbltzXT1hcmd1bWVudHNbc107aWYobnVsbCE9PShzPXowLmNhbGwodGhpcykpKWZvcih2YXIgZD1VMC5jYWxsKHRoaXMpLG09KG49YShuKSkubmV4dCgpOyFtLmRvbmU7bT1uLm5leHQoKSlpMi5j''@;'; put 'put ''YWxsKHMsInN0cmluZyI9PXR5cGVvZihtPW0udmFsdWUpP2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKG0pOm0sZCl9fSl9SzAoQ2hhcmFjdGVyRGF0YSksSzAoRWxlbWVudCk7dmFyIGswLHUyLFgwPU5vZGUucHJvdG90eXBlLmluc2VydEJlZm9yZSxrdD1udWxsIT09KHUyPW51bGw9PT0oazA9''@;'; put 'put ''T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihOb2RlLnByb3RvdHlwZSwicGFyZW50Tm9kZSIpKXx8dm9pZCAwPT09azA/dm9pZCAwOmswLmdldCkmJnZvaWQgMCE9PXUyP3UyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50Tm9kZX07ZnVuY3Rpb24gYTIodCl7KHQ9dC5wcm90''@;'; put 'put ''b3R5cGUpLmhhc093blByb3BlcnR5KCJiZWZvcmUiKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImJlZm9yZSIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKGkpe2Zvcih2YXIgbj1bXSxzPTA7czxhcmd1bWVudHMubGVuZ3RoOysr''@;'; put 'put ''cyluW3NdPWFyZ3VtZW50c1tzXTtpZihudWxsIT09KHM9a3QuY2FsbCh0aGlzKSkpZm9yKHZhciBkPShuPWEobikpLm5leHQoKTshZC5kb25lO2Q9bi5uZXh0KCkpWDAuY2FsbChzLCJzdHJpbmciPT10eXBlb2YoZD1kLnZhbHVlKT9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShkKTpkLHRoaXMp''@;'; put 'put ''fX0pfWEyKENoYXJhY3RlckRhdGEpLGEyKEVsZW1lbnQpO3ZhciBEMixwMixPdD1Ob2RlLnByb3RvdHlwZS5yZW1vdmVDaGlsZCxmMj1udWxsIT09KHAyPW51bGw9PT0oRDI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihOb2RlLnByb3RvdHlwZSwicGFyZW50Tm9kZSIpKXx8dm9p''@;'; put 'put ''ZCAwPT09RDI/dm9pZCAwOkQyLmdldCkmJnZvaWQgMCE9PXAyP3AyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50Tm9kZX07ZnVuY3Rpb24gWTEodCl7KHQ9dC5wcm90b3R5cGUpLmhhc093blByb3BlcnR5KCJyZW1vdmUiKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInJlbW92ZSIs''@;'; put 'put ''e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGk9ZjIuY2FsbCh0aGlzKTtpJiZPdC5jYWxsKGksdGhpcyl9fSl9WTEoQ2hhcmFjdGVyRGF0YSksWTEoRWxlbWVudCk7dmFyIFEwLGcyLEUyPU5vZGUucHJvdG90eXBlLmluc2Vy''@;'; put 'put ''dEJlZm9yZSxBMj1Ob2RlLnByb3RvdHlwZS5yZW1vdmVDaGlsZCxUMj1udWxsIT09KGcyPW51bGw9PT0oUTA9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihOb2RlLnByb3RvdHlwZSwicGFyZW50Tm9kZSIpKXx8dm9pZCAwPT09UTA/dm9pZCAwOlEwLmdldCkmJnZvaWQgMCE9PWcy''@;'; put 'put ''P2cyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50Tm9kZX07ZnVuY3Rpb24gWDIodCl7KHQ9dC5wcm90b3R5cGUpLmhhc093blByb3BlcnR5KCJyZXBsYWNlV2l0aCIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicmVwbGFjZVdpdGgiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJs''@;'; put 'put ''ZTohMCx3cml0YWJsZTohMCx2YWx1ZTpmdW5jdGlvbihpKXtmb3IodmFyIG49W10scz0wO3M8YXJndW1lbnRzLmxlbmd0aDsrK3MpbltzXT1hcmd1bWVudHNbc107aWYobnVsbCE9PShzPVQyLmNhbGwodGhpcykpKXtmb3IodmFyIGQ9KG49YShuKSkubmV4dCgpOyFkLmRvbmU7ZD1uLm5leHQo''@;'; put 'put ''KSlFMi5jYWxsKHMsInN0cmluZyI9PXR5cGVvZihkPWQudmFsdWUpP2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKGQpOmQsdGhpcyk7QTIuY2FsbChzLHRoaXMpfX19KX1YMihDaGFyYWN0ZXJEYXRhKSxYMihFbGVtZW50KTt2YXIgUTI9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLE4yPXdpbmRv''@;'; put 'put ''dy5IVE1MRWxlbWVudC5wcm90b3R5cGUsSjI9d2luZG93LlNWR0VsZW1lbnQucHJvdG90eXBlOyFOMi5oYXNPd25Qcm9wZXJ0eSgiY2xhc3NMaXN0Iil8fFEyLmhhc093blByb3BlcnR5KCJjbGFzc0xpc3QiKXx8SjIuaGFzT3duUHJvcGVydHkoImNsYXNzTGlzdCIpfHxPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkoUTIsImNsYXNzTGlzdCIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihOMiwiY2xhc3NMaXN0IikpO3ZhciBGMj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO0YyLnRleHRDb250ZW50PSJib2R5IHt0cmFuc2l0aW9uOiBvcGFjaXR5IGVhc2UtaW4gMC4y''@;'; put 'put ''czsgfSBcbmJvZHlbdW5yZXNvbHZlZF0ge29wYWNpdHk6IDA7IGRpc3BsYXk6IGJsb2NrOyBvdmVyZmxvdzogaGlkZGVuOyBwb3NpdGlvbjogcmVsYXRpdmU7IH0gXG4iO3ZhciBJMj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJoZWFkIik7STIuaW5zZXJ0QmVmb3JlKEYyLEkyLmZpcnN0Q2hp''@;'; put 'put ''bGQpO3ZhciBaMD13aW5kb3c7WjAuV2ViQ29tcG9uZW50cz1aMC5XZWJDb21wb25lbnRzfHx7ZmxhZ3M6e319O3ZhciBrMj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzY3JpcHRbc3JjKj0id2ViY29tcG9uZW50cy1idW5kbGUiXScpLHR0PS93Yy0oLispLyxBMD17fTtpZighQTAubm9PcHRz''@;'; put 'put ''KXtpZihsb2NhdGlvbi5zZWFyY2guc2xpY2UoMSkuc3BsaXQoIiYiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBpOyh0PXQuc3BsaXQoIj0iKSlbMF0mJihpPXRbMF0ubWF0Y2godHQpKSYmKEEwW2lbMV1dPXRbMV18fCEwKX0pLGsyKWZvcih2YXIgdzA9MCx3MT12b2lkIDA7dzE9azIuYXR0''@;'; put 'put ''cmlidXRlc1t3MF07dzArKykic3JjIiE9PXcxLm5hbWUmJihBMFt3MS5uYW1lXT13MS52YWx1ZXx8ITApO3ZhciBkMT17fTtBMC5sb2cmJkEwLmxvZy5zcGxpdCYmQTAubG9nLnNwbGl0KCIsIikuZm9yRWFjaChmdW5jdGlvbih0KXtkMVt0XT0hMH0pLEEwLmxvZz1kMX1aMC5XZWJDb21wb25l''@;'; put 'put ''bnRzLmZsYWdzPUEwO3ZhciBEMT1BMC5zaGFkeWRvbTtpZihEMSl7WjAuU2hhZHlET009WjAuU2hhZHlET018fHt9LFowLlNoYWR5RE9NLmZvcmNlPUQxO3ZhciBQMT1BMC5ub1BhdGNoO1owLlNoYWR5RE9NLm5vUGF0Y2g9InRydWUiPT09UDF8fFAxfXZhciBSMT1BMC5yZWdpc3Rlcnx8QTAu''@;'; put 'put ''Y2U7ZnVuY3Rpb24gZDAoKXt9ZnVuY3Rpb24gcTEodCl7cmV0dXJuIHQuX19zaGFkeXx8KHQuX19zaGFkeT1uZXcgZDApLHQuX19zaGFkeX1mdW5jdGlvbiBnMSh0KXtyZXR1cm4gdCYmdC5fX3NoYWR5fVIxJiZ3aW5kb3cuY3VzdG9tRWxlbWVudHMmJihaMC5jdXN0b21FbGVtZW50cy5mb3Jj''@;'; put 'put ''ZVBvbHlmaWxsPVIxKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9ZnVuY3Rpb24gaShvMSxMMSl7aWYoIW8xLmNoaWxkTm9kZXMubGVuZ3RoKXJldHVybltdO3N3aXRjaChvMS5ub2RlVHlwZSl7Y2FzZSBOb2RlLkRPQ1VNRU5UX05PREU6cmV0dXJuICQxLmNhbGwobzEsTDEpO2Nhc2UgTm9k''@;'; put 'put ''ZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFOnJldHVybiB6MS5jYWxsKG8xLEwxKTtkZWZhdWx0OnJldHVybiBNMS5jYWxsKG8xLEwxKX19dmFyIG49InVuZGVmaW5lZCI9PXR5cGVvZiBIVE1MVGVtcGxhdGVFbGVtZW50LHM9IShkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuY2xv''@;'; put 'put ''bmVOb2RlKClpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpLGQ9ITE7L1RyaWRlbnQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJmZ1bmN0aW9uKCl7ZnVuY3Rpb24gbzEoTzEscDApe2lmKE8xIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudClmb3IodmFyIEZ0O0Z0PU8xLmZpcnN0''@;'; put 'put ''Q2hpbGQ7KVcxLmNhbGwodGhpcyxGdCxwMCk7ZWxzZSBXMS5jYWxsKHRoaXMsTzEscDApO3JldHVybiBPMX1kPSEwO3ZhciBMMT1Ob2RlLnByb3RvdHlwZS5jbG9uZU5vZGU7Tm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlPWZ1bmN0aW9uKE8xKXtyZXR1cm4gTzE9TDEuY2FsbCh0aGlzLE8xKSx0''@;'; put 'put ''aGlzIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCYmKE8xLl9fcHJvdG9fXz1Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZSksTzF9LERvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3JBbGw9SFRNTEVsZW1lbnQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3JBbGwsRG9j''@;'; put 'put ''dW1lbnRGcmFnbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3Rvcj1IVE1MRWxlbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3RvcixPYmplY3QuZGVmaW5lUHJvcGVydGllcyhEb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZSx7bm9kZVR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiBOb2RlLkRP''@;'; put 'put ''Q1VNRU5UX0ZSQUdNRU5UX05PREV9LGNvbmZpZ3VyYWJsZTohMH0sbG9jYWxOYW1lOntnZXQ6ZnVuY3Rpb24oKXt9LGNvbmZpZ3VyYWJsZTohMH0sbm9kZU5hbWU6e2dldDpmdW5jdGlvbigpe3JldHVybiIjZG9jdW1lbnQtZnJhZ21lbnQifSxjb25maWd1cmFibGU6ITB9fSk7dmFyIFcxPU5v''@;'; put 'put ''ZGUucHJvdG90eXBlLmluc2VydEJlZm9yZTtOb2RlLnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9bzE7dmFyIGEwPU5vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkO05vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkPWZ1bmN0aW9uKE8xKXtyZXR1cm4gTzEgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdt''@;'; put 'put ''ZW50P28xLmNhbGwodGhpcyxPMSxudWxsKTphMC5jYWxsKHRoaXMsTzEpLE8xfTt2YXIgYjA9Tm9kZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQsUjA9Tm9kZS5wcm90b3R5cGUucmVwbGFjZUNoaWxkO05vZGUucHJvdG90eXBlLnJlcGxhY2VDaGlsZD1mdW5jdGlvbihPMSxwMCl7cmV0dXJuIE8x''@;'; put 'put ''IGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudD8obzEuY2FsbCh0aGlzLE8xLHAwKSxiMC5jYWxsKHRoaXMscDApKTpSMC5jYWxsKHRoaXMsTzEscDApLHAwfSxEb2N1bWVudC5wcm90b3R5cGUuY3JlYXRlRG9jdW1lbnRGcmFnbWVudD1mdW5jdGlvbigpe3ZhciBPMT10aGlzLmNyZWF0ZUVs''@;'; put 'put ''ZW1lbnQoImRmIik7cmV0dXJuIE8xLl9fcHJvdG9fXz1Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZSxPMX07dmFyIGwyPURvY3VtZW50LnByb3RvdHlwZS5pbXBvcnROb2RlO0RvY3VtZW50LnByb3RvdHlwZS5pbXBvcnROb2RlPWZ1bmN0aW9uKE8xLHAwKXtyZXR1cm4gcDA9bDIuY2FsbCh0''@;'; put 'put ''aGlzLE8xLHAwfHwhMSksTzEgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50JiYocDAuX19wcm90b19fPURvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlKSxwMH19KCk7dmFyIG09Tm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlLEw9RG9jdW1lbnQucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQsRj1E''@;'; put 'put ''b2N1bWVudC5wcm90b3R5cGUuaW1wb3J0Tm9kZSxHPU5vZGUucHJvdG90eXBlLnJlbW92ZUNoaWxkLFU9Tm9kZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQsSz1Ob2RlLnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQsSDE9RE9NUGFyc2VyLnByb3RvdHlwZS5wYXJzZUZyb21TdHJpbmcsUTE9T2JqZWN0''@;'; put 'put ''LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3cuSFRNTEVsZW1lbnQucHJvdG90eXBlLCJpbm5lckhUTUwiKXx8e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlubmVySFRNTH0sc2V0OmZ1bmN0aW9uKG8xKXt0aGlzLmlubmVySFRNTD1vMX19LGoxPU9iamVjdC5nZXRPd25Qcm9w''@;'; put 'put ''ZXJ0eURlc2NyaXB0b3Iod2luZG93Lk5vZGUucHJvdG90eXBlLCJjaGlsZE5vZGVzIil8fHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzfX0sTTE9RWxlbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3RvckFsbCwkMT1Eb2N1bWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3Rv''@;'; put 'put ''ckFsbCx6MT1Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yQWxsLG8wPWZ1bmN0aW9uKCl7aWYoIW4pe3ZhciBvMT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpLEwxPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7cmV0dXJuIEwxLmNv''@;'; put 'put ''bnRlbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLG8xLmNvbnRlbnQuYXBwZW5kQ2hpbGQoTDEpLDA9PT0obzE9bzEuY2xvbmVOb2RlKCEwKSkuY29udGVudC5jaGlsZE5vZGVzLmxlbmd0aHx8MD09PW8xLmNvbnRlbnQuZmlyc3RDaGlsZC5jb250ZW50LmNo''@;'; put 'put ''aWxkTm9kZXMubGVuZ3RofHxzfX0oKTtpZihuKXt2YXIgazE9ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJ0ZW1wbGF0ZSIpLG0wPSEwLFQxPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7VDEudGV4dENvbnRlbnQ9InRlbXBsYXRle2Rpc3BsYXk6''@;'; put 'put ''bm9uZTt9Ijt2YXIgdDI9ZG9jdW1lbnQuaGVhZDt0Mi5pbnNlcnRCZWZvcmUoVDEsdDIuZmlyc3RFbGVtZW50Q2hpbGQpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJvdG90eXBlKTt2YXIgRjA9IWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLmhhc093blBy''@;'; put 'put ''b3BlcnR5KCJpbm5lckhUTUwiKTt0Llo9ZnVuY3Rpb24obzEpe2lmKCFvMS5jb250ZW50JiZvMS5uYW1lc3BhY2VVUkk9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJKXtvMS5jb250ZW50PWsxLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtmb3IodmFyIEwxO0wxPW8x''@;'; put 'put ''LmZpcnN0Q2hpbGQ7KVUuY2FsbChvMS5jb250ZW50LEwxKTtpZihGMClvMS5fX3Byb3RvX189dC5wcm90b3R5cGU7ZWxzZSBpZihvMS5jbG9uZU5vZGU9ZnVuY3Rpb24oVzEpe3JldHVybiB0LnNhKHRoaXMsVzEpfSxtMCl0cnl7dDEobzEpLGwwKG8xKX1jYXRjaChXMSl7bTA9ITF9dC5ib290''@;'; put 'put ''c3RyYXAobzEuY29udGVudCl9fTt2YXIgZTI9e29wdGlvbjpbInNlbGVjdCJdLHRoZWFkOlsidGFibGUiXSxjb2w6WyJjb2xncm91cCIsInRhYmxlIl0sdHI6WyJ0Ym9keSIsInRhYmxlIl0sdGg6WyJ0ciIsInRib2R5IiwidGFibGUiXSx0ZDpbInRyIiwidGJvZHkiLCJ0YWJsZSJdfSx0MT1m''@;'; put 'put ''dW5jdGlvbihvMSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8xLCJpbm5lckhUTUwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZDIodGhpcyl9LHNldDpmdW5jdGlvbihMMSl7dmFyIFcxPWUyWygvPChbYS16XVteL1wwPlx4MjBcdFxyXG5cZl0rKS9pLmV4ZWMoTDEpfHxbIiIsIiJdKVsxXS50''@;'; put 'put ''b0xvd2VyQ2FzZSgpXTtpZihXMSlmb3IodmFyIGEwPTA7YTA8VzEubGVuZ3RoO2EwKyspTDE9IjwiK1cxW2EwXSsiPiIrTDErIjwvIitXMVthMF0rIj4iO2ZvcihrMS5ib2R5LmlubmVySFRNTD1MMSx0LmJvb3RzdHJhcChrMSk7dGhpcy5jb250ZW50LmZpcnN0Q2hpbGQ7KUcuY2FsbCh0aGlz''@;'; put 'put ''LmNvbnRlbnQsdGhpcy5jb250ZW50LmZpcnN0Q2hpbGQpO2lmKEwxPWsxLmJvZHksVzEpZm9yKGEwPTA7YTA8VzEubGVuZ3RoO2EwKyspTDE9TDEubGFzdENoaWxkO2Zvcig7TDEuZmlyc3RDaGlsZDspVS5jYWxsKHRoaXMuY29udGVudCxMMS5maXJzdENoaWxkKX0sY29uZmlndXJhYmxlOiEw''@;'; put 'put ''fSl9LGwwPWZ1bmN0aW9uKG8xKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobzEsIm91dGVySFRNTCIse2dldDpmdW5jdGlvbigpe3JldHVybiI8dGVtcGxhdGU+Iit0aGlzLmlubmVySFRNTCsiPC90ZW1wbGF0ZT4ifSxzZXQ6ZnVuY3Rpb24oTDEpe2lmKCF0aGlzLnBhcmVudE5vZGUpdGhyb3cg''@;'; put 'put ''RXJyb3IoIkZhaWxlZCB0byBzZXQgdGhlICdvdXRlckhUTUwnIHByb3BlcnR5IG9uICdFbGVtZW50JzogVGhpcyBlbGVtZW50IGhhcyBubyBwYXJlbnQgbm9kZS4iKTtmb3IoazEuYm9keS5pbm5lckhUTUw9TDEsTDE9dGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQo''@;'; put 'put ''KTtrMS5ib2R5LmZpcnN0Q2hpbGQ7KVUuY2FsbChMMSxrMS5ib2R5LmZpcnN0Q2hpbGQpO0suY2FsbCh0aGlzLnBhcmVudE5vZGUsTDEsdGhpcyl9LGNvbmZpZ3VyYWJsZTohMH0pfTt0MSh0LnByb3RvdHlwZSksbDAodC5wcm90b3R5cGUpLHQuYm9vdHN0cmFwPWZ1bmN0aW9uKG8xKXtmb3Io''@;'; put 'put ''dmFyIGEwLEwxPTAsVzE9KG8xPWkobzEsInRlbXBsYXRlIikpLmxlbmd0aDtMMTxXMSYmKGEwPW8xW0wxXSk7TDErKyl0LlooYTApfSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixmdW5jdGlvbigpe3QuYm9vdHN0cmFwKGRvY3VtZW50KX0pLERvY3VtZW50''@;'; put 'put ''LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKCl7dmFyIG8xPUwuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiJ0ZW1wbGF0ZSI9PT1vMS5sb2NhbE5hbWUmJnQuWihvMSksbzF9LERPTVBhcnNlci5wcm90b3R5cGUucGFyc2VGcm9tU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIG8x''@;'; put 'put ''PUgxLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gdC5ib290c3RyYXAobzEpLG8xfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoSFRNTEVsZW1lbnQucHJvdG90eXBlLCJpbm5lckhUTUwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZDIodGhpcyl9LHNldDpmdW5jdGlvbihvMSl7UTEuc2V0''@;'; put 'put ''LmNhbGwodGhpcyxvMSksdC5ib290c3RyYXAodGhpcyl9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfSk7dmFyIEkwPS9bJlx1MDBBMCJdL2csVWU9L1smXHUwMEEwPD5dL2csVHQ9ZnVuY3Rpb24obzEpe3N3aXRjaChvMSl7Y2FzZSImIjpyZXR1cm4iJmFtcDsiO2Nhc2UiPCI6cmV0''@;'; put 'put ''dXJuIiZsdDsiO2Nhc2UiPiI6cmV0dXJuIiZndDsiO2Nhc2UnIic6cmV0dXJuIiZxdW90OyI7Y2FzZSJceGEwIjpyZXR1cm4iJm5ic3A7In19LEsyPShUMT1mdW5jdGlvbihvMSl7Zm9yKHZhciBMMT17fSxXMT0wO1cxPG8xLmxlbmd0aDtXMSsrKUwxW28xW1cxXV09ITA7cmV0dXJuIEwxfSko''@;'; put 'put ''ImFyZWEgYmFzZSBiciBjb2wgY29tbWFuZCBlbWJlZCBociBpbWcgaW5wdXQga2V5Z2VuIGxpbmsgbWV0YSBwYXJhbSBzb3VyY2UgdHJhY2sgd2JyIi5zcGxpdCgiICIpKSxOdD1UMSgic3R5bGUgc2NyaXB0IHhtcCBpZnJhbWUgbm9lbWJlZCBub2ZyYW1lcyBwbGFpbnRleHQgbm9zY3JpcHQi''@;'; put 'put ''LnNwbGl0KCIgIikpLGQyPWZ1bmN0aW9uKG8xLEwxKXsidGVtcGxhdGUiPT09bzEubG9jYWxOYW1lJiYobzE9bzEuY29udGVudCk7Zm9yKHZhciBsMixXMT0iIixhMD1MMT9MMShvMSk6ajEuZ2V0LmNhbGwobzEpLGIwPTAsUjA9YTAubGVuZ3RoO2IwPFIwJiYobDI9YTBbYjBdKTtiMCsrKXt0''@;'; put 'put ''Ont2YXIgTzE9bDIscDA9bzEsRnQ9TDE7c3dpdGNoKE8xLm5vZGVUeXBlKXtjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOmZvcih2YXIgV2U9TzEubG9jYWxOYW1lLEl0PSI8IitXZSxVcj1PMS5hdHRyaWJ1dGVzLG9hPTA7cDA9VXJbb2FdO29hKyspSXQrPSIgIitwMC5uYW1lKyc9IicrcDAudmFs''@;'; put 'put ''dWUucmVwbGFjZShJMCxUdCkrJyInO0l0Kz0iPiIsTzE9SzJbV2VdP0l0Okl0K2QyKE8xLEZ0KSsiPC8iK1dlKyI+IjticmVhayB0O2Nhc2UgTm9kZS5URVhUX05PREU6TzE9TzEuZGF0YSxPMT1wMCYmTnRbcDAubG9jYWxOYW1lXT9PMTpPMS5yZXBsYWNlKFVlLFR0KTticmVhayB0O2Nhc2Ug''@;'; put 'put ''Tm9kZS5DT01NRU5UX05PREU6TzE9Ilx4M2MhLS0iK08xLmRhdGErIi0tXHgzZSI7YnJlYWsgdDtkZWZhdWx0OnRocm93IHdpbmRvdy5jb25zb2xlLmVycm9yKE8xKSxFcnJvcigibm90IGltcGxlbWVudGVkIil9fVcxKz1PMX1yZXR1cm4gVzF9fWlmKG58fG8wKXt0LnNhPWZ1bmN0aW9uKG8x''@;'; put 'put ''LEwxKXt2YXIgVzE9bS5jYWxsKG8xLCExKTtyZXR1cm4gdGhpcy5aJiZ0aGlzLlooVzEpLEwxJiYoVS5jYWxsKFcxLmNvbnRlbnQsbS5jYWxsKG8xLmNvbnRlbnQsITApKSxDMShXMS5jb250ZW50LG8xLmNvbnRlbnQpKSxXMX07dmFyIEMxPWZ1bmN0aW9uKG8xLEwxKXtpZihMMS5xdWVyeVNl''@;'; put 'put ''bGVjdG9yQWxsJiYwIT09KEwxPWkoTDEsInRlbXBsYXRlIikpLmxlbmd0aClmb3IodmFyIGIwLFIwLFcxPTAsYTA9KG8xPWkobzEsInRlbXBsYXRlIikpLmxlbmd0aDtXMTxhMDtXMSsrKVIwPUwxW1cxXSxiMD1vMVtXMV0sdCYmdC5aJiZ0LlooUjApLEsuY2FsbChiMC5wYXJlbnROb2RlLFUx''@;'; put 'put ''LmNhbGwoUjAsITApLGIwKX0sVTE9Tm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlPWZ1bmN0aW9uKG8xKXtpZighZCYmcyYmdGhpcyBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpe2lmKCFvMSlyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTt2YXIg''@;'; put 'put ''TDE9aTAuY2FsbCh0aGlzLm93bmVyRG9jdW1lbnQsdGhpcywhMCl9ZWxzZSBMMT10aGlzLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJiJ0ZW1wbGF0ZSI9PT10aGlzLmxvY2FsTmFtZSYmdGhpcy5uYW1lc3BhY2VVUkk9PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VV''@;'; put 'put ''Ukk/dC5zYSh0aGlzLG8xKTptLmNhbGwodGhpcyxvMSk7cmV0dXJuIG8xJiZDMShMMSx0aGlzKSxMMX0saTA9RG9jdW1lbnQucHJvdG90eXBlLmltcG9ydE5vZGU9ZnVuY3Rpb24obzEsTDEpe2lmKEwxPUwxfHwhMSwidGVtcGxhdGUiPT09bzEubG9jYWxOYW1lKXJldHVybiB0LnNhKG8xLEwx''@;'; put 'put ''KTt2YXIgVzE9Ri5jYWxsKHRoaXMsbzEsTDEpO2lmKEwxKXtDMShXMSxvMSksbzE9aShXMSwnc2NyaXB0Om5vdChbdHlwZV0pLHNjcmlwdFt0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il0sc2NyaXB0W3R5cGU9InRleHQvamF2YXNjcmlwdCJdJyk7Zm9yKHZhciBhMCxiMD0wO2IwPG8x''@;'; put 'put ''Lmxlbmd0aDtiMCsrKXthMD1vMVtiMF0sKEwxPUwuY2FsbChkb2N1bWVudCwic2NyaXB0IikpLnRleHRDb250ZW50PWEwLnRleHRDb250ZW50O2Zvcih2YXIgTzEsUjA9YTAuYXR0cmlidXRlcyxsMj0wO2wyPFIwLmxlbmd0aDtsMisrKUwxLnNldEF0dHJpYnV0ZSgoTzE9UjBbbDJdKS5uYW1l''@;'; put 'put ''LE8xLnZhbHVlKTtLLmNhbGwoYTAucGFyZW50Tm9kZSxMMSxhMCl9fXJldHVybiBXMX19biYmKHdpbmRvdy5IVE1MVGVtcGxhdGVFbGVtZW50PXQpfSgpLGQwLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57fX07dmFyIHkxPXdpbmRvdy5TaGFkeURPTXx8e307eTEuWWE9ISgh''@;'; put 'put ''RWxlbWVudC5wcm90b3R5cGUuYXR0YWNoU2hhZG93fHwhTm9kZS5wcm90b3R5cGUuZ2V0Um9vdE5vZGUpO3ZhciBXMD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE5vZGUucHJvdG90eXBlLCJmaXJzdENoaWxkIik7ZnVuY3Rpb24gTzAoKXtyZXR1cm4gRG9jdW1lbnQucHJvdG90''@;'; put 'put ''eXBlLm1zRWxlbWVudHNGcm9tUG9pbnQ/Im1zRWxlbWVudHNGcm9tUG9pbnQiOiJlbGVtZW50c0Zyb21Qb2ludCJ9ZnVuY3Rpb24gSzEodCl7cmV0dXJuKHQ9ZzEodCkpJiZ2b2lkIDAhPT10LmZpcnN0Q2hpbGR9ZnVuY3Rpb24gZTAodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBTaGFkb3dSb290''@;'; put 'put ''fWZ1bmN0aW9uIEowKHQpe3JldHVybih0PSh0PWcxKHQpKSYmdC5yb290KSYmJGwodCl9eTEuSD0hIShXMCYmVzAuY29uZmlndXJhYmxlJiZXMC5nZXQpLHkxLnlhPXkxLmZvcmNlfHwheTEuWWEseTEuSj15MS5ub1BhdGNofHwhMSx5MS5mYT15MS5wcmVmZXJQZXJmb3JtYW5jZSx5MS5BYT0i''@;'; put 'put ''b24tZGVtYW5kIj09PXkxLkoseTEuTmE9bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgiVHJpZGVudCIpO3ZhciBQMD1FbGVtZW50LnByb3RvdHlwZSxPMj1QMC5tYXRjaGVzfHxQMC5tYXRjaGVzU2VsZWN0b3J8fFAwLm1vek1hdGNoZXNTZWxlY3Rvcnx8UDAubXNNYXRjaGVzU2VsZWN0b3J8''@;'; put 'put ''fFAwLm9NYXRjaGVzU2VsZWN0b3J8fFAwLndlYmtpdE1hdGNoZXNTZWxlY3RvcixnMD1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIiksWDE9MCxIMD1bXTtmdW5jdGlvbiBEMCh0KXtIMC5wdXNoKHQpLGcwLnRleHRDb250ZW50PVgxKyt9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24o''@;'; put 'put ''KXtmb3IoO0gwLmxlbmd0aDspdHJ5e0gwLnNoaWZ0KCkoKX1jYXRjaCh0KXt0aHJvdyBnMC50ZXh0Q29udGVudD1YMSsrLHR9fSkub2JzZXJ2ZShnMCx7Y2hhcmFjdGVyRGF0YTohMH0pO3ZhciB1MD1kb2N1bWVudC5jb250YWlucz9mdW5jdGlvbih0LGkpe3JldHVybiB0Ll9fc2hhZHlfbmF0''@;'; put 'put ''aXZlX2NvbnRhaW5zKGkpfTpmdW5jdGlvbih0LGkpe3JldHVybiB0PT09aXx8dC5kb2N1bWVudEVsZW1lbnQmJnQuZG9jdW1lbnRFbGVtZW50Ll9fc2hhZHlfbmF0aXZlX2NvbnRhaW5zKGkpfTtmdW5jdGlvbiB4MCh0LGkpe2Zvcig7aTspe2lmKGk9PXQpcmV0dXJuITA7aT1pLl9fc2hhZHlf''@;'; put 'put ''cGFyZW50Tm9kZX1yZXR1cm4hMX1mdW5jdGlvbiBCMCh0KXtmb3IodmFyIGk9dC5sZW5ndGgtMTswPD1pO2ktLSl7dmFyIG49dFtpXSxzPW4uZ2V0QXR0cmlidXRlKCJpZCIpfHxuLmdldEF0dHJpYnV0ZSgibmFtZSIpO3MmJiJsZW5ndGgiIT09cyYmaXNOYU4ocykmJih0W3NdPW4pfXJldHVy''@;'; put 'put ''biB0Lml0ZW09ZnVuY3Rpb24oZCl7cmV0dXJuIHRbZF19LHQubmFtZWRJdGVtPWZ1bmN0aW9uKGQpe2lmKCJsZW5ndGgiIT09ZCYmaXNOYU4oZCkmJnRbZF0pcmV0dXJuIHRbZF07Zm9yKHZhciBtPWEodCksTD1tLm5leHQoKTshTC5kb25lO0w9bS5uZXh0KCkpaWYoKChMPUwudmFsdWUpLmdl''@;'; put 'put ''dEF0dHJpYnV0ZSgiaWQiKXx8TC5nZXRBdHRyaWJ1dGUoIm5hbWUiKSk9PWQpcmV0dXJuIEw7cmV0dXJuIG51bGx9LHR9ZnVuY3Rpb24gUDIodCl7dmFyIGk9W107Zm9yKHQ9dC5fX3NoYWR5X25hdGl2ZV9maXJzdENoaWxkO3Q7dD10Ll9fc2hhZHlfbmF0aXZlX25leHRTaWJsaW5nKWkucHVz''@;'; put 'put ''aCh0KTtyZXR1cm4gaX1mdW5jdGlvbiB2Mih0KXt2YXIgaT1bXTtmb3IodD10Ll9fc2hhZHlfZmlyc3RDaGlsZDt0O3Q9dC5fX3NoYWR5X25leHRTaWJsaW5nKWkucHVzaCh0KTtyZXR1cm4gaX1mdW5jdGlvbiByMih0LGksbil7aWYobi5jb25maWd1cmFibGU9ITAsbi52YWx1ZSl0W2ldPW4u''@;'; put 'put ''dmFsdWU7ZWxzZSB0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxuKX1jYXRjaChzKXt9fWZ1bmN0aW9uIHMwKHQsaSxuLHMpe2Zvcih2YXIgZCBpbiBuPXZvaWQgMD09PW4/IiI6bixpKXMmJjA8PXMuaW5kZXhPZihkKXx8cjIodCxuK2QsaVtkXSl9ZnVuY3Rpb24gUHQodCxpKXtmb3Io''@;'; put 'put ''dmFyIG4gaW4gaSluIGluIHQmJnIyKHQsbixpW25dKX1mdW5jdGlvbiBuMCh0KXt2YXIgaT17fTtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkuZm9yRWFjaChmdW5jdGlvbihuKXtpW25dPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKX0pLGl9ZnVuY3Rp''@;'; put 'put ''b24gQnQodCxpKXtmb3IodmFyIGQsbj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhpKSxzPTA7czxuLmxlbmd0aDtzKyspdFtkPW5bc11dPWlbZF19ZnVuY3Rpb24gJGUodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBOb2RlP3Q6ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIrdCl9ZnVuY3Rp''@;'; put 'put ''b24gSDIodCl7Zm9yKHZhciBpPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7KytuKWlbbl09YXJndW1lbnRzW25dO2lmKDE9PT1pLmxlbmd0aClyZXR1cm4gJGUoaVswXSk7bj1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Zm9yKHZhciBzPShpPWEoaSkpLm5leHQoKTshcy5k''@;'; put 'put ''b25lO3M9aS5uZXh0KCkpbi5hcHBlbmRDaGlsZCgkZShzLnZhbHVlKSk7cmV0dXJuIG59dmFyIEd0LEIyPVtdO2Z1bmN0aW9uIHFlKHQpe0d0fHwoR3Q9ITAsRDAoZXQpKSxCMi5wdXNoKHQpfWZ1bmN0aW9uIGV0KCl7R3Q9ITE7Zm9yKHZhciB0PSEhQjIubGVuZ3RoO0IyLmxlbmd0aDspQjIu''@;'; put 'put ''c2hpZnQoKSgpO3JldHVybiB0fWZ1bmN0aW9uIGp0KCl7dGhpcy5nPSExLHRoaXMuYWRkZWROb2Rlcz1bXSx0aGlzLnJlbW92ZWROb2Rlcz1bXSx0aGlzLm9hPW5ldyBTZXR9ZXQubGlzdD1CMixqdC5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXtpZih0aGlzLmcpe3RoaXMuZz0hMTt2YXIg''@;'; put 'put ''dD10aGlzLnRha2VSZWNvcmRzKCk7dC5sZW5ndGgmJnRoaXMub2EuZm9yRWFjaChmdW5jdGlvbihpKXtpKHQpfSl9fSxqdC5wcm90b3R5cGUudGFrZVJlY29yZHM9ZnVuY3Rpb24oKXtpZih0aGlzLmFkZGVkTm9kZXMubGVuZ3RofHx0aGlzLnJlbW92ZWROb2Rlcy5sZW5ndGgpe3ZhciB0PVt7''@;'; put 'put ''YWRkZWROb2Rlczp0aGlzLmFkZGVkTm9kZXMscmVtb3ZlZE5vZGVzOnRoaXMucmVtb3ZlZE5vZGVzfV07cmV0dXJuIHRoaXMuYWRkZWROb2Rlcz1bXSx0aGlzLnJlbW92ZWROb2Rlcz1bXSx0fXJldHVybltdfTt2YXIgcGE9L1smXHUwMEEwIl0vZyxmYT0vWyZcdTAwQTA8Pl0vZztmdW5jdGlv''@;'; put 'put ''biBZZSh0KXtzd2l0Y2godCl7Y2FzZSImIjpyZXR1cm4iJmFtcDsiO2Nhc2UiPCI6cmV0dXJuIiZsdDsiO2Nhc2UiPiI6cmV0dXJuIiZndDsiO2Nhc2UnIic6cmV0dXJuIiZxdW90OyI7Y2FzZSJceGEwIjpyZXR1cm4iJm5ic3A7In19ZnVuY3Rpb24gS2UodCl7Zm9yKHZhciBpPXt9LG49MDtu''@;'; put 'put ''PHQubGVuZ3RoO24rKylpW3Rbbl1dPSEwO3JldHVybiBpfXZhciBnYT1LZSgiYXJlYSBiYXNlIGJyIGNvbCBjb21tYW5kIGVtYmVkIGhyIGltZyBpbnB1dCBrZXlnZW4gbGluayBtZXRhIHBhcmFtIHNvdXJjZSB0cmFjayB3YnIiLnNwbGl0KCIgIikpLEFhPUtlKCJzdHlsZSBzY3JpcHQgeG1w''@;'; put 'put ''IGlmcmFtZSBub2VtYmVkIG5vZnJhbWVzIHBsYWludGV4dCBub3NjcmlwdCIuc3BsaXQoIiAiKSk7ZnVuY3Rpb24gUnQodCxpKXsidGVtcGxhdGUiPT09dC5sb2NhbE5hbWUmJih0PXQuY29udGVudCk7Zm9yKHZhciBuPSIiLHM9aT9pKHQpOnQuY2hpbGROb2RlcyxkPTAsbT1zLmxlbmd0aCxM''@;'; put 'put ''PXZvaWQgMDtkPG0mJihMPXNbZF0pO2QrKyl7dDp7dmFyIEY9TCxHPXQsVT1pO3N3aXRjaChGLm5vZGVUeXBlKXtjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOmZvcih2YXIgajEsSz0iPCIrKEc9Ri5sb2NhbE5hbWUpLEgxPUYuYXR0cmlidXRlcyxRMT0wO2oxPUgxW1ExXTtRMSsrKUsrPSIgIitq''@;'; put 'put ''MS5uYW1lKyc9IicrajEudmFsdWUucmVwbGFjZShwYSxZZSkrJyInO0srPSI+IixGPWdhW0ddP0s6SytSdChGLFUpKyI8LyIrRysiPiI7YnJlYWsgdDtjYXNlIE5vZGUuVEVYVF9OT0RFOkY9Ri5kYXRhLEY9RyYmQWFbRy5sb2NhbE5hbWVdP0Y6Ri5yZXBsYWNlKGZhLFllKTticmVhayB0O2Nh''@;'; put 'put ''c2UgTm9kZS5DT01NRU5UX05PREU6Rj0iXHgzYyEtLSIrRi5kYXRhKyItLVx4M2UiO2JyZWFrIHQ7ZGVmYXVsdDp0aHJvdyB3aW5kb3cuY29uc29sZS5lcnJvcihGKSxFcnJvcigibm90IGltcGxlbWVudGVkIil9fW4rPUZ9cmV0dXJuIG59dmFyIGx0PXkxLkgsenQ9e3F1ZXJ5U2VsZWN0b3I6''@;'; put 'put ''ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19zaGFkeV9uYXRpdmVfcXVlcnlTZWxlY3Rvcih0KX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX3NoYWR5X25hdGl2ZV9xdWVyeVNlbGVjdG9yQWxsKHQpfX0sWGU9e307ZnVuY3Rpb24gUWUodCl7WGVbdF09ZnVu''@;'; put 'put ''Y3Rpb24oaSl7cmV0dXJuIGlbIl9fc2hhZHlfbmF0aXZlXyIrdF19fWZ1bmN0aW9uIEcyKHQsaSl7Zm9yKHZhciBuIGluIHMwKHQsaSwiX19zaGFkeV9uYXRpdmVfIiksaSlRZShuKX1mdW5jdGlvbiBjMCh0LGkpe2k9dm9pZCAwPT09aT9bXTppO2Zvcih2YXIgbj0wO248aS5sZW5ndGg7bisr''@;'; put 'put ''KXt2YXIgcz1pW25dLGQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHMpO2QmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19zaGFkeV9uYXRpdmVfIitzLGQpLGQudmFsdWU/enRbc118fCh6dFtzXT1kLnZhbHVlKTpRZShzKSl9fXZhciB5MD1kb2N1bWVudC5jcmVhdGVU''@;'; put 'put ''cmVlV2Fsa2VyKGRvY3VtZW50LE5vZGVGaWx0ZXIuU0hPV19BTEwsbnVsbCwhMSksTDA9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihkb2N1bWVudCxOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCxudWxsLCExKSxVdD1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQo''@;'; put 'put ''ImluZXJ0Iik7ZnVuY3Rpb24gSmUodCl7Zm9yKHZhciBpO2k9dC5fX3NoYWR5X25hdGl2ZV9maXJzdENoaWxkOyl0Ll9fc2hhZHlfbmF0aXZlX3JlbW92ZUNoaWxkKGkpfXZhciBXdD1bImZpcnN0RWxlbWVudENoaWxkIiwibGFzdEVsZW1lbnRDaGlsZCIsImNoaWxkcmVuIiwiY2hpbGRFbGVt''@;'; put 'put ''ZW50Q291bnQiXSwkdD1bInF1ZXJ5U2VsZWN0b3IiLCJxdWVyeVNlbGVjdG9yQWxsIiwiYXBwZW5kIiwicHJlcGVuZCIsInJlcGxhY2VDaGlsZHJlbiJdLHF0PW4wKHtnZXQgY2hpbGROb2Rlcygpe3JldHVybiB0aGlzLl9fc2hhZHlfY2hpbGROb2Rlc30sZ2V0IGZpcnN0Q2hpbGQoKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5fX3NoYWR5X2ZpcnN0Q2hpbGR9LGdldCBsYXN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5fX3NoYWR5X2xhc3RDaGlsZH0sZ2V0IGNoaWxkRWxlbWVudENvdW50KCl7cmV0dXJuIHRoaXMuX19zaGFkeV9jaGlsZEVsZW1lbnRDb3VudH0sZ2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''X19zaGFkeV9jaGlsZHJlbn0sZ2V0IGZpcnN0RWxlbWVudENoaWxkKCl7cmV0dXJuIHRoaXMuX19zaGFkeV9maXJzdEVsZW1lbnRDaGlsZH0sZ2V0IGxhc3RFbGVtZW50Q2hpbGQoKXtyZXR1cm4gdGhpcy5fX3NoYWR5X2xhc3RFbGVtZW50Q2hpbGR9LGdldCBzaGFkb3dSb290KCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuX19zaGFkeV9zaGFkb3dSb290fX0pLFl0PW4wKHtnZXQgdGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5fX3NoYWR5X3RleHRDb250ZW50fSxzZXQgdGV4dENvbnRlbnQodCl7dGhpcy5fX3NoYWR5X3RleHRDb250ZW50PXR9LGdldCBpbm5lckhUTUwoKXtyZXR1cm4gdGhpcy5fX3No''@;'; put 'put ''YWR5X2lubmVySFRNTH0sc2V0IGlubmVySFRNTCh0KXt0aGlzLl9fc2hhZHlfaW5uZXJIVE1MPXR9fSksS3Q9bjAoe2dldCBwYXJlbnRFbGVtZW50KCl7cmV0dXJuIHRoaXMuX19zaGFkeV9wYXJlbnRFbGVtZW50fSxnZXQgcGFyZW50Tm9kZSgpe3JldHVybiB0aGlzLl9fc2hhZHlfcGFyZW50''@;'; put 'put ''Tm9kZX0sZ2V0IG5leHRTaWJsaW5nKCl7cmV0dXJuIHRoaXMuX19zaGFkeV9uZXh0U2libGluZ30sZ2V0IHByZXZpb3VzU2libGluZygpe3JldHVybiB0aGlzLl9fc2hhZHlfcHJldmlvdXNTaWJsaW5nfSxnZXQgbmV4dEVsZW1lbnRTaWJsaW5nKCl7cmV0dXJuIHRoaXMuX19zaGFkeV9uZXh0''@;'; put 'put ''RWxlbWVudFNpYmxpbmd9LGdldCBwcmV2aW91c0VsZW1lbnRTaWJsaW5nKCl7cmV0dXJuIHRoaXMuX19zaGFkeV9wcmV2aW91c0VsZW1lbnRTaWJsaW5nfSxnZXQgY2xhc3NOYW1lKCl7cmV0dXJuIHRoaXMuX19zaGFkeV9jbGFzc05hbWV9LHNldCBjbGFzc05hbWUodCl7dGhpcy5fX3NoYWR5''@;'; put 'put ''X2NsYXNzTmFtZT10fX0pO2Z1bmN0aW9uIFh0KHQpe2Zvcih2YXIgaSBpbiB0KXt2YXIgbj10W2ldO24mJihuLmVudW1lcmFibGU9ITEpfX1YdChxdCksWHQoWXQpLFh0KEt0KTt2YXIgdGw9eTEuSHx8ITA9PT15MS5KLGVsPXRsP2Z1bmN0aW9uKCl7fTpmdW5jdGlvbih0KXt2YXIgaT1xMSh0''@;'; put 'put ''KTtpLlBhfHwoaS5QYT0hMCxQdCh0LEt0KSl9LGxsPXRsP2Z1bmN0aW9uKCl7fTpmdW5jdGlvbih0KXt2YXIgaT1xMSh0KTtpLk9hfHwoaS5PYT0hMCxQdCh0LHF0KSx3aW5kb3cuY3VzdG9tRWxlbWVudHMmJndpbmRvdy5jdXN0b21FbGVtZW50cy5wb2x5ZmlsbFdyYXBGbHVzaENhbGxiYWNr''@;'; put 'put ''JiYheTEuSnx8UHQodCxZdCkpfSxqMj0iX19ldmVudFdyYXBwZXJzIitEYXRlLm5vdygpLFF0PWZ1bmN0aW9uKCl7dmFyIHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFdmVudC5wcm90b3R5cGUsImNvbXBvc2VkIik7cmV0dXJuIHQ/ZnVuY3Rpb24oaSl7cmV0dXJuIHQuZ2V0''@;'; put 'put ''LmNhbGwoaSl9Om51bGx9KCksSGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXZhciBpPSExLG49e2dldCBjYXB0dXJlKCl7cmV0dXJuIGk9ITAsITF9fTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLHQsbiksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3Qi''@;'; put 'put ''LHQsbiksaX0oKTtmdW5jdGlvbiBpbCh0KXtpZih0JiYib2JqZWN0Ij09dHlwZW9mIHQpdmFyIGk9ISF0LmNhcHR1cmUsbj0hIXQub25jZSxzPSEhdC5wYXNzaXZlLGQ9dC5VO2Vsc2UgaT0hIXQscz1uPSExO3JldHVybntMYTpkLGNhcHR1cmU6aSxvbmNlOm4scGFzc2l2ZTpzLEphOkhhP3Q6''@;'; put 'put ''aX19dmFyIENhPXtibHVyOiEwLGZvY3VzOiEwLGZvY3VzaW46ITAsZm9jdXNvdXQ6ITAsY2xpY2s6ITAsZGJsY2xpY2s6ITAsbW91c2Vkb3duOiEwLG1vdXNlZW50ZXI6ITAsbW91c2VsZWF2ZTohMCxtb3VzZW1vdmU6ITAsbW91c2VvdXQ6ITAsbW91c2VvdmVyOiEwLG1vdXNldXA6ITAsd2hl''@;'; put 'put ''ZWw6ITAsYmVmb3JlaW5wdXQ6ITAsaW5wdXQ6ITAsa2V5ZG93bjohMCxrZXl1cDohMCxjb21wb3NpdGlvbnN0YXJ0OiEwLGNvbXBvc2l0aW9udXBkYXRlOiEwLGNvbXBvc2l0aW9uZW5kOiEwLHRvdWNoc3RhcnQ6ITAsdG91Y2hlbmQ6ITAsdG91Y2htb3ZlOiEwLHRvdWNoY2FuY2VsOiEwLHBv''@;'; put 'put ''aW50ZXJvdmVyOiEwLHBvaW50ZXJlbnRlcjohMCxwb2ludGVyZG93bjohMCxwb2ludGVybW92ZTohMCxwb2ludGVydXA6ITAscG9pbnRlcmNhbmNlbDohMCxwb2ludGVyb3V0OiEwLHBvaW50ZXJsZWF2ZTohMCxnb3Rwb2ludGVyY2FwdHVyZTohMCxsb3N0cG9pbnRlcmNhcHR1cmU6ITAsZHJh''@;'; put 'put ''Z3N0YXJ0OiEwLGRyYWc6ITAsZHJhZ2VudGVyOiEwLGRyYWdsZWF2ZTohMCxkcmFnb3ZlcjohMCxkcm9wOiEwLGRyYWdlbmQ6ITAsRE9NQWN0aXZhdGU6ITAsRE9NRm9jdXNJbjohMCxET01Gb2N1c091dDohMCxrZXlwcmVzczohMH0sYWw9e0RPTUF0dHJNb2RpZmllZDohMCxET01BdHRyaWJ1''@;'; put 'put ''dGVOYW1lQ2hhbmdlZDohMCxET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQ6ITAsRE9NRWxlbWVudE5hbWVDaGFuZ2VkOiEwLERPTU5vZGVJbnNlcnRlZDohMCxET01Ob2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQ6ITAsRE9NTm9kZVJlbW92ZWQ6ITAsRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQ6''@;'; put 'put ''ITAsRE9NU3VidHJlZU1vZGlmaWVkOiEwfTtmdW5jdGlvbiBybCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIE5vZGU/dC5fX3NoYWR5X2dldFJvb3ROb2RlKCk6dH1mdW5jdGlvbiBpdCh0LGkpe3ZhciBuPVtdLHM9dDtmb3IodD1ybCh0KTtzOyluLnB1c2gocykscz1zLl9fc2hhZHlfYXNzaWdu''@;'; put 'put ''ZWRTbG90P3MuX19zaGFkeV9hc3NpZ25lZFNsb3Q6cy5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSYmcy5ob3N0JiYoaXx8cyE9PXQpP3MuaG9zdDpzLl9fc2hhZHlfcGFyZW50Tm9kZTtyZXR1cm4gbltuLmxlbmd0aC0xXT09PWRvY3VtZW50JiZuLnB1c2god2luZG93''@;'; put 'put ''KSxufWZ1bmN0aW9uIEp0KHQsaSl7aWYoIWUwKXJldHVybiB0O3Q9aXQodCwhMCk7Zm9yKHZhciBzLG0sbj0wLGQ9dm9pZCAwLEw9dm9pZCAwO248aS5sZW5ndGg7bisrKWlmKChtPXJsKHM9aVtuXSkpIT09ZCYmKEw9dC5pbmRleE9mKG0pLGQ9bSksIWUwKG0pfHwtMTxMKXJldHVybiBzfWZ1''@;'; put 'put ''bmN0aW9uIHRlKHQpe2Z1bmN0aW9uIGkobixzKXtyZXR1cm4obj1uZXcgdChuLHMpKS5fX2NvbXBvc2VkPXMmJiEhcy5jb21wb3NlZCxufXJldHVybiBpLl9fcHJvdG9fXz10LGkucHJvdG90eXBlPXQucHJvdG90eXBlLGl9dmFyIG5sPXtmb2N1czohMCxibHVyOiEwfTtmdW5jdGlvbiBjbCh0''@;'; put 'put ''KXtyZXR1cm4gdC5fX3RhcmdldCE9PXQudGFyZ2V0fHx0Ll9fcmVsYXRlZFRhcmdldCE9PXQucmVsYXRlZFRhcmdldH1mdW5jdGlvbiBvbCh0LGksbil7aWYobj1pLl9faGFuZGxlcnMmJmkuX19oYW5kbGVyc1t0LnR5cGVdJiZpLl9faGFuZGxlcnNbdC50eXBlXVtuXSlmb3IodmFyIGQscz0w''@;'; put 'put ''OyhkPW5bc10pJiYoIWNsKHQpfHx0LnRhcmdldCE9PXQucmVsYXRlZFRhcmdldCkmJihkLmNhbGwoaSx0KSwhdC5fX2ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCk7cysrKTt9ZnVuY3Rpb24gc2wodCl7dmFyIGk9dC5jb21wb3NlZFBhdGgoKSxuPWkubWFwKGZ1bmN0aW9uKEcpe3JldHVy''@;'; put 'put ''biBKdChHLGkpfSkscz10LmJ1YmJsZXM7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImN1cnJlbnRUYXJnZXQiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTH19KTt2YXIgZD1FdmVudC5DQVBUVVJJTkdfUEhBU0U7T2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KHQsImV2ZW50UGhhc2UiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZH19KTtmb3IodmFyIG09aS5sZW5ndGgtMTswPD1tO20tLSl7dmFyIEw9aVttXTtpZihkPUw9PT1uW21dP0V2ZW50LkFUX1RBUkdFVDpFdmVudC5DQVBUVVJJ''@;'; put 'put ''TkdfUEhBU0Usb2wodCxMLCJjYXB0dXJlIiksdC5yYSlyZXR1cm59Zm9yKG09MDttPGkubGVuZ3RoO20rKyl7dmFyIEY9KEw9aVttXSk9PT1uW21dO2lmKChGfHxzKSYmKGQ9Rj9FdmVudC5BVF9UQVJHRVQ6RXZlbnQuQlVCQkxJTkdfUEhBU0Usb2wodCxMLCJidWJibGUiKSx0LnJhKSlyZXR1''@;'; put 'put ''cm59ZD0wLEw9bnVsbH1mdW5jdGlvbiBobCh0LGksbixzLGQsbSl7Zm9yKHZhciBMPTA7TDx0Lmxlbmd0aDtMKyspe3ZhciBGPXRbTF07aWYoaT09PUYubm9kZSYmbj09PUYudHlwZSYmcz09PUYuY2FwdHVyZSYmZD09PUYub25jZSYmbT09PUYucGFzc2l2ZSlyZXR1cm4gTH1yZXR1cm4tMX1m''@;'; put 'put ''dW5jdGlvbiBkbCh0KXtyZXR1cm4gZXQoKSwheTEuZmEmJnRoaXMgaW5zdGFuY2VvZiBOb2RlJiYhdTAoZG9jdW1lbnQsdGhpcyk/KHQuX190YXJnZXR8fGllKHQsdGhpcyksc2wodCkpOnRoaXMuX19zaGFkeV9uYXRpdmVfZGlzcGF0Y2hFdmVudCh0KX1mdW5jdGlvbiBlZSh0LGksbil7dmFy''@;'; put 'put ''IHM9aWwobiksZD1zLmNhcHR1cmUsbT1zLm9uY2UsTD1zLnBhc3NpdmUsRj1zLkxhO2lmKHM9cy5KYSxpKXt2YXIgRz10eXBlb2YgaTtpZigoImZ1bmN0aW9uIj09PUd8fCJvYmplY3QiPT09RykmJigib2JqZWN0IiE9PUd8fGkuaGFuZGxlRXZlbnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBpLmhh''@;'; put 'put ''bmRsZUV2ZW50KSl7aWYoYWxbdF0pcmV0dXJuIHRoaXMuX19zaGFkeV9uYXRpdmVfYWRkRXZlbnRMaXN0ZW5lcih0LGkscyk7dmFyIFU9Rnx8dGhpcztpZihGPWlbajJdKXtpZigtMTxobChGLFUsdCxkLG0sTCkpcmV0dXJufWVsc2UgaVtqMl09W107Rj1mdW5jdGlvbihLKXtpZihtJiZ0aGlz''@;'; put 'put ''Ll9fc2hhZHlfcmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGksbiksSy5fX3RhcmdldHx8aWUoSyksVSE9PXRoaXMpe3ZhciBIMT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEssImN1cnJlbnRUYXJnZXQiKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoSywiY3VycmVudFRhcmdldCIse2dl''@;'; put 'put ''dDpmdW5jdGlvbigpe3JldHVybiBVfSxjb25maWd1cmFibGU6ITB9KTt2YXIgUTE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihLLCJldmVudFBoYXNlIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KEssImV2ZW50UGhhc2UiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxn''@;'; put 'put ''ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZD9FdmVudC5DQVBUVVJJTkdfUEhBU0U6RXZlbnQuQlVCQkxJTkdfUEhBU0V9fSl9aWYoSy5fX3ByZXZpb3VzQ3VycmVudFRhcmdldD1LLmN1cnJlbnRUYXJnZXQsKCFlMChVKSYmInNsb3QiIT09VS5sb2NhbE5hbWV8fC0xIT1LLmNvbXBvc2VkUGF0aCgp''@;'; put 'put ''LmluZGV4T2YoVSkpJiYoSy5jb21wb3NlZHx8LTE8Sy5jb21wb3NlZFBhdGgoKS5pbmRleE9mKFUpKSlpZihjbChLKSYmSy50YXJnZXQ9PT1LLnJlbGF0ZWRUYXJnZXQpSy5ldmVudFBoYXNlPT09RXZlbnQuQlVCQkxJTkdfUEhBU0UmJksuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7ZWxz''@;'; put 'put ''ZSBpZihLLmV2ZW50UGhhc2U9PT1FdmVudC5DQVBUVVJJTkdfUEhBU0V8fEsuYnViYmxlc3x8Sy50YXJnZXQ9PT1VfHxVIGluc3RhbmNlb2YgV2luZG93KXt2YXIgajE9ImZ1bmN0aW9uIj09PUc/aS5jYWxsKFUsSyk6aS5oYW5kbGVFdmVudCYmaS5oYW5kbGVFdmVudChLKTtyZXR1cm4gVSE9''@;'; put 'put ''PXRoaXMmJihIMT8oT2JqZWN0LmRlZmluZVByb3BlcnR5KEssImN1cnJlbnRUYXJnZXQiLEgxKSxIMT1udWxsKTpkZWxldGUgSy5jdXJyZW50VGFyZ2V0LFExPyhPYmplY3QuZGVmaW5lUHJvcGVydHkoSywiZXZlbnRQaGFzZSIsUTEpLFExPW51bGwpOmRlbGV0ZSBLLmV2ZW50UGhhc2UpLGox''@;'; put 'put ''fX0saVtqMl0ucHVzaCh7bm9kZTpVLHR5cGU6dCxjYXB0dXJlOmQsb25jZTptLHBhc3NpdmU6TCxwYjpGfSksdGhpcy5fX2hhbmRsZXJzPXRoaXMuX19oYW5kbGVyc3x8e30sdGhpcy5fX2hhbmRsZXJzW3RdPXRoaXMuX19oYW5kbGVyc1t0XXx8e2NhcHR1cmU6W10sYnViYmxlOltdfSx0aGlz''@;'; put 'put ''Ll9faGFuZGxlcnNbdF1bZD8iY2FwdHVyZSI6ImJ1YmJsZSJdLnB1c2goRiksbmxbdF18fHRoaXMuX19zaGFkeV9uYXRpdmVfYWRkRXZlbnRMaXN0ZW5lcih0LEYscyl9fX1mdW5jdGlvbiBsZSh0LGksbil7aWYoaSl7dmFyIHM9aWwobik7bj1zLmNhcHR1cmU7dmFyIGQ9cy5vbmNlLG09cy5w''@;'; put 'put ''YXNzaXZlLEw9cy5MYTtpZihzPXMuSmEsYWxbdF0pcmV0dXJuIHRoaXMuX19zaGFkeV9uYXRpdmVfcmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGkscyk7dmFyIEY9THx8dGhpcztMPXZvaWQgMDt2YXIgRz1udWxsO3RyeXtHPWlbajJdfWNhdGNoKFUpe31HJiYtMTwoZD1obChHLEYsdCxuLGQsbSkp''@;'; put 'put ''JiYoTD1HLnNwbGljZShkLDEpWzBdLnBiLEcubGVuZ3RofHwoaVtqMl09dm9pZCAwKSksdGhpcy5fX3NoYWR5X25hdGl2ZV9yZW1vdmVFdmVudExpc3RlbmVyKHQsTHx8aSxzKSxMJiZ0aGlzLl9faGFuZGxlcnMmJnRoaXMuX19oYW5kbGVyc1t0XSYmLTE8KGk9KHQ9dGhpcy5fX2hhbmRsZXJz''@;'; put 'put ''W3RdW24/ImNhcHR1cmUiOiJidWJibGUiXSkuaW5kZXhPZihMKSkmJnQuc3BsaWNlKGksMSl9fXZhciB1bD1uMCh7Z2V0IGNvbXBvc2VkKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuX19jb21wb3NlZCYmKFF0P3RoaXMuX19jb21wb3NlZD0iZm9jdXNpbiI9PT10aGlzLnR5cGV8fCJmb2N1c291''@;'; put 'put ''dCI9PT10aGlzLnR5cGV8fFF0KHRoaXMpOiExIT09dGhpcy5pc1RydXN0ZWQmJih0aGlzLl9fY29tcG9zZWQ9Q2FbdGhpcy50eXBlXSkpLHRoaXMuX19jb21wb3NlZHx8ITF9LGNvbXBvc2VkUGF0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9fY29tcG9zZWRQYXRofHwodGhpcy5fX2NvbXBv''@;'; put 'put ''c2VkUGF0aD1pdCh0aGlzLl9fdGFyZ2V0LHRoaXMuY29tcG9zZWQpKSx0aGlzLl9fY29tcG9zZWRQYXRofSxnZXQgdGFyZ2V0KCl7cmV0dXJuIEp0KHRoaXMuY3VycmVudFRhcmdldHx8dGhpcy5fX3ByZXZpb3VzQ3VycmVudFRhcmdldCx0aGlzLmNvbXBvc2VkUGF0aCgpKX0sZ2V0IHJlbGF0''@;'; put 'put ''ZWRUYXJnZXQoKXtyZXR1cm4gdGhpcy5fX3JlbGF0ZWRUYXJnZXQ/KHRoaXMuX19yZWxhdGVkVGFyZ2V0Q29tcG9zZWRQYXRofHwodGhpcy5fX3JlbGF0ZWRUYXJnZXRDb21wb3NlZFBhdGg9aXQodGhpcy5fX3JlbGF0ZWRUYXJnZXQsITApKSxKdCh0aGlzLmN1cnJlbnRUYXJnZXR8fHRoaXMu''@;'; put 'put ''X19wcmV2aW91c0N1cnJlbnRUYXJnZXQsdGhpcy5fX3JlbGF0ZWRUYXJnZXRDb21wb3NlZFBhdGgpKTpudWxsfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXtFdmVudC5wcm90b3R5cGUuc3RvcFByb3BhZ2F0aW9uLmNhbGwodGhpcyksdGhpcy5yYT0hMH0sc3RvcEltbWVkaWF0ZVByb3Bh''@;'; put 'put ''Z2F0aW9uOmZ1bmN0aW9uKCl7RXZlbnQucHJvdG90eXBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbi5jYWxsKHRoaXMpLHRoaXMucmE9dGhpcy5fX2ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD0hMH19KTtmdW5jdGlvbiBpZSh0LGkpe2lmKHQuX190YXJnZXQ9aT12b2lkIDA9PT1pP3Qu''@;'; put 'put ''dGFyZ2V0OmksdC5fX3JlbGF0ZWRUYXJnZXQ9dC5yZWxhdGVkVGFyZ2V0LHkxLkgpe2lmKCEoaT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmhhc093blByb3BlcnR5KCJfX3NoYWR5X3BhdGNoZWRQcm90byIpKXt2YXIgbj1PYmplY3QuY3JlYXRlKGkpO24uX19zaGFkeV9zb3VyY2VQcm90''@;'; put 'put ''bz1pLHMwKG4sdWwpLGkuX19zaGFkeV9wYXRjaGVkUHJvdG89bn10Ll9fcHJvdG9fXz1pLl9fc2hhZHlfcGF0Y2hlZFByb3RvfWVsc2UgczAodCx1bCl9dmFyIE1hPXRlKEV2ZW50KSxaYT10ZShDdXN0b21FdmVudCkseWE9dGUoTW91c2VFdmVudCkscGw9T2JqZWN0LmdldE93blByb3BlcnR5''@;'; put 'put ''TmFtZXMoRWxlbWVudC5wcm90b3R5cGUpLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4ib24iPT09dC5zdWJzdHJpbmcoMCwyKX0pLGZsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEhUTUxFbGVtZW50LnByb3RvdHlwZSkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiJvbiI9PT10LnN1''@;'; put 'put ''YnN0cmluZygwLDIpfSk7ZnVuY3Rpb24gZ2wodCl7cmV0dXJue3NldDpmdW5jdGlvbihpKXt2YXIgbj1xMSh0aGlzKSxzPXQuc3Vic3RyaW5nKDIpO24uVHx8KG4uVD17fSksbi5UW3RdJiZ0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIocyxuLlRbdF0pLHRoaXMuX19zaGFkeV9hZGRFdmVudExp''@;'; put 'put ''c3RlbmVyKHMsaSksbi5UW3RdPWl9LGdldDpmdW5jdGlvbigpe3ZhciBpPWcxKHRoaXMpO3JldHVybiBpJiZpLlQmJmkuVFt0XX0sY29uZmlndXJhYmxlOiEwfX1mdW5jdGlvbiBSMih0LGkpe3JldHVybntpbmRleDp0LGdhOltdLG5hOml9fWZ1bmN0aW9uIFNhKHQsaSxuLHMpe3ZhciBkPTAs''@;'; put 'put ''bT0wLEw9MCxGPTAsRz1NYXRoLm1pbihpLWQscy1tKTtpZigwPT1kJiYwPT1tKXQ6e2ZvcihMPTA7TDxHO0wrKylpZih0W0xdIT09bltMXSlicmVhayB0O0w9R31pZihpPT10Lmxlbmd0aCYmcz09bi5sZW5ndGgpe0Y9dC5sZW5ndGg7Zm9yKHZhciBVPW4ubGVuZ3RoLEs9MDtLPEctTCYmYmEo''@;'; put 'put ''dFstLUZdLG5bLS1VXSk7KUsrKztGPUt9aWYobSs9TCxzLT1GLChpLT1GKS0oZCs9TCk9PTAmJnMtbT09MClyZXR1cm5bXTtpZihkPT1pKXtmb3IoaT1SMihkLDApO208czspaS5nYS5wdXNoKG5bbSsrXSk7cmV0dXJuW2ldfWlmKG09PXMpcmV0dXJuW1IyKGQsaS1kKV07Zm9yKHM9cy0oTD1t''@;'; put 'put ''KSsxLEY9aS0oRz1kKSsxLGk9QXJyYXkocyksVT0wO1U8cztVKyspaVtVXT1BcnJheShGKSxpW1VdWzBdPVU7Zm9yKFU9MDtVPEY7VSsrKWlbMF1bVV09VTtmb3IoVT0xO1U8cztVKyspZm9yKEs9MTtLPEY7SysrKWlmKHRbRytLLTFdPT09bltMK1UtMV0paVtVXVtLXT1pW1UtMV1bSy0xXTtl''@;'; put 'put ''bHNle3ZhciBIMT1pW1UtMV1bS10rMSxRMT1pW1VdW0stMV0rMTtpW1VdW0tdPUgxPFExP0gxOlExfWZvcihzPWlbRz1pLmxlbmd0aC0xXVtMPWlbMF0ubGVuZ3RoLTFdLHQ9W107MDxHfHwwPEw7KTA9PUc/KHQucHVzaCgyKSxMLS0pOjA9PUw/KHQucHVzaCgzKSxHLS0pOihGPWlbRy0xXVtM''@;'; put 'put ''LTFdLChIMT0oVT1pW0ctMV1bTF0pPChLPWlbR11bTC0xXSk/VTxGP1U6RjpLPEY/SzpGKT09Rj8oRj09cz90LnB1c2goMCk6KHQucHVzaCgxKSxzPUYpLEctLSxMLS0pOkgxPT1VPyh0LnB1c2goMyksRy0tLHM9VSk6KHQucHVzaCgyKSxMLS0scz1LKSk7Zm9yKHQucmV2ZXJzZSgpLGk9dm9p''@;'; put 'put ''ZCAwLEc9W10sTD0wO0w8dC5sZW5ndGg7TCsrKXN3aXRjaCh0W0xdKXtjYXNlIDA6aSYmKEcucHVzaChpKSxpPXZvaWQgMCksZCsrLG0rKzticmVhaztjYXNlIDE6aXx8KGk9UjIoZCwwKSksaS5uYSsrLGQrKyxpLmdhLnB1c2goblttXSksbSsrO2JyZWFrO2Nhc2UgMjppfHwoaT1SMihkLDAp''@;'; put 'put ''KSxpLm5hKyssZCsrO2JyZWFrO2Nhc2UgMzppfHwoaT1SMihkLDApKSxpLmdhLnB1c2goblttXSksbSsrfXJldHVybiBpJiZHLnB1c2goaSksR31mdW5jdGlvbiBiYSh0LGkpe3JldHVybiB0PT09aX12YXIgQWw9bjAoe2Rpc3BhdGNoRXZlbnQ6ZGwsYWRkRXZlbnRMaXN0ZW5lcjplZSxyZW1v''@;'; put 'put ''dmVFdmVudExpc3RlbmVyOmxlfSksYWU9bnVsbDtmdW5jdGlvbiBuMigpe3JldHVybiBhZXx8KGFlPXdpbmRvdy5TaGFkeUNTUyYmd2luZG93LlNoYWR5Q1NTLlNjb3BpbmdTaGltKSxhZXx8bnVsbH1mdW5jdGlvbiB2bCh0LGksbil7dmFyIHM9bjIoKTtyZXR1cm4hKCFzfHwiY2xhc3MiIT09''@;'; put 'put ''aXx8KHMuc2V0RWxlbWVudENsYXNzKHQsbiksMCkpfWZ1bmN0aW9uIEhsKHQsaSl7dmFyIG49bjIoKTtuJiZuLnVuc2NvcGVOb2RlKHQsaSl9ZnVuY3Rpb24gQ2wodCxpKXt2YXIgbj1uMigpO2lmKCFuKXJldHVybiEwO2lmKHQubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05P''@;'; put 'put ''REUpe2ZvcihuPSEwLHQ9dC5fX3NoYWR5X2ZpcnN0Q2hpbGQ7dDt0PXQuX19zaGFkeV9uZXh0U2libGluZyluPW4mJkNsKHQsaSk7cmV0dXJuIG59cmV0dXJuIHQubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERXx8bi5jdXJyZW50U2NvcGVGb3JOb2RlKHQpPT09aX1mdW5jdGlvbiBhdCh0''@;'; put 'put ''KXtpZih0Lm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREUpcmV0dXJuIiI7dmFyIGk9bjIoKTtyZXR1cm4gaT9pLmN1cnJlbnRTY29wZUZvck5vZGUodCk6IiJ9ZnVuY3Rpb24gcmUodCxpKXtpZih0KWZvcih0Lm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJmkodCksdD10Ll9fc2hh''@;'; put 'put ''ZHlfZmlyc3RDaGlsZDt0O3Q9dC5fX3NoYWR5X25leHRTaWJsaW5nKXQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmcmUodCxpKX12YXIgbmU9d2luZG93LmRvY3VtZW50LGNlPXkxLmZhLFZsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTm9kZS5wcm90b3R5cGUsImlz''@;'; put 'put ''Q29ubmVjdGVkIiksbWw9VmwmJlZsLmdldDtmdW5jdGlvbiBvZSh0KXtmb3IodmFyIGk7aT10Ll9fc2hhZHlfZmlyc3RDaGlsZDspdC5fX3NoYWR5X3JlbW92ZUNoaWxkKGkpfWZ1bmN0aW9uIE1sKHQpe3ZhciBpPWcxKHQpO2lmKGkmJnZvaWQgMCE9PWkucWEpZm9yKGk9dC5fX3NoYWR5X2Zp''@;'; put 'put ''cnN0Q2hpbGQ7aTtpPWkuX19zaGFkeV9uZXh0U2libGluZylNbChpKTsodD1nMSh0KSkmJih0LnFhPXZvaWQgMCl9ZnVuY3Rpb24gWmwodCl7dmFyIGk9dDtpZih0JiYic2xvdCI9PT10LmxvY2FsTmFtZSl7dmFyIG49ZzEodCk7KG49biYmbi5hYSkmJihpPW4ubGVuZ3RoP25bMF06WmwodC5f''@;'; put 'put ''X3NoYWR5X25leHRTaWJsaW5nKSl9cmV0dXJuIGl9ZnVuY3Rpb24geWwodCxpLG4pe2lmKHQ9KHQ9ZzEodCkpJiZ0LmVhKXtpZihpKWlmKGkubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpZm9yKHZhciBzPTAsZD1pLmNoaWxkTm9kZXMubGVuZ3RoO3M8ZDtzKyspdC5h''@;'; put 'put ''ZGRlZE5vZGVzLnB1c2goaS5jaGlsZE5vZGVzW3NdKTtlbHNlIHQuYWRkZWROb2Rlcy5wdXNoKGkpO24mJnQucmVtb3ZlZE5vZGVzLnB1c2gobiksZnVuY3Rpb24gc2EodCl7dC5nfHwodC5nPSEwLEQwKGZ1bmN0aW9uKCl7dC5mbHVzaCgpfSkpfSh0KX19dmFyIHJ0PW4wKHtnZXQgcGFyZW50''@;'; put 'put ''Tm9kZSgpe3ZhciB0PWcxKHRoaXMpO3JldHVybiB2b2lkIDAhPT0odD10JiZ0LnBhcmVudE5vZGUpP3Q6dGhpcy5fX3NoYWR5X25hdGl2ZV9wYXJlbnROb2RlfSxnZXQgZmlyc3RDaGlsZCgpe3ZhciB0PWcxKHRoaXMpO3JldHVybiB2b2lkIDAhPT0odD10JiZ0LmZpcnN0Q2hpbGQpP3Q6dGhp''@;'; put 'put ''cy5fX3NoYWR5X25hdGl2ZV9maXJzdENoaWxkfSxnZXQgbGFzdENoaWxkKCl7dmFyIHQ9ZzEodGhpcyk7cmV0dXJuIHZvaWQgMCE9PSh0PXQmJnQubGFzdENoaWxkKT90OnRoaXMuX19zaGFkeV9uYXRpdmVfbGFzdENoaWxkfSxnZXQgbmV4dFNpYmxpbmcoKXt2YXIgdD1nMSh0aGlzKTtyZXR1''@;'; put 'put ''cm4gdm9pZCAwIT09KHQ9dCYmdC5uZXh0U2libGluZyk/dDp0aGlzLl9fc2hhZHlfbmF0aXZlX25leHRTaWJsaW5nfSxnZXQgcHJldmlvdXNTaWJsaW5nKCl7dmFyIHQ9ZzEodGhpcyk7cmV0dXJuIHZvaWQgMCE9PSh0PXQmJnQucHJldmlvdXNTaWJsaW5nKT90OnRoaXMuX19zaGFkeV9uYXRp''@;'; put 'put ''dmVfcHJldmlvdXNTaWJsaW5nfSxnZXQgY2hpbGROb2Rlcygpe2lmKEsxKHRoaXMpKXt2YXIgdD1nMSh0aGlzKTtpZighdC5jaGlsZE5vZGVzKXt0LmNoaWxkTm9kZXM9W107Zm9yKHZhciBpPXRoaXMuX19zaGFkeV9maXJzdENoaWxkO2k7aT1pLl9fc2hhZHlfbmV4dFNpYmxpbmcpdC5jaGls''@;'; put 'put ''ZE5vZGVzLnB1c2goaSl9dmFyIG49dC5jaGlsZE5vZGVzfWVsc2Ugbj10aGlzLl9fc2hhZHlfbmF0aXZlX2NoaWxkTm9kZXM7cmV0dXJuIG4uaXRlbT1mdW5jdGlvbihzKXtyZXR1cm4gbltzXX0sbn0sZ2V0IHBhcmVudEVsZW1lbnQoKXt2YXIgdD1nMSh0aGlzKTtyZXR1cm4odD10JiZ0LnBh''@;'; put 'put ''cmVudE5vZGUpJiZ0Lm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREUmJih0PW51bGwpLHZvaWQgMCE9PXQ/dDp0aGlzLl9fc2hhZHlfbmF0aXZlX3BhcmVudEVsZW1lbnR9LGdldCBpc0Nvbm5lY3RlZCgpe2lmKG1sJiZtbC5jYWxsKHRoaXMpKXJldHVybiEwO2lmKHRoaXMubm9kZVR5cGU9''@;'; put 'put ''PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSlyZXR1cm4hMTt2YXIgdD10aGlzLm93bmVyRG9jdW1lbnQ7aWYobnVsbD09PXR8fHUwKHQsdGhpcykpcmV0dXJuITA7Zm9yKHQ9dGhpczt0JiYhKHQgaW5zdGFuY2VvZiBEb2N1bWVudCk7KXQ9dC5fX3NoYWR5X3BhcmVudE5vZGV8fChlMCh0''@;'; put 'put ''KT90Lmhvc3Q6dm9pZCAwKTtyZXR1cm4hISh0JiZ0IGluc3RhbmNlb2YgRG9jdW1lbnQpfSxnZXQgdGV4dENvbnRlbnQoKXtpZihLMSh0aGlzKSl7Zm9yKHZhciB0PVtdLGk9dGhpcy5fX3NoYWR5X2ZpcnN0Q2hpbGQ7aTtpPWkuX19zaGFkeV9uZXh0U2libGluZylpLm5vZGVUeXBlIT09Tm9k''@;'; put 'put ''ZS5DT01NRU5UX05PREUmJnQucHVzaChpLl9fc2hhZHlfdGV4dENvbnRlbnQpO3JldHVybiB0LmpvaW4oIiIpfXJldHVybiB0aGlzLl9fc2hhZHlfbmF0aXZlX3RleHRDb250ZW50fSxzZXQgdGV4dENvbnRlbnQodCl7c3dpdGNoKG51bGw9PXQmJih0PSIiKSx0aGlzLm5vZGVUeXBlKXtjYXNl''@;'; put 'put ''IE5vZGUuRUxFTUVOVF9OT0RFOmNhc2UgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFOmlmKCFLMSh0aGlzKSYmeTEuSCl7dmFyIGk9dGhpcy5fX3NoYWR5X2ZpcnN0Q2hpbGQ7KGkhPXRoaXMuX19zaGFkeV9sYXN0Q2hpbGR8fGkmJmkubm9kZVR5cGUhPU5vZGUuVEVYVF9OT0RFKSYmb2Uo''@;'; put 'put ''dGhpcyksdGhpcy5fX3NoYWR5X25hdGl2ZV90ZXh0Q29udGVudD10fWVsc2Ugb2UodGhpcyksKDA8dC5sZW5ndGh8fHRoaXMubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSkmJnRoaXMuX19zaGFkeV9pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodCkpO2JyZWFrO2Rl''@;'; put 'put ''ZmF1bHQ6dGhpcy5ub2RlVmFsdWU9dH19LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGkpe2lmKHRoaXMub3duZXJEb2N1bWVudCE9PW5lJiZ0Lm93bmVyRG9jdW1lbnQhPT1uZSlyZXR1cm4gdGhpcy5fX3NoYWR5X25hdGl2ZV9pbnNlcnRCZWZvcmUodCxpKSx0O2lmKHQ9PT10aGlzKXRocm93''@;'; put 'put ''IEVycm9yKCJGYWlsZWQgdG8gZXhlY3V0ZSAnYXBwZW5kQ2hpbGQnIG9uICdOb2RlJzogVGhlIG5ldyBjaGlsZCBlbGVtZW50IGNvbnRhaW5zIHRoZSBwYXJlbnQuIik7aWYoaSl7dmFyIG49ZzEoaSk7aWYodm9pZCAwIT09KG49biYmbi5wYXJlbnROb2RlKSYmbiE9PXRoaXN8fHZvaWQgMD09''@;'; put 'put ''PW4mJmkuX19zaGFkeV9uYXRpdmVfcGFyZW50Tm9kZSE9PXRoaXMpdGhyb3cgRXJyb3IoIkZhaWxlZCB0byBleGVjdXRlICdpbnNlcnRCZWZvcmUnIG9uICdOb2RlJzogVGhlIG5vZGUgYmVmb3JlIHdoaWNoIHRoZSBuZXcgbm9kZSBpcyB0byBiZSBpbnNlcnRlZCBpcyBub3QgYSBjaGlsZCBv''@;'; put 'put ''ZiB0aGlzIG5vZGUuIil9aWYoaT09PXQpcmV0dXJuIHQ7eWwodGhpcyx0KTt2YXIgcz1bXSxkPShuPW0yKHRoaXMpKT9uLmhvc3QubG9jYWxOYW1lOmF0KHRoaXMpLG09dC5fX3NoYWR5X3BhcmVudE5vZGU7aWYobSl7dmFyIEw9YXQodCksRj0hIW58fCFtMih0KXx8Y2UmJnZvaWQgMCE9PXRo''@;'; put 'put ''aXMuX19ub0luc2VydGlvblBvaW50O20uX19zaGFkeV9yZW1vdmVDaGlsZCh0LEYpfW09ITA7dmFyIEc9KCFjZXx8dm9pZCAwPT09dC5fX25vSW5zZXJ0aW9uUG9pbnQmJnZvaWQgMD09PXRoaXMuX19ub0luc2VydGlvblBvaW50KSYmIUNsKHQsZCksVT1uJiYhdC5fX25vSW5zZXJ0aW9uUG9p''@;'; put 'put ''bnQmJighY2V8fHQubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpO3JldHVybihVfHxHKSYmKEcmJihMPUx8fGF0KHQpKSxyZSh0LGZ1bmN0aW9uKEspe2lmKFUmJiJzbG90Ij09PUsubG9jYWxOYW1lJiZzLnB1c2goSyksRyl7dmFyIEgxPUw7bjIoKSYmKEgxJiZIbChL''@;'; put 'put ''LEgxKSwoSDE9bjIoKSkmJkgxLnNjb3BlTm9kZShLLGQpKX19KSkscy5sZW5ndGgmJih6bChuKSxuLmkucHVzaC5hcHBseShuLmksYyhzKSkscTAobikpLEsxKHRoaXMpJiYoZnVuY3Rpb24ga2EodCxpLG4pe290KGksMik7dmFyIHM9cTEoaSk7aWYodm9pZCAwIT09cy5maXJzdENoaWxkJiYo''@;'; put 'put ''cy5jaGlsZE5vZGVzPW51bGwpLHQubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpZm9yKHQ9dC5fX3NoYWR5X25hdGl2ZV9maXJzdENoaWxkO3Q7dD10Ll9fc2hhZHlfbmF0aXZlX25leHRTaWJsaW5nKUlsKHQsaSxzLG4pO2Vsc2UgSWwodCxpLHMsbil9KHQsdGhpcyxp''@;'; put 'put ''KSwoRj1nMSh0aGlzKSkucm9vdD8obT0hMSxKMCh0aGlzKSYmcTAoRi5yb290KSk6biYmInNsb3QiPT09dGhpcy5sb2NhbE5hbWUmJihtPSExLHEwKG4pKSksbT8obj1lMCh0aGlzKT90aGlzLmhvc3Q6dGhpcyxpPyhpPVpsKGkpLG4uX19zaGFkeV9uYXRpdmVfaW5zZXJ0QmVmb3JlKHQsaSkp''@;'; put 'put ''Om4uX19zaGFkeV9uYXRpdmVfYXBwZW5kQ2hpbGQodCkpOnQub3duZXJEb2N1bWVudCE9PXRoaXMub3duZXJEb2N1bWVudCYmdGhpcy5vd25lckRvY3VtZW50LmFkb3B0Tm9kZSh0KSx0fSxhcHBlbmRDaGlsZDpmdW5jdGlvbih0KXtpZih0aGlzIT10fHwhZTAodCkpcmV0dXJuIHRoaXMuX19z''@;'; put 'put ''aGFkeV9pbnNlcnRCZWZvcmUodCl9LHJlbW92ZUNoaWxkOmZ1bmN0aW9uKHQsaSl7aWYoaT12b2lkIDAhPT1pJiZpLHRoaXMub3duZXJEb2N1bWVudCE9PW5lKXJldHVybiB0aGlzLl9fc2hhZHlfbmF0aXZlX3JlbW92ZUNoaWxkKHQpO2lmKHQuX19zaGFkeV9wYXJlbnROb2RlIT09dGhpcyl0''@;'; put 'put ''aHJvdyBFcnJvcigiVGhlIG5vZGUgdG8gYmUgcmVtb3ZlZCBpcyBub3QgYSBjaGlsZCBvZiB0aGlzIG5vZGU6ICIrdCk7eWwodGhpcyxudWxsLHQpO3ZhciBuPW0yKHQpLHM9biYmZnVuY3Rpb24gQmEodCxpKXtpZih0Lmcpe3B0KHQpO3ZhciBzLG49dC5oO2ZvcihzIGluIG4pZm9yKHZhciBk''@;'; put 'put ''PW5bc10sbT0wO208ZC5sZW5ndGg7bSsrKXt2YXIgTD1kW21dO2lmKHgwKGksTCkpe2Quc3BsaWNlKG0sMSk7dmFyIEY9dC5nLmluZGV4T2YoTCk7aWYoMDw9RiYmKHQuZy5zcGxpY2UoRiwxKSwoRj1nMShMLl9fc2hhZHlfcGFyZW50Tm9kZSkpJiZGLmlhJiZGLmlhLS0pLG0tLSxGPShMPWcx''@;'; put 'put ''KEwpKS5hYSlmb3IodmFyIEc9MDtHPEYubGVuZ3RoO0crKyl7dmFyIFU9RltHXSxLPVUuX19zaGFkeV9uYXRpdmVfcGFyZW50Tm9kZTtLJiZLLl9fc2hhZHlfbmF0aXZlX3JlbW92ZUNoaWxkKFUpfUwuYWE9W10sTC5hc3NpZ25lZE5vZGVzPVtdLEY9ITB9fXJldHVybiBGfX0obix0KSxkPWcx''@;'; put 'put ''KHRoaXMpO2lmKEsxKHRoaXMpJiYoZnVuY3Rpb24gT2EodCxpKXt2YXIgbj1xMSh0KTt0PT09KGk9cTEoaSkpLmZpcnN0Q2hpbGQmJihpLmZpcnN0Q2hpbGQ9bi5uZXh0U2libGluZyksdD09PWkubGFzdENoaWxkJiYoaS5sYXN0Q2hpbGQ9bi5wcmV2aW91c1NpYmxpbmcpO3ZhciBzPW4ubmV4''@;'; put 'put ''dFNpYmxpbmc7KHQ9bi5wcmV2aW91c1NpYmxpbmcpJiYocTEodCkubmV4dFNpYmxpbmc9cykscyYmKHExKHMpLnByZXZpb3VzU2libGluZz10KSxuLnBhcmVudE5vZGU9bi5wcmV2aW91c1NpYmxpbmc9bi5uZXh0U2libGluZz12b2lkIDAsdm9pZCAwIT09aS5jaGlsZE5vZGVzJiYoaS5jaGls''@;'; put 'put ''ZE5vZGVzPW51bGwpfSh0LHRoaXMpLEowKHRoaXMpKSl7cTAoZC5yb290KTt2YXIgbT0hMH1pZihuMigpJiYhaSYmbiYmdC5ub2RlVHlwZSE9PU5vZGUuVEVYVF9OT0RFKXt2YXIgTD1hdCh0KTtyZSh0LGZ1bmN0aW9uKEYpe0hsKEYsTCl9KX1yZXR1cm4gTWwodCksbiYmKChpPSJzbG90Ij09''@;'; put 'put ''PXRoaXMubG9jYWxOYW1lKSYmKG09ITApLChzfHxpKSYmcTAobikpLG18fChtPWUwKHRoaXMpP3RoaXMuaG9zdDp0aGlzLCghZC5yb290JiYic2xvdCIhPT10LmxvY2FsTmFtZXx8bT09PXQuX19zaGFkeV9uYXRpdmVfcGFyZW50Tm9kZSkmJm0uX19zaGFkeV9uYXRpdmVfcmVtb3ZlQ2hpbGQo''@;'; put 'put ''dCkpLHR9LHJlcGxhY2VDaGlsZDpmdW5jdGlvbih0LGkpe3JldHVybiB0aGlzLl9fc2hhZHlfaW5zZXJ0QmVmb3JlKHQsaSksdGhpcy5fX3NoYWR5X3JlbW92ZUNoaWxkKGkpLHR9LGNsb25lTm9kZTpmdW5jdGlvbih0KXtpZigidGVtcGxhdGUiPT10aGlzLmxvY2FsTmFtZSlyZXR1cm4gdGhp''@;'; put 'put ''cy5fX3NoYWR5X25hdGl2ZV9jbG9uZU5vZGUodCk7dmFyIGk9dGhpcy5fX3NoYWR5X25hdGl2ZV9jbG9uZU5vZGUoITEpO2lmKHQmJmkubm9kZVR5cGUhPT1Ob2RlLkFUVFJJQlVURV9OT0RFKXt0PXRoaXMuX19zaGFkeV9maXJzdENoaWxkO2Zvcih2YXIgbjt0O3Q9dC5fX3NoYWR5X25leHRT''@;'; put 'put ''aWJsaW5nKW49dC5fX3NoYWR5X2Nsb25lTm9kZSghMCksaS5fX3NoYWR5X2FwcGVuZENoaWxkKG4pfXJldHVybiBpfSxnZXRSb290Tm9kZTpmdW5jdGlvbih0KXtpZih0aGlzJiZ0aGlzLm5vZGVUeXBlKXt2YXIgaT1xMSh0aGlzKSxuPWkucWE7cmV0dXJuIHZvaWQgMD09PW4mJihlMCh0aGlz''@;'; put 'put ''KT9pLnFhPW49dGhpczoobj0obj10aGlzLl9fc2hhZHlfcGFyZW50Tm9kZSk/bi5fX3NoYWR5X2dldFJvb3ROb2RlKHQpOnRoaXMsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Ll9fc2hhZHlfbmF0aXZlX2NvbnRhaW5zKHRoaXMpJiYoaS5xYT1uKSkpLG59fSxjb250YWluczpmdW5jdGlvbih0''@;'; put 'put ''KXtyZXR1cm4geDAodGhpcyx0KX19KSx6Mj1uMCh7Z2V0IGFzc2lnbmVkU2xvdCgpe3ZhciB0PXRoaXMuX19zaGFkeV9wYXJlbnROb2RlO3JldHVybih0PXQmJnQuX19zaGFkeV9zaGFkb3dSb290KSYmdXQodCksKHQ9ZzEodGhpcykpJiZ0LmFzc2lnbmVkU2xvdHx8bnVsbH19KTtmdW5jdGlv''@;'; put 'put ''biBzZSh0LGksbil7dmFyIHM9W107cmV0dXJuIExsKHQsaSxuLHMpLHN9ZnVuY3Rpb24gTGwodCxpLG4scyl7Zm9yKHQ9dC5fX3NoYWR5X2ZpcnN0Q2hpbGQ7dDt0PXQuX19zaGFkeV9uZXh0U2libGluZyl7dmFyIGQ7aWYoZD10Lm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpe3ZhciBt''@;'; put 'put ''PWksTD1uLEY9cyxHPW0oZD10KTtHJiZGLnB1c2goZCksTCYmTChHKT9kPUc6KExsKGQsbSxMLEYpLGQ9dm9pZCAwKX1pZihkKWJyZWFrfX12YXIgbnQ9e2dldCBmaXJzdEVsZW1lbnRDaGlsZCgpe3ZhciB0PWcxKHRoaXMpO2lmKHQmJnZvaWQgMCE9PXQuZmlyc3RDaGlsZCl7Zm9yKHQ9dGhp''@;'; put 'put ''cy5fX3NoYWR5X2ZpcnN0Q2hpbGQ7dCYmdC5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFOyl0PXQuX19zaGFkeV9uZXh0U2libGluZztyZXR1cm4gdH1yZXR1cm4gdGhpcy5fX3NoYWR5X25hdGl2ZV9maXJzdEVsZW1lbnRDaGlsZH0sZ2V0IGxhc3RFbGVtZW50Q2hpbGQoKXt2YXIgdD1n''@;'; put 'put ''MSh0aGlzKTtpZih0JiZ2b2lkIDAhPT10Lmxhc3RDaGlsZCl7Zm9yKHQ9dGhpcy5fX3NoYWR5X2xhc3RDaGlsZDt0JiZ0Lm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREU7KXQ9dC5fX3NoYWR5X3ByZXZpb3VzU2libGluZztyZXR1cm4gdH1yZXR1cm4gdGhpcy5fX3NoYWR5X25hdGl2ZV9s''@;'; put 'put ''YXN0RWxlbWVudENoaWxkfSxnZXQgY2hpbGRyZW4oKXtyZXR1cm4gSzEodGhpcyk/QjAoQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKHYyKHRoaXMpLGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREV9KSk6dGhpcy5fX3NoYWR5X25hdGl2ZV9jaGls''@;'; put 'put ''ZHJlbn0sZ2V0IGNoaWxkRWxlbWVudENvdW50KCl7dmFyIHQ9dGhpcy5fX3NoYWR5X2NoaWxkcmVuO3JldHVybiB0P3QubGVuZ3RoOjB9fSxDMj1uMCgobnQuYXBwZW5kPWZ1bmN0aW9uKHQpe2Zvcih2YXIgaT1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoOysrbilpW25dPWFyZ3VtZW50c1tu''@;'; put 'put ''XTt0aGlzLl9fc2hhZHlfaW5zZXJ0QmVmb3JlKEgyLmFwcGx5KG51bGwsYyhpKSksbnVsbCl9LG50LnByZXBlbmQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBpPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7KytuKWlbbl09YXJndW1lbnRzW25dO3RoaXMuX19zaGFkeV9pbnNlcnRCZWZvcmUoSDIu''@;'; put 'put ''YXBwbHkobnVsbCxjKGkpKSx0aGlzLl9fc2hhZHlfZmlyc3RDaGlsZCl9LG50LnJlcGxhY2VDaGlsZHJlbj1mdW5jdGlvbih0KXtmb3IodmFyIGk9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDsrK24paVtuXT1hcmd1bWVudHNbbl07Zm9yKDtudWxsIT09KG49dGhpcy5fX3NoYWR5X2ZpcnN0''@;'; put 'put ''Q2hpbGQpOyl0aGlzLl9fc2hhZHlfcmVtb3ZlQ2hpbGQobik7dGhpcy5fX3NoYWR5X2luc2VydEJlZm9yZShIMi5hcHBseShudWxsLGMoaSkpLG51bGwpfSxudCkpLF9hPW4wKHtxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiBzZSh0aGlzLGZ1bmN0aW9uKGkpe3JldHVybiBPMi5j''@;'; put 'put ''YWxsKGksdCl9LGZ1bmN0aW9uKGkpe3JldHVybiEhaX0pWzBdfHxudWxsfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQsaSl7aWYoaSl7aT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9fc2hhZHlfbmF0aXZlX3F1ZXJ5U2VsZWN0b3JBbGwodCkpO3ZhciBuPXRoaXMuX19z''@;'; put 'put ''aGFkeV9nZXRSb290Tm9kZSgpO3JldHVybiBCMChpLmZpbHRlcihmdW5jdGlvbihzKXtyZXR1cm4gcy5fX3NoYWR5X2dldFJvb3ROb2RlKCk9PW59KSl9cmV0dXJuIEIwKHNlKHRoaXMsZnVuY3Rpb24ocyl7cmV0dXJuIE8yLmNhbGwocyx0KX0pKX19KSxTbD15MS5mYSYmIXkxLko/QnQoe30s''@;'; put 'put ''QzIpOkMyO0J0KEMyLF9hKTt2YXIgYmw9bjAoe2FmdGVyOmZ1bmN0aW9uKHQpe2Zvcih2YXIgaT1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoOysrbilpW25dPWFyZ3VtZW50c1tuXTtpZihudWxsIT09KG49dGhpcy5fX3NoYWR5X3BhcmVudE5vZGUpKXt2YXIgcz10aGlzLl9fc2hhZHlfbmV4''@;'; put 'put ''dFNpYmxpbmc7bi5fX3NoYWR5X2luc2VydEJlZm9yZShIMi5hcHBseShudWxsLGMoaSkpLHMpfX0sYmVmb3JlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgaT1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoOysrbilpW25dPWFyZ3VtZW50c1tuXTtudWxsIT09KG49dGhpcy5fX3NoYWR5X3BhcmVudE5v''@;'; put 'put ''ZGUpJiZuLl9fc2hhZHlfaW5zZXJ0QmVmb3JlKEgyLmFwcGx5KG51bGwsYyhpKSksdGhpcyl9LHJlbW92ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX19zaGFkeV9wYXJlbnROb2RlO251bGwhPT10JiZ0Ll9fc2hhZHlfcmVtb3ZlQ2hpbGQodGhpcyl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKHQp''@;'; put 'put ''e2Zvcih2YXIgaT1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoOysrbilpW25dPWFyZ3VtZW50c1tuXTtpZihudWxsIT09KG49dGhpcy5fX3NoYWR5X3BhcmVudE5vZGUpKXt2YXIgcz10aGlzLl9fc2hhZHlfbmV4dFNpYmxpbmc7bi5fX3NoYWR5X3JlbW92ZUNoaWxkKHRoaXMpLG4uX19zaGFk''@;'; put 'put ''eV9pbnNlcnRCZWZvcmUoSDIuYXBwbHkobnVsbCxjKGkpKSxzKX19fSksX2w9d2luZG93LmRvY3VtZW50O2Z1bmN0aW9uIHdsKHQsaSl7aWYoInNsb3QiPT09aSlKMCh0PXQuX19zaGFkeV9wYXJlbnROb2RlKSYmcTAoZzEodCkucm9vdCk7ZWxzZSBpZigic2xvdCI9PT10LmxvY2FsTmFtZSYm''@;'; put 'put ''Im5hbWUiPT09aSYmKGk9bTIodCkpKXtpZihpLmcpe3B0KGkpO3ZhciBuPXQuUWEscz1VbCh0KTtpZihzIT09bil7dmFyIGQ9KG49aS5oW25dKS5pbmRleE9mKHQpOzA8PWQmJm4uc3BsaWNlKGQsMSksKG49aS5oW3NdfHwoaS5oW3NdPVtdKSkucHVzaCh0KSwxPG4ubGVuZ3RoJiYoaS5oW3Nd''@;'; put 'put ''PVdsKG4pKX19cTAoaSl9fXZhciBjdD1uMCh7Z2V0IHByZXZpb3VzRWxlbWVudFNpYmxpbmcoKXt2YXIgdD1nMSh0aGlzKTtpZih0JiZ2b2lkIDAhPT10LnByZXZpb3VzU2libGluZyl7Zm9yKHQ9dGhpcy5fX3NoYWR5X3ByZXZpb3VzU2libGluZzt0JiZ0Lm5vZGVUeXBlIT09Tm9kZS5FTEVN''@;'; put 'put ''RU5UX05PREU7KXQ9dC5fX3NoYWR5X3ByZXZpb3VzU2libGluZztyZXR1cm4gdH1yZXR1cm4gdGhpcy5fX3NoYWR5X25hdGl2ZV9wcmV2aW91c0VsZW1lbnRTaWJsaW5nfSxnZXQgbmV4dEVsZW1lbnRTaWJsaW5nKCl7dmFyIHQ9ZzEodGhpcyk7aWYodCYmdm9pZCAwIT09dC5uZXh0U2libGlu''@;'; put 'put ''Zyl7Zm9yKHQ9dGhpcy5fX3NoYWR5X25leHRTaWJsaW5nO3QmJnQubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERTspdD10Ll9fc2hhZHlfbmV4dFNpYmxpbmc7cmV0dXJuIHR9cmV0dXJuIHRoaXMuX19zaGFkeV9uYXRpdmVfbmV4dEVsZW1lbnRTaWJsaW5nfSxnZXQgc2xvdCgpe3JldHVy''@;'; put 'put ''biB0aGlzLmdldEF0dHJpYnV0ZSgic2xvdCIpfSxzZXQgc2xvdCh0KXt0aGlzLl9fc2hhZHlfc2V0QXR0cmlidXRlKCJzbG90Iix0KX0sZ2V0IGNsYXNzTmFtZSgpe3JldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiJ9LHNldCBjbGFzc05hbWUodCl7dGhpcy5fX3NoYWR5X3Nl''@;'; put 'put ''dEF0dHJpYnV0ZSgiY2xhc3MiLHQpfSxzZXRBdHRyaWJ1dGU6ZnVuY3Rpb24odCxpKXt0aGlzLm93bmVyRG9jdW1lbnQhPT1fbD90aGlzLl9fc2hhZHlfbmF0aXZlX3NldEF0dHJpYnV0ZSh0LGkpOnZsKHRoaXMsdCxpKXx8KHRoaXMuX19zaGFkeV9uYXRpdmVfc2V0QXR0cmlidXRlKHQsaSks''@;'; put 'put ''d2wodGhpcyx0KSl9LHJlbW92ZUF0dHJpYnV0ZTpmdW5jdGlvbih0KXt0aGlzLm93bmVyRG9jdW1lbnQhPT1fbD90aGlzLl9fc2hhZHlfbmF0aXZlX3JlbW92ZUF0dHJpYnV0ZSh0KTp2bCh0aGlzLHQsIiIpPyIiPT09dGhpcy5nZXRBdHRyaWJ1dGUodCkmJnRoaXMuX19zaGFkeV9uYXRpdmVf''@;'; put 'put ''cmVtb3ZlQXR0cmlidXRlKHQpOih0aGlzLl9fc2hhZHlfbmF0aXZlX3JlbW92ZUF0dHJpYnV0ZSh0KSx3bCh0aGlzLHQpKX19KTt5MS5mYXx8cGwuZm9yRWFjaChmdW5jdGlvbih0KXtjdFt0XT1nbCh0KX0pO3ZhciB4bD1uMCh7YXR0YWNoU2hhZG93OmZ1bmN0aW9uKHQpe2lmKCF0aGlzKXRo''@;'; put 'put ''cm93IEVycm9yKCJNdXN0IHByb3ZpZGUgYSBob3N0LiIpO2lmKCF0KXRocm93IEVycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cy4iKTtpZih0LnNoYWR5VXBncmFkZUZyYWdtZW50JiYheTEuTmEpe3ZhciBpPXQuc2hhZHlVcGdyYWRlRnJhZ21lbnQ7aWYoaS5fX3Byb3RvX189U2hhZG93Um9v''@;'; put 'put ''dC5wcm90b3R5cGUsQmwoaSx0aGlzLHQpLHN0KGksaSksdD1pLl9fbm9JbnNlcnRpb25Qb2ludD9udWxsOmkucXVlcnlTZWxlY3RvckFsbCgic2xvdCIpLGkuX19ub0luc2VydGlvblBvaW50PXZvaWQgMCx0JiZ0Lmxlbmd0aCl7dmFyIG49aTt6bChuKSxuLmkucHVzaC5hcHBseShuLmksYyh0''@;'; put 'put ''KSkscTAoaSl9aS5ob3N0Ll9fc2hhZHlfbmF0aXZlX2FwcGVuZENoaWxkKGkpfWVsc2UgaT1uZXcgZHQoT2wsdGhpcyx0KTtyZXR1cm4gdGhpcy5fX0NFX3NoYWRvd1Jvb3Q9aX0sZ2V0IHNoYWRvd1Jvb3QoKXt2YXIgdD1nMSh0aGlzKTtyZXR1cm4gdCYmdC5nYnx8bnVsbH19KTtCdChjdCx4''@;'; put 'put ''bCk7dmFyIGhlPWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiaW5lcnQiKSxkZT1uMCh7Z2V0IGlubmVySFRNTCgpe3JldHVybiBLMSh0aGlzKT9SdCgidGVtcGxhdGUiPT09dGhpcy5sb2NhbE5hbWU/dGhpcy5jb250ZW50OnRoaXMsdjIpOnRoaXMuX19zaGFk''@;'; put 'put ''eV9uYXRpdmVfaW5uZXJIVE1MfSxzZXQgaW5uZXJIVE1MKHQpe2lmKCJ0ZW1wbGF0ZSI9PT10aGlzLmxvY2FsTmFtZSl0aGlzLl9fc2hhZHlfbmF0aXZlX2lubmVySFRNTD10O2Vsc2V7b2UodGhpcyk7dmFyIGk9dGhpcy5sb2NhbE5hbWV8fCJkaXYiO2ZvcihpPXRoaXMubmFtZXNwYWNlVVJJ''@;'; put 'put ''JiZ0aGlzLm5hbWVzcGFjZVVSSSE9PWhlLm5hbWVzcGFjZVVSST9oZS5jcmVhdGVFbGVtZW50TlModGhpcy5uYW1lc3BhY2VVUkksaSk6aGUuY3JlYXRlRWxlbWVudChpKSx5MS5IP2kuX19zaGFkeV9uYXRpdmVfaW5uZXJIVE1MPXQ6aS5pbm5lckhUTUw9dDt0PWkuX19zaGFkeV9maXJzdENo''@;'; put 'put ''aWxkOyl0aGlzLl9fc2hhZHlfaW5zZXJ0QmVmb3JlKHQpfX19KSxEbD1uMCh7Ymx1cjpmdW5jdGlvbigpe3ZhciB0PWcxKHRoaXMpOyh0PSh0PXQmJnQucm9vdCkmJnQuYWN0aXZlRWxlbWVudCk/dC5fX3NoYWR5X2JsdXIoKTp0aGlzLl9fc2hhZHlfbmF0aXZlX2JsdXIoKX19KTt5MS5mYXx8''@;'; put 'put ''ZmwuZm9yRWFjaChmdW5jdGlvbih0KXtEbFt0XT1nbCh0KX0pO3ZhciBFbD1uMCh7YXNzaWduZWROb2RlczpmdW5jdGlvbih0KXtpZigic2xvdCI9PT10aGlzLmxvY2FsTmFtZSl7dmFyIGk9dGhpcy5fX3NoYWR5X2dldFJvb3ROb2RlKCk7cmV0dXJuIGkmJmUwKGkpJiZ1dChpKSwoaT1nMSh0''@;'; put 'put ''aGlzKSkmJih0JiZ0LmZsYXR0ZW4/aS5hYTppLmFzc2lnbmVkTm9kZXMpfHxbXX19LGFkZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24odCxpLG4pe2lmKCJzbG90IiE9PXRoaXMubG9jYWxOYW1lfHwic2xvdGNoYW5nZSI9PT10KWVlLmNhbGwodGhpcyx0LGksbik7ZWxzZXsib2JqZWN0IiE9dHlw''@;'; put 'put ''ZW9mIG4mJihuPXtjYXB0dXJlOiEhbn0pO3ZhciBzPXRoaXMuX19zaGFkeV9wYXJlbnROb2RlO2lmKCFzKXRocm93IEVycm9yKCJTaGFkeURPTSBjYW5ub3QgYXR0YWNoIGV2ZW50IHRvIHNsb3QgdW5sZXNzIGl0IGhhcyBhIGBwYXJlbnROb2RlYCIpO24uVT10aGlzLHMuX19zaGFkeV9hZGRF''@;'; put 'put ''dmVudExpc3RlbmVyKHQsaSxuKX19LHJlbW92ZUV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24odCxpLG4pe2lmKCJzbG90IiE9PXRoaXMubG9jYWxOYW1lfHwic2xvdGNoYW5nZSI9PT10KWxlLmNhbGwodGhpcyx0LGksbik7ZWxzZXsib2JqZWN0IiE9dHlwZW9mIG4mJihuPXtjYXB0dXJlOiEhbn0p''@;'; put 'put ''O3ZhciBzPXRoaXMuX19zaGFkeV9wYXJlbnROb2RlO2lmKCFzKXRocm93IEVycm9yKCJTaGFkeURPTSBjYW5ub3QgYXR0YWNoIGV2ZW50IHRvIHNsb3QgdW5sZXNzIGl0IGhhcyBhIGBwYXJlbnROb2RlYCIpO24uVT10aGlzLHMuX19zaGFkeV9yZW1vdmVFdmVudExpc3RlbmVyKHQsaSxuKX19''@;'; put 'put ''fSksdWU9bjAoe2dldEVsZW1lbnRCeUlkOmZ1bmN0aW9uKHQpe3JldHVybiIiPT09dD9udWxsOnNlKHRoaXMsZnVuY3Rpb24oaSl7cmV0dXJuIGkuaWQ9PXR9LGZ1bmN0aW9uKGkpe3JldHVybiEhaX0pWzBdfHxudWxsfX0pO2Z1bmN0aW9uIHdhKHQsaSl7Zm9yKHZhciBuO2kmJiF0Lmhhcyhu''@;'; put 'put ''PWkuX19zaGFkeV9nZXRSb290Tm9kZSgpKTspaT1uLmhvc3Q7cmV0dXJuIGl9dmFyIERhPSJfX3NoYWR5X25hdGl2ZV8iK08wKCkscGU9bjAoe2dldCBhY3RpdmVFbGVtZW50KCl7dmFyIHQ9eTEuSD9kb2N1bWVudC5fX3NoYWR5X25hdGl2ZV9hY3RpdmVFbGVtZW50OmRvY3VtZW50LmFjdGl2''@;'; put 'put ''ZUVsZW1lbnQ7aWYoIXR8fCF0Lm5vZGVUeXBlKXJldHVybiBudWxsO3ZhciBpPSEhZTAodGhpcyk7aWYoISh0aGlzPT09ZG9jdW1lbnR8fGkmJnRoaXMuaG9zdCE9PXQmJnRoaXMuaG9zdC5fX3NoYWR5X25hdGl2ZV9jb250YWlucyh0KSkpcmV0dXJuIG51bGw7Zm9yKGk9bTIodCk7aSYmaSE9''@;'; put 'put ''PXRoaXM7KWk9bTIodD1pLmhvc3QpO3JldHVybiB0aGlzPT09ZG9jdW1lbnQ/aT9udWxsOnQ6aT09PXRoaXM/dDpudWxsfSxlbGVtZW50c0Zyb21Qb2ludDpmdW5jdGlvbih0LGkpe3Q9W10uc2xpY2UuY2FsbChkb2N1bWVudFtEYV0odCxpKSksaT1mdW5jdGlvbiB4YSh0KXt2YXIgaT1uZXcg''@;'; put 'put ''U2V0O2ZvcihpLmFkZCh0KTtlMCh0KSYmdC5ob3N0Oyl0PXQuaG9zdC5fX3NoYWR5X2dldFJvb3ROb2RlKCksaS5hZGQodCk7cmV0dXJuIGl9KHRoaXMpO2Zvcih2YXIgbj1uZXcgU2V0LHM9MDtzPHQubGVuZ3RoO3MrKyluLmFkZCh3YShpLHRbc10pKTt2YXIgZD1bXTtyZXR1cm4gbi5mb3JF''@;'; put 'put ''YWNoKGZ1bmN0aW9uKG0pe3JldHVybiBkLnB1c2gobSl9KSxkfSxlbGVtZW50RnJvbVBvaW50OmZ1bmN0aW9uKHQsaSl7cmV0dXJuIHRoaXMuX19zaGFkeV9lbGVtZW50c0Zyb21Qb2ludCh0LGkpWzBdfHxudWxsfX0pLEVhPXdpbmRvdy5kb2N1bWVudCxUYT1uMCh7aW1wb3J0Tm9kZTpmdW5j''@;'; put 'put ''dGlvbih0LGkpe2lmKHQub3duZXJEb2N1bWVudCE9PUVhfHwidGVtcGxhdGUiPT09dC5sb2NhbE5hbWUpcmV0dXJuIHRoaXMuX19zaGFkeV9uYXRpdmVfaW1wb3J0Tm9kZSh0LGkpO3ZhciBuPXRoaXMuX19zaGFkeV9uYXRpdmVfaW1wb3J0Tm9kZSh0LCExKTtpZihpKWZvcih0PXQuX19zaGFk''@;'; put 'put ''eV9maXJzdENoaWxkO3Q7dD10Ll9fc2hhZHlfbmV4dFNpYmxpbmcpaT10aGlzLl9fc2hhZHlfaW1wb3J0Tm9kZSh0LCEwKSxuLl9fc2hhZHlfYXBwZW5kQ2hpbGQoaSk7cmV0dXJuIG59fSksVGw9bjAoe2Rpc3BhdGNoRXZlbnQ6ZGwsYWRkRXZlbnRMaXN0ZW5lcjplZS5iaW5kKHdpbmRvdyks''@;'; put 'put ''cmVtb3ZlRXZlbnRMaXN0ZW5lcjpsZS5iaW5kKHdpbmRvdyl9KSxWMj17fTtPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxFbGVtZW50LnByb3RvdHlwZSwicGFyZW50RWxlbWVudCIpJiYoVjIucGFyZW50RWxlbWVudD1ydC5wYXJlbnRFbGVtZW50KSxPYmplY3QuZ2V0T3du''@;'; put 'put ''UHJvcGVydHlEZXNjcmlwdG9yKEhUTUxFbGVtZW50LnByb3RvdHlwZSwiY29udGFpbnMiKSYmKFYyLmNvbnRhaW5zPXJ0LmNvbnRhaW5zKSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxFbGVtZW50LnByb3RvdHlwZSwiY2hpbGRyZW4iKSYmKFYyLmNoaWxkcmVuPUMyLmNo''@;'; put 'put ''aWxkcmVuKSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxFbGVtZW50LnByb3RvdHlwZSwiaW5uZXJIVE1MIikmJihWMi5pbm5lckhUTUw9ZGUuaW5uZXJIVE1MKSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxFbGVtZW50LnByb3RvdHlwZSwiY2xhc3NO''@;'; put 'put ''YW1lIikmJihWMi5jbGFzc05hbWU9Y3QuY2xhc3NOYW1lKTt2YXIgRTA9e0V2ZW50VGFyZ2V0OltBbF0sTm9kZTpbcnQsd2luZG93LkV2ZW50VGFyZ2V0P251bGw6QWxdLFRleHQ6W3oyXSxDb21tZW50Olt6Ml0sQ0RBVEFTZWN0aW9uOlt6Ml0sUHJvY2Vzc2luZ0luc3RydWN0aW9uOlt6Ml0s''@;'; put 'put ''RWxlbWVudDpbY3QsQzIsYmwsejIsIXkxLkh8fCJpbm5lckhUTUwiaW4gRWxlbWVudC5wcm90b3R5cGU/ZGU6bnVsbCx3aW5kb3cuSFRNTFNsb3RFbGVtZW50P251bGw6RWxdLEhUTUxFbGVtZW50OltEbCxWMl0sSFRNTFNsb3RFbGVtZW50OltFbF0sRG9jdW1lbnRGcmFnbWVudDpbU2wsdWVd''@;'; put 'put ''LERvY3VtZW50OltUYSxTbCx1ZSxwZV0sV2luZG93OltUbF0sQ2hhcmFjdGVyRGF0YTpbYmxdfSxOYT15MS5IP251bGw6WyJpbm5lckhUTUwiLCJ0ZXh0Q29udGVudCJdO2Z1bmN0aW9uICQwKHQsaSxuLHMpe2kuZm9yRWFjaChmdW5jdGlvbihkKXtyZXR1cm4gdCYmZCYmczAodCxkLG4scyl9''@;'; put 'put ''KX1mdW5jdGlvbiBObCh0KXt2YXIgbixpPXQ/bnVsbDpOYTtmb3IobiBpbiBFMCkkMCh3aW5kb3dbbl0mJndpbmRvd1tuXS5wcm90b3R5cGUsRTBbbl0sdCxpKX1mdW5jdGlvbiBGbCh0KXtyZXR1cm4gdC5fX3NoYWR5X3Byb3RvSXNQYXRjaGVkPSEwLCQwKHQsRTAuRXZlbnRUYXJnZXQpLCQw''@;'; put 'put ''KHQsRTAuTm9kZSksJDAodCxFMC5FbGVtZW50KSwkMCh0LEUwLkhUTUxFbGVtZW50KSwkMCh0LEUwLkhUTUxTbG90RWxlbWVudCksdH1bIlRleHQiLCJDb21tZW50IiwiQ0RBVEFTZWN0aW9uIiwiUHJvY2Vzc2luZ0luc3RydWN0aW9uIl0uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgaT13aW5k''@;'; put 'put ''b3dbdF0sbj1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKTtuLl9fc2hhZHlfcHJvdG9Jc1BhdGNoZWQ9ITAsJDAobixFMC5FdmVudFRhcmdldCksJDAobixFMC5Ob2RlKSxFMFt0XSYmJDAobixFMFt0XSksaS5wcm90b3R5cGUuX19zaGFkeV9wYXRjaGVkUHJvdG89bn0pO3ZhciBGYT15MS5B''@;'; put 'put ''YSxJYT15MS5IO2Z1bmN0aW9uIG90KHQsaSl7aWYoRmEmJiF0Ll9fc2hhZHlfcHJvdG9Jc1BhdGNoZWQmJiFlMCh0KSl7dmFyIG49T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpLHM9bi5oYXNPd25Qcm9wZXJ0eSgiX19zaGFkeV9wYXRjaGVkUHJvdG8iKSYmbi5fX3NoYWR5X3BhdGNoZWRQcm90''@;'; put 'put ''bztzfHwoRmwocz1PYmplY3QuY3JlYXRlKG4pKSxuLl9fc2hhZHlfcGF0Y2hlZFByb3RvPXMpLE9iamVjdC5zZXRQcm90b3R5cGVPZih0LHMpfUlhfHwoMT09PWk/ZWwodCk6Mj09PWkmJmxsKHQpKX1mdW5jdGlvbiBJbCh0LGksbixzKXtvdCh0LDEpLHM9c3x8bnVsbDt2YXIgZD1xMSh0KSxt''@;'; put 'put ''PXM/cTEocyk6bnVsbDtkLnByZXZpb3VzU2libGluZz1zP20ucHJldmlvdXNTaWJsaW5nOmkuX19zaGFkeV9sYXN0Q2hpbGQsKG09ZzEoZC5wcmV2aW91c1NpYmxpbmcpKSYmKG0ubmV4dFNpYmxpbmc9dCksKG09ZzEoZC5uZXh0U2libGluZz1zKSkmJihtLnByZXZpb3VzU2libGluZz10KSxk''@;'; put 'put ''LnBhcmVudE5vZGU9aSxzP3M9PT1uLmZpcnN0Q2hpbGQmJihuLmZpcnN0Q2hpbGQ9dCk6KG4ubGFzdENoaWxkPXQsbi5maXJzdENoaWxkfHwobi5maXJzdENoaWxkPXQpKSxuLmNoaWxkTm9kZXM9bnVsbH1mdW5jdGlvbiBzdCh0LGkpe3ZhciBuPXExKHQpO2lmKGl8fHZvaWQgMD09PW4uZmly''@;'; put 'put ''c3RDaGlsZCl7bi5jaGlsZE5vZGVzPW51bGw7dmFyIHM9bi5maXJzdENoaWxkPXQuX19zaGFkeV9uYXRpdmVfZmlyc3RDaGlsZDtmb3Iobi5sYXN0Q2hpbGQ9dC5fX3NoYWR5X25hdGl2ZV9sYXN0Q2hpbGQsb3QodCwyKSxuPXMscz12b2lkIDA7bjtuPW4uX19zaGFkeV9uYXRpdmVfbmV4dFNp''@;'; put 'put ''Ymxpbmcpe3ZhciBkPXExKG4pO2QucGFyZW50Tm9kZT1pfHx0LGQubmV4dFNpYmxpbmc9bi5fX3NoYWR5X25hdGl2ZV9uZXh0U2libGluZyxkLnByZXZpb3VzU2libGluZz1zfHxudWxsLHM9bixvdChuLDEpfX19dmFyIFBhPW4wKHthZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKHQsaSxuKXsi''@;'; put 'put ''b2JqZWN0IiE9dHlwZW9mIG4mJihuPXtjYXB0dXJlOiEhbn0pLG4uVT1uLlV8fHRoaXMsdGhpcy5ob3N0Ll9fc2hhZHlfYWRkRXZlbnRMaXN0ZW5lcih0LGksbil9LHJlbW92ZUV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24odCxpLG4peyJvYmplY3QiIT10eXBlb2YgbiYmKG49e2NhcHR1cmU6ISFu''@;'; put 'put ''fSksbi5VPW4uVXx8dGhpcyx0aGlzLmhvc3QuX19zaGFkeV9yZW1vdmVFdmVudExpc3RlbmVyKHQsaSxuKX19KTtmdW5jdGlvbiBrbCh0LGkpe3MwKHQsUGEsaSksczAodCxwZSxpKSxzMCh0LGRlLGkpLHMwKHQsQzIsaSkseTEuSiYmIWk/KHMwKHQscnQsaSksczAodCx1ZSxpKSk6eTEuSHx8''@;'; put 'put ''KHMwKHQsS3QpLHMwKHQscXQpLHMwKHQsWXQpKX12YXIgaHQsT2w9e30sYzI9eTEuZGVmZXJDb25uZWN0aW9uQ2FsbGJhY2tzJiYibG9hZGluZyI9PT1kb2N1bWVudC5yZWFkeVN0YXRlO2Z1bmN0aW9uIFBsKHQpe3ZhciBpPVtdO2Rve2kudW5zaGlmdCh0KX13aGlsZSh0PXQuX19zaGFkeV9w''@;'; put 'put ''YXJlbnROb2RlKTtyZXR1cm4gaX1mdW5jdGlvbiBkdCh0LGksbil7aWYodCE9PU9sKXRocm93IG5ldyBUeXBlRXJyb3IoIklsbGVnYWwgY29uc3RydWN0b3IiKTt0aGlzLmc9bnVsbCxCbCh0aGlzLGksbil9ZnVuY3Rpb24gQmwodCxpLG4pe2lmKHQuaG9zdD1pLHQubW9kZT1uJiZuLm1vZGUs''@;'; put 'put ''c3QodC5ob3N0KSwoaT1xMSh0Lmhvc3QpKS5yb290PXQsaS5nYj0iY2xvc2VkIiE9PXQubW9kZT90Om51bGwsKGk9cTEodCkpLmZpcnN0Q2hpbGQ9aS5sYXN0Q2hpbGQ9aS5wYXJlbnROb2RlPWkubmV4dFNpYmxpbmc9aS5wcmV2aW91c1NpYmxpbmc9bnVsbCx5MS5wcmVmZXJQZXJmb3JtYW5j''@;'; put 'put ''ZSlmb3IoO2k9dC5ob3N0Ll9fc2hhZHlfbmF0aXZlX2ZpcnN0Q2hpbGQ7KXQuaG9zdC5fX3NoYWR5X25hdGl2ZV9yZW1vdmVDaGlsZChpKTtlbHNlIHEwKHQpfWZ1bmN0aW9uIHEwKHQpe3QuWXx8KHQuWT0hMCxxZShmdW5jdGlvbigpe3JldHVybiB1dCh0KX0pKX1mdW5jdGlvbiB1dCh0KXt2''@;'; put 'put ''YXIgaTtpZihpPXQuWSl7Zm9yKHZhciBuO3Q7KXQuWSYmKG49dCksZTAodD0oaT10KS5ob3N0Ll9fc2hhZHlfZ2V0Um9vdE5vZGUoKSkmJihpPWcxKGkuaG9zdCkpJiYwPGkuaWF8fCh0PXZvaWQgMCk7aT1ufShuPWkpJiZuLl9yZW5kZXJTZWxmKCl9ZnVuY3Rpb24gR2wodCxpLG4pe3ZhciBz''@;'; put 'put ''PXExKGkpLGQ9cy51YTtzLnVhPW51bGwsbnx8KG49KHQ9dC5oW2kuX19zaGFkeV9zbG90fHwiX19jYXRjaGFsbCJdKSYmdFswXSksbj8ocTEobikuYXNzaWduZWROb2Rlcy5wdXNoKGkpLHMuYXNzaWduZWRTbG90PW4pOnMuYXNzaWduZWRTbG90PXZvaWQgMCxkIT09cy5hc3NpZ25lZFNsb3Qm''@;'; put 'put ''JnMuYXNzaWduZWRTbG90JiYocTEocy5hc3NpZ25lZFNsb3QpLnhhPSEwKX1mdW5jdGlvbiBqbCh0LGksbil7Zm9yKHZhciBzPTAsZD12b2lkIDA7czxuLmxlbmd0aCYmKGQ9bltzXSk7cysrKWlmKCJzbG90Ij09ZC5sb2NhbE5hbWUpe3ZhciBtPWcxKGQpLmFzc2lnbmVkTm9kZXM7bSYmbS5s''@;'; put 'put ''ZW5ndGgmJmpsKHQsaSxtKX1lbHNlIGkucHVzaChuW3NdKX1mdW5jdGlvbiBSbCh0LGkpe2kuX19zaGFkeV9uYXRpdmVfZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoInNsb3RjaGFuZ2UiKSksKGk9ZzEoaSkpLmFzc2lnbmVkU2xvdCYmUmwodCxpLmFzc2lnbmVkU2xvdCl9ZnVuY3Rpb24gemwo''@;'; put 'put ''dCl7dC5pPXQuaXx8W10sdC5nPXQuZ3x8W10sdC5oPXQuaHx8e319ZnVuY3Rpb24gcHQodCl7aWYodC5pJiZ0LmkubGVuZ3RoKXtmb3IodmFyIG4saT10Lmkscz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgZD1pW3NdO3N0KGQpO3ZhciBtPWQuX19zaGFkeV9wYXJlbnROb2RlO3N0KG0pLChtPWcx''@;'; put 'put ''KG0pKS5pYT0obS5pYXx8MCkrMSxtPVVsKGQpLHQuaFttXT8oKG49bnx8e30pW21dPSEwLHQuaFttXS5wdXNoKGQpKTp0LmhbbV09W2RdLHQuZy5wdXNoKGQpfWlmKG4pZm9yKHZhciBMIGluIG4pdC5oW0xdPVdsKHQuaFtMXSk7dC5pPVtdfX1mdW5jdGlvbiBVbCh0KXt2YXIgaT10Lm5hbWV8''@;'; put 'put ''fHQuZ2V0QXR0cmlidXRlKCJuYW1lIil8fCJfX2NhdGNoYWxsIjtyZXR1cm4gdC5RYT1pfWZ1bmN0aW9uIFdsKHQpe3JldHVybiB0LnNvcnQoZnVuY3Rpb24oaSxuKXtpPVBsKGkpO2Zvcih2YXIgcz1QbChuKSxkPTA7ZDxpLmxlbmd0aDtkKyspe3ZhciBtPXNbZF07aWYoKG49aVtkXSkhPT1t''@;'; put 'put ''KXJldHVybihpPXYyKG4uX19zaGFkeV9wYXJlbnROb2RlKSkuaW5kZXhPZihuKS1pLmluZGV4T2YobSl9fSl9ZnVuY3Rpb24gJGwodCl7cmV0dXJuIHB0KHQpLCEoIXQuZ3x8IXQuZy5sZW5ndGgpfWlmKGR0LnByb3RvdHlwZS5fcmVuZGVyU2VsZj1mdW5jdGlvbigpe3ZhciB0PWMyO2lmKGMy''@;'; put 'put ''PSEwLHRoaXMuWT0hMSx0aGlzLmcpe3B0KHRoaXMpO2Zvcih2YXIgbixpPTA7aTx0aGlzLmcubGVuZ3RoO2krKyl7dmFyIHM9ZzEobj10aGlzLmdbaV0pLGQ9cy5hc3NpZ25lZE5vZGVzO2lmKHMuYXNzaWduZWROb2Rlcz1bXSxzLmFhPVtdLHMuR2E9ZClmb3Iocz0wO3M8ZC5sZW5ndGg7cysr''@;'; put 'put ''KXt2YXIgbT1nMShkW3NdKTttLnVhPW0uYXNzaWduZWRTbG90LG0uYXNzaWduZWRTbG90PT09biYmKG0uYXNzaWduZWRTbG90PW51bGwpfX1mb3IoaT10aGlzLmhvc3QuX19zaGFkeV9maXJzdENoaWxkO2k7aT1pLl9fc2hhZHlfbmV4dFNpYmxpbmcpR2wodGhpcyxpKTtmb3IoaT0wO2k8dGhp''@;'; put 'put ''cy5nLmxlbmd0aDtpKyspe2lmKCEoZD1nMShuPXRoaXMuZ1tpXSkpLmFzc2lnbmVkTm9kZXMubGVuZ3RoKWZvcihzPW4uX19zaGFkeV9maXJzdENoaWxkO3M7cz1zLl9fc2hhZHlfbmV4dFNpYmxpbmcpR2wodGhpcyxzLG4pO2lmKChzPShzPWcxKG4uX19zaGFkeV9wYXJlbnROb2RlKSkmJnMu''@;'; put 'put ''cm9vdCkmJigkbChzKXx8cy5ZKSYmcy5fcmVuZGVyU2VsZigpLGpsKHRoaXMsZC5hYSxkLmFzc2lnbmVkTm9kZXMpLHM9ZC5HYSl7Zm9yKG09MDttPHMubGVuZ3RoO20rKylnMShzW21dKS51YT1udWxsO2QuR2E9bnVsbCxzLmxlbmd0aD5kLmFzc2lnbmVkTm9kZXMubGVuZ3RoJiYoZC54YT0h''@;'; put 'put ''MCl9ZC54YSYmKGQueGE9ITEsUmwodGhpcyxuKSl9Zm9yKG49dGhpcy5nLGk9W10sZD0wO2Q8bi5sZW5ndGg7ZCsrKShtPWcxKHM9bltkXS5fX3NoYWR5X3BhcmVudE5vZGUpKSYmbS5yb290fHwhKDA+aS5pbmRleE9mKHMpKXx8aS5wdXNoKHMpO2ZvcihuPTA7bjxpLmxlbmd0aDtuKyspe2Zv''@;'; put 'put ''cihkPShtPWlbbl0pPT09dGhpcz90aGlzLmhvc3Q6bSxzPVtdLG09bS5fX3NoYWR5X2ZpcnN0Q2hpbGQ7bTttPW0uX19zaGFkeV9uZXh0U2libGluZylpZigic2xvdCI9PW0ubG9jYWxOYW1lKWZvcih2YXIgTD1nMShtKS5hYSxGPTA7RjxMLmxlbmd0aDtGKyspcy5wdXNoKExbRl0pO2Vsc2Ug''@;'; put 'put ''cy5wdXNoKG0pO209UDIoZCksTD1TYShzLHMubGVuZ3RoLG0sbS5sZW5ndGgpO2Zvcih2YXIgRz1GPTAsVT12b2lkIDA7RjxMLmxlbmd0aCYmKFU9TFtGXSk7RisrKXtmb3IodmFyIEs9MCxIMT12b2lkIDA7SzxVLmdhLmxlbmd0aCYmKEgxPVUuZ2FbS10pO0srKylIMS5fX3NoYWR5X25hdGl2''@;'; put 'put ''ZV9wYXJlbnROb2RlPT09ZCYmZC5fX3NoYWR5X25hdGl2ZV9yZW1vdmVDaGlsZChIMSksbS5zcGxpY2UoVS5pbmRleCtHLDEpO0ctPVUubmF9Zm9yKEc9MCxVPXZvaWQgMDtHPEwubGVuZ3RoJiYoVT1MW0ddKTtHKyspZm9yKEY9bVtVLmluZGV4XSxLPVUuaW5kZXg7SzxVLmluZGV4K1UubmE7''@;'; put 'put ''SysrKWQuX19zaGFkeV9uYXRpdmVfaW5zZXJ0QmVmb3JlKEgxPXNbS10sRiksbS5zcGxpY2UoSywwLEgxKX19aWYoIXkxLnByZWZlclBlcmZvcm1hbmNlJiYhdGhpcy5GYSlmb3IoaT10aGlzLmhvc3QuX19zaGFkeV9maXJzdENoaWxkO2k7aT1pLl9fc2hhZHlfbmV4dFNpYmxpbmcpbj1nMShp''@;'; put 'put ''KSxpLl9fc2hhZHlfbmF0aXZlX3BhcmVudE5vZGUhPT10aGlzLmhvc3R8fCJzbG90IiE9PWkubG9jYWxOYW1lJiZuLmFzc2lnbmVkU2xvdHx8dGhpcy5ob3N0Ll9fc2hhZHlfbmF0aXZlX3JlbW92ZUNoaWxkKGkpO3RoaXMuRmE9ITAsYzI9dCxodCYmaHQoKX0sZnVuY3Rpb24odCl7dC5fX3By''@;'; put 'put ''b3RvX189RG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUsa2wodCwiX19zaGFkeV8iKSxrbCh0KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LHtub2RlVHlwZTp7dmFsdWU6Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFLGNvbmZpZ3VyYWJsZTohMH0sbm9kZU5hbWU6e3ZhbHVlOiIjZG9j''@;'; put 'put ''dW1lbnQtZnJhZ21lbnQiLGNvbmZpZ3VyYWJsZTohMH0sbm9kZVZhbHVlOnt2YWx1ZTpudWxsLGNvbmZpZ3VyYWJsZTohMH19KSxbImxvY2FsTmFtZSIsIm5hbWVzcGFjZVVSSSIsInByZWZpeCJdLmZvckVhY2goZnVuY3Rpb24oaSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSx7dmFsdWU6''@;'; put 'put ''dm9pZCAwLGNvbmZpZ3VyYWJsZTohMH0pfSksWyJvd25lckRvY3VtZW50IiwiYmFzZVVSSSIsImlzQ29ubmVjdGVkIl0uZm9yRWFjaChmdW5jdGlvbihpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ob3N0W2ldfSxjb25maWd1cmFibGU6''@;'; put 'put ''ITB9KX0pfShkdC5wcm90b3R5cGUpLHdpbmRvdy5jdXN0b21FbGVtZW50cyYmd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSYmeTEueWEmJiF5MS5wcmVmZXJQZXJmb3JtYW5jZSl7dmFyIGZ0PW5ldyBNYXA7aHQ9ZnVuY3Rpb24oKXt2YXIgdD1bXTtmdC5mb3JFYWNoKGZ1bmN0aW9uKHMs''@;'; put 'put ''ZCl7dC5wdXNoKFtkLHNdKX0pLGZ0LmNsZWFyKCk7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBuPXRbaV1bMF07dFtpXVsxXT9uLl9fc2hhZHlkb21fY29ubmVjdGVkQ2FsbGJhY2soKTpuLl9fc2hhZHlkb21fZGlzY29ubmVjdGVkQ2FsbGJhY2soKX19LGMyJiZkb2N1bWVudC5h''@;'; put 'put ''ZGRFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIixmdW5jdGlvbigpe2MyPSExLGh0KCl9LHtvbmNlOiEwfSk7dmFyIGphPXdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUscWw9ZnVuY3Rpb24odCxpKXt2YXIgbj1pLnByb3RvdHlwZS5jb25uZWN0ZWRDYWxsYmFjayxzPWkucHJv''@;'; put 'put ''dG90eXBlLmRpc2Nvbm5lY3RlZENhbGxiYWNrO2phLmNhbGwod2luZG93LmN1c3RvbUVsZW1lbnRzLHQsZnVuY3Rpb24odCxpLG4pe3ZhciBzPTAsZD0iX19pc0Nvbm5lY3RlZCIrcysrO3JldHVybihpfHxuKSYmKHQucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrPXQucHJvdG90eXBlLl9f''@;'; put 'put ''c2hhZHlkb21fY29ubmVjdGVkQ2FsbGJhY2s9ZnVuY3Rpb24oKXtjMj9mdC5zZXQodGhpcywhMCk6dGhpc1tkXXx8KHRoaXNbZF09ITAsaSYmaS5jYWxsKHRoaXMpKX0sdC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s9dC5wcm90b3R5cGUuX19zaGFkeWRvbV9kaXNjb25uZWN0ZWRD''@;'; put 'put ''YWxsYmFjaz1mdW5jdGlvbigpe2MyP3RoaXMuaXNDb25uZWN0ZWR8fGZ0LnNldCh0aGlzLCExKTp0aGlzW2RdJiYodGhpc1tkXT0hMSxuJiZuLmNhbGwodGhpcykpfSksdH0oaSxuLHMpKSxpLnByb3RvdHlwZS5jb25uZWN0ZWRDYWxsYmFjaz1uLGkucHJvdG90eXBlLmRpc2Nvbm5lY3RlZENh''@;'; put 'put ''bGxiYWNrPXN9O3dpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmU9cWwsT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5DdXN0b21FbGVtZW50UmVnaXN0cnkucHJvdG90eXBlLCJkZWZpbmUiLHt2YWx1ZTpxbCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBtMih0KXtpZihlMCh0PXQu''@;'; put 'put ''X19zaGFkeV9nZXRSb290Tm9kZSgpKSlyZXR1cm4gdH1mdW5jdGlvbiBNMih0KXt0aGlzLm5vZGU9dH1mdW5jdGlvbiBZbCh0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoTTIucHJvdG90eXBlLHQse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGVbIl9fc2hhZHlfIit0XX0sc2V0OmZ1''@;'; put 'put ''bmN0aW9uKGkpe3RoaXMubm9kZVsiX19zaGFkeV8iK3RdPWl9LGNvbmZpZ3VyYWJsZTohMH0pfShYPU0yLnByb3RvdHlwZSkuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGksbil7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2FkZEV2ZW50TGlzdGVuZXIodCxpLG4pfSxYLnJlbW92ZUV2''@;'; put 'put ''ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxpLG4pe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9yZW1vdmVFdmVudExpc3RlbmVyKHQsaSxuKX0sWC5hcHBlbmRDaGlsZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfYXBwZW5kQ2hpbGQodCl9LFguaW5zZXJ0QmVmb3JlPWZ1''@;'; put 'put ''bmN0aW9uKHQsaSl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2luc2VydEJlZm9yZSh0LGkpfSxYLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9yZW1vdmVDaGlsZCh0KX0sWC5yZXBsYWNlQ2hpbGQ9ZnVuY3Rpb24odCxpKXtyZXR1cm4gdGhpcy5u''@;'; put 'put ''b2RlLl9fc2hhZHlfcmVwbGFjZUNoaWxkKHQsaSl9LFguY2xvbmVOb2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9jbG9uZU5vZGUodCl9LFguZ2V0Um9vdE5vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2dldFJvb3ROb2RlKHQpfSxYLmNv''@;'; put 'put ''bnRhaW5zPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9jb250YWlucyh0KX0sWC5kaXNwYXRjaEV2ZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9kaXNwYXRjaEV2ZW50KHQpfSxYLnNldEF0dHJpYnV0ZT1mdW5jdGlvbih0LGkpe3RoaXMubm9k''@;'; put 'put ''ZS5fX3NoYWR5X3NldEF0dHJpYnV0ZSh0LGkpfSxYLmdldEF0dHJpYnV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfbmF0aXZlX2dldEF0dHJpYnV0ZSh0KX0sWC5oYXNBdHRyaWJ1dGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X25hdGl2ZV9o''@;'; put 'put ''YXNBdHRyaWJ1dGUodCl9LFgucmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9uKHQpe3RoaXMubm9kZS5fX3NoYWR5X3JlbW92ZUF0dHJpYnV0ZSh0KX0sWC5hdHRhY2hTaGFkb3c9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2F0dGFjaFNoYWRvdyh0KX0sWC5mb2N1cz1mdW5j''@;'; put 'put ''dGlvbigpe3RoaXMubm9kZS5fX3NoYWR5X25hdGl2ZV9mb2N1cygpfSxYLmJsdXI9ZnVuY3Rpb24oKXt0aGlzLm5vZGUuX19zaGFkeV9ibHVyKCl9LFguaW1wb3J0Tm9kZT1mdW5jdGlvbih0LGkpe2lmKHRoaXMubm9kZS5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfTk9ERSlyZXR1cm4gdGhp''@;'; put 'put ''cy5ub2RlLl9fc2hhZHlfaW1wb3J0Tm9kZSh0LGkpfSxYLmdldEVsZW1lbnRCeUlkPWZ1bmN0aW9uKHQpe2lmKHRoaXMubm9kZS5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfTk9ERSlyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfZ2V0RWxlbWVudEJ5SWQodCl9LFguZWxlbWVudHNGcm9tUG9p''@;'; put 'put ''bnQ9ZnVuY3Rpb24odCxpKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfZWxlbWVudHNGcm9tUG9pbnQodCxpKX0sWC5lbGVtZW50RnJvbVBvaW50PWZ1bmN0aW9uKHQsaSl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2VsZW1lbnRGcm9tUG9pbnQodCxpKX0sWC5xdWVyeVNlbGVjdG9yPWZ1''@;'; put 'put ''bmN0aW9uKHQpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9xdWVyeVNlbGVjdG9yKHQpfSxYLnF1ZXJ5U2VsZWN0b3JBbGw9ZnVuY3Rpb24odCxpKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfcXVlcnlTZWxlY3RvckFsbCh0LGkpfSxYLmFzc2lnbmVkTm9kZXM9ZnVuY3Rpb24odCl7aWYo''@;'; put 'put ''InNsb3QiPT09dGhpcy5ub2RlLmxvY2FsTmFtZSlyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfYXNzaWduZWROb2Rlcyh0KX0sWC5hcHBlbmQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBpPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7KytuKWlbbl09YXJndW1lbnRzW25dO3JldHVybiB0aGlzLm5v''@;'; put 'put ''ZGUuX19zaGFkeV9hcHBlbmQuYXBwbHkodGhpcy5ub2RlLGMoaSkpfSxYLnByZXBlbmQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBpPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7KytuKWlbbl09YXJndW1lbnRzW25dO3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9wcmVwZW5kLmFwcGx5KHRoaXMu''@;'; put 'put ''bm9kZSxjKGkpKX0sWC5hZnRlcj1mdW5jdGlvbih0KXtmb3IodmFyIGk9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDsrK24paVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2FmdGVyLmFwcGx5KHRoaXMubm9kZSxjKGkpKX0sWC5iZWZvcmU9ZnVuY3Rpb24odCl7''@;'; put 'put ''Zm9yKHZhciBpPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7KytuKWlbbl09YXJndW1lbnRzW25dO3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9iZWZvcmUuYXBwbHkodGhpcy5ub2RlLGMoaSkpfSxYLnJlbW92ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9yZW1vdmUo''@;'; put 'put ''KX0sWC5yZXBsYWNlV2l0aD1mdW5jdGlvbih0KXtmb3IodmFyIGk9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDsrK24paVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X3JlcGxhY2VXaXRoLmFwcGx5KHRoaXMubm9kZSxjKGkpKX0sZS5PYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydGllcyhNMi5wcm90b3R5cGUse2FjdGl2ZUVsZW1lbnQ6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKGUwKHRoaXMubm9kZSl8fHRoaXMubm9kZS5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfTk9ERSlyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlf''@;'; put 'put ''YWN0aXZlRWxlbWVudH19LF9hY3RpdmVFbGVtZW50Ontjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hY3RpdmVFbGVtZW50fX0saG9zdDp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYoZTAodGhp''@;'; put 'put ''cy5ub2RlKSlyZXR1cm4gdGhpcy5ub2RlLmhvc3R9fSxwYXJlbnROb2RlOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfcGFyZW50Tm9kZX19LGZpcnN0Q2hpbGQ6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxl''@;'; put 'put ''OiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9maXJzdENoaWxkfX0sbGFzdENoaWxkOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfbGFzdENoaWxkfX0sbmV4dFNpYmxpbmc6e2Nv''@;'; put 'put ''bmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9uZXh0U2libGluZ319LHByZXZpb3VzU2libGluZzp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3No''@;'; put 'put ''YWR5X3ByZXZpb3VzU2libGluZ319LGNoaWxkTm9kZXM6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9jaGlsZE5vZGVzfX0scGFyZW50RWxlbWVudDp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0''@;'; put 'put ''OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X3BhcmVudEVsZW1lbnR9fSxmaXJzdEVsZW1lbnRDaGlsZDp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2ZpcnN0RWxlbWVudENoaWxkfX0sbGFz''@;'; put 'put ''dEVsZW1lbnRDaGlsZDp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2xhc3RFbGVtZW50Q2hpbGR9fSxuZXh0RWxlbWVudFNpYmxpbmc6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9uZXh0RWxlbWVudFNpYmxpbmd9fSxwcmV2aW91c0VsZW1lbnRTaWJsaW5nOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfcHJldmlvdXNFbGVtZW50U2libGlu''@;'; put 'put ''Z319LGNoaWxkcmVuOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfY2hpbGRyZW59fSxjaGlsZEVsZW1lbnRDb3VudDp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMubm9kZS5fX3NoYWR5X2NoaWxkRWxlbWVudENvdW50fX0sc2hhZG93Um9vdDp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X3NoYWRvd1Jvb3R9fSxhc3NpZ25lZFNsb3Q6e2NvbmZpZ3VyYWJsZTohMCxl''@;'; put 'put ''bnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9hc3NpZ25lZFNsb3R9fSxpc0Nvbm5lY3RlZDp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2lzQ29ubmVjdGVkfX0s''@;'; put 'put ''aW5uZXJIVE1MOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfaW5uZXJIVE1MfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5ub2RlLl9fc2hhZHlfaW5uZXJIVE1MPXR9fSx0ZXh0Q29udGVudDp7Y29uZmlndXJhYmxl''@;'; put 'put ''OiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X3RleHRDb250ZW50fSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5ub2RlLl9fc2hhZHlfdGV4dENvbnRlbnQ9dH19LHNsb3Q6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9zbG90fSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5ub2RlLl9fc2hhZHlfc2xvdD10fX0sY2xhc3NOYW1lOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfY2xh''@;'; put 'put ''c3NOYW1lfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5ub2RlLl9fc2hhZHlfY2xhc3NOYW1lPXR9fX0pLHBsLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIFlsKHQpfSksZmwuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gWWwodCl9KTt2YXIgS2w9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gWGwo''@;'; put 'put ''dCl7aWYoZTAodCl8fHQgaW5zdGFuY2VvZiBNMilyZXR1cm4gdDt2YXIgaT1LbC5nZXQodCk7cmV0dXJuIGl8fChpPW5ldyBNMih0KSxLbC5zZXQodCxpKSksaX1pZih5MS55YSl7dmFyIFFsPXkxLkg/ZnVuY3Rpb24odCl7cmV0dXJuIHR9OmZ1bmN0aW9uKHQpe3JldHVybiBsbCh0KSxlbCh0''@;'; put 'put ''KSx0fSxSYT17aW5Vc2U6eTEueWEscGF0Y2g6UWwsaXNTaGFkeVJvb3Q6ZTAsZW5xdWV1ZTpxZSxmbHVzaDpldCxmbHVzaEluaXRpYWw6ZnVuY3Rpb24odCl7IXQuRmEmJnQuWSYmdXQodCl9LHNldHRpbmdzOnkxLGZpbHRlck11dGF0aW9uczpmdW5jdGlvbiB1YSh0LGkpe3ZhciBuPWkuZ2V0''@;'; put 'put ''Um9vdE5vZGUoKTtyZXR1cm4gdC5tYXAoZnVuY3Rpb24ocyl7dmFyIGQ9bj09PXMudGFyZ2V0LmdldFJvb3ROb2RlKCk7aWYoZCYmcy5hZGRlZE5vZGVzKXtpZihkPVtdLnNsaWNlLmNhbGwocy5hZGRlZE5vZGVzKS5maWx0ZXIoZnVuY3Rpb24obSl7cmV0dXJuIG49PT1tLmdldFJvb3ROb2Rl''@;'; put 'put ''KCl9KSxkLmxlbmd0aClyZXR1cm4gcz1PYmplY3QuY3JlYXRlKHMpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCJhZGRlZE5vZGVzIix7dmFsdWU6ZCxjb25maWd1cmFibGU6ITB9KSxzfWVsc2UgaWYoZClyZXR1cm4gc30pLmZpbHRlcihmdW5jdGlvbihzKXtyZXR1cm4gc30pfSxvYnNlcnZl''@;'; put 'put ''Q2hpbGRyZW46ZnVuY3Rpb24gaGEodCxpKXt2YXIgbj1xMSh0KTtuLmVhfHwobi5lYT1uZXcganQpLG4uZWEub2EuYWRkKGkpO3ZhciBzPW4uZWE7cmV0dXJue1JhOmksWDpzLFNhOnQsdGFrZVJlY29yZHM6ZnVuY3Rpb24oKXtyZXR1cm4gcy50YWtlUmVjb3JkcygpfX19LHVub2JzZXJ2ZUNo''@;'; put 'put ''aWxkcmVuOmZ1bmN0aW9uIGRhKHQpe3ZhciBpPXQmJnQuWDtpJiYoaS5vYS5kZWxldGUodC5SYSksaS5vYS5zaXplfHwocTEodC5TYSkuZWE9bnVsbCkpfSxkZWZlckNvbm5lY3Rpb25DYWxsYmFja3M6eTEuZGVmZXJDb25uZWN0aW9uQ2FsbGJhY2tzLHByZWZlclBlcmZvcm1hbmNlOnkxLnBy''@;'; put 'put ''ZWZlclBlcmZvcm1hbmNlLGhhbmRsZXNEeW5hbWljU2NvcGluZzohMCx3cmFwOnkxLko/WGw6UWwsd3JhcElmTmVlZGVkOiEwPT09eTEuSj9YbDpmdW5jdGlvbih0KXtyZXR1cm4gdH0sV3JhcHBlcjpNMixjb21wb3NlZFBhdGg6ZnVuY3Rpb24gVmEodCl7cmV0dXJuIHQuX19jb21wb3NlZFBh''@;'; put 'put ''dGh8fCh0Ll9fY29tcG9zZWRQYXRoPWl0KHQudGFyZ2V0LCEwKSksdC5fX2NvbXBvc2VkUGF0aH0sbm9QYXRjaDp5MS5KLHBhdGNoT25EZW1hbmQ6eTEuQWEsbmF0aXZlTWV0aG9kczp6dCxuYXRpdmVUcmVlOlhlLHBhdGNoRWxlbWVudFByb3RvOkZsfTt3aW5kb3cuU2hhZHlET009UmEsZnVu''@;'; put 'put ''Y3Rpb24gdmEoKXt2YXIgdD1bImRpc3BhdGNoRXZlbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciJdO3dpbmRvdy5FdmVudFRhcmdldD8oYzAod2luZG93LkV2ZW50VGFyZ2V0LnByb3RvdHlwZSx0KSx2b2lkIDA9PT13aW5kb3cuX19zaGFkeV9uYXRpdmVfYWRk''@;'; put 'put ''RXZlbnRMaXN0ZW5lciYmYzAoV2luZG93LnByb3RvdHlwZSx0KSk6KGMwKE5vZGUucHJvdG90eXBlLHQpLGMwKFdpbmRvdy5wcm90b3R5cGUsdCkpLGx0P2MwKE5vZGUucHJvdG90eXBlLCJwYXJlbnROb2RlIGZpcnN0Q2hpbGQgbGFzdENoaWxkIHByZXZpb3VzU2libGluZyBuZXh0U2libGlu''@;'; put 'put ''ZyBjaGlsZE5vZGVzIHBhcmVudEVsZW1lbnQgdGV4dENvbnRlbnQiLnNwbGl0KCIgIikpOkcyKE5vZGUucHJvdG90eXBlLHtwYXJlbnROb2RlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geTAuY3VycmVudE5vZGU9dGhpcyx5MC5wYXJlbnROb2RlKCl9fSxmaXJzdENoaWxkOntnZXQ6ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4geTAuY3VycmVudE5vZGU9dGhpcyx5MC5maXJzdENoaWxkKCl9fSxsYXN0Q2hpbGQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB5MC5jdXJyZW50Tm9kZT10aGlzLHkwLmxhc3RDaGlsZCgpfX0scHJldmlvdXNTaWJsaW5nOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geTAuY3Vy''@;'; put 'put ''cmVudE5vZGU9dGhpcyx5MC5wcmV2aW91c1NpYmxpbmcoKX19LG5leHRTaWJsaW5nOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geTAuY3VycmVudE5vZGU9dGhpcyx5MC5uZXh0U2libGluZygpfX0sY2hpbGROb2Rlczp7Z2V0OmZ1bmN0aW9uKCl7dmFyIGk9W107eTAuY3VycmVudE5vZGU9dGhp''@;'; put 'put ''cztmb3IodmFyIG49eTAuZmlyc3RDaGlsZCgpO247KWkucHVzaChuKSxuPXkwLm5leHRTaWJsaW5nKCk7cmV0dXJuIGl9fSxwYXJlbnRFbGVtZW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTDAuY3VycmVudE5vZGU9dGhpcyxMMC5wYXJlbnROb2RlKCl9fSx0ZXh0Q29udGVudDp7Z2V0OmZ1''@;'; put 'put ''bmN0aW9uKCl7c3dpdGNoKHRoaXMubm9kZVR5cGUpe2Nhc2UgTm9kZS5FTEVNRU5UX05PREU6Y2FzZSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Zm9yKHZhciBzLGk9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcih0aGlzLE5vZGVGaWx0ZXIuU0hPV19URVhULG51bGwsITEpLG49IiI7''@;'; put 'put ''cz1pLm5leHROb2RlKCk7KW4rPXMubm9kZVZhbHVlO3JldHVybiBuO2RlZmF1bHQ6cmV0dXJuIHRoaXMubm9kZVZhbHVlfX0sc2V0OmZ1bmN0aW9uKGkpe3N3aXRjaChudWxsPT1pJiYoaT0iIiksdGhpcy5ub2RlVHlwZSl7Y2FzZSBOb2RlLkVMRU1FTlRfTk9ERTpjYXNlIE5vZGUuRE9DVU1F''@;'; put 'put ''TlRfRlJBR01FTlRfTk9ERTpKZSh0aGlzKSwoMDxpLmxlbmd0aHx8dGhpcy5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKSYmdGhpcy5fX3NoYWR5X25hdGl2ZV9pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoaSksdm9pZCAwKTticmVhaztkZWZhdWx0OnRoaXMubm9k''@;'; put 'put ''ZVZhbHVlPWl9fX19KSxjMChOb2RlLnByb3RvdHlwZSwiYXBwZW5kQ2hpbGQgaW5zZXJ0QmVmb3JlIHJlbW92ZUNoaWxkIHJlcGxhY2VDaGlsZCBjbG9uZU5vZGUgY29udGFpbnMiLnNwbGl0KCIgIikpLGMwKEhUTUxFbGVtZW50LnByb3RvdHlwZSxbInBhcmVudEVsZW1lbnQiLCJjb250YWlu''@;'; put 'put ''cyJdKSx0PXtmaXJzdEVsZW1lbnRDaGlsZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEwwLmN1cnJlbnROb2RlPXRoaXMsTDAuZmlyc3RDaGlsZCgpfX0sbGFzdEVsZW1lbnRDaGlsZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEwwLmN1cnJlbnROb2RlPXRoaXMsTDAubGFzdENoaWxkKCl9fSxj''@;'; put 'put ''aGlsZHJlbjp7Z2V0OmZ1bmN0aW9uKCl7dmFyIGk9W107TDAuY3VycmVudE5vZGU9dGhpcztmb3IodmFyIG49TDAuZmlyc3RDaGlsZCgpO247KWkucHVzaChuKSxuPUwwLm5leHRTaWJsaW5nKCk7cmV0dXJuIEIwKGkpfX0sY2hpbGRFbGVtZW50Q291bnQ6e2dldDpmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLmNoaWxkcmVuP3RoaXMuY2hpbGRyZW4ubGVuZ3RoOjB9fX0sbHQ/KGMwKEVsZW1lbnQucHJvdG90eXBlLFd0KSxjMChFbGVtZW50LnByb3RvdHlwZSxbInByZXZpb3VzRWxlbWVudFNpYmxpbmciLCJuZXh0RWxlbWVudFNpYmxpbmciLCJpbm5lckhUTUwiLCJjbGFzc05hbWUiXSks''@;'; put 'put ''YzAoSFRNTEVsZW1lbnQucHJvdG90eXBlLFsiY2hpbGRyZW4iLCJpbm5lckhUTUwiLCJjbGFzc05hbWUiXSkpOihHMihFbGVtZW50LnByb3RvdHlwZSx0KSxHMihFbGVtZW50LnByb3RvdHlwZSx7cHJldmlvdXNFbGVtZW50U2libGluZzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEwwLmN1cnJl''@;'; put 'put ''bnROb2RlPXRoaXMsTDAucHJldmlvdXNTaWJsaW5nKCl9fSxuZXh0RWxlbWVudFNpYmxpbmc6e2dldDpmdW5jdGlvbigpe3JldHVybiBMMC5jdXJyZW50Tm9kZT10aGlzLEwwLm5leHRTaWJsaW5nKCl9fSxpbm5lckhUTUw6e2dldDpmdW5jdGlvbigpe3JldHVybiBSdCh0aGlzLFAyKX0sc2V0''@;'; put 'put ''OmZ1bmN0aW9uKGkpe3ZhciBuPSJ0ZW1wbGF0ZSI9PT10aGlzLmxvY2FsTmFtZT90aGlzLmNvbnRlbnQ6dGhpcztKZShuKTt2YXIgcz10aGlzLmxvY2FsTmFtZXx8ImRpdiI7Zm9yKChzPXRoaXMubmFtZXNwYWNlVVJJJiZ0aGlzLm5hbWVzcGFjZVVSSSE9PVV0Lm5hbWVzcGFjZVVSST9VdC5j''@;'; put 'put ''cmVhdGVFbGVtZW50TlModGhpcy5uYW1lc3BhY2VVUkkscyk6VXQuY3JlYXRlRWxlbWVudChzKSkuaW5uZXJIVE1MPWksaT0idGVtcGxhdGUiPT09dGhpcy5sb2NhbE5hbWU/cy5jb250ZW50OnM7cz1pLl9fc2hhZHlfbmF0aXZlX2ZpcnN0Q2hpbGQ7KW4uX19zaGFkeV9uYXRpdmVfaW5zZXJ0''@;'; put 'put ''QmVmb3JlKHMsdm9pZCAwKX19LGNsYXNzTmFtZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIn0sc2V0OmZ1bmN0aW9uKGkpe3RoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsaSl9fX0pKSxjMChFbGVtZW50LnByb3RvdHlwZSwic2V0QXR0cmli''@;'; put 'put ''dXRlIGdldEF0dHJpYnV0ZSBoYXNBdHRyaWJ1dGUgcmVtb3ZlQXR0cmlidXRlIGZvY3VzIGJsdXIiLnNwbGl0KCIgIikpLGMwKEVsZW1lbnQucHJvdG90eXBlLCR0KSxjMChIVE1MRWxlbWVudC5wcm90b3R5cGUsWyJmb2N1cyIsImJsdXIiXSksd2luZG93LkhUTUxUZW1wbGF0ZUVsZW1lbnQm''@;'; put 'put ''JmMwKHdpbmRvdy5IVE1MVGVtcGxhdGVFbGVtZW50LnByb3RvdHlwZSxbImlubmVySFRNTCJdKSxsdD9jMChEb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZSxXdCk6RzIoRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUsdCksYzAoRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUsJHQpLGx0Pyhj''@;'; put 'put ''MChEb2N1bWVudC5wcm90b3R5cGUsV3QpLGMwKERvY3VtZW50LnByb3RvdHlwZSxbImFjdGl2ZUVsZW1lbnQiXSkpOkcyKERvY3VtZW50LnByb3RvdHlwZSx0KSxjMChEb2N1bWVudC5wcm90b3R5cGUsWyJpbXBvcnROb2RlIiwiZ2V0RWxlbWVudEJ5SWQiLCJlbGVtZW50RnJvbVBvaW50IixP''@;'; put 'put ''MCgpXSksYzAoRG9jdW1lbnQucHJvdG90eXBlLCR0KX0oKSxObCgiX19zaGFkeV8iKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZG9jdW1lbnQsIl9hY3RpdmVFbGVtZW50IixwZS5hY3RpdmVFbGVtZW50KSxzMChXaW5kb3cucHJvdG90eXBlLFRsLCJfX3NoYWR5XyIpLHkxLko/eTEuQWEmJnMw''@;'; put 'put ''KEVsZW1lbnQucHJvdG90eXBlLHhsKTooTmwoKSxmdW5jdGlvbiBMYSgpe2lmKCFRdCYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFdmVudC5wcm90b3R5cGUsImlzVHJ1c3RlZCIpKXt2YXIgdD1mdW5jdGlvbigpe3ZhciBpPW5ldyBNb3VzZUV2ZW50KCJjbGljayIse2J1YmJs''@;'; put 'put ''ZXM6ITAsY2FuY2VsYWJsZTohMCxjb21wb3NlZDohMH0pO3RoaXMuX19zaGFkeV9kaXNwYXRjaEV2ZW50KGkpfTtFbGVtZW50LnByb3RvdHlwZS5jbGljaz9FbGVtZW50LnByb3RvdHlwZS5jbGljaz10OkhUTUxFbGVtZW50LnByb3RvdHlwZS5jbGljayYmKEhUTUxFbGVtZW50LnByb3RvdHlw''@;'; put 'put ''ZS5jbGljaz10KX19KCkpLGZ1bmN0aW9uIG1hKCl7Zm9yKHZhciB0IGluIG5sKXdpbmRvdy5fX3NoYWR5X25hdGl2ZV9hZGRFdmVudExpc3RlbmVyKHQsZnVuY3Rpb24oaSl7aS5fX3RhcmdldHx8KGllKGkpLHNsKGkpKX0sITApfSgpLHdpbmRvdy5FdmVudD1NYSx3aW5kb3cuQ3VzdG9tRXZl''@;'; put 'put ''bnQ9WmEsd2luZG93Lk1vdXNlRXZlbnQ9eWEsd2luZG93LlNoYWRvd1Jvb3Q9ZHR9dmFyIGZlPXdpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuY3JlYXRlRWxlbWVudCxnZT13aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnROUyx6YT13aW5kb3cuRG9jdW1lbnQucHJvdG90''@;'; put 'put ''eXBlLmltcG9ydE5vZGUsVWE9d2luZG93LkRvY3VtZW50LnByb3RvdHlwZS5wcmVwZW5kLFdhPXdpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuYXBwZW5kLCRhPXdpbmRvdy5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5wcmVwZW5kLHFhPXdpbmRvdy5Eb2N1bWVudEZyYWdtZW50LnByb3Rv''@;'; put 'put ''dHlwZS5hcHBlbmQsSmw9d2luZG93Lk5vZGUucHJvdG90eXBlLmNsb25lTm9kZSxndD13aW5kb3cuTm9kZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQsdGk9d2luZG93Lk5vZGUucHJvdG90eXBlLmluc2VydEJlZm9yZSxBZT13aW5kb3cuTm9kZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQsZWk9d2lu''@;'; put 'put ''ZG93Lk5vZGUucHJvdG90eXBlLnJlcGxhY2VDaGlsZCx2ZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdy5Ob2RlLnByb3RvdHlwZSwidGV4dENvbnRlbnQiKSxsaT13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuYXR0YWNoU2hhZG93LEhlPU9iamVjdC5nZXRPd25Qcm9w''@;'; put 'put ''ZXJ0eURlc2NyaXB0b3Iod2luZG93LkVsZW1lbnQucHJvdG90eXBlLCJpbm5lckhUTUwiKSxDZT13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlLGlpPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUsYWk9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLnJl''@;'; put 'put ''bW92ZUF0dHJpYnV0ZSxBdD13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlMscmk9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZU5TLG5pPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGVOUyxjaT13aW5kb3cuRWxlbWVudC5w''@;'; put 'put ''cm90b3R5cGUuaW5zZXJ0QWRqYWNlbnRFbGVtZW50LG9pPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5pbnNlcnRBZGphY2VudEhUTUwsWWE9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLnByZXBlbmQsS2E9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmFwcGVuZCxzaT13aW5kb3cuRWxlbWVu''@;'; put 'put ''dC5wcm90b3R5cGUuYmVmb3JlLGhpPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hZnRlcixkaT13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUucmVwbGFjZVdpdGgsdWk9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLnJlbW92ZSxYYT13aW5kb3cuSFRNTEVsZW1lbnQsVmU9T2JqZWN0LmdldE93''@;'; put 'put ''blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3cuSFRNTEVsZW1lbnQucHJvdG90eXBlLCJpbm5lckhUTUwiKSxwaT13aW5kb3cuSFRNTEVsZW1lbnQucHJvdG90eXBlLmluc2VydEFkamFjZW50RWxlbWVudCxmaT13aW5kb3cuSFRNTEVsZW1lbnQucHJvdG90eXBlLmluc2VydEFkamFjZW50SFRN''@;'; put 'put ''TCxnaT1uZXcgU2V0O2Z1bmN0aW9uIEFpKHQpe3ZhciBpPWdpLmhhcyh0KTtyZXR1cm4gdD0vXlthLXpdWy4wLTlfYS16XSotWy0uMC05X2Etel0qJC8udGVzdCh0KSwhaSYmdH0iYW5ub3RhdGlvbi14bWwgY29sb3ItcHJvZmlsZSBmb250LWZhY2UgZm9udC1mYWNlLXNyYyBmb250LWZhY2Ut''@;'; put 'put ''dXJpIGZvbnQtZmFjZS1mb3JtYXQgZm9udC1mYWNlLW5hbWUgbWlzc2luZy1nbHlwaCIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBnaS5hZGQodCl9KTt2YXIgUWE9ZG9jdW1lbnQuY29udGFpbnM/ZG9jdW1lbnQuY29udGFpbnMuYmluZChkb2N1bWVudCk6ZG9jdW1l''@;'; put 'put ''bnQuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zLmJpbmQoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtmdW5jdGlvbiByMCh0KXt2YXIgaT10LmlzQ29ubmVjdGVkO2lmKHZvaWQgMCE9PWkpcmV0dXJuIGk7aWYoUWEodCkpcmV0dXJuITA7Zm9yKDt0JiYhKHQuX19DRV9pc0ltcG9ydERvY3Vt''@;'; put 'put ''ZW50fHx0IGluc3RhbmNlb2YgRG9jdW1lbnQpOyl0PXQucGFyZW50Tm9kZXx8KHdpbmRvdy5TaGFkb3dSb290JiZ0IGluc3RhbmNlb2YgU2hhZG93Um9vdD90Lmhvc3Q6dm9pZCAwKTtyZXR1cm4hKCF0fHwhKHQuX19DRV9pc0ltcG9ydERvY3VtZW50fHx0IGluc3RhbmNlb2YgRG9jdW1lbnQp''@;'; put 'put ''KX1mdW5jdGlvbiBtZSh0KXt2YXIgaT10LmNoaWxkcmVuO2lmKGkpcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGkpO2ZvcihpPVtdLHQ9dC5maXJzdENoaWxkO3Q7dD10Lm5leHRTaWJsaW5nKXQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmaS5wdXNoKHQpO3JldHVy''@;'; put 'put ''biBpfWZ1bmN0aW9uIE1lKHQsaSl7Zm9yKDtpJiZpIT09dCYmIWkubmV4dFNpYmxpbmc7KWk9aS5wYXJlbnROb2RlO3JldHVybiBpJiZpIT09dD9pLm5leHRTaWJsaW5nOm51bGx9ZnVuY3Rpb24gWmUodCxpLG4pe2Zvcih2YXIgcz10O3M7KXtpZihzLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5U''@;'; put 'put ''X05PREUpe3ZhciBkPXM7aShkKTt2YXIgbT1kLmxvY2FsTmFtZTtpZigibGluayI9PT1tJiYiaW1wb3J0Ij09PWQuZ2V0QXR0cmlidXRlKCJyZWwiKSl7aWYocz1kLmltcG9ydCx2b2lkIDA9PT1uJiYobj1uZXcgU2V0KSxzIGluc3RhbmNlb2YgTm9kZSYmIW4uaGFzKHMpKWZvcihuLmFkZChz''@;'; put 'put ''KSxzPXMuZmlyc3RDaGlsZDtzO3M9cy5uZXh0U2libGluZylaZShzLGksbik7cz1NZSh0LGQpO2NvbnRpbnVlfWlmKCJ0ZW1wbGF0ZSI9PT1tKXtzPU1lKHQsZCk7Y29udGludWV9aWYoZD1kLl9fQ0Vfc2hhZG93Um9vdClmb3IoZD1kLmZpcnN0Q2hpbGQ7ZDtkPWQubmV4dFNpYmxpbmcpWmUo''@;'; put 'put ''ZCxpLG4pfXM9cy5maXJzdENoaWxkP3MuZmlyc3RDaGlsZDpNZSh0LHMpfX1mdW5jdGlvbiB2dCgpe3ZhciB0PSEobnVsbD09ajB8fCFqMC5ub0RvY3VtZW50Q29uc3RydWN0aW9uT2JzZXJ2ZXIpLGk9IShudWxsPT1qMHx8IWowLnNoYWR5RG9tRmFzdFdhbGspO3RoaXMuY2E9W10sdGhpcy5n''@;'; put 'put ''PVtdLHRoaXMuVz0hMSx0aGlzLnNoYWR5RG9tRmFzdFdhbGs9aSx0aGlzLm5iPSF0fWZ1bmN0aW9uIFUyKHQsaSxuLHMpe3ZhciBkPXdpbmRvdy5TaGFkeURPTTtpZih0LnNoYWR5RG9tRmFzdFdhbGsmJmQmJmQuaW5Vc2Upe2lmKGkubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmbihp''@;'; put 'put ''KSxpLnF1ZXJ5U2VsZWN0b3JBbGwpZm9yKHQ9ZC5uYXRpdmVNZXRob2RzLnF1ZXJ5U2VsZWN0b3JBbGwuY2FsbChpLCIqIiksaT0wO2k8dC5sZW5ndGg7aSsrKW4odFtpXSl9ZWxzZSBaZShpLG4scyl9ZnVuY3Rpb24geWUodCxpKXt0LlcmJlUyKHQsaSxmdW5jdGlvbihuKXtyZXR1cm4gWjIo''@;'; put 'put ''dCxuKX0pfWZ1bmN0aW9uIFoyKHQsaSl7aWYodC5XJiYhaS5fX0NFX3BhdGNoZWQpe2kuX19DRV9wYXRjaGVkPSEwO2Zvcih2YXIgbj0wO248dC5jYS5sZW5ndGg7bisrKXQuY2Fbbl0oaSk7Zm9yKG49MDtuPHQuZy5sZW5ndGg7bisrKXQuZ1tuXShpKX19ZnVuY3Rpb24gRzAodCxpKXt2YXIg''@;'; put 'put ''bj1bXTtmb3IoVTIodCxpLGZ1bmN0aW9uKGQpe3JldHVybiBuLnB1c2goZCl9KSxpPTA7aTxuLmxlbmd0aDtpKyspe3ZhciBzPW5baV07MT09PXMuX19DRV9zdGF0ZT90LmNvbm5lY3RlZENhbGxiYWNrKHMpOkh0KHQscyl9fWZ1bmN0aW9uIFMwKHQsaSl7dmFyIG49W107Zm9yKFUyKHQsaSxm''@;'; put 'put ''dW5jdGlvbihkKXtyZXR1cm4gbi5wdXNoKGQpfSksaT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgcz1uW2ldOzE9PT1zLl9fQ0Vfc3RhdGUmJnQuZGlzY29ubmVjdGVkQ2FsbGJhY2socyl9fWZ1bmN0aW9uIFkwKHQsaSxuKXt2YXIgcz0obj12b2lkIDA9PT1uP3t9Om4pLm9iLGQ9bi51cGdyYWRl''@;'; put 'put ''fHxmdW5jdGlvbihMKXtyZXR1cm4gSHQodCxMKX0sbT1bXTtmb3IoVTIodCxpLGZ1bmN0aW9uKEwpe2lmKHQuVyYmWjIodCxMKSwibGluayI9PT1MLmxvY2FsTmFtZSYmImltcG9ydCI9PT1MLmdldEF0dHJpYnV0ZSgicmVsIikpe3ZhciBGPUwuaW1wb3J0O0YgaW5zdGFuY2VvZiBOb2RlJiYo''@;'; put 'put ''Ri5fX0NFX2lzSW1wb3J0RG9jdW1lbnQ9ITAsRi5fX0NFX3JlZ2lzdHJ5PWRvY3VtZW50Ll9fQ0VfcmVnaXN0cnkpLEYmJiJjb21wbGV0ZSI9PT1GLnJlYWR5U3RhdGU/Ri5fX0NFX2RvY3VtZW50TG9hZEhhbmRsZWQ9ITA6TC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbigpe3Zh''@;'; put 'put ''ciBHPUwuaW1wb3J0O2lmKCFHLl9fQ0VfZG9jdW1lbnRMb2FkSGFuZGxlZCl7Ry5fX0NFX2RvY3VtZW50TG9hZEhhbmRsZWQ9ITA7dmFyIFU9bmV3IFNldDtzJiYocy5mb3JFYWNoKGZ1bmN0aW9uKEspe3JldHVybiBVLmFkZChLKX0pLFUuZGVsZXRlKEcpKSxZMCh0LEcse29iOlUsdXBncmFk''@;'; put 'put ''ZTpkfSl9fSl9ZWxzZSBtLnB1c2goTCl9LHMpLGk9MDtpPG0ubGVuZ3RoO2krKylkKG1baV0pfWZ1bmN0aW9uIEh0KHQsaSl7dHJ5e3ZhciBuPWkub3duZXJEb2N1bWVudCxzPW4uX19DRV9yZWdpc3RyeSxkPXMmJihuLmRlZmF1bHRWaWV3fHxuLl9fQ0VfaXNJbXBvcnREb2N1bWVudCk/Q3Qo''@;'; put 'put ''cyxpLmxvY2FsTmFtZSk6dm9pZCAwO2lmKGQmJnZvaWQgMD09PWkuX19DRV9zdGF0ZSl7ZC5jb25zdHJ1Y3Rpb25TdGFjay5wdXNoKGkpO3RyeXt0cnl7aWYobmV3IGQuY29uc3RydWN0b3JGdW5jdGlvbiE9PWkpdGhyb3cgRXJyb3IoIlRoZSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciBk''@;'; put 'put ''aWQgbm90IHByb2R1Y2UgdGhlIGVsZW1lbnQgYmVpbmcgdXBncmFkZWQuIil9ZmluYWxseXtkLmNvbnN0cnVjdGlvblN0YWNrLnBvcCgpfX1jYXRjaChHKXt0aHJvdyBpLl9fQ0Vfc3RhdGU9MixHfWlmKGkuX19DRV9zdGF0ZT0xLGkuX19DRV9kZWZpbml0aW9uPWQsZC5hdHRyaWJ1dGVDaGFu''@;'; put 'put ''Z2VkQ2FsbGJhY2smJmkuaGFzQXR0cmlidXRlcygpKXt2YXIgbT1kLm9ic2VydmVkQXR0cmlidXRlcztmb3IoZD0wO2Q8bS5sZW5ndGg7ZCsrKXt2YXIgTD1tW2RdLEY9aS5nZXRBdHRyaWJ1dGUoTCk7bnVsbCE9PUYmJnQuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKGksTCxudWxsLEYsbnVs''@;'; put 'put ''bCl9fXIwKGkpJiZ0LmNvbm5lY3RlZENhbGxiYWNrKGkpfX1jYXRjaChHKXt5MihHKX19ZnVuY3Rpb24gdmkodCxpLG4scyl7dmFyIGQ9aS5fX0NFX3JlZ2lzdHJ5O2lmKGQmJihudWxsPT09c3x8Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPT09cykmJihkPUN0KGQsbikpKXRyeXt2''@;'; put 'put ''YXIgbT1uZXcgZC5jb25zdHJ1Y3RvckZ1bmN0aW9uO2lmKHZvaWQgMD09PW0uX19DRV9zdGF0ZXx8dm9pZCAwPT09bS5fX0NFX2RlZmluaXRpb24pdGhyb3cgRXJyb3IoIkZhaWxlZCB0byBjb25zdHJ1Y3QgJyIrbisiJzogVGhlIHJldHVybmVkIHZhbHVlIHdhcyBub3QgY29uc3RydWN0ZWQg''@;'; put 'put ''d2l0aCB0aGUgSFRNTEVsZW1lbnQgY29uc3RydWN0b3IuIik7aWYoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIT09bS5uYW1lc3BhY2VVUkkpdGhyb3cgRXJyb3IoIkZhaWxlZCB0byBjb25zdHJ1Y3QgJyIrbisiJzogVGhlIGNvbnN0cnVjdGVkIGVsZW1lbnQncyBuYW1lc3BhY2Ug''@;'; put 'put ''bXVzdCBiZSB0aGUgSFRNTCBuYW1lc3BhY2UuIik7aWYobS5oYXNBdHRyaWJ1dGVzKCkpdGhyb3cgRXJyb3IoIkZhaWxlZCB0byBjb25zdHJ1Y3QgJyIrbisiJzogVGhlIGNvbnN0cnVjdGVkIGVsZW1lbnQgbXVzdCBub3QgaGF2ZSBhbnkgYXR0cmlidXRlcy4iKTtpZihudWxsIT09bS5maXJz''@;'; put 'put ''dENoaWxkKXRocm93IEVycm9yKCJGYWlsZWQgdG8gY29uc3RydWN0ICciK24rIic6IFRoZSBjb25zdHJ1Y3RlZCBlbGVtZW50IG11c3Qgbm90IGhhdmUgYW55IGNoaWxkcmVuLiIpO2lmKG51bGwhPT1tLnBhcmVudE5vZGUpdGhyb3cgRXJyb3IoIkZhaWxlZCB0byBjb25zdHJ1Y3QgJyIrbisi''@;'; put 'put ''JzogVGhlIGNvbnN0cnVjdGVkIGVsZW1lbnQgbXVzdCBub3QgaGF2ZSBhIHBhcmVudCBub2RlLiIpO2lmKG0ub3duZXJEb2N1bWVudCE9PWkpdGhyb3cgRXJyb3IoIkZhaWxlZCB0byBjb25zdHJ1Y3QgJyIrbisiJzogVGhlIGNvbnN0cnVjdGVkIGVsZW1lbnQncyBvd25lciBkb2N1bWVudCBp''@;'; put 'put ''cyBpbmNvcnJlY3QuIik7aWYobS5sb2NhbE5hbWUhPT1uKXRocm93IEVycm9yKCJGYWlsZWQgdG8gY29uc3RydWN0ICciK24rIic6IFRoZSBjb25zdHJ1Y3RlZCBlbGVtZW50J3MgbG9jYWwgbmFtZSBpcyBpbmNvcnJlY3QuIik7cmV0dXJuIG19Y2F0Y2goTCl7cmV0dXJuIHkyKEwpLGk9bnVs''@;'; put 'put ''bD09PXM/ZmUuY2FsbChpLG4pOmdlLmNhbGwoaSxzLG4pLE9iamVjdC5zZXRQcm90b3R5cGVPZihpLEhUTUxVbmtub3duRWxlbWVudC5wcm90b3R5cGUpLGkuX19DRV9zdGF0ZT0yLGkuX19DRV9kZWZpbml0aW9uPXZvaWQgMCxaMih0LGkpLGl9cmV0dXJuIFoyKHQsaT1udWxsPT09cz9mZS5j''@;'; put 'put ''YWxsKGksbik6Z2UuY2FsbChpLHMsbikpLGl9ZnVuY3Rpb24geTIodCl7dmFyIGk9dC5tZXNzYWdlLG49dC5zb3VyY2VVUkx8fHQuZmlsZU5hbWV8fCIiLHM9dC5saW5lfHx0LmxpbmVOdW1iZXJ8fDAsbT12b2lkIDA7dm9pZCAwPT09RXJyb3JFdmVudC5wcm90b3R5cGUuaW5pdEVycm9yRXZl''@;'; put 'put ''bnQ/bT1uZXcgRXJyb3JFdmVudCgiZXJyb3IiLHtjYW5jZWxhYmxlOiEwLG1lc3NhZ2U6aSxmaWxlbmFtZTpuLGxpbmVubzpzLGNvbG5vOnQuY29sdW1ufHx0LmNvbHVtbk51bWJlcnx8MCxlcnJvcjp0fSk6KChtPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFcnJvckV2ZW50IikpLmluaXRFcnJv''@;'; put 'put ''ckV2ZW50KCJlcnJvciIsITEsITAsaSxuLHMpLG0ucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiZGVmYXVsdFByZXZlbnRlZCIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19KX0pLHZvaWQgMD09PW0uZXJyb3Im''@;'; put 'put ''Jk9iamVjdC5kZWZpbmVQcm9wZXJ0eShtLCJlcnJvciIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0fX0pLHdpbmRvdy5kaXNwYXRjaEV2ZW50KG0pLG0uZGVmYXVsdFByZXZlbnRlZHx8Y29uc29sZS5lcnJvcih0KX1mdW5jdGlvbiBIaSgp''@;'; put 'put ''e3ZhciB0PXRoaXM7dGhpcy5JPXZvaWQgMCx0aGlzLkhhPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGkpe3QuZz1pfSl9ZnVuY3Rpb24gQ2kodCl7dmFyIGk9ZG9jdW1lbnQ7dGhpcy5YPXZvaWQgMCx0aGlzLlM9dCx0aGlzLmc9aSxZMCh0aGlzLlMsdGhpcy5nKSwibG9hZGluZyI9PT10aGlzLmcu''@;'; put 'put ''cmVhZHlTdGF0ZSYmKHRoaXMuWD1uZXcgTXV0YXRpb25PYnNlcnZlcih0aGlzLmguYmluZCh0aGlzKSksdGhpcy5YLm9ic2VydmUodGhpcy5nLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pKX1mdW5jdGlvbiBWaSh0KXt0LlgmJnQuWC5kaXNjb25uZWN0KCl9ZnVuY3Rpb24gdjAodCl7dGhp''@;'; put 'put ''cy5rYT1uZXcgTWFwLHRoaXMubGE9bmV3IE1hcCx0aGlzLkNhPW5ldyBNYXAsdGhpcy50YT0hMSx0aGlzLndhPW5ldyBNYXAsdGhpcy5qYT1mdW5jdGlvbihpKXtyZXR1cm4gaSgpfSx0aGlzLlY9ITEsdGhpcy5tYT1bXSx0aGlzLlM9dCx0aGlzLkRhPXQubmI/bmV3IENpKHQpOnZvaWQgMH1m''@;'; put 'put ''dW5jdGlvbiBtaSh0LGkpe2lmKCFBaShpKSl0aHJvdyBuZXcgU3ludGF4RXJyb3IoIlRoZSBlbGVtZW50IG5hbWUgJyIraSsiJyBpcyBub3QgdmFsaWQuIik7aWYoQ3QodCxpKSl0aHJvdyBFcnJvcigiQSBjdXN0b20gZWxlbWVudCB3aXRoIG5hbWUgJyIraSsiJyBoYXMgYWxyZWFkeSBiZWVu''@;'; put 'put ''IGRlZmluZWQuIik7aWYodC50YSl0aHJvdyBFcnJvcigiQSBjdXN0b20gZWxlbWVudCBpcyBhbHJlYWR5IGJlaW5nIGRlZmluZWQuIil9ZnVuY3Rpb24gTWkodCxpLG4pe3ZhciBzO3QudGE9ITA7dHJ5e3ZhciBkPW4ucHJvdG90eXBlO2lmKCEoZCBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiVGhlIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yJ3MgcHJvdG90eXBlIGlzIG5vdCBhbiBvYmplY3QuIik7dmFyIG09ZnVuY3Rpb24oSyl7dmFyIEgxPWRbS107aWYodm9pZCAwIT09SDEmJiEoSDEgaW5zdGFuY2VvZiBGdW5jdGlvbikpdGhyb3cgRXJyb3IoIlRo''@;'; put 'put ''ZSAnIitLKyInIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4iKTtyZXR1cm4gSDF9LEw9bSgiY29ubmVjdGVkQ2FsbGJhY2siKSxGPW0oImRpc2Nvbm5lY3RlZENhbGxiYWNrIiksRz1tKCJhZG9wdGVkQ2FsbGJhY2siKSxVPShzPW0oImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayIpKSYm''@;'; put 'put ''bi5vYnNlcnZlZEF0dHJpYnV0ZXN8fFtdfWNhdGNoKEspe3Rocm93IEt9ZmluYWxseXt0LnRhPSExfXJldHVybiB0LmxhLnNldChpLG49e2xvY2FsTmFtZTppLGNvbnN0cnVjdG9yRnVuY3Rpb246bixjb25uZWN0ZWRDYWxsYmFjazpMLGRpc2Nvbm5lY3RlZENhbGxiYWNrOkYsYWRvcHRlZENh''@;'; put 'put ''bGxiYWNrOkcsYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrOnMsb2JzZXJ2ZWRBdHRyaWJ1dGVzOlUsY29uc3RydWN0aW9uU3RhY2s6W119KSx0LkNhLnNldChuLmNvbnN0cnVjdG9yRnVuY3Rpb24sbiksbn1mdW5jdGlvbiBaaSh0KXtpZighMSE9PXQuVil7dC5WPSExO2Zvcih2YXIgaT1bXSxu''@;'; put 'put ''PXQubWEscz1uZXcgTWFwLGQ9MDtkPG4ubGVuZ3RoO2QrKylzLnNldChuW2RdLFtdKTtmb3IoWTAodC5TLGRvY3VtZW50LHt1cGdyYWRlOmZ1bmN0aW9uKEcpe2lmKHZvaWQgMD09PUcuX19DRV9zdGF0ZSl7dmFyIFU9Ry5sb2NhbE5hbWUsSz1zLmdldChVKTtLP0sucHVzaChHKTp0LmxhLmhh''@;'; put 'put ''cyhVKSYmaS5wdXNoKEcpfX19KSxkPTA7ZDxpLmxlbmd0aDtkKyspSHQodC5TLGlbZF0pO2ZvcihkPTA7ZDxuLmxlbmd0aDtkKyspe2Zvcih2YXIgbT1uW2RdLEw9cy5nZXQobSksRj0wO0Y8TC5sZW5ndGg7RisrKUh0KHQuUyxMW0ZdKTsobT10LndhLmdldChtKSkmJm0ucmVzb2x2ZSh2b2lk''@;'; put 'put ''IDApfW4ubGVuZ3RoPTB9fWZ1bmN0aW9uIEN0KHQsaSl7dmFyIG49dC5sYS5nZXQoaSk7aWYobilyZXR1cm4gbjtpZihuPXQua2EuZ2V0KGkpKXt0LmthLmRlbGV0ZShpKTt0cnl7cmV0dXJuIE1pKHQsaSxuKCkpfWNhdGNoKHMpe3kyKHMpfX19ZnVuY3Rpb24gTGUodCxpLG4pe2Z1bmN0aW9u''@;'; put 'put ''IHMoZCl7cmV0dXJuIGZ1bmN0aW9uKG0pe2Zvcih2YXIgTD1bXSxGPTA7Rjxhcmd1bWVudHMubGVuZ3RoOysrRilMW0ZdPWFyZ3VtZW50c1tGXTtGPVtdO2Zvcih2YXIgRz1bXSxVPTA7VTxMLmxlbmd0aDtVKyspe3ZhciBLPUxbVV07aWYoSyBpbnN0YW5jZW9mIEVsZW1lbnQmJnIwKEspJiZH''@;'; put 'put ''LnB1c2goSyksSyBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpZm9yKEs9Sy5maXJzdENoaWxkO0s7Sz1LLm5leHRTaWJsaW5nKUYucHVzaChLKTtlbHNlIEYucHVzaChLKX1mb3IoZC5hcHBseSh0aGlzLEwpLEw9MDtMPEcubGVuZ3RoO0wrKylTMCh0LEdbTF0pO2lmKHIwKHRoaXMpKWZv''@;'; put 'put ''cihMPTA7TDxGLmxlbmd0aDtMKyspKEc9RltMXSlpbnN0YW5jZW9mIEVsZW1lbnQmJkcwKHQsRyl9fXZvaWQgMCE9PW4ucHJlcGVuZCYmKGkucHJlcGVuZD1zKG4ucHJlcGVuZCkpLHZvaWQgMCE9PW4uYXBwZW5kJiYoaS5hcHBlbmQ9cyhuLmFwcGVuZCkpfXZ0LnByb3RvdHlwZS5jb25uZWN0''@;'; put 'put ''ZWRDYWxsYmFjaz1mdW5jdGlvbih0KXt2YXIgaT10Ll9fQ0VfZGVmaW5pdGlvbjtpZihpLmNvbm5lY3RlZENhbGxiYWNrKXRyeXtpLmNvbm5lY3RlZENhbGxiYWNrLmNhbGwodCl9Y2F0Y2gobil7eTIobil9fSx2dC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s9ZnVuY3Rpb24odCl7''@;'; put 'put ''dmFyIGk9dC5fX0NFX2RlZmluaXRpb247aWYoaS5kaXNjb25uZWN0ZWRDYWxsYmFjayl0cnl7aS5kaXNjb25uZWN0ZWRDYWxsYmFjay5jYWxsKHQpfWNhdGNoKG4pe3kyKG4pfX0sdnQucHJvdG90eXBlLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjaz1mdW5jdGlvbih0LGksbixzLGQpe3ZhciBt''@;'; put 'put ''PXQuX19DRV9kZWZpbml0aW9uO2lmKG0uYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrJiYtMTxtLm9ic2VydmVkQXR0cmlidXRlcy5pbmRleE9mKGkpKXRyeXttLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjay5jYWxsKHQsaSxuLHMsZCl9Y2F0Y2goTCl7eTIoTCl9fSxIaS5wcm90b3R5cGUucmVz''@;'; put 'put ''b2x2ZT1mdW5jdGlvbih0KXtpZih0aGlzLkkpdGhyb3cgRXJyb3IoIkFscmVhZHkgcmVzb2x2ZWQuIik7dGhpcy5JPXQsdGhpcy5nKHQpfSxDaS5wcm90b3R5cGUuaD1mdW5jdGlvbih0KXt2YXIgaT10aGlzLmcucmVhZHlTdGF0ZTtmb3IoImludGVyYWN0aXZlIiE9PWkmJiJjb21wbGV0ZSIh''@;'; put 'put ''PT1pfHxWaSh0aGlzKSxpPTA7aTx0Lmxlbmd0aDtpKyspZm9yKHZhciBuPXRbaV0uYWRkZWROb2RlcyxzPTA7czxuLmxlbmd0aDtzKyspWTAodGhpcy5TLG5bc10pfSwoWD12MC5wcm90b3R5cGUpLmViPWZ1bmN0aW9uKHQsaSl7dmFyIG49dGhpcztpZighKGkgaW5zdGFuY2VvZiBGdW5jdGlv''@;'; put 'put ''bikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgZ2V0dGVycyBtdXN0IGJlIGZ1bmN0aW9ucy4iKTttaSh0aGlzLHQpLHRoaXMua2Euc2V0KHQsaSksdGhpcy5tYS5wdXNoKHQpLHRoaXMuVnx8KHRoaXMuVj0hMCx0aGlzLmphKGZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIFppKG4pfSkpfSxYLmRlZmluZT1mdW5jdGlvbih0LGkpe3ZhciBuPXRoaXM7aWYoIShpIGluc3RhbmNlb2YgRnVuY3Rpb24pKXRocm93IG5ldyBUeXBlRXJyb3IoIkN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9ycyBtdXN0IGJlIGZ1bmN0aW9ucy4iKTttaSh0aGlzLHQpLE1pKHRoaXMs''@;'; put 'put ''dCxpKSx0aGlzLm1hLnB1c2godCksdGhpcy5WfHwodGhpcy5WPSEwLHRoaXMuamEoZnVuY3Rpb24oKXtyZXR1cm4gWmkobil9KSl9LFgudXBncmFkZT1mdW5jdGlvbih0KXtZMCh0aGlzLlMsdCl9LFguZ2V0PWZ1bmN0aW9uKHQpe2lmKHQ9Q3QodGhpcyx0KSlyZXR1cm4gdC5jb25zdHJ1Y3Rv''@;'; put 'put ''ckZ1bmN0aW9ufSxYLndoZW5EZWZpbmVkPWZ1bmN0aW9uKHQpe2lmKCFBaSh0KSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFN5bnRheEVycm9yKCInIit0KyInIGlzIG5vdCBhIHZhbGlkIGN1c3RvbSBlbGVtZW50IG5hbWUuIikpO3ZhciBpPXRoaXMud2EuZ2V0KHQpO2lmKGkpcmV0dXJu''@;'; put 'put ''IGkuSGE7aT1uZXcgSGksdGhpcy53YS5zZXQodCxpKTt2YXIgbj10aGlzLmxhLmhhcyh0KXx8dGhpcy5rYS5oYXModCk7cmV0dXJuIHQ9LTE9PT10aGlzLm1hLmluZGV4T2YodCksbiYmdCYmaS5yZXNvbHZlKHZvaWQgMCksaS5IYX0sWC5wb2x5ZmlsbFdyYXBGbHVzaENhbGxiYWNrPWZ1bmN0''@;'; put 'put ''aW9uKHQpe3RoaXMuRGEmJlZpKHRoaXMuRGEpO3ZhciBpPXRoaXMuamE7dGhpcy5qYT1mdW5jdGlvbihuKXtyZXR1cm4gdChmdW5jdGlvbigpe3JldHVybiBpKG4pfSl9fSx3aW5kb3cuQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5PXYwLHYwLnByb3RvdHlwZS5kZWZpbmU9djAucHJvdG90eXBlLmRl''@;'; put 'put ''ZmluZSx2MC5wcm90b3R5cGUudXBncmFkZT12MC5wcm90b3R5cGUudXBncmFkZSx2MC5wcm90b3R5cGUuZ2V0PXYwLnByb3RvdHlwZS5nZXQsdjAucHJvdG90eXBlLndoZW5EZWZpbmVkPXYwLnByb3RvdHlwZS53aGVuRGVmaW5lZCx2MC5wcm90b3R5cGUucG9seWZpbGxEZWZpbmVMYXp5PXYw''@;'; put 'put ''LnByb3RvdHlwZS5lYix2MC5wcm90b3R5cGUucG9seWZpbGxXcmFwRmx1c2hDYWxsYmFjaz12MC5wcm90b3R5cGUucG9seWZpbGxXcmFwRmx1c2hDYWxsYmFjazt2YXIgeWk9e30sajA9d2luZG93LmN1c3RvbUVsZW1lbnRzO2Z1bmN0aW9uIExpKCl7dmFyIHQ9bmV3IHZ0OyhmdW5jdGlvbiBh''@;'; put 'put ''cih0KXtmdW5jdGlvbiBpKCl7dmFyIG49dGhpcy5jb25zdHJ1Y3RvcixzPWRvY3VtZW50Ll9fQ0VfcmVnaXN0cnkuQ2EuZ2V0KG4pO2lmKCFzKXRocm93IEVycm9yKCJGYWlsZWQgdG8gY29uc3RydWN0IGEgY3VzdG9tIGVsZW1lbnQ6IFRoZSBjb25zdHJ1Y3RvciB3YXMgbm90IHJlZ2lzdGVy''@;'; put 'put ''ZWQgd2l0aCBgY3VzdG9tRWxlbWVudHNgLiIpO3ZhciBkPXMuY29uc3RydWN0aW9uU3RhY2s7aWYoMD09PWQubGVuZ3RoKXJldHVybiBkPWZlLmNhbGwoZG9jdW1lbnQscy5sb2NhbE5hbWUpLE9iamVjdC5zZXRQcm90b3R5cGVPZihkLG4ucHJvdG90eXBlKSxkLl9fQ0Vfc3RhdGU9MSxkLl9f''@;'; put 'put ''Q0VfZGVmaW5pdGlvbj1zLFoyKHQsZCksZDt2YXIgbT1kLmxlbmd0aC0xLEw9ZFttXTtpZihMPT09eWkpdGhyb3cgRXJyb3IoIkZhaWxlZCB0byBjb25zdHJ1Y3QgJyIrcy5sb2NhbE5hbWUrIic6IFRoaXMgZWxlbWVudCB3YXMgYWxyZWFkeSBjb25zdHJ1Y3RlZC4iKTtyZXR1cm4gZFttXT15''@;'; put 'put ''aSxPYmplY3Quc2V0UHJvdG90eXBlT2YoTCxuLnByb3RvdHlwZSksWjIodCxMKSxMfWkucHJvdG90eXBlPVhhLnByb3RvdHlwZSxPYmplY3QuZGVmaW5lUHJvcGVydHkoSFRNTEVsZW1lbnQucHJvdG90eXBlLCJjb25zdHJ1Y3RvciIse3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxlbnVt''@;'; put 'put ''ZXJhYmxlOiExLHZhbHVlOml9KSx3aW5kb3cuSFRNTEVsZW1lbnQ9aX0pKHQpLGZ1bmN0aW9uIGVyKHQpe0RvY3VtZW50LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGkpe3JldHVybiB2aSh0LHRoaXMsaSxudWxsKX0sRG9jdW1lbnQucHJvdG90eXBlLmltcG9ydE5vZGU9ZnVu''@;'; put 'put ''Y3Rpb24oaSxuKXtyZXR1cm4gaT16YS5jYWxsKHRoaXMsaSwhIW4pLHRoaXMuX19DRV9yZWdpc3RyeT9ZMCh0LGkpOnllKHQsaSksaX0sRG9jdW1lbnQucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnROUz1mdW5jdGlvbihpLG4pe3JldHVybiB2aSh0LHRoaXMsbixpKX0sTGUodCxEb2N1bWVudC5w''@;'; put 'put ''cm90b3R5cGUse3ByZXBlbmQ6VWEsYXBwZW5kOldhfSl9KHQpLExlKHQsRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUse3ByZXBlbmQ6JGEsYXBwZW5kOnFhfSksZnVuY3Rpb24gcnIodCl7ZnVuY3Rpb24gaShuLHMpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJ0ZXh0Q29udGVudCIse2Vu''@;'; put 'put ''dW1lcmFibGU6cy5lbnVtZXJhYmxlLGNvbmZpZ3VyYWJsZTohMCxnZXQ6cy5nZXQsc2V0OmZ1bmN0aW9uKGQpe2lmKHRoaXMubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSlzLnNldC5jYWxsKHRoaXMsZCk7ZWxzZXt2YXIgbT12b2lkIDA7aWYodGhpcy5maXJzdENoaWxkKXt2YXIgTD10aGlz''@;'; put 'put ''LmNoaWxkTm9kZXMsRj1MLmxlbmd0aDtpZigwPEYmJnIwKHRoaXMpKXttPUFycmF5KEYpO2Zvcih2YXIgRz0wO0c8RjtHKyspbVtHXT1MW0ddfX1pZihzLnNldC5jYWxsKHRoaXMsZCksbSlmb3IoZD0wO2Q8bS5sZW5ndGg7ZCsrKVMwKHQsbVtkXSl9fX0pfU5vZGUucHJvdG90eXBlLmluc2Vy''@;'; put 'put ''dEJlZm9yZT1mdW5jdGlvbihuLHMpe2lmKG4gaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50KXt2YXIgZD1tZShuKTtpZihuPXRpLmNhbGwodGhpcyxuLHMpLHIwKHRoaXMpKWZvcihzPTA7czxkLmxlbmd0aDtzKyspRzAodCxkW3NdKTtyZXR1cm4gbn1yZXR1cm4gZD1uIGluc3RhbmNlb2Yg''@;'; put 'put ''RWxlbWVudCYmcjAobikscz10aS5jYWxsKHRoaXMsbixzKSxkJiZTMCh0LG4pLHIwKHRoaXMpJiZHMCh0LG4pLHN9LE5vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkPWZ1bmN0aW9uKG4pe2lmKG4gaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50KXt2YXIgcz1tZShuKTtpZihuPWd0LmNhbGwo''@;'; put 'put ''dGhpcyxuKSxyMCh0aGlzKSlmb3IodmFyIGQ9MDtkPHMubGVuZ3RoO2QrKylHMCh0LHNbZF0pO3JldHVybiBufXJldHVybiBzPW4gaW5zdGFuY2VvZiBFbGVtZW50JiZyMChuKSxkPWd0LmNhbGwodGhpcyxuKSxzJiZTMCh0LG4pLHIwKHRoaXMpJiZHMCh0LG4pLGR9LE5vZGUucHJvdG90eXBl''@;'; put 'put ''LmNsb25lTm9kZT1mdW5jdGlvbihuKXtyZXR1cm4gbj1KbC5jYWxsKHRoaXMsISFuKSx0aGlzLm93bmVyRG9jdW1lbnQuX19DRV9yZWdpc3RyeT9ZMCh0LG4pOnllKHQsbiksbn0sTm9kZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24obil7dmFyIHM9biBpbnN0YW5jZW9mIEVsZW1l''@;'; put 'put ''bnQmJnIwKG4pLGQ9QWUuY2FsbCh0aGlzLG4pO3JldHVybiBzJiZTMCh0LG4pLGR9LE5vZGUucHJvdG90eXBlLnJlcGxhY2VDaGlsZD1mdW5jdGlvbihuLHMpe2lmKG4gaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50KXt2YXIgZD1tZShuKTtpZihuPWVpLmNhbGwodGhpcyxuLHMpLHIwKHRo''@;'; put 'put ''aXMpKWZvcihTMCh0LHMpLHM9MDtzPGQubGVuZ3RoO3MrKylHMCh0LGRbc10pO3JldHVybiBufWQ9biBpbnN0YW5jZW9mIEVsZW1lbnQmJnIwKG4pO3ZhciBtPWVpLmNhbGwodGhpcyxuLHMpLEw9cjAodGhpcyk7cmV0dXJuIEwmJlMwKHQscyksZCYmUzAodCxuKSxMJiZHMCh0LG4pLG19LHZl''@;'; put 'put ''JiZ2ZS5nZXQ/aShOb2RlLnByb3RvdHlwZSx2ZSk6ZnVuY3Rpb24gSmEodCxpKXt0Llc9ITAsdC5jYS5wdXNoKGkpfSh0LGZ1bmN0aW9uKG4pe2kobix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciBzPVtdLGQ9dGhpcy5maXJzdENoaWxkO2Q7''@;'; put 'put ''ZD1kLm5leHRTaWJsaW5nKWQubm9kZVR5cGUhPT1Ob2RlLkNPTU1FTlRfTk9ERSYmcy5wdXNoKGQudGV4dENvbnRlbnQpO3JldHVybiBzLmpvaW4oIiIpfSxzZXQ6ZnVuY3Rpb24ocyl7Zm9yKDt0aGlzLmZpcnN0Q2hpbGQ7KUFlLmNhbGwodGhpcyx0aGlzLmZpcnN0Q2hpbGQpO251bGwhPXMm''@;'; put 'put ''JiIiIT09cyYmZ3QuY2FsbCh0aGlzLGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHMpKX19KX0pfSh0KSxmdW5jdGlvbiBpcih0KXtmdW5jdGlvbiBpKGQsbSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsImlubmVySFRNTCIse2VudW1lcmFibGU6bS5lbnVtZXJhYmxlLGNvbmZpZ3VyYWJsZToh''@;'; put 'put ''MCxnZXQ6bS5nZXQsc2V0OmZ1bmN0aW9uKEwpe3ZhciBGPXRoaXMsRz12b2lkIDA7aWYocjAodGhpcykmJihHPVtdLFUyKHQsdGhpcyxmdW5jdGlvbihIMSl7SDEhPT1GJiZHLnB1c2goSDEpfSkpLG0uc2V0LmNhbGwodGhpcyxMKSxHKWZvcih2YXIgVT0wO1U8Ry5sZW5ndGg7VSsrKXt2YXIg''@;'; put 'put ''Sz1HW1VdOzE9PT1LLl9fQ0Vfc3RhdGUmJnQuZGlzY29ubmVjdGVkQ2FsbGJhY2soSyl9cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5fX0NFX3JlZ2lzdHJ5P1kwKHQsdGhpcyk6eWUodCx0aGlzKSxMfX0pfWZ1bmN0aW9uIG4oZCxtKXtkLmluc2VydEFkamFjZW50RWxlbWVudD1mdW5jdGlv''@;'; put 'put ''bihMLEYpe3ZhciBHPXIwKEYpO3JldHVybiBMPW0uY2FsbCh0aGlzLEwsRiksRyYmUzAodCxGKSxyMChMKSYmRzAodCxGKSxMfX1mdW5jdGlvbiBzKGQsbSl7ZnVuY3Rpb24gTChGLEcpe2Zvcih2YXIgVT1bXTtGIT09RztGPUYubmV4dFNpYmxpbmcpVS5wdXNoKEYpO2ZvcihHPTA7RzxVLmxl''@;'; put 'put ''bmd0aDtHKyspWTAodCxVW0ddKX1kLmluc2VydEFkamFjZW50SFRNTD1mdW5jdGlvbihGLEcpe2lmKCJiZWZvcmViZWdpbiI9PT0oRj1GLnRvTG93ZXJDYXNlKCkpKXt2YXIgVT10aGlzLnByZXZpb3VzU2libGluZzttLmNhbGwodGhpcyxGLEcpLEwoVXx8dGhpcy5wYXJlbnROb2RlLmZpcnN0''@;'; put 'put ''Q2hpbGQsdGhpcyl9ZWxzZSBpZigiYWZ0ZXJiZWdpbiI9PT1GKVU9dGhpcy5maXJzdENoaWxkLG0uY2FsbCh0aGlzLEYsRyksTCh0aGlzLmZpcnN0Q2hpbGQsVSk7ZWxzZSBpZigiYmVmb3JlZW5kIj09PUYpVT10aGlzLmxhc3RDaGlsZCxtLmNhbGwodGhpcyxGLEcpLEwoVXx8dGhpcy5maXJz''@;'; put 'put ''dENoaWxkLG51bGwpO2Vsc2V7aWYoImFmdGVyZW5kIiE9PUYpdGhyb3cgbmV3IFN5bnRheEVycm9yKCJUaGUgdmFsdWUgcHJvdmlkZWQgKCIrU3RyaW5nKEYpKyIpIGlzIG5vdCBvbmUgb2YgJ2JlZm9yZWJlZ2luJywgJ2FmdGVyYmVnaW4nLCAnYmVmb3JlZW5kJywgb3IgJ2FmdGVyZW5kJy4i''@;'; put 'put ''KTtVPXRoaXMubmV4dFNpYmxpbmcsbS5jYWxsKHRoaXMsRixHKSxMKHRoaXMubmV4dFNpYmxpbmcsVSl9fX1saSYmKEVsZW1lbnQucHJvdG90eXBlLmF0dGFjaFNoYWRvdz1mdW5jdGlvbihkKXtpZihkPWxpLmNhbGwodGhpcyxkKSx0LlcmJiFkLl9fQ0VfcGF0Y2hlZCl7ZC5fX0NFX3BhdGNo''@;'; put 'put ''ZWQ9ITA7Zm9yKHZhciBtPTA7bTx0LmNhLmxlbmd0aDttKyspdC5jYVttXShkKX1yZXR1cm4gdGhpcy5fX0NFX3NoYWRvd1Jvb3Q9ZH0pLEhlJiZIZS5nZXQ/aShFbGVtZW50LnByb3RvdHlwZSxIZSk6VmUmJlZlLmdldD9pKEhUTUxFbGVtZW50LnByb3RvdHlwZSxWZSk6ZnVuY3Rpb24gdHIo''@;'; put 'put ''dCxpKXt0Llc9ITAsdC5nLnB1c2goaSl9KHQsZnVuY3Rpb24oZCl7aShkLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSmwuY2FsbCh0aGlzLCEwKS5pbm5lckhUTUx9LHNldDpmdW5jdGlvbihtKXt2YXIgTD0idGVtcGxhdGUiPT09dGhpcy5s''@;'; put 'put ''b2NhbE5hbWUsRj1MP3RoaXMuY29udGVudDp0aGlzLEc9Z2UuY2FsbChkb2N1bWVudCx0aGlzLm5hbWVzcGFjZVVSSSx0aGlzLmxvY2FsTmFtZSk7Zm9yKEcuaW5uZXJIVE1MPW07MDxGLmNoaWxkTm9kZXMubGVuZ3RoOylBZS5jYWxsKEYsRi5jaGlsZE5vZGVzWzBdKTtmb3IobT1MP0cuY29u''@;'; put 'put ''dGVudDpHOzA8bS5jaGlsZE5vZGVzLmxlbmd0aDspZ3QuY2FsbChGLG0uY2hpbGROb2Rlc1swXSl9fSl9KSxFbGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGU9ZnVuY3Rpb24oZCxtKXtpZigxIT09dGhpcy5fX0NFX3N0YXRlKXJldHVybiBpaS5jYWxsKHRoaXMsZCxtKTt2YXIgTD1DZS5j''@;'; put 'put ''YWxsKHRoaXMsZCk7aWkuY2FsbCh0aGlzLGQsbSksbT1DZS5jYWxsKHRoaXMsZCksdC5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodGhpcyxkLEwsbSxudWxsKX0sRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24oZCxtLEwpe2lmKDEhPT10aGlzLl9fQ0Vfc3RhdGUp''@;'; put 'put ''cmV0dXJuIHJpLmNhbGwodGhpcyxkLG0sTCk7dmFyIEY9QXQuY2FsbCh0aGlzLGQsbSk7cmkuY2FsbCh0aGlzLGQsbSxMKSxMPUF0LmNhbGwodGhpcyxkLG0pLHQuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHRoaXMsbSxGLEwsZCl9LEVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0''@;'; put 'put ''ZT1mdW5jdGlvbihkKXtpZigxIT09dGhpcy5fX0NFX3N0YXRlKXJldHVybiBhaS5jYWxsKHRoaXMsZCk7dmFyIG09Q2UuY2FsbCh0aGlzLGQpO2FpLmNhbGwodGhpcyxkKSxudWxsIT09bSYmdC5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodGhpcyxkLG0sbnVsbCxudWxsKX0sRWxlbWVudC5w''@;'; put 'put ''cm90b3R5cGUucmVtb3ZlQXR0cmlidXRlTlM9ZnVuY3Rpb24oZCxtKXtpZigxIT09dGhpcy5fX0NFX3N0YXRlKXJldHVybiBuaS5jYWxsKHRoaXMsZCxtKTt2YXIgTD1BdC5jYWxsKHRoaXMsZCxtKTtuaS5jYWxsKHRoaXMsZCxtKTt2YXIgRj1BdC5jYWxsKHRoaXMsZCxtKTtMIT09RiYmdC5h''@;'; put 'put ''dHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodGhpcyxtLEwsRixkKX0scGk/bihIVE1MRWxlbWVudC5wcm90b3R5cGUscGkpOmNpJiZuKEVsZW1lbnQucHJvdG90eXBlLGNpKSxmaT9zKEhUTUxFbGVtZW50LnByb3RvdHlwZSxmaSk6b2kmJnMoRWxlbWVudC5wcm90b3R5cGUsb2kpLExlKHQsRWxl''@;'; put 'put ''bWVudC5wcm90b3R5cGUse3ByZXBlbmQ6WWEsYXBwZW5kOkthfSksZnVuY3Rpb24gbHIodCl7ZnVuY3Rpb24gaShzKXtyZXR1cm4gZnVuY3Rpb24oZCl7Zm9yKHZhciBtPVtdLEw9MDtMPGFyZ3VtZW50cy5sZW5ndGg7KytMKW1bTF09YXJndW1lbnRzW0xdO0w9W107Zm9yKHZhciBGPVtdLEc9''@;'; put 'put ''MDtHPG0ubGVuZ3RoO0crKyl7dmFyIFU9bVtHXTtpZihVIGluc3RhbmNlb2YgRWxlbWVudCYmcjAoVSkmJkYucHVzaChVKSxVIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudClmb3IoVT1VLmZpcnN0Q2hpbGQ7VTtVPVUubmV4dFNpYmxpbmcpTC5wdXNoKFUpO2Vsc2UgTC5wdXNoKFUpfWZv''@;'; put 'put ''cihzLmFwcGx5KHRoaXMsbSksbT0wO208Ri5sZW5ndGg7bSsrKVMwKHQsRlttXSk7aWYocjAodGhpcykpZm9yKG09MDttPEwubGVuZ3RoO20rKykoRj1MW21dKWluc3RhbmNlb2YgRWxlbWVudCYmRzAodCxGKX19dmFyIG49RWxlbWVudC5wcm90b3R5cGU7dm9pZCAwIT09c2kmJihuLmJlZm9y''@;'; put 'put ''ZT1pKHNpKSksdm9pZCAwIT09aGkmJihuLmFmdGVyPWkoaGkpKSx2b2lkIDAhPT1kaSYmKG4ucmVwbGFjZVdpdGg9ZnVuY3Rpb24ocyl7Zm9yKHZhciBkPVtdLG09MDttPGFyZ3VtZW50cy5sZW5ndGg7KyttKWRbbV09YXJndW1lbnRzW21dO209W107Zm9yKHZhciBMPVtdLEY9MDtGPGQubGVu''@;'; put 'put ''Z3RoO0YrKyl7dmFyIEc9ZFtGXTtpZihHIGluc3RhbmNlb2YgRWxlbWVudCYmcjAoRykmJkwucHVzaChHKSxHIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudClmb3IoRz1HLmZpcnN0Q2hpbGQ7RztHPUcubmV4dFNpYmxpbmcpbS5wdXNoKEcpO2Vsc2UgbS5wdXNoKEcpfWZvcihGPXIwKHRo''@;'; put 'put ''aXMpLGRpLmFwcGx5KHRoaXMsZCksZD0wO2Q8TC5sZW5ndGg7ZCsrKVMwKHQsTFtkXSk7aWYoRilmb3IoUzAodCx0aGlzKSxkPTA7ZDxtLmxlbmd0aDtkKyspKEw9bVtkXSlpbnN0YW5jZW9mIEVsZW1lbnQmJkcwKHQsTCl9KSx2b2lkIDAhPT11aSYmKG4ucmVtb3ZlPWZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IHM9cjAodGhpcyk7dWkuY2FsbCh0aGlzKSxzJiZTMCh0LHRoaXMpfSl9KHQpfSh0KSx0PW5ldyB2MCh0KSxkb2N1bWVudC5fX0NFX3JlZ2lzdHJ5PXQsT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywiY3VzdG9tRWxlbWVudHMiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2''@;'; put 'put ''YWx1ZTp0fSl9ZnVuY3Rpb24gU2UoKXt0aGlzLmVuZD10aGlzLnN0YXJ0PTAsdGhpcy5ydWxlcz10aGlzLnBhcmVudD10aGlzLnByZXZpb3VzPW51bGwsdGhpcy5jc3NUZXh0PXRoaXMucGFyc2VkQ3NzVGV4dD0iIix0aGlzLmF0UnVsZT0hMSx0aGlzLnR5cGU9MCx0aGlzLnBhcnNlZFNlbGVj''@;'; put 'put ''dG9yPXRoaXMuc2VsZWN0b3I9dGhpcy5rZXlmcmFtZXNOYW1lPSIifWZ1bmN0aW9uIGJlKHQpe3ZhciBpPXQ9dC5yZXBsYWNlKGNyLCIiKS5yZXBsYWNlKG9yLCIiKSxuPW5ldyBTZTtuLnN0YXJ0PTAsbi5lbmQ9aS5sZW5ndGg7Zm9yKHZhciBzPW4sZD0wLG09aS5sZW5ndGg7ZDxtO2QrKylp''@;'; put 'put ''ZigieyI9PT1pW2RdKXtzLnJ1bGVzfHwocy5ydWxlcz1bXSk7dmFyIEw9cyxGPUwucnVsZXNbTC5ydWxlcy5sZW5ndGgtMV18fG51bGw7KHM9bmV3IFNlKS5zdGFydD1kKzEscy5wYXJlbnQ9TCxzLnByZXZpb3VzPUYsTC5ydWxlcy5wdXNoKHMpfWVsc2UifSI9PT1pW2RdJiYocy5lbmQ9ZCsx''@;'; put 'put ''LHM9cy5wYXJlbnR8fG4pO3JldHVybiBTaShuLHQpfWZ1bmN0aW9uIFNpKHQsaSl7dmFyIG49aS5zdWJzdHJpbmcodC5zdGFydCx0LmVuZC0xKTtpZih0LnBhcnNlZENzc1RleHQ9dC5jc3NUZXh0PW4udHJpbSgpLHQucGFyZW50JiYobj1mdW5jdGlvbiBucih0KXtyZXR1cm4gdC5yZXBsYWNl''@;'; put 'put ''KC9cXChbMC05YS1mXXsxLDZ9KVxzL2dpLGZ1bmN0aW9uKGksbil7Zm9yKG49Ni0oaT1uKS5sZW5ndGg7bi0tOylpPSIwIitpO3JldHVybiJcXCIraX0pfShuPWkuc3Vic3RyaW5nKHQucHJldmlvdXM/dC5wcmV2aW91cy5lbmQ6dC5wYXJlbnQuc3RhcnQsdC5zdGFydC0xKSksbj0obj1uLnJl''@;'; put 'put ''cGxhY2UoVGksIiAiKSkuc3Vic3RyaW5nKG4ubGFzdEluZGV4T2YoIjsiKSsxKSxuPXQucGFyc2VkU2VsZWN0b3I9dC5zZWxlY3Rvcj1uLnRyaW0oKSx0LmF0UnVsZT0wPT09bi5pbmRleE9mKCJAIiksdC5hdFJ1bGU/MD09PW4uaW5kZXhPZigiQG1lZGlhIik/dC50eXBlPXdpOm4ubWF0Y2go''@;'; put 'put ''ZHIpJiYodC50eXBlPV9lLHQua2V5ZnJhbWVzTmFtZT10LnNlbGVjdG9yLnNwbGl0KFRpKS5wb3AoKSk6dC50eXBlPTA9PT1uLmluZGV4T2YoIi0tIik/eGk6X2kpLG49dC5ydWxlcylmb3IodmFyIHM9MCxkPW4ubGVuZ3RoLG09dm9pZCAwO3M8ZCYmKG09bltzXSk7cysrKVNpKG0saSk7cmV0''@;'; put 'put ''dXJuIHR9ZnVuY3Rpb24gYmkodCxpLG4pe249dm9pZCAwPT09bj8iIjpuO3ZhciBzPSIiO2lmKHQuY3NzVGV4dHx8dC5ydWxlcyl7dmFyIG0sZD10LnJ1bGVzO2lmKChtPWQpJiYobT0hKChtPWRbMF0pJiZtLnNlbGVjdG9yJiYwPT09bS5zZWxlY3Rvci5pbmRleE9mKCItLSIpKSksbSl7bT0w''@;'; put 'put ''O2Zvcih2YXIgTD1kLmxlbmd0aCxGPXZvaWQgMDttPEwmJihGPWRbbV0pO20rKylzPWJpKEYsaSxzKX1lbHNlKHM9KGk9aT90LmNzc1RleHQ6KGk9KGk9dC5jc3NUZXh0KS5yZXBsYWNlKERpLCIiKS5yZXBsYWNlKEVpLCIiKSkucmVwbGFjZShzciwiIikucmVwbGFjZShociwiIikpLnRyaW0o''@;'; put 'put ''KSkmJihzPSIgICIrcysiXG4iKX1yZXR1cm4gcyYmKHQuc2VsZWN0b3ImJihuKz10LnNlbGVjdG9yKyIge1xuIiksbis9cyx0LnNlbGVjdG9yJiYobis9In1cblxuIikpLG59ajAmJiFqMC5mb3JjZVBvbHlmaWxsJiYiZnVuY3Rpb24iPT10eXBlb2YgajAuZGVmaW5lJiYiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgajAuZ2V0fHxMaSgpLHdpbmRvdy5fX0NFX2luc3RhbGxQb2x5ZmlsbD1MaTt2YXIgd2UsVnQsX2k9MSxfZT03LHdpPTQseGk9MWUzLGNyPS9cL1wqW14qXSpcKisoW14vKl1bXipdKlwqKykqXC8vZ2ltLG9yPS9AaW1wb3J0W147XSo7L2dpbSxEaT0vKD86XlteO1wtXHN9XSspPy0t''@;'; put 'put ''W147e31dKj86W157fTtdKj8oPzpbO1xuXXwkKS9naW0sRWk9Lyg/Ol5bXjtcLVxzfV0rKT8tLVteO3t9XSo/Oltee307XSo/e1tefV0qP30oPzpbO1xuXXwkKT8vZ2ltLHNyPS9AYXBwbHlccypcKD9bXik7XSpcKT9ccyooPzpbO1xuXXwkKT8vZ2ltLGhyPS9bXjs6XSo/OlteO10qP3Zhclwo''@;'; put 'put ''W147XSpcKSg/Ols7XG5dfCQpPy9naW0sZHI9L15AW15cc10qa2V5ZnJhbWVzLyxUaT0vXHMrL2csaDA9ISh3aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5pblVzZSk7ZnVuY3Rpb24gTmkodCl7d2U9KCF0fHwhdC5zaGltY3NzcHJvcGVydGllcykmJihoMHx8IShuYXZpZ2F0b3Iu''@;'; put 'put ''dXNlckFnZW50Lm1hdGNoKC9BcHBsZVdlYktpdFwvNjAxfEVkZ2VcLzE1Lyl8fCF3aW5kb3cuQ1NTfHwhQ1NTLnN1cHBvcnRzfHwhQ1NTLnN1cHBvcnRzKCJib3gtc2hhZG93IiwiMCAwIDAgdmFyKC0tZm9vKSIpKSl9d2luZG93LlNoYWR5Q1NTJiZ2b2lkIDAhPT13aW5kb3cuU2hhZHlDU1Mu''@;'; put 'put ''Y3NzQnVpbGQmJihWdD13aW5kb3cuU2hhZHlDU1MuY3NzQnVpbGQpO3ZhciBMMj0hKCF3aW5kb3cuU2hhZHlDU1N8fCF3aW5kb3cuU2hhZHlDU1MuZGlzYWJsZVJ1bnRpbWUpO3dpbmRvdy5TaGFkeUNTUyYmdm9pZCAwIT09d2luZG93LlNoYWR5Q1NTLm5hdGl2ZUNzcz93ZT13aW5kb3cuU2hh''@;'; put 'put ''ZHlDU1MubmF0aXZlQ3NzOndpbmRvdy5TaGFkeUNTUz8oTmkod2luZG93LlNoYWR5Q1NTKSx3aW5kb3cuU2hhZHlDU1M9dm9pZCAwKTpOaSh3aW5kb3cuV2ViQ29tcG9uZW50cyYmd2luZG93LldlYkNvbXBvbmVudHMuZmxhZ3MpO3ZhciBDMD13ZSxtdD0vKD86XnxbO1xze11ccyopKC0tW1x3''@;'; put 'put ''LV0qPylccyo6XHMqKD86KCg/OicoPzpcXCd8LikqPyd8Iig/OlxcInwuKSo/InxcKFteKV0qP1wpfFtefTt7XSkrKXxceyhbXn1dKilcfSg/Oig/PVs7XHN9XSl8JCkpL2dpLE10PS8oPzpefFxXKylAYXBwbHlccypcKD8oW14pO1xuXSopXCk/L2dpLHVyPS8oLS1bXHctXSspXHMqKFs6LDsp''@;'; put 'put ''XXwkKS9naSxwcj0vKGFuaW1hdGlvblxzKjopfChhbmltYXRpb24tbmFtZVxzKjopLyxmcj0vQG1lZGlhXHMoLiopLyxncj0vXHtbXn1dKlx9L2csRmk9bmV3IFNldDtmdW5jdGlvbiBTMih0LGkpe3JldHVybiB0Pygic3RyaW5nIj09dHlwZW9mIHQmJih0PWJlKHQpKSxpJiZiMih0LGkpLGJp''@;'; put 'put ''KHQsQzApKToiIn1mdW5jdGlvbiBXMih0KXtyZXR1cm4hdC5fX2Nzc1J1bGVzJiZ0LnRleHRDb250ZW50JiYodC5fX2Nzc1J1bGVzPWJlKHQudGV4dENvbnRlbnQpKSx0Ll9fY3NzUnVsZXN8fG51bGx9ZnVuY3Rpb24gSWkodCl7cmV0dXJuISF0LnBhcmVudCYmdC5wYXJlbnQudHlwZT09PV9l''@;'; put 'put ''fWZ1bmN0aW9uIGIyKHQsaSxuLHMpe2lmKHQpe3ZhciBkPSExLG09dC50eXBlO2lmKHMmJm09PT13aSl7dmFyIEw9dC5zZWxlY3Rvci5tYXRjaChmcik7TCYmKHdpbmRvdy5tYXRjaE1lZGlhKExbMV0pLm1hdGNoZXN8fChkPSEwKSl9aWYobT09PV9pP2kodCk6biYmbT09PV9lP24odCk6bT09''@;'; put 'put ''PXhpJiYoZD0hMCksKHQ9dC5ydWxlcykmJiFkKWZvcihkPTAsbT10Lmxlbmd0aCxMPXZvaWQgMDtkPG0mJihMPXRbZF0pO2QrKyliMihMLGksbixzKX19ZnVuY3Rpb24geGUodCxpLG4scyl7dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtyZXR1cm4gaSYmZC5zZXRBdHRy''@;'; put 'put ''aWJ1dGUoInNjb3BlIixpKSxkLnRleHRDb250ZW50PXQsT2koZCxuLHMpLGR9dmFyIG8yPW51bGw7ZnVuY3Rpb24ga2kodCl7dD1kb2N1bWVudC5jcmVhdGVDb21tZW50KCIgU2hhZHkgRE9NIHN0eWxlcyBmb3IgIit0KyIgIik7dmFyIGk9ZG9jdW1lbnQuaGVhZDtyZXR1cm4gaS5pbnNlcnRC''@;'; put 'put ''ZWZvcmUodCwobzI/bzIubmV4dFNpYmxpbmc6bnVsbCl8fGkuZmlyc3RDaGlsZCksbzI9dH1mdW5jdGlvbiBPaSh0LGksbil7KGk9aXx8ZG9jdW1lbnQuaGVhZCkuaW5zZXJ0QmVmb3JlKHQsbiYmbi5uZXh0U2libGluZ3x8aS5maXJzdENoaWxkKSxvMj90LmNvbXBhcmVEb2N1bWVudFBvc2l0''@;'; put 'put ''aW9uKG8yKT09PU5vZGUuRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HJiYobzI9dCk6bzI9dH1mdW5jdGlvbiBEZSh0LGkpe2Zvcih2YXIgbj0wLHM9dC5sZW5ndGg7aTxzO2krKylpZigiKCI9PT10W2ldKW4rKztlbHNlIGlmKCIpIj09PXRbaV0mJjA9PS0tbilyZXR1cm4gaTtyZXR1cm4t''@;'; put 'put ''MX1mdW5jdGlvbiBQaSh0LGkpe3ZhciBuPXQuaW5kZXhPZigidmFyKCIpO2lmKC0xPT09bilyZXR1cm4gaSh0LCIiLCIiLCIiKTt2YXIgcz1EZSh0LG4rMyksZD10LnN1YnN0cmluZyhuKzQscyk7cmV0dXJuIG49dC5zdWJzdHJpbmcoMCxuKSx0PVBpKHQuc3Vic3RyaW5nKHMrMSksaSksLTE9''@;'; put 'put ''PT0ocz1kLmluZGV4T2YoIiwiKSk/aShuLGQudHJpbSgpLCIiLHQpOmkobixkLnN1YnN0cmluZygwLHMpLnRyaW0oKSxkLnN1YnN0cmluZyhzKzEpLnRyaW0oKSx0KX1mdW5jdGlvbiBadCh0LGkpe2gwP3Quc2V0QXR0cmlidXRlKCJjbGFzcyIsaSk6d2luZG93LlNoYWR5RE9NLm5hdGl2ZU1l''@;'; put 'put ''dGhvZHMuc2V0QXR0cmlidXRlLmNhbGwodCwiY2xhc3MiLGkpfXZhciAkMj13aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS53cmFwfHxmdW5jdGlvbih0KXtyZXR1cm4gdH07ZnVuY3Rpb24gczIodCl7dmFyIGk9dC5sb2NhbE5hbWUsbj0iIjtyZXR1cm4gaT8tMTxpLmluZGV4T2Yo''@;'; put 'put ''Ii0iKXx8KG49aSxpPXQuZ2V0QXR0cmlidXRlJiZ0LmdldEF0dHJpYnV0ZSgiaXMiKXx8IiIpOihpPXQuaXMsbj10LmV4dGVuZHMpLHtpczppLGhhOm59fWZ1bmN0aW9uIEJpKHQpe2Zvcih2YXIgaT1bXSxuPSIiLHM9MDswPD1zJiZzPHQubGVuZ3RoO3MrKylpZigiKCI9PT10W3NdKXt2YXIg''@;'; put 'put ''ZD1EZSh0LHMpO24rPXQuc2xpY2UocyxkKzEpLHM9ZH1lbHNlIiwiPT09dFtzXT8oaS5wdXNoKG4pLG49IiIpOm4rPXRbc107cmV0dXJuIG4mJmkucHVzaChuKSxpfWZ1bmN0aW9uIF8yKHQpe2lmKHZvaWQgMCE9PVZ0KXJldHVybiBWdDtpZih2b2lkIDA9PT10Ll9fY3NzQnVpbGQpe3ZhciBp''@;'; put 'put ''PXQuZ2V0QXR0cmlidXRlKCJjc3MtYnVpbGQiKTtpZihpKXQuX19jc3NCdWlsZD1pO2Vsc2V7aWYoIiIhPT0oaT0oaT0idGVtcGxhdGUiPT09dC5sb2NhbE5hbWU/dC5jb250ZW50LmZpcnN0Q2hpbGQ6dC5maXJzdENoaWxkKWluc3RhbmNlb2YgQ29tbWVudCYmImNzcy1idWlsZCI9PT0oaT1p''@;'; put 'put ''LnRleHRDb250ZW50LnRyaW0oKS5zcGxpdCgiOiIpKVswXT9pWzFdOiIiKSl7dmFyIG49InRlbXBsYXRlIj09PXQubG9jYWxOYW1lP3QuY29udGVudC5maXJzdENoaWxkOnQuZmlyc3RDaGlsZDtuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobil9dC5fX2Nzc0J1aWxkPWl9fXJldHVybiB0Ll9f''@;'; put 'put ''Y3NzQnVpbGR8fCIifWZ1bmN0aW9uIEVlKHQpe3JldHVybiEoIiI9PT0odD12b2lkIDA9PT10PyIiOnQpfHwhQzApJiYoaDA/InNoYWRvdyI9PT10OiJzaGFkeSI9PT10KX1mdW5jdGlvbiB5dCgpe31mdW5jdGlvbiBMdCh0LGksbil7dmFyIHM7aWYoaS5ub2RlVHlwZT09PU5vZGUuRUxFTUVO''@;'; put 'put ''VF9OT0RFJiZuKGkpLHM9InRlbXBsYXRlIj09PWkubG9jYWxOYW1lPyhpLmNvbnRlbnR8fGkuX2NvbnRlbnR8fGkpLmNoaWxkTm9kZXM6aS5jaGlsZHJlbnx8aS5jaGlsZE5vZGVzKWZvcihpPTA7aTxzLmxlbmd0aDtpKyspTHQodCxzW2ldLG4pfWZ1bmN0aW9uIGgyKHQsaSxuKXtpZihpKWlm''@;'; put 'put ''KHQuY2xhc3NMaXN0KW4/KHQuY2xhc3NMaXN0LnJlbW92ZSgic3R5bGUtc2NvcGUiKSx0LmNsYXNzTGlzdC5yZW1vdmUoaSkpOih0LmNsYXNzTGlzdC5hZGQoInN0eWxlLXNjb3BlIiksdC5jbGFzc0xpc3QuYWRkKGkpKTtlbHNlIGlmKHQuZ2V0QXR0cmlidXRlKXt2YXIgcz10LmdldEF0dHJp''@;'; put 'put ''YnV0ZSgiY2xhc3MiKTtuP3MmJlp0KHQsaT1zLnJlcGxhY2UoInN0eWxlLXNjb3BlIiwiIikucmVwbGFjZShpLCIiKSk6WnQodCwocz9zKyIgIjoiIikrInN0eWxlLXNjb3BlICIraSl9fWZ1bmN0aW9uIHZyKHQsaSxuKXtMdChUMCx0LGZ1bmN0aW9uKHMpe2gyKHMsaSwhMCksaDIocyxuKX0p''@;'; put 'put ''fWZ1bmN0aW9uIEhyKHQsaSl7THQoVDAsdCxmdW5jdGlvbihuKXtoMihuLGl8fCIiLCEwKX0pfWZ1bmN0aW9uIFN0KHQsaSxuLHMsZCl7dmFyIG09VDA7cmV0dXJuIiI9PT0oZD12b2lkIDA9PT1kPyIiOmQpJiYoZD1oMHx8InNoYWR5Ij09PSh2b2lkIDA9PT1zPyIiOnMpP1MyKGksbik6ZnVu''@;'; put 'put ''Y3Rpb24gQ3IodCxpLG4scyxkKXt2YXIgbT1UZShuLHMpO3JldHVybiBuPW4/Ii4iK246IiIsUzIoaSxmdW5jdGlvbihMKXtMLml8fChMLnNlbGVjdG9yPUwuRj1OZSh0LEwsdC5oLG4sbSksTC5pPSEwKSxkJiZkKEwsbixtKX0pfShtLGksKHQ9czIodCkpLmlzLHQuaGEsbikrIlxuXG4iKSxk''@;'; put 'put ''LnRyaW0oKX1mdW5jdGlvbiBUZSh0LGkpe3JldHVybiBpPyJbaXM9Iit0KyJdIjp0fWZ1bmN0aW9uIE5lKHQsaSxuLHMsZCl7dmFyIG09QmkoaS5zZWxlY3Rvcik7aWYoIUlpKGkpKXtpPTA7Zm9yKHZhciBMPW0ubGVuZ3RoLEY9dm9pZCAwO2k8TCYmKEY9bVtpXSk7aSsrKW1baV09bi5jYWxs''@;'; put 'put ''KHQsRixzLGQpfXJldHVybiBtLmZpbHRlcihmdW5jdGlvbihHKXtyZXR1cm4hIUd9KS5qb2luKCIsIil9ZnVuY3Rpb24gR2kodCl7cmV0dXJuIHQucmVwbGFjZShGZSxmdW5jdGlvbihpLG4scyl7cmV0dXJuLTE8cy5pbmRleE9mKCIrIik/cz1zLnJlcGxhY2UoL1wrL2csIl9fXyIpOi0xPHMu''@;'; put 'put ''aW5kZXhPZigiX19fIikmJihzPXMucmVwbGFjZSgvX19fL2csIisiKSksIjoiK24rIigiK3MrIikifSl9ZnVuY3Rpb24gamkodCxpKXt0PXQuc3BsaXQoLyhcWy4rP1xdKS8pO2Zvcih2YXIgbj1bXSxzPTA7czx0Lmxlbmd0aDtzKyspaWYocyUyPT0xKW4ucHVzaCh0W3NdKTtlbHNle3ZhciBk''@;'; put 'put ''PXRbc107KCIiIT09ZHx8cyE9PXQubGVuZ3RoLTEpJiYoKGQ9ZC5zcGxpdCgiOiIpKVswXSs9aSxuLnB1c2goZC5qb2luKCI6IikpKX1yZXR1cm4gbi5qb2luKCIiKX1mdW5jdGlvbiBSaSh0KXsiOnJvb3QiPT09dC5zZWxlY3RvciYmKHQuc2VsZWN0b3I9Imh0bWwiKX15dC5wcm90b3R5cGUu''@;'; put 'put ''aD1mdW5jdGlvbih0LGksbil7dmFyIHM9ITE7dD10LnRyaW0oKTt2YXIgZD1GZS50ZXN0KHQpO2QmJih0PUdpKHQ9dC5yZXBsYWNlKEZlLGZ1bmN0aW9uKEYsRyxVKXtyZXR1cm4iOiIrRysiKCIrVS5yZXBsYWNlKC9ccy9nLCIiKSsiKSJ9KSkpO3ZhciBtPVdpLnRlc3QodCk7aWYobSl7dmFy''@;'; put 'put ''IEw9ZnVuY3Rpb24gVnIodCl7Zm9yKHZhciBuLGk9W107bj10Lm1hdGNoKFdpKTspe3ZhciBzPW4uaW5kZXgsZD1EZSh0LHMpO2lmKC0xPT09ZCl0aHJvdyBFcnJvcihuLmlucHV0KyIgc2VsZWN0b3IgbWlzc2luZyAnKSciKTtuPXQuc2xpY2UocyxkKzEpLHQ9dC5yZXBsYWNlKG4sIlx1ZTAw''@;'; put 'put ''MCIpLGkucHVzaChuKX1yZXR1cm57QmE6dCxtYXRjaGVzOml9fSh0KTt0PUwuQmEsTD1MLm1hdGNoZXN9cmV0dXJuIHQ9KHQ9dC5yZXBsYWNlKExyLCI6aG9zdCAkMSIpKS5yZXBsYWNlKHlyLGZ1bmN0aW9uKEYsRyxVKXtyZXR1cm4gc3x8KEY9ZnVuY3Rpb24gTXIodCxpLG4scyl7dmFyIGQ9''@;'; put 'put ''dC5pbmRleE9mKCI6OnNsb3R0ZWQiKTtpZigwPD10LmluZGV4T2YoIjpob3N0Iik/dD1mdW5jdGlvbiBacih0LGkpe3ZhciBuPXQubWF0Y2goVWkpO3JldHVybihuPW4mJm5bMl0udHJpbSgpfHwiIik/blswXS5tYXRjaCh6aSk/dC5yZXBsYWNlKFVpLGZ1bmN0aW9uKHMsZCxtKXtyZXR1cm4g''@;'; put 'put ''aSttfSk6bi5zcGxpdCh6aSlbMF09PT1pP246InNob3VsZF9ub3RfbWF0Y2giOnQucmVwbGFjZSgiOmhvc3QiLGkpfSh0LHMpOjAhPT1kJiYodD1uP2ppKHQsbik6dCksbj0hMSwwPD1kJiYoaT0iIixuPSEwKSxuKXt2YXIgbT0hMDtuJiYodD10LnJlcGxhY2UoU3IsZnVuY3Rpb24oTCxGKXty''@;'; put 'put ''ZXR1cm4iID4gIitGfSkpfXJldHVybnt2YWx1ZTp0LFVhOmksc3RvcDptfX0oVSxHLGksbikscz1zfHxGLnN0b3AsRz1GLlVhLFU9Ri52YWx1ZSksRytVfSksbSYmKHQ9ZnVuY3Rpb24gbXIodCxpKXt2YXIgbj10LnNwbGl0KCJcdWUwMDAiKTtyZXR1cm4gaS5yZWR1Y2UoZnVuY3Rpb24ocyxk''@;'; put 'put ''LG0pe3JldHVybiBzK2QrblttKzFdfSxuWzBdKX0odCxMKSksZCYmKHQ9R2kodCkpLHQucmVwbGFjZShicixmdW5jdGlvbihGLEcsVSxLKXtyZXR1cm4nW2Rpcj0iJytVKyciXSAnK0crSysiLCAiK0crJ1tkaXI9IicrVSsnIl0nK0t9KX0seXQucHJvdG90eXBlLmk9ZnVuY3Rpb24odCl7cmV0''@;'; put 'put ''dXJuIHQubWF0Y2goIjpob3N0Iik/IiI6dC5tYXRjaCgiOjpzbG90dGVkIik/dGhpcy5oKHQsIjpub3QoLnN0eWxlLXNjb3BlKSIpOmppKHQudHJpbSgpLCI6bm90KC5zdHlsZS1zY29wZSkiKX0sZS5PYmplY3QuZGVmaW5lUHJvcGVydGllcyh5dC5wcm90b3R5cGUse2c6e2NvbmZpZ3VyYWJs''@;'; put 'put ''ZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiJzdHlsZS1zY29wZSJ9fX0pO3ZhciBGZT0vOihudGhbLVx3XSspXCgoW14pXSspXCkvLHlyPS8oXnxbXHM+K35dKykoKD86XFsuKz9cXXxbXlxzPit+PVtdKSspL2csemk9L1tbLjojKl0vLExyPS9eKDo6c2xvdHRlZCkv''@;'; put 'put ''LFVpPS8oOmhvc3QpKD86XCgoKD86XChbXikoXSpcKXxbXikoXSopKz8pXCkpLyxTcj0vKD86OjpzbG90dGVkKSg/OlwoKCg/OlwoW14pKF0qXCl8W14pKF0qKSs/KVwpKS8sYnI9LyguKik6ZGlyXCgoPzoobHRyfHJ0bCkpXCkoLiopLyxXaT0vOig/Om1hdGNoZXN8YW55fC0oPzp3ZWJraXR8''@;'; put 'put ''bW96KS1hbnkpLyxUMD1uZXcgeXQ7ZnVuY3Rpb24gdzIodCxpLG4scyxkKXt0aGlzLk09dHx8bnVsbCx0aGlzLmg9aXx8bnVsbCx0aGlzLnphPW58fFtdLHRoaXMuSz1udWxsLHRoaXMuY3NzQnVpbGQ9ZHx8IiIsdGhpcy5oYT1zfHwiIix0aGlzLmc9dGhpcy5MPXRoaXMuUj1udWxsfWZ1bmN0''@;'; put 'put ''aW9uIE4wKHQpe3JldHVybiB0P3QuX19zdHlsZUluZm86bnVsbH1mdW5jdGlvbiBJZSh0LGkpe3JldHVybiB0Ll9fc3R5bGVJbmZvPWl9ZnVuY3Rpb24gJGkodCl7dmFyIGk9dGhpcy5tYXRjaGVzfHx0aGlzLm1hdGNoZXNTZWxlY3Rvcnx8dGhpcy5tb3pNYXRjaGVzU2VsZWN0b3J8fHRoaXMu''@;'; put 'put ''bXNNYXRjaGVzU2VsZWN0b3J8fHRoaXMub01hdGNoZXNTZWxlY3Rvcnx8dGhpcy53ZWJraXRNYXRjaGVzU2VsZWN0b3I7cmV0dXJuIGkmJmkuY2FsbCh0aGlzLHQpfXcyLnByb3RvdHlwZS5fZ2V0U3R5bGVSdWxlcz13Mi5wcm90b3R5cGUuaT1mdW5jdGlvbigpe3JldHVybiB0aGlzLk19O3Zh''@;'; put 'put ''ciBfcj0vOmhvc3Rccyo+XHMqLyx3cj1uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKCJUcmlkZW50Iik7ZnVuY3Rpb24gcWkoKXt9ZnVuY3Rpb24gYnQodCl7aWYoIXQuRCl7dmFyIGk9e30sbj17fTtfdCh0LG4pJiYoaS5QPW4sdC5ydWxlcz1udWxsKSxpLmNzc1RleHQ9dC5wYXJzZWRDc3NU''@;'; put 'put ''ZXh0LnJlcGxhY2UoZ3IsIiIpLnJlcGxhY2UobXQsIiIpLHQuRD1pfX1mdW5jdGlvbiBfdCh0LGkpe3ZhciBuPXQuRDtpZighbil7bj10LnBhcnNlZENzc1RleHQ7Zm9yKHZhciBzO3Q9bXQuZXhlYyhuKTspKCJpbmhlcml0IiE9PShzPSh0WzJdfHx0WzNdKS50cmltKCkpfHwidW5zZXQiIT09''@;'; put 'put ''cykmJihpW3RbMV0udHJpbSgpXT1zKSxzPSEwO3JldHVybiBzfWlmKG4uUClyZXR1cm4gT2JqZWN0LmFzc2lnbihpLG4uUCksITB9ZnVuY3Rpb24gcTIodCxpLG4pe3JldHVybiBpJiYoaT0wPD1pLmluZGV4T2YoIjsiKT9rZSh0LGksbik6UGkoaSxmdW5jdGlvbihzLGQsbSxMKXtyZXR1cm4g''@;'; put 'put ''ZD8oKGQ9cTIodCxuW2RdLG4pKSYmImluaXRpYWwiIT09ZD8iYXBwbHktc2hpbS1pbmhlcml0Ij09PWQmJihkPSJpbmhlcml0Iik6ZD1xMih0LG5bbV18fG0sbil8fG0scysoZHx8IiIpK0wpOnMrTH0pKSxpJiZpLnRyaW0oKXx8IiJ9ZnVuY3Rpb24ga2UodCxpLG4pe2k9aS5zcGxpdCgiOyIp''@;'; put 'put ''O2Zvcih2YXIgZCxtLHM9MDtzPGkubGVuZ3RoO3MrKylpZihkPWlbc10pe2lmKE10Lmxhc3RJbmRleD0wLG09TXQuZXhlYyhkKSlkPXEyKHQsblttWzFdXSxuKTtlbHNlIGlmKC0xIT09KG09ZC5pbmRleE9mKCI6IikpKXt2YXIgTD1kLnN1YnN0cmluZyhtKTtMPXEyKHQsTD1MLnRyaW0oKSxu''@;'; put 'put ''KXx8TCxkPWQuc3Vic3RyaW5nKDAsbSkrTH1pW3NdPWQmJmQubGFzdEluZGV4T2YoIjsiKT09PWQubGVuZ3RoLTE/ZC5zbGljZSgwLC0xKTpkfHwiIn1yZXR1cm4gaS5qb2luKCI7Iil9ZnVuY3Rpb24gSXIodCl7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiBpLnJlcGxhY2UodC51LHQuZyl9''@;'; put 'put ''fWZ1bmN0aW9uIGtyKHQsaSl7dmFyIG49d3Qscz1XMih0KTt0LnRleHRDb250ZW50PVMyKHMsZnVuY3Rpb24oZCl7dmFyIG09ZC5jc3NUZXh0PWQucGFyc2VkQ3NzVGV4dDtkLkQmJmQuRC5jc3NUZXh0JiYobT1tLnJlcGxhY2UoRGksIiIpLnJlcGxhY2UoRWksIiIpLGQuY3NzVGV4dD1rZShu''@;'; put 'put ''LG0saSkpfSl9ZS5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhxaS5wcm90b3R5cGUse2c6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiJ4LXNjb3BlIn19fSk7dmFyIHd0PW5ldyBxaSx4Mj17fSx4dD13aW5kb3cuY3VzdG9tRWxlbWVudHM7aWYo''@;'; put 'put ''eHQmJiFoMCYmIUwyKXt2YXIgT3I9eHQuZGVmaW5lO3h0LmRlZmluZT1mdW5jdGlvbih0LGksbil7eDJbdF18fCh4Mlt0XT1raSh0KSksT3IuY2FsbCh4dCx0LGksbil9fWZ1bmN0aW9uIFlpKCl7dGhpcy5jYWNoZT17fX1mdW5jdGlvbiBLaSgpe31ZaS5wcm90b3R5cGUuc3RvcmU9ZnVuY3Rp''@;'; put 'put ''b24odCxpLG4scyl7dmFyIGQ9dGhpcy5jYWNoZVt0XXx8W107ZC5wdXNoKHtQOmksc3R5bGVFbGVtZW50Om4sTDpzfSksMTAwPGQubGVuZ3RoJiZkLnNoaWZ0KCksdGhpcy5jYWNoZVt0XT1kfTt2YXIgUHI9bmV3IFJlZ0V4cChUMC5nKyJcXHMqKFteXFxzXSopIik7ZnVuY3Rpb24gWGkodCl7''@;'; put 'put ''cmV0dXJuKHQ9KHQuY2xhc3NMaXN0JiZ0LmNsYXNzTGlzdC52YWx1ZT90LmNsYXNzTGlzdC52YWx1ZTp0LmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpLm1hdGNoKFByKSk/dFsxXToiIn1mdW5jdGlvbiBPZSh0KXt2YXIgaT0kMih0KS5nZXRSb290Tm9kZSgpO3JldHVybiBpPT09dHx8aT09''@;'; put 'put ''PXQub3duZXJEb2N1bWVudD8iIjoodD1pLmhvc3QpP3MyKHQpLmlzOiIifWZ1bmN0aW9uIFFpKHQpe2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXt2YXIgbj10W2ldO2lmKG4udGFyZ2V0IT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiZuLnRhcmdldCE9PWRvY3VtZW50LmhlYWQpZm9y''@;'; put 'put ''KHZhciBzPTA7czxuLmFkZGVkTm9kZXMubGVuZ3RoO3MrKyl7dmFyIGQ9bi5hZGRlZE5vZGVzW3NdO2lmKGQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSl7dmFyIG09ZC5nZXRSb290Tm9kZSgpLEw9WGkoZCk7aWYoTCYmbT09PWQub3duZXJEb2N1bWVudCYmKCJzdHlsZSIhPT1kLmxv''@;'; put 'put ''Y2FsTmFtZSYmInRlbXBsYXRlIiE9PWQubG9jYWxOYW1lfHwiIj09PV8yKGQpKSlIcihkLEwpO2Vsc2UgaWYobSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpZm9yKChtPU9lKGQpKSE9PUwmJnZyKGQsTCxtKSxkPXdpbmRvdy5TaGFkeURPTS5uYXRpdmVNZXRob2RzLnF1ZXJ5U2VsZWN0b3JBbGwu''@;'; put 'put ''Y2FsbChkLCI6bm90KC4iK1QwLmcrIikiKSxMPTA7TDxkLmxlbmd0aDtMKyspe3ZhciBGPU9lKG09ZFtMXSk7RiYmaDIobSxGKX19fX19aWYoIShoMHx8d2luZG93LlNoYWR5RE9NJiZ3aW5kb3cuU2hhZHlET00uaGFuZGxlc0R5bmFtaWNTY29waW5nKSl7dmFyIEppPW5ldyBNdXRhdGlvbk9i''@;'; put 'put ''c2VydmVyKFFpKSx0YT1mdW5jdGlvbih0KXtKaS5vYnNlcnZlKHQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSl9O2lmKHdpbmRvdy5jdXN0b21FbGVtZW50cyYmIXdpbmRvdy5jdXN0b21FbGVtZW50cy5wb2x5ZmlsbFdyYXBGbHVzaENhbGxiYWNrKXRhKGRvY3VtZW50KTtlbHNle3ZhciBQ''@;'; put 'put ''ZT1mdW5jdGlvbigpe3RhKGRvY3VtZW50LmJvZHkpfTt3aW5kb3cuSFRNTEltcG9ydHM/d2luZG93LkhUTUxJbXBvcnRzLndoZW5SZWFkeShQZSk6cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7aWYoImxvYWRpbmciPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSl7dmFyIHQ9ZnVuY3Rp''@;'; put 'put ''b24oKXtQZSgpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLHQpfTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIix0KX1lbHNlIFBlKCl9KX1LaT1mdW5jdGlvbigpe1FpKEppLnRha2VSZWNvcmRzKCkpfX12YXIgRHQ9''@;'; put 'put ''e30sQnI9UHJvbWlzZS5yZXNvbHZlKCk7ZnVuY3Rpb24gR3IodCl7KHQ9RHRbdF0pJiYodC5fYXBwbHlTaGltQ3VycmVudFZlcnNpb249dC5fYXBwbHlTaGltQ3VycmVudFZlcnNpb258fDAsdC5fYXBwbHlTaGltVmFsaWRhdGluZ1ZlcnNpb249dC5fYXBwbHlTaGltVmFsaWRhdGluZ1ZlcnNp''@;'; put 'put ''b258fDAsdC5fYXBwbHlTaGltTmV4dFZlcnNpb249KHQuX2FwcGx5U2hpbU5leHRWZXJzaW9ufHwwKSsxKX1mdW5jdGlvbiBlYSh0KXtyZXR1cm4gdC5fYXBwbHlTaGltQ3VycmVudFZlcnNpb249PT10Ll9hcHBseVNoaW1OZXh0VmVyc2lvbn12YXIgbGE9e30saWE9bmV3IFlpO2Z1bmN0aW9u''@;'; put 'put ''IEcxKCl7dGhpcy5kYT17fSx0aGlzLmk9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3ZhciB0PW5ldyBTZTt0LnJ1bGVzPVtdLHRoaXMudT1JZSh0aGlzLmksbmV3IHcyKHQpKSx0aGlzLk89ITEsdGhpcy5nPXRoaXMuaD1udWxsfWZ1bmN0aW9uIGFhKHQpe3ZhciBpPXMyKHQpLG49aS5pcztp''@;'; put 'put ''PWkuaGE7dmFyIHM9eDJbbl18fG51bGwsZD1EdFtuXTtpZihkKXJldHVybiBJZSh0LGk9bmV3IHcyKG49ZC5fc3R5bGVBc3QscyxkLmcsaSxkPV8yKGQpKSksaX1mdW5jdGlvbiBZMih0KXtpZighdC5oJiZ3aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5BcHBseVNoaW0pe3QuaD13''@;'; put 'put ''aW5kb3cuU2hhZHlDU1MuQXBwbHlTaGltLHQuaC5pbnZhbGlkQ2FsbGJhY2s9R3I7dmFyIGk9ITB9ZWxzZSBpPSExO3JldHVybiBmdW5jdGlvbiBScih0KXshdC5nJiZ3aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5DdXN0b21TdHlsZUludGVyZmFjZSYmKHQuZz13aW5kb3cuU2hh''@;'; put 'put ''ZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2UsdC5nLnRyYW5zZm9ybUNhbGxiYWNrPWZ1bmN0aW9uKGkpe3QuTWEoaSl9LHQuZy52YWxpZGF0ZUNhbGxiYWNrPWZ1bmN0aW9uKCl7cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7KHQuZy5lbnF1ZXVlZHx8dC5PKSYmdC5mbHVzaEN1''@;'; put 'put ''c3RvbVN0eWxlcygpfSl9KX0odCksaX1mdW5jdGlvbiByYSh0LGksbil7dmFyIHM9czIoaSkuaXM7aWYobi5LKXt2YXIgbSxkPW4uSztmb3IobSBpbiBkKW51bGw9PT1tP2kuc3R5bGUucmVtb3ZlUHJvcGVydHkobSk6aS5zdHlsZS5zZXRQcm9wZXJ0eShtLGRbbV0pfSEoIShkPUR0W3NdKSYm''@;'; put 'put ''aSE9PXQuaXx8ZCYmIiIhPT1fMihkKSkmJmQmJmQuX3N0eWxlJiYhZWEoZCkmJigoZWEoZCl8fGQuX2FwcGx5U2hpbVZhbGlkYXRpbmdWZXJzaW9uIT09ZC5fYXBwbHlTaGltTmV4dFZlcnNpb24pJiYoWTIodCksdC5oJiZ0LmgudHJhbnNmb3JtUnVsZXMoZC5fc3R5bGVBc3QscyksZC5fc3R5''@;'; put 'put ''bGUudGV4dENvbnRlbnQ9U3QoaSxuLk0pLGZ1bmN0aW9uIGpyKHQpe3QuX2FwcGx5U2hpbVZhbGlkYXRpbmdWZXJzaW9uPXQuX2FwcGx5U2hpbU5leHRWZXJzaW9uLHQuX3ZhbGlkYXRpbmd8fCh0Ll92YWxpZGF0aW5nPSEwLEJyLnRoZW4oZnVuY3Rpb24oKXt0Ll9hcHBseVNoaW1DdXJyZW50''@;'; put 'put ''VmVyc2lvbj10Ll9hcHBseVNoaW1OZXh0VmVyc2lvbix0Ll92YWxpZGF0aW5nPSExfSkpfShkKSksaDAmJih0PWkuc2hhZG93Um9vdCkmJih0PXQucXVlcnlTZWxlY3Rvcigic3R5bGUiKSkmJih0LnRleHRDb250ZW50PVN0KGksbi5NKSksbi5NPWQuX3N0eWxlQXN0KX1mdW5jdGlvbiBCZSh0''@;'; put 'put ''LGkpe3JldHVybihpPSQyKGkpLmdldFJvb3ROb2RlKCkuaG9zdCk/TjAoaSl8fGFhKGkpP2k6QmUodCxpKTp0Lml9ZnVuY3Rpb24gR2UodCxpLG4pe3ZhciBzPUJlKHQsaSksZD1OMChzKSxtPWQuUjtmb3IodmFyIEwgaW4gcz09PXQuaXx8bXx8KEdlKHQscyxkKSxtPWQuUiksdD1PYmplY3Qu''@;'; put 'put ''Y3JlYXRlKG18fG51bGwpLHM9ZnVuY3Rpb24gVHIodCxpLG4pe3ZhciBzPXt9LGQ9e307cmV0dXJuIGIyKGksZnVuY3Rpb24obSl7IWZ1bmN0aW9uIEVyKHQsaSxuLHMpe2lmKGkuRHx8YnQoaSksaS5ELlApe3ZhciBkPXMyKHQpO3Q9ZC5pcyxkPWQuaGEsZD10P1RlKHQsZCk6Imh0bWwiO3Zh''@;'; put 'put ''ciBtPWkucGFyc2VkU2VsZWN0b3IsTD0hIW0ubWF0Y2goX3IpfHwiaHRtbCI9PT1kJiYtMTxtLmluZGV4T2YoImh0bWwiKSxGPTA9PT1tLmluZGV4T2YoIjpob3N0IikmJiFMOyJzaGFkeSI9PT1uJiYoRj0hKEw9bT09PWQrIiA+ICouIitkfHwtMSE9PW0uaW5kZXhPZigiaHRtbCIpKSYmMD09''@;'; put 'put ''PW0uaW5kZXhPZihkKSksKEx8fEYpJiYobj1kLEYmJihpLkZ8fChpLkY9TmUoVDAsaSxUMC5oLHQ/Ii4iK3Q6IiIsZCkpLG49aS5GfHxkKSxMJiYiaHRtbCI9PT1kJiYobj1pLkZ8fGkuTykscyh7QmE6bixhYjpGLHFiOkx9KSl9fSh0LG0sbixmdW5jdGlvbihMKXskaS5jYWxsKHQuX2VsZW1l''@;'; put 'put ''bnR8fHQsTC5CYSkmJl90KG0sTC5hYj9zOmQpfSl9LG51bGwsITApLHtoYjpkLFphOnN9fShpLG4uTSxuLmNzc0J1aWxkKSxpPWZ1bmN0aW9uIERyKHQsaSl7dmFyIG49e30scz1bXTtyZXR1cm4gYjIodCxmdW5jdGlvbihkKXtkLkR8fGJ0KGQpO3ZhciBtPWQuRnx8ZC5wYXJzZWRTZWxlY3Rv''@;'; put 'put ''cjtpJiZkLkQuUCYmbSYmJGkuY2FsbChpLG0pJiYoX3QoZCxuKSxkPWQuaW5kZXgsbT1wYXJzZUludChkLzMyLDEwKSxzW21dPShzW21dfHwwKXwxPDxkJTMyKX0sbnVsbCwhMCkse1A6bixrZXk6c319KGQuTSxpKS5QLE9iamVjdC5hc3NpZ24odCxzLlphLGkscy5oYiksaT1uLkspKChkPWlb''@;'; put 'put ''TF0pfHwwPT09ZCkmJih0W0xdPWQpO2ZvcihMPXd0LGk9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCksZD0wO2Q8aS5sZW5ndGg7ZCsrKXRbcz1pW2RdXT1xMihMLHRbc10sdCk7bi5SPXR9KFg9RzEucHJvdG90eXBlKS5mbHVzaD1mdW5jdGlvbigpe0tpKCl9LFguWGE9ZnVuY3Rpb24o''@;'; put 'put ''dCl7cmV0dXJuIFcyKHQpfSxYLmxiPWZ1bmN0aW9uKHQpe3JldHVybiBTMih0KX0sWC5wcmVwYXJlVGVtcGxhdGU9ZnVuY3Rpb24odCxpLG4pe3RoaXMucHJlcGFyZVRlbXBsYXRlRG9tKHQsaSksdGhpcy5wcmVwYXJlVGVtcGxhdGVTdHlsZXModCxpLG4pfSxYLnByZXBhcmVUZW1wbGF0ZVN0''@;'; put 'put ''eWxlcz1mdW5jdGlvbih0LGksbil7aWYoIXQuX3ByZXBhcmVkJiYhTDIpe2gwfHx4MltpXXx8KHgyW2ldPWtpKGkpKSx0Ll9wcmVwYXJlZD0hMCx0Lm5hbWU9aSx0LmV4dGVuZHM9bixEdFtpXT10O3ZhciBzPV8yKHQpLGQ9RWUocyk7bj17aXM6aSxleHRlbmRzOm59O2Zvcih2YXIgbT1bXSxM''@;'; put 'put ''PXQuY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpLEY9MDtGPEwubGVuZ3RoO0YrKyl7dmFyIEc9TFtGXTtpZihHLmhhc0F0dHJpYnV0ZSgic2hhZHktdW5zY29wZWQiKSl7aWYoIWgwKXt2YXIgVT1HLnRleHRDb250ZW50O2lmKCFGaS5oYXMoVSkpe0ZpLmFkZChVKTt2YXIgSz1k''@;'; put 'put ''b2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO0suc2V0QXR0cmlidXRlKCJzaGFkeS11bnNjb3BlZCIsIiIpLEsudGV4dENvbnRlbnQ9VSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKEspfUcucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChHKX19ZWxzZSBtLnB1c2goRy50ZXh0Q29udGVu''@;'; put 'put ''dCksRy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKEcpfW09bS5qb2luKCIiKS50cmltKCkrKGxhW2ldfHwiIiksWTIodGhpcyksZHx8KChMPSFzKSYmKEw9TXQudGVzdChtKXx8bXQudGVzdChtKSxNdC5sYXN0SW5kZXg9MCxtdC5sYXN0SW5kZXg9MCksRj1iZShtKSxMJiZDMCYmdGhpcy5oJiZ0''@;'; put 'put ''aGlzLmgudHJhbnNmb3JtUnVsZXMoRixpKSx0Ll9zdHlsZUFzdD1GKSxMPVtdLEMwfHwoTD1mdW5jdGlvbiB4cih0KXt2YXIgaT17fSxuPVtdLHM9MDtmb3IodmFyIGQgaW4gYjIodCxmdW5jdGlvbihtKXtidChtKSxtLmluZGV4PXMrKyxtPW0uRC5jc3NUZXh0O2Zvcih2YXIgTDtMPXVyLmV4''@;'; put 'put ''ZWMobSk7KSI6IiE9PUxbMl0mJihpW0xbMV1dPSEwKX0sZnVuY3Rpb24obSl7bi5wdXNoKG0pfSksdC5oPW4sdD1bXSxpKXQucHVzaChkKTtyZXR1cm4gdH0odC5fc3R5bGVBc3QpKSwoIUwubGVuZ3RofHxDMCkmJihGPWgwP3QuY29udGVudDpudWxsLGk9eDJbaV18fG51bGwscz0ocz1TdChu''@;'; put 'put ''LHQuX3N0eWxlQXN0LG51bGwscyxkP206IiIpKS5sZW5ndGg/eGUocyxuLmlzLEYsaSk6bnVsbCx0Ll9zdHlsZT1zKSx0Lmc9TH19LFguZmI9ZnVuY3Rpb24odCxpKXtsYVtpXT10LmpvaW4oIiAiKX0sWC5wcmVwYXJlVGVtcGxhdGVEb209ZnVuY3Rpb24odCxpKXtpZighTDIpe3ZhciBuPV8y''@;'; put 'put ''KHQpO2gwfHwic2hhZHkiPT09bnx8dC5fZG9tUHJlcGFyZWR8fCh0Ll9kb21QcmVwYXJlZD0hMCxmdW5jdGlvbiBBcih0LGkpe0x0KFQwLHQsZnVuY3Rpb24obil7aDIobixpfHwiIil9KX0odC5jb250ZW50LGkpKX19LFguZmx1c2hDdXN0b21TdHlsZXM9ZnVuY3Rpb24oKXtpZighTDIpe3Zh''@;'; put 'put ''ciB0PVkyKHRoaXMpO2lmKHRoaXMuZyl7dmFyIGk9dGhpcy5nLnByb2Nlc3NTdHlsZXMoKTtpZigodHx8dGhpcy5nLmVucXVldWVkKSYmIUVlKHRoaXMudS5jc3NCdWlsZCkpe2lmKEMwKXtpZighdGhpcy51LmNzc0J1aWxkKWZvcih0PTA7dDxpLmxlbmd0aDt0Kyspe3ZhciBuPXRoaXMuZy5n''@;'; put 'put ''ZXRTdHlsZUZvckN1c3RvbVN0eWxlKGlbdF0pO2lmKG4mJkMwJiZ0aGlzLmgpe3ZhciBzPVcyKG4pO1kyKHRoaXMpLHRoaXMuaC50cmFuc2Zvcm1SdWxlcyhzKSxuLnRleHRDb250ZW50PVMyKHMpfX19ZWxzZXtmb3IoZnVuY3Rpb24genIodCxpKXtpPWkubWFwKGZ1bmN0aW9uKG4pe3JldHVy''@;'; put 'put ''biB0LmcuZ2V0U3R5bGVGb3JDdXN0b21TdHlsZShuKX0pLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4hIW59KSxpLnNvcnQoZnVuY3Rpb24obixzKXtyZXR1cm4obj1zLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG4pKSZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORz8xOm4mTm9k''@;'; put 'put ''ZS5ET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkc/LTE6MH0pLHQudS5NLnJ1bGVzPWkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBXMihuKX0pfSh0aGlzLGkpLEdlKHRoaXMsdGhpcy5pLHRoaXMudSksdD0wO3Q8aS5sZW5ndGg7dCsrKShuPXRoaXMuZy5nZXRTdHlsZUZvckN1c3RvbVN0eWxl''@;'; put 'put ''KGlbdF0pKSYma3Iobix0aGlzLnUuUik7dGhpcy5PJiZ0aGlzLnN0eWxlRG9jdW1lbnQoKX10aGlzLmcuZW5xdWV1ZWQ9ITF9fX19LFguc3R5bGVFbGVtZW50PWZ1bmN0aW9uKHQsaSl7aWYoTDIpe2lmKGkpe04wKHQpfHxJZSh0LG5ldyB3MihudWxsKSk7dmFyIG49TjAodCk7bi5LPW4uS3x8''@;'; put 'put ''e30sT2JqZWN0LmFzc2lnbihuLkssaSkscmEodGhpcyx0LG4pfX1lbHNlIGlmKG49TjAodCl8fGFhKHQpKWlmKHQhPT10aGlzLmkmJih0aGlzLk89ITApLGkmJihuLks9bi5LfHx7fSxPYmplY3QuYXNzaWduKG4uSyxpKSksQzApcmEodGhpcyx0LG4pO2Vsc2UgaWYodGhpcy5mbHVzaCgpLEdl''@;'; put 'put ''KHRoaXMsdCxuKSxuLnphJiZuLnphLmxlbmd0aCl7dmFyIHM7aT1zMih0KS5pczt0OntpZihzPWlhLmNhY2hlW2ldKWZvcih2YXIgZD1zLmxlbmd0aC0xOzA8PWQ7ZC0tKXt2YXIgbT1zW2RdO2U6e2Zvcih2YXIgTD1uLnphLEY9MDtGPEwubGVuZ3RoO0YrKyl7dmFyIEc9TFtGXTtpZihtLlBb''@;'; put 'put ''R10hPT1uLlJbR10pe0w9ITE7YnJlYWsgZX19TD0hMH1pZihMKXtzPW07YnJlYWsgdH19cz12b2lkIDB9TD1zP3Muc3R5bGVFbGVtZW50Om51bGwsZD1uLkwsKG09cyYmcy5MKXx8KG09aSsiLSIrKG09dGhpcy5kYVtpXT0odGhpcy5kYVtpXXx8MCkrMSkpLG4uTD1tLG09bi5MLEY9d3QsRj1M''@;'; put 'put ''P0wudGV4dENvbnRlbnR8fCIiOmZ1bmN0aW9uIE5yKHQsaSxuLHMpe3ZhciBkPXMyKGkpLG09VGUoZC5pcyxkLmhhKSxMPW5ldyBSZWdFeHAoIig/Ol58W14uI1s6XSkiKyhpLmV4dGVuZHM/IlxcIittLnNsaWNlKDAsLTEpKyJcXF0iOm0pKyIoJHxbLjpbXFxzPit+XSkiKSxGPU4wKGkpO2Q9''@;'; put 'put ''Ri5NLEY9Ri5jc3NCdWlsZDt2YXIgRz1mdW5jdGlvbiBGcih0LGkpe3Q9dC5oO3ZhciBuPXt9O2lmKCFoMCYmdClmb3IodmFyIHM9MCxkPXRbc107czx0Lmxlbmd0aDtkPXRbKytzXSl7dmFyIG09ZCxMPWk7bS51PW5ldyBSZWdFeHAoIlxcYiIrbS5rZXlmcmFtZXNOYW1lKyIoPyFcXEJ8LSki''@;'; put 'put ''LCJnIiksbS5nPW0ua2V5ZnJhbWVzTmFtZSsiLSIrTCxtLkY9bS5GfHxtLnNlbGVjdG9yLG0uc2VsZWN0b3I9bS5GLnJlcGxhY2UobS5rZXlmcmFtZXNOYW1lLG0uZyksbltkLmtleWZyYW1lc05hbWVdPUlyKGQpfXJldHVybiBufShkLHMpO3JldHVybiBTdChpLGQsZnVuY3Rpb24oVSl7dmFy''@;'; put 'put ''IEs9IiI7aWYoVS5EfHxidChVKSxVLkQuY3NzVGV4dCYmKEs9a2UodCxVLkQuY3NzVGV4dCxuKSksVS5jc3NUZXh0PUssIWgwJiYhSWkoVSkmJlUuY3NzVGV4dCl7dmFyIEgxPUs9VS5jc3NUZXh0O2lmKG51bGw9PVUuSWEmJihVLklhPXByLnRlc3QoSykpLFUuSWEpaWYobnVsbD09VS5wYSlm''@;'; put 'put ''b3IodmFyIFExIGluIFUucGE9W10sRylLIT09KEgxPShIMT1HW1ExXSkoSykpJiYoSz1IMSxVLnBhLnB1c2goUTEpKTtlbHNle2ZvcihRMT0wO1ExPFUucGEubGVuZ3RoOysrUTEpSz0oSDE9R1tVLnBhW1ExXV0pKEspO0gxPUt9VS5jc3NUZXh0PUgxLFUuRj1VLkZ8fFUuc2VsZWN0b3IsSz0i''@;'; put 'put ''LiIrcyxIMT0wO2Zvcih2YXIgajE9KFExPUJpKFUuRikpLmxlbmd0aCxNMT12b2lkIDA7SDE8ajEmJihNMT1RMVtIMV0pO0gxKyspUTFbSDFdPU0xLm1hdGNoKEwpP00xLnJlcGxhY2UobSxLKTpLKyIgIitNMTtVLnNlbGVjdG9yPVExLmpvaW4oIiwiKX19LEYpfShGLHQsbi5SLG0pO3ZhciBV''@;'; put 'put ''PShHPU4wKHQpKS5nO1UmJiFoMCYmVSE9PUwmJihVLl91c2VDb3VudC0tLDA+PVUuX3VzZUNvdW50JiZVLnBhcmVudE5vZGUmJlUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChVKSksaDA/Ry5nPyhHLmcudGV4dENvbnRlbnQ9RixMPUcuZyk6RiYmKEw9eGUoRixtLHQuc2hhZG93Um9vdCxHLmgp''@;'; put 'put ''KTpMP0wucGFyZW50Tm9kZXx8KHdyJiYtMTxGLmluZGV4T2YoIkBtZWRpYSIpJiYoTC50ZXh0Q29udGVudD1GKSxPaShMLG51bGwsRy5oKSk6RiYmKEw9eGUoRixtLG51bGwsRy5oKSksTCYmKEwuX3VzZUNvdW50PUwuX3VzZUNvdW50fHwwLEcuZyE9TCYmTC5fdXNlQ291bnQrKyxHLmc9TCks''@;'; put 'put ''bT1MLGgwfHwoTD1uLkwsRz1GPXQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIixkJiYoRz1GLnJlcGxhY2UobmV3IFJlZ0V4cCgiXFxzKngtc2NvcGVcXHMqIitkKyJcXHMqIiwiZyIpLCIgIikpLEYhPT0oRys9KEc/IiAiOiIiKSsieC1zY29wZSAiK0wpJiZadCh0LEcpKSxzfHxpYS5zdG9y''@;'; put 'put ''ZShpLG4uUixtLG4uTCl9fSxYLnN0eWxlRG9jdW1lbnQ9ZnVuY3Rpb24odCl7dGhpcy5zdHlsZVN1YnRyZWUodGhpcy5pLHQpfSxYLnN0eWxlU3VidHJlZT1mdW5jdGlvbih0LGkpe3ZhciBuPSQyKHQpLHM9bi5zaGFkb3dSb290LGQ9dD09PXRoaXMuaTtpZigoc3x8ZCkmJnRoaXMuc3R5bGVF''@;'; put 'put ''bGVtZW50KHQsaSksdD1kP246cylmb3IodD1BcnJheS5mcm9tKHQucXVlcnlTZWxlY3RvckFsbCgiKiIpKS5maWx0ZXIoZnVuY3Rpb24obSl7cmV0dXJuICQyKG0pLnNoYWRvd1Jvb3R9KSxpPTA7aTx0Lmxlbmd0aDtpKyspdGhpcy5zdHlsZVN1YnRyZWUodFtpXSl9LFguTWE9ZnVuY3Rpb24o''@;'; put 'put ''dCl7dmFyIGk9dGhpcyxuPV8yKHQpO2lmKG4hPT10aGlzLnUuY3NzQnVpbGQmJih0aGlzLnUuY3NzQnVpbGQ9biksIUVlKG4pKXt2YXIgcz1XMih0KTtiMihzLGZ1bmN0aW9uKGQpe2lmKGgwKVJpKGQpO2Vsc2V7dmFyIG09VDA7ZC5zZWxlY3Rvcj1kLnBhcnNlZFNlbGVjdG9yLFJpKGQpLGQu''@;'; put 'put ''c2VsZWN0b3I9ZC5GPU5lKG0sZCxtLmksdm9pZCAwLHZvaWQgMCl9QzAmJiIiPT09biYmKFkyKGkpLGkuaCYmaS5oLnRyYW5zZm9ybVJ1bGUoZCkpfSksQzA/dC50ZXh0Q29udGVudD1TMihzKTp0aGlzLnUuTS5ydWxlcy5wdXNoKHMpfX0sWC5nZXRDb21wdXRlZFN0eWxlVmFsdWU9ZnVuY3Rp''@;'; put 'put ''b24odCxpKXt2YXIgbjtyZXR1cm4gQzB8fChuPShOMCh0KXx8TjAoQmUodGhpcyx0KSkpLlJbaV0pLChuPW58fHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmdldFByb3BlcnR5VmFsdWUoaSkpP24udHJpbSgpOiIifSxYLmtiPWZ1bmN0aW9uKHQsaSl7dmFyIG49JDIodCkuZ2V0Um9vdE5v''@;'; put 'put ''ZGUoKTtpZihpPWk/KCJzdHJpbmciPT10eXBlb2YgaT9pOlN0cmluZyhpKSkuc3BsaXQoL1xzLyk6W10sIShuPW4uaG9zdCYmbi5ob3N0LmxvY2FsTmFtZSkpe3ZhciBzPXQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpO2lmKHMpe3M9cy5zcGxpdCgvXHMvKTtmb3IodmFyIGQ9MDtkPHMubGVuZ3Ro''@;'; put 'put ''O2QrKylpZihzW2RdPT09VDAuZyl7bj1zW2QrMV07YnJlYWt9fX1uJiZpLnB1c2goVDAuZyxuKSxDMHx8KG49TjAodCkpJiZuLkwmJmkucHVzaCh3dC5nLG4uTCksWnQodCxpLmpvaW4oIiAiKSl9LFguVGE9ZnVuY3Rpb24odCl7cmV0dXJuIE4wKHQpfSxYLmpiPWZ1bmN0aW9uKHQsaSl7aDIo''@;'; put 'put ''dCxpKX0sWC5tYj1mdW5jdGlvbih0LGkpe2gyKHQsaSwhMCl9LFguaWI9ZnVuY3Rpb24odCl7cmV0dXJuIE9lKHQpfSxYLlZhPWZ1bmN0aW9uKHQpe3JldHVybiBYaSh0KX0sRzEucHJvdG90eXBlLmZsdXNoPUcxLnByb3RvdHlwZS5mbHVzaCxHMS5wcm90b3R5cGUucHJlcGFyZVRlbXBsYXRl''@;'; put 'put ''PUcxLnByb3RvdHlwZS5wcmVwYXJlVGVtcGxhdGUsRzEucHJvdG90eXBlLnN0eWxlRWxlbWVudD1HMS5wcm90b3R5cGUuc3R5bGVFbGVtZW50LEcxLnByb3RvdHlwZS5zdHlsZURvY3VtZW50PUcxLnByb3RvdHlwZS5zdHlsZURvY3VtZW50LEcxLnByb3RvdHlwZS5zdHlsZVN1YnRyZWU9RzEu''@;'; put 'put ''cHJvdG90eXBlLnN0eWxlU3VidHJlZSxHMS5wcm90b3R5cGUuZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlPUcxLnByb3RvdHlwZS5nZXRDb21wdXRlZFN0eWxlVmFsdWUsRzEucHJvdG90eXBlLnNldEVsZW1lbnRDbGFzcz1HMS5wcm90b3R5cGUua2IsRzEucHJvdG90eXBlLl9zdHlsZUluZm9Gb3JO''@;'; put 'put ''b2RlPUcxLnByb3RvdHlwZS5UYSxHMS5wcm90b3R5cGUudHJhbnNmb3JtQ3VzdG9tU3R5bGVGb3JEb2N1bWVudD1HMS5wcm90b3R5cGUuTWEsRzEucHJvdG90eXBlLmdldFN0eWxlQXN0PUcxLnByb3RvdHlwZS5YYSxHMS5wcm90b3R5cGUuc3R5bGVBc3RUb1N0cmluZz1HMS5wcm90b3R5cGUu''@;'; put 'put ''bGIsRzEucHJvdG90eXBlLmZsdXNoQ3VzdG9tU3R5bGVzPUcxLnByb3RvdHlwZS5mbHVzaEN1c3RvbVN0eWxlcyxHMS5wcm90b3R5cGUuc2NvcGVOb2RlPUcxLnByb3RvdHlwZS5qYixHMS5wcm90b3R5cGUudW5zY29wZU5vZGU9RzEucHJvdG90eXBlLm1iLEcxLnByb3RvdHlwZS5zY29wZUZv''@;'; put 'put ''ck5vZGU9RzEucHJvdG90eXBlLmliLEcxLnByb3RvdHlwZS5jdXJyZW50U2NvcGVGb3JOb2RlPUcxLnByb3RvdHlwZS5WYSxHMS5wcm90b3R5cGUucHJlcGFyZUFkb3B0ZWRDc3NUZXh0PUcxLnByb3RvdHlwZS5mYixPYmplY3QuZGVmaW5lUHJvcGVydGllcyhHMS5wcm90b3R5cGUse25hdGl2''@;'; put 'put ''ZVNoYWRvdzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGgwfX0sbmF0aXZlQ3NzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQzB9fX0pO3ZhciBqZSxSZSxWMD1uZXcgRzE7d2luZG93LlNoYWR5Q1NTJiYoamU9d2luZG93LlNoYWR5Q1NTLkFwcGx5U2hpbSxSZT13aW5kb3cuU2hhZHlDU1MuQ3Vz''@;'; put 'put ''dG9tU3R5bGVJbnRlcmZhY2UpLHdpbmRvdy5TaGFkeUNTUz17U2NvcGluZ1NoaW06VjAscHJlcGFyZVRlbXBsYXRlOmZ1bmN0aW9uKHQsaSxuKXtWMC5mbHVzaEN1c3RvbVN0eWxlcygpLFYwLnByZXBhcmVUZW1wbGF0ZSh0LGksbil9LHByZXBhcmVUZW1wbGF0ZURvbTpmdW5jdGlvbih0LGkp''@;'; put 'put ''e1YwLnByZXBhcmVUZW1wbGF0ZURvbSh0LGkpfSxwcmVwYXJlVGVtcGxhdGVTdHlsZXM6ZnVuY3Rpb24odCxpLG4pe1YwLmZsdXNoQ3VzdG9tU3R5bGVzKCksVjAucHJlcGFyZVRlbXBsYXRlU3R5bGVzKHQsaSxuKX0sc3R5bGVTdWJ0cmVlOmZ1bmN0aW9uKHQsaSl7VjAuZmx1c2hDdXN0b21T''@;'; put 'put ''dHlsZXMoKSxWMC5zdHlsZVN1YnRyZWUodCxpKX0sc3R5bGVFbGVtZW50OmZ1bmN0aW9uKHQpe1YwLmZsdXNoQ3VzdG9tU3R5bGVzKCksVjAuc3R5bGVFbGVtZW50KHQpfSxzdHlsZURvY3VtZW50OmZ1bmN0aW9uKHQpe1YwLmZsdXNoQ3VzdG9tU3R5bGVzKCksVjAuc3R5bGVEb2N1bWVudCh0''@;'; put 'put ''KX0sZmx1c2hDdXN0b21TdHlsZXM6ZnVuY3Rpb24oKXtWMC5mbHVzaEN1c3RvbVN0eWxlcygpfSxnZXRDb21wdXRlZFN0eWxlVmFsdWU6ZnVuY3Rpb24odCxpKXtyZXR1cm4gVjAuZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlKHQsaSl9LG5hdGl2ZUNzczpDMCxuYXRpdmVTaGFkb3c6aDAsY3NzQnVp''@;'; put 'put ''bGQ6VnQsZGlzYWJsZVJ1bnRpbWU6TDJ9LGplJiYod2luZG93LlNoYWR5Q1NTLkFwcGx5U2hpbT1qZSksUmUmJih3aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2U9UmUpLGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGkoTTEpe3JldHVybiIiPT1NMSYmKG0uY2FsbCh0aGlzKSx0aGlz''@;'; put 'put ''Lm09ITApLE0xLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gbihNMSl7dmFyICQxPU0xLmNoYXJDb2RlQXQoMCk7cmV0dXJuIDMyPCQxJiYxMjc+JDEmJi0xPT1bMzQsMzUsNjAsNjIsNjMsOTZdLmluZGV4T2YoJDEpP00xOmVuY29kZVVSSUNvbXBvbmVudChNMSl9ZnVuY3Rpb24gcyhNMSl7dmFy''@;'; put 'put ''ICQxPU0xLmNoYXJDb2RlQXQoMCk7cmV0dXJuIDMyPCQxJiYxMjc+JDEmJi0xPT1bMzQsMzUsNjAsNjIsOTZdLmluZGV4T2YoJDEpP00xOmVuY29kZVVSSUNvbXBvbmVudChNMSl9ZnVuY3Rpb24gZChNMSwkMSx6MSl7ZnVuY3Rpb24gbzAoSTApe2UyLnB1c2goSTApfXZhciBrMT0kMXx8InNj''@;'; put 'put ''aGVtZSBzdGFydCIsbTA9MCxUMT0iIix0Mj0hMSxGMD0hMSxlMj1bXTt0OmZvcig7KG51bGwhPU0xW20wLTFdfHwwPT1tMCkmJiF0aGlzLm07KXt2YXIgdDE9TTFbbTBdO3N3aXRjaChrMSl7Y2FzZSJzY2hlbWUgc3RhcnQiOmlmKCF0MXx8IUgxLnRlc3QodDEpKXtpZigkMSl7bzAoIkludmFs''@;'; put 'put ''aWQgc2NoZW1lLiIpO2JyZWFrIHR9VDE9IiIsazE9Im5vIHNjaGVtZSI7Y29udGludWV9VDErPXQxLnRvTG93ZXJDYXNlKCksazE9InNjaGVtZSI7YnJlYWs7Y2FzZSJzY2hlbWUiOmlmKHQxJiZRMS50ZXN0KHQxKSlUMSs9dDEudG9Mb3dlckNhc2UoKTtlbHNle2lmKCI6IiE9dDEpe2lmKCQx''@;'; put 'put ''KXtudWxsIT10MSYmbzAoIkNvZGUgcG9pbnQgbm90IGFsbG93ZWQgaW4gc2NoZW1lOiAiK3QxKTticmVhayB0fVQxPSIiLG0wPTAsazE9Im5vIHNjaGVtZSI7Y29udGludWV9aWYodGhpcy5sPVQxLFQxPSIiLCQxKWJyZWFrIHQ7dm9pZCAwIT09VVt0aGlzLmxdJiYodGhpcy5HPSEwKSxrMT0i''@;'; put 'put ''ZmlsZSI9PXRoaXMubD8icmVsYXRpdmUiOnRoaXMuRyYmejEmJnoxLmw9PXRoaXMubD8icmVsYXRpdmUgb3IgYXV0aG9yaXR5Ijp0aGlzLkc/ImF1dGhvcml0eSBmaXJzdCBzbGFzaCI6InNjaGVtZSBkYXRhIn1icmVhaztjYXNlInNjaGVtZSBkYXRhIjoiPyI9PXQxPyh0aGlzLkE9Ij8iLGsx''@;'; put 'put ''PSJxdWVyeSIpOiIjIj09dDE/KHRoaXMuQz0iIyIsazE9ImZyYWdtZW50Iik6bnVsbCE9dDEmJiJcdCIhPXQxJiYiXG4iIT10MSYmIlxyIiE9dDEmJih0aGlzLnZhKz1uKHQxKSk7YnJlYWs7Y2FzZSJubyBzY2hlbWUiOmlmKHoxJiZ2b2lkIDAhPT1VW3oxLmxdKXtrMT0icmVsYXRpdmUiO2Nv''@;'; put 'put ''bnRpbnVlfW8wKCJNaXNzaW5nIHNjaGVtZS4iKSxtLmNhbGwodGhpcyksdGhpcy5tPSEwO2JyZWFrO2Nhc2UicmVsYXRpdmUgb3IgYXV0aG9yaXR5IjppZigiLyIhPXQxfHwiLyIhPU0xW20wKzFdKXtvMCgiRXhwZWN0ZWQgLywgZ290OiAiK3QxKSxrMT0icmVsYXRpdmUiO2NvbnRpbnVlfWsx''@;'; put 'put ''PSJhdXRob3JpdHkgaWdub3JlIHNsYXNoZXMiO2JyZWFrO2Nhc2UicmVsYXRpdmUiOmlmKHRoaXMuRz0hMCwiZmlsZSIhPXRoaXMubCYmKHRoaXMubD16MS5sKSxudWxsPT10MSl7dGhpcy5vPXoxLm8sdGhpcy52PXoxLnYsdGhpcy5zPXoxLnMuc2xpY2UoKSx0aGlzLkE9ejEuQSx0aGlzLkI9''@;'; put 'put ''ejEuQix0aGlzLmo9ejEuajticmVhayB0fWlmKCIvIj09dDF8fCJcXCI9PXQxKSJcXCI9PXQxJiZvMCgiXFwgaXMgYW4gaW52YWxpZCBjb2RlIHBvaW50LiIpLGsxPSJyZWxhdGl2ZSBzbGFzaCI7ZWxzZSBpZigiPyI9PXQxKXRoaXMubz16MS5vLHRoaXMudj16MS52LHRoaXMucz16MS5zLnNs''@;'; put 'put ''aWNlKCksdGhpcy5BPSI/Iix0aGlzLkI9ejEuQix0aGlzLmo9ejEuaixrMT0icXVlcnkiO2Vsc2V7aWYoIiMiIT10MSl7azE9TTFbbTArMV07dmFyIGwwPU0xW20wKzJdOygiZmlsZSIhPXRoaXMubHx8IUgxLnRlc3QodDEpfHwiOiIhPWsxJiYifCIhPWsxfHxudWxsIT1sMCYmIi8iIT1sMCYm''@;'; put 'put ''IlxcIiE9bDAmJiI/IiE9bDAmJiIjIiE9bDApJiYodGhpcy5vPXoxLm8sdGhpcy52PXoxLnYsdGhpcy5CPXoxLkIsdGhpcy5qPXoxLmosdGhpcy5zPXoxLnMuc2xpY2UoKSx0aGlzLnMucG9wKCkpLGsxPSJyZWxhdGl2ZSBwYXRoIjtjb250aW51ZX10aGlzLm89ejEubyx0aGlzLnY9ejEudix0''@;'; put 'put ''aGlzLnM9ejEucy5zbGljZSgpLHRoaXMuQT16MS5BLHRoaXMuQz0iIyIsdGhpcy5CPXoxLkIsdGhpcy5qPXoxLmosazE9ImZyYWdtZW50In1icmVhaztjYXNlInJlbGF0aXZlIHNsYXNoIjppZigiLyIhPXQxJiYiXFwiIT10MSl7ImZpbGUiIT10aGlzLmwmJih0aGlzLm89ejEubyx0aGlzLnY9''@;'; put 'put ''ejEudix0aGlzLkI9ejEuQix0aGlzLmo9ejEuaiksazE9InJlbGF0aXZlIHBhdGgiO2NvbnRpbnVlfSJcXCI9PXQxJiZvMCgiXFwgaXMgYW4gaW52YWxpZCBjb2RlIHBvaW50LiIpLGsxPSJmaWxlIj09dGhpcy5sPyJmaWxlIGhvc3QiOiJhdXRob3JpdHkgaWdub3JlIHNsYXNoZXMiO2JyZWFr''@;'; put 'put ''O2Nhc2UiYXV0aG9yaXR5IGZpcnN0IHNsYXNoIjppZigiLyIhPXQxKXtvMCgiRXhwZWN0ZWQgJy8nLCBnb3Q6ICIrdDEpLGsxPSJhdXRob3JpdHkgaWdub3JlIHNsYXNoZXMiO2NvbnRpbnVlfWsxPSJhdXRob3JpdHkgc2Vjb25kIHNsYXNoIjticmVhaztjYXNlImF1dGhvcml0eSBzZWNvbmQg''@;'; put 'put ''c2xhc2giOmlmKGsxPSJhdXRob3JpdHkgaWdub3JlIHNsYXNoZXMiLCIvIiE9dDEpe28wKCJFeHBlY3RlZCAnLycsIGdvdDogIit0MSk7Y29udGludWV9YnJlYWs7Y2FzZSJhdXRob3JpdHkgaWdub3JlIHNsYXNoZXMiOmlmKCIvIiE9dDEmJiJcXCIhPXQxKXtrMT0iYXV0aG9yaXR5Ijtjb250''@;'; put 'put ''aW51ZX1vMCgiRXhwZWN0ZWQgYXV0aG9yaXR5LCBnb3Q6ICIrdDEpO2JyZWFrO2Nhc2UiYXV0aG9yaXR5IjppZigiQCI9PXQxKXtmb3IodDImJihvMCgiQCBhbHJlYWR5IHNlZW4uIiksVDErPSIlNDAiKSx0Mj0hMCx0MT0wO3QxPFQxLmxlbmd0aDt0MSsrKSJcdCI9PShsMD1UMVt0MV0pfHwi''@;'; put 'put ''XG4iPT1sMHx8IlxyIj09bDA/bzAoIkludmFsaWQgd2hpdGVzcGFjZSBpbiBhdXRob3JpdHkuIik6IjoiPT1sMCYmbnVsbD09PXRoaXMuaj90aGlzLmo9IiI6KGwwPW4obDApLG51bGwhPT10aGlzLmo/dGhpcy5qKz1sMDp0aGlzLkIrPWwwKTtUMT0iIn1lbHNle2lmKG51bGw9PXQxfHwiLyI9''@;'; put 'put ''PXQxfHwiXFwiPT10MXx8Ij8iPT10MXx8IiMiPT10MSl7bTAtPVQxLmxlbmd0aCxUMT0iIixrMT0iaG9zdCI7Y29udGludWV9VDErPXQxfWJyZWFrO2Nhc2UiZmlsZSBob3N0IjppZihudWxsPT10MXx8Ii8iPT10MXx8IlxcIj09dDF8fCI/Ij09dDF8fCIjIj09dDEpezIhPVQxLmxlbmd0aHx8''@;'; put 'put ''IUgxLnRlc3QoVDFbMF0pfHwiOiIhPVQxWzFdJiYifCIhPVQxWzFdPygwIT1UMS5sZW5ndGgmJih0aGlzLm89aS5jYWxsKHRoaXMsVDEpLFQxPSIiKSxrMT0icmVsYXRpdmUgcGF0aCBzdGFydCIpOmsxPSJyZWxhdGl2ZSBwYXRoIjtjb250aW51ZX0iXHQiPT10MXx8IlxuIj09dDF8fCJcciI9''@;'; put 'put ''PXQxP28wKCJJbnZhbGlkIHdoaXRlc3BhY2UgaW4gZmlsZSBob3N0LiIpOlQxKz10MTticmVhaztjYXNlImhvc3QiOmNhc2UiaG9zdG5hbWUiOmlmKCI6IiE9dDF8fEYwKXtpZihudWxsPT10MXx8Ii8iPT10MXx8IlxcIj09dDF8fCI/Ij09dDF8fCIjIj09dDEpe2lmKHRoaXMubz1pLmNhbGwo''@;'; put 'put ''dGhpcyxUMSksVDE9IiIsazE9InJlbGF0aXZlIHBhdGggc3RhcnQiLCQxKWJyZWFrIHQ7Y29udGludWV9Ilx0IiE9dDEmJiJcbiIhPXQxJiYiXHIiIT10MT8oIlsiPT10MT9GMD0hMDoiXSI9PXQxJiYoRjA9ITEpLFQxKz10MSk6bzAoIkludmFsaWQgY29kZSBwb2ludCBpbiBob3N0L2hvc3Ru''@;'; put 'put ''YW1lOiAiK3QxKX1lbHNlIGlmKHRoaXMubz1pLmNhbGwodGhpcyxUMSksVDE9IiIsazE9InBvcnQiLCJob3N0bmFtZSI9PSQxKWJyZWFrIHQ7YnJlYWs7Y2FzZSJwb3J0IjppZigvWzAtOV0vLnRlc3QodDEpKVQxKz10MTtlbHNle2lmKG51bGw9PXQxfHwiLyI9PXQxfHwiXFwiPT10MXx8Ij8i''@;'; put 'put ''PT10MXx8IiMiPT10MXx8JDEpe2lmKCIiIT1UMSYmKChUMT1wYXJzZUludChUMSwxMCkpIT1VW3RoaXMubF0mJih0aGlzLnY9VDErIiIpLFQxPSIiKSwkMSlicmVhayB0O2sxPSJyZWxhdGl2ZSBwYXRoIHN0YXJ0Ijtjb250aW51ZX0iXHQiPT10MXx8IlxuIj09dDF8fCJcciI9PXQxP28wKCJJ''@;'; put 'put ''bnZhbGlkIGNvZGUgcG9pbnQgaW4gcG9ydDogIit0MSk6KG0uY2FsbCh0aGlzKSx0aGlzLm09ITApfWJyZWFrO2Nhc2UicmVsYXRpdmUgcGF0aCBzdGFydCI6aWYoIlxcIj09dDEmJm8wKCInXFwnIG5vdCBhbGxvd2VkIGluIHBhdGguIiksazE9InJlbGF0aXZlIHBhdGgiLCIvIiE9dDEmJiJc''@;'; put 'put ''XCIhPXQxKWNvbnRpbnVlO2JyZWFrO2Nhc2UicmVsYXRpdmUgcGF0aCI6bnVsbCE9dDEmJiIvIiE9dDEmJiJcXCIhPXQxJiYoJDF8fCI/IiE9dDEmJiIjIiE9dDEpPyJcdCIhPXQxJiYiXG4iIT10MSYmIlxyIiE9dDEmJihUMSs9bih0MSkpOigiXFwiPT10MSYmbzAoIlxcIG5vdCBhbGxvd2Vk''@;'; put 'put ''IGluIHJlbGF0aXZlIHBhdGguIiksKGwwPUtbVDEudG9Mb3dlckNhc2UoKV0pJiYoVDE9bDApLCIuLiI9PVQxPyh0aGlzLnMucG9wKCksIi8iIT10MSYmIlxcIiE9dDEmJnRoaXMucy5wdXNoKCIiKSk6Ii4iPT1UMSYmIi8iIT10MSYmIlxcIiE9dDE/dGhpcy5zLnB1c2goIiIpOiIuIiE9VDEm''@;'; put 'put ''JigiZmlsZSI9PXRoaXMubCYmMD09dGhpcy5zLmxlbmd0aCYmMj09VDEubGVuZ3RoJiZIMS50ZXN0KFQxWzBdKSYmInwiPT1UMVsxXSYmKFQxPVQxWzBdKyI6IiksdGhpcy5zLnB1c2goVDEpKSxUMT0iIiwiPyI9PXQxPyh0aGlzLkE9Ij8iLGsxPSJxdWVyeSIpOiIjIj09dDEmJih0aGlzLkM9''@;'; put 'put ''IiMiLGsxPSJmcmFnbWVudCIpKTticmVhaztjYXNlInF1ZXJ5IjokMXx8IiMiIT10MT9udWxsIT10MSYmIlx0IiE9dDEmJiJcbiIhPXQxJiYiXHIiIT10MSYmKHRoaXMuQSs9cyh0MSkpOih0aGlzLkM9IiMiLGsxPSJmcmFnbWVudCIpO2JyZWFrO2Nhc2UiZnJhZ21lbnQiOm51bGwhPXQxJiYi''@;'; put 'put ''XHQiIT10MSYmIlxuIiE9dDEmJiJcciIhPXQxJiYodGhpcy5DKz10MSl9bTArK319ZnVuY3Rpb24gbSgpe3RoaXMuQj10aGlzLnZhPXRoaXMubD0iIix0aGlzLmo9bnVsbCx0aGlzLnY9dGhpcy5vPSIiLHRoaXMucz1bXSx0aGlzLkM9dGhpcy5BPSIiLHRoaXMuRz10aGlzLm09ITF9ZnVuY3Rp''@;'; put 'put ''b24gTChNMSwkMSl7dm9pZCAwPT09JDF8fCQxIGluc3RhbmNlb2YgTHx8KCQxPW5ldyBMKFN0cmluZygkMSkpKSx0aGlzLmc9TTEsbS5jYWxsKHRoaXMpLGQuY2FsbCh0aGlzLHRoaXMuZy5yZXBsYWNlKC9eWyBcdFxyXG5cZl0rfFsgXHRcclxuXGZdKyQvZywiIiksbnVsbCwkMSl9dmFyIEY9''@;'; put 'put ''ITE7dHJ5e3ZhciBHPW5ldyBVUkwoImIiLCJodHRwOi8vYSIpO0cucGF0aG5hbWU9ImMlMjBkIixGPSJodHRwOi8vYS9jJTIwZCI9PT1HLmhyZWZ9Y2F0Y2goTTEpe31pZighRil7dmFyIFU9T2JqZWN0LmNyZWF0ZShudWxsKTtVLmZ0cD0yMSxVLmZpbGU9MCxVLmdvcGhlcj03MCxVLmh0dHA9''@;'; put 'put ''ODAsVS5odHRwcz00NDMsVS53cz04MCxVLndzcz00NDM7dmFyIEs9T2JqZWN0LmNyZWF0ZShudWxsKTtLWyIlMmUiXT0iLiIsS1siLiUyZSJdPSIuLiIsS1siJTJlLiJdPSIuLiIsS1siJTJlJTJlIl09Ii4uIjt2YXIgSDE9L1thLXpBLVpdLyxRMT0vW2EtekEtWjAtOStcLS5dLztMLnByb3Rv''@;'; put 'put ''dHlwZT17dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ocmVmfSxnZXQgaHJlZigpe2lmKHRoaXMubSlyZXR1cm4gdGhpcy5nO3ZhciBNMT0iIjtyZXR1cm4oIiIhPXRoaXMuQnx8bnVsbCE9dGhpcy5qKSYmKE0xPXRoaXMuQisobnVsbCE9dGhpcy5qPyI6Iit0aGlzLmo6IiIpKyJA''@;'; put 'put ''IiksdGhpcy5wcm90b2NvbCsodGhpcy5HPyIvLyIrTTErdGhpcy5ob3N0OiIiKSt0aGlzLnBhdGhuYW1lK3RoaXMuQSt0aGlzLkN9LHNldCBocmVmKE0xKXttLmNhbGwodGhpcyksZC5jYWxsKHRoaXMsTTEpfSxnZXQgcHJvdG9jb2woKXtyZXR1cm4gdGhpcy5sKyI6In0sc2V0IHByb3RvY29s''@;'; put 'put ''KE0xKXt0aGlzLm18fGQuY2FsbCh0aGlzLE0xKyI6Iiwic2NoZW1lIHN0YXJ0Iil9LGdldCBob3N0KCl7cmV0dXJuIHRoaXMubT8iIjp0aGlzLnY/dGhpcy5vKyI6Iit0aGlzLnY6dGhpcy5vfSxzZXQgaG9zdChNMSl7IXRoaXMubSYmdGhpcy5HJiZkLmNhbGwodGhpcyxNMSwiaG9zdCIpfSxn''@;'; put 'put ''ZXQgaG9zdG5hbWUoKXtyZXR1cm4gdGhpcy5vfSxzZXQgaG9zdG5hbWUoTTEpeyF0aGlzLm0mJnRoaXMuRyYmZC5jYWxsKHRoaXMsTTEsImhvc3RuYW1lIil9LGdldCBwb3J0KCl7cmV0dXJuIHRoaXMudn0sc2V0IHBvcnQoTTEpeyF0aGlzLm0mJnRoaXMuRyYmZC5jYWxsKHRoaXMsTTEsInBv''@;'; put 'put ''cnQiKX0sZ2V0IHBhdGhuYW1lKCl7cmV0dXJuIHRoaXMubT8iIjp0aGlzLkc/Ii8iK3RoaXMucy5qb2luKCIvIik6dGhpcy52YX0sc2V0IHBhdGhuYW1lKE0xKXshdGhpcy5tJiZ0aGlzLkcmJih0aGlzLnM9W10sZC5jYWxsKHRoaXMsTTEsInJlbGF0aXZlIHBhdGggc3RhcnQiKSl9LGdldCBz''@;'; put 'put ''ZWFyY2goKXtyZXR1cm4gdGhpcy5tfHwhdGhpcy5BfHwiPyI9PXRoaXMuQT8iIjp0aGlzLkF9LHNldCBzZWFyY2goTTEpeyF0aGlzLm0mJnRoaXMuRyYmKHRoaXMuQT0iPyIsIj8iPT1NMVswXSYmKE0xPU0xLnNsaWNlKDEpKSxkLmNhbGwodGhpcyxNMSwicXVlcnkiKSl9LGdldCBoYXNoKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMubXx8IXRoaXMuQ3x8IiMiPT10aGlzLkM/IiI6dGhpcy5DfSxzZXQgaGFzaChNMSl7dGhpcy5tfHwoTTE/KHRoaXMuQz0iIyIsIiMiPT1NMVswXSYmKE0xPU0xLnNsaWNlKDEpKSxkLmNhbGwodGhpcyxNMSwiZnJhZ21lbnQiKSk6dGhpcy5DPSIiKX0sZ2V0IG9yaWdpbigp''@;'; put 'put ''e3ZhciBNMTtpZih0aGlzLm18fCF0aGlzLmwpcmV0dXJuIiI7c3dpdGNoKHRoaXMubCl7Y2FzZSJkYXRhIjpjYXNlImZpbGUiOmNhc2UiamF2YXNjcmlwdCI6Y2FzZSJtYWlsdG8iOnJldHVybiJudWxsIn1yZXR1cm4oTTE9dGhpcy5ob3N0KT90aGlzLmwrIjovLyIrTTE6IiJ9fTt2YXIgajE9''@;'; put 'put ''dC5VUkw7ajEmJihMLmNyZWF0ZU9iamVjdFVSTD1mdW5jdGlvbihNMSl7cmV0dXJuIGoxLmNyZWF0ZU9iamVjdFVSTC5hcHBseShqMSxhcmd1bWVudHMpfSxMLnJldm9rZU9iamVjdFVSTD1mdW5jdGlvbihNMSl7ajEucmV2b2tlT2JqZWN0VVJMKE0xKX0pLHQuVVJMPUx9fSh3aW5kb3cpO3Zh''@;'; put 'put ''ciBuYT13aW5kb3cuY3VzdG9tRWxlbWVudHMsY2E9ITEsemU9bnVsbDtmdW5jdGlvbiBFdCgpe3dpbmRvdy5IVE1MVGVtcGxhdGVFbGVtZW50LmJvb3RzdHJhcCYmd2luZG93LkhUTUxUZW1wbGF0ZUVsZW1lbnQuYm9vdHN0cmFwKHdpbmRvdy5kb2N1bWVudCksemUmJnplKCksY2E9ITAsd2lu''@;'; put 'put ''ZG93LldlYkNvbXBvbmVudHMucmVhZHk9ITAsZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIldlYkNvbXBvbmVudHNSZWFkeSIse2J1YmJsZXM6ITB9KSl9bmEucG9seWZpbGxXcmFwRmx1c2hDYWxsYmFjayYmbmEucG9seWZpbGxXcmFwRmx1c2hDYWxsYmFjayhmdW5j''@;'; put 'put ''dGlvbih0KXt6ZT10LGNhJiZ0KCl9KSwiY29tcGxldGUiIT09ZG9jdW1lbnQucmVhZHlTdGF0ZT8od2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLEV0KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsZnVuY3Rpb24oKXt3aW5kb3cucmVtb3ZlRXZlbnRM''@;'; put 'put ''aXN0ZW5lcigibG9hZCIsRXQpLEV0KCl9KSk6RXQoKX0uY2FsbCh0aGlzKSxmdW5jdGlvbihYLEYxKXtpZigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPUYxKCk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5l''@;'; put 'put ''JiZkZWZpbmUuYW1kKWRlZmluZShbXSxGMSk7ZWxzZXt2YXIgayxBPUYxKCk7Zm9yKGsgaW4gQSkoIm9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHM6WClba109QVtrXX19KHRoaXMsZnVuY3Rpb24oKXtyZXR1cm4gRjE9eyIuL3Byb2plY3RzL2ljb25zL3NyYy9jbHItaWNvbnMtYXBp''@;'; put 'put ''LnRzIjpmdW5jdGlvbihBLGUsYyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLkNsYXJpdHlJY29uc0FwaT12b2lkIDA7dmFyIHI9YygiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc2hhcGUtdGVtcGxhdGUtb2JzZXJ2''@;'; put 'put ''ZXIudHMiKSxhPXt9O2Z1bmN0aW9uIG8oKXt9T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sImluc3RhbmNlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uc2luZ2xlSW5zdGFuY2U9by5zaW5nbGVJbnN0YW5jZT9vLnNpbmdsZUluc3RhbmNlOm5ldyBvfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3Vy''@;'; put 'put ''YWJsZTohMH0pLG8ucHJvdG90eXBlLnZhbGlkYXRlTmFtZT1mdW5jdGlvbihoKXtpZigwPT09aC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJTaGFwZSBuYW1lIG9yIGFsaWFzIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nISIpO2lmKC9ccy8udGVzdChoKSl0aHJvdyBuZXcgRXJyb3IoIlNo''@;'; put 'put ''YXBlIG5hbWUgb3IgYWxpYXMgbXVzdCBub3QgY29udGFpbiBhbnkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzISIpO3JldHVybiEwfSxvLnByb3RvdHlwZS5ub3JtYWxpemVTaGFwZU5hbWU9ZnVuY3Rpb24oaCl7cmV0dXJuIGgudG9Mb3dlckNhc2UoKX0sby5wcm90b3R5cGUuc2V0SWNvblRlbXBs''@;'; put 'put ''YXRlPWZ1bmN0aW9uKGgsZil7Zj1mLnRyaW0oKSx0aGlzLnZhbGlkYXRlTmFtZShoKSYmKGg9dGhpcy5ub3JtYWxpemVTaGFwZU5hbWUoaCksYVtoXSYmZGVsZXRlIGFbaF0sYVtoXT1mLHIuU2hhcGVUZW1wbGF0ZU9ic2VydmVyLmluc3RhbmNlLmVtaXRDaGFuZ2VzKGgsZikpfSxvLnByb3Rv''@;'; put 'put ''dHlwZS5zZXRJY29uQWxpYXNlcz1mdW5jdGlvbihoLGYsZyl7Zm9yKHZhciB1PTAscD1nO3U8cC5sZW5ndGg7dSsrKXt2YXIgdj1wW3VdO3RoaXMudmFsaWRhdGVOYW1lKHYpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoaCx2LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaFtmXX0sZW51bWVyYWJs''@;'; put 'put ''ZTohMCxjb25maWd1cmFibGU6ITB9KX19LG8ucHJvdG90eXBlLmFkZD1mdW5jdGlvbihoKXtpZigib2JqZWN0IiE9dHlwZW9mIGgpdGhyb3cgbmV3IEVycm9yKCdUaGUgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QgbGl0ZXJhbCBwYXNzZWQgaW4gdGhlIGZvbGxvd2luZyBwYXR0ZXJuOlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIHsgInNoYXBlLW5hbWUiOiAic2hhcGUtdGVtcGxhdGUiIH0nKTtmb3IodmFyIGYgaW4gaCloLmhhc093blByb3BlcnR5KGYpJiZ0aGlzLnNldEljb25UZW1wbGF0ZShmLGhbZl0pfSxvLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oaCl7cmV0dXJuISFhW3RoaXMubm9y''@;'; put 'put ''bWFsaXplU2hhcGVOYW1lKGgpXX0sby5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGgpe2lmKCFoKXJldHVybiBhO2lmKCJzdHJpbmciIT10eXBlb2YgaCl0aHJvdyBuZXcgVHlwZUVycm9yKCJPbmx5IHN0cmluZyBhcmd1bWVudCBpcyBhbGxvd2VkIGluIHRoaXMgbWV0aG9kLiIpO3JldHVybiBh''@;'; put 'put ''W3RoaXMubm9ybWFsaXplU2hhcGVOYW1lKGgpXX0sby5wcm90b3R5cGUuYWxpYXM9ZnVuY3Rpb24oaCl7aWYoIm9iamVjdCIhPXR5cGVvZiBoKXRocm93IG5ldyBFcnJvcignVGhlIGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0IGxpdGVyYWwgcGFzc2VkIGluIHRoZSBmb2xsb3dpbmcgcGF0''@;'; put 'put ''dGVybjpcbiAgICAgICAgICAgICAgICB7ICJzaGFwZS1uYW1lIjogWyJhbGlhcy1uYW1lIiwgLi4uXSB9Jyk7Zm9yKHZhciBmIGluIGgpaWYoaC5oYXNPd25Qcm9wZXJ0eShmKSl7aWYoIWEuaGFzT3duUHJvcGVydHkoZikpdGhyb3cgbmV3IEVycm9yKCdBbiBpY29uICInK2YrIlwiIHlvdSBh''@;'; put 'put ''cmUgdHJ5aW5nIHRvIHNldCBhbGlhc2VzIHRvIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIENsYXJpdHkgSWNvbnMgc2V0cyEiKTt0aGlzLnNldEljb25BbGlhc2VzKGEsZixoW2ZdKX19LGUuQ2xhcml0eUljb25zQXBpPWM9b30sIi4vcHJvamVjdHMvaWNvbnMvc3JjL2Nsci1pY29ucy1lbGVtZW50''@;'; put 'put ''LnRzIjpmdW5jdGlvbihBLGUsbCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLkNsYXJpdHlJY29uRWxlbWVudD12b2lkIDA7dmFyIHI9bCgiLi9wcm9qZWN0cy9pY29ucy9zcmMvY2xyLWljb25zLWFwaS50cyIpLGE9bCgi''@;'; put 'put ''Li9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc2hhcGUtdGVtcGxhdGUtb2JzZXJ2ZXIudHMiKSxjPTAsbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7by5jbGFzc05hbWU9ImlzLW9mZi1zY3JlZW4iO3ZhciBoPWZ1bmN0aW9uKCl7cmV0dXJuIEhUTUxFbGVtZW50LmFwcGx5KHRo''@;'; put 'put ''aXMsYXJndW1lbnRzKX07ZnVuY3Rpb24gZigpe3ZhciBnPWguYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBnLmNsckljb25VbmlxSWQ9Il9jbHJfaWNvbl8iK2MsYysrLGd9Im9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYoaD1mdW5jdGlvbigpe3JldHVybiBSZWZsZWN0LmNvbnN0cnVj''@;'; put 'put ''dChIVE1MRWxlbWVudCxhcmd1bWVudHMsdGhpcy5jb25zdHJ1Y3Rvcil9KSwoZS5DbGFyaXR5SWNvbkVsZW1lbnQ9Zikub2JzZXJ2ZWRBdHRyaWJ1dGVzPVsic2hhcGUiLCJzaXplIiwidGl0bGUiXSwoKGYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJvdG90eXBlLHtj''@;'; put 'put ''b25zdHJ1Y3Rvcjp7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ9fSkpLmNvbnN0cnVjdG9yPWYpLnByb3RvdHlwZS5fYXBwZW5kQ3VzdG9tVGl0bGU9ZnVuY3Rpb24oKXt2YXIgZz1vLmNsb25lTm9kZSghMSk7Zy5pZD10aGlzLmNsckljb25VbmlxSWQsZy50ZXh0Q29udGVu''@;'; put 'put ''dD10aGlzLmN1cnJlbnRUaXRsZUF0dHJWYWwsdGhpcy5hcHBlbmRDaGlsZChnKX0sZi5wcm90b3R5cGUuX3NldEljb25TaXplPWZ1bmN0aW9uKGcpeyFOdW1iZXIoZyl8fE51bWJlcihnKTwwPyh0aGlzLnN0eWxlLndpZHRoPW51bGwsdGhpcy5zdHlsZS5oZWlnaHQ9bnVsbCk6KHRoaXMuc3R5''@;'; put 'put ''bGUud2lkdGg9ZysicHgiLHRoaXMuc3R5bGUuaGVpZ2h0PWcrInB4Iil9LGYucHJvdG90eXBlLl9ub3JtYWxpemVTaGFwZT1mdW5jdGlvbihnKXtyZXR1cm4gZy5zcGxpdCgvXHMvKVswXS50b0xvd2VyQ2FzZSgpfSxmLnByb3RvdHlwZS5jb25uZWN0ZWRDYWxsYmFjaz1mdW5jdGlvbigpe3Zh''@;'; put 'put ''ciBnLHU9dGhpcztpZih0aGlzLmdldEF0dHJpYnV0ZSgicm9sZSIpfHx0aGlzLnNldEF0dHJpYnV0ZSgicm9sZSIsIm5vbmUiKSx0aGlzLmhhc0F0dHJpYnV0ZSgic2l6ZSIpJiYoZz10aGlzLmdldEF0dHJpYnV0ZSgic2l6ZSIpLHRoaXMuY3VycmVudFNpemVBdHRyVmFsIT09ZyYmKHRoaXMu''@;'; put 'put ''Y3VycmVudFNpemVBdHRyVmFsPWcsdGhpcy5fc2V0SWNvblNpemUoZykpKSx0aGlzLmhhc0F0dHJpYnV0ZSgic2hhcGUiKSl7dmFyIHA9dGhpcy5fbm9ybWFsaXplU2hhcGUodGhpcy5nZXRBdHRyaWJ1dGUoInNoYXBlIikpO2lmKHRoaXMuX3NoYXBlVGVtcGxhdGVTdWJzY3JpcHRpb249YS5T''@;'; put 'put ''aGFwZVRlbXBsYXRlT2JzZXJ2ZXIuaW5zdGFuY2Uuc3Vic2NyaWJlVG8ocCxmdW5jdGlvbih2KXt1Ll9pbmplY3RUZW1wbGF0ZSh2KX0pLHRoaXMuY3VycmVudFNoYXBlQXR0clZhbD1wLCFyLkNsYXJpdHlJY29uc0FwaS5pbnN0YW5jZS5oYXModGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsKSly''@;'; put 'put ''ZXR1cm4gdm9pZCB0aGlzLl9pbmplY3RFcnJvclRlbXBsYXRlKCk7aWYoKHA9ci5DbGFyaXR5SWNvbnNBcGkuaW5zdGFuY2UuZ2V0KHRoaXMuY3VycmVudFNoYXBlQXR0clZhbCkpPT09dGhpcy5jdXJyZW50U2hhcGVUZW1wbGF0ZSlyZXR1cm47dGhpcy5jdXJyZW50U2hhcGVUZW1wbGF0ZT1w''@;'; put 'put ''fXRoaXMuaGFzQXR0cmlidXRlKCJ0aXRsZSIpJiYocD10aGlzLmdldEF0dHJpYnV0ZSgidGl0bGUiKSx0aGlzLmN1cnJlbnRUaXRsZUF0dHJWYWwhPT1wJiYodGhpcy5jdXJyZW50VGl0bGVBdHRyVmFsPXApLCF0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWwpfHx0aGlzLl9pbmplY3RUZW1wbGF0''@;'; put 'put ''ZSgpfSxmLnByb3RvdHlwZS5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s9ZnVuY3Rpb24oZyx1LHApe3ZhciB2PXRoaXM7aWYoInNpemUiPT09ZyYmdGhpcy5fc2V0SWNvblNpemUocCksInNoYXBlIj09PWcpe2lmKHRoaXMuY3VycmVudFNoYXBlQXR0clZhbD10aGlzLl9ub3JtYWxpemVTaGFw''@;'; put 'put ''ZShwKSx0aGlzLl9zaGFwZVRlbXBsYXRlU3Vic2NyaXB0aW9uJiYodGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbigpLHRoaXMuX3NoYXBlVGVtcGxhdGVTdWJzY3JpcHRpb249YS5TaGFwZVRlbXBsYXRlT2JzZXJ2ZXIuaW5zdGFuY2Uuc3Vic2NyaWJlVG8odGhpcy5jdXJyZW50U2hh''@;'; put 'put ''cGVBdHRyVmFsLGZ1bmN0aW9uKEgpe3YuX2luamVjdFRlbXBsYXRlKEgpfSkpLCFyLkNsYXJpdHlJY29uc0FwaS5pbnN0YW5jZS5oYXModGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsKSlyZXR1cm4gdm9pZCB0aGlzLl9pbmplY3RFcnJvclRlbXBsYXRlKCk7dGhpcy5jdXJyZW50U2hhcGVUZW1w''@;'; put 'put ''bGF0ZT1yLkNsYXJpdHlJY29uc0FwaS5pbnN0YW5jZS5nZXQodGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsKX0idGl0bGUiPT09ZyYmKHRoaXMuY3VycmVudFRpdGxlQXR0clZhbD1wLCF0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWwpfHx0aGlzLl9pbmplY3RUZW1wbGF0ZSgpfSxmLnByb3RvdHlw''@;'; put 'put ''ZS5kaXNjb25uZWN0ZWRDYWxsYmFjaz1mdW5jdGlvbigpe3RoaXMuX3NoYXBlVGVtcGxhdGVTdWJzY3JpcHRpb24mJnRoaXMuX3NoYXBlVGVtcGxhdGVTdWJzY3JpcHRpb24oKX0sZi5wcm90b3R5cGUuX3NldEFyaWFMYWJlbGxlZEJ5PWZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5nZXRBdHRyaWJ1''@;'; put 'put ''dGUoImFyaWEtbGFiZWxsZWRieSIpLHU9KHU9dGhpcy5xdWVyeVNlbGVjdG9yKCJzdmciKSl8fHRoaXM7Zz9nJiZnLmluZGV4T2YodGhpcy5jbHJJY29uVW5pcUlkKTwwJiZ1LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5IixnKyIgIit0aGlzLmNsckljb25VbmlxSWQpOnUuc2V0QXR0''@;'; put 'put ''cmlidXRlKCJhcmlhLWxhYmVsbGVkYnkiLHRoaXMuY2xySWNvblVuaXFJZCl9LGYucHJvdG90eXBlLl9pbmplY3RUZW1wbGF0ZT1mdW5jdGlvbihnKXtnJiZnIT09dGhpcy5jdXJyZW50U2hhcGVUZW1wbGF0ZSYmKHRoaXMuY3VycmVudFNoYXBlVGVtcGxhdGU9ZyksdGhpcy5pbm5lckhUTUw9''@;'; put 'put ''dGhpcy5jdXJyZW50U2hhcGVUZW1wbGF0ZSx0aGlzLmN1cnJlbnRUaXRsZUF0dHJWYWwmJih0aGlzLl9zZXRBcmlhTGFiZWxsZWRCeSgpLHRoaXMuX2FwcGVuZEN1c3RvbVRpdGxlKCkpfSxmLnByb3RvdHlwZS5faW5qZWN0RXJyb3JUZW1wbGF0ZT1mdW5jdGlvbigpe3RoaXMuY3VycmVudFNo''@;'; put 'put ''YXBlVGVtcGxhdGU9ci5DbGFyaXR5SWNvbnNBcGkuaW5zdGFuY2UuZ2V0KCJlcnJvciIpLHRoaXMuX2luamVjdFRlbXBsYXRlKCl9fSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvY2xyLWljb25zLXNmeC50cyI6ZnVuY3Rpb24oQSxlLGwpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5DbGFyaXR5SWNvbnM9dm9pZCAwO3ZhciByPWwoIi4vcHJvamVjdHMvaWNvbnMvc3JjL2luZGV4LnRzIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIkNsYXJpdHlJY29ucyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIHIuQ2xhcml0eUljb25zfX0pLGw9bCgiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2FsbC1zaGFwZXMudHMiKSxyLkNsYXJpdHlJY29ucy5hZGQobC5BbGxTaGFwZXMpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvaW5kZXgudHMiOmZ1bmN0aW9uKEEsZSxhKXsidXNlIHN0cmljdCI7''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuQ2xhcml0eUljb25zPXZvaWQgMDt2YXIgYz1hKCIuL3Byb2plY3RzL2ljb25zL3NyYy9jbHItaWNvbnMtYXBpLnRzIikscj1hKCIuL3Byb2plY3RzL2ljb25zL3NyYy9jbHItaWNvbnMtZWxlbWVudC50''@;'; put 'put ''cyIpO2E9YSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NvcmUtc2hhcGVzLnRzIiksKGUuQ2xhcml0eUljb25zPWM9Yy5DbGFyaXR5SWNvbnNBcGkuaW5zdGFuY2UpLmFkZChhLkNvcmVTaGFwZXMpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYod2luZG93Lmhhc093blByb3Bl''@;'; put 'put ''cnR5KCJDbGFyaXR5SWNvbnMiKXx8KHdpbmRvdy5DbGFyaXR5SWNvbnM9YyksY3VzdG9tRWxlbWVudHMuZ2V0KCJjbHItaWNvbiIpfHxjdXN0b21FbGVtZW50cy5kZWZpbmUoImNsci1pY29uIixyLkNsYXJpdHlJY29uRWxlbWVudCkpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2Fs''@;'; put 'put ''bC1zaGFwZXMudHMiOmZ1bmN0aW9uKEEsZSx1KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuQWxsU2hhcGVzPXZvaWQgMDt2YXIgcj11KCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY2hhcnQtc2hhcGVzLnRzIiks''@;'; put 'put ''YT11KCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29tbWVyY2Utc2hhcGVzLnRzIiksYz11KCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMiKSxvPXUoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9lc3NlbnRpYWwtc2hhcGVzLnRzIiksaD11KCIu''@;'; put 'put ''L3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvbWVkaWEtc2hhcGVzLnRzIiksZj11KCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvc29jaWFsLXNoYXBlcy50cyIpLGc9dSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3RlY2hub2xvZ3ktc2hhcGVzLnRzIikscD11KCIuL3Byb2pl''@;'; put 'put ''Y3RzL2ljb25zL3NyYy9zaGFwZXMvdGV4dC1lZGl0LXNoYXBlcy50cyIpLHY9KHU9dSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3RyYXZlbC1zaGFwZXMudHMiKSxwPVtjLkNvcmVTaGFwZXMsYS5Db21tZXJjZVNoYXBlcyxvLkVzc2VudGlhbFNoYXBlcyxoLk1lZGlhU2hhcGVzLGYu''@;'; put 'put ''U29jaWFsU2hhcGVzLGcuVGVjaG5vbG9neVNoYXBlcyx1LlRyYXZlbFNoYXBlcyxyLkNoYXJ0U2hhcGVzLHAuVGV4dEVkaXRTaGFwZXNdLHt9KTtlLkFsbFNoYXBlcz12O2Zvcih2YXIgSD0wLEM9cDtIPEMubGVuZ3RoO0grKyl7dmFyIFYsUz1DW0hdO2ZvcihWIGluIFMpUy5oYXNPd25Qcm9w''@;'; put 'put ''ZXJ0eShWKSYmKHZbVl09U1tWXSl9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5oYXNPd25Qcm9wZXJ0eSgiQ2xhcml0eUljb25zIikmJndpbmRvdy5DbGFyaXR5SWNvbnMuYWRkKHYpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NoYXJ0LXNoYXBlcy50cyI6ZnVu''@;'; put 'put ''Y3Rpb24oQSxlLGEpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5DaGFydFNoYXBlcz1lLkNsclNoYXBlQmVsbEN1cnZlPWUuQ2xyU2hhcGVUaWNrQ2hhcnQ9ZS5DbHJTaGFwZVNjYXR0ZXJQbG90PWUuQ2xyU2hhcGVQaWVD''@;'; put 'put ''aGFydD1lLkNsclNoYXBlTGluZUNoYXJ0PWUuQ2xyU2hhcGVIZWF0TWFwPWUuQ2xyU2hhcGVHcmlkQ2hhcnQ9ZS5DbHJTaGFwZUN1cnZlQ2hhcnQ9ZS5DbHJTaGFwZUNsb3VkQ2hhcnQ9ZS5DbHJTaGFwZUJ1YmJsZUNoYXJ0PWUuQ2xyU2hhcGVCb3hQbG90PWUuQ2xyU2hhcGVCYXJDaGFydD1l''@;'; put 'put ''LkNsclNoYXBlQXhpc0NoYXJ0PXZvaWQgMDt2YXIgcj1hKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyIpO2E9YSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKSxlLkNsclNoYXBlQXhpc0NoYXJ0PSgwLGEu''@;'; put 'put ''Y2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1''@;'; put 'put ''IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTSA2LjAwNyAyNi43MzEgTCAyNy43MyAyNi43MyBDIDI4LjQ5''@;'; put 'put ''IDI2LjY3IDI4LjkxIDI1LjggMjguNDcgMjUuMTcgQyAyOC4zIDI0LjkyIDI4LjAzIDI0Ljc2IDI3LjczIDI0Ljc0IEwgOC4wMDEgMjQuNzM2IEwgOC4wMSAxMS4wMSBDIDguMDEgMTAuMjMgNy4xNyA5Ljc1IDYuNSAxMC4xNCBDIDYuMTkgMTAuMzEgNiAxMC42NSA2IDExLjAxIEwgNi4wMDcg''@;'; put 'put ''MjYuNzMxIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzNCA3IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1''@;'; put 'put ''IEwgMzIgNSBDIDMzLjEwNSA1IDM0IDUuODk2IDM0IDcgWiBNIDYuMDA3IDI2LjczMSBMIDI3LjczIDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAyNS4xNyBDIDI4LjMgMjQuOTIgMjguMDMgMjQuNzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAyNC43MzYgTCA4LjAxIDExLjAx''@;'; put 'put ''IEMgOC4wMSAxMC4yMyA3LjE3IDkuNzUgNi41IDEwLjE0IEMgNi4xOSAxMC4zMSA2IDEwLjY1IDYgMTEuMDEgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkg''@;'; put 'put ''TCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNCAz''@;'; put 'put ''MSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0gNi4wMDcgMjYuNzMxIEwgMjcuNzMg''@;'; put 'put ''MjYuNzMgQyAyOC40OSAyNi42NyAyOC45MSAyNS44IDI4LjQ3IDI1LjE3IEMgMjguMyAyNC45MiAyOC4wMyAyNC43NiAyNy43MyAyNC43NCBMIDguMDAxIDI0LjczNiBMIDguMDEgMTEuMDEgQyA4LjAxIDEwLjIzIDcuMTcgOS43NSA2LjUgMTAuMTQgQyA2LjE5IDEwLjMxIDYgMTAuNjUgNiAx''@;'; put 'put ''MS4wMSBMIDYuMDA3IDI2LjczMSBaIi8+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDM0IDEyLjM0IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjIuNTcgNSBDIDIxLjk2OSA5LjIzMyAy''@;'; put 'put ''NS4wNSAxMy4xIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjYgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDYuMDA3IDI2LjczMSBMIDI3LjczIDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAyNS4xNyBDIDI4LjMgMjQuOTIgMjguMDMgMjQu''@;'; put 'put ''NzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAyNC43MzYgTCA4LjAxIDExLjAxIEMgOC4wMSAxMC4yMyA3LjE3IDkuNzUgNi41IDEwLjE0IEMgNi4xOSAxMC4zMSA2IDEwLjY1IDYgMTEuMDEgWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''Mi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAy''@;'; put 'put ''Ljg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMjAuNzg2IDcgTCA0IDcgTCA0IDI5IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTSA2LjAwNyAyNi43MzEgTCAyNy43MyAyNi43MyBDIDI4LjQ5IDI2LjY3IDI4LjkxIDI1LjggMjguNDcgMjUuMTcgQyAyOC4zIDI0LjkyIDI4LjAzIDI0Ljc2IDI3LjczIDI0Ljc0IEwgOC4wMDEgMjQuNzM2IEwgOC4wMSAxMS4wMSBDIDgu''@;'; put 'put ''MDEgMTAuMjMgNy4xNyA5Ljc1IDYuNSAxMC4xNCBDIDYuMTkgMTAuMzEgNiAxMC42NSA2IDExLjAxIEwgNi4wMDcgMjYuNzMxIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0g''@;'; put 'put ''MjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0''@;'; put 'put ''Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQg''@;'; put 'put ''MTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSA2LjAwNyAyNi43MzEgTCAyNy43MyAyNi43MyBDIDI4LjQ5IDI2LjY3IDI4LjkxIDI1LjggMjguNDcgMjUuMTcgQyAyOC4zIDI0LjkyIDI4LjAzIDI0''@;'; put 'put ''Ljc2IDI3LjczIDI0Ljc0IEwgOC4wMDEgMjQuNzM2IEwgOC4wMSAxMS4wMSBDIDguMDEgMTAuMjMgNy4xNyA5Ljc1IDYuNSAxMC4xNCBDIDYuMTkgMTAuMzEgNiAxMC42NSA2IDExLjAxIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''Mi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAz''@;'; put 'put ''NC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz4nKSxlLkNsclNoYXBlQmFyQ2hhcnQ9''@;'; put 'put ''KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsNUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjdBMiwyLDAsMCwwLDMyLDVaTTQsMjlWN0gzMlYyOVoiPjwv''@;'; put 'put ''cGF0aD5cbiAgPHBhdGggZD0iTSA3IDEwIEwgMTMgMTAgTCAxMyAyNiBMIDExLjQgMjYgTCAxMS40IDExLjYgTCA4LjYgMTEuNiBMIDguNiAyNiBMIDcgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxNSAxOSBM''@;'; put 'put ''IDIxIDE5IEwgMjEgMjYgTCAxOS40IDI2IEwgMTkuNCAyMC42IEwgMTYuNiAyMC42IEwgMTYuNiAyNiBMIDE1IDI2IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjMgMTYgTCAyOSAxNiBMIDI5IDI2IEwgMjcuNCAy''@;'; put 'put ''NiBMIDI3LjQgMTcuNiBMIDI0LjYgMTcuNiBMIDI0LjYgMjYgTCAyMyAyNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBD''@;'; put 'put ''IDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44OTUgMzQgNyBaIE0gNyAyNiBMIDEzIDI2IEwgMTMgMTAgTCA3IDEwIFogTSAxNSAyNiBMIDIx''@;'; put 'put ''IDI2IEwgMjEgMTkgTCAxNSAxOSBaIE0gMjMgMjYgTCAyOSAyNiBMIDI5IDE2IEwgMjMgMTYgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0''@;'; put 'put ''IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAz''@;'; put 'put ''NCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTAgTCAxMyAxMCBMIDEzIDI2IEwgMTEuNCAyNiBMIDExLjQgMTEuNiBMIDguNiAxMS42IEwgOC42IDI2IEwgNyAyNiBaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxNSAxOSBMIDIxIDE5IEwgMjEgMjYgTCAxOS40IDI2IEwgMTkuNCAyMC42IEwgMTYuNiAyMC42IEwgMTYuNiAyNiBMIDE1IDI2IFoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDIzIDE2IEwgMjkgMTYgTCAyOSAyNiBMIDI3LjQgMjYgTCAyNy40IDE3LjYgTCAyNC42IDE3LjYgTCAyNC42IDI2IEwgMjMgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzQgMTIuMzQgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUg''@;'; put 'put ''NSA0IDUgTCAyMi41NyA1IEMgMjEuOTY5IDkuMjMzIDI1LjA1IDEzLjEgMjkuMzEgMTMuNDYgTCAzMC4zMiAxMy40OCBDIDMxLjYyNSAxMy40MjkgMzIuODk1IDEzLjAzNiAzNCAxMi4zNCBaIE0gNyAyNiBMIDEzIDI2IEwgMTMgMTAgTCA3IDEwIFogTSAxNSAyNiBMIDIxIDI2IEwgMjEgMTkg''@;'; put 'put ''TCAxNSAxOSBaIE0gMjMgMjYgTCAyOSAyNiBMIDI5IDE2IEwgMjMgMTYgWiI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1''@;'; put 'put ''IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gNyAxMCBMIDEzIDEwIEwgMTMgMjYgTCAxMS40IDI2IEwgMTEuNCAxMS42IEwgOC42IDExLjYgTCA4LjYgMjYgTCA3IDI2IFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTUgMTkgTCAyMSAxOSBMIDIxIDI2IEwgMTkuNCAyNiBMIDE5LjQgMjAuNiBMIDE2LjYgMjAuNiBMIDE2LjYgMjYgTCAxNSAyNiBaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDIzIDE2IEwgMjkgMTYgTCAyOSAyNiBMIDI3LjQgMjYgTCAyNy40IDE3LjYgTCAyNC42IDE3LjYgTCAyNC42IDI2IEwgMjMgMjYgWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEu''@;'; put 'put ''MTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44''@;'; put 'put ''MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0''@;'; put 'put ''ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2''@;'; put 'put ''NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSA3IDI2IEwgMTMgMjYgTCAxMyAxMCBMIDcgMTAgWiBNIDE1IDI2IEwgMjEgMjYgTCAyMSAxOSBMIDE1IDE5IFogTSAyMyAyNiBMIDI5IDI2IEwgMjkgMTYgTCAyMyAxNiBa''@;'; put 'put ''Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAx''@;'; put 'put ''IEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMg''@;'; put 'put ''MjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksZS5DbHJTaGFwZUJveFBsb3Q9KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsNUg0QTIsMiwwLDAsMCwyLDdW''@;'; put 'put ''MjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjdBMiwyLDAsMCwwLDMyLDVaTTQsMjlWN0gzMlYyOVoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDEyIEwgMTcgMTIgTCAxNyAyNiBMIDcgMjYgTCA3IDEyIFogTSA4LjYgMjQuNCBMIDE1LjQgMjQuNCBMIDE1LjQgMTguOCBMIDgu''@;'; put 'put ''NiAxOC44IEwgOC42IDI0LjQgWiBNIDE1LjQgMTMuNiBMIDguNiAxMy42IEwgOC42IDE3LjIgTCAxNS40IDE3LjIgTCAxNS40IDEzLjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxOSAyNCBMIDI5IDI0IEwgMjkg''@;'; put 'put ''MTAgTCAxOSAxMCBMIDE5IDI0IFogTSAyMC42IDExLjYgTCAyNy40IDExLjYgTCAyNy40IDE3LjIgTCAyMC42IDE3LjIgTCAyMC42IDExLjYgWiBNIDI3LjQgMjIuNCBMIDIwLjYgMjIuNCBMIDIwLjYgMTguOCBMIDI3LjQgMTguOCBMIDI3LjQgMjIuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMyI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBD''@;'; put 'put ''IDIgNS44OTUgMi44OTUgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44OTUgMzQgNyBaIE0gNyAyNiBMIDE3IDI2IEwgMTcgMTIgTCA3IDEyIFogTSA5IDE5IEwgMTUgMTkgTCAxNSAyNCBMIDkgMjQgWiBNIDE1IDE3IEwgOSAxNyBMIDkgMTQgTCAxNSAxNCBaIE0gMTkgMjQgTCAyOSAy''@;'; put 'put ''NCBMIDI5IDEwIEwgMTkgMTAgWiBNIDIxIDEyIEwgMjcgMTIgTCAyNyAxNyBMIDIxIDE3IFogTSAyNyAyMiBMIDIxIDIyIEwgMjEgMTkgTCAyNyAxOSBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIg''@;'; put 'put ''ZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44''@;'; put 'put ''OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gNyAxMiBMIDE3IDEyIEwgMTcgMjYgTCA3IDI2IEwgNyAxMiBaIE0gOC42IDI0''@;'; put 'put ''LjQgTCAxNS40IDI0LjQgTCAxNS40IDE4LjggTCA4LjYgMTguOCBMIDguNiAyNC40IFogTSAxNS40IDEzLjYgTCA4LjYgMTMuNiBMIDguNiAxNy4yIEwgMTUuNCAxNy4yIEwgMTUuNCAxMy42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJh''@;'; put 'put ''ZGdlZCI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE5IDEwIEwgMjMuNzI4IDEwIEMgMjQuMTA1IDEwLjU5NiAyNC41NjQgMTEuMTM1IDI1LjA5IDExLjYgTCAyMC42IDExLjYgTCAyMC42IDE3LjIgTCAyNy40IDE3LjIgTCAyNy40IDEyLjk4NyBDIDI3LjkwOSAxMy4xNzcgMjguNDQ1IDEzLjMx''@;'; put 'put ''MyAyOSAxMy4zODcgTCAyOSAyNCBMIDE5IDI0IFogTSAyNy40IDE4LjggTCAyMC42IDE4LjggTCAyMC42IDIyLjQgTCAyNy40IDIyLjQgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0g''@;'; put 'put ''MzQgMTIuMzQgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMi41NyA1IEMgMjIuMzEyIDYuODE3IDIyLjczMiA4LjU2NiAyMy42MzMgMTAgTCAxOSAxMCBMIDE5''@;'; put 'put ''IDI0IEwgMjkgMjQgTCAyOSAxMy40MjcgQyAyOS4xMDMgMTMuNDQgMjkuMjA2IDEzLjQ1MSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI1IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSA3IDI2IEwgMTcgMjYgTCAxNyAxMiBMIDcgMTIgWiBNIDkgMTkgTCAxNSAx''@;'; put 'put ''OSBMIDE1IDI0IEwgOSAyNCBaIE0gMTUgMTcgTCA5IDE3IEwgOSAxNCBMIDE1IDE0IFogTSAyMSAxMiBMIDI1LjQ3MiAxMiBDIDI1Ljk0IDEyLjM1MiAyNi40NTIgMTIuNjUgMjcgMTIuODg1IEwgMjcgMTcgTCAyMSAxNyBaIE0gMjcgMjIgTCAyMSAyMiBMIDIxIDE5IEwgMjcgMTkgWiI+PC9w''@;'; put 'put ''YXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMy''@;'; put 'put ''IDE1LjM1NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gNyAxMiBMIDE3IDEyIEwgMTcgMjYgTCA3IDI2IEwgNyAxMiBaIE0gOC42IDI0LjQgTCAxNS40IDI0LjQgTCAxNS40IDE4LjggTCA4LjYgMTguOCBMIDguNiAyNC40IFogTSAxNS40IDEzLjYgTCA4LjYgMTMuNiBM''@;'; put 'put ''IDguNiAxNy4yIEwgMTUuNCAxNy4yIEwgMTUuNCAxMy42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjkgMjQgTCAxOSAyNCBMIDE5IDE1LjM0NSBDIDE5LjAyMSAxNS4zNDggMjAu''@;'; put 'put ''NiAxNS4zNiAyMC42IDE1LjM2IEwgMjAuNiAxNy4yIEwgMjcuNCAxNy4yIEwgMjcuNCAxNS4zNiBMIDI5IDE1LjM1NyBMIDI5IDI0IFogTSAyNy40IDE4LjggTCAyMC42IDE4LjggTCAyMC42IDIyLjQgTCAyNy40IDIyLjQgTCAyNy40IDE4LjggWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIw''@;'; put 'put ''LjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0Ljgx''@;'; put 'put ''IDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkg''@;'; put 'put ''QyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAxOS4wMjggMTAgTCAxOSAxMCBMIDE5IDEwLjA0OCBMIDE3LjYyNSAxMi4zOTUgQyAxNi44MDcgMTMuNTgzIDE3''@;'; put 'put ''LjU3MSAxNS4xOTcgMTkgMTUuMzQ1IEwgMTkgMjQgTCAyOSAyNCBMIDI5IDE1LjM1NyBMIDM0IDE1LjM1NyBaIE0gNyAyNiBMIDE3IDI2IEwgMTcgMTIgTCA3IDEyIFogTSA5IDE5IEwgMTUgMTkgTCAxNSAyNCBMIDkgMjQgWiBNIDE1IDE3IEwgOSAxNyBMIDkgMTQgTCAxNSAxNCBaIE0gMjcg''@;'; put 'put ''MTcgTCAyMSAxNyBMIDIxIDE1LjM1NyBMIDI3IDE1LjM1NyBaIE0gMjcgMjIgTCAyMSAyMiBMIDIxIDE5IEwgMjcgMTkgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2''@;'; put 'put ''Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44''@;'; put 'put ''NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLGUuQ2xyU2hhcGVCdWJibGVDaGFydD0oMCxhLmNsckljb25TVkcpKCdcbiAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0gMzIgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDUgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNSAzNCAyOSBMIDM0IDcgQyAz''@;'; put 'put ''NCA1Ljg5NSAzMy4xMDUgNSAzMiA1IFogTSA0IDI5IEwgNCA3IEwgMzIgNyBMIDMyIDI5IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOSAxOCBDIDI5IDE5LjY1NyAyNy42NTcgMjEgMjYgMjEgQyAyNC4zNDMgMjEgMjMgMTkuNjU3IDIzIDE4IEMgMjMgMTYuMzQzIDI0LjM0MyAxNSAyNiAx''@;'; put 'put ''NSBDIDI3LjY1NyAxNSAyOSAxNi4zNDMgMjkgMTggWiBNIDI2IDE2LjYgQyAyNS4yMjcgMTYuNiAyNC42IDE3LjIyNyAyNC42IDE4IEMgMjQuNiAxOC43NzMgMjUuMjI3IDE5LjQgMjYgMTkuNCBDIDI2Ljc3MyAxOS40IDI3LjQgMTguNzczIDI3LjQgMTggQyAyNy40IDE3LjIyNyAyNi43NzMg''@;'; put 'put ''MTYuNiAyNiAxNi42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiByeD0iMyI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE1IDE0IEMgMTUgMTYuMjA5IDEzLjIwOSAxOCAxMSAxOCBDIDguNzkxIDE4IDcgMTYuMjA5IDcgMTQgQyA3IDExLjc5MSA4Ljc5MSAx''@;'; put 'put ''MCAxMSAxMCBDIDEzLjIwOSAxMCAxNSAxMS43OTEgMTUgMTQgWiBNIDExIDExLjYgQyA5LjY3NSAxMS42IDguNiAxMi42NzUgOC42IDE0IEMgOC42IDE1LjMyNSA5LjY3NSAxNi40IDExIDE2LjQgQyAxMi4zMjUgMTYuNCAxMy40IDE1LjMyNSAxMy40IDE0IEMgMTMuNCAxMi42NzUgMTIuMzI1''@;'; put 'put ''IDExLjYgMTEgMTEuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgcng9IjMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMSAyMyBDIDIxIDI0LjY1NyAxOS42NTcgMjYgMTggMjYgQyAxNi4zNDMgMjYgMTUgMjQuNjU3IDE1IDIzIEMgMTUgMjEuMzQzIDE2''@;'; put 'put ''LjM0MyAyMCAxOCAyMCBDIDE5LjY1NyAyMCAyMSAyMS4zNDMgMjEgMjMgWiBNIDE4IDIxLjYgQyAxNy4yMjcgMjEuNiAxNi42IDIyLjIyNyAxNi42IDIzIEMgMTYuNiAyMy43NzMgMTcuMjI3IDI0LjQgMTggMjQuNCBDIDE4Ljc3MyAyNC40IDE5LjQgMjMuNzczIDE5LjQgMjMgQyAxOS40IDIy''@;'; put 'put ''LjIyNyAxOC43NzMgMjEuNiAxOCAyMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiByeD0iMyI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAz''@;'; put 'put ''My4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44OTYgMzQgNyBaIE0gMTEgMTAgQyA4Ljc5MSAxMCA3IDExLjc5MSA3IDE0IEMgNyAxNi4yMDkgOC43OTEgMTggMTEg''@;'; put 'put ''MTggQyAxMy4yMDkgMTggMTUgMTYuMjA5IDE1IDE0IEMgMTUgMTEuNzkxIDEzLjIwOSAxMCAxMSAxMCBaIE0gMjYgMTUgQyAyNC4zNDMgMTUgMjMgMTYuMzQzIDIzIDE4IEMgMjMgMTkuNjU3IDI0LjM0MyAyMSAyNiAyMSBDIDI3LjY1NyAyMSAyOSAxOS42NTcgMjkgMTggQyAyOSAxNi4zNDMg''@;'; put 'put ''MjcuNjU3IDE1IDI2IDE1IFogTSAxOCAyMCBDIDE2LjM0MyAyMCAxNSAyMS4zNDMgMTUgMjMgQyAxNSAyNC42NTcgMTYuMzQzIDI2IDE4IDI2IEMgMTkuNjU3IDI2IDIxIDI0LjY1NyAyMSAyMyBDIDIxIDIxLjM0MyAxOS42NTcgMjAgMTggMjAgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIyLjU3''@;'; put 'put ''IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNCAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiI+PC9wYXRoPlxuICA8cGF0''@;'; put 'put ''aCBkPSJNIDI5IDE4IEMgMjkgMTkuNjU3IDI3LjY1NyAyMSAyNiAyMSBDIDI0LjM0MyAyMSAyMyAxOS42NTcgMjMgMTggQyAyMyAxNi4zNDMgMjQuMzQzIDE1IDI2IDE1IEMgMjcuNjU3IDE1IDI5IDE2LjM0MyAyOSAxOCBaIE0gMjYgMTYuNiBDIDI1LjIyNyAxNi42IDI0LjYgMTcuMjI3IDI0''@;'; put 'put ''LjYgMTggQyAyNC42IDE4Ljc3MyAyNS4yMjcgMTkuNCAyNiAxOS40IEMgMjYuNzczIDE5LjQgMjcuNCAxOC43NzMgMjcuNCAxOCBDIDI3LjQgMTcuMjI3IDI2Ljc3MyAxNi42IDI2IDE2LjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFk''@;'; put 'put ''Z2VkIiByeD0iMyI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE1IDE0IEMgMTUgMTYuMjA5IDEzLjIwOSAxOCAxMSAxOCBDIDguNzkxIDE4IDcgMTYuMjA5IDcgMTQgQyA3IDExLjc5MSA4Ljc5MSAxMCAxMSAxMCBDIDEzLjIwOSAxMCAxNSAxMS43OTEgMTUgMTQgWiBNIDExIDExLjYgQyA5LjY3''@;'; put 'put ''NSAxMS42IDguNiAxMi42NzUgOC42IDE0IEMgOC42IDE1LjMyNSA5LjY3NSAxNi40IDExIDE2LjQgQyAxMi4zMjUgMTYuNCAxMy40IDE1LjMyNSAxMy40IDE0IEMgMTMuNCAxMi42NzUgMTIuMzI1IDExLjYgMTEgMTEuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zLS1iYWRnZWQiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjEgMjMgQyAyMSAyNC42NTcgMTkuNjU3IDI2IDE4IDI2IEMgMTYuMzQzIDI2IDE1IDI0LjY1NyAxNSAyMyBDIDE1IDIxLjM0MyAxNi4zNDMgMjAgMTggMjAgQyAxOS42NTcgMjAgMjEgMjEuMzQzIDIx''@;'; put 'put ''IDIzIFogTSAxOCAyMS42IEMgMTcuMjI3IDIxLjYgMTYuNiAyMi4yMjcgMTYuNiAyMyBDIDE2LjYgMjMuNzczIDE3LjIyNyAyNC40IDE4IDI0LjQgQyAxOC43NzMgMjQuNCAxOS40IDIzLjc3MyAxOS40IDIzIEMgMTkuNCAyMi4yMjcgMTguNzczIDIxLjYgMTggMjEuNiBaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIHJ4PSIzIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1''@;'; put 'put ''Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzQgMTIuMzQgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBD''@;'; put 'put ''IDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMi41NyA1IEMgMjEuOTY5IDkuMjMzIDI1LjA1IDEzLjEgMjkuMzEgMTMuNDYgTCAzMC4zMiAxMy40OCBDIDMxLjYyNiAxMy40MjkgMzIuODk1IDEzLjAzNiAzNCAxMi4zNCBaIE0gMTEgMTAgQyA4Ljc5MSAxMCA3IDExLjc5MSA3IDE0IEMgNyAxNi4y''@;'; put 'put ''MDkgOC43OTEgMTggMTEgMTggQyAxMy4yMDkgMTggMTUgMTYuMjA5IDE1IDE0IEMgMTUgMTEuNzkxIDEzLjIwOSAxMCAxMSAxMCBaIE0gMjYgMTUgQyAyNC4zNDMgMTUgMjMgMTYuMzQzIDIzIDE4IEMgMjMgMTkuNjU3IDI0LjM0MyAyMSAyNiAyMSBDIDI3LjY1NyAyMSAyOSAxOS42NTcgMjkg''@;'; put 'put ''MTggQyAyOSAxNi4zNDMgMjcuNjU3IDE1IDI2IDE1IFogTSAxOCAyMCBDIDE2LjM0MyAyMCAxNSAyMS4zNDMgMTUgMjMgQyAxNSAyNC42NTcgMTYuMzQzIDI2IDE4IDI2IEMgMTkuNjU3IDI2IDIxIDI0LjY1NyAyMSAyMyBDIDIxIDIxLjM0MyAxOS42NTcgMjAgMTggMjAgWiI+PC9wYXRoPlxu''@;'; put 'put ''ICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1''@;'; put 'put ''NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjkgMTggQyAyOSAxOS42NTcgMjcuNjU3IDIxIDI2IDIxIEMgMjQuMzQzIDIxIDIzIDE5LjY1NyAyMyAxOCBDIDIzIDE2LjM0MyAyNC4zNDMgMTUgMjYgMTUgQyAyNy42NTcgMTUgMjkgMTYuMzQzIDI5IDE4IFogTSAyNiAx''@;'; put 'put ''Ni42IEMgMjUuMjI3IDE2LjYgMjQuNiAxNy4yMjcgMjQuNiAxOCBDIDI0LjYgMTguNzczIDI1LjIyNyAxOS40IDI2IDE5LjQgQyAyNi43NzMgMTkuNCAyNy40IDE4Ljc3MyAyNy40IDE4IEMgMjcuNCAxNy4yMjcgMjYuNzczIDE2LjYgMjYgMTYuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgcng9IjMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxNSAxNCBDIDE1IDE2LjIwOSAxMy4yMDkgMTggMTEgMTggQyA4Ljc5MSAxOCA3IDE2LjIwOSA3IDE0IEMgNyAxMS43OTEgOC43OTEgMTAgMTEgMTAgQyAxMy4yMDkgMTAg''@;'; put 'put ''MTUgMTEuNzkxIDE1IDE0IFogTSAxMSAxMS42IEMgOS42NzUgMTEuNiA4LjYgMTIuNjc1IDguNiAxNCBDIDguNiAxNS4zMjUgOS42NzUgMTYuNCAxMSAxNi40IEMgMTIuMzI1IDE2LjQgMTMuNCAxNS4zMjUgMTMuNCAxNCBDIDEzLjQgMTIuNjc1IDEyLjMyNSAxMS42IDExIDExLjYgWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjEgMjMgQyAyMSAyNC42NTcgMTkuNjU3IDI2IDE4IDI2IEMgMTYuMzQzIDI2IDE1IDI0LjY1NyAxNSAyMyBDIDE1IDIxLjM0MyAxNi4z''@;'; put 'put ''NDMgMjAgMTggMjAgQyAxOS42NTcgMjAgMjEgMjEuMzQzIDIxIDIzIFogTSAxOCAyMS42IEMgMTcuMjI3IDIxLjYgMTYuNiAyMi4yMjcgMTYuNiAyMyBDIDE2LjYgMjMuNzczIDE3LjIyNyAyNC40IDE4IDI0LjQgQyAxOC43NzMgMjQuNCAxOS40IDIzLjc3MyAxOS40IDIzIEMgMTkuNCAyMi4y''@;'; put 'put ''MjcgMTguNzczIDIxLjYgMTggMjEuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgcng9IjMiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5''@;'; put 'put ''IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUg''@;'; put 'put ''MTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMjQuNTc5IDE1LjM1NyBDIDIzLjYzOSAxNS44NjMgMjMgMTYuODU3IDIzIDE4IEMgMjMgMTkuNjU3IDI0LjM0MyAyMSAy''@;'; put 'put ''NiAyMSBDIDI3LjY1NyAyMSAyOSAxOS42NTcgMjkgMTggQyAyOSAxNi44NTcgMjguMzYxIDE1Ljg2MyAyNy40MjEgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSAxMSAxMCBDIDguNzkxIDEwIDcgMTEuNzkxIDcgMTQgQyA3IDE2LjIwOSA4Ljc5MSAxOCAxMSAxOCBDIDEzLjIwOSAxOCAxNSAxNi4y''@;'; put 'put ''MDkgMTUgMTQgQyAxNSAxMS43OTEgMTMuMjA5IDEwIDExIDEwIFogTSAxOCAyMCBDIDE2LjM0MyAyMCAxNSAyMS4zNDMgMTUgMjMgQyAxNSAyNC42NTcgMTYuMzQzIDI2IDE4IDI2IEMgMTkuNjU3IDI2IDIxIDI0LjY1NyAyMSAyMyBDIDIxIDIxLjM0MyAxOS42NTcgMjAgMTggMjAgWiI+PC9w''@;'; put 'put ''YXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIy''@;'; put 'put ''LjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3''@;'; put 'put ''IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLGUuQ2xyU2hhcGVDbG91ZENoYXJ0PSgwLGEuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDVINEEyLDIsMCwwLDAsMiw3VjI5''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY3QTIsMiwwLDAsMCwzMiw1Wk00LDI5VjdIMzJWMjlaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjAuOTcxIDExLjI0MyBDIDIzLjMxNCAxMy41ODYgMjIuMzY0IDE4LjMzNSAxOC44NDkgMjEuODQ5IEMgMTUuMzM0IDI1LjM2NCAxMC41''@;'; put 'put ''ODYgMjYuMzE0IDguMjQzIDIzLjk3IEMgNS44OTkgMjEuNjI3IDYuODQ5IDE2Ljg3OCAxMC4zNjQgMTMuMzY0IEMgMTMuODc5IDkuODQ5IDE4LjYyOCA4LjkgMjAuOTcxIDExLjI0MyBaIE0gMTEuNjM2IDE0LjYzNyBDIDguODI0IDE3LjQ0OSA3Ljg3NSAyMS4wNTggOS41MTUgMjIuNjk4IEMg''@;'; put 'put ''MTEuMTU1IDI0LjMzOCAxNC43NjQgMjMuMzg5IDE3LjU3NiAyMC41NzcgQyAyMC4zODggMTcuNzY1IDIxLjMzOCAxNC4xNTYgMTkuNjk3IDEyLjUxNiBDIDE4LjA1NyAxMC44NzYgMTQuNDQ4IDExLjgyNSAxMS42MzYgMTQuNjM3IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjggMjIgQyAyOCAyMy42NTcgMjYuNjU3IDI1IDI1IDI1IEMgMjMuMzQzIDI1IDIyIDIzLjY1NyAyMiAyMiBDIDIyIDIwLjM0MyAyMy4zNDMgMTkgMjUgMTkgQyAyNi42NTcgMTkgMjggMjAuMzQzIDI4IDIyIFogTSAyNSAyMC42IEMg''@;'; put 'put ''MjQuMjI3IDIwLjYgMjMuNiAyMS4yMjcgMjMuNiAyMiBDIDIzLjYgMjIuNzczIDI0LjIyNyAyMy40IDI1IDIzLjQgQyAyNS43NzMgMjMuNCAyNi40IDIyLjc3MyAyNi40IDIyIEMgMjYuNCAyMS4yMjcgMjUuNzczIDIwLjYgMjUgMjAuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMyIgeD0iNyI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIg''@;'; put 'put ''NS44OTUgMi44OTUgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44OTUgMzQgNyBaIE0gMTAuMzY0IDEzLjM2NCBDIDYuODQ5IDE2Ljg3OCA1Ljg5OSAyMS42MjcgOC4yNDMgMjMuOTcgQyAxMC41ODYgMjYuMzE0IDE1LjMzNCAyNS4zNjQgMTguODQ5IDIxLjg0OSBDIDIyLjM2NCAxOC4z''@;'; put 'put ''MzUgMjMuMzE0IDEzLjU4NiAyMC45NzEgMTEuMjQzIEMgMTguNjI4IDguOSAxMy44NzkgOS44NDkgMTAuMzY0IDEzLjM2NCBaIE0gMjUgMTkgQyAyMy4zNDMgMTkgMjIgMjAuMzQzIDIyIDIyIEMgMjIgMjMuNjU3IDIzLjM0MyAyNSAyNSAyNSBDIDI2LjY1NyAyNSAyOCAyMy42NTcgMjggMjIg''@;'; put 'put ''QyAyOCAyMC4zNDMgMjYuNjU3IDE5IDI1IDE5IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIyIEwgMzIgMjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUyNCA2LjY2''@;'; put 'put ''OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMzMSAyMi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQgMTIuMzQg''@;'; put 'put ''QyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMC45NzEgMTEuMjQzIEMgMjMuMzE0IDEzLjU4NiAyMi4zNjQgMTguMzM1IDE4Ljg0OSAyMS44NDkgQyAxNS4zMzQgMjUuMzY0IDEwLjU4NiAyNi4zMTQgOC4yNDMgMjMuOTcgQyA1''@;'; put 'put ''Ljg5OSAyMS42MjcgNi44NDkgMTYuODc4IDEwLjM2NCAxMy4zNjQgQyAxMy44NzkgOS44NDkgMTguNjI4IDguOSAyMC45NzEgMTEuMjQzIFogTSAxMS42MzYgMTQuNjM3IEMgOC44MjQgMTcuNDQ5IDcuODc1IDIxLjA1OCA5LjUxNSAyMi42OTggQyAxMS4xNTUgMjQuMzM4IDE0Ljc2NCAyMy4z''@;'; put 'put ''ODkgMTcuNTc2IDIwLjU3NyBDIDIwLjM4OCAxNy43NjUgMjEuMzM4IDE0LjE1NiAxOS42OTcgMTIuNTE2IEMgMTguMDU3IDEwLjg3NiAxNC40NDggMTEuODI1IDExLjYzNiAxNC42MzcgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2Vk''@;'; put 'put ''Ij48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjggMjIgQyAyOCAyMy42NTcgMjYuNjU3IDI1IDI1IDI1IEMgMjMuMzQzIDI1IDIyIDIzLjY1NyAyMiAyMiBDIDIyIDIwLjM0MyAyMy4zNDMgMTkgMjUgMTkgQyAyNi42NTcgMTkgMjggMjAuMzQzIDI4IDIyIFogTSAyNSAyMC42IEMgMjQuMjI2IDIw''@;'; put 'put ''LjYgMjMuNiAyMS4yMjYgMjMuNiAyMiBDIDIzLjYgMjIuNzczIDI0LjIyNiAyMy40IDI1IDIzLjQgQyAyNS43NzMgMjMuNCAyNi40IDIyLjc3MyAyNi40IDIyIEMgMjYuNCAyMS4yMjYgMjUuNzczIDIwLjYgMjUgMjAuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zLS1iYWRnZWQiIHg9IjciPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIyLjU3''@;'; put 'put ''IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI1IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSAxMC4zNjQgMTMuMzY0IEMgNi44NDkgMTYuODc4IDUuODk5IDIxLjYyNyA4LjI0MyAyMy45NyBDIDEwLjU4NiAyNi4z''@;'; put 'put ''MTQgMTUuMzM0IDI1LjM2NCAxOC44NDkgMjEuODQ5IEMgMjIuMzY0IDE4LjMzNSAyMy4zMTQgMTMuNTg2IDIwLjk3MSAxMS4yNDMgQyAxOC42MjggOC45IDEzLjg3OSA5Ljg0OSAxMC4zNjQgMTMuMzY0IFogTSAyNSAxOSBDIDIzLjM0MyAxOSAyMiAyMC4zNDMgMjIgMjIgQyAyMiAyMy42NTcg''@;'; put 'put ''MjMuMzQzIDI1IDI1IDI1IEMgMjYuNjU3IDI1IDI4IDIzLjY1NyAyOCAyMiBDIDI4IDIwLjM0MyAyNi42NTcgMTkgMjUgMTkgWiI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0i''@;'; put 'put ''MzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIg''@;'; put 'put ''MjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTguODQ5IDIxLjg0OSBDIDE1LjMzNCAyNS4zNjQgMTAuNTg2IDI2LjMx''@;'; put 'put ''NCA4LjI0MyAyMy45NyBDIDUuODk5IDIxLjYyNyA2Ljg0OSAxNi44NzggMTAuMzY0IDEzLjM2NCBDIDEzLjA0OSAxMC42NzkgMTYuNDUzIDkuNDkyIDE4Ljk1NiAxMC4xMjQgTCAxOC4wMDggMTEuNzQxIEMgMTYuMTggMTEuNTE4IDEzLjY5NSAxMi41NzggMTEuNjM2IDE0LjYzNyBDIDguODI0''@;'; put 'put ''IDE3LjQ0OSA3Ljg3NSAyMS4wNTggOS41MTUgMjIuNjk4IEMgMTEuMTU1IDI0LjMzOCAxNC43NjQgMjMuMzg5IDE3LjU3NiAyMC41NzcgQyAxOS4yMjggMTguOTI1IDIwLjIzNyAxNi45OTggMjAuNDU2IDE1LjM1NyBMIDIyLjIyIDE1LjM1NyBDIDIyLjAwNiAxNy40NzcgMjAuODM4IDE5Ljg2''@;'; put 'put ''MSAxOC44NDkgMjEuODQ5IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjggMjIgQyAyOCAyMy42NTcgMjYuNjU3IDI1IDI1IDI1IEMgMjMuMzQzIDI1IDIyIDIzLjY1NyAyMiAyMiBD''@;'; put 'put ''IDIyIDIwLjM0MyAyMy4zNDMgMTkgMjUgMTkgQyAyNi42NTcgMTkgMjggMjAuMzQzIDI4IDIyIFogTSAyNSAyMC42IEMgMjQuMjI2IDIwLjYgMjMuNiAyMS4yMjYgMjMuNiAyMiBDIDIzLjYgMjIuNzczIDI0LjIyNiAyMy40IDI1IDIzLjQgQyAyNS43NzMgMjMuNCAyNi40IDIyLjc3MyAyNi40''@;'; put 'put ''IDIyIEMgMjYuNCAyMS4yMjYgMjUuNzczIDIwLjYgMjUgMjAuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgeD0iNyI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAx''@;'; put 'put ''My4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45''@;'; put 'put ''NTggNSBMIDE4Ljk1NiAxMC4xMjQgQyAxNi40NTMgOS40OTIgMTMuMDQ5IDEwLjY3OSAxMC4zNjQgMTMuMzY0IEMgNi44NDkgMTYuODc4IDUuODk5IDIxLjYyNyA4LjI0MyAyMy45NyBDIDEwLjU4NiAyNi4zMTQgMTUuMzM0IDI1LjM2NCAxOC44NDkgMjEuODQ5IEMgMjAuODM4IDE5Ljg2MSAy''@;'; put 'put ''Mi4wMDYgMTcuNDc3IDIyLjIyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIE0gMjUgMTkgQyAyMy4zNDMgMTkgMjIgMjAuMzQzIDIyIDIyIEMgMjIgMjMuNjU3IDIzLjM0MyAyNSAyNSAyNSBDIDI2LjY1NyAyNSAyOCAyMy42NTcgMjggMjIgQyAyOCAyMC4zNDMgMjYuNjU3IDE5IDI1IDE5IFoiPjwv''@;'; put 'put ''cGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAy''@;'; put 'put ''Mi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41''@;'; put 'put ''NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD4nKSxlLkNsclNoYXBlQ3VydmVDaGFydD0oMCxhLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0gMzIgNSBMIDQgNSBDIDIuODk1IDUg''@;'; put 'put ''MiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDUgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNSAzNCAyOSBMIDM0IDcgQyAzNCA1Ljg5NSAzMy4xMDUgNSAzMiA1IFogTSA0IDI5IEwgNCA3IEwgMzIgNyBMIDMyIDI5IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0i''@;'; put 'put ''TSA3IDExLjggQyA2LjU1OCAxMS44IDYuMiAxMS40NDIgNi4yIDExIEMgNi4yIDEwLjU1OCA2LjU1OCAxMC4yIDcgMTAuMiBMIDEzIDEwLjIgQyAxNS40MDQgMTAuMiAxNi4zNjggMTEuOTA3IDE3LjY1MyAxNi40NzggQyAxNy42OTUgMTYuNjI4IDE3Ljc0NCAxNi44MDMgMTcuODM1IDE3LjEy''@;'; put 'put ''OSBDIDE3LjkwOSAxNy4zOTIgMTcuOTY0IDE3LjU4OCAxOC4wMTkgMTcuNzggQyAxOS4zMzIgMjIuMzc1IDIwLjU0OSAyNC4yIDIzIDI0LjIgTCAyOSAyNC4yIEMgMjkuNDQyIDI0LjIgMjkuOCAyNC41NTggMjkuOCAyNSBDIDI5LjggMjUuNDQyIDI5LjQ0MiAyNS44IDI5IDI1LjggTCAyMyAy''@;'; put 'put ''NS44IEMgMTkuNTM1IDI1LjggMTcuOTgxIDIzLjQ2OSAxNi40ODEgMTguMjIgQyAxNi40MjUgMTguMDI1IDE2LjM2OSAxNy44MjYgMTYuMjk1IDE3LjU2IEMgMTYuMjAzIDE3LjIzNCAxNi4xNTQgMTcuMDYgMTYuMTEzIDE2LjkxMSBDIDE1LjA0MyAxMy4xMDUgMTQuMzA1IDExLjggMTMgMTEu''@;'; put 'put ''OCBMIDcgMTEuOCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMx''@;'; put 'put ''IEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44OTYgMzQgNyBaIE0gMTMgMTIgQyAxNC44MTcgMTIgMTUuNjc0IDEzLjQ5OSAxNy4wMzkgMTguMjc1IEMgMTcuODEzIDIwLjk4NCAxOC4yMDEgMjIuMTE4''@;'; put 'put ''IDE4Ljg4MiAyMy4zMDkgQyAxOS44NyAyNS4wMzggMjEuMjA1IDI2IDIzIDI2IEwgMjkgMjYgQyAyOS41NTIgMjYgMzAgMjUuNTUyIDMwIDI1IEMgMzAgMjQuNDQ4IDI5LjU1MiAyNCAyOSAyNCBMIDIzIDI0IEMgMjEuMTgzIDI0IDIwLjMyNiAyMi41MDEgMTguOTYyIDE3LjcyNSBDIDE4LjE4''@;'; put 'put ''OCAxNS4wMTYgMTcuNzk5IDEzLjg4MiAxNy4xMTggMTIuNjkxIEMgMTYuMTMgMTAuOTYyIDE0Ljc5NSAxMCAxMyAxMCBMIDcgMTAgQyA2LjQ0OCAxMCA2IDEwLjQ0OCA2IDExIEMgNiAxMS41NTIgNi40NDggMTIgNyAxMiBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIu''@;'; put 'put ''ODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gNyAxMS44''@;'; put 'put ''IEMgNi41NTggMTEuOCA2LjIgMTEuNDQyIDYuMiAxMSBDIDYuMiAxMC41NTggNi41NTggMTAuMiA3IDEwLjIgTCAxMyAxMC4yIEMgMTUuNDA0IDEwLjIgMTYuMzY4IDExLjkwNyAxNy42NTMgMTYuNDc4IEMgMTcuNjk1IDE2LjYyOCAxNy43NDQgMTYuODAzIDE3LjgzNSAxNy4xMjkgQyAxNy45''@;'; put 'put ''MDkgMTcuMzkyIDE3Ljk2NCAxNy41ODggMTguMDE5IDE3Ljc4IEMgMTkuMzMyIDIyLjM3NSAyMC41NDkgMjQuMiAyMyAyNC4yIEwgMjkgMjQuMiBDIDI5LjQ0MiAyNC4yIDI5LjggMjQuNTU4IDI5LjggMjUgQyAyOS44IDI1LjQ0MiAyOS40NDIgMjUuOCAyOSAyNS44IEwgMjMgMjUuOCBDIDE5''@;'; put 'put ''LjUzNSAyNS44IDE3Ljk4MSAyMy40NjkgMTYuNDgxIDE4LjIyIEMgMTYuNDI1IDE4LjAyNSAxNi4zNjkgMTcuODI2IDE2LjI5NSAxNy41NiBDIDE2LjIwMyAxNy4yMzQgMTYuMTU0IDE3LjA2IDE2LjExMyAxNi45MTEgQyAxNS4wNDMgMTMuMTA1IDE0LjMwNSAxMS44IDEzIDExLjggTCA3IDEx''@;'; put 'put ''LjggWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5''@;'; put 'put ''PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzQgMTIuMzQgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAy''@;'; put 'put ''OSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMi41NyA1IEMgMjEuOTY5IDkuMjMzIDI1LjA1IDEzLjEgMjkuMzEgMTMuNDYgTCAzMC4zMiAxMy40OCBDIDMxLjYyNiAxMy40MjkgMzIuODk1IDEzLjAzNiAzNCAxMi4zNCBaIE0gMTMgMTIgQyAxNC44MTcgMTIgMTUuNjc0IDEzLjQ5''@;'; put 'put ''OSAxNy4wMzkgMTguMjc1IEMgMTcuODEzIDIwLjk4NCAxOC4yMDEgMjIuMTE4IDE4Ljg4MiAyMy4zMDkgQyAxOS44NyAyNS4wMzggMjEuMjA1IDI2IDIzIDI2IEwgMjkgMjYgQyAyOS41NTIgMjYgMzAgMjUuNTUyIDMwIDI1IEMgMzAgMjQuNDQ4IDI5LjU1MiAyNCAyOSAyNCBMIDIzIDI0IEMg''@;'; put 'put ''MjEuMTgzIDI0IDIwLjMyNiAyMi41MDEgMTguOTYyIDE3LjcyNSBDIDE4LjE4OCAxNS4wMTYgMTcuNzk5IDEzLjg4MiAxNy4xMTggMTIuNjkxIEMgMTYuMTMgMTAuOTYyIDE0Ljc5NSAxMCAxMyAxMCBMIDcgMTAgQyA2LjQ0OCAxMCA2IDEwLjQ0OCA2IDExIEMgNiAxMS41NTIgNi40NDggMTIg''@;'; put 'put ''NyAxMiBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBM''@;'; put 'put ''IDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDExLjggQyA2LjU1OCAxMS44IDYuMiAxMS40NDIgNi4yIDExIEMgNi4yIDEwLjU1OCA2LjU1OCAxMC4yIDcgMTAuMiBMIDEzIDEwLjIgQyAxNS40MDQgMTAuMiAxNi4zNjggMTEuOTA3IDE3''@;'; put 'put ''LjY1MyAxNi40NzggQyAxNy42OTUgMTYuNjI4IDE3Ljc0NCAxNi44MDMgMTcuODM1IDE3LjEyOSBDIDE3LjkwOSAxNy4zOTIgMTcuOTY0IDE3LjU4OCAxOC4wMTkgMTcuNzggQyAxOS4zMzIgMjIuMzc1IDIwLjU0OSAyNC4yIDIzIDI0LjIgTCAyOSAyNC4yIEMgMjkuNDQyIDI0LjIgMjkuOCAy''@;'; put 'put ''NC41NTggMjkuOCAyNSBDIDI5LjggMjUuNDQyIDI5LjQ0MiAyNS44IDI5IDI1LjggTCAyMyAyNS44IEMgMTkuNTM1IDI1LjggMTcuOTgxIDIzLjQ2OSAxNi40ODEgMTguMjIgQyAxNi40MjUgMTguMDI1IDE2LjM2OSAxNy44MjYgMTYuMjk1IDE3LjU2IEMgMTYuMjAzIDE3LjIzNCAxNi4xNTQg''@;'; put 'put ''MTcuMDYgMTYuMTEzIDE2LjkxMSBDIDE1LjA0MyAxMy4xMDUgMTQuMzA1IDExLjggMTMgMTEuOCBMIDcgMTEuOCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIu''@;'; put 'put ''MjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEu''@;'; put 'put ''MTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44''@;'; put 'put ''OTYgMi44OTYgNSA0IDUgTCAyMS45NTggNSBMIDE3LjYyNSAxMi4zOTUgQyAxNy40NzYgMTIuNjEyIDE3LjM3OSAxMi44NDMgMTcuMzMgMTMuMDc3IEMgMTcuMjYyIDEyLjk0OCAxNy4xOTIgMTIuODIgMTcuMTE4IDEyLjY5MSBDIDE2LjEzIDEwLjk2MiAxNC43OTUgMTAgMTMgMTAgTCA3IDEw''@;'; put 'put ''IEMgNi40NDggMTAgNiAxMC40NDggNiAxMSBDIDYgMTEuNTUyIDYuNDQ4IDEyIDcgMTIgTCAxMyAxMiBDIDE0LjgxNyAxMiAxNS42NzQgMTMuNDk5IDE3LjAzOSAxOC4yNzUgQyAxNy44MTMgMjAuOTg0IDE4LjIwMSAyMi4xMTggMTguODgyIDIzLjMwOSBDIDE5Ljg3IDI1LjAzOCAyMS4yMDUg''@;'; put 'put ''MjYgMjMgMjYgTCAyOSAyNiBDIDI5LjU1MiAyNiAzMCAyNS41NTIgMzAgMjUgQyAzMCAyNC40NDggMjkuNTUyIDI0IDI5IDI0IEwgMjMgMjQgQyAyMS4xODMgMjQgMjAuMzI2IDIyLjUwMSAxOC45NjIgMTcuNzI1IEMgMTguNjQgMTYuNTk4IDE4LjM4NSAxNS43NDQgMTguMTQ3IDE1LjA0NCBD''@;'; put 'put ''IDE4LjQwNyAxNS4yMTUgMTguNzE3IDE1LjMyNiAxOS4wNjQgMTUuMzUxIEMgMTkuMTM0IDE1LjM1NyAxOS4yMDEgMTUuMzU5IDE5LjI3IDE1LjM1NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTIt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQu''@;'; put 'put ''NjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksZS5DbHJTaGFwZUdyaWRD''@;'; put 'put ''aGFydD0oMCxhLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNSwxN0g0YTIsMiwwLDAsMS0yLTJWOEEyLDIsMCwwLDEsNCw2SDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMTdaTTQsOHY3SDE1Vjha''@;'; put 'put ''Ii8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIsMTdIMjFhMiwyLDAsMCwxLTItMlY4YTIsMiwwLDAsMSwyLTJIMzJhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwzMiwxN1pNMjEsOHY3SDMyVjhaIi8+XG4gIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTUsMzBINGEyLDIsMCwwLDEtMi0yVjIxYTIsMiwwLDAsMSwyLTJIMTVhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwxNSwzMFpNNCwyMXY3SDE1VjIxWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTMyLDMwSDIxYTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDMwWk0yMSwyMXY3SDMyVjIxWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0x''@;'; put 'put ''IiBkPSJNIDE1IDE3IEwgNCAxNyBDIDIuODk1IDE3IDIgMTYuMTA1IDIgMTUgTCAyIDggQyAyIDYuODk1IDIuODk1IDYgNCA2IEwgMTUgNiBDIDE2LjEwNSA2IDE3IDYuODk1IDE3IDggTCAxNyAxNSBDIDE3IDE2LjEwNSAxNi4xMDUgMTcgMTUgMTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNIDMyIDE3IEwgMjEgMTcgQyAxOS44OTUgMTcgMTkgMTYuMTA1IDE5IDE1IEwgMTkgOCBDIDE5IDYuODk1IDE5Ljg5NSA2IDIxIDYgTCAzMiA2IEMgMzMuMTA1IDYgMzQgNi44OTUgMzQgOCBMIDM0IDE1IEMgMzQgMTYuMTA1IDMzLjEw''@;'; put 'put ''NSAxNyAzMiAxNyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0gMTUgMzAgTCA0IDMwIEMgMi44OTUgMzAgMiAyOS4xMDUgMiAyOCBMIDIgMjEgQyAyIDE5Ljg5NSAyLjg5NSAxOSA0IDE5IEwgMTUgMTkgQyAxNi4xMDUgMTkgMTcgMTku''@;'; put 'put ''ODk1IDE3IDIxIEwgMTcgMjggQyAxNyAyOS4xMDUgMTYuMTA1IDMwIDE1IDMwIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgZD0iTSAzMiAzMCBMIDIxIDMwIEMgMTkuODk1IDMwIDE5IDI5LjEwNSAxOSAyOCBMIDE5IDIxIEMgMTkgMTkuODk1''@;'; put 'put ''IDE5Ljg5NSAxOSAyMSAxOSBMIDMyIDE5IEMgMzMuMTA1IDE5IDM0IDE5Ljg5NSAzNCAyMSBMIDM0IDI4IEMgMzQgMjkuMTA1IDMzLjEwNSAzMCAzMiAzMCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtYWxlcnRlZCIgZD0i''@;'; put 'put ''TTE1LDE3SDRhMiwyLDAsMCwxLTItMlY4QTIsMiwwLDAsMSw0LDZIMTVhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwxNSwxN1pNNCw4djdIMTVWOFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi1hbGVydGVkIiBkPSJNIDMy''@;'; put 'put ''IDE3IEwgMjEgMTcgQyAyMC4wMTQgMTcgMTkuMTk1IDE2LjI4NyAxOS4wMyAxNS4zNDggQyAxOS4wNDEgMTUuMzQ5IDE5LjA1MyAxNS4zNSAxOS4wNjQgMTUuMzUxIEMgMTkuMTM0IDE1LjM1NyAxOS4yMDEgMTUuMzU5IDE5LjI3IDE1LjM1NyBMIDMzLjk2OCAxNS4zNTcgQyAzMy44IDE2LjI5''@;'; put 'put ''MiAzMi45ODMgMTcgMzIgMTcgWiBNIDE5IDggQyAxOSA2Ljg5NSAxOS44OTUgNiAyMSA2IEwgMjEuMzcyIDYgTCAxOSAxMC4wNDggWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLWFsZXJ0ZWQiIGQ9Ik0xNSwzMEg0YTIsMiww''@;'; put 'put ''LDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDMwWk00LDIxdjdIMTVWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtYWxlcnRlZCIgZD0iTTMyLDMwSDIxYTIsMiww''@;'; put 'put ''LDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDMwWk0yMSwyMXY3SDMyVjIxWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0i''@;'; put 'put ''TSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEg''@;'; put 'put ''MzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAxNSAxNyBMIDQgMTcgQyAyLjg5NSAxNyAyIDE2LjEwNSAyIDE1IEwgMiA4IEMgMiA2Ljg5NSAyLjg5NSA2IDQgNiBMIDE1IDYgQyAxNi4xMDUgNiAxNyA2Ljg5NSAxNyA4IEwgMTcgMTUgQyAxNyAxNi4xMDUgMTYuMTA1IDE3IDE1IDE3IFoiLz5cbiAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgZD0iTSAzMiAxNyBMIDIxIDE3IEMgMjAuMDE0IDE3IDE5LjE5NSAxNi4yODcgMTkuMDMgMTUuMzQ4IEMgMTkuMDQxIDE1LjM0OSAxOS4wNTMgMTUuMzUgMTkuMDY0IDE1LjM1MSBD''@;'; put 'put ''IDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAzMy45NjggMTUuMzU3IEMgMzMuOCAxNi4yOTIgMzIuOTgzIDE3IDMyIDE3IFogTSAxOSA4IEMgMTkgNi44OTUgMTkuODk1IDYgMjEgNiBMIDIxLjM3MiA2IEwgMTkgMTAuMDQ4IFoiLz5cbiAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIgZD0iTSAxNSAzMCBMIDQgMzAgQyAyLjg5NSAzMCAyIDI5LjEwNSAyIDI4IEwgMiAyMSBDIDIgMTkuODk1IDIuODk1IDE5IDQgMTkgTCAxNSAxOSBDIDE2LjEwNSAxOSAxNyAxOS44OTUgMTcgMjEgTCAx''@;'; put 'put ''NyAyOCBDIDE3IDI5LjEwNSAxNi4xMDUgMzAgMTUgMzAgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIiBkPSJNIDMyIDMwIEwgMjEgMzAgQyAxOS44OTUgMzAgMTkgMjkuMTA1IDE5IDI4IEwgMTkgMjEgQyAxOSAx''@;'; put 'put ''OS44OTUgMTkuODk1IDE5IDIxIDE5IEwgMzIgMTkgQyAzMy4xMDUgMTkgMzQgMTkuODk1IDM0IDIxIEwgMzQgMjggQyAzNCAyOS4xMDUgMzMuMTA1IDMwIDMyIDMwIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2''@;'; put 'put ''IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTUsMTdINGEyLDIsMCwwLDEtMi0yVjhBMiwyLDAsMCwxLDQsNkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDE3Wk00LDh2N0gxNVY4WiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0gMzIgMTcgTCAyMSAxNyBDIDE5Ljg5NSAxNyAxOSAxNi4xMDUgMTkgMTUgTCAxOSA4IEMgMTkgNi44OTUgMTkuODk1IDYgMjEgNiBMIDIyLjU5IDYgQyAyMi41OSA2LjAxOSAyMi41OSA2LjAzNyAyMi41OSA2LjA1NiBDIDIyLjU5''@;'; put 'put ''IDYuNzI5IDIyLjY4IDcuMzgxIDIyLjg0OCA4IEwgMjEgOCBMIDIxIDE1IEwgMzIgMTUgTCAzMiAxMy4xNzUgQyAzMi43MTcgMTIuOTcyIDMzLjM4OSAxMi42NjQgMzQgMTIuMjY5IEwgMzQgMTUgQyAzNCAxNi4xMDUgMzMuMTA1IDE3IDMyIDE3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMTUsMzBINGEyLDIsMCwwLDEtMi0yVjIxYTIsMiwwLDAsMSwyLTJIMTVhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwxNSwzMFpNNCwyMXY3SDE1VjIxWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9Ik0zMiwzMEgyMWEyLDIsMCwwLDEtMi0yVjIxYTIsMiwwLDAsMSwyLTJIMzJhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwzMiwzMFpNMjEsMjF2N0gzMlYyMVoiLz5cbiAgPGNpcmNsZSBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMTUgMTcgTCA0IDE3''@;'; put 'put ''IEMgMi44OTUgMTcgMiAxNi4xMDUgMiAxNSBMIDIgOCBDIDIgNi44OTUgMi44OTUgNiA0IDYgTCAxNSA2IEMgMTYuMTA1IDYgMTcgNi44OTUgMTcgOCBMIDE3IDE1IEMgMTcgMTYuMTA1IDE2LjEwNSAxNyAxNSAxNyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNIDMyIDE3IEwgMjEgMTcgQyAxOS44OTUgMTcgMTkgMTYuMTA1IDE5IDE1IEwgMTkgOCBDIDE5IDYuODk1IDE5Ljg5NSA2IDIxIDYgTCAyMi41OSA2IEMgMjIuNTkgNi4wMTkgMjIuNTkgNi4wMzcgMjIuNTkgNi4wNTYgQyAyMi41OSAxMC4x''@;'; put 'put ''NDEgMjUuOTAxIDEzLjQ1MiAyOS45ODYgMTMuNDUyIEMgMzEuNDY2IDEzLjQ1MiAzMi44NDQgMTMuMDE4IDM0IDEyLjI2OSBMIDM0IDE1IEMgMzQgMTYuMTA1IDMzLjEwNSAxNyAzMiAxNyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''My0tYmFkZ2VkIiBkPSJNIDE1IDMwIEwgNCAzMCBDIDIuODk1IDMwIDIgMjkuMTA1IDIgMjggTCAyIDIxIEMgMiAxOS44OTUgMi44OTUgMTkgNCAxOSBMIDE1IDE5IEMgMTYuMTA1IDE5IDE3IDE5Ljg5NSAxNyAyMSBMIDE3IDI4IEMgMTcgMjkuMTA1IDE2LjEwNSAzMCAxNSAzMCBaIi8+XG4g''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIiBkPSJNIDMyIDMwIEwgMjEgMzAgQyAxOS44OTUgMzAgMTkgMjkuMTA1IDE5IDI4IEwgMTkgMjEgQyAxOSAxOS44OTUgMTkuODk1IDE5IDIxIDE5IEwgMzIgMTkgQyAzMy4xMDUgMTkg''@;'; put 'put ''MzQgMTkuODk1IDM0IDIxIEwgMzQgMjggQyAzNCAyOS4xMDUgMzMuMTA1IDMwIDMyIDMwIFoiLz5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLGUuQ2xy''@;'; put 'put ''U2hhcGVIZWF0TWFwPSgwLGEuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAz''@;'; put 'put ''My4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDggMTAgTCAyOCAxMCBMIDI4IDI2IEwgOCAyNiBaIE0gOS42IDI0IEwgMTQuMSAyNCBMIDE0''@;'; put 'put ''LjEgMTguOCBMIDkuNiAxOC44IFogTSAxNC4xIDExLjYgTCA5LjYgMTEuNiBMIDkuNiAxNy4yIEwgMTQuMSAxNy4yIFogTSAyNiAyNCBMIDI2IDE4LjggTCAyMS45IDE4LjggTCAyMS45IDI0IFogTSAyNiAxMS42IEwgMjEuOSAxMS42IEwgMjEuOSAxNy4yIEwgMjYgMTcuMiBaIE0gMTUuNyAx''@;'; put 'put ''MS42IEwgMTUuNyAxNy4yIEwgMjAuMyAxNy4yIEwgMjAuMyAxMS42IFogTSAxNS43IDI0IEwgMjAuMyAyNCBMIDIwLjMgMTguOCBMIDE1LjcgMTguOCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUg''@;'; put 'put ''QyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNCAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDgg''@;'; put 'put ''MTAgTCAyMy43MjggMTAgQyAyNC4xMDUgMTAuNTk2IDI0LjU2NCAxMS4xMzUgMjUuMDkgMTEuNiBMIDIxLjkgMTEuNiBMIDIxLjkgMTcuMiBMIDI2IDE3LjIgTCAyNiAxMi4yODcgQyAyNi42MTEgMTIuNjc5IDI3LjI4NCAxMi45ODMgMjggMTMuMTgyIEwgMjggMjYgTCA4IDI2IFogTSA5LjYg''@;'; put 'put ''MjQgTCAxNC4xIDI0IEwgMTQuMSAxOC44IEwgOS42IDE4LjggWiBNIDE0LjEgMTEuNiBMIDkuNiAxMS42IEwgOS42IDE3LjIgTCAxNC4xIDE3LjIgWiBNIDI2IDI0IEwgMjYgMTguOCBMIDIxLjkgMTguOCBMIDIxLjkgMjQgWiBNIDE1LjcgMTEuNiBMIDE1LjcgMTcuMiBMIDIwLjMgMTcuMiBM''@;'; put 'put ''IDIwLjMgMTEuNiBaIE0gMTUuNyAyNCBMIDIwLjMgMjQgTCAyMC4zIDE4LjggTCAxNS43IDE4LjggWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMjItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAu''@;'; put 'put ''MTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMjAuNzg2IDcgTCA0IDcgTCA0IDI5IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiI+PC9wYXRoPlxuICA8cGF0''@;'; put 'put ''aCBkPSJNIDggMTAgTCAxOS4wMjggMTAgTCAxOC4wOTEgMTEuNiBMIDE1LjcgMTEuNiBMIDE1LjcgMTcuMiBMIDIwLjMgMTcuMiBMIDIwLjMgMTUuMzU3IEwgMjEuOSAxNS4zNTcgTCAyMS45IDE3LjIgTCAyNiAxNy4yIEwgMjYgMTUuMzU3IEwgMjggMTUuMzU3IEwgMjggMjYgTCA4IDI2IFog''@;'; put 'put ''TSA5LjYgMjQgTCAxNC4xIDI0IEwgMTQuMSAxOC44IEwgOS42IDE4LjggWiBNIDE0LjEgMTEuNiBMIDkuNiAxMS42IEwgOS42IDE3LjIgTCAxNC4xIDE3LjIgWiBNIDI2IDI0IEwgMjYgMTguOCBMIDIxLjkgMTguOCBMIDIxLjkgMjQgWiBNIDE1LjcgMjQgTCAyMC4zIDI0IEwgMjAuMyAxOC44''@;'; put 'put ''IEwgMTUuNyAxOC44IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yMi0tYWxlcnRlZCBjbHItaS1hbGVy''@;'; put 'put ''dCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAx''@;'; put 'put ''MS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMSIgZD0iTSAzNCA3IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMzIgNSBDIDMzLjEwNSA1IDM0IDUuODk2IDM0IDcgWiBNIDggMjYgTCAyOCAy''@;'; put 'put ''NiBMIDI4IDEwIEwgOCAxMCBaIE0gMTAgMTkgTCAxNCAxOSBMIDE0IDI0IEwgMTAgMjQgWiBNIDIyIDI0IEwgMjIgMTkgTCAyNiAxOSBMIDI2IDI0IFogTSAyMCAxOSBMIDIwIDI0IEwgMTYgMjQgTCAxNiAxOSBaIE0gMjYgMTcgTCAyMiAxNyBMIDIyIDEyIEwgMjYgMTIgWiBNIDIwIDEyIEwg''@;'; put 'put ''MjAgMTcgTCAxNiAxNyBMIDE2IDEyIFogTSAxNCAxMiBMIDE0IDE3IEwgMTAgMTcgTCAxMCAxMiBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDM0IDEyLjM0IEwgMzQgMjkgQyAzNCAzMC4xMDUg''@;'; put 'put ''MzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjIuNTcgNSBDIDIyLjMxMiA2LjgxNyAyMi43MzIgOC41NjYgMjMuNjMzIDEwIEwgOCAxMCBMIDggMjYgTCAyOCAyNiBMIDI4IDEzLjIzMiBDIDI4LjQy''@;'; put 'put ''MSAxMy4zNDUgMjguODU5IDEzLjQyMiAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSAxMCAxOSBMIDE0IDE5IEwgMTQgMjQgTCAxMCAyNCBaIE0gMjIgMjQgTCAyMiAxOSBMIDI2IDE5IEwgMjYgMjQgWiBNIDIwIDE5''@;'; put 'put ''IEwgMjAgMjQgTCAxNiAyNCBMIDE2IDE5IFogTSAyNiAxNyBMIDIyIDE3IEwgMjIgMTIgTCAyNS41ODQgMTIgQyAyNS43MTkgMTIuMSAyNS44NTggMTIuMTk2IDI2IDEyLjI4NyBaIE0gMjAgMTIgTCAyMCAxNyBMIDE2IDE3IEwgMTYgMTIgWiBNIDE0IDEyIEwgMTQgMTcgTCAxMCAxNyBMIDEw''@;'; put 'put ''IDEyIFoiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTIyLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIxLjk1OCA1IEwgMTkuMDI4IDEwIEwgOCAxMCBMIDggMjYgTCAy''@;'; put 'put ''OCAyNiBMIDI4IDE1LjM1NyBMIDM0IDE1LjM1NyBaIE0gMTAgMTkgTCAxNCAxOSBMIDE0IDI0IEwgMTAgMjQgWiBNIDIyIDI0IEwgMjIgMTkgTCAyNiAxOSBMIDI2IDI0IFogTSAyMCAxOSBMIDIwIDI0IEwgMTYgMjQgTCAxNiAxOSBaIE0gMjYgMTcgTCAyMiAxNyBMIDIyIDE1LjM1NyBMIDI2''@;'; put 'put ''IDE1LjM1NyBaIE0gMjAgMTcgTCAxNiAxNyBMIDE2IDEyIEwgMTcuODU2IDEyIEwgMTcuNjI1IDEyLjM5NSBDIDE2Ljc5NSAxMy42MDEgMTcuNTk0IDE1LjI0NSAxOS4wNjQgMTUuMzUxIEMgMTkuMTM0IDE1LjM1NyAxOS4yMDEgMTUuMzU5IDE5LjI3IDE1LjM1NyBMIDIwIDE1LjM1NyBaIE0g''@;'; put 'put ''MTQgMTIgTCAxNCAxNyBMIDEwIDE3IEwgMTAgMTIgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDEx''@;'; put 'put ''LjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQy''@;'; put 'put ''IDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD4nKSxlLkNsclNoYXBlTGluZUNoYXJ0PSgwLGEuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAz''@;'; put 'put ''MiA3IEwgMzIgMjkgWiI+PC9wYXRoPlxuICA8cG9seWdvbiBwb2ludHM9IjE1LjYyIDE1LjIyMiA5LjYwMiAyMy45NjggNS41NSAyMC4zODQgNi42MSAxOS4xODYgOS4zMDggMjEuNTcyIDE1LjYzNCAxMi4zOCAyMi4zODQgMjIuMzk1IDI5LjEzOCAxMy40NyAzMC40MTQgMTQuNDM2IDIyLjMw''@;'; put 'put ''OCAyNS4xNDUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIj48L3BvbHlnb24+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzIgNSBMIDQgNSBDIDIuODk2IDUgMiA1Ljg5NiAyIDcgTCAyIDI5IEMgMiAzMC4x''@;'; put 'put ''MDUgMi44OTYgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNSAzNCAyOSBMIDM0IDcgQyAzNCA1Ljg5NiAzMy4xMDUgNSAzMiA1IFogTSAyMi41NiAyNS45NCBMIDE1LjQ2IDE1LjM2IEwgOS4xMiAyNC42NCBMIDQuNjIgMjAuNjQgTCA2IDE5LjA1IEwgOC43IDIxLjQ0IEwg''@;'; put 'put ''MTUuNDYgMTEuNTYgTCAyMi42NSAyMi4yNyBMIDI5LjY1IDEzIEwgMzEuMzUgMTQuMjggWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcg''@;'; put 'put ''TCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNCAzMSAzNCAz''@;'; put 'put ''MC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiI+PC9wYXRoPlxuICA8cG9seWdvbiBwb2ludHM9IjE1LjYyIDE1LjIyMiA5LjYwMiAyMy45NjggNS41NSAyMC4zODQgNi42MSAxOS4xODYgOS4zMDggMjEuNTcyIDE1LjYzNCAxMi4z''@;'; put 'put ''OCAyMi4zODQgMjIuMzk1IDI5LjEzOCAxMy40NyAzMC40MTQgMTQuNDM2IDIyLjMwOCAyNS4xNDUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCI+PC9wb2x5Z29uPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMwLjMyIDEzLjQ4IEwgMzEuMzgg''@;'; put 'put ''MTQuMjggTCAyMi41NiAyNS45NCBMIDE1LjQ2IDE1LjM2IEwgOS4xMiAyNC42NCBMIDQuNjIgMjAuNjQgTCA2IDE5LjA1IEwgOC43IDIxLjQ0IEwgMTUuNDYgMTEuNTYgTCAyMi42NSAyMi4yNyBMIDI5LjMxIDEzLjQ2IEMgMjUuMDUgMTMuMSAyMS45NjkgOS4yMzMgMjIuNTcgNSBMIDQgNSBD''@;'; put 'put ''IDIuODk2IDUgMiA1Ljg5NiAyIDcgTCAyIDI5IEMgMiAzMC4xMDUgMi44OTYgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNSAzNCAyOSBMIDM0IDEyLjM0IEMgMzIuODk1IDEzLjAzNiAzMS42MjYgMTMuNDI5IDMwLjMyIDEzLjQ4IFoiPjwvcGF0aD5cbiAgPGNpcmNsZSBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVk''@;'; put 'put ''IiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMjAuNzg2IDcgTCA0IDcgTCA0IDI5IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4z''@;'; put 'put ''NTcgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE1LjYyIDE1LjIyMiBMIDkuNjAyIDIzLjk2OCBMIDUuNTUgMjAuMzg0IEwgNi42MSAxOS4xODYgTCA5LjMwOCAyMS41NzIgTCAxNS42MzQgMTIuMzggTCAyMi4zODQgMjIuMzk1IEwgMjcuNzE3IDE1LjM0OCBMIDI5LjcyNCAxNS4zNDggTCAy''@;'; put 'put ''Mi4zMDggMjUuMTQ1IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0''@;'; put 'put ''IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDEx''@;'; put 'put ''Ljk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIxLjk1OCA1IEwgMTcuNjI1IDEyLjM5NSBDIDE2Ljc5NSAx''@;'; put 'put ''My42MDEgMTcuNTk0IDE1LjI0NSAxOS4wNjQgMTUuMzUxIEMgMTkuMTM0IDE1LjM1NyAxOS4yMDEgMTUuMzU5IDE5LjI3IDE1LjM1NyBMIDI3LjQ1MiAxNS4zNTcgTCAyMi4zOCAyMi4wNiBMIDE1LjYzIDEyIEwgOS4yOCAyMS4yOCBMIDYuNzUgMTkuMDQgTCA1LjQyIDIwLjUzIEwgOS42NSAy''@;'; put 'put ''NC4yOCBMIDE1LjYxIDE1LjU2IEwgMjIuMjggMjUuNSBMIDI5Ljk1OSAxNS4zNTcgTCAzNCAxNS4zNTcgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0''@;'; put 'put ''NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIy''@;'; put 'put ''IEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLGUuQ2xyU2hhcGVQaWVDaGFydD0oMCxhLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0gMzIgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDUgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNSAzNCAyOSBMIDM0IDcgQyAzNCA1Ljg5NSAzMy4x''@;'; put 'put ''MDUgNSAzMiA1IFogTSA0IDI5IEwgNCA3IEwgMzIgNyBMIDMyIDI5IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxNyAyNyBDIDEyLjU4MiAyNyA5IDIzLjQxOCA5IDE5IEMgOSAxNC41ODIgMTIuNTgyIDExIDE3IDExIEwgMTcgMTkgTCAyNSAxOSBDIDI1IDIzLjQxOCAyMS40MTggMjcgMTcg''@;'; put 'put ''MjcgWiBNIDIzLjI0NyAyMC40IEwgMTUuNCAyMC40IEwgMTUuNCAxMi44MDIgQyAxMi42NCAxMy41MTMgMTAuNjAxIDE2LjAxOCAxMC42IDE5IEMgMTAuNiAyMi41MzUgMTMuNDY1IDI1LjQgMTcgMjUuNCBDIDIwLjA1NCAyNS40MDEgMjIuNjA4IDIzLjI2MSAyMy4yNDcgMjAuNCBaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE5IDkgQyAyMy40MTggOSAyNyAxMi41ODIgMjcgMTcgTCAxOSAxNyBaIE0gMjUuMTk4IDE1LjQgQyAyNC42MiAxMy4xNSAyMi44NDkgMTEuMzggMjAuNiAxMC44MDEgTCAyMC42IDE1''@;'; put 'put ''LjQgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzNCA3IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEMgMzIgMzEgMiAzMC4x''@;'; put 'put ''MDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44OTYgMzQgNyBaIE0gMjUgMTkgTCAxNyAxOSBMIDE3IDExIEMgMTIuNTgyIDExIDkgMTQuNTgyIDkgMTkgQyA5IDIzLjQxOCAxMi41ODIgMjcgMTcgMjcgQyAyMS40MTggMjcgMjUgMjMu''@;'; put 'put ''NDE4IDI1IDE5IFogTSAxOSAxNyBMIDI3IDE3IEMgMjcgMTIuNTgyIDIzLjQxOCA5IDE5IDkgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0''@;'; put 'put ''IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNCAzMSAz''@;'; put 'put ''NCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE3IDI3IEMgMTIuNTgyIDI3IDkgMjMuNDE4IDkgMTkgQyA5IDE0LjU4MiAxMi41ODIgMTEgMTcgMTEgTCAxNyAxOSBMIDI1IDE5IEMg''@;'; put 'put ''MjUgMjMuNDE4IDIxLjQxOCAyNyAxNyAyNyBaIE0gMjMuMjQ3IDIwLjQgTCAxNS40IDIwLjQgTCAxNS40IDEyLjgwMiBDIDEyLjY0IDEzLjUxMyAxMC42MDEgMTYuMDE4IDEwLjYgMTkgQyAxMC42IDIyLjUzNSAxMy40NjUgMjUuNCAxNyAyNS40IEMgMjAuMDU0IDI1LjQwMSAyMi42MDggMjMu''@;'; put 'put ''MjYxIDIzLjI0NyAyMC40IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE5IDkgQyAyMy40MTggOSAyNyAxMi41ODIgMjcgMTcgTCAxOSAxNyBaIE0gMjUuMTk4IDE1LjQgQyAyNC42MiAx''@;'; put 'put ''My4xNSAyMi44NDkgMTEuMzggMjAuNiAxMC44MDEgTCAyMC42IDE1LjQgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzQgMTIuMzQgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUg''@;'; put 'put ''MzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMi41NyA1IEMgMjEuOTY5IDkuMjMzIDI1LjA1IDEzLjEgMjkuMzEgMTMuNDYgTCAzMC4zMiAxMy40OCBDIDMxLjYyNiAxMy40MjkgMzIuODk1IDEzLjAzNiAzNCAx''@;'; put 'put ''Mi4zNCBaIE0gMjUgMTkgTCAxNyAxOSBMIDE3IDExIEMgMTIuNTgyIDExIDkgMTQuNTgyIDkgMTkgQyA5IDIzLjQxOCAxMi41ODIgMjcgMTcgMjcgQyAyMS40MTggMjcgMjUgMjMuNDE4IDI1IDE5IFogTSAxOSAxNyBMIDI3IDE3IEMgMjcgMTIuNTgyIDIzLjQxOCA5IDE5IDkgWiI+PC9wYXRo''@;'; put 'put ''PlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1''@;'; put 'put ''LjM1NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTcgMjcgQyAxMi41ODIgMjcgOSAyMy40MTggOSAxOSBDIDkgMTQuNTgyIDEyLjU4MiAxMSAxNyAxMSBMIDE3IDE5IEwgMjUgMTkgQyAyNSAyMy40MTggMjEuNDE4IDI3IDE3IDI3IFogTSAyMy4yNDcgMjAuNCBMIDE1''@;'; put 'put ''LjQgMjAuNCBMIDE1LjQgMTIuODAyIEMgMTIuNjQgMTMuNTEzIDEwLjYwMSAxNi4wMTggMTAuNiAxOSBDIDEwLjYgMjIuNTM1IDEzLjQ2NSAyNS40IDE3IDI1LjQgQyAyMC4wNTQgMjUuNDAxIDIyLjYwOCAyMy4yNjEgMjMuMjQ3IDIwLjQgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyNyAxNyBMIDE5IDE3IEwgMTkgMTUuMzQ1IEMgMTkuMDIxIDE1LjM0OCAxOS4wNDMgMTUuMzQ5IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUu''@;'; put 'put ''MzU3IEwgMjYuODMxIDE1LjM1NyBDIDI2Ljk0MiAxNS44ODcgMjcgMTYuNDM3IDI3IDE3IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwg''@;'; put 'put ''MzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRo''@;'; put 'put ''PlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQg''@;'; put 'put ''NSBMIDIxLjk1OCA1IEwgMTcuNjI1IDEyLjM5NSBDIDE2LjgwNyAxMy41ODMgMTcuNTcxIDE1LjE5NyAxOSAxNS4zNDUgTCAxOSAxNyBMIDI3IDE3IEMgMjcgMTYuNDM3IDI2Ljk0MiAxNS44ODcgMjYuODMxIDE1LjM1NyBMIDM0IDE1LjM1NyBaIE0gMjUgMTkgTCAxNyAxOSBMIDE3IDExIEMg''@;'; put 'put ''MTIuNTgyIDExIDkgMTQuNTgyIDkgMTkgQyA5IDIzLjQxOCAxMi41ODIgMjcgMTcgMjcgQyAyMS40MTggMjcgMjUgMjMuNDE4IDI1IDE5IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVy''@;'; put 'put ''dCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAx''@;'; put 'put ''MS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD4nKSxlLkNsclNoYXBlU2NhdHRlclBsb3Q9KDAsYS5jbHJJY29u''@;'; put 'put ''U1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkg''@;'; put 'put ''TCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1IDUgMzIgNSBaIE0gNCAyOSBMIDQgNyBMIDMyIDcgTCAzMiAyOSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNIDkuMTAxIDE1LjggQyA5LjQxMyAxNi4xMTEgOS45MTkgMTYuMTExIDEw''@;'; put 'put ''LjIzMSAxNS44IEwgMTEuMzkxIDE0LjY0IEwgMTIuNTUxIDE1LjggQyAxMi45NjQgMTYuMjU2IDEzLjcxNyAxNi4wOTQgMTMuOTA1IDE1LjUwNyBDIDE0LjAwMiAxNS4yMDggMTMuOTE0IDE0Ljg4MSAxMy42ODEgMTQuNjcgTCAxMi41MzEgMTMuNTQgTCAxMy42OTEgMTIuMzggQyAxNC4xNDcg''@;'; put 'put ''MTEuOTY2IDEzLjk4NSAxMS4yMTQgMTMuMzk5IDExLjAyNSBDIDEzLjEgMTAuOTI5IDEyLjc3MiAxMS4wMTcgMTIuNTYxIDExLjI1IEwgMTEuNDAxIDEyLjQxIEwgMTAuMjMxIDExLjIyIEMgOS44MTcgMTAuNzYzIDkuMDY1IDEwLjkyNiA4Ljg3NyAxMS41MTIgQyA4Ljc4IDExLjgxMSA4Ljg2''@;'; put 'put ''OCAxMi4xMzkgOS4xMDEgMTIuMzUgTCAxMC4yNjEgMTMuNTQgTCA5LjEwMSAxNC42NyBDIDguNzg5IDE0Ljk4MiA4Ljc4OSAxNS40ODcgOS4xMDEgMTUuOCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNIDE1LjE3NiAyNS41MzYg''@;'; put 'put ''QyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYuMzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4zNzYgTCAxOC42MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTkuOTggMjUuMjQzIEMgMjAuMDc3IDI0Ljk0NCAxOS45ODkgMjQuNjE3IDE5Ljc1NiAyNC40MDYgTCAx''@;'; put 'put ''OC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIwLjIyMiAyMS43MDIgMjAuMDYgMjAuOTUgMTkuNDc0IDIwLjc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYgMjAuOTg2IEwgMTcuNDc2IDIyLjE0NiBMIDE2LjMwNiAyMC45NTYgQyAxNS44OTIgMjAuNDk5IDE1''@;'; put 'put ''LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1LjE3NiAyMi4wODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2NCAyNC43MTggMTQuODY0IDI1LjIyMyAxNS4xNzYgMjUuNTM2IFoiLz5cbiAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0gMjIuOTEyIDIwLjM0MyBDIDIzLjIyNCAyMC42NTQgMjMuNzMgMjAuNjU0IDI0LjA0MiAyMC4zNDMgTCAyNS4yMDIgMTkuMTgzIEwgMjYuMzYyIDIwLjM0MyBDIDI2Ljc3NSAyMC43OTkgMjcuNTI4IDIwLjYzNyAyNy43''@;'; put 'put ''MTYgMjAuMDUgQyAyNy44MTMgMTkuNzUxIDI3LjcyNSAxOS40MjQgMjcuNDkyIDE5LjIxMyBMIDI2LjM0MiAxOC4wODMgTCAyNy41MDIgMTYuOTIzIEMgMjcuOTU4IDE2LjUwOSAyNy43OTYgMTUuNzU3IDI3LjIxIDE1LjU2OCBDIDI2LjkxMSAxNS40NzIgMjYuNTgzIDE1LjU2IDI2LjM3MiAx''@;'; put 'put ''NS43OTMgTCAyNS4yMTIgMTYuOTUzIEwgMjQuMDQyIDE1Ljc2MyBDIDIzLjYyOCAxNS4zMDYgMjIuODc2IDE1LjQ2OSAyMi42ODggMTYuMDU1IEMgMjIuNTkxIDE2LjM1NCAyMi42NzkgMTYuNjgyIDIyLjkxMiAxNi44OTMgTCAyNC4wNzIgMTguMDgzIEwgMjIuOTEyIDE5LjIxMyBDIDIyLjYg''@;'; put 'put ''MTkuNTI1IDIyLjYgMjAuMDMgMjIuOTEyIDIwLjM0MyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwg''@;'; put 'put ''MiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NiAzNCA3IFogTSA5LjEwMSAxNS44IEMgOS40MTMgMTYuMTExIDkuOTE5IDE2LjExMSAxMC4yMzEgMTUuOCBMIDExLjM5MSAxNC42NCBMIDEyLjU1MSAxNS44IEMgMTIuOTY0IDE2LjI1NiAxMy43MTcg''@;'; put 'put ''MTYuMDk0IDEzLjkwNSAxNS41MDcgQyAxNC4wMDIgMTUuMjA4IDEzLjkxNCAxNC44ODEgMTMuNjgxIDE0LjY3IEwgMTIuNTMxIDEzLjU0IEwgMTMuNjkxIDEyLjM4IEMgMTQuMTQ3IDExLjk2NiAxMy45ODUgMTEuMjE0IDEzLjM5OSAxMS4wMjUgQyAxMy4xIDEwLjkyOSAxMi43NzIgMTEuMDE3''@;'; put 'put ''IDEyLjU2MSAxMS4yNSBMIDExLjQwMSAxMi40MSBMIDEwLjIzMSAxMS4yMiBDIDkuODE3IDEwLjc2MyA5LjA2NSAxMC45MjYgOC44NzcgMTEuNTEyIEMgOC43OCAxMS44MTEgOC44NjggMTIuMTM5IDkuMTAxIDEyLjM1IEwgMTAuMjYxIDEzLjU0IEwgOS4xMDEgMTQuNjcgQyA4Ljc4OSAxNC45''@;'; put 'put ''ODIgOC43ODkgMTUuNDg3IDkuMTAxIDE1LjggWiBNIDE1LjE3NiAyNS41MzYgQyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYuMzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4zNzYgTCAxOC42MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTkuOTggMjUuMjQzIEMg''@;'; put 'put ''MjAuMDc3IDI0Ljk0NCAxOS45ODkgMjQuNjE3IDE5Ljc1NiAyNC40MDYgTCAxOC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIwLjIyMiAyMS43MDIgMjAuMDYgMjAuOTUgMTkuNDc0IDIwLjc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYgMjAuOTg2IEwgMTcu''@;'; put 'put ''NDc2IDIyLjE0NiBMIDE2LjMwNiAyMC45NTYgQyAxNS44OTIgMjAuNDk5IDE1LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1LjE3NiAyMi4wODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2NCAyNC43MTggMTQu''@;'; put 'put ''ODY0IDI1LjIyMyAxNS4xNzYgMjUuNTM2IFogTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAuNjM3IDI3LjcxNiAyMC4wNSBDIDI3''@;'; put 'put ''LjgxMyAxOS43NTEgMjcuNzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYgMjYuMzcyIDE1Ljc5MyBMIDI1LjIx''@;'; put 'put ''MiAxNi45NTMgTCAyNC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEzIEMgMjIuNiAxOS41MjUgMjIuNiAy''@;'; put 'put ''MC4wMyAyMi45MTIgMjAuMzQzIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIyIEwgMzIgMjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUyNCA2LjY2OCAyMi41MDEgNi4zMzQg''@;'; put 'put ''MjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMzMSAyMi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDQgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQgMTIuMzQgQyAzMy4zOCAxMi43MyAz''@;'; put 'put ''Mi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNIDkuMTAxIDE1LjggQyA5LjQxMyAxNi4xMTEgOS45MTkgMTYuMTExIDEwLjIzMSAxNS44IEwgMTEuMzkxIDE0LjY0''@;'; put 'put ''IEwgMTIuNTUxIDE1LjggQyAxMi45NjQgMTYuMjU2IDEzLjcxNyAxNi4wOTQgMTMuOTA1IDE1LjUwNyBDIDE0LjAwMiAxNS4yMDggMTMuOTE0IDE0Ljg4MSAxMy42ODEgMTQuNjcgTCAxMi41MzEgMTMuNTQgTCAxMy42OTEgMTIuMzggQyAxNC4xNDcgMTEuOTY2IDEzLjk4NSAxMS4yMTQgMTMu''@;'; put 'put ''Mzk5IDExLjAyNSBDIDEzLjEgMTAuOTI5IDEyLjc3MiAxMS4wMTcgMTIuNTYxIDExLjI1IEwgMTEuNDAxIDEyLjQxIEwgMTAuMjMxIDExLjIyIEMgOS44MTcgMTAuNzYzIDkuMDY1IDEwLjkyNiA4Ljg3NyAxMS41MTIgQyA4Ljc4IDExLjgxMSA4Ljg2OCAxMi4xMzkgOS4xMDEgMTIuMzUgTCAx''@;'; put 'put ''MC4yNjEgMTMuNTQgTCA5LjEwMSAxNC42NyBDIDguNzg5IDE0Ljk4MiA4Ljc4OSAxNS40ODcgOS4xMDEgMTUuOCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgZD0iTSAxNS4xNzYgMjUuNTM2IEMgMTUuNDg4''@;'; put 'put ''IDI1Ljg0NyAxNS45OTQgMjUuODQ3IDE2LjMwNiAyNS41MzYgTCAxNy40NjYgMjQuMzc2IEwgMTguNjI2IDI1LjUzNiBDIDE5LjAzOSAyNS45OTIgMTkuNzkyIDI1LjgzIDE5Ljk4IDI1LjI0MyBDIDIwLjA3NyAyNC45NDQgMTkuOTg5IDI0LjYxNyAxOS43NTYgMjQuNDA2IEwgMTguNjA2IDIz''@;'; put 'put ''LjI3NiBMIDE5Ljc2NiAyMi4xMTYgQyAyMC4yMjIgMjEuNzAyIDIwLjA2IDIwLjk1IDE5LjQ3NCAyMC43NjEgQyAxOS4xNzUgMjAuNjY1IDE4Ljg0NyAyMC43NTMgMTguNjM2IDIwLjk4NiBMIDE3LjQ3NiAyMi4xNDYgTCAxNi4zMDYgMjAuOTU2IEMgMTUuODkyIDIwLjQ5OSAxNS4xNCAyMC42''@;'; put 'put ''NjIgMTQuOTUyIDIxLjI0OCBDIDE0Ljg1NSAyMS41NDcgMTQuOTQzIDIxLjg3NSAxNS4xNzYgMjIuMDg2IEwgMTYuMzM2IDIzLjI3NiBMIDE1LjE3NiAyNC40MDYgQyAxNC44NjQgMjQuNzE4IDE0Ljg2NCAyNS4yMjMgMTUuMTc2IDI1LjUzNiBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgZD0iTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAu''@;'; put 'put ''NjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcuNzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYg''@;'; put 'put ''MjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEz''@;'; put 'put ''IEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAuMzQzIFoiLz5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzQgMTIuMzQgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMi41''@;'; put 'put ''NyA1IEMgMjEuOTY5IDkuMjMzIDI1LjA1IDEzLjEgMjkuMzEgMTMuNDYgTCAzMC4zMiAxMy40OCBDIDMxLjYyNiAxMy40MjkgMzIuODk1IDEzLjAzNiAzNCAxMi4zNCBaIE0gOS4xMDEgMTUuOCBDIDkuNDEzIDE2LjExMSA5LjkxOSAxNi4xMTEgMTAuMjMxIDE1LjggTCAxMS4zOTEgMTQuNjQg''@;'; put 'put ''TCAxMi41NTEgMTUuOCBDIDEyLjk2NCAxNi4yNTYgMTMuNzE3IDE2LjA5NCAxMy45MDUgMTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5MSAxMi4zOCBDIDE0LjE0NyAxMS45NjYgMTMuOTg1IDExLjIxNCAxMy4z''@;'; put 'put ''OTkgMTEuMDI1IEMgMTMuMSAxMC45MjkgMTIuNzcyIDExLjAxNyAxMi41NjEgMTEuMjUgTCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4wNjUgMTAuOTI2IDguODc3IDExLjUxMiBDIDguNzggMTEuODExIDguODY4IDEyLjEzOSA5LjEwMSAxMi4zNSBMIDEw''@;'; put 'put ''LjI2MSAxMy41NCBMIDkuMTAxIDE0LjY3IEMgOC43ODkgMTQuOTgyIDguNzg5IDE1LjQ4NyA5LjEwMSAxNS44IFogTSAxNS4xNzYgMjUuNTM2IEMgMTUuNDg4IDI1Ljg0NyAxNS45OTQgMjUuODQ3IDE2LjMwNiAyNS41MzYgTCAxNy40NjYgMjQuMzc2IEwgMTguNjI2IDI1LjUzNiBDIDE5LjAz''@;'; put 'put ''OSAyNS45OTIgMTkuNzkyIDI1LjgzIDE5Ljk4IDI1LjI0MyBDIDIwLjA3NyAyNC45NDQgMTkuOTg5IDI0LjYxNyAxOS43NTYgMjQuNDA2IEwgMTguNjA2IDIzLjI3NiBMIDE5Ljc2NiAyMi4xMTYgQyAyMC4yMjIgMjEuNzAyIDIwLjA2IDIwLjk1IDE5LjQ3NCAyMC43NjEgQyAxOS4xNzUgMjAu''@;'; put 'put ''NjY1IDE4Ljg0NyAyMC43NTMgMTguNjM2IDIwLjk4NiBMIDE3LjQ3NiAyMi4xNDYgTCAxNi4zMDYgMjAuOTU2IEMgMTUuODkyIDIwLjQ5OSAxNS4xNCAyMC42NjIgMTQuOTUyIDIxLjI0OCBDIDE0Ljg1NSAyMS41NDcgMTQuOTQzIDIxLjg3NSAxNS4xNzYgMjIuMDg2IEwgMTYuMzM2IDIzLjI3''@;'; put 'put ''NiBMIDE1LjE3NiAyNC40MDYgQyAxNC44NjQgMjQuNzE4IDE0Ljg2NCAyNS4yMjMgMTUuMTc2IDI1LjUzNiBaIE0gMjIuOTEyIDIwLjM0MyBDIDIzLjIyNCAyMC42NTQgMjMuNzMgMjAuNjU0IDI0LjA0MiAyMC4zNDMgTCAyNS4yMDIgMTkuMTgzIEwgMjYuMzYyIDIwLjM0MyBDIDI2Ljc3NSAy''@;'; put 'put ''MC43OTkgMjcuNTI4IDIwLjYzNyAyNy43MTYgMjAuMDUgQyAyNy44MTMgMTkuNzUxIDI3LjcyNSAxOS40MjQgMjcuNDkyIDE5LjIxMyBMIDI2LjM0MiAxOC4wODMgTCAyNy41MDIgMTYuOTIzIEMgMjcuOTU4IDE2LjUwOSAyNy43OTYgMTUuNzU3IDI3LjIxIDE1LjU2OCBDIDI2LjkxMSAxNS40''@;'; put 'put ''NzIgMjYuNTgzIDE1LjU2IDI2LjM3MiAxNS43OTMgTCAyNS4yMTIgMTYuOTUzIEwgMjQuMDQyIDE1Ljc2MyBDIDIzLjYyOCAxNS4zMDYgMjIuODc2IDE1LjQ2OSAyMi42ODggMTYuMDU1IEMgMjIuNTkxIDE2LjM1NCAyMi42NzkgMTYuNjgyIDIyLjkxMiAxNi44OTMgTCAyNC4wNzIgMTguMDgz''@;'; put 'put ''IEwgMjIuOTEyIDE5LjIxMyBDIDIyLjYgMTkuNTI1IDIyLjYgMjAuMDMgMjIuOTEyIDIwLjM0MyBaIi8+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1''@;'; put 'put ''IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNIDkuMTAxIDE1LjggQyA5LjQx''@;'; put 'put ''MyAxNi4xMTEgOS45MTkgMTYuMTExIDEwLjIzMSAxNS44IEwgMTEuMzkxIDE0LjY0IEwgMTIuNTUxIDE1LjggQyAxMi45NjQgMTYuMjU2IDEzLjcxNyAxNi4wOTQgMTMuOTA1IDE1LjUwNyBDIDE0LjAwMiAxNS4yMDggMTMuOTE0IDE0Ljg4MSAxMy42ODEgMTQuNjcgTCAxMi41MzEgMTMuNTQg''@;'; put 'put ''TCAxMy42OTEgMTIuMzggQyAxNC4xNDcgMTEuOTY2IDEzLjk4NSAxMS4yMTQgMTMuMzk5IDExLjAyNSBDIDEzLjEgMTAuOTI5IDEyLjc3MiAxMS4wMTcgMTIuNTYxIDExLjI1IEwgMTEuNDAxIDEyLjQxIEwgMTAuMjMxIDExLjIyIEMgOS44MTcgMTAuNzYzIDkuMDY1IDEwLjkyNiA4Ljg3NyAx''@;'; put 'put ''MS41MTIgQyA4Ljc4IDExLjgxMSA4Ljg2OCAxMi4xMzkgOS4xMDEgMTIuMzUgTCAxMC4yNjEgMTMuNTQgTCA5LjEwMSAxNC42NyBDIDguNzg5IDE0Ljk4MiA4Ljc4OSAxNS40ODcgOS4xMDEgMTUuOCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zLS1hbGVydGVkIiBkPSJNIDE1LjE3NiAyNS41MzYgQyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYuMzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4zNzYgTCAxOC42MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTkuOTggMjUuMjQzIEMgMjAu''@;'; put 'put ''MDc3IDI0Ljk0NCAxOS45ODkgMjQuNjE3IDE5Ljc1NiAyNC40MDYgTCAxOC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIwLjIyMiAyMS43MDIgMjAuMDYgMjAuOTUgMTkuNDc0IDIwLjc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYgMjAuOTg2IEwgMTcuNDc2''@;'; put 'put ''IDIyLjE0NiBMIDE2LjMwNiAyMC45NTYgQyAxNS44OTIgMjAuNDk5IDE1LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1LjE3NiAyMi4wODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2NCAyNC43MTggMTQuODY0''@;'; put 'put ''IDI1LjIyMyAxNS4xNzYgMjUuNTM2IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIGQ9Ik0gMjIuOTEyIDIwLjM0MyBDIDIzLjIyNCAyMC42NTQgMjMuNzMgMjAuNjU0IDI0LjA0MiAyMC4zNDMgTCAyNS4y''@;'; put 'put ''MDIgMTkuMTgzIEwgMjYuMzYyIDIwLjM0MyBDIDI2Ljc3NSAyMC43OTkgMjcuNTI4IDIwLjYzNyAyNy43MTYgMjAuMDUgQyAyNy44MTMgMTkuNzUxIDI3LjcyNSAxOS40MjQgMjcuNDkyIDE5LjIxMyBMIDI2LjM0MiAxOC4wODMgTCAyNy41MDIgMTYuOTIzIEMgMjcuOTU4IDE2LjUwOSAyNy43''@;'; put 'put ''OTYgMTUuNzU3IDI3LjIxIDE1LjU2OCBDIDI2LjkxMSAxNS40NzIgMjYuNTgzIDE1LjU2IDI2LjM3MiAxNS43OTMgTCAyNS4yMTIgMTYuOTUzIEwgMjQuMDQyIDE1Ljc2MyBDIDIzLjYyOCAxNS4zMDYgMjIuODc2IDE1LjQ2OSAyMi42ODggMTYuMDU1IEMgMjIuNTkxIDE2LjM1NCAyMi42Nzkg''@;'; put 'put ''MTYuNjgyIDIyLjkxMiAxNi44OTMgTCAyNC4wNzIgMTguMDgzIEwgMjIuOTEyIDE5LjIxMyBDIDIyLjYgMTkuNTI1IDIyLjYgMjAuMDMgMjIuOTEyIDIwLjM0MyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVk''@;'; put 'put ''IGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4w''@;'; put 'put ''MzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIxLjk1OCA1IEwgMTcuNjI1IDEyLjM5NSBDIDE2''@;'; put 'put ''Ljc5NSAxMy42MDEgMTcuNTk0IDE1LjI0NSAxOS4wNjQgMTUuMzUxIEMgMTkuMTM0IDE1LjM1NyAxOS4yMDEgMTUuMzU5IDE5LjI3IDE1LjM1NyBMIDM0IDE1LjM1NyBaIE0gOS4xMDEgMTUuOCBDIDkuNDEzIDE2LjExMSA5LjkxOSAxNi4xMTEgMTAuMjMxIDE1LjggTCAxMS4zOTEgMTQuNjQg''@;'; put 'put ''TCAxMi41NTEgMTUuOCBDIDEyLjk2NCAxNi4yNTYgMTMuNzE3IDE2LjA5NCAxMy45MDUgMTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5MSAxMi4zOCBDIDE0LjE0NyAxMS45NjYgMTMuOTg1IDExLjIxNCAxMy4z''@;'; put 'put ''OTkgMTEuMDI1IEMgMTMuMSAxMC45MjkgMTIuNzcyIDExLjAxNyAxMi41NjEgMTEuMjUgTCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4wNjUgMTAuOTI2IDguODc3IDExLjUxMiBDIDguNzggMTEuODExIDguODY4IDEyLjEzOSA5LjEwMSAxMi4zNSBMIDEw''@;'; put 'put ''LjI2MSAxMy41NCBMIDkuMTAxIDE0LjY3IEMgOC43ODkgMTQuOTgyIDguNzg5IDE1LjQ4NyA5LjEwMSAxNS44IFogTSAxNS4xNzYgMjUuNTM2IEMgMTUuNDg4IDI1Ljg0NyAxNS45OTQgMjUuODQ3IDE2LjMwNiAyNS41MzYgTCAxNy40NjYgMjQuMzc2IEwgMTguNjI2IDI1LjUzNiBDIDE5LjAz''@;'; put 'put ''OSAyNS45OTIgMTkuNzkyIDI1LjgzIDE5Ljk4IDI1LjI0MyBDIDIwLjA3NyAyNC45NDQgMTkuOTg5IDI0LjYxNyAxOS43NTYgMjQuNDA2IEwgMTguNjA2IDIzLjI3NiBMIDE5Ljc2NiAyMi4xMTYgQyAyMC4yMjIgMjEuNzAyIDIwLjA2IDIwLjk1IDE5LjQ3NCAyMC43NjEgQyAxOS4xNzUgMjAu''@;'; put 'put ''NjY1IDE4Ljg0NyAyMC43NTMgMTguNjM2IDIwLjk4NiBMIDE3LjQ3NiAyMi4xNDYgTCAxNi4zMDYgMjAuOTU2IEMgMTUuODkyIDIwLjQ5OSAxNS4xNCAyMC42NjIgMTQuOTUyIDIxLjI0OCBDIDE0Ljg1NSAyMS41NDcgMTQuOTQzIDIxLjg3NSAxNS4xNzYgMjIuMDg2IEwgMTYuMzM2IDIzLjI3''@;'; put 'put ''NiBMIDE1LjE3NiAyNC40MDYgQyAxNC44NjQgMjQuNzE4IDE0Ljg2NCAyNS4yMjMgMTUuMTc2IDI1LjUzNiBaIE0gMjIuOTEyIDIwLjM0MyBDIDIzLjIyNCAyMC42NTQgMjMuNzMgMjAuNjU0IDI0LjA0MiAyMC4zNDMgTCAyNS4yMDIgMTkuMTgzIEwgMjYuMzYyIDIwLjM0MyBDIDI2Ljc3NSAy''@;'; put 'put ''MC43OTkgMjcuNTI4IDIwLjYzNyAyNy43MTYgMjAuMDUgQyAyNy44MTMgMTkuNzUxIDI3LjcyNSAxOS40MjQgMjcuNDkyIDE5LjIxMyBMIDI2LjM0MiAxOC4wODMgTCAyNy41MDIgMTYuOTIzIEMgMjcuOTU4IDE2LjUwOSAyNy43OTYgMTUuNzU3IDI3LjIxIDE1LjU2OCBDIDI2LjkxMSAxNS40''@;'; put 'put ''NzIgMjYuNTgzIDE1LjU2IDI2LjM3MiAxNS43OTMgTCAyNS4yMTIgMTYuOTUzIEwgMjQuMDQyIDE1Ljc2MyBDIDIzLjYyOCAxNS4zMDYgMjIuODc2IDE1LjQ2OSAyMi42ODggMTYuMDU1IEMgMjIuNTkxIDE2LjM1NCAyMi42NzkgMTYuNjgyIDIyLjkxMiAxNi44OTMgTCAyNC4wNzIgMTguMDgz''@;'; put 'put ''IEwgMjIuOTEyIDE5LjIxMyBDIDIyLjYgMTkuNTI1IDIyLjYgMjAuMDMgMjIuOTEyIDIwLjM0MyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0''@;'; put 'put ''IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQg''@;'; put 'put ''MTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIi8+XG4gIDxyZWN0IHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgZmlsbC1vcGFjaXR5PSIwIi8+JyksZS5DbHJTaGFwZVRpY2tDaGFy''@;'; put 'put ''dD0oMCxhLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0gMzIgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDUgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0''@;'; put 'put ''IDMwLjEwNSAzNCAyOSBMIDM0IDcgQyAzNCA1Ljg5NSAzMy4xMDUgNSAzMiA1IFogTSA0IDI5IEwgNCA3IEwgMzIgNyBMIDMyIDI5IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0gNiAyNSBMIDggMjUgTCA4IDIyIEwgMTAgMjIg''@;'; put 'put ''TCAxMCAyNSBMIDEzIDI1IEwgMTMgMjIgTCAxNSAyMiBMIDE1IDI1IEwgMTggMjUgTCAxOCAyMiBMIDIwIDIyIEwgMjAgMjUgTCAyMyAyNSBMIDIzIDIyIEwgMjUgMjIgTCAyNSAyNSBMIDI3LjcyMyAyNSBDIDI4LjAyMyAyNS4wMiAyOC4yOTMgMjUuMTggMjguNDYzIDI1LjQzIEMgMjguOTAz''@;'; put 'put ''IDI2LjA2IDI4LjQ4MyAyNi45MyAyNy43MjMgMjYuOTkgTCA2IDI2Ljk5MSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMw''@;'; put 'put ''LjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NiAzNCA3IFogTSA2IDI2Ljk5MSBMIDI3LjcyMyAyNi45OSBDIDI4LjQ4MyAyNi45MyAyOC45MDMgMjYuMDYgMjguNDYzIDI1LjQzIEMgMjguMjkzIDI1LjE4IDI4LjAyMyAyNS4w''@;'; put 'put ''MiAyNy43MjMgMjUgTCAyNSAyNSBMIDI1IDIyIEwgMjMgMjIgTCAyMyAyNSBMIDIwIDI1IEwgMjAgMjIgTCAxOCAyMiBMIDE4IDI1IEwgMTUgMjUgTCAxNSAyMiBMIDEzIDIyIEwgMTMgMjUgTCAxMCAyNSBMIDEwIDIyIEwgOCAyMiBMIDggMjUgTCA2IDI1IFoiLz5cbiAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIyIEwgMzIgMjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUyNCA2LjY2OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMzMSAyMi41''@;'; put 'put ''NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDQgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQgMTIuMzQgQyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiLz5cbiAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNIDYgMjUgTCA4IDI1IEwgOCAyMiBMIDEwIDIyIEwgMTAgMjUgTCAxMyAyNSBMIDEzIDIyIEwgMTUgMjIgTCAxNSAyNSBMIDE4IDI1IEwgMTggMjIgTCAyMCAyMiBMIDIwIDI1IEwgMjMg''@;'; put 'put ''MjUgTCAyMyAyMiBMIDI1IDIyIEwgMjUgMjUgTCAyNy43MjMgMjUgQyAyOC4wMjMgMjUuMDIgMjguMjkzIDI1LjE4IDI4LjQ2MyAyNS40MyBDIDI4LjkwMyAyNi4wNiAyOC40ODMgMjYuOTMgMjcuNzIzIDI2Ljk5IEwgNiAyNi45OTEgWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMg''@;'; put 'put ''MzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAz''@;'; put 'put ''Mi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSA2IDI2Ljk5MSBMIDI3LjcyMyAyNi45OSBDIDI4LjQ4MyAyNi45MyAyOC45MDMgMjYuMDYgMjguNDYzIDI1LjQzIEMgMjguMjkzIDI1LjE4IDI4LjAyMyAyNS4wMiAyNy43MjMgMjUgTCAyNSAyNSBMIDI1IDIyIEwgMjMgMjIgTCAyMyAyNSBMIDIw''@;'; put 'put ''IDI1IEwgMjAgMjIgTCAxOCAyMiBMIDE4IDI1IEwgMTUgMjUgTCAxNSAyMiBMIDEzIDIyIEwgMTMgMjUgTCAxMCAyNSBMIDEwIDIyIEwgOCAyMiBMIDggMjUgTCA2IDI1IFoiLz5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEg''@;'; put 'put ''MiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0gNiAyNSBMIDggMjUgTCA4IDIyIEwgMTAgMjIgTCAxMCAyNSBMIDEzIDI1IEwgMTMgMjIgTCAxNSAyMiBMIDE1IDI1IEwgMTggMjUgTCAxOCAyMiBMIDIwIDIyIEwgMjAgMjUgTCAyMyAyNSBMIDIzIDIyIEwgMjUgMjIgTCAyNSAyNSBMIDI3LjcyMyAy''@;'; put 'put ''NSBDIDI4LjAyMyAyNS4wMiAyOC4yOTMgMjUuMTggMjguNDYzIDI1LjQzIEMgMjguOTAzIDI2LjA2IDI4LjQ4MyAyNi45MyAyNy43MjMgMjYuOTkgTCA2IDI2Ljk5MSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAx''@;'; put 'put ''My4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIxLjk1OCA1IEwgMTcuNjI1IDEyLjM5NSBD''@;'; put 'put ''IDE2Ljc5NSAxMy42MDEgMTcuNTk0IDE1LjI0NSAxOS4wNjQgMTUuMzUxIEMgMTkuMTM0IDE1LjM1NyAxOS4yMDEgMTUuMzU5IDE5LjI3IDE1LjM1NyBMIDM0IDE1LjM1NyBaIE0gNiAyNi45OTEgTCAyNy43MjMgMjYuOTkgQyAyOC40ODMgMjYuOTMgMjguOTAzIDI2LjA2IDI4LjQ2MyAyNS40''@;'; put 'put ''MyBDIDI4LjI5MyAyNS4xOCAyOC4wMjMgMjUuMDIgMjcuNzIzIDI1IEwgMjUgMjUgTCAyNSAyMiBMIDIzIDIyIEwgMjMgMjUgTCAyMCAyNSBMIDIwIDIyIEwgMTggMjIgTCAxOCAyNSBMIDE1IDI1IEwgMTUgMjIgTCAxMyAyMiBMIDEzIDI1IEwgMTAgMjUgTCAxMCAyMiBMIDggMjIgTCA4IDI1''@;'; put 'put ''IEwgNiAyNSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMu''@;'; put 'put ''MDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0''@;'; put 'put ''IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIi8+JyksZS5DbHJTaGFwZUJlbGxDdXJ2ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMsMjlIM0ExLDEsMCwxLDEsMywyN0gzM0ExLDEsMCwxLDEsMzMsMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMsMjVoLS42MmE4LjExLDguMTEsMCwwLDEtOC02LjY3QzIzLjYyLDE0LjQ0LDIxLjg5LDcuOTQsMTgsNy45NHMtNS42OSw2LjUxLTYuMzgsMTAuMzlhOC4xMSw4LjExLDAsMCwxLTgsNi42NUgzYTEsMSwwLDEsMSwwLTJoLjZBNi4xMSw2''@;'; put 'put ''LjExLDAsMCwwLDkuNiwxOGMxLjQxLTcuODgsNC4zLTEyLDguMzUtMTJzNi45Myw0LjE2LDguMzMsMTJhNi4xMSw2LjExLDAsMCwwLDYsNUgzM2ExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksZS5DaGFydFNoYXBlcz17ImF4''@;'; put 'put ''aXMtY2hhcnQiOmUuQ2xyU2hhcGVBeGlzQ2hhcnQsImJhci1jaGFydCI6ZS5DbHJTaGFwZUJhckNoYXJ0LCJidWJibGUtY2hhcnQiOmUuQ2xyU2hhcGVCdWJibGVDaGFydCwiY2xvdWQtY2hhcnQiOmUuQ2xyU2hhcGVDbG91ZENoYXJ0LCJjdXJ2ZS1jaGFydCI6ZS5DbHJTaGFwZUN1cnZlQ2hh''@;'; put 'put ''cnQsImdyaWQtY2hhcnQiOmUuQ2xyU2hhcGVHcmlkQ2hhcnQsImxpbmUtY2hhcnQiOmUuQ2xyU2hhcGVMaW5lQ2hhcnQsInBpZS1jaGFydCI6ZS5DbHJTaGFwZVBpZUNoYXJ0LCJ0aWNrLWNoYXJ0IjplLkNsclNoYXBlVGlja0NoYXJ0LCJzY2F0dGVyLXBsb3QiOmUuQ2xyU2hhcGVTY2F0dGVy''@;'; put 'put ''UGxvdCwiYm94LXBsb3QiOmUuQ2xyU2hhcGVCb3hQbG90LCJoZWF0LW1hcCI6ZS5DbHJTaGFwZUhlYXRNYXAsImJlbGwtY3VydmUiOmUuQ2xyU2hhcGVCZWxsQ3VydmV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkNoYXJ0U2hhcGVzLCJhbmFseXRpY3MiLCgwLHIuZGVzY3JpcHRvckNvbmZp''@;'; put 'put ''ZykoZS5DaGFydFNoYXBlc1sibGluZS1jaGFydCJdKSksInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5oYXNPd25Qcm9wZXJ0eSgiQ2xhcml0eUljb25zIikmJndpbmRvdy5DbGFyaXR5SWNvbnMuYWRkKGUuQ2hhcnRTaGFwZXMpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hh''@;'; put 'put ''cGVzL2NvbW1lcmNlLXNoYXBlcy50cyI6ZnVuY3Rpb24oQSxlLGEpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5Db21tZXJjZVNoYXBlcz1lLkNsclNoYXBlRmFjdG9yeT1lLkNsclNoYXBlRW1wbG95ZWU9ZS5DbHJTaGFw''@;'; put 'put ''ZUVtcGxveWVlR3JvdXA9ZS5DbHJTaGFwZVJ1YmxlPWUuQ2xyU2hhcGVQZXNvPWUuQ2xyU2hhcGVDb2luQmFnPWUuQ2xyU2hhcGVCaXRjb2luPWUuQ2xyU2hhcGVZZW49ZS5DbHJTaGFwZVdvbj1lLkNsclNoYXBlUnVwZWU9ZS5DbHJTaGFwZVBvdW5kPWUuQ2xyU2hhcGVFQ2hlY2s9ZS5DbHJT''@;'; put 'put ''aGFwZURvbGxhckJpbGw9ZS5DbHJTaGFwZUJhbms9ZS5DbHJTaGFwZUNyZWRpdENhcmQ9ZS5DbHJTaGFwZURvbGxhcj1lLkNsclNoYXBlRXVybz1lLkNsclNoYXBlU3RvcmU9ZS5DbHJTaGFwZVdhbGxldD1lLkNsclNoYXBlU2hvcHBpbmdDYXJ0PWUuQ2xyU2hhcGVQaWdneUJhbms9ZS5DbHJT''@;'; put 'put ''aGFwZVNob3BwaW5nQmFnPWUuQ2xyU2hhcGVDYWxjdWxhdG9yPXZvaWQgMDt2YXIgcj1hKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyIpO2E9YSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKSxlLkNsclNo''@;'; put 'put ''YXBlQ2FsY3VsYXRvcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWk04LDMyVjRI''@;'; put 'put ''MjhWMzJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTEyLDhIMjUuNjdWNkgxMWExLDEsMCwwLDAtMSwxdjQuNjdoMloiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0zIiBwb2ludHM9IjEyIDE2IDEwIDE2IDEwIDE4IDE0IDE4IDE0IDE0IDEyIDE0IDEyIDE2Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgcG9pbnRzPSIyNCAxNiAyMiAxNiAyMiAxOCAyNiAx''@;'; put 'put ''OCAyNiAxNCAyNCAxNCAyNCAxNiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHBvaW50cz0iMTggMTYgMTYgMTYgMTYgMTggMjAgMTggMjAgMTQgMTggMTQgMTggMTYiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiBwb2ludHM9IjEyIDIyIDEwIDIyIDEwIDI0IDE0IDI0IDE0IDIwIDEyIDIwIDEyIDIyIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgcG9pbnRz''@;'; put 'put ''PSIyNCAyMiAyMiAyMiAyMiAyNCAyNiAyNCAyNiAyMCAyNCAyMCAyNCAyMiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIHBvaW50cz0iMTggMjIgMTYgMjIgMTYgMjQgMjAgMjQgMjAgMjAgMTggMjAgMTggMjIiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiBwb2ludHM9IjEyIDI4IDEwIDI4IDEwIDMwIDE0IDMwIDE0IDI2IDEyIDI2IDEyIDI4Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMTAiIHBvaW50cz0iMjQgMjggMjIgMjggMjIgMzAgMjYgMzAgMjYgMjYgMjQgMjYgMjQgMjgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMSIgcG9pbnRzPSIxOCAyOCAxNiAyOCAxNiAzMCAy''@;'; put 'put ''MCAzMCAyMCAyNiAxOCAyNiAxOCAyOCIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWk0xMiwy''@;'; put 'put ''OEgxMFYyNmgyWm0wLTZIMTBWMjBoMlptMC02SDEwVjE0aDJabTcsMTJIMTdWMjZoMlptMC02SDE3VjIwaDJabTAtNkgxN1YxNGgyWm03LDEySDI0VjI2aDJabTAtNkgyNFYyMGgyWm0wLTZIMjRWMTRoMlptMC03SDEwVjVIMjZaIi8+JyksZS5DbHJTaGFwZVNob3BwaW5nQmFnPSgwLGEuY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjUsMTJWOS4wNWE3LDcsMCwxLDAtMTQsMHY3YTEsMSwwLDAsMCwyLDBWMTRoOFYxMkgxM1Y5LjA1YTUsNSwwLDEsMSwxMCwwVjE2YTEsMSwwLDEsMCwyLDBWMTRoNVYzMkg2VjE0''@;'; put 'put ''SDlWMTJINFYzMi4wOUExLjkxLDEuOTEsMCwwLDAsNS45MSwzNEgzMC4wOUExLjkxLDEuOTEsMCwwLDAsMzIsMzIuMDlWMTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTMsOS4yMmE1LDUsMCwxLDEsMTAsMFYxMmgy''@;'; put 'put ''VjkuMjJhNyw3LDAsMSwwLTE0LDBWMTJoMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yNSwxMnYzLjFhMSwxLDAsMSwxLTIsMFYxMkgxM3YzLjFhMSwxLDAsMCwxLTIsMFYxMkg0VjMyYTIsMiwwLDAsMCwyLDJIMzBh''@;'; put 'put ''MiwyLDAsMCwwLDItMlYxMloiLz4nKSxlLkNsclNoYXBlUGlnZ3lCYW5rPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTkuNzIsMTAuNDdhMTEuNjUsMTEuNjUsMCwwLDAtNi4zMS41MkEuOC44LDAsMSwwLDE0''@;'; put 'put ''LDEyLjQ4LDEwLjExLDEwLjExLDAsMCwxLDE5LjQ0LDEyYS44LjgsMCwxLDAsLjI4LTEuNTdaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBjeD0iMjUuMzgiIGN5PSIxNi43MSIgcj0iMS4zNiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0zNS41MSwxOC42M2ExLDEsMCwwLDAtLjg0LS40NCwzLjQyLDMuNDIsMCwwLDEtMi4wOS0xLjEyLDE3LjM1LDE3LjM1LDAsMCwxLTIuNjMtMy43OGwyLjg4LTQuNUExLjg5LDEuODksMCwwLDAs''@;'; put 'put ''MzMsN2ExLjc3LDEuNzcsMCwwLDAtMS4zMy0xLDEwLjEyLDEwLjEyLDAsMCwwLTUuMzkuNzUsMTIuNzIsMTIuNzIsMCwwLDAtMi43MiwxLjYzLDE2Ljk0LDE2Ljk0LDAsMCwwLTUuMTYtMS4zOUMxMS4zMSw2LjMsNC44MywxMC45LDQsMTdINGEyLjU2LDIuNTYsMCwwLDEtMS4zOC0xLjUzLDEu''@;'; put 'put ''ODEsMS44MSwwLDAsMSwuMTQtMS40LDEuMTksMS4xOSwwLDAsMSwuNDMtLjQzLDEuMDgsMS4wOCwwLDAsMC0xLjEyLTEuODVBMy4zMSwzLjMxLDAsMCwwLC45MSwxM2E0LDQsMCwwLDAtLjMzLDMuMDhBNC43Niw0Ljc2LDAsMCwwLDMsMTguOTVsLjkyLjQ2YTE3LjU4LDE3LjU4LDAsMCwwLDEu''@;'; put 'put ''ODIsN2wuMTcuMzhBMjMsMjMsMCwwLDAsOS4yLDMxLjg4YTEsMSwwLDAsMCwuNzUuMzRoNC41MmExLDEsMCwwLDAsLjkyLTEuMzhMMTUsMjkuOTRsMS4xOC4xM2EyMC4zMywyMC4zMywwLDAsMCw0LDBjLjM3LjYuNzcsMS4yLDEuMjEsMS43OWExLDEsMCwwLDAsLjguNDFoNC4zNGExLDEsMCww''@;'; put 'put ''LDAsLjkyLTEuMzljLS4xNy0uNC0uMzQtLjgzLS40Ny0xLjItLjE4LS41My0uMzItMS0uNDMtMS40NUExMy4xOCwxMy4xOCwwLDAsMCwyOS41NiwyNmExMi41LDEyLjUsMCwwLDAsMywwLDEsMSwwLDAsMCwuNzgtLjYybDIuMjYtNS44MUExLDEsMCwwLDAsMzUuNTEsMTguNjNabS0zLjc4LDUu''@;'; put 'put ''NDRhMTEuMzcsMTEuMzcsMCwwLDEtMi4zNS0uMTFoMGE4LjIsOC4yLDAsMCwxLTIuNTMtLjg3LDEsMSwwLDAsMC0uOTMsMS43NywxMS43MiwxMS43MiwwLDAsMCwxLjI5LjU4LDgsOCwwLDAsMS0xLjgsMS4xNmwtMS4wNi40OHMuNDksMi4xOS44MiwzLjE2SDIyLjc5Yy0uMjQtLjM0LTEuNDUt''@;'; put 'put ''Mi4zNi0xLjQ1LTIuMzZsLS42Ny4wOWExOC41MywxOC41MywwLDAsMS00LjI1LjEyYy0uNjYtLjA2LTEuNzYtLjItMi42Mi0uMzVsLTEuNTUtLjI3cy42MywyLjQzLjc1LDIuNzR2MEgxMC40MkEyMC41NywyMC41NywwLDAsMSw3Ljc2LDI2bC0uMTgtLjM5QTE0LjYyLDE0LjYyLDAsMCwxLDYs''@;'; put 'put ''MTcuNDhjLjU0LTUuMTksNi4xMi05LjExLDEyLjE5LTguNTRhMTUuNDcsMTUuNDcsMCwwLDEsNS4wOCwxLjQ4bC42Mi4yOS41LS40N0ExMC4yOSwxMC4yOSwwLDAsMSwyNyw4LjU0YTguMjUsOC4yNSwwLDAsMSw0LS42NWwtMy4zOCw1LjI5LjI1LjVoMGEyMS4xNiwyMS4xNiwwLDAsMCwzLjMx''@;'; put 'put ''LDQuODQsNi40OSw2LjQ5LDAsMCwwLDIuMTQsMS4zOVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNSwxOC44N0E1LjgzLDUuODMsMCwwLDEsMzMsMTcuNjFhMjEuNjMsMjEuNjMsMCwwLDEtMy4yOS00Ljg0bDMuMzkt''@;'; put 'put ''NS4yOWEuOS45LDAsMCwwLS41NC0xLjM4LDkuNjcsOS42NywwLDAsMC01LjEzLjcyLDEyLDEyLDAsMCwwLTMuMTMsMkExNy4zNywxNy4zNywwLDAsMCwxOC42LDcuMTVDMTEuOCw2LjUyLDUuMjcsMTAuOSw0LjU0LDE3bC0uMTQtLjA3QTIuNzYsMi43NiwwLDAsMSwyLjksMTUuMjlhMiwyLDAs''@;'; put 'put ''MCwxLC4xNS0xLjU1LDEuMzIsMS4zMiwwLDAsMSwuNDctLjQ4LDEuMDgsMS4wOCwwLDEsMC0xLjEyLTEuODUsMy40NSwzLjQ1LDAsMCwwLTEuMjMsMS4yNUE0LjE2LDQuMTYsMCwwLDAsLjg0LDE1LjlhNSw1LDAsMCwwLDIuNTcsM2wxLC41NGExOC42MiwxOC42MiwwLDAsMCwyLDcuMywyMywy''@;'; put 'put ''MywwLDAsMCwzLDQuNzksMSwxLDAsMCwwLC44LjM4aDMuNjFhLjUyLjUyLDAsMCwwLC40LS43NUwxNCwzMC4zOGExMSwxMSwwLDAsMS0uMzMtMS4xOGMuOTEuMTYsMi4wOC4zMSwyLjg3LjM4YTIwLjA3LDIwLjA3LDAsMCwwLDMuMTIsMGMuMzkuNy43OSwxLjMzLDEuMTUsMS44NWEuOTMuOTMs''@;'; put 'put ''MCwwLDAsLjc3LjQxaDMuMTFhLjY1LjY1LDAsMCwwLC42MS0uODVjLS4yMy0uNzQtLjUzLTEuNzUtLjcxLTIuMzdhMTUuOSwxNS45LDAsMCwwLDMuNzUtMS43NmMuMTYtLjExLjMyLS4yNi40OC0uMzlhMTMuNzcsMTMuNzcsMCwwLDEtMi40Mi0xLC44LjgsMCwwLDEsLjc0LTEuNDIsMTEuNjQs''@;'; put 'put ''MTEuNjQsMCwwLDAsMy4xOCwxLjEsMTMuMzEsMTMuMzEsMCwwLDAsMi42OC4xMiwxLDEsMCwwLDAsLjktLjY2bDEuNzMtNC40NEExLDEsMCwwLDAsMzUsMTguODdaTTEzLjc5LDExLjU5YS44Ni44NiwwLDAsMS0uMy4wNS44NS44NSwwLDAsMS0uMy0xLjY0LDEyLjQxLDEyLjQxLDAsMCwxLDYu''@;'; put 'put ''NjktLjU1Ljg1Ljg1LDAsMSwxLS4zLDEuNjdBMTAuNzUsMTAuNzUsMCwwLDAsMTMuNzksMTEuNTlabTEyLjUyLDYuMTJhMS40NCwxLjQ0LDAsMSwxLDEuNDQtMS40NEExLjQ0LDEuNDQsMCwwLDEsMjYuMzIsMTcuNzJaIi8+JyksZS5DbHJTaGFwZVNob3BwaW5nQ2FydD0oMCxhLmNsckljb25T''@;'; put 'put ''VkcpKCc8Y2lyY2xlIGN4PSIxMy4zMyIgY3k9IjI5Ljc1IiByPSIyLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI3IiBjeT0iMjkuNzUiIHI9IjIuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjA4LDUuMzdBMSwxLDAsMCwwLDMyLjMxLDVIMTEuNDlsLjY1LDJIMzFMMjguMzMsMTloLTE1TDguNzYsNC41M2ExLDEsMCwwLDAtLjY2LS42NUw0LDIuNjJhMSwxLDAsMSwwLS41OSwxLjkyTDcsNS42NGw0LjU5''@;'; put 'put ''LDE0LjVMOS45NSwyMS40OGwtLjEzLjEzQTIuNjYsMi42NiwwLDAsMCw5Ljc0LDI1LDIuNzUsMi43NSwwLDAsMCwxMiwyNkgyOC42OWExLDEsMCwwLDAsMC0ySDExLjg0YS42Ny42NywwLDAsMS0uNTYtMWwyLjQxLTJIMjkuMTNhMSwxLDAsMCwwLDEtLjc4bDMuMTctMTRBMSwxLDAsMCwwLDMz''@;'; put 'put ''LjA4LDUuMzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEzLjMzIiBjeT0iMjkuNzUiIHI9IjIuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVy''@;'; put 'put ''dGVkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjciIGN5PSIyOS43NSIgcj0iMi4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjIwLjcxIDcgMjEuODcg''@;'; put 'put ''NSAxMS40OSA1IDEyLjE0IDcgMjAuNzEgNyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuMTUsMTUuNCwyOC4zMywxOWgtMTVMOC43Niw0LjUzYTEsMSwwLDAsMC0uNjYtLjY1''@;'; put 'put ''TDQsMi42MmExLDEsMCwxLDAtLjU5LDEuOTJMNyw1LjY0bDQuNTksMTQuNUw5Ljk1LDIxLjQ4bC0uMTMuMTNBMi42NiwyLjY2LDAsMCwwLDkuNzQsMjUsMi43NSwyLjc1LDAsMCwwLDEyLDI2SDI4LjY5YTEsMSwwLDAsMCwwLTJIMTEuODRhLjY3LjY3LDAsMCwxLS41Ni0xbDIuNDEtMkgyOS4x''@;'; put 'put ''M2ExLDEsMCwwLDAsMS0uNzhsMS4wOS00LjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMu''@;'; put 'put ''NjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xl''@;'; put 'put ''IGN4PSIxMy4zMyIgY3k9IjI5Ljc1IiByPSIyLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNyIgY3k9IjI5Ljc1IiByPSIyLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNTcsN2E3LjUyLDcuNTIsMCwwLDEtLjA3LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xSDExLjQ5bC42NSwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVsLS40MiwwTDI4LjMzLDE5aC0xNUw4Ljc2LDQuNTNhMSwxLDAsMCwwLS42Ni0uNjVMNCwyLjYyYTEsMSwwLDEsMC0uNTksMS45Mkw3LDUuNjRsNC41OSwxNC41TDkuOTUsMjEuNDhsLS4xMy4x''@;'; put 'put ''M0EyLjY2LDIuNjYsMCwwLDAsOS43NCwyNSwyLjc1LDIuNzUsMCwwLDAsMTIsMjZIMjguNjlhMSwxLDAsMCwwLDAtMkgxMS44NGEuNjcuNjcsMCwwLDEtLjU2LTFsMi40MS0ySDI5LjEzYTEsMSwwLDAsMCwxLS43OGwxLjU3LTYuOTFBNy41MSw3LjUxLDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFk''@;'; put 'put ''Z2UiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMy41IiBjeT0iMjkuNSIgcj0iMi41IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjYuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xLDYuMzlBMSwxLDAsMCwwLDMyLjMxLDZIOS4yMUw4Ljc2LDQuNTdhMSwxLDAsMCwwLS42Ni0uNjVMNCwyLjY2YTEsMSwwLDEsMC0uNTksMS45Mkw3LDUuNjhsNC41OCwxNC40N0w5Ljk1LDIxLjQ5bC0u''@;'; put 'put ''MTMuMTNBMi42NiwyLjY2LDAsMCwwLDkuNzQsMjUsMi43NSwyLjc1LDAsMCwwLDEyLDI2SDI4LjY5YTEsMSwwLDAsMCwwLTJIMTEuODRhLjY3LjY3LDAsMCwxLS41Ni0xbDIuNDEtMkgyOS4xMmExLDEsMCwwLDAsMS0uNzZsMy4yLTEzQTEsMSwwLDAsMCwzMy4xLDYuMzlaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTMuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9''@;'; put 'put ''IjI2LjUiIGN5PSIyOS41IiByPSIyLjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDkuMjFMOC43Niw0LjU3''@;'; put 'put ''YTEsMSwwLDAsMC0uNjYtLjY1TDQsMi42NmExLDEsMCwxLDAtLjU5LDEuOTJMNyw1LjY4bDQuNTgsMTQuNDdMOS45NSwyMS40OWwtLjEzLjEzQTIuNjYsMi42NiwwLDAsMCw5Ljc0LDI1LDIuNzUsMi43NSwwLDAsMCwxMiwyNkgyOC42OWExLDEsMCwwLDAsMC0ySDExLjg0YS42Ny42NywwLDAs''@;'; put 'put ''MS0uNTYtMWwyLjQxLTJIMjkuMTJhMSwxLDAsMCwwLDEtLjc2bDEuMTktNC44NFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCww''@;'; put 'put ''LDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxjaXJjbGUgY3g9IjEzLjUiIGN5PSIyOS41IiByPSIyLjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjYuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIyLjUsNkg5LjIxTDguNzYsNC41N2ExLDEsMCwwLDAtLjY2LS42NUw0LDIuNjZhMSwxLDAsMSwwLS41OSwxLjkyTDcsNS42OGw0LjU4LDE0''@;'; put 'put ''LjQ3TDkuOTUsMjEuNDlsLS4xMy4xM0EyLjY2LDIuNjYsMCwwLDAsOS43NCwyNSwyLjc1LDIuNzUsMCwwLDAsMTIsMjZIMjguNjlhMSwxLDAsMCwwLDAtMkgxMS44NGEuNjcuNjcsMCwwLDEtLjU2LTFsMi40MS0ySDI5LjEyYTEsMSwwLDAsMCwxLS43NmwxLjcxLTdBNy40OSw3LjQ5LDAsMCwx''@;'; put 'put ''LDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLWJhZGdlIiAvPicpLGUuQ2xyU2hhcGVXYWxsZXQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiwxNUgzMVY5YTEsMSwwLDAsMC0xLTFINmExLDEsMCwwLDEtMS0uODJWNi44MkExLDEsMCwwLDEs''@;'; put 'put ''Niw2SDI5LjU4YTEsMSwwLDAsMCwwLTJINkEzLDMsMCwwLDAsMyw3YTMuMDgsMy4wOCwwLDAsMCwwLC4zNlYyNy45M0E0LjEsNC4xLDAsMCwwLDcuMTMsMzJIMzBhMSwxLDAsMCwwLDEtMVYyNWgxYTEsMSwwLDAsMCwxLTFWMTZBMSwxLDAsMCwwLDMyLDE1Wk0yOSwzMEg3LjEzQTIuMTEsMi4x''@;'; put 'put ''MSwwLDAsMSw1LDI3LjkzVjkuODhBMy4xMSwzLjExLDAsMCwwLDYsMTBIMjl2NUgyMmE1LDUsMCwwLDAsMCwxMGg3Wm0yLTdIMjJhMywzLDAsMCwxLDAtNkgzMVoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGN4PSIy''@;'; put 'put ''My4wMSIgY3k9IjIwIiByPSIxLjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi45NCwxNEgzMVY5YTEsMSwwLDAsMC0xLTFINkExLDEsMCwwLDEsNSw3SDVWN0ExLDEsMCwwLDEsNiw2SDI5LjZhMSwxLDAsMSwwLDAt''@;'; put 'put ''Mkg2QTIuOTQsMi45NCwwLDAsMCwzLDYuODh2MjFBNC4xMyw0LjEzLDAsMCwwLDcuMTUsMzJIMzBhMSwxLDAsMCwwLDEtMVYyNmgxLjk0YS45My45MywwLDAsMCwxLS45MXYtMTBBMS4wOCwxLjA4LDAsMCwwLDMyLjk0LDE0Wk0zMiwyNGwtOC41OCwwYTMuODcsMy44NywwLDAsMS0zLjczLTQs''@;'; put 'put ''My44NywzLjg3LDAsMCwxLDMuNzMtNEwzMiwxNloiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgY3g9IjI0LjA0IiBjeT0iMTkuOTIiIHI9IjEuNSIvPicpLGUuQ2xyU2hhcGVTdG9yZT0oMCxhLmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI4LDMwSDE2VjIySDE0djhIOFYyMkg2djhhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjIySDI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTIiIGQ9Ik0zMy43OSwxMy4yNywyOS43MSw1LjExQTIsMiwwLDAsMCwyNy45Miw0SDguMDhBMiwyLDAsMCwwLDYuMjksNS4xMUwyLjIxLDEzLjI3YTIsMiwwLDAsMC0uMjEuOXYzLjA4YTIsMiwwLDAsMCwuNDYsMS4yOEE0LjY3LDQuNjcsMCwwLDAsNiwyMC4xM2E0LjcyLDQu''@;'; put 'put ''NzIsMCwwLDAsMy0xLjA3LDQuNzMsNC43MywwLDAsMCw2LDAsNC43Myw0LjczLDAsMCwwLDYsMCw0LjczLDQuNzMsMCwwLDAsNiwwLDQuNzIsNC43MiwwLDAsMCw2LjUzLS41MkEyLDIsMCwwLDAsMzQsMTcuMjZWMTQuMTdBMiwyLDAsMCwwLDMzLjc5LDEzLjI3Wk0zMCwxOC4xM0EyLjY4LDIu''@;'; put 'put ''NjgsMCwwLDEsMjcuODIsMTdMMjcsMTUuODgsMjYuMTksMTdhMi43MSwyLjcxLDAsMCwxLTQuMzcsMEwyMSwxNS44OCwyMC4xOSwxN2EyLjcxLDIuNzEsMCwwLDEtNC4zNywwTDE1LDE1Ljg4LDE0LjE5LDE3YTIuNzEsMi43MSwwLDAsMS00LjM3LDBMOSwxNS44OCw4LjE4LDE3QTIuNjgsMi42''@;'; put 'put ''OCwwLDAsMSw2LDE4LjEzYTIuNjQsMi42NCwwLDAsMS0yLS44OFYxNC4xN0w4LjA4LDZIMjcuOTJMMzIsMTQuMTZ2LjY3bDAsMi4zOUEyLjY3LDIuNjcsMCwwLDEsMzAsMTguMTNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBk''@;'; put 'put ''PSJNMjgsMzBIMTZWMjJIMTR2OEg4VjIySDZ2OGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMjJIMjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzMuNzksMTMuMjcsMjkuNzEsNS4xMUEyLDIsMCwwLDAs''@;'; put 'put ''MjcuOTIsNEg4LjA4QTIsMiwwLDAsMCw2LjI5LDUuMTFMMi4yMSwxMy4yN2EyLDIsMCwwLDAtLjIxLjl2My4wOGEyLDIsMCwwLDAsLjQ2LDEuMjhBNC42Nyw0LjY3LDAsMCwwLDYsMjAuMTNhNC43Miw0LjcyLDAsMCwwLDMtMS4wNyw0LjczLDQuNzMsMCwwLDAsNiwwLDQuNzMsNC43MywwLDAs''@;'; put 'put ''MCw2LDAsNC43Myw0LjczLDAsMCwwLDYsMCw0LjcyLDQuNzIsMCwwLDAsNi41My0uNTJBMiwyLDAsMCwwLDM0LDE3LjI2VjE0LjE3QTIsMiwwLDAsMCwzMy43OSwxMy4yN1pNMTUsMTQuNHYxLjUyTDE0LjE4LDE3YTIuNzEsMi43MSwwLDAsMS00LjM3LDBMOSwxNS44OFYxNC40TDExLjU5LDZI''@;'; put 'put ''MTZabTEyLDEuNDhMMjYuMTksMTdhMi43MSwyLjcxLDAsMCwxLTQuMzcsMEwyMSwxNS44OGwwLDBWMTQuNEwyMCw2aDQuNDVMMjcsMTQuNFoiLz4nKSxlLkNsclNoYXBlRXVybz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgZD0iTTMxLjQ4LDI4LjQ5YTEsMSwwLDAsMC0xLjM4LS4zMkExMiwxMiwwLDAsMSwxMi40NSwyMkgyNC4xNmExLDEsMCwwLDAsMC0ySDExLjkzYTExLjE2LDExLjE2LDAsMCwxLDAtNEgyNC4xNmExLDEsMCwwLDAsMC0ySDEyLjQ1QTEyLDEyLDAsMCwxLDMwLjA2LDcuOGExLDEsMCwwLDAs''@;'; put 'put ''MS4wNi0xLjdBMTQsMTQsMCwwLDAsMTAuMzQsMTRIMy41NGExLDEsMCwxLDAsMCwySDkuOTFhMTQsMTQsMCwwLDAtLjE2LDIsMTQsMTQsMCwwLDAsLjE2LDJIMy41NGExLDEsMCwxLDAsMCwyaDYuOGExNCwxNCwwLDAsMCwyMC44Myw3Ljg3QTEsMSwwLDAsMCwzMS40OCwyOC40OVoiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTcuNDIsMjUuMTZBMTAuODgsMTAuODgsMCwwLDEsOS4yMywyMUg1Ljg0YTEsMSwwLDAsMSwwLTJoM2MwLS4zNS0u''@;'; put 'put ''MDUtLjcxLS4wNS0xLjA3czAtLjYzLDAtLjkzaC0zYTEsMSwwLDAsMSwwLTJIOS4xOUExMC44NiwxMC44NiwwLDAsMSwyNS4zOCw4LjY5YTEuMjUsMS4yNSwwLDAsMS0xLjMyLDIuMTJBOC4zNiw4LjM2LDAsMCwwLDExLjgyLDE1aDkuMzZhMSwxLDAsMCwxLDAsMkgxMS4zM2E3LjcyLDcuNzIs''@;'; put 'put ''MCwwLDAsMCwyaDkuODJhMSwxLDAsMCwxLDAsMkgxMS44N2E4LjM2LDguMzYsMCwwLDAsMTIuMjIsNCwxLjI1LDEuMjUsMCwxLDEsMS4zMywyLjEyWiIvPicpLGUuQ2xyU2hhcGVEb2xsYXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiIGQ9Ik0yNiwyMS4xNWE2LjkxLDYuOTEsMCwwLDAtNC4zOC0zLjMyQTI2LDI2LDAsMCwwLDE5LDE3LjE5VjguMTJBMTAuMDUsMTAuMDUsMCwwLDEsMjMuODYsMTBhMSwxLDAsMCwwLDEuMzMtMS41QTExLjc1LDExLjc1LDAsMCwwLDE5LDYuMVYzYTEsMSwwLDAsMC0yLDBWNmMt''@;'; put 'put ''NC40LjEtNi44MywyLjI5LTcuNTcsNC4xOEE1LjU2LDUuNTYsMCwwLDAsMTEuNjYsMTcsMTMuMiwxMy4yLDAsMCwwLDE3LDE4Ljg0VjI4YTEyLjMsMTIuMywwLDAsMS03LjE0LTIuNzRBMSwxLDAsMSwwLDguNDksMjYuNywxNC4wOSwxNC4wOSwwLDAsMCwxNywzMHYzYTEsMSwwLDAsMCwyLDBW''@;'; put 'put ''MzBjMi44Mi0uMTksNi4wNy0xLjA5LDcuMy00Ljc2QTUuMzMsNS4zMywwLDAsMCwyNiwyMS4xNVpNMTIuNzksMTUuMzJhMy41NywzLjU3LDAsMCwxLTEuNDktNC4zOUMxMS40MSwxMC42MywxMi41Myw4LjEyLDE3LDh2OC44QTEwLjcsMTAuNywwLDAsMSwxMi43OSwxNS4zMlpNMjQuNCwyNC41''@;'; put 'put ''NmMtLjcyLDIuMTQtMi4zMiwzLjE3LTUuNCwzLjRWMTkuMjNjLjY0LjE0LDEuMy4zLDIsLjUxYTUsNSwwLDAsMSwzLjE5LDIuMzJBMy4zNCwzLjM0LDAsMCwxLDI0LjQsMjQuNTZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTcuNjUsMjEuNTljLTEsMy0zLjYxLDMuODQtNS45LDR2MmExLjI1LDEuMjUsMCwwLDEtMi41LDBWMjcuNTlBMTEuNDcsMTEuNDcsMCwwLDEsMTEsMjVhMS4yNSwxLjI1LDAsMSwxLDEu''@;'; put 'put ''NzEtMS44Myw5LjExLDkuMTEsMCwwLDAsNC41NSwxLjk0VjE4LjgzYTkuNjMsOS42MywwLDAsMS0zLjczLTEuNDEsNC44LDQuOCwwLDAsMS0xLjkxLTUuODRjLjU5LTEuNTEsMi40Mi0zLjIzLDUuNjQtMy41MVY2LjI1YTEuMjUsMS4yNSwwLDAsMSwyLjUsMFY4LjExYTkuNjcsOS42NywwLDAs''@;'; put 'put ''MSw0LjksMkExLjI1LDEuMjUsMCwwLDEsMjMsMTEuOTVhNy4xNCw3LjE0LDAsMCwwLTMuMjQtMS4zMXY2LjEzYy42LjEzLDEuMjQuMjcsMS45MS40OGE1Ljg1LDUuODUsMCwwLDEsMy42OSwyLjgyQTQuNjQsNC42NCwwLDAsMSwyNS42NSwyMy41OVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yMC45MiwxOS42NGMtLjQtLjEyLS43OS0uMjItMS4xNy0uM3Y1Ljc2YzItLjIsMy4wNy0uOSwzLjUzLTIuM2EyLjE1LDIuMTUsMCwwLDAtLjE1LTEuNThBMy40OSwzLjQ5LDAsMCwwLDIwLjkyLDE5LjY0WiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTEzLjk0LDEyLjQ4YTIuMzEsMi4zMSwwLDAsMCwxLDIuODcsNi41Myw2LjUzLDAsMCwwLDIuMzIuOTJWMTAuNTVDMTUuMTYsMTAuOCwxNC4xOSwxMS44NCwxMy45NCwxMi40OFoiLz4nKSxl''@;'; put 'put ''LkNsclNoYXBlQ3JlZGl0Q2FyZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZabTAsMiwwLDEySDRMNCw4Wk00LDI4VjI0SDMydjRaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjMiIHdpZHRoPSIyMiIgaGVpZ2h0PSIzMCIgcng9IjAuOTYiIHJ5PSIwLjk2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNikgcm90YXRlKDkwKSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIj''@;'; put 'put ''MDAwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjhBMiwyLDAsMCwwLDMyLDZabTAsMThINFYyMEgzMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZUJhbms9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMuNSwxMy41NiwxOCw1LjIzbDE0LjUsOC4zM2ExLDEsMCwwLDAsMS0xLjcz''@;'; put 'put ''TDE4LDIuOTIsMi41LDExLjgzYTEsMSwwLDEsMCwxLDEuNzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMjZhMSwxLDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMC0ySDI4VjE3LjYzSDI2VjI1SDE5VjE3LjYz''@;'; put 'put ''SDE3VjI1SDEwVjE3LjYzSDhWMjVINUExLDEsMCwwLDAsNCwyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI1LjAyIiB5PSIxNCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMjlIM2ExLDEsMCwwLDAsMCwySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjE1LDExLjU4''@;'; put 'put ''aDMuMjFMMTguNjUsNy43MmEuOC44LDAsMCwwLS44LDBsLTYuNzIsMy44NmgzLjIxbDMuOS0yLjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDI2YTEsMSwwLDAsMCwxLDFIMzFhMSwxLDAsMCwwLDAtMkgy''@;'; put 'put ''OFYxNy42M0gyNlYyNUgxOVYxNy42M0gxN1YyNUgxMFYxNy42M0g4VjI1SDVBMSwxLDAsMCwwLDQsMjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjUuMDIiIHk9IjE0IiB3aWR0aD0i''@;'; put 'put ''MjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMjlIM2ExLDEsMCwwLDAsMCwySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4xNSwxMS41OGgzLjIxTDE4LjY1LDcuNzJhLjguOCwwLDAsMC0uOCwwbC02LjcyLDMuODZoMy4yMWwzLjktMi4yNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjUsNmMwLS4xNiwwLS4zMiwwLS40OEwxOCwyLjkyLDIuNSwxMS44M2ExLDEsMCwxLDAsMSwxLjczTDE4LDUuMjMsMjIuNzcsOEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTQsMTMuMjRsLjU2LjMyYTEsMSwwLDAsMCwxLjQ0LTEuMTlBNy40NSw3LjQ1LDAsMCwxLDMxLjk0LDEzLjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTQsMjZhMSwxLDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMC0ySDI4VjE3LjYzSDI2VjI1SDE5VjE3LjYzSDE3VjI1SDEwVjE3LjYzSDhWMjVINUExLDEsMCwwLDAsNCwyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVk''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMjlIM2ExLDEsMCwwLDAsMCwySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjUsMTVBMy41''@;'; put 'put ''MSwzLjUxLDAsMCwxLDIwLDE0SDV2MkgzMVYxNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuNDYsOS43NGwuNjgtMS4xNy0xLjQ5LS44NWEuOC44LDAsMCwwLS44LDBsLTYu''@;'; put 'put ''NzIsMy44NmgzLjIxbDMuOS0yLjI0LDEuMS42M0MxOS4zOSw5Ljg5LDE5LjQyLDkuODEsMTkuNDYsOS43NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMDUsNS4yNSwxOCwy''@;'; put 'put ''LjkyLDIuNSwxMS44M2ExLDEsMCwxLDAsMSwxLjczTDE4LDUuMjMsMjEuMDUsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgs''@;'; put 'put ''MCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTMuNSwxMy41Niw1LDEyLjY4VjE2SDMxVjEyLjcxbDEuNDguODVhMSwxLDAsMCwwLDEtMS43M0wxOCwyLjkyLDIuNSwxMS44M2ExLDEsMCwxLDAsMSwxLjczWk0xNy44NSw3LjExYS44LjgsMCwwLDEsLjgsMEwyNS4zNywxMUgyMi4xNWwtMy45LTIuMjRMMTQu''@;'; put 'put ''MzUsMTFIMTEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuODUsMjdIMzJ2LS44NUExLjE1LDEuMTUsMCwwLDAsMzAuODUsMjVIMjhWMTcuNjNIMjRWMjVIMjBWMTcuNjNIMTZWMjVIMTJWMTcuNjNIOFYyNUg1''@;'; put 'put ''LjE1QTEuMTUsMS4xNSwwLDAsMCw0LDI2LjE1VjI3SDMuMTVBMS4xNSwxLjE1LDAsMCwwLDIsMjguMTVWMzFIMzRWMjguMTVBMS4xNSwxLjE1LDAsMCwwLDMyLjg1LDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMy''@;'; put 'put ''Ljg1LDI3SDMydi0uODVBMS4xNSwxLjE1LDAsMCwwLDMwLjg1LDI1SDI4VjE3LjYzSDI0VjI1SDIwVjE3LjYzSDE2VjI1SDEyVjE3LjYzSDhWMjVINS4xNUExLjE1LDEuMTUsMCwwLDAsNCwyNi4xNVYyN0gzLjE1QTEuMTUsMS4xNSwwLDAsMCwyLDI4LjE1VjMxSDM0VjI4LjE1QTEuMTUsMS4x''@;'; put 'put ''NSwwLDAsMCwzMi44NSwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjQ3LDcuNDcsMCwwLDEsMjQuMzksMTFIMjIuMTVsLTMuOS0yLjI0TDE0LjM1LDExSDExLjE0bDYu''@;'; put 'put ''NzItMy44NmEuOC44LDAsMCwxLC44LDBsNSwyLjg3QTcuNDUsNy40NSwwLDAsMSwyMi41LDZjMC0uMTYsMC0uMzIsMC0uNDhMMTgsMi45MiwyLjUsMTEuODNhMSwxLDAsMSwwLDEsMS43M0w1LDEyLjY4VjE2SDMxVjEzLjQyQTcuNTMsNy41MywwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45NCwxMy4yNGwuNTYuMzJhMSwxLDAsMCwwLDEuNDQtMS4xOUE3LjQ1LDcuNDUsMCwwLDEsMzEuOTQsMTMuMjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0z''@;'; put 'put ''Mi44NSwyN0gzMnYtLjg1QTEuMTUsMS4xNSwwLDAsMCwzMC44NSwyNUgyOFYxNy42M0gyNFYyNUgyMFYxNy42M0gxNlYyNUgxMlYxNy42M0g4VjI1SDUuMTVBMS4xNSwxLjE1LDAsMCwwLDQsMjYuMTVWMjdIMy4xNUExLjE1LDEuMTUsMCwwLDAsMiwyOC4xNVYzMUgzNFYyOC4xNUExLjE1LDEu''@;'; put 'put ''MTUsMCwwLDAsMzIuODUsMjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSwxNWEzLjUxLDMuNTEsMCwwLDEtMy01LjI2bC4xNC0uMjQtMS4zNS0uNzhMMTQuMzUsMTFIMTEuMTRs''@;'; put 'put ''Ni43Mi0zLjg2YS44LjgsMCwwLDEsLjgsMGwxLjc1LDEsMS42NS0yLjg2TDE4LDIuOTIsMi41LDExLjgzYTEsMSwwLDEsMCwxLDEuNzNMNSwxMi42OFYxNkgzMVYxNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz4nKSxlLkNsclNoYXBlRG9sbGFyQmlsbD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDhINGEyLDIsMCwwLDAtMiwyVjI2YTIsMiwwLDAsMCwy''@;'; put 'put ''LDJIMzJhMiwyLDAsMCwwLDItMlYxMEEyLDIsMCwwLDAsMzIsOFptMCw2YTQuMjUsNC4yNSwwLDAsMS0zLjktNEgzMlptMCwxLjYydjQuODNBNS44Nyw1Ljg3LDAsMCwwLDI2LjQ5LDI2aC0xN0E1Ljg3LDUuODcsMCwwLDAsNCwyMC40NFYxNS42QTUuODcsNS44NywwLDAsMCw5LjUxLDEwaDE3''@;'; put 'put ''QTUuODcsNS44NywwLDAsMCwzMiwxNS42Wk03LjksMTBBNC4yNSw0LjI1LDAsMCwxLDQsMTRWMTBaTTQsMjIuMDZBNC4yNSw0LjI1LDAsMCwxLDcuOSwyNkg0Wk0yOC4xLDI2QTQuMjUsNC4yNSwwLDAsMSwzMiwyMi4wNlYyNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMTAuODVjLTMuNDcsMC02LjMsMy4yMS02LjMsNy4xNXMyLjgzLDcuMTUsNi4zLDcuMTUsNi4zLTMuMjEsNi4zLTcuMTVTMjEuNDcsMTAuODUsMTgsMTAuODVabTAsMTIuNjljLTIuNTksMC00LjctMi40OS00LjctNS41NXMyLjEx''@;'; put 'put ''LTUuNTUsNC43LTUuNTUsNC43LDIuNDksNC43LDUuNTVTMjAuNTksMjMuNTUsMTgsMjMuNTVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIsOEg0YTIsMiwwLDAsMC0yLDJWMjZhMiwyLDAsMCwwLDIsMkgzMmEyLDIs''@;'; put 'put ''MCwwLDAsMi0yVjEwQTIsMiwwLDAsMCwzMiw4Wk00LDI2VjIxLjE1QTUuMTgsNS4xOCwwLDAsMSw4Ljc5LDI2Wk00LDE0Ljg1VjEwSDguNzlBNS4xOCw1LjE4LDAsMCwxLDQsMTQuODVaTTE4LDI1LjE1Yy0zLjQ3LDAtNi4zLTMuMjEtNi4zLTcuMTVzMi44My03LjE1LDYuMy03LjE1LDYuMywz''@;'; put 'put ''LjIxLDYuMyw3LjE1UzIxLjQ3LDI1LjE1LDE4LDI1LjE1Wk0zMiwyNkgyNy4yNUE1LjE4LDUuMTgsMCwwLDEsMzIsMjEuMTVabTAtMTEuMTVBNS4xOCw1LjE4LDAsMCwxLDI3LjI1LDEwSDMyWiIvPlxuICAgICAgICAgICAgPGVsbGlwc2UgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMiIgY3g9IjE4IiBjeT0iMTgiIHJ4PSI0IiByeT0iNC43MiIvPicpLGUuQ2xyU2hhcGVFQ2hlY2s9KDAsYS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjE2IiB5PSIxNiIgd2lkdGg9IjE1IiBoZWlnaHQ9IjIi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIyMCIgeT0iMjEiIHdpZHRoPSIxMSIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIg''@;'; put 'put ''ZD0iTTM0LDhIMTIuOTNhOC4zNSw4LjM1LDAsMCwxLC43OSwySDMzVjI2SDNWMTkuOWE3LjgzLDcuODMsMCwwLDEtMi0xLjM0VjI3YTEsMSwwLDAsMCwxLDFIMzRhMSwxLDAsMCwwLDEtMVY5QTEsMSwwLDAsMCwzNCw4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik02LjU3LDE4LjY4YTYuMTcsNi4xNywwLDAsMCw0LjMyLTEuNTksMS4yLDEuMiwwLDAsMCwuMzYtLjg0LDEuMDgsMS4wOCwwLDAsMC0xLjA5LTEuMTEsMSwxLDAsMCwwLS43MS4yNSw0LjMyLDQuMzIsMCwwLDEtMi44NCwxLDMuMzUsMy4zNSww''@;'; put 'put ''LDAsMS0zLjQ2LTNoNy41M0ExLjI5LDEuMjksMCwwLDAsMTIsMTIuMDYsNS42OCw1LjY4LDAsMCwwLDYuMjcsNi4xNCw2LDYsMCwwLDAsLjQsMTIuNHYwQTYsNiwwLDAsMCw2LjU3LDE4LjY4Wk02LjI1LDguMzljMS44MiwwLDIuODcsMS4zOSwzLDMuMTZIMy4xM0MzLjM4LDkuNjksNC41Niw4''@;'; put 'put ''LjM5LDYuMjUsOC4zOVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNCw4SDEyLjkxYTguNjEsOC42MSwwLDAsMSwxLjIsNC4zOSw4LDgsMCwwLDEtNy43OCw4LjI3QTcuNTEsNy41MSwwLDAsMSwxLDE4LjQxVjI3YTEs''@;'; put 'put ''MSwwLDAsMCwxLDFIMzRhMSwxLDAsMCwwLDEtMVY5QTEsMSwwLDAsMCwzNCw4Wk0zMSwyM0gyMFYyMUgzMVptMC01SDE2VjE2SDMxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTYuNTcsMTguNjhBNiw2LDAsMCwxLC40''@;'; put 'put ''LDEyLjQ0djBBNiw2LDAsMCwxLDYuMjcsNi4xNCw1LjY4LDUuNjgsMCwwLDEsMTIsMTIuMDZhMS4yOSwxLjI5LDAsMCwxLTEuMywxLjMySDMuMTVhMy4zNSwzLjM1LDAsMCwwLDMuNDYsMyw0LjMyLDQuMzIsMCwwLDAsMi44NC0xLDEsMSwwLDAsMSwuNzEtLjI1LDEuMDgsMS4wOCwwLDAsMSwx''@;'; put 'put ''LjA5LDEuMTEsMS4yLDEuMiwwLDAsMS0uMzYuODRBNi4xNyw2LjE3LDAsMCwxLDYuNTcsMTguNjhaTTkuMywxMS41NWMtLjE4LTEuNzctMS4yMy0zLjE2LTMtMy4xNnMtMi44NywxLjMtMy4xMiwzLjE2WiIvPicpLGUuQ2xyU2hhcGVQb3VuZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3LjksMzBIMTMuNEE4LjQ1LDguNDUsMCwwLDAsMTUsMjQuNjVWMjFoNC4zMWExLDEsMCwwLDAsMC0ySDE1VjExLjMxQTUuMjQsNS4yNCwwLDAsMSwyMC4yMSw2LDUuMTksNS4xOSwwLDAsMSwyNCw3LjczYTEsMSww''@;'; put 'put ''LDAsMCwxLjQ4LTEuMzVBNy4xOSw3LjE5LDAsMCwwLDEzLDExLjMxVjE5SDguNzJhMSwxLDAsMSwwLDAsMkgxM3YzLjY1QzEzLDI5LjM4LDEwLjEyLDMwLDEwLDMwYTEsMSwwLDAsMCwuMTcsMkgyNy45YTEsMSwwLDEsMCwwLTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm02LjUsMjUuOTJIMTEuNzRhMS4yNSwxLjI1LDAsMCwxLS4yMi0yLjQ4Yy4xNSwwLDEuNzItLjQ5LDEuNzItMy41NFYxOWgtMi41YTEsMSwwLDAsMSwwLTJoMi41VjEx''@;'; put 'put ''Ljg4YTUuODUsNS44NSwwLDAsMSw1LjcyLTYsNS42Myw1LjYzLDAsMCwxLDQuMjEsMS45NEExLjI1LDEuMjUsMCwxLDEsMjEuMyw5LjUxLDMuMDgsMy4wOCwwLDAsMCwxOSw4LjQyYTMuMzUsMy4zNSwwLDAsMC0zLjIyLDMuNDZWMTdoM2ExLDEsMCwwLDEsMCwyaC0zdjIuOUE3LjY1LDcuNjUs''@;'; put 'put ''MCwwLDEsMTUsMjUuNDJIMjQuNWExLjI1LDEuMjUsMCwwLDEsMCwyLjVaIi8+JyksZS5DbHJTaGFwZVJ1cGVlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjgsOEgyNC4xNEE3LjUyLDcuNTIsMCwwLDAsMjIu''@;'; put 'put ''Niw2SDI4YTEsMSwwLDAsMCwwLTJIMTBhMSwxLDAsMCwwLDAsMmg3LjU1YTUuNDIsNS40MiwwLDAsMSw0LjIsMkgxMGExLDEsMCwwLDAsMCwySDIyLjc5QTUuNTQsNS41NCwwLDAsMSwyMywxMS41MSw1LjQ4LDUuNDgsMCwwLDEsMTcuNTUsMTdIMTEuMTRhMSwxLDAsMCwwLS43NSwxLjY2TDIy''@;'; put 'put ''LjA2LDMyYTEsMSwwLDEsMCwxLjUtMS4zMkwxMy4zNSwxOWg0LjIxYTcuNTEsNy41MSwwLDAsMCw3LjMtOUgyOGExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQs''@;'; put 'put ''MTgsMTYsMTYsMCwwLDAsMTgsMlptNS44OCw5SDI2YTEsMSwwLDAsMSwwLDJIMjQuMjZjMCwuMDYsMCwuMTIsMCwuMTlhNi4wOSw2LjA5LDAsMCwxLTYsNi4yaC0ybDYuODIsOC4wNmExLjI1LDEuMjUsMCwwLDEtMS45MSwxLjYyTDEyLjYzLDE4Ljk0YTEuMjUsMS4yNSwwLDAsMSwxLTIuMDZo''@;'; put 'put ''NC43MWEzLjU5LDMuNTksMCwwLDAsMy40OC0zLjY5YzAtLjA3LDAtLjEzLDAtLjJoLTlhMSwxLDAsMCwxLDAtMmg4LjMyYTMuNDEsMy40MSwwLDAsMC0yLjc4LTEuNUgxMi43NWExLjI1LDEuMjUsMCwwLDEsMC0yLjVIMjZhMSwxLDAsMCwxLDAsMkgyMi42OEE2LjIzLDYuMjMsMCwwLDEsMjMu''@;'; put 'put ''ODgsMTFaIi8+JyksZS5DbHJTaGFwZVdvbj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLDE4SDI4Ljc1bC41LTJIMzNhMSwxLDAsMCwwLDAtMkgyOS43NGwyLjE3LTguNzZBMSwxLDAsMCwwLDMwLDQuNzZM''@;'; put 'put ''MjcuNjgsMTRIMjEuMzFMMTksNC43NmExLDEsMCwwLDAtMS45NCwwTDE0Ljc5LDE0SDguNDJMNi4xMyw0Ljc2YTEsMSwwLDAsMC0xLjk0LjQ4TDYuMzYsMTRIM2ExLDEsMCwwLDAsMCwySDYuODVsLjUsMkgzYTEsMSwwLDAsMCwwLDJINy44NGwyLjc5LDExLjI0YTEsMSwwLDAsMCwxLjk0LDBM''@;'; put 'put ''MTUuMzYsMjBoNS4zOGwyLjc5LDExLjI0YTEsMSwwLDAsMCwxLjk0LDBMMjguMjUsMjBIMzNhMSwxLDAsMCwwLDAtMlptLTUuODItMi0uNSwySDIyLjNsLS41LTJaTTE4LDkuMTYsMTkuMjUsMTRoLTIuNFpNOC45MSwxNmg1LjM4bC0uNSwySDkuNDFaTTExLjYsMjYuODQsOS45MSwyMEgxMy4z''@;'; put 'put ''Wk0xNS44NSwxOGwuNS0yaDMuMzlsLjUsMlptOC42NCw4Ljg0TDIyLjgsMjBoMy4zOVoiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIHBvaW50cz0iMTcuNzQgMTYgMTcuMjIgMTggMTguODUgMTggMTguMzIgMTYgMTcuNzQg''@;'; put 'put ''MTYiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIHBvaW50cz0iMTEuOTQgMTggMTQuNjMgMTggMTUuMTYgMTYgMTEuNDEgMTYgMTEuOTQgMTgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTMiIHBvaW50cz0iMTMuMjkgMjMuMSAxNC4xIDIwIDEyLjQ3IDIwIDEzLjI5IDIzLjEiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIHBvaW50cz0iMjEuNDQgMTggMjQuMTMgMTggMjQuNjYgMTYg''@;'; put 'put ''MjAuOTEgMTYgMjEuNDQgMTgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIHBvaW50cz0iMjIuNzggMjMuMSAyMy42IDIwIDIxLjk3IDIwIDIyLjc4IDIzLjEiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTYiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTI5LDIwSDI2LjE5TDI0LDI4LjMyYTEuMjUsMS4yNSwwLDAsMS0yLjQyLDBMMTkuMzgsMjBIMTYuNjlsLTIuMTksOC4zMmExLjI1LDEuMjUsMCwwLDEtMi40MiwwTDku''@;'; put 'put ''ODgsMjBIN2ExLDEsMCwwLDEsMC0ySDkuMzVsLS41My0ySDdhMSwxLDAsMCwxLDAtMkg4LjNsLTEtMy42OGExLjI1LDEuMjUsMCwwLDEsMi40Mi0uNjRMMTAuODgsMTRoNC44bDEuMTQtNC4zMmExLjI1LDEuMjUsMCwwLDEsMi40MiwwTDIwLjM4LDE0aDQuOGwxLjE0LTQuMzJhMS4yNSwxLjI1''@;'; put 'put ''LDAsMCwxLDIuNDIuNjRsLTEsMy42OEgyOWExLDEsMCwwLDEsMCwySDI3LjI0bC0uNTMsMkgyOWExLDEsMCwwLDEsMCwyWiIvPicpLGUuQ2xyU2hhcGVZZW49KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOS4z''@;'; put 'put ''NCw0LjU1YTEsMSwwLDEsMC0xLjY3LTEuMUwxOCwxOC4yMyw4LjMzLDMuNDVhMSwxLDAsMCwwLTEuNjcsMS4xTDE3LDIwLjM1VjIyLjJIMTJhLjguOCwwLDAsMCwwLDEuNmg1djIuNEgxMmEuOC44LDAsMCwwLDAsMS42aDVWMzJhMSwxLDAsMCwwLDIsMFYyNy44aDVhLjguOCwwLDAsMCwwLTEu''@;'; put 'put ''NkgxOVYyMy44aDVhLjguOCwwLDAsMCwwLTEuNkgxOVYyMC4zNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTguMDcsNy45MUwxOS43NCwyMEgy''@;'; put 'put ''MmExLDEsMCwwLDEsMCwySDE5LjI1djJIMjJhMSwxLDAsMCwxLDAsMkgxOS4yNXYyLjc1YTEuMjUsMS4yNSwwLDAsMS0yLjUsMFYyNkgxNGExLDEsMCwxLDEsMC0yaDIuNzVWMjJIMTRhMSwxLDAsMSwxLDAtMmgyLjI2TDkuOTMsOS45MWExLjI1LDEuMjUsMCwxLDEsMi4xMi0xLjMzTDE4LDE4''@;'; put 'put ''LjA4bDUuOTUtOS40OWExLjI1LDEuMjUsMCwxLDEsMi4xMiwxLjMzWiIvPicpLGUuQ2xyU2hhcGVCaXRjb2luPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNC4xMSwxNi44OEE1LjQ5LDUuNDksMCwwLDAsMjEsN1Y0YTEsMSwwLDAsMC0yLDBWN0gxNlY0YTEsMSwwLDAsMC0yLDBWN0gx''@;'; put 'put ''MWExLDEsMCwwLDAtMSwxVjI4YTEsMSwwLDAsMCwxLDFoM3YzYTEsMSwwLDAsMCwyLDBWMjloM3YzYTEsMSwwLDAsMCwyLDBWMjloLjA4QTYuMDcsNi4wNywwLDAsMCwyNywyMi44MXYtLjYyQTYuMjUsNi4yNSwwLDAsMCwyNC4xMSwxNi44OFpNMTIsOWg4LjY5YTMuNTksMy41OSwwLDAsMSwz''@;'; put 'put ''LjQzLDIuMzZBMy41MSwzLjUxLDAsMCwxLDIwLjc5LDE2SDEyWk0yNSwyMi44MUE0LjA4LDQuMDgsMCwwLDEsMjEuMDYsMjdIMTJWMThoOS4wNkE0LjA4LDQuMDgsMCwwLDEsMjUsMjIuMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0yMS4xOCwxOC40N0gxNC41djZoNi42OGEyLjcsMi43LDAsMCwwLDIuNjMtMi43N3YtLjQ4QTIuNzEsMi43MSwwLDAsMCwyMS4xOCwxOC40N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMs''@;'; put 'put ''MTMuNzVhMi4yNCwyLjI0LDAsMCwwLTIuMjMtMi4yNUgxNC41VjE2aDYuM0EyLjIyLDIuMjIsMCwwLDAsMjMsMTMuNzVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYs''@;'; put 'put ''MCwwLDAsMTgsMlptOC4zMSwxOS43M0E1LjIyLDUuMjIsMCwwLDEsMjEuMTgsMjdIMjF2MS45YTEsMSwwLDAsMS0yLDBWMjdIMTd2MS45YTEsMSwwLDAsMS0yLDBWMjdIMTMuMjVBMS4yNSwxLjI1LDAsMCwxLDEyLDI1Ljc1VjE3LjIzaDB2LTdBMS4yNSwxLjI1LDAsMCwxLDEzLjI1LDlIMTVW''@;'; put 'put ''Ny4wN2ExLDEsMCwwLDEsMiwwVjloMlY3LjA3YTEsMSwwLDAsMSwyLDBWOWE0LjcyLDQuNzIsMCwwLDEsMy4yLDgsNS4zMSw1LjMxLDAsMCwxLDIuMTEsNC4yNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksZS5DbHJTaGFwZUNvaW5CYWc9KDAsYS5jbHJJ''@;'; put 'put ''Y29uU1ZHKSgnPHBhdGggZD0iTTIxLjYsMjlhMSwxLDAsMCwwLTEtMWgtNmExLDEsMCwwLDAsMCwyaDZBMSwxLDAsMCwwLDIxLjYsMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjIuNTQsMjRoLTZhMSwxLDAsMCwwLDAsMmg2YTEs''@;'; put 'put ''MSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjIsMzJIMTZhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJN''@;'; put 'put ''MzIuNywzMmgtN2ExLDEsMCwwLDAsMCwyaDdhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMy43LDI4aC03YTEsMSwwLDAsMCwwLDJoN2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMzLjc0LDI2YTI4LDI4LDAsMCwwLTIuODItMTAuMTJBMjAuMjQsMjAuMjQsMCwwLDAsMjQuNiw4LjcxTDI3LDMuNDJhMSwxLDAsMCwwLS4wNy0xQTEsMSwwLDAsMCwyNi4xMywySDkuOGExLDEsMCwwLDAtLjkxLDEuNDJsMi40NSw1LjMx''@;'; put 'put ''YTIwLjMzLDIwLjMzLDAsMCwwLTYuMjgsNy4xNWMtMi4xNSw0LTIuODIsOC44OS0zLDEyLjI4YTMuNiwzLjYsMCwwLDAsMSwyLjcxQTMuNzksMy43OSwwLDAsMCw1LjgsMzEuOTRIMTJWMzBINS43MmExLjY4LDEuNjgsMCwwLDEtMS4yMS0uNTIsMS42MiwxLjYyLDAsMCwxLS40NS0xLjIzYy4x''@;'; put 'put ''NC0yLjYxLjY5LTcuNTgsMi43Ni0xMS40NUExOCwxOCwwLDAsMSwxMy4wOCwxMGgxYTMwLjgxLDMwLjgxLDAsMCwwLTEuODcsMi45MiwyMi43OCwyMi43OCwwLDAsMC0xLjQ3LDMuMzRsMS4zNy45MmEyNCwyNCwwLDAsMSwxLjQ5LTMuNDdBMjkuMSwyOS4xLDAsMCwxLDE2LjA1LDEwaDFhMjEu''@;'; put 'put ''NDUsMjEuNDUsMCwwLDEsMS40MSw1LDIyLjU0LDIyLjU0LDAsMCwxLC4zMiwzLjg2bDEuNTgtMS4xMWEyNC4xNSwyNC4xNSwwLDAsMC0uMzItM0EyNC44MiwyNC44MiwwLDAsMCwxOC43NiwxMGguNzhsLjkxLTJIMTMuMjFMMTEuMzYsNEgyNC41N2wtMi41LDUuNDdhOS45Myw5LjkzLDAsMCwx''@;'; put 'put ''LDEuMjMuNzgsMTguNjMsMTguNjMsMCwwLDEsNS44Niw2LjU3QTI2LjU5LDI2LjU5LDAsMCwxLDMxLjczLDI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgPHBhdGggZD0iTTI0Ljg5LDI2aDcuODZjLS42Ni04LjcxLTQuNDEtMTQuMTItOS4y''@;'; put 'put ''Mi0xNy4zMkwyNS43MiwzLjlhMSwxLDAsMCwwLS45MS0xLjRIMTEuMWExLDEsMCwwLDAtLjkxLDEuNGwxLjIsMi42SDIxLjUxbC0uOSwySDE4Ljc2QTI0LjksMjQuOSwwLDAsMSwyMCwxMy4xOWEyNC40OSwyNC40OSwwLDAsMSwuMzIsM2wtMS41OCwxLjExYTIyLjU0LDIyLjU0LDAsMCwwLS4z''@;'; put 'put ''Mi0zLjg2QTIxLjc0LDIxLjc0LDAsMCwwLDE3LDguNWgtMWEyOC4yMiwyOC4yMiwwLDAsMC0yLjQ4LDMuNywyMy45MSwyMy45MSwwLDAsMC0xLjQ5LDMuNDZsLTEuMzctLjkxYTIyLjc4LDIyLjc4LDAsMCwxLDEuNDctMy4zNEEzMC44MSwzMC44MSwwLDAsMSwxNC4wNSw4LjVIMTIuM2wuMDgu''@;'; put 'put ''MTdDNy4wOCwxMi4yLDMuMDUsMTguNCwzLjA1LDI4Ljc1QTEuNjUsMS42NSwwLDAsMCw0LjYxLDMwLjVoOEEyLjY3LDIuNjcsMCwwLDEsMTQuMjEsMjZhMi42NywyLjY3LDAsMCwxLS4zNy0xLjM0LDIuNywyLjcsMCwwLDEsMi43LTIuN2g2YTIuNywyLjcsMCwwLDEsMi43LDIuN0EyLjYzLDIu''@;'; put 'put ''NjMsMCwwLDEsMjQuODksMjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMS42LDI4LjVhMSwxLDAsMCwwLTEtMWgtNmExLDEsMCwwLDAsMCwyaDZBMSwxLDAsMCwwLDIxLjYsMjguNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTIiIC8+PHBhdGggZD0iTTIyLjU0LDIzLjVoLTZhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMiwzMS41SDE2YTEsMSwwLDAsMCwwLDJoNmExLDEsMCwwLDAsMC0yWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz48cGF0aCBkPSJNMzIuNywzMS41aC03YTEsMSwwLDAsMCwwLDJoN2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgLz48cGF0aCBkPSJNMzMuNywyNy41aC03YTEsMSwwLDAs''@;'; put 'put ''MCwwLDJoN2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNiIgLz4nKSxlLkNsclNoYXBlUGVzbz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEsMTMuMkgyNy44OUE2LjgxLDYuODEsMCwwLDAsMjgsMTJhNy44NSw3Ljg1LDAsMCwwLS4x''@;'; put 'put ''LTEuMTloMi45M2EuOC44LDAsMCwwLDAtMS42SDI3LjQ2QTguNDQsOC40NCwwLDAsMCwxOS41Nyw0SDExYTEsMSwwLDAsMC0xLDFWOS4ySDdhLjguOCwwLDAsMCwwLDEuNmgzdjIuNEg3YS44LjgsMCwwLDAsMCwxLjZoM1YzMWExLDEsMCwwLDAsMiwwVjIwaDcuNTdhOC40NSw4LjQ1LDAsMCww''@;'; put 'put ''LDcuODktNS4ySDMxYS44LjgsMCwwLDAsMC0xLjZaTTEyLDZoNy41N2E2LjUxLDYuNTEsMCwwLDEsNS42OCwzLjJIMTJabTAsNC44SDI1Ljg3YTUuNiw1LjYsMCwwLDEsMCwyLjRIMTJaTTE5LjU3LDE4SDEyVjE0LjhIMjUuMjVBNi41MSw2LjUxLDAsMCwxLDE5LjU3LDE4WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE0LjE4LDEzLjhWMTZoOS40NWE1LjI2LDUuMjYsMCwwLDAsLjA4LS44OSw0LjcyLDQuNzIsMCwwLDAtLjItMS4zMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0i''@;'; put 'put ''TTE0LjE4LDE5LjdoNS4xOWE0LjI4LDQuMjgsMCwwLDAsMy41LTEuOUgxNC4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTE5LjM3LDEwLjUxSDE0LjE4VjEyaDguMzdBNC4yMSw0LjIxLDAsMCwwLDE5LjM3LDEwLjUxWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz48cGF0aCBkPSJNMTcuNjcsMmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxNy42NywyWm0xMC41LDE1LjhIMjUuN2E2Ljg3LDYuODcsMCwwLDEtNi4zMyw0LjRIMTQuMTh2Ni41NGExLjI1LDEuMjUsMCwxLDEtMi41LDBWMTcu''@;'; put 'put ''OEg4Ljc2YS45LjksMCwxLDEsMC0xLjhoMi45MlYxMy44SDguNzZhLjkuOSwwLDEsMSwwLTEuOGgyLjkyVjkuMjZBMS4yNSwxLjI1LDAsMCwxLDEyLjkzLDhoNi40NGE2Ljg0LDYuODQsMCwwLDEsNi4xNSw0aDIuNjVhLjkuOSwwLDAsMSwwLDEuOEgyNi4wOWE2LjkxLDYuOTEsMCwwLDEsLjEy''@;'; put 'put ''LDEuMyw2LjgsNi44LDAsMCwxLS4wNi45aDJhLjkuOSwwLDAsMSwwLDEuOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+JyksZS5DbHJTaGFwZVJ1YmxlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMC41NywyMEE4LjIzLDguMjMsMCwwLDAsMjksMTJh''@;'; put 'put ''OC4yMyw4LjIzLDAsMCwwLTguNDMtOEgxMmExLDEsMCwwLDAtMSwxVjE4SDlhMSwxLDAsMCwwLDAsMmgydjJIOWExLDEsMCwwLDAsMCwyaDJ2N2ExLDEsMCwwLDAsMiwwVjI0aDlhMSwxLDAsMCwwLDAtMkgxM1YyMFpNMTMsNmg3LjU3QTYuMjQsNi4yNCwwLDAsMSwyNywxMmE2LjIzLDYuMjMs''@;'; put 'put ''MCwwLDEtNi40Myw2SDEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIwLjc1LDkuMjVIMTV2OC44MWg1Ljc5YTQuNjYsNC42NiwwLDAsMCw0Ljg2LTQuNEE0LjY1LDQuNjUsMCwwLDAsMjAuNzUsOS4yNVoiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMi43NSwxOC41NkgxNVYyMmg4LjI5YTEsMSwwLDAsMSwwLDJIMTV2NWExLjI1LDEuMjUsMCwwLDEtMi41LDBWMjRIMTEuMjVhMSwxLDAsMCwxLDAtMmgx''@;'; put 'put ''LjIxVjIwLjU2SDExLjI1YTEuMjUsMS4yNSwwLDAsMSwwLTIuNWgxLjIxVjhhMS4yNSwxLjI1LDAsMCwxLDEuMjUtMS4yNWg3YTcuMTQsNy4xNCwwLDAsMSw3LjM2LDYuOUE3LjE1LDcuMTUsMCwwLDEsMjAuNzUsMjAuNTZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0y''@;'; put 'put ''IiAvPicpLGUuQ2xyU2hhcGVFbXBsb3llZUdyb3VwPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOC40MiwxNi4zMWE1LjcsNS43LDAsMSwxLDUuNzYtNS43QTUuNzQsNS43NCwwLDAsMSwxOC40MiwxNi4zMVptMC05LjRhMy43LDMuNywwLDEsMCwzLjc2LDMuN0EzLjc0LDMuNzQsMCww''@;'; put 'put ''LDAsMTguNDIsNi45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xOC40MiwxNi4zMWE1LjcsNS43LDAsMSwxLDUuNzYtNS43QTUuNzQsNS43NCwwLDAsMSwxOC40MiwxNi4zMVptMC05LjRhMy43LDMuNywwLDEsMCwzLjc2LDMu''@;'; put 'put ''N0EzLjc0LDMuNzQsMCwwLDAsMTguNDIsNi45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMS45MSwxNy42NWEyMC42LDIwLjYsMCwwLDAtMTMsMkExLjc3LDEuNzcsMCwwLDAsOCwyMS4yNXYzLjU2YTEsMSwwLDAsMCwyLDBW''@;'; put 'put ''MjEuMzhhMTguOTIsMTguOTIsMCwwLDEsMTItMS42OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0zMywyMkgyNi4zVjIwLjUyYTEsMSwwLDAsMC0yLDBWMjJIMTdhMSwxLDAsMCwwLTEsMVYzM2ExLDEsMCwwLDAsMSwxSDMzYTEs''@;'; put 'put ''MSwwLDAsMCwxLTFWMjNBMSwxLDAsMCwwLDMzLDIyWk0zMiwzMkgxOFYyNGg2LjN2LjQxYTEsMSwwLDAsMCwyLDBWMjRIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cmVjdCB4PSIyMS44MSIgeT0iMjcuNDIiIHdpZHRoPSI1Ljk2IiBoZWln''@;'; put 'put ''aHQ9IjEuNCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgPHBhdGggZD0iTTEwLjg0LDEyLjI0YTE4LDE4LDAsMCwwLTcuOTUsMkExLjY3LDEuNjcsMCwwLDAsMiwxNS43MXYzLjFhMSwxLDAsMCwwLDIsMHYtMi45YTE2LDE2LDAsMCwxLDcuNTgtMS42''@;'; put 'put ''N0E3LjI4LDcuMjgsMCwwLDEsMTAuODQsMTIuMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPlxuICA8cGF0aCBkPSJNMzMuMTEsMTQuMjNhMTcuOCwxNy44LDAsMCwwLTcuMTItMiw3LjQ2LDcuNDYsMCwwLDEtLjczLDJBMTUuODksMTUuODksMCwwLDEs''@;'; put 'put ''MzIsMTUuOTF2Mi45YTEsMSwwLDEsMCwyLDB2LTMuMUExLjY3LDEuNjcsMCwwLDAsMzMuMTEsMTQuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuICA8cGF0aCBkPSJNMTAuNjYsMTAuNjFjMC0uMjMsMC0uNDUsMC0uNjdhMy4wNywzLjA3LDAsMCwx''@;'; put 'put ''LC41NC02LjExLDMuMTUsMy4xNSwwLDAsMSwyLjIuODksOC4xNiw4LjE2LDAsMCwxLDEuNy0xLjA4LDUuMTMsNS4xMywwLDAsMC05LDMuMjcsNS4xLDUuMSwwLDAsMCw0LjcsNUE3LjQyLDcuNDIsMCwwLDEsMTAuNjYsMTAuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtOCIvPlxuICA8cGF0aCBkPSJNMjQuNzcsMS44M2E1LjE3LDUuMTcsMCwwLDAtMy42OSwxLjU1LDcuODcsNy44NywwLDAsMSwxLjksMSwzLjE0LDMuMTQsMCwwLDEsNC45MywyLjUyLDMuMDksMy4wOSwwLDAsMS0xLjc5LDIuNzcsNy4xNCw3LjE0LDAsMCwxLC4wNi45Myw3Ljg4LDcu''@;'; put 'put ''ODgsMCwwLDEtLjEsMS4yLDUuMSw1LjEsMCwwLDAsMy44My00LjlBNS4xMiw1LjEyLDAsMCwwLDI0Ljc3LDEuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIvPlxuICBcbiAgPGVsbGlwc2UgY3g9IjE4IiBjeT0iMTEuMjgiIHJ4PSI0Ljc2IiByeT0iNC43''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xMC43OCwxMS43NWMuMTYsMCwuMzIsMCwuNDgsMCwwLS4xNSwwLS4yOCwwLS40M2E2LjcsNi43LDAsMCwxLDMuNzUtNiw0LjYyLDQuNjIsMCwxLDAtNC4yMSw2LjQ2WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjQuNzYsMTEuMjhjMCwuMTUsMCwuMjgsMCwuNDMuMTYsMCwuMzIsMCwuNDgsMEE0LjU4LDQuNTgsMCwxLDAsMjEsNS4yOSw2LjcsNi43LDAsMCwxLDI0Ljc2LDExLjI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMjIuMjksMTYuNDVhMjEuNDUsMjEuNDUsMCwwLDEsNS43MSwyLDIuNzEsMi43MSwwLDAsMSwuNjguNTNIMzRWMTUuNTZhLjcyLjcyLDAsMCwwLS4zOC0uNjQsMTgsMTgsMCwwLDAtOC40LTIuMDVsLS42NiwwQTYuNjYsNi42NiwwLDAsMSwy''@;'; put 'put ''Mi4yOSwxNi40NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTYuNTMsMjAuOTJBMi43NiwyLjc2LDAsMCwxLDgsMTguNDdhMjEuNDUsMjEuNDUsMCwwLDEsNS43MS0yLDYuNjYsNi42NiwwLDAsMS0yLjI3LTMuNTVsLS42NiwwYTE4LDE4''@;'; put 'put ''LDAsMCwwLTguNCwyLjA1LjcyLjcyLDAsMCwwLS4zOC42NFYyMkg2LjUzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIvPlxuICA8cmVjdCB4PSIyMS40NiIgeT0iMjYuNjkiIHdpZHRoPSI1Ljk2IiBoZWlnaHQ9IjEuNCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtNiIvPlxuICA8cGF0aCBkPSJNMzIuODEsMjEuMjZIMjUuOTR2LTFhMSwxLDAsMCwwLTIsMHYxSDIyVjE4LjQzQTIwLjE3LDIwLjE3LDAsMCwwLDE4LDE4YTE5LjI3LDE5LjI3LDAsMCwwLTkuMDYsMi4yMi43Ni43NiwwLDAsMC0uNDEuNjh2NS42MWg3LjExdjYuMDlhMSwx''@;'; put 'put ''LDAsMCwwLDEsMUgzMi44MWExLDEsMCwwLDAsMS0xVjIyLjI2QTEsMSwwLDAsMCwzMi44MSwyMS4yNlptLTEsMTAuMzZIMTcuNjRWMjMuMjZoNi4zdi45MWExLDEsMCwwLDAsMiwwdi0uOTFoNS44N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTciLz4nKSxlLkNsclNo''@;'; put 'put ''YXBlRW1wbG95ZWU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE2LjQzLDE2LjY5YTcsNywwLDEsMSw3LTdBNyw3LDAsMCwxLDE2LjQzLDE2LjY5Wm0wLTExLjkyYTUsNSwwLDEsMCw1LDVBNSw1LDAsMCwwLDE2LjQzLDQuNzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMjIsMTcuOUEyNS40MSwyNS40MSwwLDAsMCw1Ljg4LDE5LjU3YTQuMDYsNC4wNiwwLDAsMC0yLjMxLDMuNjhWMjkuMmExLDEsMCwxLDAsMiwwVjIzLjI1YTIsMiwwLDAsMSwxLjE2LTEuODYsMjIuOTEsMjIuOTEsMCwwLDEsOS43LTIuMTEsMjMu''@;'; put 'put ''NTgsMjMuNTgsMCwwLDEsNS41Ny42NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxyZWN0IHg9IjIyLjE0IiB5PSIyNy40MSIgd2lkdGg9IjYuMTQiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MyIvPlxuICA8cGF0aCBkPSJNMzMuMTcsMjEuNDdIMjh2Mmg0LjE3djguMzdIMThWMjMuNDdoNi4zdi40MmExLDEsMCwwLDAsMiwwVjIwYTEsMSwwLDAsMC0yLDB2MS40N0gxN2ExLDEsMCwwLDAtMSwxVjMyLjg0YTEsMSwwLDAsMCwxLDFIMzMuMTdhMSwxLDAsMCwwLDEtMVYyMi40N0ExLDEs''@;'; put 'put ''MCwwLDAsMzMuMTcsMjEuNDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICBcbiAgPGNpcmNsZSBjeD0iMTYuODYiIGN5PSI5LjczIiByPSI2LjQ2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxyZWN0IHg9IjIx''@;'; put 'put ''IiB5PSIyOCIgd2lkdGg9IjciIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0xNSwzMHYzYTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEtMVYyM2ExLDEsMCwwLDAtMS0xSDI2VjIwLjUzYTEsMSwwLDAsMC0yLDBW''@;'; put 'put ''MjJIMjJWMTguNDJBMzIuMTIsMzIuMTIsMCwwLDAsMTYuODYsMThhMjYsMjYsMCwwLDAtMTEsMi4zOSwzLjI4LDMuMjgsMCwwLDAtMS44OCwzVjMwWm0xNywySDE3VjI0aDd2LjQyYTEsMSwwLDAsMCwyLDBWMjRoNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz4n''@;'; put 'put ''KSxlLkNsclNoYXBlRmFjdG9yeT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMuNDcsNy4zN2ExLDEsMCwwLDAtMSwuMDZMMjMsMTMuNzdWOC4yNmExLDEsMCwwLDAtMS42NC0uNzdMMTMuNDgsMTRIMTBWNC42MmExLDEsMCwwLDAtLjc4LTFsLTQtLjlhMSwxLDAsMCwwLS44NS4yQTEs''@;'; put 'put ''MSwwLDAsMCw0LDMuNzNWMTRIM2ExLDEsMCwwLDAtMSwxVjMxYTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEtMVY4LjI2QTEsMSwwLDAsMCwzMy40Nyw3LjM3Wk02LDVsMiwuNDRWMTRINlpNMzIsMzBINFYxNmg5LjgzYTEsMSwwLDAsMCwuNjQtLjIzTDIxLDEwLjM3djUuMjhhMSwxLDAs''@;'; put 'put ''MCwwLDEuNTYuODNMMzIsMTAuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cmVjdCB4PSI2IiB5PSIxNy45OSIgd2lkdGg9IjgiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHJl''@;'; put 'put ''Y3QgeD0iNiIgeT0iMjEuOTkiIHdpZHRoPSI4IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxyZWN0IHg9IjYiIHk9IjI1Ljk5IiB3aWR0aD0iOCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtNCIvPlxuICA8cmVjdCB4PSIxOSIgeT0iMTguOTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxyZWN0IHg9IjE5IiB5PSIyNC45OSIgd2lkdGg9IjIiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cbiAgPHJlY3QgeD0iMjMiIHk9IjE4Ljk5IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuICA8cmVjdCB4PSIyMyIgeT0iMjQuOTkiIHdpZHRoPSIyIiBoZWlnaHQ9''@;'; put 'put ''IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+XG4gIDxyZWN0IHg9IjI3IiB5PSIxOC45OSIgd2lkdGg9IjIiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiLz5cbiAgPHJlY3QgeD0iMjciIHk9IjI0Ljk5''@;'; put 'put ''IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiLz5cbiAgXG4gIDxwYXRoIGQ9Ik0zMi40NSw4LjQ0LDIyLDE1LjNWOS41MWExLDEsMCwwLDAtMS42My0uNzhMMTQuMDcsMTRIMTBWNC4wNkw0LDIuNzFWMTRIMlYzMWExLDEs''@;'; put 'put ''MCwwLDAsMSwxSDMzYTEsMSwwLDAsMCwxLTFWOS4yN0ExLDEsMCwwLDAsMzIuNDUsOC40NFpNMTQsMjlINlYyN2g4Wm0wLTRINlYyM2g4Wm0wLTRINlYxOWg4Wm04LDhIMjBWMjZoMlptMC02SDIwVjIwaDJabTQsNkgyNFYyNmgyWm0wLTZIMjRWMjBoMlptNCw2SDI4VjI2aDJabTAtNkgyOFYy''@;'; put 'put ''MGgyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLGUuQ29tbWVyY2VTaGFwZXM9e2NhbGN1bGF0b3I6ZS5DbHJTaGFwZUNhbGN1bGF0b3IsInBpZ2d5LWJhbmsiOmUuQ2xyU2hhcGVQaWdneUJhbmssInNob3BwaW5nLWJhZyI6ZS5DbHJTaGFwZVNob3BwaW5n''@;'; put 'put ''QmFnLCJzaG9wcGluZy1jYXJ0IjplLkNsclNoYXBlU2hvcHBpbmdDYXJ0LHdhbGxldDplLkNsclNoYXBlV2FsbGV0LHN0b3JlOmUuQ2xyU2hhcGVTdG9yZSxldXJvOmUuQ2xyU2hhcGVFdXJvLGRvbGxhcjplLkNsclNoYXBlRG9sbGFyLHBlc286ZS5DbHJTaGFwZVBlc28sImNyZWRpdC1jYXJk''@;'; put 'put ''IjplLkNsclNoYXBlQ3JlZGl0Q2FyZCxiYW5rOmUuQ2xyU2hhcGVCYW5rLCJkb2xsYXItYmlsbCI6ZS5DbHJTaGFwZURvbGxhckJpbGwsImUtY2hlY2siOmUuQ2xyU2hhcGVFQ2hlY2sscG91bmQ6ZS5DbHJTaGFwZVBvdW5kLHJ1cGVlOmUuQ2xyU2hhcGVSdXBlZSx3b246ZS5DbHJTaGFwZVdv''@;'; put 'put ''bix5ZW46ZS5DbHJTaGFwZVllbixiaXRjb2luOmUuQ2xyU2hhcGVCaXRjb2luLHJ1YmxlOmUuQ2xyU2hhcGVSdWJsZSwiY29pbi1iYWciOmUuQ2xyU2hhcGVDb2luQmFnLCJlbXBsb3llZS1ncm91cCI6ZS5DbHJTaGFwZUVtcGxveWVlR3JvdXAsZW1wbG95ZWU6ZS5DbHJTaGFwZUVtcGxveWVl''@;'; put 'put ''LGZhY3Rvcnk6ZS5DbHJTaGFwZUZhY3Rvcnl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkNvbW1lcmNlU2hhcGVzLCJzYXZpbmdzIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuQ29tbWVyY2VTaGFwZXNbInBpZ2d5LWJhbmsiXSkpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5k''@;'; put 'put ''b3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChlLkNvbW1lcmNlU2hhcGVzKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBlcy50cyI6ZnVuY3Rpb24oQSxlLGEpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5Db3JlU2hhcGVzPWUuQ2xyU2hhcGVBcnJvdz1lLkNsclNoYXBlU3RlcEZvcndhcmQyPWUuQ2xyU2hhcGVFeWVIaWRlPWUuQ2xyU2hhcGVFeWU9ZS5DbHJTaGFwZUV2ZW50PWUuQ2xyU2hhcGVDYWxlbmRhcj1lLkNsclNoYXBl''@;'; put 'put ''QW5nbGVEb3VibGU9ZS5DbHJTaGFwZVZpZXdDb2x1bW5zPWUuQ2xyU2hhcGVTZWFyY2g9ZS5DbHJTaGFwZVZtQnVnPWUuQ2xyU2hhcGVGaWx0ZXJHcmlkQ2lyY2xlPWUuQ2xyU2hhcGVGaWx0ZXJHcmlkPWUuQ2xyU2hhcGVFbGxpcHNpc1ZlcnRpY2FsPWUuQ2xyU2hhcGVFbGxpcHNpc0hvcml6''@;'; put 'put ''b250YWw9ZS5DbHJTaGFwZUNsb3VkPWUuQ2xyU2hhcGVJbWFnZT1lLkNsclNoYXBlQmVsbD1lLkNsclNoYXBlRm9sZGVyT3Blbj1lLkNsclNoYXBlRm9sZGVyPWUuQ2xyU2hhcGVBbmdsZT1lLkNsclNoYXBlVXNlcj1lLkNsclNoYXBlQmFycz1lLkNsclNoYXBlSGVscEluZm89ZS5DbHJTaGFw''@;'; put 'put ''ZVdhcm5pbmdTdGFuZGFyZD1lLkNsclNoYXBlRXJyb3JTdGFuZGFyZD1lLkNsclNoYXBlU3VjY2Vzc1N0YW5kYXJkPWUuQ2xyU2hhcGVJbmZvU3RhbmRhcmQ9ZS5DbHJTaGFwZUluZm9DaXJjbGU9ZS5DbHJTaGFwZUNoZWNrQ2lyY2xlPWUuQ2xyU2hhcGVFeGNsYW1hdGlvbkNpcmNsZT1lLkNs''@;'; put 'put ''clNoYXBlRXhjbGFtYXRpb25UcmlhbmdsZT1lLkNsclNoYXBlVGltZXM9ZS5DbHJTaGFwZUNoZWNrPWUuQ2xyU2hhcGVDb2c9ZS5DbHJTaGFwZUhvbWU9ZS5DbHJTaGFwZVVua25vd25TdGF0dXM9dm9pZCAwO3ZhciByPWEoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3It''@;'; put 'put ''Y29uZmlnLnRzIik7YT1hKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpLGUuQ2xyU2hhcGVVbmtub3duU3RhdHVzPSgwLGEuY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4PSIx''@;'; put 'put ''Ny41OCIgY3k9IjI2LjIzIiByPSIxLjQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI0LjcsMTNhNS4xOCw1LjE4LDAsMCwwLTIuMTYtMy41Niw3LjI2LDcuMjYsMCwwLDAtNS43MS0xLjA5QTExLjM0LDEx''@;'; put 'put ''LjM0LDAsMCwwLDEyLDEwLjQ0LDEsMSwwLDEsMCwxMy4yNiwxMmE5LjMyLDkuMzIsMCwwLDEsMy45NC0xLjcyLDUuMjksNS4yOSwwLDAsMSw0LjE2Ljc0LDMuMjEsMy4yMSwwLDAsMSwxLjM1LDIuMTljLjMzLDIuNjktMy4xOSwzLjc1LTUuMzIsNC4xNGwtLjgyLjE1djQuMzZhMSwxLDAsMCww''@;'; put 'put ''LDIsMFYxOS4xN0MyNC42MSwxNy43OSwyNC44OCwxNC40MSwyNC43LDEzWiIvPicpLGUuQ2xyU2hhcGVIb21lPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMuNzEsMTcuMjlsLTE1LTE1YTEsMSwwLDAsMC0x''@;'; put 'put ''LjQxLDBsLTE1LDE1YTEsMSwwLDAsMCwxLjQxLDEuNDFMMTgsNC40MSwzMi4yOSwxOC43MWExLDEsMCwwLDAsMS40MS0xLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjgsMzJoLTVWMjJIMTNWMzJI''@;'; put 'put ''OFYxOEw2LDIwVjMyYTIsMiwwLDAsMCwyLDJoN1YyNGg2VjM0aDdhMiwyLDAsMCwwLDItMlYxOS43NmwtMi0yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMywxOWExLDEsMCwwLDEtLjcxLS4yOUwxOCw0LjQx''@;'; put 'put ''LDMuNzEsMTguNzFhMSwxLDAsMCwxLTEuNDEtMS40MWwxNS0xNWExLDEsMCwwLDEsMS40MSwwbDE1LDE1QTEsMSwwLDAsMSwzMywxOVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTgsNy43OSw2LDE5LjgzVjMy''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJoN1YyNGg2VjM0aDdhMiwyLDAsMCwwLDItMlYxOS43NloiLz4nKSxlLkNsclNoYXBlQ29nPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTguMSwxMWMtMy45LDAtNywzLjEtNyw3czMu''@;'; put 'put ''MSw3LDcsN2MzLjksMCw3LTMuMSw3LTdTMjIsMTEsMTguMSwxMXogTTE4LjEsMjNjLTIuOCwwLTUtMi4yLTUtNXMyLjItNSw1LTVjMi44LDAsNSwyLjIsNSw1UzIwLjksMjMsMTguMSwyM3oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMiIgZD0iTTMyLjgsMTQuN0wzMCwxMy44bC0wLjYtMS41bDEuNC0yLjZjMC4zLTAuNiwwLjItMS40LTAuMy0xLjlsLTIuNC0yLjRjLTAuNS0wLjUtMS4zLTAuNi0xLjktMC4zbC0yLjYsMS40bC0xLjUtMC42bC0wLjktMi44QzIxLDIuNSwyMC40LDIsMTkuNywyaC0zLjRjLTAu''@;'; put 'put ''NywwLTEuMywwLjUtMS40LDEuMkwxNCw2Yy0wLjYsMC4xLTEuMSwwLjMtMS42LDAuNkw5LjgsNS4yQzkuMiw0LjksOC40LDUsNy45LDUuNUw1LjUsNy45QzUsOC40LDQuOSw5LjIsNS4yLDkuOGwxLjMsMi41Yy0wLjIsMC41LTAuNCwxLjEtMC42LDEuNmwtMi44LDAuOUMyLjUsMTUsMiwxNS42''@;'; put 'put ''LDIsMTYuM3YzLjRjMCwwLjcsMC41LDEuMywxLjIsMS41TDYsMjIuMWwwLjYsMS41bC0xLjQsMi42Yy0wLjMsMC42LTAuMiwxLjQsMC4zLDEuOWwyLjQsMi40YzAuNSwwLjUsMS4zLDAuNiwxLjksMC4zbDIuNi0xLjRsMS41LDAuNmwwLjksMi45YzAuMiwwLjYsMC44LDEuMSwxLjUsMS4xaDMu''@;'; put 'put ''NGMwLjcsMCwxLjMtMC41LDEuNS0xLjFsMC45LTIuOWwxLjUtMC42bDIuNiwxLjRjMC42LDAuMywxLjQsMC4yLDEuOS0wLjNsMi40LTIuNGMwLjUtMC41LDAuNi0xLjMsMC4zLTEuOWwtMS40LTIuNmwwLjYtMS41bDIuOS0wLjljMC42LTAuMiwxLjEtMC44LDEuMS0xLjV2LTMuNEMzNCwxNS42''@;'; put 'put ''LDMzLjUsMTQuOSwzMi44LDE0Ljd6IE0zMiwxOS40bC0zLjYsMS4xTDI4LjMsMjFjLTAuMywwLjctMC42LDEuNC0wLjksMi4xbC0wLjMsMC41bDEuOCwzLjNsLTIsMmwtMy4zLTEuOGwtMC41LDAuM2MtMC43LDAuNC0xLjQsMC43LTIuMSwwLjlsLTAuNSwwLjFMMTkuNCwzMmgtMi44bC0xLjEt''@;'; put 'put ''My42TDE1LDI4LjNjLTAuNy0wLjMtMS40LTAuNi0yLjEtMC45bC0wLjUtMC4zbC0zLjMsMS44bC0yLTJsMS44LTMuM2wtMC4zLTAuNWMtMC40LTAuNy0wLjctMS40LTAuOS0yLjFsLTAuMS0wLjVMNCwxOS40di0yLjhsMy40LTFsMC4yLTAuNWMwLjItMC44LDAuNS0xLjUsMC45LTIuMmwwLjMt''@;'; put 'put ''MC41TDcuMSw5LjFsMi0ybDMuMiwxLjhsMC41LTAuM2MwLjctMC40LDEuNC0wLjcsMi4yLTAuOWwwLjUtMC4yTDE2LjYsNGgyLjhsMS4xLDMuNUwyMSw3LjdjMC43LDAuMiwxLjQsMC41LDIuMSwwLjlsMC41LDAuM2wzLjMtMS44bDIsMmwtMS44LDMuM2wwLjMsMC41YzAuNCwwLjcsMC43LDEu''@;'; put 'put ''NCwwLjksMi4xbDAuMSwwLjVsMy42LDEuMVYxOS40eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTExLjEsMThjMCwzLjksMy4xLDcsNyw3YzMuOSwwLDctMy4xLDctN3MtMy4x''@;'; put 'put ''LTctNy03QzE0LjIsMTEsMTEuMSwxNC4xLDExLjEsMTh6IE0yMy4xLDE4YzAsMi44LTIuMiw1LTUsNWMtMi44LDAtNS0yLjItNS01czIuMi01LDUtNUMyMC45LDEzLDIzLjEsMTUuMiwyMy4xLDE4eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMyLjgsMTQuN0wzMCwxMy44bC0wLjEtMC4zYy0wLjgsMC0xLjYtMC4yLTIuNC0wLjRjMC4zLDAuNiwwLjYsMS4zLDAuOCwxLjlsMC4xLDAuNWwzLjYsMS4xdjIuOGwtMy42LDEuMUwyOC4zLDIxYy0wLjMsMC43LTAuNiwxLjQt''@;'; put 'put ''MC45LDIuMWwtMC4zLDAuNWwxLjgsMy4zbC0yLDJsLTMuMy0xLjhsLTAuNSwwLjNjLTAuNywwLjQtMS40LDAuNy0yLjEsMC45bC0wLjUsMC4xTDE5LjQsMzJoLTIuOGwtMS4xLTMuNkwxNSwyOC4zYy0wLjctMC4zLTEuNC0wLjYtMi4xLTAuOWwtMC41LTAuM2wtMy4zLDEuOGwtMi0ybDEuOC0z''@;'; put 'put ''LjNsLTAuMy0wLjVjLTAuNC0wLjctMC43LTEuNC0wLjktMi4xbC0wLjEtMC41TDQsMTkuNHYtMi44bDMuNC0xbDAuMi0wLjVjMC4yLTAuOCwwLjUtMS41LDAuOS0yLjJsMC4zLTAuNUw3LjEsOS4xbDItMmwzLjIsMS44bDAuNS0wLjNjMC43LTAuNCwxLjQtMC43LDIuMi0wLjlsMC41LTAuMkwx''@;'; put 'put ''Ni42LDRoMi44bDEuMSwzLjVMMjEsNy43YzAuNywwLjIsMS4zLDAuNSwxLjksMC44Yy0wLjMtMC44LTAuNC0xLjYtMC40LTIuNWwtMC40LTAuMmwtMC45LTIuOEMyMSwyLjUsMjAuNCwyLDE5LjcsMmgtMy40Yy0wLjcsMC0xLjMsMC41LTEuNCwxLjJMMTQsNmMtMC42LDAuMS0xLjEsMC4zLTEu''@;'; put 'put ''NiwwLjZMOS44LDUuMkM5LjIsNC45LDguNCw1LDcuOSw1LjVMNS41LDcuOUM1LDguNCw0LjksOS4yLDUuMiw5LjhsMS4zLDIuNWMtMC4yLDAuNS0wLjQsMS4xLTAuNiwxLjZsLTIuOCwwLjlDMi41LDE1LDIsMTUuNiwyLDE2LjN2My40YzAsMC43LDAuNSwxLjMsMS4yLDEuNUw2LDIyLjFsMC42''@;'; put 'put ''LDEuNWwtMS40LDIuNmMtMC4zLDAuNi0wLjIsMS40LDAuMywxLjlsMi40LDIuNGMwLjUsMC41LDEuMywwLjYsMS45LDAuM2wyLjYtMS40bDEuNSwwLjZsMC45LDIuOWMwLjIsMC42LDAuOCwxLjEsMS41LDEuMWgzLjRjMC43LDAsMS4zLTAuNSwxLjUtMS4xbDAuOS0yLjlsMS41LTAuNmwyLjYs''@;'; put 'put ''MS40YzAuNiwwLjMsMS40LDAuMiwxLjktMC4zbDIuNC0yLjRjMC41LTAuNSwwLjYtMS4zLDAuMy0xLjlsLTEuNC0yLjZsMC42LTEuNWwyLjktMC45YzAuNi0wLjIsMS4xLTAuOCwxLjEtMS41di0zLjRDMzQsMTUuNiwzMy41LDE0LjksMzIuOCwxNC43eiIvPlxuICAgICAgICAgICAgICAgIDxj''@;'; put 'put ''aXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy43LDE1LjRoLTUuM3YwLjFsMy42LDEuMXYyLjhsLTMuNiwxLjFMMjguMywyMWMtMC4zLDAuNy0wLjYsMS40LTAuOSwyLjFsLTAuMywwLjVsMS44LDMuM2wtMiwybC0zLjMtMS44bC0wLjUsMC4zYy0wLjcsMC40LTEuNCwwLjctMi4xLDAuOWwtMC41''@;'; put 'put ''LDAuMUwxOS40LDMyaC0yLjhsLTEuMS0zLjZMMTUsMjguM2MtMC43LTAuMy0xLjQtMC42LTIuMS0wLjlsLTAuNS0wLjNsLTMuMywxLjhsLTItMmwxLjgtMy4zbC0wLjMtMC41Yy0wLjQtMC43LTAuNy0xLjQtMC45LTIuMWwtMC4xLTAuNUw0LDE5LjR2LTIuOGwzLjQtMWwwLjItMC41YzAuMi0w''@;'; put 'put ''LjgsMC41LTEuNSwwLjktMi4ybDAuMy0wLjVMNy4xLDkuMWwyLTJsMy4yLDEuOGwwLjUtMC4zYzAuNy0wLjQsMS40LTAuNywyLjItMC45bDAuNS0wLjJMMTYuNiw0aDIuOGwxLjEsMy40bDEuNC0yLjNsLTAuNi0yQzIxLDIuNCwyMC40LDIsMTkuNywyaC0zLjRjLTAuNywwLTEuMywwLjUtMS40''@;'; put 'put ''LDEuMkwxNCw2Yy0wLjYsMC4xLTEuMSwwLjMtMS42LDAuNkw5LjgsNS4yQzkuMiw0LjksOC40LDUsNy45LDUuNUw1LjUsNy45QzUsOC40LDQuOSw5LjIsNS4yLDkuOGwxLjMsMi41Yy0wLjIsMC41LTAuNCwxLjEtMC42LDEuNmwtMi44LDAuOUMyLjUsMTUsMiwxNS42LDIsMTYuM3YzLjRjMCww''@;'; put 'put ''LjcsMC41LDEuMywxLjIsMS41TDYsMjIuMWwwLjYsMS41bC0xLjQsMi42Yy0wLjMsMC42LTAuMiwxLjQsMC4zLDEuOWwyLjQsMi40YzAuNSwwLjUsMS4zLDAuNiwxLjksMC4zbDIuNi0xLjRsMS41LDAuNmwwLjksMi45YzAuMiwwLjYsMC44LDEuMSwxLjUsMS4xaDMuNGMwLjcsMCwxLjMtMC41''@;'; put 'put ''LDEuNS0xLjFsMC45LTIuOWwxLjUtMC42bDIuNiwxLjRjMC42LDAuMywxLjQsMC4yLDEuOS0wLjNsMi40LTIuNGMwLjUtMC41LDAuNi0xLjMsMC4zLTEuOWwtMS40LTIuNmwwLjYtMS41bDIuOS0wLjljMC42LTAuMiwxLjEtMC44LDEuMS0xLjV2LTMuNEMzNCwxNiwzMy45LDE1LjcsMzMuNywx''@;'; put 'put ''NS40eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMTguMSwyM2MtMi44LDAtNS0yLjItNS01czIuMi01LDUtNWMwLjIsMCwwLjUsMCwwLjcsMC4xYy0wLjItMC42LTAuMy0x''@;'; put 'put ''LjMtMC4yLTJoLTAuNWMtMy45LDAtNywzLjEtNyw3YzAsMy45LDMuMSw3LDcsN2MzLjksMCw3LTMuMSw3LTdjMC0wLjktMC4yLTEuOC0wLjUtMi42aC0yLjJjMC41LDAuOCwwLjcsMS42LDAuNywyLjVDMjMuMSwyMC44LDIwLjksMjMsMTguMSwyM3oiLz5cbiAgICAgICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2LjksMS4xTDIxLjEsMTFjLTAuNCwwLjYtMC4yLDEuNCwwLjMsMS44YzAuMiwwLjIsMC41LDAuMiwwLjgsMC4yaDExLjVjMC43LDAsMS4zLTAuNSwx''@;'; put 'put ''LjMtMS4yYzAtMC4zLTAuMS0wLjUtMC4yLTAuOGwtNS43LTkuOWMtMC40LTAuNi0xLjEtMC44LTEuOC0wLjVDMjcuMSwwLjgsMjcsMSwyNi45LDEuMXoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuNTcsMTUu''@;'; put 'put ''NzJsLTMuMzUtMWExMS42NSwxMS42NSwwLDAsMC0uOTUtMi4zM2wxLjY0LTMuMDdhLjYxLjYxLDAsMCwwLS4xMS0uNzJMMjcuNDEsNi4yYS42MS42MSwwLDAsMC0uNzItLjExTDIzLjY0LDcuNzJhMTEuNjIsMTEuNjIsMCwwLDAtMi4zNi0xbC0xLTMuMzFBLjYxLjYxLDAsMCwwLDE5LjY5LDNI''@;'; put 'put ''MTYuMzFhLjYxLjYxLDAsMCwwLS41OC40M2wtMSwzLjNhMTEuNjMsMTEuNjMsMCwwLDAtMi4zOCwxbC0zLTEuNjJhLjYxLjYxLDAsMCwwLS43Mi4xMUw2LjIsOC41OWEuNjEuNjEsMCwwLDAtLjExLjcybDEuNjIsM2ExMS42MywxMS42MywwLDAsMC0xLDIuMzdsLTMuMzEsMWEuNjEuNjEsMCww''@;'; put 'put ''LDAtLjQzLjU4djMuMzhhLjYxLjYxLDAsMCwwLC40My41OGwzLjMzLDFhMTEuNjIsMTEuNjIsMCwwLDAsMSwyLjMzTDYuMDksMjYuNjlhLjYxLjYxLDAsMCwwLC4xMS43Mkw4LjU5LDI5LjhhLjYxLjYxLDAsMCwwLC43Mi4xMWwzLjA5LTEuNjVhMTEuNjUsMTEuNjUsMCwwLDAsMi4zLjk0bDEs''@;'; put 'put ''My4zN2EuNjEuNjEsMCwwLDAsLjU4LjQzaDMuMzhhLjYxLjYxLDAsMCwwLC41OC0uNDNsMS0zLjM4YTExLjYzLDExLjYzLDAsMCwwLDIuMjgtLjk0bDMuMTEsMS42NmEuNjEuNjEsMCwwLDAsLjcyLS4xMWwyLjM5LTIuMzlhLjYxLjYxLDAsMCwwLC4xMS0uNzJsLTEuNjYtMy4xYTExLjYzLDEx''@;'; put 'put ''LjYzLDAsMCwwLC45NS0yLjI5bDMuMzctMWEuNjEuNjEsMCwwLDAsLjQzLS41OFYxNi4zMUEuNjEuNjEsMCwwLDAsMzIuNTcsMTUuNzJaTTE4LDIzLjVBNS41LDUuNSwwLDEsMSwyMy41LDE4LDUuNSw1LjUsMCwwLDEsMTgsMjMuNVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTMyLjU3LDE1LjcybC0zLjM1LTFhMTIuMTIsMTIuMTIsMCwwLDAtLjQ3LTEuMzIsNy40OSw3LjQ5LDAsMCwxLTYuMTQtNi4xNiwxMS44MiwxMS44MiwwLDAsMC0xLjMzLS40OGwtMS0zLjMxQS42MS42''@;'; put 'put ''MSwwLDAsMCwxOS42OSwzSDE2LjMxYS42MS42MSwwLDAsMC0uNTguNDNsLTEsMy4zYTExLjYzLDExLjYzLDAsMCwwLTIuMzgsMWwtMy0xLjYyYS42MS42MSwwLDAsMC0uNzIuMTFMNi4yLDguNTlhLjYxLjYxLDAsMCwwLS4xMS43MmwxLjYyLDNhMTEuNjMsMTEuNjMsMCwwLDAtMSwyLjM3bC0z''@;'; put 'put ''LjMxLDFhLjYxLjYxLDAsMCwwLS40My41OHYzLjM4YS42MS42MSwwLDAsMCwuNDMuNThsMy4zMywxYTExLjYyLDExLjYyLDAsMCwwLDEsMi4zM0w2LjA5LDI2LjY5YS42MS42MSwwLDAsMCwuMTEuNzJMOC41OSwyOS44YS42MS42MSwwLDAsMCwuNzIuMTFsMy4wOS0xLjY1YTExLjY1LDExLjY1''@;'; put 'put ''LDAsMCwwLDIuMy45NGwxLDMuMzdhLjYxLjYxLDAsMCwwLC41OC40M2gzLjM4YS42MS42MSwwLDAsMCwuNTgtLjQzbDEtMy4zOGExMS42MywxMS42MywwLDAsMCwyLjI4LS45NGwzLjExLDEuNjZhLjYxLjYxLDAsMCwwLC43Mi0uMTFsMi4zOS0yLjM5YS42MS42MSwwLDAsMCwuMTEtLjcybC0x''@;'; put 'put ''LjY2LTMuMWExMS42MywxMS42MywwLDAsMCwuOTUtMi4yOWwzLjM3LTFhLjYxLjYxLDAsMCwwLC40My0uNThWMTYuMzFBLjYxLjYxLDAsMCwwLDMyLjU3LDE1LjcyWk0xOCwyMy41QTUuNSw1LjUsMCwxLDEsMjMuNSwxOCw1LjUsNS41LDAsMCwxLDE4LDIzLjVaIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMi41NywxNS43MiwzMS41LDE1LjRIMjIuODVBNS41LDUuNSwwLDEsMSwxOCwxMi41YTUuNTMsNS41MywwLDAsMSwuNjUsMEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OWwyLjA5LTMuNjItLjg2LTIuODNBLjYxLjYxLDAsMCwwLDE5LjY5LDNIMTYuMzFhLjYx''@;'; put 'put ''LjYxLDAsMCwwLS41OC40M2wtMSwzLjNhMTEuNjMsMTEuNjMsMCwwLDAtMi4zOCwxbC0zLTEuNjJhLjYxLjYxLDAsMCwwLS43Mi4xMUw2LjIsOC41OWEuNjEuNjEsMCwwLDAtLjExLjcybDEuNjIsM2ExMS42MywxMS42MywwLDAsMC0xLDIuMzdsLTMuMzEsMWEuNjEuNjEsMCwwLDAtLjQzLjU4''@;'; put 'put ''djMuMzhhLjYxLjYxLDAsMCwwLC40My41OGwzLjMzLDFhMTEuNjIsMTEuNjIsMCwwLDAsMSwyLjMzTDYuMDksMjYuNjlhLjYxLjYxLDAsMCwwLC4xMS43Mkw4LjU5LDI5LjhhLjYxLjYxLDAsMCwwLC43Mi4xMWwzLjA5LTEuNjVhMTEuNjUsMTEuNjUsMCwwLDAsMi4zLjk0bDEsMy4zN2EuNjEu''@;'; put 'put ''NjEsMCwwLDAsLjU4LjQzaDMuMzhhLjYxLjYxLDAsMCwwLC41OC0uNDNsMS0zLjM4YTExLjYzLDExLjYzLDAsMCwwLDIuMjgtLjk0bDMuMTEsMS42NmEuNjEuNjEsMCwwLDAsLjcyLS4xMWwyLjM5LTIuMzlhLjYxLjYxLDAsMCwwLC4xMS0uNzJsLTEuNjYtMy4xYTExLjYzLDExLjYzLDAsMCww''@;'; put 'put ''LC45NS0yLjI5bDMuMzctMWEuNjEuNjEsMCwwLDAsLjQzLS41OFYxNi4zMUEuNjEuNjEsMCwwLDAsMzIuNTcsMTUuNzJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIg''@;'; put 'put ''ZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPicpLGUuQ2xyU2hhcGVDaGVjaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTEzLjcyLDI3LjY5LDMuMjksMTcuMjdhMSwxLDAsMCwxLDEuNDEtMS40MWw5LDlMMzEuMjksNy4yOWExLDEsMCwwLDEsMS40MSwxLjQxWiIvPicpLGUuQ2xyU2hhcGVUaW1lcz0oMCxhLmNsckljb25TVkcpKCc8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE5LjQxLDE4bDguMjktOC4yOWExLDEsMCwwLDAtMS40MS0xLjQxTDE4LDE2LjU5LDkuNzEsOC4yOUExLDEsMCwwLDAsOC4yOSw5LjcxTDE2LjU5LDE4LDguMjksMjYuMjlhMSwxLDAsMSwwLDEuNDEs''@;'; put 'put ''MS40MUwxOCwxOS40MWw4LjI5LDguMjlhMSwxLDAsMCwwLDEuNDEtMS40MVoiLz4nKSxlLkNsclNoYXBlRXhjbGFtYXRpb25UcmlhbmdsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDIxLjMyYTEuMywx''@;'; put 'put ''LjMsMCwwLDAsMS4zLTEuM1YxNGExLjMsMS4zLDAsMSwwLTIuNiwwdjZBMS4zLDEuMywwLDAsMCwxOCwyMS4zMloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBjeD0iMTcuOTUiIGN5PSIyNC4yNyIgcj0iMS41''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0zMC4zMywyNS41NCwyMC41OSw3LjZhMywzLDAsMCwwLTUuMjcsMEw1LjU3LDI1LjU0QTMsMywwLDAsMCw4LjIxLDMwSDI3LjY5YTMsMywwLDAsMCwyLjY0LTQu''@;'; put 'put ''NDNabS0xLjc4LDEuOTRhMSwxLDAsMCwxLS44Ni40OUg4LjIxYTEsMSwwLDAsMS0uODgtMS40OEwxNy4wNyw4LjU1YTEsMSwwLDAsMSwxLjc2LDBsOS43NCwxNy45NEExLDEsMCwwLDEsMjguNTUsMjcuNDhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLjMzLDI1LjU0LDIwLjU5LDcuNmEzLDMsMCwwLDAtNS4yNywwTDUuNTcsMjUuNTRBMywzLDAsMCwwLDguMjEsMzBIMjcuNjlhMywzLDAsMCwwLDIuNjQtNC40M1pNMTYuNDYsMTIuNzRhMS40OSwxLjQ5LDAsMCwxLDMsMHY2Ljg5YTEuNDksMS40OSww''@;'; put 'put ''LDEsMS0zLDBaTTE4LDI2LjI1YTEuNzIsMS43MiwwLDEsMSwxLjcyLTEuNzJBMS43MiwxLjcyLDAsMCwxLDE4LDI2LjI1WiIvPicpLGUuQ2xyU2hhcGVFeGNsYW1hdGlvbkNpcmNsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptMCwyMkExMCwxMCwwLDEsMSwyOCwxOCwxMCwxMCwwLDAsMSwxOCwyOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0i''@;'; put 'put ''TTE4LDIwLjA3YTEuMywxLjMsMCwwLDEtMS4zLTEuM3YtNmExLjMsMS4zLDAsMSwxLDIuNiwwdjZBMS4zLDEuMywwLDAsMSwxOCwyMC4wN1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBjeD0iMTcuOTUiIGN5''@;'; put 'put ''PSIyMy4wMiIgcj0iMS41Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptLTEuNDksNmExLjQ5LDEuNDksMCwwLDEsMywwdjYuODlhMS40OSwx''@;'; put 'put ''LjQ5LDAsMSwxLTMsMFpNMTgsMjUuNWExLjcyLDEuNzIsMCwxLDEsMS43Mi0xLjcyQTEuNzIsMS43MiwwLDAsMSwxOCwyNS41WiIvPicpLGUuQ2xyU2hhcGVDaGVja0NpcmNsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptMCwyMkExMCwxMCwwLDEsMSwyOCwxOCwxMCwxMCwwLDAsMSwxOCwyOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE2''@;'; put 'put ''LjM0LDIzLjc0bC01LTVhMSwxLDAsMCwxLDEuNDEtMS40MWwzLjU5LDMuNTksNi43OC02Ljc4YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLDE4QTEyLDEyLDAsMSwxLDE4''@;'; put 'put ''LDYsMTIsMTIsMCwwLDEsMzAsMThabS00Ljc3LTIuMTZhMS40LDEuNCwwLDAsMC0yLTJsLTYuNzcsNi43N0wxMywxNy4xNmExLjQsMS40LDAsMCwwLTIsMmw1LjQ1LDUuNDVaIi8+JyksZS5DbHJTaGFwZUluZm9DaXJjbGU9KDAsYS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgIGN4PSIxNy45MyIgY3k9IjExLjkiIHI9IjEuNCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAgZD0iTTIxLDIzSDE5VjE1SDE2YTEsMSwwLDAsMCwwLDJoMXY2''@;'; put 'put ''SDE1YTEsMSwwLDEsMCwwLDJoNmExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptMCwyMkExMCwxMCwwLDEs''@;'; put 'put ''MSwyOCwxOCwxMCwxMCwwLDAsMSwxOCwyOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0tMiw1LjE1YTIsMiwwLDEsMSwyLDJBMiwyLDAs''@;'; put 'put ''MCwxLDE1LjksMTEuMTVaTTIzLDI0YTEsMSwwLDAsMS0xLDFIMTVhMSwxLDAsMSwxLDAtMmgyVjE3SDE2YTEsMSwwLDAsMSwwLTJoNHY4aDJBMSwxLDAsMCwxLDIzLDI0WiIvPicpLGUuQ2xyU2hhcGVJbmZvU3RhbmRhcmQ9KDAsYS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjE3Ljk3IiBjeT0iMTAuNDUiIHI9IjEuNCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjEsMjVIMTlWMTQuMUgxNmExLDEsMCwwLDAsMCwyaDFW''@;'; put 'put ''MjVIMTVhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpNMTgsNEExNCwxNCww''@;'; put 'put ''LDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwxOCw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyLjFhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMTgsMi4xWm0tLjEsNS4yOGEyLDIsMCwxLDEtMiwy''@;'; put 'put ''QTIsMiwwLDAsMSwxNy45LDcuMzhabTMuNiwyMS4yNWgtN2ExLjQsMS40LDAsMSwxLDAtMi44aDIuMXYtOS4ySDE1YTEuNCwxLjQsMCwxLDEsMC0yLjhoNC40djEyaDIuMWExLjQsMS40LDAsMSwxLDAsMi44WiIvPicpLGUuQ2xyU2hhcGVTdWNjZXNzU3RhbmRhcmQ9KDAsYS5jbHJJY29uU1ZH''@;'; put 'put ''KSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yOCwxMi4xYTEsMSwwLDAsMC0xLjQxLDBMMTUuNDksMjMuMTVsLTYtNkExLDEsMCwwLDAsOCwxOC41M0wxNS40OSwyNiwyOCwxMy41MkExLDEsMCwwLDAsMjgsMTIuMVoiLz5cbiAgICAgICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWk0yOC40NSwxMi42MywxNS4zMSwyNS43Niw3LjU1LDE4YTEuNCwxLjQsMCwwLDEsMi0ybDUuNzgsNS43OEwyNi40NywxMC42NWExLjQs''@;'; put 'put ''MS40LDAsMSwxLDIsMloiLz4nKSxlLkNsclNoYXBlRXJyb3JTdGFuZGFyZD0oMCxhLmNsckljb25TVkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTgiIGN5PSIyNi4wNiIgcj0iMS4zMyIvPlxuICAgICAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjIuNjFhMSwxLDAsMCwxLTEtMXYtMTJhMSwxLDAsMSwxLDIsMHYxMkExLDEsMCwwLDEsMTgsMjIuNjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTMiIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpNMTgsNEExNCwxNCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwxOCw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEiIGQ9Ik0xOCwyLjFhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMTgsMi4xWk0xNi42LDguOGExLjQsMS40LDAsMCwxLDIuOCwwdjEyYTEuNCwxLjQsMCwwLDEtMi44LDBaTTE4LDI4LjZhMS44LDEuOCwwLDEsMSwxLjgtMS44QTEuOCwxLjgsMCwwLDEsMTgsMjguNloiLz4nKSxl''@;'; put 'put ''LkNsclNoYXBlV2FybmluZ1N0YW5kYXJkPSgwLGEuY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4PSIxOCIgY3k9IjI2LjA2IiByPSIxLjMzIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyMi42MWExLDEsMCwwLDEtMS0xdi0xMmExLDEsMCwxLDEsMiwwdjEyQTEsMSwwLDAsMSwxOCwyMi42MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0i''@;'; put 'put ''TTE1LjA2MjA3ODIsMS42ODExOTYgQzE1LjYyOTg4MTksMC42NDkyNjYzNTUgMTYuNzEwOTA5MSwwLjAxMDIyMTkzOTYgMTcuODg1LDAuMDEwMjIxOTM5NiBDMTkuMDU5MDkwOSwwLjAxMDIyMTkzOTYgMjAuMTQwMTE4MSwwLjY0OTI2NjM1NSAyMC43MDg2NDMzLDEuNjgyNTIxMjkgTDM0LjU5''@;'; put 'put ''ODY0NCwyNy4yNDI1MjI1IEMzNS4xNDA3NzQ2LDI4LjI0MDEzOTcgMzUuMTE3NDM0NSwyOS40NDk1MzczIDM0LjUzNzIxNjEsMzAuNDI1NDk0MyBDMzMuOTU2OTk3NywzMS40MDE0NTE0IDMyLjkwNTY3MSwzMS45OTk2OTg0IDMxLjc3LDMyIEw0LjAyMjM5MzIzLDMxLjk5OTc0OTIgQzIuODc0''@;'; put 'put ''MDkwMDksMzIuMDI1NDY5OSAxLjc5OTAyODQzLDMxLjQzNzU3NTMgMS4yMDEwNjMzNSwzMC40NTY5MTI2IEMwLjYwMzA5ODI2NSwyOS40NzYyNDk5IDAuNTcyNzc3ODk5LDI4LjI1MTMxNzkgMS4xMjIwNzgxOCwyNy4yNDExOTYgTDE1LjA2MjA3ODIsMS42ODExOTYgWiBNMi44Nzg1MDc2Nywy''@;'; put 'put ''OC4xOTc3MjgyIEMyLjY3MDYwOTY2LDI4LjU4MDAzNzYgMi42ODIwOTc1LDI5LjA0NDE0MjMgMi45MDg2NTU3LDI5LjQxNTY5NzcgQzMuMTM1MjEzOSwyOS43ODcyNTMyIDMuNTQyNTM1NCwzMC4wMDk5OTU5IDQsMzAgTDMxLjc2OTczNDQsMzAgQzMyLjE5OTkxOTEsMjkuOTk5ODg1OCAzMi41''@;'; put 'put ''OTgyNDc4LDI5Ljc3MzIyMDggMzIuODE4MDgyMSwyOS40MDM0NDgyIEMzMy4wMzc5MTY0LDI5LjAzMzY3NTcgMzMuMDQ2NzU5NSwyOC41NzU0NTY3IDMyLjg0MTM1NjcsMjguMTk3NDc4NyBMMTguOTUzODczOSwyLjY0MjA4MTk1IEMxOC43Mzk0MjM2LDIuMjUyMzQ0MzYgMTguMzI5ODQxOSwy''@;'; put 'put ''LjAxMDIyMTk0IDE3Ljg4NSwyLjAxMDIyMTk0IEMxNy40NDA2ODg5LDIuMDEwMjIxOTQgMTcuMDMxNTUzOCwyLjI1MTc2NjkyIDE2LjgxNjg5NDYsMi42NDA2ODc1MyBMMi44Nzg1MDc2NywyOC4xOTc3MjgyIFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzQuNiwyOS4yMSwyMC43MSwzLjY1YTMuMjIsMy4yMiwwLDAsMC01LjY2LDBMMS4xNywyOS4yMUEzLjIyLDMuMjIsMCwwLDAsNCwzNEgzMS43N2EzLjIyLDMuMjIsMCwwLDAsMi44My00Ljc1Wk0xNi42LDEwYTEuNCwxLjQsMCwwLDEsMi44LDB2MTJh''@;'; put 'put ''MS40LDEuNCwwLDAsMS0yLjgsMFpNMTgsMjkuODVhMS44LDEuOCwwLDEsMSwxLjgtMS44QTEuOCwxLjgsMCwwLDEsMTgsMjkuODVaIi8+JyksZS5DbHJTaGFwZUhlbHBJbmZvPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNS4zOSwyNS40NWExLDEsMCwwLDAtMS4zOC4yOWMtMS40MSwy''@;'; put 'put ''LjE2LTQsNC44MS02LjMxLDUuN3MtNC4xMi41Ny00Ljg0LDBjLS4zMS0uMjctMS4xMi0xLS40My0zLjQ5LjQ2LTEuNjYsMy4zMi05LjQ4LDQtMTEuMzhsLTIuMTguMjhjLS42OSwxLjg2LTMuMjksOC44NC0zLjc2LDEwLjU4LS42OCwyLjQ5LS4zNCw0LjMsMS4wOSw1LjU2QTUuNTksNS41OSww''@;'; put 'put ''LDAsMCwxNSwzNGE5LjUzLDkuNTMsMCwwLDAsMy40NS0uN2MyLjc5LTEuMDksNS43Mi00LjEyLDcuMjYtNi40N0ExLDEsMCwwLDAsMjUuMzksMjUuNDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS4zLDEx''@;'; put 'put ''YTQuNSw0LjUsMCwxLDAtNC41LTQuNUE0LjUsNC41LDAsMCwwLDE5LjMsMTFabTAtN2EyLjUsMi41LDAsMSwxLTIuNSwyLjVBMi41LDIuNSwwLDAsMSwxOS4zLDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0x''@;'; put 'put ''MS44MSwxNWMuMDYsMCw2LjI3LS44Miw3LjczLTEsLjY1LS4xLDEuMTQsMCwxLjMuMTVzLjIxLjgtLjA3LDEuNjhjLS42MSwxLjg2LTMuNjksMTEtNC41OSwxMy43MWE4LDgsMCwwLDAsMS4yOS0uMzgsNy4zMiw3LjMyLDAsMCwwLDEuMTUtLjZDMTkuODUsMjUsMjIuMTUsMTguMSwyMi42Nywx''@;'; put 'put ''Ni41MnMuMzktMi43OC0uMy0zLjZhMy4xNiwzLjE2LDAsMCwwLTMuMDgtLjgzYy0xLjQzLjE1LTcuNDcuOTQtNy43MywxYTEsMSwwLDAsMCwuMjYsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjAuNzUi''@;'; put 'put ''IGN5PSI2IiByPSI0IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0Ljg0LDI2LjIzYTEsMSwwLDAsMC0xLjQuMjksMTYuNiwxNi42LDAsMCwxLTMuNTEsMy43N2MtLjMzLjI1LTEuNTYsMS4yLTIuMDgsMS0uMzYtLjEx''@;'; put 'put ''LS4xNS0uODItLjA4LTEuMTJsLjUzLTEuNTdjLjIyLS42NCw0LjA1LTEyLDQuNDctMTMuMy42Mi0xLjkuMzUtMy43Ny0yLjQ4LTMuMzItLjc3LjA4LTguNTgsMS4wOS04LjcyLDEuMWExLDEsMCwwLDAsLjEzLDJzMy0uMzksMy4zMy0uNDJhLjg4Ljg4LDAsMCwxLC44NS40NCwyLjQ3LDIuNDcs''@;'; put 'put ''MCwwLDEtLjA3LDEuNzFjLS4yNiwxLTQuMzcsMTIuNTgtNC41LDEzLjI1YTIuNzgsMi43OCwwLDAsMCwxLjE4LDMsNSw1LDAsMCwwLDMuMDguODNoMGE4LjUzLDguNTMsMCwwLDAsMy4wOS0uNjJjMi40OS0xLDUuMDktMy42Niw2LjQ2LTUuNzVBMSwxLDAsMCwwLDI0Ljg0LDI2LjIzWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlQmFycz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDI5SDRhMSwxLDAsMCwxLDAtMkgzMmExLDEsMCwwLDEsMCwy''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIsMTlINGExLDEsMCwwLDEsMC0ySDMyYTEsMSwwLDAsMSwwLDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0zMiw5SDRBMSwxLDAsMCwxLDQsN0gzMmExLDEsMCwwLDEsMCwyWiIvPicpLGUuQ2xyU2hhcGVVc2VyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwxLDAtNy03QTcsNywwLDAsMCwxOCwxN1pNMTgsNWE1LDUsMCwxLDEtNSw1''@;'; put 'put ''QTUsNSwwLDAsMSwxOCw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNDcsMjQuMzdhMTcuMTYsMTcuMTYsMCwwLDAtMjQuOTMsMEEyLDIsMCwwLDAsNSwyNS43NFYzMWEyLDIsMCwwLDAsMiwySDI5YTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWMjUuNzRBMiwyLDAsMCwwLDMwLjQ3LDI0LjM3Wk0yOSwzMUg3VjI1LjczYTE1LjE3LDE1LjE3LDAsMCwxLDIyLDBoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjQ3LDI0LjM3YTE3''@;'; put 'put ''LjE2LDE3LjE2LDAsMCwwLTI0LjkzLDBBMiwyLDAsMCwwLDUsMjUuNzRWMzFhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAsMi0yVjI1Ljc0QTIsMiwwLDAsMCwzMC40NywyNC4zN1pNMjksMzFIN1YyNS43M2ExNS4xNywxNS4xNywwLDAsMSwyMiwwaDBaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwwLDAsNC40NS0xLjZoLS4yMkEzLjY4LDMuNjgsMCwwLDEsMjAsMTQuNmE1LDUsMCwxLDEsMS4yNC04LjQybDEtMS43NkE3LDcsMCwxLDAsMTgsMTda''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFM''@;'; put 'put ''MjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC40NywyNC4zN2ExNy4xNiwxNy4xNiww''@;'; put 'put ''LDAsMC0yNC45MywwQTIsMiwwLDAsMCw1LDI1Ljc0VjMxYTIsMiwwLDAsMCwyLDJIMjlhMiwyLDAsMCwwLDItMlYyNS43NEEyLDIsMCwwLDAsMzAuNDcsMjQuMzdaTTI5LDMxSDdWMjUuNzNhMTUuMTcsMTUuMTcsMCwwLDEsMjIsMGgwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE3YTcsNywwLDAsMCw2Ljg1LTUuNTYsNy40LDcuNCwwLDAsMS0yLjI0LTYuNjlBNyw3LDAsMSwwLDE4LDE3Wk0xOCw1YTUsNSwwLDEsMS01LDVBNSw1LDAsMCwxLDE4LDVaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFk''@;'; put 'put ''Z2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNjEsMjQuNTJhMTcuMTYsMTcuMTYsMCwwLDAtMjUuMjIsMCwxLjUxLDEuNTEsMCwwLDAtLjM5LDF2NkExLjUsMS41LDAsMCwwLDYuNSwzM2gyM0ExLjUsMS41LDAsMCwwLDMxLDMxLjV2LTZBMS41MSwxLjUxLDAsMCwwLDMwLjYxLDI0''@;'; put 'put ''LjUyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTAiIHI9IjciIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNjEsMjQu''@;'; put 'put ''NTJhMTcuMTYsMTcuMTYsMCwwLDAtMjUuMjIsMCwxLjUxLDEuNTEsMCwwLDAtLjM5LDF2NkExLjUsMS41LDAsMCwwLDYuNSwzM2gyM0ExLjUsMS41LDAsMCwwLDMxLDMxLjV2LTZBMS41MSwxLjUxLDAsMCwwLDMwLjYxLDI0LjUyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwwLDAsNC40NS0xLjZoLS4yMkEzLjY4LDMuNjgsMCwwLDEsMTksOS44OWwzLjE2LTUuNDdBNyw3LDAsMSwwLDE4LDE3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoi''@;'; put 'put ''ICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjYxLDI0LjUyYTE3LjE2LDE3LjE2LDAsMCwwLTI1LjIyLDAsMS41MSwxLjUxLDAsMCwwLS4zOSwxdjZBMS41LDEu''@;'; put 'put ''NSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41di02QTEuNTEsMS41MSwwLDAsMCwzMC42MSwyNC41MloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE3YTcsNyww''@;'; put 'put ''LDAsMCw2Ljg1LTUuNTYsNy40LDcuNCwwLDAsMS0yLjI0LTYuNjlBNyw3LDAsMSwwLDE4LDE3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxlLkNsclNoYXBlQW5nbGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOS41MiwyMi41Miwx''@;'; put 'put ''OCwxMC42LDYuNDgsMjIuNTJhMS43LDEuNywwLDAsMCwyLjQ1LDIuMzZMMTgsMTUuNDlsOS4wOCw5LjM5YTEuNywxLjcsMCwwLDAsMi40NS0yLjM2WiIvPicpLGUuQ2xyU2hhcGVGb2xkZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiIGQ9Ik0zMCw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMUEyLDIsMCwwLDAsMzAsOVptMCwyMEg2VjEzaDcuMzFhMiwyLDAsMCwwLDItMkg2VjdoNi40OWwyLjYx''@;'; put 'put ''LDMuNTlhMSwxLDAsMCwwLC44MS40MUgzMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMCwxMy41VjI5SDZWMTNoNy4zMWEyLDIsMCwwLDAsMi0ySDZWN2g2LjQ5bDIuNjEs''@;'; put 'put ''My41OWExLDEsMCwwLDAsLjgxLjQxaDguNTFhNy41LDcuNSwwLDAsMS0xLjI5LTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMCwxNS40VjI5SDZWMTNoNy4zMWEyLDIsMCwwLDAsMi0ySDZWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDIuNzNBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlMMTkuNTYsOUgxNi40MkwxNC4xMSw1''@;'; put 'put ''LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMCw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMUEyLDIsMCwwLDAsMzAsOVpNNiwxMVY3aDYuNDlsMi43Miw0WiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yMi4yMywxNS40QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2''@;'; put 'put ''QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE1LjRaTTYsMTFWN2g2LjQ5bDIuNzIsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFs''@;'; put 'put ''ZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMCwxMy41QTcuNSw3LjUsMCwwLDEsMjMuMTMsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTMuMjJB''@;'; put 'put ''Ny40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaTTYsMTFWN2g2LjQ5bDIuNzIsNFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+Jyks''@;'; put 'put ''ZS5DbHJTaGFwZUZvbGRlck9wZW49KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNS4zMiwxMy43NEExLjcxLDEuNzEsMCwwLDAsMzMuODcsMTNIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41MiwxLDEs''@;'; put 'put ''MCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFIMzJhMiwyLDAsMCwwLTItMkgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAs''@;'; put 'put ''MS0uNzJsNC4xOS0xNS4xQTEuNjQsMS42NCwwLDAsMCwzNS4zMiwxMy43NFpNMjkuNTUsMjlINi45bDMuODgtMTMuODFhLjY2LjY2LDAsMCwxLC4zOC0uMjRIMzMuNDlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcxLDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDguNTJhNy40OSw3LjQ5LDAsMCwx''@;'; put 'put ''LTEuMjktMkgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xQTEuNjQsMS42NCwwLDAsMCwzNS4zMiwxMy43NFpNMjkuNTUsMjlINi45bDMu''@;'; put 'put ''ODgtMTMuODFhLjY2LjY2LDAsMCwxLC4zOC0uMjRIMzMuNDlaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRoLS4zTDI5LjU1LDI5SDYuOWwzLjg4LTEzLjgxYS42Ni42NiwwLDAsMSwuMzgtLjI0aDkuNDJBMy42NywzLjY3LDAsMCwxLDE5''@;'; put 'put ''LDEzLjU2YTMuNjMsMy42MywwLDAsMS0uMjYtLjU2SDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDIuNzNBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlMMTkuNTYsOUgxNi40MkwxNC4x''@;'; put 'put ''MSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xYTEuNjgsMS42OCwwLDAsMCwuMDctLjMyQTMuNjcsMy42NywwLDAsMSwzMy42OCwxNS40WiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4''@;'; put 'put ''LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTM1LjMyLDEzLjc0QTEuNzEsMS43MSwwLDAsMCwzMy44NywxM0gxMS4xN2EyLjU5LDIuNTks''@;'; put 'put ''MCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MUgzMmEyLDIsMCwwLDAtMi0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcsMS4zNywwLDAsMCw1LjQx''@;'; put 'put ''LDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFBMS42NCwxLjY0LDAsMCwwLDM1LjMyLDEzLjc0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDIy''@;'; put 'put ''LjIzQTMuNjksMy42OSwwLDAsMSwxOSwxMy41NmEzLjYzLDMuNjMsMCwwLDEtLjI2LS41NkgxMS4xN2EyLjU5LDIuNTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWgyLjczQTMuNjYsMy42NiwwLDAsMSwxOSw5''@;'; put 'put ''Ljg5TDE5LjU2LDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMWExLjY4LDEuNjgsMCwwLDAsLjA3LS4zMkEzLjY3LDMuNjcsMCwwLDEs''@;'; put 'put ''MzMuNjgsMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4y''@;'; put 'put ''OCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zNS4zMiwxMy43NEExLjcxLDEu''@;'; put 'put ''NzEsMCwwLDAsMzMuODcsMTNIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoOC41MmE3LjQ5LDcuNDksMCwwLDEtMS4zMS0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5''@;'; put 'put ''LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcsMS4zNywwLDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFBMS42NCwxLjY0LDAsMCwwLDM1LjMyLDEzLjc0WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxlLkNsclNoYXBlQmVsbD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLjUxLDI3LjgzQTE0''@;'; put 'put ''LjQsMTQuNCwwLDAsMSwzMCwyNC45YTEyLjYzLDEyLjYzLDAsMCwxLTEuMzUtNC44MVYxNS4xNUExMC44MSwxMC44MSwwLDAsMCwxOS4yMSw0LjRWMy4xMWExLjMzLDEuMzMsMCwxLDAtMi42NywwVjQuNDJBMTAuODEsMTAuODEsMCwwLDAsNy4yMSwxNS4xNXY0Ljk0QTEyLjYzLDEyLjYzLDAs''@;'; put 'put ''MCwxLDUuODYsMjQuOWExNC40LDE0LjQsMCwwLDEtMi40NywyLjkzLDEsMSwwLDAsMC0uMzQuNzV2MS4zNmExLDEsMCwwLDAsMSwxaDI3LjhhMSwxLDAsMCwwLDEtMVYyOC41OEExLDEsMCwwLDAsMzIuNTEsMjcuODNaTTUuMTMsMjguOTRhMTYuMTcsMTYuMTcsMCwwLDAsMi40NC0zLDE0LjI0''@;'; put 'put ''LDE0LjI0LDAsMCwwLDEuNjUtNS44NVYxNS4xNWE4Ljc0LDguNzQsMCwxLDEsMTcuNDcsMHY0Ljk0YTE0LjI0LDE0LjI0LDAsMCwwLDEuNjUsNS44NSwxNi4xNywxNi4xNywwLDAsMCwyLjQ0LDNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwzNC4yOEEyLjY3LDIuNjcsMCwwLDAsMjAuNTgsMzJIMTUuMzJBMi42NywyLjY3LDAsMCwwLDE4LDM0LjI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJh''@;'; put 'put ''ZGdlZCIgZD0iTTE4LDM0LjI4QTIuNjcsMi42NywwLDAsMCwyMC41OCwzMkgxNS4zMkEyLjY3LDIuNjcsMCwwLDAsMTgsMzQuMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJN''@;'; put 'put ''MzIuNTEsMjcuODNBMTQuNCwxNC40LDAsMCwxLDMwLDI0LjlhMTIuNjMsMTIuNjMsMCwwLDEtMS4zNS00LjgxVjE1LjE1YTEwLjkyLDEwLjkyLDAsMCwwLS4xNi0xLjc5LDcuNDQsNy40NCwwLDAsMS0yLjI0LS44NCw4Ljg5LDguODksMCwwLDEsLjQsMi42NHY0Ljk0YTE0LjI0LDE0LjI0LDAs''@;'; put 'put ''MCwwLDEuNjUsNS44NSwxNi4xNywxNi4xNywwLDAsMCwyLjQ0LDNINS4xM2ExNi4xNywxNi4xNywwLDAsMCwyLjQ0LTMsMTQuMjQsMTQuMjQsMCwwLDAsMS42NS01Ljg1VjE1LjE1QTguOCw4LjgsMCwwLDEsMTgsNi4zMWE4LjYxLDguNjEsMCwwLDEsNC43NiwxLjQ0QTcuNDksNy40OSwwLDAs''@;'; put 'put ''MSwyMi41LDZjMC0uMjEsMC0uNDIsMC0uNjNhMTAuNTgsMTAuNTgsMCwwLDAtMy4zMi0xVjMuMTFhMS4zMywxLjMzLDAsMSwwLTIuNjcsMFY0LjQyQTEwLjgxLDEwLjgxLDAsMCwwLDcuMjEsMTUuMTV2NC45NEExMi42MywxMi42MywwLDAsMSw1Ljg2LDI0LjlhMTQuNCwxNC40LDAsMCwxLTIu''@;'; put 'put ''NDcsMi45MywxLDEsMCwwLDAtLjM0Ljc1djEuMzZhMSwxLDAsMCwwLDEsMWgyNy44YTEsMSwwLDAsMCwxLTFWMjguNThBMSwxLDAsMCwwLDMyLjUxLDI3LjgzWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLjg1LDI4LjEzbC0uMzQtLjNBMTQuMzcsMTQuMzcsMCwwLDEsMzAsMjQuOWExMi42''@;'; put 'put ''MywxMi42MywwLDAsMS0xLjM1LTQuODFWMTUuMTVBMTAuODEsMTAuODEsMCwwLDAsMTkuMjEsNC40VjMuMTFhMS4zMywxLjMzLDAsMSwwLTIuNjcsMFY0LjQyQTEwLjgxLDEwLjgxLDAsMCwwLDcuMjEsMTUuMTV2NC45NEExMi42MywxMi42MywwLDAsMSw1Ljg2LDI0LjlhMTQuNCwxNC40LDAs''@;'; put 'put ''MCwxLTIuNDcsMi45M2wtLjM0LjN2Mi44MkgzMi44NVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTUuMzIsMzJhMi42NSwyLjY1LDAsMCwwLDUuMjUsMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTE4LDM0LjI4QTIuNjcsMi42NywwLDAsMCwyMC41OCwzMkgxNS4zMkEyLjY3LDIuNjcsMCwwLDAsMTgsMzQuMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMi44NSwyOC4xM2wtLjM0LS4zQTE0LjM3LDE0LjM3LDAsMCwxLDMwLDI0LjlhMTIuNjMsMTIuNjMsMCwwLDEtMS4zNS00LjgxVjE1LjE1YTEwLjkyLDEwLjkyLDAsMCwwLS4xNi0xLjc5QTcuNSw3LjUsMCwwLDEsMjIu''@;'; put 'put ''NSw2YzAtLjIxLDAtLjQyLDAtLjYzYTEwLjU3LDEwLjU3LDAsMCwwLTMuMzItMVYzLjExYTEuMzMsMS4zMywwLDEsMC0yLjY3LDBWNC40MkExMC44MSwxMC44MSwwLDAsMCw3LjIxLDE1LjE1djQuOTRBMTIuNjMsMTIuNjMsMCwwLDEsNS44NiwyNC45YTE0LjQsMTQuNCwwLDAsMS0yLjQ3LDIu''@;'; put 'put ''OTNsLS4zNC4zdjIuODJIMzIuODVaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLGUuQ2xyU2hhcGVJbWFnZT0oMCxhLmNs''@;'; put 'put ''ckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNEg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMyLDRaTTQsMzBWNkgzMlYzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNOC45MiwxNGEzLDMsMCwxLDAtMy0zQTMsMywwLDAsMCw4LjkyLDE0Wm0wLTQuNkExLjYsMS42LDAsMSwxLDcuMzMsMTEsMS42LDEuNiwwLDAsMSw4LjkyLDkuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTIyLjc4LDE1LjM3bC01LjQsNS40LTQtNGExLDEsMCwwLDAtMS40MSwwTDUuOTIsMjIuOXYyLjgzbDYuNzktNi43OUwxNiwyMi4xOGwtMy43NSwzLjc1SDE1bDguNDUtOC40NUwzMCwyNFYyMS4xOGwtNS44MS01LjgxQTEsMSwwLDAsMCwyMi43OCwxNS4zN1oiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuOTMsMTFhMywzLDAsMSwwLTMsM0EzLDMsMCwwLDAsMTEuOTMsMTFabS00LjYsMGExLjYsMS42LDAsMSwxLDEuNiwxLjZBMS42LDEuNiwwLDAsMSw3LjMzLDExWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcuMzgsMjAuNzdsLTQtNGExLDEsMCwwLDAtMS40MSwwTDUuOTIsMjIuOXYyLjgzbDYuNzktNi43OUwxNiwyMi4xOGwtMy43NSwzLjc1SDE1bDguNDUtOC40''@;'; put 'put ''NUwzMCwyNFYyMS4xOGwtNS44MS01LjgxYTEsMSwwLDAsMC0xLjQxLDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMlYzMEg0VjZIMjIuNWE3LjQ5LDcuNDksMCwwLDEs''@;'; put 'put ''LjI4LTJINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxj''@;'; put 'put ''aXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNEg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEy''@;'; put 'put ''LDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMyLDRaTTguOTIsOGEzLDMsMCwxLDEtMywzQTMsMywwLDAsMSw4LjkyLDhaTTYsMjdWMjIuOWw2LTYuMDhhMSwxLDAsMCwxLDEuNDEsMEwxNiwxOS4zNSw4LjMyLDI3Wm0yNCwwSDExLjE1bDYuMjMtNi4yMyw1LjQtNS40YTEsMSwwLDAsMSwxLjQx''@;'; put 'put ''LDBMMzAsMjEuMThaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjQ4LDcuNDgsMCwwLDEsMjIuNzgsNEg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0''@;'; put 'put ''QTcuNDYsNy40NiwwLDAsMSwzMCwxMy41Wk04LjkyLDhhMywzLDAsMSwxLTMsM0EzLDMsMCwwLDEsOC45Miw4Wk02LDI3VjIyLjlsNi02LjA4YTEsMSwwLDAsMSwxLjQxLDBMMTYsMTkuMzUsOC4zMiwyN1ptMjQsMEgxMS4xNWw2LjIzLTYuMjMsNS40LTUuNGExLDEsMCwwLDEsMS40MSwwTDMw''@;'; put 'put ''LDIxLjE4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktYmFkZ2UiLz4nKSxlLkNsclNoYXBlQ2xvdWQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNy4xNCwzM0gxMC42MkM1LjY3LDMzLDEsMjguMTksMSwyMy4xYTEwLDEwLDAsMCwxLDgtOS43NSwxMC4xOSwx''@;'; put 'put ''MC4xOSwwLDAsMSwyMC4zMywxLjA2QTEwLjA3LDEwLjA3LDAsMCwxLDI5LDE2LjY2YTguMjksOC4yOSwwLDAsMSw2LDhDMzUsMjkuMSwzMS4zMywzMywyNy4xNCwzM1pNMTkuMDksNi4yM2E4LjI0LDguMjQsMCwwLDAtOC4xOSw4bDAsLjg3LS44Ni4xQTcuOTQsNy45NCwwLDAsMCwzLDIzLjFj''@;'; put 'put ''MCw0LDMuNzcsNy45LDcuNjIsNy45SDI3LjE0QzMwLjIxLDMxLDMzLDI4LDMzLDI0LjY1YTYuMzEsNi4zMSwwLDAsMC01LjM3LTYuMjZsLTEuMTgtLjE4LjM5LTEuMTNBOC4xOCw4LjE4LDAsMCwwLDE5LjA5LDYuMjNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMjksMTYuNjZhMTAuMDcsMTAuMDcsMCwwLDAsLjI1LTIuMjRjMC0uMzMsMC0uNjUsMC0xYTcuNDUsNy40NSwwLDAsMS0yLjEtLjU0LDgsOCwwLDAsMS0uMyw0LjE2bC0uMzksMS4xMywxLjE4LjE4YTYuMzEs''@;'; put 'put ''Ni4zMSwwLDAsMSw1LjM3LDYuMjZDMzIuOTUsMjgsMzAuMTYsMzEsMjcuMDksMzFIMTAuNTdjLTMuODQsMC03LjYyLTMuOTEtNy42Mi03LjlhNy45NCw3Ljk0LDAsMCwxLDctNy44OWwuODYtLjEsMC0uODdhOC4yNCw4LjI0LDAsMCwxLDguMTktOEE4LjEzLDguMTMsMCwwLDEsMjIuNTgsN2E3''@;'; put 'put ''LjUzLDcuNTMsMCwwLDEtLjA4LTEsNy41MSw3LjUxLDAsMCwxLC4wOS0xLjEyQTEwLjEzLDEwLjEzLDAsMCwwLDE5LDQuMjMsMTAuMjYsMTAuMjYsMCwwLDAsOC45MSwxMy4zNmExMCwxMCwwLDAsMC04LDkuNzVjMCw1LjA5LDQuNjcsOS45LDkuNjIsOS45SDI3LjA5YzQuMTksMCw3Ljg2LTMu''@;'; put 'put ''OSw3Ljg2LTguMzVBOC4yOSw4LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAg''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yOSwxNi42NmExMC4xNCwxMC4xNCwwLDAsMCwuMi0xLjNoLTJhOC4yOCw4LjI4LDAsMCwxLS4zNywxLjcybC0uMzksMS4xMywxLjE4LjE4YTYu''@;'; put 'put ''MzEsNi4zMSwwLDAsMSw1LjM3LDYuMjZDMzIuOTUsMjgsMzAuMTYsMzEsMjcuMDksMzFIMTAuNTdjLTMuODQsMC03LjYyLTMuOTEtNy42Mi03LjlhNy45NCw3Ljk0LDAsMCwxLDctNy44OWwuODYtLjEsMC0uODdBOC4xNiw4LjE2LDAsMCwxLDIxLDYuNDdsMS0xLjhBMTAuMTksMTAuMTksMCww''@;'; put 'put ''LDAsOC45MSwxMy4zNmExMCwxMCwwLDAsMC04LDkuNzVjMCw1LjA5LDQuNjcsOS45LDkuNjIsOS45SDI3LjA5YzQuMTksMCw3Ljg2LTMuOSw3Ljg2LTguMzVBOC4yOSw4LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEu''@;'; put 'put ''MTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI5LDE2LjY2YTEwLjA3LDEwLjA3LDAsMCwwLC4yNS0yLjI0QTEwLjE5LDEwLjE5LDAsMCwwLDguOTEsMTMuMzYsMTAsMTAsMCwwLDAsMSwyMy4xQzEsMjguMTks''@;'; put 'put ''NS42MiwzMywxMC41NywzM0gyNy4wOUMzMS4yOCwzMywzNSwyOS4xLDM1LDI0LjY1QTguMjksOC4yOSwwLDAsMCwyOSwxNi42NloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTI5LDE2''@;'; put 'put ''LjY2YTEwLjA3LDEwLjA3LDAsMCwwLC4yNS0yLjI0YzAtLjMzLDAtLjY1LDAtMWE3LjQ0LDcuNDQsMCwwLDEtNi42LTguNThBMTAuMTMsMTAuMTMsMCwwLDAsMTksNC4yMywxMC4yNiwxMC4yNiwwLDAsMCw4LjkxLDEzLjM2LDEwLDEwLDAsMCwwLDEsMjMuMUMxLDI4LjE5LDUuNjIsMzMsMTAu''@;'; put 'put ''NTcsMzNIMjcuMDlDMzEuMjgsMzMsMzUsMjkuMSwzNSwyNC42NUE4LjI5LDguMjksMCwwLDAsMjksMTYuNjZaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMw''@;'; put 'put ''IiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yOSwxNi42NmExMC4xNSwxMC4xNSwwLDAsMCwuMi0xLjI2aC03QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bDMt''@;'; put 'put ''NS4yMUExMC4xOSwxMC4xOSwwLDAsMCw4LjkxLDEzLjM2LDEwLDEwLDAsMCwwLDEsMjMuMUMxLDI4LjE5LDUuNjIsMzMsMTAuNTcsMzNIMjcuMDlDMzEuMjgsMzMsMzUsMjkuMSwzNSwyNC42NUE4LjI5LDguMjksMCwwLDAsMjksMTYuNjZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4y''@;'; put 'put ''OCwwLDAsMCwyNi44NSwxLjE0WiIvPicpLGUuQ2xyU2hhcGVFbGxpcHNpc0hvcml6b250YWw9KDAsYS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjeD0iMzEuMSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjQuOSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0z''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzEuMSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNC45IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGUuQ2xyU2hhcGVFbGxpcHNpc1ZlcnRpY2FsPSgwLGEuY2xySWNvblNWRykoJzxj''@;'; put 'put ''aXJjbGUgY3g9IjE4IiBjeT0iNC45IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMzEuMSIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iNC45IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNs''@;'; put 'put ''ZSBjeD0iMTgiIGN5PSIzMS4xIiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxlLkNsclNoYXBlRmlsdGVyR3JpZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDI1Ljg2bDIsMVYyMC4yN2ExLDEsMCwwLDAt''@;'; put 'put ''LjI5LS43TDEwLjIzLDEzSDI1Ljc5bC02LjQ3LDYuNTdhMSwxLDAsMCwwLS4yOS43TDE5LDI4bDIsMVYyMC42OEwyNy41OCwxNEExLjQ2LDEuNDYsMCwwLDAsMjgsMTNWMTJhMSwxLDAsMCwwLTEtMUg5YTEsMSwwLDAsMC0xLDF2MWExLjQ2LDEuNDYsMCwwLDAsLjQyLDFMMTUsMjAuNjhaIi8+''@;'; put 'put ''XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTgsMTF2MS4xMmEuNS41LDAsMCwwLC4xNS4zNWw3LjI4LDcuMzZhLjUuNSwwLDAsMSwuMTUuMzV2Ni44OWEuNS41LDAsMCwwLC4yOC40NWwzLjk1LDEuNDFhLjUuNSwwLDAs''@;'; put 'put ''MCwuNzItLjQ1bDAtOC4zOWEuNTQuNTQsMCwwLDEsLjE4LS4zNWw3LjEyLTcuMjVhLjUuNSwwLDAsMCwuMTUtLjM1VjExWiIvPicpLGUuQ2xyU2hhcGVGaWx0ZXJHcmlkQ2lyY2xlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIiBkPSJNMTUsMjUuODZsMiwxVjIwLjI3YTEsMSwwLDAsMC0uMjktLjdMMTAuMjMsMTNIMjUuNzlsLTYuNDcsNi41N2ExLDEsMCwwLDAtLjI5LjdMMTksMjhsMiwxVjIwLjY4TDI3LjU4LDE0QTEuNDYsMS40NiwwLDAsMCwyOCwxM1YxMmExLDEsMCwwLDAtMS0xSDlhMSwxLDAsMCwwLTEs''@;'; put 'put ''MXYxYTEuNDYsMS40NiwwLDAsMCwuNDIsMUwxNSwyMC42OFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEs''@;'; put 'put ''MSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0''@;'; put 'put ''LDAsMCwxLDE4LDMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik04LDExdjEuMTJhLjUuNSwwLDAsMCwuMTUuMzVsNy4yOCw3LjM2YS41LjUsMCwwLDEsLjE1LjM1djYuODlhLjUuNSwwLDAsMCwuMjguNDVsMy45''@;'; put 'put ''NSwxLjQxYS41LjUsMCwwLDAsLjcyLS40NWwwLTguMzlhLjU0LjU0LDAsMCwxLC4xOC0uMzVsNy4xMi03LjI1YS41LjUsMCwwLDAsLjE1LS4zNVYxMVoiLz4nKSxlLkNsclNoYXBlVm1CdWc9KDAsYS5jbHJJY29uU1ZHKSgnPHJlY3Qgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iMyIgZmls''@;'; put 'put ''bD0iI2ZmZmZmZiIgb3BhY2l0eT0iMC4xNSIgc3R5bGU9Imlzb2xhdGlvbjppc29sYXRlIi8+PHBhdGggZD0iTTMuNzksMTQuODNhMS4wOSwxLjA5LDAsMCwwLTEuNDctLjU2LDEuMDksMS4wOSwwLDAsMC0uNTQsMS40OWwyLjQ3LDUuNGMuMzkuODUuOCwxLjI5LDEuNTcsMS4yOVM3LDIyLDcu''@;'; put 'put ''MzksMjEuMTZsMi4xNy00Ljc3YS4zMy4zMywwLDAsMSwuMzEtLjIuMzUuMzUsMCwwLDEsLjM1LjM1djQuNjFhMS4xNSwxLjE1LDAsMCwwLDEuMTQsMS4zLDEuMTcsMS4xNywwLDAsMCwxLjE3LTEuM1YxNy4zOGExLjE1LDEuMTUsMCwwLDEsMS4yMi0xLjIsMS4xMywxLjEzLDAsMCwxLDEuMTgs''@;'; put 'put ''MS4ydjMuNzdhMS4xNywxLjE3LDAsMSwwLDIuMzIsMFYxNy4zOGExLjE1LDEuMTUsMCwwLDEsMS4yMi0xLjIsMS4xMywxLjEzLDAsMCwxLDEuMTgsMS4ydjMuNzdhMS4xNiwxLjE2LDAsMSwwLDIuMzEsMFYxNi44NmEyLjY5LDIuNjksMCwwLDAtMi43OC0yLjY5LDMuNTcsMy41NywwLDAsMC0y''@;'; put 'put ''LjQ3LDEuMDUsMi43NSwyLjc1LDAsMCwwLTIuMzgtMS4wNUEzLjkzLDMuOTMsMCwwLDAsMTIsMTUuMjJhMi44MiwyLjgyLDAsMCwwLTIuMDgtMS4wNUEyLjU1LDIuNTUsMCwwLDAsNy40LDE1Ljg5TDUuODIsMTkuNjNsLTItNC44IiBmaWxsPSIjZmZmZmZmIi8+PHBhdGggZD0iTTMzLDE0LjE4''@;'; put 'put ''QTEuMTQsMS4xNCwwLDAsMCwzMS45LDE1bC0xLjE5LDMuNzNMMjkuNSwxNS4wNWExLjE4LDEuMTgsMCwwLDAtMS4xNS0uODdoLS4xYTEuMiwxLjIsMCwwLDAtMS4xNS44N2wtMS4xOSwzLjcxLTEuMTgtMy43MWExLjE1LDEuMTUsMCwwLDAtMS4xMS0uODcsMS4wOCwxLjA4LDAsMCwwLTEuMTIs''@;'; put 'put ''MS4wNywxLjY4LDEuNjgsMCwwLDAsLjEuNTRsMiw1LjdhMS4yNywxLjI3LDAsMCwwLDEuMjcsMSwxLjI0LDEuMjQsMCwwLDAsMS4yLS45M2wxLjItMy42NCwxLjIsMy42NGExLjI1LDEuMjUsMCwwLDAsMS4yNi45M0ExLjI3LDEuMjcsMCwwLDAsMzIsMjEuNUwzNCwxNS43M2ExLjc3LDEuNzcs''@;'; put 'put ''MCwwLDAsLjA4LS40OEExLjA3LDEuMDcsMCwwLDAsMzMsMTQuMThaIiBmaWxsPSIjZmZmZmZmIi8+JyksZS5DbHJTaGFwZVNlYXJjaD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE2LjMzLDUuMDVBMTAuOTUs''@;'; put 'put ''MTAuOTUsMCwxLDEsNS4zOSwxNiwxMSwxMSwwLDAsMSwxNi4zMyw1LjA1bTAtMi4wNWExMywxMywwLDEsMCwxMywxMywxMywxMywwLDAsMC0xMy0xM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTM1LDMz''@;'; put 'put ''LjI5bC03LjM3LTcuNDItMS40MiwxLjQxLDcuMzcsNy40MkExLDEsMCwxLDAsMzUsMzMuMjlaIi8+JyksZS5DbHJTaGFwZVZpZXdDb2x1bW5zPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEsNUg1QTIsMiww''@;'; put 'put ''LDAsMCwzLDdWMjlhMiwyLDAsMCwwLDIsMkgzMWEyLDIsMCwwLDAsMi0yVjdBMiwyLDAsMCwwLDMxLDVaTTEzLDI5SDVWN2g4Wm0xMCwwSDE1VjdoOFoiLz4nKSxlLkNsclNoYXBlQW5nbGVEb3VibGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEiIGQ9Ik0yOSwxOS40MWExLDEsMCwwLDEtLjcxLS4yOUwxOCw4LjgzLDcuNzEsMTkuMTJhMSwxLDAsMCwxLTEuNDEtMS40MUwxOCw2LDI5LjcxLDE3LjcxQTEsMSwwLDAsMSwyOSwxOS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI5LDMwLjQxYTEsMSwwLDAsMS0uNzEtLjI5TDE4LDE5LjgzLDcuNzEsMzAuMTJhMSwxLDAsMCwxLTEuNDEtMS40MUwxOCwxNywyOS43MSwyOC43MUExLDEsMCwwLDEsMjksMzAuNDFaIi8+JyksZS5DbHJTaGFwZUNhbGVuZGFyPSgwLGEu''@;'; put 'put ''Y2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIuMjUsNkgyOVY4aDNWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgs''@;'; put 'put ''MCwwLDAsMzQsMzAuMTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgeD0iOCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iMTQiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjIwIiB5PSIx''@;'; put 'put ''NCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiB4PSIyNiIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgeD0iOCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgeD0iMTQiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIy''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIHg9IjIwIiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC05IiB4PSIyNiIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiIHg9IjgiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAg''@;'; put 'put ''PHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTExIiB4PSIxNCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTIiIHg9IjIwIiB5PSIy''@;'; put 'put ''NCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMyIgeD0iMjYiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE0IiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE1IiBkPSJN''@;'; put 'put ''MjYsMTBhMSwxLDAsMCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAsMjYsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE2IiB4PSIxMyIgeT0iNiIgd2lkdGg9IjEwIiBoZWlnaHQ9IjIiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMiwxMy4yMlYzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41''@;'; put 'put ''QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiB4PSI4IiB5PSIxNCIgd2lkdGg9IjIi''@;'; put 'put ''IGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgeD0iMTQiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiB4PSIyMCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRn''@;'; put 'put ''ZWQiIHg9IjI2IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgeD0iOCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiIHg9IjE0IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCIgeD0iMjAiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYmFkZ2VkIiB4PSIyNiIgeT0iMTkiIHdp''@;'; put 'put ''ZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYmFkZ2VkIiB4PSI4IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1iYWRnZWQiIHg9IjE0IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEyLS1iYWRnZWQiIHg9IjIwIiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEzLS1iYWRnZWQiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0i''@;'; put 'put ''MiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE0LS1iYWRnZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNS0tYmFkZ2VkIiBkPSJNMjIuNSw2SDEzVjhoOS43OEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTYtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgs''@;'; put 'put ''MTUuNEgzMlYzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxNS4zOFoiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgeD0iOCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgeD0iMTQiIHk9''@;'; put 'put ''IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIHg9IjgiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAg''@;'; put 'put ''PHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIHg9IjE0IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC02LS1hbGVydGVkIiB4PSIyMCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIgeD0iMjYiIHk9IjE5IiB3aWR0aD0i''@;'; put 'put ''MiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWFsZXJ0ZWQiIHg9IjgiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWFsZXJ0ZWQiIHg9IjE0IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''MC0tYWxlcnRlZCIgeD0iMjAiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1hbGVydGVkIiB4PSIyNiIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9''@;'; put 'put ''IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTItLWFsZXJ0ZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz48cG9seWdvbiBwb2lu''@;'; put 'put ''dHM9IjIxLjI5IDYgMTMgNiAxMyA4IDIwLjE0IDggMjEuMjkgNiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4y''@;'; put 'put ''OCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi4y''@;'; put 'put ''NSw2aC00VjlhMi4yLDIuMiwwLDEsMS00LjQsMFY2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAs''@;'; put 'put ''MCwzMi4yNSw2Wk0xMCwyNkg4VjI0aDJabTAtNUg4VjE5aDJabTAtNUg4VjE0aDJabTYsMTBIMTRWMjRoMlptMC01SDE0VjE5aDJabTAtNUgxNFYxNGgyWm02LDEwSDIwVjI0aDJabTAtNUgyMFYxOWgyWm0wLTVIMjBWMTRoMlptNiwxMEgyNlYyNGgyWm0wLTVIMjZWMTloMlptMC01SDI2VjE0''@;'; put 'put ''aDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0yNiwxMGExLDEsMCwwLDAsMS0xVjNhMSwxLDAsMCwwLTIsMFY5QTEsMSwwLDAsMCwyNiwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdl''@;'; put 'put ''ZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzAsMTMuNUE3LjUsNy41LDAs''@;'; put 'put ''MCwxLDIyLjUsNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMwLDEzLjVaTTEwLDI2SDhW''@;'; put 'put ''MjRoMlptMC01SDhWMTloMlptMC01SDhWMTRoMlptNiwxMEgxNFYyNGgyWm0wLTVIMTRWMTloMlptMC01SDE0VjE0aDJabTYsMTBIMjBWMjRoMlptMC01SDIwVjE5aDJabTAtNUgyMFYxNGgyWm02LDEwSDI2VjI0aDJabTAtNUgyNlYxOWgyWm0wLTVIMjZWMTRoMloiLz5cbiAgICAgICAgICAg''@;'; put 'put ''ICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjEuMjksNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4''@;'; put 'put ''LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaTTEwLDI2SDhWMjRoMlptMC01SDhWMTloMlptMC01SDhWMTRoMlptNiwxMEgxNFYyNGgyWm0wLTVIMTRWMTloMlptMC01SDE0VjE0aDJabTYsMTBIMjBWMjRoMlptMC01SDIwVjE5aDJabTYsNUgyNlYyNGgyWm0wLTVIMjZWMTloMloiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4y''@;'; put 'put ''OCwwLDAsMCwyNi44NSwxLjE0WiIvPicpLGUuQ2xyU2hhcGVFdmVudD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE2LjE3LDI1Ljg2LDEwLjgxLDIwLjVhMSwxLDAsMCwxLDEuNDEtMS40MUwxNi4xNywyM2w4''@;'; put 'put ''LjY0LTguNjRhMSwxLDAsMCwxLDEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMyLjI1LDZIMjlWOGgzVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEu''@;'; put 'put ''NzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCwwLDMyLjI1LDZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xMCwxMGExLDEs''@;'; put 'put ''MCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAsMCww''@;'; put 'put ''LDI2LDEwWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiB4PSIxMyIgeT0iNiIgd2lkdGg9IjEwIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMC44MSwyMC41bDUuMzYsNS4zNkwyNi4yMiwxNS44MWExLDEsMCwwLDAtMS40MS0xLjQxTDE2LjE3LDIzbC0zLjk0LTMuOTRhMSwxLDAsMCwwLTEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0zMiwxMy4yMlYzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzIs''@;'; put 'put ''MTMuMjJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiBkPSJNMjIuNSw2SDEzVjhoOS43OEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEtLWFsZXJ0ZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTEw''@;'; put 'put ''LjgxLDIwLjVsNS4zNiw1LjM2TDI2LjIyLDE1LjgxYTEsMSwwLDAsMCwuMjMtLjQxSDIzLjhMMTYuMTcsMjNsLTMuOTQtMy45NGExLDEsMCwwLDAtMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0zLS1hbGVydGVkIiBwb2ludHM9IjIxLjI5IDYgMTMgNiAxMyA4IDIwLjE0IDggMjEuMjkgNiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgz''@;'; put 'put ''MlYzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxNS4zOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjYsMTBhMSwxLDAsMCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAsMjYsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTMyLjI1LDZoLTRWOWEyLjIs''@;'; put 'put ''Mi4yLDAsMCwxLTQuNCwwVjZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCwwLDMyLjI1LDZaTTI1''@;'; put 'put ''Ljk0LDE2LjU4bC05LjY3LDkuNjdMMTEsMjAuOTRBMS4zNiwxLjM2LDAsMCwxLDEyLjksMTlsMy4zOCwzLjM4TDI0LDE0LjY2YTEuMzYsMS4zNiwwLDEsMSwxLjkzLDEuOTNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMS0tYWxlcnRlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0z''@;'; put 'put ''My42OCwxNS40SDI2LjNhMS4zNCwxLjM0LDAsMCwxLS4zNiwxLjE4bC05LjY3LDkuNjdMMTEsMjAuOTRBMS4zNiwxLjM2LDAsMCwxLDEyLjksMTlsMy4zOCwzLjM4LDctN2gtMUEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRB''@;'; put 'put ''MS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxNS4zOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMwLDEzLjVBNy41LDcuNSwwLDAsMSwyMi41LDZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAs''@;'; put 'put ''MCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41Wm0tNC4wNiwzLjA4LTkuNjcsOS42N0wxMSwyMC45NEExLjM2LDEuMzYsMCwwLDEsMTIuOSwxOWwzLjM4LDMuMzhMMjQsMTQuNjZhMS4zNiwxLjM2LDAsMSwxLDEuOTMsMS45M1oiLz5cbiAgICAgICAgICAgICAgICA8''@;'; put 'put ''Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksZS5DbHJTaGFwZUV5ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMuNjIsMTcuNTNjLTMuMzctNi4yMy05''@;'; put 'put ''LjI4LTEwLTE1LjgyLTEwUzUuMzQsMTEuMywyLDE3LjUzTDEuNzIsMThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4LDEwLDE1LjgyLDEwczEyLjQ2LTMuNzIsMTUuODItMTBsLjI2LS40OFpNMTcuOCwyNi40M0MxMi4xNywyNi40Myw3LDIzLjI5LDQsMThjMy01LjI5LDguMTctOC40MywxMy44LTgu''@;'; put 'put ''NDNTMjguNTQsMTIuNzIsMzEuNTksMThDMjguNTQsMjMuMjksMjMuNDIsMjYuNDMsMTcuOCwyNi40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguMDksMTEuMTdBNi44Niw2Ljg2LDAsMSwwLDI1LDE4LDYu''@;'; put 'put ''ODYsNi44NiwwLDAsMCwxOC4wOSwxMS4xN1ptMCwxMS43MkE0Ljg2LDQuODYsMCwxLDEsMjMsMTgsNC44Nyw0Ljg3LDAsMCwxLDE4LjA5LDIyLjg5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42MiwxNy41''@;'; put 'put ''M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBTNS4zNCwxMS4zLDIsMTcuNTNMMS43MiwxOGwuMjYuNDhjMy4zNyw2LjIzLDkuMjgsMTAsMTUuODIsMTBzMTIuNDYtMy43MiwxNS44Mi0xMGwuMjYtLjQ4Wk0xNy44LDI2LjQzQzEyLjE3LDI2LjQzLDcsMjMuMjksNCwxOGMzLTUuMjksOC4x''@;'; put 'put ''Ny04LjQzLDEzLjgtOC40M1MyOC41NCwxMi43MiwzMS41OSwxOEMyOC41NCwyMy4yOSwyMy40MiwyNi40MywxNy44LDI2LjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTguMDkiIGN5PSIxOC4wMyIgcj0iNi44''@;'; put 'put ''NiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPicpLGUuQ2xyU2hhcGVFeWVIaWRlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNS4xOSwyMC40QTYuNzgsNi43OCwwLDAsMCwyNS42MiwxOGE2Ljg2LDYuODYsMCwwLDAtNi44Ni02Ljg2LDYuNzksNi43OSww''@;'; put 'put ''LDAsMC0yLjM3LjQzTDE4LDEzLjIzYTQuNzgsNC43OCwwLDAsMSwuNzQtLjA2QTQuODcsNC44NywwLDAsMSwyMy42MiwxOGE0Ljc5LDQuNzksMCwwLDEtLjA2Ljc0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0z''@;'; put 'put ''NC4yOSwxNy41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBhMTYuODIsMTYuODIsMCwwLDAtNS4yNC44NUwxNC44NCwxMGExNC43OCwxNC43OCwwLDAsMSwzLjYzLS40N2M1LjYzLDAsMTAuNzUsMy4xNCwxMy44LDguNDNhMTcuNzUsMTcuNzUsMCwwLDEtNC4zNyw1LjFsMS40MiwxLjQy''@;'; put 'put ''YTE5LjkzLDE5LjkzLDAsMCwwLDUtNmwuMjYtLjQ4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00Ljg3LDUuNzhsNC40Niw0LjQ2YTE5LjUyLDE5LjUyLDAsMCwwLTYuNjksNy4yOUwyLjM4LDE4bC4yNi40OGMz''@;'; put 'put ''LjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMGExNi45MywxNi45MywwLDAsMCw3LjM3LTEuNjlsNSw1LDEuNzUtMS41LTI2LTI2Wm05Ljc1LDkuNzUsNi42NSw2LjY1YTQuODEsNC44MSwwLDAsMS0yLjUuNzJBNC44Nyw0Ljg3LDAsMCwxLDEzLjksMTgsNC44MSw0LjgxLDAsMCwxLDE0LjYyLDE1''@;'; put 'put ''LjUzWm0tMS40NS0xLjQ1YTYuODUsNi44NSwwLDAsMCw5LjU1LDkuNTVsMS42LDEuNmExNC45MSwxNC45MSwwLDAsMS01Ljg2LDEuMmMtNS42MywwLTEwLjc1LTMuMTQtMTMuOC04LjQzYTE3LjI5LDE3LjI5LDAsMCwxLDYuMTItNi4zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4zNywxMS4xN0E2Ljc5LDYuNzksMCwwLDAsMTYsMTEuNmw4LjgsOC44QTYuNzgsNi43OCwwLDAsMCwyNS4yMywxOCw2Ljg2LDYuODYsMCwwLDAsMTguMzcsMTEuMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQuMjksMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1LjgyLTEwYTE2LjgyLDE2LjgyLDAsMCwwLTUuMjQuODVMMTQuODQsMTBhMTQuNzgsMTQuNzgsMCwwLDEsMy42My0uNDdjNS42MywwLDEwLjc1LDMuMTQsMTMuOCw4LjQz''@;'; put 'put ''YTE3Ljc1LDE3Ljc1LDAsMCwxLTQuMzcsNS4xbDEuNDIsMS40MmExOS45MywxOS45MywwLDAsMCw1LTZsLjI2LS40OFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00Ljg3LDUuNzhsNC40Niw0LjQ2YTE5LjUyLDE5LjUy''@;'; put 'put ''LDAsMCwwLTYuNjksNy4yOUwyLjM4LDE4bC4yNi40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMGExNi45MywxNi45MywwLDAsMCw3LjM3LTEuNjlsNSw1LDEuNzUtMS41LTI2LTI2Wm04LjMsOC4zYTYuODUsNi44NSwwLDAsMCw5LjU1LDkuNTVsMS42LDEuNmExNC45MSwxNC45MSwwLDAs''@;'; put 'put ''MS01Ljg2LDEuMmMtNS42MywwLTEwLjc1LTMuMTQtMTMuOC04LjQzYTE3LjI5LDE3LjI5LDAsMCwxLDYuMTItNi4zWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPicpLGUuQ2xyU2hhcGVTdGVwRm9yd2FyZDI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTcu''@;'; put 'put ''MDgsNi41MmExLjY4LDEuNjgsMCwwLDAsMCwyLjRMMTYuNTEsMTgsNy4xMiwyNy4wOGExLjcsMS43LDAsMCwwLDIuMzYsMi40NGgwTDIxLjQsMTgsOS40OCw2LjQ3QTEuNjksMS42OSwwLDAsMCw3LjA4LDYuNTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz48cGF0aCBkPSJNMjYuNDksNWExLjcsMS43LDAsMCwwLTEuNywxLjdWMjkuM2ExLjcsMS43LDAsMCwwLDMuNCwwVjYuN0ExLjcsMS43LDAsMCwwLDI2LjQ5LDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlQXJyb3c9KDAsYS5j''@;'; put 'put ''bHJJY29uU1ZHKSgnPHBhdGggZD0iTTI3LjY2LDE1LjYxLDE4LDYsOC4zNCwxNS42MUExLDEsMCwxLDAsOS43NSwxN0wxNyw5LjgxVjI4Ljk0YTEsMSwwLDEsMCwyLDBWOS44MUwyNi4yNSwxN2ExLDEsMCwwLDAsMS40MS0xLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiLz4nKSxlLkNvcmVTaGFwZXM9eyJ1bmtub3duLXN0YXR1cyI6ZS5DbHJTaGFwZVVua25vd25TdGF0dXMsaG9tZTplLkNsclNoYXBlSG9tZSxjb2c6ZS5DbHJTaGFwZUNvZyxjaGVjazplLkNsclNoYXBlQ2hlY2ssdGltZXM6ZS5DbHJTaGFwZVRpbWVzLCJleGNsYW1hdGlvbi10''@;'; put 'put ''cmlhbmdsZSI6ZS5DbHJTaGFwZUV4Y2xhbWF0aW9uVHJpYW5nbGUsImV4Y2xhbWF0aW9uLWNpcmNsZSI6ZS5DbHJTaGFwZUV4Y2xhbWF0aW9uQ2lyY2xlLCJjaGVjay1jaXJjbGUiOmUuQ2xyU2hhcGVDaGVja0NpcmNsZSwiaW5mby1jaXJjbGUiOmUuQ2xyU2hhcGVJbmZvQ2lyY2xlLCJpbmZv''@;'; put 'put ''LXN0YW5kYXJkIjplLkNsclNoYXBlSW5mb1N0YW5kYXJkLCJzdWNjZXNzLXN0YW5kYXJkIjplLkNsclNoYXBlU3VjY2Vzc1N0YW5kYXJkLCJlcnJvci1zdGFuZGFyZCI6ZS5DbHJTaGFwZUVycm9yU3RhbmRhcmQsIndhcm5pbmctc3RhbmRhcmQiOmUuQ2xyU2hhcGVXYXJuaW5nU3RhbmRhcmQs''@;'; put 'put ''ImhlbHAtaW5mbyI6ZS5DbHJTaGFwZUhlbHBJbmZvLGJhcnM6ZS5DbHJTaGFwZUJhcnMsdXNlcjplLkNsclNoYXBlVXNlcixhbmdsZTplLkNsclNoYXBlQW5nbGUsZm9sZGVyOmUuQ2xyU2hhcGVGb2xkZXIsImZvbGRlci1vcGVuIjplLkNsclNoYXBlRm9sZGVyT3BlbixiZWxsOmUuQ2xyU2hh''@;'; put 'put ''cGVCZWxsLGltYWdlOmUuQ2xyU2hhcGVJbWFnZSxjbG91ZDplLkNsclNoYXBlQ2xvdWQsImVsbGlwc2lzLWhvcml6b250YWwiOmUuQ2xyU2hhcGVFbGxpcHNpc0hvcml6b250YWwsImVsbGlwc2lzLXZlcnRpY2FsIjplLkNsclNoYXBlRWxsaXBzaXNWZXJ0aWNhbCwiZmlsdGVyLWdyaWQiOmUu''@;'; put 'put ''Q2xyU2hhcGVGaWx0ZXJHcmlkLCJmaWx0ZXItZ3JpZC1jaXJjbGUiOmUuQ2xyU2hhcGVGaWx0ZXJHcmlkQ2lyY2xlLCJ2bS1idWciOmUuQ2xyU2hhcGVWbUJ1ZyxzZWFyY2g6ZS5DbHJTaGFwZVNlYXJjaCwidmlldy1jb2x1bW5zIjplLkNsclNoYXBlVmlld0NvbHVtbnMsImFuZ2xlLWRvdWJs''@;'; put 'put ''ZSI6ZS5DbHJTaGFwZUFuZ2xlRG91YmxlLGNhbGVuZGFyOmUuQ2xyU2hhcGVDYWxlbmRhcixldmVudDplLkNsclNoYXBlRXZlbnQsZXllOmUuQ2xyU2hhcGVFeWUsImV5ZS1oaWRlIjplLkNsclNoYXBlRXllSGlkZSwic3RlcC1mb3J3YXJkLTIiOmUuQ2xyU2hhcGVTdGVwRm9yd2FyZDIsYXJy''@;'; put 'put ''b3c6ZS5DbHJTaGFwZUFycm93fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5Db3JlU2hhcGVzLCJob3VzZSIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLkNvcmVTaGFwZXMuaG9tZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkNvcmVTaGFwZXMsInNldHRpbmdzIiwoMCxyLmRlc2NyaXB0''@;'; put 'put ''b3JDb25maWcpKGUuQ29yZVNoYXBlcy5jb2cpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5Db3JlU2hhcGVzLCJzdWNjZXNzIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuQ29yZVNoYXBlcy5jaGVjaykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkNvcmVTaGFwZXMsImNsb3NlIiwoMCxy''@;'; put 'put ''LmRlc2NyaXB0b3JDb25maWcpKGUuQ29yZVNoYXBlcy50aW1lcykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkNvcmVTaGFwZXMsIndhcm5pbmciLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Db3JlU2hhcGVzWyJleGNsYW1hdGlvbi10cmlhbmdsZSJdKSksT2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KGUuQ29yZVNoYXBlcywiZXJyb3IiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Db3JlU2hhcGVzWyJleGNsYW1hdGlvbi1jaXJjbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkNvcmVTaGFwZXMsImluZm8iLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Db3JlU2hhcGVzWyJp''@;'; put 'put ''bmZvLWNpcmNsZSJdKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuQ29yZVNoYXBlcywibWVudSIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLkNvcmVTaGFwZXMuYmFycykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkNvcmVTaGFwZXMsImF2YXRhciIsKDAsci5kZXNjcmlwdG9yQ29uZmln''@;'; put 'put ''KShlLkNvcmVTaGFwZXMudXNlcikpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkNvcmVTaGFwZXMsImNhcmV0IiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuQ29yZVNoYXBlcy5hbmdsZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkNvcmVTaGFwZXMsImRpcmVjdG9yeSIsKDAsci5kZXNj''@;'; put 'put ''cmlwdG9yQ29uZmlnKShlLkNvcmVTaGFwZXMuZm9sZGVyKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuQ29yZVNoYXBlcywibm90aWZpY2F0aW9uIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuQ29yZVNoYXBlcy5iZWxsKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuQ29yZVNoYXBlcywi''@;'; put 'put ''Y29sbGFwc2UiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Db3JlU2hhcGVzWyJhbmdsZS1kb3VibGUiXSkpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2Vzc2VudGlhbC1zaGFwZXMudHMiOmZ1bmN0aW9uKEEsZSxjKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuQ2xyU2hhcGVMb2dvdXQ9ZS5DbHJTaGFwZUxvZ2luPWUuQ2xyU2hhcGVIZWxwPWUuQ2xyU2hhcGVDb3B5PWUuQ2xyU2hhcGVDaGlsZEFycm93PWUuQ2xyU2hhcGVDaXJjbGVBcnJvdz1lLkNsclNoYXBlQWxhcm1DbG9jaz1lLkNsclNoYXBl''@;'; put 'put ''Q2xvY2s9ZS5DbHJTaGFwZUhpc3Rvcnk9ZS5DbHJTaGFwZVRhZ3M9ZS5DbHJTaGFwZVRhZz1lLkNsclNoYXBlVHJhc2g9ZS5DbHJTaGFwZVRpbWVzQ2lyY2xlPWUuQ2xyU2hhcGVCYW49ZS5DbHJTaGFwZVBsdXNDaXJjbGU9ZS5DbHJTaGFwZU1pbnVzQ2lyY2xlPWUuQ2xyU2hhcGVNaW51cz1l''@;'; put 'put ''LkNsclNoYXBlUGx1cz1lLkNsclNoYXBlRmlsZT1lLkNsclNoYXBlUGluPWUuQ2xyU2hhcGVGaWx0ZXI9ZS5DbHJTaGFwZVBvcE91dD1lLkNsclNoYXBlVXNlcnM9ZS5DbHJTaGFwZVVubG9jaz1lLkNsclNoYXBlTG9jaz1lLkNsclNoYXBlVXBsb2FkPWUuQ2xyU2hhcGVEb3dubG9hZD1lLkNs''@;'; put 'put ''clNoYXBlTGlnaHRidWxiPWUuQ2xyU2hhcGVWaWV3Q2FyZHM9ZS5DbHJTaGFwZVZpZXdMaXN0PWUuQ2xyU2hhcGVTeW5jPWUuQ2xyU2hhcGVSZWZyZXNoPWUuQ2xyU2hhcGVOb3RlPWUuQ2xyU2hhcGVQZW5jaWw9ZS5DbHJTaGFwZVRoZXJtb21ldGVyPWUuQ2xyU2hhcGVCdWc9ZS5DbHJTaGFw''@;'; put 'put ''ZVNjaXNzb3JzPWUuQ2xyU2hhcGVBc3Rlcmlzaz1lLkNsclNoYXBlQm9vaz1lLkNsclNoYXBlT2JqZWN0cz1lLkNsclNoYXBlUmVzaXplPWUuQ2xyU2hhcGVDdXJzb3JIYW5kQ2xpY2s9ZS5DbHJTaGFwZUN1cnNvckhhbmQ9ZS5DbHJTaGFwZUN1cnNvckFycm93PWUuQ2xyU2hhcGVHcmlkVmll''@;'; put 'put ''dz1lLkNsclNoYXBlQnViYmxlRXhjbGFtYXRpb249ZS5DbHJTaGFwZU5ldz1lLkNsclNoYXBlQWxhcm1PZmY9ZS5DbHJTaGFwZVBpbmJvYXJkPWUuQ2xyU2hhcGVBZGRUZXh0PXZvaWQgMCxlLkNsclNoYXBlQ2xvbmU9ZS5DbHJTaGFwZUN1cnNvck1vdmU9ZS5DbHJTaGFwZVdhbmQ9ZS5DbHJT''@;'; put 'put ''aGFwZVN1bj1lLkNsclNoYXBlTW9vbj1lLkNsclNoYXBlRmlsdGVyMj1lLkNsclNoYXBlRHJhZ0hhbmRsZT1lLkNsclNoYXBlQ29weVRvQ2xpcGJvYXJkPWUuQ2xyU2hhcGVDb2xvclBpY2tlcj1lLkNsclNoYXBlQnJpZWZjYXNlPWUuQ2xyU2hhcGVFeHBhbmRDYXJkPWUuQ2xyU2hhcGVDb2xs''@;'; put 'put ''YXBzZUNhcmQ9ZS5DbHJTaGFwZVNvcnRCeT1lLkNsclNoYXBlQWNjZXNzaWJpbGl0eTI9ZS5DbHJTaGFwZUFjY2Vzc2liaWxpdHkxPWUuQ2xyU2hhcGVTaHJpbms9ZS5DbHJTaGFwZVBhcGVyY2xpcD1lLkNsclNoYXBlRmlsZUdyb3VwPWUuQ2xyU2hhcGVSZXBlYXQ9ZS5DbHJTaGFwZUlkQmFk''@;'; put 'put ''Z2U9ZS5DbHJTaGFwZUJhbGFuY2U9ZS5DbHJTaGFwZU9yZ2FuaXphdGlvbj1lLkNsclNoYXBlTm9BY2Nlc3M9ZS5DbHJTaGFwZUhvdXJnbGFzcz1lLkNsclNoYXBlRmxhbWU9ZS5DbHJTaGFwZVRhcmdldD1lLkNsclNoYXBlQnVsbHNleWU9ZS5DbHJTaGFwZVdyZW5jaD1lLkNsclNoYXBlQm9s''@;'; put 'put ''dD1lLkNsclNoYXBlTGlicmFyeT1lLkNsclNoYXBlS2V5PWUuQ2xyU2hhcGVab29tT3V0PWUuQ2xyU2hhcGVab29tSW49ZS5DbHJTaGFwZVdpbmRvd1Jlc3RvcmU9ZS5DbHJTaGFwZVdpbmRvd01pbj1lLkNsclNoYXBlV2luZG93TWF4PWUuQ2xyU2hhcGVXaW5kb3dDbG9zZT1lLkNsclNoYXBl''@;'; put 'put ''VG9vbHM9ZS5DbHJTaGFwZVN3aXRjaD1lLkNsclNoYXBlVHdvV2F5QXJyb3dzPWUuQ2xyU2hhcGVGaWxlU2V0dGluZ3M9ZS5DbHJTaGFwZVNjcm9sbD1lLkNsclNoYXBlVW5kbz1lLkNsclNoYXBlUmVkbz1lLkNsclNoYXBlTGlzdD1lLkNsclNoYXBlRmlyZXdhbGw9ZS5DbHJTaGFwZUNsaXBi''@;'; put 'put ''b2FyZD1lLkNsclNoYXBlU2xpZGVyPWUuQ2xyU2hhcGVXb3JsZD1lLkNsclNoYXBlUHJpbnRlcj12b2lkIDAsZS5Fc3NlbnRpYWxTaGFwZXM9ZS5DbHJTaGFwZUNvbG9yUGFsZXR0ZT1lLkNsclNoYXBlRmlyc3RBaWQ9ZS5DbHJTaGFwZUJldGE9ZS5DbHJTaGFwZURvdENpcmNsZT1lLkNsclNo''@;'; put 'put ''YXBlQ2lyY2xlPWUuQ2xyU2hhcGVDcm9zc2hhaXJzPWUuQ2xyU2hhcGVWb2x1bWU9ZS5DbHJTaGFwZVRhYmxlPWUuQ2xyU2hhcGVTbm93Zmxha2U9ZS5DbHJTaGFwZUZ1ZWw9ZS5DbHJTaGFwZUZvcm09ZS5DbHJTaGFwZUZpc2g9ZS5DbHJTaGFwZVRyZWU9ZS5DbHJTaGFwZVJlY3ljbGU9ZS5D''@;'; put 'put ''bHJTaGFwZUZpbHRlck9mZj1lLkNsclNoYXBlRmlsZVppcD1lLkNsclNoYXBlQ3Vyc29ySGFuZE9wZW49ZS5DbHJTaGFwZUN1cnNvckhhbmRHcmFiPWUuQ2xyU2hhcGVUcmVlVmlldz1lLkNsclNoYXBlUG9ydHJhaXQ9ZS5DbHJTaGFwZVBhc3RlPWUuQ2xyU2hhcGVMYW5kc2NhcGU9ZS5DbHJT''@;'; put 'put ''aGFwZUVyYXNlcj1lLkNsclNoYXBlRHJhZ0hhbmRsZUNvcm5lcj1lLkNsclNoYXBlRGV0YWlscz12b2lkIDA7dmFyIHI9YygiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiKSxhPWMoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2Vu''@;'; put 'put ''ZXJhdG9yLnRzIik7Yz1jKCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMiKSxlLkNsclNoYXBlQWRkVGV4dD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLDIxSDEzYTEsMSww''@;'; put 'put ''LDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTIsMTZhMSwxLDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMC0ySDEzQTEsMSwwLDAsMCwxMiwxNloiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjcsMjdIMTNhMSwxLDAsMCwwLDAsMkgyN2ExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9''@;'; put 'put ''Ik0xNS44OSw5YTEsMSwwLDAsMC0xLTFIMTBWMy4yMWExLDEsMCwwLDAtMiwwVjhIMi44OWExLDEsMCwwLDAsMCwySDh2NS4yMWExLDEsMCwwLDAsMiwwVjEwaDQuODlBMSwxLDAsMCwwLDE1Ljg5LDlaIi8+JyksZS5DbHJTaGFwZVBpbmJvYXJkPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAsMzAsNiwzMCw2LDZIMjJWNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE0SDMwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMy41Nyw5LjMzbC03LTdhMSwxLDAsMCwwLTEuNDEsMS40MWw3LDdhMSwxLDAsMSwwLDEuNDEtMS40MVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjIuMSwxMS4x''@;'; put 'put ''OWwuNy41TDI2LjQ2LDgsMjUsNi41NiwyMi41MSw5LjEzYy0yLS44Ny00LjM1LjE0LTUuOTIsMS42OGwtLjcyLjcxLDMuNTQsMy41NC0zLjY3LDMuNjcsMS40MSwxLjQxLDMuNjctMy42N0wyNC4zNywyMGwuNzEtLjcyYzEuNTQtMS41NywyLjU1LTMuOTIsMS42OC01LjkzbDIuNTQtMi41N0wy''@;'; put 'put ''Ny44OCw5LjM4LDI0LjIxLDEzLjFsLjQ5LjY5Yy43NiwxLC4yNSwyLjM3LS40MSwzLjMzTDE4Ljc3LDExLjZDMTkuODQsMTAuODYsMjEuMTUsMTAuNSwyMi4xLDExLjE5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMw''@;'; put 'put ''LDMwLDYsMzAsNiw2SDIyVjRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxNEgzMFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMy41Nyw5LjMzbC03LTdhMSwxLDAsMCww''@;'; put 'put ''LTEuNDEsMS40MWwxLjM4LDEuMzgtNCw0Yy0yLS44Ny00LjM1LjE0LTUuOTIsMS42OGwtLjcyLjcxLDMuNTQsMy41NC0zLjY3LDMuNjcsMS40MSwxLjQxLDMuNjctMy42N0wyNC4zNywyMGwuNzEtLjcyYzEuNTQtMS41NywyLjU1LTMuOTEsMS42OC01LjkybDQtNCwxLjM4LDEuMzhhMSwxLDAs''@;'; put 'put ''MSwwLDEuNDEtMS40MVoiLz4nKSxlLkNsclNoYXBlQWxhcm1PZmY9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMS40NywzLjg0YTUuNzgsNS43OCwwLDAsMC03LjM3LS42MywxNi4wOCwxNi4wOCwwLDAsMSw4''@;'; put 'put ''LjIsNy42NUE1LjczLDUuNzMsMCwwLDAsMzEuNDcsMy44NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjUuMzMsMjEuNTRhLjkuOSwwLDAsMC0uNDEtMS4ybC0zLjItMS41NkwyNC44OSwyMkEuODkuODksMCww''@;'; put 'put ''LDAsMjUuMzMsMjEuNTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LDguNmEuOS45LDAsMCwwLS45Ljl2NC42bDEuOCwxLjgxVjkuNUEuOS45LDAsMCwwLDE4LDguNloiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMTEuNDIsMy40M2E1LjgsNS44LDAsMCwwLTUuODEtLjgxTDguMyw1LjMyQTE2LDE2LDAsMCwxLDExLjQyLDMuNDNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtNSIgZD0iTTE4LDRhMTMuOTEsMTMuOTEsMCwwLDAtOC4zLDIuNzVsMS40MiwxLjQzQTEyLDEyLDAsMCwxLDI3LjgyLDI0LjlsMS40MiwxLjQzQTE0LDE0LDAsMCwwLDE4LDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNiIgZD0iTTEuNTYsNC4yMSwyLjczLDUuMzhhNS43LDUuNywwLDAsMCwuNjcsNi4xQTE1Ljc4LDE1Ljc4LDAsMCwxLDUuNDYsOC4xMkw2Ljg4LDkuNTVBMTMuOTQsMTMuOTQsMCwwLDAsOC4xMSwyNy44OEw1LjU2LDMwLjQzQTEsMSwwLDEsMCw3LDMxLjg0bDIuNjYtMi42NmEx''@;'; put 'put ''My44OSwxMy44OSwwLDAsMCwxNi44LDBsNC4xNCw0LjE1TDMyLDMxLjksMywyLjhaTTI1LDI3LjcyQTExLjg5LDExLjg5LDAsMCwxLDE4LDMwLDEyLDEyLDAsMCwxLDYsMThhMTEuODksMTEuODksMCwwLDEsMi4yOS03WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMxLjQ3LDMuODRhNS43OCw1Ljc4LDAsMCwwLTcuMzctLjYzLDE2LjA4LDE2LjA4LDAsMCwxLDguMiw3LjY1QTUuNzMsNS43MywwLDAsMCwzMS40NywzLjg0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMiIgZD0iTTExLjQyLDMuNDNhNS44LDUuOCwwLDAsMC01Ljc3LS44Mkw4LjMzLDUuM0ExNiwxNiwwLDAsMSwxMS40MiwzLjQzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTI0LjkyLDIxLjk0bDQuMzQs''@;'; put 'put ''NC4zNkExNCwxNCwwLDAsMCw5Ljc1LDYuNzNMMTcsMTRWOS42OWExLDEsMCwwLDEsMiwwVjE2bDIuMzMsMi4zNEwyNSwyMC4xYTEsMSwwLDAsMSwuNDcsMS4zM0ExLDEsMCwwLDEsMjQuOTIsMjEuOTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC00IiBkPSJNMS42MSw0LjIxLDIuNzMsNS4zNGE1LjczLDUuNzMsMCwwLDAsLjY3LDYuMTVBMTUuODgsMTUuODgsMCwwLDEsNS40OCw4LjFMNi45MSw5LjUyQTEzLjk0LDEzLjk0LDAsMCwwLDguMTEsMjcuODhMNS41NiwzMC40M0ExLDEsMCwxLDAsNywzMS44NGwyLjY2LTIuNjZh''@;'; put 'put ''MTMuODksMTMuODksMCwwLDAsMTYuODMsMGw0LjE2LDQuMTdMMzIsMzEuOSwzLDIuOFoiLz4nKSxlLkNsclNoYXBlTmV3PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzQuNTksMjNsLTQuMDgtNSw0LTQuOWEx''@;'; put 'put ''LjgyLDEuODIsMCwwLDAsLjIzLTEuOTRBMS45MywxLjkzLDAsMCwwLDMyLjk0LDEwaC0zMUExLjkxLDEuOTEsMCwwLDAsMCwxMS44OFYyNC4xM0ExLjkxLDEuOTEsMCwwLDAsMS45NCwyNkgzMy4wNWExLjkzLDEuOTMsMCwwLDAsMS43Ny0xLjA5QTEuODIsMS44MiwwLDAsMCwzNC41OSwyM1pN''@;'; put 'put ''MiwyNFYxMkgzMi43OGwtNC44NCw1LjkzTDMyLjg1LDI0WiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBwb2ludHM9IjkuMzkgMTkuMzUgNi4xMyAxNSA1IDE1IDUgMjEuMTggNi4xMyAyMS4xOCA2LjEzIDE2Ljg0''@;'; put 'put ''IDkuMzkgMjEuMTggMTAuNTEgMjEuMTggMTAuNTEgMTUgOS4zOSAxNSA5LjM5IDE5LjM1Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiAgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHBvaW50cz0iMTIuMTggMjEuMTggMTYuODQgMjEuMTggMTYuODQgMjAuMTYg''@;'; put 'put ''MTMuMzEgMjAuMTYgMTMuMzEgMTguNTUgMTYuNSAxOC41NSAxNi41IDE3LjUyIDEzLjMxIDE3LjUyIDEzLjMxIDE2LjAzIDE2Ljg0IDE2LjAzIDE2Ljg0IDE1IDEyLjE4IDE1IDEyLjE4IDIxLjE4Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiAgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTQiIHBvaW50cz0iMjQuNTIgMTkuNDMgMjMuMDYgMTUgMjEuODQgMTUgMjAuMzcgMTkuNDMgMTkuMDUgMTUgMTcuODIgMTUgMTkuNzggMjEuMTggMjAuODkgMjEuMTggMjIuNDUgMTYuNTkgMjQgMjEuMTggMjUuMTMgMjEuMTggMjcuMDggMTUgMjUuODUgMTUgMjQuNTIg''@;'; put 'put ''MTkuNDMiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNC4xMSwyNC40OWwtMy45Mi02LjYyLDMuODgtNi4zNUExLDEsMCwwLDAsMzMuMjIsMTBIMmEyLDIsMCwwLDAtMiwyVjI0YTIsMiwwLDAsMCwyLDJIMzMuMjVBMSwx''@;'; put 'put ''LDAsMCwwLDM0LjExLDI0LjQ5Wm0tMjMuNi0zLjMxSDkuMzlMNi4xMywxNi44NHY0LjM1SDVWMTVINi4xM2wzLjI3LDQuMzVWMTVoMS4xMlpNMTYuODQsMTZIMTMuMzF2MS40OWgzLjJ2MWgtMy4ydjEuNjFoMy41M3YxSDEyLjE4VjE1aDQuNjVabTguMjksNS4xNkgyNGwtMS41NS00LjU5TDIw''@;'; put 'put ''LjksMjEuMThIMTkuNzhsLTItNi4xOEgxOWwxLjMyLDQuNDNMMjEuODQsMTVoMS4yMmwxLjQ2LDQuNDNMMjUuODUsMTVoMS4yM1oiLz4nKSxlLkNsclNoYXBlQnViYmxlRXhjbGFtYXRpb249KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiIGQ9Ik0xOCwyLjVjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgsMTQsMTYsMTRhMTgsMTgsMCwwLDAsNC44OC0uNjhsNS41MywzLjUyYTEsMSwwLDAsMCwxLjU0LS44NGwwLTYuNzNhMTMsMTMsMCwwLDAsNC05LjI3QzM0LDguNzgsMjYuODIsMi41LDE4LDIuNVpNMjguMjks''@;'; put 'put ''MjQuNjFhMSwxLDAsMCwwLS4zMi43M2wwLDUuMzQtNC4zOC0yLjc5YTEsMSwwLDAsMC0uODMtLjExQTE2LDE2LDAsMCwxLDE4LDI4LjVjLTcuNzIsMC0xNC01LjM4LTE0LTEyczYuMjgtMTIsMTQtMTIsMTQsNS4zOCwxNCwxMkExMS4wOCwxMS4wOCwwLDAsMSwyOC4yOSwyNC42MVoiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjAuNjNhMSwxLDAsMCwwLDEtMVY4LjQ4YTEsMSwwLDEsMC0yLDBWMTkuNjFBMSwxLDAsMCwwLDE4LDIwLjYzWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgY3g9IjE4IiBjeT0iMjQuMDQiIHI9IjEuMzMiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyLjVjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgsMTQsMTYs''@;'; put 'put ''MTRhMTgsMTgsMCwwLDAsNC44OC0uNjhsNS41MywzLjUyYTEsMSwwLDAsMCwxLjU0LS44NGwwLTYuNzNhMTMsMTMsMCwwLDAsNC05LjI3QzM0LDguNzgsMjYuODIsMi41LDE4LDIuNVpNMTYuOTMsOS4xM2ExLjQxLDEuNDEsMCwxLDEsMi44MSwwVjE4LjlhMS40MSwxLjQxLDAsMSwxLTIuODEs''@;'; put 'put ''MFptMS40MSwxNy4zNWExLjg3LDEuODcsMCwxLDEsMS44Ny0xLjg3QTEuODcsMS44NywwLDAsMSwxOC4zNCwyNi40N1oiLz4nKSxlLkNsclNoYXBlR3JpZFZpZXc9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0x''@;'; put 'put ''NCw0SDZBMiwyLDAsMCwwLDQsNnY4YTIsMiwwLDAsMCwyLDJoOGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDE0LDRaTTYsMTRWNmg4djhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMwLDRIMjJhMiwyLDAs''@;'; put 'put ''MCwwLTIsMnY4YTIsMiwwLDAsMCwyLDJoOGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMwLDRaTTIyLDE0VjZoOHY4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xNCwyMEg2YTIsMiwwLDAsMC0yLDJ2OGEy''@;'; put 'put ''LDIsMCwwLDAsMiwyaDhhMiwyLDAsMCwwLDItMlYyMkEyLDIsMCwwLDAsMTQsMjBaTTYsMzBWMjJoOHY4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0zMCwyMEgyMmEyLDIsMCwwLDAtMiwydjhhMiwyLDAsMCww''@;'; put 'put ''LDIsMmg4YTIsMiwwLDAsMCwyLTJWMjJBMiwyLDAsMCwwLDMwLDIwWk0yMiwzMFYyMmg4djhaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiB4PSI0IiB5PSI0IiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHJ4PSIyIiByeT0iMiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgeD0iMjAiIHk9IjQiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgcng9IjIiIHJ5PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0zIiB4PSI0IiB5PSIyMCIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiByeD0iMiIgcnk9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIHg9IjIwIiB5PSIyMCIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiByeD0iMiIgcnk9IjIi''@;'; put 'put ''Lz4nKSxlLkNsclNoYXBlQ3Vyc29yQXJyb3c9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNC41OCwzMi4zMWExLDEsMCwwLDEtLjk0LS42NUw0LDUuNjVBMSwxLDAsMCwxLDUuMjUsNC4zN2wyNiw5LjY4YTEs''@;'; put 'put ''MSwwLDAsMS0uMDUsMS44OWwtOC4zNiwyLjU3LDguMyw4LjNhMSwxLDAsMCwxLDAsMS40MWwtMy4yNiwzLjI2YTEsMSwwLDAsMS0uNzEuMjloMGExLDEsMCwwLDEtLjcxLS4yOWwtOC4zMy04LjMzLTIuNiw4LjQ1YTEsMSwwLDAsMS0uOTMuNzFabTMuMDktMTJhMSwxLDAsMCwxLC43MS4yOWw4''@;'; put 'put ''Ljc5LDguNzlMMjksMjcuNTFsLTguNzYtOC43NmExLDEsMCwwLDEsLjQxLTEuNjZsNy4xMy0yLjJMNi42LDdsNy44OSwyMS4yTDE2LjcxLDIxYTEsMSwwLDAsMSwuNzEtLjY4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0i''@;'; put 'put ''TTI5LDEyLjM2LDMuODgsM0ExLDEsMCwwLDAsMi41OSw0LjI4TDEyLDI5LjQ0YTEsMSwwLDAsMCwxLjg5LS4wNWwyLjY5LTguNzUsOS4xMiw4LjlhMSwxLDAsMCwwLDEuNDEsMGwyLjM1LTIuMzVhMSwxLDAsMCwwLDAtMS40MWwtOS4wOS04Ljg2TDI5LDE0LjI1QTEsMSwwLDAsMCwyOSwxMi4z''@;'; put 'put ''NloiLz4nKSxlLkNsclNoYXBlQ3Vyc29ySGFuZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMwLjc0LDE1LjE5YTEzLjY2LDEzLjY2LDAsMCwwLTYuODctMy44M0EyNiwyNiwwLDAsMCwxOCwxMC41OFY1LjI4''@;'; put 'put ''QTMuNCwzLjQsMCwwLDAsMTQuNSwyLDMuNCwzLjQsMCwwLDAsMTEsNS4yOHYxMEw5LjQsMTMuN2EzLjc3LDMuNzcsMCwwLDAtNS4yOCwwQTMuNjcsMy42NywwLDAsMCwzLDE2LjMzYTMuNiwzLjYsMCwwLDAsMSwyLjU2bDQuNjYsNS41MmExMS41MywxMS41MywwLDAsMCwxLjQzLDQsMTAuMTIs''@;'; put 'put ''MTAuMTIsMCwwLDAsMiwyLjU0djEuOTJhMS4wNywxLjA3LDAsMCwwLDEsMS4wOEgyN2ExLjA3LDEuMDcsMCwwLDAsMS0xLjA4di0yLjdhMTIuODEsMTIuODEsMCwwLDAsMy04LjM2di02QTEsMSwwLDAsMCwzMC43NCwxNS4xOVpNMjksMjEuODZhMTAuNzIsMTAuNzIsMCwwLDEtMi42LDcuMjYs''@;'; put 'put ''MS4xMSwxLjExLDAsMCwwLS40LjcyVjMySDE0LjE0VjMwLjUyYTEsMSwwLDAsMC0uNDQtLjgzLDcuMjYsNy4yNiwwLDAsMS0xLjgyLTIuMjMsOS4xNCw5LjE0LDAsMCwxLTEuMi0zLjUyLDEsMSwwLDAsMC0uMjMtLjU5TDUuNTMsMTcuNTNhMS43LDEuNywwLDAsMSwwLTIuNDIsMS43NiwxLjc2''@;'; put 'put ''LDAsMCwxLDIuNDcsMGwzLDN2My4xNGwyLTFWNS4yOEExLjQyLDEuNDIsMCwwLDEsMTQuNSw0LDEuNDIsMS40MiwwLDAsMSwxNiw1LjI4djExLjhsMiwuNDNWMTIuNTlhMjQuMjcsMjQuMjcsMCwwLDEsMi41MS4xOFYxOGwxLjYuMzVWMTNjLjQxLjA4LjgzLjE3LDEuMjYuMjhhMTQuODgsMTQu''@;'; put 'put ''ODgsMCwwLDEsMS41My40OXY1LjE1bDEuNi4zNVYxNC41QTExLjA2LDExLjA2LDAsMCwxLDI5LDE2LjIzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI4LjY5LDE0LjMzdjQuODNsLTItLjQzVjEzLjI0YTE2LjE5LDE2''@;'; put 'put ''LjE5LDAsMCwwLTIuMzMtLjg0djUuODJsLTItLjQzVjEyYy0xLjEtLjE4LTIuMTgtLjMtMy4wOC0uMzZ2NS41MWwtMi0uNDNWMTEuNDhoMFY0LjM0YTIuNTMsMi41MywwLDAsMC0yLjYtMi40MywyLjUzLDIuNTMsMCwwLDAtMi42LDIuNDNWMTcuMjdoMHYyLjU5bC0yLDFWMTUuNkw3Ljc1LDEz''@;'; put 'put ''LjIxYTIuODMsMi44MywwLDAsMC00LDAsMi45MywyLjkzLDAsMCwwLDAsNC4wOWw2LDcuMWExMC44MiwxMC44MiwwLDAsMCwxLjM5LDQuMjIsOC40Miw4LjQyLDAsMCwwLDIuMjEsMi43M3YyLjU2SDI3Ljc5VjMwLjYyYTEyLjU0LDEyLjU0LDAsMCwwLDMtOC41di02QTEwLDEwLDAsMCwwLDI4''@;'; put 'put ''LjY5LDE0LjMzWiIvPicpLGUuQ2xyU2hhcGVDdXJzb3JIYW5kQ2xpY2s9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMC40LDE3LjZjLTEuOC0xLjktNC4yLTMuMi02LjctMy43Yy0xLjEtMC4zLTIuMi0wLjUt''@;'; put 'put ''My4zLTAuNmMyLjgtMy4zLDIuMy04LjMtMS0xMS4xcy04LjMtMi4zLTExLjEsMXMtMi4zLDguMywxLDExLjFcbiAgICAgICAgICAgICAgICAgICAgYzAuNiwwLjUsMS4yLDAuOSwxLjgsMS4xdjIuMmwtMS42LTEuNWMtMS40LTEuNC0zLjctMS40LTUuMiwwYy0xLjQsMS40LTEuNSwzLjYtMC4x''@;'; put 'put ''LDVsNC42LDUuNGMwLjIsMS40LDAuNywyLjcsMS40LDMuOVxuICAgICAgICAgICAgICAgICAgICBjMC41LDAuOSwxLjIsMS44LDEuOSwyLjV2MS45YzAsMC42LDAuNCwxLDEsMWgxMy42YzAuNSwwLDEtMC41LDEtMXYtMi42YzEuOS0yLjMsMi45LTUuMiwyLjktOC4xdi01LjhcbiAgICAgICAg''@;'; put 'put ''ICAgICAgICAgICAgQzMwLjcsMTcuOSwzMC42LDE3LjcsMzAuNCwxNy42eiBNOC40LDguMmMwLTMuMywyLjctNS45LDYtNS44YzMuMywwLDUuOSwyLjcsNS44LDZjMCwxLjgtMC44LDMuNC0yLjIsNC41VjcuOVxuICAgICAgICAgICAgICAgICAgICBjLTAuMS0xLjgtMS42LTMuMi0zLjQtMy4y''@;'; put 'put ''Yy0xLjgtMC4xLTMuNCwxLjQtMy40LDMuMnY1LjJDOS41LDEyLjEsOC41LDEwLjIsOC40LDguMkw4LjQsOC4yeiBNMjguNywyNGMwLjEsMi42LTAuOCw1LjEtMi41LDcuMVxuICAgICAgICAgICAgICAgICAgICBjLTAuMiwwLjItMC40LDAuNC0wLjQsMC43djIuMUgxNC4ydi0xLjRjMC0wLjMt''@;'; put 'put ''MC4yLTAuNi0wLjQtMC44Yy0wLjctMC42LTEuMy0xLjMtMS44LTIuMmMtMC42LTEtMS0yLjItMS4yLTMuNFxuICAgICAgICAgICAgICAgICAgICBjMC0wLjItMC4xLTAuNC0wLjItMC42bC00LjgtNS43Yy0wLjMtMC4zLTAuNS0wLjctMC41LTEuMmMwLTAuNCwwLjItMC45LDAuNS0xLjJjMC43''@;'; put 'put ''LTAuNiwxLjctMC42LDIuNCwwbDIuOSwyLjl2M2wxLjktMVY3LjlcbiAgICAgICAgICAgICAgICAgICAgYzAuMS0wLjcsMC43LTEuMywxLjUtMS4yYzAuNywwLDEuNCwwLjUsMS40LDEuMnYxMS41bDIsMC40di00LjZjMC4xLTAuMSwwLjItMC4xLDAuMy0wLjJjMC43LDAsMS40LDAuMSwyLjEs''@;'; put 'put ''MC4ydjUuMWwxLjYsMC4zdi01LjJcbiAgICAgICAgICAgICAgICAgICAgbDEuMiwwLjNjMC41LDAuMSwxLDAuMywxLjUsMC41djVsMS42LDAuM3YtNC42YzAuOSwwLjQsMS43LDEsMi40LDEuN0wyOC43LDI0eiIvPicpLGUuQ2xyU2hhcGVSZXNpemU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOSw0YTEsMSwwLDAsMCwwLDJoOS41OWwtOS4yNSw5LjI1YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzAsNy40MVYxN2ExLDEsMCwwLDAsMiwwVjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTQsMTlhMSwxLDAsMCwxLDIsMHY5LjU5bDkuMjUtOS4yNWExLDEsMCwxLDEsMS40MSwxLjQxTDcuNDEsMzBIMTdhMSwxLDAsMCwxLDAsMkg0WiIvPicpLGUuQ2xyU2hhcGVPYmplY3RzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTYuMDgsMTQuOWExMC40MSwxMC40MSwwLDAsMSwxLjg3LS43MWwtNC0xMC43N2EyLDIsMCwwLDAtMy43NSwwTDIsMjUuMjZBMiwyLDAsMCwwLDMuOTIsMjhoNi45NGExMCwxMCwwLDAsMS0uNTItMkgzLjkyTDEy''@;'; put 'put ''LjA2LDQuMTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMyLDlIMjJhMiwyLDAsMCwwLTIsMnYyLjg1Yy4yMywwLC40NiwwLC42OSwwQTEwLjUxLDEwLjUxLDAsMCwxLDIyLDEzLjlWMTFIMzJWMjFIMzAuNjVh''@;'; put 'put ''MTAuNDIsMTAuNDIsMCwwLDEsLjQ1LDJIMzJhMiwyLDAsMCwwLDItMlYxMUEyLDIsMCwwLDAsMzIsOVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjAuNjksMTUuODFhOC41LDguNSwwLDEsMCw4LjUsOC41QTgu''@;'; put 'put ''NTEsOC41MSwwLDAsMCwyMC42OSwxNS44MVptMCwxNWE2LjUsNi41LDAsMSwxLDYuNS02LjVBNi41MSw2LjUxLDAsMCwxLDIwLjY5LDMwLjgxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTEwLjY1LDI0LjQ0YTkuNTEs''@;'; put 'put ''OS41MSwwLDAsMSw3LjA2LTkuMTdMMTMsM2ExLDEsMCwwLDAtMS44NywwTDIuMDcsMjYuNTZBMSwxLDAsMCwwLDMsMjcuOTJoOC4zMkE5LjQ0LDkuNDQsMCwwLDEsMTAuNjUsMjQuNDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0y''@;'; put 'put ''IiBkPSJNMzIsMTBIMjBhMSwxLDAsMCwwLTEsMXY0YTkuNDMsOS40MywwLDAsMSwxMC42Myw5SDMyYTEsMSwwLDAsMCwxLTFWMTFBMSwxLDAsMCwwLDMyLDEwWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBjeD0iMjAuMTUi''@;'; put 'put ''IGN5PSIyNC40NCIgcj0iNy41Ii8+JyksZS5DbHJTaGFwZUJvb2s9KDAsYS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjEwIiB5PSI1LjIiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxLjU1Ii8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI5LDhIOS44NkExLjg5LDEuODksMCwwLDEsOCw2LDIsMiwwLDAsMSw5Ljg2LDRIMjlhMSwxLDAsMCwwLDAtMkg5Ljg2QTQsNCwwLDAsMCw2LDZhNC4xNCw0LjE0LDAsMCwwLDAsLjQ5LDEsMSwwLDAsMCww''@;'; put 'put ''LC4yNFYzMGE0LDQsMCwwLDAsMy44Niw0SDI5YTEsMSwwLDAsMCwxLTFWOS4yNXMwLS4wNiwwLS4wOSwwLS4wNiwwLS4wOUExLjA3LDEuMDcsMCwwLDAsMjksOFpNMjgsMzJIOS44NkEyLDIsMCwwLDEsOCwzMFY5LjU1QTMuNjMsMy42MywwLDAsMCw5Ljg2LDEwSDI4WiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgeD0iMTAiIHk9IjUuMiIgd2lkdGg9IjE4IiBoZWlnaHQ9IjEuNTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yOSw4SDkuODZBMS44''@;'; put 'put ''OSwxLjg5LDAsMCwxLDgsNiwyLDIsMCwwLDEsOS44Niw0SDI5YTEsMSwwLDEsMCwwLTJIOS44NkE0LDQsMCwwLDAsNiw2YTQuMTQsNC4xNCwwLDAsMCwwLC40OSwxLDEsMCwwLDAsMCwuMjRWMzBhNCw0LDAsMCwwLDMuODYsNEgyOWExLDEsMCwwLDAsMS0xVjkuMjVzMC0uMDYsMC0uMDksMC0u''@;'; put 'put ''MDYsMC0uMDlBMS4wNywxLjA3LDAsMCwwLDI5LDhaIi8+JyksZS5DbHJTaGFwZUFzdGVyaXNrPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjguODksMjAuOTFsLTUtMi45MSw0Ljg3LTIuODZhMy4xMSwzLjEx''@;'; put 'put ''LDAsMCwwLDEuMTQtMS4wOCwzLDMsMCwwLDAtNC4wOS00LjE1TDIxLDEyLjc2VjdhMywzLDAsMCwwLTYsMHY1Ljc2TDEwLjE1LDkuOTFhMywzLDAsMSwwLTMsNS4xOGw1LDIuOTFMNy4yLDIwLjg2YTMuMTEsMy4xMSwwLDAsMC0xLjE0LDEuMDgsMywzLDAsMCwwLDQuMDksNC4xNEwxNSwyMy4y''@;'; put 'put ''NFYyOC45YTMsMywwLDAsMCwyLDIuOTRBMywzLDAsMCwwLDIxLDI5VjIzLjI0bDQuODUsMi44NWEzLDMsMCwxLDAsMy01LjE4Wk0yOC4yNCwyNGExLDEsMCwwLDEtMS4zNy4zNkwxOSwxOS43NVYyOWExLDEsMCwwLDEtMiwwVjE5Ljc1TDkuMTMsMjQuMzZhMSwxLDAsMCwxLTEtMS43MkwxNiwx''@;'; put 'put ''OGwtNy45LTQuNjRhMSwxLDAsMSwxLDEtMS43MkwxNywxNi4yNVY3YTEsMSwwLDAsMSwyLDB2OS4yNWw3Ljg3LTQuNjJhMSwxLDAsMCwxLDEsMS43MkwyMCwxOGw3LjksNC42NEExLDEsMCwwLDEsMjguMjQsMjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0xIiBkPSJNMjguODksMjAuOTFsLTUtMi45MSw0Ljg3LTIuODZhMy4xMSwzLjExLDAsMCwwLDEuMTQtMS4wOCwzLDMsMCwwLDAtNC4wOS00LjE1TDIxLDEyLjc2VjdhMywzLDAsMCwwLTYsMHY1Ljc2TDEwLjE1LDkuOTFhMywzLDAsMSwwLTMsNS4xOGw1LDIuOTFMNy4y''@;'; put 'put ''LDIwLjg2YTMuMTEsMy4xMSwwLDAsMC0xLjE0LDEuMDgsMywzLDAsMCwwLDQuMDksNC4xNEwxNSwyMy4yNFYyOC45YTMsMywwLDAsMCwyLDIuOTRBMywzLDAsMCwwLDIxLDI5VjIzLjI0bDQuODUsMi44NWEzLDMsMCwxLDAsMy01LjE4WiIvPicpLGUuQ2xyU2hhcGVTY2lzc29ycz0oMCxhLmNs''@;'; put 'put ''ckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSJcbiAgICAgICAgICAgIGQ9Ik0yNC4wNiwxOC4xOGw5LjYxLTguNzdhMSwxLDAsMCwwLS4wOS0xLjU1bC0yLjI0LTEuNmEzLjU3LDMuNTcsMCwwLDAtNC4yOC4xMkwxNS44OCwxNS4zbC0z''@;'; put 'put ''LjI2LTIuNTJhNS40NSw1LjQ1LDAsMSwwLTEsMS43N2wyLjYyLDJMMTAsMjBhNS40OCw1LjQ4LDAsMSwwLDEuNTksMS4yOUwyOC4zLDcuOTRhMS41NywxLjU3LDAsMCwxLDEuODgtLjA1bDEuMjMuODhMMjEuMSwxOC4xOWwxMC4zMSw5LjQtMS4yMy44OGExLjU3LDEuNTcsMCwwLDEtMS44OC0u''@;'; put 'put ''MDVsLTkuODEtNy44NUwxNywyMS45M2wxMC4wNiw4YTMuNTcsMy41NywwLDAsMCw0LjI5LjEybDIuMjQtMS42YTEsMSwwLDAsMCwuMDktMS41NVpNNy40NSwxNC41NGEzLjQ2LDMuNDYsMCwxLDEsMy40NS0zLjQ2QTMuNDYsMy40NiwwLDAsMSw3LjQ1LDE0LjU0Wm0wLDEzLjcyQTMuNDYsMy40''@;'; put 'put ''NiwwLDEsMSwxMC45LDI0LjgsMy40NiwzLjQ2LDAsMCwxLDcuNDUsMjguMjZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzMuODEsOC4xMywzMS42Myw2LjQ4YTEuOTIsMS45MiwwLDAsMC0yLjM2LDBMMTAsMjIuMDZh''@;'; put 'put ''NS40Niw1LjQ2LDAsMSwwLDIsMS44MWwzLjktMy4xMkwyOS4yNywzMS41MmExLjkyLDEuOTIsMCwwLDAsMi4zNiwwbDIuMTgtMS42NEwyMC45NCwxOVpNNy40NSwyOS43NWEyLjg2LDIuODYsMCwxLDEsMi44Ni0yLjg2QTIuODcsMi44NywwLDAsMSw3LjQ1LDI5Ljc1WiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTE0LjMsMTUuMjQsMTIsMTMuMzhhNS40Niw1LjQ2LDAsMSwwLTIsMS44MUwxMi4xNiwxN1ptLTYuODUtMmEyLjg2LDIuODYsMCwxLDEsMi44Ni0yLjg2QTIuODYsMi44NiwwLDAsMSw3LjQ1LDEzLjIz''@;'; put 'put ''WiIvPicpLGUuQ2xyU2hhcGVCdWc9KDAsYS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjIzLjU2IiBjeT0iMTcuNzQiIHI9IjEuOTUiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTIiIGN4PSIyMi40MiIgY3k9IjI1Ljg4IiByPSIxLjU4Ii8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBjeD0iMTIuODYiIGN5PSIxNy43NCIgcj0iMS45NSIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgY3g9IjEzLjk5IiBjeT0iMjUuODgiIHI9IjEuNTgiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiBkPSJNMzAuODMsMjBIMjlhMTku''@;'; put 'put ''MjksMTkuMjksMCwwLDAtMS4xOC01LjczbDEuNDYtLjc5YTEsMSwwLDAsMC0uOTUtMS43NmwtMywxLjY0QTE3LjY1LDE3LjY1LDAsMCwxLDI3LDIwLjcyQzI3LDI3LDIzLjgsMzEuMjMsMTguOCwzMS42MlYxNUgxNy4yVjMxLjYyQzEyLjIyLDMxLjIxLDksMjcsOSwyMC43MmExNy43NCwxNy43''@;'; put 'put ''NCwwLDAsMSwxLjczLTcuMzRMNy43LDExLjcyYTEsMSwwLDAsMC0uOTUsMS43NmwxLjUuOEExOS4zOCwxOS4zOCwwLDAsMCw3LjA3LDIwSDUuMTdhMSwxLDAsMCwwLDAsMkg3LjFhMTQuNjIsMTQuNjIsMCwwLDAsMS42Niw2LjE3TDYuODcsMjkuNDlBMSwxLDAsMSwwLDgsMzEuMTJsMS44NC0x''@;'; put 'put ''LjI5QTEwLjM4LDEwLjM4LDAsMCwwLDE4LDMzLjY2YTEwLjM4LDEwLjM4LDAsMCwwLDguMTQtMy44MUwyOCwzMS4xMmExLDEsMCwxLDAsMS4xNS0xLjY0bC0xLjg2LTEuM0ExNC42MSwxNC42MSwwLDAsMCwyOC45NCwyMmgxLjg5YTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgZD0iTTExLjUxLDUuMzZhMS42NywxLjY3LDAsMCwwLDEuMDctLjUxQTMuMjEsMy4yMSwwLDAsMSwxMy43Niw2YTE2LjM4LDE2LjM4LDAsMCwwLTIuNjUsMi44OSwyLDIsMCwwLDAsMS42MSwzLjE5SDIzLjMyQTIs''@;'; put 'put ''MiwwLDAsMCwyNS4xLDExYTIsMiwwLDAsMC0uMTctMi4xQTE2LjM0LDE2LjM0LDAsMCwwLDIyLjI1LDZhMy4yMSwzLjIxLDAsMCwxLDEuMTctMS4xMUExLjY4LDEuNjgsMCwxLDAsMjMsMy4yNyw0Ljc3LDQuNzcsMCwwLDAsMjEsNWE1LjgxLDUuODEsMCwwLDAtMi45My0xLDUuODMsNS44Myww''@;'; put 'put ''LDAsMC0zLDFBNC43Nyw0Ljc3LDAsMCwwLDEzLDMuMjdhMS42OCwxLjY4LDAsMSwwLTEuNDksMi4wOVpNMTgsNi4wN2MxLjQ1LDAsMy41MywxLjU3LDUuMzEsNGgwbC0xMC42LDBDMTQuNDksNy42MywxNi41Niw2LjA3LDE4LDYuMDdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAuODMsMjBIMjlhMTkuMjksMTkuMjksMCwwLDAtMS4xOC01LjczbDEuNDYtLjc5YTEsMSwwLDAsMC0uOTUtMS43NmwtMywxLjI4SDEwLjc4TDcuNywxMS43MmExLDEsMCwwLDAtLjk1LDEuNzZsMS41LjhBMTkuMzgsMTkuMzgsMCww''@;'; put 'put ''LDAsNy4wNywyMEg1LjE3YTEsMSwwLDAsMCwwLDJINy4xYTE0LjYyLDE0LjYyLDAsMCwwLDEuNjYsNi4xN0w2Ljg3LDI5LjQ5QTEsMSwwLDEsMCw4LDMxLjEybDEuODQtMS4yOUExMC4yOSwxMC4yOSwwLDAsMCwxNywzMy42VjE1aDJWMzMuNmExMC4yOSwxMC4yOSwwLDAsMCw3LjE2LTMuNzVM''@;'; put 'put ''MjgsMzEuMTJhMSwxLDAsMSwwLDEuMTUtMS42NGwtMS44Ni0xLjNBMTQuNjEsMTQuNjEsMCwwLDAsMjguOTQsMjJoMS44OWExLDEsMCwwLDAsMC0yWk0xMC45MSwxNy43NGExLjk1LDEuOTUsMCwxLDEsMS45NSwxLjk1QTEuOTUsMS45NSwwLDAsMSwxMC45MSwxNy43NFpNMTQsMjcuNDZhMS41''@;'; put 'put ''OCwxLjU4LDAsMSwxLDEuNTgtMS41OEExLjU4LDEuNTgsMCwwLDEsMTQsMjcuNDZabTguNDMsMEExLjU4LDEuNTgsMCwxLDEsMjQsMjUuODgsMS41OCwxLjU4LDAsMCwxLDIyLjQyLDI3LjQ2Wm0xLjEzLTcuNzdhMS45NSwxLjk1LDAsMSwxLDEuOTUtMS45NUExLjk1LDEuOTUsMCwwLDEsMjMu''@;'; put 'put ''NTYsMTkuNjlaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTEuMjMsNS4yNmExLjY3LDEuNjcsMCwwLDAsLjU0LS4zMiw1LjksNS45LDAsMCwxLC44OS41OCw3LjQ0LDcuNDQsMCwwLDEsLjk1Ljk0QTE4LjQ4LDE4LjQ4''@;'; put 'put ''LDAsMCwwLDEwLjc5LDkuN2MtLjQuNTcuMDksMS4yOC44NiwxLjI4SDI0LjQ0Yy43NywwLDEuMjYtLjcxLjg2LTEuMjhhMTguMzgsMTguMzgsMCwwLDAtMi44OC0zLjI4LDcuMjgsNy4yOCwwLDAsMSwuOTEtLjksNS45LDUuOSwwLDAsMSwuODktLjU4LDEuNjksMS42OSwwLDEsMC0uNTYtMS41''@;'; put 'put ''MSw3LjQ5LDcuNDksMCwwLDAtMS4zMi44Myw5LjA2LDkuMDYsMCwwLDAtMS4xOSwxLjE4QTUuODUsNS44NSwwLDAsMCwxOCw0LjNhNS45MSw1LjkxLDAsMCwwLTMuMTcsMS4xOSw5LjIsOS4yLDAsMCwwLTEuMjItMS4yMSw3LjQ5LDcuNDksMCwwLDAtMS4zMi0uODMsMS42OCwxLjY4LDAsMSww''@;'; put 'put ''LTEuMTEsMS44M1oiLz4nKSxlLkNsclNoYXBlVGhlcm1vbWV0ZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOSwyMy4xN1YxMS40NkgxN1YyMy4yYTMsMywwLDEsMCwyLDBaIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI2LDE1YTEsMSwwLDAsMCwwLTJIMjMuOTJWMTFIMjZhMSwxLDAsMCwwLDAtMkgyMy45MlY4YTYsNiwwLDAsMC0xMiwwVjIwLjgxYTgsOCwwLDEsMCwxMi0uMlYxOUgyNmExLDEsMCwwLDAsMC0ySDIz''@;'; put 'put ''LjkyVjE1Wk0yNCwyNmE2LDYsMCwxLDEtMTAuMzYtNC4xMmwuMjctLjI5VjhhNCw0LDAsMCwxLDgsMFYyMS40NGwuMy4yOUE2LDYsMCwwLDEsMjQsMjZaIi8+JyksZS5DbHJTaGFwZVBlbmNpbD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgZD0iTTMzLjg3LDguMzIsMjgsMi40MmEyLjA3LDIuMDcsMCwwLDAtMi45MiwwTDQuMjcsMjMuMmwtMS45LDguMmEyLjA2LDIuMDYsMCwwLDAsMiwyLjUsMi4xNCwyLjE0LDAsMCwwLC40MywwTDEzLjA5LDMyLDMzLjg3LDExLjI0QTIuMDcsMi4wNywwLDAsMCwzMy44Nyw4''@;'; put 'put ''LjMyWk0xMi4wOSwzMC4yLDQuMzIsMzEuODNsMS43Ny03LjYyTDIxLjY2LDguN2w2LDZaTTI5LDEzLjI1bC02LTYsMy40OC0zLjQ2LDUuOSw2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik00LjIyLDIzLjJsLTEu''@;'; put 'put ''OSw4LjJhMi4wNiwyLjA2LDAsMCwwLDIsMi41LDIuMTQsMi4xNCwwLDAsMCwuNDMsMEwxMywzMiwyOC44NCwxNi4yMiwyMCw3LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMzLjgyLDguMzJsLTUuOS01Ljlh''@;'; put 'put ''Mi4wNywyLjA3LDAsMCwwLTIuOTIsMEwyMS43Miw1LjdsOC44Myw4LjgzLDMuMjgtMy4yOEEyLjA3LDIuMDcsMCwwLDAsMzMuODIsOC4zMloiLz4nKSxlLkNsclNoYXBlTm90ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjgsMzBINlY4SDE5LjIybDItMkg2QTIsMiwwLDAsMCw0LDhW''@;'; put 'put ''MzBhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjE1bC0yLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy41Myw1Ljg0LDMwLjE2LDIuNDdhMS42MSwxLjYxLDAsMCwwLTIuMjgsMEwxNC4xNywx''@;'; put 'put ''Ni4yNmwtMS4xMSw0LjgxQTEuNjEsMS42MSwwLDAsMCwxNC42MywyMywxLjY5LDEuNjksMCwwLDAsMTUsMjNsNC44NS0xLjA3TDMzLjUzLDguMTJBMS42MSwxLjYxLDAsMCwwLDMzLjUzLDUuODRaTTE4LjgxLDIwLjA4bC0zLjY2LjgxTDE2LDE3LjI2LDI2LjMyLDYuODdsMi44MiwyLjgyWk0z''@;'; put 'put ''MC4yNyw4LjU2LDI3LjQ1LDUuNzQsMjksNC4xNiwzMS44NCw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsNi40LDI5LjMsMi43YTEuNzEsMS43MSwwLDAsMC0yLjM2LDBMMjMuNjUsNkg2QTIsMiwwLDAs''@;'; put 'put ''MCw0LDhWMzBhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjExLjc2bDMtM0ExLjY3LDEuNjcsMCwwLDAsMzMsNi40Wk0xOC44MywyMC4xM2wtNC4xOS45MywxLTQuMTUsOS41NS05LjU3LDMuMjMsMy4yM1pNMjkuNSw5LjQzLDI2LjI3LDYuMmwxLjg1LTEuODUsMy4yMywzLjIzWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxlLkNsclNoYXBlUmVmcmVzaD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTIyLjQsMTEuNjVhMS4wOSwxLjA5LDAsMCwwLDEuMDks''@;'; put 'put ''MS4wOUgzNC40M1YxLjgxYTEuMDksMS4wOSwwLDEsMC0yLjE5LDBWOC45NWExNi40MSwxNi40MSwwLDEsMCwxLjQ3LDE1Ljg2LDEuMTIsMS4xMiwwLDAsMC0yLjA1LS45LDE0LjE4LDE0LjE4LDAsMSwxLTEuMDUtMTMuMzZIMjMuNUExLjA5LDEuMDksMCwwLDAsMjIuNCwxMS42NVoiLz4nKSxl''@;'; put 'put ''LkNsclNoYXBlU3luYz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLjg0LDE1LjcyYTEsMSwwLDEsMC0yLC4yOUExMy4xNSwxMy4xNSwwLDAsMSwzMSwxNy45NCwxMywxMywwLDAsMSw4LjcsMjdoNS4zNmEx''@;'; put 'put ''LDEsMCwwLDAsMC0yaC05djlhMSwxLDAsMSwwLDIsMFYyOC4yQTE1LDE1LDAsMCwwLDMyLjg0LDE1LjcyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzAuMDYsMUExLjA1LDEuMDUsMCwwLDAsMjksMlY3''@;'; put 'put ''LjgzQTE0Ljk0LDE0Ljk0LDAsMCwwLDMsMTcuOTRhMTUuMTYsMTUuMTYsMCwwLDAsLjIsMi40OCwxLDEsMCwwLDAsMSwuODRoLjE2YTEsMSwwLDAsMCwuODItMS4xNUExMy4yMywxMy4yMywwLDAsMSw1LDE3Ljk0YTEzLDEzLDAsMCwxLDEzLTEzQTEyLjg3LDEyLjg3LDAsMCwxLDI3LjQ0LDlI''@;'; put 'put ''MjIuMDZhMSwxLDAsMCwwLDAsMkgzMVYyQTEsMSwwLDAsMCwzMC4wNiwxWiIvPicpLGUuQ2xyU2hhcGVWaWV3TGlzdD0oMCxhLmNsckljb25TVkcpKCc8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgeD0iMiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0i''@;'; put 'put ''MiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNNywxMEgzMWExLDEsMCwwLDAsMC0ySDdhMSwxLDAsMCwwLDAsMloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMyIgeD0iMiIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTMxLDE0SDdhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiB4PSIyIiB5PSIyMCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC02IiBkPSJNMzEsMjBIN2ExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIHg9IjIiIHk9IjI2IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIGQ9Ik0zMSwyNkg3YTEsMSwwLDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloiLz4nKSxlLkNsclNoYXBlVmlld0NhcmRzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTUsMTdINGEyLDIsMCwwLDEtMi0yVjhBMiwyLDAsMCwxLDQsNkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDE3Wk00LDh2N0gxNVY4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIsMTdIMjFhMiwyLDAsMCwxLTItMlY4YTIsMiwwLDAsMSwyLTJIMzJhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwzMiwxN1pNMjEsOHY3SDMyVjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTMiIGQ9Ik0xNSwzMEg0YTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDMwWk00LDIxdjdIMTVWMjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQiIGQ9Ik0zMiwzMEgyMWEyLDIsMCwwLDEtMi0yVjIxYTIsMiwwLDAsMSwyLTJIMzJhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwzMiwzMFpNMjEsMjF2N0gzMlYyMVoiLz4nKSxlLkNsclNoYXBlTGlnaHRidWxiPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwy''@;'; put 'put ''LjI1YTExLDExLDAsMCwwLTExLDExLDEwLjY4LDEwLjY4LDAsMCwwLDEsNC42MywxNi4zNiwxNi4zNiwwLDAsMCwxLjEyLDEuNzgsMTcsMTcsMCwwLDEsMiwzLjQ3LDE2LjE5LDE2LjE5LDAsMCwxLC41OSw0aDJBMTguMTcsMTguMTcsMCwwLDAsMTMsMjIuNDRhMTguNDYsMTguNDYsMCwwLDAt''@;'; put 'put ''Mi4yMi0zLjkyLDE1Ljc5LDE1Ljc5LDAsMCwxLTEtMS41NEE4LjY0LDguNjQsMCwwLDEsOSwxMy4yM2E5LDksMCwwLDEsMTguMDcsMEE4LjY0LDguNjQsMCwwLDEsMjYuMjEsMTdhMTUuNzksMTUuNzksMCwwLDEtMSwxLjU0QTE4LjQ2LDE4LjQ2LDAsMCwwLDIzLDIyLjQ0YTE4LjE3LDE4LjE3''@;'; put 'put ''LDAsMCwwLS43MSw0LjcxaDJhMTYuMTksMTYuMTksMCwwLDEsLjU5LTQsMTcsMTcsMCwwLDEsMi0zLjQ3QTE2LjMxLDE2LjMxLDAsMCwwLDI4LDE3Ljg2YTEwLjY4LDEwLjY4LDAsMCwwLDEtNC42M0ExMSwxMSwwLDAsMCwxOCwyLjI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC42MywxNS41MWEuOC44LDAsMCwwLTEuMTMsMGwtMywzLDIuODYsMy4xM3Y1LjU0SDE5VjIxbC0yLjI0LTIuNDUsMS44OS0xLjg5QS44LjgsMCwwLDAsMTguNjMsMTUuNTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjg2LDI5LjE1SDEyLjExYS44LjgsMCwxLDAsMCwxLjZIMjMuODZhLjguOCwwLDAsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMjIsMzIuMTVIMTRhLjguOCwwLDEsMCwwLDEuNkgyMmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy4zMiwxMC44OWwtMi43MywyLjczYS44LjgsMCwwLDAsMS4xMywx''@;'; put 'put ''LjEzTDE4LjQ1LDEyYS44LjgsMCwxLDAtMS4xMy0xLjEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwyNy4xNVYyMWwtMi4yNC0yLjQ1LDEuODktMS44OWEuOC44LDAsMCwwLTEuMTMtMS4xM2wtMywzLDIu''@;'; put 'put ''ODYsMy4xM3Y1LjU0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuODYsMjkuMTVIMTIuMTFhLjguOCwwLDEsMCwwLDEuNkgyMy44NmEuOC44LDAsMCwwLDAtMS42WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsMzIuMTVIMTRhLjguOCwwLDEsMCwwLDEuNkgyMmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUuNzIsMTQuNzUsMTguNDUsMTJhLjguOCwwLDEsMC0xLjEzLTEuMTNsLTIuNzMsMi43M2EuOC44LDAsMCwwLDEuMTMsMS4xM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3LDEyLjg4YzAsLjEyLDAsLjIzLDAsLjM1QTguNjQsOC42NCwwLDAsMSwyNi4yMSwxN2ExNS43OSwxNS43OSwwLDAsMS0xLDEuNTRBMTguNDYsMTguNDYsMCwwLDAsMjMsMjIuNDRhMTguMTcsMTguMTcsMCwwLDAt''@;'; put 'put ''LjcxLDQuNzFoMmExNi4xOSwxNi4xOSwwLDAsMSwuNTktNCwxNywxNywwLDAsMSwyLTMuNDdBMTYuMzEsMTYuMzEsMCwwLDAsMjgsMTcuODZhMTAuNjMsMTAuNjMsMCwwLDAsMS00LjQzQTcuNDUsNy40NSwwLDAsMSwyNywxMi44OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjcxLDI3LjE1QTE4LjE3LDE4LjE3LDAsMCwwLDEzLDIyLjQ0YTE4LjQ2LDE4LjQ2LDAsMCwwLTIuMjItMy45MiwxNS43OSwxNS43OSwwLDAsMS0xLTEuNTRBOC42NCw4LjY0LDAsMCwxLDksMTMu''@;'; put 'put ''MjMsOSw5LDAsMCwxLDIyLjUzLDUuNDdhNy40NSw3LjQ1LDAsMCwxLC40My0yLDExLDExLDAsMCwwLTE2LDkuOCwxMC42OCwxMC42OCwwLDAsMCwxLDQuNjMsMTYuMzYsMTYuMzYsMCwwLDAsMS4xMiwxLjc4LDE3LDE3LDAsMCwxLDIsMy40NywxNi4xOSwxNi4xOSwwLDAsMSwuNTksNFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''YmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy44NiwyOS4xNUgxMi4xMWEuOC44LDAsMSwwLDAsMS42SDIzLjg2YS44LjgsMCwwLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsMzIuMTVI''@;'; put 'put ''MTRhLjguOCwwLDEsMCwwLDEuNkgyMmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIuMjVhMTEsMTEsMCwwLDAtMTEsMTEsMTAuNjgsMTAuNjgsMCwwLDAsMSw0LjYzLDE2LjM2LDE2''@;'; put 'put ''LjM2LDAsMCwwLDEuMTIsMS43OCwxNywxNywwLDAsMSwyLDMuNDcsMTYuMTksMTYuMTksMCwwLDEsLjU5LDRoNS42OVYyMS42MWwtMi44Ni0zLjEzLDMtM2EuOC44LDAsMCwxLDEuMTMsMS4xM2wtMS44OSwxLjg5TDE5LDIxdjYuMTdIMjQuM2ExNi4xOSwxNi4xOSwwLDAsMSwuNTktNCwxNywx''@;'; put 'put ''NywwLDAsMSwyLTMuNDdBMTYuMzEsMTYuMzEsMCwwLDAsMjgsMTcuODZhMTAuNjgsMTAuNjgsMCwwLDAsMS00LjYzQTExLDExLDAsMCwwLDE4LDIuMjVaTTE4LjQ1LDEybC0yLjczLDIuNzNhLjguOCwwLDEsMS0xLjEzLTEuMTNsMi43My0yLjczQS44LjgsMCwxLDEsMTguNDUsMTJaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuODYsMjkuMTVIMTIuMTFhLjguOCwwLDEsMCwwLDEuNkgyMy44NmEuOC44LDAsMCwwLDAtMS42WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0x''@;'; put 'put ''LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiwzMi4xNUgxNGEuOC44LDAsMSwwLDAsMS42SDIyYS44LjgsMCwxLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTIyLjUsNkE3LjQ3LDcuNDcsMCwwLDEsMjMsMy40NGExMSwxMSwwLDAsMC0xNiw5LjgsMTAuNjgsMTAuNjgsMCwwLDAsMSw0LjYzLDE2LjM2LDE2LjM2LDAsMCwwLDEuMTIsMS43OCwxNywxNywwLDAsMSwyLDMuNDcsMTYuMTksMTYuMTksMCwwLDEsLjU5LDRoNS42OVYyMS42MWwtMi44Ni0z''@;'; put 'put ''LjEzLDMtM2EuOC44LDAsMCwxLDEuMTMsMS4xM2wtMS44OSwxLjg5TDE5LDIxdjYuMTdIMjQuM2ExNi4xOSwxNi4xOSwwLDAsMSwuNTktNCwxNywxNywwLDAsMSwyLTMuNDdBMTYuMzEsMTYuMzEsMCwwLDAsMjgsMTcuODZhMTAuNjMsMTAuNjMsMCwwLDAsMS00LjQzQTcuNSw3LjUsMCwwLDEs''@;'; put 'put ''MjIuNSw2Wm0tNCw2LTIuNzMsMi43M2EuOC44LDAsMSwxLTEuMTMtMS4xM2wyLjczLTIuNzNBLjguOCwwLDEsMSwxOC40NSwxMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9''@;'; put 'put ''IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+JyksZS5DbHJTaGFwZURvd25sb2FkPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''IiBkPSJNMzEsMzFINWExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyOS40OCwyOC42MSwxOC44N2ExLDEsMCwwLDAtMS40MS0xLjQxTDE5LDI1''@;'; put 'put ''LjY1VjVhMSwxLDAsMCwwLTIsMFYyNS42NUw4LjgxLDE3LjQ2YTEsMSwwLDEsMC0xLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzEsMzFINWExLDEsMCwwLDAs''@;'; put 'put ''MCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMTgsMjkuNDgsMjguNjEsMTguODdhMSwxLDAsMCwwLTEuNDEtMS40MUwxOSwyNS42NVY1YTEs''@;'; put 'put ''MSwwLDAsMC0yLDBWMjUuNjVMOC44MSwxNy40NmExLDEsMCwxLDAtMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiBy''@;'; put 'put ''PSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMSwzMUg1YTEsMSwwLDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTE4LDI5LjQ4LDI4LjYxLDE4Ljg3YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTksMjUuNjVWNWExLDEsMCwwLDAtMiwwVjI1LjY1TDguODEsMTcuNDZhMSwxLDAsMSwwLTEuNDEsMS40MVoi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCww''@;'; put 'put ''LDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPicpLGUuQ2xyU2hhcGVVcGxvYWQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMSwzMUg1YTEsMSwwLDAsMCww''@;'; put 'put ''LDJIMzFhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTguODEsMTUsMTcsNi44M1YyNy40OGExLDEsMCwwLDAsMiwwVjYuODNMMjcuMTksMTVhMSwxLDAsMCwwLDEuNDEtMS40MUwx''@;'; put 'put ''OCwzLDcuMzksMTMuNjFBMSwxLDAsMSwwLDguODEsMTVaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMSwzMUg1Yy0wLjYsMC0xLDAuNC0xLDFzMC40LDEsMSwxaDI2YzAu''@;'; put 'put ''NiwwLDEtMC40LDEtMVMzMS42LDMxLDMxLDMxeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNOC44LDE1TDE3LDYuOHYyMC42YzAsMC42LDAuNCwxLDEsMXMxLTAuNCwxLTFW''@;'; put 'put ''Ni44TDIwLjEsOGwxLTEuOEwxOCwzTDcuNCwxMy42QzcsMTQsNi45LDE0LjYsNy4yLDE1czEsMC41LDEuNCwwLjFDOC43LDE1LjEsOC44LDE1LjEsOC44LDE1eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuOSwxLjFMMjEuMSwxMWMtMC40LDAuNi0wLjIsMS40LDAuMywxLjhjMC4yLDAuMiwwLjUsMC4yLDAuOCwwLjJoMTEuNWMwLjcsMCwxLjMtMC41LDEuMy0xLjJjMC0wLjMtMC4xLTAuNS0wLjItMC44bC01LjctOS45Yy0wLjQtMC42LTEu''@;'; put 'put ''MS0wLjgtMS44LTAuNUMyNy4xLDAuOCwyNywxLDI2LjksMS4xeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTMxLDMxSDVhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0y''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTguODEsMTUsMTcsNi44M1YyNy40OGExLDEsMCwwLDAsMiwwVjYuODNMMjcuMTksMTVhMSwxLDAsMCwwLDEuNDEtMS40MUwxOCwz''@;'; put 'put ''LDcuMzksMTMuNjFBMSwxLDAsMSwwLDguODEsMTVaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxlLkNsclNoYXBl''@;'; put 'put ''TG9jaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LjA5LDIwLjU5QTIuNDEsMi40MSwwLDAsMCwxNywyNS4xNFYyOGgyVjI1LjIzYTIuNDEsMi40MSwwLDAsMC0uOTEtNC42NFoiLz5cbiAgICAgICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI2LDE1VjEwLjcyYTguMiw4LjIsMCwwLDAtOC04LjM2LDguMiw4LjIsMCwwLDAtOCw4LjM2VjE1SDdWMzJhMiwyLDAsMCwwLDIsMkgyN2EyLDIsMCwwLDAsMi0yVjE1Wk0xMiwxMC43MmE2''@;'; put 'put ''LjIsNi4yLDAsMCwxLDYtNi4zNiw2LjIsNi4yLDAsMCwxLDYsNi4zNlYxNUgxMlpNOSwzMlYxN0gyN1YzMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjYsMTVWMTAuNzJhOC4yLDguMiwwLDAsMC04LTguMzYs''@;'; put 'put ''OC4yLDguMiwwLDAsMC04LDguMzZWMTVIN1YzMmEyLDIsMCwwLDAsMiwySDI3YTIsMiwwLDAsMCwyLTJWMTVaTTE5LDI1LjIzVjI4SDE3VjI1LjE0YTIuNCwyLjQsMCwxLDEsMiwuMDlaTTI0LDE1SDEyVjEwLjcyYTYuMiw2LjIsMCwwLDEsNi02LjM2LDYuMiw2LjIsMCwwLDEsNiw2LjM2WiIv''@;'; put 'put ''PicpLGUuQ2xyU2hhcGVVbmxvY2s9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xMiwyNS4xNFYyOGgyVjI1LjIzYTIuNDIsMi40MiwwLDEsMC0yLS4wOVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI2LDJhOC4yLDguMiwwLDAsMC04LDguMzZWMTVIMlYzMmEyLDIsMCwwLDAsMiwySDIyYTIsMiwwLDAsMCwyLTJWMTVIMjBWMTAuMzZBNi4yLDYuMiwwLDAsMSwyNiw0YTYuMiw2LjIsMCwwLDEsNiw2LjM2djYuODNh''@;'; put 'put ''MSwxLDAsMCwwLDIsMFYxMC4zNkE4LjIsOC4yLDAsMCwwLDI2LDJaTTIyLDE3VjMySDRWMTdaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI2LDJhOC4yLDguMiwwLDAsMC04LDguMzZWMTVIMlYzMmEyLDIsMCww''@;'; put 'put ''LDAsMiwySDIyYTIsMiwwLDAsMCwyLTJWMTVIMjBWMTAuMzZBNi4yLDYuMiwwLDAsMSwyNiw0YTYuMiw2LjIsMCwwLDEsNiw2LjM2djYuODNhMSwxLDAsMCwwLDIsMFYxMC4zNkE4LjIsOC4yLDAsMCwwLDI2LDJaTTE0LDI1LjIzVjI4SDEyVjI1LjE0YTIuNCwyLjQsMCwxLDEsMiwuMDlaIi8+''@;'; put 'put ''JyksZS5DbHJTaGFwZVVzZXJzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTcuOSwxNy4zYzIuNywwLDQuOC0yLjIsNC44LTQuOWMwLTIuNy0yLjItNC44LTQuOS00LjhjLTIuNywwLTQuOCwyLjItNC44LDQu''@;'; put 'put ''OEMxMywxNS4xLDE1LjIsMTcuMywxNy45LDE3LjN6IE0xNy44LDkuNkMxNy45LDkuNiwxNy45LDkuNiwxNy44LDkuNmMxLjYsMCwyLjksMS4zLDIuOSwyLjlzLTEuMywyLjgtMi45LDIuOGMtMS42LDAtMi44LTEuMy0yLjgtMi44QzE1LDEwLjksMTYuMyw5LjYsMTcuOCw5LjZ6Ii8+XG4gICAg''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMi43LDE2LjdjLTEuOS0xLjctNC40LTIuNi03LTIuNWMtMC4zLDAtMC41LDAtMC44LDBjLTAuMiwwLjgtMC41LDEuNS0wLjksMi4xYzAuNi0wLjEsMS4xLTAuMSwxLjctMC4x''@;'; put 'put ''YzEuOS0wLjEsMy44LDAuNSw1LjMsMS42VjI1aDJ2LThMMzIuNywxNi43eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjMuNCw3LjhjMC41LTEuMiwxLjktMS44LDMuMi0xLjNjMS4yLDAuNSwxLjgsMS45''@;'; put 'put ''LDEuMywzLjJjLTAuNCwwLjktMS4zLDEuNS0yLjIsMS41Yy0wLjIsMC0wLjUsMC0wLjctMC4xYzAuMSwwLjUsMC4xLDEsMC4xLDEuNGMwLDAuMiwwLDAuNCwwLDAuNmMwLjIsMCwwLjQsMC4xLDAuNiwwLjFjMi41LDAsNC41LTIsNC41LTQuNGMwLTIuNS0yLTQuNS00LjQtNC41Yy0xLjYsMC0z''@;'; put 'put ''LDAuOC0zLjgsMi4yQzIyLjUsNi44LDIzLDcuMiwyMy40LDcuOHoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTEyLDE2LjRjLTAuNC0wLjYtMC43LTEuMy0wLjktMi4xYy0wLjMsMC0wLjUsMC0wLjgsMGMt''@;'; put 'put ''Mi42LTAuMS01LjEsMC44LTcsMi40TDMsMTd2OGgydi03LjJjMS42LTEuMSwzLjQtMS43LDUuMy0xLjZDMTAuOSwxNi4yLDExLjUsMTYuMywxMiwxNi40eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiBkPSJNMTAu''@;'; put 'put ''MywxMy4xYzAuMiwwLDAuNCwwLDAuNi0wLjFjMC0wLjIsMC0wLjQsMC0wLjZjMC0wLjUsMC0xLDAuMS0xLjRjLTAuMiwwLjEtMC41LDAuMS0wLjcsMC4xYy0xLjMsMC0yLjQtMS4xLTIuNC0yLjRjMC0xLjMsMS4xLTIuNCwyLjQtMi40YzEsMCwxLjksMC42LDIuMywxLjVjMC40LTAuNSwxLTEs''@;'; put 'put ''MS41LTEuNGMtMS4zLTIuMS00LTIuOC02LjEtMS41Yy0yLjEsMS4zLTIuOCw0LTEuNSw2LjFDNy4zLDEyLjMsOC43LDEzLjEsMTAuMywxMy4xeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiBkPSJNMjYuMSwyMi43''@;'; put 'put ''bC0wLjItMC4zYy0yLTIuMi00LjgtMy41LTcuOC0zLjRjLTMtMC4xLTUuOSwxLjItNy45LDMuNEwxMCwyMi43djcuNmMwLDAuOSwwLjcsMS43LDEuNywxLjdjMCwwLDAsMCwwLDBoMTIuOGMwLjksMCwxLjctMC44LDEuNy0xLjdjMCwwLDAsMCwwLDBWMjIuN3ogTTI0LjEsMzBIMTJ2LTYuNmMx''@;'; put 'put ''LjYtMS42LDMuOC0yLjQsNi4xLTIuNGMyLjItMC4xLDQuNCwwLjgsNiwyLjRWMzB6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMS4wOSwxNC41N2MuMSwwLC4yLDAsLjMx''@;'; put 'put ''LDBhNi40Myw2LjQzLDAsMCwxLC4wOS0yLDIuMDksMi4wOSwwLDEsMSwxLjQ3LTMsNi41OCw2LjU4LDAsMCwxLDEuNTUtMS4zMSw0LjA5LDQuMDksMCwxLDAtMy40Miw2LjMzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMTMsMTguMTRhNi41Myw2LjUzLDAsMCwxLTEuMjgtMi4ybC0uNjMsMGE4LjY3LDguNjcsMCwwLDAtNi40MywyLjUybC0uMjQuMjh2N2gyVjE5LjUxYTcsNywwLDAsMSw0LjY3LTEuNkE4LjA5LDguMDksMCwwLDEsMTMsMTguMTRaIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0zMS4zNSwxOC40MkE4LjU5LDguNTksMCwwLDAsMjUsMTUuOTFjLS4zMiwwLS42LDAtLjkuMDZhNi41Myw2LjUzLDAsMCwxLTEuMzUsMi4yNUE3''@;'; put 'put ''LjksNy45LDAsMCwxLDI1LDE3LjkxYTYuOTQsNi45NCwwLDAsMSw0LjY0LDEuNTh2Ni4yN2gyVjE4LjdaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIGQ9Ik0xOC4xLDE5LjczQTku''@;'; put 'put ''NjksOS42OSwwLDAsMCwxMSwyMi40N2wtLjI1LjI4djcuMzNhMS41NywxLjU3LDAsMCwwLDEuNjEsMS41NEgyMy44M2ExLjU3LDEuNTcsMCwwLDAsMS42MS0xLjU0VjIyLjczbC0uMjUtLjI4QTkuNTgsOS41OCwwLDAsMCwxOC4xLDE5LjczWm01LjMzLDkuODhIMTIuNzNWMjMuNTVhOC4wOCw4''@;'; put 'put ''LjA4LDAsMCwxLDUuMzctMS44Miw4LDgsMCwwLDEsNS4zMywxLjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIGQ9Ik0yMC4yOCwxNC4yN2EyLjQ2LDIuNDYsMCwxLDEtMi40Mi0y''@;'; put 'put ''Ljg5LDIuNDQsMi40NCwwLDAsMSwxLC4yNCwzLjY3LDMuNjcsMCwwLDEsLjQzLTIsNC40MSw0LjQxLDAsMCwwLTEuNDgtLjI3QTQuNDcsNC40NywwLDEsMCwyMi4xNCwxNSwzLjY5LDMuNjksMCwwLDEsMjAuMjgsMTQuMjdaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNy4xOC44bC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkxSDM0YTEuMjgsMS4yOCwwLDAsMCwxLjEtMS45MUwyOS4zOS44QTEuMjgsMS4yOCwwLDAsMCwyNy4x''@;'; put 'put ''OC44WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTExLjA5LDE0LjU3Yy4xLDAsLjIsMCwuMzEsMGE2LjQzLDYuNDMsMCwwLDEsLjA5LTIsMi4wOSwyLjA5LDAsMSwxLDEuNDct''@;'; put 'put ''Myw2LjU4LDYuNTgsMCwwLDEsMS41NS0xLjMxLDQuMDksNC4wOSwwLDEsMC0zLjQyLDYuMzNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMTMsMTguMTRhNi41Myw2LjUzLDAs''@;'; put 'put ''MCwxLTEuMjgtMi4ybC0uNjMsMGE4LjY3LDguNjcsMCwwLDAtNi40MywyLjUybC0uMjQuMjh2N2gyVjE5LjUxYTcsNywwLDAsMSw0LjY3LTEuNkE4LjA5LDguMDksMCwwLDEsMTMsMTguMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzEuMzUsMTguNDJBOC41OSw4LjU5LDAsMCwwLDI1LDE1LjkxYy0uMzIsMC0uNiwwLS45LjA2YTYuNTMsNi41MywwLDAsMS0xLjM1LDIuMjVBNy45LDcuOSwwLDAsMSwyNSwxNy45MWE2Ljk0LDYuOTQsMCwwLDEsNC42NCwxLjU4djYu''@;'; put 'put ''MjdoMlYxOC43WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgZD0iTTE3Ljg2LDE4LjNhNC40Nyw0LjQ3LDAsMSwwLTQuNDctNC40N0E0LjQ3LDQuNDcsMCwwLDAsMTcuODYsMTguM1pt''@;'; put 'put ''MC02LjkzYTIuNDcsMi40NywwLDEsMS0yLjQ3LDIuNDdBMi40NywyLjQ3LDAsMCwxLDE3Ljg2LDExLjM3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgZD0iTTE4LjEsMTkuNzNBOS42''@;'; put 'put ''OSw5LjY5LDAsMCwwLDExLDIyLjQ3bC0uMjUuMjh2Ny4zM2ExLjU3LDEuNTcsMCwwLDAsMS42MSwxLjU0SDIzLjgzYTEuNTcsMS41NywwLDAsMCwxLjYxLTEuNTRWMjIuNzNsLS4yNS0uMjhBOS41OCw5LjU4LDAsMCwwLDE4LjEsMTkuNzNabTUuMzMsOS44OEgxMi43M1YyMy41NWE4LjA4LDgu''@;'; put 'put ''MDgsMCwwLDEsNS4zNy0xLjgyLDgsOCwwLDAsMSw1LjMzLDEuOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiIGQ9Ik0yNi4zNywxMmEyLDIsMCwwLDEtMi4wOS40Miw2LjUzLDYuNTMs''@;'; put 'put ''MCwwLDEsLjE1LDEuMzgsNi41OSw2LjU5LDAsMCwxLDAsLjY4LDQsNCwwLDAsMCwuNTcuMDYsNC4wOCw0LjA4LDAsMCwwLDMuMy0xLjdBNy40NSw3LjQ1LDAsMCwxLDI2LjM3LDEyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTctLWJhZGdlZCIgZD0iTTIyLjk1LDYuOTNhNC4xNiw0LjE2LDAsMCwwLTEuNDcsMS40NEE2LjU5LDYuNTksMCwwLDEsMjMsOS43N2EyLjEsMi4xLDAsMCwxLC41OS0uODNBNy40NCw3LjQ0LDAsMCwxLDIyLjk1LDYuOTNaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNs''@;'; put 'put ''ZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMC4zMyIgY3k9IjUuNjciIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBk''@;'; put 'put ''PSJNMTIsMTYuMTRxLS40MywwLS44NywwYTguNjcsOC42NywwLDAsMC02LjQzLDIuNTJsLS4yNC4yOHY4LjI4SDguNTR2LTQuN2wuNTUtLjYyLjI1LS4yOWExMSwxMSwwLDAsMSw0LjcxLTIuODZBNi41OSw2LjU5LDAsMCwxLDEyLDE2LjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMS4zNCwxOC42M2E4LjY3LDguNjcsMCwwLDAtNi40My0yLjUyLDEwLjQ3LDEwLjQ3LDAsMCwwLTEuMDkuMDYsNi41OSw2LjU5LDAsMCwxLTIsMi40NSwxMC45MSwxMC45MSwwLDAsMSw1LDNsLjI1LjI4LjU0LjYydjQu''@;'; put 'put ''NzFoMy45NFYxOC45MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMTEuMSwxNC4xOWMuMTEsMCwuMiwwLC4zMSwwYTYuNDUsNi40NSwwLDAsMSwzLjExLTYuMjksNC4wOSw0LjA5LDAsMSwwLTMuNDIsNi4zM1oi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiBkPSJNMjQuNDMsMTMuNDRhNi41NCw2LjU0LDAsMCwxLDAsLjY5LDQuMDksNC4wOSwwLDAsMCwuNTguMDVoLjE5QTQuMDksNC4wOSwwLDEsMCwyMS40Nyw4LDYuNTMsNi41Myww''@;'; put 'put ''LDAsMSwyNC40MywxMy40NFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIGN4PSIxNy44NyIgY3k9IjEzLjQ1IiByPSI0LjQ3Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtNiIgZD0iTTE4LjExLDIwLjNBOS42OSw5LjY5LDAsMCwwLDExLDIzbC0uMjUuMjh2Ni4zM2ExLjU3LDEuNTcsMCwwLDAsMS42LDEuNTRIMjMuODRhMS41NywxLjU3LDAsMCwwLDEuNi0xLjU0VjIzLjNMMjUuMiwyM0E5LjU4LDkuNTgsMCwwLDAsMTguMTEsMjAuM1oiLz5c''@;'; put 'put ''biAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTIsMTYuMTRxLS40MywwLS44NywwYTguNjcsOC42NywwLDAsMC02LjQzLDIuNTJsLS4yNC4yOHY4LjI4SDguNTR2LTQuN2wuNTUtLjYyLjI1''@;'; put 'put ''LS4yOWExMSwxMSwwLDAsMSw0LjcxLTIuODZBNi41OSw2LjU5LDAsMCwxLDEyLDE2LjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0zMS4zNCwxOC42M2E4LjY3LDguNjcsMCww''@;'; put 'put ''LDAtNi40My0yLjUyLDEwLjQ3LDEwLjQ3LDAsMCwwLTEuMDkuMDYsNi41OSw2LjU5LDAsMCwxLTIsMi40NSwxMC45MSwxMC45MSwwLDAsMSw1LDNsLjI1LjI4LjU0LjYydjQuNzFoMy45NFYxOC45MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiBkPSJNMTEuMSwxNC4xOWMuMTEsMCwuMiwwLC4zMSwwYTYuNDUsNi40NSwwLDAsMSwzLjExLTYuMjksNC4wOSw0LjA5LDAsMSwwLTMuNDIsNi4zM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIiBkPSJNMTguMTEsMjAuM0E5LjY5LDkuNjksMCwwLDAsMTEsMjNsLS4yNS4yOHY2LjMzYTEuNTcsMS41NywwLDAsMCwxLjYsMS41NEgyMy44NGExLjU3LDEuNTcsMCwwLDAsMS42LTEuNTRWMjMuM0wyNS4yLDIzQTkuNTgsOS41OCww''@;'; put 'put ''LDAsMCwxOC4xMSwyMC4zWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWFsZXJ0ZWQiIGQ9Ik0xNy44NywxNy45MmE0LjQ2LDQuNDYsMCwwLDAsNC0yLjU0QTMuNjcsMy42NywwLDAsMSwxOSw5Ljg5bC4z''@;'; put 'put ''NS0uNjFBNC40Miw0LjQyLDAsMCwwLDE3Ljg3LDlhNC40Nyw0LjQ3LDAsMSwwLDAsOC45M1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC02LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwy''@;'; put 'put ''MS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMiwxNi4xNHEtLjQzLDAtLjg3LDBhOC42Nyw4LjY3LDAsMCwwLTYuNDMsMi41MmwtLjI0LjI4djguMjhIOC41NHYtNC43bC41NS0uNjIuMjUtLjI5YTExLDExLDAsMCwxLDQuNzEtMi44NkE2LjU4LDYuNTgsMCwwLDEsMTIsMTYuMTRaIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMS4zNCwxOC42M2E4LjY3LDguNjcsMCwwLDAtNi40My0yLjUyLDEwLjQ3LDEwLjQ3LDAsMCwwLTEuMDkuMDYsNi41OSw2LjU5LDAsMCwxLTIsMi40NSwx''@;'; put 'put ''MC45MSwxMC45MSwwLDAsMSw1LDNsLjI1LjI4LjU0LjYydjQuNzFoMy45NFYxOC45MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIgZD0iTTExLjEsMTQuMTljLjExLDAsLjIsMCwuMzEsMGE2''@;'; put 'put ''LjQ1LDYuNDUsMCwwLDEsMy4xMS02LjI5LDQuMDksNC4wOSwwLDEsMC0zLjQyLDYuMzNaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCIgY3g9IjE3Ljg3IiBjeT0iMTMuNDUiIHI9IjQuNDci''@;'; put 'put ''Lz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWJhZGdlZCIgZD0iTTE4LjExLDIwLjNBOS42OSw5LjY5LDAsMCwwLDExLDIzbC0uMjUuMjh2Ni4zM2ExLjU3LDEuNTcsMCwwLDAsMS42LDEuNTRIMjMuODRhMS41''@;'; put 'put ''NywxLjU3LDAsMCwwLDEuNi0xLjU0VjIzLjNMMjUuMiwyM0E5LjU4LDkuNTgsMCwwLDAsMTguMTEsMjAuM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTYtLWJhZGdlZCIgZD0iTTI0LjQzLDEzLjQ0YTYuNTQs''@;'; put 'put ''Ni41NCwwLDAsMSwwLC42OSw0LjA5LDQuMDksMCwwLDAsLjU4LjA1aC4xOWE0LjA1LDQuMDUsMCwwLDAsMi41Mi0xLDcuNSw3LjUsMCwwLDEtNS4xNC02LjMyQTQuMTMsNC4xMywwLDAsMCwyMS40Nyw4LDYuNTMsNi41MywwLDAsMSwyNC40MywxMy40NFoiLz5cbiAgICAgICAgICAgICAgICA8''@;'; put 'put ''Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksZS5DbHJTaGFwZVBvcE91dD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3LDMzSDVhMiwyLDAsMCwxLTItMlY5QTIsMiwwLDAsMSw1LDdIMTVWOUg1VjMxSDI3VjIxaDJWMzFBMiwyLDAsMCwxLDI3LDMzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0y''@;'; put 'put ''IiBkPSJNMTgsM2ExLDEsMCwwLDAsMCwySDI5LjU5TDE1Ljc0LDE4Ljg1YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzEsNi40MVYxOGExLDEsMCwwLDAsMiwwVjNaIi8+JyksZS5DbHJTaGFwZUZpbHRlcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMSIgZD0iTTMzLDRIM0ExLDEsMCwwLDAsMiw1VjYuNjdhMS43OSwxLjc5LDAsMCwwLC41MywxLjI3TDE0LDE5LjU4djEwLjJsMiwuNzZWMTlhMSwxLDAsMCwwLS4yOS0uNzFMNCw2LjU5VjZIMzJ2LjYxTDIwLjMzLDE4LjI5QTEsMSwwLDAsMCwyMCwxOWwwLDEzLjIxTDIy''@;'; put 'put ''LDMzVjE5LjVMMzMuNDcsOEExLjgxLDEuODEsMCwwLDAsMzQsNi43VjVBMSwxLDAsMCwwLDMzLDRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTIyLDMzVjE5LjVMMzMuNDcsOEExLjgxLDEuODEsMCwwLDAsMzQs''@;'; put 'put ''Ni43VjVhMSwxLDAsMCwwLTEtMUgzQTEsMSwwLDAsMCwyLDVWNi42N2ExLjc5LDEuNzksMCwwLDAsLjUzLDEuMjdMMTQsMTkuNTh2MTAuMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMzMuNDgsNGgtMzFBLjUyLjUyLDAsMCwwLDIsNC41MlY2LjI0YTEuMzMsMS4zMywwLDAsMCwu''@;'; put 'put ''MzkuOTVsMTIsMTJ2MTBsNy4yNSwzLjYxVjE5LjE3bDEyLTEyQTEuMzUsMS4zNSwwLDAsMCwzNCw2LjI2VjQuNTJBLjUyLjUyLDAsMCwwLDMzLjQ4LDRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVQaW49KDAsYS5jbHJJY29uU1ZHKSgn''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMywxNi41OWExLDEsMCwwLDEtLjcxLS4yOUwxOS43LDMuNzFhMSwxLDAsMCwxLDEuNDEtMS40MUwzMy43MSwxNC44OUExLDEsMCwwLDEsMzMsMTYuNTlaIi8+XG4gICAgICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yOC41MiwxNS41NmwtMS40MS0xLjQxLTcuMiw3LjJhMSwxLDAsMCwwLS4yNSwxLDksOSwwLDAsMS0xLjUzLDguMDlMNS41OCwxNy44N2E5LDksMCwwLDEsOC4wOS0xLjUzLDEsMSwwLDAsMCwxLS4yNWw3''@;'; put 'put ''LjItNy4yTDIwLjQ0LDcuNDhsLTYuNzksNi43OUExMC45NCwxMC45NCwwLDAsMCwzLjQxLDE3LjExYTEsMSwwLDAsMCwwLDEuNDJsNi4zMyw2LjMzTDIuMjksMzIuMjlhMSwxLDAsMSwwLDEuNDEsMS40MWw3LjQ0LTcuNDQsNi4zMyw2LjMzYTEsMSwwLDAsMCwuNzEuMjloMGExLDEsMCwwLDAs''@;'; put 'put ''LjcxLS4zLDExLDExLDAsMCwwLDIuODQtMTAuMjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMzLDE2LjcxYTEsMSwwLDAsMS0uNzEtLjI5TDE5LjcsMy44MmExLDEsMCwwLDEsMS40MS0xLjQxTDMzLjcxLDE1''@;'; put 'put ''QTEsMSwwLDAsMSwzMywxNi43MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjAuNDQsNy41OWwtNi43OSw2Ljc5QTEwLjk0LDEwLjk0LDAsMCwwLDMuNDEsMTcuMjJhMSwxLDAsMCwwLDAsMS40Mkw5LjczLDI1''@;'; put 'put ''LDIuMjksMzIuNDFhMSwxLDAsMSwwLDEuNDEsMS40MWw3LjQ0LTcuNDQsNi4zMyw2LjMzYTEsMSwwLDAsMCwuNzEuMjloMGExLDEsMCwwLDAsLjcxLS4zLDExLDExLDAsMCwwLDIuODQtMTAuMjRsNi43OS02Ljc5WiIvPicpLGUuQ2xyU2hhcGVGaWxlPSgwLGEuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjEuODksNEg3LjgzQTEuODgsMS44OCwwLDAsMCw2LDUuOTFWMzAuMDlBMS44OCwxLjg4LDAsMCwwLDcuODMsMzJIMjguMTdBMS44OCwxLjg4LDAsMCwwLDMwLDMwLjA5VjExLjkyWm0tLjMsMi40OSw2LDUu''@;'; put 'put ''OWgtNlpNOCwzMFY2SDIwdjhoOFYzMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yMS41OSwxMi4zOVY2LjQ5bDEuMDcsMWE3LjMxLDcuMzEsMCwwLDEsMC0yLjgyTDIxLjg5''@;'; put 'put ''LDRINy44M0ExLjg4LDEuODgsMCwwLDAsNiw1LjkxVjMwLjA5QTEuODgsMS44OCwwLDAsMCw3LjgzLDMySDI4LjE3QTEuODgsMS44OCwwLDAsMCwzMCwzMC4wOVYxMy41YTcuNDUsNy40NSwwLDAsMS0zLjkxLTEuMTFaTTI4LDMwSDhWNkgyMHY4aDhaIi8+XG4gICAgICAgICAgICAgICAgPGNp''@;'; put 'put ''cmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMS0tYWxlcnRlZCIgZD0iTTI4LDE1LjRWMzBIOFY2SDIwVjguMjVsMi4yNS0zLjlMMjEuODksNEg3LjgzQTEuODgsMS44OCwwLDAsMCw2LDUuOTFWMzAuMDlBMS44OCwxLjg4LDAsMCwwLDcuODMsMzJIMjguMTdBMS44OCwxLjg4LDAsMCwwLDMwLDMwLjA5VjE1LjRaIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQu''@;'; put 'put ''NzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjEuODksNEg3LjgzQTEuODgsMS44OCwwLDAsMCw2LDUuOTFWMzAuMDlBMS44OCwxLjg4''@;'; put 'put ''LDAsMCwwLDcuODMsMzJIMjguMTdBMS44OCwxLjg4LDAsMCwwLDMwLDMwLjA5VjExLjkyWk0yMSwxM1Y1Ljg0TDI4LjMsMTNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yNy4yNSwx''@;'; put 'put ''M0gyMVY1Ljg0bDEuNjQsMS42YTcuMjUsNy4yNSwwLDAsMSwwLTIuNzRMMjEuODksNEg3LjgzQTEuODgsMS44OCwwLDAsMCw2LDUuOTFWMzAuMDlBMS44OCwxLjg4LDAsMCwwLDcuODMsMzJIMjguMTdBMS44OCwxLjg4LDAsMCwwLDMwLDMwLjA5VjEzLjVBNy40Nyw3LjQ3LDAsMCwxLDI3LjI1''@;'; put 'put ''LDEzWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjIuMiwxNS40Yy0yLDAtMy43LTEuNi0zLjctMy42YzAtMC43LDAuMi0xLjMsMC41LTEuOWwzLjItNS41TDIxLjksNEg3LjhDNi44LDQsNiw0LjksNiw1Ljl2MjQuMmMwLDEsMC44LDEuOSwxLjgsMS45aDIwLjNjMSww''@;'; put 'put ''LDEuOC0wLjksMS44LTEuOVYxNS40SDIyLjJ6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2LjksMS4xTDIxLjEsMTFjLTAuNCwwLjYtMC4yLDEuNCwwLjMs''@;'; put 'put ''MS44YzAuMiwwLjIsMC41LDAuMiwwLjgsMC4yaDExLjVjMC43LDAsMS4zLTAuNSwxLjMtMS4yYzAtMC4zLTAuMS0wLjUtMC4yLTAuOGwtNS43LTkuOWMtMC40LTAuNi0xLjEtMC44LTEuOC0wLjVDMjcuMSwwLjgsMjcsMSwyNi45LDEuMXoiLz4nKSxlLkNsclNoYXBlUGx1cz0oMCxhLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMwLDE3SDE5VjZhMSwxLDAsMSwwLTIsMFYxN0g2YTEsMSwwLDAsMC0xLDEsLjkxLjkxLDAsMCwwLDEsLjk0SDE3VjMwYTEsMSwwLDEsMCwyLDBWMTlIMzBhMSwxLDAsMCwwLDEtMUEx''@;'; put 'put ''LDEsMCwwLDAsMzAsMTdaIi8+JyksZS5DbHJTaGFwZU1pbnVzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNiwxN0gxMGExLDEsMCwwLDAsMCwySDI2YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxlLkNsclNoYXBl''@;'; put 'put ''TWludXNDaXJjbGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LDE3SDEyYTEsMSwwLDAsMCwwLDJIMjRhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYs''@;'; put 'put ''MTYsMCwwLDAsMTgsMlptNiwxNy41SDEyYTEuNSwxLjUsMCwwLDEsMC0zSDI0YTEuNSwxLjUsMCwwLDEsMCwzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxlLkNsclNoYXBlUGx1c0NpcmNsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYuMTcs''@;'; put 'put ''MTdIMTlWOS44M2ExLDEsMCwwLDAtMiwwVjE3SDkuODNhMSwxLDAsMCwwLDAsMkgxN3Y3LjE3YTEsMSwwLDAsMCwyLDBWMTloNy4xN2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwy''@;'; put 'put ''QTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTM0LDE4QTE2LDE2LDAsMSwx''@;'; put 'put ''LDE4LDIsMTYsMTYsMCwwLDEsMzQsMThabS04LjQxLTEuNUgxOS41VjEwLjQxYTEuNSwxLjUsMCwwLDAtMywwVjE2LjVIMTAuNDFhMS41LDEuNSwwLDAsMCwwLDNIMTYuNXY2LjA5YTEuNSwxLjUsMCwwLDAsMywwVjE5LjVoNi4wOWExLjUsMS41LDAsMCwwLDAtM1oiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxlLkNsclNoYXBlQmFuPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWk00LDE4QTEzLjkz''@;'; put 'put ''LDEzLjkzLDAsMCwxLDcuNDMsOC44NUwyNy4xNSwyOC41N0ExNCwxNCwwLDAsMSw0LDE4Wm0yNC41Nyw5LjE1TDguODUsNy40M0ExNCwxNCwwLDAsMSwyOC41NywyNy4xNVoiLz4nKSxlLkNsclNoYXBlVGltZXNDaXJjbGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOS42MSwxOGw0Ljg2LTQuODZhMSwxLDAsMCwwLTEuNDEtMS40MUwxOC4yLDE2LjU0bC00Ljg5LTQuODlhMSwxLDAsMCwwLTEuNDEsMS40MUwxNi43OCwxOCwxMiwyMi43MmExLDEsMCwxLDAsMS40MSwxLjQxbDQuNzctNC43Nyw0Ljc0''@;'; put 'put ''LDQuNzRhMSwxLDAsMCwwLDEuNDEtMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4LDM0Wk0xOCw0QTE0LDE0LDAsMSwwLDMyLDE4''@;'; put 'put ''LDE0LDE0LDAsMCwwLDE4LDRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptOCwyMi4xYTEuNCwxLjQsMCwwLDEtMiwybC02LTZMMTIsMjYu''@;'; put 'put ''MTJhMS40LDEuNCwwLDEsMS0yLTJMMTYsMTguMDgsOS44MywxMS44NmExLjQsMS40LDAsMSwxLDItMkwxOCwxNi4xbDYuMTctNi4xN2ExLjQsMS40LDAsMSwxLDIsMkwyMCwxOC4wOFoiLz4nKSxlLkNsclNoYXBlVHJhc2g9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNy4xNCwzNEg4Ljg2QTIuOTMsMi45MywwLDAsMSw2LDMxVjExLjIzSDhWMzFhLjkzLjkzLDAsMCwwLC44NiwxSDI3LjE0QS45My45MywwLDAsMCwyOCwzMVYxMS4yM2gyVjMxQTIuOTMsMi45MywwLDAsMSwyNy4xNCwzNFoiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMwLjc4LDlINUExLDEsMCwwLDEsNSw3SDMwLjc4YTEsMSwwLDAsMSwwLDJaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTMiIHg9IjIxIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMTUiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgeD0iMTMiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIxNSIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiBkPSJNMjMsNS44NkgyMS4xVjRIMTQuOVY1Ljg2SDEzVjRhMiwyLDAsMCwxLDEuOS0yaDYuMkEyLDIsMCwwLDEsMjMsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNNiw5VjMxYTIuOTMsMi45MywwLDAsMCwyLjg2LDNIMjcuMDlBMi45MywyLjkzLDAsMCwwLDMwLDMxVjlabTksMjBIMTNWMTRoMlptOCwwSDIxVjE0aDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMwLjczLDVIMjNWNEEyLDIsMCwwLDAsMjEsMmgtNi4yQTIsMiwwLDAsMCwxMyw0VjVINUExLDEsMCwxLDAsNSw3SDMwLjczYTEsMSwwLDAsMCwwLTJaIi8+JyksZS5DbHJTaGFwZVRhZz0oMCxhLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIxMC41''@;'; put 'put ''MiIgY3k9IjEwLjUyIiByPSIxLjQzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjkzLDE5LjIsMTcuMzMsNC42QTIsMiwwLDAsMCwxNS45Miw0TDYsNEEyLDIsMCwwLDAsNCw2bDAsOS45MmEyLDIsMCwwLDAs''@;'; put 'put ''LjU5LDEuNDFsMTQuNiwxNC42YTIsMiwwLDAsMCwyLjgzLDBsOS45LTkuOUEyLDIsMCwwLDAsMzEuOTMsMTkuMlpNMjAuNjIsMzAuNTIsNiwxNS45MVY2aDkuOTJsMTQuNiwxNC42MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''Y2lyY2xlIGN4PSIxMC41MiIgY3k9IjEwLjUyIiByPSIxLjQzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjkzLDE5LjJsLTMuOC0zLjhIMjUuMzFsNS4yMiw1LjIyLTkuOSw5''@;'; put 'put ''LjlMNiwxNS45MVY2aDkuOTJsMy40MSwzLjQxLDEtMS43OC0zLTNBMiwyLDAsMCwwLDE1LjkyLDRMNiw0QTIsMiwwLDAsMCw0LDZsMCw5LjkyYTIsMiwwLDAsMCwuNTksMS40MWwxNC42LDE0LjZhMiwyLDAsMCwwLDIuODMsMGw5LjktOS45QTIsMiwwLDAsMCwzMS45MywxOS4yWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4x''@;'; put 'put ''NEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMC41MiIgY3k9IjEwLjUyIiByPSIxLjQzIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45MywxOS4yLDE3LjMzLDQuNkEyLDIsMCwwLDAsMTUuOTIsNEw2LDRBMiwyLDAsMCwwLDQsNmwwLDkuOTJhMiwyLDAsMCwwLC41OSwxLjQxbDE0LjYs''@;'; put 'put ''MTQuNmEyLDIsMCwwLDAsMi44MywwbDkuOS05LjlBMiwyLDAsMCwwLDMxLjkzLDE5LjJaTTIwLjYyLDMwLjUyLDYsMTUuOTFWNmg5LjkybDE0LjYsMTQuNjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTMsMTkuMiwxNy4zMyw0LjZBMiwyLDAsMCwwLDE1LjkyLDRM''@;'; put 'put ''Niw0QTIsMiwwLDAsMCw0LDZsMCw5LjkyYTIsMiwwLDAsMCwuNTksMS40MWwxNC42LDE0LjZhMiwyLDAsMCwwLDIuODMsMGw5LjktOS45QTIsMiwwLDAsMCwzMS45MywxOS4yWk05LjY1LDExLjMxYTEuNjYsMS42NiwwLDEsMSwxLjY2LTEuNjZBMS42NiwxLjY2LDAsMCwxLDkuNjUsMTEuMzFa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguNDYsMTUuNzNIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDEwLjIybDEuNDMtMi40N0wxNy4zMyw0LjZBMiwyLDAsMCwwLDE1LjkyLDRMNiw0QTIsMiwwLDAsMCw0LDZs''@;'; put 'put ''MCw5LjkyYTIsMiwwLDAsMCwuNTksMS40MWwxNC42LDE0LjZhMiwyLDAsMCwwLDIuODMsMGw5LjktOS45YTIsMiwwLDAsMCwwLTIuODNaTTkuNjUsMTEuMzFhMS42NiwxLjY2LDAsMSwxLDEuNjYtMS42NkExLjY2LDEuNjYsMCwwLDEsOS42NSwxMS4zMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjQ3bC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkxSDMzLjY4YTEuMjgsMS4yOCwwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjQ3QTEuMjgsMS4yOCwwLDAs''@;'; put 'put ''MCwyNi44NSwxLjQ3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjkzLDE5LjIsMTcuMzMsNC42QTIsMiwwLDAsMCwxNS45Miw0TDYsNEEyLDIsMCwwLDAsNCw2''@;'; put 'put ''bDAsOS45MmEyLDIsMCwwLDAsLjU5LDEuNDFsMTQuNiwxNC42YTIsMiwwLDAsMCwyLjgzLDBsOS45LTkuOUEyLDIsMCwwLDAsMzEuOTMsMTkuMlpNOS42NSwxMS4zMWExLjY2LDEuNjYsMCwxLDEsMS42Ni0xLjY2QTEuNjYsMS42NiwwLDAsMSw5LjY1LDExLjMxWiIgY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNi4zMyIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz4nKSxlLkNsclNo''@;'; put 'put ''YXBlVGFncz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMuMTYsMTkuMTMsMTkuNTgsNS41NUExLjkyLDEuOTIsMCwwLDAsMTguMjEsNUgxNi4xMkwzMS43NSwyMC40NSwyMS4yMiwzMS4wN2ExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMWExLjkzLDEuOTMsMCwwLDAsMC0y''@;'; put 'put ''LjczWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjcuODEiIGN5PSIxMS4xNCIgcj0iMS4zMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0yNy43OCwxOS4xNywxNC4yLDUuNThBMS45MiwxLjkyLDAsMCwwLDEyLjgzLDVIMy42MUExLjkzLDEuOTMsMCwwLDAsMS42OCw2LjkzdjkuMjJhMS45MiwxLjkyLDAsMCwwLC41NywxLjM2TDE1Ljg0LDMxLjFhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFBMS45MywxLjkz''@;'; put 'put ''LDAsMCwwLDI3Ljc4LDE5LjE3Wk0xNy4yNiwyOS42OSwzLjY5LDE2LjE1VjdoOS4xTDI2LjM3LDIwLjQ4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjcuODEiIGN5PSIxMS4xNCIgcj0iMS4zMyIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuNzgsMTkuMTcsMTQuMiw1LjU4QTEuOTIsMS45MiwwLDAsMCwxMi44Myw1SDMuNjFBMS45MywxLjkzLDAsMCwwLDEuNjgsNi45M3Y5LjIyYTEuOTIs''@;'; put 'put ''MS45MiwwLDAsMCwuNTcsMS4zNkwxNS44NCwzMS4xYTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxQTEuOTMsMS45MywwLDAsMCwyNy43OCwxOS4xN1pNMTcuMjYsMjkuNjksMy42OSwxNi4xNVY3aDkuMUwyNi4zNywyMC40OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjE2LDE5LjEzLDE5LjU4LDUuNTVBMS45MiwxLjkyLDAsMCwwLDE4LjIxLDVIMTYuMTJMMzEuNzUsMjAuNDUsMjEuMjIsMzEuMDdhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFh''@;'; put 'put ''MS45MywxLjkzLDAsMCwwLDAtMi43M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjcuODEiIGN5PSIxMS4xNCIgcj0iMS4zMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yNy43OCwxOS4xNywyNCwxNS40SDIyLjIzQTMuNjUsMy42NSwwLDAsMSwyMSwxNS4xOWw1LjMzLDUuMjktOS4xMSw5LjIxTDMuNjksMTYuMTVWN2g5LjFsNiw1Ljk0YTMuNjgsMy42OCwwLDAsMSwuMS0yLjY5TDE0LjIsNS41OEExLjkyLDEuOTIsMCwwLDAsMTIuODMsNUgzLjYx''@;'; put 'put ''QTEuOTMsMS45MywwLDAsMCwxLjY4LDYuOTN2OS4yMmExLjkyLDEuOTIsMCwwLDAsLjU3LDEuMzZMMTUuODQsMzEuMWExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMUExLjkzLDEuOTMsMCwwLDAsMjcuNzgsMTkuMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIwLjgzLDYuOCwxOS41OCw1LjU1QTEuOTIsMS45MiwwLDAsMCwxOC4yMSw1SDE2LjEyTDE5Ljc5LDguNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0z''@;'; put 'put ''LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTYsMTkuMTMsMjkuNDMsMTUuNEgyNi42NWw1LjEsNUwyMS4yMiwzMS4wN2ExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMWExLjkzLDEuOTMsMCwwLDAsMC0yLjczWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAs''@;'; put 'put ''MjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTYsMTkuMTMsMTkuNTgsNS41NUExLjkyLDEuOTIsMCwwLDAsMTguMjEsNUgxNi4xMkwz''@;'; put 'put ''MS43NSwyMC40NSwyMS4yMiwzMS4wN2ExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMWExLjkzLDEuOTMsMCwwLDAsMC0yLjczWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3Ljc4LDE5LjE3LDE0LjIsNS41''@;'; put 'put ''OEExLjkyLDEuOTIsMCwwLDAsMTIuODMsNUgzLjYxQTEuOTMsMS45MywwLDAsMCwxLjY4LDYuOTN2OS4yMmExLjkyLDEuOTIsMCwwLDAsLjU3LDEuMzZMMTUuODQsMzEuMWExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMUExLjkzLDEuOTMsMCwwLDAsMjcuNzgsMTkuMTdaTTYuNjcs''@;'; put 'put ''MTEuNzJBMS43MywxLjczLDAsMSwxLDguNCwxMCwxLjczLDEuNzMsMCwwLDEsNi42NywxMS43MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy43OCwxOS4xNywxNC4yLDUuNThBMS45MiwxLjkyLDAsMCwwLDEyLjgz''@;'; put 'put ''LDVIMy42MUExLjkzLDEuOTMsMCwwLDAsMS42OCw2LjkzdjkuMjJhMS45MiwxLjkyLDAsMCwwLC41NywxLjM2TDE1Ljg0LDMxLjFhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFBMS45MywxLjkzLDAsMCwwLDI3Ljc4LDE5LjE3Wk02LjY3LDExLjcyQTEuNzMsMS43MywwLDEsMSw4''@;'; put 'put ''LjQsMTAsMS43MywxLjczLDAsMCwxLDYuNjcsMTEuNzJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjE2LDE5LjEzLDE5LjU4LDUuNTVBMS45MiwxLjkyLDAsMCwwLDE4LjIxLDVIMTYu''@;'; put 'put ''MTJMMzEuNzUsMjAuNDUsMjEuMjIsMzEuMDdhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFhMS45MywxLjkzLDAsMCwwLDAtMi43M1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4''@;'; put 'put ''PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjAuODMsNi44LDE5LjU4LDUuNTVBMS45MiwxLjkyLDAsMCwwLDE4LjIxLDVIMTYuMTJMMTku''@;'; put 'put ''NzksOC42WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjE2LDE5LjEzLDI5LjQzLDE1LjRIMjYuNjVsNS4xLDVMMjEuMjIsMzEuMDdhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIx''@;'; put 'put ''LTkuMjFhMS45MywxLjkzLDAsMCwwLDAtMi43M1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy43OCwxOS4xNywyNCwxNS40SDIyLjIzYTMuNjcsMy42NywwLDAsMS0zLjM2LTUuMTVM''@;'; put 'put ''MTQuMiw1LjU4QTEuOTIsMS45MiwwLDAsMCwxMi44Myw1SDMuNjFBMS45MywxLjkzLDAsMCwwLDEuNjgsNi45M3Y5LjIyYTEuOTIsMS45MiwwLDAsMCwuNTcsMS4zNkwxNS44NCwzMS4xYTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxQTEuOTMsMS45MywwLDAsMCwyNy43OCwxOS4x''@;'; put 'put ''N1pNNi42NywxMS43MkExLjczLDEuNzMsMCwxLDEsOC40LDEwLDEuNzMsMS43MywwLDAsMSw2LjY3LDExLjcyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMs''@;'; put 'put ''MTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVy''@;'; put 'put ''dCIvPicpLGUuQ2xyU2hhcGVIaXN0b3J5PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCw5LjgzYTEsMSwwLDAsMC0xLDF2OC43Mmw1LjksNEExLDEsMCwwLDAsMjQsMjEuODhsLTUtMy4zOVYxMC44M0ExLDEsMCwwLDAsMTgsOS44M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNi4wOSwxNi4wOSwwLDAsMCw0LDEwLjI2VjUuMmExLDEsMCwwLDAtMiwwVjE0aDguOGExLDEsMCwwLDAsMC0ySDUuMzVBMTQsMTQsMCwxLDEsOC41OCwyOC4zNWExLDEsMCwwLDAtMS4zNSwxLjQ4QTE2LDE2''@;'; put 'put ''LDAsMSwwLDE4LDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPicpLGUuQ2xyU2hhcGVDbG9jaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMy''@;'; put 'put ''LDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC45MiwxOC40VjEwLjc1YTEsMSwwLDAsMC0yLDB2OC43Mmw1LjksNGExLDEsMCwxLDAsMS4xMS0xLjY2WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LDE3Ljk0QTkuOTQsOS45NCwwLDAsMSwyMy40MSw5LjU5bC44NS0xLjM2YTExLjU1LDExLjU1LDAsMSwwLTguNTMsMjFMMTYsMjcuN0ExMCwxMCwwLDAsMSw4LDE3Ljk0WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC45MiwxMC43NWExLDEsMCwwLDAtMiwwdjguNzJsNS45LDRhMSwxLDAsMSwwLDEuMTEtMS42NmwtNS0zLjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTIsMTIuODFhNy40NCw3LjQ0LDAsMCwxLTEuOTEuNTgsMTQuMDUsMTQuMDUsMCwxLDEtOC42LTguNiw3LjQ0LDcuNDQsMCwwLDEsLjU4LTEuOTEsMTYuMDYsMTYuMDYsMCwxLDAsOS45Myw5LjkzWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsNi4zOGExMS41NiwxMS41NiwwLDAsMC0yLjI3LDIyLjg5TDE2LDI3LjdhMTAsMTAsMCwxLDEsNy4zOS0xOC4xaDBhNy40NSw3LjQ1LDAs''@;'; put 'put ''MCwxLS43OC0yLjIzQTExLjQ1LDExLjQ1LDAsMCwwLDE4LDYuMzhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguOTIsMTAuNzVhMSwxLDAsMCwwLTIsMHY4LjcybDUuOSw0YTEsMSwwLDEsMCwxLjExLTEuNjZsLTUtMy4zOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNzcsMTUuMzloLTJBMTQsMTQsMCwxLDEsMjIuMDksNC42MWwxLTEuNzZBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMzMuNzcsMTUuMzlaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDhhOS44MSw5LjgxLDAsMCwxLDIsLjIzbC44NS0xLjQ2YTExLjU1LDExLjU1LDAsMSwwLTUuMTMsMjIuNTJMMTYsMjcuN0ExMCwxMCwwLDAsMSwxOCw4WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjku''@;'; put 'put ''MDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiww''@;'; put 'put ''LDAsMCwxOCwyWm02LjIsMjEuMThhMSwxLDAsMCwxLTEuMzkuMjhsLTUuOS00VjEwLjc1YTEsMSwwLDAsMSwyLDBWMTguNGw1LDMuMzlBMSwxLDAsMCwxLDI0LjIsMjMuMThaTTIzLjg1LDguMjNhMTEuMzksMTEuMzksMCwxLDAtOC41NCwyMC44M0wxNSwzMC42M2ExMywxMywwLDEsMSw5Ljct''@;'; put 'put ''MjMuNzdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTIsMTIuODFBNy40OCw3LjQ4LDAsMCwxLDIyLjY4LDcuNjMsMTEuMjQsMTEuMjQsMCwwLDAsMTgsNi42YTExLjM5LDExLjM5LDAsMCwwLTIuNjksMjIuNDdM''@;'; put 'put ''MTUsMzAuNjNBMTMsMTMsMCwwLDEsMTgsNWExMi44MSwxMi44MSwwLDAsMSw0LjUxLjgyLDcuNDYsNy40NiwwLDAsMSwuNjgtMi45NCwxNi4wNiwxNi4wNiwwLDEsMCw5LjkzLDkuOTNaTTI0LjIsMjMuMThhMSwxLDAsMCwxLTEuMzkuMjhsLTUuOS00VjEwLjc1YTEsMSwwLDAsMSwyLDBWMTgu''@;'; put 'put ''NGw1LDMuMzlBMSwxLDAsMCwxLDI0LjIsMjMuMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjc3LDE1LjM5SDIyLjIzQTMuNjksMy42OSwwLDAsMSwxOSwxMy41NmMwLS4wOS0uMDktLjE4LS4xMy0uMjdWMTguNGw1LDMuMzlhMSwxLDAsMCwxLTEuMTEsMS42NmwtNS45LTRWMTAu''@;'; put 'put ''NzVhMSwxLDAsMCwxLDEuOTEtLjQxQTMuNjUsMy42NSwwLDAsMSwxOSw5Ljg5TDIwLjc0LDdBMTEuMTksMTEuMTksMCwwLDAsMTgsNi42YTExLjM5LDExLjM5LDAsMCwwLTIuNjksMjIuNDdMMTUsMzAuNjNBMTMsMTMsMCwwLDEsMTgsNWExMi44LDEyLjgsMCwwLDEsMy41Ny41MWwxLjUzLTIu''@;'; put 'put ''NjZBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMzMuNzcsMTUuMzlaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAs''@;'; put 'put ''MjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+JyksZS5DbHJTaGFwZUFs''@;'; put 'put ''YXJtQ2xvY2s9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjQ3LDMuODRhNS43OCw1Ljc4LDAsMCwwLTcuMzctLjYzLDE2LjA4LDE2LjA4LDAsMCwxLDguMiw3LjY1QTUuNzMsNS43MywwLDAsMCwzMS40NywzLjg0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS40MiwzLjQzYTUuNzcsNS43NywwLDAsMC03LjY0LjQxLDUuNzIsNS43MiwwLDAsMC0uMzgsNy42NEExNi4wOCwxNi4wOCwwLDAsMSwxMS40MiwzLjQzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNi40LDQuMDlBMTQsMTQsMCwwLDAsOC4xMSwyNy44OEw1LjU2LDMwLjQzQTEsMSwwLDEsMCw3LDMxLjg0bDIuNjYtMi42NmExMy45LDEzLjksMCwwLDAsMTYuODgtLjA4bDIuNzQsMi43NGExLDEsMCwwLDAsMS40MS0xLjQxTDI4LDI3Ljc4QTE0''@;'; put 'put ''LDE0LDAsMCwwLDE2LjQsNC4wOVpNMTkuNTgsMjkuOUExMiwxMiwwLDEsMSwyOS45MiwxOS41NiwxMiwxMiwwLDAsMSwxOS41OCwyOS45WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC45MiwyMC4zNGwtNi4w''@;'; put 'put ''Ni0zVjkuNWEuOS45LDAsMCwwLTEuOCwwdjlMMjQuMTIsMjJhLjkuOSwwLDEsMCwuNzktMS42MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuNDIsMy40M2E1Ljc3LDUuNzcsMCwwLDAtNy42NC40MSw1Ljcy''@;'; put 'put ''LDUuNzIsMCwwLDAtLjM4LDcuNjRBMTYuMDgsMTYuMDgsMCwwLDEsMTEuNDIsMy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguODYsOS41YS45LjksMCwwLDAtMS44LDB2''@;'; put 'put ''OUwyNC4xMiwyMmEuOS45LDAsMSwwLC43OS0xLjYybC02LjA2LTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDI3Ljc4QTEzLjg4LDEzLjg4LDAsMCwwLDMxLjc3LDE1LjRo''@;'; put 'put ''LTJhMTIuMDcsMTIuMDcsMCwxLDEtOC42Ny05bDEtMS44YTE0LDE0LDAsMCwwLTE0LDIzLjI3TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjksMTMuOSwwLDAsMCwxNi44OC0uMDhsMi43NCwyLjc0YTEsMSwwLDAsMCwxLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgs''@;'; put 'put ''MS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS40MiwzLjQzYTUuNzcsNS43NywwLDAsMC03LjY0LjQxLDUuNzIsNS43''@;'; put 'put ''MiwwLDAsMC0uMzgsNy42NEExNi4wOCwxNi4wOCwwLDAsMSwxMS40MiwzLjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDI3Ljc4QTEzLjg4LDEzLjg4LDAsMCwwLDMxLjc3LDE1''@;'; put 'put ''LjRIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LDEzLjU2TDE5LDEzLjR2My43OEwyNSwyMC4xYTEsMSwwLDEsMS0uODcsMS44TDE3LDE4LjQ0VjkuNjlhMSwxLDAsMCwxLDIsMFYxMEwxOSw5Ljg5bDMtNS4yOGExNCwxNCwwLDAsMC0xNCwyMy4yN0w1LjU2LDMwLjQzQTEsMSwwLDEsMCw3LDMx''@;'; put 'put ''Ljg0bDIuNjYtMi42NmExMy45LDEzLjksMCwwLDAsMTYuODgtLjA4bDIuNzQsMi43NGExLDEsMCwwLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQs''@;'; put 'put ''MjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHIt''@;'; put 'put ''aS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjQyLDMuNDNhNS43Nyw1Ljc3LDAsMCwwLTcuNjQuNDEsNS43Miw1LjcyLDAsMCwwLS4zOCw3LjY0QTE2LjA4LDE2LjA4LDAsMCwxLDExLjQyLDMuNDNaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDI3Ljc4YTEzLjg5LDEzLjg5LDAsMCwwLDMuMjEtMTQuMzlBNy40Niw3LjQ2LDAsMCwxLDIyLjUsNmE3LjUyLDcuNTIsMCwwLDEsLjExLTEuMjFBMTQsMTQsMCwwLDAsOC4xMSwyNy44OEw1LjU2LDMwLjQzQTEsMSww''@;'; put 'put ''LDEsMCw3LDMxLjg0bDIuNjYtMi42NmExMy45LDEzLjksMCwwLDAsMTYuODgtLjA4bDIuNzQsMi43NGExLDEsMCwwLDAsMS40MS0xLjQxWm0tMi41Mi02LjM1YTEsMSwwLDAsMS0xLjMzLjQ3TDE3LDE4LjQ0VjkuNjlhMSwxLDAsMCwxLDIsMHY3LjVMMjUsMjAuMUExLDEsMCwwLDEsMjUuNDks''@;'; put 'put ''MjEuNDNaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjQyLDMuNDNhNS43Nyw1Ljc3LDAsMCwwLTcuNjQuNDEsNS43Miw1LjcyLDAsMCwwLS4zOCw3LjY0QTE2LjA4LDE2LjA4LDAsMCwxLDExLjQyLDMuNDNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC44Niw5LjVhLjkuOSwwLDAsMC0xLjgsMHY5TDI0LjEyLDIyYS45LjksMCwxLDAsLjc5LTEuNjJsLTYuMDYtM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJh''@;'; put 'put ''ZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDI3Ljc4YTEzLjg5LDEzLjg5LDAsMCwwLDMuMjEtMTQuMzksNyw3LDAsMCwxLTIuMTEuMDVBMTIsMTIsMCwxLDEsMjIuNTYsNi45LDcuNTQsNy41NCwwLDAsMSwyMi41LDZhNy41Miw3LjUyLDAsMCwxLC4xMS0xLjIxQTE0LDE0LDAs''@;'; put 'put ''MCwwLDguMTEsMjcuODhMNS41NiwzMC40M0ExLDEsMCwxLDAsNywzMS44NGwyLjY2LTIuNjZhMTMuOSwxMy45LDAsMCwwLDE2Ljg4LS4wOGwyLjc0LDIuNzRhMSwxLDAsMCwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJh''@;'; put 'put ''ZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS40NywzLjg0YTUuNzgsNS43''@;'; put 'put ''OCwwLDAsMC03LjM3LS42MywxNi4wOCwxNi4wOCwwLDAsMSw4LjIsNy42NUE1LjczLDUuNzMsMCwwLDAsMzEuNDcsMy44NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS40MiwzLjQzYTUuNzcsNS43NywwLDAsMC03''@;'; put 'put ''LjY0LjQxLDUuNzIsNS43MiwwLDAsMC0uMzgsNy42NEExNi4wOCwxNi4wOCwwLDAsMSwxMS40MiwzLjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDRBMTQsMTQsMCwwLDAsOC4xMSwyNy44OEw1LjU2LDMwLjQz''@;'; put 'put ''QTEsMSwwLDEsMCw3LDMxLjg0bDIuNjYtMi42NmExMy45LDEzLjksMCwwLDAsMTYuODgtLjA4bDIuNzQsMi43NGExLDEsMCwwLDAsMS40MS0xLjQxTDI4LDI3Ljc4QTE0LDE0LDAsMCwwLDE4LDRabTcuNDcsMTcuNDNhMSwxLDAsMCwxLTEuMzMuNDdMMTcsMTguNDRWOS42OWExLDEsMCwwLDEs''@;'; put 'put ''MiwwdjcuNUwyNSwyMC4xQTEsMSwwLDAsMSwyNS40OSwyMS40M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz4nKSxlLkNsclNoYXBlQ2lyY2xlQXJyb3c9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCww''@;'; put 'put ''LDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguMDgsOC4yNmwtNy42MSw3LjYxYTEsMSwwLDEsMCwxLjQxLDEuNDFMMTcs''@;'; put 'put ''MTIuMTh2MTVhMSwxLDAsMCwwLDIsMFYxMmw1LjI4LDUuMjhhMSwxLDAsMSwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwy''@;'; put 'put ''Wm04LDE1LjU3YTEuNDMsMS40MywwLDAsMS0yLDBMMTkuNCwxM1YyNy4xNGExLjQsMS40LDAsMCwxLTIuOCwwdi0xNGwtNC40Myw0LjQzYTEuNCwxLjQsMCwwLDEtMi0yTDE4LjA4LDcuNywyNiwxNS41OUExLjQsMS40LDAsMCwxLDI2LDE3LjU3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMSIvPicpLGUuQ2xyU2hhcGVDaGlsZEFycm93PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNC44MiwxNS44YTEsMSwwLDAsMC0xLjQxLDAsMSwxLDAsMCwwLDAsMS40MUwyNy4yLDIxSDlWMy43OGExLDEsMCwxLDAtMiwwVjIxYTIsMiwwLDAsMCwyLDJIMjcuMTVs''@;'; put 'put ''LTMuNzQsMy43NWExLDEsMCwwLDAsMCwxLjQxLDEsMSwwLDAsMCwuNy4yOSwxLDEsMCwwLDAsLjcxLS4yOUwzMSwyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVDb3B5PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOS41''@;'; put 'put ''LDdoLTE5QTEuNSwxLjUsMCwwLDAsOSw4LjV2MjRBMS41LDEuNSwwLDAsMCwxMC41LDM0aDE5QTEuNSwxLjUsMCwwLDAsMzEsMzIuNVY4LjVBMS41LDEuNSwwLDAsMCwyOS41LDdaTTI5LDMySDExVjlIMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTI2LDMuNUExLjUsMS41LDAsMCwwLDI0LjUsMkg1LjVBMS41LDEuNSwwLDAsMCw0LDMuNXYyNEExLjUsMS41LDAsMCwwLDUuNSwyOUg2VjRIMjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTI3LDMuNTZBMS41NiwxLjU2LDAsMCwwLDI1LjQzLDJINS41N0ExLjU2LDEuNTYsMCwwLDAsNCwzLjU2VjI4LjQ0QTEuNTYsMS41NiwwLDAsMCw1LjU3LDMwaC41MlY0LjA3SDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHJlY3QgeD0iOCIgeT0iNiIgd2lkdGg9IjIzIiBoZWlnaHQ9IjI4IiByeD0iMS41IiByeT0iMS41IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+JyksZS5DbHJTaGFwZUhlbHA9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAs''@;'; put 'put ''MzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguMjksOC45MmE3LjM4LDcuMzgsMCwwLDAtNS43''@;'; put 'put ''MiwyLjU3LDEsMSwwLDAsMC0uMzIuNzEuOTIuOTIsMCwwLDAsLjk1LjkyLDEuMDgsMS4wOCwwLDAsMCwuNzEtLjI5LDUuNyw1LjcsMCwwLDEsNC4zMy0yYzIuMzYsMCwzLjgzLDEuNTIsMy44MywzLjQxdi4wNWMwLDIuMjEtMS43NiwzLjQ0LTQuNTQsMy42NWEuOC44LDAsMCwwLS43Ni45MnMw''@;'; put 'put ''LDIuMzIsMCwyLjc1YTEsMSwwLDAsMCwxLC45aC4xMWExLDEsMCwwLDAsLjktMVYxOS40NWMzLS40Miw1LjQzLTIsNS40My01LjI4di0uMDVDMjQuMTgsMTEuMTIsMjEuODQsOC45MiwxOC4yOSw4LjkyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxjaXJjbGUgY3g9IjE3Ljc4IiBjeT0iMjYuMiIgcj0iMS4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC4xOCwxNC4xN3YtLjA1YzAtMy0yLjM0LTUuMi01Ljg4LTUuMmE3LjM4LDcuMzgs''@;'; put 'put ''MCwwLDAtNS43MiwyLjU3LDEsMSwwLDAsMC0uMzIuNzEuOTIuOTIsMCwwLDAsLjk1LjkyLDEuMDgsMS4wOCwwLDAsMCwuNzEtLjI5LDUuNyw1LjcsMCwwLDEsNC4zMy0yYzIuMzYsMCwzLjgzLDEuNTIsMy44MywzLjQxdi4wNWMwLDIuMjEtMS43NiwzLjQ0LTQuNTQsMy42NWEuOC44LDAsMCww''@;'; put 'put ''LS43Ni45MnMwLDIuMzIsMCwyLjc1YTEsMSwwLDAsMCwxLC45aC4xMWExLDEsMCwwLDAsLjktMVYxOS40NUMyMS43NSwxOSwyNC4xOCwxNy40NSwyNC4xOCwxNC4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPGNpcmNsZSBjeD0iMTcuNzgiIGN5PSIyNi4yIiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xMiwxMi44MWE3LjQzLDcuNDMsMCwwLDEtMS45MS41OCwx''@;'; put 'put ''NC4wNSwxNC4wNSwwLDEsMS04LjYtOC42LDcuNDQsNy40NCwwLDAsMSwuNTgtMS45MSwxNi4wNiwxNi4wNiwwLDEsMCw5LjkzLDkuOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9''@;'; put 'put ''IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTIsMTIuODFhNy40OSw3LjQ5LDAsMCwxLTkuOTMtOS45MywxNi4wNiwxNi4wNiww''@;'; put 'put ''LDEsMCw5LjkzLDkuOTNabS0xNS4zNCwxNWExLjY1LDEuNjUsMCwxLDEsMS42NS0xLjY1QTEuNjUsMS42NSwwLDAsMSwxNy43OCwyNy44NVptMS4zNy04LjA2djEuNzJhMS4zNywxLjM3LDAsMCwxLTEuMywxLjM2aC0uMTFhMS4zNCwxLjM0LDAsMCwxLTEuMzktMS4zYzAtLjQ0LDAtMi43Niww''@;'; put 'put ''LTIuNzZhMS4xOSwxLjE5LDAsMCwxLDEuMTItMS4zMWMxLjU3LS4xMiw0LjE4LS43LDQuMTgtMy4yNSwwLTEuODMtMS40MS0zLjA3LTMuNDMtMy4wN2E1LjMxLDUuMzEsMCwwLDAtNCwxLjkyLDEuMzYsMS4zNiwwLDAsMS0yLjM1LS45LDEuNDMsMS40MywwLDAsMSwuNDMtMSw3Ljc3LDcuNzcs''@;'; put 'put ''MCwwLDEsNi0yLjY5YzMuNywwLDYuMjgsMi4zLDYuMjgsNS42QzI0LjU4LDE3LjE2LDIyLjYxLDE5LjIsMTkuMTUsMTkuNzlaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2''@;'; put 'put ''IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptLS4yMiwyNS44NWExLjY1LDEuNjUsMCwx''@;'; put 'put ''LDEsMS42NS0xLjY1QTEuNjUsMS42NSwwLDAsMSwxNy43OCwyNy44NVptMS4zNy04LjA2djEuNzJhMS4zNywxLjM3LDAsMCwxLTEuMywxLjM2aC0uMTFhMS4zNCwxLjM0LDAsMCwxLTEuMzktMS4zYzAtLjQ0LDAtMi43NiwwLTIuNzZhMS4xOSwxLjE5LDAsMCwxLDEuMTItMS4zMWMxLjU3LS4x''@;'; put 'put ''Miw0LjE4LS43LDQuMTgtMy4yNSwwLTEuODMtMS40MS0zLjA3LTMuNDMtMy4wN2E1LjMxLDUuMzEsMCwwLDAtNCwxLjkyLDEuMzYsMS4zNiwwLDAsMS0yLjM1LS45LDEuNDMsMS40MywwLDAsMSwuNDMtMSw3Ljc3LDcuNzcsMCwwLDEsNi0yLjY5YzMuNywwLDYuMjgsMi4zLDYuMjgsNS42QzI0''@;'; put 'put ''LjU4LDE3LjE2LDIyLjYxLDE5LjIsMTkuMTUsMTkuNzlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksZS5DbHJTaGFwZUxvZ2luPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOCw0SDEyYTIsMiwwLDAsMC0yLDJIMjhWMzBIMTJWMjAuMkgxMFYzMGEy''@;'; put 'put ''LDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMjgsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LjEyLDE4LjQ2YTEsMSwwLDEsMCwxLjQxLDEuNDFsNS43OS01Ljc5TDE2LjU0''@;'; put 'put ''LDguMjlhMSwxLDAsMCwwLTEuNDEsMS40MUwxOC41LDEzSDRhMSwxLDAsMCwwLTEsMSwxLDEsMCwwLDAsMSwxSDE4LjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCw0SDEyYTIsMiwwLDAsMC0yLDJ2N2g4''@;'; put 'put ''LjVMMTUuMTIsOS43MWExLDEsMCwwLDEsMS40MS0xLjQxbDUuNzksNS43OS01Ljc5LDUuNzlhMSwxLDAsMCwxLTEuNDEtMS40MUwxOC41LDE1SDEwVjMwYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwyOCw0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMCwxM0g0YTEsMSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEsMWg2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlTG9nb3V0PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9''@;'; put 'put ''Ik03LDZIMjN2OS44aDJWNmEyLDIsMCwwLDAtMi0ySDdBMiwyLDAsMCwwLDUsNlYzMGEyLDIsMCwwLDAsMiwySDIzYTIsMiwwLDAsMCwyLTJIN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguMTYsMTcuMjhh''@;'; put 'put ''MSwxLDAsMCwwLTEuNDEsMS40MUwzMC4xMywyMkgxNS42M2ExLDEsMCwwLDAtMSwxLDEsMSwwLDAsMCwxLDFoMTQuNWwtMy4zOCwzLjQ2YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzQsMjMuMDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTIzLDRIN0EyLDIsMCwwLDAsNSw2VjMwYTIsMiwwLDAsMCwyLDJIMjNhMiwyLDAsMCwwLDItMlYyNEgxNS42M2ExLDEsMCwwLDEtMS0xLDEsMSwwLDAsMSwxLTFIMjVWNkEyLDIsMCwwLDAsMjMsNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4xNiwxNy4yOGExLDEsMCwwLDAtMS40MSwxLjQxTDMwLjEzLDIySDI1djJoNS4xM2wtMy4zOCwzLjQ2YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzQsMjMuMDdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+JyksZS5D''@;'; put 'put ''bHJTaGFwZVByaW50ZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LDlIMjdWNUg5VjlIN2E0LDQsMCwwLDAtNCw0VjI0SDYuOTJWMjIuMDlINVYxM2EyLDIsMCwwLDEsMi0ySDI5YTIsMiwwLDAsMSwyLDJ2OUgyOS4wOFYyNEgzM1YxM0E0LDQsMCwwLDAsMjksOVpNMjUsOUgxMVY3''@;'; put 'put ''SDI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxOEg4YTEsMSwwLDAsMCwwLDJIOVYzMkgyN1YyMGgxYTEsMSwwLDAsMCwwLTJaTTI1LDMwSDExVjIwSDI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIxMy4wNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxOEg4YTEsMSwwLDAsMCww''@;'; put 'put ''LDJIOVYzMkgyN1YyMGgxYTEsMSwwLDAsMCwwLTJaTTI1LDMwSDExVjIwSDI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzEgMTUuNCAzMSAyMi4wOSAyOS4wOCAy''@;'; put 'put ''Mi4wOSAyOS4wOCAyNCAzMyAyNCAzMyAxNS40IDMxIDE1LjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNSwxM2EyLDIsMCwwLDEsMi0ySDE4LjY0QTMuNjUsMy42NSwwLDAsMSwx''@;'; put 'put ''OSw5Ljg5TDE5LjU0LDlIMTFWN2g5LjcxbDEuMTMtMkg5VjlIN2E0LDQsMCwwLDAtNCw0VjI0SDYuOTJWMjIuMDlINVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4x''@;'; put 'put ''NCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDE4SDhhMSwxLDAsMCwwLDAsMkg5VjMySDI3VjIwaDFhMSwxLDAsMCwwLDAtMlpNMjUsMzBIMTFWMjBIMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIxMy4wNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMTIuODhhNy40NSw3LjQ1LDAs''@;'; put 'put ''MCwxLTIsLjU1djguNjZIMjkuMDhWMjRIMzNWMTNDMzMsMTMsMzMsMTIuOTMsMzMsMTIuODhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDEzYTIsMiwwLDAsMSwyLTJIMjQuNDJh''@;'; put 'put ''Ny41LDcuNSwwLDAsMS0xLjI3LTJIMTFWN0gyMi41N2E3LjUyLDcuNTIsMCwwLDEtLjA3LTEsNy41NCw3LjU0LDAsMCwxLC4wNy0xSDlWOUg3YTQsNCwwLDAsMC00LDRWMjRINi45MlYyMi4wOUg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0t''@;'; put 'put ''YmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LDlIMjdWNUg5VjlIN2E0''@;'; put 'put ''LDQsMCwwLDAtNCw0VjI0SDl2OEgyN1YyNGg2VjEzQTQsNCwwLDAsMCwyOSw5Wk0yNSwyNHY2SDExVjE5SDI1Wk0yNSw5SDExVjdIMjVabTQsNkgyN1YxM2gyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjIzLDE1''@;'; put 'put ''LjRBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMTkuNTQsOUgxMVY3aDkuNzFsMS4xMy0ySDlWOUg3YTQsNCwwLDAsMC00LDRWMjRIOXY4SDI3VjI0aDZWMTUuNFpNMjUsMjR2NkgxMVYxOUgyNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0''@;'; put 'put ''ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMywxMi44OGE3LjMsNy4zLDAsMCwxLTQsLjU1VjE1SDI3VjEzaC4zMmE3LjUyLDcuNTIsMCwwLDEtNC4xOC00SDExVjdIMjIuNTdhNy41Miw3LjUyLDAsMCwx''@;'; put 'put ''LS4wNy0xLDcuNTQsNy41NCwwLDAsMSwuMDctMUg5VjlIN2E0LDQsMCwwLDAtNCw0VjI0SDl2OEgyN1YyNGg2VjEzQzMzLDEzLDMzLDEyLjkzLDMzLDEyLjg4Wk0yNSwyNHY2SDExVjE5SDI1WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz4nKSxlLkNsclNoYXBlV29ybGQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI2LjU0''@;'; put 'put ''LDE4YTE5LjM4LDE5LjM4LDAsMCwwLS40My00aDMuNmExMi4zLDEyLjMsMCwwLDAtLjY3LTEuNkgyNS42OUExOS43MiwxOS43MiwwLDAsMCwyMi44LDYuNTNhMTIuMywxMi4zLDAsMCwwLTIuNTUtLjc2LDE3LjgzLDE3LjgzLDAsMCwxLDMuODksNi41OUgxOC43NVY1LjZjLS4yNSwwLS41MSww''@;'; put 'put ''LS43Nywwcy0uNDksMC0uNzMsMHY2Ljc3SDExLjg2YTE3LjgzLDE3LjgzLDAsMCwxLDMuOS02LjYsMTIuMjgsMTIuMjgsMCwwLDAtMi41NC43NSwxOS43MiwxOS43MiwwLDAsMC0yLjkxLDUuODVINi45NEExMi4zLDEyLjMsMCwwLDAsNi4yNiwxNEg5Ljg5YTE5LjM4LDE5LjM4LDAsMCwwLS40''@;'; put 'put ''Myw0LDE5LjY3LDE5LjY3LDAsMCwwLC41LDQuMzdINi40MkExMi4zNCwxMi4zNCwwLDAsMCw3LjE2LDI0aDMuMjNhMTkuMzIsMTkuMzIsMCwwLDAsMi42OSw1LjM2LDEyLjI4LDEyLjI4LDAsMCwwLDIuNjEuNzlBMTcuOTEsMTcuOTEsMCwwLDEsMTIsMjRoNS4yNnY2LjM0Yy4yNCwwLC40OSww''@;'; put 'put ''LC43Mywwcy41MSwwLC43NywwVjI0SDI0YTE3LjksMTcuOSwwLDAsMS0zLjcsNi4xNSwxMi4yOCwxMi4yOCwwLDAsMCwyLjYyLS44MUExOS4zMiwxOS4zMiwwLDAsMCwyNS42MSwyNGgzLjJhMTIuMzQsMTIuMzQsMCwwLDAsLjc0LTEuNkgyNkExOS42NywxOS42NywwLDAsMCwyNi41NCwxOFpt''@;'; put 'put ''LTkuMjksNC4zN0gxMS41MWExNy42OSwxNy42OSwwLDAsMS0uMDktOC40aDUuODNabTcuMjQsMEgxOC43NVYxNGg1LjgzQTE4LjIxLDE4LjIxLDAsMCwxLDI1LDE4LDE4LjEyLDE4LjEyLDAsMCwxLDI0LjQ5LDIyLjM3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTMzLjEyLDEyLjgxYTcuNDQsNy40NCwwLDAsMS0xLjkxLjU4LDE0LjA1LDE0LjA1LDAsMSwxLTguNi04LjYsNy40Myw3LjQzLDAsMCwxLC41OC0xLjkxLDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIwLjI1LDUuNzdhMTcuODMsMTcuODMsMCwwLDEsMy44OSw2LjU5SDE4Ljc1VjUuNmMtLjI1LDAtLjUxLDAtLjc3LDBzLS40OSwwLS43MywwdjYuNzdIMTEuODZhMTcuODMsMTcuODMsMCwwLDEsMy45''@;'; put 'put ''LTYuNiwxMi4yOCwxMi4yOCwwLDAsMC0yLjU0Ljc1LDE5LjcyLDE5LjcyLDAsMCwwLTIuOTEsNS44NUg2Ljk0QTEyLjMsMTIuMywwLDAsMCw2LjI2LDE0SDkuODlhMTkuMzgsMTkuMzgsMCwwLDAtLjQzLDQsMTkuNjcsMTkuNjcsMCwwLDAsLjUsNC4zN0g2LjQyQTEyLjM0LDEyLjM0LDAsMCww''@;'; put 'put ''LDcuMTYsMjRoMy4yM2ExOS4zMiwxOS4zMiwwLDAsMCwyLjY5LDUuMzYsMTIuMjgsMTIuMjgsMCwwLDAsMi42MS43OUExNy45MSwxNy45MSwwLDAsMSwxMiwyNGg1LjI2djYuMzRjLjI0LDAsLjQ5LDAsLjczLDBzLjUxLDAsLjc3LDBWMjRIMjRhMTcuOSwxNy45LDAsMCwxLTMuNyw2LjE1LDEy''@;'; put 'put ''LjI4LDEyLjI4LDAsMCwwLDIuNjItLjgxQTE5LjMyLDE5LjMyLDAsMCwwLDI1LjYxLDI0aDMuMmExMi4zNCwxMi4zNCwwLDAsMCwuNzQtMS42SDI2YTE5LjY3LDE5LjY3LDAsMCwwLC41LTQuMzcsMTkuMzgsMTkuMzgsMCwwLDAtLjQzLTRoMy42Yy0uMDYtLjE3LS4xMi0uMzMtLjE5LS40OWE3''@;'; put 'put ''LjQ1LDcuNDUsMCwwLDEtMy40Ny0xLjExaC0uMzZjMC0uMTEtLjA4LS4yMS0uMTEtLjMyYTcuNDgsNy40OCwwLDAsMS0zLjA2LTUuNjJBMTIuNDEsMTIuNDEsMCwwLDAsMjAuMjUsNS43N1ptLTMsMTYuNTlIMTEuNTFhMTcuNjksMTcuNjksMCwwLDEtLjA5LTguNGg1LjgzWk0yNSwxOGExOC4x''@;'; put 'put ''MiwxOC4xMiwwLDAsMS0uNTUsNC4zN0gxOC43NVYxNGg1LjgzQTE4LjIxLDE4LjIxLDAsMCwxLDI1LDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjA1LDE4YTIwLjQ2LDIwLjQ2LDAsMCwwLC42Miw0LjkzaDYuNDhWMTMuNDVIMTAuNThBMjAuNTUsMjAuNTUsMCww''@;'; put 'put ''LDAsMTAuMDUsMThaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguODUsMTMuNDV2OS40OGg2LjQ4QTIwLjQ2LDIwLjQ2LDAsMCwwLDI2LDE4YTIwLjU1LDIwLjU1LDAsMCwwLS41Mi00LjU1WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNMzAuMjIsMjQuNzFIMjYuNmEyMS44LDIxLjgsMCwwLDEtMyw2LDEzLjg2LDEzLjg2LDAsMCwxLTMsLjkyLDIwLjIxLDIwLjIx''@;'; put 'put ''LDAsMCwwLDQuMTgtNi45NEgxOC44NnY3LjE1Yy0uMjksMC0uNTcsMC0uODYsMHMtLjU1LDAtLjgzLDBWMjQuNzFIMTEuMjJhMjAuMjEsMjAuMjEsMCwwLDAsNC4xOCw2Ljk1LDEzLjg2LDEzLjg2LDAsMCwxLTIuOTQtLjksMjEuOCwyMS44LDAsMCwxLTMtNi4wNUg1Ljc4YTEzLjk0LDEzLjk0''@;'; put 'put ''LDAsMCwxLS44My0xLjgxaDRBMjIuMiwyMi4yLDAsMCwxLDguMzcsMThhMjEuODgsMjEuODgsMCwwLDEsLjQ4LTQuNTVINC43NmExMy44OCwxMy44OCwwLDAsMSwuNzYtMS44MUg5LjMzQTIyLjI2LDIyLjI2LDAsMCwxLDEyLjYxLDVhMTMuODYsMTMuODYsMCwwLDEsMi44Ny0uODQsMjAuMTMs''@;'; put 'put ''MjAuMTMsMCwwLDAtNC40LDcuNDVoNi4wOVY0Yy4yOCwwLC41NSwwLC44Mywwcy41OCwwLC44NiwwdjcuNjRoNi4wOWEyMC4xMywyMC4xMywwLDAsMC00LjM5LTcuNDRBMTMuODksMTMuODksMCwwLDEsMjMuNDMsNWEyMi4yNiwyMi4yNiwwLDAsMSwzLjI3LDYuNTloMy43N2ExMy44OSwxMy44''@;'; put 'put ''OSwwLDAsMSwuNzYsMS44MUgyNy4xN0EyMS44OCwyMS44OCwwLDAsMSwyNy42NiwxOGEyMi4yLDIyLjIsMCwwLDEtLjU3LDQuOTNoNEExMy45NCwxMy45NCwwLDAsMSwzMC4yMiwyNC43MVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0xMC4wNSwxOGEyMC40NiwyMC40NiwwLDAsMCwuNjIsNC45M2g2LjQ4VjEzLjQ1SDEwLjU4QTIwLjU1LDIwLjU1LDAsMCwwLDEwLjA1LDE4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0xOC44NSwyMi45NGg2LjQ4QTIwLjQ2LDIwLjQ2LDAsMCwwLDI2LDE4YTIwLjU1LDIwLjU1LDAsMCwwLS41Mi00LjU1SDE4Ljg1WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4x''@;'; put 'put ''MiwxMi44MWE3LjQ0LDcuNDQsMCwwLDEtMS45LjU4djBIMzFhNi43Nyw2Ljc3LDAsMCwxLTIuMDcsMGgtMS44QTIxLjg4LDIxLjg4LDAsMCwxLDI3LjY2LDE4YTIyLjIsMjIuMiwwLDAsMS0uNTcsNC45M2g0YTEzLjk0LDEzLjk0LDAsMCwxLS44MywxLjgxSDI2LjZhMjEuOCwyMS44LDAsMCwx''@;'; put 'put ''LTMsNiwxMy44NiwxMy44NiwwLDAsMS0zLC45MiwyMC4yMSwyMC4yMSwwLDAsMCw0LjE4LTYuOTRIMTguODZ2Ny4xNWMtLjI5LDAtLjU3LDAtLjg2LDBzLS41NSwwLS44MywwVjI0LjcxSDExLjIyYTIwLjIxLDIwLjIxLDAsMCwwLDQuMTgsNi45NSwxMy44NiwxMy44NiwwLDAsMS0yLjk0LS45''@;'; put 'put ''LDIxLjgsMjEuOCwwLDAsMS0zLTYuMDVINS43OGExMy45NCwxMy45NCwwLDAsMS0uODMtMS44MWg0QTIyLjIsMjIuMiwwLDAsMSw4LjM3LDE4YTIxLjg4LDIxLjg4LDAsMCwxLC40OC00LjU1SDQuNzZhMTMuODgsMTMuODgsMCwwLDEsLjc2LTEuODFIOS4zM0EyMi4yNiwyMi4yNiwwLDAsMSwx''@;'; put 'put ''Mi42MSw1YTEzLjg2LDEzLjg2LDAsMCwxLDIuODctLjg0LDIwLjEzLDIwLjEzLDAsMCwwLTQuNCw3LjQ1aDYuMDlWNGMuMjgsMCwuNTUsMCwuODMsMHMuNTgsMCwuODYsMHY3LjY0aDYuMDlsMC0uMTNhNy40Nyw3LjQ3LDAsMCwxLTIuMzYtNC43NiwyMC4zNywyMC4zNywwLDAsMC0yLTIuNTUs''@;'; put 'put ''MTQuMjMsMTQuMjMsMCwwLDEsMi4wNi41Niw3LjQ0LDcuNDQsMCwwLDEsLjU3LTEuODYsMTYuMDYsMTYuMDYsMCwxLDAsOS45Myw5LjkzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMw''@;'; put 'put ''IiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz4nKSxlLkNsclNoYXBlU2xpZGVyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMiwxMi4zN0E0LDQsMCwwLDAsOSw4LjQ4VjVBMSwxLDAs''@;'; put 'put ''MSwwLDcsNVY4LjQ4YTQsNCwwLDAsMCwwLDcuNzhWMzFhMSwxLDAsMSwwLDIsMFYxNi4yNkE0LDQsMCwwLDAsMTIsMTIuMzdabS00LDJhMiwyLDAsMSwxLDItMkEyLDIsMCwwLDEsOCwxNC40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0zMiwxNS44M2E0LDQsMCwwLDAtMy0zLjg5VjVhMSwxLDAsMSwwLTIsMHY2Ljk0YTQsNCwwLDAsMCwwLDcuNzhWMzFhMSwxLDAsMSwwLDIsMFYxOS43MkE0LDQsMCwwLDAsMzIsMTUuODNabS00LDJhMiwyLDAsMSwxLDItMkEyLDIsMCwwLDEsMjgsMTcuODdaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDI0LjVhNCw0LDAsMCwwLTMtMy44OVY1YTEsMSwwLDEsMC0yLDBWMjAuNjFhNCw0LDAsMCwwLDAsNy43OFYzMWExLDEsMCwxLDAsMiwwVjI4LjM5QTQsNCwwLDAsMCwyMiwy''@;'; put 'put ''NC41Wm0tNCwyYTIsMiwwLDEsMSwyLTJBMiwyLDAsMCwxLDE4LDI2LjUzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik05LDkuMjlWNUExLDEsMCwxLDAsNyw1VjkuM2EzLjIyLDMuMjIsMCwwLDAsMCw2LjExVjMx''@;'; put 'put ''YTEsMSwwLDEsMCwyLDBWMTUuNDNBMy4yMiwzLjIyLDAsMCwwLDksOS4yOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwyMS40NVY1YTEsMSwwLDEsMC0yLDBWMjEuNDdhMy4yMiwzLjIyLDAsMCwwLDAsNi4xMVYz''@;'; put 'put ''MWExLDEsMCwxLDAsMiwwVjI3LjZhMy4yMiwzLjIyLDAsMCwwLDAtNi4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOSwxMi43NVY1YTEsMSwwLDEsMC0yLDB2Ny43NmEzLjIyLDMuMjIsMCwwLDAsMCw2LjExVjMx''@;'; put 'put ''YTEsMSwwLDEsMCwyLDBWMTguODlhMy4yMiwzLjIyLDAsMCwwLDAtNi4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz4nKSxlLkNsclNoYXBlQ2xpcGJvYXJkPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOS4yOSw1SDI3VjdoMlYzMkg3VjdIOVY1SDdB''@;'; put 'put ''MS43NSwxLjc1LDAsMCwwLDUsNi42OVYzMi4zMUExLjcsMS43LDAsMCwwLDYuNzEsMzRIMjkuMjlBMS43LDEuNywwLDAsMCwzMSwzMi4zMVY2LjY5QTEuNywxLjcsMCwwLDAsMjkuMjksNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTI2LDcuMzNBMi4zNCwyLjM0LDAsMCwwLDIzLjY3LDVIMjEuODdhNCw0LDAsMCwwLTcuNzUsMEgxMi4zM0EyLjM0LDIuMzQsMCwwLDAsMTAsNy4zM1YxMUgyNlpNMjQsOUgxMlY3LjMzQS4zMy4zMywwLDAsMSwxMi4zMyw3SDE2VjZhMiwyLDAsMCwxLDQsMFY3aDMuNjdh''@;'; put 'put ''LjMzLjMzLDAsMCwxLC4zMy4zM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjE0IiB3aWR0aD0iMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTgiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIyMiIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjI2IiB3aWR0aD0iMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIx''@;'; put 'put ''MSIgeT0iMTQiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTgiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMjIiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMjYiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMTMsOUgxMlY3LjMzQS4zMy4zMywwLDAs''@;'; put 'put ''MSwxMi4zMyw3SDE2VjZhMiwyLDAsMCwxLDQsMFY3aDIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNTIsNy41MiwwLDAsMSwuMDctMWgtLjdhNCw0LDAsMCwwLTcuNzUsMEgxMi4zM0EyLjM0LDIuMzQsMCwwLDAsMTAsNy4zM1YxMUgyNC40MkE3LjUsNy41LDAsMCwxLDIzLjEzLDlaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWE3LjUyLDcuNTIsMCwwLDEtMS0uMDdWMzJIN1Y3SDlWNUg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjlWMzIuMzFBMS43LDEuNyww''@;'; put 'put ''LDAsMCw2LjcxLDM0SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMzFWMTMuNDNBNy41Miw3LjUyLDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIg''@;'; put 'put ''Y3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuMjksNUgyMi4xN2E0LjQ1LDQuNDUsMCwwLDAtNC4xMS0zQTQuNDYsNC40NiwwLDAsMCwx''@;'; put 'put ''NCw1SDdBMS43NSwxLjc1LDAsMCwwLDUsNi42OVYzMi4zMUExLjcsMS43LDAsMCwwLDYuNzEsMzRIMjkuMjlBMS43LDEuNywwLDAsMCwzMSwzMi4zMVY2LjY5QTEuNywxLjcsMCwwLDAsMjkuMjksNVptLTE4LDNhMSwxLDAsMCwxLDEtMWgzLjQ0VjYuMzFhMi4zMSwyLjMxLDAsMSwxLDQuNjMs''@;'; put 'put ''MFY3aDMuNDRhMSwxLDAsMCwxLDEsMXYySDExLjMxWk0yNSwyOEgxMVYyNkgyNVptMC00SDExVjIySDI1Wm0wLTRIMTFWMThIMjVabTAtNEgxMVYxNEgyNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3''@;'; put 'put ''LjQ5LDcuNDksMCwwLDEsMjMuNjYsMTBIMTEuMzFWOGExLDEsMCwwLDEsMS0xaDMuNDRWNi4zMWEyLjMxLDIuMzEsMCwxLDEsNC42MywwVjdoMi4xOWE3LjU0LDcuNTQsMCwwLDEtLjA3LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xaC0uNGE0LjQ1LDQuNDUsMCwwLDAtNC4xMS0zQTQuNDYsNC40''@;'; put 'put ''NiwwLDAsMCwxNCw1SDdBMS43NSwxLjc1LDAsMCwwLDUsNi42OVYzMi4zMUExLjcsMS43LDAsMCwwLDYuNzEsMzRIMjkuMjlBMS43LDEuNywwLDAsMCwzMSwzMi4zMVYxMy40M0E3LjUyLDcuNTIsMCwwLDEsMzAsMTMuNVpNMjUsMjhIMTFWMjZIMjVabTAtNEgxMVYyMkgyNVptMC00SDExVjE4''@;'; put 'put ''SDI1Wm0wLTRIMTFWMTRIMjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''Mi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGUuQ2xyU2hhcGVGaXJld2FsbD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTQsOEgzMnY1LjA4SDIzLjh2''@;'; put 'put ''LTRIMjJ2NEgxNHYtNEgxMnY0SDRabTAsN0gzMnY2LjA4SDI4LjkyVjE2LjI3SDI3djQuODFIMTguOTJWMTYuMjdIMTd2NC44MUg4LjlWMTYuMjdIN3Y0LjgxSDRaTTIzLjgsMjhWMjQuMjdIMjIuMlYyOEgxNFYyNC4yN2gtMS42VjI4SDRWMjNIMzJ2NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMzJ2NS42OEgyOC45MlYxNi4yN0gyN3Y0LjgxSDE4LjkyVjE2LjI3SDE3djQuODFIOC45VjE2LjI3SDd2NC44MUg0VjE1SDIwLjU4YTMuNTgsMy41OCwwLDAsMS0xLjc2LTEuOTJIMTR2''@;'; put 'put ''LTRIMTJ2NEg0VjhIMjAuMTRsMS4xNS0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMzhaTTIzLjgsMjhWMjQuMjdIMjIuMlYyOEgxNFYyNC4yN2gtMS42VjI4SDRWMjNIMzJ2NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwx''@;'; put 'put ''LjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVhNy40Nyw3LjQ3LDAsMCwxLTIuNDUtLjQySDIzLjhWMTAuMjJhNy41LDcuNSwwLDAsMS0u''@;'; put 'put ''NjMtMS4xNEgyMnY0SDE0di00SDEydjRINFY4SDIyLjc4YTcuNDksNy40OSwwLDAsMS0uMjgtMkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41Wk00LDE1SDMydjYuMDhIMjguOTJWMTYuMjdIMjd2''@;'; put 'put ''NC44MUgxOC45MlYxNi4yN0gxN3Y0LjgxSDguOVYxNi4yN0g3djQuODFINFpNMjMuOCwyOFYyNC4yN0gyMi4yVjI4SDE0VjI0LjI3aC0xLjZWMjhINFYyM0gzMnY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAs''@;'; put 'put ''MCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk0xNCwyOEgxMlYyNGgyWm0xMCwwSDIyVjI0aDJabTgtNkg0VjIwSDdWMTZIOXY0aDhWMTZoMnY0aDhWMTZoMnY0aDNabTAtOEg0VjEyaDhWOGgydjRoOFY4aDJ2NGg4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMuNjksMy42OSwwLDAsMSwxOS4zNSwxNEg0VjEyaDhWOGgydjRoNC41N0EzLjY3LDMuNjcsMCwwLDEsMTksOS44OUwyMS4yOSw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMy''@;'; put 'put ''YTIsMiwwLDAsMCwyLTJWMTUuMzhaTTE0LDI4SDEyVjI0aDJabTEwLDBIMjJWMjRoMlptOC02SDRWMjBIN1YxNkg5djRoOFYxNmgydjRoOFYxNmgydjRoM1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNCwxMC40OVYxMmgxLjUxQTcuNTMsNy41MywwLDAsMSwyNCwxMC40OVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTMyLDEzLjIyVjE0SDRWMTJoOFY4aDJ2NGg4VjhoLjc4YTcuNDksNy40OSwwLDAsMS0uMjgtMkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMlpNMTQsMjhIMTJWMjRo''@;'; put 'put ''MlptMTAsMEgyMlYyNGgyWm04LTZINFYyMEg3VjE2SDl2NGg4VjE2aDJ2NGg4VjE2aDJ2NGgzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxlLkNsclNoYXBlTGlzdD0oMCxhLmNsckljb25TVkcpKCc8cmVjdCB4PSIxNSIgeT0iOCIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMTIiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjE2IiB3aWR0aD0iOSIgaGVp''@;'; put 'put ''Z2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIyMCIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCB4PSIxNSIgeT0iMjQiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC02IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjEyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxNiIgd2lkdGg9IjIi''@;'; put 'put ''IGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMjAiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHJlY3QgeD0iMTEiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCww''@;'; put 'put ''LDAsMi0yVjRBMiwyLDAsMCwwLDI4LDJabTAsMzBIOFY0SDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTExIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjEyIiB3aWR0aD0iOSIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMTYiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IHg9IjE1IiB5PSIyMCIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjI0IiB3aWR0aD0iOSIgaGVpZ2h0PSIyIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2Vk''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjEyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTYiIHdpZHRoPSIyIiBo''@;'; put 'put ''ZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIyMCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtOC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC05LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUs''@;'; put 'put ''OHYyaDguNjZhNy40NSw3LjQ1LDAsMCwxLS44OS0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTAtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxMy4yMlYzMkg4VjRIMjIuNzhhNy40NSw3LjQ1LDAsMCwxLC44OC0ySDhB''@;'; put 'put ''MiwyLDAsMCwwLDYsNFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTMuNUE3LjQ5LDcuNDksMCwwLDEsMjgsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBj''@;'; put 'put ''eD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwySDhBMiwyLDAsMCwwLDYsNFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiww''@;'; put 'put ''LDAsMCwyLTJWNEEyLDIsMCwwLDAsMjgsMlpNMTMsMjZIMTFWMjRoMlptMC00SDExVjIwaDJabTAtNEgxMVYxNmgyWm0wLTRIMTFWMTJoMlptMC00SDExVjhoMlpNMjUsMjZIMTVWMjRIMjVabTAtNEgxNVYyMEgyNVptMC00SDE1VjE2SDI1Wm0wLTRIMTVWMTJIMjVabTAtNEgxNVY4SDI1WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy42NiwxMEgxNVY4aDcuNzhhNy40Miw3LjQyLDAsMCwxLC44OS02SDhBMiwyLDAsMCwwLDYsNFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTMuNUE3LjQ5''@;'; put 'put ''LDcuNDksMCwwLDEsMjMuNjYsMTBaTTEzLDI2SDExVjI0aDJabTAtNEgxMVYyMGgyWm0wLTRIMTFWMTZoMlptMC00SDExVjEyaDJabTAtNEgxMVY4aDJaTTI1LDI2SDE1VjI0SDI1Wm0wLTRIMTVWMjBIMjVabTAtNEgxNVYxNkgyNVptMC00SDE1VjEySDI1WiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxlLkNsclNoYXBl''@;'; put 'put ''UmVkbz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjQsNC4yMmExLDEsMCwwLDAtMS40MSwxLjQybDUuNTYsNS40OWgtMTNBMTEsMTEsMCwwLDAsMTAuMDcsMzIsMSwxLDAsMCwwLDExLDMwLjE4YTksOSwwLDAsMS01LTgsOS4wOCw5LjA4LDAsMCwxLDkuMTMtOWgxM2wtNS41NCw1LjQ4''@;'; put 'put ''QTEsMSwwLDAsMCwyNCwyMGw4LTcuOTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxlLkNsclNoYXBlVW5kbz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjAuODcsMTEuMTRoLTEzbDUuNTYtNS40OUExLDEsMCwwLDAsMTIsNC4yMkw0LDEy''@;'; put 'put ''LjEzLDEyLDIwYTEsMSwwLDAsMCwxLjQxLTEuNDJMNy44NiwxMy4xNGgxM2E5LjA4LDkuMDgsMCwwLDEsOS4xMyw5LDksOSwwLDAsMS01LDhBMSwxLDAsMCwwLDI1LjkzLDMyYTExLDExLDAsMCwwLTUuMDYtMjAuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgLz4nKSxlLkNsclNoYXBlU2Nyb2xsPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zNCwxMS4xMlY2LjU4YTQuNSw0LjUsMCwwLDAtNC41LTQuNWgtMTZBNC41LDQuNSwwLDAsMCw5LDYuNTh2MjNhMi41LDIuNSwwLDEsMS01LDBWMjZINy4xOVYyNEgydjUuNUE0LjUsNC41LDAsMCww''@;'; put 'put ''LDYuNSwzNEgyNS41OGE0LjUsNC41LDAsMCwwLDQuNS00LjVWMTMuMTNoLTJWMjkuNTRhMi41LDIuNSwwLDAsMS0yLjUsMi41SDEwLjI0YTQuNDcsNC40NywwLDAsMCwuNzYtMi41di0yM2EyLjUsMi41LDAsMCwxLDUsMHY0LjU0Wm0tNC41LTdBMi41LDIuNSwwLDAsMSwzMiw2LjU4VjkuMTJI''@;'; put 'put ''MThWNi41OGE0LjQ4LDQuNDgsMCwwLDAtLjc2LTIuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjA4LDE1LjRWMjkuNTRhMi41LDIuNSwwLDAsMS0yLjUsMi41SDEwLjI0YTQuNDcsNC40NywwLDAsMCwu''@;'; put 'put ''NzYtMi41di0yM2EyLjUsMi41LDAsMCwxLDUsMHY0LjU0aDIuNjFBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlsLjQ0LS43NkgxOFY2LjU4YTQuNDgsNC40OCwwLDAsMC0uNzYtMi41SDIyLjRsMS4xNS0ySDEzLjVBNC41LDQuNSwwLDAsMCw5LDYuNTh2MjNhMi41LDIuNSwwLDEsMS01LDBWMjZI''@;'; put 'put ''Ny4xOVYyNEgydjUuNUE0LjUsNC41LDAsMCwwLDYuNSwzNEgyNS41OGE0LjUsNC41LDAsMCwwLDQuNS00LjVWMTUuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEu''@;'; put 'put ''MTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVhNy40OSw3LjQ5LDAsMCwxLTEuOTItLjI2djE2LjNhMi41LDIuNSwwLDAsMS0yLjUsMi41SDEwLjI0YTQuNDcsNC40NywwLDAsMCwuNzYtMi41di0yM2EyLjUsMi41LDAsMCwxLDUsMHY0LjU0aDguNTRh''@;'; put 'put ''Ny41LDcuNSwwLDAsMS0xLjM1LTJIMThWNi41OGE0LjQ4LDQuNDgsMCwwLDAtLjc2LTIuNWg1LjUyYTcuNDQsNy40NCwwLDAsMSwuODYtMkgxMy41QTQuNSw0LjUsMCwwLDAsOSw2LjU4djIzYTIuNSwyLjUsMCwxLDEtNSwwVjI2SDcuMTlWMjRIMnY1LjVBNC41LDQuNSwwLDAsMCw2LjUsMzRI''@;'; put 'put ''MjUuNThhNC41LDQuNSwwLDAsMCw0LjUtNC41di0xNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNCwxMS4xMlY2LjU4YTQuNSw0LjUsMCwwLDAtNC41LTQuNWgtMTZBNC41LDQuNSwwLDAsMCw5LDYuNThWMjRIMnY1LjVBNC41LDQuNSwwLDAsMCw2LjUsMzRIMjUu''@;'; put 'put ''NThhNC41LDQuNSwwLDAsMCw0LjUtNC41VjEzLjEzaC0yVjI5LjU0YTIuNSwyLjUsMCwwLDEtMi41LDIuNUgxMC4yNGE0LjQ3LDQuNDcsMCwwLDAsLjc2LTIuNXYtMjNhMi41LDIuNSwwLDAsMSw1LDB2NC41NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMjguMDgsMTUuNFYyOS41NGEyLjUsMi41LDAsMCwxLTIuNSwyLjVIMTAuMjRhNC40Nyw0LjQ3LDAsMCwwLC43Ni0yLjV2LTIzYTIuNSwyLjUsMCwwLDEsNSwwdjQuNTRoMi42MUEzLjY2LDMuNjYsMCwwLDEsMTksOS44OWw0LjUxLTcuOEgxMy41QTQuNSw0''@;'; put 'put ''LjUsMCwwLDAsOSw2LjU4VjI0SDJ2NS41QTQuNSw0LjUsMCwwLDAsNi41LDM0SDI1LjU4YTQuNSw0LjUsMCwwLDAsNC41LTQuNVYxNS40WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0y''@;'; put 'put ''Ni44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVhNy40OSw3LjQ5LDAsMCwxLTEuOTItLjI2djE2LjNhMi41LDIuNSwwLDAsMS0yLjUsMi41SDEwLjI0YTQuNDcsNC40NywwLDAsMCwuNzYtMi41di0yM2EyLjUsMi41LDAsMCwxLDUsMHY0LjU0aDgu''@;'; put 'put ''NTRhNy40Niw3LjQ2LDAsMCwxLS45Mi05SDEzLjVBNC41LDQuNSwwLDAsMCw5LDYuNThWMjRIMnY1LjVBNC41LDQuNSwwLDAsMCw2LjUsMzRIMjUuNThhNC41LDQuNSwwLDAsMCw0LjUtNC41di0xNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFk''@;'; put 'put ''Z2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksZS5DbHJTaGFwZUZpbGVTZXR0aW5ncz0oMCxhLmNsckljb25TVkcpKCc8''@;'; put 'put ''cGF0aCBkPSJNMzMuODMsMjMuNDNhMS4xNiwxLjE2LDAsMCwwLS43MS0xLjEybC0xLjY4LS41Yy0uMDktLjI0LS4xOC0uNDgtLjI5LS43MWwuNzgtMS40NGExLjE2LDEuMTYsMCwwLDAtLjIxLTEuMzdsLTEuNDItMS40MWExLjE2LDEuMTYsMCwwLDAtMS4zNy0uMmwtMS40NS43NmE3Ljg0LDcu''@;'; put 'put ''ODQsMCwwLDAtLjc2LS4zMmwtLjQ4LTEuNThhMS4xNSwxLjE1LDAsMCwwLTEuMTEtLjc3aC0yYTEuMTYsMS4xNiwwLDAsMC0xLjExLjgybC0uNDcsMS41NGE3Ljc2LDcuNzYsMCwwLDAtLjc3LjMybC0xLjQyLS43NmExLjE2LDEuMTYsMCwwLDAtMS4zNi4ybC0xLjQ1LDEuNGExLjE2LDEuMTYs''@;'; put 'put ''MCwwLDAtLjIxLDEuMzhMMTcuMDgsMjFhNy42NCw3LjY0LDAsMCwwLS4zMS43NGwtMS41OC40N2ExLjE1LDEuMTUsMCwwLDAtLjgzLDEuMTF2MmExLjE1LDEuMTUsMCwwLDAsLjgzLDEuMWwxLjU5LjQ3YTcuNTMsNy41MywwLDAsMCwuMzEuNzJsLS43OCwxLjQ2YTEuMTYsMS4xNiwwLDAsMCwu''@;'; put 'put ''MjEsMS4zN2wxLjQyLDEuNGExLjE2LDEuMTYsMCwwLDAsMS4zNy4yMWwxLjQ4LS43OGMuMjMuMTEuNDcuMi43Mi4yOUwyMiwzMy4xOGExLjE2LDEuMTYsMCwwLDAsMS4xMS44MWgyYTEuMTYsMS4xNiwwLDAsMCwxLjExLS44MmwuNDctMS41OGMuMjQtLjA4LjQ3LS4xOC43LS4yOWwxLjUuNzlh''@;'; put 'put ''MS4xNiwxLjE2LDAsMCwwLDEuMzYtLjJsMS40Mi0xLjRhMS4xNiwxLjE2LDAsMCwwLC4yMS0xLjM4bC0uNzktMS40NXEuMTYtLjM0LjI5LS42OUwzMywyNi41YTEuMTUsMS4xNSwwLDAsMCwuODMtMS4xMVptLTEuNiwxLjYzLTIuMTEuNjItLjEyLjQyYTYsNiwwLDAsMS0uNSwxLjE5bC0uMjEu''@;'; put 'put ''MzgsMSwxLjkxLTEsMS0yLTEtLjM3LjJhNi4yMSw2LjIxLDAsMCwxLTEuMi40OWwtLjQyLjEyLS42MywyLjA5SDIzLjQybC0uNjMtMi4wOC0uNDItLjEyYTYuMjMsNi4yMywwLDAsMS0xLjIxLS40OWwtLjM3LS4yLTEuOTQsMS0xLTEsMS0xLjk0LS4yMi0uMzhBNiw2LDAsMCwxLDE4LjE3LDI2''@;'; put 'put ''TDE4LDI1LjYzLDE2LDI1VjIzLjY5TDE4LDIzLjA4bC4xMy0uNDFhNS45NCw1Ljk0LDAsMCwxLC41My0xLjIzTDE4LjksMjFsLTEtMS44NSwxLS45NCwxLjg5LDEsLjM4LS4yMWE2LjIzLDYuMjMsMCwwLDEsMS4yNi0uNTJsLjQxLS4xMi42My0yaDEuMzhsLjYyLDIsLjQxLjEyQTYuMjEsNi4y''@;'; put 'put ''MSwwLDAsMSwyNy4xLDE5bC4zOC4yMSwxLjkyLTEsMSwxLTEsMS44OS4yMS4zOGE2LjA4LDYuMDgsMCwwLDEsLjUsMS4yMWwuMTIuNDIsMi4wNi42MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjEyLDIw''@;'; put 'put ''LjM1YTQsNCwwLDEsMCw0LjA4LDRBNC4wNiw0LjA2LDAsMCwwLDI0LjEyLDIwLjM1Wm0wLDYuNDZhMi40MywyLjQzLDAsMSwxLDIuNDgtMi40M0EyLjQ2LDIuNDYsMCwwLDEsMjQuMTIsMjYuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0xNC40OSwzMUg2VjVIMjZ2Ny44OWEzLjIsMy4yLDAsMCwxLDIsMS43MlY1YTIsMiwwLDAsMC0yLTJINkEyLDIsMCwwLDAsNCw1VjMxYTIsMiwwLDAsMCwyLDJIMTYuMjNsLTEuMS0xLjA4QTMuMTEsMy4xMSwwLDAsMSwxNC40OSwzMVoiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjEyLDIwLjM1YTQsNCwwLDEsMCw0LjA4LDRBNC4wNiw0LjA2LDAsMCwwLDI0LjEyLDIwLjM1Wm0wLDYuNDZhMi40MywyLjQzLDAsMSwxLDIuNDgtMi40M0EyLjQ2LDIuNDYsMCwwLDEsMjQu''@;'; put 'put ''MTIsMjYuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy44MywyMy40M2ExLjE2LDEuMTYsMCwwLDAtLjcxLTEuMTJsLTEuNjgtLjVjLS4wOS0uMjQtLjE4LS40OC0uMjkt''@;'; put 'put ''LjcxbC43OC0xLjQ0YTEuMTYsMS4xNiwwLDAsMC0uMjEtMS4zN2wtMS40Mi0xLjQxYTEuMTYsMS4xNiwwLDAsMC0xLjM3LS4ybC0xLjQ1Ljc2YTcuODQsNy44NCwwLDAsMC0uNzYtLjMybC0uNDgtMS41OGExLjE1LDEuMTUsMCwwLDAtMS4xMS0uNzdoLTJhMS4xNiwxLjE2LDAsMCwwLTEuMTEu''@;'; put 'put ''ODJsLS40NywxLjU0YTcuNzYsNy43NiwwLDAsMC0uNzcuMzJsLTEuNDItLjc2YTEuMTYsMS4xNiwwLDAsMC0xLjM2LjJsLTEuNDUsMS40YTEuMTYsMS4xNiwwLDAsMC0uMjEsMS4zOEwxNy4wOCwyMWE3LjY0LDcuNjQsMCwwLDAtLjMxLjc0bC0xLjU4LjQ3YTEuMTUsMS4xNSwwLDAsMC0uODMs''@;'; put 'put ''MS4xMXYyYTEuMTUsMS4xNSwwLDAsMCwuODMsMS4xbDEuNTkuNDdhNy41Myw3LjUzLDAsMCwwLC4zMS43MmwtLjc4LDEuNDZhMS4xNiwxLjE2LDAsMCwwLC4yMSwxLjM3bDEuNDIsMS40YTEuMTYsMS4xNiwwLDAsMCwxLjM3LjIxbDEuNDgtLjc4Yy4yMy4xMS40Ny4yLjcyLjI5TDIyLDMzLjE4''@;'; put 'put ''YTEuMTYsMS4xNiwwLDAsMCwxLjExLjgxaDJhMS4xNiwxLjE2LDAsMCwwLDEuMTEtLjgybC40Ny0xLjU4Yy4yNC0uMDguNDctLjE4LjctLjI5bDEuNS43OWExLjE2LDEuMTYsMCwwLDAsMS4zNi0uMmwxLjQyLTEuNGExLjE2LDEuMTYsMCwwLDAsLjIxLTEuMzhsLS43OS0xLjQ1cS4xNi0uMzQu''@;'; put 'put ''MjktLjY5TDMzLDI2LjVhMS4xNSwxLjE1LDAsMCwwLC44My0xLjExWm0tMS42LDEuNjMtMi4xMS42Mi0uMTIuNDJhNiw2LDAsMCwxLS41LDEuMTlsLS4yMS4zOCwxLDEuOTEtMSwxLTItMS0uMzcuMmE2LjIxLDYuMjEsMCwwLDEtMS4yLjQ5bC0uNDIuMTItLjYzLDIuMDlIMjMuNDJsLS42My0y''@;'; put 'put ''LjA4LS40Mi0uMTJhNi4yMyw2LjIzLDAsMCwxLTEuMjEtLjQ5bC0uMzctLjItMS45NCwxLTEtMSwxLTEuOTQtLjIyLS4zOEE2LDYsMCwwLDEsMTguMTcsMjZMMTgsMjUuNjMsMTYsMjVWMjMuNjlMMTgsMjMuMDhsLjEzLS40MWE1Ljk0LDUuOTQsMCwwLDEsLjUzLTEuMjNMMTguOSwyMWwtMS0x''@;'; put 'put ''Ljg1LDEtLjk0LDEuODksMSwuMzgtLjIxYTYuMjMsNi4yMywwLDAsMSwxLjI2LS41MmwuNDEtLjEyLjYzLTJoMS4zOGwuNjIsMiwuNDEuMTJBNi4yMSw2LjIxLDAsMCwxLDI3LjEsMTlsLjM4LjIxLDEuOTItMSwxLDEtMSwxLjg5LjIxLjM4YTYuMDgsNi4wOCwwLDAsMSwuNSwxLjIxbC4xMi40''@;'; put 'put ''MiwyLjA2LjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTQuNDksMzFINlY1SDIxLjg3TDIzLDNINkEyLDIsMCwwLDAsNCw1VjMxYTIsMiwwLDAsMCwyLDJIMTYuMjNsLTEu''@;'; put 'put ''MS0xLjA4QTMuMTEsMy4xMSwwLDAsMSwxNC40OSwzMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEz''@;'; put 'put ''SDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTMzLjgzLDIzLjQzYTEuMTYsMS4xNiwwLDAsMC0uNzEtMS4xMmwtMS42OC0uNWMtLjA5LS4yNC0uMTgtLjQ4LS4yOS0uNzFsLjc4LTEuNDRhMS4xNiwxLjE2LDAsMCwwLS4yMS0xLjM3bC0xLjQyLTEuNDFhMS4xNiwxLjE2LDAsMCwwLTEuMzctLjJsLTEuNDUuNzZhNy44NCw3Ljg0''@;'; put 'put ''LDAsMCwwLS43Ni0uMzJsLS40OC0xLjU4YTEuMTUsMS4xNSwwLDAsMC0xLjExLS43N2gtMmExLjE2LDEuMTYsMCwwLDAtMS4xMS44MmwtLjQ3LDEuNTRhNy43Niw3Ljc2LDAsMCwwLS43Ny4zMmwtMS40Mi0uNzZhMS4xNiwxLjE2LDAsMCwwLTEuMzYuMmwtMS40NSwxLjRhMS4xNiwxLjE2LDAs''@;'; put 'put ''MCwwLS4yMSwxLjM4TDE3LjA4LDIxYTcuNjQsNy42NCwwLDAsMC0uMzEuNzRsLTEuNTguNDdhMS4xNSwxLjE1LDAsMCwwLS44MywxLjExdjJhMS4xNSwxLjE1LDAsMCwwLC44MywxLjFsMS41OS40N2E3LjUzLDcuNTMsMCwwLDAsLjMxLjcybC0uNzgsMS40NmExLjE2LDEuMTYsMCwwLDAsLjIx''@;'; put 'put ''LDEuMzdsMS40MiwxLjRhMS4xNiwxLjE2LDAsMCwwLDEuMzcuMjFsMS40OC0uNzhjLjIzLjExLjQ3LjIuNzIuMjlMMjIsMzMuMThhMS4xNiwxLjE2LDAsMCwwLDEuMTEuODFoMmExLjE2LDEuMTYsMCwwLDAsMS4xMS0uODJsLjQ3LTEuNThjLjI0LS4wOC40Ny0uMTguNy0uMjlsMS41Ljc5YTEu''@;'; put 'put ''MTYsMS4xNiwwLDAsMCwxLjM2LS4ybDEuNDItMS40YTEuMTYsMS4xNiwwLDAsMCwuMjEtMS4zOGwtLjc5LTEuNDVxLjE2LS4zNC4yOS0uNjlMMzMsMjYuNWExLjE1LDEuMTUsMCwwLDAsLjgzLTEuMTFabS0xLjYsMS42My0yLjExLjYyLS4xMi40MmE2LDYsMCwwLDEtLjUsMS4xOWwtLjIxLjM4''@;'; put 'put ''LDEsMS45MS0xLDEtMi0xLS4zNy4yYTYuMjEsNi4yMSwwLDAsMS0xLjIuNDlsLS40Mi4xMi0uNjMsMi4wOUgyMy40MmwtLjYzLTIuMDgtLjQyLS4xMmE2LjIzLDYuMjMsMCwwLDEtMS4yMS0uNDlsLS4zNy0uMi0xLjk0LDEtMS0xLDEtMS45NC0uMjItLjM4QTYsNiwwLDAsMSwxOC4xNywyNkwx''@;'; put 'put ''OCwyNS42MywxNiwyNVYyMy42OUwxOCwyMy4wOGwuMTMtLjQxYTUuOTQsNS45NCwwLDAsMSwuNTMtMS4yM0wxOC45LDIxbC0xLTEuODUsMS0uOTQsMS44OSwxLC4zOC0uMjFhNi4yMyw2LjIzLDAsMCwxLDEuMjYtLjUybC40MS0uMTIuNjMtMmgxLjM4bC42MiwyLC40MS4xMkE2LjIxLDYuMjEs''@;'; put 'put ''MCwwLDEsMjcuMSwxOWwuMzguMjEsMS45Mi0xLDEsMS0xLDEuODkuMjEuMzhhNi4wOCw2LjA4LDAsMCwxLC41LDEuMjFsLjEyLjQyLDIuMDYuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMjQuMTIsMjAuMzVhNCw0LDAsMSwwLDQuMDgsNEE0LjA2LDQuMDYsMCwwLDAsMjQuMTIsMjAuMzVabTAsNi40NmEyLjQzLDIuNDMsMCwxLDEsMi40OC0yLjQzQTIuNDYsMi40NiwwLDAsMSwyNC4xMiwyNi44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC40OSwzMUg2VjVIMjMuMDhhNi45NCw2Ljk0LDAsMCwxLC42LTJINkEyLDIsMCwwLDAsNCw1VjMxYTIsMiwwLDAsMCwyLDJIMTYuMjNsLTEuMS0xLjA4QTMuMTEsMy4xMSwwLDAsMSwxNC40OSwzMVoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxNS4zM1YxMi43MWE3LDcsMCwwLDEtMi0xdjEuODhBMy4yLDMuMiwwLDAsMSwyOCwxNS4zM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0xNS41NSwzMUg2VjVIMjZ2OC43OGEyLjM3LDIuMzcsMCwwLDEsMiwxLjU3VjVhMiwyLDAsMCwwLTItMkg2QTIsMiwwLDAsMCw0LDVWMzFhMiwyLDAsMCwwLDIsMkgxNy4xNmwtMS0xQTIuMzgsMi4zOCwwLDAsMSwxNS41NSwzMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNTQsMjMuNDdsLTItLjYxYTcuMDYsNy4wNiwwLDAsMC0uNTgtMS40MWwxLTEuODZhLjM3LjM3LDAsMCwwLS4wNy0uNDRMMzAuNDEsMTcuN2EuMzcuMzcsMCwwLDAtLjQ0LS4wN2wtMS44NSwxQTcsNywwLDAs''@;'; put 'put ''MCwyNi42OSwxOGwtLjYxLTJhLjM3LjM3LDAsMCwwLS4zNi0uMjVoLTJhLjM3LjM3LDAsMCwwLS4zNS4yNmwtLjYxLDJhNyw3LDAsMCwwLTEuNDQuNjFsLTEuODItMWEuMzcuMzcsMCwwLDAtLjQ0LjA3bC0xLjQ3LDEuNDRhLjM3LjM3LDAsMCwwLS4wNy40NGwxLDEuODJhNyw3LDAsMCwwLS42''@;'; put 'put ''MSwxLjQ0bC0yLC42MWEuMzcuMzcsMCwwLDAtLjI2LjM1djJhLjM3LjM3LDAsMCwwLC4yNi4zNWwyLC42MWE3LDcsMCwwLDAsLjYxLDEuNDFsLTEsMS45YS4zNy4zNywwLDAsMCwuMDcuNDRMMTksMzJhLjM3LjM3LDAsMCwwLC40NC4wN2wxLjg3LTFhNy4wNiw3LjA2LDAsMCwwLDEuMzkuNTds''@;'; put 'put ''LjYxLDJhLjM3LjM3LDAsMCwwLC4zNS4yNmgyYS4zNy4zNywwLDAsMCwuMzUtLjI2bC42MS0yYTcsNywwLDAsMCwxLjM4LS41N2wxLjg5LDFhLjM3LjM3LDAsMCwwLC40NC0uMDdsMS40NS0xLjQ1YS4zNy4zNywwLDAsMCwuMDctLjQ0bC0xLTEuODhhNy4wNiw3LjA2LDAsMCwwLC41OC0xLjM5''@;'; put 'put ''bDItLjYxYS4zNy4zNywwLDAsMCwuMjYtLjM1VjIzLjgzQS4zNy4zNywwLDAsMCwzMy41NCwyMy40N1pNMjQuNywyOC4xOUEzLjMzLDMuMzMsMCwxLDEsMjgsMjQuODYsMy4zMywzLjMzLDAsMCwxLDI0LjcsMjguMTlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjU0LDIzLjQ3bC0yLS42MWE3LjA2LDcuMDYsMCwwLDAtLjU4LTEuNDFsMS0xLjg2YS4zNy4zNywwLDAsMC0uMDctLjQ0TDMwLjQxLDE3LjdhLjM3LjM3LDAsMCwwLS40NC0uMDdsLTEuODUsMUE3LDcsMCwwLDAsMjYuNjksMThsLS42MS0yYS4z''@;'; put 'put ''Ny4zNywwLDAsMC0uMzYtLjI1aC0yYS4zNy4zNywwLDAsMC0uMzUuMjZsLS42MSwyYTcsNywwLDAsMC0xLjQ0LjYxbC0xLjgyLTFhLjM3LjM3LDAsMCwwLS40NC4wN2wtMS40NywxLjQ0YS4zNy4zNywwLDAsMC0uMDcuNDRsMSwxLjgyYTcsNywwLDAsMC0uNjEsMS40NGwtMiwuNjFhLjM3LjM3''@;'; put 'put ''LDAsMCwwLS4yNi4zNXYyYS4zNy4zNywwLDAsMCwuMjYuMzVsMiwuNjFhNyw3LDAsMCwwLC42MSwxLjQxbC0xLDEuOWEuMzcuMzcsMCwwLDAsLjA3LjQ0TDE5LDMyYS4zNy4zNywwLDAsMCwuNDQuMDdsMS44Ny0xYTcuMDYsNy4wNiwwLDAsMCwxLjM5LjU3bC42MSwyYS4zNy4zNywwLDAsMCwu''@;'; put 'put ''MzUuMjZoMmEuMzcuMzcsMCwwLDAsLjM1LS4yNmwuNjEtMmE3LDcsMCwwLDAsMS4zOC0uNTdsMS44OSwxYS4zNy4zNywwLDAsMCwuNDQtLjA3bDEuNDUtMS40NWEuMzcuMzcsMCwwLDAsLjA3LS40NGwtMS0xLjg4YTcuMDYsNy4wNiwwLDAsMCwuNTgtMS4zOWwyLS42MWEuMzcuMzcsMCwwLDAs''@;'; put 'put ''LjI2LS4zNVYyMy44M0EuMzcuMzcsMCwwLDAsMzMuNTQsMjMuNDdaTTI0LjcsMjguMTlBMy4zMywzLjMzLDAsMSwxLDI4LDI0Ljg2LDMuMzMsMy4zMywwLDAsMSwyNC43LDI4LjE5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNS41NSwzMUg2VjVIMjEuODdMMjMsM0g2QTIsMiwwLDAsMCw0LDVWMzFhMiwyLDAsMCwwLDIsMkgxNy4xNmwtMS0xQTIuMzgsMi4zOCwwLDAsMSwxNS41NSwzMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTIt''@;'; put 'put ''LWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIGNsci1pLWJh''@;'; put 'put ''ZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjU0LDIzLjQ3bC0yLS42MWE3LjA2LDcuMDYsMCwwLDAtLjU4LTEuNDFsMS0xLjg2YS4zNy4zNywwLDAsMC0uMDctLjQ0TDMwLjQxLDE3LjdhLjM3LjM3LDAsMCwwLS40NC0uMDdsLTEuODUsMUE3LDcsMCwwLDAsMjYuNjksMThsLS42''@;'; put 'put ''MS0yYS4zNy4zNywwLDAsMC0uMzYtLjI1aC0yYS4zNy4zNywwLDAsMC0uMzUuMjZsLS42MSwyYTcsNywwLDAsMC0xLjQ0LjYxbC0xLjgyLTFhLjM3LjM3LDAsMCwwLS40NC4wN2wtMS40NywxLjQ0YS4zNy4zNywwLDAsMC0uMDcuNDRsMSwxLjgyYTcsNywwLDAsMC0uNjEsMS40NGwtMiwuNjFh''@;'; put 'put ''LjM3LjM3LDAsMCwwLS4yNi4zNXYyYS4zNy4zNywwLDAsMCwuMjYuMzVsMiwuNjFhNyw3LDAsMCwwLC42MSwxLjQxbC0xLDEuOWEuMzcuMzcsMCwwLDAsLjA3LjQ0TDE5LDMyYS4zNy4zNywwLDAsMCwuNDQuMDdsMS44Ny0xYTcuMDYsNy4wNiwwLDAsMCwxLjM5LjU3bC42MSwyYS4zNy4zNyww''@;'; put 'put ''LDAsMCwuMzUuMjZoMmEuMzcuMzcsMCwwLDAsLjM1LS4yNmwuNjEtMmE3LDcsMCwwLDAsMS4zOC0uNTdsMS44OSwxYS4zNy4zNywwLDAsMCwuNDQtLjA3bDEuNDUtMS40NWEuMzcuMzcsMCwwLDAsLjA3LS40NGwtMS0xLjg4YTcuMDYsNy4wNiwwLDAsMCwuNTgtMS4zOWwyLS42MWEuMzcuMzcs''@;'; put 'put ''MCwwLDAsLjI2LS4zNVYyMy44M0EuMzcuMzcsMCwwLDAsMzMuNTQsMjMuNDdaTTI0LjcsMjguMTlBMy4zMywzLjMzLDAsMSwxLDI4LDI0Ljg2LDMuMzMsMy4zMywwLDAsMSwyNC43LDI4LjE5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUuNTUsMzFINlY1SDIzLjA4YTYuOTQsNi45NCwwLDAsMSwuNi0ySDZBMiwyLDAsMCwwLDQsNVYzMWEyLDIsMCwwLDAsMiwySDE3LjE2bC0xLTFBMi4zOCwyLjM4LDAsMCwxLDE1LjU1LDMxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTUuMzZWMTIuNzFhNyw3LDAsMCwxLTItMXYyQTIuMzcsMi4zNywwLDAsMSwyOCwxNS4zNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2Vk''@;'; put 'put ''IiAvPicpLGUuQ2xyU2hhcGVUd29XYXlBcnJvd3M9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIzLjQzLDE2LjgzQTEsMSwwLDAsMCwyMiwxOC4yNEwyNS43MiwyMkg3LjgzYTEsMSwwLDAsMCwwLDJIMjUuNzJMMjIsMjcuN2ExLDEsMCwxLDAsMS40MiwxLjQxTDI5LjUzLDIzWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuMjQsMTguNDVhMSwxLDAsMCwwLC43MS0xLjcxTDEwLjI0LDEzSDI4LjEyYTEsMSwwLDAsMCwwLTJIMTAuMjRsMy43MS0zLjczYTEsMSwwLDAsMC0xLjQyLTEuNDFMNi40''@;'; put 'put ''MiwxMmw2LjExLDYuMTRBMSwxLDAsMCwwLDEzLjI0LDE4LjQ1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZVN3aXRjaD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNS43MSwxNEgyMC45MlYxMkg1LjcxTDkuNDIsOC4yN0Ex''@;'; put 'put ''LDEsMCwxLDAsOCw2Ljg2TDEuODksMTMsOCwxOS4xNGExLDEsMCwxLDAsMS40Mi0xLjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIxMiIgd2lkdGg9IjMiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyOCIgeT0iMTIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3LjkyLDE3''@;'; put 'put ''Ljg2YTEsMSwwLDAsMC0xLjQyLDEuNDFMMzAuMjEsMjNIMTV2MkgzMC4yMUwyNi41LDI4Ljc0YTEsMSwwLDEsMCwxLjQyLDEuNEwzNCwyNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTAiIHk9IjIzIiB3aWR0''@;'; put 'put ''aD0iMyIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjYiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxl''@;'; put 'put ''LkNsclNoYXBlVG9vbHM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIwLDE0SDE2YTEsMSwwLDAsMC0xLDF2NmExLDEsMCwwLDAsMSwxaDRhMSwxLDAsMCwwLDEtMVYxNUExLDEsMCwwLDAsMjAsMTRabS0uNCw2LjZIMTYuNFYxNS40aDMuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjcxLDEyLjM4LDI5LjYyLDguMjlBMSwxLDAsMCwwLDI4LjkyLDhoLTVWNi4wNUEyLDIsMCwwLDAsMjIsNEgxMy44NEExLjkyLDEuOTIsMCwwLDAsMTIsNi4wNVY4SDcuMDhhMSwxLDAsMCwwLS43MS4yOUwy''@;'; put 'put ''LjI5LDEyLjM4YTEsMSwwLDAsMC0uMjkuNzFWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEzLjA4QTEsMSwwLDAsMCwzMy43MSwxMi4zOFpNMTQsNmg4VjhIMTRaTTMyLDE3SDIydjEuOTNIMzJWMjhINFYxOC45M0gxNFYxN0g0VjEzLjVMNy41LDEwaDIxTDMyLDEzLjVaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2LjQiIHk9IjE1LjQiIHdpZHRoPSIzLjIiIGhlaWdodD0iNS4yIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTIxLDIxYTEsMSwwLDAsMS0xLDFIMTZhMSwxLDAsMCwxLTEtMVYxOUgydjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE5SDIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy43MSwxMi4z''@;'; put 'put ''OCwyOS42Miw4LjI5QTEsMSwwLDAsMCwyOC45Miw4aC01VjYuMDVBMiwyLDAsMCwwLDIyLDRIMTMuODRBMS45MiwxLjkyLDAsMCwwLDEyLDYuMDVWOEg3LjA4YTEsMSwwLDAsMC0uNzEuMjlMMi4yOSwxMi4zOGExLDEsMCwwLDAtLjI5LjcxVjE3SDE1VjE1YTEsMSwwLDAsMSwxLTFoNGExLDEs''@;'; put 'put ''MCwwLDEsMSwxdjJIMzRWMTMuMDhBMSwxLDAsMCwwLDMzLjcxLDEyLjM4Wk0yMiw4SDE0VjZoOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksZS5DbHJTaGFwZVdpbmRvd0Nsb3NlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOS40MSwxOGw3LjI5''@;'; put 'put ''LTcuMjlhMSwxLDAsMCwwLTEuNDEtMS40MUwxOCwxNi41OSwxMC43MSw5LjI5YTEsMSwwLDAsMC0xLjQxLDEuNDFMMTYuNTksMTgsOS4yOSwyNS4yOWExLDEsMCwxLDAsMS40MSwxLjQxTDE4LDE5LjQxbDcuMjksNy4yOWExLDEsMCwwLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZVdpbmRvd01heD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcuODksOWgtMjBhMiwyLDAsMCwwLTIsMlYyNWEyLDIsMCwwLDAsMiwyaDIwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDI3Ljg5LDlabS0yMCwx''@;'; put 'put ''NlYxMWgyMFYyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVXaW5kb3dNaW49KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI3LDI3SDlhMSwxLDAsMCwxLDAtMkgyN2ExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZVdpbmRvd1Jlc3RvcmU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI4LDhIMTRhMiwyLDAsMCwwLTIsMnYyaDJWMTBIMjhWMjBIMjZ2MmgyYTIsMiwwLDAsMCwyLTJWMTBBMiwyLDAsMCwwLDI4LDhaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiwxNEg4YTIsMiwwLDAsMC0yLDJWMjZhMiwyLDAsMCwwLDIsMkgyMmEyLDIsMCwwLDAsMi0yVjE2QTIsMiwwLDAsMCwyMiwxNFpNOCwyNlYxNkgyMlYyNloiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVab29tSW49KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE2LDRBMTIsMTIsMCwxLDAsMjgsMTYsMTIsMTIsMCwwLDAsMTYsNFptMCwyMS45MUExMCwxMCwwLDEsMSwyNiwxNiwxMCwxMCwwLDAsMSwx''@;'; put 'put ''NiwyNS45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjcxLDI5LjY5bC01LjE3LTUuMTdBMTMuNjgsMTMuNjgsMCwwLDEsMjUuMTUsMjZsNS4xNSw1LjE1YTEsMSwwLDAsMCwxLjQxLTEuNDFaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMSwxNUgxN1YxMWExLDEsMCwwLDAtMiwwdjRIMTFhMSwxLDAsMCwwLDAsMmg0djRhMSwxLDAsMCwwLDIsMFYxN2g0YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxlLkNsclNoYXBlWm9vbU91dD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTYsNEExMiwxMiwwLDEsMCwyOCwxNiwxMiwxMiwwLDAsMCwxNiw0Wm0wLDIxLjkxQTEwLDEwLDAsMSwxLDI2LDE2LDEwLDEwLDAsMCwxLDE2LDI1Ljkx''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNzEsMjkuNjlsLTUuMTctNS4xN0ExMy42OCwxMy42OCwwLDAsMSwyNS4xNSwyNmw1LjE1LDUuMTVhMSwxLDAsMCwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIwLDE1SDEyYTEsMSwwLDAsMCwwLDJoOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksZS5DbHJTaGFwZUtleT0oMCxh''@;'; put 'put ''LmNsckljb25TVkcpKCc8cmVjdCB4PSI2LjMzIiB5PSIxMC43MSIgd2lkdGg9IjkuNzEiIGhlaWdodD0iMi41NyIgcng9IjEiIHJ5PSIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNS4yMSAxMS40Mykgcm90YXRlKC00NSkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjM1LDE2LjhsLjYzLS42M0E1LDUsMCwwLDAsMjQsOS4xTDE4LjcxLDMuODRhNSw1LDAsMCwwLTcuMDcsMEwzLjA5LDEyLjM5YTUsNSwwLDAsMCwwLDcuMDdsNS4yNiw1LjI2YTUsNSwwLDAsMCw3LjA3LDBsLjQtLjRMMTgsMjYuNDho''@;'; put 'put ''My40NHYzaDMuNjl2MS42M0wyOCwzNGg2VjI3LjQ1Wk0zMiwzMkgyOC44NmwtMS43Ny0xLjc2di0yLjhIMjMuNDF2LTNIMTguOGwtMy0zTDE0LDIzLjMxYTMsMywwLDAsMS00LjI0LDBMNC41LDE4YTMsMywwLDAsMSwwLTQuMjRsOC41Ni04LjU2YTMsMywwLDAsMSw0LjI0LDBsNS4yNiw1LjI2''@;'; put 'put ''YTMsMywwLDAsMSwwLDQuMjRsLTIsMkwzMiwyOC4yOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNi4zMyIgeT0iMTAuNzEiIHdpZHRoPSI5LjcxIiBoZWlnaHQ9IjIuNTciIHJ4PSIxIiByeT0iMSIgdHJhbnNm''@;'; put 'put ''b3JtPSJ0cmFuc2xhdGUoLTUuMjEgMTEuNDMpIHJvdGF0ZSgtNDUpIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4zNSwxNi44bC42My0uNjNhNSw1LDAsMCwwLC42My0uNzdI''@;'; put 'put ''MjIuMjNsLS4yOSwwTDIwLjUyLDE2LjgsMzIsMjguMjhWMzJIMjguODZsLTEuNzctMS43NnYtMi44SDIzLjQxdi0zSDE4LjhsLTMtM0wxNCwyMy4zMWEzLDMsMCwwLDEtNC4yNCwwTDQuNSwxOGEzLDMsMCwwLDEsMC00LjI0bDguNTYtOC41NmEzLDMsMCwwLDEsNC4yNCwwTDIwLjEsOC4wNmwx''@;'; put 'put ''LTEuNzlMMTguNzEsMy44NGE1LDUsMCwwLDAtNy4wNywwTDMuMDksMTIuMzlhNSw1LDAsMCwwLDAsNy4wN2w1LjI2LDUuMjZhNSw1LDAsMCwwLDcuMDcsMGwuNC0uNEwxOCwyNi40OGgzLjQ0djNoMy42OXYxLjYzTDI4LDM0aDZWMjcuNDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYu''@;'; put 'put ''ODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjYuMzMiIHk9IjEwLjcxIiB3aWR0aD0iOS43MSIgaGVpZ2h0PSIyLjU3IiByeD0iMSIgcnk9IjEi''@;'; put 'put ''IHRyYW5zZm9ybT0idHJhbnNsYXRlKC01LjIxIDExLjQzKSByb3RhdGUoLTQ1KSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjM1LDE2LjhsLjYzLS42M0E1LDUsMCwwLDAsMjQs''@;'; put 'put ''OS4xTDE4LjcxLDMuODRhNSw1LDAsMCwwLTcuMDcsMEwzLjA5LDEyLjM5YTUsNSwwLDAsMCwwLDcuMDdsNS4yNiw1LjI2YTUsNSwwLDAsMCw3LjA3LDBsLjQtLjRMMTgsMjYuNDhoMy40NHYzaDMuNjl2MS42M0wyOCwzNGg2VjI3LjQ1Wk0zMiwzMkgyOC44NmwtMS43Ny0xLjc2di0yLjhIMjMu''@;'; put 'put ''NDF2LTNIMTguOGwtMy0zTDE0LDIzLjMxYTMsMywwLDAsMS00LjI0LDBMNC41LDE4YTMsMywwLDAsMSwwLTQuMjRsOC41Ni04LjU2YTMsMywwLDAsMSw0LjI0LDBsNS4yNiw1LjI2YTMsMywwLDAsMSwwLDQuMjRsLTIsMkwzMiwyOC4yOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yMy4zOCwxNi43N2wuNi0uNkE1LDUsMCwwLDAsMjQsOS4xTDE4LjcxLDMuODRhNSw1LDAsMCwwLTcuMDcsMEwzLjA5LDEyLjM5YTUsNSwwLDAsMCwwLDcuMDdsNS4yNiw1LjI2YTUsNSwwLDAsMCw3LjA3LDBsLjQ1LS40NSwyLjEsMi4yaDMuNDR2M2gzLjY5djEuNjNMMjgsMzRo''@;'; put 'put ''NlYyNy40NVptLTguNTYtNi41OUw5LjM3LDE1LjY0YTEsMSwwLDAsMS0xLjQxLDBsLS40LS40YTEsMSwwLDAsMSwwLTEuNDFMMTMsOC4zNmExLDEsMCwwLDEsMS40MSwwbC40LjRBMSwxLDAsMCwxLDE0LjgyLDEwLjE4Wk0zMiwzMkgyOC44NmwtMS43Ny0xLjc2di0yLjhIMjMuNDF2LTNIMTgu''@;'; put 'put ''OGwtMS41Mi0xLjYxTDIyLDE4LjE4LDMyLDI4LjI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4zOCwxNi43N2wuNi0uNmE1LDUsMCwwLDAsLjYzLS43N0gyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OWwy''@;'; put 'put ''LjA5LTMuNjJMMTguNzEsMy44NGE1LDUsMCwwLDAtNy4wNywwTDMuMDksMTIuMzlhNSw1LDAsMCwwLDAsNy4wN2w1LjI2LDUuMjZhNSw1LDAsMCwwLDcuMDcsMGwuNDUtLjQ1LDIuMSwyLjJoMy40NHYzaDMuNjl2MS42M0wyOCwzNGg2VjI3LjQ1Wm0tOC41Ni02LjU5TDkuMzcsMTUuNjRhMSwx''@;'; put 'put ''LDAsMCwxLTEuNDEsMGwtLjQtLjRhMSwxLDAsMCwxLDAtMS40MUwxMyw4LjM2YTEsMSwwLDAsMSwxLjQxLDBsLjQuNEExLDEsMCwwLDEsMTQuODIsMTAuMThaTTMyLDMySDI4Ljg2bC0xLjc3LTEuNzZ2LTIuOEgyMy40MXYtM0gxOC44bC0xLjUyLTEuNjFMMjIsMTguMTgsMzIsMjguMjhaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwx''@;'; put 'put ''LjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMzgsMTYuNzdsLjYtLjZBNSw1LDAsMCwwLDI0LDkuMUwx''@;'; put 'put ''OC43MSwzLjg0YTUsNSwwLDAsMC03LjA3LDBMMy4wOSwxMi4zOWE1LDUsMCwwLDAsMCw3LjA3bDUuMjYsNS4yNmE1LDUsMCwwLDAsNy4wNywwbC40NS0uNDUsMi4xLDIuMmgzLjQ0djNoMy42OXYxLjYzTDI4LDM0aDZWMjcuNDVabS04LjU2LTYuNTlMOS4zNywxNS42NGExLDEsMCwwLDEtMS40''@;'; put 'put ''MSwwbC0uNC0uNGExLDEsMCwwLDEsMC0xLjQxTDEzLDguMzZhMSwxLDAsMCwxLDEuNDEsMGwuNC40QTEsMSwwLDAsMSwxNC44MiwxMC4xOFpNMzIsMzJIMjguODZsLTEuNzctMS43NnYtMi44SDIzLjQxdi0zSDE4LjhsLTEuNTItMS42MUwyMiwxOC4xOCwzMiwyOC4yOFoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksZS5D''@;'; put 'put ''bHJTaGFwZUxpYnJhcnk9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjQ4LDI5LjYzLDI2Ljc0LDExLjgyYTIsMiwwLDAsMC0yLjU4LTEuMTZMMjEsMTEuODVWOC45MkExLjkyLDEuOTIsMCwwLDAsMTkuMDgsN0gxNFY0LjkyQTEuOTIsMS45MiwwLDAsMCwxMi4wOCwzSDVBMiwyLDAs''@;'; put 'put ''MCwwLDMsNVYzMmExLDEsMCwwLDAsMSwxSDIwYTEsMSwwLDAsMCwxLTFWMTkuMjdsNSwxMy4yMWExLDEsMCwwLDAsMS4yOS41OGw1LjYxLTIuMTRhMSwxLDAsMCwwLC41OC0xLjI5Wk0xMiw4LjgzVjMxSDVWNWg3Wk0xOSwzMUgxNFY5aDVabTguNTEtLjI1TDIxLjEzLDEzLjkybDMuNzQtMS40''@;'; put 'put ''Miw2LjM5LDE2LjgzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTIuNzUsM0g1LjI1QTEuMTUsMS4xNSwwLDAsMCw0LDRWMzNIMTRWNEExLjE1LDEuMTUsMCwwLDAsMTIuNzUsM1oiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNzcsMzEuMDlsLTYuOTQtMTguM2ExLDEsMCwwLDAtMS4yOS0uNThMMjIsMTMuNTlWOWExLDEsMCwwLDAtMS0xSDE2VjMzaDZWMTQuNjlMMjguOTMsMzNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVCb2x0PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMC41MiwzNGgtM2ExLDEsMCwwLDEtLjg4LTEuNDRMMTIuNTUsMjFINmExLDEsMCwwLDEtLjg1LTEuNTRsMTAuNjgtMTdBMSwxLDAsMCwxLDE2LjY0LDJIMzAuMDdhMSwxLDAs''@;'; put 'put ''MCwxLC43NywxLjY5TDIxLjc4LDE0aDUuMzhhMSwxLDAsMCwxLC43MywxLjY2bC0xNi42MywxOEExLDEsMCwwLDEsMTAuNTIsMzRaTTkuMTgsMzJoLjkxTDI0Ljg2LDE2SDE5LjU5YTEsMSwwLDAsMS0uNzctMS42OUwyNy44OCw0SDE3LjE5TDcuNzcsMTlIMTQuMmExLDEsMCwwLDEsLjg4LDEu''@;'; put 'put ''NDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC44LDIuMjlBLjQ5LjQ5LDAsMCwwLDMwLjM1LDJIMTYuNDJhLjUuNSwwLDAsMC0uNDIuMjNsLTEwLjcxLDE3QS40OS40OSwwLDAsMCw1LjcsMjBoNy42N0w2''@;'; put 'put ''LjYsMzMuMjVhLjUyLjUyLDAsMCwwLC40Ni43NWgzYS41LjUsMCwwLDAsLjM3LS4xNkwyOCwxNC44NWEuNS41LDAsMCwwLS4zNy0uODVIMjAuODlMMzAuNzIsMi44MkEuNDkuNDksMCwwLDAsMzAuOCwyLjI5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxl''@;'; put 'put ''LkNsclNoYXBlV3JlbmNoPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy4xOCwyNi4xMSwyMC4zNSwxMy4yOEE5LjI4LDkuMjgsMCwwLDAsNy41NCwyLjc5bC0xLjM0LjU5LDUuMzgsNS4zOEw4Ljc2LDExLjU5LDMuMzgsNi4yMSwyLjc5LDcuNTRBOS4yNyw5LjI3LDAsMCwwLDEzLjI4''@;'; put 'put ''LDIwLjM1TDI2LjExLDMzLjE4YTIsMiwwLDAsMCwyLjgzLDBsNC4yNC00LjI0QTIsMiwwLDAsMCwzMy4xOCwyNi4xMVptLTUuNjYsNS42NkwxMy44OCwxOC4xMmwtLjU3LjE2YTcuMjcsNy4yNywwLDAsMS05LjMxLTcsNy4yLDcuMiwwLDAsMSwuMTUtMS40OGw0LjYxLDQuNjEsNS42Ni01LjY2''@;'; put 'put ''TDkuODEsNC4xNWE3LjI3LDcuMjcsMCwwLDEsOC40Nyw5LjE2bC0uMTYuNTdMMzEuNzcsMjcuNTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI3LjEzIiBjeT0iMjcuMDkiIHI9IjEuMyIgdHJhbnNmb3Jt''@;'; put 'put ''PSJ0cmFuc2xhdGUoLTExLjIxIDI3LjEyKSByb3RhdGUoLTQ1KSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNzMsMjcuNzIsMTkuNjcsMTMuNjZhOC43OSw4Ljc5LDAsMCwwLTEyLTEwLjVMMTMsOC41Myw4''@;'; put 'put ''LjUzLDEzLDMuMTYsNy42N2E4Ljc5LDguNzksMCwwLDAsMTAuNSwxMkwyNy43MiwzMy43M2ExLjA3LDEuMDcsMCwwLDAsMS41LDBsNC41MS00LjUxQTEuMDcsMS4wNywwLDAsMCwzMy43MywyNy43MlpNMjksMjlhMS4zOCwxLjM4LDAsMSwxLDAtMkExLjM4LDEuMzgsMCwwLDEsMjksMjlaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVCdWxsc2V5ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMmExNS45MiwxNS45MiwwLDAsMC00LjI1LjU5bC43NywxLjg2YTE0LjA3LDE0LjA3LDAsMSwxLTEwLDEwbC0xLjg2LS43OEEx''@;'; put 'put ''NiwxNiwwLDEsMCwxOCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNy40NSwxNS43YTEwLjgxLDEwLjgxLDAsMSwwLDguMy04LjI2TDE2LjM3LDlBOS4yNCw5LjI0LDAsMSwxLDksMTYuMzJaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMi4wOWE0LjA4LDQuMDgsMCwwLDEtNC0zLjY4bC0xLjYzLS42OGMwLC4wOSwwLC4xOCwwLC4yN0E1LjY5LDUuNjksMCwxLDAsMTgsMTIuMzFoLS4yNEwxOC40MywxNEE0LjA3''@;'; put 'put ''LDQuMDcsMCwwLDEsMTgsMjIuMDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjIsMTMuMzRhLjUuNSwwLDAsMCwuMzUuMTVIMTIuMmw1LjM3LDUuMzdBMSwxLDAsMCwwLDE5LDE3LjQ0TDEzLjUzLDEyVjgu''@;'; put 'put ''NTFhLjUuNSwwLDAsMC0uMTUtLjM1TDcuNzksMi41N2EuNS41LDAsMCwwLS44NS4zNXY0SDNhLjUuNSwwLDAsMC0uMzUuODVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwxOC44NWExLDEsMCwwLDEtMS40''@;'; put 'put ''MSwwbC0zLTNBNCw0LDAsMCwwLDEzLjkxLDE4LDQuMDksNC4wOSwwLDEsMCwxOCwxMy45MWE0LDQsMCwwLDAtMiwuNTVsMywzQTEsMSwwLDAsMSwxOSwxOC44NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMmEx''@;'; put 'put ''NS45MiwxNS45MiwwLDAsMC00LjI1LjU5bDEuNiwzLjg5QTExLjg5LDExLjg5LDAsMSwxLDYuNDksMTUuM0wyLjYxLDEzLjY4QTE2LDE2LDAsMSwwLDE4LDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTgsMTUuOTRB''@;'; put 'put ''MTAuMTcsMTAuMTcsMCwxLDAsMTYsOGwxLjY5LDQuMTEuMzEsMEE1Ljg4LDUuODgsMCwxLDEsMTIuMTIsMThjMC0uMTIsMC0uMjMsMC0uMzVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTguMiwxMy4zNGEuNS41LDAs''@;'; put 'put ''MCwwLC4zNS4xNUgxMi4ybDIuMzUsMi4zNUE0LjA5LDQuMDksMCwwLDEsMTYsMTQuNDZMMTMuNTMsMTJWOC41MWEuNS41LDAsMCwwLS4xNS0uMzVMNy43OSwyLjU3YS41LjUsMCwwLDAtLjg1LjM1djRIM2EuNS41LDAsMCwwLS4zNS44NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTQiIC8+JyksZS5DbHJTaGFwZVRhcmdldD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsNy4yQTEwLjgsMTAuOCwwLDEsMCwyOC44LDE4LDEwLjgxLDEwLjgxLDAsMCwwLDE4LDcuMlptMCwyMEE5LjIsOS4yLDAsMSwxLDI3LjIsMTgsOS4yMSw5LjIxLDAsMCwxLDE4LDI3LjJaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxMi4zMUE1LjY5LDUuNjksMCwxLDAsMjMuNjksMTgsNS42OSw1LjY5LDAsMCwwLDE4LDEyLjMxWm0wLDkuNzdBNC4wOSw0LjA5LDAsMSwxLDIyLjA5LDE4LDQuMDksNC4wOSww''@;'; put 'put ''LDAsMSwxOCwyMi4wOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iNC4wOSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0xOCw3LjgzQTEwLjE3LDEwLjE3LDAsMSwwLDI4LjE3LDE4LDEwLjE4LDEwLjE4LDAsMCwwLDE4LDcuODNabTAsMTZBNS44OCw1Ljg4LDAsMSwxLDIzLjg4LDE4LDUuODgsNS44OCwwLDAsMSwxOCwyMy44OFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDI3LjgzQTExLjgzLDExLjgzLDAsMSwxLDI5LjgzLDE4LDExLjg1LDExLjg1LDAsMCwxLDE4LDI5LjgzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMyIgLz4nKSxlLkNsclNoYXBlRmxhbWU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjMsMTYuNjZjLTEuMTktMi4wOS03Ljk0LTE0LjE1LTcuOTQtMTQuMTVhMSwxLDAsMCwwLTEuNzUsMGwtNiwxMC42NC0zLTUuMjhhMSwxLDAsMCwwLTEuNzUsMFM1LjQsMTcuNzgsNC40Miwx''@;'; put 'put ''OS41QTkuMyw5LjMsMCwwLDAsMywyNC42MUMzLDI5LjcyLDUuODYsMzQsMTEuNjcsMzRIMjIuNDhDMjguMjgsMzQsMzMsMjksMzMsMjIuNzhBMTEuMTMsMTEuMTMsMCwwLDAsMzEuMywxNi42NlpNMjIuNDgsMzJIMTEuNzdDOC4xMywzMiw1LDI4LjY2LDUsMjQuNjFhNy40Myw3LjQzLDAsMCwx''@;'; put 'put ''LDEuMTYtNC4xM2MuNzMtMS4yOSw0LjA1LTcuMjEsNS42NS0xMC4wN2wzLDUuMjhhMSwxLDAsMCwwLC44Ny41MWgwYTEsMSwwLDAsMCwuODctLjUxTDIyLjQ5LDVjMS44NiwzLjMzLDYuMTUsMTEsNy4wNywxMi42QTkuMjQsOS4yNCwwLDAsMSwzMSwyMi43OEMzMSwyNy44NywyNy4xOCwzMiwy''@;'; put 'put ''Mi40OCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1Ljc1LDIxLjczYy0uNjUtMS4xNi00LjM4LTcuODEtNC4zOC03LjgxYS44LjgsMCwwLDAtMS40LDBsLTQuMiw3LjQ4LTEuNTktMi40OWEuOC44LDAs''@;'; put 'put ''MCwwLTEuMzUsMEw5LjM3LDI0LjM1YTQuMzUsNC4zNSwwLDAsMC0uODIsMi42LDQuNDksNC40OSwwLDAsMCwuNSwySDExYTMsMywwLDAsMS0uODMtMiwyLjc4LDIuNzgsMCwwLDEsLjU2LTEuNzNsMi44LTQuMzgsMS42NiwyLjZhLjguOCwwLDAsMCwxLjQxLS4xMiw3LjgyLDcuODIsMCwwLDEs''@;'; put 'put ''LjQtLjhMMjAuNjcsMTZsMy42OSw2LjU3YTQuODMsNC44MywwLDAsMSwuNzcsMi43MUE1LDUsMCwwLDEsMjMuNDYsMjloMi4xM2E2LjY4LDYuNjgsMCwwLDAsMS4xNC0zLjc0LDYuNDUsNi40NSwwLDAsMC0xLTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0y''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjMsMTYuMzJjLTEuMTktMi4wOS03Ljk0LTE0LjE1LTcuOTQtMTQuMTVhMSwxLDAsMCwwLTEuNzUsMGwtNiwxMC42NC0zLTUuMjhhMSwxLDAsMCwwLTEuNzUsMFM1LjQsMTcuNDMsNC40MiwxOS4xNUE5LjMsOS4zLDAsMCwwLDMsMjQuMjZj''@;'; put 'put ''MCw1LjExLDMuODgsOS42NSw4LjY3LDkuNzRIMjIuNDhDMjguMjgsMzQsMzMsMjguNjIsMzMsMjIuNDRBMTEuMTMsMTEuMTMsMCwwLDAsMzEuMywxNi4zMlpNMjEuNDgsMzJIMTQuNTRBNC42OCw0LjY4LDAsMCwxLDEwLDI3LjQxYTMuOTEsMy45MSwwLDAsMSwuNzUtMi4zNGwzLjM1LTUuMjFh''@;'; put 'put ''LjUuNSwwLDAsMSwuODQsMGwxLjc4LDIuNzcsMC0uMDhjLjYzLTEuMTEsNC4yMy03LjQ4LDQuMjMtNy40OGEuNS41LDAsMCwxLC44NywwczMuNiw2LjM4LDQuMjMsNy40OEE1LjgzLDUuODMsMCwwLDEsMjcsMjUuNzZDMjcsMzIsMjIuMSwzMiwyMS40OCwzMloiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZUhvdXJnbGFzcz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjksMzJIMjZWMjQuOTFhNi42Nyw2LjY3LDAsMCwwLTIuNjktNS4zM2wtMS4yOC0xQTYuMzYsNi4zNiwwLDAsMCwyMSwxOGgwYTYuMjksNi4yOSwwLDAsMCwx''@;'; put 'put ''LS42MmwxLjI4LTFBNi42Nyw2LjY3LDAsMCwwLDI2LDExLjA5VjRoM2ExLDEsMCwwLDAsMC0ySDdBMSwxLDAsMCwwLDcsNGgzdjcuMDlhNi42Nyw2LjY3LDAsMCwwLDIuNjksNS4zM2wxLjI4LDFBNi4zNiw2LjM2LDAsMCwwLDE1LDE4aDBhNi4yNyw2LjI3LDAsMCwwLTEsLjYybC0xLjI4LDFB''@;'; put 'put ''Ni42Nyw2LjY3LDAsMCwwLDEwLDI0LjkxVjMySDdhMSwxLDAsMCwwLDAsMkgyOWExLDEsMCwwLDAsMC0yWk0xMiwyNC45MWE0LjY2LDQuNjYsMCwwLDEsMS44OC0zLjcybDEuMjgtMWE0LjY2LDQuNjYsMCwwLDEsMS4xOC0uNjMsMSwxLDAsMCwwLC42NS0uOTRWMTcuMzNhMSwxLDAsMCwwLS42''@;'; put 'put ''NS0uOTQsNC42Nyw0LjY3LDAsMCwxLTEuMTktLjYzbC0xLjI4LTFBNC42Niw0LjY2LDAsMCwxLDEyLDExLjA5VjRIMjR2Ny4wOWE0LjY2LDQuNjYsMCwwLDEtMS44OCwzLjcybC0xLjI4LDFoMGE0LjY2LDQuNjYsMCwwLDEtMS4xOC42MywxLDEsMCwwLDAtLjY1Ljk0djEuMzRhMSwxLDAsMCww''@;'; put 'put ''LC42NS45NCw0LjY3LDQuNjcsMCwwLDEsMS4xOS42M2wxLjI4LDFBNC42Niw0LjY2LDAsMCwxLDI0LDI0LjkxVjMySDEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjksMzJIMjZWMjQuOTFhNi42Nyw2LjY3''@;'; put 'put ''LDAsMCwwLTIuNjktNS4zM2wtMS4yOC0xQTYuMzYsNi4zNiwwLDAsMCwyMSwxOGgwYTYuMjksNi4yOSwwLDAsMCwxLS42MmwxLjI4LTFhNi42NCw2LjY0LDAsMCwwLDEuMDktMUgyMi4yM2EzLjY0LDMuNjQsMCwwLDEtLjc4LS4wOWwtLjYyLjQ2aDBhNC42Niw0LjY2LDAsMCwxLTEuMTguNjMs''@;'; put 'put ''MSwxLDAsMCwwLS42NS45NHYxLjM0YTEsMSwwLDAsMCwuNjUuOTQsNC42Nyw0LjY3LDAsMCwxLDEuMTkuNjNsMS4yOCwxQTQuNjYsNC42NiwwLDAsMSwyNCwyNC45MVYzMkgxMlYyNC45MWE0LjY2LDQuNjYsMCwwLDEsMS44OC0zLjcybDEuMjgtMWE0LjY2LDQuNjYsMCwwLDEsMS4xOC0uNjMs''@;'; put 'put ''MSwxLDAsMCwwLC42NS0uOTRWMTcuMzNhMSwxLDAsMCwwLS42NS0uOTQsNC42Nyw0LjY3LDAsMCwxLTEuMTktLjYzbC0xLjI4LTFBNC42Niw0LjY2LDAsMCwxLDEyLDExLjA5VjRIMjIuNDVMMjMuNiwySDdBMSwxLDAsMCwwLDcsNGgzdjcuMDlhNi42Nyw2LjY3LDAsMCwwLDIuNjksNS4zM2wx''@;'; put 'put ''LjI4LDFBNi4zNiw2LjM2LDAsMCwwLDE1LDE4aDBhNi4yNyw2LjI3LDAsMCwwLTEsLjYybC0xLjI4LDFBNi42Nyw2LjY3LDAsMCwwLDEwLDI0LjkxVjMySDdhMSwxLDAsMCwwLDAsMkgyOWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjksMzJIMjZWMjQuOTFhNi42Nyw2LjY3LDAsMCwwLTIuNjktNS4zM2wtMS4yOC0xQTYuMzYsNi4zNiwwLDAsMCwyMSwx''@;'; put 'put ''OGgwYTYuMjksNi4yOSwwLDAsMCwxLS42MmwxLjI4LTFhNi42OCw2LjY4LDAsMCwwLDIuNTctNC4xNkE3LjUzLDcuNTMsMCwwLDEsMjQsMTAuNDl2LjYxYTQuNjYsNC42NiwwLDAsMS0xLjg4LDMuNzJsLTEuMjgsMWgwYTQuNjYsNC42NiwwLDAsMS0xLjE4LjYzLDEsMSwwLDAsMC0uNjUuOTR2''@;'; put 'put ''MS4zNGExLDEsMCwwLDAsLjY1Ljk0LDQuNjcsNC42NywwLDAsMSwxLjE5LjYzbDEuMjgsMUE0LjY2LDQuNjYsMCwwLDEsMjQsMjQuOTFWMzJIMTJWMjQuOTFhNC42Niw0LjY2LDAsMCwxLDEuODgtMy43MmwxLjI4LTFhNC42Niw0LjY2LDAsMCwxLDEuMTgtLjYzLDEsMSwwLDAsMCwuNjUtLjk0''@;'; put 'put ''VjE3LjMzYTEsMSwwLDAsMC0uNjUtLjk0LDQuNjcsNC42NywwLDAsMS0xLjE5LS42M2wtMS4yOC0xQTQuNjYsNC42NiwwLDAsMSwxMiwxMS4wOVY0SDIyLjc4YTcuNDUsNy40NSwwLDAsMSwuODktMkg3QTEsMSwwLDAsMCw3LDRoM3Y3LjA5YTYuNjcsNi42NywwLDAsMCwyLjY5LDUuMzNsMS4y''@;'; put 'put ''OCwxQTYuMzYsNi4zNiwwLDAsMCwxNSwxOGgwYTYuMjcsNi4yNywwLDAsMC0xLC42MmwtMS4yOCwxQTYuNjcsNi42NywwLDAsMCwxMCwyNC45MVYzMkg3YTEsMSwwLDAsMCwwLDJIMjlhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik02LjY3LDRo''@;'; put 'put ''MjJhMSwxLDAsMCwwLDAtMmgtMjJhMSwxLDAsMSwwLDAsMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguNjcsMzJoLTIyYTEsMSwwLDAsMCwwLDJoMjJhMSwxLDAsMSwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNTUsMTUuNjdBNi4wNyw2LjA3LDAsMCwwLDI1LDExLjEyVjZIMTAuMDZ2NS4xMmE2LjA3LDYuMDcsMCwwLDAsMi40NSw0LjU1LDExLjQ4LDExLjQ4LDAsMCwwLDIuOTEsMS43MnYxLjE2YTExLjQ4LDEx''@;'; put 'put ''LjQ4LDAsMCwwLTIuOTEsMS43Miw2LjA3LDYuMDcsMCwwLDAtMi40NSw0LjU1djUuMTJIMjVWMjQuODJhNi4wNyw2LjA3LDAsMCwwLTIuNDUtNC41NSwxMS40OCwxMS40OCwwLDAsMC0yLjkxLTEuNzJWMTcuMzlBMTEuNDgsMTEuNDgsMCwwLDAsMjIuNTUsMTUuNjdaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjY3LDMyaC0yMmExLDEsMCwwLDAsMCwyaDIyYTEsMSwwLDEsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTYuNjcsNEgyMi40NUwyMy42LDJINi42N2ExLDEsMCwxLDAsMCwyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi41MSwyMC4yN2E2LjA3LDYuMDcsMCww''@;'; put 'put ''LDAtMi40NSw0LjU1djUuMTJIMjVWMjQuODJhNi4wNyw2LjA3LDAsMCwwLTIuNDUtNC41NSwxMS40OCwxMS40OCwwLDAsMC0yLjkxLTEuNzJWMTcuMzlhMTEuNDgsMTEuNDgsMCwwLDAsMi45MS0xLjcybC4zLS4yN2gtLjYyQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5LDZIMTAuMDZ2''@;'; put 'put ''NS4xMmE2LjA3LDYuMDcsMCwwLDAsMi40NSw0LjU1LDExLjQ4LDExLjQ4LDAsMCwwLDIuOTEsMS43MnYxLjE2QTExLjQ4LDExLjQ4LDAsMCwwLDEyLjUxLDIwLjI3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjY3LDMyaC0yMmExLDEsMCwwLDAsMCwyaDIyYTEsMSwwLDEsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik02LjY3LDRIMjIuNzhhNy40NSw3LjQ1LDAsMCwxLC44OS0yaC0xN2ExLDEsMCwxLDAsMCwyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNTUs''@;'; put 'put ''MjAuMjdhMTEuNDgsMTEuNDgsMCwwLDAtMi45MS0xLjcyVjE3LjM5YTExLjQ4LDExLjQ4LDAsMCwwLDIuOTEtMS43MkE2LjI1LDYuMjUsMCwwLDAsMjUsMTEuNTUsNy40Nyw3LjQ3LDAsMCwxLDIyLjUsNkgxMC4wNnY1LjEyYTYuMDcsNi4wNywwLDAsMCwyLjQ1LDQuNTUsMTEuNDgsMTEuNDgs''@;'; put 'put ''MCwwLDAsMi45MSwxLjcydjEuMTZhMTEuNDgsMTEuNDgsMCwwLDAtMi45MSwxLjcyLDYuMDcsNi4wNywwLDAsMC0yLjQ1LDQuNTV2NS4xMkgyNVYyNC44MkE2LjA3LDYuMDcsMCwwLDAsMjIuNTUsMjAuMjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMt''@;'; put 'put ''LWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGUuQ2xyU2hhcGVOb0FjY2Vzcz0oMCxhLmNsckljb25TVkcpKCc8''@;'; put 'put ''cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcu''@;'; put 'put ''MTUsMTVIOC44NUExLjg1LDEuODUsMCwwLDAsNywxNi44NXYyLjI5QTEuODUsMS44NSwwLDAsMCw4Ljg1LDIxSDI3LjE1QTEuODUsMS44NSwwLDAsMCwyOSwxOS4xNVYxNi44NUExLjg1LDEuODUsMCwwLDAsMjcuMTUsMTVabS4yNSw0LjE1YS4yNS4yNSwwLDAsMS0uMjUuMjVIOC44NWEuMjUu''@;'; put 'put ''MjUsMCwwLDEtLjI1LS4yNVYxNi44NWEuMjUuMjUsMCwwLDEsLjI1LS4yNUgyNy4xNWEuMjUuMjUsMCwwLDEsLjI1LjI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwx''@;'; put 'put ''NiwxNiwwLDAsMCwxOCwyWk0yOS4xNSwyMEg2Ljg1QS44NS44NSwwLDAsMSw2LDE5LjE1VjE2Ljg1QS44NS44NSwwLDAsMSw2Ljg1LDE2SDI5LjE1YS44NS44NSwwLDAsMSwuODUuODV2Mi4yOUEuODUuODUsMCwwLDEsMjkuMTUsMjBaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVPcmdhbml6YXRpb249KDAsYS5jbHJJY29uU1ZHKSgnPHBvbHlnb24gcG9pbnRzPSI5LjggMTguOCAyNi4yIDE4LjggMjYuMiAyMS44OCAyNy44IDIxLjg4IDI3LjggMTcuMiAxOC44IDE3LjIgMTguOCAxNCAxNy4yIDE0IDE3LjIgMTcuMiA4LjIgMTcu''@;'; put 'put ''MiA4LjIgMjEuODggOS44IDIxLjg4IDkuOCAxOC44IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNCwyM0g0YTIsMiwwLDAsMC0yLDJ2NmEyLDIsMCwwLDAsMiwySDE0YTIsMiwwLDAsMCwyLTJWMjVBMiwyLDAs''@;'; put 'put ''MCwwLDE0LDIzWk00LDMxVjI1SDE0djZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwyM0gyMmEyLDIsMCwwLDAtMiwydjZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjI1QTIsMiwwLDAsMCwz''@;'; put 'put ''MiwyM1pNMjIsMzFWMjVIMzJ2NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLDEzSDIzYTIsMiwwLDAsMCwyLTJWNWEyLDIsMCwwLDAtMi0ySDEzYTIsMiwwLDAsMC0yLDJ2NkEyLDIsMCwwLDAsMTMsMTNa''@;'; put 'put ''bTAtOEgyM3Y2SDEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjkuOCAxOC44IDI2LjIgMTguOCAyNi4yIDIxLjg4IDI3LjggMjEuODggMjcuOCAxNy4yIDE4LjggMTcuMiAxOC44IDE0IDE3LjIg''@;'; put 'put ''MTQgMTcuMiAxNy4yIDguMiAxNy4yIDguMiAyMS44OCA5LjggMjEuODggOS44IDE4LjgiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyIiB5PSIyMyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjEwIiByeD0iMiIgcnk9IjIiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjMiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxMCIgcng9IjIiIHJ5PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHJlY3QgeD0iMTEiIHk9IjMiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxMCIgcng9IjIiIHJ5PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPicpLGUuQ2xyU2hhcGVCYWxhbmNlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNCwzM0gxMmExLDEsMCwwLDEs''@;'; put 'put ''MC0ySDI0YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE3IiB5PSI5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyMi41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCw3SDhBMSwxLDAsMCwxLDgsNUgyOGExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuOTMsMjQuNzlhNy4yMyw3LjIzLDAsMCwx''@;'; put 'put ''LTUuODEtMi44OWwtLjYtLjgsMS41OS0xLjIxLjYuOGE1LjI4LDUuMjgsMCwwLDAsOC40MiwwbC42LS44LDEuNTksMS4yMS0uNi44QTcuMjMsNy4yMywwLDAsMSwyNi45MywyNC43OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTMwLjUxLDE5LjI1YS44LjgsMCwwLDEtLjczLS40OEwyNi45MywxMi4ybC0yLjg1LDYuNTdhLjguOCwwLDAsMS0xLjQ3LS42NEwyNi4yLDkuODdhLjgzLjgzLDAsMCwxLDEuNDcsMGwzLjU4LDguMjZhLjguOCwwLDAsMS0uNzMsMS4xMloiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTkuNjgsMjQuNzlBNy4yMyw3LjIzLDAsMCwxLDMuODgsMjEuOWwtLjYtLjhMNC44NiwxOS45bC42LjhhNS4yOCw1LjI4LDAsMCwwLDguNDIsMGwuNi0uOCwxLjU5LDEuMjEtLjYuOEE3LjIzLDcuMjMsMCww''@;'; put 'put ''LDEsOS42OCwyNC43OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjI2LDE5LjI1YS44LjgsMCwwLDEtLjczLS40OEw5LjY4LDEyLjIsNi44NCwxOC43N2EuOC44LDAsMCwxLTEuNDctLjY0TDguOTUsOS44''@;'; put 'put ''N2EuODMuODMsMCwwLDEsMS40NywwTDE0LDE4LjEzYS44LjgsMCwwLDEtLjczLDEuMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz4nKSxlLkNsclNoYXBlSWRCYWRnZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMjJhNC4yMyw0LjIzLDAs''@;'; put 'put ''MSwwLTQuMjMtNC4yM0E0LjIzLDQuMjMsMCwwLDAsMTgsMjJabTAtNi44NmEyLjYzLDIuNjMsMCwxLDEtMi42MywyLjYzQTIuNjMsMi42MywwLDAsMSwxOCwxNS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTIyLDRhMiwyLDAsMCwwLTItMkgxNmEyLDIsMCwwLDAtMiwydjdoOFpNMjAsOUgxNlY0aDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMFYyNy43YTEuMTIsMS4xMiwwLDAsMC0uMjYtLjczQTkuOSw5''@;'; put 'put ''LjksMCwwLDAsMTgsMjMuNjksOS45LDkuOSwwLDAsMCwxMC4yNiwyN2ExLjEzLDEuMTMsMCwwLDAtLjI2LjczVjMwaDEuNlYyNy44N0E4LjMzLDguMzMsMCwwLDEsMTgsMjUuMjlhOC4zMyw4LjMzLDAsMCwxLDYuNCwyLjU5VjMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsNkgyNFY4aDRWMzJIOFY4aDRWNkg4QTIsMiwwLDAsMCw2LDhWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDI4LDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMmE0LjIzLDQuMjMsMCwxLDAtNC4yMy00LjIzQTQuMjMsNC4yMywwLDAsMCwxOCwyMlptMC02Ljg2YTIuNjMsMi42MywwLDEsMS0yLjYzLDIuNjNBMi42MywyLjYzLDAsMCwxLDE4LDE1LjE0WiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMjYsMjdhMS4xMywxLjEzLDAsMCwwLS4yNi43M1YzMGgxLjZWMjcuODdBOC4zMyw4LjMzLDAsMCwxLDE4LDI1LjI5YTguMzMsOC4zMywwLDAsMSw2LjQsMi41OVYz''@;'; put 'put ''MEgyNlYyNy43YTEuMTIsMS4xMiwwLDAsMC0uMjYtLjczQTkuOSw5LjksMCwwLDAsMTgsMjMuNjksOS45LDkuOSwwLDAsMCwxMC4yNiwyN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTE5LDkuODksMTkuNTYsOUgxNlY0aDRWOC4yNGwyLTMuNDZWNGEyLDIsMCwwLDAtMi0ySDE2YTIsMiwwLDAsMC0yLDJ2N2g0LjY0QTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTUuNFYzMkg4VjhoNFY2SDhBMiwyLDAsMCwwLDYsOFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTUuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIyYTQuMjMsNC4yMywwLDEsMC00LjIzLTQuMjNBNC4yMyw0LjIzLDAsMCwwLDE4LDIyWm0wLTYuODZhMi42MywyLjYzLDAsMSwxLTIuNjMsMi42M0Ey''@;'; put 'put ''LjYzLDIuNjMsMCwwLDEsMTgsMTUuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNGEyLDIsMCwwLDAtMi0ySDE2YTIsMiwwLDAsMC0yLDJ2N2g4Wk0yMCw5SDE2VjRoNFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yNiwyN2ExLjEzLDEuMTMsMCwwLDAtLjI2LjczVjMwaDEuNlYyNy44N0E4LjMzLDguMzMsMCwwLDEsMTgsMjUuMjlhOC4zMyw4LjMz''@;'; put 'put ''LDAsMCwxLDYuNCwyLjU5VjMwSDI2VjI3LjdhMS4xMiwxLjEyLDAsMCwwLS4yNi0uNzNBOS45LDkuOSwwLDAsMCwxOCwyMy42OSw5LjksOS45LDAsMCwwLDEwLjI2LDI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTI4LDEzLjIyVjMySDhWOGg0VjZIOEEyLDIsMCwwLDAsNiw4VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxMy41QTcuNDksNy40OSwwLDAsMSwyOCwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBj''@;'; put 'put ''eT0iMTcuNzciIHI9IjQuMjMiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEsNGEyLDIsMCwwLDAtMi0ySDE3YTIsMiwwLDAsMC0yLDJ2Nmg2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yNiwyN2ExLjEzLDEuMTMsMCwwLDAtLjI2LjczVjMwSDI2VjI3LjdhMS4xMiwxLjEyLDAsMCwwLS4yNi0uNzNBOS45LDkuOSwwLDAsMCwxOCwyMy42OSw5LjksOS45LDAsMCwwLDEwLjI2LDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCw2SDIzVjhoNVYzMkg4VjhoNVY2SDhBMiwyLDAsMCwwLDYsOFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMjgsNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksOS44OSwyMSw2LjVWNGEyLDIsMCwwLDAtMi0ySDE3YTIsMiwwLDAsMC0yLDJ2Nmg0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxjaXJj''@;'; put 'put ''bGUgY3g9IjE4IiBjeT0iMTcuNzciIHI9IjQuMjMiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMjYsMjdhMS4xMywxLjEzLDAsMCwwLS4yNi43M1YzMEgyNlYyNy43YTEuMTIsMS4x''@;'; put 'put ''MiwwLDAsMC0uMjYtLjczQTkuOSw5LjksMCwwLDAsMTgsMjMuNjksOS45LDkuOSwwLDAsMCwxMC4yNiwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTUuNFYzMkg4VjhoNVY2''@;'; put 'put ''SDhBMiwyLDAsMCwwLDYsOFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTUuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4''@;'; put 'put ''LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTcuNzciIHI9IjQuMjMiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIxLDRhMiwyLDAsMCwwLTItMkgxN2EyLDIsMCwwLDAtMiwy''@;'; put 'put ''djZoNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjI2LDI3YTEuMTMsMS4xMywwLDAsMC0uMjYuNzNWMzBIMjZWMjcuN2ExLjEyLDEuMTIsMCwwLDAtLjI2LS43M0E5LjksOS45LDAs''@;'; put 'put ''MCwwLDE4LDIzLjY5LDkuOSw5LjksMCwwLDAsMTAuMjYsMjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxMy4yMlYzMkg4VjhoNVY2SDhBMiwyLDAsMCwwLDYsOFYzMmEyLDIsMCww''@;'; put 'put ''LDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTMuNUE3LjQ5LDcuNDksMCwwLDEsMjgsMTMuMjJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGUuQ2xyU2hhcGVSZXBlYXQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik02LDE0LjE1QTMuMTcs''@;'; put 'put ''My4xNywwLDAsMSw5LjE3LDExSDI4LjRsLTQuMjgsNC41NGExLDEsMCwxLDAsMS40NiwxLjM3TDMyLjA5LDEwLDI1LjU4LDMuMDlhMSwxLDAsMSwwLTEuNDYsMS4zN0wyOC40LDlIOS4xN0E1LjE3LDUuMTcsMCwwLDAsNCwxNC4xNXY2LjFsMi0yLjEyWiIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMCwyMS44NUEzLjE3LDMuMTcsMCwwLDEsMjYuODMsMjVINy42bDQuMjgtNC41NGExLDEsMCwxLDAtMS40Ni0xLjM3TDMuOTEsMjZsNi41MSw2LjkxYTEsMSwwLDEsMCwxLjQ2LTEuMzdMNy42LDI3SDI2Ljgz''@;'; put 'put ''QTUuMTcsNS4xNywwLDAsMCwzMiwyMS44NXYtNi4xbC0yLDIuMTJaIi8+JyksZS5DbHJTaGFwZUZpbGVHcm91cD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLDM0SDEzYTEsMSwwLDAsMS0xLTFWMTFhMSwx''@;'; put 'put ''LDAsMCwxLDEtMUgzMWExLDEsMCwwLDEsMSwxVjMzQTEsMSwwLDAsMSwzMSwzNFpNMTQsMzJIMzBWMTJIMTRaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgeD0iMTYiIHk9IjE2IiB3aWR0aD0iMTIiIGhlaWdodD0iMiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjE2IiB5PSIyMCIgd2lkdGg9IjEyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4''@;'; put 'put ''PSIxNiIgeT0iMjQiIHdpZHRoPSIxMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgZD0iTTYsMjRWNEgyNFYzYTEsMSwwLDAsMC0xLTFINUExLDEsMCwwLDAsNCwzVjI1YTEsMSwwLDAsMCwxLDFINloi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiBkPSJNMTAsMjhWOEgyOFY3YTEsMSwwLDAsMC0xLTFIOUExLDEsMCwwLDAsOCw3VjI5YTEsMSwwLDAsMCwxLDFoMVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMSwxMEgxM2ExLDEsMCwwLDAtMSwxVjMzYTEsMSwwLDAsMCwxLDFIMzFhMSwxLDAsMCwwLDEtMVYxMUExLDEsMCwwLDAsMzEsMTBaTTI4LDI2SDE2VjI0SDI4Wm0wLTRIMTZWMjBIMjhabTAtNEgxNlYxNkgyOFoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik02LDI0VjRIMjRWM2ExLDEsMCwwLDAtMS0xSDVBMSwxLDAsMCwwLDQsM1YyNWExLDEsMCwwLDAsMSwxSDZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0zIiBkPSJNMTAsMjhWOEgyOFY3YTEsMSwwLDAsMC0xLTFIOUExLDEsMCwwLDAsOCw3VjI5YTEsMSwwLDAsMCwxLDFoMVoiLz4nKSxlLkNsclNoYXBlUGFwZXJjbGlwPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIiBkPSJNOC40MiwzMi42QTYuMyw2LjMsMCwwLDEsNCwzMC43OWwtLjEzLS4xM0E2LjIsNi4yLDAsMCwxLDIsMjYuMjIsNi43Nyw2Ljc3LDAsMCwxLDQsMjEuNEwxOS41LDYuMDdhOC42Nyw4LjY3LDAsMCwxLDEyLjE1LS4zNUE4LDgsMCwwLDEsMzQsMTEuNDRhOSw5LDAsMCwxLTIuNyw2''@;'; put 'put ''LjM2TDE3LjM3LDMxLjZBMSwxLDAsMSwxLDE2LDMwLjE4TDI5Ljg5LDE2LjM4QTcsNywwLDAsMCwzMiwxMS40NGE2LDYsMCwwLDAtMS43Ni00LjMsNi42Nyw2LjY3LDAsMCwwLTkuMzQuMzVMNS40NSwyMi44MkE0Ljc4LDQuNzgsMCwwLDAsNCwyNi4yMmE0LjIxLDQuMjEsMCwwLDAsMS4yNCwz''@;'; put 'put ''bC4xMy4xM2E0LjY0LDQuNjQsMCwwLDAsNi41LS4yMUwyNS4yMiwxNS45NEEyLjcsMi43LDAsMCwwLDI2LDE0YTIuMzUsMi4zNSwwLDAsMC0uNjktMS42OCwyLjYxLDIuNjEsMCwwLDAtMy42Ni4xM2wtOS4yLDkuMTJhMSwxLDAsMSwxLTEuNDEtMS40MkwyMC4yOCwxMWE0LjYyLDQuNjIsMCww''@;'; put 'put ''LDEsNi40OC0uMTNBNC4zMyw0LjMzLDAsMCwxLDI4LDE0YTQuNjgsNC42OCwwLDAsMS0xLjQxLDMuMzRMMTMuMjgsMzAuNThBNi45MSw2LjkxLDAsMCwxLDguNDIsMzIuNloiLz4nKSxlLkNsclNoYXBlU2hyaW5rPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsMTVIMjIuNDFsOS4yNS05LjI1YTEsMSwwLDAsMC0xLjQxLTEuNDFMMjEsMTMuNTlWNGExLDEsMCwwLDAtMiwwVjE3SDMyYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMiIgZD0iTTQsMTlhMSwxLDAsMCwwLDAsMmg5LjU5TDQuMzMsMzAuMjVhMSwxLDAsMSwwLDEuNDEsMS40MUwxNSwyMi40MVYzMmExLDEsMCwwLDAsMiwwVjE5WiIvPicpLGUuQ2xyU2hhcGVBY2Nlc3NpYmlsaXR5MT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTQu''@;'; put 'put ''NDQsMzEuOTRhNy4zMSw3LjMxLDAsMCwxLTUuNy0xMS44OEw3LjMyLDE4LjY0YTkuMyw5LjMsMCwwLDAsMTMuMSwxMy4xMUwxOSwzMC4zM0E3LjI5LDcuMjksMCwwLDEsMTQuNDQsMzEuOTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0yNS4zNiwxLjY3YTQuMTIsNC4xMiwwLDEsMCw0LjExLDQuMTFBNC4xMiw0LjEyLDAsMCwwLDI1LjM2LDEuNjdabTAsNi4yM2EyLjEyLDIuMTIsMCwxLDEsMi4xMS0yLjEyQTIuMTIsMi4xMiwwLDAsMSwyNS4zNiw3LjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi41NiwxOC4xOGgtNWExLDEsMCwwLDAtLjI0LjA1bDMuMDktMy41NWEyLjgzLDIuODMsMCwwLDAtLjY5LTQuMzNsLTgtNC42YTEsMSwwLDAsMC0xLjEyLjA4TDkuODMsOS41OEExLDEsMCwwLDAsOS42NiwxMWEx''@;'; put 'put ''LDEsMCwwLDAsLjc5LjM4LDEsMSwwLDAsMCwuNjEtLjIxbDQuMjctMy4zNCwzLjExLDEuNzctNS4wOCw1Ljc4aDBhOS4yOCw5LjI4LDAsMCwwLTQuNTMsMS44M2wxLjQzLDEuNDNBNy4zLDcuMywwLDAsMSwyMC40MiwyOC44MWwxLjQyLDEuNDNhOS4yNyw5LjI3LDAsMCwwLC43Ny0xMC4wNmgy''@;'; put 'put ''LjgybC0uNzcsNi41MWExLDEsMCwwLDAsLjg4LDEuMTFoLjEyYTEsMSwwLDAsMCwxLS44OGwuOS03LjYyYTEsMSwwLDAsMC0uMjUtLjc4QTEsMSwwLDAsMCwyNi41NiwxOC4xOFptLTYuMzctNy41NiwyLjUyLDEuNDZhLjc5Ljc5LDAsMCwxLC40LjU5LjgxLjgxLDAsMCwxLS4yLjY5TDE5Ljc1''@;'; put 'put ''LDE3QTkuMTcsOS4xNywwLDAsMCwxNiwxNS40NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0Ljc3LDMxLjk0YTcuMzEsNy4zMSwwLDAsMS01LjctMTEuODhMNy42NSwxOC42NGE5LjMsOS4zLDAsMCwwLDEz''@;'; put 'put ''LjEsMTMuMTFsLTEuNDItMS40MkE3LjI5LDcuMjksMCwwLDEsMTQuNzcsMzEuOTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LjY1LDIuMWEzLjEyLDMuMTIsMCwxLDAsMy4xMSwzLjEyQTMuMTIsMy4xMiwwLDAs''@;'; put 'put ''MCwyNi42NSwyLjFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LjgxLDE4LjE4SDIxLjQ3cS0uMzEtLjMzLS42Ni0uNjNsNC4zOC00Ljg2YTIuMTQsMi4xNCwwLDAsMC0uNTMtMy4yN0wyMC45LDcuMjNsMCwwTDE3''@;'; put 'put ''LjA1LDUuMDdhMSwxLDAsMCwwLTEuMTEuMDhMMTEuMTUsOC45YTEsMSwwLDAsMCwxLjIzLDEuNThsNC4yNy0zLjM0LDIuODcsMS42M0wxMy42LDE1LjM5YTkuMzMsOS4zMywwLDAsMC00LjQ0LDEuODJsMS40MiwxLjQzQTcuMyw3LjMsMCwwLDEsMjAuNzUsMjguODFsMS40MywxLjQzQTkuMjcs''@;'; put 'put ''OS4yNywwLDAsMCwyMywyMC4xOGgyLjc0bC0uNzcsNi41MWExLDEsMCwwLDAsLjg3LDEuMTFoLjEyYTEsMSwwLDAsMCwxLS44OGwuOS03LjYyYTEsMSwwLDAsMC0uMjUtLjc4QTEsMSwwLDAsMCwyNi44MSwxOC4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+''@;'; put 'put ''JyksZS5DbHJTaGFwZUFjY2Vzc2liaWxpdHkyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMC4wNiwxMWgtMjRhMSwxLDAsMSwwLDAsMkgxNHY5LjY1czAsMCwwLDBsLTMuNzUsMTBhMSwxLDAsMCwwLC41OCwxLjI5LDEuMTMsMS4xMywwLDAsMCwuMzYuMDYsMSwxLDAsMCwwLC45My0u''@;'; put 'put ''NjVMMTUuNjIsMjRoNC43NmwzLjUyLDkuMzVhMSwxLDAsMCwwLC45My42NSwxLjEzLDEuMTMsMCwwLDAsLjM2LS4wNiwxLDEsMCwwLDAsLjU4LTEuMjlMMjIsMjIuNjhzMCwwLDAsMFYxM2g4LjA2YTEsMSwwLDEsMCwwLTJaTTIwLDIySDE2VjEzaDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxMGE0LDQsMCwxLDAtNC00QTQsNCwwLDAsMCwxOCwxMFptMC02YTIsMiwwLDEsMS0yLDJBMiwyLDAsMCwxLDE4LDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE3Ljk2IiBjeT0iNSIgcj0iMyIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMEg2YTEsMSwwLDAsMCwwLDJoOHY4LjM2czAsMCwwLDBMMTAuMTEsMzMuMTdhMSwxLDAs''@;'; put 'put ''MCwwLC42NiwxLjI1LDEuNTUsMS41NSwwLDAsMCwuMjksMCwxLDEsMCwwLDAsMS0uNzFsMy4yOS0xMC44NGg1LjM4TDI0LDMzLjc1YTEsMSwwLDAsMCwxLC43MSwxLjU1LDEuNTUsMCwwLDAsLjI5LDAsMSwxLDAsMCwwLC42Ni0xLjI1TDIyLDIwLjRzMCwwLDAsMFYxMmg4YTEsMSwwLDAsMCww''@;'; put 'put ''LTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVTb3J0Qnk9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI4LjU0LDEzSDcuNDZhMSwxLDAsMCwxLDAtMkgyOC41NGExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEuMTcsMTlINy40NmExLDEsMCwwLDEsMC0ySDIxLjE3YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0xMy43NCwyNUg3LjQ2YTEsMSwwLDAsMSwwLTJoNi4yOGExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksZS5DbHJTaGFwZUNvbGxhcHNlQ2FyZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMsMjFIM2ExLDEsMCww''@;'; put 'put ''LDAtMSwxdjZhMSwxLDAsMCwwLDEsMUgzM2ExLDEsMCwwLDAsMS0xVjIyQTEsMSwwLDAsMCwzMywyMVptLTEsNkg0VjIzSDMyWiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjAuMjJsNS42NS01LjY1YS44''@;'; put 'put ''MS44MSwwLDAsMCwwLTEuMTQuOC44LDAsMCwwLTEuMTMsMEwxOCwxOGwtNC41Mi00LjUyYS44LjgsMCwwLDAtMS4xMywwLC44MS44MSwwLDAsMCwwLDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwx''@;'; put 'put ''NC4yMmw1LjY1LTUuNjVhLjgxLjgxLDAsMCwwLDAtMS4xNC44LjgsMCwwLDAtMS4xMywwTDE4LDEyLDEzLjQ4LDcuNDNhLjguOCwwLDAsMC0xLjEzLDAsLjgxLjgxLDAsMCwwLDAsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHJlY3QgeD0iMiIgeT0iMjIiIHdpZHRoPSIzMiIgaGVpZ2h0PSI4IiByeD0iMSIgcnk9IjEiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjAuN2wtNS43OS01Ljc5YTEsMSwwLDAsMSwwLTEuNDEsMSwxLDAs''@;'; put 'put ''MCwxLDEuNDEsMEwxOCwxNy44N2w0LjM4LTQuMzdhMSwxLDAsMCwxLDEuNDEsMCwxLDEsMCwwLDEsMCwxLjQxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxNC41LDEyLjIxLDguNzFhMSwxLDAsMCwxLDAtMS40''@;'; put 'put ''MiwxLDEsMCwwLDEsMS40MSwwTDE4LDExLjY3bDQuMzgtNC4zOGExLDEsMCwwLDEsMS40MSwwLDEsMSwwLDAsMSwwLDEuNDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLGUuQ2xyU2hhcGVFeHBhbmRDYXJkPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9''@;'; put 'put ''Ik0zMyw2SDNBMSwxLDAsMCwwLDIsN1YyOWExLDEsMCwwLDAsMSwxSDMzYTEsMSwwLDAsMCwxLTFWN0ExLDEsMCwwLDAsMzMsNlpNMzIsMjhINFY4SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy40OCwx''@;'; put 'put ''NS44NiwxOCwxMS4zNGw0LjUyLDQuNTJhLjc3Ljc3LDAsMCwwLC41Ni4yNC44MS44MSwwLDAsMCwuNTctMS4zN0wxOCw5LjA4bC01LjY1LDUuNjVhLjguOCwwLDEsMCwxLjEzLDEuMTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTEzLjQ4LDIxLjg2LDE4LDE3LjM0bDQuNTIsNC41MmEuNzcuNzcsMCwwLDAsLjU2LjI0LjgxLjgxLDAsMCwwLC41Ny0xLjM3TDE4LDE1LjA4bC01LjY1LDUuNjVhLjguOCwwLDEsMCwxLjEzLDEuMTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLDZIM0ExLDEsMCwwLDAsMiw3VjI5YTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEtMVY3QTEsMSwwLDAsMCwzMyw2Wk0yMy43OSwyMS40MWExLDEsMCwwLDEtMS40MSwwTDE4LDE3bC00LjM4LDQuMzhhMSwxLDAsMCwxLTEuNDEsMCwx''@;'; put 'put ''LDEsMCwwLDEsMC0xLjQyTDE4LDE0LjIsMjMuNzksMjBBMSwxLDAsMCwxLDIzLjc5LDIxLjQxWm0wLTYuMmExLDEsMCwwLDEtMS40MSwwTDE4LDEwLjgzbC00LjM4LDQuMzhhMSwxLDAsMCwxLTEuNDEsMCwxLDEsMCwwLDEsMC0xLjQyTDE4LDhsNS43OSw1Ljc5QTEsMSwwLDAsMSwyMy43OSwx''@;'; put 'put ''NS4yMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZUJyaWVmY2FzZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsMjhhMCwwLDAsMCwxLDAsMEg0VjIxLjMyYTcuMSw3LjEsMCwwLDEtMi0xLjQzVjI4YTIsMiwwLDAsMCwyLDJI''@;'; put 'put ''MzJhMiwyLDAsMCwwLDItMlYxOS44OWE2Ljc0LDYuNzQsMCwwLDEtMiwxLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG48cGF0aCBkPSJNMjUsMjIuNGExLDEsMCwwLDAsMS0xVjE1Ljk0SDI0VjE4SDE0djJIMjR2MS40QTEsMSwwLDAsMCwyNSwy''@;'; put 'put ''Mi40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG48cGF0aCBkPSJNMzMsNkgyNFY0LjM4QTIuNDIsMi40MiwwLDAsMCwyMS41NSwyaC03LjFBMi40MiwyLjQyLDAsMCwwLDEyLDQuMzhWNkgzQTEsMSwwLDAsMCwyLDd2OGE1LDUsMCwwLDAsNSw1aDN2''@;'; put 'put ''MS40YTEsMSwwLDAsMCwyLDBWMTUuOTRIMTBWMThIN2EzLDMsMCwwLDEtMy0zVjhIMzJ2N2EzLDMsMCwwLDEtMywzSDI4djJoMWE1LDUsMCwwLDAsNS01VjdBMSwxLDAsMCwwLDMzLDZaTTIyLDZIMTRWNC40M0EuNDUuNDUsMCwwLDEsMTQuNDUsNGg3LjExYS40My40MywwLDAsMSwuNDQuNDJa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbjxwYXRoIGQ9Ik0zMCwxOEE0LjA2LDQuMDYsMCwwLDAsMzQsMTRWNkgyNFY0LjQzQTIuNDQsMi40NCwwLDAsMCwyMS41NSwyaC03LjFBMi40NCwyLjQ0LDAsMCwwLDEyLDQuNDNWNkgydjhBNC4wNiw0LjA2''@;'; put 'put ''LDAsMCwwLDYuMDUsMThoNFYxNS45MmgydjUuN2ExLDEsMCwxLDEtMiwwVjIwLjA2SDYuMDZBNi4wNiw2LjA2LDAsMCwxLDIsMTguNDl2OS40NWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTguNDlhNiw2LDAsMCwxLTQuMDYsMS41N0gyOFYxOFpNMTQsNC40M0EuNDUuNDUsMCww''@;'; put 'put ''LDEsMTQuNDUsNGg3LjFhLjQ1LjQ1LDAsMCwxLC40NS40M1Y2SDE0Wk0yNiwyMS42MmExLDEsMCwxLDEtMiwwVjIwLjA2SDE0VjE4SDI0VjE1LjkyaDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVDb2xvclBpY2tlcj0oMCxhLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMzMsMTAuMDVhNS4wNyw1LjA3LDAsMCwwLC4xLTcuMTdBNS4wNiw1LjA2LDAsMCwwLDI2LDNMMjAuNzgsOC4xNWEyLjEzLDIuMTMsMCwwLDEtMywwbC0uNjctLjY3TDE1LjcyLDguOTIsMjcuMDgsMjAuMjhsMS40Mi0xLjQyLS42Ny0uNjdhMi4xMywyLjEzLDAs''@;'; put 'put ''MCwxLDAtM1pNMjYuNDQsMTMuOGE0LjA3LDQuMDcsMCwwLDAtMS4wOCwxLjkybC01LjA4LTUuMDhBNC4wNyw0LjA3LDAsMCwwLDIyLjIsOS41Nmw1LjE2LTUuMTdhMy4wOSwzLjA5LDAsMCwxLDQuMzUtLjEsMy4wOSwzLjA5LDAsMCwxLS4xLDQuMzVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik03LjMsMzEuNTFhMiwyLDAsMSwxLTIuODMtMi44M0wxOC41OCwxNC41N2wtMS40Mi0xLjQxTDMuMDUsMjcuMjdhNCw0LDAsMCwwLS42OCw0LjhMLjg5LDMzLjU1QTEsMSwwLDAsMCwuODksMzVhMSwxLDAsMCwwLDEuNDIsMGwxLjQz''@;'; put 'put ''LTEuNDRhMy45MywzLjkzLDAsMCwwLDIuMDkuNiw0LjA2LDQuMDYsMCwwLDAsMi44OC0xLjJMMjIuODIsMTguODEsMjEuNDEsMTcuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuPHBhdGggZD0iTTMzLjczLDIuMTFhNC4wOSw0LjA5LDAsMCwwLTUu''@;'; put 'put ''NzYuMUwyMi44MSw3LjM4YTMuMTMsMy4xMywwLDAsMS00LjMuMTFMMTcuMDksOC45MSwyNywxOC43OWwxLjQyLTEuNDJBMy4xOCwzLjE4LDAsMCwxLDI4LjQ2LDEzbDUuMTctNS4xN0E0LjA4LDQuMDgsMCwwLDAsMzMuNzMsMi4xMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEiIC8+XG48cGF0aCBkPSJNMjIuMTgsMTYuNzksNy40NiwzMS41MWEyLDIsMCwxLDEtMi44Mi0yLjgzTDE5LjM1LDE0bC0xLjQxLTEuNDFMMy4yMiwyNy4yN2E0LDQsMCwwLDAtLjY4LDQuOEwxLjA2LDMzLjU1YTEsMSwwLDAsMCwwLDEuNDEsMSwxLDAsMCwwLDEuNDEsMGwxLjQ0LTEu''@;'; put 'put ''NDRhMy45MywzLjkzLDAsMCwwLDIuMDkuNiw0LjA2LDQuMDYsMCwwLDAsMi44OC0xLjJMMjMuNiwxOC4yMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZUNvcHlUb0NsaXBib2FyZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjIu''@;'; put 'put ''Niw0SDIxLjU1YTMuODksMy44OSwwLDAsMC03LjMxLDBIMTMuNEEyLjQxLDIuNDEsMCwwLDAsMTEsNi40VjEwSDI1VjYuNEEyLjQxLDIuNDEsMCwwLDAsMjIuNiw0Wk0yMyw4SDEzVjYuMjVBLjI1LjI1LDAsMCwxLDEzLjI1LDZoMi42OWwuMTItMS4xMUExLjI0LDEuMjQsMCwwLDEsMTYuNjEs''@;'; put 'put ''NGEyLDIsMCwwLDEsMy4xNSwxLjE4bC4wOS44NGgyLjlhLjI1LjI1LDAsMCwxLC4yNS4yNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTMzLjI1LDE4LjA2SDIxLjMzbDIuODQtMi44M2ExLDEsMCwxLDAtMS40Mi0xLjQyTDE3LjUs''@;'; put 'put ''MTkuMDZsNS4yNSw1LjI1YTEsMSwwLDAsMCwuNzEuMjksMSwxLDAsMCwwLC43MS0xLjdsLTIuODQtMi44NEgzMy4yNWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG48cGF0aCBkPSJNMjksMTZoMlY2LjY4QTEuNjYsMS42Niww''@;'; put 'put ''LDAsMCwyOS4zNSw1SDI3LjA4VjdIMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbjxwYXRoIGQ9Ik0yOSwzMUg3VjdIOVY1SDYuNjRBMS42NiwxLjY2LDAsMCwwLDUsNi42N1YzMS4zMkExLjY2LDEuNjYsMCwwLDAsNi42NSwzM0gyOS4zNkExLjY2''@;'; put 'put ''LDEuNjYsMCwwLDAsMzEsMzEuMzNWMjIuMDZIMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxlLkNsclNoYXBlRHJhZ0hhbmRsZT0oMCxhLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIxNSIgY3k9IjEyIiByPSIxLjUiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxjaXJjbGUgY3g9IjE1IiBjeT0iMjQiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PGNpcmNsZSBjeD0iMjEiIGN5PSIxMiIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMyIgLz48Y2lyY2xlIGN4PSIyMSIgY3k9IjI0IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxjaXJjbGUgY3g9IjIxIiBjeT0iMTgiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTUiIC8+PGNpcmNsZSBjeD0iMTUiIGN5PSIxOCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxlLkNsclNoYXBlRmlsdGVyMj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMsMTFIM2ExLDEsMCwwLDAsMCwySDMzYTEsMSww''@;'; put 'put ''LDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0yOCwxN0g4YTEsMSwwLDAsMCwwLDJIMjhhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuPHBhdGggZD0i''@;'; put 'put ''TTIzLDIzSDEzYTEsMSwwLDAsMCwwLDJIMjNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLGUuQ2xyU2hhcGVNb29uPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMSwyNy4xOWExLDEsMCwwLDAtMS0uNTZjLS4yOCww''@;'; put 'put ''LS41NiwwLS44NSwwQTExLDExLDAsMCwxLDI0LjkyLDUuNjFhMSwxLDAsMCwwLC42MS0xLDEsMSwwLDAsMC0uNjctLjkxLDE0LjcsMTQuNywwLDAsMC01LS44NywxNS4xMiwxNS4xMiwwLDAsMCwwLDMwLjI0LDE0Ljc4LDE0Ljc4LDAsMCwwLDExLTQuODFBMSwxLDAsMCwwLDMxLDI3LjE5Wk0x''@;'; put 'put ''OS44OSwzMS4xMmExMy4xMiwxMy4xMiwwLDAsMSwwLTI2LjI0LDExLjgxLDExLjgxLDAsMCwxLDIsLjE2LDEzLDEzLDAsMCwwLDUuNzIsMjMuNTNBMTIuNzUsMTIuNzUsMCwwLDEsMTkuODksMzEuMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxw''@;'; put 'put ''YXRoIGQ9Ik0yOS4yLDI2LjcyQTEyLjA3LDEyLjA3LDAsMCwxLDIyLjksNC40NCwxMy42OCwxMy42OCwwLDAsMCwxOS40OSw0YTE0LDE0LDAsMCwwLDAsMjgsMTMuODIsMTMuODIsMCwwLDAsMTAuOS01LjM0QTExLjcxLDExLjcxLDAsMCwxLDI5LjIsMjYuNzJaIiBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVTdW49KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDYuMzFhMSwxLDAsMCwwLDEtMVYxLjkxYTEsMSwwLDAsMC0yLDB2My40QTEsMSwwLDAsMCwxOCw2LjMxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiIC8+XG48cGF0aCBkPSJNMTgsMjkuNjlhMSwxLDAsMCwwLTEsMXYzLjRhMSwxLDAsMCwwLDIsMHYtMy40QTEsMSwwLDAsMCwxOCwyOS42OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuPHBhdGggZD0iTTguMzIsOS43NEExLDEs''@;'; put 'put ''MCwwLDAsOSwxMGExLDEsMCwwLDAsLjcxLS4yOSwxLDEsMCwwLDAsMC0xLjQyTDcuMzMsNS45MkExLDEsMCwwLDAsNS45Miw3LjMzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTI3LjY4LDI2LjI2YTEsMSwwLDEsMC0xLjQyLDEuNDJs''@;'; put 'put ''Mi40MSwyLjRhMSwxLDAsMCwwLC43MS4zLDEsMSwwLDAsMCwuNy0uMywxLDEsMCwwLDAsMC0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTYuMzEsMThhMSwxLDAsMCwwLTEtMUgxLjkxYTEsMSwwLDAsMCwwLDJoMy40QTEsMSww''@;'; put 'put ''LDAsMCw2LjMxLDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTM0LjA5LDE3aC0zLjRhMSwxLDAsMSwwLDAsMmgzLjRhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxw''@;'; put 'put ''YXRoIGQ9Ik04LjMyLDI2LjI2bC0yLjQsMi40MWExLDEsMCwwLDAsLjcsMS43MSwxLDEsMCwwLDAsLjcxLS4zbDIuNDEtMi40YTEsMSwwLDEsMC0xLjQyLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz48cGF0aCBkPSJNMjcsMTBhMSwxLDAsMCww''@;'; put 'put ''LC43MS0uMjlsMi40LTIuNDFhMSwxLDAsMCwwLDAtMS40MSwxLDEsMCwwLDAtMS40MSwwbC0yLjQxLDIuNGExLDEsMCwwLDAsMCwxLjQyQTEsMSwwLDAsMCwyNywxMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiAvPjxwYXRoIGQ9Ik0xOC4xMyw3Ljc1YTEw''@;'; put 'put ''LjEzLDEwLjEzLDAsMSwwLDEwLDEwLjEzQTEwLjA4LDEwLjA4LDAsMCwwLDE4LjEzLDcuNzVabTAsMTguMjVhOC4xMyw4LjEzLDAsMSwxLDgtOC4xMkE4LjA4LDguMDgsMCwwLDEsMTguMTMsMjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgLz48cGF0aCBk''@;'; put 'put ''PSJNMTgsNi40MmExLDEsMCwwLDAsMS0xVjEuOTFhMSwxLDAsMCwwLTIsMFY1LjQyQTEsMSwwLDAsMCwxOCw2LjQyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMjkuNThhMSwxLDAsMCwwLTEsMXYzLjUxYTEsMSwwLDAsMCwyLDBWMzAu''@;'; put 'put ''NThBMSwxLDAsMCwwLDE4LDI5LjU4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNOC40LDkuODFBMSwxLDAsMCwwLDkuODEsOC40TDcuMzMsNS45MkExLDEsMCwwLDAsNS45Miw3LjMzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMyIgLz48cGF0aCBkPSJNMjcuNiwyNi4xOWExLDEsMCwwLDAtMS40MSwxLjQxbDIuNDgsMi40OGExLDEsMCwwLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz48cGF0aCBkPSJNNi40MiwxOGExLDEsMCwwLDAtMS0xSDEuOTFhMSwx''@;'; put 'put ''LDAsMCwwLDAsMkg1LjQyQTEsMSwwLDAsMCw2LjQyLDE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgLz48cGF0aCBkPSJNMzQuMDksMTdIMzAuNThhMSwxLDAsMCwwLDAsMmgzLjUxYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC02IiAvPjxwYXRoIGQ9Ik04LjQsMjYuMTksNS45MiwyOC42N2ExLDEsMCwwLDAsMS40MSwxLjQxTDkuODEsMjcuNkExLDEsMCwwLDAsOC40LDI2LjE5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNyIgLz48cGF0aCBkPSJNMjcuNiw5LjgxbDIuNDgtMi40''@;'; put 'put ''OGExLDEsMCwwLDAtMS40MS0xLjQxTDI2LjE5LDguNEExLDEsMCwwLDAsMjcuNiw5LjgxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtOCIgLz48Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIxMCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtOSIg''@;'; put 'put ''Lz4nKSxlLkNsclNoYXBlV2FuZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM0LjEsNCwzMS43MSwxLjZhMS44MywxLjgzLDAsMCwwLTEuMzEtLjU0aDBhMi4wNSwyLjA1LDAsMCwwLTEuNDUuNjJMMS43Niwy''@;'; put 'put ''OS4yM0EyLDIsMCwwLDAsMS42OCwzMmwyLjQsMi40M0ExLjgzLDEuODMsMCwwLDAsNS4zOSwzNWgwYTIuMDUsMi4wNSwwLDAsMCwxLjQ1LS42MkwzNCw2Ljc5QTIsMiwwLDAsMCwzNC4xLDRaTTUuNDIsMzIuOTMsMy4xNiwzMC42NWgwTDI0LjExLDkuNDNsMi4yNSwyLjI4Wk0zMi42MSw1LjM5''@;'; put 'put ''bC01LjEyLDUuMThMMjUuMjQsOC4yOWw1LjEzLTUuMiwyLjI1LDIuMjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMyLjUzLDIwLjQ3bDIuMDktMi4wOWEuOC44LDAsMCwwLTEuMTMtMS4xM2wtMi4wOSwyLjA5''@;'; put 'put ''LTIuMDktMi4wOWEuOC44LDAsMCwwLTEuMTMsMS4xM2wyLjA5LDIuMDktMi4wOSwyLjA5YS44LjgsMCwwLDAsMS4xMywxLjEzbDIuMDktMi4wOSwyLjA5LDIuMDlhLjguOCwwLDAsMCwxLjEzLTEuMTNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMyIgZD0iTTE0Ljc4LDYuNTFhLjguOCwwLDAsMCwxLjEzLDBMMTcuNCw1bDEuNDksMS40OUEuOC44LDAsMCwwLDIwLDUuMzhMMTguNTQsMy44OSwyMCwyLjRhLjguOCwwLDAsMC0xLjEzLTEuMTNMMTcuNCwyLjc2LDE1LjkxLDEuMjdBLjguOCwwLDEsMCwxNC43OCwyLjRs''@;'; put 'put ''MS40OSwxLjQ5TDE0Ljc4LDUuMzhBLjguOCwwLDAsMCwxNC43OCw2LjUxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik04LjMzLDE1LjI2YS44LjgsMCwwLDAsMS4xMywwbDEuMTYtMS4xNiwxLjE2LDEuMTZhLjgu''@;'; put 'put ''OCwwLDEsMCwxLjEzLTEuMTNMMTEuNzYsMTNsMS4xNi0xLjE2YS44LjgsMCwxLDAtMS4xMy0xLjEzbC0xLjE2LDEuMTZMOS40NiwxMC42OGEuOC44LDAsMSwwLTEuMTMsMS4xM0w5LjQ5LDEzLDguMzMsMTQuMTNBLjguOCwwLDAsMCw4LjMzLDE1LjI2WiIvPicpLGUuQ2xyU2hhcGVDdXJzb3JN''@;'; put 'put ''b3ZlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOC44NSwxMi44OWExLDEsMCwwLDAtMS40MiwwLDEsMSwwLDAsMCwwLDEuNDFMMzAuMTQsMTdIMTlWNS44NmwyLjY5LDIuN2ExLDEsMCwwLDAsMS40MSwwLDEsMSwwLDAsMCwwLTEuNDJMMTgsMiwxMi44OSw3LjE1YTEsMSwwLDAsMC0u''@;'; put 'put ''MjkuNzEsMSwxLDAsMCwwLDEuNzEuN0wxNyw1Ljg2VjE3SDUuODZsMi43LTIuNjlhMSwxLDAsMCwwLDAtMS40MSwxLDEsMCwwLDAtMS40MiwwTDIsMThsNS4xNCw1LjExYTEsMSwwLDAsMCwuNzEuMjksMSwxLDAsMCwwLC43LTEuNzFMNS44NiwxOUgxN1YzMC4xNGwtMi42OS0yLjdhMSwxLDAs''@;'; put 'put ''MCwwLTEuNzEuNywxLDEsMCwwLDAsLjI5LjcxTDE4LDM0bDUuMTEtNS4xNGExLDEsMCwwLDAsMC0xLjQyLDEsMSwwLDAsMC0xLjQxLDBMMTksMzAuMTRWMTlIMzAuMTRsLTIuNywyLjY5YTEsMSwwLDAsMCwuNywxLjcxLDEsMSwwLDAsMCwuNzEtLjI5TDM0LDE4WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZUNsb25lPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik02LDZIMjJ2NGgyVjZhMiwyLDAsMCwwLTItMkg2QTIsMiwwLDAsMCw0LDZWMjJhMiwyLDAsMCwwLDIsMmg0VjIySDZaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzAsMTJIMTRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTRBMiwyLDAsMCwwLDMwLDEyWm0wLDE4SDE0VjE0SDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTIiIC8+PHBvbHlnb24gcG9pbnRzPSIyMSAyOCAyMyAyOCAyMyAyMyAyOCAyMyAyOCAyMSAyMyAyMSAyMyAxNiAyMSAxNiAyMSAyMSAxNiAyMSAxNiAyMyAyMSAyMyAyMSAyOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTI0LDEw''@;'; put 'put ''VjZhMiwyLDAsMCwwLTItMkg2QTIsMiwwLDAsMCw0LDZWMjJhMiwyLDAsMCwwLDIsMmg0VjEyYTIsMiwwLDAsMSwyLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMCwxMkgxNGEyLDIsMCwwLDAtMiwyVjMwYTIsMiwwLDAsMCwyLDJIMzBh''@;'; put 'put ''MiwyLDAsMCwwLDItMlYxNEEyLDIsMCwwLDAsMzAsMTJaTTI4LDIzSDIzdjVIMjFWMjNIMTZWMjFoNVYxNmgydjVoNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZURldGFpbHM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDZI''@;'; put 'put ''NEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wm0wLDIySDRWOEgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik05LDE0SDI3YTEsMSwwLDAsMCwwLTJIOWExLDEs''@;'; put 'put ''MCwwLDAsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTksMThIMjdhMSwxLDAsMCwwLDAtMkg5YTEsMSwwLDAsMCwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNOSwy''@;'; put 'put ''MkgxOWExLDEsMCwwLDAsMC0ySDlhMSwxLDAsMCwwLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpN''@;'; put 'put ''MTksMjJIOWExLDEsMCwwLDEsMC0ySDE5YTEsMSwwLDAsMSwwLDJabTgtNEg5YTEsMSwwLDAsMSwwLTJIMjdhMSwxLDAsMCwxLDAsMlptMC00SDlhMSwxLDAsMCwxLDAtMkgyN2ExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxlLkNs''@;'; put 'put ''clNoYXBlRHJhZ0hhbmRsZUNvcm5lcj0oMCxhLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIxMiIgY3k9IjI0IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxjaXJjbGUgY3g9IjE4IiBjeT0iMjQiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48Y2lyY2xlIGN4PSIyNCIgY3k9IjEyIiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC00IiAvPjxjaXJjbGUgY3g9IjI0IiBjeT0iMjQiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PGNpcmNsZSBjeD0iMjQiIGN5PSIxOCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNiIgLz4nKSxlLkNsclNoYXBlRXJhc2VyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zNS42MiwxMmEyLjgyLDIuODIsMCwwLDAtLjg0LTJMMjcuNDksMi42NWEyLjksMi45LDAsMCwwLTQsMEwyLjgzLDIzLjI4YTIuODQsMi44NCwwLDAsMCwwLDRMNy41MywzMkgzYTEsMSwwLDAs''@;'; put 'put ''MCwwLDJIMjhhMSwxLDAsMCwwLDAtMkgxNi43NGwxOC0xOEEyLjgyLDIuODIsMCwwLDAsMzUuNjIsMTJaTTEzLjkxLDMySDEwLjM2TDQuMjUsMjUuODlhLjg0Ljg0LDAsMCwxLDAtMS4xOWw1LjUxLTUuNTIsOC40OSw4LjQ4Wk0zMy4zNywxMi41NCwxOS42NiwyNi4yNWwtOC40OC04LjQ5LDEz''@;'; put 'put ''LjctMTMuN2EuODYuODYsMCwwLDEsMS4xOSwwbDcuMyw3LjI5YS44Ni44NiwwLDAsMSwuMjUuNkEuODIuODIsMCwwLDEsMzMuMzcsMTIuNTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjgsMzJIMTUuMzNMMTksMjguMzdsLTkuOS05''@;'; put 'put ''LjlMMy41NCwyNGExLjgzLDEuODMsMCwwLDAsMCwyLjZMOSwzMkgzYTEsMSwwLDAsMCwwLDJIMjhhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTM0LjA4LDEwLjY1bC03LjMtNy4zYTEuODMsMS44MywwLDAsMC0yLjYs''@;'; put 'put ''MEwxMC40NywxNy4wNmw5LjksOS45TDM0LjA4LDEzLjI1QTEuODUsMS44NSwwLDAsMCwzNC4wOCwxMC42NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZUxhbmRzY2FwZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNkg0QTIs''@;'; put 'put ''MiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZabTAsMjJINFY4SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTksMjJhLjgyLjgyLDAsMCwwLC41NS0uMjEuOC44LDAs''@;'; put 'put ''MCwwLDAtMS4xM0w3LjgzLDE4LjhIMjguMTdsLTEuNzIsMS44NmEuOC44LDAsMCwwLDAsMS4xM0EuODIuODIsMCwwLDAsMjcsMjJhLjc4Ljc4LDAsMCwwLC41OC0uMjZMMzEuMDksMThsLTMuNDctMy43NGEuNzkuNzksMCwwLDAtMS4xMywwLC44LjgsMCwwLDAsMCwxLjEzbDEuNzIsMS44Nkg3''@;'; put 'put ''LjgzbDEuNzItMS44NmEuOC44LDAsMCwwLDAtMS4xMy43OS43OSwwLDAsMC0xLjEzLDBMNC45MSwxOGwzLjQ3LDMuNzRBLjc4Ljc4LDAsMCwwLDksMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhW''@;'; put 'put ''MjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTI3Ljc3LDIxLjg4YTEsMSwwLDAsMS0uNzMuMzIsMSwxLDAsMCwxLS42OC0uMjcsMSwxLDAsMCwxLS4wNi0xLjQxTDI3LjcxLDE5SDguMjlMOS43LDIwLjUyYTEsMSwwLDAsMS0uMDYsMS40MUExLDEs''@;'; put 'put ''MCwwLDEsOSwyMi4yYTEsMSwwLDAsMS0uNzMtLjMyTDQuNjQsMThsMy41OS0zLjg4QTEsMSwwLDAsMSw5LjcsMTUuNDhMOC4yOSwxN0gyNy43MUwyNi4zLDE1LjQ4YTEsMSwwLDAsMSwxLjQ3LTEuMzZMMzEuMzYsMThaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAv''@;'; put 'put ''PicpLGUuQ2xyU2hhcGVQYXN0ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAsMTJIMjZ2Mmg0djJoMlYxNEEyLDIsMCwwLDAsMzAsMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cmVjdCB4PSIzMCIgeT0iMTgiIHdpZHRoPSIyIiBoZWln''@;'; put 'put ''aHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMCwzMEgyOHYyaDJhMiwyLDAsMCwwLDItMlYyNkgzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNCwyMlY2YTIsMiww''@;'; put 'put ''LDAsMC0yLTJINkEyLDIsMCwwLDAsNCw2VjIyYTIsMiwwLDAsMCwyLDJIMjJBMiwyLDAsMCwwLDI0LDIyWk02LDZIMjJWMjJINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxyZWN0IHg9IjIwIiB5PSIzMCIgd2lkdGg9IjYiIGhlaWdodD0iMiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTE0LDI2SDEydjRhMiwyLDAsMCwwLDIsMmg0VjMwSDE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTMwLDEySDI2djJoNHYyaDJWMTRBMiwy''@;'; put 'put ''LDAsMCwwLDMwLDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cmVjdCB4PSIzMCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTMwLDMwSDI4djJoMmEyLDIs''@;'; put 'put ''MCwwLDAsMi0yVjI2SDMwWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz48cmVjdCB4PSI0IiB5PSI0IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHJ4PSIyIiByeT0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz48cmVjdCB4PSIy''@;'; put 'put ''MCIgeT0iMzAiIHdpZHRoPSI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIC8+PHBhdGggZD0iTTE0LDI2SDEydjRhMiwyLDAsMCwwLDIsMmg0VjMwSDE0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNiIgLz4nKSxlLkNs''@;'; put 'put ''clNoYXBlUG9ydHJhaXQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE1LjM0LDI2LjQ1YS44LjgsMCwwLDAtMS4xMywwLC43OS43OSwwLDAsMCwwLDEuMTNMMTgsMzEuMDlsMy43NC0zLjQ3YS43OS43OSwwLDAsMCwuMDUtMS4xMy44LjgsMCwwLDAtMS4xMywwTDE4LjgsMjguMTdWNy44''@;'; put 'put ''M2wxLjg2LDEuNzJhLjguOCwwLDEsMCwxLjA4LTEuMTdMMTgsNC45MSwxNC4yNiw4LjM4YS43OS43OSwwLDAsMCwwLDEuMTMuOC44LDAsMCwwLDEuMTMsMEwxNy4yLDcuODNWMjguMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjgs''@;'; put 'put ''Mkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjRBMiwyLDAsMCwwLDI4LDJabTAsMzBIOFY0SDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIs''@;'; put 'put ''MiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWk0yMC41MiwyNi4zYTEsMSwwLDAsMSwxLjM2LDEuNDdMMTgsMzEuMzZsLTMuODgtMy41OWExLDEsMCwwLDEsMS4zNi0xLjQ3TDE3LDI3LjcxVjguMjlMMTUuNDgsOS43YTEsMSwwLDAsMS0xLjM2LTEuNDdMMTgs''@;'; put 'put ''NC42NGwzLjg4LDMuNTlhMSwxLDAsMCwxLC4wNSwxLjQxLDEsMSwwLDAsMS0uNzMuMzIsMSwxLDAsMCwxLS42OC0uMjZMMTksOC4yOVYyNy43MVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZVRyZWVWaWV3PSgwLGEuY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGQ9Ik0xNSwzMkgxMWExLDEsMCwwLDEtMS0xVjI3YTEsMSwwLDAsMSwxLTFoNGExLDEsMCwwLDEsMSwxdjRBMSwxLDAsMCwxLDE1LDMyWm0tMy0yaDJWMjhIMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTUsMTZIMTFh''@;'; put 'put ''MSwxLDAsMCwwLTEsMXYxLjJINS44VjEySDdhMSwxLDAsMCwwLDEtMVY3QTEsMSwwLDAsMCw3LDZIM0ExLDEsMCwwLDAsMiw3djRhMSwxLDAsMCwwLDEsMUg0LjJWMjkuOGg2LjM2YS44LjgsMCwwLDAsMC0xLjZINS44VjE5LjhIMTBWMjFhMSwxLDAsMCwwLDEsMWg0YTEsMSwwLDAsMCwxLTFW''@;'; put 'put ''MTdBMSwxLDAsMCwwLDE1LDE2Wk00LDhINnYySDRaTTE0LDIwSDEyVjE4aDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzQsOWExLDEsMCwwLDAtMS0xSDEwdjJIMzNBMSwxLDAsMCwwLDM0LDlaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzMsMThIMTh2MkgzM2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMzLDI4SDE4djJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxyZWN0IHg9IjEwIiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgcng9IjEiIHJ5PSIxIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xNSwxNkgxMWExLDEsMCwwLDAtMSwxdjEuMkg1''@;'; put 'put ''LjhWMTJIN2ExLDEsMCwwLDAsMS0xVjdBMSwxLDAsMCwwLDcsNkgzQTEsMSwwLDAsMCwyLDd2NGExLDEsMCwwLDAsMSwxSDQuMlYyOS44SDExYS44LjgsMCwxLDAsMC0xLjZINS44VjE5LjhIMTBWMjFhMSwxLDAsMCwwLDEsMWg0YTEsMSwwLDAsMCwxLTFWMTdBMSwxLDAsMCwwLDE1LDE2WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMzMsOEgxMHYySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMywxOEgxOHYySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMywyOEgxOHYySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01IiAvPicpLGUuQ2xyU2hhcGVDdXJzb3JIYW5kR3JhYj0oMCxhLmNsckljb25TVkcpKCc8''@;'; put 'put ''cGF0aCBkPSJNMjguMDksOS43NGE0LDQsMCwwLDAtMS4xNi4xOWMtLjE5LTEuMjQtMS41NS0yLjE4LTMuMjctMi4xOEE0LDQsMCwwLDAsMjIuMTMsOCwzLjM3LDMuMzcsMCwwLDAsMTksNi4zYTMuNDUsMy40NSwwLDAsMC0yLjg3LDEuMzIsMy42NSwzLjY1LDAsMCwwLTEuODktLjUxQTMuMDUs''@;'; put 'put ''My4wNSwwLDAsMCwxMSw5Ljg5di45MWMtMS4wNi40LTQuMTEsMS44LTQuOTEsNC44NHMuMzQsOCwyLjY5LDExLjc4YTI1LjIxLDI1LjIxLDAsMCwwLDUuOSw2LjQxLjkuOSwwLDAsMCwuNTMuMTdIMjUuNTVhLjkyLjkyLDAsMCwwLC41NS0uMTksMTMuMTMsMTMuMTMsMCwwLDAsMy43NS02LjEz''@;'; put 'put ''QTI1LjgsMjUuOCwwLDAsMCwzMS40MSwxOHYtNS41QTMuMDgsMy4wOCwwLDAsMCwyOC4wOSw5Ljc0Wk0yOS42MSwxOGEyNCwyNCwwLDAsMS0xLjQ3LDkuMTVBMTIuNDYsMTIuNDYsMCwwLDEsMjUuMiwzMi4ySDE1LjQ3YTIzLjc1LDIzLjc1LDAsMCwxLTUuMi01LjcyYy0yLjM3LTMuODYtMy04''@;'; put 'put ''LjIzLTIuNDgtMTAuMzlBNS43LDUuNywwLDAsMSwxMSwxMi43NnY3LjY1YS45LjksMCwwLDAsMS44LDBWOS44OWMwLS40Ny41OS0xLDEuNDYtMXMxLjQ5LjUyLDEuNDksMXY1LjcyaDEuOFY4LjgxYzAtLjI4LjU4LS43MSwxLjQ2LS43MXMxLjUzLjQ4LDEuNTMuNzV2Ni44OWgxLjhWMTBsLjE3''@;'; put 'put ''LS4xMmEyLjEsMi4xLDAsMCwxLDEuMTgtLjMyYy45MywwLDEuNS40NCwxLjUuNjhsMCw2LjVIMjdWMTEuODdhMS45MSwxLjkxLDAsMCwxLDEuMTItLjMzYy44NiwwLDEuNTIuNTEsMS41Mi45NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGUuQ2xy''@;'; put 'put ''U2hhcGVDdXJzb3JIYW5kT3Blbj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuNDYsOC41N0EzLjExLDMuMTEsMCwwLDAsMjcsNS43NWEzLjE5LDMuMTksMCwwLDAtNC42Ni0yLjY0LDMuMjksMy4yOSwwLDAsMC02LjQyLS43NiwzLjIzLDMuMjMsMCwwLDAtMS42Ni0uNDZBMy4yNywz''@;'; put 'put ''LjI3LDAsMCwwLDExLDUuMThWMTcuODRjLTEuMjgtMS42LTIuNTMtMy4xOC0yLjcyLTMuNDVBMy4xOSwzLjE5LDAsMCwwLDUuNTYsMTIuOWEzLjM3LDMuMzcsMCwwLDAtMy40NywzLjQ4QzIuMTgsMTguMTgsNS42NiwyNC41NCw4LDI4YzMuNTQsNS4yNCw2LjkyLDYsNy4wNyw2bC4xOCwwSDI1''@;'; put 'put ''LjU5YS45Mi45MiwwLDAsMCwuNTUtLjE5LDEzLjEzLDEzLjEzLDAsMCwwLDMuNzUtNi4xM2MxLTMuMDksMS41My03LjUzLDEuNTgtMTMuNTZaTTI4LjE4LDI3LjEyYTEyLjQ2LDEyLjQ2LDAsMCwxLTIuOTQsNS4wOEgxNS4zM2MtLjQ3LS4xNC0zLjA3LTEuMS01Ljg3LTUuMjVTMy45NCwxNy4y''@;'; put 'put ''NywzLjg5LDE2LjI5YTEuNSwxLjUsMCwwLDEsLjQ1LTEuMTMsMS41MiwxLjUyLDAsMCwxLDEuMTQtLjQ2LDEuNDMsMS40MywwLDAsMSwxLjMyLjcxYy4yOS40MywyLjM2LDMsMy41Nyw0LjUzTDEyLjgsMTguM1Y1LjE4YTEuNDgsMS40OCwwLDEsMSwyLjk1LDBWMTYuMzJoMS44di0xM2ExLjUx''@;'; put 'put ''LDEuNTEsMCwwLDEsMywwVjE2LjQ1aDEuOFY2YTEuNDMsMS40MywwLDEsMSwyLjg1LDBWMTcuNDRIMjdWOC41NGExLjMzLDEuMzMsMCwwLDEsMi42NSwwdjUuNTVDMjkuNjIsMjAsMjkuMTQsMjQuMjEsMjguMTgsMjcuMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMSIgLz4nKSxlLkNsclNoYXBlRmlsZVppcD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAsMzAuMlYxMmwtOC4xLTcuOUg3LjhDNi44LDQuMSw2LDQuOSw2LDZjMCwwLDAsMCwwLDB2MjQuMmMwLDEsMC43LDEuOCwxLjcsMS44YzAsMCwwLjEsMCwwLjEsMGgyMC4zXG5cdFx0YzEs''@;'; put 'put ''MCwxLjgtMC43LDEuOC0xLjdDMzAsMzAuMywzMCwzMC4yLDMwLDMwLjJ6IE0yMiw2LjZsNS42LDUuNEgyMlY2LjZ6IE0yOCwzMEg3LjlMOCw2aDEydjhoOFYzMHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xMiwyNGMwLDEuNywxLjMs''@;'; put 'put ''MywzLDNzMy0xLjMsMy0zdi00aC02VjI0eiBNMTMuNCwyNHYtMi42aDMuMlYyNGMwLjEsMC45LTAuNiwxLjctMS41LDEuN2MtMC45LDAuMS0xLjctMC42LTEuNy0xLjVcblx0XHRDMTMuNCwyNC4yLDEzLjQsMjQuMSwxMy40LDI0eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTIiIC8+PHBhdGggZD0iTTE4LjIsOWMwLTAuNi0wLjQtMS0xLTFIMTV2MmgyLjJDMTcuOCwxMCwxOC4yLDkuNiwxOC4yLDl6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMTIuNywxMGMtMC42LDAtMSwwLjQtMSwxczAuNCwx''@;'; put 'put ''LDEsMUgxNXYtMkgxMi43eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTE3LjIsMTRjMC42LDAsMS0wLjQsMS0xcy0wLjQtMS0xLTFIMTV2MkgxNy4yeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+''@;'; put 'put ''PHBhdGggZD0iTTExLjcsMTVjMCwwLjYsMC40LDEsMSwxSDE1di0yaC0yLjNDMTIuMiwxNCwxMS43LDE0LjQsMTEuNywxNXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik0xNy4yLDE4YzAuNiwwLDEtMC40LDEtMXMtMC40LTEtMS0xSDE1''@;'; put 'put ''djJIMTcuMnoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPjxwYXRoIGQ9Ik0xNSwyNS42YzAuOSwwLDEuNi0wLjcsMS42LTEuNnYtMi42aC0zLjJWMjRDMTMuNCwyNC45LDE0LjEsMjUuNiwxNSwyNS42eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMjEuOSw0SDcuOEM2LjgsNCw2LDQuOSw2LDUuOXYyNC4yYzAsMSwwLjgsMS45LDEuOCwxLjloMjAuM2MxLDAsMS44LTAuOSwxLjgtMS45VjExLjlMMjEuOSw0eiBNMTgsMjRjMCwxLjctMS4zLDMtMywzXG5cdFx0cy0zLTEuMy0zLTN2LTRoNlYyNHog''@;'; put 'put ''TTE3LjIsMTJjMC42LDAsMSwwLjQsMSwxcy0wLjQsMS0xLDFIMTV2MmgyLjJjMC42LDAsMSwwLjQsMSwxcy0wLjQsMS0xLDFIMTV2LTJoLTIuMmMtMC42LDAtMS0wLjQtMS0xXG5cdFx0czAuNC0xLDEtMUgxNXYtMmgtMi4yYy0wLjYsMC0xLTAuNC0xLTFzMC40LTEsMS0xSDE1VjhoMi4yYzAu''@;'; put 'put ''NiwwLDEsMC40LDEsMXMtMC40LDEtMSwxSDE1djJIMTcuMnogTTIxLjksMTJWNi41bDUuNyw1LjVIMjEuOXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZUZpbHRlck9mZj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzQsNi40QzM0''@;'; put 'put ''LDUuNiwzMy4zLDUsMzIuNSw1SDEwLjNsMiwySDMydjAuNmwtOS42LDkuNmwxLjQsMS40TDMzLjQsOUMzMy44LDguNiwzNCw4LjEsMzQsNy42VjYuNUMzNCw2LjUsMzQsNi40LDM0LDYuNHoiXG5cdFx0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik0yLjcsM2wyLDJoLTFDMi45LDQuOSwyLjEsNS41LDIsNi4zdjEuMWMwLDAuNSwwLjIsMSwwLjYsMS40TDE0LDIwLjJ2MTAuM2wxLjksMC44VjE5LjRMNCw3LjVWN2gyLjdMMjAsMjAuM3YxMi45bDIsMC44XG5cdFx0YzAsMCwwLDAsMC0wLjFWMjIuM2wxMC4xLDEwLjFsMS40LTEuNEw0''@;'; put 'put ''LjEsMS42TDIuNywzeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTIzLjksMTguNkwxMC4zLDUuMWgyMi4yQzMzLjMsNSwzNCw1LjYsMzQsNi40YzAsMCwwLDAsMCwwLjF2MS4xYzAsMC41LTAuMiwxLTAuNiwxLjRMMjMuOSwxOC42eiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMuNSwzMUw0LjEsMS42TDIuNiwzbDIuMSwyLjFIMy41QzIuNyw1LDIsNS42LDIsNi40YzAsMCwwLDAsMCwwLjF2MS4xYzAsMC41LDAuMiwxLDAuNiwxLjRMMTQsMjAuNXYxMC4xbDgsMy40VjIyLjRc''@;'; put 'put ''blx0bDEwLjEsMTAuMUwzMy41LDMxeiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlUmVjeWNsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNi40LDE3LjRjMC4yLDAuMSwwLjMsMC4xLDAuNSwwLjFjMC4yLDAsMC40LTAuMSwwLjUt''@;'; put 'put ''MC4xbDctNC4xYzAuMy0wLjIsMC41LTAuNSwwLjUtMC45YzAtMC40LTAuMi0wLjctMC41LTAuOUwxMS45LDEwXG5cdFx0TDE0LDYuMmMwLjQtMC43LDEtMS4zLDEuNy0xLjdjMi0xLjEsNC41LTAuMyw1LjYsMS43YzAuMywwLjUsMC45LDAuNiwxLjQsMC4zYzAsMCwwLDAsMC4xLDBjMC40LTAu''@;'; put 'put ''MywwLjUtMC45LDAuMy0xLjNcblx0XHRjLTAuNi0xLTEuNC0xLjktMi40LTIuNGMtMy0xLjYtNi43LTAuNi04LjMsMi40TDkuNiw5LjljLTAuMywwLjUtMC4xLDEuMSwwLjMsMS40bDIsMS4ybC00LDIuNFY4LjJjMC0wLjYtMC40LTEtMS0xXG5cdFx0QzYuNCw3LjMsNiw3LjcsNiw4LjN2OC4z''@;'; put 'put ''QzYsMTYuOSw2LjIsMTcuMiw2LjQsMTcuNHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMi4xLDIxbC0zLjUtNi4yYy0wLjEtMC4yLTAuNC0wLjQtMC42LTAuNWMtMC4zLTAuMS0wLjUsMC0wLjgsMC4xbC0yLjIsMS4zVjExbDUuNSwz''@;'; put 'put ''LjNjMC4xLDAsMC4xLDAuMSwwLjIsMC4xXG5cdFx0YzAuNSwwLjIsMS4xLDAsMS4zLTAuNWMwLjItMC41LDAtMS4xLTAuNS0xLjNsLTctNC4yYy0wLjMtMC4yLTAuNy0wLjItMSwwQzIzLjEsOC41LDIzLDguOCwyMyw5LjJ2OC4zYzAsMC40LDAuMSwwLjgsMC40LDFcblx0XHRjMC4zLDAuMiww''@;'; put 'put ''LjcsMC4yLDEsMGwyLjktMS43bDMsNS4zYzAuNywxLjMsMC43LDIuOCwwLDQuMWMtMC42LDEuMi0xLjksMS45LTMuMiwxLjloLTAuOWMtMC41LDAtMS4yLDAuNC0xLjIsMVxuXHRcdGMwLjEsMC42LDAuNiwxLDEuMiwxaDAuOWMyLjEsMCw0LTEuMSw1LTIuOUMzMy4yLDI1LjIsMzMuMiwyMi45''@;'; put 'put ''LDMyLjEsMjF6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjIuNCwyOC4ybC03LTQuMmMtMC4zLTAuMi0wLjctMC4yLTEsMGMtMC4zLDAuMi0wLjQsMC41LTAuNCwwLjl2My4zSDkuMWMtMS41LTAuMS0yLjktMC45LTMuNi0yLjNcblx0''@;'; put 'put ''XHRjLTAuOC0xLjQtMC44LTMuMiwwLTQuNmMwLjMtMC41LDAuMS0xLjEtMC40LTEuNGMtMC41LTAuMy0xLjEtMC4xLTEuNCwwLjRjLTEuMiwyLjEtMS4xLDQuNiwwLjEsNi42QzQuOSwyOC44LDcsMzAsOS4yLDMwSDE1XG5cdFx0YzAuNiwwLDEtMC40LDEtMXYtMi40bDQsMi40bC01LjYsMy4z''@;'; put 'put ''Yy0wLjMsMC4yLTAuNSwwLjUtMC41LDAuOWMwLDAuNiwwLjUsMSwxLDFjMC4yLDAsMC4zLTAuMSwwLjUtMC4ybDctNC4yXG5cdFx0YzAuMi0wLjEsMC4zLTAuMiwwLjQtMC40QzIzLjEsMjksMjIuOSwyOC40LDIyLjQsMjguMnoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMC44LDMuMWMtMy0xLjYtNi43LTAuNi04LjQsMi40bC0yLjIsMy44bC0yLTEuMUM4LjIsOCw4LDgsNy45LDhDNy40LDgsNyw4LjQsNyw4Ljl2Ny4yYzAsMC4zLDAuMSwwLjYsMC40LDAuOFxuXHRcdGMwLjEsMC4xLDAuMywwLjEsMC40LDAuMWMwLjIsMCww''@;'; put 'put ''LjMsMCwwLjQtMC4xbDYuMy0zLjZjMC4zLTAuMiwwLjQtMC40LDAuNC0wLjhjMC0wLjMtMC4yLTAuNi0wLjQtMC44TDEyLDEwLjNsMi4yLTMuOFxuXHRcdGMwLjQtMC43LDEtMS4zLDEuNy0xLjdjMi0xLjEsNC41LTAuMyw1LjYsMS43YzAuMywwLjUsMC45LDAuNiwxLjQsMC40YzAuNS0wLjMs''@;'; put 'put ''MC42LTAuOSwwLjQtMS40QzIyLjYsNC41LDIxLjgsMy42LDIwLjgsMy4xeiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzIuMiwyMS4xbC0zLTUuM2wyLjMtMS4zYzAuMy0wLjIsMC40LTAuNCwwLjQtMC44YzAtMC4zLTAuMi0wLjYtMC40LTAu''@;'; put 'put ''OGwtNi4yLTMuNmMtMC4xLTAuMS0wLjMtMC4xLTAuNC0wLjFcblx0XHRjLTAuNSwwLTAuOSwwLjQtMC45LDAuOXY3LjJjMCwwLjMsMC4yLDAuNiwwLjQsMC44YzAuMSwwLjEsMC4zLDAuMSwwLjQsMC4xYzAuMiwwLDAuMy0wLjEsMC40LTAuMWwyLjItMS4zbDMsNS4zXG5cdFx0YzAuNywxLjIs''@;'; put 'put ''MC43LDIuOCwwLDRjLTAuNywxLjItMS45LDEuOS0zLjIsMS45aC0wLjljLTAuNiwwLTEsMC40LTEsMWMwLDAuNiwwLjQsMSwxLDFoMC45YzIuMSwwLDQtMS4xLDUtM1xuXHRcdEMzMy4yLDI1LjMsMzMuMiwyMywzMi4yLDIxLjF6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0yIiAvPjxwYXRoIGQ9Ik0yMS43LDI4LjRsLTYuMi0zLjZjLTAuMS0wLjEtMC4zLTAuMS0wLjQtMC4xYy0wLjUsMC0wLjksMC40LTAuOSwwLjl2Mi42SDkuM2MtMS41LDAtMi45LTAuOC0zLjYtMi4xXG5cdFx0Yy0wLjgtMS40LTAuOC0zLjEsMC00LjVjMC4zLTAuNSwwLjEtMS4xLTAuNC0x''@;'; put 'put ''LjRjLTAuNS0wLjMtMS4xLTAuMS0xLjQsMC40Yy0xLjIsMi0xLjIsNC41LDAsNi41YzEuMSwxLjksMy4xLDMuMSw1LjQsMy4xaDQuOHYyLjZcblx0XHRjMCwwLjMsMC4yLDAuNiwwLjQsMC44YzAuMSwwLjEsMC4zLDAuMSwwLjQsMC4xYzAuMSwwLDAuMywwLDAuNC0wLjFsNi4zLTMuNmMwLjMt''@;'; put 'put ''MC4yLDAuNC0wLjQsMC40LTAuOFxuXHRcdEMyMi4xLDI4LjgsMjEuOSwyOC41LDIxLjcsMjguNHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksZS5DbHJTaGFwZVRyZWU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLjYsMTEuN0MyOS4yLDUuOCwy''@;'; put 'put ''NCwxLjcsMTgsMS43Yy03LjIsMC0xMyw1LjgtMTMsMTNjMCw2LjgsNS4zLDEyLjQsMTIsMTIuOXY1YzAsMC42LDAuNCwxLDEsMXMxLTAuNCwxLTF2LTV2LTJWMjJcblx0YzAsMCwwLDAsMC0wLjF2LTMuNmw0LjctNC43YzAuNC0wLjQsMC40LTEsMC0xLjRjLTAuNC0wLjQtMS0wLjQtMS40LDBM''@;'; put 'put ''MTksMTUuNnYtM2wtMy4zLTMuM2MtMC40LTAuNC0xLTAuNC0xLjQsMFxuXHRjLTAuNCwwLjQtMC40LDEsMCwxLjRsMi43LDIuN3Y2LjJsLTMuOC0zLjhjLTAuNC0wLjQtMS0wLjQtMS40LDBjLTAuNCwwLjQtMC40LDEsMCwxLjRsNS4yLDUuMnYzLjJjLTUuNi0wLjUtMTAtNS4yLTEwLTEwLjlc''@;'; put 'put ''blx0YzAtNi4xLDQuOS0xMSwxMS0xMXMxMSw0LjksMTEsMTFjMCw0LjktMy4zLDkuMi04LDEwLjZ2Mi4xQzI4LDI1LjcsMzIuMywxOC43LDMwLjYsMTEuN3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwyQzEwLjgsMS43LDQuOCw3''@;'; put 'put ''LjMsNC41LDE0LjVDNC4yLDIxLjcsOS44LDI3LjcsMTcsMjh2LTUuMmwtNS4yLTUuMmMtMC40LTAuNC0wLjQtMSwwLTEuNGMwLjQtMC40LDEtMC40LDEuNCwwXG5cdGMwLDAsMCwwLDAsMGwzLjgsMy44di02LjJsLTIuNy0yLjdjLTAuNC0wLjQtMC40LTEsMC0xLjRjMC40LTAuNCwxLTAuNCwx''@;'; put 'put ''LjQsMGMwLDAsMCwwLDAsMGwzLjMsMy4zdjNsMy4zLTMuM2MwLjQtMC40LDEtMC40LDEuNCwwXG5cdGMwLDAsMCwwLDAsMGMwLjQsMC40LDAuNCwxLDAsMS40TDE5LDE4LjhWMjhjNy4yLTAuMywxMi44LTYuMywxMi41LTEzLjVTMjUuMiwxLjcsMTgsMnoiIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDI4Yy0wLjMsMC0wLjYsMC0xLDB2NWMwLDAuNiwwLjQsMSwxLDFzMS0wLjQsMS0xdi01QzE4LjcsMjgsMTguMywyOCwxOCwyOHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZUZp''@;'; put 'put ''c2g9KDAsYS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjeD0iMTEuNDkiIGN5PSIxNy41IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMy40OCw5LjI5YTEsMSwwLDAsMC0xLDBjLTMuMzcsMi01LjkxLDUuODEtNi45LDcuNDVM''@;'; put 'put ''MjQuODUsMThzLTEsMS42Mi0xLDEuNjJjLTEuNzYsMi40OS01LjEsNi4zNi04Ljc5LDYuMzYtNC42NSwwLTguNzUtNi4xNS05Ljg0LTcuOTQsMS4wOS0xLjc5LDUuMTgtNy45NCw5Ljg0LTcuOTQsMy41NCwwLDYuNzcsMy41OCw4LjU4LDYuMDdsLjI4LS40OHMuMzYtLjUxLjkzLTEuMjVDMjIu''@;'; put 'put ''NzIsMTEuNjQsMTkuMTgsOC4wNiwxNSw4LjA2Yy02LjU5LDAtMTEuNjcsOS4wNy0xMS44OCw5LjQ2TDIuODksMThsLjI3LjQ4Yy4yMS4zOSw1LjI5LDkuNDYsMTEuODgsOS40Niw1LjA2LDAsOS4yMi01LjM0LDExLThDMjYsMjAsMjcuMTgsMTgsMjcuMTgsMThoMGwuMDctLjExYTE4LjA2LDE4''@;'; put 'put ''LjA2LDAsMCwxLDEuODgtMi43NXMwLDAsMCwwYTIwLjMxLDIwLjMxLDAsMCwxLDIuODYtM1YyMy44OGEyMC45MywyMC45MywwLDAsMS0zLjYxLTRsLS4xNi4yNmgwbC0xLDEuNTlhMTguNzQsMTguNzQsMCwwLDAsNS4yMSw0Ljk1LDEsMSwwLDAsMCwuNS4xNCwxLjEzLDEuMTMsMCwwLDAsLjUt''@;'; put 'put ''LjEzLDEsMSwwLDAsMCwuNS0uODdWMTAuMTZBMSwxLDAsMCwwLDMzLjQ4LDkuMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlRm9ybT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjEsMTJIN2ExLDEsMCwwLDEtMS0xVjdB''@;'; put 'put ''MSwxLDAsMCwxLDcsNkgyMWExLDEsMCwwLDEsMSwxdjRBMSwxLDAsMCwxLDIxLDEyWk04LDEwSDIwVjcuOTRIOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMSwxNC4wOEg3YTEsMSwwLDAsMC0xLDFWMTlhMSwxLDAsMCwwLDEsMUgx''@;'; put 'put ''OC4zNkwyMiwxNi4zVjE1LjA4QTEsMSwwLDAsMCwyMSwxNC4wOFpNMjAsMThIOFYxNkgyMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xMS4wNiwzMS41MXYtLjA2bC4zMi0xLjM5SDRWNGgyMFYxNC4yNUwyNiwxMi4zNlYzYTEsMSww''@;'; put 'put ''LDAsMC0xLTFIM0ExLDEsMCwwLDAsMiwzVjMxYTEsMSwwLDAsMCwxLDFoOEEzLjQ0LDMuNDQsMCwwLDEsMTEuMDYsMzEuNTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjIsMTkuMTdsLS43OC43OUExLDEsMCwwLDAsMjIsMTkuMTda''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNNiwyNi45NGExLDEsMCwwLDAsMSwxaDQuODRsLjMtMS4zLjEzLS41NSwwLS4wNUg4VjI0aDYuMzRsMi0ySDdhMSwxLDAsMCwwLTEsMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMy40OSwxNi42NywzMC4xMiwxMy4zYTEuNjEsMS42MSwwLDAsMC0yLjI4LDBoMEwxNC4xMywyNy4wOSwxMywzMS45YTEuNjEsMS42MSwwLDAsMCwxLjI2LDEuOSwxLjU1LDEuNTUsMCwwLDAsLjMxLDAsMS4xNSwxLjE1LDAsMCwwLC4zNywwbDQu''@;'; put 'put ''ODUtMS4wN0wzMy40OSwxOWExLjYsMS42LDAsMCwwLDAtMi4yN1pNMTguNzcsMzAuOTFsLTMuNjYuODFMMTYsMjguMDksMjYuMjgsMTcuN2wyLjgyLDIuODJaTTMwLjIzLDE5LjM5bC0yLjgyLTIuODJMMjksMTVsMi44NCwyLjg0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTYiIC8+JyksZS5DbHJTaGFwZUZ1ZWw9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIwLjEyLDM0SDUuOUEyLjgxLDIuODEsMCwwLDEsMywzMS4xOVY0Ljg2QTIuOSwyLjksMCwwLDEsNiwyLjA3SDIwLjIyQTIuNzIsMi43MiwwLDAsMSwyMyw0Ljg2VjMxLjE5QTIuODIsMi44''@;'; put 'put ''MiwwLDAsMSwyMC4xMiwzNFpNNS45LDRBLjg3Ljg3LDAsMCwwLDUsNC44NlYzMS4xOWEuODcuODcsMCwwLDAsLjg3Ljg3SDIwLjEyYS45NC45NCwwLDAsMCwuOTUtLjg3VjQuODZBLjk0Ljk0LDAsMCwwLDIwLjEyLDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgLz48cGF0aCBkPSJNMjkuNTMsMzRBMy41LDMuNSwwLDAsMSwyNiwzMC41VjIzYTIsMiwwLDAsMC0yLTJIMjIuNTdhMSwxLDAsMCwxLDAtMkgyNGE0LDQsMCwwLDEsNCw0VjMwLjVhMS41LDEuNSwwLDAsMCwzLDBWMTcuM2wtMy4xMy03QTIuMjksMi4yOSwwLDAsMCwyNS44LDloLS43M2Ex''@;'; put 'put ''LDEsMCwxLDEsMC0yaC43M2E0LjMsNC4zLDAsMCwxLDMuOTMsMi41NWwzLjIxLDcuMTZhMSwxLDAsMCwxLC4wOS40MVYzMC41QTMuNSwzLjUsMCwwLDEsMjkuNTMsMzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTgsOUg4QTEsMSww''@;'; put 'put ''LDEsMSw4LDdIMThhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0xOCwxM0g4QTEsMSwwLDEsMSw4LDExSDE4QTEsMSwwLDEsMSwxOCwxM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC00IiAvPjxwYXRoIGQ9Ik0yNSwxMi4wOGExLDEsMCwwLDEtMS0xdi02YTEsMSwwLDAsMSwyLDB2NkExLDEsMCwwLDEsMjUsMTIuMDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz4nKSxlLkNsclNoYXBlU25vd2ZsYWtlPSgwLGEuY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGQ9Ik0xOC4wNSwzMy42MWExLDEsMCwwLDEtMS0xVjMuMzdhMSwxLDAsMSwxLDEuOTUsMFYzMi42M0ExLDEsMCwwLDEsMTguMDUsMzMuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTguMDYsMTAuMDcsMTQuNTIsNi41''@;'; put 'put ''NGExLDEsMCwwLDEsMC0xLjQxLDEsMSwwLDAsMSwxLjQxLDBsMi4xMywyLjEyLDIuMTItMi4xMmExLDEsMCwwLDEsMS40MSwwLDEsMSwwLDAsMSwwLDEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjAuODUsMzEuMTdhMSwxLDAs''@;'; put 'put ''MCwxLS43LS4yOUwxOCwyOC43NiwxNS45LDMwLjg4YTEsMSwwLDAsMS0xLjQxLDAsMSwxLDAsMCwxLDAtMS40MkwxOCwyNS45M2wzLjU0LDMuNTNhMSwxLDAsMCwxLDAsMS40MkExLDEsMCwwLDEsMjAuODUsMzEuMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MyIgLz48cGF0aCBkPSJNMzAuOTIsMjYuNWExLDEsMCwwLDEtLjUtLjEzbC0yNi0xNUExLDEsMCwwLDEsNC4wNywxMGExLDEsMCwwLDEsMS4zNy0uMzZsMjYsMTVhMSwxLDAsMCwxLS41LDEuODdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBk''@;'; put 'put ''PSJNNiwxNS4zN2ExLDEsMCwwLDEtLjI2LTJsMi45LS43OEw3Ljg0LDkuNzNhMSwxLDAsMSwxLDEuOTMtLjUyTDExLjA3LDE0LDYuMjQsMTUuMzNBLjgyLjgyLDAsMCwxLDYsMTUuMzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMjcu''@;'; put 'put ''MDUsMjcuNTRhMSwxLDAsMCwxLTEtLjc1TDI0LjgsMjJsNC44Mi0xLjNhMSwxLDAsMSwxLC41MiwxLjkzbC0yLjkuNzguNzgsMi45YTEsMSwwLDAsMS0uNzEsMS4yMkEuNzUuNzUsMCwwLDEsMjcuMDUsMjcuNTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIg''@;'; put 'put ''Lz48cGF0aCBkPSJNNC45NCwyNi41YTEsMSwwLDAsMS0uNS0xLjg3bDI2LTE1YTEsMSwwLDAsMSwxLjM2LjM2LDEsMSwwLDAsMS0uMzYsMS4zN2wtMjYsMTVBMSwxLDAsMCwxLDQuOTQsMjYuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPjxwYXRoIGQ9''@;'; put 'put ''Ik04LjgxLDI3LjU0YS43NS43NSwwLDAsMS0uMjYsMCwxLDEsMCwwLDEtLjcxLTEuMjJsLjc4LTIuOS0yLjktLjc4QTEsMSwwLDAsMSw1LDIxLjM4YTEsMSwwLDAsMSwxLjIzLS43MUwxMS4wNywyMmwtMS4zLDQuODJBMSwxLDAsMCwxLDguODEsMjcuNTRaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgLz48cGF0aCBkPSJNMjkuODgsMTUuMzdhLjgyLjgyLDAsMCwxLS4yNiwwTDI0LjgsMTRsMS4yOS00LjgzQTEsMSwwLDEsMSwyOCw5LjczbC0uNzgsMi44OSwyLjkuNzhhMSwxLDAsMCwxLS4yNiwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTkiIC8+JyksZS5DbHJTaGFwZVRhYmxlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik04LDM0YTEsMSwwLDAsMS0xLTFWMi45MmExLDEsMCwwLDEsMiwwVjMzQTEsMSwwLDAsMSw4LDM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; put 'put ''IC8+PHBhdGggZD0iTTE3LDMzLjkyYTEsMSwwLDAsMS0xLTFWOS4xYTEsMSwwLDEsMSwyLDBWMzIuOTJBMSwxLDAsMCwxLDE3LDMzLjkyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI2LDM0YTEsMSwwLDAsMS0xLTFWOWExLDEsMCww''@;'; put 'put ''LDEsMiwwVjMzQTEsMSwwLDAsMSwyNiwzNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMy4xMSwxOGgtMjVhMSwxLDAsMSwxLDAtMmgyNWExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTQiIC8+PHBhdGggZD0iTTMzLjEsMjYuOTRIOC4xQTEsMSwwLDEsMSw4LjEsMjVoMjVhMSwxLDAsMSwxLDAsMS45MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMyw4LjkySDNBMSwxLDAsMSwxLDMsN0gzM2ExLDEsMCwxLDEs''@;'; put 'put ''MCwxLjk0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksZS5DbHJTaGFwZVZvbHVtZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUuODgsMzJIMTJhNCw0LDAsMCwxLTQtNFYxMS40NkwyLjMxLDUuNzdhMSwxLDAsMCwxLS4yMi0xLjA5QTEs''@;'; put 'put ''MSwwLDAsMSwzLDQuMDZIMjguODZhMSwxLDAsMCwxLDEsMVYyOEE0LDQsMCwwLDEsMjUuODgsMzJaTTUuNDMsNmw0LjI4LDQuMzRhLjc1Ljc1LDAsMCwxLC4yMS42M3YxN0EyLjEzLDIuMTMsMCwwLDAsMTIsMzBIMjUuODhBMi4xLDIuMSwwLDAsMCwyOCwyOFY2WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMzLDE2YTEsMSwwLDAsMS0xLTFWNkgyOC44NmEuOTIuOTIsMCwwLDEtMS0uOSwxLDEsMCwwLDEsMS0xSDMzYTEsMSwwLDAsMSwxLDFWMTVBMSwxLDAsMCwxLDMzLDE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI0LDExSDE4YTEsMSwwLDEsMSwwLTJIMjRhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNCwxNUgyMWExLDEsMCwxLDEsMC0ySDI0YTEsMSwwLDEsMSwwLDJa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMjQsMTlIMThhMSwxLDAsMSwxLDAtMkgyNGExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTI0LDI3SDE4YTEs''@;'; put 'put ''MSwwLDEsMSwwLTJIMjRhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik0yNCwyM0gyMUExLDEsMCwxLDEsMjEsMjFIMjRBMSwxLDAsMSwxLDI0LDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTciIC8+JyksZS5DbHJTaGFwZUNyb3NzaGFpcnM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDI5QTExLDExLDAsMSwxLDI5LDE4LDExLDExLDAsMCwxLDE4LDI5Wk0xOCw5YTksOSwwLDEsMCw5LDlBOSw5LDAsMCwwLDE4LDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMjNhNSw1LDAsMSwxLDUtNUE1LDUsMCwwLDEsMTgsMjNabTAtOGEzLDMsMCwxLDAsMywzQTMsMywwLDAsMCwxOCwxNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xOCw5''@;'; put 'put ''YTEsMSwwLDAsMS0xLTFWMi44YTEsMSwwLDAsMSwyLDBWOEExLDEsMCwwLDEsMTgsOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0xOCwzNGExLDEsMCwwLDEtMS0xVjI4YTEsMSwwLDAsMSwyLDB2NUExLDEsMCwwLDEsMTgsMzRaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNOCwxOUgzLjE3YTEsMSwwLDAsMSwwLTJIOGExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMzLjEsMTlIMjhhMSwx''@;'; put 'put ''LDAsMCwxLDAtMmg1LjFhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLGUuQ2xyU2hhcGVDaXJjbGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4LDM0''@;'; put 'put ''Wk0xOCw0QTE0LDE0LDAsMSwwLDMyLDE4LDE0LDE0LDAsMCwwLDE4LDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVEb3RDaXJjbGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDExYTcsNywwLDEsMS03LDcsNyw3LDAsMCwxLDctNyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDM0''@;'; put 'put ''QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4LDM0Wk0xOCw0QTE0LDE0LDAsMSwwLDMyLDE4LDE0LDE0LDAsMCwwLDE4LDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlQmV0YT0oMCxhLmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBkPSJNNy4yMSwxNC4wN2gzYTEuNjEsMS42MSwwLDAsMSwxLjgxLDEuNSwxLjQ0LDEuNDQsMCwwLDEtLjg0LDEuMzQsMS42NywxLjY3LDAsMCwxLDEuMSwxLjUzLDEuNzUsMS43NSwwLDAsMS0yLDEuNjNINy4yMVptMi43MSwyLjQyYy40OCwwLC44Mi0uMjguODItLjY3cy0uMzQtLjY1LS44''@;'; put 'put ''Mi0uNjVIOC40OXYxLjMyWm0uMiwyLjQ4YS43NS43NSwwLDEsMCwwLTEuNDdIOC40OVYxOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xNC41NSwxNS4yM3YxLjJoM3YxLjE2aC0zdjEuMzJoMy4zM3YxLjE2SDEzLjI2di02aDQu''@;'; put 'put ''NjJ2MS4xNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMC40MSwxNS4yM0gxOC41NFYxNC4wN2g1djEuMTZIMjEuN3Y0Ljg0SDIwLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAg''@;'; put 'put ''PHBhdGggZD0iTTI4LDE5LjEySDI1LjMybC0uMzguOTVIMjMuNWwyLjQ0LTZoMS40NGwyLjQ1LDZIMjguMzhaTTI3LjU1LDE4bC0uODktMi4xOUwyNS43NywxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik04LjA2LDMwYS44NC44''@;'; put 'put ''NCwwLDAsMS0uMzgtLjA4QTEsMSwwLDAsMSw3LjA2LDI5VjI1aC00YTEsMSwwLDAsMS0xLTFWMTBhMSwxLDAsMCwxLDEtMWgzMGExLDEsMCwwLDEsMSwxVjI0YTEsMSwwLDAsMS0xLDFIMTMuNDhMOC43NywyOS43MUExLDEsMCwwLDEsOC4wNiwzMFptLTQtN2g0YTEsMSwwLDAsMSwxLDF2Mi41''@;'; put 'put ''OWwzLjMtMy4zYTEsMSwwLDAsMSwuNy0uMjloMTlWMTFoLTI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cblxuICA8cG9seWdvbiBwb2ludHM9IjI1LjgsMTggMjcuNSwxOCAyNi43LDE1LjgiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEiLz5cblx0PHBhdGggZD0iTTEwLjQsMTcuNWMtMC4xLDAtMC4yLDAtMC4zLDBIOC41VjE5bDEuNiwwYzAuNCwwLjEsMC44LTAuMiwwLjktMC42QzExLjEsMTgsMTAuOCwxNy42LDEwLjQsMTcuNXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cblx0PHBh''@;'; put 'put ''dGggZD0iTTEwLjcsMTUuOGMwLTAuNC0wLjMtMC43LTAuOC0wLjdIOC41djEuM2gxLjRDMTAuNCwxNi41LDEwLjcsMTYuMiwxMC43LDE1Ljh6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+XG5cdDxwYXRoIGQ9Ik0zMy4xLDloLTMwYy0wLjYsMC0xLDAuNC0xLDF2''@;'; put 'put ''MTRjMCwwLjYsMC40LDEsMSwxaDR2NGMwLDAuNCwwLjIsMC44LDAuNiwwLjlDNy44LDMwLDcuOSwzMCw4LjEsMzBjMC4zLDAsMC41LTAuMSwwLjctMC4zXG5cdFx0bDQuNy00LjdoMTkuNmMwLjYsMCwxLTAuNCwxLTFWMTBDMzQuMSw5LjQsMzMuNiw5LDMzLjEsOXogTTEwLjQsMjAuMWMtMC4x''@;'; put 'put ''LDAtMC4xLDAtMC4yLDBINy4ydi02aDNjMC45LTAuMSwxLjcsMC41LDEuOCwxLjRcblx0XHRjMCwwLDAsMC4xLDAsMC4xYzAsMC42LTAuMywxLjEtMC44LDEuM2MwLjYsMC4yLDEuMSwwLjgsMS4xLDEuNUMxMi4yLDE5LjQsMTEuNCwyMC4xLDEwLjQsMjAuMXogTTE3LjksMTUuMmgtMy4zdjEu''@;'; put 'put ''MmgzdjEuMmgtM3YxLjNcblx0XHRoMy4zdjEuMmgtNC42di02aDQuNlYxNS4yeiBNMjEuNywyMC4xaC0xLjN2LTQuOGgtMS45di0xLjJoNXYxLjJoLTEuOFYyMC4xeiBNMjguNCwyMC4xbC0wLjQtMWgtMi43bC0wLjQsMWgtMS40bDIuNC02aDEuNGwyLjUsNlxuXHRcdEgyOC40eiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIvPlxuJyksZS5DbHJTaGFwZUZpcnN0QWlkPSgwLGEuY2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNMzIsNkgyMy45MVY0LjVBMi41LDIuNSwwLDAsMCwyMS40MSwyaC03YTIuNSwyLjUsMCwwLDAtMi41LDIuNVY2SDRBMiwyLDAsMCww''@;'; put 'put ''LDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNMTMuOTEsNC41YS41LjUsMCwwLDEsLjUtLjVoN2EuNS41LDAsMCwxLC41LjVWNmgtOFpNNCwyOFY4SDMyVjI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; put 'put ''Lz5cbiAgPHBhdGggZD0iTTIwLjE1LDI1LjJIMTYuNzRhMS4zLDEuMywwLDAsMS0xLjMtMS4zVjIxLjJoLTIuN2ExLjMsMS4zLDAsMCwxLTEuMy0xLjNWMTYuNWExLjMsMS4zLDAsMCwxLDEuMy0xLjNoMi43VjEyLjVhMS4zLDEuMywwLDAsMSwxLjMtMS4zaDMuNDFhMS4zLDEuMywwLDAsMSwx''@;'; put 'put ''LjI5LDEuM3YyLjdoMi43MWExLjMsMS4zLDAsMCwxLDEuMjksMS4zdjMuNGExLjMsMS4zLDAsMCwxLTEuMjksMS4zSDIxLjQ0djIuN0ExLjMsMS4zLDAsMCwxLDIwLjE1LDI1LjJaTTE3LDIzLjZoMi44MXYtNGg0VjE2LjhoLTR2LTRIMTd2NEgxM3YyLjhoNFptNy4xMS02LjhaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuXG4gIDxwYXRoIGQ9Ik0zMiw2SDIzLjkxVjQuNUEyLjUsMi41LDAsMCwwLDIxLjQxLDJoLTdhMi41LDIuNSwwLDAsMC0yLjUsMi41VjZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlY4QTIsMiwwLDAsMCwzMiw2Wk0xMy45MSw0LjVhLjUuNSwwLDAsMSwuNS0uNWg3YS41LjUsMCwwLDEsLjUuNVY2aC04Wk0yNC42NCwxOS45YS41LjUsMCwwLDEtLjUuNWgtMy41djMuNWEuNS41LDAsMCwxLS41LjVoLTMuNGEuNS41LDAsMCwxLS41LS41VjIwLjRoLTMuNWEuNS41LDAsMCwx''@;'; put 'put ''LS41LS41VjE2LjVhLjUuNSwwLDAsMSwuNS0uNWgzLjVWMTIuNWEuNS41LDAsMCwxLC41LS41aDMuNGEuNS41LDAsMCwxLC41LjVWMTZoMy41YS41LjUsMCwwLDEsLjUuNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgJyksZS5DbHJTaGFwZUNvbG9yUGFs''@;'; put 'put ''ZXR0ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjEuNTQsMjMuMDVhMy4yMiwzLjIyLDAsMCwxLTMtMS43N0EzLjA1LDMuMDUsMCwwLDEsMTguNSwxOWEzLjc0LDMuNzQsMCwwLDEsMS45NS0yLjA2QTMuNCwzLjQsMCwwLDEsMjUsMTguM2EzLDMsMCwwLDEsLjA4LDIuMzIsMy42OSwz''@;'; put 'put ''LjY5LDAsMCwxLTIsMi4wN0EzLjg1LDMuODUsMCwwLDEsMjEuNTQsMjMuMDVabS41NC00LjkxYTIuNDEsMi40MSwwLDAsMC0xLC4yMWgwQTIuMTMsMi4xMywwLDAsMCwyMCwxOS41MWExLjM3LDEuMzcsMCwwLDAsMCwxLjA5LDEuODEsMS44MSwwLDAsMCwyLjQ1LjYzLDIuMSwyLjEsMCwwLDAs''@;'; put 'put ''MS4xMi0xLjE1LDEuNCwxLjQsMCwwLDAsMC0xLjFBMS41OSwxLjU5LDAsMCwwLDIyLjA4LDE4LjE0Wm0tMS4yOS0uNTJoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xNi4xOSwzMy44N0ExMy43MiwxMy43MiwwLDAsMSw2LjQs''@;'; put 'put ''MzAsMTMuODYsMTMuODYsMCwwLDEsMiwyMGMwLTQuNCwyLTguODQsNS42OC0xMi41YTE4LjIsMTguMiwwLDAsMSwxMy4xLTUuMzdoLjEyYzMuMzMsMCw2Ljg1LDEuNDksNy4yNCw0LjczLjIxLDEuNzctLjU5LDMuNDctMS4yOSw1LS41NSwxLjE3LTEuMTEsMi4zOS0uNzIsMi44MXMxLC4xMiwy''@;'; put 'put ''LjA5LS4yYTYuMjcsNi4yNywwLDAsMSwzLjM4LS4zNiwzLDMsMCwwLDEsMS44NywxLjU2Yy45NCwxLjgzLjQ3LDQuNjctLjIzLDYuNTRoMEExNy4zOCwxNy4zOCwwLDAsMSwyOSwyOC43NCwxOS40MywxOS40MywwLDAsMSwxNi4xOSwzMy44N1pNMjAuNzgsNC4xNkExNi4yMiwxNi4yMiwwLDAs''@;'; put 'put ''MCw5LjA5LDlDNS43OSwxMi4yMyw0LDE2LjE2LDQsMjBBMTEuOTIsMTEuOTIsMCwwLDAsNy44LDI4LjZjNS4zOCw1LjI1LDE0LjYyLDMuNTUsMTkuODctMS4zM2ExNS41MiwxNS41MiwwLDAsMCwzLjctNS43NWgwYy43LTEuOS44NC0zLjkyLjMyLTQuOTJhMSwxLDAsMCwwLS42MS0uNTUsNC44''@;'; put 'put ''Niw0Ljg2LDAsMCwwLTIuMjkuMzVjLTEuMzEuMzktMywuODktNC4xMi0uMzUtMS4zMi0xLjQtLjQ2LTMuMjUuMzctNWE3LjkzLDcuOTMsMCwwLDAsMS4xMS0zLjljLS4yNC0yLTIuODEtMi45NS01LjI2LTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxu''@;'; put 'put ''ICA8cGF0aCBkPSJNMjMuODcsMjYuNjVBMi41OSwyLjU5LDAsMCwwLDIyLjM1LDI1TDIyLDI0LjlsLS40NiwxLjUzLjE2LDBhMSwxLDAsMCwxLC42LjYxYy4xNy42LS40MSwxLjMxLTEuMjYsMS41NXMtMS43MS0uMDctMS44OC0uNjZsLTEuNTQuNDNoMGEyLjgzLDIuODMsMCwwLDAsMi44NCwx''@;'; put 'put ''LjkxLDQsNCwwLDAsMCwxLS4xNEEzLDMsMCwwLDAsMjMuODcsMjYuNjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMTUuMDcsMjUuNTloMGEyLjczLDIuNzMsMCwwLDAtMi4yNC0xLjg0bC0uMjcsMS41OGExLjEyLDEuMTIsMCww''@;'; put 'put ''LDEsMSwuN2MuMTcuNTktLjQxLDEuMy0xLjI2LDEuNTRBMS45MiwxLjkyLDAsMCwxLDExLDI3LjUyYTEsMSwwLDAsMS0uNi0uNjFzMC0uMDksMC0uMTNsLTEuNTguMTZhMiwyLDAsMCwwLC4wNi40MUEyLjU5LDIuNTksMCwwLDAsMTAuMzcsMjlhMy4zNiwzLjM2LDAsMCwwLDEuMzEuMjUsMy43''@;'; put 'put ''LDMuNywwLDAsMCwxLS4xNEEzLDMsMCwwLDAsMTUuMDcsMjUuNTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMTAuNzgsMTkuMTdhMi41OSwyLjU5LDAsMCwwLTEuNTItMS42NSwyLjkxLDIuOTEsMCwwLDAtLjUtLjE2bC0uMzcs''@;'; put 'put ''MS41NmExLjIxLDEuMjEsMCwwLDEsLjI1LjA4LDEsMSwwLDAsMSwuNi42Yy4xNy42LS40MSwxLjMxLTEuMjYsMS41NXMtMS43MS0uMDYtMS44OC0uNjZhLjg2Ljg2LDAsMCwxLDAtLjM5bC0xLjU2LS4zNGEyLjQsMi40LDAsMCwwLDAsMS4xNkEyLjgzLDIuODMsMCwwLDAsNy40LDIyLjgzYTQs''@;'; put 'put ''NCwwLDAsMCwxLS4xNEEzLDMsMCwwLDAsMTAuNzgsMTkuMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICA8cGF0aCBkPSJNMTMuNDUsMTEuNGEyLjU5LDIuNTksMCwwLDAtMS41Mi0xLjY1LDEuMTcsMS4xNywwLDAsMC0uMi0uMDZsLS41MiwxLjUx''@;'; put 'put ''YS4zOC4zOCwwLDAsMSwuMSwwLDEsMSwwLDAsMSwuNi42Yy4xNy42LS40MSwxLjMxLTEuMjYsMS41NWEyLjA2LDIuMDYsMCwwLDEtMS4yOC0uMDUsMSwxLDAsMCwxLS42LS42MS44NS44NSwwLDAsMSwwLS4zMmwtMS41OC0uMTlhMi4zLDIuMywwLDAsMCwuMDYuOTRBMi41NiwyLjU2LDAsMCww''@;'; put 'put ''LDguNzUsMTQuOGEzLjM3LDMuMzcsMCwwLDAsMS4zMS4yNiw0LDQsMCwwLDAsMS0uMTRBMywzLDAsMCwwLDEzLjQ1LDExLjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPlxuICA8cGF0aCBkPSJNMjEsNi43OGEyLjU2LDIuNTYsMCwwLDAtMS41Mi0xLjY1''@;'; put 'put ''bC0uMy0uMUwxOC43LDYuNTZsLjE1LDBhMSwxLDAsMCwxLC42LjYxYy4xNy42LS40MSwxLjMtMS4yNiwxLjU0cy0xLjcxLS4wNi0xLjg4LS42NWEuOS45LDAsMCwxLC4wNi0uNThMMTQuODksNi45YTIuNDcsMi40NywwLDAsMC0uMTIsMS42MywyLjg0LDIuODQsMCwwLDAsMi44NCwxLjkxLDMu''@;'; put 'put ''NTgsMy41OCwwLDAsMCwxLS4xNUEzLDMsMCwwLDAsMjEsNi43OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03Ii8+XG5cbiAgPHBhdGggZD0iTTMyLjIzLDE0Ljg5Yy0yLjEtLjU2LTQuOTMsMS44LTYuMzQuMy0xLjcxLTEuODIsMi4yNy01LjUzLDEuODYtOC45''@;'; put 'put ''Mi0uMzMtMi43OC0zLjUxLTQuMDgtNi42Ni00LjFBMTguNSwxOC41LDAsMCwwLDcuNzQsNy41OWMtNi42NCw2LjU5LTguMDcsMTYtMS4zNywyMi40OCw2LjIxLDYsMTYuNjEsNC4yMywyMi42Ny0xLjRhMTcuNzMsMTcuNzMsMCwwLDAsNC4yMi02LjU0QzM0LjM0LDE5LjIzLDM0LjQ0LDE1LjQ5''@;'; put 'put ''LDMyLjIzLDE0Ljg5Wk05LjQsMTAuNTdhMi4yMywyLjIzLDAsMCwxLDIuODcsMS4yMSwyLjIyLDIuMjIsMCwwLDEtMS44MSwyLjUzQTIuMjIsMi4yMiwwLDAsMSw3LjU5LDEzLjEsMi4yMywyLjIzLDAsMCwxLDkuNCwxMC41N1pNNS4wNywyMC44MmEyLjIyLDIuMjIsMCwwLDEsMS44Mi0yLjUz''@;'; put 'put ''QTIuMjIsMi4yMiwwLDAsMSw5Ljc1LDE5LjUsMi4yMywyLjIzLDAsMCwxLDcuOTQsMjIsMi4yNCwyLjI0LDAsMCwxLDUuMDcsMjAuODJabTcsOC4zM2EyLjIyLDIuMjIsMCwwLDEtMi44Ny0xLjIxQTIuMjMsMi4yMywwLDAsMSwxMSwyNS40MWEyLjIzLDIuMjMsMCwwLDEsMi44NywxLjIxQTIu''@;'; put 'put ''MjIsMi4yMiwwLDAsMSwxMiwyOS4xNVpNMTUsOC4yNmEyLjIzLDIuMjMsMCwwLDEsMS44MS0yLjUzLDIuMjQsMi4yNCwwLDAsMSwyLjg3LDEuMjEsMi4yMiwyLjIyLDAsMCwxLTEuODIsMi41M0EyLjIxLDIuMjEsMCwwLDEsMTUsOC4yNlptNS44MiwyMi4xOWEyLjIyLDIuMjIsMCwwLDEtMi44''@;'; put 'put ''Ny0xLjIxLDIuMjMsMi4yMywwLDAsMSwxLjgxLTIuNTMsMi4yNCwyLjI0LDAsMCwxLDIuODcsMS4yMUEyLjIyLDIuMjIsMCwwLDEsMjAuNzgsMzAuNDVabTUtMTAuNDZhMy4yLDMuMiwwLDAsMS0xLjY5LDEuNzYsMy41MywzLjUzLDAsMCwxLTEuNC4zLDIuNzgsMi43OCwwLDAsMS0yLjU2LTEu''@;'; put 'put ''NSwyLjQ5LDIuNDksMCwwLDEtLjA3LTIsMy4yLDMuMiwwLDAsMSwxLjY5LTEuNzYsMywzLDAsMCwxLDQsMS4yQTIuNTQsMi41NCwwLDAsMSwyNS43OSwyMFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxlLkVzc2VudGlhbFNoYXBlcz17ImFkZC10ZXh0Ijpl''@;'; put 'put ''LkNsclNoYXBlQWRkVGV4dCwiYWxhcm0tb2ZmIjplLkNsclNoYXBlQWxhcm1PZmYscGluYm9hcmQ6ZS5DbHJTaGFwZVBpbmJvYXJkLG5ldzplLkNsclNoYXBlTmV3LCJidWJibGUtZXhjbGFtYXRpb24iOmUuQ2xyU2hhcGVCdWJibGVFeGNsYW1hdGlvbiwiZ3JpZC12aWV3IjplLkNsclNoYXBl''@;'; put 'put ''R3JpZFZpZXcsImN1cnNvci1hcnJvdyI6ZS5DbHJTaGFwZUN1cnNvckFycm93LCJjdXJzb3ItaGFuZCI6ZS5DbHJTaGFwZUN1cnNvckhhbmQsImN1cnNvci1oYW5kLWNsaWNrIjplLkNsclNoYXBlQ3Vyc29ySGFuZENsaWNrLCJjdXJzb3ItaGFuZC1ncmFiIjplLkNsclNoYXBlQ3Vyc29ySGFu''@;'; put 'put ''ZEdyYWIsImN1cnNvci1oYW5kLW9wZW4iOmUuQ2xyU2hhcGVDdXJzb3JIYW5kT3BlbiwiY3Vyc29yLW1vdmUiOmUuQ2xyU2hhcGVDdXJzb3JNb3ZlLCJmaXJzdC1haWQiOmUuQ2xyU2hhcGVGaXJzdEFpZCxyZXNpemU6ZS5DbHJTaGFwZVJlc2l6ZSxvYmplY3RzOmUuQ2xyU2hhcGVPYmplY3Rz''@;'; put 'put ''LGJvb2s6ZS5DbHJTaGFwZUJvb2ssYXN0ZXJpc2s6ZS5DbHJTaGFwZUFzdGVyaXNrLGJ1ZzplLkNsclNoYXBlQnVnLHNjaXNzb3JzOmUuQ2xyU2hhcGVTY2lzc29ycyx0aGVybW9tZXRlcjplLkNsclNoYXBlVGhlcm1vbWV0ZXIscGVuY2lsOmUuQ2xyU2hhcGVQZW5jaWwsbm90ZTplLkNsclNo''@;'; put 'put ''YXBlTm90ZSxyZWZyZXNoOmUuQ2xyU2hhcGVSZWZyZXNoLHN5bmM6ZS5DbHJTaGFwZVN5bmMsInZpZXctbGlzdCI6ZS5DbHJTaGFwZVZpZXdMaXN0LCJ2aWV3LWNhcmRzIjplLkNsclNoYXBlVmlld0NhcmRzLCJ0cmVlLXZpZXciOmUuQ2xyU2hhcGVUcmVlVmlldyxsaWdodGJ1bGI6ZS5DbHJT''@;'; put 'put ''aGFwZUxpZ2h0YnVsYixkb3dubG9hZDplLkNsclNoYXBlRG93bmxvYWQsdXBsb2FkOmUuQ2xyU2hhcGVVcGxvYWQsbG9jazplLkNsclNoYXBlTG9jayx1bmxvY2s6ZS5DbHJTaGFwZVVubG9jayx1c2VyczplLkNsclNoYXBlVXNlcnMsInBvcC1vdXQiOmUuQ2xyU2hhcGVQb3BPdXQsZmlsdGVy''@;'; put 'put ''OmUuQ2xyU2hhcGVGaWx0ZXIscGluOmUuQ2xyU2hhcGVQaW4sZmlsZTplLkNsclNoYXBlRmlsZSxwbHVzOmUuQ2xyU2hhcGVQbHVzLG1pbnVzOmUuQ2xyU2hhcGVNaW51cywibWludXMtY2lyY2xlIjplLkNsclNoYXBlTWludXNDaXJjbGUsInBsdXMtY2lyY2xlIjplLkNsclNoYXBlUGx1c0Np''@;'; put 'put ''cmNsZSxiYW46ZS5DbHJTaGFwZUJhbiwidGltZXMtY2lyY2xlIjplLkNsclNoYXBlVGltZXNDaXJjbGUsdHJhc2g6ZS5DbHJTaGFwZVRyYXNoLGNpcmNsZTplLkNsclNoYXBlQ2lyY2xlLHRhZzplLkNsclNoYXBlVGFnLHRhZ3M6ZS5DbHJTaGFwZVRhZ3MsaGlzdG9yeTplLkNsclNoYXBlSGlz''@;'; put 'put ''dG9yeSxjbG9jazplLkNsclNoYXBlQ2xvY2ssImFsYXJtLWNsb2NrIjplLkNsclNoYXBlQWxhcm1DbG9jayxhcnJvdzpjLkNsclNoYXBlQXJyb3csImNpcmNsZS1hcnJvdyI6ZS5DbHJTaGFwZUNpcmNsZUFycm93LCJjaGlsZC1hcnJvdyI6ZS5DbHJTaGFwZUNoaWxkQXJyb3csY29weTplLkNs''@;'; put 'put ''clNoYXBlQ29weSxoZWxwOmUuQ2xyU2hhcGVIZWxwLGxvZ2luOmUuQ2xyU2hhcGVMb2dpbixsb2dvdXQ6ZS5DbHJTaGFwZUxvZ291dCxwcmludGVyOmUuQ2xyU2hhcGVQcmludGVyLHdvcmxkOmUuQ2xyU2hhcGVXb3JsZCxzbGlkZXI6ZS5DbHJTaGFwZVNsaWRlcixjbGlwYm9hcmQ6ZS5DbHJT''@;'; put 'put ''aGFwZUNsaXBib2FyZCxmaXJld2FsbDplLkNsclNoYXBlRmlyZXdhbGwsbGlzdDplLkNsclNoYXBlTGlzdCxyZWRvOmUuQ2xyU2hhcGVSZWRvLHVuZG86ZS5DbHJTaGFwZVVuZG8sc2Nyb2xsOmUuQ2xyU2hhcGVTY3JvbGwsImZpbGUtc2V0dGluZ3MiOmUuQ2xyU2hhcGVGaWxlU2V0dGluZ3Ms''@;'; put 'put ''InR3by13YXktYXJyb3dzIjplLkNsclNoYXBlVHdvV2F5QXJyb3dzLHN3aXRjaDplLkNsclNoYXBlU3dpdGNoLHRvb2xzOmUuQ2xyU2hhcGVUb29scywid2luZG93LWNsb3NlIjplLkNsclNoYXBlV2luZG93Q2xvc2UsIndpbmRvdy1tYXgiOmUuQ2xyU2hhcGVXaW5kb3dNYXgsIndpbmRvdy1t''@;'; put 'put ''aW4iOmUuQ2xyU2hhcGVXaW5kb3dNaW4sIndpbmRvdy1yZXN0b3JlIjplLkNsclNoYXBlV2luZG93UmVzdG9yZSwiem9vbS1pbiI6ZS5DbHJTaGFwZVpvb21Jbiwiem9vbS1vdXQiOmUuQ2xyU2hhcGVab29tT3V0LGtleTplLkNsclNoYXBlS2V5LGxpYnJhcnk6ZS5DbHJTaGFwZUxpYnJhcnks''@;'; put 'put ''Ym9sdDplLkNsclNoYXBlQm9sdCx3cmVuY2g6ZS5DbHJTaGFwZVdyZW5jaCxidWxsc2V5ZTplLkNsclNoYXBlQnVsbHNleWUsdGFyZ2V0OmUuQ2xyU2hhcGVUYXJnZXQsZmxhbWU6ZS5DbHJTaGFwZUZsYW1lLGhvdXJnbGFzczplLkNsclNoYXBlSG91cmdsYXNzLCJuby1hY2Nlc3MiOmUuQ2xy''@;'; put 'put ''U2hhcGVOb0FjY2Vzcyxvcmdhbml6YXRpb246ZS5DbHJTaGFwZU9yZ2FuaXphdGlvbixiYWxhbmNlOmUuQ2xyU2hhcGVCYWxhbmNlLCJpZC1iYWRnZSI6ZS5DbHJTaGFwZUlkQmFkZ2UscmVwZWF0OmUuQ2xyU2hhcGVSZXBlYXQsImZpbGUtZ3JvdXAiOmUuQ2xyU2hhcGVGaWxlR3JvdXAscGFw''@;'; put 'put ''ZXJjbGlwOmUuQ2xyU2hhcGVQYXBlcmNsaXAsc2hyaW5rOmUuQ2xyU2hhcGVTaHJpbmssImFjY2Vzc2liaWxpdHktMSI6ZS5DbHJTaGFwZUFjY2Vzc2liaWxpdHkxLCJhY2Nlc3NpYmlsaXR5LTIiOmUuQ2xyU2hhcGVBY2Nlc3NpYmlsaXR5Miwic29ydC1ieSI6ZS5DbHJTaGFwZVNvcnRCeSwi''@;'; put 'put ''Y29sbGFwc2UtY2FyZCI6ZS5DbHJTaGFwZUNvbGxhcHNlQ2FyZCwiZXhwYW5kLWNhcmQiOmUuQ2xyU2hhcGVFeHBhbmRDYXJkLGJyaWVmY2FzZTplLkNsclNoYXBlQnJpZWZjYXNlLCJjb2xvci1waWNrZXIiOmUuQ2xyU2hhcGVDb2xvclBpY2tlciwiY29weS10by1jbGlwYm9hcmQiOmUuQ2xy''@;'; put 'put ''U2hhcGVDb3B5VG9DbGlwYm9hcmQsImZpbHRlci0yIjplLkNsclNoYXBlRmlsdGVyMiwiZHJhZy1oYW5kbGUiOmUuQ2xyU2hhcGVEcmFnSGFuZGxlLG1vb246ZS5DbHJTaGFwZU1vb24sc3VuOmUuQ2xyU2hhcGVTdW4sd2FuZDplLkNsclNoYXBlV2FuZCxjbG9uZTplLkNsclNoYXBlQ2xvbmUs''@;'; put 'put ''ZGV0YWlsczplLkNsclNoYXBlRGV0YWlscywiZHJhZy1oYW5kbGUtY29ybmVyIjplLkNsclNoYXBlRHJhZ0hhbmRsZUNvcm5lcixlcmFzZXI6ZS5DbHJTaGFwZUVyYXNlcixsYW5kc2NhcGU6ZS5DbHJTaGFwZUxhbmRzY2FwZSxwYXN0ZTplLkNsclNoYXBlUGFzdGUscG9ydHJhaXQ6ZS5DbHJT''@;'; put 'put ''aGFwZVBvcnRyYWl0LCJmaWxlLXppcCI6ZS5DbHJTaGFwZUZpbGVaaXAsImZpbHRlci1vZmYiOmUuQ2xyU2hhcGVGaWx0ZXJPZmYscmVjeWNsZTplLkNsclNoYXBlUmVjeWNsZSx0cmVlOmUuQ2xyU2hhcGVUcmVlLGZpc2g6ZS5DbHJTaGFwZUZpc2gsZm9ybTplLkNsclNoYXBlRm9ybSxmdWVs''@;'; put 'put ''OmUuQ2xyU2hhcGVGdWVsLHNub3dmbGFrZTplLkNsclNoYXBlU25vd2ZsYWtlLHRhYmxlOmUuQ2xyU2hhcGVUYWJsZSwiZG90LWNpcmNsZSI6ZS5DbHJTaGFwZURvdENpcmNsZSx2b2x1bWU6ZS5DbHJTaGFwZVZvbHVtZSxjcm9zc2hhaXJzOmUuQ2xyU2hhcGVDcm9zc2hhaXJzLGJldGE6ZS5D''@;'; put 'put ''bHJTaGFwZUJldGEsImNvbG9yLXBhbGV0dGUiOmUuQ2xyU2hhcGVDb2xvclBhbGV0dGV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkVzc2VudGlhbFNoYXBlcywiZWRpdCIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLkVzc2VudGlhbFNoYXBlcy5wZW5jaWwpKSxPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkoZS5Fc3NlbnRpYWxTaGFwZXMsIm5vdGUtZWRpdCIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLkVzc2VudGlhbFNoYXBlcy5ub3RlKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuRXNzZW50aWFsU2hhcGVzLCJncm91cCIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLkVzc2VudGlh''@;'; put 'put ''bFNoYXBlcy51c2VycykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkVzc2VudGlhbFNoYXBlcywiZG9jdW1lbnQiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Fc3NlbnRpYWxTaGFwZXMuZmlsZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkVzc2VudGlhbFNoYXBlcywiYWRkIiwoMCxy''@;'; put 'put ''LmRlc2NyaXB0b3JDb25maWcpKGUuRXNzZW50aWFsU2hhcGVzLnBsdXMpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5Fc3NlbnRpYWxTaGFwZXMsImNhbmNlbCIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLkVzc2VudGlhbFNoYXBlcy5iYW4pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5F''@;'; put 'put ''c3NlbnRpYWxTaGFwZXMsInJlbW92ZSIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLkVzc2VudGlhbFNoYXBlc1sidGltZXMtY2lyY2xlIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5Fc3NlbnRpYWxTaGFwZXMsInNpZ24taW4iLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Fc3NlbnRp''@;'; put 'put ''YWxTaGFwZXMubG9naW4pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5Fc3NlbnRpYWxTaGFwZXMsInNpZ24tb3V0IiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuRXNzZW50aWFsU2hhcGVzLmxvZ291dCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkVzc2VudGlhbFNoYXBlcywibGlnaHRu''@;'; put 'put ''aW5nIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuRXNzZW50aWFsU2hhcGVzLmJvbHQpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5Fc3NlbnRpYWxTaGFwZXMsImZsb3ctY2hhcnQiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Fc3NlbnRpYWxTaGFwZXMub3JnYW5pemF0aW9uKSksT2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KGUuRXNzZW50aWFsU2hhcGVzLCJhbGVydCIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLkVzc2VudGlhbFNoYXBlc1siYnViYmxlLWV4Y2xhbWF0aW9uIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5Fc3NlbnRpYWxTaGFwZXMsInBpbm5lZCIsKDAsci5k''@;'; put 'put ''ZXNjcmlwdG9yQ29uZmlnKShlLkVzc2VudGlhbFNoYXBlcy5waW5ib2FyZCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLkVzc2VudGlhbFNoYXBlcywiYXR0YWNobWVudCIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLkVzc2VudGlhbFNoYXBlcy5wYXBlcmNsaXApKSxPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkoZS5Fc3NlbnRpYWxTaGFwZXMsImF0dGFjaG1lbnQiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Fc3NlbnRpYWxTaGFwZXMucGFwZXJjbGlwKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuRXNzZW50aWFsU2hhcGVzLCJyZXNpemUtZG93biIsKDAsci5kZXNjcmlwdG9yQ29u''@;'; put 'put ''ZmlnKShlLkVzc2VudGlhbFNoYXBlcy5zaHJpbmspKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5Fc3NlbnRpYWxTaGFwZXMsInJlc2l6ZS11cCIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLkVzc2VudGlhbFNoYXBlcy5yZXNpemUpKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2lu''@;'; put 'put ''ZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoZS5Fc3NlbnRpYWxTaGFwZXMpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL21lZGlhLXNoYXBlcy50cyI6ZnVuY3Rpb24oQSxlLGwpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5NZWRpYVNoYXBlcz1lLkNsclNoYXBlTWljcm9waG9uZU11dGU9ZS5DbHJTaGFwZU1pY3JvcGhvbmU9ZS5DbHJTaGFwZVZpZGVvR2FsbGVyeT1lLkNsclNoYXBlUmVwbGF5T25lPWUuQ2xyU2hhcGVSZXBsYXlBbGw9ZS5D''@;'; put 'put ''bHJTaGFwZUltYWdlR2FsbGVyeT1lLkNsclNoYXBlTXVzaWNOb3RlPWUuQ2xyU2hhcGVGaWxtU3RyaXA9ZS5DbHJTaGFwZUhlYWRwaG9uZXM9ZS5DbHJTaGFwZVZvbHVtZU11dGU9ZS5DbHJTaGFwZVZvbHVtZVVwPWUuQ2xyU2hhcGVWb2x1bWVEb3duPWUuQ2xyU2hhcGVTaHVmZmxlPWUuQ2xy''@;'; put 'put ''U2hhcGVWaWRlb0NhbWVyYT1lLkNsclNoYXBlQ2FtZXJhPWUuQ2xyU2hhcGVGYXN0Rm9yd2FyZD1lLkNsclNoYXBlUmV3aW5kPWUuQ2xyU2hhcGVQb3dlcj1lLkNsclNoYXBlU3RvcD1lLkNsclNoYXBlU3RlcEZvcndhcmQ9ZS5DbHJTaGFwZVBhdXNlPWUuQ2xyU2hhcGVQbGF5PXZvaWQgMCxs''@;'; put 'put ''PWwoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIiksZS5DbHJTaGFwZVBsYXk9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik04LjA3LDMxLjZBMi4wNywyLjA3LDAsMCwx''@;'; put 'put ''LDYsMjkuNTNWNi4zMkEyLjA3LDIuMDcsMCwwLDEsOSw0LjQ3TDMyLjIxLDE2LjA4YTIuMDcsMi4wNywwLDAsMSwwLDMuN0w5LDMxLjM4QTIuMDYsMi4wNiwwLDAsMSw4LjA3LDMxLjZabTAtMjUuMzRMOCw2LjMyVjI5LjUzbC4xLjA2TDMxLjMxLDE4YS4wNi4wNiwwLDAsMCwwLS4wNloiLz5c''@;'; put 'put ''biAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuMTYsMTYuMDgsOC45NCw0LjQ3QTIuMDcsMi4wNywwLDAsMCw2LDYuMzJWMjkuNTNhMi4wNiwyLjA2LDAsMCwwLDMsMS44NUwzMi4xNiwxOS43N2EyLjA3LDIuMDcsMCww''@;'; put 'put ''LDAsMC0zLjdaIi8+JyksZS5DbHJTaGFwZVBhdXNlPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTIuOTMsMzJINi4wN0EyLjA3LDIuMDcsMCwwLDEsNCwyOS45M1Y2LjA3QTIuMDcsMi4wNywwLDAsMSw2LjA3''@;'; put 'put ''LDRoNi44N0EyLjA3LDIuMDcsMCwwLDEsMTUsNi4wN1YyOS45M0EyLjA3LDIuMDcsMCwwLDEsMTIuOTMsMzJaTTEzLDZINlYzMGg3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjkuOTMsMzJIMjMuMDdB''@;'; put 'put ''Mi4wNywyLjA3LDAsMCwxLDIxLDI5LjkzVjYuMDdBMi4wNywyLjA3LDAsMCwxLDIzLjA3LDRoNi44N0EyLjA3LDIuMDcsMCwwLDEsMzIsNi4wN1YyOS45M0EyLjA3LDIuMDcsMCwwLDEsMjkuOTMsMzJaTTMwLDZIMjNWMzBoN1oiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiB4PSIzLjk1IiB5PSI0IiB3aWR0aD0iMTEiIGhlaWdodD0iMjgiIHJ4PSIyLjA3IiByeT0iMi4wNyIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIHg9IjIwLjk1IiB5PSI0''@;'; put 'put ''IiB3aWR0aD0iMTEiIGhlaWdodD0iMjgiIHJ4PSIyLjA3IiByeT0iMi4wNyIvPicpLGUuQ2xyU2hhcGVTdGVwRm9yd2FyZD0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTUsMzIuMjNhMiwyLDAsMCwxLTItMlY1''@;'; put 'put ''Ljc3QTIsMiwwLDAsMSw2LjE3LDQuMTRMMjMuMjMsMTYuMzhhMiwyLDAsMCwxLDAsMy4yNWgwTDYuMTcsMzEuODZBMiwyLDAsMCwxLDUsMzIuMjNaTTUsNS43N1YzMC4yM0wyMi4wNywxOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMiIgZD0iTTMxLDMySDI4YTIsMiwwLDAsMS0yLTJWNmEyLDIsMCwwLDEsMi0yaDNhMiwyLDAsMCwxLDIsMlYzMEEyLDIsMCwwLDEsMzEsMzJaTTI4LDZWMzBoM1Y2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEiIGQ9Ik01LDMxLjlhMiwyLDAsMCwxLTItMlY1LjQ0QTIsMiwwLDAsMSw2LjEyLDMuODFMMjMuMTgsMTZhMiwyLDAsMCwxLDAsMy4yNWgwTDYuMTIsMzEuNTJBMiwyLDAsMCwxLDUsMzEuOVoiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0yIiB4PSIyNS45NSIgeT0iMy42NyIgd2lkdGg9IjciIGhlaWdodD0iMjgiIHJ4PSIyIiByeT0iMiIvPicpLGUuQ2xyU2hhcGVTdG9wPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAsMzJINmEy''@;'; put 'put ''LDIsMCwwLDEtMi0yVjZBMiwyLDAsMCwxLDYsNEgzMGEyLDIsMCwwLDEsMiwyVjMwQTIsMiwwLDAsMSwzMCwzMlpNNiw2VjMwSDMwVjZaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgeD0iMy45NiIgeT0iNCIgd2lkdGg9''@;'; put 'put ''IjI3Ljk5IiBoZWlnaHQ9IjI4IiByeD0iMiIgcnk9IjIiLz4nKSxlLkNsclNoYXBlUG93ZXI9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyMWExLDEsMCwwLDEtMS0xVjRhMSwxLDAsMCwxLDIsMFYyMEEx''@;'; put 'put ''LDEsMCwwLDEsMTgsMjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwzNC4xNWExNSwxNSwwLDAsMS03LjUyLTI4LDEsMSwwLDAsMSwxLDEuNzMsMTMsMTMsMCwxLDAsMTMsMCwxLDEsMCwxLDEsMS0x''@;'; put 'put ''LjczLDE1LDE1LDAsMCwxLTcuNTIsMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xOCwyMWExLDEsMCwwLDAsMS0xVjRhMSwxLDAsMCwwLTIsMFYyMEExLDEsMCwwLDAs''@;'; put 'put ''MTgsMjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0zMi41MSwxNS40SDMwLjQ0YTEzLDEzLDAsMSwxLTE5LTcuNSwxLDEsMCwwLDAtMS0xLjczQTE1LDE1LDAsMSwwLDMz''@;'; put 'put ''LDE5LjE1LDE0LjksMTQuOSwwLDAsMCwzMi41MSwxNS40WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEu''@;'; put 'put ''MjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0t''@;'; put 'put ''YmFkZ2VkIiBkPSJNMTgsMjFhMSwxLDAsMCwxLTEtMVY0YTEsMSwwLDAsMSwyLDBWMjBBMSwxLDAsMCwxLDE4LDIxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMwLDEzLjVs''@;'; put 'put ''LS4zMSwwQTEzLDEzLDAsMSwxLDExLjQ4LDcuOWExLDEsMCwwLDAtMS0xLjczLDE1LDE1LDAsMSwwLDIxLjMxLDcuMUE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabS4wNiwxNy42''@;'; put 'put ''OGExLjI4LDEuMjgsMCwwLDEtMS4yOS0xLjI4VjguNjVhMS4yOSwxLjI5LDAsMCwxLDIuNTgsMFYxOC40QTEuMjgsMS4yOCwwLDAsMSwxOC4wNiwxOS42OFpNMTgsMjcuNzlBOS44OCw5Ljg4LDAsMCwxLDEyLjE3LDkuODVhMS40LDEuNCwwLDAsMSwxLjk0LjMxLDEuMzcsMS4zNywwLDAsMS0u''@;'; put 'put ''MzEsMS45Miw3LjE4LDcuMTgsMCwxLDAsMTEuNDMsNS44LDcuMDcsNy4wNywwLDAsMC0zLTUuNzZBMS4zNywxLjM3LDAsMCwxLDIyLDEwLjJhMS40LDEuNCwwLDAsMSwxLjk0LS4yOUE5Ljg4LDkuODgsMCwwLDEsMTgsMjcuNzlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRoLTZBOS43LDkuNywwLDAsMSwyOCwxNy44OWExMCwxMCwwLDEsMS0xNS44My04LDEuNCwxLjQsMCwwLDEsMS45NC4zMSwxLjM3LDEuMzcsMCwwLDEtLjMxLDEuOTIsNy4xOCw3LjE4''@;'; put 'put ''LDAsMSwwLDExLjQzLDUuOCw3LjA4LDcuMDgsMCwwLDAtLjQ1LTIuNDlIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LjM1LDE0djQuNGExLjI5LDEuMjksMCwwLDEtMi41OCwwVjguNjVhMS4yOSwxLjI5LDAsMCwxLDIuNTgsMHYuNzFsMy43Ni02LjUxQTE2LDE2LDAsMSwwLDM0LDE4YTE2LDE2''@;'; put 'put ''LDAsMCwwLS4yMy0yLjYxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42''@;'; put 'put ''OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTMwLDEzLjVhNy40Nyw3''@;'; put 'put ''LjQ3LDAsMCwxLTMuNTctLjlBOS44Myw5LjgzLDAsMCwxLDI4LDE3Ljg5YTEwLDEwLDAsMSwxLTE1LjgzLTgsMS40LDEuNCwwLDAsMSwxLjk0LjMxLDEuMzcsMS4zNywwLDAsMS0uMzEsMS45Miw3LjE4LDcuMTgsMCwxLDAsMTEuNDMsNS44LDcuMDcsNy4wNywwLDAsMC0zLTUuNzZBMS4zNywx''@;'; put 'put ''LjM3LDAsMCwxLDIyLDEwLjJhMS4zOCwxLjM4LDAsMCwxLDEuNTItLjQ5LDcuNDUsNy40NSwwLDAsMS0uMy02LjgzLDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M0E3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNMTYuNzcsOC42NWExLjI5LDEuMjksMCwwLDEsMi41OCwwVjE4LjRhMS4yOSwx''@;'; put 'put ''LjI5LDAsMCwxLTIuNTgsMFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksZS5DbHJTaGFwZVJld2luZD0oMCxsLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE3LjA5LDMxLjU4bC0xNS4zMi0xMmEyLDIsMCwwLDEsMC0zLjE1bDE1LjMyLTEyYTEuOTMsMS45MywwLDAsMSwyLjA2LS4yMkExLjc3LDEuNzcsMCwwLDEsMjAsNnY2LjdMMzAuODMs''@;'; put 'put ''NC40MmExLjkzLDEuOTMsMCwwLDEsMi4wNi0uMjJBMiwyLDAsMCwxLDM0LDZWMzBhMiwyLDAsMCwxLTEuMTEsMS43OSwxLjk0LDEuOTQsMCwwLDEtMi4wNi0uMjJMMjAsMjMuMzFWMzBhMS43NywxLjc3LDAsMCwxLS44NSwxLjc5LDEuOTQsMS45NCwwLDAsMS0yLjA2LS4yMlpNMzIsMzBsLjA2''@;'; put 'put ''LTI0TDE4LDE2LjhWNkwzLDE4LDE4LDMwVjE5LjJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTYuOTIsMzEuNTgsMS42LDE5LjU3YTIsMiwwLDAsMSwwLTMuMTVsMTUuMzItMTJBMS45MywxLjkzLDAsMCwxLDE5LDQu''@;'; put 'put ''MiwxLjg5LDEuODksMCwwLDEsMjAsNnY2LjdMMzAuNjYsNC40MmExLjkzLDEuOTMsMCwwLDEsMi4wNi0uMjJBMiwyLDAsMCwxLDMzLjgzLDZWMzBhMiwyLDAsMCwxLTEuMTEsMS43OSwxLjk0LDEuOTQsMCwwLDEtMi4wNi0uMjJMMjAsMjMuMzFWMzBhMS44OSwxLjg5LDAsMCwxLTEsMS43OSwx''@;'; put 'put ''Ljk0LDEuOTQsMCwwLDEtMi4wNi0uMjJaIi8+JyksZS5DbHJTaGFwZUZhc3RGb3J3YXJkPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTcuNzcsMzEuOTJhMiwyLDAsMCwxLS44Ni0uMkExLjgxLDEuODEsMCww''@;'; put 'put ''LDEsMTYsMjkuOTN2LTYuN0w1LjI0LDMxLjVhMS45NCwxLjk0LDAsMCwxLTIuMDYuMjIsMiwyLDAsMCwxLTEuMTEtMS43OXYtMjRBMiwyLDAsMCwxLDMuMTgsNC4xMmExLjkzLDEuOTMsMCwwLDEsMi4wNi4yMkwxNiwxMi42MVY1LjkxYTEuODEsMS44MSwwLDAsMSwuOTEtMS43OUExLjkzLDEu''@;'; put 'put ''OTMsMCwwLDEsMTksNC4zNGwxNS4zMiwxMmEyLDIsMCwwLDEsMCwzLjE1TDE5LDMxLjVBMiwyLDAsMCwxLDE3Ljc3LDMxLjkyWm0wLTEyLjhWMjkuOTNsMTUuMjYtMTItMTUuMzItMTIsLjA2LDEwLjgxTDQsNS45MXYyNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xNy43MSwzMmEyLDIsMCwwLDEtLjg2LS4yQTEuNzcsMS43NywwLDAsMSwxNiwzMHYtNi43TDUuMTcsMzEuNThhMS45NCwxLjk0LDAsMCwxLTIuMDYuMjJBMiwyLDAsMCwxLDIsMzBWNkEyLDIsMCwwLDEsMy4xMSw0LjJhMS45MywxLjkzLDAsMCwx''@;'; put 'put ''LDIuMDYuMjJMMTYsMTIuNjlWNmExLjc3LDEuNzcsMCwwLDEsLjg1LTEuNzksMS45MywxLjkzLDAsMCwxLDIuMDYuMjJsMTUuMzIsMTJhMiwyLDAsMCwxLDAsMy4xNWwtMTUuMzIsMTJBMiwyLDAsMCwxLDE3LjcxLDMyWiIvPicpLGUuQ2xyU2hhcGVDYW1lcmE9KDAsbC5jbHJJY29uU1ZHKSgn''@;'; put 'put ''PHBhdGggZD0iTTMyLDhIMjQuN0wyMy42NCw1LjI4QTIsMiwwLDAsMCwyMS43OCw0SDE0LjIyYTIsMiwwLDAsMC0xLjg3LDEuMjhMMTEuMyw4SDRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTBBMiwyLDAsMCwwLDMyLDhabTAsMjJINFYxMGg4LjY3''@;'; put 'put ''bDEuNTUtNGg3LjU2bDEuNTUsNEgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOSwxOWE5LDksMCwxLDAsOS05QTksOSwwLDAsMCw5LDE5Wm0xNi40LDBBNy40LDcuNCwwLDEsMSwxOCwxMS42LDcuNDEsNy40''@;'; put 'put ''MSwwLDAsMSwyNS40LDE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik05LjM3LDEyLjgzYS44LjgsMCwwLDAtLjgtLjhINi4xN2EuOC44LDAsMCwwLDAsMS42aDIuNEEuOC44LDAsMCwwLDkuMzcsMTIuODNaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEyLjM0LDE5YTUuNTcsNS41NywwLDAsMCwzLjI0LDVsLjg1LTEuMzdhNCw0LDAsMSwxLDQuMTEtNi42MWwuODYtMS4zOEE1LjU2LDUuNTYsMCwwLDAsMTIuMzQsMTlaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDhIMjQuN0wyMy42NCw1LjI4QTIsMiwwLDAsMCwyMS43OCw0SDE0LjIyYTIsMiwwLDAsMC0xLjg3LDEuMjhMMTEuMyw4SDRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCww''@;'; put 'put ''LDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTBBMiwyLDAsMCwwLDMyLDhaTTYuMTcsMTMuNjNhLjguOCwwLDAsMSwwLTEuNmgyLjRhLjguOCwwLDAsMSwwLDEuNlpNMTgsMjhhOSw5LDAsMSwxLDktOUE5LDksMCwwLDEsMTgsMjhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuMTEsMTkuMDZhNy4wNyw3LjA3LDAsMCwwLDQuMTEsNi40MWwxLjA5LTEuNzRhNSw1LDAsMSwxLDUuMjItOC4zOWwxLjA5LTEuNzZhNy4wNiw3LjA2LDAsMCwwLTExLjUxLDUuNDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0yIi8+JyksZS5DbHJTaGFwZVZpZGVvQ2FtZXJhPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzQsMTAuMzRhMi4xMSwyLjExLDAsMCwwLTEuMTYtMS45LDIsMiwwLDAsMC0yLjEzLjE1TDI2LDEx''@;'; put 'put ''LjZWOGEyLDIsMCwwLDAtMi0ySDZhNCw0LDAsMCwwLTQsNFYyNmE0LDQsMCwwLDAsNCw0SDI0YTIsMiwwLDAsMCwyLTJWMjQuNGw0LjY0LDNhMi4wNywyLjA3LDAsMCwwLDIuMi4yQTIuMTEsMi4xMSwwLDAsMCwzNCwyNS42NlpNMzEuOTMsMjUuNzdjLS4wNiwwLS4xMSwwLS4xOS0uMDZMMjQs''@;'; put 'put ''MjAuNzdWMjhINmEyLDIsMCwwLDEtMi0yVjEwQTIsMiwwLDAsMSw2LDhIMjR2Ny4yM2w3LjgtNWEuMTEuMTEsMCwwLDEsLjEzLDAsLjExLjExLDAsMCwxLC4wNy4xMVYyNS42NkEuMTEuMTEsMCwwLDEsMzEuOTMsMjUuNzdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuMyw5LjM1LDI2LDEyLjlWOGEyLDIsMCwwLDAtMi0ySDZhNCw0LDAsMCwwLTQsNFYyNmE0LDQsMCwwLDAsNCw0SDI0YTIsMiwwLDAsMCwyLTJWMjMuMDhsNi4zLDMuNTVBMS4xLDEuMSwwLDAsMCwzNCwyNS43N1YxMC4yQTEuMSwxLjEsMCww''@;'; put 'put ''LDAsMzIuMyw5LjM1WiIvPicpLGUuQ2xyU2hhcGVTaHVmZmxlPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjEuNjEsMTFoOC42MmwtMy4zLDMuM2ExLDEsMCwxLDAsMS40MSwxLjQyTDM0LDEwLjA4bC0uNzEt''@;'; put 'put ''LjcxaDBMMjguMzQsNC40M2ExLDEsMCwwLDAtMS40MSwxLjQyTDMwLjExLDlIMjFhMSwxLDAsMCwwLS44Ni41TDE3LjUsMTQuMDlsMS4xNiwyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xMS4wNywyNS4wN0gz''@;'; put 'put ''YTEsMSwwLDAsMCwwLDJoOC42NWExLDEsMCwwLDAsLjg2LS41TDE1LjE4LDIyLDE0LDIwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yOC4zNCwyMC4xN2ExLDEsMCwwLDAtMS40MSwxLjQybDMuNSwzLjVIMjEu''@;'; put 'put ''NjFMMTIuNTEsOS41M2ExLDEsMCwwLDAtLjg2LS41SDNhMSwxLDAsMSwwLDAsMmg4LjA3bDkuMSwxNS41NWExLDEsMCwwLDAsLjg2LjVIMjkuOWwtMywzYTEsMSwwLDAsMCwxLjQxLDEuNDJsNC45NS00Ljk0aDBsLjcxLS43MVoiLz4nKSxlLkNsclNoYXBlVm9sdW1lRG93bj0oMCxsLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTIzLjQxLDI1LjExYTEsMSwwLDAsMS0uNTQtMS44NSw2LjIxLDYuMjEsMCwwLDAtLjE5LTEwLjY1LDEsMSwwLDEsMSwxLTEuNzNBOC4yMSw4LjIxLDAsMCwxLDIzLjk0LDI1LDEsMSww''@;'; put 'put ''LDAsMSwyMy40MSwyNS4xMVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMzJhMiwyLDAsMCwxLTEuNDItLjU5TDkuMTQsMjRINGEyLDIsMCwwLDEtMi0yVjE0YTIsMiwwLDAsMSwyLTJIOS4yMmw3LjMzLTcu''@;'; put 'put ''NDFBMiwyLDAsMCwxLDIwLDZWMzBhMiwyLDAsMCwxLTEuMjQsMS44NUEyLDIsMCwwLDEsMTgsMzJaTTQsMTR2OEg5LjU2YTEsMSwwLDAsMSwuNzEuMjhMMTgsMzBWNmwtNy42NSw3LjY4YTEsMSwwLDAsMS0uNzEuM1pNMTgsNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yMy40MSwyNS4xMWExLDEsMCwwLDEtLjU0LTEuODUsNi4yMSw2LjIxLDAsMCwwLS4xOS0xMC42NSwxLDEsMCwxLDEsMS0xLjczQTguMjEsOC4yMSwwLDAsMSwyMy45NCwyNSwxLDEsMCwwLDEsMjMuNDEsMjUuMTFaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTguMzQsMy44Nyw5LDEySDNhMSwxLDAsMCwwLTEsMVYyM2ExLDEsMCwwLDAsMSwxSDguODNsOS41MSw4LjNBMSwxLDAsMCwwLDIwLDMxLjU1VjQuNjJBMSwxLDAsMCwwLDE4LjM0LDMuODdaIi8+Jyks''@;'; put 'put ''ZS5DbHJTaGFwZVZvbHVtZVVwPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjMuNDEsMjUuMjVhMSwxLDAsMCwxLS41NC0xLjg1LDYuMjEsNi4yMSwwLDAsMC0uMTktMTAuNjUsMSwxLDAsMSwxLDEtMS43Myw4''@;'; put 'put ''LjIxLDguMjEsMCwwLDEsLjI0LDE0LjA2QTEsMSwwLDAsMSwyMy40MSwyNS4yNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjUuNjIsMzEuMThhMSwxLDAsMCwxLS40NS0xLjg5QTEyLjQ0LDEyLjQ0LDAsMCww''@;'; put 'put ''LDI1LDYuODlhMSwxLDAsMSwxLC44Ny0xLjgsMTQuNDQsMTQuNDQsMCwwLDEsLjI0LDI2QTEsMSwwLDAsMSwyNS42MiwzMS4xOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzIuMDZhMiwyLDAsMCwxLTEu''@;'; put 'put ''NDItLjU5TDkuMTQsMjRINGEyLDIsMCwwLDEtMi0yVjE0YTIsMiwwLDAsMSwyLTJIOS4yMmw3LjMzLTcuMzlBMiwyLDAsMCwxLDIwLDZ2MjRhMiwyLDAsMCwxLTEuMjQsMS44NUEyLDIsMCwwLDEsMTgsMzIuMDZaTTQsMTR2OEg5LjU2YTEsMSwwLDAsMSwuNzEuM0wxOCwzMC4wNlY2TDEwLjM1''@;'; put 'put ''LDEzLjdhMSwxLDAsMCwxLS43MS4zWk0xOCw2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTIzLjQxLDI1LjI1YTEsMSwwLDAsMS0uNTQtMS44NSw2LjIxLDYuMjEsMCwwLDAtLjE5LTEwLjY1LDEsMSwwLDEsMSwxLTEu''@;'; put 'put ''NzMsOC4yMSw4LjIxLDAsMCwxLC4yNCwxNC4wNkExLDEsMCwwLDEsMjMuNDEsMjUuMjVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjUuNjIsMzEuMThhMSwxLDAsMCwxLS40NS0xLjg5QTEyLjQ0LDEyLjQ0LDAsMCww''@;'; put 'put ''LDI1LDYuODlhMSwxLDAsMSwxLC44Ny0xLjgsMTQuNDQsMTQuNDQsMCwwLDEsLjI0LDI2QTEsMSwwLDAsMSwyNS42MiwzMS4xOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xOC4zMyw0LDkuMDcsMTJoLTZhMSwxLDAs''@;'; put 'put ''MCwwLTEsMXY5LjkyYTEsMSwwLDAsMCwxLDFIOC44OGw5LjQ2LDguMjRBMSwxLDAsMCwwLDIwLDMxLjQzVjQuNzJBMSwxLDAsMCwwLDE4LjMzLDRaIi8+JyksZS5DbHJTaGFwZVZvbHVtZU11dGU9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiIGQ9Ik0zLjYxLDYuNDEsOS4xOSwxMkg0YTIsMiwwLDAsMC0yLDJ2OGEyLDIsMCwwLDAsMiwySDkuMTRsNy40MSw3LjQ3QTIsMiwwLDAsMCwxOCwzMmEyLDIsMCwwLDAsLjc2LS4xNUEyLDIsMCwwLDAsMjAsMzBWMjIuNzdsNS44OSw1Ljg5Yy0uMjUuMTUtLjQ5LjI5LS43''@;'; put 'put ''NS40MmExLDEsMCwwLDAsLjksMS43OSwxNC40LDE0LjQsMCwwLDAsMS4zMS0uNzVsMi4yOCwyLjI4TDMxLDMxLDUsNVpNMTgsMzBsLTcuNzMtNy43N0ExLDEsMCwwLDAsOS41NiwyMkg0VjE0SDkuNjRhMSwxLDAsMCwwLC43MS0uM2wuMjYtLjI2TDE4LDIwLjgxWiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNC44OSw2LjY5QTEyLjQyLDEyLjQyLDAsMCwxLDI5LDI2LjFsMS40MiwxLjQyQTE0LjQyLDE0LjQyLDAsMCwwLDI1Ljc2LDQuODhhMSwxLDAsMSwwLS44NywxLjhaIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTIyLjY5LDEyLjYyQTYuMjcsNi4yNywwLDAsMSwyNS44LDE4YTYuMTcsNi4xNywwLDAsMS0xLjI0LDMuNzFMMjYsMjMuMTNBOC4xNSw4LjE1LDAsMCwwLDI3LjgsMThhOC4yOCw4LjI4LDAsMCwwLTQu''@;'; put 'put ''MS03LjExLDEsMSwwLDEsMC0xLDEuNzNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTE4LDZ2OS4xNWwyLDJWNmEyLDIsMCwwLDAtMy40Mi0xLjQxTDEyLDkuMTdsMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI0Ljg3LDYuNjlBMTIuNDIsMTIuNDIsMCwwLDEsMjguNzUsMjYuM2wxLjQyLDEuNDJBMTQuNDMsMTQuNDMsMCwwLDAsMjUuNzQsNC44OGExLDEsMCwwLDAtLjg3LDEuOFoiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yNy4zLDI3LjY3aDBsLTMuODQtMy44NC0uNTctLjU3aDBMNC42Myw1LDMuMjEsNi40MSw4LjgsMTJIM2ExLDEsMCwwLDAtMSwxVjIzYTEsMSwwLDAsMCwxLDFIOC44M2w5LjUxLDguM0ExLDEsMCwwLDAsMjAs''@;'; put 'put ''MzEuNTVWMjMuMmw1LjU5LDUuNTljLS4xNy4xLS4zNC4yLS41MS4yOWExLDEsMCwwLDAsLjksMS43OWMuMzctLjE5LjcyLS40LDEuMDgtLjYybDIuMTQsMi4xNEwzMC42MSwzMWwtMy4yNS0zLjI1WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMyIgZD0iTTIyLjY5LDEyLjYyQTYuMjcsNi4yNywwLDAsMSwyNS44LDE4YTYuMTcsNi4xNywwLDAsMS0xLjQyLDMuOTJsMS40MiwxLjQyYTguMTYsOC4xNiwwLDAsMCwyLTUuMzQsOC4yOCw4LjI4LDAsMCwwLTQuMS03LjExLDEsMSwwLDEsMC0xLDEuNzNaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiBkPSJNMjAsNC42MmExLDEsMCwwLDAtMS42Ni0uNzVsLTYuNDIsNS42TDIwLDE3LjU0WiIvPicpLGUuQ2xyU2hhcGVIZWFkcGhvbmVzPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsM0ExNC4yNywxNC4yNywwLDAsMCw0LDE3LjVWMzFIOS4yQTIuNzQsMi43NCwwLDAsMCwxMiwyOC4zM1YyMS42N0EyLjc0LDIuNzQsMCwwLDAsOS4yLDE5SDZWMTcuNUExMi4yNywxMi4yNywwLDAsMSwxOCw1LDEyLjI3LDEyLjI3LDAs''@;'; put 'put ''MCwxLDMwLDE3LjVWMTlIMjYuOEEyLjc0LDIuNzQsMCwwLDAsMjQsMjEuNjd2Ni42N0EyLjc0LDIuNzQsMCwwLDAsMjYuOCwzMUgzMlYxNy41QTE0LjI3LDE0LjI3LDAsMCwwLDE4LDNaTTkuMiwyMWEuNzUuNzUsMCwwLDEsLjguNjd2Ni42N2EuNzUuNzUsMCwwLDEtLjguNjdINlYyMVpNMjYs''@;'; put 'put ''MjguMzNWMjEuNjdhLjc1Ljc1LDAsMCwxLC44LS42N0gzMHY4SDI2LjhBLjc1Ljc1LDAsMCwxLDI2LDI4LjMzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDNBMTQuMjcsMTQuMjcsMCwwLDAsNCwxNy41VjMxSDgu''@;'; put 'put ''MkExLjc0LDEuNzQsMCwwLDAsMTAsMjkuMzNWMjIuNjdBMS43NCwxLjc0LDAsMCwwLDguMiwyMUg2VjE3LjVBMTIuMjcsMTIuMjcsMCwwLDEsMTgsNSwxMi4yNywxMi4yNywwLDAsMSwzMCwxNy41VjIxSDI3LjhBMS43NCwxLjc0LDAsMCwwLDI2LDIyLjY3djYuNjdBMS43NCwxLjc0LDAsMCww''@;'; put 'put ''LDI3LjgsMzFIMzJWMTcuNUExNC4yNywxNC4yNywwLDAsMCwxOCwzWiIvPicpLGUuQ2xyU2hhcGVGaWxtU3RyaXA9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMCw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIs''@;'; put 'put ''MCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzAsNFptMCwyNkg2VjZIMzBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE0LjYsMjMuMDdhMS4yOSwxLjI5LDAsMCwwLDEuMjQuMDlsOC43''@;'; put 'put ''My00YTEuMywxLjMsMCwwLDAsMC0yLjM3aDBsLTguNzMtNEExLjMsMS4zLDAsMCwwLDE0LDE0djhBMS4yOSwxLjI5LDAsMCwwLDE0LjYsMjMuMDdabTEtOC42TDIzLjMxLDE4LDE1LjYsMjEuNTFaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMyIgeD0iOCIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMyIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjE0IiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgeD0iMjAiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjMiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiB4PSIyNiIgeT0iNyIgd2lkdGg9IjIiIGhl''@;'; put 'put ''aWdodD0iMyIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIHg9IjgiIHk9IjI2IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtOCIgeD0iMTQiIHk9IjI2IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgeD0iMjAiIHk9IjI2IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiIHg9IjI2IiB5PSIyNiIgd2lkdGg9IjIiIGhlaWdodD0iMyIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLDRINkEyLDIsMCwwLDAsNCw2VjMwYTIs''@;'; put 'put ''MiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMCw0Wk0yMCw3aDJ2M0gyMFpNMTQsN2gydjNIMTRaTTEwLDI5SDhWMjZoMlptMC0xOUg4VjdoMlptNiwxOUgxNFYyNmgyWm02LDBIMjBWMjZoMlptMy4xNi0xMC4xNkwxNS4zOSwyMy4yQTEsMSwwLDAsMSwxNCwyMi4y''@;'; put 'put ''OFYxMy41N2ExLDEsMCwwLDEsMS40MS0uOTFMMjUuMTYsMTdBMSwxLDAsMCwxLDI1LjE2LDE4Ljg0Wk0yOCwyOUgyNlYyNmgyWm0wLTE5SDI2VjdoMloiLz4nKSxlLkNsclNoYXBlTXVzaWNOb3RlPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xIlxuICAgICAgICAgICAgICAgIGQ9Ik0zMS42OCw2LjE2Yy0xLjkyLTMuMy0xMC42LTQtMTEuNTgtNC4wOUwxOSwyVjIyLjM0YTUuODksNS44OSwwLDAsMC0uODItLjU2LDguMzMsOC4zMywwLDAsMC02LjUzLS40MUM3LjU3LDIyLjcsNC45MiwyNi41LDUuNzgsMjkuODRh''@;'; put 'put ''NS4zMyw1LjMzLDAsMCwwLDIuNjYsMy4zMiw3LjQ4LDcuNDgsMCwwLDAsMy42MS44OEE5LjU0LDkuNTQsMCwwLDAsMTUsMzMuNTdjMy42Ny0xLjE4LDYuMTctNC4zMyw2LjA2LTcuMzZWOS4zNGEyOS4xNCwyOS4xNCwwLDAsMSw2LjU1LDEuNDMsMSwxLDAsMSwwLC43Mi0xLjg3QTMxLjM3LDMx''@;'; put 'put ''LjM3LDAsMCwwLDIxLDcuMzNWNC4xN2MzLjMzLjM2LDgsMS4zOCw4LjkyLDMsMiwzLjQxLTIuMzMsNy4zNi0yLjM3LDcuNGExLDEsMCwwLDAsMS4zMywxLjQ5QzI5LjE1LDE1Ljg1LDM0LjUsMTEsMzEuNjgsNi4xNlpNMTQuMzUsMzEuNjdhNi40Myw2LjQzLDAsMCwxLTUtLjI2LDMuMzEsMy4z''@;'; put 'put ''MSwwLDAsMS0xLjY5LTIuMDdjLS42LTIuMzMsMS40NS01LjA1LDQuNTgtNi4wNmE3LjUyLDcuNTIsMCwwLDEsMi4zLS4zNyw1LjUyLDUuNTIsMCwwLDEsMi42NS42MiwzLjMxLDMuMzEsMCwwLDEsMS42OSwyLjA3QzE5LjU0LDI3Ljk0LDE3LjQ5LDMwLjY2LDE0LjM1LDMxLjY3WiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSJcbiAgICAgICAgICAgICAgICBkPSJNMzEuNjgsNi4xNmMtMS45Mi0zLjMtMTAuNi00LTExLjU4LTQuMDlMMTksMlYyMi4yOWE1Ljg4LDUuODgsMCwwLDAtLjgxLS41NSw4LjMzLDguMzMsMCwwLDAt''@;'; put 'put ''Ni41My0uNDFjLTQuMTIsMS4zMy02Ljc3LDUuMTMtNS45MSw4LjQ3YTUuMzMsNS4zMywwLDAsMCwyLjY2LDMuMzIsNy40OCw3LjQ4LDAsMCwwLDMuNjEuODhBOS41NCw5LjU0LDAsMCwwLDE1LDMzLjUyYzMuNy0xLjE5LDYuMi00LjM3LDYuMDYtNy40MiwwLDAsMCwwLDAsMFY4LjQ5YzEsLjEy''@;'; put 'put ''LDIuMzcuMzMsMy44Mi42NGExMS4xNywxMS4xNywwLDAsMSw0LjA2LDEuNDZjMSwuNjYuMzgsMS45LjMzLDJhMTEuOCwxMS44LDAsMCwxLTEuNjYsMiwxLDEsMCwwLDAsMS4zMywxLjQ5QzI5LjE1LDE1Ljg1LDM0LjUsMTEsMzEuNjgsNi4xNloiLz4nKSxlLkNsclNoYXBlSW1hZ2VHYWxsZXJ5''@;'; put 'put ''PSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMi4xMiwxMEgzLjg4QTEuODgsMS44OCwwLDAsMCwyLDExLjg4VjMwLjEyQTEuODgsMS44OCwwLDAsMCwzLjg4LDMySDMyLjEyQTEuODgsMS44OCwwLDAsMCwzNCwzMC4xMlYxMS44OEExLjg4LDEuODgsMCwwLDAsMzIuMTIsMTBaTTMyLDMw''@;'; put 'put ''SDRWMTJIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOC41NiwxOS40NWEzLDMsMCwxLDAtMy0zQTMsMywwLDAsMCw4LjU2LDE5LjQ1Wm0wLTQuNkExLjYsMS42LDAsMSwxLDcsMTYuNDUsMS42LDEuNiwwLDAsMSw4LjU2LDE0Ljg1''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTcuOSwyOGw2LTYsMy4xOCwzLjE4TDE0LjI2LDI4aDJsNy40Ni03LjQ2TDMwLDI2Ljc3di0yTDI0LjIsMTlhLjcxLjcxLDAsMCwwLTEsMGwtNS4xNiw1LjE2TDE0LjM3LDIwLjVhLjcxLjcx''@;'; put 'put ''LDAsMCwwLTEsMEw1LjkyLDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMwLjE0LDNoMGExLDEsMCwwLDAtMS0xaC0yMmExLDEsMCwwLDAtMSwxaDBWNGgyNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC00IiAvPjxwYXRoIGQ9Ik0zMi4xMiw3VjdhMSwxLDAsMCwwLTEtMWgtMjZhMSwxLDAsMCwwLTEsMWgwVjhoMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzAuMTQsM2gwYTEsMSwwLDAsMC0xLTFoLTIyYTEsMSwwLDAsMC0xLDFo''@;'; put 'put ''MFY0aDI0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzIuMTIsN1Y3YTEsMSwwLDAsMC0xLTFoLTI2YTEsMSwwLDAsMC0xLDFoMFY4aDI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMzIu''@;'; put 'put ''MTIsMTBIMy44OEExLjg4LDEuODgsMCwwLDAsMiwxMS44OFYzMC4xMkExLjg4LDEuODgsMCwwLDAsMy44OCwzMkgzMi4xMkExLjg4LDEuODgsMCwwLDAsMzQsMzAuMTJWMTEuODhBMS44OCwxLjg4LDAsMCwwLDMyLjEyLDEwWk04LjU2LDEzLjQ1YTMsMywwLDEsMS0zLDNBMywzLDAsMCwxLDgu''@;'; put 'put ''NTYsMTMuNDVaTTMwLDI4aC0yNGw3LjQ2LTcuNDdhLjcxLjcxLDAsMCwxLDEsMGwzLjY4LDMuNjhMMjMuMjEsMTlhLjcxLjcxLDAsMCwxLDEsMEwzMCwyNC43OVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksZS5DbHJTaGFwZVJlcGxheUFsbD0oMCxsLmNs''@;'; put 'put ''ckljb25TVkcpKCc8cGF0aCBkPSJNMTcuNDYsMjYuMjJhMS40LDEuNCwwLDAsMCwxLS40Mmw1LjU5LTUuNTZhMS40MywxLjQzLDAsMCwwLC40Mi0xLDEuNDYsMS40NiwwLDAsMC0uNDItMWwtNS41OS01LjU2YTEuNDMsMS40MywwLDAsMC0yLjQ0LDFWMjQuNzlhMS40MSwxLjQxLDAsMCwwLC44''@;'; put 'put ''OCwxLjMyQTEuNTQsMS41NCwwLDAsMCwxNy40NiwyNi4yMlptLjE2LTEyLjE2LDUuMTksNS4xNi01LjE5LDUuMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTguMDYsNWgtNi43bDIuOTItMi42NEExLDEsMCwwLDAsMTIuOTQuODhM''@;'; put 'put ''Ny4zMiw2LDEyLjk0LDExYTEsMSwwLDAsMCwuNjcuMjYsMSwxLDAsMCwwLC43NC0uMzMsMSwxLDAsMCwwLS4wNy0xLjQyTDExLjQ2LDdoNi42QTExLjc4LDExLjc4LDAsMSwxLDcuNzEsMjQuNDEsMSwxLDAsMCwwLDYsMjUuMzYsMTMuNzgsMTMuNzgsMCwxLDAsMTguMDYsNVoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVSZXBsYXlPbmU9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE5LDI3LjI3YTEsMSwwLDAsMCwxLTFWMTRhMSwxLDAsMCwwLTEtMUgxOWEzLjgsMy44LDAsMCwwLTEuMS4yM2wtMiwuNjJhLjkyLjky''@;'; put 'put ''LDAsMCwwLS43Mi44Ni44OC44OCwwLDAsMCwuODguODYsMS40NiwxLjQ2LDAsMCwwLC40My0uMDhMMTgsMTUuMDd2MTEuMkExLDEsMCwwLDAsMTksMjcuMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTguMDYsNWgtNi43bDIuOTIt''@;'; put 'put ''Mi42NEExLDEsMCwwLDAsMTIuOTQuODhMNy4zMiw2LDEyLjk0LDExYTEsMSwwLDAsMCwuNjcuMjYsMSwxLDAsMCwwLC43NC0uMzMsMSwxLDAsMCwwLS4wNy0xLjQyTDExLjQ2LDdoNi42QTExLjc4LDExLjc4LDAsMSwxLDcuNzEsMjQuNDEsMSwxLDAsMCwwLDYsMjUuMzYsMTMuNzgsMTMuNzgs''@;'; put 'put ''MCwxLDAsMTguMDYsNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVWaWRlb0dhbGxlcnk9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLjEyLDEwSDMuODhBMS44OCwxLjg4LDAsMCwwLDIsMTEuODhWMzAuMTJBMS44OCwx''@;'; put 'put ''Ljg4LDAsMCwwLDMuODgsMzJIMzIuMTJBMS44OCwxLjg4LDAsMCwwLDM0LDMwLjEyVjExLjg4QTEuODgsMS44OCwwLDAsMCwzMi4xMiwxMFpNMzIsMzBINFYxMkgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMC4xNCwzaDBhMSwx''@;'; put 'put ''LDAsMCwwLTEtMWgtMjJhMSwxLDAsMCwwLTEsMWgwVjRoMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzIuMTIsN1Y3YTEsMSwwLDAsMC0xLTFoLTI2YTEsMSwwLDAsMC0xLDFoMFY4aDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTEyLjgyLDI2Ljc5YTEuNzQsMS43NCwwLDAsMCwuOTMuMjgsMS42OCwxLjY4LDAsMCwwLC42OS0uMTVsOS43Ny00LjM2YTEuNjksMS42OSwwLDAsMCwwLTMuMUwxNC40NCwxNS4xYTEuNywxLjcsMCwwLDAtMi4zOSwxLjU1djguNzJB''@;'; put 'put ''MS43LDEuNywwLDAsMCwxMi44MiwyNi43OVptLjYzLTEwLjE0YS4yOS4yOSwwLDAsMSwuMTQtLjI1LjMuMywwLDAsMSwuMTYsMCwuMjcuMjcsMCwwLDEsLjEyLDBsOS43Nyw0LjM1YS4yOS4yOSwwLDAsMSwuMTguMjguMjguMjgsMCwwLDEtLjE4LjI3bC05Ljc3LDQuMzZhLjI4LjI4LDAsMCwx''@;'; put 'put ''LS4yOCwwLC4zMS4zMSwwLDAsMS0uMTQtLjI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMyLjEyLDEwSDMuODhBMS44OCwxLjg4LDAsMCwwLDIsMTEuODhWMzAuMTJBMS44OCwxLjg4LDAsMCwwLDMuODgsMzJIMzIuMTJBMS44OCwx''@;'; put 'put ''Ljg4LDAsMCwwLDM0LDMwLjEyVjExLjg4QTEuODgsMS44OCwwLDAsMCwzMi4xMiwxMFpNMjQuMTgsMjEuODNsLTkuNzcsNC4zNkExLDEsMCwwLDEsMTMsMjUuMjhWMTYuNTZhMSwxLDAsMCwxLDEuNDEtLjkxTDI0LjE4LDIwQTEsMSwwLDAsMSwyNC4xOCwyMS44M1oiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLjE0LDNoMGExLDEsMCwwLDAtMS0xaC0yMmExLDEsMCwwLDAtMSwxaDBWNGgyNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTMyLjEyLDdWN2ExLDEsMCwwLDAtMS0xaC0y''@;'; put 'put ''NmExLDEsMCwwLDAtMSwxaDBWOGgyOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksZS5DbHJTaGFwZU1pY3JvcGhvbmU9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDI0YzMuOSwwLDctMy4xLDctN1Y5YzAtMy45LTMuMS03LTctN3MtNywzLjEt''@;'; put 'put ''Nyw3djhDMTEsMjAuOSwxNC4xLDI0LDE4LDI0eiBNMTMsOWMwLTIuOCwyLjItNSw1LTVzNSwyLjIsNSw1djhcblx0XHRjMCwyLjgtMi4yLDUtNSw1cy01LTIuMi01LTVWOXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMCwxN2gtMmMw''@;'; put 'put ''LDUuNS00LjUsMTAtMTAsMTBTOCwyMi41LDgsMTdINmMwLDYuMyw0LjgsMTEuNCwxMSwxMS45VjMyaC0zYy0wLjYsMC0xLDAuNC0xLDFzMC40LDEsMSwxaDhjMC42LDAsMS0wLjQsMS0xXG5cdFx0cy0wLjQtMS0xLTFoLTN2LTMuMUMyNS4yLDI4LjQsMzAsMjMuMywzMCwxN3oiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xOCwyNGMzLjksMCw3LTMuMSw3LTdWOWMwLTMuOS0zLjEtNy03LTdzLTcsMy4xLTcsN3Y4QzExLDIwLjksMTQuMSwyNCwxOCwyNHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+''@;'; put 'put ''PHBhdGggZD0iTTMwLDE3aC0yYzAsNS41LTQuNSwxMC0xMCwxMFM4LDIyLjUsOCwxN0g2YzAsNi4zLDQuOCwxMS40LDExLDExLjlWMzJoLTNjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoOGMwLjYsMCwxLTAuNCwxLTFcblx0XHRzLTAuNC0xLTEtMWgtM3YtMy4xQzI1LjIsMjguNCwzMCwy''@;'; put 'put ''My4zLDMwLDE3eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlTWljcm9waG9uZU11dGU9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLDE3aC0yYzAsMS44LTAuNSwzLjUtMS40LDVsMS41LDEuNUMyOS4zLDIxLjUsMjkuOSwxOS4z''@;'; put 'put ''LDMwLDE3eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDRjMi44LDAsNSwyLjIsNSw1djhjMCwwLjQtMC4xLDAuOC0wLjIsMS4ybDEuNiwxLjZjMC40LTAuOSwwLjYtMS44LDAuNi0yLjhWOWMwLTMuOS0zLjItNy03LjEtNi45XG5c''@;'; put 'put ''dFx0Yy0yLjksMC01LjYsMS45LTYuNSw0LjdMMTMsOC4zQzEzLjUsNS45LDE1LjYsNC4yLDE4LDR6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjUuMiwyNi42bDYuOSw2LjlsMS40LTEuNEw0LDIuNkwyLjYsNGw4LjQsOC40VjE3YzAs''@;'; put 'put ''My45LDMuMSw3LDcsN2MxLjMsMCwyLjUtMC4zLDMuNi0xbDIuMiwyLjJDMjIuMSwyNi40LDIwLjEsMjcsMTgsMjdcblx0XHRjLTUuNCwwLjItOS44LTQuMS0xMC05LjRjMC0wLjIsMC0wLjQsMC0wLjZINmMwLjEsNi4yLDQuOCwxMS40LDExLDEydjNoLTNjLTAuNiwwLTEsMC40LTEsMXMwLjQs''@;'; put 'put ''MSwxLDFoOGMwLjYsMCwxLTAuNCwxLTFcblx0XHRzLTAuNC0xLTEtMWgtM3YtM0MyMS4yLDI4LjgsMjMuNCwyOCwyNS4yLDI2LjZ6IE0xMy44LDE5LjdDMTMuMywxOC45LDEzLDE4LDEzLDE3di0yLjZsNy4xLDcuMUMxNy45LDIyLjUsMTUuMiwyMS44LDEzLjgsMTkuN3oiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMCwxN2gtMmMwLDEuOC0wLjUsMy41LTEuNCw1bDEuNSwxLjVDMjkuMywyMS41LDI5LjksMTkuMywzMCwxN3oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTI1LDE3''@;'; put 'put ''VjljMC0zLjktMy4yLTctNy4xLTYuOWMtMi45LDAtNS42LDEuOS02LjUsNC43bDEzLDEzQzI0LjgsMTguOSwyNSwxNy45LDI1LDE3eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMjUuMiwyNi42bDYuOSw2LjlsMS40LTEuNEw0LDIuNkwyLjYs''@;'; put 'put ''NGw4LjQsOC40VjE3YzAsMy45LDMuMSw3LDcsN2MxLjMsMCwyLjUtMC4zLDMuNi0xbDIuMiwyLjJDMjIuMSwyNi40LDIwLjEsMjcsMTgsMjdcblx0XHRjLTUuNCwwLjItOS44LTQuMS0xMC05LjRjMC0wLjIsMC0wLjQsMC0wLjZINmMwLjEsNi4yLDQuOCwxMS40LDExLDEydjNoLTNjLTAuNiww''@;'; put 'put ''LTEsMC40LTEsMXMwLjQsMSwxLDFoOGMwLjYsMCwxLTAuNCwxLTFcblx0XHRzLTAuNC0xLTEtMWgtM3YtM0MyMS4yLDI4LjgsMjMuNCwyOCwyNS4yLDI2LjZ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLGUuTWVkaWFTaGFwZXM9e3BsYXk6ZS5DbHJTaGFw''@;'; put 'put ''ZVBsYXkscGF1c2U6ZS5DbHJTaGFwZVBhdXNlLCJzdGVwLWZvcndhcmQiOmUuQ2xyU2hhcGVTdGVwRm9yd2FyZCxzdG9wOmUuQ2xyU2hhcGVTdG9wLHBvd2VyOmUuQ2xyU2hhcGVQb3dlcixyZXdpbmQ6ZS5DbHJTaGFwZVJld2luZCwiZmFzdC1mb3J3YXJkIjplLkNsclNoYXBlRmFzdEZvcndh''@;'; put 'put ''cmQsY2FtZXJhOmUuQ2xyU2hhcGVDYW1lcmEsInZpZGVvLWNhbWVyYSI6ZS5DbHJTaGFwZVZpZGVvQ2FtZXJhLHNodWZmbGU6ZS5DbHJTaGFwZVNodWZmbGUsInZvbHVtZS11cCI6ZS5DbHJTaGFwZVZvbHVtZVVwLCJ2b2x1bWUtZG93biI6ZS5DbHJTaGFwZVZvbHVtZURvd24sInZvbHVtZS1t''@;'; put 'put ''dXRlIjplLkNsclNoYXBlVm9sdW1lTXV0ZSxoZWFkcGhvbmVzOmUuQ2xyU2hhcGVIZWFkcGhvbmVzLCJmaWxtLXN0cmlwIjplLkNsclNoYXBlRmlsbVN0cmlwLCJtdXNpYy1ub3RlIjplLkNsclNoYXBlTXVzaWNOb3RlLCJpbWFnZS1nYWxsZXJ5IjplLkNsclNoYXBlSW1hZ2VHYWxsZXJ5LCJy''@;'; put 'put ''ZXBsYXktYWxsIjplLkNsclNoYXBlUmVwbGF5QWxsLCJyZXBsYXktb25lIjplLkNsclNoYXBlUmVwbGF5T25lLCJ2aWRlby1nYWxsZXJ5IjplLkNsclNoYXBlVmlkZW9HYWxsZXJ5LG1pY3JvcGhvbmU6ZS5DbHJTaGFwZU1pY3JvcGhvbmUsIm1pY3JvcGhvbmUtbXV0ZSI6ZS5DbHJTaGFwZU1p''@;'; put 'put ''Y3JvcGhvbmVNdXRlfSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoZS5NZWRpYVNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvc29jaWFsLXNoYXBlcy50''@;'; put 'put ''cyI6ZnVuY3Rpb24oQSxlLGMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5Tb2NpYWxTaGFwZXM9ZS5DbHJTaGFwZUhhc2h0YWc9ZS5DbHJTaGFwZUNyb3duPWUuQ2xyU2hhcGVUaHVtYnNEb3duPWUuQ2xyU2hhcGVUaHVt''@;'; put 'put ''YnNVcD1lLkNsclNoYXBlU2FkRmFjZT1lLkNsclNoYXBlTmV1dHJhbEZhY2U9ZS5DbHJTaGFwZUhhcHB5RmFjZT1lLkNsclNoYXBlUGljdHVyZT1lLkNsclNoYXBlQ2hhdEJ1YmJsZT1lLkNsclNoYXBlVGFsa0J1YmJsZXM9ZS5DbHJTaGFwZUhlYXJ0QnJva2VuPWUuQ2xyU2hhcGVIZWFydD1l''@;'; put 'put ''LkNsclNoYXBlSW5ib3g9ZS5DbHJTaGFwZUZsYWc9ZS5DbHJTaGFwZVRhc2tzPWUuQ2xyU2hhcGVFbnZlbG9wZT1lLkNsclNoYXBlQm9va21hcms9ZS5DbHJTaGFwZUhhbGZTdGFyPWUuQ2xyU2hhcGVTdGFyPWUuQ2xyU2hhcGVTaGFyZT12b2lkIDA7dmFyIHI9YygiLi9wcm9qZWN0cy9pY29u''@;'; put 'put ''cy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiKSxhPWMoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIik7Yz1jKCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMiKSxlLkNsclNoYXBlU2hhcmU9KDAsYS5jbHJJ''@;'; put 'put ''Y29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNy41MywyNGE1LDUsMCwwLDAtMy42LDEuNTVMMTEuNzQsMTkuNDVhNC40Nyw0LjQ3LDAsMCwwLDAtMi44bDEyLjIxLTYuMjFhNS4xMiw1LjEyLDAsMSwwLTEuMDctMS43TDEwLjc5''@;'; put 'put ''LDE0Ljg5YTUsNSwwLDEsMCwwLDYuMzNsMTIuMDYsNi4wN0E0LjkzLDQuOTMsMCwwLDAsMjIuNTQsMjlhNSw1LDAsMSwwLDUtNVptMC0yMGEzLDMsMCwxLDEtMywzQTMsMywwLDAsMSwyNy41Myw0Wk03LDIxYTMsMywwLDEsMSwzLTNBMywzLDAsMCwxLDcsMjFaTTI3LjUzLDMyYTMsMywwLDEs''@;'; put 'put ''MSwzLTNBMywzLDAsMCwxLDI3LjUzLDMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNy41MywyNGE1LDUsMCwwLDAtMy42LDEuNTVMMTEuNzQsMTkuNDVhNC40Nyw0LjQ3LDAsMCwwLDAtMi44bDEyLjIxLTYu''@;'; put 'put ''MjFhNS4xMiw1LjEyLDAsMSwwLTEuMDctMS43TDEwLjc5LDE0Ljg5YTUsNSwwLDEsMCwwLDYuMzNsMTIuMDYsNi4wN0E0LjkzLDQuOTMsMCwwLDAsMjIuNTQsMjlhNSw1LDAsMSwwLDUtNVoiLz4nKSxlLkNsclNoYXBlU3Rhcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3LjE5LDM0YTIuMjIsMi4yMiwwLDAsMS0xLjI0LS4zOGwtNy40Ni01YS4yMi4yMiwwLDAsMC0uMjUsMGwtNy40Niw1QTIuMjIsMi4yMiwwLDAsMSw3LjQsMzEuMjFsMi40NS04LjY0YS4yMy4yMywwLDAsMC0uMDgtLjI0TDIuNzEs''@;'; put 'put ''MTYuNzhhMi4yMiwyLjIyLDAsMCwxLDEuMjktNGw5LS4zNGEuMjMuMjMsMCwwLDAsLjItLjE1bDMuMS04LjQzYTIuMjIsMi4yMiwwLDAsMSw0LjE3LDBsMy4xLDguNDNhLjIzLjIzLDAsMCwwLC4yLjE1bDksLjM0YTIuMjIsMi4yMiwwLDAsMSwxLjI5LDRMMjcsMjIuMzNhLjIyLjIyLDAsMCww''@;'; put 'put ''LS4wOC4yNGwyLjQ1LDguNjRBMi4yMywyLjIzLDAsMCwxLDI3LjE5LDM0Wm0tOC44Mi03LjQyQTIuMjEsMi4yMSwwLDAsMSwxOS42LDI3bDcuNDYsNWEuMjIuMjIsMCwwLDAsLjM0LS4yNWwtMi40NS04LjY0YTIuMjEsMi4yMSwwLDAsMSwuNzctMi4zNWw3LjA2LTUuNTVhLjIyLjIyLDAsMCww''@;'; put 'put ''LS4xMy0uNGwtOS0uMzRhMi4yMiwyLjIyLDAsMCwxLTItMS40NmwtMy4xLTguNDNhLjIyLjIyLDAsMCwwLS40MiwwTDE1LjA2LDEzYTIuMjIsMi4yMiwwLDAsMS0yLDEuNDZsLTksLjM0YS4yMi4yMiwwLDAsMC0uMTMuNEwxMSwyMC43NmEyLjIyLDIuMjIsMCwwLDEsLjc3LDIuMzVMOS4zMywz''@;'; put 'put ''MS43NWEuMjEuMjEsMCwwLDAsLjA4LjI0LjIuMiwwLDAsMCwuMjYsMGw3LjQ2LTVBMi4yMiwyLjIyLDAsMCwxLDE4LjM2LDI2LjYyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNCwxNi43OGEyLjIyLDIuMjIs''@;'; put 'put ''MCwwLDAtMS4yOS00bC05LS4zNGEuMjMuMjMsMCwwLDEtLjItLjE1TDIwLjQsMy44OWEyLjIyLDIuMjIsMCwwLDAtNC4xNywwbC0zLjEsOC40M2EuMjMuMjMsMCwwLDEtLjIuMTVsLTksLjM0YTIuMjIsMi4yMiwwLDAsMC0xLjI5LDRsNy4wNiw1LjU1YS4yMy4yMywwLDAsMSwuMDguMjRMNy4z''@;'; put 'put ''NSwzMS4yMWEyLjIyLDIuMjIsMCwwLDAsMy4zOCwyLjQ1bDcuNDYtNWEuMjIuMjIsMCwwLDEsLjI1LDBsNy40Niw1YTIuMiwyLjIsMCwwLDAsMi41NSwwLDIuMiwyLjIsMCwwLDAsLjgzLTIuNGwtMi40NS04LjY0YS4yMi4yMiwwLDAsMSwuMDgtLjI0WiIvPicpLGUuQ2xyU2hhcGVIYWxmU3Rh''@;'; put 'put ''cj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM0LDE2Ljc4YTIuMjIsMi4yMiwwLDAsMC0xLjI5LTRsLTktLjM0YS4yMy4yMywwLDAsMS0uMi0uMTVMMjAuNCwzLjg5YTIuMjIsMi4yMiwwLDAsMC00LjE3LDBs''@;'; put 'put ''LTMuMSw4LjQzYS4yMy4yMywwLDAsMS0uMi4xNWwtOSwuMzRhMi4yMiwyLjIyLDAsMCwwLTEuMjksNGw3LjA2LDUuNTVhLjIyLjIyLDAsMCwxLC4wOC4yNEw3LjM1LDMxLjIxQTIuMjMsMi4yMywwLDAsMCw5LjQ5LDM0YTIuMjIsMi4yMiwwLDAsMCwxLjI0LS4zOGw3LjQ2LTVhLjIyLjIyLDAs''@;'; put 'put ''MCwxLC4yNSwwbDcuNDYsNWEyLjIyLDIuMjIsMCwwLDAsMy4zOC0yLjQ1bC0yLjQ1LTguNjRhLjIzLjIzLDAsMCwxLC4wOC0uMjRaTTE4LjMzLDI2LjYyaDBhMi4yMSwyLjIxLDAsMCwwLTEuMjQuMzhMOS42MiwzMmEuMjIuMjIsMCwwLDEtLjM0LS4yNWwyLjQ1LTguNjRBMi4yMSwyLjIxLDAs''@;'; put 'put ''MCwwLDExLDIwLjc2TDMuOSwxNS4yMWEuMjIuMjIsMCwwLDEsLjEzLS40bDktLjM0QTIuMjIsMi4yMiwwLDAsMCwxNSwxM2wzLjEtOC40M2EuMi4yLDAsMCwxLC4yMS0uMTVoMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0x''@;'; put 'put ''IiBkPSJNMzQsMTYuNzhhMi4yMiwyLjIyLDAsMCwwLTEuMjktNGwtOS0uMzRhLjIzLjIzLDAsMCwxLS4yLS4xNUwyMC40LDMuODlhMi4yMiwyLjIyLDAsMCwwLTQuMTcsMGwtMy4xLDguNDNhLjIzLjIzLDAsMCwxLS4yLjE1bC05LC4zNGEyLjIyLDIuMjIsMCwwLDAtMS4yOSw0bDcuMDYsNS41''@;'; put 'put ''NWEuMjMuMjMsMCwwLDEsLjA4LjI0TDcuMzUsMzEuMjFhMi4yMiwyLjIyLDAsMCwwLDMuMzgsMi40NWw3LjQ2LTVhLjIyLjIyLDAsMCwxLC4yNSwwbDcuNDYsNWEyLjIsMi4yLDAsMCwwLDIuNTUsMCwyLjIsMi4yLDAsMCwwLC44My0yLjRsLTIuNDUtOC42NGEuMjIuMjIsMCwwLDEsLjA4LS4y''@;'; put 'put ''NFpNMjQuOSwyMy4xMWwyLjQ1LDguNjRBLjIyLjIyLDAsMCwxLDI3LDMybC03LjQ2LTVhMi4yMSwyLjIxLDAsMCwwLTEuMjQtLjM4aDBWNC40NGgwYS4yLjIsMCwwLDEsLjIxLjE1TDIxLjYyLDEzYTIuMjIsMi4yMiwwLDAsMCwyLDEuNDZsOSwuMzRhLjIyLjIyLDAsMCwxLC4xMy40bC03LjA2''@;'; put 'put ''LDUuNTVBMi4yMSwyLjIxLDAsMCwwLDI0LjksMjMuMTFaIi8+JyksZS5DbHJTaGFwZUJvb2ttYXJrPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjYsMzRhMiwyLDAsMCwxLTEuNDEtLjU4TDE4LDI2LjgybC02''@;'; put 'put ''LjU0LDYuNTJBMiwyLDAsMCwxLDgsMzEuOTNWNGEyLDIsMCwwLDEsMi0ySDI2YTIsMiwwLDAsMSwyLDJWMzJhMiwyLDAsMCwxLTIsMlptMC0yaDBWNEgxMFYzMS45M0wxOCwyNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0x''@;'; put 'put ''IiBkPSJNMjYsMkgxMEEyLDIsMCwwLDAsOCw0VjMxLjkzYTIsMiwwLDAsMCwzLjQyLDEuNDFsNi41NC02LjUyLDYuNjMsNi42QTIsMiwwLDAsMCwyOCwzMlY0QTIsMiwwLDAsMCwyNiwyWiIvPicpLGUuQ2xyU2hhcGVFbnZlbG9wZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk0zMC40NiwyOEg1LjY2bDctNy4yNC0xLjQ0LTEuMzlMNCwyNi44NFY5LjUyTDE2LjQzLDIxLjg5''@;'; put 'put ''YTIsMiwwLDAsMCwyLjgyLDBMMzIsOS4yMXYxNy41bC03LjM2LTcuMzYtMS40MSwxLjQxWk01LjMxLDhIMzAuMzhMMTcuODQsMjAuNDdaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBk''@;'; put 'put ''PSJNMzIsMTMuMDhWMjYuNzFsLTcuMzYtNy4zNi0xLjQxLDEuNDFMMzAuNDYsMjhINS42Nmw3LTcuMjQtMS40NC0xLjM5TDQsMjYuODRWOS41MkwxNi40MywyMS44OWEyLDIsMCwwLDAsMi44MiwwbDguODMtOC43OGE3LjQ0LDcuNDQsMCwwLDEtMi0uODVsLTguMjYsOC4yMUw1LjMxLDhIMjIu''@;'; put 'put ''ODFhNy40OSw3LjQ5LDAsMCwxLS4zMS0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMkE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMDhaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjUuODYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjI2''@;'; put 'put ''SDMyVjI2LjcxbC03LjM2LTcuMzYtMS40MSwxLjQxTDMwLjQ2LDI4SDUuNjZsNy03LjI0LTEuNDQtMS4zOUw0LDI2Ljg0VjkuNTJMMTYuNDMsMjEuODlhMiwyLDAsMCwwLDIuODIsMGw2LjY2LTYuNjNIMjMuMDhsLTUuMjQsNS4yMUw1LjMxLDhIMjAuMDZsMS4xNS0ySDRBMiwyLDAsMCwwLDIs''@;'; put 'put ''OFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxbC01LjcyLDkuOTFh''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkxSDMzLjY4YTEuMjgsMS4yOCwwLDAsMCwxLjEtMS45MUwyOS4wNiwxQTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi4zMyw2''@;'; put 'put ''YTIsMiwwLDAsMC0uNDEsMGgtMjhhMiwyLDAsMCwwLS41My4wOEwxNy44NCwyMC40N1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzMuODEsNy4zOSwxOS4yNSwyMS44OWEyLDIsMCwwLDEtMi44MiwwTDIsNy41''@;'; put 'put ''YTIsMiwwLDAsMC0uMDcuNVYyOGEyLDIsMCwwLDAsMiwyaDI4YTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzMuODEsNy4zOVpNNS4zLDI4SDMuOTFWMjYuNTdsNy4yNy03LjIxLDEuNDEsMS40MVptMjYuNjEsMEgzMC41MWwtNy4yOS03LjIzLDEuNDEtMS40MSw3LjI3LDcuMjFaIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yNiwxMi4zNEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2SDMuOTJhMiwyLDAsMCwwLS41My4wOEwxNy44NCwyMC40N1oiLz5cbiAgICAgICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMwLDEzLjVhNy40OSw3LjQ5LDAsMCwxLTItLjI5bC04LjcxLDguNjhhMiwyLDAsMCwxLTIuODIsMEwyLDcuNWEyLDIsMCwwLDAtLjA3LjVWMjhhMiwyLDAsMCwwLDIsMmgy''@;'; put 'put ''OGEyLDIsMCwwLDAsMi0yVjEyLjM5QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41Wk01LjMsMjhIMy45MVYyNi41N2w3LjI3LTcuMjEsMS40MSwxLjQxWm0yNi42MSwwSDMwLjUxbC03LjI5LTcuMjMsMS40MS0xLjQxLDcuMjcsNy4yMVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIg''@;'; put 'put ''ZD0iTTMzLjY4LDE1LjRIMjUuNzdsLTYuNTIsNi40OWEyLDIsMCwwLDEtMi44MiwwTDIsNy41YTIsMiwwLDAsMC0uMDcuNVYyOGEyLDIsMCwwLDAsMiwyaDI4YTIsMiwwLDAsMCwyLTJWMTUuMzhaTTUuMywyOEgzLjkxVjI2LjU3bDcuMjctNy4yMSwxLjQxLDEuNDFabTI2LjYxLDBIMzAuNTFs''@;'; put 'put ''LTcuMjktNy4yMywxLjQxLTEuNDEsNy4yNyw3LjIxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0yMi45NCwxNS40aC0uN0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2''@;'; put 'put ''SDMuOTJhMiwyLDAsMCwwLS41My4wOEwxNy44NCwyMC40N1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgs''@;'; put 'put ''MCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+JyksZS5DbHJTaGFwZVRhc2tzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xIiBkPSJNMjkuMjksMzRINi43MUExLjcsMS43LDAsMCwxLDUsMzIuMzFWNi42OUExLjc1LDEuNzUsMCwwLDEsNyw1SDlWN0g3VjMySDI5VjdIMjdWNWgyLjI1QTEuNywxLjcsMCwwLDEsMzEsNi42OVYzMi4zMUExLjcsMS43LDAsMCwxLDI5LjI5LDM0WiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTYuNjYsMjUuNzYsMTEuMywyMC40QTEsMSwwLDAsMSwxMi43MiwxOWwzLjk0LDMuOTQsOC42NC04LjY0YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yNiwxMUgxMFY3LjMzQTIuMzQsMi4zNCwwLDAsMSwxMi4zMyw1aDEuNzlhNCw0LDAsMCwxLDcuNzUsMGgxLjc5QTIuMzQsMi4zNCwwLDAsMSwyNiw3LjMzWk0xMiw5SDI0VjcuMzNBLjMzLjMzLDAsMCwwLDIz''@;'; put 'put ''LjY3LDdIMjBWNmEyLDIsMCwwLDAtNCwwVjdIMTIuMzNhLjMzLjMzLDAsMCwwLS4zMy4zM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTE5LDkuODksMTkuNTYsOUgxMlY3''@;'; put 'put ''LjMzQS4zMy4zMywwLDAsMSwxMi4zMyw3SDE2VjZhMiwyLDAsMCwxLDQsMFY3aC43MWwxLjE2LTJhNCw0LDAsMCwwLTcuNzQsMEgxMi4zM0EyLjM0LDIuMzQsMCwwLDAsMTAsNy4zM1YxMWg4LjY0QTMuNjUsMy42NSwwLDAsMSwxOSw5Ljg5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMjQuMTksMTUuNGwtNy41Myw3LjUzTDEyLjcyLDE5QTEsMSwwLDAsMCwxMS4zLDIwLjRsNS4zNiw1LjM2TDI2LjcxLDE1LjcxYTEsMSwwLDAsMCwuMi0uMzFaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0yOSwxNS40VjMySDdWN0g5VjVIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY5VjMyLjMxQTEuNywxLjcsMCwwLDAsNi43MSwzNEgyOS4yOUExLjcsMS43''@;'; put 'put ''LDAsMCwwLDMxLDMyLjMxVjE1LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4y''@;'; put 'put ''MywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0x''@;'; put 'put ''Mi43MiwxOUExLDEsMCwwLDAsMTEuMywyMC40bDUuMzYsNS4zNkwyNi43MSwxNS43MWExLDEsMCwwLDAtMS40MS0xLjQxbC04LjY0LDguNjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2Vk''@;'; put 'put ''IiBkPSJNMjMuMTMsOUgxMlY3LjMzQS4zMy4zMywwLDAsMSwxMi4zMyw3SDE2VjZhMiwyLDAsMCwxLDQsMFY3aDIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNTIsNy41MiwwLDAsMSwuMDctMWgtLjdhNCw0LDAsMCwwLTcuNzUsMEgxMi4zM0EyLjM0LDIuMzQsMCwwLDAsMTAsNy4zM1Yx''@;'; put 'put ''MUgyNC40MkE3LjUsNy41LDAsMCwxLDIzLjEzLDlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzAsMTMuNWE3LjUyLDcuNTIsMCwwLDEtMS0uMDdWMzJIN1Y3SDlWNUg3QTEu''@;'; put 'put ''NzUsMS43NSwwLDAsMCw1LDYuNjlWMzIuMzFBMS43LDEuNywwLDAsMCw2LjcxLDM0SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMzFWMTMuNDNBNy41Miw3LjUyLDAsMCwxLDMwLDEzLjVaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjkuMjksNC45NWgtNy4yYTQuMzEsNC4zMSwwLDAsMC04''@;'; put 'put ''LjE3LDBIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY0VjMyLjI2YTEuNywxLjcsMCwwLDAsMS43MSwxLjY5SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMjZWNi42NEExLjcsMS43LDAsMCwwLDI5LjI5LDQuOTVabS0xOCwzYTEsMSwwLDAsMSwxLTFoMy40NFY2LjMyYTIuMzEsMi4zMSwwLDAs''@;'; put 'put ''MSw0LjYzLDBWN2gzLjQ0YTEsMSwwLDAsMSwxLDFWOS44SDExLjI1Wm0xNC41Miw5LjIzLTkuMTIsOS4xMi01LjI0LTUuMjRhMS40LDEuNCwwLDAsMSwyLTJsMy4yNiwzLjI2LDcuMTQtNy4xNGExLjQsMS40LDAsMSwxLDIsMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjUuODgsMTUuNGExLjM4LDEuMzgsMCwwLDEtLjExLDEuODFsLTkuMTIsOS4xMi01LjI0LTUuMjRhMS40LDEuNCwwLDAsMSwyLTJsMy4yNiwzLjI2LDctN0gyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTks''@;'; put 'put ''OS44OWwwLS4wOUgxMS4yNVY4YTEsMSwwLDAsMSwxLTFoMy40NFY2LjMyYTIuMzEsMi4zMSwwLDAsMSw0LjYzLDBWN2guNDJMMjIsNC43NmE0LjMsNC4zLDAsMCwwLTguMDkuMTlIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY0VjMyLjI2YTEuNywxLjcsMCwwLDAsMS43MSwxLjY5SDI5LjI5QTEu''@;'; put 'put ''NywxLjcsMCwwLDAsMzEsMzIuMjZWMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIu''@;'; put 'put ''MjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMCwx''@;'; put 'put ''My41YTcuNDksNy40OSwwLDAsMS02LjQ2LTMuN0gxMS4yNVY4YTEsMSwwLDAsMSwxLTFoMy40NFY2LjMyYTIuMzEsMi4zMSwwLDAsMSw0LjYzLDBWN2gyLjI2YTcuNTMsNy41MywwLDAsMS0uMDctMSw3LjUzLDcuNTMsMCwwLDEsLjA4LTEuMDVoLS41YTQuMzEsNC4zMSwwLDAsMC04LjE3LDBI''@;'; put 'put ''N0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY0VjMyLjI2YTEuNywxLjcsMCwwLDAsMS43MSwxLjY5SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMjZWMTMuNDNBNy41Miw3LjUyLDAsMCwxLDMwLDEzLjVabS00LjIzLDMuNzEtOS4xMiw5LjEyLTUuMjQtNS4yNGExLjQsMS40LDAsMCwxLDItMmwz''@;'; put 'put ''LjI2LDMuMjYsNy4xNC03LjE0YTEuNCwxLjQsMCwxLDEsMiwyWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxlLkNsclNo''@;'; put 'put ''YXBlRmxhZz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTYsMzRhMSwxLDAsMCwxLTEtMVYzQTEsMSwwLDAsMSw3LDNWMzNBMSwxLDAsMCwxLDYsMzRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMC41NSwzLjgyYTEsMSwwLDAsMC0xLDAsMTQuOSwxNC45LDAsMCwxLTYuMTMsMS4xNiwxMy4xMSwxMy4xMSwwLDAsMS01LjE4LTEuNDksMTIuNzgsMTIuNzgsMCwwLDAtNS0xLjQ1QTEwLjg2LDEwLjg2LDAsMCwwLDks''@;'; put 'put ''Mi44NVY1LjA4QTguOCw4LjgsMCwwLDEsMTMuMjUsNGExMS4yMiwxMS4yMiwwLDAsMSw0LjIsMS4yOCwxNC44NCwxNC44NCwwLDAsMCw2LDEuNjZBMTguNzUsMTguNzUsMCwwLDAsMjksNi4xMlYxOC45NWExNi4xNiwxNi4xNiwwLDAsMS01LjU4LjkzLDEzLjExLDEzLjExLDAsMCwxLTUuMTgt''@;'; put 'put ''MS40OSwxMi43OCwxMi43OCwwLDAsMC01LTEuNDVBMTAuODYsMTAuODYsMCwwLDAsOSwxNy43OVYyMGE4LjgsOC44LDAsMCwxLDQuMjUtMS4wOCwxMS4yMiwxMS4yMiwwLDAsMSw0LjIsMS4yOCwxNC44NCwxNC44NCwwLDAsMCw2LDEuNjYsMTYuNzksMTYuNzksMCwwLDAsNy0xLjM3LDEsMSww''@;'; put 'put ''LDAsMCwuNTUtLjg5VjQuNjdBMSwxLDAsMCwwLDMwLjU1LDMuODJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTUuOTIsMmExLDEsMCwwLDAtMSwxVjMzYTEsMSwwLDAsMCwyLDBWM0ExLDEsMCwwLDAsNS45Miwy''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMC41LDMuODJhMSwxLDAsMCwwLTEsMCwxNC45LDE0LjksMCwwLDEtNi4xMywxLjE2LDEzLjExLDEzLjExLDAsMCwxLTUuMTgtMS40OUExMi43OCwxMi43OCwwLDAs''@;'; put 'put ''MCwxMy4yLDIsMTAuODYsMTAuODYsMCwwLDAsOSwyLjg1VjIwYTguOCw4LjgsMCwwLDEsNC4yNS0xLjA4LDExLjIyLDExLjIyLDAsMCwxLDQuMiwxLjI4LDE0Ljg0LDE0Ljg0LDAsMCwwLDYsMS42NiwxNi43OSwxNi43OSwwLDAsMCw3LTEuMzcsMSwxLDAsMCwwLC41NS0uODlWNC42N0ExLDEs''@;'; put 'put ''MCwwLDAsMzAuNSwzLjgyWiIvPicpLGUuQ2xyU2hhcGVJbmJveD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTIuMjMsMTMuMDlhMSwxLDAsMCwwLDAsMS40MUwxOCwyMC4zbDUuNzktNS43OWExLDEsMCwwLDAtMS40MS0xLjQxTDE5LDE2LjQ3VjJBMSwxLDAsMCwwLDE4LDFhMSwxLDAs''@;'; put 'put ''MCwwLTEsMXYxNC41bC0zLjM4LTMuMzhBMSwxLDAsMCwwLDEyLjIzLDEzLjA5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS41LDVIMjJWN2g3VjIxSDIzLjYxbC0uMS44OWE1LjQyLDUuNDIsMCwwLDEtMTAu''@;'; put 'put ''NzcsMGwtLjEtLjg5SDdWN2g3VjVINi41QTEuNSwxLjUsMCwwLDAsNSw2LjV2MjVBMS41LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41VjYuNUExLjUsMS41LDAsMCwwLDI5LjUsNVpNMjksMzFIN1YyM2gzLjkxYTcuNDIsNy40MiwwLDAsMCwxNC40NCwwSDI5WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi4yMywxMy4wOWExLDEsMCwwLDAsMCwxLjQxTDE4LDIwLjNsNS43OS01Ljc5YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTksMTYuNDdWMkExLDEsMCwwLDAsMTgsMWExLDEs''@;'; put 'put ''MCwwLDAtMSwxdjE0LjVsLTMuMzgtMy4zOEExLDEsMCwwLDAsMTIuMjMsMTMuMDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNTIsNy41MiwwLDAsMS0xLS4wN1Yy''@;'; put 'put ''MUgyMy42MWwtLjEuODlhNS40Miw1LjQyLDAsMCwxLTEwLjc3LDBsLS4xLS44OUg3VjdoN1Y1SDYuNUExLjUsMS41LDAsMCwwLDUsNi41djI1QTEuNSwxLjUsMCwwLDAsNi41LDMzaDIzQTEuNSwxLjUsMCwwLDAsMzEsMzEuNVYxMy40M0E3LjUyLDcuNTIsMCwwLDEsMzAsMTMuNVpNMjksMzFI''@;'; put 'put ''N1YyM2gzLjkxYTcuNDIsNy40MiwwLDAsMCwxNC40NCwwSDI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLGUuQ2xyU2hhcGVIZWFydD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMzIuNDNhMSwxLDAsMCwxLS42MS0uMjFDMTEuODMsMjcuOSw4LDI0LjE4LDUuMzIsMjAuNTEsMS45LDE1LjgyLDEu''@;'; put 'put ''MTIsMTEuNDksMyw3LjY0YzEuMzQtMi43NSw1LjE5LTUsOS42OS0zLjY5QTkuODcsOS44NywwLDAsMSwxOCw3LjcyYTkuODcsOS44NywwLDAsMSw1LjMxLTMuNzdjNC40OS0xLjI5LDguMzUuOTQsOS42OSwzLjY5LDEuODgsMy44NSwxLjEsOC4xOC0yLjMyLDEyLjg3QzI4LDI0LjE4LDI0LjE3''@;'; put 'put ''LDI3LjksMTguNjEsMzIuMjJBMSwxLDAsMCwxLDE4LDMyLjQzWk0xMC4xMyw1LjU4QTUuOSw1LjksMCwwLDAsNC44LDguNTFjLTEuNTUsMy4xOC0uODUsNi43MiwyLjE0LDEwLjgxQTU3LjEzLDU3LjEzLDAsMCwwLDE4LDMwLjE2LDU3LjEzLDU3LjEzLDAsMCwwLDI5LjA2LDE5LjMzYzMtNC4x''@;'; put 'put ''LDMuNjktNy42NCwyLjE0LTEwLjgxLTEtMi00LTMuNTktNy4zNC0yLjY1YTgsOCwwLDAsMC00Ljk0LDQuMiwxLDEsMCwwLDEtMS44NSwwLDcuOTMsNy45MywwLDAsMC00Ljk0LTQuMkE3LjMxLDcuMzEsMCwwLDAsMTAuMTMsNS41OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsNy42NGMtMS4zNC0yLjc1LTUuMi01LTkuNjktMy42OUE5Ljg3LDkuODcsMCwwLDAsMTgsNy43MmE5Ljg3LDkuODcsMCwwLDAtNS4zMS0zLjc3QzguMTksMi42Niw0LjM0LDQuODksMyw3LjY0Yy0xLjg4LDMuODUtMS4xLDgu''@;'; put 'put ''MTgsMi4zMiwxMi44N0M4LDI0LjE4LDExLjgzLDI3LjksMTcuMzksMzIuMjJhMSwxLDAsMCwwLDEuMjMsMGM1LjU1LTQuMzEsOS4zOS04LDEyLjA3LTExLjcxQzM0LjEsMTUuODIsMzQuODgsMTEuNDksMzMsNy42NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4n''@;'; put 'put ''KSxlLkNsclNoYXBlSGVhcnRCcm9rZW49KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLDcuNjRjLTEuMzQtMi43NS01LjA5LTUtOS42OS0zLjY5YTkuODcsOS44NywwLDAsMC02LDQuODQsMTguOSwxOC45LDAsMCwwLTIuMjMsNS4zM2w1LjI4LDIuMzQtNC42LDQuMzcsMy40OSw0LjEs''@;'; put 'put ''MS41Mi0xLjNMMTguNTQsMjFsNS40LTUuMTNMMTcuNTgsMTNBMTYuMjMsMTYuMjMsMCwwLDEsMTkuNzUsOC45YTcuNjgsNy42OCwwLDAsMSw0LjExLTNjMy4zNC0uODksNi4zNC42LDcuMzQsMi42NSwxLjU1LDMuMTguODUsNi43Mi0yLjE0LDEwLjgxQTU3LjE2LDU3LjE2LDAsMCwxLDE4LDMw''@;'; put 'put ''LjE2LDU3LjE2LDU3LjE2LDAsMCwxLDYuOTQsMTkuMzNjLTMtNC4xLTMuNjktNy42NC0yLjE0LTEwLjgxYTUuOSw1LjksMCwwLDEsNS4zMy0yLjkzLDcuMzEsNy4zMSwwLDAsMSwyLC4yOSw3LjcsNy43LDAsMCwxLDMuMzgsMmwuMTUtLjNhMTAuNjYsMTAuNjYsMCwwLDEsMS0xLjQxLDkuNjQs''@;'; put 'put ''OS42NCwwLDAsMC0zLjk0LTIuMjJDOC4yLDIuNjYsNC4zNCw0Ljg5LDMsNy42NGMtMS44OCwzLjg1LTEuMSw4LjE4LDIuMzIsMTIuODdDOCwyNC4xOCwxMS44MywyNy45LDE3LjM5LDMyLjIyYTEsMSwwLDAsMCwxLjIzLDBjNS41NS00LjMxLDkuMzktOCwxMi4wNy0xMS43MUMzNC4xLDE1Ljgy''@;'; put 'put ''LDM0Ljg4LDExLjQ5LDMzLDcuNjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLDcuNjRjLTEuMzQtMi43NS01LjItNS05LjY5LTMuNjlBMTEuNTUsMTEuNTUsMCwwLDAsMTguMTksNy41YTE2Ljg5LDE2Ljg5''@;'; put 'put ''LDAsMCwwLTIuNDgsNC41NkwyMi4yNywxNSwxNi43LDIwLjI2LDE5LDIzbC0xLjU3LDEuMzQtMy42LTQuMjIsNC43NC00LjUxLTUuNDQtMi40MWExOS40OSwxOS40OSwwLDAsMSwyLjMtNS41LDE0Ljc3LDE0Ljc3LDAsMCwxLDEuMDYtMS41NGwuMDYsMGE5LjY2LDkuNjYsMCwwLDAtMy44OS0y''@;'; put 'put ''LjE4QzguMTksMi42Niw0LjM0LDQuODksMyw3LjY0Yy0xLjg4LDMuODUtMS4xLDguMTgsMi4zMiwxMi44N0M4LDI0LjE4LDExLjgzLDI3LjksMTcuMzksMzIuMjJhMSwxLDAsMCwwLDEuMjMsMGM1LjU1LTQuMzEsOS4zOS04LDEyLjA3LTExLjcxQzM0LjEsMTUuODIsMzQuODgsMTEuNDksMzMs''@;'; put 'put ''Ny42NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxlLkNsclNoYXBlVGFsa0J1YmJsZXM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIzLDI2YTEsMSwwLDAsMS0xLDFIOGMtLjIyLDAtLjQzLjItLjYxLjMzTDQsMzBWMTRhMSwxLDAsMCwxLDEtMUg4''@;'; put 'put ''Ljg2VjExSDVhMywzLDAsMCwwLTMsM1YzMmExLDEsMCwwLDAsLjU2Ljg5LDEsMSwwLDAsMCwxLS4xTDguNzEsMjlIMjIuMTVBMi43NywyLjc3LDAsMCwwLDI1LDI2LjEzVjI1SDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0zMSw0SDE0YTMsMywwLDAsMC0zLDNWMTlhMywzLDAsMCwwLDMsM0gyNy41NWw0Ljc4LDMuNzFhMSwxLDAsMCwwLDEsLjExLDEsMSwwLDAsMCwuNTctLjlWN0EzLDMsMCwwLDAsMzEsNFpNMzIsMjIuOTQsMjguNSwyMC4yMWExLDEsMCwwLDAtLjYxLS4yMUgxNGExLDEsMCwwLDEt''@;'; put 'put ''MS0xVjdhMSwxLDAsMCwxLDEtMUgzMUExLjEsMS4xLDAsMCwxLDMyLDcuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLDI2YTEsMSwwLDAsMS0xLDFIOGMtLjIyLDAtLjQzLjItLjYxLjMzTDQsMzBWMTRh''@;'; put 'put ''MSwxLDAsMCwxLDEtMUg4Ljg2VjExSDVhMywzLDAsMCwwLTMsM1YzMmExLDEsMCwwLDAsLjU2Ljg5LDEsMSwwLDAsMCwxLS4xTDguNzEsMjlIMjIuMTVBMi43NywyLjc3LDAsMCwwLDI1LDI2LjEzVjI1SDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJ2OS43MkwyOC41LDIwLjIxYTEsMSwwLDAsMC0uNjEtLjIxSDE0YTEsMSwwLDAsMS0xLTFWN2ExLDEsMCwwLDEsMS0xSDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDE0YTMsMywwLDAsMC0zLDNWMTlhMywz''@;'; put 'put ''LDAsMCwwLDMsM0gyNy41NWw0Ljc4LDMuNzFhMSwxLDAsMCwwLDEsLjExLDEsMSwwLDAsMCwuNTctLjlWMTIuMzdBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTgsMTlWMTFINWEzLDMsMCwwLDAtMywzVjMyYTEsMSwwLDAsMCwu''@;'; put 'put ''NTYuODksMSwxLDAsMCwwLDEtLjFMOC43MSwyOUgyMi4xNUEyLjc3LDIuNzcsMCwwLDAsMjUsMjYuMTNWMjVIMTRBNiw2LDAsMCwxLDgsMTlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEsNEgxNGEzLDMsMCwwLDAt''@;'; put 'put ''MywzVjE5YTMsMywwLDAsMCwzLDNIMjcuNTVsNC43OCwzLjcxYTEsMSwwLDAsMCwxLC4xMSwxLDEsMCwwLDAsLjU3LS45VjdBMywzLDAsMCwwLDMxLDRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOCwxOVYxMUg1YTMs''@;'; put 'put ''MywwLDAsMC0zLDNWMzJhMSwxLDAsMCwwLC41Ni44OSwxLDEsMCwwLDAsMS0uMUw4LjcxLDI5SDIyLjE1QTIuNzcsMi43NywwLDAsMCwyNSwyNi4xM1YyNUgxNEE2LDYsMCwwLDEsOCwxOVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjQ4LDcuNDgsMCwwLDEsMjIuNzgsNEgxNGEzLDMsMCwwLDAtMywzVjE5YTMsMywwLDAsMCwzLDNIMjcuNTVsNC43OCwzLjcxYTEsMSwwLDAsMCwxLC4xMSwxLDEsMCwwLDAsLjU3LS45VjEyLjM3QTcuNDUsNy40NSwwLDAsMSwzMCwx''@;'; put 'put ''My41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''YmFkZ2UiLz4nKSxlLkNsclNoYXBlQ2hhdEJ1YmJsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMi41Yy04LjgyLDAtMTYsNi4yOC0xNiwxNHM3LjE4LDE0LDE2LDE0YTE4LDE4LDAsMCwwLDQuODgtLjY4bDUuNTMsMy41MmExLDEsMCwwLDAsMS41NC0uODRsMC02LjczYTEzLDEz''@;'; put 'put ''LDAsMCwwLDQtOS4yN0MzNCw4Ljc4LDI2LjgyLDIuNSwxOCwyLjVaTTI4LjI5LDI0LjYxYTEsMSwwLDAsMC0uMzIuNzNsMCw1LjM0LTQuMzgtMi43OWExLDEsMCwwLDAtLjgzLS4xMUExNiwxNiwwLDAsMSwxOCwyOC41Yy03LjcyLDAtMTQtNS4zOC0xNC0xMnM2LjI4LTEyLDE0LTEyLDE0LDUu''@;'; put 'put ''MzgsMTQsMTJBMTEuMDgsMTEuMDgsMCwwLDEsMjguMjksMjQuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNSwxNS41SDExYTEsMSwwLDAsMCwwLDJIMjVhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIxLjc1LDIwLjVoLTcuNWExLDEsMCwwLDAsMCwyaDcuNWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMTEuMjgsMTIuNUgyNC43MmExLDEsMCwwLDAsMC0ySDExLjI4YTEsMSwwLDAsMCwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4zOCwxMi42OWE3LjQzLDcuNDMsMCwwLDEtMS44''@;'; put 'put ''OS42NkExMC4zNSwxMC4zNSwwLDAsMSwzMiwxNi41YTExLjA4LDExLjA4LDAsMCwxLTMuNzEsOC4xMSwxLDEsMCwwLDAtLjMyLjczbDAsNS4zNC00LjM4LTIuNzlhMSwxLDAsMCwwLS44My0uMTFBMTYsMTYsMCwwLDEsMTgsMjguNWMtNy43MiwwLTE0LTUuMzgtMTQtMTJzNi4yOC0xMiwxNC0x''@;'; put 'put ''MmExNiwxNiwwLDAsMSw0LjU1LjY2QTcuNDQsNy40NCwwLDAsMSwyMywzLjIyYTE4LDE4LDAsMCwwLTUtLjcyYy04LjgyLDAtMTYsNi4yOC0xNiwxNHM3LjE4LDE0LDE2LDE0YTE4LDE4LDAsMCwwLDQuODgtLjY4bDUuNTMsMy41MmExLDEsMCwwLDAsMS41NC0uODRsMC02LjczYTEzLDEzLDAs''@;'; put 'put ''MCwwLDQtOS4yN0ExMi4zMiwxMi4zMiwwLDAsMCwzMy4zOCwxMi42OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMSwxNS41YTEsMSwwLDAsMCwwLDJIMjVhMSwxLDAsMCwwLDAt''@;'; put 'put ''MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC4yNSwyMC41YTEsMSwwLDAsMCwwLDJoNy41YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMjgsMTEuNWExLDEsMCwwLDAsMSwxSDI0LjcyYTEsMSwwLDAsMCwuODMtLjQ3QTcuNTMsNy41MywwLDAsMSwyNCwxMC41SDExLjI4QTEsMSwwLDAsMCwxMC4yOCwxMS41WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdl''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIuNWMtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNGExOCwxOCwwLDAsMCw0Ljg4LS42OGw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuNTQtLjg0bDAtNi43M2ExMywxMywwLDAsMCw0LTkuMjdDMzQsOC43OCwyNi44MiwyLjUs''@;'; put 'put ''MTgsMi41Wm04LDE0YTEsMSwwLDAsMS0xLDFIMTFhMSwxLDAsMCwxLDAtMkgyNUExLDEsMCwwLDEsMjYsMTYuNVptLTMuMjUsNWExLDEsMCwwLDEtMSwxaC03LjVhMSwxLDAsMCwxLDAtMmg3LjVBMSwxLDAsMCwxLDIyLjc1LDIxLjVabS0xMi40Ny0xMGExLDEsMCwwLDEsMS0xSDI0LjcyYTEs''@;'; put 'put ''MSwwLDAsMSwwLDJIMTEuMjhBMSwxLDAsMCwxLDEwLjI4LDExLjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjI1YTcuNDYsNy40NiwwLDAsMS00LjM1LTEuNCwxLDEsMCwwLDEtLjkzLjY1SDExLjI4YTEs''@;'; put 'put ''MSwwLDAsMSwwLTJIMjQuMkE3LjQ2LDcuNDYsMCwwLDEsMjMsMy4yYTE4LDE4LDAsMCwwLTUtLjdjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgsMTQsMTYsMTRhMTgsMTgsMCwwLDAsNC44OC0uNjhsNS41MywzLjUyYTEsMSwwLDAsMCwxLjU0LS44NGwwLTYuNzNhMTMsMTMsMCwwLDAsNC05''@;'; put 'put ''LjI3LDEyLjM0LDEyLjM0LDAsMCwwLS42OC00QTcuNDYsNy40NiwwLDAsMSwzMCwxMy4yNVpNMjEuNzUsMjIuNWgtNy41YTEsMSwwLDAsMSwwLTJoNy41YTEsMSwwLDAsMSwwLDJabTMuMjUtNUgxMWExLDEsMCwwLDEsMC0ySDI1YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktc29saWQt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNS43NSIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGUuQ2xyU2hh''@;'; put 'put ''cGVQaWN0dXJlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNNCwzMFY2SDMyVjMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjkyLDE0YTMsMywwLDEsMC0zLTNBMywzLDAsMCwwLDguOTIsMTRabTAtNC42QTEuNiwxLjYsMCwxLDEsNy4zMywxMSwxLjYsMS42LDAsMCwxLDguOTIsOS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0y''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNzgsMTUuMzdsLTUuNCw1LjQtNC00YTEsMSwwLDAsMC0xLjQxLDBMNS45MiwyMi45djIuODNsNi43OS02Ljc5TDE2LDIyLjE4bC0zLjc1LDMuNzVIMTVsOC40NS04LjQ1TDMwLDI0VjIxLjE4bC01LjgxLTUuODFBMSwxLDAsMCwwLDIyLjc4''@;'; put 'put ''LDE1LjM3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45MywxMWEzLDMsMCwxLDAtMywzQTMsMywwLDAsMCwxMS45MywxMVptLTQuNiwwYTEuNiwxLjYsMCwxLDEsMS42LDEuNkExLjYsMS42LDAsMCwxLDcu''@;'; put 'put ''MzMsMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy4zOCwyMC43N2wtNC00YTEsMSwwLDAsMC0xLjQxLDBMNS45MiwyMi45djIuODNsNi43OS02Ljc5TDE2LDIyLjE4bC0zLjc1''@;'; put 'put ''LDMuNzVIMTVsOC40NS04LjQ1TDMwLDI0VjIxLjE4bC01LjgxLTUuODFhMSwxLDAsMCwwLTEuNDEsMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDEzLjIyVjMwSDRWNkgyMi41''@;'; put 'put ''YTcuNDksNy40OSwwLDAsMSwuMjgtMkg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEy''@;'; put 'put ''LDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNOC45Miw4YTMsMywwLDEsMS0zLDNBMywzLDAsMCwxLDguOTIsOFpNNiwyN1YyMi45bDYtNi4wOGExLDEsMCwwLDEsMS40MSwwTDE2LDE5LjM1LDguMzIsMjdabTI0LDBIMTEuMTVsNi4yMy02LjIzLDUuNC01''@;'; put 'put ''LjRhMSwxLDAsMCwxLDEuNDEsMEwzMCwyMS4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNDgsNy40OCwwLDAsMSwyMi43OCw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWMTIuMzRBNy40Niw3LjQ2LDAsMCwxLDMwLDEzLjVaTTguOTIsOGEzLDMsMCwxLDEtMywzQTMsMywwLDAsMSw4LjkyLDhaTTYsMjdWMjIuOWw2LTYuMDhhMSwxLDAsMCwxLDEuNDEsMEwxNiwxOS4zNSw4LjMyLDI3Wm0yNCwwSDExLjE1bDYuMjMtNi4yMyw1LjQtNS40YTEs''@;'; put 'put ''MSwwLDAsMSwxLjQxLDBMMzAsMjEuMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLGUuQ2xyU2hhcGVIYXBweUZhY2U9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMC44OSIgY3k9IjEzLjg5IiByPSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjUu''@;'; put 'put ''MDUiIGN5PSIxMy44OSIgcj0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4xMywyOC4yMWE4LjY3LDguNjcsMCwwLDAsOC4yNi02SDkuODdBOC42Nyw4LjY3LDAsMCwwLDE4LjEzLDI4LjIxWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTguODksMTMuODlhMiwyLDAsMSwxLDIsMkEyLDIsMCwwLDEsOC44OSwxMy44OVptOS4yNCwxNC4zMmE4LjY3''@;'; put 'put ''LDguNjcsMCwwLDEtOC4yNi02SDI2LjM4QTguNjcsOC42NywwLDAsMSwxOC4xMywyOC4yMVptNi45My0xMi4zMmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwyNS4wNSwxNS44OVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxlLkNsclNoYXBlTmV1dHJhbEZh''@;'; put 'put ''Y2U9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LjA1LDIyLjA2aC0xMmExLDEsMCwwLDAsMCwyaDEyYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAs''@;'; put 'put ''MzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNS4xNiIgY3k9IjE0LjI4IiByPSIxLjgiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMS4xNiIgY3k9IjE0LjI4IiByPSIxLjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgs''@;'; put 'put ''MkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm03LjA1LDIxLjA2YTEsMSwwLDAsMS0xLDFoLTEyYTEsMSwwLDAsMSwwLTJoMTJBMSwxLDAsMCwxLDI1LjA1LDIzLjA2Wk0yNywxNC4yOGExLjgsMS44LDAsMSwxLTEuOC0xLjhBMS44LDEuOCwwLDAsMSwyNywxNC4yOFptLTE1''@;'; put 'put ''LjgsMS44YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDExLjE2LDE2LjA4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLGUuQ2xyU2hhcGVTYWRGYWNlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0''@;'; put 'put ''LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjUuMTYiIGN5PSIxNC4yOCIgcj0iMS44IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTEuNDEiIGN5PSIxNC4yOCIgcj0iMS44IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjE2''@;'; put 'put ''LDIwYTksOSwwLDAsMC03LjMzLDMuNzgsMSwxLDAsMSwwLDEuNjMsMS4xNiw3LDcsMCwwLDEsMTEuMzEtLjEzLDEsMSwwLDAsMCwxLjYtMS4yQTksOSwwLDAsMCwxOC4xNiwyMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm05LDEyLjI4YTEuOCwxLjgsMCwxLDEtMS44LTEuOEExLjgsMS44LDAsMCwxLDI3LDE0LjI4Wm0tMTUuNTUsMS44YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDExLjQxLDE2LjA4Wm0xNCw3''@;'; put 'put ''LjUzYTEsMSwwLDAsMS0xLjYsMS4yLDcsNywwLDAsMC0xMS4zMS4xMywxLDEsMCwxLDEtMS42My0xLjE2LDksOSwwLDAsMSwxNC41NC0uMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksZS5DbHJTaGFwZVRodW1ic1VwPSgwLGEuY2xySWNvblNWRykoJzxw''@;'; put 'put ''YXRoIGQ9Ik0yNCwyNmMtMi45MiwxLjgyLTcuMyw0LTkuMzcsNGgtNmExNi42OCwxNi42OCwwLDAsMS0zLjMxLTYuMDhBMjYuNzEsMjYuNzEsMCwwLDEsNCwxNmg5VjZhMi4wNSwyLjA1LDAsMCwxLDEuMjYtMS42OWMuNzcsMiwyLjYyLDYuNTcsNC4yMyw4LjcyQTExLjM5LDExLjM5LDAsMCww''@;'; put 'put ''LDI0LDE2LjkxVjE0Ljc4YTkuMTMsOS4xMywwLDAsMS0zLjkxLTNjLTEuODgtMi41MS00LjI5LTkuMTEtNC4zMS05LjE3QTEsMSwwLDAsMCwxNC41OSwyQzEzLjI1LDIuMzgsMTEsMy42LDExLDZ2OEgzYTEsMSwwLDAsMC0xLDEsMjksMjksMCwwLDAsMS40LDkuNjJjMS44OSw1LjQsNC4xLDcu''@;'; put 'put ''MTQsNC4yLDcuMjJhMSwxLDAsMCwwLC42MS4yMWg2LjQyYzIuNDMsMCw2LjU1LTIsOS4zNy0zLjYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQsMzFIMjdhMSwxLDAsMCwxLTEtMVYxNGExLDEsMCwwLDEs''@;'; put 'put ''MS0xaDdabS02LTJoNFYxNUgyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LjYzLDEyLjEyQzE3LjUxLDkuMjgsMTQuODgsMiwxNC44OCwyUzEyLDIuODMsMTIsNS4yNVYxNUgyLjIzYTI5LjQ2LDI5LjQ2''@;'; put 'put ''LDAsMCwwLDEuNDQsOS43NEM1LjYxLDMwLjI3LDcuOCwzMiw3LjgsMzJoNi44NkMxNi45LDMyLDIxLDMwLjA2LDI0LDI4LjMxVjE1LjUxQTEwLjg0LDEwLjg0LDAsMCwxLDE5LjYzLDEyLjEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0yNywxM2ExLDEsMCwwLDAtMSwxVjMwYTEsMSwwLDAsMCwxLDFoN1YxM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZVRodW1ic0Rvd249KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEyLDEwYzIuOTItMS44Miw3''@;'; put 'put ''LjMtNCw5LjM3LTRoNmExNi42OCwxNi42OCwwLDAsMSwzLjMxLDYuMDhBMjYuNzEsMjYuNzEsMCwwLDEsMzIsMjBIMjNWMzBhMi4wNSwyLjA1LDAsMCwxLTEuMjYsMS42OWMtLjc3LTItMi42Mi02LjU3LTQuMjMtOC43MkExMS4zOSwxMS4zOSwwLDAsMCwxMiwxOS4wOXYyLjEzYTkuMTMsOS4x''@;'; put 'put ''MywwLDAsMSwzLjkxLDNjMS44OCwyLjUxLDQuMjksOS4xMSw0LjMxLDkuMTdhMSwxLDAsMCwwLDEuMTkuNjNDMjIuNzUsMzMuNjIsMjUsMzIuNCwyNSwzMFYyMmg4YTEsMSwwLDAsMCwxLTEsMjksMjksMCwwLDAtMS40LTkuNjJjLTEuODktNS40LTQuMS03LjE0LTQuMi03LjIyQTEsMSwwLDAs''@;'; put 'put ''MCwyNy43OSw0SDIxLjM3QzE4Ljk0LDQsMTQuODMsNiwxMiw3LjYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMiw1SDlhMSwxLDAsMCwxLDEsMVYyMmExLDEsMCwwLDEtMSwxSDJaTTgsN0g0VjIxSDhaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNi4zNywyMy44NGMyLjEyLDIuODQsNC43NiwxMC4wNyw0Ljc2LDEwLjA3UzI0LDMzLjEzLDI0LDMwLjcxVjIxaDkuNzdhMjkuNDYsMjkuNDYsMCwwLDAtMS40NC05Ljc0''@;'; put 'put ''QzMwLjM5LDUuNjgsMjguMiw0LDI4LjIsNEgyMS4zNUMxOS4xLDQsMTUsNS45LDEyLDcuNjV2MTIuOEExMC44NCwxMC44NCwwLDAsMSwxNi4zNywyMy44NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOSwyM2ExLDEs''@;'; put 'put ''MCwwLDAsMS0xVjZBMSwxLDAsMCwwLDksNUgyVjIzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlQ3Jvd249KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik00LDEzLjMzQTEuMzksMS4zOSwwLDEsMCwyLjYsMTQuNzIsMS4zOSwx''@;'; put 'put ''LjM5LDAsMCwwLDQsMTMuMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzEuODEsMTUuODRhMjAuMzUsMjAuMzUsMCwwLDAtNC41OCwxLjQzLDIyLjcsMjIuNywwLDAsMC0zLjQ4LDIuMUExNy42OSwxNy42OSwwLDAsMSwyMiwx''@;'; put 'put ''Ni41N2E0Ny42NSw0Ny42NSwwLDAsMS0yLjgtNy42OSwxLDEsMCwwLDAtMS0uNzQsMSwxLDAsMCwwLTEsLjc0LDQ2LjcxLDQ2LjcxLDAsMCwxLTIuOCw3LjY5LDE3LDE3LDAsMCwxLTEuNzYsMi44LDIyLjcsMjIuNywwLDAsMC0zLjQ4LTIuMSwyMC42NiwyMC42NiwwLDAsMC00LjU4LTEuNDMs''@;'; put 'put ''MSwxLDAsMCwwLTEsLjM5LDEsMSwwLDAsMC0uMDksMS4wNUE1MC4xMyw1MC4xMywwLDAsMSw3LjgyLDMxLjE3YTEsMSwwLDAsMCwxLC44M0gyNy42MmExLDEsMCwwLDAsMS0uODMsNTAuMTUsNTAuMTUsMCwwLDEsNC4yNi0xMy44OSwxLDEsMCwwLDAtLjA5LTEuMDVBMSwxLDAsMCwwLDMxLjgx''@;'; put 'put ''LDE1Ljg0Wk0yNi43OSwzMEg5LjY0YTU1LjY2LDU1LjY2LDAsMCwwLTMuNC0xMS43MSwxNS43NSwxNS43NSwwLDAsMSwyLjA5Ljc4LDIwLDIwLDAsMCwxLDMuODUsMi40NSwxLDEsMCwwLDAsMS4zOS0uMDksMTkuMjgsMTkuMjgsMCwwLDAsMi42Ny00LDQzLjQ2LDQzLjQ2LDAsMCwwLDItNC44''@;'; put 'put ''OSw0MS43NCw0MS43NCwwLDAsMCwyLDQuODksMTkuOTIsMTkuOTIsMCwwLDAsMi42Niw0LDEsMSwwLDAsMCwxLjQuMDksMTkuMjEsMTkuMjEsMCwwLDEsMy44NS0yLjQ1LDE0Ljc3LDE0Ljc3LDAsMCwxLDIuMDktLjc4QTU1LjA3LDU1LjA3LDAsMCwwLDI2Ljc5LDMwWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPGVsbGlwc2UgY3g9IjMzLjgzIiBjeT0iMTMuMzMiIHJ4PSIxLjM5IiByeT0iMS4zOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTE4LjIyLDYuMzlBMS4zOSwxLjM5''@;'; put 'put ''LDAsMSwwLDE2Ljg0LDUsMS4zOSwxLjM5LDAsMCwwLDE4LjIyLDYuMzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMTguMjMsMjYuMzRhMS4xMSwxLjExLDAsMSwwLDEuMSwxLjFBMS4xLDEuMSwwLDAsMCwxOC4yMywyNi4zNFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxwYXRoIGQ9Ik0xMi41OCwyNi4zNGExLjExLDEuMTEsMCwxLDAsMS4xLDEuMUExLjEsMS4xLDAsMCwwLDEyLjU4LDI2LjM0WiIvPjxwYXRoIGQ9Ik0yMy44OSwyNi4zNGExLjExLDEuMTEsMCwxLDAsMS4x''@;'; put 'put ''LDEuMUExLjEsMS4xLDAsMCwwLDIzLjg5LDI2LjM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cblxuICA8cGF0aCBkPSJNMi42LDExLjkzQTEuNCwxLjQsMCwxLDAsNCwxMy4zMywxLjQsMS40LDAsMCwwLDIuNiwxMS45M1oiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgPGVsbGlwc2UgY3g9IjMzLjgzIiBjeT0iMTMuMzMiIHJ4PSIxLjM5IiByeT0iMS4zOSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMTguMjIsNi4zOUExLjM5LDEuMzksMCwxLDAsMTYu''@;'; put 'put ''ODQsNSwxLjM5LDEuMzksMCwwLDAsMTguMjIsNi4zOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTMxLjYzLDE2LjFBMTguNjEsMTguNjEsMCwwLDAsMjgsMTcuMzRhMjEuNTcsMjEuNTcsMCwwLDAtNCwyLjQ5LDE5LjIsMTkuMiwwLDAs''@;'; put 'put ''MS0yLjI2LTMuNDksNDguOTIsNDguOTIsMCwwLDEtMi41Mi02LjU4LDEsMSwwLDAsMC0xLS43MWgwYTEsMSwwLDAsMC0xLC43MSw0OC40Miw0OC40MiwwLDAsMS0yLjUyLDYuNTgsMTguNjksMTguNjksMCwwLDEtMi4yNiwzLjQ4LDIyLjgxLDIyLjgxLDAsMCwwLTQtMi40OEExOC44MywxOC44''@;'; put 'put ''MywwLDAsMCw0LjksMTYuMWExLDEsMCwwLDAtMSwuMzMsMSwxLDAsMCwwLS4xMywxLjA3LDU1LjksNTUuOSwwLDAsMSw0LDEzLjUsMSwxLDAsMCwwLDEsLjgzaDE5YTEsMSwwLDAsMCwxLS44Myw1NS45LDU1LjksMCwwLDEsNC0xMy41LDEsMSwwLDAsMC0uMTMtMS4wN0ExLDEsMCwwLDAsMzEu''@;'; put 'put ''NjMsMTYuMVpNMTEuMDgsMjguNTVhMS4xMSwxLjExLDAsMSwxLDEuMS0xLjExQTEuMTEsMS4xMSwwLDAsMSwxMS4wOCwyOC41NVptNy4xNSwwYTEuMTEsMS4xMSwwLDAsMSwwLTIuMjEsMS4xMSwxLjExLDAsMCwxLDAsMi4yMVptNy4xNiwwYTEuMTEsMS4xMSwwLDEsMSwxLjEtMS4xMUExLjEx''@;'; put 'put ''LDEuMTEsMCwwLDEsMjUuMzksMjguNTVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00Ii8+XG4gICcpLGUuQ2xyU2hhcGVIYXNodGFnPSgwLGEuY2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNMzIsMTJIMjUuMzRsMS41NS03Ljc0YTEsMSwwLDAsMC0yLS4zOUwyMy4z''@;'; put 'put ''LDEySDE1LjExbDEuNTUtNy43NGExLDEsMCwwLDAtMi0uMzlMMTMuMDcsMTJINmExLDEsMCwwLDAsMCwyaDYuNjdsLTEuNiw4SDRhMSwxLDAsMCwwLDAsMmg2LjY2TDkuMTEsMzEuNzRhMSwxLDAsMCwwLC43OSwxLjE3LjY4LjY4LDAsMCwwLC4yLDAsMSwxLDAsMCwwLDEtLjhMMTIuNywyNGg4''@;'; put 'put ''LjE5bC0xLjU1LDcuNzRhMSwxLDAsMCwwLC43OSwxLjE3LjYyLjYyLDAsMCwwLC4xOSwwLDEsMSwwLDAsMCwxLS44TDIyLjkzLDI0SDMwYTEsMSwwLDAsMCwwLTJIMjMuMzNsMS42MS04SDMyYTEsMSwwLDAsMCwwLTJaTTIxLjI5LDIySDEzLjFsMS42MS04SDIyLjlaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuXG4gIDxwYXRoIGQ9Ik0zMS44NywxMEgyNi4zMmwxLTQuODNBMSwxLDAsMCwwLDI2LjM1LDRoLTJhMSwxLDAsMCwwLTEsLjc4TDIyLjMzLDEwaC01LjRsMS00LjgzQTEsMSwwLDAsMCwxNyw0SDE1YTEsMSwwLDAsMC0xLC43OEwxMywx''@;'; put 'put ''MEg3YTEsMSwwLDAsMC0xLC44bC0uNDEsMmExLDEsMCwwLDAsMSwxLjJoNS41NUwxMC41LDIyaC02YTEsMSwwLDAsMC0xLC44bC0uNDEsMmExLDEsMCwwLDAsMSwxLjJIOS42OGwtMSw0LjgzYTEsMSwwLDAsMCwxLDEuMTdoMmExLDEsMCwwLDAsLjk1LS43OEwxMy42NywyNmg1LjRsLTEsNC44''@;'; put 'put ''M0ExLDEsMCwwLDAsMTksMzJoMmExLDEsMCwwLDAsMS0uNzhMMjMuMDUsMjZoNmExLDEsMCwwLDAsMS0uOGwuNC0yYTEsMSwwLDAsMC0xLTEuMkgyMy44N2wxLjYzLThoNmExLDEsMCwwLDAsMS0uOGwuNDEtMkExLDEsMCwwLDAsMzEuODcsMTBabS0xMiwxMmgtNS40bDEuNjQtOGg1LjRaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICcpLGUuU29jaWFsU2hhcGVzPXtjcm93bjplLkNsclNoYXBlQ3Jvd24sc2hhcmU6ZS5DbHJTaGFwZVNoYXJlLHN0YXI6ZS5DbHJTaGFwZVN0YXIsImhhbGYtc3RhciI6ZS5DbHJTaGFwZUhhbGZTdGFyLGJvb2ttYXJr''@;'; put 'put ''OmUuQ2xyU2hhcGVCb29rbWFyayxlbnZlbG9wZTplLkNsclNoYXBlRW52ZWxvcGUsY2FsZW5kYXI6Yy5DbHJTaGFwZUNhbGVuZGFyLGV2ZW50OmMuQ2xyU2hhcGVFdmVudCx0YXNrczplLkNsclNoYXBlVGFza3MsZmxhZzplLkNsclNoYXBlRmxhZyxpbmJveDplLkNsclNoYXBlSW5ib3gsaGFz''@;'; put 'put ''aHRhZzplLkNsclNoYXBlSGFzaHRhZyxoZWFydDplLkNsclNoYXBlSGVhcnQsImhlYXJ0LWJyb2tlbiI6ZS5DbHJTaGFwZUhlYXJ0QnJva2VuLCJ0YWxrLWJ1YmJsZXMiOmUuQ2xyU2hhcGVUYWxrQnViYmxlcywiY2hhdC1idWJibGUiOmUuQ2xyU2hhcGVDaGF0QnViYmxlLHBpY3R1cmU6ZS5D''@;'; put 'put ''bHJTaGFwZVBpY3R1cmUsImhhcHB5LWZhY2UiOmUuQ2xyU2hhcGVIYXBweUZhY2UsIm5ldXRyYWwtZmFjZSI6ZS5DbHJTaGFwZU5ldXRyYWxGYWNlLCJzYWQtZmFjZSI6ZS5DbHJTaGFwZVNhZEZhY2UsInRodW1icy11cCI6ZS5DbHJTaGFwZVRodW1ic1VwLCJ0aHVtYnMtZG93biI6ZS5DbHJT''@;'; put 'put ''aGFwZVRodW1ic0Rvd259LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLlNvY2lhbFNoYXBlcywiZmF2b3JpdGUiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Tb2NpYWxTaGFwZXMuc3RhcikpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLlNvY2lhbFNoYXBlcywiZW1haWwiLCgwLHIuZGVzY3Jp''@;'; put 'put ''cHRvckNvbmZpZykoZS5Tb2NpYWxTaGFwZXMuZW52ZWxvcGUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5Tb2NpYWxTaGFwZXMsImRhdGUiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5Tb2NpYWxTaGFwZXMuY2FsZW5kYXIpKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93''@;'; put 'put ''Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoZS5Tb2NpYWxTaGFwZXMpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3RlY2hub2xvZ3ktc2hhcGVzLnRzIjpmdW5jdGlvbihBLGUsYSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLkNsclNoYXBlVk1XQXBwPWUuQ2xyU2hhcGVWTT1lLkNsclNoYXBlUm91dGVyPWUuQ2xyU2hhcGVOZXR3b3JrU3dpdGNoPWUuQ2xyU2hhcGVOZXR3b3JrU2V0dGluZ3M9ZS5DbHJTaGFwZU5ldHdvcmtHbG9iZT1lLkNsclNo''@;'; put 'put ''YXBlVGFibGV0PWUuQ2xyU2hhcGVNb2JpbGU9ZS5DbHJTaGFwZUJhdHRlcnk9ZS5DbHJTaGFwZUFwcGxpY2F0aW9uPWUuQ2xyU2hhcGVDb2RlPWUuQ2xyU2hhcGVUZXJtaW5hbD1lLkNsclNoYXBlRGlzcGxheT1lLkNsclNoYXBlQ29tcHV0ZXI9ZS5DbHJTaGFwZUZsb3BweT1lLkNsclNoYXBl''@;'; put 'put ''UGx1Z2luPWUuQ2xyU2hhcGVEb3dubG9hZENsb3VkPWUuQ2xyU2hhcGVVcGxvYWRDbG91ZD1lLkNsclNoYXBlRXhwb3J0PWUuQ2xyU2hhcGVJbXBvcnQ9ZS5DbHJTaGFwZVNoaWVsZFg9ZS5DbHJTaGFwZVNoaWVsZD1lLkNsclNoYXBlU2hpZWxkQ2hlY2s9ZS5DbHJTaGFwZVJlc291cmNlUG9v''@;'; put 'put ''bD1lLkNsclNoYXBlRGF0YUNsdXN0ZXI9ZS5DbHJTaGFwZU1lbW9yeT1lLkNsclNoYXBlQ1BVPWUuQ2xyU2hhcGVCdWlsZGluZz1lLkNsclNoYXBlQXBwbGljYXRpb25zPWUuQ2xyU2hhcGVDbHVzdGVyPWUuQ2xyU2hhcGVTdG9yYWdlPWUuQ2xyU2hhcGVIb3N0PWUuQ2xyU2hhcGVEYXNoYm9h''@;'; put 'put ''cmQ9ZS5DbHJTaGFwZU1vdXNlPWUuQ2xyU2hhcGVLZXlib2FyZD1lLkNsclNoYXBlRGV2aWNlcz1lLkNsclNoYXBlQmFja3VwPWUuQ2xyU2hhcGVCYWNrdXBSZXN0b3JlPWUuQ2xyU2hhcGVIYXJkRGlzaz1lLkNsclNoYXBlUmFja1NlcnZlcj1lLkNsclNoYXBlV2lmaT1lLkNsclNoYXBlQnVu''@;'; put 'put ''ZGxlPWUuQ2xyU2hhcGVCbG9ja3NHcm91cD1lLkNsclNoYXBlQmxvY2s9ZS5DbHJTaGFwZUxheWVycz1lLkNsclNoYXBlVW5pbnN0YWxsPWUuQ2xyU2hhcGVJbnN0YWxsPWUuQ2xyU2hhcGVOb1dpZmk9ZS5DbHJTaGFwZVBob25lSGFuZHNldD1lLkNsclNoYXBlUnVsZXJQZW5jaWw9dm9pZCAw''@;'; put 'put ''LGUuVGVjaG5vbG9neVNoYXBlcz1lLkNsclNoYXBlRmlsZVNoYXJlMj1lLkNsclNoYXBlQ2lDZD1lLkNsclNoYXBlQW5pbWF0aW9uPWUuQ2xyU2hhcGVUYXBlRHJpdmU9ZS5DbHJTaGFwZU1lZGlhQ2hhbmdlcj1lLkNsckNvbnRyb2xMdW49ZS5DbHJTaGFwZVBvZD1lLkNsclNoYXBlTm9kZT1l''@;'; put 'put ''LkNsclNoYXBlTmFtZXNwYWNlPWUuQ2xyU2hhcGVOb2Rlcz1lLkNsclNoYXBlTm9kZUdyb3VwPWUuQ2xyU2hhcGVTdG9yYWdlQWRhcHRlcj1lLkNsclNoYXBlSG9zdEdyb3VwPWUuQ2xyU2hhcGVTcXVpZD1lLkNsclNoYXBlQ2FwYWNpdG9yPWUuQ2xyU2hhcGVSZXNpc3Rvcj1lLkNsclNoYXBl''@;'; put 'put ''SW5kdWN0b3I9ZS5DbHJTaGFwZVJhZGFyPWUuQ2xyU2hhcGVVc2I9ZS5DbHJTaGFwZVFyQ29kZT1lLkNsclNoYXBlRmlsZVNoYXJlPWUuQ2xyU2hhcGVDb250YWluZXJWb2x1bWU9ZS5DbHJTaGFwZUNvbnRhaW5lcj1lLkNsclNoYXBlQ2REdmQ9ZS5DbHJTaGFwZUJhckNvZGU9ZS5DbHJTaGFw''@;'; put 'put ''ZUF0b209ZS5DbHJTaGFwZUFzc2lnblVzZXI9ZS5DbHJTaGFwZVByb2Nlc3NPblZNPWUuQ2xyU2hhcGVCbHVldG9vdGhPZmY9ZS5DbHJTaGFwZUJsdWV0b290aD1lLkNsclNoYXBlU1NEPWUuQ2xyU2hhcGVOVk1lPWUuQ2xyU2hhcGVIYXJkRHJpdmVEaXNrcz1lLkNsclNoYXBlSGFyZERyaXZl''@;'; put 'put ''PWUuQ2xyU2hhcGVBZG1pbmlzdHJhdG9yPWUuQ2xyU2hhcGVGbGFzaz1lLkNsclNoYXBlSGVsaXg9ZS5DbHJTaGFwZURlcGxveT1lLkNsclNoYXBlQ2xvdWRUcmFmZmljPWUuQ2xyU2hhcGVDbG91ZFNjYWxlPWUuQ2xyU2hhcGVDbG91ZE5ldHdvcms9ZS5DbHJTaGFwZVVubGluaz1lLkNsclNo''@;'; put 'put ''YXBlTGluaz1lLkNsclNoYXBlRGlzY29ubmVjdD1lLkNsclNoYXBlQ29ubmVjdD1lLkNsclNoYXBlVW5hcmNoaXZlPWUuQ2xyU2hhcGVBcmNoaXZlPWUuQ2xyU2hhcGVDZXJ0aWZpY2F0ZT12b2lkIDA7dmFyIHI9YSgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25m''@;'; put 'put ''aWcudHMiKTthPWEoIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIiksZS5DbHJTaGFwZVJ1bGVyUGVuY2lsPSgwLGEuY2xySWNvblNWRykoJzxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBwb2ludHM9Ijkg''@;'; put 'put ''MTcuNDEgOSAyNyAxOC41OSAyNyAxNi41OSAyNSAxMSAyNSAxMSAxOS40MSA5IDE3LjQxIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTM0Ljg3LDMyLjI5LDMyLDI5LjM4VjMySDRWMjcuODVINnYtMS42SDRWMTku''@;'; put 'put ''Nkg2VjE4SDRWMTEuNkg2VjEwSDRWNC40MUwxOS45NCwyMC4yNlYxNy40NEwzLjcxLDEuMjlBMSwxLDAsMCwwLDIsMlYzM2ExLDEsMCwwLDAsMSwxSDM0LjE2YTEsMSwwLDAsMCwuNzEtMS43MVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0zIiBkPSJNMjQsMzBoNGEyLDIsMCwwLDAsMi0yVjguN0wyNy43LDQuNDdhMiwyLDAsMCwwLTEuNzYtMWgwYTIsMiwwLDAsMC0xLjc2LDEuMDhMMjIsOC43MlYyOEEyLDIsMCwwLDAsMjQsMzBaTTI0LDkuMmwxLjk0LTMuNzdMMjgsOS4yMVYyNEgyNFptMCwxNi40M2g0djIuNDRI''@;'; put 'put ''MjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzQuODcsMzIuMjEsMzAsMjcuMzdWOC43NUwyNy43LDQuNTJhMiwyLDAsMCwwLTMuNTQsMEwyMiw4Ljc2VjE5LjQxTDMuNzEsMS4yMUExLDEsMCwwLDAsMiwxLjkyVjEw''@;'; put 'put ''SDQuMTd2MS42SDJWMThINC4xN3YxLjZIMnY2LjY1SDQuMTd2MS42SDJ2NS4wN2ExLDEsMCwwLDAsMSwxSDM0LjE2YTEsMSwwLDAsMCwuNzEtMS43MVpNMTAsMjZWMTYuOTRMMTkuMDcsMjZabTE4LDIuMTFIMjRWMjUuNjhoNFptMC00SDI0VjkuMjVsMS45NC0zLjc3TDI4LDkuMjZaIi8+XG4n''@;'; put 'put ''KSxlLkNsclNoYXBlUGhvbmVIYW5kc2V0PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcuNzMsMzUuNDRhNC43Miw0LjcyLDAsMCwxLTEtLjExLDMzLjkxLDMzLjkxLDAsMCwxLTE2LjYyLTguNzUsMzIuNzEs''@;'; put 'put ''MzIuNzEsMCwwLDEtOS0xNi4yNUE0LjU4LDQuNTgsMCwwLDEsMi40Niw2LjA1bDQtMy44NUEyLDIsMCwwLDEsOCwxLjY2YTIsMiwwLDAsMSwxLjQ1Ljg3bDUsNy4zOWExLjYsMS42LDAsMCwxLS4xMSwxLjlsLTIuNTEsM2ExOC45NCwxOC45NCwwLDAsMCw0LjE3LDUuODloMGExOS4yNiwxOS4y''@;'; put 'put ''NiwwLDAsMCw2LjA3LDQuMDlsMy4xMS0yLjQ3YTEuNjQsMS42NCwwLDAsMSwxLjg2LS4xMmw3LjU1LDQuODhBMiwyLDAsMCwxLDM1LDMwLjJsLTMuOSwzLjg2QTQuNzQsNC43NCwwLDAsMSwyNy43MywzNS40NFpNNy44NCwzLjY0bC00LDMuODVhMi41NCwyLjU0LDAsMCwwLS43NSwyLjQsMzAu''@;'; put 'put ''NywzMC43LDAsMCwwLDguNDEsMTUuMjYsMzEuOSwzMS45LDAsMCwwLDE1LjY0LDguMjMsMi43NSwyLjc1LDAsMCwwLDIuNS0uNzRsMy45LTMuODYtNy4yOS00LjcxLTMuMzQsMi42NmExLDEsMCwwLDEtLjkyLjE3LDIwLjA2LDIwLjA2LDAsMCwxLTcuMzYtNC43NWgwYTE5LjQ5LDE5LjQ5LDAs''@;'; put 'put ''MCwxLTQuODctNy4yQTEsMSwwLDAsMSwxMCwxNGwyLjctMy4yM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xNS4yMiwyMC42NGEyMC4zNywyMC4zNywwLDAsMCw3LjQsNC43OWwzLjc3LTNhLjY3LjY3LDAsMCwxLC43''@;'; put 'put ''NiwwbDcsNC41MWEyLDIsMCwwLDEsLjMzLDMuMThsLTMuMjgsMy4yNGE0LDQsMCwwLDEtMy42MywxLjA3LDM1LjA5LDM1LjA5LDAsMCwxLTE3LjE1LTlBMzMuNzksMzMuNzksMCwwLDEsMS4xNSw4LjZhMy43OCwzLjc4LDAsMCwxLDEuMS0zLjU1bDMuNC0zLjI4YTIsMiwwLDAsMSwzLjEyLjMy''@;'; put 'put ''TDEzLjQzLDlhLjYzLjYzLDAsMCwxLDAsLjc1bC0zLjA3LDMuNjlBMTkuNzUsMTkuNzUsMCwwLDAsMTUuMjIsMjAuNjRaIi8+XG4nKSxlLkNsclNoYXBlTm9XaWZpPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJN''@;'; put 'put ''MTgsMjQuNDJhNCw0LDAsMSwwLDQsNEE0LDQsMCwwLDAsMTgsMjQuNDJabTAsNmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwxOCwzMC40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjYuMjEsMjEuODVhMSwx''@;'; put 'put ''LDAsMCwwLS4yMy0xLjQsMTMuNTYsMTMuNTYsMCwwLDAtNS0yLjIzbDMuODcsMy44N0ExLDEsMCwwLDAsMjYuMjEsMjEuODVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LjA1LDEwLjcyYTIwLjg4LDIwLjg4''@;'; put 'put ''LDAsMCwwLTQuMTYuNDNsMS43NCwxLjc0YTE5LDE5LDAsMCwxLDIuNDItLjE3QTE4Ljc2LDE4Ljc2LDAsMCwxLDI4LjY0LDE2YTEsMSwwLDAsMCwxLjEyLTEuNjVBMjAuNzUsMjAuNzUsMCwwLDAsMTguMDUsMTAuNzJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTMzLjU1LDguMkEyOC4xMSwyOC4xMSwwLDAsMCw4LjExLDUuMzZMOS42OSw2LjkzQTI2LDI2LDAsMCwxLDMyLjQ1LDkuODdhMSwxLDAsMCwwLDEuMS0xLjY3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTUiIGQ9Ik0xLjg0LDQuNzUsNC4yNyw3LjE4Yy0uNjIuMzQtMS4yMy43LTEuODMsMS4xQTEsMSwwLDEsMCwzLjU2LDkuOTRDNC4yNiw5LjQ3LDUsOSw1Ljc0LDguNjVsMy44NywzLjg3QTIwLjU5LDIwLjU5LDAsMCwwLDYuMjMsMTQuNCwxLDEsMCwwLDAsNy4zNiwx''@;'; put 'put ''NmExOC44MiwxOC44MiwwLDAsMSwzLjc3LTJsNC4xNiw0LjE2QTEzLjUxLDEzLjUxLDAsMCwwLDEwLDIwLjU1YTEsMSwwLDAsMCwxLjE4LDEuNjFBMTEuNTIsMTEuNTIsMCwwLDEsMTcsMjBsMTAuOCwxMC44LDEuNDEtMS40MS0yNi0yNloiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgY3g9IjE4IiBjeT0iMjkuNTQiIHI9IjMiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yOS4xOCwxNy43MWwuMTEtLjE3YTEuNTEsMS41MSwwLDAsMC0uNDctMi4x''@;'; put 'put ''QTIwLjU3LDIwLjU3LDAsMCwwLDE4LDEyLjM3Yy0uNTYsMC0xLjExLDAtMS42NS4wN2wzLjIxLDMuMjFhMTcuNDEsMTcuNDEsMCwwLDEsNy42LDIuNTJBMS40OSwxLjQ5LDAsMCwwLDI5LjE4LDE3LjcxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMyIgZD0iTTMyLjc2LDkuMzhBMjcuOSwyNy45LDAsMCwwLDEwLjE4LDYuMjdMMTIuODEsOC45QTI0LjY4LDI0LjY4LDAsMCwxLDMxLjEsMTIuMTJhMS40OSwxLjQ5LDAsMCwwLDItLjQ2bC4xMS0uMTdBMS41MSwxLjUxLDAsMCwwLDMyLjc2LDkuMzhaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiBkPSJNMyw0Ljc1bDMuMSwzLjFBMjcuMjgsMjcuMjgsMCwwLDAsMy4xOCw5LjQyYTEuNTEsMS41MSwwLDAsMC0uNDgsMi4xMWwuMTEuMTdhMS40OSwxLjQ5LDAsMCwwLDIsLjQ2LDI0LjY5LDI0LjY5LDAsMCwx''@;'; put 'put ''LDMuNjctMS45bDMuMTQsMy4xNGEyMC42MywyMC42MywwLDAsMC00LjUzLDIuMDksMS41MSwxLjUxLDAsMCwwLS40NiwyLjFsLjExLjE3YTEuNDksMS40OSwwLDAsMCwyLC40NkExNy40NiwxNy40NiwwLDAsMSwxNC4yNSwxNmwzLjYsMy42YTEzLjM5LDEzLjM5LDAsMCwwLTYuNzksMS45Mywx''@;'; put 'put ''LjUsMS41LDAsMCwwLS40NiwyLjA5bC4xLjE2YTEuNTIsMS41MiwwLDAsMCwyLjA2LjQ0LDEwLjIsMTAuMiwwLDAsMSw5LS43TDI5LDMwLjc1bDEuNDEtMS40MS0yNi0yNloiLz5cbicpLGUuQ2xyU2hhcGVJbnN0YWxsPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAuOTIsOEgyNi41NWExLDEsMCwwLDAsMCwySDMxVjMwSDVWMTBIOS4zOGExLDEsMCwwLDAsMC0ySDUuMDhBMiwyLDAsMCwwLDMsMTBWMzBhMiwyLDAsMCwwLDIuMDgsMkgzMC45MkEyLDIsMCwwLDAsMzMsMzBWMTBBMiwyLDAsMCwwLDMw''@;'; put 'put ''LjkyLDhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTEwLjMsMTguODdsNyw2Ljg5YTEsMSwwLDAsMCwxLjQsMGw3LTYuODlhMSwxLDAsMCwwLTEuNC0xLjQzTDE5LDIyLjY1VjRhMSwxLDAsMCwwLTIsMFYyMi42''@;'; put 'put ''NWwtNS4zLTUuMjFhMSwxLDAsMCwwLTEuNCwxLjQzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTAuMywxOC44N2w3LDYuODlhMSwxLDAsMCwwLDEuNCwwbDctNi44OWExLDEsMCww''@;'; put 'put ''LDAtMS40LTEuNDNMMTksMjIuNjVWNGExLDEsMCwwLDAtMiwwVjIyLjY1bC01LjMtNS4yMWExLDEsMCwwLDAtMS40LDEuNDNaIi8+PHBhdGggZD0iTTMxLDEzLjQzVjMwSDVWMTBIOS4zOGExLDEsMCwwLDAsMC0ySDUuMDhBMiwyLDAsMCwwLDMsMTBWMzBhMiwyLDAsMCwwLDIuMDgsMkgzMC45''@;'; put 'put ''MkEyLDIsMCwwLDAsMzMsMzBWMTIuODdBNy40NSw3LjQ1LDAsMCwxLDMxLDEzLjQzWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTAuMywxOC44N2w3LDYuODlhMSwxLDAsMCwwLDEuNCwwbDctNi44OWExLDEsMCwwLDAtMS40LTEuNDNMMTksMjIuNjVWNGExLDEsMCww''@;'; put 'put ''LDAtMiwwVjIyLjY1bC01LjMtNS4yMWExLDEsMCwwLDAtMS40LDEuNDNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTMxLDE1LjRWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJI''@;'; put 'put ''NS4wOEEyLDIsMCwwLDAsMywxMFYzMGEyLDIsMCwwLDAsMi4wOCwySDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxNS40WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9''@;'; put 'put ''Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbicpLGUuQ2xyU2hhcGVVbmluc3RhbGw9KDAsYS5jbHJJY29uU1ZHKSgnPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xMS4yOSwyNi43MmExLDEsMCwwLDAsMS40MSwwTDE4LDIxLjQ5bDUuMyw1LjIzQTEsMSwwLDAsMCwyNC43LDI1LjNsLTUuMjgtNS4yMSw1LjI4LTUuMjFhMSwxLDAsMCwwLTEuNDEtMS40MkwxOCwxOC42''@;'; put 'put ''OGwtNS4zLTUuMjNhMSwxLDAsMCwwLTEuNDEsMS40Mmw1LjI4LDUuMjFMMTEuMywyNS4zQTEsMSwwLDAsMCwxMS4yOSwyNi43MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzAuOTIsOEgyNi41NWExLDEsMCww''@;'; put 'put ''LDAsMCwySDMxVjMwSDVWMTBIOS4zOGExLDEsMCwwLDAsMC0ySDUuMDhBMiwyLDAsMCwwLDMsMTBWMzBhMiwyLDAsMCwwLDIuMDgsMkgzMC45MkEyLDIsMCwwLDAsMzMsMzBWMTBBMiwyLDAsMCwwLDMwLjkyLDhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMS4yOSwyNi43MmExLDEsMCwwLDAsMS40MSwwTDE4LDIxLjQ5bDUuMyw1LjIzQTEsMSwwLDAsMCwyNC43LDI1LjNsLTUuMjgtNS4yMSw1LjI4LTUuMjFhMSwxLDAsMCwwLTEuNDEtMS40MkwxOCwxOC42OGwtNS4zLTUu''@;'; put 'put ''MjNhMSwxLDAsMCwwLTEuNDEsMS40Mmw1LjI4LDUuMjFMMTEuMywyNS4zQTEsMSwwLDAsMCwxMS4yOSwyNi43MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMxLDEzLjQzVjMwSDVW''@;'; put 'put ''MTBIOS4zOGExLDEsMCwwLDAsMC0ySDUuMDhBMiwyLDAsMCwwLDMsMTBWMzBhMiwyLDAsMCwwLDIuMDgsMkgzMC45MkEyLDIsMCwwLDAsMzMsMzBWMTIuODdBNy40NSw3LjQ1LDAsMCwxLDMxLDEzLjQzWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTEuMjksMjYuNzJh''@;'; put 'put ''MSwxLDAsMCwwLDEuNDEsMEwxOCwyMS40OWw1LjMsNS4yM0ExLDEsMCwwLDAsMjQuNywyNS4zbC01LjI4LTUuMjEsNC43NS00LjY5SDIyLjIzYTMuNjUsMy42NSwwLDAsMS0uODEtLjFMMTgsMTguNjhsLTUuMy01LjIzYTEsMSwwLDAsMC0xLjQxLDEuNDJsNS4yOCw1LjIxTDExLjMsMjUuM0Ex''@;'; put 'put ''LDEsMCwwLDAsMTEuMjksMjYuNzJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTMxLDE1LjRWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywxMFYz''@;'; put 'put ''MGEyLDIsMCwwLDAsMi4wOCwySDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxNS40WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDEx''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbicpLGUuQ2xyU2hhcGVMYXllcnM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyMC4yNWExLDEsMCwwLDEtLjQzLS4xbC0xNS03LjA5YTEsMSwwLDAsMSwwLTEuODFsMTUtNy4wOWExLDEsMCwwLDEsLjg1LDBsMTUsNy4wOWExLDEsMCwwLDEsMCwxLjgxbC0xNSw3LjA5QTEsMSwwLDAsMSwxOCwyMC4yNVpNNS4zNCwxMi4x''@;'; put 'put ''NmwxMi42Niw2LDEyLjY2LTZMMTgsNi4xOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjYuMTZhMSwxLDAsMCwxLS40My0uMUwyLjU3LDE5YTEsMSwwLDEsMSwuODUtMS44MUwxOCwyNC4wNmwxNC41Ny02''@;'; put 'put ''Ljg5QTEsMSwwLDEsMSwzMy40MywxOWwtMTUsNy4wOUExLDEsMCwwLDEsMTgsMjYuMTZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LDMyLjA3YTEsMSwwLDAsMS0uNDMtLjFsLTE1LTcuMDlhMSwxLDAsMCwx''@;'; put 'put ''LC44NS0xLjgxTDE4LDMwbDE0LjU3LTYuODlhMSwxLDAsMSwxLC44NSwxLjgxTDE4LjQzLDMyQTEsMSwwLDAsMSwxOCwzMi4wN1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyMC4yNWExLDEsMCwwLDEtLjQzLS4x''@;'; put 'put ''bC0xNS03LjA5YTEsMSwwLDAsMSwwLTEuODFsMTUtNy4wOWExLDEsMCwwLDEsLjg1LDBsMTUsNy4wOWExLDEsMCwwLDEsMCwxLjgxbC0xNSw3LjA5QTEsMSwwLDAsMSwxOCwyMC4yNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIi''@;'; put 'put ''IGQ9Ik0xOCwyNi4xNmExLDEsMCwwLDEtLjQzLS4xTDIuNTcsMTlhMSwxLDAsMSwxLC44NS0xLjgxTDE4LDI0LjA2bDE0LjU3LTYuODlBMSwxLDAsMSwxLDMzLjQzLDE5bC0xNSw3LjA5QTEsMSwwLDAsMSwxOCwyNi4xNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xOCwzMi4wN2ExLDEsMCwwLDEtLjQzLS4xbC0xNS03LjA5YTEsMSwwLDAsMSwuODUtMS44MUwxOCwzMGwxNC41Ny02Ljg5YTEsMSwwLDEsMSwuODUsMS44MUwxOC40MywzMkExLDEsMCwwLDEsMTgsMzIuMDdaIi8+XG4nKSxlLkNsclNoYXBlQmxv''@;'; put 'put ''Y2s9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjQyLDkuMDlsLTEzLTZhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmExLDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTBBMSwxLDAsMCwwLDMxLjQy''@;'; put 'put ''LDkuMDlaTTE4LDUuMSwyOC42MSwxMCwxOCwxNC45LDcuMzksMTBaTTYsMTEuNTZsMTEsNS4wOHYxNC44TDYsMjYuMzZaTTE5LDMxLjQ0VjE2LjY0bDExLTUuMDh2MTQuOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTMwLDE1LjUzVjI2LjM2TDE5LDMxLjQ0VjE2LjY0bDIuNTctMS4xOWEzLjY3LDMuNjcsMCwwLDEtMi4xMS0xLjIyTDE4LDE0LjksNy4zOSwxMCwxOCw1LjFsMy4wOCwxLjQyLDEtMS43NEwxOC40MiwzLjA5YTEsMSwwLDAsMC0uODQsMGwtMTMsNkExLDEsMCwwLDAsNCwxMFYyN2ExLDEs''@;'; put 'put ''MCwwLDAsLjU4LjkxbDEzLDZhMSwxLDAsMCwwLC44NCwwbDEzLTZBMSwxLDAsMCwwLDMyLDI3VjE1LjUzWk0xNywzMS40NCw2LDI2LjM2VjExLjU2bDExLDUuMDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0yNi44NywxLjI2bC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkySDMzLjdhMS4yOCwxLjI4LDAsMCwwLDEuMS0xLjkyTDI5LjA4LDEuMjZBMS4yOCwxLjI4LDAsMCwwLDI2Ljg3LDEuMjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41VjI2LjM2TDE5LDMxLjQ0VjE2LjY0bDguMDgtMy43M2E3LjU3LDcuNTcsMCwwLDEtMi0xLjI3TDE4LDE0LjksNy4zOSwxMCwxOCw1LjFsNC42MSwyLjEzQTcu''@;'; put 'put ''MTIsNy4xMiwwLDAsMSwyMi41LDZhOCw4LDAsMCwxLC4wNy0xTDE4LjQyLDMuMDlhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmExLDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTMuMjJBNy4zNyw3LjM3LDAs''@;'; put 'put ''MCwxLDMwLDEzLjVaTTE3LDMxLjQ0LDYsMjYuMzZWMTEuNTZsMTEsNS4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNDIsOS4wOWwtMTMtNmExLDEsMCwwLDAtLjg0LDBsLTEzLDZBMSwxLDAsMCwwLDQsMTBWMjdhMSwxLDAsMCwwLC41''@;'; put 'put ''OC45MWwxMyw2YTEsMSwwLDAsMCwuODQsMGwxMy02QTEsMSwwLDAsMCwzMiwyN1YxMEExLDEsMCwwLDAsMzEuNDIsOS4wOVpNMTgsMTQuOSw3LjM5LDEwLDE4LDUuMSwyOC42MSwxMFpNMzAsMjYuMzYsMTksMzEuNDRWMTYuNjRsMTEtNS4wOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTUuMzh2MTFMMTksMzEuNDRWMTYuNjRsMi43OS0xLjI5YTMuNjgsMy42OCwwLDAsMS0yLjI1LTEuMTZMMTgsMTQuOSw3LjM5LDEwLDE4LDUuMWwzLDEuMzksMS0xLjc1TDE4LjQyLDMuMDlhMSwxLDAsMCwwLS44NCww''@;'; put 'put ''bC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmExLDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTUuMzhaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTI2Ljg1LDEuMTIsMjEuMTMsMTFhMS4yNywxLjI3LDAsMCwwLDEuMSwxLjkxSDMzLjY4QTEuMjcsMS4yNywwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjEyQTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjEyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41VjI2LjM2TDE5LDMxLjQ0VjE2LjY0bDguMDgtMy43M2E3LjU3LDcuNTcsMCwwLDEtMi0xLjI3TDE4LDE0LjksNy4zOSwxMCwxOCw1LjFsNC42MSwyLjEzQTcuMTIsNy4xMiwwLDAs''@;'; put 'put ''MSwyMi41LDZhOCw4LDAsMCwxLC4wNy0xTDE4LjQyLDMuMDlhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmExLDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTMuMjJBNy4zNyw3LjM3LDAsMCwxLDMwLDEzLjVa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFk''@;'; put 'put ''Z2UiIC8+JyksZS5DbHJTaGFwZUJsb2Nrc0dyb3VwPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy41MywxOC43NiwyNi42LDE1LjU3VjYuNDNBMSwxLDAsMCwwLDI2LDUuNTNsLTcuNS0zLjQ1YTEsMSwwLDAsMC0uODQsMGwtNy41LDMuNDVhMSwxLDAsMCwwLS41OC45MXY5LjE0TDIu''@;'; put 'put ''NjgsMTguNzZhMSwxLDAsMCwwLS41OC45MXY5Ljc4aDBhMSwxLDAsMCwwLC41OC45MWw3LjUsMy40NWExLDEsMCwwLDAsLjg0LDBsNy4wOC0zLjI2LDcuMDgsMy4yNmExLDEsMCwwLDAsLjg0LDBsNy41LTMuNDVhMSwxLDAsMCwwLC41OC0uOTFoMFYxOS42N0ExLDEsMCwwLDAsMzMuNTMsMTgu''@;'; put 'put ''NzZabS0yLjgxLjkxTDI1LjYxLDIyLDIwLjUsMTkuNjdsNS4xMS0yLjM1Wk0xOC4xLDQuMDhsNS4xMSwyLjM1TDE4LjEsOC43OCwxMyw2LjQzWk0xMC42LDE3LjMxbDUuMTEsMi4zNUwxMC42LDIyLDUuNDksMTkuNjdabTYuNSwxMS40OS02LjUsMy02LjUtM1YyMS4yM0wxMC4xOCwyNEExLDEs''@;'; put 'put ''MCwwLDAsMTEsMjRsNi4wOC0yLjhaTTExLjYsMTUuNTdoMFY4bDYuMDgsMi44YTEsMSwwLDAsMCwuODQsMEwyNC42LDh2Ny41OGgwbC02LjUsM1pNMzIuMTEsMjguODFsLTYuNSwzLTYuNTEtM1YyMS4yMkwyNS4xOSwyNEExLDEsMCwwLDAsMjYsMjRsNi4wOC0yLjhaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0zMy41MywxOC43NiwyNi42LDE1LjU3aC0ydjBsLTYuNSwzLTYuNS0zVjhsNi4wOCwyLjhhMSwxLDAsMCwwLC44NCwwbC4yNC0uMTFhNC4xNyw0LjE3LDAsMCwxLC4yOS0uNjVsMS4zMy0yLjMxLTIuMjgsMUwxMyw2''@;'; put 'put ''LjQzbDUuMS0yLjM1LDMuNDcsMS42LDEtMS43M0wxOC41LDIuMDhhMSwxLDAsMCwwLS44NCwwbC03LjUsMy40NWExLDEsMCwwLDAtLjU4LjkxdjkuMTRsLTYuOSwzLjE4YTEsMSwwLDAsMC0uNTguOTF2OS43OGExLDEsMCwwLDAsLjU4LjkxbDcuNSwzLjQ1YTEsMSwwLDAsMCwuODQsMGw3LjA4''@;'; put 'put ''LTMuMjYsNy4wOCwzLjI2YTEsMSwwLDAsMCwuODQsMGw3LjUtMy40NWExLDEsMCwwLDAsLjU4LS45MVYxOS42N0ExLDEsMCwwLDAsMzMuNTMsMTguNzZaTTEwLjYsMTcuMzFsNS4xMSwyLjM1TDEwLjYsMjIsNS40OSwxOS42N1ptMCwxNC40OS02LjUtM1YyMS4yM0wxMC4xOCwyNEExLDEsMCww''@;'; put 'put ''LDAsMTEsMjRsNi4wOC0yLjgsMCw3LjZabTE1LTE0LjQ4LDUuMTEsMi4zNUwyNS42MSwyMiwyMC41LDE5LjY3Wm0wLDE0LjQ5LTYuNTEtM1YyMS4yMkwyNS4xOSwyNEExLDEsMCwwLDAsMjYsMjRsNi4wOC0yLjgsMCw3LjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG48cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywxM0gzMy42OGExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuPHBhdGggZD0iTTMzLjUzLDE4Ljc2LDI2LjYsMTUuNTdWMTIuN2E3LjU4LDcuNTgsMCwwLDEtMi0xLjUxdjQuMzlsLTYuNSwzLTYuNS0zVjhsNi4wOCwyLjhhMSwxLDAs''@;'; put 'put ''MCwwLC44NCwwTDIzLDguNzJhNy4wNSw3LjA1LDAsMCwxLS40Ny0ybC00LjQ3LDJMMTMsNi40M2w1LjEtMi4zNSw0LjQ0LDJzMC0uMDYsMC0uMDlhNy41NSw3LjU1LDAsMCwxLC4yNy0ybC00LjMtMmExLDEsMCwwLDAtLjg0LDBsLTcuNSwzLjQ1YTEsMSwwLDAsMC0uNTguOTF2OS4xNGwtNi45''@;'; put 'put ''LDMuMThhMSwxLDAsMCwwLS41OC45MXY5Ljc4YTEsMSwwLDAsMCwuNTguOTFsNy41LDMuNDVhMSwxLDAsMCwwLC44NCwwbDcuMDgtMy4yNiw3LjA4LDMuMjZhMSwxLDAsMCwwLC44NCwwbDcuNS0zLjQ1YTEsMSwwLDAsMCwuNTgtLjkxVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlpNMTAu''@;'; put 'put ''NiwxNy4zMWw1LjExLDIuMzVMMTAuNiwyMiw1LjQ5LDE5LjY3Wm0wLDE0LjQ5LTYuNS0zVjIxLjIzTDEwLjE4LDI0QTEsMSwwLDAsMCwxMSwyNGw2LjA4LTIuOCwwLDcuNlptMTUtMTQuNDgsNS4xMSwyLjM1TDI1LjYxLDIyLDIwLjUsMTkuNjdabTAsMTQuNDktNi41MS0zVjIxLjIyTDI1LjE5''@;'; put 'put ''LDI0QTEsMSwwLDAsMCwyNiwyNGw2LjA4LTIuOCwwLDcuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG48Y2lyY2xlIGN4PSIzMC4wMyIgY3k9IjYuMDMiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbjxwYXRoIGQ9Ik0zMy41MywxOC43NiwyNi42LDE1LjU3VjYuNDNBMSwxLDAsMCwwLDI2LDUuNTNsLTcuNS0zLjQ1YTEsMSwwLDAsMC0uODQsMGwtNy41LDMuNDVhMSwxLDAsMCwwLS41OC45MXY5LjE0TDIuNjgs''@;'; put 'put ''MTguNzZhMSwxLDAsMCwwLS41OC45MXY5Ljc4aDBhMSwxLDAsMCwwLC41OC45MWw3LjUsMy40NWExLDEsMCwwLDAsLjg0LDBsNy4wOC0zLjI2LDcuMDgsMy4yNmExLDEsMCwwLDAsLjg0LDBsNy41LTMuNDVhMSwxLDAsMCwwLC41OC0uOTFoMFYxOS42N0ExLDEsMCwwLDAsMzMuNTMsMTguNzZa''@;'; put 'put ''TTI1LjYxLDIyLDIwLjUsMTkuNjdsNS4xMS0yLjM1LDUuMTEsMi4zNVptLTEtNi40NC02LjQ0LDNWMTAuODdhMSwxLDAsMCwwLC4zNS0uMDhMMjQuNiw4djcuNThaTTE4LjEsNC4wOGw1LjExLDIuMzVMMTguMSw4Ljc4LDEzLDYuNDNaTTEwLjYsMTcuMzFsNS4xMSwyLjM1TDEwLjYsMjIsNS40''@;'; put 'put ''OSwxOS42N1ptNi41LDExLjQ5LTYuNSwzaDBWMjQuMTFoMEExLDEsMCwwLDAsMTEsMjRsNi4wOC0yLjhabTE1LDAtNi40NiwzVjI0LjExQTEsMSwwLDAsMCwyNiwyNGw2LjA4LTIuOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG48cGF0aCBkPSJNMzMuNTMs''@;'; put 'put ''MTguNzYsMjYuNiwxNS41N3YwaC0ydjBsLTYuNDMsM1YxMC44N2ExLjA1LDEuMDUsMCwwLDAsLjM1LS4wOGwuMTQtLjA2QTMuMjMsMy4yMywwLDAsMSwxOSwxMGwxLjI4LTIuMjItMi4xNCwxTDEzLDYuNDNsNS4xLTIuMzUsMy4zOSwxLjU2LDEtMS43My00LTEuODNhMSwxLDAsMCwwLS44NCww''@;'; put 'put ''bC03LjUsMy40NWExLDEsMCwwLDAtLjU4LjkxdjkuMTRsLTYuOSwzLjE4YTEsMSwwLDAsMC0uNTguOTF2OS43OGExLDEsMCwwLDAsLjU4LjkxbDcuNSwzLjQ1YTEsMSwwLDAsMCwuODQsMGw3LjA4LTMuMjYsNy4wOCwzLjI2YTEsMSwwLDAsMCwuODQsMGw3LjUtMy40NWExLDEsMCwwLDAsLjU4''@;'; put 'put ''LS45MVYxOS42N0ExLDEsMCwwLDAsMzMuNTMsMTguNzZabS0yOCwuOTEsNS4xMS0yLjM2LDUuMTEsMi4zNUwxMC42LDIyWk0xMC42LDMxLjhWMjQuMTFBMS4wOCwxLjA4LDAsMCwwLDExLDI0bDYuMDgtMi44LDAsNy42Wm05LjktMTIuMTMsNS4xMS0yLjM1LDUuMTEsMi4zNUwyNS42MSwyMlpN''@;'; put 'put ''MjUuNjQsMzEuOFYyNC4xMUEuODkuODksMCwwLDAsMjYsMjRsNi4wOC0yLjgsMCw3LjZaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuPHBhdGggZD0iTTI2Ljg5LDEuMTRsLTUuNzIsOS45MUExLjI3LDEuMjcsMCwwLDAsMjIu''@;'; put 'put ''MjcsMTNIMzMuNzJhMS4yNywxLjI3LDAsMCwwLDEuMS0xLjkxTDI5LjEsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODksMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG48cGF0aCBkPSJNMzMuNTMs''@;'; put 'put ''MTguNzYsMjYuNiwxNS41N1YxMi42OWE3LjY2LDcuNjYsMCwwLDEtMi0xLjQ3djQuMzRsLTYuNDMsM1YxMC44N2ExLjA1LDEuMDUsMCwwLDAsLjM1LS4wOEwyMyw4LjczYTcuNjUsNy42NSwwLDAsMS0uNDgtMmwtNC40MiwyTDEzLDYuNDNsNS4xLTIuMzUsNC4zOCwyVjZhNy41NSw3LjU1LDAs''@;'; put 'put ''MCwxLC4yNy0yTDE4LjUsMi4wOGExLDEsMCwwLDAtLjg0LDBsLTcuNSwzLjQ1YTEsMSwwLDAsMC0uNTguOTF2OS4xNGwtNi45LDMuMThhMSwxLDAsMCwwLS41OC45MXY5Ljc4YTEsMSwwLDAsMCwuNTguOTFsNy41LDMuNDVhMSwxLDAsMCwwLC44NCwwbDcuMDgtMy4yNiw3LjA4LDMuMjZhMSwx''@;'; put 'put ''LDAsMCwwLC44NCwwbDcuNS0zLjQ1YTEsMSwwLDAsMCwuNTgtLjkxVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlptLTI4LC45MSw1LjExLTIuMzYsNS4xMSwyLjM1TDEwLjYsMjJaTTEwLjYsMzEuOFYyNC4xMUExLjA4LDEuMDgsMCwwLDAsMTEsMjRsNi4wOC0yLjgsMCw3LjZabTkuOS0x''@;'; put 'put ''Mi4xMyw1LjExLTIuMzUsNS4xMSwyLjM1TDI1LjYxLDIyWk0yNS42NCwzMS44VjI0LjExQS44OS44OSwwLDAsMCwyNiwyNGw2LjA4LTIuOCwwLDcuNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuPGNpcmNsZSBjeD0iMjkuOTgi''@;'; put 'put ''IGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxlLkNsclNoYXBlQnVuZGxlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIiBkPSJNMzIuNDMsOC4zNWwtMTMtNi4yMWExLDEsMCwwLDAtLjg3LDBsLTE1LDcuMjRhMSwxLDAsMCwwLS41Ny45VjI2LjgzYTEsMSwwLDAsMCwuNi45MmwxMyw2LjE5YTEsMSwwLDAsMCwuODcsMGwxNS03LjI0YTEsMSwwLDAsMCwuNTctLjlWOS4yNUExLDEsMCwwLDAsMzIuNDMsOC4z''@;'; put 'put ''NVpNMTksNC4xNSwyOS45Myw5LjM3bC01LjA1LDIuNDRMMTQuMjEsNi40NlpNMTcsMTUuNjQsNiwxMC40MWw1LjktMi44NUwyMi42LDEyLjkxWk01LDEyLjEzLDE2LDE3LjRWMzEuNDZMNSwyNi4yWk0xOCwzMS40NVYxNy4zNmwxMy02LjI5djE0LjFaIi8+XG4gICAgICAgICAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuNDMsOC4zNWwtMTMtNi4yMWExLDEsMCwwLDAtLjg3LDBsLTE1LDcuMjRhMSwxLDAsMCwwLS41Ny45VjI2LjgzYTEsMSwwLDAsMCwuNi45MmwxMyw2LjE5YTEsMSwwLDAsMCwuODcsMGwxNS03LjI0YTEsMSwwLDAs''@;'; put 'put ''MCwuNTctLjlWOS4yNUExLDEsMCwwLDAsMzIuNDMsOC4zNVpNMTksNC4xNSwyOS45Myw5LjM3bC01LjA1LDIuNDRMMTQuMjEsNi40NlpNMTcsMTUuNjQsNiwxMC40MWw1LjktMi44NUwyMi42LDEyLjkxWm0xLDE1LjhWMTcuMzZsMTMtNi4yOXYxNC4xWiIvPlxuJyksZS5DbHJTaGFwZVdpZmk9''@;'; put 'put ''KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMy41NSw4LjJhMjguMSwyOC4xLDAsMCwwLTMxLjExLjA4QTEsMSwwLDEsMCwzLjU2LDkuOTRhMjYuMTEsMjYuMTEsMCwwLDEsMjguODktLjA3LDEsMSwwLDAsMCwx''@;'; put 'put ''LjEtMS42N1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTguMDUsMTAuNzJBMjAuNzQsMjAuNzQsMCwwLDAsNi4yMywxNC40LDEsMSwwLDAsMCw3LjM2LDE2LDE4Ljg1LDE4Ljg1LDAsMCwxLDI4LjY0LDE2YTEs''@;'; put 'put ''MSwwLDAsMCwxLjEyLTEuNjVBMjAuNzUsMjAuNzUsMCwwLDAsMTguMDUsMTAuNzJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LjA1LDE3LjlhMTMuNTEsMTMuNTEsMCwwLDAtOCwyLjY0LDEsMSwwLDAsMCwx''@;'; put 'put ''LjE4LDEuNjEsMTEuNTYsMTEuNTYsMCwwLDEsMTMuNjItLjA4QTEsMSwwLDEsMCwyNiwyMC40NiwxMy41MiwxMy41MiwwLDAsMCwxOC4wNSwxNy45WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0xOCwyNC40MmE0''@;'; put 'put ''LDQsMCwxLDAsNCw0QTQsNCwwLDAsMCwxOCwyNC40MlptMCw2YTIsMiwwLDEsMSwyLTJBMiwyLDAsMCwxLDE4LDMwLjQyWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBjeD0iMTgiIGN5PSIyOS41NCIgcj0iMyIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMyLjc2LDkuMzhhMjcuODcsMjcuODcsMCwwLDAtMjkuNTcsMCwxLjUxLDEuNTEsMCwwLDAtLjQ4LDIuMTFsLjExLjE3YTEuNDksMS40OSwwLDAsMCwyLC40NiwyNC42OCwyNC42OCwwLDAs''@;'; put 'put ''MSwyNi4yNiwwLDEuNDksMS40OSwwLDAsMCwyLS40NmwuMTEtLjE3QTEuNTEsMS41MSwwLDAsMCwzMi43Niw5LjM4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTI4LjgyLDE1LjQ0YTIwLjU5LDIwLjU5LDAsMCwwLTIx''@;'; put 'put ''LjcsMCwxLjUxLDEuNTEsMCwwLDAtLjQ2LDIuMWwuMTEuMTdhMS40OSwxLjQ5LDAsMCwwLDIsLjQ2LDE3LjQsMTcuNCwwLDAsMSwxOC4zNiwwLDEuNDksMS40OSwwLDAsMCwyLS40NmwuMTEtLjE3QTEuNTEsMS41MSwwLDAsMCwyOC44MiwxNS40NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIGQ9Ik0yNC44OCwyMS40OWExMy40MSwxMy40MSwwLDAsMC0xMy44MiwwLDEuNSwxLjUsMCwwLDAtLjQ2LDIuMDlsLjEuMTZhMS41MiwxLjUyLDAsMCwwLDIuMDYuNDQsMTAuMjcsMTAuMjcsMCwwLDEsMTAuNDIsMCwxLjUyLDEu''@;'; put 'put ''NTIsMCwwLDAsMi4wNi0uNDVsLjEtLjE2QTEuNDksMS40OSwwLDAsMCwyNC44OCwyMS40OVoiLz5cbicpLGUuQ2xyU2hhcGVSYWNrU2VydmVyPSgwLGEuY2xySWNvblNWRykoJzxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVk''@;'; put 'put ''IiB4PSIxMCIgeT0iMTciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgeD0iNiIgeT0iMjUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiB4PSIxMCIgeT0iMjUiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTTE4LjY0LDExQTMuNjUsMy42NSwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTB2MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIiBkPSJNMzMu''@;'; put 'put ''NjgsMTUuNEgzMlYyMUg0VjE1SDIwLjU4QTMuNjcsMy42NywwLDAsMSwxOSwxMy41NmEzLjYzLDMuNjMsMCwwLDEtLjI2LS41Nkg0VjdIMjAuNzFsMS4xNS0ySDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMzhaTTQsMjlWMjNIMzJ2NloiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0''@;'; put 'put ''Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIHg9IjYiIHk9IjkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgeD0iNiIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgeD0iMTAiIHk9IjE3IiB3aWR0aD0iMTQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiB4PSI2IiB5PSIyNSIgd2lkdGg9IjIiIGhl''@;'; put 'put ''aWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiB4PSIxMCIgeT0iMjUiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiIGQ9Ik0xMCwxMUgyNHYtLjUxQTcuNDgsNy40OCwwLDAsMSwyMy4xMyw5SDEwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2Vk''@;'; put 'put ''IiBkPSJNMzAsMTMuNWE3LjQ3LDcuNDcsMCwwLDEtMi42OC0uNUg0VjdIMjIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNTIsNy41MiwwLDAsMSwuMDctMUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDYsNy40NiwwLDAsMSwz''@;'; put 'put ''MCwxMy41Wk00LDE1SDMydjZINFpNNCwyOVYyM0gzMnY2WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSI2IiB5PSI5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgeD0iMTAiIHk9IjkiIHdpZHRo''@;'; put 'put ''PSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iNiIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC00IiB4PSIxMCIgeT0iMTciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgZD0iTTMyLDVINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAs''@;'; put 'put ''MCwwLDItMlY3QTIsMiwwLDAsMCwzMiw1Wk00LDdIMzJ2Nkg0Wm0wLDhIMzJ2Nkg0Wk00LDI5VjIzSDMydjZaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgeD0iNiIgeT0iMjUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiB4PSIxMCIgeT0iMjUiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0x''@;'; put 'put ''LS1hbGVydGVkIiBkPSJNMiwzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRIMlptOC0zSDI0djJIMTBaTTYsMjdIOHYySDZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJN''@;'; put 'put ''MTksOS44OSwxOS41Niw5SDEwVjdIMjAuNzFsMS43My0zSDRBMiwyLDAsMCwwLDIsNnY2SDE4LjU3QTMuNjcsMy42NywwLDAsMSwxOSw5Ljg5Wk04LDlINlY3SDhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1h''@;'; put 'put ''bGVydGVkIiBkPSJNMzMuNjgsMTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTkuMzUsMTRIMnY4SDM0VjE1LjM4Wk04LDE5SDZWMTdIOFptMTYsMEgxMFYxN0gyNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMiwxNHY4SDM0VjE0Wm02LDVINlYxN0g4Wm0xNiwwSDEwVjE3SDI0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0y''@;'; put 'put ''LS1iYWRnZWQiIGQ9Ik0yLDMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNEgyWm04LTNIMjR2MkgxMFpNNiwyN0g4djJINloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMjMu''@;'; put 'put ''MTMsOUgxMFY3SDIyLjU3YTcuNTIsNy41MiwwLDAsMS0uMDctMSw3LjQ5LDcuNDksMCwwLDEsLjI4LTJINEEyLDIsMCwwLDAsMiw2djZIMjUuNTFBNy41Miw3LjUyLDAsMCwxLDIzLjEzLDlaTTgsOUg2VjdIOFoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yLDIySDM0VjE0SDJabTgtNUgyNHYySDEwWk02LDE3SDh2''@;'; put 'put ''Mkg2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2djZIMzRWNkEyLDIsMCwwLDAsMzIsNFpNOCw5SDZWN0g4Wk0yNCw5SDEwVjdIMjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMiwzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRIMlptOC0zSDI0djJIMTBaTTYsMjdIOHYySDZaIi8+XG4nKSxlLkNsclNoYXBlSGFyZERpc2s9KDAsYS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIHg9IjYiIHk9IjIwIiB3aWR0aD0iMjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0''@;'; put 'put ''ZWQiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0zNCwyMS4wOGwtMS40LTUuNjhIMzAuNTFsMS40OSw2VjI5SDRWMjEu''@;'; put 'put ''NDRMNy4wNiw5aDEyLjVsMS4xNS0ySDcuMDZBMiwyLDAsMCwwLDUuMTMsOC40N0wyLDIxLjA4YTEsMSwwLDAsMCwwLC4yNFYyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjEuMzFBMSwxLDAsMCwwLDM0LDIxLjA4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCww''@;'; put 'put ''LDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgeD0iNiIgeT0iMjAiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJN''@;'; put 'put ''MzQsMjEuMDgsMzIsMTMuMjFhNy40OSw3LjQ5LDAsMCwxLTIsLjI5bDIsNy45NFYyOUg0VjIxLjQ0TDcuMDYsOUgyMy4xM2E3LjQ1LDcuNDUsMCwwLDEtLjU1LTJINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIsMjEuMDhhMSwxLDAsMCwwLDAsLjI0VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwy''@;'; put 'put ''LDAsMCwwLDItMlYyMS4zMUExLDEsMCwwLDAsMzQsMjEuMDhaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNCwyMS4wOCwzMC44Niw4LjQzQTIsMiwwLDAsMCwyOC45NCw3SDcuMDZBMiwyLDAsMCwwLDUuMTMsOC40N0wyLDIxLjA4YTEsMSwwLDAsMCwwLC4yNFYyOWEyLDIsMCwwLDAsMiwySDMyYTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWMjEuMzFBMSwxLDAsMCwwLDM0LDIxLjA4Wk00LDI5VjIxLjQ0TDcuMDYsOUgyOC45M0wzMiwyMS40NFYyOVoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSI2IiB5PSIyMCIgd2lkdGg9IjI0IiBo''@;'; put 'put ''ZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIyNiIgeT0iMjQiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yLDIydjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyWm0yOCw1SDI2VjI1aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJN''@;'; put 'put ''MzIuNTgsMTUuNEgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMC43MSw3SDcuMDZBMiwyLDAsMCwwLDUuMTMsOC40N0wyLjI5LDIwSDMzLjcxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yLDIydjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyWm0yOCw1SDI2VjI1aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTMyLDEzLjIxQTcuNDcsNy40NywwLDAsMSwyMi41Nyw3SDcuMDZBMiwyLDAsMCwwLDUuMTMsOC40N0wyLjI5LDIwSDMzLjcxWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLjg2LDguNDNBMiwyLDAsMCwwLDI4Ljk0LDdINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIuMjks''@;'; put 'put ''MjBIMzMuNzFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMiwyMnY3YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMlptMjgsNUgyNlYyNWg0WiIvPlxuJyksZS5DbHJTaGFwZUJhY2t1cFJlc3RvcmU9KDAs''@;'; put 'put ''YS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIHg9IjYiIHk9IjIyIiB3aWR0aD0iMjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9IjI2IiB5PSIyNiIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0xMyw5LjkyLDE3''@;'; put 'put ''LDZWMTlhMSwxLDAsMSwwLDIsMFY2bDEuNDcsMS40NiwxLTEuNzlMMTgsMi4xNiwxMS42MSw4LjVBMSwxLDAsMCwwLDEzLDkuOTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTTMx''@;'; put 'put ''LjU4LDE1LjRIMjkuNDZjMSwyLjg1LDIuMzEsNi4zNywyLjU0LDcuMDhWMzBINFYyMi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEgxNVYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCww''@;'; put 'put ''LDItMlYyMi4zM0MzNCwyMi4xMiwzNCwyMiwzMS41OCwxNS40WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4y''@;'; put 'put ''OCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdl''@;'; put 'put ''ZCIgeD0iNiIgeT0iMjIiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIHg9IjI2IiB5PSIyNiIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMTMsOS45MiwxNyw2VjE5YTEsMSwwLDEsMCwyLDBWNmw0LDMuOTVhMSwxLDAsMCwwLC43MS4yOWwuMTEsMGE3LjQ2LDcuNDYsMCwwLDEtMS4yNS0zLjUyTDE4LDIu''@;'; put 'put ''MTYsMTEuNjEsOC41QTEsMSwwLDAsMCwxMyw5LjkyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiBkPSJNMzAuODcsMTMuNDVhNy41NSw3LjU1LDAsMCwxLS44Ny4wNUE3LjQ2LDcuNDYsMCww''@;'; put 'put ''LDEsMjUuNTEsMTJIMjF2Mmg3Ljk1QzMwLDE2Ljk0LDMxLjcyLDIxLjY1LDMyLDIyLjQ4VjMwSDRWMjIuNDhDNC4yOCwyMS42NSw3LjA1LDE0LDcuMDUsMTRIMTVWMTJINy4wN2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMiwyMiwyLDIyLjEsMiwyMi4zM1YzMGEyLDIsMCwwLDAsMiwySDMy''@;'; put 'put ''YTIsMiwwLDAsMCwyLTJWMjIuMzNDMzQsMjIuMSwzNCwyMiwzMC44NywxMy40NVoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgeD0iNiIgeT0iMjIiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgeD0i''@;'; put 'put ''MjYiIHk9IjI2IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTEzLDkuOTIsMTcsNlYxOWExLDEsMCwxLDAsMiwwVjZsNCwzLjk1QTEsMSwwLDEsMCwyNC4zOCw4LjVMMTgsMi4x''@;'; put 'put ''NiwxMS42MSw4LjVBMSwxLDAsMCwwLDEzLDkuOTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTMwLjg0LDEzLjM3QTEuOTQsMS45NCwwLDAsMCwyOC45MywxMkgyMXYyaDcuOTVDMzAsMTYuOTQsMzEuNzIsMjEu''@;'; put 'put ''NjUsMzIsMjIuNDhWMzBINFYyMi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEgxNVYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4xLDM0LDIyLDMwLjg0''@;'; put 'put ''LDEzLjM3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDVIMjZWMjdoNFoiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xMyw5LjkyLDE3LDZWMThhMSwxLDAsMSwwLDIsMFY2bDEuNDcsMS40NiwxLTEuNzlMMTgsMi4xNiwxMS42MSw4LjVBMSwxLDAsMCwwLDEzLDkuOTJaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiBkPSJNMzEuNTgsMTUuNEgyMi4yM0EzLjYyLDMuNjIsMCwwLDEsMjEsMTUuMTZWMThhMywzLDAsMSwxLTYsMFYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLjg2''@;'; put 'put ''LDE5LjY4LDIuMjQsMjEuNDMsMi4wNywyMkgzMy45M0MzMy43OSwyMS40OSwzMy4yOCwyMC4wNywzMS41OCwxNS40WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2''@;'; put 'put ''Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yLDI0djZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjI0Wm0yOCw1SDI2VjI3aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0i''@;'; put 'put ''TTEzLDkuOTIsMTcsNlYxOGExLDEsMCwxLDAsMiwwVjZsNCwzLjk1YTEsMSwwLDAsMCwuNzEuMjlsLjExLDBhNy40Niw3LjQ2LDAsMCwxLTEuMjUtMy41MkwxOCwyLjE2LDExLjYxLDguNUExLDEsMCwwLDAsMTMsOS45MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzAuODcsMTMuNDVhNy41NSw3LjU1LDAsMCwxLS44Ny4wNUE3LjQ2LDcuNDYsMCwwLDEsMjUuNTEsMTJIMjF2NmEzLDMsMCwxLDEtNiwwVjEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIuODYsMTkuNjgs''@;'; put 'put ''Mi4yNCwyMS40MywyLjA3LDIySDMzLjkzQzMzLjc3LDIxLjQzLDMzLjE1LDE5LjcsMzAuODcsMTMuNDVaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2''@;'; put 'put ''IiByPSI1Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMiwyNHY2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNFptMjgsNUgyNlYyN2g0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMwLjg0LDEzLjM3QTEuOTQsMS45NCwwLDAsMCwyOC45MywxMkgyMXY2YTMsMywwLDEsMS02LDBWMTJINy4wN2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMi44NiwxOS42OCwyLjI0LDIxLjQzLDIuMDcsMjJIMzMuOTNDMzMuNzcsMjEuNDMs''@;'; put 'put ''MzMuMTQsMTkuNjksMzAuODQsMTMuMzdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMTMsOS45MiwxNyw2VjE4YTEsMSwwLDEsMCwyLDBWNmw0LDMuOTVBMSwxLDAsMSwwLDI0LjM4LDguNUwxOCwyLjE2LDExLjYxLDgu''@;'; put 'put ''NUExLDEsMCwwLDAsMTMsOS45MloiLz5cbicpLGUuQ2xyU2hhcGVCYWNrdXA9KDAsYS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIHg9IjYiIHk9IjIyIiB3aWR0aD0iMjQiIGhlaWdodD0iMiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9IjI2IiB5PSIyNiIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0xOCwxOS44NGw0LjQ3LTQuNDRoLS4yM2EzLjY3LDMuNjcsMCwwLDEtMi0uNjFMMTksMTZWNGExLDEsMCwxLDAtMiwwVjE2bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMzEuNTgsMTUuNEgyOS40NmMxLDIuODUsMi4zMSw2LjM3LDIuNTQsNy4wOFYzMEg0VjIyLjQ4QzQuMjgsMjEuNjUsNy4wNSwxNCw3LjA1LDE0SDkuNThhMywzLDAsMCwxLS4xNC0ySDcu''@;'; put 'put ''MDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIsMjIsMiwyMi4xLDIsMjIuMzNWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyLjMzQzM0LDIyLjEyLDM0LDIyLDMxLjU4LDE1LjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiB4PSI2IiB5PSIyMiIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0xOCwxOS44NGw2LjM4LTYu''@;'; put 'put ''MzVBMSwxLDAsMSwwLDIzLDEyLjA4TDE5LDE2VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9Ik0zMC44''@;'; put 'put ''NywxMy40NWE3LjU1LDcuNTUsMCwwLDEtLjg3LjA1LDcuNDYsNy40NiwwLDAsMS0zLjM1LS44LDMsMywwLDAsMS0uMjQsMS4zaDIuNTRDMzAsMTYuOTQsMzEuNzIsMjEuNjUsMzIsMjIuNDhWMzBINFYyMi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEg5LjU4YTMsMywwLDAsMS0uMTQt''@;'; put 'put ''Mkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4xLDM0LDIyLDMwLjg3LDEzLjQ1WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSI2IiB5PSIyMiIgd2lkdGg9IjI0IiBoZWlnaHQ9''@;'; put 'put ''IjIiLz48cmVjdCB4PSIyNiIgeT0iMjYiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIlxuICAgICAgICAgICAgICAgIGQ9Ik0zMC44NCwxMy4zN0ExLjk0LDEuOTQsMCwwLDAsMjguOTMs''@;'; put 'put ''MTJIMjYuNTVhMywzLDAsMCwxLS4xNCwyaDIuNTRDMzAsMTYuOTQsMzEuNzIsMjEuNjUsMzIsMjIuNDhWMzBINFYyMi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEg5LjU4YTMsMywwLDAsMS0uMTQtMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIy''@;'; put 'put ''LjMzVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4xLDM0LDIyLDMwLjg0LDEzLjM3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOCwxOS44NGw2LjM4LTYuMzVBMSwxLDAs''@;'; put 'put ''MSwwLDIzLDEyLjA4TDE5LDE2VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTYuNTgsMjEuMjYsMTAu''@;'; put 'put ''MiwxNC45MUEzLDMsMCwwLDEsOS40NCwxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLjg2LDE5LjY4LDIuMjQsMjEuNDMsMi4wNywyMkgxNy4zM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFs''@;'; put 'put ''ZXJ0ZWQiIGQ9Ik0yLDI0djZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjI0Wm0yOCw0SDI2VjI2aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiBkPSJNMTguNjYsMjJIMzMuOTNj''@;'; put 'put ''LS4xNS0uNTEtLjY1LTEuOTMtMi4zNS02LjZIMjUuM2wtNS44OSw1Ljg2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCIgZD0iTTE4LDE5Ljg0bDQuNDctNC40NGgtLjIzYTMuNjQsMy42NCwwLDAs''@;'; put 'put ''MS0yLS42MUwxOSwxNlY0YTEsMSwwLDEsMC0yLDBWMTZsLTQtMy45NWExLDEsMCwwLDAtMS40MSwxLjQyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEu''@;'; put 'put ''MTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xOCwxOS44NGw2LjM4LTYuMzVBMSwxLDAsMSwwLDIzLDEyLjA4TDE5LDE2VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTE2LjU4LDIxLjI2LDEwLjIsMTQuOTFBMywzLDAsMCwxLDkuNDQsMTJINy4wN2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMi44NiwxOS42OCwyLjI0LDIxLjQzLDIuMDcsMjJIMTcuMzNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDRIMjZWMjZoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtNC0tYmFkZ2VkIiBkPSJNMTguNjYsMjJIMzMuOTNjLS4xNy0uNTctLjc5LTIuMy0zLjA2LTguNTVhNy41NSw3LjU1LDAsMCwxLS44Ny4wNSw3LjQ2LDcuNDYsMCwwLDEtMy4zNS0uOCwzLDMsMCwwLDEtLjg2LDIuMjFsLTYuMzgsNi4zNVoiLz5cbiAgICAgICAgICAgIDxj''@;'; put 'put ''aXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwxOS44''@;'; put 'put ''NGw2LjM4LTYuMzVBMSwxLDAsMSwwLDIzLDEyLjA4TDE5LDE2VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTkuNDEsMjEuMjZsLS43''@;'; put 'put ''NC43NEgzMy45M2MtLjE3LS41Ny0uNzktMi4zMS0zLjA5LTguNjNBMS45NCwxLjk0LDAsMCwwLDI4LjkzLDEySDI2LjU1YTMsMywwLDAsMS0uNzYsMi45MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xNi41OCwyMS4y''@;'; put 'put ''NiwxMC4yLDE0LjkxQTMsMywwLDAsMSw5LjQ0LDEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIuODYsMTkuNjgsMi4yNCwyMS40MywyLjA3LDIySDE3LjMzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgZD0iTTIs''@;'; put 'put ''MjR2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDRIMjZWMjZoNFoiLz5cbicpLGUuQ2xyU2hhcGVEZXZpY2VzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsMTNIMjRhMiwyLDAs''@;'; put 'put ''MCwwLTIsMlYzMGEyLDIsMCwwLDAsMiwyaDhhMiwyLDAsMCwwLDItMlYxNUEyLDIsMCwwLDAsMzIsMTNabTAsMlYyNkgyNFYxNVpNMjQsMzBWMjcuNmg4VjMwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yMCwy''@;'; put 'put ''Mkg0VjZIMjh2NWgyVjZhMiwyLDAsMCwwLTItMkg0QTIsMiwwLDAsMCwyLDZWMjJhMiwyLDAsMCwwLDIsMkgyMFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjAsMjZIOWExLDEsMCwwLDAsMCwySDIwWiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLDEzSDI0YTIsMiwwLDAsMC0yLDJWMzBhMiwyLDAsMCwwLDIsMmg4YTIsMiwwLDAsMCwyLTJWMTVBMiwyLDAsMCwwLDMyLDEzWm0wLDJWMjhIMjRWMTVaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjgsNEg0QTIsMiwwLDAsMCwyLDZWMjJhMiwyLDAsMCwwLDIsMmg4djJIOS4zMkExLjIsMS4yLDAsMCwwLDgsMjdhMS4yLDEuMiwwLDAsMCwxLjMyLDFIMTkuOTJ2LS4zN0gyMFYyMkg0VjZIMjh2NWgy''@;'; put 'put ''VjZBMiwyLDAsMCwwLDI4LDRaIi8+XG4nKSxlLkNsclNoYXBlS2V5Ym9hcmQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiw4SDRhMiwyLDAsMCwwLTIsMlYyNmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAs''@;'; put 'put ''MCwyLTJWMTBBMiwyLDAsMCwwLDMyLDhabTAsMThINFYxMEgzMloiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSI3IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjExIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjE1IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdo''@;'; put 'put ''dD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHg9IjE5IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTYiIHg9IjIzIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIHg9IjI3IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIHg9IjciIHk9IjE3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgeD0iMTEiIHk9IjE3IiB3aWR0aD0iMiIgaGVpZ2h0''@;'; put 'put ''PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiIHg9IjE1IiB5PSIxNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTExIiB4PSIxOSIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMiIgeD0iMjMiIHk9IjE3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTMiIHg9IjI3IiB5PSIxNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE0IiB4PSIyNyIgeT0iMjIiIHdpZHRoPSIxLjk0''@;'; put 'put ''IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNSIgeD0iNyIgeT0iMjIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xNiIgeD0iMTEuMTMiIHk9IjIyIiB3aWR0aD0iMTMuNzUiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLDhINGEyLDIsMCwwLDAtMiwyVjI2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAs''@;'; put 'put ''MCwwLDItMlYxMEEyLDIsMCwwLDAsMzIsOFpNMTksMTNoMnYySDE5Wm0wLDRoMnYySDE5Wm0tNC00aDJ2MkgxNVptMCw0aDJ2MkgxNVptLTQtNGgydjJIMTFaTTksMjRIN1YyMkg5Wm0wLTVIN1YxN0g5Wm0wLTRIN1YxM0g5Wm0yLDJoMnYySDExWm0xMy44OCw3SDExLjEzVjIySDI0Ljg4Wk0y''@;'; put 'put ''NSwxOUgyM1YxN2gyWm0wLTRIMjNWMTNoMlptMy45NCw5SDI3VjIyaDEuOTRaTTI5LDE5SDI3VjE3aDJabTAtNEgyN1YxM2gyWiIvPlxuJyksZS5DbHJTaGFwZU1vdXNlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBk''@;'; put 'put ''PSJNMTgsMzRBMTAsMTAsMCwwLDEsOCwyNFYxMmExMCwxMCwwLDAsMSwyMCwwVjI0QTEwLDEwLDAsMCwxLDE4LDM0Wk0xOCw0YTgsOCwwLDAsMC04LDhWMjRhOCw4LDAsMCwwLDE2LDBWMTJBOCw4LDAsMCwwLDE4LDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDE1YTEsMSwwLDAsMS0xLTFWMTBhMSwxLDAsMCwxLDIsMHY0QTEsMSwwLDAsMSwxOCwxNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTEwLDEwLDAsMCww''@;'; put 'put ''LDgsMTJWMjRhMTAsMTAsMCwwLDAsMjAsMFYxMkExMCwxMCwwLDAsMCwxOCwyWm0xLjMsMTEuNDRhMS4zLDEuMywwLDAsMS0yLjYsMFYxMGExLjMsMS4zLDAsMCwxLDIuNiwwWiIvPlxuJyksZS5DbHJTaGFwZURhc2hib2FyZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI1LjE4LDEyLjMybC01LjkxLDUuODFhMywzLDAsMSwwLDEuNDEsMS40Mmw1LjkyLTUuODFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCw0''@;'; put 'put ''LjI1QTE2LjQ5LDE2LjQ5LDAsMCwwLDUuNCwzMS40bC4zLjM1SDMwLjNsLjMtLjM1QTE2LjQ5LDE2LjQ5LDAsMCwwLDE4LDQuMjVabTExLjM0LDI1LjVINi42NmExNC40MywxNC40MywwLDAsMS0zLjExLTcuODRIN3YtMkgzLjU1QTE0LjQxLDE0LjQxLDAsMCwxLDcsMTEuMjlsMi40NSwyLjQ1''@;'; put 'put ''LDEuNDEtMS40MUw4LjQzLDkuODdBMTQuNDEsMTQuNDEsMCwwLDEsMTcsNi4yOXYzLjVoMlY2LjNhMTQuNDcsMTQuNDcsMCwwLDEsMTMuNCwxMy42MUgyOC45MnYyaDMuNTNBMTQuNDMsMTQuNDMsMCwwLDEsMjkuMzQsMjkuNzVaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTUuODUsMTguNjlhMywzLDAsMSwwLDQuODMuODVsNS45Mi01LjgxLTEuNDEtMS40MS01LjkxLDUuODFBMywzLDAsMCwwLDE1Ljg1LDE4LjY5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMyLjU4LDEzYTcuNDUsNy40NSwwLDAsMS0yLjA2LjQ0LDE0LjQsMTQuNCwwLDAsMSwxLjkzLDYuNDNIMjguOTJ2MmgzLjUzYTE0LjQzLDE0LjQzLDAsMCwxLTMuMTEsNy44NEg2LjY2''@;'; put 'put ''YTE0LjQzLDE0LjQzLDAsMCwxLTMuMTEtNy44NEg3di0ySDMuNTVBMTQuNDEsMTQuNDEsMCwwLDEsNywxMS4yOWwyLjQ1LDIuNDUsMS40MS0xLjQxTDguNDMsOS44N0ExNC40MSwxNC40MSwwLDAsMSwxNyw2LjI5djMuNWgyVjYuM0ExNC40MSwxNC40MSwwLDAsMSwyMi41OCw3YTcuNTIsNy41''@;'; put 'put ''MiwwLDAsMS0uMDgtMSw3LjUyLDcuNTIsMCwwLDEsLjA5LTEuMDlBMTYuNDksMTYuNDksMCwwLDAsNS40LDMxLjRsLjMuMzVIMzAuM2wuMy0uMzVhMTYuNDUsMTYuNDUsMCwwLDAsMi0xOC4zNloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCw0LjI1QTE2LjQ5LDE2LjQ5LDAsMCwwLDUuNCwz''@;'; put 'put ''MS40bC4zLjM1SDMwLjNsLjMtLjM1QTE2LjQ5LDE2LjQ5LDAsMCwwLDE4LDQuMjVabTguNiw5LjQ4LTUuOTIsNS44MWEzLDMsMCwxLDEtMS40MS0xLjQybDUuOTEtNS44MVptLTIzLDYuMTdIN3YySDMuNTZjMC0uMzktLjA1LS43Ny0uMDUtMS4xN1MzLjUzLDIwLjE4LDMuNTUsMTkuOVptNC44''@;'; put 'put ''OC0xMCwyLjQ2LDIuNDZMOS40NywxMy43NCw3LDExLjI5QTE0LjU3LDE0LjU3LDAsMCwxLDguNDMsOS44N1pNMTksOS43OUgxN1Y2LjI5Yy4zMiwwLC42MywwLDEsMHMuNywwLDEsLjA1Wk0zMi40OSwyMC43NGMwLC4zOSwwLC43OS0uMDUsMS4xN0gyOC45MnYtMmgzLjUzQzMyLjQ3LDIwLjE4''@;'; put 'put ''LDMyLjQ5LDIwLjQ2LDMyLjQ5LDIwLjc0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzIuNTgsMTNhNy40Niw3LjQ2LDAsMCwxLTEwLTguMTJBMTYuNDksMTYuNDksMCwwLDAsNS40''@;'; put 'put ''LDMxLjRsLjMuMzVIMzAuM2wuMy0uMzVhMTYuNDUsMTYuNDUsMCwwLDAsMi0xOC4zNlpNMTcsNi4yOWMuMzIsMCwuNjMsMCwxLDBzLjcsMCwxLC4wNXYzLjVIMTdaTTcsMjEuOTFIMy41NmMwLS4zOS0uMDUtLjc3LS4wNS0xLjE3czAtLjU2LDAtLjgzSDdabTIuNTEtOC4xNkw3LDExLjI5QTE0''@;'; put 'put ''LjU3LDE0LjU3LDAsMCwxLDguNDMsOS44N2wyLjQ2LDIuNDZabTEwLjYyLDkuMTlhMywzLDAsMSwxLS44Mi00LjgxbDUuOTEtNS44MSwxLjQxLDEuNDEtNS45Miw1LjgxQTMsMywwLDAsMSwyMC4wOSwyMi45M1ptMTIuMzUtMUgyOC45MnYtMmgzLjUzYzAsLjI4LDAsLjU1LDAsLjgzUzMyLjQ3''@;'; put 'put ''LDIxLjUyLDMyLjQ0LDIxLjkxWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbicpLGUuQ2xyU2hhcGVIb3N0PSgwLGEuY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMjQuM2EyLjQ4LDIuNDgsMCwxLDAsMi40OCwyLjQ3QTIuNDgsMi40OCwwLDAsMCwxOCwyNC4zWm0wLDMuNmExLjEzLDEuMTMsMCwxLDEsMS4xMy0xLjEyQTEuMTMsMS4xMyww''@;'; put 'put ''LDAsMSwxOCwyNy45WiIvPjxyZWN0IHg9IjEzLjUiIHk9IjIwLjciIHdpZHRoPSI5IiBoZWlnaHQ9IjEuNDQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI1LjY1LDMuNkgxMC4zNUExLjM1LDEuMzUsMCww''@;'; put 'put ''LDAsOSw0Ljk1VjMyLjRIMjdWNC45NUExLjM1LDEuMzUsMCwwLDAsMjUuNjUsMy42Wm0tLjQ1LDI3SDEwLjhWNS40SDI1LjJaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjEyLjYiIHk9IjcuMiIgd2lkdGg9''@;'; put 'put ''IjEwLjgiIGhlaWdodD0iMS40NCIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIxMi42IiB5PSIxMC44IiB3aWR0aD0iMTAuOCIgaGVpZ2h0PSIxLjQ0Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xNS4yLDI3LjhjMCwxLjUsMS4yLDIuOCwyLjgsMi44czIuOC0xLjIsMi44LTIuOFMxOS41LDI1LDE4LDI1UzE1LjIsMjYuMiwxNS4yLDI3Ljh6IE0xOS4yLDI3LjhjMCwwLjctMC42LDEu''@;'; put 'put ''Mi0xLjIsMS4ycy0xLjItMC42LTEuMi0xLjJzMC42LTEuMiwxLjItMS4yUzE5LjIsMjcuMSwxOS4yLDI3Ljh6Ii8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9IjEzIiB5PSIyMSIg''@;'; put 'put ''d2lkdGg9IjEwIiBoZWlnaHQ9IjEuNiIvPlxuICAgICAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiBwb2ludHM9IjIxLjMsNiAxMiw2IDEyLDcuNiAyMC40LDcuNiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMTIsMTEuNmg2LjZjMC0wLjYsMC4yLTEuMSwwLjQtMS42aC03VjExLjZ6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIGQ9Ik0yNiwxNS40VjMySDEwVjRoMTIuNWwxLjEtMkg5LjVDOC43LDIsOCwyLjcsOCwzLjVWMzRoMjBWMTUuNEgyNnoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2LjksMS4xTDIxLjEsMTFjLTAuNCwwLjYtMC4yLDEuNCwwLjMsMS44YzAuMiwwLjIsMC41LDAuMiwwLjgsMC4yaDExLjVjMC43LDAsMS4zLTAuNSwxLjMtMS4yYzAtMC4zLTAuMS0wLjUtMC4yLTAuOGwtNS43''@;'; put 'put ''LTkuOWMtMC40LTAuNi0xLjEtMC44LTEuOC0wLjVDMjcuMSwwLjgsMjcsMSwyNi45LDEuMXoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xNS4yLDI3LjhjMCwxLjUsMS4yLDIu''@;'; put 'put ''OCwyLjgsMi44czIuOC0xLjIsMi44LTIuOFMxOS41LDI1LDE4LDI1UzE1LjIsMjYuMiwxNS4yLDI3Ljh6IE0xOS4yLDI3LjhjMCwwLjctMC42LDEuMi0xLjIsMS4ycy0xLjItMC42LTEuMi0xLjJzMC42LTEuMiwxLjItMS4yUzE5LjIsMjcuMSwxOS4yLDI3Ljh6Ii8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiB4PSIxMyIgeT0iMjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxLjYiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0yNCwxMC41Yy0wLjEtMC4yLTAuMi0wLjMtMC4zLTAuNUgxMnYxLjZoMTJWMTAuNXoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9''@;'; put 'put ''Ik0xMiw2djEuNmgxMC43Yy0wLjEtMC41LTAuMi0xLjEtMC4yLTEuNkgxMnoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiIGQ9Ik0yNiwxMi4zVjMySDEwVjRoMTIuOGMwLjItMC43LDAu''@;'; put 'put ''NS0xLjQsMC45LTJIOS41QzguNywyLDgsMi43LDgsMy41VjM0aDIwVjEzLjJDMjcuMywxMywyNi42LDEyLjcsMjYsMTIuM3oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCBjbHItaS1i''@;'; put 'put ''YWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNi41LDJoLTE3QzguNywyLDgsMi43LDgsMy41VjM0aDIwVjMuNUMyOCwyLjcsMjcuMywyLDI2LjUsMnogTTE4LDMwLjVj''@;'; put 'put ''LTEuNSwwLTIuOC0xLjItMi44LTIuOFMxNi41LDI1LDE4LDI1czIuOCwxLjIsMi44LDIuOFMxOS41LDMwLjUsMTgsMzAuNXogTTIzLDIyLjZIMTNWMjFoMTBWMjIuNnogTTI0LDExLjZIMTJWMTBoMTJWMTEuNnogTTI0LDcuNkgxMlY2aDEyVjcuNnoiLz5cbiAgICAgICAgICAgICAgICA8Y2ly''@;'; put 'put ''Y2xlIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGN4PSIxOCIgY3k9IjI3LjgiIHI9IjEuMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yMi4yLDE1LjNj''@;'; put 'put ''LTIsMC0zLjctMS42LTMuNy0zLjdIMTJWMTBoNi45YzAtMC4xLDAuMS0wLjIsMC4xLTAuMmwxLjItMi4ySDEyVjZoOS4ybDIuMy00aC0xNEM4LjcsMiw4LDIuNyw4LDMuNVYzNGgyMFYxNS4zSDIyLjJ6IE0xOCwzMC41Yy0xLjUsMC0yLjgtMS4yLTIuOC0yLjhTMTYuNSwyNSwxOCwyNXMyLjgs''@;'; put 'put ''MS4yLDIuOCwyLjhTMTkuNSwzMC41LDE4LDMwLjV6IE0yMywyMi42SDEzVjIxaDEwVjIyLjZ6Ii8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBjeD0iMTgiIGN5PSIyNy44IiByPSIxLjIi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuOSwxbC01LjcsOS45Yy0wLjMsMC42LTAuMSwxLjQsMC41LDEuN2MwLjIsMC4xLDAuNCwwLjIsMC42LDAuMmgx''@;'; put 'put ''MS40YzAuNywwLDEuMy0wLjYsMS4zLTEuM2MwLTAuMi0wLjEtMC40LTAuMi0wLjZMMjkuMSwxYy0wLjQtMC42LTEuMS0wLjgtMS44LTAuNUMyNy4xLDAuNywyNywwLjgsMjYuOSwxeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMjQsMTAuM3YxLjJIMTJWMTBoMTEuOGMtMC41LTAuNy0wLjgtMS41LTEtMi40SDEyVjZoMTAuNWMwLDAsMC0wLjEsMC0wLjFjMC0xLjQsMC40LTIuNywxLjEtMy45SDkuNUM4LjcsMiw4LDIuNyw4LDMuNVYzNGgyMFYxMy4xQzI2LjQsMTIuNiwyNSwx''@;'; put 'put ''MS43LDI0LDEwLjN6IE0xOCwzMC41Yy0xLjUsMC0yLjgtMS4yLTIuOC0yLjhTMTYuNSwyNSwxOCwyNXMyLjgsMS4yLDIuOCwyLjhTMTkuNSwzMC41LDE4LDMwLjV6TTIzLDIyLjZIMTNWMjFoMTBWMjIuNnoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBjeD0iMTgiIGN5PSIyNy44IiByPSIxLjIiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5''@;'; put 'put ''PSI1LjkiIHI9IjUiLz5cbicpLGUuQ2xyU2hhcGVTdG9yYWdlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMsNi42OWgwYy0uMTgtMy40MS05LjQ3LTQuMzMtMTUtNC4zM1MzLDMuMjksMyw2Ljc4VjI5LjM3''@;'; put 'put ''YzAsMy40OSw5LjQzLDQuNDMsMTUsNC40M3MxNS0uOTMsMTUtNC40M1Y2Ljc4czAsMCwwLDBTMzMsNi43LDMzLDYuNjlabS0yLDcuNTZjLS4zMy44Ni01LjA2LDIuNDUtMTMsMi40NUEzNy40NSwzNy40NSwwLDAsMSw3LDE1LjM0djIuMDhBNDMuMzIsNDMuMzIsMCwwLDAsMTgsMTguN2M0LDAs''@;'; put 'put ''OS45My0uNDgsMTMtMnY1LjE3Yy0uMzMuODYtNS4wNiwyLjQ1LTEzLDIuNDVBMzcuNDUsMzcuNDUsMCwwLDEsNywyMi45MlYyNWE0My4zMiw0My4zMiwwLDAsMCwxMSwxLjI4YzQsMCw5LjkzLS40OCwxMy0ydjUuMWMtLjM1Ljg2LTUuMDgsMi40NS0xMywyLjQ1UzUuMywzMC4yLDUsMjkuMzdW''@;'; put 'put ''Ni44MkM1LjMsNiwxMCw0LjM2LDE4LDQuMzZjNy43NywwLDEyLjQ2LDEuNTMsMTMsMi4zNy0uNTIuODctNS4yMSwyLjM5LTEzLDIuMzlBMzcuNiwzNy42LDAsMCwxLDcsNy43NlY5Ljg1YTQzLjUzLDQzLjUzLDAsMCwwLDExLDEuMjdjNCwwLDkuOTMtLjQ4LDEzLTJaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xOS41MSw5LjA5LDE4LDkuMTFBMzcuNiwzNy42LDAsMCwxLDcsNy43NlY5Ljg1YTQzLjUzLDQzLjUzLDAsMCwwLDExLDEuMjdoLjYxQTMuNjYsMy42Niww''@;'; put 'put ''LDAsMSwxOSw5Ljg5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMjguODMsMTUuNEEzOC4zNywzOC4zNywwLDAsMSwxOCwxNi43LDM3LjQ1LDM3LjQ1LDAsMCwxLDcsMTUu''@;'; put 'put ''MzR2Mi4wOEE0My4zMyw0My4zMywwLDAsMCwxOCwxOC43YzQsMCw5LjkzLS40OCwxMy0ydjUuMTdjLS4zMy44Ni01LjA2LDIuNDUtMTMsMi40NUEzNy40NSwzNy40NSwwLDAsMSw3LDIyLjkyVjI1YTQzLjMzLDQzLjMzLDAsMCwwLDExLDEuMjhjNCwwLDkuOTMtLjQ4LDEzLTJ2NS4xYy0uMzUu''@;'; put 'put ''ODYtNS4wOCwyLjQ1LTEzLDIuNDVTNS4zLDMwLjIsNSwyOS4zN1Y2LjgyQzUuMyw2LDEwLDQuMzYsMTgsNC4zNmMxLjUsMCwyLjg5LjA2LDQuMTUuMTZsMS4xLTEuOWMtMS44Ni0uMTgtMy43LS4yNi01LjI1LS4yNi01LjU3LDAtMTUsLjkzLTE1LDQuNDNWMjkuMzdjMCwzLjQ5LDkuNDMsNC40''@;'; put 'put ''MywxNSw0LjQzczE1LS45MywxNS00LjQzdi0xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAs''@;'; put 'put ''MCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdl''@;'; put 'put ''ZCIgZD0iTTcsNy43NlY5Ljg1YTQzLjUzLDQzLjUzLDAsMCwwLDExLDEuMjcsNTQuODIsNTQuODIsMCwwLDAsNi4yLS4zNiw3LjUsNy41LDAsMCwxLTEuMTMtMS44OGMtMS41LjE1LTMuMi4yNC01LjA3LjI0QTM3LjYsMzcuNiwwLDAsMSw3LDcuNzZaIi8+XG4gICAgICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzEsMTMuNDN2LjgyYy0uMzMuODYtNS4wNiwyLjQ1LTEzLDIuNDVBMzcuNDUsMzcuNDUsMCwwLDEsNywxNS4zNHYyLjA4QTQzLjMzLDQzLjMzLDAsMCwwLDE4LDE4LjdjNCww''@;'; put 'put ''LDkuOTMtLjQ4LDEzLTJ2NS4xN2MtLjMzLjg2LTUuMDYsMi40NS0xMywyLjQ1QTM3LjQ1LDM3LjQ1LDAsMCwxLDcsMjIuOTJWMjVhNDMuMzMsNDMuMzMsMCwwLDAsMTEsMS4yOGM0LDAsOS45My0uNDgsMTMtMnY1LjFjLS4zNS44Ni01LjA4LDIuNDUtMTMsMi40NVM1LjMsMzAuMiw1LDI5LjM3''@;'; put 'put ''VjYuODJDNS4zLDYsMTAsNC4zNiwxOCw0LjM2YzEuNywwLDMuMjUuMDgsNC42NC4yYTcuNDQsNy40NCwwLDAsMSwuNjctMS45NGMtMS44OC0uMTgtMy43NS0uMjYtNS4zMS0uMjYtNS41NywwLTE1LC45My0xNSw0LjQzVjI5LjM3YzAsMy40OSw5LjQzLDQuNDMsMTUsNC40M3MxNS0uOTMsMTUt''@;'; put 'put ''NC40M1YxMi44N0E3LjQ1LDcuNDUsMCwwLDEsMzEsMTMuNDNaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTcuOTEsMTguMjhjOC4wOCwwLDE0LjY2LTEuNzQsMTUuMDktMy45NFY4LjU5Yy0uNDMsMi4yLTcsMy45NC0xNS4wOSwzLjk0QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDExVjlhMzkuNCwz''@;'; put 'put ''OS40LDAsMCwwLDExLjY2LDEuNTFDMjYsMTAuNTMsMzIuNTIsOC43OSwzMyw2LjYxaDBDMzIuOCwzLjIsMjMuNTIsMi4yOCwxOCwyLjI4UzMsMy4yMSwzLDYuNzFWMjkuMjljMCwzLjQ5LDkuNDMsNC40MywxNSw0LjQzczE1LS45MywxNS00LjQzVjI0LjA5QzMyLjU3LDI2LjI4LDI2LDI4LDE3''@;'; put 'put ''LjkxLDI4QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDI2LjUydi0yQTM5LjQsMzkuNCwwLDAsMCwxNy45MSwyNkMyNiwyNiwzMi41NywyNC4yOCwzMywyMi4wOVYxNi4zNGMtLjQzLDIuMi03LDMuOTQtMTUuMDksMy45NEEzOS40LDM5LjQsMCwwLDEsNi4yNSwxOC43N3YtMkEzOS40LDM5LjQsMCww''@;'; put 'put ''LDAsMTcuOTEsMTguMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTE3LjkxLDIwLjI4QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDE4Ljc3di0yYTM5LjQsMzkuNCwwLDAsMCwxMS42''@;'; put 'put ''NiwxLjUxYzYuOSwwLDEyLjctMS4yNywxNC41MS0zSDIyLjIzYTMuNjcsMy42NywwLDAsMS0zLjU1LTIuNzVoLS43N0EzOS40LDM5LjQsMCwwLDEsNi4yNSwxMVY5YTM5LjQsMzkuNCwwLDAsMCwxMS42NiwxLjUxaC44MkEzLjY0LDMuNjQsMCwwLDEsMTksOS43NWw0LjE3LTcuMjJjLTEuODUt''@;'; put 'put ''LjE4LTMuNjgtLjI1LTUuMjEtLjI1LTUuNTcsMC0xNSwuOTMtMTUsNC40M1YyOS4yOWMwLDMuNDksOS40Myw0LjQzLDE1LDQuNDNzMTUtLjkzLDE1LTQuNDNWMjQuMDlDMzIuNTcsMjYuMjgsMjYsMjgsMTcuOTEsMjhBMzkuNCwzOS40LDAsMCwxLDYuMjUsMjYuNTJ2LTJBMzkuNCwzOS40LDAs''@;'; put 'put ''MCwwLDE3LjkxLDI2QzI2LDI2LDMyLjU3LDI0LjI4LDMzLDIyLjA5VjE2LjM0QzMyLjU3LDE4LjUzLDI2LDIwLjI4LDE3LjkxLDIwLjI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktYWxlcnQiIGQ9Ik0yNi44NSwxbC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkxSDMzLjY4YTEuMjgsMS4yOCwwLDAsMCwxLjEtMS45MUwyOS4wNiwxQTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTcuOTEsMTguMjhjOC4wOCwwLDE0LjY2LTEuNzQsMTUuMDktMy45NHYtMS42YTcuNDcsNy40NywwLDAsMS03LjM4LS44LDQ4LjMsNDguMywwLDAsMS03LjcxLjU5QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDExVjlhMzku''@;'; put 'put ''NCwzOS40LDAsMCwwLDExLjY2LDEuNTEsNTEsNTEsMCwwLDAsNi0uMzQsNy40Niw3LjQ2LDAsMCwxLS41OS03LjY1Yy0xLjg3LS4xOC0zLjczLS4yNi01LjI4LS4yNi01LjU3LDAtMTUsLjkzLTE1LDQuNDNWMjkuMjljMCwzLjQ5LDkuNDMsNC40MywxNSw0LjQzczE1LS45MywxNS00LjQzVjI0''@;'; put 'put ''LjA5QzMyLjU3LDI2LjI4LDI2LDI4LDE3LjkxLDI4QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDI2LjUydi0yQTM5LjQsMzkuNCwwLDAsMCwxNy45MSwyNkMyNiwyNiwzMi41NywyNC4yOCwzMywyMi4wOVYxNi4zNGMtLjQzLDIuMi03LDMuOTQtMTUuMDksMy45NEEzOS40LDM5LjQsMCwwLDEsNi4y''@;'; put 'put ''NSwxOC43N3YtMkEzOS40LDM5LjQsMCwwLDAsMTcuOTEsMTguMjhaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNS44NiIgcj0iNSIvPlxuJyks''@;'; put 'put ''ZS5DbHJTaGFwZUNsdXN0ZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjM2LDhIMjcuNXYySDMxVjMwSDI3LjV2MkgzM1Y5LjY3QTEuNjUsMS42NSwwLDAsMCwzMS4zNiw4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik01LDEwSDguNVY4SDQuNjRBMS42NSwxLjY1LDAsMCwwLDMsOS42N1YzMkg4LjVWMzBINVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+PGVsbGlwc2UgY3g9IjE4LjAxIiBjeT0iMjUuOTkiIHJ4PSIxLjgiIHJ5PSIxLjc5IiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjMyLDRIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEwLDUuNjhWMzJIMjZWNS42OEExLjY4LDEuNjgsMCwwLDAsMjQuMzIsNFpNMjQsMzBIMTJWNkgyNFoiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMy41IiB5PSI5LjIxIiB3aWR0aD0iOSIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNSwxMEg4''@;'; put 'put ''LjVWOEg0LjY0QTEuNjUsMS42NSwwLDAsMCwzLDkuNjdWMzJIOC41VjMwSDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPjxlbGxpcHNlIGN4PSIxOC4wMSIgY3k9IjI1Ljk5IiByeD0iMS44IiByeT0iMS43OSIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSw5Ljg5bC4zOS0uNjhIMTMuNXYxLjZoNS4xN0EzLjY1LDMuNjUsMCwwLDEsMTksOS44OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQsMzBIMTJWNmg5LjI5bDEuMTUtMkgxMS42OEExLjY4LDEuNjgsMCwwLDAsMTAsNS42OFYzMkgyNlYxNS40SDI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzEgMTUuNCAzMSAzMCAyNy41IDMwIDI3LjUgMzIgMzMgMzIgMzMgMTUuNCAzMSAxNS40IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRl''@;'; put 'put ''ZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDEwSDguNVY4SDQuNjRBMS42NSwxLjY1LDAsMCwwLDMsOS42N1YzMkg4LjVWMzBINVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPjxlbGxpcHNlIGN4PSIxOC4wMSIgY3k9IjI1Ljk5IiByeD0iMS44IiByeT0iMS43OSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMy41IiB5''@;'; put 'put ''PSI5LjIxIiB3aWR0aD0iOSIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LDEwLjQ5VjMwSDEyVjZIMjIuNWE3LjQ5LDcuNDksMCwwLDEsLjI4LTJIMTEuNjhB''@;'; put 'put ''MS42OCwxLjY4LDAsMCwwLDEwLDUuNjhWMzJIMjZWMTIuMzRBNy41Myw3LjUzLDAsMCwxLDI0LDEwLjQ5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEsMTMuNDNWMzBIMjcuNXYy''@;'; put 'put ''SDMzVjEyLjg3QTcuNDUsNy40NSwwLDAsMSwzMSwxMy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS4zNiw4SDI3LjVWMzJIMzNWOS42N0ExLjY1LDEuNjUsMCwwLDAsMzEuMzYsOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0zLDkuNjdWMzJIOC41VjhINC42NEExLjY1LDEuNjUsMCwwLDAsMyw5LjY3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjMyLDRIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEwLDUu''@;'; put 'put ''NjhWMzJIMjZWNS42OEExLjY4LDEuNjgsMCwwLDAsMjQuMzIsNFpNMTgsMjcuNzlBMS43OSwxLjc5LDAsMSwxLDE5LjgxLDI2LDEuOCwxLjgsMCwwLDEsMTgsMjcuNzlaTTIzLDEwLjZIMTNWOUgyM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0zLDkuNjdWMzJIOC41VjhINC42NEExLjY1LDEuNjUsMCwwLDAsMyw5LjY3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjcuNSIgeT0iMTUuNCIgd2lkdGg9IjUu''@;'; put 'put ''NSIgaGVpZ2h0PSIxNi42IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksMTMuNTZhMy42OCwzLjY4LDAsMCwxLS4zMS0zSDEzVjloNi41NmwyLjg5LTVIMTEuNjhBMS42OCwxLjY4LDAs''@;'; put 'put ''MCwwLDEwLDUuNjhWMzJIMjZWMTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTksMTMuNTZaTTE4LDI3Ljc5QTEuNzksMS43OSwwLDEsMSwxOS44MSwyNiwxLjgsMS44LDAsMCwxLDE4LDI3Ljc5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxl''@;'; put 'put ''cnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMsOS42N1YzMkg4LjVWOEg0LjY0QTEuNjUsMS42NSwwLDAsMCwzLDkuNjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjUsNmE3LjQ5LDcuNDksMCwwLDEsLjI4LTJIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEwLDUuNjhWMzJIMjZWMTIuMzRBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNlpNMTgsMjcuNzlBMS43OSwxLjc5LDAsMSwxLDE5LjgxLDI2''@;'; put 'put ''LDEuOCwxLjgsMCwwLDEsMTgsMjcuNzlaTTIzLDEwLjZIMTNWOUgyM1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ3LDcuNDcsMCwwLDEtMi41LS40NFYzMkgzM1YxMi44''@;'; put 'put ''N0E3LjQ3LDcuNDcsMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVBcHBsaWNhdGlvbnM9KDAsYS5jbHJJY29uU1ZHKSgnPHBvbHlnb24gcG9pbnRzPSI4IDggNCA4IDQgMTAgMTAgMTAgMTAgNCA4IDQgOCA4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSA4IDE1IDggMTUgMTAgMjEgMTAgMjEgNCAxOSA0IDE5IDgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjMwIDQgMzAg''@;'; put 'put ''OCAyNiA4IDI2IDEwIDMyIDEwIDMyIDQgMzAgNCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAxOSA0IDE5IDQgMjEgMTAgMjEgMTAgMTUgOCAxNSA4IDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSAxOSAxNSAxOSAxNSAyMSAyMSAyMSAyMSAxNSAxOSAxNSAxOSAxOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBv''@;'; put 'put ''aW50cz0iMzAgMTkgMjYgMTkgMjYgMjEgMzIgMjEgMzIgMTUgMzAgMTUgMzAgMTkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjggMzAgNCAzMCA0IDMyIDEwIDMyIDEwIDI2IDggMjYgOCAzMCIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTkgMzAgMTUgMzAgMTUgMzIgMjEgMzIgMjEgMjYgMTkgMjYgMTkgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cG9seWdvbiBwb2ludHM9IjMwIDMwIDI2IDMwIDI2IDMyIDMyIDMyIDMyIDI2IDMwIDI2IDMwIDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDggNCA4IDQgMTAgMTAgMTAgMTAg''@;'; put 'put ''NCA4IDQgOCA4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTkgOCAxNSA4IDE1IDEwIDIxIDEwIDIxIDQgMTkgNCAxOSA4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAxOSA0IDE5IDQgMjEgMTAgMjEgMTAgMTUgOCAxNSA4IDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTkgMTkgMTUgMTkgMTUgMjEgMjEgMjEgMjEgMTUgMTkgMTUgMTkgMTkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIz''@;'; put 'put ''MCAxOSAyNiAxOSAyNiAyMSAzMiAyMSAzMiAxNSAzMCAxNSAzMCAxOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjggMzAgNCAzMCA0IDMyIDEwIDMyIDEwIDI2IDggMjYg''@;'; put 'put ''OCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE5IDMwIDE1IDMwIDE1IDMyIDIxIDMyIDIxIDI2IDE5IDI2IDE5IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgMzAgMjYgMzAgMjYgMzIgMzIgMzIgMzIgMjYgMzAgMjYgMzAgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdl''@;'; put 'put ''ZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC05LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCA4IDQgOCA0IDEwIDEw''@;'; put 'put ''IDEwIDEwIDQgOCA0IDggOCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAxOSA0IDE5IDQgMjEgMTAgMjEgMTAgMTUgOCAxNSA4IDE5IiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSAxOSAxNSAxOSAxNSAyMSAyMSAyMSAyMSAxNSAxOSAxNSAxOSAxOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgMTUgMzAgMTkgMjYgMTkgMjYgMjEgMzIgMjEgMzIgMTUgMzAgMTUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cG9seWdvbiBwb2ludHM9IjggMzAgNCAzMCA0IDMyIDEwIDMyIDEwIDI2IDggMjYgOCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTkgMzAgMTUgMzAgMTUg''@;'; put 'put ''MzIgMjEgMzIgMjEgMjYgMTkgMjYgMTkgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjMwIDMwIDI2IDMwIDI2IDMyIDMyIDMyIDMyIDI2IDMwIDI2IDMwIDMwIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDhIMTV2Mmg0TDE5LDkuODksMjEsNi41VjRIMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtOC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjQiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxyZWN0IHg9IjQiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI0IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjQiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIxNSIgd2lkdGg9IjYiIGhlaWdodD0iNiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC02Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNiIgeT0i''@;'; put 'put ''NCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNyIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjYiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC04Ii8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cmVjdCB4PSIyNiIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTkiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjQiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVj''@;'; put 'put ''dCB4PSI0IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWFsZXJ0ZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxyZWN0IHg9IjI2IiB5PSIxNSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC03LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUsMTBoNEwxOSw5Ljg5LDIxLDYuNVY0SDE1WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtOC0tYWxlcnRlZCIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtOS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNCIgeT0iNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IHg9IjQiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNCIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IHg9IjE1IiB5PSIxNSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC01LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC02LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI2IiB5PSIxNSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC03LS1iYWRnZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxyZWN0IHg9IjI2IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC04LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktc29saWQtcGF0aC05LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZUJ1aWxkaW5nPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOS44OCwzSDYuMTJBMi4xMiwyLjEyLDAsMCwwLDQsNS4xMlYzM0gyMlY1LjEyQTIuMTIsMi4xMiww''@;'; put 'put ''LDAsMCwxOS44OCwzWk0yMCwzMUgxN1YyOEg5djNINlY1LjEyQS4xMi4xMiwwLDAsMSw2LjEyLDVIMTkuODhhLjEyLjEyLDAsMCwxLC4xMi4xMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3Qg''@;'; put 'put ''eD0iOCIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cmVjdCB4PSI4IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRn''@;'; put 'put ''ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIxOCIgd2lkdGg9IjIiIGhl''@;'; put 'put ''aWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEwLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0i''@;'; put 'put ''MjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEyLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNC0tYmFkZ2VkIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCB4PSIyNyIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE1LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTYtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNy0tYmFk''@;'; put 'put ''Z2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMyIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE4LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIyMyIgd2lkdGg9IjIi''@;'; put 'put ''IGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTktLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLDEzLjQzVjMxSDIzdjJIMzNWMTIuODdBNy40NSw3LjQ1LDAsMCwxLDMxLDEzLjQzWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMjAtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yMS0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjEzIiB3''@;'; put 'put ''aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cmVjdCB4PSIxMiIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC04LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC05LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1hbGVy''@;'; put 'put ''dGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjIzIiB3aWR0aD0i''@;'; put 'put ''MiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEzLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJl''@;'; put 'put ''Y3QgeD0iMjMiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTUtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTE2LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjAsMzFIMTdWMjhIOXYzSDZWNS4xMkEuMTIuMTIsMCwwLDEsNi4xMiw1SDE5Ljg4YS4xMi4xMiwwLDAsMSwuMTIuMTJWOC4yNGwyLTMuNDFBMi4xMiwy''@;'; put 'put ''LjEyLDAsMCwwLDE5Ljg4LDNINi4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDIyVjE1LjM4YTMuNjgsMy42OCwwLDAsMS0yLS43NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xNy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHln''@;'; put 'put ''b24gcG9pbnRzPSIzMSAxNS40IDMxIDMxIDIzIDMxIDIzIDMzIDMzIDMzIDMzIDE1LjQgMzEgMTUuNCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTE4LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywx''@;'; put 'put ''MUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTktLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''YWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMSw4SDIyVjMzSDMzVjEwQTIsMiwwLDAsMCwzMSw4Wk0yNiwyNUgyNFYyM2gyWm0wLTVIMjRWMThoMlptMC01SDI0VjEzaDJabTQsMTBIMjhWMjNoMlptMC01SDI4VjE4aDJabTAtNUgyOFYxM2gyWiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3Ljg4LDNINi4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDlWMzBoNnYzaDVWNS4xMkEyLjEyLDIuMTIsMCwwLDAsMTcuODgsM1pNOSwyNUg3VjIzSDlabTAtNUg3VjE4SDlabTAtNUg3VjEzSDlabTAt''@;'; put 'put ''NUg3VjhIOVptNCwxNUgxMVYyM2gyWm0wLTVIMTFWMThoMlptMC01SDExVjEzaDJabTAtNUgxMVY4aDJabTQsMTVIMTVWMjNoMlptMC01SDE1VjE4aDJabTAtNUgxNVYxM2gyWm0wLTVIMTVWOGgyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTE3Ljg4LDNINi4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDlWMzBoNnYzaDVWMTQuNjRhMy42NywzLjY3LDAsMCwxLTEtNC43NmwxLTEuNjVWNS4xMkEyLjEyLDIuMTIsMCwwLDAsMTcuODgsM1pNOSwyNUg3VjIzSDlabTAtNUg3VjE4SDlabTAtNUg3VjEzSDla''@;'; put 'put ''bTAtNUg3VjhIOVptNCwxNUgxMVYyM2gyWm0wLTVIMTFWMThoMlptMC01SDExVjEzaDJabTAtNUgxMVY4aDJabTQsMTVIMTVWMjNoMlptMC01SDE1VjE4aDJabTAtNUgxNVYxM2gyWm0wLTVIMTVWOGgyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0t''@;'; put 'put ''YWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjIzLDE1LjRsLS4yMywwVjMzSDMzVjE1LjRaTTI2LDI1SDI0VjIzaDJabTAtNUgyNFYxOGgyWm00LDVIMjhWMjNoMlptMC01SDI4VjE4aDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0y''@;'; put 'put ''LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcuODgsM0g2LjEyQTIuMTIsMi4xMiwwLDAsMCw0LDUuMTJWMzNIOVYzMGg2djNoNVY1LjEyQTIuMTIsMi4xMiwwLDAsMCwxNy44OCwzWk05LDI1''@;'; put 'put ''SDdWMjNIOVptMC01SDdWMThIOVptMC01SDdWMTNIOVptMC01SDdWOEg5Wm00LDE1SDExVjIzaDJabTAtNUgxMVYxOGgyWm0wLTVIMTFWMTNoMlptMC01SDExVjhoMlptNCwxNUgxNVYyM2gyWm0wLTVIMTVWMThoMlptMC01SDE1VjEzaDJabTAtNUgxNVY4aDJaIiBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVWMTVIMjhWMTMuMjJBNy41LDcuNSwwLDAsMSwyMi43OCw4SDIyVjMzSDMzVjEyLjg3QTcuNDcsNy40NywwLDAsMSwzMCwxMy41Wk0yNiwyNUgyNFYyM2gyWm0wLTVI''@;'; put 'put ''MjRWMThoMlptMC01SDI0VjEzaDJabTQsMTBIMjhWMjNoMlptMC01SDI4VjE4aDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLDhIMjN2Mmg4VjMxSDIzdjJIMzNWMTBBMiwyLDAsMCwwLDMxLDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTE5Ljg4LDNINi4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDIyVjUuMTJBMi4xMiwyLjEyLDAsMCwwLDE5Ljg4LDNaTTIwLDMxSDE3VjI4SDl2M0g2VjUuMTJBLjEyLjEyLDAsMCwxLDYuMTIsNUgxOS44OGEuMTIuMTIsMCwwLDEsLjEyLjEyWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIx''@;'; put 'put ''MiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5''@;'; put 'put ''PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEwIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMiIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTMiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2''@;'; put 'put ''IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE0Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMyIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xNSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTYiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE3Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xOCIvPlxuICAgICAgICAgICAgPHJlY3Qg''@;'; put 'put ''eD0iMjMiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTkiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTIwIi8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVDUFU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIzLjA4LDIzLjA3aC0xMXYxLjVIMjMuODNhLjc1Ljc1LDAsMCwwLC43NS0uNzVWMTEuMzNoLTEuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuMiwxOC4xNWEuOC44LDAsMSwwLDAtMS42SDMwdi01LjRoMi4yYS44LjgsMCwxLDAsMC0xLjZIMzBWOC4xQTIuMSwyLjEsMCwwLDAsMjcuOSw2SDI2LjM1VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEs''@;'; put 'put ''MC0xLjYsMFY2aC01LjRWMy44YS44LjgsMCwxLDAtMS42LDBWNkg4LjFBMi4xLDIuMSwwLDAsMCw2LDguMVY5LjU1SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZWMjcuOUEyLjEsMi4xLDAsMCwwLDgu''@;'; put 'put ''MSwzMGgyLjY1djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBIMjcuOUEyLjEsMi4xLDAsMCwwLDMwLDI3LjlWMjUuMTVoMi4yYS44LjgsMCwxLDAsMC0xLjZIMzB2LTUuNFpNMjgsMjcuOWEuMS4x''@;'; put 'put ''LDAsMCwxLS4xLjFIOC4xYS4xLjEsMCwwLDEtLjEtLjFWOC4xQS4xLjEsMCwwLDEsOC4xLDhIMjcuOWEuMS4xLDAsMCwxLC4xLjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEyLjA2LDI0LjU3SDIzLjgzYS43''@;'; put 'put ''NS43NSwwLDAsMCwuNzUtLjc1VjExLjMzaC0xLjVWMjMuMDdoLTExWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuMiwyMy41NUgzMHYtNS40aDIuMmEuOC44LDAsMSwwLDAtMS42''@;'; put 'put ''SDMwVjEzLjVhNy40OSw3LjQ5LDAsMCwxLTItLjI4VjI3LjlhLjEuMSwwLDAsMS0uMS4xSDguMWEuMS4xLDAsMCwxLS4xLS4xVjguMUEuMS4xLDAsMCwxLDguMSw4SDIyLjc4YTcuNDksNy40OSwwLDAsMS0uMjgtMkgxOS4zNVYzLjhhLjguOCwwLDEsMC0xLjYsMFY2aC01LjRWMy44YS44Ljgs''@;'; put 'put ''MCwxLDAtMS42LDBWNkg4LjFBMi4xLDIuMSwwLDAsMCw2LDguMVY5LjU1SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZWMjcuOUEyLjEsMi4xLDAsMCwwLDguMSwzMGgyLjY1djIuMmEuOC44LDAsMSww''@;'; put 'put ''LDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBIMjcuOUEyLjEsMi4xLDAsMCwwLDMwLDI3LjlWMjUuMTVoMi4yYS44LjgsMCwxLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuMiwyMy41''@;'; put 'put ''NUgzMHYtNS40aDIuMmEuOC44LDAsMSwwLDAtMS42SDMwVjE1LjRIMjhWMjcuOWEuMS4xLDAsMCwxLS4xLjFIOC4xYS4xLjEsMCwwLDEtLjEtLjFWOC4xQS4xLjEsMCwwLDEsOC4xLDhoMTJsMS4xNS0ySDE5LjM1VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0x''@;'; put 'put ''LjYsMFY2SDguMUEyLjEsMi4xLDAsMCwwLDYsOC4xVjkuNTVIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINlYyNy45QTIuMSwyLjEsMCwwLDAsOC4xLDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAsMS42LDBW''@;'; put 'put ''MzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcuOVYyNS4xNWgyLjJhLjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTIuMDYsMjQuNTdIMjMuODNhLjc1Ljc1LDAsMCwwLC43NS0uNzVWMTUuNGgtMS41djcuNjdoLTExWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjIsMjMuNTVIMzB2LTUuNGgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMFYxNS40SDI1djguNDFBMS4xOCwxLjE4LDAsMCwxLDI0LDI1SDEzVjIzSDIzVjE1LjRoLS43N0Ez''@;'; put 'put ''LjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDE5LjM1VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2SDguMUEyLjEsMi4xLDAsMCwwLDYsOC4xVjkuNTVIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZI''@;'; put 'put ''NnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINlYyNy45QTIuMSwyLjEsMCwwLDAsOC4xLDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcu''@;'; put 'put ''OVYyNS4xNWgyLjJhLjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEEx''@;'; put 'put ''LjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yLDIz''@;'; put 'put ''LjU1SDMwdi01LjRoMi4yYS44LjgsMCwxLDAsMC0xLjZIMzBWMTMuNWE3LjQ2LDcuNDYsMCwwLDEtNS0xLjkyVjIzLjgxQTEuMTgsMS4xOCwwLDAsMSwyNCwyNUgxM1YyM0gyM1YxMWgxLjQyQTcuNDYsNy40NiwwLDAsMSwyMi41LDZIMTkuMzVWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40''@;'; put 'put ''VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZIOC4xQTIuMSwyLjEsMCwwLDAsNiw4LjFWOS41NUgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2VjI3LjlBMi4xLDIuMSwwLDAsMCw4LjEsMzBoMi42NXYyLjJh''@;'; put 'put ''LjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwSDI3LjlBMi4xLDIuMSwwLDAsMCwzMCwyNy45VjI1LjE1aDIuMmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yLDE4''@;'; put 'put ''LjE1YS44LjgsMCwxLDAsMC0xLjZIMzB2LTUuNGgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMFY4LjFBMi4xLDIuMSwwLDAsMCwyNy45LDZIMjYuMzVWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2SDgu''@;'; put 'put ''MUEyLjEsMi4xLDAsMCwwLDYsOC4xVjkuNTVIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINlYyNy45QTIuMSwyLjEsMCwwLDAsOC4xLDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIu''@;'; put 'put ''MmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcuOVYyNS4xNWgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMHYtNS40Wk0yNSwyMy44MUExLjE4LDEuMTgsMCwwLDEsMjQsMjVIMTNWMjNIMjNWMTFoMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZU1lbW9yeT0oMCxhLmNsckljb25TVkcpKCc8cmVjdCB4PSI4IiB5PSIxMiIgd2lkdGg9IjQiIGhlaWdodD0iOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIxMiIgd2lkdGg9IjQiIGhlaWdodD0iOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI0IiB5PSIxMiIgd2lkdGg9IjQiIGhlaWdodD0iOCIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSwyN0g0VjE3SDJWMjdhMiwyLDAsMCwwLDIsMkgxNi42MVYyNS41NWgyLjI2VjI0SDE1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0zMiw3SDRBMiwyLDAsMCwwLDIsOXY0SDRWOUgzMnY0aDJWOUEyLDIsMCwwLDAsMzIsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMjdIMTl2MkgzMmEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjE3SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRl''@;'; put 'put ''ZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LDI3SDRWMTdIMlYyN2EyLDIsMCwwLDAsMiwySDE2LjYxVjI1LjU1aDIuMjZWMjRIMTVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTMyLDE3VjI3SDE5djJIMzJhMiwyLDAsMCwwLDItMlYxN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksMTMuNTZBMy42NiwzLjY2LDAsMCwxLDE4LjU3LDEySDE2djho''@;'; put 'put ''NFYxNC42NEEzLjY3LDMuNjcsMCwwLDEsMTksMTMuNTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjQiIHk9IjE1LjQiIHdpZHRoPSI0IiBoZWlnaHQ9IjQuNiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDlIMTkuNTZsMS4xNS0ySDRBMiwyLDAsMCwwLDIsOXY0SDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''Ni0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIxMiIgd2lkdGg9IjQiIGhlaWdodD0iOCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUsMjdINFYxN0gyVjI3''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMTYuNjFWMjUuNTVoMi4yNlYyNEgxNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDE3VjI3SDE5djJIMzJhMiwyLDAsMCwwLDItMlYxN1oiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDEzLjIyQTcuNDYsNy40NiwwLDAsMSwyNS41MSwxMkgyNHY4aDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC01LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDlIMjMuMTNhNy40NSw3LjQ1LDAsMCwxLS41NS0ySDRBMiwyLDAsMCwwLDIsOXY0SDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQsMTNWOWEyLDIsMCwwLDAtMi0ySDRBMiwyLDAsMCwwLDIs''@;'; put 'put ''OXY0SDR2NEgyVjI3YTIsMiwwLDAsMCwyLDJIMTYuNjFWMjUuNTVIMTlWMjlIMzJhMiwyLDAsMCwwLDItMlYxN0gzMlYxM1pNMTIsMjBIOFYxMmg0Wm04LDBIMTZWMTJoNFptOCwwSDI0VjEyaDRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMzIsMTdWMTUuMDdIMjhWMjBIMjRWMTUuMDdIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDIwLDE0LjMxVjIwSDE2VjEyaDIuNjFBMy42OCwzLjY4LDAsMCwxLDE5LDkuNTVMMjAuNTIsN0g0QTIsMiwwLDAsMCwyLDl2NEg0djRIMlYyN2EyLDIsMCwwLDAsMiwySDE2LjYxVjI1''@;'; put 'put ''LjU1SDE5VjI5SDMyYTIsMiwwLDAsMCwyLTJWMTdaTTEyLDIwSDhWMTJoNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NS44bC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEu''@;'; put 'put ''MSwxLjkxSDMzLjY4YTEuMjgsMS4yOCwwLDAsMCwxLjEtMS45MUwyOS4wNi44QTEuMjgsMS4yOCwwLDAsMCwyNi44NS44WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTMyLDE3VjEzLjIyYTcuMzMsNy4zMywwLDAsMS00LDBWMjBIMjRWMTJoMS41MWE3LjQ4LDcuNDgsMCwwLDEtMi45NC01SDRBMiwyLDAsMCwwLDIsOXY0SDR2NEgyVjI3YTIsMiwwLDAsMCwyLDJIMTYuNjFWMjUuNTVIMTlWMjlIMzJhMiwyLDAsMCwwLDItMlYxN1pNMTIsMjBIOFYxMmg0Wm04''@;'; put 'put ''LDBIMTZWMTJoNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVEYXRhQ2x1c3Rlcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYuNSw0LjA4QzIyLjc3LDQuMDgsMTksNS40LDE5LDcuOTFWOS41YTE4Ljc1LDE4Ljc1LDAsMCwxLDIsLjJWNy45MWMwLS42NSwyLjA5LTEuODQsNS41''@;'; put 'put ''LTEuODRTMzIsNy4yNywzMiw3LjkxVjE4LjI0YzAsLjU0LTEuNDYsMS40NC0zLjksMS43M3YyYzMuMTMtLjMyLDUuOS0xLjYsNS45LTMuNzVWNy45MUMzNCw1LjQsMzAuMjMsNC4wOCwyNi41LDQuMDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTQsMTguMjRWNy45MWMwLS42NSwyLjA5LTEuODQsNS41LTEuODRTMTUsNy4yNywxNSw3LjkxVjkuN2ExOC43NSwxOC43NSwwLDAsMSwyLS4yVjcuOTFjMC0yLjUyLTMuNzctMy44NC03LjUtMy44NFMyLDUuNCwyLDcuOTFWMTguMjRDMiwyMC40LDQuNzcsMjEu''@;'; put 'put ''NjcsNy45LDIyVjIwQzUuNDYsMTkuNjgsNCwxOC43OCw0LDE4LjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxMC44NWMtNC45MywwLTguNjUsMS44OC04LjY1LDQuMzhWMjcuNTRjMCwyLjUsMy43Miw0''@;'; put 'put ''LjM4LDguNjUsNC4zOHM4LjY1LTEuODgsOC42NS00LjM4VjE1LjIzQzI2LjY1LDEyLjczLDIyLjkzLDEwLjg1LDE4LDEwLjg1Wm02LjY1LDcuNjdjLS44NSwxLTMuNDIsMi02LjY1LDJBMTQuNDksMTQuNDksMCwwLDEsMTQsMjB2MS40NmExNi4zMywxNi4zMywwLDAsMCw0LC40NywxMi43Niwx''@;'; put 'put ''Mi43NiwwLDAsMCw2LjY1LTEuNTZ2My4xMmMtLjg1LDEtMy40MiwyLTYuNjUsMmExNC40OSwxNC40OSwwLDAsMS00LS41M3YxLjQ2YTE2LjMzLDE2LjMzLDAsMCwwLDQsLjQ3LDEyLjc2LDEyLjc2LDAsMCwwLDYuNjUtMS41NnYyLjI5YzAsLjk1LTIuNjUsMi4zOC02LjY1LDIuMzhzLTYuNjUt''@;'; put 'put ''MS40My02LjY1LTIuMzhWMTUuMjNjMC0uOTUsMi42NS0yLjM4LDYuNjUtMi4zOHM2LjY1LDEuNDMsNi42NSwyLjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDE4LjI0VjcuOTFjMC0uNjUsMi4wOS0xLjg0''@;'; put 'put ''LDUuNS0xLjg0UzE1LDcuMjcsMTUsNy45MVY5LjdhMTguNzUsMTguNzUsMCwwLDEsMi0uMlY3LjkxYzAtMi41Mi0zLjc3LTMuODQtNy41LTMuODRTMiw1LjQsMiw3LjkxVjE4LjI0QzIsMjAuNCw0Ljc3LDIxLjY3LDcuOSwyMlYyMEM1LjQ2LDE5LjY4LDQsMTguNzgsNCwxOC4yNFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuNjUsMTguNTJjLS44NSwxLTMuNDIsMi02LjY1LDJBMTQuNDksMTQuNDksMCwwLDEsMTQsMjB2MS40NmExNi4zMywxNi4zMywwLDAsMCw0LC40''@;'; put 'put ''NywxMi43NiwxMi43NiwwLDAsMCw2LjY1LTEuNTZ2My4xMmMtLjg1LDEtMy40MiwyLTYuNjUsMmExNC40OSwxNC40OSwwLDAsMS00LS41M3YxLjQ2YTE2LjMzLDE2LjMzLDAsMCwwLDQsLjQ3LDEyLjc2LDEyLjc2LDAsMCwwLDYuNjUtMS41NnYyLjI5YzAsLjk1LTIuNjUsMi4zOC02LjY1LDIu''@;'; put 'put ''MzhzLTYuNjUtMS40My02LjY1LTIuMzhWMTUuMjNjMC0uOTUsMi42NS0yLjM4LDYuNjUtMi4zOGwuNzUsMGEzLjY5LDMuNjksMCwwLDEtLjA4LTJsLS42NiwwYy00LjkzLDAtOC42NSwxLjg4LTguNjUsNC4zOFYyNy41NGMwLDIuNSwzLjcyLDQuMzgsOC42NSw0LjM4czguNjUtMS44OCw4LjY1''@;'; put 'put ''LTQuMzhWMTUuNGgtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNC44Yy0xLjc1LjYzLTMsMS42OC0zLDMuMTJWOS41bC4yNSwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMydjIuODRjMCwuNTQtMS40NiwxLjQ0LTMuOSwxLjczdjJjMy4xMy0uMzIsNS45LTEuNiw1LjktMy43NVYxNS4zOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAs''@;'; put 'put ''MCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMTguMjRWNy45MWMwLS42NSwyLjA5LTEuODQsNS41LTEuODRTMTUsNy4yNywxNSw3''@;'; put 'put ''LjkxVjkuN2ExOC43NSwxOC43NSwwLDAsMSwyLS4yVjcuOTFjMC0yLjUyLTMuNzctMy44NC03LjUtMy44NFMyLDUuNCwyLDcuOTFWMTguMjRDMiwyMC40LDQuNzcsMjEuNjcsNy45LDIyVjIwQzUuNDYsMTkuNjgsNCwxOC43OCw0LDE4LjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTAuODVjLTQuOTMsMC04LjY1LDEuODgtOC42NSw0LjM4VjI3LjU0YzAsMi41LDMuNzIsNC4zOCw4LjY1LDQuMzhzOC42NS0xLjg4LDguNjUtNC4zOFYxNS4yM0MyNi42NSwxMi43Mywy''@;'; put 'put ''Mi45MywxMC44NSwxOCwxMC44NVptNi42NSw3LjY3Yy0uODUsMS0zLjQyLDItNi42NSwyQTE0LjQ5LDE0LjQ5LDAsMCwxLDE0LDIwdjEuNDZhMTYuMzMsMTYuMzMsMCwwLDAsNCwuNDcsMTIuNzYsMTIuNzYsMCwwLDAsNi42NS0xLjU2djMuMTJjLS44NSwxLTMuNDIsMi02LjY1LDJhMTQuNDks''@;'; put 'put ''MTQuNDksMCwwLDEtNC0uNTN2MS40NmExNi4zMywxNi4zMywwLDAsMCw0LC40NywxMi43NiwxMi43NiwwLDAsMCw2LjY1LTEuNTZ2Mi4yOWMwLC45NS0yLjY1LDIuMzgtNi42NSwyLjM4cy02LjY1LTEuNDMtNi42NS0yLjM4VjE1LjIzYzAtLjk1LDIuNjUtMi4zOCw2LjY1LTIuMzhzNi42NSwx''@;'; put 'put ''LjQzLDYuNjUsMi4zOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIxLDcuOTFjMC0uMzMuNTUtLjgsMS41NC0xLjE4LDAtLjI0LDAtLjQ4LDAtLjczYTcuNTIsNy41MiwwLDAsMSwu''@;'; put 'put ''MTQtMS40MUMyMC41NSw1LjE5LDE5LDYuMywxOSw3LjkxVjkuNWExOC43NSwxOC43NSwwLDAsMSwyLC4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJ2NWMwLC41NC0x''@;'; put 'put ''LjQ2LDEuNDQtMy45LDEuNzN2MmMzLjEzLS4zMiw1LjktMS42LDUuOS0zLjc1di01LjlBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIz''@;'; put 'put ''MCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LjUsNC4wOEMyMi43Nyw0LjA4LDE5LDUuNCwxOSw3LjkxVjkuNDhjNS4zLjI2LDksMi42''@;'; put 'put ''LDksNS43NnY2LjdsLjA1LjA2YzMuMTMtLjMyLDUuOS0xLjYsNS45LTMuNzVWNy45MUMzNCw1LjQsMzAuMjMsNC4wOCwyNi41LDQuMDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsOS40OFY3LjkxYzAtMi41Mi0z''@;'; put 'put ''Ljc3LTMuODQtNy41LTMuODRTMiw1LjQsMiw3LjkxVjE4LjI0QzIsMjAuNCw0Ljc3LDIxLjY3LDcuOSwyMkw4LDIxLjkzdi02LjdDOCwxMi4wOCwxMS43LDkuNzQsMTcsOS40OFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0xOCwxMC44NWMtNC45MywwLTguNjUsMS44OC04LjY1LDQuMzhWMjcuNTRjMCwyLjUsMy43Miw0LjM4LDguNjUsNC4zOHM4LjY1LTEuODgsOC42NS00LjM4VjI1LjM4QTEzLjU4LDEzLjU4LDAsMCwxLDE4LDI4YTE2Ljc3LDE2Ljc3LDAsMCwxLTYtMVYyNS4yN2ExNC41LDE0LjUsMCwwLDAs''@;'; put 'put ''NiwxLjE3YzQuMjEsMCw3LjY1LTEuMjMsOC42My0zLjIzVjIwLjQ3QzI0LjgsMjIsMjEuNzIsMjMsMTgsMjNhMTYuNzcsMTYuNzcsMCwwLDEtNi0xVjIwLjIzYTE0LjUsMTQuNSwwLDAsMCw2LDEuMTdjNC4yMSwwLDcuNjUtMS4xMSw4LjYzLTMuMTFWMTUuMjNDMjYuNjUsMTIuNzMsMjIuOTMs''@;'; put 'put ''MTAuODUsMTgsMTAuODVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsOS40OFY3LjkxYzAtMi41Mi0zLjc3LTMuODQtNy41LTMuODRTMiw1LjQsMiw3LjkxVjE4LjI0QzIsMjAuNCw0Ljc3LDIxLjY3LDcuOSwyMkw4''@;'; put 'put ''LDIxLjkzdi02LjdDOCwxMi4wOCwxMS43LDkuNzQsMTcsOS40OFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwxMy41NmEzLjY4LDMuNjgsMCwwLDEtLjM5LTIuN2wtLjY2LDBjLTQu''@;'; put 'put ''OTMsMC04LjY1LDEuODgtOC42NSw0LjM4VjI3LjU0YzAsMi41LDMuNzIsNC4zOCw4LjY1LDQuMzhzOC42NS0xLjg4LDguNjUtNC4zOFYyNS4zOEExMy41OCwxMy41OCwwLDAsMSwxOCwyOGExNi43NywxNi43NywwLDAsMS02LTFWMjUuMjdhMTQuNSwxNC41LDAsMCwwLDYsMS4xN2M0LjIxLDAs''@;'; put 'put ''Ny42NS0xLjIzLDguNjMtMy4yM1YyMC40N0MyNC44LDIyLDIxLjcyLDIzLDE4LDIzYTE2Ljc3LDE2Ljc3LDAsMCwxLTYtMVYyMC4yM2ExNC41LDE0LjUsMCwwLDAsNiwxLjE3YzQuMjEsMCw3LjY1LTEuMTEsOC42My0zLjExVjE1LjRIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LDEzLjU2WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDQuOGMtMS43NS42My0zLDEuNjgtMywzLjEyVjkuNDhsLjI3LDBaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgyOHY2LjUzbC4wNS4wNmMzLjEzLS4zMiw1LjktMS42LDUuOS0zLjc1VjE1LjM4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LDkuNDhWNy45MWMwLTIuNTItMy43Ny0zLjg0LTcuNS0zLjg0UzIsNS40LDIsNy45MVYxOC4yNEMyLDIwLjQsNC43NywyMS42Nyw3LjksMjJMOCwyMS45M3YtNi43QzgsMTIu''@;'; put 'put ''MDgsMTEuNyw5Ljc0LDE3LDkuNDhaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDEwLjg1Yy00LjkzLDAtOC42NSwxLjg4LTguNjUsNC4zOFYyNy41NGMwLDIuNSwzLjcyLDQuMzgsOC42''@;'; put 'put ''NSw0LjM4czguNjUtMS44OCw4LjY1LTQuMzhWMjUuMzhBMTMuNTgsMTMuNTgsMCwwLDEsMTgsMjhhMTYuNzcsMTYuNzcsMCwwLDEtNi0xVjI1LjI3YTE0LjUsMTQuNSwwLDAsMCw2LDEuMTdjNC4yMSwwLDcuNjUtMS4yMyw4LjYzLTMuMjNWMjAuNDdDMjQuOCwyMiwyMS43MiwyMywxOCwyM2Ex''@;'; put 'put ''Ni43NywxNi43NywwLDAsMS02LTFWMjAuMjNhMTQuNSwxNC41LDAsMCwwLDYsMS4xN2M0LjIxLDAsNy42NS0xLjExLDguNjMtMy4xMVYxNS4yM0MyNi42NSwxMi43MywyMi45MywxMC44NSwxOCwxMC44NVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0t''@;'; put 'put ''YmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSw2YTcuNTIsNy41MiwwLDAsMSwuMTQtMS40QzIwLjU1LDUuMTksMTksNi4zLDE5LDcuOTFWOS40OGExNS4zMywxNS4zMywwLDAsMSw1LDFBNy40Niw3LjQ2LDAsMCwxLDIyLjUsNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNDlBNy40Nyw3LjQ3LDAsMCwxLDI3LjM1LDEzYTQsNCwwLDAsMSwuNywyLjIzdjYuN2wuMDUuMDZjMy4xMy0uMzIsNS45LTEuNiw1LjktMy43NVYxMi4zM0E3LjQ2LDcuNDYsMCww''@;'; put 'put ''LDEsMzAsMTMuNDlaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI1Ljk5IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxlLkNsclNoYXBlUmVzb3VyY2VQb29sPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy42OCwxNS40SDMxLjczYTE0LDE0LDAsMCwxLC4yMiwxLjZIMTcuNDlMOC4zLDI4LjA3QTE0LDE0LDAsMCwxLDIyLjA5LDQuNjJsMS0xLjc2''@;'; put 'put ''QTE2LDE2LDAsMSwwLDM0LDE4YTE2LDE2LDAsMCwwLS4yMy0yLjYxWk0xOCwzMmExMy45MSwxMy45MSwwLDAsMS04LjE2LTIuNjVMMTguNDMsMTlIMzEuOTVBMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxl''@;'; put 'put ''cnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTQsMThhMTQsMTQsMCwwLDEsMjcuOTUtMUgxNy40OUw4LjMsMjguMDdBMTQs''@;'; put 'put ''MTQsMCwwLDEsNCwxOFpNMTgsMzJhMTMuOTEsMTMuOTEsMCwwLDEtOC4xNi0yLjY1TDE4LjQzLDE5SDMxLjk1QTE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS4yLDEzLjRhMTMu''@;'; put 'put ''OTEsMTMuOTEsMCwwLDEsLjc1LDMuNkgxNy40OUw4LjMsMjguMDdBMTQsMTQsMCwwLDEsMjIuNjEsNC44YTcuNDMsNy40MywwLDAsMSwuNTgtMS45MiwxNi4wNiwxNi4wNiwwLDEsMCw5LjkzLDkuOTNBNy40Myw3LjQzLDAsMCwxLDMxLjIsMTMuNFpNMTgsMzJhMTMuOTEsMTMuOTEsMCwwLDEt''@;'; put 'put ''OC4xNi0yLjY1TDE4LjQzLDE5SDMxLjk1QTE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTguNTcsMzAuOUExNiwxNiwwLDAsMCwzMy45NSwxOUgxOC40M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0zMy45NSwxN0ExNiwxNiwwLDEsMCw3LDI5LjZMMTcuNDksMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOC41NywzMC45QTE2LDE2LDAsMCwwLDMzLjk1LDE5SDE4LjQzWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy45NSwxN2ExNS45MSwxNS45MSwwLDAsMC0uODQtNC4xOCw3LjQ5LDcuNDksMCwwLDEtOS45Mi05Ljk0QTE2LDE2LDAsMCwwLDcsMjkuNkwxNy40OSwxN1oi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdl''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOC41NywzMC45QTE2LDE2LDAsMCwwLDMzLjk1LDE5SDE4LjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjk1LDE3YTE2LDE2LDAs''@;'; put 'put ''MCwwLS4xOC0xLjYxSDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bDQuMDYtN0ExNiwxNiwwLDAsMCw3LDI5LjZMMTcuNDksMTdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYu''@;'; put 'put ''ODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVTaGllbGRDaGVjaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCww''@;'; put 'put ''LDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVpNMzAsMTUuOTNjMCwxMS0xMCwxNS42MS0xMiwxNi40My0y''@;'; put 'put ''LS44Mi0xMi01LjQ0LTEyLTE2LjQzVjkuMTRhNDcuNTQsNDcuNTQsMCwwLDAsNi4xOC0yLjI1LDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODItMyw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLDNBNDcuNTQsNDcuNTQsMCwwLDAsMzAsOS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuODgsMTYuODdhMSwxLDAsMCwwLTEuNDEsMS40MWw2LDZMMjYuNCwxMy43N0ExLDEsMCwwLDAsMjUsMTIuMzNsLTkuNDcsOS4xOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMu''@;'; put 'put ''NTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVptLTQuNTcsNi42NUwxNS41MSwyNC45LDkuMTksMTguNTdhMS40LDEuNCwwLDAsMSwyLTJMMTUuNTQsMjEsMjQuNzMsMTJhMS40LDEuNCwwLDEsMSwyLDJaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVTaGllbGQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjI1LDcuNGE0My43OSw0My43OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUsMCwwLDEtNi4wOC0zLjIxTDE4LDEuNWwtLjU0LjM1''@;'; put 'put ''YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjcuNTlaTTMwLDE1LjkzYzAsMTEtMTAsMTUuNjEt''@;'; put 'put ''MTIsMTYuNDMtMi0uODItMTItNS40NC0xMi0xNi40M1Y5LjE0YTQ3LjU0LDQ3LjU0LDAsMCwwLDYuMTgtMi4yNSw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLTMsNDguMjMsNDguMjMsMCwwLDAsNS44MiwzQTQ3LjU0LDQ3LjU0LDAsMCwwLDMwLDkuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDE1LjR2LjUzYzAsMTEtMTAsMTUuNjEtMTIsMTYuNDMtMi0uODItMTItNS40NC0xMi0xNi40M1Y5LjE0YTQ3LjU0LDQ3LjU0LDAsMCwwLDYuMTgtMi4yNSw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLTNjMSwu''@;'; put 'put ''NjQsMi4yLDEuMjcsMy40MywxLjg5bDEtMS43NGE0MS4xLDQxLjEsMCwwLDEtMy44OS0yLjE4TDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0''@;'; put 'put ''LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjE1LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAs''@;'; put 'put ''MCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41djIuNDNjMCwxMS0xMCwxNS42MS0xMiwxNi40My0yLS44Mi0xMi01LjQ0LTEyLTE2LjQzVjkuMTRhNDcuNTQsNDcuNTQsMCwwLDAsNi4xOC0yLjI1LDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODItMyw0Ni4xOSw0Ni4xOSwwLDAsMCw0LjUxLDIuNDJjMC0u''@;'; put 'put ''MSwwLS4xOSwwLS4yOWE3LjQ5LDcuNDksMCwwLDEsLjIzLTEuODMsNDEuNjEsNDEuNjEsMCwwLDEtNC4xOS0yLjMzTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMu''@;'; put 'put ''NjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xl''@;'; put 'put ''IGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjI1LDcuNGE0My43OSw0My43OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUsMCww''@;'; put 'put ''LDEtNi4wOC0zLjIxTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1Vjcu''@;'; put 'put ''NTlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMi40Myw0YTQxLjEsNDEuMSwwLDAsMS0zLjg5LTIuMThMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEt''@;'; put 'put ''Ni4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWMTUuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDcsNy40NywwLDAsMS03LjI3LTkuMzMsNDEuNjEsNDEuNjEsMCwwLDEtNC4xOS0yLjMzTDE4LDEuNWwtLjU0''@;'; put 'put ''LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwx''@;'; put 'put ''My41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''YmFkZ2UiLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZVNoaWVsZFg9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjI1LDcuNGE0My43OSw0My43OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUsMCwwLDEtNi4wOC0zLjIxTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0''@;'; put 'put ''My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjcuNTlaTTMwLDE1LjkzYzAsMTEtMTAsMTUuNjEtMTIsMTYuNDMtMi0uODItMTItNS40NC0x''@;'; put 'put ''Mi0xNi40M1Y5LjE0YTQ3LjU0LDQ3LjU0LDAsMCwwLDYuMTgtMi4yNSw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLTMsNDguMjMsNDguMjMsMCwwLDAsNS44MiwzQTQ3LjU0LDQ3LjU0LDAsMCwwLDMwLDkuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTIyLjgxLDEwLjc5LDE4LDE1LjYxbC00LjgxLTQuODFhMSwxLDAsMCwwLTEuNDEsMS40MUwxNi41OSwxN2wtNC44MSw0LjgxYTEsMSwwLDEsMCwxLjQxLDEuNDFMMTgsMTguNDNsNC44MSw0LjgxYTEsMSwwLDAsMCwxLjQxLTEuNDFMMTkuNDEsMTdsNC44''@;'; put 'put ''MS00LjgxYTEsMSwwLDAsMC0xLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjI1LDcuNGE0My43OSw0My43OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUsMCwwLDEtNi4wOC0zLjIxTDE4LDEuNWwt''@;'; put 'put ''LjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjcuNTlaTTI0LjUxLDIxLjU1YTEuNCwx''@;'; put 'put ''LjQsMCwwLDEtMiwyTDE4LDE5bC00LjUzLDQuNTNhMS40MywxLjQzLDAsMCwxLTIsMCwxLjQsMS40LDAsMCwxLDAtMkwxNiwxN2wtNC41My00LjUzYTEuNCwxLjQsMCwxLDEsMi0yTDE4LDE1bDQuNTMtNC41M2ExLjQsMS40LDAsMCwxLDIsMkwyMCwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZUltcG9ydD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjgsNEgxNC44N0w4LDEwLjg2VjE1aDJWMTMuNjFoNy42MVY2SDI4VjMwSDhhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCww''@;'; put 'put ''LDI4LDRaTTE2LDEySDEwdi0uMzJMMTUuNyw2SDE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45NCwyNi4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDE5LDIybC01LjY4LTUuNjhhMSwxLDAsMCwwLTEuNDEs''@;'; put 'put ''MS40MUwxNS4yLDIxSDNhMSwxLDAsMSwwLDAsMkgxNS4yM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuOTQsMjYuMjhhMSwxLDAsMSwwLDEuNDEsMS40MUwxOSwyMmwtNS42OC01LjY4YTEsMSwwLDAsMC0x''@;'; put 'put ''LjQxLDEuNDFMMTUuMiwyMUgzYTEsMSwwLDEsMCwwLDJIMTUuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDE1LjRWMzBIOGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAs''@;'; put 'put ''MCwyLTJWMTUuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAsMTMuNjFoNy42MVY2aDMuNjhsMS4xNS0ySDE0Ljg3TDgsMTAuODZWMTVoMlptMC0xLjkyTDE1LjcsNkgxNnY2''@;'; put 'put ''SDEwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgs''@;'; put 'put ''MTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuOTQsMjYuMjhhMSwxLDAsMSwwLDEu''@;'; put 'put ''NDEsMS40MUwxOSwyMmwtNS42OC01LjY4YTEsMSwwLDAsMC0xLjQxLDEuNDFMMTUuMiwyMUgzYTEsMSwwLDEsMCwwLDJIMTUuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwx''@;'; put 'put ''My4yMlYzMEg4YTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxMy41QTcuNDksNy40OSwwLDAsMSwyOCwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLDEzLjYx''@;'; put 'put ''aDcuNjFWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkgxNC44N0w4LDEwLjg2VjE1aDJabTAtMS45MkwxNS43LDZIMTZ2NkgxMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0i''@;'; put 'put ''MzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLDIxYTEsMSwwLDEsMCwwLDJIOFYyMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCw0SDE0Ljg3TDgsMTAuODZWMjFIMTUuMmwtMy4yNS0zLjI1YTEsMSwwLDAsMSwxLjQxLTEuNDFMMTksMjJsLTUuNjgsNS42OGExLDEsMCwwLDEtMS40MS0xLjQxTDE1LjIzLDIzSDh2N2EyLDIsMCwwLDAsMiwySDI4YTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMjgsNFpNMTYsMTJIMTB2LS4zMkwxNS42OSw2SDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMsMjFhMSwxLDAsMSwwLDAsMkg4VjIxWiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjIzLDE1LjRBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjIuNDUsNEgxNC44N0w4LDEwLjg2VjIxSDE1LjJsLTMuMjUtMy4yNWExLDEsMCwwLDEsMS40MS0xLjQxTDE5LDIy''@;'; put 'put ''bC01LjY4LDUuNjhhMSwxLDAsMCwxLTEuNDEtMS40MUwxNS4yMywyM0g4djdhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjE1LjRaTTE2LDEySDEwdi0uMzJMMTUuNjksNkgxNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLDIxYTEsMSwwLDEsMCwwLDJIOFYyMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMjIuNSw2YTcuNDksNy40OSwwLDAsMSwuMjgtMkgxNC44N0w4LDEwLjg2VjIxSDE1LjJsLTMuMjUtMy4yNWExLDEsMCwwLDEsMS40MS0xLjQxTDE5LDIybC01LjY4LDUuNjhhMSwxLDAsMCwxLTEuNDEtMS40MUwxNS4yMywyM0g4djdhMiwyLDAsMCwwLDIsMkgyOGEyLDIs''@;'; put 'put ''MCwwLDAsMi0yVjEzLjVBNy41LDcuNSwwLDAsMSwyMi41LDZaTTE2LDEySDEwdi0uMzJMMTUuNjksNkgxNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVFeHBvcnQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTYsMTMuNjFoNy42MVY2SDI0djguMzhoMlY2YTIsMiwwLDAsMC0yLTJI''@;'; put 'put ''MTAuODdMNCwxMC44N1YzMGEyLDIsMCwwLDAsMiwySDI0YTIsMiwwLDAsMCwyLTJINlptMC0xLjkyTDExLjY5LDZIMTJ2Nkg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4zMiwxNi4zNWExLDEsMCwwLDAt''@;'; put 'put ''MS40MSwxLjQxTDMwLjE2LDIxSDE4YTEsMSwwLDAsMCwwLDJIMzAuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDM0LDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4zMiwxNi4zNWExLDEs''@;'; put 'put ''MCwwLDAtMS40MSwxLjQxTDMwLjE2LDIxSDE4YTEsMSwwLDAsMCwwLDJIMzAuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDM0LDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik02LDEzLjYxaDcuNjFWNmg3LjY4bDEuMTUtMkgxMC44N0w0LDEwLjg3VjMwYTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMkg2Wm0wLTEuOTJMMTEuNjksNkgxMnY2SDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxl''@;'; put 'put ''cnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4zMiwxNi4zNWExLDEsMCwwLDAtMS40MSwxLjQxTDMwLjE2LDIxSDE4YTEsMSwwLDAsMCwwLDJIMzAuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAs''@;'; put 'put ''MS40MSwxLjQxTDM0LDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMTIuMzRhNy41Myw3LjUzLDAsMCwxLTItMS44NXYzLjg5aDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik02LDEzLjYxaDcuNjFWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkgxMC44N0w0LDEwLjg3VjMwYTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMkg2Wm0wLTEuOTJMMTEu''@;'; put 'put ''NjksNkgxMnY2SDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsMjJhMSwxLDAsMCwxLDEtMWg4VjZhMiwyLDAsMCwwLTItMkgxMC44N0w0LDEwLjg2VjMwYTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMlYyM0gxOEExLDEsMCwwLDEsMTcsMjJaTTEyLDEySDZ2''@;'; put 'put ''LS4zMkwxMS42OSw2SDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjMyLDE2LjM1YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzEuMTYsMjFIMjZ2Mmg1LjE5bC0zLjI4LDMuMjhhMSwxLDAsMSwwLDEuNDEsMS40MUwz''@;'; put 'put ''NSwyMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS4zMiwxNi4zNWExLDEsMCwwLDAtMS40MSwxLjQxTDMxLjE2LDIxSDI2djJoNS4xOWwtMy4yOCwzLjI4YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzUsMjJaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsMjJhMSwxLDAsMCwxLDEtMWg4VjE1LjRIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjIuNDUsNEgxMC44N0w0LDEwLjg2VjMwYTIsMiww''@;'; put 'put ''LDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMlYyM0gxOEExLDEsMCwwLDEsMTcsMjJaTTEyLDEySDZ2LS4zMkwxMS42OSw2SDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEu''@;'; put 'put ''MTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjMyLDE2LjM1YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzEuMTYsMjFIMjZ2Mmg1LjE5bC0zLjI4LDMuMjhhMSwxLDAsMSwwLDEuNDEsMS40MUwzNSwyMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsMjJhMSwxLDAsMCwxLDEtMWg4VjEyLjM0QTcuNDYsNy40NiwwLDAsMSwyMi43OCw0SDEwLjg3TDQsMTAuODZWMzBhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0yVjIzSDE4QTEsMSwwLDAsMSwxNywyMlpN''@;'; put 'put ''MTIsMTJINnYtLjMyTDExLjY5LDZIMTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxlLkNsclNoYXBlVXBsb2FkQ2xvdWQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLjMxLDEzYzAtLjEsMC0uMjEsMC0uMzJhMTAuMjYsMTAuMjYsMCwwLDAtMTAuNDUtMTAsMTAuNDcsMTAuNDcsMCwwLDAtOS42''@;'; put 'put ''LDYuMUE5Ljc0LDkuNzQsMCwwLDAsMS42LDE4LjQsOS42Miw5LjYyLDAsMCwwLDExLjI1LDI4SDE1VjI2SDExLjI1QTcuNjUsNy42NSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzYTguNDMsOC40MywwLDAsMSw4LTUuNCw4LjI2LDguMjYsMCwwLDEsOC40NSw4LDcuNzUsNy43NSwwLDAs''@;'; put 'put ''MSwwLC44bC0uMDguNzIuNjUuM0E2LDYsMCwwLDEsMjYuMzgsMjZIMjF2Mmg1LjM4YTgsOCwwLDAsMCwzLjkzLTE1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yOCwyMS44NUExLDEsMCwwLDAsMjMsMjAu''@;'; put 'put ''MTRsLTUtNS01LDVhMSwxLDAsMCwwLDEuNDEsMS40MUwxNywxOVYzMS4yNWExLDEsMCwxLDAsMiwwVjE5bDIuNTcsMi41N0ExLDEsMCwwLDAsMjIuMjgsMjEuODVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIy''@;'; put 'put ''LjI4LDIxLjg1QTEsMSwwLDAsMCwyMywyMC4xNGwtNS01LTUsNWExLDEsMCwwLDAsMS40MSwxLjQxTDE3LDE5VjMxLjI1YTEsMSwwLDEsMCwyLDBWMTlsMi41NywyLjU3QTEsMSwwLDAsMCwyMi4yOCwyMS44NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMy42LDE4LjM4QTcuNzEsNy43MSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzYTguNDMsOC40MywwLDAsMSw4LTUuNCw4LjgxLDguODEsMCwwLDEsMiwuMjVsMS0xLjhhMTAuOCwxMC44LDAsMCwwLTMuMDctLjQ1''@;'; put 'put ''LDEwLjQ3LDEwLjQ3LDAsMCwwLTkuNiw2LjFBOS43NCw5Ljc0LDAsMCwwLDEuNiwxOC40LDkuNjIsOS42MiwwLDAsMCwxMS4yNSwyOEgxNVYyNkgxMS4yNUE3LjY2LDcuNjYsMCwwLDEsMy42LDE4LjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi45LDE1LjRIMzAuMjFBNiw2LDAsMCwxLDI2LjM4LDI2SDIxdjJoNS4zOEE4LDgsMCwwLDAsMzIuOSwxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjgsMjEuODVBMSwxLDAsMCwwLDIzLDIwLjE0bC01LTUtNSw1YTEsMSwwLDAsMCwxLjQxLDEuNDFMMTcsMTlWMzEuMjVhMSwxLDAsMSwwLDIsMFYxOWwy''@;'; put 'put ''LjU3LDIuNTdBMSwxLDAsMCwwLDIyLjI4LDIxLjg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuOTIsMTMuNDRhNy4xMyw3LjEzLDAsMCwxLTIuNjMtLjE0YzAsLjA4LDAsLjE1''@;'; put 'put ''LDAsLjIzbC0uMDguNzIuNjUuM0E2LDYsMCwwLDEsMjYuMzgsMjZIMjF2Mmg1LjM4YTgsOCwwLDAsMCw0LjU0LTE0LjU2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMy42LDE4LjM4''@;'; put 'put ''QTcuNzEsNy43MSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzYTguNDMsOC40MywwLDAsMSw4LTUuNCw4Ljc5LDguNzksMCwwLDEsMi42OC40Miw3LjQ1LDcuNDUsMCwwLDEsLjUtMS45NCwxMC43OSwxMC43OSwwLDAsMC0zLjE4LS40OCwxMC40NywxMC40NywwLDAsMC05LjYsNi4xQTku''@;'; put 'put ''NzQsOS43NCwwLDAsMCwxLjYsMTguNCw5LjYyLDkuNjIsMCwwLDAsMTEuMjUsMjhIMTVWMjZIMTEuMjVBNy42Niw3LjY2LDAsMCwxLDMuNiwxOC4zOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNp''@;'; put 'put ''cmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZURvd25sb2FkQ2xvdWQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMw''@;'; put 'put ''LjMxLDEzYzAtLjEsMC0uMjEsMC0uMzJhMTAuMjYsMTAuMjYsMCwwLDAtMTAuNDUtMTAsMTAuNDcsMTAuNDcsMCwwLDAtOS42LDYuMUE5LjY1LDkuNjUsMCwwLDAsMTAuODksMjhhMywzLDAsMCwxLDAtMkE3LjY1LDcuNjUsMCwwLDEsMTEsMTAuNzRsLjY3LDAsLjIzLS42M2E4LjQzLDguNDMs''@;'; put 'put ''MCwwLDEsOC01LjQsOC4yNiw4LjI2LDAsMCwxLDguNDUsOCw3Ljc1LDcuNzUsMCwwLDEsMCwuOGwtLjA4LjcyLjY1LjNBNiw2LDAsMCwxLDI2LjM4LDI2SDI1LjA5YTMsMywwLDAsMSwwLDJoMS4yOGE4LDgsMCwwLDAsMy45My0xNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjgsMjYuMDdhMSwxLDAsMCwwLS43MS4yOUwxOSwyOC45NFYxNi42OGExLDEsMCwxLDAtMiwwVjI4Ljk0bC0yLjU3LTIuNTdBMSwxLDAsMCwwLDEzLDI3Ljc4bDUsNSw1LTVhMSwxLDAsMCwwLS43MS0xLjcxWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yOCwyNi4wN2ExLDEsMCwwLDAtLjcxLjI5TDE5LDI4Ljk0VjE2LjY4YTEsMSwwLDEsMC0yLDBWMjguOTRsLTIuNTctMi41N0ExLDEsMCwwLDAsMTMsMjcuNzhsNSw1LDUtNWEx''@;'; put 'put ''LDEsMCwwLDAtLjcxLTEuNzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5Ljg3LDQuNjlhOC44MSw4LjgxLDAsMCwxLDIsLjI1bDEtMS44YTEwLjgsMTAuOCwwLDAsMC0zLjA3''@;'; put 'put ''LS40NSwxMC40NywxMC40NywwLDAsMC05LjYsNi4xQTkuNjUsOS42NSwwLDAsMCwxMC44OSwyOGEzLDMsMCwwLDEsMC0yQTcuNjUsNy42NSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzQTguNDMsOC40MywwLDAsMSwxOS44Nyw0LjY5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi45LDE1LjRIMzAuMjFBNiw2LDAsMCwxLDI2LjM4LDI2SDI1LjA5YTMsMywwLDAsMSwwLDJoMS4yOEE4LDgsMCwwLDAsMzIuOSwxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAs''@;'; put 'put ''MjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjgsMjYuMDdhMSwxLDAsMCwwLS43MS4yOUwxOSwyOC45NFYxNi42OGExLDEsMCwxLDAt''@;'; put 'put ''MiwwVjI4Ljk0bC0yLjU3LTIuNTdBMSwxLDAsMCwwLDEzLDI3Ljc4bDUsNSw1LTVhMSwxLDAsMCwwLS43MS0xLjcxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuODcsNC42OWE4''@;'; put 'put ''Ljc5LDguNzksMCwwLDEsMi42OC40Miw3LjQ1LDcuNDUsMCwwLDEsLjUtMS45NCwxMC43OSwxMC43OSwwLDAsMC0zLjE4LS40OCwxMC40NywxMC40NywwLDAsMC05LjYsNi4xQTkuNjUsOS42NSwwLDAsMCwxMC44OSwyOGEzLDMsMCwwLDEsMC0yQTcuNjUsNy42NSwwLDAsMSwxMSwxMC43NGwu''@;'; put 'put ''NjcsMCwuMjMtLjYzQTguNDMsOC40MywwLDAsMSwxOS44Nyw0LjY5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuOTIsMTMuNDRhNy4xMyw3LjEzLDAsMCwxLTIuNjMtLjE0YzAs''@;'; put 'put ''LjA4LDAsLjE1LDAsLjIzbC0uMDguNzIuNjUuM0E2LDYsMCwwLDEsMjYuMzgsMjZIMjUuMDlhMywzLDAsMCwxLDAsMmgxLjI4YTgsOCwwLDAsMCw0LjU0LTE0LjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxlLkNsclNoYXBlUGx1Z2luPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0y''@;'; put 'put ''OS44MSwxNkgyOVY4LjgzYTIsMiwwLDAsMC0yLTJIMjFBNS4xNCw1LjE0LDAsMCwwLDE2LjUxLDIsNSw1LDAsMCwwLDExLDYuODNINGEyLDIsMCwwLDAtMiwyVjE3SDQuODFBMy4xMywzLjEzLDAsMCwxLDgsMTkuNjksMywzLDAsMCwxLDcuMjIsMjIsMywzLDAsMCwxLDUsMjNIMnY4LjgzYTIs''@;'; put 'put ''MiwwLDAsMCwyLDJIMjdhMiwyLDAsMCwwLDItMlYyNmgxYTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDI5LjgxLDE2Wm0yLjQxLDdBMywzLDAsMCwxLDMwLDI0SDI3djcuODNINFYyNUg1YTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDQuODEsMTVINFY4LjgzaDlW''@;'; put 'put ''N2EzLDMsMCwwLDEsMS0yLjIyQTMsMywwLDAsMSwxNi4zMSw0LDMuMTMsMy4xMywwLDAsMSwxOSw3LjE5VjguODNoOFYxOGgyLjgxQTMuMTMsMy4xMywwLDAsMSwzMywyMC42OSwzLDMsMCwwLDEsMzIuMjIsMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjgxLDE2SDI5di0uNkgyN1YxOGgyLjgxQTMuMTMsMy4xMywwLDAsMSwzMywyMC42OSwzLDMsMCwwLDEsMzIuMjIsMjMsMywzLDAsMCwxLDMwLDI0SDI3djcuODNINFYyNUg1YTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDQuODEs''@;'; put 'put ''MTVINFY4LjgzaDlWN2EzLDMsMCwwLDEsMS0yLjIyQTMsMywwLDAsMSwxNi4zMSw0LDMuMTMsMy4xMywwLDAsMSwxOSw3LjE5VjguODNoLjY2TDIxLDYuNTlBNS4xMiw1LjEyLDAsMCwwLDE2LjUxLDIsNSw1LDAsMCwwLDExLDYuODNINGEyLDIsMCwwLDAtMiwyVjE3SDQuODFBMy4xMywzLjEz''@;'; put 'put ''LDAsMCwxLDgsMTkuNjksMywzLDAsMCwxLDcuMjIsMjIsMywzLDAsMCwxLDUsMjNIMnY4LjgzYTIsMiwwLDAsMCwyLDJIMjdhMiwyLDAsMCwwLDItMlYyNmgxYTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDI5LjgxLDE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUs''@;'; put 'put ''MS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuODEsMTZIMjlWMTMuNDNhNy40NSw3LjQ1LDAsMCwxLTItLjU1VjE4aDIuODFBMy4xMywzLjEzLDAs''@;'; put 'put ''MCwxLDMzLDIwLjY5LDMsMywwLDAsMSwzMi4yMiwyMywzLDMsMCwwLDEsMzAsMjRIMjd2Ny44M0g0VjI1SDVhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsNC44MSwxNUg0VjguODNoOVY3YTMsMywwLDAsMSwxLTIuMjJBMywzLDAsMCwxLDE2LjMxLDQsMy4xMywzLjEzLDAsMCwx''@;'; put 'put ''LDE5LDcuMTlWOC44M2g0LjA2YTcuNDQsNy40NCwwLDAsMS0uNTEtMkgyMUE1LjE0LDUuMTQsMCwwLDAsMTYuNTEsMiw1LDUsMCwwLDAsMTEsNi44M0g0YTIsMiwwLDAsMC0yLDJWMTdINC44MUEzLjEzLDMuMTMsMCwwLDEsOCwxOS42OSwzLDMsMCwwLDEsNy4yMiwyMiwzLDMsMCwwLDEsNSwy''@;'; put 'put ''M0gydjguODNhMiwyLDAsMCwwLDIsMkgyN2EyLDIsMCwwLDAsMi0yVjI2aDFhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsMjkuODEsMTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxj''@;'; put 'put ''aXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuODEsMTZIMjlWOC44M2EyLDIsMCwwLDAtMi0ySDIxQTUuMTQsNS4x''@;'; put 'put ''NCwwLDAsMCwxNi41MSwyLDUsNSwwLDAsMCwxMSw2LjgzSDRhMiwyLDAsMCwwLTIsMlYxN0g0LjgxQTMuMTMsMy4xMywwLDAsMSw4LDE5LjY5LDMsMywwLDAsMSw3LjIyLDIyLDMsMywwLDAsMSw1LDIzSDJ2OC44M2EyLDIsMCwwLDAsMiwySDI3YTIsMiwwLDAsMCwyLTJWMjZoMWE1LDUsMCww''@;'; put 'put ''LDAsNS01LjUxQTUuMTUsNS4xNSwwLDAsMCwyOS44MSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS44MSwxNkgyOXYtLjZIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjEsNi41OUE1LjEyLDUuMTIs''@;'; put 'put ''MCwwLDAsMTYuNTEsMiw1LDUsMCwwLDAsMTEsNi44M0g0YTIsMiwwLDAsMC0yLDJWMTdINC44MUEzLjEzLDMuMTMsMCwwLDEsOCwxOS42OSwzLDMsMCwwLDEsNy4yMiwyMiwzLDMsMCwwLDEsNSwyM0gydjguODNhMiwyLDAsMCwwLDIsMkgyN2EyLDIsMCwwLDAsMi0yVjI2aDFhNSw1LDAsMCww''@;'; put 'put ''LDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsMjkuODEsMTZaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMu''@;'; put 'put ''NjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjku''@;'; put 'put ''ODEsMTZIMjlWMTMuNDNhNy41LDcuNSwwLDAsMS02LjQ1LTYuNTlIMjFBNS4xNCw1LjE0LDAsMCwwLDE2LjUxLDIsNSw1LDAsMCwwLDExLDYuODNINGEyLDIsMCwwLDAtMiwyVjE3SDQuODFBMy4xMywzLjEzLDAsMCwxLDgsMTkuNjksMywzLDAsMCwxLDcuMjIsMjIsMywzLDAsMCwxLDUsMjNI''@;'; put 'put ''MnY4LjgzYTIsMiwwLDAsMCwyLDJIMjdhMiwyLDAsMCwwLDItMlYyNmgxYTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDI5LjgxLDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUg''@;'; put 'put ''Y3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZUZsb3BweT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcuMzYsNEg2QTIsMiwwLDAs''@;'; put 'put ''MCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjguNzhaTTI1LDMwSDExVjIySDI1Wm01LDBIMjdWMjJhMiwyLDAsMCwwLTItMkgxMWEyLDIsMCwwLDAtMiwydjhINlY2aDR2NmEyLDIsMCwwLDAsMiwySDI0YTIsMiwwLDAsMCwyLTJIMTJWNkgyNi41MUwzMCw5LjU5WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWgwVjMwSDI3VjIyYTIsMiwwLDAsMC0yLTJIMTFhMiwyLDAsMCwwLTIsMnY4SDZWNmg0djZhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0xLjY4bC0u''@;'; put 'put ''NDMtLjNIMTJWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41Wk0yNSwzMEgxMVYyMkgyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0zMCwxNS40VjMwSDI3VjIyYTIsMiwwLDAsMC0yLTJIMTFhMiwyLDAsMCwwLTIsMnY4SDZWNmg0djZhMiwyLDAsMCwwLDIsMmg3LjM1YTMuNTQsMy41NCwwLDAsMS0uNzctMkgxMlY2aDkuMjlsMS4xNS0ySDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAs''@;'; put 'put ''MCwyLTJWMTUuNFpNMjUsMzBIMTFWMjJIMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0y''@;'; put 'put ''Ny4zNiw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWOC43OFpNMjYsMzBIMTBWMjEuNUExLjUsMS41LDAsMCwxLDExLjUsMjBoMTNBMS41LDEuNSwwLDAsMSwyNiwyMS41Wk0yNCwxNEgxMmEyLDIsMCwwLDEtMi0yVjZoMnY2SDI2QTIsMiwwLDAs''@;'; put 'put ''MSwyNCwxNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDYsNy40NiwwLDAsMS00LTEuMThBMiwyLDAsMCwxLDI0LDE0SDEyYTIsMiwwLDAsMS0yLTJWNmgydjZIMjUuNTRhNy40NSw3LjQ1LDAsMCwx''@;'; put 'put ''LTIuNzYtOEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41Wk0yNiwzMEgxMFYyMS41QTEuNSwxLjUsMCwwLDEsMTEuNSwyMGgxM0ExLjUsMS41LDAsMCwxLDI2LDIxLjVaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTIyLjIzLDE1LjRBMy42OSwzLjY5LDAsMCwxLDE5LjM1LDE0SDEyYTIsMiwwLDAsMS0yLTJWNmgydjZoNi41OEEzLjY3LDMuNjcsMCwwLDEsMTksOS44OUwyMi40NSw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTUuNFpN''@;'; put 'put ''MjYsMzBIMTBWMjEuNUExLjUsMS41LDAsMCwxLDExLjUsMjBoMTNBMS41LDEuNSwwLDAsMSwyNiwyMS41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFB''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCBjbHItaS1hbGVydCIv''@;'; put 'put ''PlxuICAgICAgICAnKSxlLkNsclNoYXBlQ29tcHV0ZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBvbHlnb24gcG9pbnRzPSI5LjYgMjIuODggOS42IDEwLjYgMjQuNCAxMC42IDI1Ljk4IDkgOCA5IDggMjIuODggOS42IDIyLjg4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTYsN0gzMFYyM2gyVjYuNUExLjUsMS41LDAsMCwwLDMwLjUsNUg1LjVBMS41LDEuNSwwLDAsMCw0LDYuNVYyM0g2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0xLDI1djMuNEEyLjYsMi42LDAsMCwwLDMuNiwzMUgzMi4zNGEyLjYsMi42LDAsMCwwLDIuNi0yLjZWMjVabTMyLDMuNGEuNi42LDAsMCwxLS42LjZIMy41NmEuNi42LDAsMCwxLS42LS42VjI2LjUzaDkuOTVhMS42NCwxLjY0LDAsMCwwLDEuNSwxaDcuMTNhMS42NCwxLjY0LDAsMCwwLDEu''@;'; put 'put ''NS0xSDMzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDI1djMuNEEyLjYsMi42LDAsMCwwLDMuNiwzMUgzMi4zNGEyLjYsMi42LDAsMCwwLDIuNi0yLjZWMjVabTMyLDMuNGEuNi42LDAsMCwxLS42LjZIMy41''@;'; put 'put ''NmEuNi42LDAsMCwxLS42LS42VjI2LjUzaDkuOTVhMS42NCwxLjY0LDAsMCwwLDEuNSwxaDcuMTNhMS42NCwxLjY0LDAsMCwwLDEuNS0xSDMzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik05LjYsMjIuODhWMTAuNmg5LjE0QTMuNjQsMy42NCwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIOFYyMi44OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNiw3SDIwLjcxbDEu''@;'; put 'put ''MTUtMkg1LjVBMS41LDEuNSwwLDAsMCw0LDYuNVYyM0g2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjMwIiB5PSIxNS40IiB3aWR0aD0iMiIgaGVpZ2h0PSI3LjYiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRB''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEsMjV2My40QTIuNiwyLjYsMCwwLDAsMy42LDMxSDMyLjM0YTIu''@;'; put 'put ''NiwyLjYsMCwwLDAsMi42LTIuNlYyNVptMzIsMy40YS42LjYsMCwwLDEtLjYuNkgzLjU2YS42LjYsMCwwLDEtLjYtLjZWMjYuNTNoOS45NWExLjY0LDEuNjQsMCwwLDAsMS41LDFoNy4xM2ExLjY0LDEuNjQsMCwwLDAsMS41LTFIMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41LDZhNy41Miw3LjUyLDAsMCwxLC4wNy0xSDUuNUExLjUsMS41LDAsMCwwLDQsNi41VjIzSDZWN0gyMi41N0E3LjUyLDcuNTIsMCwwLDEsMjIuNSw2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNVYyM2gyVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2Vk''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMTMsOUg4VjIyLjg4SDkuNlYxMC42SDI0LjA4QTcuNDksNy40OSwwLDAsMSwyMy4xMyw5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xl''@;'; put 'put ''IGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjgxLDI2Yy0uMzUuOS0uOTQsMS41LTEuNjEsMS41SDEzLjc0Yy0uNjgsMC0x''@;'; put 'put ''LjI2LS42LTEuNjEtMS41SDF2MS43NUEyLjQ1LDIuNDUsMCwwLDAsMy42LDMwSDMyLjRBMi40NSwyLjQ1LDAsMCwwLDM1LDI3Ljc1VjI2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTcsMTBIMjlWMjRoM1Y3LjU3QTEu''@;'; put 'put ''NTQsMS41NCwwLDAsMCwzMC41LDZINS41QTEuNTQsMS41NCwwLDAsMCw0LDcuNTdWMjRIN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy44MSwyNmMtLjM1LjktLjk0LDEuNS0xLjYxLDEuNUgxMy43NGMtLjY4LDAt''@;'; put 'put ''MS4yNi0uNi0xLjYxLTEuNUgxdjEuNzVBMi40NSwyLjQ1LDAsMCwwLDMuNiwzMEgzMi40QTIuNDUsMi40NSwwLDAsMCwzNSwyNy43NVYyNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI5''@;'; put 'put ''IiB5PSIxNS40IiB3aWR0aD0iMyIgaGVpZ2h0PSI4LjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik03LDEwSDE5TDE5LDkuODksMjEuMjksNkg1LjVBMS41NCwxLjU0LDAsMCwwLDQsNy41''@;'; put 'put ''N1YyNEg3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwx''@;'; put 'put ''MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjgxLDI2Yy0uMzUuOS0uOTQsMS41LTEuNjEs''@;'; put 'put ''MS41SDEzLjc0Yy0uNjgsMC0xLjI2LS42LTEuNjEtMS41SDF2MS43NUEyLjQ1LDIuNDUsMCwwLDAsMy42LDMwSDMyLjRBMi40NSwyLjQ1LDAsMCwwLDM1LDI3Ljc1VjI2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik03LDEwSDIzLjY2QTcuNDYsNy40NiwwLDAsMSwyMi41LDZINS41QTEuNTQsMS41NCwwLDAsMCw0LDcuNTdWMjRIN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIs''@;'; put 'put ''MTMuMjJhNy4xNCw3LjE0LDAsMCwxLTMsLjJWMjRoM1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVEaXNwbGF5PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMi41LDNIMy41QTEuNSwxLjUsMCwwLDAsMiw0LjV2MjFBMS41LDEuNSwwLDAsMCwzLjUsMjdoMjlBMS41LDEuNSwwLDAs''@;'; put 'put ''MCwzNCwyNS41VjQuNUExLjUsMS41LDAsMCwwLDMyLjUsM1pNMzIsMjVINFY1SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iNy43IDguNzYgMjguMTMgOC43NiAyOS45NCA3LjE2IDYuMSA3LjE2''@;'; put 'put ''IDYuMSAyMyA3LjcgMjMgNy43IDguNzYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDIxLjI0VjI5LjVBNC4yLDQuMiwwLDAsMCwyMi4x''@;'; put 'put ''NywzMkgxMy44M2E0LjIsNC4yLDAsMCwwLC45My0yLjUyVjI4LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0LDMySDkuOTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAsMCwyNiwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDIxLjI0VjI5LjVBNC4yLDQuMiwwLDAsMCwyMi4xNywzMkgxMy44M2E0LjIsNC4yLDAsMCwwLC45My0yLjUyVjI4LjEzSDEzLjI0VjI5LjVBMy42''@;'; put 'put ''MSwzLjYxLDAsMCwxLDExLjc0LDMySDkuOTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAsMCwyNiwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMzMuNjgsMTUuNEgzMlYyNUg0VjVIMjEuODdMMjMsM0gzLjVBMS41LDEuNSwwLDAsMCwyLDQuNXYyMUExLjUsMS41LDAsMCwwLDMuNSwyN2gyOUExLjUsMS41LDAsMCwwLDM0LDI1LjVWMTUuMzhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''Mi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI3LjcgMjMgNy43IDguNzYgMTkuNyA4Ljc2IDIwLjYyIDcuMTYgNi4xIDcuMTYgNi4xIDIzIDcuNyAyMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDIxLjI0VjI5LjVBNC4yLDQuMiwwLDAsMCwyMi4xNywzMkgxMy44M2E0LjIsNC4y''@;'; put 'put ''LDAsMCwwLC45My0yLjUyVjI4LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0LDMySDkuOTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAsMCwyNiwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTYuMSwyM0g3LjdWOC43NkgyM2E3LjQ0LDcuNDQsMCwwLDEtLjQzLTEuNkg2LjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0zMiwxMy4yMlYyNUg0VjVIMjIuNTdhNy40NSw3LjQ1LDAsMCwxLC41NS0ySDMuNUExLjUsMS41LDAsMCwwLDIsNC41djIxQTEuNSwxLjUsMCwwLDAsMy41LDI3aDI5QTEuNSwxLjUsMCwwLDAsMzQsMjUuNVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0LDMySDkuOTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAsMCwyNiwzMloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi41LDNIMy41QTEuNSwxLjUsMCwwLDAsMiw0LjV2MjFBMS41LDEuNSwwLDAsMCwzLjUsMjdoMjlBMS41LDEuNSwwLDAsMCwzNCwyNS41VjQuNUExLjUsMS41LDAsMCwwLDMyLjUs''@;'; put 'put ''M1pNMzEsMjEuODNINVY3SDMxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LDMySDI0LjI2YTMuNjEsMy42MSwwLDAsMS0xLjUtMi41MlYyOC4xM0gxMy4yNFYyOS41QTMuNjEsMy42MSwwLDAsMSwxMS43NCwzMkg5''@;'; put 'put ''Ljk0YTEsMSwwLDEsMCwwLDJIMjYuMDZhLjkyLjkyLDAsMCwwLDEtMUExLDEsMCwwLDAsMjYsMzJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMXY2LjQzSDVWN0gy''@;'; put 'put ''MC43MUwyMywzSDMuNUExLjUsMS41LDAsMCwwLDIsNC41djIxQTEuNSwxLjUsMCwwLDAsMy41LDI3aDI5QTEuNSwxLjUsMCwwLDAsMzQsMjUuNVYxNS4zOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMkgyNC4yNmEzLjYxLDMuNjEsMCwwLDEtMS41LTIuNTJWMjguMTNIMTMuMjRWMjkuNUEzLjYxLDMuNjEsMCwwLDEsMTEuNzQsMzJIOS45NGExLDEsMCwxLDAsMCwySDI2LjA2YS45Mi45Miww''@;'; put 'put ''LDAsMCwxLTFBMSwxLDAsMCwwLDI2LDMyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMSwxMy40M3Y4LjQxSDVWN0gyMi41N2E3LjI5LDcuMjksMCwwLDEsLjU1LTRIMy41QTEuNSwxLjUs''@;'; put 'put ''MCwwLDAsMiw0LjV2MjFBMS41LDEuNSwwLDAsMCwzLjUsMjdoMjlBMS41LDEuNSwwLDAsMCwzNCwyNS41VjEyLjM0QTcuNDQsNy40NCwwLDAsMSwzMSwxMy40M1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVUZXJtaW5hbD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNUg0QTIs''@;'; put 'put ''MiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjdBMiwyLDAsMCwwLDMyLDVaTTQsN0gzMlY5LjJINFpNNCwyOVYxMC44SDMyVjI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIx''@;'; put 'put ''NyIgeT0iMjMiIHdpZHRoPSI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI3IDE1LjY4IDEzLjc5IDE4LjggNyAyMS45MSA3IDI0LjExIDE2LjYgMTkuNyAxNi42IDE3Ljg5IDcg''@;'; put 'put ''MTMuNDggNyAxNS42OCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNyIgeT0iMjMiIHdpZHRoPSI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI3IDI0LjExIDE2LjYgMTkuNyAxNi42IDE3Ljg5IDcgMTMuNDggNyAxNS42OCAxMy43OSAxOC44IDcgMjEuOTEgNyAyNC4xMSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMlYyOUg0VjEwLjhIMTguNjhBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlsLjQtLjY5SDRWN0gyMC43MWwxLjE1LTJINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlYxNS4zOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwz''@;'; put 'put ''NC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTciIHk9IjIzIiB3aWR0aD0i''@;'; put 'put ''NiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjcgMjQuMTEgMTYuNiAxOS43IDE2LjYgMTcuODkgNyAxMy40OCA3IDE1LjY4IDEzLjc5IDE4LjggNyAy''@;'; put 'put ''MS45MSA3IDI0LjExIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJWMjlINFYxMC44SDI0LjI0YTcuNTEsNy41MSwwLDAsMS0xLTEuNkg0VjdIMjIuNTdhNy41Miw3LjUy''@;'; put 'put ''LDAsMCwxLS4wNy0xLDcuNTIsNy41MiwwLDAsMSwuMDctMUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw1SDRBMiwy''@;'; put 'put ''LDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIsNVpNNi44LDE1LjgxVjEzLjE3bDEwLDQuNTl2Mi4wOGwtMTAsNC41OVYyMS43OGw2LjUxLTNaTTIzLjQsMjUuNEgxN1YyM2g2LjRaTTQsOS4yVjdIMzJWOS4yWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bC40LS42OUg0VjdIMjAuNzFsMS4xNS0ySDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwy''@;'; put 'put ''LTJWMTUuMzhaTTE2LjgsMTkuODNsLTEwLDQuNTlWMjEuNzhsNi41MS0zLTYuNTEtM1YxMy4xN2wxMCw0LjU5Wm02LjYsNS41N0gxN1YyM2g2LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ5LDcuNDksMCwwLDEtNi43OC00LjNINFY3SDIyLjU3YTcuNTIsNy41MiwwLDAsMS0uMDctMSw3LjUyLDcuNTIsMCwwLDEsLjA3LTFINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAs''@;'; put 'put ''MCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNMTYuOCwxOS44M2wtMTAsNC41OVYyMS43OGw2LjUxLTMtNi41MS0zVjEzLjE3bDEwLDQuNTlabTYuNiw1LjU3SDE3VjIzaDYuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVDb2RlPSgw''@;'; put 'put ''LGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMy43MSwxMi41OWExLDEsMCwwLDAtMS4zOS0uMjZMNS43OSwxNi43OGExLDEsMCwwLDAsMCwxLjY1bDYuNTMsNC40NWExLDEsMCwxLDAsMS4xMy0xLjY1TDguMTMsMTcuNjEsMTMuNDUsMTRBMSwxLDAsMCwwLDEzLjcxLDEyLjU5WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuMjEsMTYuNzhsLTYuNTMtNC40NUExLDEsMCwxLDAsMjIuNTUsMTRsNS4zMiwzLjYzLTUuMzIsMy42M2ExLDEsMCwwLDAsMS4xMywxLjY1bDYuNTMtNC40NWExLDEsMCwwLDAs''@;'; put 'put ''MC0xLjY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuOTQsOS44M2EuOS45LDAsMCwwLTEuMDkuNjZMMTUuNDEsMjQuMjlhLjkuOSwwLDAsMCwuNjYsMS4wOWwuMjIsMGEuOS45LDAsMCwwLC44Ny0uNjhs''@;'; put 'put ''My40NC0xMy44MUEuOS45LDAsMCwwLDE5Ljk0LDkuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy43MSwxMi41OWExLDEsMCwwLDAtMS4zOS0uMjZMNS43OSwxNi43OGExLDEsMCwwLDAsMCwxLjY1bDYu''@;'; put 'put ''NTMsNC40NWExLDEsMCwxLDAsMS4xMy0xLjY1TDguMTMsMTcuNjEsMTMuNDUsMTRBMSwxLDAsMCwwLDEzLjcxLDEyLjU5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguNTYs''@;'; put 'put ''MTEuNjIsMTUuNDEsMjQuMjlhLjkuOSwwLDAsMCwuNjYsMS4wOWwuMjIsMGEuOS45LDAsMCwwLC44Ny0uNjhMMTkuNzMsMTQuNGEzLjU5LDMuNTksMCwwLDEtMS4xNi0yLjc5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuMjEsMTYuNzhsLTItMS4zOEgyNC42NGwzLjI0LDIuMjEtNS4zMiwzLjYzYTEsMSwwLDAsMCwxLjEzLDEuNjVsNi41My00LjQ1YTEsMSwwLDAsMCwwLTEuNjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy43MSwxMi41OWExLDEsMCwwLDAtMS4zOS0uMjZMNS43OSwxNi43OGExLDEsMCwwLDAsMCwxLjY1bDYuNTMsNC40NWExLDEs''@;'; put 'put ''MCwxLDAsMS4xMy0xLjY1TDguMTMsMTcuNjEsMTMuNDUsMTRBMSwxLDAsMCwwLDEzLjcxLDEyLjU5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjIxLDE2Ljc4bC02LjUzLTQu''@;'; put 'put ''NDVBMSwxLDAsMSwwLDIyLjU1LDE0bDUuMzIsMy42My01LjMyLDMuNjNhMSwxLDAsMCwwLDEuMTMsMS42NWw2LjUzLTQuNDVhMSwxLDAsMCwwLDAtMS42NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0xOS45NCw5LjgzYS45LjksMCwwLDAtMS4wOS42NkwxNS40MSwyNC4yOWEuOS45LDAsMCwwLC42NiwxLjA5bC4yMiwwYS45LjksMCwwLDAsLjg3LS42OGwzLjQ0LTEzLjgxQS45LjksMCwwLDAsMTkuOTQsOS44M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgJyksZS5DbHJT''@;'; put 'put ''aGFwZUFwcGxpY2F0aW9uPSgwLGEuY2xySWNvblNWRykoJzxyZWN0IHg9IjUiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOSIgeT0iNyIgd2lkdGg9IjIiIGhlaWdo''@;'; put 'put ''dD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMyIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMzIsNEg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMyLDRaTTQsNkgzMnY0LjJINFpNNCwzMFYxMS44SDMyVjMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMzIsNEg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMyLDRabTAsNi4ySDRWNkgzMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVj''@;'; put 'put ''dCB4PSI1IiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOSIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEzIiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPlxuICAgICAgICAnKSxlLkNsclNoYXBlQmF0dGVyeT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTguNTks''@;'; put 'put ''MTEuNzdhMSwxLDAsMCwwLTEuNzMsMWwyLjUsNC4zNC02LjA3LTEsNS4yOSwxMC41OWExLDEsMCwwLDAsMS43OS0uODlsLTMuNTMtNy4wOCw2LjM4LDEuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNS4x''@;'; put 'put ''Miw0SDIzVjMuNThBMS41OCwxLjU4LDAsMCwwLDIxLjQyLDJIMTQuNThBMS41OCwxLjU4LDAsMCwwLDEzLDMuNThWNEgxMC44OEExLjg4LDEuODgsMCwwLDAsOSw1Ljg4VjMyLjEyQTEuODgsMS44OCwwLDAsMCwxMC44OCwzNEgyNS4xMkExLjg4LDEuODgsMCwwLDAsMjcsMzIuMTJWNS44OEEx''@;'; put 'put ''Ljg4LDEuODgsMCwwLDAsMjUuMTIsNFpNMjUsMzJIMTFWNmg0VjRoNlY2aDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC41OSwxMS43N2ExLDEsMCwwLDAtMS43MywxbDIuNSw0LjM0LTYuMDctMSw1LjI5''@;'; put 'put ''LDEwLjU5YTEsMSwwLDAsMCwxLjc5LS44OWwtMy41My03LjA4LDYuMzgsMS4wNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4''@;'; put 'put ''LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTI1LDE1LjRWMzJIMTFWNmg0VjRoNlY2aC4yOGwxLjY0LTIuODVBMS41NywxLjU3LDAsMCwwLDIxLjQyLDJIMTQuNThBMS41OCwxLjU4LDAsMCwwLDEzLDMuNThWNEgxMC44OEExLjg4LDEuODgsMCwwLDAsOSw1Ljg4VjMyLjEyQTEuODgsMS44OCwwLDAs''@;'; put 'put ''MCwxMC44OCwzNEgyNS4xMkExLjg4LDEuODgsMCwwLDAsMjcsMzIuMTJWMTUuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjU5LDExLjc3YTEsMSwwLDAsMC0xLjczLDFsMi41LDQuMzQtNi4wNy0xLDUuMjksMTAuNTlhMSwxLDAsMCwwLDEuNzktLjg5bC0z''@;'; put 'put ''LjUzLTcuMDgsNi4zOCwxLjA2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LDExLjU4VjMySDExVjZoNFY0aDZWNkgyMi41QTcuNDcsNy40NywwLDAsMSwyMywzLjM4LDEuNTcs''@;'; put 'put ''MS41NywwLDAsMCwyMS40MiwySDE0LjU4QTEuNTgsMS41OCwwLDAsMCwxMywzLjU4VjRIMTAuODhBMS44OCwxLjg4LDAsMCwwLDksNS44OFYzMi4xMkExLjg4LDEuODgsMCwwLDAsMTAuODgsMzRIMjUuMTJBMS44OCwxLjg4LDAsMCwwLDI3LDMyLjEyVjEyLjg3QTcuNSw3LjUsMCwwLDEsMjUs''@;'; put 'put ''MTEuNThaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNFYyLjYyQS42LjYsMCwwLDAsMjEuNDIsMkgxNC41OGEuNi42LDAsMCwwLS41OC42MlY0SDEwQTEuMDksMS4wOSwwLDAs''@;'; put 'put ''MCw5LDUuMDd2MjhBMSwxLDAsMCwwLDEwLDM0SDI2YTEsMSwwLDAsMCwxLS45NHYtMjhBMS4wOSwxLjA5LDAsMCwwLDI2LDRaTTIwLjI2LDI1LjQ0YTEuMiwxLjIsMCwwLDEtMi4xNSwxLjA3TDEyLjY1LDE1LjU2bDYsMS0yLjI5LTRhMS4yLDEuMiwwLDEsMSwyLjA4LTEuMmw0LjgzLDguMzdM''@;'; put 'put ''MTYuOSwxOC43WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEEx''@;'; put 'put ''LjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjIzLDE1LjRBMy42NiwzLjY2LDAsMCwxLDIwLjU1LDE1bDIuNzYs''@;'; put 'put ''NC43OUwxNi45LDE4LjdsMy4zNiw2LjczYTEuMiwxLjIsMCwwLDEtMi4xNSwxLjA3TDEyLjY1LDE1LjU2bDYsMS0yLjI5LTRhMS4yLDEuMiwwLDEsMSwyLjA4LTEuMmwuMDkuMTVBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlMMjIuNDUsNEgyMlYyLjYyQS42LjYsMCwwLDAsMjEuNDIsMkgxNC41''@;'; put 'put ''OGEuNi42LDAsMCwwLS41OC42MlY0SDEwQTEuMDksMS4wOSwwLDAsMCw5LDUuMDd2MjhBMSwxLDAsMCwwLDEwLDM0SDI2YTEsMSwwLDAsMCwxLS45NFYxNS40WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjUsNmE3LjQ5LDcuNDksMCwwLDEsLjI4LTJIMjJWMi42MkEuNi42''@;'; put 'put ''LDAsMCwwLDIxLjQyLDJIMTQuNThhLjYuNiwwLDAsMC0uNTguNjJWNEgxMEExLjA5LDEuMDksMCwwLDAsOSw1LjA3djI4QTEsMSwwLDAsMCwxMCwzNEgyNmExLDEsMCwwLDAsMS0uOTRWMTIuODdBNy41LDcuNSwwLDAsMSwyMi41LDZaTTIwLjI2LDI1LjQ0YTEuMiwxLjIsMCwwLDEtMi4xNSwx''@;'; put 'put ''LjA3TDEyLjY1LDE1LjU2bDYsMS0yLjI5LTRhMS4yLDEuMiwwLDEsMSwyLjA4LTEuMmw0LjgzLDguMzdMMTYuOSwxOC43WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVNb2JpbGU9KDAsYS5j''@;'; put 'put ''bHJJY29uU1ZHKSgnPHBhdGggZD0iTTI1LDRIMTFBMiwyLDAsMCwwLDksNlYzMGEyLDIsMCwwLDAsMiwySDI1YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMjUsNFpNMTEsNkgyNVYyNEgxMVptMCwyNFYyNkgyNXY0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNyIgeT0iMjciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LDRIMTFBMiwyLDAsMCwwLDksNlYzMGEyLDIsMCwwLDAs''@;'; put 'put ''MiwySDI1YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMjUsNFpNMTksMzBIMTdWMjhoMlptLTgtNFY2SDI1VjI2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZVRhYmxldD0oMCxhLmNsckljb25TVkcpKCc8cmVjdCB4''@;'; put 'put ''PSIxNyIgeT0iMjkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDJINkEyLDIsMCwwLDAsNCw0VjMyYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlY0QTIsMiww''@;'; put 'put ''LDAsMCwzMCwyWm0wLDJWMjYuMzhINlY0Wk02LDMyVjI4SDMwdjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwySDZBMiwyLDAsMCwwLDQsNFYzMmEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJW''@;'; put 'put ''NEEyLDIsMCwwLDAsMzAsMlpNMTksMzJIMTdWMzBoMlpNNiwyOFY0SDMwVjI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZU5ldHdvcmtHbG9iZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYuNTgsMzJoLTE4''@;'; put 'put ''YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3Ljc1LDJhMTQsMTQsMCwwLDAtMTQsMTRjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMEExNCwxNCwwLDEs''@;'; put 'put ''MCwxNy43NSwyWm0wLDJhMTIsMTIsMCwwLDEsOC40NCwzLjQ4YzAsLjMzLDAsLjY2LDAsMUExOC41MSwxOC41MSwwLDAsMCwxNCw4LjUzYTIuMzMsMi4zMywwLDAsMC0xLjE0LS42MWwtLjI1LDBjLS4xMi0uNDItLjIzLS44NC0uMzItMS4yN3MtLjE0LS44MS0uMTktMS4yMkExMS45MiwxMS45''@;'; put 'put ''MiwwLDAsMSwxNy43NSw0Wm0tMyw1Ljg3QTE3LDE3LDAsMCwxLDI1LjkyLDEwYTE2LjksMTYuOSwwLDAsMS0zLjExLDcsMi4yOCwyLjI4LDAsMCwwLTIuNTguNTdjLS4zNS0uMi0uNy0uNC0xLS42M2ExNiwxNiwwLDAsMS00LjkzLTUuMjMsMi4yNSwyLjI1LDAsMCwwLC40Ny0xLjc3Wm0tNC0z''@;'; put 'put ''LjZjMCwuMjEuMDYuNDMuMS42NC4wOS40NC4yMS44Ny4zMywxLjNhMi4yOCwyLjI4LDAsMCwwLTEuMSwyLjI1QTE4LjMyLDE4LjMyLDAsMCwwLDUuOSwxNC4yMiwxMiwxMiwwLDAsMSwxMC43Niw2LjI3Wm0wLDE1LjcxQTIuMzQsMi4zNCwwLDAsMCw5LjIsMjMuNzRsLS42NCwwQTExLjk0LDEx''@;'; put 'put ''Ljk0LDAsMCwxLDUuOCwxNi45MmwuMTEtLjE5YTE2LjksMTYuOSwwLDAsMSw0LjgxLTQuODksMi4zMSwyLjMxLDAsMCwwLDIuMjguNjMsMTcuNTMsMTcuNTMsMCwwLDAsNS4zNSw1LjY1Yy40MS4yNy44My41MiwxLjI1Ljc2QTIuMzIsMi4zMiwwLDAsMCwxOS43OCwyMGExNi45NCwxNi45NCww''@;'; put 'put ''LDAsMS02LjIsMy4xMUEyLjM0LDIuMzQsMCwwLDAsMTAuNzYsMjJabTcsNmExMS45MiwxMS45MiwwLDAsMS01LjgxLTEuNTFsLjI4LS4wNmEyLjM0LDIuMzQsMCwwLDAsMS41Ny0xLjc5LDE4LjQzLDE4LjQzLDAsMCwwLDctMy41LDIuMjksMi4yOSwwLDAsMCwzLS42MiwxNy40MSwxNy40MSww''@;'; put 'put ''LDAsMCw0LjMyLjU2bC41MywwQTEyLDEyLDAsMCwxLDE3Ljc1LDI4Wm02LjUxLTguOWEyLjMzLDIuMzMsMCwwLDAtLjMzLTEuMTksMTguNCwxOC40LDAsMCwwLDMuMzktNy4zN3EuNzUuMzUsMS40OC43OGExMiwxMiwwLDAsMSwuNDIsOC4yQTE2LDE2LDAsMCwxLDI0LjI3LDE5LjExWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1h''@;'; put 'put ''bGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjczLDE1LjRoLTJjMCwuMiwwLC40LDAsLjYxYTEyLDEyLDAsMCwxLS41MywzLjUyLDE2LDE2LDAsMCwxLTUtLjQxLDIuMzMsMi4zMywwLDAsMC0uMzMtMS4xOSwxOC44NywxOC44NywwLDAsMCwxLjYyLTIuNTJIMjMuODNhMTcu''@;'; put 'put ''MjksMTcuMjksMCwwLDEtMSwxLjU0LDIuMjgsMi4yOCwwLDAsMC0yLjU4LjU3Yy0uMzUtLjItLjctLjQtMS0uNjNhMTYsMTYsMCwwLDEtNC45My01LjIzLDIuMjUsMi4yNSwwLDAsMCwuNDctMS43N0ExNy4wOCwxNy4wOCwwLDAsMSwxOS41Niw5bC44Ny0xLjUxYTE4LjU5LDE4LjU5LDAsMCww''@;'; put 'put ''LTYuMzksMSwyLjMzLDIuMzMsMCwwLDAtMS4xNC0uNjFsLS4yNSwwYy0uMTItLjQyLS4yMy0uODQtLjMyLTEuMjdzLS4xNC0uODEtLjE5LTEuMjJBMTEuODgsMTEuODgsMCwwLDEsMjIsNC43OUwyMywzQTE0LDE0LDAsMCwwLDMuNzUsMTZjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMEExNCwx''@;'; put 'put ''NCwwLDAsMCwzMS43NiwxNkMzMS43NiwxNS44LDMxLjc0LDE1LjYsMzEuNzMsMTUuNFptLTIxLTkuMTNjMCwuMjEuMDYuNDMuMS42NC4wOS40NC4yMS44Ny4zMywxLjNhMi4yOCwyLjI4LDAsMCwwLTEuMSwyLjI1QTE4LjMyLDE4LjMyLDAsMCwwLDUuOSwxNC4yMiwxMiwxMiwwLDAsMSwxMC43''@;'; put 'put ''Niw2LjI3Wm0wLDE1LjcxQTIuMzQsMi4zNCwwLDAsMCw5LjIsMjMuNzRsLS42NCwwQTExLjk0LDExLjk0LDAsMCwxLDUuOCwxNi45MmwuMTEtLjE5YTE2LjksMTYuOSwwLDAsMSw0LjgxLTQuODksMi4zMSwyLjMxLDAsMCwwLDIuMjguNjMsMTcuNTMsMTcuNTMsMCwwLDAsNS4zNSw1LjY1Yy40''@;'; put 'put ''MS4yNy44My41MiwxLjI1Ljc2QTIuMzIsMi4zMiwwLDAsMCwxOS43OCwyMGExNi45NCwxNi45NCwwLDAsMS02LjIsMy4xMUEyLjM0LDIuMzQsMCwwLDAsMTAuNzYsMjJabTcsNmExMS45MiwxMS45MiwwLDAsMS01LjgxLTEuNTFsLjI4LS4wNmEyLjM0LDIuMzQsMCwwLDAsMS41Ny0xLjc5LDE4''@;'; put 'put ''LjQzLDE4LjQzLDAsMCwwLDctMy41LDIuMjksMi4yOSwwLDAsMCwzLS42MiwxNy40MSwxNy40MSwwLDAsMCw0LjMyLjU2bC41MywwQTEyLDEyLDAsMCwxLDE3Ljc1LDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS41LDEzLjM1YTcuNTQsNy41NCwwLDAsMS0xLjUuMTVsLS41MSwwYTExLjkxLDExLjkxLDAsMCwxLS4yNSw2LDE2LDE2LDAsMCwxLTUtLjQxLDIuMzMsMi4zMywwLDAsMC0uMzMtMS4xOSwxOC41OSwxOC41OSwwLDAsMCwy''@;'; put 'put ''Ljc4LTUuMTgsNy40OSw3LjQ5LDAsMCwxLTEuMzEtLjgyLDE3LDE3LDAsMCwxLTIuNjEsNSwyLjI4LDIuMjgsMCwwLDAtMi41OC41N2MtLjM1LS4yLS43LS40LTEtLjYzYTE2LDE2LDAsMCwxLTQuOTMtNS4yMywyLjI1LDIuMjUsMCwwLDAsLjQ3LTEuNzcsMTcsMTcsMCwwLDEsOC41My0uNjIs''@;'; put 'put ''Ny40Myw3LjQzLDAsMCwxLS41Ni0xLjU5QTE4LjU2LDE4LjU2LDAsMCwwLDE0LDguNTNhMi4zMywyLjMzLDAsMCwwLTEuMTQtLjYxbC0uMjUsMGMtLjEyLS40Mi0uMjMtLjg0LS4zMi0xLjI3cy0uMTQtLjgxLS4xOS0xLjIyQTExLjkyLDExLjkyLDAsMCwxLDIyLjU3LDVhNy40NSw3LjQ1LDAs''@;'; put 'put ''MCwxLC41My0yQTE0LDE0LDAsMCwwLDMuNzUsMTZjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMGExNCwxNCwwLDEsMCwyNy42OC00Wk0xMC43Niw2LjI3YzAsLjIxLjA2LjQzLjEuNjQuMDkuNDQuMjEuODcuMzMsMS4zYTIuMjgsMi4yOCwwLDAsMC0xLjEsMi4yNUExOC4zMiwxOC4zMiwwLDAs''@;'; put 'put ''MCw1LjksMTQuMjIsMTIsMTIsMCwwLDEsMTAuNzYsNi4yN1ptMCwxNS43MUEyLjM0LDIuMzQsMCwwLDAsOS4yLDIzLjc0bC0uNjQsMEExMS45NCwxMS45NCwwLDAsMSw1LjgsMTYuOTJsLjExLS4xOWExNi45LDE2LjksMCwwLDEsNC44MS00Ljg5LDIuMzEsMi4zMSwwLDAsMCwyLjI4LjYzLDE3''@;'; put 'put ''LjUzLDE3LjUzLDAsMCwwLDUuMzUsNS42NWMuNDEuMjcuODMuNTIsMS4yNS43NkEyLjMyLDIuMzIsMCwwLDAsMTkuNzgsMjBhMTYuOTQsMTYuOTQsMCwwLDEtNi4yLDMuMTFBMi4zNCwyLjM0LDAsMCwwLDEwLjc2LDIyWm03LDZhMTEuOTIsMTEuOTIsMCwwLDEtNS44MS0xLjUxbC4yOC0uMDZh''@;'; put 'put ''Mi4zNCwyLjM0LDAsMCwwLDEuNTctMS43OSwxOC40MywxOC40MywwLDAsMCw3LTMuNSwyLjI5LDIuMjksMCwwLDAsMy0uNjIsMTcuNDEsMTcuNDEsMCwwLDAsNC4zMi41NmwuNTMsMEExMiwxMiwwLDAsMSwxNy43NSwyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0y''@;'; put 'put ''Ni41OCwzMmgtMThhMSwxLDAsMSwwLDAsMmgxOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC43Miw5Ljg3YTIuMjUsMi4yNSwwLDAsMS0uNDcsMS43NywxNiwxNiwwLDAsMCw0LjkzLDUu''@;'; put 'put ''MjNjLjM0LjIzLjY5LjQzLDEsLjYzYTIuMjgsMi4yOCwwLDAsMSwyLjU4LS41NywxNi45LDE2LjksMCwwLDAsMy4xMS03QTE3LDE3LDAsMCwwLDE0LjcyLDkuODdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3Ljc1''@;'; put 'put ''LDJhMTQsMTQsMCwwLDAtMTQsMTRjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMEExNCwxNCwwLDEsMCwxNy43NSwyWk0yOC4xLDIxLjA5YTE3LjQxLDE3LjQxLDAsMCwxLTQuMzItLjU2LDIuMjksMi4yOSwwLDAsMS0zLC42MiwxOC40MywxOC40MywwLDAsMS03LDMuNSwyLjM0LDIuMzQsMCww''@;'; put 'put ''LDEtMS41NywxLjc5bC0uMjkuMDZhMTEuOTMsMTEuOTMsMCwwLDEtMy4zOS0yLjhsLjY2LDBhMi4zMywyLjMzLDAsMCwxLDQuMzctLjU4QTE2Ljk0LDE2Ljk0LDAsMCwwLDE5Ljc4LDIwYTIuMzIsMi4zMiwwLDAsMS0uMTgtMS4xN2MtLjQyLS4yNC0uODQtLjQ5LTEuMjUtLjc2QTE3LjUzLDE3''@;'; put 'put ''LjUzLDAsMCwxLDEzLDEyLjQ3YTIuMzEsMi4zMSwwLDAsMS0yLjI4LS42MywyNy4zMSwyNy4zMSwwLDAsMC01LDQuNzRjMC0uMiwwLS4zOSwwLS41N2ExMiwxMiwwLDAsMSwuMTQtMS43MywxOC43NSwxOC43NSwwLDAsMSw0LjItMy44LDIuMjgsMi4yOCwwLDAsMSwxLjEtMi4yNWMtLjEyLS40''@;'; put 'put ''My0uMjQtLjg2LS4zMy0xLjMsMC0uMTQsMC0uMjktLjExLS42NGExMiwxMiwwLDAsMSwxLjM3LS44N2MuMS41OS4xNC45LjIxLDEuMjFzLjIuODUuMzIsMS4yN2wuMjUsMEEyLjMzLDIuMzMsMCwwLDEsMTQsOC41M2ExOC41MSwxOC41MSwwLDAsMSwxMi4xMS0uMDdjMC0uMzIsMC0uNjUsMC0x''@;'; put 'put ''aDBhMTIsMTIsMCwwLDEsMi42MiwzLjg1aDBxLS43My0uNDMtMS40OC0uNzhhMTguNCwxOC40LDAsMCwxLTMuMzksNy4zNywyLjMzLDIuMzMsMCwwLDEsLjMzLDEuMTksMjIsMjIsMCwwLDAsNSwuNDUsMTEuODgsMTEuODgsMCwwLDEtLjYxLDEuNTNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LjU4LDMyaC0xOGExLDEsMCwxLDAsMCwyaDE4YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTMxLjczLDE1LjRIMjUuNTZhMTguODcsMTguODcsMCwwLDEtMS42MiwyLjUyLDIuMzMsMi4zMywwLDAsMSwuMzMsMS4xOSwyMiwyMiwwLDAsMCw1LC40NSwxMS44OCwxMS44OCwwLDAsMS0uNjEsMS41M0gyOC4xYTE3LjQxLDE3LjQxLDAsMCwxLTQuMzItLjU2LDIuMjksMi4yOSww''@;'; put 'put ''LDAsMS0zLC42MiwxOC40MywxOC40MywwLDAsMS03LDMuNSwyLjM0LDIuMzQsMCwwLDEtMS41NywxLjc5bC0uMjkuMDZhMTEuOTMsMTEuOTMsMCwwLDEtMy4zOS0yLjhsLjY2LDBhMi4zMywyLjMzLDAsMCwxLDQuMzctLjU4QTE2Ljk0LDE2Ljk0LDAsMCwwLDE5Ljc4LDIwYTIuMzIsMi4zMiww''@;'; put 'put ''LDAsMS0uMTgtMS4xN2MtLjQyLS4yNC0uODQtLjQ5LTEuMjUtLjc2QTE3LjUzLDE3LjUzLDAsMCwxLDEzLDEyLjQ3YTIuMzEsMi4zMSwwLDAsMS0yLjI4LS42MywyNy4zMSwyNy4zMSwwLDAsMC01LDQuNzRjMC0uMiwwLS4zOSwwLS41N2ExMiwxMiwwLDAsMSwuMTQtMS43MywxOC43NSwxOC43''@;'; put 'put ''NSwwLDAsMSw0LjItMy44LDIuMjgsMi4yOCwwLDAsMSwxLjEtMi4yNWMtLjEyLS40My0uMjQtLjg2LS4zMy0xLjMsMC0uMTQsMC0uMjktLjExLS42NGExMiwxMiwwLDAsMSwxLjM3LS44N2MuMS41OS4xNC45LjIxLDEuMjFzLjIuODUuMzIsMS4yN2wuMjUsMEEyLjMzLDIuMzMsMCwwLDEsMTQs''@;'; put 'put ''OC41M2ExOC41OSwxOC41OSwwLDAsMSw2LjM5LTFMMjMsM0ExNCwxNCwwLDAsMCwzLjc1LDE2YzAsLjQ1LDAsLjg5LjA3LDEuMzNsMCwwaDBBMTQsMTQsMCwwLDAsMzEuNzYsMTZDMzEuNzYsMTUuOCwzMS43NCwxNS42LDMxLjczLDE1LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LjI2LDExLjY0YTE2LDE2LDAsMCwwLDQuOTMsNS4yM2MuMzQuMjMuNjkuNDMsMSwuNjNhMi4yOCwyLjI4LDAsMCwxLDIuNTgtLjU3LDE3LjI5LDE3LjI5LDAsMCwwLDEtMS41NGgtMS42QTMu''@;'; put 'put ''NjgsMy42OCwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlhMTcuMDgsMTcuMDgsMCwwLDAtNC44NC44OCwyLjI1LDIuMjUsMCwwLDEtLjQ3LDEuNzdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMzEuNSwxMy4zNWE3LjU0LDcuNTQsMCwwLDEtMS41LjE1LDcuNDYsNy40NiwwLDAsMS0zLjI4LS43NiwxOC41OSwxOC41OSwwLDAsMS0yLjc4LDUuMTgsMi4zMywyLjMzLDAsMCwxLC4zMywxLjE5LDIyLDIyLDAsMCwwLDUsLjQ1LDExLjg4LDExLjg4LDAsMCwxLS42MSwxLjUz''@;'; put 'put ''SDI4LjFhMTcuNDEsMTcuNDEsMCwwLDEtNC4zMi0uNTYsMi4yOSwyLjI5LDAsMCwxLTMsLjYyLDE4LjQzLDE4LjQzLDAsMCwxLTcsMy41LDIuMzQsMi4zNCwwLDAsMS0xLjU3LDEuNzlsLS4yOS4wNmExMS45MywxMS45MywwLDAsMS0zLjM5LTIuOGwuNjYsMGEyLjMzLDIuMzMsMCwwLDEsNC4z''@;'; put 'put ''Ny0uNThBMTYuOTQsMTYuOTQsMCwwLDAsMTkuNzgsMjBhMi4zMiwyLjMyLDAsMCwxLS4xOC0xLjE3Yy0uNDItLjI0LS44NC0uNDktMS4yNS0uNzZBMTcuNTMsMTcuNTMsMCwwLDEsMTMsMTIuNDdhMi4zMSwyLjMxLDAsMCwxLTIuMjgtLjYzLDI3LjMxLDI3LjMxLDAsMCwwLTUsNC43NGMwLS4y''@;'; put 'put ''LDAtLjM5LDAtLjU3YTEyLDEyLDAsMCwxLC4xNC0xLjczLDE4Ljc1LDE4Ljc1LDAsMCwxLDQuMi0zLjgsMi4yOCwyLjI4LDAsMCwxLDEuMS0yLjI1Yy0uMTItLjQzLS4yNC0uODYtLjMzLTEuMywwLS4xNCwwLS4yOS0uMTEtLjY0YTEyLDEyLDAsMCwxLDEuMzctLjg3Yy4xLjU5LjE0LjkuMjEs''@;'; put 'put ''MS4yMXMuMi44NS4zMiwxLjI3bC4yNSwwQTIuMzMsMi4zMywwLDAsMSwxNCw4LjUzYTE4LjU2LDE4LjU2LDAsMCwxLDguNjUtLjg3LDcuNDUsNy40NSwwLDAsMSwuNDEtNC41OUExNCwxNCwwLDAsMCwzLjc1LDE2YzAsLjQ1LDAsLjg5LjA3LDEuMzNsMCwwaDBhMTQsMTQsMCwxLDAsMjcuNjgt''@;'; put 'put ''NFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTQuNzIsOS44N2EyLjI1LDIuMjUsMCwwLDEtLjQ3LDEuNzcsMTYsMTYsMCwwLDAsNC45Myw1LjIzYy4zNC4yMy42OS40MywxLC42M2EyLjI4''@;'; put 'put ''LDIuMjgsMCwwLDEsMi41OC0uNTcsMTcsMTcsMCwwLDAsMi42MS01LDcuNTIsNy41MiwwLDAsMS0yLjE2LTIuNjdBMTcsMTcsMCwwLDAsMTQuNzIsOS44N1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2ly''@;'; put 'put ''Y2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVOZXR3b3JrU2V0dGluZ3M9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEwLjg1''@;'; put 'put ''LDI3LjQ0YTIuMjksMi4yOSwwLDAsMCwxLjc0LTEuNjhjLjU0LS4xNCwxLjA2LS4zMiwxLjU5LS41MXYtMS4yYTIuNzcsMi43NywwLDAsMSwuMDYtLjUxLDE3LjQ0LDE3LjQ0LDAsMCwxLTEuODIuNjIsMi4yOCwyLjI4LDAsMCwwLTQuMjguNjNsLS40NSwwaDBhMTEuOTMsMTEuOTMsMCwwLDEt''@;'; put 'put ''Mi44OC03LjI3LDE3Ljc5LDE3Ljc5LDAsMCwxLDUtNC43MiwyLjIzLDIuMjMsMCwwLDAsMi4yOS41NiwxOC41MiwxOC41MiwwLDAsMCw0LjQ3LDUsMi43NCwyLjc0LDAsMCwxLC4yMS0uMjRsLjk1LS45MWExNi45LDE2LjksMCwwLDEtNC4zNS00Ljc5LDIuMjcsMi4yNywwLDAsMCwuMzUtMS4y''@;'; put 'put ''YzAtLjA3LDAtLjE0LDAtLjIyQTE3LjY5LDE3LjY5LDAsMCwxLDI1LDExYTE3LjQ5LDE3LjQ5LDAsMCwxLTEuMTUsMy4zNGwuMTksMGgxLjU2YTE5LDE5LDAsMCwwLC45MS0yLjcyYy40My4xOS44NC40MSwxLjI2LjY0YTExLjk0LDExLjk0LDAsMCwxLDEsNC4wOWwwLDBBMi43NywyLjc3LDAs''@;'; put 'put ''MCwxLDMwLDE2YTIuNzMsMi43MywwLDAsMSwuNjguMUExNCwxNCwwLDEsMCwxNi4wOCwzMWEyLjcyLDIuNzIsMCwwLDEsMC0yQTExLjkzLDExLjkzLDAsMCwxLDEwLjg1LDI3LjQ0Wk0xNi43Niw1YTEyLDEyLDAsMCwxLDguNjEsMy42NmMwLC4yNSwwLC41MS0uMDguNzZhMTkuMjEsMTkuMjEs''@;'; put 'put ''MCwwLDAtMTIuMzUuMTFBMi4yOCwyLjI4LDAsMCwwLDExLjc0LDlhMTcsMTcsMCwwLDEtLjYxLTIuNTNBMTEuOTIsMTEuOTIsMCwwLDEsMTYuNzYsNVpNOS42Niw3LjM2YTE4LjcyLDE4LjcyLDAsMCwwLC40OSwxLjkyLDIuMjgsMi4yOCwwLDAsMC0xLjA3LDEuOTNzMCwuMSwwLC4xNUExOS40''@;'; put 'put ''NSwxOS40NSwwLDAsMCw1LDE0Ljc5LDEyLDEyLDAsMCwxLDkuNjYsNy4zNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LDIxLjE5QTMuODQsMy44NCwwLDEsMCwyOC44OCwyNSwzLjg3LDMuODcsMCwwLDAs''@;'; put 'put ''MjUsMjEuMTlabTAsNi4wOEEyLjI0LDIuMjQsMCwxLDEsMjcuMjgsMjUsMi4yNiwyLjI2LDAsMCwxLDI1LDI3LjI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQuMTcsMjQuMTRhMS4xNCwxLjE0LDAsMCww''@;'; put 'put ''LS43LTEuMWwtMS41Ni0uNDZxLS4xMS0uMzItLjI2LS42M2wuNzItMS4zM2ExLjE0LDEuMTQsMCwwLDAtLjIxLTEuMzRsLTEuMzQtMS4zMmExLjE0LDEuMTQsMCwwLDAtMS4zNC0uMmwtMS4zNC43MWE3LjI4LDcuMjgsMCwwLDAtLjY3LS4yOEwyNywxNi43MWExLjE0LDEuMTQsMCwwLDAtMS4w''@;'; put 'put ''OC0uNzZIMjRhMS4xNCwxLjE0LDAsMCwwLTEuMDguOGwtLjQ0LDEuNDNhNy4zMiw3LjMyLDAsMCwwLS42OC4yOGwtMS4zMi0uN2ExLjE0LDEuMTQsMCwwLDAtMS4zMy4xOWwtMS4zNywxLjMxYTEuMTQsMS4xNCwwLDAsMC0uMjEsMS4zNWwuNywxLjI4cS0uMTYuMzItLjI4LjY1TDE2LjU4LDIz''@;'; put 'put ''YTEuMTMsMS4xMywwLDAsMC0uODEsMS4wOXYxLjg3QTEuMTQsMS4xNCwwLDAsMCwxNi41OSwyN2wxLjQ3LjQ0cS4xMi4zMi4yOC42NGwtLjcyLDEuMzVhMS4xNCwxLjE0LDAsMCwwLC4yLDEuMzVsMS4zNCwxLjMyYTEuMTQsMS4xNCwwLDAsMCwxLjM0LjJsMS4zNy0uNzJxLjMxLjE0LjYzLjI2''@;'; put 'put ''bC40NCwxLjQ3YTEuMTQsMS4xNCwwLDAsMCwxLjA5LjhoMS45QTEuMTQsMS4xNCwwLDAsMCwyNywzMy4zMWwuNDQtMS40N2MuMjEtLjA3LjQyLS4xNi42Mi0uMjVsMS4zOC43M2ExLjE0LDEuMTQsMCwwLDAsMS4zMy0uMmwxLjM0LTEuMzJhMS4xNCwxLjE0LDAsMCwwLC4yMS0xLjM1bC0uNzMt''@;'; put 'put ''MS4zNHEuMTQtLjMuMjUtLjZsMS41LS40NEExLjEzLDEuMTMsMCwwLDAsMzQuMTcsMjZabS0xLjYsMS41LTIsLjU4LS4xMi40MkE1LjU1LDUuNTUsMCwwLDEsMzAsMjcuNzNsLS4yMS4zOCwxLDEuNzktLjg2Ljg0LTEuODItMS0uMzcuMmE1Ljc4LDUuNzgsMCwwLDEtMS4xMi40NmwtLjQyLjEy''@;'; put 'put ''LS41OSwySDI0LjM4bC0uNTktMS45NS0uNDItLjEyQTUuODYsNS44NiwwLDAsMSwyMi4yNCwzMGwtLjM3LS4yLTEuODEsMS0uODYtLjg1LDEtMS44Mi0uMjItLjM4YTUuNiw1LjYsMCwwLDEtLjQ5LTEuMTNsLS4xMy0uNDEtMS45NS0uNThWMjQuNDJsMS45NC0uNTguMTItLjQxYTUuNTMsNS41''@;'; put 'put ''MywwLDAsMSwuNDktMS4xNGwuMjItLjM5LTEtMS43My44Ny0uODQsMS43Ny45NC4zOC0uMjFhNS44LDUuOCwwLDAsMSwxLjE3LS40OWwuNDEtLjEyLjU5LTEuOTFoMS4yM2wuNTgsMS45LjQxLjEyYTUuNzksNS43OSwwLDAsMSwxLjE2LjQ4bC4zOC4yMSwxLjgtLjk1Ljg2Ljg1LTEsMS43Ny4y''@;'; put 'put ''MS4zOGE1LjUzLDUuNTMsMCwwLDEsLjQ3LDEuMTNsLjEyLjQyLDEuOTMuNTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNCwyMy42MywzMiwyM2E3LjA2LDcuMDYsMCwwLDAtLjU4LTEuNDFsMS0xLjg2YS4z''@;'; put 'put ''Ny4zNywwLDAsMC0uMDctLjQ0TDMwLjksMTcuODZhLjM3LjM3LDAsMCwwLS40NC0uMDdsLTEuODUsMWE3LDcsMCwwLDAtMS40My0uNjFsLS42MS0yYS4zNy4zNywwLDAsMC0uMzYtLjI1aC0yYS4zNy4zNywwLDAsMC0uMzUuMjZsLS42MSwyYTcsNywwLDAsMC0xLjQ0LjYxTDIwLDE3LjhhLjM3''@;'; put 'put ''LjM3LDAsMCwwLS40NC4wN0wxOCwxOS4zMWEuMzcuMzcsMCwwLDAtLjA3LjQ0bDEsMS44MkE3LDcsMCwwLDAsMTguMzUsMjNsLTIsLjYxYS4zNy4zNywwLDAsMC0uMjYuMzV2MmEuMzcuMzcsMCwwLDAsLjI2LjM1bDIsLjYxQTcsNywwLDAsMCwxOSwyOC4zN2wtMSwxLjlhLjM3LjM3LDAsMCww''@;'; put 'put ''LC4wNy40NGwxLjQ1LDEuNDVhLjM3LjM3LDAsMCwwLC40NC4wN2wxLjg3LTFhNy4wNiw3LjA2LDAsMCwwLDEuMzkuNTdsLjYxLDJhLjM3LjM3LDAsMCwwLC4zNS4yNmgyYS4zNy4zNywwLDAsMCwuMzUtLjI2bC42MS0yYTcsNywwLDAsMCwxLjM4LS41N2wxLjg5LDFhLjM3LjM3LDAsMCwwLC40''@;'; put 'put ''NC0uMDdsMS40NS0xLjQ1YS4zNy4zNywwLDAsMCwuMDctLjQ0bC0xLTEuODhBNyw3LDAsMCwwLDMxLjk1LDI3bDItLjYxYS4zNy4zNywwLDAsMCwuMjYtLjM1VjI0QS4zNy4zNywwLDAsMCwzNCwyMy42M1ptLTguODMsNC43MkEzLjMzLDMuMzMsMCwxLDEsMjguNTMsMjUsMy4zMywzLjMzLDAs''@;'; put 'put ''MCwxLDI1LjE5LDI4LjM0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC44NSwyNy40NGEyLjI5LDIuMjksMCwwLDAsMS43NC0xLjY4LDE5LjcxLDE5LjcxLDAsMCwwLDEuODktLjZWMjMuOTVhMiwyLDAsMCwxLC4w''@;'; put 'put ''OS0uNTUsMTcuNDIsMTcuNDIsMCwwLDEtMi4xNy43OCwyLjI4LDIuMjgsMCwwLDAtNC4yOC42M2wtLjQ1LDBoMGExMS45MywxMS45MywwLDAsMS0yLjg4LTcuMjcsMTcuNzksMTcuNzksMCwwLDEsNS00LjcyLDIuMjMsMi4yMywwLDAsMCwyLjI5LjU2LDE4LjUyLDE4LjUyLDAsMCwwLDQuNjUs''@;'; put 'put ''NS4wOSwxLjkzLDEuOTMsMCwwLDEsLjIzLS4zMmwuODktLjg3YTE2Ljg5LDE2Ljg5LDAsMCwxLTQuNDktNC44OSwyLjI3LDIuMjcsMCwwLDAsLjM1LTEuMmMwLS4wNywwLS4xNCwwLS4yMkExNy42OSwxNy42OSwwLDAsMSwyNSwxMWExNy40OSwxNy40OSwwLDAsMS0xLjE1LDMuMzUsMS45NCwx''@;'; put 'put ''Ljk0LDAsMCwxLC4zMS0uMDVoMS40NWExOS4wNiwxOS4wNiwwLDAsMCwuOS0yLjdjLjQzLjE5Ljg0LjQxLDEuMjYuNjRhMTEuOTMsMTEuOTMsMCwwLDEsMSw0LjYzbDEtLjUxYTIsMiwwLDAsMSwuOTItLjIzaC4wOEExNCwxNCwwLDEsMCwxNi40NCwzMWExLjk0LDEuOTQsMCwwLDEsLjEyLTEu''@;'; put 'put ''NDZsLjI4LS41M2gtLjA3QTExLjkxLDExLjkxLDAsMCwxLDEwLjg1LDI3LjQ0Wk0xNi43Niw1YTEyLDEyLDAsMCwxLDguNjEsMy42NmMwLC4yNSwwLC41MS0uMDguNzZhMTkuMjEsMTkuMjEsMCwwLDAtMTIuMzUuMTFBMi4yOCwyLjI4LDAsMCwwLDExLjc0LDlhMTcsMTcsMCwwLDEtLjYxLTIu''@;'; put 'put ''NTNBMTEuOTIsMTEuOTIsMCwwLDEsMTYuNzYsNVpNOS42Niw3LjM2YTE4LjcyLDE4LjcyLDAsMCwwLC40OSwxLjkyLDIuMjgsMi4yOCwwLDAsMC0xLjA3LDEuOTNzMCwuMSwwLC4xNUExOS40NSwxOS40NSwwLDAsMCw1LDE0Ljc5LDEyLDEyLDAsMCwxLDkuNjYsNy4zNloiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVOZXR3b3JrU3dpdGNoPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy45MSwxOC40NywzMC43OCw4LjQxQTIsMiwwLDAsMCwyOC44Nyw3SDcuMTNBMiwyLDAsMCwwLDUuMjIsOC40MUwyLjA5''@;'; put 'put ''LDE4LjQ4YTIsMiwwLDAsMC0uMDkuNTlWMjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE5LjA2QTIsMiwwLDAsMCwzMy45MSwxOC40N1pNMzIsMjdINFYxOS4wNkw3LjEzLDlIMjguODdMMzIsMTkuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjcuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9''@;'; put 'put ''IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTcuMTEiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHJlY3QgeD0iMjIuMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNy4xIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjYuMjMiIHk9IjE4IiB3aWR0aD0iMjMuNjkiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9Ijcu''@;'; put 'put ''MTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTcuMTEiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0z''@;'; put 'put ''LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjIuMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNy4xIiB5''@;'; put 'put ''PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjYuMjMiIHk9IjE4IiB3aWR0aD0iMjMuNjkiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy45MSwxOC40NywzMywxNS40SDMwLjg2TDMyLDE5LjA2VjI3SDRWMTkuMDZMNy4xMyw5SDE5LjU2bDEuMTUtMkg3LjEzQTIsMiwwLDAsMCw1LjIyLDgu''@;'; put 'put ''NDFMMi4wOSwxOC40OGEyLDIsMCwwLDAtLjA5LjU5VjI3YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOS4wNkEyLDIsMCwwLDAsMzMuOTEsMTguNDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtOC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjcuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxyZWN0IHg9IjEyLjEyIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNy4xMSIgeT0iMjIiIHdpZHRoPSIx''@;'; put 'put ''LjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjIuMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjcuMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHJlY3QgeD0iNi4yMyIgeT0iMTgiIHdpZHRoPSIyMy42OSIgaGVpZ2h0PSIxLjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy45MSwxOC40N2wtMS42NS01LjMyYTcuNDksNy40''@;'; put 'put ''OSwwLDAsMS0yLC4zM0wzMiwxOS4wNlYyN0g0VjE5LjA2TDcuMTMsOWgxNmE3LjQ1LDcuNDUsMCwwLDEtLjU1LTJINy4xM0EyLDIsMCwwLDAsNS4yMiw4LjQxTDIuMDksMTguNDhhMiwyLDAsMCwwLS4wOS41OVYyN2EyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTkuMDZBMiwyLDAs''@;'; put 'put ''MCwwLDMzLjkxLDE4LjQ3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtOC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjkxLDE4LjQ3LDMwLjc4LDguNDFBMiwyLDAsMCwwLDI4Ljg3LDdINy4xM0EyLDIsMCwwLDAsNS4yMiw4LjQxTDIuMDksMTguNDhhMiwyLDAsMCwwLS4wOS41OVYyN2EyLDIsMCwwLDAsMiwy''@;'; put 'put ''SDMyYTIsMiwwLDAsMCwyLTJWMTkuMDZBMiwyLDAsMCwwLDMzLjkxLDE4LjQ3Wk04LjkyLDI1SDcuMTJWMjJoMS44Wm01LDBoLTEuOFYyMmgxLjhabTUsMGgtMS44VjIyaDEuOFptNSwwSDIyLjFWMjJoMS44Wm01LDBIMjcuMVYyMmgxLjhaTTMxLDE5LjRINVYxOEgzMVoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMTUuNEgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMC43MSw3SDcuMTNBMiwyLDAsMCwwLDUuMjIsOC40MUwyLjA5LDE4LjQ4YTIsMiwwLDAsMC0uMDkuNTlWMjdhMiwyLDAsMCww''@;'; put 'put ''LDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE5LjA2YTIsMiwwLDAsMC0uMDktLjU5Wk04LjkyLDI1SDcuMTJWMjJoMS44Wm01LDBoLTEuOFYyMmgxLjhabTUsMGgtMS44VjIyaDEuOFptNSwwSDIyLjFWMjJoMS44Wm01LDBIMjcuMVYyMmgxLjhaTTMxLDE5LjRINVYxOEgzMVoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwx''@;'; put 'put ''LjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yNiwxMy4xNUE3LjQ5LDcuNDksMCwwLDEsMjIuNTcsN0g3LjEzQTIsMiww''@;'; put 'put ''LDAsMCw1LjIyLDguNDFMMi4wOSwxOC40OGEyLDIsMCwwLDAtLjA5LjU5VjI3YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOS4wNmEyLDIsMCwwLDAtLjA5LS41OVpNOC45MiwyNUg3LjEyVjIyaDEuOFptNSwwaC0xLjhWMjJoMS44Wm01LDBoLTEuOFYyMmgxLjhabTUsMEgyMi4x''@;'; put 'put ''VjIyaDEuOFptNSwwSDI3LjFWMjJoMS44Wk0zMSwxOS40SDVWMThIMzFaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxlLkNsclNoYXBlUm91dGVyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwxNC44N2w1LjExLTUuMTRhMSwxLDAsMSwwLTEuNDItMS40MUwxOSwxMVYzLjMzYTEsMSwwLDAs''@;'; put 'put ''MC0yLDBWMTFMMTQuMzEsOC4zMmExLDEsMCwxLDAtMS40MiwxLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjEuMTNsLTUuMTEsNS4xNGExLDEsMCwwLDAsMS40MiwxLjQxTDE3LDI1djcuNjlhMSwx''@;'; put 'put ''LDAsMCwwLDIsMFYyNWwyLjY5LDIuNzFhMSwxLDAsMCwwLDEuNDItMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4Ljg1LDEyLjg5YTEsMSwwLDAsMC0xLjQxLDEuNDJMMzAuMTUsMTdIMjIuNDZhMSwx''@;'; put 'put ''LDAsMSwwLDAsMmg3LjY5bC0yLjcxLDIuNjlhMSwxLDAsMCwwLDEuNDEsMS40MkwzNCwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUuODUsMTloNy42OWExLDEsMCwwLDAsMC0ySDUuODVsMi43MS0yLjY5''@;'; put 'put ''YTEsMSwwLDEsMC0xLjQxLTEuNDJMMiwxOGw1LjE0LDUuMTFhMSwxLDAsMSwwLDEuNDEtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIxLjEzbC01LjExLDUuMTRhMSwxLDAsMCwwLDEuNDIsMS40''@;'; put 'put ''MUwxNywyNXY3LjY5YTEsMSwwLDAsMCwyLDBWMjVsMi42OSwyLjcxYTEsMSwwLDAsMCwxLjQyLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljg1LDE5aDcuNjlhMSwx''@;'; put 'put ''LDAsMCwwLDAtMkg1Ljg1bDIuNzEtMi42OWExLDEsMCwxLDAtMS40MS0xLjQyTDIsMThsNS4xNCw1LjExYTEsMSwwLDEsMCwxLjQxLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0zMS4zOCwxNS40SDI4LjU0TDMwLjE1LDE3SDIyLjQ2YTEsMSwwLDEsMCwwLDJoNy42OWwtMi43MSwyLjY5YTEsMSwwLDAsMCwxLjQxLDEuNDJMMzQsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0xOCwxNC44N2wxLjE1LTEuMTYtLjEtLjE1QTMuNjgsMy42OCwwLDAsMSwxOSwxMFYzLjMzYTEsMSwwLDAsMC0yLDBWMTFMMTQuMzEsOC4zMmExLDEsMCwxLDAtMS40MiwxLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTQuODdsNS4xMS01LjE0YTEsMSwwLDEsMC0xLjQyLTEuNDFMMTksMTFWMy4zM2ExLDEsMCwwLDAtMiwwVjExTDE0LjMx''@;'; put 'put ''LDguMzJhMSwxLDAsMSwwLTEuNDIsMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMS4xM2wtNS4xMSw1LjE0YTEsMSwwLDAsMCwxLjQyLDEuNDFMMTcsMjV2Ny42OWEx''@;'; put 'put ''LDEsMCwwLDAsMiwwVjI1bDIuNjksMi43MWExLDEsMCwwLDAsMS40Mi0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4Ljg1LDEyLjg5YTEsMSwwLDAsMC0xLjQxLDEuNDJM''@;'; put 'put ''MzAuMTUsMTdIMjIuNDZhMSwxLDAsMSwwLDAsMmg3LjY5bC0yLjcxLDIuNjlhMSwxLDAsMCwwLDEuNDEsMS40MkwzNCwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljg1LDE5''@;'; put 'put ''aDcuNjlhMSwxLDAsMCwwLDAtMkg1Ljg1bDIuNzEtMi42OWExLDEsMCwxLDAtMS40MS0xLjQyTDIsMThsNS4xNCw1LjExYTEsMSwwLDEsMCwxLjQxLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMS42N2ExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAs''@;'; put 'put ''MCwxOCwxLjY3Wk0xMy44Niw5LjkyYS44LjgsMCwwLDEsMS4xMywwbDIuMjEsMi4xOVY1LjkzYS44LjgsMCwwLDEsMS42LDB2Ni4xOEwyMSw5LjkyYS44LjgsMCwxLDEsMS4xMywxLjE0TDE4LDE1LjE1bC00LjE0LTQuMUEuOC44LDAsMCwxLDEzLjg2LDkuOTJaTTEwLjMyLDIxLjc0YS44Ljgs''@;'; put 'put ''MCwwLDEtMS4xMywwTDUsMTcuNjdsNC4xOS00LjA5YS44LjgsMCwxLDEsMS4xMiwxLjE0bC0yLjIsMi4xNGg2LjI3YS44LjgsMCwwLDEsMCwxLjZIOC4xMWwyLjIsMi4xNUEuOC44LDAsMCwxLDEwLjMyLDIxLjc0Wm0xMS44MiwzLjY3YS44LjgsMCwwLDEtMS4xMywwTDE4LjgsMjMuMjNWMjku''@;'; put 'put ''NGEuOC44LDAsMCwxLTEuNiwwVjIzLjIzTDE1LDI1LjQyYS44LjgsMCwxLDEtMS4xMy0xLjE0TDE4LDIwLjE4bDQuMTQsNC4xQS44LjgsMCwwLDEsMjIuMTQsMjUuNDFabTQuNjctMy42NmEuOC44LDAsMSwxLTEuMTItMS4xNGwyLjItMi4xNUgyMS42M2EuOC44LDAsMCwxLDAtMS42aDYuMjds''@;'; put 'put ''LTIuMi0yLjE0YS44LjgsMCwxLDEsMS4xMi0xLjE0TDMxLDE3LjY3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy44MiwxNS4zOUgyOC42OEwzMSwxNy42N2wtNC4xOSw0LjA5YS44LjgsMCwxLDEtMS4xMi0xLjE0''@;'; put 'put ''bDIuMi0yLjE1SDIxLjYzYS44LjgsMCwwLDEsMC0xLjZoNi4yN2wtMS41LTEuNDdIMjIuMjNhMy42OCwzLjY4LDAsMCwxLTMtMS41MUwxOCwxNS4xNWwtNC4xNC00LjFBLjguOCwwLDEsMSwxNSw5LjkybDIuMjEsMi4xOVY1LjkzYS44LjgsMCwwLDEsMS42LDB2NC40OUEzLjY1LDMuNjUsMCww''@;'; put 'put ''LDEsMTksOS44OWw0LjIyLTcuMzFBMTYsMTYsMCwxLDAsMzQsMTcuNjcsMTYsMTYsMCwwLDAsMzMuODIsMTUuMzlabS0yMy41LDYuMzVhLjguOCwwLDAsMS0xLjEzLDBMNSwxNy42N2w0LjE5LTQuMDlhLjguOCwwLDEsMSwxLjEyLDEuMTRsLTIuMiwyLjE0aDYuMjdhLjguOCwwLDAsMSwwLDEu''@;'; put 'put ''Nkg4LjExbDIuMiwyLjE1QS44LjgsMCwwLDEsMTAuMzIsMjEuNzRabTExLjgyLDMuNjdhLjguOCwwLDAsMS0xLjEzLDBMMTguOCwyMy4yM1YyOS40YS44LjgsMCwwLDEtMS42LDBWMjMuMjNMMTUsMjUuNDJhLjguOCwwLDEsMS0xLjEzLTEuMTRMMTgsMjAuMThsNC4xNCw0LjFBLjguOCwwLDAs''@;'; put 'put ''MSwyMi4xNCwyNS40MVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCww''@;'; put 'put ''LDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4yMiwxMi43NkE3LjQ5LDcu''@;'; put 'put ''NDksMCwwLDEsMjMuMzIsMi42YTE2LDE2LDAsMSwwLDkuOSwxMC4xN1pNMTMuODYsOS45MmEuOC44LDAsMCwxLDEuMTMsMGwyLjIxLDIuMTlWNS45M2EuOC44LDAsMCwxLDEuNiwwdjYuMThMMjEsOS45MmEuOC44LDAsMSwxLDEuMTMsMS4xNEwxOCwxNS4xNWwtNC4xNC00LjFBLjguOCwwLDAs''@;'; put 'put ''MSwxMy44Niw5LjkyWk0xMC4zMiwyMS43NGEuOC44LDAsMCwxLTEuMTMsMEw1LDE3LjY3bDQuMTktNC4wOWEuOC44LDAsMSwxLDEuMTIsMS4xNGwtMi4yLDIuMTRoNi4yN2EuOC44LDAsMCwxLDAsMS42SDguMTFsMi4yLDIuMTVBLjguOCwwLDAsMSwxMC4zMiwyMS43NFptMTEuODIsMy42N2Eu''@;'; put 'put ''OC44LDAsMCwxLTEuMTMsMEwxOC44LDIzLjIzVjI5LjRhLjguOCwwLDAsMS0xLjYsMFYyMy4yM0wxNSwyNS40MmEuOC44LDAsMSwxLTEuMTMtMS4xNEwxOCwyMC4xOGw0LjE0LDQuMUEuOC44LDAsMCwxLDIyLjE0LDI1LjQxWm00LjY3LTMuNjZhLjguOCwwLDEsMS0xLjEyLTEuMTRsMi4yLTIu''@;'; put 'put ''MTVIMjEuNjNhLjguOCwwLDAsMSwwLTEuNmg2LjI3bC0yLjItMi4xNGEuOC44LDAsMSwxLDEuMTItMS4xNEwzMSwxNy42N1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2''@;'; put 'put ''IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVWTT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTEsNUgyNVY4aDJWNWEyLDIsMCwwLDAtMi0ySDExQTIs''@;'; put 'put ''MiwwLDAsMCw5LDV2Ni44NWgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTBIMTd2Mmg4djZoMlYxMmgzVjI2SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMxYTIsMiwwLDAsMCwy''@;'; put 'put ''LDJIMjBhMiwyLDAsMCwwLDItMlYyOGg4YTIsMiwwLDAsMCwyLTJWMTJBMiwyLDAsMCwwLDMwLDEwWk02LDMxVjE3SDIwdjlIMTZWMjBIMTR2NmEyLDIsMCwwLDAsMiwyaDR2M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTExLDVIMjEuODdMMjMsM0gxMUEyLDIsMCwwLDAsOSw1djYuODVoMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjUuMDEiIHk9IjE1LjQiIHdpZHRoPSIxLjk5IiBo''@;'; put 'put ''ZWlnaHQ9IjIuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTUuNFYyNkgyMlYxN2EyLDIsMCwwLDAtMi0ySDZhMiwyLDAsMCwwLTIsMlYzMWEyLDIsMCwwLDAsMiwySDIw''@;'; put 'put ''YTIsMiwwLDAsMCwyLTJWMjhoOGEyLDIsMCwwLDAsMi0yVjE1LjRaTTYsMzFWMTdIMjB2OUgxNlYyMEgxNHY2YTIsMiwwLDAsMCwyLDJoNHYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMTcsMTB2MmgxLjU3QTMuNjcsMy42NywwLDAsMSwxOSwxMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCww''@;'; put 'put ''LDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTExLDVIMjIuNTdhNy40NSw3LjQ1LDAsMCwxLC41NS0ySDExQTIsMiwwLDAsMCw5LDV2Ni44NWgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEz''@;'; put 'put ''LjVoMFYyNkgyMlYxN2EyLDIsMCwwLDAtMi0ySDZhMiwyLDAsMCwwLTIsMlYzMWEyLDIsMCwwLDAsMiwySDIwYTIsMiwwLDAsMCwyLTJWMjhoOGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41Wk02LDMxVjE3SDIwdjlIMTZWMjBIMTR2NmEyLDIsMCwwLDAsMiwy''@;'; put 'put ''aDR2M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywxMmg4djZoMlYxMi44N0E3LjUyLDcuNTIsMCwwLDEsMjMuNjYsMTBIMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMTMuNTksMTJhMy42LDMuNiwwLDAsMSwzLjYtMy42SDI3VjVhMiwyLDAsMCwwLTItMkgxMUEyLDIsMCwwLDAsOSw1djguNGg0LjU5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMEgxNy4x''@;'; put 'put ''OWEyLDIsMCwwLDAtMiwydjEuNEgyMEEzLjYsMy42LDAsMCwxLDIzLjYsMTd2OEgyMlYxN2EyLDIsMCwwLDAtMi0ySDZhMiwyLDAsMCwwLTIsMlYzMWEyLDIsMCwwLDAsMiwySDIwYTIsMiwwLDAsMCwyLTJWMjkuNkgxNy4xOWEzLjYsMy42LDAsMCwxLTMuNi0zLjZWMjBoMS42djZhMiwyLDAs''@;'; put 'put ''MCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEyQTIsMiwwLDAsMCwzMCwxMFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNTksMTJhMy42LDMuNiwwLDAsMSwzLjYtMy42aDIuNzJMMjMsM0gxMUEyLDIsMCwwLDAs''@;'; put 'put ''OSw1djguNGg0LjU5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy4xOSwxMGEyLDIsMCwwLDAtMiwydjEuNEgxOUEzLjY4LDMuNjgsMCwwLDEsMTksMTBaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjIxLDE1LjRBMy41NSwzLjU1LDAsMCwxLDIzLjYsMTd2OEgyMlYxN2EyLDIsMCwwLDAtMi0ySDZhMiwyLDAsMCwwLTIsMlYzMWEyLDIsMCwwLDAsMiwySDIwYTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWMjkuNkgxNy4xOWEzLjYsMy42LDAsMCwxLTMuNi0zLjZWMjBoMS42djZhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE1LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNTksMTJhMy42LDMuNiwwLDAsMSwzLjYtMy42SDIyLjlBNy40NSw3LjQ1LDAsMCwxLDIzLjEzLDNIMTFBMiwyLDAsMCwwLDksNXY4LjRoNC41OVoiIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVBNy40OSw3LjQ5LDAsMCwxLDIzLjY2LDEwSDE3LjE5YTIsMiwwLDAsMC0yLDJ2MS40SDIwQTMuNiwzLjYsMCwwLDEsMjMuNiwxN3Y4SDIyVjE3YTIsMiwwLDAsMC0yLTJI''@;'; put 'put ''NmEyLDIsMCwwLDAtMiwyVjMxYTIsMiwwLDAsMCwyLDJIMjBhMiwyLDAsMCwwLDItMlYyOS42SDE3LjE5YTMuNiwzLjYsMCwwLDEtMy42LTMuNlYyMGgxLjZ2NmEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAg''@;'; put 'put ''ICAgICAnKSxlLkNsclNoYXBlVk1XQXBwPSgwLGEuY2xySWNvblNWRykoJzxwb2x5Z29uIHBvaW50cz0iMjggMjIgMzAgMjIgMzAgMzAgMjIgMzAgMjIgMjggMjAgMjggMjAgMzIgMzIgMzIgMzIgMjAgMjggMjAgMjggMjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxNCAzMCA2IDMwIDYgMjIgOCAyMiA4IDIwIDQgMjAgNCAzMiAxNiAzMiAxNiAyOCAxNCAyOCAxNCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cG9seWdv''@;'; put 'put ''biBwb2ludHM9IjggMTQgNiAxNCA2IDYgMTQgNiAxNCA4IDE2IDggMTYgNCA0IDQgNCAxNiA4IDE2IDggMTQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIyMCA0IDIwIDggMjIgOCAyMiA2IDMwIDYg''@;'; put 'put ''MzAgMTQgMjggMTQgMjggMTYgMzIgMTYgMzIgNCAyMCA0IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxMSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxOSIgeT0iMTEiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjE5IiB3aWR0aD0iNiIgaGVpZ2h0''@;'; put 'put ''PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE5IiB5PSIxOSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cG9seWdvbiBwb2ludHM9IjI4IDIyIDMwIDIyIDMwIDMwIDIyIDMwIDIyIDI4IDIwIDI4IDIwIDMyIDMyIDMyIDMyIDIwIDI4IDIwIDI4IDIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5''@;'; put 'put ''Z29uIHBvaW50cz0iMTQgMzAgNiAzMCA2IDIyIDggMjIgOCAyMCA0IDIwIDQgMzIgMTYgMzIgMTYgMjggMTQgMjggMTQgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRz''@;'; put 'put ''PSI4IDE0IDYgMTQgNiA2IDE0IDYgMTQgOCAxNiA4IDE2IDQgNCA0IDQgMTYgOCAxNiA4IDE0IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxMSIgd2lkdGg9IjYiIGhl''@;'; put 'put ''aWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTkiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC01LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTkiIHk9IjE5IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0yNSwxNS40SDIyLjIzQTMuNjksMy42OSwwLDAsMSwxOSwxMy41NmwwLS4xVjE3aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjIuNDUgNCAyMCA0IDIwIDgg''@;'; put 'put ''MjAuMTQgOCAyMi40NSA0IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI4IiB5PSIxNS40IiB3aWR0aD0iNCIgaGVpZ2h0PSIwLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC05LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwy''@;'; put 'put ''Ni44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjggMjIgMzAgMjIgMzAgMzAgMjIgMzAgMjIgMjggMjAgMjggMjAgMzIgMzIg''@;'; put 'put ''MzIgMzIgMjAgMjggMjAgMjggMjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTQgMzAgNiAzMCA2IDIyIDggMjIgOCAyMCA0IDIwIDQgMzIgMTYgMzIgMTYgMjggMTQg''@;'; put 'put ''MjggMTQgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAxNCA2IDE0IDYgNiAxNCA2IDE0IDggMTYgOCAxNiA0IDQgNCA0IDE2IDggMTYgOCAxNCIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjExIiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTkiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE5IiB5PSIxOSIgd2lkdGg9IjYiIGhl''@;'; put 'put ''aWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDZoLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDIwVjhoMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41VjE0SDI4djJoNFYxMy4yMkE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNSwxMS41OGE3LjUzLDcuNTMsMCwwLDEtLjU4LS41OEgxOXY2aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC05LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9''@;'; put 'put ''IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxlLkNsclNoYXBlQ2VydGlmaWNhdGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMTlsLjU3LS43LjkzLTEuMTRMMjAuNDEsMjhINFY4SDMybDAsOC41NmE4LjQxLDguNDEsMCwwLDEsMiwxLjgxVjhBMiwyLDAsMCwwLDMyLDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9''@;'; put 'put ''IjciIHk9IjEyIiB3aWR0aD0iMTciIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjE2IiB3aWR0aD0iMTEiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjIzIiB3aWR0aD0iMTAiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy40NiwxNy4yM2E2LjM2LDYuMzYs''@;'; put 'put ''MCwwLDAtNC40LDExbC0xLjk0LDIuMzcuOSwzLjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYsNC40Ni45LTMuNjEtMS45NC0yLjM3YTYuMzYsNi4zNiwwLDAsMC00LjQtMTFabTAsMTAuNjhhNC4zMSw0LjMxLDAsMSwxLDQuMzctNC4zMUE0LjM1LDQuMzUsMCwwLDEs''@;'; put 'put ''MjcuNDYsMjcuOTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjE2IiB3aWR0aD0iMTEiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjIzIiB3aWR0aD0iMTAiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy40Niwx''@;'; put 'put ''Ny4yM2E2LjM2LDYuMzYsMCwwLDAtNC40LDExbC0xLjk0LDIuMzcuOSwzLjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYsNC40Ni45LTMuNjEtMS45NC0yLjM3YTYuMzYsNi4zNiwwLDAsMC00LjQtMTFabTAsMTAuNjhhNC4zMSw0LjMxLDAsMSwxLDQuMzctNC4zMUE0''@;'; put 'put ''LjM1LDQuMzUsMCwwLDEsMjcuNDYsMjcuOTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwxMy41NkEzLjY2LDMuNjYsMCwwLDEsMTguNTcsMTJIN3YxLjZIMTkuMDdaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMydjEuMTZhOC40MSw4LjQxLDAsMCwxLDIsMS44MXYtM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMjhWOEgyMC4xNGwxLjE1LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMTlsLjU3LS43LjkzLTEuMTRMMjAuNDEsMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYu''@;'; put 'put ''ODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjEyIiB3aWR0aD0iMTciIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI3IiB5PSIxNiIgd2lkdGg9IjExIiBoZWlnaHQ9IjEuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHJlY3QgeD0iNyIgeT0iMjMiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy40NiwxNy4yM2E2LjM2LDYuMzYsMCwwLDAtNC40''@;'; put 'put ''LDExbC0xLjk0LDIuMzcuOSwzLjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYsNC40Ni45LTMuNjEtMS45NC0yLjM3YTYuMzYsNi4zNiwwLDAsMC00LjQtMTFabTAsMTAuNjhhNC4zMSw0LjMxLDAsMSwxLDQuMzctNC4zMUE0LjM1LDQuMzUsMCwwLDEsMjcuNDYsMjcu''@;'; put 'put ''OTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJ2My4zNGE4LjQxLDguNDEsMCwwLDEsMiwxLjgxdi02QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDI4VjhIMjIuNzhhNy40OSw3LjQ5LDAsMCwxLS4yOC0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDE5bC41Ny0uNy45My0xLjE0TDIw''@;'; put 'put ''LjQxLDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDMwSDRhMiwyLDAsMCwxLTItMlY4QTIsMiwwLDAsMSw0LDZIMzJhMiwyLDAsMCwxLDIsMlYxOC4zN2E4LjM0LDguMzQsMCwwLDAtMTMuNDksOS43OWwtLjkzLDEuMTRaTTcsMTJ2MS42SDI0VjEyWm0wLDUu''@;'; put 'put ''NkgxOFYxNkg3Wm0wLDdIMTdWMjNIN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuODMsMjMuNTlhNi4zNyw2LjM3LDAsMSwwLTEwLjc3LDQuNTlsLTEuOTQsMi4zNy45LDMuNjEsMy42Ni00LjQ2YTYuMjYsNi4y''@;'; put 'put ''NiwwLDAsMCwzLjU1LDBsMy42Niw0LjQ2LjktMy42MS0xLjk0LTIuMzdBNi4zNCw2LjM0LDAsMCwwLDMzLjgzLDIzLjU5Wm0tMTAuNzQsMGE0LjM3LDQuMzcsMCwxLDEsNC4zNyw0LjMxQTQuMzUsNC4zNSwwLDAsMSwyMy4xLDIzLjU5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy44MywyMy41OWE2LjM3LDYuMzcsMCwxLDAtMTAuNzcsNC41OWwtMS45NCwyLjM3LjksMy42MSwzLjY2LTQuNDZhNi4yNiw2LjI2LDAsMCwwLDMuNTUsMGwzLjY2LDQuNDYuOS0zLjYxLTEuOTQtMi4zN0E2LjM0LDYuMzQsMCww''@;'; put 'put ''LDAsMzMuODMsMjMuNTlabS0xMC43NCwwYTQuMzcsNC4zNywwLDEsMSw0LjM3LDQuMzFBNC4zNSw0LjM1LDAsMCwxLDIzLjEsMjMuNTlaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMz''@;'; put 'put ''LjY4LDE1LjRIMjkuMjVhOC4zNiw4LjM2LDAsMCwxLDQuNzUsM3YtM1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuMDcsMTMuNkg3VjEySDE4LjU3QTMuNjcsMy42NywwLDAsMSwx''@;'; put 'put ''OSw5Ljg5TDIxLjI5LDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMTlsLjU3LS43LjkzLTEuMTRBOC4zNCw4LjM0LDAsMCwxLDI1LjY2LDE1LjRIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LjA3LDEzLjZaTTE3LDI0LjZIN1YyM0gxN1ptMS03SDdWMTZIMThaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEu''@;'; put 'put ''MjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuNDYsMTcuMjNhNi4zNiw2LjM2LDAsMCwwLTQuNCwxMWwtMS45NCwy''@;'; put 'put ''LjM3LjksMy42MSwzLjY2LTQuNDZhNi4yNiw2LjI2LDAsMCwwLDMuNTUsMGwzLjY2LDQuNDYuOS0zLjYxLTEuOTQtMi4zN2E2LjM2LDYuMzYsMCwwLDAtNC40LTExWm0wLDEwLjY4YTQuMzEsNC4zMSwwLDEsMSw0LjM3LTQuMzFBNC4zNSw0LjM1LDAsMCwxLDI3LjQ2LDI3LjkxWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIyLjUsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgxOWwuNTctLjcuOTMtMS4xNEE4LjM0LDguMzQs''@;'; put 'put ''MCwwLDEsMzQsMTguMzd2LTZBNy40Niw3LjQ2LDAsMCwxLDMwLDEzLjVaTTE3LDI0LjZIN1YyM0gxN1ptMS03SDdWMTZIMThabTYtNEg3VjEySDI0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xl''@;'; put 'put ''IGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZUFyY2hpdmU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LDMySDdWMjJINVYz''@;'; put 'put ''MmEyLDIsMCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjJIMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNCwyNGExLDEsMCwwLDAsMSwxaDZhMSwxLDAsMCwwLDAtMkgxNUExLDEsMCwwLDAsMTQsMjRa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNCwxOEg2VjE0aDRhMywzLDAsMCwxLS42OC0xLjg3czAtLjA5LDAtLjEzSDUuNUExLjUsMS41LDAsMCwwLDQsMTMuNVYyMEgxNloiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjUsMTJIMjYuNjZzMCwuMDksMCwuMTNBMywzLDAsMCwxLDI2LDE0aDR2NEgyMmwtMiwySDMyVjEzLjVBMS41LDEuNSwwLDAsMCwzMC41LDEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTkuMThsNi4zOC02LjM1QTEsMSwwLDEsMCwyMywxMS40MWwtNCwzLjk1VjNhMSwxLDAsMSwwLTIsMHYxMi40bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LjQxLDIwLjYsMTgsMjJsLTEuNDEtMS40TDE2LDIwSDVWMzJhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAsMi0yVjIwSDIwWk0yMiwyNGExLDEsMCwwLDEtMSwxSDE1YTEsMSwwLDAsMSwwLTJoNkExLDEsMCww''@;'; put 'put ''LDEsMjIsMjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjUsMTJIMjYuNjZzMCwuMDksMCwuMTNhMywzLDAsMCwxLS44OCwyLjEyTDIyLDE4SDMyVjEzLjVBMS41LDEuNSwwLDAsMCwzMC41LDEyWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yLDE0LjI1YTMsMywwLDAsMS0uODgtMi4xMnMwLS4wOSwwLS4xM0g1LjVBMS41LDEuNSwwLDAsMCw0LDEzLjVWMThIMTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE5LjE4bDYuMzgtNi4zNUExLDEsMCwxLDAsMjMsMTEuNDFsLTQsMy45NVYzYTEsMSwwLDEsMC0yLDB2MTIuNGwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC00IiAvPlxuICAgICAgICAnKSxlLkNsclNoYXBlVW5hcmNoaXZlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOSwzMkg3VjIySDVWMzJhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAsMi0yVjIySDI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTQsMjRhMSwxLDAsMCwwLDEsMWg2YTEsMSwwLDAsMCwwLTJIMTVBMSwxLDAsMCwwLDE0LDI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUsMThINlYxNGg5''@;'; put 'put ''VjEySDUuNUExLjUsMS41LDAsMCwwLDQsMTMuNVYyMEgxNS43OEEzLDMsMCwwLDEsMTUsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC41LDEySDIxdjJoOXY0SDIxYTMsMywwLDAsMS0uNzgsMkgzMlYx''@;'; put 'put ''My41QTEuNSwxLjUsMCwwLDAsMzAuNSwxMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLDkuNTUsMTcsNS42VjE4YTEsMSwwLDEsMCwyLDBWNS42bDQsMy45NWExLDEsMCwxLDAsMS40MS0xLjQyTDE4LDEu''@;'; put 'put ''NzgsMTEuNjEsOC4xM0ExLDEsMCwwLDAsMTMsOS41NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIxYTMsMywwLDAsMS0yLjIyLTFINVYzMmEyLDIsMCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjBI''@;'; put 'put ''MjAuMjFBMywzLDAsMCwxLDE4LDIxWm00LDNhMSwxLDAsMCwxLTEsMUgxNWExLDEsMCwwLDEsMC0yaDZBMSwxLDAsMCwxLDIyLDI0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSwxMkg1LjVBMS41LDEuNSwwLDAs''@;'; put 'put ''MCw0LDEzLjVWMThIMTVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjUsMTJIMjF2NkgzMlYxMy41QTEuNSwxLjUsMCwwLDAsMzAuNSwxMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMsOS41NSwxNyw1LjZWMThhMSwxLDAsMSwwLDIsMFY1LjZsNCwzLjk1YTEsMSwwLDEsMCwxLjQxLTEuNDJMMTgsMS43OCwxMS42MSw4LjEzQTEsMSwwLDAsMCwxMyw5LjU1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''NCIgLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZUNvbm5lY3Q9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDE3SDI4LjIzQTYuMjUsNi4yNSwwLDAsMCwyMiwxMkgxNC4xNWE2LjI1LDYuMjUsMCwwLDAtNi4yMSw1SDJ2Mkg3LjkzYTYuMjIsNi4yMiwwLDAsMCw2LjIyLDVIMjJhNi4y''@;'; put 'put ''Miw2LjIyLDAsMCwwLDYuMjItNUgzNFpNMTcuMDgsMjJIMTQuMTVhNC4xNyw0LjE3LDAsMCwxLTQuMzEtNCw0LjE3LDQuMTcsMCwwLDEsNC4zMS00aDIuOTRaTTIyLDIySDE5VjE0aDNhNC4xNyw0LjE3LDAsMCwxLDQuMzEsNEE0LjE3LDQuMTcsMCwwLDEsMjIsMjJaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywxMkgxNC4xNWE2LjI1LDYuMjUsMCwwLDAtNi4yMSw1SDJ2Mkg3LjkzYTYuMjIsNi4yMiwwLDAsMCw2LjIyLDVIMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0x''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjIzLDE3QTYuMjUsNi4yNSwwLDAsMCwyMiwxMkgxOVYyNGgzYTYuMjIsNi4yMiwwLDAsMCw2LjIyLTVIMzRWMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAnKSxlLkNsclNoYXBlRGlz''@;'; put 'put ''Y29ubmVjdD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTIuMTcsNkE2LjIxLDYuMjEsMCwwLDAsNiwxMUgyLjEzdjJINmE2LjIzLDYuMjMsMCwwLDAsNi4yMSw1SDE3VjZaTTE1LjEsMTZIMTIuMTdhNC4yLDQuMiwwLDAsMS00LjMxLTQsNC4xNyw0LjE3LDAsMCwxLDQuMzEtNEgxNS4x''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuOTIsMjNIMzAuMTRhNi4yNSw2LjI1LDAsMCwwLTYuMjEtNUgxOXYySDE0YTEsMSwwLDEsMCwwLDJoNXY0SDE0YTEsMSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEs''@;'; put 'put ''MWg1djJoNC45NGE2LjIzLDYuMjMsMCwwLDAsNi4yMi01aDMuNzZabS0xMCw1SDIxVjIwaDIuOTRhNC4xNyw0LjE3LDAsMCwxLDQuMzEsNEE0LjE3LDQuMTcsMCwwLDEsMjMuOTQsMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0xMiw2YTYuMjEsNi4yMSwwLDAsMC02LjIxLDVIMnYySDUuODNBNi4yMyw2LjIzLDAsMCwwLDEyLDE4SDE3VjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjc5LDIzSDMwLjE0YTYuMjUsNi4y''@;'; put 'put ''NSwwLDAsMC02LjIxLTVIMTl2MkgxNGExLDEsMCwwLDAtMSwxLDEsMSwwLDAsMCwxLDFoNXY0SDE0YTEsMSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEsMWg1djJoNC45NGE2LjIzLDYuMjMsMCwwLDAsNi4yMi01aDMuNjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAv''@;'; put 'put ''PlxuICAgICAgICAnKSxlLkNsclNoYXBlTGluaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTcuNiwyNC4zMmwtMi40NiwyLjQ0YTQsNCwwLDAsMS01LjYyLDAsMy45MiwzLjkyLDAsMCwxLDAtNS41NWw0LjY5LTQuNjVhNCw0LDAsMCwxLDUuNjIsMCwzLjg2LDMuODYsMCwwLDEsMSwx''@;'; put 'put ''LjcxQTIsMiwwLDAsMCwyMS4xLDE4bDEuMjktMS4yOGE1Ljg5LDUuODksMCwwLDAtMS4xNS0xLjYyLDYsNiwwLDAsMC04LjQ0LDBMOC4xLDE5Ljc5YTUuOTEsNS45MSwwLDAsMCwwLDguMzksNiw2LDAsMCwwLDguNDQsMGwzLjY1LTMuNjJjLS4xNywwLS4zMywwLS41LDBBOCw4LDAsMCwxLDE3''@;'; put 'put ''LjYsMjQuMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC42MSw3LjgyYTYsNiwwLDAsMC04LjQ0LDBsLTMuNjUsMy42MmMuMTcsMCwuMzMsMCwuNDksMGgwYTgsOCwwLDAsMSwyLjEuMjhsMi40Ni0yLjQ0''@;'; put 'put ''YTQsNCwwLDAsMSw1LjYyLDAsMy45MiwzLjkyLDAsMCwxLDAsNS41NWwtNC42OSw0LjY1YTQsNCwwLDAsMS01LjYyLDAsMy44NiwzLjg2LDAsMCwxLTEtMS43MSwyLDIsMCwwLDAtLjI4LjIzbC0xLjI5LDEuMjhhNS44OSw1Ljg5LDAsMCwwLDEuMTUsMS42Miw2LDYsMCwwLDAsOC40NCwwbDQu''@;'; put 'put ''NjktNC42NWE1LjkyLDUuOTIsMCwwLDAsMC04LjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVVbmxpbms9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTUsNSwzLjU5LDYuNDFsOSw5TDguMSwxOS43OWE1''@;'; put 'put ''LjkxLDUuOTEsMCwwLDAsMCw4LjM5LDYsNiwwLDAsMCw4LjQ0LDBMMjEsMjMuNzhsOC42Myw4LjYzTDMxLDMxWk0xNS4xMywyNi43NmE0LDQsMCwwLDEtNS42MiwwLDMuOTIsMy45MiwwLDAsMSwwLTUuNTVMMTQsMTYuNzlsNS41OCw1LjU4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTMsOS4yMmE0LDQsMCwwLDEsNS42MiwwLDMuOTIsMy45MiwwLDAsMSwwLDUuNTVsLTQuNzksNC43NkwyMy43OCwyMWw0Ljc5LTQuNzZhNS45Miw1LjkyLDAsMCwwLDAtOC4zOSw2LDYsMCwwLDAtOC40NCwwbC00''@;'; put 'put ''Ljc2LDQuNzRMMTYuNzgsMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgJyksZS5DbHJTaGFwZUNsb3VkTmV0d29yaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAuNzEsMTUuMTh2LTFBMTEuMjgsMTEuMjgsMCwwLDAsMTku''@;'; put 'put ''NTYsMi44M2gtLjExYTExLjI4LDExLjI4LDAsMCwwLTExLDguOTMsNy40Nyw3LjQ3LDAsMCwwLDAsMTQuOTRIMjkuMTNhNS44Niw1Ljg2LDAsMCwwLDEuNTgtMTEuNTJaTTI5LjEzLDI0LjdIOC40NmE1LjQ3LDUuNDcsMCwxLDEsMC0xMC45NGgxLjY5bC4xMS0uODdhOS4yNyw5LjI3LDAsMCwx''@;'; put 'put ''LDE4LjQ1LDEuM3YxLjI4YzAsLjA5LDAsLjE4LDAsLjI3bC0uMDcsMS4xNS45NC4xMWEzLjg2LDMuODYsMCwwLDEtLjQzLDcuNzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS41OCwzMS4xOEgxOC44NXYt''@;'; put 'put ''Mi40aC0ydjIuNEg2LjA4YTEsMSwwLDAsMCwwLDJoMjMuNWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVDbG91ZFNjYWxlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik02LjMyLDEx''@;'; put 'put ''LjExSDcuODRMOCwxMC4yNEE3LjE5LDcuMTksMCwwLDEsMTUuMDcsNGguMDdhNy4xNSw3LjE1LDAsMCwxLDQuNzEsMS44MywxMS4xLDExLjEsMCwwLDEsMy4wOS42NEE5LjE4LDkuMTgsMCwwLDAsMTUuMTYsMmgtLjA5QTkuMiw5LjIsMCwwLDAsNi4xMyw5LjExLDYuMTUsNi4xNSwwLDAsMCwy''@;'; put 'put ''LjMzLDE5Ljk1LDguMDksOC4wOSwwLDAsMSwzLDE3LjcxYTQuMTIsNC4xMiwwLDAsMS0uODEtMi40NEE0LjE2LDQuMTYsMCwwLDEsNi4zMiwxMS4xMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjQsMTYu''@;'; put 'put ''OTFoMS41MkwxMiwxNmE3LjE5LDcuMTksMCwwLDEsNy4xMi02LjI1aC4wN2E3LjE3LDcuMTcsMCwwLDEsNS43LDIuOTIsMTEuMDUsMTEuMDUsMCwwLDEsMi43Mi43Nyw5LjIsOS4yLDAsMCwwLTguNC01LjY5aC0uMDlhOS4yLDkuMiwwLDAsMC04Ljk0LDcuMTIsNi4xNSw2LjE1LDAsMCwwLTMu''@;'; put 'put ''NjQsMTEsOC4xMSw4LjExLDAsMCwxLC43OS0yLDQuMTQsNC4xNCwwLDAsMSwzLTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi40MiwyNC40N3YtLjYyYTkuMTgsOS4xOCwwLDAsMC0xOC4xMy0yLjE2QTYu''@;'; put 'put ''MTYsNi4xNiwwLDAsMCwxNC40OCwzNEgzMWE0Ljg4LDQuODgsMCwwLDAsMS40Ni05LjUzWk0zMSwzMkgxNC40OGE0LjE2LDQuMTYsMCwxLDEsMC04LjMySDE2bC4xMS0uODdhNy4xOSw3LjE5LDAsMCwxLDcuMTItNi4yNWguMDdhNy4yMSw3LjIxLDAsMCwxLDcuMTIsNy4yNXYxYzAsLjA3LDAs''@;'; put 'put ''LjEzLDAsLjJsLS4wNywxLjExLjk0LjExQTIuODgsMi44OCwwLDAsMSwzMSwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAnKSxlLkNsclNoYXBlQ2xvdWRUcmFmZmljPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi41NCwy''@;'; put 'put ''MC44MmEuODguODgsMCwwLDAtLjg4LS44OEgyMC43NWwxLjEtMS4xQS44OC44OCwwLDAsMCwyMC42LDE3LjZsLTMuMjEsMy4yMkwyMC42LDI0YS44OC44OCwwLDEsMCwxLjI1LTEuMjRMMjAuNzYsMjEuN2g0LjlBLjg4Ljg4LDAsMCwwLDI2LjU0LDIwLjgyWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuMjcsMjEuN2EuODguODgsMCwxLDAsMC0xLjc2aC0uNThhLjg4Ljg4LDAsMSwwLDAsMS43NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTMyLjIxLDIwaC0uMDZhLjg1Ljg1LDAsMCwwLS44NS44OC45MS45MSwwLDAsMCwuOTEuODguODguODgsMCwxLDAsMC0xLjc2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuNTksMTFh''@;'; put 'put ''Ljg4Ljg4LDAsMCwwLTEuMjUsMS4yNGwxLjEsMS4xSDI3LjUzYS44OC44OCwwLDEsMCwwLDEuNzZoNC45bC0xLjA5LDEuMDlhLjg4Ljg4LDAsMCwwLDEuMjUsMS4yNGwzLjIxLTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0yNC41LDE1LjA3YS44OC44OCwwLDEsMCwwLTEuNzZoLS41OGEuODguODgsMCwxLDAsMCwxLjc2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEuOSwxNC4yN2EuODUuODUsMCwwLDAtLjg1''@;'; put 'put ''LS44OEgyMWEuODguODgsMCwxLDAsMCwxLjc2QS45MS45MSwwLDAsMCwyMS45LDE0LjI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuMzYsMjMuNjVjMCwuMTMsMCwuMjYsMCwuMzlhMy43NywzLjc3LDAs''@;'; put 'put ''MCwxLTMuNjIsMy44OUg3LjI4YTUuMzIsNS4zMiwwLDAsMS01LjEzLTUuNDhBNS4zMiw1LjMyLDAsMCwxLDcuMjgsMTdIOC45MUw5LDE2LjEyYTguOTIsOC45MiwwLDAsMSw4LjYyLThoLjA4YTguNDksOC40OSwwLDAsMSw2LjU2LDMuMjloMi4zN2ExMC41NSwxMC41NSwwLDAsMC04LjkxLTUu''@;'; put 'put ''MjVoLS4xMUExMC44MiwxMC44MiwwLDAsMCw3LjIyLDE1YTcuMjgsNy4yOCwwLDAsMC03LDcuNDMsNy4yNyw3LjI3LDAsMCwwLDcuMDgsNy40M0gyNi43N0E1LjcyLDUuNzIsMCwwLDAsMzIuMzUsMjRhMy43NywzLjc3LDAsMCwwLDAtLjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTciIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVEZXBsb3k9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMywySDIyLjFhMSwxLDAsMCwwLDAsMmg4LjUzbC04LjgyLDlhMSwxLDAsMSww''@;'; put 'put ''LDEuNDMsMS40TDMyLDUuNDZWMTMuOWExLDEsMCwwLDAsMiwwVjNBMSwxLDAsMCwwLDMzLDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTExLjU0LDEwLjczbC05LDUuMTdhMSwxLDAsMCwwLS41Ljg3djExYTEs''@;'; put 'put ''MSwwLDAsMCwuNS44N2w5LDUuMTVhMSwxLDAsMCwwLDEsMGw5LTUuMTVhMSwxLDAsMCwwLC41LS44N3YtMTFhMSwxLDAsMCwwLS41LS44N2wtOS01LjE3QTEsMSwwLDAsMCwxMS41NCwxMC43M1pNMTEsMzEuMDhsLTctNFYxOC40NGw3LDRaTTEyLDIxLDQuODEsMTYuODcsMTIsMTIuNzhsNy4y''@;'; put 'put ''MSw0LjEyWm04LDYuMDktNyw0VjIyLjQ0bDctNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMywySDIyLjFhMSwxLDAsMCwwLDAsMmg4LjUzbC04LjgyLDlhMSwxLDAsMSwwLDEuNDMsMS40TDMyLDUuNDZWMTMuOWEx''@;'; put 'put ''LDEsMCwwLDAsMiwwVjNBMSwxLDAsMCwwLDMzLDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTIuNDYsMTAuNzNhMSwxLDAsMCwwLTEsMGwtOC42OCw1TDEyLDIxbDkuMTktNS4yNloiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0yLDI3LjczYTEsMSwwLDAsMCwuNS44N0wxMSwzMy40NnYtMTFMMiwxNy4yOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIGQ9Ik0xMywzMy40''@;'; put 'put ''Nmw4LjUtNC44NmExLDEsMCwwLDAsLjUtLjg3VjE3LjI5bC05LDUuMTVaIi8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVIZWxpeD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTguODgsMTMuMDdhLjkuOSwwLDAs''@;'; put 'put ''MS0uNDktMS42Nmw4LjkzLTUuNzNhLjkuOSwwLDEsMSwxLDEuNTJMOS4zNywxMi45MkEuOS45LDAsMCwxLDguODgsMTMuMDdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTEzLjI1LDE1LjExYS45LjksMCwwLDEt''@;'; put 'put ''LjQ5LTEuNjZMMTgsMTAuMDhhLjkuOSwwLDEsMSwxLDEuNTJMMTMuNzQsMTVBLjkuOSwwLDAsMSwxMy4yNSwxNS4xMVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTkuNzIsMzAuMjNhLjkuOSwwLDAsMS0uNDkt''@;'; put 'put ''MS42Nmw4LjkzLTUuNzNhLjkuOSwwLDAsMSwxLDEuNTJMMjAuMiwzMC4wOUEuOS45LDAsMCwxLDE5LjcyLDMwLjIzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0xOC45MiwyNS45NGEuOS45LDAsMCwxLS40OS0x''@;'; put 'put ''LjY2bDUuMjUtMy4zN2EuOS45LDAsMSwxLDEsMS41MUwxOS40LDI1LjhBLjg5Ljg5LDAsMCwxLDE4LjkyLDI1Ljk0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIGQ9Ik0yMS41Niw1LjY5YTMuNTksMy41OSwwLDAsMSwu''@;'; put 'put ''MTUsMy41M0wxOC44MywxNWgyLjI1bDIuNDMtNC44N2E1LjYxLDUuNjEsMCwwLDAtNS04LjE0SDEzLjI2bC0xLDJoNi4yMkEzLjYxLDMuNjEsMCwwLDEsMjEuNTYsNS42OVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBk''@;'; put 'put ''PSJNMzIuOTEsMjAuNzhBNS41Myw1LjUzLDAsMCwwLDI3LjY2LDE3SDkuMzFhMy41NCwzLjU0LDAsMCwxLTMuNTYtMy42NywzLjYxLDMuNjEsMCwwLDEsLjQyLTEuNTRsNC4yNi04LjQ5YTEsMSwwLDEsMC0xLjc5LS45TDQuNCwxMC44NEE1LjY3LDUuNjcsMCwwLDAsNCwxNS4yMiw1LjUzLDUu''@;'; put 'put ''NTMsMCwwLDAsOS4yOCwxOWg3LjZsLTMuNDQsNi44N2E1LjY0LDUuNjQsMCwwLDAsMS41LDYuOTJBNS4zOCw1LjM4LDAsMCwwLDE4LjQxLDM0aDUuMjVsMS0ySDE4LjQzYTMuNTgsMy41OCwwLDAsMS0zLjIyLTUuMjFMMTkuMTEsMTloOC41NGEzLjQyLDMuNDIsMCwwLDEsMi4xNS43MSwzLjU3''@;'; put 'put ''LDMuNTcsMCwwLDEsMSw0LjQzbC00LjEyLDguMjJhMSwxLDAsMSwwLDEuNzkuOWw0LjA2LTguMUE1LjY3LDUuNjcsMCwwLDAsMzIuOTEsMjAuNzhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuMTYsMTkuNjNBNS41''@;'; put 'put ''NSw1LjU1LDAsMCwwLDI3LjQyLDE3SDEwLjA2YTQuMzYsNC4zNiwwLDAsMS0zLjY3LTIsNC4wNyw0LjA3LDAsMCwxLS4xOS00LjEzbDMuNjItNywxLjQyLDEuNjMtMi43NCw1LjMsOC44NC01LjY2YS45MS45MSwwLDAsMSwxLDEuNTNMNy44NCwxMy4zOGEyLjEzLDIuMTMsMCwwLDAsLjI0LjUy''@;'; put 'put ''LDIuMjgsMi4yOCwwLDAsMCwxLjY1LDFMMTguMTEsOS41YS45MS45MSwwLDAsMSwxLDEuNTJMMTMsMTQuOTRIMjAuOGwyLjQxLTQuODJhNS42LDUuNiwwLDAsMC01LTguMTJIOWExLDEsMCwwLDAtLjkuNTZMMy44OCwxMC44OWE1LjYsNS42LDAsMCwwLDUsOC4xMmg3LjY1bC0zLjQzLDYuODdh''@;'; put 'put ''NS42LDUuNiwwLDAsMCw1LDguMTJoOS4yOGExLDEsMCwwLDAsLjkzLS42NWw0LjE0LTguMjRBNS41OCw1LjU4LDAsMCwwLDMyLjE2LDE5LjYzWk0xNy43NSwyNS41N0EuOTEuOTEsMCwwLDEsMTgsMjQuMzFsNi0zLjg4QS45MS45MSwwLDEsMSwyNSwyMmwtNiwzLjg4YS45MS45MSwwLDAsMS0x''@;'; put 'put ''LjI2LS4yN1pNMjksMjQuMzRsLTksNS43OGEuOTEuOTEsMCwxLDEtMS0xLjUzbDktNS43OGEuOTEuOTEsMCwxLDEsMSwxLjUzWiIvPlxuICAgICAgICAnKSxlLkNsclNoYXBlRmxhc2s9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjQzLDI3LjI4LDIzLDE0Ljg0VjRoMWExLDEsMCww''@;'; put 'put ''LDAsMC0ySDEyYTEsMSwwLDAsMCwwLDJoMVYxNC44NEw0LjUxLDI3LjM2QTQuMjksNC4yOSwwLDAsMCw1LDMyLjgsNC4zOCw0LjM4LDAsMCwwLDguMTUsMzRIMjhhNC4yNCw0LjI0LDAsMCwwLDMuNDItNi43MlpNMjkuODUsMzFhMi42MiwyLjYyLDAsMCwxLTIsMUg4YTIuMiwyLjIsMCwwLDEt''@;'; put 'put ''Mi4wNi0xLjQxLDIuNjgsMi42OCwwLDAsMSwuMjktMi4xN2wzLTQuNDQsMTQsMC0xLjMxLTJIMTAuNTdMMTUsMTUuNDZWNGg2VjE1LjQ2bDguODQsMTMuMDVBMi4yMywyLjIzLDAsMCwxLDI5Ljg1LDMxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMzEuNDksMjcuNCwyMywxNC45NFY0aDFhMSwxLDAsMCwwLDAtMkgxMi4wOGExLDEsMCwwLDAsMCwySDEzVjE0Ljk0TDQuNTgsMjcuMzFhNC4zMSw0LjMxLDAsMCwwLS43OCwzQTQuMjMsNC4yMywwLDAsMCw4LDM0SDI3Ljg2QTQuMzYsNC4zNiwwLDAsMCwz''@;'; put 'put ''MSwzMi44LDQuMjMsNC4yMywwLDAsMCwzMS40OSwyNy40Wk0xNSwxNS40OVY0aDZWMTUuNDlMMjYuMTUsMjNIOS44NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVBZG1pbmlzdHJhdG9yPSgwLGEuY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGQ9Ik0xNC42OCwxNC44MWE2Ljc2LDYuNzYsMCwxLDEsNi43Ni02Ljc1QTYuNzcsNi43NywwLDAsMSwxNC42OCwxNC44MVptMC0xMS41MWE0Ljc2LDQuNzYsMCwxLDAsNC43Niw0Ljc2QTQuNzYsNC43NiwwLDAsMCwxNC42OCwzLjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNi40MiwzMS42OEEyLjE0LDIuMTQsMCwwLDEsMTUuOCwzMEg0VjI0LjIyYTE0LjgxLDE0LjgxLDAsMCwxLDExLjA5LTQuNjhsLjcyLDBhMi4yLDIuMiwwLDAsMSwuNjItMS44NWwuMTItLjExYy0uNDcsMC0xLS4w''@;'; put 'put ''Ni0xLjQ2LS4wNkExNi40NywxNi40NywwLDAsMCwyLjIsMjMuMjZhMSwxLDAsMCwwLS4yLjZWMzBhMiwyLDAsMCwwLDIsMkgxNi43WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODcsMTYuMjlhLjM3LjM3''@;'; put 'put ''LDAsMCwxLC4xNSwwLC40Mi40MiwwLDAsMC0uMTUsMFoiICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwyMy4zMmwtMi0uNjFhNy4yMSw3LjIxLDAsMCwwLS41OC0xLjQxbDEtMS44NkEuMzguMzgsMCww''@;'; put 'put ''LDAsMzIsMTlsLTEuNDUtMS40NWEuMzYuMzYsMCwwLDAtLjQ0LS4wN2wtMS44NCwxYTcuMTUsNy4xNSwwLDAsMC0xLjQzLS42MWwtLjYxLTJhLjM2LjM2LDAsMCwwLS4zNi0uMjRIMjMuODJhLjM2LjM2LDAsMCwwLS4zNS4yNmwtLjYxLDJhNyw3LDAsMCwwLTEuNDQuNmwtMS44Mi0xYS4zNS4z''@;'; put 'put ''NSwwLDAsMC0uNDMuMDdMMTcuNjksMTlhLjM4LjM4LDAsMCwwLS4wNi40NGwxLDEuODJBNi43Nyw2Ljc3LDAsMCwwLDE4LDIyLjY5bC0yLC42YS4zNi4zNiwwLDAsMC0uMjYuMzV2Mi4wNUEuMzUuMzUsMCwwLDAsMTYsMjZsMiwuNjFhNyw3LDAsMCwwLC42LDEuNDFsLTEsMS45MWEuMzYuMzYs''@;'; put 'put ''MCwwLDAsLjA2LjQzbDEuNDUsMS40NWEuMzguMzgsMCwwLDAsLjQ0LjA3bDEuODctMWE3LjA5LDcuMDksMCwwLDAsMS40LjU3bC42LDJhLjM4LjM4LDAsMCwwLC4zNS4yNmgyLjA1YS4zNy4zNywwLDAsMCwuMzUtLjI2bC42MS0yLjA1YTYuOTIsNi45MiwwLDAsMCwxLjM4LS41N2wxLjg5LDFh''@;'; put 'put ''LjM2LjM2LDAsMCwwLC40My0uMDdMMzIsMzAuNEEuMzUuMzUsMCwwLDAsMzIsMzBsLTEtMS44OGE3LDcsMCwwLDAsLjU4LTEuMzlsMi0uNjFhLjM2LjM2LDAsMCwwLC4yNi0uMzVWMjMuNjdBLjM2LjM2LDAsMCwwLDMzLjY4LDIzLjMyWk0yNC44NSwyOGEzLjM0LDMuMzQsMCwxLDEsMy4zMy0z''@;'; put 'put ''LjMzQTMuMzQsMy4zNCwwLDAsMSwyNC44NSwyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTQuNjciIGN5PSI4LjMiIHI9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTYuNDQsMzEuODJhMi4xNSwyLjE1LDAsMCwxLS4zOC0yLjU1bC41My0xLTEuMDktLjMzQTIuMTQsMi4xNCwwLDAsMSwxNCwyNS44NFYyMy43OWEyLjE2LDIuMTYsMCwwLDEsMS41My0yLjA3bDEuMDktLjMzLS41Mi0xYTIuMTcsMi4xNywwLDAsMSwu''@;'; put 'put ''MzUtMi41MiwxOC45MiwxOC45MiwwLDAsMC0yLjMyLS4xNkExNS41OCwxNS41OCwwLDAsMCwyLDIzLjA3djcuNzVhMSwxLDAsMCwwLDEsMUgxNi40NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNywyMy40Nmwt''@;'; put 'put ''Mi0uNmE2LjczLDYuNzMsMCwwLDAtLjU4LTEuNDJsMS0xLjg2YS4zNS4zNSwwLDAsMC0uMDctLjQzbC0xLjQ1LTEuNDZhLjM4LjM4LDAsMCwwLS40My0uMDdsLTEuODUsMWE3Ljc0LDcuNzQsMCwwLDAtMS40My0uNmwtLjYxLTJhLjM4LjM4LDAsMCwwLS4zNi0uMjVIMjMuODRhLjM4LjM4LDAs''@;'; put 'put ''MCwwLS4zNS4yNmwtLjYsMmE2Ljg1LDYuODUsMCwwLDAtMS40NS42MWwtMS44MS0xYS4zOC4zOCwwLDAsMC0uNDQuMDZsLTEuNDcsMS40NGEuMzcuMzcsMCwwLDAtLjA3LjQ0bDEsMS44MkE3LjI0LDcuMjQsMCwwLDAsMTgsMjIuODNsLTIsLjYxYS4zNi4zNiwwLDAsMC0uMjYuMzV2Mi4wNWEu''@;'; put 'put ''MzYuMzYsMCwwLDAsLjI2LjM1bDIsLjYxYTcuMjksNy4yOSwwLDAsMCwuNiwxLjQxbC0xLDEuOWEuMzcuMzcsMCwwLDAsLjA3LjQ0TDE5LjE2LDMyYS4zOC4zOCwwLDAsMCwuNDQuMDZsMS44Ny0xYTcuMDksNy4wOSwwLDAsMCwxLjQuNTdsLjYsMi4wNWEuMzguMzgsMCwwLDAsLjM2LjI2aDIu''@;'; put 'put ''MDVhLjM4LjM4LDAsMCwwLC4zNS0uMjZsLjYtMi4wNWE2LjY4LDYuNjgsMCwwLDAsMS4zOC0uNTdsMS44OSwxYS4zOC4zOCwwLDAsMCwuNDQtLjA2TDMyLDMwLjU1YS4zOC4zOCwwLDAsMCwuMDYtLjQ0bC0xLTEuODhhNi45Miw2LjkyLDAsMCwwLC41Ny0xLjM4bDItLjYxYS4zOS4zOSwwLDAs''@;'; put 'put ''MCwuMjctLjM1VjIzLjgyQS40LjQsMCwwLDAsMzMuNywyMy40NlptLTguODMsNC43MmEzLjM0LDMuMzQsMCwxLDEsMy4zMy0zLjM0QTMuMzQsMy4zNCwwLDAsMSwyNC44NywyOC4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICcpLGUuQ2xy''@;'; put 'put ''U2hhcGVIYXJkRHJpdmU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDhhMiwyLDAsMCwwLTItMkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yWk0zMiwyOEg0VjhIMzJWMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjYuMjEiIGN5PSIxMC4yNSIgcj0iMS4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyOS44MSIgY3k9IjEwLjI1IiByPSIxLjI1IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjYuMjEiIGN5PSIyNS40MiIgcj0iMS4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIy''@;'; put 'put ''OS44MSIgY3k9IjI1LjQyIiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS44OCwxOC4wOGEzLjU5LDMuNTksMCwxLDAsMy41OS0zLjU5LDMuODQsMy44NCwwLDAsMC0uOTEuMTNMMTUsMTYuMTZh''@;'; put 'put ''Mi4wOCwyLjA4LDAsMCwxLC41LS4wNywyLDIsMCwxLDEtMiwyLDEuNjQsMS42NCwwLDAsMSwuMDgtLjVMMTIsMTcuMTZBMy41MywzLjUzLDAsMCwwLDExLjg4LDE4LjA4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMTUuNDcsMjUuNzNhNy42Niw3LjY2LDAsMCwxLTcuNjUtNy42NSw3LjU1LDcuNTUsMCwwLDEsLjI3LTJMNi41NCwxNS43YTkuMjQsOS4yNCwwLDAsMCwxNy44LDQuOTVIMjIuNjZBNy42NCw3LjY0LDAsMCwxLDE1LjQ3LDI1LjczWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTciIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguMjIsMTcuODNhLjguOCwwLDAsMC0uOC0uOEgyNC42NmE5LjI2LDkuMjYsMCwwLDAtOS4xOS04LjIsOS4zNiw5LjM2LDAsMCwwLTIuMzguMzJsLjQyLDEuNTRhNy44Niw3Ljg2LDAsMCwxLDItLjI2QTcuNjYsNy42Niww''@;'; put 'put ''LDAsMSwyMywxN0gyMC45MmEuOC44LDAsMCwwLDAsMS42aDYuNUEuOC44LDAsMCwwLDI4LjIyLDE3LjgzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCww''@;'; put 'put ''LDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTEyLDE3LjE2bDEuNTQuNDJhMS42NCwxLjY0LDAsMCwwLS4wOC41LDIsMiwwLDEsMCwyLTIsMi4wOCwyLjA4LDAsMCwwLS41LjA3bC0uNDEtMS41NGEzLjg0LDMuODQsMCwwLDEsLjkxLS4xMywzLjU5LDMuNTksMCwxLDEt''@;'; put 'put ''My41OSwzLjU5QTMuNTMsMy41MywwLDAsMSwxMiwxNy4xNlpNNS4zMSw4QTEuMjUsMS4yNSwwLDEsMSw0LjA2LDkuMjUsMS4yNSwxLjI1LDAsMCwxLDUuMzEsOFptMCwyMC4wNmExLjI1LDEuMjUsMCwxLDEsMS4yNS0xLjI1QTEuMjUsMS4yNSwwLDAsMSw1LjMxLDI4LjA2Wm0xMC4xNi0uNzNB''@;'; put 'put ''OS4yMiw5LjIyLDAsMCwxLDYuNTQsMTUuN2wxLjU1LjQxYTcuNTUsNy41NSwwLDAsMC0uMjcsMiw3LjY0LDcuNjQsMCwwLDAsMTQuODQsMi41N2gxLjY4QTkuMjUsOS4yNSwwLDAsMSwxNS40NywyNy4zM1ptMTItOC43aC02LjVhLjguOCwwLDAsMSwwLTEuNkgyM2E3LjY2LDcuNjYsMCwwLDAt''@;'; put 'put ''Ny41Ny02LjYsNy44Niw3Ljg2LDAsMCwwLTIsLjI2bC0uNDItMS41NGE5LjM2LDkuMzYsMCwwLDEsMi4zOC0uMzJBOS4yNiw5LjI2LDAsMCwxLDI0LjY2LDE3aDIuNzZhLjguOCwwLDAsMSwwLDEuNlptMy4zOSw5LjQzYTEuMjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwx''@;'; put 'put ''LDMwLjgxLDI4LjA2Wm0wLTE3LjU2YTEuMjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDMwLjgxLDEwLjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAnKSxlLkNsclNoYXBlSGFyZERyaXZlRGlza3M9KDAsYS5jbHJJ''@;'; put 'put ''Y29uU1ZHKSgnPHBhdGggZD0iTTI2LDUuNzRBMS43NCwxLjc0LDAsMCwwLDI0LjI2LDRIMy43NEExLjc0LDEuNzQsMCwwLDAsMiw1Ljc0VjIwLjI2QTEuNzQsMS43NCwwLDAsMCwzLjc0LDIySDRWNkgyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTMwLDkuNzRBMS43NCwxLjc0LDAsMCwwLDI4LjI2LDhINy43NEExLjc0LDEuNzQsMCwwLDAsNiw5Ljc0VjI0LjI2QTEuNzQsMS43NCwwLDAsMCw3Ljc0LDI2SDhWMTBIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yNiwxMkgxMS43NEExLjc0LDEuNzQsMCwwLDAsMTAsMTMuNzRWMjguMjZBMS43NCwxLjc0LDAsMCwwLDExLjc0LDMwSDMyLjI2QTEuNzQsMS43NCwwLDAsMCwzNCwyOC4yNlYxMy43NEExLjc0LDEuNzQsMCwwLDAsMzIuMjYsMTJaTTMyLDI4''@;'; put 'put ''SDEyVjE0SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuOTQsMjMuNjhhMi42NCwyLjY0LDAsMSwwLTIuNy0yLjYzQTIuNjcsMi42NywwLDAsMCwxOS45NCwyMy42OFptMC0zLjg3YTEuMjQsMS4yNCww''@;'; put 'put ''LDEsMS0xLjI5LDEuMjRBMS4yNywxLjI3LDAsMCwxLDE5Ljk0LDE5LjgxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuOTQsMTYuMjJhNC45Myw0LjkzLDAsMCwxLDQuOTUsNC4zNUgyMy43MVYyMmg0LjQx''@;'; put 'put ''YS43LjcsMCwwLDAsMC0xLjRIMjYuMzFhNi4zMyw2LjMzLDAsMCwwLTYuMzctNS43NSw2LjU4LDYuNTgsMCwwLDAtMS40OC4xN2wuMzUsMS4zN0E0LjczLDQuNzMsMCwwLDEsMTkuOTQsMTYuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0xOS45NCwyNy4yN2E2LjQyLDYuNDIsMCwwLDAsNS42Ny0zLjM1SDIzLjkzYTUsNSwwLDAsMS00LDEuOTUsNC45MSw0LjkxLDAsMCwxLTUtNC44Miw1LjE2LDUuMTYsMCwwLDEsLjA4LS43OUwxMy42MywyMGE3LDcsMCwwLDAtLjA5LDFBNi4zMiw2LjMyLDAsMCww''@;'; put 'put ''LDE5Ljk0LDI3LjI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsNS43NEExLjc0LDEuNzQsMCwwLDAsMjQuMjYsNEgzLjc0QTEuNzQsMS43NCwwLDAsMCwyLDUuNzRWMjAuMjZBMS43NCwxLjc0LDAsMCww''@;'; put 'put ''LDMuNzQsMjJINFY2SDI2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCw5Ljc0QTEuNzQsMS43NCwwLDAsMCwyOC4yNiw4SDcuNzRBMS43NCwxLjc0LDAsMCwwLDYsOS43NFYyNC4yNkExLjc0LDEuNzQsMCwwLDAs''@;'; put 'put ''Ny43NCwyNkg4VjEwSDMwWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS42MiwyMi42QTEuNTUsMS41NSwwLDEsMCwxOCwyMS4wNSwxLjYsMS42LDAsMCwwLDE5LjYyLDIyLjZaIiBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjI2LDEySDExLjc0QTEuNzQsMS43NCwwLDAsMCwxMCwxMy43NFYyOC4yNkExLjc0LDEuNzQsMCwwLDAsMTEuNzQsMzBIMzIuMjZBMS43NCwxLjc0LDAsMCwwLDM0LDI4LjI2VjEzLjc0QTEuNzQsMS43NCww''@;'; put 'put ''LDAsMCwzMi4yNiwxMlpNMTkuNjIsMTcuNzRhMy4zMSwzLjMxLDAsMSwxLTMuMzgsMy4zMUEzLjM1LDMuMzUsMCwwLDEsMTkuNjIsMTcuNzRabTAsMTEuMTNhNy45NCw3Ljk0LDAsMCwxLTgtNy44Miw3LjgzLDcuODMsMCwwLDEsLjExLTEuMjlsMS43NS4zYTUuMzYsNS4zNiwwLDAsMC0uMTEs''@;'; put 'put ''MSw2LjE4LDYuMTgsMCwwLDAsNi4yOCw2LjA2LDYuMzUsNi4zNSwwLDAsMCw1LTIuNDZoMi4xQTguMDYsOC4wNiwwLDAsMSwxOS42MiwyOC44N1pNMjkuODksMjIuMkgyNC4zNlYyMC40NGgxLjQ4QTYuMTksNi4xOSwwLDAsMCwxOS42MiwxNWE2LjQ4LDYuNDgsMCwwLDAtMS40MS4xNmwtLjQ1''@;'; put 'put ''LTEuN2E4LjE2LDguMTYsMCwwLDEsMS44Ni0uMjIsOCw4LDAsMCwxLDgsNy4yMWgyLjI2YS44OC44OCwwLDAsMSwwLDEuNzZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPlxuICAgICAgICAnKSxlLkNsclNoYXBlTlZNZT0oMCxhLmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBkPSJNMjcsMjJWMTRhMiwyLDAsMCwwLTItMkgxMWEyLDIsMCwwLDAtMiwydjhhMiwyLDAsMCwwLDIsMkgyNUEyLDIsMCwwLDAsMjcsMjJaTTExLDE0SDI1djhIMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9''@;'; put 'put ''IjE5IiB5PSI2IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI1LjAxIiB5PSI2IiB3aWR0aD0iMS45NyIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LjgsOEgxNi44N1Y2aC0xMUw3Ljc4LDQuMDhhMSwxLDAsMCwwLDAtMS40MiwxLDEsMCwwLDAtMS40MSwwTDIsNyw2LjM3LDExLjRhMSwxLDAsMCwwLDEuNDEsMCwxLDEsMCwwLDAsMC0xLjQxWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuNjEsMjQuNjhhMSwxLDAsMCwwLTEuNDEsMCwxLDEsMCwwLDAsMCwxLjQyTDMwLjEsMjhIMTl2MkgzMC4ybC0yLDJhMSwxLDAsMCwwLDAsMS40MSwxLDEsMCwwLDAsLjcuMjksMSwxLDAs''@;'; put 'put ''MCwwLC43MS0uMjlMMzQsMjkuMDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEzIiB5PSIyOCIgd2lkdGg9IjQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI5IiB5PSIyOCIgd2lkdGg9IjEuOTciIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+XG4gICAgICAgICcpLGUuQ2xyU2hhcGVTU0Q9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDZI''@;'; put 'put ''NEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wm0wLDIySDRWOEgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNi4yMSIgY3k9IjEw''@;'; put 'put ''LjI1IiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI5LjgxIiBjeT0iMTAuMjUiIHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPGNpcmNsZSBjeD0iNi4yMSIgY3k9IjI1LjQyIiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI5LjgxIiBjeT0iMjUuNDIiIHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLDE4LjYyYzEuMzIuMzEsMS45MS41NCwxLjkxLDEuMjJzLS41MywxLjA5LTEuNTUsMS4wOWE0LDQsMCwwLDEtMi43MS0xLjExbC0uODYsMS4wNmE1LDUsMCwwLDAsMy41MiwxLjM0YzIsMCwzLjEtMSwzLjEt''@;'; put 'put ''Mi41MnMtMS4xNS0yLjA1LTIuODctMi40NGMtMS4zMS0uMy0xLjkyLS41NC0xLjkyLTEuMjFBMS4yNSwxLjI1LDAsMCwxLDEwLDE1YTMuNjgsMy42OCwwLDAsMSwyLjM3LDFsLjgxLTEuMUE0LjU4LDQuNTgsMCwwLDAsMTAsMTMuNjljLTEuNzQsMC0zLDEuMDUtMywyLjQ5UzguMjYsMTguMjIs''@;'; put 'put ''MTAsMTguNjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy44MywyMC45M2E0LDQsMCwwLDEtMi43MS0xLjExbC0uODYsMS4wNmE1LDUsMCwwLDAsMy41MiwxLjM0YzIsMCwzLjEtMSwzLjEtMi41MlMxOS43''@;'; put 'put ''MywxNy42NSwxOCwxNy4yNmMtMS4zMS0uMy0xLjkyLS41NC0xLjkyLTEuMjFBMS4yNSwxLjI1LDAsMCwxLDE3LjQ4LDE1YTMuNjgsMy42OCwwLDAsMSwyLjM3LDFsLjgxLTEuMWE0LjU2LDQuNTYsMCwwLDAtMy4xMi0xLjE1Yy0xLjczLDAtMywxLjA1LTMsMi40OXMxLjE5LDIsMi44OSwyLjQ0''@;'; put 'put ''YzEuMzIuMzEsMS45MS41NCwxLjkxLDEuMjJTMTguODUsMjAuOTMsMTcuODMsMjAuOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS45LDE4YzAtMi40MS0xLjkyLTQuMTItNC42NC00LjEyaC0yLjl2OC4y''@;'; put 'put ''NGgyLjlDMjgsMjIuMDgsMjkuOSwyMC4zNywyOS45LDE4Wm0tNi0yLjc2aDEuNTZhMi43NywyLjc3LDAsMSwxLDAsNS41M0gyMy44NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAs''@;'; put 'put ''Miw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk01LjIxLDhBMS4yNSwxLjI1LDAsMSwxLDQsOS4yNSwxLjI1LDEuMjUsMCwwLDEsNS4yMSw4Wm0wLDIwYTEuMjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDUuMjEsMjha''@;'; put 'put ''bTUuMDYtNS43OGE1LDUsMCwwLDEtMy41Mi0xLjM0bC44Ni0xLjA2YTQsNCwwLDAsMCwyLjcxLDEuMTFjMSwwLDEuNTUtLjUsMS41NS0xLjA5cy0uNTktLjkxLTEuOTEtMS4yMmMtMS43LS40LTIuODktLjg5LTIuODktMi40NHMxLjIyLTIuNDksMy0yLjQ5YTQuNTgsNC41OCwwLDAsMSwzLjEy''@;'; put 'put ''LDEuMTVsLS44MSwxLjFBMy42OCwzLjY4LDAsMCwwLDEwLDE1YTEuMjUsMS4yNSwwLDAsMC0xLjM5LDEuMDhjMCwuNjcuNjEuOTEsMS45MiwxLjIxLDEuNzIuMzksMi44Ny45NCwyLjg3LDIuNDRTMTIuMjQsMjIuMjIsMTAuMjcsMjIuMjJabTcuNTEsMGE1LDUsMCwwLDEtMy41Mi0xLjM0bC44''@;'; put 'put ''Ni0xLjA2YTQsNCwwLDAsMCwyLjcxLDEuMTFjMSwwLDEuNTUtLjUsMS41NS0xLjA5cy0uNTktLjkxLTEuOTEtMS4yMmMtMS43LS40LTIuODktLjg5LTIuODktMi40NHMxLjIzLTIuNDksMy0yLjQ5YTQuNTYsNC41NiwwLDAsMSwzLjEyLDEuMTVsLS44MSwxLjFhMy42OCwzLjY4LDAsMCwwLTIu''@;'; put 'put ''MzctMSwxLjI1LDEuMjUsMCwwLDAtMS4zOSwxLjA4YzAsLjY3LjYxLjkxLDEuOTIsMS4yMSwxLjcyLjM5LDIuODcuOTQsMi44NywyLjQ0UzE5Ljc1LDIyLjIyLDE3Ljc4LDIyLjIyWm00LjU4LS4xNFYxMy44NGgyLjljMi43MiwwLDQuNjQsMS43MSw0LjY0LDQuMTJTMjgsMjIuMDgsMjUuMjYs''@;'; put 'put ''MjIuMDhaTTMwLjY5LDI4YTEuMjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDMwLjY5LDI4Wm0wLTE3LjVhMS4yNSwxLjI1LDAsMSwxLDEuMjUtMS4yNUExLjI1LDEuMjUsMCwwLDEsMzAuNjksMTAuNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuODYsMTUuMmgxLjU2YTIuNzcsMi43NywwLDEsMSwwLDUuNTNIMjMuODZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAnKSxlLkNsclNoYXBlQmx1ZXRvb3RoPSgwLGEuY2xySWNvblNW''@;'; put 'put ''RykoJzxwYXRoIGQ9Ik0yNi42NCwyNS4yNywxOSwxNy41MywxOSwzLDI1LjIxLDkuNGwtNS42NSw1Ljc5TDIxLDE2LjYybDUuNjgtNS44MmEyLDIsMCwwLDAsMC0yLjc4TDIwLjQ4LDEuN0EyLjA4LDIuMDgsMCwwLDAsMTguODUsMSwyLDIsMCwwLDAsMTcsM1YxNS4zOEwxMC4wNSw4LjI3QTEs''@;'; put 'put ''MSwwLDAsMCw4LjYyLDkuNjZMMTYuNzksMTgsOS4wNiwyNmExLDEsMCwwLDAsMCwxLjQxLDEsMSwwLDAsMCwuNy4yOSwxLDEsMCwwLDAsLjcyLS4zMUwxNywyMC42OFYzM2EyLjA3LDIuMDcsMCwwLDAsLjcxLDEuNjJBMiwyLDAsMCwwLDE5LDM1YTEuOTQsMS45NCwwLDAsMCwxLjQyLS42bDYu''@;'; put 'put ''MjMtNi4zOEEyLDIsMCwwLDAsMjYuNjQsMjUuMjdaTTE5LDMzLjA1VjIwLjI5bDYuMjEsNi4zNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICA8cGF0aCBkPSJNMjYuNTIsMjQuNTJsLTUuNjUtNS44My0xLjQ2LTEuNXYtMTJMMjMuNzksOS43bC0z''@;'; put 'put ''LjYsMy43MSwyLjI0LDIuMjksNC4wOS00LjIyYTIuNTQsMi41NCwwLDAsMCwwLTMuNTZMMjAuNTcsMS43OEEyLjU0LDIuNTQsMCwwLDAsMTYuMiwzLjU1VjEzLjg2bC01LjUzLTUuN2ExLjYsMS42LDAsMSwwLTIuMywyLjIzTDE1Ljc1LDE4bC03LDcuMTlhMS42LDEuNiwwLDAsMCwwLDIuMjYs''@;'; put 'put ''MS42MywxLjYzLDAsMCwwLDEuMTIuNDUsMS41OCwxLjU4LDAsMCwwLDEuMTUtLjQ5bDUuMTEtNS4yN1YzMi40NWEyLjUzLDIuNTMsMCwwLDAsMS41OSwyLjM2LDIuNDQsMi40NCwwLDAsMCwuOTUuMTksMi41NiwyLjU2LDAsMCwwLDEuODMtLjc3bDUuOTUtNi4xNUEyLjU0LDIuNTQsMCwwLDAs''@;'; put 'put ''MjYuNTIsMjQuNTJaTTE5LjQsMzAuODNWMjEuNzdsNC4zOSw0LjUzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxlLkNsclNoYXBlQmx1ZXRvb3RoT2ZmPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOSwzLDI1LjIyLDkuNGwtNS42Niw1LjhMMjEs''@;'; put 'put ''MTYuNjNsNS42OC01LjgzYTIsMiwwLDAsMCwwLTIuNzhMMjAuNDgsMS43QTIsMiwwLDAsMCwxOC44NSwxLDIsMiwwLDAsMCwxNywzdjExLjRsMiwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTQuNzcsNSwzLjM2LDYuNDIsMTUuODks''@;'; put 'put ''MTksOS4wNiwyNmExLDEsMCwwLDAsLjcxLDEuNywxLDEsMCwwLDAsLjcyLS4zMUwxNywyMC42OFYzMi45NGEyLjA4LDIuMDgsMCwwLDAsLjcxLDEuNjNBMiwyLDAsMCwwLDE5LDM1YTIsMiwwLDAsMCwxLjQyLS42bDUuNDEtNS41NCwzLjU0LDMuNTNMMzAuNzcsMzFaTTE5LDMzLjA1di0xMWw1''@;'; put 'put ''LjQxLDUuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTkuMzEsNS4xNywyMy43LDkuN2wtMy41OSwzLjcxLDIuMjQsMi4yOSw0LjA5LTQuMjJhMi41NiwyLjU2LDAsMCwwLDAtMy41NmwtNi02LjE0YTIuNTEsMi41MSwwLDAsMC0y''@;'; put 'put ''Ljc3LS41OSwyLjU0LDIuNTQsMCwwLDAtMS42LDIuMzZ2MTBsMy4yMSwzLjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNNC41LDUsMy4wOSw2LjQyLDE1LjE3LDE4LjUxLDguNywyNS4xOUExLjYsMS42LDAsMCwwLDkuODUsMjcuOSwxLjU3''@;'; put 'put ''LDEuNTcsMCwwLDAsMTEsMjcuNDFsNS4xMS01LjI3VjMyLjQ1YTIuNTQsMi41NCwwLDAsMCwxLjYsMi4zNiwyLjQ0LDIuNDQsMCwwLDAsLjk1LjE5LDIuNTUsMi41NSwwLDAsMCwxLjgyLS43N2w1LjEyLTUuMjksMy40OSwzLjQ4TDMwLjUsMzFaTTE5LjgxLDMwLjgzVjIyLjY1bDQsNFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZVByb2Nlc3NPblZNPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy40OSwyNi4yOGExLDEsMCwwLDAtMS4yLS43bC0yLjQ5LjY3YTE0LjIzLDE0LjIzLDAsMCwwLDIuNC02Ljc1QTE0LjQ4LDE0''@;'; put 'put ''LjQ4LDAsMCwwLDI3LjM3LDcuMzUsMSwxLDAsMCwwLDI2LDcuNDRhMSwxLDAsMCwwLC4wOSwxLjQxLDEyLjQ1LDEyLjQ1LDAsMCwxLDQuMTYsMTAuNDYsMTIuMTksMTIuMTksMCwwLDEtMiw1Ljc0TDI4LDIyLjU0YTEsMSwwLDEsMC0xLjk1LjE2bC41LDYuNDQsNi4yNS0xLjY2QTEsMSwwLDAs''@;'; put 'put ''MCwzMy40OSwyNi4yOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik00LjMxLDE3LjA4YTEuMDYsMS4wNiwwLDAsMCwuNDQuMTYsMSwxLDAsMCwwLDEuMTItLjg1QTEyLjIxLDEyLjIxLDAsMCwxLDE4LjY5LDUuODRMMTYuNDUsNy4zN2Ex''@;'; put 'put ''LDEsMCwwLDAsLjQ3LDEuNzlBMSwxLDAsMCwwLDE3LjU2LDlsNS4zMy0zLjY2TDE4LjMzLjc2YTEsMSwwLDEsMC0xLjM5LDEuMzhsMS43LDEuN0ExNC4yLDE0LjIsMCwwLDAsMy44OSwxNi4xMiwxLDEsMCwwLDAsNC4zMSwxNy4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMS43MywyOS45M2ExMiwxMiwwLDAsMS00Ljg0LjUxLDEyLjMsMTIuMywwLDAsMS05LjU3LTYuM2wyLjQ5LjkzYTEsMSwwLDAsMCwuNjktMS44NGwtNC41OS0xLjdoMEw0LjQ0LDIxLDMuMzMsMjcuMzVhMSwxLDAsMCwwLC43OSwxLjEzbC4xNywwYTEs''@;'; put 'put ''MSwwLDAsMCwxLS44MWwuNDItMi40YTE0LjMsMTQuMywwLDAsMCwxMSw3LjE0LDEzLjkxLDEzLjkxLDAsMCwwLDUuNjMtLjYsMSwxLDAsMCwwLS42LTEuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMiwxM0gxNGExLDEsMCwwLDAt''@;'; put 'put ''MSwxdjhhMSwxLDAsMCwwLDEsMWg4YTEsMSwwLDAsMCwxLTFWMTRBMSwxLDAsMCwwLDIyLDEzWm0tMSw4SDE1VjE1aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxlLkNsclNoYXBlQXNzaWduVXNlcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBk''@;'; put 'put ''PSJNMTgsMTdhNy40Niw3LjQ2LDAsMSwwLTcuNDUtNy40NkE3LjQ2LDcuNDYsMCwwLDAsMTgsMTdaTTE4LDQuMDdhNS40Niw1LjQ2LDAsMSwxLTUuNDUsNS40NUE1LjQ2LDUuNDYsMCwwLDEsMTgsNC4wN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxw''@;'; put 'put ''YXRoIGQ9Ik02LDMxLjg5VjI1Ljc3YTE2LjEzLDE2LjEzLDAsMCwxLDEyLTUsMTYuNjEsMTYuNjEsMCwwLDEsOC43MSwyLjMzbDEuMzUtMS41MUExOC41MywxOC41MywwLDAsMCwxOCwxOC43NCwxNy43LDE3LjcsMCwwLDAsNC4yMSwyNC44YTEsMSwwLDAsMC0uMjEuNnY2LjQ5QTIuMDYsMi4w''@;'; put 'put ''NiwwLDAsMCw2LDM0SDE4LjM5bC0xLjktMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMCwzMS44OSwzMCwzMkgyNi44NWwtMS44LDJIMzBhMi4wNiwyLjA2LDAsMCwwLDItMi4wN1YyNi4ybC0yLDIuMjNaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzQuNzYsMTguNjJhMSwxLDAsMCwwLTEuNDEuMDhsLTExLjYyLDEzLTUuMi01LjU5QTEsMSwwLDAsMCwxNS4xMiwyNmExLDEsMCwwLDAtLjA2LDEuNDJsNi42OSw3LjJMMzQuODQsMjBBMSwxLDAsMCwwLDM0Ljc2LDE4''@;'; put 'put ''LjYyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PGNpcmNsZSBjeD0iMTcuOTkiIGN5PSIxMC4zNiIgcj0iNi44MSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTIsMjYuNjVhMi44LDIuOCwwLDAsMSw0''@;'; put 'put ''Ljg1LTEuOEwyMC43MSwyOWw2Ljg0LTcuNjNBMTYuODEsMTYuODEsMCwwLDAsMTgsMTguNTUsMTYuMTMsMTYuMTMsMCwwLDAsNS41LDI0YTEsMSwwLDAsMC0uMi42MVYzMGEyLDIsMCwwLDAsMS45NCwyaDguNTdsLTMuMDctMy4zQTIuODEsMi44MSwwLDAsMSwxMiwyNi42NVoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTI4Ljc2LDMyYTIsMiwwLDAsMCwxLjk0LTJWMjYuMjRMMjUuNTcsMzJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMy43NywxOC42MmExLDEsMCwwLDAtMS40Mi4w''@;'; put 'put ''OGwtMTEuNjIsMTMtNS4yLTUuNTlBMSwxLDAsMCwwLDE0LjEyLDI2YTEsMSwwLDAsMCwwLDEuNDJsNi42OCw3LjJMMzMuODQsMjBBMSwxLDAsMCwwLDMzLjc3LDE4LjYyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz4nKSxlLkNsclNoYXBlQXRvbT0oMCxhLmNs''@;'; put 'put ''ckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMTQuMDVhNCw0LDAsMSwwLDQsNEE0LDQsMCwwLDAsMTgsMTQuMDVabTAsNi40NGEyLjQyLDIuNDIsMCwxLDEsMi40Mi0yLjQyQTIuNDIsMi40MiwwLDAsMSwxOCwyMC40OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''IiAvPjxwYXRoIGQ9Ik0yNC4yMywxMS43MWEzOS4xNCwzOS4xNCwwLDAsMC00LjU3LTMuOTIsMjIuODYsMjIuODYsMCwwLDEsMy40OC0xLjcyYy4zMi0uMTIuNjItLjIxLjkyLS4zYTIuMjgsMi4yOCwwLDAsMCwzLjgxLS40NiwzLjMxLDMuMzEsMCwwLDEsMS45Mi44NGMxLjE5LDEuMTksMS4y''@;'; put 'put ''MiwzLjU5LjEsNi41OC40OS42NS45NCwxLjMxLDEuMzUsMiwuMTctLjQuMzUtLjc5LjQ5LTEuMTgsMS40Ny0zLjg1LDEuMjgtNy0uNTMtOC43OGE1LjI5LDUuMjksMCwwLDAtMy4zMy0xLjQ0LDIuMjksMi4yOSwwLDAsMC00LjMxLjU0Yy0uMzcuMTEtLjc0LjIyLTEuMTMuMzdhMjUuNzksMjUu''@;'; put 'put ''NzksMCwwLDAtNC41NywyLjM1QTI2LjIxLDI2LjIxLDAsMCwwLDEzLjI4LDQuMmMtMy44NS0xLjQ2LTctMS4yOC04Ljc3LjUzQzIuODUsNi40LDIuNTgsOS4xNywzLjY4LDEyLjU5YTIuMjgsMi4yOCwwLDAsMCwxLjU5LDMuNjdjLjMyLjYxLjY3LDEuMjIsMS4wNiwxLjgyQTI1LjU0LDI1LjU0''@;'; put 'put ''LDAsMCwwLDQsMjIuNjZjLTEuNDcsMy44NC0xLjI4LDcsLjUzLDguNzdhNS42Myw1LjYzLDAsMCwwLDQuMTIsMS41MSwxMy4zNCwxMy4zNCwwLDAsMCw0LjY1LTEsMjYuMjEsMjYuMjEsMCwwLDAsNC41OC0yLjM1QTI1Ljc5LDI1Ljc5LDAsMCwwLDIyLjQzLDMyYTE0LjE2LDE0LjE2LDAsMCww''@;'; put 'put ''LDMuNjUuOUEyLjMsMi4zLDAsMCwwLDMwLjQ2LDMyYTQuNTUsNC41NSwwLDAsMCwuNzQtLjU3YzEuODEtMS44MSwyLTQuOTMuNTMtOC43N0EzMi42OCwzMi42OCwwLDAsMCwyNC4yMywxMS43MVpNMTIuNTcsMzAuMDljLTMsMS4xNS01LjQ1LDEuMTMtNi42NS0uMDhzLTEuMjMtMy42Mi0uMDct''@;'; put 'put ''Ni42NGEyMi43NywyMi43NywwLDAsMSwxLjcxLTMuNDgsNDAuMTksNDAuMTksMCwwLDAsMy45Miw0LjU2Yy40My40My44Ny44NSwxLjMxLDEuMjVxLjktLjQ2LDEuODMtMS4wNWMtLjU4LS41Mi0xLjE2LTEtMS43Mi0xLjYxYTM0LDM0LDAsMCwxLTUuNzQtNy40N0EyLjI5LDIuMjksMCwwLDAs''@;'; put 'put ''NS41LDExLjY5aDBjLS43NS0yLjUtLjYyLTQuNDkuNDMtNS41NGEzLjcyLDMuNzIsMCwwLDEsMi43Mi0uOTIsMTEuNCwxMS40LDAsMCwxLDMuOTMuODQsMjIuODYsMjIuODYsMCwwLDEsMy40OCwxLjcyLDM5LjE0LDM5LjE0LDAsMCwwLTQuNTcsMy45MmMtLjQ0LjQ0LS44Ny45LTEuMjksMS4z''@;'; put 'put ''NmEyMC4yNywyMC4yNywwLDAsMCwxLDEuODVjLjU0LS42MSwxLjA5LTEuMjEsMS42OC0xLjhhMzYuMzMsMzYuMzMsMCwwLDEsNS00LjE3LDM2Ljg4LDM2Ljg4LDAsMCwxLDQuOTUsNC4xNywzNi4yNiwzNi4yNiwwLDAsMSw0LjE3LDUsMzcsMzcsMCwwLDEtNC4xNyw1QTMwLjY4LDMwLjY4LDAs''@;'; put 'put ''MCwxLDEyLjU3LDMwLjA5Wk0yOS43OSwzMGwtLjE2LjEzYTIuMjcsMi4yNywwLDAsMC0zLjUuNzIsMTIuNTcsMTIuNTcsMCwwLDEtMy0uNzcsMjIsMjIsMCwwLDEtMy40OC0xLjcyLDM5LjE0LDM5LjE0LDAsMCwwLDQuNTctMy45MiwzOC4yNiwzOC4yNiwwLDAsMCwzLjkyLTQuNTYsMjIuODgs''@;'; put 'put ''MjIuODgsMCwwLDEsMS43MiwzLjQ4QzMxLDI2LjM5LDMxLDI4LjgxLDI5Ljc5LDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI0LjIzLDExLjcxYTM5LjE0LDM5LjE0LDAsMCwwLTQuNTctMy45MiwyMi44NiwyMi44NiwwLDAsMSwz''@;'; put 'put ''LjQ4LTEuNzJjLjMyLS4xMi42Mi0uMjEuOTItLjNhMi4yOCwyLjI4LDAsMCwwLDMuODEtLjQ2LDMuMzEsMy4zMSwwLDAsMSwxLjkyLjg0YzEuMTksMS4xOSwxLjIyLDMuNTkuMSw2LjU4LjQ5LjY1Ljk0LDEuMzEsMS4zNSwyLC4xNy0uNC4zNS0uNzkuNDktMS4xOCwxLjQ3LTMuODUsMS4yOC03''@;'; put 'put ''LS41My04Ljc4YTUuMjksNS4yOSwwLDAsMC0zLjMzLTEuNDQsMi4yOSwyLjI5LDAsMCwwLTQuMzEuNTRjLS4zNy4xMS0uNzQuMjItMS4xMy4zN2EyNS43OSwyNS43OSwwLDAsMC00LjU3LDIuMzVBMjYuMjEsMjYuMjEsMCwwLDAsMTMuMjgsNC4yYy0zLjg1LTEuNDYtNy0xLjI4LTguNzcuNTND''@;'; put 'put ''Mi44NSw2LjQsMi41OCw5LjE3LDMuNjgsMTIuNTlhMi4yOCwyLjI4LDAsMCwwLDEuNTksMy42N2MuMzIuNjEuNjcsMS4yMiwxLjA2LDEuODJBMjUuNTQsMjUuNTQsMCwwLDAsNCwyMi42NmMtMS40NywzLjg0LTEuMjgsNywuNTMsOC43N2E1LjYzLDUuNjMsMCwwLDAsNC4xMiwxLjUxLDEzLjM0''@;'; put 'put ''LDEzLjM0LDAsMCwwLDQuNjUtMSwyNi4yMSwyNi4yMSwwLDAsMCw0LjU4LTIuMzVBMjUuNzksMjUuNzksMCwwLDAsMjIuNDMsMzJhMTQuMTYsMTQuMTYsMCwwLDAsMy42NS45QTIuMywyLjMsMCwwLDAsMzAuNDYsMzJhNC41NSw0LjU1LDAsMCwwLC43NC0uNTdjMS44MS0xLjgxLDItNC45My41''@;'; put 'put ''My04Ljc3QTMyLjY4LDMyLjY4LDAsMCwwLDI0LjIzLDExLjcxWk0xMi41NywzMC4wOWMtMywxLjE1LTUuNDUsMS4xMy02LjY1LS4wOHMtMS4yMy0zLjYyLS4wNy02LjY0YTIyLjc3LDIyLjc3LDAsMCwxLDEuNzEtMy40OCw0MC4xOSw0MC4xOSwwLDAsMCwzLjkyLDQuNTZjLjQzLjQzLjg3Ljg1''@;'; put 'put ''LDEuMzEsMS4yNXEuOS0uNDYsMS44My0xLjA1Yy0uNTgtLjUyLTEuMTYtMS0xLjcyLTEuNjFhMzQsMzQsMCwwLDEtNS43NC03LjQ3QTIuMjksMi4yOSwwLDAsMCw1LjUsMTEuNjloMGMtLjc1LTIuNS0uNjItNC40OS40My01LjU0YTMuNzIsMy43MiwwLDAsMSwyLjcyLS45MiwxMS40LDExLjQs''@;'; put 'put ''MCwwLDEsMy45My44NCwyMi44NiwyMi44NiwwLDAsMSwzLjQ4LDEuNzIsMzkuMTQsMzkuMTQsMCwwLDAtNC41NywzLjkyYy0uNDQuNDQtLjg3LjktMS4yOSwxLjM2YTIwLjI3LDIwLjI3LDAsMCwwLDEsMS44NWMuNTQtLjYxLDEuMDktMS4yMSwxLjY4LTEuOGEzNi4zMywzNi4zMywwLDAsMSw1''@;'; put 'put ''LTQuMTcsMzYuODgsMzYuODgsMCwwLDEsNC45NSw0LjE3LDM2LjI2LDM2LjI2LDAsMCwxLDQuMTcsNSwzNywzNywwLDAsMS00LjE3LDVBMzAuNjgsMzAuNjgsMCwwLDEsMTIuNTcsMzAuMDlaTTI5Ljc5LDMwbC0uMTYuMTNhMi4yNywyLjI3LDAsMCwwLTMuNS43MiwxMi41NywxMi41NywwLDAs''@;'; put 'put ''MS0zLS43NywyMiwyMiwwLDAsMS0zLjQ4LTEuNzIsMzkuMTQsMzkuMTQsMCwwLDAsNC41Ny0zLjkyLDM4LjI2LDM4LjI2LDAsMCwwLDMuOTItNC41NiwyMi44OCwyMi44OCwwLDAsMSwxLjcyLDMuNDhDMzEsMjYuMzksMzEsMjguODEsMjkuNzksMzBaIiBjbGFzcz0iY2xyLWktc29saWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0xIiAvPjxjaXJjbGUgY3g9IjE3Ljk5IiBjeT0iMTguMDciIHI9IjMuMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIuNjYgMy4xMSkgcm90YXRlKC05LjIyKSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlQmFyQ29k''@;'; put 'put ''ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNSw3QTEsMSwwLDAsMCw0LDhWMzBhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCw1LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOSw3QTEsMSwwLDAsMCw4LDhWMjZhMSwxLDAs''@;'; put 'put ''MCwwLDIsMFY4QTEsMSwwLDAsMCw5LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTMsN2ExLDEsMCwwLDAtMSwxVjI2YTEsMSwwLDAsMCwyLDBWOEExLDEsMCwwLDAsMTMsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0xNyw3YTEsMSwwLDAsMC0xLDFWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCwxNyw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTIxLDdhMSwxLDAsMCwwLTEsMVYyNmExLDEsMCww''@;'; put 'put ''LDAsMiwwVjhBMSwxLDAsMCwwLDIxLDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMjUsN2ExLDEsMCwwLDAtMSwxVjI2YTEsMSwwLDAsMCwyLDBWOEExLDEsMCwwLDAsMjUsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik0yOSw3YTEsMSwwLDAsMC0xLDFWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCwyOSw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+PHBhdGggZD0iTTMzLDdhMSwxLDAsMCwwLTEsMVYzMGExLDEsMCww''@;'; put 'put ''LDAsMiwwVjhBMSwxLDAsMCwwLDMzLDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgLz4nKSxlLkNsclNoYXBlQ2REdmQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEEx''@;'; put 'put ''NCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMi4zMywxOGE0LjQ2LDQuNDYsMCwxLDAtNC40NSw0LjQ2QTQuNDYsNC40NiwwLDAsMCwyMi4zMywxOFpNMTcuODgsMjAuOUEy''@;'; put 'put ''Ljg2LDIuODYsMCwxLDEsMjAuNzMsMTgsMi44NiwyLjg2LDAsMCwxLDE3Ljg4LDIwLjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTcuODgsNy40M0gxOFY1Ljg0aC0uMTJBMTIuMjEsMTIuMjEsMCwwLDAsNS42OCwxNy43NWgxLjZB''@;'; put 'put ''MTAuNjEsMTAuNjEsMCwwLDEsMTcuODgsNy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMC4wOCwxOEgyOC40OXYwQTEwLjYxLDEwLjYxLDAsMCwxLDE4LjI1LDI4LjYzdjEuNkExMi4yMiwxMi4yMiwwLDAsMCwzMC4wOSwxOFMz''@;'; put 'put ''MC4wOCwxOCwzMC4wOCwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0xOCwxMVY5LjQ0aC0uMTJhOC42Miw4LjYyLDAsMCwwLTguNiw4LjMyaDEuNmE3LDcsMCwwLDEsNy02LjcyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTE4LjI1LDI1djEuNkE4LjYxLDguNjEsMCwwLDAsMjYuNDgsMTh2MGgtMS42djBBNyw3LDAsMCwxLDE4LjI1LDI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTE4LjE3LDEuOTJhMTYs''@;'; put 'put ''MTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMTguMTcsMS45MlpNMjYuMjMsMThoMS41NGE5LjYxLDkuNjEsMCwwLDEtOS42LDkuNTNIMThWMjZoLjE3QTguMDcsOC4wNywwLDAsMCwyNi4yMywxOFpNNi4wNSwxOEg0LjQ1di0uMDhBMTMuNzIsMTMuNzIsMCwwLDEsMTgsNC4yMXYxLjZBMTIu''@;'; put 'put ''MTMsMTIuMTMsMCwwLDAsNi4wNSwxNy45MlptNC4wNSwwSDguNTZ2LS4wOEE5LjYxLDkuNjEsMCwwLDEsMTgsOC4zMlY5Ljg2YTguMDcsOC4wNywwLDAsMC03LjksOC4wNlptNC4zMi0uMDhhMy43NSwzLjc1LDAsMSwxLDMuNzUsMy43NUEzLjc1LDMuNzUsMCwwLDEsMTQuNDIsMTcuOTJabTMu''@;'; put 'put ''NzUsMTMuNzFIMThWMzBoLjE3QTEyLjEzLDEyLjEzLDAsMCwwLDMwLjI4LDE4aDEuNkExMy43MywxMy43MywwLDAsMSwxOC4xNywzMS42M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZUNvbnRhaW5lcj0oMCxhLmNsckljb25TVkcpKCc8''@;'; put 'put ''cGF0aCBkPSJNMzIsMzBINGEyLDIsMCwwLDEtMi0yVjhBMiwyLDAsMCwxLDQsNkgzMmEyLDIsMCwwLDEsMiwyVjI4QTIsMiwwLDAsMSwzMiwzMFpNNCw4VjI4SDMyVjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOSwyNS4zYS44Ljgs''@;'; put 'put ''MCwwLDEtLjgtLjh2LTEzYS44LjgsMCwwLDEsMS42LDB2MTNBLjguOCwwLDAsMSw5LDI1LjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTQuOTIsMjUuM2EuOC44LDAsMCwxLS44LS44di0xM2EuOC44LDAsMCwxLDEuNiwwdjEzQS44''@;'; put 'put ''LjgsMCwwLDEsMTQuOTIsMjUuM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMSwyNS4zYS44LjgsMCwwLDEtLjgtLjh2LTEzYS44LjgsMCwwLDEsMS42LDB2MTNBLjguOCwwLDAsMSwyMSwyNS4zWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTI3LDI1LjNhLjguOCwwLDAsMS0uOC0uOHYtMTNhLjguOCwwLDAsMSwxLjYsMHYxM0EuOC44LDAsMCwxLDI3LDI1LjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzIs''@;'; put 'put ''Nkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTkuNjMsMjQuMjNhLjc5Ljc5LDAsMCwxLS44MS43N0EuNzkuNzksMCwwLDEsOCwyNC4yM1YxMS43N0EuNzkuNzksMCwwLDEsOC44MiwxMWEuNzkuNzksMCwwLDEsLjgx''@;'; put 'put ''Ljc3Wm02LDBhLjc5Ljc5LDAsMCwxLS44Mi43Ny43OS43OSwwLDAsMS0uODEtLjc3VjExLjc3YS43OS43OSwwLDAsMSwuODEtLjc3Ljc5Ljc5LDAsMCwxLC44Mi43N1ptNi4yMSwwYS43OS43OSwwLDAsMS0uODIuNzcuNzkuNzksMCwwLDEtLjgxLS43N1YxMS43N2EuNzkuNzksMCwwLDEsLjgx''@;'; put 'put ''LS43Ny43OS43OSwwLDAsMSwuODIuNzdabTYuMTIsMGEuNzkuNzksMCwwLDEtLjgyLjc3Ljc5Ljc5LDAsMCwxLS44MS0uNzdWMTEuNzdhLjc5Ljc5LDAsMCwxLC44MS0uNzcuNzkuNzksMCwwLDEsLjgyLjc3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxl''@;'; put 'put ''LkNsclNoYXBlQ29udGFpbmVyVm9sdW1lPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik04LDE3LjU4YTMyLjM1LDMyLjM1LDAsMCwwLDYuMy45Miw0LjEzLDQuMTMsMCwwLDEsLjkyLTEuMzcsMzAuOTQsMzAuOTQsMCwwLDEtNy4yMi0xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTYsMjhWOC4xOWMuMzQtLjc2LDQuMzEtMi4xMSwxMS0yLjExczEwLjY3LDEuMzUsMTEsMnYuM2MtLjgyLjc5LTQuNTgsMi4wNS0xMS4xMSwyLjA1QTMzLjQ4LDMzLjQ4LDAsMCwxLDgsOS40NHYxLjQ0YTM1LjYsMzUuNiwwLDAsMCw4Ljg5LDFj''@;'; put 'put ''NC4yOSwwLDguOC0uNTgsMTEuMTEtMS44MnY1LjA3YTUuMyw1LjMsMCwwLDEtMS44MS44OEgzMFY4LjEyYzAtMy4xOS04LjE3LTQtMTMtNHMtMTMsLjg1LTEzLDRWMjhDNCwzMC42Myw5LjM5LDMxLjY4LDE0LDMyVjMwQzkuMTMsMjkuNjYsNi4yOCwyOC42Miw2LDI4WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTgsMjQuMjhhMzEuMywzMS4zLDAsMCwwLDYsLjg5di0xLjRhMjguOTMsMjguOTMsMCwwLDEtNi0uOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzIsMThI''@;'; put 'put ''MThhMiwyLDAsMCwwLTIsMlYzMmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjBBMiwyLDAsMCwwLDMyLDE4Wk0xOCwzMlYyMEgzMlYzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0yMSwyMS43YS43LjcsMCwwLDAtLjcu''@;'; put 'put ''N3Y3LjQ5YS43LjcsMCwwLDAsMS40LDBWMjIuNEEuNy43LDAsMCwwLDIxLDIxLjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMjUsMjEuODJhLjcuNywwLDAsMC0uNy43VjMwYS43LjcsMCwxLDAsMS40LDBWMjIuNTJBLjcuNywwLDAs''@;'; put 'put ''MCwyNSwyMS44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik0yOSwyMS43YS43LjcsMCwwLDAtLjcuN3Y3LjQ5YS43LjcsMCwxLDAsMS40LDBWMjIuNEEuNy43LDAsMCwwLDI5LDIxLjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtNyIgLz48cGF0aCBkPSJNMzIsMThIMThhMiwyLDAsMCwwLTIsMlYzMmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjBBMiwyLDAsMCwwLDMyLDE4Wk0xOCwzMlYyMEgzMlYzMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+''@;'; put 'put ''PHBhdGggZD0iTTIxLDIxLjdhLjcuNywwLDAsMC0uNy43djcuNDlhLjcuNywwLDAsMCwxLjQsMFYyMi40QS43LjcsMCwwLDAsMjEsMjEuN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTI1LDIxLjgyYS43LjcsMCwwLDAtLjcuN1YzMGEuNy43''@;'; put 'put ''LDAsMSwwLDEuNCwwVjIyLjUyQS43LjcsMCwwLDAsMjUsMjEuODJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yOSwyMS43YS43LjcsMCwwLDAtLjcuN3Y3LjQ5YS43LjcsMCwxLDAsMS40LDBWMjIuNEEuNy43LDAsMCwwLDI5LDIxLjdaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPjxwYXRoIGQ9Ik0xOCwxNkgyOFY4LjEyYzAtMS42OC01LjM4LTMtMTItM1M0LDYuNDQsNCw4LjEyVjI4YzAsMS41LDQuMzMsMi43NSwxMCwzVjI1LjIyYTI5LjE3LDI5LjE3LDAsMCwxLTgtMS4yOVYyMi40NGwuMjQuMUEy''@;'; put 'put ''Ni42MywyNi42MywwLDAsMCwxNCwyMy44MlYyMGE0LDQsMCwwLDEsLjI5LTEuNDdBMjkuMTksMjkuMTksMCwwLDEsNiwxNy4yM1YxNS43NWwuMjQuMDlhMjksMjksMCwwLDAsOSwxLjMyaDBBNCw0LDAsMCwxLDE4LDE2Wk02LDEwLjU0VjkuMDVsLjI0LjA5QTMwLjEyLDMwLjEyLDAsMCwwLDE2''@;'; put 'put ''LDEwLjQ3LDI4LjMzLDI4LjMzLDAsMCwwLDI2LDkuMDV2MS41YTMyLjUzLDMyLjUzLDAsMCwxLTEwLDEuMzJBMzIuNDQsMzIuNDQsMCwwLDEsNiwxMC41NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIC8+JyksZS5DbHJTaGFwZUZpbGVTaGFyZT0oMCxhLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMzAsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDMwLDlabTAsMjBINlYxM2g3LjMxYTIsMiwwLDAsMCwyLTJINlY3aDYuNDls''@;'; put 'put ''Mi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjEuOTEsMjIuNDhhMi4wNiwyLjA2LDAsMCwwLTEuNDQuNjJsLTUuNzItMi42NlYyMGw1LjY2LTIuNjVhMi4wOCwyLjA4LDAsMSwwLC4w''@;'; put 'put ''Ni0yLjk0LDIuMTIsMi4xMiwwLDAsMC0uNjQsMS40OHYuMjNsLTUuNjQsMi42NmEyLjA4LDIuMDgsMCwxLDAtLjA4LDIuOTVsLjA4LS4wOCw1LjY3LDIuNjZ2LjNhMi4wOSwyLjA5LDAsMSwwLDIuMDgtMi4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+''@;'; put 'put ''PHBhdGggZD0iTTMwLDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjExQTIsMiwwLDAsMCwzMCw5Wk02LDdoNi40OWwyLjcyLDRINlpNMjEuOTQsMjYuNjRhMi4wOSwyLjA5LDAsMCwx''@;'; put 'put ''LTIuMTEtMi4wNmwwLS4zLTUuNjctMi42Ni0uMDguMDhhMi4wOCwyLjA4LDAsMSwxLC4wOC0yLjk1bDUuNjQtMi42NnYtLjIzYTIuMDgsMi4wOCwwLDEsMSwuNTgsMS40NkwxNC43NSwyMHYuNDdsNS43MiwyLjY2YTIuMDcsMi4wNywwLDEsMSwxLjQ3LDMuNTRaIiBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVRckNvZGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTUuNiw0QTEuNiwxLjYsMCwwLDAsNCw1LjZWMTJoOFY0Wk0xMCwxMEg2VjZoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAv''@;'; put 'put ''PjxwYXRoIGQ9Ik00LDMwLjRBMS42LDEuNiwwLDAsMCw1LjYsMzJIMTJWMjRINFpNNiwyNmg0djRINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yNCwzMmg2LjRBMS42LDEuNiwwLDAsMCwzMiwzMC40VjI0SDI0Wm0yLTZoNHY0SDI2''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMwLjQsNEgyNHY4aDhWNS42QTEuNiwxLjYsMCwwLDAsMzAuNCw0Wk0zMCwxMEgyNlY2aDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cG9seWdv''@;'; put 'put ''biBwb2ludHM9IjIwIDEwIDIwIDggMTYgOCAxNiAxMiAxOCAxMiAxOCAxMCAyMCAxMCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHJlY3QgeD0iMTIiIHk9IjEyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtNiIgLz48cmVjdCB4PSIxNCIgeT0iMTQiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPjxwb2x5Z29uIHBvaW50cz0iMjAgNiAyMCA4IDIyIDggMjIgNCAxNCA0IDE0IDggMTYgOCAxNiA2IDIwIDYi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiAvPjxyZWN0IHg9IjQiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSI0IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgLz48cG9seWdvbiBwb2ludHM9IjEyIDE2IDEyIDE4IDEwIDE4''@;'; put 'put ''IDEwIDE0IDggMTQgOCAxOCA2IDE4IDYgMjAgNCAyMCA0IDIyIDggMjIgOCAyMCAxMCAyMCAxMCAyMiAxMiAyMiAxMiAyMCAxNCAyMCAxNCAxNiAxMiAxNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIiAvPjxwb2x5Z29uIHBvaW50cz0iMjAgMTYgMjIgMTYg''@;'; put 'put ''MjIgMTggMjQgMTggMjQgMTYgMjYgMTYgMjYgMTQgMjIgMTQgMjIgMTAgMjAgMTAgMjAgMTIgMTggMTIgMTggMTQgMjAgMTQgMjAgMTYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMSIgLz48cG9seWdvbiBwb2ludHM9IjE4IDMwIDE0IDMwIDE0IDMyIDIyIDMy''@;'; put 'put ''IDIyIDMwIDIwIDMwIDIwIDI4IDE4IDI4IDE4IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTIiIC8+PHBvbHlnb24gcG9pbnRzPSIyMiAyMCAyMiAxOCAyMCAxOCAyMCAxNiAxOCAxNiAxOCAxOCAxNiAxOCAxNiAyMCAxOCAyMCAxOCAyMiAyMCAyMiAyMCAy''@;'; put 'put ''MCAyMiAyMCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEzIiAvPjxyZWN0IHg9IjMwIiB5PSIyMCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE0IiAvPjxyZWN0IHg9IjIyIiB5PSIyMCIgd2lk''@;'; put 'put ''dGg9IjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE1IiAvPjxwb2x5Z29uIHBvaW50cz0iMzAgMTQgMjggMTQgMjggMTYgMjYgMTYgMjYgMTggMjggMTggMjggMjAgMzAgMjAgMzAgMTggMzIgMTggMzIgMTYgMzAgMTYgMzAgMTQiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNiIgLz48cmVjdCB4PSIyMCIgeT0iMjIiIHdpZHRoPSIyIiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNyIgLz48cG9seWdvbiBwb2ludHM9IjE0IDI4IDE2IDI4IDE2IDI2IDE4''@;'; put 'put ''IDI2IDE4IDI0IDE2IDI0IDE2IDIwIDE0IDIwIDE0IDI4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTgiIC8+JyksZS5DbHJTaGFwZVVzYj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTQuMjksMTEuNGExLjQ5LDEuNDksMCwwLDEsMS4yOC0uNzJoMWEy''@;'; put 'put ''Ljg5LDIuODksMCwwLDAsMi43NSwyLjA5LDMsMywwLDAsMCwwLTUuOTEsMi45LDIuOSwwLDAsMC0yLjY3LDEuODJIMTUuNTdhMy40OSwzLjQ5LDAsMCwwLTMsMS42NmwtMyw0LjgzaDIuMzZabTUtMi45NEExLjM2LDEuMzYsMCwxLDEsMTgsOS44MSwxLjMyLDEuMzIsMCwwLDEsMTkuMzMsOC40''@;'; put 'put ''NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zNC4zLDE3LjM3bC02LjExLTMuNjZhLjcuNywwLDAsMC0uNywwLC43MS43MSwwLDAsMC0uMzYuNjFWMTdINi45MmEyLjMzLDIuMzMsMCwwLDEsLjMyLDEuMTcsMi40NywyLjQ3LDAsMSwx''@;'; put 'put ''LTIuNDctMi40NiwyLjM3LDIuMzcsMCwwLDEsMS4xNS4zbC45My0xLjc2QTQuNDQsNC40NCwwLDEsMCw5LjE1LDE5aDMuNThsNC4xNyw2LjY1YTMuNDksMy40OSwwLDAsMCwzLDEuNjZoMS42NnYxLjI4YS43OS43OSwwLDAsMCwuOC43OWg0LjQ5YS43OS43OSwwLDAsMCwuOC0uNzl2LTQuNGEu''@;'; put 'put ''NzkuNzksMCwwLDAtLjgtLjhIMjIuMzRhLjguOCwwLDAsMC0uOC44djEuMTJIMTkuODhhMS41MSwxLjUxLDAsMCwxLTEuMjgtLjcyTDE1LjA5LDE5aDEydjIuNjZhLjY5LjY5LDAsMCwwLC4zNi42MS42Ny42NywwLDAsMCwuMzQuMDkuNjUuNjUsMCwwLDAsLjM2LS4xbDYuMTEtMy42NmEuNjku''@;'; put 'put ''NjksMCwwLDAsLjM0LS42QS43MS43MSwwLDAsMCwzNC4zLDE3LjM3Wk0yMy4xNCwyNUgyNnYyLjhIMjMuMTRabTUuMzktNC41NlYxNS41NWw0LDIuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzQuNzIsMTcuMzdsLTUuNTEtMy4z''@;'; put 'put ''MWEuNzEuNzEsMCwwLDAtMS4wNy42VjE3SDExLjc3bDMuNTItNS42YTEuNDksMS40OSwwLDAsMSwxLjI4LS43MmgxLjY0YTIuNDEsMi40MSwwLDAsMCwyLjI1LDEuNjEsMi40OCwyLjQ4LDAsMCwwLDAtNC45NSwyLjM4LDIuMzgsMCwwLDAtMi4xMywxLjM0SDE2LjU3YTMuNDksMy40OSwwLDAs''@;'; put 'put ''MC0zLDEuNjZMOS40MSwxN0g4YTMuNDYsMy40NiwwLDEsMCwuMDgsMmg1LjY0bDQuMTUsNi42MmEzLjQ5LDMuNDksMCwwLDAsMywxLjY2aDIuNTl2LjkyaDQuNFYyMy44aC00LjR2MS40OEgyMC44OGExLjUxLDEuNTEsMCwwLDEtMS4yOC0uNzJMMTYuMTEsMTloMTJ2Mi4yOGEuNy43LDAsMCww''@;'; put 'put ''LC4zNi42MS43Mi43MiwwLDAsMCwuMzQuMDkuNjUuNjUsMCwwLDAsLjM2LS4xbDUuNTItMy4zMWEuNy43LDAsMCwwLDAtMS4yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxlLkNsclNoYXBlUmFkYXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMy''@;'; put 'put ''LDE4YzAsNy43LTYuMywxNC0xNCwxNGMtNy43LDAtMTQtNi4zLTE0LTE0QzQsMTAuNiw5LjcsNC41LDE3LjEsNHYzLjdjLTUuNywwLjUtOS45LDUuNS05LjQsMTEuMnM1LjUsOS45LDExLjIsOS40XG5cdGM1LjMtMC41LDkuNC00LjksOS40LTEwLjNoLTJjMCw0LjYtMy43LDguMy04LjMsOC4z''@;'; put 'put ''cy04LjMtMy43LTguMy04LjNjMC00LjIsMy4xLTcuOCw3LjMtOC4zdjQuNGMtMS44LDAuNC0zLjEsMi0zLjEsMy45XG5cdGMwLDIuMiwxLjgsNCw0LDRzNC0xLjgsNC00YzAtMS44LTEuMy0zLjQtMy0zLjhWMi4xQzE4LjYsMiwxOC4zLDIsMTgsMkM5LjIsMiwyLDkuMiwyLDE4czcuMiwxNiwx''@;'; put 'put ''NiwxNnMxNi03LjIsMTYtMTZIMzJ6IE0yMCwxOFxuXHRjMCwxLjEtMC45LDItMiwycy0yLTAuOS0yLTJzMC45LTIsMi0yUzIwLDE2LjksMjAsMTh6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzIsMThjMCw3LjctNi4yLDE0LTE0LDE0''@;'; put 'put ''UzQsMjUuOCw0LDE4YzAtNy40LDUuNy0xMy41LDEzLjEtMTR2My43Yy01LjcsMC41LTkuOCw1LjUtOS4zLDExLjJzNS41LDkuOCwxMS4yLDkuM1xuXHRcdGM1LjMtMC41LDkuMy00LjksOS4zLTEwLjJoLTJjMCw0LjYtMy43LDguMy04LjMsOC4zUzkuNywyMi42LDkuNywxOGMwLTQuMiwzLjIt''@;'; put 'put ''Ny44LDcuMy04LjJ2NC40Yy0yLjEsMC42LTMuNCwyLjctMi45LDQuOVxuXHRcdGMwLjYsMi4xLDIuNywzLjQsNC45LDIuOWMyLjEtMC42LDMuNC0yLjcsMi45LTQuOWMtMC40LTEuNC0xLjUtMi41LTIuOS0yLjlWMmMtMC40LDAtMC43LDAtMS4xLDBjLTguOCwwLTE2LDcuMi0xNiwxNlxuXHRc''@;'; put 'put ''dGMwLDguOCw3LjIsMTYsMTYsMTZzMTYtNy4yLDE2LTE2YzAsMCwwLDAsMCwwSDMyeiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxlLkNsclNoYXBlSW5kdWN0b3I9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LjMxLDI1LjgxYy0xLjc1LDAtMy0y''@;'; put 'put ''LjQ5LTMtNmExMi43OSwxMi43OSwwLDAsMSwxLjcyLTYuNywyLjU3LDIuNTcsMCwwLDAtMy43OSwwQTEyLjc5LDEyLjc5LDAsMCwxLDIxLDE5Ljc2YzAsMy41Ni0xLjIzLDYtMyw2cy0zLTIuNDktMy02YTEyLjc5LDEyLjc5LDAsMCwxLDEuNzItNi43LDIuNTcsMi41NywwLDAsMC0zLjc5LDAs''@;'; put 'put ''MTIuNzksMTIuNzksMCwwLDEsMS43Miw2LjdjMCwzLjU2LTEuMjMsNi0zLDZzLTMtMi40OS0zLTZhMTIuODgsMTIuODgsMCwwLDEsMS43MS02LjcsMi43LDIuNywwLDAsMC0xLjg5LS44N0M3LjEsMTIuMTksNS42OSwxMy43LDUsMTZsLS4yMy43SDJhMSwxLDAsMCwxLDAtMkgzLjI5YzEuMS0y''@;'; put 'put ''LjgzLDMuMDYtNC41NSw1LjI0LTQuNTVhNC42Nyw0LjY3LDAsMCwxLDMuMTYsMS4zMiw0LjYyLDQuNjIsMCwwLDEsMy4xNS0xLjMyQTQuNjUsNC42NSwwLDAsMSwxOCwxMS41MWE0LjQzLDQuNDMsMCwwLDEsNi4zMSwwLDQuNjcsNC42NywwLDAsMSwzLjE2LTEuMzJjMi4xOCwwLDQuMTQsMS43''@;'; put 'put ''Miw1LjI0LDQuNTVIMzRhMSwxLDAsMCwxLDAsMkgzMS4yOGwtLjIzLS43Yy0uNzQtMi4zNC0yLjE1LTMuODUtMy41OC0zLjg1YTIuNywyLjcsMCwwLDAtMS44OS44NywxMi44OCwxMi44OCwwLDAsMSwxLjcxLDYuN0MyNy4yOSwyMy4zMiwyNi4wNywyNS44MSwyNC4zMSwyNS44MVpNMTgsMTQu''@;'; put 'put ''OTNhMTEuNzEsMTEuNzEsMCwwLDAtMSw0LjgzYzAsMi41NC42NiwzLjc1LDEsNCwuMzItLjI3LDEtMS40OCwxLTRBMTEuNzEsMTEuNzEsMCwwLDAsMTgsMTQuOTNabTYuMzEsMGExMS43MSwxMS43MSwwLDAsMC0xLDQuODNjMCwyLjU0LjY2LDMuNzUsMSw0LC4zMi0uMjcsMS0xLjQ4LDEtNEEx''@;'; put 'put ''MS43MSwxMS43MSwwLDAsMCwyNC4zMSwxNC45M1ptLTEyLjYyLDBhMTEuNzEsMTEuNzEsMCwwLDAtMSw0LjgzYzAsMi41NC42NiwzLjc1LDEsNCwuMzItLjI3LDEtMS40OCwxLTRBMTEuNzEsMTEuNzEsMCwwLDAsMTEuNjksMTQuOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgLz4nKSxlLkNsclNoYXBlUmVzaXN0b3I9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjQzLDI2LjM0aDBBMS40NywxLjQ3LDAsMCwxLDI4LDI1LjIyTDI0Ljg2LDEzLjE1LDIxLjc0LDI1LjIyYTEuNDksMS40OSwwLDAsMS0xLjQ1LDEuMTJoMGExLjQ5LDEuNDks''@;'; put 'put ''MCwwLDEtMS40Ni0xLjEyTDE1LjcxLDEzLjE1LDEyLjYsMjUuMjJhMS41MSwxLjUxLDAsMCwxLTIuOTEsMEw2LjU3LDEzLjE1LDUuMjIsMTguMzdIMmExLDEsMCwwLDEsMC0ySDMuNjdsMS40NS01LjU5QTEuNDgsMS40OCwwLDAsMSw2LjU3LDkuNjZoMEExLjQ3LDEuNDcsMCwwLDEsOCwxMC43''@;'; put 'put ''OGwzLjEyLDEyLjA3LDMuMTItMTIuMDdhMS40OSwxLjQ5LDAsMCwxLDEuNDUtMS4xMmgwYTEuNDksMS40OSwwLDAsMSwxLjQ2LDEuMTJsMy4xMiwxMi4wNywzLjEyLTEyLjA3YTEuNSwxLjUsMCwwLDEsMi45LDBsMy4xMiwxMi4wNywxLjM1LTUuMjJIMzRhMSwxLDAsMCwxLDAsMkgzMi4zM2wt''@;'; put 'put ''MS40NSw1LjU5QTEuNDgsMS40OCwwLDAsMSwyOS40MywyNi4zNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGUuQ2xyU2hhcGVDYXBhY2l0b3I9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE1LDM0LjA2YTEsMSwwLDAsMS0xLTFWMy4xNWEx''@;'; put 'put ''LDEsMCwxLDEsMiwwVjMzLjA2QTEsMSwwLDAsMSwxNSwzNC4wNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMSwzNC4wNmExLDEsMCwwLDEtMS0xVjMuMTVhMSwxLDAsMSwxLDIsMFYzMy4wNkExLDEsMCwwLDEsMjEsMzQuMDZaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTQuNDYsMTlIM2ExLDEsMCwwLDEsMC0ySDE0LjQ2YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzMsMTlIMjEu''@;'; put 'put ''NTRhMSwxLDAsMCwxLDAtMkgzM2ExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+JyksZS5DbHJTaGFwZVNxdWlkPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCw3YTEsMSwwLDAsMS0xLTFWMy4xOWExLDEsMCwwLDEsMiww''@;'; put 'put ''VjZBMSwxLDAsMCwxLDE4LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMzRhMSwxLDAsMCwxLTEtMVYzMGExLDEsMCwwLDEsMiwwdjNBMSwxLDAsMCwxLDE4LDM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTIiIC8+PHBhdGggZD0iTTcuNDEsMThsMS43OC0xLjc3YTEsMSwwLDEsMC0xLjQyLTEuNDJMNiwxNi41OSw0LjIzLDE0LjgxYTEsMSwwLDEsMC0xLjQyLDEuNDJMNC41OSwxOCwyLjgxLDE5Ljc3YTEsMSwwLDAsMCwwLDEuNDIsMSwxLDAsMCwwLC43MS4yOSwxLDEsMCwwLDAsLjcx''@;'; put 'put ''LS4yOUw2LDE5LjQxbDEuNzcsMS43OGExLDEsMCwwLDAsMS40MiwwLDEsMSwwLDAsMCwwLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNNiwxMy43NmwuMzYtLjM2YTMsMywwLDAsMSwyLjExLS44OCwxMSwxMSwwLDAsMSwxOSww''@;'; put 'put ''LDMsMywwLDAsMSwyLjEyLjg4bC4zNi4zNi4yLS4yYTEzLDEzLDAsMCwwLTI0LjQsMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMCwyMi4yNGwtLjM2LjM2YTMsMywwLDAsMS0yLjEyLjg4LDExLDExLDAsMCwxLTE5LDAsMywzLDAs''@;'; put 'put ''MCwxLTIuMTItLjg4TDYsMjIuMjRsLS4yLjJhMTMsMTMsMCwwLDAsMjQuNCwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMxLjQxLDE4bDEuNzgtMS43N2ExLDEsMCwwLDAtMS40Mi0xLjQyTDMwLDE2LjU5bC0xLjc3LTEuNzhhMSwx''@;'; put 'put ''LDAsMSwwLTEuNDIsMS40MkwyOC41OSwxOGwtMS43OCwxLjc3YTEsMSwwLDAsMCwwLDEuNDIsMSwxLDAsMCwwLC43MS4yOSwxLDEsMCwwLDAsLjcxLS4yOUwzMCwxOS40MWwxLjc3LDEuNzhhMSwxLDAsMCwwLDEuNDIsMCwxLDEsMCwwLDAsMC0xLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksZS5DbHJTaGFwZUhvc3RHcm91cD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjEuMDgsMzRoLTE0QTEuMDgsMS4wOCwwLDAsMSw2LDMzVjEyYTEuMDgsMS4wOCwwLDAsMSwxLjA4LTEuMDhoMTRBMS4wOCwxLjA4LDAsMCwxLDIyLjE2LDEy''@;'; put 'put ''VjMzQTEuMDgsMS4wOCwwLDAsMSwyMS4wOCwzNFpNOC4xNiwzMS44OEgyMFYxM0g4LjE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG48cmVjdCB4PSIxMC4wOCIgeT0iMTQuOTYiIHdpZHRoPSI4IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yNi4xLDI3LjgxaC0yVjloLTEyVjdoMTNhMSwxLDAsMCwxLDEsMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuPHBhdGggZD0iTTMwLjA4LDIzaC0yVjVoLTExVjNoMTJhMSwxLDAs''@;'; put 'put ''MCwxLDEsMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxyZWN0IHg9IjEzLjA4IiB5PSIyNy44OCIgd2lkdGg9IjIiIGhlaWdodD0iMi4xNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG5cbjxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xNS4wOCwzMSBMMS4wOCwzMSBDMC41MTM0MjcxOTcsMzEuMDAxNTU2NCAwLjA0MTk2NjM3NjUsMzAuNTY1MDE4NiAwLDMwIEwwLDkgQzAsOC40MDM1MzI0NyAwLjQ4MzUzMjQ3LDcuOTIgMS4wOCw3LjkyIEwxNS4wOCw3Ljky''@;'; put 'put ''IEMxNS42NzY0Njc1LDcuOTIgMTYuMTYsOC40MDM1MzI0NyAxNi4xNiw5IEwxNi4xNiwzMCBDMTYuMTE4MDMzNiwzMC41NjUwMTg2IDE1LjY0NjU3MjgsMzEuMDAxNTU2NCAxNS4wOCwzMSBaIE00LjA4LDExLjk2IEw0LjA4LDEzLjk2IEwxMi4wOCwxMy45NiBMMTIuMDgsMTEuOTYgTDQuMDgs''@;'; put 'put ''MTEuOTYgWiBNNy4wOCwyNC44OCBMNy4wOCwyNy4wNCBMOS4wOCwyNy4wNCBMOS4wOCwyNC44OCBMNy4wOCwyNC44OCBaIiAvPlxuPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTIwLjEsMjQuODEgTDE4LjEsMjQuODEgTDE4LjEsNiBMNi4xLDYgTDYu''@;'; put 'put ''MSw0IEwxOS4xLDQgQzE5LjY1MjI4NDcsNCAyMC4xLDQuNDQ3NzE1MjUgMjAuMSw1IEwyMC4xLDI0LjgxIFoiIC8+XG48cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMjQuMDgsMjAgTDIyLjA4LDIwIEwyMi4wOCwyIEwxMS4wOCwyIEwxMS4wOCwwIEwy''@;'; put 'put ''My4wOCwwIEMyMy42MzIyODQ3LDAgMjQuMDgsMC40NDc3MTUyNSAyNC4wOCwxIEwyNC4wOCwyMCBaIiAvPicpLGUuQ2xyU2hhcGVTdG9yYWdlQWRhcHRlcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNi4wNiwzMGExLDEsMCwwLDEtMS0xVjhoLTJhMSwxLDAsMCwxLDAtMmg0VjI5QTEs''@;'; put 'put ''MSwwLDAsMSw2LjA2LDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTMwLjA2LDI3aC0yNVY5aDI1YTMsMywwLDAsMSwzLDNWMjRBMywzLDAsMCwxLDMwLjA2LDI3Wm0tMjMtMmgyM2ExLDEsMCwwLDAsMS0xVjEyYTEsMSwwLDAs''@;'; put 'put ''MC0xLTFoLTIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHJlY3QgeD0iMjIuMDYiIHk9IjIwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cmVjdCB4PSIyMi4w''@;'; put 'put ''NiIgeT0iMTQiIHdpZHRoPSI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0xOS4wNiwyMmgtOFYyMGg3VjE0aDJ2N0ExLDEsMCwwLDEsMTkuMDYsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNSIvPicpLGUuQ2xyU2hhcGVOb2RlR3JvdXA9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjUzLDIxLjU4bC00Ljk0LTIuODNWMTMuMDlhMSwxLDAsMCwwLS41MS0uODdMMjIuNjQsOS4xYTEsMSwwLDAsMC0xLDBMMTYuMiwxMi4yMmExLDEsMCwwLDAtLjUxLjg3djUu''@;'; put 'put ''NjZsLTQuOTQsMi44M2ExLDEsMCwwLDAtLjUuODd2Ni4yNGExLDEsMCwwLDAsLjUuODZsNS40NSwzLjEyYTEsMSwwLDAsMCwxLDBsNC45NS0yLjgzLDQuOTUsMi44M2ExLDEsMCwwLDAsLjUuMTQsMSwxLDAsMCwwLC40OS0uMTRsNS40NS0zLjEyYTEsMSwwLDAsMCwuNS0uODZWMjIuNDVBMSwx''@;'; put 'put ''LDAsMCwwLDMzLjUzLDIxLjU4Wk0yMi4xNCwxMS4xMmw0LjQ1LDIuNTVWMTlsLTQuNDYsMi41Ni00LjQ0LTIuNlYxMy42N1pNMTYuNjksMzAuNjVsLTQuNDQtMi41NFYyM2w0LjY4LTIuNjgsNC40LDIuNTdWMjhaTTMyLDI4LjExbC00LjQ0LDIuNTRMMjIuOTMsMjhWMjIuOTNsNC40Ni0yLjU3''@;'; put 'put ''TDMyLDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTcsMjcuNDNhMSwxLDAsMCwxLTEtMVYxOS45QTEsMSwwLDAsMSw2LjUsMTlsNC45NS0yLjgzVjEwLjU0YTEsMSwwLDAsMSwuNS0uODdsNS4yMS0zYTEsMSwwLDAsMSwxLjM3''@;'; put 'put ''LjM3LDEsMSwwLDAsMS0uMzgsMS4zN2wtNC43LDIuNjh2NS42NmExLDEsMCwwLDEtLjUxLjg3TDgsMjAuNDh2NS45NUExLDEsMCwwLDEsNywyNy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0zLDI1LjA1YTEsMSwwLDAsMS0x''@;'; put 'put ''LTFWMTcuNTNhMSwxLDAsMCwxLC41LS44Nmw1LTIuODRWOC4xN0ExLDEsMCwwLDEsOCw3LjMxbDUuMjUtM2ExLDEsMCwwLDEsMSwxLjc0TDkuNDUsOC43NXY1LjY2YTEsMSwwLDAsMS0uNTEuODdMNCwxOC4xMXY1Ljk0QTEsMSwwLDAsMSwzLDI1LjA1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTMiLz4nKSxlLkNsclNoYXBlTm9kZXM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEwLjUsMzQuMjksMiwyOS4zOVYxOS41OGw4LjUtNC45LDguNSw0Ljl2OS44MVpNNCwyOC4yMywxMC41LDMyLDE3LDI4LjIzVjIwLjc0TDEwLjUsMTcsNCwyMC43NFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0yNS41LDM0LjI5LDE3LDI5LjM5VjE5LjU4bDguNS00LjksOC41LDQuOXY5LjgxWk0xOSwyOC4yMywyNS41LDMyLDMyLDI4LjIzVjIwLjc0TDI1LjUsMTcsMTksMjAuNzRaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMTgsMjEuMzJsLTguNS00LjlWNi42MUwxOCwxLjcxbDguNSw0Ljl2OS44MVptLTYuNS02LjA2TDE4LDE5bDYuNS0zLjc1VjcuNzdMMTgsNCwxMS41LDcuNzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMyIvPicpLGUuQ2xyU2hhcGVOYW1lc3BhY2U9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI3LDQuMThhMSwxLDAsMSwwLTEsMS43M2w2LDMuNDdWMjYuNjJsLTYsMy40N2ExLDEsMCwwLDAtLjM3LDEuMzYsMSwxLDAsMCwwLDEuMzcuMzdsNy00LjA1Vjgu''@;'; put 'put ''MjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNOS42OCwyOS45LDQsMjYuNjJWOS4zOEw5LjY4LDYuMWExLDEsMCwxLDAtMS0xLjczTDIsOC4yM1YyNy43N2w2LjY4LDMuODZhMSwxLDAsMCwwLDEuMzctLjM3QTEsMSwwLDAsMCw5''@;'; put 'put ''LjY4LDI5LjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMTAsMTJWMjRhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0yVjEyYTIsMiwwLDAsMC0yLTJIMTJBMiwyLDAsMCwwLDEwLDEyWm03LDB2NUgxMlYxMlptLTUsN2g1''@;'; put 'put ''djVIMTJabTcsNVYxOWg1djVabTUtN0gxOVYxMmg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz4nKSxlLkNsclNoYXBlTm9kZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMzAuNjYsNywyNC4zM1YxMS42N0wxOCw1LjM0bDExLDYuMzNWMjQu''@;'; put 'put ''MzNaTTksMjMuMThsOSw1LjE3LDktNS4xN1YxMi44MkwxOCw3LjY1LDksMTIuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPicpLGUuQ2xyU2hhcGVQb2Q9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI2LDMySDEwYTYsNiwwLDAsMS02LTZWMTBh''@;'; put 'put ''Niw2LDAsMCwxLDYtNkgyNmE2LDYsMCwwLDEsNiw2VjI2QTYsNiwwLDAsMSwyNiwzMlpNMTAsNmE0LDQsMCwwLDAtNCw0VjI2YTQsNCwwLDAsMCw0LDRIMjZhNCw0LDAsMCwwLDQtNFYxMGE0LDQsMCwwLDAtNC00WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; put 'put ''Lz5cbiAgPHBhdGggZD0iTTI2LjU2LDE1SDE1LjQ0QTEuNDMsMS40MywwLDAsMCwxNCwxNi40NHY4LjEyQTEuNDMsMS40MywwLDAsMCwxNS40NCwyNkgyNi41NkExLjQzLDEuNDMsMCwwLDAsMjgsMjQuNTZWMTYuNDRBMS40MywxLjQzLDAsMCwwLDI2LjU2LDE1Wk0yNiwyNEgxNlYxN0gyNloi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0xMi40LDE5SDEwVjEySDIwdjEuNGgydi0yQTEuNDMsMS40MywwLDAsMCwyMC41NiwxMEg5LjQ0QTEuNDMsMS40MywwLDAsMCw4LDExLjQ0djguMTJBMS40MywxLjQzLDAsMCwwLDkuNDQs''@;'; put 'put ''MjFoM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+JyksZS5DbHJDb250cm9sTHVuPSgwLGEuY2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNOCwyNC41OWEyNS41LDI1LjUsMCwwLDAsMi43NS41OWwxLjIxLTEuNDFhMjQuMTMsMjQuMTMsMCwwLDEtNC0u''@;'; put 'put ''ODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNNiwyNy41M1YxMC4zYzIuOSwxLjQzLDguMzQsMS44OCwxMiwxLjg4czkuMS0uNDUsMTItMS44OHY1LjExYy0uOTEuODItNSwyLjEzLTEyLDIuMTNBMzQuODEsMzQuODEsMCwwLDEs''@;'; put 'put ''OCwxNi4zM1YxOGE0MC44Niw0MC44NiwwLDAsMCwxMCwxLjE2YzMuNDYsMCw5LjEzLS40NSwxMi0xLjkxdjMuMjNoMlY4aDBzMCwwLDAtLjA3YzAtMy4zNS04LjgtNC4yNS0xNC00LjI1UzQsNC41OCw0LDcuOTN2MTkuNmMwLDIsMy4xNywzLjE0LDYuODMsMy43Mkw4LjM4LDI4LjY4QzcsMjgu''@;'; put 'put ''MjgsNi4xMywyNy44NCw2LDI3LjUzWk0xOCw1LjY4YzcuMTUsMCwxMS41MywxLjQ0LDEyLDIuMjUtLjQ2LjgxLTQuODQsMi4yNS0xMiwyLjI1UzYuMzEsOC42OSw2LDhDNi4zMSw3LjE4LDEwLjcxLDUuNjgsMTgsNS42OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yIi8+XG4gIDxwYXRoIGQ9Ik0zMi4wOSwyMkgxNS40NmwtNS40MSw2LjMxTDE1LjQ5LDM0aDE2LjZhMiwyLDAsMCwwLDItMlYyMy45M0EyLDIsMCwwLDAsMzIuMDksMjJabTAsMTBIMTYuMzRsLTMuNTktMy43N0wxNi4zOCwyNEgzMi4wOXY4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTE2LjExLDI3YTEsMSwwLDEsMCwxLDFBMSwxLDAsMCwwLDE2LjExLDI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cblxuICA8cGF0aCBkPSJNOCwyNC41OWEyNS41LDI1LjUsMCwwLDAsMi43''@;'; put 'put ''NS41OWwxLjIxLTEuNDFhMjQuMTMsMjQuMTMsMCwwLDEtNC0uODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTMyLjA5LDIySDE1LjQ2bC01LjQxLDYuMzFMMTUuNDksMzRoMTYuNmEyLDIsMCwwLDAs''@;'; put 'put ''Mi0yVjIzLjkzQTIsMiwwLDAsMCwzMi4wOSwyMlptMCwxMEgxNi4zNGwtMy41OS0zLjc3TDE2LjM4LDI0SDMyLjA5djhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTE2LjExLDI3YTEsMSwwLDEsMCwx''@;'; put 'put ''LDFBMSwxLDAsMCwwLDE2LjExLDI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik0xOCwxNy41NEEzNC44MSwzNC44MSwwLDAsMSw4LDE2LjMzVjE4YTQwLjg2LDQwLjg2LDAsMCwwLDEwLDEuMTZjMy40''@;'; put 'put ''NiwwLDkuMTMtLjQ1LDEyLTEuOTF2My4yM2gyVjEzLjIyYTcuMzIsNy4zMiwwLDAsMS0yLC4yOHYxLjkxQzI5LjA5LDE2LjIzLDI1LDE3LjU0LDE4LDE3LjU0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9''@;'; put 'put ''Ik02LDI3LjUzVjEwLjNjMi45LDEuNDMsOC4zNCwxLjg4LDEyLDEuODhhNDcuNjYsNDcuNjYsMCwwLDAsNy4wOS0uNTIsNy40NSw3LjQ1LDAsMCwxLTEuNTEtMS44LDQ3LjQsNDcuNCwwLDAsMS01LjU4LjMyQzEwLjcxLDEwLjE4LDYuMzEsOC42OSw2LDhjLjMyLS44LDQuNzItMi4zLDEyLTIu''@;'; put 'put ''MywxLjY2LDAsMy4xNi4wOCw0LjUxLjIxYTcuNTYsNy41NiwwLDAsMSwuMjktMmMtMS43LS4xNy0zLjM4LS4yNC00LjgtLjI0LTUuMiwwLTE0LC45LTE0LDQuMjV2MTkuNmMwLDIsMy4xNywzLjE0LDYuODMsMy43Mkw4LjM4LDI4LjY4QzcsMjguMjgsNi4xMywyNy44NCw2LDI3LjUzWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG5c''@;'; put 'put ''biAgPHBhdGggZD0iTTgsMjQuNTlhMjUuNSwyNS41LDAsMCwwLDIuNzUuNTlsMS4yMS0xLjQxYTI0LjEzLDI0LjEzLDAsMCwxLTQtLjgzWiIvPjxwYXRoIGQ9Ik0zMi4wOSwyMkgxNS40NmwtNS40MSw2LjMxTDE1LjQ5LDM0aDE2LjZhMiwyLDAsMCwwLDItMlYyMy45M0EyLDIsMCwwLDAsMzIu''@;'; put 'put ''MDksMjJabTAsMTBIMTYuMzRsLTMuNTktMy43N0wxNi4zOCwyNEgzMi4wOXY4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTE2LjExLDI3YTEsMSwwLDEsMCwxLDFBMSwxLDAsMCwwLDE2LjExLDI3''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTYsMjcuNTNWMTAuM2MyLjksMS40Myw4LjM0LDEuODgsMTIsMS44OGguNTlhMy41OSwzLjU5LDAsMCwxLC4zMi0ySDE4QzEwLjcxLDEwLjE4LDYuMzEs''@;'; put 'put ''OC42OSw2LDhjLjMyLS44LDQuNzItMi4zLDEyLTIuMywxLjIyLDAsMi4zNS4wNSwzLjQxLjEybDEuMS0xLjkxYy0xLjYtLjE1LTMuMTctLjIxLTQuNTEtLjIxLTUuMiwwLTE0LC45LTE0LDQuMjV2MTkuNmMwLDIsMy4xNywzLjE0LDYuODMsMy43Mkw4LjM4LDI4LjY4QzcsMjguMjgsNi4xMywy''@;'; put 'put ''Ny44NCw2LDI3LjUzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTgsMTYuMzNWMThhNDAuODYsNDAuODYsMCwwLDAsMTAsMS4xNmMzLjQ2LDAsOS4xMy0uNDUsMTItMS45MXYzLjIzaDJWMTUuNEgz''@;'; put 'put ''MGMtLjkxLjgyLTUsMi4xMy0xMiwyLjEzQTM0LjgxLDM0LjgxLDAsMCwxLDgsMTYuMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAs''@;'; put 'put ''MCwyMi4yMywxM0gzMy42OGExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG5cbiAgPHBh''@;'; put 'put ''dGggZD0iTTE2LjExLDI3YTEsMSwwLDEsMCwxLDFBMSwxLDAsMCwwLDE2LjExLDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzIuMDksMjFIMzJWMTcuMzJjLTEuOSwyLjkzLTEwLjQ2LDMuMy0xNCwzLjNBNDIuNDMsNDIuNDMsMCww''@;'; put 'put ''LDEsOCwxOS41NlYxNy44OEE0MC41OSw0MC41OSwwLDAsMCwxOCwxOWM1LDAsMTMuMi0uODIsMTQtMy44MlYxMC43MmMtMi4yMSwzLjM2LTEwLjQ5LDMuNDYtMTQsMy40NkE0Mi4xMiw0Mi4xMiwwLDAsMSw4LDEzLjExVjExYTQwLjU5LDQwLjU5LDAsMCwwLDEwLDEuMTRjNSwwLDEzLjI4LS44''@;'; put 'put ''MywxNC0zLjg4VjcuODNoMGMtLjE5LTMuMjctOC44NC00LjE1LTE0LTQuMTVTNC4yMSw0LjU2LDQsNy44M0g0djE5LjdjMCwyLjE2LDMuNjQsMy4zLDcuNjMsMy44NGwyLjg0LDMsLjU5LjYyaDE3YTMsMywwLDAsMCwzLTNWMjMuOTNBMywzLDAsMCwwLDMyLjA5LDIxWk04LDI2LjA4VjI0LjRh''@;'; put 'put ''MjUuNzksMjUuNzksMCwwLDAsMy40Ni43bC0xLjI0LDEuNDRDOS40NiwyNi40Miw4LjcxLDI2LjI3LDgsMjYuMDhaTTMzLjA5LDMyYTEsMSwwLDAsMS0xLDFIMTUuOTJMMTEuNCwyOC4yMywxNS45MiwyM0gzMi4wOWExLDEsMCwwLDEsMSwxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMiIvPlxuXG4gIDxwYXRoIGQ9Ik0xNi4xMSwyN2ExLDEsMCwxLDAsMSwxQTEsMSwwLDAsMCwxNi4xMSwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik0zMi4wOSwyMUgzMlYxNy4zMmMtMS45''@;'; put 'put ''LDIuOTMtMTAuNDYsMy4zLTE0LDMuM0E0Mi40Myw0Mi40MywwLDAsMSw4LDE5LjU2VjE3Ljg4QTQwLjU5LDQwLjU5LDAsMCwwLDE4LDE5YzUsMCwxMy4yLS44MiwxNC0zLjgydi0yYTcuMzQsNy4zNCwwLDAsMS00LjEyLDAsMzkuNDcsMzkuNDcsMCwwLDEtOS44OCwxQTQyLjEyLDQyLjEyLDAs''@;'; put 'put ''MCwxLDgsMTMuMTFWMTFhNDAuNTksNDAuNTksMCwwLDAsMTAsMS4xNCw0Ny43Niw0Ny43NiwwLDAsMCw3LjA5LS41MkE3LjQ1LDcuNDUsMCwwLDEsMjIuOCwzLjkyYy0xLjctLjE3LTMuMzgtLjI0LTQuOC0uMjQtNS4xNCwwLTEzLjc5Ljg4LTE0LDQuMTVINHYxOS43YzAsMi4xNiwzLjY0LDMu''@;'; put 'put ''Myw3LjYzLDMuODRsMi44NCwzLC41OS42MmgxN2EzLDMsMCwwLDAsMy0zVjIzLjkzQTMsMywwLDAsMCwzMi4wOSwyMVpNOCwyNi4wOFYyNC40YTI1Ljc5LDI1Ljc5LDAsMCwwLDMuNDYuN2wtMS4yNCwxLjQ0QzkuNDYsMjYuNDIsOC43MSwyNi4yNyw4LDI2LjA4Wk0zMy4wOSwzMmExLDEsMCww''@;'; put 'put ''LDEtMSwxSDE1LjkyTDExLjQsMjguMjMsMTUuOTIsMjNIMzIuMDlhMSwxLDAsMCwxLDEsMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cblxuICA8cGF0aCBkPSJNMTYuMTEsMjdhMSwxLDAsMSwwLDEsMUExLDEsMCwwLDAsMTYuMTEsMjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+''@;'; put 'put ''XG4gIDxwYXRoIGQ9Ik0zMi4wOSwyMUgzMlYxNy4zMmMtMS45LDIuOTMtMTAuNDYsMy4zLTE0LDMuM0E0Mi40Myw0Mi40MywwLDAsMSw4LDE5LjU2VjE3Ljg4QTQwLjU5LDQwLjU5LDAsMCwwLDE4LDE5YzQuODUsMCwxMi44LS43OSwxMy45MS0zLjYySDIyLjIzYTMuNjgsMy42OCwwLDAsMS0y''@;'; put 'put ''LjczLTEuMjNIMThBNDIuMTIsNDIuMTIsMCwwLDEsOCwxMy4xMVYxMWE0MC41OSw0MC41OSwwLDAsMCwxMCwxLjE0aC41OWEzLjYxLDMuNjEsMCwwLDEsLjQ2LTIuMjlsMy40Ni02Yy0xLjYtLjE1LTMuMTctLjIxLTQuNTEtLjIxLTUuMTQsMC0xMy43OS44OC0xNCw0LjE1SDR2MTkuN2MwLDIu''@;'; put 'put ''MTYsMy42NCwzLjMsNy42MywzLjg0bDIuODQsMywuNTkuNjJoMTdhMywzLDAsMCwwLDMtM1YyMy45M0EzLDMsMCwwLDAsMzIuMDksMjFaTTgsMjYuMDhWMjQuNGEyNS43OSwyNS43OSwwLDAsMCwzLjQ2LjdsLTEuMjQsMS40NEM5LjQ2LDI2LjQyLDguNzEsMjYuMjcsOCwyNi4wOFpNMzMuMDks''@;'; put 'put ''MzJhMSwxLDAsMCwxLTEsMUgxNS45MkwxMS40LDI4LjIzLDE1LjkyLDIzSDMyLjA5YTEsMSwwLDAsMSwxLDFaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0yNi44NSwxLjE0bC01LjcyLDkuOTFBMS4yNywx''@;'; put 'put ''LjI3LDAsMCwwLDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAn''@;'; put 'put ''KSxlLkNsclNoYXBlTWVkaWFDaGFuZ2VyPSgwLGEuY2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNMzAsNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwxLDAsMCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlY2''@;'; put 'put ''QTIsMiwwLDAsMCwzMCw0Wk02LDMwVjZIMzBWMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cmVjdCB4PSIyMCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxyZWN0IHg9IjIwIiB5PSIyMiIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHJlY3QgeD0iMjQiIHk9IjIyIiB3aWR0aD0iMiIg''@;'; put 'put ''aGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMjcuMjIsMTBIMjB2NGEuOC44LDAsMSwwLDEuNTksMFYxMS42aDUuNjNhLjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC01Ii8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjEwIiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxNCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTgiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjIyIiB3aWR0aD0iOC4xNCIg''@;'; put 'put ''aGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyNiIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIi8+XG5cbiAgPHJlY3QgeD0i''@;'; put 'put ''MjAiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iMjQiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iMjAiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iMjQiIHk9IjIyIiB3aWR0''@;'; put 'put ''aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTAiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTUtLWJhZGdlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxNCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjE4IiB3aWR0aD0i''@;'; put 'put ''OC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMjIiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTgtLWJhZGdlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyNiIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik0yMCwxNGEuOC44LDAsMSwwLDEu''@;'; put 'put ''NTksMFYxMS42SDI1QTcuNzQsNy43NCwwLDAsMSwyMy42NiwxMEgyMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTMwLDEzLjVoMFYzMEg2VjZIMjIuNVY2YTcuMzcsNy4zNywwLDAsMSwuMjgtMkg2''@;'; put 'put ''QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwxLDAsMCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjM3LDcuMzcsMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTExLS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG5cbiAgPHJlY3QgeD0iMjAiIHk9IjE4IiB3aWR0''@;'; put 'put ''aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSIyNCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gIDxyZWN0IHg9IjIwIiB5PSIyMiIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgPHJlY3QgeD0iMjQiIHk9IjIyIiB3aWR0aD0iMiIgaGVp''@;'; put 'put ''Z2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxMCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTUtLWFsZXJ0ZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTQiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjE4IiB3aWR0aD0iOC4x''@;'; put 'put ''NCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyMiIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTgtLWFsZXJ0ZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMjYiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC05LS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0zMCwxNS40VjMwSDZWNkgy''@;'; put 'put ''MS4yN2wxLjE4LTJINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJINy44OHYxLjU3YTEsMSwwLDAsMCwyLDBWMzJoMTZ2MS41N2ExLDEsMCwwLDAsMiwwVjMySDMwYTIsMiwwLDAsMCwyLTJWMTUuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xMC0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywxM0gzMy42OGExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuXG4gIDxwYXRoIGQ9Ik0zMCw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDcuODh2MS41N2ExLDEsMCwwLDAsMiwwVjMyaDE2djEuNTdhMSwxLDAsMCwwLDIsMFYz''@;'; put 'put ''MkgzMGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMwLDRaTTE3LDI4SDguODFWMjZIMTdabTAtNEg4LjgxVjIySDE3Wm0wLTRIOC44MVYxOEgxN1ptMC00SDguODFWMTRIMTdabTAtNEg4LjgxVjEwSDE3Wk0yMiwyNEgyMFYyMmgyWm0wLTRIMjBWMThoMlptNCw0SDI0VjIyaDJabTAtNEgy''@;'; put 'put ''NFYxOGgyWm0wLTZIMjBWMTBoNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cblxuICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ5LDcuNDksMCwwLDEtNC0xLjE2VjE0SDIwVjEwaDMuNjZBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNmE3LjM3LDcuMzcsMCwwLDEsLjI4''@;'; put 'put ''LTJINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJINy44OHYxLjU3YTEsMSwwLDAsMCwyLDBWMzJoMTZ2MS41N2ExLDEsMCwwLDAsMiwwVjMySDMwYTIsMiwwLDAsMCwyLTJWMTMuMjJBNy4zNyw3LjM3LDAsMCwxLDMwLDEzLjVaTTE3LDI4SDguODFWMjZIMTdabTAtNEg4LjgxVjIy''@;'; put 'put ''SDE3Wm0wLTRIOC44MVYxOEgxN1ptMC00SDguODFWMTRIMTdabTAtNEg4LjgxVjEwSDE3Wk0yMiwyNEgyMFYyMmgyWm0wLTRIMjBWMThoMlptNCw0SDI0VjIyaDJabTAtNEgyNFYxOGgyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5c''@;'; put 'put ''biAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuXG4gIDxwYXRoIGQ9Ik0yMi4yMywxNS40YTMuNjgsMy42OCwwLDAsMS0zLjE4LTUuNTFMMjIuNDUsNEg2QTIs''@;'; put 'put ''MiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwxLDAsMCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlYxNS40Wk0xNywyOEg4LjgxVjI2SDE3Wm0wLTRIOC44MVYyMkgxN1ptMC00SDguODFWMThIMTdabTAtNEg4LjgxVjE0''@;'; put 'put ''SDE3Wm0wLTRIOC44MVYxMEgxN1pNMjIsMjRIMjBWMjJoMlptMC00SDIwVjE4aDJabTQsNEgyNFYyMmgyWm0wLTRIMjRWMThoMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTI2Ljg1LDEuMTRsLTUuNzIs''@;'; put 'put ''OS45MUExLjI3LDEuMjcsMCwwLDAsMjIuMjMsMTNIMzMuNjhhMS4yNywxLjI3LDAsMCwwLDEuMS0xLjkxTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFs''@;'; put 'put ''ZXJ0Ii8+XG4gICcpLGUuQ2xyU2hhcGVUYXBlRHJpdmU9KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNNCwyOFY4SDMyVjI4WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTEzLjMzLDEzLjM1YTQuNTIsNC41MiwwLDEsMCw0LjUzLDQuNTJBNC41Myw0LjUzLDAsMCwwLDEzLjMzLDEzLjM1Wm0wLDcuNDRhMi45MiwyLjkyLDAsMSwxLDIuOTMtMi45MkEyLjkyLDIuOTIsMCwwLDEsMTMu''@;'; put 'put ''MzMsMjAuNzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjMuNjIsMTMuMzVhNC41Miw0LjUyLDAsMSwwLDQuNTIsNC41MkE0LjUzLDQuNTMsMCwwLDAsMjMuNjIsMTMuMzVabTAsNy40NGEyLjkyLDIuOTIsMCwxLDEsMi45Mi0y''@;'; put 'put ''LjkyQTIuOTIsMi45MiwwLDAsMSwyMy42MiwyMC43OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik02LDExVjIzLjU1SDhWMTJIMjkuMzRWMTBIN0ExLDEsMCwwLDAsNiwxMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC00Ii8+XG5cbiAgPHBhdGggZD0iTTguODEsMTcuODdhNC41Myw0LjUzLDAsMSwwLDQuNTItNC41MkE0LjUzLDQuNTMsMCwwLDAsOC44MSwxNy44N1ptNy40NSwwQTIuOTMsMi45MywwLDEsMSwxMy4zMywxNSwyLjkzLDIuOTMsMCwwLDEsMTYuMjYsMTcuODdaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTE5LjEsMTcuODdhNC41Miw0LjUyLDAsMSwwLDQuNTItNC41MkE0LjUzLDQuNTMsMCwwLDAsMTkuMSwxNy44N1ptNy40NCwwQTIuOTIsMi45MiwwLDEsMSwyMy42MiwxNSwy''@;'; put 'put ''LjkyLDIuOTIsMCwwLDEsMjYuNTQsMTcuODdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTMyLDEzLjIyVjI4SDRWOEgyMi43OGE3LjM3LDcuMzcsMCwwLDEtLjI4LTJINEEyLDIsMCwwLDAsMiw4VjI4''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjY1LDcuNjUsMCwwLDEsMzIsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTYsMTFWMjMuNTVIOFYxMkgyNS41MWE3LjY2''@;'; put 'put ''LDcuNjYsMCwwLDEtMS44NS0ySDdBMSwxLDAsMCwwLDYsMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cblxuICA8cGF0aCBkPSJNOC44MSwxNy44N2E0LjUzLDQuNTMsMCwxLDAsNC41Mi00LjUyQTQuNTMsNC41MywwLDAsMCw4LjgxLDE3Ljg3Wm03LjQ1LDBBMi45MywyLjkzLDAsMSwxLDEzLjMzLDE1LDIuOTMsMi45MywwLDAs''@;'; put 'put ''MSwxNi4yNiwxNy44N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik03LDEwYTEsMSwwLDAsMC0xLDFWMjMuNTVIOFYxMkgxOC41N0EzLjcsMy43LDAsMCwxLDE5LDEwWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMzJWMjhINFY4SDIwLjE0bDEuMTUtMkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE1LjM4WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTIyLjA5LDE1LjM5YTMuNjUsMy42NSwwLDAsMS0xLjgtLjU1LDQuNTEsNC41MSwwLDEsMCw3LjExLjU2SDI1LjE3YTIuOTIsMi45MiwwLDEsMS0zLjA4LDBaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywxM0gzMy42OGExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgs''@;'; put 'put ''MCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG5cbiAgPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4''@;'; put 'put ''QTIsMiwwLDAsMCwzMiw2Wk0zMCwyNEg2VjEySDMwWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMTIuMjEsMjNhNSw1LDAsMSwwLTUtNUE1LDUsMCwwLDAsMTIuMjEsMjNabTAtN2EyLDIsMCwxLDEtMiwyQTIsMiwwLDAsMSwxMi4yMSwx''@;'; put 'put ''NloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTIzLjc5LDIzYTUsNSwwLDEsMC01LTVBNSw1LDAsMCwwLDIzLjc5LDIzWm0wLTdhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMjMuNzksMTZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0zIi8+XG5cbiAgPHBhdGggZD0iTTEyLjIxLDIzYTUsNSwwLDEsMC01LTVBNSw1LDAsMCwwLDEyLjIxLDIzWm0wLTdhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMTIuMjEsMTZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdl''@;'; put 'put ''ZCIvPlxuICA8cGF0aCBkPSJNMjMuNzksMjNhNSw1LDAsMSwwLTUtNUE1LDUsMCwwLDAsMjMuNzksMjNabTAtN2EyLDIsMCwxLDEtMiwyQTIsMiwwLDAsMSwyMy43OSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gIDxwYXRo''@;'; put 'put ''IGQ9Ik0zMCwxMy41VjI0SDZWMTJIMjUuNTFhNy40OSw3LjQ5LDAsMCwxLTMtNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuXG4gIDxwYXRoIGQ9Ik03LjIsMThhNSw1LDAsMSwwLDUtNUE1LDUsMCww''@;'; put 'put ''LDAsNy4yLDE4Wm03LDBhMiwyLDAsMSwxLTItMkEyLDIsMCwwLDEsMTQuMjIsMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0xOC43OCwxOGE1LDUsMCwxLDAsOS4yNy0yLjZIMjIuMjNhMy43MSwzLjcx''@;'; put 'put ''LDAsMCwxLTIuMTctLjcxQTUsNSwwLDAsMCwxOC43OCwxOFptNS0yYTIsMiwwLDEsMS0yLDJBMiwyLDAsMCwxLDIzLjc5LDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMFYyNEg2''@;'; put 'put ''VjEySDE4LjU3YTMuNjUsMy42NSwwLDAsMSwuNDgtMi4xMUwyMS4yOSw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMzhaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIi8+XG4gIDxw''@;'; put 'put ''YXRoIGQ9Ik0yNi44NSwxLjE0bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCwwLDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAnKSxlLkNsclNoYXBlQW5pbWF0aW9uPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMC4xNiwzMS43MWE0LjQsNC40LDAsMCwxLTQuNjQtMUE0LjM0LDQuMzQsMCwwLDEsNC4yMywyNy42YTQuNDEsNC40MSwwLDAsMSwuMTgt''@;'; put 'put ''MS4yLDExLjYxLDExLjYxLDAsMCwxLTEtMi41Niw2LjQsNi40LDAsMCwwLDkuMzMsOC42M0ExMS41NSwxMS41NSwwLDAsMSwxMC4xNiwzMS43MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xOC40MSwyNy42OGE3LjYxLDcuNjEs''@;'; put 'put ''MCwwLDEtOS4wOC0xLjI2LDcuNTgsNy41OCwwLDAsMS0xLjI3LTkuMDYsMTQuMjYsMTQuMjYsMCwwLDEtLjM3LTIuODUsOS41OCw5LjU4LDAsMCwwLC4yMiwxMy4zMyw5LjYzLDkuNjMsMCwwLDAsMTMuMzUuMjJBMTQuNDYsMTQuNDYsMCwwLDEsMTguNDEsMjcuNjhaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjEuNjYsMjYuMjFhMTIuMSwxMi4xLDAsMSwxLDguNTctMy41NGgwQTEyLjExLDEyLjExLDAsMCwxLDIxLjY2LDI2LjIxWk0yMS42Niw0QTEwLjExLDEwLjExLDAsMCwwLDExLjU0LDE0LjExYTEwLDEwLDAsMCww''@;'; put 'put ''LDMsNy4xNCwxMC4xMiwxMC4xMiwwLDAsMCwxNC4zMSwwQTEwLjExLDEwLjExLDAsMCwwLDIxLjY2LDRabTcuODYsMThoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIFxuICA8cGF0aCBkPSJNMy41LDIzLjc3YTYuNDEsNi40MSwwLDAsMCw5LjMz''@;'; put 'put ''LDguNjdBMTEuNjUsMTEuNjUsMCwwLDEsMy41LDIzLjc3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNNy42OCwxNC41M2E5LjYsOS42LDAsMCwwLDEzLjQsMTMuN0ExNC4xMSwxNC4xMSwwLDAsMSw3LjY4LDE0LjUzWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjEuNzgsMkExMi4xMiwxMi4xMiwwLDEsMSw5LjY2LDE0LjE1LDEyLjEyLDEyLjEyLDAsMCwxLDIxLjc4LDIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgJyksZS5DbHJTaGFw''@;'; put 'put ''ZUNpQ2Q9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIzLjUzLDE5LjgxYTcuNDUsNy40NSwwLDAsMS0xLjY1LS4xOCwxMC40OCwxMC40OCwwLDAsMSwuNzIsMi4xM2MuMywwLC42MSwwLC45MywwYTkuNTIsOS41MiwwLDAsMCwzLS40OWwtLjkzLTEuODFBNy42Nyw3LjY3LDAsMCwxLDIz''@;'; put 'put ''LjUzLDE5LjgxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTE4LjM2LDE3Ljg3LDE4LDE3LjQ5YTcuNCw3LjQsMCwwLDEtMi4yLTUuOTIsNy4zMSw3LjMxLDAsMCwxLDEuNTQtNEwxNy4yNiw5QTEsMSwwLDAsMCwxOC4xNywxMGgu''@;'; put 'put ''MDlhMSwxLDAsMCwwLDEtLjkxTDE5LjYsNWExLDEsMCwwLDAtLjI5LS43OUExLDEsMCwwLDAsMTguNTIsNGwtNC4wOS4zNWExLDEsMCwwLDAsLjE3LDJsMS4yOS0uMTFhOS40NSw5LjQ1LDAsMCwwLTIuMDUsNS4zMiw5LjI4LDkuMjgsMCwwLDAsMi42Nyw3LjI2bC4zMS4zN2E3LjMzLDcuMzMs''@;'; put 'put ''MCwwLDEsMi4wNiw0LjkxLDcuMzksNy4zOSwwLDAsMS0uMjYsMi40N2wxLjguOTFhOC43Niw4Ljc2LDAsMCwwLC40NS0zLjUxQTkuMjgsOS4yOCwwLDAsMCwxOC4zNiwxNy44N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0zMi40''@;'; put 'put ''LDE3LjkxLDMxLjE5LDE4QTkuNjUsOS42NSwwLDAsMCwyMy41MywyLjQ1YTkuMzMsOS4zMywwLDAsMC0zLC40OWwuOTEsMS44YTcuNjcsNy42NywwLDAsMSw5Ljc2LDcuMzksNy41OCw3LjU4LDAsMCwxLTEuNjUsNC43MmwuMS0xLjU0YTEsMSwwLDEsMC0yLS4xM2wtLjI4LDQuMDhhMSwxLDAs''@;'; put 'put ''MCwwLC4zMS43OC45NC45NCwwLDAsMCwuNjkuMjhoLjFsNC4wOC0uNDJhMSwxLDAsMCwwLC45LTEuMUExLDEsMCwwLDAsMzIuNCwxNy45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik00LjA3LDIwLjQ0aC4wOGw0LjA5LS4zNWEx''@;'; put 'put ''LDEsMCwxLDAtLjE3LTJsLTEuMzkuMTJhNy42Myw3LjYzLDAsMCwxLDQuNTItMS40OSw3LjksNy45LDAsMCwxLDEuNjMuMTgsMTAuMjMsMTAuMjMsMCwwLDEtLjcxLTIuMTNjLS4zLDAtLjYxLDAtLjkyLDBhOS42Niw5LjY2LDAsMCwwLTUuOSwybC4xMi0xLjMxYTEsMSwwLDAsMC0uOTItMS4w''@;'; put 'put ''OCwxLDEsMCwwLDAtMS4wOC45MWwtLjM1LDQuMDhhMSwxLDAsMCwwLDEsMS4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0xOC40MiwyOC4yM2wtNC4wOS4yN2ExLDEsMCwwLDAsLjEzLDJMMTYsMzAuMzlhNy43MSw3LjcxLDAs''@;'; put 'put ''MCwxLTEyLjU0LTYsNy42LDcuNiwwLDAsMSwuMjktMkwyLDIxLjQ2YTkuNTksOS41OSwwLDAsMC0uNDcsMi45NUE5LjcsOS43LDAsMCwwLDE3LjE5LDMybC0uMTIsMS4xOGExLDEsMCwwLDAsLjg5LDEuMWguMTFhMSwxLDAsMCwwLDEtLjlsLjQyLTQuMDZhMSwxLDAsMCwwLTEuMDYtMS4xWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz4nKSxlLkNsclNoYXBlRmlsZVNoYXJlMj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUsNEg3LjgzQTEuODksMS44OSwwLDAsMCw2LDUuOTFWMzAuMDlBMS44OSwxLjg5LDAsMCwwLDcuODMsMzJIMjguMTdB''@;'; put 'put ''MS44NywxLjg3LDAsMCwwLDMwLDMwLjA5VjlaTTI0LDUuNzgsMjguMiwxMEgyNFpNOCwzMFY2SDIydjZoNlYzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0yMiwyMS44MWEyLjExLDIuMTEsMCwwLDAtMS40NC42MmwtNS43Mi0y''@;'; put 'put ''LjY2di0uNDRsNS42Ni0yLjY1YTIuMDgsMi4wOCwwLDEsMCwuMDYtMi45NGgwYTIuMTQsMi4xNCwwLDAsMC0uNjQsMS40OHYuMjNsLTUuNjQsMi42NmEyLjA4LDIuMDgsMCwxLDAtLjA4LDIuOTVsLjA4LS4wOCw1LjY3LDIuNjZ2LjNBMi4wOSwyLjA5LDAsMSwwLDIyLDIxLjg0WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgXG4gIDxwYXRoIGQ9Ik0yNSw0LjA2SDcuODNBMS44OSwxLjg5LDAsMCwwLDYsNlYzMC4xNWExLjg5LDEuODksMCwwLDAsMS44MywxLjkxSDI4LjE3QTEuODcsMS44NywwLDAsMCwzMCwzMC4xNVY5Wk0yMiwyNmEyLjA5''@;'; put 'put ''LDIuMDksMCwwLDEtMi4xLTIuMDh2LS4zTDE0LjI3LDIxbC0uMDguMDhhMi4wOCwyLjA4LDAsMSwxLC4wOC0yLjk1bDUuNjQtMi42NnYtLjIzYTIuMTQsMi4xNCwwLDAsMSwuNjQtMS40OGgwYTIuMDgsMi4wOCwwLDEsMS0uMDYsMi45NGwtNS42NiwyLjY1di40NGw1LjcyLDIuNjZBMi4xMSwy''@;'; put 'put ''LjExLDAsMCwxLDIyLDIxLjgxbDAsMEEyLjA5LDIuMDksMCwwLDEsMjIsMjZabTItMTZWNS44NGw0LjIsNC4yMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxlLlRlY2hub2xvZ3lTaGFwZXM9eyJydWxlci1wZW5jaWwiOmUuQ2xyU2hhcGVSdWxlclBlbmNp''@;'; put 'put ''bCwicGhvbmUtaGFuZHNldCI6ZS5DbHJTaGFwZVBob25lSGFuZHNldCwibm8td2lmaSI6ZS5DbHJTaGFwZU5vV2lmaSxpbnN0YWxsOmUuQ2xyU2hhcGVJbnN0YWxsLHVuaW5zdGFsbDplLkNsclNoYXBlVW5pbnN0YWxsLGxheWVyczplLkNsclNoYXBlTGF5ZXJzLGJsb2NrOmUuQ2xyU2hhcGVC''@;'; put 'put ''bG9jaywiYmxvY2tzLWdyb3VwIjplLkNsclNoYXBlQmxvY2tzR3JvdXAsYnVuZGxlOmUuQ2xyU2hhcGVCdW5kbGUsd2lmaTplLkNsclNoYXBlV2lmaSwicmFjay1zZXJ2ZXIiOmUuQ2xyU2hhcGVSYWNrU2VydmVyLCJoYXJkLWRpc2siOmUuQ2xyU2hhcGVIYXJkRGlzaywiYmFja3VwLXJlc3Rv''@;'; put 'put ''cmUiOmUuQ2xyU2hhcGVCYWNrdXBSZXN0b3JlLGJhY2t1cDplLkNsclNoYXBlQmFja3VwLGRldmljZXM6ZS5DbHJTaGFwZURldmljZXMsa2V5Ym9hcmQ6ZS5DbHJTaGFwZUtleWJvYXJkLG1vdXNlOmUuQ2xyU2hhcGVNb3VzZSxkYXNoYm9hcmQ6ZS5DbHJTaGFwZURhc2hib2FyZCxob3N0OmUu''@;'; put 'put ''Q2xyU2hhcGVIb3N0LHN0b3JhZ2U6ZS5DbHJTaGFwZVN0b3JhZ2UsY2x1c3RlcjplLkNsclNoYXBlQ2x1c3RlcixhcHBsaWNhdGlvbnM6ZS5DbHJTaGFwZUFwcGxpY2F0aW9ucyxidWlsZGluZzplLkNsclNoYXBlQnVpbGRpbmcsY3B1OmUuQ2xyU2hhcGVDUFUsbWVtb3J5OmUuQ2xyU2hhcGVN''@;'; put 'put ''ZW1vcnksImRhdGEtY2x1c3RlciI6ZS5DbHJTaGFwZURhdGFDbHVzdGVyLCJyZXNvdXJjZS1wb29sIjplLkNsclNoYXBlUmVzb3VyY2VQb29sLHNoaWVsZDplLkNsclNoYXBlU2hpZWxkLCJzaGllbGQtY2hlY2siOmUuQ2xyU2hhcGVTaGllbGRDaGVjaywic2hpZWxkLXgiOmUuQ2xyU2hhcGVT''@;'; put 'put ''aGllbGRYLGltcG9ydDplLkNsclNoYXBlSW1wb3J0LGV4cG9ydDplLkNsclNoYXBlRXhwb3J0LCJ1cGxvYWQtY2xvdWQiOmUuQ2xyU2hhcGVVcGxvYWRDbG91ZCwiZG93bmxvYWQtY2xvdWQiOmUuQ2xyU2hhcGVEb3dubG9hZENsb3VkLHBsdWdpbjplLkNsclNoYXBlUGx1Z2luLGZsb3BweTpl''@;'; put 'put ''LkNsclNoYXBlRmxvcHB5LGNvbXB1dGVyOmUuQ2xyU2hhcGVDb21wdXRlcixkaXNwbGF5OmUuQ2xyU2hhcGVEaXNwbGF5LHRlcm1pbmFsOmUuQ2xyU2hhcGVUZXJtaW5hbCxjb2RlOmUuQ2xyU2hhcGVDb2RlLGFwcGxpY2F0aW9uOmUuQ2xyU2hhcGVBcHBsaWNhdGlvbixiYXR0ZXJ5OmUuQ2xy''@;'; put 'put ''U2hhcGVCYXR0ZXJ5LG1vYmlsZTplLkNsclNoYXBlTW9iaWxlLHRhYmxldDplLkNsclNoYXBlVGFibGV0LCJuZXR3b3JrLWdsb2JlIjplLkNsclNoYXBlTmV0d29ya0dsb2JlLCJuZXR3b3JrLXNldHRpbmdzIjplLkNsclNoYXBlTmV0d29ya1NldHRpbmdzLCJuZXR3b3JrLXN3aXRjaCI6ZS5D''@;'; put 'put ''bHJTaGFwZU5ldHdvcmtTd2l0Y2gscm91dGVyOmUuQ2xyU2hhcGVSb3V0ZXIsdm06ZS5DbHJTaGFwZVZNLCJ2bXctYXBwIjplLkNsclNoYXBlVk1XQXBwLGNlcnRpZmljYXRlOmUuQ2xyU2hhcGVDZXJ0aWZpY2F0ZSxhcmNoaXZlOmUuQ2xyU2hhcGVBcmNoaXZlLHVuYXJjaGl2ZTplLkNsclNo''@;'; put 'put ''YXBlVW5hcmNoaXZlLGNvbm5lY3Q6ZS5DbHJTaGFwZUNvbm5lY3QsZGlzY29ubmVjdDplLkNsclNoYXBlRGlzY29ubmVjdCxsaW5rOmUuQ2xyU2hhcGVMaW5rLHVubGluazplLkNsclNoYXBlVW5saW5rLCJjbG91ZC1uZXR3b3JrIjplLkNsclNoYXBlQ2xvdWROZXR3b3JrLCJjbG91ZC1zY2Fs''@;'; put 'put ''ZSI6ZS5DbHJTaGFwZUNsb3VkU2NhbGUsImNsb3VkLXRyYWZmaWMiOmUuQ2xyU2hhcGVDbG91ZFRyYWZmaWMsImNvbnRyb2wtbHVuIjplLkNsckNvbnRyb2xMdW4sZGVwbG95OmUuQ2xyU2hhcGVEZXBsb3ksaGVsaXg6ZS5DbHJTaGFwZUhlbGl4LGZsYXNrOmUuQ2xyU2hhcGVGbGFzayxhZG1p''@;'; put 'put ''bmlzdHJhdG9yOmUuQ2xyU2hhcGVBZG1pbmlzdHJhdG9yLCJoYXJkLWRyaXZlIjplLkNsclNoYXBlSGFyZERyaXZlLCJoYXJkLWRyaXZlLWRpc2tzIjplLkNsclNoYXBlSGFyZERyaXZlRGlza3MsbnZtZTplLkNsclNoYXBlTlZNZSxzc2Q6ZS5DbHJTaGFwZVNTRCxibHVldG9vdGg6ZS5DbHJT''@;'; put 'put ''aGFwZUJsdWV0b290aCwiYmx1ZXRvb3RoLW9mZiI6ZS5DbHJTaGFwZUJsdWV0b290aE9mZiwicHJvY2Vzcy1vbi12bSI6ZS5DbHJTaGFwZVByb2Nlc3NPblZNLCJhc3NpZ24tdXNlciI6ZS5DbHJTaGFwZUFzc2lnblVzZXIsYXRvbTplLkNsclNoYXBlQXRvbSwiYmFyLWNvZGUiOmUuQ2xyU2hh''@;'; put 'put ''cGVCYXJDb2RlLCJjZC1kdmQiOmUuQ2xyU2hhcGVDZER2ZCxjb250YWluZXI6ZS5DbHJTaGFwZUNvbnRhaW5lciwiY29udGFpbmVyLXZvbHVtZSI6ZS5DbHJTaGFwZUNvbnRhaW5lclZvbHVtZSwiZmlsZS1zaGFyZSI6ZS5DbHJTaGFwZUZpbGVTaGFyZSwicXItY29kZSI6ZS5DbHJTaGFwZVFy''@;'; put 'put ''Q29kZSx1c2I6ZS5DbHJTaGFwZVVzYixyYWRhcjplLkNsclNoYXBlUmFkYXIsY2FwYWNpdG9yOmUuQ2xyU2hhcGVDYXBhY2l0b3Isc3F1aWQ6ZS5DbHJTaGFwZVNxdWlkLGluZHVjdG9yOmUuQ2xyU2hhcGVJbmR1Y3RvcixyZXNpc3RvcjplLkNsclNoYXBlUmVzaXN0b3IsImhvc3QtZ3JvdXAi''@;'; put 'put ''OmUuQ2xyU2hhcGVIb3N0R3JvdXAsInN0b3JhZ2UtYWRhcHRlciI6ZS5DbHJTaGFwZVN0b3JhZ2VBZGFwdGVyLCJub2RlLWdyb3VwIjplLkNsclNoYXBlTm9kZUdyb3VwLG5vZGVzOmUuQ2xyU2hhcGVOb2RlcyxuYW1lc3BhY2U6ZS5DbHJTaGFwZU5hbWVzcGFjZSxub2RlOmUuQ2xyU2hhcGVO''@;'; put 'put ''b2RlLHBvZDplLkNsclNoYXBlUG9kLCJtZWRpYS1jaGFuZ2VyIjplLkNsclNoYXBlTWVkaWFDaGFuZ2VyLCJ0YXBlLWRyaXZlIjplLkNsclNoYXBlVGFwZURyaXZlLGFuaW1hdGlvbjplLkNsclNoYXBlQW5pbWF0aW9uLCJjaS1jZCI6ZS5DbHJTaGFwZUNpQ2QsImZpbGUtc2hhcmUtMiI6ZS5D''@;'; put 'put ''bHJTaGFwZUZpbGVTaGFyZTJ9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLlRlY2hub2xvZ3lTaGFwZXMsInNlcnZlciIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLlRlY2hub2xvZ3lTaGFwZXMuaG9zdCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLlRlY2hub2xvZ3lTaGFwZXMsImNvbW1h''@;'; put 'put ''bmQiLCgwLHIuZGVzY3JpcHRvckNvbmZpZykoZS5UZWNobm9sb2d5U2hhcGVzLnRlcm1pbmFsKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuVGVjaG5vbG9neVNoYXBlcywibW9iaWxlLXBob25lIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuVGVjaG5vbG9neVNoYXBlcy5tb2JpbGUpKSxP''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHkoZS5UZWNobm9sb2d5U2hhcGVzLCJsaWNlbnNlIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuVGVjaG5vbG9neVNoYXBlcy5jZXJ0aWZpY2F0ZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLlRlY2hub2xvZ3lTaGFwZXMsImRpc2Nvbm5lY3RlZCIsKDAs''@;'; put 'put ''ci5kZXNjcmlwdG9yQ29uZmlnKShlLlRlY2hub2xvZ3lTaGFwZXNbIm5vLXdpZmkiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLlRlY2hub2xvZ3lTaGFwZXMsInJlY2VpdmVyIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuVGVjaG5vbG9neVNoYXBlc1sicGhvbmUtaGFuZHNldCJdKSks''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KGUuVGVjaG5vbG9neVNoYXBlcywiZGVzaWduIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuVGVjaG5vbG9neVNoYXBlc1sicnVsZXItcGVuY2lsIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5UZWNobm9sb2d5U2hhcGVzLCJkbmEiLCgwLHIuZGVz''@;'; put 'put ''Y3JpcHRvckNvbmZpZykoZS5UZWNobm9sb2d5U2hhcGVzLmhlbGl4KSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuVGVjaG5vbG9neVNoYXBlcywiZm9sZGVyLXNoYXJlIiwoMCxyLmRlc2NyaXB0b3JDb25maWcpKGUuVGVjaG5vbG9neVNoYXBlc1siZmlsZS1zaGFyZSJdKSksInVuZGVmaW5l''@;'; put 'put ''ZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5oYXNPd25Qcm9wZXJ0eSgiQ2xhcml0eUljb25zIikmJndpbmRvdy5DbGFyaXR5SWNvbnMuYWRkKGUuVGVjaG5vbG9neVNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdGV4dC1lZGl0LXNoYXBlcy50cyI6ZnVuY3Rpb24oQSxl''@;'; put 'put ''LGwpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5UZXh0RWRpdFNoYXBlcz1lLkNsclNoYXBlU3VwZXJzY3JpcHQ9ZS5DbHJTaGFwZVN1YnNjcmlwdD1lLkNsclNoYXBlU3RyaWtldGhyb3VnaD1lLkNsclNoYXBlSW5kZW50''@;'; put 'put ''PWUuQ2xyU2hhcGVPdXRkZW50PWUuQ2xyU2hhcGVIaWdobGlnaHRlcj1lLkNsclNoYXBlVGV4dENvbG9yPWUuQ2xyU2hhcGVMYW5ndWFnZT1lLkNsclNoYXBlQWxpZ25Ub3A9ZS5DbHJTaGFwZUFsaWduTWlkZGxlPWUuQ2xyU2hhcGVBbGlnbkJvdHRvbT1lLkNsclNoYXBlVW5kZXJsaW5lPWUu''@;'; put 'put ''Q2xyU2hhcGVUZXh0PWUuQ2xyU2hhcGVBbGlnblJpZ2h0VGV4dD1lLkNsclNoYXBlQmxvY2tRdW90ZT1lLkNsclNoYXBlUGFpbnRSb2xsZXI9ZS5DbHJTaGFwZU51bWJlckxpc3Q9ZS5DbHJTaGFwZUFsaWduTGVmdFRleHQ9ZS5DbHJTaGFwZUp1c3RpZnlUZXh0PWUuQ2xyU2hhcGVJdGFsaWM9''@;'; put 'put ''ZS5DbHJTaGFwZUFsaWduUmlnaHQ9ZS5DbHJTaGFwZUFsaWduTGVmdD1lLkNsclNoYXBlQWxpZ25DZW50ZXI9ZS5DbHJTaGFwZUZvbnRTaXplPWUuQ2xyU2hhcGVDaGVja2JveExpc3Q9ZS5DbHJTaGFwZUNlbnRlclRleHQ9ZS5DbHJTaGFwZUJ1bGxldExpc3Q9ZS5DbHJTaGFwZUJvbGQ9dm9p''@;'; put 'put ''ZCAwLGw9bCgiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKSxlLkNsclNoYXBlQm9sZD0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjIuNDMsMTcuNTRhNC42Nyw0LjY3LDAsMCwwLDIuOC00LjM3di0uMDZhNC40Myw0LjQzLDAsMCwwLTEuMzEt''@;'; put 'put ''My4yNSw3LjA5LDcuMDksMCwwLDAtNS4xMy0xLjczaC03QTEuNzEsMS43MSwwLDAsMCwxMCw5Ljg2VjI2YTEuNzIsMS43MiwwLDAsMCwxLjc0LDEuNzRoNy4zM2M0LjM3LDAsNy4yNS0xLjg4LDcuMjUtNS4zOFYyMi4zQzI2LjMyLDE5LjY0LDI0LjczLDE4LjMyLDIyLjQzLDE3LjU0Wk0xMy42''@;'; put 'put ''OCwxMS40aDQuNTRjMiwwLDMuMTUuODksMy4xNSwyLjMzdi4wNmMwLDEuNjgtMS4zNiwyLjQ5LTMuMzgsMi40OUgxMy42OFpNMjIuMzcsMjJjMCwxLjU5LTEuMzEsMi40My0zLjQ2LDIuNDNIMTMuNjhWMTkuNjJoNWMyLjQ5LDAsMy42OS44OCwzLjY5LDIuMzdaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxlLkNsclNoYXBlQnVsbGV0TGlzdD0oMCxsLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSI1LjIxIiBjeT0iOS4xNyIgcj0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PGNpcmNsZSBjeD0iNS4y''@;'; put 'put ''MSIgY3k9IjE3LjE3IiByPSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48Y2lyY2xlIGN4PSI1LjIxIiBjeT0iMjUuMTciIHI9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMi40Miw5YTEs''@;'; put 'put ''MSwwLDAsMC0xLTFIMTB2MkgzMS40MkExLDEsMCwwLDAsMzIuNDIsOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMS40MiwxNkgxMHYySDMxLjQyYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzEuNDIsMjRIMTB2MkgzMS40MmExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksZS5DbHJTaGFwZUNlbnRlclRleHQ9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLjg4LDhI''@;'; put 'put ''NS4xMmExLjEsMS4xLDAsMCwwLDAsMi4ySDMwLjg4YTEuMSwxLjEsMCwxLDAsMC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjUuNSwxNi4yYTEuMSwxLjEsMCwxLDAsMC0yLjJoLTE1YTEuMSwxLjEsMCwxLDAsMCwyLjJaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzAuMjUsMjBINS43NWExLjEsMS4xLDAsMCwwLDAsMi4yaDI0LjVhMS4xLDEuMSwwLDAsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik0yNC44OCwyNkgxMS4xMmExLjEsMS4xLDAsMSwwLDAsMi4ySDI0Ljg4YTEuMSwxLjEsMCwxLDAsMC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxlLkNsclNoYXBlQ2hlY2tib3hMaXN0PSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9''@;'; put 'put ''Ik0zMS40MywxNkgxMHYySDMxLjQzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzEuNDMsMjRIMTB2MkgzMS40M2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTIiIC8+PHBhdGggZD0iTTE1LjQ1LDEwaDE2YTEsMSwwLDAsMCwwLTJoLTE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTE3LjUsMy40MmExLjA5LDEuMDksMCwwLDAtMS41NSwwTDcuODksMTEuNDgsNC41MSw3Ljg0QTEuMSwx''@;'; put 'put ''LjEsMCwxLDAsMi45LDkuMzRsNC45NCw1LjNMMTcuNSw1QTEuMSwxLjEsMCwwLDAsMTcuNSwzLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+JyksZS5DbHJTaGFwZUZvbnRTaXplPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMSw5LjA4QTEu''@;'; put 'put ''MTMsMS4xMywwLDAsMCwxOS44Niw4SDQuNjJhMS4xLDEuMSwwLDEsMCwwLDIuMTlIMTFWMjdhMS4wOSwxLjA5LDAsMCwwLDIuMTcsMFYxMC4xOWg2LjY5QTEuMTQsMS4xNCwwLDAsMCwyMSw5LjA4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGgg''@;'; put 'put ''ZD0iTTMwLjY3LDE1SDIxLjE1YTEuMSwxLjEsMCwxLDAsMCwyLjE5SDI1VjI2LjVhMS4wOSwxLjA5LDAsMCwwLDIuMTcsMFYxNy4yM2gzLjU0YTEuMSwxLjEsMCwxLDAsMC0yLjE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZUFs''@;'; put 'put ''aWduQ2VudGVyPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMSwyMEgxOVYxNmg2YTEsMSwwLDAsMCwxLTFWN2ExLDEsMCwwLDAtMS0xSDE5VjJhMSwxLDAsMCwwLTIsMFY2SDExYTEsMSwwLDAsMC0xLDF2OGExLDEsMCwwLDAsMSwxaDZ2NEg1YTEsMSwwLDAsMC0xLDF2OGExLDEsMCww''@;'; put 'put ''LDAsMSwxSDE3djRhMSwxLDAsMCwwLDIsMFYzMEgzMWExLDEsMCwwLDAsMS0xVjIxQTEsMSwwLDAsMCwzMSwyMFpNMTIsMTRWOEgyNHY2Wk0zMCwyOEg2VjIySDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksZS5DbHJTaGFwZUFsaWduTGVmdD0o''@;'; put 'put ''MCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNSwxQTEsMSwwLDAsMCw0LDJWMzRhMSwxLDAsMCwwLDIsMFYyQTEsMSwwLDAsMCw1LDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzEsMjBIOFYzMEgzMWExLDEsMCwwLDAsMS0xVjIx''@;'; put 'put ''QTEsMSwwLDAsMCwzMSwyMFptLTEsOEgxMFYyMkgzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yNCwxNVY3YTEsMSwwLDAsMC0xLTFIOFYxNkgyM0ExLDEsMCwwLDAsMjQsMTVabS0yLTFIMTBWOEgyMloiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLGUuQ2xyU2hhcGVBbGlnblJpZ2h0PSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMSwxYTEsMSwwLDAsMC0xLDFWMzRhMSwxLDAsMCwwLDIsMFYyQTEsMSwwLDAsMCwzMSwxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTQsMjF2OGExLDEsMCwwLDAsMSwxSDI4VjIwSDVBMSwxLDAsMCwwLDQsMjFabTIsMUgyNnY2SDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTIsN3Y4YTEsMSwwLDAsMCwxLDFIMjhW''@;'; put 'put ''NkgxM0ExLDEsMCwwLDAsMTIsN1ptMiwxSDI2djZIMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxlLkNsclNoYXBlSXRhbGljPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNC40Miw4SDE3LjFhMS4xLDEuMSwwLDEsMCwwLDIuMTloMi4x''@;'; put 'put ''M0wxMy4xMSwyNS41NUgxMC40N2ExLjEsMS4xLDAsMSwwLDAsMi4xOUgxNy44YTEuMSwxLjEsMCwxLDAsMC0yLjE5SDE1LjUxbDYuMTMtMTUuMzZoMi43OGExLjEsMS4xLDAsMSwwLDAtMi4xOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGUuQ2xy''@;'; put 'put ''U2hhcGVKdXN0aWZ5VGV4dD0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNiwxMC4ySDMxLjc1YTEuMSwxLjEsMCwxLDAsMC0yLjJINmExLjEsMS4xLDAsMSwwLDAsMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMxLjc1LDE0''@;'; put 'put ''SDZhMS4xLDEuMSwwLDEsMCwwLDIuMkgzMS43NWExLjEsMS4xLDAsMSwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMxLjEyLDIwSDYuNjJhMS4xLDEuMSwwLDEsMCwwLDIuMmgyNC41YTEuMSwxLjEsMCwxLDAsMC0yLjJa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzAuNDUsMjUuODNINi42YTEuMSwxLjEsMCwwLDAsMCwyLjJIMzAuNDVhMS4xLDEuMSwwLDAsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAv''@;'; put 'put ''PicpLGUuQ2xyU2hhcGVBbGlnbkxlZnRUZXh0PSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMC4yNSwyNkg2djIuMkgyMC4yNWExLjEsMS4xLDAsMCwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI4LDIwSDZ2Mi4y''@;'; put 'put ''SDI4QTEuMSwxLjEsMCwwLDAsMjgsMjBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjIuNiwxNS4xQTEuMSwxLjEsMCwwLDAsMjEuNSwxNEg2djIuMkgyMS41QTEuMSwxLjEsMCwwLDAsMjIuNiwxNS4xWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTI5LjI1LDhINnYyLjJIMjkuMjVhMS4xLDEuMSwwLDEsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLGUuQ2xyU2hhcGVOdW1iZXJMaXN0PSgwLGwuY2xySWNvblNW''@;'; put 'put ''RykoJzxwb2x5Z29uIHBvaW50cz0iNS40NiA3LjQxIDUuNDYgMTEuNTYgNi42NSAxMS41NiA2LjY1IDYuMDUgNS43IDYuMDUgNC4wNSA3LjE2IDQuNTIgOCA1LjQ2IDcuNDEiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik01LjU3LDE0Ljgy''@;'; put 'put ''YS43Ni43NiwwLDAsMSwuODMuNzNjMCwuMzgtLjIxLjc0LS44NywxLjI3bC0yLDEuNTd2MUg3LjY3VjE4LjI4SDUuMzNsMS0uNzdjMS0uNywxLjI4LTEuMjcsMS4yOC0yYTEuODMsMS44MywwLDAsMC0yLTEuNzYsMi42MywyLjYzLDAsMCwwLTIuMTQsMS4wOGwuNzYuNzNBMS43NSwxLjc1LDAs''@;'; put 'put ''MCwxLDUuNTcsMTQuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNNi41NiwyNC42NGExLjMyLDEuMzIsMCwwLDAsMS0xLjI3YzAtLjg3LS43OC0xLjUxLTItMS41MWEyLjYxLDIuNjEsMCwwLDAtMi4xLDFsLjY5LjcyYTEuNzgsMS43''@;'; put 'put ''OCwwLDAsMSwxLjMtLjY0Yy41NCwwLC45Mi4yNi45Mi42NnMtLjM2LjYyLTEsLjYySDQuNzl2MWguNjRjLjc0LDAsMS4wNy4yMSwxLjA3LjYzcy0uMzUuNjgtMSwuNjhhMiwyLDAsMCwxLTEuNDYtLjY1bC0uNy43OGEyLjg1LDIuODUsMCwwLDAsMi4yMS45M2MxLjI5LDAsMi4xMy0uNjksMi4x''@;'; put 'put ''My0xLjY0QTEuMzMsMS4zMywwLDAsMCw2LjU2LDI0LjY0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMyLjQyLDlhMSwxLDAsMCwwLTEtMUgxMHYySDMxLjQyQTEsMSwwLDAsMCwzMi40Miw5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMxLjQyLDE2SDEwdjJIMzEuNDJhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMS40MiwyNEgxMHYySDMxLjQyYTEsMSwwLDAsMCwwLTJaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxlLkNsclNoYXBlUGFpbnRSb2xsZXI9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLDEwVjRhMiwyLDAsMCwwLTItMkg2QTIsMiwwLDAsMCw0LDR2NmEyLDIsMCwwLDAsMiwySDI5QTIsMiwwLDAsMCwzMSwx''@;'; put 'put ''MFpNNiw0SDI5djZINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMyw2SDMydjYuMjlMMTguNywxNi41NGExLDEsMCwwLDAtLjcsMVYxOUgxNlYzM2EyLDIsMCwwLDAsMiwyaDJhMiwyLDAsMCwwLDItMlYxOUgyMHYtLjczTDMzLjMs''@;'; put 'put ''MTRhMSwxLDAsMCwwLC43LTFWN0ExLDEsMCwwLDAsMzMsNlpNMjAsMzNIMThWMjFoMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxyZWN0IHg9IjQiIHk9IjIiIHdpZHRoPSIyNyIgaGVpZ2h0PSIxMCIgcng9IjEiIHJ5PSIxIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMyw2SDMydjYuMjRMMTguNzEsMTYuNDVhMSwxLDAsMCwwLS43MSwxVjE5SDE2VjM0YTEsMSwwLDAsMCwxLDFoNGExLDEsMCwwLDAsMS0xVjE5SDIwdi0uODJMMzMuMjksMTRBMSwxLDAsMCwwLDM0LDEzVjdBMSwxLDAsMCww''@;'; put 'put ''LDMzLDZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVCbG9ja1F1b3RlPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMS44NiwxNi41NWE0LjMxLDQuMzEsMCwwLDAtMi4xMS41NiwxNC40NCwxNC40NCwwLDAsMSw0LjM2LTYsMS4x''@;'; put 'put ''LDEuMSwwLDAsMC0xLjQtMS43Yy00LDMuMjUtNS43OCw3Ljc1LTUuNzgsMTAuNTRBNS4wOCw1LjA4LDAsMCwwLDEwLDI0LjU4YTQuNCw0LjQsMCwwLDAsMS44OC40NCw0LjI0LDQuMjQsMCwxLDAsMC04LjQ3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+''@;'; put 'put ''PHBhdGggZD0iTTIzLDE2LjU1YTQuMjksNC4yOSwwLDAsMC0yLjExLjU2LDE0LjUsMTQuNSwwLDAsMSw0LjM1LTYsMS4xLDEuMSwwLDEsMC0xLjM5LTEuN2MtNCwzLjI1LTUuNzgsNy43NS01Ljc4LDEwLjU0YTUuMDgsNS4wOCwwLDAsMCwzLDQuNjFBNC4zNyw0LjM3LDAsMCwwLDIzLDI1YTQu''@;'; put 'put ''MjQsNC4yNCwwLDEsMCwwLTguNDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxlLkNsclNoYXBlQWxpZ25SaWdodFRleHQ9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE0LjY1LDI3LjFhMS4xLDEuMSwwLDAsMCwxLjEsMS4xSDMwVjI2SDE1''@;'; put 'put ''Ljc1QTEuMSwxLjEsMCwwLDAsMTQuNjUsMjcuMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik02LjksMjEuMUExLjEsMS4xLDAsMCwwLDgsMjIuMkgzMFYyMEg4QTEuMSwxLjEsMCwwLDAsNi45LDIxLjFaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTMuNCwxNS4xYTEuMSwxLjEsMCwwLDAsMS4xLDEuMUgzMFYxNEgxNC41QTEuMSwxLjEsMCwwLDAsMTMuNCwxNS4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTYu''@;'; put 'put ''NzUsOGExLjEsMS4xLDAsMSwwLDAsMi4ySDMwVjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxlLkNsclNoYXBlVGV4dD0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTIuMTksOC44NGExLjQ1LDEuNDUsMCwwLDAtMS40LTFoLS4xMmExLjQ2''@;'; put 'put ''LDEuNDYsMCwwLDAtMS40MiwxTDEuMTQsMjYuNTZhMS4yOSwxLjI5LDAsMCwwLS4xNC41OSwxLDEsMCwwLDAsMSwxLDEuMTIsMS4xMiwwLDAsMCwxLjA4LS43N2wyLjA4LTQuNjVoMTFsMi4wOCw0LjU5YTEuMjQsMS4yNCwwLDAsMCwxLjEyLjgzLDEuMDgsMS4wOCwwLDAsMCwxLjA4LTEuMDgs''@;'; put 'put ''MS42NCwxLjY0LDAsMCwwLS4xNC0uNTdaTTYuMDgsMjAuNzFsNC41OS0xMC4yMiw0LjYsMTAuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzIuMjQsMTQuNzhBNi4zNSw2LjM1LDAsMCwwLDI3LjYsMTMuMmExMS4zNiwxMS4zNiww''@;'; put 'put ''LDAsMC00LjcsMSwxLDEsMCwwLDAtLjU4Ljg5LDEsMSwwLDAsMCwuOTQuOTIsMS4yMywxLjIzLDAsMCwwLC4zOS0uMDgsOC44Nyw4Ljg3LDAsMCwxLDMuNzItLjgxYzIuNywwLDQuMjgsMS4zMyw0LjI4LDMuOTJ2LjVhMTUuMjksMTUuMjksMCwwLDAtNC40Mi0uNjFjLTMuNjQsMC02LjE0LDEu''@;'; put 'put ''NjEtNi4xNCw0LjY0di4wNWMwLDIuOTUsMi43LDQuNDgsNS4zNyw0LjQ4YTYuMjksNi4yOSwwLDAsMCw1LjE5LTIuNDhWMjYuOWExLDEsMCwwLDAsMSwxLDEsMSwwLDAsMCwxLTEuMDZWMTlBNS43MSw1LjcxLDAsMCwwLDMyLjI0LDE0Ljc4Wm0tLjU2LDcuN2MwLDIuMjgtMi4xNywzLjg5LTQu''@;'; put 'put ''ODEsMy44OS0xLjk0LDAtMy42MS0xLjA2LTMuNjEtMi44NnYtLjA2YzAtMS44LDEuNS0zLDQuMi0zYTE1LjIsMTUuMiwwLDAsMSw0LjIyLjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksZS5DbHJTaGFwZVVuZGVybGluZT0oMCxsLmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNMTgsMjguMTdjNS4wOCwwLDguNDgtMy4wOCw4LjQ4LTlWOC41NGExLjE1LDEuMTUsMCwxLDAtMi4zLDB2MTAuOGMwLDQuNDQtMi4zOCw2LjcxLTYuMTMsNi43MXMtNi4yMS0yLjQ3LTYuMjEtNi44NVY4LjU0YTEuMTUsMS4xNSwwLDEsMC0yLjMsMHYxMC44QzkuNTMs''@;'; put 'put ''MjUuMDksMTMsMjguMTcsMTgsMjguMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzEsMzBINWExLjExLDEuMTEsMCwwLDAsMCwyLjIxSDMxQTEuMTEsMS4xMSwwLDAsMCwzMSwzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVBbGlnbkJvdHRvbT0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzQsMzBIMmExLDEsMCwwLDAsMCwySDM0YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBk''@;'; put 'put ''PSJNMTYsNWExLDEsMCwwLDAtMS0xSDdBMSwxLDAsMCwwLDYsNVYyOEgxNlpNMTQsMjZIOFY2aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzAsMTNhMSwxLDAsMCwwLTEtMUgyMWExLDEsMCwwLDAtMSwxVjI4SDMwWk0yOCwyNkgy''@;'; put 'put ''MlYxNGg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksZS5DbHJTaGFwZUFsaWduTWlkZGxlPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zNCwxN0gzMFYxMWExLDEsMCwwLDAtMS0xSDIxYTEsMSwwLDAsMC0xLDF2NkgxNlY1YTEsMSwwLDAs''@;'; put 'put ''MC0xLTFIN0ExLDEsMCwwLDAsNiw1VjE3SDJhMSwxLDAsMCwwLDAsMkg2VjMxYTEsMSwwLDAsMCwxLDFoOGExLDEsMCwwLDAsMS0xVjE5aDR2NmExLDEsMCwwLDAsMSwxaDhhMSwxLDAsMCwwLDEtMVYxOWg0YTEsMSwwLDAsMCwwLTJaTTE0LDMwSDhWNmg2Wm0xNC02SDIyVjEyaDZaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxlLkNsclNoYXBlQWxpZ25Ub3A9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDRIMkExLDEsMCwwLDAsMiw2SDM0YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMSIgLz48cGF0aCBkPSJNNiwzMWExLDEsMCwwLDAsMSwxaDhhMSwxLDAsMCwwLDEtMVY4SDZaTTgsMTBoNlYzMEg4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTIwLDIzYTEsMSwwLDAsMCwxLDFoOGExLDEsMCwwLDAsMS0x''@;'; put 'put ''VjhIMjBabTItMTNoNlYyMkgyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLGUuQ2xyU2hhcGVMYW5ndWFnZT0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAsM0gxNHY1aDJWNWgxNGMwLjYsMCwxLDAuNCwxLDF2MTFjMCwwLjYtMC40LDEt''@;'; put 'put ''MSwxSDE3djdoLTUuM0w4LDI3LjlWMjVINWMtMC42LDAtMS0wLjQtMS0xVjEzYzAtMC42LDAuNC0xLDEtMWgxM3YtMkg1XG5cdFx0Yy0xLjcsMC0zLDEuMy0zLDN2MTFjMCwxLjcsMS4zLDMsMywzaDF2NS4xbDYuMy01LjFIMTl2LTdoMTFjMS43LDAsMy0xLjMsMy0zVjZDMzMsNC4zLDMxLjcs''@;'; put 'put ''MywzMCwzeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTYuMiwyMi45aDIuNGwwLjYtMS42aDMuMWwwLjYsMS42aDIuNEwxMS45LDE0SDkuNUw2LjIsMjIuOXogTTEwLjcsMTYuNWwxLDMuMWgtMkwxMC43LDE2LjV6IiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjAsMTdjMS4xLDAsMi42LTAuMyw0LTFjMS40LDAuNywzLDEsNCwxdi0yYzAsMC0xLDAtMi4xLTAuNGMxLjItMS4yLDIuMS0zLDIuMS01LjZWOGgtM1Y2aC0ydjJoLTN2Mmg1Ljlcblx0XHRjLTAuMiwxLjgtMSwy''@;'; put 'put ''LjktMS45LDMuNmMtMC42LTAuNS0xLjItMS4yLTEuNi0yLjFoLTIuMWMwLjQsMS4zLDEsMi4zLDEuOCwzLjFDMjEuMSwxNSwyMC4yLDE1LDIwLDE1VjE3eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBvbHlnb24gcG9pbnRzPSIxMSwxNi41IDEwLDE5''@;'; put 'put ''LjYgMTIsMTkuNiAxMSwxNi41IFx0IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMC4zLDNoLTE2djVoNHYyaC0xM2MtMS43LDAtMywxLjMtMywzdjExYzAsMS43LDEuMywzLDMsM2gxdjUuMWw2LjMtNS4xaDYuN3YtN2gxMWMxLjcsMCwzLTEu''@;'; put 'put ''MywzLTNWNlxuXHRcdEMzMy4zLDQuMywzMiwzLDMwLjMsM3ogTTEzLjEsMjIuOWwtMC41LTEuNkg5LjVsLTAuNiwxLjZINi41TDkuOCwxNGgyLjRsMy4zLDguOUwxMy4xLDIyLjl6IE0yOC4zLDE1djJjLTEuMywwLTIuNy0wLjQtMy45LTFcblx0XHRjLTEuMiwwLjYtMi42LDAuOS00LDFsLTAu''@;'; put 'put ''MS0yYzAuNywwLDEuNC0wLjEsMi4xLTAuM2MtMC45LTAuOS0xLjUtMi0xLjgtMy4yaDIuMWMwLjMsMC45LDAuOSwxLjYsMS42LDIuMmMxLjEtMC45LDEuOC0yLjIsMS45LTMuN1xuXHRcdGgtNlY4aDNWNmgydjJoMy4zbDAuMSwxYzAuMSwyLjEtMC43LDQuMi0yLjIsNS43QzI3LjEsMTQuOSwy''@;'; put 'put ''Ny43LDE1LDI4LjMsMTV6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVUZXh0Q29sb3I9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE5LjQ3LDMuODRhMS40NSwxLjQ1LDAsMCwwLTEuNC0xSDE4YTEuNDUsMS40NSwwLDAsMC0xLjQy''@;'; put 'put ''LDFMOC40MiwyMS41NmExLjM1LDEuMzUsMCwwLDAtLjE0LjU5LDEsMSwwLDAsMCwxLDEsMS4xMSwxLjExLDAsMCwwLDEuMDgtLjc3bDIuMDgtNC42NWgxMWwyLjA4LDQuNTlhMS4yNCwxLjI0LDAsMCwwLDEuMTIuODMsMS4wOCwxLjA4LDAsMCwwLDEuMDgtMS4wOCwxLjU5LDEuNTksMCwwLDAt''@;'; put 'put ''LjE0LS41N1pNMTMuMzYsMTUuNzEsMTgsNS40OWw0LjYsMTAuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cmVjdCB4PSI0LjA2IiB5PSIyNSIgd2lkdGg9IjI4IiBoZWlnaHQ9IjgiIHJ4PSIyIiByeT0iMiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz4nKSxlLkNsclNoYXBlSGlnaGxpZ2h0ZXI9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE1LjgyLDI2LjA2YTEsMSwwLDAsMS0uNzEtLjI5TDguNjcsMTkuMzNhMSwxLDAsMCwxLS4yOS0uNzEsMSwxLDAsMCwxLC4yOS0uNzFMMjMsMy41NGE1''@;'; put 'put ''LjU1LDUuNTUsMCwxLDEsNy44NSw3Ljg2TDE2LjUzLDI1Ljc3QTEsMSwwLDAsMSwxNS44MiwyNi4wNlptLTUtNy40NCw1LDVMMjkuNDgsMTBhMy41NCwzLjU0LDAsMCwwLDAtNSwzLjYzLDMuNjMsMCwwLDAtNSwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; put 'put ''Lz5cbiAgPHBhdGggZD0iTTEwLjM4LDI4LjI4QTEsMSwwLDAsMSw5LjY3LDI4TDYuNDUsMjQuNzdhMSwxLDAsMCwxLS4yMi0xLjA5bDIuMjItNS40NGExLDEsMCwwLDEsMS42My0uMzNsNi40NSw2LjQ0QTEsMSwwLDAsMSwxNi4yLDI2bC01LjQ0LDIuMjJBMS4zMywxLjMzLDAsMCwxLDEwLjM4''@;'; put 'put ''LDI4LjI4Wk04LjMzLDIzLjgybDIuMjksMi4yOCwzLjQzLTEuNEw5Ljc0LDIwLjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTguOTQsMzBoLTVhMSwxLDAsMCwxLS44NC0xLjU1bDMuMjItNC45NGExLDEsMCwwLDEsMS41NS0u''@;'; put 'put ''MTZsMy4yMSwzLjIyYTEsMSwwLDAsMSwuMDYsMS4zNUw5LjcsMjkuNjRBMSwxLDAsMCwxLDguOTQsMzBaTTUuNzgsMjhIOC40N0w5LDI3LjM0bC0xLjctMS43WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHJlY3QgeD0iMy4wNiIgeT0iMzEiIHdp''@;'; put 'put ''ZHRoPSIzMCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPicpLGUuQ2xyU2hhcGVPdXRkZW50PSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMS4wNiw5aC0yNmExLDEsMCwxLDEsMC0yaDI2YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMTRoLTE3YTEsMSwwLDAsMSwwLTJoMTdhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwxOWgt''@;'; put 'put ''MTdhMSwxLDAsMCwxLDAtMmgxN2ExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDI0aC0xN2ExLDEsMCwwLDEsMC0yaDE3YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMjloLTI2YTEsMSwwLDAsMSwwLTJoMjZhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxwYXRoIGQ9Ik05LjU2LDIyLjU0YTEsMSwwLDAsMS0uNy0uM0w0''@;'; put 'put ''LjYxLDE4bDQuMjUtNC4yNGExLDEsMCwwLDEsMS40MSwxLjQxTDcuNDQsMThsMi44MywyLjgzYTEsMSwwLDAsMS0uNzEsMS43MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+JyksZS5DbHJTaGFwZUluZGVudD0oMCxsLmNsckljb25TVkcpKCc8cGF0aCBk''@;'; put 'put ''PSJNMzEuMDYsOWgtMjZhMSwxLDAsMSwxLDAtMmgyNmExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDE0aC0xN2ExLDEsMCwwLDEsMC0yaDE3YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMTloLTE3YTEsMSwwLDAsMSwwLTJoMTdhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwyNGgtMTdhMSwx''@;'; put 'put ''LDAsMCwxLDAtMmgxN2ExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDI5aC0yNmExLDEsMCwwLDEsMC0yaDI2YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNSIvPlxuICA8cGF0aCBkPSJNNS41NiwyMi41NGExLDEsMCwwLDEtLjctMS43MUw3LjY4LDE4LDQuODYsMTUuMTdhMSwxLDAsMCwxLDAtMS40MSwxLDEsMCwwLDEsMS40MSwwTDEwLjUxLDE4LDYuMjcsMjIuMjRBMSwxLDAsMCwxLDUuNTYsMjIuNTRaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPicpLGUuQ2xyU2hhcGVTdHJpa2V0aHJvdWdoPSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMi44OCwxOS45MmgtMzBhMSwxLDAsMSwxLDAtMmgzMGExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTcuMjcsMTUuODZhMTIuOSwxMi45LDAsMCwxLDEuMjktLjUyQTUuNjksNS42OSwwLDAsMSwxMC4zOSwxNWEzLjE4LDMuMTgsMCwwLDEsMi43NSwxLjExQTQuNDQsNC40NCwwLDAsMSwxNCwxOC44NXYuNDlhMTMuODMsMTMuODMsMCwwLDAtNC4y''@;'; put 'put ''OS0uNzQsNi4xOSw2LjE5LDAsMCwwLTIuNTkuNTRBNSw1LDAsMCwwLDUuODEsMjBIMTUuODhWMTguODVhNS42Nyw1LjY3LDAsMCwwLTEuMzctNCw1LjE2LDUuMTYsMCwwLDAtNC0xLjQ5LDEwLDEwLDAsMCwwLTMuOTEuODguODcuODcsMCwwLDAtLjQ0LDEuMThBLjg0Ljg0LDAsMCwwLDcuMjcs''@;'; put 'put ''MTUuODZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjEsMjBhNS45NCw1Ljk0LDAsMCwxLC41NC0yLjMxLDQuMzUsNC4zNSwwLDAsMSwxLjU4LTEuODMsNC4yNyw0LjI3LDAsMCwxLDQuNTksMCw0LjQ3LDQuNDcsMCwwLDEsMS41''@;'; put 'put ''NywxLjgzQTYuMTIsNi4xMiwwLDAsMSwyOS44NSwyMGgyYTcuNzMsNy43MywwLDAsMC0uNzgtMy4xOSw2LDYsMCwwLDAtMi4xOC0yLjQ1LDUuNzQsNS43NCwwLDAsMC0zLjEtLjg4LDUuMzksNS4zOSwwLDAsMC0yLjguNzMsNS41NSw1LjU1LDAsMCwwLTIsMi4wNVYxMGEuODcuODcsMCwwLDAt''@;'; put 'put ''Ljg2LS44NkgyMGEuODcuODcsMCwwLDAtLjg2Ljg2VjIwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTI5LjY3LDIyYTUuNjEsNS42MSwwLDAsMS0uMzYsMS4wNyw0LjQ3LDQuNDcsMCwwLDEtMS41NywxLjg1LDQuMzIsNC4zMiww''@;'; put 'put ''LDAsMS00LjU5LDAsNC4zNSw0LjM1LDAsMCwxLTEuNTgtMS44NUE1LjY0LDUuNjQsMCwwLDEsMjEuMiwyMkgxOS4wOXY0LjEzQS44Ny44NywwLDAsMCwyMCwyN2guMmEuODcuODcsMCwwLDAsLjg2LS44NlYyNC41MWE1LjU4LDUuNTgsMCwwLDAsMiwyLjA2LDUuNDgsNS40OCwwLDAsMCwyLjgu''@;'; put 'put ''NzIsNS42Niw1LjY2LDAsMCwwLDMuMS0uODhBNS44OCw1Ljg4LDAsMCwwLDMxLjA5LDI0LDcuMDksNy4wOSwwLDAsMCwzMS43MywyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0xNCwyMnYuNzZhMy4zNCwzLjM0LDAsMCwxLTEu''@;'; put 'put ''NjIsMiw1LjM0LDUuMzQsMCwwLDEtMi42OS43MiwzLjc4LDMuNzgsMCwwLDEtMi4zNi0uNywyLjI0LDIuMjQsMCwwLDEtLjk0LTEuOSwyLjI5LDIuMjksMCwwLDEsLjItLjkxSDQuNjJhNCw0LDAsMCwwLS4xMywxLDMuODMsMy44MywwLDAsMCwxLjM1LDMuMDZBNS4xNSw1LjE1LDAsMCwwLDku''@;'; put 'put ''MzEsMjcuMiw2LDYsMCwwLDAsMTIsMjYuNTdhNC42Miw0LjYyLDAsMCwwLDItMS43NFYyNmEuODYuODYsMCwwLDAsLjg2Ljg2SDE1YS44Ni44NiwwLDAsMCwuODYtLjg2VjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz4nKSxlLkNsclNoYXBlU3Vic2Ny''@;'; put 'put ''aXB0PSgwLGwuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC41NSwxOGw2LjgsOC42YTEuMTcsMS4xNywwLDAsMS0uOTIsMS45aDBhMS4xNywxLjE3LDAsMCwxLS45Mi0uNDRMMTMsMTkuOTEsNi42LDI4YTEuMTcsMS4xNywwLDAsMS0uOTIuNDRoMGExLjE3LDEuMTcsMCwwLDEtLjkyLTEuOUwx''@;'; put 'put ''MS41NSwxOGwtNi44LTguNmExLjE3LDEuMTcsMCwwLDEsLjkyLTEuOWgwQTEuMTcsMS4xNywwLDAsMSw2LjYzLDhsNi40NCw4LjEzTDE5LjUsOGExLjE3LDEuMTcsMCwwLDEsLjkyLS40NGgwYTEuMTcsMS4xNywwLDAsMSwuOTIsMS45WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTIzLDMxLjgsMjcuNDksMjhhOS45LDkuOSwwLDAsMCwxLjg4LTIuMDVBMy40NCwzLjQ0LDAsMCwwLDMwLDI0YTIuMzUsMi4zNSwwLDAsMC0uMzUtMS4yNywyLjQ0LDIuNDQsMCwwLDAtMS0uODQsMi45LDIuOSwwLDAsMC0xLjI2LS4yOCwzLjM2''@;'; put 'put ''LDMuMzYsMCwwLDAtMS44My41LDUuNjQsNS42NCwwLDAsMC0xLjQ4LDEuNDJsLTEtLjgxYTUuMTEsNS4xMSwwLDAsMSw0LjM2LTIuMzcsNC4zNSw0LjM1LDAsMCwxLDIsLjQ1LDMuNDMsMy40MywwLDAsMSwyLDMuMTgsNC40NSw0LjQ1LDAsMCwxLS42OCwyLjM1LDEwLjksMTAuOSwwLDAsMS0y''@;'; put 'put ''LjI0LDIuNDZsLTMuMjQsMi44MUgzMS41VjMzSDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz4nKSxlLkNsclNoYXBlU3VwZXJzY3JpcHQ9KDAsbC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE0LjQzLDE4bDYuNzksOC42YTEuMTcsMS4xNywwLDAsMS0u''@;'; put 'put ''OTIsMS45aDBhMS4xNywxLjE3LDAsMCwxLS45Mi0uNDRsLTYuNDQtOC4xM0w2LjQ3LDI4YTEuMTcsMS4xNywwLDAsMS0uOTIuNDRoMGExLjE3LDEuMTcsMCwwLDEtLjkyLTEuOUwxMS40MywxOGwtNi44LTguNmExLjE3LDEuMTcsMCwwLDEsLjkyLTEuOWgwQTEuMiwxLjIsMCwwLDEsNi41MSw4''@;'; put 'put ''bDYuNDMsOC4xM0wxOS4zOCw4YTEuMTcsMS4xNywwLDAsMSwuOTItLjQ0aDBhMS4xNywxLjE3LDAsMCwxLC45MiwxLjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMjIuODUsMTQuNDdsNC41MS0zLjg1YTkuMzcsOS4zNywwLDAs''@;'; put 'put ''MCwxLjg4LTIsMy40MywzLjQzLDAsMCwwLC41OS0xLjg2LDIuMjcsMi4yNywwLDAsMC0uMzYtMS4yNywyLjM4LDIuMzgsMCwwLDAtLjk1LS44MywyLjc3LDIuNzcsMCwwLDAtMS4yNi0uMjksMy4zOSwzLjM5LDAsMCwwLTEuODMuNSw1LjgzLDUuODMsMCwwLDAtMS40OSwxLjQybC0xLS44MWE1''@;'; put 'put ''LjEyLDUuMTIsMCwwLDEsNC4zNi0yLjM3LDQuMzYsNC4zNiwwLDAsMSwyLC40NSwzLjQ3LDMuNDcsMCwwLDEsMiwzLjE4QTQuNDQsNC40NCwwLDAsMSwzMC41OCw5YTExLjE0LDExLjE0LDAsMCwxLTIuMjQsMi40NkwyNS4xLDE0LjMxaDYuMjh2MS4zM0gyMi44NVoiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+JyksZS5UZXh0RWRpdFNoYXBlcz17Ym9sZDplLkNsclNoYXBlQm9sZCwiYnVsbGV0LWxpc3QiOmUuQ2xyU2hhcGVCdWxsZXRMaXN0LCJjaGVja2JveC1saXN0IjplLkNsclNoYXBlQ2hlY2tib3hMaXN0LCJudW1iZXItbGlzdCI6ZS5DbHJT''@;'; put 'put ''aGFwZU51bWJlckxpc3QsImZvbnQtc2l6ZSI6ZS5DbHJTaGFwZUZvbnRTaXplLGl0YWxpYzplLkNsclNoYXBlSXRhbGljLCJqdXN0aWZ5LXRleHQiOmUuQ2xyU2hhcGVKdXN0aWZ5VGV4dCwiY2VudGVyLXRleHQiOmUuQ2xyU2hhcGVDZW50ZXJUZXh0LCJhbGlnbi1sZWZ0LXRleHQiOmUuQ2xy''@;'; put 'put ''U2hhcGVBbGlnbkxlZnRUZXh0LCJhbGlnbi1yaWdodC10ZXh0IjplLkNsclNoYXBlQWxpZ25SaWdodFRleHQsInBhaW50LXJvbGxlciI6ZS5DbHJTaGFwZVBhaW50Um9sbGVyLCJibG9jay1xdW90ZSI6ZS5DbHJTaGFwZUJsb2NrUXVvdGUsdGV4dDplLkNsclNoYXBlVGV4dCx1bmRlcmxpbmU6''@;'; put 'put ''ZS5DbHJTaGFwZVVuZGVybGluZSwiYWxpZ24tY2VudGVyIjplLkNsclNoYXBlQWxpZ25DZW50ZXIsImFsaWduLWxlZnQiOmUuQ2xyU2hhcGVBbGlnbkxlZnQsImFsaWduLXJpZ2h0IjplLkNsclNoYXBlQWxpZ25SaWdodCwiYWxpZ24tYm90dG9tIjplLkNsclNoYXBlQWxpZ25Cb3R0b20sImFs''@;'; put 'put ''aWduLW1pZGRsZSI6ZS5DbHJTaGFwZUFsaWduTWlkZGxlLCJhbGlnbi10b3AiOmUuQ2xyU2hhcGVBbGlnblRvcCxsYW5ndWFnZTplLkNsclNoYXBlTGFuZ3VhZ2UsInRleHQtY29sb3IiOmUuQ2xyU2hhcGVUZXh0Q29sb3IsaGlnaGxpZ2h0ZXI6ZS5DbHJTaGFwZUhpZ2hsaWdodGVyLGluZGVu''@;'; put 'put ''dDplLkNsclNoYXBlSW5kZW50LG91dGRlbnQ6ZS5DbHJTaGFwZU91dGRlbnQsc3RyaWtldGhyb3VnaDplLkNsclNoYXBlU3RyaWtldGhyb3VnaCxzdWJzY3JpcHQ6ZS5DbHJTaGFwZVN1YnNjcmlwdCxzdXBlcnNjcmlwdDplLkNsclNoYXBlU3VwZXJzY3JpcHR9LCJ1bmRlZmluZWQiIT10eXBl''@;'; put 'put ''b2Ygd2luZG93JiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChlLlRleHRFZGl0U2hhcGVzKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90cmF2ZWwtc2hhcGVzLnRzIjpmdW5jdGlvbihBLGUsYSl7InVzZSBzdHJp''@;'; put 'put ''Y3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLlRyYXZlbFNoYXBlcz1lLkNsclNoYXBlT25Ib2xpZGF5PWUuQ2xyU2hhcGVUcmFpbGVyPWUuQ2xyU2hhcGVGZXJyeT1lLkNsclNoYXBlQ2FyYXZhbj1lLkNsclNoYXBlQ2FtcGVydmFuPWUuQ2xy''@;'; put 'put ''U2hhcGVCb2F0PWUuQ2xyU2hhcGVCaWN5Y2xlPWUuQ2xyU2hhcGVNYXBNYXJrZXI9ZS5DbHJTaGFwZUNvbXBhc3M9ZS5DbHJTaGFwZU1hcD1lLkNsclNoYXBlQ2FyPWUuQ2xyU2hhcGVBaXJwbGFuZT1lLkNsclNoYXBlVHJ1Y2s9dm9pZCAwO3ZhciByPWEoIi4vcHJvamVjdHMvaWNvbnMvc3Jj''@;'; put 'put ''L3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIik7YT1hKCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpLGUuQ2xyU2hhcGVUcnVjaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgZD0iTTMwLDEySDI2VjdhMSwxLDAsMCwwLTEtMUgzQTEsMSwwLDAsMCwyLDdWMjVhMSwxLDAsMCwwLDEsMUg0VjhIMjRWMTkuN2E2LjQ1LDYuNDUsMCwwLDEsMS41Ni0uMmMuMTUsMCwuMjksMCwuNDQsMFYxNGg0YTIsMiwwLDAsMSwyLDJ2MUgyOHYyaDR2NUgyOS42YTQuNTQsNC41NCww''@;'; put 'put ''LDAsMC04LjM0LDBIMTQuNDNhNC41LDQuNSwwLDAsMC00LjE3LTIuNzZBNC4zOCw0LjM4LDAsMSwwLDE0LjcyLDI2SDIxYTQuNDksNC40OSwwLDAsMCw4LjkyLDBIMzNhMSwxLDAsMCwwLDEtMVYxNkE0LDQsMCwwLDAsMzAsMTJaTTEwLjI2LDI4YTIuMzgsMi4zOCwwLDEsMSwwLTQuNzUsMi4z''@;'; put 'put ''OCwyLjM4LDAsMSwxLDAsNC43NVptMTUuMTcsMGEyLjM4LDIuMzgsMCwxLDEsMi41LTIuMzdBMi40NCwyLjQ0LDAsMCwxLDI1LjQzLDI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLDEySDI2VjdhMSwxLDAsMCww''@;'; put 'put ''LTEtMUgzQTEsMSwwLDAsMCwyLDdWMjVhMSwxLDAsMCwwLDEsMUg0VjhIMjRWMjEuNDlBNC40NSw0LjQ1LDAsMCwwLDIxLjI1LDI0SDE0LjQzYTQuNSw0LjUsMCwwLDAtNC4xNy0yLjc2QTQuMzgsNC4zOCwwLDEsMCwxNC43MiwyNkgyMWE0LjQ4LDQuNDgsMCwwLDAsOC45MSwwSDM0VjE2QTQs''@;'; put 'put ''NCwwLDAsMCwzMCwxMlpNMTAuMjYsMjhhMi4zOCwyLjM4LDAsMSwxLDAtNC43NSwyLjM4LDIuMzgsMCwxLDEsMCw0Ljc1Wm0xNS4xNywwYTIuMzgsMi4zOCwwLDEsMSwyLjUtMi4zN0EyLjQ0LDIuNDQsMCwwLDEsMjUuNDIsMjhaTTMyLDE3SDI2VjE0aDRhMiwyLDAsMCwxLDIsMloiLz4nKSxl''@;'; put 'put ''LkNsclNoYXBlQWlycGxhbmU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNS43Nyw4LjE2YTIuNDMsMi40MywwLDAsMC0xLjktMkwyOCw0Ljg3YTQuNSw0LjUsMCwwLDAtMy42NS43OUw3LDE4LjMsMi4xNCwx''@;'; put 'put ''OC4xQTEuODYsMS44NiwwLDAsMCwuOTEsMjEuNDFsNSwzLjkzYy42LjczLDEsLjU5LDEwLjkzLTQuODJsLjkzLDkuNDJhMS4zNiwxLjM2LDAsMCwwLC44NSwxLjE4LDEuNDMsMS40MywwLDAsMCwuNTQuMSwxLjU0LDEuNTQsMCwwLDAsMS0uNDFsMi4zOS0yLjE4YTEuNTIsMS41MiwwLDAsMCwu''@;'; put 'put ''NDYtLjgzTDI1LjIsMTUuOWMzLjU3LTIsNi45NS0zLjg4LDkuMzYtNS4yNUEyLjQzLDIuNDMsMCwwLDAsMzUuNzcsOC4xNlptLTIuMi43NWMtMi41LDEuNDItNiwzLjQxLTkuNzYsNS40N2wtLjQxLjIzTDIxLjA3LDI3LjI4bC0xLjQ3LDEuMzRMMTguNSwxNy4zMiwxNy4xNywxOEMxMCwyMiw3''@;'; put 'put ''LjYxLDIzLjE2LDYuNzksMjMuNTJsLTQuMy0zLjQxLDUuMDguMjIsMTgtMTMuMDZhMi41MSwyLjUxLDAsMCwxLDItLjQ1bDUuODUsMS4yNmEuNDMuNDMsMCwwLDEsLjM1LjM3QS40Mi40MiwwLDAsMSwzMy41Nyw4LjkxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik03LDEyLjU0bDMuNTYsMSwxLjY0LTEuMTktNC0xLjE2TDEwLDEwLjA5bDUuNDctLjE2LDIuMy0xLjY3TDEwLDguNWExLjI1LDEuMjUsMCwwLDAtLjcuMTdMNi42NywxMC4yQTEuMjgsMS4yOCwwLDAsMCw3LDEyLjU0WiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTYuMjUsMTEuNSwxMiwxMy4xNmw2LjMyLTQuNTktOS4wNy4yNkEuNTIuNTIsMCwwLDAsOSw4LjkxTDYuMTMsMTAuNTZBLjUxLjUxLDAsMCwwLDYuMjUsMTEuNVoiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zNC41Miw2LjM2LDI4LjIyLDVhMy43OCwzLjc4LDAsMCwwLTMuMDcuNjdMNi4xMiwxOS41bC00LjU3LS4yYTEuMjUsMS4yNSwwLDAsMC0uODMsMi4yMmw0LjQ1LDMuNTNhLjU1LjU1LDAsMCwwLC41My4wOWMxLjI3''@;'; put 'put ''LS40OSw2LTMsMTEuNTktNi4wN2wxLjEyLDExLjUxYS41NS41NSwwLDAsMCwuOS4zN2wyLjUtMi4wOGEuNzYuNzYsMCwwLDAsLjI2LS40NWwyLjM3LTEzLjI5YzQtMi4yMiw3LjgyLTQuMzcsMTAuNTEtNS44OUExLjU1LDEuNTUsMCwwLDAsMzQuNTIsNi4zNloiLz4nKSxlLkNsclNoYXBlQ2Fy''@;'; put 'put ''PSgwLGEuY2xySWNvblNWRykoJzxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSIxNSIgeT0iMTciIHdpZHRoPSIzIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMiIgZD0iTTI2LjQ1LDE0LjE3QTIyLjEsMjIuMSwwLDAsMCwxOS4zOCw3YTkuNjQsOS42NCwwLDAsMC05LS43LDguNiw4LjYsMCwwLDAtNC44Miw2LjRjLS4wOC40Ny0uMTQuOTItLjIsMS4zNkE0LDQsMCwwLDAsMiwxOHY2LjEzYTIsMiwwLDAsMCwyLDJWMjBINFYxOGEyLDIsMCwwLDEs''@;'; put 'put ''Mi0ySDI0LjczQTcuMjgsNy4yOCwwLDAsMSwzMiwyMy4yN1YyNGgtMmE0LjUzLDQuNTMsMCwxLDAsLjMzLDJIMzJhMiwyLDAsMCwwLDItMnYtLjczQTkuMjgsOS4yOCwwLDAsMCwyNi40NSwxNC4xN1pNMTEsMTRINi45M2MwLS4zMS4wOS0uNjMuMTUtMUE2LjUyLDYuNTIsMCwwLDEsMTEsOGgw''@;'; put 'put ''Wm0yLDBWNy41OGE4LjE3LDguMTcsMCwwLDEsNS4zNiwxLjE2QTE5LDE5LDAsMCwxLDIzLjksMTRaTTI1LjgsMjguMzhhMi41LDIuNSwwLDEsMSwyLjUtMi41QTIuNSwyLjUsMCwwLDEsMjUuOCwyOC4zOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE0LjE3LDI0YTQuNTMsNC41MywwLDEsMCwuMzMsMmg1LjNjMC0uMDgsMC0uMTcsMC0uMjVBNiw2LDAsMCwxLDIwLDI0Wk0xMCwyOC4zOGEyLjUsMi41LDAsMSwxLDIuNS0yLjVBMi41LDIuNSwwLDAsMSwxMCwyOC4zOFoiLz5cbiAgICAgICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjYuODcsMTQuMjhBMjIuMzYsMjIuMzYsMCwwLDAsMTkuNjUsNi45YTkuNjQsOS42NCwwLDAsMC05LS43LDguNiw4LjYsMCwwLDAtNC44Miw2LjRjLS4wOC40OS0uMTUsMS0uMjEsMS40aC0xQTIu''@;'; put 'put ''NTksMi41OSwwLDAsMCwyLDE2LjU5djguNTVhLjg2Ljg2LDAsMCwwLC44Ni44Nkg0LjU5YzAtLjEzLDAtLjI2LDAtLjM5YTUuNzcsNS43NywwLDAsMSw3LjcxLTUuNDVsLTEsMWE0LjU2LDQuNTYsMCwwLDAtNC4zNCwxLjU4LDMsMywwLDAsMC0uNjMuOTNBNC41LDQuNSwwLDEsMCwxNC44Miwy''@;'; put 'put ''Nmg1LjQ4YzAtLjEzLDAtLjI2LDAtLjM5QTUuNzcsNS43NywwLDAsMSwyOCwyMC4xNmwtMSwxYTQuNTYsNC41NiwwLDAsMC00LjM0LDEuNTgsMywzLDAsMCwwLS42My45M0E0LjUsNC41LDAsMSwwLDMwLjUzLDI2aDIuNjFhLjg2Ljg2LDAsMCwwLC44Ni0uODZWMjMuMzZBOS4zOSw5LjM5LDAs''@;'; put 'put ''MCwwLDI2Ljg3LDE0LjI4Wk0xMiwxNEg4YzAtLjM1LjEtLjcxLjE2LTEuMDdhNi41Miw2LjUyLDAsMCwxLDMuODctNWgwWk0xMC4zNiwyOC4zNmEyLjUsMi41LDAsMSwxLDIuNS0yLjVBMi41LDIuNSwwLDAsMSwxMC4zNiwyOC4zNlpNMTksMTlIMTZWMTdoM1ptLTYtNVY3LjQ3YTguMTYsOC4x''@;'; put 'put ''NiwwLDAsMSw1LjQsMS4xNUExOS4xNSwxOS4xNSwwLDAsMSwyNCwxNFpNMjYuMDYsMjguMzZhMi41LDIuNSwwLDEsMSwyLjUtMi41QTIuNSwyLjUsMCwwLDEsMjYuMDYsMjguMzZaIi8+JyksZS5DbHJTaGFwZU1hcD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLjU5LDYuMTlBMSwxLDAsMCwwLDMyLjcsNkwyMy4wOSw5LDEzLjQ2LDQuMTFhMSwxLDAsMCwwLS44NCwwTDIuNjIsOC4yQTEsMSwwLDAsMCwyLDkuMTNWMjkuNjFhMSwxLDAsMCwwLDEuMzguOTJMMTMsMjYuNThsOS41OSw0LjkyYTEsMSww''@;'; put 'put ''LDAsMCwuNDYuMTEsMSwxLDAsMCwwLC4zLDBsMTAtMy4xMmExLDEsMCwwLDAsLjctMVY3QTEsMSwwLDAsMCwzMy41OSw2LjE5Wk0zMiwyNi43NWwtOC4zMiwyLjZWMjcuMDZoLTEuNnYybC04LjQtNC4zMVYyMy4wNmgtMS42djEuNzJMNCwyOC4xMVY5Ljc5bDguMDgtMy4zM1Y4LjgxaDEuNlY2''@;'; put 'put ''LjQ3bDguNCw0LjN2Mi4xaDEuNlYxMUwzMiw4LjM2WiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIyMi4wOCIgeT0iMTUuMDYiIHdpZHRoPSIxLjYiIGhlaWdodD0iMy44MSIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIyMi4wOCIgeT0iMjEuMDYiIHdpZHRoPSIxLjYiIGhlaWdodD0iMy44MSIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4''@;'; put 'put ''PSIxMi4wOCIgeT0iMTEuMDYiIHdpZHRoPSIxLjYiIGhlaWdodD0iMy44MSIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiB4PSIxMi4wOCIgeT0iMTcuMTMiIHdpZHRoPSIxLjYiIGhlaWdodD0iMy43NSIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMy4zMSw3LjM1LDI1LDkuOTRWMTRIMjNWMTAuMjlMMTQsNS42OFY5SDEyVjUuMjdsLTkuNjcsNEEuNTMuNTMsMCwwLDAsMiw5Ljc1VjMwLjQ1YS41My41MywwLDAsMCwuNzQuNDlM''@;'; put 'put ''MTIsMjcuMTJWMjNoMnY0LjUzbDksNC42MVYyOGgydjMuNzlsOC42My0yLjdhLjUzLjUzLDAsMCwwLC4zNy0uNTFWNy44NkEuNTMuNTMsMCwwLDAsMzMuMzEsNy4zNVpNMTQsMjFIMTJWMTdoMlptMC02SDEyVjExaDJaTTI1LDI2SDIzVjIyaDJabTAtNkgyM1YxNmgyWiIvPicpLGUuQ2xyU2hh''@;'; put 'put ''cGVDb21wYXNzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMC44MiwxNS4zMWgwTDEwLjQ2LDljLS40Ni0uMjYtMS4xMS4zNy0uODYuODRsNi4xNSwxMC41NiwxMC41Niw2LjE1YS42Ni42NiwwLDAsMCwuODQtLjg2Wm0tNCw0LDMtMyw0LjU1LDcuNDRaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTEsMjkuOTVWMjkuNTNIMTd2Mi40MkExNCwxNCwwLDAsMSw0LjA1LDE5SDYuNDdWMTdINC4wNUExNCwxNCwwLDAsMSwxNyw0''@;'; put 'put ''LjA1VjYuNDdoMlY0LjA1QTE0LDE0LDAsMCwxLDMxLjk1LDE3SDI5LjUzdjJoMi40MkExNCwxNCwwLDAsMSwxOSwzMS45NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgs''@;'; put 'put ''MTYsMTYsMCwwLDAsMTgsMlpNNi40NywxOUg0LjA1YzAtLjMzLS4wNS0uNjYtLjA1LTFzMC0uNjcuMDUtMUg2LjQ3Wk0xNyw0LjA1Yy4zMywwLC42Ni0uMDUsMS0uMDVzLjY3LDAsMSwuMDVWNi40N0gxN1ptMiwyNy45Yy0uMzMsMC0uNjYuMDUtMSwuMDVzLS42NywwLTEtLjA1VjI5LjUzaDJa''@;'; put 'put ''bTgtNS41OGEuNTkuNTksMCwwLDEtLjY5LjE2TDE1Ljc1LDIwLjM4LDkuNiw5LjgyYy0uMjUtLjQ3LjM5LTEuMS44Ni0uODRsMTAuMzcsNi4zM2gwbDYuMzMsMTAuMzdBLjU5LjU5LDAsMCwxLDI3LDI2LjM3Wk0yOS41MywxOVYxN2gyLjQyYzAsLjMzLjA1LjY2LjA1LDFzMCwuNjctLjA1LDFa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxNi43NyAxOS4zNSAyNC4zNSAyMy43NyAxOS44IDE2LjMzIDE2Ljc3IDE5LjM1IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicp''@;'; put 'put ''LGUuQ2xyU2hhcGVNYXBNYXJrZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCw2LjcyYTUuNzMsNS43MywwLDEsMCw1LjczLDUuNzNBNS43Myw1LjczLDAsMCwwLDE4LDYuNzJabTAsOS40NmEzLjczLDMu''@;'; put 'put ''NzMsMCwxLDEsMy43My0zLjczQTMuNzMsMy43MywwLDAsMSwxOCwxNi4xN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDJBMTEuNzksMTEuNzksMCwwLDAsNi4yMiwxMy43M2MwLDQuNjcsMi42Miw4''@;'; put 'put ''LjU4LDQuNTQsMTEuNDNsLjM1LjUyYTk5LjYxLDk5LjYxLDAsMCwwLDYuMTQsOGwuNzYuODkuNzYtLjg5YTk5LjgyLDk5LjgyLDAsMCwwLDYuMTQtOGwuMzUtLjUzYzEuOTEtMi44NSw0LjUzLTYuNzUsNC41My0xMS40MkExMS43OSwxMS43OSwwLDAsMCwxOCwyWk0yMy41OSwyNGwtLjM2LjUz''@;'; put 'put ''Yy0xLjcyLDIuNTgtNCw1LjQ3LTUuMjMsNi45LTEuMTgtMS40My0zLjUxLTQuMzItNS4yMy02LjlMMTIuNDIsMjRjLTEuNzctMi42NC00LjItNi4yNS00LjItMTAuMzFhOS43OCw5Ljc4LDAsMSwxLDE5LjU2LDBDMjcuNzgsMTcuNzksMjUuMzYsMjEuNCwyMy41OSwyNFoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xOCw2LjcyYTUuNzMsNS43MywwLDEsMCw1LjczLDUuNzNBNS43Myw1LjczLDAsMCwwLDE4LDYuNzJabTAsOS40NmEzLjczLDMuNzMsMCwxLDEsMy43My0z''@;'; put 'put ''LjczQTMuNzMsMy43MywwLDAsMSwxOCwxNi4xN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0yOS43NywxMy40OWE3LjQ5LDcuNDksMCwwLDEtMi0uMzNjMCwuMTksMCwuMzgs''@;'; put 'put ''MCwuNTcsMCw0LjA2LTIuNDIsNy42Ny00LjE5LDEwLjMxbC0uMzYuNTNjLTEuNzIsMi41OC00LDUuNDctNS4yMyw2LjktMS4xOC0xLjQzLTMuNTEtNC4zMi01LjIzLTYuOUwxMi40MiwyNGMtMS43Ny0yLjY0LTQuMi02LjI1LTQuMi0xMC4zMUE5Ljc3LDkuNzcsMCwwLDEsMjIuNTYsNS4wOWE3''@;'; put 'put ''LjQ1LDcuNDUsMCwwLDEsLjUyLTJBMTEuNzUsMTEuNzUsMCwwLDAsNi4yMiwxMy43M2MwLDQuNjcsMi42Miw4LjU4LDQuNTQsMTEuNDNsLjM1LjUyYTk5LjYxLDk5LjYxLDAsMCwwLDYuMTQsOGwuNzYuODkuNzYtLjg5YTk5LjgyLDk5LjgyLDAsMCwwLDYuMTQtOGwuMzUtLjUzYzEuOTEtMi44''@;'; put 'put ''NSw0LjUzLTYuNzUsNC41My0xMS40MkMyOS43OCwxMy42NSwyOS43NywxMy41NywyOS43NywxMy40OVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMw''@;'; put 'put ''IiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTExLjc5LDExLjc5LDAsMCwwLDYuMjIsMTMuNzNjMCw0LjY3LDIuNjIsOC41OCw0LjU0LDExLjQzbC4zNS41MmE5OS42MSw5OS42MSww''@;'; put 'put ''LDAsMCw2LjE0LDhsLjc2Ljg5Ljc2LS44OWE5OS44Miw5OS44MiwwLDAsMCw2LjE0LThsLjM1LS41M2MxLjkxLTIuODUsNC41My02Ljc1LDQuNTMtMTEuNDJBMTEuNzksMTEuNzksMCwwLDAsMTgsMlptMCwxN2E2LjU2LDYuNTYsMCwxLDEsNi41Ni02LjU2QTYuNTYsNi41NiwwLDAsMSwxOCwx''@;'; put 'put ''OVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGN4PSIxOCIgY3k9IjEyLjQ0IiByPSIzLjczIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0xLS1iYWRnZWQiIGQ9Ik0yOS43NywxMy40OUE3LjQ3LDcuNDcsMCwwLDEsMjQuMzgsMTFhNi41OCw2LjU4LDAsMSwxLTEuNjEtMyw3LjQyLDcuNDIsMCwwLDEsLjMxLTQuODRBMTEuNzUsMTEuNzUsMCwwLDAsNi4yMiwxMy43M2MwLDQuNjcsMi42Miw4LjU4LDQuNTQsMTEuNDNsLjM1LjUy''@;'; put 'put ''YTk5LjYxLDk5LjYxLDAsMCwwLDYuMTQsOGwuNzYuODkuNzYtLjg5YTk5LjgyLDk5LjgyLDAsMCwwLDYuMTQtOGwuMzUtLjUzYzEuOTEtMi44NSw0LjUzLTYuNzUsNC41My0xMS40MkMyOS43OCwxMy42NSwyOS43NywxMy41NywyOS43NywxMy40OVoiLz5cbiAgICAgICAgICAgICAgICA8Y2ly''@;'; put 'put ''Y2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBjeD0iMTgiIGN5PSIxMi40NCIgcj0iMy43MyIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxlLkNsclNoYXBlQmljeWNsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNOC41LDI5LjY1QTYuNTEsNi41MSwwLDAsMSwyLDIzLjE1YTYuMzksNi4zOSwwLDAsMSw2LjUtNi4zNkE2LjM5LDYuMzksMCwwLDEsMTUs''@;'; put 'put ''MjMuMTUsNi41MSw2LjUxLDAsMCwxLDguNSwyOS42NVptMC0xMWE0LjUsNC41LDAsMSwwLDQuNSw0LjVBNC41MSw0LjUxLDAsMCwwLDguNSwxOC42NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yNy41LDI5LjY1YTYuNTEsNi41MSww''@;'; put 'put ''LDAsMS02LjUtNi41LDYuNSw2LjUsMCwwLDEsMTMsMEE2LjUxLDYuNTEsMCwwLDEsMjcuNSwyOS42NVptMC0xMWE0LjUsNC41LDAsMSwwLDQuNSw0LjVBNC41MSw0LjUxLDAsMCwwLDI3LjUsMTguNjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0''@;'; put 'put ''aCBkPSJNMTksMjQuNjZIOGExLDEsMCwwLDEtLjg5LTEuNDVsNS0xMCwxLjc4LjlMOS42MiwyMi43M0gxOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxyZWN0IHg9IjEzIiB5PSIxMi42OCIgd2lkdGg9IjExIiBoZWlnaHQ9IjEuOTEiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0yOCwyNC42NmExLDEsMCwwLDEtLjk0LS42NkwyMi4yOSwxMC42NkgyMGExLDEsMCwwLDEtMS0xLDEsMSwwLDAsMSwxLS45M2gzYS45NC45NCwwLDAsMSwuOTQuNmw1LDE0YTEsMSwwLDAsMS0uNiwxLjI3QTEs''@;'; put 'put ''MSwwLDAsMSwyOCwyNC42NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0xMywxNC42NmExLDEsMCwwLDEtLjcxLS4yOWwtMS43LTEuNzFIOGExLDEsMCwwLDEtMS0xLC45NC45NCwwLDAsMSwxLTFoM2ExLjA4LDEuMDgsMCwwLDEsLjc1''@;'; put 'put ''LjI3bDIsMmExLDEsMCwwLDEsMCwxLjQxQTEsMSwwLDAsMSwxMywxNC42NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik0xNSwyMS45Yy0wLjItMi0xLjItMy44LTIuOS00LjlsLTIuNSw0LjlIMTV6IiBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik03LjIsMjMuNGMtMC4yLTAuMy0wLjItMC43LDAtMWwzLjItNi4zYy0wLjYtMC4yLTEuMi0wLjItMS44LTAuMkM1LDE1LjksMiwxOC44LDIsMjIuNGMwLDMuNiwyLjksNi41LDYuNSw2LjVcblx0YzMsMCw1LjYtMi4xLDYuMy01SDhDNy43''@;'; put 'put ''LDIzLjksNy4zLDIzLjcsNy4yLDIzLjR6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xOSwyMS45aC00YzAsMC4yLDAsMC4zLDAsMC41YzAsMC41LTAuMSwxLTAuMiwxLjVIMTlWMjEuOXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTMiIC8+PHBhdGggZD0iTTI3LjUsMTUuOWMtMC4zLDAtMC42LDAtMC45LDAuMWwyLjQsNi42YzAuMiwwLjUtMC4xLDEuMS0wLjYsMS4zYy0wLjEsMC0wLjIsMC4xLTAuMywwLjFjLTAuNCwwLTAuOC0wLjMtMC45LTAuN2wtMi40LTYuN1xuXHRjLTMuMiwxLjYtNC41LDUuNS0zLDgu''@;'; put 'put ''N2MxLjYsMy4yLDUuNSw0LjUsOC43LDNjMy4yLTEuNiw0LjUtNS41LDMtOC43QzMyLjIsMTcuMywzMCwxNS45LDI3LjUsMTUuOXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+PHBhdGggZD0iTTI0LjcsMTYuN2MwLjYtMC4zLDEuMy0wLjUsMS45LTAuNmwtMi43''@;'; put 'put ''LTcuNEMyMy44LDguMiwyMy40LDgsMjMsNy45aC0zYy0wLjYsMC0xLDAuNS0xLDEuMWMwLDAuNSwwLjQsMC45LDEsMC45XG5cdGMwLDAsMCwwLDAsMGgyLjNsMC43LDJoLTkuNmwtMS43LTEuN0MxMS41LDEwLjEsMTEuMywxMCwxMSwxMEg4Yy0wLjYsMC0xLDAuNC0xLDFzMC40LDEsMSwxaDIu''@;'; put 'put ''NmwxLjIsMS4ybC0xLjUsM1xuXHRjMC42LDAuMiwxLjMsMC41LDEuOCwwLjhsMS42LTMuMmgxMEwyNC43LDE2Ljd6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01IiAvPicpLGUuQ2xyU2hhcGVCb2F0PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOS4xLDI3LjFD''@;'; put 'put ''MjgsMjcsMjYuOSwyNy40LDI2LDI4LjJjLTEuMSwxLjEtMi45LDEuMS00LjEsMGMtMS0wLjctMi4xLTEuMS0zLjMtMS4xYy0xLjItMC4xLTIuNCwwLjMtMy4zLDEuMVxuXHRcdEMxNC43LDI4LjcsMTQsMjksMTMuMiwyOXMtMS41LTAuMy0yLjEtMC44Yy0xLTAuOC0yLjItMS4yLTMuNC0xLjJz''@;'; put 'put ''LTIuNCwwLjQtMy40LDEuMkMzLjcsMjguNywyLjgsMjksMiwyOXYyXG5cdFx0YzEuMywwLjEsMi42LTAuMywzLjYtMS4yQzYuMiwyOS4zLDcuMSwyOSw3LjksMjljMC43LDAsMS41LDAuMywyLjEsMC44YzEuOCwxLjYsNC42LDEuNiw2LjUsMGMwLjYtMC41LDEuMy0wLjgsMi4xLTAuOFxuXHRc''@;'; put 'put ''dGMwLjcsMCwxLjQsMC4zLDIsMC44YzEuOSwxLjYsNC42LDEuNiw2LjUsMGMwLjUtMC41LDEuMy0wLjgsMi0wLjhjMC43LDAsMS40LDAuMywxLjksMC44YzAuOSwwLjcsMS45LDEuMSwzLDEuMnYtMlxuXHRcdGMtMSwwLTEuMi0wLjQtMS43LTAuOEMzMS40LDI3LjUsMzAuMywyNy4xLDI5LjEs''@;'; put 'put ''MjcuMXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik02LDIzYzAtMC42LDAuNS0xLDEuMS0xSDMybC0zLjUsMy4xaDAuMmMwLjgsMCwxLjYsMC4yLDIuMiwwLjVsMi41LTIuMmwwLjItMC4yYzAuNy0wLjgsMC42LTIuMS0wLjItMi44XG5c''@;'; put 'put ''dFx0QzMzLDIwLjIsMzIuNiwyMCwzMi4xLDIwaC0yNWMtMS43LDAtMywxLjMtMywzdjMuMmMwLjUtMC41LDEuMi0wLjgsMS45LTEuMVYyM3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik04LjksMTlIMTV2LTcuOGMwLTAuNi0wLjMtMS4y''@;'; put 'put ''LTAuOC0xLjZDMTMuMyw4LjksMTIsOS4xLDExLjQsMTBsLTQuMSw1LjljLTAuNCwwLjYtMC40LDEuNC0wLjEsMi4xQzcuNSwxOC42LDguMiwxOSw4LjksMTlcblx0XHR6IE0xMy4xLDExLjJMMTMsMTdIOC45TDEzLjEsMTEuMnoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNiwxOGMwLjQtMC42LDAuNC0xLjQsMC0yTDE5LjcsNS42Yy0wLjQtMC42LTEtMS0xLjctMWMtMS4xLDAtMiwwLjktMiwyVjE5aDguM0MyNSwxOSwyNS43LDE4LjYsMjYsMTh6IE0xNy45LDYuNlxuXHRcdGw2LjQsMTAuNWgtNi40VjYuNnoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zNCwzMWMtMS4xLTAuMS0yLjEtMC41LTMtMS4yYy0wLjUtMC41LTEuMi0wLjgtMi0wLjhjLTAuNywwLTEuNSwwLjMtMiwwLjhjLTAuOSwwLjgtMiwxLjEtMy4xLDEuMWMtMS4yLDAtMi40LTAuNC0zLjMtMS4x''@;'; put 'put ''XG5cdGMtMS4yLTEuMS0zLTEuMS00LjEsMGMtMC45LDAuOC0yLjEsMS4yLTMuNCwxLjJjLTEuMiwwLTIuMy0wLjQtMy4yLTEuMmMtMC42LTAuNS0xLjMtMC44LTItMC44Yy0wLjgsMC0xLjcsMC4zLTIuMywwLjhcblx0Yy0xLDAuOC0yLjMsMS4yLTMuNSwxLjFWMjljMC44LDAsMS43LTAuMywy''@;'; put 'put ''LjMtMC45YzEtMC44LDIuMi0xLjIsMy40LTEuMWMxLjIsMCwyLjQsMC40LDMuMywxLjJjMS4yLDEuMSwzLDEuMSw0LjIsMFxuXHRjMS45LTEuNiw0LjctMS42LDYuNSwwYzEuMiwxLjEsMywxLjEsNC4xLDBjMC45LTAuOCwyLjEtMS4yLDMuMy0xLjJjMS4xLDAsMi4yLDAuNCwzLDEuMkMzMi44''@;'; put 'put ''LDI4LjcsMzMsMjksMzQsMjlMMzQsMzF6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik00LjEsMjYuMmMwLjYtMC41LDEuMi0wLjgsMS45LTFWMjNjMC0wLjYsMC40LTEuMSwxLTEuMWgyNUwyOC40LDI1aDAuMmMwLjgsMCwxLjYsMC4yLDIuMiww''@;'; put 'put ''LjVsMi41LTIuMmwwLjItMC4yXG5cdGMwLjctMC45LDAuNS0yLjEtMC40LTIuOEMzMi45LDIwLjEsMzIuNCwyMCwzMiwyMEg3Yy0xLjcsMC0zLDEuMy0zLDNMNC4xLDI2LjJMNC4xLDI2LjJ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNC45''@;'; put 'put ''LDE4LjlIOC45Yy0xLjEsMC0yLTAuOS0yLTJjMC0wLjQsMC4xLTAuOCwwLjQtMS4ybDQuMS01LjhjMC42LTAuOSwxLjktMS4xLDIuOC0wLjVjMC41LDAuNCwwLjgsMSwwLjgsMS42VjE4Ljl6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNC4z''@;'; put 'put ''LDE4LjlIMTZWNi40YzAtMS4xLDAuOS0yLDItMmMwLjcsMCwxLjMsMC40LDEuNywxTDI2LDE1LjhjMC42LDEsMC4yLDIuMi0wLjcsMi43QzI1LDE4LjcsMjQuNiwxOC44LDI0LjMsMTguOVxuXHRMMjQuMywxOC45eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz4n''@;'; put 'put ''KSxlLkNsclNoYXBlQ2FtcGVydmFuPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik05LjUsMjRDOS41LDI0LDkuNSwyNCw5LjUsMjRDNy42LDI0LDYsMjUuNiw2LDI3LjVjMCwwLDAsMCwwLDBDNiwyOS40LDcuNiwzMSw5LjUsMzFjMS45LDAsMy41LTEuNiwzLjUtMy41XG5cdFx0UzExLjQs''@;'; put 'put ''MjQsOS41LDI0eiBNOS41LDI5QzguNywyOSw4LDI4LjMsOCwyNy41UzguNywyNiw5LjUsMjZzMS41LDAuNywxLjUsMS41UzEwLjMsMjksOS41LDI5eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIzLjUsMjRDMjMuNSwyNCwyMy41LDI0''@;'; put 'put ''LDIzLjUsMjRjLTEuOSwwLTMuNSwxLjYtMy41LDMuNWMwLDAsMCwwLDAsMGMwLDEuOSwxLjUsMy41LDMuNSwzLjVjMS45LDAsMy41LTEuNiwzLjUtMy41XG5cdFx0UzI1LjQsMjQsMjMuNSwyNHogTTIzLjUsMjljLTAuOCwwLTEuNS0wLjctMS41LTEuNXMwLjctMS41LDEuNS0xLjVzMS41LDAu''@;'; put 'put ''NywxLjUsMS41UzI0LjMsMjksMjMuNSwyOXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMywyMC4xVjIwaC0wLjFsLTMuNS01LjVDMzEsMTMuNiwzMiwxMiwzMiwxMC4zVjkuN0MzMiw3LjEsMjkuOSw1LDI3LjMsNWgtOC41Yy0xLjks''@;'; put 'put ''MC0zLjcsMS4yLTQuNCwzSDVjLTEuNywwLTMsMS4zLTMsM1xuXHRcdHYxN2gyVjExYzAtMC42LDAuNC0xLDEtMWgxMC45TDE2LDkuMkMxNi4zLDcuOSwxNy40LDcsMTguNyw3aDguNUMyOC44LDcsMzAsOC4yLDMwLDkuN3YwLjVjMCwxLjUtMS4yLDIuNy0yLjcsMi43SDI0djloNy44XG5cdFx0''@;'; put 'put ''bDAuMiwwLjNWMjVjMCwwLjYtMC40LDEtMSwxaC0ydjJoMmMxLjcsMCwzLTEuMywzLTN2LTMuM0wzMywyMC4xeiBNMjYsMjB2LTVoMS41bDMuMSw1SDI2eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHJlY3QgeD0iMTkiIHk9IjkiIHdpZHRoPSI4IiBo''@;'; put 'put ''ZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwb2x5Z29uIHBvaW50cz0iMjAsMjIgMjIsMjIgMjIsMTMgMTUsMTMgMTUsMjggMTcsMjggMTcsMTUgMjAsMTUgXHQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01''@;'; put 'put ''IiAvPjxwYXRoIGQ9Ik02LDIwaDd2LTdINlYyMHogTTgsMTVoM3YzSDhWMTV6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48cGF0aCBkPSJNOS41LDI0QzcuNiwyNCw2LDI1LjYsNiwyNy41UzcuNiwzMSw5LjUsMzFjMCwwLDAsMCwwLDBjMS45LDAsMy41''@;'; put 'put ''LTEuNiwzLjUtMy41YzAsMCwwLTAuMSwwLTAuMUMxMywyNS41LDExLjQsMjQsOS41LDI0eiJcblx0XHQgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48Y2lyY2xlIGN4PSIyMy41IiBjeT0iMjcuNSIgcj0iMy41IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yOS41LDE0LjVDMzEsMTMuNiwzMiwxMiwzMiwxMC4yVjkuN2MwLDAsMCwwLDAtMC4xQzMyLDcsMjkuOSw1LDI3LjMsNWgtOC41Yy0xLjksMC0zLjcsMS4yLTQuNCwzSDVjLTEuNywwLTMsMS4zLTMsM3YxN1xuXHRcdGgyVjExYzAtMC42LDAuNC0xLDEt''@;'; put 'put ''MWgxMC45TDE2LDkuMkMxNi4zLDcuOSwxNy40LDcsMTguNyw3aDguNUMyOC44LDcsMzAsOC4yLDMwLDkuN3YwLjVjMCwxLjUtMS4yLDIuNy0yLjcsMi43SDI3aC0zdjloNy44XG5cdFx0bDAuMiwwLjNWMjVjMCwwLjYtMC40LDEtMSwxaC0ydjJoMmMxLjcsMCwzLTEuMywzLTN2LTMuM0wyOS41''@;'; put 'put ''LDE0LjV6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxyZWN0IHg9IjE5IiB5PSI5IiB3aWR0aD0iNy45IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+PHBvbHlnb24gcG9pbnRzPSIyMCwyMiAyMS45LDIyIDIx''@;'; put 'put ''LjksMTMgMTUsMTMgMTUsMjggMTYuOSwyOCAxNi45LDE1IDIwLDE1IFx0IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01IiAvPjxyZWN0IHg9IjYiIHk9IjEzIiB3aWR0aD0iNi45IiBoZWlnaHQ9IjciIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTYi''@;'; put 'put ''IC8+JyksZS5DbHJTaGFwZUNhcmF2YW49KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEzLjUsMjFDMTEsMjEsOSwyMyw5LDI1LjVzMiw0LjUsNC41LDQuNWMyLjUsMCw0LjUtMiw0LjUtNC41QzE4LDIzLDE2LDIxLDEzLjUsMjF6IE0xMy41LDI4Yy0xLjQsMC0yLjUtMS4xLTIuNS0yLjVc''@;'; put 'put ''blx0XHRzMS4xLTIuNSwyLjUtMi41czIuNSwxLjEsMi41LDIuNVMxNC45LDI4LDEzLjUsMjh6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMsMjRoLTJ2LTcuNWMwLTAuNS0wLjEtMS0wLjQtMS41bC00LjItNy41Yy0wLjUtMS0xLjUt''@;'; put 'put ''MS41LTIuNi0xLjVINUMzLjMsNiwyLDcuMywyLDl2MTRjMCwxLjcsMS4zLDMsMywzaDJ2LTJINVxuXHRcdGMtMC42LDAtMS0wLjQtMS0xVjljMC0wLjYsMC40LTEsMS0xaDE4LjhjMC40LDAsMC43LDAuMiwwLjksMC41bDQuMiw3LjVjMC4xLDAuMSwwLjEsMC4zLDAuMSwwLjVWMjRoLTRWMTJo''@;'; put 'put ''LTd2OGgydi02aDN2MTBoLTN2MmgxM1xuXHRcdGMwLjYsMCwxLTAuNCwxLTFTMzMuNiwyNCwzMywyNHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNiwxMkg3djZoOVYxMnogTTE0LDE2SDl2LTJoNVYxNnoiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0xMy41LDMwQzExLDMwLDksMjgsOSwyNS41czItNC41LDQuNS00LjVzNC41LDIsNC41LDQuNUMxOCwyOCwxNiwzMCwxMy41LDMweiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBk''@;'; put 'put ''PSJNMzMsMjRoLTJ2LTcuNWMwLTAuNS0wLjEtMS0wLjQtMS41bC00LjItNy41Yy0wLjUtMS0xLjUtMS41LTIuNi0xLjVINUMzLjMsNiwyLDcuMywyLDl2MTRjMCwxLjcsMS4zLDMsMywzaDJ2LTJINVxuXHRjLTAuNiwwLTEtMC40LTEtMVY5YzAtMC42LDAuNC0xLDEtMWgxOC44YzAuNCwwLDAu''@;'; put 'put ''NywwLjIsMC45LDAuNWw0LjIsNy41YzAuMSwwLjEsMC4xLDAuMywwLjEsMC41VjI0aC00VjEyaC03djhoMnYtNmgzdjEwaC0zdjJoMTNcblx0YzAuNiwwLDEtMC40LDEtMVMzMy42LDI0LDMzLDI0eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJN''@;'; put 'put ''MTYsMThIN3YtNmg5VjE4eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxlLkNsclNoYXBlRmVycnk9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LDI1LjFjLTEuMiwwLTIuMywwLjQtMy4zLDEuMWMwLDAsMCwwLDAsMGMtMS4xLDEuMS0zLDEuMS00''@;'; put 'put ''LjEsMGMtMC45LTAuOC0yLjEtMS4yLTMuMy0xLjJjLTEuMiwwLTIuMywwLjQtMy4yLDEuMlxuXHRcdGMtMS4yLDEuMS0zLDEuMS00LjIsMEMxMCwyNS40LDguOCwyNSw3LjYsMjVjLTEuMiwwLTIuNCwwLjQtMy40LDEuMUMzLjYsMjYuNywyLjgsMjcsMiwyN3YyYzEuMywwLjEsMi41LTAuNCwz''@;'; put 'put ''LjQtMS4yXG5cdFx0QzYuMSwyNy4zLDYuOSwyNyw3LjcsMjdjMC44LDAsMS41LDAuMywyLjEsMC44YzEuOSwxLjYsNC43LDEuNiw2LjUsMGMwLjYtMC41LDEuMy0wLjgsMi4xLTAuOGMwLjgsMCwxLjUsMC4zLDIuMSwwLjhcblx0XHRjMS45LDEuNiw0LjYsMS42LDYuNSwwYzAuNS0wLjUsMS4z''@;'; put 'put ''LTAuOCwyLTAuOGMwLjcsMCwxLjUsMC4zLDIsMC44YzAuOSwwLjcsMiwxLjEsMy4xLDEuMnYtMS45Yy0wLjcsMC0xLjQtMC4zLTEuOS0wLjlcblx0XHRDMzEuMywyNS40LDMwLjEsMjUsMjksMjUuMXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik01LjksMjMuMlYyMEgzMmwtMy41LDNoMC4yYzAuOCwwLDEuNiwwLjIsMi4yLDAuNWwyLjUtMi4ybDAuMi0wLjJjMC41LTAuNiwwLjUtMS40LDAuMi0yLjFjLTAuNC0wLjctMS0xLTEuOC0xaC00LjRcblx0XHRMMjIuNSwxMUgxN2MtMS43LDAtMywxLjMtMywzaC0yVjguMUg2djYuMWMt''@;'; put 'put ''MS4yLDAuNC0yLDEuNS0yLDIuOHYxLjFWMjB2NC4zbDAuMS0wLjFDNC42LDIzLjcsNS4yLDIzLjQsNS45LDIzLjJ6IE04LDEwaDJ2NEg4VjEwelxuXHRcdCBNNiwxN2MwLTAuNiwwLjQtMSwxLTFoOXYtMmMwLTAuNiwwLjQtMSwxLTFoNWwwLjYsMUgxOHYyaDUuOGwxLjIsMi4xSDZWMTd6IiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjguMiwyNWMtMS4yLDAtMi40LDAuNC0zLjMsMS4yYy0xLjIsMS4xLTMsMS4xLTQuMSwwYy0xLjktMS42LTQuNi0xLjYtNi41LDBjLTEuMiwxLjEtMi45LDEuMS00LjEsMFxuXHRcdGMtMC45LTAu''@;'; put 'put ''OC0yLTEuMi0zLjItMS4yYy0xLjIsMC0yLjMsMC40LTMuMiwxLjJDMy40LDI2LjcsMi43LDI3LDIsMjd2MmMxLjEtMC4xLDIuMi0wLjUsMy4xLTEuMkM1LjYsMjcuMyw2LjMsMjcsNywyN1xuXHRcdGMwLjcsMCwxLjUsMC4zLDIsMC44YzEuOSwxLjYsNC43LDEuNiw2LjYsMGMwLjYtMC41LDEu''@;'; put 'put ''My0wLjgsMi4xLTAuOGMwLjgsMCwxLjUsMC4zLDIuMSwwLjhjMS45LDEuNiw0LjcsMS42LDYuNSwwXG5cdFx0YzAuNi0wLjUsMS4zLTAuOCwyLjEtMC44YzAuOCwwLDEuNiwwLjMsMi4xLDAuOGMwLjksMC44LDIuMiwxLjMsMy40LDEuMnYtMmMtMC44LDAtMS42LTAuMy0yLjItMC44QzMwLjcs''@;'; put 'put ''MjUuNCwyOS41LDI1LDI4LjIsMjV6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik01LjgsMjMuMnYtMy4zaDI2LjFMMjguNCwyM2gwLjJjMC44LDAsMS42LDAuMiwyLjIsMC41bDIuNS0yLjJsMC4xLTAuMmMwLjctMC45LDAuNS0yLjEtMC40LTIu''@;'; put 'put ''OGMtMC4zLTAuMy0wLjgtMC40LTEuMi0wLjRcblx0XHRoLTQuMWwtNS40LTdoLTUuNWMtMS43LDAtMywxLjMtMywzaC0yVjhINnY2LjJjLTEuMiwwLjQtMi4xLDEuNS0yLjEsMi44bDAsNy4ybDAuMSwwQzQuNSwyMy43LDUuMSwyMy40LDUuOCwyMy4yeiBNMTcuOSwxNGg0LjJcblx0XHRsMS40''@;'; put 'put ''LDJoLTUuN1YxNHogTTcuOSwxMGgydjRoLTJWMTB6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVUcmFpbGVyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNSwxOS4yYy0zLjIsMC01LjgsMi42LTUuOCw1LjhzMi42LDUuOCw1Ljgs''@;'; put 'put ''NS44czUuOC0yLjYsNS44LTUuOFMxOC4yLDE5LjIsMTUsMTkuMnogTTE1LDI5LjJjLTIuMywwLTQuMi0xLjktNC4yLTQuMlxuXHRcdHMxLjktNC4yLDQuMi00LjJzNC4yLDEuOSw0LjIsNC4yUzE3LjMsMjkuMiwxNSwyOS4yeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEiIC8+PHJlY3QgeD0iMTQiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzMsOUgydjEzLjFjMCwwLDAsMCwwLDBDMiwyNC4zLDMuNywyNiw1LjksMjZIN3YtMkg1LjljLTEsMC0x''@;'; put 'put ''LjgtMC44LTEuOS0xLjlWMTVoMjJ2Ny4xYzAsMS0wLjgsMS44LTEuOSwxLjlIMjN2MmgxLjFcblx0XHRjMCwwLDAsMCwwLDBjMi4xLDAsMy44LTEuNywzLjgtMy45VjExaDVjMC42LDAsMS0wLjQsMS0xUzMzLjYsOSwzMyw5eiBNMjYsMTNINHYtMmgyMlYxM3oiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMyw5SDJ2MTMuMWMwLDAsMCwwLDAsMEMyLDI0LjMsMy43LDI2LDUuOSwyNkg3di0ySDUuOWMtMSwwLTEuOC0wLjgtMS45LTEuOVYxNWgyMnY3LjFjMCwxLTAuOCwxLjgtMS45LDEuOUgyM3YyaDEuMVxuXHRjMCwwLDAsMCww''@;'; put 'put ''LDBjMi4xLDAsMy44LTEuNywzLjgtMy45VjExaDVjMC42LDAsMS0wLjQsMS0xUzMzLjYsOSwzMyw5eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTUsMTkuMmMtMy4yLDAtNS44LDIuNi01LjgsNS44czIuNiw1LjgsNS44LDUuOHM1LjgtMi42''@;'; put 'put ''LDUuOC01LjhsMCwwQzIwLjgsMjEuOCwxOC4yLDE5LjIsMTUsMTkuMnogTTE2LDI2aC0ydi0yaDJWMjZ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGUuQ2xyU2hhcGVPbkhvbGlkYXk9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LjA4LDIuMzRj''@;'; put 'put ''LTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgsMTQsMTYsMTRBMTcuOTEsMTcuOTEsMCwwLDAsMjMsMjkuNjZsNS41MywzLjUyYTEsMSwwLDAsMCwxLjM4LS4zLDEsMSwwLDAsMCwuMTYtLjU0VjI1LjYxYTEzLDEzLDAsMCwwLDQtOS4yN0MzNC4wOCw4LjYyLDI2LjksMi4zNCwxOC4wOCwyLjM0''@;'; put 'put ''Wk0yOC4zNywyNC40NWExLDEsMCwwLDAtLjMyLjczdjUuMzRsLTQuMzgtMi43OWExLDEsMCwwLDAtLjgzLS4xMSwxNiwxNiwwLDAsMS00Ljc2LjcyYy03LjcyLDAtMTQtNS4zOC0xNC0xMnM2LjI4LTEyLDE0LTEyLDE0LDUuMzgsMTQsMTJBMTEuMSwxMS4xLDAsMCwxLDI4LjM3LDI0LjQ1WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTMxLjEsMTUuODIsMzEsMTUuNjcsMjguNSwxMy40NGEzLjI1LDMuMjUsMCwwLDAtMi4zOS0uODRsLTUuMzguMzQtMy41OS0zYS44MS44MSwwLDAsMC0uNTItLjE5SDEzLjU2YS43OC43OCww''@;'; put 'put ''LDAsMC0uNjkuNC43Ny43NywwLDAsMCwwLC43OWwxLjM2LDIuNDQtNC43MS4yOSwxLjMxLDEuNTIsMTUuMzktMWExLjY1LDEuNjUsMCwwLDEsMS4yMi40M2wyLjM2LDIuMTNhLjExLjExLDAsMCwxLDAsLjA3YzAsLjA2LS4wOS4wNS0uMS4wNkgyMS44MmwtLjM1LjM3LTUuMTksNS41M0gxNC42''@;'; put 'put ''NGwyLjczLTUuOUg4LjU0TDcuMTMsMTQuMTYsNi41MSwxM2EuOC44LDAsMCwwLTEtLjJBLjgxLjgxLDAsMCwwLDUuMiwxMy45bDIsMy45NGExLjIxLDEuMjEsMCwwLDAsMS4wOC42NWg2LjU3bC0xLjk0LDQuMThBMS4yLDEuMiwwLDAsMCwxMywyMy44M2ExLjIyLDEuMjIsMCwwLDAsMSwuNTZo''@;'; put 'put ''Mi40M2ExLjE3LDEuMTcsMCwwLDAsLjg4LS4zOWw1LjE4LTUuNTFoNy4xNmExLjY1LDEuNjUsMCwwLDAsMS41Mi0uOTFBMS43NCwxLjc0LDAsMCwwLDMxLjEsMTUuODJaTTE0LjkyLDExLjMxaDEuNDFsMi4wOSwxLjc3TDE2LDEzLjIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTIiLz5cbiAgXG4gIDxwYXRoIGQ9Ik0xOCwyLjVjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgsMTQsMTYsMTRhMTcuOTEsMTcuOTEsMCwwLDAsNC44OC0uNjhsNS41MywzLjUyYTEsMSwwLDAsMCwxLjM4LS4zQTEsMSwwLDAsMCwzMCwzMi41VjI1Ljc3YTEzLDEzLDAsMCww''@;'; put 'put ''LDQtOS4yN0MzNCw4Ljc4LDI2LjgyLDIuNSwxOCwyLjVaTTI5Ljg0LDE4SDIxLjUxYS40Mi40MiwwLDAsMC0uMy4xM2wtNS4zLDUuNjRhLjM5LjM5LDAsMCwxLS4yOS4xM0gxMy4xOWEuNDEuNDEsMCwwLDEtLjM3LS41OGwyLjQ3LTUuMzJINy40NmEuNDIuNDIsMCwwLDEtLjM2LS4yMmwtMi43''@;'; put 'put ''LTVINi4yNGEuNTMuNTMsMCwwLDEsLjM5LjE4bDEuNTYsMS42OWEuMzguMzgsMCwwLDAsLjMzLjE0bDYuMTgtLjM4LTItMy41NWgyLjg5YS40Ny40NywwLDAsMSwuMzEuMTFMMTkuNjMsMTRsNi42OS0uMzVhMi40NCwyLjQ0LDAsMCwxLDEuODEuNjNsMi40NywyLjIzQS45Mi45MiwwLDAsMSwy''@;'; put 'put ''OS44NCwxOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgJyksZS5UcmF2ZWxTaGFwZXM9e3RydWNrOmUuQ2xyU2hhcGVUcnVjayxhaXJwbGFuZTplLkNsclNoYXBlQWlycGxhbmUsY2FyOmUuQ2xyU2hhcGVDYXIsbWFwOmUuQ2xyU2hhcGVNYXAsY29tcGFz''@;'; put 'put ''czplLkNsclNoYXBlQ29tcGFzcywibWFwLW1hcmtlciI6ZS5DbHJTaGFwZU1hcE1hcmtlcixiaWN5Y2xlOmUuQ2xyU2hhcGVCaWN5Y2xlLGJvYXQ6ZS5DbHJTaGFwZUJvYXQsY2FtcGVydmFuOmUuQ2xyU2hhcGVDYW1wZXJ2YW4sY2FyYXZhbjplLkNsclNoYXBlQ2FyYXZhbixmZXJyeTplLkNs''@;'; put 'put ''clNoYXBlRmVycnksdHJhaWxlcjplLkNsclNoYXBlVHJhaWxlciwib24taG9saWRheSI6ZS5DbHJTaGFwZU9uSG9saWRheX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUuVHJhdmVsU2hhcGVzLCJwbGFuZSIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLlRyYXZlbFNoYXBlcy5haXJwbGFuZSkp''@;'; put 'put ''LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLlRyYXZlbFNoYXBlcywiYXV0byIsKDAsci5kZXNjcmlwdG9yQ29uZmlnKShlLlRyYXZlbFNoYXBlcy5jYXIpKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNs''@;'; put 'put ''YXJpdHlJY29ucy5hZGQoZS5UcmF2ZWxTaGFwZXMpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiOmZ1bmN0aW9uKEEsZSxsKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVz''@;'; put 'put ''Y3JpcHRvckNvbmZpZz12b2lkIDAsZS5kZXNjcmlwdG9yQ29uZmlnPWZ1bmN0aW9uKHIpe3JldHVybntlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx2YWx1ZTpyfX19LCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zaGFwZS10ZW1wbGF0ZS1vYnNlcnZlci50''@;'; put 'put ''cyI6ZnVuY3Rpb24oQSxlLGwpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5TaGFwZVRlbXBsYXRlT2JzZXJ2ZXI9ZS5jaGFuZ2VIYW5kbGVyQ2FsbGJhY2tzPXZvaWQgMCxlLmNoYW5nZUhhbmRsZXJDYWxsYmFja3M9e307''@;'; put 'put ''dmFyIHI9KE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJpbnN0YW5jZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBhLnNpbmdsZUluc3RhbmNlPWEuc2luZ2xlSW5zdGFuY2U/YS5zaW5nbGVJbnN0YW5jZTpuZXcgYX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxhLnByb3RvdHlw''@;'; put 'put ''ZS5zdWJzY3JpYmVUbz1mdW5jdGlvbihjLG8pe3ZhciBoPXRoaXM7cmV0dXJuIHRoaXMuY2FsbGJhY2tzW2NdPy0xPT09dGhpcy5jYWxsYmFja3NbY10uaW5kZXhPZihvKSYmdGhpcy5jYWxsYmFja3NbY10ucHVzaChvKTp0aGlzLmNhbGxiYWNrc1tjXT1bb10sZnVuY3Rpb24oKXt2YXIgZj1o''@;'; put 'put ''LmNhbGxiYWNrc1tjXS5pbmRleE9mKG8pO2guY2FsbGJhY2tzW2NdLnNwbGljZShmLDEpLDA9PT1oLmNhbGxiYWNrc1tjXS5sZW5ndGgmJmRlbGV0ZSBoLmNhbGxiYWNrc1tjXX19LGEucHJvdG90eXBlLmVtaXRDaGFuZ2VzPWZ1bmN0aW9uKGMsbyl7dGhpcy5jYWxsYmFja3NbY10mJnRoaXMu''@;'; put 'put ''Y2FsbGJhY2tzW2NdLm1hcChmdW5jdGlvbihoKXtoKG8pfSl9LGEpO2Z1bmN0aW9uIGEoKXt0aGlzLmNhbGxiYWNrcz1lLmNoYW5nZUhhbmRsZXJDYWxsYmFja3N9ZS5TaGFwZVRlbXBsYXRlT2JzZXJ2ZXI9cn0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9y''@;'; put 'put ''LnRzIjpmdW5jdGlvbihBLGUsbCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmNsckljb25TVkc9dm9pZCAwLGUuY2xySWNvblNWRz1mdW5jdGlvbihyKXt2YXIgYT0iIjtyZXR1cm4tMTxyLmluZGV4T2YoIi0tYmFkZ2Vk''@;'; put 'put ''IikmJihhKz0iY2FuLWJhZGdlICIpLC0xPHIuaW5kZXhPZigiLS1hbGVydGVkIikmJihhKz0iY2FuLWFsZXJ0ICIpLC0xPHIuaW5kZXhPZigiY2xyLWktc29saWQiKSYmKGErPSJoYXMtc29saWQgIiksKGE/JzxzdmcgdmVyc2lvbj0iMS4xIiBjbGFzcz0iJythKyciIHZpZXdCb3g9IjAgMCAz''@;'; put 'put ''NiAzNiIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCJcbiAgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmb2N1c2FibGU9ImZhbHNlIiByb2xlPSJpbWciPic6JzxzdmcgdmVy''@;'; put 'put ''c2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMzYgMzYiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiXG4gICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgZm9jdXNhYmxlPSJmYWxz''@;'; put 'put ''ZSIgcm9sZT0iaW1nIj4nKStyKyI8L3N2Zz4ifX19LGs9e30sWC5tPUYxLFguYz1rLFguZD1mdW5jdGlvbihBLGUsbCl7WC5vKEEsZSl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLGUse2VudW1lcmFibGU6ITAsZ2V0Omx9KX0sWC5yPWZ1bmN0aW9uKEEpeyJ1bmRlZmluZWQiIT10eXBlb2Yg''@;'; put 'put ''U3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LFgudD1mdW5jdGlvbihBLGUpe2lmKDEmZSYm''@;'; put 'put ''KEE9WChBKSksOCZlfHw0JmUmJiJvYmplY3QiPT10eXBlb2YgQSYmQSYmQS5fX2VzTW9kdWxlKXJldHVybiBBO3ZhciBsPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoWC5yKGwpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJkZWZhdWx0Iix7ZW51bWVyYWJsZTohMCx2YWx1ZTpBfSksMiZlJiYi''@;'; put 'put ''c3RyaW5nIiE9dHlwZW9mIEEpZm9yKHZhciByIGluIEEpWC5kKGwscixmdW5jdGlvbihhKXtyZXR1cm4gQVthXX0uYmluZChudWxsLHIpKTtyZXR1cm4gbH0sWC5uPWZ1bmN0aW9uKEEpe3ZhciBlPUEmJkEuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBBLmRlZmF1bHR9OmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIEF9O3JldHVybiBYLmQoZSwiYSIsZSksZX0sWC5vPWZ1bmN0aW9uKEEsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChBLGUpfSxYLnA9IiIsWChYLnM9Ii4vcHJvamVjdHMvaWNvbnMvc3JjL2Nsci1pY29ucy1zZngudHMiKTtmdW5jdGlv''@;'; put 'put ''biBYKEEpe2lmKGtbQV0pcmV0dXJuIGtbQV0uZXhwb3J0czt2YXIgZT1rW0FdPXtpOkEsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gRjFbQV0uY2FsbChlLmV4cG9ydHMsZSxlLmV4cG9ydHMsWCksZS5sPSEwLGUuZXhwb3J0c312YXIgRjEsa30pOw=='';'; put 'run;'; put '%sasjsout(JS64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=styles.55907fc751e07558-css; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''ZGl2LmNvZGUtdG9vbGJhcntwb3NpdGlvbjpyZWxhdGl2ZX1kaXYuY29kZS10b29sYmFyPi50b29sYmFye3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTA7dG9wOi4zZW07cmlnaHQ6LjJlbTt0cmFuc2l0aW9uOm9wYWNpdHkgLjNzIGVhc2UtaW4tb3V0O29wYWNpdHk6MH1kaXYuY29kZS10''@;'; put 'put ''b29sYmFyOmhvdmVyPi50b29sYmFye29wYWNpdHk6MX1kaXYuY29kZS10b29sYmFyOmZvY3VzLXdpdGhpbj4udG9vbGJhcntvcGFjaXR5OjF9ZGl2LmNvZGUtdG9vbGJhcj4udG9vbGJhcj4udG9vbGJhci1pdGVte2Rpc3BsYXk6aW5saW5lLWJsb2NrfWRpdi5jb2RlLXRvb2xiYXI+LnRvb2xi''@;'; put 'put ''YXI+LnRvb2xiYXItaXRlbT5he2N1cnNvcjpwb2ludGVyfWRpdi5jb2RlLXRvb2xiYXI+LnRvb2xiYXI+LnRvb2xiYXItaXRlbT5idXR0b257YmFja2dyb3VuZDpub25lO2JvcmRlcjowO2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O2xpbmUtaGVpZ2h0Om5vcm1hbDtvdmVyZmxvdzp2aXNp''@;'; put 'put ''YmxlO3BhZGRpbmc6MDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lfWRpdi5jb2RlLXRvb2xiYXI+LnRvb2xiYXI+LnRvb2xiYXItaXRlbT5hLGRpdi5jb2RlLXRvb2xiYXI+LnRvb2xiYXI+LnRvb2xiYXItaXRlbT5i''@;'; put 'put ''dXR0b24sZGl2LmNvZGUtdG9vbGJhcj4udG9vbGJhcj4udG9vbGJhci1pdGVtPnNwYW57Y29sb3I6I2JiYjtmb250LXNpemU6LjhlbTtwYWRkaW5nOjAgLjVlbTtiYWNrZ3JvdW5kOiNmNWYyZjA7YmFja2dyb3VuZDpyZ2JhKDIyNCwyMjQsMjI0LC4yKTtib3gtc2hhZG93OjAgMnB4ICMwMDAz''@;'; put 'put ''O2JvcmRlci1yYWRpdXM6LjVlbX1kaXYuY29kZS10b29sYmFyPi50b29sYmFyPi50b29sYmFyLWl0ZW0+YTpob3ZlcixkaXYuY29kZS10b29sYmFyPi50b29sYmFyPi50b29sYmFyLWl0ZW0+YTpmb2N1cyxkaXYuY29kZS10b29sYmFyPi50b29sYmFyPi50b29sYmFyLWl0ZW0+YnV0dG9uOmhv''@;'; put 'put ''dmVyLGRpdi5jb2RlLXRvb2xiYXI+LnRvb2xiYXI+LnRvb2xiYXItaXRlbT5idXR0b246Zm9jdXMsZGl2LmNvZGUtdG9vbGJhcj4udG9vbGJhcj4udG9vbGJhci1pdGVtPnNwYW46aG92ZXIsZGl2LmNvZGUtdG9vbGJhcj4udG9vbGJhcj4udG9vbGJhci1pdGVtPnNwYW46Zm9jdXN7Y29sb3I6''@;'; put 'put ''aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZX0vKiEKICogQ29weXJpZ2h0IChjKSBIQU5EU09OQ09ERSBzcC4geiBvLiBvLgogKiAKICogSEFORFNPTlRBQkxFIGlzIGEgc29mdHdhcmUgZGlzdHJpYnV0ZWQgYnkgSEFORFNPTkNPREUgc3AuIHogby4gby4sIGEgUG9saXNoIGNvcnBvcmF0''@;'; put 'put ''aW9uIGJhc2VkIGluCiAqIEdkeW5pYSwgUG9sYW5kLCBhdCBBbGVqYSBad3ljaWXMqHN0d2EgOTYtOTgsIHJlZ2lzdGVyZWQgYnkgdGhlIERpc3RyaWN0IENvdXJ0IGluIEdkYW5zayB1bmRlciBudW1iZXIKICogNTM4NjUxLCBFVSB0YXggSUQgbnVtYmVyOiBQTDU4NjIyOTQwMDIsIHNoYXJl''@;'; put 'put ''IGNhcGl0YWw6IFBMTiA2Miw4MDAuMDAuCiAqIAogKiBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBhcHBsaWNhYmxlIGNvcHlyaWdodCBsYXdzLCBpbmNsdWRpbmcgaW50ZXJuYXRpb25hbCB0cmVhdGllcywgYW5kIGR1YWwtCiAqIGxpY2Vuc2VkIOKAkyBkZXBlbmRpbmcgb24gd2hl''@;'; put 'put ''dGhlciB5b3VyIHVzZSBmb3IgY29tbWVyY2lhbCBwdXJwb3NlcywgbWVhbmluZyBpbnRlbmRlZCBmb3Igb3IKICogcmVzdWx0aW5nIGluIGNvbW1lcmNpYWwgYWR2YW50YWdlIG9yIG1vbmV0YXJ5IGNvbXBlbnNhdGlvbiwgb3Igbm90LgogKiAKICogSWYgeW91ciB1c2UgaXMgc3RyaWN0bHkg''@;'; put 'put ''cGVyc29uYWwgb3Igc29sZWx5IGZvciBldmFsdWF0aW9uIHB1cnBvc2VzLCBtZWFuaW5nIGZvciB0aGUgcHVycG9zZXMgb2YgdGVzdGluZwogKiB0aGUgc3VpdGFiaWxpdHksIHBlcmZvcm1hbmNlLCBhbmQgdXNlZnVsbmVzcyBvZiB0aGlzIHNvZnR3YXJlIG91dHNpZGUgdGhlIHByb2R1Y3Rp''@;'; put 'put ''b24gZW52aXJvbm1lbnQsCiAqIHlvdSBhZ3JlZSB0byBiZSBib3VuZCBieSB0aGUgdGVybXMgaW5jbHVkZWQgaW4gdGhlICJoYW5kc29udGFibGUtbm9uLWNvbW1lcmNpYWwtbGljZW5zZS5wZGYiIGZpbGUuCiAqIAogKiBZb3VyIHVzZSBvZiB0aGlzIHNvZnR3YXJlIGZvciBjb21tZXJjaWFs''@;'; put 'put ''IHB1cnBvc2VzIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGluY2x1ZGVkIGluIGFuIGFwcGxpY2FibGUKICogbGljZW5zZSBhZ3JlZW1lbnQuCiAqIAogKiBJbiBhbnkgY2FzZSwgeW91IG11c3Qgbm90IG1ha2UgYW55IHN1Y2ggdXNlIG9mIHRoaXMgc29mdHdhcmUgYXMgdG8gZGV2ZWxvcCBz''@;'; put 'put ''b2Z0d2FyZSB3aGljaCBtYXkgYmUKICogY29uc2lkZXJlZCBjb21wZXRpdGl2ZSB3aXRoIHRoaXMgc29mdHdhcmUuCiAqIAogKiBVTkxFU1MgRVhQUkVTU0xZIEFHUkVFRCBPVEhFUldJU0UsIEhBTkRTT05DT0RFIFBST1ZJREVTIFRISVMgU09GVFdBUkUgT04gQU4gIkFTIElTIgogKiBCQVNJ''@;'; put 'put ''UywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIEFORCBJTiBOTyBFVkVOVCBBTkQgVU5ERVIgTk8KICogTEVHQUwgVEhFT1JZLCBTSEFMTCBIQU5EU09OQ09ERSBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLCBJTkNMVURJTkcgQU5ZIERJUkVDVCwK''@;'; put 'put ''ICogSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPRiBBTlkgQ0hBUkFDVEVSIEFSSVNJTkcgRlJPTQogKiBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSElTIFNPRlRXQVJFLgogKiAKICogVmVyc2lvbjogMTIuMS4yCiAqIFJlbGVhc2Ug''@;'; put 'put ''ZGF0ZTogMDgvMDcvMjAyMiAoYnVpbHQgYXQgMDgvMDcvMjAyMiAwOToyNTo0MCkKICovLmhhbmRzb250YWJsZSAudGFibGUgdGgsLmhhbmRzb250YWJsZSAudGFibGUgdGR7Ym9yZGVyLXRvcDpub25lfS5oYW5kc29udGFibGUgdHJ7YmFja2dyb3VuZDojZmZmfS5oYW5kc29udGFibGUgdGR7''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvcjppbmhlcml0fS5oYW5kc29udGFibGUgLnRhYmxlIGNhcHRpb24rdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGgsLmhhbmRzb250YWJsZSAudGFibGUgY2FwdGlvbit0aGVhZCB0cjpmaXJzdC1jaGlsZCB0ZCwuaGFuZHNvbnRhYmxlIC50YWJsZSBjb2xncm91cCt0aGVh''@;'; put 'put ''ZCB0cjpmaXJzdC1jaGlsZCB0aCwuaGFuZHNvbnRhYmxlIC50YWJsZSBjb2xncm91cCt0aGVhZCB0cjpmaXJzdC1jaGlsZCB0ZCwuaGFuZHNvbnRhYmxlIC50YWJsZSB0aGVhZDpmaXJzdC1jaGlsZCB0cjpmaXJzdC1jaGlsZCB0aCwuaGFuZHNvbnRhYmxlIC50YWJsZSB0aGVhZDpmaXJzdC1j''@;'; put 'put ''aGlsZCB0cjpmaXJzdC1jaGlsZCB0ZHtib3JkZXItdG9wOjFweCBzb2xpZCAjQ0NDQ0NDfS5oYW5kc29udGFibGUgLnRhYmxlLWJvcmRlcmVke2JvcmRlcjowO2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZX0uaGFuZHNvbnRhYmxlIC50YWJsZS1ib3JkZXJlZCB0aCwuaGFuZHNvbnRhYmxlIC50''@;'; put 'put ''YWJsZS1ib3JkZXJlZCB0ZHtib3JkZXItbGVmdDpub25lfS5oYW5kc29udGFibGUgLnRhYmxlLWJvcmRlcmVkIHRoOmZpcnN0LWNoaWxkLC5oYW5kc29udGFibGUgLnRhYmxlLWJvcmRlcmVkIHRkOmZpcnN0LWNoaWxke2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjQ0NDQ0NDfS5oYW5kc29udGFi''@;'; put 'put ''bGUgLnRhYmxlPnRib2R5PnRyPnRkLC5oYW5kc29udGFibGUgLnRhYmxlPnRib2R5PnRyPnRoLC5oYW5kc29udGFibGUgLnRhYmxlPnRmb290PnRyPnRkLC5oYW5kc29udGFibGUgLnRhYmxlPnRmb290PnRyPnRoLC5oYW5kc29udGFibGUgLnRhYmxlPnRoZWFkPnRyPnRkLC5oYW5kc29udGFi''@;'; put 'put ''bGUgLnRhYmxlPnRoZWFkPnRyPnRoe2xpbmUtaGVpZ2h0OjIxcHg7cGFkZGluZzowfS5jb2wtbGctMS5oYW5kc29udGFibGUsLmNvbC1sZy0xMC5oYW5kc29udGFibGUsLmNvbC1sZy0xMS5oYW5kc29udGFibGUsLmNvbC1sZy0xMi5oYW5kc29udGFibGUsLmNvbC1sZy0yLmhhbmRzb250YWJs''@;'; put 'put ''ZSwuY29sLWxnLTMuaGFuZHNvbnRhYmxlLC5jb2wtbGctNC5oYW5kc29udGFibGUsLmNvbC1sZy01LmhhbmRzb250YWJsZSwuY29sLWxnLTYuaGFuZHNvbnRhYmxlLC5jb2wtbGctNy5oYW5kc29udGFibGUsLmNvbC1sZy04LmhhbmRzb250YWJsZSwuY29sLWxnLTkuaGFuZHNvbnRhYmxlLC5j''@;'; put 'put ''b2wtbWQtMS5oYW5kc29udGFibGUsLmNvbC1tZC0xMC5oYW5kc29udGFibGUsLmNvbC1tZC0xMS5oYW5kc29udGFibGUsLmNvbC1tZC0xMi5oYW5kc29udGFibGUsLmNvbC1tZC0yLmhhbmRzb250YWJsZSwuY29sLW1kLTMuaGFuZHNvbnRhYmxlLC5jb2wtbWQtNC5oYW5kc29udGFibGUsLmNv''@;'; put 'put ''bC1tZC01LmhhbmRzb250YWJsZSwuY29sLW1kLTYuaGFuZHNvbnRhYmxlLC5jb2wtbWQtNy5oYW5kc29udGFibGUsLmNvbC1tZC04LmhhbmRzb250YWJsZSwuY29sLW1kLTkuaGFuZHNvbnRhYmxlIC5jb2wtc20tMS5oYW5kc29udGFibGUsLmNvbC1zbS0xMC5oYW5kc29udGFibGUsLmNvbC1z''@;'; put 'put ''bS0xMS5oYW5kc29udGFibGUsLmNvbC1zbS0xMi5oYW5kc29udGFibGUsLmNvbC1zbS0yLmhhbmRzb250YWJsZSwuY29sLXNtLTMuaGFuZHNvbnRhYmxlLC5jb2wtc20tNC5oYW5kc29udGFibGUsLmNvbC1zbS01LmhhbmRzb250YWJsZSwuY29sLXNtLTYuaGFuZHNvbnRhYmxlLC5jb2wtc20t''@;'; put 'put ''Ny5oYW5kc29udGFibGUsLmNvbC1zbS04LmhhbmRzb250YWJsZSwuY29sLXNtLTkuaGFuZHNvbnRhYmxlIC5jb2wteHMtMS5oYW5kc29udGFibGUsLmNvbC14cy0xMC5oYW5kc29udGFibGUsLmNvbC14cy0xMS5oYW5kc29udGFibGUsLmNvbC14cy0xMi5oYW5kc29udGFibGUsLmNvbC14cy0y''@;'; put 'put ''LmhhbmRzb250YWJsZSwuY29sLXhzLTMuaGFuZHNvbnRhYmxlLC5jb2wteHMtNC5oYW5kc29udGFibGUsLmNvbC14cy01LmhhbmRzb250YWJsZSwuY29sLXhzLTYuaGFuZHNvbnRhYmxlLC5jb2wteHMtNy5oYW5kc29udGFibGUsLmNvbC14cy04LmhhbmRzb250YWJsZSwuY29sLXhzLTkuaGFu''@;'; put 'put ''ZHNvbnRhYmxle3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MH0uaGFuZHNvbnRhYmxlIC50YWJsZS1zdHJpcGVkPnRib2R5PnRyOm50aC1vZi10eXBlKGV2ZW4pe2JhY2tncm91bmQtY29sb3I6I2ZmZn0uaGFuZHNvbnRhYmxle3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUg''@;'; put 'put ''LmhpZGV7ZGlzcGxheTpub25lfS5oYW5kc29udGFibGUgLnJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgLnd0SGlkZXJ7d2lkdGg6MH0uaGFuZHNvbnRhYmxlIC53dFNwcmVhZGVye3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjA7aGVpZ2h0OmF1dG99LmhhbmRzb250''@;'; put 'put ''YWJsZSB0YWJsZSwuaGFuZHNvbnRhYmxlIHRib2R5LC5oYW5kc29udGFibGUgdGhlYWQsLmhhbmRzb250YWJsZSB0ZCwuaGFuZHNvbnRhYmxlIHRoLC5oYW5kc29udGFibGUgaW5wdXQsLmhhbmRzb250YWJsZSB0ZXh0YXJlYSwuaGFuZHNvbnRhYmxlIGRpdntib3gtc2l6aW5nOmNvbnRlbnQt''@;'; put 'put ''Ym94Oy13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3h9LmhhbmRzb250YWJsZSBpbnB1dCwuaGFuZHNvbnRhYmxlIHRleHRhcmVhe21pbi1oZWlnaHQ6aW5pdGlhbH0uaGFuZHNvbnRhYmxlIHRhYmxlLmh0Q29yZXtib3JkZXItY29sbGFw''@;'; put 'put ''c2U6c2VwYXJhdGU7Ym9yZGVyLXNwYWNpbmc6MDttYXJnaW46MDtib3JkZXItd2lkdGg6MDt0YWJsZS1sYXlvdXQ6Zml4ZWQ7d2lkdGg6MDtvdXRsaW5lLXdpZHRoOjA7Y3Vyc29yOmRlZmF1bHQ7bWF4LXdpZHRoOm5vbmU7bWF4LWhlaWdodDpub25lfS5oYW5kc29udGFibGUgY29sLC5oYW5k''@;'; put 'put ''c29udGFibGUgY29sLnJvd0hlYWRlcnt3aWR0aDo1MHB4fS5oYW5kc29udGFibGUgdGgsLmhhbmRzb250YWJsZSB0ZHtib3JkZXItdG9wLXdpZHRoOjA7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjYzto''@;'; put 'put ''ZWlnaHQ6MjJweDtlbXB0eS1jZWxsczpzaG93O2xpbmUtaGVpZ2h0OjIxcHg7cGFkZGluZzowIDRweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7dmVydGljYWwtYWxpZ246dG9wO292ZXJmbG93OmhpZGRlbjtvdXRsaW5lLXdpZHRoOjA7d2hpdGUtc3BhY2U6cHJlLXdyYXB9W2Rpcj1ydGxdLmhh''@;'; put 'put ''bmRzb250YWJsZSB0aCxbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIHRke2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjY2NjfS5oYW5kc29udGFibGUgdGg6bGFzdC1jaGlsZHtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDoxcHggc29saWQgI2NjYztib3Jk''@;'; put 'put ''ZXItYm90dG9tOjFweCBzb2xpZCAjY2NjfVtkaXI9cnRsXS5oYW5kc29udGFibGUgdGg6bGFzdC1jaGlsZHtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItbGVmdDoxcHggc29saWQgI2NjY30uaGFuZHNvbnRhYmxlIHRoOmZpcnN0LWNoaWxkLC5oYW5kc29udGFibGUgdGg6bnRoLWNoaWxkKDIp''@;'; put 'put ''LC5oYW5kc29udGFibGUgdGQ6Zmlyc3Qtb2YtdHlwZXtib3JkZXItbGVmdDoxcHggc29saWQgI2NjY31bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIHRoOmZpcnN0LWNoaWxkLFtkaXI9cnRsXS5oYW5kc29udGFibGUgdGg6bnRoLWNoaWxkKDIpLFtkaXI9cnRsXS5oYW5kc29udGFibGUgdGQ6Zmly''@;'; put 'put ''c3Qtb2YtdHlwZXtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2N9LmhhbmRzb250YWJsZSAuaHRfY2xvbmVfdG9wIHRoOm50aC1jaGlsZCgyKXtib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodDoxcHggc29saWQgI2NjY31bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odF9jbG9uZV90''@;'; put 'put ''b3AgdGg6bnRoLWNoaWxkKDIpe2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjY2NjfS5oYW5kc29udGFibGUuaHRSb3dIZWFkZXJzIHRoZWFkIHRyIHRoOm50aC1jaGlsZCgyKXtib3JkZXItbGVmdDoxcHggc29saWQgI2NjY31bZGlyPXJ0bF0uaGFuZHNvbnRh''@;'; put 'put ''YmxlLmh0Um93SGVhZGVycyB0aGVhZCB0ciB0aDpudGgtY2hpbGQoMil7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjY2NjfS5oYW5kc29udGFibGUgdHI6Zmlyc3QtY2hpbGQgdGgsLmhhbmRzb250YWJsZSB0cjpmaXJzdC1jaGlsZCB0ZHtib3JkZXItdG9wOjFweCBzb2xpZCAjY2NjfS5odF9t''@;'; put 'put ''YXN0ZXI6bm90KC5pbm5lckJvcmRlcklubGluZVN0YXJ0KTpub3QoLmVtcHR5Q29sdW1ucyl+LmhhbmRzb250YWJsZSB0Ym9keSB0ciB0aCwuaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJJbmxpbmVTdGFydCk6bm90KC5lbXB0eUNvbHVtbnMpfi5oYW5kc29udGFibGU6bm90KC5odF9jbG9u''@;'; put 'put ''ZV90b3ApIHRoZWFkIHRyIHRoOmZpcnN0LWNoaWxke2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjY2NjfVtkaXI9cnRsXS5odF9tYXN0ZXI6bm90KC5pbm5lckJvcmRlcklubGluZVN0YXJ0KTpub3QoLmVtcHR5Q29sdW1ucyl+LmhhbmRzb250YWJsZSB0Ym9k''@;'; put 'put ''eSB0ciB0aCxbZGlyPXJ0bF0uaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJJbmxpbmVTdGFydCk6bm90KC5lbXB0eUNvbHVtbnMpfi5oYW5kc29udGFibGU6bm90KC5odF9jbG9uZV90b3ApIHRoZWFkIHRyIHRoOmZpcnN0LWNoaWxke2JvcmRlci1sZWZ0LXdpZHRoOjA7Ym9yZGVyLXJpZ2h0''@;'; put 'put ''OjFweCBzb2xpZCAjY2NjfS5odF9tYXN0ZXI6bm90KC5pbm5lckJvcmRlclRvcCk6bm90KC5pbm5lckJvcmRlckJvdHRvbSkgdGhlYWQgdHI6bGFzdC1jaGlsZCB0aCwuaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJUb3ApOm5vdCguaW5uZXJCb3JkZXJCb3R0b20pfi5oYW5kc29udGFibGUg''@;'; put 'put ''dGhlYWQgdHI6bGFzdC1jaGlsZCB0aCwuaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJUb3ApOm5vdCguaW5uZXJCb3JkZXJCb3R0b20pIHRoZWFkIHRyLmxhc3RDaGlsZCB0aCwuaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJUb3ApOm5vdCguaW5uZXJCb3JkZXJCb3R0b20pfi5oYW5kc29u''@;'; put 'put ''dGFibGUgdGhlYWQgdHIubGFzdENoaWxkIHRoe2JvcmRlci1ib3R0b20td2lkdGg6MH0uaGFuZHNvbnRhYmxlIHRoe2JhY2tncm91bmQtY29sb3I6I2YwZjBmMDtjb2xvcjojMjIyO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OjQwMDt3aGl0ZS1zcGFjZTpub3dyYXB9LmhhbmRzb250''@;'; put 'put ''YWJsZSB0aGVhZCB0aHtwYWRkaW5nOjB9LmhhbmRzb250YWJsZSB0aC5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojY2NjfS5oYW5kc29udGFibGUgdGhlYWQgdGggLnJlbGF0aXZle3BhZGRpbmc6MnB4IDRweH0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVye2Rpc3BsYXk6aW5saW5lLWJs''@;'; put 'put ''b2NrO2xpbmUtaGVpZ2h0OjEuMX0uaGFuZHNvbnRhYmxlIC53dEJvcmRlcntwb3NpdGlvbjphYnNvbHV0ZTtmb250LXNpemU6MH0uaGFuZHNvbnRhYmxlIC53dEJvcmRlci5oaWRkZW57ZGlzcGxheTpub25lIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIC53dEJvcmRlci5jdXJyZW50e3otaW5k''@;'; put 'put ''ZXg6MTB9LmhhbmRzb250YWJsZSAud3RCb3JkZXIuYXJlYXt6LWluZGV4Ojh9LmhhbmRzb250YWJsZSAud3RCb3JkZXIuZmlsbHt6LWluZGV4OjZ9LmhhbmRzb250YWJsZSAud3RCb3JkZXIuY29ybmVye2ZvbnQtc2l6ZTowO2N1cnNvcjpjcm9zc2hhaXJ9Lmh0X2Nsb25lX21hc3Rlcnt6LWlu''@;'; put 'put ''ZGV4OjEwMH0uaHRfY2xvbmVfaW5saW5lX3N0YXJ0e3otaW5kZXg6MTIwfS5odF9jbG9uZV9ib3R0b217ei1pbmRleDoxMzB9Lmh0X2Nsb25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVye3otaW5kZXg6MTUwfS5odF9jbG9uZV90b3B7ei1pbmRleDoxNjB9Lmh0X2Nsb25lX3RvcF9pbmxp''@;'; put 'put ''bmVfc3RhcnRfY29ybmVye3otaW5kZXg6MTgwfS5oYW5kc29udGFibGUgY29sLmhpZGRlbnt3aWR0aDowIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIHRyLmhpZGRlbiwuaGFuZHNvbnRhYmxlIHRyLmhpZGRlbiB0ZCwuaGFuZHNvbnRhYmxlIHRyLmhpZGRlbiB0aHtkaXNwbGF5Om5vbmV9Lmh0''@;'; put 'put ''X21hc3RlciwuaHRfY2xvbmVfaW5saW5lX3N0YXJ0LC5odF9jbG9uZV90b3AsLmh0X2Nsb25lX2JvdHRvbXtvdmVyZmxvdzpoaWRkZW59Lmh0X21hc3RlciAud3RIb2xkZXJ7b3ZlcmZsb3c6YXV0b30uaGFuZHNvbnRhYmxlIC5odF9tYXN0ZXIgdGhlYWQsLmhhbmRzb250YWJsZSAuaHRfbWFz''@;'; put 'put ''dGVyIHRyIHRoLC5oYW5kc29udGFibGUgLmh0X2Nsb25lX2lubGluZV9zdGFydCB0aGVhZHt2aXNpYmlsaXR5OmhpZGRlbn0uaHRfY2xvbmVfdG9wIC53dEhvbGRlciwuaHRfY2xvbmVfaW5saW5lX3N0YXJ0IC53dEhvbGRlciwuaHRfY2xvbmVfYm90dG9tIC53dEhvbGRlcntvdmVyZmxvdzpo''@;'; put 'put ''aWRkZW59LmhhbmRzb250YWJsZXt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLFJvYm90byxPeHlnZW4sVWJ1bnR1LEhlbHZldGljYSBOZXVlLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEz''@;'; put 'put ''cHg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiMzNzM3Mzd9LmhhbmRzb250YWJsZSBhe2NvbG9yOiMxMDRhY2N9LmhhbmRzb250YWJsZS5odEF1dG9TaXple3Zpc2liaWxpdHk6aGlkZGVuO2xlZnQ6LTk5MDAwcHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOi05OTAwMHB4fS5oYW5kc29udGFibGUg''@;'; put 'put ''dGQuaHRJbnZhbGlke2JhY2tncm91bmQtY29sb3I6I2ZmNGM0MiFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSB0ZC5odE5vV3JhcHt3aGl0ZS1zcGFjZTpub3dyYXB9I2hvdC1kaXNwbGF5LWxpY2Vuc2UtaW5mb3tmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxT''@;'; put 'put ''ZWdvZSBVSSxSb2JvdG8sT3h5Z2VuLFVidW50dSxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjojMzczNzM3O3BhZGRpbmc6NXB4IDAgM3B4O3RleHQtYWxpZ246bGVmdH0jaG90LWRpc3BsYXktbGljZW5zZS1pbmZv''@;'; put 'put ''IGF7Y29sb3I6IzEwNGFjYztmb250LXNpemU6MTBweH0uaGFuZHNvbnRhYmxlIC5tYW51YWxDb2x1bW5SZXNpemVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2N1cnNvcjpjb2wtcmVzaXplO3otaW5kZXg6MjEwO3dpZHRoOjVweDtoZWlnaHQ6MjVweH0uaGFuZHNvbnRhYmxlIC5tYW51YWxS''@;'; put 'put ''b3dSZXNpemVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtjdXJzb3I6cm93LXJlc2l6ZTt6LWluZGV4OjIxMDtoZWlnaHQ6NXB4O3dpZHRoOjUwcHh9LmhhbmRzb250YWJsZSAubWFudWFsQ29sdW1uUmVzaXplcjpob3ZlciwuaGFuZHNvbnRhYmxlIC5tYW51YWxDb2x1bW5SZXNpemVyLmFj''@;'; put 'put ''dGl2ZSwuaGFuZHNvbnRhYmxlIC5tYW51YWxSb3dSZXNpemVyOmhvdmVyLC5oYW5kc29udGFibGUgLm1hbnVhbFJvd1Jlc2l6ZXIuYWN0aXZle2JhY2tncm91bmQtY29sb3I6IzM0YTlkYn0uaGFuZHNvbnRhYmxlIC5tYW51YWxDb2x1bW5SZXNpemVyR3VpZGV7cG9zaXRpb246YWJzb2x1dGU7''@;'; put 'put ''cmlnaHQ6dW5zZXQ7dG9wOjA7YmFja2dyb3VuZC1jb2xvcjojMzRhOWRiO2Rpc3BsYXk6bm9uZTt3aWR0aDowO2JvcmRlci1yaWdodDoxcHggZGFzaGVkICM3Nzc7Ym9yZGVyLWxlZnQ6bm9uZTttYXJnaW4tbGVmdDo1cHg7bWFyZ2luLXJpZ2h0OnVuc2V0fVtkaXI9cnRsXS5oYW5kc29udGFi''@;'; put 'put ''bGUgLm1hbnVhbENvbHVtblJlc2l6ZXJHdWlkZXtsZWZ0OnVuc2V0O2JvcmRlci1sZWZ0OjFweCBkYXNoZWQgIzc3Nztib3JkZXItcmlnaHQ6bm9uZTttYXJnaW4tcmlnaHQ6NXB4O21hcmdpbi1sZWZ0OnVuc2V0fS5oYW5kc29udGFibGUgLm1hbnVhbFJvd1Jlc2l6ZXJHdWlkZXtwb3NpdGlv''@;'; put 'put ''bjphYnNvbHV0ZTtsZWZ0OjA7Ym90dG9tOjA7YmFja2dyb3VuZC1jb2xvcjojMzRhOWRiO2Rpc3BsYXk6bm9uZTtoZWlnaHQ6MDtib3JkZXItYm90dG9tOjFweCBkYXNoZWQgIzc3NzttYXJnaW4tdG9wOjVweH0uaGFuZHNvbnRhYmxlIC5tYW51YWxDb2x1bW5SZXNpemVyR3VpZGUuYWN0aXZl''@;'; put 'put ''LC5oYW5kc29udGFibGUgLm1hbnVhbFJvd1Jlc2l6ZXJHdWlkZS5hY3RpdmV7ZGlzcGxheTpibG9jazt6LWluZGV4OjIwOX0uaGFuZHNvbnRhYmxlIC5jb2x1bW5Tb3J0aW5ne3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgLmNvbHVtblNvcnRpbmcuc29ydEFjdGlvbjpob3Zlcnt0''@;'; put 'put ''ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNvcjpwb2ludGVyfS5oYW5kc29udGFibGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZzpiZWZvcmV7dG9wOjUwJTttYXJnaW4tdG9wOi02cHg7cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7''@;'; put 'put ''cmlnaHQ6LTlweDtsZWZ0OnVuc2V0O2NvbnRlbnQ6IiI7aGVpZ2h0OjEwcHg7d2lkdGg6NXB4O2JhY2tncm91bmQtc2l6ZTpjb250YWluO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6cmlnaHR9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSBzcGFuLmNv''@;'; put 'put ''bEhlYWRlci5jb2x1bW5Tb3J0aW5nOmJlZm9yZXtwYWRkaW5nLXJpZ2h0OjhweDtwYWRkaW5nLWxlZnQ6MDtsZWZ0Oi05cHg7cmlnaHQ6dW5zZXQ7YmFja2dyb3VuZC1wb3NpdGlvbi14OmxlZnR9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nLmFzY2VuZGluZzpi''@;'; put 'put ''ZWZvcmV7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFvQ0FNQUFBREo3eXJwQUFBQUtsQk1WRVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtFODZJ''@;'; put 'put ''QUFBQURYUlNUbE1BQkJFbVJHcHJsSlc3MmU3N3RUa1RLd0FBQUZOSlJFRlVlQUh0emprU2dDQVVCTkhQZ3NveTk3K3VsR1hScUpFNUwreGt4b1l0MlVkc0xiNWJxRklOeithTHV1TG41ckl1MlJrTzNmWnBXRU5pbU5naXc2aUJZUlRQTUxKakdGeFFaMWh4eGIveEJJMXFDOGszOUNkS0FBQUFB''@;'; put 'put ''RWxGVGtTdVFtQ0MpfS5oYW5kc29udGFibGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZy5kZXNjZW5kaW5nOmJlZm9yZXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQW9DQU1BQUFESjd5cnBBQUFB''@;'; put 'put ''S2xCTVZFVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0U4NklBQUFBRFhSU1RsTUFCQkVtUkdwcmxKVzcyZTc3dFRrVEt3QUFBRkpKUkVGVWVBSHR6amtTZ0NBUVJORm1RWVVaN245ZEtVdnJ1MFRtdlBBbjNicjBRZmdkWjV4eDZ4K3JR''@;'; put 'put ''bjIzR3FUWW5xMUZEY251elpJTzJXbWVkVnFJUlZ4Z0dLRXlqTmdZUmpLR2taMWhGSVozSTcwTHlNMFZ0VThBQUFBQVNVVk9SSzVDWUlJPSl9Lmh0R2hvc3RUYWJsZSAuaHRDb3JlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmc6bm90KC5pbmRpY2F0b3JEaXNhYmxlZCk6YWZ0ZXJ7Y29u''@;'; put 'put ''dGVudDoiKiI7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1yaWdodDoyMHB4fS5oYW5kc29udGFibGUgdGQuYXJlYSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtMSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtMiwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtMywuaGFu''@;'; put 'put ''ZHNvbnRhYmxlIHRkLmFyZWEtNCwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtNSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtNiwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtN3twb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRkLmFyZWE6YmVmb3JlLC5oYW5kc29udGFibGUgdGQuYXJlYS0xOmJl''@;'; put 'put ''Zm9yZSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtMjpiZWZvcmUsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTM6YmVmb3JlLC5oYW5kc29udGFibGUgdGQuYXJlYS00OmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtNTpiZWZvcmUsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTY6YmVmb3JlLC5oYW5k''@;'; put 'put ''c29udGFibGUgdGQuYXJlYS03OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO2JvdHRvbTotMTAwJSBcCTtiYWNrZ3JvdW5kOiMwMDVlZmZ9QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUp''@;'; put 'put ''LCgtbXMtaGlnaC1jb250cmFzdDogbm9uZSl7LmhhbmRzb250YWJsZSB0ZC5hcmVhOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtMTpiZWZvcmUsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTI6YmVmb3JlLC5oYW5kc29udGFibGUgdGQuYXJlYS0zOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRk''@;'; put 'put ''LmFyZWEtNDpiZWZvcmUsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTU6YmVmb3JlLC5oYW5kc29udGFibGUgdGQuYXJlYS02OmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtNzpiZWZvcmV7Ym90dG9tOi0xMDAlfX0uaGFuZHNvbnRhYmxlIHRkLmFyZWE6YmVmb3Jle29wYWNpdHk6LjF9Lmhh''@;'; put 'put ''bmRzb250YWJsZSB0ZC5hcmVhLTE6YmVmb3Jle29wYWNpdHk6LjJ9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTI6YmVmb3Jle29wYWNpdHk6LjI3fS5oYW5kc29udGFibGUgdGQuYXJlYS0zOmJlZm9yZXtvcGFjaXR5Oi4zNX0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtNDpiZWZvcmV7b3BhY2l0eTou''@;'; put 'put ''NDF9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTU6YmVmb3Jle29wYWNpdHk6LjQ3fS5oYW5kc29udGFibGUgdGQuYXJlYS02OmJlZm9yZXtvcGFjaXR5Oi41NH0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtNzpiZWZvcmV7b3BhY2l0eTouNTh9LmhhbmRzb250YWJsZSB0Ym9keSB0aC5odF9faGlnaGxp''@;'; put 'put ''Z2h0LC5oYW5kc29udGFibGUgdGhlYWQgdGguaHRfX2hpZ2hsaWdodHtiYWNrZ3JvdW5kLWNvbG9yOiNkY2RjZGN9LmhhbmRzb250YWJsZSB0Ym9keSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodCwuaGFuZHNvbnRhYmxlIHRoZWFkIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0e2JhY2tncm91bmQt''@;'; put 'put ''Y29sb3I6IzhlYjBlNztjb2xvcjojMDAwfS5oYW5kc29udGFibGVJbnB1dHtib3JkZXI6bm9uZTtvdXRsaW5lLXdpZHRoOjA7bWFyZ2luOjA7cGFkZGluZzoxcHggNXB4IDA7Zm9udC1mYW1pbHk6aW5oZXJpdDtsaW5lLWhlaWdodDoyMXB4O2ZvbnQtc2l6ZTppbmhlcml0O2JveC1zaGFkb3c6''@;'; put 'put ''MCAwIDAgMnB4ICM1MjkyZjcgaW5zZXQ7cmVzaXplOm5vbmU7ZGlzcGxheTpibG9jaztjb2xvcjojMDAwO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmhhbmRzb250YWJsZUlucHV0OmZvY3Vze291dGxpbmU6bm9uZX0uaGFuZHNvbnRhYmxlSW5wdXRIb2xkZXJ7cG9z''@;'; put 'put ''aXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5odFNlbGVjdEVkaXRvcnstd2Via2l0LWFwcGVhcmFuY2U6bWVudWxpc3QtYnV0dG9uIWltcG9ydGFudDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDphdXRvfS5odFNlbGVjdEVkaXRvcjpmb2N1c3tvdXRsaW5lOm5vbmV9LmhhbmRzb250YWJs''@;'; put 'put ''ZSAuaHREaW1tZWR7Y29sb3I6Izc3N30uaGFuZHNvbnRhYmxlIC5odFN1Ym1lbnV7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSAuaHRTdWJtZW51IDphZnRlcntjb250ZW50OiJcMjViNiI7Y29sb3I6Izc3Nztwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDo1cHg7Zm9udC1zaXplOjlw''@;'; put 'put ''eH1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odFN1Ym1lbnUgOmFmdGVye2NvbnRlbnQ6IiJ9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuaHRTdWJtZW51IDpiZWZvcmV7Y29udGVudDoiXDI1YzAiO2NvbG9yOiM3Nzc7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1cHg7Zm9udC1zaXplOjlweH0u''@;'; put 'put ''aGFuZHNvbnRhYmxlIC5odExlZnR7dGV4dC1hbGlnbjpsZWZ0fS5oYW5kc29udGFibGUgLmh0Q2VudGVye3RleHQtYWxpZ246Y2VudGVyfS5oYW5kc29udGFibGUgLmh0UmlnaHR7dGV4dC1hbGlnbjpyaWdodH0uaGFuZHNvbnRhYmxlIC5odEp1c3RpZnl7dGV4dC1hbGlnbjpqdXN0aWZ5fS5o''@;'; put 'put ''YW5kc29udGFibGUgLmh0VG9we3ZlcnRpY2FsLWFsaWduOnRvcH0uaGFuZHNvbnRhYmxlIC5odE1pZGRsZXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmhhbmRzb250YWJsZSAuaHRCb3R0b217dmVydGljYWwtYWxpZ246Ym90dG9tfS5oYW5kc29udGFibGUgLmh0UGxhY2Vob2xkZXJ7Y29sb3I6''@;'; put 'put ''Izk5OX0uaGFuZHNvbnRhYmxlLmxpc3Rib3h7bWFyZ2luOjB9LmhhbmRzb250YWJsZS5saXN0Ym94IC5odF9tYXN0ZXIgdGFibGV7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZTtiYWNrZ3JvdW5kOndoaXRlfS5oYW5kc29udGFibGUubGlzdGJveCB0aCwu''@;'; put 'put ''aGFuZHNvbnRhYmxlLmxpc3Rib3ggdHI6Zmlyc3QtY2hpbGQgdGgsLmhhbmRzb250YWJsZS5saXN0Ym94IHRyOmxhc3QtY2hpbGQgdGgsLmhhbmRzb250YWJsZS5saXN0Ym94IHRyOmZpcnN0LWNoaWxkIHRkLC5oYW5kc29udGFibGUubGlzdGJveCB0ZHtib3JkZXItY29sb3I6dHJhbnNwYXJl''@;'; put 'put ''bnQhaW1wb3J0YW50fS5oYW5kc29udGFibGUubGlzdGJveCB0aCwuaGFuZHNvbnRhYmxlLmxpc3Rib3ggdGR7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmhhbmRzb250YWJsZS5saXN0Ym94IHRkLmh0RGltbWVke2N1cnNvcjpkZWZhdWx0O2NvbG9yOmluaGVy''@;'; put 'put ''aXQ7Zm9udC1zdHlsZTppbmhlcml0fS5oYW5kc29udGFibGUubGlzdGJveCAud3RCb3JkZXJ7dmlzaWJpbGl0eTpoaWRkZW59LmhhbmRzb250YWJsZS5saXN0Ym94IHRyIHRkLmN1cnJlbnQsLmhhbmRzb250YWJsZS5saXN0Ym94IHRyOmhvdmVyIHRke2JhY2tncm91bmQ6I2VlZX0uaHRfZWRp''@;'; put 'put ''dG9yX2hpZGRlbnt6LWluZGV4Oi0xfS5odF9lZGl0b3JfdmlzaWJsZXt6LWluZGV4OjIwMH0uaGFuZHNvbnRhYmxlIHRkLmh0U2VhcmNoUmVzdWx0e2JhY2tncm91bmQ6I2ZjZWRkOTtjb2xvcjojNTgzNzA3fS5oYW5kc29udGFibGUgLmNvbGxhcHNpYmxlSW5kaWNhdG9ye3Bvc2l0aW9uOmFi''@;'; put 'put ''c29sdXRlO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7bGVmdDp1bnNldDtyaWdodDo1cHg7Ym9yZGVyOjFweCBzb2xpZCAjQTZBNkE2O2xpbmUtaGVpZ2h0OjhweDtjb2xvcjojMjIyO2JvcmRlci1yYWRpdXM6MTBweDtmb250LXNpemU6MTBweDt3aWR0aDoxMHB4O2hlaWdo''@;'; put 'put ''dDoxMHB4O2N1cnNvcjpwb2ludGVyO2JveC1zaGFkb3c6MCAwIDAgNnB4ICNlZWU7YmFja2dyb3VuZDojZWVlO3RleHQtYWxpZ246Y2VudGVyfVtkaXI9cnRsXS5oYW5kc29udGFibGUgLmNvbGxhcHNpYmxlSW5kaWNhdG9ye3JpZ2h0OnVuc2V0O2xlZnQ6NXB4fS5oYW5kc29udGFibGUubW9i''@;'; put 'put ''aWxlLC5oYW5kc29udGFibGUubW9iaWxlIC53dEhvbGRlcnstd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTstd2Via2l0LW92ZXJmbG93LXNj''@;'; put 'put ''cm9sbGluZzp0b3VjaH0uaGFuZHNvbnRhYmxlLm1vYmlsZSAuaGFuZHNvbnRhYmxlSW5wdXQ6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAycHggIzUyOTJmNyBpbnNldDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9wU2VsZWN0aW9uSGFuZGxlOm5vdCguaHRfbWFzdGVyIC50b3BTZWxlY3Rp''@;'; put 'put ''b25IYW5kbGUpLC50b3BTZWxlY3Rpb25IYW5kbGUtSGl0QXJlYTpub3QoLmh0X21hc3RlciAudG9wU2VsZWN0aW9uSGFuZGxlLUhpdEFyZWEpe3otaW5kZXg6OTk5OX0uaGFuZHNvbnRhYmxlIC50b3BTZWxlY3Rpb25IYW5kbGUsLmhhbmRzb250YWJsZSAudG9wU2VsZWN0aW9uSGFuZGxlLUhp''@;'; put 'put ''dEFyZWEsLmhhbmRzb250YWJsZSAuYm90dG9tU2VsZWN0aW9uSGFuZGxlLC5oYW5kc29udGFibGUgLmJvdHRvbVNlbGVjdGlvbkhhbmRsZS1IaXRBcmVhe2xlZnQ6LTEwMDAwcHg7cmlnaHQ6dW5zZXQ7dG9wOi0xMDAwMHB4fVtkaXI9cnRsXS5oYW5kc29udGFibGUgLnRvcFNlbGVjdGlvbkhh''@;'; put 'put ''bmRsZSxbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC50b3BTZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSxbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5ib3R0b21TZWxlY3Rpb25IYW5kbGUsW2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuYm90dG9tU2VsZWN0aW9uSGFuZGxlLUhpdEFyZWF7cmlnaHQ6LTEw''@;'; put 'put ''MDAwcHg7bGVmdDp1bnNldH0uaGFuZHNvbnRhYmxlLmhpZGUtdHdlZW57YW5pbWF0aW9uOm9wYWNpdHktaGlkZSAuM3M7YW5pbWF0aW9uLWZpbGwtbW9kZTpmb3J3YXJkczstd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6Zm9yd2FyZHN9LmhhbmRzb250YWJsZS5zaG93LXR3ZWVue2FuaW1h''@;'; put 'put ''dGlvbjpvcGFjaXR5LXNob3cgLjNzO2FuaW1hdGlvbi1maWxsLW1vZGU6Zm9yd2FyZHM7LXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOmZvcndhcmRzfS8qIQogKiBQaWthZGF5CiAqIENvcHlyaWdodCDCqSAyMDE0IERhdmlkIEJ1c2hlbGwgfCBCU0QgJiBNSVQgbGljZW5zZSB8IGh0dHBz''@;'; put 'put ''Oi8vZGJ1c2hlbGwuY29tLwogKi8ucGlrYS1zaW5nbGV7ei1pbmRleDo5OTk5O2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7Y29sb3I6IzMzMztiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1ib3R0b20tY29sb3I6I2JiYjtmb250LWZhbWlseTpI''@;'; put 'put ''ZWx2ZXRpY2EgTmV1ZSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZn0ucGlrYS1zaW5nbGU6YmVmb3JlLC5waWthLXNpbmdsZTphZnRlcntjb250ZW50OiIgIjtkaXNwbGF5OnRhYmxlfS5waWthLXNpbmdsZTphZnRlcntjbGVhcjpib3RofS5waWthLXNpbmdsZS5pcy1oaWRkZW57ZGlzcGxh''@;'; put 'put ''eTpub25lfS5waWthLXNpbmdsZS5pcy1ib3VuZHtwb3NpdGlvbjphYnNvbHV0ZTtib3gtc2hhZG93OjAgNXB4IDE1cHggLTVweCAjMDAwMDAwODB9LnBpa2EtbGVuZGFye2Zsb2F0OmxlZnQ7d2lkdGg6MjQwcHg7bWFyZ2luOjhweH0ucGlrYS10aXRsZXtwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0''@;'; put 'put ''LWFsaWduOmNlbnRlcn0ucGlrYS1sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4Ojk5OTk7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbjowO3BhZGRpbmc6NXB4IDNweDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoyMHB4O2ZvbnQtd2VpZ2h0Ojcw''@;'; put 'put ''MDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LnBpa2EtdGl0bGUgc2VsZWN0e2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6OTk5ODttYXJnaW46MDtsZWZ0OjA7dG9wOjVweDtvcGFjaXR5OjB9LnBpa2EtcHJldiwucGlrYS1uZXh0e2Rpc3BsYXk6YmxvY2s7Y3Vyc29y''@;'; put 'put ''OnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7b3V0bGluZTpub25lO2JvcmRlcjowO3BhZGRpbmc6MDt3aWR0aDoyMHB4O2hlaWdodDozMHB4O3RleHQtaW5kZW50OjIwcHg7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2Jh''@;'; put 'put ''Y2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjc1JSA3NSU7b3BhY2l0eTouNX0ucGlrYS1wcmV2OmhvdmVyLC5waWthLW5leHQ6aG92ZXJ7b3BhY2l0eToxfS5waWthLXByZXYsLmlzLXJ0bCAucGlrYS1u''@;'; put 'put ''ZXh0e2Zsb2F0OmxlZnQ7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFlQ0FZQUFBQXNFajVyQUFBQVVrbEVRVlI0MnUzVk1Rb0FJQkFEUWY4UGdqK09EOWhHMkN0T05KQjJ5bVFrS2UwSGJ3QVAweHVjRGlR''@;'; put 'put ''V0FSSVRJREVCRW5NZ01ROFM4K0FxQklsNmtLZ0hpWHFRcUFlSmVwQm8vejM4Si9VMHVBSGxhQmtCbDlJNEd3QUFBQUJKUlU1RXJrSmdnZz09KX0ucGlrYS1uZXh0LC5pcy1ydGwgLnBpa2EtcHJldntmbG9hdDpyaWdodDtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNl''@;'; put 'put ''NjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQWVDQVlBQUFBc0VqNXJBQUFBVTBsRVFWUjQydTNWT3dvQU1BZ0UwZHdmQW5OalUyNmJZa0JDRkd3ZmlMOVZWV29PK0JKNEdmM2d0c0VLS29GQk5UQ29DQVlWd2FBaUdOUUdNVUhNa2pHYmdqazJtSU9OdVhvMG5DOFhuQ2YxSlhnQXJW''@;'; put 'put ''SVpBUWg1VEtZQUFBQUFTVVZPUks1Q1lJST0pfS5waWthLXByZXYuaXMtZGlzYWJsZWQsLnBpa2EtbmV4dC5pcy1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdDtvcGFjaXR5Oi4yfS5waWthLXNlbGVjdHtkaXNwbGF5OmlubGluZS1ibG9ja30ucGlrYS10YWJsZXt3aWR0aDoxMDAlO2JvcmRlci1j''@;'; put 'put ''b2xsYXBzZTpjb2xsYXBzZTtib3JkZXItc3BhY2luZzowO2JvcmRlcjowfS5waWthLXRhYmxlIHRoLC5waWthLXRhYmxlIHRke3dpZHRoOjE0LjI4NTcxNDI4NTclO3BhZGRpbmc6MH0ucGlrYS10YWJsZSB0aHtjb2xvcjojOTk5O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjI1cHg7Zm9u''@;'; put 'put ''dC13ZWlnaHQ6NzAwO3RleHQtYWxpZ246Y2VudGVyfS5waWthLWJ1dHRvbntjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtvdXRsaW5lOm5vbmU7Ym9yZGVyOjA7bWFyZ2luOjA7d2lkdGg6MTAwJTtw''@;'; put 'put ''YWRkaW5nOjVweDtjb2xvcjojNjY2O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjE1cHg7dGV4dC1hbGlnbjpyaWdodDtiYWNrZ3JvdW5kOiNmNWY1ZjU7aGVpZ2h0OmluaXRpYWx9LnBpa2Etd2Vla3tmb250LXNpemU6MTFweDtjb2xvcjojOTk5fS5pcy10b2RheSAucGlrYS1idXR0b257''@;'; put 'put ''Y29sb3I6IzNhZjtmb250LXdlaWdodDo3MDB9LmlzLXNlbGVjdGVkIC5waWthLWJ1dHRvbiwuaGFzLWV2ZW50IC5waWthLWJ1dHRvbntjb2xvcjojZmZmO2ZvbnQtd2VpZ2h0OjcwMDtiYWNrZ3JvdW5kOiMzM2FhZmY7Ym94LXNoYWRvdzppbnNldCAwIDFweCAzcHggIzE3OGZlNTtib3JkZXIt''@;'; put 'put ''cmFkaXVzOjNweH0uaGFzLWV2ZW50IC5waWthLWJ1dHRvbntiYWNrZ3JvdW5kOiMwMDVkYTk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAzcHggIzAwNzZjOX0uaXMtZGlzYWJsZWQgLnBpa2EtYnV0dG9uLC5pcy1pbnJhbmdlIC5waWthLWJ1dHRvbntiYWNrZ3JvdW5kOiNENUU5Rjd9LmlzLXN0''@;'; put 'put ''YXJ0cmFuZ2UgLnBpa2EtYnV0dG9ue2NvbG9yOiNmZmY7YmFja2dyb3VuZDojNkNCMzFEO2JveC1zaGFkb3c6bm9uZTtib3JkZXItcmFkaXVzOjNweH0uaXMtZW5kcmFuZ2UgLnBpa2EtYnV0dG9ue2NvbG9yOiNmZmY7YmFja2dyb3VuZDojMzNhYWZmO2JveC1zaGFkb3c6bm9uZTtib3JkZXIt''@;'; put 'put ''cmFkaXVzOjNweH0uaXMtZGlzYWJsZWQgLnBpa2EtYnV0dG9ue3BvaW50ZXItZXZlbnRzOm5vbmU7Y3Vyc29yOmRlZmF1bHQ7Y29sb3I6Izk5OTtvcGFjaXR5Oi4zfS5pcy1vdXRzaWRlLWN1cnJlbnQtbW9udGggLnBpa2EtYnV0dG9ue2NvbG9yOiM5OTk7b3BhY2l0eTouM30uaXMtc2VsZWN0''@;'; put 'put ''aW9uLWRpc2FibGVke3BvaW50ZXItZXZlbnRzOm5vbmU7Y3Vyc29yOmRlZmF1bHR9LnBpa2EtYnV0dG9uOmhvdmVyLC5waWthLXJvdy5waWNrLXdob2xlLXdlZWs6aG92ZXIgLnBpa2EtYnV0dG9ue2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZmY4MDAwO2JveC1zaGFkb3c6bm9uZTtib3JkZXIt''@;'; put 'put ''cmFkaXVzOjNweH0ucGlrYS10YWJsZSBhYmJye2JvcmRlci1ib3R0b206bm9uZTtjdXJzb3I6aGVscH0uaGFuZHNvbnRhYmxlIC5odEF1dG9jb21wbGV0ZUFycm93e2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToxMHB4O2NvbG9yOiNlZWU7Y3Vyc29yOmRlZmF1bHQ7d2lkdGg6MTZweDt0ZXh0LWFs''@;'; put 'put ''aWduOmNlbnRlcn1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odEF1dG9jb21wbGV0ZUFycm93e2Zsb2F0OmxlZnR9LmhhbmRzb250YWJsZSB0ZCAuaHRBdXRvY29tcGxldGVBcnJvdzpob3Zlcntjb2xvcjojNzc3fS5oYW5kc29udGFibGUgdGQuYXJlYSAuaHRBdXRvY29tcGxldGVBcnJvd3tj''@;'; put 'put ''b2xvcjojZDNkM2QzfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0Lm5vVmFsdWV7b3BhY2l0eTouNX0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJM''@;'; put 'put ''YWJlbHtmb250LXNpemU6aW5oZXJpdDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVyTGFiZWwuZnVsbFdpZHRoe3dpZHRoOjEwMCV9LmhhbmRzb250YWJsZSAuaHRDb21tZW50''@;'; put 'put ''Q2VsbHtwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIC5odENvbW1lbnRDZWxsOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MDtsZWZ0OnVuc2V0O2JvcmRlci1sZWZ0OjZweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6bm9uZTti''@;'; put 'put ''b3JkZXItdG9wOjZweCBzb2xpZCBibGFja31bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odENvbW1lbnRDZWxsOmFmdGVye2xlZnQ6MDtyaWdodDp1bnNldDtib3JkZXItcmlnaHQ6NnB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0Om5vbmV9Lmh0Q29tbWVudHNDb250YWluZXIgLmh0''@;'; put 'put ''Q29tbWVudHN7ZGlzcGxheTpub25lO3otaW5kZXg6MTA1OTtwb3NpdGlvbjphYnNvbHV0ZX0uaHRDb21tZW50c0NvbnRhaW5lciAuaHRDb21tZW50VGV4dEFyZWF7Ym94LXNoYWRvdzojMDAwMDAwMWUgMCAxcHggM3B4LCMwMDAwMDAzZCAwIDFweCAycHg7Ym94LXNpemluZzpib3JkZXItYm94''@;'; put 'put ''O2JvcmRlcjpub25lO2JvcmRlci1sZWZ0OjNweCBzb2xpZCAjY2NjO2JvcmRlci1yaWdodDpub25lO2JhY2tncm91bmQtY29sb3I6I2ZmZjt3aWR0aDoyMTVweDtoZWlnaHQ6OTBweDtmb250LXNpemU6MTJweDtwYWRkaW5nOjVweDtvdXRsaW5lOjBweCFpbXBvcnRhbnQ7LXdlYmtpdC1hcHBl''@;'; put 'put ''YXJhbmNlOm5vbmV9W2Rpcj1ydGxdLmh0Q29tbWVudHNDb250YWluZXIgLmh0Q29tbWVudFRleHRBcmVhe2JvcmRlci1yaWdodDozcHggc29saWQgI2NjYztib3JkZXItbGVmdDpub25lfS5odENvbW1lbnRzQ29udGFpbmVyIC5odENvbW1lbnRUZXh0QXJlYTpmb2N1c3tib3gtc2hhZG93OiMw''@;'; put 'put ''MDAwMDAxZSAwIDFweCAzcHgsIzAwMDAwMDNkIDAgMXB4IDJweCxpbnNldCAwIDAgMCAxcHggIzUyOTJmNztib3JkZXItbGVmdDozcHggc29saWQgIzUyOTJmNztib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF0uaHRDb21tZW50c0NvbnRhaW5lciAuaHRDb21tZW50VGV4dEFyZWE6Zm9jdXN7''@;'; put 'put ''Ym9yZGVyLXJpZ2h0OjNweCBzb2xpZCAjNTI5MmY3O2JvcmRlci1sZWZ0Om5vbmV9LyohCiAqIEhhbmRzb250YWJsZSBDb250ZXh0TWVudQogKi8uaHRDb250ZXh0TWVudTpub3QoLmh0R2hvc3RUYWJsZSl7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTA2MH0uaHRD''@;'; put 'put ''b250ZXh0TWVudSAuaHRfY2xvbmVfdG9wLC5odENvbnRleHRNZW51IC5odF9jbG9uZV9ib3R0b20sLmh0Q29udGV4dE1lbnUgLmh0X2Nsb25lX2lubGluZV9zdGFydCwuaHRDb250ZXh0TWVudSAuaHRfY2xvbmVfdG9wX2lubGluZV9zdGFydF9jb3JuZXIsLmh0Q29udGV4dE1lbnUgLmh0X2Ns''@;'; put 'put ''b25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVye2Rpc3BsYXk6bm9uZX0uaHRDb250ZXh0TWVudSAuaHRfbWFzdGVyIHRhYmxlLmh0Q29yZXtib3JkZXItY29sb3I6I2NjYztib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXRvcC13aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS13aWR0aDoycHg7''@;'; put 'put ''Ym9yZGVyLWxlZnQtd2lkdGg6MXB4O2JvcmRlci1yaWdodC13aWR0aDoycHh9W2Rpcj1ydGxdLmh0Q29udGV4dE1lbnUgLmh0X21hc3RlciB0YWJsZS5odENvcmV7Ym9yZGVyLXJpZ2h0LXdpZHRoOjFweDtib3JkZXItbGVmdC13aWR0aDoycHh9Lmh0Q29udGV4dE1lbnUgLnd0Qm9yZGVye3Zp''@;'; put 'put ''c2liaWxpdHk6aGlkZGVufS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRke2JhY2tncm91bmQ6d2hpdGU7Ym9yZGVyLXdpZHRoOjA7cGFkZGluZzo0cHggNnB4IDA7Y3Vyc29yOnBvaW50ZXI7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVs''@;'; put 'put ''bGlwc2lzfS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxke2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLXdpZHRoOjA7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQtd2lkdGg6MH1bZGlyPXJ0bF0uaHRDb250ZXh0TWVudSB0YWJsZSB0''@;'; put 'put ''Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZHtib3JkZXItcmlnaHQtd2lkdGg6MDtib3JkZXItbGVmdC13aWR0aDowfS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGltbWVke2ZvbnQtc3R5bGU6bm9ybWFsO2NvbG9yOiMzMjMyMzJ9Lmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkg''@;'; put 'put ''dHIgdGQuY3VycmVudCwuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZC56ZXJvY2xpcGJvYXJkLWlzLWhvdmVye2JhY2tncm91bmQ6I2YzZjNmM30uaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odFNlcGFyYXRvcntib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2O2hl''@;'; put 'put ''aWdodDowO3BhZGRpbmc6MDtjdXJzb3I6ZGVmYXVsdH0uaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odERpc2FibGVke2NvbG9yOiM5OTk7Y3Vyc29yOmRlZmF1bHR9Lmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOiNm''@;'; put 'put ''ZmY7Y29sb3I6Izk5OTtjdXJzb3I6ZGVmYXVsdH0uaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ci5odEhpZGRlbntkaXNwbGF5Om5vbmV9Lmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXJ7bWFyZ2luLWxlZnQ6MTBweDttYXJnaW4tcmlnaHQ6NnB4fS5o''@;'; put 'put ''dENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkIGRpdiBzcGFuLnNlbGVjdGVke21hcmdpbi10b3A6LTJweDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjRweH0uaHRDb250ZXh0TWVudSAuaHRfbWFzdGVyIC53dEhvbGRlcntvdmVyZmxvdzpoaWRkZW59dGV4dGFyZWEuSGFuZHNvbnRhYmxl''@;'; put 'put ''Q29weVBhc3Rle3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudDt0b3A6MCFpbXBvcnRhbnQ7cmlnaHQ6MTAwJSFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuO29wYWNpdHk6MDtvdXRsaW5lOjAgbm9uZSFpbXBvcnRhbnR9LyohCiAqIEhhbmRzb250YWJsZSBEcm9wZG93bk1lbnUKICovLmhhbmRz''@;'; put 'put ''b250YWJsZSAuY2hhbmdlVHlwZXtiYWNrZ3JvdW5kOiNlZWU7Ym9yZGVyLXJhZGl1czoycHg7Ym9yZGVyOjFweCBzb2xpZCAjYmJiO2NvbG9yOiNiYmI7Zm9udC1zaXplOjlweDtsaW5lLWhlaWdodDo5cHg7cGFkZGluZzoycHg7bWFyZ2luOjNweCAxcHggMCA1cHg7ZmxvYXQ6cmlnaHR9W2Rp''@;'; put 'put ''cj1ydGxdLmhhbmRzb250YWJsZSAuY2hhbmdlVHlwZXtmbG9hdDpsZWZ0fS5oYW5kc29udGFibGUgLmNoYW5nZVR5cGU6YmVmb3Jle2NvbnRlbnQ6IlwyNWJjICAifS5oYW5kc29udGFibGUgLmNoYW5nZVR5cGU6aG92ZXJ7Ym9yZGVyOjFweCBzb2xpZCAjNzc3O2NvbG9yOiM3Nzc7Y3Vyc29y''@;'; put 'put ''OnBvaW50ZXJ9Lmh0RHJvcGRvd25NZW51Om5vdCguaHRHaG9zdFRhYmxlKXtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDYwfS5odERyb3Bkb3duTWVudSAuaHRfY2xvbmVfdG9wLC5odERyb3Bkb3duTWVudSAuaHRfY2xvbmVfYm90dG9tLC5odERyb3Bkb3duTWVu''@;'; put 'put ''dSAuaHRfY2xvbmVfaW5saW5lX3N0YXJ0LC5odERyb3Bkb3duTWVudSAuaHRfY2xvbmVfdG9wX2lubGluZV9zdGFydF9jb3JuZXIsLmh0RHJvcGRvd25NZW51IC5odF9jbG9uZV9ib3R0b21faW5saW5lX3N0YXJ0X2Nvcm5lcntkaXNwbGF5Om5vbmV9Lmh0RHJvcGRvd25NZW51IHRhYmxlLmh0''@;'; put 'put ''Q29yZXtib3JkZXItY29sb3I6I2NjYztib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXRvcC13aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS13aWR0aDoycHg7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4O2JvcmRlci1yaWdodC13aWR0aDoycHh9W2Rpcj1ydGxdLmh0RHJvcGRvd25NZW51IHRhYmxlLmh0''@;'; put 'put ''Q29yZXtib3JkZXItcmlnaHQtd2lkdGg6MXB4O2JvcmRlci1sZWZ0LXdpZHRoOjJweH0uaHREcm9wZG93bk1lbnUgLnd0Qm9yZGVye3Zpc2liaWxpdHk6aGlkZGVufS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZHtiYWNrZ3JvdW5kOndoaXRlO2JvcmRlci13aWR0aDowO3BhZGRp''@;'; put 'put ''bmc6NHB4IDZweCAwO2N1cnNvcjpwb2ludGVyO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1yaWdodC13''@;'; put 'put ''aWR0aDowO2JvcmRlci1ib3R0b20td2lkdGg6MDtib3JkZXItbGVmdC13aWR0aDowfVtkaXI9cnRsXS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZHtib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodC13aWR0aDowfS5odERyb3Bkb3duTWVudSB0YWJs''@;'; put 'put ''ZSB0Ym9keSB0ciB0ZC5odERpbW1lZHtmb250LXN0eWxlOm5vcm1hbDtjb2xvcjojMzIzMjMyfS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5jdXJyZW50LC5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC56ZXJvY2xpcGJvYXJkLWlzLWhvdmVye2JhY2tncm91bmQ6''@;'; put 'put ''I2U5ZTllOX0uaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRTZXBhcmF0b3J7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNjtoZWlnaHQ6MDtwYWRkaW5nOjA7Y3Vyc29yOmRlZmF1bHR9Lmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWR7Y29s''@;'; put 'put ''b3I6Izk5OX0uaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6Izk5OTtjdXJzb3I6ZGVmYXVsdH0uaHREcm9wZG93bk1lbnU6bm90KC5odEdob3N0VGFibGUpIHRhYmxlIHRib2R5IHRyLmh0SGlkZGVue2Rpc3Bs''@;'; put 'put ''YXk6bm9uZX0uaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXJ7bWFyZ2luLWxlZnQ6MTBweDttYXJnaW4tcmlnaHQ6MTBweH0uaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQgZGl2IHNwYW4uc2VsZWN0ZWR7bWFyZ2luLXRvcDotMnB4O3Bvc2l0''@;'; put 'put ''aW9uOmFic29sdXRlO2xlZnQ6NHB4fS5odERyb3Bkb3duTWVudSAuaHRfbWFzdGVyIC53dEhvbGRlcntvdmVyZmxvdzpoaWRkZW59LyohCiAqIEhhbmRzb250YWJsZSBGaWx0ZXJzCiAqLy5odEZpbHRlcnNDb25kaXRpb25zTWVudTpub3QoLmh0R2hvc3RUYWJsZSl7ZGlzcGxheTpub25lO3Bv''@;'; put 'put ''c2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTA3MH0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgLmh0X2Nsb25lX3RvcCwuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgLmh0X2Nsb25lX2lubGluZV9zdGFydCwuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgLmh0X2Nsb25lX2Nvcm5lcntkaXNwbGF5''@;'; put 'put ''Om5vbmV9Lmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlLmh0Q29yZXtib3JkZXI6MXB4IHNvbGlkICNiYmI7Ym9yZGVyLWJvdHRvbS13aWR0aDoycHg7Ym9yZGVyLXJpZ2h0LXdpZHRoOjJweH0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgLnd0Qm9yZGVye3Zpc2liaWxpdHk6aGlkZGVu''@;'; put 'put ''fS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZHtiYWNrZ3JvdW5kOndoaXRlO2JvcmRlci13aWR0aDowO3BhZGRpbmc6NHB4IDZweCAwO2N1cnNvcjpwb2ludGVyO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNp''@;'; put 'put ''c30uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1ib3R0b20td2lkdGg6MDtib3JkZXItbGVmdC13aWR0aDowfVtkaXI9cnRsXS5odEZpbHRlcnNDb25kaXRp''@;'; put 'put ''b25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZHtib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodC13aWR0aDowfS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odERpbW1lZHtmb250LXN0eWxlOm5vcm1hbDtjb2xvcjojMzIzMjMyfS5o''@;'; put 'put ''dEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5jdXJyZW50LC5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC56ZXJvY2xpcGJvYXJkLWlzLWhvdmVye2JhY2tncm91bmQ6I2U5ZTllOX0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUg''@;'; put 'put ''dGJvZHkgdHIgdGQuaHRTZXBhcmF0b3J7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNjtoZWlnaHQ6MDtwYWRkaW5nOjB9Lmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWR7Y29sb3I6Izk5OX0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFi''@;'; put 'put ''bGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6Izk5OTtjdXJzb3I6ZGVmYXVsdH0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXJ7bWFyZ2luLWxlZnQ6MTBweDttYXJnaW4tcmlnaHQ6MTBw''@;'; put 'put ''eH0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQgZGl2IHNwYW4uc2VsZWN0ZWR7bWFyZ2luLXRvcDotMnB4O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NHB4fS5odEZpbHRlcnNDb25kaXRpb25zTWVudSAuaHRfbWFzdGVyIC53dEhvbGRlcntvdmVyZmxvdzpoaWRk''@;'; put 'put ''ZW59LmhhbmRzb250YWJsZSAuaHRNZW51RmlsdGVyaW5ne2JvcmRlci1ib3R0b206MXB4IGRvdHRlZCAjY2NjO2hlaWdodDoxMzVweDtvdmVyZmxvdzpoaWRkZW59LmhhbmRzb250YWJsZSAuaHRfbWFzdGVyIHRhYmxlIHRkLmh0Q3VzdG9tTWVudVJlbmRlcmVye2JhY2tncm91bmQtY29sb3I6''@;'; put 'put ''I2ZmZjtjdXJzb3I6YXV0b30uaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51TGFiZWx7Zm9udC1zaXplOi43NWVtfS5oYW5kc29udGFibGUgLmh0RmlsdGVyc01lbnVBY3Rpb25CYXJ7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6MTBweDtwYWRkaW5nLWJvdHRvbTozcHh9LmhhbmRz''@;'; put 'put ''b250YWJsZSAuaHRGaWx0ZXJzTWVudUNvbmRpdGlvbi5ib3JkZXJ7Ym9yZGVyLWJvdHRvbToxcHggZG90dGVkICNjY2MhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLmh0RmlsdGVyc01lbnVDb25kaXRpb24gLmh0VUlJbnB1dHtwYWRkaW5nOjAgMCA1cHh9LmhhbmRzb250YWJsZSAuaHRGaWx0''@;'; put 'put ''ZXJzTWVudVZhbHVle2JvcmRlci1ib3R0b206MXB4IGRvdHRlZCAjY2NjIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51VmFsdWUgLmh0VUlNdWx0aXBsZVNlbGVjdFNlYXJjaHtwYWRkaW5nOjB9LmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudUNvbmRpdGlvbiAuaHRV''@;'; put 'put ''SUlucHV0IGlucHV0LC5oYW5kc29udGFibGUgLmh0RmlsdGVyc01lbnVWYWx1ZSAuaHRVSU11bHRpcGxlU2VsZWN0U2VhcmNoIGlucHV0e2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOi43NWVtO3BhZGRpbmc6NHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlfS5odFVJ''@;'; put 'put ''TXVsdGlwbGVTZWxlY3QgLmh0X21hc3RlciAud3RIb2xkZXJ7b3ZlcmZsb3cteTpzY3JvbGx9LmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzQWN0aXZlIC5jaGFuZ2VUeXBle2JvcmRlcjoxcHggc29saWQgIzUwOTI3Mjtjb2xvcjojMTg4MDRlO2JhY2tncm91bmQtY29sb3I6I2QyZTBkOX0uaGFu''@;'; put 'put ''ZHNvbnRhYmxlIC5odFVJU2VsZWN0QWxse21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjEwcHh9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdEFsbHttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDoxMHB4fS5oYW5kc29udGFibGUgLmh0VUlDbGVhckFsbCwuaGFuZHNvbnRh''@;'; put 'put ''YmxlIC5odFVJU2VsZWN0QWxse2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5oYW5kc29udGFibGUgLmh0VUlDbGVhckFsbCBhLC5oYW5kc29udGFibGUgLmh0VUlTZWxlY3RBbGwgYXtmb250LXNpemU6Ljc1ZW19LmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdGlvbkNvbnRyb2xze3RleHQtYWxpZ246''@;'; put 'put ''cmlnaHR9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdGlvbkNvbnRyb2xze3RleHQtYWxpZ246bGVmdH0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJJbnB1dHttYXJnaW46MCA1cHggMCAwO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtoZWlnaHQ6MWVtfVtkaXI9cnRs''@;'; put 'put ''XS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0e21hcmdpbi1sZWZ0OjVweDttYXJnaW4tcmlnaHQ6MH0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXR7cGFkZGluZzozcHggMCA3cHg7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpjZW50ZXJ9LmhhbmRzb250YWJsZSAu''@;'; put 'put ''aHRVSUlucHV0IGlucHV0e2JvcmRlci1yYWRpdXM6MnB4O2JvcmRlcjoxcHggc29saWQgI2QyZDFkMX0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQgaW5wdXQ6Zm9jdXN7b3V0bGluZTowfS5oYW5kc29udGFibGUgLmh0VUlJbnB1dEljb257cG9zaXRpb246YWJzb2x1dGV9LmhhbmRzb250YWJs''@;'; put 'put ''ZSAuaHRVSUlucHV0Lmh0VUlCdXR0b257Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmhhbmRzb250YWJsZSAuaHRVSUlucHV0Lmh0VUlCdXR0b24gaW5wdXR7YmFja2dyb3VuZC1jb2xvcjojZWVlO2NvbG9yOiMwMDA7Y3Vyc29yOnBvaW50ZXI7Zm9udC1mYW1pbHk6aW5o''@;'; put 'put ''ZXJpdDtmb250LXNpemU6Ljc1ZW07Zm9udC13ZWlnaHQ6NzAwO2hlaWdodDoxOXB4O21pbi13aWR0aDo2NHB4fS5oYW5kc29udGFibGUgLmh0VUlJbnB1dC5odFVJQnV0dG9uIGlucHV0OmhvdmVye2JvcmRlci1jb2xvcjojYjliOWI5fS5oYW5kc29udGFibGUgLmh0VUlJbnB1dC5odFVJQnV0''@;'; put 'put ''dG9uT0t7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MTBweH1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbk9Le21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjEwcHh9LmhhbmRzb250YWJsZSAuaHRVSUlucHV0Lmh0VUlCdXR0b25PSyBpbnB1dHtiYWNr''@;'; put 'put ''Z3JvdW5kLWNvbG9yOiMwZjlkNTg7Ym9yZGVyLWNvbG9yOiMxODgwNGU7Y29sb3I6I2ZmZn0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbk9LIGlucHV0OmhvdmVye2JvcmRlci1jb2xvcjojMWE2ZjQ2fS5oYW5kc29udGFibGUgLmh0VUlTZWxlY3R7Y3Vyc29yOnBvaW50ZXI7''@;'; put 'put ''bWFyZ2luLWJvdHRvbTo3cHg7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdENhcHRpb257YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JvcmRlci1yYWRpdXM6MnB4O2JvcmRlcjoxcHggc29saWQgI2QyZDFkMTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6''@;'; put 'put ''ZTouNzVlbTtmb250LXdlaWdodDo3MDA7cGFkZGluZzozcHggMjBweCAzcHggMTBweDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW59LmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdENhcHRpb246aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjoj''@;'; put 'put ''ZThlOGU4O2JvcmRlcjoxcHggc29saWQgI2I5YjliOX0uaGFuZHNvbnRhYmxlIC5odFVJU2VsZWN0RHJvcGRvd246YWZ0ZXJ7Y29udGVudDoiXDI1YjIiO2ZvbnQtc2l6ZTo3cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTBweDt0b3A6MH0uaGFuZHNvbnRhYmxlIC5odFVJU2VsZWN0RHJv''@;'; put 'put ''cGRvd246YmVmb3Jle2NvbnRlbnQ6IlwyNWJjIjtmb250LXNpemU6N3B4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjEwcHg7dG9wOjhweH0uaGFuZHNvbnRhYmxlIC5odFVJTXVsdGlwbGVTZWxlY3QgLmhhbmRzb250YWJsZSAuaHRDb3Jle2JvcmRlcjpub25lfS5oYW5kc29udGFibGUgLmh0''@;'; put 'put ''VUlNdWx0aXBsZVNlbGVjdCAuaGFuZHNvbnRhYmxlIC5odENvcmUgdGQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1fS5oYW5kc29udGFibGUgLmh0VUlNdWx0aXBsZVNlbGVjdFNlYXJjaCBpbnB1dHtib3JkZXItcmFkaXVzOjJweDtib3JkZXI6MXB4IHNvbGlkICNkMmQxZDE7cGFk''@;'; put 'put ''ZGluZzozcHh9LmhhbmRzb250YWJsZSAuaHRVSVJhZGlve2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjVweDtoZWlnaHQ6MTAwJX1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odFVJUmFkaW97bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6NXB4fS5o''@;'; put 'put ''YW5kc29udGFibGUgLmh0VUlSYWRpbzpsYXN0LWNoaWxke21hcmdpbi1yaWdodDowfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXXttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDouNWV4fVtkaXI9cnRsXS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0''@;'; put 'put ''eXBlPXJhZGlvXXttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDouNWV4fS5oYW5kc29udGFibGUgLmh0VUlSYWRpbyBsYWJlbHt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudU9wZXJhdG9yc3twYWRkaW5nLWJvdHRvbTo1cHh9LmhhbmRzb250YWJs''@;'; put 'put ''ZSB0aC5iZWZvcmVIaWRkZW5Db2x1bW57cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSB0aC5iZWZvcmVIaWRkZW5Db2x1bW46YWZ0ZXIsLmhhbmRzb250YWJsZSB0aC5hZnRlckhpZGRlbkNvbHVtbjpiZWZvcmV7Y29sb3I6I2JiYjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO2Zv''@;'; put 'put ''bnQtc2l6ZTo1cHQ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LmhhbmRzb250YWJsZSB0aC5hZnRlckhpZGRlbkNvbHVtbntwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRoLmJlZm9yZUhpZGRlbkNvbHVtbjphZnRlcntyaWdodDoxcHg7Y29udGVudDoiXDI1YzAifVtkaXI9''@;'; put 'put ''cnRsXS5oYW5kc29udGFibGUgdGguYmVmb3JlSGlkZGVuQ29sdW1uOmFmdGVye3JpZ2h0OmluaXRpYWw7bGVmdDoxcHg7Y29udGVudDoiXDI1YjYifS5oYW5kc29udGFibGUgdGguYWZ0ZXJIaWRkZW5Db2x1bW46YmVmb3Jle2xlZnQ6MXB4O2NvbnRlbnQ6IlwyNWI2In1bZGlyPXJ0bF0uaGFu''@;'; put 'put ''ZHNvbnRhYmxlIHRoLmFmdGVySGlkZGVuQ29sdW1uOmJlZm9yZXtyaWdodDoxcHg7bGVmdDppbml0aWFsO2NvbnRlbnQ6IlwyNWMwIn0vKiEKICogSGFuZHNvbnRhYmxlIEhpZGRlblJvd3MKICovLmhhbmRzb250YWJsZSB0aC5iZWZvcmVIaWRkZW5Sb3c6YmVmb3JlLC5oYW5kc29udGFibGUg''@;'; put 'put ''dGguYWZ0ZXJIaWRkZW5Sb3c6YWZ0ZXJ7Y29sb3I6I2JiYjtmb250LXNpemU6NnB0O2xpbmUtaGVpZ2h0OjZwdDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjJweH0uaGFuZHNvbnRhYmxlIHRoLmJlZm9yZUhpZGRlblJvdywuaGFuZHNvbnRhYmxlIHRoLmFmdGVySGlkZGVuUm93e3Bvc2l0aW9u''@;'; put 'put ''OnJlbGF0aXZlfS5oYW5kc29udGFibGUgdGguYmVmb3JlSGlkZGVuUm93OmJlZm9yZXtjb250ZW50OiJcMjViMiI7Ym90dG9tOjJweH0uaGFuZHNvbnRhYmxlIHRoLmFmdGVySGlkZGVuUm93OmFmdGVye2NvbnRlbnQ6IlwyNWJjIjt0b3A6MnB4fS5oYW5kc29udGFibGUuaHRfX3NlbGVjdGlv''@;'; put 'put ''bi0tcm93cyB0Ym9keSB0aC5iZWZvcmVIaWRkZW5Sb3cuaHRfX2hpZ2hsaWdodDpiZWZvcmUsLmhhbmRzb250YWJsZS5odF9fc2VsZWN0aW9uLS1yb3dzIHRib2R5IHRoLmFmdGVySGlkZGVuUm93Lmh0X19oaWdobGlnaHQ6YWZ0ZXJ7Y29sb3I6I2VlZX0uaGFuZHNvbnRhYmxlIHRkLmFmdGVy''@;'; put 'put ''SGlkZGVuUm93LmZpcnN0VmlzaWJsZVJvdywuaGFuZHNvbnRhYmxlIHRoLmFmdGVySGlkZGVuUm93LmZpcnN0VmlzaWJsZVJvd3tib3JkZXItdG9wOjFweCBzb2xpZCAjQ0NDfS5odFJvd0hlYWRlcnMgLmh0X21hc3Rlci5pbm5lckJvcmRlcklubGluZVN0YXJ0fi5odF9jbG9uZV90b3BfaW5s''@;'; put 'put ''aW5lX3N0YXJ0X2Nvcm5lciB0aDpudGgtY2hpbGQoMiksLmh0Um93SGVhZGVycyAuaHRfbWFzdGVyLmlubmVyQm9yZGVySW5saW5lU3RhcnR+Lmh0X2Nsb25lX2lubGluZV9zdGFydCB0ZDpmaXJzdC1vZi10eXBle2JvcmRlci1sZWZ0OjAgbm9uZX0uaGFuZHNvbnRhYmxlLmh0X19tYW51YWxD''@;'; put 'put ''b2x1bW5Nb3ZlLmFmdGVyLXNlbGVjdGlvbi0tY29sdW1ucyB0aGVhZCB0aC5odF9faGlnaGxpZ2h0e2N1cnNvcjptb3ZlO2N1cnNvcjpncmFifS5oYW5kc29udGFibGUuaHRfX21hbnVhbENvbHVtbk1vdmUub24tbW92aW5nLS1jb2x1bW5zLC5oYW5kc29udGFibGUuaHRfX21hbnVhbENvbHVt''@;'; put 'put ''bk1vdmUub24tbW92aW5nLS1jb2x1bW5zIHRoZWFkIHRoLmh0X19oaWdobGlnaHR7Y3Vyc29yOm1vdmU7Y3Vyc29yOmdyYWJiaW5nfS5oYW5kc29udGFibGUuaHRfX21hbnVhbENvbHVtbk1vdmUub24tbW92aW5nLS1jb2x1bW5zIC5tYW51YWxDb2x1bW5SZXNpemVye2Rpc3BsYXk6bm9uZX0u''@;'; put 'put ''aGFuZHNvbnRhYmxlIC5odF9fbWFudWFsQ29sdW1uTW92ZS0tZ3VpZGVsaW5lLC5oYW5kc29udGFibGUgLmh0X19tYW51YWxDb2x1bW5Nb3ZlLS1iYWNrbGlnaHR7cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OjEwMCU7ZGlzcGxheTpub25lfS5oYW5kc29udGFibGUgLmh0X19tYW51YWxDb2x1''@;'; put 'put ''bW5Nb3ZlLS1ndWlkZWxpbmV7YmFja2dyb3VuZDojNzU3NTc1O3dpZHRoOjJweDt0b3A6MDttYXJnaW4taW5saW5lLXN0YXJ0Oi0xcHg7bWFyZ2luLWlubGluZS1lbmQ6MDt6LWluZGV4OjIwNX0uaGFuZHNvbnRhYmxlIC5odF9fbWFudWFsQ29sdW1uTW92ZS0tYmFja2xpZ2h0e2JhY2tncm91''@;'; put 'put ''bmQ6IzM0MzQzNDtiYWNrZ3JvdW5kOnJnYmEoNTIsNTIsNTIsLjI1KTtkaXNwbGF5Om5vbmU7ei1pbmRleDoyMDU7cG9pbnRlci1ldmVudHM6bm9uZX0uaGFuZHNvbnRhYmxlLm9uLW1vdmluZy0tY29sdW1ucy5zaG93LXVpIC5odF9fbWFudWFsQ29sdW1uTW92ZS0tZ3VpZGVsaW5lLC5oYW5k''@;'; put 'put ''c29udGFibGUub24tbW92aW5nLS1jb2x1bW5zIC5odF9fbWFudWFsQ29sdW1uTW92ZS0tYmFja2xpZ2h0e2Rpc3BsYXk6YmxvY2t9LmhhbmRzb250YWJsZSAud3RIaWRlcntwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlLmh0X19tYW51YWxSb3dNb3ZlLmFmdGVyLXNlbGVjdGlvbi0t''@;'; put 'put ''cm93cyB0Ym9keSB0aC5odF9faGlnaGxpZ2h0e2N1cnNvcjptb3ZlO2N1cnNvcjpncmFifS5oYW5kc29udGFibGUuaHRfX21hbnVhbFJvd01vdmUub24tbW92aW5nLS1yb3dzLC5oYW5kc29udGFibGUuaHRfX21hbnVhbFJvd01vdmUub24tbW92aW5nLS1yb3dzIHRib2R5IHRoLmh0X19oaWdo''@;'; put 'put ''bGlnaHR7Y3Vyc29yOm1vdmU7Y3Vyc29yOmdyYWJiaW5nfS5oYW5kc29udGFibGUuaHRfX21hbnVhbFJvd01vdmUub24tbW92aW5nLS1yb3dzIC5tYW51YWxSb3dSZXNpemVye2Rpc3BsYXk6bm9uZX0uaGFuZHNvbnRhYmxlIC5odF9fbWFudWFsUm93TW92ZS0tZ3VpZGVsaW5lLC5oYW5kc29u''@;'; put 'put ''dGFibGUgLmh0X19tYW51YWxSb3dNb3ZlLS1iYWNrbGlnaHR7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtkaXNwbGF5Om5vbmV9LmhhbmRzb250YWJsZSAuaHRfX21hbnVhbFJvd01vdmUtLWd1aWRlbGluZXtiYWNrZ3JvdW5kOiM3NTc1NzU7aGVpZ2h0OjJweDtsZWZ0OjA7bWFyZ2lu''@;'; put 'put ''LXRvcDotMXB4O3otaW5kZXg6MjA1fS5oYW5kc29udGFibGUgLmh0X19tYW51YWxSb3dNb3ZlLS1iYWNrbGlnaHR7YmFja2dyb3VuZDojMzQzNDM0O2JhY2tncm91bmQ6cmdiYSg1Miw1Miw1MiwuMjUpO2Rpc3BsYXk6bm9uZTt6LWluZGV4OjIwNTtwb2ludGVyLWV2ZW50czpub25lfS5oYW5k''@;'; put 'put ''c29udGFibGUub24tbW92aW5nLS1yb3dzLnNob3ctdWkgLmh0X19tYW51YWxSb3dNb3ZlLS1ndWlkZWxpbmUsLmhhbmRzb250YWJsZS5vbi1tb3ZpbmctLXJvd3MgLmh0X19tYW51YWxSb3dNb3ZlLS1iYWNrbGlnaHR7ZGlzcGxheTpibG9ja30uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3Nw''@;'; put 'put ''YW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XTpub3QoW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbF0pOmJlZm9yZXtvcGFjaXR5OjB9LmhhbmRzb250YWJsZSB0Ym9keSB0ZFtyb3dzcGFuXVtjbGFzcyo9YXJlYV1bY2xhc3MqPWhpZ2hsaWdodF1bY2xhc3MqPWZ1bGx5''@;'; put 'put ''U2VsZWN0ZWRNZXJnZWRDZWxsLW11bHRpcGxlXTpiZWZvcmV7b3BhY2l0eTouMX0uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwtMF06YmVmb3Jle29wYWNpdHk6LjF9Lmhh''@;'; put 'put ''bmRzb250YWJsZSB0Ym9keSB0ZFtyb3dzcGFuXVtjbGFzcyo9YXJlYV1bY2xhc3MqPWhpZ2hsaWdodF1bY2xhc3MqPWZ1bGx5U2VsZWN0ZWRNZXJnZWRDZWxsLTFdOmJlZm9yZXtvcGFjaXR5Oi4yfS5oYW5kc29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xhc3MqPWFyZWFdW2NsYXNzKj1o''@;'; put 'put ''aWdobGlnaHRdW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbC0yXTpiZWZvcmV7b3BhY2l0eTouMjd9LmhhbmRzb250YWJsZSB0Ym9keSB0ZFtyb3dzcGFuXVtjbGFzcyo9YXJlYV1bY2xhc3MqPWhpZ2hsaWdodF1bY2xhc3MqPWZ1bGx5U2VsZWN0ZWRNZXJnZWRDZWxsLTNdOmJlZm9y''@;'; put 'put ''ZXtvcGFjaXR5Oi4zNX0uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwtNF06YmVmb3Jle29wYWNpdHk6LjQxfS5oYW5kc29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xh''@;'; put 'put ''c3MqPWFyZWFdW2NsYXNzKj1oaWdobGlnaHRdW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbC01XTpiZWZvcmV7b3BhY2l0eTouNDd9LmhhbmRzb250YWJsZSB0Ym9keSB0ZFtyb3dzcGFuXVtjbGFzcyo9YXJlYV1bY2xhc3MqPWhpZ2hsaWdodF1bY2xhc3MqPWZ1bGx5U2VsZWN0ZWRN''@;'; put 'put ''ZXJnZWRDZWxsLTZdOmJlZm9yZXtvcGFjaXR5Oi41NH0uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwtN106YmVmb3Jle29wYWNpdHk6LjU4fS5oYW5kc29udGFibGUgc3Bh''@;'; put 'put ''bi5jb2xIZWFkZXIuY29sdW1uU29ydGluZzphZnRlcnt0b3A6NTAlO21hcmdpbi10b3A6LTJweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotMTVweDtsZWZ0OnVuc2V0O3BhZGRpbmctbGVmdDo1cHg7cGFkZGluZy1yaWdodDp1bnNldDtmb250LXNpemU6OHB4O2hlaWdodDo4cHg7bGluZS1o''@;'; put 'put ''ZWlnaHQ6MS4xO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nOmFmdGVye2xlZnQ6LTE1cHg7cmlnaHQ6dW5zZXQ7cGFkZGluZy1yaWdodDo1cHg7cGFkZGluZy1sZWZ0OnVuc2V0fS5oYW5kc29udGFi''@;'; put 'put ''bGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZzphZnRlcnt0ZXh0LWRlY29yYXRpb246bm9uZX0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmdbY2xhc3NePXNvcnQtXTphZnRlciwuaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmdb''@;'; put 'put ''Y2xhc3MqPSIgc29ydC0iXTphZnRlcntjb250ZW50OiIrIn0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmcuc29ydC0xOmFmdGVye2NvbnRlbnQ6IjEifS5oYW5kc29udGFibGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZy5zb3J0LTI6YWZ0ZXJ7Y29udGVu''@;'; put 'put ''dDoiMiJ9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nLnNvcnQtMzphZnRlcntjb250ZW50OiIzIn0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmcuc29ydC00OmFmdGVye2NvbnRlbnQ6IjQifS5oYW5kc29udGFibGUgc3Bhbi5jb2xI''@;'; put 'put ''ZWFkZXIuY29sdW1uU29ydGluZy5zb3J0LTU6YWZ0ZXJ7Y29udGVudDoiNSJ9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nLnNvcnQtNjphZnRlcntjb250ZW50OiI2In0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmcuc29ydC03OmFm''@;'; put 'put ''dGVye2NvbnRlbnQ6IjcifS5odEdob3N0VGFibGUgdGggZGl2IGJ1dHRvbi5jaGFuZ2VUeXBlK3NwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmc6bm90KC5pbmRpY2F0b3JEaXNhYmxlZCl7cGFkZGluZy1yaWdodDo1cHh9LmhhbmRzb250YWJsZSB0aGVhZCB0aC5oaWRkZW5IZWFkZXI6bm90''@;'; put 'put ''KDpmaXJzdC1vZi10eXBlKXtkaXNwbGF5Om5vbmV9LmhhbmRzb250YWJsZSB0aC5odF9uZXN0aW5nTGV2ZWxze3RleHQtYWxpZ246bGVmdDtwYWRkaW5nLWxlZnQ6N3B4fVtkaXI9cnRsXS5oYW5kc29udGFibGUgdGguaHRfbmVzdGluZ0xldmVsc3t0ZXh0LWFsaWduOnJpZ2h0O3BhZGRpbmct''@;'; put 'put ''cmlnaHQ6N3B4fS5oYW5kc29udGFibGUgdGggZGl2Lmh0X25lc3RpbmdMZXZlbHN7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxMXB4O3JpZ2h0OnVuc2V0fVtkaXI9cnRsXS5oYW5kc29udGFibGUgdGggZGl2Lmh0X25lc3RpbmdMZXZlbHN7cmlnaHQ6MTFw''@;'; put 'put ''eDtsZWZ0OnVuc2V0fS5oYW5kc29udGFibGUuaW5uZXJCb3JkZXJJbmxpbmVTdGFydCB0aCBkaXYuaHRfbmVzdGluZ0xldmVscywuaGFuZHNvbnRhYmxlLmlubmVyQm9yZGVySW5saW5lU3RhcnR+LmhhbmRzb250YWJsZSB0aCBkaXYuaHRfbmVzdGluZ0xldmVsc3tyaWdodDoxMHB4O2xlZnQ6''@;'; put 'put ''dW5zZXR9W2Rpcj1ydGxdLmhhbmRzb250YWJsZS5pbm5lckJvcmRlcklubGluZVN0YXJ0IHRoIGRpdi5odF9uZXN0aW5nTGV2ZWxzLFtkaXI9cnRsXS5oYW5kc29udGFibGUuaW5uZXJCb3JkZXJJbmxpbmVTdGFydH4uaGFuZHNvbnRhYmxlIHRoIGRpdi5odF9uZXN0aW5nTGV2ZWxze2xlZnQ6''@;'; put 'put ''MTBweDtyaWdodDp1bnNldH0uaGFuZHNvbnRhYmxlIHRoIHNwYW4uaHRfbmVzdGluZ0xldmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5oYW5kc29udGFibGUgdGggc3Bhbi5odF9uZXN0aW5nTGV2ZWxfZW1wdHl7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTBweDtoZWlnaHQ6MXB4O2Zs''@;'; put 'put ''b2F0OmxlZnR9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSB0aCBzcGFuLmh0X25lc3RpbmdMZXZlbF9lbXB0eXtmbG9hdDpyaWdodH0uaGFuZHNvbnRhYmxlIHRoIHNwYW4uaHRfbmVzdGluZ0xldmVsOmFmdGVye2NvbnRlbnQ6IlwyNTEwIjtmb250LXNpemU6OXB4O2Rpc3BsYXk6aW5saW5lLWJs''@;'; put 'put ''b2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2JvdHRvbTozcHh9LmhhbmRzb250YWJsZSB0aCBkaXYuaHRfbmVzdGluZ0J1dHRvbntkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotMnB4O2xlZnQ6dW5zZXQ7Y3Vyc29yOnBvaW50ZXJ9W2Rpcj1ydGxdLmhhbmRzb250''@;'; put 'put ''YWJsZSB0aCBkaXYuaHRfbmVzdGluZ0J1dHRvbntsZWZ0Oi0ycHg7cmlnaHQ6dW5zZXR9LmhhbmRzb250YWJsZSB0aCBkaXYuaHRfbmVzdGluZ0J1dHRvbi5odF9uZXN0aW5nRXhwYW5kOmFmdGVye2NvbnRlbnQ6IisifS5oYW5kc29udGFibGUgdGggZGl2Lmh0X25lc3RpbmdCdXR0b24uaHRf''@;'; put 'put ''bmVzdGluZ0NvbGxhcHNlOmFmdGVye2NvbnRlbnQ6Ii0ifS5oYW5kc29udGFibGUuaW5uZXJCb3JkZXJJbmxpbmVTdGFydCB0aCBkaXYuaHRfbmVzdGluZ0J1dHRvbiwuaGFuZHNvbnRhYmxlLmlubmVyQm9yZGVySW5saW5lU3RhcnR+LmhhbmRzb250YWJsZSB0aCBkaXYuaHRfbmVzdGluZ0J1''@;'; put 'put ''dHRvbntyaWdodDowO2xlZnQ6dW5zZXR9W2Rpcj1ydGxdLmhhbmRzb250YWJsZS5pbm5lckJvcmRlcklubGluZVN0YXJ0IHRoIGRpdi5odF9uZXN0aW5nQnV0dG9uLFtkaXI9cnRsXS5oYW5kc29udGFibGUuaW5uZXJCb3JkZXJJbmxpbmVTdGFydH4uaGFuZHNvbnRhYmxlIHRoIGRpdi5odF9u''@;'; put 'put ''ZXN0aW5nQnV0dG9ue2xlZnQ6MDtyaWdodDp1bnNldH06cm9vdHstLWNkcy1nbG9iYWwtYmFzZToyMH1odG1se2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS4xNTstbXMtdGV4dC1zaXplLWFkanVzdDoxMDAlOy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlfWJvZHl7''@;'; put 'put ''bWFyZ2luOjB9YXJ0aWNsZSxhc2lkZSxkZXRhaWxzLGZpZ2NhcHRpb24sZmlndXJlLGZvb3RlcixoZWFkZXIsbWFpbixtZW51LG5hdixzZWN0aW9uLHN1bW1hcnl7ZGlzcGxheTpibG9ja31hdWRpbyxjYW52YXMscHJvZ3Jlc3MsdmlkZW97ZGlzcGxheTppbmxpbmUtYmxvY2t9YXVkaW86bm90''@;'; put 'put ''KFtjb250cm9sc10pe2Rpc3BsYXk6bm9uZTtoZWlnaHQ6MH1wcm9ncmVzc3t2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX10ZW1wbGF0ZSxbaGlkZGVuXXtkaXNwbGF5Om5vbmV9YXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6b2JqZWN0''@;'; put 'put ''c31hOmFjdGl2ZSxhOmhvdmVye291dGxpbmUtd2lkdGg6MH1hYmJyW3RpdGxlXXtib3JkZXItYm90dG9tOm5vbmU7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTstd2Via2l0LXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVk''@;'; put 'put ''fWIsc3Ryb25ne2ZvbnQtd2VpZ2h0OmluaGVyaXR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfWRmbntmb250LXN0eWxlOml0YWxpY31oMXtmb250LXNpemU6MmVtO21hcmdpbjouNjdlbSAwfW1hcmt7YmFja2dyb3VuZC1jb2xvcjojZmYwO2NvbG9yOiMwMDB9c21hbGx7Zm9udC1zaXpl''@;'; put 'put ''OjgwJX1zdWIsc3Vwe2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfWltZ3tib3JkZXItc3R5bGU6bm9uZX1zdmc6bm90KDpyb290KXtvdmVyZmxvdzpoaWRk''@;'; put 'put ''ZW59Y29kZSxrYmQscHJlLHNhbXB7Zm9udC1mYW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxZW19ZmlndXJle21hcmdpbjoxZW0gNDBweH1ocntib3gtc2l6aW5nOmNvbnRlbnQtYm94O2hlaWdodDowO292ZXJmbG93OnZpc2libGV9YnV0dG9uLGlucHV0LG9wdGdyb3VwLHNlbGVjdCx0ZXh0''@;'; put 'put ''YXJlYXtmb250OmluaGVyaXQ7bWFyZ2luOjB9dGV4dGFyZWF7bGluZS1oZWlnaHQ6MS4xNX1vcHRncm91cHtmb250LXdlaWdodDo3MDB9YnV0dG9uLGlucHV0e292ZXJmbG93OnZpc2libGV9YnV0dG9uLHNlbGVjdHt0ZXh0LXRyYW5zZm9ybTpub25lfWJ1dHRvbixodG1sIFt0eXBlPWJ1dHRv''@;'; put 'put ''bl0sW3R5cGU9cmVzZXRdLFt0eXBlPXN1Ym1pdF17LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbn1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsW3R5cGU9YnV0dG9uXTo6LW1vei1mb2N1cy1pbm5lcixbdHlwZT1yZXNldF06Oi1tb3otZm9jdXMtaW5uZXIsW3R5cGU9c3VibWl0XTo6LW1vei1m''@;'; put 'put ''b2N1cy1pbm5lcntib3JkZXItc3R5bGU6bm9uZTtwYWRkaW5nOjB9YnV0dG9uOi1tb3otZm9jdXNyaW5nLFt0eXBlPWJ1dHRvbl06LW1vei1mb2N1c3JpbmcsW3R5cGU9cmVzZXRdOi1tb3otZm9jdXNyaW5nLFt0eXBlPXN1Ym1pdF06LW1vei1mb2N1c3Jpbmd7b3V0bGluZToxcHggZG90dGVk''@;'; put 'put ''IEJ1dHRvblRleHR9ZmllbGRzZXR7Ym9yZGVyOjFweCBzb2xpZCBzaWx2ZXI7bWFyZ2luOjAgMnB4O3BhZGRpbmc6LjM1ZW0gLjYyNWVtIC43NWVtfWxlZ2VuZHtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6aW5oZXJpdDtkaXNwbGF5OnRhYmxlO21heC13aWR0aDoxMDAlO3BhZGRpbmc6''@;'; put 'put ''MDt3aGl0ZS1zcGFjZTpub3JtYWx9dGV4dGFyZWF7b3ZlcmZsb3c6YXV0b31bdHlwZT1jaGVja2JveF0sW3R5cGU9cmFkaW9de2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjB9W3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixbdHlwZT1udW1iZXJdOjotd2Vi''@;'; put 'put ''a2l0LW91dGVyLXNwaW4tYnV0dG9ue2hlaWdodDphdXRvfVt0eXBlPXNlYXJjaF17LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZDtvdXRsaW5lLW9mZnNldDotMnB4fVt0eXBlPXNlYXJjaF06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sW3R5cGU9c2VhcmNoXTo6LXdlYmtpdC1z''@;'; put 'put ''ZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX06Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpidXR0b247Zm9udDppbmhlcml0fTpyb290ey0tY2xyLWNvbG9yLW5ldXRyYWwtMDp3aGl0ZTstLWNsci1jb2xvci1uZXV0cmFsLTUw''@;'; put 'put ''OiNmYWZhZmE7LS1jbHItY29sb3ItbmV1dHJhbC0xMDA6I2YyZjJmMjstLWNsci1jb2xvci1uZXV0cmFsLTIwMDojZThlOGU4Oy0tY2xyLWNvbG9yLW5ldXRyYWwtMzAwOiNkZWRlZGU7LS1jbHItY29sb3ItbmV1dHJhbC00MDA6I2NjY2NjYzstLWNsci1jb2xvci1uZXV0cmFsLTUwMDojYjNi''@;'; put 'put ''M2IzOy0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwOiM4YzhjOGM7LS1jbHItY29sb3ItbmV1dHJhbC03MDA6IzY2NjY2NjstLWNsci1jb2xvci1uZXV0cmFsLTgwMDojNDU0NTQ1Oy0tY2xyLWNvbG9yLW5ldXRyYWwtOTAwOiMzMzMzMzM7LS1jbHItY29sb3ItbmV1dHJhbC0xMDAwOmJsYWNrOy0t''@;'; put 'put ''Y2xyLWNvbG9yLW9uLW5ldXRyYWwtMDpibGFjazstLWNsci1jb2xvci1vbi1uZXV0cmFsLTUwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtMTAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtMjAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtMzAwOmJsYWNrOy0tY2xy''@;'; put 'put ''LWNvbG9yLW9uLW5ldXRyYWwtNDAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtNTAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtNjAwOndoaXRlOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtNzAwOndoaXRlOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtODAwOndoaXRlOy0tY2xy''@;'; put 'put ''LWNvbG9yLW9uLW5ldXRyYWwtOTAwOndoaXRlOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtMTAwMDp3aGl0ZTstLWNsci1jb2xvci1hY3Rpb24tNTA6I2UzZjVmYzstLWNsci1jb2xvci1hY3Rpb24tMTAwOiNjOGVhZjk7LS1jbHItY29sb3ItYWN0aW9uLTIwMDojOWJkOGYzOy0tY2xyLWNvbG9y''@;'; put 'put ''LWFjdGlvbi0zMDA6Izc5YzZlNjstLWNsci1jb2xvci1hY3Rpb24tNDAwOiM0OWFlZGE7LS1jbHItY29sb3ItYWN0aW9uLTUwMDojMTc5YmQzOy0tY2xyLWNvbG9yLWFjdGlvbi02MDA6IzAwNzJhMzstLWNsci1jb2xvci1hY3Rpb24tNzAwOiMwMDY0OGY7LS1jbHItY29sb3ItYWN0aW9uLTgw''@;'; put 'put ''MDojMDA1NjdhOy0tY2xyLWNvbG9yLWFjdGlvbi05MDA6IzAwNGI2YjstLWNsci1jb2xvci1hY3Rpb24tMTAwMDojMDAzNjRkOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi01MDpibGFjazstLWNsci1jb2xvci1vbi1hY3Rpb24tMTAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi0yMDA6Ymxh''@;'; put 'put ''Y2s7LS1jbHItY29sb3Itb24tYWN0aW9uLTMwMDpibGFjazstLWNsci1jb2xvci1vbi1hY3Rpb24tNDAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi01MDA6YmxhY2s7LS1jbHItY29sb3Itb24tYWN0aW9uLTYwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1hY3Rpb24tNzAwOndoaXRlOy0t''@;'; put 'put ''Y2xyLWNvbG9yLW9uLWFjdGlvbi04MDA6d2hpdGU7LS1jbHItY29sb3Itb24tYWN0aW9uLTkwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1hY3Rpb24tMTAwMDp3aGl0ZTstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTUwOiNmN2U2ZmY7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi0x''@;'; put 'put ''MDA6I2U2Y2FmMTstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTIwMDojZDJhYWU0Oy0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tMzAwOiNjMDkwZDU7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi00MDA6I2FmNzNjOTstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTUw''@;'; put 'put ''MDojOWU1N2JjOy0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tNjAwOiM4YTM5YWM7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi03MDA6Izc4MWQ5ZjstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTgwMDojNjgwMDk0Oy0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tOTAw''@;'; put 'put ''OiM0ZjAwNzA7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi0xMDAwOiMzMjAwNDc7LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5LWFjdGlvbi01MDpibGFjazstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTEwMDpibGFjazstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9u''@;'; put 'put ''LTIwMDpibGFjazstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTMwMDpibGFjazstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTQwMDpibGFjazstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTUwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0''@;'; put 'put ''aW9uLTYwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTcwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTgwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTkwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1zZWNvbmRhcnkt''@;'; put 'put ''YWN0aW9uLTEwMDA6d2hpdGU7LS1jbHItY29sb3ItZGFuZ2VyLTUwOiNmZmYyZjA7LS1jbHItY29sb3ItZGFuZ2VyLTEwMDojZmVkZGQ3Oy0tY2xyLWNvbG9yLWRhbmdlci0yMDA6I2ZjYzViYjstLWNsci1jb2xvci1kYW5nZXItMzAwOiNmNTllOGY7LS1jbHItY29sb3ItZGFuZ2VyLTQwMDoj''@;'; put 'put ''ZjI3OTYzOy0tY2xyLWNvbG9yLWRhbmdlci01MDA6I2YzNWU0NDstLWNsci1jb2xvci1kYW5nZXItNjAwOiNmNTJkMGE7LS1jbHItY29sb3ItZGFuZ2VyLTcwMDojZGIyMTAwOy0tY2xyLWNvbG9yLWRhbmdlci04MDA6I2MyMWQwMDstLWNsci1jb2xvci1kYW5nZXItOTAwOiM5OTE3MDA7LS1j''@;'; put 'put ''bHItY29sb3ItZGFuZ2VyLTEwMDA6IzY2MGYwMDstLWNsci1jb2xvci1vbi1kYW5nZXItNTA6YmxhY2s7LS1jbHItY29sb3Itb24tZGFuZ2VyLTEwMDpibGFjazstLWNsci1jb2xvci1vbi1kYW5nZXItMjAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLWRhbmdlci0zMDA6YmxhY2s7LS1jbHItY29s''@;'; put 'put ''b3Itb24tZGFuZ2VyLTQwMDpibGFjazstLWNsci1jb2xvci1vbi1kYW5nZXItNTAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLWRhbmdlci02MDA6YmxhY2s7LS1jbHItY29sb3Itb24tZGFuZ2VyLTcwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1kYW5nZXItODAwOndoaXRlOy0tY2xyLWNvbG9yLW9u''@;'; put 'put ''LWRhbmdlci05MDA6d2hpdGU7LS1jbHItY29sb3Itb24tZGFuZ2VyLTEwMDA6d2hpdGU7LS1jbHItY29sb3Itd2FybmluZy01MDojZmZmYWU2Oy0tY2xyLWNvbG9yLXdhcm5pbmctMTAwOiNmZmY0Yzc7LS1jbHItY29sb3Itd2FybmluZy0yMDA6I2ZmZWVhODstLWNsci1jb2xvci13YXJuaW5n''@;'; put 'put ''LTMwMDojZmVlMjcyOy0tY2xyLWNvbG9yLXdhcm5pbmctNDAwOiNmOGNmMmE7LS1jbHItY29sb3Itd2FybmluZy01MDA6I2VmYzAwNjstLWNsci1jb2xvci13YXJuaW5nLTYwMDojZTZiMDAwOy0tY2xyLWNvbG9yLXdhcm5pbmctNzAwOiNkNjlhMDA7LS1jbHItY29sb3Itd2FybmluZy04MDA6''@;'; put 'put ''I2FkNzYwMDstLWNsci1jb2xvci13YXJuaW5nLTkwMDojOGY1YTAwOy0tY2xyLWNvbG9yLXdhcm5pbmctMTAwMDojNjEzMjAwOy0tY2xyLWNvbG9yLW9uLXdhcm5pbmctNTA6YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy0xMDA6YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy0yMDA6''@;'; put 'put ''YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy0zMDA6YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy00MDA6YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy01MDA6YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy02MDA6YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy03MDA6''@;'; put 'put ''YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy04MDA6YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy05MDA6YmxhY2s7LS1jbHItY29sb3Itb24td2FybmluZy0xMDAwOndoaXRlOy0tY2xyLWNvbG9yLXN1Y2Nlc3MtNTA6I2RmZjBkMDstLWNsci1jb2xvci1zdWNjZXNzLTEwMDojYmNl''@;'; put 'put ''NDlhOy0tY2xyLWNvbG9yLXN1Y2Nlc3MtMjAwOiM3M2RjMWU7LS1jbHItY29sb3Itc3VjY2Vzcy0zMDA6IzY4YzcxYTstLWNsci1jb2xvci1zdWNjZXNzLTQwMDojNWViNzE1Oy0tY2xyLWNvbG9yLXN1Y2Nlc3MtNTAwOiM1YWEyMjA7LS1jbHItY29sb3Itc3VjY2Vzcy02MDA6IzRiOTcwYzst''@;'; put 'put ''LWNsci1jb2xvci1zdWNjZXNzLTcwMDojM2M4NTAwOy0tY2xyLWNvbG9yLXN1Y2Nlc3MtODAwOiMzMDZiMDA7LS1jbHItY29sb3Itc3VjY2Vzcy05MDA6IzI1NTIwMDstLWNsci1jb2xvci1zdWNjZXNzLTEwMDA6IzFlNDIwMDstLWNsci1jb2xvci1vbi1zdWNjZXNzLTUwOmJsYWNrOy0tY2xy''@;'; put 'put ''LWNvbG9yLW9uLXN1Y2Nlc3MtMTAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtMjAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtMzAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtNDAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtNTAwOmJsYWNrOy0tY2xy''@;'; put 'put ''LWNvbG9yLW9uLXN1Y2Nlc3MtNjAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtNzAwOndoaXRlOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtODAwOndoaXRlOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtOTAwOndoaXRlOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtMTAwMDp3aGl0ZX06cm9v''@;'; put 'put ''dHstLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzOi4xNXJlbTstLWNsci1nbG9iYWwtYm9yZGVyd2lkdGg6LjA1cmVtOy0tY2xyLWdsb2JhbC1hcHAtYmFja2dyb3VuZDojZmFmYWZhOy0tY2xyLWdsb2JhbC1zZWxlY3Rpb24tY29sb3I6I2Q4ZTNlOTstLWNsci1nbG9iYWwtb24tc2VsZWN0aW9u''@;'; put 'put ''LWNvbG9yOmJsYWNrOy0tY2xyLWdsb2JhbC1ob3Zlci1jb2xvcjojZThlOGU4Oy0tY2xyLWdsb2JhbC1jb250ZW50LWhlYWRlci1mb250LWNvbG9yOmJsYWNrOy0tY2xyLWdsb2JhbC1mb250LWNvbG9yOiM2NjY2NjY7LS1jbHItZ2xvYmFsLXN1Y2Nlc3MtY29sb3I6IzVhYTIyMDstLWNsci1n''@;'; put 'put ''bG9iYWwtZXJyb3ItY29sb3I6I2MyMWQwMDstLWNsci1jbG9zZS1jb2xvci0tbm9ybWFsOiM4YzhjOGM7LS1jbHItY2xvc2UtY29sb3ItLW5vcm1hbC1vcGFjaXR5Oi4yOy0tY2xyLWNsb3NlLWNvbG9yLS1ob3ZlcjpibGFjazstLWNsci1jbG9zZS1jb2xvci0taG92ZXItb3BhY2l0eTouNTst''@;'; put 'put ''LWNsci1wb3BvdmVyLWJveC1zaGFkb3ctY29sb3I6cmdiYSgxNDAsIDE0MCwgMTQwLCAuMjUpfTpyb290ey0tY2xyLWZvbnQ6TWV0cm9wb2xpcywgQXZlbmlyIE5leHQsIEhlbHZldGljYSBOZXVlLCBBcmlhbCwgc2Fucy1zZXJpZjstLWNsci1kaXNwbGF5LWZvbnQ6dmFyKC0tY2xyLWZvbnQp''@;'; put 'put ''Oy0tY2xyLWZvbnQtd2VpZ2h0LWxpZ2h0OjIwMDstLWNsci1mb250LXdlaWdodC1yZWd1bGFyOjQwMDstLWNsci1mb250LXdlaWdodC1zZW1pYm9sZDo1MDA7LS1jbHItZm9udC13ZWlnaHQtYm9sZDo2MDA7LS1jbHItZm9udC13ZWlnaHQtZXh0cmFib2xkOjYwMDstLWNsci1oMS1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItZ2xvYmFsLWNvbnRlbnQtaGVhZGVyLWZvbnQtY29sb3IpOy0tY2xyLWgxLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1mb250LXdlaWdodC1saWdodCk7LS1jbHItaDEtZm9udC1mYW1pbHk6dmFyKC0tY2xyLWRpc3BsYXktZm9udCk7LS1jbHItaDItY29sb3I6dmFyKC0tY2xyLWds''@;'; put 'put ''b2JhbC1jb250ZW50LWhlYWRlci1mb250LWNvbG9yKTstLWNsci1oMi1mb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtbGlnaHQpOy0tY2xyLWgyLWZvbnQtZmFtaWx5OnZhcigtLWNsci1kaXNwbGF5LWZvbnQpOy0tY2xyLWgzLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtY29udGVu''@;'; put 'put ''dC1oZWFkZXItZm9udC1jb2xvcik7LS1jbHItaDMtZm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvbnQtd2VpZ2h0LWxpZ2h0KTstLWNsci1oMy1mb250LWZhbWlseTp2YXIoLS1jbHItZGlzcGxheS1mb250KTstLWNsci1oNC1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLWNvbnRlbnQtaGVhZGVyLWZv''@;'; put 'put ''bnQtY29sb3IpOy0tY2xyLWg0LWZvbnQtd2VpZ2h0OnZhcigtLWNsci1mb250LXdlaWdodC1saWdodCk7LS1jbHItaDQtZm9udC1mYW1pbHk6dmFyKC0tY2xyLWRpc3BsYXktZm9udCk7LS1jbHItaDUtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1mb250LWNvbG9yKTstLWNsci1oNS1mb250LXdl''@;'; put 'put ''aWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtcmVndWxhcik7LS1jbHItaDUtZm9udC1mYW1pbHk6dmFyKC0tY2xyLWRpc3BsYXktZm9udCk7LS1jbHItaDYtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtOTAwKTstLWNsci1oNi1mb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWln''@;'; put 'put ''aHQtc2VtaWJvbGQpOy0tY2xyLWg2LWZvbnQtZmFtaWx5OnZhcigtLWNsci1kaXNwbGF5LWZvbnQpOy0tY2xyLXAwLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtZm9udC1jb2xvcik7LS1jbHItcDAtZm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvbnQtd2VpZ2h0LWxpZ2h0KTstLWNsci1wMS1jb2xv''@;'; put 'put ''cjp2YXIoLS1jbHItZ2xvYmFsLWZvbnQtY29sb3IpOy0tY2xyLXAxLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1mb250LXdlaWdodC1yZWd1bGFyKTstLWNsci1wMi1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLWZvbnQtY29sb3IpOy0tY2xyLXAyLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1mb250LXdl''@;'; put 'put ''aWdodC1zZW1pYm9sZCk7LS1jbHItcDMtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1mb250LWNvbG9yKTstLWNsci1wMy1mb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtcmVndWxhcik7LS1jbHItcDQtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1mb250LWNvbG9yKTstLWNsci1wNC1m''@;'; put 'put ''b250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtYm9sZCk7LS1jbHItcDUtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1mb250LWNvbG9yKTstLWNsci1wNS1mb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtcmVndWxhcik7LS1jbHItcDYtY29sb3I6dmFyKC0tY2xyLWdsb2Jh''@;'; put 'put ''bC1mb250LWNvbG9yKTstLWNsci1wNi1mb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtYm9sZCk7LS1jbHItcDctY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1mb250LWNvbG9yKTstLWNsci1wNy1mb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtcmVndWxhcik7LS1jbHIt''@;'; put 'put ''cDgtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1mb250LWNvbG9yKTstLWNsci1wOC1mb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtcmVndWxhcil9LmNsci1hbGlnbi1iYXNlbGluZXt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi10b3B7dmVydGlj''@;'; put 'put ''YWwtYWxpZ246dG9wIWltcG9ydGFudH0uY2xyLWFsaWduLW1pZGRsZXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGUhaW1wb3J0YW50fS5jbHItYWxpZ24tYm90dG9te3ZlcnRpY2FsLWFsaWduOmJvdHRvbSFpbXBvcnRhbnR9LmNsci1hbGlnbi10ZXh0LWJvdHRvbXt2ZXJ0aWNhbC1hbGlnbjp0ZXh0''@;'; put 'put ''LWJvdHRvbSFpbXBvcnRhbnR9LmNsci1hbGlnbi10ZXh0LXRvcHt2ZXJ0aWNhbC1hbGlnbjp0ZXh0LXRvcCFpbXBvcnRhbnR9LmNsci1jbGVhcmZpeDphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6dGFibGU7Y2xlYXI6Ym90aH0uY2xyLWRpc3BsYXktYmxvY2t7ZGlzcGxheTpibG9jayFpbXBv''@;'; put 'put ''cnRhbnR9LmNsci1kaXNwbGF5LWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9LmNsci1kaXNwbGF5LWlubGluZXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9LmNsci1mbGV4LXJvd3tmbGV4LWRpcmVjdGlvbjpyb3chaW1wb3J0YW50fS5jbHItZmxleC1jb2x1''@;'; put 'put ''bW57ZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFudH0uY2xyLWZsZXgtcm93LXJldmVyc2V7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC1jb2x1bW4tcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1m''@;'; put 'put ''bGV4LXdyYXB7ZmxleC13cmFwOndyYXAhaW1wb3J0YW50fS5jbHItZmxleC1ub3dyYXB7ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9LmNsci1mbGV4LXdyYXAtcmV2ZXJzZXtmbGV4LXdyYXA6d3JhcC1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtZmlsbHtmbGV4OjEgMSBhdXRvIWlt''@;'; put 'put ''cG9ydGFudH0uY2xyLWZsZXgtZ3Jvdy0we2ZsZXgtZ3JvdzowIWltcG9ydGFudH0uY2xyLWZsZXgtZ3Jvdy0xe2ZsZXgtZ3JvdzoxIWltcG9ydGFudH0uY2xyLWZsZXgtc2hyaW5rLTB7ZmxleC1zaHJpbms6MCFpbXBvcnRhbnR9LmNsci1mbGV4LXNocmluay0xe2ZsZXgtc2hyaW5rOjEhaW1w''@;'; put 'put ''b3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXJ7anVzdGlm''@;'; put 'put ''eS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5j''@;'; put 'put ''bHItYWxpZ24taXRlbXMtc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1lbmR7YWxpZ24taXRlbXM6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlciFpbXBvcnRhbnR9LmNsci1h''@;'; put 'put ''bGlnbi1pdGVtcy1iYXNlbGluZXthbGlnbi1pdGVtczpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1zdHJldGNoe2FsaWduLWl0ZW1zOnN0cmV0Y2ghaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1zdGFydHthbGlnbi1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50''@;'; put 'put ''fS5jbHItYWxpZ24tY29udGVudC1lbmR7YWxpZ24tY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LWNlbnRlcnthbGlnbi1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LWJldHdlZW57YWxpZ24tY29udGVudDpzcGFjZS1iZXR3''@;'; put 'put ''ZWVuIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtYXJvdW5ke2FsaWduLWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtc3RyZXRjaHthbGlnbi1jb250ZW50OnN0cmV0Y2ghaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1hdXRve2FsaWduLXNl''@;'; put 'put ''bGY6YXV0byFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXN0YXJ0e2FsaWduLXNlbGY6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLWVuZHthbGlnbi1zZWxmOmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtY2VudGVye2FsaWduLXNlbGY6Y2VudGVyIWlt''@;'; put 'put ''cG9ydGFudH0uY2xyLWFsaWduLXNlbGYtYmFzZWxpbmV7YWxpZ24tc2VsZjpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXN0cmV0Y2h7YWxpZ24tc2VsZjpzdHJldGNoIWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmNsci1mbGV4LXNtLXJvd3tmbGV4LWRp''@;'; put 'put ''cmVjdGlvbjpyb3chaW1wb3J0YW50fS5jbHItZmxleC1zbS1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFudH0uY2xyLWZsZXgtc20tcm93LXJldmVyc2V7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC1zbS1jb2x1bW4tcmV2ZXJzZXtm''@;'; put 'put ''bGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLXdyYXB7ZmxleC13cmFwOndyYXAhaW1wb3J0YW50fS5jbHItZmxleC1zbS1ub3dyYXB7ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLXdyYXAtcmV2ZXJzZXtmbGV4LXdyYXA6''@;'; put 'put ''d3JhcC1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtc20tZmlsbHtmbGV4OjEgMSBhdXRvIWltcG9ydGFudH0uY2xyLWZsZXgtc20tZ3Jvdy0we2ZsZXgtZ3JvdzowIWltcG9ydGFudH0uY2xyLWZsZXgtc20tZ3Jvdy0xe2ZsZXgtZ3JvdzoxIWltcG9ydGFudH0uY2xyLWZsZXgtc20tc2hy''@;'; put 'put ''aW5rLTB7ZmxleC1zaHJpbms6MCFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLXNocmluay0xe2ZsZXgtc2hyaW5rOjEhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXNtLXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1z''@;'; put 'put ''bS1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1zbS1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtc20tYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vl''@;'; put 'put ''biFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtc20tYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtc20tc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1zbS1lbmR7''@;'; put 'put ''YWxpZ24taXRlbXM6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtc20tY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1zbS1iYXNlbGluZXthbGlnbi1pdGVtczpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1z''@;'; put 'put ''bS1zdHJldGNoe2FsaWduLWl0ZW1zOnN0cmV0Y2ghaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1zbS1zdGFydHthbGlnbi1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1zbS1lbmR7YWxpZ24tY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmNs''@;'; put 'put ''ci1hbGlnbi1jb250ZW50LXNtLWNlbnRlcnthbGlnbi1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXNtLWJldHdlZW57YWxpZ24tY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtc20tYXJvdW5ke2FsaWduLWNvbnRl''@;'; put 'put ''bnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtc20tc3RyZXRjaHthbGlnbi1jb250ZW50OnN0cmV0Y2ghaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1zbS1hdXRve2FsaWduLXNlbGY6YXV0byFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXNtLXN0YXJ0e2Fs''@;'; put 'put ''aWduLXNlbGY6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXNtLWVuZHthbGlnbi1zZWxmOmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtc20tY2VudGVye2FsaWduLXNlbGY6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtc20tYmFzZWxpbmV7''@;'; put 'put ''YWxpZ24tc2VsZjpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXNtLXN0cmV0Y2h7YWxpZ24tc2VsZjpzdHJldGNoIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jbHItZmxleC1tZC1yb3d7ZmxleC1kaXJlY3Rpb246cm93IWltcG9ydGFudH0uY2xyLWZs''@;'; put 'put ''ZXgtbWQtY29sdW1ue2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiFpbXBvcnRhbnR9LmNsci1mbGV4LW1kLXJvdy1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtbWQtY29sdW1uLXJldmVyc2V7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2Uh''@;'; put 'put ''aW1wb3J0YW50fS5jbHItZmxleC1tZC13cmFwe2ZsZXgtd3JhcDp3cmFwIWltcG9ydGFudH0uY2xyLWZsZXgtbWQtbm93cmFwe2ZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50fS5jbHItZmxleC1tZC13cmFwLXJldmVyc2V7ZmxleC13cmFwOndyYXAtcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1m''@;'; put 'put ''bGV4LW1kLWZpbGx7ZmxleDoxIDEgYXV0byFpbXBvcnRhbnR9LmNsci1mbGV4LW1kLWdyb3ctMHtmbGV4LWdyb3c6MCFpbXBvcnRhbnR9LmNsci1mbGV4LW1kLWdyb3ctMXtmbGV4LWdyb3c6MSFpbXBvcnRhbnR9LmNsci1mbGV4LW1kLXNocmluay0we2ZsZXgtc2hyaW5rOjAhaW1wb3J0YW50''@;'; put 'put ''fS5jbHItZmxleC1tZC1zaHJpbmstMXtmbGV4LXNocmluazoxIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1tZC1zdGFydHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtbWQtZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVu''@;'; put 'put ''ZCFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LW1kLWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250''@;'; put 'put ''ZW50LW1kLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLW1kLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtbWQtZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kIWltcG9ydGFu''@;'; put 'put ''dH0uY2xyLWFsaWduLWl0ZW1zLW1kLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtbWQtYmFzZWxpbmV7YWxpZ24taXRlbXM6YmFzZWxpbmUhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtbWQtc3RyZXRjaHthbGlnbi1pdGVtczpzdHJldGNo''@;'; put 'put ''IWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbWQtc3RhcnR7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbWQtZW5ke2FsaWduLWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1tZC1jZW50ZXJ7YWxp''@;'; put 'put ''Z24tY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1tZC1iZXR3ZWVue2FsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LW1kLWFyb3VuZHthbGlnbi1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmNs''@;'; put 'put ''ci1hbGlnbi1jb250ZW50LW1kLXN0cmV0Y2h7YWxpZ24tY29udGVudDpzdHJldGNoIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbWQtYXV0b3thbGlnbi1zZWxmOmF1dG8haW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1tZC1zdGFydHthbGlnbi1zZWxmOmZsZXgtc3RhcnQhaW1wb3J0YW50''@;'; put 'put ''fS5jbHItYWxpZ24tc2VsZi1tZC1lbmR7YWxpZ24tc2VsZjpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLW1kLWNlbnRlcnthbGlnbi1zZWxmOmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLW1kLWJhc2VsaW5le2FsaWduLXNlbGY6YmFzZWxpbmUhaW1wb3J0YW50''@;'; put 'put ''fS5jbHItYWxpZ24tc2VsZi1tZC1zdHJldGNoe2FsaWduLXNlbGY6c3RyZXRjaCFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuY2xyLWZsZXgtbGctcm93e2ZsZXgtZGlyZWN0aW9uOnJvdyFpbXBvcnRhbnR9LmNsci1mbGV4LWxnLWNvbHVtbntmbGV4LWRpcmVjdGlvbjpj''@;'; put 'put ''b2x1bW4haW1wb3J0YW50fS5jbHItZmxleC1sZy1yb3ctcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LWxnLWNvbHVtbi1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtbGctd3JhcHtm''@;'; put 'put ''bGV4LXdyYXA6d3JhcCFpbXBvcnRhbnR9LmNsci1mbGV4LWxnLW5vd3JhcHtmbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudH0uY2xyLWZsZXgtbGctd3JhcC1yZXZlcnNle2ZsZXgtd3JhcDp3cmFwLXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC1sZy1maWxse2ZsZXg6MSAxIGF1dG8haW1w''@;'; put 'put ''b3J0YW50fS5jbHItZmxleC1sZy1ncm93LTB7ZmxleC1ncm93OjAhaW1wb3J0YW50fS5jbHItZmxleC1sZy1ncm93LTF7ZmxleC1ncm93OjEhaW1wb3J0YW50fS5jbHItZmxleC1sZy1zaHJpbmstMHtmbGV4LXNocmluazowIWltcG9ydGFudH0uY2xyLWZsZXgtbGctc2hyaW5rLTF7ZmxleC1z''@;'; put 'put ''aHJpbms6MSFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtbGctc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LWxnLWVuZHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250''@;'; put 'put ''ZW50LWxnLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1sZy1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1sZy1hcm91bmR7anVzdGlmeS1jb250ZW50''@;'; put 'put ''OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1sZy1zdGFydHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLWxnLWVuZHthbGlnbi1pdGVtczpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1sZy1jZW50ZXJ7''@;'; put 'put ''YWxpZ24taXRlbXM6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLWxnLWJhc2VsaW5le2FsaWduLWl0ZW1zOmJhc2VsaW5lIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLWxnLXN0cmV0Y2h7YWxpZ24taXRlbXM6c3RyZXRjaCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50''@;'; put 'put ''LWxnLXN0YXJ0e2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LWxnLWVuZHthbGlnbi1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbGctY2VudGVye2FsaWduLWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0u''@;'; put 'put ''Y2xyLWFsaWduLWNvbnRlbnQtbGctYmV0d2VlbnthbGlnbi1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1sZy1hcm91bmR7YWxpZ24tY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1sZy1zdHJldGNoe2Fs''@;'; put 'put ''aWduLWNvbnRlbnQ6c3RyZXRjaCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLWxnLWF1dG97YWxpZ24tc2VsZjphdXRvIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbGctc3RhcnR7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbGctZW5ke2FsaWdu''@;'; put 'put ''LXNlbGY6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1sZy1jZW50ZXJ7YWxpZ24tc2VsZjpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1sZy1iYXNlbGluZXthbGlnbi1zZWxmOmJhc2VsaW5lIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbGctc3RyZXRjaHth''@;'; put 'put ''bGlnbi1zZWxmOnN0cmV0Y2ghaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5jbHItZmxleC14bC1yb3d7ZmxleC1kaXJlY3Rpb246cm93IWltcG9ydGFudH0uY2xyLWZsZXgteGwtY29sdW1ue2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiFpbXBvcnRhbnR9LmNsci1mbGV4LXhs''@;'; put 'put ''LXJvdy1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgteGwtY29sdW1uLXJldmVyc2V7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC14bC13cmFwe2ZsZXgtd3JhcDp3cmFwIWltcG9ydGFudH0uY2xy''@;'; put 'put ''LWZsZXgteGwtbm93cmFwe2ZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50fS5jbHItZmxleC14bC13cmFwLXJldmVyc2V7ZmxleC13cmFwOndyYXAtcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LXhsLWZpbGx7ZmxleDoxIDEgYXV0byFpbXBvcnRhbnR9LmNsci1mbGV4LXhsLWdyb3ctMHtm''@;'; put 'put ''bGV4LWdyb3c6MCFpbXBvcnRhbnR9LmNsci1mbGV4LXhsLWdyb3ctMXtmbGV4LWdyb3c6MSFpbXBvcnRhbnR9LmNsci1mbGV4LXhsLXNocmluay0we2ZsZXgtc2hyaW5rOjAhaW1wb3J0YW50fS5jbHItZmxleC14bC1zaHJpbmstMXtmbGV4LXNocmluazoxIWltcG9ydGFudH0uY2xyLWp1c3Rp''@;'; put 'put ''ZnktY29udGVudC14bC1zdGFydHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQteGwtZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQteGwtY2VudGVye2p1c3RpZnktY29udGVu''@;'; put 'put ''dDpjZW50ZXIhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXhsLWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXhsLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uY2xy''@;'; put 'put ''LWFsaWduLWl0ZW1zLXhsLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMteGwtZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLXhsLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50''@;'; put 'put ''fS5jbHItYWxpZ24taXRlbXMteGwtYmFzZWxpbmV7YWxpZ24taXRlbXM6YmFzZWxpbmUhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMteGwtc3RyZXRjaHthbGlnbi1pdGVtczpzdHJldGNoIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQteGwtc3RhcnR7YWxpZ24tY29udGVudDpmbGV4''@;'; put 'put ''LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQteGwtZW5ke2FsaWduLWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC14bC1jZW50ZXJ7YWxpZ24tY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC14bC1iZXR3ZWVu''@;'; put 'put ''e2FsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXhsLWFyb3VuZHthbGlnbi1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXhsLXN0cmV0Y2h7YWxpZ24tY29udGVudDpzdHJldGNoIWltcG9ydGFu''@;'; put 'put ''dH0uY2xyLWFsaWduLXNlbGYteGwtYXV0b3thbGlnbi1zZWxmOmF1dG8haW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi14bC1zdGFydHthbGlnbi1zZWxmOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi14bC1lbmR7YWxpZ24tc2VsZjpmbGV4LWVuZCFpbXBvcnRhbnR9LmNs''@;'; put 'put ''ci1hbGlnbi1zZWxmLXhsLWNlbnRlcnthbGlnbi1zZWxmOmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXhsLWJhc2VsaW5le2FsaWduLXNlbGY6YmFzZWxpbmUhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi14bC1zdHJldGNoe2FsaWduLXNlbGY6c3RyZXRjaCFpbXBvcnRhbnR9''@;'; put 'put ''fS5jbHItZmxleC14cy1maXJzdHtvcmRlcjotMX0uY2xyLWZsZXgteHMtbGFzdHtvcmRlcjoxfS5jbHItZmxleC14cy11bm9yZGVyZWR7b3JkZXI6MH0uY2xyLWZsZXgtaXRlbXMteHMtdG9we2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9LmNsci1mbGV4LWl0ZW1zLXhzLW1pZGRsZXthbGlnbi1p''@;'; put 'put ''dGVtczpjZW50ZXJ9LmNsci1mbGV4LWl0ZW1zLXhzLWJvdHRvbXthbGlnbi1pdGVtczpmbGV4LWVuZH0uY2xyLWZsZXgteHMtdG9we2FsaWduLXNlbGY6ZmxleC1zdGFydH0uY2xyLWZsZXgteHMtbWlkZGxle2FsaWduLXNlbGY6Y2VudGVyfS5jbHItZmxleC14cy1ib3R0b217YWxpZ24tc2Vs''@;'; put 'put ''ZjpmbGV4LWVuZH0uY2xyLWZsZXgtaXRlbXMteHMtbGVmdHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0uY2xyLWZsZXgtaXRlbXMteHMtY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmNsci1mbGV4LWl0ZW1zLXhzLXJpZ2h0e2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uY2xy''@;'; put 'put ''LWZsZXgtaXRlbXMteHMtYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9LmNsci1mbGV4LWl0ZW1zLXhzLWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jbHItZmxleC1zbS1maXJzdHtvcmRlcjotMX0uY2xy''@;'; put 'put ''LWZsZXgtc20tbGFzdHtvcmRlcjoxfS5jbHItZmxleC1zbS11bm9yZGVyZWR7b3JkZXI6MH19QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jbHItZmxleC1pdGVtcy1zbS10b3B7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uY2xyLWZsZXgtaXRlbXMtc20tbWlkZGxle2FsaWduLWl0ZW1zOmNl''@;'; put 'put ''bnRlcn0uY2xyLWZsZXgtaXRlbXMtc20tYm90dG9te2FsaWduLWl0ZW1zOmZsZXgtZW5kfX1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmNsci1mbGV4LXNtLXRvcHthbGlnbi1zZWxmOmZsZXgtc3RhcnR9LmNsci1mbGV4LXNtLW1pZGRsZXthbGlnbi1zZWxmOmNlbnRlcn0uY2xyLWZsZXgt''@;'; put 'put ''c20tYm90dG9te2FsaWduLXNlbGY6ZmxleC1lbmR9fUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xyLWZsZXgtaXRlbXMtc20tbGVmdHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0uY2xyLWZsZXgtaXRlbXMtc20tY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmNsci1mbGV4''@;'; put 'put ''LWl0ZW1zLXNtLXJpZ2h0e2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uY2xyLWZsZXgtaXRlbXMtc20tYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9LmNsci1mbGV4LWl0ZW1zLXNtLWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59fUBtZWRpYSAobWlu''@;'; put 'put ''LXdpZHRoOjc2OHB4KXsuY2xyLWZsZXgtbWQtZmlyc3R7b3JkZXI6LTF9LmNsci1mbGV4LW1kLWxhc3R7b3JkZXI6MX0uY2xyLWZsZXgtbWQtdW5vcmRlcmVke29yZGVyOjB9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsuY2xyLWZsZXgtaXRlbXMtbWQtdG9we2FsaWduLWl0ZW1zOmZsZXgt''@;'; put 'put ''c3RhcnR9LmNsci1mbGV4LWl0ZW1zLW1kLW1pZGRsZXthbGlnbi1pdGVtczpjZW50ZXJ9LmNsci1mbGV4LWl0ZW1zLW1kLWJvdHRvbXthbGlnbi1pdGVtczpmbGV4LWVuZH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jbHItZmxleC1tZC10b3B7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fS5j''@;'; put 'put ''bHItZmxleC1tZC1taWRkbGV7YWxpZ24tc2VsZjpjZW50ZXJ9LmNsci1mbGV4LW1kLWJvdHRvbXthbGlnbi1zZWxmOmZsZXgtZW5kfX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmNsci1mbGV4LWl0ZW1zLW1kLWxlZnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LmNsci1mbGV4LWl0''@;'; put 'put ''ZW1zLW1kLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5jbHItZmxleC1pdGVtcy1tZC1yaWdodHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmNsci1mbGV4LWl0ZW1zLW1kLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS5jbHItZmxleC1pdGVtcy1tZC1iZXR3''@;'; put 'put ''ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7LmNsci1mbGV4LWxnLWZpcnN0e29yZGVyOi0xfS5jbHItZmxleC1sZy1sYXN0e29yZGVyOjF9LmNsci1mbGV4LWxnLXVub3JkZXJlZHtvcmRlcjowfX1AbWVkaWEgKG1pbi13aWR0aDo5''@;'; put 'put ''OTJweCl7LmNsci1mbGV4LWl0ZW1zLWxnLXRvcHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5jbHItZmxleC1pdGVtcy1sZy1taWRkbGV7YWxpZ24taXRlbXM6Y2VudGVyfS5jbHItZmxleC1pdGVtcy1sZy1ib3R0b217YWxpZ24taXRlbXM6ZmxleC1lbmR9fUBtZWRpYSAobWluLXdpZHRoOjk5''@;'; put 'put ''MnB4KXsuY2xyLWZsZXgtbGctdG9we2FsaWduLXNlbGY6ZmxleC1zdGFydH0uY2xyLWZsZXgtbGctbWlkZGxle2FsaWduLXNlbGY6Y2VudGVyfS5jbHItZmxleC1sZy1ib3R0b217YWxpZ24tc2VsZjpmbGV4LWVuZH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5jbHItZmxleC1pdGVtcy1s''@;'; put 'put ''Zy1sZWZ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5jbHItZmxleC1pdGVtcy1sZy1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uY2xyLWZsZXgtaXRlbXMtbGctcmlnaHR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5jbHItZmxleC1pdGVtcy1sZy1hcm91bmR7anVzdGlm''@;'; put 'put ''eS1jb250ZW50OnNwYWNlLWFyb3VuZH0uY2xyLWZsZXgtaXRlbXMtbGctYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsuY2xyLWZsZXgteGwtZmlyc3R7b3JkZXI6LTF9LmNsci1mbGV4LXhsLWxhc3R7b3JkZXI6MX0uY2xy''@;'; put 'put ''LWZsZXgteGwtdW5vcmRlcmVke29yZGVyOjB9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmNsci1mbGV4LWl0ZW1zLXhsLXRvcHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5jbHItZmxleC1pdGVtcy14bC1taWRkbGV7YWxpZ24taXRlbXM6Y2VudGVyfS5jbHItZmxleC1pdGVtcy14bC1i''@;'; put 'put ''b3R0b217YWxpZ24taXRlbXM6ZmxleC1lbmR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmNsci1mbGV4LXhsLXRvcHthbGlnbi1zZWxmOmZsZXgtc3RhcnR9LmNsci1mbGV4LXhsLW1pZGRsZXthbGlnbi1zZWxmOmNlbnRlcn0uY2xyLWZsZXgteGwtYm90dG9te2FsaWduLXNlbGY6Zmxl''@;'; put 'put ''eC1lbmR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmNsci1mbGV4LWl0ZW1zLXhsLWxlZnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LmNsci1mbGV4LWl0ZW1zLXhsLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5jbHItZmxleC1pdGVtcy14bC1yaWdodHtqdXN0aWZ5''@;'; put 'put ''LWNvbnRlbnQ6ZmxleC1lbmR9LmNsci1mbGV4LWl0ZW1zLXhsLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS5jbHItZmxleC1pdGVtcy14bC1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufX0uY2xyLWZsb2F0LXhzLWxlZnR7ZmxvYXQ6bGVmdCFpbXBv''@;'; put 'put ''cnRhbnR9LmNsci1mbG9hdC14cy1yaWdodHtmbG9hdDpyaWdodCFpbXBvcnRhbnR9LmNsci1mbG9hdC14cy1ub25le2Zsb2F0Om5vbmUhaW1wb3J0YW50fUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xyLWZsb2F0LXNtLWxlZnR7ZmxvYXQ6bGVmdCFpbXBvcnRhbnR9LmNsci1mbG9hdC1z''@;'; put 'put ''bS1yaWdodHtmbG9hdDpyaWdodCFpbXBvcnRhbnR9LmNsci1mbG9hdC1zbS1ub25le2Zsb2F0Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmNsci1mbG9hdC1tZC1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5jbHItZmxvYXQtbWQtcmlnaHR7ZmxvYXQ6cmln''@;'; put 'put ''aHQhaW1wb3J0YW50fS5jbHItZmxvYXQtbWQtbm9uZXtmbG9hdDpub25lIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5jbHItZmxvYXQtbGctbGVmdHtmbG9hdDpsZWZ0IWltcG9ydGFudH0uY2xyLWZsb2F0LWxnLXJpZ2h0e2Zsb2F0OnJpZ2h0IWltcG9ydGFudH0uY2xy''@;'; put 'put ''LWZsb2F0LWxnLW5vbmV7ZmxvYXQ6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmNsci1mbG9hdC14bC1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5jbHItZmxvYXQteGwtcmlnaHR7ZmxvYXQ6cmlnaHQhaW1wb3J0YW50fS5jbHItZmxvYXQteGwtbm9uZXtm''@;'; put 'put ''bG9hdDpub25lIWltcG9ydGFudH19LmNsci1pbnZpc2libGV7dmlzaWJpbGl0eTpoaWRkZW4haW1wb3J0YW50fS5jbHItaGlkZGVuLXhzLXVwe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIChtYXgtd2lkdGg6NTc1Ljk4cHgpey5jbHItaGlkZGVuLXhzLWRvd257ZGlzcGxheTpub25l''@;'; put 'put ''IWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jbHItaGlkZGVuLXNtLXVwe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjc2Ny45OHB4KXsuY2xyLWhpZGRlbi1zbS1kb3due2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdp''@;'; put 'put ''ZHRoOjc2OHB4KXsuY2xyLWhpZGRlbi1tZC11cHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDo5OTEuOThweCl7LmNsci1oaWRkZW4tbWQtZG93bntkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7LmNsci1oaWRkZW4tbGct''@;'; put 'put ''dXB7ZGlzcGxheTpub25lIWltcG9ydGFudH19QG1lZGlhIChtYXgtd2lkdGg6MTE5OS45OHB4KXsuY2xyLWhpZGRlbi1sZy1kb3due2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmNsci1oaWRkZW4teGwtdXB7ZGlzcGxheTpub25lIWltcG9ydGFu''@;'; put 'put ''dH19LmNsci1oaWRkZW4teGwtZG93biwuY2xyLXZpc2libGUtcHJpbnQtYmxvY2t7ZGlzcGxheTpub25lIWltcG9ydGFudH1AbWVkaWEgcHJpbnR7LmNsci12aXNpYmxlLXByaW50LWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fX0uY2xyLXZpc2libGUtcHJpbnQtaW5saW5le2Rpc3Bs''@;'; put 'put ''YXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIHByaW50ey5jbHItdmlzaWJsZS1wcmludC1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fX0uY2xyLXZpc2libGUtcHJpbnQtaW5saW5lLWJsb2Nre2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIHByaW50ey5jbHItdmlzaWJsZS1w''@;'; put 'put ''cmludC1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fX1AbWVkaWEgcHJpbnR7LmNsci1oaWRkZW4tcHJpbnR7ZGlzcGxheTpub25lIWltcG9ydGFudH19LmNsci1yb3d7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1yaWdodDotLjZyZW07bWFy''@;'; put 'put ''Z2luLWxlZnQ6LS42cmVtfS5jbHItbm8tZ3V0dGVyc3ttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDowfS5jbHItbm8tZ3V0dGVycz4uY2xyLWNvbCwuY2xyLW5vLWd1dHRlcnM+W2NsYXNzKj1jbHItY29sLV17cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDowfS5jbHItY29sLXhsLC5j''@;'; put 'put ''bHItY29sLXhsLWF1dG8sLmNsci1jb2wteGwtMTIsLmNsci1jb2wteGwtMTEsLmNsci1jb2wteGwtMTAsLmNsci1jb2wteGwtOSwuY2xyLWNvbC14bC04LC5jbHItY29sLXhsLTcsLmNsci1jb2wteGwtNiwuY2xyLWNvbC14bC01LC5jbHItY29sLXhsLTQsLmNsci1jb2wteGwtMywuY2xyLWNv''@;'; put 'put ''bC14bC0yLC5jbHItY29sLXhsLTEsLmNsci1jb2wtbGcsLmNsci1jb2wtbGctYXV0bywuY2xyLWNvbC1sZy0xMiwuY2xyLWNvbC1sZy0xMSwuY2xyLWNvbC1sZy0xMCwuY2xyLWNvbC1sZy05LC5jbHItY29sLWxnLTgsLmNsci1jb2wtbGctNywuY2xyLWNvbC1sZy02LC5jbHItY29sLWxnLTUs''@;'; put 'put ''LmNsci1jb2wtbGctNCwuY2xyLWNvbC1sZy0zLC5jbHItY29sLWxnLTIsLmNsci1jb2wtbGctMSwuY2xyLWNvbC1tZCwuY2xyLWNvbC1tZC1hdXRvLC5jbHItY29sLW1kLTEyLC5jbHItY29sLW1kLTExLC5jbHItY29sLW1kLTEwLC5jbHItY29sLW1kLTksLmNsci1jb2wtbWQtOCwuY2xyLWNv''@;'; put 'put ''bC1tZC03LC5jbHItY29sLW1kLTYsLmNsci1jb2wtbWQtNSwuY2xyLWNvbC1tZC00LC5jbHItY29sLW1kLTMsLmNsci1jb2wtbWQtMiwuY2xyLWNvbC1tZC0xLC5jbHItY29sLXNtLC5jbHItY29sLXNtLWF1dG8sLmNsci1jb2wtc20tMTIsLmNsci1jb2wtc20tMTEsLmNsci1jb2wtc20tMTAs''@;'; put 'put ''LmNsci1jb2wtc20tOSwuY2xyLWNvbC1zbS04LC5jbHItY29sLXNtLTcsLmNsci1jb2wtc20tNiwuY2xyLWNvbC1zbS01LC5jbHItY29sLXNtLTQsLmNsci1jb2wtc20tMywuY2xyLWNvbC1zbS0yLC5jbHItY29sLXNtLTEsLmNsci1jb2wsLmNsci1jb2wtYXV0bywuY2xyLWNvbC0xMiwuY2xy''@;'; put 'put ''LWNvbC0xMSwuY2xyLWNvbC0xMCwuY2xyLWNvbC05LC5jbHItY29sLTgsLmNsci1jb2wtNywuY2xyLWNvbC02LC5jbHItY29sLTUsLmNsci1jb2wtNCwuY2xyLWNvbC0zLC5jbHItY29sLTIsLmNsci1jb2wtMXt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6LjA1cmVtO3BhZGRpbmctcmlnaHQ6LjZy''@;'; put 'put ''ZW07cGFkZGluZy1sZWZ0Oi42cmVtfS5jbHItY29se2ZsZXgtYmFzaXM6MDtmbGV4LWdyb3c6MTttYXgtd2lkdGg6MTAwJX0uY2xyLWNvbC1hdXRve2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0bzttYXgtd2lkdGg6bm9uZX0uY2xyLWNvbC0xe2ZsZXg6MCAwIDguMzMzMzMzMzMzMyU7bWF4LXdp''@;'; put 'put ''ZHRoOjguMzMzMzMzMzMzMyV9LmNsci1jb2wtMntmbGV4OjAgMCAxNi42NjY2NjY2NjY3JTttYXgtd2lkdGg6MTYuNjY2NjY2NjY2NyV9LmNsci1jb2wtM3tmbGV4OjAgMCAyNSU7bWF4LXdpZHRoOjI1JX0uY2xyLWNvbC00e2ZsZXg6MCAwIDMzLjMzMzMzMzMzMzMlO21heC13aWR0aDozMy4z''@;'; put 'put ''MzMzMzMzMzMzJX0uY2xyLWNvbC01e2ZsZXg6MCAwIDQxLjY2NjY2NjY2NjclO21heC13aWR0aDo0MS42NjY2NjY2NjY3JX0uY2xyLWNvbC02e2ZsZXg6MCAwIDUwJTttYXgtd2lkdGg6NTAlfS5jbHItY29sLTd7ZmxleDowIDAgNTguMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjU4LjMzMzMzMzMz''@;'; put 'put ''MzMlfS5jbHItY29sLTh7ZmxleDowIDAgNjYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjY2LjY2NjY2NjY2NjclfS5jbHItY29sLTl7ZmxleDowIDAgNzUlO21heC13aWR0aDo3NSV9LmNsci1jb2wtMTB7ZmxleDowIDAgODMuMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjgzLjMzMzMzMzMzMzMlfS5j''@;'; put 'put ''bHItY29sLTExe2ZsZXg6MCAwIDkxLjY2NjY2NjY2NjclO21heC13aWR0aDo5MS42NjY2NjY2NjY3JX0uY2xyLWNvbC0xMntmbGV4OjAgMCAxMDAlO21heC13aWR0aDoxMDAlfS5jbHItb3JkZXItZmlyc3R7b3JkZXI6LTF9LmNsci1vcmRlci1sYXN0e29yZGVyOjEzfS5jbHItb3JkZXItMHtv''@;'; put 'put ''cmRlcjowfS5jbHItb3JkZXItMXtvcmRlcjoxfS5jbHItb3JkZXItMntvcmRlcjoyfS5jbHItb3JkZXItM3tvcmRlcjozfS5jbHItb3JkZXItNHtvcmRlcjo0fS5jbHItb3JkZXItNXtvcmRlcjo1fS5jbHItb3JkZXItNntvcmRlcjo2fS5jbHItb3JkZXItN3tvcmRlcjo3fS5jbHItb3JkZXIt''@;'; put 'put ''OHtvcmRlcjo4fS5jbHItb3JkZXItOXtvcmRlcjo5fS5jbHItb3JkZXItMTB7b3JkZXI6MTB9LmNsci1vcmRlci0xMXtvcmRlcjoxMX0uY2xyLW9yZGVyLTEye29yZGVyOjEyfS5jbHItb2Zmc2V0LTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC0ye21hcmdpbi1sZWZ0''@;'; put 'put ''OjE2LjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LTN7bWFyZ2luLWxlZnQ6MjUlfS5jbHItb2Zmc2V0LTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC02e21hcmdpbi1sZWZ0OjUwJX0uY2xyLW9m''@;'; put 'put ''ZnNldC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtOXttYXJnaW4tbGVmdDo3NSV9LmNsci1vZmZzZXQtMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtMTF7bWFy''@;'; put 'put ''Z2luLWxlZnQ6OTEuNjY2NjY2NjY2NyV9QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jbHItY29sLXNte2ZsZXgtYmFzaXM6MDtmbGV4LWdyb3c6MTttYXgtd2lkdGg6MTAwJX0uY2xyLWNvbC1zbS1hdXRve2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0bzttYXgtd2lkdGg6bm9uZX0uY2xyLWNv''@;'; put 'put ''bC1zbS0xe2ZsZXg6MCAwIDguMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjguMzMzMzMzMzMzMyV9LmNsci1jb2wtc20tMntmbGV4OjAgMCAxNi42NjY2NjY2NjY3JTttYXgtd2lkdGg6MTYuNjY2NjY2NjY2NyV9LmNsci1jb2wtc20tM3tmbGV4OjAgMCAyNSU7bWF4LXdpZHRoOjI1JX0uY2xyLWNv''@;'; put 'put ''bC1zbS00e2ZsZXg6MCAwIDMzLjMzMzMzMzMzMzMlO21heC13aWR0aDozMy4zMzMzMzMzMzMzJX0uY2xyLWNvbC1zbS01e2ZsZXg6MCAwIDQxLjY2NjY2NjY2NjclO21heC13aWR0aDo0MS42NjY2NjY2NjY3JX0uY2xyLWNvbC1zbS02e2ZsZXg6MCAwIDUwJTttYXgtd2lkdGg6NTAlfS5jbHIt''@;'; put 'put ''Y29sLXNtLTd7ZmxleDowIDAgNTguMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjU4LjMzMzMzMzMzMzMlfS5jbHItY29sLXNtLTh7ZmxleDowIDAgNjYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjY2LjY2NjY2NjY2NjclfS5jbHItY29sLXNtLTl7ZmxleDowIDAgNzUlO21heC13aWR0aDo3NSV9LmNs''@;'; put 'put ''ci1jb2wtc20tMTB7ZmxleDowIDAgODMuMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjgzLjMzMzMzMzMzMzMlfS5jbHItY29sLXNtLTExe2ZsZXg6MCAwIDkxLjY2NjY2NjY2NjclO21heC13aWR0aDo5MS42NjY2NjY2NjY3JX0uY2xyLWNvbC1zbS0xMntmbGV4OjAgMCAxMDAlO21heC13aWR0aDox''@;'; put 'put ''MDAlfS5jbHItb3JkZXItc20tZmlyc3R7b3JkZXI6LTF9LmNsci1vcmRlci1zbS1sYXN0e29yZGVyOjEzfS5jbHItb3JkZXItc20tMHtvcmRlcjowfS5jbHItb3JkZXItc20tMXtvcmRlcjoxfS5jbHItb3JkZXItc20tMntvcmRlcjoyfS5jbHItb3JkZXItc20tM3tvcmRlcjozfS5jbHItb3Jk''@;'; put 'put ''ZXItc20tNHtvcmRlcjo0fS5jbHItb3JkZXItc20tNXtvcmRlcjo1fS5jbHItb3JkZXItc20tNntvcmRlcjo2fS5jbHItb3JkZXItc20tN3tvcmRlcjo3fS5jbHItb3JkZXItc20tOHtvcmRlcjo4fS5jbHItb3JkZXItc20tOXtvcmRlcjo5fS5jbHItb3JkZXItc20tMTB7b3JkZXI6MTB9LmNs''@;'; put 'put ''ci1vcmRlci1zbS0xMXtvcmRlcjoxMX0uY2xyLW9yZGVyLXNtLTEye29yZGVyOjEyfS5jbHItb2Zmc2V0LXNtLTB7bWFyZ2luLWxlZnQ6MH0uY2xyLW9mZnNldC1zbS0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtc20tMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NjY3''@;'; put 'put ''JX0uY2xyLW9mZnNldC1zbS0ze21hcmdpbi1sZWZ0OjI1JX0uY2xyLW9mZnNldC1zbS00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LXNtLTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtc20tNnttYXJnaW4tbGVmdDo1MCV9LmNsci1vZmZz''@;'; put 'put ''ZXQtc20tN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1zbS04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LXNtLTl7bWFyZ2luLWxlZnQ6NzUlfS5jbHItb2Zmc2V0LXNtLTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzMzMlfS5jbHItb2Zm''@;'; put 'put ''c2V0LXNtLTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY2NjclfX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmNsci1jb2wtbWR7ZmxleC1iYXNpczowO2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlfS5jbHItY29sLW1kLWF1dG97ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvO21heC13aWR0''@;'; put 'put ''aDpub25lfS5jbHItY29sLW1kLTF7ZmxleDowIDAgOC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6OC4zMzMzMzMzMzMzJX0uY2xyLWNvbC1tZC0ye2ZsZXg6MCAwIDE2LjY2NjY2NjY2NjclO21heC13aWR0aDoxNi42NjY2NjY2NjY3JX0uY2xyLWNvbC1tZC0ze2ZsZXg6MCAwIDI1JTttYXgtd2lk''@;'; put 'put ''dGg6MjUlfS5jbHItY29sLW1kLTR7ZmxleDowIDAgMzMuMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjMzLjMzMzMzMzMzMzMlfS5jbHItY29sLW1kLTV7ZmxleDowIDAgNDEuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjQxLjY2NjY2NjY2NjclfS5jbHItY29sLW1kLTZ7ZmxleDowIDAgNTAlO21heC13''@;'; put 'put ''aWR0aDo1MCV9LmNsci1jb2wtbWQtN3tmbGV4OjAgMCA1OC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6NTguMzMzMzMzMzMzMyV9LmNsci1jb2wtbWQtOHtmbGV4OjAgMCA2Ni42NjY2NjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY2NjY2NyV9LmNsci1jb2wtbWQtOXtmbGV4OjAgMCA3NSU7bWF4''@;'; put 'put ''LXdpZHRoOjc1JX0uY2xyLWNvbC1tZC0xMHtmbGV4OjAgMCA4My4zMzMzMzMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMzMzMzMyV9LmNsci1jb2wtbWQtMTF7ZmxleDowIDAgOTEuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjkxLjY2NjY2NjY2NjclfS5jbHItY29sLW1kLTEye2ZsZXg6MCAwIDEw''@;'; put 'put ''MCU7bWF4LXdpZHRoOjEwMCV9LmNsci1vcmRlci1tZC1maXJzdHtvcmRlcjotMX0uY2xyLW9yZGVyLW1kLWxhc3R7b3JkZXI6MTN9LmNsci1vcmRlci1tZC0we29yZGVyOjB9LmNsci1vcmRlci1tZC0xe29yZGVyOjF9LmNsci1vcmRlci1tZC0ye29yZGVyOjJ9LmNsci1vcmRlci1tZC0ze29y''@;'; put 'put ''ZGVyOjN9LmNsci1vcmRlci1tZC00e29yZGVyOjR9LmNsci1vcmRlci1tZC01e29yZGVyOjV9LmNsci1vcmRlci1tZC02e29yZGVyOjZ9LmNsci1vcmRlci1tZC03e29yZGVyOjd9LmNsci1vcmRlci1tZC04e29yZGVyOjh9LmNsci1vcmRlci1tZC05e29yZGVyOjl9LmNsci1vcmRlci1tZC0x''@;'; put 'put ''MHtvcmRlcjoxMH0uY2xyLW9yZGVyLW1kLTExe29yZGVyOjExfS5jbHItb3JkZXItbWQtMTJ7b3JkZXI6MTJ9LmNsci1vZmZzZXQtbWQtMHttYXJnaW4tbGVmdDowfS5jbHItb2Zmc2V0LW1kLTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1tZC0ye21hcmdpbi1sZWZ0''@;'; put 'put ''OjE2LjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LW1kLTN7bWFyZ2luLWxlZnQ6MjUlfS5jbHItb2Zmc2V0LW1kLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtbWQtNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC1tZC02e21hcmdpbi1sZWZ0''@;'; put 'put ''OjUwJX0uY2xyLW9mZnNldC1tZC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LW1kLTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtbWQtOXttYXJnaW4tbGVmdDo3NSV9LmNsci1vZmZzZXQtbWQtMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMz''@;'; put 'put ''MzMzMyV9LmNsci1vZmZzZXQtbWQtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjY2NyV9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuY2xyLWNvbC1sZ3tmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjE7bWF4LXdpZHRoOjEwMCV9LmNsci1jb2wtbGctYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRo''@;'; put 'put ''OmF1dG87bWF4LXdpZHRoOm5vbmV9LmNsci1jb2wtbGctMXtmbGV4OjAgMCA4LjMzMzMzMzMzMzMlO21heC13aWR0aDo4LjMzMzMzMzMzMzMlfS5jbHItY29sLWxnLTJ7ZmxleDowIDAgMTYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NjY2NjclfS5jbHItY29sLWxnLTN7ZmxleDow''@;'; put 'put ''IDAgMjUlO21heC13aWR0aDoyNSV9LmNsci1jb2wtbGctNHtmbGV4OjAgMCAzMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyV9LmNsci1jb2wtbGctNXtmbGV4OjAgMCA0MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6NDEuNjY2NjY2NjY2NyV9LmNsci1jb2wtbGctNntmbGV4''@;'; put 'put ''OjAgMCA1MCU7bWF4LXdpZHRoOjUwJX0uY2xyLWNvbC1sZy03e2ZsZXg6MCAwIDU4LjMzMzMzMzMzMzMlO21heC13aWR0aDo1OC4zMzMzMzMzMzMzJX0uY2xyLWNvbC1sZy04e2ZsZXg6MCAwIDY2LjY2NjY2NjY2NjclO21heC13aWR0aDo2Ni42NjY2NjY2NjY3JX0uY2xyLWNvbC1sZy05e2Zs''@;'; put 'put ''ZXg6MCAwIDc1JTttYXgtd2lkdGg6NzUlfS5jbHItY29sLWxnLTEwe2ZsZXg6MCAwIDgzLjMzMzMzMzMzMzMlO21heC13aWR0aDo4My4zMzMzMzMzMzMzJX0uY2xyLWNvbC1sZy0xMXtmbGV4OjAgMCA5MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY2NjY2NyV9LmNsci1jb2wtbGct''@;'; put 'put ''MTJ7ZmxleDowIDAgMTAwJTttYXgtd2lkdGg6MTAwJX0uY2xyLW9yZGVyLWxnLWZpcnN0e29yZGVyOi0xfS5jbHItb3JkZXItbGctbGFzdHtvcmRlcjoxM30uY2xyLW9yZGVyLWxnLTB7b3JkZXI6MH0uY2xyLW9yZGVyLWxnLTF7b3JkZXI6MX0uY2xyLW9yZGVyLWxnLTJ7b3JkZXI6Mn0uY2xy''@;'; put 'put ''LW9yZGVyLWxnLTN7b3JkZXI6M30uY2xyLW9yZGVyLWxnLTR7b3JkZXI6NH0uY2xyLW9yZGVyLWxnLTV7b3JkZXI6NX0uY2xyLW9yZGVyLWxnLTZ7b3JkZXI6Nn0uY2xyLW9yZGVyLWxnLTd7b3JkZXI6N30uY2xyLW9yZGVyLWxnLTh7b3JkZXI6OH0uY2xyLW9yZGVyLWxnLTl7b3JkZXI6OX0u''@;'; put 'put ''Y2xyLW9yZGVyLWxnLTEwe29yZGVyOjEwfS5jbHItb3JkZXItbGctMTF7b3JkZXI6MTF9LmNsci1vcmRlci1sZy0xMntvcmRlcjoxMn0uY2xyLW9mZnNldC1sZy0we21hcmdpbi1sZWZ0OjB9LmNsci1vZmZzZXQtbGctMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LWxn''@;'; put 'put ''LTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtbGctM3ttYXJnaW4tbGVmdDoyNSV9LmNsci1vZmZzZXQtbGctNHttYXJnaW4tbGVmdDozMy4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1sZy01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LWxn''@;'; put 'put ''LTZ7bWFyZ2luLWxlZnQ6NTAlfS5jbHItb2Zmc2V0LWxnLTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtbGctOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC1sZy05e21hcmdpbi1sZWZ0Ojc1JX0uY2xyLW9mZnNldC1sZy0xMHttYXJnaW4t''@;'; put 'put ''bGVmdDo4My4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1sZy0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NjY3JX19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsuY2xyLWNvbC14bHtmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjE7bWF4LXdpZHRoOjEwMCV9LmNsci1jb2wteGwtYXV0b3tmbGV4''@;'; put 'put ''OjAgMCBhdXRvO3dpZHRoOmF1dG87bWF4LXdpZHRoOm5vbmV9LmNsci1jb2wteGwtMXtmbGV4OjAgMCA4LjMzMzMzMzMzMzMlO21heC13aWR0aDo4LjMzMzMzMzMzMzMlfS5jbHItY29sLXhsLTJ7ZmxleDowIDAgMTYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NjY2NjclfS5jbHIt''@;'; put 'put ''Y29sLXhsLTN7ZmxleDowIDAgMjUlO21heC13aWR0aDoyNSV9LmNsci1jb2wteGwtNHtmbGV4OjAgMCAzMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyV9LmNsci1jb2wteGwtNXtmbGV4OjAgMCA0MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6NDEuNjY2NjY2NjY2NyV9LmNs''@;'; put 'put ''ci1jb2wteGwtNntmbGV4OjAgMCA1MCU7bWF4LXdpZHRoOjUwJX0uY2xyLWNvbC14bC03e2ZsZXg6MCAwIDU4LjMzMzMzMzMzMzMlO21heC13aWR0aDo1OC4zMzMzMzMzMzMzJX0uY2xyLWNvbC14bC04e2ZsZXg6MCAwIDY2LjY2NjY2NjY2NjclO21heC13aWR0aDo2Ni42NjY2NjY2NjY3JX0u''@;'; put 'put ''Y2xyLWNvbC14bC05e2ZsZXg6MCAwIDc1JTttYXgtd2lkdGg6NzUlfS5jbHItY29sLXhsLTEwe2ZsZXg6MCAwIDgzLjMzMzMzMzMzMzMlO21heC13aWR0aDo4My4zMzMzMzMzMzMzJX0uY2xyLWNvbC14bC0xMXtmbGV4OjAgMCA5MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY2NjY2''@;'; put 'put ''NyV9LmNsci1jb2wteGwtMTJ7ZmxleDowIDAgMTAwJTttYXgtd2lkdGg6MTAwJX0uY2xyLW9yZGVyLXhsLWZpcnN0e29yZGVyOi0xfS5jbHItb3JkZXIteGwtbGFzdHtvcmRlcjoxM30uY2xyLW9yZGVyLXhsLTB7b3JkZXI6MH0uY2xyLW9yZGVyLXhsLTF7b3JkZXI6MX0uY2xyLW9yZGVyLXhs''@;'; put 'put ''LTJ7b3JkZXI6Mn0uY2xyLW9yZGVyLXhsLTN7b3JkZXI6M30uY2xyLW9yZGVyLXhsLTR7b3JkZXI6NH0uY2xyLW9yZGVyLXhsLTV7b3JkZXI6NX0uY2xyLW9yZGVyLXhsLTZ7b3JkZXI6Nn0uY2xyLW9yZGVyLXhsLTd7b3JkZXI6N30uY2xyLW9yZGVyLXhsLTh7b3JkZXI6OH0uY2xyLW9yZGVy''@;'; put 'put ''LXhsLTl7b3JkZXI6OX0uY2xyLW9yZGVyLXhsLTEwe29yZGVyOjEwfS5jbHItb3JkZXIteGwtMTF7b3JkZXI6MTF9LmNsci1vcmRlci14bC0xMntvcmRlcjoxMn0uY2xyLW9mZnNldC14bC0we21hcmdpbi1sZWZ0OjB9LmNsci1vZmZzZXQteGwtMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzMzMl''@;'; put 'put ''fS5jbHItb2Zmc2V0LXhsLTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQteGwtM3ttYXJnaW4tbGVmdDoyNSV9LmNsci1vZmZzZXQteGwtNHttYXJnaW4tbGVmdDozMy4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC14bC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY2Njcl''@;'; put 'put ''fS5jbHItb2Zmc2V0LXhsLTZ7bWFyZ2luLWxlZnQ6NTAlfS5jbHItb2Zmc2V0LXhsLTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQteGwtOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC14bC05e21hcmdpbi1sZWZ0Ojc1JX0uY2xyLW9mZnNl''@;'; put 'put ''dC14bC0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC14bC0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NjY3JX19LmNsci1icmVhay1yb3d7d2lkdGg6MTAwJX0qLDpiZWZvcmUsOmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveH1wcmV7bWFyZ2luOi42cmVtIDB9''@;'; put 'put ''cHJle2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDAsICNjY2NjY2MpO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO2Jv''@;'; put 'put ''cmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSl9cHJlIGNvZGV7d2hpdGUtc3BhY2U6cHJlfWNvZGUuY2xyLWNvZGV7Y29sb3I6I2MyMWQwMDtjb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTgwMCwgI2MyMWQw''@;'; put 'put ''MCk7cGFkZGluZzowO2JhY2tncm91bmQ6MCAwfXVsLmxpc3QtdW5zdHlsZWQ6bm90KFtjZHMtbGlzdF0pe3BhZGRpbmctbGVmdDowO21hcmdpbi1sZWZ0OjA7bGlzdC1zdHlsZTpub25lfXVsOm5vdChbY2RzLWxpc3RdKSxvbDpub3QoW2Nkcy1saXN0XSl7bGlzdC1zdHlsZS1wb3NpdGlvbjpp''@;'; put 'put ''bnNpZGU7bWFyZ2luLWxlZnQ6MDttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO3BhZGRpbmctbGVmdDowfXVsLmxpc3Q6bm90KFtjZHMtbGlzdF0pLG9sLmxpc3Q6bm90KFtjZHMtbGlzdF0pe2xpc3Qtc3R5bGUtcG9zaXRpb246b3V0c2lkZTttYXJnaW4tbGVmdDoxLjFlbX11bC5saXN0''@;'; put 'put ''Om5vdChbY2RzLWxpc3RdKS5jb21wYWN0LG9sLmxpc3Q6bm90KFtjZHMtbGlzdF0pLmNvbXBhY3R7bGluZS1oZWlnaHQ6LjlyZW19dWwubGlzdDpub3QoW2Nkcy1saXN0XSkuY29tcGFjdD5saSxvbC5saXN0Om5vdChbY2RzLWxpc3RdKS5jb21wYWN0Pmxpe21hcmdpbi1ib3R0b206LjNyZW19''@;'; put 'put ''dWwubGlzdDpub3QoW2Nkcy1saXN0XSkuY29tcGFjdD5saTpsYXN0LWNoaWxkLG9sLmxpc3Q6bm90KFtjZHMtbGlzdF0pLmNvbXBhY3Q+bGk6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9dWw6bm90KC5saXN0LXVuc3R5bGVkKTpub3QoW2Nkcy1saXN0XSk+bGk+dWwubGlzdC11bnN0eWxl''@;'; put 'put ''ZCxvbDpub3QoW2Nkcy1saXN0XSk+bGk+dWwubGlzdC11bnN0eWxlZHttYXJnaW4tbGVmdDoxLjFlbX1saT51bDpub3QoW2Nkcy1saXN0XSl7bWFyZ2luLXRvcDowO21hcmdpbi1sZWZ0OjEuMWVtfXVsLmxpc3QtZ3JvdXA6bm90KFtjZHMtbGlzdF0pe21hcmdpbi10b3A6MH11bDpub3QoW2Nk''@;'; put 'put ''cy1saXN0XSkubGlzdC1zcGFjZXIsb2w6bm90KFtjZHMtbGlzdF0pLmxpc3Qtc3BhY2Vye21hcmdpbi10b3A6MS4ycmVtfWgxOm5vdChbY2RzLXRleHRdKXtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1oMS1jb2xvciwgYmxhY2spO2ZvbnQtd2VpZ2h0OjIwMDtmb250LXdlaWdodDp2YXIo''@;'; put 'put ''LS1jbHItaDEtZm9udC13ZWlnaHQsIDIwMCk7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcyxBdmVuaXIgTmV4dCxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1oMS1mb250LWZhbWlseSwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZl''@;'; put 'put ''dGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZToxLjZyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OjIuNHJlbTttYXJnaW4tdG9wOjEuMnJlbTttYXJnaW4tYm90dG9tOjB9aDI6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWgyLWNvbG9yLCBibGFjayk7Zm9udC13ZWlnaHQ6MjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1oMi1mb250LXdlaWdodCwgMjAwKTtmb250LWZhbWlseTpNZXRyb3BvbGlzLEF2ZW5pciBOZXh0LEhlbHZldGljYSBOZXVlLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1mYW1pbHk6dmFyKC0t''@;'; put 'put ''Y2xyLWgyLWZvbnQtZmFtaWx5LCBNZXRyb3BvbGlzLCAiQXZlbmlyIE5leHQiLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZik7Zm9udC1zaXplOjEuNHJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6Mi40cmVtO21hcmdpbi10b3A6MS4ycmVtO21hcmdp''@;'; put 'put ''bi1ib3R0b206MH1oMzpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItaDMtY29sb3IsIGJsYWNrKTtmb250LXdlaWdodDoyMDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWgzLWZvbnQtd2VpZ2h0LCAyMDApO2ZvbnQtZmFtaWx5Ok1ldHJvcG9saXMsQXZlbmlyIE5l''@;'; put 'put ''eHQsSGVsdmV0aWNhIE5ldWUsQXJpYWwsc2Fucy1zZXJpZjtmb250LWZhbWlseTp2YXIoLS1jbHItaDMtZm9udC1mYW1pbHksIE1ldHJvcG9saXMsICJBdmVuaXIgTmV4dCIsICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmKTtmb250LXNpemU6MS4xcmVtO2xldHRlci1zcGFj''@;'; put 'put ''aW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWg0Om5vdChbY2RzLXRleHRdKXtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1oNC1jb2xvciwgYmxhY2spO2ZvbnQtd2VpZ2h0OjIwMDtmb250LXdlaWdodDp2YXIoLS1jbHIt''@;'; put 'put ''aDQtZm9udC13ZWlnaHQsIDIwMCk7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcyxBdmVuaXIgTmV4dCxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1oNC1mb250LWZhbWlseSwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBO''@;'; put 'put ''ZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZTouOXJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MS4ycmVtO21hcmdpbi10b3A6MS4ycmVtO21hcmdpbi1ib3R0b206MH1oNTpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItaDUt''@;'; put 'put ''Y29sb3IsICM2NjY2NjYpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItaDUtZm9udC13ZWlnaHQsIDQwMCk7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcyxBdmVuaXIgTmV4dCxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1o''@;'; put 'put ''NS1mb250LWZhbWlseSwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZTouOHJlbTtsZXR0ZXItc3BhY2luZzouMDFlbTtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRv''@;'; put 'put ''bTowfWg2Om5vdChbY2RzLXRleHRdKXtjb2xvcjojMzMzO2NvbG9yOnZhcigtLWNsci1oNi1jb2xvciwgIzMzMzMzMyk7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1oNi1mb250LXdlaWdodCwgNTAwKTtmb250LWZhbWlseTpNZXRyb3BvbGlzLEF2ZW5pciBOZXh0LEhl''@;'; put 'put ''bHZldGljYSBOZXVlLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWg2LWZvbnQtZmFtaWx5LCBNZXRyb3BvbGlzLCAiQXZlbmlyIE5leHQiLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZik7Zm9udC1zaXplOi43cmVtO2xldHRlci1zcGFjaW5nOm5v''@;'; put 'put ''cm1hbDtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWJvZHk6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXAxLWNvbG9yLCAjNjY2NjY2KTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXAx''@;'; put 'put ''LWZvbnQtd2VpZ2h0LCA0MDApO2ZvbnQtc2l6ZTouN3JlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MS4ycmVtO21hcmdpbi1ib3R0b206MDtmb250LWZhbWlseTpNZXRyb3BvbGlzLEF2ZW5pciBOZXh0LEhlbHZldGljYSBOZXVlLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1m''@;'; put 'put ''YW1pbHk6dmFyKC0tY2xyLWZvbnQsIE1ldHJvcG9saXMsICJBdmVuaXIgTmV4dCIsICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmKTttYXJnaW4tdG9wOjAhaW1wb3J0YW50fWJvZHkgcDpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItcDEtY29s''@;'; put 'put ''b3IsICM2NjY2NjYpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItcDEtZm9udC13ZWlnaHQsIDQwMCk7Zm9udC1zaXplOi43cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWJv''@;'; put 'put ''ZHkgLnAwOm5vdChbY2RzLXRleHRdKSxib2R5IHAucDA6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXAwLWNvbG9yLCAjNjY2NjY2KTtmb250LXdlaWdodDoyMDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXAwLWZvbnQtd2VpZ2h0LCAyMDApO2ZvbnQtc2l6ZTox''@;'; put 'put ''cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWJvZHkgLnAyOm5vdChbY2RzLXRleHRdKSxib2R5IHAucDI6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXAyLWNvbG9y''@;'; put 'put ''LCAjNjY2NjY2KTtmb250LXdlaWdodDo1MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXAyLWZvbnQtd2VpZ2h0LCA1MDApO2ZvbnQtc2l6ZTouNjVyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OjEuMnJlbTttYXJnaW4tdG9wOjEuMnJlbTttYXJnaW4tYm90dG9tOjB9Ym9k''@;'; put 'put ''eSAucDM6bm90KFtjZHMtdGV4dF0pLGJvZHkgcC5wMzpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItcDMtY29sb3IsICM2NjY2NjYpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItcDMtZm9udC13ZWlnaHQsIDQwMCk7Zm9udC1zaXplOi42''@;'; put 'put ''NXJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MS4ycmVtO21hcmdpbi10b3A6MS4ycmVtO21hcmdpbi1ib3R0b206MH1ib2R5IC5wNDpub3QoW2Nkcy10ZXh0XSksYm9keSBwLnA0Om5vdChbY2RzLXRleHRdKXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1wNC1jb2xv''@;'; put 'put ''ciwgIzY2NjY2Nik7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1wNC1mb250LXdlaWdodCwgNjAwKTtmb250LXNpemU6LjZyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OjEuMnJlbTttYXJnaW4tdG9wOjEuMnJlbTttYXJnaW4tYm90dG9tOjB9Ym9k''@;'; put 'put ''eSAucDU6bm90KFtjZHMtdGV4dF0pLGJvZHkgcC5wNTpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItcDUtY29sb3IsICM2NjY2NjYpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItcDUtZm9udC13ZWlnaHQsIDQwMCk7Zm9udC1zaXplOi42''@;'; put 'put ''cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWJvZHkgLnA2Om5vdChbY2RzLXRleHRdKSxib2R5IHAucDY6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXA2LWNvbG9y''@;'; put 'put ''LCAjNjY2NjY2KTtmb250LXdlaWdodDo2MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXA2LWZvbnQtd2VpZ2h0LCA2MDApO2ZvbnQtc2l6ZTouNTVyZW07bGV0dGVyLXNwYWNpbmc6LjAzZW07bGluZS1oZWlnaHQ6LjZyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWJvZHkg''@;'; put 'put ''LnA3Om5vdChbY2RzLXRleHRdKSxib2R5IHAucDc6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXA3LWNvbG9yLCAjNjY2NjY2KTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXA3LWZvbnQtd2VpZ2h0LCA0MDApO2ZvbnQtc2l6ZTouNTVy''@;'; put 'put ''ZW07bGV0dGVyLXNwYWNpbmc6LjAzZW07bGluZS1oZWlnaHQ6LjZyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWJvZHkgLnA4Om5vdChbY2RzLXRleHRdKSxib2R5IHAucDg6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXA4LWNvbG9yLCAj''@;'; put 'put ''NjY2NjY2KTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXA4LWZvbnQtd2VpZ2h0LCA0MDApO2ZvbnQtc2l6ZTouNXJlbTtsZXR0ZXItc3BhY2luZzouMDNlbTtsaW5lLWhlaWdodDouNnJlbTttYXJnaW4tdG9wOjEuMnJlbTttYXJnaW4tYm90dG9tOjB9LnRleHQtbGln''@;'; put 'put ''aHR7Zm9udC13ZWlnaHQ6MjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1mb250LXdlaWdodC1saWdodCwgMjAwKX0udGV4dC1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudH0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50fS50ZXh0LWxlZnR7dGV4dC1hbGln''@;'; put 'put ''bjpsZWZ0IWltcG9ydGFudH0udGV4dC1qdXN0aWZ5e3RleHQtYWxpZ246anVzdGlmeSFpbXBvcnRhbnR9aHRtbDpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItZ2xvYmFsLWZvbnQtY29sb3IsICM2NjY2NjYpO2ZvbnQtZmFtaWx5Ok1ldHJvcG9saXMsQXZlbmly''@;'; put 'put ''IE5leHQsSGVsdmV0aWNhIE5ldWUsQXJpYWwsc2Fucy1zZXJpZjtmb250LWZhbWlseTp2YXIoLS1jbHItZm9udCwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZToxMjUlfUBmb250LWZhY2V7Zm9udC1mYW1p''@;'; put 'put ''bHk6TWV0cm9wb2xpcztzcmM6dXJsKGRhdGE6YXBwbGljYXRpb24vZm9udC13b2ZmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGQwOUdSZ0FCQUFBQUFGUWdBQk1BQUFBQW04QUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCR1JsUk5BQUFCcUFBQUFCd0FBQUFjZk5INTVrZEVSVVlBQUFI''@;'; put 'put ''RUFBQUFUUUFBQUdJSDFRZjhSMUJQVXdBQUFoUUFBQWNhQUFBT2RqeStlamxIVTFWQ0FBQUpNQUFBQUNBQUFBQWdSSFpNZFU5VEx6SUFBQWxRQUFBQVRRQUFBR0JvUHF6clkyMWhjQUFBQ2FBQUFBSnNBQUFEbm5kREQ3RmpkblFnQUFBTURBQUFBREFBQUFBOEVZNEJqR1p3WjIwQUFBdzhBQUFH''@;'; put 'put ''T2dBQURSWjJaSDEyWjJGemNBQUFFbmdBQUFBSUFBQUFDQUFBQUJCbmJIbG1BQUFTZ0FBQU5uTUFBR2dVeEZJZ04yaGxZV1FBQUVqMEFBQUFOZ0FBQURZTFlZZ1VhR2hsWVFBQVNTd0FBQUFoQUFBQUpBZDJCREpvYlhSNEFBQkpVQUFBQW9nQUFBVHV1UEkvRkd4dlkyRUFBRXZZQUFBQ2NnQUFB''@;'; put 'put ''bnFKYW5Cd2JXRjRjQUFBVGt3QUFBQWdBQUFBSUFLRUFlbHVZVzFsQUFCT2JBQUFBWUlBQUFOV0xkQ0U5WEJ2YzNRQUFFL3dBQUFEb1FBQUJpR1hGajJLY0hKbGNBQUFVNVFBQUFDQkFBQUFqUmxRQWhCM1pXSm1BQUJVR0FBQUFBWUFBQUFHOW5oWW1BQUFBQUVBQUFBQTFGRzFhZ0FBQUFEVHda''@;'; put 'put ''MkdBQUFBQU5TK3B2VjQyZzJNUVFxRVFCREVFa2YwTUxQb2Y3eXBML0RvZlhmVi96L0FJZ1JDMFRRQ0xSNmNkRlJralZzbzdIelR2MUQ0QjdtNDA0OERPbG9wTmx2NjQ1U2VYWExUNTFzWHpTYStXM0FGM0FBQUFIamFqVmNCYkZiVkZmN091ZmUrdi8wTFdFb0xDQjBEVWhreFRXV0VTVVZHaVdN''@;'; put 'put ''RnNWUERtRUVIWmx1Y1k2MVE3QmpaaURGS0hacWw2WXpERHBFMHFBeU1Oc0JRc1NLeXBxdk9PVWRrWTZZaFlGd0h5RFltMDduRkNQTDJ2Zk4rNkY5b3QvR0ZqOE81OTkxN3p6bmY3Ym1GQU1oaU1oWkM1dFhXTFVZQlBEMklZemorSTFDNGhtODNyVVRwaW04Mk5hQjhSY09LQnM0Ry9jbG9PaU5o''@;'; put 'put ''eCsreUdJMEptR0llaHdyVXVZNTBORnBscTByVWlvZ2Z5ZkRWL0dLYytRSktMMEJRRzdlU0EyYWpCWjhpbG5GUUhvUHpaS3djUVJHRzhXUi9qN3ZqN1hGdmZCUkQvSWsvR0hMa3Q0TjYrN2gzL3YrUHh6OGRjb1gzaGh3WitqeC9qUGNPTWJJOTdvdjNKYmpJMzh1L3Ywa3cyQjV4SzdPa21NaE1U''@;'; put 'put ''MkcyUGtjb3FnaUhxd2lQNlVUQUY0Z0lNNGtNcmlFS01Jc29aRzVuczFKckNNSDkrQkZuUGtnRVpyeUYvaGNJd1l1RTRDVkNjWkR3K0FQaGNaUUkrRE1SNFRnUjRUMGl3bWtpZ3crSURNNFFoYXplcDF3dEpySlNMTVVvbEJJcElaZEtLWGtjSzV2bDJ0T29rZ3ArY3lVaGR1NzB4R29uZG5aaWJ5''@;'; put 'put ''Y09tRWNVb0pZb3hBSWlpMFZFRVJyeGZhNlFSQkpaSkpGRkV2QVRQTXI1YlVRaGZvWk5uUDhFZnM3NTI0a2k3Q1F5MkVVVTRCZEVCcnVKQWp4SFpQQThVWUE5UkNFNmlVTHNKN0xvSXJMb0pyTG9JYko0bFJEOG1oRExUb1IzaUNMOGlVanpvcFlYdGJ4NHkwdXd2QVRMaTdlOGVNdUxsekV5aHZt''@;'; put 'put ''NlhDNG5KemtLWExXS0dackNHbGV4dHROWjA1bk16Q3htcEJHcmNEZWE4RDJzWmkzdnh6bzA0d0ZtNFVGR3Y1TVJQY2RLdnNnS0htVGxqckppeDFtcDB6ekpHYnRaeGR5M05MbGZlcS9kdzlla2lYRVBwN3IyVVhldDhiOEdVYXVOREhZSExveWNTakRJbDZlSHZCdW56aXVlOS9wbzNCdzNYenlT''@;'; put 'put ''M3JwNGM3eDUwSkcvMkRlS2N0T0VtQ1lVWHlNY2JpVThiaU1DbGhJUkZmRW81eVJxRUZPRG1ob1VIVVNFSFVSa2xSYXJ0RmlseFNvdFZsZkZNY0xoQk9Gd2tuQTRTd1NjSXlJWktTTloxMUV5aWx3bVplU2tvbUlWRlJrdjQ3bStvaEtYRVVVWVNRd3pwWXNwWFUzcExxZjArVVMrMHIzRkUrWEZr''@;'; put 'put ''ekdsdTV6Uyt6WHVMU3B2VVdVc3F2TktUeldlcW5zdk1iU3VrMmk5YVZaekVTYktkUlpueHZUclRMK2FpemxSc2VZaVQ3U3NlZkhuSzlwWkZqSXlUYTdoN3NsUHIxcEd1SWoxdXBWeExXVWtiWXhrSXg1ak5FL2dTVHlGcll4b095UFp3ZHZZeWROMjhaUTlQTjB4MXVBa1QzYU9KeGpGM2Nad2wv''@;'; put 'put ''RmNjWUxwV1RIQ09rcUpxYU9FdTlUUUVyTnIySW1PUkJQSWZjeC90NnlYRm5sRU5rcTdiSlZuWkpmc2tYM1NMYS9MQVRra2grVmRPU0duNUVQNVdNNnAxNndXNjJndDE4azZWYXQwaHM3U3VWcXJkYnBJbCtqdGVvZlc2eXBkby9mb09uMUlXM1dEYnRJdHVrMDdkTGQyNm43dDBUZjBMWDFiajJp''@;'; put 'put ''Zm50VDM5U1A5eE1GRmJwZ3JjV1BkQkZmaHJuVFQzTlZ1dHJ2T0xYQTN1c1h1TnZjTmQ2ZTd5elc1SDdoNzNRUHV4KzVoMStZMnV5ZmQwMjZIZTk3dGRWM3VOZmVtKzczcmRlKzRZKzZ2N2gvdTMrNnNWMS9nUi9oU1A4NVA5Rk44cFovdXEvMGNQODh2OURmN1cveFMveTIvM0svMHEvMWFmNTlm''@;'; put 'put ''NzF2OEkzNmpiL2RiL1ROK2w5L2o5L2x1LzdvLzRBLzV3LzVkZjhLZjhoLzZqLzI1NEVNMkZJZlJvVHhNRGxORFZaZ1Jab1c1b1RiVWhVVmhTYmc5M0JIcXc2cXdKdHdUMW9XSFFtdllFRGFGTFdGYjZBaTdRMmZZSDNyQ0crR3Q4SFk0RXZyQ3lmQisrQ2g4RWlHS29tRzhIVTI2azl4c1BOKzR4''@;'; put 'put ''bmhEd21nMGJqUFAybjUvam04d3JqUysxbmhsd2xwbTl2WEdjNHdybEQ5VDVRcmpxNHlyRTBhOWNidStURzR3ZjZYeGJQUDNHcDh4ejBUang0MG5HVWZHQzF3OStTbmpwc0ZaZjVVWFk0MzVMMkY4MlhpTGNXTS95N0kwZHJQdk1uN1ZlTU9sbkdiQTdFdjVldU1LN2ZwZnJNOE95RlhYWUl5NXhv''@;'; put 'put ''OGIxL2N6czlkbDJmdnZuT2F6YTFDZWxNZE5lV2NlWU9mVnRObjhWNWcvMzU1dk9Xd3hlMWxlNXRNb0J0ZzJtcW9pMzU5bXRUcTFiVTZxbWJRNmFkU3BQbk4yenAvTWFUTzczYTA1cjk2Y3hnNmEzWlBZdVpxbUdWdWJVM0s0eUorZUljM2JBYlBYV28wT0pmTmRxc0FiYks5ZW0yTTNJdFh0QUgr''@;'; put 'put ''bDJXZHlOZHA1UWRYNS92UUdYWnVubWJRaStmWldzNytlK20yKzNRc3RNNy9wSWFlMFNYbjJIT1BJUEVQWmZ6UDdib3V1MXV3M3pjNWZ1U2IrSmJrcTNuOVJwZkozck03ZDdxNy9nd2ZPVkh6VzNxWGd1MnNxczVLOFRqMjdkaVc3WVBMQ2p2QjV2c1F5bUlGcTlyQ2tjNDlnMy80aWUzclN1VWZh''@;'; put 'put ''RzdYRU92Y28vbDYxa0gyb2ppakRUZXh6bzlucGJ1SHZQa3VJY3V2bG4ySFhXOGF1MWNpMzIwUjd2YzFrUjIvbmVsdlkrYjVpdmUrcjdINHZzME8rZ2dQNERsOTBwL0ZEZTFWdXhEOGw0REYyNHZIb3NKN2F5Zk9LWEdhL20wV1FlTDJwOEQ3Y1NWN1BibGVFc2R5cmdoRk53OVU4OVhVODVZMVl6''@;'; put 'put ''TkVYVEx1L016NXNiSGVHR3Uzbmc4YkxqYmNaOXhtZk5TN0NsN2pQY254WE1sSWdoWktWSWhrdUl5NDkwWDhBdGxLWFdBQUFBQUVBQUFBS0FCd0FIZ0FCUkVaTVZBQUlBQVFBQUFBQS8vOEFBQUFBQUFCNDJtTmdackpnbk1EQXlzREMxTVVVd2NEQTRBMmhHZU1ZUkJqTmdIeWdGQnl3TXlDQlVP''@;'; put 'put ''OXdQd1lIQmdYVlA4elMvNDBaR0ppUE1xb3FNREJNQnNreHNUS3RCMUlLREV3QXhsY0tOZ0FBQUhqYXRaTlpVSTVSSE1aLy83ZDlFU29VOWZiMmFkTkdvaFJGOXFYSXZwU3MyYkt2MlJyckVFTkZVc2llSktNWkUxTlR0aHZ1dURWampMN1BsVnZ1REIzSFYwd3p6TGh5WnQ1ejNuUE9uT2VjZVo3''@;'; put 'put ''ZkgzQ2g2d3RCZEk5VTZwazQ1NjVTck1jbGpNT05nWlJ3aXpydTBrZ1R6YlRRSmg0U0lJTWtUQVpMbkNSSnFxUkxwa3lWSE1tVFFpbVNFaVBWZUdXOGQ0a3lqNXV0NWhQemkrVnVCVnJCVnFobHM2S3NZVmE2ZGQvbUgvbE5LWDJIeFkwZTJvOXA0NW40U244eHhTYXhraWdwa2lZWmtpWFpraXNG''@;'; put 'put ''c2tFMmErMlh4bHV0ZmNoc01kdk56NVpoQlZoQlZvaFRlNmlWOWt0YmZWUXYxSFAxVkxXclZ2VklOYXVIcWtrMXFnWlZyK3JVTlZXcmFsUzFxbEtWcWtLVnFUT3FWSjNvZk5PWjFabjAvWk9qM0ZIZ3lIZkUyQWZhL2V3K2RpKzdtOTNvK05yeHVlUHdoNUIzeVYxZS9hZm1ibmc3aytDUFd3U2or''@;'; put 'put ''OC80aDBiWFNSZGNkWGJ1ZU9DSkY5NzQ0RXN2L09oTkgvcmlUd0NCOUtNL0F3Z2lXR2M4U0tjZWlrbVlUaVFjRzRPSklKSW9vb2xoQ0xIRUVVOENpUXhsR0VrTUo1a1JqQ1NGVkVhUlJqcWpHVU1HbVl6VnpHUXhuZ2xNWkJLVG1jSlVwakdkR1dTVHcweG1rY3RzNWpDWGVjeG5BUXRaeEdKTldo''@;'; put 'put ''NzVMS1dBWlN4bmhYNy9EbmF5bTJJT2NaelRsRk5HQmVjNVJ5VlZWSE9SR2k1eGhjdlVjcFhyM05RVS9XVDBOZzJhcFh1YXBwOXRGYXUxSGRGczRHeTNOK3Raby90ZG5QanRWdUZmSEx4QVBadFoyV05sTFpza1JvOWIyTTR4N0Rna1hQTVpLVkc2QWlLNG8zY2VvR21XQkYwUDhkMW5pcHhoeExL''@;'; put 'put ''TnZXeGxIM3M0d0VGZFMvczV3bEc5ZFpoU1RuR1MxN3FhZXJGT3ZNUmJmTmdvZnBwL3p4K1F6YXJvZU5wallNQUNISUhRa3NHU2FUMERBOU51SmxZR2h2OGh6TkwvalpsMi8vL0NkSUJKOFArWC8zNGdQZ0RJUFEwaWVOcXRWbWwzMDBZVWxieGxJeHRaYUZGTHgweWNwdEhJcEJTQ0FRTkJpdTFD''@;'; put 'put ''dWpoYkswRnBwVGhKOXdXNjBYMWY4Szk1Y3RwejZEZCtXdThiMlNhQmhKNzIxQi8wN3N5N00yK2JlV015bENCajNhOEVRaXpkTllhV2x5aTNlczJuVXhiTkJPRzJhSzc3bENwRWYvVWF2VWFqSVRlc2ZKNk1nQXhQTHJZTTAvQkMxeUZUa1FpM0hVb3BzU25vWHAweTA5ZGFNMmEvVjJsVUtGZng4''@;'; put 'put ''NVF1QkN2WC9iek1XMDFmVUwyT3FZWEFFbFJpVkFvQ0VTZnNhSk5tTU5VZUNacGovUnd6NzlWOUFXK2FrYUQrdWg5aVJyQ3VuOUU4by9uUUNvTWdzTWkwZzBDU1VmZTNnc0NodEJMWUoxT0k0Rm5XcS91VWxTN2xwSXM0QWpKRGh6Skt3aSt4R1djM1hNRWE5dGhLUE9BdlNKVUdwV2Z6VUhxaUta''@;'; put 'put ''b3dFTTlsQ3doeTJRL3JWclFTK0RMSUI0SVdWbjNvTEE2dGJkK2hyS0llejI0WnFTUlRPUXlsSzVGeDZVYVUydGdtc3dFRGxKMTFxRWNKZG5YQWE5ek5HQnVDZDZDRk1HQkt1S2hkN1ZXdG5nSERxN2l6K1c3dSs5VGVXdlFudTVnMlhQQVFkeWdxVFJseFhYUytESXR6U3NLQ2t4MHZVUjBaTFNZ''@;'; put 'put ''bUJnNVlUbE5ZWlZqM1E5dTk2SkRTQWJVRyt0TW90aVh6d1d6ZW9VRVZwMUlWMm93V0hScFNJQXBCaDd5cnZCeEF1Z0VOOG1nRm8wR01IQnJHTmlNNkpRSVphTUF1RFhtaGFJYUNocEEwaDBiVTBwb2ZaellYZ3lrYTNKSzNIUnBWUzh2KzBtb3lhZVV4UDZibkQ2dllHUGJXL1hoNEdBV01YQnEy''@;'; put 'put ''K2N6aUpMdnhJZjRNNGtQbUpDcVJMdFQ5bUpPSGFOMG02c3RtWi9NU3l6cllTdlM4QkZlQlp3SkVVb1AvTmN6dUxkVUJCWXdOWTB3aVd4NFpGMXVtYWVwYWpTa2pObEtWTlorR3BTc3FOSUREMXcvRG9TdENtUDl6ZE5RMGhnelhiWWJ4NFp4TmQyenJPTkkwanRqR2JJY21WR3l5bkVTZVdSNVJj''@;'; put 'put ''WnJsWXlyT3NIeGN4Vm1XUjFXY1kybXB1SWZsRXlydVpmbWtpdnRZUHFOa0orK1VDNUZoS1lwazN1QUw0dERzTHVWa1Yza3pVZHE3bE5OZDVhMUVlVXdaTkdqL2gvaWVRbnpINEpkQWZDenppSS9sY2NUSFVpSStsbE9JajJVQjhiR2NSbndzbjBaOExHY1FIMHVsUkZrZlUwZkI3R2dvUEhiQjA2''@;'; put 'put ''WEUxVk44Vm91S0hKc2MzTUlUdUFBMWNVQVZaVlNTM0JFZnliQTQrcmx1YWMxSk9qRWJaODJKaW85R3hnRSt1enN6RDZ0UEtuRmErL3NjZUdibFlTTzRuZnNhNTNsajhnK0RmNHNYWlNrK2FVNXdjS2VRQUhpOHY4TzRGVkhKb2RPcWVLVHMwUHcvVVhHQ0c2Q2ZRVTJNeVlJb2locmZmT1R5U3JO''@;'; put 'put ''Wmt6VzBDaDlQQkRvcjJzRzhhVTZNSTZVbHRLaEpHZ0V0ZzY1WjBEVHE4K3l0WmxFS1VXNWl2N043S2FLWTdFVVp6SUFwS09TbXNiRHM3NlJFV2xnN3FlbjAwY0RsUnRxTG5pdzFXMVp4aGIwSDcyUEl6U3g1TjFKZXVDa3A3VVdiVUtlOHlBSU91WkU5dUNhQ1cyanZzb3BpU2xpb0lqNEliUVg3''@;'; put 'put ''N1dORUppMHpneTZCSW1SeHNySVA3WW9kT2FLQ2RnTGZldElxNzl0QzdjOTE4aUF3bTUxdTUwR1drYUx6WFJYMWFuMVYxdGdvVjYvY1RSOEgwODZ3c2VZWFJSbFBMbnZmbmhUc1Y2Y0V1UUpHVjNhLzdrbng5anZXN1VwSlB0c1hkbm5pZFVvVjhsK0FCMFB1bFBjaUdrV1JzMWlsRWMrdlczZ3lS''@;'; put 'put ''VGtveGtWekhCZjAwaDd0aWxYZm8xM1lkKzJqVmx4V1ZMSWZaZEJWZE5adXdqYytYd2pxUUNvS1dxUWlWbmc2WkQ2Ym5acndzWlM0TEVYY3MyVFhSZlFkUENFZDRyODR4TFgvNjl4eUZOeWl5aEpkYU5jSnlRZHRIeXZvclNXN2s0Y3FSbWZ0dkd4bm9oMUpOK2dhZ3A1SUxqaitYdUF1anhYcEZP''@;'; put 'put ''N3o4d2ZNWDhGMjV2Z1luUWErcXVnTXhCTG5yWUlFaXlyZTBrNm1YbEI4aEdrSjhFWFZRck1DZUFuQVpQQ3lhcGw2cGc2Z1o1YVpVd0ZZWVE2RFZlWXdXR01PZzNXMWc2NTNHZWdWSUZPalY5V09tY3o1UU1sY3dEeVQwVFhtYVhTZGVScTl4anlOYnJCTkQrQjF0c25nRGJiSklHU2JEQ0xtVkFF''@;'; put 'put ''Mm1NT2d3UndHbTh4aHNLWDljb0cydFYrTTN0UitNWHBMKzhYb2JlMFhvM2UwWDR6ZTFYNHhlay83eGVoOTVQaGN0NEFmNkJGZEJQd3dnWmNBUCtLazY5RUNSamZ4akxZNXR4TEluSTgxeDJ4elBzSGk4OTFkUDlVanZlS3pCUEtLenhQSTlOdllwMDM0SW9GTStES0JUUGdLM0hKM3Y2LzFTTk8v''@;'; put 'put ''U1NEVHYwMGcwNy9EeWpiaCt3UXk0WWNFTXVGSGNDOTA5L3RKanpUOTV3UXkvWmNFTXYxWHJHd1Rma3NnRTM1UElCUHVxSjIrVEtyelo5VzFxWGVMMGxQMTI1MTMyUGtiWlRPNkxBQUFBQUVBQWYvL0FBOTQyclY5Q1hoYlY1bm9PZWRLdXBJbDJiNWFMY3Vick5YV2FtdXp2TWpYUzd3dmNiekZT''@;'; put 'put ''UnhuYzV5MEtWM1NsaTRocExRTkZBcVVBV1pZaHI0dTBLRk1TNUsyZEtIdEZDaFEycUhMREcrQWVjTUg1UTB6TEcvWUJqb3diWDA5L3puM1hsbTI3S2J3ZlMrMUpQdnFyUC81OStVVWxhSEZ0U1QrRk9kR0hLcEFkdVJDWHRTRTBpaUh1dEFRY29tTzNueG5lemFUYkE3NjZxdXJIRUtsUVVOUVdT''@;'; put 'put ''S3M5UWdlM3A2MGUrM0p0RGVkVFBQc2s0ZGYxYWYwR2YyazM4Q1R0UHE3MG9aMXlDYlQrRlBTczdqclAzdDY3K3Z0dmUrKzNrYVBwN2UzOTBpdjU5YjdqalI2am5qdXUrOCt6NUVqdHc0TTNIZDBvT0ZGN21kOUhyOEhmbTQ2MWpndzREc0l2dzE0T25zYmo5elE1b3p2dlBMS0I2KzhjbWQ4eFJQ''@;'; put 'put ''M3dBOUNCRTJ2L1I2ZEkrZlkzdnhpSThJWUxTS0V5a2NSSWR5U0JuT2NreHZUYURRVm1uSy9VS25sbldGcmt2TTZBdWxVSnRucXNOdDAzdjNENW9URzdiWlpxNnV0NUp4a2VkRnRzN2pkRnBzYm9iVTFOSWdmeFdQa2s1V05xQXloU2c3ZUgwRjAzaUM4WFFmenVsRTl1bUgwdkhmbmJqRlVvU05J''@;'; put 'put ''eXhGTUVGNDJZb09oZkxTODBzenh2SDdSVkViMGVtRlVnd21wSUdOdU1VQWZzQytSbmo5YTJrOXB1Q0RXSVZSZlYxc0QwN2lyWFZWT1dMQlZLUHpqYThPWVQvSmUzcHRscjJ5U3ZaSThlL0gwUy95YnpJM21HMk50c2J2Z2RhMzUyc3c3emRjcGY5MWdmdml1ekYzNGE5OU5Qd2IvMHQ5TlB3Ny8w''@;'; put 'put ''dDhGU01iV0hpVVI4Z2ZrUVNFVVI1MWlMdWIzMWRWV3U1dzJzNm5NWU9hSURpT09qQ0RDa1pzUlJ2Z1dDbWEwQkhCeG9yR21wcVo0VTl4aEZ5eGEzaEgybFdQQWtYUU1CN01PcHhERDZWUWVad0ZaSEU0ZW5nbDEySTRjem5RNWZHVFNxVUJRSUpIVWtSMWl6OGxvYU9meG93ZGE5K2JFS3haRHZw''@;'; put 'put ''bm81ZStROW9zN09rYXdlV1owNnVhNU5OZmR5MmNqclRzcmNXWDFycUhrYkZyWDJXV2NiZlZHZU9sTjkrNUpYSk8yL1o0ZmJwV3lJNm1XRG9mMEpxeE5pK0pyLzBYK2xYd0pNTVVLcHhaSEhlaUYwZk5WY0hKaEk5YVdZYXpUNGhXa1EzcURUbjhNYVRSb2lXQ0tTV1k0RW03SnhCT09xK0RHM0tQ''@;'; put 'put ''bmc5QWwvcFpkRURSbC9mZ2xFK1o1Snc5bm50eWlCeUhRbG5aRFcvZGFXQkFEaVVSRGc4MkdVS0lqMFo1Sk5jUWJZcUdBcmQ1V1YxMWx0UWlWc0pueVFEbHZEMXRrNENaYkFhYTJjdXpGU2V5MVVLQjZHM1YybXlPSk5uMmZ4K3ZmL2ZWQU1EUVlpUTdDZXhSL3FGTnE3cndtMXg2SnRMV0g4ZFJB''@;'; put 'put ''S0RnWWxiK0t0ZEdIdVFoZWpFN0VXM1pHbzVPSmxva28zclU2aFQ4NGtNNE1EbVRUQTlMeDZFUkxZaUlXbll5M1RFWVRBNW4wSVAwSzlzZWhwclhma3hQa01ZQjlHUGhQWHV5SVIvMTFOVzZYMDRETE9GTFBrSXBpUGw0Q01uYU1hb3V3S2hKcGFJaWtJNm1HY0VOenVGRUhtS1VONnJ5TmRFL1o0''@;'; put 'put ''bzNCTjg1TTFxbmpuWWp1ekNudjBwSU5CT0hQT3B3a2lhVjlKenVQNU83eDFFWEdFNUhoOE54YzVzcElVeWFSdkZyNmRGZHQvVVJmcmprMGZqcC90bm1vbVQrdzNMS1F1MmtnT3VpTGpJVERJODM1VVovNFR2RkExZkhoYThqeDlsaE5WNmdoRzI3dVdqMDNkOHRZMS82UTZBVmlBSDZCUGtFK2lV''@;'; put 'put ''d29PbnJlQVloaXBDeUpuUzhHSktoRTlNOTUrQk12VXRJWlgzakU3aU93SFd1QkkxVmc3Mng1bFNBNHkva2cvbzlEM3NvcXArQTlsSUhXK2JVNUhDTlB3ZGk2aDAxYW5BZ3pOcFoxQXZuWW5Qem5MN25rc0hkdTRaeDMxNDl2dU9ISHUvMjd2MzdWRHk0RVlDS2c1emxjcC9iVFFUOG5JN2FzRExE''@;'; put 'put ''WXVZVTU3MkhvZk11RkgxejFkZWpIdXROK0hmZ200SDFmUXJOSUZMdjhHSlBKSGQyeFJwZE5xMGQ0RjlZaWJvVERXSU9SRnFNVkhkWnF5UkpGYU8wWTdHNFd6UXdQWmRKTndkb2FOMCt4RTFiYWpYbmdCbkJxUWZnam0rbkd3WUQ4VzdMVjZhakh3U0lJWkxMQUp0aHp1dzA2VldDSDA4RitaNzNo''@;'; put 'put ''UHlkajNWODJHM1RlaW9aeXJjYk1hOHFjMFhBa1ppL1Q4R2F0eHRMczB4bk13S3owdXNwS0xtVFRhczA4VnlhRWRSR25JK3dvNDNpelR1TUlPWXc2dmRtQWJ6THJhMXFhYTh4VlBHZlNhNHk4V1JBc0ZpTnYxT2hOWEZsalRYTkxqZDVzMWp0YTQ2Wnlyc0hJbVhSYUUxOG1FR2dpbUhpVFZtZml5''@;'; put 'put ''aHNzK25pclEyK21CNHY2MEhGU1RsTElpQUtBRXhvT2EyWUJsNEV6WUE0dEE3blRvOWZnY2NiREszVjhkUmg3cWZSTVV5bWFKT1hmekQvM1hQNmJPUDVOK2dzZGIzTHROSG9NN1VUbHlDa0M2YUpCRmFXQU1Id1dpajJBODQzcklvMmZESnF0SU5HY05mV2g0OUVFRlczK3VscXhsWTdWaG42TE8z''@;'; put 'put ''QU1xTEZLdEROa25GMUhScUdTb2FMSDdtbkRuTFNLWTExc1A4TWdZejhIOHh1cHRrQ2ZBSmZEMklucFFSdFJtWStEQXk2V3FFY1VhV29xU0ZLODlwdTFSL0hIeVU5aFhrRXNwNE9DNU1CWHl4TlNWb1VuQjZTN0I4aFAzM3daTWZuYUFiemlHSGtTMkZzOWlvaE5nRmhzeHpKWHdDRFkyUUlxZ1o0''@;'; put 'put ''cTZ5dnJxaHlNRCtwZ0lack5mSTZrVXpIc2JhUkVBZ3dBNDNjUERyNTdhdXIwNE9EcHFmekJUT1pnUG44b2t6bVVOKzI5WjJYbDdyMTc3MTVadVdkdjU5alp1ZG4zam82ZW5aczdPOFpnVUEzdmI0QzgxeUczV0FWSHlRRzhSbVN1alFFL3h3UXJBeDBmekNZRjc1TzMxRDZZRXNtQjJaYVRxMU9J''@;'; put 'put ''OVcrQlRlbGhQeTdVTEFhTlpiQWR3QVpDUmhnNEdidWpDc3NpWWpKR2NQcUNHcjRxblBWVC9rVlh6d2NMSEs0Q3cvbTB3S24wTnUxb3VtSm5MSHI5Y09laDNOak10L0JKcWFudFgvS1hwcHA2QTVmN3hmN1VZcTd2MU5DRDhobUdBSjVhbUQrTXVzVk9kelhNNVFPQ2hoWEFNa0NTUXdzQ2NvbmpO''@;'; put 'put ''RXVBb0xBWWtKZExsS2Fkakp6RHFObm45L2o5UE8rQ2s2YWNJOW5LV0dzWXA1MnRHWG1OT2o2WVVibXdBdnhYVGtXaXZxUDV4Rmo0ME55T2diRjl6Y09SekVKVGVQSDkrU1B0QTIyZFU1Mlg5SnA2MnB1VFdYOVBVNzYzRS9kMyt2TytkQ3AwS2pHWDd0b2xsTS8yWmZlbUdENkU0QzBGOEM5RFpo''@;'; put 'put ''UVZtMDBZVUhCRXA0VjlZQVQ2NmxFQUlST2xGWm94bzlGb05nSU5DNVpLdWw2L0o0aVRBdFZZdldrQjQ5dWt6eHZ3elBpbGw0clN6eDlzd3k5SXVZNEhmNFp2a003SzU5UUdjSExDUEExVTczRUFleE1xT2FKQkdFNEszcEdHQVlrc3lwSjdJNUFhVUgyallBMlVBRWsrUDBwVmZLYUFsajkrVjZT''@;'; put 'put ''NWVhVTlQaEdKVENRbVIxc04rSVBTUTN6ZlhPZHlaLzVFcjZrOUdZOGx3MlBSeUZBb1c0V1h1bDV2U1IvSTk2eTBNMWgwd2hyOWNKWnUwT043eFc0Z0lvNEVxb2hXUTBaMHdHSTBXazZ6Z2dwaWxJY0ZxdHlpcGdhaG1xYWFrSzhST2xkNy9RRTlLTVJJV1JMbElCVExuSHlBa2tzdGhqOHM2Z2Jv''@;'; put 'put ''a1NieGU0NTJkWjNvUFgxbThOVFlPMlo5bzNPNS9abnF5M3I5RTVIWVJMei9zTGx5M3hCK01IT3dPMytzNjhrN1YvN213SzdXNGFuYjUyenBidWxNZkx3NVB0dzAzclY3V1laekIyekV3T2lwWHF3QkdZSVpOVkUraEpudUR0b3ZhRGNjTEE5NzBoNDdNSWlucEhmamw2VHZESk9ydWxwVzMwUDFp''@;'; put 'put ''UlRBb1liQklRemo5WXM5TmgwQmJqdkNGd0ZCNFJwNkFBS0dzMkpjSXhLaGNJaDBSTnBUclRYaG1tWVpHaEVEWldPVWUyUTJxUlFLZkFxd2tGbUpVL2s3V0U0WVovbko1VDJ6dlozRDNjYzZPbzkxajdYM3p2WmMwZGMwRW8rTVJFQjdpSStFV25ZbFV0T1J5SzUwWWxlTHFXVSsyN1hmN3BqTHBx''@;'; put 'put ''WmpzWmxVYnRibTJOK1puVy9CdDN0eWZsOUhZMk9ITDVCcklOSUZYejRRNnZaaTdPME9CZkkrdE5YNTExWEMwUnYwWUQ4UTJMb1dDRmxMVm9BVU9OZ3Z4emxHaTZTRmV2Nk5EWFRIQWErZm5iOURQbjVRMFNuQ2RtSDZod0lCQzRYRk92UDgzS2FUNzJMNHNJT2RmQXZEQXZMa3hwT1hzVUU2UTA5''@;'; put 'put ''ZXhnRjVEMHltNE5kQmZzQ3lSczlIUVZOeVVxYk9WaXJJMXB0V3R0N2NWRkRCZDhDa1ZvcWZMNGdXa3draGs5UGtzRlF5UWFSVE5BMVZFSkV0aEpKTitjUjMxbGlwZExMV1NIT3FuQUo3ajhsYS9EcllleFd3RGg0SnlJUy9nQXdYTUg0Y2YrRjhNa3h4TjRzV3NVU21BWGQxRCtzSTZGUFd0Tjl1''@;'; put 'put ''eHZZc2ZrNjZBWi9GWFpsWDgwOC9uV2Y3N0VOZkplWDRYd0JiZWRRbzFsTWNwMlllMkU0Y21WVllQdUdvTGxCSk9UN2xFdlMvUHZ6M1VwcTkvaVYvWng3bUhFT0x4S3JPeWNHYzJTaE9hKzNhTVh3VzVueE95bjBhWm53MTh5cWQwNzMyZS93dHdJOHE1RU5aTWVVd0dTbUx4SlROY3pEeDZTS1pR''@;'; put 'put ''eG0rRm1zMFRzMll5K1h5dWJ6K0tsOVFSeGVpeXMxMXJzNU11V0k1LzB6NzNxU3ZweWs3N3cvdk85dSttRXJ1YmU4eHErQzlXaHZzOERaMitwTHg1cE10TThuSXpwenhQVVdtTlYxblpPMTJiZ2U1RjNXakNWakwrVHJBQWFIUlEvUmNnNFZvOUowZFlHZHlJKzcxWndiMTJZTGNPR1EwRUEzSUFS''@;'; put 'put ''M2x5cm95MEMzNXcwaGhkc0JFOUhwdUNUWW82S25OVmcvdG8yQmNhN0JoSHIzZFRrM1VOZ1NZNlEyY2Z1V2luYldBcVMxVUpuQkl1N0o5TDU3WHpTT2RqbDlpM1NjWHdNYXJFa1dFeEFseGZHZ0FnSkVQQkpvQ3ZrREF4THRMdEpuR1FMQ0lPbHNkenF5VFp5WmM2MGJtbEd4bGRvR1hxdEhNenFP''@;'; put 'put ''UEhVbmNmLzdZVlYrNTRzaURSNU5Uc1dpbnZtNjJKVDdjM0hPOHZYWFFZbTR2aTRUcTY5b0RpNS9adS96RmxmMTM3Y3NmemxyYTM5RWYzR01nN2VuNHprUlA2dXFqRHg2NS9DdFhIdnpzMHNSbEdiQkRFNUdKWlAvSnZwaTNWOXY2VCs2R1FIaWhkL1pqOHl2bmx2ZCtackhHNC9ZM3ZMWThhaXRM''@;'; put 'put ''NXpNTHFiWUJkdVlOOFBaMTRQczhTUEt3R0RKZ0FNd0lZQ0NncEFha09CV3JZRlJRalVxdjE1ZnB5MlFWdVFxa09NOU0ycUFSazZ4MDdlQUFqdE9mdy9mZmY4ODk1TnpxMUt2NGpIUUdnTDRmeGo4RzQxZUNwdFdJdXNSMjRQd3dndzZvRHVTamRobk9WbkVROFZqV3hPbGM3bXFMNEttdmJuUTNW''@;'; put 'put ''amtFbDhVVmFkQXpSWGlqQVBCZ3F1cUF6bU8zS3I4SSszRnJkaTZSakxmM3BSWTdwSy9oVU1mb2VOZFBmdE0zTjlmM0czSXVNdEdTSG5kV0w3Wmw1aEw0MXI1MHF1L1gwcVBqSFIxajBtOHBINkh5NndOQXA3VW9Kb2FyWGNZeWlpUWpLcnQyYkhCaHdZTmFWQlB3QjZnTFM3TisvbnpwbWVQc3ZR''@;'; put 'put ''Y08zTHM0Y0tZbEVyb2tOMzdMeE1RdDQ3bExRcEdXTXdNbU9MbWxldzltV3lOTmlhbjNUazYrYnlyUkhHMXBnM09oY0h1RTZWZDJaclVVd01RTWNnVk1KcVBOWXJTYjdJRUc2dHV4cWxnWnhsa0YvU2hFZm43SmZZdUw5MTN5ODUvUDN6WStmdHY4L2VUYzdyOCtmUGd6dXp1RzM3TnIxMDNEcTg4''@;'; put 'put ''eCtUOEo4OFZnUGlPS2l4R1ZLMUpkU3JNSW9xdThXQnRtVm9aUjluaUJhbVdsL0ZHUVgzZmc2NlQzNFRzbEQvNFJ1ZXExdkNSMWtYTmRoZkhUTUw0Qk5Za0JkWHpLNmRpb3Fvb0JYeGlRZ1k3TWVCNGIyY3ZHUFNYZDBvUC9uUTM2VlhWTWVsNTN3bmw1VUZwc0JhMExjZldFYUxSTWlkZHFFRU11''@;'; put 'put ''WmdNN3FDYktXQ3hvRzZBUkJyeXltZWNSTmhMdnBzTkxlL0VIc0xYbGp1RkZkb0REZDhBQlh0OGxIMkQ2Uk5OMzhHSHB2K001K1FqYkVsSDFDUDJlODZpdzU2c1lUSU9pVDFGWGwwRkhwdnVsZnFrS3RCbVdtTzRXWGtsNEoxZUowcUlvNG5zcE9lRnV1bTNwSmR3cWo0cyt6SHlzVnVyQVdMZDVa''@;'; put 'put ''SE1SREo1SlVhUzlxSjBFc3VjWmFDdFFMR0xtQmNOb3BpeVRKUTZReWNuQUxxQkttMThEM1lzMFpWZ0dKYk1IVHpaRW5YdGJ3djBCRWF3elUzY3lIczFGZHJiaWY1UmlmWmQwd2h6N1lLZ3IyRDRieEZxRFhrdVlkTVBNODhiSm5sT3J4U0xMMDZTQWt3YWdDUkJkKzBSODZhejBLazVOUzcrN0d0''@;'; put 'put ''WXJuUVNkK3pucC9YamsxRXNNZnYwd0xvRnh0VlFuWll1bW96RTZrRUduUlZwQm9JdjJBNTRrQlVLa1hyRUxVRzcxUTZ3L3BhRmZySytMMzJKZE5rRmRsd0dNRXE5Z2dCUFlMMklkMW9taTlMcjBPbDJXRGYvSDZoUUpzczkvVnNmOVM0YkxkYUtiSjZSa1ZFdGhWQXpMOHNwalBnNGpEdEZqZVlJ''@;'; put 'put ''TXduaURxMDlRL2t0eCtIZi9QK3hxbWVuc3YvdkFnYnYzajk4OE1YSHp1SXk0Q3NzNWVPL1MwbWNQZGs2OWIzTHl2Vk15M2pKNVFISDJJT3pOQkh3SExHTllCWkFxaDZtYlpOMlJEMXNzTjlzc1pudTVYUWcwNktnVDMxUGdQWGF2eXBhRlNWdzljR1ZQejVVRC8wZkVGZk1uVHN5L1RNNjFIYzZE''@;'; put 'put ''SEpOd3g4emc0S3owZkRFTWJHQlY1c1FNOWF0cmlRN01QT2FCNURDSGg5Zk5wMkxmdHQxdUQ5bURzVUNRTW1HUTVFNStnelNHRlpGc01PdmNKSXJKN3lKTlkwMDc0MWQyTGFvd1dwdTRwdW02Qmw4QlNManEya1J2WWtjZ1hBQ1c5UDM4Y3VKWThGQ3FHRnhGOENxSDlZRDhKTlFCcDVxbXk2Q0tL''@;'; put 'put ''T3hOSVhlZnp5TUlWc3A3WUxWV2J4QnNZSUZCVHB0VVlFWU9YamIvNk1qRHo0a01kRkxzWlFZMmZNdlY1Ukw4WStEN05JV2M3RWQ4alVUSVV5aEk1WlhEVHUxaVFyVktGVlRVeVZza3I0SW80SXY0S0tnb2pTc3FTaUNvUW11ZCt6bWNDazc5OHYzcDBKRmIweE5OZTQ5ZWZWbkhTczh0SjBMaDQ5''@;'; put 'put ''bllVTk9lbzFkZW1Uc3hZc3lsV285NE83MlpyaXIzOUhoMlQvSlFhM1BjMitWcmFYTzVkKy9NTGlSbFBoZ0ZHQTB6SFVQMjFSVE1TdG01b3FqYTJBdDJwUmVveGYwclV2TXJFY3pLTG9XTzV3QS96a0ovTy9LSWRZcERIK1BpcmRtUnplYXpxYUtZOHEyTkxBelhuaGtVc3d6enhNRXpVNmFSVzJi''@;'; put 'put ''d0o2V1Z2dU1kSGNmNzZHOHp0NHpJYTFYMUlSMmRTOHZzWU9DYUNzT1V1UTZvL0RMWG9Yd00rQWI1dXZRUEEvQ0RUZGhFdVM2ODdpSUhZQ3cvbUVrYVJrc3dWaG5sKzhBb2FGaUppWEcyZWVBVWxrb3RsYUpKTjZZL25OZUl2ZjZoYnp3eitKV3ZELzI4NXh2ZjdJSGhuaUw5N0RWRmRxOStYbDRu''@;'; put 'put ''eUZCeU0rTnR3QnNOT2hnYWpwNnluL0pSTE9PYXhXSVJLRnhobFRDa2dZMk9UMkhkNUk5K05JbDU2YjhuZi9UcUpKNlg3c2MrNlFkNEh1K0dkNTg4dGdYR1BnTmo2MUd0V0szamdBZ0xERTd4QkZnRTZnbFF4b1FqQzBtLzJQblRuMDlJLzY4UFYrRy9rajRQb3gyWGZrYkhhb2V4UkZYdVUzaXV1''@;'; put 'put ''OWtLdm9XQ204MGlzQlZuWlJjRENQOTIvSUMwRjc4aFRlTUxxNjhuU1hkWGN2V3JzdXlmV3ZzZ2JpTS9mSnRXWEJJUUMxNVRQejEzN3Fma2g2MnJWdXA3WFh0ajdWRjgxelkrVUE1MFcrMEFYcEpkb0JpMXdIeFZoZmxrLzl3eW9tb1o5ZGZTK2RENmZFNWcrbWw0dGNCMFArMGh2Mng5OHh3ZFBv''@;'; put 'put ''TS9neCtVY2V1QzdraS82QUR1enJ5V01EUDE0RjZ0ZUZndTZGQy9OUW5zZ2ZkK0wzTlgrMDAzNTBBSy9lclZWK21hcGJWM2tsMXI1Mkc2QmpiR05qNWpPZ1FQQUNSa1p2V0JuVG41WEx1SmlONGtMME5mSit0cmdwNUQ4TTNWRmhESDhxeFpwN2U3OThZcytVckZoMlgrMWdyNnd5K0lnS29CNDNh''@;'; put 'put ''SzQxV1kwemhCSUFpZ3hkZlZham1kVmtQTldLMk9hR1Z2SmRYaVhZeFdSdlZZcDFPVkxqZVltTzZBMisrcGg1RmNQci9YYWdBNElZY2RBRlhzNm1LMkViVndMYUIrcWVFd2ZQcEUzbjBpdSt1U3pHTDd4TkxBem9GcDEvNEYxeVhsczVNOXV5YzZpSEROUWVrYnV5S3RlMGRhSnlMMTlyNTlzV1Ny''@;'; put 'put ''NU02M1RWZjN0Q2E3NUpnMHlZTjhzWUFGMGkxMlZwUVJyWWJ4eWNyUmdsdkd4WFNvRGM0NXF4VWhhNlBWNDNaQlQyRGJtNXh6UVlwVFFyRlBUaFc5SHp1Uno1L283VDVjbjgvWEgrNE96U1FTTThuMGRDdzJuU2JDNEkxalk2Y0dPOVBMNUVucDM5S2RVazNib2M3T2cyM1U3WDB3QzJlVUFIai9C''@;'; put 'put ''dUM5dFEzaTJ0NEdjYnlsRGZMYkd3WUhieGhLTHZyRDdxRmdkbDg2dlM4YkduYUgvZnRUcHFGM2pZeWNHZ3I1bW1zYmNnYzdPZzdsUEhYTi9pWjY5aG1BbTJjZGJnTEg0RWFoeFFESFZHdmxySG5tejFNVTdHSzRXUUplZ2NJTkt3ZTl2a3FCYkpiTEhncXVYaFY0TnpHSUpSbjB5Sk9yTzViVG5Z''@;'; put 'put ''T254c1p1Qk9CaDkrcFZXUXF4VE52QnpzNUQxRjRDdUJFZndNMko2cWlWQ1R5R0kwd1FFMDVEbGd2TGM0M3FpdlNIcWlxRXF1cXFhdDNWOEpjRERBTzZVcDhNc1dJdHdsTkhra1RIZTJDeCtNZ0JkN0RoK3ZiKzZ3WjNYTE5qN0IwZDBxZzJNNXVhdUxRTVg2czdNQm4xMVRaN28wT254a1p2SEJ5''@;'; put 'put ''K2RTRTkzNEwvZG5ubjFCRkdmeUFQOEJSNUJhVFZIckdzQXV1MGxSanB5SWpzREtsQk9wMTJDVFNHS21ad28wWFFmbVRIRzh0UXFBWmxWd2QwdGxMNjVZSlk1dld5MkJYUHUyVmU1Nlg4aHptR21QTllaMy9zMWx2ek16UDlxVlNrd1JHbzloRnRUa3JoYitjRzIwYzhNVWV6UjZiMStOb01xUUVZ''@;'; put 'put ''MGxqOGtMaWpycExvdElvZkUyZ1pHSjZPckZENmhvbEJzYUZ1R1ZmQm1XbEZZdzBnTytWd09JeFFIL0Q3ZlpUR3NhQ1FDN01xTWh1OG1ZQUY2UklzcU9tK2NxanpTbDlOdzJMTHdyRzZGYkgzMHE2dVMzdDdqdGJkT3B0SXpLYVQwL0g0ZEpKb3BkYmVsZlpBZld1dForL2svblM3ZU1YQWppdkVY''@;'; put 'put ''UHFRdENjeGx3WDd2bVV1RGRCbmNCK0h0ejhBSHR0cHBNSWkrN1laRG9PeXhyeHRyaUp6REZRSndlYTFVZnVUMGpxQVVuSFhDQXE1NDhzV1d2SVQrZWhJT0orM0w3WVJvWFZQVG5vRTkvZE1CM3FEMG1OQTE2K0ZNd3llM2ZEK2NmSVZrTkVWMUFJc3VGT3I2TUVKbzZvMVhWRnVOakYzcVhhVHU1''@;'; put 'put ''UUhFYkxiNWJKWTRBVzhoRnppc2dqVjFZTEZ0Yno2Qm95Lzl0VGFCUG9JRzk5TmNiNEMrSEk1MXNCcGFZdG00amlHSnhyZ2NocU5XelBHWExSdVU3WFRZUlhZckh5SmsxWTVLcVk4NmJ3enlncmVFYTBvTS9zRnR6ZmZuMXBmeXBzL01mQnBMZDlVVHpLckw3UU5NM2dEU3dEcWV4Skc5NG9OQmcz''@;'; put 'put ''UUc2ZXlXN29hVlQ4UnJFemFZeXJvR0M4RjJGYi9ZT0xMeS9rOGJwckNWZExQZm5YMGZRRE9XaHlWNVJjOW52ZkR1S3JkVzFsaTk0NEJsSUJWeUcyNUlPQ3lGNlhFbG9acTJlN1ZhZ1ZHWExvbE1BWjFPdGVvaHNiOTVIUDNva2F2WVBWYXZUWURVRkhSMGVzMi9KSzB5M2dMNytTKzZWaCtxRTJj''@;'; put 'put ''eWcvU3Q3eDFLdDArWjYvYzMxbUVFaFA1OVUraUhXdUtkNlpBSkJWd1V0aUVrOEtmZ1pQMnQ0R1QybG1Ha2dxZkhJUjVOOW1icm92YW00NjN0amRmT3pVOGZHcHc4TWJoNFJzSE00dlo3R0ltUzkrenBwRjNEUTJkb2hJRzVFeXUvWEF1ZDZpOS9WQ3UvVkM3dko1cDREbDVXRStKYkJhS1pmTzZX''@;'; put 'put ''S1lBc3VLTHltWVZNSCtXYkpaK1RTNHNsOGhtS2c5blFCNEtXOGhEb1VnZXJvdkNVWmt2YmljUGhZdHh3cmVRaDlyVlNTeXNDOFJsS2JSQkhtSTBEZmkxQUdzMTBTdzhPVHFyNHRlNkpnSENRN0RKT3JjbGs3UVhNT3B2VGd5MDcwMENHYjdTazR0UHA2VWZFZTBsMUk0RDNlUnBHRE93cGIzcDJt''@;'; put 'put ''eHZCcERmRnk2Mk56UEY1cVpEa1V6VTJpVHMyTDU5VmRTemJ5RTkyRGV3ZnpJKzFSby8wRnkvYzZTbHIydG5kakRjTXBzeU5mbGl2UzMrWU5UdTdzczA5L3JyM1ltV3FLK3hxVnJ3NWNMaC9vRE1JL3l3eGlueVVaRG5jVEhpeERxMmI4TGRURmtpV2FUT1U0Q0JUcWRxQUV4dVdodXA0UFRMZXFp''@;'; put 'put ''ZzVIMEFSNkp1L0V3V1Q5bGFxMVA5TXpQNTk3ekhWMjJwTjlvcmhaRjJQSlA3MElkeTBnT2VabE1aNDAwdzczOFJyVXpQSE0wdUdkRUNkNkd6VWYwSVVlSkNhcEtHSGRtOU5pL3pjUmJwUlpUZHlsYTVnUCtMa25HYlN0UnczRzhBQlFOUjR6SHBLVWJVZUZqZUwralZ4RWEwYWg2RWFxbXB1b0Zn''@;'; put 'put ''WVJhRlZUWXQzVHNlZjJ6SHExa1FuaVA0VVNwRE1MQTl4Rm1oZjZtTktyeTFqZXJ0dmUwdk1oOTVmKytEK1E5K0tBOGpUdUNINkd2MURYeS9ORit3cGZFZllXeVdkMVBHYTdDR3NqbHE2Y0RZSENseWdJS3RTdkhFQXhhUE5aaDBacE84RlorNzk5N2hiMzFsK05PZkhuN211ZTkvSCt0WFgzeHhW''@;'; put 'put ''Zm9qSGJkdWJZeTRZRnlCd3Rxb0o3QmtqTUVBVm9ZdW9LR2JVenliRnB1WG9hR01oZDJZWTdzb3gveGhmMld0dDdhcHZQNWYrNS81VXQrdnFzYXlqd2paQ3Flcmo1aWxMdnpzNnBPZFdTenZCZGduZmdubTNNYU9GZDdhanMzZ1B1bFpmSWYwRkI2UWpyWGdUM2EwU0NzZGJOencyaDY4bHp3QkhB''@;'; put 'put ''Vmc1R0p5b0JMam9VYVdWUVFONWhXQ3hXaFNjRkF4cDRuaExnenNQMDExS1pxOTZTd25kcWNjRk9GcEdKekhwbGwvSXRzVzk4K09hRHZ5THV6ekI3ellsZS9RM2hucVQzOHdGVzJKcFc3UDlBZjFjWDFOb3ZtT2VOWmt6aVErSEU3VTZPTXd5MlZyajZLN3Q3R0pxWVM5TEpWU2tvS28vMmtQM3Mv''@;'; put 'put ''V0hoTDllbWJMQ21CUk5tSTh1SjVXdDBSQk5VbXpaUWx2Q3p0QmJBVGxnSDZXeHVxemRhUVdBOWJiRzNYd0NTY1NZeXNPQkh4c3hTT3ovbmhiTmdFN2VTY3NOdnpoZU5ac3lzYnZhS2FMMVFmN003ZW5ZaTNSMUFmVC9TSDkyaHJxd2MzNE5QNkN3R1B6bWlUOUVoa3VJUHk0OUVzV0phYXladGZh''@;'; put 'put ''SFBvaUVWUjlqSzJPQ2p6WHFKcERZaVVsK2hqVGllUmtMdEFPa2g5VjRxbStZWE9DQ0dyOGRIVUgvcFVxWHg4RisyMGMxUUJsQVpkc3FLOXhWemx0VnJPMlRGYUMxQlJkV1hsbVBFaW9sdEdGaHN1OTZSaFJjM0xwV2RLa1hIckdQckNYZ0R2amwyWmpZdjVJTG5ja0w4YW1HOE5WK1VadmQxVll1''@;'; put 'put ''bW0rcjIrK0ljUjE5eHJIcnVydHZXclVLSFp4UVU5emRUMG56V3NhcXB1dlBpbmd1NFdUY3U1VUZoWWFZWEd1UGxHRW82VkpHb2ludVo0OEh0WmlBa3lUSjh6bHk1UjhtcTNCODBWdTkxcFVLOWo4UHREZnFLcmt0M3ZTV1pZdHQ5SDhyTVUweDRkRUpHTkhMZ2N5ZE1kSlY3eHlJUWVjK3NVWHU3''@;'; put 'put ''cnE2MTdNM2Q1L29sTk1SV050MGFuazdia1hOL2llSE5RVGJNUElnTUgyUUR6TE5qaXF3d1RVRkEzaGxzdFlXcmFjWCtTd1d5MXFDbmFsa1NaaHMzUjR1NXJFQnk5RzhQaTJoMTU1NVpVK2VEMzBSK3F0d3YyNVBibnJyb00zZkNsMVdiSHo2eWQ3OEJ4NWdPVkJ0REl2U1pBbUNnSXlNOGZsa3Bh''@;'; put 'put ''andNS1RXMlE2VUFkS3NTTGRXdlQ3dnFvcW9kSlZKWnhUUHNrZSt1bXFwTC9MbjRDL1laVEdYOFovVjltSXcxcFV5ZUV3ZWxMeDI4emlhOGpadCtQem9ma0szVGdqdlVET3RyeGRuNCtUOXo3UmR6WkxYcTQ0SS9PNjROcExnTVBuNExSQmYwZFVmQ0p5bW9yTzkxQXh4dHgyekcwYllGSUJLenBN''@;'; put 'put ''QjFWcHFQL1cyTCtTYXp2YzlkdjBqV2tjYnRtZHkrMXVXYTBuWDF6ZEplZGkvZ1I5Q25jQTBPcEVkeEdYSUpSOVRCWWxNR2FLb0xkWVhjMU1rSis0clBURDZsTDhXV3NpZW8xbVFhSnIyZDRxblRiQVphc0J4SmVlOG1ld3JFMWdXVGVBT2czeVdITUZ6YllBcnIyeXpsZ1AwR0YydWtVUGF3S1lk''@;'; put 'put ''WHE3TmdzaXpTVjFJWmZWNS9OUndVMUJ4NkxSekxaVnRCdnF1d0xobFVtK0ZHd0xWY1VxTGJVK1I1M2RhaXV2OUNTcU5QcW92OFlYcXpBSEtSSllqY0pFRHJPYWhoU2MrN1BzM0NNOFBmY0llbHJKeHhqQi84ejRsUSsxaTluR0txZEpRK1R3QWtGMHJRd2haUVlHMHVjQVVrU2V6K3QyMmEwRnZF''@;'; put 'put ''VEZMRXhKanFKdUlaMnFmUUt6d1NHRnIzbTJ5Q0ZaNTNQU21TMnlTTmdlbU4rY3U3NnlFZFpLODNUNjBFZlJGNUQrQXNIbjVUU2RMZG9jeDg1dDJweFUyMkFlZlhHYk5pdUZObVoweHpadDVncHpIVVdmazl1UXpXMitVUmpIaUw2OXNZMmNIOEU5eEdqQmdnYkZmb0h5SWliMTlRZ0RGOUxET2Vn''@;'; put 'put ''MXl3WmdrTHBGMENzVmY3WlcxcHlZR1dXcHRFRHZDb1ZCR1lGallqVmlucVpKRktBaGdDVmhVeVBuMG12N1IvRHRSQ2Q1ZnFhRTBHbENSWmYwRHZ3UjZYS2t4TDFGbHFlUVFhK0w3a3c2R05Ed09qZGdhalVObWJrcUFJL0xNZUcwQ3ZwSGFDeUt3MWZBRzlLOFEvVXlPVVlSOEhURnBBTHBkd0RX''@;'; put 'put ''N1NZMHljWkdNM05vSDRRMXA5OXVKMXB2RTl2UWlUdDFzVjVpZUhNSG1nMUZqbXpSRDQzUnRCeGp3TjhNMUdjRkE2b0dwR1VGVnZuRFpncVVaZWhXcmxDeWVHMVB1VVpmdTVrOHErWS9QcjlWamtZOHkzbnhScXB0MHgvNXpKNlNwQTJLVHl5SGd1RjNTS0dCOXpOOHdrVjR1Ym5OY2ZUd05tMU9x''@;'; put 'put ''bTJBQm03Y3BzMWNZWnlqNkNxNXpUcCtyMUV0N2NOc3JvaThuclU3dGhvSFZ4YTFPWTVzbTl1cy9RTEdlWTJ0SnlLdlorMXZTOXI4TzdUNUkxdVBQTTdSdFhzMnJnZG9xUm5lWG1DeDBscWF6YnRSMDFqVVl4b29OUlNwR2hVVjhGRmJVY05LcmV6UXpRd3lwMnpkMEdmR1UxSlFqWHlncXlRUDVp''@;'; put 'put ''dCtUazU0R1JsUlUxNitnLyt4a1BhQ3UvTzRkZlYyT2ZubEQzbFdpZ1J3WURGOXhsTmFGSjd5aVJKWXNUZzFnMVdyY3I2UGxmQ2R6VzJPNDl3MmJVNnFiZUI4WDltbXpVcWhqUms5dEUyYnVjSmNSOUZ6bS9nWFJydlFYK0t2RVIwSUE5M0RlcG9iQ1VwbEVFZ2ttSFZtblRoemUrUjIrZWVEWVR5''@;'; put 'put ''aC9uYjc3V0drNXZQK2p1WEkrMUNjMWdkRndyVTFMb2ZKb0djK0dwYTJvN2c5SEhMNFJGY1VQdkg3L1hGL0xHZ05XbGtHdHByVkdnQWJMMXVVTDVma2tjT0pGVEpGY2tnYVUrL0hNNmtEZCs5dnZ6U1dIcDZMWjRBMjIwOUUwOE96cS84Vzh1TlQvdmtZMENnK2NmTkV5Q2ZkQW4rUm1uZnZXUHJz''@;'; put 'put ''d1lDMzYxRExtUjFBbmZRMzZUc3JJZnh3VFQwUXFmVDlxZmROWm84MlNlTTE5UXgyTEtiTXpxbE5PY3NuU3M1N2M1dmo2UDl1MCthazJnYk84Z3ZidEprcmpITVUzYjJaVm1XOWw4M1ZxY3oxOU1aeE51VWF4QmozaEhQUUx1dXdFdVVvRksyQjVLbHcyQ3FjbFU0aDRLbms1UWhvc2loRHcxL0kw''@;'; put 'put ''T2o1NTVJTWpWTXNSYVB0cG1kbUJnZG5wQmRrbVRQRGNuR2VCUnB1RVdOR1VNS1pHZ0lDaDF0UkV5NlpXeHN2NnVSMFFhdlA0L2RFdkN3a1VaSzdIY2JwOVlJRmxYRlQvK3BNZWw4dXR5L1ZHbW5yU2UzSjdoa0k3d2pOOWUzbzZCaWZiRytmRklrNU9aMUlUQ2RUTTFYdS9kbjBmRXVIcnp2WU1k''@;'; put 'put ''b3hrbTRiSGMrdFNnQkhPVjc1TXNDeEgyUXZRWDJYeS9TOThUa0g4UDFFMGZQbjFmYVlQMURjL3VuQ2MzTnY4Zk1IQ3VNZm5TOTZ6cmtMN1kxVU93TWFndWZjWGFERFJVSEw2MEhIeE9VYWdKM0hEVXFDSGV0SkR1dktES0I0OGpvdERhT1c2VWpaQ3RJakhhL1hMWnNOUk0wR2RvMldHMDBjRlli''@;'; put 'put ''VXR3TzBsVTdIWWdpbGU5SmlaM3NzRlV1MkpHQ0NpTlhuOWZsOS9nb0F1UnJFa3ROVFM2S3JzZ043VTJnTDBWeHpOZVpLWHBYalhIM1hldXV1R2RwN2FYSG9kZkNBdzN0NVQwbnNTN3BsSWtwRHNwUDljaFJzb0tOallHRnNQU2JibGMza2kyTmkwa3g0TkJxbzdtbE5kY280bGxnVFdld3pneTZJ''@;'; put 'put ''N2tUYzA2RFJhdXhZcDAyQldxOHJxUFdxWHVQbjRTdUNkVmVnNGhUN1FsQ0tucU1icWJwSmdEWFc2a0JwZnN2V29yZTBJYlVFMEpGQ2V3MnRBZ1hKQk12TXlBcUpucThPYS81RVJZUVcwV1dTK0hDSkl0SnphZGRXa2RyR3VVUjVpUUdSMDQ5ZXM2TWtlTnNZMGpSaWlwTnlUSlRpL0pCTUN6Zkl1''@;'; put 'put ''THJ4T2FXRmU0dWVQNisyeC95bHhlMGZLSXh6OUJCN3ZrWlp3MjFzbkpmazhUOGd0eDhGZ0JtTG5oK3ZrTnYvRzN6OGhvMy9ranorZmZMekg4UEg3OWo0Y3Z1am4xbXZxMmdsZncvYVFoVHRFYTJWekt0YUMrb0FhQU0ycTZVTUQ4bDU1dzdWQlMxc3lBNXppemFhcHNGaHNsTDhHQ3k1dXJxNmFG''@;'; put 'put ''MGs0QXY0YWQ2c0twa0tpVkFCS2lEcFNkSnM3czFlZWZ4UGkrS1Z3OE5YOVhTZDZEL1dGejU4eW5td1B0c1ZEQjl5amxUTXhtT3piWm5aZUdJdVF5eGZPTER6OUVEdnRhUERKM3RtWnVhenFYQzFyN3JHRzBsNVZsOUk3bXR2MjVOSzdzbTE3MDBCdk9SWUVPVTFVekt2R1ZtSCt5Q0Q0eTUyVG4z''@;'; put 'put ''b3ZWcytQNDdPRnoxL1hua084TDJ1ZUp5bkM4L05lNHFmUDZBK1IwY3ZsM2xXSHpwTnlra2Q4NU81MFNHNXdMcUdWaXRRMXd2UzhGaXIwUjdXcVVGR0Z5MmtiVVJJcDVhRXFPMjBXczA4a0kxMmlYV1lYQkFkekNCeVYxYURjRktkYkhwcW9SWUhQY0V1S2k1cXdBN0ZNdjBwTGIvNGpsck84RFhW''@;'; put 'put ''SkozTlgxaXZZdUFLOFMwbldHN05yQVlKTFB0UXNOcmxOT3EwR2ozR1drNEpoS3duTUd6V1hEd2VUN09ueVc4SldqWm9Mc1dLQzlOYm5GaU93bWtVclFXNFprTncrTWJCNmY2RzRXNXZhUGpVNEs3QmhtRlJPdG1DVGFsOGRqR0w4V0xXNVpSZVMrYnh4L2VuaHQ0MTB1SWZEaHhJRFowYWFRMk1T''@;'; put 'put ''bS9tY1h1Zy9WRHV1KzJIYzRHQkd1azVQNXlSSEZlZ1o3MWJwakdGSmpjK3B6andzYUxuejZ2dE1iK3Z1UDBEaFhHT1RzdlBaVjg2SFdlZk1zN0hpK0p5Rjh1WitiUGljc0tmSDVmalZyWkltaW5heHdQS1BtQi9NNmpJeGs4VS9BREhGTDIrV0krV1pmclpna3cvTmxMY2QyL0JQMkJROUxiU3Zo''@;'; put 'put ''Y0tjdDh3TGZPdWhyVnB6Z3E2bWhOVlUvaTVzSTdUWTRLZElGRzRFWkF4aUJvL1I1a096UzZYR0ZXMUtDdE5TNm1xcnFyMkNZTGc4RkRab2xXOE45bWdYSFFoUytqV3JKRndWbTlMdk1NdTlCY3FNR29hUGJVTjFoL2NmLzhkdGJtRXM4bjBLVmFOMGVpdWJiRGpIYXdtZytaMFRaTWMwRWd6aUxC''@;'; put 'put ''RmNRL1ZTTnlZS2lROGlVVU5uSjdYWTYyK21TWkJVNldFMXhPK1VJbnFvdXVzQUN0TnIxZGpuRW93RGRZZERvY3o0WFRBWndVMUpPUXBBeU85c1BMME5tcUlYVkEzRXloSytDSTV1aTIzb3lUcDYvQUplWDgvVjVPLzZDN2RVV1BmeHV3dm1oREd0dnlSUWhhWWFpOTlnT25ZQVVYSC9rT0pyaTdu''@;'; put 'put ''WDFGNkdGRG80Wk5GZlUrcWZiRWVQYk5OMytlVnZnVHJENjdibG8rd3ZrR2w3ODBsZUVSenJiNUdub1EyZzZ4TkJXanhGbVNBTm85ekZ0b0kyaWoyTTJEb3U1R2FuM1VJYUxRYXZoa1EreXdhWXREVGFrc3RUWnpXb21VNG1zcENCWlhDNTZqam5QRTlKeGx6dTkzTjdxWWdqWUFHdklycjNGdVNw''@;'; put 'put ''NlVXd3FQTjRlbERQUnZpMCtmUDUzdldVSEdRZW5UMVMwVkpXMzhiNisxZGZXUkRtTHJneDBnVS9CakhZTmxid0JYMGo3TUYvZVBZTE5yS0I0TEwwUGUyNmF2cUxoeTBVZXBkZ0Fab3ZVc045ZXBWZ293UU1LM1hWVE5KS1lMemk0am5GWWNlWlhjVm8weVlBUUZZV1gxeERhb1JiRjZhMFMxUVhG''@;'; put 'put ''ZnJZTHdxUmp0bDVNOFdGY1pNeXVoYlE5RzdSbnEyVUNYRGtEVU11QnlxWWNVdE5JNTBtT1d6MFJ0ZnpvaFd2dy80YnprR3hSUTBHaDRFcndhMFlBK3R1VU02RUxRNnpUS04wYWdIclZ6OXdCSVFHSmxhcVlqMnEwMFpBUERoclhyUWJMSktkbVZNek9XMUJ2eGVMdzN4YURadVNGZVNIQ2RydEx5''@;'; put 'put ''YUkzZDlZWk1HVzltbVRMa1dzQ3RzWXVCdkZLT2hzbGJadWNOR2l0UG13SUp3ZU12dzkxankzQlkrTWYwV1BySE4rcXRla1pXc1Rvang4V2FGano5YjBsZk9mYU44ZkVUbTR5dEtYK25YdE1aSTdndjRVMEdNVEVkaTdUbnFsSXFoUERvc0hvaldFejFmNWFTR09LMkRSME5HNmh6bTlKb1ZnNm9v''@;'; put 'put ''bFFQMTZYUUNkV3N5TkpMamprdHkzREVlcCs2dWVEN2VsVTFYeENwaTRTYXZwNmJhYnFWdXJ5cVRxaVRScTFSa3ZjajVKK2JWWWJlcnhsc1hNQWhPcCtXWGJ5dkZicStudXJvdDZnaUg2T1VuYzI4MzN3NzArZjhOK0ZYR2FGcjJCUjViKzNpSnYvQmxhS05sTkMzci9NZnVVSElHMXFiUkQ0RXVy''@;'; put 'put ''VFRPVGlXbVZZNnpxMlhvRkdTcXZQR0JmR1RwMXFxVUFkMUNKYjRmVXV5cnRvc3l3VkV4VVIweGtic1ZVY2hrOU5vYk1OY1RMTmJub1RlcTJHMUV3M213WExaZk9ESlZXYXdvRUFrTEVqZlVnUlhpcURCdm1VSm5WUmZrcE9VLzZwSVdxTlZXVlZVNVNaZm1kVnZ5OWZMaTFGaWdVTFhxZ0hYV3Qr''@;'; put 'put ''aDUvTWZWTjVTRkFnN1NTczIvV3ZldEFnL2pOL21HV000ZDJHTGFRbTZjVUpJYk41clAwendTR0c4ZjRQUVZJRWNhQVhjWlR1TnZ5WFliUE9jWXJrOG96MjlqejFrZEZwT2JjVVZ1bHBYUUQ0QUVsM08zUXB0SnBZMEZQU3EzZVZSdEk5ZHpQYW1PQStOZnhXUWNMcEp4ZEp3d2F6T3B0TGx1WXhz''@;'; put 'put ''NWo1WjBBWTZZYVFhYnlWaG1BTTJlMHhPMXNtMVRrWmdabWUyRklqRStUWkVrYStjRjBpWDE3dGtqZnVRalhWMjRMaWJHOEpUMHlxZzRLa21va0t1TFdRNWpnMWhyTE9OMVZLanFsZXE1U3FVWXhNNHVlOEU4YUxYS3dCaFA1Y2ZIODFQNFFMUDBBbmFHeEJBK0lqM1pYT3hqdmw3MU1RT01mbFVD''@;'; put 'put ''UjlrV2ZGbXhCYW4rY1pmY0Y4N21MOW1adFNobjgzdTV2ZlJybWtlb3RvZm45eFhOZGJMZ3o5YkRhV3c5MS9NRnUxTi9EQlg1bFJNRnYvSXg5T1VTZlVXMnM4NFdiTWRqaDlCVy9tOWNqdjZ4Sk82MjBYNGx1UHkwckRPbmdMRStDK2RxQVl1L1hjd1dxbEQxcEZDR2FxRGxkbXFlRFRNMmFxMDFE''@;'; put 'put ''aHRMckpNRnNXczl2S2F5UXhwaFcxZGIvTElvWHYySC9mY2NPSERQZmhLWFBEdmxnSThpakhkL2V2L1MzZnU3Vmw4ZzJZbGJKeWZlUGFUWWxkd2JMSjgwaWRyUmxEamh4SG9kZGQweHJRRTR2VmF2V1RZWmlFNG5WMVc2Um8xOEdVZDFlc1ZsbDByNXdJcEl0YWR5Mll3djZXdU5OTk9VVTZzdjRQ''@;'; put 'put ''T2JZZEViSFhicmZMeEl5RFpzNHVoSWxyWmNoK3lwRzdxaDBmdXVrVUdXaHpuOExxL251cUdDekpXT0ZXVms0ak1iY3RYSGUzc201QnpOOFc1eFRCYSt4V21hYXY2NklvTVBzck5OSy9qN1RBbGV5SG1IOUd4blpkL1BtS0tyQWY0ZVpQaWJWdkQwQ2JrOTRPOEN3OTlaNWJteGFLNlQ2bHlBdisv''@;'; put 'put ''ZGNxNzlESDluWmZ5MXlYT3h1amkyem95eXpydEtjRi9PWmFUcm5KUFhxY1JXWTJzaXE2a1QwUnVpTTluYVVLL1I2ZDAwNmw1ZENhS2RwbGhyRlA5amRHTmNGZlRGSlJEc0R0a2cwdUt0QTZ1eFRZSFZpL2VpM3N2NDVrRHB4YnJKUWQ4dFFxdGJkSlJqcXlaZnhFZFRHNndXQTVnQlB0azl1VTEw''@;'; put 'put ''RlYrOGVwQkUwa2QyVkd3VmFCMjhQckY5VGVITjg2bVNlR3RPMnhaL2l5cERscGNxc3J6VVBKeFpUV3RMZloxR3kyK01oV3RHM0tEeERtOFpFT2Q1M1JLaXllQm8zWmR4MFlENFJUdHRHUkMvU0s5dEErS2wvWlNBdUM4Y2Vuc0JjWHl4QkZ6ODlLR1JMUVBqaWFYQXRsbTVvN3UwalNXbkZhemZQ''@;'; put 'put ''azIzbUQ1UHF2UUp0SDFzRy9wOFhxVlByTThxdGFSQW43U1cxSU1lRnUxVmNMVElhUWFKWUtLWFo0MTRzRVk5NUNhRWFJcnBGU3hFUlU1UlI1V2FvTUYwT1VMd0FaRGticXdlVmpQdG9FSGM2YmZSUXd4dWFrd0xBZ2src3FrUGl4VFE0bjVHV1BTTTJJMVRXNTRRdGJ0cCtTdWV0VzV4Q2pWbHRD''@;'; put 'put ''WTJ0Z25XZlVVMXNuNmdBWnIzSEVmUGlhNG1yT2VhN2NTZ2o5b0lNWlJFVGlKSXE5SGVYSVpwYlkvaENoQmVBRjVhMmNOeG1rV2RYTjlURWtDSnJ2ZlJHOGpwaTNVQ2NHN1pYZ21tRkhYaktKQXMwQzJPNGl3YjJ3bkFvcTZJYlNJcXVEUkQyOGt3SHdkS2NEZVNYYy9hYm1qd1Yyd1JRQmxNRm1k''@;'; put 'put ''eXg2cDBmamtuaTlVc014ek5Lamo2emhJY3Bibm1QMkM2NnJ5c3E1S21FbjFXanYwbUNySGZZK2hqcGJvejg4MmVMZmhtancyZ29yanhOd3F4WlNQNlZrbmNtUFZsY1VmWjMydThBVzBWdXdZOTdQTmI5UVdMditCYnh1VkxTS20zbm1iMTFuN1VJYlk1Z0NXVnc4bUM2TVBjaUhKN2hYcEhLblA3''@;'; put 'put ''cmh0RjBNUHZxL0w2ZmZKZEZyTFhmSk0zWkZOOU5qazdlR2JLcktzcWVBeXFEbHl0VkdxVGM2d3VHMXNhRkJlQnY5cnh5UlBGZGRzczczNmE3QUM3aDYzVkFMYWlIbXM1UDZhM0VpbkovdFJmV1VpL0wzWlgrbWhOVGNoREk5UWIvWlFiYy9IWGJVcXlRM1pMRnFmbTU5Y05USGZVT0xBNVNiOWd4''@;'; put 'put ''akY4b2ZYZ0RLZmE1VndCUEZXQ0MzSStQdVY3ZTVnK3hLUHZGZVVIbkZUekErRDVyU1Y5WlIvNDg2b1BIUE9McUtqdlhDRzM0Q2c2VllJTHJFNmI0VXVYb2pNOVZESytuQU5QOFdWUjFwa1VYSlA3enFsOXdUNzk3alo5SDFENlVqL2NuVVY5VHhiNjZ0RU4yL1I5WHAwWDYzc1puckw2dDF2aDdD''@;'; put 'put ''dW9yNEJtNWRLNkJlWXJFTmF2TjNFenhLeEE1VloydllsdVUzV2J2cWlxN2FITnBXeHkvaXdlSWMrL3pacHRKNjNaL2x6WHNmVFV6alI1L3JiRnhhM0hLTlJwRUhRejBNN1ZTcFdHTWtZMnlYdTcwenVuMHNlNnlQT0xpN2NwWTR6ancrUUN2VzJSamRGSTh3WTAxTkZWbWtKclJpWS9WMGhJVnZi''@;'; put 'put ''THpJdjd4K3BDam14dGJkWVJxaDFySXVOMWRTRzcwMmtQMWRiTGMreEJkekIvU0lETjhaYjV1WnV6bmVjVjc4YTZOME91Z1lSMW16azN5NmR1WTZQU1lqNmFVYnlpeFJ6RzNIeWg4SXg3VzFuVnhmY2szOWpaR1E3RHE5cm5xM2I1L1M0eUx2OGQ3bXp5dStTSGNwN3dORnBGTmlTZ2RyYUN1TXJQ''@;'; put 'put ''YUtVa0F5R3RjZ0Q1UHMrNEdVZS9tWlFyUjN3T2paSlpyZHp0VytUY3ZhSEQ2MjRwT0hRZlpKNGJtK0xKbGUrZEpWMzRESGthZHQ3TDVzM2FBSVo2NXMreVlqd0VRcERWZUJDTVZ0ak5CZk5xY1RmaEpwbVM1d0JScUZVUUExSE5UYjE0bE9yWWRCSDBhZ3R6dlV0d21FT21aajRSdExQZmcyYjZP''@;'; put 'put ''K216V0N2S2gvaHNwL29wbjBjM2ZwemxnL09vbXEycVFndllPRVN0MUt1dGxrSWV1WlAzK3BYRWNKenRQWnNoTDFmYzlHR1dJSTdYNXFSZnJ6MjhkajhxUno0MmdxdDhpMm9WWDJFc2Z1Tmx1RitRZlpBMlY0MzNEZG0zeVB5TUJmNTR2Y29mVVIvT2JNTWZYMWI1SStwRFR4WHgxdlcreC9HWEw5''@;'; put 'put ''cjNPQmFMK3M0VitoN0ZReVg4VWU3N1FLSHZVZXEzWlBjVEx0QTRRbkVNNHMwMVdRZDRjMDNSQVJKcnU2a3ZYL1pMc3piZmZGT1NZenR2U2tvYjJiKzlVaGpIREx4dWEvLzIwd1gvdG5rY2JaazcxcmVGanJFeHprdFEzd25sZmxYMG44U0FveGUvZi9nZnBEaU9kcWg5dVBhMzBZY2piMHBxbjJI''@;'; put 'put ''OGJYU0IzQWs0MC9vd29NdlFwc3U0WFpzdTQ1YXJoaFlla2JISXFqcTlaU0Y5Z1Y2blhHMm4xeW1UVytsOXloYTNmSjh5aFNQK0ZucU1mQXFnVUlHb0xHQTFRR1NrVUFNRTY4QW4yVHBxVWZzanRlVkVYWXFaRmRheisrTFpZcXdieWo0NHh2NFdIdlZWK1N6c1JwR05LM0p1dThCLzNXYXRydEox''@;'; put 'put ''NCt2SXB5cUQ4cnJaK3I4SzY3Y1UxazlSU3QwSXZYUHJjZHlOUC8ybjFWSDhyNzYrZUx5M04vNjQvQkh2ay9GbkdQQXFoSFlDYmdpQUcxNTQveXJEY1FIZkRBMTRlaysvWm5mUlBmM2RhQlJtK3cvNXJ2NldDcXd0bDYvUjEyT2RDWmNaZFdYRlYrOWJ6UmJPYU9TV0JFTWxyeW0rc1Q5OWtZN3M5''@;'; put 'put ''bjI1TjA5N2M4cTkvYmt0KzIxeGMzOUpYekEwTW1Oam9xamU0RDgyUHphM2E2YzRLbzRNOUNlNkUvbTJ6SmEzK2R2K2pOdjhHemI5N1N0cTI1RDVrMi82eDhPRHdjSWYwaFBxdmY5MzUvN1Uvd0hBbHY4emdQWC9LUUM5VnlpTjF2RGYwZHNtSHRaaW5BaDNZeWZBTG5CdjVoT2Z5THorZGROalQ1''@;'; put 'put ''aVZPNTNTb0dRcjdUaldMcGgxOHRGUGZDTDkyYy8yUHZHWTZldmZZTExpWjhxZGluRTBLWTdWdUlsR0IrTFBpT25OdUJvcUNqWGNzZ0dUTW95Tk5BKzhrUGx2d2thajZ1bGd0bUVzRW01dUVpeCtzUGtFcTk5TWZWU0ZlenFDWUJCUzB3SSs4cVNRYktlam1VUUFaQ2Q4MFBqWGkvS1ZpMk8zTFR2''@;'; put 'put ''MlRYSzZYWWRjUjI0WlZoTCtaejdreGNQU1oza05YcExPMTM5MFQ0SmR3OWg3Y2lqbmRIcnFjMzJYZHJKcy93TVR1VnB2dFMwM2UwS1c3emhPeXZGbHdBZDFENE5DbDJCY1Q3NHA5ako2Unl4VGRFRFY0WUFyZXdRUDRWWlg2WXZ4b1NUQXBVNnBKZGQveVdVMWEwbGlpMHRTU292QzY5NnFLUHlO''@;'; put 'put ''NVcxcndvSE81VGxCQnVDRUVsdDRnTkcvL1B5Qzhudzk5aWsvZjc3d25MKzYrUGtENm5OMDlOTGk1K3ZqOTRGYXRmNzhiS0g5c2YxSWdjRTB1UXhnUUdNRitpODFlYTBZWUZCaWlxbVFXTGZEQXB0aGNwbHNseFVEUnJITC9yTUlQb3FOTmxjRUlzVTgrNHNOV1FucmE2WjJ0YndYc0wzL29tZ3ZU''@;'; put 'put ''eGRnWXA2VDVTaE4rL2tJdTV0Q3hZV2s0SjFXcnFPZzM2L053UGZhMHUrMXE1UG9md0FQZm54NUFBQUJBQUFBQVFBQXRDY0F3bDhQUFBVQUh3UG9BQUFBQU5QQm5ZWUFBQUFBMUw2bTlmOVcvdThFV0FQRkFBQUFDQUFDQUFBQUFBQUFlTnBqWUdSZ1lENzY3ellEQTB2SC83RC9rMWtpR0lBaXlJ''@;'; put 'put ''RFJHZ0NsaGdhdkFBQUFlTnFObEUxb0UxRVVoYys3azVVTHdUOFVCU2xxRWx1YnBLMmhEYVkwbEJSYmJVclNqbllSYWtXaEN4ZGFZclc2RnRHNkV4RVhYZmtEVXZjdUJiSHVSTWdtdU5LSytFTVVXbHhrSVMwNG52dWFxWFhTZ29IRE56TzViOTY3NTUxNXBvWXo0TThNVVFjb0E5ZmNSNzg4UkZU''@;'; put 'put ''T0krN3NRRUllb0JrZjBXL0cwRVBGelF6U01veXNBZkptQ2lrczRvUzU2LzJVSjBpYkl2YktTYlJMRHc3TEJGVkFTczZoVzA1elRBRkp2YmIxSE11NkxuMFBtVE0xN0hOS2FKVXZhSkpIR0pjNTF0YklDZFlWcVNydlh5R1BCVjd2NGh3M01TYUgwT2NNc0laMVRwVC8zMERlOGhacnVIYVpSa3pl''@;'; put 'put ''WTFUZkdXcEdXSjRoSXZld1hhN2ptTG1BWWE1NWhXdzNuOUVwQmUrM1NTTWpYZWlRSzNCbE45cklUbkhSeHA3RE1ra2ZzaGhDQlJtODlWN0lOZ3ppSFhMT0ZITDZYSzdaZWxmSG1LdjBjQkV4TThseFdmNmZZRzlKSEpROTdHMEErMFZZY3dkSHpGWmNKT1BtSlhycCs0aWRzMGhQdUVZeml6Nnp4''@;'; put 'put ''SnJueU5oMWpTT0tEL1E4eWZzbEpPblhxbGNieVBsT3FuL3EzVHBod1N1cmYrUVA2cHV6QlMyK2QwSEpUb3hZcW4vcnBmN1JaK25BS2V2VkJuTEtwUGJpL2l0VXZEZjBiNUQ4U24yU1M4eUY3MTFRbWd0bDF2cjdWK3FmK3F6VWZuWE9JTFYzbmQrbjVvajdZdnU5elQxVlAzUk5tMUd6cHZ0ZEo3''@;'; put 'put ''MnFjTDNxWFJPNVFoN1hQbXdHbVFQTm9XWmhqV2NSTmhIdXZjNnIvUVZvZldWdmExeEdNdFRDZVpsYnpVNERtV1hOVXdPbjZ4bnpxZnVqSG0xQy9RWnNEblVQMWIvNnQ2QjVERkl6em14bXJCNHo4MlV5UjNWVHI1bkRYM3dHYjlSL1o1QU5udGJuWkc3aFZGZlBHeXhUVHdIcFJjcTVqQlRQQkhz''@;'; put 'put ''dW1IbHlucHlsdnlWZTgxd0t6U0JoV2hHaFlqTG5WVzArSEk0dDRlaC9pWm1CK3dlYlAvVU1lTnBOd2wxSUdnRUFBR0R6djFOUE8vVzY4KzY2WCs5dWV1ZWRkeEVSRVRKRVFpUWtZa2owRU5GRFJFUVBRMEpreEFqcElYeUlpQmdqSW1TRWhJd1lJU042a0JnUnd3ZUpIaVFpSWlRaWVoZ1NNbVRz''@;'; put 'put ''WlEvait3d0d3L0kvZTRaeUQ5S3pib3diVDR3UEpvTUpOMVZOZDJhcm1USy9OVStiRDh3MWk5RXlaOW14UEZxVDFpWHJveTFwMjdFZDJzNXM5N2FPUGRXYjZNMzIvZ1FnSUFua2dCTFFkbENPSWNlQ1k5dnh6WEhudERvbm5Cdk9sb3R6cmJwMlhYVlhHMlRBTkpnRkQ4QnpzQWwyM1FQdVVmYzdk''@;'; put 'put ''OVVEZXFZOFpVKzNMOVZYN1d0REhMUUNmWWFPdlVidm1MZmd2ZkZwdmhsZnhmZms1LzBKLzN2L3ZyOEpXK0VKZUI0K2drL2hsLzVZZjdHL2pqZ1JCQmxDMHNnSHBJVGFVUis2aU9iUklycVBIcVBuNkhXQUNqd0gvbUFlak1FR3NRU1d3UmF4UEhhSjNXQXZ1QUdIY0E0ZndxZndHbjZGdC9BT0FS''@;'; put 'put ''QTRNVTFVaU8vRUQ2SkIzQkpQeE92QUpqbEl4c2dVbVNIbnlSVXlUMjZRMjVTZDhsRVVKVkhEVkp4S1V4VWFwaGs2UW8vUUNYcVNMdE1uOUFWOVJiZm9YMHlNT1dYcVRKTjVaam9zd09Jc3h4YllYYmJFbnJBMUR1SStjVWRjbGJ2a3Jybjc0RXJ3WTdBWVBPY1JQc1RIK0JTZjRSZjVQRi9rOS9r''@;'; put 'put ''RzN4VkFJU0R3Z2liRWhiUXdKeXdMYThLbTBCUm54R1V4SnhiRUxiRWtmaFZyWXYzTllXZ3R0QlhhQzRmQ2pmQkQrRld5U3o2Smx6UXBMcVdsTDFKWEJ1V0FMTW5EY2xLZWtSZmtuRnlRZCtXU2ZDMTNJb0ZJS3BLTlZDTnRaVXlaVlRhVlBhV3NuQ29YU2xOcEtSMFZVSEZWVkVmVXhIOW0xWnhh''@;'; put 'put ''VWMraVFKU0pqa2N6MFl3Mm9jMXBXZTFCYSt0R2ZWUWYxNmYwV1gxSlg5WFg5WVorcXovcHZ3ZUJ2MHRBdlNvQUFBQUJBQUFCUEFCWUFBb0FQd0FFQUFJQUtBQTVBSXNBQUFDREFSWUFBd0FCZU5xRmtzMU93a0FVaGM4VUpJREdLREV1R2hkOUFmbFRJZXBTdzBaUUl3bzdFaEFFSWxBdHhZVFg4''@;'; put 'put ''Q24wVGZ4NUFkMjRkdTNhaFlmaHRxREJrRWs3Mzh5NTk5eTUwd0tJNFFNQnFHQUV3Q0dmTVN0WVhJM1p3RExxd2dGazRBZ0hrY1NEOEFKTXZBbUhtUHNsSEVaYXhZUWpNSlhudVlodFZSRmVRa25kQzY5Z1RYMEtyeUtxdm9XZnNHNkVoSitSTkRhRVh4QTI4c0t2aUJyblkzNFB3RFFxT0lDTkd3''@;'; put 'put ''eDU0amFhYU1IbHlSNzVwSG55RkR1eFVLTnFNYTZsWS9ya0l1Y3VzL3JNN1NHT0Fock1jN1NUalk1RTVYM0hNK3BOREtoVUdaVmlSbEtQZlZ6Z0NHVWNrMlo1YkU1NXpLdGgvYWxTNHNwaFRGdWYwWnFxT3E5U2lYVEoyV2JNcVBNVDVqYzRqL0xxMUtya1UrcERYZC9sM3Y5M00vSnp1ZHBEZ3VQ''@;'; put 'put ''dWw3T3RmYnUrYTV5YXpiV1gwNWVzSmxXWHV3TitDUzhtd2RtcjJkVmRUbW9tWm5ZNGEyL1NjNWxxRFZjNjMvVnZxeUIzbDlPcXhaSFJXcFluUzJHWDd5M3MrUDlLRnRlTWEyaC9SKzQ5NXpzV2Njc08ybFFjeG5SK0FHaWlndmNBQUhqYWJaTlhiQnhWRklhLzM3RjMzVFpPNzcxWHgxNzN4Q2t1''@;'; put 'put ''YThleFl5Y3VjZXpFU2NhN1kyZnhlaGZHdTNGc3VnUUNIa0R3d2pQbENSQzlDaVI0UUtKWDBYc0gwWG1rQisvY0NWNGs3c044L3htZDg1OHo5OTRoQzNlZEcyQWUvN05VbTM2UXhReXl5Y0dIbjF6eXlLZUFRZ0xNcEloWnpHWU9jNmZxNTdPQWhTeGlNVXRZeWpLV3M0S1ZyR0kxYTFqTE90YXpn''@;'; put 'put ''WTFzWWpOYjJNbzJ0bFBNRGtvb0pVZ1o1VlJRU1JYVjFMQ1RYZFN5bXozc1pSOTExTk5BSXlHYWFHWS9MUnlnbFRZTzBrNEhoemhNSjExMDA4TVJlamxLSC8wYzR6Z0RuT0FrcDdDNG5hdTRtcHU1Z1R0NG4rdTVscWY1bUR1NWpidDVubWU1aDBIQzNFaUVGN0Y1amhkNGxaZDRtVmY0bGlIZTRE''@;'; put 'put ''VmU1MTZHK1lXYmVKczNlWXZUZk0rUFhNY0ZSQmxobEJoeGJpSEJSVnlJd3hncGtweGhuTzg0eXlRVFhNeWxYTUpqM01ybFhNWVZYTWtQL01Uanl0SU1aU3RIUHZuNWk3ODVKNVNyUE9WTEtsQ2hBcHFwSXMzU2JNM2hWMzdUWE0zVGZDM1FRaTNpZDk3UllpM1JVaTNUY3EzZ2M3N1FTcTNTYXEz''@;'; put 'put ''UldxM1RlbTNRUm0zaVB1N1habTNSVm0zVGRoVnJoMHI0Z3ovNWtxOVVxcURLVks0S1ZhcEsxYXJSVHUxU3JYWnJqL1pxSDArb1R2VnFVQ05mODQxQ3ZNdG5mTUNIZk1TbnZNY25hbEt6OXF0RkI5U3FOaDFVdXpwMFNJZlZxUzUxcTBkSDFNc0RQTWdqUE1wRFBNdzEzS1dqUE1PVFBLVStmbGEv''@;'; put 'put ''anVtNEJuUkNKM1ZLbGdZVlZrUzJodngxbzFiWVNjVDlscUd2YnRDeHo5Zyt5NFcvTGpHY2lOc2pmc3ZRMXhpMjBra1JnOGFwQ2l2cEQza1d0bUYrS0pKSVd1R3dIVS9tMi85S2Y4aXpzajJya1BHd1hSUTJoeE9qbzVaSkxSek9DUHd0bm52VVk0dm5FelVzYk0yc0hNa0lmRzFXT0pXMGZUR0RO''@;'; put 'put ''dE12WnRCdVhzWmRGTFpuZXNRelBkcE5ldHlGdjhPYklXRVk2RGlkaWc5YlRtbzBacVdTZ1VSbTVPczBIUnpUb1RPemc1UFpvZE4wY0F5NlROV1lDMzhxSGkwcHJReDZMUE4xbTZTa21hYkhteVpsbU5QalJPUERPYW4wTTlEem44bFNtWkcveDl2QmxHRkJiempxaEZPalF6SDdiTUY0aHU3TDBC''@;'; put 'put ''UFQydGR2WnB4MGtkOC9mZHFUMDZlZG5qaFlWdVd5TEZqcDZ4MTJyS2xyTlc3UWF4ekdYZVQxUnFLMlk0OUZ4L0xHejZ0MFhXbW92dHBqamNjR2o0MitQbU0wNFNMOU5saFNFdlJZNXJIY1k0WEhTc05nVTNZbzVTVGNvS0twSWNjcXRtTEpmTXVkeFVqMzdxZGxrVFg5MmVrNFlKMGYwQ1M2M2RP''@;'; put 'put ''eXdQdDlqRGI3bXRaNVZ2bzBUSEl5R291NHliblcyTlFlUld3bkwySjc2aCszWmJjaEFBQUFlTnBqOE43QmNDSW9ZaU1qWTEva0JzYWRIQXdjRE1rRkd4blluVFpKTWpKb2dSaWJlVGdZT1NBc01UWXdpOE5wRjdNREF5TURKNURONmJTTEFjcG1abkRacU1MWUVSaXh3YUVqWWlOemlzdEdOUkJ2''@;'; put 'put ''RjBjREF5T0xRMGR5U0FSSVNTUVFiT2JqWU9UUjJzSDR2M1VEUys5R0pnYVh6YXdwYkF3dUxnRCtIQ1ZnQUFBQUFBRlltUFozQUFBPSkgZm9ybWF0KCJ3b2ZmIik7Zm9udC13ZWlnaHQ6MjAwO2ZvbnQtc3R5bGU6bm9ybWFsfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcztzcmM6''@;'; put 'put ''dXJsKGRhdGE6YXBwbGljYXRpb24vZm9udC13b2ZmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGQwOUdSZ0FCQUFBQUFGVWtBQk1BQUFBQXBRZ0FBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCR1JsUk5BQUFCcUFBQUFCd0FBQUFjZk5INTVrZEVSVVlBQUFIRUFBQUFUUUFBQUdJSDFRZjhS''@;'; put 'put ''MUJQVXdBQUFoUUFBQWNYQUFBT2RqNThmRXhIVTFWQ0FBQUpMQUFBQUNBQUFBQWdSSFpNZFU5VEx6SUFBQWxNQUFBQVRRQUFBR0JvUUt6elkyMWhjQUFBQ1p3QUFBSnNBQUFEbm5kREQ3RmpkblFnQUFBTUNBQUFBREFBQUFBOEVhd0JwR1p3WjIwQUFBdzRBQUFHT2dBQURSWjJaSDEyWjJGemNB''@;'; put 'put ''QUFFblFBQUFBSUFBQUFDQUFBQUJCbmJIbG1BQUFTZkFBQU40d0FBSEc0LzdIR0RHaGxZV1FBQUVvSUFBQUFOZ0FBQURZTFpZZ1NhR2hsWVFBQVNrQUFBQUFoQUFBQUpBZDZCQ0JvYlhSNEFBQktaQUFBQW9ZQUFBVGFxMU0rVld4dlkyRUFBRXpzQUFBQ2N3QUFBbnBON2pMbWJXRjRjQUFBVDJB''@;'; put 'put ''QUFBQWdBQUFBSUFLRUFwRnVZVzFsQUFCUGdBQUFBWEVBQUFNUUkreDRZWEJ2YzNRQUFGRDBBQUFEb1FBQUJpR1hGajJLY0hKbGNBQUFWSmdBQUFDQkFBQUFqUmxRQWhCM1pXSm1BQUJWSEFBQUFBWUFBQUFHOW5kWW1BQUFBQUVBQUFBQTFGRzFhZ0FBQUFEVHdaMkdBQUFBQU5TK3B2VjQyZzJN''@;'; put 'put ''UVFxRVFCREVFa2YwTUxQb2Y3eXBML0RvZlhmVi96L0FJZ1JDMFRRQ0xSNmNkRlJralZzbzdIelR2MUQ0QjdtNDA0OERPbG9wTmx2NjQ1U2VYWExUNTFzWHpTYStXM0FGM0FBQUFIamFqVmNOYkpiVkZYN091ZmUrMzlldmdLV1VINkVnSVZnYjB4UkdtQWl5YVJoVVJ5cVNqaWthWnZiam5JUHgx''@;'; put 'put ''MkV6RnVmNGNXZ1dVaGVIREFscEVQa3gyZ0NpWWtYR3VvWXh4ellDeWd4aFlGd0h5QlltMCtsQ1JIbjN2T2Y5c0MvUWJ1TUpENGR6NzN2dlBlYzh0K2NXQXFDQUVaZ0ttVnhYUHdONWVIb1F4M0Q4UjZCd2M3N2RPQThWYzcvUk9BZVZjK2ZNbmNQWm9EOFpUV2NrN1BoZEFRTXdERlhtY1JpSmV0''@;'; put 'put ''ZWFqa1lMYkZXSm1oSHhJK205aUY4TU5sOUF4V2NRMU1YTjVJQ0pXSWxQRWN0Z0tJL0JlVEpJanFFVXZYaXlmOFFkOFpiNFNId2NQZnlKMys5eDVQZmRlanU1ZC9iL0orT2Y5N2pDdXoyTzlIeWVQOFc3ZWhqWkVuZkd1eE5jNWovQ3Y3OUwwTjBlY1RPenBCak9URmN4VzljUmlsckNZUlRoTVlZ''@;'; put 'put ''SStEd1JZUnlSdzNnaWp3bEVDWE03a1pWcUlnUkw4UlBPZkpRSXpQaEsrbDhtQks4UWdsY0p4U0hDNDAzQzR6Z1I4RmNpd2traXdydEVoTE5FRHU4VE9ad25TbGk5VDdsYVRCU2tUTXBRSXVWU1RxNlFDdkpnVnJiQXRVZFRKU1A1emZXRTJMblRFNnVkMk5tSnZaMDRZREtSUngxUmd0dUlBaHFJ''@;'; put 'put ''VXN6SGcxd2hpU1N5U0NLTEpPQnhQTW41cTRrUy9BSnJPZjlwYk9MOExVUXB0aEU1YkNmeWVJSElZUWVSeDR0RURpOFJlZXdrU3RCR2xHQVBVVUE3VVVBSFVjQmVvb0RmRUlMZkVtTFppZkEyVVlxL0VHbGUxUEtpbGhkdmVRbVdsMkI1OFpZWGIzbnhNbEFHTWw5WHk5WGtKRWVCcTlZeVExV3Nj''@;'; put 'put ''UzFyTzRZMUhjZk1UR0JHNW1NQkZxSVIzOGNpMW5JcGxtRTVIbUVXSG1YMDJ4alJpNnprSzZ6Z0lWYnVPQ3Qya3BVNnk1T2N0NXRWeG4wcmt2dWxEOXM5M0NlTmpMczMxYldidW11T1ArcEdyVGJTM1IzNGJPUk1nbTYrUE52ajNUaHpVZkc4MThmajVmSHl5MGZTV3hldmk5ZDFPL0kzKzBaUmFa''@;'; put 'put ''b1EwNFRpcTRURDNZVEhQVVRBTENLaUlwN2tuRVFOWW1wUVU0T2lsWWl3bFlpczBtS1ZGcXUwV0tYRjZxbzRRVGljSWh4T0V3NmZFQUVYaUVqNlNsL1d0Wi8wSS9lWC91U2tvbUlWRlJraVE3aStvZ1pYRWFYb1MvUXlwWXNwWFUzcHJxajBXNG1zMHIzRkUyWGl5Wm5TWFZIcFhScjNGcFczcUhJ''@;'; put 'put ''VzFVV2xweHBQMWIyTDZGblhTYlRlTkt2RkNCUGxPb3N6Wi9wMXBsOHR4cHlvV0l1UkoxcldUUHhaUlR2TFFrNUd5M2p1bnZ6MHFtT0VEYXpYM1l4ckZpTlp6VWpXNENsRzh6UTI0QmxzWkVSYkdNbFczc1kybnJhZHA5ekwwNTFnRFU3elpCZDRnbjdjYlNCM0djSVZoNW1lRlgyc281U2JPc3E1''@;'; put 'put ''eTgyMHhPeWIyWW1PUmNQSW5jeC9oNnlRbGZLRXJKRVcyU2pQeVhiWktidWxRMTZYQTNKWWpzbzdja3JPeUFkeVRpNm8xNEtXNlFDdDFCRmFyYlU2Vmlmb0xWcW45ZHFnTS9WZXZVOW42d0p0MG9kMG1UNm16YnBLMStwNjNheXR1a1BiZEkvdTFmMTZVTi9TWTlxcHAvVTkvVkEvZG5DUjYrWEsz''@;'; put 'put ''U0EzekkxMDE3dlI3Z1kzMFUxeXQ3bHBib2E3eDMzZDNlKys1eHJkRDl6RDdoSDNVL2N6dDlxdGN4dmNzMjZyZThudGN1MXVuL3VEZThNZGNXKzdFKzd2N3AvdTMrNFRyejd2Ky9nS1A5Z1A5MVcreG8veE4vb3Yrc2wrcXAvdTcvU3ovRGY5QTM2ZVgrUi82SmY0Rlg2bGY4S3Y4UzErbzMvT2Iv''@;'; put 'put ''YzcvVzdmNFYvM0IveGhmOVMvNDAvNU0vNERmODVmQ0Q0VVFsa1lFQ3JEaUZBZGFzUFlNQ0hjRXVwQ2ZXZ0lNOE85NGI0d095d0lUZUdoc0N3OEZwckRxckEyckErYlEydllFZHJDbnJBMzdBOEh3MXZoV09nTXA4Tjc0Y1B3Y1lRb2lucnhkaXpXYmVRbHhuVVpYcFV3bW94YnpMTzB5MS9rYWNZ''@;'; put 'put ''MXhqY1pQNWl3RGpWN3V2RWs0MnVWUDFPbDJuaVU4WlNFc2RCNGs3NUdialQvZU9PSjV1ODBQbStlNjR3M0dGY1o1NDBiM0d6eTg4YUx1MmQ5TXh1aithOWdURE4rMXJpcGkrV3VOSGF6NXhudk0xNTFKYWNaTVB0S25tNThyYmIvTDlhTmwrU3F2VHZHbDQyZk1WN1l4Y3hldTJYdnYzT2F6L1p1''@;'; put 'put ''dVNyRGl6Tm52c1RPMUhTSithdk5uN1hUckQ1dTlsMlp6SS9xR3IxbzIyaXFpcXcvemVxVTFMWTVxV2JTNnFSUnAvb3Mya1YvTXFmRjdFMnU2YUo2aXhwN3crejlpVjJzYVpxeFZOdXA5ckwrOUF4cDNnNmEvU09yMFo5TjUrZHNmcXFjVHB0ak55TFY3U1grR3JQUHA3Yk5TVldkOWFjMzZLYU1a''@;'; put 'put ''dEtLWk8wWHpQNVc2cmY1ZGk5MHFQazNtRDlWV2xYR25tU2NOMDlQOWtmcGZiSG83akQ3c05uWmxldmlYeVhWaWZkY1ZxbnNqbE9LdDd2OS8rQkxaeXF1c1hjcCtPNnFabGFTMTZsbjE2NWhGMHhlMkJFK3g1ZFlEbU54STN0WTBybjdzRzkvZ1QwOTZkeDk3WTFhYnAyN0gzK3Ztc28rVkUvMHh4''@;'; put 'put ''M3Njd1BZNmU3azd6NHppVXJyNVVQWjliN0dyaldmYjdmaDlub2J4NDdld3ZYV3MvUGRicjN2Syt4K3I3RkQvaElIOEIyKzZNNWlzYjBxMStCZkV2QVVPL0VRdEZwUGJlTjVSYTZ5MzgwaVNQeGpVK0VTM0U5ZXdXNVhpa0hjYXlRakdvMGJlT3BKUE9VMHpPRG9yMDI3ZnpRK2FteDNCdnN5Zk1o''@;'; put 'put ''NHJ2Rm00MVJWT2JOTDhTWHU4d0MrS3puSlM0a1VwRlI2UzU4clQvUWY2ajZiS1FBQUFRQUFBQW9BSEFBZUFBRkVSa3hVQUFnQUJBQUFBQUQvL3dBQUFBQUFBSGphWTJCbWNtQ2N3TURLd01MVXhSVEJ3TURnRGFFWjR4aEVHTTJBZktBVUhMQXpJSUZRNzNBL0JnY0dCZFUvek5ML2pSa1ltSTh5''@;'; put 'put ''cWlzd01Fd0d5VEd4TXEwSFVnb01UQURKWlFwQUFBQUFlTnExazFsUWpsRWN4bi8vdDMwUktoVDE5dlpwMDBhaUZFWDJwY2krbEt6WnNxL1pHdXNRUTBWU3lKNGtveGtUVTFPMkcrNjROV09NdnMrVlcrNE1IY2RYVERQTXVISm0zblBlYzg2YzU1eDVudDhmY0tIckMwRjBqMVRxbVRqbnJsS3N4''@;'; put 'put ''eVdNdzQyQmxIQ0xPdTdTU0JQTnROQW1IaElnZ3lSTUJrdWNKRW1xcEV1bVRKVWN5Wk5DS1pJU0k5VjRaYngzaVRLUG02M21FL09MNVc0RldzRldxR1d6b3F4aFZycDEzK1lmK1UwcGZZZkZqUjdhajJuam1maEtmekhGSnJHU0tDbVNKaG1TSmRtU0t3V3lRVFpyN1pmR1c2MTl5R3d4MjgzUGxt''@;'; put 'put ''RUZXRUZXaUZON3FKWDJTMXQ5VkMvVWMvVlV0YXRXOVVnMXE0ZXFTVFdxQmxXdjZ0UTFWYXRxVkxXcVVwV3FRcFdwTTZwVW5laDgwNW5WbWZUOWs2UGNVZURJZDhUWUI5cjk3RDUyTDd1YjNlajQydkc1NC9DSGtIZkpYVjc5cCtadWVEdVQ0STliQktQN3ovaUhSdGRKRjF4MWR1NTQ0SWtYM3Zq''@;'; put 'put ''Z1N5Lzg2RTBmK3VKUEFJSDBvejhEQ0NKWVp6eElweDZLU1poT0pCd2JnNGtna2lpaWlXRUlzY1FSVHdLSkRHVVlTUXdubVJHTUpJVlVScEZHT3FNWlF3YVpqTlhNWkRHZUNVeGtFcE9ad2xTbU1aMFpaSlBEVEdhUnkyem1NSmQ1ekdjQkMxbkVZazFhSHZrc3BZQmxMR2VGZnY4T2RyS2JZZzV4''@;'; put 'put ''bk5PVVUwWUY1emxISlZWVWM1RWFMbkdGeTlSeWxldmMxQlQ5WlBRMkRacWxlNXFtbjIwVnE3VWQwV3pnYkxjMzYxbWorMTJjK08xVzRWOGN2RUE5bTFuWlkyVXRteVJHajF2WXpqSHNPQ1JjOHhrcFVib0NJcmlqZHg2Z2FaWUVYUS94M1dlS25HSEVzbzI5YkdVZmV6akFRVjFMK3puQ1ViMTFt''@;'; put 'put ''RkpPY1pMWHVwcDZzVTY4eEZ0ODJDaCttbi9QSDVETnF1aDQybU5nd0FMOGdkQ1p3WmxwUFFNRDAyNG1WZ2FHL3lITTB2K05tWGIvLzhKMGpFbncvNWYvZmlBK0FNOVBEVmg0MnExV2FYZlRSaFNWdkdVakcxbG9VVXZIVEp5bTBjaWtGSUlCQTBHSzdVSzZPRnNyUVdtbE9FbjNCYnJSZlYvd3Iz''@;'; put 'put ''bHkyblBvTjM1YTd4dlpKb0dFbnZiVUgvVHV6THN6YjV0NVl6S1VJR1BkcndSQ0xOMDFocGFYS0xkNnphZFRGczBFNGJab3J2dVVLa1IvOVJxOVJxTWhONng4bm95QURFOHV0Z3pUOEVMWElWT1JDTGNkU2lteEtlaGVuVExUMTFvelpyOVhhVlFvVi9IemxDNEVLOWY5dk14YlRWOVF2WTZwaGNB''@;'; put 'put ''U1ZHSlVDZ0lSSit4b2syWXcxUjRKbW1QOUhEUHYxWDBCYjVxUm9QNjZIMkpHc0s2ZjBUeWorZEFLZ3lDd3lMU0RRSkpSOTdlQ3dLRzBFdGduVTRqZ1dkYXIrNVNWTHVXa2l6Z0NNa09ITWtyQ0w3RVpaemRjd1JyMjJFbzg0QzlJbFFhbFovTlFlcUlwbWpBUXoyVUxDSExaRCt0V3RCTDRNc2dI''@;'; put 'put ''Z2haV2ZlZ3NEcTF0MzZHc29oN1BiaG1wSkZNNURLVXJrWEhwUnBUYTJDYXpBUU9VblhXb1J3bDJkY0JyM00wWUc0SjNvSVV3WUVxNHFGM3RWYTJlQWNPcnVMUDVidTc3MU41YTlDZTdtRFpjOEJCM0tDcE5HWEZkZEw0TWkzTkt3b0tUSFM5UkhSa3RKaVlHRGxoT1UxaGxXUGREMjczb2tOSUJ0''@;'; put 'put ''UWI2MHlpMkpmUEJiTjZoUVJXblVoWGFqQllkR2xJZ0NrR0h2S3U4SEVDNkFRM3lhQVdqUVl3Y0dzWTJJem9sQWhsb3dDNE5lYUZvaG9LR2tEU0hSdFRTbWg5bk5oZURLUnJja3JjZEdsVkx5LzdTYWpKcDVURS9wdWNQcTlnWTl0YjllSGdZQll4Y0dyYjV6T0lrdS9FaC9nemlRK1lrS3BFdTFQ''@;'; put 'put ''MllrNGRvM1NicXkyWm44eExMT3RoSzlMd0VWNEZuQWtSU2cvODF6TzR0MVFFRmpBMWpUQ0piSGhrWFc2WnA2bHFOS1NNMlVwVTFuNGFsS3lvMGdNUFhEOE9oSzBLWS8zTjAxRFNHRE5kdGh2SGhuRTEzYk9zNDBqU08yTVpzaHlaVWJMS2NSSjVaSGxGeG11VmpLczZ3ZkZ6RldaWkhWWnhqYWFt''@;'; put 'put ''NGgrVVRLdTVsK2FTSysxZytvMlFuNzVRTGtXRXBpbVRlNEF2aTBPd3U1V1JYZVROUjJydVUwMTNsclVSNVRCazBhUCtIK0o1Q2ZNZmdsMEI4TFBPSWorVnh4TWRTSWo2V1U0aVBaUUh4c1p4R2ZDeWZSbndzWnhBZlM2VkVXUjlUUjhIc2FDZzhkc0hUcGNUVlUzeFdpNG9jbXh6Y3doTzRBRFZ4''@;'; put 'put ''UUJWbFZKTGNFUi9Kc0RqNnVXNXB6VWs2TVJ0bnpZbUtqMGJHQVQ2N096TVBxMDhxY1ZyNyt4eDRadVZoSTdpZCt4cm5lV1B5RDROL2l4ZGxLVDVwVG5Cd3A1QUFlTHkvdzdnVlVjbWgwNnA0cE96US9EOVJjWUlib0o5QlRZekpnaWlLR3Q5ODVQSktzMW1UTmJRS0gwOEVPaXZhd2J4cFRvd2pw''@;'; put 'put ''U1cwcUVrYUFTMkRybG5RTk9yejdLMW1VUXBSYm1LL3Mzc3BvcGpzUlJuTWdDa281S2F4c096dnBFUmFXRHVwNmZUUndPVkcyb3VlTERWYlZuR0Z2UWZ2WThqTkxIazNVbDY0S1NudFJadFFwN3pJQWc2NWtUMjRKb0piYU8reWltSktXS2dpUGdodEJmdnRZMFFtTFRPRExvRWlaSEd5c2cvdGlo''@;'; put 'put ''MDVvb0oyQXQ5NjBpcnYyMEx0ejNYeUlEQ2JuVzduUVphUm92TmRGZlZxZlZYVzJDaFhyOXhOSHdmVHpyQ3g1aGRGR1U4dWU5K2VGT3hYcHdTNUFrWlhkci91U2ZIMk85YnRTa2srMnhkMmVlSjFTaFh5WDRBSFErNlU5eUlhUlpHeldLVVJ6NjliZURKRk9TakdSWE1jRi9UU0h1MktWZCtqWGRo''@;'; put 'put ''MzdhTldYRlpVc2g5bDBGVjAxbTdDTno1ZkNPcEFLZ3BhcENKV2VEcGtQcHVkbXZDeGxMZ3NSZHl6Wk5kRjlCMDhJUjNpdnpqRXRmL3IzSElVM0tMS0VsMW8xd25KQjIwZksraXRKYnVUaHlwR1orMjhiR2VpSFVrMzZCcUNua2d1T1A1ZTRDNlBGZWtVN3ZQekI4eGZ3WGJtK0JpZEJyNnE2QXpF''@;'; put 'put ''RXVldGdnU0xLdDdTVHFaZVVIeUVhUW53UmRWQ3N3SjRDY0JrOExKcW1YcW1EcUJubHBsVEFWaGhEb05WNWpCWVl3NkRkYldEcm5jWjZCVWdVNk5YMVk2WnpQbEF5VnpBUEpQUk5lWnBkSjE1R3IzR1BJMXVzRTBQNEhXMnllQU50c2tnWkpzTUl1WlVBVGFZdzZEQkhBYWJ6R0d3cGYxeWdiYTFY''@;'; put 'put ''NHplMUg0eGVrdjd4ZWh0N1JlamQ3UmZqTjdWZmpGNlQvdkY2SDNrK0Z5M2dCL29FVjBFL0RDQmx3QS80cVRyMFFKR04vR010am0zRXNpY2p6WEhiSE0rd2VMejNWMC8xU085NHJNRThvclBFOGowMjlpblRmZ2lnVXo0TW9GTStBcmNjbmUvci9WSTA3OUpJTk8vVFNEVHY4UEtOdUg3QkRMaGh3''@;'; put 'put ''UXk0VWR3TDNUMyswbVBOUDNuQkRMOWx3UXkvVmVzYkJOK1N5QVRmazhnRSs2b25iNU1xdk5uMWJXcGQ0dlNVL1hiblhmWStSdGxNN29zQUFBQUFRQUIvLzhBRDNqYXRYMEplR1BWZWVnNTUwcTZramZ0a21WNTBTN2JzaVRiMnJ4YnRyeEt0dXl4eCtQWlBKNWh4dU1aR0FpVEdRakxERXNJSlNT''@;'; put 'put ''a1NVTkMyZ1JDQ0R4YWFGa213TEJNRmdoZlNpWUxKQzl0bXJSWjJyUXA5QVhTdEVsTCtzRHkrODg1OTBxeUpjOE0rYjRIWThtK091dC8vbjA1UWhWb2FUMkNQeXZZa1lDMHlJeHN5STFhVUF4MW8zNDBnV3hKeS9CQVgwOGlIbW4xZTVycWFpMTZuVVpCVUVWN1FPblVPMFZ6eE93MlIyTHVXQ1Ft''@;'; put 'put ''c25jUmZwV2YwbWYwblg0Q1QyTHk3MUliMWlFUmllSFA1bDdHL2Y4NU5Qenc4UERERHcrN25NN2g0ZUZEdzg3Ykh6N2tjaDV5UHZ6d3c4NURoMjRmRzN2NDhKamp1OEliS2FmWENmOXVQZUlhRy9NY2dOL0duSDNEcmtNM2RGbkRzOGVQUDNiOCtHeDQxUmwyd2orRUNKcGYveDM2R25tQzdjMmJk''@;'; put 'put ''Q0dNMFJKQ3FDYURDQkdXRlZnUXJNS1VRcUhRS21xOGVwMVN0QWFNRWNGdDhjV2k4VWlueFd4U3VaZjJtbUtDdzJHMU5EVlp5Qk01dzNjZFZyUERZYlk2RUZwZlIrUDRNYnhJSHRTNVVBVkNPZ0ZlbjBaMFhqKzgzQUR6MmxFVHVpSHpaT2Zzem1TelZrV1FVaUNZSUx4U2lUV2Fta3lOcmxvUVJm''@;'; put 'put ''VlNWUVZScS9VWkJTWkVTNmJzU1I5OXdENUVhdkZ3YVQrcDRhNWtJMEpOalEzMU1JMjl6bFpyaFFVYjlmbi94SVlBRmlPaVczUW4yRThpd240aUl2c1I2WWY0djZMWGFxOE5EZ2Z2Z1ovajJ1UFI5MnRQU0g5ZG8zM3VudWc5K0t1djlqOEYvL1cvMnY4MC9OZi9La0F5dEg2V2hNbmJxQkY1VVJ0''@;'; put 'put ''cVR3YmJBaTZudmE3V2FqWlVWcWpGR2tTVUFHYVNCakNRMnhCRytFTUFFaXVhYXRMckJRQ3dSd1ZvRWZQNUV4WnJMSVJqMFFHY0FQU3dXRVdmMzl5SXpRZ2UxOEJiUEJhRkJ5UjgvRWoycHIwZDAzc3YyOSs1c3l0NzFhNzJpWm5MMzVjNzNOVWJTV0l5bVJxLy9Fb3hPYXpiM1QrdFg3UE5aenUy''@;'; put 'put ''eDhYKy9wcTUvdEdhMzlUdG5NZjJkdjFQTlVPdHVaR1JVREJtZWdzV29rVGg5ZjhtYjVKbkFDT01jRHBoMUl1K2xYbXlGazRvVUltVkZSaXJsSGdWcVpCYW8xSWZRUW9GV2lhWVlrdzFnRjVZcmhLSklHaUZLWHZtU1Q5MENWK3dDNEttckorNFhJVkYwU3JDMlViSzlDQUUydEp1cUh5dlhidVN2''@;'; put 'put ''dloyaDhOa1FxaTl0NzBuSG5XRUhhRm1uNm5KMUZoWGF6VG9kYkNaR2wrTmFBNFlPRWdqblFCS1V3MTI0d2gyR3lnczNTNlYyV1NKb0UyZkQrRENaMStZYkc2WkRJWFlLLzdvY0s1MStOcDRvclUxM3RXQ1p5ZGI4aDhGMk1ORUsxNEtaVU1kTTZIUVRMaDlKb2puMXJiaHUxT2RrWkZVdERPVk94''@;'; put 'put ''aWNhUS9UejZCRk1KNktkSTdRajJCL0FtcFoveDA1U1o1RkRoUUFQak9RN0EwSHZVME45WFcxRmJoQ0lBNk1CSkttR0k2WGdWd3RHU1VRS1lNTW9GQmJtOVBaRm11TE9nUE8xamFYU3JRRWxINlYyMFgzRkU4VTd3dytzc1lUVnBWb1JiQTFLOStsSWVIekEyckJUa2x3OTlJMS9RZTdwbWNiNjRP''@;'; put 'put ''em5jRjBZUHYyL3YzdGpVTWRvZmZuUHRjVm4ranY4RFZObmh6dUdaenZGL2ZzRCsvc1RSMTB0MHo0Z3BPQndHUmdjTm81dmpJKzMzRGwwRW15T3hLSWo5YkhXNXJqYXk5bnI1dTFaOEs5WTREendCZlFnK1JCVklPQ21TZGJBRkVxS2V0aDU0c0JDWFNJL3JrSWYrSWxTaUhUdTU2MmVBbHN4eERM''@;'; put 'put ''c3g3UkpMcDM2dTFHbzEwdnR1RWZrZU90UnJ2ZDJIcWNCS0RId1BvT25DQmZSdFZJOVZTMUVyY0hHTXRLV05uMnJPS2p4NDZ0TkM5czM3N1F2UEN6VzI3OTZVTHJ6aGMrY08yNXhRQ2RFT2gzQi9iTGZVWG95OEhqVDNEQWhWaS9GUmpoNXNWejEzN2doWjJ0Q3orOTlaYWZMYkMrdmZnNnZFUytD''@;'; put 'put ''anNaVGc0dVRvMG4vUFZXVVEyY0tkMlBVVFVjMmlTMEF1UW5OeUVpWUNLY29peVdINlF3QlNNc28zMXpzKzBobDBNcG1nSUd0dVo0UWlYQy8yNlh6dzkvSitLRDJNOS9vMmRwdGNEL1BqODdZTTZRb1MzdFEvK2kvRTVVYWJHVi93Ylk3S0pkL1JZcjI0bjc2MW8xRmhUVnRjMVdwVkpWcFZCVTFn''@;'; put 'put ''Y0RnV0I5cFVKUnBWSXByTTIxMVFvQnE3VVZGZmwyQ3RXRjJ1SHJxalhXaUVyYnFERzVHT05XVnF0ME9yMWVwMU5WSzlXaUtGUzdUSnBHclNwaTFWUmZla3NHMXhRNlNtcElGRlVpWDlLTllEckZBdUE5QUJJTGFBVllBMFVUQlo1bWZGMm5FdXNDMkUwbGFveEsxZ2lwZVRIekl2ekRMUysrbUg3''@;'; put 'put ''cEpUcmU5UHFONkNXMEgvRFBtZ1F5UitNeStnRVJlUXdVMDRBOFhBVXhKODQwVjFsQXl0VTdIY0dqb1RBVmQwRjM0MkFYSGFzTC9RcjM0aWhRYm0zU3pCQjNvWUM0ZWgwZHpPZzBPN3V3a0Z2RDBVbTJuMG1RdTgvQS9KVlVnNkJQZ0NOaWJNVVVCeXBSaFVjQVZsVXNaWTlLRXJZcUwxM3grbS9X''@;'; put 'put ''eitLSHlPc3dyejVaUXdjRllZSlA4Z2twVzhNekM3a0hGc2pyNzc2R21NenRCYjV5TFRrSHJMQUp0U1ZiZ0t1eUhYTU9na0hZc3dYb2dQWjBUYnJHV2d2am1TQ01Bb3JOUEpIRW9pRkFKa3BNalRDVDZvT1RreCtjbjRQWFcrZjc5a1dqKy9yNjlzVmkrL3FxOW54eGRmV0JQWHNlV0YzOTRwNkp5''@;'; put 'put ''VnZuNW02ZG1LQ3ZIQVoxbEJSQUIxQWhlN0lXamxJQWVLVTVoOGRZaTZmMFJnWTYwWitJNk4xUFgrZDZaREJMWnJNOUo5YTJJZGEvQXpaVkNmdXhvZGFrdjZvU3RnUFlRRWlhZ1pPeFJxckVMQ0Vtai9SV2oxOGgxZ1lHTVNWbXVucVY2STlMekZDTDRYdzYzcGtZYWg3MmR1L3lKWlkrM1hlb043''@;'; put 'put ''UDRORjdLK1laK09MQWFiZTUzZEVXQ0grcmMyemQ2WStiZU5KKy9HZUNwaC9sYjBHQ3l6MVlMYzdrd2tEU3NBd3RVdUFPVjR4V1lYYkVNQ0FxTEFkbTZyTUpLcFZWSlQ3a0ZOWHM4VG85WEZHMXcwcFM1UkRxcEhBcmdtTlVpQ2FUQ0NrVUo5TisvdFRudVB0US9zWFBmL0dSNmZQZmlVSHlIUDdy''@;'; put 'put ''bkUwT3J2Wm1lL3NXK0s4ZXFobUtSVUhTaXQyOWdBdU9oN3ZoWVp6aDhmWGdoUGpDbnI5ayswcjA3d25HaEdWNEdBUFlWd09XQ3lkWXE0RWs0clZMQ0hqQUMvZlV3Z0krSlhLMWlxckt5c3JxeUd1aktvS05yOVRyOU9LS25HcXc3cHNmNHp0d2pGWGhoOStwcU52ZjdQeC9DcitRR3gvLzgxL2hn''@;'; put 'put ''N2o0T295NkFVU1BNMDRqNmt0MG1qQlhhR29FbzROelRDRjZSQW9TOElKQWxMdUUzQXFnUk5iajBScTlIQnBBbDBpa0pZOUZQNlVtTTV4SHlaOWNISXpzdkQ2ZGI5azdNalhkWDRIdHlaOFdSbWNIVi9zSDNqVlgxUkxyM040OEZodWRpOWZoQSt2VlE1TUJ3YXJVTFlOQUhhNHZBK1RXZ1ZzcXRE''@;'; put 'put ''WG80TzM4ZFVTcElXZ1ZzUmFFVUZLc29MMlpGV0pqTUlScEJyMnhzYld6eHVxRnp2ZGZyVTRQZWhxVEZVSzVCaVFYRURDZVNCa0M1aUVGV0pFUktNWGNkSFJpNGF1ejJXOUkzVC9mdGF3bDRKa0x4M1RISFNyOG4wN3h2ZkdpcFdyYzRpaCtEaFE0ZTZmdkt2U3QvY2FDMXVkL3RuYmxqbTZZemtm''@;'; put 'put ''dEljTUkvQ3R1Y08wRGxEWnhqRmFPaHBtUzlBZ2lJVVJEbFBaanA4S0FGZy9aRDFVcnNqRG5Od0JTZXlOMkZ2NS83MFc2eWt1NWR1NHZxRzFHQVF5dkF3UTV3NkVFanlTR1RpZ0NIVFl0RlFKQTRoUnFBZ09HTUdLY0lCT3JyRVFyMEJMb2pIZld0OVMwZUZ3eFIxNmFockt1Y3hpSEJ4NUFuUU1v''@;'; put 'put ''OXJOS2YvaHJDbU1rYjd4OWVTQTFNREYzUlAzREZVS1ozZUdINHhKaG5JdHd5SGhqYTFUN3VCcFVwUHV2enpjWkJxYXBxWCt3ZTJHdXUzZGFkbUc4THppZDZaeTJXdmYzZGkrMzRFNDF4cnl2ZU5CTHh4UnRJN25sSHQ5ZmY1OFRZMmVmM2Rqc1kvbTg2ZTRjQmpyMUNBellFZ1cwcmdYQ1ZaQlhR''@;'; put 'put ''WDRDOUNvSWxVeVFkNUxPSDNjTForN3hlZHZZVzZlZzVIUS9nZmt6L2xQWnZvSkRnN05JU3dVK1ZuUG9ndzRZVU8vWU9pZ0hrM09aVDU3aVErd2c5ZG5iK3NBY21RL0E2eUFzcjVlZVVmN05GNnJueHB1VEdXMVVWUWxYV0tvdEJ4d1FMNWVlR0lzRkN5Z2dacS9TTzc1YWxUZTZBL0J2WWRFeDI0''@;'; put 'put ''bld3NmJRd21ZajBRTWIzSTgwWmpKL0Q5ejhaQ1ZDNlQ2Q2RPRWNXQVM5VlQ2a0k2RkRHbU5kY2pjMEo0QkMzNGRPNHAvY1hZODgvUDg3T0lvWE9rUnI4VDRDSkluSWxteWorVWxNT0ZDU0JMRWdzbkFoVXR1c29CNmUwVC85UDRXL25ZdXpubjlLZlRNT2NVMmduTWNwekNqQm5Jb2hqU3JOeUNw''@;'; put 'put ''K0dPVi9KZGQvLy9QTmp2K2o5QlozVHZ2NDcvQnFjZnkzeW9FUXlhcW1xcEd3UFU3WXR3TVEzRmNrUXlzQ1ZXS0d3S3Fac05wdkg1dmJXZXZ3cXVoQlpEaGI0ZEEwRzI2MVliai9Yc3lmaUhHaU96bmtqZS85b1lIODBzcWRuUmkrRDk1VFMwK1ZvU2pnN2c1RVQ3ZHNqYmJPOVZiY1VtYzkwblcz''@;'; put 'put ''cmR3bWpvQ2NQb2l4K0p2TmtCV2pLQnFlRHFJWGhKb09nVVBmMUVrRFFOQmhiVlJzKzBSUjlZdHFpVDdubXUzYnQ0cE0wVjJxSUFtU0NpbkpvVlFVR3JmSWdraGdnTUJhMVdsZ0d3T2pWVTlMVVFUQzhGVml6aUM2MWsrazlUdEwwaDB4Q0RZc0FIS2hhSTZoWEw5cFpDWVpIQnhWQ0FsS3VidDFM''@;'; put 'put ''RkZXQVl5cHhtWFdmMlVYL1M5WW1rd2dsczhucGlURTRxd0dmcjlYcjhmbXFSSHVKOHVTaU5sYVJrQUFqcklOWmw1MHlYNVRVcWs1bXJvQUJtdURhZ01RK1JwNDg4djRYcno3MDJPSG9YQ2pVcjI2Yzc1aGNTaDNyNlJ3MVZLZjBIazlqWTdkMzZiNDlLNCt2N3Z2QzNvR0RDVVBQVlNQTk85VTRI''@;'; put 'put ''Z3Rtdy8yUms0Y2ZPL1MrRjQ4ZmVHZzVlMlU4MU93UDc1OGVPWkVLZW9hVkMyZXRUZTZXeGVHRlR5MnVQckd5NTc2bGVxZmQ2MWk3YkVyVVJucWlPenBpUXhRZkFTM0pEMERlaUtBNUJKTE5HZ3h3U1FOMUFMa29RR3VnWWx6QVRIdFRxOVVWNmdxdWp0ZUMxaUF5VTl0ZmlVbDM3dGJSQlJ5bS8x''@;'; put 'put ''YnUvOEs5OTVJbjFyYjlLejZhK3d6QWZCK01meHpHMTRGVzUwTDl5UjZRT0RDRENqZ0N5R1VsVmFja0I1V0l1ZFpQNTdMWEdmVE9wanFYM1ZWcjBkc010amFIbWluZEd3V1BFMHNLbHRrby83SVA5eVoydEhkMDlBMUZsM3B6ejJOLzkrUms5NDkvbWR5MkxmbEw4a1JidGlNNjF0QzRweXUrb3gz''@;'; put 'put ''Zk5kRGVQdkNUM0xueHJxN3hITk50cU56OEtKTWhvV1NnemxaWlFYRWtMWXNLeXdZWEdqeGcwc0pIWFdoNWxNaXJDTVVIamhNUDd0Ly80TkxZTFIweDMwcGk4blFtYzNveXNlS0xkZHd5VmdYbnR2emdnVVJudkNVMGZWdG02b1BaVUV1OGcrb3lGRzR2TUgzT3pDeWtQSmlZbzBBQ1UxV2x5VkJw''@;'; put 'put ''cmpMN3dMb0U4TWdvR2NBSkNmY0NXTC92aldPUExDOC9jdXlOTnhadXoyUnVYL2dzZVdMbnZRY1AzcmR6Zk96VXpNeU5ZMnMvWjN1ZmdmbjZZTDVLRkU2MnlSeWI2bTZLSlJDYk5jV2FON05vS3JuSERWUTVvMW5pMzNxbitmUDRtdHhIOGVkelJ2d1dXZmxGK3QvVDVBbEp0NWJIMTZDV3BFOGVu''@;'; put 'put ''M0poTnFxczJzQUhHcVNoSXpOK3pFWjF5K1BPOEVGenIvQkIrWG5kRCtmbFJMRmtKNWhKU0dnaVJLRmtCb05TZ1JoeWtXVVkyVUkxWDhiK1Fjc3h3cUc1dVVucDFCY0o5ZExEaTdueFhkallmdmZFRWp2QWlVK0ZZOTdydXZrQnRxLzZ2b0V2ei8yMnZac2ZZWGQ3M04vT2o5RGQ4RkJoejdjd21Q''@;'; put 'put ''cVRIa2s5WGdHZG5PNlgrc3UwYURNc01kMHQvRVRnbGR5U3pWMlJ6ZUpQVTNMQzNYVGJ1Yi9CYlh4Y2RCL3o4UnFwWTZWZ1gzSFRGSXlybVd5VzlxSTJHY2pGdjJiMEIxakVUQm1HMFV3NUo4c0NJSk9WZ1YySHRFYXZBcm9YVEJkWUJhV3lKei9RMUcxYURQZG5zNG1EZzFYSnpxNUExOTVKL0Zx''@;'; put 'put ''dVkrUllIOS9uM3Z3K0hja0dqVnBKbU9URnpDTW9jTSt0MFdEZ3NqNml4eEVOMEFTSTFiMVp2SGMxOTNNY1hjbTljd3pXbS9zUVBwWDdhOENmNVB0ZlplT093TGdhR0ZkSmRXRzJhRG9hSlEwSmRFcWsxT3Zwb3IyQUp4RTkwZVI2czJuQXViWFBzZjZVaG41ZldKZFlabDBtdmJ3dURSaEJibjBs''@;'; put 'put ''bk1DK0xGcEg2OW5zK2pwZGxCUC9mRzBiRWRuNy82RDh1QTh4WEc1TTJrVkNTa1kxNUVmRnNDdzNHeE0vbXMzbWR0QmorVDRKdzRqaHRlOVQva3R4K0xmL1AyeDR6blQyUGJCLy93UDdKaytuMDZjbk9lSktMT2ZBZzh2TER4Mll5SDV3S25QYk5NZGJwcDlRbkQwSWU2c0N2Z05XT0t3Q1NGWEEx''@;'; put 'put ''Q1ZUQ0NUQUZtdXFUWVpxYzQxWjczT29hQkRCbWVjOVpyZk1sdlV6MkRwMk1wVTZPWFkraXpVTHE2c0w1OGdUWFN1RGd5dGRiK09oN01oSU52ZVRZaGlZYUJ3bTJVa2QrMHFpQXJOU0lOUTFXakRaRkVXZVViUFozR0p1RHZ2OGxBR0RFTGVLL21KaXBvNzFlTUtmc0c0U3d1UzN6ZDdwenRudzhm''@;'; put 'put ''NGxHVUM1VjdlN3IraThxcTRoRHlOY2YzVTQxVFBtRCtSaGxmdVhwdnFsbm1YUFlxZ1lYRVh3cW9FMWdmd0VnYUhBc2ltOEFwcUl4TjRrY3ZkNG5IcTlrZklldW1LM0gyeHVQWU9jVXZZVmtJTkg1ciswNi9HeldRYTZYTTg1QmpaODJ3bEQ3dTIzR2ZRK1NRRW4rVFgvaTRUSmx3RnFJSzlxclFR''@;'; put 'put ''a05zRkY0S0xPNXlKNTFZS2F2VUVQQlpkRnRtcW9GelJFU3RnZjl5Y0NPTzk3WDBmNHFwSEloSGZ4c3N5QldOL1JvY2xySXUxdGgySXRJNzRkQjY4NmtiaHF1dkxLL25EVW1YQkVFMVpEVzZZN3Zqc2FDZmUzaHB5SnBvNUliZDJ1N1YyN28yeXRRWURUSk5NenVHOG9iOUp5WjQ1a0NtQTMyTFJ1''@;'; put 'put ''b0JqVDY2VCs5U3lZdEdtSmxuY0FqbndLK3B1Uk05a29CUnN3THQ2ZUdabE1IcE1zamluemt2WW84VEhzdW0weUcxL3U2MXVPWnlkdm02K2F1bU1IL21UdXFxSFZucDdWSWZyYmpqdW1PSDNMT3BHS3pxVmtOamh3VG9scGNzNERKZ25uUEpTWEFlOGdQOGg5ZndIK1lSQnBsUFBDenhreUEyTjVF''@;'; put 'put ''VktZR0QzQldCV1U5d096b0tFdEpzclo1b0ZiR0hSS0tra2pka3ovQ2U1SzdQYnUvT3JaeGJOZjNmbXI2YSs5T0EzRC9RMXBZei9ieU9UYXMzeWRJRWZKM1l5L0FYL1VxR0JvT0g3S2dtb3ltT09id1dEUVU3akNLbUZJRFJzZFpKcTQvKy8rYmhtTHVmOWg3enR6ZjRGdHVkZnhJdnoyT3JieHNR''@;'; put 'put ''MHc5c2RnYkRWcVNOYXBCS0REUEpPVHZCQUdGdHlTeG9RajgrZCtkZUNuUDkrWGUzTU8xK0xQNUo3QzA3bWp1VGZvV0QwdzFyZ3MreWs4QzI2OXZGOGo3OVl6Nk5tS0U5eTlBUXBBRCtnVFJ3bkpIY0FQcnYxMmdQalRBMnMvNXZKLzIvckhjRC81MlNWYW1SRkFMUGpaOXVhamo3NUpmdGE5NXV5''@;'; put 'put ''R0h1dnZySi9GVDJ6aGN4VkF2MVV1NEdYdWNzV29BK1pyeU04bit3T3Bha2I5dzNRK1ZKalBDb3cvQmo4ZE1OMmJQZVRuM2U4K1FZZVA0L3Z3MHh5M3pxZ09qU1F0d09HWmx4Um1waDdqazVKMzU0d0tqUmdqUnJkZmRQK285NEdobTI1T2dpejY5VC84QTExemJ2MzlaRzc5R1pqT3djYll3a2RO''@;'; put 'put ''aHhBQmdJUnNYL3VyVElxZjZ5QkpZcEY4RC9wYVdkOHE2RGtCbjV3MGdFam1zeWFzN3NHWjYzdklWdzJmNER5dUUzU0kzeEE5c2lNLytrSFNaTU9Db2hhRWdoNDArYVpHcGFCU0t0TGN5SFJBWTZXS1VHTUxiR3lxME5zeWFxeFNvV1VKSHlYajBsT21IU1V0MWxqVzB5U2I4dUpqWHRwdzFLZ3pV''@;'; put 'put ''LzlXdmIvZTUzSlF6NWJINnpacTRLaVF4UXhuVldURVdRdmVXZ09vZ1hLNEVOOStSY2ErRXArL1BMR1V5TzVPVHJrbkE0MkhkbGdPMWt6TjlzNVBkaEg5TlFkeTM5alcxckU3MHprVGFEQU9MdG9zL1owNWIzZGt4dHdYQ2llUUZKOG5FeURyREdBTlBYZFdXMEdVSUM4NDlCb0FhWFdadkpQS0pu''@;'; put 'put ''a282VGF0ZWRBNU56ZWlxdDhHWDZZRXQ0dU1kZ2tEVVlpWmpFYUVqQzZqMDI2REpZUHMydVFaOVZPaTBzdnUwR0w5NDc0ckJ3YXVUUFVmYU14a0dnLzBlMmJhMm1ZNk8yZmIybVk3aVg3MHhtejIxR2gzOUFBNWwvdTNhSGZPQjhaYTc5NW9kRzl2NzFLVTQyazc0TnpiZ0hQbGJUSGIxcmFZNVlL''@;'; put 'put ''MjJIK2RtcHc4TlI1ZDlrYnJSbnlSeFFqODg0M1pvOTREc2FyMDZZbUpVK2xtVDZUZWtkZ1hUeXgxT1JzajNsWjZabkU0czBEK3pQUkM4WmxSMkRFd01rT2pHTW9GZEhkdWJzU1FVMlN1MXcyNGZwSFJMbUdnMGpNeitOeDZlbVpZUXZFQ2VQUmtzMjRVb0VlVmtnL3VGRHV0VG5aeTVOemE2SUZv''@;'; put 'put ''OStpcGJQWkdPRGhzWFR1MStjd0lQVFBpZ1RNem8zcHE2UU9QRndoVGhvaWdJQ3Y1WmRveXFpSTl6bUlCYmJmZVlyZlZVZ2x1OERIM3E0ZWZWbUd4WmlkZG4wcDB3bkx4d2FYYWtQTURYYVBYVFk1ZU0zcnkxdHd1OVVwbThsQUYzcXZla1U1NDZqbzhiV09ucHpPbnhyNTQ1L1JsK0RONzB1azlI''@;'; put 'put ''S2RBRnVQdHdQc3NhSGV5UW90VlNoMUdLcExtMlNyMVNLVlNMb1BHVnNzY0htaEpnU1hQSzh0UXFRTmpRd1ZjWnJYMHcxM0pDbytieFNsRjBjN2xqSnZ5ZnVZMDVFaW9NcjkwODgyWmJkdkdFL0ZXcjZaZWIzVVNaU28zZ0wrZUd1OUpPeE9hS204OTA0TzNreGFBSDgzUitIYXlxbEZIVkVxTm12''@;'; put 'put ''bXdKZjRLREExa2pvcXNVczF5V1ZRUWlYQVpNSTBGL3BwdlI1a2hySk8yUnFWdFRaYzA1cVVOeC9pckExUW5ucWtCbTJqeWViMGV5bCt4dnRpWEh0L2dTZ2M4akpYZ1ljdlFpWFQvMVI1bjQ4NzJYWWNBSlVlUDlmY2ZHOTJNa3NwYzUvQnFqNitwdDhHeGZXcDdlMnp3NnZIeHF3ZGk3YnR5aDBM''@;'; put 'put ''Ym9wRnRvZEMyU0hSYmlKLzlOQ0NvQW1qWVRLTmpCaDVYWWJRRUNqdnpCdHVLVEhKQVJMM0piYUkrQ01ycTREZ2xmNTFlNG5iNGhsMGRtWW51d0dSYkptTmRpaE45WkU5UDdsazhPRGpyR1hEbm5nVzI5blpyak5IRUlMeCtrZncxNkdoYTZnWEkrL1JyS2ZMb003SkhSVnRUWGNYYytjcE43bndS''@;'; put 'put ''VklpOURRMW1VME9EeVpmSmtJT05KdnFycVhIZjJqc3cvdm9yNjFscGZEdWxPUzNJNVJwUVFVbGFXVFNUSURCY1ZleFh3VWJ0Q2g1Q3NGZlZXUzFHUFp0VkxBa2lGRHNCVlBrVlhCWFVWbFY1dGJhbXpIaWlzSlIzZjZVUkI1UXFUd09KckgyM2grdG13SnBZTExVU3VaTU9qUUxvWFdDbWlZNnZS''@;'; put 'put ''dFpQOVVhbTdXR3E2REJSQXJCdC9zbStwNVl5R1d6ZmoydHpiL3h5NzUwQXpqYmN5TStSSHM5bllGelo5NkVyOFgxTUFaU0FXL0cyUWdUb3lZMys5S3lqanJrK09CMVpLQkVybDlXaVNsQXE5UmtGalRRWDJEV1FPanlrVFZUUWhLaFV0dUlXcGd2MHYxQlhTaDkwd1c3a2N1dU5icVBicEFGdVVZ''@;'; put 'put ''UmVxZzIvUk15Y09PQ1ZQTGs5bkVsRkI3TDhKV09haWZUc05PdjI5aGFoWGFib25TaW5Xc0s5a2M2K0F0NVRudnpoWnpqYWN4QVltZldrcE5TdWx6RmYycitWNDBzSllVaWJMOXR6eTA1MDI5VVhJeW56SlpDVWNoNG9pc3VZY2RqUEpuK0o3YUwrRXN1Ri9TVmNNUmkvY1hMeXh2Rk9xaGQwY3Ux''@;'; put 'put ''QVVndlNweVltVHFkVFhVdUorTDRFVncrUXBNOXRCMzFPWDE2Zm8zSmFCV0lRQ0wyZ1dGRWdHWEd4UHFjdlZkTTJOalJkZkxSTEdPaVM5RG41T1A0Z2ZTNzNXM0xtUURsOWp1cFEyMEdIMHBmVm9RbzdzeFVwTTVrTklvMnBQdnBOcXRIbWhxYUxqM1lKQTExUWg5SmZUSFpkUUlkU3JzM2c2b0lT''@;'; put 'put ''ZFNEWFdhcjN6c1BMWVlCVEZicitHWjdFd1lHa1o2Sld3Skx1UzNVU0RoaXpUSGdGeFpoL2FDcmZhNHNPc09temVoTzN2UTN4aURsUG1zOWNQdDZ6SndMcytHLzZVN0NKM005cDBBYWpJT2puTDhJNmZhZ2pHVExEUWkxZ2JDTlM4TmJaTnJ1ZmZNanJDWEQzRTAvK2lMTTBBVG5UelNyNjVBeUNS''@;'; put 'put ''a0psMEhlT2gveTdka1FHWFpIZ2N2YndUSGgvcTJkNkl0UlhGKzFLaklTdW1LdHE5aWFHMnJ4MWJsTzFmU2d4T3Q5azcrbG85b0FtYWRBN3VrTmpPNmkrQjJ2Y1R1NEdmUytjYkxOZ0ZaUDVSTGlOaWtheVJBTXBBQWV3SlBkelRaVHBjRVluVmVLOE5Ec3ZwcGZTelVBdzBYQmVQSUczdDhZVDQ5''@;'; put 'put ''dTJaVzYrMlduVjEydk16blFQVHFmKytJOVR1YlAxM2lvTmxUbkFud0M1R2I4VmFFS2J6RytCWVVvQ2Y3TjVZSlUvb3NvOGtySUhDMFpCMlo1YmRpcndXN1BiNUdaaGxDTE5uMHB6SHBqVUU0R3kyUzZaNlFKeXZnTWNGcGd1bnN5OXhKZ3Vub1Q5MklGNGE0bFN6dW1TdlVDeTdxczNNRytGa2J1''@;'; put 'put ''dDdOdi82cEh0UDU0QXpXd2VQMGIxRXd6aURna082Ri9xLzlKZjJQL2xucjMxWTBNZnUzWDI4ZkU3UHpvT0l5N2pCK2pQMmp2NHZ0ekJncDlPaExGWkRtR0ZxTUFLS3Qrb0Z3WEdGa2hSZ01WZ01GREVjL3BGdDlFZnNTWWlvaEUvOGJsN2QzN3p4WjJmdW52bjExNTU5VldzWG52NTViWGM3K200''@;'; put 'put ''amV0VHhBWGo2cW11V0trR3ZJWWhBYm1sb1NsZTc2ZHJ0ek84MWlPZHdlU1czS29VVFFheHdIWlJnOFZqWGtPZHU4NmxiZnluK1dmK2N0dWJkVk9KcC9YSmFsTmRrb2k1T2Z6NDJrdkpic3ozRW9lWFYySE9MWHhrK2d2N3lPSzRJL2UzK0JPNVYzRTBkNlFYM3piZW16czl6c1lOck8vR2U4bnp3''@;'; put 'put ''SFVCUmphbUFPZ3dubkN4REVsb3NDZ3hBb3htOUJhcVFpbEN1QitEYkk1UlJaM21xbHRyaU5uS2c2NGlwVTRSYXhhOXdWZ3M2RjJjVnZYM1dyRFg1L05pYTIrZjZ2UE5JN0dQZGJZbGdwMTN4VlBONnBpbXJxM2xFNkZFZFUwaTlQSFdvRTBUZzFtdVhEK0xIdG5DMzBhMXR5djcrcVFFUityZjNv''@;'; put 'put ''MlgyZHFiazE0MTg1UHBNWUsxNC9GQ092RXlCZFVNclFZZ29pbGdCYkh1NTRsS0NjcGRFbzJrQVFQS20xMHFlSWNUQ2ZYMVd2bUtMYjM5cXVuOFRvNXJiTUhXajRjU05kV0owQ2RhMnVvME1YVnpLbjVYWnpEUjF2bXgyRWl6ZW4wZERlQldmRE4rVkMvaTZ2VzEzRnRJY3diaDUzSnZzUXdaS3VQ''@;'; put 'put ''bTFuZWdyeEs5ck91ejFWR0Z4SmFSYytLTXBFVFhaL28yVDB3RnJURHllU21YSkxqWEZDTjZPWGRrYlJUL1dyYXh6K0szeVRTcVEwNktLWTBOZFRhcnhXVFVWU3RKRlkvdHdhd0xVdGtIcUg5MUxPZVNseUJ3VHo4dFBxREhDTEllckd5UHhRb2l6WXgvT0JmSzloM3M3ajdZbHczT09xTnRBNE9o''@;'; put 'put ''YU83RDJkN2VyS3RaT1ppcW5qNCtPSGg4dW1xb1grbHZpblJvY2xkV2RrWk9YV25FZHhpdlRQSDhJRVQ2UVMrdlI2bGtFbzZUSnB3aGtlYTFpM2hTaVFrd1g1R3dNQkl6SFdubW1TaXlpQkluMG5wVVQzTUR3UjZnYXJIWDdJd2xXTFp2c1NzSGpwQ21LWkwrdGY4N05EQ1FPRGc0ZW0xdGQvV09S''@;'; put 'put ''SC8yVzk5S3AzMmVjNms3Um83MVNSSEtPMUxuaXYzWUZ0U2RqSnN3MHVDMEdoYUdLU2M3ck1JRTFFYlFaRmNxV0prSno0KzBtSTBHdWFSRVYwbUxTbGg1ajFsT1FJWWZSdUQ0czQrLzl0cHJjL0R6K08rbzV4dFBwbVpUSjA3QUN6NU0zZC9jL2lNTGVBODV3M0s2T3BuSDFVK1RuQUY1V1JCa1dT''@;'; put 'put ''bFFRT0daTWxsZDFCbGJiSlIxRnYyKzIwN3o1TzNHeDZSM3NtQTNHdXJyRGZSMy9nNzQyb2FpK0lmNFJaMExCMVJJSitBQStvN2tBNTdEMTVBN0w4Vi9USE96Qm5FODl5MXlaK0pTL2NkVzBmM2N6Qi8za084WmJ1Szh6Yi8rS2w2SE05QlNXeEFocGlqY1JNWHZCNm5nWWlFQUZnTHlNU21BSmZX''@;'; put 'put ''cWwycGJOQlpVTTNxa3ArdmdZRzdnbWdIYzByR3p1M3RYNTFvVCtmTzFYVHhHL0ZQMGwzZ0VnTmFZdEJkeEJVTFp4VXhSOG5XOENIcVhOVFphekkyTjVwODJXaXdORFJhTFpGc09yaWZSLzlBTWJuUXQyNXZPYWdJOE50SXNRalhseDJrdXJ4MWc0SUJnVjF4Tk04dUFTNjhXR09sK09zd3NLSm1z''@;'; put 'put ''Q1dEV1RWdTE0VkxhaG14R2o4ZERwVFFGSGMvaWQrWFZJNVlhQzhJcUh2bmYvcTVXVzFobmJBQU54MlEwMWVpYzBWcUZHUFEyZUlLNnFsYXJXYTgxVnVxelZKakF1VWZoM0gvR3pyMU5wT2ZlaHI0cjVaNmw4VDh5L3VSQlBjbUVxOVphcFNBOFhFa1FYU3REU002d1FOcnNSNUtJODdqdE5yTXhq''@;'; put 'put ''NWVvbUdWSldaN1V2YXFTRldQZ01MaFQ0bVBOWmZMbENud3RkMTJaakRtMkJ4YURFMjdRdVdDdE5DY3hoZjRFUFlyVVp3aCs4bEhHY011ME9ZcnJ0Mmh6UW02RFJmVFVGbTFXODIycTBXZTJhTE1uUDlkaDlGZThEZG5jNWh2NWNTclJEemEyNGZsV3dubEdDd1kwbGt6cEtYdWtjRmNqREV4SURj''@;'; put 'put ''ZWdWcXhvZ0RlcWxrQTFsVUpqU3E0b01hdldvRE5BWjYzRW55cUJXV0k1QVNkR2M3SkFJUURyS2lBbjR1Uit2M3Mzdm9zMDVJdy81Ums1TkQwcm5ic1YzNXk3bGVmUUpGbk9VeHk5azZ5UHgvdytoYWlxRXdBcmJGckEzeG9NTDJrN0lQOGt4MzJhZmdJTTYycDRRWXFyWkplcEpZT0FtVXUySm9p''@;'; put 'put ''Ni9iQnFlOTRJQ2RJK0NDdHV1dFJPYnVnVTJ0QkpPSFd4WHNuQTVnNDA3Wk1jS3RPUFczaVZQbThya0o0UkRMdDZrSTlhTERPSHplUlhKajR1SVR4WitzQlFqVUpzM0V5YnRUcyt1YU5jd2xjNG9YRGhqU1RiclRsMDc2NlNERERBSlpZdnhYQzdXY0wvMnhrdTRTS2MzTnptS0hwMml6WW41RGFB''@;'; put 'put ''LzdkczBXWlBmcHpENkhyZXBvRGI2MVJ5M01mbWF1UHJXZjlZdVhHd282ak5VZUJ2bTlxcy96dU1zODdXMDhiWHMvNWtTUnNhTkZhdzlmQnhEcTgvc25FOVFFYzBNUE50bG5mUlFDc1JObW9ZUzJwTWt5NDBSU3FHVmd0dkRkcDZWalpxaG03VklHOHFDcjRQWmlWRjlMTGZBNGdxSW9MUXh5L3o1''@;'; put 'put ''TG5SVVRsOTdsdjRmRDZGRG5lbmNkdmFuL0pFdWwrbS94Tmd3SEtER0MvcGtIakovU1Z3WXZrdURFNmQwdGsrVnNKdk5yYzVpaE5idERraHQ0R3pmWFdMTnF2NU50WG9TMXUwMlpPZjZ6QjZaUlBmd21nT2ZSSi9tNEFwaFZSUHFXbitOMmlRZnFBT2Y4S2FzT0tSTzJKM2ZEajJZZm92aW1mWUcv''@;'; put 'put ''c2podVI2aE4reXVoNDNDbUpSTW9ndFdFRUNyUTMxdGlxVlVxSEJTSmxQZTZZZkNVVWZZV1UrNzdsc3I3SWQ4cG5QdGN6VlE5TWlMQmxWbVlpcWcrY2ZTdjRnQzQrRHFrb0RxbHVQYy9FaEtNT3BBVzRUOUxUNWpINGpxeEVxbEJpSTdrVEJvd1RpSGxtc21EdEhFVS9Sd1pZSWVUR3kvNEY5WFpj''@;'; put 'put ''SEl3czdReEhnTHQyWHQ4R3ZhNy94T1BBVjQ0dkFaUER1MDJtUEkzZlArQ0t4blI1WmZ1aUF4OVd6MG5GNkZMZ0wvUzMzOS90OStQNDQ4SmpjdjJRL09CWFo3OHNkaUNOMi9peTNodUZhbDRTUFQ1Zmc3T1kyUjlHL2J0SG1oTndHOFBHSkxkcnN5WTl6R1AzRlpsN0RkWFkyVjU4MDEwc2J4OW1V''@;'; put 'put ''ZHhWaXpGK3B3TW9WRlphaWpmbkNZaENiV290SmE5Vlo5VDZuVHVTWklKR2liRFZ2UGx0dDlwV1NiTFhyZWJyYVRkK1VzOVVvTFd5SHVYWGtaZFJDZlY4VllFQXdGWXJtcTYzS3VlY3N2SU9YVkR4MTJ1aDFlcHdCTndzUDVuM1FvcnlFV0w1T0xGOFFSVU1BMjFtdVV1d3lsc3E4bUtJcHpLbUV0''@;'; put 'put ''OWMxMmQwOW1TVTEwZmxRYUQ1NnBKdG5NNC9UTE9aeFo4SVJTNDNHMTliNXVmSzhqZThCSEVkQWNTQW9kYWpjY3dIZ2UwL1I4L055ZXl3dUY3Zi9TdjU1ZGFyNCtabjgrSWQzRmowWDdQbjJsVGNqeGdmZ3VmQm5vSCsyb1FoS29pUEpsUWFBbmFzZU5Cd3pybEIzWVZXRkJwUm1VYVdrVlJzVkts''@;'; put 'put ''S3hpdFJJSmFwVks5VWFJbGR0MkRJMWxWVUNsZVVTK1VXandTQkMwV1Iwc0xjN0dBbDJ0b2RoZ29BQnFNM3I4V29CNUhJd2VVT2VmbEdLQjQreWJJd3hJMXJ4SStkOWtCL3hnUFBRU1kvejVNaStveHZTUDBhWHJaN0wremRGb1hOM1RyYlJwSkQwRUk5SEQzYkZoeGF6UlZraGlZNk9SQ0U4blR2''@;'; put 'put ''U010THNNL2VGMnVNODl5SEpjaC9pV0pHc2J3ODdIUXFsSWdxbWlKZzNSUlJwTTFiSk9sa1FUR2tWbk5iVkxFWjdsV3hpMjJpY1ZyVU1DaEFMQURBdnB6M1B6VUtzazBxa2RjdVgxb3RxWmVHTnZmQ3BpM1ZMdHBYMG9JWVFPbFNtb3lvZkk0dWp1Sm1yWjlRWm9IaVBhbGtOcHNvY1BsS2lsaVdQ''@;'; put 'put ''RFpSTC9uQXR0bXRMYktsdXpmUTF3eVg1SUs0V3djMXRMSjdyUUdsb2d0UFdWYWpNYzBwYlh5aDZmbDV1ajhXanhlM1A1TWM1ZkJsN3Z2NEt2TjNEeG5tVmovOWgzajREMExNWFBUOXE0dTMvRDd6OVh6YitxM3o4ditUUC81bStzZkY1KzhNUG9YeTlYSUo4QjdTbklOcWROT3FZcTdxaG50MXFZ''@;'; put 'put ''VElhS3ZCRTVzazZHdXFVL2ZuNkRkbTM5cVNKcHIrQk5Gd3RmZ3hXYldOalk3Q3h6ZWZ4ZVdsTmdpemtaUGxtOVZHbGdkMkZrYkNLbTRNbitCOFhreWNtMHllSCtpNVBIUnhwMlhlRGZVL2NQdFhpT0dnZnQ4MjBCV1pqbmJOdHdXMFJVdldGNWJtYkoxTFhaaWJlbjl3Mk94Y2ZhRzQyTkRYWjJ3''@;'; put 'put ''WWNhejlxMzVHSUxuU0dGMktKeFE1YTI4YmluNVIzYmVPOGE3RUE5M0VHeHprTzN4dkxQYWZuOTFqUjgvTnlleXhlVzl6K0svbm4xYnVMbjUvSmozLzRmWndIcHRDMXBJYjRtSS9Ramk3ajkzRFE1QS9taGtJS0VTc1Z5b01xT1hodm82RTlGMElxNXJCYUxiUlRLaFdMUUVQS1pkWmhabGZTd3F4''@;'; put 'put ''RHU2NE9oSjNzWUZSVGE3MDRtUUNNeE9KaU5teVVyUFRYYWRuZDkrUXl0aGRrODN3OC9WU2hlazNJeDE2dFlNVzI1UFU0RTJoa2ZsK2R6Vm9KdXBkNmd4NEhId2xGSHhYcmNlVjZsZTFRUm8remJhbkhGY2YxTHE3SDJjcnBjUmNjZ3VseFRxZXp4ZG5zTmZnTkcvUzRZaldPYW5FS3E1RXJjUmFL''@;'; put 'put ''NVg0QjVJakxPM25qK094SXc4S3d5d2VjYUdhc2NTR1Z1Nm5sblk0NHNLSi9YNHo0M3drbjhDZjNSaVpPcDBPdWFjOXlCQmhRMkoxOUo0NTlMdUJCMytsYVNneDM1LzdlQ2ZqRjQwd1VUM2R5L0QzTThXN2pjNHEvZjFyMC9MemNIb3NIaXR1ZnlZOXpXTUpmSGdPaDQreVZ4dmxNVWJ5YjU4SU5K''@;'; put 'put ''dnVrZ0hmNVhNT2kyUE9saEozMWYzallXVmd0bTBlWTM4Y1phUit3djEyb3lGY1R5ZnR6amtoMldyRmR4UFdiTy9QNnpaRk1jZC9MOG40ZWphVERsdlo5THE4RGFiWnp2dXRZbnhkY3pCOXRvL0NyeFNwQnBORlRyQ1JDV3NRcVJBM1p3OHllWUpjZVpXU04wb2ltckZhcnpXcno2UFY2czFNdDFn''@;'; put 'put ''V1UzQXVYOFBOYVBLNnNkQ1lxaWVCeWQzVDAxWS9rNi9Kc3ppWjdvLzdmN3YvQ0p4cTZPNXZyUDh0SzlCdzJlNk1SajdKQ1BTblBkNTRNQW4wSFVBSmZ6b211bnFwbzlaaHFhQ0lKaHpTQ1dnU3lWQWRBKzFESlpGNjJqYkxReG5UUmNTNDhSSjREdE1BYVJUVVJWK1U3R0d4ZzRxdlYzR2RwWmFI''@;'; put 'put ''Y2pYbHd3ZElPQUU2dDFBdVZkaks5dDFuZTR3U1VlK2piMnRvU2JYR2Z4d2o2YWJPelFxeVhqekdlaUcybG41cjE4dG42aXRLUnlTQTlaWXUrTkNWNTlRcCs0TCtTVTVQcHNWdGJxOFkyNVNiVGZHV0dCWjh1NUNoTC9vQ1BNdnZMSjlsZi8xRml4L0g4WE1vZnhpVCs4R2RGZlUvSWZiRWF2YkJG''@;'; put 'put ''My9OU1g0TFZYT2ZoTlkrc3IxL3FlMHNKWGRGYzNCK1JjOUJtbkxYUkNsNmhHbW1nelhOQ05XMEViU1RmRUZEc3pVak8zejBHUEtzT1B2bjdzd1lGMGFqbHNMeVBpaytNQkNWYWdZUFM1Y3VOYlJrYUVlS1h1R2p6eVRxdFc3Wm1rb0oyWVpMRG12ZDlYdXI0NzJWb2lrWUd1OTNlYW0veDA0d0Zu''@;'; put 'put ''MXNLVTdsTFVuemxDM1BRNWl5VlkwTWIwbFFlZlRRemxQdDljYTdLNU5xelJmbSsvNnN6bVZ6NzhnYnVtdmNiUnZKK3d5UG9XTG16QnYzMnpyeCtlMlFCbGZNNTRncjA0eTM2eXJxeEFHMit6dXNxZ1UvUld0SjZOSjRjMFlIS29NZjBqZys1QW9RU243aUVSRkh5bmxPUnBNMHdaUW1JMDZpVXc0''@;'; put 'put ''MG1ONjNHMGxNU2xHdFkzVEtkV1NYV1dsVFVPc05weWtHSnJpNzNnbHpoeXVpbkErakwyOERyVW1tTTlpRExnNmEzeGQyU05McGRJQ05yTUZHcVFHTVdRZG1nNVJKT1dpNlBWS0RJcVJRck5CWmFzSWI0T1dma0d3dFlkcGRYYnNvQWdBK1c2MEV6a1hVK242L05GNmgxR1h4ZXQ1dFpUeHMzcE5x''@;'; put 'put ''Y1ZNMGlONktjV24wNnYwVzFXcnNod1RvRU5uQkw5a0hKd05YV1NiczJHWEVoMlJwczNUWXIvaTdMdUM3amUxYVg4VDF2dG92VWtsM0VhbnVaakcyVlpPekxaZnlvTkYrYXl0ZzBsN0VucGI2NXQyaGRNTzhMZUtNbEJza1BDZTBGSzZwQklTQUlNYWtQTmhHMVdHdWxEaU42Vnc2YTRFd2hVRWtE''@;'; put 'put ''TVlKYXNhcVI5ZkFhR2o1UUxsZW9pRkxKdy9uTFBKd3ZjWVp3dVM0VldLWFM4NDZvdEp2cHZjNzBuaWVoak1JUkRsUFhkM2dnM0orSWFVUGFVS0RGN2F5dk14dXBDN3kyU2pZUUtBNXdtOEQ2SHBPMXNhUGU3bk80TmNZNnUvRS9MaWx2ZTRldjBSWnR0emI3N1VhRGZkdWxKbkdETFV1TG4vU00z''@;'; put 'put ''L0M0d0pIMWUwdGlCeitFTmxXTTMzQjc5OGhua0pRSE00L2VCSjVocEZrVGF0QzRqRHkvUnI1V2g2ZFhjVG50MFZ1Y3JJUkxGc3lnbThxTTRVMUtHeVpkbGpNREpsZWJxOGpEa2piRjlDaFl4VHg2a2NYOG5TaVo3RGViaUVKd1luNE5VZUdVSlZORG15ZGdsaHppYUFRTDNLS3RMcHVXYlpRWFpL''@;'; put 'put ''Vmx4ZktTOWtrNUFETjBhVTBXYThiTEYxZklDVml6d3pycjJ6VWkvcCsxZDZTRkFwM1F1UDFEaFRnTDhGZk5KajhyeStORzl4QmxQdDlhWDVKdm5jbGthUElZakxjWDZPNFdrTHN1b0M5R2QvaUgzR2NCei9XTUhyUFM4MCt6NTZ5K20ra1pZVW5QMEpiUU9JQUVOd2gvQkcxbXBEWVdkSmEzT1N1''@;'; put 'put ''MzRYWGk1K1J4WVB5N21FNkFpM1FDT3M0SWF6TWp0Zm1UalcxNGZRanBCeHlwcHBuRlZaVVZHakJDQlRXUksrWTNGWjlYbzJwenZ2aGNqRkVrU1poRk0rblA5YzdQWnoveWtYUWFtd09aQUo3Si9YZzhNLzVicWY2a2h1WEVPNUlObFJXaWlrcDh0VlNScjVPS1M4M3Nzam9zZ2tVa0RZcHI1akpU''@;'; put 'put ''VTVrNWZGbHI3cHRZNzgvNDhYTHVtNjBGbmVraEJzTU9DVDcvV1FKRDdnUDVudVFEb2JyYW83d3ZuTXREN0x3NkpENUplSHQ0cmlCNnVUM0E2b1dpdVU3a1kxdHFkRzZMdWM3bi9TM3FFNmdveGhUSng1aU9TSG9oMlNRTHhobnRjcC9Ka2N0UXVWZ1lya0huUzJMdm0vdzV1T1phYnRPQUdTaDhI''@;'; put 'put ''ODdVZ0Jwb3prUCtaZ3MxeVY5dG9hRWwvSEp1SFROVUc0ejFGaFBMKytVS2dxMFFZNWRaSVEyekY5U3BDRmNSMWw3ZTk4WDkrNys0RDNEQU9EdDVPcE0rbmVaS3d1S2Y3VnYrNHY3MDJqK1RwdWxiTTVuclVranlwd2hBR2NBbE9sQVgycGJNV3JGYVJWM2dUSnNCVnE5VUsxYXFORVNsa3YwVmxX''@;'; put 'put ''S0ZVT1N4Nk94MHVSRHE3T3BNeEtLdURsZDdhek9NNVRCNGZCNXZOU3g2bytPN3dNTUx3dCt4aVpranJnWUliWEtGbGR0Ny9lZzRTNDBmdmM3ck9qa2lLUU81cTR0UzVQSDFHMnV2K25ySGVkTDhXRS92S0ZVTGlyUG04L1ZZa241d2tKMXJUTUxkcjVYZ0JNK0hwdWU2d1AyZDgxSmZ3TkdEREhk''@;'; put 'put ''akVvNit5TnZuM3FMNTAxSjcrcnlwYUs0VDhseUF1eDh1TzljVkRIY1hPTzdXODdsWW5UMWJaMXhhNTMwbGVNL3pvZWs2ZC9CMUhrTlNEbU9TMWVnUDAveUtXTFNwVWFFVTdUVHJwazRIYW9lVzVWZlViNWxmSVlyTU5XN0pld0V1SmIvaW9wM0s1bGRjcE5lVytSV2wvYVQ4Q20rd21lWlhHRmgr''@;'; put 'put ''QmZmSmwwK3c4RjNLYlFRa0hGbVowSlpMdHZqb1pSZThvK0NQZHNZRjkrYXNpOG9ERjc2MWdKOWRjRDNKY3R3SFVTN1oxSUZGVldkVG82QVVONmJIS0MrUUhpUEJ4dmFISEovdER6bysyeDk0ZkxhUzQvTUVtaTh0UFFaZk5Ka2Z2M2hncW15ZVRIaWZiK3NVLyt5Q3NpUmJSdWx2dWtEU2Y0RldU''@;'; put 'put ''OGkwQ25SK2VBdGFQUy9US2xiSDh1Zk43cWh3b2hlU09scmhqcXpWSUJtcTZDV2dVdTRmREVBenk2OW0wVjV5aXZvNXBVUXRqWm93Wlk0UXZCL0V1UjNMUjlWR3V5aVFjTk1sOVVtMmJHcE83eGtnK0ZCSkx3VzlKRnNQNjNZaUtxUm9HcUdSbXJMc0dzMnlKMFhkQS9SMkRieGdMSE1ZOWRYMHlv''@;'; put 'put ''M1FKb2luOGxkd3NIcUtKS3VuQ0tOWGtyWVdyQlphelVTakRwb0kwZVFqazhxMFRBbEtoZksyQ2t6clZ6VlhnekFETU5QNlVVRlFMS2w0RldsSmRERlk2S1BXa0pzdTFpblpXcjY5RkdFczZpWlFXRkViTUl6Q3JNckRDdENpTHBNdFFvdTR0UFREeWtnQXQ1WGljSGVoSHNSYjc5V1ZSaExGOFdo''@;'; put 'put ''eGtVakNvdmJ5R0NLN0U0WGhha0xDMVd0S2NKWFdzUHlhNmEyTFhHOGx2U1c2TGMrcGlPUnpLbzZnejVYcTBjelBmMmZlejM5a3VqajM0eHY1bkkxSzlGcEpQZ2JyeStMNUxLWUFiVzR0bHhNQ2V0bWpaZnNHQ25FS1hMTVhTZmU1ekxQN1hEeW9OOWxsQnQ1VURTY0wvQlFMYWVtR0xQbCtlQlpD''@;'; put 'put ''S0JoSTBNUGpxWFY3UFB5K0xKWkJzY2xwcytuNkYvS3B5ZHZtdGVhOFo4TnkyUWVrZTJESUUreldGMTJENU14d05sanVmVi94cFRCU3pTbXNkUTVzSUM5Nm16c0lhalJnUEtveEZyeTQ2TFpHNmFteThOUlVwdTNtWm5udmRyMVVrRVJyZWJaeWFEdWtOdFRIbkMvNktlUER2dkJZRngrR1NvQUtE''@;'; put 'put ''eTNZYkdiMVVCdGQxQnNMaVFxMk1abmpEdW5pdXFKTWthSGNXald4dWNJb2I0NHlYS2QzNVRCNjZPSDVRM2l4Qkk5NVBSSGwzYnNaTG9yb0owVTVReWZrbkNGNC9wR1N2andXZEY2T0JXRnhQeXJxdXllZmIzUVkzVmFDeCt3T0c0YnIvWklPK0ZUSitMeUdoK0w2RXRjQnIwZEZmZmZJZmNITy90''@;'; put 'put ''c3QrcDZSK2xKZjUrZUsrcDdJOTFXalUxdjBQUy9QaTlYRERHOVpiVGkxM2JYVTUwR3JER2pkRmZONXNDSW1zcDhhRlhaR1ZGcFVVKzc2TjVWYktLcjQvdExtTW0rcEhtQ0duTC9FKzJ5czlENmJCOGNPOTh4a3U4bjVPM2ZzS0Q5R3ZzNk13RWtRY2xLcU1wUEdTRVJFOTJCM2RxYm44Qmc1djJQ''@;'; put 'put ''SG5kSVkwL2dnZVE2c2Nxbktvb0xRT29zMG1GUFV6MUZhRjFDTnFyeEN2c3BDMmpTemx4NlphZ3liWW5WMU1WTzRZYXFGVERmQ254WUwvTkhFNWxsQW4yTytIUitiNTRJMUI1c3JPSGFYVkd0SU5TTFR1RnF3c3hxUkxqWnFrRDRIRFcxVmlRVmdIWXY1NG1iaGtpcEZpci9qNHNhK3ZrQUFmbXJk''@;'; put 'put ''N2xyNlE2YjUzNEcrTnY2ZzFzMXJIK1l4SlgwOTZtRXJDTmZBWnJRVVk5SktWdUhCS3JVQXBvdU1Hd3Ywa3hsZS9lYXhLS1JxRWVrN0dZcWM2RGYyTlZuNjg0N3p4NWdYeWlpNXpObTVEWkYrL0VIeUZkajVNSnMzQWJJQWE1aHZ6b1R4aEJvTHJFNE56bktWM2V5MEtGLzhRb1FacHExYVFKUXJK''@;'; put 'put ''ZVJBOUlzVENsbGQrYm9FWE4xazAxdXFUYldxa0c3V1hQUTdHVFFZdFRVT2ovZ0IrWjJmeHlCK2pkVzRpS2lPclVxckJJeWNvRmIzU2FNaFh4dGpGZDFlcWRnRkQvR0tsNXMvYmpqTmFHOWI3cTMxcDlZZlJ6WEl3MGF3MVpTcHVQUGt4eEkzZmpuQjQ5eWZXbHR2OTczTC9hVE1aNXJua1RmSVBC''@;'; put 'put ''S2xjSFFMSHZrOW1VZWlGSHF1aUw4VytoNEZtL2xpZlkvaTBhSytlL0o5RCtQWkVoN0orNTdKOXowTWZJN1ozdXZiYWJ5bU9OYno3anJYWWQ1ZGwzU1lkcEN4SG1hM1QwaHR2djV1anNmMTNzMUpiWGc4WVRVL1RqVTZ0RVU4NFN2NWVFTDFOQ3FiVTVwQ0g5OUNQbnd2bnl1UVdwSHV2RWR2RWcy''@;'; put 'put ''T1hQejdJTDZmQytQSXVOeEg2TG1FUGdKNU55ZjNHY2RmUnVmSUE0QXpuVThCdWt4a25yUVVmNUdLYmRNWHFmREt4MTFQY3l3eXlnNThMcWlmcDE5djBWUkx2OTZDM0U2LzM4THM0Tjl2UVgxMCtLdm9KZklnUUVFTFVFbnhPa2FTeXRjeHdqcndiV3dkRGFqbjZZWWFJaStsbWwxK3c3N3JoeTNH''@;'; put 'put ''dUtHVVRXRHNiOWRaVDYzSHdHNWMyN2dpNjVZTGZHdUx0ZGFYcmh2ZlNSN1UrZm02MmZxL0NlczM1TmRQVVVyZUNBWXMvQktleEErOHQ5cXdCOGJIT3pyR3hqcSt4Tjg2eGpuK1RBSmVqYUw5Z0J0Z2MrbmM4UHBOaHVONlRDOUpFK2wzTENrT0ZIM0gwaURLd0d4djh2eXVEaTFXMXZDdlFGSmpW''@;'; put 'put ''Uld1cUZSVkZIOXRrckhhSUZSV0NzdDZqVTVVRkgvYlV1d2lIZGszSi9IZUl1MHRTTis1MUYyMlg1bHZYU3JwQzRwZmZHb3FtWlMvZldscWNXckgzR3d5azB5UGpiUVB0ZzkweGN0K0U1UHBEL2dtSnNlbXZ6MUZiUjN4OS93dFRYaWk2SS9jV2ZrN20rNS96MS9lVlBhTG5BcGY2RVR2WFl6aUN1''@;'; put 'put ''Q2RTcVI2Q3JUcjlzQWd0Z0xzZkErazdyNDc5YzQzZEU4L3E1ZnV2SXhpdmR4T1lPMzhDYXNZaEZZUFBERDY3Tk82Yjd6Q1pNVWIwcjNUWVRTVG5LcTNFd1c5dmFJUzAyOHVVSUFBSkFwaFJZTkpCY2FWdEw0bFg5QlVoU3NyWlpjTnMyMURiWUhXRnIzQkN6YXIzdWl0QnZ1MmNJK1dId3hhYWh2''@;'; put 'put ''QjJ3QXBWTlRTakVENmZWRk81ZzdHMytiWFVtYyt2R0pkeWhMbHRrTjFCMitia09xWXBqL2t3b25jR1pXQTUzSXZPajR5MThldXFrNGVIMC9WYWUyTzFQQ1JYbGJFdERpV3FtOHltMUxaeS9qMy9PQVdVb05QQUI5VVBRVktYVHZqZXZ5bS94T3NXSmtxT3FEcUNNQ1ZuWG9uRWRiVzZBOHEzTHZH''@;'; put 'put ''N3d4UlAyTXpWaXRKZTVsN3pON2pIUnp2SE5qeUNnNHB2NFRacTdoZGlwV2N6ZWVkQkdpc21UMHZ4SnI1OC9QNTUrTE54Yy9QeU0vUjRldUtueGZHVDZFUEZUMi9NOS8reUJYeXZTbno1QWFBQVkxOXFKOXBjUnN4d0tERUhKTWhVYkRGZkp0aGNnTzN6WW9CSTlsbS8xMEVIOGxPMjFFRUlzbEV1''@;'; put 'put ''NmMwdDQ2dG1mb0YrRjV3SmJxL2FDOWZ5Y09rK21EK2JoUDBlWFozazR3TEViMTdYcnF1aVg2K3ZoMCtWNVorcmx5YlFmOFAyeitjMHdBQkFBQUFBUUFBMzV2bWhsOFBQUFVBSHdQb0FBQUFBTlBCbllZQUFBQUExTDZtOWY5Ui91MEVZUVBGQUFBQUNBQUNBQUFBQUFBQWVOcGpZR1JnWUQ3Njd5''@;'; put 'put ''WURBOHZFLzRIL1cxZ1NHWUFpeUlEUkVBQ2xJQWFoQUFBQWVOcDFsRDlNVTFFVXhyOXpYZ2VpZzhIQlFTc2FEVlF0ZjZXQkttaHRKS0xTcGkzUG9ERmF3OEJrMEFnSkxrWVM0OFJBUXVLaUF5UWRESEV6Y1hGd2N0REJSQ1lIblFoTGJZaVN5QVRSNTNjdUxXSmIybno1dGUvZCsrNDUzLzNlbFhY''@;'; put 'put ''Y0JqK1NwbzVSamZCbEhvTmFRRVRIME82RjBhSHpPSWtTQm1VTTU2bDJlWTQremVHaU5DQXRrNGpqTjY3SVFyQ21yOUVub3ppb2FYVHBWWnpRKzlSMXhNbCt2Y0U1ZWNUc3R4dlB1UnpUYTg4aFU3S0pROTREdE9vdkhOVlh5T3NpeDI2UWs4am9LUFdkL3o4amcxWCtEbk9OWjdpbFVReDRJOGg3''@;'; put 'put ''U2tWNC95a3lqak1jd3pwMUNtMWF3b2c5TTNRR3pmb1dMYnFBL1RxTnMzSVBPZGE4U1haSkNUMmFEZjdJSlNUMEhFN3JZL2phaEU2eVIzMTB5aDNPZmNUblpwSEdNaEpZRGo3b0VReGhCU2x2R2ltN3JnL2RlTi9teUJONnVJWTJtZUM4TE85M3M3Y2tqbXVFdmVYUXBNb3hNNGpLQVl5VDdmS092''@;'; put 'put ''alppMksxNWw1NndSbm5CV3ZhZ1ZkNGc0ZW9hUndRL01DQnhkejFHdjdhOHFxTVFTUFBQdk5zaHJBYWZ6RC95SjFYMDl1SlV4YnRxNldFTU81cC9PMlgrMFdlOWdHdk9xenJ5UHBMV2kvKy96RGY2TjBTV3FCWFcxTC90WGJVc0Y4YXM4L2VmekQvejJXajkycHJWdE41dC9Rb3RSOXdYNjFmbnVL''@;'; put 'put ''Zm1oOVcwR3kxcnR0OWwwcXR2clBjTHZZdVNBWG5aK25BWlpBNHNoNWFGYlRJdjBvMW04OWI2cTZINXl0NHFERFVnRmdwelhlYldzbE5EZStlWXB4cE9sVE5Xb2UyUGViUUw3UjF3T2JROU5QL0s3NExsc1pxMlZ6TEw3SmtLelB4WE1rVWxxUGRJNmo1ZVE1Q3JQTE9hTlo2VzE1UjF3Q3R1blRm''@;'; put 'put ''WW9GNENta1RjbTBDY1o4S2dPMU9XeUNXeWdKczZ5N09DNTFKb0RoM1NpeGFxVFJlRG9zdUh4N25jMXpwZkgvNWY3Unp3cEFBQWVOcE53bDlJR25FQUFHQXovNVNlcDZYcGVkNmR0L004cjd2VHpwKy8wMk1NMlVORWlNVHdvY2VJSVJFOVJBOGhFVEZpaEVoRVJBOFJFajZFakJFU01ZYUlSSXlJ''@;'; put 'put ''aU9GRGhNUUlrUkV5aGd6cFFTU2toNzNzWVh5ZlJxTlovcWVnT1JuQUJ0YTBxdlpFKzZCOUhuUU9YZzYyZFRhZG9FdnEwcnFTcnFaSDlFdjZndjZQWWNhd1ltZ2JrOGFjTVc4OE05YU43YUg0Y0hhNGJFSk1LZE8ycVdwcW1hRjUzcHd4ZnpiWHpWMkVScWFRWGVUR3dsblNscXJsQWJXaFVUU043''@;'; put 'put ''cU1WdEdVMVdBbHIzRHB2L1dBOXRNVnRkeVBZU0dua1pUUTUycmRIN1F2MkwvYW12ZXZJT0pwajNGalZPZU04ZG5aZElkZUJxK3hxWVRZc2dXV3dDNnp1SnR5U2U4NTk0dTdoVVh3VjM4UUxlQVgvNVVFOEs1NE56NTJuNWVrUlF3Uk9TRVNjeUpJcE1rMW15QnlaSjB2a0JYbExQbEloNmkyVm90''@;'; put 'put ''SlVoc3BSZWFyaXpYbnozcEwzd252cmZhUnBlcFhlcEhmb1E3cEluOUhucjk0eERCTmlYak5UVElxWlk1YVlEUE9SNmZtMFB0U0gremdmOE1WOVIreDdkcGxkWjdQc1BsdGdlMzZ0MytHbi9jQWY5Kzl3ZTl3eGQ4cDk0MnBjazN2aW5nUEZRRGx3R2FnSGZ2SXkvNVcvNXUvNEZ2L0V2NHczeGp2''@;'; put 'put ''amZVRVd0b1FEb1NSVWhDdmhYdmd0OUVWRWZDTXVpR3ZpbHJnbkhvbW5ZbFdzaVQvRXR0aVRKcVVyNlY1NmxEcFNQNGdFc2FBUWpJWWNvYzZFWmdLWk9KSW41Vmw1VVY2WHMvS2hYSlRMOG1VWUM5ZkN6WEE3L0FLR0FBNGtvSUlFbUFXTFlCVjhBamVnSGFFaTA1SHR5RFcwUVFEbjRBcmNnTHN3''@;'; put 'put ''RDB1d0FyL0RCdXpBdm9JbzJIK0FrbFEybFQybG9YU2plRlNJQ2pFNkJtUFRzWExzT2xaWFVSVlhPUldvY1RXaHpxcEY5VXc5VjJ0cTR5OU1NOG1nQUFBQkFBQUJQQUJnQUFvQVFBQUVBQUlBS0FBNUFJc0FBQUNEQWJVQUF3QUJlTnFOa3MxT3dsQVFoYzl0MFlBYTQ4SzRZR0c2TU82RWdnUWlM''@;'; put 'put ''alZzRkRRU3dTMElBcEZhTGNYRXJVL2kxdmN3eHA4WDBJMlA0RE40ZWp0VUpZMHhOK1YrZDg2Wm1kNHBBSmJ3Q0JNcWtRS3d5eWRraFdXZVFqYXdpQk5oRTJXY0NTZXdoanZoR2FUeElEekwrSWR3RW5sbENLZVFWZ1hoZVJSVVRYZ0JEWFVyL0lRVjlTYjhERnQ5Q3I4Z2Fhd0t2MkxPV0EvNTNV''@;'; put 'put ''VGFzTEVERjVlNGdZY0JldWpEaDRWN1Bubll5S0ZJYWxPMTZPdHJ6NGhjNSs0d2E4VGNDMlJRUlpkNW5xN2tZcWhkUjR6MU1PYXBSU1ZIbDYzWE5vNnhoeVpxcExpOGphbk1PSTgxNVdudzVERSswTzlqL2VqMm53NE5Say9wY3NuQlRROVlvOHM5eU8xUWE1RVBxUWZhUHZmT0g3TUk1dWZ6VkVh''@;'; put 'put ''VzYvcFhaVmZYZGFLcUdXb3V6NU9ja1dUMXFQcU1qam41aVNmTGZkTFQwVGY5N3BtTnZXV1RzVGIvYjRIRGoyWlNsUWxWdEdweEZiVldZdThjdHZpN2lVTDA5VXM0cDYrcnEzb3kzVXBVc1k0cnZ1T0Fpa2ZQOEF2Y3ZYaHpBQUFBZU5wdGsxZHNIRlVVaHIvZnNYZmROazd2dlZmSFh2ZkVLUzVy''@;'; put 'put ''eDdGakp5NXg3TVJKeHJ0alovRjZGOGE3Y1d5NkJBSWVRUERDTStVSkVMMEtKSGhBb2xmUmV3ZlJlYVFINzl3SlhpVHV3M3ovR1ozem56UDMzaUVMZDUwYllCNy9zMVNiZnBERkRMTEp3WWVmWFBMSXA0QkNBc3lraUZuTVpnNXpwK3JuczRDRkxHSXhTMWpLTXBhemdwV3NZalZyV01zNjFyT0Jq''@;'; put 'put ''V3hpTTF2WXlqYTJVOHdPU2lnbFNCbmxWRkJKRmRYVXNKTmQxTEtiUGV4bEgzWFUwMEFqSVpwb1pqOHRIS0NWTmc3U1RnZUhPRXduWFhUVHd4RjZPVW9mL1J6ak9BT2M0Q1Nuc0xpZHE3aWFtN21CTzNpZjY3bVdwL21ZTzdtTnUzbWVaN21IUWNMY1NJUVhzWG1PRjNpVmwzaVpWL2lXSWQ3Z05W''@;'; put 'put ''N25Yb2I1aFp0NG16ZDVpOU44ejQ5Y3h3VkVHV0dVR0hGdUljRkZYSWpER0NtU25HR2M3empMSkJOY3pLVmN3bVBjeXVWY3hoVmN5US84eE9QSzBneGxLMGMrK2ZtTHZ6a25sS3M4NVVzcVVLRUNtcWtpemRKc3plRlhmdE5jemROOExkQkNMZUozM3RGaUxkRlNMZE55cmVCenZ0QktyZEpxcmRG''@;'; put 'put ''YXJkTjZiZEJHYmVJKzd0ZG1iZEZXYmROMkZXdUhTdmlEUC9tU3IxU3FvTXBVcmdwVnFrclZxdEZPN1ZLdGRtdVA5bW9mVDZoTzlXcFFJMS96alVLOHkyZDh3SWQ4eEtlOHh5ZHFVclAycTBVSDFLbzJIVlM3T25SSWg5V3BMbldyUjBmVXl3TTh5Q004eWtNOHpEWGNwYU04dzVNOHBUNStWcitP''@;'; put 'put ''NmJnR2RFSW5kVXFXQmhWV1JMYUcvSFdqVnRoSnhQMldvYTl1MExIUDJEN0xoYjh1TVp5STJ5Tit5OURYR0xiU1NSR0R4cWtLSytrUGVSYTJZWDRva2toYTRiQWRUK2JiLzBwL3lMT3lQYXVROGJCZEZEYUhFNk9qbGtrdEhNNEkvQzJlZTlSamkrY1ROU3hzemF3Y3lRaDhiVlk0bGJSOU1ZTTIw''@;'; put 'put ''eTltMEc1ZXhsMFV0bWQ2eERNOTJrMTYzSVcvdzVzaFlSam9PSjJLRDF0T2FqUm1wWktCUkdiazZ6UWRITk9oTTdPRGs5bWgwM1J3RExwTTFaZ0xmeW9lTFNtdERIb3M4M1dicEtTWnBzZWJKbVdZMCtORTQ4TTVxZlF6MFBPZnlWS1prYi9IMjhHVVlVRnZPT3FFVTZORE1mdHN3WGlHN3N2UUU5''@;'; put 'put ''UGExMjltbkhTUjN6OTkycFBUcDUyZU9GaFc1YklzV09uckhYYXNxV3MxYnRCckhNWmQ1UFZHb3JaamowWEg4c2JQcTNSZGFhaSsybU9OeHdhUGpiNCtZelRoSXYwMldGSVM5Rmptc2R4amhjZEt3MkJUZGlqbEpOeWdvcWtoeHlxMllzbDh5NTNGU1BmdXAyV1JOZjNaNlRoZ25SL1FKTHJkMDdM''@;'; put 'put ''QSszMk1OdnVhMW5sVytqUk1jaklhaTdqSnVkYlkxQjVGYkNjdlludnFIN2RsdHlFQUFBQjQybVB3M3NGd0lpaGlJeU5qWCtRR3hwMGNEQndNeVFVYkdkaWROa2t5TW1pQkdKdDVPQmc1SUN3eE5qQ0x3MmtYc3dNREl3TW5rTTNwdElzQnltWm1jTm1vd3RnUkdMSEJvU05pSTNPS3kwWTFFRzhY''@;'; put 'put ''UndNREk0dERSM0pJQkVoSkpCQnM1dU5nNU5IYXdmaS9kUU5MNzBZbUJwZk5yQ2xzREM0dUFQNGNKV0FBQUFBQUFWaVk5bllBQUE9PSkgZm9ybWF0KCJ3b2ZmIik7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc3R5bGU6bm9ybWFsfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcztzcmM6''@;'; put 'put ''dXJsKGRhdGE6YXBwbGljYXRpb24vZm9udC13b2ZmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGQwOUdSZ0FCQUFBQUFGWHdBQk1BQUFBQW9PQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCR1JsUk5BQUFCcUFBQUFCd0FBQUFjZktUYkxFZEVSVVlBQUFIRUFBQUFUUUFBQUdJSDFRZjhS''@;'; put 'put ''MUJQVXdBQUFoUUFBQWNmQUFBT2RqK2hmWFJIVTFWQ0FBQUpOQUFBQUNBQUFBQWdSSFpNZFU5VEx6SUFBQWxVQUFBQVRnQUFBR0JvcWEzK1kyMWhjQUFBQ2FRQUFBSnNBQUFEbm5kREQ3RmpkblFnQUFBTUVBQUFBREFBQUFBOEVkOEJ5Mlp3WjIwQUFBeEFBQUFHT2dBQURSWjJaSDEyWjJGemNB''@;'; put 'put ''QUFFbndBQUFBSUFBQUFDQUFBQUJCbmJIbG1BQUFTaEFBQU9Ea0FBRzA4c05HeU5XaGxZV1FBQUVyQUFBQUFOZ0FBQURZTGE0WUhhR2hsWVFBQVN2Z0FBQUFoQUFBQUpBZUVCQ0JvYlhSNEFBQkxIQUFBQW9zQUFBVGFzbmc1UG14dlkyRUFBRTJvQUFBQ2J3QUFBbnB5VlZmYWJXRjRjQUFBVUJn''@;'; put 'put ''QUFBQWdBQUFBSUFLUkFoNXVZVzFsQUFCUU9BQUFBWVVBQUFOa0wrYUdTbkJ2YzNRQUFGSEFBQUFEb1FBQUJpR1hGajJLY0hKbGNBQUFWV1FBQUFDQkFBQUFqUmxRQWhCM1pXSm1BQUJWNkFBQUFBWUFBQUFHOUcxWW1BQUFBQUVBQUFBQTFDU1l1Z0FBQUFEVHdaMkdBQUFBQU5TK3BPdDQyZzJN''@;'; put 'put ''UVFxRVFCREVFa2YwTUxQb2Y3eXBML0RvZlhmVi96L0FJZ1JDMFRRQ0xSNmNkRlJralZzbzdIelR2MUQ0QjdtNDA0OERPbG9wTmx2NjQ1U2VYWExUNTFzWHpTYStXM0FGM0FBQUFIamFqVmNMYkZWVkZsMzdmTzVyM3dNc3BYeUVVZ2toVUFoV2hqQ2lDS054bWxwSVJ4bXNCQTBZTlk0ZmtNOVVa''@;'; put 'put ''S2JHeUdjVXpVanF4SkdLWkVMUU10cGdCVVRGcWtoZUNQNklJZmdKRWl3RUsyTDlBU29hSThwMTNYMGZjRXY3WnV4S1YzZjNPZmZjcy9kZTUrM3pJQURTR0lvcGtNcXFtbG9Vd05HRE1JVGxINEdCbmZPWHVua29tWHRqM1J5VXpwMHpkdzVuZy81b05KNFJzZVZ6YWZSREdZYXJ4MklZYW14TFBC''@;'; put 'put ''b3MwRlVsYUVEQWg2VG5RajR4VUgwZUphY2hxQW9ieUI0VHNRSy9JSlNCTU53RzU4a0FhVU1HUGJpekkyRTJiQTczaHZ1UjV5ZjhKdS9JN202OW4yQkFwLzgvQy8rZGQ0V092Q050ZVVmMmh0azhJODNod1hCcmhMT2Y0Ty9PQ0YxMml2RHpzSUZaTWhqQ1RBOW50a1lRQmhXRXhRV0V3MWpDNC9k''@;'; put 'put ''RWdQRkVDaGNUQlpoQUZESzNFMW1wUllSZ0tlN256QWNJejR5dm9QOUZRdkFTSVhpWk1IaVhjSGlmY05oUGVIeENCUGlVQ1BBWkVlQW9rY0kzUkFvbmlFSlc3eGV1RmhKcEtaSWlGRXF4RkpOTHBJUThrSlZOYysweFZNa3dQak9LRU4xM3ZHT2pPN2E2WTZjNzlxZ2tDbEJGRktLYVNHTWFrY0Y4''@;'; put 'put ''M01VVm9rZ0NqU1RRU0R3ZXhrck9ieVFLOFJoV2MvNFQrQy9uUDAxa3NKRklZUk5SZ09lSUZEWVRCWGllU09FRm9nQmJpRUswRW9YWVJxU1JKZExZVHFTeGcwampkVUx3SmlHYW5RQUhpQXcrSnVLOEdNMkwwYnc0ell2WHZIak5pOU84T00yTGsvN1NuL2s2Vjg0bFJ6bnlYTFdDR1JyT0dsZXd0''@;'; put 'put ''bU5aMC9ITXpBUm1aRDRXNEsrb3c1MVl5Rm91eFRMOEEvY3hDdzh3K28yTTZIbFc4aVZXOEYxV2JqOHI5aWtyZFpRN09hRW5xNGp2TFluT2w3bFh6K0ViVXNlNGUxSmZXNm03aHZEN2J0U3FJOUg1eUR2eUpYR3NteWVQNVQwYlgrYis3Z3UvRGcrRUQ0VVBuVDJTTzVGTllkUHAvNzVJakh5dXp4''@;'; put 'put ''aVVxaVpFTldGd0RXRnhMZUZ3SGVFeGt3aW9pSldjRTZsQlZBMUcxV0RRUWdUWVFBUmFhZEZLaTFaYXROS2lkVFU0UkZnY0ppdzZDSXVmQ1krVFJDQzlwVGZyMmtmNmtQdEtYM0pVVWRHS2lneVNRVnpmWURUT0lUTG9UZlJRcFlzcTNhalNiVTdwVnhCSnBUdU5KMGpFazFLbDI1elN6MmpjYVZS''@;'; put 'put ''T28wcHBWS2VVSG1zOFZ2Y3JSSDVkUjlFNjFhekpSUmdwMTJxY0tkV3ZWZjJhWE15UmlrMHU4a2pMSmhGL1V0RldzNUNTTVhJeDN4NTllbFV4d21tczE3V01heVlqYVdRa3EvQTRvM2tDVDZJSjZ4alIwNHhrQTA5akszZWI1UzUzY0hlSFdJTU83dXdrZDlDSGIrdlB0d3ppaW1XcVo0TmUybEdL''@;'; put 'put ''dzZXMGk5bmZMcVVsYWwvS1R0UVdsSkhibWYvdHNseFd5Q095U3RiSU9sa3ZtMlNMYkpYdDhwYnNrZzlrbnh5VXcvS1ZmQ3MveWtualROb1VtWDZtMUF3MTVhYkNqRE1UekdXbXl0U1lhV2FHdWQ3Y2JHYWJCV2FSdWNjc013K2FCdk9vV1czV21xZE1pOWxzV3MwMnM4UHNOTHZOSHRObTJrMkhP''@;'; put 'put ''V0tPbTU4c2JHQjcyR0k3d0piWllYYVVIV012dEJQdDViYmFYbWxyN1hYMkJudUx2Y1BXMmIvYmUrMTk5cC8yWDdiUi9zYythWnZ0QnZ1Q2ZjVm03UnYySGZ1ZTNXc1AyRVAyQzN2TS9tQi9kc1lWdUY2dXhBMTBROXh3TjlxTmRSZTVQN2hLTjhWTmRkUGRUSGVUdTgzTmN3dmQzVzZKVys1V3VF''@;'; put 'put ''ZmNLcmZHclhQcjNTYTN4VzExMjkxYmJwZjd3TzF6QjkxaDk1WDcxdjNvVG5ybjA3N0k5L09sZnFndjl4VituSi9nTC9OVnZzWlA4elA4OWY1bVA5c3Y4SXY4UFg2WmY5QTMrRWY5YXIvV1ArVmIvR2JmNnJmNUhYNm4zKzMzK0RiZjdqdjhFWC9jL3hRZ0NJSWVQQjMxWmlONWlYS2xjclZ5WThS''@;'; put 'put ''WXJOeXNubVhLS3hNOFZibENlWkx5M3lJMmc5V3VWYTVTSG1ING1Tcmx5aFhLa3lOR3ZmS3o1dFZUdGx5aVBFbjk3Y29uMUROS3VVbDVwSEpHK2M5Mk52a1o1ZnJ1bVZVL0UyTzErcnN3cGl0dlZsNThobVZXSEx2YTg1VGZWRjdabGVNTXFOMlZhNVZIbU96L1kybzNtYXRzZDR5cHlpM0s5V2VZ''@;'; put 'put ''MmN0cTl2NDN4L25NZHNzakUxeWYySE1uTzFIVEplb3ZWMy9TcnRRY1BxYjJyRVRtNHlnNjJUa1YrYlA4aldwUGptMmRFMnNtcms0Y2RhelBuSjN6UjNPYTFYN1dManFsM3B6R1BsVDcvY2pPMVRUT1dLenRXSHRKZjF6Wk9HL3ZxYjFZYS9TUjZ2eHJuVDlWMzlXdWMvUkV4THJ0NUs5USswU3Vn''@;'; put 'put ''aHRQcXpycGowL1FwSVJtNG9vazdlZlV2algyNjN3OUYyYXcrcHZVSHl0dFpNS3VVczZvSjU5OVhPMjdOYnFyMU42amRuTGw2bkFMK1h6bFpLV1NiNXljTzkzWjM4Q2RaeHFjcC9kUzhONVZ6cXhFdDFQSHJqMmFYVEM2WVFmNEhXOWlLWXpEUmV4aFVlZnV4YjQ5aVQwOTZ0eTk5WTVhckoyN0Qv''@;'; put 'put ''dk9GUGFoR3FJdnJtS2Y2OGRPTjUzZmZXWVFwZHJMQjdQcnpXTFhtcys3MnhDOXZZMW5SMS9EOWRheTgvMUplOS9WN0g2dnNrTytobDI0bFRlNm82alhXK1VxZkNjZWo3TVREMEtMOXRSVzdsZmtIUDF1RmtEQ1dJVkxjQXQ1T2J0ZGh0OTF5aGpiS042OUwrU3VMK2N1cjBRdFI5OVc3ZTVWUHFp''@;'; put 'put ''c1p3YTdFNnlWd0YzSzY1VS8xcXoxVlR1RFAvSTl0K0YyU1VtQkZFcGFNdEpUZW5YZDBhOTlsNTkwQUFBQkFBQUFDZ0FjQUI0QUFVUkdURlFBQ0FBRUFBQUFBUC8vQUFBQUFBQUFlTnBqWUdaeVovekN3TXJBd3RURkZNSEF3T0FOb1JuakdFUVl6WUI4QmpZR09HQm5RQUtoM3VGK0RBNE1DcXAv''@;'; put 'put ''bUtYL0d6TXdNSjlrMUZGZ1lKZ01rbU5pWlZvUHBCUVltQUR3YlFxMUFBQjQycldUV1ZDT1VSekdmLyszZlJFcUZQWDI5bW5UUnFJVVJmYWx5TDZVck5teXI5a2E2eEJEUlZMSW5pU2pHUk5UVTdZYjdyZzFZNHkrejVWYjdnd2R4MWRNTTh5NGNtYmVjOTV6enB6bm5IbWUzeDl3b2VzTFFYU1BW''@;'; put 'put ''T3FaT09ldVVxekhKWXpEallHVWNJczY3dEpJRTgyMDBDWWVFaUNESkV3R1M1d2tTYXFrUzZaTWxSekprMElwa2hJajFYaGx2SGVKTW8rYnJlWVQ4NHZsYmdWYXdWYW9aYk9pckdGV3VuWGY1aC81VFNsOWg4V05IdHFQYWVPWitFcC9NY1Vtc1pJb0taSW1HWklsMlpJckJiSkJObXZ0bDhaYnJY''@;'; put 'put ''M0liREhiemMrV1lRVllRVmFJVTN1b2xmWkxXMzFVTDlSejlWUzFxMWIxU0RXcmg2cEpOYW9HVmEvcTFEVlZxMnBVdGFwU2xhcENsYWt6cWxTZDZIelRtZFdaOVAyVG85eFI0TWgzeE5nSDJ2M3NQbll2dTV2ZDZQamE4Ym5qOEllUWQ4bGRYdjJuNW01NE81UGdqMXNFby92UCtJZEcxMGtYWEhW''@;'; put 'put ''MjduamdpUmZlK09CTEwvem9UUi82NGs4QWdmU2pQd01JSWxoblBFaW5Ib3BKbUU0a0hCdURpU0NTS0tLSllRaXh4QkZQQW9rTVpSaEpEQ2VaRVl3a2hWUkdrVVk2b3hsREJwbU0xY3hrTVo0SlRHUVNrNW5DVktZeG5SbGtrOE5NWnBITGJPWXdsM25NWndFTFdjUmlUVm9lK1N5bGdHVXNaNFYr''@;'; put 'put ''L3c1MnNwdGlEbkdjMDVSVFJnWG5PVWNsVlZSemtSb3VjWVhMMUhLVjY5elVGUDFrOURZTm1xVjdtcWFmYlJXcnRSM1JiT0JzdHpmcldhUDdYWno0N1ZiaFh4eThRRDJiV2RsalpTMmJKRWFQVzlqT01ldzRKRnp6R1NsUnVnSWl1S04zSHFCcGxnUmREL0hkWjRxY1ljU3lqYjFzWlI5N09NQkJY''@;'; put 'put ''VXY3T2NKUnZYV1lVazV4a3RlNm1ucXhUcnpFVzN6WUtINmFmODhma00ycTZIamFZMkRBQXBLQk1Jd2hqR2s5QXdQVGJpWldCb2IvSWN6Uy80Mlpkdi8vd25TSlNmRC9sLzkrSUQ0QTJzOE5zbmphclZacGQ5TkdGSlc4WlNNYldXaFJTOGRNbktiUnlLUVVnZ0VEUVlydFFybzRXeXRCYWFVNFNm''@;'; put 'put ''Y0Z1dEY5WC9DdmVYTGFjK2czZmxydkc5a21nWVNlOXRRZjlPN011ek52bTNsak1wUWdZOTJ2QkVJczNUV0dscGNvdDNyTnAxTVd6UVRodG1pdSs1UXFSSC8xR3IxR295RTNySHllaklBTVR5NjJETlB3UXRjaFU1RUl0eDFLS2JFcDZGNmRNdFBYV2pObXYxZHBWQ2hYOGZPVUxnUXIxLzI4ekZ0''@;'; put 'put ''TlgxQzlqcW1Gd0JKVVlsUUtBaEVuN0dpVFpqRFZIZ21hWS8wY00rL1ZmUUZ2bXBHZy9yb2ZZa2F3cnAvUlBLUDUwQXFESUxESXRJTkFrbEgzdDRMQW9iUVMyQ2RUaU9CWjFxdjdsSlV1NWFTTE9BSXlRNGN5U3NJdnNSbG5OMXpCR3ZiWVNqemdMMGlWQnFWbjgxQjZvaW1hTUJEUFpRc0ljdGtQ''@;'; put 'put ''NjFhMEV2Z3l5QWVDRmxaOTZDd09yVzNmb2F5aUhzOXVHYWtrVXprTXBTdVJjZWxHbE5yWUpyTUJBNVNkZGFoSENYWjF3R3ZjelJnYmduZWdoVEJnU3Jpb1hlMVZyWjRCdzZ1NHMvbHU3dnZVM2xyMEo3dVlObHp3RUhjb0trMFpjVjEwdmd5TGMwckNncE1kTDFFZEdTMG1KZ1lPV0U1VFdHVlk5''@;'; put 'put ''MFBidmVpUTBnRzFCdnJUS0xZbDg4RnMzcUZCRmFkU0ZkcU1GaDBhVWlBS1FZZThxN3djUUxvQkRmSm9CYU5CakJ3YXhqWWpPaVVDR1dqQUxnMTVvV2lHZ29hUU5JZEcxTkthSDJjMkY0TXBHdHlTdHgwYVZVdkwvdEpxTW1ubE1UK201dytyMkJqMjF2MTRlQmdGakZ3YXR2bk00aVM3OFNIK0RP''@;'; put 'put ''SkQ1aVFxa1M3VS9aaVRoMmpkSnVyTFptZnpFc3M2MkVyMHZBUlhnV2NDUkZLRC96WE03aTNWQVFXTURXTk1JbHNlR1JkYnBtbnFXbzBwSXpaU2xUV2ZocVVyS2pTQXc5Y1B3NkVyUXBqL2MzVFVOSVlNMTIyRzhlR2NUWGRzNnpqU05JN1l4bXlISmxSc3NweEVubGtlVVhHYTVXTXF6ckI4WE1W''@;'; put 'put ''WmxrZFZuR05wcWJpSDVSTXE3bVg1cElyN1dENmpaQ2Z2bEF1UllTbUtaTjdnQytMUTdDN2xaRmQ1TTFIYXU1VFRYZVd0UkhsTUdUUm8vNGY0bmtKOHgrQ1hRSHdzODRpUDVYSEV4MUlpUHBaVGlJOWxBZkd4bkVaOExKOUdmQ3huRUI5THBVUlpIMU5Id2V4b0tEeDJ3ZE9seE5WVGZGYUxpaHli''@;'; put 'put ''SE56Q0U3Z0FOWEZBRldWVWt0d1JIOG13T1BxNWJtbk5TVG94RzJmTmlZcVBSc1lCUHJzN013K3JUeXB4V3Z2N0hIaG01V0VqdUozN0d1ZDVZL0lQZzMrTEYyVXBQbWxPY0hDbmtBQjR2TC9EdUJWUnlhSFRxbmlrN05EOFAxRnhnaHVnbjBGTmpNbUNLSW9hMzN6azhrcXpXWk0xdEFvZlR3UTZL''@;'; put 'put ''OXJCdkdsT2pDT2xKYlNvU1JvQkxZT3VXZEEwNnZQc3JXWlJDbEZ1WXIremV5bWltT3hGR2N5QUtTamtwckd3N08ra1JGcFlPNm5wOU5IQTVVYmFpNTRzTlZ0V2NZVzlCKzlqeU0wc2VUZFNYcmdwS2UxRm0xQ252TWdDRHJtUlBiZ21nbHRvNzdLS1lrcFlxQ0krQ0cwRisrMWpSQ1l0TTRNdWdT''@;'; put 'put ''SmtjYkt5RCsyS0hUbWlnbllDMzNyU0t1L2JRdTNQZGZJZ01KdWRidWRCbHBHaTgxMFY5V3A5VmRiWUtGZXYzRTBmQjlQT3NMSG1GMFVaVHk1NzM1NFU3RmVuQkxrQ1JsZDJ2KzVKOGZZNzF1MUtTVDdiRjNaNTRuVktGZkpmZ0FkRDdwVDNJaHBGa2JOWXBSSFByMXQ0TWtVNUtNWkZjeHdYOU5J''@;'; put 'put ''ZTdZcFYzNk5kMkhmdG8xWmNWbFN5SDJYUVZYVFdic0kzUGw4STZrQXFDbHFrSWxaNE9tUSttNTJhOExHVXVDeEYzTE5rMTBYMEhUd2hIZUsvT01TMS8rdmNjaFRjb3NvU1hXalhDY2tIYlI4cjZLMGx1NU9IS2tabjdieHNaNklkU1Rmb0dvS2VTQzQ0L2w3Z0xvOFY2UlR1OC9NSHpGL0JkdWI0''@;'; put 'put ''R0owR3Zxcm9ETVFTNTYyQ0JJc3EzdEpPcGw1UWZJUnBDZkJGMVVLekFuZ0p3R1R3c21xWmVxWU9vR2VXbVZNQldHRU9nMVhtTUZoakRvTjF0WU91ZHhub0ZTQlRvMWZWanBuTStVREpYTUE4azlFMTVtbDBuWGthdmNZOGpXNndUUS9nZGJiSjRBMjJ5U0JrbXd3aTVsUUJOcGpEb01FY0Jwdk1Z''@;'; put 'put ''YkNsL1hLQnRyVmZqTjdVZmpGNlMvdkY2RzN0RjZOM3RGK00zdFYrTVhwUCs4WG9mZVQ0WExlQUgrZ1JYUVQ4TUlHWEFEL2lwT3ZSQWtZMzhZeTJPYmNTeUp5UE5jZHNjejdCNHZQZFhUL1ZJNzNpc3dUeWlzOFR5UFRiMktkTitDS0JUUGd5Z1V6NEN0eHlkNyt2OVVqVHYwa2cwNzlOSU5PL3c4''@;'; put 'put ''bzI0ZnNFTXVHSEJETGhSM0F2ZFBmN1NZODAvZWNFTXYyWEJETDlWNnhzRTM1TElCTitUeUFUN3FpZHZreXE4MmZWdGFsM2k5SlQ5ZHVkZDlqNUcyVXp1aXdBQUFBQkFBSC8vd0FQZU5xMWZRbDRaRldaNkRublZ0V3RMYW5VbnFTeTFaNmxrdHBTcWV5cDdFdGw2WFJuN2U0a3ZTWHBwcUZwNklW''@;'; put 'put ''RlFCQWJCa1ZSbkhFYnhVRVFCMWthQkZxVVpSeEdCWjQ5TGlNT09vN29tM0ZHSGJmbkcwWjBKRGZ2UCtmY1czV3pOVGpmOTZDVFZPNzl6L2FmZnovL2Y0S01hR0U5aVQ4dWVKQ0FMTWlKU3BBZjFhQVVha0VkYUFpVlpGdzluZTJ0NmFaa2JUaFFXVnJzc2hZWk5BUVpZM1ZhcjlVck9wTk92ek9a''@;'; put 'put ''OHFlU0taSDlGT0dqOHBRK296L3BHM2lTVWo3TE1LeEJPcG5DSDVmK0RuZjgzKzZlQjNwNkhuaWd4K2YxOXZUMEhPbnhubnZnaU05N3hQdkFBdzk0anh3NU56RHd3TXBBMWQ4TFArdjFCcjN3NzVhanZvR0J3RUg0Tk9CdDcvRWR1YjdaSGQxMTFWV1BYSFhWcnVpcU4rcUZmd2dSTkxyK092b1dP''@;'; put 'put ''Yy9XRnN6NEVNWm9BU0ZVbUVXRUNFc2FMQWh1WVZTajBWZzBoVUZya1ZaMDE5bVRndDhWU2pVMkpSTXVwMFBubnpsVDBxY05oOHM4b1pDSG5KZDhQNnd1S3cySFM4dXFFVnBmUjMzNFhud0RlYkRJaDR3SUZRbncvU1ZFeHczQXR4dGhYQStxUk1PWkFZdU9JSzFBTUVGNDJZUU5oc0pzWVZHQklJ''@;'; put 'put ''cjZCYk9SNlBYV3JBWVRZaUdqQ0ZWV2xKZEJLMDlwU2JFYnhyZGJjLytKNVhWWVRJcCswWjltWCtrayswcUs3RXVrTC9HYnNTdnRKeUs3SXUrTlRFUXV0eCtQWFdHL0FqNjlGNTZjc1AzTmUyUHZ4UmVleno0Qy8yV2Z6ejRLLzJXZlI0Q1owUG9GMGtiZVFCVW9pQ0tvUGxNYnFmTjVQYVhGYnFm''@;'; put 'put ''TlpOU0xoWWhvQVcxa0JKYUZDVDRJNjNPajBVcXJWUUJzQlhTd3g2bFFPTzF5cHhwd3FyRVRwMkd2WFc0eEZIWldZQ2VDeDRYWWFXdEtOY0lEMG5ibXNxbDNIZWpJN2oxeUpMbXZkZXJLeGRiKzhSTlhTWmRIRTNWTnY4NjBaSzQ0S1daNml2WmxoMncvS3AzZWxaeHBGanM2emJ0SE82My82Sm1i''@;'; put 'put ''d3U0YTZ3dUdGcjgwMzFaZDNXRDlKc3hEaXlMcnZ5TnI1Q25ZWFR0Z09vcmEwUC9LUGxhOGF5NVRaOEphSThZNkxWNUZPcVEzNlBSSGtVYURsZ2ltdTE4QWV5QXNtVVVpQ0JaaDFKTjlMQXhOb3Bkc2dnQ1V0Uk9YekZnVTNlS29KNVBjcGdVaEFFdWJvZTFiemM5blFyRllWWlhEZ1ZDc0xkYmEx''@;'; put 'put ''RmdWcldxb0Rqa3FIUldseFhhYnRRZ1dVeGdxRkoxMU5vN1JaQUl3NlNqRWZwekVmb1pLdjAvbmRMaVNhTlA3VHB4Lzk2bVJtdHFSV0F5K1o2UDR2YnVrOE1UcFJESVVqaWREZU85SUxUemtyNnJqOUdFaWpQYzFqRWZqdXhvYUptTHhpWG84dFRhSi83SWpHdTNzaURWMFN2dnFKK0pSK2c0ZzZy''@;'; put 'put ''dnA0ODZHYUNlaXRCTmNmNTNjUUw2QXZLZ2VOYUhPVEZzOEdxNnFLUGVVbUloUklGNk1CREpDYVJzdkFldTVzbHBnT0lZWm9LQ0dCcCt2b2FraDVhdjNSU0orbmVpcTA0YkNPcitQTHFvcHJWNGF2SE0zcGQwNjBZM28ydHg4bmJZMGdOT2xrcUF2c2U5MDEzSkxkcUs4Tkxxbk1UWlJQekU5MUZk''@;'; put 'put ''WE9SR05uWlQrTWxsYzJ0TlU3M2NNWE5HeE9wbzIraHJuWW5QdHZRZjhOZjJoaG13a2txMXZIdzNzR2VpYURDejNuU0lqMFhCcDJsc2FEd2NTYTY5MVh6MmNtbXpLSUlRcG42TW55WVBJak95WklpcEYyUGJpVVdlQXdNUnRlWGtoK3FldFhyZmJhN1hFOEg4c2U5MCtuOXU3UEl4b0g2M3JNN2lQ''@;'; put 'put ''UElzS2tPNkpBaTJPMVRFeGszWURnOENpeEFldnZISzFjV3JYNUo3RzJSL2Q4cTdYOWpSTlAzWHExRk5UYWRhMkZ0bzJLbTFGYU11UkVFNXovTlR1bVlSMnE5RERxZW1ucmo3MTVFelRudGZlZGN1UDlyQzJLWHdDSHlEUG80T29PWlBhT3pIVVZGM2gxdWxoRVNNQ3hocU10Qml0NnJCV1M1YUFl''@;'; put 'put ''RjFhRUVJQWVtRFA3czcyV0lQUFd5ZFNTb1NacHB2U09oSCs5L3ZDL0RmZzlRWWNEdkhma2dtM0MvNW52M0ZVQUN4QU5QRlg3TmRDREJ0WmdmbHZ0SnN3dEhlNW1aaDkzbXJVRWJ1ajJxclRXUTBhYzNHRHdXMDJ1dzBOeFdhTnNVaWp0MVk3N0VSbnRKb0xLSnpSWmdnNUdXQUJBN1NXYXFLT0Fn''@;'; put 'put ''Ym9EQmxzUmdwWmdFOVlUS1VKbjduQTdqTUtGdEZnRVFzdEdyMVdxOWRZQ3ZVV3ZWaWtNZnJzQldaZm90Ums0WkJpa2VnekF5aThaYUNpQVZ2TkhOVHNnNWNjbHVHMEd5MFRCMmxHSmhUSytKRkd3SnBwb0cyUUZGaEF5OEQrZUFFQmFzZVk0QzdTaWFWMTJFODFZSXBxd2lSeFBMdi9tV2YyUDR1''@;'; put 'put ''OXp6NDcvL3p6dEwrQjlXdlF0OUYxcUJDNU04REthRkNoTVdDVWdJM1NHSENBVDBWbXUyb0xQS0Z3bVRjY2poMkx4RUU5aFZPMS91RTA3YXNSL1FTMzQwN2d6dUtNRTlHT3B1bWNZVVlJWmxSRU83TjduZDVHckpkK2p6djNzdlgwZ3A1OEVjWTNVWTFQbjREVXc5aU5LVEdZa0RFZ0FCR290ZUps''@;'; put 'put ''c2tZMDU3UWhYdi9WK2dWOGdmd1V4clZtQ21tbnQ4TFlwL21BVkhUaGtjdWwreTRuUDMyVGltNVFKazBnTzI0aHo0QzRxMFNSVEEwUUgxc3hseElZbERPYlFGRVJLTmJLb29waUY1T0xvRy9xTkp2bEhrazFObUMvanpKU0JZd2szcGJOM2pZOWZTNmJQVGVkbm9uRlp0THAyWGg4Tm0zZTkrblYx''@;'; put 'put ''WHYzN2J0M2RmWFQreFo2cngwZHZhYTM5NXJSMFd0N0dRNWczYmdjZExZT2VUTEZzSlVDNEd1RVMzR01MWGpVYW1lb0U4UHBwTlgvaFd0cW45cTlRdEtqdys5WW0wU3NmUlFXVlF6cktVYTFtYkRKQ01zQmFpQmtoS0dUaVQ5cWRDd2dwbk9zN2tCSUl4YlhkV0ZGYW92aEpsbmNXVEJzVC9UTnZy''@;'; put 'put ''YlJwcWFaVU4rQmoyZU9kWXpNM1l1SEpmZWViN1VzUnB1Nkd4UHQ1eHFYT3ZxdkhmcXpSVGEySDNCWkFXUFhvSzVNZTBreGpPUERtTURvTUFXbXVCSEJ5ekN5WmdtSUV5WUN1bk9KOHJ5YnNYc05xZzRFdklHZ0tKYkFMbE9oa2t4UVBRT1dtanZSdEhsNm9vejJmemhYMngwNDFOcXphMm84bSsy''@;'; put 'put ''ZDNOV2VuQXAxTFh5NC8zajdTR3ZIVE9kVncrWk1xcmN1a1dsTXBmRmUzSnlNZFVick82K0xUVGUxNzdZVjd1bHQzWmZrZE9DSGIxbkF1eEdrRzFnZlpqQXk4SWhPQzJ2QUNHek5GVUFkVTZrV3phakpaQ293RlFCUDJZcm9YSVBlTUU1YXFiWHBUMWtGZkt2MGtBbVBYWHY0OFBKdjc1bkVYNWFH''@;'; put 'put ''NXU5NUEvZEx6OERxNDRDZkdoaWpETFZuV213Zzlnck1CR3ZBbmhsQjhCMXBRSUVMQWxuZzJuc2pjc0FjODFudEFUOUREaGc2U1JrallwaHlrZGlVSThPL09OSTF0OUt6WjAvdlpNK2dFWDlXK3FLdVo2enphRWYzcVJIejVVUDd4dHZhaGhOVmVIWHhZaVI1cUtmdldFdU9CN3BnM3p5b0d2V0Q3''@;'; put 'put ''UU5ydHdMUkJJdUpWaU9NNkVDYWFMU0NaaFhsTktnSTgxSUVRMWtaeks2NkxPejNRdnZTUURDa0I0c015Yk9od29MeWlGdmtyQUhDT0duTDBScGxrNDhlNjh4Y1BYakg3ZGx6ZTY2Y2J3ejBSeHFuRXJqcVVJdTdOempUM1RKVldEamVqVC9mZUxDbis3TDI1ejZ4K3RrREUrTmViLzkxMmJxWTlO''@;'; put 'put ''SHFibi9IU0VkaWJKYlNIZ2dkNG1aOFU1a3BBMzJDR2RkUWVZT1puUTEyTFZnMTFGckUzcFRYQ1lMZ3I2U1A0QjlMUHpwTkpoZEgxejVKN1lnbzRDSEY4QkFHMzZNdjArM1FFWkNxSTZJS0E3SjAwQU1HTU93UGt3N1YxUlFKMWFucXhtaDlXYmdzNUt1aXFJZ1lxTGphenBDUWthT3lvdHowTStp''@;'; put 'put ''aFFrSnRpWitmN1p2c2J1L3J2YktyKzhxZXdaYnVYZjFuaDFKemsrM3R1MlpUdlh0and3SC9jSHh2cnprMjI5cXh6MVc4cTdsNUtsSS9sVzdkNVhMdmEyK2RpK0tQdHNmcU85b2I0bTJDOUpXdWhLK3BBdU9LSmwraWkrNTFHdGFZeWU5MVJSSHNzUUc0VkUrMUJxeFVDenlxSmF0QTZRSXNUeEJj''@;'; put 'put ''V1pVU1VQYWFMekFZQ0xLOWR2R3Q1aHdMMnBiK0lpL1lScGZPWmFJcmliKzRaWmN6YlBlNzJEYlgweDBuejJ6Y1piN3owa2ZvTnJQOXBtdGdlb0xvUUNlNHFjeW1NcHJOME1vZEtpMTNxTXhtaE14dXM4dFd4SlNIVHJZZ0ZPVkJ0bEVrWmZKUGZJdWlVYVJUeWlmd3M1aCtKRHJ3czBEL1drVmtC''@;'; put 'put ''ZW44UG1SNEhPT244ZnNlUzlaeE9wd2hoTXdESGVxZTBCR3drZXlwb0xNQU85UDQ2OUw3OENrY0gvdkJ6RU1QelRLKzYwWlBFQWYrQlZDZWlIeVpTa3F2MURkRDRCQ1FhVmxNRTRIcTd5SXFwU21uMC8rNzhYZWtldmIxaS9uYjVtSE1FUmpUcVl3cHdKanBlcHpTT3JVaitCU00rWFVwOWNoREQ4''@;'; put 'put ''MzhZT3dIZEV6Myt1djRPN0QvVHJDVzA1bEd1MEZQeFJ1bTRsbUFnVzlTNlFrcXFMVllvM0ZyUmwwdWw5ZFZGU3oyQjNWMElqSUg1NlF4TUxaemc3LzZ4TzZqZmMwekE1Mkx0M2NkYW9yUHBRODRGTXplcXV1TzFIVk5kVjRWbjJtTVRMYWFUL3dnNzhyUytVWFc3eFQ2eVgyQW13bjBvNHk1eWth''@;'; put 'put ''TWhzNE9Jb0tRekQ3bUJ3Y3BCWWFPUWRBWWJqSmpveFliWjVFV0pMV294VWVSYU1KNlVYOFk2WFNLMzBQOUsxaUcxVUM5cXhwb25GUWF3MklOUnNHdytwYWQ2TUREYXNtMVFrZ25JTjNxenEzMWVuRVdnVXU5eExxWkFEK3JwS2NIb1o2Sm52SGhRVmhVSmhRSzIwT0JVS2hBTE50aVF2aENZUlh2''@;'; put 'put ''SkZ6dXRGdmtFaUZCTWE2eUxoTE1ZdmNyb2xUbXI5N0hWcS8rOHNubFI1YlRNOUZvaDdGaVZ6UTJXdGR6V1d1OHoyNmVMdEs0RGQ3eThyUi8zeWYyTHorNnNuRFBZc2R5eXQ1eXN0ZmVGMHpFYWdkcm02T25WeDVldnZMTFZ4MjRiM0hpeW5Ra0hLcVA3R3JzUGRWWDUrL1NUYmpQdEpncXFtcW11''@;'; put 'put ''NlkvT0xQNjZQTCtUK3d2cnlvTGVMRXh0aWNSYll4TzFNZmIyZjZWd3JmdmdSd1dRWlBXWmFvTldFUHdDRkFSa0pVR3RDaFZiV0R3VTB0R3I5Y2I5VVp1bWhhREZoV1pheGsyWVJLUlB0NStFb2ZwdjhOM3duL2svTnJrVC9HQTlDWEErNndjMHloQ0pjaUhPakt0SUlsaEJCMXdqbFpEdE5TOGtJ''@;'; put 'put ''TXJJdVlXTUIzTFUycXplaXRMZlI1ZnNjdGFZaXVKVk9tWkFicFJJSHN4MDZwMTJHbFhQc3ppZ1piNVJEemUwZDEwb0VONkJOYzM5dlEwdnZScTYvQnc2NnZrZkdRODNqanNxZGpiMGpRZHd4OU0xOVUxZjFWNnFTdVI2UG9YWmcvRlFOYmVEYnhXamhveWRhVWxKcU9HR2hXS1BIVnRDUC9BZzNK''@;'; put 'put ''VUZncUdhUGhIa3ljQmNldXU0NmI3RHgyNmYybm8xc1JnWUxHeDkweC8vNW5leHNYQVlPTFdJZlBCKzVlVzdqdllrdXdMUjRhdUhSaTRiaWdTN2t1MndMNVF2SDJaMlRkTzVpM2swTVFjWXhsTlpwUERabkthbmFFcUxVV1BRcGgxT0MwVFlCMjJ6djdxeENNSER6NXk0bGYvT1hGOWYvODd4dDlQ''@;'; put 'put ''enM5OTR2RGhUODd0ejV3YUhyNDZJeG5ZMnNHQUlYMHduZ2xGTXhGRnNsRjdSck1BdXFWUWJZVXk2OTdFdzB0ZzN0aWRzcHl6ZXAyUDQ4dWxQOGNma2tUOEJ6TDVsY1Z2TDVMemkyaEQvd1pVa3drcC9WTnB4WHBWVkQ2OE1DQUQ3Wm5KTGRhclgrbDNoWGI2MHFMMFhkNHAzNi83WWIrOEtKVkpn''@;'; put 'put ''TXVBaEVwQ05GcG1QR3MxaUJFWDkwK3BKY2pFSkdoL08yeWFuN3RYWHV0Ry90MjBlU2svL2pOY0Z2dUw0YVhQSERyMG1hV1JQNDhOK2s4MDlkRU43SXZzOHorTnI1WitIVy9qVzlpYTZBdlY4eTJzOEh3Z3YrWTdHVTdEbVlCc01pNkRqVXJYUytOREZyUVpsNWl1RnI2UzhKM2N1U3pkc2J5TXI2''@;'; put 'put ''SHNoS1BTdDhsNTZUWHNnMTVvcThkWmZKTEdGVlMrQm5mVHdORVlYVjZtclFEV0NmcmpHNHovZ0lxWWFjOG9taG1zWkVrQVluSXp0QmNoaXoyb2dlWjVVeDVtUWJuc3NldTlnL1pkZGMyRHl5M0wzZVpNb3I4NnVhY2J0RlM4Ny9KMnZzNFo2T3BEYkoxVm1YS0RYa3VZaHNJc0FpYndHS1hkWnVN''@;'; put 'put ''Nk1XbkZTUVAyZzJ2b24xbkdmYmRJLzQ3cjMvbGZSMkM2MHNmeGl2UjE2VGJjZVB4bDNpOElZdkNYenlNdHRSSFpwR2x2aUc0K1I1MFdhYTFXT3VrZzBFblNTaHhTdzhvaTBOemFlZFllZUFnSUlEY3ZjWnQ1T2F6S3ZEemdGUGl0SnRpQjJlWGYvbmFaZnNHY3V2RGZBdkovVG45S2JybFA4akNq''@;'; put 'put ''NDRxTVJ5UmtTNCsyWEk4WXB1Um4vZUgzTGk5TForaVd2RUVNYTVQdzlRYVZ2WlIrZi8vL3c1ZmxBZ2VvOHVCOVM3Mm4rL3RQOTNLcEk0c2JlTHAwLzhHRm9lc0dCcTRkNGpUTGRBR2wxK093TmpQSUhQQkdZUmJBcGdLbW9ZbDhBQnlXV0ZqZ3NCVTRDNTNXVUpXT0JyKzlPYm5qOUNzaTJackYz''@;'; put 'put ''aUVZOS9UUXM4dlludDIzTC9zb09kK3ltc21zdHZ3R2p3MjB0dzlJYjZweDRLQTJmQ1pCQTloRUsxQkhScUJod0x3UG8xRkZBWjFPWjlnWnFnK0ZxZkJGTUFkeGd5S21NZVIwT08xdTJvQVY4dnVRZjdoMUxIcFYrNUtDSHVsWFBZZGFsK3R6K01FVlZ6UjA5ZldHYW5KNGt2NlFtTzZiNjU5UUlT''@;'; put 'put ''cVBwMEtZQytoTVFnTmlpa3U0akxSYVdhVEpMQTVPc3RWcXAvS0d6dFFmQnIvVHlqQ21UY3E0SXNjUFRwdy8vZGYzTERPVVNmMlBNblRoVzA0NS8vQ2IzekNzdllzaWpORjBhUDIvU0J0NUZyd0IwRkV1Si9WSENWYWhpUVpZVlRxcUdvV0RFVDlGVTk0TERUZVFiUVNlVzZhbGo1M3FXTDZ4YjNS''@;'; put 'put ''aVlmeHdjOGNWZmFQWHAxb2p5NDNCZGw5b3NPdlVtZGFySmt3bnNnYzZJZzF4cDYxaHRLMWxmeW9SSGEyT2xNYzhsZFVlaTJkdXBtMS9pczZ6Qm5BMHlld0tIaGZKdVhZOGtDR2J5TmdQdnAwZnVNVDR2MG4xdnl5RGE3Y284KzR1b0l0N29EM1l2WmtLT1ppT3NYcHBUdVJ3QkJ5SytxWENpdnN6''@;'; put 'put ''aXR6Q3Z0dXp5L0g1NXVhNStNcm9iZFBtc1R0bThmdWwweDBIbXNBMHdIZEtWOC9lTWNibGpHSUQ2ZWhZV3VhTGdxU1VoU1NYTkdDcWMwbGpvQkYxRHliZms3NS9FdjdSL1FHR1ByLzJIVkxQK2dLdlFGUENlQWo2TWxKWkR3S0NudUV3MWMwV0R4TENWcVNsbXBNS0hmZ24rRTNZWDNueXdZZFBQ''@;'; put 'put ''dnpneVg5WmZ1b0xWRks4VHN6c2E1TDQxMzZJbEw3SnA1ZzhBM2xvMEVIWGhJWmpxWTJHT2EzWmJEWXJ4U3ZNRXJvMHNON3hKN0R3anE5OTdUb3NTR3ZYZiszRjYvQ2M5TmRZbFA2QVorSFRIN0RJK3k2QXZqOEdmZXRSZWFaVVIza3ZKOWhrYjl6R3ptN2tQbUhMcXFSZlhmLzMzem9qL2VZb0xz''@;'; put 'put ''Q2ZscDdIUGRLaTlKKzByeWJvYTdlaTZ5ays4eUd0bkgrZkMyblpyR3pHYWU3bWc4SnZ3dStUM2tHS3BGUDRnMnYvTmtISTRzU2F4UFg5K1BxN2NULzU3dHYwdnBKQVdQQTEvc1puUHZNRytlN0FXaHN3RUY3Ly9mb0YvTGM3eEJzRnNHZjFsK01GSG03RUtBcmpoWFBqS2ZFd2FvclIyQ2dkRCtY''@;'; put 'put ''SGM0T3dUOEZYOUlFSGZ2LzdKdkxWZ1RmUDArNFQrSlA0QzV5Mkh0Y2Q2Y3U0UUtxekNDR01US09scCtVb3grTTYxR2RQMnYxaDBmL3Q0VStPbnprekJ0cm4xOS84SnAyenRINGwyYjMrTkF4WHhmcllJVDVMdXhBQmdZUk1yVDA4Tk16M3RZdGtzSnU4QW0zZHJLMFpXbEpwZjlvR1BpQWZOZTMy''@;'; put 'put ''ZHgyNGRvaDgyZkhuM0tlckI1dmhEOFFLZkJGQ04yWWN4VmpRdUVFUldNRnlyeWpYQ2pxdEJudzdCN2huVlFDczFSSHRLdk05cVFGZmt0Vmo2b3JKOU9nQnUyY3JDT1VxQnFlWVpQTVpwOGVEa0Nma0NYb3JZZGlTUU5Cdk53QlNrY3NKV0ZVSHBuS09yQTNzTStYY0N0OSs5Y0d5cGZqVThmUlN5''@;'; put 'put ''OGp1enNIT3FjRFIvYlo1Yy9kb2FxUTdRYXhuRDBrdkRvWWplN09KaWJxeW9wYXh1dUZHS1o2czczYzAxZFRFK1pySFFONU1neDZ5Z1pmeTdBV0xFVFFRbGxkWkRzUlZsTTFGV0Vya2NCcGRJdWdpOEZTOUFPVGRERVJOc2cyQk45bWw5U3FIZlRzREFvenF0V0x1YjRDWkIwL1ZZYmNqWlBmWnZa''@;'; put 'put ''NFNtRGJvbUUyaHZEQmxBS3NTd1ZQYkI1KzdvclB6aXQ2MnBZcERoeW9YMjl3ak5UVWowWWJobXByaEJtSUZGMkg4aHY1VWZDOTVSdnB0TENXMVJLZFRxYWxvZENxVm1vNXltb29BZlVoQUgrV29NUk0zQWg1S1REREpVbUJ5SWVjdGxlenNMYmt1NlMyOWZ0Tkk5c2JocGtPaFhuZDNvR0VpR3Ay''@;'; put 'put ''SUJucUtlOE9IbTgwak53NE4zVEJTRytvc3JVaE14eFBUaVVwUFJ6akM5NC9hRWMyNS9iTUs2djJqaUdSN3c1d0I5ZjVaOHZ1M0dZZ1JxY2pDaHB4SWxmMmpnSVdYQkdUN0o3K2wwTXg0MmdpemRmOXNJYitWN2grV0NUNlBKQ3ZadEgraytWREZVbHN2MzhURnlxdlp6a1haTHBKbjF2cjN4bFA5''@;'; put 'put ''TjR5UHY2TS9GY09XdGJzMjd4K04yYnhPd3JCL0x0aVVUS2FEMEkxamg2NWd3eEJCUTVaek01WG5MeE9kR3l4Z2Q3bTdyTFFFbWpyQmo2THpEZkJ0VXh0ZlhqcEhuZWlGS2VPRmFYZW43NXJtb2V1SCtzOE9qcDlzazQ0WjUzdTY1czI0eVRDYUdhMHF6Z1FpQXplTWo3NWpJUHVlL1QyNzhSWFpy''@;'; put 'put ''cTRzcFRFdmZGc2szNEpoOTJhTVJWaW50V0trb3pFbHVsbGxTS2ZUTG9HbFZjeUNFMmhCZytWb0lpZ3FUNllVSEFNZFNKM1ZyUy9uTThhZ241MnZpYUtINndnL2xkczhGTWJwVWVmODF2WFhIeHdmSDIwdmEzSUc5T1ZGcmtxaW5aSW04T05UblowVERtdVAzdVQzVUR4RzE2ZElJK0N4RXRXaGF6''@;'; put 'put ''T1dpaUtpMCtaanM3S0lCRGtIYWtOSFZxbGh1Q1JxaU16ekRLbDJKaUp6SUZROHdrd3BJTm9FQmlLeXFncWhxcnFxMmxBQVJxd01CWU1CS2lLeFZlWjI3clYxNEkzRWt5S3FzMy9TMkh2TmFOZXBVTGhzTnJwbnFYS3h0ZmQ0UjhmeDN0YWxDcURIL3Y2NXVYNmlsUkk5cTYyaHloRlB4V2h2dGo3''@;'; put 'put ''ZWRYSnc4R1JuTXJKSHVtYnZ3TUQ4L01BQVAvdWpockNWeFNWUFBtVmpKaFBmR2pkaWJBUW1NWXRGbGloV3NNdzlidTdzYjMwTmIvSVBXYlJEZmdPTVVzQ3RQYXZENzZCaEFTcmhZTmZrUUpwVkZuTDQ5dm40d2Q3R1VFLzQwS0hpZWRpVzVMNVc2UXU0dVhYWTIreVYvZ2FrMlZxMUxPczc0UHVU''@;'; put 'put ''NUIvQWpyS2dBVDV0Vnk0b1hVd3B4U3JicVo2TUErdzVUQTJOVmRYamVXbzZXQW9MekN4U3JkMFVxUmJCQ2pqZzk1Y1UrLzNGaWNPSHliNUFjYkUvNEM0T3pLejlrWTYvL3RMNnVEeCtLVHFTTVZwQXR4WmlEY2xSdDFZMUYwRmdwS3M1b0FQTWVEU011aEVBQ0lpZFBtMThDVEtGUmRGTHpTVXVw''@;'; put 'put ''eHhIRjdmRTBXVkhnSnJKdXR4RVQ4YUxDa3I4eFJXSHh6cnlFMzd6UDQzNk1hUGZRd0pycjNidVl2cytDQXVnWjRZbXRQUUZBM1BTbEoyM2NnMUk1NFEzN0xtVmF6ejFDOWh0Y0hZWDJLOGIzc3pQWDdCWjdjd2l4TlFZWWlvTVhPbXU3NTc5OUo1RGg5YXV4UjdwMzc0L2RRNjJzd2ZyT1IyaXo4''@;'; put 'put ''RjhCTlRPcDJHaXdRdzVJQ0pQd0tTS2tYalliMG9BYlg3K3lYelFaT2pRSVNvK2tiSk9vUTk0MjAvbFR5bkcyaXFNV0V5Yk1yV0xDaGJ0a2w3VUNWcXROYXVocDdac1dTQjU0SGY2VmdkdmlVNVhrbnM1ejBJMWZ1VHpXKzErdTk5aEFQbWpvbVRkaGc5SkorZGUrRTcrWmpwMnNDUGVQTUMrSFQ3''@;'; put 'put ''c0dJczN6N3B0KzlvVUNtOXRHZXBOU2M4cFA0bDJLRnpmSElzMUl4V2ZXc0cvSHJ0Z05SUE9xSFFOZHVaT2FhazhzcXE1a05IVUZ2N2tUT2hBZHBqOFppYlVpY3FNWlI1czJxMDdmTGg0VHMyRG5RM1M0MFNiRGNjVS9UTUtjOW9VOXloNXk3aUg2OUp4ajlkdnpJTHBNSFRqQ0JnS3pISm9pTzZL''@;'; put 'put ''d2ovWmNCaTVZUWplellEZEVKOU9jQU5Dc2YybXdQYXpNdHZoNkdiYmoycHlIYmd2d1B4NUE0eGl5TTQxUFpNS20yMURGY3pic05NVTlQMlA3RFRwdjhuajg5dlphZFFtbWdLYlNGblhScHNvdjY0U2xXR1NWWFFTczNLc20yeW1EVENYc0Yrc20xWFFuMkMvYU5jbXNDNXZ3TXhML1Z2dFQzRGI4''@;'; put 'put ''VWxZbHduMVhERHBxS2N1cjhyS0ZDYllNdHo4Wk1hQVU2SG92RmxLN1lBTElHV1ltTEUxSlowS0NiKzgzTFBybUhqNE1QN0h0cG5KUHVtZmlQWXdqN204amwrRThZTFUzblZnZ3AzZ0hjT3dJUHh5a1plU3paR1hJQW9FYWdQTTNnMnBRaTlZc1RTNFRxWnhGMExGOHN0bkdxS3pjNUdtNW82bFBj''@;'; put 'put ''ZjJ4QS9YUmNZR3FwUHVoa1R6WVB6RWpMazZPTmdWcktpcXNwYjJkQXhNVjVVTng3eGxqbUtIeFZyWkhodWFvL1lTekhHUmZBanNwV2dtNHNZNkd1WUZzKzVXcWt2SUFqMDBBQ1NBWjNhQW0zTE1Cckw3cUJFVTVPNlZWYzR6QW9sTEQ3Q2EwbmpSMlZUV1BqbytmdkQ2Nnl0ZFJlWDZFcXRqb2hQ''@;'; put 'put ''SHB0Ny8vaW5wVlkvZnBPYzVTSzhEUHJWTXZ0aGhRSktUTHlCYVpJMnBjZ2ZkeWxOWjhPYzlRQzVmUU1YN1dleGZaUVpUUmNWbVpDVVdLbGFhRlNFRHhQSkhFQ2tnWlBDdzlCSVZNbmhDenNraGRVU3I1T1Fva1F6RkJyVGFtTWR0NTZFWDEvRjc3em4rVHd0ZytKekFkMU1GamNFcVJrSTF0Tjhh''@;'; put 'put ''dzdGZU9vWlR2bnpOelZNM24xMStkTjhOTis2REh0K0piNkZmYTMvRU4wczM1Mk5OTnVpYjVZQVpSUTNOSjZHZFl3eDlDMFIxS0dDejJTajFlTU9pM3g1T3V0TkowWTd2ZTkvN1QzejF1WlB2UG5maTJhOCsvenpXcjMzKzgyOUtiOUIrUzlaSFNUMzBhNlhaTUNZOWdTbFRJNEhJWFZQaVBFRG43''@;'; put 'put ''bUhFYVVWRk5vYzZMTmlGQmJhS1Fpd2VyM1dWKzBwODV0TFhMbnZnazZzLzhleHVlZEkxV21SenBZbGVPb28vdW5heEw0UDVXa0I4NHUvQm1EdkVlYXlYanZNa3NFLzZDYjVIZWcwSHBMMGorTkQ4aUhUUFBPdTNlbjB2UGtLK0NGS3JPaE1zWWNZbGFHazg1UE1TbXVNR0lMTXlQMk0wWVhWUi9V''@;'; put 'put ''MURnR2xRUmlsZ3N6Qk5LSFlYRXFlYkh4V0tsTXRFYk41Zmplc2JVeEZjdlRDaGIydDE0bEFvSE1TdWxqYjlQVFVEVGJmRjYzcnE0dWZTQTlYNmJvTzd0dm85RGVtQ3duVERIZFcxeFladUdPZXk5UXZvQ1JZMzJqay9EbXlJeTRhSGxWdzFtbis1RjYreWRRQis5Q3p1UTArcGhud1lEN0l1WnVY''@;'; put 'put ''VGU0UW5hTzQyRVIxMWJ0QnBZWjZCa3FZWkpta1FEeUtRUDhnb1dBOXNUMjFiaXd1bUhncGhaMnViZmhkZEZCV3UxZnQzTFJ1S2E2dnZhRWdYRnFRYjNsTmQ2elowNjZzSDB1Zll3bTVMOTlmb2FlNTVDNjdHdCtGSHJTSXVXRitYZm9rTWp5UDh0UFJMbGczQmM5OW4wTGVZYkxXd1V5czZRYXFR''@;'; put 'put ''bVZIT2NwM3M5THhvby9ITERFdWVhQWkyVGZKQk9YbWc1VXdKbUZCS3ZzQmFQMzVOOFQ4dllJbU1BUzk0S1dZcXlrdEwzQzZIdmFoQVM4ejhmQXBHblpiVDdrSGNsN0ljT3A0MXptUFhORitjYmlyb1RuQS9BK0FqZzJyQlA1eUtUblVjYm0wNTBqSFZzTnZiRzJodEMvVktkL2MwTnZZRWE3V1pQ''@;'; put 'put ''dlBZVlYxZFY0NFY5SFJxcTcyZHRTYnBMMHlSanBzUDJQR0M3V0FiejRGRVpBeHN5VExVbThuQVR0RmtJaVRTWEdRUkQyc3hBYUVxRW5ZY3d2d3ptbFVraXR5NVJ6enBxOHhxRHdaQXMxRGpMdWowcHRJc2UxTWQ3TkNWWTVwNlJzYldmanFVeWJTc1pBYXU4d3dXVE1TYmg1NTdibTZ1b2ZhaHdY''@;'; put 'put ''TjlsN2ZMcDJ5M0RENmtqczI2VUV1bXlZR1JBWStBaXlreXQyUkZod21ZVFdER0xSdFpqUURQZVhNNTdUYWxCcURJUktzQVdIbUZVMGtvaFMvRzhQalJlNzd5bGE4Y2hhOTdXRFFYRHc1bUIwK2NnRy80S0EzcHN2M3FJcFA0YXZJY3k5OUpzQ2hpbUNhdEF2Mnl3UDZTVnFDSXdoUGJaUERRQUtQ''@;'; put 'put ''YSswaW9QaTlXVnJwZFZaWHV4OWpQS2hlWnBEKzlUdnFNL3dSNnJVRkovSC93M3hYNWNKMFdGUW00RHIwcXh6WEg4UzNrcnJjVEU2VjVPRjI0UjNxZTNOWDlkbU9pYnRGLzRlQUhoc2dyRGxsdUI5YS9BWDdQbzdEVC9nejQ0YURwRUxtSnF0VjNVUzNHd3Ryc1dDUEV0QUpXekI5Nm1FdlBOd29I''@;'; put 'put ''TG10dFhzN2c4ckd6WXpnUW4yOXQzWnRZcXlJZlhUc0tmWGVpVjlDWFFIV1o2Sm1pU2pBUUtqSW1WTW0wVFNyc0hRb0VTa3ZoNnhYNDRmZkRSem5ldTk2SjFxRkJNVHJEMW1ZQmUwVmpONUI4Vk1KTW94SmczSU9xMXB5a1NVUWd0RmZ6VXZVQU8zMEJDNUNCQUdIZHRCTU0xOW5GeUcwUEJBSlVa''@;'; put 'put ''MVBNc1FRTkZvNVE1VHpTV3BOWHExc2pKVEdyczl6djhBQnRXbXhWN2NYNlNLZzgyRkJVRUhVN0xJVTJvMjBzemVwallyRG52Mk43SHRIUlBZK2c3ekU2REsrUDRIOWxzc21MV2pQcFNxZkRyQ0g4NkkwZ09sRkdqRnhZZ2VZNWdHUjE1NjBxZHRtdE9acEVhbkhGVTNFU2FiZE9NVmxCdHVDa0xN''@;'; put 'put ''RmltL09pOHVKTXVtcHpaaFNiT3p0TEVtNHE4dEZxSHF1SWV0R2ZvYzhoL2VNRVAvWTVKbVMzZ1RtR0hUdkFuRlZnc0lnZTNBSG04aHhNQWZyb0RqQ3J1YkZXMEwwY2hteUdlVG5YandsOWN5TU16eE1TWGdNWlpBRlRmekRUWjZYeWgybDZjTUpCOHRDc05MMW0yUUFDVWJjQWRxWjh4cVBsMWhK''@;'; put 'put ''ejVXeEZObWh0a1lXU0NTUWtWakpIVWpTWkNLd0NjRkd5U2dhSnRMYm5ETDZUTkV2aXQza3F5VjEza2ZPTDBvZnhNZWtqTFBlamsrWHFwRERKbE5iV0NFUWo2aXFBTk11eEJwZlpnRzZ0bUFoYW1kenI2ZEdzZ0UvQ042UTVvUVFQWmZrdE8ydWczUTdBbkQyRVJnMm9BZHRBR3lHc3VlbHR0NnFr''@;'; put 'put ''OVVBYldnazN2R1d6VEdSekM1clhSNDVzMTVESC9Xa2NJWVVhZzdYQWRsNG5WVFU4Qm12QnNtall6SDNibnZjbThjdUxnY0dHNjNvSzlaV2JXZE05Yy9mTTVveWx5VWk0TDlxczhXN2syR2Jqa1UvTWJjeGdRb3ltV0w0UG8vRnFtUS9leVdnS3EyaHpNOHd4OVBnT01HY1ZHT0NEYTNlQVdjMzFz''@;'; put 'put ''NEpPY3BnOGphOWZwRGt6Ykt3SW44LzYrN2IwQTZJQ0oxUXd4NUJuTTh6NnJ3SEd4dVlUNGZOWlA3OEY1dDhCcG9UTmgvZXpzdjdaamZNQmZxcUZiOTluT1FUbE5MdDhvM1d4b0dkbkRBYVZlV0d4d0k5eVN4bXI4WE5Dc3dMUU5jWjhISUU1VEVtckVrTUEza3FLb1BEeDEzbnkxOERBcjZaNSt0''@;'; put 'put ''ZXorSmxjQ2hodVdNVCt0VWQ0SXRpTGkvOEFPR0Q1TFV5bXhHV1pjdThXUExHY0RZYW5oTHkzbjlraWR6YkRITU94SFdET0tqQ3d0MS9kQWVieUhFd0JlbklIbU5YY1dDdm91VTN5aStaTTNZRmZKUTVRQXJvbmRBakg2b0poNEl4d211WnN1dkdIejcwN2MrNjI3dHZPZGI3NzNCM24zdDNKUG1m''@;'; put 'put ''ZWZRNnhlalVsUjRWV3VkYWpjN0ovNjhJYVVsZGJYbFppMXRHVWJLUVZSanpzcWFCNml1SHBQRzlReklJcDlMamVsZFZ0T0VFRWcwSjlwT1RpUjRJNjlYRmZwaENZdlQ0UUNkbkRkbFp4b1dSeGg4QTlUS3N5VUpNaWNya3hENDBqWHU2RlhVbnkxZVRCKzViU3E1R0dJL01OamNEYVRVY2o5VWZt''@;'; put 'put ''SkZSWmhrZTdzc0RoT0hPNnY2Sk1laUtUSmNVMzlDM2RmOUJYbVZxSjM5Z0h2TzJ0YkZ5UmZqenR3emRURHBmK01IVGRRTU8wWDdxNW51S2U1V213Zlc2V2FlSFJMZlN5R2VZWSt2RU9NR2NWR0tDRnorNEFzNXJyWndWOWFqT2ZjMXVaamRVdWovWGN4bjQyNWU4MFpPcUFPclFhckYzV1lmbjRL''@;'; put 'put ''MWVFQ1pyTDRuSlkzRVZ1YThoYkpQS3NncVFxMnltWXkzWmFlV1pMdHRPWmx0Vk05MHJMOWQ4YmFHL3ZsOVp5c1N2aUpWOERTVFgvbEJIc2Rob3VxUWZxcUFBZEFFcE1vTWRFK1hSVHZLRERjdGk2VEU1cVhNMEJxbDdQWjR6MmdEZmdyZk96WTYxY2pGUlVwcHBTY28xU2lsNmdjZWF4bGlPWnpP''@;'; put 'put ''SG1nKzAwVzNaM2U4dndjRXQ3Sk5uYjA1anNYU2JtcHVsb2RMcnBXTHBpWDNQVGRHeWU1c25PZEVhaTdaMXhtak1LdU9aNUFxOEFydnRBdnhQVXU0aTJlUzdBSG54QTlmeWlBby9GV1RYOEM3bm5CUVBxNTgvbCtsK1pVRDBYS25Qd3BoczVuOEp6NFVOZ0gwWlFFbVZ3TjYvcExTc0RMSHM5WUkw''@;'; put 'put ''NHNWSGZqSFZHQXlHaWpucDJ1aEc1aUhkSEdCT0Z5YjgyYlBONmZwNlBFd0hDb2xXR3EwaVBkS0pldDF4Z0lFcEdma20yMEdRV3FCYlBKdzNRY1pzdTJjYU1jeTJ5aGRoa1VnbU16T2FHS04rTUZnNi9aUmRnUmxRMU50YlhJOVNZYWV4cWE2bFAxaWRpVWNCY25UM2dEd1FEUVV2T3JGRFMzTGRr''@;'; put 'put ''WVBEemlVMEh2aUJ6T25EdXZQRmxmdnFiT1JuMFh0bTdkRUtWbmpIWHZWQVNXRzNiZkNJc2ZhQTNUTE0yZWxyNDJYQkxJdEV5TjVaUDI0alhSeEtxazJMcERuK2JQK0JvcXFtTnNieUVUcGFYa0VJUFpjcURXS3RwREJHZE5sVktrSzRFQzZpNEVEYTRBTHhtbld3V0JtaDVBQUZqUVFjY3BXT3N4''@;'; put 'put ''MHJkZU5MRkFaRENIcXpZZFVFS0MzQTNYUm80NDlzQ3h3cmdqK1RBdFJUM3hoQ3ozaGkzQm5SL291RkdFeVh3RCtiaWxxMkdXM0gzOGE3dHNpY0NkWnNOdHhiRDJPbWVMZGtVbkw5NGZnRGwzeUhPMTh2YlBhZDgvUkhWODRzS1BCWVgxZkRQNWZwWm1XSFAxNy9HenV4b1A5L2cvZC9PNFdsUUxL''@;'; put 'put ''SjZmc3pKNFg4R3o4MnMvMi93L2gva3ozOE16KzJzZnc2L2NpK1BMOUdhcVU3eVRWUUdWdGJlakwySTFRYktscFBEYmpQaW9leGpwZlFZVHduZVd6ZGtsOUpEWHd5YUFKTlY5V053ZDh2THkydkxhd0srVUpEbTJ5c3FXTkcrN2hBMUtVTGNwaUJ5OHFtTzI5by9uKzQ1a3gwOTI5dDJyT2RBYjNq''@;'; put 'put ''Zm1mTEpxb2FsL2dNVlBRVnoxY094Z1hsNjlHSDUxTktlVzRaN3o0NE9YZFUxUGpyUjJCc29yZ3luNjNyTDEzNjJsSTJPMWk4T3g4Y2pGRS84VEkvS3kwa3VML2ZtOFQzSzhMZWI0L1gwZHMvcHZqMmdlbjVSZ2NmaUZXcjRGM0xQQy9hcm56K1g2MzlsbWN2ZGJuUkVybXUyZ01YY2xnSHRyRlBP''@;'; put 'put ''ekJFTFRTRU5rUDhza0w5MlNRUysxRTR3ajlCVFZBcmFWWWtrNnFscnJqNUdCOGRRWGFPRXJjR2dweVFRS1BrRnJhWDZsdndML2xLb3RDUVlMQ2tOZGMwL3IzeUVPU2xuakc1VWhXcHlOcHNEYkxZd1FMbE5ZSjNwRlpzTm5ncXFwOXZhYkNYYjJXenFBN0x0YkRhdjExdmpyUTdhd3JZTk5wdmFa''@;'; put 'put ''S01XbThadDV3YWJpeHBzWVFFRVp6ZzRjdVBRWkUvWi9oNWZDQmg2b3I5c2Z5OEl1NS9VeEtLN292ODhFZlhDSi96Qi9ZbWhHMGNpVldPaGhTU3djcjEzL0xkeGJQSUFOMzhSMkxrOUtyM2hZZnZHejJqby9zOXh1amlJdG5sTzZlSkRxdWNYRlhnczdsWERQNWZyWjJVM2Y4N1BIbWcvKytWKzds''@;'; put 'put ''YWRxL0tjckEvbnoxVzNUWmZiZXJhNlE3cmN0b2V3MjcrV00rZm9JZXpiUElXMS9zOVBZWVhWcmVseU9kdzhKK01HY0RhSlZER1hsbHhjNWlqNjJCYS9odHMvZCtYc242T0RhTHVZRGphZyszWm9tN09kc0dHU3k4YlM5VDJDRjJ4Zk4vVFNrV2t0d1VCOVdJZkppQjVNYnRocXNzTEtmZWk5TTBE''@;'; put 'put ''UFNsbWRIWTBXRnhlWEZwY0dhT3pHNGFWQkJ5MlBvYVg5WVY0S3hsVitJbTBpZ3RlZmlIZTRDOXB6ZFdIRkZlVWxaUmJwemp2dnFtaE5CTXQ0aVZpRnU5aGp4WjJzVUV6T085MURlb0JuNlUxQ1QzTUdMUE9BNlZXS2llQ0FxZFZIOUlKZUZESFcxOENVbVdXMjNXdXQvRnJtNFJyb1dkUVRjVldw''@;'; put 'put ''WkM4QngxcXY1NUZDdDNxSm5rejlWbGhRM0JhNUFkb0VQNSt4MXRiV3Btb2JRd0U3R0UxaHIxRXN5NkVsdFlQTjVMUXFpQXFwTWxoSkQwVlp5WllrMXBXck9lcCtxeVN6VWdTR3kvbzNKclBTL0ZhR3pZL2xrMXBsdi9odTVndUZaRi9vNTF0OEtwN0xTWGwzUU9iZEQ2cmFubFhhWWoxNmJJZTJG''@;'; put 'put ''K1cyQk92bk9IMnkyalhXTml5M1BiMnR6LzViOGd6QURESVlpOUFCSnJrQllKNFdNQVVDR0RsR0FwVC96bHlPNTdVZ1Qwcmh6V3NYYkJwaTBDdW56U0dxVmpBU3RHZ1pOZ2draTE0djU5RFJVeEYrTVFWUENLTFNwM1pIYUNiRmFSTW0xZDFFRVVNYld4UmVzc1VHNER5Y1RpZm44YXFCYVR6UDV2''@;'; put 'put ''RjRhajAxWVhvaUgvTEx4elgrTFdtZ3lrVWdhSE0yeGJXWkRla1U5OTkvS0NQOVVwMVQwYi8yakNvbjlHT3Q3ZTFyWDkrUVZaR0xvYlhrWW1oSDRmOXQ5aHZzdWJ0eTl0elJjYlJkL0EwYjBYZDJhS3ZZZ2dMQWZKSFh5QUhQOTdFN0ZnWXpmVVdnaUsyQU8zNkdUTFA3S2VPSkMwZ1U1WUF5RmZL''@;'; put 'put ''V0xETWtnREh0V3VYWXplR25WVFpXeW9CS1BhSmY0VE8zekpHcUFzVmh6bFVWVEU1SlR5alZpb3lIbXBtSTRqV0c5S3h5aGVYS2hsQTllbWZHUnIyS0VDWmFzQjJJQVd3Qm1nbGZCdlJSRGVhK1JxdlRMTk5ncmJMajh1MDRMR09HU1ErbXJZSUtLRnMvUHJ4ZEM1cW9XaFFPaCt2REVaZlBIbXIw''@;'; put 'put ''QjFtWVY5eTBJdDJXdEZ2cUd5QTU5ZmJIMmNMY0luVzZnbzBwdU5YZ21VbS9rYjJ1VW5laHNuS2JGYXZ5Y2NFSHcyZDRTdTQyc1ZqOU5ySFl6YjZBWHZZRldLMG1vNUZhV1dkOWVVdGJuazlMYVdTRTY2eFRjbHZwWjdUT2s3Y0YyckdRVXNUdmZ3QjR3WThLVVFOcVJmZGtIUFdWUkM4cTVRb0N2''@;'; put 'put ''UTRFRFhINVVHZWlSeFNDWHJOcXdQbDZYbEhVTG9FYnJkWHkwKzBsZnJydG9aZDZiWVUyWXAzT3l0dWdUUzNBbVk1R2FZUTIyaHB0U1NVdERaYUd1aHEvdDZ6VWFhZVIybUt6WXRyUys2aTROZXYrRTlKMmNXVlZWZGdmTURncnExei8vWlladkpOMXZySzJocEpnVGFYTFZUWDZ0dEo1d1pkNkRZ''@;'; put 'put ''aXhpdkUvajFrZlhmL1VscmoyOXdDbWxQRS85N2VPZm96SHRPTHJlOURyd01NT251ZEFzSVBuZ1NoWGVmQWNJSzR6QTE2WGw1WEx5Q2R3YVZva3FYRHE2NVJVTGVabEhXZFBxdXNjZ1FMeWtHd3IwTnpaZFJqckJYWVc3YVc1NjA0SDBRaGVKakowcW8yVlRYTkxqcU5ZMGtKVlJXbXgyMlVwMkRZ''@;'; put 'put ''djFxNU15SzJlMFNINWpIcVl6cXpDYlQ4YzUxUExuMVd2VmNFc3kyTW1IWDU5N1kveU5JRm1hZm5OVS9rekFKQjN4azF4U0paakNuNndObGZIYTkxU3h6dDQrREJOY29MK1pvQUhQZ1M2MEFlMHpuZ0EveXYzbWVGNUJlT05jZm41cDlselZqdkxkSDlVMXYzV0xmd0dISXJyaGZjQXpJUU00MElY''@;'; put 'put ''T013RkJZYlg0RDZqOUFQOVA4ejBORmJwYWRyUFlRWXpJY09jM3dqRDgvbEpMOUJJQWMzNE5KdU1CbkMxQkQxUnFwRTNGZllXb0FKbnJyQlhURkVpU1R0RkorbVZHbmJ0V3JuMTFzVkZzQUVYYXZDSTlQUGVoZDRmeXZVQ1hwYVhuTTBVbUl5aWptcGdmVDR2M1FRZmkrUjZ2bHhhY0w3RXo4TitV''@;'; put 'put ''dzViNXVlZmRMTDdzekROQzVUSHg5N0pRMk5qaHlieHdScnBKYXdMTDRUeG5QU0RtdHlaeVUzS21Rbmc4UmZiNFJwODlsZGtuNTNhV2Zkeld3bjI3MkcycjNGWnR2SFk2aEE4dHhLckFnODRmU0ZuV3ozTVpIQmNsc0dmMzJHc2k3bjRnUDQ0VXAyVHRPVE9TWTZpcDdiWVpkeHZ2aXZuNHg5ZFFO''@;'; put 'put ''dWQ1K0RDeldjc2N0dXBmUHdCRjE0bTU2R0NzSDRWOXQ2R3l1bTVmZTUyQVQzSlhTOWdvS1hVU3E0WTg5VEs3V1V1QjhzcjVZcTlKSDljbkV1dWNHSnIzZ3pxNDZwOTdma0Q5eDg4ZFA4UzZaSEVZWHAwZWJxUEsvZTVqeTh1M2J1MEtKbnhmdzJjSFJpNGt0OUZDSE1XL2gzME8xMVhDNXJLVExx''@;'; put 'put ''eFhtY2d0QUNaaFFlQWhqUmF2V2JaYkNBNm5SSUtNSWxHUVJVTVNDYjlmb1NTTGNubXBwUS80WS9YMVVCM1huc2dGQWdXd0x3M2hsSHpNbDZsdGpXYmJEcFpoUXRsUEg3YWV6b1lQTk16ek5LYmUwNEhBeWU3RlRVdVhhUEtjOGJYYnFpcjZXeEtkZkhNNTQ3R1ZEdlQ1MFNkL0l5dnBKcGQxdXZI''@;'; put 'put ''MmQ2bVpQcjk0aGE2NERtM2RHK25lV3d1Szl0K1FLZkhHZjJtWkRxOXlPR2xuOUVjWFJtZVBvL21iSWpqakg1VE12M2V2TzFZWnhqOVRuUDZ0Zkd4V08wem0yZVRQTStQYktGOW5xdEw1em5ENTNrRXlYWFRuYXh1dWd2OWQ4WVZqNVdYYVhUNkVxekJ4WVZFMEJTQXVhRFpQbGNBek04bDBQa3U3''@;'; put 'put ''dmRwOGRaVGY5czJ1UUp2M1dyYlhJRzNhclpqcnNBMkRYbXVnRGtZOGRQMEhLL1ZBRjdGSlVMTm9iZFJIazdhcnIxaW02Q3orMzJybHlvWlAzNVN0em4yYkR4MHlSSnllYjlZem5VSFdnZmpDb3U2V0FYUml1WEFrNlcwNEZDOWM2SzhjNUdOT3llS3VpVkVLekJRUGlLMEpjbWpmdFBHdldXanlp''@;'; put 'put ''MjdEYnZ3RnEzWUVlTjIyN2ExSGQ4MVU2QzJtbTJhSHZ5WlM1MFA0TGZLTE1jdkhoemZMc0VqdmhUZU1kMTgxNHgyYzVhSE5seTVjLzY1aWpmUEtyd0pmTDI0QTI5ZVZIZ1Q2K3M0YjlZQWI5SzdBcXJRRnpNV054YVF5d3pLd0VUdklwUzNGZ0ExN0tTR25ueVNHMmlRVDA0ek11Z0pzL08ySE5o''@;'; put 'put ''RWFCTU5QWWg1TzIweU5adkE1V09iTGEwME5KWUlKaDVNdG9vNjdIU2JxTmZwRlhmWUkrckkwenNPOEQ3NzFuM3dPT205QjV1eTRIcHkxeUN3dlA1T2x0ZmZnTDZXS2E3QmVxSFdTUXg2QnlhR1hGS2ZOa2YvV28zMlZpT0dpV0xEU1ZCY2dHRmFVeWdJbWdVZHJ5emt1WHZJZ3hRczFlZmI2QTNr''@;'; put 'put ''cHJkcWxLbmRIcDZsQnFJanFtWUN4Uk9WMncyb25oVWJ1QUZUTkxLaDJZR1N0eFlndUNuaDQvZ1cyazIwNTJzU0FtWFZSWnV6Q0p2MW8ybDFtVUtmMnhoZzlNZnVwR0EwbXBacDlJb3ROT29GRzBaZ3R1d3N0MlhKeEJaN2wrY2h0T1R5RUk1dW80ZDRyUHl1WEt6ODZBaFM1VEM4bk10ek1LRy8z''@;'; put 'put ''NUxEd05xeTgyMFdsd2VZbTdmTG93QWI3QlBidG0zUHgvcHg0VzRrMzZleGg5Mm5FYURuTTA0UVJ3V3dyWVZBNHN4Tmx0TlA4bkgxdk5NRUxRS0JZbi9Rd2U4bll0a0VtOElRbTY3ZklQZU0zamF0dCtWaUQ0NGoxOG4zY0pEejdOWU5TNmtjYlBCNTNQZWNWRi9Ld2VjNkFIT2RBNy9JajI3aVV0''@;'; put 'put ''cFNySWRORVRFVy9GaUg2WmxORVh2aVo1RnI0RkU4TEFkN3krUktGMXBac2sxOHQwcCtUV082dWVxVGpTRmRZNENXdUlXOW9pckV2YlVTSlptTDRwSTVGa1JTMTZVY3pydXZ3YkxOQlNxS2t3aDd4ZTRLWWZUWXluTmU4TmdXT3VLMUtGUm03bVcwSUtMdnFQSmN6aXA1THZEODNWdmE4ck9IaThy''@;'; put 'put ''WkF4Ym5rYXJ0YWk1SFpnWGRzSVdPMkIwZWpOWTZaRnRyUzU2YlhQOUJhVzJCMjFyeWVTTnZ1NnEwQmQvMzJ6dTBmVTV1UytPQkgxYTFQWnRycTBkbmQyaDdVUmtYNjlzWTNiQzZXdXBQRjlJNEJNMUlwelU3TEE3QkNtRElBV3E5ZXhoUkY2SUNlMEM1N2twVkRtdklsOEYrZmt2dEs4MGJQMHd1''@;'; put 'put ''dnMyN1BOejBMby9Qeks3Mmo0LzFrWXQzN3Q2OWZSKzUraVNDYmdXZU95MVhKOGw5cEpPaXY2dHZiTHgvZFpaYzNMMzdUcm1QRVh3RmVRNzJVYzdHTnhLYWp6OWlBQlU1dEYzK2VBRXlCNFZjTnI0Y2NtSk95Y1BqbFkyT1ZHbHB5dEZZTVZGTFJxb3FVZzZYeTVHcXFHTGpUS0tIV0t3bHhNYTVa''@;'; put 'put ''Rzc2NWt4L0picy9IeW1SYXdsR3NFT29aTFVFemF4WGVtOE96YVpmMVdJQk9IdzJWd1FxdksyS0F2WDk5VGQxZFVVaW5aMFJlb0U2L1NJai9QZElWNEkvY1B0NGp2d2VRTG9iV1ZFcm0wRzBFQlpqb2RReW9tV1ZBT3hXR01EcExKT0VBbjB6d2F1bUFpNk5YRlVnMzhPdUNqTGYwRkhoN3M4Rmxo''@;'; put 'put ''OWhVU0czSEZMbWQ3bVRkbnc3ZVFGRzdtSGpwcDNRczRGVmFUa3dIdEpqWVpBZW1KTlpxazZCZmxlVkt6U0lNTUdNUXhmb1VLMU1ISWlhZk1vVnkvU0dkSzR5L2JqQVYyeDFtK3h1YmJwbzJzaysyOXk2dEdXR2ROcXNCUVVWWHNNNytFLzlEWHcvdXZCL3NGb0lFWlh5aWdFdElHZUl1cmFuN2Ja''@;'; put 'put ''Y0RZVmI5QWZsb2dpY1BmQ0JRZktLNDVZUE9kN0orSzVYK3RuNmsrdGZBcVlLc0I1SytGM2tHK3UwQXJtK3hJMlhrbC9nZ1UxUFZWVjRuUWN0V1FBekp4OXZVdVFqNnNWMU84akhWeFQ1aUhyUjR3aHQwL1lZZnZvdDJ4N0RYYXEycTdtMks3aC9pM3prYlovTHRWMUJYK2YrN2ZvZ1BjOVFuNFc4''@;'; put 'put ''K1R0dVA3ejVPOWwraUFCTW1QbkdRekxNMHd5R3FHQjRyUDN5WEQ4RlFBM2J4OXBmeU1YYUM4YlF0am1RdmVpOU8raUdWM0xuMHIwSHVPNXRSUDlHVExqanJlK0JmMVdxd1IxelNodWgvVzIwRWZSdi9sNXAwNDAvZ3k2U3p3TE5sREY2R2RwY0VNZnB4YTdFeTNsczlvWDhCZmJrOWcwMzJEUGJC''@;'; put 'put ''MzhXZlpzOENDdTJBQVppdkxhTnhISzFiVEFtL21zMlpqbTkwYW04RU9oOFF5R1R3SVJhb0RoZ1l6ZEliUnhidStOVXNHNkhhVldwUHZQNTRVZklnMFZoUGo4MnozK0dlZHB5ODZSa29reVlZdkZodkF2V1pObXBMb2pXeGJPNm9FMTE4WSszK256d3I0WCtleGcrZWVudlh2akE4ZFFMZFBOT2RC''@;'; put 'put ''M3NQVGd5Ulg3NC9zK01ocTNBSXdqa1FHVDlkNW96cXIrUDBnWFVPSXQreWZNYzR4YXNMZVIvdmtTUGRXWnNOT21NNmo5NVlpK3dDU2FUc0dRMUZJa2E5VjlLU2IxRlEvWlhUM2hya2JZVzVMK1gwckp0dTIzK1lzcVd0dUNCTkkyT1pqTEtYMDRablIyZDJiMHJrODJNRFBURnVtS2R6VTNiL2hV''@;'; put 'put ''VngvL2dyNmhVYmZvOW9JS3RhdnFULzhJS0hza3F2NHhFcGZQSzMxdjVLL29oOGFmODRaWDg1NG1HM0I5aHlmOHhGZ3pXZlJLWDRMK2pOK1k4QVFaenJLNEx1d0YzZ2Z0MjMzMzM3amRmdEQ5eHdjRnJXUUd1UW9FVEdGdzQ3UlpyUC9qQjNaLys5T0NGSit3dnZzeDB3Uy9rTzNTamFDSXpXdVlo''@;'; put 'put ''R25ySGdJbFo2UnBRY09CYkx4c3dNV0pzb3JVT3VSb1hNMHRPNVJFUStCNUZEWkc2MmhxckxRak9vTlVlTEtEQnE5eEZRMkh3RkZubVNTclpTZktWbFRSaERKRHM5cktRS2l0dlNkdzZOUGFlRmZmTUlORU03eTladm0xRUxta1p1TmFMSzZXWFlDR3QwdmNyYnNwT3NtdDN1NjhlN0M4dUFDWGVl''@;'; put 'put ''MWs3SzJnWjYrb3ZLN0hiK2dkbVpabmxKUTU4UGNnNTNST0UxaERZYzdkN1gwL3Y5V2FHREpneUFraGRyOVZMaExVMStwWExYV2lSNzJMUVAxVmlMOUNTMkRaM1BXMjlLNkhsOENYdVN2amozaDJ2U3BCajlpMVV4dU9ZZk9idytWd3N2NFhxTHZaY2RjN0tubC9NUFJldlE5dkJvNVdyMU0vei9m''@;'; put 'put ''ZktmaXAvZmxjTy91Z3g1VDZLUGVSZGdBTXZpZ01PcW4wMkREalk3R01waU1oN1dJSE5LSGtYODdqVWFKRTlybldrUWc5M3Y5UUlrbDJ2ZXpmblByRDVVbiticndQODdVK3AxdkZDRGg4RlIzTTUvT2c4dTNOR29ZT2sxVCttM0I2RGFkNGJ2TmR1ZmE5ZG0wRC9ENUQ4RWlJQUFBQUFBUUFBQUFF''@;'; put 'put ''QUFBOENHK3hmRHp6MUFCOEQ2QUFBQUFEVHdaMkdBQUFBQU5TK3BPdi9RLzdvQkhVRHlRQUFBQWdBQWdBQUFBQUFBSGphWTJCa1lHQSsrZThLQXdQTG92L08veXRZU2htQUlzaUEwUkFBcGZJR3F3QUFBSGphZFpRL2FKTlJGTVhQdlY4R1JSeXNXRkZzYXpIV0prU2ExdGhxd2NZMHhWU1RTRnRy''@;'; put 'put ''ZzBJWGNWQVJzYUNwNHVKU3NRNHU0dVJrRUYwczZ1Ulcvd3ppNEs2VE9FbFVXbWdvV0FyMTg5eG5JakdKQ1ljZmVmbmVlL2VlZDc0bnk1Z0VQNUtsV3FrZHlNaHJER2tCUWIySURpK01pRDdFYnF4Z1NDNmhud3JMZmV6WGNTU2tDVWRrQ2pGWmo2UTg4eGYwSlhvbGoyYisxNldqMktYVDFDUzZO''@;'; put 'put ''WTllUFlVK1BjdnhQUHJjODV5ckdZNXhIZktZckdLck44VzlTdGl1ejVIVE9VUjFsYnlHdEo2bml2ejlFV21zSWFPdDJNS2FKblFmQnIzVHlIa2VGZUwvczBnNzN1UHpyRjJ2STZRTEdMRTFBd2ZRcHZQVUUyelVXNnp6Q282ejVoV3lTNzZoUjBmOFh6S0J1QjdHWHAxQlZuZXlsaG11TllhSW5F''@;'; put 'put ''TzczbVR0T1F4akNZZXc1TC9YVHFSUXdyQjNCeWtiWjUwUk40OXpaQlpaS2FGRGJuQmVqbjBtME93Tm9VVWo3RzBjMjNRZGV1UXVPcVVGRjhpd3ZNSkI4OTN0T1kyWTFTZ3ZXRXNiUWp5THVLdnJOb0w0aVFFWmNPTlIrclhIZWRWQWdTYlMvRFB2cW9RMS80UDVSeTVTWDczTkNGZThxNVVHa1hF''@;'; put 'put ''MC82cGwvdEZubmxuV2VkVkEzanhwdll6OUsvcjJqdjZseUNMMVJhL3kvQ3ZlMWNweVlUVC9xbVgrbWM5RzY5ZjJyS1gxYnZ0WGFEbml1VmkvK3FEc3k1amJwekV0YTNiZVpkS3J6NnozRTczckpuM3lxUFhoTXNnY1dBNHRDMzk1QnUweWlIYnoxdnFyWThqVkVLa3dzQUhSd0NidXk5eGFkdXJJ''@;'; put 'put ''TEZ1ZTZzaDh1NHhWYU9kakh2Mkg5ZzY0SE5vWm1uL2xkOEh5V0V2THVCU1lQZE5UeFBHZFBFRWxxRGZvMXpESDRDY3JhOWF5enRQeW5ySU1lTVUvOXcxV3FjZUF4aEh6THZNZWFTcmZLWXZrSXZrSUovVXQ3d3JlUzRFQzM4TWtnbFJZNS93ZkxoOGU1L0pjRzN5enlQNEdqNWZ3dEFCNDJrWENY''@;'; put 'put ''VWdhY1FBQWNMdXVNNzh1TXp2UDIzbWZlcDk1bnYvejdrRWlRaUpDSXFJbmllSERpQmd4WXNTSWlJZ3h4aDVHUkVRUEVTSVJzWWM5REFtSkVTRWo5aEFqSWtSaWpKQWhFaElpTVVhSWpOakxZUHgrTnB0dDhaKzg3V09YclNzTFVkQTJWSVRLMEgzM1h2ZFpkd09HNERBOERMK0ZEK0ZhejJqUFVr''@;'; put 'put ''OEpZWkFVVXJSajlobjduSDNWbnJjWGUrSGV1c1B2V0hBVUhBMG43a3c1dDUwbFo4V0Z1SUJyeHJYbU9uRGR1Y1B1ZGZlcHgrdlJQZk9lRGMrSnA0R2lhQko5aWk2aE8rZ3hXa0ZiZmMvN0hyMFQzbXEvM3YvR1ovTmxmWG5mbjRHeGdaY0RGVC9sbi9lWEIwY0dsd2ZQTVJpYndoYXhISFllZ0FK''@;'; put 'put ''YVlDV3dIYmdKTkhFS1g4Q1A4WWRnSWpnYXpBWlhnaCtDRjRSR0pJa05JazhVaURPaVF0d1M3U2VqcEpma3lBUTVUbWJJQlhLTjNDVDN5U2I1R1BLR3VGQWlOQjdLaEpZcG1NSW9pVXBTazFTV3l0RVFqZElFTGRDQUhxSFRUSnBwTVIwV1lYMHN4U3FzeGFiWUtiYkVmbU92MlJyYllqc2N3azF6''@;'; put 'put ''MTF5TmEzRWRIdUY5L0E2L3p4L3hKZjZLdndrcjRYSzRIcjZQUUJFMHdrUkFKQmxwUkRvQ0l1QkNXSGdsZEVTM2lJdUthSWtwc1NGMkpFUWFscmFrQSttejlGVzZrbXJTYnhtUmNYbENmaWZ2eW9keVFUNlZMK1VmY2xOdUswNEZVK2FVVzZXdHdxcFhKVlZOVGFxVGFtWklqL1pHaWFnUUxXcXoy''@;'; put 'put ''Z3R0WGR2U2N0b243VVM3MEw3SHROaEJyQmo3RWl2SHFyRjdIZEpSbmRHSDlCRTlyYS9xT2Iyay80cVQ4V3g4TDE0SENBQmdERXlEWjJBUnZBWWJJQThLNEF4Y2dwK2crWitCR0l5Uk5tYU5QZVBJcUJvdG81V29KOXFtMjF3MTM1dTdadG1zbW5mbWd3VlpxRVZZODlhU3RXNXRXdm0vYW16QVRR''@;'; put 'put ''QUFBUUFBQVR3QVlnQUtBRDhBQkFBQ0FDZ0FPUUNMQUFBQWtBRkJBQU1BQVhqYWhaTE5Uc0pBRklWUEN4cUloS0F4THJwcVhMaVR2eWdZWEdyY0NHb2tscDBKU0FWaXNkQVdFMS9GTnpEeFFmeDVBamMrZzB1WG5nNjNDQVlsazJhK21YdnV1VE8zQTJBTkg0aEJpeWNCSFBJYnM0Wk5yc2FzSTQx''@;'; put 'put ''cjRSajJFQWpIVWNTVDhCS01pYzh5YzcrRUV5aHFobkFTaGxZVlhzR09Gbm1tWUdrUHdobXNhNS9DcTBqcGNlRm5iT2daNFJmazlTM2hWeVIwUy9nTmFmMXl6Tzh4R0xxREE3Z1k0QjRlZXVpZ3k1T2JlT1JYUkI0RmxFZ3RSazNxdWtyamsrdWMrOHp5bVh1TExHcXdtZWNwSnhlT3FNTGRObmxF''@;'; put 'put ''N1RtNVEzTFFwSzdBbkx3YSs3akFNUm80SWMxejJaNXhXVnpIL0ZYSjRzcWpxcWRPYWs1Vlhsek40bnhGalV0VjJJRlRPdGhUOVpya004YkRXSlZ6KzU4ZWhYME51S29neDNFMzQrd3EzLzdFTmN1WXkzV1U0MHRXaDlHQXV5UCtrVWlUNHh6VjdLdDcvdFRNemIzalgzdlJyUnZrRnQ5eTZCQk1P''@;'; put 'put ''bGFUL2gycHFNbFJVckV5ejFaZ3ZJSmR2cGpvMVpSeFE1M05DZ1BwdjAxdm45bVJheDFEN3ZRWTh4aHp2Z0hGZllWakFBQUFlTnB0azFkc0hGVVVoci9mc1hmZE5rN3Z2VmZIWHZmRUtTNXJ4N0ZqSnk1eDdNUkp4cnRqWi9GNkY4YTdjV3k2QkFJZVFQRENNK1VKRUwwS0pIaEFvbGZSZXdmUmVh''@;'; put 'put ''UUg3OXdKWGlUdXczei9HWjN6bnpQMzNpRUxkNTBiWUI3L3MxU2JmcERGRExMSndZZWZYUExJcDRCQ0FzeWtpRm5NWmc1enArcm5zNENGTEdJeFMxaktNcGF6Z3BXc1lqVnJXTXM2MXJPQmpXeGlNMXZZeWphMlU4d09TaWdsU0JubFZGQkpGZFhVc0pOZDFMS2JQZXhsSDNYVTAwQWpJWnBvWmo4''@;'; put 'put ''dEhLQ1ZOZzdTVGdlSE9Fd25YWFRUd3hGNk9Vb2YvUnpqT0FPYzRDU25zTGlkcTdpYW03bUJPM2lmNjdtV3AvbVlPN21OdTNtZVo3bUhRY0xjU0lRWHNYbU9GM2lWbDNpWlYvaVdJZDdnTlY3blhvYjVoWnQ0bXpkNWk5Tjh6NDljeHdWRUdXR1VHSEZ1SWNGRlhJakRHQ21TbkdHYzd6akxKQk5j''@;'; put 'put ''ektWY3dtUGN5dVZjeGhWY3lRLzh4T1BLMGd4bEswYysrZm1MdnprbmxLczg1VXNxVUtFQ21xa2l6ZEpzemVGWGZ0TmN6ZE44TGRCQ0xlSjMzdEZpTGRGU0xkTnlyZUJ6dnRCS3JkSnFyZEZhcmRONmJkQkdiZUkrN3RkbWJkRldiZE4yRld1SFN2aURQL21TcjFTcW9NcFVyZ3BWcWtyVnF0Rk83''@;'; put 'put ''Vkt0ZG11UDltb2ZUNmhPOVdwUUkxL3pqVUs4eTJkOHdJZDh4S2U4eHlkcVVyUDJxMFVIMUtvMkhWUzdPblJJaDlXcExuV3JSMGZVeXdNOHlDTTh5a004ekRYY3BhTTh3NU04cFQ1K1ZyK082YmdHZEVJbmRVcVdCaFZXUkxhRy9IV2pWdGhKeFAyV29hOXUwTEhQMkQ3TGhiOHVNWnlJMnlOK3k5''@;'; put 'put ''RFhHTGJTU1JHRHhxa0tLK2tQZVJhMllYNG9ra2hhNGJBZFQrYmIvMHAveUxPeVBhdVE4YkJkRkRhSEU2T2psa2t0SE00SS9DMmVlOVJqaStjVE5TeHN6YXdjeVFoOGJWWTRsYlI5TVlNMjB5OW0wRzVleGwwVXRtZDZ4RE05MmsxNjNJVy93NXNoWVJqb09KMktEMXRPYWpSbXBaS0JSR2JrNnpR''@;'; put 'put ''ZEhOT2hNN09EazltaDAzUndETHBNMVpnTGZ5b2VMU210REhvczgzV2JwS1NacHNlYkptV1kwK05FNDhNNXFmUXowUE9meVZLWmtiL0gyOEdVWVVGdk9PcUVVNk5ETWZ0c3dYaUc3c3ZRRTlQYTEyOW1uSFNSM3o5OTJwUFRwNTJlT0ZoVzViSXNXT25ySFhhc3FXczFidEJySE1aZDVQVkdvclpq''@;'; put 'put ''ajBYSDhzYlBxM1JkYWFpKzJtT054d2FQamI0K1l6VGhJdjAyV0ZJUzlGam1zZHhqaGNkS3cyQlRkaWpsSk55Z29xa2h4eXEyWXNsOHk1M0ZTUGZ1cDJXUk5mM1o2VGhnblIvUUpMcmQwN0xBKzMyTU52dWExbmxXK2pSTWNqSWFpN2pKdWRiWTFCNUZiQ2N2WW52cUg3ZGx0eUVBQUFCNDJtUHcz''@;'; put 'put ''c0Z3SWloaUl5TmpYK1FHeHAwY0RCd015UVViR2RpZE5ra3lNbWlCR0p0NU9CZzVJQ3d4TmpDTHcya1hzd01ESXdNbmtNM3B0SXNCeW1abWNObW93dGdSR0xIQm9TTmlJM09LeTBZMUVHOFhSd01ESTR0RFIzSklCRWhKSkJCczV1Tmc1Tkhhd2ZpL2RRTkw3MFltQnBmTnJDbHNEQzR1QVA0Y0pX''@;'; put 'put ''QUFBQUFBQVZpWTlHd0FBQT09KSBmb3JtYXQoIndvZmYiKTtmb250LXdlaWdodDo1MDA7Zm9udC1zdHlsZTpub3JtYWx9QGZvbnQtZmFjZXtmb250LWZhbWlseTpNZXRyb3BvbGlzO3NyYzp1cmwoZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQsZDA5R1Jn''@;'; put 'put ''QUJBQUFBQUZhRUFCTUFBQUFBb3VBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJHUmxSTkFBQUJxQUFBQUJ3QUFBQWNmTkg1NWtkRVJVWUFBQUhFQUFBQVRRQUFBR0lIMVFmOFIxQlBVd0FBQWhRQUFBY1lBQUFPZGtEQ2ZwWkhVMVZDQUFBSkxBQUFBQ0FBQUFBZ1JIWk1kVTlUTHpJ''@;'; put 'put ''QUFBbE1BQUFBVFFBQUFHQnBFcThKWTIxaGNBQUFDWndBQUFKc0FBQURubmRERDdGamRuUWdBQUFNQ0FBQUFEQUFBQUE4RWhFQjhXWndaMjBBQUF3NEFBQUdPZ0FBRFJaMlpIMTJaMkZ6Y0FBQUVuUUFBQUFJQUFBQUNBQUFBQkJuYkhsbUFBQVNmQUFBT013QUFHOGtIZDdZbDJobFlXUUFBRXRJ''@;'; put 'put ''QUFBQU5nQUFBRFlMYzRnUmFHaGxZUUFBUzRBQUFBQWhBQUFBSkFlUkJDQm9iWFI0QUFCTHBBQUFBb3dBQUFUYXVZNDBKMnh2WTJFQUFFNHdBQUFDZEFBQUFuclUrN24yYldGNGNBQUFVS1FBQUFBZ0FBQUFJQUtVQTFCdVlXMWxBQUJReEFBQUFZNEFBQU42TWdpSVduQnZjM1FBQUZKVUFBQURv''@;'; put 'put ''UUFBQmlHWEZqMktjSEpsY0FBQVZmZ0FBQUNCQUFBQWpSbFFBaEIzWldKbUFBQldmQUFBQUFZQUFBQUc5bmhZbUFBQUFBRUFBQUFBMUZHMWFnQUFBQURUd1oyR0FBQUFBTlMrcHZWNDJnMk1RUXFFUUJERUVrZjBNTFBvZjd5cEwvRG9mWGZWL3ovQUlnUkMwVFFDTFI2Y2RGUmtqVnNvN0h6VHYx''@;'; put 'put ''RDRCN200MDQ4RE9sb3BObHY2NDVTZVhYTFQ1MXNYelNhK1czQUYzQUFBQUhqYWpWY05iSmJWRlg3T3VmZStYL3NWYWlubFIrZ1lJWVFoYVRvZ1RKUWdHa1k2MHhSVXhsdzFhTGJwbklNaGpESENOdWNLYzJBV0Fwcy9YU1VMUSsxMGtncXNDbmJXa1lZd1J0eENaQkxEb0RBR0ZhcHhNb1F0QnBW''@;'; put 'put ''M3ozdmVEL3ZXdHRNKzZkUFRjKzk3MzN2T2VlNTM3Z2NCa01jNDFFTG0xTlF0UUJFOFBZaGpPUDRSS056aWJ5Ni9EeFZMdnI1OE1TcVhMRjZ5bUxOQmZ6S2F6a2pZOGJrOGhtTU1KcGpIWVR6cVhFczZHaTJ6VlNYYWdJZ1B5ZUFWZkdLVStRSXFQb0tnSnQ1QURwaUo5ZmdRc1l5Q2NodWNKeU9s''@;'; put 'put ''RXlVWXhKMmRqVHZpWitQRDhURU04Qk9mRzNEa1VML2VMbFQyK3YrdCtKRUJWM2h6d0pHakE0L0Urd1lZZVRZK0hyY24rSmovTUgvL2txRHYyK1BYNG8zeFJ1WjFMRE05Z2RuNkhLR29KaHcrVDNoTUpRSytRRVNZVHVSd0xWR0VHVVF4Y3p1VGxWcEpDRmJqWjV5NWpnak0rSHI2ZHhLQ0Z3bkJI''@;'; put 'put ''d2pGUWNMak5jTGpHQkZ3aW9qd0JoSGhEQkhoTEpIRE9TS0g5NGxpVnU5RHJoWVRlU21UTWhSTHVaU1RLNlNDUElxVnpYUHR5VlRKZUQ0emlSRGJkN3BqdFIwNzI3RzNIUWZNSVlwUVF4VGpSaUtQK1VRSmx1TDdYQ0dKSkxKSUlvc2tZQ01lNC94R29oaS93aWJPZndLLzVmeG5pQkpzSjNMWVFS''@;'; put 'put ''VGg5MFFPclVRUm5pZHllSUVvd2k2aUdHMUVNWFlUZVhRUWVld2g4dGhMNVBFblF2Qm5RaXc3RVk0VEpmZ25rZVpGTFM5cWVmR1dsMkI1Q1pZWGIzbnhsaGN2STJRRTgzV2xYRWxPY2hTNGFqVXpOSUUxcm1adHA3S20wNW1aR2N6SVVpekRkN0VjMzhNSzFuSTExdUNuZUpCWldNZm90ek9pNTFu''@;'; put 'put ''SkYxbkJnNnpjTVZic0RWYnFMSGZ5dnAyc01yNjNJamxmK29DZHczMnluSEVQcHI3YXFidU44WC82VWF1TjhPK1pBVWZlSkM3MDgrVDVUenBQY1dmOHIvZ2Y4U005Snk5NzB1SXo4ZFo0NjBmL2RXZWZ0MmVVSnpqUmhKZ21GRjhoSEc0alBHNG5BaFlTRVJYeEdPY2thaEJUZzVvYUZDMUVoRzFF''@;'; put 'put ''WkpVV3E3UllwY1VxTFZaWFJSZmhjSnB3NkNZY1BpQUNMaEdSREpFaHJPdFFHVW9lSnNQSVNVWEZLaW95V2taemZVVVZyaUJLTUlRWVpFb1hVN3FhMGwxQjZWOGlza3IzRmsrVWlTZG5TbmNGcGZkbzNGdFUzcUxLV1ZTWGxaNXFQRlgzUzhUQXVrNmk5YVpaTFVTWUtOZFpuRG5UcnpQOWFpSG1S''@;'; put 'put ''TVZhaUR6UnNtYml6eXJhV1JaeU1sbXU1ZHVUVDY4YVJqaWY5YnFOY1Mxa0pJMk1wQW1QTTVvbjhDU2VRak1qZW9hUmJPTnBiT051TzdqTHZkeGRGMnZReloxZDRnNkc4bTBqK0piUlhIR002VmxSYWgybFBQNEo3WExNdy9XMHhPenIyWWs2b3pIa2s4ei9IbGtyNitWaGFaTE4waXhiWllmc2tw''@;'; put 'put ''ZGxqK3lYQTNKSWpzZ0pPUzF2eTd2eW5seFNyM2t0MCtGYXFlTjBvbGJyTkoyaE4yaU4xdWw4cmRjNzlXNWRwTXQwcGQ2dmEvUWgzYUNQNmliZG9rOXJpN1pxbSs3V3ZmcUt2cXF2YTZlZTFHNTlSeS9vUlFjWHVVR3UzSTEwWTl4NE44bE5kbGU3bVc2MnU5SE5jd3ZjN2U1cjdoNzNIYmZjclhJ''@;'; put 'put ''UHVBZmR6OTB2WEtQN3RYdlMvYzV0Y3krNGwxeUgyK2YrNnY3bURydmpyc3U5NWY3dC91cys4T3FMZkttdjhLUDhXRC9CVi9tcC9oby95OC94dGY1bWY2dGY2TC9oNy9YMytSWCtoNzdCci9Yci9jTyt5Vy8yelg2cjMrRjMrWmY5SHIvZkgvQ0gvQkYvd3AvMmIvdDMvWHYrVXZBaEg4ckM4RkFa''@;'; put 'put ''eG9XSm9UcE1DelBDRGFFbTFJWDVvVDdjR2U0T2k4S3lzRExjSDlhRWg4S0c4R2pZRkxhRXAwTkxhQTF0WVhmWUcxNEpyNGJYUTJjNEdickRPK0ZDdUJnaGlxSkJQQjJyZER1NXdYaTJjYTF4VThKWVo5eHFualhHalJtK3hYaUs4U3hqVzQxMVN1ejZ6R3FUbEorcGNwVnh0ZkhjaExIYWVLZTJr''@;'; put 'put ''eHZNZjEwUDQ1VHh4Y3hUemNaVnhxWEd0N2hGNUJialZmMnpuc3ZFV0d2K1BvdzdqTnVOMS9XdzNKWEdidllTNC8zR2pYMDV6Y0FBTzZrM25xUWRuOFQ2eTE2NTZ1aVA4VlhqbmNhcmU1aDUrelQ4ZjFabWJudDRWV2JQdmV4TVRSdk1mNVg1cy9ac3krRnZ6TDRyay9uMExiMXNHMDNybS9VM21U''@;'; put 'put ''MDN0VzFPcXBtME9tblVxVDRMZHNHZnpHazFlNmRiZVZtOUJZMTFtbjAwc1FzMVRYT1NhanZOVE5iZm1MRVBtZDFnTlRwcU9qL1ZvMEJxdGVQeWlVQmYveFN6TDZhMnpVbFZuZlduSjJoV1JqUFZtY3luOWc2ekYyV3FZSG5UU3ZNM216OVZXbFhHVHJOYW1zbDhYL3U4MlQreTZHNHkrKzltWjFl''@;'; put 'put ''dWpiY2xLOGZQZmF4UzJUZk9MWnp1amsvQnZXY3FQbXYzVXZEZU5aRlpTVzZubmwyN2lsMHd1V0ZIbU1LYldBN1RjQTE3V05LNVM5bTNyMk5QVHpyM0VMdWpsbHZuSHNydlZiWHNRM1hFTU56RVBqZWNuZTVXZnZlcEp5cXRsMytHWGU4T2RxMmx2THVOdGR2YmRIYjB6Vnh2Q3p2ZlhPdDlYMmIz''@;'; put 'put ''YTJlSC9DTU80RnU4MFozRkQreFcyWVR6RXZBNE8vRm90RmhQYmVOK1JhNnc3MllSSkY1aEttekFQZVMxN0hZbEdNbDNqV2RFazNFMWR6MmJ1NXlIQlJ3OWFOcnRNajV0YkdjR1J6SjgxUGpIeHM4Wm43Q3NqVE83QkYva2UrN0Z0eVVuUlZJc2VTbVJ3VkxhZDBmL0EzSUZvYmNBQVFBQUFBb0FI''@;'; put 'put ''QUFlQUFGRVJreFVBQWdBQkFBQUFBRC8vd0FBQUFBQUFIamFZMkJtOG1XS1lHQmxZR0hxQXRJTURONFFtakdPUVlUUkRNaG5ZR2VBQXlRbUEwT29kN2dmZ3dPRGd1b2ZadW4veGd3TXpPY1lEUlVZR0NhRDVKaFltZFlES1FVR0pnQzhpUW9yQUFBQWVOcTFrMWxRamxFY3huLy90MzBSS2hUMTl2''@;'; put 'put ''WnAwMGFpRkVYMnBjaStsS3pac3EvWkd1c1FRMFZTeUo0a294a1RVMU8yRys2NE5XT012cytWVys0TUhjZFhURFBNdUhKbTNuUGVjODZjNTV4NW50OGZjS0hyQzBGMGoxVHFtVGpucmxLc3h5V013NDJCbEhDTE91N1NTQlBOdE5BbUhoSWdneVJNQmt1Y0pFbXFwRXVtVEpVY3laTkNLWklTSTlW''@;'; put 'put ''NFpieDNpVEtQbTYzbUUvT0w1VzRGV3NGV3FHV3pvcXhoVnJwMTMrWWYrVTBwZllmRmpSN2FqMm5qbWZoS2Z6SEZKckdTS0NtU0pobVNKZG1TS3dXeVFUWnI3WmZHVzYxOXlHd3gyODNQbG1FRldFRldpRk43cUpYMlMxdDlWQy9VYy9WVXRhdFc5VWcxcTRlcVNUV3FCbFd2NnRRMVZhdHFWTFdx''@;'; put 'put ''VXBXcVFwV3BNNnBVbmVoODA1blZtZlQ5azZQY1VlRElkOFRZQjlyOTdENTJMN3ViM2VqNDJ2RzU0L0NIa0hmSlhWNzlwK1p1ZUR1VDRJOWJCS1A3ei9pSFJ0ZEpGMXgxZHU1NDRJa1gzdmpnU3kvODZFMGYrdUpQQUlIMG96OERDQ0pZWnp4SXB4NktTWmhPSkJ3Ymc0a2draWlpaVdFSXNjUVJU''@;'; put 'put ''d0tKREdVWVNRd25tUkdNSklWVVJwRkdPcU1aUXdhWmpOWE1aREdlQ1V4a0VwT1p3bFNtTVowWlpKUERUR2FSeTJ6bU1KZDV6R2NCQzFuRVlrMWFIdmtzcFlCbExHZUZmdjhPZHJLYllnNXhuTk9VVTBZRjV6bEhKVlZVYzVFYUxuR0Z5OVJ5bGV2YzFCVDlaUFEyRFpxbGU1cW1uMjBWcTdVZDBX''@;'; put 'put ''emdiTGMzNjFtaisxMmMrTzFXNFY4Y3ZFQTltMW5aWTJVdG15UkdqMXZZempIc09DUmM4eGtwVWJvQ0lyaWpkeDZnYVpZRVhRL3gzV2VLbkdIRXNvMjliR1VmZXpqQVFWMUwrem5DVWIxMW1GSk9jWkxYdXBwNnNVNjh4RnQ4MkNoK21uL1BINUROcXVoNDJtTmd3QUxLZ1RDRElZTnBQUU1EMDI0''@;'; put 'put ''bVZnYUcveUhNMHYrTm1YYi8vOEowajBudy81Zi9maUErQU9ZTERncDQycTFXYVhmVFJoU1Z2R1VqRzFsb1VVdkhUSnltMGNpa0ZJSUJBMEdLN1VLNk9Gc3JRV21sT0VuM0JiclJmVi93cjNseTJuUG9OMzVhN3h2WkpvR0VudmJVSC9UdXpMc3piNXQ1WXpLVUlHUGRyd1JDTE4wMWhwYVhLTGQ2''@;'; put 'put ''emFkVEZzMEU0YlpvcnZ1VUtrUi85UnE5UnFNaE42eDhub3lBREU4dXRnelQ4RUxYSVZPUkNMY2RTaW14S2VoZW5UTFQxMW96WnI5WGFWUW9WL0h6bEM0RUs5Zjl2TXhiVFY5UXZZNnBoY0FTVkdKVUNnSVJKK3hvazJZdzFSNEptbVA5SERQdjFYMEJiNXFSb1A2NkgySkdzSzZmMFR5aitkQUtn''@;'; put 'put ''eUN3eUxTRFFKSlI5N2VDd0tHMEV0Z25VNGpnV2Rhcis1U1ZMdVdraXpnQ01rT0hNa3JDTDdFWlp6ZGN3UnIyMkVvODRDOUlsUWFsWi9OUWVxSXBtakFRejJVTENITFpEK3RXdEJMNE1zZ0hnaFpXZmVnc0RxMXQzNkdzb2g3UGJobXBKRk01REtVcmtYSHBScFRhMkNhekFRT1VuWFdvUndsMmRj''@;'; put 'put ''QnIzTTBZRzRKM29JVXdZRXE0cUYzdFZhMmVBY09ydUxQNWJ1NzcxTjVhOUNlN21EWmM4QkIzS0NwTkdYRmRkTDRNaTNOS3dvS1RIUzlSSFJrdEppWUdEbGhPVTFobFdQZEQyNzNva05JQnRRYjYweWkySmZQQmJONmhRUlduVWhYYWpCWWRHbElnQ2tHSHZLdThIRUM2QVEzeWFBV2pRWXdjR3NZ''@;'; put 'put ''Mkl6b2xBaGxvd0M0TmVhRm9ob0tHa0RTSFJ0VFNtaDluTmhlREtScmNrcmNkR2xWTHkvN1NhakpwNVRFL3B1Y1BxOWdZOXRiOWVIZ1lCWXhjR3JiNXpPSWt1L0VoL2d6aVErWWtLcEV1MVAyWWs0ZG8zU2JxeTJabjh4TExPdGhLOUx3RVY0Rm5Ba1JTZy84MXpPNHQxUUVGakExalRDSmJIaGtY''@;'; put 'put ''VzZacDZscU5LU00yVXBVMW40YWxLeW8wZ01QWEQ4T2hLMEtZLzNOMDFEU0dETmR0aHZIaG5FMTNiT3M0MGpTTzJNWnNoeVpVYkxLY1JKNVpIbEZ4bXVWaktzNndmRnpGV1paSFZaeGphYW00aCtVVEt1NWwrYVNLKzFnK28yUW43NVFMa1dFcGltVGU0QXZpME93dTVXUlhlVE5SMnJ1VTAxM2xy''@;'; put 'put ''VVI1VEJrMGFQK0grSjVDZk1mZ2wwQjhMUE9JaitWeHhNZFNJajZXVTRpUFpRSHhzWnhHZkN5ZlJud3NaeEFmUzZWRVdSOVRSOEhzYUNnOGRzSFRwY1RWVTN4V2k0b2NteHpjd2hPNEFEVnhRQlZsVkpMY0VSL0pzRGo2dVc1cHpVazZNUnRuelltS2owYkdBVDY3T3pNUHEwOHFjVnI3K3h4NFp1''@;'; put 'put ''VmhJN2lkK3hybmVXUHlENE4vaXhkbEtUNXBUbkJ3cDVBQWVMeS93N2dWVWNtaDA2cDRwT3pRL0Q5UmNZSWJvSjlCVFl6SmdpaUtHdDk4NVBKS3MxbVROYlFLSDA4RU9pdmF3YnhwVG93anBTVzBxRWthQVMyRHJsblFOT3J6N0sxbVVRcFJibUsvczNzcG9wanNSUm5NZ0NrbzVLYXhzT3p2cEVS''@;'; put 'put ''YVdEdXA2ZlRSd09WRzJvdWVMRFZiVm5HRnZRZnZZOGpOTEhrM1VsNjRLU250Ulp0UXA3eklBZzY1a1QyNEpvSmJhTyt5aW1KS1dLZ2lQZ2h0QmZ2dFkwUW1MVE9ETG9FaVpIR3lzZy90aWgwNW9vSjJBdDk2MGlydjIwTHR6M1h5SURDYm5XN25RWmFSb3ZOZEZmVnFmVlhXMkNoWHI5eE5Id2ZU''@;'; put 'put ''enJDeDVoZEZHVTh1ZTkrZUZPeFhwd1M1QWtaWGRyL3VTZkgyTzlidFNraysyeGQyZWVKMVNoWHlYNEFIUSs2VTl5SWFSWkd6V0tVUno2OWJlREpGT1NqR1JYTWNGL1RTSHUyS1ZkK2pYZGgzN2FOV1hGWlVzaDlsMEZWMDFtN0NOejVmQ09wQUtncGFwQ0pXZURwa1BwdWRtdkN4bExnc1JkeXpa''@;'; put 'put ''TmRGOUIwOElSM2l2empFdGYvcjNISVUzS0xLRWwxbzF3bkpCMjBmSytpdEpidVRoeXBHWisyOGJHZWlIVWszNkJxQ25rZ3VPUDVlNEM2UEZla1U3dlB6Qjh4ZndYYm0rQmlkQnI2cTZBekVFdWV0Z2dTTEt0N1NUcVplVUh5RWFRbndSZFZDc3dKNENjQms4TEpxbVhxbURxQm5scGxUQVZoaERv''@;'; put 'put ''TlY1akJZWXc2RGRiV0RybmNaNkJVZ1U2TlgxWTZaelBsQXlWekFQSlBSTmVacGRKMTVHcjNHUEkxdXNFMFA0SFcyeWVBTnRza2daSnNNSXVaVUFUYVl3NkRCSEFhYnpHR3dwZjF5Z2JhMVg0emUxSDR4ZWt2N3hlaHQ3UmVqZDdSZmpON1ZmakY2VC92RjZIM2srRnkzZ0Ivb0VWMEUvRENCbHdB''@;'; put 'put ''LzRxVHIwUUpHTi9HTXRqbTNFc2ljanpYSGJITSt3ZUx6M1YwLzFTTzk0ck1FOG9yUEU4ajAyOWluVGZnaWdVejRNb0ZNK0FyY2NuZS9yL1ZJMDc5SklOTy9UU0RUdjhQS051SDdCRExoaHdReTRVZHdMM1QzKzBtUE5QM25CREw5bHdReS9WZXNiQk4rU3lBVGZrOGdFKzZvbmI1TXF2Tm4xYldw''@;'; put 'put ''ZDR2U1UvWGJuWGZZK1J0bE03b3NBQUFBQVFBQi8vOEFEM2phdFgwSmRGekZsV2hWdmU3M2VsT3I5NWJVMmxxOVNkMnQxdEpxdGZaK1dtenRxMjFrMlJheXNDM0oyR0JiWnJPeE1lQ1FCUUloSk01a2c0U1FZekloWUpaQUlDUXpXU1loem9KL2Z1WVBKd21UU2VDZkpIK3lURDRoazhtQW52NnRx''@;'; put 'put ''dmRhcmMwNDg4L1lVcXY3dlZ2MXF1NStiOTJxUmlZMHZaekVIeGQ4U0VENXlJMEtVUUJWb1JScVJ1Mm9EeFhLbnE2T3RwWjBZeklhQ1pZVkZYanNOcU9PSUZOdFRPKzMreVYzMGgxd0oxT0JWRElsc2I4U3ZOV3UwbXYwTDcwRFYxTGFleFdHTlVnblUvamp5amR4K3h1ZFhlZTd1czZmNzZydys3''@;'; put 'put ''dTZ1dlozK2U4NnY3L0N2OTkvL3Z4NS8vNzlkMjNkZW41dWEva1BoRjkzKzBOKytMbGpvV0xyMXVBc3ZOdnFiK3VxMkgreXlWc3pkdXpZNDhlT2pkWE0rMnY4OElNUVFWdVgzMFN2a3d0c2JpRzVBbUdNcGhGQzFrRkVpRENqdzRMZ0ZZWjBPbDIremhxeTIvU1NOK1pNQ2dGUE9OWFFtS3ozdUYx''@;'; put 'put ''aVlQUytrdTJHUktLaUxGRmRUaTRvOWIrcjhaY2xFbVgrR29TV2wxRW5Qb2NmSmhkc0ZjaUVrRTJBMTFjUmZXNEZ2TndPei9XaE10UXZiODBYQ2RJTEJCT0VENWl4MFdnZHROcnlCRWt5VEZ0TXhHQ3dEK293SWZsa0NLR3kwcEppYU9Vcktpend3dk9kOXV3L3FTU0dwYVFVa0FKcDlwdE9zdCtr''@;'; put 'put ''eEg0bGVwT1ErRUh2UW5RNmVpWjZkWFMvWjM5OHpqTVA3ODdBbFhuUHQ4N0V6K0RISDk4RkNEMi82L0ZkbjROL3V4NUhnSm15NWVkSUwva3pLa0ZCRkVNSk9SYUwrc3VMQ3IwZWw5MXNNa2hXUlBDQUhpUGNEL1BDQk0vQ0JMMW9xTlJ1RndCZFFSR0luQXBIMGg1dktvRUJiV21ndGNjcmhTUHVV''@;'; put 'put ''dXhHY05XSzNZN0dWQU5jSUwwbkR1MSs5NzYrZ2NuNStjVTl1Mis0dXFkbjROaHg1Vmc0R295LzJsalRkR1JSa3J0dHU2ZTZuZC8wN1pnWVh6UzNkMWpHOTdUYXZsSzA4eXJzRE9hZk45YVVLa2ZySy93UjI5TklqNnFXLzEyd2ttZUJzazdBY2cxcVJkOGRmTEpnYktjY00yTzlDV05SaitlUmlB''@;'; put 'put ''eEcwYkNBZERvMFF6Q2xmQjdnWDVpeFNFUVE4b1VoMytDVEVXaFNjOWttQ0VCWk8ybkdnaVhKS3czNTVPUUdMUWdCV05vTWJkeHFha29PMTlhV2w3dGNDTlcyMXJZME5wVFhsQ2NxdzY0eVYybFJnZE5odDhGa3JHR3I1STQ1S0RJN2NMSWVzT2l5NGdCTzRnQkRZNkJDZExzOFNiVG1mZ2RldWZl''@;'; put 'put ''cG9XaDB1TFp1T0JvYnFzUHYzNk9FOWl3bUVvRmdkU0tBNTRaaWNMRnVpTjRLSm1vQ0FYcHhLakZhV3plV1NJekJhelcrYW1rY2Z6WWRpemVscTJOcFpTSXhXbGM3VmxQRElBYlQ4VmdUdllVbzMvaVgvMGplUmI2RXlsRWNOYUlPdWJVMkVTNHJLUzRxTUJrRlVnNjhMcEFCeXRkNEJzVE9NNmdI''@;'; put 'put ''WVdPWUFlYXBydmI3cXh1clUvNjRQeGF2RUNWUFRCOFJBeFdjZ1hKbkJyZThqV212S0hrUm5acVhUOU9SRGtlQXJXQ3FwSGhrYXJGenZxVnZ0TGlnYnJLaFlYdk4wTGI2dnFxUzZickU5Y29uRXA3Q3RwcG9tU2t6MlJPTDlkVGxqWS9WVHJWM1R3Y3JPOE9Ka1VUMWNFM3pZTGgxcUgwZ3ZrOCtU''@;'; put 'put ''bHJpZ2NMYTBvSjRvS0o2NlMrcDNXTUZ6Y0c2Rm9Rd2xYSDBMWkJsQzNMS05xcEJHSG54a0R0SVlPQ09GVjBoQmE1eVIzeStDUEE3ZnZWdzBGZFo2UXNlN2tXMGo4YmxxL0FZK1FyS1ErSXplWHBjRzJNcUp1MWxzL0JLbjF0Y1BKZ1pIeDRleit6NitkbXovekxldGUzQ2tTTlBiT3RtYmNQUVZ0''@;'; put 'put ''YmFTdENXWXlHUzVnZ0tUd3dQVDJRT1FnL3oyNTQ0Y3VUQ3RxNHg2T1BuWTZ4dEF1L0grOGpmb1htVWxodG1obnFhcWdDWE1JY0JBV01kUmlEVzh5TFc2OGtNOEs1SEQvb0hJT2VtSnVXT3VwcUFQeVpSUm9TQnBodlRvZ1QvQXhYaENQL1lDQlRnN3ltbHZCNXZLZmF5enhvcVJLa1JicVhwUnkr''@;'; put 'put ''N1lNVVNKU2FGZEx2Z1U2QUNPa2pnQ0w4Z0JsNTBtVVdTVnhCdzZZMUdtMDV2TFlpV1c2MmwxVjZyWG1jM2lBWnZoV1EzRTlIc3lyTzZURmdVN0M0aDRPQ2dCc2xlclM5d3V3cHFYWkloQjFvUXNRbEVZNy9ENGt1VTVoczlmclBPYURTWUhJYThQSk1vbXZLc0JvZFpNcGgwMW5MUlpzZ3ZUZmdz''@;'; put 'put ''RG9mRlZhc3JkT2M1aERJVEJUWWE4bldtZkNJYWphTE5vck1hRENZTjNsMm9xM1ZaSEJUSEhXaVdGSkkyWkVaaE9ZQjBBdGJ0QUY0SHpZRUZkQURVQVo1R2dPdGhwc1J0b2xRVXd3RnFEVlBVS2laSjRaZXUreEw4NEtJWFhsajQ4cGRwZjVubFJmUUw5RUZrUlY0WnhvOTZOWjREd1FrNktNK0JT''@;'; put 'put ''RlRrNEhvOFlTbXJUcFNIRTlYSmF4TzFOZVhsaWZiYXl1Mk50Szg2OU0rNEEvZUJ0QmJJYmtRNzJrSDVBa2FFWUVRMjJwblQ3L2JYNFR6bGo3anZFT09aZHJDWlA0SG5tNm4xcDFkQUMyTHN4WlE3ek1nVUZJQXJjaTNrSWRVNldyS1dFUy8vWnZrNS9CM3lLM2l1WGJiU1RzL0NzMi9nRDZTcURH''@;'; put 'put ''ODVxNXcvUzM3MTlpWEU3R1hkOHB2a0h2SWlxTDh5RkplcmdCdlpqTG5Xd0dDbzJRQnNOakN5WmJiU0FnL1RrMkI2WXJxMWVwQ2tHaExBWEZTd1N1RkpocnVIaCsrZW5IemYwTkQ3SnV0SDQvSFIrdnF4ZUh5czNyTDdNL1B6RCsvZS9mRDgvR2QyTDNaY3YzWHI5ZTN0OUxXRDRZQVNOZzB5THlL''@;'; put 'put ''ZlhBQ2tGQUJmQTF5clk1eVBoK3hPaGpvcGtrN2FBeS9lbFB6Ni9sT2tiSERuMmFWeHhOckhZVkpobUU4Qmlzb1Jzd21tQTl4QXlBQkRKMU9IMUFHWlJzd0cyYjNCc0U0cWlHV3dwc1dsU0tPcS8vSXhrS2Q2U1c3Y1VwdmNWamsrOTJEUGRabit5ZnR4V3BIbXZwdmNIcXRwcWFzZGZIZmpOUjFi''@;'; put 'put ''YnU2K1laRTl1eFJ3R1lWblY2R00zRlpZQU0rcHdKakEwMkVJQTlTR2cwRS9BRS9XelFCendrQVEwczlRSmVCbDhsK0ZLb05CZnpBa1NZVkFaYXBra3ZYTTdraXBwS2R4N2ZBa0ZlMy9lSGQ4S0xRMzNkNDMyRDg4M05IWDExUTNIaHJZKzhtKzY5djdXdHEzeXpjTVdUS3BpYXBFVTNXaUJoL0dk''@;'; put 'put ''ZkZvS2w0MWRLSjJSMlBiaE4yNnZiTjFkd1BuZzFKNDJRbDRONEcycTVhakZ2QTM4SUNvaHpsZ0JIN25IS0NPbWRoODNaRFpiTTR6NTRGTU9XeDByQ0YvQkNmdDFQTU1GR0lCbjFZZXQrQ3Q1MlptVHYzazNDeCtRUmsvZEE1SUdGRit6T2tUQXh3MXdIT0tLWTRjb0F2ekxFU0F6ckVlQVk1MEFL''@;'; put 'put ''RUR1eTRJWkpvYjlkVTRBZyt0d3U0TUJoaU93UFZSTVZRaFJhZ3dTWTFaYnJ6L3dNRFUzbzdCb2ZhUmpoMG0vTHp5VlJIZUxiUjMzVEppdVhacWNrdERTcTRONHVzV240b21yK25lZW0wTHgwRXRqRzBBNk9kREVkUW5iN0VCRHV6QVBBVllKNFN3WHFjYkVFR3g2UFNDYmg1bGphc0VZOU4wUkhF''@;'; put 'put ''eGpEQlNIQTc0b1l1aVlDaHNBRDhOcVNPaWVvT3BiSWxMaVFRZkhGbTI4eVR4SXdjN3VtN3N2L2ZlNFh0Mkh0L1ZIdWlPMVE0bGRPVlhOeGc3L0tNdGRZUDVCVGZpTHpYczYrbysxUGFWVHg1OGRHWjRwcXlzZWFFN1ZLVThXdEZjbnU1TXhqOU04WnVFaVFTWS9KVEp4V0JvTUpNZXFuY3c4NzNC''@;'; put 'put ''MXdWdmh6cVEySi95dTBFaFBLQThqUCtnL085N1NmdmkxVXNYcUg4UkJUeDBxbmhJb1I2NTB5VVMwSzREVXM3MFZTMWhnT2xqSUJEVEVwV1ZGQU9WcWNxR21tcUtoNHB5aW9lNGthcXRqVHdNRlRNNTNwV1h2Z2ZiWkNYVXgvalhrMXVITTgyZFd4YTd1by8zZERYSlE3MG5CK3RHK2hzYiswWnEy''@;'; put 'put ''OGRqWFJDd3hNYmJMVFZUclcxVDNvTFJwdWJ0OGVydFRjMmozZ0s0c3JNR1A5UVlyVXczVnNVYUJPVlNVN3kwcG9pUW9wcFM2a1FSVkE5ekhGcWhkU25RRitpdE40TEFHZ0JyT3Bpc0hzUlZUK2FCNlFXWW9TQjRCblBzZ1VacmZ4bWRZeWdZWXJUMmNGSno0UVVyVEQrb2MzYUE1ZWJhRVdqOTkr''@;'; put 'put ''dW9MRFBxTjFNeVYxS0NreGRYVTVsVFhua0V5TXpJVGVmQTdBV3hnRzN3VXQxTmRUVWJYaUVQc3ZROHlMSllFTEo0TFI2SGpSa1JVWFV0TkNOQ05qQW9GZXBmZkVTekxNcGQyanVJdlppZEpCYUl2ZklSc2t2SURvaTZGUm1md3ZoNWZPdVR5Umpsd3pUYVRrU3lHL2hRZkVZazREczVVeUYzSG5h''@;'; put 'put ''bjhTWGxiL0JCSEpuOTBkeUREODR6dWV0QWo1RkMvQ2ZnUEFsMURENVpCbUdCQTFFdlZwalY0a1k3QnMrL2dISXlqZVFRaEJCa2g2cklpVEE4OVJ5MThGU1RVelZBLzNmZ255b2g5dnVuaFpNTE1KNCtHSTlYRzQ4QTQwbFg0NVRlcmUvREIyRThsNVM2Rng5OGNPNUhzeitpNDNFdXY0bGZBZDV3''@;'; put 'put ''SXo5cWwxczBubkFDK3d0VW1nUWRFZzdBeUxqelJyVmlWa2Q1UEI2L3B6emtEUWFaYm5TcUFpNUZWcmpldlNyS2ZXSm9iMGY5Y0dkLzlRMjluZnZUOCtQSHZCcnU3OVkxVjRZYit3YVNyZlU3Rzd1dmMrejVQeXNCTUVIeDVmY0xXOGdqU0VZajZKTHM5cGVYQ1FhaEd4c05EcXd6dHJjUkVWaVlS''@;'; put 'put ''MWpWRVBmcXNIRVMxRGhFVFZTN2lpYnFFdTVEcXVZQ3ZXQXdDRE9nZE8wR0dwWlYwVWdPaUdFd0NvYjVkMnlzQjhMVVVUVXRJUDM4NXEwa1NaeEVvaWpOc09hakVKQVZkQUlUZDQ1MER2ZHRoVmxrd3VGWUtCZ09XeVRmT3RlaWdnWWRXUVhxOGRLd2hBdFNQY1Z2anRkUnp6eDcwQ2daM0xBaWJa''@;'; put 'put ''MFg1aGEvZG5UK0MvdWJkOVhWdGx1S1J4S0QwNTBIVzJxNm5aWjVhNTdaV3U0cmJxaVkrc1QwM0JmbTlqdzQwM1lnNVdvKzF1M3ZGM0VpRnBIRERkRWJEbnhoN3NqWGp1MTllSHI4V0ZNc0VvN3RHK3MrM2wzbGJ6UDBkVFNPMm9yTEtyZTM3L2pBOXJrbkR1ejV4SjZTOHBLZ0gzc25NclpZZmF5''@;'; put 'put ''M3FycVIyeFludkx3S2Vsa0NDeHVUSzQxWXg0SjdIWEMwRHF3cnRYVVFHVkFQeDhDY1hlNnlGb0IxbFZnSUdqRmpVcXA4c2VFZVhBWS9kOCtlT0hIcUZMbXdOUDVyN0ZmK0JkQU9VUWQ1SC9TZkQ1NFA0MXJRWC9BRUVlUkZyeU42Nm5hb0NSZ0pjOCtZUHF1bzBHNHJMeTMwRi9tOWJsdUJ2U0JX''@;'; put 'put ''Ym1DT0tjTzhwcC85bUZuWkdIWTd0VGRqZUx4MVQ4TnNXMWZUL296eUdaeE10TFltdm5ReDJkbVp2RWd1eEVmcjlqZVU3RzVxM0ZHTFAxSVhDdGM5cnZ4VE9oWkwvd1BWQzlXZ2R6OEdzbFdDR3VRNkNPTlJvUmxzYVJHWVdSQXRWWDk1VmlXSjRFSUpLZzZId2pSSmxHVU5qMlpIYyttT0c4L3Yy''@;'; put 'put ''M2QrNzhDN2sxUGxVM1VkaDJYNWNFZmRsSDluL1hzR0xMT2ZuWmw1WkxhMVlWc28xblZFN2p6U0ZRMVBwRm9aYlNqdXZzVjhIemVMSkxLb1lrRzBpaXFMMmVVd3V5M3VjTG1lb2toanpoZ09xVXdZdy9heE40NCt1Vy9mazBmZlFNdDlSek9abzMxM2tnczdQN2x2MzRNN2o3VWU3TzVlYUZXU0ZB''@;'; put 'put ''Y1FtWUx0dVFEcXVFYU9henFOS2hEZE5PZ1NhNjZIeWp4L00wOURVWDNpVnZXYjNlLytCN3hQZVJDL2Qra3RvaWZ0NXhlZldTUVhGcm1QcGZWdlJGVnlXT3NmZUUzSGV0WGNBTGhoUkViYU0rVXoxck05b1BWN21uYjZ4S0x5T3UrVTArMXZnVzUrMUNvMzJZQmNkdkROeTdBT21BdzZwbHBScjBP''@;'; put 'put ''TXpWYTBJbk9Sd0M5d0F2RUNQQUR6MjNOTTRub2lwZ0w0WFRoVWQyNXc5dEY5K3g2ZEhmcHczVlQ1Z1dUbU9sbStMaE1aSzM4TW4xVCtOZG5PU2RtV3pKS3l5SHRhbS9kSEdWNGpjbEQxSlErQUQwdm5UUE5KK1dndFBqR2RNZndtNFpWODlMVHl0NmRQNDBrcVZqaWsvSlJjVUg2TkM2Q1hmbWox''@;'; put 'put ''TFpiTHBIbUluRmlFaDNFUWlQUnpZUVJZTzlpT2Z3SllHK1VrNXZyakFlNTd3ZUJtQkdBb0wwTzlEZVU3UXpwb3Z1THF3eWlvdUQxNXVtSzdveStTN0R6VnV0QmxrZXNuZ2pYOUxmZ2xwYTduY0J1bjd5aDBkWjdOczF3dU1ScjBCQngwUElCWnhremcrVXludzhIdFlkS09rMFljZ05BeE1Ib2FW''@;'; put 'put ''MzlNK1IyT2ZQejE2ZE13dVNmeG1QSkQ1WFpjdWY4ZmVML1VxU2lGZnZYVWQyU0RwcjJocTVHR09qM1MyKzEwMENIZ2xhUWRGRkxnMUNMdzNkSTNXWHVRSThHNk1pNXBnM0c1N05xNGZCQTBCT3htb01EWTZkZGVQM1hxOWRmb21LYnhJNEQ4NzlHL1NrcnRrM3lSOFhLcDdKTUlXZGVqSTlzamhp''@;'; put 'put ''RUZXSC80MEtsVHlqbmFYd2wrSGZwN1hTbWhjazU1V1BudmlIVzUydGw3L3Bwcnp1L3RPSlRKSE9yZ3VrZFZPck9Qek14OGRuYXg2MGluZktTTGN5elRPNVJmajdQOGxwdEdxekFLRUZVQjA5VEZTckljcG1qTmN6bnkzRmEzUFZ3dTBrUzVQNnQ3M0lHc2J1N0ZzZjRidTd0djdIL2lOQzdwSEIz''@;'; put 'put ''dC9EUzUwTExRMWJYUThpdThxNzJob2YwMWxJc0RGL1h0NVhxYTdDWjZnZWgxb1BRRUNKT3pnWTB1SjJ2b2Ryc2o3bkIxT0VKVk1OaHlyeFRKRldNWWpTNGRTWHNiVjJHRktNR0tMVjBETlVmYjltcm9VWDdXTXRXMUo1REZEeTY3TnQ0MkxBY3JzM2g2bzJwa2VLeTFlejJlVGdDZXJEQ1dwRnli''@;'; put 'put ''UitXYXhvclVkQjRBUjBTTkZVV0JNTEdFSWJ2dFFEcGs5Vk1wOThiOEVZaE43WDdWLy9LcWNYVU00OTk4NXE3VERHMjdocjZnREg2YVllMVh2Mko0RzE0c2VKUGpqY3RHMmZLZlNDLzVDcXBFZFhMQ0M1RmhBVmdzUkhJeFJqM0RIS05WaVNLaDZpREZHQlZ4SHFwQ2FKTWdxM1FmaTNwVXR2cjl1''@;'; put 'put ''WmErK1Z2YmUveWQ3V056clpsanZTTzNOL1pVSDBnbU8vdDIzbnhMKzQxajV1YkdxZW1HU0hHZzBPcXNIdTVvbldtc3E5a1RpYVpDbFZVdTM5Umt4MHlLalRXb3h2S1Nta1BKaG44ODZhRzZ5amdBOFY4QUpBYTlTaHBlUFFYaDM2SXF4LzNBSTQ5Q2UvQi81VkkxRVk5eDd0emN5T1VLdWpTRFRC''@;'; put 'put ''VVhEM2cwSFliOWQ0K2NUb3duRzhZVHA0YnYzbWtadVdjbnZsczUyYlNydm41WEUzNjNjdFBPZTBZNFhsMHcxbjltOFNvOFM4L2lWZENhcXNMa1dnZGNkcTUxakRRYjc4UGtuNVZmM0tQODR1NmYvSVRxWFBqOU16R3l2Z29SMHBVeWVZSytURlR2ZzdLZ2F6L01sTFBKZzdadzJQVFVrbElGQkQ5''@;'; put 'put ''Q3dJd0RoZS83MENQdi9jeUgzdmZqMDE5NEhCUzU0c0svcGIrZ09SU0Y4SEZDN0VFK3ozUWI2RWFqQ0YwVG1zdWxmSWU1YVhFNEhIYUtWeGhsQkh3MkllbE5KL0ZqYVBuRHp6NzNJYlM4Zk83WjV4N0FPNVhQdmZrbW5zUTczM3dUK2pTb2V0eUFTdVFpa2NwZlZybXBrYnFETGZVWTJVaEJzK0VD''@;'; put 'put ''NVE4Zit1clg3bFArN3huZ3dNZVZpeml0YkZNVUxlNmYxbXcreGVOSzJpc2IrMmZUWGc0N0cybWFwd0RBOENmeHJjcjdRWjIvRzU5WitxY1ovTFBGR2FXQzIvMkI1VnZ4Q1BrK2o4dzhHMFJtdGl1UHpNRE91djBEV1Bmd3c4cmI1UHZibG5ac1k3aGQvdmZsNS9DUE5zbFpDdUQ3bXM3aVhUeGxT''@;'; put 'put ''ZjJRVzNIZDZ2SFFsQVViRDlNRDZuaTBiQnQxNW1qbWxZNEg1WTdIQzhZaUJYNVU5Y01QWTUzeWRqMTViTnZiRnppdGEvQ0QrTXVjSjU4UzkvZklIckFNTEFzSkk2TVoyUnZVRE1wVEl1cHhKcDJVM0JjblA3NzcwS0Zkd0R1Ly8rWTM2WnlVNVVOa1l2bEZlR2c1NjJPVEhERHRRZ0lDRUxKOTZR''@;'; put 'put ''dGJ4dmp6TXlTRHcrUVZhT3RsYlMyWXhxOEkzZURBWUl6WVU5UGVRR2J4eGgzazY1NlA4dmdpQWpKTGlKM2xNMjZYdllWWTBCV0FNWEZBRkZCV1NrUTlzSVNvaDRqUUJTZ3JCM2k5U0dpNEp1aG1hRHhRT0dqQW9vaG1WRmIyZ2Z1MEhvUUtKSVBUL0xvcDJhMmxRWGlxSnhnT09JMkFXK1J4QTNK''@;'; put 'put ''elRZUlhEWU1iYVI0a3BhMlg0YnR2dWJsNEtwSGVXZCs4dDZXdnY3MnJZeVI2L1Y3cnFLbGxTMEp1amhQN3pmdVVpeDJCU05WZ1hmMUl2TmhhM3hQWjBhaTBKU0l0cnBwZ01LNnVNNU5ac0djT1ZJcCt4S2RueXNjNndZU1JuZ3o0dEErQWhvRXBmcnVFTXNsZ05xdFRxS2J3Nk5UQjFQazRWL25Y''@;'; put 'put ''QWxHUGIxV3lUdzJVL2RyYTQrYUFBSk56VzRzb1ZzRk1RVHpzY2tLTTZDeDFsaFI2WVRaMnUzTk4rakJDNWNmT01ra3JLNDc0K2NQdDdZZDdtdmVVblR4WnRxZTVmUHYyVG5saVFpYjJMYmVPakp6YVVsYzlRVjVVL3FPNlRobTh1cjkvZXJxLy8ycmdyMHJBbVI1NDVYSXhXT0htTVpqbnNqSFlI''@;'; put 'put ''ODhNRGQwKzBId2dQT0h1S0kvMlJlSEhuL0ZNUk9iYUxBT24rL3BPRFZSSCtncUtxNGZqMWNQVkpZVzlWUW5PdjNFWTAxYVZqbCtUVFhhSWp3VkdRcFZvRkh1TUlDeTh5Q1ZhL2dyUjFnSXhqcFZZaXBKenJFWTBDbWk5TENBam1ucVhRak5kdHhwbVBkRWM0WUNkRWcydjRYNlAxMDV5aUVhMkFx''@;'; put 'put ''MmFlaGpsbXZhVVRRREJPb0Z3NU1XbExXUHgyaTJuUmtadTNWSWJ4K0xTdzFtaVpXVThCblR6QURGa3VaMVFnbUhtdGVsQTcrcklnZXpvMURHcjNPWDF3cDhTYjNGUklUUjFRelJHeHhqazVNcDE0dnpVYXhNbFB4QVY3eHp5RFB0dmFSNjR0WC9yTGYyamkyM0tTZk53dW1FNEQ5dk0zYW05cFo2''@;'; put 'put ''eFFQWFdVeU5EdDI0ZHVuZW1zUnR2YVVzbTI2anVBa2NiTDVEL0FZODlJNXRzV05SRG5DaFNLbElDRlNOUjFNK0F4MWJBa2gxb1dnZjBzNnZHenNkckNMSXdubzFnNUNJSVFrUlFUZlByYndJNVRLRUFXK3lUSkI5WWVPcmQyT2x5SDh1MmFmN1d2OXg0NDgyRGd4TnlTYXNuWVBUbGUwcUkvb0N5''@;'; put 'put ''RjMvNlFHUG5kbzl6eEdpcUtBSmNSNWUza3c3QWRSbUtvWTl3SG5TVVlyMWd3MFJjU1JMNzJFWGQ2b3VxbmlrSFZRa21TQ1R6TUJsaFJnS0c1dXFCa2NYSnRHd1doR3BZbUFjRlJHdkFRTXVXbHlOVUhpdVBob013bnJKd0tCU2tXaGJiVmNYQTQ4ZDJ2SnJsVXF0WXJnTVVRdWVObGRXK3F4SkR1''@;'; put 'put ''OHAycDdzT3RiVWQ2a3BmWFR3Mk50YlJQamJhUWZSS2ZkZDhTN2hzcXJDa3A3VTdtc2djN2UwOTJsRmJOYXk4YjZ5alkzUzBvMk1NNkFzZU9TbGg4Y1BSWisxMEtWc2xyUmN4MFlNck0zcG1MVWhXTkt2VTI5YU5ic09kbFlzczg2TGVBV3JtQVFKY3lHbDNCbHcwUlVGVklSQ1V6NGtHN1c2WUtE''@;'; put 'put ''NDNXWGRUZTIzRHdNbVRCVmNsaVQyNXUwWDVFcTVMZFhjbGxKZEFvc0xWWEhab3B1ZmI1R2ZnditXanJYeklubXpDdklCeWtGMzFqMzB5K0tSd0N6eUkrWnpMVTlRMXliZm1XVmdXWGI4bWl5NkJON0cvcXFxa3VLcXF1T1BrU2JJdFdremZGa2RIbHQ2aXoxLyt6dktJK253ZjJrK3RFaEdzb09P''@;'; put 'put ''eWtxSFBHWXNnTUpiVzdSVUJLejRkNDNvRUFBSmlTMk9yYjRJT1lobCtuNlhJNjNIYTJlaWtkVG4rM0J5RG1CM3BZcU05MytTM2VrcE9idXRhR2ZMYmI1a04wenF4b29pNGwxN3IyYkdTRzRnQjNjMW81a3RHRml4cWxMZHpVMG5IaFZmUjNNNU5ZKzROb0RZRTNkUHM0Nm83VTFQUE9leE81cFZp''@;'; put 'put ''NmxBeFd3Zis4MVV2My9kQS84bVRQNzhmbHlxdnZUeDhCMWl6SFgraTQ2RVZHbDhsMUw5cTQ4TXdVMTlVVGN5b0F6RG41R3A4N0pPV3pKdWErdUpLOHFZYjZBV3FsODhUK0Z2WUFYSWZRRmM5VjE1RXNCNnJGc2hERlk1K3hpQ0pnbDV2SDlUUmxXVTJKZEJJOEpuZUZlRXVFY1hDN00wcGxpNEtv''@;'; put 'put ''SW9BOERCd3NSSFUwbG91WHMzTzliVFNKa2wrTUZsM2MxTzhQbk56VTNXZGZQS2thNmkyY2JMQXVhdEY0KzlVc3JPOVJ2bW05cGZvdDRiakRZbnFGSjlETjVOUk84ak9PTFdrV0xDQVh0SXNxWk9GY25xcWpleTVVc2o0YXAxOFhsWUlwVFZDV05zclVpbXN6NUhDcHFqeUF0RnZDVEZmamZvZEV6''@;'; put 'put ''Q3VOZm1Yd25mTXYzZ3VuMytoTHNlWmdRSDJHdTJMeGNEcDZJL0YrcU9xd3pGd3FxL3Y5TUFDK0J2eDRXcnVlSENkc0JWMC9DeU1oL29jaDVtblNFeTVQZ2Z6QUVTQit0VTUzaHJGa3BON0NFdzdySFVrYzJDdTBLbHovN1ZPblVLZW1samwwMUgvYVR2NFQzd3VaMVEvbUR0Um1QdkI4RUVRVnZ2''@;'; put 'put ''QjJla1Y1dmcxZzVweFlrNlNmWTNMdFFybXl0MmYxSlc0UC9xbDBiZFgzSjh4WlhMRis4Rm9LN3ljSUZTOWRUNXJac1VKZkJaMlppbkJEZUllSy9NUjNCb3pyM2l5MUQxNERoUU0wekNPeHFSYms3a2Z6MmEyelowOGlmOVgyOEt1QWVVdG90L1BaYWg4K1UzOEEzaGVKZldSUGZCQUwwVG40Q1d6''@;'; put 'put ''SlVBMTVWTzRVY29udmlibEU5NGc0MU9LdmFXRUt1WnYzNUpJYjlzVlN0U2xNOFB4dXFubWhybDRNamhjNFkrNW92R21nZVRSM1phcTBJNjJrZ0tmTDk4V2JJN1hEbFQ1UzZhOEJZVnVtOXVXbDErUnFSK1lvajRYakhXQmZBaDhyaG81N3NVaVRUbURhM2lXMmhReVRSY3hBQnNRM3UzbDdpQnpr''@;'; put 'put ''WndWMUVjSzhYVTF1MW9UQmN4SUY5VWEwM2pCMDFvaVR3d08zbnpqalNXZWZKK3h4T25aM29tOUIrNjc3NER5SDBVVkppT3pDU0RQUHFMbmVzYVo5VVpWUFFNcVJyV2VPWEdsVjd1cUdvQ1ZVSkxyR1ZmQUZXRHJFVGs4UkcwV0c1V2QrS2g2YWRLVURYRE1XNkJhUU5uZ2Z1VVNWVGE0VjYwaEF0''@;'; put 'put ''OU5yOVVRYVZrVnpVKzBPMWowN3VUcEg4Y2RIL25RblQ4OUR1N1BlL0V0MUZpelhJOVFDKzNYNTVIc2w4OGpGWnc4Zkh6dWhrTW5uemh5NVBvajBPT244Q3o5WFhvTFg2TTh0Skx2QW8rVDE2eVpKQjNXMFpRWHpTcEEzd0xKV2FSd09CeDZscnlVQXM0SVRTWkpUdnlSMjg3YzlZMFgzbjNUVFhl''@;'; put 'put ''OThJM0hIOGVHcFljZmZsdjVNK3QzZVlnMFFiODJXcjFqTnRBaFUyWWxhdGVVVWZmU3Nmc0VkZlhCNGN4bDFBd1cyQ3hFNlFQdDNxSkFXY0xsK2VrZGYzUGZiVDl0dnVXTDFyeWR6b29FTVNxMzRUdVhYcm1QOFBwR2VIa2RucmRKdnNtK2FiNUpvdm1tQkhZb2IrTEhzZkk3N0ZFR3AzRG5vU25s''@;'; put 'put ''N3creDNPWHlMbnlZdklEOHFGSU9GYkI4SUZocTNPY3ZwM2xnbXN1Y1ZBVWJvMUc3aDlwd21vSk1nM1pKZ2JoRlFOSWdyaUZ1TDF1K2xLaW9TVGgvTm9xckcxSnhITnU3emRUYzVNYkRrVEIyTnpXYlBoWHRhenBURXgyTzF0N1czRmRwR0RaNEkrRzdKb3VzNmVwM2hhczhobUZPczdubDU5RGZz''@;'; put 'put ''ZnpVNXJWODRFZk03ZHlwMWRWaGlOVjI0ZXZaUEFBL0JwWS9zdVVUMU9mSGpFY3htbFFyMGhBZXBTWG5SSExGdkdEWElnMk42VEJNSjRIQlpTTXdBUS9UVlY0d0YxS0VEajBVR2FKRE4yNmJqZUY0UXdQTWFYYmJsTUZURlg1WGRkcGFOSGxYT09LRmVWVDJOZDlXQy9PcU9kUFVGNVdXbDFFS1Iv''@;'; put 'put ''QjkrR203aFBNUVVYNkRqRThoL0x6eUcxYXRRVzFoei9KVjZCZE12K2F6MVRNNk9HcVFtVlBPRW10T3VtNjEyZ0ZtemlVdmlBVC9Kdm1NV3JyUWUxL0pkbUxYcWhXV3R1Q1grVE1xbDU4amVqS01DbEU1eFVwSmNXR0J4KzEwNUZ0MDJNTFh5ZUNwTzlURUlrYkRSYXptTWtqcjNMa09wU1h1bEtE''@;'; put 'put ''aGlCMmkxeUNFMWVBQjRLL3YyOVYrb0tWbGY4ZXUydTNsRXhXMTlZRUo1WlBwZUR4TkxISlAzdkRSVE9iSWNGNVhoeGl0NkF1YmxCZk5rZDUzYlhmaWxITjdrdFZwMHJ6cGk2Z1lkY3N5MEpJV09pR0oxazlMdUY4UGNSM0dFbUZMTWl3eW94VlBrc1NUQVloWHBCWGJuYUVnbUJicTNJWGMvbFNh''@;'; put 'put ''VlppdTB2Z2xtSmJIa2VtbGZ4enQ3bTVkNk41eVc4bU92UDVZZmRlVFQ4N05wZW8rTVhpMjUzQ2J1dEozNitBblVFNXUySU9hNVVZWFJrWThBTkdseE1LU09SRVRjSm5BdUI4d3NUME52QzZQNGxMYnMyQXowMTBMYkR1SVd5dDZoVjhtNVBqckgzamhoUmZPUFAvODgvZjlrbWFUY2MvZ2xzR0RC''@;'; put 'put ''K0VGSDZJcFpVYXJEQm5DN3lNWFdXMVJQY3RDUm1oaExmQXRXMUNZMFFzVVVYaDBnK29pbXFETWpUN3FjOTd2Q3dhTENrUEJvbWVDSWZhWERORy80WUtpa1BZWGVEV0M2b2tSZjl0V2dXTTZaQk53REwybTVrVUg4TDNrM0pYa1ZHa2RVQWFQS0UrVGM0TlhtbFAxU29FdkxqNndnN3ppdVpQTHNI''@;'; put 'put ''LzVaZEpPbmdCS0IyU0l3Tm1DejIzVW5ONUpMUmRMcTdQbGxEQ3pCRmp6ZCtpQ01sMVhzZlllYW0yZTY4UnRlMjdlZzh2cWQ3VzA3cWxmS2lkM0w5MEVmVGVqNzZIdjROMkF0RkxabDZNUUNGVVZvemtGdjQyNTJJdEdTMHVpMFpMdlJVdExvL1JYelJjdnQ0TVpNWVBkdXBITkxkK0ZpYzVwSkR3''@;'; put 'put ''aElZQkJ0dEo4QkRqMkFzRzZvNGl1WFFoa2ZrV2I3bVVycmVEeU1SQmdyTnMyZytGMnVnQjVuY0Zna05wcGlqbGVSMTRSWGxXUVNmZkcvTFNxTlZGVWJ5c284VHNMN1haSG5xdTh1MEFmRDVlRUU3YThCcThqUDg5bWNnMmwyWDZlT05EY3ltZ2UxMU9heDlIcmZEL1A4Z0QrSmROTGZ0UXBkNVFC''@;'; put 'put ''NTd0Z1lHN3F6UTRnUFNJQ0xkR2ptQk0xYmNYS2F5RXlSc2hmWHVoMTJsV05SWU5pbEt1eDFCS2lsVFFZM1VLREcxUWwxcnkyTUd0Rm95blhyaTNOUW13T3JNWkh1TU5XUVZmZzdCTEVZYmVqenlQRFV3US8rWG1tYURlQU9RajZlR09ZRXhvTWx0QkRtOEFjeThMa29ZOXVBbk04KzZ3NTlHRU9R''@;'; put 'put ''OWJDdkp6dHh3eDh1UW9HYUFBK2kvQkhWbHZrUUZ2bGJqdFZqUlRsQm9SQkFSbVFqaGgwQjR5Z0Y4VnBjRFBWcFNZOWQ1UllOT2V3T2FCeHZxcWJ6S0Fvc1ZiSWtxTDFUWDQzdGd2a2tGYlFzb3dHUDREZlQ3WXR2ZlV0WHRseTU1M2t3cUx5R042aFBNWnJVZHBaRFZFS0cyVi9GUmIxVVVJZ0xB''@;'; put 'put ''ZjFXSUoxdU5nQkhHekhSQkFIU3VubUtjNzkxYlFhUk1CSDRRWHBybC9KTVRKMXJzWnNZT2oyd3RoOUxCZnBnRVlKMmdoaDNXMVgzS3FVYm1sYTFVbzQ5WTdONVBqYUZpQjlBdG0vVVVPK1ZrRFRDaW5VRUlxQ0ZQcmQxUEx3ZEc0K1ZqWEZXbUZjRTROb2hRc3ZUZmwzSms3MldQVmxheVhWTy9u''@;'; put 'put ''QWpyV2xWSFBSOEVSZGk4Ni9Xb0NiVEFjK3ZuTjFhUlh3RmF0QllueGVxY3JDQ2NaWE9JYy8xOEljUkk5dEFuTkNnd0ZaT0xvSnpQRnNQM1B3bjhHczhQbnk5MmdORDN0V25JOW4rZjNyK2dHbXhsMDVNQWZCdXErQldmNHR3QVRaZU9KOFBNdVByNE1CYTRYamJEeThuN25sUjFhUEIyU3FDbDUr''@;'; put 'put ''eVdvYVNsQ2IzTHphMDVnMnNQVUpZNDZya1o4UGYwcnlpOW4rUkRjMHl3TzdZMXJKSmJDQUtXbm5KZVcwR00yZGxNRDQ0eC94Z3JTK3ZqZDI4SXEwTCtESHNsVnBPTENJaTVhK3dXdlQvbmJ4YWNBQnE3ZGhlcVZPMVN1ZldZY25Wa1BDOEZTdjB2YVQ2M1RQV3BpRHVHb1RtQk1hRE5EMks1dkFI''@;'; put 'put ''TXZDNUtIbk5vRTVubjNXSEhwNmpRNmp0V0czUTd4U0FwWkFmRVpFdURZV2lvQllSTkxldEZmeTRvL2NlZWZBbldlSHo5NHhjTWVkdDUvTnZqK0wyT0t5VmpQakJSc1VSWGVwOGEwTDYwaGx4RmZrTll0NkhSaGF2VERnWTFlRm5Lc1lycXI1bGdLV1NhRWxBNTVCY2RXU0l6Z1h1Y3RSSHI2R0tP''@;'; put 'put ''YXVEOHJXaW9xS2FFVlYyQkZ4c0IwaTJWSnpLWkN0cXFjeEl2SjRNYTk4MVZGT2lHQlBrbnd2ZWMzNXZkZnVyankrTTVFRW1UNUkzeW41UlFXNHBpa0RrbzByRDJYcWxCODJaNGozMXA2Wno4NjIxc3pYbmVxaEVsMHpyL3g2dUF4ZkV3Q3hmcVByU09kRXAvSlFnTnM2VmlQQzZOdWs4c0NqNitW''@;'; put 'put ''cERjeEI5T05OWUU1b01GbGJ0eDdtZUxZZnpZN2x5RGYzbDltejJ0Um52YkM2bjV4NksxcEhsSkJqd0JWNkhkWWZFTEc2ZkpiZFBBcG1LOS9qeXZmYXZQYXczeWF4NmpKM01xZnFLcFN0dWpwMVlhWHFTaDVqVlZmSFdoYzZ1eFphYnZwMVIwTkQrK3RxWFdLU2ZCZGtmdXBaTS9qdE5IZmxCNDRv''@;'; put 'put ''QmFVdlFNQXhyeFZUZS9qeXNJalZsSFd4V2xZNW53WE11VDBsbTV4QmY5QWZEN0RWcm5YN0ttSTRwUlU2cFRSTFFKTmV2YTNYZG5jZmJFMG1XUFh1Y0txK3M3TStWVkhkMWxKVDAzcUtHSnQyMXRYdGJHb1lMK1FWdklkcDVlNWNZN2lxb1RHdU9EbnRlYTNCSzREckhqRHVCSFZQYlhSZEFCcmNr''@;'; put 'put ''M1A5a2dhUHBiRmMrSmV5MS9NR2NxOWZ6UFkvdHpYbnVoRE13cHRQYy9tRTY4Sjk0Q05Xb3dZa2swT0RUNXJvaWtwRk1SRFZCMzZBRzV0SUV4Wk44R0RSS0JBa2lRTmdxYzBBVTdZeEREWkw0RXlZSlFwbXVZS3ViRmZXVmVsYU1NTUdZQ3NReG8waHB1Zy9Qc1VZTW9uRU5HbUFtRkNVaUhnZ3ow''@;'; put 'put ''aW85OHNUK0ZhelJhQk93MHBkQTUxeDZuSk5MRGpiWU5DS3plYmN4cGEvL25tMi81L25VV1ExZ3N6UzV2TWczYUprdU9MV3NyeTJJVnBwUnZlRnYyTVhETWx5ZVNxVlNJQ2pKYWN5cmMySmhrU3lyaFo0TEU1RG4xQXdsSi8xdXRac1VQRG1iUGxneXpscjF0WlJZenZPNXNKZjVPdnNIWWZENVll''@;'; put 'put ''NzloNWZxWU5wdXJxMmZYZFJhSC9MMnNWMzVmT0R0RHltcFk2dnd0ZFh4NU5UUTlueW1PS2llRlZsZGM2aXZQSTVPZUYzMVFSRDNBNVdndTlNYXo4YTBHTnlTUkRyZGNrUUVmVU5oVUNmQWd6QmNSNUlHTVRHUkZTalJvZ0tSR0QwbzBnRURTUXlWY1hpSzE3SnNoY3NsUTlyOUFwUldJQzc3ZkxB''@;'; put 'put ''Y3NVNk9IYSt3ZjRzdUo2dDVZZVplOHZ5MUxxLzByR2x0U2o0S3dmeTEvdTFCWjNYWlRhcVQ4R210VzZ0Y2ZpR3JuWGxLbGs5RkdONnJvL3J2Mm0wd1hXcS96NlFjLzJTQm8rbDdibndGN1A5ekhIOXQvd3R0clpKKzNtWjkvOXVEdDhOQkd6THVYN1F3K0YvQ2RkTFdmOHY4LzRmNWRkZmhldGgx''@;'; put 'put ''aitIbjN1UTUrSHFXYTNOLzJTMVlydGtwNDB0cDJRUHZuQ1ljQjh2eGZCb0N4MzJWZFhBZElFY2c4WEVaRDczOHBTY1Yxek1hOEhDSWJwSFFuTlJzdTVKZU1YbHlsMFB3bTlzNzdsbGVQaGtUOHRDMTU3TzhPU1JzdDZCWTUzVDVhMGw0K09kOHZoRUo3RS9kUFgyc3dQZE53MzFIc3NNRGZiWDla''@;'; put 'put ''Y25heHFpL2I2bHYrem9rcS9hMXRsOWxZWWZVc0xzeVRpM0p5cGQrTG9qeGRzRXgrZmhqYTVUZWoyVWMvMlNCbytsZmJud0wyV3ZyKzcvWXJiL3VTbHVsenJRTmxKSStsbE8xVWYzVFFEZmEzVUZpS1h2a0E1WWZwSnRJSk5BRnZXakxGejIyWXJBKzlBeXJRYWF0OGd0TllDb09YY0hHYzZQeGtx''@;'; put 'put ''TG8xVWxmNkQ3M1g2b2ZzQmZwbitqeGFXeHBvV1h0TGN3Sm0wTjFrdHpzRmxmMXVzaU9oSUpGeFhxOURxemdhaStMTDBxckZ6ZDBKY3QzTWlYelYwMTNNaVg5ZnY5VmY3SzBEdjVzanF2dW1YU3cxeFpDZFJsUER4MFptQjRTOUcrN29vSXZCdlpXclN2UnpsWC9IS3dNdG9mKzA1ZnpQY0RmeFIv''@;'; put 'put ''Y0U5OTMrbUJhT2xJYURvSkVod3JHLzFsL044OElNT1BnaERYeFg3dnB1ZkhzTFVyU3Z1ZHEyUjQ5ZlVWR2ViWEwybndXUm5tMXk5bSsxRmxXRjJQb2Yzc1VmdTVOMmZObWRlNWZUeTNWSEdUdXNQMTY4NmIxQjF1dUVDOThXMjFCSkV1VVA5M2xSMHF3dnlhc3NNc1RpNnFPQUZjOWVYbXpUTFpQ''@;'; put 'put ''TlVDZW1CZGpNZDl3bk5abjNDaEo3ZnQ0V3oreW9nZTNLVHRON0orbzNGVTNaTzN2RTJvZ0hpZ0FLU3pYVzRwd3BLdUFJdVlEQmdnREFFU2t6bTJIVXZQOWhXd0ZWUzFKS3V3c05CWDZBdjY3WGE3eTArekwzcWVWRXdISW55N1hwS2pxVDZOd2QrdkNOZlh0YnZMR3JLNzk3Q24yRmRRWUZOK2Mr''@;'; put 'put ''TEVmV1Z0OVVFZjN6M2s4M2dLYkRqTk52U3A5WDdiU0MvSWFneWwwUXRjOEh3bFdLY3ZoaGpDZ3cxQ1RZSVlEVWFNalRFc1lmQkVONzhMNWx5VjNLaTJSWk1wSGJDNGhZTjBEUUhQaUlUUFVrMDBzUktBeEhwZ0ZueXdKa3krdmJrTnBtUkhQQjVQeHh2RFFXY2dHQTY0L0hRVklvdWJUUXFDUVl2''@;'; put 'put ''Wk5YU0ZjNHFEU1MvRG0zbDlnZkRjTFJ5QmY5RUtoVGtXMXhZSzArSmhodE5QYWdYRGFxN2dZeXhPREt0eDRpL1d4WnU4UHBiSzdsWlZkdS9PNWhrK3htSlYxaFliMFBsTjJsNVMyeEpzR09WOHl2WVlzcllSdGUzQ09qNk5ReHhqSmk4Q1RDK0R5UmQya0Q4aEk4QThULzVFZ1FCR3pSdUJCSnpK''@;'; put 'put ''MXMyK0MvUkpFWXpwTmRua0FNTHJnT2JhS255WW1oV01CRDA2QVB4cnkrNzAxYWhPc0ZZd1JiVlBkRk5vdEpycVJGTkRxMXRZTDl0aUZmQUtuQ2lxQmRHNXdOVDlkdmg4dnJBdkZLTFZDdUdBdXFRVldGOWJvaFl2b053U2szZDFyS294ZWVpaGt4M0t2MnVGSnAxTGY1OVRaL3YrcnFhbXBSL242''@;'; put 'put ''aW1lVDh4azg0a0xhUDg2T25QZjdWeldkMXRRZGRtYVhDUTJvUjlzMGxieit3U0FlWXJucUVEZWg5blpHS0NOaXJFQnMxMU9lbEhIOTFXcUoyTFErbnVKU1NFZ1VSTTlwb3U0TmxxUk9McExWUHNmMEVTTURET3hVaDRqZXVVV25uSHY0ZUxFcFloY1dLUXBkeVk0VEFjdHNKcmpFSXFqTTdLRFJn''@;'; put 'put ''d2hUUFFHY0FCQnR5QzZ5YndJK0tBU1hIa2RqUFFBelZScmxGV1BOMkxsUXN5UFpGWXBwSUd5T2VOOUc3VWd0SFF1SEE3SHd6RlBoVE1jRElSWWpsdFM1K0RWVk1yYTZtWHE5eU8xZ3ZtMXJSWTZxMkk2WFoxdGRTRnpFS0l1NVM5cVFGWHN0VHBoc2htWXZzV1JVOVFNNFJXZVpYWE5HK1NoRFJ2''@;'; put 'put ''a29kZjYrUWJWUjJCN1o1bU5pcW8yNnF2cjJ2SjZZMnFqQnJpTldsVGJLcS9UZmJlOExmQktQdkVqZmtZSHdBczF5SW9TcUFYOW1VdTd0eHBMK2pLc00wQW9wL05pSXVqb0VTNm96OGZ1aUJ2Y1VhMUN6RXlYY1FTRGJ0NklWelpoUzVKK0JzSm9xdmExZmIxT2tuTncyL29tSml5S2R0NFFyVzBt''@;'; put 'put ''VnlOa3BPZTg0UGxzMDh2QTAvaTdwb2Ftdld0YWFwcFR5ZnhFZmlKV0ZmQVhGN21kTlAxZFlOSDhZbm9jQUhlRjlYOUZSVFF1RFFXclFpRmpZU0JVaUlWM3JJNGVxZ3VYZGNhTEE1VjAvYnIzQ2txbElmNzZPVEI0Z3VrUnZnNndzUHp3dXJXQ253Qk1KZE1qUEVaYitBUmYwMjFhM29ZVTBBVXV1''@;'; put 'put ''ak9Vcm5qUzQxY0k3cytlNDhJTHF6VHA5L2pabmlaTkx1aE9XRTNnRlNidnVsT1cxVkt1K2h2VWhpQjQxcmZaV3I4ZkhaTE5idXIyKzBIUXFSRUowSlZqTVljcFZPOCtQeXVzakxhbExMUlpLVkJlQXpCRnQybVZseFpCaEptZnQyR0pzbE5kbGsxN2M4YytyNVlMYktGektQSG1uMnpqazFncEcx''@;'; put 'put ''Z0t3M3hLYXZQMCtOK1czbEpucEs3bG9HK3RyTUdBampXdHlRZHJOY1Q2N0w1dSs3cDkzYlEwV0wvMEZ2UTNDbko0bnAwM21lQnlpSC9QL1grNEhtUHlPYUplZjRKZnAzdXBtWjlSby9vWnpuVXl6K0o1NFY2QUdWVmhQT2c1RHZPY0JzUDNaTCtvOVFQOWY1LzVCRGpISjZEOTNNbGdSamVHNGZz''@;'; put 'put ''eVNCL3dVeDZ0dkxXWVRVWlJEeEpJdE4zcGF6WjY1NkU4dDdiUk95V2wwclFZMnkyNVNaOFNBUC8rMUtuRnhiY2lSeUo0aS9LZm1hTWQzOUgyZlRTdyt2QkJPYzlza2tScTZRMElhMVhpWm5oclUvZDBac3V6VjdaNSt0Z25iYkZyYXVxTGJsYjdneVV3OStyemNjUDR5YUdoaytONGI1Vnk4VC9E''@;'; put 'put ''UjhKNFF2bHRGY3F1V2QyaHJWa0JIbC9mQ05la2hQbDA0NnRpL1RHZzN4Y1pYZXRVL1dybDhIQzloTmcxZU1EcFJiVHlyQlBaOVRFRCt0d216N3FVelVNWTlxR2NkYXBNZHAxcUFUMjV6Z2ZrOGZtNWJDNWhZUkp0dEo2R3JXdlh1TlMyKzFieUhOaXE3aHNDeFN2UVBiWU9vRktMbk02ZU9HRWcy''@;'; put 'put ''U01uakhScnZWYXZ4eUxDRW1leHg4V0tlcWxyWWFJRkxwb3prUzEwY1dQN3luYnZIZXJ5L1F1emRCLzhMT2xkZXFzcmMwak9ITTd3UmZ5cFQxdzk4K21yRjVVVS9sN21zQ3pQTnpNN0JtTVdmZzcrQloxWE05b3VqM3N4alVUME9wcGUxd3NEd0VNNnZVRjN3R0lrb3FpbEhNeVNTY2hKT2lTVGdR''@;'; put 'put ''QkN5ZVprVTJNcVVCK29pMVZCZDM1bk1Cd001Y0c0VnlkcFY4eEJqdCtnVzNPT2pPcERDSGs4Tzl0NUpCdzVLdk1DODh6UlNQQzZqT1pJS0xmbDFKdmpXMWJ0ajJxc3EwM3pDdlRHbXRvVWN5bDB1VVhvdUo4NkY2cHZjWUxSTnFYeTc5UHIrSUxYUDFQYTd1QzVQelgrN1FVK1BjSDRONlh5NlNz''@;'; put 'put ''Y1hubWQxa3VyOFBSNlI5WS9QY0g0TjZYeTc4MGJQdXQyeHI4N09QOGErYlBZSG5nMnprWjFuQStzNDMxZU4wM0hlUlVmNTI1dC8zdzcyei9mZ2Q2V1MrckFHYWt2S1JiMFVoSGRmWWgxdU1BS0xra2VLOXJnZWVmNDZub05TUkpud1BQMURLS1ZOTWE2Y28zcU5lVWE3OWlvZEYyTmgzRHFuVnF4''@;'; put 'put ''ZGNPTmlqWFd0K08xR3VaUWRZU1dhZGdOVW5Fc0tHNmF5YjZDUXdKSTc2bnJOOGhwZXg4NGVKbHpBNjVmRkN2V3BMWXRzNWM3UmtDdGYyOW45ZTh5WFNlb3c2Syt2cFRveEpJaWduVGdMaUdnRnhIeVZxOFQ2Tmc2Z2JaU3FkYXViTEpPb0tObmFOMTJlV0M2VHJBR1RsMG4wTUJGdnVjdlhnbjRa''@;'; put 'put ''YXVnbDBFdkxhaDlwNHA4L0lPOW94dmhOM2xOK0hKbCt0c21wVFdMQjJreFVuYlp1djBjZVRxaHlSUEk0dVFtOG5SSmt5ZHNLT2Z5RkFSNW9tYzhsS01YNUh3dlVNUmpBWXFZNlhtVEtrVmlHa1VvNnNncG1nQlU2N09NQnNMOHMzV0VpV2NSZmlWdDVLbzE0Q3A1MXJYU1VUTFpZZGpscUp3Rzgx''@;'; put 'put ''UWFUQ0FNZm1rVFd0RWdueDRYZ0dlZDY2bmhLNlhuVmF5cEl1ek1IbC9COWtPMHMvMFFDZlJ0dWFBS0c0U29teGdOTGt5TTJhSklmVmJONkhYNnN5WU1BOFhHbzJCc0FNTjBONllnNktaRnZpZVQxejRpWDNaWnNucWxqY0ZJYm51blJuSjBZM2hXV29uMjV6UVRLSjdvZVFZSlZNMDJhWGdCVXpU''@;'; put 'put ''cm9kdUVvOWR2M1BCU0FjQ3BkUnlja2xmMmNnUjhjZHZhS3N5MGFhdzVkM3ZIUklFbHhQaVBuU1hDZURTdDh1ajZYRWdKK0IwRnpQK2M1UDRudVdhZGo4cHJPRExaR282RkRXd0h6NldmeStiU3Rad0tiL3R5dGtaRXExSE1yZjlnYlZsdEFNdmJBOHdkRzlXZ2dOOTAzNFp0aDFmV0FyQzFENm5u''@;'; put 'put ''b0d4ajU2QUU2TnFOQzdRK0xSck9vL3NxQnRSVHBiUXp4MW5PWFF0MjJKYS9RTEFnRUhUeE02Wm9VTG9tYzdIbTFCVHk2UERkazdac3VzSXhmMG85UFlWY1lHZWxXTDFxZ3NKZjVIMzRXTzVSS253ZnpqWXlDM0ZNQ04zR3cza3JtRlFCWW0xZENBTjdEZmhXWFNEWlZad1N2YmJEYStQMHI1L2Y1''@;'; put 'put ''eWxmYlVWblRjYlhIUFE3QTY2QXkwK3QyN3BVNzhyV25hUTlteE1uc3l3aXpjL2R5bk1TNTBhbmF6ZjFhSkVkMElxZDhjTDRzWVhYQytHdWRYekU5KzlRbmJtTDhZS0V2cHRUSTNSQ3F4R0M2N2V0YTh2WEtDNXBheFJZbWtBNWJZOW42NHZtMEEzcitJaWR3Y0o0clgzVGVrYStiNGJ5MmpUM2o0''@;'; put 'put ''NmduTGJIdGJZYjVnMTUyNHRxVzVvMy9HQk8yeFBadGh2bHBuamJTOXB6c2FHQm43MUM5eVhUR0RpZjdzaWdGZjEwbnhNWlFPcW1JYktYZXR3K3h0VDV5THJSa1dWaUlEOW5HL0hURyt3ZHByWDNONU5MVjNpZWlwZWVwM0orNGVEWThOQW91WFQvNk9qR2ZXVDNkUkYwRnRqeUJuVlhsOXBIT2lr''@;'; put 'put ''Rk1xTkR3Mk1IRjhpbGtaSDcxVDU2b1k5dlFIU3I3bWd3RWJxbllZQ0dHbjBiMWVEbklVdEl5TzVvVUNmTmdva254L3d0cm9haW9nWlhTL2w0alBUNnkxdGNYaTk4OExQbkRLRVhXVDRseko1ejJmcit0YnNsdEIwU0t5a09kVDlHTHdiOXh2WmpOTEZlNlNaV3VpTmhIcVFVWTJFeXU0bFd1S0pk''@;'; put 'put ''R2JuZlczQjdaMmQxUXBZVDN2SnlyOGZ2OTVEZXpnVDluT2hzOG52NFJiN1BZQnZXZzAyem94WTJnaG9yVENhZmNnejltb28rOWVRZXdPa2swNFlDdlVPbmFrZTJvRWVuN3N4UXo5K3ZXRkdJcDlwTHZNTmMvRUg3UGM3U09UNG04Smt5UnJja2FjUHZKeStCWEhleDU2YnBma3dqMjkzbXhyalBn''@;'; put 'put ''SVZlZGlqUkpEV3B3TVB6MnRFbFJCamx1eFdDSWJiWmpUNGYwY1B2MlZIYTNBTlVhU29Hc0NWUTZIQ2JIQjU5eHBDc2NXc2Y1UHpkcE4xdXM1aDlwVWE2UThoaUxpNDEzYTdTSkVQWGlkaTV0VVY4NTRVZXVMS1BocVUzT0IzWnZTaGVLUkJTTjVmZ0hjZjREcE8vOGR6QjVLOVJlWDM1dWVWdkl5''@;'; put 'put ''c0tzaDRLK2JuenEvZTVCYk45Q2FzUG9QOEt6MStXaElKVnlqTFBUYkk4SmRjcFhGZmVvZWxLMUkwck50R1ZyMmk2RW5VRHhFWnREK0luMzdIdFFkeVMwL1o0dHUwY2JscW5LM25iaTltMmMraHJQRDVkYnFGblYrYXVuN3o5ZSs1THZQMTcxWmVJTERmVE5RbWVaMmN3Rjk3K0hWOG5lL3QzS2d6''@;'; put 'put ''UDF4L0w5cE9IcnQwa1gvOVNObCtmTjRJMnJDWHRSdS9aeEU2OGtsM0w3bGJqM0RyME0yTEJ2ZTk4N2o4OW03ajNvTlpHYUwrQ05vTGw3VGUxTmkzNEEraFY4Z1R3VFRIam1iNjFtd281enppMTFEaFBybjUzNVFzTHlOMnJ2ckdBemltRDcwZS9JQmRneHZrMDY4ajNDSkxTN0I1QmVDYitQbnRt''@;'; put 'put ''Q2FxUXkwcXN3T3VyTm9VSlRMa0ZDNElPZHVMWDZtZnJOeDBLTHQ5a1dNR2M5M3g4K0lmQUd4RStQamJPUDhBNEhkbHhNcGV6Vk12dmpxSHplQkkvRGxDYjdMR2k1d3V3UFZacnpoZDRxajBZYkE4RTJNLzVZRnVRdjROTEhFL3R3RGRmUmg4RTJrTlFZd3ZBNng4WUQ5dnh6d0ZBb3QrUG83czc1''@;'; put 'put ''L3R4TW1nUW52eGJYbFJWbDQvMVZ2NzFOUVlzV3JESkxKcHl2L0xHbWVjUXpHWmh4bTYwU2JyY2I4cEp2VU5EOXEwM3ZMVkVXd3ZxOStVMGI5aHVnMi9NV2RjV29wSEdvU0ZaMXI0NVoyaHk2S3FKTVhsUUh0amFVNXVwN1docTNQQmJkRnovaFcvUktWL3pPWmdEVzk3NFYzL0REaDVrZitpSDRW''@;'; put 'put ''cmxjOXIzN1h3SzNnQnM4TXEvZUVkOVAxYVQreVU4SzEvR2c4SFRyOGNSL0cxNkt0RXplb3hyWXhuc0Jkd0ZIcG05Ly83WnBZdWVwNS8xOHYzQUFCZlQ0QVFHRjBsN3BRaEFQZkpJLzdOUGV5NStqOW1EMzZubkk5ZWdIZktFRDZoV2pIVWlvV1VrR0pucHFmUTZNSGNRYlI4d1ltTEMyRXgzakdT''@;'; put 'put ''M0NWbFlEU3RQUGNGckRVckVZOUVxdXlNRTRhSGRHY3FEVUhMbDJLY0l4STdjV1U5MmtKVmNDQzB2QTFSNy9Td3h5bllJMWI5bllPVGVlZTlZRnhHNmR4VE92M2RJM1JXVXVhNE1pOHJQOVFRSGxEZEtGN3ZuMkpIS25jZjdlajNtUWs5dnorRjJ0aWVvdTZtMzBHUDI5SFlNMGU5c3dVV2tFTjhK''@;'; put 'put ''dWs1OGh0QjlHTTdzYWUxMzBuUGFtVk1EYm8wQW10ZHY5eE5oYVluKzVwd1J4cys0TUR6cmRlYnBTZTEvL2JDSnQ4WTJQR3lDMTJIQWMwQzM0MXAxcmVBSnJUNERybjlEdmI2eVJzdXZYOHBlbDQ3blhyK29YVWR6QjNPdnY1SzkzbjBxOS9xNTdQV0ZlZTFzdEcza0hwWWpUOEM4SXdFbmhubHZY''@;'; put 'put ''RllEczAvbVZOUGs0T0VlRm5SWmM1RnhranRkZjFKeHdtT3ZYS3lvY2RkamEzRkQ0MnlPRzRpelA1MHo5cGV5T01pN2p0dERXcnIvTlhaT2owYnZwRDJ3VlR0eEI5TjZPTGl2WDM5ZnZ6U0svaC9pRXp6NkFBRUFBQUFCQUFCVkVyVCtYdzg4OVFBZkErZ0FBQUFBMDhHZGhnQUFBQURVdnFiMS96''@;'; put 'put ''Yis0d1NLQTg0QUFBQUlBQUlBQUFBQUFBQjQybU5nWkdCZ1B2ZnZQQU1EeStiL1p2OXpXTG9ZZ0NMSWdORVFBS2NOQnJnQUFBQjQybldVeldzVFVSVEZ6NzB6RkVFSTJFUlFRb3pHWUV4TXFrbTEwV290YVdwaUJXdnNScXhZRjFJWExsUzZVRVFGa2E1RVJWMjRjMVhwMG9WS2QzYWhDQVg5QzBS''@;'; put 'put ''UXV0Q0NDaFZLb1M2TTV6NHpFcE9hY0RqejhkNjhlMy92ek1nU1RvTS9PVXBGcVJRcU1vK1NUaUdoRTRoN1JhVDFDYlpJQjBweUJUM1VObm1BTGoyQmd4emZMeGVSbC9Yb2s5bjZWMzNKNDl2bzFGUEk4djRtdlVtZHhRNjlqbDA2aW00OWp3eVBDMjQ4NStvd2l2WWMrbUZaUWRpN3hIbUxDT3NN''@;'; put 'put ''YXZvTU9WMmgzMENWZFZUMUM4OC9vaW9oREdrYzYvUXBqdWtCbEx3enFIaytsZUg5ZTZnNmYrem14TGxXa3M4YjBoK0krRVZzMU5mWXdIbHI5QzY2NVJxT3NPWmxlazRXc0ZOcjlWOHl6cHJLU09rZFZEU0I3ZlNzamlBbEU0anBKR3NmdzRBSTlvdlU1N1JBSG9LeTl3Z0R2RjdXcTI1OHhlYklm''@;'; put 'put ''VEpjd21hWjVMd3hzcXloMDZ0eTdUd2k3RGVpSVhUSlF5UWxpWFAwbEx6Q0huSWZkR3ZlUXQ1cWxEbldzcHYzM3BHeDFUWEZQUUQyU2RsZHo1SlhnbjJGblJiL2xaL2tHc2JQMkRWSlF2VzN4by8ralpyM29rZ0g3RnFsbVFaTDQ5Y3M0MGZPZXBJeVZxdkllMEczWHNpdVdlVDJ4cGpSUDFNZjlE''@;'; put 'put ''SUtmOW0xeW5KaGJ2eWFaZnlNczduMWEydTJ1dlZ1NndkdU9lSytXTC9NY3RieHNKcWEvWGpUdVdYTjlydmhaUFdKOWI0bnU3MnNINDRoKzNBWlpBNHNoKzQ4OEhIRVpBUXhZMnY5dGJseFpXK0IreUhrL0E3V3lkeGFkdHFjV2JZOHRUbno3VElXdU8yUE1mcVAyenZnY21oN2FQd2E3NExsc2RV''@;'; put 'put ''dDR6TEQ3RFdFbi9SUmFwQ2E1WmhEdklaNlQvRE1WbTlqMmxpVGRjTmIrUE85NFRPQmFVRDdrUGN1OE5zUlJhLzdMcXhGTDlVdjArUzE3TDRWOEo4akxjUFlTbkYvNjk5ZFBqek81YjZ1OHErZzhoc3BZOWZPZU5wRndsMUk0bkFBQVBDMWx0K3VNcHRPOTNIK042ZWJPN2U1TlVGNmtpUGlDQi9p''@;'; put 'put ''aUFpSkhvNklPT1E0SXFLSEl5VGlrQjRPa1pDSU9FSWlJdUtJRUxtSGtPZ2hZa1FQSVJFUlIvUWdJdEpEeUNFUjkzSncvSDRRQkdYKzJZYjJ1NkN1TkV6QTMrRWorQXB1ZGYvb1B1OXVJUlpFUUpKSUR0bEg2ajBqUGNzOTV5YkJOR1k2TWI4eHA4MFo4NnE1YkRZc2xLVnQ1YXpMMWpQcmkwMjBU''@;'; put 'put ''ZGoyYk5lMmhwMndqOXJuN0hsN3hRRTVFbzZDbytZVW5XUE9ySFBQV1VNaGxFUEgwVlYwRXpYUVZxK2psK3ZkNlJ2dVcrdjM5cy8zWDdxbVhHVlhlMkJpWUh2Z3dpMjZsOXpWUVc1d1kvQVNZN0VaN0FBenNJNkg4MHg3Y3A1clQ4dXJlMGU4Uzk1VEhNVlQrRHBleE12NEZmN3FZMzFydnJ5djd1''@;'; put 'put ''djRIWDdLTC91VC9nLytMU0pEckJCNW9rU1VpWFBpbG1nU3IrUjdNazFteUJVeVQ1YklNbmxOVFZPZnFTeFZvSGFwQ3ZWTXArazVlb0Zlb2RmcElsMEtKQUozZ1hyZ0dVREFBYnlBQlRJWUJudmdHRlNCQVc3QUkzaGlFc3dKYzhIVW1BZW14WFRZSlhhVjNXQjMyR08yR3V3TC9nb2F3WnRnSTlq''@;'; put 'put ''bUxKeVBBNXpCM1hNTjdpVmtDWTJIYXFGNjZEbHNDcnZDVlBpSmgzbVVmOGNmOGxXK3hqL3dMUUVTWEFJcjZNS3NVQkxLd3Fsd0tkd0tUZUZQeEJiQkl1R0lGc21LaUlpSlFJeUtDWEZNbkJUbnhjVzNxU2dVZFVXcDZJRTBMbjJVRnFWdlVrSGFsWTZrTStsS1p1Vk4rVUN1eUJkeVRhN0xIY1dr''@;'; put 'put ''ZUJWVzBaV2tzcUJzS0JXbEdjTmlrN0ZDN0xjS3E3S2FWRlBxalBwSi9hcm0xQzMxVUsycWhucXZOdjdURUkzU1JyVkpyYWo5MU82MHB0WWNlaGhxNnpaOVdjL3BSZDNRYi9SSC9VbC9pVnZpN3ZoVWZEYitKWjZONS84Q0RCRE15QUFCQUFBQlBBQm9BQW9BUVFBRUFBSUFLQUE1QUlzQUFBQ1RB''@;'; put 'put ''bXNBQXdBQmVOcU5rc3RPd2tBVWh2OFdOS0RHS0RIR3NPcktHQk81cWVCdFlkU3dVZFJJaEswZ0ZSckJZaWxHWGZvMmJsejZERjZld0kyUDREUDRkeml0TjJMSXBKMXY1dnpuUHpPbkJSRERPMExRd2xFQU8zeDZyR0dPcXg3ckdFZFRPSVFOM0FxSHNZSkg0U0hFOFNFOGpGa3RJaHhCUmtzSVJ4''@;'; put 'put ''SFhUb1JIc2FUNVBtTW9hUS9DRTVqU3c4S1RpT2t6d2srWTF1ZUZuNUhTTjRWZkVOSGJ3cThZMGE5Ny9CWkNYTC9ETm15MGNRTUhGdXBvd0lXQmV6NFpwSkJHbGxSbDFLQ3VvVFFkY3BGemkxa2Q1bDRnZ1FKTTVqbkt5V1lmZkpWSmxVWGFVcnMxSEhHbmppNjVRbldhbVNrMTFuR01YWlN4VCty''@;'; put 'put ''bnRSQjQrVTZEVmpSKzFTeHg1VkJycVpNYjM4NHdXTjBTK1pRNm0wcXZLd2QwTVRsNzJUWEdLdVJEeHIzWUh1ZmFQMzN6ZXUxeXRZWWt4OVVQWjF2NXRnTFhCR00yMTM1T1I3THFqTHJjN2ZJcitab2taNzltUzkzMXEyYXk3ejM3N2YzdFpaazdWWndwSHpmb1hVRTZtVmRSZ3lPcllqbWVNSTFW''@;'; put 'put ''dmhleEhQeFBPWnhUWjZvNmpueUZmT0JZeENWdllqSGlVTlA4QkxoWmg1Y0FBSGphYlpOWGJCeFZGSWEvMzdGMzNUWk83NzFYeDE3M3hDa3VhOGV4WXljdWNlekVTY2E3WTJmeGVoZkd1M0ZzdWdRQ0hrRHd3alBsQ1JDOUNpUjRRS0pYMFhzSDBYbWtCKy9jQ1Y0azdzTjgveG1kODU4ejk5NGhD''@;'; put 'put ''M2VkRzJBZS83TlVtMzZReFF5eXljR0huMXp5eUtlQVFnTE1wSWhaekdZT2M2ZnE1N09BaFN4aU1VdFl5aktXczRLVnJHSTFhMWpMT3RhemdZMXNZak5iMk1vMnRsUE1Ea29vSlVnWjVWUlFTUlhWMUxDVFhkU3ltejNzWlI5MTFOTkFJeUdhYUdZL0xSeWdsVFlPMGs0SGh6aE1KMTEwMDhNUmVq''@;'; put 'put ''bEtILzBjNHpnRG5PQWtwN0M0bmF1NG1wdTVnVHQ0bit1NWxxZjVtRHU1amJ0NW5tZTVoMEhDM0VpRUY3RjVqaGQ0bFpkNG1WZjRsaUhlNERWZTUxNkcrWVdiZUpzM2VZdlRmTStQWE1jRlJCbGhsQmh4YmlIQlJWeUl3eGdwa3B4aG5PODR5eVFUWE15bFhNSmozTXJsWE1ZVlhNa1AvTVRqeXRJ''@;'; put 'put ''TVpTdEhQdm41aTc4NUo1U3JQT1ZMS2xDaEFwcXBJczNTYk0zaFYzN1RYTTNUZkMzUVFpM2lkOTdSWWkzUlVpM1RjcTNnYzc3UVNxM1NhcTNSV3EzVGVtM1FSbTNpUHU3WFptM1JWbTNUZGhWcmgwcjRnei81a3E5VXFxREtWSzRLVmFwSzFhclJUdTFTclhacmovWnFIMCtvVHZWcVVDTmY4NDFD''@;'; put 'put ''dk10bmZNQ0hmTVNudk1jbmFsS3o5cXRGQjlTcU5oMVV1enAwU0lmVnFTNTFxMGRIMU1zRFBNZ2pQTXBEUE13MTNLV2pQTU9UUEtVK2ZsYS9qdW00Qm5SQ0ozVktsZ1lWVmtTMmh2eDFvMWJZU2NUOWxxR3ZidEN4ejlnK3k0Vy9MakdjaU5zamZzdlExeGkyMGtrUmc4YXBDaXZwRDNrV3RtRitL''@;'; put 'put ''SkpJV3VHd0hVL20yLzlLZjhpenNqMnJrUEd3WFJRMmh4T2pvNVpKTFJ6T0NQd3RubnZVWTR2bkV6VXNiTTJzSE1rSWZHMVdPSlcwZlRHRE50TXZadEJ1WHNaZEZMWm5lc1F6UGRwTmV0eUZ2OE9iSVdFWTZEaWRpZzliVG1vMFpxV1NnVVJtNU9zMEhSelRvVE96ZzVQWm9kTjBjQXk2VE5XWUMz''@;'; put 'put ''OHFIaTBwclF4NkxQTjFtNlNrbWFiSG15WmxtTlBqUk9QRE9hbjBNOUR6bjhsU21aRy94OXZCbEdGQmJ6anFoRk9qUXpIN2JNRjRodTdMMEJQVDJ0ZHZacHgwa2Q4L2ZkcVQwNmVkbmpoWVZ1V3lMRmpwNngxMnJLbHJOVzdRYXh6R1hlVDFScUsyWTQ5RngvTEd6NnQwWFdtb3Z0cGpqY2NHajQy''@;'; put 'put ''K1BtTTA0U0w5TmxoU0V2Ulk1ckhjWTRYSFNzTmdVM1lvNVNUY29LS3BJY2NxdG1MSmZNdWR4VWozN3FkbGtUWDkyZWs0WUowZjBDUzYzZE95d1B0OWpEYjdtdFo1VnZvMFRISXlHb3U0eWJuVzJOUWVSV3duTDJKNzZoKzNaYmNoQUFBQWVOcGo4TjdCY0NJb1lpTWpZMS9rQnNhZEhBd2NETWtG''@;'; put 'put ''R3huWW5UWkpNakpvZ1JpYmVUZ1lPU0FzTVRZd2k4TnBGN01EQXlNREo1RE42YlNMQWNwbVpuRFpxTUxZRVJpeHdhRWpZaU56aXN0R05SQnZGMGNEQXlPTFEwZHlTQVJJU1NRUWJPYmpZT1RSMnNINHYzVURTKzlHSmdhWHphd3BiQXd1TGdEK0hDVmdBQUFBQUFGWW1QWjNBQUE9KSBmb3JtYXQo''@;'; put 'put ''IndvZmYiKTtmb250LXdlaWdodDo2MDA7Zm9udC1zdHlsZTpub3JtYWx9OnJvb3R7LS1jbHItbGluay1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tNTAwKTstLWNsci1saW5rLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci1saW5r''@;'; put 'put ''LWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci1saW5rLXZpc2l0ZWQtY29sb3I6aHNsKDIzOCwgNDElLCA1MyUpOy0tY2xyLWN1c3RvbS1saW5rcy1ob3Zlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0yMDApfWh0bWx7Ym94LXNpemluZzpib3Jk''@;'; put 'put ''ZXItYm94fSosOmJlZm9yZSw6YWZ0ZXJ7Ym94LXNpemluZzppbmhlcml0fWh0bWx7LW1zLW92ZXJmbG93LXN0eWxlOnNjcm9sbGJhcjstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9aW1ne3ZlcnRpY2FsLWFsaWduOm1pZGRsZX1bcm9sZT1idXR0b25de2N1cnNvcjpw''@;'; put 'put ''b2ludGVyfWEsYXJlYSxidXR0b24sW3JvbGU9YnV0dG9uXSxpbnB1dCxsYWJlbCxzZWxlY3Qsc3VtbWFyeSx0ZXh0YXJlYXt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9ufWJ1dHRvbjpmb2N1c3tvdXRsaW5lOjJweCBzb2xpZCAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1vZmZz''@;'; put 'put ''ZXQ6MXB4fWJ1dHRvbjotbW96LWZvY3VzcmluZyxbdHlwZT1idXR0b25dOi1tb3otZm9jdXNyaW5nLFt0eXBlPXJlc2V0XTotbW96LWZvY3VzcmluZyxbdHlwZT1zdWJtaXRdOi1tb3otZm9jdXNyaW5ne291dGxpbmU6MnB4IHNvbGlkIEhpZ2hsaWdodDtvdXRsaW5lLW9mZnNldDoxcHh9aW5w''@;'; put 'put ''dXQsYnV0dG9uLHNlbGVjdCx0ZXh0YXJlYXtib3JkZXItcmFkaXVzOjB9aW5wdXRbdHlwZT1yYWRpb106ZGlzYWJsZWQsaW5wdXRbdHlwZT1jaGVja2JveF06ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkfWlucHV0W3R5cGU9ZGF0ZV0saW5wdXRbdHlwZT10aW1lXSxpbnB1dFt0eXBlPWRh''@;'; put 'put ''dGV0aW1lLWxvY2FsXSxpbnB1dFt0eXBlPW1vbnRoXXstd2Via2l0LWFwcGVhcmFuY2U6bGlzdGJveH10ZXh0YXJlYXtyZXNpemU6dmVydGljYWx9ZmllbGRzZXR7bWluLXdpZHRoOjA7cGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowfWxlZ2VuZHtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7''@;'; put 'put ''cGFkZGluZzowO2xpbmUtaGVpZ2h0OmluaGVyaXR9aW5wdXRbdHlwZT1zZWFyY2hdey13ZWJraXQtYXBwZWFyYW5jZTpub25lfVtoaWRkZW5de2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9ZGx7bWFyZ2luLWJvdHRvbTowO21hcmdpbi10b3A6MXJlbX10YWJsZXtib3JkZXItc3BhY2luZzowfWE6''@;'; put 'put ''bGlua3tjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1saW5rLWNvbG9yLCAjMDA3MmEzKTt0ZXh0LWRlY29yYXRpb246bm9uZX1hOnZpc2l0ZWR7Y29sb3I6IzU2NTliODtjb2xvcjp2YXIoLS1jbHItbGluay12aXNpdGVkLWNvbG9yLCAjNTY1OWI4KTt0ZXh0LWRlY29yYXRpb246bm9u''@;'; put 'put ''ZX1hOnZpc2l0ZWQ6aG92ZXJ7Y29sb3I6IzU2NTliODtjb2xvcjp2YXIoLS1jbHItbGluay12aXNpdGVkLWNvbG9yLWhvdmVyLCAjNTY1OWI4KX1hOmhvdmVye2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWxpbmstaG92ZXItY29sb3IsICMwMDcyYTMpO3RleHQtZGVjb3JhdGlvbjp1''@;'; put 'put ''bmRlcmxpbmV9YTphY3RpdmV7Y29sb3I6IzllNTdiYztjb2xvcjp2YXIoLS1jbHItbGluay1hY3RpdmUtY29sb3IsICM5ZTU3YmMpO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmNsci1zci1vbmx5e3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgxcHgsMXB4LDFweCwxcHgpO2NsaXAt''@;'; put 'put ''cGF0aDppbnNldCg1MCUpO3BhZGRpbmc6MDtib3JkZXI6MDtoZWlnaHQ6MXB4O3dpZHRoOjFweDtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RvcDowO2xlZnQ6MH0uYWxlcnQtaWNvbiwuY2xyLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0Oi44cmVtO3dpZHRo''@;'; put 'put ''Oi44cmVtO3BhZGRpbmc6MDtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW47dmVydGljYWwtYWxpZ246bWlkZGxlfS5hbGVydC1pY29uLmNsci1pY29uLXdhcm5pbmcsLmFsZXJ0LWljb24uaWNvbi13YXJuaW5nLC5jbHItaWNvbi5jbHItaWNvbi13''@;'; put 'put ''YXJuaW5nLC5jbHItaWNvbi5pY29uLXdhcm5pbmd7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmclMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIwdmlld0JveCUzRCUyMjUlMjA1JTIwMjYlMjAyNiUyMiUyMHByZXNlcnZlQXNwZWN0UmF0''@;'; put 'put ''aW8lM0QlMjJ4TWlkWU1pZCUyMG1lZXQlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHhtbG5zJTNBeGxpbmslM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4bGluayUyMiUzRSUzQ2RlZnMlM0UlM0NzdHlsZSUy''@;'; put 'put ''MHR5cGUlM0QlMjJ0ZXh0JTJGY3NzJTIyJTNFJTBBJTA5LmNsci1pLW91dGxpbmUlN0JmaWxsLXJ1bGUlM0FldmVub2RkJTNCY2xpcC1ydWxlJTNBZXZlbm9kZCUzQmZpbGwlM0ElMjM3NDc0NzQlM0IlN0QlM0MlMkZzdHlsZSUzRSUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0N0aXRsZSUzRWV4Y2xhbWF0aW9uLXRyaWFuZ2xlLWxpbmUlM0MlMkZ0aXRsZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BhdGglMjBjbGFzcyUzRCUyMmNsci1pLW91dGxpbmUl''@;'; put 'put ''MjBjbHItaS1vdXRsaW5lLXBhdGgtMSUyMiUyMGQlM0QlMjJNMTglMkMyMS4zMmExLjMlMkMxLjMlMkMwJTJDMCUyQzAlMkMxLjMtMS4zVjE0YTEuMyUyQzEuMyUyQzAlMkMxJTJDMC0yLjYlMkMwdjZBMS4zJTJDMS4zJTJDMCUyQzAlMkMwJTJDMTglMkMyMS4zMlolMjIlM0UlM0MlMkZwYXRo''@;'; put 'put ''JTNFJTNDY2lyY2xlJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTIlMjIlMjBjeCUzRCUyMjE3Ljk1JTIyJTIwY3klM0QlMjIyNC4yNyUyMiUyMHIlM0QlMjIxLjUlMjIlM0UlM0MlMkZjaXJjbGUlM0UlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHItaS1v''@;'; put 'put ''dXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTMlMjIlMjBkJTNEJTIyTTMwLjMzJTJDMjUuNTQlMkMyMC41OSUyQzcuNmEzJTJDMyUyQzAlMkMwJTJDMC01LjI3JTJDMEw1LjU3JTJDMjUuNTRBMyUyQzMlMkMwJTJDMCUyQzAlMkM4LjIxJTJDMzBIMjcuNjlhMyUyQzMlMkMwJTJDMCUyQzAl''@;'; put 'put ''MkMyLjY0LTQuNDNabS0xLjc4JTJDMS45NGExJTJDMSUyQzAlMkMwJTJDMS0uODYuNDlIOC4yMWExJTJDMSUyQzAlMkMwJTJDMS0uODgtMS40OEwxNy4wNyUyQzguNTVhMSUyQzElMkMwJTJDMCUyQzElMkMxLjc2JTJDMGw5Ljc0JTJDMTcuOTRBMSUyQzElMkMwJTJDMCUyQzElMkMyOC41NSUy''@;'; put 'put ''QzI3LjQ4WiUyMiUzRSUzQyUyRnBhdGglM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZzdmclM0UpfS5hbGVydC1pY29uLmNsci1pY29uLXdhcm5pbmctd2hpdGUsLmNsci1pY29uLmNsci1pY29uLXdhcm5pbmctd2hpdGV7YmFja2dyb3VuZC1pbWFnZTp1''@;'; put 'put ''cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmclMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIwdmlld0JveCUzRCUyMjUlMjA1JTIwMjYlMjAyNiUyMiUyMHByZXNlcnZlQXNwZWN0UmF0aW8lM0QlMjJ4TWlkWU1pZCUyMG1lZXQlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0El''@;'; put 'put ''MkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHhtbG5zJTNBeGxpbmslM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4bGluayUyMiUzRSUzQ2RlZnMlM0UlM0NzdHlsZSUyMHR5cGUlM0QlMjJ0ZXh0JTJGY3NzJTIyJTNFJTBBJTA5LmNsci1pLW91dGxpbmUl''@;'; put 'put ''N0JmaWxsLXJ1bGUlM0FldmVub2RkJTNCY2xpcC1ydWxlJTNBZXZlbm9kZCUzQmZpbGwlM0ElMjNmZmZmZmYlM0IlN0QlM0MlMkZzdHlsZSUzRSUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0N0aXRsZSUzRWV4Y2xhbWF0''@;'; put 'put ''aW9uLXRyaWFuZ2xlLWxpbmUlM0MlMkZ0aXRsZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BhdGglMjBjbGFzcyUzRCUyMmNsci1pLW91dGxpbmUlMjBjbHItaS1vdXRsaW5lLXBhdGgtMSUyMiUyMGQlM0QlMjJNMTglMkMyMS4zMmEx''@;'; put 'put ''LjMlMkMxLjMlMkMwJTJDMCUyQzAlMkMxLjMtMS4zVjE0YTEuMyUyQzEuMyUyQzAlMkMxJTJDMC0yLjYlMkMwdjZBMS4zJTJDMS4zJTJDMCUyQzAlMkMwJTJDMTglMkMyMS4zMlolMjIlM0UlM0MlMkZwYXRoJTNFJTNDY2lyY2xlJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIlMjIlMjBjeCUzRCUyMjE3Ljk1JTIyJTIwY3klM0QlMjIyNC4yNyUyMiUyMHIlM0QlMjIxLjUlMjIlM0UlM0MlMkZjaXJjbGUlM0UlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTMlMjIlMjBkJTNEJTIyTTMwLjMz''@;'; put 'put ''JTJDMjUuNTQlMkMyMC41OSUyQzcuNmEzJTJDMyUyQzAlMkMwJTJDMC01LjI3JTJDMEw1LjU3JTJDMjUuNTRBMyUyQzMlMkMwJTJDMCUyQzAlMkM4LjIxJTJDMzBIMjcuNjlhMyUyQzMlMkMwJTJDMCUyQzAlMkMyLjY0LTQuNDNabS0xLjc4JTJDMS45NGExJTJDMSUyQzAlMkMwJTJDMS0uODYu''@;'; put 'put ''NDlIOC4yMWExJTJDMSUyQzAlMkMwJTJDMS0uODgtMS40OEwxNy4wNyUyQzguNTVhMSUyQzElMkMwJTJDMCUyQzElMkMxLjc2JTJDMGw5Ljc0JTJDMTcuOTRBMSUyQzElMkMwJTJDMCUyQzElMkMyOC41NSUyQzI3LjQ4WiUyMiUzRSUzQyUyRnBhdGglM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZzdmclM0UpfS5hbGVydC1pY29uLmNsci12bXctbG9nbywuY2xyLWljb24uY2xyLXZtdy1sb2dve2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDM2''@;'; put 'put ''JTIwMzYlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB4bWxucyUzQXhsaW5rJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGxpbmslMjIlM0UlMEElMjAlMjAlMjAlMjAl''@;'; put 'put ''M0N0aXRsZSUzRXZtJTIwYnVnJTNDJTJGdGl0bGUlM0UlMEElMjAlMjAlMjAlMjAlM0NkZWZzJTNFJTNDJTJGZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUzQ2clMjBpZCUzRCUyMkhlYWRlcnMlMjIlMjBzdHJva2UlM0QlMjJub25lJTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMSUyMiUyMGZpbGwl''@;'; put 'put ''M0QlMjJub25lJTIyJTIwZmlsbC1ydWxlJTNEJTIyZXZlbm9kZCUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2clMjBpZCUzRCUyMkNMLUhlYWRlcnMtU3BlY3MlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUoLTI2Mi4wMDAwMDAlMkMlMjAtMTc1LjAwMDAwMCklMjIl''@;'; put 'put ''M0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NnJTIwaWQlM0QlMjIwMSUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSgyMzguMDAwMDAwJTJDJTIwMTYzLjAwMDAwMCklMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlM0NnJTIwaWQlM0QlMjJ2bS1idWclMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUoMjQuNzAzMTI1JTJDJTIwMTIuMDAwMDAwKSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBp''@;'; put 'put ''ZCUzRCUyMlJlY3RhbmdsZS00MiUyMiUyMGZpbGwtb3BhY2l0eSUzRCUyMjAuMjUlMjIlMjBmaWxsJTNEJTIyJTIzREREREREJTIyJTIwb3BhY2l0eSUzRCUyMjAuNiUyMiUyMHglM0QlMjIwJTIyJTIweSUzRCUyMjAlMjIlMjB3aWR0aCUzRCUyMjM2JTIyJTIwaGVpZ2h0JTNEJTIyMzYlMjIl''@;'; put 'put ''MjByeCUzRCUyMjMlMjIlM0UlM0MlMkZyZWN0JTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGQlM0QlMjJNNy42Mzk0ODM3NiUyQzEzLjg3NjI0MDIlMjBDNy4zMjI2NTMyNCUyQzEzLjIwOTcwODIlMjA2''@;'; put 'put ''LjUzOTc4MTUyJTJDMTIuOTA4NTEzOSUyMDUuODA5MjMwNDIlMkMxMy4yMTk5MzQlMjBDNS4wNzc3MTA0MyUyQzEzLjUzMjI4MzclMjA0LjgwOTMyNDk1JTJDMTQuMzEwMzY5MSUyMDUuMTM5NzIwMDclMkMxNC45NzY5MDExJTIwTDguMjA3MjU5NTQlMkMyMS4zNzQ0OTIzJTIwQzguNjg5Nzcy''@;'; put 'put ''MDclMkMyMi4zNzg0NzM1JTIwOS4xOTg0NDQ5MSUyQzIyLjkwMzcwNDQlMjAxMC4xNTI4MTIxJTJDMjIuOTAzNzA0NCUyMEMxMS4xNzIwOTU1JTJDMjIuOTAzNzA0NCUyMDExLjYxNjgyMDklMkMyMi4zMzEwNjMzJTIwMTIuMDk4MzY0NiUyQzIxLjM3NDQ5MjMlMjBDMTIuMDk4MzY0NiUyQzIx''@;'; put 'put ''LjM3NDQ5MjMlMjAxNC43NzQ0NjgyJTJDMTUuNzg0NzM0MSUyMDE0LjgwMTU5NzQlMkMxNS43MjYxNjg1JTIwQzE0LjgyODcyNjYlMkMxNS42NjY2NzMzJTIwMTQuOTE0OTU4OCUyQzE1LjQ4NjMyODYlMjAxNS4xODcyMTk5JTJDMTUuNDg3MjU4MiUyMEMxNS40MTc4MTgyJTJDMTUuNDkwMDQ3''@;'; put 'put ''JTIwMTUuNjEwNjI5NCUyQzE1LjY2NTc0MzclMjAxNS42MTA2Mjk0JTJDMTUuOTAxODY1MiUyMEwxNS42MTA2Mjk0JTJDMjEuMzY5ODQ0MyUyMEMxNS42MTA2Mjk0JTJDMjIuMjEyMDczJTIwMTYuMDk3OTg2NSUyQzIyLjkwMzcwNDQlMjAxNy4wMzQ5MTM0JTJDMjIuOTAzNzA0NCUyMEMxNy45''@;'; put 'put ''NzE4NDAzJTJDMjIuOTAzNzA0NCUyMDE4LjQ3ODU3NTQlMkMyMi4yMTIwNzMlMjAxOC40Nzg1NzU0JTJDMjEuMzY5ODQ0MyUyMEwxOC40Nzg1NzU0JTJDMTYuODk2NTUwMyUyMEMxOC40Nzg1NzU0JTJDMTYuMDMzODcwMiUyMDE5LjEyMTkyNTQlMkMxNS40NzQyNDM2JTIwMjAuMDAwNzE4MyUy''@;'; put 'put ''QzE1LjQ3NDI0MzYlMjBDMjAuODc4NTQyMyUyQzE1LjQ3NDI0MzYlMjAyMS40NjM3NTgzJTJDMTYuMDUyNDYyNCUyMDIxLjQ2Mzc1ODMlMkMxNi44OTY1NTAzJTIwTDIxLjQ2Mzc1ODMlMkMyMS4zNjk4NDQzJTIwQzIxLjQ2Mzc1ODMlMkMyMi4yMTIwNzMlMjAyMS45NTIwODQyJTJDMjIuOTAz''@;'; put 'put ''NzA0NCUyMDIyLjg4ODA0MjMlMkMyMi45MDM3MDQ0JTIwQzIzLjgyNDAwMDMlMkMyMi45MDM3MDQ0JTIwMjQuMzMyNjczMSUyQzIyLjIxMjA3MyUyMDI0LjMzMjY3MzElMkMyMS4zNjk4NDQzJTIwTDI0LjMzMjY3MzElMkMxNi44OTY1NTAzJTIwQzI0LjMzMjY3MzElMkMxNi4wMzM4NzAyJTIw''@;'; put 'put ''MjQuOTc1MDU0MyUyQzE1LjQ3NDI0MzYlMjAyNS44NTM4NDcyJTJDMTUuNDc0MjQzNiUyMEMyNi43MzA3MDIzJTJDMTUuNDc0MjQzNiUyMDI3LjMxNjg4NzElMkMxNi4wNTI0NjI0JTIwMjcuMzE2ODg3MSUyQzE2Ljg5NjU1MDMlMjBMMjcuMzE2ODg3MSUyQzIxLjM2OTg0NDMlMjBDMjcuMzE2''@;'; put 'put ''ODg3MSUyQzIyLjIxMjA3MyUyMDI3LjgwNTIxMzElMkMyMi45MDM3MDQ0JTIwMjguNzQyMTQlMkMyMi45MDM3MDQ0JTIwQzI5LjY3NzEyOTElMkMyMi45MDM3MDQ0JTIwMzAuMTg0ODMzMSUyQzIyLjIxMjA3MyUyMDMwLjE4NDgzMzElMkMyMS4zNjk4NDQzJTIwTDMwLjE4NDgzMzElMkMxNi4y''@;'; put 'put ''NzgzNTgyJTIwQzMwLjE4NDgzMzElMkMxNC40MDcwNDg4JTIwMjguNjE4MTIwNyUyQzEzLjA5NjI5NTYlMjAyNi43MzA3MDIzJTJDMTMuMDk2Mjk1NiUyMEMyNC44NDUyMjE2JTJDMTMuMDk2Mjk1NiUyMDIzLjY2NTEwMDYlMkMxNC4zNDc1NTM2JTIwMjMuNjY1MTAwNiUyQzE0LjM0NzU1MzYl''@;'; put 'put ''MjBDMjMuMDM3MjUzJTJDMTMuNTY2Njc5MyUyMDIyLjE3MjAyNDclMkMxMy4wOTcyMjUyJTIwMjAuNzA4OTg0NyUyQzEzLjA5NzIyNTIlMjBDMTkuMTY0NTU3JTJDMTMuMDk3MjI1MiUyMDE3LjgxMjk0MDYlMkMxNC4zNDc1NTM2JTIwMTcuODEyOTQwNiUyQzE0LjM0NzU1MzYlMjBDMTcuMTg0''@;'; put 'put ''MTI0MSUyQzEzLjU2NjY3OTMlMjAxNi4xMTU0MjY3JTJDMTMuMDk3MjI1MiUyMDE1LjIzMDgyMDQlMkMxMy4wOTcyMjUyJTIwQzEzLjg2MTc2MzglMkMxMy4wOTcyMjUyJTIwMTIuNzc0NjU3MiUyQzEzLjY3NTQ0NCUyMDEyLjExMTkyOTIlMkMxNS4xMzAyODcxJTIwTDEwLjE1MjgxMjElMkMx''@;'; put 'put ''OS41NjA4MTg5JTIwTDcuNjM5NDgzNzYlMkMxMy44NzYyNDAyJTIyJTIwaWQlM0QlMjJGaWxsLTQlMjIlMjBmaWxsJTNEJTIyJTIzRkZGRkZGJTIyJTNFJTNDJTJGcGF0aCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEEl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwQSUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEElM0MlMkZzdmclM0UiKX0uaXMtb2ZmLXNjcmVlbntwb3NpdGlvbjpmaXhlZCFpbXBvcnRhbnQ7''@;'; put 'put ''Ym9yZGVyOjAhaW1wb3J0YW50O2hlaWdodDoxcHghaW1wb3J0YW50O3dpZHRoOjFweCFpbXBvcnRhbnQ7bGVmdDowIWltcG9ydGFudDt0b3A6LWNvbnZlcnRCYXNlbGluZVRvQmFzZTIwKDEpIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O3Zpc2liaWxpdHk6aGlkZGVuIWlt''@;'; put 'put ''cG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O21hcmdpbjowIDAgLWNvbnZlcnRCYXNlbGluZVRvQmFzZTIwKDEpIDAhaW1wb3J0YW50fS5jbHItcG9wb3Zlci1jb250ZW50e3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTA1MH06cm9vdHstLWNsci1idG4tdmVydGljYWwtbWFyZ2luOi4zcmVt''@;'; put 'put ''Oy0tY2xyLWJ0bi1ob3Jpem9udGFsLW1hcmdpbjouNnJlbTstLWNsci1idG4taG9yaXpvbnRhbC1wYWRkaW5nOi42cmVtOy0tY2xyLWJ0bi12ZXJ0aWNhbC1wYWRkaW5nOjA7LS1jbHItYnRuLXBhZGRpbmc6dmFyKC0tY2xyLWJ0bi12ZXJ0aWNhbC1wYWRkaW5nKSB2YXIoLS1jbHItYnRuLWhv''@;'; put 'put ''cml6b250YWwtcGFkZGluZyk7LS1jbHItYnRuLWhlaWdodDoxLjhyZW07LS1jbHItYnRuLWhlaWdodC1zbToxLjJyZW07LS1jbHItYnRuLWZvbnQtd2VpZ2h0OjUwMDstLWNsci1idG4tYm9yZGVyLXJhZGl1czouMTVyZW07LS1jbHItYnRuLWJvcmRlci13aWR0aDouMDVyZW07LS1jbHItYnRu''@;'; put 'put ''LW91dGxpbmUtYmctY29sb3I6dHJhbnNwYXJlbnQ7LS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtbGluZS1oZWlnaHQ6MS4xNXJlbTstLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1mb250LXNpemU6LjU1cmVtOy0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWZvbnQtd2Vp''@;'; put 'put ''Z2h0OjUwMDstLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1oZWlnaHQ6MS4ycmVtOy0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLXBhZGRpbmc6MCAuNnJlbTstLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1pY29uLXNpemU6LjZyZW07LS1jbHItYnRuLWFwcGVhcmFuY2Ut''@;'; put 'put ''Zm9ybS1saW5lLWhlaWdodDoxLjhyZW07LS1jbHItYnRuLWFwcGVhcmFuY2UtZm9ybS1sZXR0ZXItc3BhY2luZzouMTJlbTstLWNsci1idG4tYXBwZWFyYW5jZS1mb3JtLWZvbnQtc2l6ZTouNnJlbTstLWNsci1idG4tYXBwZWFyYW5jZS1mb3JtLWZvbnQtd2VpZ2h0OjUwMDstLWNsci1idG4t''@;'; put 'put ''YXBwZWFyYW5jZS1mb3JtLWhlaWdodDoxLjhyZW07LS1jbHItYnRuLWFwcGVhcmFuY2UtZm9ybS1wYWRkaW5nOjAgLjZyZW07LS1jbHItYnRuLWRlZmF1bHQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLWJ0bi1kZWZhdWx0LWJvcmRlci1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''YnRuLWRlZmF1bHQtY29sb3IpOy0tY2xyLWJ0bi1kZWZhdWx0LWJnLWNvbG9yOnRyYW5zcGFyZW50Oy0tY2xyLWJ0bi1kZWZhdWx0LWhvdmVyLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNTApOy0tY2xyLWJ0bi1kZWZhdWx0LWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1h''@;'; put 'put ''Y3Rpb24tODAwKTstLWNsci1idG4tZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNTAwKTstLWNsci1idG4tZGVmYXVsdC1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLWJ0bi1kZWZhdWx0LWRpc2FibGVkLWJn''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1iZy1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTYwMCk7LS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9u''@;'; put 'put ''LTYwMCk7LS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWJvcmRlci1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtaG92ZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlv''@;'; put 'put ''bi01MCk7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1ob3Zlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTgwMCk7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1ib3gtc2hhZG93LWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNTAwKTstLWNsci1idG4tZGVmYXVsdC1vdXRs''@;'; put 'put ''aW5lLWRpc2FibGVkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1kaXNhYmxl''@;'; put 'put ''ZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWNoZWNrZWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1i''@;'; put 'put ''dG4tZGVmYXVsdC1vdXRsaW5lLWNvbG9yKTstLWNsci1idG4tcHJpbWFyeS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1idG4tcHJpbWFyeS1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCk7LS1jbHItYnRuLXByaW1hcnktYm9yZGVyLWNvbG9yOnZh''@;'; put 'put ''cigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci1idG4tcHJpbWFyeS1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTgwMCk7LS1jbHItYnRuLXByaW1hcnktaG92ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi01MCk7LS1jbHItYnRuLXByaW1hcnktYm94''@;'; put 'put ''LXNoYWRvdy1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTUwMCk7LS1jbHItYnRuLXByaW1hcnktZGlzYWJsZWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1idG4tcHJpbWFyeS1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00''@;'; put 'put ''MDApOy0tY2xyLWJ0bi1wcmltYXJ5LWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLWJ0bi1wcmltYXJ5LWNoZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLWJ0bi1wcmltYXJ5LWNoZWNrZWQtY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYnRuLXN1Y2Nlc3MtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYnRuLXN1Y2Nlc3MtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtNzAwKTstLWNsci1idG4tc3VjY2Vzcy1ib3JkZXItY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWJnLWNvbG9yKTstLWNsci1idG4tc3VjY2Vzcy1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy04MDApOy0tY2xyLWJ0bi1zdWNjZXNzLWhvdmVyLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1jb2xvcik7LS1jbHItYnRu''@;'; put 'put ''LXN1Y2Nlc3MtYm94LXNoYWRvdy1jb2xvcjp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy05MDApOy0tY2xyLWJ0bi1zdWNjZXNzLWRpc2FibGVkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYnRuLXN1Y2Nlc3MtZGlzYWJsZWQtYmctY29sb3I6dmFyKC0tY2xyLWNv''@;'; put 'put ''bG9yLW5ldXRyYWwtNDAwKTstLWNsci1idG4tc3VjY2Vzcy1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci1idG4tc3VjY2Vzcy1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1ob3Zlci1iZy1jb2xvcik7LS1jbHIt''@;'; put 'put ''YnRuLXN1Y2Nlc3MtY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtY29sb3IpOy0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtNzAwKTstLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWJnLWNvbG9yOnZhcigtLWNsci1idG4t''@;'; put 'put ''b3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtNzAwKTstLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWhvdmVyLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTUwKTstLWNsci1idG4t''@;'; put 'put ''c3VjY2Vzcy1vdXRsaW5lLWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTkwMCk7LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1ib3gtc2hhZG93LWNvbG9yOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTQwMCk7LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1kaXNhYmxlZC1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtZGlzYWJsZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtZGlzYWJsZWQtYm9yZGVyLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTYwMCk7LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWJvcmRlci1jb2xvcik7LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1jaGVja2VkLWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWJ0bi1kYW5nZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYnRuLWRhbmdlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTcwMCk7LS1jbHItYnRuLWRhbmdlci1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0''@;'; put 'put ''bi1kYW5nZXItYmctY29sb3IpOy0tY2xyLWJ0bi1kYW5nZXItaG92ZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDApOy0tY2xyLWJ0bi1kYW5nZXItaG92ZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItY29sb3IpOy0tY2xyLWJ0bi1kYW5nZXItYm94LXNoYWRvdy1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTkwMCk7LS1jbHItYnRuLWRhbmdlci1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLWJ0bi1kYW5nZXItZGlzYWJsZWQtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci1i''@;'; put 'put ''dG4tZGFuZ2VyLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLWJ0bi1kYW5nZXItY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTgwMCk7LS1jbHItYnRuLWRhbmdlci1jaGVja2VkLWNvbG9yOnZhcigtLWNsci1i''@;'; put 'put ''dG4tZGFuZ2VyLWNvbG9yKTstLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci03MDApOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGlu''@;'; put 'put ''ZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDApOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTEwMCk7LS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1k''@;'; put 'put ''YW5nZXItOTAwKTstLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtYm94LXNoYWRvdy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTIwMCk7LS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWRpc2FibGVkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYnRuLWRhbmdl''@;'; put 'put ''ci1vdXRsaW5lLWRpc2FibGVkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1kaXNhYmxlZC1jb2xvcik7LS1jbHIt''@;'; put 'put ''YnRuLWRhbmdlci1vdXRsaW5lLWNoZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDApOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1jaGVja2VkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWJ0bi13YXJuaW5nLWNvbG9yOnZhcigtLWNsci1j''@;'; put 'put ''b2xvci1uZXV0cmFsLTApOy0tY2xyLWJ0bi13YXJuaW5nLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1kYW5nZXItNzAwKTstLWNsci1idG4td2FybmluZy1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItYmctY29sb3IpOy0tY2xyLWJ0bi13YXJuaW5nLWhvdmVyLWJnLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1jb2xvci1kYW5nZXItODAwKTstLWNsci1idG4td2FybmluZy1ob3Zlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1jb2xvcik7LS1jbHItYnRuLXdhcm5pbmctYm94LXNoYWRvdy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTkwMCk7LS1jbHItYnRuLXdhcm5p''@;'; put 'put ''bmctZGlzYWJsZWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1idG4td2FybmluZy1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLWJ0bi13YXJuaW5nLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29s''@;'; put 'put ''b3ItbmV1dHJhbC00MDApOy0tY2xyLWJ0bi13YXJuaW5nLWNoZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDApOy0tY2xyLWJ0bi13YXJuaW5nLWNoZWNrZWQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItY29sb3IpOy0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUt''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci03MDApOy0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4td2FybmluZy1vdXRsaW5lLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTgw''@;'; put 'put ''MCk7LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTEwMCk7LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1ob3Zlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTkwMCk7LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1i''@;'; put 'put ''b3gtc2hhZG93LWNvbG9yOnZhcigtLWNsci1jb2xvci1kYW5nZXItMjAwKTstLWNsci1idG4td2FybmluZy1vdXRsaW5lLWRpc2FibGVkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYnRuLWRhbmdlci1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4td2FybmluZy1vdXRsaW5lLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWRpc2FibGVkLWNvbG9yKTstLWNsci1idG4td2FybmluZy1vdXRsaW5lLWNoZWNrZWQtYmctY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDApOy0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1idG4tbGluay1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCk7LS1jbHItYnRuLWxpbmstYmct''@;'; put 'put ''Y29sb3I6dHJhbnNwYXJlbnQ7LS1jbHItYnRuLWxpbmstYm9yZGVyLWNvbG9yOnRyYW5zcGFyZW50Oy0tY2xyLWJ0bi1saW5rLWhvdmVyLWJnLWNvbG9yOnRyYW5zcGFyZW50Oy0tY2xyLWJ0bi1saW5rLWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tODAwKTstLWNsci1idG4t''@;'; put 'put ''bGluay1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWJnLWNvbG9yOnRyYW5zcGFyZW50Oy0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWJvcmRlci1jb2xvcjp0cmFuc3BhcmVudDstLWNsci1idG4tbGluay1jaGVja2Vk''@;'; put 'put ''LWJnLWNvbG9yOnRyYW5zcGFyZW50Oy0tY2xyLWJ0bi1saW5rLWNoZWNrZWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi04MDApOy0tY2xyLWJ0bi1pbnZlcnNlLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWJ0bi1pbnZlcnNlLWJvcmRlci1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1idG4taW52ZXJzZS1iZy1jb2xvcjp0cmFuc3BhcmVudDstLWNsci1idG4taW52ZXJzZS1ob3Zlci1iZy1jb2xvcjpyZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNSk7LS1jbHItYnRuLWludmVyc2UtaG92ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9y''@;'; put 'put ''LW5ldXRyYWwtMCk7LS1jbHItYnRuLWludmVyc2UtYm94LXNoYWRvdy1jb2xvcjpyZ2JhKDAsIDAsIDAsIC4yNSk7LS1jbHItYnRuLWludmVyc2UtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYnRuLWludmVyc2UtZGlzYWJsZWQtYmctY29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWJ0bi1pbnZlcnNlLWJnLWNvbG9yKTstLWNsci1idG4taW52ZXJzZS1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYnRuLWludmVyc2UtY2hlY2tlZC1iZy1jb2xvcjpyZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNSk7LS1jbHItYnRu''@;'; put 'put ''LWludmVyc2UtY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1idG4taWNvbi1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtY29sb3IsICM2NjY2NjYpOy0tY2xyLWJ0bi1ncm91cC1mb2N1cy1vdXRsaW5lOiM1MWNiZWV9''@;'; put 'put ''LmJ0bntjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jazstd2Via2l0LWFwcGVhcmFuY2U6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItYnRuLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLXdpZHRoOi4wNXJl''@;'; put 'put ''bTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLWJ0bi1ib3JkZXItd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO21pbi13aWR0aDozLjZyZW07bWF4LXdpZHRoOjE4cmVtO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO292ZXJmbG93OmhpZGRlbjt0ZXh0''@;'; put 'put ''LWFsaWduOmNlbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7dmVydGljYWwtYWxpZ246bWlkZGxlO2JvcmRlci1jb2xvcjojMDA3MmEzO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtYm9yZGVyLWNvbG9yLCAjMDA3MmEzKTtiYWNr''@;'; put 'put ''Z3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWJnLWNvbG9yLCB0cmFuc3BhcmVudCk7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY29sb3IsICMwMDcyYTMpO2xpbmUtaGVpZ2h0OjEuOHJlbTts''@;'; put 'put ''aW5lLWhlaWdodDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2UtZm9ybS1saW5lLWhlaWdodCwgMS44cmVtKTtsZXR0ZXItc3BhY2luZzouMTJlbTtmb250LXNpemU6LjZyZW07Zm9udC1zaXplOnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1mb3JtLWZvbnQtc2l6ZSwgLjZyZW0pO2ZvbnQtd2Vp''@;'; put 'put ''Z2h0OjUwMDtmb250LXdlaWdodDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2UtZm9ybS1mb250LXdlaWdodCwgNTAwKTtoZWlnaHQ6MS44cmVtO2hlaWdodDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2UtZm9ybS1oZWlnaHQsIDEuOHJlbSk7cGFkZGluZzowIC42cmVtO3BhZGRpbmc6dmFyKC0t''@;'; put 'put ''Y2xyLWJ0bi1hcHBlYXJhbmNlLWZvcm0tcGFkZGluZywgMCAuNnJlbSl9LmJ0bjpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZX0uYnRuIGNkcy1pY29uLC5idG4gY2xyLWljb257Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY29sb3IsICMwMDcyYTMpfS5idG46''@;'; put 'put ''dmlzaXRlZHtjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jb2xvciwgIzAwNzJhMyl9LmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlM2Y1ZmM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtaG92ZXItYmctY29sb3IsICNlM2Y1ZmMp''@;'; put 'put ''O2NvbG9yOiMwMDU2N2E7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWhvdmVyLWNvbG9yLCAjMDA1NjdhKX0uYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjFyZW0gIzE3OWJkMyBpbnNldDtib3gtc2hhZG93OjAgLjFyZW0gMCAwIHZhcigtLWNsci1idG4tZGVmYXVsdC1ib3gtc2hhZG93''@;'; put 'put ''LWNvbG9yLCAjMTc5YmQzKSBpbnNldH0uYnRuLmRpc2FibGVkLC5idG46ZGlzYWJsZWR7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtY29sb3IsICM2NjY2NjYpO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tncm91bmQtY29sb3I6dHJh''@;'; put 'put ''bnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtYmctY29sb3IsIHRyYW5zcGFyZW50KTtib3JkZXItY29sb3I6IzhjOGM4Yztib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWRpc2FibGVkLWJvcmRlci1jb2xvciwgIzhjOGM4''@;'; put 'put ''Yyk7Ym94LXNoYWRvdzpub25lfS5idG4tZ3JvdXA+LmJ0biBjbHItaWNvbiwuYnRuIGNsci1pY29ue3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0uMXJlbSwwKX0uYnRuLWdyb3VwPi5idG4gY2RzLWljb24sLmJ0biBjZHMtaWNvbnttYXJnaW4tdG9wOi0uMTRyZW19LmJ0bi5idG4tc2Vjb25k''@;'; put 'put ''YXJ5LC5idG4uYnRuLWluZm8sLmJ0bi5idG4tb3V0bGluZSwuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUsLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUsLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5LC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5LC5idG4uYnRuLWluZm8tb3V0bGluZSwuYnRu''@;'; put 'put ''LXNlY29uZGFyeSAuYnRuLC5idG4taW5mbyAuYnRuLC5idG4tb3V0bGluZSAuYnRuLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG4sLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuLC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG4sLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAuYnRuLC5idG4taW5m''@;'; put 'put ''by1vdXRsaW5lIC5idG4sLmJ0bi1vdXRsaW5lLWluZm8gLmJ0bntib3JkZXItY29sb3I6IzAwNzJhMztib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWJvcmRlci1jb2xvciwgIzAwNzJhMyk7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZh''@;'; put 'put ''cigtLWNsci1idG4tZGVmYXVsdC1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNvbG9yLCAjMDA3MmEzKX0uYnRuLmJ0bi1zZWNvbmRhcnkgY2RzLWljb24sLmJ0bi5idG4tc2Vjb25kYXJ5IGNsci1pY29uLC5idG4uYnRu''@;'; put 'put ''LWluZm8gY2RzLWljb24sLmJ0bi5idG4taW5mbyBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUgY2xyLWljb24sLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGNkcy1pY29uLC5idG4uYnRuLXByaW1hcnktb3V0bGluZSBjbHItaWNvbiwuYnRuLmJ0''@;'; put 'put ''bi1zZWNvbmRhcnktb3V0bGluZSBjZHMtaWNvbiwuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGNkcy1p''@;'; put 'put ''Y29uLC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGNsci1pY29uLC5idG4uYnRuLWluZm8tb3V0bGluZSBjZHMtaWNvbiwuYnRuLmJ0bi1pbmZvLW91dGxpbmUgY2xyLWljb24sLmJ0bi1zZWNvbmRhcnkgLmJ0biBjZHMtaWNvbiwuYnRuLXNlY29uZGFyeSAuYnRuIGNsci1pY29uLC5idG4t''@;'; put 'put ''aW5mbyAuYnRuIGNkcy1pY29uLC5idG4taW5mbyAuYnRuIGNsci1pY29uLC5idG4tb3V0bGluZSAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0biBjbHItaWNv''@;'; put 'put ''biwuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG4gY2RzLWljb24sLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0biBjbHItaWNvbiwuYnRuLW91dGxpbmUtc2Vjb25k''@;'; put 'put ''YXJ5IC5idG4gY2RzLWljb24sLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAuYnRuIGNsci1pY29uLC5idG4taW5mby1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1pbmZvLW91dGxpbmUgLmJ0biBjbHItaWNvbiwuYnRuLW91dGxpbmUtaW5mbyAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZS1p''@;'; put 'put ''bmZvIC5idG4gY2xyLWljb257Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY29sb3IsICMwMDcyYTMpfS5idG4uYnRuLXNlY29uZGFyeTp2aXNpdGVkLC5idG4uYnRuLWluZm86dmlzaXRlZCwuYnRuLmJ0bi1vdXRsaW5lOnZpc2l0ZWQsLmJ0bi5idG4tcHJpbWFy''@;'; put 'put ''eS1vdXRsaW5lOnZpc2l0ZWQsLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmU6dmlzaXRlZCwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnk6dmlzaXRlZCwuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTp2aXNpdGVkLC5idG4uYnRuLWluZm8tb3V0bGluZTp2aXNpdGVkLC5idG4tc2Vjb25kYXJ5''@;'; put 'put ''IC5idG46dmlzaXRlZCwuYnRuLWluZm8gLmJ0bjp2aXNpdGVkLC5idG4tb3V0bGluZSAuYnRuOnZpc2l0ZWQsLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0bjp2aXNpdGVkLC5idG4tc2Vjb25kYXJ5LW91dGxpbmUgLmJ0bjp2aXNpdGVkLC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG46dmlzaXRl''@;'; put 'put ''ZCwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5idG46dmlzaXRlZCwuYnRuLWluZm8tb3V0bGluZSAuYnRuOnZpc2l0ZWQsLmJ0bi1vdXRsaW5lLWluZm8gLmJ0bjp2aXNpdGVke2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNvbG9yLCAjMDA3MmEzKX0uYnRuLmJ0''@;'; put 'put ''bi1zZWNvbmRhcnk6aG92ZXIsLmJ0bi5idG4taW5mbzpob3ZlciwuYnRuLmJ0bi1vdXRsaW5lOmhvdmVyLC5idG4uYnRuLXByaW1hcnktb3V0bGluZTpob3ZlciwuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZTpob3ZlciwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnk6aG92ZXIsLmJ0bi5idG4t''@;'; put 'put ''b3V0bGluZS1zZWNvbmRhcnk6aG92ZXIsLmJ0bi5idG4taW5mby1vdXRsaW5lOmhvdmVyLC5idG4tc2Vjb25kYXJ5IC5idG46aG92ZXIsLmJ0bi1pbmZvIC5idG46aG92ZXIsLmJ0bi1vdXRsaW5lIC5idG46aG92ZXIsLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0bjpob3ZlciwuYnRuLXNlY29u''@;'; put 'put ''ZGFyeS1vdXRsaW5lIC5idG46aG92ZXIsLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0bjpob3ZlciwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5idG46aG92ZXIsLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bjpob3ZlciwuYnRuLW91dGxpbmUtaW5mbyAuYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6''@;'; put 'put ''I2UzZjVmYztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1ob3Zlci1iZy1jb2xvciwgI2UzZjVmYyk7Y29sb3I6IzAwNTY3YTtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtaG92ZXItY29sb3IsICMwMDU2N2EpfS5idG4uYnRuLXNlY29uZGFyeTphY3RpdmUsLmJ0''@;'; put 'put ''bi5idG4taW5mbzphY3RpdmUsLmJ0bi5idG4tb3V0bGluZTphY3RpdmUsLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lOmFjdGl2ZSwuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZTphY3RpdmUsLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5OmFjdGl2ZSwuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFy''@;'; put 'put ''eTphY3RpdmUsLmJ0bi5idG4taW5mby1vdXRsaW5lOmFjdGl2ZSwuYnRuLXNlY29uZGFyeSAuYnRuOmFjdGl2ZSwuYnRuLWluZm8gLmJ0bjphY3RpdmUsLmJ0bi1vdXRsaW5lIC5idG46YWN0aXZlLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG46YWN0aXZlLC5idG4tc2Vjb25kYXJ5LW91dGxp''@;'; put 'put ''bmUgLmJ0bjphY3RpdmUsLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0bjphY3RpdmUsLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAuYnRuOmFjdGl2ZSwuYnRuLWluZm8tb3V0bGluZSAuYnRuOmFjdGl2ZSwuYnRuLW91dGxpbmUtaW5mbyAuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjFyZW0gIzE3''@;'; put 'put ''OWJkMyBpbnNldDtib3gtc2hhZG93OjAgLjFyZW0gMCAwIHZhcigtLWNsci1idG4tZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yLCAjMTc5YmQzKSBpbnNldH0uYnRuLmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQsLmJ0bi5idG4tc2Vjb25kYXJ5OmRpc2FibGVkLC5idG4uYnRuLWluZm8uZGlzYWJs''@;'; put 'put ''ZWQsLmJ0bi5idG4taW5mbzpkaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lLmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmU6ZGlzYWJsZWQsLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lLmRpc2FibGVkLC5idG4uYnRuLXByaW1hcnktb3V0bGluZTpkaXNhYmxlZCwuYnRuLmJ0bi1zZWNvbmRhcnkt''@;'; put 'put ''b3V0bGluZS5kaXNhYmxlZCwuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZTpkaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkuZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5OmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRpc2FibGVkLC5idG4uYnRu''@;'; put 'put ''LW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVkLC5idG4uYnRuLWluZm8tb3V0bGluZS5kaXNhYmxlZCwuYnRuLmJ0bi1pbmZvLW91dGxpbmU6ZGlzYWJsZWQsLmJ0bi1zZWNvbmRhcnkgLmJ0bi5kaXNhYmxlZCwuYnRuLXNlY29uZGFyeSAuYnRuOmRpc2FibGVkLC5idG4taW5mbyAuYnRuLmRp''@;'; put 'put ''c2FibGVkLC5idG4taW5mbyAuYnRuOmRpc2FibGVkLC5idG4tb3V0bGluZSAuYnRuLmRpc2FibGVkLC5idG4tb3V0bGluZSAuYnRuOmRpc2FibGVkLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG4uZGlzYWJsZWQsLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0bjpkaXNhYmxlZCwuYnRuLXNlY29u''@;'; put 'put ''ZGFyeS1vdXRsaW5lIC5idG4uZGlzYWJsZWQsLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuOmRpc2FibGVkLC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG4uZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0bjpkaXNhYmxlZCwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5idG4uZGlz''@;'; put 'put ''YWJsZWQsLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAuYnRuOmRpc2FibGVkLC5idG4taW5mby1vdXRsaW5lIC5idG4uZGlzYWJsZWQsLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bjpkaXNhYmxlZCwuYnRuLW91dGxpbmUtaW5mbyAuYnRuLmRpc2FibGVkLC5idG4tb3V0bGluZS1pbmZvIC5idG46ZGlz''@;'; put 'put ''YWJsZWR7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtY29sb3IsICM2NjY2NjYpO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1''@;'; put 'put ''bHQtZGlzYWJsZWQtYmctY29sb3IsIHRyYW5zcGFyZW50KTtib3JkZXItY29sb3I6IzhjOGM4Yztib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWRpc2FibGVkLWJvcmRlci1jb2xvciwgIzhjOGM4Yyk7Ym94LXNoYWRvdzpub25lfS5idG4uYnRuLXByaW1hcnksLmJ0bi1wcmlt''@;'; put 'put ''YXJ5IC5idG57Ym9yZGVyLWNvbG9yOiMwMDcyYTM7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1ib3JkZXItY29sb3IsICMwMDcyYTMpO2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1iZy1jb2xvciwgIzAw''@;'; put 'put ''NzJhMyk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktY29sb3IsIHdoaXRlKX0uYnRuLmJ0bi1wcmltYXJ5IGNkcy1pY29uLC5idG4uYnRuLXByaW1hcnkgY2xyLWljb24sLmJ0bi1wcmltYXJ5IC5idG4gY2RzLWljb24sLmJ0bi1wcmltYXJ5IC5idG4gY2xyLWljb257''@;'; put 'put ''Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktY29sb3IsIHdoaXRlKX0uYnRuLmJ0bi1wcmltYXJ5OnZpc2l0ZWQsLmJ0bi1wcmltYXJ5IC5idG46dmlzaXRlZHtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1jb2xvciwgd2hpdGUpfS5idG4uYnRu''@;'; put 'put ''LXByaW1hcnk6aG92ZXIsLmJ0bi1wcmltYXJ5IC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMDA1NjdhO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWhvdmVyLWJnLWNvbG9yLCAjMDA1NjdhKTtjb2xvcjojZTNmNWZjO2NvbG9yOnZhcigtLWNsci1idG4tcHJp''@;'; put 'put ''bWFyeS1ob3Zlci1jb2xvciwgI2UzZjVmYyl9LmJ0bi5idG4tcHJpbWFyeTphY3RpdmUsLmJ0bi1wcmltYXJ5IC5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMXJlbSAjMTc5YmQzIGluc2V0O2JveC1zaGFkb3c6MCAuMXJlbSAwIDAgdmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWJveC1zaGFkb3ct''@;'; put 'put ''Y29sb3IsICMxNzliZDMpIGluc2V0fS5idG4uYnRuLXByaW1hcnkuZGlzYWJsZWQsLmJ0bi5idG4tcHJpbWFyeTpkaXNhYmxlZCwuYnRuLXByaW1hcnkgLmJ0bi5kaXNhYmxlZCwuYnRuLXByaW1hcnkgLmJ0bjpkaXNhYmxlZHtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFy''@;'; put 'put ''eS1kaXNhYmxlZC1jb2xvciwgIzY2NjY2Nik7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjQ7YmFja2dyb3VuZC1jb2xvcjojY2NjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWRpc2FibGVkLWJnLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItY29sb3I6I2NjYzti''@;'; put 'put ''b3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWRpc2FibGVkLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym94LXNoYWRvdzpub25lfS5idG4uYnRuLXN1Y2Nlc3MsLmJ0bi1zdWNjZXNzIC5idG57Ym9yZGVyLWNvbG9yOiMzYzg1MDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4t''@;'; put 'put ''c3VjY2Vzcy1ib3JkZXItY29sb3IsICMzYzg1MDApO2JhY2tncm91bmQtY29sb3I6IzNjODUwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1iZy1jb2xvciwgIzNjODUwMCk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtY29sb3IsIHdoaXRl''@;'; put 'put ''KX0uYnRuLmJ0bi1zdWNjZXNzIGNkcy1pY29uLC5idG4uYnRuLXN1Y2Nlc3MgY2xyLWljb24sLmJ0bi1zdWNjZXNzIC5idG4gY2RzLWljb24sLmJ0bi1zdWNjZXNzIC5idG4gY2xyLWljb257Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtY29sb3IsIHdoaXRlKX0uYnRu''@;'; put 'put ''LmJ0bi1zdWNjZXNzOnZpc2l0ZWQsLmJ0bi1zdWNjZXNzIC5idG46dmlzaXRlZHtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1jb2xvciwgd2hpdGUpfS5idG4uYnRuLXN1Y2Nlc3M6aG92ZXIsLmJ0bi1zdWNjZXNzIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjoj''@;'; put 'put ''MzA2YjAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWhvdmVyLWJnLWNvbG9yLCAjMzA2YjAwKTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1ob3Zlci1jb2xvciwgd2hpdGUpfS5idG4uYnRuLXN1Y2Nlc3M6YWN0aXZlLC5idG4tc3VjY2Vz''@;'; put 'put ''cyAuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjFyZW0gIzI1NTIwMCBpbnNldDtib3gtc2hhZG93OjAgLjFyZW0gMCAwIHZhcigtLWNsci1idG4tc3VjY2Vzcy1ib3gtc2hhZG93LWNvbG9yLCAjMjU1MjAwKSBpbnNldH0uYnRuLmJ0bi1zdWNjZXNzLmRpc2FibGVkLC5idG4uYnRuLXN1Y2Nl''@;'; put 'put ''c3M6ZGlzYWJsZWQsLmJ0bi1zdWNjZXNzIC5idG4uZGlzYWJsZWQsLmJ0bi1zdWNjZXNzIC5idG46ZGlzYWJsZWR7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtZGlzYWJsZWQtY29sb3IsICM2NjY2NjYpO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tn''@;'; put 'put ''cm91bmQtY29sb3I6I2NjYztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1kaXNhYmxlZC1iZy1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1kaXNhYmxlZC1ib3JkZXItY29sb3IsICNjY2Nj''@;'; put 'put ''Y2MpO2JveC1zaGFkb3c6bm9uZX0uYnRuLmJ0bi13YXJuaW5nLC5idG4td2FybmluZyAuYnRue2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctYm9yZGVyLWNvbG9yLCApO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWJnLWNvbG9yLCApO2NvbG9yOnZh''@;'; put 'put ''cigtLWNsci1idG4td2FybmluZy1jb2xvciwgKX0uYnRuLmJ0bi13YXJuaW5nIGNkcy1pY29uLC5idG4uYnRuLXdhcm5pbmcgY2xyLWljb24sLmJ0bi13YXJuaW5nIC5idG4gY2RzLWljb24sLmJ0bi13YXJuaW5nIC5idG4gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWNv''@;'; put 'put ''bG9yLCApfS5idG4uYnRuLXdhcm5pbmc6dmlzaXRlZCwuYnRuLXdhcm5pbmcgLmJ0bjp2aXNpdGVke2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1jb2xvciwgKX0uYnRuLmJ0bi13YXJuaW5nOmhvdmVyLC5idG4td2FybmluZyAuYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWJ0bi13YXJuaW5nLWhvdmVyLWJnLWNvbG9yLCApO2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1ob3Zlci1jb2xvciwgKX0uYnRuLmJ0bi13YXJuaW5nOmFjdGl2ZSwuYnRuLXdhcm5pbmcgLmJ0bjphY3RpdmV7Ym94LXNoYWRvdzowIC4xcmVtIGluc2V0O2JveC1zaGFkb3c6MCAu''@;'; put 'put ''MXJlbSAwIDAgdmFyKC0tY2xyLWJ0bi13YXJuaW5nLWJveC1zaGFkb3ctY29sb3IsICkgaW5zZXR9LmJ0bi5idG4td2FybmluZy5kaXNhYmxlZCwuYnRuLmJ0bi13YXJuaW5nOmRpc2FibGVkLC5idG4td2FybmluZyAuYnRuLmRpc2FibGVkLC5idG4td2FybmluZyAuYnRuOmRpc2FibGVke2Nv''@;'; put 'put ''bG9yOnZhcigtLWNsci1idG4td2FybmluZy1kaXNhYmxlZC1jb2xvciwgKTtjdXJzb3I6bm90LWFsbG93ZWQ7b3BhY2l0eTouNDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1kaXNhYmxlZC1iZy1jb2xvciwgKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJu''@;'; put 'put ''aW5nLWRpc2FibGVkLWJvcmRlci1jb2xvciwgKTtib3gtc2hhZG93Om5vbmV9LmJ0bi5idG4tZGFuZ2VyLC5idG4tZGFuZ2VyIC5idG57Ym9yZGVyLWNvbG9yOiNkYjIxMDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWJvcmRlci1jb2xvciwgI2RiMjEwMCk7YmFja2dyb3Vu''@;'; put 'put ''ZC1jb2xvcjojZGIyMTAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItYmctY29sb3IsICNkYjIxMDApO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItY29sb3IsIHdoaXRlKX0uYnRuLmJ0bi1kYW5nZXIgY2RzLWljb24sLmJ0bi5idG4tZGFuZ2Vy''@;'; put 'put ''IGNsci1pY29uLC5idG4tZGFuZ2VyIC5idG4gY2RzLWljb24sLmJ0bi1kYW5nZXIgLmJ0biBjbHItaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWNvbG9yLCB3aGl0ZSl9LmJ0bi5idG4tZGFuZ2VyOnZpc2l0ZWQsLmJ0bi1kYW5nZXIgLmJ0bjp2aXNpdGVke2Nv''@;'; put 'put ''bG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItY29sb3IsIHdoaXRlKX0uYnRuLmJ0bi1kYW5nZXI6aG92ZXIsLmJ0bi1kYW5nZXIgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNjMjFkMDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1ob3Zlci1i''@;'; put 'put ''Zy1jb2xvciwgI2MyMWQwMCk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1ob3Zlci1jb2xvciwgd2hpdGUpfS5idG4uYnRuLWRhbmdlcjphY3RpdmUsLmJ0bi1kYW5nZXIgLmJ0bjphY3RpdmV7Ym94LXNoYWRvdzowIC4xcmVtICM5OTE3MDAgaW5zZXQ7Ym94LXNoYWRv''@;'; put 'put ''dzowIC4xcmVtIDAgMCB2YXIoLS1jbHItYnRuLWRhbmdlci1ib3gtc2hhZG93LWNvbG9yLCAjOTkxNzAwKSBpbnNldH0uYnRuLmJ0bi1kYW5nZXIuZGlzYWJsZWQsLmJ0bi5idG4tZGFuZ2VyOmRpc2FibGVkLC5idG4tZGFuZ2VyIC5idG4uZGlzYWJsZWQsLmJ0bi1kYW5nZXIgLmJ0bjpkaXNh''@;'; put 'put ''YmxlZHtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWRpc2FibGVkLWNvbG9yLCAjNjY2NjY2KTtjdXJzb3I6bm90LWFsbG93ZWQ7b3BhY2l0eTouNDtiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1kaXNhYmxl''@;'; put 'put ''ZC1iZy1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLWNvbG9yOiM2NjY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWRpc2FibGVkLWJvcmRlci1jb2xvciwgIzY2NjY2Nik7Ym94LXNoYWRvdzpub25lfS5idG4uYnRuLW91dGxpbmUsLmJ0bi5idG4tb3V0bGluZSAuYnRuLC5idG4u''@;'; put 'put ''YnRuLWluZm8tb3V0bGluZSwuYnRuLWluZm8tb3V0bGluZSAuYnRuLC5idG4uYnRuLW91dGxpbmUtaW5mbywuYnRuLW91dGxpbmUgLmJ0bntib3JkZXItY29sb3I6IzAwNzJhMztib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtYm9yZGVyLWNvbG9yLCAjMDA3MmEz''@;'; put 'put ''KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtYmctY29sb3IsIHRyYW5zcGFyZW50KTtjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWNvbG9yLCAjMDA3MmEz''@;'; put 'put ''KX0uYnRuLmJ0bi1vdXRsaW5lIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZSAuYnRuIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUgLmJ0biBjbHItaWNvbiwuYnRuLmJ0bi1pbmZvLW91dGxpbmUgY2RzLWljb24sLmJ0bi5idG4taW5mby1vdXRs''@;'; put 'put ''aW5lIGNsci1pY29uLC5idG4taW5mby1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1pbmZvLW91dGxpbmUgLmJ0biBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWluZm8gY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1pbmZvIGNsci1pY29uLC5idG4tb3V0bGluZSAuYnRuIGNkcy1pY29u''@;'; put 'put ''LC5idG4tb3V0bGluZSAuYnRuIGNsci1pY29ue2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtY29sb3IsICMwMDcyYTMpfS5idG4uYnRuLW91dGxpbmU6dmlzaXRlZCwuYnRuLmJ0bi1vdXRsaW5lIC5idG46dmlzaXRlZCwuYnRuLmJ0bi1pbmZvLW91''@;'; put 'put ''dGxpbmU6dmlzaXRlZCwuYnRuLWluZm8tb3V0bGluZSAuYnRuOnZpc2l0ZWQsLmJ0bi5idG4tb3V0bGluZS1pbmZvOnZpc2l0ZWQsLmJ0bi1vdXRsaW5lIC5idG46dmlzaXRlZHtjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWNvbG9yLCAjMDA3MmEz''@;'; put 'put ''KX0uYnRuLmJ0bi1vdXRsaW5lOmhvdmVyLC5idG4uYnRuLW91dGxpbmUgLmJ0bjpob3ZlciwuYnRuLmJ0bi1pbmZvLW91dGxpbmU6aG92ZXIsLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bjpob3ZlciwuYnRuLmJ0bi1vdXRsaW5lLWluZm86aG92ZXIsLmJ0bi1vdXRsaW5lIC5idG46aG92ZXJ7YmFj''@;'; put 'put ''a2dyb3VuZC1jb2xvcjojZTNmNWZjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtaG92ZXItYmctY29sb3IsICNlM2Y1ZmMpO2NvbG9yOiMwMDU2N2E7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtaG92ZXItY29sb3IsICMwMDU2N2Ep''@;'; put 'put ''fS5idG4uYnRuLW91dGxpbmU6YWN0aXZlLC5idG4uYnRuLW91dGxpbmUgLmJ0bjphY3RpdmUsLmJ0bi5idG4taW5mby1vdXRsaW5lOmFjdGl2ZSwuYnRuLWluZm8tb3V0bGluZSAuYnRuOmFjdGl2ZSwuYnRuLmJ0bi1vdXRsaW5lLWluZm86YWN0aXZlLC5idG4tb3V0bGluZSAuYnRuOmFjdGl2''@;'; put 'put ''ZXtib3gtc2hhZG93OjAgLjFyZW0gIzE3OWJkMyBpbnNldDtib3gtc2hhZG93OjAgLjFyZW0gMCAwIHZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWJveC1zaGFkb3ctY29sb3IsICMxNzliZDMpIGluc2V0fS5idG4uYnRuLW91dGxpbmUuZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZTpk''@;'; put 'put ''aXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lIC5idG4uZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZSAuYnRuOmRpc2FibGVkLC5idG4uYnRuLWluZm8tb3V0bGluZS5kaXNhYmxlZCwuYnRuLmJ0bi1pbmZvLW91dGxpbmU6ZGlzYWJsZWQsLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCwu''@;'; put 'put ''YnRuLWluZm8tb3V0bGluZSAuYnRuOmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lLWluZm86ZGlzYWJsZWQsLmJ0bi1vdXRsaW5lIC5idG4uZGlzYWJsZWQsLmJ0bi1vdXRsaW5lIC5idG46ZGlzYWJsZWR7Y29sb3I6IzY2Njtjb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1kaXNhYmxlZC1jb2xvciwgIzY2NjY2Nik7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWRpc2Fi''@;'; put 'put ''bGVkLWJnLWNvbG9yLCB0cmFuc3BhcmVudCk7Ym9yZGVyLWNvbG9yOiM4YzhjOGM7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWRpc2FibGVkLWJvcmRlci1jb2xvciwgIzhjOGM4Yyk7Ym94LXNoYWRvdzpub25lfS5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSwu''@;'; put 'put ''YnRuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MsLmJ0bi1zdWNjZXNzLW91dGxpbmUgLmJ0biwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRue2JvcmRlci1jb2xvcjojM2M4NTAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1ib3JkZXItY29sb3IsICMzYzg1MDApO2Jh''@;'; put 'put ''Y2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2NvbG9yOiMzYzg1MDA7Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtY29sb3IsICMzYzg1MDApfS5i''@;'; put 'put ''dG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBjZHMtaWNvbiwuYnRuLmJ0bi1zdWNjZXNzLW91dGxpbmUgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBjbHItaWNvbiwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuIGNkcy1p''@;'; put 'put ''Y29uLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgLmJ0biBjZHMtaWNvbiwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuIGNsci1pY29ue2NvbG9yOiMzYzg1MDA7Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtY29sb3Is''@;'; put 'put ''ICMzYzg1MDApfS5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZTp2aXNpdGVkLC5idG4uYnRuLW91dGxpbmUtc3VjY2Vzczp2aXNpdGVkLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG46dmlzaXRlZCwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuOnZpc2l0ZWR7Y29sb3I6IzNjODUwMDtjb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1jb2xvciwgIzNjODUwMCl9LmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lOmhvdmVyLC5idG4uYnRuLW91dGxpbmUtc3VjY2Vzczpob3ZlciwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuOmhvdmVyLC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG46''@;'; put 'put ''aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZGZmMGQwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtaG92ZXItYmctY29sb3IsICNkZmYwZDApO2NvbG9yOiMyNTUyMDA7Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtaG92ZXItY29sb3Is''@;'; put 'put ''ICMyNTUyMDApfS5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZTphY3RpdmUsLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzOmFjdGl2ZSwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuOmFjdGl2ZSwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjFyZW0gIzVlYjcx''@;'; put 'put ''NSBpbnNldDtib3gtc2hhZG93OjAgLjFyZW0gMCAwIHZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWJveC1zaGFkb3ctY29sb3IsICM1ZWI3MTUpIGluc2V0fS5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZS5kaXNhYmxlZCwuYnRuLmJ0bi1zdWNjZXNzLW91dGxpbmU6ZGlzYWJsZWQsLmJ0''@;'; put 'put ''bi5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtc3VjY2VzczpkaXNhYmxlZCwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuLmRpc2FibGVkLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG46ZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgLmJ0bi5kaXNh''@;'; put 'put ''YmxlZCwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuOmRpc2FibGVke2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtZGlzYWJsZWQtY29sb3IsICM2NjY2NjYpO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tncm91bmQtY29sb3I6dHJhbnNw''@;'; put 'put ''YXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2JvcmRlci1jb2xvcjojOGM4YzhjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1kaXNhYmxlZC1ib3JkZXIt''@;'; put 'put ''Y29sb3IsICM4YzhjOGMpO2JveC1zaGFkb3c6bm9uZX0uYnRuLmJ0bi13YXJuaW5nLW91dGxpbmUsLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nLC5idG4td2FybmluZy1vdXRsaW5lIC5idG4sLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmJ0bntib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJu''@;'; put 'put ''aW5nLW91dGxpbmUtYm9yZGVyLWNvbG9yLCApO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtYmctY29sb3IsICk7Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtY29sb3IsICl9LmJ0bi5idG4td2FybmluZy1vdXRsaW5lIGNkcy1pY29u''@;'; put 'put ''LC5idG4uYnRuLXdhcm5pbmctb3V0bGluZSBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXdhcm5pbmcgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nIGNsci1pY29uLC5idG4td2FybmluZy1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi13YXJuaW5nLW91dGxpbmUgLmJ0biBj''@;'; put 'put ''bHItaWNvbiwuYnRuLW91dGxpbmUtd2FybmluZyAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZS13YXJuaW5nIC5idG4gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtY29sb3IsICl9LmJ0bi5idG4td2FybmluZy1vdXRsaW5lOnZpc2l0ZWQsLmJ0bi5idG4t''@;'; put 'put ''b3V0bGluZS13YXJuaW5nOnZpc2l0ZWQsLmJ0bi13YXJuaW5nLW91dGxpbmUgLmJ0bjp2aXNpdGVkLC5idG4tb3V0bGluZS13YXJuaW5nIC5idG46dmlzaXRlZHtjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1jb2xvciwgKX0uYnRuLmJ0bi13YXJuaW5nLW91dGxpbmU6aG92''@;'; put 'put ''ZXIsLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nOmhvdmVyLC5idG4td2FybmluZy1vdXRsaW5lIC5idG46aG92ZXIsLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWhvdmVyLWJnLWNvbG9yLCApO2Nv''@;'; put 'put ''bG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWhvdmVyLWNvbG9yLCApfS5idG4uYnRuLXdhcm5pbmctb3V0bGluZTphY3RpdmUsLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nOmFjdGl2ZSwuYnRuLXdhcm5pbmctb3V0bGluZSAuYnRuOmFjdGl2ZSwuYnRuLW91dGxpbmUtd2Fybmlu''@;'; put 'put ''ZyAuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjFyZW0gaW5zZXQ7Ym94LXNoYWRvdzowIC4xcmVtIDAgMCB2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1ib3gtc2hhZG93LWNvbG9yLCApIGluc2V0fS5idG4uYnRuLXdhcm5pbmctb3V0bGluZS5kaXNhYmxlZCwuYnRuLmJ0bi13YXJu''@;'; put 'put ''aW5nLW91dGxpbmU6ZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nLmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtd2FybmluZzpkaXNhYmxlZCwuYnRuLXdhcm5pbmctb3V0bGluZSAuYnRuLmRpc2FibGVkLC5idG4td2FybmluZy1vdXRsaW5lIC5idG46ZGlzYWJsZWQsLmJ0bi1v''@;'; put 'put ''dXRsaW5lLXdhcm5pbmcgLmJ0bi5kaXNhYmxlZCwuYnRuLW91dGxpbmUtd2FybmluZyAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWRpc2FibGVkLWNvbG9yLCApO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tncm91bmQtY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtZGlzYWJsZWQtYmctY29sb3IsICk7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWRpc2FibGVkLWJvcmRlci1jb2xvciwgKTtib3gtc2hhZG93Om5vbmV9LmJ0bi5idG4tZGFuZ2VyLW91dGxpbmUsLmJ0bi5i''@;'; put 'put ''dG4tb3V0bGluZS1kYW5nZXIsLmJ0bi1kYW5nZXItb3V0bGluZSAuYnRuLC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0bntib3JkZXItY29sb3I6I2MyMWQwMDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1ib3JkZXItY29sb3IsICNjMjFkMDApO2JhY2tncm91bmQt''@;'; put 'put ''Y29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWJnLWNvbG9yLCB0cmFuc3BhcmVudCk7Y29sb3I6I2RiMjEwMDtjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWNvbG9yLCAjZGIyMTAwKX0uYnRuLmJ0bi1kYW5n''@;'; put 'put ''ZXItb3V0bGluZSBjZHMtaWNvbiwuYnRuLmJ0bi1kYW5nZXItb3V0bGluZSBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWRhbmdlciBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWRhbmdlciBjbHItaWNvbiwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1kYW5nZXIt''@;'; put 'put ''b3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0biBjZHMtaWNvbiwuYnRuLW91dGxpbmUtZGFuZ2VyIC5idG4gY2xyLWljb257Y29sb3I6I2RiMjEwMDtjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWNvbG9yLCAjZGIyMTAwKX0uYnRuLmJ0bi1k''@;'; put 'put ''YW5nZXItb3V0bGluZTp2aXNpdGVkLC5idG4uYnRuLW91dGxpbmUtZGFuZ2VyOnZpc2l0ZWQsLmJ0bi1kYW5nZXItb3V0bGluZSAuYnRuOnZpc2l0ZWQsLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuOnZpc2l0ZWR7Y29sb3I6I2RiMjEwMDtjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRs''@;'; put 'put ''aW5lLWNvbG9yLCAjZGIyMTAwKX0uYnRuLmJ0bi1kYW5nZXItb3V0bGluZTpob3ZlciwuYnRuLmJ0bi1vdXRsaW5lLWRhbmdlcjpob3ZlciwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG46aG92ZXIsLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2ZlZGRk''@;'; put 'put ''NztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtaG92ZXItYmctY29sb3IsICNmZWRkZDcpO2NvbG9yOiM5OTE3MDA7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1ob3Zlci1jb2xvciwgIzk5MTcwMCl9LmJ0bi5idG4tZGFuZ2VyLW91dGxp''@;'; put 'put ''bmU6YWN0aXZlLC5idG4uYnRuLW91dGxpbmUtZGFuZ2VyOmFjdGl2ZSwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG46YWN0aXZlLC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0bjphY3RpdmV7Ym94LXNoYWRvdzowIC4xcmVtICNmY2M1YmIgaW5zZXQ7Ym94LXNoYWRvdzowIC4xcmVtIDAgMCB2YXIo''@;'; put 'put ''LS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWJveC1zaGFkb3ctY29sb3IsICNmY2M1YmIpIGluc2V0fS5idG4uYnRuLWRhbmdlci1vdXRsaW5lLmRpc2FibGVkLC5idG4uYnRuLWRhbmdlci1vdXRsaW5lOmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtZGFuZ2VyLmRpc2FibGVkLC5idG4uYnRu''@;'; put 'put ''LW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkLC5idG4tZGFuZ2VyLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG46ZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuLmRpc2FibGVkLC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0bjpkaXNhYmxlZHtjb2xv''@;'; put 'put ''cjojNjY2O2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtZGlzYWJsZWQtY29sb3IsICM2NjY2NjYpO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1v''@;'; put 'put ''dXRsaW5lLWRpc2FibGVkLWJnLWNvbG9yLCB0cmFuc3BhcmVudCk7Ym9yZGVyLWNvbG9yOiM2NjY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtZGlzYWJsZWQtYm9yZGVyLWNvbG9yLCAjNjY2NjY2KTtib3gtc2hhZG93Om5vbmV9LmJ0bi5idG4tbGluaywuYnRu''@;'; put 'put ''LWxpbmsgLmJ0bntib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1ib3JkZXItY29sb3IsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWJnLWNv''@;'; put 'put ''bG9yLCB0cmFuc3BhcmVudCk7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY29sb3IsICMwMDcyYTMpfS5idG4uYnRuLWxpbmsgY2RzLWljb24sLmJ0bi5idG4tbGluayBjbHItaWNvbiwuYnRuLWxpbmsgLmJ0biBjZHMtaWNvbiwuYnRuLWxpbmsgLmJ0biBjbHItaWNv''@;'; put 'put ''bntjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1idG4tbGluay1jb2xvciwgIzAwNzJhMyl9LmJ0bi5idG4tbGluazp2aXNpdGVkLC5idG4tbGluayAuYnRuOnZpc2l0ZWR7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY29sb3IsICMwMDcyYTMpfS5idG4uYnRu''@;'; put 'put ''LWxpbms6aG92ZXIsLmJ0bi1saW5rIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1ob3Zlci1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2NvbG9yOiMwMDU2N2E7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5r''@;'; put 'put ''LWhvdmVyLWNvbG9yLCAjMDA1NjdhKX0uYnRuLmJ0bi1saW5rOmFjdGl2ZSwuYnRuLWxpbmsgLmJ0bjphY3RpdmV7Ym94LXNoYWRvdzpub25lfS5idG4uYnRuLWxpbmsuZGlzYWJsZWQsLmJ0bi5idG4tbGluazpkaXNhYmxlZCwuYnRuLWxpbmsgLmJ0bi5kaXNhYmxlZCwuYnRuLWxpbmsgLmJ0''@;'; put 'put ''bjpkaXNhYmxlZHtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1idG4tbGluay1kaXNhYmxlZC1jb2xvciwgIzY2NjY2Nik7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGlu''@;'; put 'put ''ay1kaXNhYmxlZC1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWJvcmRlci1jb2xvciwgdHJhbnNwYXJlbnQpO2JveC1zaGFkb3c6bm9uZX0uYnRuLmJ0bi1pbnZlcnNlLC5hbGVy''@;'; put 'put ''dC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biwuYnRuLWludmVyc2UgLmJ0bntib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWJvcmRlci1jb2xvciwgd2hpdGUpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xv''@;'; put 'put ''cjp2YXIoLS1jbHItYnRuLWludmVyc2UtYmctY29sb3IsIHRyYW5zcGFyZW50KTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1jb2xvciwgd2hpdGUpfS5idG4uYnRuLWludmVyc2UgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1p''@;'; put 'put ''Y29uLC5idG4uYnRuLWludmVyc2UgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5idG4taW52ZXJzZSAuYnRuIGNkcy1pY29uLC5idG4taW52ZXJzZSAuYnRuIGNsci1pY29ue2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNl''@;'; put 'put ''LWNvbG9yLCB3aGl0ZSl9LmJ0bi5idG4taW52ZXJzZTp2aXNpdGVkLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bjp2aXNpdGVkLC5idG4taW52ZXJzZSAuYnRuOnZpc2l0ZWR7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtY29sb3IsIHdoaXRlKX0uYnRu''@;'; put 'put ''LmJ0bi1pbnZlcnNlOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bjpob3ZlciwuYnRuLWludmVyc2UgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYyNjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1ob3Zlci1iZy1jb2xvciwg''@;'; put 'put ''cmdiYSgyNTUsIDI1NSwgMjU1LCAuMTUpKTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1ob3Zlci1jb2xvciwgd2hpdGUpfS5idG4uYnRuLWludmVyc2U6YWN0aXZlLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bjphY3RpdmUsLmJ0bi1pbnZlcnNlIC5i''@;'; put 'put ''dG46YWN0aXZle2JveC1zaGFkb3c6MCAuMXJlbSAjMDAwMDAwNDAgaW5zZXQ7Ym94LXNoYWRvdzowIC4xcmVtIDAgMCB2YXIoLS1jbHItYnRuLWludmVyc2UtYm94LXNoYWRvdy1jb2xvciwgcmdiYSgwLCAwLCAwLCAuMjUpKSBpbnNldH0uYnRuLmJ0bi1pbnZlcnNlLmRpc2FibGVkLC5hbGVy''@;'; put 'put ''dC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi5kaXNhYmxlZCwuYnRuLmJ0bi1pbnZlcnNlOmRpc2FibGVkLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bjpkaXNhYmxlZCwuYnRuLWludmVyc2UgLmJ0bi5kaXNhYmxlZCwuYnRuLWludmVyc2UgLmJ0bjpkaXNhYmxlZHtjb2xv''@;'; put 'put ''cjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1kaXNhYmxlZC1jb2xvciwgd2hpdGUpO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtZGlzYWJsZWQt''@;'; put 'put ''YmctY29sb3IsIHRyYW5zcGFyZW50KTtib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWRpc2FibGVkLWJvcmRlci1jb2xvciwgd2hpdGUpO2JveC1zaGFkb3c6bm9uZX0uYnRuLmJ0bi1zbSwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5i''@;'; put 'put ''dG4sLmJ0bi1zbSAuYnRue2xpbmUtaGVpZ2h0OjEuMTVyZW07bGluZS1oZWlnaHQ6dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWxpbmUtaGVpZ2h0LCAxLjE1cmVtKTtsZXR0ZXItc3BhY2luZzouMDczZW07Zm9udC1zaXplOi41NXJlbTtmb250LXNpemU6dmFyKC0tY2xyLWJ0''@;'; put 'put ''bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWZvbnQtc2l6ZSwgLjU1cmVtKTtmb250LXdlaWdodDo1MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWZvbnQtd2VpZ2h0LCA1MDApO2hlaWdodDoxLjJyZW07aGVpZ2h0OnZhcigtLWNsci1idG4tYXBwZWFyYW5j''@;'; put 'put ''ZS1zdGFuZGFyZC1oZWlnaHQsIDEuMnJlbSk7cGFkZGluZzowIC42cmVtO3BhZGRpbmc6dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLXBhZGRpbmcsIDAgLjZyZW0pfS5idG4tYmxvY2t7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlfS5idG57bWFyZ2lu''@;'; put 'put ''LXRvcDouM3JlbTttYXJnaW4tdG9wOnZhcigtLWNsci1idG4tdmVydGljYWwtbWFyZ2luLCAuM3JlbSk7bWFyZ2luLWJvdHRvbTouM3JlbTttYXJnaW4tYm90dG9tOnZhcigtLWNsci1idG4tdmVydGljYWwtbWFyZ2luLCAuM3JlbSk7bWFyZ2luLXJpZ2h0Oi42cmVtO21hcmdpbi1yaWdodDp2''@;'; put 'put ''YXIoLS1jbHItYnRuLWhvcml6b250YWwtbWFyZ2luLCAuNnJlbSk7bWFyZ2luLWxlZnQ6MH0uYnRuLmJ0bi1saW5re21hcmdpbi1yaWdodDowfS5idG4uYnRuLWxpbmsuYnRuLWludmVyc2UsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLmJ0bi1saW5re2JvcmRlci1jb2xvcjp0''@;'; put 'put ''cmFuc3BhcmVudH0uYnRuLXNtOm5vdCguYnRuLWxpbmspIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bjpub3QoLmJ0bi1saW5rKSBjbHItaWNvbnt3aWR0aDouNnJlbTt3aWR0aDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtaWNvbi1zaXplLCAu''@;'; put 'put ''NnJlbSk7aGVpZ2h0Oi42cmVtO2hlaWdodDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtaWNvbi1zaXplLCAuNnJlbSk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLS4wNXJlbSwwKX0uYnRuLXNtOm5vdCguYnRuLWxpbmspIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFs''@;'; put 'put ''ZXJ0LWl0ZW0gLmJ0bjpub3QoLmJ0bi1saW5rKSBjZHMtaWNvbnt3aWR0aDouNnJlbTt3aWR0aDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtaWNvbi1zaXplLCAuNnJlbSk7aGVpZ2h0Oi42cmVtO2hlaWdodDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtaWNv''@;'; put 'put ''bi1zaXplLCAuNnJlbSk7bWFyZ2luLXRvcDotLjFyZW19LmJ0bi1pY29ue21pbi13aWR0aDowfS5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG46ZGlzYWJsZWQgY2xyLWljb257Y29sb3I6I2NjYztjb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYnRuLWljb24tZGlzYWJsZWQtY29sb3IsICNjY2NjY2MpfS5idG4tZ3JvdXAuYnRuLXByaW1hcnkgLmRyb3Bkb3duLXRvZ2dsZSwuYnRuLWdyb3VwLmJ0bi1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGUsLmJ0bi1ncm91cC5idG4td2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLC5i''@;'; put 'put ''dG4tZ3JvdXAuYnRuLWRhbmdlciAuZHJvcGRvd24tdG9nZ2xle2JvcmRlci1jb2xvcjojMDA3MmEzO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktYm9yZGVyLWNvbG9yLCAjMDA3MmEzKTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDcyYTM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYnRuLXByaW1hcnktYmctY29sb3IsICMwMDcyYTMpO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWNvbG9yLCB3aGl0ZSl9LmJ0bi1ncm91cC5idG4tcHJpbWFyeSAuZHJvcGRvd24tdG9nZ2xlIGNkcy1pY29uLC5idG4tZ3JvdXAuYnRuLXByaW1hcnkgLmRyb3Bk''@;'; put 'put ''b3duLXRvZ2dsZSBjbHItaWNvbiwuYnRuLWdyb3VwLmJ0bi1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGUgY2RzLWljb24sLmJ0bi1ncm91cC5idG4tc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlIGNsci1pY29uLC5idG4tZ3JvdXAuYnRuLXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZSBjZHMtaWNv''@;'; put 'put ''biwuYnRuLWdyb3VwLmJ0bi13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUgY2xyLWljb24sLmJ0bi1ncm91cC5idG4tZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUgY2RzLWljb24sLmJ0bi1ncm91cC5idG4tZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUgY2xyLWljb257Y29sb3I6I2ZmZjtjb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYnRuLXByaW1hcnktY29sb3IsIHdoaXRlKX0uYnRuLWdyb3VwLmJ0bi1wcmltYXJ5IC5kcm9wZG93bi10b2dnbGU6dmlzaXRlZCwuYnRuLWdyb3VwLmJ0bi1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGU6dmlzaXRlZCwuYnRuLWdyb3VwLmJ0bi13YXJuaW5nIC5kcm9wZG93bi10''@;'; put 'put ''b2dnbGU6dmlzaXRlZCwuYnRuLWdyb3VwLmJ0bi1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZTp2aXNpdGVke2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWNvbG9yLCB3aGl0ZSl9LmJ0bi1ncm91cC5idG4tcHJpbWFyeSAuZHJvcGRvd24tdG9nZ2xlOmhvdmVyLC5idG4t''@;'; put 'put ''Z3JvdXAuYnRuLXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYnRuLWdyb3VwLmJ0bi13YXJuaW5nIC5kcm9wZG93bi10b2dnbGU6aG92ZXIsLmJ0bi1ncm91cC5idG4tZGFuZ2VyIC5kcm9wZG93bi10b2dnbGU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMDA1NjdhO2JhY2tncm91''@;'; put 'put ''bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWhvdmVyLWJnLWNvbG9yLCAjMDA1NjdhKTtjb2xvcjojZTNmNWZjO2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1ob3Zlci1jb2xvciwgI2UzZjVmYyl9LmJ0bi1ncm91cC5idG4tcHJpbWFyeSAuZHJvcGRvd24tdG9nZ2xlOmFjdGl2''@;'; put 'put ''ZSwuYnRuLWdyb3VwLmJ0bi1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGU6YWN0aXZlLC5idG4tZ3JvdXAuYnRuLXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZTphY3RpdmUsLmJ0bi1ncm91cC5idG4tZGFuZ2VyIC5kcm9wZG93bi10b2dnbGU6YWN0aXZle2JveC1zaGFkb3c6MCAuMXJlbSAjMTc5''@;'; put 'put ''YmQzIGluc2V0O2JveC1zaGFkb3c6MCAuMXJlbSAwIDAgdmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWJveC1zaGFkb3ctY29sb3IsICMxNzliZDMpIGluc2V0fS5idG4tZ3JvdXAuYnRuLXByaW1hcnkgLmRyb3Bkb3duLXRvZ2dsZS5kaXNhYmxlZCwuYnRuLWdyb3VwLmJ0bi1wcmltYXJ5IC5kcm9w''@;'; put 'put ''ZG93bi10b2dnbGU6ZGlzYWJsZWQsLmJ0bi1ncm91cC5idG4tc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmRpc2FibGVkLC5idG4tZ3JvdXAuYnRuLXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZTpkaXNhYmxlZCwuYnRuLWdyb3VwLmJ0bi13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUuZGlzYWJs''@;'; put 'put ''ZWQsLmJ0bi1ncm91cC5idG4td2FybmluZyAuZHJvcGRvd24tdG9nZ2xlOmRpc2FibGVkLC5idG4tZ3JvdXAuYnRuLWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlLmRpc2FibGVkLC5idG4tZ3JvdXAuYnRuLWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlOmRpc2FibGVke2NvbG9yOiM2NjY7Y29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWRpc2FibGVkLWNvbG9yLCAjNjY2NjY2KTtjdXJzb3I6bm90LWFsbG93ZWQ7b3BhY2l0eTouNDtiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktZGlzYWJsZWQtYmctY29sb3IsICNjY2NjY2Mp''@;'; put 'put ''O2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktZGlzYWJsZWQtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3gtc2hhZG93Om5vbmV9LmJ0bi1ncm91cC5idG4tZGFuZ2VyIDpkaXNhYmxlZHtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6''@;'; put 'put ''dmFyKC0tLS1jbHItY29sb3ItbmV1dHJhbC00MDAsICNjY2NjY2MpfS5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1ib3JkZXItY29sb3IsIHRyYW5zcGFyZW50KTtiYWNr''@;'; put 'put ''Z3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWJnLWNvbG9yLCB0cmFuc3BhcmVudCk7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY29sb3IsICMwMDcyYTMpfS5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bk''@;'; put 'put ''b3duLXRvZ2dsZSBjZHMtaWNvbiwuYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGUgY2xyLWljb257Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY29sb3IsICMwMDcyYTMpfS5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZTp2aXNpdGVk''@;'; put 'put ''e2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWNvbG9yLCAjMDA3MmEzKX0uYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1o''@;'; put 'put ''b3Zlci1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2NvbG9yOiMwMDU2N2E7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWhvdmVyLWNvbG9yLCAjMDA1NjdhKX0uYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGU6YWN0aXZle2JveC1zaGFkb3c6bm9uZX0uYnRuLWdyb3VwLmJ0bi1s''@;'; put 'put ''aW5rIC5kcm9wZG93bi10b2dnbGUuZGlzYWJsZWQsLmJ0bi1ncm91cC5idG4tbGluayAuZHJvcGRvd24tdG9nZ2xlOmRpc2FibGVke2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWNvbG9yLCAjNjY2NjY2KTtjdXJzb3I6bm90LWFsbG93ZWQ7b3BhY2l0eTou''@;'; put 'put ''NDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWJnLWNvbG9yLCB0cmFuc3BhcmVudCk7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGlzYWJsZWQt''@;'; put 'put ''Ym9yZGVyLWNvbG9yLCB0cmFuc3BhcmVudCk7Ym94LXNoYWRvdzpub25lfS5idG4tZ3JvdXAuYnRuLXNtIC5idG4tZ3JvdXAtb3ZlcmZsb3c+LmRyb3Bkb3duLXRvZ2dsZSwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tZ3JvdXAuYnRuIC5idG4tZ3JvdXAtb3ZlcmZsb3c+LmRy''@;'; put 'put ''b3Bkb3duLXRvZ2dsZXtsaW5lLWhlaWdodDoxLjE1cmVtO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1saW5lLWhlaWdodCwgMS4xNXJlbSk7bGV0dGVyLXNwYWNpbmc6LjA3M2VtO2ZvbnQtc2l6ZTouNTVyZW07Zm9udC1zaXplOnZhcigtLWNsci1idG4t''@;'; put 'put ''YXBwZWFyYW5jZS1zdGFuZGFyZC1mb250LXNpemUsIC41NXJlbSk7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1mb250LXdlaWdodCwgNTAwKTtoZWlnaHQ6MS4ycmVtO2hlaWdodDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Ut''@;'; put 'put ''c3RhbmRhcmQtaGVpZ2h0LCAxLjJyZW0pO3BhZGRpbmc6MCAuNnJlbTtwYWRkaW5nOnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1wYWRkaW5nLCAwIC42cmVtKX0uY2hlY2tib3guYnRuLC5jaGVja2JveC1pbmxpbmUuYnRuLC5yYWRpby5idG4sLnJhZGlvLWlubGluZS5idG57''@;'; put 'put ''cGFkZGluZzowfS5jaGVja2JveC5idG4gbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4gbGFiZWwsLnJhZGlvLmJ0biBsYWJlbCwucmFkaW8taW5saW5lLmJ0biBsYWJlbHtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OmluaGVyaXQ7cGFkZGluZzowIC42cmVtO2N1cnNvcjpwb2ludGVyfS5j''@;'; put 'put ''aGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YmVmb3JlLC5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YWZ0ZXIsLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YmVmb3JlLC5jaGVja2JveC1pbmxpbmUu''@;'; put 'put ''YnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmFmdGVye2NvbnRlbnQ6bm9uZX0ucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dK2xhYmVsOmJlZm9yZSwucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dK2xhYmVsOmFmdGVyLC5yYWRpby1pbmxpbmUuYnRuIGlucHV0W3R5cGU9cmFk''@;'; put 'put ''aW9dK2xhYmVsOmJlZm9yZSwucmFkaW8taW5saW5lLmJ0biBpbnB1dFt0eXBlPXJhZGlvXStsYWJlbDphZnRlcntjb250ZW50Om5vbmV9LmNoZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hl''@;'; put 'put ''Y2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0biBpbnB1dFt0eXBl''@;'; put 'put ''PWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb257YmFja2dyb3VuZC1jb2xvcjojMDA3MmEzO2NvbG9yOiNmZmZ9LmNoZWNrYm94LmJ0biBsYWJlbCwuY2hlY2tib3gt''@;'; put 'put ''aW5saW5lLmJ0biBsYWJlbHt3aWR0aDoxMDAlfS5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5j''@;'; put 'put ''aGVja2JveC5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9Y2hl''@;'; put 'put ''Y2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2ti''@;'; put 'put ''b3guYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnktb3V0bGlu''@;'; put 'put ''ZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNr''@;'; put 'put ''Ym94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCts''@;'; put 'put ''YWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5j''@;'; put 'put ''aGVja2JveC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5i''@;'; put 'put ''dG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5l''@;'; put 'put ''LXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNo''@;'; put 'put ''ZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2Vk''@;'; put 'put ''K2xhYmVsLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2Jv''@;'; put 'put ''eC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRu''@;'; put 'put ''LXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVj''@;'; put 'put ''a2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQr''@;'; put 'put ''bGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVj''@;'; put 'put ''a2JveC1pbmxpbmUuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94''@;'; put 'put ''LWlubGluZS5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1p''@;'; put 'put ''bmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5j''@;'; put 'put ''aGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNr''@;'; put 'put ''Ym94LWlubGluZS5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2Jv''@;'; put 'put ''eC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29u''@;'; put 'put ''LC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94''@;'; put 'put ''LWlubGluZS5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0''@;'; put 'put ''bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6IzAw''@;'; put 'put ''NzJhMztjb2xvcjojZmZmfS5jaGVja2JveC5idG4uYnRuLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4t''@;'; put 'put ''cHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXByaW1hcnkgaW5wdXRbdHlwZT1j''@;'; put 'put ''aGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztjb2xvcjojZmZmfS5jaGVja2JveC5idG4uYnRuLXN1''@;'; put 'put ''Y2Nlc3MgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1zdWNjZXNzIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc3VjY2VzcyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2Vk''@;'; put 'put ''K2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zdWNjZXNzIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXN1Y2Nlc3MgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hl''@;'; put 'put ''Y2tib3gtaW5saW5lLmJ0bi5idG4tc3VjY2VzcyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6IzMwNmIwMDtjb2xvcjojZmZmfS5jaGVja2JveC5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xh''@;'; put 'put ''YmVsLC5jaGVja2JveC5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0''@;'; put 'put ''bi1kYW5nZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tZGFuZ2VyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPWNo''@;'; put 'put ''ZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtjb2xvcjojZmZmfS5jaGVja2JveC5idG4uYnRuLWxpbmsgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1saW5rIGlucHV0W3R5cGU9Y2hlY2ti''@;'; put 'put ''b3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tbGluayBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1saW5rIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNr''@;'; put 'put ''Ym94LWlubGluZS5idG4uYnRuLWxpbmsgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tbGluayBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6dHJhbnNw''@;'; put 'put ''YXJlbnQ7Y29sb3I6IzAwNTY3YX0uY2hlY2tib3guYnRuLmJ0bi1pbnZlcnNlIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuY2hlY2tib3guYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNr''@;'; put 'put ''Ym94LmJ0bi5idG4taW52ZXJzZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4u''@;'; put 'put ''YnRuLWludmVyc2UgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5i''@;'; put 'put ''dG4taW52ZXJzZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW52ZXJzZSBp''@;'; put 'put ''bnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW52''@;'; put 'put ''ZXJzZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZm''@;'; put 'put ''ZmYyNjtjb2xvcjojZmZmfS5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5y''@;'; put 'put ''YWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6IzAw''@;'; put 'put ''NzJhMztjb2xvcjojZmZmfS5yYWRpby5idG4gbGFiZWwsLnJhZGlvLmJ0biBsYWJlbHt3aWR0aDoxMDAlfS5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVj''@;'; put 'put ''a2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1pbmZvIGlucHV0W3R5''@;'; put 'put ''cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1v''@;'; put 'put ''dXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVj''@;'; put 'put ''a2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4u''@;'; put 'put ''YnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1''@;'; put 'put ''dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNs''@;'; put 'put ''ci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGlu''@;'; put 'put ''ZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBl''@;'; put 'put ''PXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRp''@;'; put 'put ''by5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPXJh''@;'; put 'put ''ZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRu''@;'; put 'put ''LXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24s''@;'; put 'put ''LnJhZGlvLmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQr''@;'; put 'put ''bGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXByaW1hcnkt''@;'; put 'put ''b3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9''@;'; put 'put ''cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1p''@;'; put 'put ''Y29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJp''@;'; put 'put ''bWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hl''@;'; put 'put ''Y2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4u''@;'; put 'put ''YnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBl''@;'; put 'put ''PXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tn''@;'; put 'put ''cm91bmQtY29sb3I6IzAwNzJhMztjb2xvcjojZmZmfS5yYWRpby5idG4uYnRuLXByaW1hcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1wcmltYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4t''@;'; put 'put ''cHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1wcmltYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWlj''@;'; put 'put ''b24sLnJhZGlvLmJ0bi5idG4tcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztjb2xvcjojZmZmfS5yYWRpby5idG4uYnRuLXN1Y2Nlc3MgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8u''@;'; put 'put ''YnRuLmJ0bi1zdWNjZXNzIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXN1Y2Nlc3MgaW5wdXRbdHlwZT1yYWRpb106Y2hl''@;'; put 'put ''Y2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1zdWNjZXNzIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6IzMwNmIwMDtj''@;'; put 'put ''b2xvcjojZmZmfS5yYWRpby5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlv''@;'; put 'put ''XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWRhbmdlciBp''@;'; put 'put ''bnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtjb2xvcjojZmZmfS5yYWRpby5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXN1Y2Nlc3Mtb3V0''@;'; put 'put ''bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlv''@;'; put 'put ''XTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRp''@;'; put 'put ''by5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBpbnB1''@;'; put 'put ''dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNs''@;'; put 'put ''ci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6IzNjODUwMDtjb2xvcjojZmZmfS5yYWRpby5idG4uYnRuLWRhbmdlci1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNo''@;'; put 'put ''ZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tZGFuZ2VyLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1kYW5nZXItb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4u''@;'; put 'put ''YnRuLW91dGxpbmUtZGFuZ2VyIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1kYW5nZXIgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLWRhbmdlciBpbnB1dFt0eXBlPXJh''@;'; put 'put ''ZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWRhbmdlci1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tZGFuZ2VyLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFk''@;'; put 'put ''aW8uYnRuLmJ0bi1kYW5nZXItb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtZGFuZ2VyIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1kYW5nZXIgaW5wdXRb''@;'; put 'put ''dHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtjb2xvcjojZmZmfS5yYWRpby5idG4uYnRuLWxpbmsgaW5w''@;'; put 'put ''dXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1saW5rIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tbGluayBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRu''@;'; put 'put ''LWxpbmsgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1saW5rIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tbGluayBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tn''@;'; put 'put ''cm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6IzAwNTY3YX0ucmFkaW8uYnRuLmJ0bi1pbnZlcnNlIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWws''@;'; put 'put ''LnJhZGlvLmJ0bi5idG4taW52ZXJzZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWludmVy''@;'; put 'put ''c2UgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1pbnZlcnNlIGlucHV0W3R5cGU9cmFkaW9d''@;'; put 'put ''OmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4taW52ZXJzZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWludmVyc2UgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZm''@;'; put 'put ''ZmYyNjtjb2xvcjojZmZmfS5idG4tZ3JvdXB7ZGlzcGxheTppbmxpbmUtZmxleDttYXJnaW4tcmlnaHQ6LjZyZW19LmJ0bi1ncm91cCBjbHItZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtib3JkZXItcmFkaXVzOjB9LmJ0bi1ncm91cCBjbHItZHJvcGRvd246bGFzdC1jaGlsZCAuZHJvcGRv''@;'; put 'put ''d24tdG9nZ2xle2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOi4xNXJlbTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czouMTVyZW19LmJ0bi1ncm91cCAuYnRue21hcmdpbjowO3ZlcnRpY2FsLWFsaWduOnRvcDtvdmVyZmxvdzpoaWRkZW59LmJ0bi1ncm91cCAuYnRuIGxhYmVse2hlaWdodDox''@;'; put 'put ''MDAlfS5idG4tZ3JvdXAgLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpmb2N1cywuYnRuLWdyb3VwIC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Zm9jdXN7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lO29wYWNpdHk6MTt0b3A6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAl''@;'; put 'put ''O2JveC1zaGFkb3c6MCAwIC4yNXJlbSAjNTFjYmVlO2JveC1zaGFkb3c6MCAwIC4yNXJlbSB2YXIoLS1jbHItYnRuLWdyb3VwLWZvY3VzLW91dGxpbmUsICM1MWNiZWUpO3BhZGRpbmc6LjE1cmVtIDAgLjE1cmVtIC4xNXJlbTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci1zdHlsZTpzb2xp''@;'; put 'put ''ZDtib3JkZXItY29sb3I6IzUxY2JlZTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1ncm91cC1mb2N1cy1vdXRsaW5lLCAjNTFjYmVlKX0uYnRuLWdyb3VwIC5idG4gaW5wdXRbdHlwZT1yYWRpb106Zm9jdXM6Oi1tcy1jaGVjaywuYnRuLWdyb3VwIC5idG4gaW5wdXRbdHlwZT1jaGVja2Jv''@;'; put 'put ''eF06Zm9jdXM6Oi1tcy1jaGVja3tkaXNwbGF5Om5vbmV9LmJ0bi1ncm91cCAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmJ0bi1ncm91cCAuYnRuOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXRvcC1y''@;'; put 'put ''aWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5idG4tZ3JvdXAgLnRvb2x0aXA6bm90KDpmaXJzdC1jaGlsZCkgLmJ0bntib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5idG4tZ3JvdXAgLnRvb2x0aXA6bm90KDps''@;'; put 'put ''YXN0LWNoaWxkKSAuYnRue2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uYnRuLWdyb3VwLmJ0bi1wcmltYXJ5IC50b29sdGlwOm5vdCg6bGFzdC1jaGlsZCkgLmJ0biwuYnRuLWdyb3VwLmJ0bi1wcmltYXJ5IC5idG46bm90KDpsYXN0LWNo''@;'; put 'put ''aWxkKSwuYnRuLWdyb3VwLmJ0bi1zdWNjZXNzIC50b29sdGlwOm5vdCg6bGFzdC1jaGlsZCkgLmJ0biwuYnRuLWdyb3VwLmJ0bi1zdWNjZXNzIC5idG46bm90KDpsYXN0LWNoaWxkKSwuYnRuLWdyb3VwLmJ0bi1kYW5nZXIgLnRvb2x0aXA6bm90KDpsYXN0LWNoaWxkKSAuYnRuLC5idG4tZ3Jv''@;'; put 'put ''dXAuYnRuLWRhbmdlciAuYnRuOm5vdCg6bGFzdC1jaGlsZCksLmJ0bi1ncm91cC5idG4td2FybmluZyAudG9vbHRpcDpub3QoOmxhc3QtY2hpbGQpIC5idG4sLmJ0bi1ncm91cC5idG4td2FybmluZyAuYnRuOm5vdCg6bGFzdC1jaGlsZCl7bWFyZ2luOjA7bWFyZ2luLXJpZ2h0Oi4wNXJlbTtt''@;'; put 'put ''YXJnaW4tcmlnaHQ6dmFyKC0tY2xyLWJ0bi1ib3JkZXItd2lkdGgsIC4wNXJlbSl9LmJ0bi1ncm91cC5idG4tcHJpbWFyeSAuZHJvcGRvd24tbWVudSAuYnRuLC5idG4tZ3JvdXAuYnRuLXN1Y2Nlc3MgLmRyb3Bkb3duLW1lbnUgLmJ0biwuYnRuLWdyb3VwLmJ0bi1kYW5nZXIgLmRyb3Bkb3du''@;'; put 'put ''LW1lbnUgLmJ0biwuYnRuLWdyb3VwLmJ0bi13YXJuaW5nIC5kcm9wZG93bi1tZW51IC5idG57bWFyZ2luOjB9LmJ0bi1ncm91cD4uYnRuLWdyb3VwLW92ZXJmbG93e3Bvc2l0aW9uOnJlbGF0aXZlfS5idG4tZ3JvdXA+LmJ0bi1ncm91cC1vdmVyZmxvdzpsYXN0LWNoaWxkOm5vdCg6Zmlyc3Qt''@;'; put 'put ''Y2hpbGQpPi5idG46Zmlyc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItYnRuLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uYnRuLWdyb3VwPi5idG4t''@;'; put 'put ''Z3JvdXAtb3ZlcmZsb3c6bGFzdC1jaGlsZDpmaXJzdC1jaGlsZD4uYnRuOmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWJ0bi1ib3JkZXItcmFkaXVzLCAuMTVyZW0pfS5idG4tZ3JvdXAgLmJ0bisuYnRue2JvcmRlci1sZWZ0Om5vbmV9''@;'; put 'put ''LmJ0bi1ncm91cCAudG9vbHRpcDpub3QoOmZpcnN0LWNoaWxkKSAuYnRue2JvcmRlci1sZWZ0Om5vbmV9LmJ0bi1ncm91cCAuYnRuKy5idG4tZ3JvdXAtb3ZlcmZsb3cgLmJ0bntib3JkZXItbGVmdDpub25lfS5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZSwuYnRuLWdyb3Vw''@;'; put 'put ''LmJ0bi1pY29uLWxpbmsuYnRuLWxpbmsgLmJ0biwuYnRuLWdyb3VwLmJ0bi1pY29uIC5idG57bWluLXdpZHRoOjB9LmJ0bi1ncm91cCAuY2xyLWljb24tdGl0bGV7ZGlzcGxheTpub25lO3RleHQtdHJhbnNmb3JtOm5vbmV9LmJ0bi1ncm91cCAuZHJvcGRvd24tdG9nZ2xle2Rpc3BsYXk6Ymxv''@;'; put 'put ''Y2t9LmJ0bi1ncm91cCAuZHJvcGRvd24tbWVudSBjZHMtaWNvbiwuYnRuLWdyb3VwIC5kcm9wZG93bi1tZW51IGNsci1pY29ue2Rpc3BsYXk6bm9uZX0uYnRuLWdyb3VwIC5kcm9wZG93bi1tZW51IC5jbHItaWNvbi10aXRsZXtkaXNwbGF5OmlubGluZX0uY2hlY2tib3gsLnJhZGlve3Bvc2l0''@;'; put 'put ''aW9uOnJlbGF0aXZlfS5jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSwuY2hlY2tib3ggaW5wdXRbdHlwZT1yYWRpb10sLnJhZGlvIGlucHV0W3R5cGU9Y2hlY2tib3hdLC5yYWRpbyBpbnB1dFt0eXBlPXJhZGlvXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjA7''@;'; put 'put ''d2lkdGg6MDtvcGFjaXR5OjB9LmNhcmQtZm9vdGVyIC5jaGVja2JveC5idG4gbGFiZWwsLmNhcmQtZm9vdGVyIC5yYWRpby5idG4gbGFiZWx7bGluZS1oZWlnaHQ6MS4xNXJlbX0uZHJvcGRvd24tbWVudS5jbHItYnV0dG9uLWdyb3VwLW1lbnV7dmlzaWJpbGl0eTp2aXNpYmxlfWJ1dHRvbi5j''@;'; put 'put ''bG9zZXtwYWRkaW5nOjA7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9LmNsb3Nle2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToxLjhyZW07dHJhbnNpdGlvbjpjb2xvciBsaW5lYXIgLjJzO2ZvbnQtd2VpZ2h0OjIwMDt0ZXh0LXNo''@;'; put 'put ''YWRvdzpub25lO2xpbmUtaGVpZ2h0OmluaGVyaXQ7Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItY2xvc2UtY29sb3ItLW5vcm1hbCwgIzhjOGM4Yyl9LmNsb3NlIGNkcy1pY29uLC5jbG9zZSBjbHItaWNvbntmaWxsOiM4YzhjOGM7ZmlsbDp2YXIoLS1jbHItY2xvc2UtY29sb3ItLW5v''@;'; put 'put ''cm1hbCwgIzhjOGM4Yyl9LmNsb3NlOmZvY3VzLC5jbG9zZTpob3ZlciwuY2xvc2U6YWN0aXZle29wYWNpdHk6MTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1jbG9zZS1jb2xvci0taG92ZXIsIGJsYWNrKX0uY2xvc2U6Zm9jdXMgY2RzLWljb24sLmNsb3NlOmZvY3VzIGNsci1pY29uLC5j''@;'; put 'put ''bG9zZTpob3ZlciBjZHMtaWNvbiwuY2xvc2U6aG92ZXIgY2xyLWljb24sLmNsb3NlOmFjdGl2ZSBjZHMtaWNvbiwuY2xvc2U6YWN0aXZlIGNsci1pY29ue2ZpbGw6IzAwMDtmaWxsOnZhcigtLWNsci1jbG9zZS1jb2xvci0taG92ZXIsIGJsYWNrKX0uY2xvc2U6Zm9jdXN7b3V0bGluZTpIaWdo''@;'; put 'put ''bGlnaHQgc29saWQgLjFyZW07b3V0bGluZTotd2Via2l0LWZvY3VzLXJpbmctY29sb3Igc29saWQgLjFyZW07b3V0bGluZS1vZmZzZXQ6LjA1cmVtfTpyb290ey0tY2xyLWFsZXJ0LWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLWFsZXJ0LWFjdGlvbi1h''@;'; put 'put ''Y3RpdmUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tOTAwKTstLWNsci1hbGVydC1jbG9zZS1pY29uLWNvbG9yOnZhcigtLWNsci1hbGVydC1hY3Rpb24tY29sb3IpOy0tY2xyLWFsZXJ0LWNsb3NlLWljb24taG92ZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlv''@;'; put 'put ''bi1hY3RpdmUtY29sb3IpOy0tY2xyLWFsZXJ0LWNsb3NlLWljb24tb3BhY2l0eToxOy0tY2xyLWFsZXJ0LWNsb3NlLWljb24taG92ZXItb3BhY2l0eToxOy0tY2xyLWFwcC1sZXZlbC1hbGVydC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1hcHAtYWxlcnQtY2xvc2Ut''@;'; put 'put ''aWNvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWxldmVsLWFsZXJ0LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1vcGFjaXR5Oi44Oy0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHk6MTstLWNsci1hbGVydC1ib3JkZXJyYWRpdXM6dmFyKC0tY2xyLWdsb2Jh''@;'; put 'put ''bC1ib3JkZXJyYWRpdXMpOy0tY2xyLWFsZXJ0LWluZm8tYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi01MCk7LS1jbHItYWxlcnQtaW5mby1mb250LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYWxlcnQtaW5mby1ib3JkZXItY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWNvbG9yLWFjdGlvbi04MDApOy0tY2xyLWFsZXJ0LWluZm8taWNvbi1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTgwMCk7LS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1jb2xvcik7LS1jbHItYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZl''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci1hbGVydC1hY3Rpb24tYWN0aXZlLWNvbG9yKTstLWNsci1hbGVydC1pbmZvLWNsb3NlLWljb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWNsb3NlLWljb24tY29sb3IpOy0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1vcGFjaXR5OnZhcigtLWNsci1hbGVydC1j''@;'; put 'put ''bG9zZS1pY29uLW9wYWNpdHkpOy0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1ob3Zlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtY2xvc2UtaWNvbi1ob3Zlci1jb2xvcik7LS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LWNsb3NlLWlj''@;'; put 'put ''b24taG92ZXItb3BhY2l0eSk7LS1jbHItYWxlcnQtc3VjY2Vzcy1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy01MCk7LS1jbHItYWxlcnQtc3VjY2Vzcy1mb250LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYWxlcnQtc3VjY2Vzcy1ib3JkZXItY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtODAwKTstLWNsci1hbGVydC1zdWNjZXNzLWljb24tY29sb3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtODAwKTstLWNsci1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtYWN0aW9uLWNvbG9yKTstLWNsci1hbGVy''@;'; put 'put ''dC1zdWNjZXNzLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1hY3RpdmUtY29sb3IpOy0tY2xyLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7LS1jbHItYWxlcnQtc3VjY2Vzcy1jbG9zZS1p''@;'; put 'put ''Y29uLW9wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LWNsb3NlLWljb24tb3BhY2l0eSk7LS1jbHItYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKTstLWNsci1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24taG92''@;'; put 'put ''ZXItb3BhY2l0eTp2YXIoLS1jbHItYWxlcnQtY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5KTstLWNsci1hbGVydC13YXJuaW5nLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci13YXJuaW5nLTEwMCk7LS1jbHItYWxlcnQtd2FybmluZy1mb250LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFs''@;'; put 'put ''LTkwMCk7LS1jbHItYWxlcnQtd2FybmluZy1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLXdhcm5pbmctODAwKTstLWNsci1hbGVydC13YXJuaW5nLWljb24tY29sb3I6dmFyKC0tY2xyLWNvbG9yLXdhcm5pbmctODAwKTstLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItYWxlcnQtYWN0aW9uLWNvbG9yKTstLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1hY3RpdmUtY29sb3IpOy0tY2xyLWFsZXJ0LXdhcm5pbmctY2xvc2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtY2xvc2UtaWNv''@;'; put 'put ''bi1jb2xvcik7LS1jbHItYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLW9wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LWNsb3NlLWljb24tb3BhY2l0eSk7LS1jbHItYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLWhvdmVyLWNvbG9y''@;'; put 'put ''KTstLWNsci1hbGVydC13YXJuaW5nLWNsb3NlLWljb24taG92ZXItb3BhY2l0eTp2YXIoLS1jbHItYWxlcnQtY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5KTstLWNsci1hbGVydC1kYW5nZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci0xMDApOy0tY2xyLWFsZXJ0LWRhbmdlci1m''@;'; put 'put ''b250LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYWxlcnQtZGFuZ2VyLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTkwMCk7LS1jbHItYWxlcnQtZGFuZ2VyLWljb24tY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci05MDApOy0tY2xyLWFs''@;'; put 'put ''ZXJ0LWRhbmdlci1hY3Rpb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1jb2xvcik7LS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1hY3RpdmUtY29sb3IpOy0tY2xyLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLWNvbG9yKTstLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1vcGFjaXR5OnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLW9wYWNpdHkpOy0tY2xyLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hbGVy''@;'; put 'put ''dC1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKTstLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5OnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHkpOy0tY2xyLWFwcC1hbGVydC1pbmZvLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24t''@;'; put 'put ''NjAwKTstLWNsci1hcHAtYWxlcnQtaW5mby1mb250LWNvbG9yOnZhcigtLWNsci1hcHAtbGV2ZWwtYWxlcnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1pbmZvLWJvcmRlci1jb2xvcjpub25lOy0tY2xyLWFwcC1hbGVydC1pbmZvLWljb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9z''@;'; put 'put ''ZS1pY29uLWNvbG9yKTstLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWZvbnQtY29sb3IpOy0t''@;'; put 'put ''Y2xyLWFwcC1hbGVydC1pbmZvLWNsb3NlLWljb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWNvbG9yKTstLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLW9wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLW9wYWNpdHkpOy0tY2xyLWFwcC1h''@;'; put 'put ''bGVydC1pbmZvLWNsb3NlLWljb24taG92ZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWNvbG9yKTstLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHkpOy0t''@;'; put 'put ''Y2xyLWFwcC1hbGVydC13YXJuaW5nLWJnLWNvbG9yOmhzbCgyNiwgMTAwJSwgMzglKTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1ib3JkZXItY29sb3I6bm9uZTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1pY29uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7''@;'; put 'put ''LS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctZm9udC1jb2xvcjp2YXIoLS1jbHItYXBwLWxldmVsLWFsZXJ0LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXdh''@;'; put 'put ''cm5pbmctYWN0aW9uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1hY3Rpb24tYWN0aXZlLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtd2Fybmlu''@;'; put 'put ''Zy1jbG9zZS1pY29uLW9wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLW9wYWNpdHkpOy0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWNsb3NlLWljb24taG92ZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWNvbG9yKTstLWNsci1hcHAtYWxlcnQtd2Fy''@;'; put 'put ''bmluZy1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHkpOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDApOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItYm9yZGVy''@;'; put 'put ''LWNvbG9yOm5vbmU7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1pY29uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yOnZhcigtLWNsci1hcHAtbGV2ZWwtYWxlcnQtY29sb3IpOy0tY2xyLWFwcC1hbGVy''@;'; put 'put ''dC1kYW5nZXItY2xvc2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWNsb3NlLWljb24tY29sb3IpOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0''@;'; put 'put ''aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWNsb3NlLWljb24tb3BhY2l0eTp2YXIoLS1jbHItYXBwLWFsZXJ0LWNsb3NlLWljb24tb3BhY2l0eSk7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1jbG9z''@;'; put 'put ''ZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHkpOy0tY2xyLWFwcC1hbGVy''@;'; put 'put ''dC1zdWNjZXNzLWJvcmRlci1jb2xvcjpub25lOy0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTcwMCk7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtaWNvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWNsb3NlLWljb24tY29sb3IpOy0t''@;'; put 'put ''Y2xyLWFwcC1hbGVydC1zdWNjZXNzLWZvbnQtY29sb3I6dmFyKC0tY2xyLWFwcC1sZXZlbC1hbGVydC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWNsb3NlLWljb24tY29sb3IpOy0tY2xyLWFwcC1hbGVydC1zdWNj''@;'; put 'put ''ZXNzLWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3Mt''@;'; put 'put ''Y2xvc2UtaWNvbi1vcGFjaXR5OnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1vcGFjaXR5KTstLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nl''@;'; put 'put ''c3MtY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5OnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5KTstLWNsci1hcHAtYWxlcnQtcGFnZXItdGV4dC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wLCB3aGl0ZSk7LS1jbHItYXBwLWFsZXJ0LWluZm8tcGFn''@;'; put 'put ''ZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi04MDAsICMwMDU2N2EpOy0tY2xyLWFwcC1hbGVydC13YXJuaW5nLXBhZ2VyLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci13YXJuaW5nLTkwMCwgIzhmNWEwMCk7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1wYWdlci1iZy1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItY29sb3ItZGFuZ2VyLTkwMCwgIzk5MTcwMCl9LmFsZXJ0LWljb257aGVpZ2h0OjEuMnJlbTt3aWR0aDoxLjJyZW07bWFyZ2luLWxlZnQ6LS4xNXJlbTttYXJnaW4tdG9wOi0uMnJlbX0uYWxlcnQtaWNvbi13cmFwcGVye2ZsZXg6MCAwIDEuMjVyZW07YWxpZ24tc2VsZjpzdGFy''@;'; put 'put ''dDtwYWRkaW5nLXRvcDouMDVyZW07aGVpZ2h0Oi45cmVtfS5hbGVydC1pdGVte2ZsZXg6MSAxIGF1dG87ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDpub3dyYXA7bWluLWhlaWdodDouOXJlbTttYXJnaW4tYm90dG9tOi4zcmVtfS5hbGVydC1pdGVtOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTow''@;'; put 'put ''fS5hbGVydC1pdGVtc3tmbGV4OjEgMSBhdXRvO2ZsZXgtZmxvdzpjb2x1bW4gbm93cmFwO3BhZGRpbmc6LjVyZW0gLjU1cmVtO2Rpc3BsYXk6ZmxleH0uYWxlcnQtaXRlbT5zcGFuLC5hbGVydC10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO2ZsZXgtc2hyaW5rOjE7Zmxl''@;'; put 'put ''eC1iYXNpczo5OCU7bWF4LXdpZHRoOjk4JTttYXJnaW4tcmlnaHQ6LjZyZW07dGV4dC1hbGlnbjpsZWZ0fS5hbGVydHtmb250LXNpemU6LjY1cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDouOXJlbTtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7''@;'; put 'put ''ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdzt3aWR0aDphdXRvO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWFsZXJ0LWJvcmRlcnJhZGl1cywgLjE1cmVtKTttYXJnaW4tdG9wOi4zcmVtO2JhY2tncm91bmQ6I2UzZjVmYztiYWNrZ3JvdW5kOnZh''@;'; put 'put ''cigtLWNsci1hbGVydC1pbmZvLWJnLWNvbG9yLCAjZTNmNWZjKTtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWZvbnQtY29sb3IsICM2NjY2NjYpO2JvcmRlcjouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiMwMDU2N2E7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVy''@;'; put 'put ''dC1pbmZvLWJvcmRlci1jb2xvciwgIzAwNTY3YSl9LmFsZXJ0IC5hbGVydC1pY29ue2NvbG9yOiMwMDU2N2E7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8taWNvbi1jb2xvciwgIzAwNTY3YSl9LmFsZXJ0IC5hbGVydC1hY3Rpb25zIC5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xle2NvbG9y''@;'; put 'put ''OiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yLCAjNjY2NjY2KTtib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQgLmFsZXJ0LWFjdGlvbiwuYWxlcnQgLmRyb3Bk''@;'; put 'put ''b3duLXRvZ2dsZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWFjdGlvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0IC5hbGVydC1hY3Rpb24uYnRuLC5hbGVydCAuZHJvcGRvd24tdG9nZ2xlLmJ0bntib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQgLmFsZXJ0LWFjdGlvbi5idG46Zm9jdXMsLmFsZXJ0IC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydCAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUsLmFsZXJ0IC5kcm9wZG93bi10b2dnbGUuYnRuOmZvY3VzLC5h''@;'; put 'put ''bGVydCAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpob3ZlciwuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JvcmRlci1jb2xvcjojNGYwMDcwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZlLWNvbG9yLCAjNGYwMDcwKX0uYWxlcnQgLmFsZXJ0''@;'; put 'put ''LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydCAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Ym94LXNoYWRvdzowIC4wNXJlbSAjNGYwMDcwIGluc2V0O2JveC1zaGFkb3c6MCAuMDVyZW0gMCAwIHZhcigtLWNsci1hbGVydC1pbmZvLWFjdGlvbi1hY3RpdmUtY29sb3IsICM0ZjAwNzApIGlu''@;'; put 'put ''c2V0fS5hbGVydCAuYWxlcnQtYWN0aW9uOmZvY3VzLC5hbGVydCAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVydCAuYWxlcnQtYWN0aW9uOmFjdGl2ZSwuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cywuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQgLmRyb3Bkb3duLXRv''@;'; put 'put ''Z2dsZTphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWFjdGl2ZS1jb2xvciwgIzRmMDA3MCk7Y29sb3I6IzRmMDA3MH0uYWxlcnQgLmNsb3Nle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvciwgIzY2NjY2Nik7b3Bh''@;'; put 'put ''Y2l0eToxO29wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1vcGFjaXR5LCAxKX0uYWxlcnQgLmNsb3NlIGNkcy1pY29uLC5hbGVydCAuY2xvc2UgY2xyLWljb257ZmlsbDojNjY2O2ZpbGw6dmFyKC0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvciwgIzY2NjY2''@;'; put 'put ''Nil9LmFsZXJ0IC5jbG9zZTpmb2N1cywuYWxlcnQgLmNsb3NlOmhvdmVyLC5hbGVydCAuY2xvc2U6YWN0aXZle2NvbG9yOiM0ZjAwNzA7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1ob3Zlci1jb2xvciwgIzRmMDA3MCk7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xy''@;'; put 'put ''LWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5LCAxKX0uYWxlcnQuYWxlcnQtaW5mb3tiYWNrZ3JvdW5kOiNlM2Y1ZmM7YmFja2dyb3VuZDp2YXIoLS1jbHItYWxlcnQtaW5mby1iZy1jb2xvciwgI2UzZjVmYyk7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5m''@;'; put 'put ''by1mb250LWNvbG9yLCAjNjY2NjY2KTtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojMDA1NjdhO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1ib3JkZXItY29sb3IsICMwMDU2N2EpfS5hbGVydC5hbGVydC1pbmZvIC5hbGVydC1pY29ue2NvbG9yOiMwMDU2N2E7''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8taWNvbi1jb2xvciwgIzAwNTY3YSl9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3IsICM2NjY2''@;'; put 'put ''NjYpO2JvcmRlci1jb2xvcjojNjY2O2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3IsICM2NjY2NjYpfS5hbGVydC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24sLmFsZXJ0LmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojNjY2O2NvbG9yOnZh''@;'; put 'put ''cigtLWNsci1hbGVydC1pbmZvLWFjdGlvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG4sLmFsZXJ0LmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOiM2NjY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1p''@;'; put 'put ''bmZvLWFjdGlvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG46Zm9jdXMsLmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG46aG92ZXIsLmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC5hbGVy''@;'; put 'put ''dC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuOmZvY3VzLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuOmhvdmVyLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3JkZXItY29sb3I6IzRmMDA3MDtib3JkZXItY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWFsZXJ0LWluZm8tYWN0aW9uLWFjdGl2ZS1jb2xvciwgIzRmMDA3MCl9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjA1cmVtICM0ZjAwNzAgaW5z''@;'; put 'put ''ZXQ7Ym94LXNoYWRvdzowIC4wNXJlbSAwIDAgdmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWFjdGl2ZS1jb2xvciwgIzRmMDA3MCkgaW5zZXR9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbjpmb2N1cywuYWxlcnQuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVy''@;'; put 'put ''dC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb246YWN0aXZlLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGU6Zm9jdXMsLmFsZXJ0LmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQuYWxlcnQtaW5mbyAuZHJvcGRvd24tdG9nZ2xlOmFjdGl2ZXtjb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZlLWNvbG9yLCAjNGYwMDcwKTtjb2xvcjojNGYwMDcwfS5hbGVydC5hbGVydC1pbmZvIC5jbG9zZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWNsb3NlLWljb24tY29sb3IsICM2NjY2NjYpO29wYWNpdHk6MTtv''@;'; put 'put ''cGFjaXR5OnZhcigtLWNsci1hbGVydC1pbmZvLWNsb3NlLWljb24tb3BhY2l0eSwgMSl9LmFsZXJ0LmFsZXJ0LWluZm8gLmNsb3NlIGNkcy1pY29uLC5hbGVydC5hbGVydC1pbmZvIC5jbG9zZSBjbHItaWNvbntmaWxsOiM2NjY7ZmlsbDp2YXIoLS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29u''@;'; put 'put ''LWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQuYWxlcnQtaW5mbyAuY2xvc2U6Zm9jdXMsLmFsZXJ0LmFsZXJ0LWluZm8gLmNsb3NlOmhvdmVyLC5hbGVydC5hbGVydC1pbmZvIC5jbG9zZTphY3RpdmV7Y29sb3I6IzRmMDA3MDtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWhv''@;'; put 'put ''dmVyLWNvbG9yLCAjNGYwMDcwKTtvcGFjaXR5OjE7b3BhY2l0eTp2YXIoLS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHksIDEpfS5hbGVydC5hbGVydC1zdWNjZXNze2JhY2tncm91bmQ6I2RmZjBkMDtiYWNrZ3JvdW5kOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWJn''@;'; put 'put ''LWNvbG9yLCAjZGZmMGQwKTtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWZvbnQtY29sb3IsICM2NjY2NjYpO2JvcmRlcjouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiMzMDZiMDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWJvcmRlci1j''@;'; put 'put ''b2xvciwgIzMwNmIwMCl9LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWljb257Y29sb3I6IzMwNmIwMDtjb2xvcjp2YXIoLS1jbHItYWxlcnQtc3VjY2Vzcy1pY29uLWNvbG9yLCAjMzA2YjAwKX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRyb3Bk''@;'; put 'put ''b3duLXRvZ2dsZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvciwgIzY2NjY2Nik7Ym9yZGVyLWNvbG9yOiM2NjY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0''@;'; put 'put ''LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbiwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0biwu''@;'; put 'put ''YWxlcnQuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0bntib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0bjpmb2N1cywu''@;'; put 'put ''YWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0bjpob3ZlciwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG46Zm9jdXMsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bk''@;'; put 'put ''b3duLXRvZ2dsZS5idG46aG92ZXIsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JvcmRlci1jb2xvcjojNGYwMDcwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtc3VjY2Vzcy1hY3Rpb24tYWN0aXZlLWNvbG9yLCAjNGYwMDcwKX0uYWxlcnQu''@;'; put 'put ''YWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gIzRmMDA3MCBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItYWxlcnQtc3Vj''@;'; put 'put ''Y2Vzcy1hY3Rpb24tYWN0aXZlLWNvbG9yLCAjNGYwMDcwKSBpbnNldH0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uOmZvY3VzLC5hbGVydC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb246aG92ZXIsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbjphY3RpdmUs''@;'; put 'put ''LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cywuYWxlcnQuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlOmhvdmVyLC5hbGVydC5hbGVydC1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGU6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWFj''@;'; put 'put ''dGlvbi1hY3RpdmUtY29sb3IsICM0ZjAwNzApO2NvbG9yOiM0ZjAwNzB9LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmNsb3Nle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1jb2xvciwgIzY2NjY2Nik7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xy''@;'; put 'put ''LWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1vcGFjaXR5LCAxKX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuY2xvc2UgY2RzLWljb24sLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlIGNsci1pY29ue2ZpbGw6IzY2NjtmaWxsOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24tY29s''@;'; put 'put ''b3IsICM2NjY2NjYpfS5hbGVydC5hbGVydC1zdWNjZXNzIC5jbG9zZTpmb2N1cywuYWxlcnQuYWxlcnQtc3VjY2VzcyAuY2xvc2U6aG92ZXIsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlOmFjdGl2ZXtjb2xvcjojNGYwMDcwO2NvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWNsb3Nl''@;'; put 'put ''LWljb24taG92ZXItY29sb3IsICM0ZjAwNzApO29wYWNpdHk6MTtvcGFjaXR5OnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24taG92ZXItb3BhY2l0eSwgMSl9LmFsZXJ0LmFsZXJ0LXdhcm5pbmd7YmFja2dyb3VuZDojZmZmNGM3O2JhY2tncm91bmQ6dmFyKC0tY2xyLWFsZXJ0''@;'; put 'put ''LXdhcm5pbmctYmctY29sb3IsICNmZmY0YzcpO2NvbG9yOiMzMzM7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctZm9udC1jb2xvciwgIzMzMzMzMyk7Ym9yZGVyOi4wNXJlbSBzb2xpZDtib3JkZXItY29sb3I6I2FkNzYwMDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5p''@;'; put 'put ''bmctYm9yZGVyLWNvbG9yLCAjYWQ3NjAwKX0uYWxlcnQuYWxlcnQtd2FybmluZyAuYWxlcnQtaWNvbntjb2xvcjojNDU0NTQ1O2NvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWljb24tY29sb3IsICM0NTQ1NDUpfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb25zIC5kcm9w''@;'; put 'put ''ZG93biAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctYWN0aW9uLWNvbG9yLCAjNjY2NjY2KTtib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctYWN0aW9uLWNvbG9yLCAjNjY2NjY2KX0u''@;'; put 'put ''YWxlcnQuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLC5hbGVydC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3IsICM2NjY2NjYpfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1h''@;'; put 'put ''Y3Rpb24uYnRuLC5hbGVydC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUuYnRue2JvcmRlci1jb2xvcjojNjY2O2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3IsICM2NjY2NjYpfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24u''@;'; put 'put ''YnRuOmZvY3VzLC5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpmb2N1cywuYWxlcnQuYWxlcnQtd2Fy''@;'; put 'put ''bmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpob3ZlciwuYWxlcnQuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Ym9yZGVyLWNvbG9yOiM0ZjAwNzA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1hY3RpdmUtY29sb3IsICM0ZjAw''@;'; put 'put ''NzApfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Ym94LXNoYWRvdzowIC4wNXJlbSAjNGYwMDcwIGluc2V0O2JveC1zaGFkb3c6MCAuMDVyZW0gMCAwIHZhcigtLWNs''@;'; put 'put ''ci1hbGVydC13YXJuaW5nLWFjdGlvbi1hY3RpdmUtY29sb3IsICM0ZjAwNzApIGluc2V0fS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb246Zm9jdXMsLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbjpob3ZlciwuYWxlcnQuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0''@;'; put 'put ''aW9uOmFjdGl2ZSwuYWxlcnQuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlOmZvY3VzLC5hbGVydC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGU6aG92ZXIsLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZTphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0''@;'; put 'put ''LXdhcm5pbmctYWN0aW9uLWFjdGl2ZS1jb2xvciwgIzRmMDA3MCk7Y29sb3I6IzRmMDA3MH0uYWxlcnQuYWxlcnQtd2FybmluZyAuY2xvc2V7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWNvbG9yLCAjNjY2NjY2KTtvcGFjaXR5OjE7b3BhY2l0''@;'; put 'put ''eTp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLW9wYWNpdHksIDEpfS5hbGVydC5hbGVydC13YXJuaW5nIC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtd2FybmluZyAuY2xvc2UgY2xyLWljb257ZmlsbDojNjY2O2ZpbGw6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctY2xv''@;'; put 'put ''c2UtaWNvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmZvY3VzLC5hbGVydC5hbGVydC13YXJuaW5nIC5jbG9zZTpob3ZlciwuYWxlcnQuYWxlcnQtd2FybmluZyAuY2xvc2U6YWN0aXZle2NvbG9yOiM0ZjAwNzA7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdh''@;'; put 'put ''cm5pbmctY2xvc2UtaWNvbi1ob3Zlci1jb2xvciwgIzRmMDA3MCk7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5LCAxKX0uYWxlcnQuYWxlcnQtZGFuZ2Vye2JhY2tncm91bmQ6I2ZlZGRkNztiYWNrZ3JvdW5kOnZhcigt''@;'; put 'put ''LWNsci1hbGVydC1kYW5nZXItYmctY29sb3IsICNmZWRkZDcpO2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yLCAjNjY2NjY2KTtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojOTkxNzAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxl''@;'; put 'put ''cnQtZGFuZ2VyLWJvcmRlci1jb2xvciwgIzk5MTcwMCl9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtaWNvbntjb2xvcjojOTkxNzAwO2NvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItaWNvbi1jb2xvciwgIzk5MTcwMCl9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9ucyAu''@;'; put 'put ''ZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yLCAjNjY2NjY2KTtib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1hY3Rpb24tY29sb3IsICM2NjY2NjYp''@;'; put 'put ''fS5hbGVydC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbiwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0''@;'; put 'put ''aW9uLmJ0biwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRue2JvcmRlci1jb2xvcjojNjY2O2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLmJ0bjpm''@;'; put 'put ''b2N1cywuYWxlcnQuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZS5idG46Zm9jdXMsLmFsZXJ0LmFsZXJ0LWRhbmdlciAuZHJv''@;'; put 'put ''cGRvd24tdG9nZ2xlLmJ0bjpob3ZlciwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3JkZXItY29sb3I6IzRmMDA3MDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1hY3Rpb24tYWN0aXZlLWNvbG9yLCAjNGYwMDcwKX0uYWxlcnQu''@;'; put 'put ''YWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjA1cmVtICM0ZjAwNzAgaW5zZXQ7Ym94LXNoYWRvdzowIC4wNXJlbSAwIDAgdmFyKC0tY2xyLWFsZXJ0LWRhbmdl''@;'; put 'put ''ci1hY3Rpb24tYWN0aXZlLWNvbG9yLCAjNGYwMDcwKSBpbnNldH0uYWxlcnQuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb246Zm9jdXMsLmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVydC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbjphY3RpdmUsLmFsZXJ0''@;'; put 'put ''LmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlOmZvY3VzLC5hbGVydC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGU6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItYWN0aW9uLWFjdGl2''@;'; put 'put ''ZS1jb2xvciwgIzRmMDA3MCk7Y29sb3I6IzRmMDA3MH0uYWxlcnQuYWxlcnQtZGFuZ2VyIC5jbG9zZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1jb2xvciwgIzY2NjY2Nik7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LWRhbmdl''@;'; put 'put ''ci1jbG9zZS1pY29uLW9wYWNpdHksIDEpfS5hbGVydC5hbGVydC1kYW5nZXIgLmNsb3NlIGNkcy1pY29uLC5hbGVydC5hbGVydC1kYW5nZXIgLmNsb3NlIGNsci1pY29ue2ZpbGw6IzY2NjtmaWxsOnZhcigtLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1jb2xvciwgIzY2NjY2Nil9LmFs''@;'; put 'put ''ZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6Zm9jdXMsLmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6aG92ZXIsLmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6YWN0aXZle2NvbG9yOiM0ZjAwNzA7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWhvdmVyLWNvbG9yLCAj''@;'; put 'put ''NGYwMDcwKTtvcGFjaXR5OjE7b3BhY2l0eTp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWNsb3NlLWljb24taG92ZXItb3BhY2l0eSwgMSl9LmFsZXJ0IC5hbGVydC1pdGVtIC5jbHItaWNvbntoZWlnaHQ6LjlyZW07d2lkdGg6LjlyZW07bWFyZ2luLXJpZ2h0Oi4zcmVtfS5hbGVydCAuYWxlcnQt''@;'; put 'put ''aXRlbSAuY2xyLWljb24rLmFsZXJ0LXRleHR7cGFkZGluZy1sZWZ0OjB9LmFsZXJ0IC5hbGVydC1pdGVtIC5jbHItaWNvbisuYWxlcnQtdGV4dDpiZWZvcmV7Y29udGVudDpub25lfS5hbGVydCAuYWxlcnQtYWN0aW9uc3tmbGV4OjAgMCBhdXRvO3doaXRlLXNwYWNlOm5vd3JhcH0uYWxlcnQg''@;'; put 'put ''LmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duOmxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0Oi0uMXJlbX0uYWxlcnQgLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duLWl0ZW17Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tdGV4dC1jb2xvciwgIzY2NjY2Nik7Zm9udC1zaXplOi43cmVt''@;'; put 'put ''O2xpbmUtaGVpZ2h0OjEuMnJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWx9LmFsZXJ0IC5hbGVydC1hY3Rpb246bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tcmlnaHQ6LjZyZW19LmFsZXJ0IC5hbGVydC1hY3Rpb24sLmFsZXJ0IC5kcm9wZG93bi10b2dnbGV7dGV4dC1kZWNvcmF0aW9uOnVuZGVy''@;'; put 'put ''bGluZX0uYWxlcnQgLmFsZXJ0LWFjdGlvbiBidXR0b24uZHJvcGRvd24tdG9nZ2xlOm5vdCguYnRuKXtiYWNrZ3JvdW5kOjAgMDtjdXJzb3I6cG9pbnRlcjtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi10ZXh0LWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQgLmRyb3Bkb3duLXRv''@;'; put 'put ''Z2dsZTpub3QoLmJ0bil7ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjB9LmFsZXJ0IC5jbG9zZXt3aWR0aDoxLjJyZW07ZGlzcGxheTpibG9jaztoZWlnaHQ6MS44cmVtO2ZsZXg6MCAwIDEuNHJlbTtvcmRlcjoxMDA7cGFkZGluZy1yaWdodDouMnJlbX0uYWxl''@;'; put 'put ''cnQgLmNsb3NlIGNkcy1pY29uLC5hbGVydCAuY2xvc2UgY2xyLWljb257bWFyZ2luLXRvcDotLjE1cmVtO2hlaWdodDoxLjE1cmVtO3dpZHRoOjEuMTVyZW19LmFsZXJ0IC5jbG9zZX4uYWxlcnQtaXRlbT4uYWxlcnQtYWN0aW9uc3twYWRkaW5nLXJpZ2h0Oi42cmVtfS5hbGVydCAuY2xvc2V+''@;'; put 'put ''LmFsZXJ0LWl0ZW0+LmFsZXJ0LWFjdGlvbnM+LmFsZXJ0LWFjdGlvbjpsYXN0LWNoaWxke21hcmdpbi1yaWdodDouNnJlbX0uYWxlcnQtYXBwLWxldmVse21hcmdpbjowO2JvcmRlci1yYWRpdXM6MDtvdmVyZmxvdy15OmF1dG87YmFja2dyb3VuZDojMDA3MmEzO2JhY2tncm91bmQ6dmFyKC0t''@;'; put 'put ''Y2xyLWFwcC1hbGVydC1pbmZvLWJnLWNvbG9yLCAjMDA3MmEzKTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1mb250LWNvbG9yLCB3aGl0ZSk7Ym9yZGVyOjB9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1h''@;'; put 'put ''cHAtYWxlcnQtaW5mby1pY29uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tY29sb3IsIHdoaXRlKTtib3JkZXItY29s''@;'; put 'put ''b3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWFjdGlvbiwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFs''@;'; put 'put ''ZXJ0LWluZm8tYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9uLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGUuYnRue2JvcmRlci1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9u''@;'; put 'put ''LWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9uLmJ0bjpmb2N1cywuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC1hcHAtbGV2ZWwgLmRyb3Bkb3du''@;'; put 'put ''LXRvZ2dsZS5idG46Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbCAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpob3ZlciwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFj''@;'; put 'put ''dGlvbi1hY3RpdmUtY29sb3IsIHdoaXRlKX0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjA1cmVtICNmZmYgaW5zZXQ7Ym94LXNoYWRvdzowIC4wNXJlbSAw''@;'; put 'put ''IDAgdmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1hY3RpdmUtY29sb3IsIHdoaXRlKSBpbnNldH0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb246Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWFjdGlv''@;'; put 'put ''bjphY3RpdmUsLmFsZXJ0LWFwcC1sZXZlbCAuZHJvcGRvd24tdG9nZ2xlOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGU6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rp''@;'; put 'put ''b24tYWN0aXZlLWNvbG9yLCB3aGl0ZSk7Y29sb3I6I2ZmZn0uYWxlcnQtYXBwLWxldmVsIC5jbG9zZXtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLWNvbG9yLCB3aGl0ZSk7b3BhY2l0eTouODtvcGFjaXR5OnZhcigtLWNsci1hcHAtYWxlcnQt''@;'; put 'put ''aW5mby1jbG9zZS1pY29uLW9wYWNpdHksIC44KX0uYWxlcnQtYXBwLWxldmVsIC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5jbG9zZSBjbHItaWNvbntmaWxsOiNmZmY7ZmlsbDp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvciwgd2hpdGUpfS5hbGVy''@;'; put 'put ''dC1hcHAtbGV2ZWwgLmNsb3NlOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwgLmNsb3NlOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwgLmNsb3NlOmFjdGl2ZXtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLWNvbG9yLCB3aGl0ZSk7b3BhY2l0''@;'; put 'put ''eToxO29wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWNsb3NlLWljb24taG92ZXItb3BhY2l0eSwgMSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZve2JhY2tncm91bmQ6IzAwNzJhMztiYWNrZ3JvdW5kOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1iZy1jb2xvciwgIzAwNzJh''@;'; put 'put ''Myk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tZm9udC1jb2xvciwgd2hpdGUpO2JvcmRlcjowfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1pY29uLWNvbG9y''@;'; put 'put ''LCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb25zIC5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvciwgd2hpdGUpO2JvcmRlci1jb2xvcjojZmZmO2JvcmRl''@;'; put 'put ''ci1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24uYnRuLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuZHJvcGRvd24tdG9nZ2xlLmJ0bntib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uLmJ0bjpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG46aG92ZXIsLmFsZXJ0LWFwcC1sZXZl''@;'; put 'put ''bC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZS5idG46Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwu''@;'; put 'put ''YWxlcnQtaW5mbyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Ym9yZGVyLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZlLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24u''@;'; put 'put ''YnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gI2ZmZiBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWFjdGl2ZS1jb2xv''@;'; put 'put ''ciwgd2hpdGUpIGluc2V0fS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uOmFjdGl2ZSwuYWxl''@;'; put 'put ''cnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZTphY3RpdmV7Y29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWFwcC1hbGVydC1pbmZvLWFjdGlvbi1hY3RpdmUtY29sb3IsIHdoaXRlKTtjb2xvcjojZmZmfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuY2xvc2V7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvciwgd2hpdGUpO29wYWNpdHk6''@;'; put 'put ''Ljg7b3BhY2l0eTp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1vcGFjaXR5LCAuOCl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmNsb3NlIGNsci1pY29ue2ZpbGw6I2ZmZjtmaWxsOnZh''@;'; put 'put ''cigtLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5jbG9zZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmNsb3NlOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuY2xvc2U6''@;'; put 'put ''YWN0aXZle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWNsb3NlLWljb24taG92ZXItY29sb3IsIHdoaXRlKTtvcGFjaXR5OjE7b3BhY2l0eTp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5LCAxKX0uYWxlcnQtYXBwLWxl''@;'; put 'put ''dmVsLmFsZXJ0LWRhbmdlcntiYWNrZ3JvdW5kOiNjMjFkMDA7YmFja2dyb3VuZDp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1iZy1jb2xvciwgI2MyMWQwMCk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yLCB3aGl0ZSk7Ym9yZGVyOjB9''@;'; put 'put ''LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWljb257Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1pY29uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duIC5kcm9w''@;'; put 'put ''ZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1hY3Rpb24tY29sb3IsIHdoaXRlKTtib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFw''@;'; put 'put ''cC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5h''@;'; put 'put ''bGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbi5idG4sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvciwgd2hpdGUpfS5hbGVy''@;'; put 'put ''dC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQt''@;'; put 'put ''YXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7''@;'; put 'put ''Ym9yZGVyLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWFjdGlvbi1hY3RpdmUtY29sb3IsIHdoaXRlKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1k''@;'; put 'put ''YW5nZXIgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gI2ZmZiBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1hY3Rpb24tYWN0aXZlLWNvbG9yLCB3aGl0ZSkgaW5zZXR9LmFsZXJ0LWFwcC1sZXZl''@;'; put 'put ''bC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbjpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb246YWN0aXZlLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2Vy''@;'; put 'put ''IC5kcm9wZG93bi10b2dnbGU6Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1h''@;'; put 'put ''Y3Rpb24tYWN0aXZlLWNvbG9yLCB3aGl0ZSk7Y29sb3I6I2ZmZn0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuY2xvc2V7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWNvbG9yLCB3aGl0ZSk7b3BhY2l0eTouODtvcGFjaXR5OnZh''@;'; put 'put ''cigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWNsb3NlLWljb24tb3BhY2l0eSwgLjgpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuY2xvc2UgY2xyLWljb257ZmlsbDojZmZmO2ZpbGw6dmFyKC0tY2xy''@;'; put 'put ''LWFwcC1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5jbG9zZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuY2xvc2U6aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmNsb3Nl''@;'; put 'put ''OmFjdGl2ZXtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWNsb3NlLWljb24taG92ZXItY29sb3IsIHdoaXRlKTtvcGFjaXR5OjE7b3BhY2l0eTp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHksIDEpfS5hbGVydC1h''@;'; put 'put ''cHAtbGV2ZWwuYWxlcnQtd2FybmluZ3tiYWNrZ3JvdW5kOiNjMjU0MDA7YmFja2dyb3VuZDp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctYmctY29sb3IsICNjMjU0MDApO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWZvbnQtY29sb3IsIHdoaXRlKTti''@;'; put 'put ''b3JkZXI6MH0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWljb257Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctaWNvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9ucyAuZHJv''@;'; put 'put ''cGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3IsIHdoaXRlKTtib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xvciwgd2hp''@;'; put 'put ''dGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xvciwgd2hpdGUpfS5h''@;'; put 'put ''bGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLmJ0biwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1hY3Rpb24t''@;'; put 'put ''Y29sb3IsIHdoaXRlKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbi5idG46Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0''@;'; put 'put ''aW9uLmJ0bjphY3RpdmUsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUuYnRuOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmRy''@;'; put 'put ''b3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JvcmRlci1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctYWN0aW9uLWFjdGl2ZS1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLmJ0bjphY3Rp''@;'; put 'put ''dmUsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjA1cmVtICNmZmYgaW5zZXQ7Ym94LXNoYWRvdzowIC4wNXJlbSAwIDAgdmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWFjdGlvbi1hY3RpdmUtY29sb3Is''@;'; put 'put ''IHdoaXRlKSBpbnNldH0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbjpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbjpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbjphY3Rp''@;'; put 'put ''dmUsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGU6Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGU6aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGU6YWN0aXZl''@;'; put 'put ''e2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1hY3Rpb24tYWN0aXZlLWNvbG9yLCB3aGl0ZSk7Y29sb3I6I2ZmZn0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmNsb3Nle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWNsb3NlLWlj''@;'; put 'put ''b24tY29sb3IsIHdoaXRlKTtvcGFjaXR5Oi44O29wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWNsb3NlLWljb24tb3BhY2l0eSwgLjgpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuY2xvc2UgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5n''@;'; put 'put ''IC5jbG9zZSBjbHItaWNvbntmaWxsOiNmZmY7ZmlsbDp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctY2xvc2UtaWNvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuY2xvc2U6Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5jbG9z''@;'; put 'put ''ZTpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmFjdGl2ZXtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yLCB3aGl0ZSk7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVy''@;'; put 'put ''dC13YXJuaW5nLWNsb3NlLWljb24taG92ZXItb3BhY2l0eSwgMSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNze2JhY2tncm91bmQ6IzNjODUwMDtiYWNrZ3JvdW5kOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1iZy1jb2xvciwgIzNjODUwMCk7Y29sb3I6I2ZmZjtjb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvciwgd2hpdGUpO2JvcmRlcjowfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1pY29uLWNvbG9yLCB3aGl0ZSl9LmFs''@;'; put 'put ''ZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb25zIC5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvciwgd2hpdGUpO2JvcmRlci1jb2xvcjojZmZmO2JvcmRlci1jb2xv''@;'; put 'put ''cjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtjb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb24uYnRuLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0bntib3JkZXItY29sb3I6I2ZmZjti''@;'; put 'put ''b3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0bjpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbi5idG46''@;'; put 'put ''aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG46Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5kcm9wZG93bi10b2dn''@;'; put 'put ''bGUuYnRuOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Ym9yZGVyLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1hY3Rpb24tYWN0aXZlLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0''@;'; put 'put ''LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gI2ZmZiBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2''@;'; put 'put ''YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWFjdGl2ZS1jb2xvciwgd2hpdGUpIGluc2V0fS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uOmhvdmVyLC5h''@;'; put 'put ''bGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQt''@;'; put 'put ''YXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZTphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWFjdGlvbi1hY3RpdmUtY29sb3IsIHdoaXRlKTtjb2xvcjojZmZmfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuY2xvc2V7Y29sb3I6''@;'; put 'put ''I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1jb2xvciwgd2hpdGUpO29wYWNpdHk6Ljg7b3BhY2l0eTp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1vcGFjaXR5LCAuOCl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNz''@;'; put 'put ''IC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlIGNsci1pY29ue2ZpbGw6I2ZmZjtmaWxsOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5j''@;'; put 'put ''bG9zZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuY2xvc2U6YWN0aXZle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24taG92ZXItY29s''@;'; put 'put ''b3IsIHdoaXRlKTtvcGFjaXR5OjE7b3BhY2l0eTp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5LCAxKX0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtc3twYWRkaW5nLXRvcDouM3JlbTtwYWRkaW5nLWJvdHRvbTouM3JlbX0uYWxlcnQtYXBw''@;'; put 'put ''LWxldmVsIC5hbGVydC1pdGVte2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21pbi1oZWlnaHQ6MS4ycmVtfS5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bnttYXJnaW46MH0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtPnNwYW4sLmFsZXJ0LWFw''@;'; put 'put ''cC1sZXZlbCAuYWxlcnQtdGV4dHtmbGV4OjAgMSAxMDAlfS5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWljb24td3JhcHBlcnttYXJnaW4tdG9wOi4xNXJlbX0uYWxlcnQtYXBwLWxldmVsIC5jbG9zZXtoZWlnaHQ6MS44cmVtO292ZXJmbG93OmhpZGRlbn0uYWxlcnQtYXBwLWxldmVsIC5jbG9z''@;'; put 'put ''ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5jbG9zZSBjbHItaWNvbnttYXJnaW4tdG9wOi0uMjVyZW19LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9uLC5hbGVydC1hcHAtbGV2ZWwgLmRyb3Bkb3duLXRvZ2dsZXt0ZXh0LWRlY29yYXRpb246bm9uZX0uYWxlcnQtc217Zm9udC1z''@;'; put 'put ''aXplOi41NXJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6LjhyZW19LmFsZXJ0LXNtIC5hbGVydC1pdGVtc3twYWRkaW5nOi4xNXJlbSAuMjVyZW19LmFsZXJ0LXNtIC5hbGVydC1pdGVte3BhZGRpbmctdG9wOi4wNXJlbTttYXJnaW4tYm90dG9tOi4ycmVtfS5hbGVydC1z''@;'; put 'put ''bSAuYWxlcnQtaXRlbTpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0uYWxlcnQtc20gLmFsZXJ0LWljb24td3JhcHBlcntwYWRkaW5nLXRvcDowO2hlaWdodDouOHJlbX0uYWxlcnQtc20gLmFsZXJ0LWljb257bWFyZ2luLWxlZnQ6LS4ycmVtO21hcmdpbi10b3A6LS4ycmVtfS5hbGVydC1z''@;'; put 'put ''bSAuYWxlcnQtaXRlbT5zcGFuLC5hbGVydC1zbSAuYWxlcnQtdGV4dHttYXJnaW4tcmlnaHQ6LjNyZW19LmFsZXJ0LXNtIC5jbG9zZXtwYWRkaW5nLXJpZ2h0OjA7ZmxleDowIDAgMS4ycmVtO2hlaWdodDoxLjJyZW07bGluZS1oZWlnaHQ6MS4ycmVtfS5hbGVydC1zbSAuY2xvc2UgY2RzLWlj''@;'; put 'put ''b24sLmFsZXJ0LXNtIC5jbG9zZSBjbHItaWNvbnttYXJnaW4tdG9wOi0uMjVyZW07bWFyZ2luLXJpZ2h0Oi0uMDVyZW07aGVpZ2h0OjFyZW07d2lkdGg6MXJlbTtsaW5lLWhlaWdodDoxLjA1cmVtfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4cHgpey5hbGVydCAuYWxlcnQtaXRl''@;'; put 'put ''bXtmbGV4LXdyYXA6d3JhcH0uYWxlcnQgLmFsZXJ0LXRleHR7bWFyZ2luLXJpZ2h0OjA7bWF4LXdpZHRoOjkwJTt3aWR0aDo5MCU7ZmxleC1iYXNpczo5MCV9LmFsZXJ0IC5hbGVydC1hY3Rpb25ze2ZsZXg6MSAwIDEwMCU7cGFkZGluZy10b3A6LjE1cmVtO3BhZGRpbmctbGVmdDoxLjJyZW19''@;'; put 'put ''LmFsZXJ0cy1wYWdlcnttYXJnaW4tdG9wOi4xNXJlbX0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb25ze21hcmdpbi1sZWZ0OjIuMjVyZW19fS5hbGVydC1oaWRkZW57ZGlzcGxheTpub25lfS5jYXJkIC5hbGVydHttYXJnaW46LjNyZW0gMH0ubW9kYWwgLmFsZXJ0Ky5tb2RhbC1oZWFk''@;'; put 'put ''ZXIsLm1vZGFsIC5hbGVydCsubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxle21hcmdpbi10b3A6LjZyZW19LmFsZXJ0cy5hbGVydC1pbmZve2JhY2tncm91bmQ6IzAwNTY3YTtiYWNrZ3JvdW5kOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1wYWdlci1iZy1jb2xvciwgIzAwNTY3YSl9LmFsZXJ0''@;'; put 'put ''cy5hbGVydC1kYW5nZXJ7YmFja2dyb3VuZDojOTkxNzAwO2JhY2tncm91bmQ6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItcGFnZXItYmctY29sb3IsICM5OTE3MDApfS5hbGVydHMuYWxlcnQtd2FybmluZ3tiYWNrZ3JvdW5kOiM4ZjVhMDA7YmFja2dyb3VuZDp2YXIoLS1jbHItYXBwLWFs''@;'; put 'put ''ZXJ0LXdhcm5pbmctcGFnZXItYmctY29sb3IsICM4ZjVhMDApfS5hbGVydHMuYWxlcnQtc3VjY2Vzc3tiYWNrZ3JvdW5kOiMyNTUyMDA7YmFja2dyb3VuZDp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy05MDAsICMyNTUyMDApfS5hbGVydHMtcGFnZXJ7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYXBwLWFsZXJ0LXBhZ2VyLXRleHQtY29sb3IsIHdoaXRlKTtmb250LXNpemU6LjY1cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtmbG9hdDpsZWZ0O21pbi1oZWlnaHQ6MS44cmVtO3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjcuMnJlbX0uYWxlcnQtaW5mbyAuYWxlcnRzLXBhZ2Vye2Nv''@;'; put 'put ''bG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLXBhZ2VyLWZvbnQtY29sb3IsIHdoaXRlKX0uYWxlcnQtd2FybmluZyAuYWxlcnRzLXBhZ2Vye2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLXBhZ2VyLWZvbnQtY29sb3IsIHdoaXRlKX0u''@;'; put 'put ''YWxlcnQtZGFuZ2VyIC5hbGVydHMtcGFnZXJ7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1wYWdlci1mb250LWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0cy1wYWdlcntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3Vj''@;'; put 'put ''Y2Vzcy1wYWdlci1mb250LWNvbG9yLCB3aGl0ZSl9LmFsZXJ0cy1wYWdlci1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2Jv''@;'; put 'put ''cmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZDowIDA7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXBhZ2VyLXRleHQtY29sb3IsIHdoaXRlKTtjdXJzb3I6cG9pbnRlcn1idXR0b24uYWxlcnRzLXBhZ2VyLWJ1dHRvbntjdXJzb3I6cG9pbnRlcn0u''@;'; put 'put ''YWxlcnRzLXBhZ2VyLWJ1dHRvbiBjZHMtaWNvbiwuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjbHItaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtcGFnZXItdGV4dC1jb2xvciwgd2hpdGUpfS5hbGVydC1pbmZvIC5hbGVydHMtcGFnZXItYnV0dG9uIGNkcy1pY29uLC5h''@;'; put 'put ''bGVydC1pbmZvIC5hbGVydHMtcGFnZXItYnV0dG9uIGNsci1pY29ue2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLXBhZ2VyLWZvbnQtY29sb3IsIHdoaXRlKX0uYWxlcnQtd2FybmluZyAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjZHMtaWNvbiwuYWxlcnQtd2Fybmlu''@;'; put 'put ''ZyAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjbHItaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1wYWdlci1mb250LWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWRhbmdlciAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjZHMtaWNvbiwuYWxlcnQtZGFuZ2VyIC5hbGVy''@;'; put 'put ''dHMtcGFnZXItYnV0dG9uIGNsci1pY29ue2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItcGFnZXItZm9udC1jb2xvciwgd2hpdGUpfS5hbGVydC1zdWNjZXNzIC5hbGVydHMtcGFnZXItYnV0dG9uIGNkcy1pY29uLC5hbGVydC1zdWNjZXNzIC5hbGVydHMtcGFn''@;'; put 'put ''ZXItYnV0dG9uIGNsci1pY29ue2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLXBhZ2VyLWZvbnQtY29sb3IsIHdoaXRlKX0uYWxlcnRzLXBhZ2VyLWNvbnRyb2x7ZGlzcGxheTpmbGV4O21hcmdpbi10b3A6LjNyZW07d2hpdGUtc3BhY2U6bm93cmFwfS5hbGVy''@;'; put 'put ''dHMtcGFnZS1kb3due21hcmdpbi1sZWZ0OjEuMnJlbTt3aWR0aDozMy4zMyV9LmFsZXJ0cy1wYWdlLXVwe21hcmdpbi1yaWdodDoxLjJyZW07d2lkdGg6MzMuMzMlfS5hbGVydHMtcGFnZXItdGV4dHt3aWR0aDozMy4zMyV9OnJvb3R7LS1jbHItY2FyZC1iZy1jb2xvcjp2YXIoLS1jbHItY29s''@;'; put 'put ''b3ItbmV1dHJhbC0wKTstLWNsci1jYXJkLWRpdmlkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMzAwKTstLWNsci1jYXJkLXRpdGxlLWNvbG9yOnZhcigtLWNsci1oNC1jb2xvcik7LS1jbHItY2FyZC10aXRsZS1mb250LXdlaWdodDp2YXIoLS1jbHItaDQtZm9udC13ZWlnaHQp''@;'; put 'put ''Oy0tY2xyLWNhcmQtYm9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgpOy0tY2xyLWNhcmQtYm9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cyk7LS1jbHItY2FyZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMzAwKTst''@;'; put 'put ''LWNsci1jYXJkLWJveC1zaGFkb3ctY29sb3I6dmFyKC0tY2xyLWNhcmQtYm9yZGVyLWNvbG9yKTstLWNsci1jYXJkLWNsaWNrYWJsZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi01MDApOy0tY2xyLWNhcmQtY2xpY2thYmxlLWJveC1zaGFkb3ctY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWNhcmQtY2xpY2thYmxlLWJvcmRlci1jb2xvcil9LmNhcmR7Ym94LXNoYWRvdzowIC4xNXJlbSAjZGVkZWRlO2JveC1zaGFkb3c6MCAuMTVyZW0gMCAwIHZhcigtLWNsci1jYXJkLWJveC1zaGFkb3ctY29sb3IpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xy''@;'; put 'put ''LWNhcmQtYm9yZGVyLXJhZGl1cywgLjE1cmVtKTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItY2FyZC1ib3JkZXItd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojZGVkZWRlO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItY2Fy''@;'; put 'put ''ZC1ib3JkZXItY29sb3IsICNkZWRlZGUpfS5jYXJkLmNsaWNrYWJsZTpob3Zlcntib3gtc2hhZG93OjAgLjE1cmVtICMxNzliZDM7Ym94LXNoYWRvdzowIC4xNXJlbSAwIDAgdmFyKC0tY2xyLWNhcmQtY2xpY2thYmxlLWJveC1zaGFkb3ctY29sb3IpO2JvcmRlci13aWR0aDouMDVyZW07Ym9y''@;'; put 'put ''ZGVyLXdpZHRoOnZhcigtLWNsci1jYXJkLWJvcmRlci13aWR0aCwgLjA1cmVtKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiMxNzliZDM7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1jYXJkLWNsaWNrYWJsZS1ib3JkZXItY29sb3IsICMxNzliZDMpO2N1cnNvcjpwb2ludGVyO3Rl''@;'; put 'put ''eHQtZGVjb3JhdGlvbjpub25lO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0uMXJlbSk7dHJhbnNpdGlvbjpib3JkZXIgLjJzIGVhc2UsdHJhbnNmb3JtIC4ycyBlYXNlfS5jYXJkLWJsb2NrIC5jYXJkLWRpdmlkZXIsLmNhcmQgLmNhcmQtdGl0bGUsLmNhcmQgLmNhcmQtdGV4dCwuY2FyZCAuY2Fy''@;'; put 'put ''ZC1tZWRpYS1ibG9jaywuY2FyZCAubGlzdCwuY2FyZCAubGlzdC11bnN0eWxlZHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTouNnJlbX0uY2FyZC1ibG9jayAuY2FyZC1kaXZpZGVyOmxhc3QtY2hpbGQsLmNhcmQgLmNhcmQtdGl0bGU6bGFzdC1jaGlsZCwuY2FyZCAuY2FyZC10ZXh0Omxh''@;'; put 'put ''c3QtY2hpbGQsLmNhcmQgLmNhcmQtbWVkaWEtYmxvY2s6bGFzdC1jaGlsZCwuY2FyZCAubGlzdDpsYXN0LWNoaWxkLC5jYXJkIC5saXN0LXVuc3R5bGVkOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS5jYXJkLmNhcmQtaW1nPmltZywuY2FyZD4uY2FyZC1pbWc6Zmlyc3QtY2hpbGQ6bGFz''@;'; put 'put ''dC1jaGlsZD5pbWcsLmNhcmQtaW1nPmltZ3tkaXNwbGF5OmJsb2NrO2hlaWdodDphdXRvO3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCV9LmNhcmR7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''Y2FyZC1iZy1jb2xvciwgd2hpdGUpO3dpZHRoOjEwMCU7bWFyZ2luLXRvcDoxLjJyZW19LmNhcmQgLmJ0bi1saW5re21pbi13aWR0aDowO3BhZGRpbmc6MH0uY2FyZC5jbGlja2FibGV7Y29sb3I6aW5oZXJpdH0uY2FyZD4ubGlzdCwuY2FyZD4ubGlzdC11bnN0eWxlZHtwYWRkaW5nOi42cmVt''@;'; put 'put ''IC45cmVtfS5jYXJkIC5saXN0LWdyb3Vwe3BhZGRpbmctbGVmdDowO21hcmdpbi1ib3R0b206MDtsaXN0LXN0eWxlOm5vbmV9LmNhcmQgLmxpc3QtZ3JvdXAtaXRlbXtwYWRkaW5nOi42cmVtIC45cmVtO2ZvbnQtc2l6ZTouN3JlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItY2FyZC1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci1ib3R0b20td2lkdGg6LjA1cmVtO2JvcmRlci1ib3R0b20td2lkdGg6dmFyKC0tY2xyLWNhcmQtYm9yZGVyLXdpZHRoLCAuMDVyZW0pO2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS1jb2xv''@;'; put 'put ''cjojZGVkZWRlO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWNhcmQtYm9yZGVyLWNvbG9yLCAjZGVkZWRlKX1Ac3VwcG9ydHMgKC1tcy1pbWUtYWxpZ246YXV0byl7LmNhcmQgLmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2lu''@;'; put 'put ''LXRvcDotLjZyZW19fS5jYXJkLWhlYWRlciwuY2FyZC1ibG9jaywuY2FyZC1mb290ZXJ7cGFkZGluZzouNnJlbSAuOXJlbX0uY2FyZC1oZWFkZXIsLmNhcmQtdGl0bGV7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItY2FyZC10aXRsZS1jb2xvciwgYmxhY2spO2ZvbnQtd2VpZ2h0OjIwMDtm''@;'; put 'put ''b250LXdlaWdodDp2YXIoLS1jbHItY2FyZC10aXRsZS1mb250LXdlaWdodCwgMjAwKTtmb250LXNpemU6LjlyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFsfWgxLmNhcmQtaGVhZGVyLGgxLmNhcmQtdGl0bGUsaDIuY2FyZC1oZWFkZXIsaDIuY2FyZC10aXRsZSxoMy5jYXJkLWhlYWRlcixoMy5j''@;'; put 'put ''YXJkLXRpdGxlLGg0LmNhcmQtaGVhZGVyLGg0LmNhcmQtdGl0bGUsaDUuY2FyZC1oZWFkZXIsaDUuY2FyZC10aXRsZSxoNi5jYXJkLWhlYWRlcixoNi5jYXJkLXRpdGxle21hcmdpbi10b3A6MH0uY2FyZC10ZXh0e2ZvbnQtc2l6ZTouN3JlbX0uY2FyZC1pbWc6Zmlyc3QtY2hpbGQ+aW1ne2Jv''@;'; put 'put ''cmRlci1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6LjE1cmVtO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigt''@;'; put 'put ''LWNsci1jYXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSl9LmNhcmQtaW1nOmxhc3QtY2hpbGQ+aW1ne2JvcmRlci1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMsIC4x''@;'; put 'put ''NXJlbSk7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSl9LmNhcmQuY2FyZC1pbWc+aW1nLC5jYXJkPi5jYXJkLWltZzpmaXJzdC1jaGlsZDpsYXN0LWNoaWxkPmlt''@;'; put 'put ''Z3tib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSl9LmNhcmQtYmxvY2sgLmJ0biwuY2FyZC1ibG9jayAuYnRuLmJ0bi1saW5rLC5jYXJkLWJsb2NrIC5jYXJkLWxpbmssLmNhcmQtZm9vdGVyIC5idG4sLmNhcmQt''@;'; put 'put ''Zm9vdGVyIC5idG4uYnRuLWxpbmssLmNhcmQtZm9vdGVyIC5jYXJkLWxpbmt7bWFyZ2luOjAgLjZyZW0gMCAwfS5jYXJkLWJsb2NrIC5idG4tZ3JvdXAgLmJ0biwuY2FyZC1mb290ZXIgLmJ0bi1ncm91cCAuYnRue21hcmdpbjowfS5jYXJkLWhlYWRlciwuY2FyZC1ibG9ja3tib3JkZXItYm90''@;'; put 'put ''dG9tLXdpZHRoOi4wNXJlbTtib3JkZXItYm90dG9tLXdpZHRoOnZhcigtLWNsci1jYXJkLWJvcmRlci13aWR0aCwgLjA1cmVtKTtib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkO2JvcmRlci1ib3R0b20tY29sb3I6I2RlZGVkZTtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1jYXJkLWJv''@;'; put 'put ''cmRlci1jb2xvciwgI2RlZGVkZSl9LmNhcmQtaGVhZGVyOmxhc3QtY2hpbGQsLmNhcmQtYmxvY2s6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9LmNhcmQtZGl2aWRlcntkaXNwbGF5OmJsb2NrO2JvcmRlci1ib3R0b20td2lkdGg6LjA1cmVtO2JvcmRlci1ib3R0b20td2lkdGg6dmFy''@;'; put 'put ''KC0tY2xyLWNhcmQtYm9yZGVyLXdpZHRoLCAuMDVyZW0pO2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZGVkZWRlO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWNhcmQtZGl2aWRlci1jb2xvciwgI2RlZGVkZSl9LmNhcmQtYmxvY2sgLmNhcmQt''@;'; put 'put ''ZGl2aWRlcnttYXJnaW4tbGVmdDotLjlyZW07bWFyZ2luLXJpZ2h0Oi0uOXJlbTt3aWR0aDphdXRvfS5jYXJkLWhlYWRlcisuY2FyZC1kaXZpZGVyLC5jYXJkLWJsb2NrKy5jYXJkLWRpdmlkZXJ7ZGlzcGxheTpub25lfS5jYXJkLW1lZGlhLWJsb2Nre2Rpc3BsYXk6ZmxleH0uY2FyZC1tZWRp''@;'; put 'put ''YS1ibG9jayAuY2FyZC1tZWRpYS1pbWFnZXtkaXNwbGF5OmlubGluZS1ibG9jaztmbGV4OjAgMCBhdXRvO2hlaWdodDozcmVtO3dpZHRoOjNyZW07bWF4LWhlaWdodDozcmVtO21heC13aWR0aDozcmVtfS5jYXJkLW1lZGlhLWJsb2NrIC5jYXJkLW1lZGlhLWRlc2NyaXB0aW9ue2Rpc3BsYXk6''@;'; put 'put ''ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWFyZ2luOjAgMCAwIC42cmVtfS5jYXJkLW1lZGlhLWJsb2NrIC5jYXJkLW1lZGlhLXRpdGxlLC5jYXJkLW1lZGlhLWJsb2NrIHNwYW4sLmNhcmQtbWVkaWEtYmxvY2sgLmNhcmQtbWVkaWEtdGV4dHtkaXNwbGF5OmlubGluZS1ibG9ja30uY2Fy''@;'; put 'put ''ZC1tZWRpYS1ibG9jay53cmFwe2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY2FyZC1tZWRpYS1ibG9jay53cmFwIC5jYXJkLW1lZGlhLWRlc2NyaXB0aW9ue21hcmdpbjouM3JlbSAwIDB9LmNhcmQtYmxvY2s+Lmxpc3QsLmNhcmQtYmxvY2s+Lmxpc3QtdW5zdHlsZWR7cGFkZGluZzowfUBtZWRp''@;'; put 'put ''YSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NTc2cHgpey5jYXJkLWNvbHVtbnN7Y29sdW1uLWNvdW50OjM7Y29sdW1uLWdhcDouNnJlbTtwYWdlLWJyZWFrLWluc2lkZTphdm9pZDticmVhay1pbnNpZGU6YXZvaWQ7Y29sdW1uLWZpbGw6YmFsYW5jZTstd2Via2l0LXBlcnNwZWN0aXZlOjF9LmNh''@;'; put 'put ''cmQtY29sdW1ucy5jYXJkLWNvbHVtbnMtMntjb2x1bW4tY291bnQ6Mn0uY2FyZC1jb2x1bW5zLmNhcmQtY29sdW1ucy00e2NvbHVtbi1jb3VudDo0fS5jYXJkLWNvbHVtbnMgLmNhcmR7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOi4zcmVtfS5jYXJkLWNvbHVtbnMgLmNsaWNrYWJsZXst''@;'; put 'put ''d2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVufX1Ac3VwcG9ydHMgKC1tcy1pbWUtYWxpZ246YXV0byl7LmNhcmQgLmNoZWNrYm94LmJ0biBsYWJlbCwuY2FyZCAuY2hlY2tib3gtaW5saW5lLmJ0biBsYWJlbCwuY2FyZCAucmFkaW8u''@;'; put 'put ''YnRuIGxhYmVsLC5jYXJkIC5yYWRpby1pbmxpbmUuYnRuIGxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrfX06cm9vdHstLWNsci1kcm9wZG93bi1hY3RpdmUtdGV4dC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1kcm9wZG93bi1iZy1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''Y29sb3ItbmV1dHJhbC0wKTstLWNsci1kcm9wZG93bi1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci1kcm9wZG93bi1kaXZpZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTIwMCk7LS1jbHItZHJvcGRvd24tZGl2aWRlci1ib3JkZXItd2lk''@;'; put 'put ''dGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCk7LS1jbHItZHJvcGRvd24tY2hpbGQtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTUwMCk7LS1jbHItZHJvcGRvd24tYmctaG92ZXItY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1ob3Zlci1jb2xvcik7LS1jbHItZHJv''@;'; put 'put ''cGRvd24tc2VsZWN0aW9uLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtc2VsZWN0aW9uLWNvbG9yKTstLWNsci1kcm9wZG93bi1ib3gtc2hhZG93OnZhcigtLWNsci1wb3BvdmVyLWJveC1zaGFkb3ctY29sb3IpOy0tY2xyLWRyb3Bkb3duLXRleHQtY29sb3I6dmFyKC0tY2xyLXAxLWNvbG9yKTst''@;'; put 'put ''LWNsci1kcm9wZG93bi1oZWFkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtOTAwKTstLWNsci1kcm9wZG93bi1oZWFkZXItZm9udC13ZWlnaHQ6NjAwOy0tY2xyLWRyb3Bkb3duLWl0ZW0tY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1kcm9wZG93bi1p''@;'; put 'put ''dGVtLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1wMS1mb250LXdlaWdodCl9LmRyb3Bkb3duLW1lbnUgLmJ0biwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeSwuZHJvcGRvd24tbWVudSAuYnRuLWluZm8sLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLC5kcm9wZG93bi1tZW51IC5idG4t''@;'; put 'put ''b3V0bGluZS1wcmltYXJ5LC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnksLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2VzcywuZHJv''@;'; put 'put ''cGRvd24tbWVudSAuYnRuLWRhbmdlciwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnksLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nLC5kcm9wZG93bi1tZW51IC5idG4tc3VjY2VzcywuZHJvcGRvd24tbWVudSAuYnRuLWxpbmssLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW0sLmRy''@;'; put 'put ''b3Bkb3duLW1lbnUgLmRyb3Bkb3duLWhlYWRlcntvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt0ZXh0LWFsaWduOmxlZnR9LmRyb3Bkb3due3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xle2Rpc3Bs''@;'; put 'put ''YXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjA7d2hpdGUtc3BhY2U6bm93cmFwO2N1cnNvcjpwb2ludGVyfS5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlIGNsci1pY29uW3NoYXBlXj1jYXJl''@;'; put 'put ''dF0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUgY2xyLWljb25bc2hhcGVePWFuZ2xlXXtwb3NpdGlvbjphYnNvbHV0ZTtjb2xvcjppbmhlcml0O2hlaWdodDouNXJlbTt3aWR0aDouNXJlbTttaW4taGVpZ2h0Oi41cmVtO21pbi13aWR0aDouNXJlbX0uZHJvcGRvd24gLmRyb3Bkb3duLXRv''@;'; put 'put ''Z2dsZSBjZHMtaWNvbltzaGFwZV49Y2FyZXRdLC5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlIGNkcy1pY29uW3NoYXBlXj1hbmdsZV17bWFyZ2luLXRvcDp1bnNldDtwb3NpdGlvbjphYnNvbHV0ZTtjb2xvcjppbmhlcml0O2hlaWdodDouNXJlbTt3aWR0aDouNXJlbTstLWNkcy1nbG9iYWwt''@;'; put 'put ''c3BhY2UtNzouNXJlbX0uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5idG57cGFkZGluZy1yaWdodDoxLjJyZW07dGV4dC1vdmVyZmxvdzp1bnNldH0uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5idG4gY2xyLWljb257dHJhbnNmb3JtOm5vbmV9LmRyb3Bkb3duIC5kcm9wZG93bi10b2dn''@;'; put 'put ''bGUuYnRuIGNkcy1pY29uW3NoYXBlXj1jYXJldF0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUuYnRuIGNsci1pY29uW3NoYXBlXj1jYXJldF0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUuYnRuIGNkcy1pY29uW3NoYXBlXj1hbmdsZV0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUu''@;'; put 'put ''YnRuIGNsci1pY29uW3NoYXBlXj1hbmdsZV17cmlnaHQ6LjZyZW19LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGU6bm90KC5idG4pe3BhZGRpbmc6MCAuNnJlbSAwIDA7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tYWN0aXZlLXRleHQtY29sb3IsIGJsYWNrKX0uZHJvcGRv''@;'; put 'put ''d24gLmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0bikgY2RzLWljb25bc2hhcGVePWNhcmV0XSwuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0bikgY2xyLWljb25bc2hhcGVePWNhcmV0XSwuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0bikgY2RzLWljb25bc2hhcGVe''@;'; put 'put ''PWFuZ2xlXSwuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0bikgY2xyLWljb25bc2hhcGVePWFuZ2xlXXtyaWdodDowfS5kcm9wZG93biBidXR0b24uZHJvcGRvd24tdG9nZ2xlOm5vdCguYnRuKXtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjtjb2xvcjoj''@;'; put 'put ''MDAwO2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1hY3RpdmUtdGV4dC1jb2xvciwgYmxhY2spfS5kcm9wZG93bi1tZW51Pip7ZGlzcGxheTpibG9jazt3aGl0ZS1zcGFjZTpub3dyYXB9LmRyb3Bkb3duLW1lbnV7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwb3NpdGlvbjph''@;'; put 'put ''YnNvbHV0ZTt0b3A6MTAwJTtsZWZ0OjA7bWluLXdpZHRoOjZyZW07bWF4LXdpZHRoOjE4cmVtO2JhY2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWNsci1kcm9wZG93bi1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9i''@;'; put 'put ''YWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9i''@;'; put 'put ''YWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtICM4YzhjOGM0MDtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSB2YXIoLS1jbHItZHJvcGRvd24tYm94LXNoYWRvdywgcmdiYSgxNDAsIDE0MCwgMTQwLCAuMjUpKTttYXJnaW4tdG9wOi4xcmVtO3Bh''@;'; put 'put ''ZGRpbmc6LjZyZW0gMDt2aXNpYmlsaXR5OmhpZGRlbjt6LWluZGV4OjEwNTB9LmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWhlYWRlcntjb2xvcjojMzMzO2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1oZWFkZXItY29sb3IsICMzMzMzMzMpO2ZvbnQtc2l6ZTouNnJlbTtmb250LXdlaWdodDo2''@;'; put 'put ''MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWRyb3Bkb3duLWhlYWRlci1mb250LXdlaWdodCwgNjAwKTtsZXR0ZXItc3BhY2luZzpub3JtYWw7cGFkZGluZzowIC42cmVtO2xpbmUtaGVpZ2h0Oi45cmVtO21hcmdpbjowfS5kcm9wZG93bi1tZW51IC5idG4sLmRyb3Bkb3duLW1lbnUgLmJ0bi1z''@;'; put 'put ''ZWNvbmRhcnksLmRyb3Bkb3duLW1lbnUgLmJ0bi1pbmZvLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13''@;'; put 'put ''YXJuaW5nLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1kYW5nZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5LC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZywuZHJv''@;'; put 'put ''cGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVte2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tY29sb3IsICM2NjY2NjYpO2ZvbnQtc2l6ZTouN3JlbTtmb250LXdlaWdodDo0''@;'; put 'put ''MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tZm9udC13ZWlnaHQsIDQwMCk7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2JhY2tncm91bmQ6MCAwO2JvcmRlcjowO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OmF1dG87bGluZS1oZWlnaHQ6aW5oZXJpdDtt''@;'; put 'put ''YXJnaW46MDt3aWR0aDoxMDAlO3RleHQtdHJhbnNmb3JtOm5vbmV9LmRyb3Bkb3duLW1lbnUgLmJ0bjpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeTpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWluZm86aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lOmhvdmVy''@;'; put 'put ''LC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5OmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlcjpo''@;'; put 'put ''b3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2Vzczpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlcjpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnk6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nOmhvdmVyLC5kcm9wZG93bi1tZW51IC5i''@;'; put 'put ''dG4tc3VjY2Vzczpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWxpbms6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWJnLWhvdmVyLWNvbG9yLCAjZThl''@;'; put 'put ''OGU4KTtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWNvbG9yLCAjNjY2NjY2KTt0ZXh0LWRlY29yYXRpb246bm9uZX0uZHJvcGRvd24tbWVudSAuYnRuLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeS5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0''@;'; put 'put ''bi1pbmZvLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5LmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUt''@;'; put 'put ''d2FybmluZy5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlci5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnkuYWN0''@;'; put 'put ''aXZlLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZy5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWxpbmsuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtLmFjdGl2ZXtiYWNrZ3JvdW5kOiNkOGUzZTk7YmFj''@;'; put 'put ''a2dyb3VuZDp2YXIoLS1jbHItZHJvcGRvd24tc2VsZWN0aW9uLWNvbG9yLCAjZDhlM2U5KTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1hY3RpdmUtdGV4dC1jb2xvciwgYmxhY2spfS5kcm9wZG93bi1tZW51IC5idG46YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tc2Vj''@;'; put 'put ''b25kYXJ5OmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWluZm86YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZTphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnk6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6YWN0''@;'; put 'put ''aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2VzczphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXI6YWN0aXZl''@;'; put 'put ''LC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeTphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3M6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tbGluazphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0''@;'; put 'put ''ZW06YWN0aXZle2JveC1zaGFkb3c6bm9uZX0uZHJvcGRvd24tbWVudSAuYnRuOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5OmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4taW5mbzpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmU6Zm9jdXMsLmRyb3Bkb3duLW1l''@;'; put 'put ''bnUgLmJ0bi1vdXRsaW5lLXByaW1hcnk6Zm9jdXMsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZzpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmZvY3VzLC5kcm9wZG93''@;'; put 'put ''bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeTpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmc6Zm9jdXMsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzOmZv''@;'; put 'put ''Y3VzLC5kcm9wZG93bi1tZW51IC5idG4tbGluazpmb2N1cywuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbTpmb2N1c3t6LWluZGV4OmluaGVyaXR9LmRyb3Bkb3duLW1lbnUgLmJ0bi5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4t''@;'; put 'put ''c2Vjb25kYXJ5LmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5OmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4taW5mby5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLWluZm86ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLmRpc2FibGVkLC5k''@;'; put 'put ''cm9wZG93bi1tZW51IC5idG4tb3V0bGluZTpkaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRp''@;'; put 'put ''c2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1v''@;'; put 'put ''dXRsaW5lLWRhbmdlci5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzOmRpc2FibGVkLC5kcm9wZG93''@;'; put 'put ''bi1tZW51IC5idG4tZGFuZ2VyLmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeS5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnk6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5n''@;'; put 'put ''LmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZzpkaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MuZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tbGluay5kaXNhYmxlZCwuZHJvcGRvd24t''@;'; put 'put ''bWVudSAuYnRuLWxpbms6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW0uZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjQ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO3VzZXItc2Vs''@;'; put 'put ''ZWN0Om5vbmV9LmRyb3Bkb3duLW1lbnUgLmJ0bi5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5LmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5OmRpc2FibGVkOmhv''@;'; put 'put ''dmVyLC5kcm9wZG93bi1tZW51IC5idG4taW5mby5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWluZm86ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZTpkaXNhYmxlZDpo''@;'; put 'put ''b3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRpc2FibGVkOmhvdmVyLC5kcm9w''@;'; put 'put ''ZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUg''@;'; put 'put ''LmJ0bi1vdXRsaW5lLWRhbmdlci5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1z''@;'; put 'put ''dWNjZXNzOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeS5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAu''@;'; put 'put ''YnRuLXByaW1hcnk6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nLmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZzpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MuZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3du''@;'; put 'put ''LW1lbnUgLmJ0bi1zdWNjZXNzOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tbGluay5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWxpbms6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW0uZGlzYWJsZWQ6aG92ZXIsLmRyb3Bk''@;'; put 'put ''b3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06ZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDowIDB9LmRyb3Bkb3duLW1lbnUgLmJ0bi5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bjpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQ6''@;'; put 'put ''YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5OmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWluZm8uZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4taW5mbzpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLmRp''@;'; put 'put ''c2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmU6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZDphY3RpdmUsLmRy''@;'; put 'put ''b3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93''@;'; put 'put ''bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nOmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRu''@;'; put 'put ''LW91dGxpbmUtc3VjY2Vzcy5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlcjpkaXNhYmxlZDph''@;'; put 'put ''Y3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5LmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnk6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZy5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5n''@;'; put 'put ''OmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MuZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tc3VjY2VzczpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRu''@;'; put 'put ''LWxpbms6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbTpkaXNhYmxlZDphY3RpdmV7YmFja2dyb3VuZDowIDA7Ym94LXNoYWRvdzpub25lfS5kcm9wZG93bi1tZW51IC5idG4u''@;'; put 'put ''ZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeS5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5idG4taW5mby5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5LmV4''@;'; put 'put ''cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nLmV4cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlci5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51''@;'; put 'put ''IC5idG4tb3V0bGluZS1zdWNjZXNzLmV4cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXIuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnkuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmcuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAu''@;'; put 'put ''YnRuLXN1Y2Nlc3MuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLWxpbmsuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbS5leHBhbmRhYmxle21hcmdpbi1yaWdodDoxLjJyZW07cGFkZGluZy1yaWdodDouNnJlbX0uZHJvcGRvd24tbWVudSAuYnRuLmV4cGFu''@;'; put 'put ''ZGFibGU6YmVmb3JlLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5LmV4cGFuZGFibGU6YmVmb3JlLC5kcm9wZG93bi1tZW51IC5idG4taW5mby5leHBhbmRhYmxlOmJlZm9yZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUuZXhwYW5kYWJsZTpiZWZvcmUsLmRyb3Bkb3duLW1lbnUg''@;'; put 'put ''LmJ0bi1vdXRsaW5lLXByaW1hcnkuZXhwYW5kYWJsZTpiZWZvcmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5leHBhbmRhYmxlOmJlZm9yZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZy5leHBhbmRhYmxlOmJlZm9yZSwuZHJvcGRvd24tbWVudSAu''@;'; put 'put ''YnRuLW91dGxpbmUtZGFuZ2VyLmV4cGFuZGFibGU6YmVmb3JlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzLmV4cGFuZGFibGU6YmVmb3JlLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmV4cGFuZGFibGU6YmVmb3JlLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeS5l''@;'; put 'put ''eHBhbmRhYmxlOmJlZm9yZSwuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmcuZXhwYW5kYWJsZTpiZWZvcmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLmV4cGFuZGFibGU6YmVmb3JlLC5kcm9wZG93bi1tZW51IC5idG4tbGluay5leHBhbmRhYmxlOmJlZm9yZSwuZHJvcGRvd24tbWVu''@;'; put 'put ''dSAuZHJvcGRvd24taXRlbS5leHBhbmRhYmxlOmJlZm9yZXtjb250ZW50OiIiO2Zsb2F0OnJpZ2h0O2hlaWdodDouNnJlbTt3aWR0aDouNnJlbTt0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0Nz''@;'; put 'put ''dmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEyJTIwMTIlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDc3R5bGUlM0UuY2xzLTElN0Jm''@;'; put 'put ''aWxsJTNBJTIzOWE5YTlhJTNCJTdEJTNDJTJGc3R5bGUlM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTNDdGl0bGUlM0VDYXJldCUzQyUyRnRpdGxlJTNFJTBBJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xzLTElMjIlMjBkJTNEJTIyTTYl''@;'; put 'put ''MkM5TDEuMiUyQzQuMmEwLjY4JTJDMC42OCUyQzAlMkMwJTJDMSUyQzEtMUw2JTJDNy4wOCUyQzkuODQlMkMzLjI0YTAuNjglMkMwLjY4JTJDMCUyQzElMkMxJTJDMSUyQzFaJTIyJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3Vu''@;'; put 'put ''ZC1zaXplOmNvbnRhaW47dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi10b3A6LjNyZW19LmRyb3Bkb3duLW1lbnUgLmJ0biwuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbXtwYWRkaW5nOi4xNXJlbSAxLjJyZW19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCl7LmRy''@;'; put 'put ''b3Bkb3duLW1lbnUgLmJ0biwuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbXtwYWRkaW5nOi4zcmVtIDEuMnJlbX19LmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWRpdmlkZXJ7Zm9udC1zaXplOi42cmVtO2JvcmRlci1ib3R0b20td2lkdGg6LjA1cmVtO2JvcmRlci1ib3R0b20td2lkdGg6''@;'; put 'put ''dmFyKC0tY2xyLWRyb3Bkb3duLWRpdmlkZXItYm9yZGVyLXdpZHRoLCAuMDVyZW0pO2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZThlOGU4O2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWRpdmlkZXItY29sb3IsICNlOGU4ZTgp''@;'; put 'put ''O21hcmdpbjouM3JlbSAwfS5idG4tZ3JvdXAtb3ZlcmZsb3cub3Blbj4uZHJvcGRvd24tbWVudSwuYnRuLWdyb3VwLW92ZXJmbG93Lm9wZW4+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy5vcGVuPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJm''@;'; put 'put ''bG93Lm9wZW4+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24ub3Blbj4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24ub3Blbj4uZHJvcGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51e3Zpc2liaWxpdHk6dmlzaWJsZX0uYnRuLWdyb3VwLW92ZXJm''@;'; put 'put ''bG93LmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51LC5idG4tZ3JvdXAtb3ZlcmZsb3cuYm90dG9tLXJpZ2h0Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVudSwu''@;'; put 'put ''ZHJvcGRvd24uYm90dG9tLWxlZnQ+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVudXt0b3A6MTAwJTtib3R0b206YXV0bzttYXJnaW46LjFyZW0gMCAwfS5idG4tZ3JvdXAtb3ZlcmZsb3cuYm90dG9tLWxlZnQ+LmRyb3Bkb3duLW1lbnUsLnRhYnMt''@;'; put 'put ''b3ZlcmZsb3cuYm90dG9tLWxlZnQ+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51e2xlZnQ6MDtyaWdodDphdXRvfS5idG4tZ3JvdXAtb3ZlcmZsb3cuYm90dG9tLXJpZ2h0Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmJvdHRvbS1yaWdo''@;'; put 'put ''dD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24uYm90dG9tLXJpZ2h0Pi5kcm9wZG93bi1tZW51e3JpZ2h0OjA7bGVmdDphdXRvfS5idG4tZ3JvdXAtb3ZlcmZsb3cudG9wLWxlZnQ+LmRyb3Bkb3duLW1lbnUsLmJ0bi1ncm91cC1vdmVyZmxvdy50b3AtcmlnaHQ+LmRyb3Bkb3duLW1lbnUsLnRh''@;'; put 'put ''YnMtb3ZlcmZsb3cudG9wLWxlZnQ+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cudG9wLXJpZ2h0Pi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi50b3AtbGVmdD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24udG9wLXJpZ2h0Pi5kcm9wZG93bi1tZW51e3RvcDphdXRvO2JvdHRvbToxMDAl''@;'; put 'put ''O21hcmdpbjowIDAgLjFyZW19LmJ0bi1ncm91cC1vdmVyZmxvdy50b3AtbGVmdD4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy50b3AtbGVmdD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24udG9wLWxlZnQ+LmRyb3Bkb3duLW1lbnV7bGVmdDowO3JpZ2h0OmF1dG99LmJ0bi1ncm91cC1v''@;'; put 'put ''dmVyZmxvdy50b3AtcmlnaHQ+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cudG9wLXJpZ2h0Pi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi50b3AtcmlnaHQ+LmRyb3Bkb3duLW1lbnV7cmlnaHQ6MDtsZWZ0OmF1dG99LmJ0bi1ncm91cC1vdmVyZmxvdy5sZWZ0LXRvcD4uZHJvcGRvd24t''@;'; put 'put ''bWVudSwuYnRuLWdyb3VwLW92ZXJmbG93LmxlZnQtYm90dG9tPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmxlZnQtdG9wPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmxlZnQtYm90dG9tPi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi5sZWZ0LXRvcD4uZHJvcGRvd24tbWVu''@;'; put 'put ''dSwuZHJvcGRvd24ubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnV7cmlnaHQ6MTAwJTtsZWZ0OmF1dG87bWFyZ2luOjAgLjFyZW0gMCAwfS5idG4tZ3JvdXAtb3ZlcmZsb3cubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1l''@;'; put 'put ''bnUsLmRyb3Bkb3duLmxlZnQtYm90dG9tPi5kcm9wZG93bi1tZW51e3RvcDowO2JvdHRvbTphdXRvfS5idG4tZ3JvdXAtb3ZlcmZsb3cubGVmdC10b3A+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cubGVmdC10b3A+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLmxlZnQtdG9wPi5kcm9w''@;'; put 'put ''ZG93bi1tZW51e2JvdHRvbTowO3RvcDphdXRvfS5idG4tZ3JvdXAtb3ZlcmZsb3cucmlnaHQtdG9wPi5kcm9wZG93bi1tZW51LC5idG4tZ3JvdXAtb3ZlcmZsb3cucmlnaHQtYm90dG9tPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudSwudGFi''@;'; put 'put ''cy1vdmVyZmxvdy5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24ucmlnaHQtYm90dG9tPi5kcm9wZG93bi1tZW51e2xlZnQ6MTAwJTtyaWdodDphdXRvO21hcmdpbjowIDAgMCAuMXJlbX0uYnRuLWdyb3VwLW92''@;'; put 'put ''ZXJmbG93LnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudXt0b3A6MDtib3R0b206YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93LnJpZ2h0LXRvcD4u''@;'; put 'put ''ZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy5yaWdodC10b3A+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudXtib3R0b206MDt0b3A6YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93biAuZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxv''@;'; put 'put ''dyAuZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duIC5kcm9wZG93biAuZHJvcGRvd24tbWVudXtib3JkZXItY29sb3I6I2IzYjNiMztib3JkZXItY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWNoaWxkLWJvcmRlci1jb2xvciwgI2IzYjNiMyk7cG9zaXRpb246YWJzb2x1dGV9LmJ0''@;'; put 'put ''bi1ncm91cC1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC10b3A+LmRyb3Bkb3duLW1lbnUsLmJ0bi1ncm91cC1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC10b3A+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC10b3A+LmRy''@;'; put 'put ''b3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cgLmRyb3Bkb3duLmxlZnQtdG9wPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duIC5kcm9wZG93bi5sZWZ0LXRvcD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24gLmRyb3Bkb3duLmxlZnQtdG9wPi5kcm9wZG93''@;'; put 'put ''bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnV7dG9wOjA7Ym90dG9tOmF1dG87bGVmdDphdXRvO3JpZ2h0OjEwMCU7bWFyZ2luLXRvcDotLjk1cmVtO21hcmdpbi1yaWdodDotLjJyZW19LmJ0bi1ncm91cC1vdmVyZmxvdyAuZHJvcGRvd24ucmlnaHQtdG9wPi5kcm9wZG93bi1tZW51LC5i''@;'; put 'put ''dG4tZ3JvdXAtb3ZlcmZsb3cgLmRyb3Bkb3duLnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93IC5kcm9wZG93bi5yaWdodC10b3A+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cgLmRyb3Bkb3duLnJpZ2h0LXRvcD4uZHJv''@;'; put 'put ''cGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51LC5kcm9wZG93biAuZHJvcGRvd24ucmlnaHQtdG9wPi5kcm9wZG93bi1tZW51LC5kcm9wZG93biAuZHJvcGRvd24ucmlnaHQtdG9wPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnV7dG9wOjA7Ym90dG9tOmF1dG87''@;'; put 'put ''bGVmdDoxMDAlO3JpZ2h0OmF1dG87bWFyZ2luLXRvcDotLjk1cmVtO21hcmdpbi1sZWZ0Oi0uMnJlbX0uYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwuYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRv''@;'; put 'put ''d24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93IC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwuZHJvcGRv''@;'; put 'put ''d24gLmRyb3Bkb3duLmxlZnQtYm90dG9tPi5kcm9wZG93bi1tZW51LC5kcm9wZG93biAuZHJvcGRvd24ubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudXt0b3A6YXV0bztib3R0b206MDtsZWZ0OmF1dG87cmlnaHQ6MTAwJTttYXJnaW4tYm90dG9tOi0u''@;'; put 'put ''OTVyZW07bWFyZ2luLXJpZ2h0Oi0uMnJlbX0uYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93bi5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLmJ0bi1ncm91cC1vdmVyZmxvdyAuZHJvcGRvd24ucmlnaHQtYm90dG9tPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnUs''@;'; put 'put ''LnRhYnMtb3ZlcmZsb3cgLmRyb3Bkb3duLnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdyAuZHJvcGRvd24ucmlnaHQtYm90dG9tPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duIC5kcm9wZG93bi5yaWdodC1ib3R0b20+LmRy''@;'; put 'put ''b3Bkb3duLW1lbnUsLmRyb3Bkb3duIC5kcm9wZG93bi5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudXt0b3A6YXV0bztib3R0b206MDtsZWZ0OjEwMCU7cmlnaHQ6YXV0bzttYXJnaW4tYm90dG9tOi0uOTVyZW07bWFyZ2luLWxlZnQ6LS4ycmVtfTpy''@;'; put 'put ''b290ey0tY2xyLWJhZGdlLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci1iYWRnZS1jb2xvcjp2YXIoLS1jbHItY29sb3Itb24tbmV1dHJhbC02MDApOy0tY2xyLWJhZGdlLWluZm8tYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi04MDAp''@;'; put 'put ''Oy0tY2xyLWJhZGdlLWluZm8tY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYmFkZ2Utc3VjY2Vzcy1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy04MDApOy0tY2xyLWJhZGdlLXN1Y2Nlc3MtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1j''@;'; put 'put ''bHItYmFkZ2Utd2FybmluZy1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3Itd2FybmluZy0xMDAwKTstLWNsci1iYWRnZS13YXJuaW5nLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWJhZGdlLWRhbmdlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTkwMCk7''@;'; put 'put ''LS1jbHItYmFkZ2UtZGFuZ2VyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWJhZGdlLWdyYXktYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci1iYWRnZS1ncmF5LWNvbG9yOnZhcigtLWNsci1iYWRnZS1mb250LWNvbG9yLWxpZ2h0KTst''@;'; put 'put ''LWNsci1iYWRnZS1wdXJwbGUtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tNTAwKTstLWNsci1iYWRnZS1wdXJwbGUtY29sb3I6dmFyKC0tY2xyLWJhZGdlLWZvbnQtY29sb3ItbGlnaHQpOy0tY2xyLWJhZGdlLWJsdWUtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9y''@;'; put 'put ''LWFjdGlvbi04MDApOy0tY2xyLWJhZGdlLWJsdWUtY29sb3I6dmFyKC0tY2xyLWJhZGdlLWZvbnQtY29sb3ItbGlnaHQpOy0tY2xyLWJhZGdlLW9yYW5nZS1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3Itd2FybmluZy0xMDAwKTstLWNsci1iYWRnZS1vcmFuZ2UtY29sb3I6dmFyKC0tY2xyLWNv''@;'; put 'put ''bG9yLW5ldXRyYWwtMCk7LS1jbHItYmFkZ2UtbGlnaHQtYmx1ZS1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTUwMCk7LS1jbHItYmFkZ2UtbGlnaHQtYmx1ZS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKX0uYmFkZ2V7ZGlzcGxheTppbmxpbmUtZmxleDt2ZXJ0aWNh''@;'; put 'put ''bC1hbGlnbjptaWRkbGU7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWluLXdpZHRoOi43NXJlbTtiYWNrZ3JvdW5kOiM4YzhjOGM7aGVpZ2h0Oi43NXJlbTtsaW5lLWhlaWdodDpub3JtYWw7Ym9yZGVyLXJhZGl1czouNXJlbTtmb250LXNpemU6LjVyZW07cGFk''@;'; put 'put ''ZGluZzowIC4ycmVtO21hcmdpbi1yaWdodDouM3JlbTt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtZm9udC1jb2xvci1saWdodCwgd2hpdGUpfS5iYWRnZTp2aXNpdGVke2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWJhZGdlLWZvbnQtY29sb3ItbGlnaHQsIHdoaXRlKX0uYmFkZ2UuYmFkZ2UtZ3JheSwuYmFkZ2UuYmFkZ2UtMXtiYWNrZ3JvdW5kOiM4YzhjOGM7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2UtZ3JheS1iZy1jb2xvciwgIzhjOGM4Yyk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''YmFkZ2UtZ3JheS1jb2xvciwgd2hpdGUpfS5iYWRnZS5iYWRnZS1wdXJwbGUsLmJhZGdlLmJhZGdlLTJ7YmFja2dyb3VuZDojOWU1N2JjO2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLXB1cnBsZS1iZy1jb2xvciwgIzllNTdiYyk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2Ut''@;'; put 'put ''cHVycGxlLWNvbG9yLCB3aGl0ZSl9LmJhZGdlLmJhZGdlLWJsdWUsLmJhZGdlLmJhZGdlLTN7YmFja2dyb3VuZDojMDA1NjdhO2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLWJsdWUtYmctY29sb3IsICMwMDU2N2EpO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLWJsdWUtY29s''@;'; put 'put ''b3IsIHdoaXRlKX0uYmFkZ2UuYmFkZ2Utb3JhbmdlLC5iYWRnZS5iYWRnZS00e2JhY2tncm91bmQ6IzYxMzIwMDtiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1vcmFuZ2UtYmctY29sb3IsICM2MTMyMDApO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLW9yYW5nZS1jb2xvciwg''@;'; put 'put ''d2hpdGUpfS5iYWRnZS5iYWRnZS1saWdodC1ibHVlLC5iYWRnZS5iYWRnZS01e2JhY2tncm91bmQ6IzE3OWJkMztiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1saWdodC1ibHVlLWJnLWNvbG9yLCAjMTc5YmQzKTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1iYWRnZS1saWdodC1ibHVl''@;'; put 'put ''LWNvbG9yLCB3aGl0ZSl9LmJhZGdlLmJhZGdlLWluZm97YmFja2dyb3VuZDojMDA1NjdhO2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLWluZm8tYmctY29sb3IsICMwMDU2N2EpO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLWluZm8tY29sb3IsIHdoaXRlKX0uYmFkZ2UuYmFk''@;'; put 'put ''Z2Utc3VjY2Vzc3tiYWNrZ3JvdW5kOiMzMDZiMDA7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2Utc3VjY2Vzcy1iZy1jb2xvciwgIzMwNmIwMCk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2Utc3VjY2Vzcy1jb2xvciwgd2hpdGUpfS5iYWRnZS5iYWRnZS1kYW5nZXJ7YmFja2dy''@;'; put 'put ''b3VuZDojOTkxNzAwO2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLWRhbmdlci1iZy1jb2xvciwgIzk5MTcwMCk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtZGFuZ2VyLWNvbG9yLCB3aGl0ZSl9LmJhZGdlLmJhZGdlLXdhcm5pbmd7YmFja2dyb3VuZDojNjEzMjAwO2JhY2tn''@;'; put 'put ''cm91bmQ6dmFyKC0tY2xyLWJhZGdlLXdhcm5pbmctYmctY29sb3IsICM2MTMyMDApO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLXdhcm5pbmctY29sb3IsIHdoaXRlKX1fOi1tcy1pbnB1dC1wbGFjZWhvbGRlciAuYmFkZ2UsOnJvb3QgLmJhZGdle3BhZGRpbmc6LjFyZW0gLjE1''@;'; put 'put ''cmVtIDB9QHN1cHBvcnRzICgtbXMtaW1lLWFsaWduOmF1dG8pey5iYWRnZXtwYWRkaW5nOi4xcmVtIC4xNXJlbSAwfX06cm9vdHstLWNsci1sYWJlbC1mb250LWNvbG9yLWxpZ2h0OnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTEwMDApOy0tY2xyLWxhYmVsLWZvbnQtY29sb3ItZGFyazp2YXIo''@;'; put 'put ''LS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1sYWJlbC1kZWZhdWx0LWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDApOy0tY2xyLWxhYmVsLWZvbnQtc2l6ZTouNTVyZW07LS1jbHItbGFiZWwtZm9udC13ZWlnaHQ6NDAwOy0tY2xyLWxhYmVsLWxldHRlci1z''@;'; put 'put ''cGFjaW5nOi4wM2VtOy0tY2xyLWxhYmVsLWJvcmRlci1yYWRpdXM6LjZyZW07LS1jbHItbGFiZWwtYmctaG92ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMjAwKTstLWNsci1sYWJlbC1ncmF5LWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTYwMCk7LS1jbHItbGFi''@;'; put 'put ''ZWwtZ3JheS1jb2xvcjp2YXIoLS1jbHItbGFiZWwtZm9udC1jb2xvci1saWdodCk7LS1jbHItbGFiZWwtcHVycGxlLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTUwMCk7LS1jbHItbGFiZWwtcHVycGxlLWNvbG9yOnZhcigtLWNsci1sYWJlbC1mb250LWNvbG9y''@;'; put 'put ''LWxpZ2h0KTstLWNsci1sYWJlbC1ibHVlLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tODAwKTstLWNsci1sYWJlbC1ibHVlLWNvbG9yOnZhcigtLWNsci1sYWJlbC1mb250LWNvbG9yLWxpZ2h0KTstLWNsci1sYWJlbC1vcmFuZ2UtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLXdh''@;'; put 'put ''cm5pbmctMTAwMCk7LS1jbHItbGFiZWwtb3JhbmdlLWNvbG9yOnZhcigtLWNsci1sYWJlbC1mb250LWNvbG9yLWRhcmspOy0tY2xyLWxhYmVsLWxpZ2h0LWJsdWUtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi01MDApOy0tY2xyLWxhYmVsLWxpZ2h0LWJsdWUtY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWxhYmVsLWZvbnQtY29sb3ItZGFyayk7LS1jbHItbGFiZWwtaW5mby1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTUwKTstLWNsci1sYWJlbC1pbmZvLWZvbnQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi04MDApOy0tY2xyLWxhYmVsLWluZm8tYm9yZGVyLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1jb2xvci1hY3Rpb24tODAwKTstLWNsci1sYWJlbC1zdWNjZXNzLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTUwKTstLWNsci1sYWJlbC1zdWNjZXNzLWZvbnQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtODAwKTstLWNsci1sYWJlbC1zdWNjZXNz''@;'; put 'put ''LWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy04MDApOy0tY2xyLWxhYmVsLXdhcm5pbmctYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLXdhcm5pbmctMTAwKTstLWNsci1sYWJlbC13YXJuaW5nLWZvbnQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtOTAwKTstLWNs''@;'; put 'put ''ci1sYWJlbC13YXJuaW5nLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3Itd2FybmluZy04MDApOy0tY2xyLWxhYmVsLWRhbmdlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTEwMCk7LS1jbHItbGFiZWwtZGFuZ2VyLWZvbnQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdl''@;'; put 'put ''ci05MDApOy0tY2xyLWxhYmVsLWRhbmdlci1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci05MDApfS5sYWJlbCxhLmxhYmVse2ZvbnQtc2l6ZTouNTVyZW07Zm9udC1zaXplOnZhcigtLWNsci1sYWJlbC1mb250LXNpemUsIC41NXJlbSk7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQt''@;'; put 'put ''d2VpZ2h0OnZhcigtLWNsci1sYWJlbC1mb250LXdlaWdodCwgNDAwKTtsZXR0ZXItc3BhY2luZzouMDNlbTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jbHItbGFiZWwtbGV0dGVyLXNwYWNpbmcsIC4wM2VtKTtsaW5lLWhlaWdodDouNnJlbTtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29u''@;'; put 'put ''dGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6MCAuNnJlbTtib3JkZXItcmFkaXVzOi42cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWxhYmVsLWJvcmRlci1yYWRpdXMsIC42cmVtKTtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojOGM4YzhjO2JvcmRl''@;'; put 'put ''ci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtZGVmYXVsdC1ib3JkZXItY29sb3IsICM4YzhjOGMpO2hlaWdodDoxLjA1cmVtO21hcmdpbjowIC4zcmVtIC4wNXJlbSAwO3doaXRlLXNwYWNlOm5vd3JhcDtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1sYWJlbC1mb250LWNvbG9yLWxpZ2h0LCBi''@;'; put 'put ''bGFjayl9LmxhYmVsOnZpc2l0ZWQsYS5sYWJlbDp2aXNpdGVke2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLWxhYmVsLWZvbnQtY29sb3ItbGlnaHQsIGJsYWNrKX0ubGFiZWw6Zm9jdXMsLmxhYmVsOmhvdmVyLC5sYWJlbDphY3RpdmUsYS5sYWJlbDpmb2N1cyxhLmxhYmVsOmhvdmVyLGEu''@;'; put 'put ''bGFiZWw6YWN0aXZle3RleHQtZGVjb3JhdGlvbjpub25lfS5sYWJlbC5jbGlja2FibGU6aG92ZXIsLmxhYmVsLmNsaWNrYWJsZTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGU6aG92ZXIsYS5sYWJlbC5jbGlja2FibGU6YWN0aXZle2JhY2tncm91bmQ6I2U4ZThlODtiYWNrZ3JvdW5kOnZhcigt''@;'; put 'put ''LWNsci1sYWJlbC1iZy1ob3Zlci1jb2xvciwgI2U4ZThlOCl9LmxhYmVsLmNsaWNrYWJsZTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGU6YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gIzhjOGM4YyBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItbGFiZWwtZ3JheS1i''@;'; put 'put ''Zy1jb2xvciwgIzhjOGM4YykgaW5zZXQ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLjVweCl9LmxhYmVsLmxhYmVsLWdyYXksLmxhYmVsLmxhYmVsLTEsYS5sYWJlbC5sYWJlbC1ncmF5LGEubGFiZWwubGFiZWwtMXtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojOGM4YzhjO2JvcmRl''@;'; put 'put ''ci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtZ3JheS1iZy1jb2xvciwgIzhjOGM4Yyl9LmxhYmVsLmNsaWNrYWJsZS5sYWJlbC1ncmF5OmhvdmVyLC5sYWJlbC5jbGlja2FibGUubGFiZWwtZ3JheTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtZ3JheTpob3ZlcixhLmxhYmVsLmNsaWNr''@;'; put 'put ''YWJsZS5sYWJlbC1ncmF5OmFjdGl2ZXt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtYmctaG92ZXItY29sb3IsICNlOGU4ZTgpfS5sYWJlbC5jbGlja2FibGUubGFiZWwtZ3JheTphY3RpdmUsYS5sYWJlbC5jbGlja2Fi''@;'; put 'put ''bGUubGFiZWwtZ3JheTphY3RpdmV7Ym94LXNoYWRvdzowIC4wNXJlbSAjOGM4YzhjIGluc2V0O2JveC1zaGFkb3c6MCAuMDVyZW0gMCAwIHZhcigtLWNsci1sYWJlbC1ncmF5LWJnLWNvbG9yLCAjOGM4YzhjKSBpbnNldDt0cmFuc2Zvcm06dHJhbnNsYXRlWSguNXB4KX0ubGFiZWwubGFiZWwt''@;'; put 'put ''Z3JheT4uYmFkZ2UsYS5sYWJlbC5sYWJlbC1ncmF5Pi5iYWRnZXtiYWNrZ3JvdW5kOiM4YzhjOGM7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2UtZ3JheS1iZy1jb2xvciwgIzhjOGM4Yyk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtZ3JheS1jb2xvciwgd2hpdGUpfS5sYWJl''@;'; put 'put ''bC5sYWJlbC1wdXJwbGUsLmxhYmVsLmxhYmVsLTIsYS5sYWJlbC5sYWJlbC1wdXJwbGUsYS5sYWJlbC5sYWJlbC0ye2JvcmRlcjouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiM5ZTU3YmM7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1sYWJlbC1wdXJwbGUtYmctY29sb3IsICM5ZTU3YmMpfS5s''@;'; put 'put ''YWJlbC5jbGlja2FibGUubGFiZWwtcHVycGxlOmhvdmVyLC5sYWJlbC5jbGlja2FibGUubGFiZWwtcHVycGxlOmFjdGl2ZSxhLmxhYmVsLmNsaWNrYWJsZS5sYWJlbC1wdXJwbGU6aG92ZXIsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtcHVycGxlOmFjdGl2ZXt0ZXh0LWRlY29yYXRpb246bm9u''@;'; put 'put ''ZTtiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtYmctaG92ZXItY29sb3IsICNlOGU4ZTgpfS5sYWJlbC5jbGlja2FibGUubGFiZWwtcHVycGxlOmFjdGl2ZSxhLmxhYmVsLmNsaWNrYWJsZS5sYWJlbC1wdXJwbGU6YWN0aXZle2JveC1zaGFkb3c6MCAuMDVy''@;'; put 'put ''ZW0gIzllNTdiYyBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItbGFiZWwtcHVycGxlLWJnLWNvbG9yLCAjOWU1N2JjKSBpbnNldDt0cmFuc2Zvcm06dHJhbnNsYXRlWSguNXB4KX0ubGFiZWwubGFiZWwtcHVycGxlPi5iYWRnZSxhLmxhYmVsLmxhYmVsLXB1cnBsZT4u''@;'; put 'put ''YmFkZ2V7YmFja2dyb3VuZDojOWU1N2JjO2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLXB1cnBsZS1iZy1jb2xvciwgIzllNTdiYyk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtcHVycGxlLWNvbG9yLCB3aGl0ZSl9LmxhYmVsLmxhYmVsLWJsdWUsLmxhYmVsLmxhYmVsLTMs''@;'; put 'put ''YS5sYWJlbC5sYWJlbC1ibHVlLGEubGFiZWwubGFiZWwtM3tib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojMDA1NjdhO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtYmx1ZS1iZy1jb2xvciwgIzAwNTY3YSl9LmxhYmVsLmNsaWNrYWJsZS5sYWJlbC1ibHVlOmhvdmVyLC5s''@;'; put 'put ''YWJlbC5jbGlja2FibGUubGFiZWwtYmx1ZTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtYmx1ZTpob3ZlcixhLmxhYmVsLmNsaWNrYWJsZS5sYWJlbC1ibHVlOmFjdGl2ZXt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHIt''@;'; put 'put ''bGFiZWwtYmctaG92ZXItY29sb3IsICNlOGU4ZTgpfS5sYWJlbC5jbGlja2FibGUubGFiZWwtYmx1ZTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtYmx1ZTphY3RpdmV7Ym94LXNoYWRvdzowIC4wNXJlbSAjMDA1NjdhIGluc2V0O2JveC1zaGFkb3c6MCAuMDVyZW0gMCAwIHZhcigt''@;'; put 'put ''LWNsci1sYWJlbC1ibHVlLWJnLWNvbG9yLCAjMDA1NjdhKSBpbnNldDt0cmFuc2Zvcm06dHJhbnNsYXRlWSguNXB4KX0ubGFiZWwubGFiZWwtYmx1ZT4uYmFkZ2UsYS5sYWJlbC5sYWJlbC1ibHVlPi5iYWRnZXtiYWNrZ3JvdW5kOiMwMDU2N2E7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2Ut''@;'; put 'put ''Ymx1ZS1iZy1jb2xvciwgIzAwNTY3YSk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtYmx1ZS1jb2xvciwgd2hpdGUpfS5sYWJlbC5sYWJlbC1vcmFuZ2UsLmxhYmVsLmxhYmVsLTQsYS5sYWJlbC5sYWJlbC1vcmFuZ2UsYS5sYWJlbC5sYWJlbC00e2JvcmRlcjouMDVyZW0gc29s''@;'; put 'put ''aWQ7Ym9yZGVyLWNvbG9yOiM2MTMyMDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1sYWJlbC1vcmFuZ2UtYmctY29sb3IsICM2MTMyMDApfS5sYWJlbC5jbGlja2FibGUubGFiZWwtb3JhbmdlOmhvdmVyLC5sYWJlbC5jbGlja2FibGUubGFiZWwtb3JhbmdlOmFjdGl2ZSxhLmxhYmVsLmNsaWNr''@;'; put 'put ''YWJsZS5sYWJlbC1vcmFuZ2U6aG92ZXIsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtb3JhbmdlOmFjdGl2ZXt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtYmctaG92ZXItY29sb3IsICNlOGU4ZTgpfS5sYWJlbC5jbGlj''@;'; put 'put ''a2FibGUubGFiZWwtb3JhbmdlOmFjdGl2ZSxhLmxhYmVsLmNsaWNrYWJsZS5sYWJlbC1vcmFuZ2U6YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gIzYxMzIwMCBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItbGFiZWwtb3JhbmdlLWJnLWNvbG9yLCAjNjEzMjAwKSBp''@;'; put 'put ''bnNldDt0cmFuc2Zvcm06dHJhbnNsYXRlWSguNXB4KX0ubGFiZWwubGFiZWwtb3JhbmdlPi5iYWRnZSxhLmxhYmVsLmxhYmVsLW9yYW5nZT4uYmFkZ2V7YmFja2dyb3VuZDojNjEzMjAwO2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLW9yYW5nZS1iZy1jb2xvciwgIzYxMzIwMCk7Y29sb3I6''@;'; put 'put ''I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2Utb3JhbmdlLWNvbG9yLCB3aGl0ZSl9LmxhYmVsLmxhYmVsLWxpZ2h0LWJsdWUsLmxhYmVsLmxhYmVsLTUsYS5sYWJlbC5sYWJlbC1saWdodC1ibHVlLGEubGFiZWwubGFiZWwtNXtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojMTc5''@;'; put 'put ''YmQzO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtbGlnaHQtYmx1ZS1iZy1jb2xvciwgIzE3OWJkMyl9LmxhYmVsLmNsaWNrYWJsZS5sYWJlbC1saWdodC1ibHVlOmhvdmVyLC5sYWJlbC5jbGlja2FibGUubGFiZWwtbGlnaHQtYmx1ZTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGUubGFi''@;'; put 'put ''ZWwtbGlnaHQtYmx1ZTpob3ZlcixhLmxhYmVsLmNsaWNrYWJsZS5sYWJlbC1saWdodC1ibHVlOmFjdGl2ZXt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtYmctaG92ZXItY29sb3IsICNlOGU4ZTgpfS5sYWJlbC5jbGlj''@;'; put 'put ''a2FibGUubGFiZWwtbGlnaHQtYmx1ZTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtbGlnaHQtYmx1ZTphY3RpdmV7Ym94LXNoYWRvdzowIC4wNXJlbSAjMTc5YmQzIGluc2V0O2JveC1zaGFkb3c6MCAuMDVyZW0gMCAwIHZhcigtLWNsci1sYWJlbC1saWdodC1ibHVlLWJnLWNvbG9y''@;'; put 'put ''LCAjMTc5YmQzKSBpbnNldDt0cmFuc2Zvcm06dHJhbnNsYXRlWSguNXB4KX0ubGFiZWwubGFiZWwtbGlnaHQtYmx1ZT4uYmFkZ2UsYS5sYWJlbC5sYWJlbC1saWdodC1ibHVlPi5iYWRnZXtiYWNrZ3JvdW5kOiMxNzliZDM7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2UtbGlnaHQtYmx1ZS1i''@;'; put 'put ''Zy1jb2xvciwgIzE3OWJkMyk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtbGlnaHQtYmx1ZS1jb2xvciwgd2hpdGUpfS5sYWJlbC5sYWJlbC1pbmZvLGEubGFiZWwubGFiZWwtaW5mb3tiYWNrZ3JvdW5kOiNlM2Y1ZmM7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtaW5mby1i''@;'; put 'put ''Zy1jb2xvciwgI2UzZjVmYyk7Y29sb3I6IzAwNTY3YTtjb2xvcjp2YXIoLS1jbHItbGFiZWwtaW5mby1mb250LWNvbG9yLCAjMDA1NjdhKTtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojMDA1NjdhO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtaW5mby1ib3JkZXItY29s''@;'; put 'put ''b3IsICMwMDU2N2EpfS5sYWJlbC5sYWJlbC1zdWNjZXNzLGEubGFiZWwubGFiZWwtc3VjY2Vzc3tiYWNrZ3JvdW5kOiNkZmYwZDA7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtc3VjY2Vzcy1iZy1jb2xvciwgI2RmZjBkMCk7Y29sb3I6IzMwNmIwMDtjb2xvcjp2YXIoLS1jbHItbGFiZWwt''@;'; put 'put ''c3VjY2Vzcy1mb250LWNvbG9yLCAjMzA2YjAwKTtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojMzA2YjAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtc3VjY2Vzcy1ib3JkZXItY29sb3IsICMzMDZiMDApfS5sYWJlbC5sYWJlbC13YXJuaW5nLGEubGFiZWwubGFiZWwt''@;'; put 'put ''d2FybmluZ3tiYWNrZ3JvdW5kOiNmZmY0Yzc7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtd2FybmluZy1iZy1jb2xvciwgI2ZmZjRjNyk7Y29sb3I6IzMzMztjb2xvcjp2YXIoLS1jbHItbGFiZWwtd2FybmluZy1mb250LWNvbG9yLCAjMzMzMzMzKTtib3JkZXI6LjA1cmVtIHNvbGlkO2Jv''@;'; put 'put ''cmRlci1jb2xvcjojYWQ3NjAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtd2FybmluZy1ib3JkZXItY29sb3IsICNhZDc2MDApfS5sYWJlbC5sYWJlbC1kYW5nZXIsYS5sYWJlbC5sYWJlbC1kYW5nZXJ7YmFja2dyb3VuZDojZmVkZGQ3O2JhY2tncm91bmQ6dmFyKC0tY2xyLWxhYmVs''@;'; put 'put ''LWRhbmdlci1iZy1jb2xvciwgI2ZlZGRkNyk7Y29sb3I6Izk5MTcwMDtjb2xvcjp2YXIoLS1jbHItbGFiZWwtZGFuZ2VyLWZvbnQtY29sb3IsICM5OTE3MDApO2JvcmRlcjouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiM5OTE3MDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1sYWJlbC1kYW5n''@;'; put 'put ''ZXItYm9yZGVyLWNvbG9yLCAjOTkxNzAwKX0ubGFiZWw+LmJhZGdlLGEubGFiZWw+LmJhZGdle21hcmdpbjowIC0uNDVyZW0gMCAuM3JlbX1ALW1vei1kb2N1bWVudCB1cmwtcHJlZml4KCl7LmxhYmVsLGEubGFiZWx7dmVydGljYWwtYWxpZ246Ym90dG9tfX06cm9vdHstLWNsci1sb2dpbi10''@;'; put 'put ''aXRsZS1jb2xvcjp2YXIoLS1jbHItaDEtY29sb3IpOy0tY2xyLWxvZ2luLXRpdGxlLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1oMS1mb250LXdlaWdodCk7LS1jbHItbG9naW4tdGl0bGUtZm9udC1mYW1pbHk6dmFyKC0tY2xyLWgxLWZvbnQtZmFtaWx5KTstLWNsci1sb2dpbi10cmFkZW1hcmst''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWgyLWNvbG9yKTstLWNsci1sb2dpbi10cmFkZW1hcmstZm9udC13ZWlnaHQ6dmFyKC0tY2xyLWgyLWZvbnQtd2VpZ2h0KTstLWNsci1sb2dpbi10cmFkZW1hcmstZm9udC1mYW1pbHk6dmFyKC0tY2xyLWgyLWZvbnQtZmFtaWx5KTstLWNsci1sb2dpbi1zdWJ0aXRs''@;'; put 'put ''ZS1jb2xvcjp2YXIoLS1jbHItaDMtY29sb3IpOy0tY2xyLWxvZ2luLXN1YnRpdGxlLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1oMy1mb250LXdlaWdodCk7LS1jbHItbG9naW4tc3VidGl0bGUtZm9udC1mYW1pbHk6dmFyKC0tY2xyLWgzLWZvbnQtZmFtaWx5KTstLWNsci1sb2dpbi1iYWNrZ3Jv''@;'; put 'put ''dW5kLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtYXBwLWJhY2tncm91bmQpOy0tY2xyLWxvZ2luLWJhY2tncm91bmQ6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDJTNGeG1sJTIwdmVyc2lvbiUzRCUyMjEuMCUyMiUyMGVuY29kaW5nJTNEJTIydXRmLTglMjIlM0YlM0Ul''@;'; put 'put ''MEQlMEElM0MlMjFET0NUWVBFJTIwc3ZnJTIwUFVCTElDJTIwJTIyLSUyRiUyRlczQyUyRiUyRkRURCUyMFNWRyUyMDEuMSUyRiUyRkVOJTIyJTIwJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkZHcmFwaGljcyUyRlNWRyUyRjEuMSUyRkRURCUyRnN2ZzExLmR0ZCUyMiUzRSUwRCUwQSUz''@;'; put 'put ''Q3N2ZyUwRCUwQSUyMCUyMCUyMCUyMCUyMHZlcnNpb24lM0QlMjIxLjElMjIlMEQlMEElMjAlMjAlMjAlMjAlMjBpZCUzRCUyMm5vLWFzcGVjdC1yYXRpbyUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTBE''@;'; put 'put ''JTBBJTIwJTIwJTIwJTIwJTIweG1sbnMlM0F4bGluayUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhsaW5rJTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIweCUzRCUyMjBweCUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHklM0QlMjIwcHglMjIlMEQlMEElMjAlMjAlMjAlMjAl''@;'; put 'put ''MjBoZWlnaHQlM0QlMjIyMDU1LjU1cHglMjIlMEQlMEElMjAlMjAlMjAlMjAlMjB3aWR0aCUzRCUyMjE0NDBweCUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDIwNTUuNTUlMjAxNDQwJTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIwcHJlc2VydmVBc3BlY3RSYXRp''@;'; put 'put ''byUzRCUyMnhNaW5ZTWluJTIwc2xpY2UlMjIlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NkZXNjJTNFTG9naW4lMjBJbWFnZSUzQyUyRmRlc2MlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NnJTIwc3Ryb2tlJTNEJTIybm9u''@;'; put 'put ''ZSUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjElMjIlMjBmaWxsJTNEJTIybm9uZSUyMiUyMGZpbGwtcnVsZSUzRCUyMmV2ZW5vZGQlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgwLjAwMDAwMCUyQyUyMC00LjAwMDAwMCUyOSUyMiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUzQ2clM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NnJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjNGQUZBRkElMjIlMjB4JTNEJTIyMCUyMiUyMHkl''@;'; put 'put ''M0QlMjI0JTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzMDA3Q0JCJTIyJTIwb3BhY2l0eSUzRCUyMjAuNCUyMiUyMHN0eWxlJTNEJTIybWl4LWJsZW5kLW1vZGUl''@;'; put 'put ''M0ElMjBtdWx0aXBseSUzQiUyMiUyMHBvaW50cyUzRCUyMjExMDguNDMlMjAxNDQzLjYzJTIwMTEwOS4wOCUyMDE0NDMuNjMlMjA0NDMuNDQlMjA3NzcuNzQlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5M0Q4Q0ElMjIlMjBvcGFjaXR5JTNEJTIyMC42JTIyJTIwc3R5bGUlM0QlMjJtaXgtYmxlbmQtbW9kZSUzQSUyMG92ZXJsYXklM0IlMjIlMjBwb2ludHMlM0QlMjIwLjc5JTIwMzM0LjkyJTIwNDQzLjQ0JTIwNzc3Ljc0JTIwMC43OSUyMDMzNC40''@;'; put 'put ''OSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjAuNzklMjAyMTEuODglMjAwLjc5JTIwMzI5LjYlMjA1OS42MiUy''@;'; put 'put ''MDI3MC43NyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjE2MC42NSUyMDE2OS43NCUyMDAuNzklMjA5LjczJTIw''@;'; put 'put ''MC43OSUyMDIxMS44OCUyMDkwLjI3JTIwMzAxLjQ2JTIwNTkuNjIlMjAyNzAuNzclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNDREUzRUUlMjIlMjBwb2lu''@;'; put 'put ''dHMlM0QlMjI1MDMuNzclMjAxNDQzLjYzJTIwNjk3LjQ3JTIwMTQ0My42MyUyMDgwMy43NCUyMDEzMzcuMzYlMjA3MDYuOTMlMjAxMjQwLjQzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHln''@;'; put 'put ''b24lMjBmaWxsJTNEJTIyJTIzQ0RFM0VFJTIyJTIwcG9pbnRzJTNEJTIyMTU4LjMzJTIwNjkxLjE1JTIwMC43OSUyMDg0OC43MiUyMDAuNzklMjAxNDI3LjQzJTIwNDQ3LjUyJTIwOTgwLjclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNDRURERTAlMjIlMjBwb2ludHMlM0QlMjIyNTcuNzElMjA1OTEuNzUlMjAwLjc5JTIwMzM0LjQ5JTIwMC43OSUyMDUzMy40MiUyMDE1OC4zMyUyMDY5MS4xNSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0E5QzlENSUyMiUyMHBvaW50cyUzRCUyMjAuNzklMjA1MzMuNDIlMjAwLjc5JTIwODQ4LjcyJTIwMTU4LjMzJTIwNjkxLjE1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUw''@;'; put 'put ''RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQUZENEU3JTIyJTIwcG9pbnRzJTNEJTIyODA2LjQ2JTIwMTE0MC44OSUyMDU0Ni45NCUyMDg4MS4yOCUyMDQ0Ny41MiUyMDk4MC43JTIwNzA2LjkzJTIw''@;'; put 'put ''MTI0MC40MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzhGQzRERiUyMiUyMHBvaW50cyUzRCUyMjQ0Ny41MiUyMDk4MC43JTIwMC43OSUyMDE0MjcuNDMl''@;'; put 'put ''MjAwLjc5JTIwMTQ0My42MyUyMDUwMy43NyUyMDE0NDMuNjMlMjA3MDYuOTMlMjAxMjQwLjQzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNzBDMERDJTIy''@;'; put 'put ''JTIwcG9pbnRzJTNEJTIyNjA4LjIzJTIwODE5Ljk5JTIwNTQ2Ljk0JTIwODgxLjI4JTIwODA2LjQ2JTIwMTE0MC44OSUyMDg2Ny42NCUyMDEwNzkuNyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nw''@;'; put 'put ''b2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjQyMC4wNSUyMDQyOS4zOSUyMDMxOS4wMSUyMDUzMC40NSUyMDYwOC4yMyUyMDgxOS45OSUyMDcwOS4zJTIwNzE4LjkxJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNjlBRkQ0JTIyJTIwcG9pbnRzJTNEJTIyNzA5LjMlMjA3MTguOTElMjA2MDguMjMlMjA4MTkuOTklMjA4NjcuNjQlMjAxMDc5LjclMjA5NjguNzQlMjA5NzguNiUyMiUzRSUzQyUyRnBvbHlnb24lM0Ul''@;'; put 'put ''MEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzhFQjVCQyUyMiUyMHBvaW50cyUzRCUyMjYxOS41OSUyMDIyOS44MiUyMDM5My40MiUyMDMuMTIlMjAzMjcuMjclMjAzLjEyJTIwMTYwLjY1JTIwMTY5''@;'; put 'put ''Ljc0JTIwNDIwLjA1JTIwNDI5LjM5JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOEVCNUJDJTIyJTIwcG9pbnRzJTNEJTIyMzE5LjAxJTIwNTMwLjQ1JTIw''@;'; put 'put ''MzE5LjAxJTIwNTMwLjQ1JTIwOTAuMjclMjAzMDEuNDYlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3Q0IwQzclMjIlMjBwb2ludHMlM0QlMjIxNjAuNjUl''@;'; put 'put ''MjAxNjkuNzQlMjA1OS42MiUyMDI3MC43NyUyMDkwLjI3JTIwMzAxLjQ2JTIwMzE5LjAxJTIwNTMwLjQ1JTIwNDIwLjA1JTIwNDI5LjM5JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24l''@;'; put 'put ''MjBmaWxsJTNEJTIyJTIzODRDNEQyJTIyJTIwcG9pbnRzJTNEJTIyNTkuNjIlMjAyNzAuNzclMjAwLjc5JTIwMzI5LjYlMjAwLjc5JTIwMzM0LjQ5JTIwMjU3LjcxJTIwNTkxLjc1JTIwMzE5LjAxJTIwNTMwLjQ1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzN0NCMEM3JTIyJTIwcG9pbnRzJTNEJTIyNTM3LjU1JTIwMy4xMiUyMDM5My40MiUyMDMuMTIlMjA2MTkuNTklMjAyMjkuODIlMjA2OTEuNzQlMjAxNTcuNjYlMjIlM0UlM0MlMkZwb2x5Z29u''@;'; put 'put ''JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM4N0QxREIlMjIlMjBwb2ludHMlM0QlMjI4NDYuMjUlMjAzLjEyJTIwNTM3LjU1JTIwMy4xMiUyMDY5MS43NCUyMDE1Ny42NiUyMiUzRSUzQyUy''@;'; put 'put ''RnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0NERTNFRSUyMiUyMHBvaW50cyUzRCUyMjkwOS44NyUyMDE0NDMuNjMlMjA4NTAuMTklMjAxMzgzLjg3JTIwNzkwLjQzJTIwMTQ0''@;'; put 'put ''My42MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjMxOS4wMSUyMDUzMC40NSUyMDI1Ny43MSUyMDU5MS43NSUy''@;'; put 'put ''MDQ0My40NCUyMDc3Ny43NCUyMDU0Ni45NCUyMDg4MS4yOCUyMDYwOC4yMyUyMDgxOS45OSUyMDg2Ny42NCUyMDEwNzkuNyUyMDg2Ny42NCUyMDEwNzkuNyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''M0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjg2Ny42NCUyMDEwNzkuNyUyMDgwNi40NiUyMDExNDAuODklMjA5MDMuMzElMjAxMjM3Ljc4JTIwOTY0LjQ2JTIwMTE3Ni42MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjEwNjUuNTclMjAxMDc1LjUyJTIwOTY4Ljc0JTIwOTc4LjYlMjA4NjcuNjQlMjAxMDc5LjclMjA5NjQuNDYlMjAxMTc2LjYzJTIyJTNFJTNDJTJG''@;'; put 'put ''cG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIyOTY0LjQ2JTIwMTE3Ni42MyUyMDg2Ny42NCUyMDEwNzkuNyUyMDg2Ny42NCUyMDEwNzku''@;'; put 'put ''NyUyMDk2NC40NiUyMDExNzYuNjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjIxMDEwLjkyJTIwMTIyMy4xMyUy''@;'; put 'put ''MDEyMzEuMTYlMjAxNDQzLjYzJTIwMTAxMC45MiUyMDEyMjMuMTMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjIx''@;'; put 'put ''MjQwLjA4JTIwNzA3LjIyJTIwMTE2Ny45JTIwNzc5LjQlMjAxMjY0LjY4JTIwODc2LjQlMjAxMzM2Ljg3JTIwODA0LjIyJTIwMTI0MC4wOCUyMDcwNy4yMSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''M0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjk4MC44MyUyMDQ0Ny4zOSUyMDY5MS43NCUyMDE1Ny42NiUyMDYxOS41OSUyMDIyOS44MiUyMDkwOC42NiUyMDUxOS41NiUyMDk4MC44MyUyMDQ0Ny4zOSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEEl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0FGRDRFNyUyMiUyMHBvaW50cyUzRCUyMjcwOS4zJTIwNzE4LjkxJTIwOTY4Ljc0JTIwOTc4LjYlMjAxMTY3LjkxJTIwNzc5LjQlMjA5MDguNjYlMjA1MTkuNTUl''@;'; put 'put ''MjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM2OUFGRDQlMjIlMjBwb2ludHMlM0QlMjI5ODAuODMlMjA0NDcuMzklMjA5MDguNjYlMjA1MTkuNTUlMjAxMTY3''@;'; put 'put ''LjkxJTIwNzc5LjQlMjAxMjQwLjA4JTIwNzA3LjIxJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9pbnRzJTNEJTIyMTAzNC41OSUy''@;'; put 'put ''MDMuMTIlMjA4NDYuMjUlMjAzLjEyJTIwNjkxLjc0JTIwMTU3LjY2JTIwOTgwLjgzJTIwNDQ3LjM5JTIwMTIyOS43NSUyMDE5OC40NyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIw''@;'; put 'put ''ZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjEyNDAuMDglMjA3MDcuMjElMjAxMzM2Ljg3JTIwODA0LjIyJTIwMTU4Ni4wMSUyMDU1NS4wOCUyMDE0ODkuMTQlMjA0NTguMTIlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3MEMwREMlMjIlMjBwb2ludHMlM0QlMjIxMjI5Ljc1JTIwMTk4LjQ3JTIwOTgwLjgzJTIwNDQ3LjM5JTIwMTI0MC4wOCUyMDcwNy4yMSUyMDE0ODkuMTQlMjA0NTguMTIlMjIlM0UlM0MlMkZwb2x5Z29uJTNF''@;'; put 'put ''JTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNCN0NFRDIlMjIlMjBwb2ludHMlM0QlMjIxMjkyLjIyJTIwMTMwMi4zOCUyMDE0MzMuMzIlMjAxNDQzLjYzJTIwMTgzMC42MSUyMDE0NDMuNjMlMjAx''@;'; put 'put ''NDkxLjE4JTIwMTEwMy40MiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjEwMTAuOTIlMjAxMjIzLjEzJTIwOTQ5''@;'; put 'put ''Ljc4JTIwMTI4NC4yNyUyMDExMDkuMDglMjAxNDQzLjYzJTIwMTE1MC45OCUyMDE0NDMuNjMlMjAxMTkxLjA5JTIwMTQwMy41MSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmls''@;'; put 'put ''bCUzRCUyMiUyMzc1QjhDNSUyMiUyMHBvaW50cyUzRCUyMjExNTAuOTglMjAxNDQzLjYzJTIwMTIzMS4xNiUyMDE0NDMuNjMlMjAxMTkxLjA5JTIwMTQwMy41MSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjEyOTIuMjIlMjAxMzAyLjM4JTIwMTExMi4wMyUyMDExMjIuMDIlMjAxMDEwLjkyJTIwMTIyMy4xMyUyMDExOTEuMDklMjAxNDAzLjUxJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNkVBNEJDJTIyJTIwcG9pbnRzJTNEJTIyMTE5MS4wOSUyMDE0MDMuNTElMjAxMjMxLjE2JTIwMTQ0My42MyUyMDE0MzMuMzIlMjAxNDQzLjYzJTIwMTI5Mi4yMiUyMDEzMDIu''@;'; put 'put ''MzglMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjMwMDdDQkIlMjIlMjBvcGFjaXR5JTNEJTIyMC40JTIyJTIwc3R5bGUlM0QlMjJtaXgtYmxlbmQtbW9kZSUz''@;'; put 'put ''QSUyMG11bHRpcGx5JTNCJTIyJTIwcG9pbnRzJTNEJTIyMTM4My4zJTIwODUwLjc1JTIwMTMxMS4xMiUyMDkyMi45NCUyMDE0OTEuMTglMjAxMTAzLjQyJTIwMTU2My4zNyUyMDEwMzEuMjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNCN0NFRDIlMjIlMjBwb2ludHMlM0QlMjIxNDkxLjE4JTIwMTEwMy40MiUyMDE4MzAuNjElMjAxNDQzLjYzJTIwMTk3NC44NiUyMDE0NDMuNjMlMjAxNTYzLjM3JTIwMTAzMS4yMyUyMiUzRSUzQyUyRnBvbHlnb24l''@;'; put 'put ''M0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzZFQTRCQyUyMiUyMHBvaW50cyUzRCUyMjE0OTEuMTglMjAxMTAzLjQyJTIwMTgzMC42MSUyMDE0NDMuNjMlMjAxOTc0Ljg2JTIwMTQ0My42MyUy''@;'; put 'put ''MDE1NjMuMzclMjAxMDMxLjIzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9pbnRzJTNEJTIyMTgxMi42NSUyMDc4MS45NSUyMDE2''@;'; put 'put ''MzIuNDYlMjA2MDEuNTklMjAxMzgzLjMlMjA4NTAuNzUlMjAxNTYzLjM3JTIwMTAzMS4yMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0I3Q0VEMiUyMiUy''@;'; put 'put ''MHBvaW50cyUzRCUyMjE1NjMuMzclMjAxMDMxLjIzJTIwMTk3NC44NiUyMDE0NDMuNjMlMjAyMDU0LjQ1JTIwMTQ0My42MyUyMDIwNTQuNDUlMjAxMDIzLjk5JTIwMTgxMi42NSUyMDc4MS45NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzc4Q0FENCUyMiUyMHBvaW50cyUzRCUyMjE1NjMuMzclMjAxMDMxLjIzJTIwMTk3NC44NiUyMDE0NDMuNjMlMjAyMDU0LjQ1JTIwMTQ0My42MyUyMDIwNTQuNDUlMjAxMDIzLjk5JTIwMTgxMi42NSUyMDc4MS45''@;'; put 'put ''NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzkxQzVFMCUyMiUyMHBvaW50cyUzRCUyMjgwMy43NCUyMDEzMzcuMzYlMjA4NTAuMTklMjAxMzgzLjg3JTIw''@;'; put 'put ''OTQ5Ljc4JTIwMTI4NC4yNyUyMDkwMy4zMSUyMDEyMzcuNzglMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5MUM1RTAlMjIlMjBwb2ludHMlM0QlMjIxMDY1''@;'; put 'put ''LjU3JTIwMTA3NS41MiUyMDExMTIuMDMlMjAxMTIyLjAyJTIwMTMxMS4xMiUyMDkyMi45NCUyMDEyNjQuNjklMjA4NzYuNCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUz''@;'; put 'put ''RCUyMiUyMzc3QjhEOSUyMiUyMHBvaW50cyUzRCUyMjY5Ny40NyUyMDE0NDMuNjMlMjA3OTAuNDMlMjAxNDQzLjYzJTIwODUwLjE5JTIwMTM4My44NyUyMDgwMy43NCUyMDEzMzcuMzYlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0QlMjI5NjQuNDYlMjAxMTc2LjYzJTIwOTAzLjMxJTIwMTIzNy43OCUyMDk0OS43OCUyMDEyODQuMjclMjAxMDEwLjkyJTIwMTIyMy4xMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQl''@;'; put 'put ''MEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzVEQjVENiUyMiUyMHBvaW50cyUzRCUyMjk2NC40NiUyMDExNzYuNjMlMjA5MDMuMzElMjAxMjM3Ljc4JTIwOTQ5Ljc4JTIwMTI4NC4yNyUyMDEwMTAuOTIl''@;'; put 'put ''MjAxMjIzLjEzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTAzOC4yNDcyOTclMkMlMjAx''@;'; put 'put ''MTQ5LjI3NTQyOSUyOSUyMHJvdGF0ZSUyOC00NC45NzAwMDAlMjklMjB0cmFuc2xhdGUlMjgtMTAzOC4yNDcyOTclMkMlMjAtMTE0OS4yNzU0MjklMjklMjAlMjIlMjB4JTNEJTIyOTY2Ljc1MjI5NyUyMiUyMHklM0QlMjIxMTE2LjQxMDQzJTIyJTIwd2lkdGglM0QlMjIxNDIuOTklMjIlMjBo''@;'; put 'put ''ZWlnaHQlM0QlMjI2NS43MyUyMiUzRSUzQyUyRnJlY3QlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyMzU3QThEMCUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODEwMzguMjQ3Mjk3JTJD''@;'; put 'put ''JTIwMTE0OS4yNzU0MjklMjklMjByb3RhdGUlMjgtNDQuOTcwMDAwJTI5JTIwdHJhbnNsYXRlJTI4LTEwMzguMjQ3Mjk3JTJDJTIwLTExNDkuMjc1NDI5JTI5JTIwJTIyJTIweCUzRCUyMjk2Ni43NTIyOTclMjIlMjB5JTNEJTIyMTExNi40MTA0MyUyMiUyMHdpZHRoJTNEJTIyMTQyLjk5JTIy''@;'; put 'put ''JTIwaGVpZ2h0JTNEJTIyNjUuNzMlMjIlM0UlM0MlMkZyZWN0JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjIxMDEwLjkyJTIwMTIyMy4xMyUyMDEw''@;'; put 'put ''MTAuOTIlMjAxMjIzLjEzJTIwOTY0LjQ2JTIwMTE3Ni42MyUyMDk2NC40NiUyMDExNzYuNjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjMwMDAwMDAlMjIl''@;'; put 'put ''MjBvcGFjaXR5JTNEJTIyMC40MiUyMiUyMHBvaW50cyUzRCUyMjEwMTAuOTIlMjAxMjIzLjEzJTIwMTAxMC45MiUyMDEyMjMuMTMlMjA5NjQuNDYlMjAxMTc2LjYzJTIwOTY0LjQ2JTIwMTE3Ni42MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzAwN0NCQiUyMiUyMG9wYWNpdHklM0QlMjIwLjQlMjIlMjBzdHlsZSUzRCUyMm1peC1ibGVuZC1tb2RlJTNBJTIwbXVsdGlwbHklM0IlMjIlMjBwb2ludHMlM0QlMjIxMzM2Ljg3JTIwODA0LjIyJTIwMTI2''@;'; put 'put ''NC42OSUyMDg3Ni40JTIwMTMxMS4xMiUyMDkyMi45NCUyMDEzODMuMyUyMDg1MC43NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzU3QThEMCUyMiUyMHBv''@;'; put 'put ''aW50cyUzRCUyMjEzMzYuODclMjA4MDQuMjIlMjAxMjY0LjY5JTIwODc2LjQlMjAxMzExLjEyJTIwOTIyLjk0JTIwMTM4My4zJTIwODUwLjc1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHln''@;'; put 'put ''b24lMjBmaWxsJTNEJTIyJTIzOTNEOENBJTIyJTIwb3BhY2l0eSUzRCUyMjAuNiUyMiUyMHN0eWxlJTNEJTIybWl4LWJsZW5kLW1vZGUlM0ElMjBvdmVybGF5JTNCJTIyJTIwcG9pbnRzJTNEJTIyMTMzNi44NyUyMDgwNC4yMiUyMDEzODMuMyUyMDg1MC43NSUyMDE2MzIuNDYlMjA2MDEuNTkl''@;'; put 'put ''MjAxNTg2LjAxJTIwNTU1LjA4JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNURCNUQ2JTIyJTIwcG9pbnRzJTNEJTIyMTMzNi44NyUyMDgwNC4yMiUyMDEz''@;'; put 'put ''ODMuMyUyMDg1MC43NSUyMDE2MzIuNDYlMjA2MDEuNTklMjAxNTg2LjAxJTIwNTU1LjA4JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQUZEM0U2JTIyJTIw''@;'; put 'put ''cG9pbnRzJTNEJTIyMjA1NiUyMDAuMTIlMjAxNjQ1LjQ5JTIwMC4xMiUyMDE2NDguNDklMjAzLjEyJTIwMTk0NC4wNyUyMDMuMTIlMjAxNzk2LjIyJTIwMTUwLjk5JTIwMTg5My4xMiUyMDI0Ny45NyUyMDIwNTQuNDUlMjA4Ni42NCUyMDIwNTQuNDUlMjAxNzkuNiUyMDE5MzkuNTglMjAyOTQu''@;'; put 'put ''NDclMjAyMDU2JTIwNDExJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzN0FCOUQ5JTIyJTIwcG9pbnRzJTNEJTIyMTY0OC40OSUyMDMuMTIlMjAxNzk2LjIy''@;'; put 'put ''JTIwMTUwLjk5JTIwMTk0NC4wNyUyMDMuMTIlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM2NkFFRDQlMjIlMjBwb2ludHMlM0QlMjIyMDU0LjQ1JTIwODYu''@;'; put 'put ''NjQlMjAxODkzLjEyJTIwMjQ3Ljk3JTIwMTkzOS41OCUyMDI5NC40NyUyMDIwNTQuNDUlMjAxNzkuNiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0I3Q0VE''@;'; put 'put ''MiUyMiUyMHBvaW50cyUzRCUyMjE4ODQuODIlMjA3MDkuNzglMjAyMDU0LjQ1JTIwODc5LjU3JTIwMjA1NC40NSUyMDU0MC4xNSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmls''@;'; put 'put ''bCUzRCUyMiUyM0FGRDRFNyUyMiUyMHBvaW50cyUzRCUyMjE0ODkuMTQlMjA0NTguMTIlMjAxNDg5LjE0JTIwNDU4LjEyJTIwMTM3MS4xMyUyMDMzOS45OSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''M0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0FGRDRFNyUyMiUyMHBvaW50cyUzRCUyMjE3OTYuMjIlMjAxNTAuOTklMjAxNjQ4LjQ5JTIwMy4xMiUyMDE0MjUuMSUyMDMuMTIlMjAxMzAxLjkxJTIwMTI2LjMxJTIwMTU2MS4zJTIwMzg1Ljk1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzOTFDNUUwJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTc5OC45NTQwNjYlMkMlMjAzODguNzk4NzgxJTI5JTIwcm90YXRlJTI4LTQ0Ljk3MDAwMCUyOSUy''@;'; put 'put ''MHRyYW5zbGF0ZSUyOC0xNzk4Ljk1NDA2NiUyQyUyMC0zODguNzk4NzgxJTI5JTIwJTIyJTIweCUzRCUyMjE2MzIuODI0MDclMjIlMjB5JTNEJTIyMzU1LjkzMzc4MSUyMiUyMHdpZHRoJTNEJTIyMzMyLjI2JTIyJTIwaGVpZ2h0JTNEJTIyNjUuNzMlMjIlM0UlM0MlMkZyZWN0JTNFJTBEJTBB''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5MUM1RTAlMjIlMjBwb2ludHMlM0QlMjIxNTg2LjAxJTIwNTU1LjA4JTIwMTYzMi40NiUyMDYwMS41OSUyMDE2MzIuNDYlMjA2MDEuNTklMjAxNTg2LjAxJTIw''@;'; put 'put ''NTU1LjA4JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzQjNFQUVFJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTU3My43MTE1NzclMkMlMjA0NzAu''@;'; put 'put ''NjIwMjYzJTI5JTIwcm90YXRlJTI4LTQ1LjAwMDAwMCUyOSUyMHRyYW5zbGF0ZSUyOC0xNTczLjcxMTU3NyUyQyUyMC00NzAuNjIwMjYzJTI5JTIwJTIyJTIweCUzRCUyMjE1MjIuNjgxNTglMjIlMjB5JTNEJTIyNDAyLjA4NTI2MyUyMiUyMHdpZHRoJTNEJTIyMTAyLjA2JTIyJTIwaGVpZ2h0''@;'; put 'put ''JTNEJTIyMTM3LjA3JTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzQjNFQUVFJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTc1OC42NzY3NTglMkMlMjA2''@;'; put 'put ''NTUuNzY3MTIwJTI5JTIwcm90YXRlJTI4LTQ0Ljk3MDAwMCUyOSUyMHRyYW5zbGF0ZSUyOC0xNzU4LjY3Njc1OCUyQyUyMC02NTUuNzY3MTIwJTI5JTIwJTIyJTIweCUzRCUyMjE3MDcuNjQ2NzYlMjIlMjB5JTNEJTIyNTI4LjI5MjEyJTIyJTIwd2lkdGglM0QlMjIxMDIuMDYlMjIlMjBoZWln''@;'; put 'put ''aHQlM0QlMjIyNTQuOTUlMjIlM0UlM0MlMkZyZWN0JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNCM0VBRUUlMjIlMjBwb2ludHMlM0QlMjIxMzAxLjkxJTIwMTI2LjMxJTIwMTE3OC44NCUy''@;'; put 'put ''MDMuMTIlMjAxMDM0LjU5JTIwMy4xMiUyMDEyMjkuNzUlMjAxOTguNDclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM4M0MwQzglMjIlMjBwb2ludHMlM0Ql''@;'; put 'put ''MjIxODEyLjY1JTIwNzgxLjk1JTIwMjA1NC40NSUyMDEwMjMuOTklMjAyMDU0LjQ1JTIwODc5LjU3JTIwMTg4NC44MiUyMDcwOS43OCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmls''@;'; put 'put ''bCUzRCUyMiUyMzdEQzZEQyUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODEzOTUuNTE2OTAxJTJDJTIwMjkyLjIwNjUxOSUyOSUyMHJvdGF0ZSUyOC00NS4wMDAwMDAlMjklMjB0cmFuc2xhdGUlMjgtMTM5NS41MTY5MDElMkMlMjAtMjkyLjIwNjUxOSUyOSUyMCUyMiUyMHglM0Ql''@;'; put 'put ''MjIxMzQ0LjQ5MTklMjIlMjB5JTNEJTIyMTA4LjcwMTUxOSUyMiUyMHdpZHRoJTNEJTIyMTAyLjA1JTIyJTIwaGVpZ2h0JTNEJTIyMzY3LjAxJTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBm''@;'; put 'put ''aWxsJTNEJTIyJTIzNjhCOEQ1JTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTY0NS4zMTM2MTklMkMlMjA1NDIuMjQ5NzYwJTI5JTIwcm90YXRlJTI4LTQ1LjAwMDAwMCUyOSUyMHRyYW5zbGF0ZSUyOC0xNjQ1LjMxMzYxOSUyQyUyMC01NDIuMjQ5NzYwJTI5JTIwJTIyJTIweCUz''@;'; put 'put ''RCUyMjE1OTQuMjgzNjIlMjIlMjB5JTNEJTIyNTA5LjM4NDc2JTIyJTIwd2lkdGglM0QlMjIxMDIuMDYlMjIlMjBoZWlnaHQlM0QlMjI2NS43MyUyMiUzRSUzQyUyRnJlY3QlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBEJTBBJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDZyUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODAuMDAwMDAwJTJDJTIwMy4wMDAwMDAlMjklMjIlMjBzdHJva2UlM0QlMjIlMjMwMDAwMDAlMjIlMjBvcGFjaXR5JTNEJTIyMC4xNSUyMiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BhdGglMjBkJTNEJTIyTTAuOTUlMkMwLjEyJTIwTDAuOTUlMkM4NDAuMTIlMjIlMjBpZCUzRCUyMlNoYXBlJTIyJTNFJTNDJTJGcGF0aCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUy''@;'; put 'put ''RmclM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwRCUwQSUzQyUyRnN2ZyUzRSk7LS1jbHItbG9naW4tZXJyb3ItYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTgwMCk7LS1jbHItbG9n''@;'; put 'put ''aW4tZXJyb3ItYm9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cyk7LS1jbHItbG9naW4tcGFuZWwtbGluZS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1sb2dpbi1wYW5lbC1saW5lLW9wYWNpdHk6LjF9LmxvZ2luLXdyYXBwZXJ7ZGlz''@;'; put 'put ''cGxheTpmbGV4O2hlaWdodDoxMDAlO2JhY2tncm91bmQ6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDJTNGeG1sJTIwdmVyc2lvbiUzRCUyMjEuMCUyMiUyMGVuY29kaW5nJTNEJTIydXRmLTglMjIlM0YlM0UlMEQlMEElM0MlMjFET0NUWVBFJTIwc3ZnJTIwUFVCTElD''@;'; put 'put ''JTIwJTIyLSUyRiUyRlczQyUyRiUyRkRURCUyMFNWRyUyMDEuMSUyRiUyRkVOJTIyJTIwJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkZHcmFwaGljcyUyRlNWRyUyRjEuMSUyRkRURCUyRnN2ZzExLmR0ZCUyMiUzRSUwRCUwQSUzQ3N2ZyUwRCUwQSUyMCUyMCUyMCUyMCUyMHZlcnNpb24l''@;'; put 'put ''M0QlMjIxLjElMjIlMEQlMEElMjAlMjAlMjAlMjAlMjBpZCUzRCUyMm5vLWFzcGVjdC1yYXRpbyUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIweG1sbnMlM0F4bGluayUz''@;'; put 'put ''RCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhsaW5rJTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIweCUzRCUyMjBweCUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHklM0QlMjIwcHglMjIlMEQlMEElMjAlMjAlMjAlMjAlMjBoZWlnaHQlM0QlMjIyMDU1LjU1cHglMjIlMEQlMEEl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjB3aWR0aCUzRCUyMjE0NDBweCUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDIwNTUuNTUlMjAxNDQwJTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIwcHJlc2VydmVBc3BlY3RSYXRpbyUzRCUyMnhNaW5ZTWluJTIwc2xpY2UlMjIlM0UlMEQl''@;'; put 'put ''MEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NkZXNjJTNFTG9naW4lMjBJbWFnZSUzQyUyRmRlc2MlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NnJTIwc3Ryb2tlJTNEJTIybm9uZSUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjElMjIlMjBm''@;'; put 'put ''aWxsJTNEJTIybm9uZSUyMiUyMGZpbGwtcnVsZSUzRCUyMmV2ZW5vZGQlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgwLjAwMDAwMCUyQyUyMC00LjAwMDAwMCUyOSUyMiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2clM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NnJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjNGQUZBRkElMjIlMjB4JTNEJTIyMCUyMiUyMHklM0QlMjI0JTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzMDA3Q0JCJTIyJTIwb3BhY2l0eSUzRCUyMjAuNCUyMiUyMHN0eWxlJTNEJTIybWl4LWJsZW5kLW1vZGUlM0ElMjBtdWx0aXBseSUzQiUyMiUyMHBvaW50cyUzRCUy''@;'; put 'put ''MjExMDguNDMlMjAxNDQzLjYzJTIwMTEwOS4wOCUyMDE0NDMuNjMlMjA0NDMuNDQlMjA3NzcuNzQlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5M0Q4Q0El''@;'; put 'put ''MjIlMjBvcGFjaXR5JTNEJTIyMC42JTIyJTIwc3R5bGUlM0QlMjJtaXgtYmxlbmQtbW9kZSUzQSUyMG92ZXJsYXklM0IlMjIlMjBwb2ludHMlM0QlMjIwLjc5JTIwMzM0LjkyJTIwNDQzLjQ0JTIwNzc3Ljc0JTIwMC43OSUyMDMzNC40OSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjAuNzklMjAyMTEuODglMjAwLjc5JTIwMzI5LjYlMjA1OS42MiUyMDI3MC43NyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQl''@;'; put 'put ''MEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjE2MC42NSUyMDE2OS43NCUyMDAuNzklMjA5LjczJTIwMC43OSUyMDIxMS44OCUyMDkwLjI3JTIwMzAxLjQ2JTIw''@;'; put 'put ''NTkuNjIlMjAyNzAuNzclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNDREUzRUUlMjIlMjBwb2ludHMlM0QlMjI1MDMuNzclMjAxNDQzLjYzJTIwNjk3LjQ3''@;'; put 'put ''JTIwMTQ0My42MyUyMDgwMy43NCUyMDEzMzcuMzYlMjA3MDYuOTMlMjAxMjQwLjQzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQ0RFM0VFJTIyJTIwcG9p''@;'; put 'put ''bnRzJTNEJTIyMTU4LjMzJTIwNjkxLjE1JTIwMC43OSUyMDg0OC43MiUyMDAuNzklMjAxNDI3LjQzJTIwNDQ3LjUyJTIwOTgwLjclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZp''@;'; put 'put ''bGwlM0QlMjIlMjNDRURERTAlMjIlMjBwb2ludHMlM0QlMjIyNTcuNzElMjA1OTEuNzUlMjAwLjc5JTIwMzM0LjQ5JTIwMC43OSUyMDUzMy40MiUyMDE1OC4zMyUyMDY5MS4xNSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0E5QzlENSUyMiUyMHBvaW50cyUzRCUyMjAuNzklMjA1MzMuNDIlMjAwLjc5JTIwODQ4LjcyJTIwMTU4LjMzJTIwNjkxLjE1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQUZENEU3JTIyJTIwcG9pbnRzJTNEJTIyODA2LjQ2JTIwMTE0MC44OSUyMDU0Ni45NCUyMDg4MS4yOCUyMDQ0Ny41MiUyMDk4MC43JTIwNzA2LjkzJTIwMTI0MC40MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQl''@;'; put 'put ''MEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzhGQzRERiUyMiUyMHBvaW50cyUzRCUyMjQ0Ny41MiUyMDk4MC43JTIwMC43OSUyMDE0MjcuNDMlMjAwLjc5JTIwMTQ0My42MyUyMDUwMy43NyUyMDE0NDMu''@;'; put 'put ''NjMlMjA3MDYuOTMlMjAxMjQwLjQzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNzBDMERDJTIyJTIwcG9pbnRzJTNEJTIyNjA4LjIzJTIwODE5Ljk5JTIw''@;'; put 'put ''NTQ2Ljk0JTIwODgxLjI4JTIwODA2LjQ2JTIwMTE0MC44OSUyMDg2Ny42NCUyMDEwNzkuNyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUy''@;'; put 'put ''MHBvaW50cyUzRCUyMjQyMC4wNSUyMDQyOS4zOSUyMDMxOS4wMSUyMDUzMC40NSUyMDYwOC4yMyUyMDgxOS45OSUyMDcwOS4zJTIwNzE4LjkxJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHln''@;'; put 'put ''b24lMjBmaWxsJTNEJTIyJTIzNjlBRkQ0JTIyJTIwcG9pbnRzJTNEJTIyNzA5LjMlMjA3MTguOTElMjA2MDguMjMlMjA4MTkuOTklMjA4NjcuNjQlMjAxMDc5LjclMjA5NjguNzQlMjA5NzguNiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzhFQjVCQyUyMiUyMHBvaW50cyUzRCUyMjYxOS41OSUyMDIyOS44MiUyMDM5My40MiUyMDMuMTIlMjAzMjcuMjclMjAzLjEyJTIwMTYwLjY1JTIwMTY5Ljc0JTIwNDIwLjA1JTIwNDI5LjM5JTIyJTNFJTNDJTJG''@;'; put 'put ''cG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOEVCNUJDJTIyJTIwcG9pbnRzJTNEJTIyMzE5LjAxJTIwNTMwLjQ1JTIwMzE5LjAxJTIwNTMwLjQ1JTIwOTAuMjclMjAzMDEuNDYl''@;'; put 'put ''MjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3Q0IwQzclMjIlMjBwb2ludHMlM0QlMjIxNjAuNjUlMjAxNjkuNzQlMjA1OS42MiUyMDI3MC43NyUyMDkwLjI3''@;'; put 'put ''JTIwMzAxLjQ2JTIwMzE5LjAxJTIwNTMwLjQ1JTIwNDIwLjA1JTIwNDI5LjM5JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzODRDNEQyJTIyJTIwcG9pbnRz''@;'; put 'put ''JTNEJTIyNTkuNjIlMjAyNzAuNzclMjAwLjc5JTIwMzI5LjYlMjAwLjc5JTIwMzM0LjQ5JTIwMjU3LjcxJTIwNTkxLjc1JTIwMzE5LjAxJTIwNTMwLjQ1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUz''@;'; put 'put ''Q3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzN0NCMEM3JTIyJTIwcG9pbnRzJTNEJTIyNTM3LjU1JTIwMy4xMiUyMDM5My40MiUyMDMuMTIlMjA2MTkuNTklMjAyMjkuODIlMjA2OTEuNzQlMjAxNTcuNjYlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM4N0QxREIlMjIlMjBwb2ludHMlM0QlMjI4NDYuMjUlMjAzLjEyJTIwNTM3LjU1JTIwMy4xMiUyMDY5MS43NCUyMDE1Ny42NiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0NERTNFRSUyMiUyMHBvaW50cyUzRCUyMjkwOS44NyUyMDE0NDMuNjMlMjA4NTAuMTklMjAxMzgzLjg3JTIwNzkwLjQzJTIwMTQ0My42MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEEl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjMxOS4wMSUyMDUzMC40NSUyMDI1Ny43MSUyMDU5MS43NSUyMDQ0My40NCUyMDc3Ny43NCUyMDU0Ni45NCUyMDg4MS4y''@;'; put 'put ''OCUyMDYwOC4yMyUyMDgxOS45OSUyMDg2Ny42NCUyMDEwNzkuNyUyMDg2Ny42NCUyMDEwNzkuNyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUy''@;'; put 'put ''MiUyMHBvaW50cyUzRCUyMjg2Ny42NCUyMDEwNzkuNyUyMDgwNi40NiUyMDExNDAuODklMjA5MDMuMzElMjAxMjM3Ljc4JTIwOTY0LjQ2JTIwMTE3Ni42MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''M0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjEwNjUuNTclMjAxMDc1LjUyJTIwOTY4Ljc0JTIwOTc4LjYlMjA4NjcuNjQlMjAxMDc5LjclMjA5NjQuNDYlMjAxMTc2LjYzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIyOTY0LjQ2JTIwMTE3Ni42MyUyMDg2Ny42NCUyMDEwNzkuNyUyMDg2Ny42NCUyMDEwNzkuNyUyMDk2NC40NiUyMDExNzYuNjMlMjIlM0UlM0MlMkZw''@;'; put 'put ''b2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjIxMDEwLjkyJTIwMTIyMy4xMyUyMDEyMzEuMTYlMjAxNDQzLjYzJTIwMTAxMC45MiUyMDEy''@;'; put 'put ''MjMuMTMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjIxMjQwLjA4JTIwNzA3LjIyJTIwMTE2Ny45JTIwNzc5LjQl''@;'; put 'put ''MjAxMjY0LjY4JTIwODc2LjQlMjAxMzM2Ljg3JTIwODA0LjIyJTIwMTI0MC4wOCUyMDcwNy4yMSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUy''@;'; put 'put ''MiUyMHBvaW50cyUzRCUyMjk4MC44MyUyMDQ0Ny4zOSUyMDY5MS43NCUyMDE1Ny42NiUyMDYxOS41OSUyMDIyOS44MiUyMDkwOC42NiUyMDUxOS41NiUyMDk4MC44MyUyMDQ0Ny4zOSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0FGRDRFNyUyMiUyMHBvaW50cyUzRCUyMjcwOS4zJTIwNzE4LjkxJTIwOTY4Ljc0JTIwOTc4LjYlMjAxMTY3LjkxJTIwNzc5LjQlMjA5MDguNjYlMjA1MTkuNTUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM2OUFGRDQlMjIlMjBwb2ludHMlM0QlMjI5ODAuODMlMjA0NDcuMzklMjA5MDguNjYlMjA1MTkuNTUlMjAxMTY3LjkxJTIwNzc5LjQlMjAxMjQwLjA4JTIwNzA3LjIxJTIy''@;'; put 'put ''JTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9pbnRzJTNEJTIyMTAzNC41OSUyMDMuMTIlMjA4NDYuMjUlMjAzLjEyJTIwNjkxLjc0JTIw''@;'; put 'put ''MTU3LjY2JTIwOTgwLjgzJTIwNDQ3LjM5JTIwMTIyOS43NSUyMDE5OC40NyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUz''@;'; put 'put ''RCUyMjEyNDAuMDglMjA3MDcuMjElMjAxMzM2Ljg3JTIwODA0LjIyJTIwMTU4Ni4wMSUyMDU1NS4wOCUyMDE0ODkuMTQlMjA0NTguMTIlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUy''@;'; put 'put ''MGZpbGwlM0QlMjIlMjM3MEMwREMlMjIlMjBwb2ludHMlM0QlMjIxMjI5Ljc1JTIwMTk4LjQ3JTIwOTgwLjgzJTIwNDQ3LjM5JTIwMTI0MC4wOCUyMDcwNy4yMSUyMDE0ODkuMTQlMjA0NTguMTIlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNCN0NFRDIlMjIlMjBwb2ludHMlM0QlMjIxMjkyLjIyJTIwMTMwMi4zOCUyMDE0MzMuMzIlMjAxNDQzLjYzJTIwMTgzMC42MSUyMDE0NDMuNjMlMjAxNDkxLjE4JTIwMTEwMy40MiUyMiUzRSUzQyUyRnBvbHln''@;'; put 'put ''b24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjEwMTAuOTIlMjAxMjIzLjEzJTIwOTQ5Ljc4JTIwMTI4NC4yNyUyMDExMDkuMDglMjAxNDQzLjYz''@;'; put 'put ''JTIwMTE1MC45OCUyMDE0NDMuNjMlMjAxMTkxLjA5JTIwMTQwMy41MSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzc1QjhDNSUyMiUyMHBvaW50cyUzRCUy''@;'; put 'put ''MjExNTAuOTglMjAxNDQzLjYzJTIwMTIzMS4xNiUyMDE0NDMuNjMlMjAxMTkxLjA5JTIwMTQwMy41MSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdE''@;'; put 'put ''RiUyMiUyMHBvaW50cyUzRCUyMjEyOTIuMjIlMjAxMzAyLjM4JTIwMTExMi4wMyUyMDExMjIuMDIlMjAxMDEwLjkyJTIwMTIyMy4xMyUyMDExOTEuMDklMjAxNDAzLjUxJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNkVBNEJDJTIyJTIwcG9pbnRzJTNEJTIyMTE5MS4wOSUyMDE0MDMuNTElMjAxMjMxLjE2JTIwMTQ0My42MyUyMDE0MzMuMzIlMjAxNDQzLjYzJTIwMTI5Mi4yMiUyMDEzMDIuMzglMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjMwMDdDQkIlMjIlMjBvcGFjaXR5JTNEJTIyMC40JTIyJTIwc3R5bGUlM0QlMjJtaXgtYmxlbmQtbW9kZSUzQSUyMG11bHRpcGx5JTNCJTIyJTIwcG9pbnRzJTNEJTIy''@;'; put 'put ''MTM4My4zJTIwODUwLjc1JTIwMTMxMS4xMiUyMDkyMi45NCUyMDE0OTEuMTglMjAxMTAzLjQyJTIwMTU2My4zNyUyMDEwMzEuMjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZp''@;'; put 'put ''bGwlM0QlMjIlMjNCN0NFRDIlMjIlMjBwb2ludHMlM0QlMjIxNDkxLjE4JTIwMTEwMy40MiUyMDE4MzAuNjElMjAxNDQzLjYzJTIwMTk3NC44NiUyMDE0NDMuNjMlMjAxNTYzLjM3JTIwMTAzMS4yMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzZFQTRCQyUyMiUyMHBvaW50cyUzRCUyMjE0OTEuMTglMjAxMTAzLjQyJTIwMTgzMC42MSUyMDE0NDMuNjMlMjAxOTc0Ljg2JTIwMTQ0My42MyUyMDE1NjMuMzclMjAxMDMxLjIzJTIyJTNFJTNDJTJGcG9s''@;'; put 'put ''eWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9pbnRzJTNEJTIyMTgxMi42NSUyMDc4MS45NSUyMDE2MzIuNDYlMjA2MDEuNTklMjAxMzgzLjMlMjA4NTAuNzUl''@;'; put 'put ''MjAxNTYzLjM3JTIwMTAzMS4yMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0I3Q0VEMiUyMiUyMHBvaW50cyUzRCUyMjE1NjMuMzclMjAxMDMxLjIzJTIw''@;'; put 'put ''MTk3NC44NiUyMDE0NDMuNjMlMjAyMDU0LjQ1JTIwMTQ0My42MyUyMDIwNTQuNDUlMjAxMDIzLjk5JTIwMTgxMi42NSUyMDc4MS45NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIw''@;'; put 'put ''ZmlsbCUzRCUyMiUyMzc4Q0FENCUyMiUyMHBvaW50cyUzRCUyMjE1NjMuMzclMjAxMDMxLjIzJTIwMTk3NC44NiUyMDE0NDMuNjMlMjAyMDU0LjQ1JTIwMTQ0My42MyUyMDIwNTQuNDUlMjAxMDIzLjk5JTIwMTgxMi42NSUyMDc4MS45NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzkxQzVFMCUyMiUyMHBvaW50cyUzRCUyMjgwMy43NCUyMDEzMzcuMzYlMjA4NTAuMTklMjAxMzgzLjg3JTIwOTQ5Ljc4JTIwMTI4NC4yNyUyMDkwMy4zMSUyMDEyMzcu''@;'; put 'put ''NzglMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5MUM1RTAlMjIlMjBwb2ludHMlM0QlMjIxMDY1LjU3JTIwMTA3NS41MiUyMDExMTIuMDMlMjAxMTIyLjAy''@;'; put 'put ''JTIwMTMxMS4xMiUyMDkyMi45NCUyMDEyNjQuNjklMjA4NzYuNCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzc3QjhEOSUyMiUyMHBvaW50cyUzRCUyMjY5''@;'; put 'put ''Ny40NyUyMDE0NDMuNjMlMjA3OTAuNDMlMjAxNDQzLjYzJTIwODUwLjE5JTIwMTM4My44NyUyMDgwMy43NCUyMDEzMzcuMzYlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwl''@;'; put 'put ''M0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0QlMjI5NjQuNDYlMjAxMTc2LjYzJTIwOTAzLjMxJTIwMTIzNy43OCUyMDk0OS43OCUyMDEyODQuMjclMjAxMDEwLjkyJTIwMTIyMy4xMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzVEQjVENiUyMiUyMHBvaW50cyUzRCUyMjk2NC40NiUyMDExNzYuNjMlMjA5MDMuMzElMjAxMjM3Ljc4JTIwOTQ5Ljc4JTIwMTI4NC4yNyUyMDEwMTAuOTIlMjAxMjIzLjEzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUw''@;'; put 'put ''RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTAzOC4yNDcyOTclMkMlMjAxMTQ5LjI3NTQyOSUyOSUyMHJvdGF0ZSUyOC00NC45NzAw''@;'; put 'put ''MDAlMjklMjB0cmFuc2xhdGUlMjgtMTAzOC4yNDcyOTclMkMlMjAtMTE0OS4yNzU0MjklMjklMjAlMjIlMjB4JTNEJTIyOTY2Ljc1MjI5NyUyMiUyMHklM0QlMjIxMTE2LjQxMDQzJTIyJTIwd2lkdGglM0QlMjIxNDIuOTklMjIlMjBoZWlnaHQlM0QlMjI2NS43MyUyMiUzRSUzQyUyRnJlY3Ql''@;'; put 'put ''M0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyMzU3QThEMCUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODEwMzguMjQ3Mjk3JTJDJTIwMTE0OS4yNzU0MjklMjklMjByb3RhdGUlMjgtNDQu''@;'; put 'put ''OTcwMDAwJTI5JTIwdHJhbnNsYXRlJTI4LTEwMzguMjQ3Mjk3JTJDJTIwLTExNDkuMjc1NDI5JTI5JTIwJTIyJTIweCUzRCUyMjk2Ni43NTIyOTclMjIlMjB5JTNEJTIyMTExNi40MTA0MyUyMiUyMHdpZHRoJTNEJTIyMTQyLjk5JTIyJTIwaGVpZ2h0JTNEJTIyNjUuNzMlMjIlM0UlM0MlMkZy''@;'; put 'put ''ZWN0JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjIxMDEwLjkyJTIwMTIyMy4xMyUyMDEwMTAuOTIlMjAxMjIzLjEzJTIwOTY0LjQ2JTIwMTE3Ni42''@;'; put 'put ''MyUyMDk2NC40NiUyMDExNzYuNjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjMwMDAwMDAlMjIlMjBvcGFjaXR5JTNEJTIyMC40MiUyMiUyMHBvaW50cyUz''@;'; put 'put ''RCUyMjEwMTAuOTIlMjAxMjIzLjEzJTIwMTAxMC45MiUyMDEyMjMuMTMlMjA5NjQuNDYlMjAxMTc2LjYzJTIwOTY0LjQ2JTIwMTE3Ni42MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29u''@;'; put 'put ''JTIwZmlsbCUzRCUyMiUyMzAwN0NCQiUyMiUyMG9wYWNpdHklM0QlMjIwLjQlMjIlMjBzdHlsZSUzRCUyMm1peC1ibGVuZC1tb2RlJTNBJTIwbXVsdGlwbHklM0IlMjIlMjBwb2ludHMlM0QlMjIxMzM2Ljg3JTIwODA0LjIyJTIwMTI2NC42OSUyMDg3Ni40JTIwMTMxMS4xMiUyMDkyMi45NCUy''@;'; put 'put ''MDEzODMuMyUyMDg1MC43NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzU3QThEMCUyMiUyMHBvaW50cyUzRCUyMjEzMzYuODclMjA4MDQuMjIlMjAxMjY0''@;'; put 'put ''LjY5JTIwODc2LjQlMjAxMzExLjEyJTIwOTIyLjk0JTIwMTM4My4zJTIwODUwLjc1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTNEOENBJTIyJTIwb3Bh''@;'; put 'put ''Y2l0eSUzRCUyMjAuNiUyMiUyMHN0eWxlJTNEJTIybWl4LWJsZW5kLW1vZGUlM0ElMjBvdmVybGF5JTNCJTIyJTIwcG9pbnRzJTNEJTIyMTMzNi44NyUyMDgwNC4yMiUyMDEzODMuMyUyMDg1MC43NSUyMDE2MzIuNDYlMjA2MDEuNTklMjAxNTg2LjAxJTIwNTU1LjA4JTIyJTNFJTNDJTJGcG9s''@;'; put 'put ''eWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNURCNUQ2JTIyJTIwcG9pbnRzJTNEJTIyMTMzNi44NyUyMDgwNC4yMiUyMDEzODMuMyUyMDg1MC43NSUyMDE2MzIuNDYlMjA2MDEuNTkl''@;'; put 'put ''MjAxNTg2LjAxJTIwNTU1LjA4JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQUZEM0U2JTIyJTIwcG9pbnRzJTNEJTIyMjA1NiUyMDAuMTIlMjAxNjQ1LjQ5''@;'; put 'put ''JTIwMC4xMiUyMDE2NDguNDklMjAzLjEyJTIwMTk0NC4wNyUyMDMuMTIlMjAxNzk2LjIyJTIwMTUwLjk5JTIwMTg5My4xMiUyMDI0Ny45NyUyMDIwNTQuNDUlMjA4Ni42NCUyMDIwNTQuNDUlMjAxNzkuNiUyMDE5MzkuNTglMjAyOTQuNDclMjAyMDU2JTIwNDExJTIyJTNFJTNDJTJGcG9seWdv''@;'; put 'put ''biUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzN0FCOUQ5JTIyJTIwcG9pbnRzJTNEJTIyMTY0OC40OSUyMDMuMTIlMjAxNzk2LjIyJTIwMTUwLjk5JTIwMTk0NC4wNyUyMDMuMTIlMjIlM0Ul''@;'; put 'put ''M0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM2NkFFRDQlMjIlMjBwb2ludHMlM0QlMjIyMDU0LjQ1JTIwODYuNjQlMjAxODkzLjEyJTIwMjQ3Ljk3JTIwMTkzOS41OCUy''@;'; put 'put ''MDI5NC40NyUyMDIwNTQuNDUlMjAxNzkuNiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0I3Q0VEMiUyMiUyMHBvaW50cyUzRCUyMjE4ODQuODIlMjA3MDku''@;'; put 'put ''NzglMjAyMDU0LjQ1JTIwODc5LjU3JTIwMjA1NC40NSUyMDU0MC4xNSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0FGRDRFNyUyMiUyMHBvaW50cyUzRCUy''@;'; put 'put ''MjE0ODkuMTQlMjA0NTguMTIlMjAxNDg5LjE0JTIwNDU4LjEyJTIwMTM3MS4xMyUyMDMzOS45OSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0FGRDRFNyUy''@;'; put 'put ''MiUyMHBvaW50cyUzRCUyMjE3OTYuMjIlMjAxNTAuOTklMjAxNjQ4LjQ5JTIwMy4xMiUyMDE0MjUuMSUyMDMuMTIlMjAxMzAxLjkxJTIwMTI2LjMxJTIwMTU2MS4zJTIwMzg1Ljk1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzOTFDNUUwJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTc5OC45NTQwNjYlMkMlMjAzODguNzk4NzgxJTI5JTIwcm90YXRlJTI4LTQ0Ljk3MDAwMCUyOSUyMHRyYW5zbGF0ZSUyOC0xNzk4Ljk1NDA2NiUyQyUyMC0z''@;'; put 'put ''ODguNzk4NzgxJTI5JTIwJTIyJTIweCUzRCUyMjE2MzIuODI0MDclMjIlMjB5JTNEJTIyMzU1LjkzMzc4MSUyMiUyMHdpZHRoJTNEJTIyMzMyLjI2JTIyJTIwaGVpZ2h0JTNEJTIyNjUuNzMlMjIlM0UlM0MlMkZyZWN0JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5MUM1RTAlMjIlMjBwb2ludHMlM0QlMjIxNTg2LjAxJTIwNTU1LjA4JTIwMTYzMi40NiUyMDYwMS41OSUyMDE2MzIuNDYlMjA2MDEuNTklMjAxNTg2LjAxJTIwNTU1LjA4JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUw''@;'; put 'put ''QSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzQjNFQUVFJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTU3My43MTE1NzclMkMlMjA0NzAuNjIwMjYzJTI5JTIwcm90YXRlJTI4LTQ1LjAwMDAwMCUy''@;'; put 'put ''OSUyMHRyYW5zbGF0ZSUyOC0xNTczLjcxMTU3NyUyQyUyMC00NzAuNjIwMjYzJTI5JTIwJTIyJTIweCUzRCUyMjE1MjIuNjgxNTglMjIlMjB5JTNEJTIyNDAyLjA4NTI2MyUyMiUyMHdpZHRoJTNEJTIyMTAyLjA2JTIyJTIwaGVpZ2h0JTNEJTIyMTM3LjA3JTIyJTNFJTNDJTJGcmVjdCUzRSUw''@;'; put 'put ''RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzQjNFQUVFJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTc1OC42NzY3NTglMkMlMjA2NTUuNzY3MTIwJTI5JTIwcm90YXRlJTI4LTQ0Ljk3MDAw''@;'; put 'put ''MCUyOSUyMHRyYW5zbGF0ZSUyOC0xNzU4LjY3Njc1OCUyQyUyMC02NTUuNzY3MTIwJTI5JTIwJTIyJTIweCUzRCUyMjE3MDcuNjQ2NzYlMjIlMjB5JTNEJTIyNTI4LjI5MjEyJTIyJTIwd2lkdGglM0QlMjIxMDIuMDYlMjIlMjBoZWlnaHQlM0QlMjIyNTQuOTUlMjIlM0UlM0MlMkZyZWN0JTNF''@;'; put 'put ''JTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNCM0VBRUUlMjIlMjBwb2ludHMlM0QlMjIxMzAxLjkxJTIwMTI2LjMxJTIwMTE3OC44NCUyMDMuMTIlMjAxMDM0LjU5JTIwMy4xMiUyMDEyMjkuNzUl''@;'; put 'put ''MjAxOTguNDclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM4M0MwQzglMjIlMjBwb2ludHMlM0QlMjIxODEyLjY1JTIwNzgxLjk1JTIwMjA1NC40NSUyMDEw''@;'; put 'put ''MjMuOTklMjAyMDU0LjQ1JTIwODc5LjU3JTIwMTg4NC44MiUyMDcwOS43OCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyMzdEQzZEQyUyMiUyMHRyYW5zZm9ybSUz''@;'; put 'put ''RCUyMnRyYW5zbGF0ZSUyODEzOTUuNTE2OTAxJTJDJTIwMjkyLjIwNjUxOSUyOSUyMHJvdGF0ZSUyOC00NS4wMDAwMDAlMjklMjB0cmFuc2xhdGUlMjgtMTM5NS41MTY5MDElMkMlMjAtMjkyLjIwNjUxOSUyOSUyMCUyMiUyMHglM0QlMjIxMzQ0LjQ5MTklMjIlMjB5JTNEJTIyMTA4LjcwMTUx''@;'; put 'put ''OSUyMiUyMHdpZHRoJTNEJTIyMTAyLjA1JTIyJTIwaGVpZ2h0JTNEJTIyMzY3LjAxJTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzNjhCOEQ1JTIyJTIwdHJhbnNmb3Jt''@;'; put 'put ''JTNEJTIydHJhbnNsYXRlJTI4MTY0NS4zMTM2MTklMkMlMjA1NDIuMjQ5NzYwJTI5JTIwcm90YXRlJTI4LTQ1LjAwMDAwMCUyOSUyMHRyYW5zbGF0ZSUyOC0xNjQ1LjMxMzYxOSUyQyUyMC01NDIuMjQ5NzYwJTI5JTIwJTIyJTIweCUzRCUyMjE1OTQuMjgzNjIlMjIlMjB5JTNEJTIyNTA5LjM4''@;'; put 'put ''NDc2JTIyJTIwd2lkdGglM0QlMjIxMDIuMDYlMjIlMjBoZWlnaHQlM0QlMjI2NS43MyUyMiUzRSUzQyUyRnJlY3QlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTND''@;'; put 'put ''ZyUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODAuMDAwMDAwJTJDJTIwMy4wMDAwMDAlMjklMjIlMjBzdHJva2UlM0QlMjIlMjMwMDAwMDAlMjIlMjBvcGFjaXR5JTNEJTIyMC4xNSUyMiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUzQ3BhdGglMjBkJTNEJTIyTTAuOTUlMkMwLjEyJTIwTDAuOTUlMkM4NDAuMTIlMjIlMjBpZCUzRCUyMlNoYXBlJTIyJTNFJTNDJTJGcGF0aCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlM0MlMkZnJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwRCUwQSUzQyUyRnN2ZyUzRSk7YmFja2dyb3VuZC1zaXplOjEwMCU7YmFja2dyb3VuZC1wb3NpdGlvbjoyNS4ycmVtIDA7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0fS5sb2dpbi13cmFwcGVyIC5sb2dpbntiYWNr''@;'; put 'put ''Z3JvdW5kOiNmYWZhZmE7YmFja2dyb3VuZDp2YXIoLS1jbHItbG9naW4tYmFja2dyb3VuZC1jb2xvciwgI2ZhZmFmYSk7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3BhZGRpbmc6MS4ycmVtIDNyZW07''@;'; put 'put ''aGVpZ2h0OmF1dG87bWluLWhlaWdodDoxMDB2aDt3aWR0aDoyNS4ycmVtfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAudGl0bGV7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItbG9naW4tdGl0bGUtY29sb3IsIGJsYWNrKTtmb250LXdlaWdodDoyMDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWxv''@;'; put 'put ''Z2luLXRpdGxlLWZvbnQtd2VpZ2h0LCAyMDApO2ZvbnQtZmFtaWx5Ok1ldHJvcG9saXMsQXZlbmlyIE5leHQsSGVsdmV0aWNhIE5ldWUsQXJpYWwsc2Fucy1zZXJpZjtmb250LWZhbWlseTp2YXIoLS1jbHItbG9naW4tdGl0bGUtZm9udC1mYW1pbHksIE1ldHJvcG9saXMsICJBdmVuaXIgTmV4''@;'; put 'put ''dCIsICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmKTtmb250LXNpemU6MS42cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjhyZW19LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC50aXRsZSAud2VsY29tZXtsaW5lLWhlaWdodDoxLjhyZW19LmxvZ2luLXdy''@;'; put 'put ''YXBwZXIgLmxvZ2luIC50aXRsZSAuaGludHtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1sb2dpbi10aXRsZS1jb2xvciwgYmxhY2spO21hcmdpbi10b3A6MS41cmVtO2ZvbnQtc2l6ZTouN3JlbX0ubG9naW4td3JhcHBlciAubG9naW4gLnRyYWRlbWFya3tjb2xvcjojMDAwO2NvbG9yOnZh''@;'; put 'put ''cigtLWNsci1sb2dpbi10cmFkZW1hcmstY29sb3IsIGJsYWNrKTtmb250LXdlaWdodDoyMDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWxvZ2luLXRyYWRlbWFyay1mb250LXdlaWdodCwgMjAwKTtmb250LWZhbWlseTpNZXRyb3BvbGlzLEF2ZW5pciBOZXh0LEhlbHZldGljYSBOZXVlLEFyaWFs''@;'; put 'put ''LHNhbnMtc2VyaWY7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWxvZ2luLXRyYWRlbWFyay1mb250LWZhbWlseSwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZToxLjRyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFs''@;'; put 'put ''fS5sb2dpbi13cmFwcGVyIC5sb2dpbiAuc3VidGl0bGV7Zm9udC13ZWlnaHQ6MjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1sb2dpbi1zdWJ0aXRsZS1mb250LXdlaWdodCwgMjAwKTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1sb2dpbi1zdWJ0aXRsZS1jb2xvciwgYmxhY2spO2ZvbnQt''@;'; put 'put ''ZmFtaWx5Ok1ldHJvcG9saXMsQXZlbmlyIE5leHQsSGVsdmV0aWNhIE5ldWUsQXJpYWwsc2Fucy1zZXJpZjtmb250LWZhbWlseTp2YXIoLS1jbHItbG9naW4tc3VidGl0bGUtZm9udC1mYW1pbHksIE1ldHJvcG9saXMsICJBdmVuaXIgTmV4dCIsICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBz''@;'; put 'put ''YW5zLXNlcmlmKTtmb250LXNpemU6MS4xcmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjhyZW19LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3BhZGRpbmc6Mi40cmVtIDAgMH0ubG9naW4t''@;'; put 'put ''d3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5hdXRoLXNvdXJjZSwubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC51c2VybmFtZSwubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5wYXNzd29yZCwubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3Vw''@;'; put 'put ''IC5jaGVja2JveCwubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5jbHItZm9ybS1jb250cm9sLC5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jaGVja2JveC13cmFwcGVye21hcmdpbjouM3JlbSAwIC45cmVtfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAu''@;'; put 'put ''bG9naW4tZ3JvdXAgLmNsci1jb250cm9sLWNvbnRhaW5lcntkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCV9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItc2VsZWN0LXdyYXBwZXIsLmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dp''@;'; put 'put ''bi1ncm91cCAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItc2VsZWN0e3dpZHRoOjEwMCV9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlcj4uY2xyLWlucHV0e3dpZHRoOjEwMCV9LmxvZ2luLXdyYXBw''@;'; put 'put ''ZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlcnt3aWR0aDoxMDAlfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLWlucHV0LXdyYXBwZXI+LmNsci1pbnB1dC1n''@;'; put 'put ''cm91cHttYXgtd2lkdGg6MTAwJTt3aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6LjQ4cmVtfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLWlucHV0LXdyYXBwZXI+LmNsci1pbnB1dC1ncm91cD4uY2xyLWlucHV0e3dpZHRoOmNh''@;'; put 'put ''bGMoMTAwJSAtIDEuMnJlbSl9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAudG9vbHRpcC12YWxpZGF0aW9ue21hcmdpbi10b3A6LjNyZW19LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAudG9vbHRpcC12YWxpZGF0aW9uIC51c2VybmFtZSwubG9naW4td3Jh''@;'; put 'put ''cHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC50b29sdGlwLXZhbGlkYXRpb24gLnBhc3N3b3Jke3dpZHRoOjEwMCU7bWFyZ2luLXRvcDowfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmVycm9ye2Rpc3BsYXk6bm9uZTttYXJnaW46LjNyZW0gMCAwO3BhZGRpbmc6LjQ1cmVt''@;'; put 'put ''IC42cmVtO2JhY2tncm91bmQ6I2MyMWQwMDtiYWNrZ3JvdW5kOnZhcigtLWNsci1sb2dpbi1lcnJvci1iYWNrZ3JvdW5kLWNvbG9yLCAjYzIxZDAwKTtjb2xvcjojZmFmYWZhO2NvbG9yOnZhcigtLWNsci1sb2dpbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmFmYWZhKTtib3JkZXItcmFkaXVzOi4x''@;'; put 'put ''NXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1sb2dpbi1lcnJvci1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2xpbmUtaGVpZ2h0Oi45cmVtfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmVycm9yOmJlZm9yZXtkaXNwbGF5OmlubGluZS1ibG9jaztjb250ZW50OiIiO2Jh''@;'; put 'put ''Y2tncm91bmQ6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHZpZXdCb3glM0QlMjI1JTIwNSUyMDI2JTIwMjYlMjIlMjBwcmVzZXJ2ZUFzcGVjdFJhdGlvJTNEJTIyeE1pZFlNaWQlMjBtZWV0JTIyJTIweG1sbnMlM0Ql''@;'; put 'put ''MjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB4bWxucyUzQXhsaW5rJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGxpbmslMjIlM0UlM0NkZWZzJTNFJTNDc3R5bGUlM0UuY2xyLWktb3V0bGluZSU3QmZpbGwlM0ElMjNmYWZhZmElM0Il''@;'; put 'put ''N0QlM0MlMkZzdHlsZSUzRSUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0N0aXRsZSUzRWV4Y2xhbWF0aW9uLWNpcmNsZS1saW5lJTNDJTJGdGl0bGUlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTElMjIlMjBkJTNEJTIyTTE4JTJDNkExMiUyQzEyJTJDMCUyQzElMkMwJTJDMzAlMkMxOCUyQzEyJTJDMTIlMkMwJTJDMCUyQzAlMkMxOCUyQzZabTAlMkMyMkExMCUy''@;'; put 'put ''QzEwJTJDMCUyQzElMkMxJTJDMjglMkMxOCUyQzEwJTJDMTAlMkMwJTJDMCUyQzElMkMxOCUyQzI4WiUyMiUzRSUzQyUyRnBhdGglM0UlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTIlMjIlMjBkJTNEJTIyTTE4JTJDMjAuMDdhMS4zJTJD''@;'; put 'put ''MS4zJTJDMCUyQzAlMkMxLTEuMy0xLjN2LTZhMS4zJTJDMS4zJTJDMCUyQzElMkMxJTJDMi42JTJDMHY2QTEuMyUyQzEuMyUyQzAlMkMwJTJDMSUyQzE4JTJDMjAuMDdaJTIyJTNFJTNDJTJGcGF0aCUzRSUzQ2NpcmNsZSUyMGNsYXNzJTNEJTIyY2xyLWktb3V0bGluZSUyMGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0zJTIyJTIwY3glM0QlMjIxNy45NSUyMiUyMGN5JTNEJTIyMjMuMDIlMjIlMjByJTNEJTIyMS41JTIyJTNFJTNDJTJGY2lyY2xlJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGc3ZnJTNFKTttYXJnaW46LjA1cmVtIC4zcmVtIDAgMDtoZWln''@;'; put 'put ''aHQ6LjhyZW07d2lkdGg6LjhyZW19LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuZXJyb3IuYWN0aXZle2Rpc3BsYXk6ZmxleH0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5lcnJvci5hY3RpdmU6YmVmb3Jle2ZsZXg6MCAwIC44cmVtfS5sb2dpbi13cmFw''@;'; put 'put ''cGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmJ0bnttYXJnaW46My42cmVtIDAgMDttYXgtd2lkdGg6bm9uZX0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5lcnJvcisuYnRue21hcmdpbjoxLjJyZW0gMCAwfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLnNp''@;'; put 'put ''Z251cHttYXJnaW4tdG9wOi42cmVtO2ZvbnQtc2l6ZTouN3JlbTt0ZXh0LWFsaWduOmNlbnRlcn0ubG9naW4td3JhcHBlciAubG9naW46YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO3dpZHRoOi4wNXJlbTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOiMw''@;'; put 'put ''MDA7YmFja2dyb3VuZDp2YXIoLS1jbHItbG9naW4tcGFuZWwtbGluZS1jb2xvciwgYmxhY2spO29wYWNpdHk6LjE7b3BhY2l0eTp2YXIoLS1jbHItbG9naW4tcGFuZWwtbGluZS1vcGFjaXR5LCAuMSk7dG9wOjA7cmlnaHQ6LS4xcmVtfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4''@;'; put 'put ''cHgpey5sb2dpbi13cmFwcGVye2p1c3RpZnktY29udGVudDpjZW50ZXI7YmFja2dyb3VuZDojZmFmYWZhO2JhY2tncm91bmQ6dmFyKC0tY2xyLWxvZ2luLWJhY2tncm91bmQtY29sb3IsICNmYWZhZmEpfS5sb2dpbi13cmFwcGVyIC5sb2dpbnt3aWR0aDoxMDAlO21hcmdpbi1sZWZ0OjA7cGFk''@;'; put 'put ''ZGluZzoxLjJyZW0gMjAlfS5sb2dpbi13cmFwcGVyIC5sb2dpbjphZnRlcntjb250ZW50Om5vbmV9fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NTc2cHgpey5sb2dpbi13cmFwcGVyIC5sb2dpbntwYWRkaW5nOjEuMnJlbSAxNSV9fS5tYWluLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7''@;'; put 'put ''ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDB2aDtiYWNrZ3JvdW5kOiNmYWZhZmE7YmFja2dyb3VuZDp2YXIoLS1jbHItZ2xvYmFsLWFwcC1iYWNrZ3JvdW5kLCAjZmFmYWZhKX0ubWFpbi1jb250YWluZXIgLmFsZXJ0LmFsZXJ0LWFwcC1sZXZlbHtmbGV4OjAgMCBhdXRvO292ZXJm''@;'; put 'put ''bG93LXg6aGlkZGVufS5tYWluLWNvbnRhaW5lciBoZWFkZXIsLm1haW4tY29udGFpbmVyIC5oZWFkZXJ7ZmxleDowIDAgM3JlbX0ubWFpbi1jb250YWluZXIgLnN1Yi1uYXYsLm1haW4tY29udGFpbmVyIC5zdWJuYXZ7ZmxleDowIDAgMS44cmVtfS5tYWluLWNvbnRhaW5lciAudS1tYWluLWNv''@;'; put 'put ''bnRhaW5lcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXg6MSAxIGF1dG87b3ZlcmZsb3c6aGlkZGVufS5tYWluLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXg6MSAxIGF1dG87bWluLWhlaWdodDouMDVyZW19Lm1haW4tY29udGFp''@;'; put 'put ''bmVyIC5jb250ZW50LWNvbnRhaW5lciAuY29udGVudC1hcmVhe2ZsZXg6MSAxIGF1dG87b3ZlcmZsb3cteTphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO3BhZGRpbmc6MS4ycmVtfS5tYWluLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXIgLmNvbnRlbnQtYXJlYT46''@;'; put 'put ''Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfS5tYWluLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXIgLnNpZGVuYXZ7ZmxleDowIDAgYXV0bztvcmRlcjotMTtvdmVyZmxvdzpoaWRkZW59Lm1haW4tY29udGFpbmVyIC5jb250ZW50LWNvbnRhaW5lciAuY2xyLXZlcnRpY2FsLW5hdntmbGV4''@;'; put 'put ''OjAgMCBhdXRvO29yZGVyOi0xfUBtZWRpYSBwcmludHsubWFpbi1jb250YWluZXJ7aGVpZ2h0OmF1dG99fWJvZHkubm8tc2Nyb2xsaW5nLGJvZHlbY2RzLWxheW91dD1uby1zY3JvbGxpbmddLGJvZHkubm8tc2Nyb2xsaW5nIC5tYWluLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXIgLmNv''@;'; put 'put ''bnRlbnQtYXJlYSxib2R5W2Nkcy1sYXlvdXQ9bm8tc2Nyb2xsaW5nXSAubWFpbi1jb250YWluZXIgLmNvbnRlbnQtY29udGFpbmVyIC5jb250ZW50LWFyZWF7b3ZlcmZsb3c6aGlkZGVufTpyb290ey0tY2xyLW1vZGFsLWNsb3NlLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTYwMCk7''@;'; put 'put ''LS1jbHItbW9kYWwtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItbW9kYWwtY29udGVudC1ib3gtc2hhZG93LWNvbG9yOnJnYmEoIDAsIDAsIDAsIC4yICk7LS1jbHItbW9kYWwtYmFja2Ryb3AtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtOTAwKTstLWNs''@;'; put 'put ''ci1tb2RhbC1iYWNrZHJvcC1vcGFjaXR5Oi44NTstLWNsci1tb2RhbC1ib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzKTstLWNsci1tb2RhbC10aXRsZS1jb2xvcjp2YXIoLS1jbHItaDMtY29sb3IpOy0tY2xyLW1vZGFsLXRpdGxlLWZvbnQtZmFtaWx5OnZhcigt''@;'; put 'put ''LWNsci1oMy1mb250LWZhbWlseSk7LS1jbHItbW9kYWwtdGl0bGUtZm9udC13ZWlnaHQ6dmFyKC0tY2xyLWgzLWZvbnQtd2VpZ2h0KX0ubW9kYWx7cG9zaXRpb246Zml4ZWQ7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MDtsZWZ0OjA7ei1pbmRleDoxMDUwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVj''@;'; put 'put ''dGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzoyLjRyZW19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCl7Lm1vZGFse3BhZGRpbmc6LjZyZW19fS5tb2RhbC1kaWFsb2d7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRl''@;'; put 'put ''eDoxMDUwO3dpZHRoOjI4LjhyZW07bWF4LXdpZHRoOjEwMCV9Lm1vZGFsLWRpYWxvZy5tb2RhbC1zbXt3aWR0aDoxNC40cmVtfS5tb2RhbC1kaWFsb2cubW9kYWwtbGd7d2lkdGg6NDMuMnJlbX0ubW9kYWwtZGlhbG9nLm1vZGFsLXhse3dpZHRoOjU3LjZyZW19Lm1vZGFsLWRpYWxvZyAubW9k''@;'; put 'put ''YWwtY29udGVudHtwYWRkaW5nOjEuMnJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItbW9kYWwtYmctY29sb3IsIHdoaXRlKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1tb2RhbC1ib3JkZXItcmFkaXVzLCAu''@;'; put 'put ''MTVyZW0pO2JveC1zaGFkb3c6MCAuMDVyZW0gLjFyZW0gLjFyZW0gIzAwMDM7Ym94LXNoYWRvdzowIC4wNXJlbSAuMXJlbSAuMXJlbSB2YXIoLS1jbHItbW9kYWwtY29udGVudC1ib3gtc2hhZG93LWNvbG9yKX0ubW9kYWwtaGVhZGVyLC5tb2RhbC1oZWFkZXItLWFjY2Vzc2libGV7Ym9yZGVy''@;'; put 'put ''LWJvdHRvbTpub25lO3BhZGRpbmc6MCAwIDEuMnJlbX0ubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxle2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5tb2RhbC1oZWFkZXIgLm1vZGFsLXRpdGxlLC5tb2RhbC1oZWFkZXIt''@;'; put 'put ''LWFjY2Vzc2libGUgLm1vZGFsLXRpdGxle2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLW1vZGFsLXRpdGxlLWNvbG9yLCBibGFjayk7bWFyZ2luOjA7cGFkZGluZzowIC4xNXJlbX0ubW9kYWwtaGVhZGVyIC5tb2RhbC10aXRsZTpub3QoW2Nkcy10ZXh0XSksLm1vZGFsLWhlYWRlci0tYWNj''@;'; put 'put ''ZXNzaWJsZSAubW9kYWwtdGl0bGU6bm90KFtjZHMtdGV4dF0pe2ZvbnQtc2l6ZToxLjFyZW07Zm9udC1mYW1pbHk6TWV0cm9wb2xpcyxBdmVuaXIgTmV4dCxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1tb2RhbC10aXRsZS1mb250LWZhbWls''@;'; put 'put ''eSwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtd2VpZ2h0OjIwMDtmb250LXdlaWdodDp2YXIoLS1jbHItbW9kYWwtdGl0bGUtZm9udC13ZWlnaHQsIDIwMCk7bGluZS1oZWlnaHQ6MS4ycmVtO2xldHRlci1zcGFj''@;'; put 'put ''aW5nOm5vcm1hbH0ubW9kYWwtaGVhZGVyIC5jbG9zZSwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5jbG9zZXttYXJnaW4tdG9wOi0uMDVyZW07bWFyZ2luLXJpZ2h0Oi0uMjVyZW07Zm9udC1zaXplOjEuM3JlbTtsaW5lLWhlaWdodDoxLjJyZW19Lm1vZGFsLWhlYWRlciAuY2xvc2UgY2Rz''@;'; put 'put ''LWljb24sLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSAuY2xvc2UgY2RzLWljb24sLm1vZGFsLWhlYWRlciAuY2xvc2UgY2xyLWljb24sLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSAuY2xvc2UgY2xyLWljb257ZmlsbDojOGM4YzhjO2ZpbGw6dmFyKC0tY2xyLW1vZGFsLWNsb3NlLWNvbG9y''@;'; put 'put ''LCAjOGM4YzhjKTtoZWlnaHQ6MS4ycmVtO3dpZHRoOjEuMnJlbX0ubW9kYWwtdGl0bGUtd3JhcHBlcntmbGV4OjF9Lm1vZGFsLXRpdGxlLXdyYXBwZXIgLm1vZGFsLXRpdGxlPmgze21hcmdpbi10b3A6MH0ubW9kYWwtYm9keS13cmFwcGVye21heC1oZWlnaHQ6NzB2aDtvdmVyZmxvdy15OmF1''@;'; put 'put ''dG87b3ZlcmZsb3cteDpoaWRkZW47cGFkZGluZzowIC4xNXJlbX0ubW9kYWwtYm9keS13cmFwcGVyPjpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9Lm1vZGFsLWJvZHktd3JhcHBlcj46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9Lm1vZGFsLWZvb3RlcntkaXNwbGF5OmZsZXg7anVzdGlm''@;'; put 'put ''eS1jb250ZW50OmZsZXgtZW5kO3BhZGRpbmc6MS4ycmVtIDAgMH0ubW9kYWwtZm9vdGVyIC5idG57bWFyZ2luOjAgMCAwIC42cmVtfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4cHgpIGFuZCAob3JpZW50YXRpb246bGFuZHNjYXBlKXsubW9kYWwtYm9keS13cmFwcGVye21heC1o''@;'; put 'put ''ZWlnaHQ6NTV2aH19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCl7Lm1vZGFsLWNvbnRlbnR7cGFkZGluZzouNnJlbSAwIC42cmVtIDEuMnJlbX0ubW9kYWwtaGVhZGVyLC5tb2RhbC1oZWFkZXItLWFjY2Vzc2libGV7cGFkZGluZzowIDEuMnJlbSAuNnJlbSAwfS5tb2RhbC1i''@;'; put 'put ''b2R5LXdyYXBwZXJ7bWF4LWhlaWdodDo1NXZofS5tb2RhbC1mb290ZXJ7cGFkZGluZzouNnJlbSAxLjJyZW0gMCAwfX0ubW9kYWwtYmFja2Ryb3B7cG9zaXRpb246Zml4ZWQ7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MDtsZWZ0OjA7YmFja2dyb3VuZC1jb2xvcjojMzMzO2JhY2tncm91bmQtY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLW1vZGFsLWJhY2tkcm9wLWNvbG9yLCAjMzMzMzMzKTtvcGFjaXR5Oi44NTtvcGFjaXR5OnZhcigtLWNsci1tb2RhbC1iYWNrZHJvcC1vcGFjaXR5LCAuODUpO3otaW5kZXg6MTA0MH0ubW9kYWwgLm1vZGFsLW5hdntkaXNwbGF5Om5vbmV9OnJvb3R7LS1jbHItaGVhZGVy''@;'; put 'put ''LWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTkwMCk7LS1jbHItaGVhZGVyLWRpdmlkZXItb3BhY2l0eTouMTU7LS1jbHItaGVhZGVyLW5hdi1vcGFjaXR5Oi42NTstLWNsci1oZWFkZXItbmF2LWhvdmVyLW9wYWNpdHk6MTstLWNsci1oZWFkZXItMi1iZy1jb2xvcjojNDg1YTZh''@;'; put 'put ''Oy0tY2xyLWhlYWRlci0zLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTEwMDApOy0tY2xyLWhlYWRlci00LWJnLWNvbG9yOiMyNDdiYWU7LS1jbHItaGVhZGVyLTUtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi04MDApOy0tY2xyLWhlYWRlci02LWJn''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tMTAwMCk7LS1jbHItaGVhZGVyLTctYmctY29sb3I6IzMwNDI1MDstLWNsci1oZWFkZXItOC1iZy1jb2xvcjojMGYxNzFjOy0tY2xyLWhlYWRlci1mb250LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTUwKTstLWNsci1oZWFkZXIt''@;'; put 'put ''dGl0bGUtY29sb3I6dmFyKC0tY2xyLWhlYWRlci1mb250LWNvbG9yKTstLWNsci1oZWFkZXItdGl0bGUtZm9udC13ZWlnaHQ6dmFyKC0tY2xyLWg1LWZvbnQtd2VpZ2h0KTstLWNsci1oZWFkZXItdGl0bGUtZm9udC1mYW1pbHk6dmFyKC0tY2xyLWg1LWZvbnQtZmFtaWx5KX1oZWFkZXIsLmhl''@;'; put 'put ''YWRlcntkaXNwbGF5OmZsZXg7Y29sb3I6I2ZhZmFmYTtjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IsICNmYWZhZmEpO2JhY2tncm91bmQtY29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1oZWFkZXItYmctY29sb3IsICMzMzMzMzMpO2hlaWdodDozcmVtO3do''@;'; put 'put ''aXRlLXNwYWNlOm5vd3JhcH1oZWFkZXIuaGVhZGVyLTEsLmhlYWRlci5oZWFkZXItMXtiYWNrZ3JvdW5kLWNvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLWJnLWNvbG9yLCAjMzMzMzMzKX1oZWFkZXIuaGVhZGVyLTIsLmhlYWRlci5oZWFkZXItMntiYWNrZ3Jv''@;'; put 'put ''dW5kLWNvbG9yOiM0ODVhNmE7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLTItYmctY29sb3IsICM0ODVhNmEpfWhlYWRlci5oZWFkZXItMywuaGVhZGVyLmhlYWRlci0ze2JhY2tncm91bmQtY29sb3I6IzMyMDA0NztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1oZWFkZXIt''@;'; put 'put ''My1iZy1jb2xvciwgIzMyMDA0Nyl9aGVhZGVyLmhlYWRlci00LC5oZWFkZXIuaGVhZGVyLTR7YmFja2dyb3VuZC1jb2xvcjojMjQ3YmFlO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWhlYWRlci00LWJnLWNvbG9yLCAjMjQ3YmFlKX1oZWFkZXIuaGVhZGVyLTUsLmhlYWRlci5oZWFkZXIt''@;'; put 'put ''NXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDU2N2E7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLTUtYmctY29sb3IsICMwMDU2N2EpfWhlYWRlci5oZWFkZXItNiwuaGVhZGVyLmhlYWRlci02e2JhY2tncm91bmQtY29sb3I6IzAwMzY0ZDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1oZWFkZXItNi1iZy1jb2xvciwgIzAwMzY0ZCl9aGVhZGVyLmhlYWRlci03LC5oZWFkZXIuaGVhZGVyLTd7YmFja2dyb3VuZC1jb2xvcjojMzA0MjUwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWhlYWRlci03LWJnLWNvbG9yLCAjMzA0MjUwKX1oZWFkZXIuaGVhZGVyLTgsLmhlYWRl''@;'; put 'put ''ci5oZWFkZXItOHtiYWNrZ3JvdW5kLWNvbG9yOiMwZjE3MWM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLTgtYmctY29sb3IsICMwZjE3MWMpfWhlYWRlciAuYnJhbmRpbmcsLmhlYWRlciAuYnJhbmRpbmd7ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIGF1dG87bWluLXdpZHRoOjEw''@;'; put 'put ''LjJyZW07cGFkZGluZzowIDEuMnJlbTtoZWlnaHQ6M3JlbX1oZWFkZXIgLmJyYW5kaW5nPmEsaGVhZGVyIC5icmFuZGluZz4ubmF2LWxpbmssLmhlYWRlciAuYnJhbmRpbmc+YSwuaGVhZGVyIC5icmFuZGluZz4ubmF2LWxpbmt7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50''@;'; put 'put ''ZXI7aGVpZ2h0OjNyZW19aGVhZGVyIC5icmFuZGluZz5hOmhvdmVyLGhlYWRlciAuYnJhbmRpbmc+YTphY3RpdmUsaGVhZGVyIC5icmFuZGluZz4ubmF2LWxpbms6aG92ZXIsaGVhZGVyIC5icmFuZGluZz4ubmF2LWxpbms6YWN0aXZlLC5oZWFkZXIgLmJyYW5kaW5nPmE6aG92ZXIsLmhlYWRl''@;'; put 'put ''ciAuYnJhbmRpbmc+YTphY3RpdmUsLmhlYWRlciAuYnJhbmRpbmc+Lm5hdi1saW5rOmhvdmVyLC5oZWFkZXIgLmJyYW5kaW5nPi5uYXYtbGluazphY3RpdmV7dGV4dC1kZWNvcmF0aW9uOm5vbmV9aGVhZGVyIC5icmFuZGluZz5hOmZvY3VzLGhlYWRlciAuYnJhbmRpbmc+Lm5hdi1saW5rOmZv''@;'; put 'put ''Y3VzLC5oZWFkZXIgLmJyYW5kaW5nPmE6Zm9jdXMsLmhlYWRlciAuYnJhbmRpbmc+Lm5hdi1saW5rOmZvY3Vze291dGxpbmUtb2Zmc2V0Oi0uMjVyZW19aGVhZGVyIC5icmFuZGluZyAuY2xyLWljb24saGVhZGVyIC5icmFuZGluZyBjZHMtaWNvbixoZWFkZXIgLmJyYW5kaW5nIGNsci1pY29u''@;'; put 'put ''LC5oZWFkZXIgLmJyYW5kaW5nIC5jbHItaWNvbiwuaGVhZGVyIC5icmFuZGluZyBjZHMtaWNvbiwuaGVhZGVyIC5icmFuZGluZyBjbHItaWNvbntmbGV4LWdyb3c6MDtmbGV4LXNocmluazowO2hlaWdodDoxLjhyZW07d2lkdGg6MS44cmVtO21hcmdpbi1yaWdodDouNDVyZW19aGVhZGVyIC5i''@;'; put 'put ''cmFuZGluZyAudGl0bGUsLmhlYWRlciAuYnJhbmRpbmcgLnRpdGxle2NvbG9yOiNmYWZhZmE7Y29sb3I6dmFyKC0tY2xyLWhlYWRlci10aXRsZS1jb2xvciwgI2ZhZmFmYSk7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1oZWFkZXItdGl0bGUtZm9udC13ZWlnaHQsIDQw''@;'; put 'put ''MCk7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcyxBdmVuaXIgTmV4dCxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1oZWFkZXItdGl0bGUtZm9udC1mYW1pbHksIE1ldHJvcG9saXMsICJBdmVuaXIgTmV4dCIsICJIZWx2ZXRpY2EgTmV1ZSIsIEFy''@;'; put 'put ''aWFsLCBzYW5zLXNlcmlmKTtmb250LXNpemU6LjhyZW07bGV0dGVyLXNwYWNpbmc6LjAxZW07bGluZS1oZWlnaHQ6M3JlbTt0ZXh0LWRlY29yYXRpb246bm9uZX1oZWFkZXIgLnNldHRpbmdzLGhlYWRlciAuaGVhZGVyLW5hdixoZWFkZXIgLmhlYWRlci1hY3Rpb25zLC5oZWFkZXIgLnNldHRp''@;'; put 'put ''bmdzLC5oZWFkZXIgLmhlYWRlci1uYXYsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnN7aGVpZ2h0OjNyZW19aGVhZGVyIC5zZXR0aW5ncyAubmF2LXRleHQsaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtdGV4dCxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtdGV4dCwuaGVhZGVyIC5zZXR0aW5n''@;'; put 'put ''cyAubmF2LXRleHQsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LXRleHQsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi10ZXh0e2ZvbnQtd2VpZ2h0OjUwMH1oZWFkZXIgLnNldHRpbmdzIGNsci1pY29uLGhlYWRlciAuaGVhZGVyLW5hdiBjbHItaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rp''@;'; put 'put ''b25zIGNsci1pY29uLC5oZWFkZXIgLnNldHRpbmdzIGNsci1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgY2xyLWljb24sLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgY2xyLWljb257Y29sb3I6I2ZhZmFmYTtjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IsICNmYWZhZmEpfWhlYWRl''@;'; put 'put ''ciAuc2V0dGluZ3MgLm5hdi1pY29uLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWljb24saGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWljb24sLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1pY29uLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25z''@;'; put 'put ''IC5uYXYtaWNvbntoZWlnaHQ6M3JlbTt3aWR0aDozcmVtfWhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmssaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmssLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLC5oZWFkZXIgLmhlYWRl''@;'; put 'put ''ci1uYXYgLm5hdi1saW5rLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGlua3twb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jazt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOi45cmVtIDEuMnJlbTtjb2xvcjojZmFmYWZhO2NvbG9yOnZhcigtLWNsci1oZWFkZXIt''@;'; put 'put ''Zm9udC1jb2xvciwgI2ZhZmFmYSk7b3BhY2l0eTouNjU7b3BhY2l0eTp2YXIoLS1jbHItaGVhZGVyLW5hdi1vcGFjaXR5LCAuNjUpfWhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rOmhvdmVyLGhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rOmFjdGl2ZSxoZWFkZXIgLmhlYWRlci1uYXYgLm5h''@;'; put 'put ''di1saW5rOmhvdmVyLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbms6YWN0aXZlLGhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rOmhvdmVyLGhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rOmFjdGl2ZSwuaGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbms6aG92ZXIsLmhl''@;'; put 'put ''YWRlciAuc2V0dGluZ3MgLm5hdi1saW5rOmFjdGl2ZSwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpob3ZlciwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazphY3RpdmUsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rOmhvdmVyLC5oZWFkZXIgLmhlYWRlci1hY3Rp''@;'; put 'put ''b25zIC5uYXYtbGluazphY3RpdmV7dGV4dC1kZWNvcmF0aW9uOm5vbmV9aGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbms6ZW5hYmxlZDpob3ZlcixoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmVuYWJsZWQ6aG92ZXIsaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbms6ZW5hYmxl''@;'; put 'put ''ZDpob3ZlciwuaGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbms6ZW5hYmxlZDpob3ZlciwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazplbmFibGVkOmhvdmVyLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluazplbmFibGVkOmhvdmVye29wYWNpdHk6MTtvcGFjaXR5OnZhcigt''@;'; put 'put ''LWNsci1oZWFkZXItbmF2LWhvdmVyLW9wYWNpdHksIDEpfWhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rOmRpc2FibGVkLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbms6ZGlzYWJsZWQsaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbms6ZGlzYWJsZWQsLmhlYWRlciAuc2V0dGlu''@;'; put 'put ''Z3MgLm5hdi1saW5rOmRpc2FibGVkLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmRpc2FibGVkLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluazpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWR9aGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbmsgLmZhLGhlYWRlciAuc2V0''@;'; put 'put ''dGluZ3MgLm5hdi1saW5rIC5uYXYtaWNvbixoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIC5mYSxoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIC5uYXYtaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayAuZmEsaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxp''@;'; put 'put ''bmsgLm5hdi1pY29uLC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluayAuZmEsLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rIC5uYXYtaWNvbiwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluayAuZmEsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsgLm5hdi1pY29uLC5oZWFkZXIg''@;'; put 'put ''LmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayAuZmEsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rIC5uYXYtaWNvbntmb250LXNpemU6MS4xcmVtfWhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rIGNkcy1pY29uLGhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rIGNsci1pY29uLGhl''@;'; put 'put ''YWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsgY2RzLWljb24saGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluayBjbHItaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayBjZHMtaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayBjbHItaWNvbiwuaGVhZGVy''@;'; put 'put ''IC5zZXR0aW5ncyAubmF2LWxpbmsgY2RzLWljb24sLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rIGNsci1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIGNkcy1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIGNsci1pY29uLC5oZWFkZXIgLmhlYWRlci1hY3Rp''@;'; put 'put ''b25zIC5uYXYtbGluayBjZHMtaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsgY2xyLWljb257cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7aGVpZ2h0OjEuMnJlbTt3aWR0aDoxLjJyZW19aGVhZGVy''@;'; put 'put ''IC5zZXR0aW5ncyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbixoZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNsci1pY29uLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbixoZWFkZXIgLmhlYWRlci1uYXYg''@;'; put 'put ''Lm5hdi1saW5rLm5hdi1pY29uLXRleHQgY2xyLWljb24saGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNsci1pY29uLC5oZWFkZXIgLnNldHRpbmdzIC5u''@;'; put 'put ''YXYtbGluay5uYXYtaWNvbi10ZXh0IGNkcy1pY29uLC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNsci1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLm5hdi1pY29uLXRleHQgY2RzLWljb24sLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsu''@;'; put 'put ''bmF2LWljb24tdGV4dCBjbHItaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjbHItaWNvbntwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6YXV0bzts''@;'; put 'put ''ZWZ0OmF1dG87dHJhbnNmb3JtOm5vbmU7bWFyZ2luLWxlZnQ6MS4ycmVtfWhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLm5hdi1pY29uLXRleHQgLm5hdi10ZXh0LGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsubmF2LWljb24tdGV4dCAubmF2LXRleHQsaGVhZGVyIC5oZWFkZXItYWN0''@;'; put 'put ''aW9ucyAubmF2LWxpbmsubmF2LWljb24tdGV4dCAubmF2LXRleHQsLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLm5hdi1pY29uLXRleHQgLm5hdi10ZXh0LC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLm5hdi1pY29uLXRleHQgLm5hdi10ZXh0LC5oZWFkZXIgLmhlYWRlci1hY3Rp''@;'; put 'put ''b25zIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IC5uYXYtdGV4dHttYXJnaW4tbGVmdDowO3BhZGRpbmctbGVmdDouM3JlbX1oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0LGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsgLm5hdi1pY29uKy5uYXYtdGV4''@;'; put 'put ''dCxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0LC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0LC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIC5uYXYtaWNvbisubmF2LXRleHQsLmhlYWRlciAuaGVh''@;'; put 'put ''ZGVyLWFjdGlvbnMgLm5hdi1saW5rIC5uYXYtaWNvbisubmF2LXRleHR7ZGlzcGxheTpub25lfWhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLmFjdGl2ZSxoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLmFjdGl2ZSxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluay5hY3RpdmUs''@;'; put 'put ''LmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLmFjdGl2ZSwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluay5hY3RpdmUsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rLmFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjE1KTtvcGFjaXR5OjF9aGVhZGVyIC5z''@;'; put 'put ''ZXR0aW5ncyAubmF2LWxpbms6Zm9jdXMsaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpmb2N1cyxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluazpmb2N1cywuaGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbms6Zm9jdXMsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbms6Zm9j''@;'; put 'put ''dXMsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rOmZvY3Vze291dGxpbmUtb2Zmc2V0Oi0uMjVyZW19aGVhZGVyIC5oZWFkZXItbmF2LC5oZWFkZXIgLmhlYWRlci1uYXZ7ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIGF1dG99aGVhZGVyIC5oZWFkZXItbmF2Omxhc3QtY2hpbGQ+Lm5h''@;'; put 'put ''di1saW5rOmxhc3QtY2hpbGQ6YWZ0ZXIsLmhlYWRlciAuaGVhZGVyLW5hdjpsYXN0LWNoaWxkPi5uYXYtbGluazpsYXN0LWNoaWxkOmFmdGVye2NvbnRlbnQ6bm9uZX1oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmZpcnN0LW9mLXR5cGUsaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGlu''@;'; put 'put ''azpsYXN0LW9mLXR5cGUsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbms6Zmlyc3Qtb2YtdHlwZSwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpsYXN0LW9mLXR5cGV7cG9zaXRpb246cmVsYXRpdmV9aGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpmaXJzdC1vZi10eXBlOmJl''@;'; put 'put ''Zm9yZSxoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmxhc3Qtb2YtdHlwZTphZnRlciwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpmaXJzdC1vZi10eXBlOmJlZm9yZSwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpsYXN0LW9mLXR5cGU6YWZ0ZXJ7ZGlzcGxheTppbmxp''@;'; put 'put ''bmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7Y29udGVudDoiIjtiYWNrZ3JvdW5kOiNmYWZhZmE7YmFja2dyb3VuZDp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IsICNmYWZhZmEpO29wYWNpdHk6dmFyKC0tY2xyLWhlYWRlci1kaXZpZGVyLW9wYWNpdHksIC4xNSk7b3BhY2l0eTouMTU7''@;'; put 'put ''aGVpZ2h0OjJyZW07d2lkdGg6LjA1cmVtO3dpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7dG9wOi41cmVtO2xlZnQ6MDtsZWZ0OmF1dG99aGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpmaXJzdC1vZi10eXBlOmJlZm9yZSwuaGVhZGVyIC5oZWFkZXItbmF2''@;'; put 'put ''IC5uYXYtbGluazpmaXJzdC1vZi10eXBlOmJlZm9yZXtsZWZ0OjB9aGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpsYXN0LW9mLXR5cGU6YWZ0ZXIsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbms6bGFzdC1vZi10eXBlOmFmdGVye3JpZ2h0OjB9aGVhZGVyIC5oZWFkZXItbmF2IC5u''@;'; put 'put ''YXYtbGluay5hY3RpdmU6Zmlyc3Qtb2YtdHlwZTpiZWZvcmUsaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluay5hY3RpdmU6bGFzdC1vZi10eXBlOmFmdGVyLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLmFjdGl2ZTpmaXJzdC1vZi10eXBlOmJlZm9yZSwuaGVhZGVyIC5oZWFkZXIt''@;'; put 'put ''bmF2IC5uYXYtbGluay5hY3RpdmU6bGFzdC1vZi10eXBlOmFmdGVye2NvbnRlbnQ6bm9uZX1oZWFkZXIgLnNldHRpbmdzLGhlYWRlciAuaGVhZGVyLWFjdGlvbnMsLmhlYWRlciAuc2V0dGluZ3MsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnN7ZmxleDoxIDAgYXV0bztkaXNwbGF5OmZsZXg7anVz''@;'; put 'put ''dGlmeS1jb250ZW50OmZsZXgtZW5kfWhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGUsaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24+LmRyb3Bkb3duLXRvZ2dsZSwuaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24+LmRyb3Bkb3duLXRvZ2dsZSwuaGVh''@;'; put 'put ''ZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24+LmRyb3Bkb3duLXRvZ2dsZXtwb3NpdGlvbjpyZWxhdGl2ZTtsaW5lLWhlaWdodDozcmVtO2hlaWdodDozcmVtO291dGxpbmUtb2Zmc2V0Oi0uMjVyZW07Y29sb3I6I2ZhZmFmYTtjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3Is''@;'; put 'put ''ICNmYWZhZmEpO29wYWNpdHk6LjY1O29wYWNpdHk6dmFyKC0tY2xyLWhlYWRlci1uYXYtb3BhY2l0eSwgLjY1KX1oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xlOmVuYWJsZWQ6aG92ZXIsaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24+LmRyb3Bkb3du''@;'; put 'put ''LXRvZ2dsZTplbmFibGVkOmhvdmVyLC5oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xlOmVuYWJsZWQ6aG92ZXIsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6ZW5hYmxlZDpob3ZlcntvcGFjaXR5OjE7b3BhY2l0eTp2''@;'; put 'put ''YXIoLS1jbHItaGVhZGVyLW5hdi1ob3Zlci1vcGFjaXR5LCAxKX1oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xlOmRpc2FibGVkLGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6ZGlzYWJsZWQsLmhlYWRlciAuc2V0dGlu''@;'; put 'put ''Z3M+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6ZGlzYWJsZWQsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkfWhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2''@;'; put 'put ''LWljb24gY2RzLWljb246bm90KFtzaGFwZV49YW5nbGVdKSxoZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uIGNsci1pY29uOm5vdChbc2hhcGVePWFuZ2xlXSksaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2ds''@;'; put 'put ''ZS5uYXYtaWNvbiBjZHMtaWNvbjpub3QoW3NoYXBlXj1hbmdsZV0pLGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2xyLWljb246bm90KFtzaGFwZV49YW5nbGVdKSwuaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3du''@;'; put 'put ''LXRvZ2dsZS5uYXYtaWNvbiBjZHMtaWNvbjpub3QoW3NoYXBlXj1hbmdsZV0pLC5oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uIGNsci1pY29uOm5vdChbc2hhcGVePWFuZ2xlXSksLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIC5k''@;'; put 'put ''cm9wZG93bi10b2dnbGUubmF2LWljb24gY2RzLWljb246bm90KFtzaGFwZV49YW5nbGVdKSwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjbHItaWNvbjpub3QoW3NoYXBlXj1hbmdsZV0pe3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1''@;'; put 'put ''MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7aGVpZ2h0OjEuMXJlbTt3aWR0aDoxLjFyZW07cmlnaHQ6MS4ycmVtfWhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2RzLWljb25bc2hhcGVePWFuZ2xlXSxoZWFkZXIgLnNldHRpbmdzPi5k''@;'; put 'put ''cm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uIGNsci1pY29uW3NoYXBlXj1hbmdsZV0saGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjZHMtaWNvbltzaGFwZV49YW5nbGVdLGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRy''@;'; put 'put ''b3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2xyLWljb25bc2hhcGVePWFuZ2xlXSwuaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjZHMtaWNvbltzaGFwZV49YW5nbGVdLC5oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAuZHJv''@;'; put 'put ''cGRvd24tdG9nZ2xlLm5hdi1pY29uIGNsci1pY29uW3NoYXBlXj1hbmdsZV0sLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2RzLWljb25bc2hhcGVePWFuZ2xlXSwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRy''@;'; put 'put ''b3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjbHItaWNvbltzaGFwZV49YW5nbGVde3JpZ2h0Oi42cmVtO3RvcDo0NCV9aGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtdGV4dCxoZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93biAuZHJvcGRvd24tdG9n''@;'; put 'put ''Z2xlLm5hdi10ZXh0LC5oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi10ZXh0LC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi10ZXh0e3BhZGRpbmc6MCAxLjhyZW0gMCAxLjJyZW19aGVhZGVyIC5zZXR0''@;'; put 'put ''aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtdGV4dCBjZHMtaWNvbltzaGFwZV49YW5nbGVdLGhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LXRleHQgY2xyLWljb25bc2hhcGVePWFuZ2xlXSxoZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5k''@;'; put 'put ''cm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi10ZXh0IGNkcy1pY29uW3NoYXBlXj1hbmdsZV0saGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtdGV4dCBjbHItaWNvbltzaGFwZV49YW5nbGVdLC5oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93''@;'; put 'put ''biAuZHJvcGRvd24tdG9nZ2xlLm5hdi10ZXh0IGNkcy1pY29uW3NoYXBlXj1hbmdsZV0sLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LXRleHQgY2xyLWljb25bc2hhcGVePWFuZ2xlXSwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRy''@;'; put 'put ''b3Bkb3duLXRvZ2dsZS5uYXYtdGV4dCBjZHMtaWNvbltzaGFwZV49YW5nbGVdLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi10ZXh0IGNsci1pY29uW3NoYXBlXj1hbmdsZV17cmlnaHQ6MS4ycmVtfWhlYWRlciAuc2V0dGluZ3M+LmRyb3Bk''@;'; put 'put ''b3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24saGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiwuaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9u''@;'; put 'put ''cz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbnt3aWR0aDozcmVtO3BhZGRpbmctcmlnaHQ6MH1oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93bi5ib3R0b20tcmlnaHQ+LmRyb3Bkb3duLW1lbnUsaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24uYm90dG9tLWxlZnQ+LmRyb3Bk''@;'; put 'put ''b3duLW1lbnUsaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24uYm90dG9tLXJpZ2h0Pi5kcm9wZG93bi1tZW51LGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duLmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51LC5oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93bi5ib3R0b20t''@;'; put 'put ''cmlnaHQ+LmRyb3Bkb3duLW1lbnUsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duLmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51LC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93bi5ib3R0b20tcmlnaHQ+LmRyb3Bkb3duLW1lbnUsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRy''@;'; put 'put ''b3Bkb3duLmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51e3RvcDo4NSV9aGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd246bGFzdC1jaGlsZC5ib3R0b20tcmlnaHQ+LmRyb3Bkb3duLW1lbnUsaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd246bGFzdC1jaGlsZC5ib3R0b20tcmlnaHQ+''@;'; put 'put ''LmRyb3Bkb3duLW1lbnUsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duOmxhc3QtY2hpbGQuYm90dG9tLXJpZ2h0Pi5kcm9wZG93bi1tZW51LC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93bjpsYXN0LWNoaWxkLmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVudXtyaWdodDouMTVy''@;'; put 'put ''ZW19aGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUsaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi1tZW51LC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9w''@;'; put 'put ''ZG93biAuZHJvcGRvd24tbWVudXttYXJnaW4tdG9wOi0uMnJlbTtsZWZ0OmF1dG87cmlnaHQ6MH1oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biA6bGFzdC1jaGlsZC5kcm9wZG93bi1tZW51LGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIDpsYXN0LWNoaWxkLmRyb3Bkb3duLW1l''@;'; put 'put ''bnUsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIDpsYXN0LWNoaWxkLmRyb3Bkb3duLW1lbnUsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIDpsYXN0LWNoaWxkLmRyb3Bkb3duLW1lbnV7bWFyZ2luLXJpZ2h0Oi40cmVtfWhlYWRlciAuc2VhcmNoLWJveCxoZWFkZXIgLnNl''@;'; put 'put ''YXJjaCwuaGVhZGVyIC5zZWFyY2gtYm94LC5oZWFkZXIgLnNlYXJjaHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXg6MCAwIGF1dG87bWF4LXdpZHRoOjE0LjRyZW07cGFkZGluZzowO2hlaWdodDozcmVtO2NvbG9yOiNmYWZhZmE7Y29sb3I6dmFyKC0tY2xyLWhlYWRlci1m''@;'; put 'put ''b250LWNvbG9yLCAjZmFmYWZhKTtvcGFjaXR5Oi42NTtvcGFjaXR5OnZhcigtLWNsci1oZWFkZXItbmF2LW9wYWNpdHksIC42NSl9aGVhZGVyIC5zZWFyY2gtYm94OmVuYWJsZWQ6aG92ZXIsaGVhZGVyIC5zZWFyY2g6ZW5hYmxlZDpob3ZlciwuaGVhZGVyIC5zZWFyY2gtYm94OmVuYWJsZWQ6''@;'; put 'put ''aG92ZXIsLmhlYWRlciAuc2VhcmNoOmVuYWJsZWQ6aG92ZXJ7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xyLWhlYWRlci1uYXYtaG92ZXItb3BhY2l0eSwgMSl9aGVhZGVyIC5zZWFyY2gtYm94OmRpc2FibGVkLGhlYWRlciAuc2VhcmNoOmRpc2FibGVkLC5oZWFkZXIgLnNlYXJjaC1ib3g6''@;'; put 'put ''ZGlzYWJsZWQsLmhlYWRlciAuc2VhcmNoOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH1oZWFkZXIgLnNlYXJjaC1ib3g+Lm5hdi1pY29uLGhlYWRlciAuc2VhcmNoPi5uYXYtaWNvbiwuaGVhZGVyIC5zZWFyY2gtYm94Pi5uYXYtaWNvbiwuaGVhZGVyIC5zZWFyY2g+Lm5hdi1pY29ue21h''@;'; put 'put ''cmdpbjowIC4zcmVtIC4xNXJlbSAxLjJyZW19aGVhZGVyIC5zZWFyY2gtYm94IGxhYmVsLGhlYWRlciAuc2VhcmNoIGxhYmVsLC5oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWwsLmhlYWRlciAuc2VhcmNoIGxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDozcmVtO2xpbmUtaGVpZ2h0''@;'; put 'put ''OjNyZW07cGFkZGluZy1sZWZ0OjEuMnJlbTt0ZXh0LWFsaWduOmNlbnRlcn1oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWw6YmVmb3JlLGhlYWRlciAuc2VhcmNoIGxhYmVsOmJlZm9yZSwuaGVhZGVyIC5zZWFyY2gtYm94IGxhYmVsOmJlZm9yZSwuaGVhZGVyIC5zZWFyY2ggbGFiZWw6YmVmb3Jl''@;'; put 'put ''e2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbnRlbnQ6IiI7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHZpZXdCb3glM0QlMjIwJTIw''@;'; put 'put ''MCUyMDM2JTIwMzYlMjIlM0UlM0NkZWZzJTNFJTNDc3R5bGUlM0UuY2xzLTElN0JmaWxsJTNBJTIzZmZmZmZmJTNCJTdEJTNDJTJGc3R5bGUlM0UlM0MlMkZkZWZzJTNFJTNDdGl0bGUlM0VTZWFyY2glM0MlMkZ0aXRsZSUzRSUzQ2clMjBpZCUzRCUyMmljb25zJTIyJTNFJTNDcGF0aCUyMGNs''@;'; put 'put ''YXNzJTNEJTIyY2xzLTElMjIlMjBkJTNEJTIyTTE1JTJDNC4wNUExMC45NSUyQzEwLjk1JTJDMCUyQzElMkMxJTJDNC4wNSUyQzE1JTJDMTElMkMxMSUyQzAlMkMwJTJDMSUyQzE1JTJDNC4wNU0xNSUyQzJBMTMlMkMxMyUyQzAlMkMxJTJDMCUyQzI4JTJDMTUlMkMxMyUyQzEzJTJDMCUyQzAl''@;'; put 'put ''MkMwJTJDMTUlMkMyWiUyMiUyRiUzRSUzQ3BhdGglMjBjbGFzcyUzRCUyMmNscy0xJTIyJTIwJTIwZCUzRCUyMk0zMy43MSUyQzMyLjI5bC03LjM3LTcuNDItMS40MiUyQzEuNDElMkM3LjM3JTJDNy40MmExJTJDMSUyQzAlMkMxJTJDMCUyQzEuNDItMS40MVolMjIlMkYlM0UlM0MlMkZnJTNF''@;'; put 'put ''JTNDJTJGc3ZnJTNFKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW47Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjFyZW07d2lkdGg6MXJlbTttYXJnaW46MXJlbSAwIDA7dmVydGljYWwtYWxpZ246dG9wfWhlYWRlciAuc2VhcmNoLWJveCBsYWJlbCBp''@;'; put 'put ''bnB1dCxoZWFkZXIgLnNlYXJjaCBsYWJlbCBpbnB1dCwuaGVhZGVyIC5zZWFyY2gtYm94IGxhYmVsIGlucHV0LC5oZWFkZXIgLnNlYXJjaCBsYWJlbCBpbnB1dHtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luOi45cmVtIDB9aGVhZGVyIC5zZWFyY2gtYm94IGlucHV0W3R5cGU9dGV4dF0saGVh''@;'; put 'put ''ZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XSwuaGVhZGVyIC5zZWFyY2gtYm94IGlucHV0W3R5cGU9dGV4dF0sLmhlYWRlciAuc2VhcmNoIGlucHV0W3R5cGU9dGV4dF17Ym9yZGVyOjA7YmFja2dyb3VuZDowIDA7Y29sb3I6I2ZhZmFmYTtjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQt''@;'; put 'put ''Y29sb3IsICNmYWZhZmEpO3BhZGRpbmc6MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9aGVhZGVyIC5zZWFyY2gtYm94IGlucHV0W3R5cGU9dGV4dF06Zm9jdXMsaGVhZGVyIC5zZWFyY2gtYm94IGlucHV0W3R5cGU9dGV4dF06YWN0aXZlLGhlYWRlciAuc2VhcmNoIGlucHV0W3R5cGU9dGV4dF06''@;'; put 'put ''Zm9jdXMsaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTphY3RpdmUsLmhlYWRlciAuc2VhcmNoLWJveCBpbnB1dFt0eXBlPXRleHRdOmZvY3VzLC5oZWFkZXIgLnNlYXJjaC1ib3ggaW5wdXRbdHlwZT10ZXh0XTphY3RpdmUsLmhlYWRlciAuc2VhcmNoIGlucHV0W3R5cGU9dGV4dF06''@;'; put 'put ''Zm9jdXMsLmhlYWRlciAuc2VhcmNoIGlucHV0W3R5cGU9dGV4dF06YWN0aXZle2JhY2tncm91bmQ6MCAwfWhlYWRlciAuYnJhbmRpbmcrLnNlYXJjaCxoZWFkZXIgLmJyYW5kaW5nKy5zZWFyY2gtYm94LC5oZWFkZXIgLmJyYW5kaW5nKy5zZWFyY2gsLmhlYWRlciAuYnJhbmRpbmcrLnNlYXJj''@;'; put 'put ''aC1ib3h7cG9zaXRpb246cmVsYXRpdmV9aGVhZGVyIC5icmFuZGluZysuc2VhcmNoOmFmdGVyLGhlYWRlciAuYnJhbmRpbmcrLnNlYXJjaC1ib3g6YWZ0ZXIsLmhlYWRlciAuYnJhbmRpbmcrLnNlYXJjaDphZnRlciwuaGVhZGVyIC5icmFuZGluZysuc2VhcmNoLWJveDphZnRlcntkaXNwbGF5''@;'; put 'put ''OmlubGluZS1ibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtjb250ZW50OiIiO2JhY2tncm91bmQ6I2ZhZmFmYTtiYWNrZ3JvdW5kOnZhcigtLWNsci1oZWFkZXItZm9udC1jb2xvciwgI2ZhZmFmYSk7b3BhY2l0eTp2YXIoLS1jbHItaGVhZGVyLWRpdmlkZXItb3BhY2l0eSwgLjE1KTtvcGFjaXR5''@;'; put 'put ''Oi4xNTtoZWlnaHQ6MnJlbTt3aWR0aDouMDVyZW07d2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTt0b3A6LjVyZW07bGVmdDowfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4cHgpe2hlYWRlciAuc2VhcmNoLWJveCxoZWFkZXIgLnNlYXJjaCwuaGVh''@;'; put 'put ''ZGVyIC5zZWFyY2gtYm94LC5oZWFkZXIgLnNlYXJjaHtmbGV4OjEgMCBhdXRvO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDttYXgtd2lkdGg6bm9uZX1oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWwsaGVhZGVyIC5zZWFyY2ggbGFiZWwsLmhlYWRlciAuc2VhcmNoLWJveCBsYWJlbCwuaGVhZGVy''@;'; put 'put ''IC5zZWFyY2ggbGFiZWx7cGFkZGluZzowO3dpZHRoOjNyZW19aGVhZGVyIC5zZWFyY2gtYm94IGxhYmVsOmJlZm9yZSxoZWFkZXIgLnNlYXJjaCBsYWJlbDpiZWZvcmUsLmhlYWRlciAuc2VhcmNoLWJveCBsYWJlbDpiZWZvcmUsLmhlYWRlciAuc2VhcmNoIGxhYmVsOmJlZm9yZXtsZWZ0OjFy''@;'; put 'put ''ZW19aGVhZGVyIC5zZWFyY2gtYm94IGxhYmVsIGlucHV0LGhlYWRlciAuc2VhcmNoIGxhYmVsIGlucHV0LC5oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWwgaW5wdXQsLmhlYWRlciAuc2VhcmNoIGxhYmVsIGlucHV0e2Rpc3BsYXk6bm9uZX1oZWFkZXIgLmJyYW5kaW5nKy5zZWFyY2g6YWZ0ZXIs''@;'; put 'put ''aGVhZGVyIC5icmFuZGluZysuc2VhcmNoLWJveDphZnRlciwuaGVhZGVyIC5icmFuZGluZysuc2VhcmNoOmFmdGVyLC5oZWFkZXIgLmJyYW5kaW5nKy5zZWFyY2gtYm94OmFmdGVye2NvbnRlbnQ6bm9uZX1oZWFkZXIgLnNlYXJjaC1ib3grLnNldHRpbmdzLGhlYWRlciAuc2VhcmNoLWJveCsu''@;'; put 'put ''aGVhZGVyLWFjdGlvbnMsaGVhZGVyIC5zZWFyY2grLnNldHRpbmdzLGhlYWRlciAuc2VhcmNoKy5oZWFkZXItYWN0aW9ucywuaGVhZGVyIC5zZWFyY2gtYm94Ky5zZXR0aW5ncywuaGVhZGVyIC5zZWFyY2gtYm94Ky5oZWFkZXItYWN0aW9ucywuaGVhZGVyIC5zZWFyY2grLnNldHRpbmdzLC5o''@;'; put 'put ''ZWFkZXIgLnNlYXJjaCsuaGVhZGVyLWFjdGlvbnN7cG9zaXRpb246cmVsYXRpdmU7ZmxleDowIDAgYXV0b31oZWFkZXIgLnNlYXJjaC1ib3grLnNldHRpbmdzOmFmdGVyLGhlYWRlciAuc2VhcmNoLWJveCsuaGVhZGVyLWFjdGlvbnM6YWZ0ZXIsaGVhZGVyIC5zZWFyY2grLnNldHRpbmdzOmFm''@;'; put 'put ''dGVyLGhlYWRlciAuc2VhcmNoKy5oZWFkZXItYWN0aW9uczphZnRlciwuaGVhZGVyIC5zZWFyY2gtYm94Ky5zZXR0aW5nczphZnRlciwuaGVhZGVyIC5zZWFyY2gtYm94Ky5oZWFkZXItYWN0aW9uczphZnRlciwuaGVhZGVyIC5zZWFyY2grLnNldHRpbmdzOmFmdGVyLC5oZWFkZXIgLnNlYXJj''@;'; put 'put ''aCsuaGVhZGVyLWFjdGlvbnM6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7Y29udGVudDoiIjtiYWNrZ3JvdW5kOiNmYWZhZmE7YmFja2dyb3VuZDp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IsICNmYWZhZmEpO29wYWNpdHk6dmFyKC0tY2xyLWhlYWRl''@;'; put 'put ''ci1kaXZpZGVyLW9wYWNpdHksIC4xNSk7b3BhY2l0eTouMTU7aGVpZ2h0OjJyZW07d2lkdGg6LjA1cmVtO3dpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7dG9wOi41cmVtO2xlZnQ6MH19YS5saW5rLW5vcm1hbDpsaW5re2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWxpbmstY29sb3IsICMwMDcyYTMpO3RleHQtZGVjb3JhdGlvbjpub25lfWEubGluay1ob3ZlcmVkOmxpbmt7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItbGluay1ob3Zlci1jb2xvciwgIzAwNzJhMyk7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1hLmxpbmstY2xpY2tl''@;'; put 'put ''ZDpsaW5re2NvbG9yOiM5ZTU3YmM7Y29sb3I6dmFyKC0tY2xyLWxpbmstYWN0aXZlLWNvbG9yLCAjOWU1N2JjKTt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfWEubGluay12aXNpdGVkOmxpbmt7Y29sb3I6IzU2NTliODtjb2xvcjp2YXIoLS1jbHItbGluay12aXNpdGVkLWNvbG9yLCAjNTY1''@;'; put 'put ''OWI4KTt0ZXh0LWRlY29yYXRpb246bm9uZX0ubmF2e2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MS44cmVtO2xpc3Qtc3R5bGUtdHlwZTpub25lO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW46MDt3aWR0aDoxMDAlO3doaXRlLXNwYWNlOm5vd3JhcDtib3gtc2hhZG93OjAgLS4wNXJlbSAjY2NjIGlu''@;'; put 'put ''c2V0O2JveC1zaGFkb3c6MCAtLjA1cmVtIDAgdmFyKC0tY2xyLW5hdi1ib3gtc2hhZG93LWNvbG9yLCAjY2NjY2NjKSBpbnNldH0ubmF2IC5uYXYtaXRlbXtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6MS4ycmVtfS5uYXYgLm5hdi1pdGVtLmFjdGl2ZT4ubmF2LWxpbmt7Y29s''@;'; put 'put ''b3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItbmF2LWxpbmstYWN0aXZlLWNvbG9yLCBibGFjayk7Ym94LXNoYWRvdzowIC0uMDVyZW0gI2NjYyBpbnNldDtib3gtc2hhZG93OjAgLS4wNXJlbSAwIHZhcigtLWNsci1uYXYtYm94LXNoYWRvdy1jb2xvciwgI2NjY2NjYykgaW5zZXR9Lm5hdiAubmF2''@;'; put 'put ''LWxpbmt7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItbmF2LWxpbmstY29sb3IsICM2NjY2NjYpO2ZvbnQtc2l6ZTouN3JlbTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLW5hdi1saW5rLWZvbnQtd2VpZ2h0LCA0MDApO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5l''@;'; put 'put ''LWhlaWdodDoxLjhyZW07ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzowIC4xNXJlbTtib3gtc2hhZG93Om5vbmV9Lm5hdiAubmF2LWxpbmsuYnRue3RleHQtdHJhbnNmb3JtOm5vbmU7bWFyZ2luOjA7bWFyZ2luLWJvdHRvbTotLjA1cmVtO2JvcmRlci1yYWRpdXM6MH0ubmF2IC5uYXYt''@;'; put 'put ''bGluazpob3ZlciwubmF2IC5uYXYtbGluazpmb2N1cywubmF2IC5uYXYtbGluazphY3RpdmV7Y29sb3I6aW5oZXJpdH0ubmF2IC5uYXYtbGluazpob3ZlciwubmF2IC5uYXYtbGluay5hY3RpdmV7Ym94LXNoYWRvdzowIC0uMTVyZW0gIzAwNzJhMyBpbnNldDtib3gtc2hhZG93OjAgLS4xNXJl''@;'; put 'put ''bSAwIHZhcigtLWNsci1uYXYtYWN0aXZlLWJveC1zaGFkb3ctY29sb3IsICMwMDcyYTMpIGluc2V0O3RyYW5zaXRpb246Ym94LXNoYWRvdyAuMnMgZWFzZS1pbn0ubmF2IC5uYXYtbGluazpob3ZlciwubmF2IC5uYXYtbGluazpmb2N1cywubmF2IC5uYXYtbGluazphY3RpdmUsLm5hdiAubmF2''@;'; put 'put ''LWxpbmsuYWN0aXZle3RleHQtZGVjb3JhdGlvbjpub25lfS5uYXYgLm5hdi1saW5rLmFjdGl2ZXtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1uYXYtbGluay1hY3RpdmUtY29sb3IsIGJsYWNrKTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLW5hdi1saW5rLWFjdGl2''@;'; put 'put ''ZS1mb250LXdlaWdodCwgNDAwKX0ubmF2IC5uYXYtbGluay5uYXYtaXRlbXttYXJnaW4tcmlnaHQ6MS4ycmVtfTpyb290ey0tY2xyLXN1Ym5hdi1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1uYXYtYm94LXNoYWRvdy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1''@;'; put 'put ''dHJhbC00MDApfS5zdWItbmF2LC5zdWJuYXZ7ZGlzcGxheTpmbGV4O2JveC1zaGFkb3c6MCAtLjA1cmVtICNjY2MgaW5zZXQ7Ym94LXNoYWRvdzowIC0uMDVyZW0gMCB2YXIoLS1jbHItbmF2LWJveC1zaGFkb3ctY29sb3IsICNjY2NjY2MpIGluc2V0O2p1c3RpZnktY29udGVudDpzcGFjZS1i''@;'; put 'put ''ZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItc3VibmF2LWJnLWNvbG9yLCB3aGl0ZSk7aGVpZ2h0OjEuOHJlbX0uc3ViLW5hdiAubmF2LC5zdWJuYXYgLm5hdntmbGV4OjEgMSBhdXRvO3BhZGRpbmctbGVm''@;'; put 'put ''dDoxLjJyZW19LnN1Yi1uYXYgYXNpZGUsLnN1Ym5hdiBhc2lkZXtmbGV4OjAgMCBhdXRvO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjEuOHJlbTtwYWRkaW5nOjAgMS4ycmVtfS5zdWItbmF2IGFzaWRlPjpsYXN0LWNoaWxkLC5zdWJuYXYgYXNpZGU+Omxhc3QtY2hp''@;'; put 'put ''bGR7bWFyZ2luLXJpZ2h0OjA7cGFkZGluZy1yaWdodDowfTpyb290ey0tY2xyLXNpZGVuYXYtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1jbHItc2lkZW5hdi1ib3JkZXItd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCk7LS1jbHItc2lkZW5h''@;'; put 'put ''di1saW5rLWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTIwMCk7LS1jbHItc2lkZW5hdi1saW5rLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1zaWRlbmF2LWxpbmstYWN0aXZlLWJnLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtc2Vs''@;'; put 'put ''ZWN0aW9uLWNvbG9yKTstLWNsci1zaWRlbmF2LWxpbmstYWN0aXZlLWJvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMpOy0tY2xyLXNpZGVuYXYtaGVhZGVyLWNvbG9yOnZhcigtLWNsci1oNi1jb2xvcik7LS1jbHItc2lkZW5hdi1oZWFkZXItZm9udC13ZWlnaHQ6''@;'; put 'put ''dmFyKC0tY2xyLWg2LWZvbnQtd2VpZ2h0KTstLWNsci1zaWRlbmF2LWhlYWRlci1mb250LWZhbWlseTp2YXIoLS1jbHItaDYtZm9udC1mYW1pbHkpOy0tY2xyLXNpZGVuYXYtY29sb3I6dmFyKC0tY2xyLXAxLWNvbG9yKTstLWNsci1zaWRlbmF2LWZvbnQtd2VpZ2h0OnZhcigtLWNsci1wMS1m''@;'; put 'put ''b250LXdlaWdodCl9LnNpZGVuYXZ7bGluZS1oZWlnaHQ6MS4ycmVtO21heC13aWR0aDoxNS42cmVtO21pbi13aWR0aDoxMC44cmVtO3dpZHRoOjE4JTtib3JkZXItcmlnaHQ6LjA1cmVtIHNvbGlkICNjY2M7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uc2lkZW5hdiAuc2lk''@;'; put 'put ''ZW5hdi1jb250ZW50e2ZsZXg6MSAxIGF1dG87b3ZlcmZsb3cteDpoaWRkZW47cGFkZGluZy1ib3R0b206MS4ycmVtfS5zaWRlbmF2IC5zaWRlbmF2LWNvbnRlbnQgLm5hdi1saW5re2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItdG9wLWxlZnQt''@;'; put 'put ''cmFkaXVzOnZhcigtLWNsci1zaWRlbmF2LWxpbmstYWN0aXZlLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czouMTVyZW07Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1jbHItc2lkZW5hdi1saW5rLWFjdGl2ZS1ib3JkZXItcmFkaXVzLCAu''@;'; put 'put ''MTVyZW0pO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbG9yOmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7d2lkdGg6MTAwJX0uc2lkZW5hdiAuc2lkZW5hdi1jb250ZW50Pi5uYXYtbGlua3ttYXJnaW46MS4ycmVtIDAgMCAxLjVyZW07cGFkZGluZy1sZWZ0Oi42''@;'; put 'put ''cmVtO2NvbG9yOiMzMzM7Y29sb3I6dmFyKC0tY2xyLXNpZGVuYXYtaGVhZGVyLWNvbG9yLCAjMzMzMzMzKTtmb250LXdlaWdodDo1MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXNpZGVuYXYtaGVhZGVyLWZvbnQtd2VpZ2h0LCA1MDApO2ZvbnQtZmFtaWx5Ok1ldHJvcG9saXMsQXZlbmlyIE5l''@;'; put 'put ''eHQsSGVsdmV0aWNhIE5ldWUsQXJpYWwsc2Fucy1zZXJpZjtmb250LWZhbWlseTp2YXIoLS1jbHItc2lkZW5hdi1oZWFkZXItZm9udC1mYW1pbHksIE1ldHJvcG9saXMsICJBdmVuaXIgTmV4dCIsICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmKTtmb250LXNpemU6LjdyZW07''@;'; put 'put ''bGluZS1oZWlnaHQ6MS4ycmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbH0uc2lkZW5hdiAuc2lkZW5hdi1jb250ZW50Pi5uYXYtbGluazpob3ZlcntiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHItc2lkZW5hdi1saW5rLWhvdmVyLWNvbG9yLCAjZThlOGU4KX0uc2lkZW5h''@;'; put 'put ''diAuc2lkZW5hdi1jb250ZW50Pi5uYXYtbGluay5hY3RpdmV7YmFja2dyb3VuZDojZDhlM2U5O2JhY2tncm91bmQ6dmFyKC0tY2xyLXNpZGVuYXYtbGluay1hY3RpdmUtYmctY29sb3IsICNkOGUzZTkpO2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLXNpZGVuYXYtbGluay1hY3RpdmUtY29s''@;'; put 'put ''b3IsIGJsYWNrKX0uc2lkZW5hdiAubmF2LWdyb3Vwe2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXNpZGVuYXYtY29sb3IsICM2NjY2NjYpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItc2lkZW5hdi1mb250LXdlaWdodCwgNDAwKTtmb250LXNpemU6LjdyZW07bGV0''@;'; put 'put ''dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbi10b3A6MS4ycmVtO3dpZHRoOjEwMCV9LnNpZGVuYXYgLm5hdi1ncm91cCAubmF2LWxpc3QsLnNpZGVuYXYgLm5hdi1ncm91cCBsYWJlbHtwYWRkaW5nOjAgMCAwIDEuOHJlbTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0''@;'; put 'put ''aDoxMDAlO21hcmdpbjowIC4zcmVtfS5zaWRlbmF2IC5uYXYtZ3JvdXAgLm5hdi1saXN0e2xpc3Qtc3R5bGU6bm9uZTttYXJnaW4tdG9wOjB9LnNpZGVuYXYgLm5hdi1ncm91cCAubmF2LWxpc3QgLm5hdi1saW5re2xpbmUtaGVpZ2h0Oi44cmVtO3BhZGRpbmc6LjJyZW0gMCAuMnJlbSAuNnJl''@;'; put 'put ''bX0uc2lkZW5hdiAubmF2LWdyb3VwIC5uYXYtbGlzdCAubmF2LWxpbms6aG92ZXJ7YmFja2dyb3VuZDojZThlOGU4O2JhY2tncm91bmQ6dmFyKC0tY2xyLXNpZGVuYXYtbGluay1ob3Zlci1jb2xvciwgI2U4ZThlOCl9LnNpZGVuYXYgLm5hdi1ncm91cCAubmF2LWxpc3QgLm5hdi1saW5rLmFj''@;'; put 'put ''dGl2ZXtiYWNrZ3JvdW5kOiNkOGUzZTk7YmFja2dyb3VuZDp2YXIoLS1jbHItc2lkZW5hdi1saW5rLWFjdGl2ZS1iZy1jb2xvciwgI2Q4ZTNlOSk7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItc2lkZW5hdi1saW5rLWFjdGl2ZS1jb2xvciwgYmxhY2spfS5zaWRlbmF2IC5uYXYtZ3JvdXAg''@;'; put 'put ''bGFiZWx7Y29sb3I6IzMzMztjb2xvcjp2YXIoLS1jbHItc2lkZW5hdi1oZWFkZXItY29sb3IsICMzMzMzMzMpO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXdlaWdodDp2YXIoLS1jbHItc2lkZW5hdi1oZWFkZXItZm9udC13ZWlnaHQsIDUwMCk7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcyxBdmVuaXIg''@;'; put 'put ''TmV4dCxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1zaWRlbmF2LWhlYWRlci1mb250LWZhbWlseSwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZTouN3Jl''@;'; put 'put ''bTtsaW5lLWhlaWdodDoxLjJyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5zaWRlbmF2IC5uYXYtZ3JvdXAgaW5wdXRbdHlwZT1jaGVja2JveF17cG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDFweCwxcHgsMXB4LDFweCk7Y2xpcC1wYXRoOmluc2V0KDUwJSk7cGFkZGluZzowO2JvcmRl''@;'; put 'put ''cjowO2hlaWdodDoxcHg7d2lkdGg6MXB4O292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dG9wOjA7bGVmdDowfS5zaWRlbmF2IC5uYXYtZ3JvdXAgaW5wdXRbdHlwZT1jaGVja2JveF06Zm9jdXMrbGFiZWx7b3V0bGluZTojM2I5OWZjIGF1dG8gLjI1cmVtfS5zaWRlbmF2IC5j''@;'; put 'put ''b2xsYXBzaWJsZSBsYWJlbHtwYWRkaW5nOjAgMCAwIDEuM3JlbX0uc2lkZW5hdiAuY29sbGFwc2libGUgbGFiZWw6YWZ0ZXJ7Y29udGVudDoiIjtmbG9hdDpsZWZ0O2hlaWdodDouNXJlbTt3aWR0aDouNXJlbTt0cmFuc2Zvcm06dHJhbnNsYXRlKC0uNHJlbSkgdHJhbnNsYXRlWSguMzVyZW0p''@;'; put 'put ''O2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMiUyMDEyJTIyJTNFJTBBJTIwJTIwJTIwJTIw''@;'; put 'put ''JTNDZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3N0eWxlJTNFLmNscy0xJTdCZmlsbCUzQSUyMzlhOWE5YSUzQiU3RCUzQyUyRnN0eWxlJTNFJTBBJTIwJTIwJTIwJTIwJTNDJTJGZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUzQ3RpdGxlJTNFQ2FyZXQlM0MlMkZ0aXRsZSUz''@;'; put 'put ''RSUwQSUyMCUyMCUyMCUyMCUzQ3BhdGglMjBjbGFzcyUzRCUyMmNscy0xJTIyJTIwZCUzRCUyMk02JTJDOUwxLjIlMkM0LjJhMC42OCUyQzAuNjglMkMwJTJDMCUyQzElMkMxLTFMNiUyQzcuMDglMkM5Ljg0JTJDMy4yNGEwLjY4JTJDMC42OCUyQzAlMkMxJTJDMSUyQzElMkMxWiUyMiUyRiUz''@;'; put 'put ''RSUwQSUzQyUyRnN2ZyUzRSUwQSk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb250YWluO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW46MH0uc2lkZW5hdiAuY29sbGFwc2libGUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZH4ubmF2LWxpc3Qs''@;'; put 'put ''LnNpZGVuYXYgLmNvbGxhcHNpYmxlIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWR+dWx7aGVpZ2h0OjA7ZGlzcGxheTpub25lfS5zaWRlbmF2IC5jb2xsYXBzaWJsZSBpbnB1dFt0eXBlPWNoZWNrYm94XX4ubmF2LWxpc3QsLnNpZGVuYXYgLmNvbGxhcHNpYmxlIGlucHV0W3R5cGU9Y2hl''@;'; put 'put ''Y2tib3hdfnVse2hlaWdodDphdXRvfS5zaWRlbmF2IC5jb2xsYXBzaWJsZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkfmxhYmVsOmFmdGVye3RyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKSB0cmFuc2xhdGUoLS4zNXJlbSkgdHJhbnNsYXRlWSgtLjRyZW0pfTpyb290ey0tY2xyLXZlcnRp''@;'; put 'put ''Y2FsLW5hdi1kaXZpZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItdmVydGljYWwtbmF2LWljb24tYWN0aXZlLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1''@;'; put 'put ''dHJhbC03MDApOy0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLXZlcnRpY2FsLW5hdi1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0yMDApOy0tY2xyLXZlcnRpY2FsLW5hdi1hY3RpdmUtYmctY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItdmVydGljYWwtbmF2LWhvdmVyLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1jbHItdmVydGljYWwtbmF2LXRvZ2dsZS1pY29uLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTEwMDApOy0tY2xy''@;'; put 'put ''LXZlcnRpY2FsLW5hdi10cmlnZ2VyLWRpdmlkZXItYm9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgpOy0tY2xyLXZlcnRpY2FsLW5hdi10cmlnZ2VyLWRpdmlkZXItYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1jbHItdmVydGljYWwt''@;'; put 'put ''bmF2LWhlYWRlci1mb250LXdlaWdodDp2YXIoLS1jbHItcDQtZm9udC13ZWlnaHQpfS5jbHItdmVydGljYWwtbmF2e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cGFkZGluZy10b3A6LjlyZW07d2lkdGg6MTJyZW07bWluLXdpZHRoOjIuNHJlbTtiYWNrZ3JvdW5kLWNvbG9y''@;'; put 'put ''OiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWJnLWNvbG9yLCAjZThlOGU4KTt3aWxsLWNoYW5nZTp3aWR0aDt0cmFuc2l0aW9uOndpZHRoIC4ycyBlYXNlLWluLW91dH0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWRpdmlkZXJ7Ym9yZGVyLWNvbG9yOiNj''@;'; put 'put ''Y2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1kaXZpZGVyLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1kaXZp''@;'; put 'put ''ZGVyLWJvcmRlci13aWR0aCwgLjA1cmVtKTttYXJnaW46LjZyZW0gMH0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWNvbnRlbnR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4OjEgMSBhdXRvO292ZXJmbG93LXk6YXV0bztvdmVyZmxvdy14OmhpZGRlbn0uY2xyLXZlcnRp''@;'; put 'put ''Y2FsLW5hdiAubmF2LWdyb3Vwe2Rpc3BsYXk6YmxvY2s7ZmxleDowIDAgYXV0bztoZWlnaHQ6YXV0bzttaW4taGVpZ2h0OjEuOHJlbX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnR7ZGlzcGxheTpmbGV4O2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5h''@;'; put 'put ''di1pdGVtLWNvbG9yLCAjNjY2NjY2KX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQuYWN0aXZle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWFjdGl2ZS1jb2xvciwgIzY2NjY2Nik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91''@;'; put 'put ''bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1hY3RpdmUtYmctY29sb3IsIHdoaXRlKTtib3JkZXItbGVmdDouMTVyZW0gc29saWQgdmFyKC0tY2xyLW5hdi1hY3RpdmUtYm94LXNoYWRvdy1jb2xvcil9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50LmFjdGl2ZSAu''@;'; put 'put ''bmF2LWljb257ZmlsbDojMDA3MmEzO2ZpbGw6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pY29uLWFjdGl2ZS1jb2xvciwgIzAwNzJhMyl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50OmhvdmVye2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVt''@;'; put 'put ''LWFjdGl2ZS1jb2xvciwgIzY2NjY2Nik7YmFja2dyb3VuZC1jb2xvcjojY2NjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1ob3Zlci1iZy1jb2xvciwgI2NjY2NjYyk7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250''@;'; put 'put ''ZW50IC5uYXYtbGlua3tmbGV4OjEgMSBhdXRvO3BhZGRpbmctbGVmdDowO21pbi13aWR0aDowfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudCAubmF2LWljb257bWFyZ2luLWxlZnQ6MS4ycmVtfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudCAubmF2LXRl''@;'; put 'put ''eHR7cGFkZGluZy1sZWZ0OjEuMnJlbX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQgLm5hdi1pY29uKy5uYXYtdGV4dHtwYWRkaW5nLWxlZnQ6MH0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQgLm5hdi1saW5rKy5uYXYtZ3JvdXAtdGV4dHtkaXNwbGF5''@;'; put 'put ''Om5vbmV9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyLC5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtdHJpZ2dlcntmbGV4OjAgMCAxLjhyZW07Ym9yZGVyOjA7aGVpZ2h0OjEuOHJlbTtwYWRkaW5nOjA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjdXJzb3I6cG9pbnRl''@;'; put 'put ''cjtvdXRsaW5lLW9mZnNldDotLjI1cmVtfS5jbHItdmVydGljYWwtbmF2IC5uYXYtdHJpZ2dlciBjZHMtaWNvbltzaGFwZT1hbmdsZS1kb3VibGVdLC5jbHItdmVydGljYWwtbmF2IC5uYXYtdHJpZ2dlciBjbHItaWNvbltzaGFwZT1hbmdsZS1kb3VibGVdLC5jbHItdmVydGljYWwtbmF2IC5u''@;'; put 'put ''YXYtZ3JvdXAtdHJpZ2dlciBjZHMtaWNvbltzaGFwZT1hbmdsZS1kb3VibGVdLC5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtdHJpZ2dlciBjbHItaWNvbltzaGFwZT1hbmdsZS1kb3VibGVde2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi10b2dnbGUtaWNvbi1j''@;'; put 'put ''b2xvciwgYmxhY2spfS5jbHItdmVydGljYWwtbmF2IC5uYXYtdHJpZ2dlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2hlaWdodDoxLjhyZW07bWFyZ2luLXRvcDotLjlyZW19LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10''@;'; put 'put ''cmlnZ2Vye2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO2NvbG9yOmluaGVyaXQ7b3ZlcmZsb3c6aGlkZGVuO3RleHQtYWxpZ246bGVmdH0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLXRyaWdnZXIgLm5hdi1ncm91cC10cmlnZ2VyLWljb257ZmxleC1zaHJpbms6MDt3aWR0aDouOHJl''@;'; put 'put ''bTthbGlnbi1zZWxmOmNlbnRlcjttYXJnaW4tcmlnaHQ6LjVyZW07dHJhbnNpdGlvbjphbGwgLjJzIGVhc2UtaW4tb3V0fS5jbHItdmVydGljYWwtbmF2IC5uYXYtdHJpZ2dlci1pY29ue21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0Oi41cmVtO3RyYW5zaXRpb246YWxsIC4ycyBlYXNl''@;'; put 'put ''LWluLW91dH0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LXRyaWdnZXIrLm5hdi1jb250ZW50e2JvcmRlci10b3AtY29sb3I6I2NjYztib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1kaXZpZGVyLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLXRvcC1z''@;'; put 'put ''dHlsZTpzb2xpZDtib3JkZXItdG9wLXdpZHRoOi4wNXJlbTtib3JkZXItdG9wLXdpZHRoOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1kaXZpZGVyLWJvcmRlci13aWR0aCwgLjA1cmVtKTtwYWRkaW5nLXRvcDouNnJlbX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLXRleHQs''@;'; put 'put ''LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1saW5re2hlaWdodDoxLjhyZW07cGFkZGluZzowIC42cmVtIDAgMS4ycmVtO2xpbmUtaGVpZ2h0OjEuOHJlbTtvdXRsaW5lLW9mZnNldDotLjI1cmVtfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtdGV4dCwuY2xyLXZlcnRpY2FsLW5hdiAubmF2''@;'; put 'put ''LXRleHR7ZmxleDoxIDEgYXV0bzt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1saW5re2Rpc3BsYXk6ZmxleDtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1j''@;'; put 'put ''b2xvciwgIzY2NjY2Nil9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1saW5rLmFjdGl2ZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1hY3RpdmUtY29sb3IsICM2NjY2NjYpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci12ZXJ0aWNhbC1uYXYtYWN0aXZlLWJnLWNvbG9yLCB3aGl0ZSk7Ym9yZGVyLWxlZnQ6LjE1cmVtIHNvbGlkIHZhcigtLWNsci1uYXYtYWN0aXZlLWJveC1zaGFkb3ctY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtbGluay5hY3RpdmUgLm5hdi1pY29ue2ZpbGw6IzAwNzJhMztmaWxs''@;'; put 'put ''OnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaWNvbi1hY3RpdmUtY29sb3IsICMwMDcyYTMpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtbGluazpob3Zlcntjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1hY3RpdmUtY29sb3IsICM2NjY2NjYpO2JhY2tncm91bmQt''@;'; put 'put ''Y29sb3I6I2NjYztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaG92ZXItYmctY29sb3IsICNjY2NjY2MpO3RleHQtZGVjb3JhdGlvbjpub25lfS5jbHItdmVydGljYWwtbmF2IC5uYXYtaGVhZGVye3BhZGRpbmc6MCAuNnJlbSAwIDEuMnJlbTtmb250LXNpemU6LjZy''@;'; put 'put ''ZW07Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaGVhZGVyLWZvbnQtd2VpZ2h0LCA2MDApO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjhyZW19LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1pY29ue2ZsZXg6MCAwIC44cmVtO2Fs''@;'; put 'put ''aWduLXNlbGY6Y2VudGVyO2hlaWdodDouOHJlbTt3aWR0aDouOHJlbTttaW4taGVpZ2h0Oi44cmVtO21pbi13aWR0aDouOHJlbTttYXJnaW4tcmlnaHQ6LjNyZW07dmVydGljYWwtYWxpZ246bWlkZGxlfS5jbHItdmVydGljYWwtbmF2IGNsci12ZXJ0aWNhbC1uYXYtZ3JvdXAtY2hpbGRyZW57''@;'; put 'put ''ZGlzcGxheTpibG9ja30uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWJ0bntmbGV4OjEgMSBhdXRvO3BhZGRpbmc6MDttYXJnaW46MDtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lLW9mZnNldDotLjI1cmVtfS5jbHItdmVydGljYWwtbmF2Pi5uYXYtbGluaywu''@;'; put 'put ''Y2xyLXZlcnRpY2FsLW5hdiAubmF2LWNvbnRlbnQ+Lm5hdi1saW5re2ZsZXg6MCAwIDEuOHJlbX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWxpbmsrLm5hdi1ncm91cC10cmlnZ2Vye2ZsZXg6MCAwIDEuOHJlbX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWxpbmsrLm5hdi1ncm91cC10cmlnZ2Vy''@;'; put 'put ''IC5uYXYtZ3JvdXAtdGV4dHtkaXNwbGF5Om5vbmV9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1pY29uKy5uYXYtZ3JvdXAtdGV4dHtwYWRkaW5nLWxlZnQ6MH0uY2xyLXZlcnRpY2FsLW5hdi5oYXMtbmF2LWdyb3VwcyAubmF2LWxpbmssLmNsci12ZXJ0aWNhbC1uYXYuaGFzLW5hdi1ncm91cHMg''@;'; put 'put ''Lm5hdi1ncm91cCAubmF2LWdyb3VwLXRleHQsLmNsci12ZXJ0aWNhbC1uYXYuaGFzLW5hdi1ncm91cHMgLm5hdi1ncm91cCAubmF2LWdyb3VwLXRyaWdnZXJ7Zm9udC13ZWlnaHQ6NjAwfS5jbHItdmVydGljYWwtbmF2Lmhhcy1uYXYtZ3JvdXBzIC5uYXYtZ3JvdXAtY2hpbGRyZW4gLm5hdi1s''@;'; put 'put ''aW5re2ZvbnQtd2VpZ2h0OjQwMH0uY2xyLXZlcnRpY2FsLW5hdi5oYXMtaWNvbnMgLm5hdi1ncm91cC1jaGlsZHJlbiAubmF2LWxpbmt7cGFkZGluZy1sZWZ0OjIuM3JlbX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLmFjdGl2ZTpub3QoLmlzLWV4cGFuZGVkKSAubmF2LWdyb3VwLWNv''@;'; put 'put ''bnRlbnR7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1hY3RpdmUtYmctY29sb3IsIHdoaXRlKTtib3JkZXItbGVmdDouMTVyZW0gc29saWQgdmFyKC0tY2xyLW5hdi1hY3RpdmUtYm94LXNoYWRvdy1jb2xvcil9LmNsci12ZXJ0''@;'; put 'put ''aWNhbC1uYXYgLm5hdi1ncm91cC5hY3RpdmU6bm90KC5pcy1leHBhbmRlZCkgLm5hdi1ncm91cC1jb250ZW50IC5uYXYtaWNvbntmaWxsOiMwMDcyYTM7ZmlsbDp2YXIoLS1jbHItdmVydGljYWwtbmF2LWljb24tYWN0aXZlLWNvbG9yLCAjMDA3MmEzKX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2''@;'; put 'put ''LWdyb3VwLWNvbnRlbnQgLm5hdi1saW5rLmFjdGl2ZX4ubmF2LWdyb3VwLXRyaWdnZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1hY3RpdmUtYmctY29sb3IsIHdoaXRlKX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3Vw''@;'; put 'put ''LWNvbnRlbnQgLm5hdi1saW5rOmhvdmVyfi5uYXYtZ3JvdXAtdHJpZ2dlcntiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWhvdmVyLWJnLWNvbG9yLCAjY2NjY2NjKX0uY2xyLXZlcnRpY2FsLW5hdjpub3QoLmlzLWNvbGxhcHNl''@;'; put 'put ''ZCkgLm5hdi1saW5rKy5uYXYtZ3JvdXAtdHJpZ2dlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFw''@;'; put 'put ''c2Vke3dpZHRoOjIuNHJlbTttaW4td2lkdGg6Mi40cmVtO2N1cnNvcjpwb2ludGVyfS5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkIC5u''@;'; put 'put ''YXYtdHJpZ2dlcnttYXJnaW4tcmlnaHQ6LjE1cmVtfS5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkIC5uYXYtaWNvbnttYXJnaW46MDtt''@;'; put 'put ''YXJnaW4tbGVmdDouOHJlbX0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZCAubmF2LWdyb3VwLWNvbnRlbnQgLm5hdi1saW5re2ZsZXg6''@;'; put 'put ''MCAwIDIuNHJlbX0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZCAubmF2LWdyb3VwLWNvbnRlbnQgLm5hdi1saW5rfi5uYXYtZ3JvdXAt''@;'; put 'put ''dHJpZ2dlcntmbGV4OjAgMCAuOHJlbTt0cmFuc2Zvcm06dHJhbnNsYXRlKC0uOHJlbSk7cG9pbnRlci1ldmVudHM6bm9uZX0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGlj''@;'; put 'put ''YWwtbmF2LmlzLWNvbGxhcHNlZCAubmF2LWxpbmssLm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQgLm5hdi1ncm91cC10cmlnZ2Vye3Bh''@;'; put 'put ''ZGRpbmc6MH0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZCAubmF2LWdyb3VwLXRyaWdnZXJ7cGFkZGluZy1sZWZ0OjB9Lm1haW4tY29u''@;'; put 'put ''dGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQgLm5hdi1ncm91cC10cmlnZ2VyIGNsci1pY29uLm5hdi1ncm91cC10cmlnZ2VyLWljb257aGVpZ2h0OjEu''@;'; put 'put ''OHJlbTt3aWR0aDouNXJlbTttYXJnaW4tbGVmdDouMTVyZW07bWFyZ2luLXJpZ2h0OjB9Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQg''@;'; put 'put ''Lm5hdi1ncm91cC10cmlnZ2VyIGNkcy1pY29uLm5hdi1ncm91cC10cmlnZ2VyLWljb257d2lkdGg6LjVyZW19Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5p''@;'; put 'put ''cy1jb2xsYXBzZWQgLm5hdi1ncm91cCwubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZCAubmF2LWxpbmt7ZGlzcGxheTpub25lfS5tYWlu''@;'; put 'put ''LWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkLmhhcy1pY29ucyAubmF2LWdyb3Vwe2Rpc3BsYXk6YmxvY2t9Lm1haW4tY29udGFpbmVyOm5vdChb''@;'; put 'put ''Y2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQuaGFzLWljb25zIC5uYXYtbGlua3tkaXNwbGF5OmZsZXh9Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZs''@;'; put 'put ''b3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQuaGFzLWljb25zIC5uYXYtZ3JvdXAtdGV4dCwubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Bl''@;'; put 'put ''bi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZC5oYXMtaWNvbnMgLm5hdi10ZXh0e3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgxcHgsMXB4LDFweCwxcHgpO2NsaXAtcGF0aDppbnNldCg1MCUpO3BhZGRpbmc6MDtib3JkZXI6MDtoZWlnaHQ6MXB4''@;'; put 'put ''O3dpZHRoOjFweDtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RvcDowO2xlZnQ6MH0uY2xyLXZlcnRpY2FsLW5hdi5uYXYtdHJpZ2dlci0tYm90dG9tIC5uYXYtdHJpZ2dlcntvcmRlcjoyO21hcmdpbi10b3A6MH0uY2xyLXZlcnRpY2FsLW5hdi5uYXYtdHJpZ2dlci0tYm90''@;'; put 'put ''dG9tIC5uYXYtdHJpZ2dlcisubmF2LWNvbnRlbnR7Ym9yZGVyLWJvdHRvbS1jb2xvcjojY2NjO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi10cmlnZ2VyLWRpdmlkZXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkO2Jv''@;'; put 'put ''cmRlci1ib3R0b20td2lkdGg6LjA1cmVtO2JvcmRlci1ib3R0b20td2lkdGg6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi10cmlnZ2VyLWRpdmlkZXItYm9yZGVyLXdpZHRoLCAuMDVyZW0pO2JvcmRlci10b3A6bm9uZTtwYWRkaW5nLXRvcDowfTpyb290ey0tY2xyLXNsaWRpbmctcGFuZWwtdGV4''@;'; put 'put ''dC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLW5hdi1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTIwMCk7LS1jbHItcmVzcG9uc2l2ZS1uYXYtaG92ZXItYmc6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItcmVzcG9uc2l2''@;'; put 'put ''ZS1uYXYtdHJpZ2dlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1yZXNwb25zaXZlLW5hdi10cmlnZ2VyLWJvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMpOy0tY2xyLXJlc3BvbnNpdmUtbmF2LWhhbWJ1cmdlci1ib3JkZXItcmFk''@;'; put 'put ''aXVzOnZhcigtLWNsci1yZXNwb25zaXZlLW5hdi10cmlnZ2VyLWJvcmRlci1yYWRpdXMpOy0tY2xyLXJlc3BvbnNpdmUtbmF2LW92ZXJmbG93LWJvcmRlci1yYWRpdXM6LjJyZW07LS1jbHItcmVzcG9uc2l2ZS1uYXYtaGVhZGVyLWJhY2tkcm9wLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1u''@;'; put 'put ''ZXV0cmFsLTEwMDApOy0tY2xyLXJlc3BvbnNpdmUtbmF2LWhlYWRlci1iYWNrZHJvcC1vcGFjaXR5Oi44NX0uY2xyLW5hdi1jbG9zZXttYXJnaW46Ljc1cmVtOy0tY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNTAwKX0uY2xyLW5hdi1jbG9zZTpob3ZlciwuY2xyLW5hdi1jbG9zZTpm''@;'; put 'put ''b2N1c3stLWNvbG9yOnZhcigtLWNsci1yZXNwb25zaXZlLW5hdi10cmlnZ2VyLWJnLWNvbG9yKX0uaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyLC5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcntkaXNwbGF5Om5vbmV9LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcj5zcGFuLC5oZWFkZXItaGFtYnVy''@;'; put 'put ''Z2VyLXRyaWdnZXI+c3BhbjpiZWZvcmUsLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcj5zcGFuOmFmdGVyLC5jbHItbmF2LWNsb3NlPnNwYW4sLmNsci1uYXYtY2xvc2U+c3BhbjpiZWZvcmUsLmNsci1uYXYtY2xvc2U+c3BhbjphZnRlcntkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6LjFy''@;'; put 'put ''ZW07d2lkdGg6MS4ycmVtO2JhY2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWNsci1yZXNwb25zaXZlLW5hdi10cmlnZ2VyLWJnLWNvbG9yLCB3aGl0ZSk7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItcmVzcG9uc2l2ZS1uYXYtaGFtYnVyZ2VyLWJv''@;'; put 'put ''cmRlci1yYWRpdXMsIC4xNXJlbSl9LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcj5zcGFuLC5jbHItbmF2LWNsb3NlPnNwYW57cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXI+c3BhbjpiZWZvcmUsLmhlYWRlci1oYW1idXJn''@;'; put 'put ''ZXItdHJpZ2dlcj5zcGFuOmFmdGVyLC5jbHItbmF2LWNsb3NlPnNwYW46YmVmb3JlLC5jbHItbmF2LWNsb3NlPnNwYW46YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjB9LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcj5zcGFuOmJlZm9yZSwuY2xyLW5hdi1jbG9zZT5z''@;'; put 'put ''cGFuOmJlZm9yZXt0b3A6LS4zNXJlbX0uaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyPnNwYW46YWZ0ZXIsLmNsci1uYXYtY2xvc2U+c3BhbjphZnRlcntib3R0b206LS4zNXJlbX0uaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyLmFjdGl2ZT5zcGFuLC5jbHItbmF2LWNsb3NlLmFjdGl2ZT5zcGFu''@;'; put 'put ''e2JhY2tncm91bmQ6MCAwfS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXIuYWN0aXZlPnNwYW46YmVmb3JlLC5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXIuYWN0aXZlPnNwYW46YWZ0ZXIsLmNsci1uYXYtY2xvc2UuYWN0aXZlPnNwYW46YmVmb3JlLC5jbHItbmF2LWNsb3NlLmFjdGl2ZT5zcGFu''@;'; put 'put ''OmFmdGVye2xlZnQ6LjE1cmVtO3RyYW5zZm9ybS1vcmlnaW46OSU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjZzIGVhc2V9LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlci5hY3RpdmU+c3BhbjpiZWZvcmUsLmNsci1uYXYtY2xvc2UuYWN0aXZlPnNwYW46YmVmb3Jle3RyYW5zZm9ybTpyb3RhdGUo''@;'; put 'put ''NDVkZWcpfS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXIuYWN0aXZlPnNwYW46YWZ0ZXIsLmNsci1uYXYtY2xvc2UuYWN0aXZlPnNwYW46YWZ0ZXJ7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfS5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcj5zcGFuLC5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcj5z''@;'; put 'put ''cGFuOmJlZm9yZSwuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXI+c3BhbjphZnRlciwuY2xyLW5hdi1jbG9zZT5zcGFuLC5jbHItbmF2LWNsb3NlPnNwYW46YmVmb3JlLC5jbHItbmF2LWNsb3NlPnNwYW46YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0Oi4ycmVtO3dpZHRoOi4ycmVt''@;'; put 'put ''O2JhY2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWNsci1yZXNwb25zaXZlLW5hdi10cmlnZ2VyLWJnLWNvbG9yLCB3aGl0ZSk7Ym9yZGVyLXJhZGl1czouMnJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1yZXNwb25zaXZlLW5hdi1vdmVyZmxvdy1ib3JkZXItcmFkaXVzLCAuMnJl''@;'; put 'put ''bSl9LmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyPnNwYW4sLmNsci1uYXYtY2xvc2U+c3Bhbntwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyPnNwYW46YmVmb3JlLC5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcj5zcGFuOmFmdGVy''@;'; put 'put ''LC5jbHItbmF2LWNsb3NlPnNwYW46YmVmb3JlLC5jbHItbmF2LWNsb3NlPnNwYW46YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjB9LmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyPnNwYW46YmVmb3JlLC5jbHItbmF2LWNsb3NlPnNwYW46YmVmb3Jle3RvcDotLjRyZW19''@;'; put 'put ''LmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyPnNwYW46YWZ0ZXIsLmNsci1uYXYtY2xvc2U+c3BhbjphZnRlcntib3R0b206LS40cmVtfS5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlci5hY3RpdmU+c3BhbiwuY2xyLW5hdi1jbG9zZS5hY3RpdmU+c3BhbntiYWNrZ3JvdW5kOjAgMH0uaGVhZGVyLW92''@;'; put 'put ''ZXJmbG93LXRyaWdnZXIuYWN0aXZlPnNwYW46YmVmb3JlLC5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlci5hY3RpdmU+c3BhbjphZnRlciwuY2xyLW5hdi1jbG9zZS5hY3RpdmU+c3BhbjpiZWZvcmUsLmNsci1uYXYtY2xvc2UuYWN0aXZlPnNwYW46YWZ0ZXJ7aGVpZ2h0Oi4xcmVtO3dpZHRoOjEu''@;'; put 'put ''MnJlbTtsZWZ0Oi0uM3JlbTt0cmFuc2Zvcm0tb3JpZ2luOi0zJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNnMgZWFzZX0uaGVhZGVyLW92ZXJmbG93LXRyaWdnZXIuYWN0aXZlPnNwYW46YmVmb3JlLC5jbHItbmF2LWNsb3NlLmFjdGl2ZT5zcGFuOmJlZm9yZXt0cmFuc2Zvcm06cm90YXRlKDQ1''@;'; put 'put ''ZGVnKX0uaGVhZGVyLW92ZXJmbG93LXRyaWdnZXIuYWN0aXZlPnNwYW46YWZ0ZXIsLmNsci1uYXYtY2xvc2UuYWN0aXZlPnNwYW46YWZ0ZXJ7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4cHgpey5tYWluLWNvbnRhaW5lciAuaGVhZGVy''@;'; put 'put ''LWhhbWJ1cmdlci10cmlnZ2VyLC5tYWluLWNvbnRhaW5lciAuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyOjA7YmFja2dyb3VuZDowIDA7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjEuMnJlbTtoZWlnaHQ6M3JlbTt3aWR0aDozcmVtO3BhZGRp''@;'; put 'put ''bmc6MCAwIC4ycmVtO3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtjb2xvcjojZmFmYWZhO2NvbG9yOnZhcigtLWNsci1oZWFkZXItZm9udC1jb2xvciwgI2ZhZmFmYSk7b3BhY2l0eTouNjU7b3BhY2l0eTp2YXIoLS1jbHItaGVhZGVyLW5hdi1vcGFjaXR5LCAuNjUpfS5t''@;'; put 'put ''YWluLWNvbnRhaW5lciAuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyOmZvY3VzLC5tYWluLWNvbnRhaW5lciAuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXI6Zm9jdXN7b3V0bGluZS1vZmZzZXQ6LS4yNXJlbX0ubWFpbi1jb250YWluZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcjplbmFibGVk''@;'; put 'put ''OmhvdmVyLC5tYWluLWNvbnRhaW5lciAuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXI6ZW5hYmxlZDpob3ZlcntvcGFjaXR5OjE7b3BhY2l0eTp2YXIoLS1jbHItaGVhZGVyLW5hdi1ob3Zlci1vcGFjaXR5LCAxKX0ubWFpbi1jb250YWluZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcjpkaXNh''@;'; put 'put ''YmxlZCwubWFpbi1jb250YWluZXIgLmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH0ubWFpbi1jb250YWluZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1j''@;'; put 'put ''b250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lciAuc2lkZW5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyIC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3Bvc2l0''@;'; put 'put ''aW9uOmZpeGVkO3RvcDowO3JpZ2h0OmF1dG87Ym90dG9tOjA7bGVmdDowO2JhY2tncm91bmQ6I2U4ZThlODtiYWNrZ3JvdW5kOnZhcigtLWNsci1uYXYtYmFja2dyb3VuZC1jb2xvciwgI2U4ZThlOCk7ei1pbmRleDoxMDM5O2hlaWdodDoxMDB2aDt0cmFuc2Zvcm06dHJhbnNsYXRlKC0xOHJl''@;'; put 'put ''bSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGVhc2V9Lm1haW4tY29udGFpbmVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1j''@;'; put 'put ''b250YWluZXIgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lciAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6YXV0''@;'; put 'put ''bztiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHItbmF2LWJhY2tncm91bmQtY29sb3IsICNlOGU4ZTgpO3otaW5kZXg6MTAzOTtoZWlnaHQ6MTAwdmg7dHJhbnNmb3JtOnRyYW5zbGF0ZSgxOHJlbSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGVhc2V9Lm1haW4tY29u''@;'; put 'put ''dGFpbmVyIC5zaWRlbmF2LmNsci1uYXYtbGV2ZWwtMntvdmVyZmxvdzppbmhlcml0fS5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSBhc2lkZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYu''@;'; put 'put ''Y2xyLW5hdi1sZXZlbC0xIC5uYXYsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSBhc2lkZSwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgYXNpZGUsLm1haW4t''@;'; put 'put ''Y29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgYXNpZGV7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOnN0cmV0Y2h9Lm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZl''@;'; put 'put ''bC0xIGFzaWRlLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTEgYXNpZGUsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIGFzaWRlLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgYXNpZGV7anVzdGlmeS1jb250ZW50''@;'; put 'put ''OmNlbnRlcjt3aWR0aDoxMDAlfS5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiwubWFpbi1jb250''@;'; put 'put ''YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXZ7cGFkZGluZy1sZWZ0OjB9Lm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1pdGVtLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWl0ZW0sLm1h''@;'; put 'put ''aW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1pdGVtLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWl0ZW17aGVpZ2h0OjEuOHJlbTttYXJnaW4tcmlnaHQ6MH0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHIt''@;'; put 'put ''bmF2LWxldmVsLTEgLm5hdiAubmF2LWxpbmssLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluaywubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmssLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNs''@;'; put 'put ''ci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGlua3twYWRkaW5nOjAgLjZyZW0gMCAxLjJyZW07d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czouMTVyZW07''@;'; put 'put ''Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2NvbG9y''@;'; put 'put ''OiM2NjY7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWNvbG9yLCAjNjY2NjY2KX0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWxpbmsuYWN0aXZlLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAu''@;'; put 'put ''bmF2LWxpbmsuYWN0aXZlLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluay5hY3RpdmUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluay5hY3RpdmV7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItdmVydGljYWwtbmF2LWl0ZW0tYWN0aXZlLWNvbG9yLCAjNjY2NjY2KTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWFjdGl2ZS1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci1sZWZ0Oi4xNXJlbSBzb2xpZCB2YXIoLS1jbHIt''@;'; put 'put ''bmF2LWFjdGl2ZS1ib3gtc2hhZG93LWNvbG9yKX0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWxpbmsuYWN0aXZlIC5uYXYtaWNvbiwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSAu''@;'; put 'put ''bmF2LWljb24sLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSAubmF2LWljb24sLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluay5hY3RpdmUgLm5hdi1pY29ue2ZpbGw6IzAwNzJh''@;'; put 'put ''MztmaWxsOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaWNvbi1hY3RpdmUtY29sb3IsICMwMDcyYTMpfS5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluazpob3ZlciwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYg''@;'; put 'put ''Lm5hdi1saW5rOmhvdmVyLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluazpob3ZlciwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rOmhvdmVye2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LXZlcnRpY2FsLW5hdi1pdGVtLWFjdGl2ZS1jb2xvciwgIzY2NjY2Nik7YmFja2dyb3VuZC1jb2xvcjojY2NjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1ob3Zlci1iZy1jb2xvciwgI2NjY2NjYyk7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lm1haW4tY29udGFpbmVy''@;'; put 'put ''IC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rOmhvdmVyLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluay5hY3RpdmUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluazpo''@;'; put 'put ''b3ZlciwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbms6aG92ZXIsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZl''@;'; put 'put ''bC0yIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rOmhvdmVyLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZle2JveC1zaGFkb3c6bm9u''@;'; put 'put ''ZX0ubWFpbi1jb250YWluZXIgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluazpob3ZlciwubWFpbi1jb250YWluZXIgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluay5hY3RpdmUsLm1haW4tY29udGFpbmVyIC5zaWRlbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxp''@;'; put 'put ''bms6aG92ZXIsLm1haW4tY29udGFpbmVyIC5zaWRlbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsuYWN0aXZle2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDojZmZmO2JhY2tncm91bmQ6dmFyKC0tY2xyLXJlc3BvbnNpdmUtbmF2LWhvdmVyLWJnLCB3aGl0ZSl9Lm1haW4tY29udGFpbmVy''@;'; put 'put ''IC5zaWRlbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lciAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyIC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwt''@;'; put 'put ''Mntib3JkZXItcmlnaHQ6bm9uZX0ubWFpbi1jb250YWluZXIgLmhlYWRlci1vdmVyZmxvdy10cmlnZ2Vye3Bvc2l0aW9uOnJlbGF0aXZlfS5tYWluLWNvbnRhaW5lciAuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXI6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7Y29udGVudDoiIjtkaXNwbGF5Omlu''@;'; put 'put ''bGluZS1ibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtjb250ZW50OiIiO2JhY2tncm91bmQ6I2ZhZmFmYTtiYWNrZ3JvdW5kOnZhcigtLWNsci1oZWFkZXItZm9udC1jb2xvciwgI2ZhZmFmYSk7b3BhY2l0eTouMTU7b3BhY2l0eTp2YXIoLS1jbHItaGVhZGVyLWRpdmlkZXItb3BhY2l0eSwgLjE1''@;'; put 'put ''KTtvcGFjaXR5Oi4xNTtoZWlnaHQ6MnJlbTt3aWR0aDouMDVyZW07d2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTt0b3A6LjVyZW07bGVmdDowfS5tYWluLWNvbnRhaW5lciAuaGVhZGVyIC5icmFuZGluZ3ttYXgtd2lkdGg6MTJyZW07bWluLXdpZHRoOjA7b3Zl''@;'; put 'put ''cmZsb3c6aGlkZGVufS5tYWluLWNvbnRhaW5lciAuaGVhZGVyIC5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXIrLmJyYW5kaW5ne3BhZGRpbmctbGVmdDowfS5tYWluLWNvbnRhaW5lciAuaGVhZGVyIC5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXIrLmJyYW5kaW5nIC5jbHItaWNvbiwubWFpbi1j''@;'; put 'put ''b250YWluZXIgLmhlYWRlciAuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyKy5icmFuZGluZyAubG9nbywubWFpbi1jb250YWluZXIgLmhlYWRlciAuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyKy5icmFuZGluZyBjZHMtaWNvbiwubWFpbi1jb250YWluZXIgLmhlYWRlciAuaGVhZGVyLWhhbWJ1''@;'; put 'put ''cmdlci10cmlnZ2VyKy5icmFuZGluZyBjbHItaWNvbntkaXNwbGF5Om5vbmV9Lm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmJyYW5kaW5nKy5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlciwubWFpbi1jb250YWluZXIgLmhlYWRlciAuaGVhZGVyLW5hdisuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXJ7''@;'; put 'put ''bWFyZ2luLWxlZnQ6YXV0b30ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItYmFja2Ryb3AsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItYmFja2Ryb3B7cG9zaXRpb246Zml4ZWQ7dG9wOjA7Ym90dG9t''@;'; put 'put ''OjA7bGVmdDowO3JpZ2h0OjA7YmFja2dyb3VuZDojMDAwO2JhY2tncm91bmQ6dmFyKC0tY2xyLXJlc3BvbnNpdmUtbmF2LWhlYWRlci1iYWNrZHJvcC1iZy1jb2xvciwgYmxhY2spO29wYWNpdHk6Ljg1O29wYWNpdHk6dmFyKC0tY2xyLXJlc3BvbnNpdmUtbmF2LWhlYWRlci1iYWNrZHJvcC1v''@;'; put 'put ''cGFjaXR5LCAuODUpO2N1cnNvcjpwb2ludGVyO3otaW5kZXg6MTAzOH0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmssLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRl''@;'; put 'put ''ciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAu''@;'; put 'put ''aGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5re2ZsZXg6MCAwIGF1dG87b3BhY2l0eToxO2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWNvbG9yLCAjNjY2NjY2KX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVy''@;'; put 'put ''IC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsgLm5hdi1pY29uLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluayAuZmEsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2Vy''@;'; put 'put ''LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rIC5uYXYtaWNvbiwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsgLmZhLC5tYWluLWNvbnRhaW5lci5v''@;'; put 'put ''cGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rIC5uYXYtaWNvbiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluayAuZmEsLm1haW4t''@;'; put 'put ''Y29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsgLm5hdi1pY29uLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5r''@;'; put 'put ''IC5mYXtkaXNwbGF5Om5vbmV9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rIC5uYXYtdGV4dCwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2''@;'; put 'put ''LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsgLm5hdi10ZXh0LC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rIC5uYXYtdGV4dCwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5o''@;'; put 'put ''ZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluayAubmF2LXRleHR7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItc2xpZGluZy1wYW5lbC10ZXh0LWNvbG9yLCAjNjY2NjY2KTtsaW5lLWhlaWdodDoxLjJyZW07cGFkZGluZzou''@;'; put 'put ''M3JlbSAwIC4zcmVtIDEuMnJlbTt3aGl0ZS1zcGFjZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0LC5tYWluLWNv''@;'; put 'put ''bnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0LC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEg''@;'; put 'put ''Lm5hdi1saW5rIC5uYXYtaWNvbisubmF2LXRleHQsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsgLm5hdi1pY29uKy5uYXYtdGV4dHtkaXNwbGF5OmlubGluZS1ibG9ja30ubWFpbi1jb250YWlu''@;'; put 'put ''ZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsuYWN0aXZlLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluay5hY3RpdmUs''@;'; put 'put ''Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsuYWN0aXZlLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1s''@;'; put 'put ''aW5rLmFjdGl2ZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1hY3RpdmUtY29sb3IsICM2NjY2NjYpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtYWN0aXZlLWJnLWNvbG9yLCB3aGl0ZSk7''@;'; put 'put ''Ym9yZGVyLWxlZnQ6LjE1cmVtIHNvbGlkIHZhcigtLWNsci1uYXYtYWN0aXZlLWJveC1zaGFkb3ctY29sb3IpfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluay5hY3RpdmUgLm5hdi1pY29uLC5t''@;'; put 'put ''YWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluay5hY3RpdmUgLm5hdi1pY29uLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVs''@;'; put 'put ''LTEgLm5hdi1saW5rLmFjdGl2ZSAubmF2LWljb24sLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsuYWN0aXZlIC5uYXYtaWNvbntmaWxsOiMwMDcyYTM7ZmlsbDp2YXIoLS1jbHItdmVydGljYWwt''@;'; put 'put ''bmF2LWljb24tYWN0aXZlLWNvbG9yLCAjMDA3MmEzKX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbms6aG92ZXIsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAu''@;'; put 'put ''aGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rOmhvdmVyLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rOmhvdmVyLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUg''@;'; put 'put ''LmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rOmhvdmVye2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWFjdGl2ZS1jb2xvciwgIzY2NjY2Nik7YmFja2dyb3VuZC1jb2xvcjojY2NjO2JhY2tncm91bmQtY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLXZlcnRpY2FsLW5hdi1ob3Zlci1iZy1jb2xvciwgI2NjY2NjYyk7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rLmFjdGl2ZT4ubmF2LXRleHQsLm1h''@;'; put 'put ''aW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZT4ubmF2LXRleHQsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwt''@;'; put 'put ''MSAubmF2LWxpbmsuYWN0aXZlPi5uYXYtdGV4dCwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluay5hY3RpdmU+Lm5hdi10ZXh0e2NvbG9yOmluaGVyaXR9Lm1haW4tY29udGFpbmVyLm9wZW4taGFt''@;'; put 'put ''YnVyZ2VyLW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2Vye2Rpc3BsYXk6bm9uZX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVy''@;'; put 'put ''IC5icmFuZGluZ3twb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjE4cmVtO21heC13aWR0aDoxOHJlbTt6LWluZGV4OjEwNDA7cGFkZGluZy1sZWZ0OjEuMnJlbX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFu''@;'; put 'put ''ZGluZz4ubmF2LWxpbmt7b3ZlcmZsb3c6aGlkZGVufS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmJyYW5kaW5nIC5jbHItaWNvbiwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZyAubG9nbywubWFpbi1jb250''@;'; put 'put ''YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZyBjZHMtaWNvbiwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZyBjbHItaWNvbntkaXNwbGF5OmlubGluZS1ibG9ja30ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJn''@;'; put 'put ''ZXItbWVudSAuaGVhZGVyIC5icmFuZGluZyBjZHMtaWNvbltzaGFwZT12bS1idWddLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmJyYW5kaW5nIGNsci1pY29uW3NoYXBlPXZtLWJ1Z10sLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhl''@;'; put 'put ''YWRlciAuYnJhbmRpbmcgLmNsci12bXctbG9nb3tiYWNrZ3JvdW5kLWNvbG9yOiM4YzhjOGM7Ym9yZGVyLXJhZGl1czouMTVyZW19Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuYnJhbmRpbmcgLnRpdGxle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXNs''@;'; put 'put ''aWRpbmctcGFuZWwtdGV4dC1jb2xvciwgIzY2NjY2Nik7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW59Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci1uYXYtY2xvc2V7cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6YXV0bztsZWZ0OjA7ei1p''@;'; put 'put ''bmRleDoxMDM5O3RyYW5zZm9ybTp0cmFuc2xhdGUoMTguNnJlbSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjZzIGVhc2V9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci1uYXYtY2xvc2U6YWZ0ZXJ7Y29udGVudDpub25lfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1''@;'; put 'put ''cmdlci1tZW51IC5jbHItbmF2LWNsb3NlPnNwYW57YmFja2dyb3VuZDowIDB9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci1uYXYtY2xvc2U+c3BhbjpiZWZvcmUsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci1uYXYtY2xvc2U+c3Bhbjph''@;'; put 'put ''ZnRlcntsZWZ0Oi4xNXJlbTt0cmFuc2Zvcm0tb3JpZ2luOjklO3RyYW5zaXRpb246dHJhbnNmb3JtIC42cyBlYXNlfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItbmF2LWNsb3NlPnNwYW46YmVmb3Jle3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYWluLWNvbnRh''@;'; put 'put ''aW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItbmF2LWNsb3NlPnNwYW46YWZ0ZXJ7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIub3Blbi1oYW1i''@;'; put 'put ''dXJnZXItbWVudSAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNv''@;'; put 'put ''bnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMXtwYWRkaW5nLXRvcDo0LjJyZW07dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXIt''@;'; put 'put ''bWVudSAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLnNpZGVuYXYtY29udGVudCwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSAuc2lkZW5hdi1jb250ZW50LC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5z''@;'; put 'put ''dWItbmF2LmNsci1uYXYtbGV2ZWwtMSAuc2lkZW5hdi1jb250ZW50LC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zaWRlbmF2LmNsci1uYXYtbGV2ZWwtMSAuc2lkZW5hdi1jb250ZW50LC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItdmVydGlj''@;'; put 'put ''YWwtbmF2LmNsci1uYXYtbGV2ZWwtMSAuc2lkZW5hdi1jb250ZW50e3BhZGRpbmctYm90dG9tOjEuMnJlbX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5zdWJu''@;'; put 'put ''YXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJm''@;'; put 'put ''bG93LW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYuY2xyLW5hdi1sZXZlbC0ye3RyYW5zZm9ybTp0cmFuc2xhdGUoMCk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGVhc2V9Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4t''@;'; put 'put ''Y29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMntwYWRkaW5nLXRvcDoxLjJyZW19Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVu''@;'; put 'put ''dSAuY2xyLW5hdi1jbG9zZXtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2xlZnQ6YXV0bzt6LWluZGV4OjEwMzk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTguNnJlbSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjZzIGVhc2V9Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAu''@;'; put 'put ''Y2xyLW5hdi1jbG9zZTphZnRlcntjb250ZW50Om5vbmV9Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuY2xyLW5hdi1jbG9zZT5zcGFue2JhY2tncm91bmQ6MCAwfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci1uYXYtY2xvc2U+c3BhbjpiZWZvcmUs''@;'; put 'put ''Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuY2xyLW5hdi1jbG9zZT5zcGFuOmFmdGVye2hlaWdodDouMXJlbTt3aWR0aDoxLjJyZW07bGVmdDotLjNyZW07dHJhbnNmb3JtLW9yaWdpbjotMyU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjZzIGVhc2V9Lm1haW4tY29udGFpbmVy''@;'; put 'put ''Lm9wZW4tb3ZlcmZsb3ctbWVudSAuY2xyLW5hdi1jbG9zZT5zcGFuOmJlZm9yZXt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5jbHItbmF2LWNsb3NlPnNwYW46YWZ0ZXJ7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfS5tYWluLWNv''@;'; put 'put ''bnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuc3ViLW5hdi5jbHIt''@;'; put 'put ''bmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMXtvdmVyZmxvdzppbmhlcml0O3dpZHRo''@;'; put 'put ''OjE4cmVtO21heC13aWR0aDoxOHJlbX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5vcGVu''@;'; put 'put ''LW92ZXJmbG93LW1lbnUgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYuY2xyLW5hdi1sZXZl''@;'; put 'put ''bC0ye3dpZHRoOjE4cmVtO21heC13aWR0aDoxOHJlbX19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCl7Lm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmJyYW5kaW5ne21heC13aWR0aDo3LjJyZW07bWluLXdpZHRoOjA7b3ZlcmZsb3c6aGlkZGVufS5tYWluLWNvbnRhaW5lciAu''@;'; put 'put ''aGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyIC5zaWRlbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIg''@;'; put 'put ''LmNsci12ZXJ0aWNhbC1uYXYuY2xyLW5hdi1sZXZlbC0xe3RyYW5zZm9ybTp0cmFuc2xhdGUoLTE0LjRyZW0pfS5tYWluLWNvbnRhaW5lciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lciAu''@;'; put 'put ''c3ViLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyIC5zaWRlbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIgLmNsci12ZXJ0aWNhbC1uYXYuY2xyLW5hdi1sZXZlbC0ye3RyYW5zZm9ybTp0cmFuc2xhdGUoMTQuNHJlbSl9Lm1haW4tY29udGFpbmVyLm9wZW4t''@;'; put 'put ''aGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuYnJhbmRpbmd7d2lkdGg6MTQuNHJlbTttYXgtd2lkdGg6MTQuNHJlbX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUg''@;'; put 'put ''LnN1Ym5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zaWRlbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIub3Bl''@;'; put 'put ''bi1oYW1idXJnZXItbWVudSAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTF7b3ZlcmZsb3c6aW5oZXJpdDt3aWR0aDoxNC40cmVtO21heC13aWR0aDoxNC40cmVtfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItbmF2LWNsb3Nle3Bvc2l0aW9uOmZpeGVk''@;'; put 'put ''O3RvcDowO3JpZ2h0OmF1dG87bGVmdDowO3otaW5kZXg6MTAzOTt0cmFuc2Zvcm06dHJhbnNsYXRlKDE1cmVtKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNnMgZWFzZX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuY2xyLW5hdi1jbG9zZTphZnRlcntjb250ZW50Om5vbmV9''@;'; put 'put ''Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5zdWItbmF2''@;'; put 'put ''LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5zaWRlbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMnt3aWR0aDoxNC40cmVtO21heC13''@;'; put 'put ''aWR0aDoxNC40cmVtfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci1uYXYtY2xvc2V7cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6MDtsZWZ0OmF1dG87ei1pbmRleDoxMDM5O3RyYW5zZm9ybTp0cmFuc2xhdGUoLTE1cmVtKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAu''@;'; put 'put ''NnMgZWFzZX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5jbHItbmF2LWNsb3NlOmFmdGVye2NvbnRlbnQ6bm9uZX19OnJvb3R7LS1jbHItcHJvZ3Jlc3MtZGVmYXVsdC1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCk7LS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9y''@;'; put 'put ''LTE6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtNDAwKTstLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTgwMCk7LS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTM6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yKTstLWNsci1wcm9ncmVzcy1iZy1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0yMDApfS5wcm9ncmVzcywucHJvZ3Jlc3Mtc3RhdGlje2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czowO2ZvbnQtc2l6ZTppbmhlcml0O2hlaWdodDoyZW07bWFyZ2luOjA7bWF4LWhlaWdodDouN3JlbTttaW4t''@;'; put 'put ''aGVpZ2h0Oi4ycmVtO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCV9LnByb2dyZXNzPnByb2dyZXNzey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO2NvbG9yOiMw''@;'; put 'put ''MDcyYTM7Y29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWRlZmF1bHQtY29sb3IsICMwMDcyYTMpO2Rpc3BsYXk6YmxvY2s7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWJnLWNvbG9yLCAjZThlOGU4KTtib3JkZXI6MDtoZWlnaHQ6''@;'; put 'put ''MTAwJTt3aWR0aDoxMDAlfS5wcm9ncmVzcz5wcm9ncmVzczo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDcyYTM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtZGVmYXVsdC1jb2xvciwgIzAwNzJhMyl9LnByb2dyZXNzPnByb2dyZXNzOjot''@;'; put 'put ''bW96LXByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiMwMDcyYTM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtZGVmYXVsdC1jb2xvciwgIzAwNzJhMyl9LnByb2dyZXNzPnByb2dyZXNzW3ZhbHVlPSIwIl06Oi1tb3otcHJvZ3Jlc3MtYmFyey13ZWJraXQtYXBwZWFy''@;'; put 'put ''YW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO2NvbG9yOiNlOGU4ZTg7Y29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWJnLWNvbG9yLCAjZThlOGU4KTttaW4td2lkdGg6Mi40cmVtO2JhY2tncm91bmQtY29sb3I6dHJh''@;'; put 'put ''bnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lfS5wcm9ncmVzcz5wcm9ncmVzc1t2YWx1ZT0iMCJdOjotd2Via2l0LXByb2dyZXNzLXZhbHVley13ZWJraXQtdHJhbnNpdGlvbjpub25lO3RyYW5zaXRpb246bm9uZX0ucHJvZ3Jlc3M+cHJvZ3Jlc3M6Oi13ZWJraXQtcHJvZ3Jlc3MtYmFy''@;'; put 'put ''e2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYmctY29sb3IsICNlOGU4ZTgpfS5wcm9ncmVzcz5wcm9ncmVzczo6LXdlYmtpdC1wcm9ncmVzcy1pbm5lci1lbGVtZW50ey13ZWJraXQtYXBwZWFyYW5j''@;'; put 'put ''ZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lfS5wcm9ncmVzcz5wcm9ncmVzczo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZXstd2Via2l0LXRyYW5zaXRpb246d2lkdGggLjIzcyBlYXNlLWluO3RyYW5zaXRpb246d2lkdGgg''@;'; put 'put ''LjIzcyBlYXNlLWluO2JvcmRlci1yYWRpdXM6MH0ucHJvZ3Jlc3Muc3VjY2Vzcz5wcm9ncmVzc3tjb2xvcjojNWViNzE1O2NvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMSwgIzVlYjcxNSl9LnByb2dyZXNzLnN1Y2Nlc3M+cHJvZ3Jlc3M6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFs''@;'; put 'put ''dWV7YmFja2dyb3VuZC1jb2xvcjojNWViNzE1O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0xLCAjNWViNzE1KX0ucHJvZ3Jlc3Muc3VjY2Vzcz5wcm9ncmVzczo6LW1vei1wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjojNWViNzE1O2JhY2tncm91''@;'; put 'put ''bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0xLCAjNWViNzE1KX0ucHJvZ3Jlc3Mud2FybmluZz5wcm9ncmVzc3tjb2xvcjojYzIxZDAwO2NvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMywgI2MyMWQwMCl9LnByb2dyZXNzLndhcm5pbmc+cHJvZ3Jlc3M6''@;'; put 'put ''Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWV7YmFja2dyb3VuZC1jb2xvcjojYzIxZDAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0zLCAjYzIxZDAwKX0ucHJvZ3Jlc3Mud2FybmluZz5wcm9ncmVzczo6LW1vei1wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1j''@;'; put 'put ''b2xvcjojYzIxZDAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0zLCAjYzIxZDAwKX0ucHJvZ3Jlc3MuZGFuZ2VyPnByb2dyZXNze2NvbG9yOiNjMjFkMDA7Y29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yLCAjYzIxZDAwKX0ucHJvZ3Jl''@;'; put 'put ''c3MuZGFuZ2VyPnByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVle2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMiwgI2MyMWQwMCl9LnByb2dyZXNzLmRhbmdlcj5wcm9ncmVzczo6LW1vei1wcm9ncmVz''@;'; put 'put ''cy1iYXJ7YmFja2dyb3VuZC1jb2xvcjojYzIxZDAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yLCAjYzIxZDAwKX0ucHJvZ3Jlc3MubGFiZWxlZCwucHJvZ3Jlc3Mtc3RhdGljLmxhYmVsZWR7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1yaWdodDoz''@;'; put 'put ''ZW19LnByb2dyZXNzLmxhYmVsZWQ+c3BhbiwucHJvZ3Jlc3Mtc3RhdGljLmxhYmVsZWQ+c3BhbntkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxZW07cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDowO2xpbmUtaGVpZ2h0OjFlbTttYXJnaW4tdG9wOi0uMzc1ZW19QGtleWZyYW1lcyBj''@;'; put 'put ''bHItcHJvZ3Jlc3MtZmFkZXswJXtvcGFjaXR5OjF9dG97b3BhY2l0eTowfX0ucHJvZ3Jlc3MucHJvZ3Jlc3MtZmFkZT5wcm9ncmVzc1t2YWx1ZT0iMTAwIl0sLnByb2dyZXNzLnByb2dyZXNzLWZhZGU+cHJvZ3Jlc3NbdmFsdWU9IjEwMCJdK3NwYW57YW5pbWF0aW9uOmNsci1wcm9ncmVzcy1m''@;'; put 'put ''YWRlIC4zcyBsaW5lYXIgLjVzIGZvcndhcmRzfS5wcm9ncmVzcy5mbGFzaC1kYW5nZXI+cHJvZ3Jlc3MsLnByb2dyZXNzLmZsYXNoPnByb2dyZXNze3RyYW5zaXRpb246Y29sb3IgLjFzIGVhc2Utb3V0IDFzfS5wcm9ncmVzcy5mbGFzaC1kYW5nZXI+cHJvZ3Jlc3M6Oi13ZWJraXQtcHJvZ3Jl''@;'; put 'put ''c3MtdmFsdWUsLnByb2dyZXNzLmZsYXNoPnByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVley13ZWJraXQtdHJhbnNpdGlvbjp3aWR0aCAuMjNzIGVhc2UtaW4sYmFja2dyb3VuZC1jb2xvciAuMXMgZWFzZS1vdXQgLjNzO3RyYW5zaXRpb246d2lkdGggLjIzcyBlYXNlLWluLGJhY2tn''@;'; put 'put ''cm91bmQtY29sb3IgLjFzIGVhc2Utb3V0IC4zc30ucHJvZ3Jlc3MuZmxhc2gtZGFuZ2VyPnByb2dyZXNzW3ZhbHVlPSIwIl06Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUsLnByb2dyZXNzLmZsYXNoPnByb2dyZXNzW3ZhbHVlPSIwIl06Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWV7LXdlYmtpdC10''@;'; put 'put ''cmFuc2l0aW9uOm5vbmU7dHJhbnNpdGlvbjpub25lfS5wcm9ncmVzcy5mbGFzaC1kYW5nZXI+cHJvZ3Jlc3M6Oi1tb3otcHJvZ3Jlc3MtYmFyLC5wcm9ncmVzcy5mbGFzaD5wcm9ncmVzczo6LW1vei1wcm9ncmVzcy1iYXJ7LW1vei10cmFuc2l0aW9uOndpZHRoIC4yM3MgZWFzZS1pbixiYWNr''@;'; put 'put ''Z3JvdW5kLWNvbG9yIC4xcyBlYXNlLW91dCAuM3M7dHJhbnNpdGlvbjp3aWR0aCAuMjNzIGVhc2UtaW4sYmFja2dyb3VuZC1jb2xvciAuMXMgZWFzZS1vdXQgLjNzfS5wcm9ncmVzcy5mbGFzaD5wcm9ncmVzc1t2YWx1ZT0iMTAwIl17Y29sb3I6IzVlYjcxNTtjb2xvcjp2YXIoLS1jbHItcHJv''@;'; put 'put ''Z3Jlc3MtYWx0LWNvbG9yLTEsICM1ZWI3MTUpfS5wcm9ncmVzcy5mbGFzaD5wcm9ncmVzc1t2YWx1ZT0iMTAwIl06Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWV7YmFja2dyb3VuZC1jb2xvcjojNWViNzE1O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0xLCAj''@;'; put 'put ''NWViNzE1KX0ucHJvZ3Jlc3MuZmxhc2g+cHJvZ3Jlc3NbdmFsdWU9IjEwMCJdOjotbW96LXByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiM1ZWI3MTU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTEsICM1ZWI3MTUpfS5wcm9ncmVzcy5wcm9ncmVz''@;'; put 'put ''cy1mYWRlLmZsYXNoPnByb2dyZXNzW3ZhbHVlPSIxMDAiXSwucHJvZ3Jlc3MucHJvZ3Jlc3MtZmFkZS5mbGFzaD5wcm9ncmVzc1t2YWx1ZT0iMTAwIl0rc3BhbnthbmltYXRpb246Y2xyLXByb2dyZXNzLWZhZGUgLjZzIGxpbmVhciAxcyBmb3J3YXJkc30ucHJvZ3Jlc3MuZmxhc2gtZGFuZ2Vy''@;'; put 'put ''PnByb2dyZXNzW3ZhbHVlPSIxMDAiXXtjb2xvcjojYzIxZDAwO2NvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMiwgI2MyMWQwMCl9LnByb2dyZXNzLmZsYXNoLWRhbmdlcj5wcm9ncmVzc1t2YWx1ZT0iMTAwIl06Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWV7YmFja2dyb3VuZC1j''@;'; put 'put ''b2xvcjojYzIxZDAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yLCAjYzIxZDAwKX0ucHJvZ3Jlc3MuZmxhc2gtZGFuZ2VyPnByb2dyZXNzW3ZhbHVlPSIxMDAiXTo6LW1vei1wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjojYzIxZDAwO2JhY2tn''@;'; put 'put ''cm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yLCAjYzIxZDAwKX1Aa2V5ZnJhbWVzIGNsci1wcm9ncmVzcy1sb29wZXJ7MCV7bGVmdDotMTAwJX10b3tsZWZ0OjEwMCV9fS5wcm9ncmVzcy5sb29we3Bvc2l0aW9uOnJlbGF0aXZlfS5wcm9ncmVzcy5sb29wPnByb2dy''@;'; put 'put ''ZXNze292ZXJmbG93OmhpZGRlbjtjb2xvcjp0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCwgdHJhbnNwYXJlbnQpfS5wcm9ncmVzcy5sb29wPnByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFj''@;'; put 'put ''a2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCwgdHJhbnNwYXJlbnQpfS5wcm9ncmVzcy5sb29wPnByb2dyZXNzOjotbW96LXByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlv''@;'; put 'put ''bi02MDAsIHRyYW5zcGFyZW50KX0ucHJvZ3Jlc3MubG9vcD5wcm9ncmVzczo6LW1vei1wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ucHJvZ3Jlc3MubG9vcDphZnRlcnthbmltYXRpb246Y2xyLXByb2dyZXNzLWxvb3BlciAycyBlYXNlLWluLW91dCBpbmZpbml0''@;'; put 'put ''ZTtjb250ZW50OiIgIjt0b3A6MDtib3R0b206MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kLWNvbG9yOiMwMDcyYTM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtZGVmYXVsdC1jb2xvciwgIzAwNzJhMyk7d2lkdGg6NzUlfS5w''@;'; put 'put ''cm9ncmVzcy5sb29wLmRhbmdlcjphZnRlciwucHJvZ3Jlc3MubG9vcC53YXJuaW5nOmFmdGVye2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMiwgI2MyMWQwMCl9LnByb2dyZXNzLmxvb3Auc3VjY2VzczphZnRl''@;'; put 'put ''cntiYWNrZ3JvdW5kLWNvbG9yOiM1ZWI3MTU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTEsICM1ZWI3MTUpfS5uYXYtaXRlbSAucHJvZ3Jlc3M6YWZ0ZXJ7dG9wOjB9LnByb2dyZXNzLXN0YXRpY3twb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXI6MDt3aWR0''@;'; put 'put ''aDoxMDAlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVye2JhY2tncm91bmQtY29sb3I6I2U4ZThlODtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1iZy1jb2xvciwgI2U4ZThlOCk7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7''@;'; put 'put ''Ym90dG9tOjA7cmlnaHQ6MH0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojMDA3MmEzO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWRlZmF1bHQtY29sb3IsICMwMDcyYTMpO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtw''@;'; put 'put ''b3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO3dpZHRoOjAlO2NvbnRlbnQ6IiAifS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjEiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMiJdOmJlZm9yZSwu''@;'; put 'put ''cHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzIl06YmVmb3Jle3dpZHRoOjIlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjQiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0i''@;'; put 'put ''NSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI2Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjciXTpiZWZvcmV7d2lkdGg6NSV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJb''@;'; put 'put ''ZGF0YS12YWx1ZT0iOCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI5Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjEwIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1l''@;'; put 'put ''dGVyW2RhdGEtdmFsdWU9IjExIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjEyIl06YmVmb3Jle3dpZHRoOjEwJX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIxMyJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3Rh''@;'; put 'put ''dGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIxNCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIxNSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIxNiJdOmJlZm9yZSwucHJvZ3Jl''@;'; put 'put ''c3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIxNyJdOmJlZm9yZXt3aWR0aDoxNSV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMTgiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMTki''@;'; put 'put ''XTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMjAiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMjEiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1''@;'; put 'put ''ZT0iMjIiXTpiZWZvcmV7d2lkdGg6MjAlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjIzIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjI0Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNz''@;'; put 'put ''LW1ldGVyW2RhdGEtdmFsdWU9IjI1Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjI2Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjI3Il06YmVmb3Jle3dpZHRoOjI1JX0ucHJvZ3Jlc3Mt''@;'; put 'put ''c3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIyOCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIyOSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzMCJdOmJlZm9yZSwucHJv''@;'; put 'put ''Z3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzMSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzMiJdOmJlZm9yZXt3aWR0aDozMCV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0i''@;'; put 'put ''MzMiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMzQiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMzUiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12''@;'; put 'put ''YWx1ZT0iMzYiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMzciXTpiZWZvcmV7d2lkdGg6MzUlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjM4Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dy''@;'; put 'put ''ZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjM5Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjQwIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjQxIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+''@;'; put 'put ''LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjQyIl06YmVmb3Jle3dpZHRoOjQwJX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI0MyJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI0NCJdOmJlZm9yZSwu''@;'; put 'put ''cHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI0NSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI0NiJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI0NyJdOmJl''@;'; put 'put ''Zm9yZXt3aWR0aDo0NSV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNDgiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNDkiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0''@;'; put 'put ''YS12YWx1ZT0iNTAiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNTEiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNTIiXTpiZWZvcmV7d2lkdGg6NTAlfS5wcm9ncmVzcy1zdGF0aWM+LnBy''@;'; put 'put ''b2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjUzIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjU0Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjU1Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0''@;'; put 'put ''aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjU2Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjU3Il06YmVmb3Jle3dpZHRoOjU1JX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI1OCJdOmJlZm9y''@;'; put 'put ''ZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI1OSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI2MCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI2MSJd''@;'; put 'put ''OmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI2MiJdOmJlZm9yZXt3aWR0aDo2MCV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNjMiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJb''@;'; put 'put ''ZGF0YS12YWx1ZT0iNjQiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNjUiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNjYiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3Mt''@;'; put 'put ''bWV0ZXJbZGF0YS12YWx1ZT0iNjciXTpiZWZvcmV7d2lkdGg6NjUlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjY4Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjY5Il06YmVmb3JlLC5wcm9ncmVzcy1z''@;'; put 'put ''dGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjcwIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjcxIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjcyIl06YmVmb3Jle3dpZHRo''@;'; put 'put ''OjcwJX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI3MyJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI3NCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI3''@;'; put 'put ''NSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI3NiJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI3NyJdOmJlZm9yZXt3aWR0aDo3NSV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0''@;'; put 'put ''ZXJbZGF0YS12YWx1ZT0iNzgiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNzkiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iODAiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jl''@;'; put 'put ''c3MtbWV0ZXJbZGF0YS12YWx1ZT0iODEiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iODIiXTpiZWZvcmV7d2lkdGg6ODAlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjgzIl06YmVmb3JlLC5wcm9ncmVz''@;'; put 'put ''cy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijg0Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijg1Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijg2Il06YmVmb3JlLC5w''@;'; put 'put ''cm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijg3Il06YmVmb3Jle3dpZHRoOjg1JX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI4OCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVl''@;'; put 'put ''PSI4OSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI5MCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI5MSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRh''@;'; put 'put ''LXZhbHVlPSI5MiJdOmJlZm9yZXt3aWR0aDo5MCV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iOTMiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iOTQiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJv''@;'; put 'put ''Z3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iOTUiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iOTYiXTpiZWZvcmV7d2lkdGg6OTUlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijk3Il06YmVmb3JlLC5wcm9n''@;'; put 'put ''cmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijk4Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijk5Il06YmVmb3Jle3dpZHRoOjk4JX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIx''@;'; put 'put ''MDAiXTpiZWZvcmV7d2lkdGg6MTAwJX0ucHJvZ3Jlc3Mtc3RhdGljLmxhYmVsZWQ+LnByb2dyZXNzLW1ldGVye3JpZ2h0OjNlbX0ucHJvZ3Jlc3Mtc3RhdGljLnN1Y2Nlc3M+LnByb2dyZXNzLW1ldGVyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiM1ZWI3MTU7YmFja2dyb3VuZC1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTEsICM1ZWI3MTUpfS5wcm9ncmVzcy1zdGF0aWMud2FybmluZz4ucHJvZ3Jlc3MtbWV0ZXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMywgI2My''@;'; put 'put ''MWQwMCl9LnByb2dyZXNzLXN0YXRpYy5kYW5nZXI+LnByb2dyZXNzLW1ldGVyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiNjMjFkMDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTIsICNjMjFkMDApfS5jYXJkLWJsb2NrIC5wcm9ncmVzcywuY2FyZC1i''@;'; put 'put ''bG9jayAucHJvZ3Jlc3Mtc3RhdGljLC5jYXJkLWZvb3RlciAucHJvZ3Jlc3MsLmNhcmQtZm9vdGVyIC5wcm9ncmVzcy1zdGF0aWN7bWFyZ2luOjA7bWFyZ2luLXRvcDotLjZyZW07aGVpZ2h0Oi4xODc1cmVtO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MH0uY2FyZC1ibG9jayAucHJvZ3Jlc3M+''@;'; put 'put ''cHJvZ3Jlc3MsLmNhcmQtYmxvY2sgLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXIsLmNhcmQtZm9vdGVyIC5wcm9ncmVzcz5wcm9ncmVzcywuY2FyZC1mb290ZXIgLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJ7aGVpZ2h0Oi4xODc1cmVtO3Bvc2l0aW9uOmFic29sdXRl''@;'; put 'put ''fS5jYXJkLWJsb2NrIC5wcm9ncmVzcy50b3AsLmNhcmQtYmxvY2sgLnByb2dyZXNzLXN0YXRpYy50b3AsLmNhcmQtZm9vdGVyIC5wcm9ncmVzcy50b3AsLmNhcmQtZm9vdGVyIC5wcm9ncmVzcy1zdGF0aWMudG9we21hcmdpbi10b3A6MDt0b3A6MH0ubmF2LWl0ZW0gLnByb2dyZXNzLC5uYXYt''@;'; put 'put ''aXRlbSAucHJvZ3Jlc3Mtc3RhdGlje21hcmdpbjowO2hlaWdodDouMjRyZW07bWluLWhlaWdodDouMjRyZW07bWF4LWhlaWdodDouMjRyZW07bGVmdDowfS5uYXYtaXRlbSAucHJvZ3Jlc3M+cHJvZ3Jlc3MsLm5hdi1pdGVtIC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVye2hlaWdo''@;'; put 'put ''dDouMjRyZW07bWluLWhlaWdodDouMjRyZW07bWF4LWhlaWdodDouMjRyZW07cG9zaXRpb246YWJzb2x1dGV9LnByb2dyZXNzLWJsb2Nre2Rpc3BsYXk6ZmxleDt3aWR0aDoxMDAlO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5wcm9ncmVzcy1ibG9jaz4qe2Zs''@;'; put 'put ''ZXg6MCAwIGF1dG87cGFkZGluZy1yaWdodDouNnJlbX0ucHJvZ3Jlc3MtYmxvY2s+OmZpcnN0LWNoaWxke3BhZGRpbmctcmlnaHQ6LjlyZW19LnByb2dyZXNzLWJsb2NrPjpsYXN0LWNoaWxke3BhZGRpbmctcmlnaHQ6MH0ucHJvZ3Jlc3MtYmxvY2s+bGFiZWx7Zm9udC13ZWlnaHQ6NjAwfS5w''@;'; put 'put ''cm9ncmVzcy1ibG9jaz4ucHJvZ3Jlc3MsLnByb2dyZXNzLWJsb2NrPi5wcm9ncmVzcy1zdGF0aWN7ZmxleDowIDEgYXV0b30ucHJvZ3Jlc3MtYmxvY2s+LnByb2dyZXNzLWdyb3Vwe2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6YXV0bztmbGV4OjAgMSBhdXRvO2Rpc3BsYXk6ZmxleDt3''@;'; put 'put ''aWR0aDoxMDAlfS5wcm9ncmVzcy1ibG9jaz4ucHJvZ3Jlc3MtZ3JvdXAgLmNsci1yb3d7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MH0ucHJvZ3Jlc3MtYmxvY2s+LnByb2dyZXNzLWdyb3VwIC5jbHItcm93PltjbGFzcyo9Y2xyLWNvbC1de3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmln''@;'; put 'put ''aHQ6MH0uY2FyZC1ibG9jayAucHJvZ3Jlc3MtYmxvY2t7bWFyZ2luLWJvdHRvbTouNnJlbTtwYWRkaW5nOjB9LmNhcmQtYmxvY2sgLnByb2dyZXNzLWJsb2NrOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS5jYXJkLWJsb2NrIC5wcm9ncmVzcy1ibG9jaz5sYWJlbHttYXgtd2lkdGg6MzMl''@;'; put 'put ''O2xpbmUtaGVpZ2h0Oi45cmVtfS5jYXJkLWJsb2NrIC5wcm9ncmVzcy1ibG9jayAucHJvZ3Jlc3MsLmNhcmQtYmxvY2sgLnByb2dyZXNzLWJsb2NrIC5wcm9ncmVzcy1zdGF0aWN7cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0Oi42Mzk1cmVtO21hcmdpbi10b3A6MH0uY2FyZC1ibG9jayAucHJv''@;'; put 'put ''Z3Jlc3MtYmxvY2sgLnByb2dyZXNzPnByb2dyZXNzLC5jYXJkLWJsb2NrIC5wcm9ncmVzcy1ibG9jayAucHJvZ3Jlc3M+LnByb2dyZXNzLW1ldGVyLC5jYXJkLWJsb2NrIC5wcm9ncmVzcy1ibG9jayAucHJvZ3Jlc3Mtc3RhdGljPnByb2dyZXNzLC5jYXJkLWJsb2NrIC5wcm9ncmVzcy1ibG9j''@;'; put 'put ''ayAucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcntoZWlnaHQ6LjYzOTVyZW19XzotbXMtaW5wdXQtcGxhY2Vob2xkZXIgLnByb2dyZXNzLWJsb2NrPmxhYmVsLDpyb290IC5wcm9ncmVzcy1ibG9jaz5sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9ja30uc3Bpbm5lcntwb3NpdGlvbjpy''@;'; put 'put ''ZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6My42cmVtO3dpZHRoOjMuNnJlbTttaW4taGVpZ2h0OjMuNnJlbTttaW4td2lkdGg6My42cmVtO2FuaW1hdGlvbjpzcGluIDFzIGxpbmVhciBpbmZpbml0ZTttYXJnaW46MDtwYWRkaW5nOjA7YmFja2dyb3VuZDp1cmwoZGF0YTpp''@;'; put 'put ''bWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmclMjBpZCUzRCUyMkxheWVyXzIlMjIlMjBkYXRhLW5hbWUlM0QlMjJMYXllciUyMDIlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDcyJTIw''@;'; put 'put ''NzIlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDc3R5bGUlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAuY2xzLTElMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAuY2xzLTIl''@;'; put 'put ''MjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmaWxsJTNBJTIwbm9uZSUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN0cm9rZS1taXRlcmxpbWl0JTNBJTIwMTAlM0IlMEElMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzdHJva2Utd2lkdGglM0ElMjA1cHglM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAuY2xzLTElMjAlN0IlMEElMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzdHJva2UlM0ElMjAlMjMwMDAwMDAlM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzdHJva2Utb3BhY2l0eSUzQSUyMDAuMTUlM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlN0QlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAuY2xzLTIlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzdHJva2UlM0ElMjAlMjMwMDcyYTMlM0IlMEElMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZzdHlsZSUzRSUwQSUyMCUyMCUyMCUyMCUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlM0N0aXRsZSUzRVByZWxvYWRlcl83MngyJTNDJTJGdGl0bGUlM0UlMEElMjAlMjAlMjAlMjAlM0Nj''@;'; put 'put ''aXJjbGUlMjBjbGFzcyUzRCUyMmNscy0xJTIyJTIwY3glM0QlMjIzNiUyMiUyMGN5JTNEJTIyMzYlMjIlMjByJTNEJTIyMzMlMjIlMkYlM0UlMEElMjAlMjAlMjAlMjAlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHMtMiUyMiUyMGQlM0QlMjJNMTQuMyUyQzYwLjlBMzMlMkMzMyUyQzAlMkMwJTJD''@;'; put 'put ''MSUyQzM2JTJDMyUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQyUyRnBhdGglM0UlMEElM0MlMkZzdmclM0UlMEEpO3RleHQtaW5kZW50OjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcH0uc3Bpbm5lci5zcGlubmVyLW1ke2hlaWdodDoxLjhyZW07d2lkdGg6MS44cmVtO21p''@;'; put 'put ''bi1oZWlnaHQ6MS44cmVtO21pbi13aWR0aDoxLjhyZW19LnNwaW5uZXIuc3Bpbm5lci1pbmxpbmUsLnNwaW5uZXIuc3Bpbm5lci1zbXtoZWlnaHQ6LjlyZW07d2lkdGg6LjlyZW07bWluLWhlaWdodDouOXJlbTttaW4td2lkdGg6LjlyZW19LnNwaW5uZXIuc3Bpbm5lci1pbmxpbmV7dmVydGlj''@;'; put 'put ''YWwtYWxpZ246dGV4dC1ib3R0b219LnNwaW5uZXIuc3Bpbm5lci1pbnZlcnNle2JhY2tncm91bmQ6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIwaWQlM0QlMjJMYXllcl8yJTIyJTIwZGF0YS1uYW1lJTNEJTIyTGF5ZXIlMjAyJTIyJTIweG1sbnMlM0QlMjJo''@;'; put 'put ''dHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjA3MiUyMDcyJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3N0eWxlJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwLmNscy0xJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLmNscy0yJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZmlsbCUzQSUyMG5vbmUlM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzdHJva2UtbWl0ZXJsaW1pdCUzQSUyMDEwJTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3Ryb2tlLXdpZHRoJTNBJTIwNXB4JTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTdEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLmNscy0xJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3Ryb2tlJTNBJTIwJTIzZmZmZmZmJTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwc3Ryb2tlLW9wYWNpdHklM0ElMjAwLjE1JTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLmNscy0yJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3Ryb2tlJTNBJTIwJTIzNzRjMWUyJTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGc3R5bGUlM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZkZWZzJTNFJTBBJTIw''@;'; put 'put ''JTIwJTIwJTIwJTNDdGl0bGUlM0VQcmVsb2FkZXJfNzJ4MiUzQyUyRnRpdGxlJTNFJTBBJTIwJTIwJTIwJTIwJTNDY2lyY2xlJTIwY2xhc3MlM0QlMjJjbHMtMSUyMiUyMGN4JTNEJTIyMzYlMjIlMjBjeSUzRCUyMjM2JTIyJTIwciUzRCUyMjMzJTIyJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTND''@;'; put 'put ''cGF0aCUyMGNsYXNzJTNEJTIyY2xzLTIlMjIlMjBkJTNEJTIyTTE0LjMlMkM2MC45QTMzJTJDMzMlMkMwJTJDMCUyQzElMkMzNiUyQzMlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZwYXRoJTNFJTBBJTNDJTJGc3ZnJTNFJTBBKX0uc3Bpbm5lci5zcGlubmVyLW5ldXRyYWwtMHtiYWNrZ3Jv''@;'; put 'put ''dW5kOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMGlkJTNEJTIyTGF5ZXJfMiUyMiUyMGRhdGEtbmFtZSUzRCUyMkxheWVyJTIwMiUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwdmlld0JveCUzRCUy''@;'; put 'put ''MjAlMjAwJTIwNzIlMjA3MiUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2RlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NzdHlsZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC5jbHMtMSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMC5jbHMtMiUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZpbGwlM0ElMjBub25lJTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3Ryb2tlLW1pdGVybGltaXQlM0ElMjAxMCUz''@;'; put 'put ''QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN0cm9rZS13aWR0aCUzQSUyMDVweCUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC5jbHMtMSUy''@;'; put 'put ''MCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN0cm9rZSUzQSUyMCUyM3RyYW5zcGFyZW50JTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3Ryb2tlLW9wYWNpdHklM0ElMjAxJTNCJTBBJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLmNscy0yJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3Ryb2tlJTNBJTIwJTIzZmZmZmZmJTNCJTBB''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGc3R5bGUlM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTNDdGl0bGUlM0VQcmVsb2FkZXJfNzJ4MiUzQyUyRnRpdGxlJTNFJTBB''@;'; put 'put ''JTIwJTIwJTIwJTIwJTNDY2lyY2xlJTIwY2xhc3MlM0QlMjJjbHMtMSUyMiUyMGN4JTNEJTIyMzYlMjIlMjBjeSUzRCUyMjM2JTIyJTIwciUzRCUyMjMzJTIyJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xzLTIlMjIlMjBkJTNEJTIyTTE0LjMlMkM2MC45QTMz''@;'; put 'put ''JTJDMzMlMkMwJTJDMCUyQzElMkMzNiUyQzMlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZwYXRoJTNFJTBBJTNDJTJGc3ZnJTNFJTBBKX0uc3Bpbm5lci5zcGlubmVyLWNoZWNre2FuaW1hdGlvbjpub25lO2JhY2tncm91bmQ6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zjgs''@;'; put 'put ''JTNDc3ZnJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDM2JTIwMzYlMjIlMjBwcmVzZXJ2ZUFzcGVjdFJhdGlvJTNEJTIyeE1pZFlNaWQlMjBtZWV0JTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB4''@;'; put 'put ''bWxucyUzQXhsaW5rJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGxpbmslMjIlMjBmb2N1c2FibGUlM0QlMjJmYWxzZSUyMiUyMGFyaWEtaGlkZGVuJTNEJTIydHJ1ZSUyMiUyMHJvbGUlM0QlMjJpbWclMjIlM0UlM0NwYXRoJTIwZmlsbCUzRCUyMiUyMzAwNzJhMyUy''@;'; put 'put ''MiUyMGNsYXNzJTNEJTIyY2xyLWktb3V0bGluZSUyMGNsci1pLW91dGxpbmUtcGF0aC0xJTIyJTIwZCUzRCUyMk0xMy43MiUyQzI3LjY5JTJDMy4yOSUyQzE3LjI3YTElMkMxJTJDMCUyQzAlMkMxJTJDMS40MS0xLjQxbDklMkM5TDMxLjI5JTJDNy4yOWExJTJDMSUyQzAlMkMwJTJDMSUyQzEu''@;'; put 'put ''NDElMkMxLjQxWiUyMiUzRSUzQyUyRnBhdGglM0UlM0MlMkZzdmclM0UpfS5idG4tc20gLnNwaW5uZXIsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIC5zcGlubmVye2hlaWdodDouNjVyZW07d2lkdGg6LjY1cmVtO21pbi1oZWlnaHQ6LjY1cmVtO21pbi13aWR0aDouNjVyZW19''@;'; put 'put ''LmJ0bi1pY29uOm5vdCguYnRuLXNtKSAuc3Bpbm5lcntoZWlnaHQ6LjhyZW07d2lkdGg6LjhyZW07bWluLWhlaWdodDouOHJlbTttaW4td2lkdGg6LjhyZW19QGtleWZyYW1lcyBzcGluezAle3RyYW5zZm9ybTpyb3RhdGUoMCl9dG97dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX06cm9vdHst''@;'; put 'put ''LWNsci10YWJsZS1iZ2NvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLXRoZWFkLWJnY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNTApOy0tY2xyLXRhYmxlLWhlYWRlci1ib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1j''@;'; put 'put ''bHItdGFibGUtZm9vdGVyLWJvcmRlci10b3AtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci10YWJsZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci10YWJsZXJvdy1ib3JkZXJjb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJh''@;'; put 'put ''bC0yMDApOy0tY2xyLXRhYmxlLWJvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMpOy0tY2xyLXRhYmxlLWJvcmRlcndpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgpOy0tY2xyLXRhYmxlLWNvcm5lcmNlbGxyYWRpdXM6LjFyZW07LS1jbHItdGFibGUt''@;'; put 'put ''Zm9udC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLXRoZWFkLWNvbG9yOiM2NjY2NjZ9LnRhYmxle2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLXRhYmxl''@;'; put 'put ''LWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci10YWJsZS1ib3JkZXItcmFkaXVzLCAuMTVyZW0p''@;'; put 'put ''O2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10YWJsZS1iZ2NvbG9yLCB3aGl0ZSk7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItdGFibGUtZm9udC1jb2xvciwgIzY2NjY2Nik7bWFyZ2luOjA7bWFyZ2luLXRvcDoxLjJyZW07bWF4LXdpZHRoOjEw''@;'; put 'put ''MCU7d2lkdGg6MTAwJX0udGFibGUgdGgsLnRhYmxlIHRke2ZvbnQtc2l6ZTouNjVyZW07bGluZS1oZWlnaHQ6LjdyZW07Ym9yZGVyLXRvcC1zdHlsZTpzb2xpZDtib3JkZXItdG9wLXdpZHRoOi4wNXJlbTtib3JkZXItdG9wLXdpZHRoOnZhcigtLWNsci10YWJsZS1ib3JkZXJ3aWR0aCwgLjA1''@;'; put 'put ''cmVtKTtib3JkZXItdG9wLWNvbG9yOiNlOGU4ZTg7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jbHItdGFibGVyb3ctYm9yZGVyY29sb3IsICNlOGU4ZTgpO3BhZGRpbmc6LjU1cmVtIC42cmVtO3RleHQtYWxpZ246Y2VudGVyO3ZlcnRpY2FsLWFsaWduOnRvcH0udGFibGUgdGgubGVmdCwudGFi''@;'; put 'put ''bGUgdGQubGVmdHt0ZXh0LWFsaWduOmxlZnR9LnRhYmxlIHRoLmxlZnQ6Zmlyc3QtY2hpbGQsLnRhYmxlIHRkLmxlZnQ6Zmlyc3QtY2hpbGR7cGFkZGluZy1sZWZ0Oi4zcmVtfS50YWJsZSB0aHtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci10aGVhZC1jb2xvciwgIzY2NjY2Nik7Zm9udC1z''@;'; put 'put ''aXplOi41NXJlbTtmb250LXdlaWdodDo2MDA7bGV0dGVyLXNwYWNpbmc6LjAzZW07YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRoZWFkLWJnY29sb3IsICNmYWZhZmEpO3ZlcnRpY2FsLWFsaWduOmJvdHRvbTtib3JkZXItYm90dG9tLXN0eWxl''@;'; put 'put ''OnNvbGlkO2JvcmRlci1ib3R0b20td2lkdGg6LjA1cmVtO2JvcmRlci1ib3R0b20td2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1ib3R0b20tY29sb3I6I2NjYztib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3Is''@;'; put 'put ''ICNjY2NjY2MpO2JvcmRlci10b3A6MCBub25lfS50YWJsZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZHtib3JkZXItdG9wOjAgbm9uZX0udGFibGUgdGJvZHkrdGJvZHl7Ym9yZGVyLXRvcC1zdHlsZTpzb2xpZDtib3JkZXItdG9wLXdpZHRoOi4wNXJlbTtib3JkZXItdG9wLXdpZHRoOnZhcigt''@;'; put 'put ''LWNsci10YWJsZS1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItdG9wLWNvbG9yOiNjY2M7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKX0udGFibGUgdGhlYWQgdGg6Zmlyc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3At''@;'; put 'put ''bGVmdC1yYWRpdXM6LjFyZW07Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cywgLjFyZW0pfS50YWJsZSB0aGVhZCB0aDpsYXN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czouMXJlbTtib3JkZXItdG9w''@;'; put 'put ''LXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cywgLjFyZW0pfS50YWJsZSB0Ym9keTpsYXN0LWNoaWxkIHRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6LjFyZW07Ym9yZGVyLWJv''@;'; put 'put ''dHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cywgLjFyZW0pfS50YWJsZSB0Ym9keTpsYXN0LWNoaWxkIHRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjFyZW07Ym9yZGVy''@;'; put 'put ''LWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tY2xyLXRhYmxlLWNvcm5lcmNlbGxyYWRpdXMsIC4xcmVtKX0udGFibGUtY29tcGFjdCB0aCwudGFibGUtY29tcGFjdCB0ZHtwYWRkaW5nLXRvcDouM3JlbTtwYWRkaW5nLWJvdHRvbTouMjVyZW19LnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRoZWFk''@;'; put 'put ''IHRoe2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtkaXNwbGF5Om5vbmV9LnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRoe2JvcmRlci1ib3R0b206MDtib3JkZXItdG9wLXN0eWxlOnNvbGlkO2JvcmRlci10b3Atd2lkdGg6LjA1cmVtO2JvcmRlci10b3Atd2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJv''@;'; put 'put ''cmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci10b3AtY29sb3I6I2NjYztib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpO3ZlcnRpY2FsLWFsaWduOnRvcH0udGFibGUudGFibGUtdmVydGljYWwgdGQsLnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRo''@;'; put 'put ''e3RleHQtYWxpZ246bGVmdDtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvciwgI2NjY2NjYyl9LnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRkOmZpcnN0LWNoaWxkLC50YWJsZS50YWJsZS12ZXJ0aWNhbCB0aDpmaXJzdC1jaGlsZHtib3Jk''@;'; put 'put ''ZXItcmlnaHQtc3R5bGU6c29saWQ7Ym9yZGVyLXJpZ2h0LXdpZHRoOi4wNXJlbTtib3JkZXItcmlnaHQtd2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1yaWdodC1jb2xvcjojY2NjO2JvcmRlci1yaWdodC1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9y''@;'; put 'put ''ZGVyLWNvbG9yLCAjY2NjY2NjKTtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdGhlYWQtYmdjb2xvciwgI2ZhZmFmYSk7Zm9udC13ZWlnaHQ6NjAwfS50YWJsZS50YWJsZS12ZXJ0aWNhbCB0Ym9keTpmaXJzdC1vZi10eXBlIHRyOmZpcnN0LWNo''@;'; put 'put ''aWxkIHRoLC50YWJsZS50YWJsZS12ZXJ0aWNhbCB0Ym9keTpmaXJzdC1vZi10eXBlIHRyOmZpcnN0LWNoaWxkIHRke2JvcmRlci10b3A6MCBub25lfS50YWJsZS50YWJsZS12ZXJ0aWNhbCB0Ym9keTpmaXJzdC1vZi10eXBlIHRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLC50YWJsZS50''@;'; put 'put ''YWJsZS12ZXJ0aWNhbCB0Ym9keTpmaXJzdC1vZi10eXBlIHRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4xcmVtO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tY2xyLXRhYmxlLWNvcm5lcmNlbGxyYWRpdXMs''@;'; put 'put ''IC4xcmVtKX0udGFibGUudGFibGUtdmVydGljYWwgdGJvZHk6Zmlyc3Qtb2YtdHlwZSB0cjpmaXJzdC1jaGlsZCB0aDpsYXN0LWNoaWxkLC50YWJsZS50YWJsZS12ZXJ0aWNhbCB0Ym9keTpmaXJzdC1vZi10eXBlIHRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czow''@;'; put 'put ''O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOi4xcmVtO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzLCAuMXJlbSl9LnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRib2R5Omxhc3QtY2hpbGQgdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwu''@;'; put 'put ''dGFibGUudGFibGUtdmVydGljYWwgdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4xcmVtO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tY2xyLXRhYmxlLWNvcm5lcmNl''@;'; put 'put ''bGxyYWRpdXMsIC4xcmVtKX0udGFibGUudGFibGUtdmVydGljYWwgdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsLnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRib2R5Omxhc3QtY2hpbGQgdHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxke2JvcmRlci1yYWRpdXM6''@;'; put 'put ''MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czouMXJlbTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cywgLjFyZW0pfS50YWJsZS50YWJsZS1ub2JvcmRlcntib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91''@;'; put 'put ''bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOjB9LnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRoe2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojY2NjO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvciwgI2NjY2Nj''@;'; put 'put ''Yyk7Ym9yZGVyLXRvcDowIG5vbmV9LnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRoOmZpcnN0LWNoaWxke2JvcmRlci1yaWdodDowIG5vbmV9LnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRke2JvcmRlci10b3A6MCBub25lO3BhZGRpbmctdG9wOi42cmVtfS50YWJsZS50YWJsZS1ub2JvcmRlciB0ZDpm''@;'; put 'put ''aXJzdC1jaGlsZHtib3JkZXItcmlnaHQ6MCBub25lfS50YWJsZS50YWJsZS1ub2JvcmRlciB0aGVhZCB0aDpmaXJzdC1jaGlsZCwudGFibGUudGFibGUtbm9ib3JkZXIgdGhlYWQgdGg6bGFzdC1jaGlsZHtib3JkZXItcmFkaXVzOjB9LnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRoLC50YWJsZS50''@;'; put 'put ''YWJsZS1ub2JvcmRlciB0ZHtib3JkZXItcmFkaXVzOjAhaW1wb3J0YW50fS50YWJsZS50YWJsZS1ub2JvcmRlciB0aDpmaXJzdC1jaGlsZCwudGFibGUudGFibGUtbm9ib3JkZXIgdGQ6Zmlyc3QtY2hpbGR7cGFkZGluZy1sZWZ0OjB9LnRhYmxlLnRhYmxlLWNvbXBhY3QgdGgsLnRhYmxlLnRh''@;'; put 'put ''YmxlLWNvbXBhY3QgdGR7cGFkZGluZy10b3A6LjNyZW07cGFkZGluZy1ib3R0b206LjI1cmVtfS50YWJsZS50YWJsZS1jb21wYWN0LnRhYmxlLW5vYm9yZGVyIHRoLC50YWJsZS50YWJsZS1jb21wYWN0LnRhYmxlLW5vYm9yZGVyIHRke3BhZGRpbmctdG9wOi4zNXJlbTtwYWRkaW5nLWJvdHRv''@;'; put 'put ''bTouM3JlbX06cm9vdHstLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwMCk7LS1jbHItdG9vbHRpcC1ib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzKTstLWNsci10b29sdGlwLWNvbG9yOnZhcigtLWNsci1j''@;'; put 'put ''b2xvci1uZXV0cmFsLTApOy0tY2xyLXRvb2x0aXAtZm9udC13ZWlnaHQ6dmFyKC0tY2xyLXAzLWZvbnQtd2VpZ2h0KX0udG9vbHRpcHtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmxlZnQ7b3ZlcmZsb3c6dmlzaWJsZX0udG9vbHRpcD4udG9vbHRp''@;'; put 'put ''cC1jb250ZW50e3Zpc2liaWxpdHk6aGlkZGVuO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjNzIGxpbmVhcjt3aGl0ZS1zcGFjZTpub3JtYWw7ei1pbmRleDoxMDUwfS50b29sdGlwOmhvdmVyPi50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXA6Zm9jdXM+LnRvb2x0aXAtY29udGVudHt2''@;'; put 'put ''aXNpYmlsaXR5OnZpc2libGU7b3BhY2l0eToxfS50b29sdGlwOmhvdmVyPi50b29sdGlwLWNvbnRlbnQ6ZW1wdHksLnRvb2x0aXA6Zm9jdXM+LnRvb2x0aXAtY29udGVudDplbXB0eXt2aXNpYmlsaXR5OmhpZGRlbjtvcGFjaXR5OjB9LnRvb2x0aXA6Zm9jdXN7b3V0bGluZTowfS50b29sdGlw''@;'; put 'put ''OmZvY3VzPjpmaXJzdC1jaGlsZHtvdXRsaW5lLW9mZnNldDouMDVyZW07b3V0bGluZS13aWR0aDouMDVyZW07b3V0bGluZS1jb2xvcjojM2I5OWZjO291dGxpbmUtc3R5bGU6c29saWR9LnRvb2x0aXA+LnRvb2x0aXAtY29udGVudCwudG9vbHRpcC50b29sdGlwLXRvcC1yaWdodD4udG9vbHRp''@;'; put 'put ''cC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC10b3AtcmlnaHR7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1jb2xvciwgd2hpdGUpO2ZvbnQtc2l6ZTouNjVyZW07Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci10b29sdGlw''@;'; put 'put ''LWZvbnQtd2VpZ2h0LCA0MDApO2xldHRlci1zcGFjaW5nOm5vcm1hbDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCBibGFjayk7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1j''@;'; put 'put ''bHItdG9vbHRpcC1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2xpbmUtaGVpZ2h0Oi45cmVtO21hcmdpbjowO3BhZGRpbmc6LjQ1cmVtIC42cmVtO3dpZHRoOjEycmVtO3Bvc2l0aW9uOmFic29sdXRlO3RvcDphdXRvO2JvdHRvbToxMDAlO2xlZnQ6NTAlO3JpZ2h0OmF1dG87Ym9yZGVyLWJvdHRv''@;'; put 'put ''bS1sZWZ0LXJhZGl1czowO21hcmdpbi1ib3R0b206LjhyZW19LnRvb2x0aXA+LnRvb2x0aXAtY29udGVudDpiZWZvcmUsLnRvb2x0aXAudG9vbHRpcC10b3AtcmlnaHQ+LnRvb2x0aXAtY29udGVudDpiZWZvcmUsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLXRvcC1yaWdodDpi''@;'; put 'put ''ZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOi0uNDJyZW07bGVmdDowO3RvcDphdXRvO3JpZ2h0OmF1dG87Y29udGVudDoiIjtib3JkZXItbGVmdDouM3JlbSBzb2xpZCAjMDAwO2JvcmRlci1sZWZ0LWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRl''@;'; put 'put ''ci10b3A6LjI1cmVtIHNvbGlkICMwMDA7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItcmlnaHQ6LjNyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTouMjVyZW0gc29saWQgdHJhbnNwYXJlbnR9LnRvb2x0aXAudG9v''@;'; put 'put ''bHRpcC10b3AtbGVmdD4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC10b3AtbGVmdHtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci10b29sdGlwLWNvbG9yLCB3aGl0ZSk7Zm9udC1zaXplOi42NXJlbTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWln''@;'; put 'put ''aHQ6dmFyKC0tY2xyLXRvb2x0aXAtZm9udC13ZWlnaHQsIDQwMCk7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IsIGJsYWNrKTtib3JkZXItcmFkaXVzOi4xNXJlbTti''@;'; put 'put ''b3JkZXItcmFkaXVzOnZhcigtLWNsci10b29sdGlwLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7bGluZS1oZWlnaHQ6LjlyZW07bWFyZ2luOjA7cGFkZGluZzouNDVyZW0gLjZyZW07d2lkdGg6MTJyZW07cG9zaXRpb246YWJzb2x1dGU7dG9wOmF1dG87Ym90dG9tOjEwMCU7cmlnaHQ6NTAlO2xl''@;'; put 'put ''ZnQ6YXV0bztib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO21hcmdpbi1ib3R0b206LjhyZW19LnRvb2x0aXAudG9vbHRpcC10b3AtbGVmdD4udG9vbHRpcC1jb250ZW50OmJlZm9yZSwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtdG9wLWxlZnQ6YmVmb3Jle3Bvc2l0aW9u''@;'; put 'put ''OmFic29sdXRlO2JvdHRvbTotLjQycmVtO3JpZ2h0OjA7dG9wOmF1dG87bGVmdDphdXRvO2NvbnRlbnQ6IiI7Ym9yZGVyLXJpZ2h0Oi4zcmVtIHNvbGlkICMwMDA7Ym9yZGVyLXJpZ2h0LWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci10b3A6LjI1cmVt''@;'; put 'put ''IHNvbGlkICMwMDA7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItbGVmdDouM3JlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOi4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudH0udG9vbHRpcC50b29sdGlwLWJvdHRvbS1y''@;'; put 'put ''aWdodD4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1ib3R0b20tcmlnaHR7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1jb2xvciwgd2hpdGUpO2ZvbnQtc2l6ZTouNjVyZW07Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtd2VpZ2h0OnZh''@;'; put 'put ''cigtLWNsci10b29sdGlwLWZvbnQtd2VpZ2h0LCA0MDApO2xldHRlci1zcGFjaW5nOm5vcm1hbDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCBibGFjayk7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVy''@;'; put 'put ''LXJhZGl1czp2YXIoLS1jbHItdG9vbHRpcC1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2xpbmUtaGVpZ2h0Oi45cmVtO21hcmdpbjowO3BhZGRpbmc6LjQ1cmVtIC42cmVtO3dpZHRoOjEycmVtO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTphdXRvO3RvcDoxMDAlO2xlZnQ6NTAlO3JpZ2h0OmF1''@;'; put 'put ''dG87Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO21hcmdpbi10b3A6LjhyZW19LnRvb2x0aXAudG9vbHRpcC1ib3R0b20tcmlnaHQ+LnRvb2x0aXAtY29udGVudDpiZWZvcmUsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWJvdHRvbS1yaWdodDpiZWZvcmV7cG9zaXRpb246YWJz''@;'; put 'put ''b2x1dGU7dG9wOi0uNDJyZW07bGVmdDowO2JvdHRvbTphdXRvO3JpZ2h0OmF1dG87Y29udGVudDoiIjtib3JkZXItbGVmdDouM3JlbSBzb2xpZCAjMDAwO2JvcmRlci1sZWZ0LWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1ib3R0b206LjI1cmVtIHNv''@;'; put 'put ''bGlkICMwMDA7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItcmlnaHQ6LjNyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDouMjVyZW0gc29saWQgdHJhbnNwYXJlbnR9LnRvb2x0aXAudG9vbHRpcC1ib3R0b20tbGVm''@;'; put 'put ''dD4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1ib3R0b20tbGVmdHtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci10b29sdGlwLWNvbG9yLCB3aGl0ZSk7Zm9udC1zaXplOi42NXJlbTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0t''@;'; put 'put ''Y2xyLXRvb2x0aXAtZm9udC13ZWlnaHQsIDQwMCk7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IsIGJsYWNrKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFk''@;'; put 'put ''aXVzOnZhcigtLWNsci10b29sdGlwLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7bGluZS1oZWlnaHQ6LjlyZW07bWFyZ2luOjA7cGFkZGluZzouNDVyZW0gLjZyZW07d2lkdGg6MTJyZW07cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOmF1dG87dG9wOjEwMCU7cmlnaHQ6NTAlO2xlZnQ6YXV0bzti''@;'; put 'put ''b3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO21hcmdpbi10b3A6LjhyZW19LnRvb2x0aXAudG9vbHRpcC1ib3R0b20tbGVmdD4udG9vbHRpcC1jb250ZW50OmJlZm9yZSwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtYm90dG9tLWxlZnQ6YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRl''@;'; put 'put ''O3RvcDotLjQycmVtO3JpZ2h0OjA7Ym90dG9tOmF1dG87bGVmdDphdXRvO2NvbnRlbnQ6IiI7Ym9yZGVyLXJpZ2h0Oi4zcmVtIHNvbGlkICMwMDA7Ym9yZGVyLXJpZ2h0LWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1ib3R0b206LjI1cmVtIHNvbGlk''@;'; put 'put ''ICMwMDA7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItbGVmdDouM3JlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItdG9wOi4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudH0udG9vbHRpcC50b29sdGlwLXJpZ2h0Pi50b29sdGlw''@;'; put 'put ''LWNvbnRlbnQsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLXJpZ2h0e3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OmF1dG87bGVmdDoxMDAlO3RvcDo1MCU7Ym90dG9tOmF1dG87Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1jb2xvciwgd2hpdGUpO2ZvbnQtc2l6''@;'; put 'put ''ZTouNjVyZW07Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci10b29sdGlwLWZvbnQtd2VpZ2h0LCA0MDApO2xldHRlci1zcGFjaW5nOm5vcm1hbDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNv''@;'; put 'put ''bG9yLCBibGFjayk7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItdG9vbHRpcC1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2xpbmUtaGVpZ2h0Oi45cmVtO21hcmdpbjowO3BhZGRpbmc6LjQ1cmVtIC42cmVtO3dpZHRoOjEycmVtO2JvcmRlci10b3AtbGVmdC1y''@;'; put 'put ''YWRpdXM6MDttYXJnaW4tbGVmdDouOHJlbX0udG9vbHRpcC50b29sdGlwLXJpZ2h0Pi50b29sdGlwLWNvbnRlbnQ6YmVmb3JlLC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1yaWdodDpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDotLjQ1cmVtO2JvdHRvbTph''@;'; put 'put ''dXRvO3JpZ2h0OmF1dG87Y29udGVudDoiIjtib3JkZXItdG9wOi4zcmVtIHNvbGlkICMwMDA7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItcmlnaHQ6LjI1cmVtIHNvbGlkICMwMDA7Ym9yZGVyLXJpZ2h0LWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1ib3R0b206LjNyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQ6LjI1cmVtIHNvbGlkIHRyYW5zcGFyZW50fS50b29sdGlwLnRvb2x0aXAtbGVmdD4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRl''@;'; put 'put ''bnQudG9vbHRpcC1sZWZ0e3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6YXV0bztyaWdodDoxMDAlO3RvcDo1MCU7Ym90dG9tOmF1dG87Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1jb2xvciwgd2hpdGUpO2ZvbnQtc2l6ZTouNjVyZW07Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtd2Vp''@;'; put 'put ''Z2h0OnZhcigtLWNsci10b29sdGlwLWZvbnQtd2VpZ2h0LCA0MDApO2xldHRlci1zcGFjaW5nOm5vcm1hbDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCBibGFjayk7Ym9yZGVyLXJhZGl1czouMTVyZW07''@;'; put 'put ''Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItdG9vbHRpcC1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2xpbmUtaGVpZ2h0Oi45cmVtO21hcmdpbjowO3BhZGRpbmc6LjQ1cmVtIC42cmVtO3dpZHRoOjEycmVtO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7bWFyZ2luLXJpZ2h0Oi44cmVtfS50b29s''@;'; put 'put ''dGlwLnRvb2x0aXAtbGVmdD4udG9vbHRpcC1jb250ZW50OmJlZm9yZSwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtbGVmdDpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6LS40NXJlbTtib3R0b206YXV0bztsZWZ0OmF1dG87Y29udGVudDoiIjtib3JkZXIt''@;'; put 'put ''dG9wOi4zcmVtIHNvbGlkICMwMDA7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItbGVmdDouMjVyZW0gc29saWQgIzAwMDtib3JkZXItbGVmdC1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXIt''@;'; put 'put ''Ym90dG9tOi4zcmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDouMjVyZW0gc29saWQgdHJhbnNwYXJlbnR9LnRvb2x0aXAudG9vbHRpcC14cz4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC14c3t3aWR0aDozLjZyZW19LnRvb2x0aXAu''@;'; put 'put ''dG9vbHRpcC1zbT4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1zbXt3aWR0aDo2cmVtfS50b29sdGlwLnRvb2x0aXAtbWQ+LnRvb2x0aXAtY29udGVudCwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtbWR7d2lkdGg6MTJyZW19LnRv''@;'; put 'put ''b2x0aXAudG9vbHRpcC1sZz4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1sZ3t3aWR0aDoxOHJlbX0udG9vbHRpcD4uYnRuKy50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAudG9vbHRpcC10b3AtcmlnaHQ+LmJ0bisudG9vbHRpcC1jb250ZW50LC50''@;'; put 'put ''b29sdGlwLnRvb2x0aXAtdG9wLWxlZnQ+LmJ0bisudG9vbHRpcC1jb250ZW50e21hcmdpbi1ib3R0b206LjVyZW19LnRvb2x0aXAudG9vbHRpcC1ib3R0b20tcmlnaHQ+LmJ0bisudG9vbHRpcC1jb250ZW50LC50b29sdGlwLnRvb2x0aXAtYm90dG9tLWxlZnQ+LmJ0bisudG9vbHRpcC1jb250''@;'; put 'put ''ZW50e21hcmdpbi10b3A6LjVyZW19LnRvb2x0aXAudG9vbHRpcC1yaWdodD4uYnRuKy50b29sdGlwLWNvbnRlbnR7bWFyZ2luLWxlZnQ6LjJyZW19LnRvb2x0aXA+LmNsci1pY29ue21hcmdpbi1yaWdodDowfS50b29sdGlwPnN2Z3twb2ludGVyLWV2ZW50czpub25lfS50b29sdGlwLXRyaWdn''@;'; put 'put ''ZXI6Zm9jdXMrLnRvb2x0aXAtY29udGVudHt2aXNpYmlsaXR5OnZpc2libGV9OnJvb3R7LS1jbHItZm9ybS1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1jbHItZm9ybXMtbGFiZWwtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwt''@;'; put 'put ''ODAwKTstLWNsci1mb3Jtcy10ZXh0LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTEwMDApOy0tY2xyLWZvcm1zLWludmFsaWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDApOy0tY2xyLWZvcm1zLXZhbGlkLWNvbG9yOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTcwMCk7''@;'; put 'put ''LS1jbHItZm9ybXMtdmFsaWQtdGV4dC1jb2xvcjp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy05MDApOy0tY2xyLWZvcm1zLXN1YnRleHQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci1mb3Jtcy1wbGFjZWhvbGRlci1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLWNvbG9y''@;'; put 'put ''LWNvbnN0cnVjdGlvbi02MDApOy0tY2xyLWZvcm1zLWJvcmRlci1jb2xvcjojNmE3YTgxOy0tY2xyLWZvcm1zLWZvY3VzZWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLWZvcm1zLXN1YnRleHQtZGlzYWJsZWQtY29sb3I6IzhjOGM4YzstLWNsci1mb3Jtcy1ib3Jk''@;'; put 'put ''ZXItZGlzYWJsZWQtY29sb3I6I2IzYjNiMzstLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yOiNiM2IzYjM7LS1jbHItZm9ybXMtbGFiZWwtZGlzYWJsZWQtY29sb3I6IzhjOGM4YzstLWNsci1mb3Jtcy1sYWJlbC1mb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtYm9sZCk7''@;'; put 'put ''LS1jbHItZm9ybXMtYmxvY2stbGFiZWwtZm9udC13ZWlnaHQ6NDAwOy0tY2xyLWZvcm1zLXRleHQtZm9udC13ZWlnaHQ6NDAwOy0tY2xyLWZvcm1zLXRleHRhcmVhLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItZm9ybXMtdGV4dGFyZWEtZm9jdXNl''@;'; put 'put ''ZC1vdXRsaW5lOjAgMCAuMXJlbSAuMXJlbSAjNjljMGUyOy0tY2xyLWZvcm1zLXRleHRhcmVhLWludmFsaWQtZm9jdXNlZC1vdXRsaW5lOjAgMCAuMXJlbSAuMXJlbSAjZmY3NDVjOy0tY2xyLWZvcm1zLXNlbGVjdC1ob3Zlci1iYWNrZ3JvdW5kOnJnYmEoIDIyMiwgMjIyLCAyMjIsIC41ICk7''@;'; put 'put ''LS1jbHItZm9ybXMtc2VsZWN0LWNhcmV0LWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTYwMCk7LS1jbHItZm9ybXMtc2VsZWN0LWNhcmV0LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTUwMCk7LS1jbHItZm9ybXMtc2VsZWN0LW9wdGlvbi1jb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItZm9ybXMtdGV4dC1jb2xvcik7LS1jbHItZm9ybXMtc2VsZWN0LW11bHRpcGxlLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHRhcmVhLWJhY2tncm91bmQtY29sb3IpOy0tY2xyLWZvcm1zLXNlbGVjdC1tdWx0aXBsZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9y''@;'; put 'put ''LW5ldXRyYWwtNDAwKTstLWNsci1mb3Jtcy1zZWxlY3QtbXVsdGlwbGUtb3B0aW9uLWNvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWNvbG9yKTstLWNsci1mb3Jtcy1zZWxlY3QtbXVsdGlwbGUtZXJyb3ItZm9jdXMtY29sb3I6I2ZmNzQ1YzstLWNsci1mb3Jtcy1jaGVja2JveC1sYWJlbC1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItZm9ybXMtbGFiZWwtY29sb3IpOy0tY2xyLWZvcm1zLWNoZWNrYm94LWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLWZvcm1zLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1h''@;'; put 'put ''Y3Rpb24tNjAwKTstLWNsci1mb3Jtcy1jaGVja2JveC1tYXJrLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWZvcm1zLWNoZWNrYm94LWRpc2FibGVkLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm0tZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcik7LS1jbHIt''@;'; put 'put ''Zm9ybXMtY2hlY2tib3gtZGlzYWJsZWQtbWFyay1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1mb3Jtcy1jaGVja2JveC1ib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzKTstLWNsci1mb3Jtcy1jaGVja2JveC1jaGVja2VkLXNoYWRv''@;'; put 'put ''dzppbnNldCAwIDAgMCAuM3JlbSB2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtYmFja2dyb3VuZC1jb2xvcik7LS1jbHItZm9ybXMtcmFkaW8tbGFiZWwtY29sb3I6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWxhYmVsLWNvbG9yKTstLWNsci1mb3Jtcy1yYWRpby1kaXNhYmxlZC1iYWNrZ3Jv''@;'; put 'put ''dW5kLWNvbG9yOnZhcigtLWNsci1mb3JtLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3IpOy0tY2xyLWZvcm1zLXJhZGlvLWRpc2FibGVkLW1hcmstY29sb3I6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWRpc2FibGVkLW1hcmstY29sb3IpOy0tY2xyLWZvcm1zLXJhZGlvLXNlbGVjdGVkLXNo''@;'; put 'put ''YWRvdzp2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtY2hlY2tlZC1zaGFkb3cpOy0tY2xyLWZvcm1zLXJhZGlvLWRpc2FibGVkLXNoYWRvdzp2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtY2hlY2tlZC1zaGFkb3cpOy0tY2xyLWZvcm1zLXJhZGlvLWZvY3VzZWQtc2hhZG93OjAgMCAuMXJlbSAu''@;'; put 'put ''MXJlbSAjNjljMGUyOy0tY2xyLWZvcm1zLXJhbmdlLXByb2dyZXNzLWZpbGwtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTIwMCl9LmNsci1kYXRlLWNvbnRhaW5lciAuY2xyLWlu''@;'; put 'put ''cHV0LXdyYXBwZXJ7bWF4LXdpZHRoOi1tb3otZml0LWNvbnRlbnQ7bWF4LXdpZHRoOmZpdC1jb250ZW50fS5jbHItZm9ybS1jb250cm9se21hcmdpbi10b3A6MS4ycmVtO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uY2xyLWZvcm0t''@;'; put 'put ''Y29udHJvbCBpbnB1dDo6LW1zLXJldmVhbCwuY2xyLWZvcm0tY29udHJvbCBpbnB1dDo6LW1zLWNsZWFye2Rpc3BsYXk6bm9uZX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZHtjb2xvcjojYjNiM2IzO2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yLCAjYjNiM2Iz''@;'; put 'put ''KX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCBsYWJlbCwuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLWNvbnRyb2wtbGFiZWx7Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItZm9ybXMtbGFiZWwtZGlzYWJsZWQtY29sb3IsICM4YzhjOGMpfS5jbHItZm9ybS1jb250cm9s''@;'; put 'put ''LWRpc2FibGVkIC5jbHItaW5wdXQsLmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci10ZXh0YXJlYSwuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLXNlbGVjdHtjb2xvcjojYjNiM2IzO2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yLCAjYjNiM2Iz''@;'; put 'put ''KTtib3JkZXItYm90dG9tLWNvbG9yOiNiM2IzYjM7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtYm9yZGVyLWRpc2FibGVkLWNvbG9yLCAjYjNiM2IzKX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCBpbnB1dFt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvcjojYjNiM2IzO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLWJvcmRlci1kaXNhYmxlZC1jb2xvciwgI2IzYjNiMyl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1zdWJ0ZXh0e2NvbG9yOiM4YzhjOGM7Y29sb3I6dmFyKC0tY2xyLWZvcm1z''@;'; put 'put ''LXN1YnRleHQtZGlzYWJsZWQtY29sb3IsICM4YzhjOGMpfS5jbHItZm9ybS1jb250cm9sLW11bHRpe2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LXdyYXA6d3JhcH0uY2xyLWZvcm0tY29udHJvbC1tdWx0aSAuY2xyLWNvbnRyb2wtbGFiZWx7d2lkdGg6MTAwJX0uY2xyLWNvbnRyb2wtbGFiZWx7''@;'; put 'put ''ZGlzcGxheTpibG9jaztjb2xvcjojNDU0NTQ1O2NvbG9yOnZhcigtLWNsci1mb3Jtcy1sYWJlbC1jb2xvciwgIzQ1NDU0NSk7Zm9udC1zaXplOi42NXJlbTtmb250LXdlaWdodDo2MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvcm1zLWxhYmVsLWZvbnQtd2VpZ2h0LCA2MDApO2xpbmUtaGVp''@;'; put 'put ''Z2h0Oi45cmVtfS5jbHItY29udHJvbC1jb250YWluZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNsci1jb250cm9sLWlubGluZXtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0fS5jbHItY29udHJvbC1pbmxpbmUgLmNsci1jb250cm9sLWxhYmVs''@;'; put 'put ''e2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDouNnJlbTt3aWR0aDphdXRvfS5jbHItc3VidGV4dHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTouNTVyZW07bGluZS1oZWlnaHQ6LjZyZW07Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItZm9ybXMtc3VidGV4dC1jb2xvciwg''@;'; put 'put ''IzhjOGM4Yyk7bWFyZ2luLXRvcDouM3JlbX0uY2xyLXN1YnRleHQtd3JhcHBlcntmbGV4LWJhc2lzOjEwMCU7ZGlzcGxheTpmbGV4fS5jbHItdmFsaWRhdGUtaWNvbntoZWlnaHQ6MS4ycmVtO3dpZHRoOjEuMnJlbTttaW4taGVpZ2h0OjEuMnJlbTttaW4td2lkdGg6MS4ycmVtO2NvbG9yOiNj''@;'; put 'put ''MjFkMDA7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IsICNjMjFkMDApO2Rpc3BsYXk6bm9uZTttYXJnaW4tbGVmdDotMS4ycmVtfS5jbHItc3VjY2VzcyAuY2xyLWlucHV0e2JvcmRlci1ib3R0b20tY29sb3I6IzNjODUwMDtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1mb3Jtcy12YWxpZC1jb2xvciwgIzNjODUwMCl9LmNsci1zdWNjZXNzIC5jbHItdmFsaWRhdGUtaWNvbntkaXNwbGF5OmlubGluZS1ibG9jaztjb2xvcjojM2M4NTAwO2NvbG9yOnZhcigtLWNsci1mb3Jtcy12YWxpZC1jb2xvciwgIzNjODUwMCk7bWFyZ2luLWxlZnQ6LS4ycmVtfS5jbHIt''@;'; put 'put ''c3VjY2VzcyAuY2xyLXN1YnRleHR7Y29sb3I6IzI1NTIwMDtjb2xvcjp2YXIoLS1jbHItZm9ybXMtdmFsaWQtdGV4dC1jb2xvciwgIzI1NTIwMCl9LmNsci1lcnJvciAuY2xyLXZhbGlkYXRlLWljb257bWFyZ2luLWxlZnQ6LS4ycmVtO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jbHItZXJyb3Ig''@;'; put 'put ''LmNsci1zdWJ0ZXh0e2NvbG9yOiNjMjFkMDA7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IsICNjMjFkMDApfS5jbHItZm9ybS1ob3Jpem9udGFsIC5jbHItZm9ybS1jb250cm9sPi5jbHItY29udHJvbC1sYWJlbCwuY2xyLWZvcm0taG9yaXpvbnRhbCAuY2xyLWZvcm0tY29u''@;'; put 'put ''dHJvbD4uY2xyLWZvcm0tY29udHJvbC5jbHItZm9ybS1jb250cm9sLW11bHRpIC5jbHItY29udHJvbC1sYWJlbHt3aWR0aDo5LjZyZW07ZmxleC1zaHJpbms6MDttYXJnaW4tdG9wOi4xNXJlbX0uY2xyLWZvcm0taG9yaXpvbnRhbC5jbHItcm93IC5jbHItY29udHJvbC1sYWJlbHt3aWR0aDph''@;'; put 'put ''dXRvfS5jbHItZm9ybS1ob3Jpem9udGFsIC5jbHItZm9ybS1jb250cm9se2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3d9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1mb3JtLWNvbnRyb2w+LmNsci1jb250cm9sLWxhYmVse3dpZHRoOjkuNnJlbTttaW4td2lkdGg6OS42cmVtfS5jbHIt''@;'; put 'put ''Zm9ybS1jb21wYWN0IC5jbHItZm9ybS1jb250cm9sLmNsci1yb3c+LmNsci1jb250cm9sLWxhYmVse3dpZHRoOmF1dG87bWluLXdpZHRoOmF1dG99LmNsci1mb3JtLWNvbXBhY3QgLmNsci1jb250cm9sLWxhYmVse21hcmdpbi10b3A6LjE1cmVtfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZm9y''@;'; put 'put ''bS1jb250cm9se2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7bWFyZ2luLXRvcDouNnJlbX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWNvbnRyb2wtY29udGFpbmVye2Rpc3BsYXk6ZmxleH0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLXN1YnRleHR7ZGlzcGxheTppbmxpbmUtYmxvY2s7''@;'; put 'put ''bWFyZ2luLXRvcDouM3JlbTttYXJnaW4tbGVmdDoxLjJyZW19LmNsci1mb3JtLWNvbXBhY3QgLmNsci1lcnJvciAuY2xyLXN1YnRleHQsLmNsci1mb3JtLWNvbXBhY3QgLmNsci1zdWNjZXNzIC5jbHItc3VidGV4dCwuY2xyLWZvcm0tY29tcGFjdCAuY2xyLWVycm9yIC5jbHItdmFsaWRhdGUt''@;'; put 'put ''aWNvbiwuY2xyLWZvcm0tY29tcGFjdCAuY2xyLXN1Y2Nlc3MgLmNsci12YWxpZGF0ZS1pY29ue21hcmdpbi1sZWZ0OjB9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1zdWJ0ZXh0LXdyYXBwZXJ7ZmxleC1iYXNpczphdXRvO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jbHItZm9ybSwuY2xyLWZvcm0t''@;'; put 'put ''Z3JvdXB7cGFkZGluZzouM3JlbX0uY2xyLWNoZWNrYm94LXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9LmNsci1jaGVja2JveC13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHtmb250LXdlaWdodDo0MDA7ZGlzcGxheTpibG9ja30uY2xyLWNoZWNrYm94LXdyYXBwZXJ+LmNsci12YWxpZGF0''@;'; put 'put ''ZS1pY29ue21hcmdpbi1sZWZ0OjB9LmNsci1jaGVja2JveC13cmFwcGVyfi5jbHItc3VidGV4dHtkaXNwbGF5OmlubGluZS1ibG9ja30uY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF17cG9zaXRpb246YWJzb2x1dGU7b3BhY2l0eTowO3RvcDouMjVyZW07bGVmdDow''@;'; put 'put ''O2hlaWdodDouOHJlbTt3aWR0aDouOHJlbX0uY2xyLWNoZWNrYm94LXdyYXBwZXIgbGFiZWx7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWluLWhlaWdodDoxLjJyZW07cGFkZGluZy1sZWZ0OjEuMXJlbTttYXJnaW4tdG9wOjA7Y3Vyc29yOnBvaW50ZXI7bGluZS1o''@;'; put 'put ''ZWlnaHQ6MS4ycmVtO2NvbG9yOiM0NTQ1NDU7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWxhYmVsLWNvbG9yLCAjNDU0NTQ1KX0uY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRlO3RvcDouMnJlbTts''@;'; put 'put ''ZWZ0OjA7Y29udGVudDoiIjtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6LjhyZW07d2lkdGg6LjhyZW07Ym9yZGVyOi4wNXJlbSBzb2xpZDtib3JkZXItY29sb3I6IzZhN2E4MTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLWJvcmRlci1jb2xvciwgIzZhN2E4MSk7Ym9yZGVyLXJh''@;'; put 'put ''ZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtYm9yZGVyLXJhZGl1cywgLjE1cmVtKX0uY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Zm9jdXMrbGFiZWw6YmVmb3Jle291dGxpbmU6SGlnaGxpZ2h0IHNvbGlkIC4xcmVt''@;'; put 'put ''O291dGxpbmU6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yIHNvbGlkIC4xcmVtO291dGxpbmUtb2Zmc2V0Oi4wNXJlbX0uY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7Y29udGVudDoiIjtkaXNwbGF5Om5vbmU7''@;'; put 'put ''aGVpZ2h0Oi4yNXJlbTt3aWR0aDouNHJlbTtib3JkZXItbGVmdDouMXJlbSBzb2xpZDtib3JkZXItYm90dG9tOi4xcmVtIHNvbGlkO2JvcmRlci1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtbWFyay1jb2xvciwgd2hpdGUpO3RvcDouMnJlbTtsZWZ0''@;'; put 'put ''Oi4ycmVtO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC4ycmVtKSByb3RhdGUoLTQ1ZGVnKX0uY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbDpiZWZvcmV7YmFja2dyb3VuZDojMDA3MmEzO2JhY2tncm91bmQ6dmFyKC0tY2xyLWZvcm1zLWNoZWNr''@;'; put 'put ''Ym94LWJhY2tncm91bmQtY29sb3IsICMwMDcyYTMpO2JvcmRlcjowfS5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsOmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94''@;'; put 'put ''XS5jbHItaW5kZXRlcm1pbmF0ZStsYWJlbDpiZWZvcmUsLmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmluZGV0ZXJtaW5hdGUrbGFiZWw6YmVmb3Jle2JvcmRlcjouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiMwMDcyYTM7Ym9yZGVyLWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1mb3Jtcy1jaGVja2JveC1pbmRldGVybWluYXRlLWJvcmRlci1jb2xvciwgIzAwNzJhMyl9LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdLmNsci1pbmRldGVybWluYXRlK2xhYmVsOmFmdGVyLC5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNr''@;'; put 'put ''Ym94XTppbmRldGVybWluYXRlK2xhYmVsOmFmdGVye2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDA3MmEzO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtYm9yZGVyLWNvbG9yLCAjMDA3MmEzKTtkaXNwbGF5''@;'; put 'put ''OmlubGluZS1ibG9jazt0cmFuc2Zvcm06dHJhbnNsYXRlWSguMnJlbSl9LmNsci1jaGVja2JveC13cmFwcGVyLmNsci1jaGVja2JveC1pbmxpbmV7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydH0uY2xyLWNoZWNrYm94LXdyYXBwZXIuY2xyLWNo''@;'; put 'put ''ZWNrYm94LWlubGluZSAuY2xyLWNvbnRyb2wtbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXJpZ2h0Oi42cmVtO3dpZHRoOmF1dG99LmNsci1lcnJvciAuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YmVmb3Jle2JvcmRlci1jb2xvcjoj''@;'; put 'put ''YzIxZDAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvciwgI2MyMWQwMCl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1jaGVja2JveC13cmFwcGVyIGxhYmVse2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xy''@;'; put 'put ''LWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YmVmb3JlLC5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyOjB9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQr''@;'; put 'put ''bGFiZWw6YWZ0ZXJ7Ym9yZGVyLWxlZnQ6LjFyZW0gc29saWQ7Ym9yZGVyLWJvdHRvbTouMXJlbSBzb2xpZDtib3JkZXItbGVmdC1jb2xvcjojMDAwO2JvcmRlci1sZWZ0LWNvbG9yOnZhcigtLWNsci1mb3Jtcy1jaGVja2JveC1kaXNhYmxlZC1tYXJrLWNvbG9yLCBibGFjayk7Ym9yZGVyLWJv''@;'; put 'put ''dHRvbS1jb2xvcjojMDAwO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWRpc2FibGVkLW1hcmstY29sb3IsIGJsYWNrKX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tl''@;'; put 'put ''ZC5jbHItaW5kZXRlcm1pbmF0ZStsYWJlbDphZnRlciwuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDppbmRldGVybWluYXRlK2xhYmVsOmFmdGVye2JvcmRlci1sZWZ0Om5vbmV9LmNsci1mb3JtLWNv''@;'; put 'put ''bXBhY3QgLmNsci1jaGVja2JveC13cmFwcGVye21heC13aWR0aDoxMDAlO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDthbGlnbi1jb250ZW50OmZsZXgtc3RhcnQ7aGVpZ2h0OjEuMnJlbX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWNoZWNrYm94LXdyYXBwZXJ+LmNsci1zdWJ0ZXh0e21h''@;'; put 'put ''cmdpbi1sZWZ0Oi4zcmVtfS5jbHItZm9ybS1jb21wYWN0IC5jbHItY2hlY2tib3gtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXJpZ2h0Oi42cmVtO3dpZHRoOmF1dG99LmNsci1mb3JtLWNvbXBhY3QgLmNsci1jaGVja2JveC13cmFwcGVy''@;'; put 'put ''IC5jbHItY29udHJvbC1sYWJlbHttYXJnaW4tdG9wOjB9LmNsci1maWxlLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLXRvcDouM3JlbX0uY2xyLWZpbGUtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7Zm9udC13ZWlnaHQ6NDAwO2Rpc3BsYXk6YmxvY2t9LmNsci1maWxlLXdy''@;'; put 'put ''YXBwZXJ+LmNsci12YWxpZGF0ZS1pY29ue21hcmdpbi1sZWZ0OjB9LmNsci1maWxlLXdyYXBwZXJ+LmNsci1zdWJ0ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jbHItZmlsZS13cmFwcGVyIC5idG57bWFyZ2luOjB9LmNsci1maWxle2hlaWdodDowO3dpZHRoOjA7b3BhY2l0eTowO292ZXJm''@;'; put 'put ''bG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Oi0xfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZmlsZS13cmFwcGVye21heC13aWR0aDoxMDAlO21hcmdpbi10b3A6MH0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWZpbGUtd3JhcHBlcn4uY2xyLXN1YnRleHR7bWFyZ2luLWxlZnQ6''@;'; put 'put ''LjNyZW19LmNsci1mb3JtLWNvbXBhY3QgLmNsci1maWxlLXdyYXBwZXJ+LmNsci12YWxpZGF0ZS1pY29ue2xpbmUtaGVpZ2h0OjEuMnJlbX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWZpbGUtd3JhcHBlcn4uY2xyLXN1YnRleHR7bGluZS1oZWlnaHQ6MS4ycmVtO21hcmdpbi10b3A6MH0uY2xy''@;'; put 'put ''LWZvcm0tY29tcGFjdCAuY2xyLWZpbGUtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7bWFyZ2luLXRvcDowO2xpbmUtaGVpZ2h0OjEuMDhyZW19LmNsci1mb3JtLWNvbXBhY3QgLmNsci1maWxlLXdyYXBwZXIgLmJ0bntoZWlnaHQ6MS4ycmVtfS5jbHItaW5wdXQtd3JhcHBlcnt3aGl0ZS1z''@;'; put 'put ''cGFjZTpub3dyYXA7bWF4LWhlaWdodDoxLjJyZW19LmNsci1pbnB1dHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1''@;'; put 'put ''czowO2JveC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kOjAgMDtoZWlnaHQ6MS4ycmVtO2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQtY29sb3IsIGJsYWNrKTtib3JkZXItYm90dG9tOi4wNXJlbSBzb2xpZDtib3JkZXItYm90dG9tLWNvbG9yOiM2YTdhODE7Ym9yZGVyLWJv''@;'; put 'put ''dHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtYm9yZGVyLWNvbG9yLCAjNmE3YTgxKTtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjAgLjNyZW07bWF4LWhlaWdodDoxLjJyZW07Zm9udC1zaXplOi42NXJlbX0uY2xyLWlucHV0OmZvY3Vze291dGxpbmU6MH0uY2xyLWlucHV0W3JlYWRv''@;'; put 'put ''bmx5XXtib3JkZXI6MH0uY2xyLWlucHV0Om5vdChbcmVhZG9ubHldKXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sdHJhbnNwYXJlbnQgOTUlLHZhcigtLWNsci1mb3Jtcy1mb2N1c2VkLWNvbG9yLCAjMDA3MmEzKSA5NSUpIG5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6''@;'; put 'put ''MCAxMDAlO3RyYW5zaXRpb246YmFja2dyb3VuZC1zaXplIC4ycyBlYXNlfS5jbHItaW5wdXQ6bm90KFtyZWFkb25seV0pOmZvY3VzLC5jbHItaW5wdXQ6bm90KFtyZWFkb25seV0pLmNsci1mb2N1c3tib3JkZXItYm90dG9tLWNvbG9yOiMwMDcyYTM7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvciwgIzAwNzJhMyk7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJX0uY2xyLWlucHV0OmRpc2FibGVke2NvbG9yOiNiM2IzYjM7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQtZGlzYWJsZWQtY29sb3IsICNiM2IzYjMpO2N1cnNvcjpub3QtYWxsb3dl''@;'; put 'put ''ZH0uY2xyLWVycm9yIC5jbHItaW5wdXQ6bm90KFtyZWFkb25seV0pe2JvcmRlci1ib3R0b20tY29sb3I6I2MyMWQwMDtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yLCAjYzIxZDAwKTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20s''@;'; put 'put ''dHJhbnNwYXJlbnQgOTUlLHZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yLCAjYzIxZDAwKSA5NSUpIG5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6MCAxMDAlO3RyYW5zaXRpb246YmFja2dyb3VuZC1zaXplIC4ycyBlYXNlfS5jbHItZXJyb3IgLmNsci1pbnB1dDpub3QoW3JlYWRvbmx5''@;'; put 'put ''XSk6Zm9jdXMsLmNsci1lcnJvciAuY2xyLWlucHV0Om5vdChbcmVhZG9ubHldKS5jbHItZm9jdXN7Ym9yZGVyLWJvdHRvbS1jb2xvcjojYzIxZDAwO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IsICNjMjFkMDApO2JhY2tncm91bmQtc2l6ZToxMDAl''@;'; put 'put ''IDEwMCV9LmNsci1mb3JtLWNvbnRyb2wucm93IC5jbHItaW5wdXQtd3JhcHBlcnttYXgtd2lkdGg6Y2FsYygxMDAlIC0gMS4ycmVtKX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWlucHV0e21heC13aWR0aDoxMDAlfS5jbHItZm9ybS1jb21wYWN0IC5jbHItaW5wdXR+LmNsci1zdWJ0ZXh0e21h''@;'; put 'put ''cmdpbi1sZWZ0Oi4zcmVtfS5jbHItZm9ybS1jb250cm9sLXJlYWRvbmx5IC5jbHItaW5wdXR7Ym9yZGVyOjB9LmNsci1mb3JtLWNvbnRyb2wtbXVsdGkgLmNsci1pbnB1dHttYXgtd2lkdGg6Y2FsYygxMDAlICsgMS4ycmVtKX06OnBsYWNlaG9sZGVye2NvbG9yOiM0ZjYxNjk7Y29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWZvcm1zLXBsYWNlaG9sZGVyLWNvbG9yLCAjNGY2MTY5KX0uY2xyLWlucHV0LWdyb3Vwe2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQtY29sb3IsIGJsYWNrKTtib3JkZXItYm90dG9tOi4wNXJlbSBzb2xpZDtib3JkZXItYm90dG9tLWNvbG9yOiM2YTdhODE7''@;'; put 'put ''Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtYm9yZGVyLWNvbG9yLCAjNmE3YTgxKTtkaXNwbGF5OmlubGluZS1ibG9jaztiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sdHJhbnNwYXJlbnQgOTUlLHZhcigtLWNsci1mb3Jtcy1mb2N1c2VkLWNvbG9yLCAj''@;'; put 'put ''MDA3MmEzKSA5NSUpIG5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6MCAxMDAlO3RyYW5zaXRpb246YmFja2dyb3VuZC1zaXplIC4ycyBlYXNlO21heC13aWR0aDoxMDAlO2hlaWdodDoxLjJyZW19LmNsci1pbnB1dC1ncm91cDpmb2N1cywuY2xyLWlucHV0LWdyb3VwLmNsci1mb2N1c3tib3Jk''@;'; put 'put ''ZXItYm90dG9tLWNvbG9yOiMwMDcyYTM7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvciwgIzAwNzJhMyk7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJX0uY2xyLWlucHV0LWdyb3VwLmNsci1mb2N1c3t3aWR0aDphdXRvfS5jbHItaW5wdXQtZ3JvdXAg''@;'; put 'put ''LmNsci1pbnB1dHtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDttYXJnaW4tcmlnaHQ6MDttYXgtd2lkdGg6MTAwJX0uY2xyLWlucHV0LWdyb3VwIC5jbHItaW5wdXQ6bm90KFtyZWFkb25seV0pOmZvY3Vze2JhY2tncm91bmQtc2l6ZTowO2JvcmRlcjowfS5jbHItaW5wdXQtZ3JvdXAgc2VsZWN0''@;'; put 'put ''LC5jbHItaW5wdXQtZ3JvdXAgLmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3QsLmNsci1pbnB1dC1ncm91cCAuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0e2JvcmRlcjowfS5jbHItaW5wdXQtZ3JvdXAgLmNsci1pbnB1dC1ncm91cC1hZGRvbntjb2xvcjojOGM4YzhjO2NvbG9yOnZh''@;'; put 'put ''cigtLWNsci1mb3Jtcy1zdWJ0ZXh0LWNvbG9yLCAjOGM4YzhjKX0uY2xyLWlucHV0LWdyb3VwIC5jbHItaW5wdXQtZ3JvdXAtYWRkb246Zmlyc3QtY2hpbGR7cGFkZGluZzowIDAgMCAuNDVyZW19LmNsci1pbnB1dC1ncm91cCAuY2xyLWlucHV0LWdyb3VwLWFkZG9uOmxhc3QtY2hpbGR7cGFk''@;'; put 'put ''ZGluZzowIC40NXJlbSAwIDB9LmNsci1pbnB1dC1ncm91cCAuY2xyLWlucHV0LWdyb3VwLWljb24tYWN0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6''@;'; put 'put ''MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwO2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLWZvY3VzZWQtY29sb3IsICMwMDcyYTMpO3BhZGRpbmc6MCAuNDVyZW19YnV0dG9uLmNsci1pbnB1dC1ncm91cCAuY2xyLWlu''@;'; put 'put ''cHV0LWdyb3VwLWljb24tYWN0aW9ue2N1cnNvcjpwb2ludGVyfS5jbHItaW5wdXQtZ3JvdXAgLmNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvbiBjZHMtaWNvbiwuY2xyLWlucHV0LWdyb3VwIC5jbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb24gY2xyLWljb257aGVpZ2h0Oi45cmVtO3dpZHRo''@;'; put 'put ''Oi45cmVtO3RyYW5zZm9ybTp0cmFuc2xhdGUoLS4wNXJlbSwtLjA1cmVtKX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLWlucHV0LWdyb3VwLWljb24tYWN0aW9ue2NvbG9yOiNiM2IzYjM7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQtZGlzYWJsZWQtY29sb3IsICNiM2IzYjMp''@;'; put 'put ''O2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWVycm9yIC5jbHItaW5wdXQtZ3JvdXB7Ym9yZGVyLWJvdHRvbS1jb2xvcjojYzIxZDAwO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IsICNjMjFkMDApO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRv''@;'; put 'put ''IGJvdHRvbSx0cmFuc3BhcmVudCA5NSUsdmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IsICNjMjFkMDApIDk1JSkgbm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTowIDEwMCU7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXNpemUgLjJzIGVhc2V9LmNsci1lcnJvciAuY2xyLWlucHV0LWdyb3Vw''@;'; put 'put ''OmZvY3VzLC5jbHItZXJyb3IgLmNsci1pbnB1dC1ncm91cC5jbHItZm9jdXN7Ym9yZGVyLWJvdHRvbS1jb2xvcjojYzIxZDAwO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IsICNjMjFkMDApO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCV9LmNsci1m''@;'; put 'put ''b3JtLWhvcml6b250YWwgLmNsci1pbnB1dC1ncm91cHttYXgtd2lkdGg6MTAwJTtwYWRkaW5nLXJpZ2h0OjB9LmNsci1yYWRpby13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO2xpbmUtaGVpZ2h0OjEuMnJlbX0uY2xyLXJhZGlvLXdyYXBwZXIgLmNsci1jb250cm9sLWxhYmVse2ZvbnQtd2Vp''@;'; put 'put ''Z2h0OjQwMDtkaXNwbGF5OmJsb2NrfS5jbHItcmFkaW8td3JhcHBlcn4uY2xyLXZhbGlkYXRlLWljb257bWFyZ2luLWxlZnQ6MH0uY2xyLXJhZGlvLXdyYXBwZXJ+LmNsci1zdWJ0ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jbHItcmFkaW8td3JhcHBlciBpbnB1dFt0eXBlPXJhZGlvXXtw''@;'; put 'put ''b3NpdGlvbjphYnNvbHV0ZTtvcGFjaXR5OjA7dG9wOi4yNXJlbTtsZWZ0OjA7aGVpZ2h0Oi44cmVtO3dpZHRoOi44cmVtfS5jbHItcmFkaW8td3JhcHBlciBsYWJlbHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jazttaW4taGVpZ2h0OjEuMnJlbTtwYWRkaW5nLWxlZnQ6''@;'; put 'put ''MS4xcmVtO21hcmdpbi10b3A6MDtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDoxLjJyZW07Y29sb3I6IzQ1NDU0NTtjb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFkaW8tbGFiZWwtY29sb3IsICM0NTQ1NDUpfS5jbHItcmFkaW8td3JhcHBlciBsYWJlbDplbXB0eXtwYWRkaW5nLWxlZnQ6MH0u''@;'; put 'put ''Y2xyLXJhZGlvLXdyYXBwZXIgaW5wdXRbdHlwZT1yYWRpb10rbGFiZWw6YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRlO3RvcDouMnJlbTtsZWZ0OjA7Y29udGVudDoiIjtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6LjhyZW07d2lkdGg6LjhyZW07Ym9yZGVyOi4wNXJlbSBzb2xpZDtib3Jk''@;'; put 'put ''ZXItY29sb3I6IzZhN2E4MTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLWJvcmRlci1jb2xvciwgIzZhN2E4MSk7Ym9yZGVyLXJhZGl1czo1MCV9LmNsci1yYWRpby13cmFwcGVyIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw6YmVmb3Jle2JveC1zaGFkb3c6aW5zZXQgMCAw''@;'; put 'put ''IDAgLjNyZW0gIzAwNzJhMztib3gtc2hhZG93OnZhcigtLWNsci1mb3Jtcy1yYWRpby1zZWxlY3RlZC1zaGFkb3csIGluc2V0IDAgMCAwIC4zcmVtICMwMDcyYTMpO2JvcmRlcjowfS5jbHItcmFkaW8td3JhcHBlciBpbnB1dFt0eXBlPXJhZGlvXTpmb2N1cytsYWJlbDpiZWZvcmV7b3V0bGlu''@;'; put 'put ''ZTpIaWdobGlnaHQgc29saWQgLjFyZW07b3V0bGluZTotd2Via2l0LWZvY3VzLXJpbmctY29sb3Igc29saWQgLjFyZW07b3V0bGluZS1vZmZzZXQ6LjA1cmVtfS5jbHItcmFkaW8td3JhcHBlciBpbnB1dFt0eXBlPXJhZGlvXTpmb2N1czpjaGVja2VkK2xhYmVsOmJlZm9yZXtvdXRsaW5lOkhp''@;'; put 'put ''Z2hsaWdodCBzb2xpZCAuMXJlbTtvdXRsaW5lOi13ZWJraXQtZm9jdXMtcmluZy1jb2xvciBzb2xpZCAuMXJlbTtvdXRsaW5lLW9mZnNldDouMDVyZW19LmNsci1yYWRpby13cmFwcGVyIGlucHV0W3R5cGU9cmFkaW9dOmRpc2FibGVkK2xhYmVsOmJlZm9yZXtib3JkZXI6MDtib3gtc2hhZG93''@;'; put 'put ''Omluc2V0IDAgMCAwIC42cmVtICNlOGU4ZTg7Ym94LXNoYWRvdzp2YXIoLS1pbnNldCAwIDAgMCAuNnJlbSAjZThlOGU4LCBpbnNldCAwIDAgMCAuNnJlbSAjZThlOGU4KX0uY2xyLXJhZGlvLXdyYXBwZXIgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpkaXNhYmxlZCtsYWJlbDpiZWZvcmV7''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvcjojNjY2O2JhY2tncm91bmQtY29sb3I6dmFyKC0tIzY2NjY2NiwgIzY2NjY2Nik7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAuM3JlbSAjZThlOGU4O2JveC1zaGFkb3c6dmFyKC0taW5zZXQgMCAwIDAgLjNyZW0gI2U4ZThlOCwgaW5zZXQgMCAwIDAgLjNyZW0gI2U4''@;'; put 'put ''ZThlOCl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1yYWRpby13cmFwcGVyIGxhYmVse2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWVycm9yIC5jbHItcmFkaW8td3JhcHBlciBpbnB1dFt0eXBlPXJhZGlvXStsYWJlbDpiZWZvcmV7Ym9yZGVyLWNvbG9yOiNjMjFkMDA7Ym9yZGVy''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yLCAjYzIxZDAwKX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWVycm9yIC5jbHItc3VidGV4dHttYXJnaW4tbGVmdDowfS5jbHItZm9ybS1jb21wYWN0IC5jbHItcmFkaW8td3JhcHBlcnttYXgtd2lkdGg6MTAwJTtkaXNwbGF5OmZs''@;'; put 'put ''ZXg7ZmxleC13cmFwOndyYXA7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0O2hlaWdodDoxLjJyZW19LmNsci1mb3JtLWNvbXBhY3QgLmNsci1yYWRpby13cmFwcGVyfi5jbHItc3VidGV4dHttYXJnaW4tbGVmdDouM3JlbX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLXJhZGlvLXdyYXBwZXIgLmNs''@;'; put 'put ''ci1jb250cm9sLWxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDouNnJlbTt3aWR0aDphdXRvfS5jbHItZm9ybS1jb21wYWN0IC5jbHItcmFkaW8td3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7bWFyZ2luLXRvcDowfS5jbHItc2VsZWN0LXdyYXBwZXIsLmNsci1tdWx0''@;'; put 'put ''aXNlbGVjdC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO3doaXRlLXNwYWNlOm5vd3JhcH0uY2xyLXNlbGVjdC13cmFwcGVyIHNlbGVjdCwuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0ey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBl''@;'; put 'put ''YXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwO2hlaWdodDoxLjJyZW07Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1jb2xvciwg''@;'; put 'put ''YmxhY2spO2JvcmRlci1ib3R0b206LjA1cmVtIHNvbGlkO2JvcmRlci1ib3R0b20tY29sb3I6IzZhN2E4MTtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1ib3JkZXItY29sb3IsICM2YTdhODEpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRp''@;'; put 'put ''bmc6MCAxLjFyZW0gMCAuM3JlbTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6LjY1cmVtO3otaW5kZXg6Mn0uY2xyLXNlbGVjdC13cmFwcGVyIHNlbGVjdDpmb2N1cywuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0OmZvY3Vze291dGxpbmU6MH0uY2xyLXNlbGVjdC13cmFwcGVyIHNl''@;'; put 'put ''bGVjdDpub3QoW211bHRpcGxlXSksLmNsci1tdWx0aXNlbGVjdC13cmFwcGVyIHNlbGVjdDpub3QoW211bHRpcGxlXSl7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHRyYW5zcGFyZW50IDk1JSx2YXIoLS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvciwgIzAwNzJhMykgOTUl''@;'; put 'put ''KSBuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjAgMTAwJTt0cmFuc2l0aW9uOmJhY2tncm91bmQtc2l6ZSAuMnMgZWFzZX0uY2xyLXNlbGVjdC13cmFwcGVyIHNlbGVjdDpub3QoW211bHRpcGxlXSk6Zm9jdXMsLmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6bm90KFttdWx0aXBsZV0pLmNs''@;'; put 'put ''ci1mb2N1cywuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0Om5vdChbbXVsdGlwbGVdKTpmb2N1cywuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0Om5vdChbbXVsdGlwbGVdKS5jbHItZm9jdXN7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDA3MmEzO2JvcmRlci1ib3R0b20tY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWZvcm1zLWZvY3VzZWQtY29sb3IsICMwMDcyYTMpO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCV9LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3RbbXVsdGlwbGVdOmZvY3VzLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3RbbXVsdGlwbGVdOmZvY3Vze291dGxp''@;'; put 'put ''bmU6SGlnaGxpZ2h0IGF1dG8gLjFyZW07b3V0bGluZTotd2Via2l0LWZvY3VzLXJpbmctY29sb3IgYXV0byAuMXJlbX0uY2xyLXNlbGVjdC13cmFwcGVyIHNlbGVjdDpob3ZlciwuY2xyLXNlbGVjdC13cmFwcGVyIHNlbGVjdDphY3RpdmUsLmNsci1tdWx0aXNlbGVjdC13cmFwcGVyIHNlbGVj''@;'; put 'put ''dDpob3ZlciwuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0OmFjdGl2ZXtib3JkZXItY29sb3I6I2RlZGVkZTgwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LWhvdmVyLWJhY2tncm91bmQsIHJnYmEoMjIyLCAyMjIsIDIyMiwgLjUpKTtiYWNrZ3JvdW5kOnJnYmEo''@;'; put 'put ''MjIyLDIyMiwyMjIsLjUpO2JhY2tncm91bmQ6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1ob3Zlci1iYWNrZ3JvdW5kLCByZ2JhKDIyMiwgMjIyLCAyMjIsIC41KSl9LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6ZGlzYWJsZWQgb3B0aW9uLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxl''@;'; put 'put ''Y3Q6ZGlzYWJsZWQgb3B0aW9ue2NvbG9yOiNiM2IzYjM7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQtZGlzYWJsZWQtY29sb3IsICNiM2IzYjMpO2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLXNlbGVjdC13cmFwcGVyIHNlbGVjdCBvcHRpb24sLmNsci1tdWx0aXNlbGVjdC13cmFwcGVyIHNl''@;'; put 'put ''bGVjdCBvcHRpb257Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LW9wdGlvbi1jb2xvciwgYmxhY2spfS5jbHItc2VsZWN0LXdyYXBwZXIgc2VsZWN0OjotbXMtZXhwYW5kLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3Q6Oi1tcy1leHBhbmR7ZGlzcGxheTpu''@;'; put 'put ''b25lfS5jbHItc2VsZWN0LXdyYXBwZXJ7bWF4LWhlaWdodDoxLjJyZW07ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNsci1zZWxlY3Qtd3JhcHBlcjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtjb250ZW50OiIiO2hlaWdodDouNXJlbTt3aWR0aDouNXJlbTt0b3A6LjM1cmVtO3JpZ2h0Oi4zcmVt''@;'; put 'put ''O2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMiUyMDEyJTIyJTNFJTBBJTIwJTIwJTIwJTIw''@;'; put 'put ''JTNDZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3N0eWxlJTNFLmNscy0xJTdCZmlsbCUzQSUyM2IzYjNiMyUzQiU3RCUzQyUyRnN0eWxlJTNFJTBBJTIwJTIwJTIwJTIwJTNDJTJGZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUzQ3RpdGxlJTNFQ2FyZXQlM0MlMkZ0aXRsZSUz''@;'; put 'put ''RSUwQSUyMCUyMCUyMCUyMCUzQ3BhdGglMjBjbGFzcyUzRCUyMmNscy0xJTIyJTIwZCUzRCUyMk02JTJDOUwxLjIlMkM0LjJhMC42OCUyQzAuNjglMkMwJTJDMCUyQzElMkMxLTFMNiUyQzcuMDglMkM5Ljg0JTJDMy4yNGEwLjY4JTJDMC42OCUyQzAlMkMxJTJDMSUyQzElMkMxWiUyMiUyRiUz''@;'; put 'put ''RSUwQSUzQyUyRnN2ZyUzRSUwQSk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb250YWluO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW46MH0uY2xyLXNlbGVjdC13cmFwcGVyOmhvdmVyOmFmdGVye2NvbG9yOiM4YzhjOGM7Y29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWZvcm1zLXNlbGVjdC1jYXJldC1ob3Zlci1jb2xvciwgIzhjOGM4Yyl9LmNsci1lcnJvciAuY2xyLXNlbGVjdC13cmFwcGVyOmFmdGVyLC5jbHItc3VjY2VzcyAuY2xyLXNlbGVjdC13cmFwcGVyOmFmdGVye3JpZ2h0OjEuNXJlbX0uY2xyLW11bHRpc2VsZWN0LXdyYXBwZXJ7ZGlzcGxheTpm''@;'; put 'put ''bGV4fS5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciAuY2xyLXZhbGlkYXRlLWljb257bWFyZ2luLWxlZnQ6MH1zZWxlY3RbbXVsdGlwbGVdLHNlbGVjdFtzaXplXXtwYWRkaW5nOjA7YmFja2dyb3VuZDojZmZmO2JhY2tncm91bmQ6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1tdWx0aXBsZS1iYWNr''@;'; put 'put ''Z3JvdW5kLWNvbG9yLCB3aGl0ZSk7Ym9yZGVyOi4wNXJlbSBzb2xpZDtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1tdWx0aXBsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFy''@;'; put 'put ''KC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7aGVpZ2h0OmF1dG87bWluLXdpZHRoOjZyZW19c2VsZWN0W211bHRpcGxlXTpob3ZlcixzZWxlY3RbbXVsdGlwbGVdOmFjdGl2ZSxzZWxlY3Rbc2l6ZV06aG92ZXIsc2VsZWN0W3NpemVdOmFjdGl2ZXtiYWNrZ3JvdW5kOiNmZmY7''@;'; put 'put ''YmFja2dyb3VuZDp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LW11bHRpcGxlLWJhY2tncm91bmQtY29sb3IsIHdoaXRlKTtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1tdWx0aXBsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpfXNlbGVjdFttdWx0''@;'; put 'put ''aXBsZV0gb3B0aW9uLHNlbGVjdFtzaXplXSBvcHRpb257cGFkZGluZzouMTVyZW0gLjNyZW07Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LW11bHRpcGxlLW9wdGlvbi1jb2xvciwgYmxhY2spfS5jbHItZXJyb3Igc2VsZWN0Om5vdChbbXVsdGlwbGVdKXtib3JkZXIt''@;'; put 'put ''Ym90dG9tLWNvbG9yOiNjMjFkMDA7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvciwgI2MyMWQwMCl9LmNsci1lcnJvciBzZWxlY3RbbXVsdGlwbGVde2JvcmRlci1jb2xvcjojYzIxZDAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxp''@;'; put 'put ''ZC1jb2xvciwgI2MyMWQwMCl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1zZWxlY3QuZGlzYWJsZWR7Y29sb3I6I2IzYjNiMztjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1kaXNhYmxlZC1jb2xvciwgI2IzYjNiMyk7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jbHItZm9ybS1jb250''@;'; put 'put ''cm9sLWRpc2FibGVkIC5jbHItc2VsZWN0LmRpc2FibGVkOmhvdmVyOmFmdGVye2NvbG9yOiNiM2IzYjM7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1jYXJldC1jb2xvciwgI2IzYjNiMyl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1zZWxlY3QuZGlzYWJsZWQ+c2VsZWN0''@;'; put 'put ''LC5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItc2VsZWN0IHNlbGVjdDpkaXNhYmxlZHtjb2xvcjojYjNiM2IzO2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yLCAjYjNiM2IzKTtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJs''@;'; put 'put ''ZWQgLmNsci1zZWxlY3QuZGlzYWJsZWQ+c2VsZWN0OmhvdmVyLC5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItc2VsZWN0IHNlbGVjdDpkaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOjAgMDtib3JkZXItY29sb3I6IzZhN2E4MTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLWJv''@;'; put 'put ''cmRlci1jb2xvciwgIzZhN2E4MSl9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1tdWx0aXNlbGVjdC13cmFwcGVye21hcmdpbi10b3A6MH0uY2xyLXRleHRhcmVhLXdyYXBwZXJ7d2hpdGUtc3BhY2U6bm93cmFwO2Rpc3BsYXk6ZmxleDttYXJnaW4tdG9wOi4zcmVtfS5jbHItdGV4dGFyZWEtd3Jh''@;'; put 'put ''cHBlciAuY2xyLXZhbGlkYXRlLWljb257bWFyZ2luLWxlZnQ6MH0uY2xyLXRleHRhcmVhe21heC13aWR0aDpjYWxjKDEwMCUgLSAuM3JlbSk7aGVpZ2h0OmF1dG87cmVzaXplOnZlcnRpY2FsO2JhY2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWNsci1mb3Jtcy10ZXh0YXJlYS1iYWNr''@;'; put 'put ''Z3JvdW5kLWNvbG9yLCB3aGl0ZSk7Ym9yZGVyOi4wNXJlbSBzb2xpZDtib3JkZXItY29sb3I6IzZhN2E4MTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLWJvcmRlci1jb2xvciwgIzZhN2E4MSk7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1jb2xvciwgYmxhY2sp''@;'; put 'put ''O2JvcmRlci1yYWRpdXM6LjE1cmVtO3BhZGRpbmc6LjRyZW0gLjZyZW07Zm9udC1zaXplOi42NXJlbX0uY2xyLXRleHRhcmVhOmZvY3Vze291dGxpbmU6SGlnaGxpZ2h0IGF1dG8gLjFyZW07b3V0bGluZTotd2Via2l0LWZvY3VzLXJpbmctY29sb3IgYXV0byAuMXJlbX0uY2xyLXRleHRhcmVh''@;'; put 'put ''OmRpc2FibGVke2NvbG9yOiNiM2IzYjM7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQtZGlzYWJsZWQtY29sb3IsICNiM2IzYjMpO2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWVycm9yIC5jbHItdGV4dGFyZWF7Ym9yZGVyLWNvbG9yOiNjMjFkMDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1m''@;'; put 'put ''b3Jtcy1pbnZhbGlkLWNvbG9yLCAjYzIxZDAwKX0uY2xyLWNvbnRyb2wtY29udGFpbmVyIHRleHRhcmVhe3dpZHRoOmF1dG99LmNsci1mb3JtLWNvbnRyb2wucm93IC5jbHItdGV4dGFyZWEtd3JhcHBlcnttYXgtd2lkdGg6Y2FsYygxMDAlIC0gLjNyZW0pfS5jbHItZm9ybS1jb21wYWN0IC5j''@;'; put 'put ''bHItdGV4dGFyZWEtd3JhcHBlcnttYXJnaW4tdG9wOjB9LmNsci1mb3JtLWNvbXBhY3QgLmNsci10ZXh0YXJlYS13cmFwcGVyIC5jbHItdGV4dGFyZWF7bWF4LXdpZHRoOjEwMCV9LmNsci1mb3JtLWNvbXBhY3QgLmNsci10ZXh0YXJlYS13cmFwcGVyIC5jbHItdGV4dGFyZWF+LmNsci1zdWJ0''@;'; put 'put ''ZXh0e21hcmdpbi1sZWZ0Oi4zcmVtfTpyb290ey0tY2xyLXRvZ2dsZS1iZy1jb2xvci1vZmY6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci10b2dnbGUtYmctY29sb3Itb246dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtNTAwKTstLWNsci10b2dnbGUtaGFuZGxlLWJnLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTUwKTstLWNsci10b2dnbGUtZGlzYWJsZWQtZGVmYXVsdC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci10b2dnbGUtZGlzYWJsZWQtZGVmYXVsdC1oYW5kbGUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRy''@;'; put 'put ''YWwtMCk7LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9mZi1ib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1kZWZhdWx0LWJvcmRlci1jb2xvcik7LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9mZi1iZy1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLWRlZmF1bHQtaGFu''@;'; put 'put ''ZGxlLWNvbG9yKTstLWNsci10b2dnbGUtZGlzYWJsZWQtb2ZmLWhhbmRsZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1kZWZhdWx0LWJvcmRlci1jb2xvcik7LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2Fi''@;'; put 'put ''bGVkLWRlZmF1bHQtYm9yZGVyLWNvbG9yKTstLWNsci10b2dnbGUtZGlzYWJsZWQtb24tYmctY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1kZWZhdWx0LWJvcmRlci1jb2xvcik7LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWhhbmRsZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLXRv''@;'; put 'put ''Z2dsZS1kaXNhYmxlZC1kZWZhdWx0LWhhbmRsZS1jb2xvcil9LmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZX0uY2xy''@;'; put 'put ''LXRvZ2dsZS13cmFwcGVye2hlaWdodDoxLjJyZW07dmVydGljYWwtYWxpZ246bWlkZGxlO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXJpZ2h0Oi42cmVtfS5jbHItdG9nZ2xlLXdyYXBwZXIgbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRp''@;'; put 'put ''dmU7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjEuMnJlbTttYXJnaW4tbGVmdDoyLjFyZW07bWFyZ2luLXJpZ2h0OjB9LmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LjNyZW07cmlnaHQ6LjNyZW07aGVpZ2h0Oi44cmVtO3dpZHRo''@;'; put 'put ''Oi44cmVtO29wYWNpdHk6MH0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmlubGluZS1ibG9jaztjb250ZW50OiIiO2hlaWdodDouOXJlbTt3aWR0aDoxLjY1cmVtO2JvcmRlcjouMXJlbSBzb2xp''@;'; put 'put ''ZDtib3JkZXItcmFkaXVzOi40NXJlbTtib3JkZXItY29sb3I6IzhjOGM4Yztib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1iZy1jb2xvci1vZmYsICM4YzhjOGMpO2JhY2tncm91bmQtY29sb3I6IzhjOGM4YztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b2dnbGUtYmctY29sb3It''@;'; put 'put ''b2ZmLCAjOGM4YzhjKTt0b3A6LjE1cmVtO3JpZ2h0OjA7bGVmdDotMi4xcmVtO3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLWluO3RyYW5zaXRpb24tcHJvcGVydHk6Ym9yZGVyLWNvbG9yLGJhY2tncm91bmQtY29sb3J9LmNsci10b2dn''@;'; put 'put ''bGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpmb2N1cytsYWJlbDpiZWZvcmV7b3V0bGluZTpIaWdobGlnaHQgc29saWQgLjFyZW07b3V0bGluZTotd2Via2l0LWZvY3VzLXJpbmctY29sb3Igc29saWQgLjFyZW07b3V0bGluZS1vZmZzZXQ6LjA1cmVtfS5jbHItdG9nZ2xlLXdyYXBw''@;'; put 'put ''ZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbDpiZWZvcmV7Ym9yZGVyLWNvbG9yOiM1YWEyMjA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci10b2dnbGUtYmctY29sb3Itb24sICM1YWEyMjApO2JhY2tncm91bmQtY29sb3I6IzVhYTIyMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigt''@;'; put 'put ''LWNsci10b2dnbGUtYmctY29sb3Itb24sICM1YWEyMjApO3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLWluO3RyYW5zaXRpb24tcHJvcGVydHk6Ym9yZGVyLWNvbG9yLGJhY2tncm91bmQtY29sb3J9LmNsci10b2dnbGUtd3JhcHBlciBp''@;'; put 'put ''bnB1dFt0eXBlPWNoZWNrYm94XStsYWJlbDphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmlubGluZS1ibG9jaztjb250ZW50OiIiO2hlaWdodDouN3JlbTt3aWR0aDouN3JlbTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci1jb2xvcjojZmFmYWZhO2JvcmRlci1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItdG9nZ2xlLWhhbmRsZS1iZy1jb2xvciwgI2ZhZmFmYSk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b2dnbGUtaGFuZGxlLWJnLWNvbG9yLCAjZmFmYWZhKTt0b3A6''@;'; put 'put ''LjI1cmVtO3JpZ2h0OjA7bGVmdDotMnJlbTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1pbjt0cmFuc2l0aW9uLXByb3BlcnR5OnJpZ2h0LGxlZnR9LmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2Vk''@;'; put 'put ''K2xhYmVsOmFmdGVye3JpZ2h0Oi0ycmVtO2xlZnQ6LTEuMjVyZW07dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2UtaW47dHJhbnNpdGlvbi1wcm9wZXJ0eTpyaWdodCxsZWZ0fS5jbHItdG9nZ2xlLXdyYXBwZXIuZGlzYWJsZWQgbGFiZWx7''@;'; put 'put ''b3BhY2l0eTouNDtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci10b2dnbGUtd3JhcHBlci5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsOmJlZm9yZXtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1vbi1ib3Jk''@;'; put 'put ''ZXItY29sb3IsICNjY2NjY2MpO2JhY2tncm91bmQtY29sb3I6I2NjYztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b2dnbGUtZGlzYWJsZWQtb24tYm9yZGVyLWNvbG9yLCAjY2NjY2NjKX0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmRpc2FibGVkK2xhYmVs''@;'; put 'put ''e2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmRpc2FibGVkK2xhYmVsOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLW9mZi1iZy1jb2xvciwgd2hp''@;'; put 'put ''dGUpO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLW9mZi1ib3JkZXItY29sb3IsICNjY2NjY2MpfS5jbHItdG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06ZGlzYWJsZWQrbGFiZWw6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xv''@;'; put 'put ''cjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1vZmYtYmctY29sb3IsIHdoaXRlKTtib3JkZXItd2lkdGg6LjFyZW07Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVk''@;'; put 'put ''LW9mZi1oYW5kbGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtoZWlnaHQ6LjlyZW07d2lkdGg6LjlyZW07dG9wOi4xNXJlbX0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6ZGlzYWJsZWQrbGFiZWw6YmVmb3Jle2JvcmRlci1jb2xvcjojY2NjO2JvcmRl''@;'; put 'put ''ci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7YmFja2dyb3VuZC1jb2xvcjojY2NjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1vbi1iZy1jb2xvciwgI2NjY2NjYyl9LmNsci10b2dnbGUtd3JhcHBl''@;'; put 'put ''ciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmRpc2FibGVkK2xhYmVsOmFmdGVye2JvcmRlci1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWhhbmRsZS1ib3JkZXItY29sb3IsIHdoaXRlKTtoZWlnaHQ6LjdyZW07d2lkdGg6LjdyZW07''@;'; put 'put ''dG9wOi4yNXJlbTtsZWZ0Oi0xLjI1cmVtfS5jbHItdG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06ZGlzYWJsZWQrbGFiZWw6YWZ0ZXJ7bGVmdDotMi4xcmVtfS5jbHItdG9nZ2xlLXdyYXBwZXIucmlnaHQtbGFiZWwgbGFiZWx7bWFyZ2luLWxlZnQ6Mi4xcmVtO21hcmdpbi1y''@;'; put 'put ''aWdodDowfS5jbHItdG9nZ2xlLXdyYXBwZXIucmlnaHQtbGFiZWwgaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YmVmb3Jle3JpZ2h0OjA7bGVmdDotMi4xcmVtfS5jbHItdG9nZ2xlLXdyYXBwZXIucmlnaHQtbGFiZWwgaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YWZ0ZXJ7cmlnaHQ6''@;'; put 'put ''MDtsZWZ0Oi0ycmVtO3RyYW5zaXRpb24tcHJvcGVydHk6bGVmdH0uY2xyLXRvZ2dsZS13cmFwcGVyLnJpZ2h0LWxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw6YWZ0ZXJ7bGVmdDotMS4yNXJlbTt0cmFuc2l0aW9uLXByb3BlcnR5OmxlZnR9LmNsci10b2dnbGUtd3Jh''@;'; put 'put ''cHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7ZGlzcGxheTpibG9jaztmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4ycmVtfS5jbHItY29udHJvbC1pbmxpbmUgLmNsci10b2dnbGUtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXJpZ2h0''@;'; put 'put ''Oi42cmVtfS5jbHItdG9nZ2xlLXJpZ2h0IGxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDoyLjFyZW07bWFyZ2luLWxlZnQ6MH0uY2xyLXRvZ2dsZS1yaWdodCBpbnB1dFt0eXBlPWNoZWNrYm94XStsYWJlbDpiZWZvcmV7bGVmdDp1bnNldDtyaWdodDotMi4xcmVtfS5j''@;'; put 'put ''bHItdG9nZ2xlLXJpZ2h0IGlucHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmFmdGVye2xlZnQ6dW5zZXQ7cmlnaHQ6LTEuMjVyZW07dHJhbnNpdGlvbi1wcm9wZXJ0eTpyaWdodH0uY2xyLXRvZ2dsZS1yaWdodCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsOmFmdGVye2xlZnQ6''@;'; put 'put ''dW5zZXQ7cmlnaHQ6LTJyZW07dHJhbnNpdGlvbi1wcm9wZXJ0eTpyaWdodH0uY2xyLXRvZ2dsZS1yaWdodCBpbnB1dFt0eXBlPWNoZWNrYm94XTpkaXNhYmxlZCtsYWJlbDphZnRlcntsZWZ0OnVuc2V0O3JpZ2h0Oi0xLjNyZW19LmNsci10b2dnbGUtcmlnaHQgaW5wdXRbdHlwZT1jaGVja2Jv''@;'; put 'put ''eF06Y2hlY2tlZDpkaXNhYmxlZCtsYWJlbDphZnRlcntsZWZ0OnVuc2V0O3JpZ2h0Oi0ycmVtfS5jbHItdG9nZ2xlLXJpZ2h0IC5jbHItY29udHJvbC1pbmxpbmUgLmNsci10b2dnbGUtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7bWFyZ2luLXJpZ2h0OjIuN3JlbX0uY2xyLXJhbmdlLXdy''@;'; put 'put ''YXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2FsaWduLWl0ZW1zOmZsZXgtZW5kO2hlaWdodDouN3JlbTt3aGl0ZS1zcGFjZTpub3dyYXB9LmNsci1yYW5nZS13cmFwcGVyIC5maWxsLWlucHV0e3Bvc2l0aW9uOmFic29sdXRl''@;'; put 'put ''O2xlZnQ6MDtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6LjJyZW07cG9pbnRlci1ldmVudHM6bm9uZTtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjEwO2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS1wcm9ncmVzcy1maWxs''@;'; put 'put ''LWNvbG9yLCAjMDA3MmEzKX0uY2xyLXJhbmdle2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmZsZXgtZW5kO2hlaWdodDouN3JlbX0uY2xyLXJhbmdlOmRpc2FibGVkLC5jbHItcmFuZ2U6ZGlzYWJsZWQrLmZpbGwtaW5wdXR7cG9pbnRlci1ldmVudHM6''@;'; put 'put ''YXV0bztjdXJzb3I6bm90LWFsbG93ZWR9aW5wdXRbdHlwZT1yYW5nZV17cGFkZGluZzowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2xlZnQ6MDtoZWlnaHQ6LjJyZW07YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRyYWNr''@;'; put 'put ''LWNvbG9yLCAjZThlOGU4KX1pbnB1dFt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2t7aGVpZ2h0Oi4ycmVtO2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQtY29sb3I6I2U4ZThlODtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10cmFjay1j''@;'; put 'put ''b2xvciwgI2U4ZThlOCl9aW5wdXRbdHlwZT1yYW5nZV06Oi13ZWJraXQtc2xpZGVyLXRodW1iey13ZWJraXQtYXBwZWFyYW5jZTpub25lO21hcmdpbi10b3A6LS4yNXJlbTtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6LjdyZW07d2lkdGg6LjdyZW07YmFja2dyb3VuZC1jb2xvcjojMDA3MmEz''@;'; put 'put ''O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXByb2dyZXNzLWZpbGwtY29sb3IsICMwMDcyYTMpfWlucHV0W3R5cGU9cmFuZ2VdOjotbW96LXJhbmdlLXRyYWNre2hlaWdodDouMnJlbTtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dy''@;'; put 'put ''b3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stY29sb3IsICNlOGU4ZTgpfWlucHV0W3R5cGU9cmFuZ2VdOjotbW96LXJhbmdlLXRodW1ie2JvcmRlcjowO21hcmdpbi10b3A6LS4yNXJlbTtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6LjdyZW07d2lkdGg6LjdyZW07YmFj''@;'; put 'put ''a2dyb3VuZC1jb2xvcjojMDA3MmEzO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXByb2dyZXNzLWZpbGwtY29sb3IsICMwMDcyYTMpfUBzdXBwb3J0cyAoLW1zLWltZS1hbGlnbjphdXRvKXsuY2xyLXJhbmdlLXdyYXBwZXIgLmZpbGwtaW5wdXR7ZGlzcGxheTpub25l''@;'; put 'put ''fS5jbHItcmFuZ2Utd3JhcHBlci5wcm9ncmVzcy1maWxsIGlucHV0W3R5cGU9cmFuZ2VdOjotbXMtZmlsbC1sb3dlcntoZWlnaHQ6LjJyZW07YmFja2dyb3VuZC1jb2xvcjojMDA3MmEzO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXByb2dyZXNzLWZpbGwtY29sb3Is''@;'; put 'put ''ICMwMDcyYTMpfWlucHV0W3R5cGU9cmFuZ2Vde2JvcmRlcjowO21hcmdpbjowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2xlZnQ6MDtoZWlnaHQ6LjdyZW19aW5wdXRbdHlwZT1yYW5nZV06Oi1tcy10cmFja3ttYXJnaW46MDtib3JkZXI6MDtoZWlnaHQ6LjJyZW07Y3Vyc29yOnBvaW50ZXI7''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWNvbG9yLCAjZThlOGU4KX1pbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRodW1ie2JvcmRlcjowO21hcmdpbi10b3A6MDtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6Ljdy''@;'; put 'put ''ZW07d2lkdGg6LjdyZW07YmFja2dyb3VuZC1jb2xvcjojMDA3MmEzO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXByb2dyZXNzLWZpbGwtY29sb3IsICMwMDcyYTMpfX1fOi1tcy1mdWxsc2NyZWVuIC5jbHItcmFuZ2Utd3JhcHBlciAuZmlsbC1pbnB1dCw6cm9vdCAu''@;'; put 'put ''Y2xyLXJhbmdlLXdyYXBwZXIgLmZpbGwtaW5wdXR7ZGlzcGxheTpub25lfV86LW1zLWZ1bGxzY3JlZW4gLmNsci1yYW5nZS13cmFwcGVyLnByb2dyZXNzLWZpbGwgaW5wdXRbdHlwZT1yYW5nZV06Oi1tcy1maWxsLWxvd2VyLDpyb290IC5jbHItcmFuZ2Utd3JhcHBlci5wcm9ncmVzcy1maWxs''@;'; put 'put ''IGlucHV0W3R5cGU9cmFuZ2VdOjotbXMtZmlsbC1sb3dlcntoZWlnaHQ6LjJyZW07YmFja2dyb3VuZC1jb2xvcjojMDA3MmEzO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXByb2dyZXNzLWZpbGwtY29sb3IsICMwMDcyYTMpfV86LW1zLWZ1bGxzY3JlZW4gaW5wdXRb''@;'; put 'put ''dHlwZT1yYW5nZV06Oi1tcy10b29sdGlwLDpyb290IGlucHV0W3R5cGU9cmFuZ2VdOjotbXMtdG9vbHRpcHt2aXNpYmlsaXR5OmhpZGRlbn1fOi1tcy1mdWxsc2NyZWVuIGlucHV0W3R5cGU9cmFuZ2VdLDpyb290IGlucHV0W3R5cGU9cmFuZ2Vde2JvcmRlcjowO21hcmdpbjowOy13ZWJraXQt''@;'; put 'put ''YXBwZWFyYW5jZTpub25lO2xlZnQ6MDtoZWlnaHQ6LjdyZW19XzotbXMtZnVsbHNjcmVlbiBpbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRyYWNrLDpyb290IGlucHV0W3R5cGU9cmFuZ2VdOjotbXMtdHJhY2t7Ym9yZGVyOjA7bWFyZ2luOjA7aGVpZ2h0Oi4ycmVtO2N1cnNvcjpwb2ludGVyO2Jh''@;'; put 'put ''Y2tncm91bmQtY29sb3I6I2U4ZThlODtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10cmFjay1jb2xvciwgI2U4ZThlOCl9XzotbXMtZnVsbHNjcmVlbiBpbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRodW1iLDpyb290IGlucHV0W3R5cGU9cmFuZ2VdOjotbXMtdGh1bWJ7''@;'; put 'put ''Ym9yZGVyOjA7bWFyZ2luLXRvcDowO2JvcmRlci1yYWRpdXM6NTAlO2hlaWdodDouN3JlbTt3aWR0aDouN3JlbTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDcyYTM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xvciwgIzAwNzJhMyl9aW5wdXRb''@;'; put 'put ''Y2xyRGF0YWxpc3RdOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3J7ZGlzcGxheTpub25lfWNsci1kYXRhbGlzdC1jb250YWluZXIgLmNsci1pbnB1dC1ncm91cHtwYWRkaW5nLXJpZ2h0OjB9OnJvb3R7LS1jbHItY2FsZW5kYXItYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''Y29sb3ItbmV1dHJhbC0wKTstLWNsci1jYWxlbmRhci1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci1kYXRlcGlja2VyLXRyaWdnZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLWRhdGVwaWNrZXItdHJpZ2dlci1ob3Zlci1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTgwMCk7LS1jbHItY2FsZW5kYXItYnRuLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci1jYWxlbmRhci1idG4taG92ZXItZm9jdXMtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1ob3Zlci1jb2xvcik7LS1jbHItY2FsZW5k''@;'; put 'put ''YXItcGlja2VyLWJ0bi1mb250LXNpemU6LjlyZW07LS1jbHItY2FsZW5kYXItcGlja2VyLWJ0bi1mb250LXdlaWdodDoyMDA7LS1jbHItY2FsZW5kYXItdG9kYXktZGF0ZS1jZWxsLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTEwMDApOy0tY2xyLWNhbGVuZGFyLXRvZGF5LWRhdGUt''@;'; put 'put ''Y2VsbC1mb250LXdlaWdodDo2MDA7LS1jbHItY2FsZW5kYXItYWN0aXZlLWNlbGwtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLXNlbGVjdGlvbi1jb2xvcik7LS1jbHItY2FsZW5kYXItYWN0aXZlLWZvY3VzLWNlbGwtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZ2xvYmFs''@;'; put 'put ''LXNlbGVjdGlvbi1jb2xvcik7LS1jbHItY2FsZW5kYXItYWN0aXZlLWNlbGwtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwMCk7LS1jbHItZGF5LWZvbnQtc2l6ZTouNnJlbX0uZGF0ZS1jb250YWluZXJ7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7d2hp''@;'; put 'put ''dGUtc3BhY2U6bm93cmFwfS5kYXRlcGlja2VyLXRyaWdnZXJ7aGVpZ2h0OjEuOHJlbTttaW4td2lkdGg6MS44cmVtO3BhZGRpbmc6MDttYXJnaW46MCFpbXBvcnRhbnQ7Y29sb3I6aW5oZXJpdDtib3JkZXI6MDtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1n''@;'; put 'put ''bG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2JhY2tncm91bmQ6MCAwO2N1cnNvcjpwb2ludGVyO2xpbmUtaGVpZ2h0OjEuOHJlbX0uZGF0ZXBpY2tlci10cmlnZ2VyIC5kYXRlcGlja2VyLXRyaWdnZXItaWNvbntmaWxsOiMwMDcyYTM7ZmlsbDp2YXIoLS1jbHItZGF0ZXBpY2tlci10cmln''@;'; put 'put ''Z2VyLWNvbG9yLCAjMDA3MmEzKX0uZGF0ZXBpY2tlci10cmlnZ2VyIC5kYXRlcGlja2VyLXRyaWdnZXItaWNvbjpob3ZlcntmaWxsOiMwMDU2N2E7ZmlsbDp2YXIoLS1jbHItZGF0ZXBpY2tlci10cmlnZ2VyLWhvdmVyLWNvbG9yLCAjMDA1NjdhKX0uZGF0ZXBpY2tlci10cmlnZ2VyOmRpc2Fi''@;'; put 'put ''bGVke2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWZvcm0tY29udHJvbCAuZGF0ZXBpY2tlci10cmlnZ2Vye2xpbmUtaGVpZ2h0OjEuMXJlbTtoZWlnaHQ6MS4xcmVtfS5kYXRlLWlucHV0e2ZsZXg6MSAxIGF1dG99LmRhdGVwaWNrZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVt''@;'; put 'put ''bjtwYWRkaW5nOi42cmVtO21hcmdpbi10b3A6LjNyZW07d2lkdGg6MTMuOXJlbTtoZWlnaHQ6MTUuN3JlbTtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItY2FsZW5kYXItYmFja2dyb3VuZC1jb2xvciwgd2hpdGUpO2JvcmRlcjouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9y''@;'; put 'put ''OiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1jYWxlbmRhci1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gIzhj''@;'; put 'put ''OGM4YzQwO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtIHZhcigtLWNsci1wb3BvdmVyLWJveC1zaGFkb3ctY29sb3IsIHJnYmEoMTQwLCAxNDAsIDE0MCwgLjI1KSk7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MTA1MH0uY2FsZW5kYXItaGVhZGVye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNv''@;'; put 'put ''bnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXJ9LmNhbGVuZGFyLXN3aXRjaGVycywueWVhci1zd2l0Y2hlcnN7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLS4xcmVtKTtkaXNwbGF5OmZsZXh9LnllYXItc3dpdGNoZXJze2ZsZXg6MCAwIGF1dG87d2lkdGg6NS40cmVtO2FsaWdu''@;'; put 'put ''LXNlbGY6Y2VudGVyfS5jYWxlbmRhci10YWJsZXtmbGV4OjEgMSBhdXRvO3dpZHRoOjEwMCV9LmNhbGVuZGFyLWNlbGwsLmNhbGVuZGFyLXRhYmxlIC5jYWxlbmRhci1jZWxse2hlaWdodDoxLjhyZW07d2lkdGg6MS44cmVtO21pbi1oZWlnaHQ6MS44cmVtO21pbi13aWR0aDoxLjhyZW07cGFk''@;'; put 'put ''ZGluZzowO3RleHQtYWxpZ246Y2VudGVyfS5kYXl7ZGlzcGxheTppbmxpbmUtYmxvY2t9LndlZWtkYXlze2ZsZXg6MCAwIDEuOHJlbX0ud2Vla2RheXtmb250LXNpemU6LjZyZW07Zm9udC1zaXplOnZhcigtLWNsci1kYXktZm9udC1zaXplLCAuNnJlbSk7Zm9udC13ZWlnaHQ6NjAwfS5jYWxl''@;'; put 'put ''bmRhci1idG57aGVpZ2h0OjEuOHJlbTttaW4td2lkdGg6MS44cmVtO3BhZGRpbmc6MDttYXJnaW46MCFpbXBvcnRhbnQ7Y29sb3I6aW5oZXJpdDtib3JkZXI6MDtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0p''@;'; put 'put ''O2JhY2tncm91bmQ6MCAwO2N1cnNvcjpwb2ludGVyO2xpbmUtaGVpZ2h0OjEuOHJlbTtmb250LXNpemU6LjlyZW07Zm9udC1zaXplOnZhcigtLWNsci1jYWxlbmRhci1waWNrZXItYnRuLWZvbnQtc2l6ZSwgLjlyZW0pO2ZvbnQtd2VpZ2h0OjIwMDtmb250LXdlaWdodDp2YXIoLS1jbHItY2Fs''@;'; put 'put ''ZW5kYXItcGlja2VyLWJ0bi1mb250LXdlaWdodCwgMjAwKX0uY2FsZW5kYXItYnRuOmhvdmVyLC5jYWxlbmRhci1idG46Zm9jdXN7YmFja2dyb3VuZDojZThlOGU4O2JhY2tncm91bmQ6dmFyKC0tY2xyLWNhbGVuZGFyLWJ0bi1ob3Zlci1mb2N1cy1jb2xvciwgI2U4ZThlOCl9LmNhbGVuZGFy''@;'; put 'put ''LWJ0bjpmb2N1c3tvdXRsaW5lOjB9LmRheS1idG57aGVpZ2h0OjEuOHJlbTttaW4td2lkdGg6MS44cmVtO3BhZGRpbmc6MDttYXJnaW46MCFpbXBvcnRhbnQ7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywg''@;'; put 'put ''LjE1cmVtKTtiYWNrZ3JvdW5kOjAgMDtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDoxLjhyZW07d2lkdGg6MTAwJTtjb2xvcjppbmhlcml0fS5kYXktYnRuOmhvdmVyLC5kYXktYnRuOmZvY3Vze2JhY2tncm91bmQ6I2U4ZThlODtiYWNrZ3JvdW5kOnZhcigtLWNsci1jYWxlbmRhci1idG4t''@;'; put 'put ''aG92ZXItZm9jdXMtY29sb3IsICNlOGU4ZTgpfS5kYXktYnRuOmZvY3Vze291dGxpbmU6MH0uZGF5LWJ0bi5pcy10b2RheXtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci10b2RheS1kYXRlLWNlbGwtY29sb3IsIGJsYWNrKTtmb250LXdlaWdodDo2MDA7Zm9udC13ZWlnaHQ6''@;'; put 'put ''dmFyKC0tY2xyLWNhbGVuZGFyLXRvZGF5LWRhdGUtY2VsbC1mb250LXdlaWdodCwgNjAwKX0uZGF5LWJ0bi5pcy1leGNsdWRlZHtvcGFjaXR5Oi40fS5kYXktYnRuLmlzLWV4Y2x1ZGVkOmhvdmVye2JhY2tncm91bmQ6MCAwfS5kYXktYnRuLmlzLXNlbGVjdGVke2JhY2tncm91bmQ6I2Q4ZTNl''@;'; put 'put ''OTtiYWNrZ3JvdW5kOnZhcigtLWNsci1jYWxlbmRhci1hY3RpdmUtY2VsbC1iYWNrZ3JvdW5kLWNvbG9yLCAjZDhlM2U5KTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci1hY3RpdmUtY2VsbC1jb2xvciwgYmxhY2spfS5kYXktYnRuLmlzLXNlbGVjdGVkOmZvY3Vze2JhY2tn''@;'; put 'put ''cm91bmQ6I2Q4ZTNlOTtiYWNrZ3JvdW5kOnZhcigtLWNsci1jYWxlbmRhci1hY3RpdmUtZm9jdXMtY2VsbC1iYWNrZ3JvdW5kLWNvbG9yLCAjZDhlM2U5KX0uZGF5LWJ0bi5pcy1kaXNhYmxlZHtvcGFjaXR5Oi40O3BvaW50ZXItZXZlbnRzOm5vbmV9LmRheS1idG4uaXMtZGlzYWJsZWQ6aG92''@;'; put 'put ''ZXJ7YmFja2dyb3VuZDowIDB9LmNhbGVuZGFyLXBpY2tlcnN7ZGlzcGxheTpmbGV4fS5zd2l0Y2hlcntjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci1idG4tY29sb3IsICMwMDcyYTMpfS5zd2l0Y2hlciBjZHMtaWNvbiwuc3dpdGNoZXIgY2xyLWljb257aGVpZ2h0Oi45''@;'; put 'put ''cmVtO3dpZHRoOi45cmVtfS5tb250aHBpY2tlci10cmlnZ2VyLC55ZWFycGlja2VyLXRyaWdnZXJ7bWluLXdpZHRoOjIuNHJlbTttYXgtd2lkdGg6M3JlbTtjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci1idG4tY29sb3IsICMwMDcyYTMpO3RleHQtYWxpZ246Y2VudGVy''@;'; put 'put ''O3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30ubW9udGhwaWNrZXIsLnllYXJwaWNrZXJ7bWluLWhlaWdodDoxNC40cmVtfS5tb250aHBpY2tlciwueWVhcnBpY2tlciwueWVhcnN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNv''@;'; put 'put ''bHVtbjtvdmVyZmxvdzpoaWRkZW59Lm1vbnRocGlja2VyLC55ZWFyc3tmbGV4LXdyYXA6d3JhcH0ubW9udGgsLnllYXJ7aGVpZ2h0OjIuNHJlbTttaW4td2lkdGg6Mi40cmVtO3BhZGRpbmc6MCAuNnJlbTttYXJnaW46MCFpbXBvcnRhbnQ7Y29sb3I6aW5oZXJpdDtib3JkZXI6MDtib3JkZXIt''@;'; put 'put ''cmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2JhY2tncm91bmQ6MCAwO2N1cnNvcjpwb2ludGVyO2xpbmUtaGVpZ2h0OjEuOHJlbTt3aWR0aDo2LjNyZW07Zm9udC1zaXplOi45cmVtO2ZvbnQtd2VpZ2h0OjIwMDtvdXRs''@;'; put 'put ''aW5lLW9mZnNldDotLjI1cmVtfS5tb250aDpob3ZlciwubW9udGg6Zm9jdXMsLnllYXI6aG92ZXIsLnllYXI6Zm9jdXN7YmFja2dyb3VuZDojZThlOGU4O2JhY2tncm91bmQ6dmFyKC0tY2xyLWNhbGVuZGFyLWJ0bi1ob3Zlci1mb2N1cy1jb2xvciwgI2U4ZThlOCl9Lm1vbnRoOmZvY3VzLC55''@;'; put 'put ''ZWFyOmZvY3Vze291dGxpbmU6MH0ubW9udGguaXMtZGlzYWJsZWQsLnllYXIuaXMtZGlzYWJsZWR7b3BhY2l0eTouNDtwb2ludGVyLWV2ZW50czpub25lfS5tb250aC5pcy1kaXNhYmxlZDpob3ZlciwueWVhci5pcy1kaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOjAgMH0ubW9udGguaXMtc2Vs''@;'; put 'put ''ZWN0ZWQsLnllYXIuaXMtc2VsZWN0ZWR7YmFja2dyb3VuZDojZDhlM2U5O2JhY2tncm91bmQ6dmFyKC0tY2xyLWNhbGVuZGFyLWFjdGl2ZS1jZWxsLWJhY2tncm91bmQtY29sb3IsICNkOGUzZTkpO2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLWNhbGVuZGFyLWFjdGl2ZS1jZWxsLWNvbG9y''@;'; put 'put ''LCBibGFjayl9Lm1vbnRoLmlzLXNlbGVjdGVkOmZvY3VzLC55ZWFyLmlzLXNlbGVjdGVkOmZvY3Vze2JhY2tncm91bmQ6I2Q4ZTNlOTtiYWNrZ3JvdW5kOnZhcigtLWNsci1jYWxlbmRhci1hY3RpdmUtZm9jdXMtY2VsbC1iYWNrZ3JvdW5kLWNvbG9yLCAjZDhlM2U5KX0ubW9udGh7dGV4dC1h''@;'; put 'put ''bGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS55ZWFye3RleHQtYWxpZ246Y2VudGVyfTpyb290ey0tY2xyLWNvbWJvYm94LXRyaWdnZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNTAwKTstLWNsci1j''@;'; put 'put ''b21ib2JveC1mb250LXNpemU6LjY1cmVtOy0tY2xyLWNvbWJvYm94LWJvcmRlci1jb2xvcjojZThlOGU4Oy0tY2xyLWNvbWJvYm94LWJvcmRlci1yYWRpdXM6LjE1cmVtOy0tY2xyLWNvbWJvYm94LWlucHV0LWJhY2tncm91bmQ6I2YyZjJmMjstLWNsci1jb21ib2JveC1waWxsLWJhY2tncm91''@;'; put 'put ''bmQtY29sb3I6d2hpdGU7LS1jbHItY29tYm9ib3gtcGlsbC1ib3JkZXItY29sb3I6IzY2NjY2NjstLWNsci1jb21ib2JveC1waWxsLWJvcmRlci1yYWRpdXM6LjE1cmVtOy0tY2xyLWNvbWJvYm94LXBpbGwtZm9udC1jb2xvcjojNDU0NTQ1Oy0tY2xyLWNvbWJvYm94LWZpbHRlci1oaWdobGln''@;'; put 'put ''aHQ6IzQ1NDU0NX0uY2xyLWNvbWJvYm94LWZvcm0tY29udHJvbHthbGlnbi1pdGVtczpzdHJldGNofS5jbHItY29tYm9ib3gtZm9ybS1jb250cm9sIC5jbHItZXJyb3IgLmNsci12YWxpZGF0ZS1pY29ue21hcmdpbi1sZWZ0OjB9LmNsci1mb2N1cy1pbmRpY2F0b3J7YmFja2dyb3VuZC1jb2xv''@;'; put 'put ''cjojMDA3MmEzO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLWZvY3VzZWQtY29sb3IsICMwMDcyYTMpO2hlaWdodDouMXJlbTt3aWR0aDowO3RyYW5zaXRpb246d2lkdGggLjJzIGVhc2U7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOi0uMDVyZW07bGVmdDowO2JvcmRlci1ib3R0''@;'; put 'put ''b20tbGVmdC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tY2xyLWNvbWJvYm94LWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNsci1jb21i''@;'; put 'put ''b2JveC1ib3JkZXItcmFkaXVzLCAuMTVyZW0pfS5jbHItZm9jdXN7d2lkdGg6MTAwJX0uY2xyLWVycm9yIC5jbHItZm9jdXMtaW5kaWNhdG9ye2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yLCAjYzIxZDAwKX0u''@;'; put 'put ''Y2xyLWNvbWJvYm94LXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzowIDEuMnJlbSAwIC4zcmVtO21pbi1oZWlnaHQ6MS4ycmVtO21pbi13aWR0aDo4LjRyZW07Zm9udC1zaXplOi42NXJlbTtmb250LXNpemU6dmFyKC0tY2xyLWNvbWJvYm94LWZvbnQtc2l6ZSwgLjY1cmVtKTtj''@;'; put 'put ''b2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWNvbG9yLCBibGFjayk7Ym9yZGVyLWJvdHRvbTouMDVyZW0gc29saWQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZC1jb2xvcjojZjJmMmYyO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbWJvYm94LWlucHV0''@;'; put 'put ''LWJhY2tncm91bmQtY29sb3IsICNmMmYyZjIpO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojZThlOGU4O2JvcmRlci1jb2xvcjp2YXIoLS1jbHItY29tYm9ib3gtYm9yZGVyLWNvbG9yLCAjZThlOGU4KTtib3JkZXItYm90dG9tLXdpZHRoOi4w''@;'; put 'put ''NXJlbTtib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkO2JvcmRlci1ib3R0b20tY29sb3I6IzZhN2E4MTtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1ib3JkZXItY29sb3IsICM2YTdhODEpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWNv''@;'; put 'put ''bWJvYm94LWJvcmRlci1yYWRpdXMsIC4xNXJlbSl9LmNsci1jb21ib2JveC13cmFwcGVyLm11bHRpe21pbi13aWR0aDptaW4oMThyZW0sMTAwJSk7cGFkZGluZy1ib3R0b206LjE1cmVtfS5jbHItY29tYm9ib3gtd3JhcHBlciAuY2xyLWlucHV0LmNsci1jb21ib2JveC1pbnB1dDpmb2N1c3ti''@;'; put 'put ''YWNrZ3JvdW5kOjAgMH0uY2xyLWNvbWJvYm94LXdyYXBwZXIuaW52YWxpZHtib3JkZXItYm90dG9tLWNvbG9yOiNjMjFkMDB9LmNsci1jb21ib2JveC13cmFwcGVyIC5jbHItY29tYm9ib3gtaW5wdXR7YmFja2dyb3VuZDowIDA7Ym9yZGVyLWJvdHRvbTpub25lfS5jbHItY29tYm9ib3gtd3Jh''@;'; put 'put ''cHBlciAuY2xyLWNvbWJvYm94LXJlbW92ZS1idG57YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzouMTVyZW07Y29sb3I6IzQ1NDU0NX0uY2xyLWNvbWJvYm94LXdyYXBwZXIgLmxhYmVsLWNvbWJvYm94LXBpbGx7bWFyZ2luOi4xNXJlbSAuM3JlbSAwIDA7''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbWJvYm94LXBpbGwtYmFja2dyb3VuZC1jb2xvciwgd2hpdGUpO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXN0eWxlOnNvbGlkO2FsaWduLWl0ZW1zOmJhc2VsaW5lO2JvcmRlci1yYWRpdXM6LjE1''@;'; put 'put ''cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWNvbWJvYm94LXBpbGwtYm9yZGVyLXJhZGl1cywgLjE1cmVtKTtib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbWJvYm94LXBpbGwtYm9yZGVyLWNvbG9yLCAjNjY2NjY2KTtwYWRkaW5nOjAgLjFyZW0gMCAuMnJl''@;'; put 'put ''bX0uY2xyLWNvbWJvYm94LXdyYXBwZXIgLmxhYmVsLWNvbWJvYm94LXBpbGwgLmNsci1jb21ib2JveC1waWxsLWNvbnRlbnR7Y29sb3I6IzQ1NDU0NTtjb2xvcjp2YXIoLS1jbHItY29tYm9ib3gtcGlsbC1mb250LWNvbG9yLCAjNDU0NTQ1KTtmb250LXNpemU6LjU1cmVtO2ZvbnQtd2VpZ2h0''@;'; put 'put ''OjQwMDtwYWRkaW5nOjAgLjRyZW0gMCAuMnJlbX0uY2xyLWNvbWJvYm94LXdyYXBwZXIgLmxhYmVsLWNvbWJvYm94LXBpbGwgY2RzLWljb25bc2hhcGU9d2luZG93LWNsb3NlXSwuY2xyLWNvbWJvYm94LXdyYXBwZXIgLmxhYmVsLWNvbWJvYm94LXBpbGwgY2xyLWljb25bc2hhcGU9d2luZG93''@;'; put 'put ''LWNsb3NlXXtjb2xvcjojNDU0NTQ1O2NvbG9yOnZhcigtLWNsci1jb21ib2JveC1waWxsLWZvbnQtY29sb3IsICM0NTQ1NDUpfS5jbHItY29tYm9ib3gtd3JhcHBlciAuY2xyLWNvbWJvYm94LWlucHV0LXdyYXBwZXJ7Ym9yZGVyOjA7YmFja2dyb3VuZDowIDB9LmNsci1jb21ib2JveC10cmln''@;'; put 'put ''Z2Vye3dpZHRoOjEuMnJlbTttYXJnaW46YXV0bztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2JhY2tncm91bmQ6MCAwO2JvcmRlcjowO2NvbG9yOmN1cnJlbnRDb2xvcjtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOjB9LmNsci1jb21ib2JveC10cmlnZ2VyOmRpc2Fi''@;'; put 'put ''bGVke2NvbG9yOnZhcigtLWNsci1idG4tbGluay1kaXNhYmxlZC1jb2xvciwgIzY2Nik7b3BhY2l0eTouNH0uY2xyLWNvbWJvYm94LXRyaWdnZXIgY2RzLWljb25bc2hhcGU9YW5nbGVdLC5jbHItY29tYm9ib3gtdHJpZ2dlciBjbHItaWNvbltzaGFwZT1hbmdsZV17Y29sb3I6IzQ1NDU0NTtj''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItY29tYm9ib3gtcGlsbC1mb250LWNvbG9yLCAjNDU0NTQ1KX0uY2xyLWNvbWJvYm94LW9wdGlvbnN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTAwJTtsZWZ0OjA7bWluLXdpZHRoOjZyZW07bWF4LXdpZHRo''@;'; put 'put ''OjE4cmVtO2JhY2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWNsci1kcm9wZG93bi1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRl''@;'; put 'put ''ci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1''@;'; put 'put ''cmVtICM4YzhjOGM0MDtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSB2YXIoLS1jbHItZHJvcGRvd24tYm94LXNoYWRvdywgcmdiYSgxNDAsIDE0MCwgMTQwLCAuMjUpKTttYXJnaW4tdG9wOi4xcmVtO3BhZGRpbmc6LjZyZW0gMDt2aXNpYmlsaXR5OmhpZGRlbjt6LWluZGV4OjEwNTA7cG9z''@;'; put 'put ''aXRpb246c3RhdGljO21heC1oZWlnaHQ6MTJyZW07b3ZlcmZsb3cteTpzY3JvbGw7dmlzaWJpbGl0eTp2aXNpYmxlfS5jbHItY29tYm9ib3gtb3B0aW9ucyAuY2xyLWNvbWJvYm94LW9wdGlvbnMtbG9hZGluZ3twYWRkaW5nOi4xNXJlbSAxLjJyZW19LmNsci1jb21ib2JveC1vcHRpb25zIC5j''@;'; put 'put ''bHItY29tYm9ib3gtb3B0aW9ucy1sb2FkaW5nIC5jbHItY29tYm9ib3gtb3B0aW9ucy1sb2FkaW5nLXRleHR7cGFkZGluZy1sZWZ0Oi4zcmVtfS5jbHItY29tYm9ib3gtb3B0aW9ucyAuY2xyLWNvbWJvYm94LW9wdGlvbnMtZW1wdHktdGV4dHtwYWRkaW5nLWxlZnQ6LjZyZW19LmNsci1jb21i''@;'; put 'put ''b2JveC1vcHRpb257Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1jb2xvciwgIzY2NjY2Nik7Zm9udC1zaXplOi43cmVtO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1mb250LXdlaWdodCwgNDAwKTtsZXR0ZXItc3Bh''@;'; put 'put ''Y2luZzpub3JtYWw7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpibG9jaztoZWlnaHQ6YXV0bztsaW5lLWhlaWdodDppbmhlcml0O21hcmdpbjowO3dpZHRoOjEwMCU7dGV4dC10cmFuc2Zvcm06bm9uZX0uY2xyLWNvbWJvYm94LW9wdGlvbjpob3Zlcnti''@;'; put 'put ''YWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tYmctaG92ZXItY29sb3IsICNlOGU4ZTgpO2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tY29sb3IsICM2NjY2NjYpO3RleHQtZGVjb3JhdGlvbjpub25lfS5j''@;'; put 'put ''bHItY29tYm9ib3gtb3B0aW9uLmFjdGl2ZXtiYWNrZ3JvdW5kOiNkOGUzZTk7YmFja2dyb3VuZDp2YXIoLS1jbHItZHJvcGRvd24tc2VsZWN0aW9uLWNvbG9yLCAjZDhlM2U5KTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1hY3RpdmUtdGV4dC1jb2xvciwgYmxhY2spfS5j''@;'; put 'put ''bHItY29tYm9ib3gtb3B0aW9uOmFjdGl2ZXtib3gtc2hhZG93Om5vbmV9LmNsci1jb21ib2JveC1vcHRpb246Zm9jdXN7ei1pbmRleDppbmhlcml0fS5jbHItY29tYm9ib3gtb3B0aW9uLmRpc2FibGVkLC5jbHItY29tYm9ib3gtb3B0aW9uOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZDtv''@;'; put 'put ''cGFjaXR5Oi40Oy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5jbHItY29tYm9ib3gtb3B0aW9uLmRpc2FibGVkOmhvdmVyLC5jbHItY29tYm9ib3gtb3B0aW9uOmRpc2FibGVkOmhvdmVye2JhY2tncm91bmQ6MCAwfS5jbHItY29tYm9ib3gtb3B0aW9uLmRpc2Fi''@;'; put 'put ''bGVkOmFjdGl2ZSwuY2xyLWNvbWJvYm94LW9wdGlvbjpkaXNhYmxlZDphY3RpdmV7YmFja2dyb3VuZDowIDA7Ym94LXNoYWRvdzpub25lfS5jbHItY29tYm9ib3gtb3B0aW9uLmNsci1mb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJv''@;'; put 'put ''cGRvd24tYmctaG92ZXItY29sb3IsICNlOGU4ZTgpfS5jbHItY29tYm9ib3gtb3B0aW9ucyAuY2xyLWNvbWJvYm94LW9wdGlvbntwYWRkaW5nOi4xNXJlbSAxLjJyZW19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCl7LmNsci1jb21ib2JveC1vcHRpb25zIC5jbHItY29tYm9i''@;'; put 'put ''b3gtb3B0aW9ue3BhZGRpbmc6LjNyZW0gMS4ycmVtfX0uY2xyLWNvbWJvYm94LW9wdGlvbnMgLmNsci1jb21ib2JveC1vcHRpb246aG92ZXIsLmNsci1jb21ib2JveC1vcHRpb25zIC5jbHItY29tYm9ib3gtb3B0aW9uLmFjdGl2ZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1kcm9wZG93''@;'; put 'put ''bi1pdGVtLWNvbG9yLCAjNjY2NjY2KX0uY2xyLWNvbWJvYm94LWRpc2FibGVke2NvbG9yOiNiM2IzYjM7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQtZGlzYWJsZWQtY29sb3IsICNiM2IzYjMpO2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWNvbWJvYm94LWRpc2FibGVkIC5jbHItY29tYm9i''@;'; put 'put ''b3gtaW5wdXQsLmNsci1jb21ib2JveC1kaXNhYmxlZCAuY2xyLWNvbWJvYm94LXJlbW92ZS1idG4sLmNsci1jb21ib2JveC1kaXNhYmxlZCAuY2xyLWNvbWJvYm94LXRyaWdnZXJ7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jbHItZmlsdGVyLWhpZ2hsaWdodCBie2ZvbnQtd2VpZ2h0OjUwMDtjb2xv''@;'; put 'put ''cjojNDU0NTQ1O2NvbG9yOnZhcigtLWNsci1jb21ib2JveC1maWx0ZXItaGlnaGxpZ2h0LCAjNDU0NTQ1KX06cm9vdHstLWNsci1zdGFjay12aWV3LWJvcmRlci1yYWRpdXM6LjE1cmVtOy0tY2xyLXN0YWNrLXZpZXctYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7''@;'; put 'put ''LS1jbHItc3RhY2stdmlldy1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC01MCk7LS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1ib3JkZXItYm90dG9tOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTMwMCk7LS1jbHItc3RhY2stdmlldy1jb2xvcjojNjY2NjY2Oy0tY2xyLXN0''@;'; put 'put ''YWNrLXZpZXctc3RhY2stYmxvY2stbGFiZWwtdGV4dC1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLWZvbnQtY29sb3IpOy0tY2xyLXN0YWNrLXZpZXctYm9yZGVyLWJveC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0zMDApOy0tY2xyLXN0YWNrLWJsb2NrLWNoYW5nZWQtYm9yZGVyLXRv''@;'; put 'put ''cC1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCk7LS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1sYWJlbC1hbmQtY29udGVudC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC01MCk7LS1jbHItc3RhY2stdmlldy1zdGFjay1jaGlsZHJlbi1zdGFjay1ibG9jay1i''@;'; put 'put ''b3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTIwMCk7LS1jbHItc3RhY2stdmlldy1zdGFjay1jaGlsZHJlbi1zdGFjay1ibG9jay1sYWJlbC1hbmQtY29udGVudC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1zdGFjay12aWV3LXN0''@;'; put 'put ''YWNrLWJsb2NrLWV4cGFuZGVkLWJnLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtc2VsZWN0aW9uLWNvbG9yKTstLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWV4cGFuZGFibGUtaG92ZXI6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMjAwKTstLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2Nr''@;'; put 'put ''LWNvbnRlbnQtdGV4dC1jb2xvcjppbmhlcml0Oy0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stZXhwYW5kZWQtdGV4dC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWNhcmV0LWNvbG9yOnZhcigtLWNsci1nbG9iYWwt''@;'; put 'put ''Zm9udC1jb2xvcil9LnN0YWNrLWhlYWRlcntmb250LXdlaWdodDo0MDA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtZW5kfS5zdGFjay1oZWFkZXIgLnN0YWNrLXRpdGxle2Rpc3BsYXk6YmxvY2s7ZmxleDoxIDEgYXV0bztwYWRkaW5nOi4zcmVtIDB9LnN0YWNrLWhlYWRlciAuc3Rh''@;'; put 'put ''Y2stYWN0aW9uc3tkaXNwbGF5OmJsb2NrO2ZsZXg6MCAwIGF1dG99LnN0YWNrLWhlYWRlciAuc3RhY2stYWN0aW9ucyAuc3RhY2stYWN0aW9ue21hcmdpbjowIDAgLjNyZW0gLjZyZW19LnN0YWNrLWhlYWRlciAuc3RhY2stYWN0aW9ucyAuc3RhY2stYWN0aW9uLmJ0bnttaW4td2lkdGg6MDtw''@;'; put 'put ''YWRkaW5nOjAgLjZyZW19LnN0YWNrLWhlYWRlciAuc3RhY2stYWN0aW9ucyAuc3RhY2stYWN0aW9uLmJ0bi1saW5re21hcmdpbi1yaWdodDotLjZyZW19LnN0YWNrLXZpZXd7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1jb2xvciwgIzY2NjY2Nik7Zm9udC1zaXplOi42''@;'; put 'put ''NXJlbTtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4ycmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW4tdG9wOjA7Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3''@;'; put 'put ''LWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItc3RhY2stdmlldy1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO292ZXJmbG93LXk6YXV0bztiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7YmFja2dyb3VuZC1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItc3RhY2stdmlldy1iZy1jb2xvciwgI2ZhZmFmYSk7d29yZC13cmFwOmJyZWFrLXdvcmR9LnN0YWNrLXZpZXcgZGQsLnN0YWNrLXZpZXcgZHR7bWFyZ2luLWlubGluZS1zdGFydDowO21hcmdpbi1sZWZ0OjB9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2Nre2Rpc3BsYXk6ZmxleDtmbGV4''@;'; put 'put ''LWZsb3c6cm93IHdyYXA7Ym9yZGVyLWJvdHRvbS13aWR0aDouMDVyZW07Ym9yZGVyLWJvdHRvbS13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZGVkZWRlO2JvcmRlci1ib3R0''@;'; put 'put ''b20tY29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stYm9yZGVyLWJvdHRvbSwgI2RlZGVkZSk7b3ZlcmZsb3cteTpoaWRkZW59LnN0YWNrLXZpZXc+LnN0YWNrLWJsb2NrOmxhc3QtY2hpbGQsLnN0YWNrLXZpZXc+Omxhc3QtY2hpbGQgLnN0YWNrLWJsb2NrOmxhc3Qtb2Yt''@;'; put 'put ''dHlwZXtib3JkZXItYm90dG9tOm5vbmU7Ym94LXNoYWRvdzowIC4wNXJlbSAjZGVkZWRlO2JveC1zaGFkb3c6MCAuMDVyZW0gMCB2YXIoLS1jbHItc3RhY2stdmlldy1ib3JkZXItYm94LWNvbG9yKX0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stY2hhbmdlZD4uc3RhY2stYmxvY2stbGFiZWx7''@;'; put 'put ''bWFyZ2luLWxlZnQ6LS40NXJlbX0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stY2hhbmdlZDpiZWZvcmV7Y29udGVudDoiICI7cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjA7d2lkdGg6MDtib3JkZXItdG9wOi40NXJlbSBzb2xpZDtib3JkZXItdG9wLWNvbG9yOiMwMDcyYTM7Ym9yZGVyLXRv''@;'; put 'put ''cC1jb2xvcjp2YXIoLS1jbHItc3RhY2stYmxvY2stY2hhbmdlZC1ib3JkZXItdG9wLWNvbG9yLCAjMDA3MmEzKTtib3JkZXItcmlnaHQ6LjQ1cmVtIHNvbGlkIHRyYW5zcGFyZW50fS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1sYWJlbHtwYWRkaW5nOi4zcmVtIC42cmVtO2JhY2tncm91bmQt''@;'; put 'put ''Y29sb3I6I2ZhZmFmYTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWxhYmVsLWFuZC1jb250ZW50LWJnLWNvbG9yLCAjZmFmYWZhKX0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stY29udGVudHtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXR9LnN0YWNr''@;'; put 'put ''LXZpZXcgLnN0YWNrLWJsb2NrLWNhcmV0e2FsaWduLXNlbGY6Y2VudGVyfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1sYWJlbHtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWxhYmVsLXRleHQtY29sb3IsICM2NjY2NjYpO2ZvbnQtc2l6ZTouNjVy''@;'; put 'put ''ZW07Zm9udC13ZWlnaHQ6NTAwO2xpbmUtaGVpZ2h0OjEuMnJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7ZmxleDoxIDEgYXV0bztkaXNwbGF5OmZsZXh9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWxhYmVsOmJlZm9yZXtkaXNwbGF5OmlubGluZS1ibG9jaztjb250ZW50OiIiO2Zsb2F0Omxl''@;'; put 'put ''ZnQ7aGVpZ2h0Oi43cmVtO3dpZHRoOi43cmVtO21hcmdpbjouMzVyZW0gLjI0cmVtIDAgMDt0ZXh0LWFsaWduOmNlbnRlcn0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stbGFiZWw6Zm9jdXN7b3V0bGluZTouMjVyZW0gYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3J9LnN0YWNrLXZpZXcg''@;'; put 'put ''LnN0YWNrLXZpZXcta2V5e2ZsZXg6MCAwIDQwJTttYXgtd2lkdGg6NDAlfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1jYXJldHtoZWlnaHQ6LjdyZW07d2lkdGg6LjdyZW07bWFyZ2luLXJpZ2h0Oi4yNHJlbTtmaWxsOiM2NjY7ZmlsbDp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9j''@;'; put 'put ''ay1jYXJldC1jb2xvciwgIzY2NjY2Nil9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWNvbnRlbnR7Y29sb3I6aW5oZXJpdDtjb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1jb250ZW50LXRleHQtY29sb3IsIGluaGVyaXQpO2ZsZXg6MSAxIGF1dG87d2lkdGg6NjAlO21h''@;'; put 'put ''cmdpbi1ib3R0b206MDtmb250LXdlaWdodDo0MDB9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWNvbnRlbnQ+OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stY29udGVudD46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnN0YWNrLXZpZXcgLnN0''@;'; put 'put ''YWNrLWNoaWxkcmVue2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0uc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4gLnN0YWNrLWJsb2Nre2JvcmRlci1ib3R0b20tY29sb3I6I2U4ZThlODtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LXN0YWNrLWNoaWxkcmVuLXN0''@;'; put 'put ''YWNrLWJsb2NrLWJvcmRlci1ib3R0b20tY29sb3IsICNlOGU4ZTgpfS5zdGFjay12aWV3IC5zdGFjay1jaGlsZHJlbj4uc3RhY2stYmxvY2s6bGFzdC1jaGlsZCwuc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4+Omxhc3QtY2hpbGQgLnN0YWNrLWJsb2NrOmxhc3Qtb2YtdHlwZXtib3JkZXIt''@;'; put 'put ''Ym90dG9tOm5vbmU7Ym94LXNoYWRvdzowIC4wNXJlbSAjZGVkZWRlO2JveC1zaGFkb3c6MCAuMDVyZW0gMCB2YXIoLS1jbHItc3RhY2stdmlldy1ib3JkZXItYm94LWNvbG9yKX0uc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4gLnN0YWNrLWJsb2NrLWxhYmVsLC5zdGFjay12aWV3IC5zdGFj''@;'; put 'put ''ay1jaGlsZHJlbiAuc3RhY2stYmxvY2stY29udGVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1jaGlsZHJlbi1zdGFjay1ibG9jay1sYWJlbC1hbmQtY29udGVudC1iZy1jb2xvciwgd2hpdGUpfS5zdGFjay12aWV3''@;'; put 'put ''IC5zdGFjay1jaGlsZHJlbiAuc3RhY2stYmxvY2stbGFiZWx7cGFkZGluZy1sZWZ0OjEuMnJlbX0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZT4uc3RhY2stYmxvY2stbGFiZWx7Y3Vyc29yOnBvaW50ZXJ9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU+LnN0''@;'; put 'put ''YWNrLWJsb2NrLWxhYmVsOmJlZm9yZXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTIlMjAx''@;'; put 'put ''MiUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2RlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NzdHlsZSUzRS5jbHMtMSU3QmZpbGwlM0ElMjM2NjY2NjYlM0IlN0QlM0MlMkZzdHlsZSUzRSUwQSUyMCUyMCUyMCUyMCUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlM0N0aXRs''@;'; put 'put ''ZSUzRUNhcmV0JTNDJTJGdGl0bGUlM0UlMEElMjAlMjAlMjAlMjAlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHMtMSUyMiUyMGQlM0QlMjJNNiUyQzlMMS4yJTJDNC4yYTAuNjglMkMwLjY4JTJDMCUyQzAlMkMxJTJDMS0xTDYlMkM3LjA4JTJDOS44NCUyQzMuMjRhMC42OCUyQzAuNjglMkMwJTJD''@;'; put 'put ''MSUyQzElMkMxJTJDMVolMjIlMkYlM0UlMEElM0MlMkZzdmclM0UlMEEpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7dHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpO2hlaWdodDouNnJlbTt3aWR0aDouNnJl''@;'; put 'put ''bX0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZT4uc3RhY2stYmxvY2stbGFiZWwsLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU+LnN0YWNrLWJsb2NrLWNvbnRlbnR7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4ycyBlYXNlLWluLW91dCxjb2xvciAu''@;'; put 'put ''MnMgZWFzZS1pbi1vdXR9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU6aG92ZXI6bm90KC5zdGFjay1ibG9jay1leHBhbmRlZCk+LnN0YWNrLWJsb2NrLWxhYmVse2JhY2tncm91bmQtY29sb3I6I2U4ZThlODtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3''@;'; put 'put ''LXN0YWNrLWJsb2NrLWV4cGFuZGFibGUtaG92ZXIsICNlOGU4ZTgpfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stbGFiZWw6YmVmb3Jle3RyYW5zZm9ybTpyb3RhdGUoMCl9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9j''@;'; put 'put ''ay1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNkOGUzZTk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1leHBhbmRlZC1iZy1jb2xvciwgI2Q4ZTNlOSk7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1leHBh''@;'; put 'put ''bmRlZC10ZXh0LWNvbG9yLCBibGFjayl9LnN0YWNrLXZpZXcgaW5wdXRbdHlwZT10ZXh0XSwuc3RhY2stdmlldyBpbnB1dFt0eXBlPXBhc3N3b3JkXSwuc3RhY2stdmlldyBpbnB1dFt0eXBlPW51bWJlcl0sLnN0YWNrLXZpZXcgaW5wdXRbdHlwZT1lbWFpbF0sLnN0YWNrLXZpZXcgaW5wdXRb''@;'; put 'put ''dHlwZT11cmxdLC5zdGFjay12aWV3IGlucHV0W3R5cGU9dGVsXSwuc3RhY2stdmlldyBpbnB1dFt0eXBlPWRhdGVdLC5zdGFjay12aWV3IGlucHV0W3R5cGU9dGltZV0sLnN0YWNrLXZpZXcgaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF0sLnN0YWNrLXZpZXcgLnNlbGVjdHtkaXNwbGF5Omlu''@;'; put 'put ''bGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjp0b3A7bWFyZ2luLXJpZ2h0Oi42cmVtO21hcmdpbi1ib3R0b206LS45NXJlbX0uc3RhY2stdmlldyBpbnB1dFt0eXBlPXRleHRdLC5zdGFjay12aWV3IGlucHV0W3R5cGU9cGFzc3dvcmRdLC5zdGFjay12aWV3IGlucHV0W3R5cGU9bnVtYmVyXSwu''@;'; put 'put ''c3RhY2stdmlldyBpbnB1dFt0eXBlPWVtYWlsXSwuc3RhY2stdmlldyBpbnB1dFt0eXBlPXVybF0sLnN0YWNrLXZpZXcgaW5wdXRbdHlwZT10ZWxdLC5zdGFjay12aWV3IGlucHV0W3R5cGU9ZGF0ZV0sLnN0YWNrLXZpZXcgaW5wdXRbdHlwZT10aW1lXSwuc3RhY2stdmlldyBpbnB1dFt0eXBl''@;'; put 'put ''PWRhdGV0aW1lLWxvY2FsXSwuc3RhY2stdmlldyAuc2VsZWN0IHNlbGVjdHtoZWlnaHQ6MS4ycmVtfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9dGV4dF0sLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFi''@;'; put 'put ''bGU+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT1wYXNzd29yZF0sLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT1udW1iZXJdLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlPi5zdGFjay1i''@;'; put 'put ''bG9jay1jb250ZW50IGlucHV0W3R5cGU9ZW1haWxdLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9dXJsXSwuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZT4uc3RhY2stYmxvY2stY29udGVudCBpbnB1''@;'; put 'put ''dFt0eXBlPXRlbF0sLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT1kYXRlXSwuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZT4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPXRpbWVdLC5zdGFj''@;'; put 'put ''ay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxde3RyYW5zaXRpb246YmFja2dyb3VuZC1zaXplIC4ycyBlYXNlLGJvcmRlci1ib3R0b20tY29sb3IgLjJzIGVhc2UtaW4tb3V0fS5zdGFjay12aWV3IC5z''@;'; put 'put ''dGFjay1ibG9jay1leHBhbmRhYmxlPi5zdGFjay1ibG9jay1jb250ZW50IC5zZWxlY3Qgc2VsZWN0e3RyYW5zaXRpb246Ym9yZGVyLWJvdHRvbS1jb2xvciAuMnMgZWFzZS1pbi1vdXR9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU+LnN0YWNrLWJsb2NrLWNvbnRlbnQgLnNl''@;'; put 'put ''bGVjdDphZnRlcnt0cmFuc2l0aW9uOmNvbG9yIC4ycyBlYXNlLWluLW91dH0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT10ZXh0XSwuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNv''@;'; put 'put ''bnRlbnQgaW5wdXRbdHlwZT1wYXNzd29yZF0sLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9bnVtYmVyXSwuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlw''@;'; put 'put ''ZT1lbWFpbF0sLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9dXJsXSwuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT10ZWxdLC5zdGFjay12aWV3IC5z''@;'; put 'put ''dGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPWRhdGVdLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPXRpbWVdLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4u''@;'; put 'put ''c3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXXtib3JkZXItYm90dG9tLWNvbG9yOiM4YzhjOGM7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDAsICM4YzhjOGMpO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJv''@;'; put 'put ''dHRvbSx0cmFuc3BhcmVudCA5NSUsdmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDAsICMwMDcyYTMpIDk1JSkgbm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTowIDEwMCU7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXNpemUgLjJzIGVhc2V9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVk''@;'; put 'put ''Pi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9dGV4dF06Zm9jdXMsLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9dGV4dF0uY2xyLWZvY3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3Rh''@;'; put 'put ''Y2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPXBhc3N3b3JkXTpmb2N1cywuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT1wYXNzd29yZF0uY2xyLWZvY3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4u''@;'; put 'put ''c3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPW51bWJlcl06Zm9jdXMsLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9bnVtYmVyXS5jbHItZm9jdXMsLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5z''@;'; put 'put ''dGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9ZW1haWxdOmZvY3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPWVtYWlsXS5jbHItZm9jdXMsLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFj''@;'; put 'put ''ay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9dXJsXTpmb2N1cywuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT11cmxdLmNsci1mb2N1cywuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2Nr''@;'; put 'put ''LWNvbnRlbnQgaW5wdXRbdHlwZT10ZWxdOmZvY3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPXRlbF0uY2xyLWZvY3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVu''@;'; put 'put ''dCBpbnB1dFt0eXBlPWRhdGVdOmZvY3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPWRhdGVdLmNsci1mb2N1cywuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5w''@;'; put 'put ''dXRbdHlwZT10aW1lXTpmb2N1cywuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT10aW1lXS5jbHItZm9jdXMsLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5''@;'; put 'put ''cGU9ZGF0ZXRpbWUtbG9jYWxdOmZvY3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXS5jbHItZm9jdXN7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDA3MmEzO2JvcmRlci1ib3R0b20tY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDAsICMwMDcyYTMpO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCV9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IC5zZWxlY3Qgc2VsZWN0e2JvcmRlci1ib3R0b20tY29sb3I6IzhjOGM4Yztib3Jk''@;'; put 'put ''ZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTYwMCwgIzhjOGM4Yyl9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IC5zZWxlY3Q6YWZ0ZXJ7Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJh''@;'; put 'put ''bC02MDAsICM4YzhjOGMpfS5tb2RhbCAuc3RhY2stdmlld3toZWlnaHQ6NTV2aDttYXJnaW4tYm90dG9tOjB9LnN0YWNrLXZpZXcgY2xyLXN0YWNrLWJsb2NrLnN0YWNrLWJsb2NrLWV4cGFuZGFibGUgLnN0YWNrLWJsb2NrLWxhYmVsOmJlZm9yZXtjb250ZW50Om5vbmV9LnN0YWNrLXZpZXcg''@;'; put 'put ''LnN0YWNrLWNoaWxkcmVuIGNsci1zdGFjay1ibG9jayAuc3RhY2stYmxvY2stbGFiZWwsLnN0YWNrLXZpZXcgLnN0YWNrLWNoaWxkcmVuIC5zdGFjay1ibG9jay1sYWJlbHtwYWRkaW5nLWxlZnQ6MS44cmVtfS5zdGFjay12aWV3IC5zdGFjay1jaGlsZHJlbiBjbHItc3RhY2stYmxvY2sgLnN0''@;'; put 'put ''YWNrLWJsb2NrLWxhYmVsOmJlZm9yZSwuc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4gLnN0YWNrLWJsb2NrLWxhYmVsOmJlZm9yZXtkaXNwbGF5Om5vbmV9LnN0YWNrLXZpZXcgLnN0YWNrLWNoaWxkcmVuIGNsci1zdGFjay1ibG9jayAuc3RhY2stYmxvY2stY29udGVudCwuc3RhY2stdmll''@;'; put 'put ''dyAuc3RhY2stY2hpbGRyZW4gLnN0YWNrLWJsb2NrLWNvbnRlbnR7cGFkZGluZy1sZWZ0Oi4zNnJlbX06cm9vdHstLWNsci10cmVlLWJvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMpOy0tY2xyLXRyZWUtbm9kZS1jYXJldC1saW5rLWhvdmVyLWNvbG9yOnZhcigt''@;'; put 'put ''LWNsci1jb2xvci1uZXV0cmFsLTEwMDApOy0tY2xyLXRyZWUtbGluay1ob3Zlci1jb2xvcjp2YXIoLS1jbHItY3VzdG9tLWxpbmtzLWhvdmVyLWNvbG9yKTstLWNsci10cmVlLWxpbmstc2VsZWN0aW9uLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtc2VsZWN0aW9uLWNvbG9yKTstLWNsci10cmVl''@;'; put 'put ''LWxpbmstdGV4dC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLXRyZWUtbm9kZS1jYXJldC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC01MDApfS5jbHItdHJlZS1ub2Rle2Rpc3BsYXk6YmxvY2t9LmNsci10cmVlLW5vZGUtY29udGVudC1jb250YWluZXJ7''@;'; put 'put ''ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0uY2xyLXRyZWVub2RlLWNvbnRlbnR7ZmxleDoxIDEgYXV0bztkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItdG9wLWxlZnQtcmFk''@;'; put 'put ''aXVzOnZhcigtLWNsci10cmVlLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czouMTVyZW07Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1jbHItdHJlZS1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2xpbmUtaGVpZ2h0OjEuNjJyZW19LmNsci10''@;'; put 'put ''cmVlbm9kZS1jb250ZW50OmZpcnN0LWNoaWxke3BhZGRpbmctbGVmdDoxLjYycmVtfS5jbHItdHJlZW5vZGUtY29udGVudCBjZHMtaWNvbiwuY2xyLXRyZWVub2RlLWNvbnRlbnQgY2xyLWljb257aGVpZ2h0Oi44cmVtO3dpZHRoOi44cmVtO21hcmdpbi1yaWdodDouM3JlbTt2ZXJ0aWNhbC1h''@;'; put 'put ''bGlnbjptaWRkbGV9LmNsci10cmVlbm9kZS1jYXJldHtmbGV4OjAgMCAxLjYycmVtO3BhZGRpbmc6MDttYXJnaW46MDtoZWlnaHQ6MS42MnJlbTt3aWR0aDoxLjYycmVtO2JhY2tncm91bmQ6MCAwO2JvcmRlcjowO2NvbG9yOiNiM2IzYjM7Y29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jYXJl''@;'; put 'put ''dC1jb2xvciwgI2IzYjNiMyk7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZS1vZmZzZXQ6LS4yNXJlbX0uY2xyLXRyZWVub2RlLWNhcmV0OmhvdmVye2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jYXJldC1saW5rLWhvdmVyLWNvbG9yLCBibGFjayl9LmNsci10cmVlLW5vZGUt''@;'; put 'put ''Y2FyZXQtaWNvbntoZWlnaHQ6LjhyZW07d2lkdGg6LjhyZW07dmVydGljYWwtYWxpZ246bWlkZGxlfS5jbHItdHJlZW5vZGUtc3Bpbm5lci1jb250YWluZXJ7aGVpZ2h0OjEuNjJyZW07d2lkdGg6MS42MnJlbTtwYWRkaW5nOi40MXJlbX0uY2xyLXRyZWVub2RlLXNwaW5uZXJ7aGVpZ2h0Oi44''@;'; put 'put ''cmVtO3dpZHRoOi44cmVtO21pbi1oZWlnaHQ6LjhyZW07bWluLXdpZHRoOi44cmVtfS5jbHItdHJlZW5vZGUtY2hpbGRyZW57bWFyZ2luLWxlZnQ6MS4xN3JlbTt3aWxsLWNoYW5nZTpoZWlnaHQ7b3ZlcmZsb3cteTpoaWRkZW59LmNsci10cmVlbm9kZS1saW5re2Rpc3BsYXk6aW5saW5lLWJs''@;'; put 'put ''b2NrO2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7bWFyZ2luOjA7cGFkZGluZzowIDAgMCAuM3JlbTtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci10cmVlLWxpbmstdGV4dC1jb2xvciwgIzY2NjY2Nik7Y3Vyc29yOnBvaW50ZXI7bGluZS1oZWlnaHQ6''@;'; put 'put ''aW5oZXJpdDt0ZXh0LWFsaWduOmxlZnR9LmNsci10cmVlbm9kZS1saW5rOmxpbmssLmNsci10cmVlbm9kZS1saW5rOnZpc2l0ZWQsLmNsci10cmVlbm9kZS1saW5rOmFjdGl2ZSwuY2xyLXRyZWVub2RlLWxpbms6aG92ZXJ7Y29sb3I6aW5oZXJpdH0uY2xyLXRyZWVub2RlLWxpbms6aG92ZXIs''@;'; put 'put ''LmNsci10cmVlbm9kZS1saW5rOmZvY3Vze2JhY2tncm91bmQ6I2U4ZThlODtiYWNrZ3JvdW5kOnZhcigtLWNsci10cmVlLWxpbmstaG92ZXItY29sb3IsICNlOGU4ZTgpO3RleHQtZGVjb3JhdGlvbjpub25lfS5jbHItdHJlZW5vZGUtbGluay5hY3RpdmV7YmFja2dyb3VuZDojZDhlM2U5O2Jh''@;'; put 'put ''Y2tncm91bmQ6dmFyKC0tY2xyLXRyZWUtbGluay1zZWxlY3Rpb24tY29sb3IsICNkOGUzZTkpO2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jYXJldC1saW5rLWhvdmVyLWNvbG9yLCBibGFjayl9LmNsci10cmVlLW5vZGUtY29udGVudC1jb250YWluZXI+LmNsci1jaGVj''@;'; put 'put ''a2JveC13cmFwcGVye2hlaWdodDoxLjYycmVtO3dpZHRoOjEuNjJyZW07cGFkZGluZy10b3A6LjIxcmVtO3BhZGRpbmctbGVmdDouNDFyZW19LmNsci10cmVlLW5vZGUtY29udGVudC1jb250YWluZXI+LmNsci1jaGVja2JveC13cmFwcGVyOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjEuNjJy''@;'; put 'put ''ZW19LmNsci10cmVlbm9kZS1jb250ZW50IC5sYWJlbHttYXJnaW4tbGVmdDouM3JlbX1Ac3VwcG9ydHMgKC1tcy1pbWUtYWxpZ246YXV0byl7LmNsci10cmVlbm9kZS1jb250ZW50IC5sYWJlbHttYXJnaW4tbGVmdDouMTVyZW19fV86LW1zLWlucHV0LXBsYWNlaG9sZGVyIC5jbHItdHJlZW5v''@;'; put 'put ''ZGUtY29udGVudCAubGFiZWwsOnJvb3QgLmNsci10cmVlbm9kZS1jb250ZW50IC5sYWJlbHttYXJnaW4tbGVmdDouMTVyZW19OnJvb3R7LS1jbHItZGF0YWdyaWQtZm9udC1jb2xvcjojYWNiYWMzOy0tY2xyLWRhdGFncmlkLWRlZmF1bHQtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1u''@;'; put 'put ''ZXV0cmFsLTQwMCk7LS1jbHItZGF0YWdyaWQtaWNvbi1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDApOy0tY2xyLWRhdGFncmlkLXJvdy1ob3Zlcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0yMDApOy0tY2xyLWRhdGFncmlkLXJvdy1ob3Zlci1mb250LWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1jb2xvci1uZXV0cmFsLTEwMDApOy0tY2xyLWRhdGFncmlkLWFjdGlvbi10b2dnbGU6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1kYXRhZ3JpZC1wYWdpbmF0aW9uLWJ0bi1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLWRhdGFncmlkLXBhZ2lu''@;'; put 'put ''YXRpb24tYnRuLWRpc2FibGVkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTYwMCk7LS1jbHItZGF0YWdyaWQtcGFnaW5hdGlvbi1pbnB1dC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWRlZmF1bHQtYm9yZGVyLWNvbG9yKTstLWNsci1kYXRhZ3JpZC1wYWdpbmF0aW9u''@;'; put 'put ''LWlucHV0LWJvcmRlci1mb2N1cy1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTQwMCk7LS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItZGF0YWdy''@;'; put 'put ''aWQtZGVmYXVsdC1ib3JkZXItY29sb3IpOy0tY2xyLWRhdGFncmlkLWFjdGlvbi1wb3BvdmVyLWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTIwMCk7LS1jbHItZGF0YWdyaWQtcm93LXNlbGVjdGVkOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTEwMDApOy0tY2xyLWRhdGFn''@;'; put 'put ''cmlkLWxvYWRpbmctYmFja2dyb3VuZDpyZ2JhKDI1NSwgMjU1LCAyNTUsIC42KTstLWNsci1kYXRhZ3JpZC1wb3BvdmVycy1ib3gtc2hhZG93LWNvbG9yOnJnYmEoMTQwLCAxNDAsIDE0MCwgLjI1KTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tc3dpdGNoLWhlYWRlci1mb250LWNvbG9yOnZhcigt''@;'; put 'put ''LWNsci1jb2xvci1uZXV0cmFsLTUwMCk7LS1jbHItZGF0YWdyaWQtY29sdW1uLXN3aXRjaC1oZWFkZXItZm9udC1ob3Zlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCk7LS1jbHItZGF0YWdyaWQtZGV0YWlsLWNhcmV0LWljb24tb3Blbi1iZy1jb2xvcjp2YXIoLS1jbHItY29s''@;'; put 'put ''b3ItYWN0aW9uLTYwMCk7LS1jbHItZGF0YWdyaWQtZGV0YWlsLWNhcmV0LWljb24tb3Blbi1pY29uLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWRhdGFncmlkLXBsYWNlaG9sZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItZGF0YWdy''@;'; put 'put ''aWQtcGxhY2Vob2xkZXItZm9udC1zaXplOi44cmVtOy0tY2xyLWRhdGFncmlkLXBhZ2luYXRpb24tYnRuLWRpc2FibGVkLW9wYWNpdHk6LjU2fS5kYXRhZ3JpZHtib3JkZXItY29sbGFwc2U6c2VwYXJhdGU7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdp''@;'; put 'put ''ZHRoOnZhcigtLWNsci10YWJsZS1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItdGFibGUtYm9y''@;'; put 'put ''ZGVyLXJhZGl1cywgLjE1cmVtKTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdGFibGUtYmdjb2xvciwgd2hpdGUpO2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXRhYmxlLWZvbnQtY29sb3IsICM2NjY2NjYpO21hcmdpbjowO21hcmdpbi10b3A6''@;'; put 'put ''MS4ycmVtO21heC13aWR0aDoxMDAlO3dpZHRoOjEwMCV9LmRhdGFncmlkIC5kYXRhZ3JpZC1jb2x1bW4sLmRhdGFncmlkIC5kYXRhZ3JpZC1jZWxse2ZvbnQtc2l6ZTouNjVyZW07bGluZS1oZWlnaHQ6LjdyZW07Ym9yZGVyLXRvcC1zdHlsZTpzb2xpZDtib3JkZXItdG9wLXdpZHRoOi4wNXJl''@;'; put 'put ''bTtib3JkZXItdG9wLXdpZHRoOnZhcigtLWNsci10YWJsZS1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItdG9wLWNvbG9yOiNlOGU4ZTg7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jbHItdGFibGVyb3ctYm9yZGVyY29sb3IsICNlOGU4ZTgpO3BhZGRpbmc6LjU1cmVtIC42cmVtO3RleHQt''@;'; put 'put ''YWxpZ246Y2VudGVyO3ZlcnRpY2FsLWFsaWduOnRvcH0uZGF0YWdyaWQgLmRhdGFncmlkLWNvbHVtbi5sZWZ0LC5kYXRhZ3JpZCAuZGF0YWdyaWQtY2VsbC5sZWZ0e3RleHQtYWxpZ246bGVmdH0uZGF0YWdyaWQgLmRhdGFncmlkLWNvbHVtbi5sZWZ0OmZpcnN0LWNoaWxkLC5kYXRhZ3JpZCAu''@;'; put 'put ''ZGF0YWdyaWQtY2VsbC5sZWZ0OmZpcnN0LWNoaWxke3BhZGRpbmctbGVmdDouM3JlbX0uZGF0YWdyaWQgLmRhdGFncmlkLWNvbHVtbntjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci10aGVhZC1jb2xvciwgIzY2NjY2Nik7Zm9udC1zaXplOi41NXJlbTtmb250LXdlaWdodDo2MDA7bGV0dGVy''@;'; put 'put ''LXNwYWNpbmc6LjAzZW07YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRoZWFkLWJnY29sb3IsICNmYWZhZmEpO3ZlcnRpY2FsLWFsaWduOmJvdHRvbTtib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkO2JvcmRlci1ib3R0b20td2lkdGg6LjA1cmVt''@;'; put 'put ''O2JvcmRlci1ib3R0b20td2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1ib3R0b20tY29sb3I6I2NjYztib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JvcmRlci10b3A6MCBub25lfS5kYXRh''@;'; put 'put ''Z3JpZCAuZGF0YWdyaWQtYm9keSAuZGF0YWdyaWQtcm93OmZpcnN0LWNoaWxkIC5kYXRhZ3JpZC1jZWxse2JvcmRlci10b3A6MCBub25lfS5kYXRhZ3JpZCAuZGF0YWdyaWQtYm9keSsuZGF0YWdyaWQtYm9keXtib3JkZXItdG9wLXN0eWxlOnNvbGlkO2JvcmRlci10b3Atd2lkdGg6LjA1cmVt''@;'; put 'put ''O2JvcmRlci10b3Atd2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci10b3AtY29sb3I6I2NjYztib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpfS5kYXRhZ3JpZCAuZGF0YWdyaWQtaGVhZGVyIC5kYXRh''@;'; put 'put ''Z3JpZC1jb2x1bW46Zmlyc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6LjFyZW07Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cywgLjFyZW0pfS5kYXRhZ3JpZCAuZGF0YWdyaWQtaGVhZGVyIC5kYXRh''@;'; put 'put ''Z3JpZC1jb2x1bW46bGFzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6LjFyZW07Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0tY2xyLXRhYmxlLWNvcm5lcmNlbGxyYWRpdXMsIC4xcmVtKX0uZGF0YWdyaWQgLmRhdGFncmlkLWJvZHk6bGFzdC1j''@;'; put 'put ''aGlsZCAuZGF0YWdyaWQtcm93Omxhc3QtY2hpbGQgLmRhdGFncmlkLWNlbGw6Zmlyc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6LjFyZW07Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cywg''@;'; put 'put ''LjFyZW0pfS5kYXRhZ3JpZCAuZGF0YWdyaWQtYm9keTpsYXN0LWNoaWxkIC5kYXRhZ3JpZC1yb3c6bGFzdC1jaGlsZCAuZGF0YWdyaWQtY2VsbDpsYXN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czouMXJlbTtib3JkZXItYm90dG9tLXJpZ2h0LXJh''@;'; put 'put ''ZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cywgLjFyZW0pfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1jb2x1bW4sLmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWNlbGx7cGFkZGluZy10b3A6LjNyZW07cGFkZGluZy1ib3R0b206LjI1cmVtfS5kYXRhZ3JpZC1o''@;'; put 'put ''b3N0e2Rpc3BsYXk6ZmxleDtmbGV4LWZsb3c6Y29sdW1uIG5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0uZGF0YWdyaWR7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7LW1zLW92ZXJmbG93LXN0eWxlOi1tcy1hdXRvaGlkaW5nLXNjcm9s''@;'; put 'put ''bGJhcjtvdmVyZmxvdzphdXRvO2ZsZXg6MSAxIGF1dG87bWFyZ2luLXRvcDouNnJlbX0uZGF0YWdyaWQtY29udGFpbmVye3dpZHRoOmF1dG87Zm9udC1zaXplOi42NXJlbTtwYWRkaW5nOi41NXJlbSAuNnJlbX0uZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldHtwYWRkaW5nOi4xcmVtIC4ycmVt''@;'; put 'put ''IC4xNXJlbTt0ZXh0LWFsaWduOmNlbnRlcn0uZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNl''@;'; put 'put ''Om5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZDowIDA7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjEuNXJlbTt3aWR0aDoxLjVyZW19YnV0dG9uLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQgLmRhdGFncmlk''@;'; put 'put ''LWV4cGFuZGFibGUtY2FyZXQtYnV0dG9ue2N1cnNvcjpwb2ludGVyfS5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LWljb257Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtaWNvbi1jb2xvciwgIzhjOGM4Yyk7bWFyZ2lu''@;'; put 'put ''LXRvcDouMTVyZW19LmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQtaWNvbiBzdmd7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2UtaW4tb3V0fS5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IC5zcGlubmVye21hcmdpbi10b3A6LjNyZW19''@;'; put 'put ''LmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQuZGF0YWdyaWQtY29sdW1ue3BhZGRpbmc6LjU1cmVtIC42cmVtfS5kYXRhZ3JpZC1oZWFkZXIsLmRhdGFncmlkLWJvZHksLmRhdGFncmlkLXJvdywuZGF0YWdyaWQtY29sdW1uLC5kYXRhZ3JpZC1jZWxsLC5kYXRhZ3JpZC1maXhlZC1jb2x1bW57''@;'; put 'put ''ZGlzcGxheTpibG9ja30uZGF0YWdyaWQtcm93e2JvcmRlci10b3Atc3R5bGU6c29saWQ7Ym9yZGVyLXRvcC13aWR0aDouMDVyZW07Ym9yZGVyLXRvcC13aWR0aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXRvcC1jb2xvcjojY2NjO2JvcmRlci10b3AtY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvciwgI2NjY2NjYyl9LmRhdGFncmlkLXJvdzpmaXJzdC1vZi10eXBle2JvcmRlci10b3A6bm9uZX0uZGF0YWdyaWQtcm93OmhvdmVyLC5kYXRhZ3JpZC1yb3c6aG92ZXIgLmRhdGFncmlkLXJvdy1zdGlja3l7YmFja2dyb3VuZC1jb2xvcjoj''@;'; put 'put ''ZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXJvdy1ob3ZlciwgI2U4ZThlOCl9LmRhdGFncmlkLXJvdy5kYXRhZ3JpZC1zZWxlY3RlZCwuZGF0YWdyaWQtcm93LmRhdGFncmlkLXNlbGVjdGVkIC5kYXRhZ3JpZC1yb3ctc3RpY2t5e2NvbG9yOiMwMDA7Y29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWRhdGFncmlkLXJvdy1zZWxlY3RlZCwgYmxhY2spO2JhY2tncm91bmQtY29sb3I6I2Q4ZTNlOTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtc2VsZWN0aW9uLWNvbG9yLCAjZDhlM2U5KX0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3c6''@;'; put 'put ''YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDoxMDAlO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDotLjNyZW07Ym9yZGVyLXRvcDouM3JlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOi4zcmVtIHNvbGlkIHRyYW5zcGFyZW50O2Jv''@;'; put 'put ''cmRlci1yaWdodC13aWR0aDouM3JlbTtib3JkZXItcmlnaHQtc3R5bGU6c29saWQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNjY2M7Ym9yZGVyLXJpZ2h0LWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJvcmRlci1jb2xvciwgI2NjY2NjYyl9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQt''@;'; put 'put ''YWN0aW9uLW92ZXJmbG93OmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDoxMDAlO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDotLjI1cmVtO2JvcmRlci10b3A6LjI1cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206LjI1cmVtIHNv''@;'; put 'put ''bGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodC13aWR0aDouMjVyZW07Ym9yZGVyLXJpZ2h0LXN0eWxlOnNvbGlkO2JvcmRlci1yaWdodC1jb2xvcjojZmZmO2JvcmRlci1yaWdodC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvciwgd2hpdGUpfS5kYXRhZ3JpZC1y''@;'; put 'put ''b3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW06Zm9jdXN7b3V0bGluZTowfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0uZGlzYWJsZWQsLmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rp''@;'; put 'put ''b24taXRlbTpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWQ7b3BhY2l0eTouNDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtLmRpc2FibGVkOmhvdmVyLC5kYXRhZ3Jp''@;'; put 'put ''ZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW06ZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDowIDB9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5kaXNhYmxlZDphY3RpdmUsLmRhdGFncmlkLXJvdyAuZGF0YWdy''@;'; put 'put ''aWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5kaXNhYmxlZDpmb2N1cywuZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmRpc2FibGVkOmFjdGl2ZSwuZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1p''@;'; put 'put ''dGVtOmRpc2FibGVkOmZvY3Vze2JhY2tncm91bmQ6MCAwO2JveC1zaGFkb3c6bm9uZX0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtIGNkcy1pY29uLC5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0g''@;'; put 'put ''Y2xyLWljb257dmVydGljYWwtYWxpZ246bWlkZGxlO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0uMDVyZW0sMCl9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93e3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWNsci1kYXRh''@;'; put 'put ''Z3JpZC1wb3BvdmVyLWJnLWNvbG9yLCB3aGl0ZSk7cGFkZGluZzouM3JlbTttYXJnaW4tbGVmdDouM3JlbTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItY29sb3I6''@;'; put 'put ''I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSAjOGM4YzhjNDA7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gdmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXJzLWJveC1z''@;'; put 'put ''aGFkb3ctY29sb3IsIHJnYmEoMTQwLCAxNDAsIDE0MCwgLjI1KSk7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtmb250LXdlaWdodDo0MDA7d2hpdGUtc3BhY2U6bm93cmFwfS5kYXRhZ3JpZC1yb3cgLmRh''@;'; put 'put ''dGFncmlkLWFjdGlvbi1vdmVyZmxvdzpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjEwMCU7d2lkdGg6MDtoZWlnaHQ6MDttYXJnaW4tdG9wOi0uM3JlbTtib3JkZXItdG9wOi4zcmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206LjNy''@;'; put 'put ''ZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0LXdpZHRoOi4zcmVtO2JvcmRlci1yaWdodC1zdHlsZTpzb2xpZDtib3JkZXItcmlnaHQtY29sb3I6I2NjYztib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKX0u''@;'; put 'put ''ZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3c6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjEwMCU7d2lkdGg6MDtoZWlnaHQ6MDttYXJnaW4tdG9wOi0uMjVyZW07Ym9yZGVyLXRvcDouMjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7''@;'; put 'put ''Ym9yZGVyLWJvdHRvbTouMjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0LXdpZHRoOi4yNXJlbTtib3JkZXItcmlnaHQtc3R5bGU6c29saWQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNmZmY7Ym9yZGVyLXJpZ2h0LWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJnLWNv''@;'; put 'put ''bG9yLCB3aGl0ZSl9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpob3ZlciwuZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2U4ZThlODtiYWNrZ3JvdW5k''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1hY3Rpb24tcG9wb3Zlci1ob3Zlci1jb2xvciwgI2U4ZThlOCk7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5hY3RpdmV7YmFja2dyb3VuZDojZThlOGU4O2Jh''@;'; put 'put ''Y2tncm91bmQ6dmFyKC0tY2xyLWRhdGFncmlkLXJvdy1ob3ZlciwgI2U4ZThlOCk7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwLCBibGFjayl9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93e3Bvc2l0aW9uOmFic29sdXRlO2JhY2tn''@;'; put 'put ''cm91bmQ6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJnLWNvbG9yLCB3aGl0ZSk7cGFkZGluZzouM3JlbTttYXJnaW4tbGVmdDouM3JlbTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVy''@;'; put 'put ''ZW0pO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSAjOGM4YzhjNDA7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVy''@;'; put 'put ''ZW0gdmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXJzLWJveC1zaGFkb3ctY29sb3IsIHJnYmEoMTQwLCAxNDAsIDE0MCwgLjI1KSk7Ym9yZGVyLWNvbG9yOi4xNXJlbTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7Zm9udC13ZWlnaHQ6NDAwO3do''@;'; put 'put ''aXRlLXNwYWNlOm5vd3JhcH0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3c6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDoxMDAlO3dpZHRoOjA7aGVpZ2h0OjA7bWFyZ2luLXRvcDotLjNyZW07Ym9yZGVyLXJpZ2h0Oi4zcmVt''@;'; put 'put ''IHNvbGlkO2JvcmRlci1yaWdodC1jb2xvcjojY2NjO2JvcmRlci1yaWdodC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JvcmRlci10b3A6LjNyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTouM3JlbSBzb2xpZCB0cmFu''@;'; put 'put ''c3BhcmVudH0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3c6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjEwMCU7d2lkdGg6MDtoZWlnaHQ6MDttYXJnaW4tdG9wOi0uMjVyZW07Ym9yZGVyLXJpZ2h0Oi4yNXJlbSBzb2xpZCAj''@;'; put 'put ''ZmZmO2JvcmRlci10b3A6LjI1cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206LjI1cmVtIHNvbGlkIHRyYW5zcGFyZW50fS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW17Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItZHJvcGRv''@;'; put 'put ''d24tdGV4dC1jb2xvciwgIzY2NjY2Nik7Zm9udC1zaXplOi43cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjEuMTVyZW07bWFyZ2luOjA7cGFkZGluZzouMDVyZW0gMS4ycmVt''@;'; put 'put ''IDA7dGV4dC1hbGlnbjpsZWZ0O3dpZHRoOjEwMCV9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpob3ZlciwuZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmZvY3Vze3RleHQtZGVjb3JhdGlvbjpu''@;'; put 'put ''b25lO2JhY2tncm91bmQtY29sb3I6I2U4ZThlODtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1hY3Rpb24tcG9wb3Zlci1ob3Zlci1jb2xvciwgI2U4ZThlOCl9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5hY3RpdmV7YmFj''@;'; put 'put ''a2dyb3VuZDojZThlOGU4O2JhY2tncm91bmQ6dmFyKC0tY2xyLWRhdGFncmlkLXJvdy1ob3ZlciwgI2U4ZThlOCk7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcm93LWhvdmVyLWZvbnQtY29sb3IsIGJsYWNrKX0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3Zl''@;'; put 'put ''cmZsb3cgLmFjdGlvbi1pdGVtOmZvY3Vze291dGxpbmU6MH0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtLmRpc2FibGVkLC5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW06ZGlzYWJsZWR7Y3Vyc29y''@;'; put 'put ''Om5vdC1hbGxvd2VkO29wYWNpdHk6LjQ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5kaXNhYmxlZDpob3ZlciwuZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24t''@;'; put 'put ''b3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmRpc2FibGVkOmhvdmVye2JhY2tncm91bmQ6MCAwfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0uZGlzYWJsZWQ6YWN0aXZlLC5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0''@;'; put 'put ''aW9uLWl0ZW0uZGlzYWJsZWQ6Zm9jdXMsLmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpkaXNhYmxlZDphY3RpdmUsLmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpkaXNhYmxlZDpmb2N1c3tiYWNr''@;'; put 'put ''Z3JvdW5kOjAgMDtib3gtc2hhZG93Om5vbmV9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbSBjZHMtaWNvbiwuZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtIGNsci1pY29ue3ZlcnRpY2FsLWFsaWdu''@;'; put 'put ''Om1pZGRsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtLjA1cmVtLDApfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXJvdy1kZXRhaWwtd3JhcHBlcntmbGV4OjEgMSBhdXRvO2Rpc3BsYXk6ZmxleH0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1yb3ctZGV0YWlse3dpZHRoOmF1dG99LmRhdGFn''@;'; put 'put ''cmlkLXJvdyAuZGF0YWdyaWQtcm93LWRldGFpbCAuZGF0YWdyaWQtY2VsbHtwYWRkaW5nLXRvcDowO2JvcmRlcjowfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXNlbGVjdHttaW4td2lkdGg6LjRyZW19LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtc2lnbnBvc3QtdHJpZ2dlciAuc2lnbnBvc3R7''@;'; put 'put ''bWFyZ2luOi0uMzZyZW0gMDtoZWlnaHQ6MS4yMzZyZW19LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtc2lnbnBvc3QtdHJpZ2dlciAuc2lnbnBvc3QgLnNpZ25wb3N0LXRyaWdnZXJ7aGVpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6MS4ycmVtfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXJvdy1z''@;'; put 'put ''dGlja3l7ei1pbmRleDo1MDB9LmRhdGFncmlkLXJvdy1zdGlja3l7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJnY29sb3IsIHdoaXRlKTtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOm5vd3JhcDtwb3NpdGlvbjpzdGlja3k7bGVmdDowO3ot''@;'; put 'put ''aW5kZXg6NTAyfS5kYXRhZ3JpZC1yb3ctc3RpY2t5IC5kYXRhZ3JpZC1jZWxsOmxhc3QtY2hpbGQ6YWZ0ZXJ7Y29udGVudDoiIjt3aWR0aDouMDVyZW07aGVpZ2h0OmNhbGMoMTAwJSAtIC41cmVtKTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDouMjVyZW07YmFja2dyb3VuZC1jb2xv''@;'; put 'put ''cjojY2NjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvciwgI2NjY2NjYyl9LmRhdGFncmlkLXJvdy1zY3JvbGxhYmxle2ZsZXg6MSAxIGF1dG87ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpjb2x1bW4gbm93cmFwfS5kYXRhZ3JpZC1yb3ctc2Nyb2xsYWJsZS5p''@;'; put 'put ''cy1yZXBsYWNlZHtmbGV4LWRpcmVjdGlvbjpyb3d9LmRhdGFncmlkLXJvdy1zY3JvbGxhYmxlLmlzLXJlcGxhY2VkIC5kYXRhZ3JpZC1zY3JvbGxpbmctY2VsbHN7ZmxleDowIDAgYXV0b30uZGF0YWdyaWQtcm93LXNjcm9sbGFibGUgLmRhdGFncmlkLWNvbHVtbjpsYXN0LWNoaWxkIC5kYXRh''@;'; put 'put ''Z3JpZC1jb2x1bW4tc2VwYXJhdG9ye2Rpc3BsYXk6bm9uZX0uZGF0YWdyaWQtcm93LWZsZXh7ZmxleDoxIDEgYXV0bztkaXNwbGF5OmZsZXg7ZmxleC1mbG93OnJvdyBub3dyYXB9LmRhdGFncmlkLXJvdy1mbGV4IC5kYXRhZ3JpZC1yb3ctZGV0YWlse2Rpc3BsYXk6ZmxleDtmbGV4LWZsb3c6''@;'; put 'put ''cm93IG5vd3JhcH0uZGF0YWdyaWQtcm93LWZsZXggLmRhdGFncmlkLXJvdy1kZXRhaWwgLmRhdGFncmlkLWNlbGx7cGFkZGluZy10b3A6MH0uZGF0YWdyaWQtc2Nyb2xsaW5nLWNlbGxzLC5kYXRhZ3JpZC1zY3JvbGxpbmctZGV0YWlsc3tkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0bztmbGV4''@;'; put 'put ''LWZsb3c6cm93IG5vd3JhcH0uZGF0YWdyaWQtYWN0aW9uLWJhcnttYXJnaW4tdG9wOjEuMnJlbX0uZGF0YWdyaWQtYWN0aW9uLWJhcn4uZGF0YWdyaWQtc3Bpbm5lcntoZWlnaHQ6Y2FsYygxMDAlIC0gMS4ycmVtKTt0b3A6MS4ycmVtfS5kYXRhZ3JpZC1oZWFkZXJ7cG9zaXRpb246c3RpY2t5''@;'; put 'put ''O3RvcDowO3otaW5kZXg6NTAxO3dpZHRoOmF1dG99LmRhdGFncmlkLWhlYWRlciAuZGF0YWdyaWQtY29sdW1ue2JvcmRlci1ib3R0b206bm9uZX0uZGF0YWdyaWQtaGVhZGVyIC5kYXRhZ3JpZC1yb3d7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LXRoZWFkLWJnY29sb3IsICNmYWZhZmEpO2JvcmRlci10b3A6bm9uZTtib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkO2JvcmRlci1ib3R0b20td2lkdGg6LjA1cmVtO2JvcmRlci1ib3R0b20td2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItYm90dG9t''@;'; put 'put ''LWNvbG9yOiNjY2M7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKX0uZGF0YWdyaWQtaGVhZGVyIC5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXJvdy1zdGlja3ksLmRhdGFncmlkLWhlYWRlciAuZGF0YWdyaWQtcm93OmhvdmVyLC5kYXRh''@;'; put 'put ''Z3JpZC1oZWFkZXIgLmRhdGFncmlkLXJvdzpob3ZlciAuZGF0YWdyaWQtcm93LXN0aWNreXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdGhlYWQtYmdjb2xvciwgI2ZhZmFmYSl9LmRhdGFncmlkLWhlYWRlciAuZGF0YWdyaWQtcm93LXNjcm9s''@;'; put 'put ''bGFibGV7ZmxleC1kaXJlY3Rpb246cm93fS5kYXRhZ3JpZC10YWJsZS13cmFwcGVye2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO21pbi1oZWlnaHQ6MTAwJX0uZGF0YWdyaWQtdGFibGV7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4OjEgMSBhdXRvO2FsaWduLWNv''@;'; put 'put ''bnRlbnQ6ZmxleC1zdGFydH0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWJvZHl7d2lkdGg6YXV0b30uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbnt0ZXh0LWFsaWduOmxlZnQ7bWluLXdpZHRoOjQuOHJlbTtkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0bzt2ZXJ0aWNhbC1hbGln''@;'; put 'put ''bjp0b3A7Ym9yZGVyOjB9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW46Zm9jdXN7b3V0bGluZTotd2Via2l0LWZvY3VzLXJpbmctY29sb3Igc29saWQgLjFyZW07b3V0bGluZS1vZmZzZXQ6LS4xcmVtfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIGNsci1kZy1maWx0''@;'; put 'put ''ZXIsLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gY2xyLWRnLXN0cmluZy1maWx0ZXIsLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gY2xyLWRnLW51bWVyaWMtZmlsdGVye2Rpc3BsYXk6ZmxleDtvcmRlcjo5OTttYXJnaW4tbGVmdDphdXRvfS5kYXRhZ3JpZC10YWJs''@;'; put 'put ''ZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXItaW5wdXQtc3BhY2Vye3dpZHRoOi42cmVtO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1udW1lcmljLWZpbHRlci1pbnB1dHt3aWR0aDozLjlyZW19LmRhdGFn''@;'; put 'put ''cmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci10b2dnbGV7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2Jv''@;'; put 'put ''cmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZDowIDA7Y3Vyc29yOnBvaW50ZXI7ZmxvYXQ6cmlnaHQ7dmVydGljYWwtYWxpZ246bWlkZGxlO2hlaWdodDouN3JlbTt3aWR0aDouN3JlbTttYXJnaW4tbGVmdDouM3JlbTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7''@;'; put 'put ''YmFja2dyb3VuZC1zaXplOmNvbnRhaW59YnV0dG9uLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci10b2dnbGV7Y3Vyc29yOnBvaW50ZXJ9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci10b2dnbGUgY2RzLWlj''@;'; put 'put ''b24sLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci10b2dnbGUgY2xyLWljb257Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDAsICM4YzhjOGMpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRh''@;'; put 'put ''Z3JpZC1maWx0ZXItdG9nZ2xlOmhvdmVyIGNkcy1pY29uLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXItdG9nZ2xlOmhvdmVyIGNsci1pY29ue2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDAsICMwMDcyYTMpfS5k''@;'; put 'put ''YXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXItdG9nZ2xlLmRhdGFncmlkLWZpbHRlci1vcGVuIGNkcy1pY29uLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXItdG9nZ2xlLmRhdGFncmlkLWZpbHRlci1vcGVuIGNs''@;'; put 'put ''ci1pY29ue2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDAsICMwMDcyYTMpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXItdG9nZ2xlLmRhdGFncmlkLWZpbHRlcmVkIGNkcy1pY29uLC5kYXRhZ3JpZC10YWJsZSAu''@;'; put 'put ''ZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXItdG9nZ2xlLmRhdGFncmlkLWZpbHRlcmVkIGNsci1pY29ue2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDAsICMwMDcyYTMpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3Jp''@;'; put 'put ''ZC1maWx0ZXJ7dG9wOjEwMCU7cmlnaHQ6MDttYXJnaW4tdG9wOi4yNHJlbTtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvciwgd2hpdGUpO3BhZGRpbmc6LjlyZW07Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDouMDVy''@;'; put 'put ''ZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gIzhj''@;'; put 'put ''OGM4YzQwO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtIHZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVycy1ib3gtc2hhZG93LWNvbG9yLCByZ2JhKDE0MCwgMTQwLCAxNDAsIC4yNSkpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJy''@;'; put 'put ''YWRpdXMsIC4xNXJlbSk7Zm9udC13ZWlnaHQ6NDAwfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXJ7dG9wOjEwMCU7cmlnaHQ6MDttYXJnaW4tdG9wOi4yNHJlbTtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItZGF0YWdyaWQtcG9w''@;'; put 'put ''b3Zlci1iZy1jb2xvciwgd2hpdGUpO3BhZGRpbmc6LjlyZW07Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXIt''@;'; put 'put ''Ym9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItc3R5bGU6c29saWQ7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gIzhjOGM4YzQwO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtIHZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVycy1ib3gtc2hhZG93LWNvbG9yLCByZ2JhKDE0MCwgMTQw''@;'; put 'put ''LCAxNDAsIC4yNSkpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7Zm9udC13ZWlnaHQ6NDAwfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXIgLmRhdGFncmlkLWZp''@;'; put 'put ''bHRlci1jbG9zZS13cmFwcGVye3RleHQtYWxpZ246cmlnaHR9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlciAuZGF0YWdyaWQtZmlsdGVyLWNsb3NlLXdyYXBwZXIgLmNsb3Nle2Zsb2F0Om5vbmV9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1''@;'; put 'put ''bW4gLmRhdGFncmlkLWZpbHRlciAuZGF0YWdyaWQtZmlsdGVyLWFwcGx5e21hcmdpbi1ib3R0b206MH0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbi5kYXRhZ3JpZC1maXhlZC13aWR0aHtmbGV4OjAgMCBhdXRvfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRh''@;'; put 'put ''Z3JpZC1jb2x1bW4tZmxleHtkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0b30uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtY29sdW1uLXRpdGxley13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7''@;'; put 'put ''LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwO2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXRhYmxlLWZvbnQtY29sb3IsICM2NjY2NjYpO3RleHQtYWxpZ246bGVmdDtm''@;'; put 'put ''bGV4OjEgMSBhdXRvO2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1zZWxmOmNlbnRlcjtkaXNwbGF5OmZsZXh9YnV0dG9uLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi10aXRsZXtjdXJzb3I6cG9pbnRlcn0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlk''@;'; put 'put ''LWNvbHVtbiAuZGF0YWdyaWQtY29sdW1uLXRpdGxlIC5zaWducG9zdCAuc2lnbnBvc3QtYWN0aW9uLmJ0bntoZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0fS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tdGl0bGUgLmNsci1jaGVja2Jv''@;'; put 'put ''eC13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHttYXJnaW4tdG9wOi0uNDhyZW19LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gYnV0dG9uLmRhdGFncmlkLWNvbHVtbi10aXRsZTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNvcjpwb2ludGVyfS5kYXRhZ3Jp''@;'; put 'put ''ZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIGJ1dHRvbi5kYXRhZ3JpZC1jb2x1bW4tdGl0bGUgLnNvcnQtaWNvbntjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwLCAjMDA3MmEzKTttYXJnaW4tbGVmdDphdXRvO2hlaWdodDouN3JlbTt3aWR0aDouN3JlbTt2''@;'; put 'put ''ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi1zZXBhcmF0b3J7cG9zaXRpb246cmVsYXRpdmU7bGVmdDouNnJlbTtmbGV4OjAgMCBhdXRvO3dpZHRoOi4wNXJlbTt3aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRl''@;'; put 'put ''cndpZHRoLCAuMDVyZW0pO29yZGVyOjEwMDttYXJnaW4tbGVmdDphdXRvO2hlaWdodDoxMDAlfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OmNhbGMoMTAw''@;'; put 'put ''JSArIC42cmVtIC0gLjA1cmVtKTt3aWR0aDouMDVyZW07dG9wOi0uMjVyZW07bGVmdDowO2JhY2tncm91bmQtY29sb3I6I2NjYztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5k''@;'; put 'put ''YXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yIC5kYXRhZ3JpZC1jb2x1bW4taGFuZGxley13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3Jk''@;'; put 'put ''ZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOi42NXJlbTtyaWdodDotLjNyZW07dG9wOi0uM3JlbTtjdXJzb3I6Y29sLXJlc2l6ZTtoZWlnaHQ6Y2FsYygxMDAlICsgLjZyZW0gLSAuMDVyZW0pO3otaW5kZXg6NTAxfWJ1''@;'; put 'put ''dHRvbi5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yIC5kYXRhZ3JpZC1jb2x1bW4taGFuZGxle2N1cnNvcjpwb2ludGVyfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yIC5k''@;'; put 'put ''YXRhZ3JpZC1jb2x1bW4tcmVzaXplLXRyYWNrZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0uNnJlbTtkaXNwbGF5Om5vbmU7d2lkdGg6LjA1cmVtO2hlaWdodDowO2JvcmRlci1yaWdodC1zdHlsZTpkb3R0ZWQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOiM3OWM2ZTY7Ym9yZGVyLXJpZ2h0LWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1jb2xvci1hY3Rpb24tMzAwLCAjNzljNmU2KTtib3JkZXItcmlnaHQtd2lkdGg6LjA1cmVtO2JvcmRlci1yaWdodC13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCk7Y3Vyc29yOmNvbC1yZXNpemV9LmRh''@;'; put 'put ''dGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi1zZXBhcmF0b3IgLmRhdGFncmlkLWNvbHVtbi1yZXNpemUtdHJhY2tlci5vbi1hcnJvdy1rZXktcmVzaXple3RyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLW91dH0uZGF0YWdyaWQtdGFibGUgLmRhdGFn''@;'; put 'put ''cmlkLWNvbHVtbiAuZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvciAuZXhjZWVkZWQtbWF4e2JvcmRlci1yaWdodDouMDVyZW0gZG90dGVkIHJnYmEoMjE5LDMzLDAsLjMpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1zaWducG9zdC10cmlnZ2VyIC5zaWducG9z''@;'; put 'put ''dHttYXJnaW46LS4zNnJlbSAwO2hlaWdodDoxLjIzNnJlbX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtc2lnbnBvc3QtdHJpZ2dlciAuc2lnbnBvc3QgLnNpZ25wb3N0LXRyaWdnZXJ7aGVpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6MS4ycmVtfS5kYXRhZ3Jp''@;'; put 'put ''ZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uLmRhdGFncmlkLXNlbGVjdCwuZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbi5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uLmRhdGFncmlkLXJvdy1hY3Rpb25ze21heC13aWR0aDox''@;'; put 'put ''LjlyZW07bWluLXdpZHRoOjEuOXJlbX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGx7ZmxleDoxIDEgYXV0bzt0ZXh0LWFsaWduOmxlZnQ7bWluLXdpZHRoOjQuOHJlbTtib3JkZXI6MH0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGwuZGF0YWdyaWQtZml4ZWQtd2lkdGh7Zmxl''@;'; put 'put ''eDowIDAgYXV0b30uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGwuZGF0YWdyaWQtZml4ZWQtY29sdW1ue2ZsZXg6MCAwIDEuOXJlbTttYXgtd2lkdGg6MS45cmVtO21pbi13aWR0aDoxLjlyZW19LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsLmRhdGFncmlkLXJvdy1hY3Rpb25z''@;'; put 'put ''e2JhY2tncm91bmQ6MCAwfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY2VsbC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0e3BhZGRpbmc6LjFyZW0gLjJyZW0gLjE1cmVtO3RleHQtYWxpZ246Y2VudGVyfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY2VsbDpmb2N1c3tvdXRsaW5lOi13''@;'; put 'put ''ZWJraXQtZm9jdXMtcmluZy1jb2xvciBzb2xpZCAuMXJlbTtvdXRsaW5lLW9mZnNldDotLjFyZW19LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsIC5kYXRhZ3JpZC1hY3Rpb24tdG9nZ2xley13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBl''@;'; put 'put ''YXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwfWJ1dHRvbi5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY2VsbCAuZGF0YWdyaWQtYWN0aW9uLXRvZ2ds''@;'; put 'put ''ZXtjdXJzb3I6cG9pbnRlcn0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGwgLmRhdGFncmlkLWFjdGlvbi10b2dnbGUgY2RzLWljb24sLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsIC5kYXRhZ3JpZC1hY3Rpb24tdG9nZ2xlIGNsci1pY29ue2NvbG9yOiM4YzhjOGM7Y29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWRhdGFncmlkLWljb24tY29sb3IsICM4YzhjOGMpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY2VsbCAuZGF0YWdyaWQtYWN0aW9uLXRvZ2dsZTphY3RpdmUgY2RzLWljb24sLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsIC5kYXRhZ3JpZC1hY3Rpb24tdG9nZ2xl''@;'; put 'put ''OmFjdGl2ZSBjbHItaWNvbntjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1hY3Rpb24tdG9nZ2xlLCAjNjY2NjY2KX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGwgLmNsci10b2dnbGUtd3JhcHBlcnttYXJnaW4tdG9wOi0uNjZyZW07cGFkZGluZy10b3A6LjQycmVt''@;'; put 'put ''fS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtcGxhY2Vob2xkZXItY29udGFpbmVye2ZsZXg6MSAxIGF1dG87ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7Ym9yZGVyLXRvcC1zdHlsZTpzb2xpZDtib3JkZXItdG9wLWNvbG9yOiNjY2M7Ym9yZGVyLXRvcC1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItdGFibGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItdG9wLXdpZHRoOi4wNXJlbTtib3JkZXItdG9wLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSl9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1wbGFjZWhvbGRlcntiYWNrZ3JvdW5kOiNm''@;'; put 'put ''ZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItdGFibGUtYmdjb2xvciwgd2hpdGUpO3dpZHRoOjEwMCV9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1wbGFjZWhvbGRlci5kYXRhZ3JpZC1lbXB0eXtib3JkZXItdG9wOjA7cGFkZGluZzouNnJlbTtkaXNwbGF5OmZsZXg7ZmxleC1mbG93OmNvbHVt''@;'; put 'put ''biBub3dyYXA7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2ZvbnQtc2l6ZTouOHJlbTtmb250LXNpemU6dmFyKC0tY2xyLWRhdGFncmlkLXBsYWNlaG9sZGVyLWZvbnQtc2l6ZSwgLjhyZW0pO2NvbG9yOiNiM2IzYjM7Y29sb3I6dmFyKC0tY2xyLWRhdGFn''@;'; put 'put ''cmlkLXBsYWNlaG9sZGVyLWNvbG9yLCAjYjNiM2IzKX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLXBsYWNlaG9sZGVyIC5kYXRhZ3JpZC1wbGFjZWhvbGRlci1pbWFnZXtoZWlnaHQ6M3JlbTt3aWR0aDozcmVtO21hcmdpbi1ib3R0b206LjZyZW07YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVw''@;'; put 'put ''ZWF0O2JhY2tncm91bmQtc2l6ZTpjb250YWluO2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyO2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDYwJTIwNzIlMjIlMjB2ZXJzaW9uJTNEJTIy''@;'; put 'put ''MS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB4bWxucyUzQXhsaW5rJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGxpbmslMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NkZWZzJTNFJTBBJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTNDZWxsaXBzZSUyMGlkJTNEJTIycGF0aC0xJTIyJTIwY3glM0QlMjIzMCUyMiUyMGN5JTNEJTIyNjEuNzY2NjY2NyUyMiUyMHJ4JTNEJTIyMTUuNDUxMjkwNCUyMiUyMHJ5JTNEJTIyNC43MzMzMzMzMyUyMiUzRSUzQyUyRmVsbGlwc2UlM0UlMEElMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlM0NtYXNrJTIwaWQlM0QlMjJtYXNrLTIlMjIlMjBtYXNrQ29udGVudFVuaXRzJTNEJTIydXNlclNwYWNlT25Vc2UlMjIlMjBtYXNrVW5pdHMlM0QlMjJvYmplY3RCb3VuZGluZ0JveCUyMiUyMHglM0QlMjIwJTIyJTIweSUzRCUyMjAlMjIlMjB3aWR0aCUzRCUyMjMwLjkw''@;'; put 'put ''MjU4MDglMjIlMjBoZWlnaHQlM0QlMjI5LjQ2NjY2NjY3JTIyJTIwZmlsbCUzRCUyMndoaXRlJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDdXNlJTIweGxpbmslM0FocmVmJTNEJTIyJTIzcGF0aC0xJTIyJTNFJTNDJTJGdXNlJTNFJTBBJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTNDJTJGbWFzayUzRSUwQSUyMCUyMCUyMCUyMCUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlM0NnJTIwaWQlM0QlMjJQYWdlLTElMjIlMjBzdHJva2UlM0QlMjJub25lJTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMSUyMiUyMGZpbGwlM0QlMjJub25lJTIyJTIw''@;'; put 'put ''ZmlsbC1ydWxlJTNEJTIyZXZlbm9kZCUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2clMjBpZCUzRCUyMkFydGJvYXJkJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDdXNlJTIwaWQlM0QlMjJPdmFsLTEwJTIyJTIwc3Ryb2tlJTNEJTIy''@;'; put 'put ''JTIzQzFERkVGJTIyJTIwbWFzayUzRCUyMnVybCglMjNtYXNrLTIpJTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMi44JTIyJTIwc3Ryb2tlLWxpbmVjYXAlM0QlMjJzcXVhcmUlMjIlMjBzdHJva2UtZGFzaGFycmF5JTNEJTIyMyUyQzYlMkMzJTJDNSUyMiUyMHhsaW5rJTNBaHJlZiUzRCUyMiUy''@;'; put 'put ''M3BhdGgtMSUyMiUzRSUzQyUyRnVzZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BhdGglMjBkJTNEJTIyTTM4LjQ2MTM2NDclMkMxOC4xNjQyNDU2JTIwTDMwLjk4OTAxMzclMkMzNC45MTQxODQ2JTIwTDMxJTJDNDclMjBMMzIuNTk3Nzc4MyUyQzQ2LjUx''@;'; put 'put ''NjcyMzYlMjBMMzIuNTk3Nzc4MyUyQzM0LjkxNDE4NDYlMjBMNTEuMDY3MzIxOCUyQzE1Ljc1NjA0MjUlMjBDNTEuMDY3MzIxOCUyQzE1Ljc1NjA0MjUlMjA0OC42Mjk1MTY2JTJDMTYuNjU0Mjk2OSUyMDQ0Ljk2Mjg5MDYlMkMxNy4zMzkyMzM0JTIwQzQxLjI5NjI2NDYlMkMxOC4wMjQxNjk5''@;'; put 'put ''JTIwMzguNDYxMzY0NyUyQzE4LjE2NDI0NTYlMjAzOC40NjEzNjQ3JTJDMTguMTY0MjQ1NiUyMFolMjIlMjBpZCUzRCUyMlBhdGgtMTk1JTIyJTIwZmlsbCUzRCUyMiUyM0MxREZFRiUyMiUzRSUzQyUyRnBhdGglM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nw''@;'; put 'put ''YXRoJTIwZCUzRCUyMk00Ljc0NjM5MjI2JTJDMTIuNTY2MTg1NSUyMEw0LjYyMDY1NzI2JTJDMTIuMTYwNTM0OCUyMEw1LjM1MTU0MTQlMkMxMS4xNjI1MDQ0JTIwTDUuNzc2MjIzODUlMkMxMS4xNTk5MzklMjBMNi4yMDkzNjMwOSUyQzEyLjU1NzM0ODElMjBMNC43NDYzOTIyNiUyQzEyLjU2''@;'; put 'put ''NjE4NTUlMjBaJTIwTTYuMjA5MzYzMDklMkMxMi41NTczNDgxJTIwTDYuMzI1NDI2MzIlMkMxMi45MzE3OTU0JTIwTDI4LjQ5NjM4NTUlMkMzNC44Nzk2NzE4JTIwTDI4LjQ5NjM4NTUlMkM0Ny44MDk2NjkxJTIwTDMyLjYlMkM0Ni40ODM2NTEzJTIwTDMyLjYlMkMzNC44OTkyMzY1JTIwTDUz''@;'; put 'put ''Ljk3MzQ5NCUyQzEyLjcwMzU4MTMlMjBMNTMuOTczNDk0JTJDMTIuMjY4ODIwMSUyMEw2LjIwOTM2MzA5JTJDMTIuNTU3MzQ4MSUyMFolMjBNNTUuMzczNDk0JTJDMTAuODYwMzM3NiUyMEw1NS4zNzM0OTQlMkMxMy4yNjgwNjY0JTIwTDM0JTJDMzUuNDYzNzIxNiUyMEwzNCUyQzQ3LjUwMjU0''@;'; put 'put ''MDElMjBMMjcuMDk2Mzg1NSUyQzQ5LjczMzMzMzMlMjBMMjcuMDk2Mzg1NSUyQzM1LjQ2MzcyMTklMjBMNS4wOTE3OTY4OCUyQzEzLjY4MDU0MiUyMEw0LjMxMzI1MzAxJTJDMTEuMTY4Nzc2NCUyMEw1NS4zNzM0OTQlMkMxMC44NjAzMzc2JTIwWiUyMiUyMGlkJTNEJTIyUGF0aC0xNDklMjIl''@;'; put 'put ''MjBmaWxsJTNEJTIyJTIzN0ZCREREJTIyJTNFJTNDJTJGcGF0aCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2VsbGlwc2UlMjBpZCUzRCUyMk92YWwtOSUyMiUyMGZpbGwlM0QlMjIlMjNGRkZGRkYlMjIlMjBjeCUzRCUyMjMwJTIyJTIwY3klM0QlMjIxMS43''@;'; put 'put ''ODU2NTQlMjIlMjByeCUzRCUyMjI2JTIyJTIwcnklM0QlMjI2Ljc4NTY1NDAxJTIyJTNFJTNDJTJGZWxsaXBzZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BhdGglMjBkJTNEJTIyTTMwJTJDMTcuMTcxMzA4JTIwQzM2Ljg3NzIxNzclMkMxNy4xNzEzMDgl''@;'; put 'put ''MjA0My4zMTEyMjgyJTJDMTYuNDYxMDcwMSUyMDQ4LjAzMTIzNzElMkMxNS4yMjkyMTA2JTIwQzUwLjI3Nzc2MTElMkMxNC42NDI4OTc3JTIwNTIuMDUwNzYxOSUyQzEzLjk1Nzk2NzclMjA1My4yMjE2MjMxJTJDMTMuMjM1NDk3MyUyMEM1NC4xOTM4NTY1JTJDMTIuNjM1NTg4NiUyMDU0LjYl''@;'; put 'put ''MkMxMi4xMTc1ODkxJTIwNTQuNiUyQzExLjc4NTY1NCUyMEM1NC42JTJDMTEuNDUzNzE4OSUyMDU0LjE5Mzg1NjUlMkMxMC45MzU3MTk0JTIwNTMuMjIxNjIzMSUyQzEwLjMzNTgxMDclMjBDNTIuMDUwNzYxOSUyQzkuNjEzMzQwMzIlMjA1MC4yNzc3NjExJTJDOC45Mjg0MTAzNCUyMDQ4LjAz''@;'; put 'put ''MTIzNzElMkM4LjM0MjA5NzQ2JTIwQzQzLjMxMTIyODIlMkM3LjExMDIzNzk1JTIwMzYuODc3MjE3NyUyQzYuNCUyMDMwJTJDNi40JTIwQzIzLjEyMjc4MjMlMkM2LjQlMjAxNi42ODg3NzE4JTJDNy4xMTAyMzc5NSUyMDExLjk2ODc2MjklMkM4LjM0MjA5NzQ2JTIwQzkuNzIyMjM4ODYlMkM4''@;'; put 'put ''LjkyODQxMDM0JTIwNy45NDkyMzgxNCUyQzkuNjEzMzQwMzIlMjA2Ljc3ODM3Njg5JTJDMTAuMzM1ODEwNyUyMEM1LjgwNjE0MzUlMkMxMC45MzU3MTk0JTIwNS40JTJDMTEuNDUzNzE4OSUyMDUuNCUyQzExLjc4NTY1NCUyMEM1LjQlMkMxMi4xMTc1ODkxJTIwNS44MDYxNDM1JTJDMTIuNjM1''@;'; put 'put ''NTg4NiUyMDYuNzc4Mzc2ODklMkMxMy4yMzU0OTczJTIwQzcuOTQ5MjM4MTQlMkMxMy45NTc5Njc3JTIwOS43MjIyMzg4NiUyQzE0LjY0Mjg5NzclMjAxMS45Njg3NjI5JTJDMTUuMjI5MjEwNiUyMEMxNi42ODg3NzE4JTJDMTYuNDYxMDcwMSUyMDIzLjEyMjc4MjMlMkMxNy4xNzEzMDglMjAz''@;'; put 'put ''MCUyQzE3LjE3MTMwOCUyMFolMjBNMzAlMkMxOC41NzEzMDglMjBDMTUuNjQwNTk2NSUyQzE4LjU3MTMwOCUyMDQlMkMxNS41MzMyNjcyJTIwNCUyQzExLjc4NTY1NCUyMEM0JTJDOC4wMzgwNDA3OCUyMDE1LjY0MDU5NjUlMkM1JTIwMzAlMkM1JTIwQzQ0LjM1OTQwMzUlMkM1JTIwNTYlMkM4''@;'; put 'put ''LjAzODA0MDc4JTIwNTYlMkMxMS43ODU2NTQlMjBDNTYlMkMxNS41MzMyNjcyJTIwNDQuMzU5NDAzNSUyQzE4LjU3MTMwOCUyMDMwJTJDMTguNTcxMzA4JTIwWiUyMiUyMGlkJTNEJTIyT3ZhbC05LUNvcHklMjIlMjBmaWxsJTNEJTIyJTIzN0ZCREREJTIyJTNFJTNDJTJGcGF0aCUzRSUwQSUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BhdGglMjBkJTNEJTIyTTE4LjI2MDg2NDMlMkM3LjE0NTYyOTg4JTIwTDIyLjcyNzM1NiUyQzE2LjkwNDcyNDElMjBDMjIuNzI3MzU2JTJDMTYuOTA0NzI0MSUyMDE1LjMwMDY1OTIlMkMxNi4zOTExNzQzJTIwMTAuMjc2MDAx''@;'; put 'put ''JTJDMTQuNzUxMTU5NyUyMEM1LjI1MTM0Mjc3JTJDMTMuMTExMTQ1JTIwNS4zODAzMTAwNiUyQzExLjgyODQzMDIlMjA1LjM4MDMxMDA2JTJDMTEuNjg4MjkzNSUyMEM1LjM4MDMxMDA2JTJDMTAuNDgzMjgzMSUyMDguMTY2MzMxNTIlMkM5LjQxODc3NzE2JTIwMTEuMTE0NTYzJTJDOC41NzMy''@;'; put 'put ''NDIxOSUyMEMxNC41NDkzMTklMkM3LjU4ODE3NDkyJTIwMTguMjYwODY0MyUyQzcuMTQ1NjI5ODglMjAxOC4yNjA4NjQzJTJDNy4xNDU2Mjk4OCUyMFolMjIlMjBpZCUzRCUyMlBhdGgtMTk2JTIyJTIwZmlsbCUzRCUyMiUyM0MxREZFRiUyMiUzRSUzQyUyRnBhdGglM0UlMEElMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBBJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwQSUzQyUyRnN2ZyUzRSIpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtaGlkZGVuLWNvbHVtbi5kYXRhZ3JpZC1jb2x1bW4sLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1oaWRkZW4tY29sdW1uLmRh''@;'; put 'put ''dGFncmlkLWNlbGx7ZGlzcGxheTpub25lfS5kYXRhZ3JpZC1yb3ctcmVwbGFjZWQgLmRhdGFncmlkLXNjcm9sbGluZy1jZWxscyAuZGF0YWdyaWQtY2VsbDpub3QoLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQpOm5vdCguZGF0YWdyaWQtcm93LWFjdGlvbnMpOm5vdCguZGF0YWdyaWQtc2Vs''@;'; put 'put ''ZWN0KXtkaXNwbGF5Om5vbmV9LmRhdGFncmlkLXJvdy1yZXBsYWNlZCAuZGF0YWdyaWQtcm93LWRldGFpbCAuZGF0YWdyaWQtY2VsbHtkaXNwbGF5OmJsb2NrO3BhZGRpbmctdG9wOi41NXJlbX0uZGF0YWdyaWQtcm93LXJlcGxhY2VkIC5kYXRhZ3JpZC1yb3ctZGV0YWlsIC5kYXRhZ3JpZC1j''@;'; put 'put ''ZWxsLmRhdGFncmlkLWhpZGRlbi1jb2x1bW57ZGlzcGxheTpub25lfS5kYXRhZ3JpZC1yb3ctcmVwbGFjZWQgLmRhdGFncmlkLXJvdy1kZXRhaWwgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXR7cGFkZGluZy10b3A6LjFyZW19LmRhdGFncmlkLXJvdy1yZXBsYWNlZCAuZGF0YWdyaWQtcm93''@;'; put 'put ''LWRldGFpbC5kYXRhZ3JpZC1jb250YWluZXJ7Ym9yZGVyLXRvcDouMDVyZW0gc29saWQgI2NjY30uZGF0YWdyaWQtcm93LXJlcGxhY2VkIC5kYXRhZ3JpZC1yb3ctZGV0YWlsLmRhdGFncmlkLWNvbnRhaW5lciAuZGF0YWdyaWQtY2VsbHtib3JkZXItdG9wOm5vbmV9LmRhdGFncmlkLWZvb3Rl''@;'; put 'put ''cntmbGV4OjAgMCBhdXRvO2Rpc3BsYXk6ZmxleDtmbGV4LWZsb3c6cm93IG5vd3JhcDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpzdHJldGNoO3BhZGRpbmc6MCAuNnJlbTtsaW5lLWhlaWdodDoxLjY1cmVtO2ZvbnQtc2l6ZTouNTVyZW07YmFja2dyb3VuZC1j''@;'; put 'put ''b2xvcjojZmFmYWZhO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRoZWFkLWJnY29sb3IsICNmYWZhZmEpO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLXRhYmxlLWZvb3Rlci1ib3JkZXItdG9wLWNvbG9yLCAjY2NjY2NjKTti''@;'; put 'put ''b3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci10b3A6bm9uZTtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZh''@;'; put 'put ''cigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSl9LmRhdGFncmlkLWZvb3RlciAucGFnaW5hdGlvbntk''@;'; put 'put ''aXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDtsaW5lLWhlaWdodDoxLjhyZW19LmRhdGFncmlkLWZvb3RlciAucGFnaW5hdGlvbi1zaXple2Rpc3BsYXk6YmxvY2s7ZmxleDoxIDEgYXV0bzt3aGl0ZS1zcGFjZTpu''@;'; put 'put ''b3dyYXA7dGV4dC1hbGlnbjpyaWdodH0uZGF0YWdyaWQtZm9vdGVyIC5wYWdpbmF0aW9uLXNpemUgLmNsci1zZWxlY3Qtd3JhcHBlcjphZnRlcnt0b3A6LjZyZW19LmRhdGFncmlkLWZvb3RlciAucGFnaW5hdGlvbi1zaXplIC5jbHItcGFnZS1zaXplLXNlbGVjdHtmb250LXNpemU6MTAwJTtt''@;'; put 'put ''YXJnaW4tbGVmdDouNnJlbTtoZWlnaHQ6MS4ycmVtO2xpbmUtaGVpZ2h0OjEuMnJlbTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmRhdGFncmlkLWZvb3RlciAucGFnaW5hdGlvbi1zaXplKy5wYWdpbmF0aW9uLWRlc2NyaXB0aW9ue21hcmdpbi1sZWZ0OjEuMnJlbX0uZGF0YWdyaWQtZm9vdGVy''@;'; put 'put ''IC5wYWdpbmF0aW9uLWRlc2NyaXB0aW9ue3doaXRlLXNwYWNlOm5vd3JhcH0uZGF0YWdyaWQtZm9vdGVyIC5wYWdpbmF0aW9uLWxpc3R7bWFyZ2luLWxlZnQ6MS4ycmVtO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFw''@;'; put 'put ''cGVye3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXg6MCAwIGF1dG87ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0uZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXIuYWN0aXZlIC5jb2x1bW4tdG9nZ2xlLS1hY3Rpb24gY2RzLWljb24sLmRhdGFncmlkLWZvb3RlciAu''@;'; put 'put ''Y29sdW1uLXN3aXRjaC13cmFwcGVyLmFjdGl2ZSAuY29sdW1uLXRvZ2dsZS0tYWN0aW9uIGNsci1pY29ue2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDAsICMwMDcyYTMpfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1u''@;'; put 'put ''LXRvZ2dsZS0tYWN0aW9ue21pbi13aWR0aDouOXJlbTtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjB9LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tdG9nZ2xlLS1hY3Rpb24gY2RzLWljb24sLmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRj''@;'; put 'put ''aC13cmFwcGVyIC5jb2x1bW4tdG9nZ2xlLS1hY3Rpb24gY2xyLWljb257Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDAsICM4YzhjOGMpfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXRvZ2dsZS0tYWN0aW9uOmhv''@;'; put 'put ''dmVyIGNkcy1pY29uLC5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXRvZ2dsZS0tYWN0aW9uOmhvdmVyIGNsci1pY29ue2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDAsICMwMDcyYTMpfS5kYXRhZ3JpZC1mb290ZXIg''@;'; put 'put ''LmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXN3aXRjaHtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRh''@;'; put 'put ''Z3JpZC1wb3BvdmVyLWJnLWNvbG9yLCB3aGl0ZSk7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3Jk''@;'; put 'put ''ZXJ3aWR0aCwgLjA1cmVtKTtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSAjOGM4YzhjNDA7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gdmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXJzLWJveC1zaGFkb3ctY29sb3IsIHJnYmEoMTQwLCAxNDAsIDE0MCwgLjI1KSk7cGFkZGluZzouOXJl''@;'; put 'put ''bTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXRvcDpub25lO3dpZHRoOjEyLjVyZW07ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt6LWluZGV4OjEwNTB9LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtaGVh''@;'; put 'put ''ZGVye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOi44cmVtO3BhZGRpbmctYm90dG9tOi42cmVtO2xpbmUtaGVpZ2h0OjEuMnJlbX0uZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXIgLmNvbHVt''@;'; put 'put ''bi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgYnV0dG9ue21pbi13aWR0aDouOXJlbTttYXJnaW46MDtwYWRkaW5nOjB9LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtY29udGVudHttYXgtaGVpZ2h0OjE1cmVtO292ZXJmbG93LXk6''@;'; put 'put ''YXV0bzttaW4taGVpZ2h0OjIuNHJlbX0uZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXIgLmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1jb250ZW50IGxpe2xpbmUtaGVpZ2h0OjEuMnJlbTtwYWRkaW5nLWxlZnQ6LjFyZW19LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRj''@;'; put 'put ''aC13cmFwcGVyIC5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtZm9vdGVyIC5idG57bWFyZ2luOjA7cGFkZGluZzowfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWZvb3RlciAuYWN0aW9uLXJpZ2h0e2Rpc3BsYXk6ZmxleDtqdXN0''@;'; put 'put ''aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tc3dpdGNoe2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7YmFja2dyb3VuZC1jb2xv''@;'; put 'put ''cjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYmctY29sb3IsIHdoaXRlKTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JvcmRlci1zdHlsZTpzb2xpZDtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSAjOGM4YzhjNDA7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gdmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXJz''@;'; put 'put ''LWJveC1zaGFkb3ctY29sb3IsIHJnYmEoMTQwLCAxNDAsIDE0MCwgLjI1KSk7cGFkZGluZzouOXJlbTt3aWR0aDoxMi41cmVtO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ei1pbmRleDoxMDUwfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29s''@;'; put 'put ''dW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlcntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZTouOHJlbTtwYWRkaW5nLWJvdHRvbTouNnJlbTtsaW5lLWhlaWdodDoxLjJyZW19LmRhdGFncmlkLWZvb3RlciAuY29sdW1u''@;'; put 'put ''LXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtaGVhZGVyIGJ1dHRvbnttaW4td2lkdGg6LjlyZW07bWFyZ2luOjA7cGFkZGluZzowO2NvbG9yOiNiM2IzYjM7Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi1zd2l0Y2gtaGVhZGVyLWZvbnQtY29sb3IsICNiM2Iz''@;'; put 'put ''YjMpfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlciBidXR0b246aG92ZXJ7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXN3aXRjaC1oZWFkZXItZm9udC1ob3Zlci1jb2xvciwg''@;'; put 'put ''IzAwNzJhMyl9LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtY29udGVudHttYXgtaGVpZ2h0OjE1cmVtO292ZXJmbG93LXk6YXV0bzttaW4taGVpZ2h0OjEuMjVyZW19LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13''@;'; put 'put ''cmFwcGVyIC5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtY29udGVudCBsaXtsaW5lLWhlaWdodDoxLjJyZW07cGFkZGluZy1sZWZ0Oi4xcmVtfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWZvb3RlciAuYnRue21hcmdpbjowO3Bh''@;'; put 'put ''ZGRpbmc6MH0uZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXIgLmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1mb290ZXIgLmFjdGlvbi1yaWdodHtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5kYXRhZ3JpZC1mb290ZXIgLmNsci1mb3JtLWNvbnRyb2wt''@;'; put 'put ''ZGlzYWJsZWR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6MTAwJX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuZGF0YWdyaWQtZm9vdGVyLXNlbGVjdC5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVse2N1cnNv''@;'; put 'put ''cjpkZWZhdWx0O21hcmdpbi1yaWdodDouNDVyZW19LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmRhdGFncmlkLWZvb3Rlci1zZWxlY3QuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbDpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojOGM4''@;'; put 'put ''YzhjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwLCAjOGM4YzhjKX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuZGF0YWdyaWQtZm9vdGVyLXNlbGVjdC5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVs''@;'; put 'put ''OmFmdGVye2JvcmRlci1sZWZ0LWNvbG9yOiNmZmY7Ym9yZGVyLWxlZnQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCwgd2hpdGUpO2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZjtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTAsIHdoaXRlKX0uZGF0''@;'; put 'put ''YWdyaWQtc3Bpbm5lcntwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2lkdGg6MTAwJTt0b3A6LjZyZW07aGVpZ2h0OmNhbGMoMTAwJSAtIC42cmVtKTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY5O2JhY2tncm91''@;'; put 'put ''bmQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWxvYWRpbmctYmFja2dyb3VuZCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAuNikpO3otaW5kZXg6NTkwfS5kYXRhZ3JpZC1zZWxlY3QgLmNsci1jb250cm9sLWxhYmVse21pbi1oZWlnaHQ6LjZyZW07bWFyZ2luLXRvcDotLjI0cmVtO3BhZGRpbmct''@;'; put 'put ''bGVmdDouN3JlbX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtaGVhZGVye21pbi1oZWlnaHQ6MS4ycmVtfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi1zZXBhcmF0b3I6YWZ0ZXJ7aGVpZ2h0OmNhbGMoMTAwJSArIC4yNXJlbSk7dG9wOmNh''@;'; put 'put ''bGMoLS4yNSouNnJlbSArIC4wNXJlbSl9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWNlbGwgY2xyLWljb257bWFyZ2luLXRvcDotLjJyZW07bWFyZ2luLWJvdHRvbTotLjE1cmVtO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0uMDVyZW0pfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1j''@;'; put 'put ''ZWxsIGNkcy1pY29ue21hcmdpbi10b3A6LS4ycmVtO21hcmdpbi1ib3R0b206LS4xNXJlbX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtY2VsbCAuYmFkZ2V7bWFyZ2luLXRvcDotLjE1cmVtO21hcmdpbi1ib3R0b206LS4wNXJlbX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZXhw''@;'; put 'put ''YW5kYWJsZS1jYXJldHt0ZXh0LWFsaWduOmNlbnRlcn0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCAuc3Bpbm5lcnttYXJnaW4tdG9wOi4xNXJlbX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCAuZGF0YWdyaWQtZXhwYW5k''@;'; put 'put ''YWJsZS1jYXJldC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFj''@;'; put 'put ''a2dyb3VuZDowIDA7aGVpZ2h0OjEuMnJlbTt3aWR0aDoxLjJyZW07b3V0bGluZS1vZmZzZXQ6LS4ycmVtfWJ1dHRvbi5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LWJ1dHRvbntjdXJzb3I6cG9pbnRlcn0uZGF0''@;'; put 'put ''YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC1pY29ue21hcmdpbjowfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LmRhdGFncmlkLWNlbGx7cGFkZGluZzowfS5kYXRhZ3JpZC1jb21w''@;'; put 'put ''YWN0IC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LmRhdGFncmlkLWNvbHVtbntwYWRkaW5nLXRvcDouM3JlbTtwYWRkaW5nLWJvdHRvbTouMjVyZW19LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLXNpZ25wb3N0LXRyaWdnZXIgLnNpZ25wb3N0IC5zaWducG9zdC10cmlnZ2VyIGNkcy1p''@;'; put 'put ''Y29uOm5vdChbc2hhcGU9aW5mby1jaXJjbGVdLFtzaGFwZT1leGNsYW1hdGlvbi10cmlhbmdsZV0sW3NoYXBlPWV4Y2xhbWF0aW9uLWNpcmNsZV0sW3NoYXBlPWNoZWNrLWNpcmNsZV0sW3NoYXBlPWluZm9dLFtzaGFwZT1lcnJvcl0pLC5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1zaWdu''@;'; put 'put ''cG9zdC10cmlnZ2VyIC5zaWducG9zdCAuc2lnbnBvc3QtdHJpZ2dlciBjbHItaWNvbjpub3QoW3NoYXBlPWluZm8tY2lyY2xlXSxbc2hhcGU9ZXhjbGFtYXRpb24tdHJpYW5nbGVdLFtzaGFwZT1leGNsYW1hdGlvbi1jaXJjbGVdLFtzaGFwZT1jaGVjay1jaXJjbGVdLFtzaGFwZT1pbmZvXSxb''@;'; put 'put ''c2hhcGU9ZXJyb3JdKXtoZWlnaHQ6MS4wNXJlbTt3aWR0aDoxLjA1cmVtfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1mb290ZXJ7cGFkZGluZzowIC42cmVtO2xpbmUtaGVpZ2h0OjEuMTVyZW19LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWZvb3RlciAucGFnaW5hdGlvbntsaW5l''@;'; put 'put ''LWhlaWdodDoxLjJyZW19LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tdG9nZ2xlLS1hY3Rpb257bWFyZ2luOjA7b3V0bGluZS1vZmZzZXQ6LS4ycmVtfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1mb290ZXIgLmNs''@;'; put 'put ''ci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmRhdGFncmlkLWZvb3Rlci1zZWxlY3QuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbHt0b3A6MH0uZGF0YWdyaWQtZm9vdGVyLWRlc2NyaXB0aW9ue2ZsZXg6MSAxIGF1dG87ZmxleC13cmFwOm5v''@;'; put 'put ''d3JhcDt3aGl0ZS1zcGFjZTpub3dyYXA7ZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOnJpZ2h0O21hcmdpbjphdXRvIDB9LnBhZ2luYXRpb24tbGlzdHtsaXN0LXN0eWxlOm5vbmU7ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpyb3cgbm93cmFwO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24t''@;'; put 'put ''aXRlbXM6c3RyZXRjaH0ucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLWN1cnJlbnR7YmFja2dyb3VuZDowIDA7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHRhcmVhLWJhY2tncm91bmQtY29sb3IsIHdoaXRlKTtib3JkZXItY29s''@;'; put 'put ''b3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBhZ2luYXRpb24taW5wdXQtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1zdHlsZTpz''@;'; put 'put ''b2xpZDtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2xpbmUtaGVpZ2h0OjEuMnJlbTtmb250LXNpemU6LjU1cmVtO21pbi13aWR0aDoxLjJyZW07dGV4dC1hbGlnbjpjZW50ZXI7dHJhbnNpdGlvbjpub25l''@;'; put 'put ''IWltcG9ydGFudH0ucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLWN1cnJlbnQ6Zm9jdXMsLnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1jdXJyZW50LmNsci1mb2N1c3tiYWNrZ3JvdW5kOjAgMDtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojNDlhZWRhO2JvcmRlci1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcGFnaW5hdGlvbi1pbnB1dC1ib3JkZXItZm9jdXMtY29sb3IsICM0OWFlZGEpO2JveC1zaGFkb3c6MCAwIC4wNXJlbSAjNDlhZWRhO2JveC1zaGFkb3c6MCAwIHZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSkgdmFyKC0tY2xyLWRh''@;'; put 'put ''dGFncmlkLXBhZ2luYXRpb24taW5wdXQtYm9yZGVyLWZvY3VzLWNvbG9yLCAjNDlhZWRhKX0ucGFnaW5hdGlvbi1saXN0Pip7cGFkZGluZzowIC4xMnJlbX0ucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLWZpcnN0LC5wYWdpbmF0aW9uLWxpc3QgLnBhZ2luYXRpb24tbGFzdCwucGFnaW5h''@;'; put 'put ''dGlvbi1saXN0IC5wYWdpbmF0aW9uLXByZXZpb3VzLC5wYWdpbmF0aW9uLWxpc3QgLnBhZ2luYXRpb24tbmV4dHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbn0ucGFnaW5hdGlvbi1saXN0''@;'; put 'put ''IC5wYWdpbmF0aW9uLWZpcnN0OmRpc2FibGVkLC5wYWdpbmF0aW9uLWxpc3QgLnBhZ2luYXRpb24tbGFzdDpkaXNhYmxlZCwucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLXByZXZpb3VzOmRpc2FibGVkLC5wYWdpbmF0aW9uLWxpc3QgLnBhZ2luYXRpb24tbmV4dDpkaXNhYmxlZHtjb2xv''@;'; put 'put ''cjojOGM4YzhjO2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wYWdpbmF0aW9uLWJ0bi1kaXNhYmxlZC1jb2xvciwgIzhjOGM4Yyk7b3BhY2l0eTouNTY7b3BhY2l0eTp2YXIoLS1jbHItZGF0YWdyaWQtcGFnaW5hdGlvbi1idG4tZGlzYWJsZWQtb3BhY2l0eSwgLjU2KX0ucGFnaW5hdGlvbi1s''@;'; put 'put ''aXN0IC5wYWdpbmF0aW9uLWZpcnN0LC5wYWdpbmF0aW9uLWxpc3QgLnBhZ2luYXRpb24tcHJldmlvdXN7bWFyZ2luLXJpZ2h0Oi42cmVtfS5wYWdpbmF0aW9uLWxpc3QgLnBhZ2luYXRpb24tbGFzdCwucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLW5leHR7bWFyZ2luLWxlZnQ6LjZyZW19''@;'; put 'put ''LnBhZ2luYXRpb24tbGlzdCBidXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5v''@;'; put 'put ''bmU7YmFja2dyb3VuZDowIDA7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcGFnaW5hdGlvbi1idG4tY29sb3IsICM2NjY2NjYpO2N1cnNvcjpwb2ludGVyfWJ1dHRvbi5wYWdpbmF0aW9uLWxpc3QgYnV0dG9ue2N1cnNvcjpwb2ludGVyfS5kYXRhZ3JpZC1jZWxsLXdpZHRo''@;'; put 'put ''LXplcm97Ym9yZGVyOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7d2lkdGg6MDtmbGV4OjAgMCBhdXRvIWltcG9ydGFudDttaW4td2lkdGg6MCFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LmRhdGFncmlkLW91dGVyLXdyYXBwZXJ7ZGlzcGxheTpmbGV4O2ZsZXgt''@;'; put 'put ''ZGlyZWN0aW9uOnJvdztmbGV4LWdyb3c6MTtvdmVyZmxvdzphdXRvfS5kYXRhZ3JpZC1pbm5lci13cmFwcGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1ncm93OjE7b3ZlcmZsb3c6YXV0bzttaW4td2lkdGg6MTJyZW19LmRhdGFncmlkLWRldGFpbC1vcGVuIC5k''@;'; put 'put ''YXRhZ3JpZHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1yaWdodDpub25lfS5kYXRhZ3JpZC1kZXRhaWwtb3BlbiAuZGF0YWdyaWQtaW5uZXItd3JhcHBlcnt3aWR0aDozNCV9LmRhdGFncmlkLWRldGFpbC1vcGVuIC5kYXRhZ3JpZC1wbGFjZWhvbGRlci1jb250YWluZXIsLmRh''@;'; put 'put ''dGFncmlkLWRldGFpbC1vcGVuIC5kYXRhZ3JpZC1yb3d7Ym9yZGVyLXJpZ2h0Oi4wNXJlbSBzb2xpZCAjY2NjfS5kYXRhZ3JpZC1kZXRhaWwtb3BlbiAuZGF0YWdyaWQtZm9vdGVye2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LmRhdGFncmlkLWRldGFpbC1vcGVuIC5wYWdpbmF0aW9u''@;'; put 'put ''e3dpZHRoOjEwMCV9LmRhdGFncmlkLWRldGFpbC1vcGVuIC5wYWdpbmF0aW9uLWRlc2NyaXB0aW9uLWNvbXBhY3R7dGV4dC1hbGlnbjpsZWZ0O2ZsZXg6MX0uZGF0YWdyaWQtZGV0YWlsLW9wZW4gLmRhdGFncmlkLWZvb3RlciAucGFnaW5hdGlvbi1saXN0e21hcmdpbi1yaWdodDowfS5kYXRh''@;'; put 'put ''Z3JpZC1yb3ctZGV0YWlsLW9wZW57cG9zaXRpb246cmVsYXRpdmV9LmRhdGFncmlkLXJvdy1kZXRhaWwtb3BlbjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6LjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9y''@;'; put 'put ''OnRyYW5zcGFyZW50O2JvcmRlci1yaWdodC1jb2xvcjojY2NjO2JvcmRlci1yaWdodC1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTt0b3A6LjVyZW07cmlnaHQ6MH0uZGF0YWdyaWQtcm93LWRldGFpbC1vcGVuOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpp''@;'; put 'put ''bmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOi40NXJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQtY29sb3I6I2ZmZjtib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYmctY29sb3IsIHdoaXRlKTt0b3A6LjU1cmVtO3JpZ2h0''@;'; put 'put ''Oi0uMDVyZW19LmRhdGFncmlkLWRldGFpbC1wYW5le21hcmdpbi10b3A6LjZyZW07Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNv''@;'; put 'put ''bG9yOnZhcigtLWNsci1kYXRhZ3JpZC1kZWZhdWx0LWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czouMTVyZW07Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7''@;'; put 'put ''Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2JhY2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJnLWNvbG9yLCB3''@;'; put 'put ''aGl0ZSk7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6YmxvY2s7ZmxleC1ncm93OjI7d2lkdGg6NjYlfS5kYXRhZ3JpZC1kZXRhaWwtcGFuZS1jb250ZW50e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47b3ZlcmZsb3c6YXV0bztoZWlnaHQ6MTAwJX0uZGF0YWdyaWQtZGV0YWls''@;'; put 'put ''LWJvZHl7ZmxleDoxIDEgYXV0bztwYWRkaW5nOjAgMS4ycmVtfS5kYXRhZ3JpZC1kZXRhaWwtaGVhZGVye2ZsZXg6MCAwIGF1dG87Zm9udC1zaXplOi45cmVtO2xpbmUtaGVpZ2h0OjEuNjhyZW07cGFkZGluZy1sZWZ0OjEuMnJlbTttYXJnaW4tdG9wOjA7ZGlzcGxheTpmbGV4O2ZsZXgtZGly''@;'; put 'put ''ZWN0aW9uOnJvd30uZGF0YWdyaWQtZGV0YWlsLWhlYWRlciAuZGF0YWdyaWQtZGV0YWlsLWhlYWRlci10aXRsZXtmbGV4OjEgMSBhdXRvO3BhZGRpbmctdG9wOi44cmVtfS5kYXRhZ3JpZC1kZXRhaWwtaGVhZGVyIC5kYXRhZ3JpZC1kZXRhaWwtcGFuZS1jbG9zZXtmbGV4OjEgMSAxLjhyZW07''@;'; put 'put ''cGFkZGluZzowO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmRhdGFncmlkLWRldGFpbC1oZWFkZXIgLmRhdGFncmlkLWRldGFpbC1wYW5lLWNsb3NlIC5idG4uYnRuLWxpbmt7bWFyZ2luLXRvcDouOHJlbTttYXJnaW4tYm90dG9tOjA7cGFkZGluZy1yaWdodDowfS5k''@;'; put 'put ''YXRhZ3JpZC1kZXRhaWwtaGVhZGVyIC5kYXRhZ3JpZC1kZXRhaWwtcGFuZS1jbG9zZSAuYnRuLmJ0bi1saW5rIGNkcy1pY29ue2NvbG9yOiM4YzhjOGM7Y29sb3I6dmFyKC0tY2xyLW1vZGFsLWNsb3NlLWNvbG9yLCAjOGM4YzhjKX0uZGF0YWdyaWQtZGV0YWlsLWNhcmV0e3BhZGRpbmc6MDt0''@;'; put 'put ''ZXh0LWFsaWduOmNlbnRlcn0uZGF0YWdyaWQtZGV0YWlsLWNhcmV0LmRhdGFncmlkLWNlbGx7cGFkZGluZzouM3JlbSAuNDVyZW19LmRhdGFncmlkLWRldGFpbC1jYXJldCAuZGF0YWdyaWQtZGV0YWlsLWNhcmV0LWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFu''@;'; put 'put ''Y2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kOjAgMDtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOi4xcmVtIC4ycmVtIC4xNXJlbX1i''@;'; put 'put ''dXR0b24uZGF0YWdyaWQtZGV0YWlsLWNhcmV0IC5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQtYnV0dG9ue2N1cnNvcjpwb2ludGVyfS5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQgLmRhdGFncmlkLWRldGFpbC1jYXJldC1idXR0b24uaXMtb3BlbntiYWNrZ3JvdW5kLWNvbG9yOiMwMDcyYTM7YmFja2dy''@;'; put 'put ''b3VuZC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtZGV0YWlsLWNhcmV0LWljb24tb3Blbi1iZy1jb2xvciwgIzAwNzJhMyk7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKX0uZGF0YWdyaWQtZGV0YWlsLWNh''@;'; put 'put ''cmV0IC5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQtYnV0dG9uLmlzLW9wZW4gLmRhdGFncmlkLWRldGFpbC1jYXJldC1pY29ue2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWRldGFpbC1jYXJldC1pY29uLW9wZW4taWNvbi1jb2xvciwgd2hpdGUpfS5kYXRhZ3JpZC1kZXRhaWwt''@;'; put 'put ''Y2FyZXQgLmRhdGFncmlkLWRldGFpbC1jYXJldC1pY29ue2NvbG9yOiM4YzhjOGM7Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWljb24tY29sb3IsICM4YzhjOGMpO21hcmdpbi10b3A6LjFyZW19LmRhdGFncmlkLWRldGFpbC1jYXJldCAuc3Bpbm5lcnttYXJnaW4tdG9wOi4zcmVtfS5kYXRh''@;'; put 'put ''Z3JpZC1kZXRhaWwtY2FyZXQuZGF0YWdyaWQtY29sdW1ue3BhZGRpbmc6LjU1cmVtIC42cmVtfS5kYXRhZ3JpZC1kZXRhaWwtb3ZlcmxheS5kYXRhZ3JpZC1kZXRhaWwtb3Blbj4uZGF0YWdyaWQtb3V0ZXItd3JhcHBlcj4uZGF0YWdyaWQtaW5uZXItd3JhcHBlcntkaXNwbGF5Om5vbmV9LmRh''@;'; put 'put ''dGFncmlkLWRldGFpbC1vdmVybGF5IC5kYXRhZ3JpZC1kZXRhaWwtcGFuZXtib3JkZXItbGVmdDouMDVyZW0gc29saWQgI2NjYztib3JkZXItcmFkaXVzOi4xNXJlbX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjU3NnB4KXsuZGF0YWdyaWQtZGV0YWlsLW9wZW4+LmRhdGFncmlkLW91''@;'; put 'put ''dGVyLXdyYXBwZXI+LmRhdGFncmlkLWlubmVyLXdyYXBwZXJ7ZGlzcGxheTpub25lfS5kYXRhZ3JpZC1kZXRhaWwtcGFuZXtib3JkZXItbGVmdDouMDVyZW0gc29saWQgI2NjYztib3JkZXItcmFkaXVzOi4xNXJlbX19LmNvbHVtbi1zd2l0Y2h7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVy''@;'; put 'put ''LXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtwYWRkaW5nOi45cmVtO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJnLWNvbG9yLCB3aGl0ZSk7Ym9yZGVyLXdpZHRoOi4wNXJlbTti''@;'; put 'put ''b3JkZXItd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym94LXNoYWRvdzowIC4w''@;'; put 'put ''NXJlbSAuMTVyZW0gIzhjOGM4YzQwO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtIHZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVycy1ib3gtc2hhZG93LWNvbG9yLCByZ2JhKDE0MCwgMTQwLCAxNDAsIC4yNSkpO3dpZHRoOjEyLjVyZW07ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNv''@;'; put 'put ''bHVtbjt6LWluZGV4OjEwNTB9LmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXJ7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6LjhyZW07cGFkZGluZy1ib3R0b206LjZyZW07bGluZS1oZWlnaHQ6MS4ycmVtfS5j''@;'; put 'put ''b2x1bW4tc3dpdGNoIC5zd2l0Y2gtaGVhZGVyIGgxLC5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtaGVhZGVyIGgyLC5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtaGVhZGVyIGgzLC5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtaGVhZGVyIGg0LC5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtaGVhZGVyIGg1LC5j''@;'; put 'put ''b2x1bW4tc3dpdGNoIC5zd2l0Y2gtaGVhZGVyIGg2e2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXAxLWNvbG9yLCAjNjY2NjY2KTtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOi44cmVtO2xpbmUtaGVpZ2h0OjEuMnJlbTttYXJnaW46MH0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRl''@;'; put 'put ''ciBidXR0b257bWluLXdpZHRoOi45cmVtO21hcmdpbjowO3BhZGRpbmc6MDtjb2xvcjojYjNiM2IzO2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tc3dpdGNoLWhlYWRlci1mb250LWNvbG9yLCAjYjNiM2IzKX0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlciBidXR0b246aG92''@;'; put 'put ''ZXJ7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXN3aXRjaC1oZWFkZXItZm9udC1ob3Zlci1jb2xvciwgIzAwNzJhMyl9LmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1jb250ZW50e21heC1oZWlnaHQ6MTVyZW07b3ZlcmZsb3cteTphdXRvO21pbi1oZWlnaHQ6''@;'; put 'put ''MS4yNXJlbX0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWNvbnRlbnQgbGl7bGluZS1oZWlnaHQ6MS4ycmVtO3BhZGRpbmctbGVmdDouMXJlbX0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWZvb3RlciAuYnRue21hcmdpbjowO3BhZGRpbmc6MH0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWZvb3RlciAu''@;'; put 'put ''YWN0aW9uLXJpZ2h0e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmRhdGFncmlkLWZpbHRlcnttYXJnaW4tdG9wOi4yNHJlbTtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci13''@;'; put 'put ''aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1ib3JkZXItY29sb3IsICNjY2NjY2MpO3Bh''@;'; put 'put ''ZGRpbmc6LjlyZW07Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gIzhjOGM4YzQwO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtIHZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVycy1ib3gtc2hhZG93LWNvbG9yLCByZ2JhKDE0MCwgMTQwLCAxNDAsIC4yNSkpO2JvcmRlci1yYWRpdXM6LjE1''@;'; put 'put ''cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7Zm9udC13ZWlnaHQ6NDAwfS5kYXRhZ3JpZC1maWx0ZXIgLmRhdGFncmlkLWZpbHRlci1jbG9zZS13cmFwcGVye3RleHQtYWxpZ246cmlnaHR9LmRhdGFncmlkLWZpbHRlciAuZGF0YWdyaWQt''@;'; put 'put ''ZmlsdGVyLWNsb3NlLXdyYXBwZXIgLmNsb3Nle2Zsb2F0Om5vbmV9LmRhdGFncmlkLWZpbHRlciAuZGF0YWdyaWQtZmlsdGVyLWFwcGx5e21hcmdpbi1ib3R0b206MH0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93e3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5k''@;'; put 'put ''OnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJnLWNvbG9yLCB3aGl0ZSk7cGFkZGluZzouM3JlbTttYXJnaW4tbGVmdDouM3JlbTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1zdHlsZTpzb2xp''@;'; put 'put ''ZDtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSAjOGM4YzhjNDA7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gdmFyKC0tY2xyLWRhdGFncmlk''@;'; put 'put ''LXBvcG92ZXJzLWJveC1zaGFkb3ctY29sb3IsIHJnYmEoMTQwLCAxNDAsIDE0MCwgLjI1KSk7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtmb250LXdlaWdodDo0MDA7d2hpdGUtc3BhY2U6bm93cmFwfS5k''@;'; put 'put ''YXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3c6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDoxMDAlO3dpZHRoOjA7aGVpZ2h0OjA7bWFyZ2luLXRvcDotLjNyZW07Ym9yZGVyOi4zcmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OjAgbm9uZTti''@;'; put 'put ''b3JkZXItcmlnaHQtY29sb3I6I2NjYztib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKX0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93OmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdo''@;'; put 'put ''dDoxMDAlO3dpZHRoOjA7aGVpZ2h0OjA7bWFyZ2luLXRvcDotLjI1cmVtO2JvcmRlci1yaWdodDouMjVyZW0gc29saWQgI2ZmZjtib3JkZXItdG9wOi4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOi4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudH0uZGF0YWdyaWQtYWN0aW9u''@;'; put 'put ''LW92ZXJmbG93IC5hY3Rpb24taXRlbXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi10ZXh0LWNvbG9yLCAjNjY2NjY2KTtmb250LXNpemU6LjdyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2JhY2tncm91bmQ6MCAwO2JvcmRlcjowO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6''@;'; put 'put ''YmxvY2s7bGluZS1oZWlnaHQ6MS4xNXJlbTttYXJnaW46MDtwYWRkaW5nOi4wNXJlbSAxLjJyZW0gMDt0ZXh0LWFsaWduOmxlZnQ7d2lkdGg6MTAwJX0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpob3ZlciwuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24t''@;'; put 'put ''aXRlbTpmb2N1c3t0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtYWN0aW9uLXBvcG92ZXItaG92ZXItY29sb3IsICNlOGU4ZTgpfS5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1p''@;'; put 'put ''dGVtLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcm93LWhvdmVyLCAjZThlOGU4KTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1yb3ctaG92ZXItZm9udC1jb2xvciwgYmxhY2spfS5kYXRhZ3Jp''@;'; put 'put ''ZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmZvY3Vze291dGxpbmU6MH0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5kaXNhYmxlZCwuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWQ7b3Bh''@;'; put 'put ''Y2l0eTouNDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5kaXNhYmxlZDpob3ZlciwuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpkaXNhYmxlZDpob3ZlcntiYWNrZ3Jv''@;'; put 'put ''dW5kOjAgMH0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5kaXNhYmxlZDphY3RpdmUsLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0uZGlzYWJsZWQ6Zm9jdXMsLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW06ZGlzYWJsZWQ6''@;'; put 'put ''YWN0aXZlLC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmRpc2FibGVkOmZvY3Vze2JhY2tncm91bmQ6MCAwO2JveC1zaGFkb3c6bm9uZX0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbSBjZHMtaWNvbiwuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93''@;'; put 'put ''IC5hY3Rpb24taXRlbSBjbHItaWNvbnt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTFweCwwKX0uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZXtkaXNwbGF5OmJsb2NrfS5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1t''@;'; put 'put ''b2RlIC5kYXRhZ3JpZCwuZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtZm9vdGVyLC5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZC1yb3ctbWFzdGVyLC5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1t''@;'; put 'put ''b2RlIC5kYXRhZ3JpZC1yb3ctY2xpY2thYmxle2Rpc3BsYXk6bm9uZX0uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFibGV7ZGlzcGxheTp0YWJsZTt0YWJsZS1sYXlvdXQ6YXV0b30uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1j''@;'; put 'put ''YWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFibGUgLmRhdGFncmlkLWNhbGN1bGF0aW9uLWhlYWRlcntkaXNwbGF5OnRhYmxlLWhlYWRlci1ncm91cH0uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFibGUg''@;'; put 'put ''LmRhdGFncmlkLWNhbGN1bGF0aW9uLWhlYWRlciAuZGF0YWdyaWQtY29sdW1ue2Rpc3BsYXk6dGFibGUtY2VsbDttaW4td2lkdGg6NC44cmVtfS5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZC1jYWxjdWxhdGlvbi10YWJsZSAuZGF0YWdyaWQtY2FsY3Vs''@;'; put 'put ''YXRpb24taGVhZGVyIC5kYXRhZ3JpZC1jb2x1bW57Ym9yZGVyLWNvbG9yOiNlOGU4ZTg7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci10YWJsZXJvdy1ib3JkZXJjb2xvciwgI2U4ZThlOCk7Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRo''@;'; put 'put ''LCAuMDVyZW0pO2JvcmRlci1zdHlsZTpzb2xpZDtwYWRkaW5nOi41NXJlbSAuNnJlbTt2ZXJ0aWNhbC1hbGlnbjp0b3A7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItcDYtY29sb3IsICM2NjY2NjYpO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQt''@;'; put 'put ''Ym9sZCwgNjAwKTtmb250LXNpemU6LjU1cmVtO2xldHRlci1zcGFjaW5nOi4wM2VtO2xpbmUtaGVpZ2h0Oi42cmVtO21hcmdpbi10b3A6MS4ycmVtO21hcmdpbi1ib3R0b206MH0uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFi''@;'; put 'put ''bGUgLmRhdGFncmlkLXJvd3tkaXNwbGF5OnRhYmxlLXJvd30uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFibGUgLmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGw7bWluLXdpZHRoOjQuOHJl''@;'; put 'put ''bTtmb250LXNpemU6LjY1cmVtO2xpbmUtaGVpZ2h0Oi43cmVtO3BhZGRpbmc6LjU1cmVtIC42cmVtO3ZlcnRpY2FsLWFsaWduOnRvcH0uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvciwuZGF0YWdyaWQtaG9zdC5kYXRhZ3Jp''@;'; put 'put ''ZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtcGxhY2Vob2xkZXItY29udGFpbmVyLC5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZC1maXhlZC1jb2x1bW57ZGlzcGxheTpub25lfS5mYWRle29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjJzIGVh''@;'; put 'put ''c2UtaW4tb3V0O3dpbGwtY2hhbmdlOm9wYWNpdHl9LmZhZGUuaW57b3BhY2l0eToxfS5mYWRlRG93bntvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTI1JSk7dHJhbnNpdGlvbjpvcGFjaXR5IC4ycyBlYXNlLWluLW91dCx0cmFuc2Zvcm0gLjJzIGVhc2UtaW4tb3V0O3dpbGwtY2hh''@;'; put 'put ''bmdlOm9wYWNpdHksdHJhbnNmb3JtfS5mYWRlRG93bi5pbntvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX0ub2Zmc2NyZWVuLWZvY3VzLXJlYm91bmRlcntwb3NpdGlvbjpmaXhlZCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O2hlaWdodDoxcHghaW1wb3J0YW50O3dpZHRo''@;'; put 'put ''OjFweCFpbXBvcnRhbnQ7bGVmdDowIWltcG9ydGFudDt0b3A6LWNvbnZlcnRCYXNlbGluZVRvQmFzZTIwKDEpIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O3Zpc2liaWxpdHk6aGlkZGVuIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O21hcmdpbjowIDAgLWNvbnZl''@;'; put 'put ''cnRCYXNlbGluZVRvQmFzZTIwKDEpIDAhaW1wb3J0YW50O3Zpc2liaWxpdHk6dmlzaWJsZSFpbXBvcnRhbnR9OnJvb3R7LS1jbHItbmF2LWJveC1zaGFkb3ctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci1uYXYtYWN0aXZlLWJveC1zaGFkb3ctY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLW5hdi1hY3RpdmUtYmctY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1zZWxlY3Rpb24tY29sb3IpOy0tY2xyLW5hdi1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jbHItc2lkZW5hdi1saW5rLWhvdmVyLWNvbG9yKTstLWNsci1uYXYtbGluay1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLW5hdi1saW5rLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1uYXYtbGluay1mb250LXdlaWdodDp2YXIoLS1jbHItcDEtZm9udC13ZWlnaHQpOy0tY2xyLW5hdi1saW5rLWFjdGl2ZS1mb250''@;'; put 'put ''LXdlaWdodDp2YXIoLS1jbHItbmF2LWxpbmstZm9udC13ZWlnaHQpfUBtZWRpYSBzY3JlZW57c2VjdGlvblthcmlhLWhpZGRlbj10cnVlXXtkaXNwbGF5Om5vbmV9fVtkYXRhLWhpZGRlbj10cnVlXXtkaXNwbGF5Om5vbmV9YnV0dG9uLm5hdi1saW5re2JvcmRlci1yYWRpdXM6MDt0ZXh0LXRy''@;'; put 'put ''YW5zZm9ybTpjYXBpdGFsaXplO21pbi13aWR0aDowfS50YWJzLW92ZXJmbG93e3Bvc2l0aW9uOnJlbGF0aXZlfS50YWJzLW92ZXJmbG93IC5uYXYtaXRlbXttYXJnaW4tcmlnaHQ6MH0udGFiLWNvbnRlbnR7ZGlzcGxheTppbmxpbmV9XzotbXMtZnVsbHNjcmVlbiAudGFiLWNvbnRlbnQsOnJv''@;'; put 'put ''b3QgLnRhYi1jb250ZW50e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEwMCV9LnRhYnMtdmVydGljYWx7ZGlzcGxheTpmbGV4fS50YWJzLXZlcnRpY2FsPi5uYXZ7aGVpZ2h0OmF1dG87Ym94LXNoYWRvdzpub25lO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpzdHJldGNo''@;'; put 'put ''O21hcmdpbi1yaWdodDoxLjJyZW07b3ZlcmZsb3c6YXV0bztmbGV4LXNocmluazowO3BhZGRpbmc6LjJyZW07d2lkdGg6MTJyZW07bWluLXdpZHRoOjIuNHJlbX0udGFicy12ZXJ0aWNhbD4ubmF2IC5uYXYtbGlua3t0ZXh0LWFsaWduOmxlZnQ7cGFkZGluZzowIC42cmVtO2JvcmRlcjowO21h''@;'; put 'put ''cmdpbi1ib3R0b206LjA1cmVtO2ZsZXgtc2hyaW5rOjA7bWFyZ2luLXRvcDowO21hcmdpbi1sZWZ0OjA7d2lkdGg6MTAwJX0udGFicy12ZXJ0aWNhbD4ubmF2IC5uYXYtbGluay5uYXYtaXRlbXttYXJnaW4tcmlnaHQ6MH0udGFicy12ZXJ0aWNhbD4ubmF2IC5uYXYtbGluay5hY3RpdmUsLnRh''@;'; put 'put ''YnMtdmVydGljYWw+Lm5hdiAubmF2LWxpbms6aG92ZXJ7Ym94LXNoYWRvdzppbnNldCAuMTVyZW0gMCAjMDA3MmEzO2JveC1zaGFkb3c6aW5zZXQgLjE1cmVtIDAgMCB2YXIoLS1jbHItbmF2LWFjdGl2ZS1ib3gtc2hhZG93LWNvbG9yKX0udGFicy12ZXJ0aWNhbD4ubmF2IC5uYXYtbGluay5h''@;'; put 'put ''Y3RpdmV7YmFja2dyb3VuZC1jb2xvcjojZDhlM2U5O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLW5hdi1hY3RpdmUtYmctY29sb3IsICNkOGUzZTkpfS50YWJzLXZlcnRpY2FsPi5uYXYgLm5hdi1saW5rOm5vdCguYWN0aXZlKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFj''@;'; put 'put ''a2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItbmF2LWhvdmVyLWJnLWNvbG9yLCAjZThlOGU4KX06cm9vdHstLWNsci13aXphcmQtbWFpbi1iZ2NvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLXdpemFyZC1zaWRlbmF2LWJnY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwt''@;'; put 'put ''NTApOy0tY2xyLXdpemFyZC1tYWluLXRleHRDb2xvcjp2YXIoLS1jbHItY29sb3Itb24tbmV1dHJhbC0wKTstLWNsci13aXphcmQtc2lkZW5hdi10ZXh0OnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTkwMCk7LS1jbHItd2l6YXJkLXNpZGVuYXYtdGV4dC0tYWN0aXZlOnZhcigtLWNsci1nbG9i''@;'; put 'put ''YWwtb24tc2VsZWN0aW9uLWNvbG9yKTstLWNsci13aXphcmQtdGl0bGUtdGV4dDp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci13aXphcmQtc3RlcG5hdi1ib3JkZXItc2l6ZTouMnJlbTstLWNsci13aXphcmQtc3RlcG5hdi1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9y''@;'; put 'put ''LW5ldXRyYWwtMjAwKTstLWNsci13aXphcmQtc3RlcG5hdi1ib3JkZXItY29sb3ItLWFjdGl2ZTp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy00MDApOy0tY2xyLXdpemFyZC1zdGVwbmF2LWFjdGl2ZS1iZ2NvbG9yOnZhcigtLWNsci1nbG9iYWwtc2VsZWN0aW9uLWNvbG9yKTstLWNsci13aXph''@;'; put 'put ''cmQtaGVhZGVyLWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDApOy0tY2xyLXdpemFyZC1oZWFkZXItYWN0aW9uLWNvbG9yLS1ob3ZlcmVkOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTEwMDApOy0tY2xyLXdpemFyZC1ib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9i''@;'; put 'put ''YWwtYm9yZGVycmFkaXVzKTstLWNsci13aXphcmQtc3RlcG5hdi1hY3RpdmUtYm9yZGVyLXJhZGl1czp2YXIoLS1jbHItd2l6YXJkLWJvcmRlci1yYWRpdXMpOy0tY2xyLXdpemFyZC1zdGVwLW5hdi1ib3JkZXItY29sb3I6aHNsKDAsIDAlLCA4OSUpOy0tY2xyLXdpemFyZC1ib3gtc2hhZG93''@;'; put 'put ''LWNvbG9yOnJnYmEoMCwgMCwgMCwgLjIpfS5jbHItd2l6YXJkIC5tb2RhbC1kaWFsb2d7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7Ym94LXNoYWRvdzowIC4wNXJlbSAuMXJlbSAuMXJlbSAjMDAwMztib3gtc2hhZG93OjAgLjA1cmVtIC4x''@;'; put 'put ''cmVtIC4xcmVtIHZhcigtLWNsci13aXphcmQtYm94LXNoYWRvdy1jb2xvcik7aGVpZ2h0OjUwJTttYXgtaGVpZ2h0OjEwMCV9LmNsci13aXphcmQgLm1vZGFsLWNvbnRlbnR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOi4xNXJlbTtib3JkZXItdG9wLXJpZ2h0LXJh''@;'; put 'put ''ZGl1czp2YXIoLS1jbHItd2l6YXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNsci13aXphcmQtYm9yZGVyLXJhZGl1cywgLjE1cmVtKTtib3gtc2hhZG93Om5vbmU7cGFk''@;'; put 'put ''ZGluZzowO2ZsZXg6MiAyIGF1dG87d2lkdGg6NjYlO2hlaWdodDppbml0aWFsO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNsci13aXphcmQgLm1vZGFsLWhlYWRlciwuY2xyLXdpemFyZCAubW9kYWwt''@;'; put 'put ''aGVhZGVyLS1hY2Nlc3NpYmxle2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJTtwYWRkaW5nOjEuMnJlbSAuOTVyZW0gLjNyZW0gMS4ycmVtfS5jbHItd2l6YXJkIC5tb2RhbC10aXRsZXtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci13aXphcmQtdGl0bGUtdGV4dCwgYmxhY2spO2Rpc3BsYXk6''@;'; put 'put ''ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7d2lkdGg6MTAwJTtsaW5lLWhlaWdodDoxLjM1NnJlbTttYXJnaW4tdG9wOi0uMTU2cmVtfS5jbHItd2l6YXJkIC5tb2RhbC1ib2R5e2ZsZXg6MSAxIGF1dG87Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItd2l6YXJkLW1haW4tdGV4dENvbG9yLCBi''@;'; put 'put ''bGFjayk7d2lkdGg6MTAwJX0uY2xyLXdpemFyZCAubW9kYWwtZm9vdGVye3BhZGRpbmc6MDtkaXNwbGF5OmJsb2NrO3BhZGRpbmctdG9wOjEuMnJlbTtoZWlnaHQ6NC4ycmVtO21pbi1oZWlnaHQ6NC4ycmVtO21heC1oZWlnaHQ6NC4ycmVtO3dpZHRoOjEwMCU7ZmxleDowIDAgNC4ycmVtfS5j''@;'; put 'put ''bHItd2l6YXJkIC5jbHItd2l6YXJkLWJ0bnttYXJnaW46MDttYXgtd2lkdGg6MTAwJTtkaXNwbGF5OmJsb2NrfS5jbHItd2l6YXJkIC5tb2RhbC10aXRsZS10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXg6MCAxIGF1dG87d2lkdGg6MTAwJTtvdXRsaW5lOjB9LmNsci13aXphcmQgLm1v''@;'; put 'put ''ZGFsLXRpdGxlLXdyYXBwZXJ7d2lkdGg6MTAwJX0uY2xyLXdpemFyZCAubW9kYWwtaGVhZGVyLWFjdGlvbnMtd3JhcHBlcntmbGV4OjEgMCBhdXRvO3BhZGRpbmctbGVmdDouNnJlbTtwYWRkaW5nLXJpZ2h0Oi4ycmVtfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWhlYWRlci1hY3Rpb257aGVp''@;'; put 'put ''Z2h0OjEuMnJlbTt3aWR0aDoxLjJyZW07cGFkZGluZzowO21hcmdpbjowO21pbi13aWR0aDoxLjJyZW07bGluZS1oZWlnaHQ6MS4ycmVtO2ZvbnQtc2l6ZToxLjNyZW07Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItd2l6YXJkLWhlYWRlci1hY3Rpb24tY29sb3IsICM4YzhjOGMpO3Ry''@;'; put 'put ''YW5zaXRpb246Y29sb3IgbGluZWFyIC4yc30uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1oZWFkZXItYWN0aW9uIGF7Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItd2l6YXJkLWhlYWRlci1hY3Rpb24tY29sb3IsICM4YzhjOGMpfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWhlYWRlci1h''@;'; put 'put ''Y3Rpb246aG92ZXIsLmNsci13aXphcmQgLmNsci13aXphcmQtaGVhZGVyLWFjdGlvbjphY3RpdmUsLmNsci13aXphcmQgLmNsci13aXphcmQtaGVhZGVyLWFjdGlvbjpmb2N1c3tjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci13aXphcmQtaGVhZGVyLWFjdGlvbi1jb2xvci0taG92ZXJlZCwg''@;'; put 'put ''YmxhY2spfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWhlYWRlci1hY3Rpb24gY2RzLWljb24sLmNsci13aXphcmQgLmNsci13aXphcmQtaGVhZGVyLWFjdGlvbiBjbHItaWNvbntoZWlnaHQ6MS4xcmVtO3dpZHRoOjEuMXJlbX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LXdyYXBw''@;'; put 'put ''ZXJ7ZmxleDoxIDEgYXV0bzt3aWR0aDozNCU7bWF4LXdpZHRoOjM0JTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO29yZGVyOi0xO292ZXJmbG93OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87cGFkZGluZy1ib3R0b206MS4ycmVtO2xpbmUtaGVpZ2h0OjEuMnJlbTtib3JkZXIt''@;'; put 'put ''cmlnaHQtd2lkdGg6LjA1cmVtO2JvcmRlci1yaWdodC13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1yaWdodC1zdHlsZTpzb2xpZDtib3JkZXItcmlnaHQtY29sb3I6I2UzZTNlMztib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2xyLXdpemFyZC1z''@;'; put 'put ''dGVwLW5hdi1ib3JkZXItY29sb3IsICNlM2UzZTMpO2hlaWdodDoxMDAlO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci13aXphcmQtc2lkZW5hdi1iZ2NvbG9yLCAjZmFmYWZhKTtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1''@;'; put 'put ''czouMTVyZW07Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1jbHItd2l6YXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czouMTVyZW07Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1jbHItd2l6YXJkLWJvcmRlci1yYWRpdXMsIC4x''@;'; put 'put ''NXJlbSl9LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdntwYWRkaW5nLWxlZnQ6MS4ycmVtO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOi43cmVtO2NvbG9yOiMzMzM7Y29sb3I6dmFyKC0tY2xyLXdpemFyZC1zaWRlbmF2LXRleHQsICMzMzMzMzMpO3dpZHRoOjEwMCU7ZmxleDoxIDEg''@;'; put 'put ''YXV0b30uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWxpc3R7ZGlzcGxheTpibG9jaztib3gtc2hhZG93Om5vbmU7Y291bnRlci1yZXNldDphO3doaXRlLXNwYWNlOm5vd3JhcDtoZWlnaHQ6YXV0bztsaXN0LXN0eWxlLXR5cGU6bm9uZTttYXJnaW46MDt3aWR0aDoxMDAlfS5jbHIt''@;'; put 'put ''d2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtaXRlbXtkaXNwbGF5OmJsb2NrO2JveC1zaGFkb3c6LjJyZW0gMCAjZThlOGU4IGluc2V0O2JveC1zaGFkb3c6dmFyKC0tY2xyLXdpemFyZC1zdGVwbmF2LWJvcmRlci1zaXplKSAwIDAgdmFyKC0tY2xyLXdpemFyZC1zdGVwbmF2LWJvcmRlci1j''@;'; put 'put ''b2xvcikgaW5zZXQ7bWFyZ2luOjAgMCAtLjA1cmVtO3BhZGRpbmc6LjNyZW0gMCAuM3JlbSAuNHJlbTtjb2xvcjojMzMzO2NvbG9yOnZhcigtLWNsci13aXphcmQtc2lkZW5hdi10ZXh0LCAjMzMzMzMzKTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvbnQtd2VpZ2h0''@;'; put 'put ''LXJlZ3VsYXIsIDQwMCl9LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi1pdGVtLmFjdGl2ZXtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci13aXphcmQtc2lkZW5hdi10ZXh0LS1hY3RpdmUsIGJsYWNrKTtmb250LXdlaWdodDo1MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvbnQt''@;'; put 'put ''d2VpZ2h0LXNlbWlib2xkLCA1MDApfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtaXRlbS5hY3RpdmUgLmNsci13aXphcmQtc3RlcG5hdi1saW5re2JhY2tncm91bmQtY29sb3I6I2Q4ZTNlOTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci13aXphcmQtc3RlcG5hdi1hY3RpdmUt''@;'; put 'put ''Ymdjb2xvciwgI2Q4ZTNlOSk7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6LjE1cmVtO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tY2xyLXdpemFyZC1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6LjE1cmVtO2JvcmRl''@;'; put 'put ''ci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tY2xyLXdpemFyZC1ib3JkZXItcmFkaXVzLCAuMTVyZW0pfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtaXRlbS5jb21wbGV0ZXtib3gtc2hhZG93Oi4ycmVtIDAgIzVlYjcxNSBpbnNldDtib3gtc2hhZG93OnZhcigtLWNsci13aXph''@;'; put 'put ''cmQtc3RlcG5hdi1ib3JkZXItc2l6ZSkgMCAwIHZhcigtLWNsci13aXphcmQtc3RlcG5hdi1ib3JkZXItY29sb3ItLWFjdGl2ZSkgaW5zZXQ7dHJhbnNpdGlvbjpib3gtc2hhZG93IC4ycyBlYXNlLWlufS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtaXRlbS5lcnJvcntib3gtc2hh''@;'; put 'put ''ZG93Oi4ycmVtIDAgI2MyMWQwMCBpbnNldDt0cmFuc2l0aW9uOmJveC1zaGFkb3cgLjJzIGVhc2UtaW59LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi1pdGVtLm5vLWNsaWNrIGJ1dHRvbntwb2ludGVyLWV2ZW50czpub25lfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYt''@;'; put 'put ''bGlua3t3aWR0aDoxMDAlO2Rpc3BsYXk6ZmxleDtjb2xvcjppbmhlcml0O2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjAgLjE1cmVtIDAgLjVyZW07Zm9udC1zaXplOi43cmVtO2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3RleHQtYWxpZ246bGVmdDt0ZXh0''@;'; put 'put ''LXRyYW5zZm9ybTpub25lO21hcmdpbjowfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtbGluayAuY2xyLXdpemFyZC1zdGVwbmF2LWxpbmstc3VmZml4e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21pbi13aWR0aDoxLjJyZW07cGFkZGluZy1yaWdodDouMzVy''@;'; put 'put ''ZW19LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi1saW5rIC5jbHItd2l6YXJkLXN0ZXBuYXYtbGluay1zdWZmaXggLmNsci13aXphcmQtc3RlcG5hdi1pdGVtLWVycm9yLWljb257dHJhbnNmb3JtOm5vbmU7ZmlsbDojYzIxZDAwfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXRpdGxl''@;'; put 'put ''e2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLXdpemFyZC10aXRsZS10ZXh0LCBibGFjayk7bWFyZ2luLXRvcDowO3BhZGRpbmc6MS4ycmVtIC42cmVtIDEuMnJlbSAxLjJyZW07ZmxleDowIDAgYXV0bztmb250LXNpemU6MS4xcmVtO2xpbmUtaGVpZ2h0OjEuMnJlbX0uY2xyLXdpemFyZCAu''@;'; put 'put ''bW9kYWwtY29udGVudC13cmFwcGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleDoxIDEgMTAwJTtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2xyLXdpemFyZCAubW9kYWwtY29udGVudC13cmFwcGVyIC5tb2RhbC1uYXZ7aGVpZ2h0OmF1dG99''@;'; put 'put ''LmNsci13aXphcmQgLmNsci13aXphcmQtZm9vdGVyLWJ1dHRvbnN7dGV4dC1hbGlnbjpyaWdodDtwYWRkaW5nLXJpZ2h0OjEuMnJlbTttYXJnaW46MH0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1mb290ZXItYnV0dG9ucy13cmFwcGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7''@;'; put 'put ''ZmxleC13cmFwOm5vd3JhcDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmNsci13aXphcmQgLmNsci13aXphcmQtYnRuLXdyYXBwZXJ7ZmxleDowIDEgYXV0bzttaW4td2lkdGg6NC4ycmVtO3BhZGRpbmctbGVmdDouNnJlbX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1idG4td3JhcHBlclth''@;'; put 'put ''cmlhLWhpZGRlbj10cnVlXXtkaXNwbGF5Om5vbmV9LmNsci13aXphcmQgLmNsci13aXphcmQtYnRuLmJ0bi1saW5re3BhZGRpbmc6MH0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1jb250ZW50e2Rpc3BsYXk6YmxvY2t9LmNsci13aXphcmQgLmNsci13aXphcmQtcGFnZTpub3QoW2FyaWEtaGlk''@;'; put 'put ''ZGVuPXRydWVdKXtwYWRkaW5nOi45cmVtIDEuMnJlbSAxLjJyZW07ZGlzcGxheTpibG9ja30uY2xyLXdpemFyZCAubW9kYWwtZGlhbG9ne2hlaWdodDo3NXZofS5jbHItd2l6YXJkIC5tb2RhbC1ib2R5LXdyYXBwZXJ7bWF4LWhlaWdodDoxMDAlO2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MTt3''@;'; put 'put ''aWR0aDoxMDAlfS5jbHItd2l6YXJkLndpemFyZC1tZCAubW9kYWwtZGlhbG9ne21pbi1oZWlnaHQ6MjFyZW07bWF4LWhlaWdodDoyNS4ycmVtfS5jbHItd2l6YXJkLndpemFyZC1tZCAubW9kYWwtY29udGVudCwuY2xyLXdpemFyZC53aXphcmQtbWQgLmNsci13aXphcmQtc3RlcG5hdi13cmFw''@;'; put 'put ''cGVye21heC1oZWlnaHQ6MjUuMnJlbX0uY2xyLXdpemFyZC53aXphcmQtbWQgLmNsci13aXphcmQtc3RlcG5hdi13cmFwcGVye21pbi13aWR0aDoxMC44cmVtO21heC13aWR0aDoxMnJlbX0uY2xyLXdpemFyZC53aXphcmQtbGcgLm1vZGFsLWRpYWxvZ3ttaW4taGVpZ2h0OjIxcmVtO21heC1o''@;'; put 'put ''ZWlnaHQ6MzZyZW19LmNsci13aXphcmQud2l6YXJkLWxnIC5tb2RhbC1jb250ZW50LC5jbHItd2l6YXJkLndpemFyZC1sZyAuY2xyLXdpemFyZC1zdGVwbmF2LXdyYXBwZXJ7bWF4LWhlaWdodDozNnJlbX0uY2xyLXdpemFyZC53aXphcmQtbGcgLm5hdi1wYW5lbCwuY2xyLXdpemFyZC53aXph''@;'; put 'put ''cmQtbGcgLmNsci13aXphcmQtc3RlcG5hdi13cmFwcGVye21pbi13aWR0aDoxMnJlbTttYXgtd2lkdGg6MTQuNHJlbX0uY2xyLXdpemFyZC53aXphcmQteGwgLm1vZGFsLWRpYWxvZ3toZWlnaHQ6NzV2aDttYXgtaGVpZ2h0Om5vbmV9LmNsci13aXphcmQud2l6YXJkLXhsIC5uYXYtcGFuZWws''@;'; put 'put ''LmNsci13aXphcmQud2l6YXJkLXhsIC5jbHItd2l6YXJkLXN0ZXBuYXYtd3JhcHBlcnttaW4td2lkdGg6MTJyZW07bWF4LXdpZHRoOjE1LjZyZW19LmNsci13aXphcmQgLnNwaW5uZXI6bm90KC5zcGlubmVyLWlubGluZSk6bm90KC5jbHItdHJlZW5vZGUtc3Bpbm5lcil7bGVmdDpjYWxjKDUw''@;'; put 'put ''JSArIDUuNzVyZW0pO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo0MCV9LmNsci13aXphcmQtcGFnZT46Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfS5jbHItd2l6YXJkLXBhZ2U+OmZpcnN0LWNoaWxkPjpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9LmNsci13aXphcmQtcGFnZT5mb3JtOmZpcnN0''@;'; put 'put ''LWNoaWxke3BhZGRpbmctdG9wOjB9LmNsci13aXphcmQtcGFnZT5mb3JtOmZpcnN0LWNoaWxkPi5mb3JtLWJsb2NrOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0uY2xyLXdpemFyZC0taW5saW5le2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJX0uY2xyLXdpemFyZC0taW5saW5lPmNsci1tb2Rh''@;'; put 'put ''bD4ubW9kYWw6Zm9jdXN7b3V0bGluZS1zdHlsZTpub25lO291dGxpbmUtY29sb3I6dHJhbnNwYXJlbnR9LmNsci13aXphcmQtLWlubGluZSBjbHItbW9kYWx7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtkaXNwbGF5OmJsb2NrfS5jbHItd2l6YXJkLS1pbmxpbmUgLm1vZGFse3BhZGRpbmc6MDtw''@;'; put 'put ''b3NpdGlvbjpzdGF0aWM7aGVpZ2h0OjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jbHItd2l6YXJkLS1pbmxpbmUgLm1vZGFsIC5jb250ZW50LWNvbnRhaW5lcntoZWlnaHQ6MTAwJX0uY2xyLXdpemFyZC0taW5saW5lIC5tb2RhbCAuY29udGVudC1jb250YWluZXIgLm5hdi1wYW5lbHtoZWlnaHQ6''@;'; put 'put ''OTklO3dpZHRoOjk5JX0uY2xyLXdpemFyZC0taW5saW5lIC5tb2RhbCAubW9kYWwtY29udGVudHtib3gtc2hhZG93Om5vbmV9LmNsci13aXphcmQtLWlubGluZSAubW9kYWwgLm1vZGFsLWRpYWxvZ3ttaW4taGVpZ2h0OjEwMCU7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTt6LWluZGV4OmF1dG99''@;'; put 'put ''LmNsci13aXphcmQtLWlubGluZSAubW9kYWwtYm9keS13cmFwcGVye2hlaWdodDoxMDAlfS5jbHItd2l6YXJkLS1pbmxpbmUgLm1vZGFsLWhlYWRlciAuY2xvc2UsLmNsci13aXphcmQtLWlubGluZSAubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5jbG9zZXtkaXNwbGF5Om5vbmV9LmNsci13''@;'; put 'put ''aXphcmQtLWlubGluZSAubmF2Lm5hdkxpc3R7cGFkZGluZy10b3A6MH0uY2xyLXdpemFyZC0taW5saW5lIC5tb2RhbC1kaWFsb2cgLm1vZGFsLWNvbnRlbnQgLm1vZGFsLWJvZHkgLmNvbnRlbnQtYXJlYXtvdmVyZmxvdy15OmF1dG99LmNsci13aXphcmQtLWlubGluZSAubW9kYWwtYmFja2Ry''@;'; put 'put ''b3B7aGVpZ2h0OjA7d2lkdGg6MDtkaXNwbGF5Om5vbmV9LmNsci13aXphcmQtLWlubGluZSAubW9kYWwtY29udGVudC13cmFwcGVye2FsaWduLWl0ZW1zOnN0cmV0Y2g7aGVpZ2h0OjEwMCV9LmNsci13aXphcmQtLWlubGluZSAuY2xyLXdpemFyZC1zdGVwbmF2LXdyYXBwZXIsLmNsci13aXph''@;'; put 'put ''cmQtLWlubGluZS5jbHItd2l6YXJkIC5tb2RhbC1jb250ZW50e21pbi1oZWlnaHQ6MTAwJTtoZWlnaHQ6YXV0bzttYXgtaGVpZ2h0OjEwMCV9LmNsci13aXphcmQtLWlubGluZSAuY2xyLXdpemFyZC1zdGVwbmF2LXdyYXBwZXIgLmNsci13aXphcmQtc3RlcG5hdiwuY2xyLXdpemFyZC0taW5s''@;'; put 'put ''aW5lLmNsci13aXphcmQgLm1vZGFsLWNvbnRlbnQgLmNsci13aXphcmQtc3RlcG5hdntoZWlnaHQ6MTAwJX0uY2xyLXdpemFyZC0tbm8tc2hhZG93IC5tb2RhbC1jb250ZW50LXdyYXBwZXIsLmNsci13aXphcmQtLW5vLXNoYWRvdyAubW9kYWwtZGlhbG9ne2JveC1zaGFkb3c6bm9uZX0uY2xy''@;'; put 'put ''LXdpemFyZC0tbm8tdGl0bGUgLmNsci13aXphcmQtdGl0bGV7ZGlzcGxheTpub25lfS5jbHItd2l6YXJkLS1uby10aXRsZSAuY2xyLXdpemFyZC1zdGVwbmF2e3BhZGRpbmctdG9wOjEuMnJlbX1AbWVkaWEgc2NyZWVuey5jbHItd2l6YXJkLXBhZ2VbYXJpYS1oaWRkZW49dHJ1ZV17ZGlzcGxh''@;'; put 'put ''eTpub25lfX1Ac3VwcG9ydHMgKC1tcy1pbWUtYWxpZ246YXV0byl7LmNsci13aXphcmQgLmNsci13aXphcmQtaGVhZGVyLWFjdGlvbnttYXJnaW4tdG9wOi0uMTVyZW19fTpyb290ey0tY2xyLXNpZ25wb3N0LWNvbnRlbnQtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1j''@;'; put 'put ''bHItc2lnbnBvc3QtY29udGVudC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNTAwKTstLWNsci1zaWducG9zdC1hY3Rpb24tY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci1zaWducG9zdC1hY3Rpb24taG92ZXItY29sb3I6dmFyKC0tY2xyLWNv''@;'; put 'put ''bG9yLWFjdGlvbi03MDApOy0tY2xyLXNpZ25wb3N0LWJvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMpOy0tY2xyLXNpZ25wb3N0LXBvaW50ZXItYm9yZGVyOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWJvcmRlcik7LS1jbHItc2lnbnBvc3QtcG9pbnRlci1p''@;'; put 'put ''bnZpc2libGUtYm9yZGVyOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIpOy0tY2xyLXNpZ25wb3N0LXBvaW50ZXItcHN1ZWRvLWJvcmRlcjp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1wc3VlZG8tYm9yZGVyKX0uc2lnbnBvc3R7ZGlzcGxheTppbmxpbmUt''@;'; put 'put ''YmxvY2t9LnNpZ25wb3N0OmhvdmVye2N1cnNvcjpwb2ludGVyfS5zaWducG9zdCAuc2lnbnBvc3QtYWN0aW9ue21pbi13aWR0aDoxLjJyZW07bWFyZ2luOjA7cGFkZGluZzowO2NvbG9yOiM4YzhjOGM7Y29sb3I6dmFyKC0tY2xyLXNpZ25wb3N0LWFjdGlvbi1jb2xvciwgIzhjOGM4Yyl9LnNp''@;'; put 'put ''Z25wb3N0IC5zaWducG9zdC1hY3Rpb24gY2RzLWljb24sLnNpZ25wb3N0IC5zaWducG9zdC1hY3Rpb24gY2xyLWljb257aGVpZ2h0OjEuMnJlbTt3aWR0aDoxLjJyZW19LnNpZ25wb3N0IC5zaWducG9zdC1hY3Rpb246aG92ZXIsLnNpZ25wb3N0IC5zaWducG9zdC1hY3Rpb24uYWN0aXZle2Nv''@;'; put 'put ''bG9yOiMwMDY0OGY7Y29sb3I6dmFyKC0tY2xyLXNpZ25wb3N0LWFjdGlvbi1ob3Zlci1jb2xvciwgIzAwNjQ4Zil9LnNpZ25wb3N0IC5zaWducG9zdC1jb250ZW50LWhlYWRlciBidXR0b24gY2RzLWljb24sLnNpZ25wb3N0IC5zaWducG9zdC1jb250ZW50LWhlYWRlciBidXR0b24gY2xyLWlj''@;'; put 'put ''b257aGVpZ2h0Oi44cmVtO3dpZHRoOi44cmVtfS5zaWducG9zdC10cmlnZ2Vye21hcmdpbjowO3BhZGRpbmc6MDtkaXNwbGF5OmlubGluZS1ibG9ja30uc2lnbnBvc3QtY29udGVudHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O21pbi13aWR0aDoxMC44cmVtO21heC13aWR0aDoxOHJl''@;'; put 'put ''bTttaW4taGVpZ2h0OjIuNHJlbTttYXgtaGVpZ2h0OjI1LjJyZW07ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxMDUwfS5zaWducG9zdC1jb250ZW50OmhvdmVye2N1cnNvcjpkZWZhdWx0fS5zaWducG9zdC1jb250ZW50IC5wb3BvdmVyLXBvaW50ZXJ7''@;'; put 'put ''aGVpZ2h0OjA7d2lkdGg6MDtwb3NpdGlvbjphYnNvbHV0ZX0uc2lnbnBvc3QtY29udGVudCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtjb250ZW50OiIiO2hlaWdodDowO3dpZHRoOjA7cG9zaXRpb246YWJzb2x1dGV9LnNpZ25wb3N0LWNvbnRlbnQudG9wLWxlZnQgLnBvcG92ZXItcG9pbnRl''@;'; put 'put ''ciwuc2lnbnBvc3QtY29udGVudC50b3AtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXIsLnNpZ25wb3N0LWNvbnRlbnQudG9wLXJpZ2h0IC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLXRvcDouNnJlbSBzb2xpZCAjYjNiM2IzO2JvcmRlci10b3A6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItYm9y''@;'; put 'put ''ZGVyLCAuNnJlbSBzb2xpZCAjYjNiM2IzKTtib3R0b206LS42cmVtfS5zaWducG9zdC1jb250ZW50LnRvcC1sZWZ0IC5wb3BvdmVyLXBvaW50ZXI6YmVmb3JlLC5zaWducG9zdC1jb250ZW50LnRvcC1taWRkbGUgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmUsLnNpZ25wb3N0LWNvbnRlbnQudG9w''@;'; put 'put ''LXJpZ2h0IC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci10b3A6LjZyZW0gc29saWQgI2ZmZjtib3JkZXItdG9wOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLXBzdWVkby1ib3JkZXIsIC42cmVtIHNvbGlkIHdoaXRlKTtib3R0b206LjFyZW19LnNpZ25wb3N0LWNvbnRlbnQudG9w''@;'; put 'put ''LWxlZnQgLnNpZ25wb3N0LXdyYXB7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uc2lnbnBvc3QtY29udGVudC50b3AtbGVmdCAucG9wb3Zlci1wb2ludGVye2JvcmRlci1sZWZ0Oi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OnZhcigtLWNsci1zaWducG9zdC1wb2lu''@;'; put 'put ''dGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTtyaWdodDotLjA1cmVtfS5zaWducG9zdC1jb250ZW50LnRvcC1sZWZ0IC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci1sZWZ0Oi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OnZhcigt''@;'; put 'put ''LWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTtyaWdodDouMDVyZW19LnNpZ25wb3N0LWNvbnRlbnQudG9wLW1pZGRsZSAucG9wb3Zlci1wb2ludGVye2JvcmRlci1yaWdodDouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3Jk''@;'; put 'put ''ZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO2xlZnQ6NTAlfS5zaWducG9zdC1jb250ZW50LnRvcC1taWRkbGUgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLXJpZ2h0Oi42cmVtIHNvbGlk''@;'; put 'put ''IHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7bGVmdDouMDVyZW19LnNpZ25wb3N0LWNvbnRlbnQudG9wLXJpZ2h0IC5zaWducG9zdC13cmFwe2JvcmRlci1ib3R0b20t''@;'; put 'put ''bGVmdC1yYWRpdXM6MH0uc2lnbnBvc3QtY29udGVudC50b3AtcmlnaHQgLnBvcG92ZXItcG9pbnRlcntib3JkZXItcmlnaHQ6LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlk''@;'; put 'put ''IHRyYW5zcGFyZW50KTtsZWZ0Oi0uMDVyZW19LnNpZ25wb3N0LWNvbnRlbnQudG9wLXJpZ2h0IC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci1yaWdodDouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxl''@;'; put 'put ''LWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO2xlZnQ6LjA1cmVtfS5zaWducG9zdC1jb250ZW50LmJvdHRvbS1sZWZ0IC5wb3BvdmVyLXBvaW50ZXIsLnNpZ25wb3N0LWNvbnRlbnQuYm90dG9tLW1pZGRsZSAucG9wb3Zlci1wb2ludGVyLC5zaWducG9zdC1jb250ZW50LmJvdHRv''@;'; put 'put ''bS1yaWdodCAucG9wb3Zlci1wb2ludGVye2JvcmRlci1ib3R0b206LjZyZW0gc29saWQgI2IzYjNiMztib3JkZXItYm90dG9tOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWJvcmRlciwgLjZyZW0gc29saWQgI2IzYjNiMyk7dG9wOi0uNTVyZW19LnNpZ25wb3N0LWNvbnRlbnQuYm90dG9t''@;'; put 'put ''LWxlZnQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmUsLnNpZ25wb3N0LWNvbnRlbnQuYm90dG9tLW1pZGRsZSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZSwuc2lnbnBvc3QtY29udGVudC5ib3R0b20tcmlnaHQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLWJvdHRvbTouNnJlbSBzb2xp''@;'; put 'put ''ZCAjZmZmO2JvcmRlci1ib3R0b206dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItcHN1ZWRvLWJvcmRlciwgLjZyZW0gc29saWQgd2hpdGUpO3RvcDouMXJlbX0uc2lnbnBvc3QtY29udGVudC5ib3R0b20tbGVmdCAuc2lnbnBvc3Qtd3JhcHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5z''@;'; put 'put ''aWducG9zdC1jb250ZW50LmJvdHRvbS1sZWZ0IC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLWxlZnQ6LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO3Jp''@;'; put 'put ''Z2h0Oi0uMDVyZW19LnNpZ25wb3N0LWNvbnRlbnQuYm90dG9tLWxlZnQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLWxlZnQ6LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0g''@;'; put 'put ''c29saWQgdHJhbnNwYXJlbnQpO3JpZ2h0Oi4wNXJlbX0uc2lnbnBvc3QtY29udGVudC5ib3R0b20tbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLXJpZ2h0Oi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2li''@;'; put 'put ''bGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7cmlnaHQ6NTAlfS5zaWducG9zdC1jb250ZW50LmJvdHRvbS1taWRkbGUgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLXJpZ2h0Oi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDp2YXIoLS1jbHItc2ln''@;'; put 'put ''bnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7cmlnaHQ6LS42NXJlbX0uc2lnbnBvc3QtY29udGVudC5ib3R0b20tcmlnaHQgLnNpZ25wb3N0LXdyYXB7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowfS5zaWducG9zdC1jb250ZW50LmJvdHRv''@;'; put 'put ''bS1yaWdodCAucG9wb3Zlci1wb2ludGVye2JvcmRlci1yaWdodDouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO2xlZnQ6LS4wNXJlbX0uc2lnbnBv''@;'; put 'put ''c3QtY29udGVudC5ib3R0b20tcmlnaHQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLXJpZ2h0Oi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVu''@;'; put 'put ''dCk7bGVmdDouMDVyZW19LnNpZ25wb3N0LWNvbnRlbnQubGVmdC10b3AgLnBvcG92ZXItcG9pbnRlciwuc2lnbnBvc3QtY29udGVudC5sZWZ0LW1pZGRsZSAucG9wb3Zlci1wb2ludGVyLC5zaWducG9zdC1jb250ZW50LmxlZnQtYm90dG9tIC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLWxlZnQ6''@;'; put 'put ''LjZyZW0gc29saWQgI2IzYjNiMztib3JkZXItbGVmdDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1ib3JkZXIsIC42cmVtIHNvbGlkICNiM2IzYjMpO3JpZ2h0Oi0uNnJlbX0uc2lnbnBvc3QtY29udGVudC5sZWZ0LXRvcCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZSwuc2lnbnBvc3QtY29u''@;'; put 'put ''dGVudC5sZWZ0LW1pZGRsZSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZSwuc2lnbnBvc3QtY29udGVudC5sZWZ0LWJvdHRvbSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItbGVmdDouNnJlbSBzb2xpZCAjZmZmO2JvcmRlci1sZWZ0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLXBz''@;'; put 'put ''dWVkby1ib3JkZXIsIC42cmVtIHNvbGlkIHdoaXRlKX0uc2lnbnBvc3QtY29udGVudC5sZWZ0LXRvcCAuc2lnbnBvc3Qtd3JhcHtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5zaWducG9zdC1jb250ZW50LmxlZnQtdG9wIC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLXRvcDouNnJlbSBz''@;'; put 'put ''b2xpZCB0cmFuc3BhcmVudDtib3JkZXItdG9wOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTtib3R0b206LS4wNXJlbX0uc2lnbnBvc3QtY29udGVudC5sZWZ0LXRvcCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXti''@;'; put 'put ''b3JkZXItdG9wOi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO3RvcDotLjY1cmVtO3JpZ2h0Oi4xcmVtfS5zaWducG9zdC1jb250ZW50LmxlZnQtbWlk''@;'; put 'put ''ZGxlIC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLWJvdHRvbTouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTt0b3A6NTAlO3RyYW5zZm9ybTp0cmFu''@;'; put 'put ''c2xhdGVZKC01MCUpfS5zaWducG9zdC1jb250ZW50LmxlZnQtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci1ib3R0b206LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAu''@;'; put 'put ''NnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7dG9wOi4wNXJlbTtsZWZ0Oi0uN3JlbX0uc2lnbnBvc3QtY29udGVudC5sZWZ0LWJvdHRvbSAuc2lnbnBvc3Qtd3JhcHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5zaWducG9zdC1jb250ZW50LmxlZnQtYm90dG9tIC5wb3BvdmVyLXBvaW50ZXJ7''@;'; put 'put ''Ym9yZGVyLWJvdHRvbTouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTt0b3A6LS4wNXJlbX0uc2lnbnBvc3QtY29udGVudC5sZWZ0LWJvdHRvbSAu''@;'; put 'put ''cG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItYm90dG9tOi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO3RvcDouMDVyZW07bGVmdDotLjdy''@;'; put 'put ''ZW19LnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtdG9wIC5wb3BvdmVyLXBvaW50ZXIsLnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXIsLnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtYm90dG9tIC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLXJpZ2h0Oi42cmVtIHNv''@;'; put 'put ''bGlkICNiM2IzYjM7Ym9yZGVyLXJpZ2h0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWJvcmRlciwgLjZyZW0gc29saWQgI2IzYjNiMyk7bGVmdDotLjZyZW19LnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtdG9wIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3JlLC5zaWducG9zdC1jb250ZW50LnJp''@;'; put 'put ''Z2h0LW1pZGRsZSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZSwuc2lnbnBvc3QtY29udGVudC5yaWdodC1ib3R0b20gLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLXJpZ2h0Oi42cmVtIHNvbGlkICNmZmY7Ym9yZGVyLXJpZ2h0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLXBzdWVk''@;'; put 'put ''by1ib3JkZXIsIC42cmVtIHNvbGlkIHdoaXRlKTtsZWZ0Oi4xcmVtfS5zaWducG9zdC1jb250ZW50LnJpZ2h0LXRvcCAuc2lnbnBvc3Qtd3JhcHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtdG9wIC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLXRv''@;'; put 'put ''cDouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItdG9wOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTtib3R0b206LS4wNXJlbX0uc2lnbnBvc3QtY29udGVudC5yaWdodC10b3AgLnBvcG92ZXItcG9pbnRl''@;'; put 'put ''cjpiZWZvcmV7Ym9yZGVyLXRvcDouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItdG9wOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTt0b3A6LS42NXJlbX0uc2lnbnBvc3QtY29udGVudC5yaWdodC1taWRk''@;'; put 'put ''bGUgLnBvcG92ZXItcG9pbnRlcntib3JkZXItYm90dG9tOi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5z''@;'; put 'put ''bGF0ZVkoLTUwJSl9LnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci1ib3R0b206LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAu''@;'; put 'put ''NnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7dG9wOi4wNXJlbX0uc2lnbnBvc3QtY29udGVudC5yaWdodC1ib3R0b20gLnNpZ25wb3N0LXdyYXB7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowfS5zaWducG9zdC1jb250ZW50LnJpZ2h0LWJvdHRvbSAucG9wb3Zlci1wb2ludGVye2JvcmRlci1ib3R0''@;'; put 'put ''b206LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7dG9wOi0uMDVyZW19LnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtYm90dG9tIC5wb3BvdmVyLXBv''@;'; put 'put ''aW50ZXI6YmVmb3Jle2JvcmRlci1ib3R0b206LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7dG9wOi4wNXJlbX0uc2lnbnBvc3QtY29udGVudC1o''@;'; put 'put ''ZWFkZXJ7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDt0b3A6MH0uc2lnbnBvc3Qtd3JhcHtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1z''@;'; put 'put ''aWducG9zdC1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojYjNiM2IzO2JvcmRlci1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''c2lnbnBvc3QtY29udGVudC1ib3JkZXItY29sb3IsICNiM2IzYjMpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1zaWducG9zdC1jb250ZW50LWJnLWNvbG9yLCB3aGl0ZSk7ei1pbmRleDoxMDUwO3Bvc2l0aW9uOnJlbGF0aXZlfS5zaWducG9zdC1j''@;'; put 'put ''b250ZW50LWJvZHl7cGFkZGluZzoxLjJyZW07bWF4LWhlaWdodDoyNHJlbTtvdmVyZmxvdy15OmF1dG99LmRyYWctaGFuZGxle2N1cnNvcjpncmFifS5pbi1kcmFne2N1cnNvcjpncmFiYmluZzstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uaW4tZHJhZyAqe3Bv''@;'; put 'put ''aW50ZXItZXZlbnRzOm5vbmV9LmluLWRyYWcgLmRyYWdnYWJsZS5iZWluZy1kcmFnZ2Vke29wYWNpdHk6LjZ9LmRyYWdnYWJsZS1naG9zdHtwb3NpdGlvbjpmaXhlZDtkaXNwbGF5OmJsb2NrO3Zpc2liaWxpdHk6aGlkZGVuO3otaW5kZXg6MjE0NzQ4MzY0Nztwb2ludGVyLWV2ZW50czpub25l''@;'; put 'put ''O3dpbGwtY2hhbmdlOmxlZnQsdG9wfS5kcmFnZ2FibGUtZ2hvc3Q+LmRyYWdnYWJsZXttYXJnaW46MDtvcGFjaXR5OjF9LmRyYWdnYWJsZS1naG9zdC5kcm9wcGVke29wYWNpdHk6MH0uZHJvcHBhYmxlLmRyYWdnYWJsZS1tYXRjaHtib3JkZXI6LjA1cmVtIGRhc2hlZCAjYzA5MGQ1fS5kcm9w''@;'; put 'put ''cGFibGUuZHJhZ2dhYmxlLW92ZXJ7Ym9yZGVyOi4wNXJlbSBkYXNoZWQgIzY4MDA5NH06cm9vdHstLWNsci1hY2NvcmRpb24tdGV4dC1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLWZvbnQtY29sb3IpOy0tY2xyLWFjY29yZGlvbi1hY3RpdmUtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZ2xv''@;'; put 'put ''YmFsLXNlbGVjdGlvbi1jb2xvcik7LS1jbHItYWNjb3JkaW9uLWNvbnRlbnQtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1hY2NvcmRpb24taGVhZGVyLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNTApOy0tY2xyLWFj''@;'; put 'put ''Y29yZGlvbi1oZWFkZXItaG92ZXItYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0yMDApOy0tY2xyLWFjY29yZGlvbi1oZWFkZXItZm9udC1zaXplOi44cmVtOy0tY2xyLWFjY29yZGlvbi1oZWFkZXItYnV0dG9uLWZvbnQtc2l6ZTouNnJlbTstLWNsci1hY2NvcmRp''@;'; put 'put ''b24tdGl0bGUtZm9udC13ZWlnaHQ6NTAwOy0tY2xyLWFjY29yZGlvbi10aXRsZS1mb250LXNpemU6LjY1cmVtOy0tY2xyLWFjY29yZGlvbi1lcnJvci1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLWVycm9yLWNvbG9yKTstLWNsci1hY2NvcmRpb24tY29tcGxldGUtY29sb3I6dmFyKC0tY2xyLWds''@;'; put 'put ''b2JhbC1zdWNjZXNzLWNvbG9yKTstLWNsci1hY2NvcmRpb24tYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1jbHItYWNjb3JkaW9uLWJvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMpOy0tY2xyLWFjY29yZGlvbi1ib3JkZXItbGVm''@;'; put 'put ''dC1jb2xvcjojZThlOGU4Oy0tY2xyLWFjY29yZGlvbi1ib3JkZXItbGVmdC13aWR0aDouM3JlbTstLWNsci1hY2NvcmRpb24tYm9yZGVyLWxlZnQtY29sb3ItY29tcGxldGU6dmFyKC0tY2xyLWFjY29yZGlvbi1jb21wbGV0ZS1jb2xvcik7LS1jbHItYWNjb3JkaW9uLWJvcmRlci1sZWZ0LWNv''@;'; put 'put ''bG9yLWVycm9yOnZhcigtLWNsci1hY2NvcmRpb24tZXJyb3ItY29sb3IpOy0tY2xyLWFjY29yZGlvbi1oZWFkZXItbGVmdC1pbmRpY2F0b3I6aW5zZXQgdmFyKC0tY2xyLWFjY29yZGlvbi1ib3JkZXItbGVmdC13aWR0aCkgMCAwIHZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLWxlZnQtY29s''@;'; put 'put ''b3IpOy0tY2xyLWFjY29yZGlvbi1oZWFkZXItbGVmdC1jb21wbGV0ZS1pbmRpY2F0b3I6aW5zZXQgdmFyKC0tY2xyLWFjY29yZGlvbi1ib3JkZXItbGVmdC13aWR0aCkgMCAwIHZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLWxlZnQtY29sb3ItY29tcGxldGUpOy0tY2xyLWFjY29yZGlvbi1o''@;'; put 'put ''ZWFkZXItbGVmdC1lcnJvci1pbmRpY2F0b3I6aW5zZXQgdmFyKC0tY2xyLWFjY29yZGlvbi1ib3JkZXItbGVmdC13aWR0aCkgMCAwIHZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLWxlZnQtY29sb3ItZXJyb3IpfS5jbHItYWNjb3JkaW9ue2Rpc3BsYXk6YmxvY2s7Y291bnRlci1yZXNldDph''@;'; put 'put ''Y2NvcmRpb247bWFyZ2luLWJvdHRvbToxLjJyZW19LmNsci1hY2NvcmRpb24tcGFuZWx7ZGlzcGxheTpibG9ja30uY2xyLWFjY29yZGlvbi1oZWFkZXJ7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLXRleHQtY29sb3IsICM2NjY2NjYpO2JvcmRlcjouMDVyZW0gc29saWQ7''@;'; put 'put ''Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3gtc2hhZG93Omluc2V0IC4zcmVtIDAgI2U4ZThlODtib3gtc2hhZG93OnZhcigtLWNsci1hY2NvcmRpb24taGVhZGVyLWxlZnQtaW5kaWNhdG9yLCBpbnNl''@;'; put 'put ''dCAuM3JlbSAwIDAgI2U4ZThlOCk7YmFja2dyb3VuZDojZmFmYWZhO2JhY2tncm91bmQ6dmFyKC0tY2xyLWFjY29yZGlvbi1oZWFkZXItYmFja2dyb3VuZC1jb2xvciwgI2ZhZmFmYSk7dHJhbnNpdGlvbjphbGwgLjJzIGVhc2UtaW4tb3V0O2JvcmRlci1ib3R0b206MDt3aWR0aDoxMDAlO2Zv''@;'; put 'put ''bnQtc2l6ZTouOHJlbTtmb250LXNpemU6dmFyKC0tY2xyLWFjY29yZGlvbi1oZWFkZXItZm9udC1zaXplLCAuOHJlbSk7dGV4dC1hbGlnbjpsZWZ0fS5jbHItYWNjb3JkaW9uLWhlYWRlcjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''YWNjb3JkaW9uLWhlYWRlci1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yLCAjZThlOGU4KX0uY2xyLWFjY29yZGlvbi1wYW5lbDpsYXN0LWNoaWxkIC5jbHItYWNjb3JkaW9uLWNvbnRlbnQsLmNsci1hY2NvcmRpb24tcGFuZWw6bGFzdC1jaGlsZCAuY2xyLWFjY29yZGlvbi1oZWFkZXJ7Ym9yZGVy''@;'; put 'put ''LWJvdHRvbS1zdHlsZTpzb2xpZDtib3JkZXItYm90dG9tLXdpZHRoOi4wNXJlbTtib3JkZXItYm90dG9tLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLWJvdHRvbS1jb2xvcjojY2NjO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWFjY29y''@;'; put 'put ''ZGlvbi1ib3JkZXItY29sb3IsICNjY2NjY2MpfS5jbHItYWNjb3JkaW9uLW51bWJlcntwYWRkaW5nOjAgLjlyZW07ZGlzcGxheTpub25lfS5jbHItYWNjb3JkaW9uLW51bWJlcjpiZWZvcmV7Y29udGVudDpjb3VudGVyKGFjY29yZGlvbikgIi4iO2NvdW50ZXItaW5jcmVtZW50OmFjY29yZGlv''@;'; put 'put ''bn0uY2xyLWFjY29yZGlvbi1oZWFkZXItYnV0dG9ue2Rpc3BsYXk6ZmxleDtmbGV4LWZsb3c6cm93IHdyYXA7ZmxleDoxIDEgMCU7d2lkdGg6MTAwJTtib3JkZXI6MDtwYWRkaW5nOi45cmVtO2JhY2tncm91bmQ6MCAwO3RleHQtYWxpZ246bGVmdDtjdXJzb3I6cG9pbnRlcjtjb2xvcjojNjY2''@;'; put 'put ''O2NvbG9yOnZhcigtLWNsci1hY2NvcmRpb24tdGV4dC1jb2xvciwgIzY2NjY2Nil9QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jbHItYWNjb3JkaW9uLWhlYWRlci1idXR0b257ZmxleC1mbG93OnJvd319LmNsci1hY2NvcmRpb24tc3RhdHVze3dpZHRoOjEuOHJlbTtkaXNwbGF5OmlubGlu''@;'; put 'put ''ZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmNsci1hY2NvcmRpb24tdGl0bGV7ZGlzcGxheTppbmxpbmUtYmxvY2t9QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpe2Nsci1zdGVwLXRpdGxlLmNsci1hY2NvcmRpb24tdGl0bGV7bWluLXdpZHRoOjguNjRyZW19fS5jbHItYWNjb3JkaW9uLWhl''@;'; put 'put ''YWRlci1oYXMtZGVzY3JpcHRpb24gLmNsci1hY2NvcmRpb24tdGl0bGV7bWF4LXdpZHRoOjEzLjJyZW19LmNsci1hY2NvcmRpb24tZGVzY3JpcHRpb257ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LXdpZHRoOjMyLjVyZW19QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jbHItYWNjb3JkaW9u''@;'; put 'put ''LWRlc2NyaXB0aW9ue21hcmdpbi1sZWZ0OjEuOHJlbX19LmNsci1hY2NvcmRpb24tY29udGVudHtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItYWNjb3JkaW9uLWNvbnRlbnQtYmFja2dyb3VuZC1jb2xvciwgd2hpdGUpO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdp''@;'; put 'put ''ZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLWJvdHRvbTowO292ZXJmbG93OmhpZGRl''@;'; put 'put ''bjtwYWRkaW5nOi45cmVtO2Rpc3BsYXk6bm9uZX0uY2xyLWFjY29yZGlvbi1jb250ZW50IC5jbHItZm9ybSwuY2xyLWFjY29yZGlvbi1jb250ZW50Lm5nLXRyaWdnZXJ7cGFkZGluZzowfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xyLWFjY29yZGlvbi1jb250ZW50e3BhZGRpbmc6Ljly''@;'; put 'put ''ZW0gMi43cmVtfX0uY2xyLWFjY29yZGlvbi1pbm5lci1jb250ZW50e3BhZGRpbmc6LjlyZW19QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jbHItYWNjb3JkaW9uLWlubmVyLWNvbnRlbnR7cGFkZGluZzouOXJlbSAyLjdyZW19fS5jbHItYWNjb3JkaW9uLWFuZ2xle3RyYW5zaXRpb246YWxs''@;'; put 'put ''IC4ycyBlYXNlLWluLW91dDt0cmFuc2Zvcm06cm90YXRlKDkwKX0uY2xyLWFjY29yZGlvbi1lcnJvci1pY29uLC5jbHItYWNjb3JkaW9uLWNvbXBsZXRlLWljb257aGVpZ2h0OjEuMnJlbTt3aWR0aDoxLjJyZW07ZGlzcGxheTpub25lO3BhZGRpbmc6MDttYXJnaW46MCAuNnJlbX0uY2xyLWFj''@;'; put 'put ''Y29yZGlvbi1wYW5lbC1vcGVuIC5jbHItYWNjb3JkaW9uLWNvbnRlbnR7ZGlzcGxheTpibG9ja30uY2xyLWFjY29yZGlvbi1wYW5lbC1vcGVuIC5jbHItYWNjb3JkaW9uLWFuZ2xle3Zpc2liaWxpdHk6dmlzaWJsZTt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9LmNsci1hY2NvcmRpb24tcGFu''@;'; put 'put ''ZWwtb3BlbiAuY2xyLWFjY29yZGlvbi1oZWFkZXJ7YmFja2dyb3VuZDojZDhlM2U5O2JhY2tncm91bmQ6dmFyKC0tY2xyLWFjY29yZGlvbi1hY3RpdmUtYmFja2dyb3VuZC1jb2xvciwgI2Q4ZTNlOSl9LmNsci1hY2NvcmRpb24tcGFuZWwtY29tcGxldGUgLmNsci1hY2NvcmRpb24tY29tcGxl''@;'; put 'put ''dGUtaWNvbntkaXNwbGF5OmlubGluZS1ibG9jaztjb2xvcjojNWFhMjIwO2NvbG9yOnZhcigtLWNsci1hY2NvcmRpb24tY29tcGxldGUtY29sb3IsICM1YWEyMjApfS5jbHItYWNjb3JkaW9uLXBhbmVsLWNvbXBsZXRlIC5jbHItYWNjb3JkaW9uLWFuZ2xle3Zpc2liaWxpdHk6dmlzaWJsZX0u''@;'; put 'put ''Y2xyLWFjY29yZGlvbi1wYW5lbC1jb21wbGV0ZSAuY2xyLWFjY29yZGlvbi1oZWFkZXJ7Ym94LXNoYWRvdzppbnNldCAuM3JlbSAwICM1YWEyMjA7Ym94LXNoYWRvdzp2YXIoLS1jbHItYWNjb3JkaW9uLWhlYWRlci1sZWZ0LWNvbXBsZXRlLWluZGljYXRvciwgaW5zZXQgLjNyZW0gMCAwICM1''@;'; put 'put ''YWEyMjApfS5jbHItYWNjb3JkaW9uLXBhbmVsLWNvbXBsZXRlIC5uZy10cmlnZ2VyLmNsci1hY2NvcmRpb24tY29udGVudHtkaXNwbGF5OmJsb2NrfS5jbHItYWNjb3JkaW9uLXBhbmVsLWVycm9yIC5jbHItYWNjb3JkaW9uLWhlYWRlcntib3JkZXItYm90dG9tOi4wNXJlbSBzb2xpZDtib3Jk''@;'; put 'put ''ZXItY29sb3I6I2MyMWQwMDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1ib3JkZXItbGVmdC1jb2xvci1lcnJvciwgI2MyMWQwMCk7Ym94LXNoYWRvdzppbnNldCAuM3JlbSAwICNjMjFkMDA7Ym94LXNoYWRvdzp2YXIoLS1jbHItYWNjb3JkaW9uLWhlYWRlci1sZWZ0LWVycm9y''@;'; put 'put ''LWluZGljYXRvciwgaW5zZXQgLjNyZW0gMCAwICNjMjFkMDApO2JhY2tncm91bmQtY29sb3I6I2Q4ZTNlOTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1hY2NvcmRpb24tYWN0aXZlLWJhY2tncm91bmQtY29sb3IsICNkOGUzZTkpfS5jbHItYWNjb3JkaW9uLXBhbmVsLWVycm9yIC5jbHIt''@;'; put 'put ''YWNjb3JkaW9uLWVycm9yLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29sb3I6I2MyMWQwMDtjb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLWVycm9yLWNvbG9yLCAjYzIxZDAwKX0uY2xyLWFjY29yZGlvbi1wYW5lbC1lcnJvciAuY2xyLWFjY29yZGlvbi1udW1iZXIsLmNsci1hY2NvcmRp''@;'; put 'put ''b24tcGFuZWwtY29tcGxldGUgLmNsci1hY2NvcmRpb24tbnVtYmVye3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgxcHgsMXB4LDFweCwxcHgpO2NsaXAtcGF0aDppbnNldCg1MCUpO3BhZGRpbmc6MDtib3JkZXI6MDtoZWlnaHQ6MXB4O3dpZHRoOjFweDtvdmVyZmxvdzpoaWRkZW47d2hp''@;'; put 'put ''dGUtc3BhY2U6bm93cmFwO3RvcDowO2xlZnQ6MH0uY2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi1oZWFkZXJ7Ym94LXNoYWRvdzpub25lfS5jbHItYWNjb3JkaW9uOm5vdCguY2xyLXN0ZXBwZXItZm9ybXMpIC5jbHItYWNjb3JkaW9uLXBhbmVs''@;'; put 'put ''OmZpcnN0LWNoaWxkIC5jbHItYWNjb3JkaW9uLWhlYWRlcntib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLXJhZGl1cywgLjE1cmVtKTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czouMTVyZW07Ym9y''@;'; put 'put ''ZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0tY2xyLWFjY29yZGlvbi1ib3JkZXItcmFkaXVzLCAuMTVyZW0pfS5jbHItYWNjb3JkaW9uOm5vdCguY2xyLXN0ZXBwZXItZm9ybXMpIC5jbHItYWNjb3JkaW9uLXBhbmVsOmxhc3QtY2hpbGQgLmNsci1hY2NvcmRpb24tY29udGVudCwuY2xyLWFj''@;'; put 'put ''Y29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi1wYW5lbDpsYXN0LWNoaWxkIC5jbHItYWNjb3JkaW9uLWhlYWRlcntib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNsci1hY2NvcmRpb24t''@;'; put 'put ''Ym9yZGVyLXJhZGl1cywgLjE1cmVtKTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czouMTVyZW07Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tY2xyLWFjY29yZGlvbi1ib3JkZXItcmFkaXVzLCAuMTVyZW0pfS5jbHItYWNjb3JkaW9uOm5vdCguY2xyLXN0ZXBwZXItZm9ybXMp''@;'; put 'put ''IC5jbHItYWNjb3JkaW9uLXRpdGxle2ZvbnQtd2VpZ2h0OjUwMDtmb250LXdlaWdodDp2YXIoLS1jbHItYWNjb3JkaW9uLXRpdGxlLWZvbnQtd2VpZ2h0LCA1MDApO2ZvbnQtc2l6ZTouNjVyZW07Zm9udC1zaXplOnZhcigtLWNsci1hY2NvcmRpb24tdGl0bGUtZm9udC1zaXplLCAuNjVyZW0p''@;'; put 'put ''fS5jbHItYWNjb3JkaW9uOm5vdCguY2xyLXN0ZXBwZXItZm9ybXMpIC5jbHItYWNjb3JkaW9uLWhlYWRlci1idXR0b257Zm9udC1zaXplOi42cmVtO2ZvbnQtc2l6ZTp2YXIoLS1jbHItYWNjb3JkaW9uLWhlYWRlci1idXR0b24tZm9udC1zaXplLCAuNnJlbSk7cGFkZGluZzouM3JlbSAuNnJl''@;'; put 'put ''bX0uY2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi1jb250ZW50e3BhZGRpbmc6MH0uY2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi1pbm5lci1jb250ZW50e3BhZGRpbmc6LjNyZW0gMS43NXJlbX0u''@;'; put 'put ''Y2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi1zdGF0dXN7d2lkdGg6Ljk2cmVtfS5jbHItYWNjb3JkaW9uOm5vdCguY2xyLXN0ZXBwZXItZm9ybXMpIC5jbHItYWNjb3JkaW9uLXN0YXR1cyBjZHMtaWNvbiwuY2xyLWFjY29yZGlvbjpub3QoLmNs''@;'; put 'put ''ci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi1zdGF0dXMgY2xyLWljb257aGVpZ2h0Oi43cmVtO3dpZHRoOi43cmVtfS5jbHItYWNjb3JkaW9uLXBhbmVsLW9wZW4gLmNsci1hY2NvcmRpb24taGVhZGVye2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MCFpbXBvcnRhbnQ7Ym9yZGVy''@;'; put 'put ''LWJvdHRvbS1yaWdodC1yYWRpdXM6MCFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbTowIWltcG9ydGFudH0uY2xyLXN0ZXBwZXItZm9ybXMgLmNsci1hY2NvcmRpb24tcGFuZWwtaW5hY3RpdmUgLmNsci1hY2NvcmRpb24tYW5nbGV7dmlzaWJpbGl0eTpoaWRkZW59LmNsci1zdGVwcGVyLWZvcm1z''@;'; put 'put ''IC5jbHItYWNjb3JkaW9uLXBhbmVsLW9wZW4gLmNsci1hY2NvcmRpb24tYW5nbGV7dmlzaWJpbGl0eTp2aXNpYmxlfS5jbHItc3RlcHBlci1mb3JtcyAuY2xyLWFjY29yZGlvbi1zdGF0dXN7bWluLXdpZHRoOjMuNnJlbX0uY2xyLXN0ZXBwZXItZm9ybXMgLmNsci1hY2NvcmRpb24tbnVtYmVy''@;'; put 'put ''e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jbHItc3RlcC1idXR0b257ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjEuMnJlbX06cm9vdHstLWNsci10aW1lbGluZS1saW5lLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTUwMCk7LS1jbHItdGltZWxpbmUtc3RlcC1oZWFkZXItY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci10aW1lbGluZS1zdGVwLXRpdGxlLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItdGltZWxpbmUtc3RlcC1kZXNjcmlwdGlvbi1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLXRp''@;'; put 'put ''bWVsaW5lLWluY29tcGxldGUtc3RlcC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDApOy0tY2xyLXRpbWVsaW5lLWN1cnJlbnQtc3RlcC1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCk7LS1jbHItdGltZWxpbmUtc3VjY2Vzcy1zdGVwLWNvbG9yOnZhcigtLWNsci1j''@;'; put 'put ''b2xvci1zdWNjZXNzLTQwMCk7LS1jbHItdGltZWxpbmUtZXJyb3Itc3RlcC1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTgwMCk7LS1jbHItdGltZWxpbmUtc3RlcC10aXRsZS1mb250LXdlaWdodDp2YXIoLS1jbHItcDItZm9udC13ZWlnaHQpfS5jbHItdGltZWxpbmV7ZGlzcGxheTpm''@;'; put 'put ''bGV4O3BhZGRpbmc6LjZyZW19LmNsci10aW1lbGluZS1zdGVwe2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47d2lkdGg6MTAwJTttaW4td2lkdGg6OC43NXJlbTttYXJnaW4tbGVmdDouNnJlbX0uY2xyLXRpbWVsaW5lLXN0ZXAgY2RzLWljb24sLmNsci10aW1lbGluZS1zdGVw''@;'; put 'put ''IGNsci1pY29ue2hlaWdodDoxLjhyZW07d2lkdGg6MS44cmVtO21pbi1oZWlnaHQ6MS44cmVtO21pbi13aWR0aDoxLjhyZW19LmNsci10aW1lbGluZS1zdGVwIGNkcy1pY29uW3NoYXBlPWNpcmNsZV0sLmNsci10aW1lbGluZS1zdGVwIGNsci1pY29uW3NoYXBlPWNpcmNsZV17Y29sb3I6Izhj''@;'; put 'put ''OGM4Yztjb2xvcjp2YXIoLS1jbHItdGltZWxpbmUtaW5jb21wbGV0ZS1zdGVwLWNvbG9yLCAjOGM4YzhjKX0uY2xyLXRpbWVsaW5lLXN0ZXAgY2RzLWljb25bc2hhcGU9ZG90LWNpcmNsZV0sLmNsci10aW1lbGluZS1zdGVwIGNsci1pY29uW3NoYXBlPWRvdC1jaXJjbGVde2NvbG9yOiMwMDcy''@;'; put 'put ''YTM7Y29sb3I6dmFyKC0tY2xyLXRpbWVsaW5lLWN1cnJlbnQtc3RlcC1jb2xvciwgIzAwNzJhMyl9LmNsci10aW1lbGluZS1zdGVwIGNkcy1pY29uW3NoYXBlPXN1Y2Nlc3Mtc3RhbmRhcmRdLC5jbHItdGltZWxpbmUtc3RlcCBjbHItaWNvbltzaGFwZT1zdWNjZXNzLXN0YW5kYXJkXXtjb2xv''@;'; put 'put ''cjojNWViNzE1O2NvbG9yOnZhcigtLWNsci10aW1lbGluZS1zdWNjZXNzLXN0ZXAtY29sb3IsICM1ZWI3MTUpfS5jbHItdGltZWxpbmUtc3RlcCBjZHMtaWNvbltzaGFwZT1lcnJvci1zdGFuZGFyZF0sLmNsci10aW1lbGluZS1zdGVwIGNsci1pY29uW3NoYXBlPWVycm9yLXN0YW5kYXJkXXtj''@;'; put 'put ''b2xvcjojYzIxZDAwO2NvbG9yOnZhcigtLWNsci10aW1lbGluZS1lcnJvci1zdGVwLWNvbG9yLCAjYzIxZDAwKX0uY2xyLXRpbWVsaW5lLXN0ZXA6bm90KDpsYXN0LW9mLXR5cGUpIC5jbHItdGltZWxpbmUtc3RlcC1ib2R5OmJlZm9yZXtjb250ZW50OiIiO2JhY2tncm91bmQ6I2IzYjNiMzti''@;'; put 'put ''YWNrZ3JvdW5kOnZhcigtLWNsci10aW1lbGluZS1saW5lLWNvbG9yLCAjYjNiM2IzKTtoZWlnaHQ6LjFyZW07d2lkdGg6Y2FsYygxMDAlIC0gMXJlbSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgxLjdyZW0sLS45NXJlbSl9LmNsci10aW1lbGluZS1zdGVwLWhlYWRlcntjb2xvcjojOGM4YzhjO2Nv''@;'; put 'put ''bG9yOnZhcigtLWNsci10aW1lbGluZS1zdGVwLWhlYWRlci1jb2xvciwgIzhjOGM4Yyk7Zm9udC1zaXplOi42NXJlbTtsaW5lLWhlaWdodDouOXJlbTt3aGl0ZS1zcGFjZTpub3dyYXA7bWFyZ2luLWJvdHRvbTouNHJlbX0uY2xyLXRpbWVsaW5lLXN0ZXAtYm9keXtkaXNwbGF5OmZsZXg7Zmxl''@;'; put 'put ''eC1kaXJlY3Rpb246Y29sdW1ufS5jbHItdGltZWxpbmUtc3RlcC1ib2R5IGNkcy1pY29uLC5jbHItdGltZWxpbmUtc3RlcC1ib2R5IGNsci1pY29ue2hlaWdodDouOHJlbTt3aWR0aDouOHJlbTttaW4td2lkdGg6aW5pdGlhbDttaW4taGVpZ2h0OmluaXRpYWx9LmNsci10aW1lbGluZS1zdGVw''@;'; put 'put ''LWJvZHkgY2RzLWljb25bc2hhcGU9Y2lyY2xlXSwuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjZHMtaWNvbltzaGFwZT1kb3QtY2lyY2xlXSwuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjZHMtaWNvbltzaGFwZT1zdWNjZXNzLXN0YW5kYXJkXSwuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjZHMt''@;'; put 'put ''aWNvbltzaGFwZT1lcnJvci1zdGFuZGFyZF0sLmNsci10aW1lbGluZS1zdGVwLWJvZHkgY2xyLWljb25bc2hhcGU9Y2lyY2xlXSwuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjbHItaWNvbltzaGFwZT1kb3QtY2lyY2xlXSwuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjbHItaWNvbltzaGFwZT1z''@;'; put 'put ''dWNjZXNzLXN0YW5kYXJkXSwuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjbHItaWNvbltzaGFwZT1lcnJvci1zdGFuZGFyZF17Y29sb3I6aW5oZXJpdH0uY2xyLXRpbWVsaW5lLXN0ZXAtdGl0bGV7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItdGltZWxpbmUtc3RlcC10aXRsZS1jb2xvciwg''@;'; put 'put ''IzY2NjY2Nik7Zm9udC1zaXplOi42NXJlbTtmb250LXdlaWdodDo1MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXRpbWVsaW5lLXN0ZXAtdGl0bGUtZm9udC13ZWlnaHQsIDUwMCk7bGluZS1oZWlnaHQ6LjlyZW07bWFyZ2luLXRvcDouNHJlbTttYXJnaW4tYm90dG9tOi4zcmVtfS5jbHItdGlt''@;'; put 'put ''ZWxpbmUtc3RlcC1kZXNjcmlwdGlvbntjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci10aW1lbGluZS1zdGVwLWRlc2NyaXB0aW9uLWNvbG9yLCAjNjY2NjY2KTtmb250LXNpemU6LjU1cmVtO2xpbmUtaGVpZ2h0Oi44cmVtfS5jbHItdGltZWxpbmUtc3RlcC1kZXNjcmlwdGlvbiBidXR0b257''@;'; put 'put ''ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOi40cmVtfS5jbHItdGltZWxpbmUtc3RlcC1kZXNjcmlwdGlvbiBpbWd7d2lkdGg6MTAwJTttYXJnaW4tdG9wOi40cmVtfS5jbHItdGltZWxpbmUuY2xyLXRpbWVsaW5lLXZlcnRpY2Fse2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MTZy''@;'; put 'put ''ZW19LmNsci10aW1lbGluZS5jbHItdGltZWxpbmUtdmVydGljYWwgLmNsci10aW1lbGluZS1zdGVwe2ZsZXgtZGlyZWN0aW9uOnJvdzttYXJnaW4tbGVmdDowO3Bvc2l0aW9uOnJlbGF0aXZlfS5jbHItdGltZWxpbmUuY2xyLXRpbWVsaW5lLXZlcnRpY2FsIC5jbHItdGltZWxpbmUtc3RlcDpu''@;'; put 'put ''b3QoOmxhc3Qtb2YtdHlwZSl7bWFyZ2luLWJvdHRvbToxLjhyZW19LmNsci10aW1lbGluZS5jbHItdGltZWxpbmUtdmVydGljYWwgLmNsci10aW1lbGluZS1zdGVwOm5vdCg6bGFzdC1vZi10eXBlKSAuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keTpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7d2lk''@;'; put 'put ''dGg6LjFyZW07aGVpZ2h0OmNhbGMoMTAwJSArIC4ycmVtKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC0xLjU1cmVtLDEuNHJlbSl9LmNsci10aW1lbGluZS5jbHItdGltZWxpbmUtdmVydGljYWwgLmNsci10aW1lbGluZS1zdGVwLWhlYWRlcnt0ZXh0LWFsaWduOnJpZ2h0O3doaXRlLXNwYWNlOm5v''@;'; put 'put ''cm1hbDt3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7d2lkdGg6M3JlbTttaW4td2lkdGg6M3JlbTttYXJnaW4tcmlnaHQ6LjZyZW07bWFyZ2luLXRvcDouM3JlbTttYXJnaW4tYm90dG9tOjB9LmNsci10aW1lbGluZS5jbHItdGltZWxpbmUtdmVydGljYWwgLmNsci10aW1lbGluZS1zdGVwLXRpdGxl''@;'; put 'put ''e21hcmdpbi10b3A6MH0uY2xyLXRpbWVsaW5lLmNsci10aW1lbGluZS12ZXJ0aWNhbCAuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDo4LjlyZW07bWFyZ2luLWxlZnQ6LjZyZW07bWFyZ2luLXRvcDouM3JlbX1Aa2V5''@;'; put 'put ''ZnJhbWVzIHNwaW57MCV7dHJhbnNmb3JtOnJvdGF0ZSgwKX10b3t0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fWNsci1pY29ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbjowO2hlaWdodDoxNnB4O3dpZHRoOjE2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO2ZpbGw6Y3VycmVudENvbG9y''@;'; put 'put ''fWNsci1pY29uIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6Y3VycmVudENvbG9yfWNsci1pY29uLmlzLWdyZWVuLGNsci1pY29uLmlzLXN1Y2Nlc3N7ZmlsbDojMmU4NTAwfWNsci1pY29uLmlzLWdyZWVuIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZSxjbHItaWNvbi5pcy1zdWNj''@;'; put 'put ''ZXNzIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6IzJlODUwMH1jbHItaWNvbi5pcy1yZWQsY2xyLWljb24uaXMtZGFuZ2VyLGNsci1pY29uLmlzLWVycm9ye2ZpbGw6I2UwMjIwMH1jbHItaWNvbi5pcy1yZWQgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tlLGNsci1pY29uLmlzLWRh''@;'; put 'put ''bmdlciAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2UsY2xyLWljb24uaXMtZXJyb3IgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0cm9rZTojZTAyMjAwfWNsci1pY29uLmlzLXdhcm5pbmd7ZmlsbDojYzI3YjAwfWNsci1pY29uLmlzLXdhcm5pbmcgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tl''@;'; put 'put ''e3N0cm9rZTojYzI3YjAwfWNsci1pY29uLmlzLWJsdWUsY2xyLWljb24uaXMtaW5mb3tmaWxsOiMwMDc3Yjh9Y2xyLWljb24uaXMtYmx1ZSAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2UsY2xyLWljb24uaXMtaW5mbyAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOiMwMDc3Yjh9Y2xy''@;'; put 'put ''LWljb24uaXMtd2hpdGUsY2xyLWljb24uaXMtaW52ZXJzZXtmaWxsOiNmZmZ9Y2xyLWljb24uaXMtd2hpdGUgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tlLGNsci1pY29uLmlzLWludmVyc2UgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0cm9rZTojZmZmfWNsci1pY29uLmlzLWhpZ2hsaWdo''@;'; put 'put ''dHtmaWxsOiMwMDc3Yjh9Y2xyLWljb24uaXMtaGlnaGxpZ2h0IC50cmFuc3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6IzAwNzdiOH1jbHItaWNvbltzaGFwZSQ9IiB1cCJdIHN2ZyxjbHItaWNvbltkaXI9dXBdIHN2Z3t0cmFuc2Zvcm06cm90YXRlKDApfWNsci1pY29uW3NoYXBlJD0iIGRv''@;'; put 'put ''d24iXSBzdmcsY2xyLWljb25bZGlyPWRvd25dIHN2Z3t0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9Y2xyLWljb25bc2hhcGUkPSIgcmlnaHQiXSBzdmcsY2xyLWljb25bZGlyPXJpZ2h0XSBzdmd7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9Y2xyLWljb25bc2hhcGUkPSIgbGVmdCJdIHN2Zyxj''@;'; put 'put ''bHItaWNvbltkaXI9bGVmdF0gc3Zne3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX1jbHItaWNvbltmbGlwPWhvcml6b250YWxdIHN2Z3t0cmFuc2Zvcm06c2NhbGUoLTEpIHJvdGF0ZVgoMTgwZGVnKX1jbHItaWNvbltmbGlwPXZlcnRpY2FsXSBzdmd7dHJhbnNmb3JtOnNjYWxlKC0xKSByb3Rh''@;'; put 'put ''dGVZKDE4MGRlZyl9Y2xyLWljb24gLmNsci1pLWJhZGdle2ZpbGw6I2UwMjIwMH1jbHItaWNvbiAuY2xyLWktYmFkZ2UgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0cm9rZTojZTAyMjAwfWNsci1pY29uPip7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtkaXNwbGF5OmJsb2NrO3BvaW50ZXIt''@;'; put 'put ''ZXZlbnRzOm5vbmV9Y2xyLWljb24+c3Zne3RyYW5zaXRpb246aW5oZXJpdH1jbHItaWNvbj5zdmcgdGl0bGV7ZGlzcGxheTpub25lfWNsci1pY29uIC5jbHItaS1zb2xpZCxjbHItaWNvbiAuY2xyLWktc29saWQtLWJhZGdlZCxjbHItaWNvbiAuY2xyLWktc29saWQtLWFsZXJ0ZWR7ZGlzcGxh''@;'; put 'put ''eTpub25lfWNsci1pY29uIC5jbHItaS1vdXRsaW5lLS1hbGVydGVkOm5vdCguY2xyLWktb3V0bGluZSksY2xyLWljb24gLmNsci1pLW91dGxpbmUtLWJhZGdlZDpub3QoLmNsci1pLW91dGxpbmUpe2Rpc3BsYXk6bm9uZX1jbHItaWNvbltjbGFzcyo9aGFzLWFsZXJ0XSAuY2FuLWFsZXJ0IC5j''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVke2Rpc3BsYXk6YmxvY2t9Y2xyLWljb25bY2xhc3MqPWhhcy1hbGVydF0gLmNhbi1hbGVydCAuY2xyLWktb3V0bGluZTpub3QoLmNsci1pLW91dGxpbmUtLWFsZXJ0ZWQpe2Rpc3BsYXk6bm9uZX1jbHItaWNvbltjbGFzcyo9aGFzLWJhZGdlXSAuY2FuLWJh''@;'; put 'put ''ZGdlIC5jbHItaS1vdXRsaW5lLS1iYWRnZWR7ZGlzcGxheTpibG9ja31jbHItaWNvbltjbGFzcyo9aGFzLWJhZGdlXSAuY2FuLWJhZGdlIC5jbHItaS1vdXRsaW5lOm5vdCguY2xyLWktb3V0bGluZS0tYmFkZ2VkKXtkaXNwbGF5Om5vbmV9Y2xyLWljb24uaXMtc29saWQgLmhhcy1zb2xpZCAu''@;'; put 'put ''Y2xyLWktc29saWR7ZGlzcGxheTpibG9ja31jbHItaWNvbi5pcy1zb2xpZCAuaGFzLXNvbGlkIC5jbHItaS1vdXRsaW5lLGNsci1pY29uLmlzLXNvbGlkIC5oYXMtc29saWQgLmNsci1pLW91dGxpbmUtLWJhZGdlZHtkaXNwbGF5Om5vbmV9Y2xyLWljb24uaXMtc29saWQgLmhhcy1zb2xpZCAu''@;'; put 'put ''Y2xyLWktc29saWQtLWFsZXJ0ZWQ6bm90KC5jbHItaS1zb2xpZCksY2xyLWljb24uaXMtc29saWQgLmhhcy1zb2xpZCAuY2xyLWktc29saWQtLWJhZGdlZDpub3QoLmNsci1pLXNvbGlkKXtkaXNwbGF5Om5vbmV9Y2xyLWljb24uaXMtc29saWRbY2xhc3MqPWhhcy1iYWRnZV0gLmNhbi1iYWRn''@;'; put 'put ''ZS5oYXMtc29saWQgLmNsci1pLXNvbGlkLS1iYWRnZWR7ZGlzcGxheTpibG9ja31jbHItaWNvbi5pcy1zb2xpZFtjbGFzcyo9aGFzLWJhZGdlXSAuY2FuLWJhZGdlLmhhcy1zb2xpZCAuY2xyLWktb3V0bGluZSxjbHItaWNvbi5pcy1zb2xpZFtjbGFzcyo9aGFzLWJhZGdlXSAuY2FuLWJhZGdl''@;'; put 'put ''Lmhhcy1zb2xpZCAuY2xyLWktb3V0bGluZS0tYmFkZ2VkLGNsci1pY29uLmlzLXNvbGlkW2NsYXNzKj1oYXMtYmFkZ2VdIC5jYW4tYmFkZ2UuaGFzLXNvbGlkIC5jbHItaS1zb2xpZDpub3QoLmNsci1pLXNvbGlkLS1iYWRnZWQpe2Rpc3BsYXk6bm9uZX1jbHItaWNvbi5pcy1zb2xpZFtjbGFz''@;'; put 'put ''cyo9aGFzLWFsZXJ0XSAuY2FuLWFsZXJ0Lmhhcy1zb2xpZCAuY2xyLWktc29saWQtLWFsZXJ0ZWR7ZGlzcGxheTpibG9ja31jbHItaWNvbi5pcy1zb2xpZFtjbGFzcyo9aGFzLWFsZXJ0XSAuY2FuLWFsZXJ0Lmhhcy1zb2xpZCAuY2xyLWktb3V0bGluZSxjbHItaWNvbi5pcy1zb2xpZFtjbGFz''@;'; put 'put ''cyo9aGFzLWFsZXJ0XSAuY2FuLWFsZXJ0Lmhhcy1zb2xpZCAuY2xyLWktb3V0bGluZS0tYWxlcnRlZCxjbHItaWNvbi5pcy1zb2xpZFtjbGFzcyo9aGFzLWFsZXJ0XSAuY2FuLWFsZXJ0Lmhhcy1zb2xpZCAuY2xyLWktc29saWQ6bm90KC5jbHItaS1zb2xpZC0tYWxlcnRlZCl7ZGlzcGxheTpu''@;'; put 'put ''b25lfWNsci1pY29uLmhhcy1iYWRnZS0tc3VjY2VzcyAuY2xyLWktYmFkZ2V7ZmlsbDojMmU4NTAwfWNsci1pY29uLmhhcy1iYWRnZS0tc3VjY2VzcyAuY2xyLWktYmFkZ2UgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0cm9rZTojMmU4NTAwfWNsci1pY29uLmhhcy1iYWRnZS0tZXJyb3Ig''@;'; put 'put ''LmNsci1pLWJhZGdle2ZpbGw6I2UwMjIwMH1jbHItaWNvbi5oYXMtYmFkZ2UtLWVycm9yIC5jbHItaS1iYWRnZSAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOiNlMDIyMDB9Y2xyLWljb24uaGFzLWJhZGdlLS1pbmZvIC5jbHItaS1iYWRnZXtmaWxsOiMwMDc3Yjh9Y2xyLWljb24u''@;'; put 'put ''aGFzLWJhZGdlLS1pbmZvIC5jbHItaS1iYWRnZSAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOiMwMDc3Yjh9Y2xyLWljb24uaGFzLWFsZXJ0IC5jbHItaS1hbGVydHtmaWxsOiNjMjdiMDB9Y2xyLWljb24uaGFzLWFsZXJ0IC5jbHItaS1hbGVydCAudHJhbnNwYXJlbnQtZmlsbC1z''@;'; put 'put ''dHJva2V7c3Ryb2tlOiNjMjdiMDB9Y2xyLWljb24gLmlzLW9mZi1zY3JlZW57cG9zaXRpb246Zml4ZWQhaW1wb3J0YW50O2JvcmRlcjowIWltcG9ydGFudDtoZWlnaHQ6MXB4IWltcG9ydGFudDt3aWR0aDoxcHghaW1wb3J0YW50O2xlZnQ6MCFpbXBvcnRhbnQ7dG9wOi0xcHghaW1wb3J0YW50''@;'; put 'put ''O292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDttYXJnaW46MCAwIC0xcHghaW1wb3J0YW50fUBmb250LWZhY2V7Zm9udC1mYW1pbHk6dGV4dC1zZWN1cml0eS1kaXNjO3NyYzp1cmwoaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL25vcHBhL3Rl''@;'; put 'put ''eHQtc2VjdXJpdHkvbWFzdGVyL2Rpc3QvdGV4dC1zZWN1cml0eS1kaXNjLndvZmYpfWJvZHksaHRtbHtmb250LXdlaWdodDo0MDAhaW1wb3J0YW50O3BhZGRpbmc6MDttYXJnaW46MH1ib2R5LnNob3VsZC1sb2dpbiBjbHItbW9kYWwsaHRtbC5zaG91bGQtbG9naW4gY2xyLW1vZGFse2Rpc3Bs''@;'; put 'put ''YXk6bm9uZSFpbXBvcnRhbnR9YnV0dG9uOmZvY3Vze291dGxpbmU6bm9uZX0uc2xpZGVye3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjMyMHB4O21hcmdpbi1sZWZ0Ojc1cHg7bWFyZ2luLXRvcDo3MHB4O2hlaWdodDo1cHg7b3ZlcmZsb3cteDpoaWRkZW59LmxpbmV7cG9zaXRpb246YWJzb2x1''@;'; put 'put ''dGU7b3BhY2l0eTouNDtiYWNrZ3JvdW5kOiM3M0Q1NDQ7d2lkdGg6MTUwJTtoZWlnaHQ6NXB4fS5zdWJsaW5le3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6IzczRDU0NDtoZWlnaHQ6NXB4fS5pbmN7YW5pbWF0aW9uOmluY3JlYXNlIDJzIGluZmluaXRlfS5kZWN7YW5pbWF0aW9uOmRl''@;'; put 'put ''Y3JlYXNlIDJzIC41cyBpbmZpbml0ZX1Aa2V5ZnJhbWVzIGluY3JlYXNlezAle2xlZnQ6LTUlO3dpZHRoOjUlfXRve2xlZnQ6MTMwJTt3aWR0aDoxMDAlfX1Aa2V5ZnJhbWVzIGRlY3JlYXNlezAle2xlZnQ6LTgwJTt3aWR0aDo4MCV9dG97bGVmdDoxMTAlO3dpZHRoOjEwJX19LmFwcC1sb2Fk''@;'; put 'put ''aW5ne2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6MTAwdmg7YmFja2dyb3VuZDojMzE0MzUxO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt6LWluZGV4OjIwMDA7cG9zaXRpb246Zml4ZWQ7bGVmdDowO3RvcDowO3JpZ2h0OjA7Ym90''@;'; put 'put ''dG9tOjB9LnNlbGVjdC1ub25ley13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5oLWF1dG97aGVpZ2h0OmF1dG99LmgtdW5zZXQtaXtoZWlnaHQ6dW5zZXQhaW1wb3J0YW50fS5taW4taC01MHZoe21pbi1oZWlnaHQ6NTB2aH0uaC0yNHZoLC5oLTI1dmh7aGVpZ2h0''@;'; put 'put ''OjI1dmh9LmgtNzB2aHtoZWlnaHQ6NzB2aH0uaC04MHZoe2hlaWdodDo4MHZofS5oLTEwMHtoZWlnaHQ6MTAwJX0udy01MHZ3e3dpZHRoOjUwdnd9LnctMTAwe3dpZHRoOjEwMCV9LnctNDB7d2lkdGg6NDAlfS5taW4tdy0we21pbi13aWR0aDowcHh9Lm14LTV7bWFyZ2luOjAgNXB4fS5teS01''@;'; put 'put ''e21hcmdpbjo1cHggMH0ubXktMTV7bWFyZ2luOjE1cHggMH0ubXktMTAtbXgtYXV0b3ttYXJnaW46MTBweCBhdXRvfS5tLTB7bWFyZ2luOjAhaW1wb3J0YW50fS5tLTEwe21hcmdpbjoxMHB4fS5tdC0we21hcmdpbi10b3A6MH0ubXQtMC1pe21hcmdpbi10b3A6MCFpbXBvcnRhbnR9Lm10LTMt''@;'; put 'put ''bmVnYXRpdmV7bWFyZ2luLXRvcDotM3B4fS5tdC01e21hcmdpbi10b3A6NXB4fS5tdC01LWl7bWFyZ2luLXRvcDo1cHghaW1wb3J0YW50fS5tdC0ye21hcmdpbi10b3A6MnB4fS5tdC0xMHttYXJnaW4tdG9wOjEwcHh9Lm10LTE1e21hcmdpbi10b3A6MTVweH0ubXQtMTd7bWFyZ2luLXRvcDox''@;'; put 'put ''N3B4fS5tdC0yMHttYXJnaW4tdG9wOjIwcHh9Lm1sLTB7bWFyZ2luLWxlZnQ6MH0ubWwtM3ttYXJnaW4tbGVmdDozcHh9Lm1sLTV7bWFyZ2luLWxlZnQ6NXB4fS5tbC0xMHttYXJnaW4tbGVmdDoxMHB4fS5tbC0xNXttYXJnaW4tbGVmdDoxNXB4fS5tbC0yMHttYXJnaW4tbGVmdDoyMHB4fS5t''@;'; put 'put ''bC0yMC1pe21hcmdpbi1sZWZ0OjIwcHghaW1wb3J0YW50fS5tci0we21hcmdpbi1yaWdodDowfS5tci01e21hcmdpbi1yaWdodDo1cHh9Lm1yLTEwe21hcmdpbi1yaWdodDoxMHB4fS5tci0xMnttYXJnaW4tcmlnaHQ6MTJweH0ubXItMjB7bWFyZ2luLXJpZ2h0OjIwcHh9Lm1iLTB7bWFyZ2lu''@;'; put 'put ''LWJvdHRvbTowfS5tYi0waXttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fS5tYi01e21hcmdpbi1ib3R0b206NXB4fS5tYi0xMHttYXJnaW4tYm90dG9tOjEwcHh9Lm1iLTIwe21hcmdpbi1ib3R0b206MjBweH0ubWItMzB7bWFyZ2luLWJvdHRvbTozMHB4fS5wLTB7cGFkZGluZzowfS5wLTEw''@;'; put 'put ''e3BhZGRpbmc6MTBweH0ucGItMHtwYWRkaW5nLWJvdHRvbTowfS5wYi0xMHtwYWRkaW5nLWJvdHRvbToxMHB4fS5weS01e3BhZGRpbmc6NXB4IDB9LnB5LTEwe3BhZGRpbmc6MTBweCAwfS5iYWNrZ3JvdW5kLXRyYW5zcGFyZW50e2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9LmJhY2tncm91bmQt''@;'; put 'put ''dHJhbnNwYXJlbnQtaXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50IWltcG9ydGFudH0uY29sb3ItZ3JheXtjb2xvcjojNWE1YTVhfS5jb2xvci1kYXJrLWdyYXl7Y29sb3I6IzQ5NTk2N30uY29sb3ItZGFya2VyLWdyYXl7Y29sb3I6IzMxNDM1MX0uY29sb3Itd2hpdGV7Y29sb3I6I2ZmZn0uY29s''@;'; put 'put ''b3Itd2hpdGUtaXtjb2xvcjojZmZmIWltcG9ydGFudH0uY29sb3ItZ3JlZW57Y29sb3I6IzRiOWU0Yn0uY29sb3ItZGMtZ3JlZW57Y29sb3I6IzgxYjQ0MH0uY29sb3ItcmVke2NvbG9yOiNlNDU0NTR9LmNvbG9yLWJsdWV7Y29sb3I6IzNmOGNjM30uY29sb3IteWVsbG93e2NvbG9yOiNmMWM0''@;'; put 'put ''MGZ9LmN1cnNvci1wb2ludGVye2N1cnNvcjpwb2ludGVyfS5iYWNrZ3JvdW5kLXRyYW5zcGFyZW50e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LnBvaW50ZXItZXZlbnRzLW5vbmV7cG9pbnRlci1ldmVudHM6bm9uZX0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LmZvbnQt''@;'; put 'put ''c2l6ZS0xNXtmb250LXNpemU6MTVweH0uZm9udC1zaXplLTE4e2ZvbnQtc2l6ZToxOHB4fS5mb250LWJvbGR7Zm9udC13ZWlnaHQ6NzAwfS5mb250LWJvbGQtaXtmb250LXdlaWdodDo3MDAhaW1wb3J0YW50fS5mb250LXdlaWdodC0zMDB7Zm9udC13ZWlnaHQ6MzAwfS5mb250LXdlaWdodC03''@;'; put 'put ''MDB7Zm9udC13ZWlnaHQ6NzAwfS53b3JkLWJyZWFre3dvcmQtYnJlYWs6YnJlYWstd29yZH0ud29yZC1icmVhay1hbGx7d29yZC1icmVhazpicmVhay1hbGx9LnBvc2l0aW9uLXJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlfS5wb3NpdGlvbi1hYnNvbHV0ZXtwb3NpdGlvbjphYnNvbHV0ZX0u''@;'; put 'put ''ZC1ub25le2Rpc3BsYXk6bm9uZX0uZC1ibG9ja3tkaXNwbGF5OmJsb2NrfS5kLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9ja30uZC1mbGV4e2Rpc3BsYXk6ZmxleH0uZC1jb250ZW50c3tkaXNwbGF5OmNvbnRlbnRzfS5mbGV4LXVuc2V0e2ZsZXg6dW5zZXR9LmFsaWduLXNlbGYt''@;'; put 'put ''ZW5ke2FsaWduLXNlbGY6ZmxleC1lbmR9LmFsaWduLXNlbGYtc3RhcnR7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fS5hbGlnbi1pdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5qdXN0aWZ5LWNvbnRlbnQtY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lmp1c3RpZnktY29udGVu''@;'; put 'put ''dC1jZW50ZXItaXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5qdXN0aWZ5LWNvbnRlbnQtZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uanVzdGlmeS1jb250ZW50LWJldHdlZW57''@;'; put 'put ''anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Lmp1c3RpZnktY29udGVudC1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZH0uZmxleC1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5jbHItZ2FwLTV7Z2FwOjVweH0uY2xyLWdhcC0we2dhcDowfS5vdmVyZmxvdy1h''@;'; put 'put ''dXRve292ZXJmbG93OmF1dG99LnotaW5kZXgtaGlnaGVzdHt6LWluZGV4OjEwMDAwMDAwfS52ZXJ0aWNhbC1hbGlnbi1taWRkbGV7dmVydGljYWwtYWxpZ246bWlkZGxlfS5pY29uLWRjLWZpbGx7ZmlsbDojODFiNDQwfS5kYXRhZ3JpZC1jdXN0b20tZm9vdGVyIC5kYXRhZ3JpZC1vdXRlci13''@;'; put 'put ''cmFwcGVye3dpZHRoOjEwMCV9LnByb2dyZXNTdGF0aWN7bWFyZ2luLXRvcDotNnB4IWltcG9ydGFudDtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7ei1pbmRleDoxMDAwMCFpbXBvcnRhbnR9LnByb2dyZXNzLC5wcm9ncmVzcy1zdGF0aWN7YmFja2dyb3VuZC1jb2xvcjojZjVmNmZlO2Jv''@;'; put 'put ''cmRlci1yYWRpdXM6MDtmb250LXNpemU6aW5oZXJpdDtoZWlnaHQ6NnB4O21hcmdpbjowO21heC1oZWlnaHQ6LjU4MzMzM3JlbTttaW4taGVpZ2h0Oi4xNjY2NjdyZW07b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6YmxvY2s7d2lkdGg6Y2FsYygxMDAlIC0gNjNweCl9LnByb2dyZXNzLmxvb3A6''@;'; put 'put ''YWZ0ZXJ7YW5pbWF0aW9uOmNsci1wcm9ncmVzcy1sb29wZXIgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtjb250ZW50OiIgIjt0b3A6LjE2NjY2N3JlbTtib3R0b206MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kLWNvbG9yOiM2MGI1MTU7d2lk''@;'; put 'put ''dGg6NzUlfS5iYWRnZS13YXJuaW5ne2NvbG9yOiNmZmYhaW1wb3J0YW50fS5jb250ZW50LWNvbnRhaW5lciAuY29udGVudC1hcmVhIC5jYXJkLWhlYWRlciBoM3ttYXJnaW4tdG9wOjEwcHh9Lm1vZGFsLWhlYWRlciAuY2xvc2UgY2xyLWljb257ZGlzcGxheTpub25lfS5zaG93LWNsb3NlIC5t''@;'; put 'put ''b2RhbC1oZWFkZXIgLmNsb3NlIGNsci1pY29ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMThweDtyaWdodDotMTBweH0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlcntiYWNrZ3JvdW5kOiNEOTRCMkU7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZX0uY2Fy''@;'; put 'put ''ZC1oZWFkZXJ7Zm9udC13ZWlnaHQ6MzAwfS5zZWxlY3Qgc2VsZWN0OmZvY3Vze2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM0OTU5Njc7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLHRyYW5zcGFyZW50IDk1JSwjNDk1YTY3IDApIG5vLXJlcGVhdH0uY2xyLXRyZWVub2RlLWNo''@;'; put 'put ''aWxkcmVue21hcmdpbi1sZWZ0Oi4ycmVtIWltcG9ydGFudH0udGFibGUtYWN0aXZle2JhY2tncm91bmQ6I2Q4ZTNlOSFpbXBvcnRhbnQ7Y29sb3I6IzAwMCFpbXBvcnRhbnR9LnRhYmxlLWFjdGl2ZTpmb2N1c3tiYWNrZ3JvdW5kOiNkOGUzZTl9Y2xyLXNlbGVjdC1jb250YWluZXIgLmNsci1j''@;'; put 'put ''b250cm9sLWNvbnRhaW5lcixjbHItc2VsZWN0LWNvbnRhaW5lciAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItc2VsZWN0LXdyYXBwZXIsY2xyLXNlbGVjdC1jb250YWluZXIgc2VsZWN0e3dpZHRoOjEwMCV9dGJvZHl7Zm9udC13ZWlnaHQ6NDAwfWgzLGg0e2NvbG9yOiM1ODU4NTg7Zm9u''@;'; put 'put ''dC13ZWlnaHQ6NDAwO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxcmVtO21hcmdpbi10b3A6MXJlbTttYXJnaW4tYm90dG9tOjB9aDEsaDJ7Y29sb3I6IzU4NTg1ODtmb250LXdlaWdodDo0MDA7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OjJyZW07bWFyZ2lu''@;'; put 'put ''LXRvcDoxcmVtO21hcmdpbi1ib3R0b206MH1jbHItaWNvbi5pcy1pbmZve2ZpbGw6IzgwYjQ0MX0uZGF0YWdyaWQtaG9zdCwuZGF0YWdyaWQtb3ZlcmxheS13cmFwcGVye2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWJveCFpbXBvcnRhbnR9LmJ0bi5idG4tZGFuZ2VyLC5i''@;'; put 'put ''dG4uYnRuLXdhcm5pbmd7Ym9yZGVyLWNvbG9yOiNlZjRmMmU7YmFja2dyb3VuZC1jb2xvcjojZDk0YjJlO2NvbG9yOiNmZmZ9LmQtbm9uZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5kLWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5jbHItZmxleC0xe2ZsZXg6MX0uY2xyLWZsZXgt''@;'; put 'put ''Y29sdW1ue2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY2xyLWZsZXgtcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30uYm9yZGVyLTB7Ym9yZGVyOjB9LmJveC1zaGFkb3ctbm9uZXtib3gtc2hhZG93Om5vbmV9LmJveC1zaGFkb3ctbm9uZS1pe2JveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnR9LmhhbmRz''@;'; put 'put ''b250YWJsZSAuaHRBdXRvY29tcGxldGVBcnJvd3tjb2xvcjojODI4MjgyfS5oYW5kc29udGFibGUubGlzdGJveHtwYWRkaW5nOjVweCAwIDVweCA1cHg7Ym94LXNoYWRvdzowIDRweCAyMHB4ICMwMDAwMDA3MH0uaGFuZHNvbnRhYmxlIHRkLmh0SW52YWxpZHtiYWNrZ3JvdW5kOnJnYmEoMjMw''@;'; put 'put ''LDM5LDAsLjY3ODQzMTM3MjUpIWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkIHJlZCFpbXBvcnRhbnQ7Y29sb3I6I2ZmZiFpbXBvcnRhbnR9Lm1hcmdpbi10b3AtMjB7bWFyZ2luLXRvcDoyMHB4fS5oaWRkZW57ZGlzcGxheTpub25lIWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDogNTc2''@;'; put 'put ''cHgpey5kLXNtLW5vbmV7ZGlzcGxheTpub25lIWltcG9ydGFudH0uZC1zbS1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fS5kLXNtLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9LmQtc20tYmxvY2t7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LmQt''@;'; put 'put ''c20tdGFibGV7ZGlzcGxheTp0YWJsZSFpbXBvcnRhbnR9LmQtc20tdGFibGUtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGwhaW1wb3J0YW50fS5kLXNtLWZsZXh7ZGlzcGxheTpmbGV4IWltcG9ydGFudH0uZC1zbS1pbmxpbmUtZmxleHtkaXNwbGF5OmlubGluZS1mbGV4IWltcG9ydGFudH0uY2xy''@;'; put 'put ''LWZsZXgtc20tY29sdW1ue2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY2xyLWZsZXgtc20tcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30uY2xyLWdhcC1zbS01e2dhcDo1cHh9LmNsci1nYXAtc20tMHtnYXA6MH19QG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KXsuZC1tZC1ub25le2Rpc3BsYXk6bm9u''@;'; put 'put ''ZSFpbXBvcnRhbnR9LmQtbWQtaW5saW5le2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH0uZC1tZC1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fS5kLW1kLWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5kLW1kLXRhYmxle2Rpc3BsYXk6dGFibGUhaW1w''@;'; put 'put ''b3J0YW50fS5kLW1kLXRhYmxlLWNlbGx7ZGlzcGxheTp0YWJsZS1jZWxsIWltcG9ydGFudH0uZC1tZC1mbGV4e2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnR9LmQtbWQtaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleCFpbXBvcnRhbnR9LmNsci1mbGV4LW1kLWNvbHVtbntmbGV4LWRpcmVj''@;'; put 'put ''dGlvbjpjb2x1bW59LmNsci1mbGV4LW1kLXJvd3tmbGV4LWRpcmVjdGlvbjpyb3d9LmNsci1nYXAtbWQtNXtnYXA6NXB4fS5jbHItZ2FwLW1kLTB7Z2FwOjB9fUBtZWRpYSAobWluLXdpZHRoOiA5OTJweCl7LmQtbGctbm9uZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5kLWxnLWlubGluZXtk''@;'; put 'put ''aXNwbGF5OmlubGluZSFpbXBvcnRhbnR9LmQtbGctaW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH0uZC1sZy1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0uZC1sZy10YWJsZXtkaXNwbGF5OnRhYmxlIWltcG9ydGFudH0uZC1sZy10YWJsZS1jZWxse2Rp''@;'; put 'put ''c3BsYXk6dGFibGUtY2VsbCFpbXBvcnRhbnR9LmQtbGctZmxleHtkaXNwbGF5OmZsZXghaW1wb3J0YW50fS5kLWxnLWlubGluZS1mbGV4e2Rpc3BsYXk6aW5saW5lLWZsZXghaW1wb3J0YW50fS5jbHItZmxleC1sZy1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5jbHItZmxleC1sZy1y''@;'; put 'put ''b3d7ZmxleC1kaXJlY3Rpb246cm93fS5jbHItZ2FwLWxnLTV7Z2FwOjVweH0uY2xyLWdhcC1sZy0we2dhcDowfX0uZGF0YWdyaWQtYm9keXtwYWRkaW5nLWJvdHRvbToycmVtIWltcG9ydGFudH0uYWJvcnRNc2d7d2hpdGUtc3BhY2U6cHJlLXdyYXA7Zm9udC1mYW1pbHk6bW9ub3NwYWNlfSNn''@;'; put 'put ''cmFwaCBzdmd7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0ubm8tdGFibGUtc2VsZWN0ZWR7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOndoaXRlO3ot''@;'; put 'put ''aW5kZXg6MTA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt0b3A6MH0uY29weVJpZ2h0e2JhY2tncm91bmQ6IzQ5NTk2NyFpbXBvcnRhbnQ7Y29sb3I6I2ZmZjtkaXNwbGF5OmZsZXghaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6NXB4''@;'; put 'put ''IDAgNHB4O3otaW5kZXg6MTAwfS5uYXYtdHJlZT5jbHItdHJlZS1ub2RlLmNsci1leHBhbmRlZHtkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9Y2xyLXRyZWUtbm9kZXtvdmVyZmxvdy15OnZpc2libGV9Y2xyLXRyZWUtbm9kZTpmb2N1c3tvdXRsaW5lOm5vbmUhaW1wb3J0YW50fWNs''@;'; put 'put ''ci10cmVlLW5vZGUgLmNsci10cmVlbm9kZS1jYXJldHt3aWR0aDphdXRvIWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnR9Y2xyLXRyZWUtbm9kZSAuY2xyLXRyZWVub2RlLXNwaW5uZXItY29udGFpbmVye3BhZGRpbmc6MCA4cHg7d2lkdGg6YXV0bztoZWlnaHQ6YXV0bztkaXNwbGF5''@;'; put 'put ''OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfWNsci10cmVlLW5vZGUgLmNsci10cmVlLW5vZGUtY29udGVudC1jb250YWluZXI6Zm9jdXN7b3V0bGluZTpub25lIWltcG9ydGFudH0uY2xyLXRyZWVub2RlLWNvbnRlbnQgcHt3aGl0ZS1zcGFjZTpub3dyYXB9LnNlYXJjaC1ub2Rle21hcmdpbi1i''@;'; put 'put ''b3R0b206NXB4fS50cmVlLXNlYXJjaC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LnRyZWUtc2VhcmNoLXdyYXBwZXIgY2xyLWlucHV0LWNvbnRhaW5lcnttYXJnaW46MH0udHJlZS1zZWFyY2gtd3JhcHBlciBjbHItaWNvbntwb3Np''@;'; put 'put ''dGlvbjphYnNvbHV0ZTtyaWdodDowO2JvdHRvbTowO21hcmdpbjo1cHggMCAwO2JhY2tncm91bmQ6d2hpdGU7Y3Vyc29yOnBvaW50ZXJ9LmNsci10cmVlLW5vZGV7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnR9LmNvbnRlbnQtY29udGFpbmVye3dpZHRoOjEwMCV9QC1tb3otZG9jdW1lbnQg''@;'; put 'put ''dXJsLXByZWZpeCgpey53dEhvbGRlcnt3aWR0aDoxMDAlIWltcG9ydGFudH19aW5wdXQ6Oi1tcy1jbGVhcntkaXNwbGF5Om5vbmV9QG1lZGlhIGFsbCBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKSwoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSl7Y2xyLXRyZWUtbm9kZS5jbHItZXhw''@;'; put 'put ''YW5kZWR7cGFkZGluZy1ib3R0b206MjBweDttaW4taGVpZ2h0OmF1dG99LmNsci10cmVlLW5vZGV7bWluLWhlaWdodDoyNHB4fS5jbHItdHJlZW5vZGUtY2hpbGRyZW57b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudH0uY2xyLXRyZWVub2RlLWNvbnRlbnQgLmNsci1pY29uLC5jbHItdHJlZW5v''@;'; put 'put ''ZGUtY29udGVudCBjbHItaWNvbnttaW4td2lkdGg6MTZweDttaW4taGVpZ2h0OjE2cHh9LnRyZWUtc2VhcmNoLXdyYXBwZXIgY2xyLWljb257Ym90dG9tOjJweH0uY29udGVudC1jb250YWluZXJ7aGVpZ2h0OjEwMCV9LmNvbnRlbnQtYXJlYT4uY2FyZHttYXJnaW4tYm90dG9tOjIwcHh9LnJl''@;'; put 'put ''Y29yZC1lZGl0LW1vZGFsIHRleHRhcmVhe21pbi1oZWlnaHQ6NDJweH19LmJvcmRlci1ib3R0b20tZGl2aWRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZDNkM2QzfS5sb2FkaW5nU3Bpbm5lcntoZWlnaHQ6NzB2aDtmbGV4OjE7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50''@;'; put 'put ''ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcn0uZGlzYWJsZS1wYXNzd29yZC1tYW5hZ2Vyey13ZWJraXQtdGV4dC1zZWN1cml0eTpkaXNjOy1tb3otdGV4dC1zZWN1cml0eTpkaXNjO3RleHQtc2VjdXJpdHk6ZGlzYztmb250LWZhbWlseTp0ZXh0LXNlY3VyaXR5''@;'; put 'put ''LWRpc2N9LnJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlfWhyLmxpZ2h0e2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZWRlZGV9LnNwaW5uZXJ7YmFja2dyb3VuZDp1cmwoL1NBU1N0b3JlZFByb2Nlc3MvP19QUk9HUkFNPXBaS2Q2Rjk1akVDdlJRbE4wTENmZEE9PS93ZWI5''@;'; put 'put ''L2ltYWdlcy9zcGlubmVyLjE2Zjc2M2NlYmM2YjY0ZGYtc3ZnKSFpbXBvcnRhbnR9LmNsci1zZWxlY3Qtd3JhcHBlcjphZnRlcntiYWNrZ3JvdW5kOnVybCgvU0FTU3RvcmVkUHJvY2Vzcy8/X1BST0dSQU09cFpLZDZGOTVqRUN2UlFsTjBMQ2ZkQT09L3dlYjkvaW1hZ2VzL2NhcmV0LjY1ZjFm''@;'; put 'put ''YzBhY2JlNGM3ZmYtc3ZnKSFpbXBvcnRhbnR9Cg=='';'; put 'run;'; put '%sasjsout(CSS64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/web9/images; %let service=caret-svg; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMiAxMiI+CiAgICA8ZGVmcz4KICAgICAgICA8c3R5bGU+LmNscy0xe2ZpbGw6I2IzYjNiMzt9PC9zdHlsZT4KICAgIDwvZGVmcz4KICAgIDx0aXRsZT5DYXJldDwvdGl0bGU+CiAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xzLTEiIGQ9Ik02LDlMMS4yLDQuMmEwLjY4LDAuNjgsMCwwLDEsMS0xTDYsNy4wOCw5Ljg0LDMuMjRhMC42OCwwLjY4LDAsMSwxLDEsMVoiLz4KPC9zdmc+Cg=='';'; put 'run;'; put '%sasjsout(SVG64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=caret.65f1fc0acbe4c7ff-svg; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMiAxMiI+CiAgICA8ZGVmcz4KICAgICAgICA8c3R5bGU+LmNscy0xe2ZpbGw6I2IzYjNiMzt9PC9zdHlsZT4KICAgIDwvZGVmcz4KICAgIDx0aXRsZT5DYXJldDwvdGl0bGU+CiAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xzLTEiIGQ9Ik02LDlMMS4yLDQuMmEwLjY4LDAuNjgsMCwwLDEsMS0xTDYsNy4wOCw5Ljg0LDMuMjRhMC42OCwwLjY4LDAsMSwxLDEsMVoiLz4KPC9zdmc+Cg=='';'; put 'run;'; put '%sasjsout(SVG64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=datacontroller-svg; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''PHN2ZyB3aWR0aD0iMTY5MCIgaGVpZ2h0PSIyNDAiIHZpZXdCb3g9IjAgMCAxNjkwIDI0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEwNV83KSI+CjxwYXRoIGQ9Ik0xMjQuOSA1NS4yMDAxQzEyOC4y''@;'; put 'put ''IDU1LjYwMDEgMTMxLjQgNTUuOTAwMSAxMzQuNyA1Ni4zMDAxQzE0Mi42IDU3LjQwMDEgMTUwLjMgNTguOTAwMSAxNTcuNSA2Mi42MDAxQzE1OS42IDYzLjcwMDEgMTYxLjYgNjQuOTAwMSAxNjMuMSA2Ni44MDAxQzE2NS41IDY5LjYwMDEgMTY1LjQgNzIuNjAwMSAxNjMgNzUuNDAwMUMxNjAu''@;'; put 'put ''NSA3OC4yMDAxIDE1Ny4zIDc5LjgwMDEgMTUzLjkgODEuMTAwMUMxNDYgODQuMjAwMSAxMzcuNyA4NS42MDAxIDEyOS4zIDg2LjMwMDFDMTE1LjYgODcuNDAwMSAxMDIuMSA4Ni45MDAxIDg4LjcgODMuNzAwMUM4NC4zIDgyLjcwMDEgODAgODEuMzAwMSA3Ni4xIDc5LjEwMDFDNzQuNiA3OC4z''@;'; put 'put ''MDAxIDczLjIgNzcuMzAwMSA3MS45IDc2LjEwMDFDNjguMyA3Mi42MDAxIDY4LjMgNjguOTAwMSA3MiA2NS42MDAxQzc2IDYyLjAwMDEgODAuOSA2MC4zMDAxIDg1LjkgNTguOTAwMUM5Mi45IDU2LjkwMDEgMTAwIDU1LjkwMDEgMTA3LjIgNTUuNDAwMUMxMDcuOCA1NS40MDAxIDEwOC41IDU1''@;'; put 'put ''LjYwMDEgMTA5IDU1LjEwMDFDMTE0LjIgNTUuMjAwMSAxMTkuNiA1NS4yMDAxIDEyNC45IDU1LjIwMDFaIiBmaWxsPSIjRTBFMEUwIi8+CjxwYXRoIGQ9Ik02OS4yMDAxIDEzNy4zQzc1LjYwMDEgMTQ1LjUgODQuNzAwMSAxNDguNSA5NC4xMDAxIDE1MC41QzExMi43IDE1NC41IDEzMS4zIDE1''@;'; put 'put ''NCAxNDkuNCAxNDcuNkMxNTUgMTQ1LjYgMTYwLjIgMTQyLjkgMTYzLjkgMTM3LjlDMTY0LjUgMTM3LjEgMTY0LjggMTM3LjUgMTY1LjEgMTM4LjFDMTY1LjcgMTM5LjQgMTY2IDE0MC43IDE2NiAxNDIuMUMxNjYgMTQ3IDE2NiAxNTIgMTY2IDE1Ni45QzE2NiAxNjAuMSAxNjQuNSAxNjIuNiAx''@;'; put 'put ''NjIuMyAxNjQuOEMxNTcuNyAxNjkuNCAxNTEuOSAxNzEuOSAxNDUuOCAxNzMuOEMxMzMuNSAxNzcuNiAxMjAuOSAxNzguNCAxMDguMiAxNzcuNUM5OC43MDAxIDE3Ni44IDg5LjUgMTc1IDgwLjggMTcxLjFDNzcuMSAxNjkuNCA3My43MDAxIDE2Ny40IDcxLjAwMDEgMTY0LjNDNjguOTAwMSAx''@;'; put 'put ''NjEuOSA2Ny44IDE1OS4yIDY3LjggMTU2QzY3LjkgMTUxLjUgNjcuOCAxNDcgNjcuOCAxNDIuNUM2Ny44IDE0MC43IDY4LjEwMDEgMTM5IDY5LjIwMDEgMTM3LjNaIiBmaWxsPSIjOEVDNjNGIi8+CjxwYXRoIGQ9Ik02OS4yOTk5IDEwNi40Qzc0LjU5OTkgMTEzLjUgODEuOTk5OSAxMTYuNSA4''@;'; put 'put ''OS44OTk5IDExOC42QzEwOC44IDEyMy42IDEyNy43IDEyMy41IDE0Ni40IDExNy45QzE1Mi42IDExNi4xIDE1OC40IDExMy40IDE2Mi45IDEwOC41QzE2My41IDEwNy45IDE2My45IDEwNi41IDE2NC42IDEwNi43QzE2NS42IDEwNyAxNjUuNiAxMDguNCAxNjUuOSAxMDkuNUMxNjYuMyAxMTEu''@;'; put 'put ''MiAxNjYuMSAxMTIuOSAxNjYuMSAxMTQuNkMxNjYuMSAxMTggMTY2IDEyMS4zIDE2Ni4xIDEyNC43QzE2Ni4zIDEyOC45IDE2NC42IDEzMi4yIDE2MS41IDEzNC45QzE1Ni44IDEzOS4xIDE1MS4xIDE0MS42IDE0NSAxNDMuMkMxMjQuNSAxNDguNyAxMDQuMSAxNDguNiA4My45OTk5IDE0MS42''@;'; put 'put ''Qzc5LjA5OTkgMTM5LjkgNzQuNTk5OSAxMzcuNSA3MC45OTk5IDEzMy42QzY4Ljc5OTkgMTMxLjIgNjcuNyAxMjguNCA2Ny43IDEyNS4xQzY3LjggMTIwLjcgNjcuNyAxMTYuMiA2Ny43IDExMS44QzY3LjggMTEwIDY4LjA5OTkgMTA4LjIgNjkuMjk5OSAxMDYuNFoiIGZpbGw9IiNFMEUwRTAi''@;'; put 'put ''Lz4KPHBhdGggZD0iTTY5LjEgNzYuN0M3MC42IDgxLjEgNzQuMiA4My4wOTk5IDc4IDg0Ljg5OTlDODQuOCA4OC4wOTk5IDkyLjEgODkuNiA5OS40IDkwLjVDMTEzLjkgOTIuMyAxMjguNCA5Mi4xIDE0Mi43IDg5LjFDMTQ4LjUgODcuOSAxNTQuMSA4Ni4zIDE1OS4yIDgzLjFDMTYyLjEgODEu''@;'; put 'put ''MyAxNjMuNiA3OS42IDE2NC42IDc2LjhDMTY1LjYgNzguMiAxNjUuOSA3OS43IDE2NS45IDgxLjJDMTY1LjkgODYuMiAxNjYgOTEuMSAxNjUuOSA5Ni4xQzE2NS44IDEwMC4zIDE2My40IDEwMy4zIDE2MC4zIDEwNS44QzE1NC41IDExMC40IDE0Ny43IDExMi44IDE0MC42IDExNC40QzEyMS44''@;'; put 'put ''IDExOC41IDEwMy4yIDExOC4yIDg0LjkgMTEyQzgwLjEgMTEwLjQgNzUuNSAxMDguMSA3MS44IDEwNC41QzY5IDEwMS44IDY3LjUgOTguNyA2Ny42IDk0LjdDNjcuNyA5MC40IDY3LjYgODYuMSA2Ny42IDgxLjhDNjcuOCA3OS45IDY4LjEgNzguMyA2OS4xIDc2LjdaIiBmaWxsPSIjOEVDNjNG''@;'; put 'put ''Ii8+CjxwYXRoIGQ9Ik0xODMuOSAyMTAuOUMyMDAuMiAyMTEuOCAyMDguOSAxOTEuOCAxOTcuMSAxODAuNUMxODQuNyAxNjguNiAxNjQuMyAxNzkuNyAxNjcuNSAxOTYuNUM5My44IDI0My41IC0wLjk5OTk4MSAxNzMuMiAyNiA4Ny44MDAxTDcuODAwMDIgNzUuNjAwMUMtMzMuMSAxODQuMyA5''@;'; put 'put ''Mi44IDI3Ni4yIDE4My45IDIxMC45Wk0xNzguNyAxODcuNEMxODYuMyAxNzkuNSAxOTguNCAxOTAuNSAxOTEuMyAxOTguOEMxODMuOCAyMDcuNSAxNzAuNiAxOTUuOCAxNzguNyAxODcuNFoiIGZpbGw9IiNFMEUwRTAiLz4KPHBhdGggZD0iTTM1LjIgNTAuNzAwMUM0Ni45IDYxLjkwMDEgNjYu''@;'; put 'put ''MiA1Mi43MDAxIDY1LjEgMzYuNzAwMUMxMzguNyAtMTAuNyAyMzQgNTkuNTAwMSAyMDcgMTQ1LjJMMjI1LjIgMTU3LjRDMjY0LjkgNTEuODAwMSAxNDQuNCAtNDMuMjk5OSA1MS4yIDIwLjYwMDFDMzMuNyAxNy4wMDAxIDIyLjQgMzguNDAwMSAzNS4yIDUwLjcwMDFaTTUzLjYgNDMuODAwMUM0''@;'; put 'put ''NS44IDUxLjkwMDEgMzMuNSA0MC4xMDAxIDQxLjMgMzIuMDAwMUM0OS4xIDIzLjkwMDEgNjEuNCAzNS43MDAxIDUzLjYgNDMuODAwMVoiIGZpbGw9IiM4RUM2M0YiLz4KPHBhdGggZD0iTTMyMy41NzUgNDcuODg3NEMzMjMuNTc1IDQ2Ljc5MDEgMzIzLjkxNyA0NS44OTg1IDMyNC42MDMgNDUu''@;'; put 'put ''MjEyN0MzMjUuNDI2IDQ0LjM4OTcgMzI2LjM4NiA0My45NzgyIDMyNy40ODQgNDMuOTc4MkgzNjkuMDQ0QzM3OC45MiA0My45NzgyIDM4OC4wNDEgNDUuNzYxMyAzOTYuNDA4IDQ5LjMyNzZDNDA0LjkxMyA1Mi44OTM4IDQxMi4yNTEgNTcuOTAwMyA0MTguNDIzIDY0LjM0N0M0MjQuNTk2IDcw''@;'; put 'put ''LjY1NjUgNDI5LjQ2NSA3OC4yMDA1IDQzMy4wMzEgODYuOTc5QzQzNi41OTcgOTUuNzU3NSA0MzguMzggMTA1LjQyOCA0MzguMzggMTE1Ljk4OUM0MzguMzggMTI2LjU1MSA0MzYuNTk3IDEzNi4yMjEgNDMzLjAzMSAxNDQuOTk5QzQyOS40NjUgMTUzLjc3OCA0MjQuNTk2IDE2MS4zOSA0MTgu''@;'; put 'put ''NDIzIDE2Ny44MzdDNDEyLjI1MSAxNzQuMTQ2IDQwNC45MTMgMTc5LjA4NCAzOTYuNDA4IDE4Mi42NTFDMzg4LjA0MSAxODYuMjE3IDM3OC45MiAxODggMzY5LjA0NCAxODhIMzI3LjQ4NEMzMjYuMzg2IDE4OCAzMjUuNDI2IDE4Ny42NTcgMzI0LjYwMyAxODYuOTcxQzMyMy45MTcgMTg2LjE0''@;'; put 'put ''OCAzMjMuNTc1IDE4NS4xODggMzIzLjU3NSAxODQuMDkxVjQ3Ljg4NzRaTTM0OS4yOTMgNjkuMjg0OVYxNjIuNjkzSDM2OS42NjJDMzc1LjgzNCAxNjIuNjkzIDM4MS40NTggMTYxLjUyNyAzODYuNTMzIDE1OS4xOTZDMzkxLjYwOCAxNTYuODY0IDM5NS45MjggMTUzLjY0MSAzOTkuNDk1IDE0''@;'; put 'put ''OS41MjZDNDAzLjE5OCAxNDUuNDExIDQwNi4wMSAxNDAuNTQxIDQwNy45MyAxMzQuOTE4QzQwOS45ODggMTI5LjE1NyA0MTEuMDE2IDEyMi44NDcgNDExLjAxNiAxMTUuOTg5QzQxMS4wMTYgMTA5LjI2OCA0MDkuOTg4IDEwMy4wMjcgNDA3LjkzIDk3LjI2NjNDNDA2LjAxIDkxLjUwNTQgNDAz''@;'; put 'put ''LjE5OCA4Ni41Njc1IDM5OS40OTUgODIuNDUyNkMzOTUuOTI4IDc4LjMzNzcgMzkxLjYwOCA3NS4xMTQzIDM4Ni41MzMgNzIuNzgyNkMzODEuNDU4IDcwLjQ1MDggMzc1LjgzNCA2OS4yODQ5IDM2OS42NjIgNjkuMjg0OUgzNDkuMjkzWk01MzEuMDkzIDE3Ny45MThDNTI3LjM4OSAxODAuNjYy''@;'; put 'put ''IDUyMy4xMzcgMTgzLjEzMSA1MTguMzM3IDE4NS4zMjVDNTEzLjUzNiAxODcuMzgzIDUwOC43MzUgMTg4LjQxMSA1MDMuOTM1IDE4OC40MTFDNDk2LjgwMiAxODguNDExIDQ5MC4yMTggMTg3LjEwOCA0ODQuMTgzIDE4NC41MDJDNDc4LjE0OCAxODEuODk2IDQ3Mi45MzYgMTc4LjI2MSA0Njgu''@;'; put 'put ''NTQ2IDE3My41OThDNDY0LjI5NCAxNjguOTM0IDQ2MC45MzQgMTYzLjQ0OCA0NTguNDY1IDE1Ny4xMzhDNDU1Ljk5NiAxNTAuODI5IDQ1NC43NjEgMTQzLjk3IDQ1NC43NjEgMTM2LjU2NEM0NTQuNzYxIDEyOS40MzEgNDU2LjA2NCAxMjIuNzc5IDQ1OC42NzEgMTE2LjYwNkM0NjEuMjc3IDEx''@;'; put 'put ''MC4yOTcgNDY0Ljg0MyAxMDQuODEgNDY5LjM2OSAxMDAuMTQ3QzQ3My44OTYgOTUuMzQ2IDQ3OS4xMDggOTEuNTc0IDQ4NS4wMDYgODguODMwN0M0OTEuMDQxIDg2LjA4NzQgNDk3LjQ4OCA4NC43MTU4IDUwNC4zNDYgODQuNzE1OEM1MDkuMTQ3IDg0LjcxNTggNTEzLjg3OSA4NS44MTMxIDUx''@;'; put 'put ''OC41NDIgODguMDA3N0M1MjMuMjA2IDkwLjA2NTIgNTI3LjM4OSA5Mi40NjU1IDUzMS4wOTMgOTUuMjA4OFY4OS4wMzY1QzUzMS4wOTMgODcuOTM5MSA1MzEuNDM2IDg3LjA0NzYgNTMyLjEyMiA4Ni4zNjE4QzUzMi45NDUgODUuNTM4OCA1MzMuOTA1IDg1LjEyNzMgNTM1LjAwMiA4NS4xMjcz''@;'; put 'put ''SDU1MS4wNUM1NTMuNjU2IDg1LjEyNzMgNTU0Ljk1OSA4Ni40MzAzIDU1NC45NTkgODkuMDM2NVYxODQuMDkxQzU1NC45NTkgMTg2LjY5NyA1NTMuNjU2IDE4OCA1NTEuMDUgMTg4SDUzNS4wMDJDNTMzLjkwNSAxODggNTMyLjk0NSAxODcuNjU3IDUzMi4xMjIgMTg2Ljk3MUM1MzEuNDM2IDE4''@;'; put 'put ''Ni4xNDggNTMxLjA5MyAxODUuMTg4IDUzMS4wOTMgMTg0LjA5MVYxNzcuOTE4Wk00NzkuNjU3IDEzNi41NjRDNDc5LjY1NyAxNDAuMjY3IDQ4MC4zNDIgMTQzLjc2NSA0ODEuNzE0IDE0Ny4wNTdDNDgzLjA4NiAxNTAuMjExIDQ4NC45MzcgMTUzLjAyMyA0ODcuMjY5IDE1NS40OTJDNDg5LjYw''@;'; put 'put ''MSAxNTcuOTYxIDQ5Mi4yNzYgMTU5Ljk1IDQ5NS4yOTMgMTYxLjQ1OUM0OTguNDQ4IDE2Mi44MyA1MDEuNzQgMTYzLjUxNiA1MDUuMTY5IDE2My41MTZDNTA4Ljg3MiAxNjMuNTE2IDUxMi4yMzMgMTYyLjgzIDUxNS4yNTEgMTYxLjQ1OUM1MTguMjY4IDE1OS45NSA1MjAuODc0IDE1Ny45NjEg''@;'; put 'put ''NTIzLjA2OSAxNTUuNDkyQzUyNS40MDEgMTUzLjAyMyA1MjcuMTg0IDE1MC4yMTEgNTI4LjQxOCAxNDcuMDU3QzUyOS42NTMgMTQzLjc2NSA1MzAuMjcgMTQwLjI2NyA1MzAuMjcgMTM2LjU2NEM1MzAuMjcgMTMyLjg2IDUyOS42NTMgMTI5LjQzMSA1MjguNDE4IDEyNi4yNzZDNTI3LjE4NCAx''@;'; put 'put ''MjIuOTg0IDUyNS40MDEgMTIwLjEwNCA1MjMuMDY5IDExNy42MzVDNTIwLjg3NCAxMTUuMTY2IDUxOC4yNjggMTEzLjI0NiA1MTUuMjUxIDExMS44NzRDNTEyLjIzMyAxMTAuMzY1IDUwOC44NzIgMTA5LjYxMSA1MDUuMTY5IDEwOS42MTFDNTAxLjc0IDEwOS42MTEgNDk4LjQ0OCAxMTAuMzY1''@;'; put 'put ''IDQ5NS4yOTMgMTExLjg3NEM0OTIuMjc2IDExMy4yNDYgNDg5LjYwMSAxMTUuMTY2IDQ4Ny4yNjkgMTE3LjYzNUM0ODQuOTM3IDEyMC4xMDQgNDgzLjA4NiAxMjIuOTg0IDQ4MS43MTQgMTI2LjI3NkM0ODAuMzQyIDEyOS40MzEgNDc5LjY1NyAxMzIuODYgNDc5LjY1NyAxMzYuNTY0Wk01NzQu''@;'; put 'put ''NDA3IDg5LjAzNjVDNTc0LjQwNyA4Ny45MzkxIDU3NC43NSA4Ny4wNDc2IDU3NS40MzYgODYuMzYxOEM1NzYuMTIyIDg1LjUzODggNTc3LjAxMyA4NS4xMjczIDU3OC4xMTEgODUuMTI3M0g1OTMuMzM2VjU4LjE3NDZDNTkzLjMzNiA1Ny4wNzczIDU5My42NzkgNTYuMTg1OCA1OTQuMzY0IDU1''@;'; put 'put ''LjQ5OTlDNTk1LjE4NyA1NC42NzcgNTk2LjE0OCA1NC4yNjU1IDU5Ny4yNDUgNTQuMjY1NUg2MTMuMjkzQzYxNS44OTkgNTQuMjY1NSA2MTcuMjAyIDU1LjU2ODUgNjE3LjIwMiA1OC4xNzQ2Vjg1LjEyNzNINjM1LjMwOEM2MzYuNDA1IDg1LjEyNzMgNjM3LjI5NyA4NS41Mzg4IDYzNy45ODIg''@;'; put 'put ''ODYuMzYxOEM2MzguNjY4IDg3LjA0NzYgNjM5LjAxMSA4Ny45MzkxIDYzOS4wMTEgODkuMDM2NVYxMDQuMjYyQzYzOS4wMTEgMTA1LjM1OSA2MzguNjY4IDEwNi4yNSA2MzcuOTgyIDEwNi45MzZDNjM3LjI5NyAxMDcuNjIyIDYzNi40MDUgMTA3Ljk2NSA2MzUuMzA4IDEwNy45NjVINjE3LjIw''@;'; put 'put ''MlYxODQuMDkxQzYxNy4yMDIgMTg2LjY5NyA2MTUuODk5IDE4OCA2MTMuMjkzIDE4OEg1OTcuMjQ1QzU5Ni4xNDggMTg4IDU5NS4xODcgMTg3LjY1NyA1OTQuMzY0IDE4Ni45NzFDNTkzLjY3OSAxODYuMTQ4IDU5My4zMzYgMTg1LjE4OCA1OTMuMzM2IDE4NC4wOTFWMTA3Ljk2NUg1NzguMTEx''@;'; put 'put ''QzU3Ny4wMTMgMTA3Ljk2NSA1NzYuMTIyIDEwNy42MjIgNTc1LjQzNiAxMDYuOTM2QzU3NC43NSAxMDYuMjUgNTc0LjQwNyAxMDUuMzU5IDU3NC40MDcgMTA0LjI2MlY4OS4wMzY1Wk03MjkuNjkzIDE3Ny45MThDNzI1Ljk5IDE4MC42NjIgNzIxLjczOCAxODMuMTMxIDcxNi45MzcgMTg1LjMy''@;'; put 'put ''NUM3MTIuMTM3IDE4Ny4zODMgNzA3LjMzNiAxODguNDExIDcwMi41MzUgMTg4LjQxMUM2OTUuNDAzIDE4OC40MTEgNjg4LjgxOSAxODcuMTA4IDY4Mi43ODQgMTg0LjUwMkM2NzYuNzQ4IDE4MS44OTYgNjcxLjUzNiAxNzguMjYxIDY2Ny4xNDcgMTczLjU5OEM2NjIuODk1IDE2OC45MzQgNjU5''@;'; put 'put ''LjUzNCAxNjMuNDQ4IDY1Ny4wNjUgMTU3LjEzOEM2NTQuNTk2IDE1MC44MjkgNjUzLjM2MiAxNDMuOTcgNjUzLjM2MiAxMzYuNTY0QzY1My4zNjIgMTI5LjQzMSA2NTQuNjY1IDEyMi43NzkgNjU3LjI3MSAxMTYuNjA2QzY1OS44NzcgMTEwLjI5NyA2NjMuNDQzIDEwNC44MSA2NjcuOTcgMTAw''@;'; put 'put ''LjE0N0M2NzIuNDk2IDk1LjM0NiA2NzcuNzA4IDkxLjU3NCA2ODMuNjA3IDg4LjgzMDdDNjg5LjY0MiA4Ni4wODc0IDY5Ni4wODggODQuNzE1OCA3MDIuOTQ3IDg0LjcxNThDNzA3Ljc0NyA4NC43MTU4IDcxMi40NzkgODUuODEzMSA3MTcuMTQzIDg4LjAwNzdDNzIxLjgwNyA5MC4wNjUyIDcy''@;'; put 'put ''NS45OSA5Mi40NjU1IDcyOS42OTMgOTUuMjA4OFY4OS4wMzY1QzcyOS42OTMgODcuOTM5MSA3MzAuMDM2IDg3LjA0NzYgNzMwLjcyMiA4Ni4zNjE4QzczMS41NDUgODUuNTM4OCA3MzIuNTA1IDg1LjEyNzMgNzMzLjYwMyA4NS4xMjczSDc0OS42NTFDNzUyLjI1NyA4NS4xMjczIDc1My41NiA4''@;'; put 'put ''Ni40MzAzIDc1My41NiA4OS4wMzY1VjE4NC4wOTFDNzUzLjU2IDE4Ni42OTcgNzUyLjI1NyAxODggNzQ5LjY1MSAxODhINzMzLjYwM0M3MzIuNTA1IDE4OCA3MzEuNTQ1IDE4Ny42NTcgNzMwLjcyMiAxODYuOTcxQzczMC4wMzYgMTg2LjE0OCA3MjkuNjkzIDE4NS4xODggNzI5LjY5MyAxODQu''@;'; put 'put ''MDkxVjE3Ny45MThaTTY3OC4yNTcgMTM2LjU2NEM2NzguMjU3IDE0MC4yNjcgNjc4Ljk0MyAxNDMuNzY1IDY4MC4zMTUgMTQ3LjA1N0M2ODEuNjg2IDE1MC4yMTEgNjgzLjUzOCAxNTMuMDIzIDY4NS44NyAxNTUuNDkyQzY4OC4yMDEgMTU3Ljk2MSA2OTAuODc2IDE1OS45NSA2OTMuODk0IDE2''@;'; put 'put ''MS40NTlDNjk3LjA0OSAxNjIuODMgNzAwLjM0IDE2My41MTYgNzAzLjc3IDE2My41MTZDNzA3LjQ3MyAxNjMuNTE2IDcxMC44MzMgMTYyLjgzIDcxMy44NTEgMTYxLjQ1OUM3MTYuODY5IDE1OS45NSA3MTkuNDc1IDE1Ny45NjEgNzIxLjY2OSAxNTUuNDkyQzcyNC4wMDEgMTUzLjAyMyA3MjUu''@;'; put 'put ''Nzg0IDE1MC4yMTEgNzI3LjAxOSAxNDcuMDU3QzcyOC4yNTMgMTQzLjc2NSA3MjguODcgMTQwLjI2NyA3MjguODcgMTM2LjU2NEM3MjguODcgMTMyLjg2IDcyOC4yNTMgMTI5LjQzMSA3MjcuMDE5IDEyNi4yNzZDNzI1Ljc4NCAxMjIuOTg0IDcyNC4wMDEgMTIwLjEwNCA3MjEuNjY5IDExNy42''@;'; put 'put ''MzVDNzE5LjQ3NSAxMTUuMTY2IDcxNi44NjkgMTEzLjI0NiA3MTMuODUxIDExMS44NzRDNzEwLjgzMyAxMTAuMzY1IDcwNy40NzMgMTA5LjYxMSA3MDMuNzcgMTA5LjYxMUM3MDAuMzQgMTA5LjYxMSA2OTcuMDQ5IDExMC4zNjUgNjkzLjg5NCAxMTEuODc0QzY5MC44NzYgMTEzLjI0NiA2ODgu''@;'; put 'put ''MjAxIDExNS4xNjYgNjg1Ljg3IDExNy42MzVDNjgzLjUzOCAxMjAuMTA0IDY4MS42ODYgMTIyLjk4NCA2ODAuMzE1IDEyNi4yNzZDNjc4Ljk0MyAxMjkuNDMxIDY3OC4yNTcgMTMyLjg2IDY3OC4yNTcgMTM2LjU2NFoiIGZpbGw9IiNFMEUwRTAiLz4KPHBhdGggZD0iTTg3My4yMDYgNzQuMjIy''@;'; put 'put ''OEM4NzIuNjU3IDc1LjA0NTggODcxLjkwMyA3NS41MjU4IDg3MC45NDMgNzUuNjYzQzg2OS45ODIgNzUuODAwMiA4NjkuMDIyIDc1LjU5NDQgODY4LjA2MiA3NS4wNDU4Qzg2NC45MDcgNzMuMTI1NSA4NjEuMTM1IDcxLjQ3OTUgODU2Ljc0NiA3MC4xMDc5Qzg1Mi4zNTcgNjguNzM2MiA4NDcu''@;'; put 'put ''ODk5IDY4LjExOSA4NDMuMzczIDY4LjI1NjJDODM3LjQ3NSA2OC4yNTYyIDgzMS45ODggNjkuNTU5MiA4MjYuOTEzIDcyLjE2NTNDODIxLjk3NSA3NC42MzQzIDgxNy42NTQgNzguMDYzNCA4MTMuOTUxIDgyLjQ1MjZDODEwLjI0OCA4Ni43MDQ3IDgwNy4zNjcgOTEuNzExMSA4MDUuMzEgOTcu''@;'; put 'put ''NDcyQzgwMy4yNTIgMTAzLjIzMyA4MDIuMjkyIDEwOS40MDUgODAyLjQyOSAxMTUuOTg5QzgwMi41NjYgMTIyLjg0NyA4MDMuNTk1IDEyOS4yMjUgODA1LjUxNSAxMzUuMTIzQzgwNy41NzMgMTQwLjg4NCA4MTAuMzg1IDE0NS44OTEgODEzLjk1MSAxNTAuMTQzQzgxNy41MTcgMTU0LjM5NSA4''@;'; put 'put ''MjEuODM4IDE1Ny43NTUgODI2LjkxMyAxNjAuMjI0QzgzMS45ODggMTYyLjU1NiA4MzcuNjggMTYzLjcyMiA4NDMuOTkgMTYzLjcyMkM4NTAuMDI1IDE2My41ODUgODU1LjUxMiAxNjIuNTU2IDg2MC40NSAxNjAuNjM2Qzg2NS41MjUgMTU4LjcxNiA4NzAuNTMxIDE1NS45NzIgODc1LjQ2OSAx''@;'; put 'put ''NTIuNDA2Qzg3Ni40MjkgMTUxLjcyIDg3Ny40NTggMTUxLjUxNCA4NzguNTU1IDE1MS43ODlDODc5LjY1MiAxNTEuOTI2IDg4MC41NDQgMTUyLjQ3NSA4ODEuMjMgMTUzLjQzNUw4OTEuMTA2IDE2OC4yNDhDODkyLjM0IDE3MC4xNjkgODkxLjk5NyAxNzEuODgzIDg5MC4wNzcgMTczLjM5MkM4''@;'; put 'put ''ODIuNTMzIDE3OS4xNTMgODc1LjE5NSAxODMuMzM2IDg2OC4wNjIgMTg1Ljk0M0M4NjAuOTMgMTg4LjU0OSA4NTIuOTc0IDE4OS44NTIgODQ0LjE5NiAxODkuODUyQzgzMy42MzQgMTg5Ljk4OSA4MjQuMTAxIDE4OC4zNDMgODE1LjU5NyAxODQuOTE0QzgwNy4yMyAxODEuMzQ4IDgwMC4wMjkg''@;'; put 'put ''MTc2LjM0MSA3OTMuOTk0IDE2OS44OTRDNzg4LjA5NiAxNjMuMzExIDc4My41MDEgMTU1LjQ5MiA3ODAuMjA5IDE0Ni40MzlDNzc3LjA1NCAxMzcuMzg3IDc3NS40MDggMTI3LjM3NCA3NzUuMjcxIDExNi40MDFDNzc1LjEzNCAxMDcuMDczIDc3Ni41NzQgOTguMDIwNyA3NzkuNTkyIDg5LjI0''@;'; put 'put ''MjJDNzgyLjc0NiA4MC4zMjY2IDc4Ny4yMDQgNzIuMzcxMSA3OTIuOTY1IDY1LjM3NTdDNzk4LjcyNiA1OC4zODA0IDgwNS43MjEgNTIuNzU2NyA4MTMuOTUxIDQ4LjUwNDZDODIyLjE4MSA0NC4yNTI1IDgzMS40MzkgNDIuMTI2NSA4NDEuNzI3IDQyLjEyNjVDODQ4LjcyMiA0MS45ODkzIDg1''@;'; put 'put ''NS41OCA0Mi44MTIzIDg2Mi4zMDEgNDQuNTk1NEM4NjkuMTU5IDQ2LjM3ODYgODc1Ljg4IDQ5LjY3MDUgODgyLjQ2NCA1NC40NzEyQzg4My40MjQgNTUuMTU3IDg4My45NzMgNTYuMDQ4NiA4ODQuMTEgNTcuMTQ1OUM4ODQuMjQ3IDU4LjEwNjEgODgzLjk3MyA1OS4wNjYyIDg4My4yODcgNjAu''@;'; put 'put ''MDI2M0w4NzMuMjA2IDc0LjIyMjhaTTkwNi4yMTIgMTM2LjU2NEM5MDYuMjEyIDEyOS4yOTQgOTA3LjUxNSAxMjIuNTA0IDkxMC4xMjEgMTE2LjE5NUM5MTIuNzI3IDEwOS44ODUgOTE2LjIyNSAxMDQuMzk5IDkyMC42MTQgOTkuNzM1MkM5MjUuMTQgOTUuMDcxNyA5MzAuNDIxIDkxLjQzNjgg''@;'; put 'put ''OTM2LjQ1NiA4OC44MzA3Qzk0Mi40OTIgODYuMDg3NCA5NDkuMDA3IDg0LjcxNTggOTU2LjAwMiA4NC43MTU4Qzk2Mi45OTggODQuNzE1OCA5NjkuNDQ0IDg2LjA4NzQgOTc1LjM0MiA4OC44MzA3Qzk4MS4zNzcgOTEuNDM2OCA5ODYuNTkgOTUuMDcxNyA5OTAuOTc5IDk5LjczNTJDOTk1LjUw''@;'; put 'put ''NSAxMDQuMzk5IDk5OS4wMDMgMTA5Ljg4NSAxMDAxLjQ3IDExNi4xOTVDMTAwNC4wOCAxMjIuNTA0IDEwMDUuMzggMTI5LjI5NCAxMDA1LjM4IDEzNi41NjRDMTAwNS4zOCAxNDMuODMzIDEwMDQuMDggMTUwLjYyMyAxMDAxLjQ3IDE1Ni45MzJDOTk5LjAwMyAxNjMuMjQyIDk5NS41MDUgMTY4''@;'; put 'put ''LjcyOSA5OTAuOTc5IDE3My4zOTJDOTg2LjU5IDE3OC4wNTYgOTgxLjM3NyAxODEuNzU5IDk3NS4zNDIgMTg0LjUwMkM5NjkuMzA3IDE4Ny4xMDggOTYyLjc5MiAxODguNDExIDk1NS43OTYgMTg4LjQxMUM5NDguODAxIDE4OC40MTEgOTQyLjI4NiAxODcuMTA4IDkzNi4yNTEgMTg0LjUwMkM5''@;'; put 'put ''MzAuMjE1IDE4MS43NTkgOTI0LjkzNSAxNzguMDU2IDkyMC40MDggMTczLjM5MkM5MTYuMDE5IDE2OC43MjkgOTEyLjUyMSAxNjMuMjQyIDkwOS45MTUgMTU2LjkzMkM5MDcuNDQ2IDE1MC42MjMgOTA2LjIxMiAxNDMuODMzIDkwNi4yMTIgMTM2LjU2NFpNOTMxLjEwNyAxMzYuNTY0QzkzMS4x''@;'; put 'put ''MDcgMTQwLjQwNCA5MzEuNzI0IDE0NC4wMzkgOTMyLjk1OSAxNDcuNDY4QzkzNC4xOTMgMTUwLjc2IDkzNS45MDggMTUzLjY0MSA5MzguMTAyIDE1Ni4xMDlDOTQwLjI5NyAxNTguNTc4IDk0Mi45MDMgMTYwLjU2NyA5NDUuOTIxIDE2Mi4wNzZDOTQ4LjkzOCAxNjMuNDQ4IDk1Mi4yMyAxNjQu''@;'; put 'put ''MTM0IDk1NS43OTYgMTY0LjEzNEM5NTkuMzYzIDE2NC4xMzQgOTYyLjY1NSAxNjMuNDQ4IDk2NS42NzIgMTYyLjA3NkM5NjguODI3IDE2MC41NjcgOTcxLjUwMiAxNTguNTc4IDk3My42OTYgMTU2LjEwOUM5NzUuODkxIDE1My42NDEgOTc3LjYwNSAxNTAuNzYgOTc4Ljg0IDE0Ny40NjhDOTgw''@;'; put 'put ''LjA3NCAxNDQuMDM5IDk4MC42OTIgMTQwLjQwNCA5ODAuNjkyIDEzNi41NjRDOTgwLjY5MiAxMzIuNzIzIDk4MC4wNzQgMTI5LjE1NyA5NzguODQgMTI1Ljg2NUM5NzcuNjA1IDEyMi40MzYgOTc1Ljg5MSAxMTkuNDg3IDk3My42OTYgMTE3LjAxOEM5NzEuNTAyIDExNC41NDkgOTY4LjgyNyAx''@;'; put 'put ''MTIuNjI5IDk2NS42NzIgMTExLjI1N0M5NjIuNjU1IDEwOS43NDggOTU5LjM2MyAxMDguOTk0IDk1NS43OTYgMTA4Ljk5NEM5NTIuMjMgMTA4Ljk5NCA5NDguOTM4IDEwOS43NDggOTQ1LjkyMSAxMTEuMjU3Qzk0Mi45MDMgMTEyLjYyOSA5NDAuMjk3IDExNC41NDkgOTM4LjEwMiAxMTcuMDE4''@;'; put 'put ''QzkzNS45MDggMTE5LjQ4NyA5MzQuMTkzIDEyMi40MzYgOTMyLjk1OSAxMjUuODY1QzkzMS43MjQgMTI5LjE1NyA5MzEuMTA3IDEzMi43MjMgOTMxLjEwNyAxMzYuNTY0Wk0xMDUwLjkgMTg0LjA5MUMxMDUwLjkgMTg2LjY5NyAxMDQ5LjU5IDE4OCAxMDQ2Ljk5IDE4OEgxMDMwLjk0QzEwMjku''@;'; put 'put ''ODQgMTg4IDEwMjguODggMTg3LjY1NyAxMDI4LjA2IDE4Ni45NzFDMTAyNy4zNyAxODYuMTQ4IDEwMjcuMDMgMTg1LjE4OCAxMDI3LjAzIDE4NC4wOTFWODkuMDM2NUMxMDI3LjAzIDg3LjkzOTEgMTAyNy4zNyA4Ny4wNDc2IDEwMjguMDYgODYuMzYxOEMxMDI4Ljg4IDg1LjUzODggMTAyOS44''@;'; put 'put ''NCA4NS4xMjczIDEwMzAuOTQgODUuMTI3M0gxMDQ2Ljk5QzEwNDkuNTkgODUuMTI3MyAxMDUwLjkgODYuNDMwMyAxMDUwLjkgODkuMDM2NVY5Ni42NDlDMTA1NC44OCA5My4zNTcxIDEwNTkuNDcgOTAuNTQ1MyAxMDY0LjY4IDg4LjIxMzVDMTA2OS44OSA4NS44ODE3IDEwNzUuMDQgODQuNzE1''@;'; put 'put ''OCAxMDgwLjExIDg0LjcxNThDMTA4NC45MSA4NC43MTU4IDEwODkuMzcgODUuNjA3NCAxMDkzLjQ5IDg3LjM5MDVDMTA5Ny42IDg5LjAzNjUgMTEwMS4xIDkxLjQzNjggMTEwMy45OCA5NC41OTE2QzExMDcgOTcuNjA5MiAxMTA5LjMzIDEwMS4xNzUgMTExMC45OCAxMDUuMjlDMTExMi42MiAx''@;'; put 'put ''MDkuNDA1IDExMTMuNDQgMTEzLjkzMiAxMTEzLjQ0IDExOC44N1YxODQuMDkxQzExMTMuNDQgMTg2LjY5NyAxMTEyLjE0IDE4OCAxMTA5LjUzIDE4OEgxMDkzLjQ5QzEwOTIuMzkgMTg4IDEwOTEuNDMgMTg3LjY1NyAxMDkwLjYxIDE4Ni45NzFDMTA4OS45MiAxODYuMTQ4IDEwODkuNTggMTg1''@;'; put 'put ''LjE4OCAxMDg5LjU4IDE4NC4wOTFWMTI2LjY4OEMxMDg5LjU4IDEyMS4wNjQgMTA4OC4yNyAxMTYuNzQ0IDEwODUuNjcgMTEzLjcyNkMxMDgzLjA2IDExMC41NzEgMTA3OS4zNiAxMDguOTk0IDEwNzQuNTYgMTA4Ljk5NEMxMDcxLjU0IDEwOC45OTQgMTA2OC41OSAxMDkuNjExIDEwNjUuNzEg''@;'; put 'put ''MTEwLjg0NUMxMDYyLjk3IDExMS45NDMgMTA2MC41IDExMy41MiAxMDU4LjMgMTE1LjU3OEMxMDU2LjI1IDExNy40OTggMTA1NC41MyAxMTkuODMgMTA1My4xNiAxMjIuNTczQzEwNTEuOTMgMTI1LjMxNiAxMDUxLjMxIDEyOC4xOTcgMTA1MS4zMSAxMzEuMjE0TDEwNTAuOSAxODQuMDkxWk0x''@;'; put 'put ''MTI3Ljg3IDg5LjAzNjVDMTEyNy44NyA4Ny45MzkxIDExMjguMjEgODcuMDQ3NiAxMTI4LjkgODYuMzYxOEMxMTI5LjU4IDg1LjUzODggMTEzMC40OCA4NS4xMjczIDExMzEuNTcgODUuMTI3M0gxMTQ2LjhWNTguMTc0NkMxMTQ2LjggNTcuMDc3MyAxMTQ3LjE0IDU2LjE4NTggMTE0Ny44MyA1''@;'; put 'put ''NS40OTk5QzExNDguNjUgNTQuNjc3IDExNDkuNjEgNTQuMjY1NSAxMTUwLjcxIDU0LjI2NTVIMTE2Ni43NkMxMTY5LjM2IDU0LjI2NTUgMTE3MC42NyA1NS41Njg1IDExNzAuNjcgNTguMTc0NlY4NS4xMjczSDExODguNzdDMTE4OS44NyA4NS4xMjczIDExOTAuNzYgODUuNTM4OCAxMTkxLjQ1''@;'; put 'put ''IDg2LjM2MThDMTE5Mi4xMyA4Ny4wNDc2IDExOTIuNDcgODcuOTM5MSAxMTkyLjQ3IDg5LjAzNjVWMTA0LjI2MkMxMTkyLjQ3IDEwNS4zNTkgMTE5Mi4xMyAxMDYuMjUgMTE5MS40NSAxMDYuOTM2QzExOTAuNzYgMTA3LjYyMiAxMTg5Ljg3IDEwNy45NjUgMTE4OC43NyAxMDcuOTY1SDExNzAu''@;'; put 'put ''NjdWMTg0LjA5MUMxMTcwLjY3IDE4Ni42OTcgMTE2OS4zNiAxODggMTE2Ni43NiAxODhIMTE1MC43MUMxMTQ5LjYxIDE4OCAxMTQ4LjY1IDE4Ny42NTcgMTE0Ny44MyAxODYuOTcxQzExNDcuMTQgMTg2LjE0OCAxMTQ2LjggMTg1LjE4OCAxMTQ2LjggMTg0LjA5MVYxMDcuOTY1SDExMzEuNTdD''@;'; put 'put ''MTEzMC40OCAxMDcuOTY1IDExMjkuNTggMTA3LjYyMiAxMTI4LjkgMTA2LjkzNkMxMTI4LjIxIDEwNi4yNSAxMTI3Ljg3IDEwNS4zNTkgMTEyNy44NyAxMDQuMjYyVjg5LjAzNjVaTTEyNzMuMjggMTA4LjE3MUMxMjcyLjg3IDEwOS4yNjggMTI3Mi4xOCAxMTAuMDIyIDEyNzEuMjIgMTEwLjQz''@;'; put 'put ''NEMxMjcwLjI2IDExMC44NDUgMTI2OS4yMyAxMTAuNzc3IDEyNjguMTQgMTEwLjIyOEMxMjY3LjA0IDEwOS42OCAxMjY1LjY3IDEwOS4yIDEyNjQuMDIgMTA4Ljc4OEMxMjYyLjUxIDEwOC4zNzcgMTI2MC44NyAxMDguMTcxIDEyNTkuMDggMTA4LjE3MUMxMjU2LjA3IDEwOC4xNzEgMTI1My4x''@;'; put 'put ''OSAxMDguNzg4IDEyNTAuNDQgMTEwLjAyMkMxMjQ3LjcgMTExLjI1NyAxMjQ1LjIzIDExMi45NzIgMTI0My4wNCAxMTUuMTY2QzEyNDAuOTggMTE3LjIyNCAxMjM5LjMzIDExOS42OTMgMTIzOC4xIDEyMi41NzNDMTIzNi44NiAxMjUuMzE2IDEyMzYuMjUgMTI4LjE5NyAxMjM2LjI1IDEzMS4y''@;'; put 'put ''MTRMMTIzNS44NCAxODQuMDkxQzEyMzUuODQgMTg1LjE4OCAxMjM1LjQ5IDE4Ni4xNDggMTIzNC44MSAxODYuOTcxQzEyMzQuMTIgMTg3LjY1NyAxMjMzLjIzIDE4OCAxMjMyLjEzIDE4OEgxMjE1Ljg4QzEyMTQuNzggMTg4IDEyMTMuODIgMTg3LjY1NyAxMjEzIDE4Ni45NzFDMTIxMi4zMSAx''@;'; put 'put ''ODYuMTQ4IDEyMTEuOTcgMTg1LjE4OCAxMjExLjk3IDE4NC4wOTFWODkuMDM2NUMxMjExLjk3IDg3LjkzOTEgMTIxMi4zMSA4Ny4wNDc2IDEyMTMgODYuMzYxOEMxMjEzLjgyIDg1LjUzODggMTIxNC43OCA4NS4xMjczIDEyMTUuODggODUuMTI3M0gxMjMyLjEzQzEyMzMuMjMgODUuMTI3MyAx''@;'; put 'put ''MjM0LjEyIDg1LjUzODggMTIzNC44MSA4Ni4zNjE4QzEyMzUuNDkgODcuMDQ3NiAxMjM1Ljg0IDg3LjkzOTEgMTIzNS44NCA4OS4wMzY1Vjk0LjU5MTZDMTIzOS44MSA5MS43MTExIDEyNDQuMDcgODkuMzc5NCAxMjQ4LjU5IDg3LjU5NjJDMTI1My4xMiA4NS42NzU5IDEyNTcuOTkgODQuNzE1''@;'; put 'put ''OCAxMjYzLjIgODQuNzE1OEMxMjY4LjU1IDg0LjcxNTggMTI3My4yMSA4NS43NDQ1IDEyNzcuMTkgODcuODAyQzEyNzkuMTEgODkuMDM2NSAxMjc5LjczIDkwLjYxMzggMTI3OS4wNCA5Mi41MzQxTDEyNzMuMjggMTA4LjE3MVpNMTI4NS4zMyAxMzYuNTY0QzEyODUuMzMgMTI5LjI5NCAxMjg2''@;'; put 'put ''LjYzIDEyMi41MDQgMTI4OS4yNCAxMTYuMTk1QzEyOTEuODUgMTA5Ljg4NSAxMjk1LjM0IDEwNC4zOTkgMTI5OS43MyA5OS43MzUyQzEzMDQuMjYgOTUuMDcxNyAxMzA5LjU0IDkxLjQzNjggMTMxNS41NyA4OC44MzA3QzEzMjEuNjEgODYuMDg3NCAxMzI4LjEyIDg0LjcxNTggMTMzNS4xMiA4''@;'; put 'put ''NC43MTU4QzEzNDIuMTIgODQuNzE1OCAxMzQ4LjU2IDg2LjA4NzQgMTM1NC40NiA4OC44MzA3QzEzNjAuNSA5MS40MzY4IDEzNjUuNzEgOTUuMDcxNyAxMzcwLjEgOTkuNzM1MkMxMzc0LjYyIDEwNC4zOTkgMTM3OC4xMiAxMDkuODg1IDEzODAuNTkgMTE2LjE5NUMxMzgzLjIgMTIyLjUwNCAx''@;'; put 'put ''Mzg0LjUgMTI5LjI5NCAxMzg0LjUgMTM2LjU2NEMxMzg0LjUgMTQzLjgzMyAxMzgzLjIgMTUwLjYyMyAxMzgwLjU5IDE1Ni45MzJDMTM3OC4xMiAxNjMuMjQyIDEzNzQuNjIgMTY4LjcyOSAxMzcwLjEgMTczLjM5MkMxMzY1LjcxIDE3OC4wNTYgMTM2MC41IDE4MS43NTkgMTM1NC40NiAxODQu''@;'; put 'put ''NTAyQzEzNDguNDMgMTg3LjEwOCAxMzQxLjkxIDE4OC40MTEgMTMzNC45MSAxODguNDExQzEzMjcuOTIgMTg4LjQxMSAxMzIxLjQgMTg3LjEwOCAxMzE1LjM3IDE4NC41MDJDMTMwOS4zMyAxODEuNzU5IDEzMDQuMDUgMTc4LjA1NiAxMjk5LjUzIDE3My4zOTJDMTI5NS4xNCAxNjguNzI5IDEy''@;'; put 'put ''OTEuNjQgMTYzLjI0MiAxMjg5LjAzIDE1Ni45MzJDMTI4Ni41NiAxNTAuNjIzIDEyODUuMzMgMTQzLjgzMyAxMjg1LjMzIDEzNi41NjRaTTEzMTAuMjMgMTM2LjU2NEMxMzEwLjIzIDE0MC40MDQgMTMxMC44NCAxNDQuMDM5IDEzMTIuMDggMTQ3LjQ2OEMxMzEzLjMxIDE1MC43NiAxMzE1LjAz''@;'; put 'put ''IDE1My42NDEgMTMxNy4yMiAxNTYuMTA5QzEzMTkuNDIgMTU4LjU3OCAxMzIyLjAyIDE2MC41NjcgMTMyNS4wNCAxNjIuMDc2QzEzMjguMDYgMTYzLjQ0OCAxMzMxLjM1IDE2NC4xMzQgMTMzNC45MSAxNjQuMTM0QzEzMzguNDggMTY0LjEzNCAxMzQxLjc3IDE2My40NDggMTM0NC43OSAxNjIu''@;'; put 'put ''MDc2QzEzNDcuOTUgMTYwLjU2NyAxMzUwLjYyIDE1OC41NzggMTM1Mi44MSAxNTYuMTA5QzEzNTUuMDEgMTUzLjY0MSAxMzU2LjcyIDE1MC43NiAxMzU3Ljk2IDE0Ny40NjhDMTM1OS4xOSAxNDQuMDM5IDEzNTkuODEgMTQwLjQwNCAxMzU5LjgxIDEzNi41NjRDMTM1OS44MSAxMzIuNzIzIDEz''@;'; put 'put ''NTkuMTkgMTI5LjE1NyAxMzU3Ljk2IDEyNS44NjVDMTM1Ni43MiAxMjIuNDM2IDEzNTUuMDEgMTE5LjQ4NyAxMzUyLjgxIDExNy4wMThDMTM1MC42MiAxMTQuNTQ5IDEzNDcuOTUgMTEyLjYyOSAxMzQ0Ljc5IDExMS4yNTdDMTM0MS43NyAxMDkuNzQ4IDEzMzguNDggMTA4Ljk5NCAxMzM0Ljkx''@;'; put 'put ''IDEwOC45OTRDMTMzMS4zNSAxMDguOTk0IDEzMjguMDYgMTA5Ljc0OCAxMzI1LjA0IDExMS4yNTdDMTMyMi4wMiAxMTIuNjI5IDEzMTkuNDIgMTE0LjU0OSAxMzE3LjIyIDExNy4wMThDMTMxNS4wMyAxMTkuNDg3IDEzMTMuMzEgMTIyLjQzNiAxMzEyLjA4IDEyNS44NjVDMTMxMC44NCAxMjku''@;'; put 'put ''MTU3IDEzMTAuMjMgMTMyLjcyMyAxMzEwLjIzIDEzNi41NjRaTTE0MDguMjEgMzcuMzk0NEMxNDA4LjIxIDM2LjI5NyAxNDA4LjU1IDM1LjQwNTUgMTQwOS4yNCAzNC43MTk3QzE0MTAuMDYgMzQuMDMzOCAxNDExLjAyIDMzLjY5MDkgMTQxMi4xMiAzMy42OTA5SDE0MjguMTZDMTQyOS4yNiAz''@;'; put 'put ''My42OTA5IDE0MzAuMTUgMzQuMDMzOCAxNDMwLjg0IDM0LjcxOTdDMTQzMS42NiAzNS40MDU1IDE0MzIuMDcgMzYuMjk3IDE0MzIuMDcgMzcuMzk0NFYxODQuMDkxQzE0MzIuMDcgMTg2LjY5NyAxNDMwLjc3IDE4OCAxNDI4LjE2IDE4OEgxNDEyLjEyQzE0MTEuMDIgMTg4IDE0MTAuMDYgMTg3''@;'; put 'put ''LjY1NyAxNDA5LjI0IDE4Ni45NzFDMTQwOC41NSAxODYuMTQ4IDE0MDguMjEgMTg1LjE4OCAxNDA4LjIxIDE4NC4wOTFWMzcuMzk0NFpNMTQ2MyAzNy4zOTQ0QzE0NjMgMzYuMjk3IDE0NjMuMzUgMzUuNDA1NSAxNDY0LjAzIDM0LjcxOTdDMTQ2NC44NSAzNC4wMzM4IDE0NjUuODEgMzMuNjkw''@;'; put 'put ''OSAxNDY2LjkxIDMzLjY5MDlIMTQ4Mi45NkMxNDg0LjA2IDMzLjY5MDkgMTQ4NC45NSAzNC4wMzM4IDE0ODUuNjMgMzQuNzE5N0MxNDg2LjQ2IDM1LjQwNTUgMTQ4Ni44NyAzNi4yOTcgMTQ4Ni44NyAzNy4zOTQ0VjE4NC4wOTFDMTQ4Ni44NyAxODYuNjk3IDE0ODUuNTcgMTg4IDE0ODIuOTYg''@;'; put 'put ''MTg4SDE0NjYuOTFDMTQ2NS44MSAxODggMTQ2NC44NSAxODcuNjU3IDE0NjQuMDMgMTg2Ljk3MUMxNDYzLjM1IDE4Ni4xNDggMTQ2MyAxODUuMTg4IDE0NjMgMTg0LjA5MVYzNy4zOTQ0Wk0xNTM3Ljc2IDE0OC4wODVDMTUzOS42OCAxNTIuODg2IDE1NDIuNTYgMTU2Ljc5NSAxNTQ2LjQgMTU5''@;'; put 'put ''LjgxM0MxNTUwLjM3IDE2Mi44MyAxNTU0LjkgMTY0LjMzOSAxNTU5Ljk4IDE2NC4zMzlDMTU2My42OCAxNjQuMzM5IDE1NjcuMjUgMTYzLjcyMiAxNTcwLjY3IDE2Mi40ODhDMTU3NC4xIDE2MS4yNTMgMTU3Ni45OCAxNTkuNTM5IDE1NzkuMzIgMTU3LjM0NEMxNTgwLjE0IDE1Ni42NTggMTU4''@;'; put 'put ''MS4wMyAxNTYuMzg0IDE1ODEuOTkgMTU2LjUyMUMxNTgzLjA5IDE1Ni41MjEgMTU4My45OCAxNTYuODY0IDE1ODQuNjcgMTU3LjU1TDE1OTYuMzkgMTY4LjY2QzE1OTcuMDggMTY5LjM0NiAxNTk3LjQyIDE3MC4yMzcgMTU5Ny40MiAxNzEuMzM1QzE1OTcuNDIgMTcyLjI5NSAxNTk3LjA4IDE3''@;'; put 'put ''My4xMTggMTU5Ni4zOSAxNzMuODA0QzE1OTEuODcgMTc4LjYwNCAxNTg2LjUyIDE4Mi4yMzkgMTU4MC4zNCAxODQuNzA4QzE1NzQuMTcgMTg3LjE3NyAxNTY3LjM4IDE4OC40MTEgMTU1OS45OCAxODguNDExQzE1NTMuMTIgMTg4LjQxMSAxNTQ2Ljc0IDE4Ny4xNzcgMTU0MC44NCAxODQuNzA4''@;'; put 'put ''QzE1MzUuMDggMTgyLjIzOSAxNTMwLjAxIDE3OC43NDEgMTUyNS42MiAxNzQuMjE1QzE1MjAuODIgMTY5LjQxNCAxNTE3LjExIDE2My43MjIgMTUxNC41MSAxNTcuMTM4QzE1MTEuOSAxNTAuNTU0IDE1MTAuNiAxNDMuNTU5IDE1MTAuNiAxMzYuMTUyQzE1MTAuNiAxMjkuMDIgMTUxMS45IDEy''@;'; put 'put ''Mi4zNjcgMTUxNC41MSAxMTYuMTk1QzE1MTcuMTEgMTA5Ljg4NSAxNTIwLjYxIDEwNC4zOTkgMTUyNSA5OS43MzUyQzE1MjkuNTMgOTUuMDcxNyAxNTM0LjgxIDkxLjQzNjggMTU0MC44NCA4OC44MzA3QzE1NDYuODggODYuMDg3NCAxNTUzLjMyIDg0LjcxNTggMTU2MC4xOCA4NC43MTU4QzE1''@;'; put 'put ''NjYuNDkgODQuNzE1OCAxNTcyLjMyIDg1Ljg4MTcgMTU3Ny42NyA4OC4yMTM1QzE1ODMuMTYgOTAuNTQ1MyAxNTg3Ljk2IDkzLjc2ODYgMTU5Mi4wNyA5Ny44ODM1QzE1OTMuODYgOTkuNTI5NSAxNTk1LjU3IDEwMS40NSAxNTk3LjIyIDEwMy42NDRDMTU5OC44NiAxMDUuODM5IDE2MDAuMyAx''@;'; put 'put ''MDguMzc3IDE2MDEuNTQgMTExLjI1N0MxNjAyLjc3IDExNC4xMzcgMTYwMy43MyAxMTcuNDk4IDE2MDQuNDIgMTIxLjMzOEMxNjA1LjI0IDEyNS4wNDIgMTYwNS42NSAxMjkuMjk0IDE2MDUuNjUgMTM0LjA5NUMxNjA1LjY1IDEzNy4zODcgMTYwNS40NSAxNDAuOTUzIDE2MDUuMDMgMTQ0Ljc5''@;'; put 'put ''M0MxNjA0Ljc2IDE0Ni45ODggMTYwMy41MyAxNDguMDg1IDE2MDEuMzMgMTQ4LjA4NUgxNTM3Ljc2Wk0xNTU5LjU2IDEwOC43ODhDMTU1My44IDEwOC43ODggMTU0OS4wNyAxMTAuMzY1IDE1NDUuMzcgMTEzLjUyQzE1NDEuNjYgMTE2LjY3NSAxNTM5LjA2IDEyMC41ODQgMTUzNy41NSAxMjUu''@;'; put 'put ''MjQ4SDE1ODAuNzZDMTU3OS4yNSAxMjAuODU4IDE1NzYuNzEgMTE3LjAxOCAxNTczLjE0IDExMy43MjZDMTU2OS43MSAxMTAuNDM0IDE1NjUuMTkgMTA4Ljc4OCAxNTU5LjU2IDEwOC43ODhaTTE2ODguNTEgMTA4LjE3MUMxNjg4LjEgMTA5LjI2OCAxNjg3LjQxIDExMC4wMjIgMTY4Ni40NSAx''@;'; put 'put ''MTAuNDM0QzE2ODUuNDkgMTEwLjg0NSAxNjg0LjQ2IDExMC43NzcgMTY4My4zNyAxMTAuMjI4QzE2ODIuMjcgMTA5LjY4IDE2ODAuOSAxMDkuMiAxNjc5LjI1IDEwOC43ODhDMTY3Ny43NCAxMDguMzc3IDE2NzYuMSAxMDguMTcxIDE2NzQuMzEgMTA4LjE3MUMxNjcxLjI5IDEwOC4xNzEgMTY2''@;'; put 'put ''OC40MSAxMDguNzg4IDE2NjUuNjcgMTEwLjAyMkMxNjYyLjkzIDExMS4yNTcgMTY2MC40NiAxMTIuOTcyIDE2NTguMjYgMTE1LjE2NkMxNjU2LjIxIDExNy4yMjQgMTY1NC41NiAxMTkuNjkzIDE2NTMuMzMgMTIyLjU3M0MxNjUyLjA5IDEyNS4zMTYgMTY1MS40NyAxMjguMTk3IDE2NTEuNDcg''@;'; put 'put ''MTMxLjIxNEwxNjUxLjA2IDE4NC4wOTFDMTY1MS4wNiAxODUuMTg4IDE2NTAuNzIgMTg2LjE0OCAxNjUwLjAzIDE4Ni45NzFDMTY0OS4zNSAxODcuNjU3IDE2NDguNDYgMTg4IDE2NDcuMzYgMTg4SDE2MzEuMTFDMTYzMC4wMSAxODggMTYyOS4wNSAxODcuNjU3IDE2MjguMjMgMTg2Ljk3MUMx''@;'; put 'put ''NjI3LjU0IDE4Ni4xNDggMTYyNy4yIDE4NS4xODggMTYyNy4yIDE4NC4wOTFWODkuMDM2NUMxNjI3LjIgODcuOTM5MSAxNjI3LjU0IDg3LjA0NzYgMTYyOC4yMyA4Ni4zNjE4QzE2MjkuMDUgODUuNTM4OCAxNjMwLjAxIDg1LjEyNzMgMTYzMS4xMSA4NS4xMjczSDE2NDcuMzZDMTY0OC40NiA4''@;'; put 'put ''NS4xMjczIDE2NDkuMzUgODUuNTM4OCAxNjUwLjAzIDg2LjM2MThDMTY1MC43MiA4Ny4wNDc2IDE2NTEuMDYgODcuOTM5MSAxNjUxLjA2IDg5LjAzNjVWOTQuNTkxNkMxNjU1LjA0IDkxLjcxMTEgMTY1OS4yOSA4OS4zNzk0IDE2NjMuODIgODcuNTk2MkMxNjY4LjM1IDg1LjY3NTkgMTY3My4y''@;'; put 'put ''MiA4NC43MTU4IDE2NzguNDMgODQuNzE1OEMxNjgzLjc4IDg0LjcxNTggMTY4OC40NCA4NS43NDQ1IDE2OTIuNDIgODcuODAyQzE2OTQuMzQgODkuMDM2NSAxNjk0Ljk2IDkwLjYxMzggMTY5NC4yNyA5Mi41MzQxTDE2ODguNTEgMTA4LjE3MVoiIGZpbGw9IiM4RUM2M0YiLz4KPC9nPgo8ZGVm''@;'; put 'put ''cz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMDVfNyI+CjxyZWN0IHdpZHRoPSIxNjg5IiBoZWlnaHQ9IjI0MCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K'';'; put 'run;'; put '%sasjsout(SVG64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=dc-logo-svg; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''PHN2ZyB3aWR0aD0iNzAiIGhlaWdodD0iNzAiIHZpZXdCb3g9IjAgMCA3MCA3MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEwMV84KSI+CjxwYXRoIGQ9Ik0zNy41OTkzIDE2LjYyMTJDMzguNTkxNiAx''@;'; put 'put ''Ni43NDE1IDM5LjU1MzggMTYuODMxNyA0MC41NDYxIDE2Ljk1MTlDNDIuOTIxNiAxNy4yODI3IDQ1LjIzNyAxNy43MzM3IDQ3LjQwMiAxOC44NDYzQzQ4LjAzMzQgMTkuMTc3MSA0OC42MzQ4IDE5LjUzNzkgNDkuMDg1OSAyMC4xMDkyQzQ5LjgwNzUgMjAuOTUxMiA0OS43Nzc0IDIxLjg1MzMg''@;'; put 'put ''NDkuMDU1OCAyMi42OTUyQzQ4LjMwNCAyMy41MzcxIDQ3LjM0MTggMjQuMDE4MyA0Ni4zMTk1IDI0LjQwOTJDNDMuOTQ0IDI1LjM0MTMgNDEuNDQ4MiAyNS43NjIzIDM4LjkyMjQgMjUuOTcyOEMzNC44MDI5IDI2LjMwMzUgMzAuNzQzNSAyNi4xNTMyIDI2LjcxNDIgMjUuMTkxQzI1LjM5MTEg''@;'; put 'put ''MjQuODkwMyAyNC4wOTgxIDI0LjQ2OTMgMjIuOTI1NCAyMy44MDc4QzIyLjQ3NDQgMjMuNTY3MiAyMi4wNTM0IDIzLjI2NjUgMjEuNjYyNSAyMi45MDU3QzIwLjU4IDIxLjg1MzMgMjAuNTggMjAuNzQwNyAyMS42OTI2IDE5Ljc0ODRDMjIuODk1NCAxOC42NjU5IDI0LjM2ODggMTguMTU0NyAy''@;'; put 'put ''NS44NzIyIDE3LjczMzdDMjcuOTc3MSAxNy4xMzI0IDMwLjExMiAxNi44MzE3IDMyLjI3NyAxNi42ODEzQzMyLjQ1NzUgMTYuNjgxMyAzMi42Njc5IDE2Ljc0MTUgMzIuODE4MyAxNi41OTExQzM0LjM4MTkgMTYuNjIxMiAzNi4wMDU2IDE2LjYyMTIgMzcuNTk5MyAxNi42MjEyWiIgZmlsbD0i''@;'; put 'put ''I0UwRTBFMCIvPgo8cGF0aCBkPSJNMjAuODUwNyA0MS4zMDgyQzIyLjc3NTEgNDMuNzczOCAyNS41MTE1IDQ0LjY3NTkgMjguMzM4IDQ1LjI3NzNDMzMuOTMwOSA0Ni40ODAxIDM5LjUyMzggNDYuMzI5NyA0NC45NjYzIDQ0LjQwNTNDNDYuNjUwMiA0My44MDM5IDQ4LjIxMzggNDIuOTkyIDQ5''@;'; put 'put ''LjMyNjQgNDEuNDg4NkM0OS41MDY4IDQxLjI0OCA0OS41OTcgNDEuMzY4MyA0OS42ODcyIDQxLjU0ODdDNDkuODY3NyA0MS45Mzk2IDQ5Ljk1NzkgNDIuMzMwNSA0OS45NTc5IDQyLjc1MTVDNDkuOTU3OSA0NC4yMjQ5IDQ5Ljk1NzkgNDUuNzI4NCA0OS45NTc5IDQ3LjIwMThDNDkuOTU3OSA0''@;'; put 'put ''OC4xNjQgNDkuNTA2OCA0OC45MTU3IDQ4Ljg0NTMgNDkuNTc3MkM0Ny40NjIxIDUwLjk2MDQgNDUuNzE4MSA1MS43MTIyIDQzLjg4MzggNTIuMjgzNUM0MC4xODUzIDUzLjQyNjEgMzYuMzk2NiA1My42NjY3IDMyLjU3NzcgNTMuMzk2MUMyOS43MjEyIDUzLjE4NTYgMjYuOTU0OCA1Mi42NDQz''@;'; put 'put ''IDI0LjMzODcgNTEuNDcxNkMyMy4yMjYxIDUwLjk2MDQgMjIuMjAzOCA1MC4zNTkxIDIxLjM5MTkgNDkuNDI2OUMyMC43NjA1IDQ4LjcwNTIgMjAuNDI5NyA0Ny44OTM0IDIwLjQyOTcgNDYuOTMxMUMyMC40NTk4IDQ1LjU3OCAyMC40Mjk3IDQ0LjIyNDkgMjAuNDI5NyA0Mi44NzE4QzIwLjQy''@;'; put 'put ''OTcgNDIuMzMwNSAyMC41MTk5IDQxLjgxOTMgMjAuODUwNyA0MS4zMDgyWiIgZmlsbD0iIzhFQzYzRiIvPgo8cGF0aCBkPSJNMjAuODgwNyAzMi4wMTY3QzIyLjQ3NDQgMzQuMTUxNiAyNC42OTk2IDM1LjA1MzcgMjcuMDc1IDM1LjY4NTJDMzIuNzU4MiAzNy4xODg2IDM4LjQ0MTMgMzcuMTU4''@;'; put 'put ''NiA0NC4wNjQzIDM1LjQ3NDdDNDUuOTI4NiAzNC45MzM0IDQ3LjY3MjYgMzQuMTIxNiA0OS4wMjU4IDMyLjY0ODJDNDkuMjA2MiAzMi40Njc3IDQ5LjMyNjUgMzIuMDQ2OCA0OS41MzY5IDMyLjEwNjlDNDkuODM3NiAzMi4xOTcxIDQ5LjgzNzYgMzIuNjE4MSA0OS45Mjc4IDMyLjk0ODhDNTAu''@;'; put 'put ''MDQ4MSAzMy40NiA0OS45ODggMzMuOTcxMiA0OS45ODggMzQuNDgyNEM0OS45ODggMzUuNTA0NyA0OS45NTc5IDM2LjQ5NyA0OS45ODggMzcuNTE5NEM1MC4wNDgxIDM4Ljc4MjMgNDkuNTM2OSAzOS43NzQ2IDQ4LjYwNDggNDAuNTg2NUM0Ny4xOTE1IDQxLjg0OTQgNDUuNDc3NiA0Mi42MDEx''@;'; put 'put ''IDQzLjY0MzMgNDMuMDgyMkMzNy40NzkxIDQ0LjczNjEgMzEuMzQ0OSA0NC43MDYgMjUuMzAwOSA0Mi42MDExQzIzLjgyNzUgNDIuMDkgMjIuNDc0NCA0MS4zNjgzIDIxLjM5MTkgNDAuMTk1NkMyMC43MzA0IDM5LjQ3MzkgMjAuMzk5NyAzOC42MzIgMjAuMzk5NyAzNy42Mzk3QzIwLjQyOTcg''@;'; put 'put ''MzYuMzE2NiAyMC4zOTk3IDM0Ljk2MzUgMjAuMzk5NyAzMy42NDA0QzIwLjQyOTcgMzMuMDk5MiAyMC41MTk5IDMyLjU1NzkgMjAuODgwNyAzMi4wMTY3WiIgZmlsbD0iI0UwRTBFMCIvPgo8cGF0aCBkPSJNMjAuODIwNyAyMy4wODYxQzIxLjI3MTcgMjQuNDA5MSAyMi4zNTQyIDI1LjAxMDUg''@;'; put 'put ''MjMuNDk2OSAyNS41NTE3QzI1LjU0MTYgMjYuNTE0IDI3LjczNjYgMjYuOTY1IDI5LjkzMTcgMjcuMjM1N0MzNC4yOTE4IDI3Ljc3NjkgMzguNjUxOSAyNy43MTY4IDQyLjk1MTggMjYuODE0N0M0NC42OTU4IDI2LjQ1MzkgNDYuMzc5NyAyNS45NzI3IDQ3LjkxMzIgMjUuMDEwNUM0OC43ODUz''@;'; put 'put ''IDI0LjQ2OTMgNDkuMjM2MyAyMy45NTgxIDQ5LjUzNyAyMy4xMTYxQzQ5LjgzNzcgMjMuNTM3MSA0OS45Mjc5IDIzLjk4ODIgNDkuOTI3OSAyNC40MzkyQzQ5LjkyNzkgMjUuOTQyNyA0OS45NTggMjcuNDE2MSA0OS45Mjc5IDI4LjkxOTVDNDkuODk3OCAzMC4xODI1IDQ5LjE3NjIgMzEuMDg0''@;'; put 'put ''NSA0OC4yNDQgMzEuODM2M0M0Ni41IDMzLjIxOTUgNDQuNDU1MyAzMy45NDExIDQyLjMyMDMgMzQuNDIyM0MzNi42NjczIDM1LjY1NTEgMzEuMDc0NCAzNS41NjQ5IDI1LjU3MTcgMzMuNzAwNkMyNC4xMjgzIDMzLjIxOTUgMjIuNzQ1MSAzMi41Mjc5IDIxLjYzMjYgMzEuNDQ1NEMyMC43OTA2''@;'; put 'put ''IDMwLjYzMzUgMjAuMzM5NiAyOS43MDE0IDIwLjM2OTYgMjguNDk4NkMyMC4zOTk3IDI3LjIwNTYgMjAuMzY5NiAyNS45MTI2IDIwLjM2OTYgMjQuNjE5NkMyMC40Mjk4IDI0LjA0ODMgMjAuNTIgMjMuNTY3MiAyMC44MjA3IDIzLjA4NjFaIiBmaWxsPSIjOEVDNjNGIi8+CjxwYXRoIGQ9Ik01''@;'; put 'put ''NS4zNDAzIDYzLjQzOTNDNjAuMjQxNyA2My43MDk5IDYyLjg1NzcgNTcuNjk2IDU5LjMwOTUgNTQuMjk4MUM1NS41ODA5IDUwLjcxOTkgNDkuNDQ2NyA1NC4wNTc2IDUwLjQwOSA1OS4xMDkzQzI4LjI0NzggNzMuMjQxOSAtMC4yNTgwMzQgNTIuMTAzMSA3Ljg2MDcxIDI2LjQyMzhMMi4zODgw''@;'; put 'put ''OCAyMi43NTUzQy05LjkxMDMzIDU1LjQ0MDggMjcuOTQ3MSA4My4wNzQ2IDU1LjM0MDMgNjMuNDM5M1pNNTMuNzc2NyA1Ni4zNzI5QzU2LjA2MiA1My45OTc0IDU5LjcwMDQgNTcuMzA1MSA1Ny41NjU1IDU5LjgwMDlDNTUuMzEwMyA2Mi40MTY5IDUxLjM0MTEgNTguODk4OCA1My43NzY3IDU2''@;'; put 'put ''LjM3MjlaIiBmaWxsPSIjRTBFMEUwIi8+CjxwYXRoIGQ9Ik0xMC42MjcyIDE1LjI2ODFDMTQuMTQ1MyAxOC42MzU4IDE5Ljk0ODcgMTUuODY5NCAxOS42MTc5IDExLjA1ODNDNDEuNzQ5IC0zLjE5NDYxIDcwLjQwNTIgMTcuOTE0MiA2Mi4yODY1IDQzLjY4MzZMNjcuNzU5MSA0Ny4zNTIxQzc5''@;'; put 'put ''LjY5NjcgMTUuNTk4OCA0My40NjMgLTEyLjk5NzIgMTUuNDM4MyA2LjIxNzE1QzEwLjE3NjEgNS4xMzQ2NSA2Ljc3ODI3IDExLjU2OTUgMTAuNjI3MiAxNS4yNjgxWk0xNi4xNTk5IDEzLjE5MzNDMTMuODE0NSAxNS42Mjg5IDEwLjExNiAxMi4wODA3IDEyLjQ2MTQgOS42NDUwN0MxNC44MDY4''@;'; put 'put ''IDcuMjA5NDQgMTguNTA1NCAxMC43NTc2IDE2LjE1OTkgMTMuMTkzM1oiIGZpbGw9IiM4RUM2M0YiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMDFfOCI+CjxyZWN0IHdpZHRoPSI3MCIgaGVpZ2h0PSI3MCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8''@;'; put 'put ''L3N2Zz4K'';'; put 'run;'; put '%sasjsout(SVG64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=favicon-ico; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''iVBORw0KGgoAAAANSUhEUgAAApgAAAJ6CAYAAACMvTJAAAAMFGlDQ1BJQ0MgUHJvZmlsZQAASImVVwdUk8kWnr+kEBJaIAJSQm+CFOnSe0c62AhJgFAiJAQVO7Ko4FpQEQFR0RUQRdcCyKIidmUR7P1hQWVlXSzYUHmTArq+dt49Z/75cufeO9+d3JkzA4CiNSsnJwtVAiCbnyeICvBmJiQmMUmP''@;'; put 'put ''AAY0AB0YAiUWW5jjFRkZCqCM9X+XdzcAIu6vWopj/ev4fxVlDlfIBgCJhDiFI2RnQ3wYAFydnSPIA4DQBfUGc/NyxHgIYlUBJAgAERfjNClWF+MUKZ4ksYmJ8oHYEwAylcUSpAGgIObNzGenwTgKYo7WfA6PD3E1xO7sdBYH4nsQT8rOngOxIhli05Tv4qT9LWbKeEwWK20cS3ORCNmXJ8zJYs3/''@;'; put 'put ''P5fjf0t2lmhsDn3YqOmCwChxznDd6jPnhIgxFeJ2fkp4BMQqEJ/ncST2YnwnXRQYK7MfZAt94JoBBgAo4LB8QyDWgpghyoz1kmFblkDiC+3RcF5eUIwMpwjmRMnio/n8rPBQWZyV6dygMVzDFfpFj9mk8vyDIIaVhh4uSI+Jl/JET+fz4sIhVoC4R5gZHSLzfVCQ7hM+ZiMQRYk5G0L8NlXgHyW1''@;'; put 'put ''wdSzhWN5YVZslmQuWAuYZ156TKDUF0vgChNCxzhwuL5+Ug4Yh8uPlXHDYHV5R8l8i3OyImX2WA03KyBKus7YAWF+9JjvlTxYYNJ1wB5lsIIjZXO9y8mLjJFyw1EQCnyAL2ACEWwpYA7IALzuwZZB+Es64g9YQADSABdYyjRjHvGSET78RoMC8CdEXCAc9/OWjHJBPtR/GddKv5YgVTKaL/HIBE8h''@;'; put 'put ''zsY1cXfcFQ+FX0/YbHEn3HnMj6k4NivRj+hLDCT6E83GebAh6yzYBID3b3QhsOfC7MRc+GM5fItHeEroJTwiXCf0EW6DOPBEEkVmNZtXKPiBOROEgT4YzV+WXcr32eHGkLU97o27Qf6QO87ANYElPgVm4oV7wNzsofZ7hqJxbt/W8sf5xKy/z0emVzBXsJexSBn/Z3zGrX6M4vPdGnFgH/KjJbYS''@;'; put 'put ''O4Sdw05iF7B2rAUwsRNYK9aFHRPj8Up4IqmEsdmiJNwyYRzemI11o/WA9ecf5mbJ5hevlzCPOy9PvBl85uTMF/DS0vOYXvA05jKD+GyrSUxbaxsnAMRnu/ToeMOQnNkI4+I3XW4HAM4lUJn2TccyAODoUwDo777pDF7Dcl8HwLEetkiQL9WJj2NAABSgCHeFBtABBsAU5mMLHIAr8AR+IBhEgBiQ''@;'; put 'put ''CGbBFU8H2ZDzXLAQLAPFoBSsA5tAJdgGdoJ6sA8cBC2gHZwEZ8El0AOug7uwLvrBCzAE3oERBEFICA2hIxqILmKEWCC2iBPijvghoUgUkogkI2kIHxEhC5HlSClShlQiO5AG5FfkKHISuYD0IreRh8gA8hr5hGIoFVVFtVFjdDLqhHqhIWgMOhNNQ3PRArQIXYNWoLXoXrQZPYleQq+jfegLdBgD''@;'; put 'put ''mDzGwPQwS8wJ88EisCQsFRNgi7ESrByrxZqwNvg/X8X6sEHsI07E6TgTt4S1GYjH4mw8F1+Mr8Yr8Xq8GT+NX8Uf4kP4VwKNoEWwILgQgggJhDTCXEIxoZywm3CEcAbum37COyKRyCCaEB3hvkwkZhAXEFcTtxL3EzuIvcTHxGESiaRBsiC5kSJILFIeqZi0hbSXdIJ0hdRP+kCWJ+uSbcn+5CQy''@;'; put 'put ''n1xILifvIR8nXyE/I4/IKckZybnIRchx5ObLrZXbJdcmd1muX26EokwxobhRYigZlGWUCkoT5QzlHuWNvLy8vryz/DR5nvxS+Qr5A/Ln5R/Kf6SqUM2pPtQZVBF1DbWO2kG9TX1Do9GMaZ60JFoebQ2tgXaK9oD2QYGuYKUQpMBRWKJQpdCscEXhpaKcopGil+IsxQLFcsVDipcVB5XklIyVfJRY''@;'; put 'put ''SouVqpSOKt1UGlamK9soRyhnK69W3qN8Qfm5CknFWMVPhaNSpLJT5ZTKYzpGN6D70Nn05fRd9DP0flWiqolqkGqGaqnqPtVu1SE1FbUpanFq89Sq1I6p9TEwhjEjiJHFWMs4yLjB+DRBe4LXBO6EVROaJlyZ8F59orqnOle9RH2/+nX1TxpMDT+NTI31Gi0a9zVxTXPNaZpzNWs0z2gOTlSd6DqR''@;'; put 'put ''PbFk4sGJd7RQLXOtKK0FWju1urSGtXW0A7RztLdon9Ie1GHoeOpk6GzUOa4zoEvXddfl6W7UPaH7B1ON6cXMYlYwTzOH9LT0AvVEejv0uvVG9E30Y/UL9ffr3zegGDgZpBpsNOg0GDLUNQwzXGjYaHjHSM7IySjdaLPROaP3xibG8cYrjFuMn5uomwSZFJg0mtwzpZl6mOaa1ppeMyOaOZllmm01''@;'; put 'put ''6zFHze3N082rzC9boBYOFjyLrRa9kwiTnCfxJ9VOumlJtfSyzLdstHxoxbAKtSq0arF6OdlwctLk9ZPPTf5qbW+dZb3L+q6Nik2wTaFNm81rW3Nbtm2V7TU7mp2/3RK7VrtXUyymcKfUTLllT7cPs19h32n/xcHRQeDQ5DDgaOiY7FjteNNJ1SnSabXTeWeCs7fzEud2548uDi55Lgdd/nK1dM10''@;'; put 'put ''3eP6fKrJVO7UXVMfu+m7sdx2uPW5M92T3be793noebA8aj0eeRp4cjx3ez7zMvPK8Nrr9dLb2lvgfcT7vY+LzyKfDl/MN8C3xLfbT8Uv1q/S74G/vn+af6P/UIB9wIKAjkBCYEjg+sCbQdpB7KCGoKFgx+BFwadDqCHRIZUhj0LNQwWhbWFoWHDYhrB74Ubh/PCWCBARFLEh4n6kSWRu5G/TiNMi''@;'; put 'put ''p1VNexplE7Uw6lw0PXp29J7odzHeMWtj7saaxopiO+MU42bENcS9j/eNL4vvS5icsCjhUqJmIi+xNYmUFJe0O2l4ut/0TdP7Z9jPKJ5xY6bJzHkzL8zSnJU169hsxdms2YeSCcnxyXuSP7MiWLWs4ZSglOqUIbYPezP7BceTs5EzwHXjlnGfpbqllqU+T3NL25A2kO6RXp4+yPPhVfJeZQRmbMt4''@;'; put 'put ''nxmRWZc5mhWftT+bnJ2cfZSvws/kn56jM2fenN4ci5zinL5cl9xNuUOCEMFuISKcKWzNU4XXnC6Rqegn0cN89/yq/A9z4+Yemqc8jz+va775/FXznxX4F/yyAF/AXtC5UG/hsoUPF3kt2rEYWZyyuHOJwZKiJf1LA5bWL6Msy1z2e6F1YVnh2+Xxy9uKtIuWFj3+KeCnxmKFYkHxzRWuK7atxFfy''@;'; put 'put ''Vnavslu1ZdXXEk7JxVLr0vLSz6vZqy/+bPNzxc+ja1LXdK91WFuzjriOv+7Geo/19WXKZQVljzeEbWjeyNxYsvHtptmbLpRPKd+2mbJZtLmvIrSidYvhlnVbPlemV16v8q7aX61Vvar6/VbO1is1njVN27S3lW77tJ23/daOgB3Ntca15TuJO/N3Pt0Vt+vcL06/NOzW3F26+0sdv66vPqr+dINj''@;'; put 'put ''Q8MerT1rG9FGUePA3hl7e/b57mttsmzasZ+xv/QAOCA68Mevyb/eOBhysPOQ06Gmw0aHq4/Qj5Q0I83zm4da0lv6WhNbe48GH+1sc2078pvVb3Xteu1Vx9SOrT1OOV50fPREwYnhjpyOwZNpJx93zu68eyrh1LXT0053nwk5c/6s/9lT57zOnTjvdr79gsuFoxedLrZccrjU3GXfdeR3+9+PdDt0''@;'; put 'put ''N192vNza49zT1ju19/gVjysnr/pePXst6Nql6+HXe2/E3rh1c8bNvlucW89vZ91+dSf/zsjdpfcI90ruK90vf6D1oPYfZv/Y3+fQd+yh78OuR9GP7j5mP37xRPjkc3/RU9rT8me6zxqe2z5vH/Af6Plj+h/9L3JejAwW/6n8Z/VL05eH//L8q2soYaj/leDV6OvVbzTe1L2d8rZzOHL4wbvsdyPv''@;'; put 'put ''Sz5ofKj/6PTx3Kf4T89G5n4mfa74Yval7WvI13uj2aOjOSwBS3IVwGBDU1MBeF0HAC0R3h16AKAoSN9eEkGk70UJAv8JS99nEnEAoM4TgNilAITCO0oNbEYQU2EvvnrHeALUzm68yUSYamcrjUWFLxjCh9HRN9oAkNoA+CIYHR3ZOjr6ZRckexuAjlzpm08sRHi/324mRt2XRobAD/JPCotuA2JA''@;'; put 'put ''n4YAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAGdaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjQuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8y''@;'; put 'put ''Mi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjY2NDwvZXhpZjpQaXhlbFhEaW1lbnNp''@;'; put 'put ''b24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj42MzQ8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KSHKtHgAAABxpRE9UAAAAAgAAAAAAAAE9AAAAKAAAAT0AAAE9AACKlRxL/UIAAEAASURB''@;'; put 'put ''VHgB7L0HgNxmeqb5FVChIzuRTTZzzlESRUVSFCUqzIwmjyZnx71zWO96b89h7b31ede+27O9DjOe8eSo0USlURxpGESKYhBzzqFJdrNzqADg3g/FoppUk6zuQlWjUC+kZmXgx/OjUC++GFq25v2OcCEBEiABEiABEiABEiABjwiEKDA9IsnVkAAJkAAJkAAJkAAJuAQoMHkgkAAJkAAJkAAJkAAJ''@;'; put 'put ''eEqAAtNTnFwZCZAACZAACZAACZAABSaPARIgARIgARIgARIgAU8JUGB6ipMrIwESIAESIAESIAESoMDkMUACJEACJEACJEACJOApAQpMT3FyZSRAAiRAAiRAAiRAAhSYPAZIgARIgARIgARIgAQ8JUCB6SlOrowESIAESIAESIAESIACk8cACZAACZAACZAACZCApwQoMD3FyZWRAAmQAAmQAAmQ''@;'; put 'put ''AAlQYPIYIAESIAESIAESIAES8JQABaanOLkyEiABEiABEiABEiABCkweAyRAAiRAAiRAAiRAAp4SoMD0FCdXRgIkQAIkQAIkQAIkQIHJY4AESIAESIAESIAESMBTAhSYnuLkykiABEiABEiABEiABCgweQyQAAmQAAmQAAmQAAl4SoAC01OcXBkJkAAJkAAJkAAJkAAFJo8BEiABEiABEiABEiAB''@;'; put 'put ''TwlQYHqKkysjARIgARIgARIgARKgwOQxQAIkQAIkQAIkQAIk4CkBCkxPcXJlJEACJEACJEACJEACFJg8BkiABAJBwHEcMc2QmGFbwtGQhCM27ockEnMkHBOJRHGL52OVtlRW2VJW5UhZpT7W53G/PCTRCkdC+O+GC162EiL9vY4k4yGJ9+OvRx+HpKcTt90hSeA5Ky6SSuI+3qvvTyUMsZL4DJ6z''@;'; put 'put ''UrqFm2znhoPgiyRAAiTgbwIUmP6eH46OBEgAOiwCsRgpE4mVO64grKjCfQjDimo8rtDnRaJ4LVrmuILSjAhEo4hpiBhh/BkG/iDp8E9IHLHtNFbbdtw70KaiAhUvZbdgTFgdVog7+r/7l34yvQUR27Lxh1tszMF2kokQBCfEJv5SEKb9EKAJiNI4/vp7DOntdiBUcb/r8nN9+j5DUimIXt0AFxIg''@;'; put 'put ''ARIoIgIUmEU0WRwqCQSVQCjkSLlaFGFBrKh1ZFSDI1U16fsV+jwEZQRWyDCskZGwIWYEMi6juSAKIeH0H1ckqk7URUXdFb145U76tYL9e3mMeuPeNdJPGHqL/43LAlXHo0N0LAeC0oYYtcVSyyj+etU62mVId4dIT7uBPzwHS2lPZ0iSeN1x0uvUdXAhARIgAb8QoMD0y0xwHCQQeAJqXRRYHW2p''@;'; put 'put ''qheprrelpt6RStxW1YorLqNwU0diEJBwdeuiVkUHwtG1NEIwXjY8ptVYUHmltSesrek7KkYzQlRFqA2LZjKekr5uQ/p6HAhPU7pbRbouhaSzNS1A1U2fhBv+pu7+oDLkfpEACYw4AQrMEZ8CDoAEgkfAhFtahaRaIkc12lI7xpHqBkuqa+DOhkUyVhZ24yPThkeISFju1PLoCsmRsjYWyzRcNlhe''@;'; put 'put ''EZ5m2hKq2Ky4Lf39DuJARbph6Wxvgei8gFv86WMVpY59eQXFsr8cJwmQQFESoMAsymnjoEnAHwTUwhhBvGNlLayREJH14yAqxzpSOxqJNDVIoIFFUt3Zqh4zlkiKyDzOnWpHuN3VABxCgpMbD4r7qbiFWE+Izg5HOi4Y0nbelLaLAvEJiydc7bZF0ZnHWeGqSaAkCVBgluS0c6dJYHgEDI2VRGJN''@;'; put 'put ''TaMjDeNtaWiCoMT9asRLRitMJNVArMAsqRZJ5LjAJElz5PBIe/wpFZwqPDE/IVg89b4FV3tfry29bQ7EpiGtZwy51GxAgGrSEWM7PZ4Bro4ESo4ABWbJTTl3mASyJ2AY6tqGmISQHD0RgnICXN6Imyyv1jJABvQjxCSECvQkxWT2WP3zTgjO8GXRqZbPVMKCGx1WTrjW284ZcvEUROc5uNcvocQS''@;'; put 'put ''Xev+mTeOhASKgAAFZhFMEodIAoUiYJrpDO6GCbY0TlFBaSMZR7O7w9AfaTe3pdnZapmkcbJQ01K47ailE4LTtXSmIxtgzbSksw1CExbOC8dD0noWVk4kFdmWW6ipcGPjlkiABIqKAAVmUU0XB0sC3hIIwUJZhfjJMRMdaZzqyGgIylGjYaGshB/VdXUjfk/FJF3d3oIvprUNtHIiL70PgrPrkrgu''@;'; put 'put ''9fPHDWk5bbgC1EHNTy4kQAIkkCFAgZkhwVsSKAkC6cLkGj85biqslPirHWMj49uE5QqSEiIhpVXIr9QDKgko3MmhEMBxEtaC9e41iNbptKTjvMgFuNObj4Wk5YyJgvHIVqeFeyhU+V4SCBwBCszATSl3iASuJqBWyuo6WCinODJ+puXGUlbVaXccLVmD0jZaIogWyquh8VH2BNTCibR1vUDRxCHN''@;'; put 'put ''VG89G5LmI6ach0u9HQlEzFLPHiffSQJBIUCBGZSZ5H6QwAACZlhLBjkybrolTbNsqUctysoaFKeE21sLdWscJWMoBwDjXW8IZGI4VXAiaSgO6+YlZKU3Q2g2HzZh3Uz3aUekpzfb41pIgAR8S4AC07dTw4GRwNAIRNFGsX6CJRNm2tI0A7UoUT6orNx0M73VskQr5dB48t0eEBhg3Uyh/WUnug2p''@;'; put 'put ''G/2Mis0T6l6H0GSrSw9AcxUk4D8CFJj+mxOOiASyIqBFzmNlIg0oHzRxliXjYamsGYNWi1HUMITrW3ta00qZFUq+qRAEoCU1O91AAXgLsb49bbacg8g8cwCudIhOt8sQxWYhZoLbIIGCEKDALAhmboQEvCNgRhwZo5bKOY4rLGsaL4tKTdDR6uZMrvAONteUNwIG3OgmxKbmlHWh2PuF4yKnDkJs''@;'; put 'put ''InaztwebpdjMG3uumAQKQYACsxCUuQ0SyJGAgfqUdYipnDQbwnK2dtBBi8YyJOlQVOZIlh/3A4EQxKYmCmlocNclWDaPGXJ6ryHnjpuS6NMRMmbTD/PEMZDAUAhQYA6FFt9LAgUkoIXNq2odCEpLpsyH1XKSjXaMSNWl+7uAs8BNFZpAxrJpIcRDOwqdOWjIyX3oKoRC71aCQrPQ88HtkcBwCVBg''@;'; put 'put ''DpccP0cCeSDgxlWWizRNs2TyAhtlhWypqjHh9XYQUwnzDssJ5YE6V+lLAtCSrtiEZTMZt6UFpY9O7Ydlc78p7RCejkWx6ct546BI4DIBCkweCiTgAwLqAteC51MX2jJhnpYVciQcNhBTCWnpNvr2wSA5BBIYKQLQkvp9EPzf3+Wg7JHI8V2mnD1sSH+vCk2KzZGaGm6XBK5HgALzemT4PAnkmYBa''@;'; put 'put ''K8sqHNSpdGTGopQ0ThOpqEIcGuIqLSbr5Jk+V1+sBNxe6UgO0koJHS0O3OchObHHlEvokW7Rqlms08pxB5AABWYAJ5W75G8C2lmnZowjUxdZMnW+JbVjUboF5VtYq9Lf88bR+Y+Aljwy4UKP99pyHiWPju40ELMZln7NQqdV038TxhGVFAEKzJKabu7sSBIIwQ3eiESdOStSMnEmrJfV6SxwWitH''@;'; put 'put ''cla47UAQ0ILul62a7RccOYEMdHWht51nT/RAzC93oigJUGAW5bRx0MVCwE3agRt84hxbZt1iSeNkR6IxxlYWy/xxnMVHIGPV7O9x5PiekBzZhtqap/RijnGaxTebHHExE6DALObZ49j9S0BLDNU4Mg1u8BnLbNSwRH5CyJBkEgGWLITu33njyAJDQGM1IxFD4nFLLsB9fnir6RZyj/fCeR6i2AzM''@;'; put 'put ''RHNHfEuAAtO3U8OBFSMBrV1ZN9aWGbfYMm2hJdUNJmIrbbG1xBAXEiCBwhOAlowgA11LfV06J3L4LVOOvRWSng6kpDNOs/DzwS2WDAEKzJKZau5oPglo4s6YyYivvM2SSXNtZIObkoSwZImhfFLnuklgaARc9znEZmeL5cZoHt5uSPsFjdOkRXNoJPluErg5AQrMmzPiO0jgugS0fuW4GZbMXY4W''@;'; put 'put ''jkjciZWjtV0S9VNYEP26zPgCCYw0AW1NqVbNnk5LTqJT0MHNprSgU5BjU2iO9Nxw+8EhQIEZnLnknhSQgAlhOXGOJXPusKVpqiXhSJjxlQXkz02RgCcEEKcZRZxmX68lZw+FZP8bYTl/3EAtWgpNT/hyJSVNgAKzpKefOz9UAmbYlsnoCz5vhSVjpkBYmhSWQ2XI95OA7whonGYUYS1ICDp7JCQH''@;'; put 'put ''NoflDLoEUWj6bqY4oCIiQIFZRJPFoY4cgbSwtGXuClvGTnXcLFRN3mFG+MjNCbdMAp4TUKEZMSWVTKEdZVj2bwrJ6QNI1KNF03PUXGHwCVBgBn+OuYc5EDBNWyaiN/j8OwcIS42x5EICJBBcApeFpjZBaD4Wkn2vG3IKQpMWzeBOOffMewIUmN4z5RoDQECTdybOtGT+PbaMmwaLpbZypLAMwMxy''@;'; put 'put ''F0hgCAQgNMOwaFpWSs4dMmXvJkPOHqbQHAJBvrWECVBglvDkc9ffSUDbOTZNsWXePSlkhdtu8k6KxdHfCYrPkEApEbgsNNV1fvqQIfs3huUckoHYHaiUDgLu61AJUGAOlRjfH0gCBupY1jfZsuDelEyeq+0cEfBPYRnIueZOkcCwCVx2nSeQDHTqQEj2rtfyRrBosrzRsJHyg8ElQIEZ3LnlnmVB''@;'; put 'put ''QDvGVY+GsLwrJdOWoEB6BepYJtjOMQt0fAsJlC4BnDeiyDrv67FRsF1kz+th6WDB9tI9HrjngxKgwBwUC58MPgFHyqscmYNyQ3NQJL26lgXSgz/n3EMS8JjA5Tqa3SjYfuhNuM5RR7OnHeqTLSg9Bs3VFSMBCsxinDWOOScCkYgjU5elZCEywxuaDLZ0zIkmP0wCJJDpDNR20ZZ9KG10ZFtY+ntD''@;'; put 'put ''bjkz0iGBUiVAgVmqM1+C+62Z4ePR1nHRKiTyTLPdbo52yilBEtxlEiCBfBAw0ILSRAvKCydt2bXOlFP7kIGeUosmFxIoPQIUmKU35yW3x6GQIzWNtixamZRpC1F2BLFTKY2z5EICJEACeSBgov2kbdtyen9Idr8Wlovoc85EoDyA5ip9TYAC09fTw8HlQsBxHKmoEpm9IiXz7rCkahQTeHLhyc+S''@;'; put 'put ''AAkMgQAMl9oVqK/PkiNbDdm70ZSuNgMroEVzCBT51iImQIFZxJPHoV+fgBl2ZPI8SxbfZ8no8Yak0JHDsegOvz4xvkICJJAXApcTgdouWrJnvSFHtkckmaDIzAtrrtRXBCgwfTUdHEyuBNQdXj/OlsWrbZk83xIjZCAGiq0dc+XKz5MACeRGQOMz9e/sEZGdvzJZqD03nPx0ERCgwCyCSeIQb05A''@;'; put 'put ''3eFllSJz1R1+J93hNyfGd5AACYwEAY0B10Lth+E2370+LN1tas2kRXMk5oLbzC8BCsz88uXaC0DAzQ5HW8clq1Mybgrd4QVAzk2QAAnkQgChmFHEZ7Zd0GxzuM13hMVKUmTmgpSf9R8BCkz/zQlHlDUBR6rqHJQdSsmspbaYUbjDk3SHZ42PbyQBEhhRAuoy125iJw/Abf5KBG0nQ+I4FJojOinc''@;'; put 'put ''uGcEKDA9Q8kVFZKAGbZl6mJYLZHEUz/WcF1OwhyeQk4Bt0UCJOARgXAM2eZdlux93ZR9aDuZ6KPI9AgtVzOCBCgwRxA+Nz10Anq1XzPGkqX3Q2AugrUSotJmdvjQQfITJEACviKg3YDCpoHkH1t2vBRmEpCvZoeDGQ4BCszhUONnRoSAiRaPs27RTjwpqalnTcsRmQRulARIIK8EwijSHo/bcvAN''@;'; put 'put ''Q/agG1BPl8GWk3klzpXniwAFZr7Icr2eEXBLD421ZemDFmpbwmhpO7RaekaXKyIBEvAdgcu1M5vRcnL7iyhpdNTEOY9uc9/NEwd0QwIUmDfEwxe9IKACMYzC52ZYxIg6KMiRPlGqUEyhT6+N7Ekrpd7ud55ATbx/1rIUYi1TSOgJSxLlPbiQAAmQQCkQ0JaTyYQjBzZnrJmaFPTO82QpsOA+Fh8B''@;'; put 'put ''CszimzMfj9iRylr0/R5tS22j9v9Glne1LVG0aywrg7iEiztk4A/Fz1VLhhBCaaHDTjIBl1CfSH9XSLo6DOlqEem4COGJ1xfcjVjL+bBYYq/ZicfHU8+hkQAJ5IfAZWvmeVgzt72I2Myj6GtOa2Z+WHOtnhKgwPQUZ+mtLFpmy+iJtjTNsGTsFJFRDSh4XoVg9bD23H3bne0meOMf93YAJvdaXPUm''@;'; put 'put ''7hiGxhrph0SSKQslh9DLN3a5E8+1HxywDt4lgaESuMoIdPmBeyzqiq7cuclaBx7PKPR/ZRn4/JUneYcEciOg1sxEwpYDGw3ZtT4i8d5sD9TctstPk8BwCVBgDpdcCX/OMEUap6RkynxbJs52pLpeRAPTNZs7pRndcH3nurg60/0n1zXx80En4P7MwsqjC65R8A9a8qlKTBvK3edV/zn6HyIsbJjG''@;'; put 'put ''bbQPtS0cs3jBsWEtx3Fr41at5LbWIbzJIaxGeC3w795ie2qZN3S7JuqxYhAGLrBC+J5oOEh6fFilrlPH4W7THVD6q6KPb7I9dyf4DwngGIvgXHv2iCNbnzel5TSOYRy3XEjAjwQoMP04Kz4dU7TclikLLZl9K6yW421YFxETicLmdF37dMICMqy0QIN4U8GoVu6McIQosyAWk8i41RjeOGoHpuIh''@;'; put 'put ''3DrS3yuoJYjQix48j+cSsPYk+/FcHJ9BSEYqhYuhBGJ/ITjVUu4gBsO9LsI67SzCfF2LOwSkKkYznB6bhoBEEGdsRnDBFcNfFBb4Mlj08RetwB/CRGIVCBep1Pvpx5EY4pNjKhqwDl0PVuxqTR2PCmGNDdGteHDRll4T/w0CAW032d9tyVu/NhGfaeJYxpeCCwn4jAAFps8mxI/DiZZZKA9ky5wV''@;'; put 'put ''ttShqLmNHzsLFqCbWXn8uC8ck38JuJ5qWGhMtQhqhxNXQDoQhRCREId9PRCOiNPt6dA/Q3o7Q9Lbhdjd7hAEZVpAppAwZkNspmMt/Luvhlo8kfgWU6FZrqJTpHwUYpjxV1GTvtX7KkzLIEo1VCQMAeooJFcEqwUWd9L/+3dHObK8EdDviH5XTuwTWDPD0n4RIhPHAxcS8AsBCky/zIQPx6Fuv2mL''@;'; put 'put ''LVm80paG8WrtUdciz2A+nKqiGlLGZayu5BBEU0ZIxvtTEodY7IFw7LhgSMclke4WU7rbVVymrZBqqfS7ePRqMtRiG47ZUo4kuSokz2kC3Sgk0FXX6WMbVRVgES2DyID1U5lk3P9q7aTL3atZ8P96IugC1H7Rkm0vmHJyH3qaozIHFxLwAwEKTD/Mgu/G4Ej9OFtueTAlk7TuJMZnJyksfTdNRTCg''@;'; put 'put ''a8WkKp8UEhXUha2WyI6WkLRdCEknqgZ0tqhVEglecYMC6SZzayL+s0ItnhCdtWNQsWEc/hosiE9YPKu1aoOJUAKITjgaUrgwFFg7+Q2+CdQiflljfh3EU+zdZMquX6HtJC7IWM6oiCc0IEOnwAzIRHq1GyHDlnl32LL4viR+wMKIacsiIM2rjXM9RU/AFZSXW95p/VONdezvtaX7kiFtEJGtZwxp''@;'; put 'put ''P49yVK1wa+NH0GK5FQ/nPO1uV+tmLRoT1EN06m3NaJEKiM4o3OyaAOVgTjR2VWt/UXR6iH+kV4UvXxSxmWeQAPTmLw0kAJm4UKM1c6SnpZS3T4FZyrM/YN/VvlGF2K/lj6ZkxmK1euAZjfHiQgI3IKA/X24smFuWynETbrphheyAiGyBmLx0FsKyGS7ubtNNqLnBqvhSPgjAYhxDfGdVHcJcmhxp''@;'; put 'put ''QEmxBngnqhs07lNj+C7HVKuVk4IzHzNQ8HVqAlBvpy1bXzLk2A4YCRCXzIUERoIABeZIUPfbNmFpapxky13vs6RhgiZL0Grptynyy3jcn6rLFkoNntQMbo2RbD0bkgsnDdwidhLxk5rRzcWfBExkv1fUWq6Fc8zkdEUIbYxQVmWIaaqrFRZOCk5/Tl6WozLwHdXv5wG4zHfAZd6L5Di6zLOEx7d5''@;'; put 'put ''RoAC0zOUxbkidWNORj3LOx9LIYsVLkvEx3EhgYEEtCyQCg+9TSEWt6fTkfZzITl33ICoRBzlRRMlgSgoBzIrpvuamF4Jt7paOMdMsWTMZEfqxtjIXtc5h4XTrRnKGM5imlN3rJjXjMt8y7Ome/FHl3nRzWJRD5gCs6inL7fBa5b4zFtTcsejlphRLe9Cl3huRIPxaVcqagZzGDFc+K+/N+VaJZsh''@;'; put 'put ''KM8fxw/VGS0PRItIMGb7nXuhFk51qY+BV6NpOiycuK2qD0GspJOG1LqpyUNcioOAusy72y2UMorI8d3aGY0Xg8Uxc8U/SgrM4p/DYe2BistZt1ly57tR90UD/xlvOSyOQfmQ/uRkYiltCAi1UraeCsmZo6Y0Hwu55YLQvZNLCRKIlaeThZpm2DJuakrqmxC/WYEsdZg+U3pQMHbT90eFusy1g9Tu''@;'; put 'put ''9cgyfzWM2rIUmb6ftAAMkAIzAJM41F3IWC7veg9+HLR+HmKuuJQegbSoRNwdalFqUldXqy0X4fI+fcB04ym722mlLL2j4sZ7rO0xR9U7Mg6WzfGzYN2cYKM4PDoQIYQilaTYvDG9EX4VhoQIkvGO77Vly7Nh6URlB1TuH+FBcfNBJkCBGeTZHWTfNOZyygJb7v1gUgwUaKblchBIAX7KFZUaUwn3''@;'; put 'put ''t4rKbojKc8cMOX3QkIsn0vXzArz73DVPCaTrcI6basnEOY6MRfxmZQ36sFNsekrZ65VpYfbWs7Zsetp0Q14c9jL3GjHXd5kABWYpHQoQl2MnOXL/J+MoXaLB+7RclsL0uzaKyzGV6v7uaHPkAuIpT+6FqDxJUVkKx0Ah9rGyxpax0yyZNEBsapKQRTd6IfAPaRtmxEAdWlveRPefI1vDaP9LS+aQ''@;'; put 'put ''APLNWRGgwMwKU/G/SZM1RiFTdM2nU1LXxGzx4p/Rm++BZgebl+tTakzlRZQROr43JM2Iq+zthOLkQgJ5IqDF3sfPdCA2kzJ6CiydVZowph3BkCCUp21ytUMjoDHX2jJr16uGvPVahMk/Q8PHd2dBgAIzC0hBeEsk4sg9H0rI9KUG61wGYUKvsw9qhwjBRWmERRL9trSeFjm535BT6FHc2UpReR1s''@;'; put 'put ''fDpPBDQkR/unT5pny+R5joxusiVcpt4TaBvNRs/TdrnaLAnghBFBlvnhbSJvPIMLz27GXWdJjm/LggAFZhaQiv0tIdOWBXdZcvu7UMeQrR+LfToHHX/GWmkjYauzzZYz+005tgexVqdZlmRQYHyy4ARMXOSOmaB1d5Myaa4j1Sh9pNnNllo1qTQLPh8DNxhB7/rmo7Zs+ElE2tHSFZepA1/mfRIY''@;'; put 'put ''FgEKzGFhK6IPwYIwZoIlD34uhStVZowX0czddKjuzwAyQzVZK9HjyPlTgjp3ppsF3oc6lVxIwK8EyqscmTgrJVMWatwm2lmWw6qJJHRaNUduxsJI/ulssWT9T8Ny/miYon/kpiIwW6bADMxUDr4jkZgtqz+eRJYnyojQejk4pCJ7VqWjgSB9/QXoanfkNKyVR3cY0oI2jbZFYVlk01nSwzVwAVyH''@;'; put 'put ''UkfTITQnzUvJqAaEd+CiyUL3IFo1C39o6MVqsldkMzr/HN1hMvmn8FMQqC1SYAZqOq/eGa13Oef2FHqMj6xr3LW0wRWmrQa1OPOVnrj4BdGOIDZu1bXLgKyr5+/aR2k3eLq8UOsZR47tNOUEMsF72hlbeS0rPi4+AuXVSAqabcm0pZY0TtbYwLTQZCH3ws6lm/yD8/FbSP7ZieQfXrQWln+QtkaB''@;'; put 'put ''GaTZHLAvmjVejbIhj/xGQirqDHEKXJJIxZDGV2kP6wQsp71d6GHdJRLvgTu3HyIT/0XLbYlWog9ytYi6zGJlKJeB2owpWC8oNtOT6Ypz6EcD2eCJXlvOomblkW2mnD0CS0OcwnLAIc+7ASGgsZpjJ1syY5lmoltSUYMMdD0lqFUzIPvo+93AiScCL8nezSJvPhfmucb3E+bPAVJg+nNech6Vdty4''@;'; put 'put ''ZU1SlqyBEOlHcFOBFrVShiEq4wjcbzkpcuYQivmi1WBHiymJPtWNKpkGLhCWldodxIbVAnFZs21pQK3OCrSiS+oPCgRnKS5pYQkZDpHe22nLqQMhOYx6dRdP4ce2NJGU4mFQ0vusrQ3rxzkybbElUxdaUtOAbwXc5yx1VKDDQkUm4jKP77Ll9V9EpKdjgPepQEPgZoqbAAVmcc/fdUbvSM0YRx7+''@;'; put 'put ''Yhw9g2G9VPdznhcVRG7xXojZ0/sMObAFYghFvG1YHoayqFu/fpwtM5ba+FFBTFY9+uZCrMKPPpTVFO17XWEJayXSsdDKzcHJPR0L1XaB1sqinVQOPGcClTXIPl+QkpmwajaMS3tH3OzznNfMFdyMgJthfsyWdU9GkATknqFu9hG+TgIuAQrMAB4Iar1ctiYlS9dI3q2XerpRo6QmnTQfdWT7S2Fp''@;'; put 'put ''PmbmThXB/zWwas5HeaXpt8KVHkW5HRWaAV2Uo7rBVUZ3XLDlyM6wHNsRkq42D1gGlBl3q/QIxMrh5UAy0Jxb0Ad9CrwlmhCk9TRL4/pzxCZcM8zbmm1Z/yQMB2dwscse5iM2F8W0YQrMYpqtLMaqbqVR9Y489IW4VNZCsOTRxeyKS7hwraQjezaasvs1uLUT3lraQtBX49F+btnaFOKyUCQ+obVM''@;'; put 'put ''sgBRJG95W1g6cqlZ5Og2Q44ieae3y1uORYKDwySBrAhEoojPnO3I7FuTMm6agXhBB0ITkecBOjdkBaKAbzJxkd+DGrsbfhqRs4fx20KRWUD6xbkpCszinLfrjjoE6+U8ZI7ficzxfMZeqjBy4wO7bdn8VERO7EHrmDwtmrBUhQxTFZmzb0FGvPrdi9yY6fKDxVLFcutZWw4hcefErrD0IQmKCwmQ''@;'; put 'put ''QHYEwrgAHTsrKfOWO9I0UxNThCWOskM3rHe5ZYz6HNn48wjCdygyhwWxhD5EgRmwydYr+wc/l5CxU/LnUk6LS0O6ECO4Di6TC4i1LMQSiTmy8J6ULL7Pgi7DKIowLvOKsASwtnMQltvVFW5SWBbiAOI2AkvAxClonCs0YdmcEZKwCk26zvMy36EwEq0SjmxGdvmhNzXDnxfFeQEdgJVSYAZgEq/s''@;'; put 'put ''Ar7nTXAnP/iZZLrTVx7cRa5Aglu865LIaz8KSwuymgu5hCO2zLvDklvWQmSqi6ZIfGLuKRgGyzCslpfOQ1hu1eSdMFzh7iuFRMhtkUBgCajQbJqZkrk4RzRNh9AMo8YuXeeez7dbKxO/L9teNGT3BnT9YYMHzxkHYYUUmEGYxcv7oMk9t61NyKL7EKuYh9JEaZEUkjg6Pbz6A4+SeYbBXy2Zi1al''@;'; put 'put ''ZMkqxF1pzUyfL1q6yYSw7O2y5ehbpuxFvGp3G2MsfT5tHF4REzAhLLXkmZ4nxkxCTQZciGot4DxccxcxpRyHjgQrFfQ7Xg7JW1qQPcWL5RyJBu7jFJgBmtJYmSUPfTEp9eO1Vpz3p1I9fdhwTb/+c1MOb8tfzGU2UxKrsGXFuyyZdStiTX3aAjPdeQc1QeO2nNwVkj2vh+XSucJafLNhyfeQQFAJ''@;'; put 'put ''RMscmb4UFs3bbZQ/Q0KihtWoRTOoO1zo/cKPQhgVRHb9GtbMFyIIS6DILPQU+Hl7FJh+np2hjA1lfRon2bIW8ZfaQcfrM6ieNkKwwh14QwUmApxGfEG2fIMjqz8BQT32cku5ER9TegCZLkY2Et5PHxbZs27krL0+QcJhkMCIEiivsmX2cr0gtd2C7W63MDg/KDQ9mBb8OLhdf14X2fJcRFJJikwP''@;'; put 'put ''qAZiFRSYgZhGzei2ZeGdltz+Hu+zx93TBdwhbRcceenrUent9od7V0MCJs+zZeWH8xdzOpTDw+UEcW+A1cWTtuzeGJaTu7XYPE+4Q+HI95JAvgiMakAMN86TM2DVjKFbmK3dwqgyc8eNU5x2/dm/yZE3nmVrydyBBmMNFJjBmEe4KRy590MJmbbEkJTHLmOVR45hyIYfm3IEGc9+WlxX+buTMusW''@;'; put 'put ''xJ16vN9D2U+NszTQIrPrki374Qo/iHqWiT5/CPGh7AffSwKlQGDMJEsWrrRkEmppmoj2YSKQN7OuXX8ObxWUMUJN5DjPf95QLd61UGAW79xdNfIyxCQ+8hsJGdWIgHYEs3u1uLY3WOTOHxd58ZuIsUn566QRQmjA2Cm23A9XebgMoy1w6SI3zhLCsr/fkWNvhWT3+jBEpr8YeXUscD0kECQCBs4d''@;'; put 'put ''k+dbsuDelDSiiYPN+ExPptcVmdsui8x+ngs9gVqkK6HALNKJu3rY6N893pFH0XvcQI0yLwOLXIEJAfX6Tw05uHVkE3uu3ue3H8XKbbnjMe1THCqYFVO5uKU6oDDPHbaRRRlFq0yeTN+eFd4jgeIgEMX5Y/ZtllvaaFQd6gfTbZ7zxKnIPLLNkQ0/o7s8Z5hFvAIKzCKevMzQ1Yo3ZYElqz9uuW0b''@;'; put 'put ''M8/neqsiyoGA0oLqv/xKFMXA/SmgDJQkmTTHklWPIxazAO3LXHc4Ep60Z7iWHDoM4Z1iiY5cDzd+ngRGlEDNGJQ1WpmSqQttiURRiYP1M3OaD4rMnPAF4sMUmAGYRk12WXhPUpY/Cgueh/Uv01Y6Qw7vcGT9kzHfktIad1V1jqz9VEJqkFGuPwz5WDLZ4cm4yBG4wzU7vJPu8Hyg5jpJYMQITJqL''@;'; put 'put ''bmGrbGmcorGZ6ba0+TmjjNguFmzDaXe5g8ojYUnQXV4w7n7ZEAWmX2Yih3FoUeHbH0nK/Hu8F5haSXfTz0NyYIs/3eMZbNFyR5aDwdzbvXeTu2ECMN5qEs/FkyHZ/kpIzhz0N48MF96SAAkMnYC6zefekZL5K2wpH4WLVi3STpU5dJD4BEXmsLAF4kMUmAGYxnxlkKuwSsL1++I3TLl4yt+CykQW''@;'; put 'put ''/exbLcRi2ggT8K67jxsmgKDWODLCD2wOyT5kiMd5JR6Abw13gQRuTqBhvCVL70vJxHmGhEIoacQi7TeHNsg7IuUmzp+2bPqF1sn0Z6jVIMPmUzkSoMDMEaAfPq7i6sFPJ9CDFwXHE96IK1dY4Z+eDkH8ZUx6OvUZ/y4hw5GmGYhD/VjKLTviVaKTusW15/mR7SjT9DM/FJj37xxwZCQQRAImQpBm''@;'; put 'put ''LLPQgjclo+qRbc4koGFNcxiJP26dzKcgMhmzPiyGxfYhCsxim7FBxhuOWvIIWkQ2TEif/AZ5y5CfcuWkFldvRoLPV6OS8HtNMyQ61Y+F0P5sQmKVGL1H5YpcgYn2mEd3hGT9T6JD5sgPkAAJBINAzWhLFt+fkukLQ6ggwd7mQ55VnJbDUVP2rNeOPyhyb9GSOWSGRfYBCswim7DBhhstt+ThL6Bl''@;'; put 'put ''YlM6Vmiw9wz1ubTAFGk5HYLA1B6zfj8ZaOtIS9Z+JiWV9agF6lGiT8aCeQy9xNc9SYE51OOI7yeBIBHAmUVm3AKhiSLtNag5TGvmEGf3ssjc+Qp6l78chsh0f2mGuBK+vVgIUGAWy0zdYJz5FJitZ0Py3Ff8V2D9nTjSAvOhz6akoo4C8518+AwJkIBXBKrrbVn6QDJtzUR4DmMzh0BWRWbEkG0v''@;'; put 'put ''iux8LUKROQR0xfZWCsxim7FBxps/gRmSjouOPPuvcJH7PrGFFsxBDg0+RQIkkCcCV6yZqzU2M31Ry0zzLGFDZJpmCH3LDdm7KQyBTktmluSK6m0UmEU1XYMPNl8CU6ty9HVrDGZMutp87iJHDGbDOEce+EweYjA1yectkQ0/8W8t0MGPDD5LAiSQbwJaoP2WB5MyZb6BhECtmwmLZr43GoT1I8Zf''@;'; put 'put ''az9pjcwj2xGTaVNkBmFaB+4DBeZAGkV6Pxyx5aEvJNx+ul6X6LFwZfnSt01pPubvMkVXssg/jixyExPp0Rk+HYOJ7MctjrzxNGMwi/QrwmGTQF4JaC3iObdrbGZKyqohNFGgndbMmyPXdrsWGrCt+7EpJ/eYbsWOm3+K7ygWAhSYxTJTNxinlim6/xMJmTjHuzJFujm9ngxBrb3xnCN7N/hbXLl1''@;'; put 'put ''MG9LyZ2PiaQS1g1oDe2ltMA0ZNevUWD9ZZYpGho9vpsESotA42RLbllrSdN0GDJZziiryTfCaI7R68jL3w/LeRgyKMyzwlYUb6LALIppuvEgzbAtd70/JbNvy0MnH/TcPrHbkVe/72/3sHbeWPHuJIqtG5KMeyswbduQN5833CLrN54JvkoCJFDqBMoqHFl8XxIWTUdMXJM62gWo1KHcZP9NJP30''@;'; put 'put ''tNnyyncj0nIO4VgIS+JS/AQoMIt/DtHC0JFb1iRlyQMQmH0eiiuw0RNjb6fIc/8WlZ52f8Zh6ul7VH06/rKmwdte5GrBTCZM2fjTkBzf4+8wgQAcytwFEggMgelLUrLsAQvnJu1pjrMUVeYN59aMGnLprCO/+m5YOi6hc5LrQ7vhR/iizwlQYPp8grIZnsYfzkKbxHs+6EjKQ+udbjvjJt/8TLpN''@;'; put 'put ''YjbjKfR7NP5p6iLd/xRin7zduu5/b6/Iq9+NysXT/hTY3u4x10YCJOAVgbqxttz2CFpNzoLItBGX6U2jNa+G57v1hGOmnDtky69+GJH+bp5vfTdBQxwQBeYQgfnx7WplGzvNkgeRQe31VZ8KLMH3XAuuP/81f/aRjVU6svKDCZmEfsGexl9i121kp3deMOSFb0alr8ul4cdDgGMiARLwKYFIzJYl''@;'; put 'put ''91sy73Y77TJnP/MbzlQELSWPbLdlw0+jCHfiOfeGsHz+IgWmzycom+G5LuJaWx75rYSUVyGD0aM2iZlt61fcMQy4iQ05vM1fbmIND5g4x5b7HkcqojvQzKhzv1XhrijPHRZ5+btltD7kjpRrIIGSJTBjqSXLHkxIdQ1a+mopI7rMr3ssqMjc/ZojW55nIfbrQiqCFygwi2CSshmilip68DNJGTfD''@;'; put 'put ''20xy3bar26C22lF0/UXEYvb1+sd1UV5ly6rHUzJ+BrLHk976n1RgOo4m94Rkyy+ZQZ7Nccj3kAAJXJ9Aw3hL7niXJWOm4dzCLPPrg8K5N4wE0zeeDcme11mI/fqg/P0KBaa/5yfr0bmJPmhdtmSNt4k+mQGoyDTwhd+9AVeVz/ojozwctWXeHYhxethGLTVvxaXutwpMK2nKhp8bcmynFtfkQgIk''@;'; put 'put ''QAK5ESivcuTWB1Poaa4mTC3Mnk6mzG2twft0CIXY1Rv36x+H5cQu1sgsxhmmwCzGWRtkzCHECk6cY8n9n7TcvriDvCXnp1RwpZBEs+7JMIrijqyr3EBi09jplqx+3JJIOU7QiGvyclFB7YBpT1tIXvhWVLpa/WO19XI/uS4SIIHCE9DEzPl3oTA7yhnFyrQwuwY6cbmWgNbI7O9B0s93Y3L+JM7K''@;'; put 'put ''LF90LSJfP6bA9PX0ZD84BwE9laMcefS34lJZmz5hZf/p7N6poktwVdndgbqYyKpu1XplI7FA+NWORtzlR1NS16SdIPJjvdST2ckDIq99P4pYTHfvR2JvuU0SIIGAEpg8z5LbHk1KTR0MmWrJpMp8x0xr+aL2Zlte/nYU5Ys0jZXn4ndA8ukTFJg+nZjhDEvL9dz5GAr8rvC24PrAsehXOwRvcds5''@;'; put 'put ''kVd+UHjLnpvQVOPI3R/WuMuQp1njV+0ndtS2UGD9BS3PxPjLgWx4nwRIwDsC9eNtxGUmpXEqXMJsMTkoWC1fdOZAunxRwkc5AIMOlk9eIUCBeQVF8d9RN/mkuSlZrW7yVP72xxWZcF20nhH59RMR6WgplCXTkaoanIzfl5IpKEnkZceed9BS9zgKy7/4rYh0Fmz/3jEKPkECJFACBCqqHVkOkTlt''@;'; put 'put ''gVox2cd8sCnXzPK9G2wk/kTFStGKORgjvz1Hgem3GclxPLEKWx76XELqx6OjDVqU5WvRr7eB9l7t523Z+POInD+e5yQYCL66RojLxyzXcplPcZnOHg/Jsd0hWfcjf/dgz9f8cr0kQAKFJRCGB2oJkn8WrHDgJWLyzzvo40dHW0puedqQPZuQ9GNRZL6Dkc+eoMD02YTkOhzNJl9wT0pufxQtDvs9''@;'; put 'put ''bmtzzeD06x0yQxJHp5vtr5hycLOZl1hF3afxsyxZjo4YdY1m3tzimd1TgZlE9vj6Hxlycn+ehXNmo7wlARIoeQIaS6/JP8vWpCQaS2dR589MUHy4NbNcDSevPmHK6f0oX8TYeF9PIgWmr6dn6IPTGMWaelse/iKKro/KT7LPwFG515D40odMQ07stuWtVyJyqdkbl7nuSwVKeiy4OyVz7rQliqtX''@;'; put 'put ''C7Xj8rm41kts4PzxEILK/dm5KJ/7z3WTAAmMPIGpC1NoMWlJFRI3NfGHyT9vz4lmlne3O27ST1uza+Z4+0Xe8xUBCkxfTYc3g1GL37I1SVmqNTHzbMXMjFi/5uq+6Oly0OZLO/6Y0o4Wi8NZ9Cq+rMKRKYttmb/CkoYmxFuqsPS4Q9FgY1OBaVumbHo6JIe2jmwppsHGx+dIgARKg8DYqZabtFk7''@;'; put 'put ''BpZMnBMpMt+ed7dn+REk/XwPPct7hvc78/baeC9fBCgw80V2BNebtmI6sGLGC2LFzOxq2poJoYmC7D2djpw7EoJV05ALJw3p6775SSActqWmEYlK82yZutCS+rFoqYazaj5jSTNj19u3rZfIkEcZpmT85mMe+HneJwESIAEvCdQi7vzO9yZk7FT1RjH5ZyBbTfrZ97otm59m0s9ALn66T4Hpp9nw''@;'; put 'put ''cCxqxVy4MinLHy6cFTMz/IzQDEdM16Xd02FLx0VDLp0LSRcys/s6ULBdswDxv1oqK5EZXoOr9PpxKRk1Wp8Lu20fbY+Lp2fGd71bFZippCGvo3PP0Z20Xl6PE58nARIoHAGtb3zH+xIyeTbiD1Esk5bMy+xxvlZjxuanUEpuM+IxbTzBxVcEKDB9NR3eDqa8yhLtT94wAbGLeShGns1o3a88EoFM''@;'; put 'put ''xGkauNWAdW3/lWlboaLObQmG522M0RrwWjbr9+o9Og5VvCf2oVPRE7giZoaiV2i5HhIggRwJxModuf3daC+5BP4piswrNPW3I5VAPOZ30pVMKL6voPHFHQpMX0xDfgahdTG1U8R9H0VdTFV0qu64vIOAaktNRuzvFjem5+JpZo6/AxKfIAESGFEC4YgttzyclHnLNXQH53Sez935cDv9nLNQsxiN''@;'; put 'put ''P+AhY6efET1Mr9o4BeZVOIL3QLv7rHg3Tkp3Ft5VXiw03dhLx0SpJUd2vca6l8UybxwnCZQaAQM9zJfej1qZKx107WWtzMz8azzmke22rPsxvE9J1x2VeYm3I0iAAnME4Rdi05p9WFVrywOfTko9srFHylVeiH0dzjZccYl/zh5Cz3G0vkwmeHIaDkd+hgRIoHAEFt+XlCWrIDKRGCn4n8ZMEc0s''@;'; put 'put ''3/KsyO4NiMdkiFPhDsYbbIkC8wZwgvKSiqix0xCP+cmkGFHtd8vTkc6tKyXhbepsDcmr349I23lmjQflmOd+kEDQCWh94KWrUxBW2FOKTLSWAwa0SH75e2FpPqxF2IN+BPh//ygw/T9HnowwBNfK3Nu1rpqNDG6ejTLiMtlnyIZfaJF4Zo17cqBxJSRAAgUjMHdFSm590JJwGdQUGreVuqbSWszt''@;'; put 'put ''zZfjMdsQj6nWFS4jRoACc8TQF37DWrrotoeSsmgV4zH1vGPbhux4OSS71kUKPxncIgmQAAl4QGDO7SoyUxIp05Oam87pwVqLdxUaj3l4q8j6n2iZPHqlRnImKTBHkv4IbDuCTMS7PpCSmbeUrshMX9Qasvf1kLz5HFwpaWf5CMwGN0kCJEACuROYudSSWx9NSlk5RabS1MzyTfBM7d9ssj5m7ofX''@;'; put 'put ''sNdAgTlsdMX7wRiKm9/zwbhMXWRKsg9+lRJaXHEZMuTgmyJbnkGvcS34zoUESIAEipzADIjM2ygy3VkMoeZyot+Wl74ZlYunYcXUOnRcCk6AArPgyEd+g5pZXlntyL0fTMnEBbBklojIzIjLA2868uYzUYrLkT8UOQISIAEPCajIXA6RGaMlU8KwYjYftVGEPSpxxNpzKTwBCszCM/fNFssqtM9t''@;'; put 'put ''SqYvhciMBzdC3L121fMLYi73bArJjhfRipKWS98chxwICZCAdwRmL08i1t6WSAwpPyWezxkpN2XnKyJbcc63WbrIu4MsyzVRYGYJKqhvi8RsWf4ICrHfYUhS20lqq8YALSouQ2G4S/pCsvNVCMz1iMlhzGWAZpi7QgIkcC2B2Uj8Wb4W2eWlLjLxA6C/Aa+gdNHpAzj301V+7aGS18cUmHnFWxwr''@;'; put 'put ''1+4QC1ehptp9Fgr3hlBLLBgiU13i2v+8sxVXsC+F5fhOtoAsjiOSoyQBEsiVwLw7U3LLAxCZ0dK2ZBooXdRxwZEXvhGWbpYuyvWwGtLnKTCHhCu4b9a+5VPmw5r5rqRUN5iS6i/e5B+9YtWiuyEDMTiHHXkDmeKXmikug3v0cs9IgAQGI7BoJTr+rEZWtVnavcu1dNH+zQ4yyyMoXeT+QgyGi895''@;'; put 'put ''TIAC02Ogxb06R2pGO67LfMoCwy3IXmxdf9JWS0P6ey3Z97oJl3gY7R8Z4F3cxyVHTwIkMFwCy9YkZNFKXHCjd3nJdrdRTYmfgQ1PhuUoPFmOTZE53ONpKJ+jwBwKrRJ5rxlG158Vliy6NylVdWFJFEECkJ4uNNZS/zt7xJEdr4Tl/HFaLUvkkOVukgAJXIeAeqdueyQl8+/Q0KfSFZka/tVzyZbn''@;'; put 'put ''vxaTjrb0b8V1kPFpjwhQYHoEMnirgTVzjCOL0et2+gJLzBgyrxP+yzR3hSXiLA0jJK3NNoqnm3JsO7PEg3c8co9IgASGSyAMo8GK9yTRYANrcEpXZKqr/BDK1G34aZhdfoZ7MA3hcxSYQ4BVim/Vq9+maZYsXGlJ0wyRMAKmkz4QmpkEHu01237RQmuwiBzaZkpfN10fpXiccp9JgARuTEArhtzz''@;'; put 'put ''vqRMXghfsVOiMZn4eTDg2Fr3o4gc22mgXTB/L2581OT2KgVmbvxK5tMqNCfMsmT27ZaMn25LWRWshChrVMiMc/dUAGtlOJyOD209I3J0uylHdyPmsptxliVzMHJHSYAEhkWgrMqWVR+GsQDncG24UYoxma6rvB2u8q/SVT6sg2gIH6LAHAIsvhUEIDRHN9kybYktk+ZYSAoKiQmrppWyxbIQ4+Nx''@;'; put 'put ''hSO1VGrbL9PUq01HutstaT4CNzhEZfNRCM0khSWPSxIgARLIlsCoBlvuezwpdeP0E6UpMtVVfnCLIxt/Rld5tsfNcN5HgTkcavyMSyBaZsvYqRYsm46MnWbLqDpHohVht7CtWjZtXB6rKMxGdLrWSRWTiKXUP42p1Of6+1LS0x5y+8meOWzKeYjK3i733ZwFEiABEiCBYRAYM9GSe2DJHFWvzTWy''@;'; put 'put ''OkUPYys+/oj7WyPy6ydMOb4rzALseZoqCsw8gS211ZphW2qRFNQwERbOCZogZEtljQXBaUg0elkwuuLxajKIN0c4kCOWbUsi4UiyV2ClDElHiyGXzhnSciYkXbifiFNUXk2OjwYSMFDzNAwrNy5RUI5FZHRDndy+dKHMnzVDImHt3uSxaX3gxod5Xy+++uNxaWvvlIuX2uVSe4f719HZJV3dvdLb''@;'; put 'put ''1y/JVGqYa+fHSODGBCbMSSEmMyWxKnxncCz67xty4/Hn+mq6ALstL349Kl34zdF4fi7eEqDA9JYn13aFAKyZZSLlVY7EKhGzWRnCYwdJQmqlvPwmCMsEit4m+0TiPSE3QaevN4Qi76GSO9ldwcY7VwhEI2EpLyuTyspyqa6skKqKChlVXSU1+jeqSirdx5VSWV4uFeVlUlYWc+PK9ODR12trRiG0''@;'; put 'put ''wt+lqvRHTf/S8XC4wEomXdHZB3HZ1dMrnV09V4Rna1uHtLa1u4K0HSK0o6tb+vrj8BLgKo0LCQyDwOzbknLHY9o8N23GLDWRqa7yXevQ6Q3NOCz2Kh/GEXTjj1Bg3pgPXyUBEsgDARVV5RCEVRCOdRCC9bU1Mrq+VhrqavBXi/t1MqqqQioqyt33RSMRicViCJ1IX53orYqyjLjK3Opzum7L0ixZ''@;'; put 'put ''jS8rrp9MHbsuun96X28z9zP7k0gkICz7pfuyAG3r6JQWWEBbLrXJxdY2aYEIVSGqVlAK0DwcvAFb5a1rE7J4FTzliKMvrm+LBxOhXzdo6xe/G0bXN3WVe7BOruIKAQrMKyh4hwRIwEsCGRFZW1Mto+vqZFxjgzSNHSONcF+Paah3LZGjqiulDMIxIx71MyoWM38qqgaKRy/HV6zrGihC1UKrj/U2''@;'; put 'put ''I0DjcLurAO3p7RMVn2r5PH+xVc5daHFvVYy2dXTABU/rZ7EeA16O2zRtuftDSZmxBImUSVyYebnyIliXGTXQlMOWl78VlXhfxr1WBAMvgiFSYBbBJHGIJOB3AmWxqGt5HNc4WiY2jXX/xo8bA2FZ67q1K2GJjMAKqWIoIxoHWhn1OS7eEFDGmb+MAM1YfJV5b1+fdHR2w9XeIc0trdJ8oVVOnjmH''@;'; put 'put ''2xbXEtoJ17sm6HEpHQLlFbas/lRSGicjJh4JmqU2+2G4yrc866C1cERsuso9O/ApMD1DyRWRQPAJqHDReMfG0fUyeUKTTJ3YJFMmjod1crTUw9VdVVWJOqXqakq7p1NIUsncp4j0x/Ghc6iCU8Vnxv2uVmIVnl0Qly2weJ5tviAnIDpVeJ7BfbWCJhJJf+wAR5EXAnWNttz/qbhU1cKKV2JJP1q5''@;'; put 'put ''JN6L2phfj0lbs/rNmfDjxUFGgekFRa6DBAJKQOuPumJyfJPMnj5Fpk+ZKBOaGiEma9z4SBUoKk7UMpZxawcUReB3KyM8M+JTH+sFQndPj7S0tsups81y7NQZOXryNIRnsys6dd65BIfARGSWr/xQSsIxSCyYMUvJkqkJP4e3ObL+J0j4YX1lTw5qCkxPMHIlJBAMAhoPqa7tGRCSc2ZMdW/Hjhnt''@;'; put 'put ''urnVMqkiUkWH3tIiGYw5v9leqODMiE691Uz3ru4eOXseVs7T52T/4WNy5Php93F/PHGz1fF1nxOYf1dSlj+KQWqinM/H6unw1GgJ4+2vfxCRE3s0iZBWzFz5UmDmSpCfJ4EiJhBBKaAmuLfnzJgmC+bMkOmTJ7iJOFWVle5eqYUqY50s4t3k0D0mkBGc6mbXRa2c5xHLqdbNvYeOysGjJ1yLZzLJ''@;'; put 'put ''Op4eo8/76mC4lrseS8isFYiXLrGkH+1K13rGkRe/EZG+Hib85HqwUWDmSpCfJ4EiIqDCoHZUtcycOkkWz5sl82ZPlwnjGmGhrHYTQzLWSbVQciGBbAnocaV/auXWpau7G3GcF+UAhObOvQdcwdmK7HUmD2VLdGTfF9Okn4+lZNx0xFKXWNKPusrffF5k12vw2DDhJ6cDkQIzJ3z8MAn4n0AYVqYJ''@;'; put 'put ''yOxWQblo7iyZOW2SWyZIxQAtlP6fv2Ic4UALpx5jrajRefj4KXkLYvOtvYeQOHQeoRaM3/Tz3NaNtWXNpxNSOQomzRJK+rmS8PNvSPi5oG5yusqHe5xSYA6XHD9HAj4moGWDpk+eKEsXznWF5dRJ49HdZpQbN6lWSv3R50IChSKgrvRM1rq2wjx64rRs27VPtu/e72aqsyVmoWZiaNuZujAl934w''@;'; put 'put ''JYZGQpRQ0o9aMQ9uEdn4M1OsFF3lQztq3n43BebbLHiPBIqagCbozJo2WW5dPF+WQVhORLZ3BdopDkzMKeod5OADQSDjStcsdY3d1AShzdt3ytad+5AodJEXPz6b5VseTMqS+9DwoJQ6/cBoqVn0L34nLOeOoOwaI4aGdVRSYA4LGz9EAv4gEIGbW62Ty5culOVL5rs1KcvRm1stlGqpZKa3P+aJ''@;'; put 'put ''oxicQEZs6u0ltLfUBKGNW3a41k3ttc5l5AmEI7bc9/GkTJoFT7lVOkXYw+jwc/awIy9/JyLJOK2YwzkSKTCHQ42fIYERJKCWH+3ZfRsslXctXyrzZk1HT+9KisoRnBNuOncC6kLPlMI6fe68vLF9l6x/Y7scO3lG6ELPnW8ua6hpQDzm5+JSXQOhVULxmNpGcsOThhzcmk5ey4VhKX6WArMUZ537''@;'; put 'put ''XJQE1Fo5fcoEuXfFrXLHrYtRXmiMux+ZzO+i3CkOmgQGIaBCU/+0beXOvQflVxvfkB1aevCmAABAAElEQVR7DqDbUP8g7+ZThSAwBfGYKy/HY5ZKJ1EjHJL2CyLPfCkKKyaTfYZ6nFFgDpUY308CBSagsZWL5s6UB1beIUsXzHWLnmuxaybqFHgiuLmCE1DXufaw1+P9CLLQX9nwhmx88y25hD7q''@;'; put 'put ''XApPYPkjSVl4T2nFY2rCz6anRfasixQeeJFvkQKzyCeQww8ugfKyGJJ15snDq+9yywvFIDT1h5Y1KoM759yzwQloWIgKTV1Oo2WlCs3XXn9TzrdcYpzx4Mjy8mwkBlf5JxOoj4ki7CVSHzNkhqS305an/6VM+rpoxRzKgUWBORRafC8JFIBALBqFpXKOvOuBlbJ4/mxR17gKSybsFAA+N+F7Auo6''@;'; put 'put ''13jNc8g4f3n9ZvkVxKYKTV54FWbqRk+w5IFPpSRaoZnWpZH0E4UVc8erIm8+RyvmUI4yCsyh0OJ7SSCPBMJh0+39/dja1XLnbUtEhSaFZR6Bc9VFTWCg0Hz+1Q2u2Gxto+u8EJM6D/3Kby+hfuUh5DYlEf77zJcj0tGSbo9aCM7Fvg0KzGKfQY6/6AmoZXJ0fa08ev+9cIffLXW1NXSFF/2scgcK''@;'; put 'put ''RSAjNI8cPylPvfCabHhzh/T09hVq8yW5nZDhyH2PJ2XKotLpV65WzL2bHNn402hJzvlwdpoCczjU+BkS8IiAWimXLZwjH3r3Wpk/e4Zbu5LJOx7B5WpKikAU3yX97mzduVd+9PQLbv9ztqPM3yEwCqWLHkQryap6xCWWQOkihAHj+HLkuX+NSus5WjGzObIoMLOhxPeQQB4INNTVymNr75NH7r9H''@;'; put 'put ''KivKJZFI5GErXCUJlA4BTQZSodmGLPNfvPCq/Oz5X0k8zu9Vvo6AGUstufsDqZKJxYzETDm83ZbXfhjLF9JArZcCM1DTyZ0pBgKaoDAbLR0//eHH3CQetbrQalkMM8cxFguBTN9zzTT/9pNPSfPF1mIZelGNEw5yuefDSZmxVLPKLW1XHuhFrZgw1srzX4vIhRO0Yt5ssikwb0aIr5OAhwQ0kWfV''@;'; put 'put ''HbfJJz7wLhnXOBrWlbiHa+eqSIAEMgTUmqmlvbR+5pe+9YTsP3xMUriY4+Itgeo6uMo/m5Tqeqy3BFzlasU8tsuSV74DK6YqTi7XJUCBeV00fIEEvCUQi0Vlzd23y+c/9n7R4umaIc6FBEggvwRUZGqf8y9/50nZtHUn207mAfeMZXCVvw+uctgwS8GKCWUJK2ZYmo/Tinmjw4kC80Z0+BoJeERA''@;'; put 'put ''i6Z/8NEH5MPvWYuL3hBd4h5x5WpIIBsCWqS9vz8uX/nuk/Iq3ObxBC/usuGW7XtUWN77kYRMX2KUhKs8gh7lJ/Y78vI3Y4EX1NkeA4O9jwJzMCp8jgQ8JFBRXiYff/+j8v5H1rhZ4iwI7SFcrooEsiSg5YwS8Bp8+Vs/ktc2UWRmiS3rt2lW+drPJaRyFNzGQS/Ajl1EF1N5/uthOXcknDWjUnsj''@;'; put 'put ''BWapzTj3t6AEVFx+BFbLjzz2sJslzm48BcXPjZHAVQRUZKol8x++9j26y68i482DOSuScud7oC8R6xp0V3kmFvNlxGKqV4rLOwlQYL6TCZ8hAU8IaI3Lh+67S37jEx9029jRcukJVq6EBHIioO7yVsRk/o9//JocOHJcLNvOaX388NsETBRgX/2JhEyYg+dQMzLIIjOtKRGL+XVTmo/Rivn2UfD2''@;'; put 'put ''PQrMt1nwHgl4RkDLpGgB9T/+3c+5CT0sQ+QZWq6IBHImoIk/ew8ekb/556/LBfQx5+IdgdETkVX+qYREyrVXOayZ3q3ad2tSK+bRncgo/y6tmINNDgXmYFT4HAnkSGDsmAb5T//uczJ35nSWIsqRJT9OAvkgUF5eLk+i48/3fvqs9Pah0TQXzwgsezApS1c5Ylt2oAUmksk13FR++dWIXDzFjPJr''@;'; put 'put ''DyAKzGuJ8DEJ5EhAM8Y/gIzxT37w3Yj34g9Xjjj5cRLICwEDWRra5ee//f1XZM+Bw3SVe0g5Vo6En8/HpX4cFBgiEIJuxTy41ZZ1P2J3n2sPIQrMa4nwMQnkQECDvSdPaJK/+KPfltH1dW7WeA6r40dJgATySKCsrEx+jYzyf/za96WrpzePWyq9VU9ZmJKVH7bFgMIMssDUWEwb8abPfDkql5pp''@;'; put 'put ''xRx4pFNgDqTB+ySQI4EyFFPX/uKf++j7ab3MkSU/TgL5JqAXhFoT8//6/74s+w4dpRXTQ+BaG3PVRxMydVHwa2NGy0zZvcGRTb+Iekiw+FdFgVn8c8g98BGBuppqxF5+Hj3G5zD20kfzwqGQwPUIaCzmD372nDzx1POMxbwepGE+39DkyJrPxKVME36wjqBaMkOoiRnvE3nmX6LS1YYHXFwCFJg8''@;'; put 'put ''EEjAIwIa0zVz6kS4x39XKivK3dJEHq2aqyEBEsgTgSjKie3ef0j++n99Vdo7u/O0ldJd7S0PJGXJaiT8pILtKlcr5raXHNn2Iq2YmaOdAjNDgrckkCOBCIo43718qfzRb3+GsZc5suTHSaBQBLSkWHtnl/zZ3/yTnDxzDlnBQbWzFYro1dupqHTkQST81DZqsGJwa2MaZkh6Omx56p9i0t9LK6Ye''@;'; put 'put ''BRSYV38X+IgEhk1AC6u/a8298kUUVo/H48NeDz9IAiRQOAIah5lMpeSvkE2+e/9hSaELDRdvCcy+LSV3vg/p5AEvW6RWzA0/Fdm3KeItwCJdGwVmkU4ch+0/Am6Cz0Or5XOPv48JPv6bHo6IBK5LQK2Y/x2dfd7YsQveBwrM64Ia5gtmxJEHUHy9aTriMAPc4ccMh6TlnC3PfqlMrJRGnZb2QoFZ''@;'; put 'put ''2vPPvfeQQBm6g7z7wZXyeWSQ04LpIViuigTySEAtmPr31//r3+TNnXsoMPPEeuJsC1nlKQmbwXWTK7pw1JCXv2PIiT1sH0mBmacvE1dbegSi6HG86s7b5A9+45OSSCRKDwD3mASKkIAm5/X3x+Wv/kELrh9hqaI8zaHa81Z9NB74skUqME/td+SFb0TdC5c84SyK1VJgFsU0cZDFQMDED9WCOTPk''@;'; put 'put ''T3//NyUajTBZoBgmjWMseQLqHr/Y2iZ//rf/JGeaL5Q8j3wCGDPJQp9yWDHLkEgV1FwqKGkH4abPfSUqLWdKO9mHAjOf3yauu+QINI6ulz/7g9+UaZMnSjKZLLn95w6TQLERiCG05c0du+X/+fK3pLOLZYryPX93PpaQ2XdgK8ngli1i4fX0UUSBme9vE9dfUgQqysvkU+hB/n70Iu/rQ+VdLiRA''@;'; put 'put ''Ar4moO0iv/KdJ+WZl9ehqw9DW/I9WTVjbHnoiwkB9sAWXw8ZIenrseVplCzq7SpdKyYFZr6/TVx/SRFQN/nCuTPlT2HF1LqYrKlXUtPPnS0yAmF8R1svtclf/M8vy4nTZ/l9LdD8LX8oKQtXBrv4uloxX/+5yJ6NpVuyiAKzQF8obqZ0CFRXVcjvfPojsvruFSxXVDrTzj0tQgLaJvJHaBH5fbSK''@;'; put 'put ''7O3rL8I9KM4hV9fBivmFuFSMMiSEwvZBDMc0IyG5eNqW576MkkVWaZYsosAszu8nR+1jAgZKnsydNc1N9qmqrMDJhXX1fDxdHFqJEtAWkafPNst/Q4H1U7jlUlgCyx5MytL7gm3F1LqYz3/DlLOHSrNkEQVmYb9T3FqJENCi6+9F0fXPfOS9rIlZInPO3SweApnal//wb9+TdZu3SYIJeQWfvMpa''@;'; put 'put ''Wx6GFbOyJrhWzEjMlEPbbPn1E7GC8/XDBikw/TALHEMgCdSOqpbf+8LH5a7ly5jwE8gZ5k4VKwFN7PnZcy/Lt3/8NF3jIziJSx9IyLL70KI8oC0kQ8jviSPX8+l/jkh3uzmCpEdm0xSYI8OdWy0BAmolmTCuUf74dz8rM6dNoSWzBOacu+h/Ahp3ueGN7fKPX/++tHV0+n/AAR5hZQ2smF/shxXT''@;'; put 'put ''DGwsppvs8zSSfdaVXrJPSQnMD73rAdmyY4+cOHMuwF9Z7pqfCGhW+ewZU+SPfuszMh5iky0k/TQ7HEupEVBxuX33Pvm7f/22nG+5VGq778v9dWMxVyEWM6BWTDfZ55TIs/8axT6WVrJPyQjM8WPHyD/+1X+Wvv6EfPvJp+T51zayJIUvTzfBG1QYnULmzZ4uv//FT8j4sRSZwZth7lExEFC3+Ft7''@;'; put 'put ''9ovGXZ670MLzv08mzc0o/3xCKmpQFzOgDX4MeMd/+bWINB8tLTd5yQhMtV5+8RMfcntEa+2z19/cIV//4c/k9Dm2BvPJeSbQw3AtmdOnyP+OmMypkybQkhno2ebO+YmAhqqouNy09S350reekOaLrX4aHscCAssfRl3Me4ObUa5u8r0bHdn482hJzXdJCEztNfs3f/IHKB0z3RWYOsN6wmlta5fv''@;'; put 'put ''wJr53K82lHxT+pI66vO0sxH0152xJCnHdoYR2P3O7g36Qzd5wjhYMj8pc2dOc49FFmLP02RwtSQAAnru17/nX90Az9XTcqm9Y9BzvXaXKa+25eJJU6xUabkx/XCg1IL/WmSUl5WHAtndxzBD0ttpyy/+MSb9ve/8bfDDHORjDCUhMOfOnCr//f/8A5ffwB90PfGoNXPd5q3yjSd+LufOt+SDMddZ''@;'; put 'put ''AgQM05GJsyy58wO2rH/ClDOHr+8Kmdg0Vj72vkdk5R23um461sksgQOEu1hwApFIBCFRcbeQ+lMvvubev94glqxOyrRFlrz6g6i0X1CBSZF5PVb5ev6u9yZk1gqsPaA9yrVk0Ws/FDm8vXSSfUpCYH7+8ffKR977yHVLxag1s6X1knznx8/IL3Glq5YmLiQwFAKxCkfu/WBCpi4wZd8blqz/cfSG''@;'; put 'put ''x9Go6ip5cOUd8oFH1khdbQ2tmUOBzfeSwA0I6Pk7Fou5RdS/8t0fyzYk9aRS1292ECt35IHP9kvT1LDseMWRt16NSDLO34AbIM7LS6MnWbL2UykJwxMUxNY+4aghJ/fa8tK3UBOzRDRG4AWmFrz+u7/8Y5kAq1EqlbruF2OgNfPrP/gZ43SuS4ovXEsghMj0xsmWrPl0SiJRuEK6Q/Lq90y5eOr6''@;'; put 'put ''VkxdRzhsytwZ0+Tx9z4kSxfMdVd7o2P02u3yMQmQwNUE1GqpHoFNW3fKE2gBefTkmZsm88y9PSnLH4U7PWJLd6sjL34rIh0t6sakyLyabn4fqXdx9ccSMmURuKfswGlM1ZSJhCPP/EtMOltLw00eeIF5y6J58pf/4XdvKC4Hfm20jEXzhYuuNfOldZsGvsT7JDAogUjMkYX3pOSWtTgvxtVSEpKj''@;'; put 'put ''O0TW/ySKk+TNf6SqqyplzT0r5D1rV0lT4xj3WKXbfFDUfJIEBiWQMRBo68cfP/uSrEedy55eVLi+yVJWKXL/J/pl9ER8a2E4MyKGbPyZATcmYjGTN//u3mT1fHmIBCbOsWTVRy0JG8ETmIrCrYn5FGpiri8NN3ngBea/++zj+OFefV33+GDHv8ZlGqhfqLGZas1kvbTBKPG5DIGySlvu+2hKmmYI''@;'; put 'put ''fpRs1/uRiBsQmIac2pddD1rtXz5pQpO8a829surO20RFZxLt62zbzmyGtyRAAtcQ0PO09hS/1NYhr76+RZ59ZZ2cbb54U6tlZjWL79N+2BCXhoXPwKuAOLkj20U2/cIcNFEv8zne5oeAiVj2Bz6TkHHTMRm4Vse/gVrCkZCcO+7IL/81lpXxodh3PtACs6qyHO7x/ySNo+tdt8lQJ0utmWebL8Ca''@;'; put 'put ''+bS8suGNoX6c7y8FAjB71DXa8iBOiuXVhjj2ZZsljB8Xz4TkV99DokFX9u6QCC5utDD7u9aslOVLF0hlRQWFZikcR9zHIRFQYanu8O6eXrf80DMvr5MjJ07dMNby2g2MnoALQ7hkK0bhO+uEXDGj2b7tLY689I0oWvtl/729dt18PHwCs29NyR3vx4V6EAuv43fBxm/Ecyi63nr2xiFUwyfon08G''@;'; put 'put ''WmDeccsi+bM//O0rpYmGg12tmRo0/hqujr/xw1/IxUttw1kNPxNQAiE3e9yW1R9PYA9x9rh8yZ2O4Tbk4JtqDYkM+Wo1Go3Iwjkz5dH775FlCPMoRyIaLZoBPYi4W1kTyLjCu7p75I0du+S5V9bL4WOnJAFr/1AWDWu57/G4NM3UsjiOa710P2+EJNXryAvfjkjrGVwwQnhyKSyBWLm2j0xIbaOq''@;'; put 'put ''McxNYTef962pm/zN5wUJZcF3kwdaYGrnlEfuv3dI7vHrHV1qzTxx+qzbBUjje7iQgBIwI47Mvg1X3O9xXPf4QCoqMq2UIVtfCsm+jcM7mcSQpDYf9VvXrrpLNJ5Ys89VaDJGcyBp3g8yAb3A1wt9FZda7WPz9l3y8vrNrrBM3iBx83pMVFAufzQpc+9QcZl2jV95r6snHSTpReXUIQjMEmvtd4XD''@;'; put 'put ''CN9ZtgahC6uhL5GwFTSBaYZD8G7Z8uyXymDNdA+4Eaadv80HVmBWV1W42eNjGobnHh8MuZ7kUjjgX8HJ7Xs/fRaF2jsGexufKyECboLPyqTc8kBIkv1Xl0JxTx34p79fZPPTYTmOAuzDXdR1PnPaJFl91+1yx62LZXR9nRufqVnnA2u7Dnf9/BwJ+I1Axg2ucch6cb9u8zY3eefc+Yti5RCbvOje''@;'; put 'put ''pCy5X4uwXyMuLwMwIADW/ciU47tZdH2kjgktvP4QCq/HKnARAIUZKJGJ3wS1y/7yKzFUGgl2GEZgBaYX7vHBvlx6Na1B5afOnHM7Q6zfQmvmYJxK5blImQ1xaSGLHPWB3Qzyq/fcFZk4h/ShdNHrPzfl1P7hi0xds7acHNc4Wu5evtT907aTGoumQpNWzavZ81HxERhorezs6pY9Bw7LrzdtRS3L''@;'; put 'put ''/aKPc13m3YlqD2uQpQwXuSB/bjDhYmom+c8NObLNlBQzyXNFPqzP60XzqscTMn0JrMioYTrYPA1rxT75kLrJt73oyLaXgt06MrAC8w/gHn/YI/f4YMdkxpr5MkoZfe+nz7ktyAZ7H58LNoEoijQvfwTuttthwRxEYOreuyIT8dx9+H3c8kxEju3yJri7sqJcFs+b5XYEWjh31lVWTWafB/u4C9re''@;'; put 'put ''qftbL5QSiYScPnferWP5OnqHHz911vUa5bq/Wqt28aqULFrliBmGsryOuNTtqMDc9DTip7ewVFGu3HP5/CQtWfQxS8xQ8EoWqZu85QxqYn45hjAA9xciF1S+/WwgBab+8P79fx1+9ni2s5WxZh4/dcatm7nxTRQ/5FJSBKIISF/xrhTiMK8vMBWInkJCSCCI9zuy5dmwHNkRfjuxIEdiGavmbUvm''@;'; put 'put ''y+1LF7lZ6FWVlVdc6BSbOQLmx/NCIJOwo8fnRcRW7oCV8nUUSN8Nq6XWsNTzqxeLdupZtjYps2+FuzWEMJYbiEvdHgWmF9RzX0cYhe8f+kJSGiYgy/8mc5b71gq8Bj20YaV9FuWKWpBMFtQlkALztsXz5S9QXF2TIQqxqDVTg83Vmvn9n/2S1sxCQPfJNrIVmDpc9+cS5xKtkXkAVa/2rotIf583''@;'; put 'put ''P6IZHBqrOWVik9yK74AmBU2fPFGqUFNTf8TVhU43eoYUbwtNQAXjwLhKTdjZd/g4ROVbsnv/YWnr6HSPUy/HpaWIboWHYfy0ECxFsIRl4WulwPRyBnJb16KVCbl1LdKyApjs42aT/xLZ5L8aXgJobmQL8+lACszf+fRH5L0P3+9J9ni205CxZh5FLTbtab5p285sP8r3FTGBoQjMzG4asGTqD93p''@;'; put 'put ''QyI70fc4X4HeGbG5ZMEcWTp/jkyfMtHte67HaiZmkwlCmVnhbT4I6LGmF+DuRTgu+NVSue/QMXlz5x5XVLZeakclmixU3xAHZ6B82PRFKVn2kC1V1TBaarmbLDdDgTlE2Hl8+6gGLVkUlzJN9sF2spzCPI7Iu1WbKLp+/pgtz32lDPvlraHBu1HmtqbACcwYEnD+7i//o0wcP879Ec0Nz9A/rXFE''@;'; put 'put ''ccQRaZvJH8CaqVflXIJLYDgCU2ngd9d1mfd02LL39bAc3prfziFhxLiNbqiTeTOnydKFc2X29CkydkyDVKD8llo3VXDqLQVncI/VQuxZxkqp7m+1Vvb29sq5Cy2umNwOF/jBo8elvbM7r8dZ3ThbFt6bkinz1d0N3+oQO8JQYBbiSMluG3o+uu+jCZmq/ckDVnhdfwOslCNPfykq7Re8icvPjmrh''@;'; put 'put ''3hU4gTl/9nT56//8++4JbKR+LAdaM7/15FPyxvbdhZtRbqmgBIYrMHWQes0aQucQB7XQzp90ZPc6U84eNGHR0Vfyu1SUl8nUieNl7qxpbp1NzUYfXV8rZSjoPtCdPlLfofzuPdfuFYFrBaWGJV1qa5ejJ8+4sZR7Dx51Swz19ce92uR11xOrcGTWLRYS7lJS3aAu8eytlgNXSoE5kMbI35+yICUr''@;'; put 'put ''P2KLgeDZIFkwlay6yTf+AuFSG4LpJg+cwPzEBx6VT33osYK6x6/3FXStmfGEvPDaRvnhL57HlXvX9d7K54uUQKTMkVsfTMmCuwcvU5TNbumVrLaoS8RD6F0usm+TKRdOGp4lOdxsDCoStID7ZFj9Z02fLLOnTZGpk8ZLQ10N4jer3I9r7KYKT1o5b0Yz2K9nBKW6vNVCqVnfbe0dyPy+ANf3UcRU''@;'; put 'put ''HpWjJ85IB851+XB9D0YXxlKZNC8lc++0ZNxkvAPfJ0fF5WBvzuI5CswsIBXwLVGUglM3ee1YnBMD1tknHDXk5P50a1LXrVVAroXYVKAEptp9/vbP/73MnTm9YAk+N5ukjDXz8LETbt3MLW/tudlH+HoREUjXwYRL7h7numWKst0dFZpm2EA5IwdFnpEIhDIpl86NTIZheVlMxo8d48Ztzpw62b0d''@;'; put 'put ''B5e6CtFYLOZ6CCg6s53Z4nxfRkxm3N26Fz09PUhi7HRLCR08clwOHjvpWijbO7pyKn4+HEIGSg81TrNlHoTlxFmOhBHTZqdyt3JRYA5nNvL7mdseTsqiex1P5je/Ix3a2kM4vff3iTzzTzHp7lAFE6wlUAJzEiww/++f/xEKoaP3c7YR3QWaz0yNt2fRO/eJp17wpGhwgYbOzdyAgJcCM7MZTQIK''@;'; put 'put ''oU5ab7stpw5qPb6wtJ5GweHMG0bgVksh1cOiqaJTrZuanT5p/FjEcY6WqsoKt/mADku/d5nuQmrt5OJ/AiokrxWTOo+9fX2uJbL5QivqUZ6RIydOywk0mGhGTKWWERqpc6y2ehwz2YErPCkT54VEyxDZiGXz6pRPgem/Y7ZxkiUPfDYpEfSpGMnzYD7IRGDF/NX3DTmaQ6e3fIzLi3UGSmA+uuZe''@;'; put 'put ''+b0vfMIX7vHBJidjzTx09IR880e/kG274A/lUtQE8iEwFYhey2rdTG1b19dty2kIzcNbDblwIoxSQ/5ApolDtTXVEJ2NSKobK9MQx6kCtHF0HZ4fJeWI51RXqgqRgcIz89gfe1E6o8iISL3NWCV1LtTN3dvX77q6my+2yqmzzXLyjP6dkwstl6Srp9cNjRhpUobhyNgptsxCjOXEWSJllegknsyu''@;'; put 'put ''9NBQxk6BORRahXmvzv3azyVk7FTIy4DVxNQ4zP2bHVn/k+B19QmUwPyT3/ui3LPiVvR+RvNnHy9qzexH0Pvzl2MzvWiB5uPdDfTQ8iUwB0JzXefoLpLAYX3huCOHUKT9LARn3OMamgO3Odz7Kl40gaihrtYVm01oazmhqdFtbzkG/dNrRlVJGVzs6mbX92bEprrb9T5jPIdHXlnqonGRumQEZOZ5''@;'; put 'put ''tSr3wSLpCkm4s1U4nm9pdV3dZ5svuI870IqxHzHjflsiMVvGz7JlJhJ4xk8NSaRMs2+9F5aZ/TZhUdryTEj2bcbFHFtFZrCM+O2ilUnUxNT42mC1jtT4+84WR57655gkE8FykwdGYNYgNuzv/usfuz9sxVBMWk/8+iOrcUxf/+HPZMeeAyP+BeYAhk6gEAIzMyrVEBqjaSHQvf2cI0d3m3Jyjykd''@;'; put 'put ''LSMTp5kZVza3eryXxaJSO6ra/Y5qiaTG0fVuqSTNXq+HxVNd7eUQp2r5VIGUEUeZ5KKMyz1zq4I0yEtm/3UfM8JRb/VPX8u8nrFCqiVSs7XV4qgXrS2oMdlyqc0Vjxdb2+QiHmvyTWd3jy8skjebu+p6W6bMtWTKEktGNxk49vMrLDPjCcdMefM5ZPa+jl7kCf9/tzLjDvpt3Vh09vl8XKLlOBEG''@;'; put 'put ''7KuvrUyf+2oUyZ3BKlcUGIG5fMkC+S9/9Du+Se7J9svuWjPjcXnucmxmF07+XIqHQCEFZoaKXuMaEJp6UurucKT5aMhNCmo+HpaED62amXHf6DaGuOnKigokEVVKHcTmOMR2ahZ7fe0o192uF5DaAlato5qApK73KGreZsTWwHVnrKAZATpQkGaeG/j+wZ4b+PpQ7mdE37WfGSgIM2Ix81zm8cDP''@;'; put 'put ''6Jj1QlnL/miXsP7+hPQn4q4FsqurxxWJrSgHpHV222CRbEPiTXtnp3R190ovPDhxH1oiB+7f9e5HY46MnmzL9IUpWC0dqarViEsk76gr/Hof8vh5V2D+MiR7NxoUmB6zzWV1eiRoHOb4GfCRB9BNvgVdfd4KWFefwAjML3zs/fLh9zzk2/jLG32x9IdGfyw1NpPWzBuR8t9rIyEwMxRcZwoMLOEw''@;'; put 'put ''LC1wGbZfQJmj/SGUvQhJ+9mwpHwSq5kZby63KsJUhKq4VAtnNdpfVsPiWVUFUYpSSlUQn3rfFaF4PSNEowhH0e9WBIxUlCorXZcmLelt5k+/g3o/I/oGik59buAy8DV9Xh8PFLV6P/Onr6UwESoSUyoY9RaP47ioVGujuqTVbd0HUaiJM92wPnbjtqcHf3Bp62N9Xl+PJ5KucLQCljylZYZqYZ2a''@;'; put 'put ''NM+SSbNTUjcOc4VwNHWDj4SQoMAceLT76/78u5Ny+yPBc5NruaLThxx54d9w4F9zvvHXDAxtNIEQmJps8D/+5Pdljo/KEw1tGtLvVmumZm4+89Kv5cfPvoQfF9Qv4OJrAmmBaaFM0fDrYHqxg65VE3GayAtC2QtbWs+F5PQ+Q84eNqT9IkoUW1eLJC+26fd1qDDUdpkqKvU2ghRUFZb6PVOxqm54''@;'; put 'put ''FaDu87hv4P1agSKzpD+f/mzmpG+hm4i6ogfWeFQxmYD40+fSVseUKyRVTCaT6fsqKlVgaiykPqf3rxWqme2Wwi2mREY1WjIB1qjxc2wZPR5JO2gHiOiPglorB2NNgTkYFX88VzvalrVfSCDBCzoMx0qhrNr53ntN6OzvseVpxGH2dAYnLCMQAnPCuEb5n//lPyCmMVr0J233Rw0/egcQm/nNJ34u''@;'; put 'put ''b+09mO9jm+vPgUAELr0lq5KyZE1Ikv3+MBnqBbDGamoqerzHgtg05MzBkJw7Epa2i5p5W3piM4cp5kc9IqDflfomW5qmOzJ+puVaLcsrTJyzCxNbme1uUGBmS6rw70u7yRNwk2PbASy6/tK3EFe/LzhxmIEQmA+uvEP+/W99xvfZ40P5OqpbT62Z2gHoyadfHMpH+d4CEtAfzcWrUrJ0DSyYPhGY''@;'; put 'put ''A3dfC/maprp+ITZh2VSBqTGb546giPtZXDX3BudqeeB+8/7IE4CxGDGUSNCZ5EBUWtKI2pVV9WiPF0NNV3i/1Rqst35bKDD9NiNXj2cB3OTLH4X1El6BoFgwdQ+1XNHO1xx549nglCsKhMD8w9/8pKxddXegBKYecGFYMl9EKaO//+p33dgwfY6Lvwj4XWAOpKV2SwNudBWdVkqk+5JaN9EH/Sha''@;'; put 'put ''U54ypas13a5y4Gd4nwSyJaDHVeUoGzGUtluvcgySdWrHiJRXIeMdFzl2ErGqKiqzXeEIvY8Cc4TAZ7lZtYKv/SyyycuC5Ykx0YnqwklHnv0SOqW5lZCzBOLjtxW9wFS3+N/9xX9EoedxbnyTj1kPeWgaj/S3//w12bRt15A/yw8UhkAxCcyBRNxTM+qvhdWVDh9lf78tXZccaT1jysVTIbdzUOcl''@;'; put 'put ''uP3jeJ0LCQxCIBKxpbJORMvHjJlkS8MEW0aNTgvKsApKnMDUSjkSiTqDDDfrpygws0Y1Im8Moej6Q59Lyli0CRVEJfn9giVbSOplSiYcNw6z81IwzrtFLzBnTp0kf/Onf+hmgAYpaF5jMc+jq8b/8X//vVuKJNuDlO8rLIFiFZjXUnKtmxCb2jlIY5v6+yzp7RBkpqvgNORSc0g6kKXe14NEjBJM''@;'; put 'put ''GLqWV6k9Nk0HiRW21DSK1I+33VjKukZHKmsdtGpEghQuVhyrOAXltXNJgXktEf89Xnp/0g1LCpqbPIIarK98PyTH3kLR1wAsRS8w3/3ASvnfPv/xoixPdKPjx0TW67pNW+Vv/+UbN3obXxthAkERmNdi1KvpEESDxm+qjcCCe7OvB3U320XamtPCU0VnF660412oF+iP/KZrd4OPh0HAjDhSUenA''@;'; put 'put ''GgkX91gISlgoa/Cn1spyFLlWV55mkLkxlBCVmqQTpIUC0/+zOXZKSh74TEq0GkGQDj+Nw9y93pZNT8X8PwlZjLDoBeYf/+5nZfXdKwIXf2mgbMo/ff378sJrr2cxjXzLSBEIqsC8lqdKCoHW1DI/IbVyQlWkIDrjKK3RC4HZAfd6J8ohdeBPYzl7ukIS70bXIQrPa1H65rEBq2SsDFbIOojJBgdi''@;'; put 'put ''0pEaiMpR9RCYNfoa6oWqmMTVhpPCRYbW38T/QfpBH2wyKDAHo+Kv5yJRRx7+YhzxvojvxbkoKMdkJg7zuf+fvesAkKo6u2fq9mVhadKLgKggCAFEaVKEqMRobFEsPxr9TTEaY/1jS6ImakSCYk9ETSxYwQIiUhRQmoICgvTey9Zpb/7zvWUImIXd2ZnZeffufbq8KW/uu/fcO/PO+8r5ns6gI8n+''@;'; put 'put ''1XUW8HH2RmmCKaLLj933ezRv2kS7+EvRwLzzobHYuIXmIrM5FoG6QjArmwD750/4x0FLp1g9o3Svh4KWrcVZVuShm53Ec7cbxXtJPPe6+Jxu9mLGGpW5qRXJUHb5kNlShoDA62WsZEZuFHkFTMKhS1tIZB5JZC6JZQWRpP4nM7tFi0+skTHLpFy1dblwxwOwIZjxoJW+Y08bGUKnXiSXCiSOVRcl''@;'; put 'put ''+b6yYBfjMP38vVQ/DlNpgqlr/KVUFFm6fBXueeTJCqtBdVenOa7WEajLBPNoYNuUkf8cQTxJVSxaM0XKKcj6AeXllEg6IJZOkHSSgPJx7HmAcZ6BUrpgwxWE52jnMa/bxkXGP1rIzAIyKD6dXc9Cdj7lgbjPpUs7u4DPs/leLv8yaYEWFQFexYRISka3JBJC3NwGzEMIGIJ5CApHP2jNcqIDLuJN''@;'; put 'put ''alQvuSKp6jPtJephLlNfD1Npgnn24H749ejL9Iu/9HjxxqQpeOnNyY7+gpvOAYZgxrcKbIMl/7H1Oe1/SJLYhCTo8TrBKjcspxikXFIp7ISiAPfltHiW0Q1fStIpj4OyLwHCAR7HYyMhciT+CWkSd64OmwzD440yy59/JI9+ksPMbBJJEsUsWiOz+ZdLi2RmHl3ZfD2DsZHiNpQkATevSzaJFFxp''@;'; put 'put ''JRZhIEnAERZpiGTVq8MQzKoxcsIRObx5GnFNObLzeNMka90JnUpCHyQOc/H0KBZOUV8PU2mCefN1ozC0f1/t4i/FRfXHMU+bKj5J+LKmugkhmKcMDOOUMyusc6k+n+7t2/SQ/0hWslw13EJC+X/sdYtEyWKN6jCJU9gmli6EKe0RJNkM0TIaLHfzMd30tJAG5LVyPqbUUohup3CQf6xiJMdLNSPL''@;'; put 'put ''kox4WvKoCRqReCe2Lao60YNZ8rYqRXXjoFi3znb3sxmGT9N6K8/lsdQ4j3I8/GNiqNTY9rIapawbL//8GSSG3EsspJe6fhlZFnx8LNZGv7zG432Mg/SQPHp9UkedbUs9UG5CqKOMixQrpC1YLiRdl6tsGhe6IZhpBD/OUw+5IoDmHfghfgl0Wfpiwdy8ysJHz2dU/KbEiYmTDleWYEr9cYm/bNOy''@;'; put 'put ''uXbxl9t27MKtfx6DomKaaczmaAQqapFbrEUuRMZktNTWZNkU6yDREtIlm9t+zndihFRelAMlN4XMS3JU5B8hZBYJakQIWUTqtHMvx9jvSz3sCqJm8T2JKY0eg2TKRY2foLWRpxViKScUQsm+CMEUUul2W/Zzed8jfeSf/X6MLB68Mh66QNp9kc4c7JP9gP2wXzH/pBoBQzBTjXDy2u/SP4Qew+Sm''@;'; put 'put ''UB83ufw2lBywMOmJDOUrrSlLMFtSWP3Ru2+GlFTUSf9S5IlmzV2AR556MXnfQtNSyhAwBDNl0Ka04UOe9IMPSPsqyOhhZz10zGGvHevhD62HRzw/+OSI147VmHkvbQgYgpk26OM+cdM2EQweRbkihpJocwNm34O68OFzXmxfz7tShTdlCeaAPj1w269G0w1G35dGm8gTPfvyREyeNkujUek7FEMw''@;'; put 'put ''9Z1bM7K6iYAhmOrMu4SUDL8myJKkZGW8e9OFZEoc5udvA8vnMZ5G4U1ZgnntZefjgrOHaZXgIzFcpWXluPvhJ/D9uo0KL6u603VDMOvOXJuR1g0EDMFUa54HXBxA2y5URtBIrkiS9VYuiGL2RLUTfZQlmA/e8Rt0PbETs0gZua/JJgRz3cbNuOPBsSgr18syq8kU/dcw/FlR/GhECCf0krrdJgbz''@;'; put 'put ''vwAyLxgEFEPA6/dg/ocuLJ/rsZPCFOt+netu59NC6H22XnGYHhaz2L05iklPZVYk8Ck6q0oSzHp5uXj8/ttQvyCfgfkVwfCK4n9EtyX+8pPZ8/D4c68c8bp54lwE/HTR9D47jI49DcF07iyZnhkEqo+AaIXOm+zGyvkeW22g+p80R6YDgYYtwxh2ZYRqC/q4yEUpIlAaweTxWSzPa0eIpwPahM+p''@;'; put 'put ''JME8sWM7PHjHjXZyj04JPqY8ZMLrudYbEILZ55wwOvQwBLPWwTcnNAikAAFDMFMAagqbrIjDDDAOk7IMGsVhyjqc+k9KFq2kFIWim5IEU0eB9Vj85f/9dRzWrN+k6HKqe932Z0dxxnkhtGEMUDhoXOR1bwWYEeuGgCGY6s3ogEuCaHMy+61RHKYk+sybBHzzmbqJPkoSzBuvuQzDB52hlcC6ib9U''@;'; put 'put ''70dNemwIpprzZnptEDgaAoZgHg0Z577e5Ywwegyni1wjPUxJ9Fm1MIpZb6ib6KMcwfRQVfmvf7gJndq3ZVk5lvLQZBP3uOhfPvr0BE1GVDeGYRPMn8rds9tYMOvGlJtRao6AIZjqTfBx7cMYfFmElbP0icOURJ+ddGZ+8JSfxR/UjMNUjmAW1q9nJ/jk5eZol+Dz3CsT8d7Umep9u+twjyX+p+95''@;'; put 'put ''EbTtKqUIjYu8Di8FM3RNEDAEU72JzM5jXfJrA8gpYF1yTeIwJdGnvJgVfcZnoPQA40sV3JQjmCd1bI8H77zRJpc6JfgEgyHc99hTWLZyjYLLqO522ZYpGh7GCb1Zi9zIFNXdhWBGrg0CQjDnvOPG94tNFrkqk0oVTAy5OohmbSm1XvG/Kl0/ej9ptJTQuY+eZ0WfdWpW9FGOYOqY4OOm23/rjp24''@;'; put 'put ''7U9jsL+o+OgLzrzjOAR8GVF0HRhGtzNJMMuNBdNxE2Q6ZBCIEwE3XZOzJ3qwbikJZlhN12ScQ9bicNEjPvmMKKywpVVFn5lvuLBqgZqZ5MoRzBuuvBgjzxqkVQUfIZiLli7D/Y89o1VddS1+taoYhMcfRaeeYfQ517jIq4DKvG0QUAMBcsqZr3qx8TsPrIghmGpMGnB89zBOv4C62Jplki+ZGcWX''@;'; put 'put ''H6iZ6KMcwdSxgo+XAusTJ0/Fi29Qk8BsSiHgZlB5i44WBl7KilKKBmIrBbjprEEglQiQT4aZOzp9At2SGzy84TcEM5VwJ7PtwuYRnHVVCF41uVilUHj9bmxYbmHahMxK33f6i0oRzLycbIy5/1Y0KmyACOUItNlcbjz61D/x2ZeLtRlSnRmIK4rCJhaGXhWEP4eB2BYDgMxmEDAIKImAy+NCyd4o''@;'; put 'put ''Ba79OLBbyKUhmKpMpCRcjvhFAPUK+TusSaKPm+tx306WjHwyQ8mqUkoRzLYtm+ORu2+mFIHcWepzIS8pLYMIrK/buEWV77Lp52EIZDGD8czLgmjc0s2YLX1Klx42RPPQIFAnEJAEn62rgRl0kZeXqJm5WycmqpJBCicYdgUTfTryTd7o68AQmOODQAB4/wk/ivaptx6VIpin9+yGu377CwJOxDXZ''@;'; put 'put ''JEts/aYtuOPBsSgtK9dkVHVrGL5MCz2GRnDSGSbRp27NvBmtbgiIuPXS2cDiaR6qQqh3QddtPuIdT8/hQXTpR36pUaKPWDE/et6DbWvVS/RRimBe+pPhuPLi87RK8PEw/nLO/MV4aNwL8X6XzPEOQUDiMFt3ttDvYgZvGQOmQ2bFdMMgED8C4iKf9ZoH65eZBJ/40Uv/Jzr0CKPvT/VL9Jn5OjPJ''@;'; put 'put ''FxqCmdIV9rvrRmFI/75alYj0eLx4/b2P8PJb76cUO9N46hAQ10y9BhYGM8C8XqGLmac6OGdSh5dp2SDgRASEXBbtAab904v9eyjYbeIvnThNx+xT41YRDL0yDK9XDxe5DFZqki+eHsXCKeplLyljwRQpn7/e9Vuc0KGdViUiwQSfvz39ImZ/seiYXxzzprMR8GVY1MKMoOsAI7ju7JkyvTMIVI6A''@;'; put 'put ''jxfyZZ8DC6bSPV5u3OOVo+TsV7Pzo/gxE32y85mexft8HW71JWxj9WILM17LcDb4lfROGYKZn5eLscwgb1C/QKsMcom7/MNfn8CaDSw6ajZlEXDx16xxS1oxR1EmQxQljKtc2bk0Ha+DCDCZwmKEy7SXvdixnu5xy2SPq7gK3O4oho8OoFEr9p6/wToQTEk827HBYk3yTOXGowzBbN3iODx69+9o''@;'; put 'put ''+vZqk0EuCT5bd+zCrX/8G4pKSlX8Pps+H4aAP9tCn7ND6NDDbcpGHoaLeWgQcDoCYiVasySKOW97ESgz1kunz9ex+tf/oiDancLikeGIcoSssnFJkk8RpbMmM5M8oJhlXRmC2bt7F9x98/UIBilorckmcktffbsC9zwyXhvSrMnU1GgYYsVs0pqSRZeH4MvgD5zRxKwRjuZDBoFaRcDNuOkwxdVf''@;'; put 'put ''8WLrGje/t8Z6Wav4J/lk3QeHcMogWi+pla2DBVOkisIh0cIUbVa1apIrQzBHDhuIG666RKsMcjcJ5kfTP8P4Ca8n+StmmksXAiJZdOqQCE6mVIapTZ6uWTDnNQhUHwE79nIukyg+8iFYbshl9ZFz5pHtu1WUjHRZ+tQkFyvmlBc8vAFSK5NcGYJ5/agLcd6IwVoRTJEoeu6ViXhv6kxnflNNr2qA''@;'; put 'put ''QBT5hYzFvCKEgoZGeL0GAJqPGARqDQG3102rkIXpL/uwb4e4xg3BrDXwU3Sixi0PZpL79Mok//RVMNnHlyLUUtOsMgTznpuvQ+9TT9FKZD1CF+pD457Dgq+XpWZ2TatpQcDWxTw5gv4XhCtcNDr4adKCpDmpQSCFCJBLCp2c/ZYX67/xsAqXIZcpRLvWms6tz0Sfa8qRnVshNKXDz69IFc2fEsXX''@;'; put 'put ''09WSKlKCYEpijyT4tG/TUiuJIikRKRV8Nm7ZVmtfPnOi2kHAli0aEkbXfi6T8FM7kJuzGATiQkASe5bMAr76xFTtiQs4hx/s9Vn48bVBFDQlwdSkJrkQzGVzLcx5Ry2pIiUIZv16+Xjsvt+jQUE9bSSKJIN809btuP2BMSguKXP4V9Z0ryYIZLNG+ek/C6JVJ7mARWrShPmMQcAgkAIEhFyu+9bC''@;'; put 'put ''3Ld9KC02WeMpgDh9TZJUDtWsJrnX78b65VF8MsEQzKQvrNbNKVF07y3wMilGqqbosIlw/JLlK3H3w09qMyYd5iWpY2BWeUFDCwMuCaGwmQfhoCGZScXXNGYQqAECQi63r4tg1kRm5e4St7hxjdcARkd/pO/IIDr0Zhc1qUnu8bqwa4tFqSLRwlRnvSphwTy1S2fcd8sNCIepJaHJJgk+02bNxdjn''@;'; put 'put ''/6XJiMwwKkNApIsatrDQ/8IQ8iXpJ2QU2CvDybxmEKgNBLx+D/ZstTDrDS/2bhODRW2c1ZyjthE4ZVAI3QfrI1UkWeTFey28R6miYJk6UkVKEMxhA07DzdddqVcGOWuQ/+vt9/Hqux/V9nfPnK+WEZDqEo1bR9DvggjyCt3GklnL+JvTGQQEgRi5/OwtD3ZvFnKpjiXIzGB8CBzfPYTTz+fdgyZS''@;'; put 'put ''RS5qtQbKK8TWi/epE9KhBMH8+U9H4IoLf6IVwXTRRT72uVcw/fMv4/vmmKOVRMAuJdkqgr4kmQWNXIgEjSVTyYk0nVYSAdstznJ7c5gxvne7sVwqOYlxdLpZ+zDOvCwCj0cTqSK5F6LqzPvP+LF7i7FgxrEUqj70N6N/jh8P7q8VwQyFwvjT488wDnNV1QCYI7RAQEhmg+Oi6H9RGPWbMDzIkEwt''@;'; put 'put ''5tUMwsEI8MIs5HLjCgvzJnkZc2m0Lh08W0nrWoPGFoaOLkdGFudbkzAIDzVbP37Rg00rDcFM2kKRhu5lichep3bVSgOzqLgEdz40lpnkO5KKlWnM6QjQXU5LZo/hFpq1ZbUficnU5AfQ6cib/tUtBMSt6GHs2spFUSya4kPJAcrWSN09s2mPQBYVPEZcG0BugVsrqaJP/02x9a/UEVt3vIvcQ1fy''@;'; put 'put ''o/f8Dse3ba2NBqb8yG3dvhO3PfA4DhQVa/9lNwP8IQKs9tMwiu7UyWzfBRDBfVO3/IcYmecGgZojINYeqd+8ZIYb384RBQd14tZqPmrzyRgCumphzpsUxTefqSO27niCmZuTjTHUwGzcsFArDczvVq+jBfPv2owp9sU2++ojIHfZJ54W5p8Fb4bJMK8+cuZIg8DRERDNwOK9UXw13Y3vF3thRYzV''@;'; put 'put ''8uho6fmOzPiQ/wmgWRu6hyr+V36gIrb+9Ywo5n9oCGbSJrNRYX2bYObm5DAhTI/ECJEomjv/Kzw47vmk4WQaSj8CYm1v0awJ2rZqjhlzFlSrQ76MKFqfFEG3MyOsYe6i1cW4zKsFnDnIIPADBFx0h4tLfOv3Liyc5sbOjW56Bqoml16vB5kZfpSUlhtN4h9gqvLTARcH0LaLC9GIpUUUkhDMFV9E''@;'; put 'put ''8dlbhmAmbV22a9UCD//hJv5w6COy7vX58MG0WRg/4fWk4WQaSj8CebS2//LqS9H1xI544PFn8c1331erU5L8U9jcQrfBEbTsJO5yJgxGTGBmtcAzBxkEiICHVstwuYXl8zx0ibtRVlS9RIiC/Dxcf8WFOOH4tviUih6vT5qKsvKAwVQDBHqfG0LnPvw91URs3cc1vvYbC9NfyVRmdhzvIu92Uif8''@;'; put 'put ''8dZf6SWyTg3MV96ajNfem6LMQjEdPTYCcgN0Conlnb++Bn6/D6vXbcBD417A9l17jv3Bw97NzLHQqVfEdpln5Rlr5mHQmIcGgUoRsBN5pMrJJuDrT1l+d5WXxQyqtlpKYxILf93lP8MIKpR4mBAk1dXGv/gapsycg2AwVOn5zIvqIKCb2LrX58bWtRY+eCZDmWQ1xxPMAX164HZetMvLy9VZ2VX0''@;'; put 'put ''VFzk41jBZyor+ZhNDwTycrN5sboQg/v1sdeqXKwWLlmGR5+eQNdb9WvNu6nb1riVha5nhtGsHbGhIdNYM/VYI2YUyUVArJahsiizxF1Y9pkXxfuEWFaPXEpPenU7GTdeezmyMyvqO2dkZGD5ytWUj3sWe/cfSG5nTWu1jkCnPmGcdq5YMCNauMilXORuVqGaJOUiFSkS4HiCOXLYANxw1aVaaWBK''@;'; put 'put ''1vDDT/4DXyxeWutfOnPC5CMglpDj27TEPZTTys/LtRO35DVxcn8yex6efmkiQnGWOc3IjuL4U5kA1NdCfn0XPy9M07jNkz97pkXVEHDzQis0cttaF5bMcnPvqbbVMjZWuSEUb8MJHXgXd7BepHxng6EQ7vvbU1ixai3VHfSI+Y+Nua7t23Zl9bQLI3BpUs1HykUe2BXFJJaLDCmiiuB4gjnqgnNw''@;'; put 'put ''Gf/KyqpvBXL6FykQDOLuh5/EyjXrnd5V079qIJDh97MQQD9ce9kFR2i1ygXL4sXrnQ8/wUtvvh93AoHEZtZrZOFkksy23SIUjBbpFZMEVI0pMYdoiIC4w70kl/sZdbJirgurFnkRKK2+xTIGiZcepNGXnIezBp0BNnnE99LP7/LY517GjLkLEDBu8hhkSu5bdIxgwCVheDWp5uPmYi0psjD5yQyU''@;'; put 'put ''Fashu+V4gvnLqy7GucMGaUUwi0tKcceDjxuRdSV/tv6702K1vImutt6VFAMQkhlmFuMbk6bUOObW66sQZz/xDAvN20fh8Zn4zP+eBfOKtgjwwuojsSwttrBmCTNp57ntijw1cRN6GSt9+QVn85oykHGXzDI/aL2MYZeZmYm3PpjGGPn3UVqmT1hWbHx1ad+oZQRDrwzDx99PHXw/dj3yAOuRj/Mz''@;'; put 'put ''HMQQzKSs5VtvuAqDTu+tTQymEI7tO3eTYI7Fnn37k4KRaSS9CDRv2hj33fK/aNKoYaXJaBKPKdaQf7/9Ad7+aHqNOyuSRs07RHBCHwtNGKfpYdC3sWjWGE7zQacjQOuij2s8QJ63aQWwfK4HOze7a6xrGSOXI88aRMslQ1h+QC4FDonDXPj1t3j4qRdNEQynr48q+lef5SKHjQ6wXKSYqas4WIG3''@;'; put 'put ''uWS59hmDSQvmvp3VU0lI97Acb8G8/5Yb0JPB2IGAHtIRQjA3bN6G2x8YY+6Q0736k3B+uWh16dwBd914LV0xR5fSknkPMdj8dVoyJ07+uNKLW3W748uwKGdkoSMzzpu2isJtiGZ1oTPHqYDAQYtlIGhh80oXvvvCg+3r44+zPHyoonV5+fnnYCQtl+JqrIxcyvHiPhcDwL2PPmk8TIcDqODj3PoW''@;'; put 'put ''hl8TQHZuRcyu8hyTBJMLFx8+68fOTYZgJrwk5aL88P/dhM4d21M2Iphwe05oQKxZK75fa6r4OGEyktAHv89LC3sv/Gb0ZVWuUZl7SfZ5mfGYk6bOSDiJQCyazWjR7HCqhaZto8jIFHc83UFGQzMJM2uaqG0ERCjdy78A9Sw3r3Tju/nuhImljCGLWeJXXTQSwwaeweQgfj8qsVzGxirXnHAkgj+N''@;'; put 'put ''eQZLl69K+Dsaa9fsax+B7FxaMK8pR34Djzb1yOXm6KMXvHZiW+0jGv8ZHW3B9FOQXMpEtmrRTJs65EIyFi1dbmcqxj9d5hNOQ0AuXucNPxNXXDiyWmEcMv+lFHKe/PEMWjKn0XWe+I2Tx2ehUXOgffewbdnMLmB8DnOBwhQY1sE15LQ5N/1JLgKSFS4ZsqX7o9hIV/iqhR7s3kKLZVhMNolt9evl''@;'; put 'put ''4xfUuuzbsxuJJSu6HINcxs7k43XnEbrIP/9ycdzqD7E2zD79CPgzoxhOF3lBE1owOe/KWzAJqdfrxscT3Nj4nTf9AFejB44mmLE65EeLbavG+Bx3iGhgzp63AA+Pf9FxfTMdih+B7KxMJg2cg/N/PKTaiWhCMoOhMGbOnW8nE+zdXxT/iSv5hJtZ53mFFlqdGEGbkyw0aFbxg2SsmpWAZV5KLwK0''@;'; put 'put ''xEhGuFSt2rvTwoZvPFi7xI19u6pX3rE6nZfY6F//z6U4sdPxjF2jFmI1yKW0K3GYT00QwfW5DM1K/AawOn01xyQfAY/HwohfhNDguCgJph732r4MDz55xYV1Sw3BTHjFyN3nY/f+Hg3q17O1BRNu0AENCMGc8unneOKfrzqgN6YLiSKQk52F0Zeeb8sUxSOlJSRTJIwWUYz9pTcnY93GLYl25YjP''@;'; put 'put ''+/xRNG1DsnlSGMd1iCJfrJo0CEWMC/0InMyTWkSA68/jcdNaCQTKLGynjuXapR5sWulBeYn0I3GLZWw0XTt3pFfhXHRq36bSxLvYcZXtJZP8H6+9g/emfIpyQzArg0iJ19zuKM66OojGbcguNXHmSD3yT19zYTUlulTYHG3BbNqoEI/ddyvESmRpInorQeQig/GP195VYX2YPlaBQG5OFq4fddGh''@;'; put 'put ''Cj5VHH7E2xLvJURz3aYteHniZHz51TdHvJ+MJzwFsvMYo9neQuvOEVYJiiKnHpOR+J8hm8lA2LRRFQLi/pYqJKJ4sG8H6N7zYMO3buzZVvOM8KOdUxLthvY/DRecPQSNGzaokWEiKyuLcdKT8eb7/eqQVQAACklJREFUH5u65EcDWoHX5bdvyNUBNBOCqYkF08vqVQunulgW1afADPCWsfvgnxJ6''@;'; put 'put ''Z24tmzWlBfMWO7Ovuu4NZ47kP73ysA75y29OYjbx1P+8aB4pi4AQTCkROYQXtZqWM5Wbjn0HiuzEn/c/mR1Xacl4gJM7+uwCSh21i6A5s9AbtSTZzHezri3jNY1lMx4ozbHHQoDrSZIRhFTSM40DuyPYtoakcrkbO9Z5bNkhublK9taEBokLzxmK/n16IjPDXyNyKX0SgvnqOx/aig9GCzPZs1S7''@;'; put 'put ''7Q0eFUCLjjwnq6A5lujEAYkQzK8/BUmmP45Ppe9QRxPMDm1b4S93/da28mhDMEkmnv/Xm3h3yoz0zbo5c9IQSAbBlM54aHkRQfZFS5fh37y4rV63MWl9rKwhqRKUW2DZ7qPmrHjRRMhmfTf7IVpr4krXxKdU2eDNa8lHgHzRS/e3i+tHLJVFrLazbb0bm1eIxJCLLnAhlMknlbGB/KjbSbjkJyNw''@;'; put 'put ''PK8ZDLZMyOMlLvIXX3+Xv9GfGgtmDGBF9wMvDaL1yew8Ex51IJhy07ZmCTDztQwlZsTRBPNkBmf/+fZfJ/Rj4bRZcPMKPu6Ff+HjWfOc1jXTnxogkCyCKacWq44QzW07dtmC7J/M/iIpWeZVDotkMzsnioYUb2/GSkGN20RQ0BDwM6Bc4kSNK71KBOveAeSKHlopXbzgybotL4ngwE4Xtq0jqfze''@;'; put 'put ''hV3U6Qva1X1TRyoF9IYNCmxtyyH9ToPUFw9TBizRzcRgJoqgcz7f/6IA2nVlMhlvmHUhmGtJMGcYgpn4Iut+8gm4//e/TMqPRuK9SVIL/DF+7JmXMGvewiQ1aJpJJwLJJJixcdjWTIqyL6Q1U0TZv1u9LvZWyvfiKfDz5rheEwvHtWGiEN3pDZqSgNZjcgbzhKK0bobpbhKXk9nqEALkieL2lnhK''@;'; put 'put ''qYITCkVQvBfYs9Vtk8rt61gjfIe4xLlIamHz0RPUp0dXnD9iMNq1aZmw1fLwLksW+fP/fgvvT5vNJB89CnwcPr669LjfzwJo300fginfvx0bLXzwdJYS0+hoC2afU7vgDzddX6WAtRJIH+xkhBfmR8b/A/MWLVWp26avR0EgFQRTTiVWIYnN3L13H6ZSLmXKjM+xa8++o/QidS+LKz0730LDFrCz''@;'; put 'put ''0huyvm+9hlFk5njZR8Y1GcKZOvDT2TJ5oodrMGahDAdIKA+4sG8bbOukuL33bmcZx1LpZGqtlD+EoWO71rb27I9Y4U10aEOh0A8PSei5EMzxL76GqbOMTFFCQDrgw6f/JIjje3F98oZdh1tiqUe+b3sU747LdAC6VXfB0QSzX+9Tcedvrq1x8kTVw6/9IyS27YG/P2eLrdf+2c0Zk41AqghmrJ9i''@;'; put 'put ''zSSTw9oNmyjOPhOfz/8qrSVG3R5qbTaIorA566G3tlDYzEJ+IQlnNqtliIWToZtyExUVC6cOv+ixidB5z+tvzN3NKEqGJEVRXkZCua/CKrlroxs7t7hwYAflhMTtHa1dQhmD/rgmDTGc1XjOPP1HqF9Qz/ZspSI23xDMGOLq7/UkmBYJprFgJrw6B/btidt/dU21BawTPmEtNBAMhvDnsc9iCcuQ''@;'; put 'put ''mU19BEQH80pW8Rl51qCUrlOpLiJlJpetXE2iOctOBgpwLaV7k8x0qfnboFnUzkovpKhxfkOL9X9JWvwkx5JwIUlDQjjlz2zpReAwy6SQSU4Ps7ojKD0AFO12UTqI8ZMkk/tpnSzex9Km1BlPRcZ3PCA0KqxPUtkLQ/r1QdPGDW3B9Iikp6doMwQzRcCmoVkdCeaebRYmPWEIZsLL6dyhA3DDVZdo''@;'; put 'put ''ZcGUyhD3/m0865GvSxgf00D6ERCCOepn59ouu3iE1mvS85jbXMSfly5fSbf5HCz6ZjlDSNJPNGPjEbd5JhOG6jVm0hDJZgNaOAv4OKcea6XnuCuqt5DViGtdEojEWmYsnTH0krinkdGOmZREHJJKWTuSrBUoJZlk4ajivR6SSdDl7aE2pcu2VgbL5fzpsU5WNnLRsTyjV3ebWIpknWzJSOKp7FyH''@;'; put 'put ''v2YI5uFoqP1YO4LJ73HRnijeGmNc5AmvzCt44b7kvBEs16VPoLUEjd/76HgmbqxPGB/TQPoRqE2CGRutkAWxaArR/Pa7VbYigdS3Lym103Zjhzlm76FbPTu/wrJZ0ISkk0lD+SxpmZ3PsnzZJJ5ZjOdkb+08T0M8qz9vBE3WAjkk5YEq9hJOYZFIBmmVDLA6TvEBNy2TJJI7hUhWWClLi2iZtH9S''@;'; put 'put ''BXXnbVLiUbxX/Xv3QDM+lq02iGUMCUMwY0iov9eNYNozwq/thLsNwUx4dV5+/tn4Of90IZhyMSgpLcVdf3mCpQE3J4yPaSD9CKSDYMZGHSOaYQawr1q7HjPmzMcXi5di526m9zp8q7B0WsirD+QyhrOAiUOSPJRNd3tWLvd5kuQkuoq0wNnedYnrFI97RXyn7Wy3/3H4QBPpnhBHfl4C+2WuxRIp''@;'; put 'put ''Gdzyori2g4EwiSRd3NSYLGECTvFexknSzX1gF5/TvV28HwiVixtcWnH25vV60LFtawxifGUvJu80LGxgy9PVJrGMIWQIZgwJ9fdaEkxOy4R7DMFMeHVeP+pCnDtsoDZZ5IZgJrwkHNdAOgnm4WCIRVPI19YdO/ElFQpmfbEQq9dvpls0dbFqh58/WY/dZJMZWYzrbGAhpwB2QlEuqw/JX1ZexXte''@;'; put 'put ''/rb6M4SAMsbTdv/y7CSf4nIXd7vtdudLkmh0iIMeepCsntawnQp+KIZGEsWKJzZpFPIozJH/S1ejtEJGKA4dDFh2HKSQyDJaHktJJEuYfFMkfxQzL9vvRlkp3d+2/KM0qtZWkJ+HHl07YwCr73Tu0A45Odl2Vng6SwMbgqnWGjpWb3UkmPLdePm+7GMN2zHvOTqL/LZfXo1+dJMkW4YiXegbgpku''@;'; put 'put ''5FN3XqcQzNgIRdpI6puXlJRiBfUzP/tyERZ/s0IJq2ZsDEfbe9wWvJkuZqxbdpxnZh5Y6lIsnizvl2sxxlNc7i5kZFjw8zi3Nwo3S/b6xBIqBE6EPIWQygliXIxsTnhpbLMpaex5bB978/B97PPc07Z46B2bOMozeUnalsdCfvmogjQKcZQ/un2ZQBMKuEgiKVROklhezOxtksgyurbLikgoiyus''@;'; put 'put ''k4EyN49hW9Z/ziPNqrpl+P2suNMSfXt2Q8+uJ+I4usE9nBv5nU9FVni8OBmCGS9izj1eN4JpyxTtoEzR340FM+FVd9sNJJh9DMFMGEjTQMoQcBrBjA005j6XC/b2nbuxdMUqzF3wFZYzuexAEZmLphsdwjap9Aqx9FnwMdnSz8fezCh8/E32ZXDPMr4iJu/xR1k5ifGs3FeQUVZSYla820twyAxt''@;'; put 'put ''PkqSam+yO8jvLBI9SyyGfC4Z8lZIpH1IGENCHGlN5D4UdiMc4D7oIpEkiWR4bDggRNFCJFiRnS1xkHK8fPZQ4/JQw02sza2aH4ceXTrbLvC2rVsgmzW/xcKeDjf4sSA2BPNY6Kj1npYEc7s6MkX/DwAA///r8VITAABAAElEQVTsXQd8FNX2/rZl0xMSSkLovXcBBUSKgNg7dkXF8tRn74o+n/7V''@;'; put 'put ''J4oFsIMdO4KCFEFA6b33HkpIAklI22z5nzNhNcQkpGyZuXvmR5jd2Zk7937nzsw3p5q6DrrUA50uj919C/r17o6ioiKd9rBq3TKZTMjNy8NTr4zDnv2pVTtY9tYlAlGREbjhigtxybCByM/P12UfLRYLbDYbHHQdHTpyFBu2bMfS1euxbdc+ZGXn6LLPeuqUx/P3LZKvYVkqh4DNakXD+kno2rEN''@;'; put 'put ''undqh6YNUxAXGwO32w2n04mSuFauxcDsZbfbMX7SZMxeuASFhY7AnFTO4hcEzrrUgVY9TPA4Xfj7KvbLqQLSqMlswvEjbvz0TkRAzlfTk5iEYNYUwsofLwSz8lgZZU8jEMySWFrpoc9/TDaPpKVj07adWLl+M7Zs3430Y8d1+9AvOQb5rF8EIiPC0aRhfXTt0Aad27VGo5QkxMbEaPOKSSWTS70v''@;'; put 'put ''YWFheOvDz/H74hUodKih3NA75v7q39lXFaJZJyKYLrc6BPMwEcxxQjBrPGdEg1ljCKUBPyNgNIJZEg6vZtPlciE94xh2k1Z93aZt2Eikc//Bw8gvKCy5u3wWBP6BgNlsRp3EWmjVtDE6t2+NNi2aoH69OoiIiADPK/4zAqksOTDW9o/94DMsWLJKexEr+Zt8NhYCqhFMs8WEQzs9mDkx3BCCEA1m''@;'; put 'put ''AMUkGswAgh2gUxmZYJaEiIkCP1h5yc8vQOrhNGzfvZfM6TvIlL4XR9IzyKzpKnmIfA5RBGKjozTTd8e2LdG2RVM0bZSChFrx4BcWJpRGd2kqJpifE8FcKQTT4HN84PWFaNiaBuH2KKHBtFhN2L0O+P1ruyEko2uC+fg9I9G3ZzfD37C8M0EIphcJddaqEMzSEuGHLBMG1j5l5+QQ4TyKrTt3Y8uO''@;'; put 'put ''Pdi5dz+Oph9DEZk8ZVEfAZ7jKUl10apZY7Rv3QLNGqeQ1jIBEeHhf/lTGk1LWZHUhGBWhI5xfmMf33NvdCClFfVZIYK5YzWw8DshmDWeiQ/dcQMG9OmlHMF8+tVx2L1PgnxqPEF00ICqBLMktKzdZLLp1VDlnMjFwSNp2LF7P5FOIpx79iMtI1NM6iVBM/Bn1lAmk5mbCWXblqyhbKCZwSPJ7M0v''@;'; put 'put ''yayhZE2lqosQTDUkazYRwbzFgaSmFN5Drr8qBPlYw8xYPRdYPTvMEELStQbzRorOHXHJeRTJp44vWKHDgefGTNA0QYaYIdLJChEIBYJZGoCShJO1BCeIcGZQgNCeAweJbB7Ajj37cODgERyjCHWViUhpXIz4nSO9E2vFUTBOMmkmG6Bl00ZaYE5iQi1NQ8lj4uAc/guVRQimGpI2W9wYdqsTtRu4''@;'; put 'put ''QVxTCYJps1uwdAawYX6xO5PeJaVrgnndZcNx3WUXqEUwKe3Fc68LwdT7hVHZ/oUiwSyNDWu1WLvJ0em8sIaL0x8dPpqB/amHsWvfAeyjNWs9s7JPiGm9NIAB+m61WlArNlbTTnKkd/MmDdGI0ghxkA6nD2L58QsDk8lQfjEQghmgCenn01htHgy/vRDxSSYimGr4YIaFWzB3sgm7Vhffa/0MYY2b''@;'; put 'put ''1zXBHHHxMNx45UVKEUwOlPjvm+9jLUXrymJ8BIRgli3DklpO3oOtEGxaT888rkWoc5T6vtRDREIzadsx5FFgkV7zIpY9Qv1uZRyjoyJRKy4WKcl10TC5Hho1SKZ1EmonxFPaoGhwKh5emEjyn0o+lDWVjBDMmiKoj+PDI9wYQgSzVh2zMj6YNjKRz/nCjL0bhGDWeJYN6tsTj9w9UrcJrKszQCfl''@;'; put 'put ''43pl3EdYsXZTdQ6XY3SGgBDMyguEtZys7WRNGa9ZU8YR68ezs8nEnqVFrh+k6PVDaRk4cOgwjmXlaMQzlLVpFaHLGsmoyEjEk/axXp0ELT0Qpwhi/8m6tRO07fw7486LkMmK0Pz7N56f/5swCYtXrBVt+9+wGO5TZCyZyG8rRHS8WRkNJkeRz/7EigPbiq9pvQtF1xrMc87qgcfvuU0pgumBCWPe''@;'; put 'put ''nYQ/l6/R+9yQ/lUCASGYlQCpgl2YaHq1nbzmPyaeeVTxKic3D8eJZLJ/J6dJOkLazqOUrzPzeJZmgj+Rl48CcjlRlYCaCRu7PQycvDyOkpXXio9BnYQEjUzWq5NI60QkkJYymoJyOKLba+JmDaaXTIpWuILJV85PrMEc894n+HPZGklTVA5GRtgcm1hMMMMjyUROHVYhyMdMlXx+/ciKw3uEYNZ4''@;'; put 'put ''Dp7ZvTOevn8UHBQYo8piogfo2A+oSsSi5aoMKaTHIQTTP+Jnoukln17iyWdi4sTm9gJKAp9P66ycE5pfJ6+PZ2VrWk/2/8wmczyb5HM1Ekr7ExFl4soWhGCag1mbGGazajlHw4k88vyJJi0jm7TjYqKIRMaRaTuGtI+x2nf2jeR9IohkhlMJQ68WmIkjj4fXPB4hkr6bh2Ii9x2WwWwpIcmNoSML''@;'; put 'put ''YQsneqkCu2SWTOmWfnk/DBkHhWDWeG717NIBzz54pzJpihgQC5lf3vn4S8yav7jG+EgDwUdACGZwZFCagHrJqJdwMeniYCPO2lBU5NQIJn9mX08Hlf/LLyjQCCoTVS4HWEBklbfzvk4isbzmsAD2mebPbs8/SxxyBLaNyKJ2bpOZ/Bpt8G5j8sg1re20LSLcjgj+TNtY08i/8TZtX/rdTv6QrH3k''@;'; put 'put ''MXmXkuPwEkghkV50/LsWgulffAPVer0mLgy+wUnXlhoBPmTQoPuRBz+PD0NWuhDMGs+jTu1a4b+P3qOUCYwJ5qTJU/DDjN9qjI80EHwEhGAGXwYV9cBL2pgEekko7+/dXvJzSQLn/exdl3cObpMX77rkZz7We7xXa1p6XXIfrSH5L+gICMEMugh80oGGrV045xonOB+mEgpMMo8X5rkwbUI4co//''@;'; put 'put ''/TLqE7D81IiufTA50e8rT92v3by9N2o/4RCwZi0WKyb/NB1f/kjJrGQxPAJMMDlf68XDBirlK2x4wcgABIFqIlBMMKUWeTXh081hLbq60OcyKgjALiS66VX1O8L+l7nZRDDHhaMgTwhm9ZE8eWRjSq3x+uiHNb8jVQgmm8J+mjkPH375Q43xkQaCjwD7zo0ccQnOG9iP/AILgt8h6YEgIAjUCAFO''@;'; put 'put ''4fQ2uTHN+3OZ5j5Ro8bk4KAh0LZPEXqdR+6X5PKiBMG0mJCV4cbP4+wocgjBrPHESq5XG2Ofe0TzZVKFYLKJfM6CxXjroy9rjI80EHwEoqMicOcNV2FQv95CMIMvDumBIFBjBNh3dsInX2MW3acLKThMFmMi0PXcInTpT0FwFNinAsHkFEUZB4Fp5IPp8RS75uhdMro2kXNSYNZgciSl13dJ74Ce''@;'; put 'put ''rn9MMBctW42Xx318ul3ldwMgwATzjuuvxOCzzxSCaQB5SRcFgdMhwATzwy++xy+/LdSCxE63v/yuTwTOutiBlj05MkYNDabVZkbqTjd+/dB+is+3PtEv7pWuCSZXnHjjuYeplFmCMoE+HFywZsMWKhf57l8BAHqeINK3ihEQglkxPvKrIGA0BMIp0n/S11M0VyZObyWLMRE4Z0QhGndkgqmGBpPr''@;'; put 'put ''kO9a78K8L8INIxBdE0zO+zb2+Ueo3Fk9LeebYVCtoKNMMLfv2ovHX3pTS4dSwa7ykwEQEBO5AYQkXRQEqoBAREQEvvjhZ3z/yxwtrVUVDpVddYKAiYziw251oG4TMo5ThjEVTORch3zTYg8WTSku86oTqCvshq4JJnsZjP3Po2jepBHloiuqcCBG+ZHTmaRSObzHXxpLiaDzjNJt6Wc5CMRSFZV7''@;'; put 'put ''Rl6Dvj27aQnAy9lNNgsCgoBBEGCCOXnKdHwzbZYQTIPIrHQ3w+xEMG8vQHxddcpEMsFcTdkNV86ylR6ubr/rmmAyai89fi86t2+jTDUfJphHMzLx1CvvIC09U7cTQzpWOQRioiM1H0wJ8qkcXrKXIKB3BESDqXcJnb5/UXFEMKkOeVQc5b/lfLSnP0T3ezDBXDwV2PinEEyfCeup+25D317dlQqg''@;'; put 'put ''4GoiTDD37E/1GU7SUHAQ4DRFt15zKYYN6KvUHA0OmnJWQSD4CLAP5kTywZxK6eTEBzP48qhOD5QrE0kgMMGc+6UJu9ZaqwNJUI7RvQbz37ddp+UYzM/PDwpA/jgpl5574c33sX7zdn80L20GEIFIqhF93aXDcfkFQyTRegBxl1MJAv5CwJumaOb8RVr5UH+dR9r1HwIprVwYQFV8LGY1tJeMFKcp''@;'; put 'put ''mjXJgtTtQjB9NnNuufpiXH3xeWo9vKlu8evvfYKFS1f5DCdpKDgIcF3pi4acg1tGXCoazOCIQM4qCPgUAYvFglfHT8SSleskENOnyAausZbdXDiLq/gokgMTHJDipjrk74ch86Ax6pCztHWvwbxs+CCMojyDKmkwORcm51mbOut3loEsBkbARrLs07MrHr7zJmUC0QwsDum6IFAjBDjLR0FhIZ4f''@;'; put 'put ''8y627txD/IRCkGUxHAJdBjjQZRDFkitSxcdEZSId+S5MHW+cOuQ8aXRPMAf26YlH/zVSKYLJ5SK/+3k2PvmWPHZlMTQCFnogtWnZFM8+cAfsVGJOlYpThhaKdF4QqCYCfG9OPXxEI5iH0tKr2YocFmwE+lxciBY9qZyiIknWzVQmMueYm+qQ2+EoMEaZSJ4DuieYZ3Ruj9EP3aWUdog1mPMXLceY''@;'; put 'put ''9z4N9nUo568hAkwo69VJxHM0RxulJCs1T2sIjRwuCBgOAfa/XLpqHd744HNk55wwXP+lw4QA3ZMH3+hASiv6TGZlFSLI2f/yaKobv5AG06PZy40had0TzJZNG+HVpx/QSiOpoh2Saj7GuDgq28sYiiT/1y3XoP+ZPcQPs7KgyX6CgA4R4Ajyz7//GT9Mn4P8gkId9lC6dDoEbGFunHebA/FJ6qQo''@;'; put 'put ''soaZsW+TG3M+M04VH5aT7glmct3aeIOq+UTQha9KPXLOhbn3wEGtmo/cxE53u9D/72FhNgzpfxbuvulqSbauf3FJDwWBMhHg+zL7XL7wxntYv2WHMuWJyxyswhuj492UZL0QkdFEMGmcKmgwi6v4uKmKj91QktM9wVSxHrkkWzfUNXLazrI8mzSoj/88cjfiYmPkwXRaxGQHQUB/CISRD/XWnbvx''@;'; put 'put ''0lsfIj3zuP46KD2qFAJ1G7lw7o1OWG1qmMd50Ewwl88A1v5unCTr3G/dE0x2un599ENo1rihUv5tHKk4+rUJ2EZ1yWUxPgJsJueSkWf3FjO58aUpIwhFBMQ8robUm3Z2ot/lbqrg41ZCe8lSYYI5bzKwc7UQTJ/PUtYM9ejcQSnzI/keY8y7n2DRijU+x0saDDwCVsqd17t7Jzxy181aJLkq/sKB''@;'; put 'put ''R1LOKAgEHgHOfclBPc+9/i527tkv2SACLwKfnVG1FEUMDEeRz/zYgkO7jJNknfutew0md/KBUddj6Dl9lUpVxJHkH335PX6a+TsPURYFEIgn8/hjlFKrc/vWSr0MKSAaGYIgUCECXH/859nztRKRuXnqVI2rcNCK/tj3CkpR1NUMjyIpisgDC04nJVkfH4asdOMkWefpZQiCeeMVF+Lay85XjmBO''@;'; put 'put ''/20B3v30W0Uv89AbFidd70tJ1x8YdYMWkCZazNCbAzJi4yHAWT2YVD5P2svt5LLkpjQ3shgTAbPJg3NHOpDUhGRIOfJVkKSZkqznZrsx9R07CvONkwOTZ5AhCOawAX1w/+03KEUw+aa2ct0m/IciFmVRBwEO8vn3rdfizB5dJGWROmKVkSiMAGsvv5n6Kyb/9Cvy8gsUHqn6Q4uMdmMopSiKSVAn''@;'; put 'put ''RRHnwEw74MH0CXYizBwXb5zFEARTxWTrTDD37E+VVEXGuVYq1VNvZZ8n770NMdFRElFeKdRkJ0EgOAhw5Piefal46e0PqYJPWnA6IWf1GQKJ9V0YeksRrGE+azLoDdnsFuxc68bvXxkrRREDZwiC2bRRCl575kGwI7ZKZses7Bw88fLbOHTkaNAnsXTAdwiE28Nw0ZBzcPPVl4gvpu9glZYEAZ8i''@;'; put 'put ''wC/5bA7nYMulq9ajyOn0afvSWOARaNqJIsivUC+CfM1cN1bMFILplxmVEB+Lsc8/ivi4WKU0Qi6XWzORr9u8zS+4SaPBQyAuJhr3UHWffr27K+XaETxE5cyCgG8R4LREP/wyG1/8OF1M476FNmitdR1UhM4DyPfS5VLC/5KB5BRFC74zYdtyY0WQc98NocG0Wi2UC/Nh5XJhmkkj++6n32DG3D9Y''@;'; put 'put ''FrIohAAnX29Yvx4evfsWbd4WUt5TWQQBQUAfCLDf5bLV6zGWao5nHs/SR6ekFzVGoP8IB5p0oGZIeaNCgA8DYuEURZOsOLjDWBHk3HdDEEzu6OgH70Cvbp2VMjlyEvmfZs7Fh1/+yEOURTEE2B+zXavmeOjOG1EnMQEOh0OxEcpwBAHjIWC327F73wG8Om4i9h08rJTblfGk4bseW60erURkQjIR''@;'; put 'put ''G2KXKhBMTlFU5OAURXZkZxorgpwlaxiCeecNV+KS8wYpZW5kH6BV6zdr6TF8d5lJS3pCgLXv3Tq0xX0UWc4uHkVFRXrqnvRFEAgpBJhcss/7axMmaVXUuPa4LGogEJdIAT63FSE8kogNDUkFgskJ1rPTPZhGBLPIYawIcp5VhiGYHDRx980jlCKYbEZNPXQEj744VsvDpsZlLqMojQDnx+zZtYPm''@;'; put 'put ''k8mR5UIySyMk3wUB/yPA5DItPUMzi6/fskMpf37/o6f/MzRs7UL/a12wUAJMFcglI24NMyN1u5uq+ITrXwBl9NAwBJMf0KMfvEs5MyMn+H361XcoZdHBMsQjm1RBgEkml5K8+6arEU11y50SsaqKaGUcBkCAyeVBSkP01kdfYuO2nUIuDSCzqnax09lF6DZEvQCfjYs8WPyTMfMuGYZgNk5Jxmuj''@;'; put 'put ''HwI/qFVKVQSTmdJkTMIfy1ZX9XqS/Q2GAJvLu3dsh/tuuw5cVlJ8Mg0mQOmuIRHgaPFde/fjzQ+/0OqMi1nckGI8bafPvqoQzTqZKIJcHQ0mR5D/SSEam5fYTjt+Pe5gGIIZEx2ppSriYAkXpSBQZeHcnt9Mm4nPv/9FlSHJOCpAgOV9Vo/OuIVyZNarkygkswKs5CdBoCYIsAsSay5Xk5/7BMrW''@;'; put 'put ''cYDckZRSTtQEHMWOtdrcOI8q+NRSKMCHRcRVfGZOtFAEufFSFHH/DUMw+Wbx8pP/Roc2LZV6KHOqomWr1uHFtz5kecgSAgiwJrND6xa49ZpL0bxJI20+y4MvBAQvQwwYAvwix0GUs+Yvwmff/aylIuJniCxqIlCrrhtDbimEPYpkrIgDJk9Xx8kI8hwDRpDzTDMMweTO3k+mxaED+ipV45lvevxm''@;'; put 'put ''/ZgE+rCIQ2bhh1+TBvVx/eXnU/qtTppPplsiWkNG/jJQ/yFgs9lQSCnBfp49H19NmYGCQkkP5j+09dFyk44unH2li9ITqWMe5/yXmUc9+GWcnZ4Pxnw5MhTBvHz4YNx+/RVKRZLz5ZlfUIhnKNBn594D+rhapRcBQyAhPg6XDhuA88/tjzB6MEqEecCglxMpiAD7W3Iwz+SfZuDP5WukQo+CMi5r''@;'; put 'put ''SN2HOdCpH+B2qkMwuQb57vUuzP3CmBHkLCdDEcwzOrfHcw/frZSJXBMCabPe+fhLzFm4tKxrR7YpjkBkRDj5ZXbBiIuHoX5SXTGZKy5vGZ7vEfCaxNnf8vMffsGOPfuV8tX3PWLqtMi6vcE3FyKlOVnH3R5VLORaichVczxYNduYEeQ8wwxFMBsk18WYZx/SHLdV8lnjij5sznnv8+/UuepDcSRU''@;'; put 'put ''PiIyGrBHeHAsrWpVF7jqT7MmDXHVhUPQm0zmvEgqo1CcRDLmqiLAgTw5J3K1e+jPcxbgWFZ2VZtATIIbucdNcLuNaYqs8oAVOiAixo3htxciKt5MJnJ1CCZrMOd+YSItpjEDfHiKGYpghtvDMPY/jyIlqZ5SD1/2x9uwZTue/d94KqEqlSWMeu8LI2LZY0gREhsAcz+zIje7aiSTx82J2Af17YlL''@;'; put 'put ''hg2kKPPaWmlUlV6mjCpb6bf+EGCtJf9t3LpTM4nzPdRR5KxyR9v3caLbQDc2Lzdh7TwrigqFZFYZxCAeUL+FCwOvddJcUIdccoCP00n+l+/acbyKyoogiuIfpzYUweTeP/fQXVQVpaNSNck50CfzeBae+L+3cORoxj+EJBv0j4DZ7EG9JnSju8EJm82CPRtclL+MyntV42FlpYdmk4b1cRn5HPfu''@;'; put 'put ''1lHT2EvOTP3PAelhYBDg+yVrLdMzMjF97h+YMXchjmefqNbJG7Zxos9lbkREe5B/woM5E8OQfpie7h4hmdUCNAgHdepPCdbPVSvB+t8lIsOoRGTVFRVBEEOZpzQcwbzl6otx9cXnKRfo4yLfkVfHf4xlqzeUKSjZqG8EwiLc6HVBEVp1N8Pp4DytFmxe5sGK6bZqm93YN5P9ji85byBaNWtC7biV''@;'; put 'put ''0tzrW6LSOz0iEBZGD1yqgrVk5VpM+XUe+Vruo2uienmR4+q4cc7VDsTVI1MeGY6sZJJcORvY8IcVzmq8GOoRL9X7xNadQdc50LAdjdSljgaTS0Tu2+TGnM+MG+DDc89wBLP/mT3w+D23KpWqiAXBpp5vplLCdXJQl8VgCJDvZWKyB+fe5IA9kipJ0MsCmzjcHnJ9WACsmmOj79XTiPANNCE+FoP7''@;'; put 'put ''9cYwStHFQUAcaa5SsQGDSVu6GwQEOPUQL9t27sGUmfOwYu3GGkWIs580V35JbmEq9tuj3IlmqxkZB9zk9xZWLfeWIMAS8qeMiPJg6KgCxNZSy/+SK/gYPcCHJ6fhCGbTRil47ZkHNUKmkm8a+2FyBOTzb7wn1SYMdtu02jxo09uFnsM9J7WXxQNgTulykVznmLDxz5qV+mKCmlS3Ns4lojmQfDTZ''@;'; put 'put ''P1OIpsEminS3yghwACS/fO/Zn4qZvy/C74uWIyuneuZw78nZV6/XRQ607EYXKOdN9Cbm1r56MO/LMKTuNFPJweq9FHrPI2v/I5DczIVB16vlf8mo2UiDOecLM/ZuMG6AD4/DcAQzItyOt//7OOrWTlRKi8MEIi09A0++/DbSM4+zbGQxCAL2SA/6XlGExm1NpxJM7j+5z7C5bdVvZDJfXPObhZnm''@;'; put 'put ''SXK9OhQI1EsjmnwdsOlc8mcaZLJINyuFAGss+aV7/8HD+G3hEsz7cznSjx2v8cs32RfQdYgLHfuQTZzs4n+Ry5O94sjdNfM8WPc75aQVM3mlZBXMnTqdTf6XQ9Tyv2TFRFGRGz9PsCM73RJMeGt8bsMRTB7x8w/fhTO6qBXow+MSP0xGwWiLh1KckJnmZgeiEujxRX5AJRdNB8Ik00Ekc45vSCa3''@;'; put 'put ''z0SzLtUyH3DWGejfuzsaplARXlqYaKqk2dcGJf+FBAL8ks3EkufvvtRDRCqX4ffFK7QXbp/MaWq30wAnugwgbmly/YNcMsgWmxkHd3ow/ysbCvKMG1wRChOG58TgG4rQoDXdcxXKf8n1xzMPE8EcH05KNGNr0Q1JMG+68kJcc+n5ygX6sDno22mz8Ol300Lh/qDEGE0UPZ7cnMw0lCbDxC+bp/JL''@;'; put 'put ''bYx/k0yQZsSKdQss1fbJLAu0WnGx6EWZFdg/uVWzRoiKitKStYufZlloyTa9IcCaSiaW/HK0ffc+zP1jKRZTEM+xrBzfdZXISEfSdnUeaILFSuSynGxwJirPl5flxsyJrD3iK9fYD3jfAai/liJjPTjvtgIl819uX+XBgm+Mm2DdO1sMSTDP6tEZT99/h1KpilggfKNdv3k7Rr8m+TC9E1Tva4vV''@;'; put 'put ''jRZdPTjrUhdcZNYob/GSTDf7ZM4in8wlpKkpf/fymqlwu53yxLZp3gRnk0azW8e2mp8mv+Vzwnapc14hdPJjgBFgbaXXvzIrOwfrNm/TzOBrN22tUfBOWcMwUxBex/5OdDqH7rEWijin666M98DiQ+lCdVMqzTmfW5G2x1LtDBBl9UO2+RaBhq1d6H+ti/J1qFMekhHiAJ9FP5mwaVHNXap8i3jV''@;'; put 'put ''WzMkwUyhSNoxox9COOVC84nppOq4+e2IbHJgf+Llt6ie7lG/nUMa9h0C1jA3OvR1o/sQD/lsnT5diuZfU2imFEaUDmU+JXX2Q44zflFJIK1m907t0Lt7J7Rp0RRxsTHatSJk03eyl5aqjgAH7Hi1lexfuWTlOixasQZ7ySRe3XRDFfXCaiWfy3OL0LY36SLNREQq8VLHOQgXfGulXLZmuA1uoqwI''@;'; put 'put ''G6P/1p2KWnTq71Gq/jgrzPkZMeNDG9L2Gtv/kueXIQmm1WrB66MfRrPGDdULbqDZNfaDzzB/8UqjX/8h0X+b3Y0ug1zodDb5P1aCYDIoZrNJ863ZtdaDNXMpJUqWpt/0C16sJapfrzbl0+ygEc4WTRsimkzootn0C9zSaBkIMKnkechz7iglR2dt5eIVa7GeKu+cyM0v4wjfbLJTbtqe5zvRvAsH''@;'; put 'put ''i/8zoKe8s7Af5uKpZmxfaSGrhP+uzfLOL9tPjwAXthhyi4OKW7D/ZQUa6dM3pas9+NnALho/jbejUAEfYEMSTJ4RD4y6HkP691EvHybdiGfO+wPjJn2tq4kvnSkbAVs4lYccWoR2Z5oqTTC5JQ7S8dDfIQooWDXbivRU/7+t2mxWNEiuh64d2qAHJXBv3rgBYmNiNPM5+2uKz2bZMpatVUOAzd9e''@;'; put 'put ''v0p2zcik6O+tO/dqfpVMKtMzjlFMRrlG6qqdrJy942q7Nc1lk/acl7by5JKbY4K55Gczti0XglkOvEHfXKuuG0NHFiKM8g6TB0T5Lg9B72nVOqAlWN9CFaU+sVftQJ3ubViCef7gs3HvyGuVC/ThmzPnfHvqlXeQm+e/t3udzkfDdUur4HO+C616VF6D6R0kiVozhxyn6qBrfrNhz3qOWg2MxoSt''@;'; put 'put ''AClJ9dClfSt069AWzZs0REKteC34iIMtmBio5n7ixV3WvkeACaVXU8llTdMzj2Hz9t1YRbl9N2zdoZFKF82pQCz1W7rQdZATtVPoWiqZ57KSJxeCWUmggrhb6zOc6H0xMUt6Mfbvq0pgB8n+lytm0vNgbs3yJge21+WfzbAEs2XTRnj16Qe0B6JqD0IHPeD/QwnXN27dWb7k5BddIFBMMJ1EMKum''@;'; put 'put ''wfR2numkyWJGYQGwdRkF//xhJdNIYEimtw9c+7x2YjzatWxGwUHtNJ/NOom1wGX5mGiK36YXKVl7EeAXYS+h5G3ZFKiTejgNm7bv0kzg23fto/rgOQF9SbGRP3TrXi6yJrgRGUfc0lm90oFCML1S1u/6bCrx2awjydhFL8L67WaVe8YpimZNsiJ1u/8tWlXuXDUOMCzB5DrNY59/hKqb1FHOtGe1''@;'; put 'put ''2vDlDz/jq59+rYZI5ZBAIlBTguntK/vesH7n8A56e51HEaz7gnODYeIQExWJFvQC16ltK7Rv3RwN69fTTOn8G5NNNqWr9lLnlYOsy0agNKHMy8ujwhCZVAt8PzZs2YEtO3cj9VAanDQ3grEkJLvQ+RwXGrbhSHEK/CiVj7YqfRKCWRW0Ar+vVh7y9kLEUt5hE7laqEIwNf/LEx5MfYdysOYG5/7v''@;'; put 'put ''a2kalmAyEE/eexv6UUqWggJS/yi0sGZg3aZtkq7IADL1FcHkoWomcyKaudkeqvpjIR8wKxwFgdVmloacTenJ9BLHkegdiGy2ataYqmglIDIyUttVzOmlEVPju9fkzfciXphQHqUKYzuJUG7ZsZt8KvfgwKEjPk8pVFX0wuweNOvGWksX4hIo3oMTbteQcQjBrKoUArt/wzYunHONi4qkqaW9ZP/L''@;'; put 'put ''A9s9mPUR5b/kh4ECi6EJ5mXDB2HU9Vcq54fJ84r9L5+kdEX7Ug8rMM3UHYIvCSajVGwyJ20mqTMP7TRpSdmP7NbP2yxbDlij2apZE3Ro0wKNqYIQm9O9hNNrTpe8m8aZ86ydZELJkd78mWV3Ijf3Lw0lm7u37dqDg0eOBp1QlkQ1qYkL7fu6kNKyWGvJVbRqyC215oVglkRZf597nU9pp84iWTvV''@;'; put 'put ''Ipia/+Vsyiwyx/gJ1r2zxtAEsy1pVV5+6n7NXKeayc5MmoP3P/8Ov8xZ4JWVrHWIgK8JpneI/AKrmUxygZ2rKG/mUgtyj+uvdF0x4UzSgoT4emzSsD7qJiYgOjpKIy18XXpJp2rXqFdWRlp7yaRXQ8l9ZwtQ5vEsHEpLx+59qUQm92prNoGzP7jelthE8rXs7USLTh6Ex3Bi9JprLUuOUQhmSTT0''@;'; put 'put ''9Zn9bIfdVoRaSR6loscZZfa//HWiBYd2GD/BunfWGJpgRoTb8eZ/HlXSD5NNU0tXrcOLb33olZWsdYiARjAvoCjy7lWPIq/McLR0RsQrjx/xYAuZzXett1A6JP0RTe9YwsJsqFc7USOazRo1IOLZgPJw1kV8XAyiTprVhXR60fLvmkkkE0rWTPJnxj0/Px9czCGNUgVxvW/2odx74KBW2CEnN0/T''@;'; put 'put ''Xvq3V9VvPTLGg+bdnGjZ3YXYRHoD46I8NbWHl9EdIZhlgKKTTay1HnorJ74k4ZO62hcaaz0MjZUJuTluTHvHjgIF8l96MTU0weRBPH7PSKrBfIZyfpg8No7CfOKlN3H4KOWxkUWXCIRFUB7MYWSy6VW9KPLKDIrN5mYreRyRf9nh3cCmJfSWu81KmsHKHB3cfZjgcNBQvTqJaNygvkY8G6UkIalO''@;'; put 'put ''bdSKj0VEePhfSbg5eIjNs/wn2s7KyY3x9f55Tdz8nbXGOSdywWUYj6RnYP/BIxqh5PVh0lTydn+Qs8r1ump7Rca40aQjlWQlX8uEJL4aSGPpI3N4WT0RglkWKvrYxgE+nSkFVQt6ybCRxk/TXuujazXqBftf7t/swexP1ch/6QXD8ATz/EH9cO+t1ynph2kircP4iZMxa8Fir7xkrTMEbOFUJnIw''@;'; put 'put ''+4L5R4NZcrjEGyg1jJmqVwEHd5JGc4mV/DSZePJD1zgLEyA2rdemvJv1k+qgQf0kNKDyr/Xr1aFcnHGIJfM6+3R6A0zKIp6hREC9BJLXjIlXM8kYFBYWIr+gEMezsin35HHNzM3BN4fSjpJWMo1M39na78aZHX/3NCrOgyYdqBJPNzcS6nHcAxMK//vdCcH8WwZ6/dSwjZPK8zqRkMzJ8DmrhV57''@;'; put 'put ''Wrl+sf/lkp+pfPBCNfJfekdteILJ1Ug4HybfeFV76FjItPXnslV4ZdxEr7xkrTMEmGB2G8z1yCtXi9wX3WeiyfWSnQ4mmiZsW2GmtfGrjjBxioqMQEJ8HFUcqktazkQkE+nkqHXeVkw8I2Cn/Jxcz9q7lNR68j2Av3sXvd4TmCx5Fx43L7z2/nl/Y3LtJZEnKJL7GBHGjGNZWgAOm7bTqPRiJn1n''@;'; put 'put ''a0dBIU0IBRau0tK0swuNO7gQz6bwABFLL3RCML1I6HsdGU3azMFFaNHVQ1aQk764+u5y2b3jKU5a+V8+CEP6fv0EdJbd2aptNTzBDKPyd2889ygaNUjWzEJVG76+9+aH0DHSTIiZXL9yCgbB9KLBHMVCpvMiCnJI28vBQFbs32pSooatd4zetY3SJcWQZjMuNgbx9JdIms7aCbU04plApva4mGiq''@;'; put 'put ''sR6paUbt9jCNhPJLJ5uNy3r59JJQ75rPw2S0NCEt/d3bn5IEkbfxd++2kp+95LHkcUwavflEC6nqDRPD/PwCMIHMzsklbWSOdt0zkeTgG/7LIr/JE+QjydrK8vrkPYcR11abB3WbuNG8E0eFU6L0WNLMk1YqGJHCQjCNNYMatXORNpMCf+oZU5vJyoKsdPK/HGeHs0i//vXVmRWGJ5g86H/dfDUu''@;'; put 'put ''HDJASTM5R5OPm/gVZs0XM3l1Jri/jwkmwfSOzUs02Ucz85AHezZasWeDGdnpat2svOMta82kjgOMIux2RETYERURoRFSJp2sFY0mk3tUZLj2OZyCA8PD7LDbbRoRDSNtKNdp54pGxSZoYu6kU7CSO4LJVBwcU/qcHipB6C196KJqIpxgnMkqE8aiIqdGGjkC2+Eo0ohhHkVq5xGJ5PRjubn5Gplk''@;'; put 'put ''H8lcCrrJzy/U9udjVSSPpbHzfuexxtYGGrV2olEHN+o0AKw2E1xkBueqA8GyegrB9ErIOOsICgDrOqgIzbu66aXSWL6ZbB7fstSDP35QJz2Rd+YoQTD79eqGJyjpOpuSVFtYA7J8zQYtmjyUHj5GkaMeCKYXK6ZFHAxkMnm0ZO0HdwB7N9hweI856AnbvX3U41ozS5/UQHJiea8Gkgkn/8YE3ruw''@;'; put 'put ''rxd/dxKpZELJf05nMbnk65MDZ+Q69aJV9poDNeo2pcCd9i4kkdYyKo4NhEQKivzvX1l2j07dKgTzVDyM9I3dKrqR2TwhyQJnoTHqlNvsFvw+2YSda9RJT+SdM0oQTA4WGEvpitiEVtLk5R2k0des6eCk6weoFJss+kJATwTTi4zGh0h5yWTJSdqgY4c9ZDrnKEULfSYzUnCq+Xm7J+sQRMBO2RZq''@;'; put 'put ''N3ShUVsXkpt6EFObEruzHzGR82BqK8sShRDMslAxzrbIWNJmDihCs+7km0kujXqONOeXVUcBmcfH23HiuFr+lzxjlCCYPJD/PnoPunZsSyYpNRzdeUzehYN9Pv7yB0yZOc+7SdY6QUCPBLMkNEw2zTYKHqEPBfkeZBwksrnFgoM7zMhKM14EesmxyWd9I2CPcCMxxU31wd1IIlIZVxfkisAmcDJ/''@;'; put 'put ''kwY4WCbw06EmBPN0CBnjd9aQdzuXk7LrV5tppXtz6g43Zn4cbgxQq9hLZQjm5cMH4XZFy0aymW795u0YPWYCaZ9E/VTFOe7X3fVOMEsOnt+WOSiI1/m5bvLXBFIp+vwwpTo6dpi0SYo5mJccu3wODAIRFNlbhzSV9VuRprIxaSrrkC8rkUoPkUq3jkllSXSEYJZEw9ifo0ib2UWLNGfXFv/mT60O''@;'; put 'put ''Uux/uWw6sG7+31kxqtOOXo9RhmC2aNJQS1fEZExFHyiONH1uzHhs3blXr3MpJPtlJIJZUkAUu0IBLcVks7DAQ9pMN47s4zJlZqQftCA/m/ZmJiqLIFABAmZ6aEcnUIBOIw9SWri0dXQtrh5E2nHKbmAUUllyiEIwS6KhxuemlJ2g60AH4pOscOnFN5Nur8xVZnB6ogPqmcd55ihDMNkhf8zoh9GM''@;'; put 'put ''8mJyChDVFk638t3Ps/HJt1NVG5qhx2NUglkSdKaRHBzE6TI4gvdElgfHDgKHiXCm7aUUGkctcOQL2SyJWSh/DrNT4vPk4rRCyRSsUyuJ0grF0MsKvdyzzy/8WGUnELgLwQwEyoE/Byfu7zLIQXkzi9+d/VkNqjKj49rjmQfd+PldO1km1cz4oQzBZIHeft1luPz8IUqmK+LIVq7Q8diLY7VUJ5WZ''@;'; put 'put ''wLKP/xFQgWCWREmjkScDhEDaqaJCIpzHgczDZqRRNPpRIp45aRby5xTCWRI3lT9brGTqTiBC2chNuSpJS9mAtJbxQFg4WYuYT5LpW2+BOjWRhxDMmqCn/2ObdXGSNpOS+NelF6IgajPZPL5uoQfLflYvPZF3FihFMLt2aIP/PPIvJTWYLDBO5THm3Un4c/kar/xkHWQEVCOYpeFkGmkizSb7bvIM''@;'; put 'put ''1Agnmc+z0kxITyXfTfrLPEI+nTkSnV4aO6N+t1DS8xgikAn1XahHhDKhvgfxtT2wRxancOJyjW6Daykrko0QzIrQUeO36HjOm+lAsy5cICE4vpmswZz1iQWp29RLT+SdJUoRTK5vPPb5R5BUt46SwTBSOtI7bfWzVp1glkZa01sS4SxOQu6hlzkPCvJIy5lJVaeOmJBxqDhgiJO8F+ZSbkOPaDpL''@;'; put 'put ''Y6i372GUQiiW/CgTUzxIbOBCYhJpKBPdlLDeqr1c/OVLqdewbx8DKgTTx4DqtDn2f+TE7F0GOlErwNpMdkfKyXRReqJwSlOkpnmcxa4UweQB3XfrtRg+6GwlzeQ8vmzKifn0K+9g/8HD/FWWICMQagSzNNwafaT7o4UTktMbOXmta1rO/FwP+XJyKiQyrx+yaBrP7Ayg8ASlDJFECKVhDNh3WxgR''@;'; put 'put ''R4qsja9DZDKZfCmJVMbVoWTnsVQJyU6CpHxWXkLJeYRChFOegr8QzFPgUP5LTLwbXSmdUdPOpM2kGR8I30xOrr51uRt/fG9XGl/lCGbvbp3wzAN3KJkPk2eixWLFVz/+gq9++lXpiWmUwYU6wSxLTsVaTpqrFKruJZ1OqtLCpDM/x4wcIprHj5roz4wT6SbkZpnIp7PYn6+s9mRb1RFgGYRFeqim''@;'; put 'put ''txtxiUQoiUzWqgf67CKCaUJ4JLk9aBk3in0oA/FQrfoognOEEMzg4B7Ms7I2s0U3NzqfQ5HmdSnS3OHfKkC2MDN++9xCZX3VjB73ylI5ghkbE423qKpPAlX3UTFnJKdh2rX3AJ5+9R0J9vHO4iCuhWBWDnyNdNJ/mj/nyfRIXDvdUeBCYR75cJ4gjecxC9VPNyE7kzSeR4E88vUszJP8nBUhzJmk''@;'; put 'put ''7EQkwyn/ZEwtN9X2Jo0k/XFQTjRpZsKjiWhGUI112pG1kRyQw2QyVLWTFWHp/U0IpheJ0FvzNcR5M5uTNpMvEn+8eJnJSpCbQ9Hj4+z00q2ueZxnj3IEkwf14KgbcG7/s1BQUMBflVs42Oe18ROxaOVa5cZmtAEJwayZxDTiSf5IXGnIfJJ4sjahiKI7CylSvZh8msjcToTzGK/NRDxNyMuh30gj''@;'; put 'put ''6ijg1Eqc+7Zm/dDz0VarmyK2vRpJUO1uIo/0IGQzd2QcmbxjSCNJfpQ2ikq1EJDs9soPRibwHv5TGBt/yE0Ipj9QNU6bfP9p1d2FzuSbGZtIwYs+1mayeXz7ag8WfK1u9LhX2koSzL49u+LJ+25HYWGhd5xKrS2U83PZ6vV48a0PtUStSg3OYIMRgukfgWnEk8gSE08T/ceaT20b3fxdFFjkKKIA''@;'; put 'put ''o0JaEwktIC1nYS4R0BO8JvJJnwv5cz7V+c2jYCN6z3QXAUVURZbJqJuy6gR7sVg84GhtK7lg2aiIhz2SNY2kcYwCIqI8RBpZKwnKL0mfo9ywhpOPZDiRSDKtWdnXlTWSRBw5kTlxSPogRNJXMhWC6Sskjd1OLAW6dSVtZpOOxb6ZnDnBFwtfw3O/NGP3enWjx704KUkwVTeTc07M/IJCPENm8h17''@;'; put 'put ''9ntlKesgICAEMwig0ynZNMz/kccIrTk2hQNUtI9ah1hz52QtHqXUcRK5dDrY1E5rqsHgJKLppHdPRyFpP3k7fS+i7S6NgNJvRRTo4mLNKFei0WgtkTn6TqTW42Zyx6cgOwKd30JKiGLjs4c0sNDIn4nyRtro2WGmtSXMQ8EznOaJCCSRSSsF2dh4bad9iFjy8RZaM2nkVFCsgSxun87ABJLZsLbm''@;'; put 'put ''UwqJ1ITr5/+EYPoZYEM1z76ZLnQf4iKXE7NmWalJ90PJPM44KUkweWD333Ydhg7oq6yZnCv7TJ05Dx98+QMPV5YgISAEM0jAV/K0XiLKuzN385I3vtFrX0qQUt6n3OUkuWPS99dCTZj5BNzUaRbtMI0rMkktboSTlGufuNHif6dpRX4OBAJCMAOBsrHOEVvbhZ7nFaFRe28J1OJruKqj0Mzjq8g8''@;'; put 'put ''/o365nHGRlmC2bNLB4x+6C5lo8lZe3I0IxNP/N9bSM+kUiuyBAUBJpjdB7vQvi9pwchvUBZBQBAwNgJCMI0tP3/1ni0VrXq5tLyZ0XGWat3vrSfN43tCwDzOclCWYEaE2/EmRZOrmnSdhWcmm9ykb6bgxxlz+assQUCA/eJ60Jtt216mat1wgtBlOaUgIAhUgIAQzArAkZ8oUwNpM4cVoXEHCgA6''@;'; put 'put ''WdWqMrBo5vFsF6a+E07+4ezbo/6iLMFk0Y26/nJcNvxcZZOuF6cs2o+nKPF6Xr6aEfN6vwQ5MKPXBS6KOhQNpt5lJf0TBCqDgBDMyqAU2vuwNrPNmS50HcB5ZSvnm8m1x7cspeTqP6idXL3kzFCaYHZo3QIvPn4v+cazc3z1fCZKgqXLz2Qqf/ujLzH3z2W67J7qndII5vlOtOohGkzVZS3jCw0E''@;'; put 'put ''hGCGhpx9Mcr4ui6yYDnRuK2ZggApo8NJ/+qy2uZ5NfsTEw5spai+EFmUJphWSuczZvRDaN6kEYqKKIRUwYVTFq3btA3PjZlAUbPiAxhoEQvBDDTicj5BwL8ICMH0L76qte7VZnYZ6KK0YmVrM7n2+PEMN34ZF07p0ioRFagISEoTTJbR1RcNxS0jLlXWTM5jdNFb0yvvfITlazfyV1kCiIAQzACC''@;'; put 'put ''LacSBAKAgBDMAICs4Clq1SvWZjZq809tJpvH1/7uxvIZoWMeZxErTzAb1k/StJhhlHROVTM5+2IuX7MBL739UXHePAUvXr0OSQimXiUj/RIEqoeAEMzq4SZHEaEyedD2TCdVAXIjMvqkNvOkwvLXD2xI26927fHSc0B5gskDfo7SFfXs2lHZyj48Rgdlin7xzQ+wbvM2/ipLgBAQghkgoOU0gkCA''@;'; put 'put ''EBCCGSCgFT5NfD0neg53oSFpMznH7eE9Tkx/P7y4UIPC4y49tJAgmOec2QOP3XOrsknXWahW0tDOX7Qcr737SWkZy3c/IhBGNaB7Dneg9Rll+9748dTStCAgCPgBASGYfgA1BJs0m0mb2ceJHkM8WDXHhPXzQye4xyvukCCYMVGRGEs5MeskJsClaCAMJ14vKHRQsM94bNmxxytfWfsZAZud69W6''@;'; put 'put ''0LGfpCnyM9TSvCAQEASYYC6aYsbO1RatbGhATionURaBhCQXCnJNyMsJjdyXJQUZEgSTBzzqOsqJeb66OTF5jBYqH7lwyQr8b4JoMRmPQCxcW7rdWW70GEa1r6WSTyAgl3MIAn5FgCN+F3xnwd71lEj7ZC16v55QGhcEFEUgZAhm6+aN8fKT95MTLiUVUDQnJo8tv6AQz78+QbSYAbpgLVYPmnZy''@;'; put 'put ''oe/lLridiuZaDRCWchpBIOgIcECGy4PfvrLh4A5LyPnMBR1/6YBSCIQMweT7xouP34fO7VsrW5+cZ6ZoMQN7fXLUYFITFwbd4ITZSucWjhlYAcjZBAFfImA2wZHrwZxPwpB+mJ4aHn5yyCIICALVQSBkCCaDc+7ZvfHgHTcpHewjWszqXAbVP4a14XGJHgy6yYHYRNKOk/ZDFkFAEDAmAmwezzxC''@;'; put 'put ''GsxJYcgNQZ85Y0pNeq1XBEKKYMZER2Hs848oHezDE421mH8sXan5YqrqDqCnC8oe6cZZlzrRtIMJTodUU9KTbKQvgkBVELDZLdi+0oMlv1jhyAu9oIyqYCX7CgKnQyCkCCaDMfLqi3HVxecpXdmHx+mg0pj/pbyY6zdv56+y+BEBi82DNj1d6HWhBPr4EWZpWhDwOwKWMDMWUwT59lUU4FMk5nG/''@;'; put 'put ''Ay4nUBqBkCOYjRsk47VnHoLNZlU22IdnLNcoX0GlIzn5usvtVnoSB3twFFuFhBQXhtzogC2CtB5UulMWQUAQMBgC5H9ZmOsm/0s7MsT/0mDCk+7qEYGQI5gshGfuH4Uze3RRurIPj5NrlL82YSKWrFrPX2XxIwL2SA/6XuZA4/ZmMZP7EWdpWhDwFwJWMo/vWushDaYVhfliHvcXztJu6CAQkgTz''@;'; put 'put ''jC7tMfrBu1BEZmSVF9Zibtq2E6PHTCAy7VB5qEEfm8XiQeOObvS7oogCfYLeHemAICAIVBUBskTM/9qK/VstlHJMzONVhU/2FwRKIxCSBNNGQTD/e+YBtGjaWHmSSYk/MX7SZMxesKS07OW7jxGIjHVj4DUO1GlsJv8tcUvwMbzSnCDgNwSsYRak7nBj4WQb8nJFe+k3oKXhkEIgJAkmS/j8Qf1w''@;'; put 'put ''763XKR/sYzabsS/1MJ58+S3knMgNqckd6MFarG406+JGn0vccLuEYAYafzmfIFAtBEhZyfrKBd9YsXczaS+lek+1YJSDBIHSCIQswYyNicYbzz2sfMoiFrjVasNn303FN9NmlZa/fPcxAhFRbpx9VRFSWokvpo+hleYEAb8gwKmJdorvpV+wlUZDG4GQJZgs9puuvBDXXHq+8lpMTr6ecSwLz7z6''@;'; put 'put ''Dg4eORraM97PozebqbJPMzcGjHDCaqdCIBJR7mfEpXlBoPoImCixegFV7vntUxsyDpops4j4XlYfTTlSEDgVgZAmmMn1auP10Q8jMiICbsVT+VhtNsya9yfenvjVqTNAvvkcAZvdg479i9B1oAlFhRLx43OApUFBwBcIEJdkF6Jl083YulzyXvoCUmlDECiJQEgTTAbivpHXYPjg/iGhxSygSPKX''@;'; put 'put ''3voQ6zZvKzkH5LMfEIiIJlP5lU40aC0k0w/wSpOCQI0RsIVbsHWZmwimDQ5JS1RjPKUBQaA0AiFPMFs0aYhXnn4AFnqTVb2sIqctWrtxK14Y+75W6af0ZJDvvkNAS76e7EL/EUVUq5yiyp0S9OM7dKUlQaBmCHDOy8O73FhAaYlysswU5COm8ZohKkcLAv9EIOQJJkPyxL234uzePVBQUPBPhBTb''@;'; put 'put ''YiIizWmLZs1frNjI9Dcck8WNBi0oAfvlRbBHmig6VSr86E9K0qNQQ8BqM+NYugfzJ1tx7JCFFAuhhoCMVxAIDAJCMAnnTm1b4oVH79E0mKprMTng58jRDDxNAT9HM44FZpaF8FksVg+atHfiTEpdZLFR0I+QzBCeDTL0YCNgIXJ54hhpLr+x4eh+M/nei+Yy2DKR86uLgBBMki2Trucfugs9unRQ''@;'; put 'put ''vnwkT2ULJZr/Zc4CvPfZt+rObB2NzGLzoHlnJ3qeLyRTR2KRroQYAkwuc7Pc+PMHGw7uJJcoIZchNgNkuIFGQAjmScTP6EzlI4lkql4+kofLhJoDfl586wOs37w90HMuJM/HJLMFkcwzLnBTXlKIuTwkZ4EMOlgIcKWe7AyXRi4P7xFyGSw5yHlDCwEhmCflzUE+/33sHnRu3yY0tJgn65Q///q7''@;'; put 'put ''yC8oDK1ZH6TRcqWf5p3d6HkB5cgkbYpU+wmSIOS0IYUAJ1LPPOzBoh8sSCOzuOS6DCnxy2CDiIAQzBLg9+7WEc88cCccDkeJrep+tFismPTNFPww/Td1B6mzkZktHrTs7kS3QW6Ex5ikZrnO5CPdUQsBTkV0aJcHi6dYcDxNAnrUkq6MRu8ICMEsISGr1YIXH7sXHdq0DAmSyabyrJwTGP2/8dhz''@;'; put 'put ''4GAJJOSjPxFgc3mDVk50H+ZBfG3A6ZAURv7EW9oOQQTMXCLXjN0bgGU/W8n3koN5JKAnBGeCDDmICAjBLAV+nzO64Mn7bg8JgslDt5JD4OIVa/DK+ElwuaTqTKnp4LevXFIyMcWF7kPdSGkOFHGeTOGZfsNbGg4dBMxU/pErs21facWKmRYUFRDblEUQEAQCjoAQzFKQh5oWk4cvuTFLTYIAfo2O''@;'; put 'put ''d1NZSSdadKfgH4skZA8g9HIqBRGwhJlReAJY+7sZO1bRZ6nQo6CUZUhGQUAIZhmSCqWIch4+1+NNS8/E6DHjcfDw0TIQkU3+RMAW7kbTjm50PseF2AQqLVlEqkxJ/uxPyKVt1RAwm8gaY0LaXmD1b1SlZze/rIlJXDUxy3iMhYAQzDLkxRHlLzz6L3Tp0DYkIsoZAqvNhoVLVmDMu5/CReYlWQKL''@;'; put 'put ''AJvMayW50GWACw3aerRUUm6nsMzASkHOZkQEOL+lk17Ktq0wY9NCK7KPc+FHIZdGlKX0WS0EhGCWI89uHdviOcqLGUp+iZqpfCKVkVwgZSTLmRZ+32yPcKNZFxfa9/EgjgKAioqIZLqFaPodeDmB4RAwkdbSQlrLzEMerJ1nwf6tRDQd4m9pOEFKh5VFQAhmOaLlCOvRD9yBXt07h0SNcoaBTeVc''@;'; put 'put ''PnL0a+ORejitHGRks78RMJkouryeG+37utCknRu2CDL3idnc37BL+0ZBgJSTNtJaFuR5yM8S2LTIhpxjrLEUraVRRCj9DA0EhGBWIOd2rZrhxcfv025bqtco98LApvIlWlT5RDidElXuxSUYa05nVL+5Cx36uFGvKZnNSWOjEc1gdEbOKQjoAAE2h7sp2wWXetz4hw1H9oB8LUVrqQPRSBcEgX8g''@;'; put 'put ''IATzH5CcuuGRu27GzJmaHAAAQABJREFUwL69QkaLyaM3U5Wfj778HlNnzT8VDPkWFATCIjxo0tGFNj1dqF3fRJVI+KEqfrJBEYacNCgImMkUbqYXrIyDbmxabMXeDRY4CkRjGRRhyEkFgUoiIATzNEA1bpCM/z3zIOxhYVputdPsrsTP7B5wIjcPXEZy++59SozJ6INgDXpUjAdNO7nQsqcbCfWI''@;'; put 'put ''aBLHFKJpdMlK/ytCgHNaMrnMJo+drStN2LnKgtxsCuGhe5QsgoAgoG8EhGBWQj533nAlLjlvEPLz8yuxtxq7WEiLuXHrTrww9j3k5ReoMSglRuFBRAzQrFNx7syEJB4Umc5ZoymxQEpIWAYBCt4xw2QBso+Sn+VqM3autiCHosPhEWIp80MQMAoCQjArIanaCfF447lHERcbHVJR5Vzl5/tfZlO9''@;'; put 'put ''8qmVQEl2CSQCHmKTkdFAo/YutOjGpnOP9lB2cmojiToPpCjkXL5CgLgjl3fk96TjR4hYrjFhzzoK4DlOG4RY+gplaUcQCBgCQjArCfWVF5yLW6+9PKS0mGyGKipy4vX3P8PilWsriZTsFmgErHY3GrR0o0VXCgZq5kF4uAlOF1FQ+pNFENA7Ahy8xknSucBAxgFg51rysdxoQT5V5JHIcL1LT/on''@;'; put 'put ''CJSPgBDM8rE55ZeoyAi8Pvph1E+qS9HVzlN+U/kLpy46cjQDz1LqosNp6SoP1fBjs1jdVN/cg+aURzOltQextdikCJqvYj43vHBVGwBrK6k0KsgMXpDjQepOE3atMVMFHqodXihmcNXELeMJTQSEYFZB7sMG9MF9t14XMtV9vNCwqXzZ6vV4ZdxEOIqKvJtlrVMEOI9mVJwbjdpRUFAHJ5FOyhto''@;'; put 'put ''59J5HkrxIlpNnYotJLploqAdK/3xS8+xI8C+TRbs3WTG8aNkGncJsQyJSSCDDBkEhGBWQdSsxXzm/jvQqV2rkCOZFosVX02ZTn8zqoCY7BpsBDiXZr1GLjSmWucpLUirSbXOObErk02P+GoGWzwhcX4mlRb6Y2169nEPDpO2cs96M9UNp1RDoq0MiTkggwxNBIRgVkHubC7mEpJP/fv2kEq+zhCx''@;'; put 'put ''P2aho4hqlX+CZWs2VAE12VUXCJBWMzIKSGnlQsN2LiQ14mh0Cz3zPaRNoie/kE1diEmVTvxFKulOmZvlwtH9ZuzbbMYhSpCel03aSlGkqyJqGYcgUC4CQjDLhabsH8JsVvzr5hEYOqBvSAX8MBqcuoj9MJ8bMwEHjxwtGyDZqnsETGb2z3Sjfis3GrYmv80GoIh0fuh7RLOpe+nptIOkoORE6Fwb''@;'; put 'put ''nPOz5ma7SUNpxoHt5Fe5g/LqZvH8op1kEQQEgZBBQAhmNUTdKCUJLz52X8ilLWKo2B9z5bpN5I/5MfILCquBnhyiJwTMFjabE9lsSWUpW7hQpwFpOkmzCdJ4aj6brNkUbZOeRKafvnD0N5m+TRSrwyVMsylPZdpe4OAOC47sNp3UVAqp1I/ApCeCQGAREIJZDbytVgsuGz4YI0dcGnJaTIaLSeZP''@;'; put 'put ''M+fhgy++l4oa1Zg/ej2ENZvRpNms19iDlJaUW5PIZkw8aaVsxVopTn0kpnS9Si8A/SKuaCFSyZV12JG3MNeJYxScc2SviUilGZmpFhTkcT+EVAZAGnIKQUD3CAjBrKaI4mNjMPrBO9GqeRM4HI5qtmLMw9gfk5VaEyZNxqwFS4w5COl1xQiQBjM8Akio70Jy8+JAobh6QEQUVVgh/uBxUfoj1m6K''@;'; put 'put ''72bFOBr5V5Izm721co3sg13gQm4O56okUrnHqhHLLCKYbon+NrKUpe+CgN8QEIJZTWjNdMPt1a0THvvXLVoL7L8WSguTzByqV/7yOx9pJSVDaeyhOFY2pcfU8mh5Nus1cSGxvhuxtSlQKNKqmdO1uuic3J2vg9C6FNSZDkQoWUNpIg0lX9/OQiKUWR5kHjHj6D6O+jbheJoZhfm0o2gp1ZG7jEQQ''@;'; put 'put ''8BMCQjBrACwH/Nw78lqc2/+skDSVc9DP/oOH8Z833tOSsdcASjnUYAhY2Jye6CENp5v8NilQiEpVxhHhDI8ivzwbabWIaHIlIRcFfIiWU4fC9WonmVCSDyWXYszPd5LfpAnHDpmQTlrK9FQzsohcFhQU/67DUYR8l2z0DLKH2RAVGYnwsDDY6LM3RJ/f85xUia2ALGx5efnII0G6tAsy5GETAAKE''@;'; put 'put ''gBDMGgLdILkeBfzcg4Ra8SFV4ccLG/tjrli7Aa+OnyRBP15QQnBtJpN6RCyRzLpEOpPcSEj2IJ4+R9E2O5nVuRQgazfZtM7k0y3BQ4GbJV7NJAXkEJ8kBTOVZSTtZP4JD7IzyHfysBkZRCozD1JKoWNmFGkeP6yllEVPCERGhCO5Xh00bVgfjVOStapyibXiEBsTjXA7kUubjYKuLKf4xTtdLi1n''@;'; put 'put ''M6eYyzmRi6MZx5B6OA17DxzCngMHkXoojdLPhZaLl55kqnpfhGDWUMKsxbtgcD/ceePV9KbPr/qht1jpxjZ9zgK8+9m3xSbS0INARlwGAnRpIDKWTOl1PKhFZDO+jovM6rQt3kWaTjPCqLoQ+/hpxJMt66zxZLWLmNnLQPM0m5gPklmb85lzDkr6qBENFwFamOdEfq4ZJ46xiZs0lEQos2idTd8d''@;'; put 'put ''eZKT8jTIBvXnlKQ66NS2FTrSX/PGDVA7IR6RpK3U/ODpOuGyxcXXT7F7Cn/m30ou/J3/OI+z94/3O0GEMy0jE1t27Maq9ZuxadtOHMvKKXmofBYEaoSAEMwawVd8MFf4efLe29CVkrAXFoZm6h6z2YJJ30zBjzPm+gBRaUJVBLiMpT2CUiGRZpPJZkxtIqAUuR5di4hnHJnYIz2w2oGwMCs9FAkF''@;'; put 'put ''IpyauZ3LqdNDkasPMQcNOT/Pk5yBrdmshmRizqZtjWjQJlehm4Jw3CjIp0TmWUBOOnCctJM5FISTfYzzUrJPJTdyKvng5mTRFwJ1EmuhZ5cO6Nm1I1o0aYha8XGanIuoTK/b7dauA1/0mOcOK0hY8+kiTWdaegY2bNmBhUtXYc2mrRS8KmWBfYFzKLchBNMH0ucLtW2Lpnj+4bvpwWjTbgI+aNZQ''@;'; put 'put ''TTAGRU6XVulnyap1huq7dFYPCHioXjpgJ4IZGcPkk9ZUTz2GSGcEE0+qQsS/hdE+VkqbZAujaHZW19GiEVEioExENULqjWw/SUY1Qso7/vWBv+hgOcn1NNqnMcdi4sg9I2WTRiR5SNqYyHeuyEF/RBId+R7SSBKJzLTgxHHgRCYlMifTdl6OCQW5bP7mFoRIMgpGWfjlqW3LZhjS/0x07dAGdWsn''@;'; put 'put ''aqSSM5Twb4FYmGyGkR8nE9mde/bhtz+WYQGRzeNZ2VpfAtEHOYdaCAjB9JE8beSLOOKSYbjusgtCMuCHYWTzy5GjGXiNyklu27XXR8hKM4IA0SUKKgqz0194MdEMjy4OKIqIdmvEMyKKfqO/cCagtI+VYh2sNjcsYTwvKfDISuZBzh+vqf0IUeJff1Ew/nCSyBWv6H/vM927Pp0QvI1p7RZ/0f7X''@;'; put 'put ''iGNx+381xc0T+eWAC05m73KaKFE5iEB6UFRABJL+ColA5hFZzD9Bf2S1zM+hYBtaF1AEtyOfgze49eLznK5r8rt+EeAX887tWmH4oH4aseRgHTZ7s0YxmAsTTSace/enYubvizB74RLNhzOYfZJzGw8BIZg+lBnnxnz2wTvQunnTkMuN6YWRSebOPfvx2nuf4OBhKSfpxUXWgUKATOyUUslMWk6L''@;'; put 'put ''1Wtu98BC5NQWRppPIp62cLdmhrfa6Hfaj9dc4pD3N1PWJYvVreV+5Ie/2UwklROLk2n/L9JZciisPiUNk5MIosftLbdJJmviBy4igW4nkUH6c1EchYO0j07vmrSMHFtRVGAm0zURy0Iz7c8+deyTKsSxJMSqfm7VrDEuHjqA0t11RGREhPbMCJS2srKYchAnm9B37d2Pb6fNwvwlK0PSQldZvGS/''@;'; put 'put ''UxEQgnkqHjX6xuSqS/vWeOb+UZpJQW83ixoNrgoHm+nNd82GLXjj/c9wPFucxqsAnewqCAgCiiOQQD6VlwwbgHPPPlOLAGeTtN6fFUwyeVm+ZgM++24adu8/qPs+Kz6NDDE8IZg+FhObym+66kJcccHQkDWVs+aHTZELl67EOxO/QkGhpMHw8TST5gQBQcCACPTs0h7XX34hmlFEOJvBOWjHSEsE''@;'; put 'put ''aVozMo/h66kz8ctvCzQ3DyP1X/oaWASEYPoBb35Dff7hu+gm0jBkTeVMMjnWYua8P/DR5B/J9BdcnyI/iFmaFAQEAUGgUgjEREXi6ouHYSgV5QgnR2H2szTqwr6Z/Dd/8Qp8TPf29EyKNJNFECgDASGYZYBS001cRrJbp7Z46r7bQ9pUziTTRSzzh+mz8cUP02sKqxwvCAgCgoDhEGhCidFvu/Yy''@;'; put 'put ''dGrXmvx03YbTWpYHOOfj3LZzN97++Cts371PTOblARXC24Vg+kn4xabyi8hUPiRkTeUMLfulchWJz7+fhqmz5vsJbWlWEBAEBAH9IdCzaweMvPoSpFDFNyNrLctD1m63I/PYcYz/5GssXbWeFArGMvmXNy7Z7hsEhGD6BscyW0mIj6WAH4oqb9E0ZBOwMzCsyWQ/zI+/+hGzFiwuEyvZKAgIAoKA''@;'; put 'put ''SggMpZyWN1x5EeKolKOK5NIrK44053KT73/+nZY7M9gplrz9knXwERCC6UcZsPauU9uWeJqiylmjaTSHbl9Cw1icyM3TyklypQhZBAFBQBBQFYFLKP3QNZcO12qEh8J9n30yWXv5yTc/YdpsDv4Rn3tV53ZVxiUEsypoVWNfq9WCERcNw/VXXBjSpnKGjknm8ewTGEeR5cso3YUsgoAgIAiohsDl''@;'; put 'put ''wwdT0Y3zEGYLLaUC39/ZWvXBF99j+tw/hGSqNrGrMR4hmNUAraqHRHOt8vu4Vnk7FBQUVPVwpfbnmxBHHY6bNBmr1m9WamwyGEFAEAhtBM6nijw3XXWxRi71ntvSH5Li+zuXbB1P9/d5fy6HUzSZ/oDZMG0KwQyAqPitrkWThnjuobsQEx0V8m92bE5JS8/E2A8+x4atOwIgATmFICAICAL+RaBf''@;'; put 'put ''r26468arqCpPeEhHVPP93UGBnS+P+wir1m3WCKd/kZfW9YqAEMwASYYvuvMG9MFdN10NI1Ru8Dcs/KZ7mOqWv/3Rl0Iy/Q22tC8ICAJ+RaBdq2Z4cNSNqJNYK6R97b0gc+WfoxmZ+M/r72HPAan648Ul1NZCMAMocbs9DPfecg0GU4mw/Pz8AJ5Zn6cSkqlPuUivBAFBoPII1E1MwKP/uhktmzYW''@;'; put 'put ''clkCtvDwcGzYvA0vvvWhlAwugUsofRSCGWBp162dgP88fDcapiSHbJWfkpALySyJhnwWBAQBIyHAQZysNDj7zB4wUcdD0e+yInlxMvYfZ8yhFHVT4KCa67KEFgJCMAMsbyZUXdq31oJ+Qj11kRd6L8l8hypCrN+y3btZ1oKAICAI6BqB4QP74pYRl1IaOouQyzIkxfEH/Pfau59g0fI1koi9DIxU''@;'; put 'put ''3iQEMwjS5bdeTmVxM1V4CPWoci/8TDKPUODP2x99QSRTAn+8uMhaEBAE9IlAY7JCPUHZQZLqJAq5rEBE7I+ZevgInnl1nBbcWcGu8pNiCAjBDJJAOdLw4TtvwllndBV/zJMy8EaXc9kxSWEUpIkppxUEBIHTImCloM37br1WM41zffFgLawd5Psm//HCL+q8eE31XEGIk557v2s/BuE/MZUHAXQd''@;'; put 'put ''nFIIZhCFkJJUF6MfvBP1ac2R5bJAu1FmUG3bdz/9FktXrxdIBAFBQBDQHQK9u3XCv2+7nir12ALeNyaVYWFh2nlzc3ORcSxLyy3M981cDh71gPplR1xsNNjnPyEuFvHxcZqp2ks4A91p7jPnxHxuzARs3Loz6IQ30OMP1fMJwQyi5M100XXr1BZP3Hsb+I04FEqKVQZufhs/np2jVYSQspKVQUz2''@;'; put 'put ''EQQEgUAhEBFux1P/vh0d2rREILWXrJ1kYpmbl4ct23dr1dA2Uh7hQ2npyMsvu4BHGJmnE2rFUYR7I3Tt0Aad27VGUt3aGsELtFKDo8qXrFyLl9/5WKtdHih5yXmCh4AQzOBhr52Z/TEvO2+Q5igu/ph/C4Nvply7/NNvp2Hm/EV//yCfBAFBQBAIIgID+5yBO2+8OqDVeuykkTxB2so/l63Gr78v''@;'; put 'put ''ws49+6tVJacWaTP7nNGFUuX1RvMmjTSCHKi64azF5OW/b74vCdiDOH8DeWohmIFEu5xzhVN+TPbnGdi3t/hjlsCISWZ+QSG+mjIdP838vcQv8lEQEAQEgcAjwNrLp/89Cu1aN2dHR793wOtfuYzchb6dNgvbdu2tFrEs3dEoKl88qG9PXDx0IJLr1UFhYWHpXfzyXbSYfoFVt40KwdSJaGonxGul''@;'; put 'put ''JJs1bhiwi10nQ6+wG0wyi5wuTPn1NyKav4Z8mc0KwZIfBQFBwK8IsPbvnluuRUR4mN/9CNkczlacyT/NwIy5f6LADySQ4wBGjrgEvbp3hpPiAPwdDMRaTK5V/ixFlG/cJr6Yfp2sOmhcCKYOhMBd4AuvXctmmm8P1ytnZ2xZihFgkukmZcHM3//AJ99M1bSago0gIAgIAoFEwEL3oYfvugm9u3Wm''@;'; put 'put ''0/pXe8km8dRDR/DuZ99g7aZt9Dxw+W2o7P9/1UVDtdR57LLl71iAiIgITJs1j3zsf5Dk636Tqj4aFoKpDzloveAb2MC+vXDvyGu0i9zfb5M6Gvppu8IE3ET4LFq+Gu999p2UHjstYrKDICAI+BKBZo0a4On7b0cCRWT7897M5HL3vgMY+8Hnmq8la/wCsZxLfpm3XnMZRaD7VzvLZv9Minh/7KU3''@;'; put 'put ''ceRoRiCGJucIEgJCMIMEfHmn5eo+119+Pq6++DzxxywFEpNMM92c1m7coqUxSj2cVmoP+SoICAKCgH8QuPLCIRhB92WL2eQ3gllMLlPx+vufEslM9bs2sTRS/Xp1IxeAEVqaI39qMnmcbxKB/u2PpT7xKS09DvmuDwSEYOpDDqf0gh3JOQl7n57dhGSegkzxFyuR8J1792MCJWTfunNvGXvIJkFA''@;'; put 'put ''EBAEfIcAp/th7WXHtq38FtzDFW/SqJrZa+9OwtYde4JWVvG8AX1w+/VXgNPo+UtTy8E+fyxdqZWQLHRIDmjfzVR9tSQEU1/y+Ks3nCD32QfugAT9/AXJKR+YZPLN+IMvvseSVetO+U2+CAKCgCDgSwSaNUohgnkHmcdj/UK6ioMZnZpZfOmq9RTYGFwf/Fsp8OcSSp/nr1gANpMfy8rGoy+8rpUI''@;'; put 'put ''9qWspC39ICAEUz+yOKUnbA5u3byJFvQTHxvjtwv9lJMa7AvfpHLz8im6fAamzZ7vlxu/wSCR7goCgoAfEBg+qB9uufoS2CgIxh9aPTYZfzN1Jr6ZNrPcpOl+GFa5TXIp46dPJpP3V55M1tj+39sfUvL1dUHT1pYLgPzgEwSEYPoERv80wkE/Z/borJnLmXD60yfGPyPwf6v85u9yufHLbwvw5Y/T''@;'; put 'put ''JcLc/5DLGQSBkEPg/tuvR/8ze/jFPM7kchOl7HmFKtwczTymG2zbtmiKZ6mUMbts+YNUc33yb6b+qhXTCLbGVjegK9YRIZg6FyinjbhoyDm47drL4XA4/HKh6xyC03ZPizA3mbF8zQa89/m3OJqhn5v0aTsvOwgCgoCuEeCk5Oyu1KpZY5/3k+9dHCM+5t1PNFcff6Yjqk7n77zxSgwfdDZcfjDZ''@;'; put 'put ''M7Feu3Ernn99AuX4dFSne3KMzhEQgqlzAXH32MH81msuxcXDBkrQTzny4hs1m8x37NmH9ymN0eYdu8vZUzYLAoKAIFB5BBqlJBHBvBOJVNPb1wuTrKXkQ/4GRVRn55zwdfM1bq9Bcl28+Ph9iIuJ9rlyg+/XGZSu6NEX3tCV5rbGoEkDfyEgBPMvKPT9gd+iH7rjRpx1RlchmRWIioN/+KbFCdnn''@;'; put 'put ''LVpewZ7ykyAgCAgCp0egZ9cOuP/2GxDpY1NxseXFhP9NmEQkM/iBPeUh8a+br8bQAX19rsXk8bvcbjz18ltaNhB/mOHLG5NsDwwCQjADg7NPzlInoRaevO82tKGKPwUFBT5pU8VG+M24kNwJps76nXx8ZmmfVRynjEkQEAT8j8CF5/bHTVddDKvF7FMtHge57KJ0ay+88b6uNXidKDXTMw+MovFb''@;'; put 'put ''fA42l8N8+Z2PqIDGGgn08Tm6wW9QCGbwZVDpHvAbX+MGyRTdNwrJ9epoPpmVPjjEduTgHyrAiaWr12Hi5Ck4lJYeYgjIcAUBQcAXCNxM5JJJpsXHBJNLJn7/y2x88cMvuogcLw8rDvJ5iczkzRo38HmgKWPwwRff4aeZ8/xaDrO8scl2/yIgBNO/+Pq8dSZOHdq0wBP33IroqEhJX1QBwl6/zL0H''@;'; put 'put ''DuKjr37E6g1bKthbfhIEBAFB4J8I+COC3Gsef21CcXCP3qOo777pKgwb2M/nZnKOJP/u51mY9PVPQc/9+U/Jy5aaIiAEs6YIBuF4b/qiB0fdCI4y91eesiAMzS+nZL/ME7l5Wo45NptzWiNZBAFBQBA4HQJMBB/71y3o1bXj6Xat0u+sKOCgnudff5eqkh3wqem9Sh2p5M5D+5+Ju2+5Bm6Xq5JH''@;'; put 'put ''VG431mDOnPcHxk2aDEdRcJPLV67HsldVEBCCWRW0dLQv+xlySa9RVNKL82OKg3TFwuEbOqcDWUjlyT79dpqkMqoYLvlVEBAECAF+gX/qvtvRuX1rcrjx3cL+l3v3H8Tzb7yrVSTzXcv+aalD6xZaqiabzerTE3DJyAWLV2i116VkpE+h1UVjQjB1IYbqdYJvflddOBTXX36B5MisBIQlTeYfk1/m''@;'; put 'put ''qvWbK3GU7CIICAKhioA9jGuQjyK3pJY+TbLO6Yk2bNmOl976EMezc3QPb0pSXfzfE/chJjrKp31lHJavXo+XKNCnUHJh+hRbPTQmBFMPUqhBH2xk/h1JdWMvHT5Y0hdVEkc2meecyNWizH+cMVeizCuJm+wmCIQaAlwycTRVs/F1knUmVivXbaQURZ/oMv9laTnXrZ2AFx+7B3USE3xqLWMcVq3b''@;'; put 'put ''hBfefF8IZmnQFfguBFMBIfJb9j0jr8G5Z58lJLOS8mSTOWs0V6zdiE/IZM6BQLIIAoKAIFASAbs9DKMpyXqblk19aiL3Eqv/UQWfLANoMGsnxGsaTH8QzOVrSIP5tmgwS847VT4LwVREkjEUUf7AqBskEXsV5cm+UEeOZuCrKTPw28Ilmp9mFZuQ3QUBQUBRBNhC9PT9t6Mj5YL0pQ8m53/cvH0X''@;'; put 'put ''/jv2fUOYyJPqJGoEs1Z8nE81mJoP5hLywXzvU7IkFSk6i0J3WEIwFZJ9QnwsHqRqPz06dxBNZhXkyiZzThOycMlKfE456aSWeRXAk10FAYURYEvHE/eMpHtqe5+Oku85Bw+n4bkxEwyRo7c55cB84dF7wDkxfblwFPnsBYvw9kdfShS5L4HVSVtCMHUiCF91oy75yDxKaTXaU9SfVPupPKolA4C+''@;'; put 'put ''/HEGFq1YU/mDZU9BQBBQFgEu0duvV3fS3PkuvRkT1/yCQox+bTy279oLt4dzXOh36d2tIx65eyTMvlTj0nA5D+aUGb/hwy9/kDyY+hV/tXsmBLPa0On3wOR6temt+za0bNZYSGYVxcSaBQeZamaTufzrn37FsazsKrYguwsCgoBKCIy67nKtFreF2JUv08GxmfzNDz/H74tWkPZO3+bhay4ehmsu''@;'; put 'put ''PZ9yCPs2VyVrMCdO/hHfT58jlXxUumhOjkUIpoJC5SE1rJ9ECYJHonmThkIyqyhj1mYy0dxFCZC//PEXLFm1vootyO6CgCCgCgJXnD8YIy4Z7vNa5Ox/OGPuQnDKNC4EodeF74fPUi3ybh3b+bxUJGMwhgKd5v25TGqR63UC1KBfQjBrAJ6eD+WbQtOG9TWS2TAlmVJAFOq5u7rsG5NMdjyf9+dS''@;'; put 'put ''qgI0S3wzdSkl6ZQg4F8EzjmzB+666Wpwtg5fajD5/nLoyFGMHjOe1un+HUQNWq9fr44W4BMbE12DVv55KD+jGM/nxryL9ZQTlAuGyKIWAkIw1ZLnKaPhC5idsx+5+xZNoykk8xR4KvWFfaX478DBI/h66q+YT1Un9O0tValhyU6CgCBQSQRaNG2Ep/99O+J8TLD49Gwmf4vN5HRf0WsU9aXnDcTN''@;'; put 'put ''V1/i8zKRfF/lfMSPvTgWqRTwJIt6CAjBVE+mp4yISWbLpg3x+D23ol6d2lrFn1N2kC+VQoBLc7roDXvR8jVaTfO9Bw5V6jjZSRAQBIyLQDSlf7vsvEE4b2BfhFNOTF8vnA9z3aateGXcRF36e3Oi+f9S9Di7Wvlaw8gp4rbt2oOnXn5bC3jyNbbSXvAREIIZfBn4vQdMMts0b0KazJuFZNYQbb4p''@;'; put 'put ''pqVnYurMeZg5f5HcGGuIpxwuCOgVgTMoNdHVFNzSiu6dbpfLp+bxkmPml9e3KE3PAkqTprdgn6HnnIW7bx7hc+0lj58DfGb9/ifemThZd+MuKR/5XH0EhGBWHztDHamRzBZEMu+6GUl164hPZg2kxw8EKgOETVt3kNl8JlZv2FKD1uRQQUAQ0BMCyeRzePnwQeh/5hla3sciP0d480vr7n2pePGt''@;'; put 'put ''D3A4TT++mLXiYvDfx+5Fg+R6Ptdesrw5wOftj76gF/XFFJ3u0tMUkL74CAEhmD4C0gjNFJPMpnjozhtRv15dIZk1FBo/GPLyC8gvczl+/HUuJU4+WsMW5XBBQBAIFgJsAh/crzcuGnIO6ifV1UiPr83C5Y2NydZPZBX57LtpyM3LL2+3gG6/44Yrcf7gs+GiIhS+XvhZxOngnnz5LeykbB2+DJ7y''@;'; put 'put ''dV+lveojIASz+tgZ8ki+sDm6/FFKYdRIostrLEN2VOdoUNY88APitz+W6uYBUePBSQOCQIgg0LVDG1x5wRB0aNtSKwnp9AOpqghKvi9z8OA4MhfrwVTet2dXPHD7DbBYzH4hf/xyvp38L59+dZzcLyuaGAb/TQimwQVYne4Xk8wUPEo+mY0bpkiezOqAWOoYNpubiGxuofrC3/08G8vWbPDLjbnU''@;'; put 'put ''aeWrICAI1ACBFNJUXkbmcK7UExUZEdQgSH5Rzco5gf+Nn4gNW3cGzWzcjDKPcNR8Yq14v5jGWVzsfzl5ynR88cN0qeBTg/mr90OFYOpdQn7sH2swH77zJs2JPT9fH2YZPw43IE3zmzk76i9ZuQ5TyGy+jcrAySIICAL6QoBzOg45u7dmAq5D5XXZBzBQ5vCKkOC0RVyj/PX3PtXuHZy5IpBLUt3a''@;'; put 'put ''ePLeW9G0UQOqrON70ziPxautfZa0lxvIj13M44GUcGDPJQQzsHjr7mwNkutqppD2bVpCSKbvxMMPimzSRsylChU/z1mgJVT2XevSkiAgCFQHgTCbVdNWXjz0HDRrXJx6R28BJpy6KPXQEYybNJkSkO8ImCYzqU4i+effhDYtmvqNXLLM+N64eftOqsM+Qczj1ZnEBjpGCKaBhOWvrtatnYB/33Yd''@;'; put 'put ''undqLyTThyB7/TPT0jMwY96flJJjEY5n5/jwDNKUICAIVAYB1pp169hWy2nZoU0L8i20wN/R4ZXpV3n7MAk7npWtlZFcuHSV39P4cEGO+269Tst36W9c2Dz+3qffYBq9ePtLS1oerrI9sAgIwQws3ro8G5so2N/m3pHX4KwzuiIvT791cXUJ4Gk6xQ8zJpv7KDn7dKo9zFpNjj6XRRAQBPyPAGvk''@;'; put 'put ''WGPZs2tHSpZuD6qfZVVGyz6ZTjLd/zr3D3z3yxxkHDtelcMrvW+fM7rgtmsvA7sK+Jtc8r2QX7Ife/ENXZfHrDR4smOFCAjBrBCe0PoxNjoKo66/AoPPPlML/BHfGN/Knx8YnD9z/aZtmtl85bpNVB7O4duTSGuCgCCgIcABPJefPxhMoGKiow2Zlo01r2wy37V3P76dNguLVqz1mTYzsVacptEd''@;'; put 'put ''RlWKbHRvCoSrQGRkJH6cPgcfffWjBPeEwHUqBDMEhFyVIUaE23HzVRfjQsoF5yDyIySzKuhVbl8OBOK6wxu2bMMvcxZizcatPntoVK4HspcgoC4C7EvI+SwH9OlJRSVqa2ZYPQTw1ARxNpmzOZmDYmaQRnPV+s3VtoJwAvVzzjoDwwb0BZNwbjcQ93m24uQXFODJ/3sbu/enBuScNcFcjq05AkIw''@;'; put 'put ''a46hci3w2+wIKpF21UVDtchKo9+c9Sgg1kywRrOw0IF1m7dppvO1G7cJ0dSjsKRPhkCAfckHEakcROSSiSXftwKhlQsUOHzP8BLNfamHsHzNRo1o7j1wENkncivsRgxZp5pRZPgZXdqhV7dOSKZqbkwqA+kDydrLKTNYezlF7nMVSkudH4VgqiNLn46EfWXOH9QPI0dcojnEB/JG5NOB6LyxkkRz''@;'; put 'put ''/Zbt+HXeH1R6cquYznUuN+mefhDg0o79e3fXtHKskeNF9fsVW0H4Hl1YWIj0zGOaP+Pho+nIPJ5N7k2FGgZ2qkwUHxuDFMoUUp8wYj97NrczNoHGh/vKWTWefPltMDmWJTQQEIIZGnKu1igtZNLoRzfuO6lkWHRUpN8dwKvVSUUOYqJZbDp3YPO2XZj5+59YSWYwvZSNUwRmGYZCCDCZPOesHhqx''@;'; put 'put ''DIZGTg9Q8n3Dm63C+9lr7ubv/Jk1uUwog6nN5cjxT7+dim+mzaS+SN1xPcydQPRBCGYgUDbwOfjm1ZHSejww6gbUrZ1oSEd5I8HPDwU2nbtcbkq0vAe/LVyCxZS0nSt8yCIICAJAEyp1O6hvL3A5Q458DrSpV2RQNQTYrM9BSs/+bzyOUeolWUIHASGYoSPrao+USQ+XD7v/tuvRslljyZVZbST/''@;'; put 'put ''v73zfI7qStP4u2NQzhEhDBJCEogcTDAGG9tg43EoxxnP7Hpqy7sftnb/jN2q/bjhw1ZN7Uxt7YTd8YzHM2MccMAYE2whkEgiCOWcc8Sw+z6HObjBwghJ3X3vPc+tajrQ995zfu9t9dPvecPMd7RC84Z6IBqaWgW18L746pR0dPfO/CB8JwkEhABWU0qKlpnkna0b1kqGZkDDIxdNr1xA0IZ1GsaL''@;'; put 'put ''qmf453//mcaMnhf8PePmDgEKTHdsPeeZ5moQ/d//9eumntyEZgPapZg5H5gH+E4CWDrHhoLtKFNy+ESFegRaPNHa7jsHzv8kgTkSQFWLdatKNHFnm7lHi0fUamTi4RzBRmh3LI2jLNHP//cPLEsUIeZeOg0Fppes4YOxJCclyJs/fFH2PbaTf+gjbC8EyuM2qIWKkXn+2bGT2kquZtblSiI8fJ6O''@;'; put 'put ''BGZMICMtVbZvXmeSd0qKCiRGf2RBWPJH7YwRRv2NSCiq1rJK//Rv/8ml8ahbIzoDoMCMDndfn3WBipwfaAmjV5/bxwzzKFgScbEmIUhLHNVqbBOWz788fVY6uXweBWvwlPNFANf1siV5snvbJtNRDJnPWGJFggqF5XxRjsxxEEeOH8L/+K8/lcu1jbRfZLB77iwUmJ4ziT8GhJioPTsf0hZjL2uX''@;'; put 'put ''jETftF/zB92ZjzJ0+RzFl7/4qlIuXq1Te1yb+UH4ThKIIoHEhHiz/L17+yZzn67eS8RWRrqUThQRBOrU+KGASMt/+ekvzI/f65rFzs1NAhSYbtp9XmaNPyRlxcvlH7SH+bIli017yXk5MA9y3wSsVxOdMmrqGk2sZnnlOSYF3TdJ7hAJArhel2h9xh2b18vDWzYYzyWyjRlfGQn64TsHPM740ftf''@;'; put 'put ''v/mDvPPhIZYkCh9qXxyZAtMXZvL2IFGP7u/eeE22bFjDHuZRNpXNPscwenr75Iz2PT92ssp4NYdHxqI8Op7edQKpmqSzrqxEdm3dJKtLiwTeSiTsQFhy8zcB/O3Bj4Tfaq3LX779HpN6/G3OeRk9Bea8YORBUIj9J68+L89o9x+WD/HG9QAvEf7gT2pP+aaWdm0rV21iNeubWk0vdG+MkqMIOoFY''@;'; put 'put ''vQaLly+V7dqicMv61bJYf5AijpveyuBYHuISST1/PHhIfs5WkMEx7BxnQoE5R4Dc/RsCyHB+af/j2sP8aUF5EXolvmET7UdYtoJ9RkZHTYmjijMXpOJstbZt62AtwWgbJ4Dnx7W2dPEi7X29Wm9rTB3d+Lg4xlYG0NY2POft9z5Wz+UB/ngNoI1nOyUKzNmS437TElio2YPwUrz5oxclf1Eu4zKn''@;'; put 'put ''pRS9F+0SOr4UhjTLs1braZZrAeTK85ektaOLYjN6pvH9mSEqES6zcc1K2bZxrRRpc4ZkXRK3rQqZCe57E39rAsgWh31//c778rbWu2QbyG8hcvoFCkynzR+eyUO8oNzI32qG+ca1q0x7SX65hIf1XI4KO+ELAqJzcGhI6nTpHJnolXprae+SKcbFzQWvE/suWABRmWtE5ZZ1ZVJUsERSU1JMWRpk''@;'; put 'put ''gbMgenAvAyyJoxTRz/7nHa3JWy7MFg+urWc7MwrM2ZLjfvckkJaSLD984WnZ//gjAjHDsiP3RBa1N4SKTSyjN2rM5pnqy3K2ukaFZ4surTNBKGrG8diJEf6CqhEbVpeaskLLl+ZLin7W8SOSotJjxgrDcPCDFB16rtQ2yH/892/kYk0961yGgXMQDkmBGQQrengOsTELtV7mVvmrV56T9NQU4830''@;'; put 'put ''8HA5NCVgl9Gx5DkxOSntunR+8Wq9VOkyek19k3T39tNb4diVgs46JZqos76s1GR/L87NkURN7LMJffRUunFBIJYbtv74yAn51e/fk76BITcmzlnOigAF5qywcaf7IYCi7KXa7u1vfvyyrNK6mZMqWrhkfj8Eo/temyAEMdE/MGgSg85pq8pqFZ0NzW0yNDwS3QHy7PNOICE+TutU5srKFYXqpSw2''@;'; put 'put ''STpZGemmxiGuAybwzTtyTx8QPzZRkaJOO4f9SksQoXMYl8Q9bTJPDI4C0xNmcGMQGWkp8uOXvi97d++41QLOjZkHZ5Z2KR33KH/Uo97MOk0UunClVi6p4Gxp75TRsfHgTNiRmcTGxkhuVoZ6KZfJ6pIiLSu0TPJyssxSKBBg6RvCkptbBPA5R6xlX/+AfHj4mLz70efqtRw0f7/dIsHZzoYABeZs''@;'; put 'put ''qHGfWROI0SXzx3XJ/A1dMk/jkvmsOXplR3g2kCiEDV2E+voHpb65VfsPN5iOQk2t7TI4PEqPtVcM9udxwEOZl5NtknJWFhWqhzJf8rT3d3JSkhEP9FJ6zGARHo71WGLF4mj5aTnw8RFpauvg5zjCdvD76Sgw/W5BH44fS+YrCpfKm6+/KGtXlZg+5ozh8qEhpxmyFZyI40QoBL6g2rp65KrGbiJL''@;'; put 'put ''vUFv3X39MjY+Mc3efCkcBFA6LC012Sx5o3QQPntL8/MkOyNN4ygTbwlKeCkZuhIOC/jjmPBWIhwGn93O7h45Vl6psZZfSqP+SOR14Q8bem2UFJhes4hD40HbuFef2yfPPrnb/GGb0iVXbsEiAMFpb/CKjY6NSa96OVvUG4JMdXg72zp7pKun14hOfpHNzf5IqkvRz9Vi9UYi03u5CkoUPM9SMYkV''@;'; put 'put ''AwgIbHbJm7znxtvPe0NIhopK1MW9VFsvxyvOyFenz0n/IBN4/GxfL4ydAtMLVnB4DPCubN+8Tt7QNpMP6hfhhC6z8ksvuBcEvtSs4MSXG0TnmIrOAf1y69J4zpa2TmlW8Qnh2dM3IAODwybWM7hEZjczMExNTpTM9DRT3BwFzvH5yc/LEZQHS9UbkjLwWQJj3LhKMDvWft4LnzdsVkziusFj3PC3''@;'; put 'put ''Fj/2EENddeGS3i7rj71u/v31s8E9NnYKTI8ZxMXh4I/d4twsLWX0vDyydaP5AwcPCzc3CIR++UF0YsPyOmpvDmqGeo8uqXd290q7LrV39fSZ5/0qPPH/ExOTckNFVBA3FDFP0HqDKUk3hWROVros0sSb3KxMyc3OlJzMdI2ZTDRJGBAOEJP43EBIUkwG8YqYfk74/MAzjR8ReGw3++Niauqaad84''@;'; put 'put ''rPVtkaCDzxKqP9Q2NEurCkoUSw/dz+7PexKYKwEKzLkS5P7zRgCZrHt3bTfF2TPUMwORwc1dAhCbuEE8WeGJL1FcF4jhHFHP59DQiC7lDZsvzl7NdMVjLO2hdBIE6PjklHk/vmS9IkQhHGNUEMSqhzEx4aaATE1JUs9jinokU029WNwjbhLL3YkqMuM1KcfGx1nhYIUknnNzkwCuCfyo+Ojz43Li''@;'; put 'put ''lJYOun7jz2IRnusbxvs/rj/CEJoyqp8ZfA64kUCkCFBgRoo0zzMjAkgAQtzYT157QTZpm0kbKzajnfkmZwhAcMLrYsUnnkNoWfEFETqpX6ao14iySRMqNEfHx81jPMeXLrLecQ8vKEouTU5eM+0xv1YRaz2B+JK+doc3HefAeRcuXCDf+4ub48DjGL3hCx/38XFxEqcdb+JURCYkxBmRiMxteCQT''@;'; put 'put ''9Tn+Hx1xIDLNvnqPY2Kz8wgVkPRIOnNpz2iiuPZRPqi1o9MUPD9WXsXWrjMixzdFkgAFZiRp81wzJgDPzvef2CUv7n/CxJPRmzljdHyjEsAXsF32s2IUz60n1ApSC8uKOjy3wi70Mf4/dMOxIAjtOUIf4zX7OvbBYysQ7zx26HlDj8/HJHA3AigLhmvq2MlKFZfvm5jlO6/Pu+3L10kgkgQoMCNJ''@;'; put 'put ''m+e6LwK2A9BfvvKs9j1eSW/mfdHjm+eLQKhYDD0mv9RDafBxJAjEqee7V2OS33r3Izl4+LjxvEfivDwHCcyGAAXmbKhxn4gSSNKex888/oi89MyTJiaN3syI4ufJSIAEokwAHnJ4Lk9WnZNf/O6A1De1slVjlG3C09+bAAXmvRnxHR4gcMub+bJ6M9esNBmTiJPjRgIkQAJBJoBYSzQseOeDQ/Le''@;'; put 'put ''p0dM3HCQ58u5BYcABWZwbOnETJAosV+9mS+rNzM9LdVkCHOp0gnTc5Ik4BQBeCzhuTx19oL88u0D2g2rmV5Lp64A/0+WAtP/NnRuBt/TAPdCzTR//YX9pkg7ACBbmBsJkAAJ+J0AYn7htUSs5e8/+FQ+OHSUXku/G9XR8VNgOmr4IEwbbfEe2/GQaTe5RLuYIDbTZusGYX6cAwmQgFsEUOYKW3nl''@;'; put 'put ''OVN+CAXRr2vhfG4k4EcCFJh+tBrHfIsAfu0v0q4mLz3zhOx5eKvWHIw3QvPWG/iABEiABDxOwHotO7Rb1VvvHpRPj37FougetxmHd28CFJj3ZsR3+IAAuqOsLyuRHzz/tKxZWcwkIB/YjEMkARIQ0zN+SkN8Dh8/KW+/94kWT+8yxfbJhgT8ToAC0+8W5PhvI4CSRvse3SEvPLVHcrRnM5bNmQR0''@;'; put 'put ''GyI+IQES8AABJPBgSbymrkF+/c4HmsxT/a2uUR4YJodAArMmQIE5a3Tc0asE0KUlf1GOvPLsXtm1daO27IvjsrlXjcVxkYBjBOxy+ODQsBz4+HN5V2+DwyOOUeB0XSBAgemClR2d481l81J57bl9Ztkcnkxmmzt6MXDaJOABAjHacx71e8urzstbfzoodY0tTOLxgF04hPAQoMAMD1ce1UME4uNi''@;'; put 'put ''Zc/OrfLi048Lss0hMq9fv+6hEXIoJEACQSZgl8PrGpvlt9rm8XjFGUHcJTcSCDIBCswgW5dzu0UAy1JZGWny3N5HNUbzYUlNSWZ85i06fEACJBAOAnY5HJ14Dnzyuda0PCb9g0PhOBWPSQKeI0CB6TmTcEDhJICWkwVL8403c+dDG0xB46mpKSYChRM6j00CDhJAsXQkGR4trzQF0xu1puUNDdPh''@;'; put 'put ''RgKuEKDAdMXSnOdtBBCfuVbLGaF+5vqyUtOSDUKTGwmQAAnMhYAtln7uUo387sBHcqb6isZdMiRnLky5rz8JUGD6024c9TwRiNEyIfBkPv/UY1JaVGg6ATERaJ7g8jAk4BAB2zsc3Xf++OEh+fzLCpmY5I9Why4BTvUOAhSYdwDhUzcJoH7mozu2yLNP7pZlSxazULublwFnTQL3TcAm8KALz4ef''@;'; put 'put ''HZWDh4/LgJYg4kYCrhOgwHT9CuD8byOQnpoiTzyyTZ7es1Py83JNSRGUFeFGAiRAAqEEUG8XZYcGNGnnM+3CgySe9s4exnOHQuJjpwlQYDptfk5+OgI243yfdgTau3uH5GZnUWhOB4qvkYCDBGxm+MjomCbwnJZ3PzosjS3trGfp4LXAKX83AQrM7+bD/3WYAL5IcjLTZa8KTXg1F+VkU2g6fD1w''@;'; put 'put ''6m4TwN8DeCzHxyfkq8pzRljW1DfJ16yp6/aFwdnflQAF5l3R8D9I4CYBKzSf3L1dnty1nUKTFwYJOETACstJrTJx6swF+ZN6LC9cqWOzBoeuAU51dgQoMGfHjXs5SOAboQmP5lYjNNERiDGaDl4MnHLgCYQKy9NnqzXG8oig9BBLDgXe9JzgPBGgwJwnkDyMOwTwxZOVniZ7VGTCo7lEk4HQ55x1''@;'; put 'put ''NN25BjjT4BLA5xtF0ie0SDo8lhCW5y9fpbAMrsk5szARoMAME1ge1g0CyDrftW2jaT9Z8GC+ILOUnYHcsD1nGSwCNit8VJN3KtRj+f6nX0h1TS2FZbDMzNlEkAAFZgRh81TBJADvJepoPrxlvXo0d8jKFQWCbh4o2H7jxo1gTpqzIoGAELB1LIeGRzR556wc/Oy4XKptYIxlQOzLaUSPAAVm9Njz''@;'; put 'put ''zAEkgM5A68qKZf+eXeY+KTHRCE3EanIjARLwDgF03sGtp7dPjlWckU+OnJD6plaWG/KOiTgSnxOgwPS5ATl8bxJY8MADUlTwoInR3L5prWRlZhiPCNtQetNeHJUbBBBfidUF3Le0dcjhExV6OykdXb1cbXDjEuAsI0iAAjOCsHkq9wjgiyw3O1N2b98sj27fIgUPLjYQIDSxtM6NBEgg/AQQXwlh''@;'; put 'put ''iZWEK3UNcuhouRyvqJL+QbZ0DD99nsFVAhSYrlqe8444gcSEeNm8dpU8pW0oVxYVSEJCApfPI24FntAlAnYZfHhkVM5drJFPvvhSKs9fMhniLnHgXEkgGgQoMKNBned0mkBsbIwKzEL1am6SzevKJCcr03gz6dV0+rLg5OeJAFYNICzhtezo6jaeyiNfnpbahmbGV84TYx6GBGZCgAJzJpT4HhII''@;'; put 'put ''A4Hv6Rdhji6fb9u4VnY+tEGKC5dKXFwcvZphYM1DBp8AssEhLPFDrb6pRfuEV8mhY+W6DD7EcJTgm58z9CABCkwPGoVDco9AnBZ2XlVcaEodbVm/2ng1QQFdgljqyL3rgTOeGYHQpJ3+gSE5e/GyHD5+UjvuXJUx7RnOjQRIIHoEKDCjx55nJoFvEcCyXmZ6qmzSWM1Htm6UUo3VTE5KMskJEJtM''@;'; put 'put ''DPoWMr7gIAFbuxL9wesbW8wy+IlTZ6W9q4f1Kx28HjhlbxKgwPSmXTgqEpCFutyHrHMsoW9ZXybLtFMQPJ0QmsiGpdjkReISAfz4whI4tq6eXjl97qIcO1kl1VdqNWlnyiUUnCsJ+IIABaYvzMRBuk4gThODykqKZOvGNbJpzSrJy82+FW/GIu6uXx3Bnb8VlVgKHxwalktX61VUVkrV+cvSp7GV''@;'; put 'put ''DB8Jru05M/8ToMD0vw05A4cI4Is2JSnRiE0UcF+7qtjEa2LJEMkNFJsOXQwBnarNAsc1PTI6KnWNrVJedU4qqi5Ia2cXe4MH1O6cVvAIUGAGz6ackSME4N1JS0mSNSuLZeuGNbK6dIVkZ6aLFZvw7nAZ3ZGLwefTDBWV45qc09jSJhVnL0jFmQuaEd4mU/rjiRsJkIC/CFBg+steHC0JTEsAYjM9''@;'; put 'put ''NUU9m8tNbc3VupyODkIxMTEmZpMJQtNi44tRJGCXv3E/Nj4uTS3tJq7y1NlqqW1slskpisoomoenJoE5E6DAnDNCHoAEvEXALqOXriiQDWWluoxeIvmLsiU+Pt7ErLH0kbfs5dJo4F3HDaJyeGREvZOtGk95SSovXDa1KykqXboaONegE6DADLqFOT/nCSTEx0nh0nxZp0JzfVmJLM3PkzT1dkKI''@;'; put 'put ''MiPd+csjrABwjUFQIvsb8cEoen61vkmqLlySM9VXpLW9S65pVQRuJEACwSNAgRk8m3JGJHBXAviyz8vJMvU1N6wplZLCZZoklGG8mxAAuDF28674+B8zIGC9lLjH0nen1qa8VNtglr+v1DVKT28/WzbOgCPfQgJ+J0CB6XcLcvwkMAcCSYkJUrBksSYIFZlbgdbaRCwnPE4QmlZ0zuEU3DXgBEJj''@;'; put 'put ''KXG99PYPmCSdcxdrtEZlndQ3t7KrTsCvAU6PBKYjQIE5HRW+RgIOEnhA4+Iy0lJl+bIlJlmoWL2bDy7OlXR9Dd4oKzjp4XTw4giZMq4FKyohKFGfsqW9Uy6rlxJFz6/WN0vfwCC9lCHM+JAEXCRAgemi1TlnEpgBAQjOLC17VKjdhFYVL5cVBUuN4ExNSZZY7SgUKjjxmFvwCCCG0opJ3CNmF4Ky''@;'; put 'put ''raNLrmgsJQqfI+O7s7uPNViDZ37OiATmRIACc074uDMJuEMAghPicmn+IikuXGo8nVhSz8pIk8SEBJM0hLqbNkudNTj9dW1YMQkhCS8ltomJCeONhIfyakOz1NQ1mWzvnn71UKr3khsJkAAJ3I0ABebdyPB1EiCBexJAhnp2ZoYs1yx1LK0jnjMvN0sLwCdLgopOiBV4NyE6ITjp6bwn0oi84U4x''@;'; put 'put ''ieeTk5MyNDyifb77pKm1QwVlk/FOtnV0y8jYOG0XEcvwJCQQHAIUmMGxJWdCAlEnAKGSlBhv2lcuW5JnBCc8nrlZmaY0UrK2uUQCEcSm9XZSeIbPbLCHFZM2dhK8xzW7e3h0zIjJ5rYOaWhuM4k5EJMoJfQ1vZPhMwqPTAKOEKDAdMTQnCYJRJNAfFysZKanaomkbI3jXCRL8nLU05ltWlumJCdJ''@;'; put 'put ''ghaBh/DEFhrbCTGEzd6bJ/znNgJWROLeikg8BjN4JYdHRmVA4yY7u3tNMg4EZasKSTyHx/I642dv48knJEAC80OAAnN+OPIoJEAC90kAIigxId6URUJbS9wW6/I6vJ2LsrM03jNJ63PGSZwmFEE4WdEEAYobBJRdcg+qAMWc7YZwg9AbXrcicnxiUkbHxjRecsh4Jds6u6S9s0c6e3qlW+tODg6N''@;'; put 'put ''sJ+3Bcl7EiCBiBCgwIwIZp6EBEjgfgjEag/1m+IzWT2faZKtxeCzNZkIZZTS01KMKE1U8QkBivei5zrEV6ggs0IU57VC1N7bsURSmIaODefHeO09/g83+xpex9gQu3rt2jX1RE7JmIpItFccGBzWWpOD0t7VLT19A0ZEwkMJEQmhGck5mQnwHxIgARKYhgAF5jRQ+BIJkIC3CSzU5XQkGOGGzPZU''@;'; put 'put ''XWZPSU785rHGeiLeEyIV74EXFPvExcbIAwu0daF6RO1ysvUKWvEZej+dWMP/W0FoKVnxaAUi7u178H57g2DEkvS1qWvGo4je2xMqHkc1iQZdbxAXiWVrCEbcQzTi8Yi+Pqr/Pz4xZUSnPS/vSYAESMCrBCgwvWoZjosESGBeCCxcuMCIy9iYhcbTiXsIzjiNC41diNcW3hSqRqQmmQx4/D/EaXJS''@;'; put 'put ''wm1jwGspKlzhKYQAvKFeRgjJGzf+T8Xh6E2hqGJxSOMecYNAnND3jmu5nyn1REJM4jY5NSVTt0TmlJb8YR3R20DzCQmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQ''@;'; put 'put ''AAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfs''@;'; put 'put ''wdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4i+ZHtw4AAADdSURBVAAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAF''@;'; put 'put ''prfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8J/D97oVzdCcK8fgAAAABJRU5ErkJggg=='';'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=spinner-svg; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''PHN2ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA3MiA3MiI+CiAgICA8ZGVmcz4KICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgIC5jbHMtMSwKICAgICAgICAgICAgLmNscy0yIHsKICAg''@;'; put 'put ''ICAgICAgICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgICAgICAgICBzdHJva2UtbWl0ZXJsaW1pdDogMTA7CiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg6IDVweDsKICAgICAgICAgICAgfQogICAgICAgICAgICAuY2xzLTEgewogICAgICAgICAgICAgICAgc3Ryb2tlOiAjMDAwMDAw''@;'; put 'put ''OwogICAgICAgICAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDAuMTU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLmNscy0yIHsKICAgICAgICAgICAgICAgIHN0cm9rZTogIzAwNzJhMzsKICAgICAgICAgICAgfQogICAgICAgIDwvc3R5bGU+CiAgICA8L2RlZnM+CiAgICA8dGl0bGU+UHJl''@;'; put 'put ''bG9hZGVyXzcyeDI8L3RpdGxlPgogICAgPGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSIzNiIgY3k9IjM2IiByPSIzMyIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTQuMyw2MC45QTMzLDMzLDAsMCwxLDM2LDMiPgogICAgPC9wYXRoPgo8L3N2Zz4K'';'; put 'run;'; put '%sasjsout(SVG64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=spinner.16f763cebc6b64df-svg; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''PHN2ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA3MiA3MiI+CiAgICA8ZGVmcz4KICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgIC5jbHMtMSwKICAgICAgICAgICAgLmNscy0yIHsKICAg''@;'; put 'put ''ICAgICAgICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgICAgICAgICBzdHJva2UtbWl0ZXJsaW1pdDogMTA7CiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg6IDVweDsKICAgICAgICAgICAgfQogICAgICAgICAgICAuY2xzLTEgewogICAgICAgICAgICAgICAgc3Ryb2tlOiAjMDAwMDAw''@;'; put 'put ''OwogICAgICAgICAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDAuMTU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLmNscy0yIHsKICAgICAgICAgICAgICAgIHN0cm9rZTogIzAwNzJhMzsKICAgICAgICAgICAgfQogICAgICAgIDwvc3R5bGU+CiAgICA8L2RlZnM+CiAgICA8dGl0bGU+UHJl''@;'; put 'put ''bG9hZGVyXzcyeDI8L3RpdGxlPgogICAgPGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSIzNiIgY3k9IjM2IiByPSIzMyIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTQuMyw2MC45QTMzLDMzLDAsMCwxLDM2LDMiPgogICAgPC9wYXRoPgo8L3N2Zz4K'';'; put 'run;'; put '%sasjsout(SVG64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; options notes; data _null_; format url $256.; rc=METADATA_GETURI("Stored Process Web App",url); url=coalescec(url,"localhost/SASStoredProcess"); urlEscaped = tranwrd(trim(url)," ","%20"); putlog "NOTE: SASjs Streaming App Created! Check it out here:" ; putlog "NOTE- ";putlog "NOTE- ";putlog "NOTE- ";putlog "NOTE- "; putlog "NOTE- " urlEscaped +(-1) "?_program=&appLoc/services/clickme" ; putlog "NOTE- ";putlog "NOTE- ";putlog "NOTE- ";putlog "NOTE- "; run;